diff --git a/.gitattributes b/.gitattributes index 9545db5f..47d43017 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,5 +9,5 @@ *.sh text eol=lf *.sha1 text eol=lf -# DTK keeps these files with LF +# decomp-toolkit writes files with LF config/**/*.txt text eol=lf diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7c5f3917..696586eb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,23 +6,19 @@ on: jobs: build: - # This is a *private* build container. - # See docs/github_actions.md for more information. - container: ghcr.io/rainchus/marioparty4-build:main + container: ghcr.io/mariopartyrd/mp-gc-build:main runs-on: ubuntu-latest strategy: fail-fast: false matrix: - # Add game versions here - version: [GMPE01_00] + version: [GMPE01_00, GMPE01_01, GMPP01_00, GMPP01_02, GMPJ01_00] steps: - # Checkout the repository (shallow clone) + # Checkout the repository - name: Checkout uses: actions/checkout@v4 with: - fetch-depth: 0 submodules: recursive # Set Git config @@ -38,17 +34,15 @@ jobs: run: | python configure.py --map --version ${{ matrix.version }} \ --binutils /binutils --compilers /compilers - ninja all_source build/${{ matrix.version }}/progress.json + ninja all_source build/${{ matrix.version }}/progress.json \ + build/${{ matrix.version }}/report.json # Upload progress if we're on the main branch - name: Upload progress - # If you're using a different branch, change this to match if: github.ref == 'refs/heads/main' continue-on-error: true env: - # Replace with your project slug PROGRESS_SLUG: marioparty4 - # Set the API key in your repository secrets PROGRESS_API_KEY: ${{ secrets.PROGRESS_API_KEY }} run: | python tools/upload_progress.py -b https://progress.decomp.club/ \ @@ -57,7 +51,14 @@ jobs: # Upload map files - name: Upload map - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.version }}_maps - path: build/${{ matrix.version }}/**/*.MAP \ No newline at end of file + path: build/${{ matrix.version }}/**/*.MAP + + # Upload progress report + - name: Upload report + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.version }}_report + path: build/${{ matrix.version }}/report.json diff --git a/.gitignore b/.gitignore index 81558d47..c8875b51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,36 @@ +# IDE folders +.idea/ +.vs/ +.vscode/ + +# Caches __pycache__ -.idea -.vscode -.ninja_* -*.exe -build -build.ninja -objdiff.json +.mypy_cache +.cache/ + +# Original files orig/*/* !orig/*/.gitkeep +*.dol +*.rel +*.elf +*.o +*.map +*.MAP + +# Build files +build/ +.ninja_* +build.ninja + +# decompctx output +ctx.* +*.ctx + +# Generated configs +objdiff.json +compile_commands.json + +# Miscellaneous /*.txt -ctx.c -tools/output/* \ No newline at end of file +*.exe diff --git a/.vscode.example/c_cpp_properties.json b/.vscode.example/c_cpp_properties.json deleted file mode 100644 index 3bace88c..00000000 --- a/.vscode.example/c_cpp_properties.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "configurations": [ - { - "name": "Linux", - "includePath": [ - "${workspaceFolder}/include/**", - "${workspaceFolder}/build/GMPE01_00/include/**" - ], - "cStandard": "c99", - "cppStandard": "c++98", - "intelliSenseMode": "linux-clang-x86", - "compilerPath": "", - "configurationProvider": "ms-vscode.makefile-tools", - "browse": { - "path": [ - "${workspaceFolder}/include" - ], - "limitSymbolsToIncludedHeaders": true - } - } - ], - "version": 4 -} diff --git a/.vscode.example/settings.json b/.vscode.example/settings.json deleted file mode 100644 index 60e7e27d..00000000 --- a/.vscode.example/settings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "[c]": { - "files.encoding": "utf8", - "editor.defaultFormatter": "xaver.clang-format" - }, - "[cpp]": { - "files.encoding": "utf8", - "editor.defaultFormatter": "xaver.clang-format" - }, - "[python]": { - "editor.defaultFormatter": "ms-python.black-formatter" - }, - "files.insertFinalNewline": true, - "files.trimFinalNewlines": true, - "files.associations": { - "*.inc": "cpp" - }, - "search.useIgnoreFiles": false, - "search.exclude": { - "build/*/config.json": true, - "build/**/*.MAP": true, - "build.ninja": true, - ".ninja_*": true, - "objdiff.json": true - } -} \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..c20797ff --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,12 @@ +{ + "recommendations": [ + "llvm-vs-code-extensions.vscode-clangd", + "ms-python.black-formatter", + "ms-python.flake8", + ], + "unwantedRecommendations": [ + "ms-vscode.cmake-tools", + "ms-vscode.cpptools-extension-pack", + "ms-vscode.cpptools", + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..64233526 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,146 @@ +{ + "[c]": { + "files.encoding": "utf8", + "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd" + }, + "[cpp]": { + "files.encoding": "utf8", + "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd" + }, + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter" + }, + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.associations": { + "*.cp": "cpp", + "*.csv": "plaintext", + "*.s": "plaintext", + "*.json": "jsonc", + "*.c": "c", + "*.asm": "masm", + "*.inc": "c", + ".clangd": "yaml", + "m443dll.h": "c", + "object.h": "c", + "executor.h": "c", + "m438dll.h": "c", + "audio.h": "c", + "musyx.h": "c", + "math.h": "c", + "m418dll.h": "c", + "ext_math.h": "c", + "mtx.h": "c", + "types.h": "c", + "corecrt_math.h": "c", + "corecrt.h": "c", + "vcruntime.h": "c", + "hsfmotion.h": "c", + "m424dll.h": "c", + "chrman.h": "c", + "os.h": "c", + "type_traits": "cpp", + "xutility": "cpp", + "xtr1common": "c", + "hsfdraw.h": "c", + "dolphin.h": "c", + "hsfman.h": "c", + "hsfformat.h": "c", + "hsfanim.h": "c", + "memory.h": "c", + "animdata.h": "c", + "abort_exit.h": "c", + "critical_regions.h": "c", + "stddef.h": "c", + "nmwexception.h": "c", + "signal.h": "c", + "gx.h": "c", + "dol2asm.h": "c", + "__mem.h": "c", + "fdlibm.h": "c", + "float.h": "c", + "corecrt_math_defines.h": "c", + "math_ppc.h": "c", + "errno.h": "c", + "m427dll.h": "c", + "sprite.h": "c", + "gamework_data.h": "c", + "roll.h": "c", + "msghndlr.h": "c", + "dispatch.h": "c", + "trk.h": "c", + "debuggerdriver.h": "c", + "mpexdll.h": "c" + }, + "search.useIgnoreFiles": false, + "search.exclude": { + "build/*/config.json": true, + "build/**/*.MAP": true, + "build.ninja": true, + ".ninja_*": true, + "objdiff.json": true, + "progress.json": true, + "report.json": true, + "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 +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..6dc12130 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,16 @@ +{ + // Use Ctrl+Shift+B to run build tasks. + // Or "Run Build Task" in the Command Palette. + "version": "2.0.0", + "tasks": [ + { + "label": "ninja", + "type": "shell", + "command": "ninja", + "group": { + "kind": "build", + "isDefault": true + } + }, + ] +} diff --git a/README.md b/README.md index 53e82df1..f1594c57 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,13 @@ Mario Party 4 -[![Build Status]][actions] ![Progress] ![DOL Progress] ![RELs Progress] [![Discord Badge]][discord] +[![Build Status]][actions] [![Progress]][progress site] [![DOL Progress]][progress site] [![RELs Progress]][progress site] [![Discord Badge]][discord] ============= - -[Build Status]: https://github.com/Rainchus/marioparty4/actions/workflows/build.yml/badge.svg -[actions]: https://github.com/Rainchus/marioparty4/actions/workflows/build.yml - -[Progress]: https://img.shields.io/endpoint?label=Code&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fmarioparty4%2FGMPE01_00%2Fall%2F%3Fmode%3Dshield%26measure%3Dcode - -[DOL Progress]: https://img.shields.io/endpoint?label=DOL&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fmarioparty4%2FGMPE01_00%2Fdol%2F%3Fmode%3Dshield%26measure%3Dcode - -[RELs Progress]: https://img.shields.io/endpoint?label=RELs&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fmarioparty4%2FGMPE01_00%2Fmodules%2F%3Fmode%3Dshield%26measure%3Dcode - +[Build Status]: https://github.com/mariopartyrd/marioparty4/actions/workflows/build.yml/badge.svg +[actions]: https://github.com/mariopartyrd/marioparty4/actions/workflows/build.yml +[Progress]: https://decomp.dev/mariopartyrd/marioparty4.svg?mode=shield&measure=code&label=Code&category=all +[DOL Progress]: https://decomp.dev/mariopartyrd/marioparty4.svg?mode=shield&measure=code&label=DOL&category=dol +[RELs Progress]: https://decomp.dev/mariopartyrd/marioparty4.svg?mode=shield&measure=code&label=RELs&category=modules +[progress site]: https://decomp.dev/mariopartyrd/marioparty4 [Discord Badge]: https://img.shields.io/discord/994839212618690590?color=%237289DA&logo=discord&logoColor=%23FFFFFF [discord]: https://discord.gg/T4faGveujK @@ -37,12 +17,16 @@ This repository does **not** contain any game assets or assembly whatsoever. An Supported versions: -- `GAMEID`: Rev 0 (USA) +- `GMPE01_00`: Rev 0 (USA) +- `GMPE01_01`: Rev 1 (USA) +- `GMPP01_00`: Rev 0 (PAL) +- `GMPP01_02`: Rev 2 (PAL) +- `GMPJ01_00`: Rev 0 (JP) Dependencies ============ -Windows: +Windows -------- On Windows, it's **highly recommended** to use native tooling. WSL or msys2 are **not** required. @@ -53,7 +37,7 @@ When running under WSL, [objdiff](#diffing) is unable to get filesystem notifica - Download [ninja](https://github.com/ninja-build/ninja/releases) and add it to `%PATH%`. - Quick install via pip: `pip install ninja` -macOS: +macOS ------ - Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages): ``` @@ -69,39 +53,42 @@ After OS upgrades, if macOS complains about `Wine Crossover.app` being unverifie sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app' ``` -Linux: +Linux ------ - Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages). - 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. + - For x86(_64), [wibo](https://github.com/decompals/wibo), a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used. Building ======== - Clone the repository: ``` - git clone https://github.com/Rainchus/mp4-dtk.git + git clone https://github.com/mariopartyrd/marioparty4.git ``` -- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your game to `orig/GMPE01`. -![](assets/dolphin-extract.png) - - To save space, the only necessary files are the following. Any others can be deleted. - - `sys/main.dol` - - `files/rels/*.rel` + +- Initialize and update submodules: + + ```sh + git submodule update --init --recursive + ``` + +- Copy your game's disc image to `orig/[GAMEID]`. The supported game IDs are listed above. + - Supported formats: ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ, TGC + - After the initial build, the disc image can be deleted to save space. + - Configure: ``` python configure.py ``` - To use a version other than `GMPE01` (USA), specify it with `--version`. + + To choose a version other than the USA Rev 0 one, add `--version [GAMEID]` to the command. + - Build: ``` ninja ``` -Visual Studio Code -================== - -If desired, use the recommended Visual Studio Code settings by renaming the `.vscode.example` directory to `.vscode`. - Diffing ======= @@ -110,5 +97,3 @@ Once the initial build succeeds, an `objdiff.json` should exist in the project r 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`. - -![](assets/objdiff.png) diff --git a/config/GMPE01_00/config.yml b/config/GMPE01_00/config.yml index 8e687a60..7e4233af 100644 --- a/config/GMPE01_00/config.yml +++ b/config/GMPE01_00/config.yml @@ -1,4 +1,5 @@ -object: orig/GMPE01_00/sys/main.dol +object_base: orig/GMPE01_00 +object: sys/main.dol hash: ff8d894776d37167e454ae3f0c9e644407c1e6b1 symbols: config/GMPE01_00/symbols.txt splits: config/GMPE01_00/splits.txt @@ -7,501 +8,501 @@ mw_comment_version: 10 # GC 2.6 linker force_active: [__register_global_object, lbl_801D40D0, _kerent] modules: -- object: orig/GMPE01_00/files/dll/_minigameDll.rel +- object: files/dll/_minigameDll.rel hash: 3fbbebc0440f0d91432ecd6a27ef68d5309b87b6 symbols: config/GMPE01_00/rels/_minigameDll/symbols.txt splits: config/GMPE01_00/rels/_minigameDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/bootDll.rel +- object: files/dll/bootDll.rel hash: bdfca4f9bce60519badca0d2d0a5b71f6d99706f symbols: config/GMPE01_00/rels/bootDll/symbols.txt splits: config/GMPE01_00/rels/bootDll/splits.txt links: [] extract: - - symbol: logoNintendoData - binary: logoNintendoData.bin - header: logoNintendoData.inc -- object: orig/GMPE01_00/files/dll/instDll.rel + - symbol: nintendoData + binary: nintendoData.bin + header: nintendoData.inc +- object: files/dll/instDll.rel hash: f09399fee83c63abfe2adb25341152adad959a93 symbols: config/GMPE01_00/rels/instDll/symbols.txt splits: config/GMPE01_00/rels/instDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m302Dll.rel +- object: files/dll/m302Dll.rel hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 symbols: config/GMPE01_00/rels/m302Dll/symbols.txt splits: config/GMPE01_00/rels/m302Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m303Dll.rel +- object: files/dll/m303Dll.rel hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 symbols: config/GMPE01_00/rels/m303Dll/symbols.txt splits: config/GMPE01_00/rels/m303Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m330Dll.rel +- object: files/dll/m330Dll.rel hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 symbols: config/GMPE01_00/rels/m330Dll/symbols.txt splits: config/GMPE01_00/rels/m330Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m333Dll.rel +- object: files/dll/m333Dll.rel hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 symbols: config/GMPE01_00/rels/m333Dll/symbols.txt splits: config/GMPE01_00/rels/m333Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m402Dll.rel +- object: files/dll/m402Dll.rel hash: 136d192a1464e593cd0b767691dfa012c58730ed symbols: config/GMPE01_00/rels/m402Dll/symbols.txt splits: config/GMPE01_00/rels/m402Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m403Dll.rel +- object: files/dll/m403Dll.rel hash: b834eb5f8a2749f3be52aa9023cc81403075eba9 symbols: config/GMPE01_00/rels/m403Dll/symbols.txt splits: config/GMPE01_00/rels/m403Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m404Dll.rel +- object: files/dll/m404Dll.rel hash: c46b7814cefa8e5dee8dfd1883e369877ac78c0c symbols: config/GMPE01_00/rels/m404Dll/symbols.txt splits: config/GMPE01_00/rels/m404Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m405Dll.rel +- object: files/dll/m405Dll.rel hash: 7857e0822079d0c7bbfec756a7cf4206b754d100 symbols: config/GMPE01_00/rels/m405Dll/symbols.txt splits: config/GMPE01_00/rels/m405Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m406Dll.rel +- object: files/dll/m406Dll.rel hash: bea398ac8abe018dce80914e6b3d6d7578eb86bb symbols: config/GMPE01_00/rels/m406Dll/symbols.txt splits: config/GMPE01_00/rels/m406Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m407dll.rel +- object: files/dll/m407dll.rel hash: 6f63338c417ab62740a40f0968c03c570b440b8a symbols: config/GMPE01_00/rels/m407dll/symbols.txt splits: config/GMPE01_00/rels/m407dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m408Dll.rel +- object: files/dll/m408Dll.rel hash: 7a8ff34b4bcaff39037c9e2f717505cbc63d4230 symbols: config/GMPE01_00/rels/m408Dll/symbols.txt splits: config/GMPE01_00/rels/m408Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m409Dll.rel +- object: files/dll/m409Dll.rel hash: 984f031fc50121369d5b04d1ec2c54322efdf281 symbols: config/GMPE01_00/rels/m409Dll/symbols.txt splits: config/GMPE01_00/rels/m409Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m410Dll.rel +- object: files/dll/m410Dll.rel hash: 94e308e409038f7919177d190110ce589cc8a8e8 symbols: config/GMPE01_00/rels/m410Dll/symbols.txt splits: config/GMPE01_00/rels/m410Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m411Dll.rel +- object: files/dll/m411Dll.rel hash: 26ac81a3db9f3850bb43b23cdb7168dcddccaeea symbols: config/GMPE01_00/rels/m411Dll/symbols.txt splits: config/GMPE01_00/rels/m411Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m412Dll.rel +- object: files/dll/m412Dll.rel hash: 3ebb173a52aaea75acb414f73264e72a2943c6f8 symbols: config/GMPE01_00/rels/m412Dll/symbols.txt splits: config/GMPE01_00/rels/m412Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m413Dll.rel +- object: files/dll/m413Dll.rel hash: e59d4b66b1f57637c335b4745a696e3dbcb4bbe3 symbols: config/GMPE01_00/rels/m413Dll/symbols.txt splits: config/GMPE01_00/rels/m413Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m414Dll.rel +- object: files/dll/m414Dll.rel hash: f7fe1aa24c7b6b8ca2bb28922696c0392dc7d029 symbols: config/GMPE01_00/rels/m414Dll/symbols.txt splits: config/GMPE01_00/rels/m414Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m415Dll.rel +- object: files/dll/m415Dll.rel hash: 3c697b54ebdd01971b99af8c812b4850fa181f4f symbols: config/GMPE01_00/rels/m415Dll/symbols.txt splits: config/GMPE01_00/rels/m415Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m416Dll.rel +- object: files/dll/m416Dll.rel hash: d26526935455b26beb2b9eaed1bfae3f3f458c25 symbols: config/GMPE01_00/rels/m416Dll/symbols.txt splits: config/GMPE01_00/rels/m416Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m417Dll.rel +- object: files/dll/m417Dll.rel hash: b5c3805ec3cb023299ed09b782b92441085d0054 symbols: config/GMPE01_00/rels/m417Dll/symbols.txt splits: config/GMPE01_00/rels/m417Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m418Dll.rel +- object: files/dll/m418Dll.rel hash: 0d02610005c46ad4f47ff51f5e154f9b0d16a4f4 symbols: config/GMPE01_00/rels/m418Dll/symbols.txt splits: config/GMPE01_00/rels/m418Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m419Dll.rel +- object: files/dll/m419Dll.rel hash: bbceb138b8cc43e578179a7892801633892cb03c symbols: config/GMPE01_00/rels/m419Dll/symbols.txt splits: config/GMPE01_00/rels/m419Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m420dll.rel +- object: files/dll/m420dll.rel hash: 2ef4ee163bc2aa15f87c8c89afb4f28939f088c8 symbols: config/GMPE01_00/rels/m420dll/symbols.txt splits: config/GMPE01_00/rels/m420dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m421Dll.rel +- object: files/dll/m421Dll.rel hash: 216a99780a3915d7096385bbcddfc979ab3a4025 symbols: config/GMPE01_00/rels/m421Dll/symbols.txt splits: config/GMPE01_00/rels/m421Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m422Dll.rel +- object: files/dll/m422Dll.rel hash: 9ad72ba6c3ac277e521dca2fc1372a5d31c18930 symbols: config/GMPE01_00/rels/m422Dll/symbols.txt splits: config/GMPE01_00/rels/m422Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m423Dll.rel +- object: files/dll/m423Dll.rel hash: 377c6a56b3faf8f991ec4fccaf1972cb41910438 symbols: config/GMPE01_00/rels/m423Dll/symbols.txt splits: config/GMPE01_00/rels/m423Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m424Dll.rel +- object: files/dll/m424Dll.rel hash: 5814f59970268406bd86a86d0fee5a09359ab506 symbols: config/GMPE01_00/rels/m424Dll/symbols.txt splits: config/GMPE01_00/rels/m424Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m425Dll.rel +- object: files/dll/m425Dll.rel hash: ecaeae453393d228f2769aab9c022820bcdb58f1 symbols: config/GMPE01_00/rels/m425Dll/symbols.txt splits: config/GMPE01_00/rels/m425Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m426Dll.rel +- object: files/dll/m426Dll.rel hash: c240697a57cc08d34e27e89d8d3455454799e8b1 symbols: config/GMPE01_00/rels/m426Dll/symbols.txt splits: config/GMPE01_00/rels/m426Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m427Dll.rel +- object: files/dll/m427Dll.rel hash: c78a0857e9c44fb33bd4fdc3e392a15b4dec0431 symbols: config/GMPE01_00/rels/m427Dll/symbols.txt splits: config/GMPE01_00/rels/m427Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m428Dll.rel +- object: files/dll/m428Dll.rel hash: a1d5672d8ef0aac089dda00287fd68bf2bb67807 symbols: config/GMPE01_00/rels/m428Dll/symbols.txt splits: config/GMPE01_00/rels/m428Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m429Dll.rel +- object: files/dll/m429Dll.rel hash: d25f198ce04aa5ca7b54ada9de52f722bd751447 symbols: config/GMPE01_00/rels/m429Dll/symbols.txt splits: config/GMPE01_00/rels/m429Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m430Dll.rel +- object: files/dll/m430Dll.rel hash: 8bef3e2f51db3afa82dcaf64e209067a58c04bf9 symbols: config/GMPE01_00/rels/m430Dll/symbols.txt splits: config/GMPE01_00/rels/m430Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m431Dll.rel +- object: files/dll/m431Dll.rel hash: 7148ec21ca6e0aa8d213a1dce0aeb9d93a9b496c symbols: config/GMPE01_00/rels/m431Dll/symbols.txt splits: config/GMPE01_00/rels/m431Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m432Dll.rel +- object: files/dll/m432Dll.rel hash: 096f5a85bb837af68bd491e962eda7726d8d26a0 symbols: config/GMPE01_00/rels/m432Dll/symbols.txt splits: config/GMPE01_00/rels/m432Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m433Dll.rel +- object: files/dll/m433Dll.rel hash: c36f56264ab9cf74b882c2544cdb9b89f6a098cd symbols: config/GMPE01_00/rels/m433Dll/symbols.txt splits: config/GMPE01_00/rels/m433Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m434Dll.rel +- object: files/dll/m434Dll.rel hash: 55912c8441002b61701fc8c769f707c69e2740c1 symbols: config/GMPE01_00/rels/m434Dll/symbols.txt splits: config/GMPE01_00/rels/m434Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m435Dll.rel +- object: files/dll/m435Dll.rel hash: 56f1fc330e8b97fa426fac3d901b1feed946566e symbols: config/GMPE01_00/rels/m435Dll/symbols.txt splits: config/GMPE01_00/rels/m435Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m436Dll.rel +- object: files/dll/m436Dll.rel hash: e53f3d381bfb99351483e70b9d79c2e8676f73d5 symbols: config/GMPE01_00/rels/m436Dll/symbols.txt splits: config/GMPE01_00/rels/m436Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m437Dll.rel +- object: files/dll/m437Dll.rel hash: 404698b53acad1231e00d84d0196ddce8d9d9dd9 symbols: config/GMPE01_00/rels/m437Dll/symbols.txt splits: config/GMPE01_00/rels/m437Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m438Dll.rel +- object: files/dll/m438Dll.rel hash: 9bddf4b81b9a792260000abe2631da493a8b8564 symbols: config/GMPE01_00/rels/m438Dll/symbols.txt splits: config/GMPE01_00/rels/m438Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m439Dll.rel +- object: files/dll/m439Dll.rel hash: a2a18c9d26dedfa8e2ae003c3a2e1bdcc1cbd4cc symbols: config/GMPE01_00/rels/m439Dll/symbols.txt splits: config/GMPE01_00/rels/m439Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m440Dll.rel +- object: files/dll/m440Dll.rel hash: 227ca13bcd72059bdd506e9611d9b52f661af6c5 symbols: config/GMPE01_00/rels/m440Dll/symbols.txt splits: config/GMPE01_00/rels/m440Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m441Dll.rel +- object: files/dll/m441Dll.rel hash: d6cbf72115374e06ffea3f15001977c288a9c3fb symbols: config/GMPE01_00/rels/m441Dll/symbols.txt splits: config/GMPE01_00/rels/m441Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m442Dll.rel +- object: files/dll/m442Dll.rel hash: 347fcb836b5266dfe3d1088e1aa796c043b0fe60 symbols: config/GMPE01_00/rels/m442Dll/symbols.txt splits: config/GMPE01_00/rels/m442Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m443Dll.rel +- object: files/dll/m443Dll.rel hash: 77444c6739a4d9390f30ba56c5fcd82ee4efc0c2 symbols: config/GMPE01_00/rels/m443Dll/symbols.txt splits: config/GMPE01_00/rels/m443Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m444dll.rel +- object: files/dll/m444dll.rel hash: 76154b165cd86472ce3155028ea049ba0a0f3dcb symbols: config/GMPE01_00/rels/m444dll/symbols.txt splits: config/GMPE01_00/rels/m444dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m445Dll.rel +- object: files/dll/m445Dll.rel hash: d4d9f2aad53aa7f4e1c313438a0e3767f8e58eb9 symbols: config/GMPE01_00/rels/m445Dll/symbols.txt splits: config/GMPE01_00/rels/m445Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m446dll.rel +- object: files/dll/m446dll.rel hash: 4b16e5eff613eaf4cc98411809cd1f1578e33fd1 symbols: config/GMPE01_00/rels/m446dll/symbols.txt splits: config/GMPE01_00/rels/m446dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m447dll.rel +- object: files/dll/m447dll.rel hash: 775ca8f8b3be867ad67f91bc3b6ebcc8c3068d2b symbols: config/GMPE01_00/rels/m447dll/symbols.txt splits: config/GMPE01_00/rels/m447dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m448Dll.rel +- object: files/dll/m448Dll.rel hash: e6f7586dadbe3f5b5045c0bdf2fe618d42ef3a44 symbols: config/GMPE01_00/rels/m448Dll/symbols.txt splits: config/GMPE01_00/rels/m448Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m449Dll.rel +- object: files/dll/m449Dll.rel hash: e797c2ff132ab35e768be62cb62219592464ca9d symbols: config/GMPE01_00/rels/m449Dll/symbols.txt splits: config/GMPE01_00/rels/m449Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m450Dll.rel +- object: files/dll/m450Dll.rel hash: f2ea7da07cf8be4f449c97b829d3231911e158a0 symbols: config/GMPE01_00/rels/m450Dll/symbols.txt splits: config/GMPE01_00/rels/m450Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m451Dll.rel +- object: files/dll/m451Dll.rel hash: 3f82fd24071582b6494a9f99750c0bc3c10d502e symbols: config/GMPE01_00/rels/m451Dll/symbols.txt splits: config/GMPE01_00/rels/m451Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m453Dll.rel +- object: files/dll/m453Dll.rel hash: 49ef28c2862000fae4d8efd8fec0ff9b41f24461 symbols: config/GMPE01_00/rels/m453Dll/symbols.txt splits: config/GMPE01_00/rels/m453Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m455Dll.rel +- object: files/dll/m455Dll.rel hash: e0b21cfbe592955c84662ff50d8a33e147403906 symbols: config/GMPE01_00/rels/m455Dll/symbols.txt splits: config/GMPE01_00/rels/m455Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m456Dll.rel +- object: files/dll/m456Dll.rel hash: 97d5701b151c6ad8cf8cea6e776973daa95eea34 symbols: config/GMPE01_00/rels/m456Dll/symbols.txt splits: config/GMPE01_00/rels/m456Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m457Dll.rel +- object: files/dll/m457Dll.rel hash: d4a411f9ef850f52506afd1ad1de88d2d8de361b symbols: config/GMPE01_00/rels/m457Dll/symbols.txt splits: config/GMPE01_00/rels/m457Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m458Dll.rel +- object: files/dll/m458Dll.rel hash: 7ac361c5a04f83d46f516a13a43e43b59b929435 symbols: config/GMPE01_00/rels/m458Dll/symbols.txt splits: config/GMPE01_00/rels/m458Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m459dll.rel +- object: files/dll/m459dll.rel hash: 1aafc4f38ddfee64ea8f7dda7cbd7113e86997ba symbols: config/GMPE01_00/rels/m459dll/symbols.txt splits: config/GMPE01_00/rels/m459dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m460Dll.rel +- object: files/dll/m460Dll.rel hash: 5d28f1a87edee5216b9bb28d9cbff2b22d617747 symbols: config/GMPE01_00/rels/m460Dll/symbols.txt splits: config/GMPE01_00/rels/m460Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m461Dll.rel +- object: files/dll/m461Dll.rel hash: ab058151bd25600f05f8b6fedbec1c7448175123 symbols: config/GMPE01_00/rels/m461Dll/symbols.txt splits: config/GMPE01_00/rels/m461Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m462Dll.rel +- object: files/dll/m462Dll.rel hash: 78d6ab00677791ece684a0c149d1ae72efc52d1c symbols: config/GMPE01_00/rels/m462Dll/symbols.txt splits: config/GMPE01_00/rels/m462Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/m463Dll.rel +- object: files/dll/m463Dll.rel hash: 32010595b4fd0b75293fc46b9026c5613d0ea4c2 symbols: config/GMPE01_00/rels/m463Dll/symbols.txt splits: config/GMPE01_00/rels/m463Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mentDll.rel +- object: files/dll/mentDll.rel hash: 9e63dd96943ffd2747be5aad924b95892d46051a symbols: config/GMPE01_00/rels/mentDll/symbols.txt splits: config/GMPE01_00/rels/mentDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/messDll.rel +- object: files/dll/messDll.rel hash: 7e119de456b3557dcf514c70bd7ab81dc5f9cf54 symbols: config/GMPE01_00/rels/messDll/symbols.txt splits: config/GMPE01_00/rels/messDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mgmodedll.rel +- object: files/dll/mgmodedll.rel hash: 376c78e2d1b7d7a429959c532e9cb92c98f73b7e symbols: config/GMPE01_00/rels/mgmodedll/symbols.txt splits: config/GMPE01_00/rels/mgmodedll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/modeltestDll.rel +- object: files/dll/modeltestDll.rel hash: 8de28c0f254a2c574c4da9b6a3a17e5ad7ffe1f9 symbols: config/GMPE01_00/rels/modeltestDll/symbols.txt splits: config/GMPE01_00/rels/modeltestDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/modeseldll.rel +- object: files/dll/modeseldll.rel hash: bdf8cd57fa23f07c429393817037ade04e2c6024 symbols: config/GMPE01_00/rels/modeseldll/symbols.txt splits: config/GMPE01_00/rels/modeseldll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mpexDll.rel +- object: files/dll/mpexDll.rel hash: 4524e63b63510b42bca907f72e67affddec856f9 symbols: config/GMPE01_00/rels/mpexDll/symbols.txt splits: config/GMPE01_00/rels/mpexDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/msetupDll.rel +- object: files/dll/msetupDll.rel hash: 86ff8288bb92472376d02cade1d3c9603b613c57 symbols: config/GMPE01_00/rels/msetupDll/symbols.txt splits: config/GMPE01_00/rels/msetupDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mstory2Dll.rel +- object: files/dll/mstory2Dll.rel hash: 7579ff7aa9638488d876dbb61d3e4b868974a040 symbols: config/GMPE01_00/rels/mstory2Dll/symbols.txt splits: config/GMPE01_00/rels/mstory2Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mstory3Dll.rel +- object: files/dll/mstory3Dll.rel hash: 951f1951eac515fce1d3314059f27fdc7b39f035 symbols: config/GMPE01_00/rels/mstory3Dll/symbols.txt splits: config/GMPE01_00/rels/mstory3Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mstory4Dll.rel +- object: files/dll/mstory4Dll.rel hash: 7f9cc4a18a137f861b2c326b099c02ba4e5bd94b symbols: config/GMPE01_00/rels/mstory4Dll/symbols.txt splits: config/GMPE01_00/rels/mstory4Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/mstoryDll.rel +- object: files/dll/mstoryDll.rel hash: 979a83f2d6f5200e2de4333ec8f943701a250131 symbols: config/GMPE01_00/rels/mstoryDll/symbols.txt splits: config/GMPE01_00/rels/mstoryDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/nisDll.rel +- object: files/dll/nisDll.rel hash: d74a5147245a1877b140ee2af7f75b2b6c90892d symbols: config/GMPE01_00/rels/nisDll/symbols.txt splits: config/GMPE01_00/rels/nisDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/option.rel +- object: files/dll/option.rel hash: 5c6973fe7e0271885a5a87d87d4e7164ef711abb symbols: config/GMPE01_00/rels/option/symbols.txt splits: config/GMPE01_00/rels/option/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/present.rel +- object: files/dll/present.rel hash: ddb8d8a825578a588276b9d4f65eceee26f91253 symbols: config/GMPE01_00/rels/present/symbols.txt splits: config/GMPE01_00/rels/present/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/resultDll.rel +- object: files/dll/resultDll.rel hash: 41a820438884ae8566f34f895198a186aae60305 symbols: config/GMPE01_00/rels/resultDll/symbols.txt splits: config/GMPE01_00/rels/resultDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/safDll.rel +- object: files/dll/safDll.rel hash: f34c104078b41971412cb09b37c4dc9526be02e3 symbols: config/GMPE01_00/rels/safDll/symbols.txt splits: config/GMPE01_00/rels/safDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/selmenuDll.rel +- object: files/dll/selmenuDll.rel hash: 81a00a71b8d1ab22bfd3df10d815c87ba618ec84 symbols: config/GMPE01_00/rels/selmenuDll/symbols.txt splits: config/GMPE01_00/rels/selmenuDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/staffDll.rel +- object: files/dll/staffDll.rel hash: a6210fbcdf3d7f0063f3052e2ae525abacac08e7 symbols: config/GMPE01_00/rels/staffDll/symbols.txt splits: config/GMPE01_00/rels/staffDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/subchrselDll.rel +- object: files/dll/subchrselDll.rel hash: 7488bc249dc7c656f60105e4d24c4011983c2ba2 symbols: config/GMPE01_00/rels/subchrselDll/symbols.txt splits: config/GMPE01_00/rels/subchrselDll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w01Dll.rel +- object: files/dll/w01Dll.rel hash: d3de36269886995d959e1fd58d8ad806843c8819 symbols: config/GMPE01_00/rels/w01Dll/symbols.txt splits: config/GMPE01_00/rels/w01Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w02Dll.rel +- object: files/dll/w02Dll.rel hash: 750c4d6cd6a49d290f5cc63432d4f65642fbd7e4 symbols: config/GMPE01_00/rels/w02Dll/symbols.txt splits: config/GMPE01_00/rels/w02Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w03Dll.rel +- object: files/dll/w03Dll.rel hash: f9e8d9c4581d44488adaffa3d46d9bc835d4f9bd symbols: config/GMPE01_00/rels/w03Dll/symbols.txt splits: config/GMPE01_00/rels/w03Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w04Dll.rel +- object: files/dll/w04Dll.rel hash: 821126eeb7054150744b925cc4cb06c751ddcefd symbols: config/GMPE01_00/rels/w04Dll/symbols.txt splits: config/GMPE01_00/rels/w04Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w05Dll.rel +- object: files/dll/w05Dll.rel hash: d29f7ccadcba23c8446d05101c4efa5caba26dfd symbols: config/GMPE01_00/rels/w05Dll/symbols.txt splits: config/GMPE01_00/rels/w05Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w06Dll.rel +- object: files/dll/w06Dll.rel hash: d11a7a6d44189ba8d1e3a7168ea640ea9f2152fe symbols: config/GMPE01_00/rels/w06Dll/symbols.txt splits: config/GMPE01_00/rels/w06Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w10Dll.rel +- object: files/dll/w10Dll.rel hash: 54bb23228b04c5aaa6aa7c8ca1f846baec5a1f2c symbols: config/GMPE01_00/rels/w10Dll/symbols.txt splits: config/GMPE01_00/rels/w10Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w20Dll.rel +- object: files/dll/w20Dll.rel hash: 98cc41456afa9e1ccbb8e03718b8d3cb64e4e86f symbols: config/GMPE01_00/rels/w20Dll/symbols.txt splits: config/GMPE01_00/rels/w20Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/w21Dll.rel +- object: files/dll/w21Dll.rel hash: b888f2c6703e680699ff8c59ad9200b9d78d30a1 symbols: config/GMPE01_00/rels/w21Dll/symbols.txt splits: config/GMPE01_00/rels/w21Dll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/ztardll.rel +- object: files/dll/ztardll.rel hash: 87d9fee70ed4f011e0b30e05156d087204cf686f symbols: config/GMPE01_00/rels/ztardll/symbols.txt splits: config/GMPE01_00/rels/ztardll/splits.txt links: [] -- object: orig/GMPE01_00/files/dll/E3setupDLL.rel +- object: files/dll/E3setupDLL.rel hash: 234e07cee1491c7060e30805681bf5f39150122d symbols: config/GMPE01_00/rels/E3setupDLL/symbols.txt splits: config/GMPE01_00/rels/E3setupDLL/splits.txt links: [_minigameDll] -- object: orig/GMPE01_00/files/dll/m300Dll.rel +- object: files/dll/m300Dll.rel hash: eba8a17e8b263bc9cd601b1aea7e698a8785416a symbols: config/GMPE01_00/rels/m300Dll/symbols.txt splits: config/GMPE01_00/rels/m300Dll/splits.txt links: [_minigameDll] -- object: orig/GMPE01_00/files/dll/m401Dll.rel +- object: files/dll/m401Dll.rel hash: f3ec526c25986a3fcf7dfbc8c463626839a3a801 symbols: config/GMPE01_00/rels/m401Dll/symbols.txt splits: config/GMPE01_00/rels/m401Dll/splits.txt @@ -564,7 +565,4 @@ extract: header: retryerror_en.inc - symbol: wrongdisc_en binary: wrongdisc_en.bin - header: wrongdisc_en.inc -- symbol: DEMOFontBitmap - binary: DEMOFontBitmap.bin - header: DEMOFontBitmap.inc \ No newline at end of file + header: wrongdisc_en.inc \ No newline at end of file diff --git a/config/GMPE01_00/rels/E3setupDLL/symbols.txt b/config/GMPE01_00/rels/E3setupDLL/symbols.txt index da0474aa..4089dcf6 100644 --- a/config/GMPE01_00/rels/E3setupDLL/symbols.txt +++ b/config/GMPE01_00/rels/E3setupDLL/symbols.txt @@ -131,11 +131,11 @@ lbl_2_data_151 = .data:0x00000151; // type:object size:0x16 data:string lbl_2_data_167 = .data:0x00000167; // type:object size:0x16 data:string lbl_2_data_17D = .data:0x0000017D; // type:object size:0x16 data:string lbl_2_data_193 = .data:0x00000193; // type:object size:0x16 data:string -lbl_2_data_1A9 = .data:0x000001A9; // type:object size:0x17 data:string +lbl_2_data_1A9 = .data:0x000001A9; // type:object size:0x16 data:string mgNameTestTbl = .data:0x000001C0; // type:object size:0x34 scope:local cursorYOfsTbl = .data:0x000001F4; // type:object size:0x14 scope:local data:float mgPicTbl = .data:0x00000208; // type:object size:0x34 scope:local -startText = .data:0x0000023C; // type:object size:0x14 scope:local data:string +startText = .data:0x0000023C; // type:object size:0x10 scope:local data:string shadowPos = .data:0x00000250; // type:object size:0xC scope:local shadowTarget = .data:0x0000025C; // type:object size:0xC scope:local shadowUp = .data:0x00000268; // type:object size:0xC scope:local @@ -148,7 +148,7 @@ lbl_2_data_31E = .data:0x0000031E; // type:object size:0x8 playerCntMessTbl = .data:0x00000328; // type:object size:0x10 scope:local charPosTbl = .data:0x00000338; // type:object size:0x40 scope:local data:float charComSfxTbl = .data:0x00000378; // type:object size:0x20 scope:local -lbl_2_data_398 = .data:0x00000398; // type:object size:0x10 scope:local data:string +lbl_2_data_398 = .data:0x00000398; // type:object size:0xF scope:local data:string charSpriteTbl = .data:0x000003A8; // type:object size:0x20 scope:local cursorSpriteTbl = .data:0x000003C8; // type:object size:0x14 scope:local hiliteSprTbl = .data:0x000003DC; // type:object size:0x14 scope:local diff --git a/config/GMPE01_00/rels/bootDll/splits.txt b/config/GMPE01_00/rels/bootDll/splits.txt index 49f64a4a..14a67037 100644 --- a/config/GMPE01_00/rels/bootDll/splits.txt +++ b/config/GMPE01_00/rels/bootDll/splits.txt @@ -10,11 +10,7 @@ REL/executor.c: .text start:0x00000000 end:0x000000A0 REL/bootDll/main.c: - .text start:0x000000A0 end:0x00002944 + .text start:0x000000A0 end:0x000029C8 .rodata start:0x00000000 end:0x000000DC - .data start:0x00000000 end:0x000000A0 + .data start:0x00000000 end:0x0000311D .bss start:0x00000000 end:0x0000005C - -REL/bootDll/nintendo_data.c: - .text start:0x00002944 end:0x000029C8 - .data start:0x000000A0 end:0x0000311D diff --git a/config/GMPE01_00/rels/bootDll/symbols.txt b/config/GMPE01_00/rels/bootDll/symbols.txt index b576a34e..463f8400 100644 --- a/config/GMPE01_00/rels/bootDll/symbols.txt +++ b/config/GMPE01_00/rels/bootDll/symbols.txt @@ -1,14 +1,14 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ObjectSetup = .text:0x000000A0; // type:function size:0x1CC -BootProc = .text:0x0000026C; // type:function size:0x78C scope:local +BootExec = .text:0x0000026C; // type:function size:0x78C UpdateDemoMess = .text:0x000009F8; // type:function size:0xC8 scope:local -ProgressiveProc = .text:0x00000AC0; // type:function size:0x6B8 scope:local -fn_1_1178 = .text:0x00001178; // type:function size:0x3B4 -fn_1_152C = .text:0x0000152C; // type:function size:0xBD4 -TitleInit = .text:0x00002100; // type:function size:0x374 scope:local -TitleProc = .text:0x00002474; // type:function size:0x4D0 scope:local -logoReadNintendo = .text:0x00002944; // type:function size:0x84 +BootProgExec = .text:0x00000AC0; // type:function size:0x6B8 +DebugCamOutView = .text:0x00001178; // type:function size:0x3B4 +DebugCamUpdate = .text:0x0000152C; // type:function size:0xBD4 +BootTitleCreate = .text:0x00002100; // type:function size:0x374 +BootTitleExec = .text:0x00002474; // type:function size:0x4D0 +NintendoDataDecode = .text:0x00002944; // type:function size:0x84 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float @@ -50,20 +50,21 @@ lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:d lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 scope:local data:string lbl_1_data_24 = .data:0x00000024; // type:object size:0x14 scope:local data:string -demoTimingTbl = .data:0x00000038; // type:object size:0x18 scope:local data:2byte -progressivePosTbl = .data:0x00000050; // type:object size:0x8 scope:local -lbl_1_data_58 = .data:0x00000058; // type:object size:0x4 scope:local +demoMessTimeTbl = .data:0x00000038; // type:object size:0x18 scope:local data:2byte +progPosTbl = .data:0x00000050; // type:object size:0x8 scope:local +debugCamTbl = .data:0x00000058; // type:object size:0x4 scope:local lbl_1_data_5C = .data:0x0000005C; // type:object size:0x1A scope:local data:string lbl_1_data_76 = .data:0x00000076; // type:object size:0x13 scope:local data:string lbl_1_data_89 = .data:0x00000089; // type:object size:0x17 scope:local -logoNintendoData = .data:0x000000A0; // type:object size:0x307D align:32 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 +nintendoData = .data:0x000000A0; // type:object size:0x307D align:32 +debugCamOnF = .bss:0x00000000; // type:object size:0x4 lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 -titleGroup = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte -titleModel = .bss:0x00000008; // type:object size:0x6 scope:local data:2byte -demoWin = .bss:0x0000000E; // type:object size:0x2 scope:local data:2byte +bootGrpId = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte +titleMdlId = .bss:0x00000008; // type:object size:0x6 scope:local data:2byte +demoWinId = .bss:0x0000000E; // type:object size:0x2 scope:local data:2byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0xC -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:float -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:float -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x18 data:float -objman = .bss:0x00000054; // type:object size:0x8 scope:local data:4byte +debugCamZoom = .bss:0x0000001C; // type:object size:0x8 data:float +debugCamPos = .bss:0x00000024; // type:object size:0x18 data:float +debugCamRot = .bss:0x0000003C; // type:object size:0x18 data:float +objman = .bss:0x00000054; // type:object size:0x4 data:4byte +debugOutView = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPE01_00/rels/instDll/symbols.txt b/config/GMPE01_00/rels/instDll/symbols.txt index 0580b867..cc0a6047 100644 --- a/config/GMPE01_00/rels/instDll/symbols.txt +++ b/config/GMPE01_00/rels/instDll/symbols.txt @@ -1,16 +1,16 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ObjectSetup = .text:0x000000A0; // type:function size:0x8F4 -fn_1_994 = .text:0x00000994; // type:function size:0xE50 scope:local -fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28 scope:local -fn_1_220C = .text:0x0000220C; // type:function size:0x5F8 scope:local -fn_1_2804 = .text:0x00002804; // type:function size:0x79C scope:local -fn_1_2FA0 = .text:0x00002FA0; // type:function size:0x11D4 scope:local -fn_1_4174 = .text:0x00004174; // type:function size:0x3B4 scope:local -fn_1_4528 = .text:0x00004528; // type:function size:0xB88 scope:local -fn_1_50B0 = .text:0x000050B0; // type:function size:0xAB4 scope:local -fn_1_5B64 = .text:0x00005B64; // type:function size:0x340 scope:local -fn_1_5EA4 = .text:0x00005EA4; // type:function size:0x4B8 +InstMain = .text:0x00000994; // type:function size:0xE50 scope:local +InstPlayerMain = .text:0x000017E4; // type:function size:0xA28 scope:local +InstHostMain = .text:0x0000220C; // type:function size:0x5F8 scope:local +InstWinMain = .text:0x00002804; // type:function size:0x79C scope:local +InstNameMain = .text:0x00002FA0; // type:function size:0x11D4 scope:local +CameraOutView = .text:0x00004174; // type:function size:0x3B4 scope:local +CameraDebug = .text:0x00004528; // type:function size:0xB88 scope:local +InstPicDraw = .text:0x000050B0; // type:function size:0xAB4 scope:local +ShadowDraw = .text:0x00005B64; // type:function size:0x340 scope:local +FontCreate = .text:0x00005EA4; // type:function size:0x4B8 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float @@ -115,38 +115,38 @@ lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data: lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double -lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 scope:local data:2byte +instMode = .data:0x00000000; // type:object size:0x2 scope:local data:2byte lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 scope:local data:string -lbl_1_data_26 = .data:0x00000026; // type:object size:0x20 scope:local -lbl_1_data_46 = .data:0x00000046; // type:object size:0x8 scope:local -lbl_1_data_50 = .data:0x00000050; // type:object size:0x20 scope:local -lbl_1_data_70 = .data:0x00000070; // type:object size:0x20 scope:local +instGrpTbl = .data:0x00000026; // type:object size:0x20 scope:local +instPlayerNumTbl = .data:0x00000046; // type:object size:0x8 scope:local +instBoxFile = .data:0x00000050; // type:object size:0x20 scope:local +instBackFile = .data:0x00000070; // type:object size:0x20 scope:local lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 scope:local data:string lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 scope:local data:string lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 scope:local -lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4 scope:local -lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x48 scope:local -lbl_1_data_10C = .data:0x0000010C; // type:object size:0x18 scope:local -lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 scope:local data:float -lbl_1_data_144 = .data:0x00000144; // type:object size:0x4 scope:local +playerPosNameTbl = .data:0x000000B0; // type:object size:0x10 scope:local +playerDelayTbl = .data:0x000000C0; // type:object size:0x4 scope:local +hostFileTbl = .data:0x000000C4; // type:object size:0x48 scope:local +hostSeTbl = .data:0x0000010C; // type:object size:0x18 scope:local +instNamePosTbl = .data:0x00000124; // type:object size:0x20 scope:local data:float +cameraMask$858 = .data:0x00000144; // type:object size:0x4 scope:local lbl_1_data_148 = .data:0x00000148; // type:object size:0x4 scope:local -lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 scope:local data:float -lbl_1_data_150 = .data:0x00000150; // type:object size:0x318 scope:local -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:float -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 scope:local data:float -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x18 scope:local data:float -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x18 scope:local data:float -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte +instPicRadius = .data:0x0000014C; // type:object size:0x4 scope:local data:float +FontCharFile = .data:0x00000150; // type:object size:0x318 scope:local +debugCamOnF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +instBusyF = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte +instPage = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte +LanguageNo = .bss:0x00000008; // type:object size:0x1 scope:local data:byte +instFov = .bss:0x0000000C; // type:object size:0x4 scope:local data:float +instMesOfs = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte +instHostNo = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte +instMgNo = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte +instPicAnim = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +instBoxMdlId = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +cameraZoom = .bss:0x00000020; // type:object size:0x8 data:float +cameraPos = .bss:0x00000028; // type:object size:0x18 data:float +cameraRot = .bss:0x00000040; // type:object size:0x18 data:float +objman = .bss:0x00000058; // type:object size:0x4 data:4byte +outViewObj = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPE01_00/rels/m401Dll/symbols.txt b/config/GMPE01_00/rels/m401Dll/symbols.txt index 610f18c6..472746d7 100644 --- a/config/GMPE01_00/rels/m401Dll/symbols.txt +++ b/config/GMPE01_00/rels/m401Dll/symbols.txt @@ -338,93 +338,93 @@ lbl_2_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data: lbl_2_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double lbl_2_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float lbl_2_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float -lbl_2_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_2_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_2_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_2_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_2_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_2_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_2_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_2_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_2_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_2_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_2_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double -lbl_2_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_2_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_2_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_2_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_2_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_2_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_2_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_2_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_2_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_2_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double -lbl_2_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double -lbl_2_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double -lbl_2_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_2_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_2_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_2_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_2_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_2_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_2_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_2_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_2_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_2_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_2_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_2_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_2_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_2_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double -lbl_2_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double -lbl_2_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_2_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_2_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_2_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_2_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_2_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_2_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_2_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_2_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_2_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_2_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_2_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -lbl_2_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float -lbl_2_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float -lbl_2_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float -lbl_2_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float -lbl_2_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double -lbl_2_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_2_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_2_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:double -lbl_2_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_2_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_2_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_2_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_2_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_2_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_2_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_2_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_2_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_2_rodata_590 = .rodata:0x00000590; // type:object size:0x8 data:double -lbl_2_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_2_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_2_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_2_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float -lbl_2_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_2_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_2_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_2_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_2_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double -lbl_2_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_2_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float -lbl_2_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_2_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_2_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_2_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_2_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_2_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_2_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_2_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float +lbl_2_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_2_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_2_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_2_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_2_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_2_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_2_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_2_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_2_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_2_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_2_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_2_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_2_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_2_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_2_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_2_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_2_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_2_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_2_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_2_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_2_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_2_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_2_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_2_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_2_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_2_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_2_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_2_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_2_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double +lbl_2_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_2_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:double +lbl_2_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_2_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_2_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_2_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_2_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_2_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_2_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_2_rodata_590 = .rodata:0x00000590; // type:object size:0x8 scope:local data:double +lbl_2_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_2_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float lbl_2_data_0 = .data:0x00000000; // type:object size:0x4 data:float lbl_2_data_4 = .data:0x00000004; // type:object size:0x10 lbl_2_data_14 = .data:0x00000014; // type:object size:0xC diff --git a/config/GMPE01_00/rels/m404Dll/symbols.txt b/config/GMPE01_00/rels/m404Dll/symbols.txt index 97dbc88d..e6bb9e5a 100644 --- a/config/GMPE01_00/rels/m404Dll/symbols.txt +++ b/config/GMPE01_00/rels/m404Dll/symbols.txt @@ -46,8 +46,8 @@ fn_1_648C = .text:0x0000648C; // type:function size:0x250 fn_1_66DC = .text:0x000066DC; // type:function size:0x5AC _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -__fakeHalf = .rodata:0x00000000; // type:object size:0x4 data:float -__fakeThree = .rodata:0x00000004; // type:object size:0x4 data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float @@ -60,7 +60,7 @@ lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:f lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:2byte +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x6 scope:local data:2byte lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float @@ -113,7 +113,7 @@ lbl_1_data_77C = .data:0x0000077C; // type:object size:0xC data:float lbl_1_data_788 = .data:0x00000788; // type:object size:0x4 lbl_1_data_78C = .data:0x0000078C; // type:object size:0xC data:float lbl_1_data_798 = .data:0x00000798; // type:object size:0xC data:float -lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x24 scope:local data:string +lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x23 scope:local data:string lbl_1_data_7C8 = .data:0x000007C8; // type:object size:0x4 data:4byte jumptable_1_data_7CC = .data:0x000007CC; // type:object size:0x28 scope:local lbl_1_data_7F4 = .data:0x000007F4; // type:object size:0x1C scope:local data:string @@ -128,7 +128,7 @@ lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x10 data:float lbl_1_data_8E8 = .data:0x000008E8; // type:object size:0xC lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x8 data:2byte lbl_1_data_8FC = .data:0x000008FC; // type:object size:0x18 -lbl_1_data_914 = .data:0x00000914; // type:object size:0x1C scope:local data:string +lbl_1_data_914 = .data:0x00000914; // type:object size:0x19 scope:local data:string lbl_1_data_930 = .data:0x00000930; // type:object size:0x20 lbl_1_data_950 = .data:0x00000950; // type:object size:0x20 lbl_1_data_970 = .data:0x00000970; // type:object size:0x7 scope:local data:string diff --git a/config/GMPE01_00/rels/m406Dll/symbols.txt b/config/GMPE01_00/rels/m406Dll/symbols.txt index 5697d866..1287dc3c 100644 --- a/config/GMPE01_00/rels/m406Dll/symbols.txt +++ b/config/GMPE01_00/rels/m406Dll/symbols.txt @@ -340,7 +340,7 @@ lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data: lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x8C data:float -lbl_1_data_8C = .data:0x0000008C; // type:object size:0x24 scope:local data:string +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x23 scope:local data:string jumptable_1_data_B0 = .data:0x000000B0; // type:object size:0x40 scope:local lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x348 lbl_1_data_438 = .data:0x00000438; // type:object size:0x348 @@ -378,7 +378,7 @@ lbl_1_data_FF0 = .data:0x00000FF0; // type:object size:0x10 lbl_1_data_1000 = .data:0x00001000; // type:object size:0x19 scope:local data:string lbl_1_data_1019 = .data:0x00001019; // type:object size:0x19 scope:local data:string lbl_1_data_1032 = .data:0x00001032; // type:object size:0x1A scope:local data:string -lbl_1_data_104C = .data:0x0000104C; // type:object size:0x1C scope:local data:string +lbl_1_data_104C = .data:0x0000104C; // type:object size:0x1A scope:local data:string lbl_1_data_1068 = .data:0x00001068; // type:object size:0x10 lbl_1_data_1078 = .data:0x00001078; // type:object size:0x28 lbl_1_data_10A0 = .data:0x000010A0; // type:object size:0x80 data:4byte diff --git a/config/GMPE01_00/rels/m410Dll/symbols.txt b/config/GMPE01_00/rels/m410Dll/symbols.txt index 0ddbcbb6..b0cd6c90 100644 --- a/config/GMPE01_00/rels/m410Dll/symbols.txt +++ b/config/GMPE01_00/rels/m410Dll/symbols.txt @@ -86,8 +86,8 @@ fn_1_A9A4 = .text:0x0000A9A4; // type:function size:0x79C fn_1_B140 = .text:0x0000B140; // type:function size:0x644 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -__fakeHalf = .rodata:0x00000000; // type:object size:0x4 data:float -__fakeThree = .rodata:0x00000004; // type:object size:0x4 data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float @@ -277,13 +277,13 @@ lbl_1_data_88 = .data:0x00000088; // type:object size:0x3C data:float lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x14 lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x2 data:2byte lbl_1_data_DC = .data:0x000000DC; // type:object size:0x20 -lbl_1_data_FC = .data:0x000000FC; // type:object size:0x8 scope:local data:string +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x7 scope:local data:string lbl_1_data_104 = .data:0x00000104; // type:object size:0xC lbl_1_data_110 = .data:0x00000110; // type:object size:0x4 data:4byte lbl_1_data_114 = .data:0x00000114; // type:object size:0x16 scope:local data:string -lbl_1_data_130 = .data:0x00000130; // type:object size:0x10 scope:local data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0xF scope:local data:string lbl_1_data_140 = .data:0x00000140; // type:object size:0x20 -lbl_1_data_160 = .data:0x00000160; // type:object size:0xC scope:local data:string +lbl_1_data_160 = .data:0x00000160; // type:object size:0xB scope:local data:string lbl_1_data_16C = .data:0x0000016C; // type:object size:0x20 lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x28 diff --git a/config/GMPE01_00/rels/m412Dll/symbols.txt b/config/GMPE01_00/rels/m412Dll/symbols.txt index 6731c9cb..95938828 100644 --- a/config/GMPE01_00/rels/m412Dll/symbols.txt +++ b/config/GMPE01_00/rels/m412Dll/symbols.txt @@ -38,136 +38,137 @@ fn_1_B160 = .text:0x0000B160; // type:function size:0x60 fn_1_B1C0 = .text:0x0000B1C0; // type:function size:0x4A0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 lbl_1_data_20 = .data:0x00000020; // type:object size:0x20 lbl_1_data_40 = .data:0x00000040; // type:object size:0x20 lbl_1_data_60 = .data:0x00000060; // type:object size:0x18 lbl_1_data_78 = .data:0x00000078; // type:object size:0x54 data:float -lbl_1_data_CC = .data:0x000000CC; // type:object size:0x14 data:string -lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x14 data:string -lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x14 data:string -lbl_1_data_108 = .data:0x00000108; // type:object size:0x14 data:string -lbl_1_data_11C = .data:0x0000011C; // type:object size:0x14 data:string -lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 data:string -lbl_1_data_144 = .data:0x00000144; // type:object size:0x14 data:string -lbl_1_data_158 = .data:0x00000158; // type:object size:0x14 data:string -lbl_1_data_16C = .data:0x0000016C; // type:object size:0x14 data:string -lbl_1_data_180 = .data:0x00000180; // type:object size:0x14 data:string -lbl_1_data_194 = .data:0x00000194; // type:object size:0x14 data:string -lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x14 data:string -lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x14 data:string -lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x14 data:string -lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x14 data:string -lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x14 data:string -lbl_1_data_20C = .data:0x0000020C; // type:object size:0x14 data:string -lbl_1_data_220 = .data:0x00000220; // type:object size:0x14 data:string -lbl_1_data_234 = .data:0x00000234; // type:object size:0x14 data:string -lbl_1_data_248 = .data:0x00000248; // type:object size:0x14 data:string -lbl_1_data_25C = .data:0x0000025C; // type:object size:0x14 data:string -lbl_1_data_270 = .data:0x00000270; // type:object size:0x14 data:string -lbl_1_data_284 = .data:0x00000284; // type:object size:0x14 data:string +lbl_1_data_CC = .data:0x000000CC; // type:object size:0x14 scope:local data:string +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x14 scope:local data:string +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x14 scope:local data:string +lbl_1_data_108 = .data:0x00000108; // type:object size:0x14 scope:local data:string +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x14 scope:local data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 scope:local data:string +lbl_1_data_144 = .data:0x00000144; // type:object size:0x14 scope:local data:string +lbl_1_data_158 = .data:0x00000158; // type:object size:0x14 scope:local data:string +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x14 scope:local data:string +lbl_1_data_180 = .data:0x00000180; // type:object size:0x14 scope:local data:string +lbl_1_data_194 = .data:0x00000194; // type:object size:0x14 scope:local data:string +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x14 scope:local data:string +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x14 scope:local data:string +lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x14 scope:local data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x14 scope:local data:string +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x14 scope:local data:string +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x14 scope:local data:string +lbl_1_data_220 = .data:0x00000220; // type:object size:0x14 scope:local data:string +lbl_1_data_234 = .data:0x00000234; // type:object size:0x14 scope:local data:string +lbl_1_data_248 = .data:0x00000248; // type:object size:0x14 scope:local data:string +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x14 scope:local data:string +lbl_1_data_270 = .data:0x00000270; // type:object size:0x14 scope:local data:string +lbl_1_data_284 = .data:0x00000284; // type:object size:0x14 scope:local data:string lbl_1_data_298 = .data:0x00000298; // type:object size:0x5C -lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0xC data:string -lbl_1_data_300 = .data:0x00000300; // type:object size:0x7 data:string -lbl_1_data_307 = .data:0x00000307; // type:object size:0x9 +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0xC scope:local data:string +lbl_1_data_300 = .data:0x00000300; // type:object size:0x7 scope:local data:string +lbl_1_data_307 = .data:0x00000307; // type:object size:0x7 scope:local data:string lbl_1_data_310 = .data:0x00000310; // type:object size:0x30 lbl_1_data_340 = .data:0x00000340; // type:object size:0x8 lbl_1_data_348 = .data:0x00000348; // type:object size:0x18 -lbl_1_data_360 = .data:0x00000360; // type:object size:0x9 data:string +lbl_1_data_360 = .data:0x00000360; // type:object size:0x9 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x10 data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x114 lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x114 lbl_1_bss_250 = .bss:0x00000250; // type:object size:0xC data:float @@ -184,7 +185,7 @@ lbl_1_bss_77C = .bss:0x0000077C; // type:object size:0x4 data:float lbl_1_bss_780 = .bss:0x00000780; // type:object size:0x10 data:4byte lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte -lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x2 data:2byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x4 data:2byte lbl_1_bss_79C = .bss:0x0000079C; // type:object size:0x2 data:2byte lbl_1_bss_79E = .bss:0x0000079E; // type:object size:0x2 data:2byte lbl_1_bss_7A0 = .bss:0x000007A0; // type:object size:0x2 data:2byte diff --git a/config/GMPE01_00/rels/m413Dll/symbols.txt b/config/GMPE01_00/rels/m413Dll/symbols.txt index 0da93366..22b18c0f 100644 --- a/config/GMPE01_00/rels/m413Dll/symbols.txt +++ b/config/GMPE01_00/rels/m413Dll/symbols.txt @@ -22,176 +22,176 @@ ObjectSetup = .text:0x0000D3A0; // type:function size:0x360 fn_1_D700 = .text:0x0000D700; // type:function size:0x64 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x10 data:double -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x18 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x18 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xCC -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:byte -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:4byte -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:4byte -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:4byte -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x19 data:byte -lbl_1_rodata_201 = .rodata:0x00000201; // type:object size:0x1F data:byte -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC data:4byte -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x30 data:4byte -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x10 data:4byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC data:4byte -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x10 data:4byte -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0xC data:4byte -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0xC data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 data:4byte -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 data:4byte -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:4byte -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x428 -lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0xC data:4byte -lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0xC data:4byte -lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0x4 data:float -lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 data:float -lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 data:float -lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x8 data:double -lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x8 data:double -lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x8 data:double -lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x8 data:double -lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float -lbl_1_rodata_7AC = .rodata:0x000007AC; // type:object size:0x10 data:4byte -lbl_1_rodata_7BC = .rodata:0x000007BC; // type:object size:0x14 data:4byte -lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x60 -lbl_1_rodata_830 = .rodata:0x00000830; // type:object size:0x8 data:double -lbl_1_rodata_838 = .rodata:0x00000838; // type:object size:0x8 data:double -lbl_1_rodata_840 = .rodata:0x00000840; // type:object size:0x4 data:float -lbl_1_rodata_848 = .rodata:0x00000848; // type:object size:0x8 data:double -lbl_1_rodata_850 = .rodata:0x00000850; // type:object size:0x4 data:float -lbl_1_rodata_858 = .rodata:0x00000858; // type:object size:0x8 data:double -lbl_1_rodata_860 = .rodata:0x00000860; // type:object size:0x8 data:double -lbl_1_rodata_868 = .rodata:0x00000868; // type:object size:0x8 data:double -lbl_1_rodata_870 = .rodata:0x00000870; // type:object size:0x8 data:double -lbl_1_rodata_878 = .rodata:0x00000878; // type:object size:0x4 data:float -lbl_1_rodata_87C = .rodata:0x0000087C; // type:object size:0x4 data:float -lbl_1_rodata_880 = .rodata:0x00000880; // type:object size:0x4 data:float -lbl_1_rodata_884 = .rodata:0x00000884; // type:object size:0x4 data:float -lbl_1_rodata_888 = .rodata:0x00000888; // type:object size:0x4 data:float -lbl_1_rodata_88C = .rodata:0x0000088C; // type:object size:0x1C data:4byte -lbl_1_rodata_8A8 = .rodata:0x000008A8; // type:object size:0x8 data:double -lbl_1_rodata_8B0 = .rodata:0x000008B0; // type:object size:0x4 data:float -lbl_1_rodata_8B4 = .rodata:0x000008B4; // type:object size:0x4 data:float -lbl_1_rodata_8B8 = .rodata:0x000008B8; // type:object size:0x4 data:float -lbl_1_rodata_8BC = .rodata:0x000008BC; // type:object size:0x4 data:float -lbl_1_rodata_8C0 = .rodata:0x000008C0; // type:object size:0x8 data:double -lbl_1_rodata_8C8 = .rodata:0x000008C8; // type:object size:0x4 data:float -lbl_1_rodata_8D0 = .rodata:0x000008D0; // type:object size:0x8 data:double -lbl_1_rodata_8D8 = .rodata:0x000008D8; // type:object size:0x4 data:float -lbl_1_rodata_8DC = .rodata:0x000008DC; // type:object size:0x4 data:float -lbl_1_rodata_8E0 = .rodata:0x000008E0; // type:object size:0x4 data:float -lbl_1_rodata_8E4 = .rodata:0x000008E4; // type:object size:0x4 data:float -lbl_1_rodata_8E8 = .rodata:0x000008E8; // type:object size:0x4 data:float -lbl_1_rodata_8EC = .rodata:0x000008EC; // type:object size:0x4 data:float -lbl_1_rodata_8F0 = .rodata:0x000008F0; // type:object size:0x4 data:float -lbl_1_rodata_8F4 = .rodata:0x000008F4; // type:object size:0x4 data:float -lbl_1_rodata_8F8 = .rodata:0x000008F8; // type:object size:0x8 data:double -lbl_1_rodata_900 = .rodata:0x00000900; // type:object size:0x8 data:double -lbl_1_rodata_908 = .rodata:0x00000908; // type:object size:0x4 data:float -lbl_1_rodata_90C = .rodata:0x0000090C; // type:object size:0x4 data:float -lbl_1_rodata_910 = .rodata:0x00000910; // type:object size:0x4 data:float -lbl_1_rodata_914 = .rodata:0x00000914; // type:object size:0xC data:byte -lbl_1_rodata_920 = .rodata:0x00000920; // type:object size:0x18 data:4byte -lbl_1_rodata_938 = .rodata:0x00000938; // type:object size:0x8 data:byte -lbl_1_rodata_940 = .rodata:0x00000940; // type:object size:0x10 data:4byte -lbl_1_rodata_950 = .rodata:0x00000950; // type:object size:0x1 data:byte -lbl_1_rodata_954 = .rodata:0x00000954; // type:object size:0x10 data:4byte -lbl_1_rodata_964 = .rodata:0x00000964; // type:object size:0x14 data:4byte -lbl_1_rodata_978 = .rodata:0x00000978; // type:object size:0x8 data:double -lbl_1_rodata_980 = .rodata:0x00000980; // type:object size:0x4 data:float -lbl_1_rodata_984 = .rodata:0x00000984; // type:object size:0x4 data:float -lbl_1_rodata_988 = .rodata:0x00000988; // type:object size:0x4 data:float -lbl_1_rodata_98C = .rodata:0x0000098C; // type:object size:0x4 data:float -lbl_1_rodata_990 = .rodata:0x00000990; // type:object size:0x8 data:double -lbl_1_rodata_998 = .rodata:0x00000998; // type:object size:0x4 data:float -lbl_1_rodata_99C = .rodata:0x0000099C; // type:object size:0x4 data:float -lbl_1_rodata_9A0 = .rodata:0x000009A0; // type:object size:0x8 data:double -lbl_1_rodata_9A8 = .rodata:0x000009A8; // type:object size:0x8 data:double -lbl_1_rodata_9B0 = .rodata:0x000009B0; // type:object size:0x10 data:4byte -lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 data:float -lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 data:float -lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 data:float -lbl_1_rodata_9CC = .rodata:0x000009CC; // type:object size:0xC data:4byte -lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0xC data:4byte -lbl_1_rodata_9E4 = .rodata:0x000009E4; // type:object size:0xC data:4byte -lbl_1_rodata_9F0 = .rodata:0x000009F0; // type:object size:0xC data:4byte -lbl_1_rodata_9FC = .rodata:0x000009FC; // type:object size:0xC data:4byte -lbl_1_rodata_A08 = .rodata:0x00000A08; // type:object size:0xC data:4byte -lbl_1_rodata_A14 = .rodata:0x00000A14; // type:object size:0xC data:4byte -lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x1 data:byte -lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 data:float -lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 data:float -lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 data:float -lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 data:float -lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 data:float +lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x10 scope:local data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x18 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x18 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xCC scope:local +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC scope:local data:byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x19 scope:local data:byte +lbl_1_rodata_201 = .rodata:0x00000201; // type:object size:0x1F scope:local data:byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x428 scope:local +lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 scope:local data:float +lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 scope:local data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x8 scope:local data:double +lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x8 scope:local data:double +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x8 scope:local data:double +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7AC = .rodata:0x000007AC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_7BC = .rodata:0x000007BC; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x60 scope:local +lbl_1_rodata_830 = .rodata:0x00000830; // type:object size:0x8 scope:local data:double +lbl_1_rodata_838 = .rodata:0x00000838; // type:object size:0x8 scope:local data:double +lbl_1_rodata_840 = .rodata:0x00000840; // type:object size:0x4 scope:local data:float +lbl_1_rodata_848 = .rodata:0x00000848; // type:object size:0x8 scope:local data:double +lbl_1_rodata_850 = .rodata:0x00000850; // type:object size:0x4 scope:local data:float +lbl_1_rodata_858 = .rodata:0x00000858; // type:object size:0x8 scope:local data:double +lbl_1_rodata_860 = .rodata:0x00000860; // type:object size:0x8 scope:local data:double +lbl_1_rodata_868 = .rodata:0x00000868; // type:object size:0x8 scope:local data:double +lbl_1_rodata_870 = .rodata:0x00000870; // type:object size:0x8 scope:local data:double +lbl_1_rodata_878 = .rodata:0x00000878; // type:object size:0x4 scope:local data:float +lbl_1_rodata_87C = .rodata:0x0000087C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_880 = .rodata:0x00000880; // type:object size:0x4 scope:local data:float +lbl_1_rodata_884 = .rodata:0x00000884; // type:object size:0x4 scope:local data:float +lbl_1_rodata_888 = .rodata:0x00000888; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88C = .rodata:0x0000088C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_8A8 = .rodata:0x000008A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_8B0 = .rodata:0x000008B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8B4 = .rodata:0x000008B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8B8 = .rodata:0x000008B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8BC = .rodata:0x000008BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C0 = .rodata:0x000008C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_8C8 = .rodata:0x000008C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8D0 = .rodata:0x000008D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_8D8 = .rodata:0x000008D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8DC = .rodata:0x000008DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8E0 = .rodata:0x000008E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8E4 = .rodata:0x000008E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8E8 = .rodata:0x000008E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8EC = .rodata:0x000008EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8F0 = .rodata:0x000008F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8F4 = .rodata:0x000008F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8F8 = .rodata:0x000008F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_900 = .rodata:0x00000900; // type:object size:0x8 scope:local data:double +lbl_1_rodata_908 = .rodata:0x00000908; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90C = .rodata:0x0000090C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_910 = .rodata:0x00000910; // type:object size:0x4 scope:local data:float +lbl_1_rodata_914 = .rodata:0x00000914; // type:object size:0xC scope:local data:byte +lbl_1_rodata_920 = .rodata:0x00000920; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_938 = .rodata:0x00000938; // type:object size:0x8 scope:local data:byte +lbl_1_rodata_940 = .rodata:0x00000940; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_950 = .rodata:0x00000950; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_954 = .rodata:0x00000954; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_964 = .rodata:0x00000964; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_978 = .rodata:0x00000978; // type:object size:0x8 scope:local data:double +lbl_1_rodata_980 = .rodata:0x00000980; // type:object size:0x4 scope:local data:float +lbl_1_rodata_984 = .rodata:0x00000984; // type:object size:0x4 scope:local data:float +lbl_1_rodata_988 = .rodata:0x00000988; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98C = .rodata:0x0000098C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_990 = .rodata:0x00000990; // type:object size:0x8 scope:local data:double +lbl_1_rodata_998 = .rodata:0x00000998; // type:object size:0x4 scope:local data:float +lbl_1_rodata_99C = .rodata:0x0000099C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9A0 = .rodata:0x000009A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_9A8 = .rodata:0x000009A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_9B0 = .rodata:0x000009B0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9CC = .rodata:0x000009CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_9E4 = .rodata:0x000009E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_9F0 = .rodata:0x000009F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_9FC = .rodata:0x000009FC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_A08 = .rodata:0x00000A08; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_A14 = .rodata:0x00000A14; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x4 data:4byte lbl_1_data_4 = .data:0x00000004; // type:object size:0x8 data:4byte lbl_1_data_C = .data:0x0000000C; // type:object size:0x10 data:4byte lbl_1_data_1C = .data:0x0000001C; // type:object size:0x1C data:float -lbl_1_data_38 = .data:0x00000038; // type:object size:0x9 data:string -lbl_1_data_41 = .data:0x00000041; // type:object size:0x19 data:string -lbl_1_data_5A = .data:0x0000005A; // type:object size:0x1B data:string -lbl_1_data_75 = .data:0x00000075; // type:object size:0x10 data:string -lbl_1_data_85 = .data:0x00000085; // type:object size:0x10 data:string -lbl_1_data_95 = .data:0x00000095; // type:object size:0x10 data:string -lbl_1_data_A5 = .data:0x000000A5; // type:object size:0x10 data:string -lbl_1_data_B5 = .data:0x000000B5; // type:object size:0x11 data:string -lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x11 data:string -lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x12 data:string -lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x12 data:string -lbl_1_data_FB = .data:0x000000FB; // type:object size:0x12 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0xF data:string -lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0x24 data:string +lbl_1_data_38 = .data:0x00000038; // type:object size:0x9 scope:local data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x19 scope:local data:string +lbl_1_data_5A = .data:0x0000005A; // type:object size:0x1B scope:local data:string +lbl_1_data_75 = .data:0x00000075; // type:object size:0x10 scope:local data:string +lbl_1_data_85 = .data:0x00000085; // type:object size:0x10 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0x10 scope:local data:string +lbl_1_data_A5 = .data:0x000000A5; // type:object size:0x10 scope:local data:string +lbl_1_data_B5 = .data:0x000000B5; // type:object size:0x11 scope:local data:string +lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x11 scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x12 scope:local data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x12 scope:local data:string +lbl_1_data_FB = .data:0x000000FB; // type:object size:0x12 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0xF scope:local data:string +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte diff --git a/config/GMPE01_00/rels/m415Dll/symbols.txt b/config/GMPE01_00/rels/m415Dll/symbols.txt index d67685cf..62f5cc6f 100644 --- a/config/GMPE01_00/rels/m415Dll/symbols.txt +++ b/config/GMPE01_00/rels/m415Dll/symbols.txt @@ -107,115 +107,116 @@ fn_1_C784 = .text:0x0000C784; // type:function size:0x98 fn_1_C81C = .text:0x0000C81C; // type:function size:0x40 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x10 data:byte -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x20 data:byte -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x20 data:byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x10 data:byte -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:byte -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x10 data:byte -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x10 scope:local data:byte +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x20 scope:local data:byte +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x20 scope:local data:byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x10 scope:local data:byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 scope:local data:byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x10 scope:local data:byte +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC lbl_1_data_28 = .data:0x00000028; // type:object size:0xC lbl_1_data_34 = .data:0x00000034; // type:object size:0xC -lbl_1_data_40 = .data:0x00000040; // type:object size:0x23 data:string +lbl_1_data_40 = .data:0x00000040; // type:object size:0x23 scope:local data:string lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte -lbl_1_data_68 = .data:0x00000068; // type:object size:0x7 data:string -lbl_1_data_6F = .data:0x0000006F; // type:object size:0x6 data:string -lbl_1_data_75 = .data:0x00000075; // type:object size:0x9 data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x7 scope:local data:string +lbl_1_data_6F = .data:0x0000006F; // type:object size:0x6 scope:local data:string +lbl_1_data_75 = .data:0x00000075; // type:object size:0x9 scope:local data:string lbl_1_data_80 = .data:0x00000080; // type:object size:0x28 lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x30 -lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x8 data:string +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x8 scope:local data:string jumptable_1_data_E0 = .data:0x000000E0; // type:object size:0x28 scope:local -lbl_1_data_108 = .data:0x00000108; // type:object size:0x8 data:string +lbl_1_data_108 = .data:0x00000108; // type:object size:0x8 scope:local data:string lbl_1_data_110 = .data:0x00000110; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x30 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x28 +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x200 lbl_1_bss_234 = .bss:0x00000234; // type:object size:0x100 lbl_1_bss_334 = .bss:0x00000334; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m418Dll/symbols.txt b/config/GMPE01_00/rels/m418Dll/symbols.txt index 6d5e96a3..ad0f568b 100644 --- a/config/GMPE01_00/rels/m418Dll/symbols.txt +++ b/config/GMPE01_00/rels/m418Dll/symbols.txt @@ -98,7 +98,7 @@ fn_1_9F94 = .text:0x00009F94; // type:function size:0x1BC _prolog = .text:0x0000A150; // type:function size:0x54 scope:global _epilog = .text:0x0000A1A4; // type:function size:0x4C scope:global fn_1_A1F0 = .text:0x0000A1F0; // type:function size:0x398 -fn_1_A588 = .text:0x0000A588; // type:function size:0x398 +ObjectSetup = .text:0x0000A588; // type:function size:0x398 fn_1_A920 = .text:0x0000A920; // type:function size:0x20 fn_1_A940 = .text:0x0000A940; // type:function size:0x28 fn_1_A968 = .text:0x0000A968; // type:function size:0xC8 @@ -128,149 +128,149 @@ fn_1_D714 = .text:0x0000D714; // type:function size:0x4FC fn_1_DC10 = .text:0x0000DC10; // type:function size:0x6C8 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0xC data:4byte -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0xC data:4byte -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0xC data:4byte -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC data:4byte -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0xC data:4byte -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:4byte -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0xC data:4byte -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x10 data:4byte -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:4byte -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 data:4byte -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC data:4byte -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0xC data:4byte -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0xC data:4byte -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0xC data:4byte -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC data:4byte -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC data:4byte -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0xC data:4byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0xC data:4byte -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0xC data:4byte -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC data:4byte -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0xC data:4byte -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0xC data:4byte -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 data:4byte lbl_1_data_8 = .data:0x00000008; // type:object size:0x4 data:4byte -lbl_1_data_C = .data:0x0000000C; // type:object size:0x12 data:string -lbl_1_data_1E = .data:0x0000001E; // type:object size:0x13 data:string -lbl_1_data_31 = .data:0x00000031; // type:object size:0x10 data:string -lbl_1_data_41 = .data:0x00000041; // type:object size:0x10 data:string -lbl_1_data_51 = .data:0x00000051; // type:object size:0x10 data:string -lbl_1_data_61 = .data:0x00000061; // type:object size:0x10 data:string -lbl_1_data_71 = .data:0x00000071; // type:object size:0xD data:string -lbl_1_data_7E = .data:0x0000007E; // type:object size:0xE data:string +lbl_1_data_C = .data:0x0000000C; // type:object size:0x12 scope:local data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x13 scope:local data:string +lbl_1_data_31 = .data:0x00000031; // type:object size:0x10 scope:local data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x10 scope:local data:string +lbl_1_data_51 = .data:0x00000051; // type:object size:0x10 scope:local data:string +lbl_1_data_61 = .data:0x00000061; // type:object size:0x10 scope:local data:string +lbl_1_data_71 = .data:0x00000071; // type:object size:0xD scope:local data:string +lbl_1_data_7E = .data:0x0000007E; // type:object size:0xE scope:local data:string lbl_1_data_8C = .data:0x0000008C; // type:object size:0x6C data:4byte jumptable_1_data_F8 = .data:0x000000F8; // type:object size:0x88 scope:local -lbl_1_data_180 = .data:0x00000180; // type:object size:0x12 data:string -lbl_1_data_192 = .data:0x00000192; // type:object size:0x15 data:string -lbl_1_data_1A7 = .data:0x000001A7; // type:object size:0x19 data:string +lbl_1_data_180 = .data:0x00000180; // type:object size:0x12 scope:local data:string +lbl_1_data_192 = .data:0x00000192; // type:object size:0x15 scope:local data:string +lbl_1_data_1A7 = .data:0x000001A7; // type:object size:0x19 scope:local data:string lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x20 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x20 lbl_1_data_200 = .data:0x00000200; // type:object size:0x40 diff --git a/config/GMPE01_00/rels/m419Dll/symbols.txt b/config/GMPE01_00/rels/m419Dll/symbols.txt index 1a40f379..a3696d5f 100644 --- a/config/GMPE01_00/rels/m419Dll/symbols.txt +++ b/config/GMPE01_00/rels/m419Dll/symbols.txt @@ -46,117 +46,117 @@ fn_1_104A0 = .text:0x000104A0; // type:function size:0x60 fn_1_10500 = .text:0x00010500; // type:function size:0x3E0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 lbl_1_data_20 = .data:0x00000020; // type:object size:0x2C lbl_1_data_4C = .data:0x0000004C; // type:object size:0x10 -lbl_1_data_5C = .data:0x0000005C; // type:object size:0x60 -lbl_1_data_BC = .data:0x000000BC; // type:object size:0xB data:string +lbl_1_data_5C = .data:0x0000005C; // type:object size:0x60 data:float +lbl_1_data_BC = .data:0x000000BC; // type:object size:0xB scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x60 lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x1 data:byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x20 diff --git a/config/GMPE01_00/rels/m420dll/splits.txt b/config/GMPE01_00/rels/m420dll/splits.txt index eb2fc2b9..9c77e32d 100644 --- a/config/GMPE01_00/rels/m420dll/splits.txt +++ b/config/GMPE01_00/rels/m420dll/splits.txt @@ -10,10 +10,15 @@ REL/executor.c: .text start:0x00000000 end:0x000000A0 REL/m420dll/main.c: - .text start:0x000000A0 end:0x00001B8C - .rodata start:0x00000000 end:0x000000F8 + .text start:0x000000A0 end:0x00000D98 + .rodata start:0x00000000 end:0x00000098 + .bss start:0x00000000 end:0x00000030 + +REL/m420dll/camera.c: + .text start:0x00000D98 end:0x00001B8C + .rodata start:0x00000098 end:0x000000F8 .data start:0x00000000 end:0x00000050 - .bss start:0x00000000 end:0x000000B0 + .bss start:0x00000030 end:0x000000B0 REL/m420dll/player.c: .text start:0x00001B8C end:0x00004964 diff --git a/config/GMPE01_00/rels/m420dll/symbols.txt b/config/GMPE01_00/rels/m420dll/symbols.txt index 415bc67d..096cbad2 100644 --- a/config/GMPE01_00/rels/m420dll/symbols.txt +++ b/config/GMPE01_00/rels/m420dll/symbols.txt @@ -83,135 +83,137 @@ fn_1_8934 = .text:0x00008934; // type:function size:0x10 fn_1_8944 = .text:0x00008944; // type:function size:0x34 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x54 -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 data:4byte -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x160 -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x60 -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x10 -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x1C -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x6C -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0xC data:4byte -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0xC data:4byte -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 data:double -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x30 data:4byte -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x30 data:4byte -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0xC data:4byte -lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E data:string -lbl_1_data_1E = .data:0x0000001E; // type:object size:0x1E data:string -lbl_1_data_3C = .data:0x0000003C; // type:object size:0x11 +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x54 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x160 scope:local +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x60 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x10 scope:local +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x1C scope:local +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x6C scope:local +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0xC scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0xC scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x30 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x30 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E scope:local data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x1E scope:local data:string +lbl_1_data_3C = .data:0x0000003C; // type:object size:0x10 scope:local data:string lbl_1_data_50 = .data:0x00000050; // type:object size:0x80 -lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x1B data:string +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x1B scope:local data:string lbl_1_data_EC = .data:0x000000EC; // type:object size:0x30 -lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 data:string +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 scope:local data:string lbl_1_data_135 = .data:0x00000135; // type:object size:0x1 lbl_1_data_138 = .data:0x00000138; // type:object size:0x1C lbl_1_data_154 = .data:0x00000154; // type:object size:0x10 data:4byte -lbl_1_data_164 = .data:0x00000164; // type:object size:0xD data:string +lbl_1_data_164 = .data:0x00000164; // type:object size:0xD scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m421Dll/symbols.txt b/config/GMPE01_00/rels/m421Dll/symbols.txt index cb29a8cd..b2817421 100644 --- a/config/GMPE01_00/rels/m421Dll/symbols.txt +++ b/config/GMPE01_00/rels/m421Dll/symbols.txt @@ -79,157 +79,157 @@ fn_1_B398 = .text:0x0000B398; // type:function size:0x4 fn_1_B39C = .text:0x0000B39C; // type:function size:0x40 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC data:4byte -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:4byte -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x50 -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x14 data:4byte -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x10 data:4byte -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x10 data:4byte -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 data:4byte -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x30 data:4byte -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x30 data:4byte -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 data:double -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x50 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x10 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x30 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x30 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -237,13 +237,13 @@ lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float -lbl_1_data_4C = .data:0x0000004C; // type:object size:0x24 -lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x24 data:float +lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 data:float lbl_1_data_94 = .data:0x00000094; // type:object size:0xC lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x4 data:byte -lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x1A data:string -lbl_1_data_BE = .data:0x000000BE; // type:object size:0x19 data:string -lbl_1_data_D8 = .data:0x000000D8; // type:object size:0xB data:string +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x1A scope:local data:string +lbl_1_data_BE = .data:0x000000BE; // type:object size:0x19 scope:local data:string +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0xB scope:local data:string lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x20 lbl_1_data_104 = .data:0x00000104; // type:object size:0x60 lbl_1_data_164 = .data:0x00000164; // type:object size:0x20 diff --git a/config/GMPE01_00/rels/m422Dll/symbols.txt b/config/GMPE01_00/rels/m422Dll/symbols.txt index f4f38637..db300891 100644 --- a/config/GMPE01_00/rels/m422Dll/symbols.txt +++ b/config/GMPE01_00/rels/m422Dll/symbols.txt @@ -13,191 +13,191 @@ ObjectSetup = .text:0x0000B058; // type:function size:0x428 fn_1_B480 = .text:0x0000B480; // type:function size:0xAC _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x30 -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x30 -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x30 -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x30 -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x30 -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x30 -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x1C data:4byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x1C data:4byte -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0xC data:4byte -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC data:4byte -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0xC data:4byte -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0xC data:4byte -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x20 data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x60 -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:4byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x60 -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x30 data:4byte -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x34 data:4byte -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 data:double -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x8 data:double -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:double -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 data:double -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 data:double -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 data:double -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x2C data:4byte -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float -lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 data:double -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 data:double -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float -lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x28 data:4byte -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x20 data:4byte -lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:4byte -lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:4byte -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:4byte -lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x40 data:4byte -lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x40 data:4byte -lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x4 data:float -lbl_1_rodata_74C = .rodata:0x0000074C; // type:object size:0x4 data:float -lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 data:float -lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 data:float -lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 data:float -lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x8 data:double -lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 data:float -lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x10 data:4byte -lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0xC data:4byte -lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0xC data:4byte -lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 data:byte -lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 data:float -lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 data:float -lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 data:float -lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 data:float -lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x30 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x30 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x30 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x30 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x30 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x30 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x1C scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x1C scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0xC scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0xC scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x60 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x60 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x30 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 scope:local data:double +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x8 scope:local data:double +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 scope:local data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 scope:local data:double +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 scope:local data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 scope:local data:double +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 scope:local data:double +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x2C scope:local data:4byte +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 scope:local data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 scope:local data:double +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 scope:local data:double +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74C = .rodata:0x0000074C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 scope:local data:float +lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 scope:local data:float +lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 scope:local data:float +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x8 scope:local data:double +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 scope:local data:float +lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0xC scope:local data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0xC scope:local data:float +lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 scope:local data:float +lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x40 lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x20 @@ -205,29 +205,29 @@ lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x20 lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x7 lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x9 lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x1680 data:float -lbl_1_data_1770 = .data:0x00001770; // type:object size:0xF data:string -lbl_1_data_177F = .data:0x0000177F; // type:object size:0x10 data:string -lbl_1_data_178F = .data:0x0000178F; // type:object size:0x10 data:string -lbl_1_data_179F = .data:0x0000179F; // type:object size:0xF data:string -lbl_1_data_17AE = .data:0x000017AE; // type:object size:0x10 data:string -lbl_1_data_17BE = .data:0x000017BE; // type:object size:0x10 data:string -lbl_1_data_17CE = .data:0x000017CE; // type:object size:0xF data:string -lbl_1_data_17DD = .data:0x000017DD; // type:object size:0x11 data:string -lbl_1_data_17EE = .data:0x000017EE; // type:object size:0x11 data:string -lbl_1_data_17FF = .data:0x000017FF; // type:object size:0x12 data:string -lbl_1_data_1811 = .data:0x00001811; // type:object size:0x5 data:string -lbl_1_data_1816 = .data:0x00001816; // type:object size:0x12 +lbl_1_data_1770 = .data:0x00001770; // type:object size:0xF scope:local data:string +lbl_1_data_177F = .data:0x0000177F; // type:object size:0x10 scope:local data:string +lbl_1_data_178F = .data:0x0000178F; // type:object size:0x10 scope:local data:string +lbl_1_data_179F = .data:0x0000179F; // type:object size:0xF scope:local data:string +lbl_1_data_17AE = .data:0x000017AE; // type:object size:0x10 scope:local data:string +lbl_1_data_17BE = .data:0x000017BE; // type:object size:0x10 scope:local data:string +lbl_1_data_17CE = .data:0x000017CE; // type:object size:0xF scope:local data:string +lbl_1_data_17DD = .data:0x000017DD; // type:object size:0x11 scope:local data:string +lbl_1_data_17EE = .data:0x000017EE; // type:object size:0x11 scope:local data:string +lbl_1_data_17FF = .data:0x000017FF; // type:object size:0x12 scope:local data:string +lbl_1_data_1811 = .data:0x00001811; // type:object size:0x5 scope:local data:string +lbl_1_data_1816 = .data:0x00001816; // type:object size:0x10 scope:local data:string lbl_1_data_1828 = .data:0x00001828; // type:object size:0x50 lbl_1_data_1878 = .data:0x00001878; // type:object size:0x2C lbl_1_data_18A4 = .data:0x000018A4; // type:object size:0x8 data:4byte lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x4 data:4byte lbl_1_data_18B0 = .data:0x000018B0; // type:object size:0x4 data:4byte -lbl_1_data_18B4 = .data:0x000018B4; // type:object size:0x40 -lbl_1_data_18F4 = .data:0x000018F4; // type:object size:0xC data:4byte +lbl_1_data_18B4 = .data:0x000018B4; // type:object size:0x40 data:float +lbl_1_data_18F4 = .data:0x000018F4; // type:object size:0x8 data:4byte lbl_1_data_1900 = .data:0x00001900; // type:object size:0x4 data:4byte -lbl_1_data_1904 = .data:0x00001904; // type:object size:0x1B data:string -lbl_1_data_191F = .data:0x0000191F; // type:object size:0x19 data:string -lbl_1_data_1938 = .data:0x00001938; // type:object size:0x24 data:string +lbl_1_data_1904 = .data:0x00001904; // type:object size:0x1B scope:local data:string +lbl_1_data_191F = .data:0x0000191F; // type:object size:0x19 scope:local data:string +lbl_1_data_1938 = .data:0x00001938; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float diff --git a/config/GMPE01_00/rels/m423Dll/symbols.txt b/config/GMPE01_00/rels/m423Dll/symbols.txt index bd1d1367..ddeb5a66 100644 --- a/config/GMPE01_00/rels/m423Dll/symbols.txt +++ b/config/GMPE01_00/rels/m423Dll/symbols.txt @@ -103,234 +103,234 @@ fn_1_1367C = .text:0x0001367C; // type:function size:0x148 fn_1_137C4 = .text:0x000137C4; // type:function size:0x78C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x1 data:byte -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float -lbl_1_data_38 = .data:0x00000038; // type:object size:0x118 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x118 data:float lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 data:float lbl_1_data_180 = .data:0x00000180; // type:object size:0x30 data:float -lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x24 -lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xC -lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0xC -lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xC -lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 -lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC -lbl_1_data_228 = .data:0x00000228; // type:object size:0xC +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x24 data:float +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xC data:float +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0xC data:float +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xC data:float +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x23 scope:local data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC data:float +lbl_1_data_228 = .data:0x00000228; // type:object size:0xC data:float lbl_1_data_234 = .data:0x00000234; // type:object size:0x4 lbl_1_data_238 = .data:0x00000238; // type:object size:0x18 lbl_1_data_250 = .data:0x00000250; // type:object size:0x18 jumptable_1_data_268 = .data:0x00000268; // type:object size:0x30 scope:local -lbl_1_data_298 = .data:0x00000298; // type:object size:0x1 data:byte -lbl_1_data_29C = .data:0x0000029C; // type:object size:0x30 -lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x20 -lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x20 -lbl_1_data_30C = .data:0x0000030C; // type:object size:0x4 -lbl_1_data_310 = .data:0x00000310; // type:object size:0x1 data:byte +lbl_1_data_298 = .data:0x00000298; // type:object size:0x4 data:byte +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x30 data:float +lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x20 data:float +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x20 data:float +lbl_1_data_30C = .data:0x0000030C; // type:object size:0x4 data:byte +lbl_1_data_310 = .data:0x00000310; // type:object size:0x4 data:byte lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 data:4byte -lbl_1_data_334 = .data:0x00000334; // type:object size:0x30 -lbl_1_data_364 = .data:0x00000364; // type:object size:0x24 +lbl_1_data_334 = .data:0x00000334; // type:object size:0x30 data:float +lbl_1_data_364 = .data:0x00000364; // type:object size:0x24 data:float lbl_1_data_388 = .data:0x00000388; // type:object size:0x4 data:byte -lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1F data:string +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1F scope:local data:string lbl_1_data_3AB = .data:0x000003AB; // type:object size:0x4 data:byte lbl_1_data_3AF = .data:0x000003AF; // type:object size:0x4 data:byte lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x4 data:byte -lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0xF0 +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0xF0 data:float lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0x54 lbl_1_data_4FC = .data:0x000004FC; // type:object size:0xC lbl_1_data_508 = .data:0x00000508; // type:object size:0x18 -lbl_1_data_520 = .data:0x00000520; // type:object size:0x6 +lbl_1_data_520 = .data:0x00000520; // type:object size:0x6 data:2byte lbl_1_data_526 = .data:0x00000526; // type:object size:0x6 lbl_1_data_52C = .data:0x0000052C; // type:object size:0x8 lbl_1_data_534 = .data:0x00000534; // type:object size:0x40 lbl_1_data_574 = .data:0x00000574; // type:object size:0xC lbl_1_data_580 = .data:0x00000580; // type:object size:0x58 lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x10 -lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0xC data:4byte -lbl_1_data_5F4 = .data:0x000005F4; // type:object size:0x1 data:byte -lbl_1_data_5F8 = .data:0x000005F8; // type:object size:0x1 data:byte +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0xC data:float +lbl_1_data_5F4 = .data:0x000005F4; // type:object size:0x4 data:byte +lbl_1_data_5F8 = .data:0x000005F8; // type:object size:0x4 data:byte jumptable_1_data_5FC = .data:0x000005FC; // type:object size:0x34 scope:local -lbl_1_data_630 = .data:0x00000630; // type:object size:0x1 data:byte +lbl_1_data_630 = .data:0x00000630; // type:object size:0x4 data:byte jumptable_1_data_634 = .data:0x00000634; // type:object size:0x34 scope:local lbl_1_data_668 = .data:0x00000668; // type:object size:0x10 -lbl_1_data_678 = .data:0x00000678; // type:object size:0x10 +lbl_1_data_678 = .data:0x00000678; // type:object size:0x10 data:float lbl_1_data_688 = .data:0x00000688; // type:object size:0x20 lbl_1_data_6A8 = .data:0x000006A8; // type:object size:0x20 data:4byte lbl_1_data_6C8 = .data:0x000006C8; // type:object size:0x10 -lbl_1_data_6D8 = .data:0x000006D8; // type:object size:0x20 +lbl_1_data_6D8 = .data:0x000006D8; // type:object size:0x20 data:float lbl_1_data_6F8 = .data:0x000006F8; // type:object size:0x20 lbl_1_data_718 = .data:0x00000718; // type:object size:0x20 lbl_1_data_738 = .data:0x00000738; // type:object size:0x20 -lbl_1_data_758 = .data:0x00000758; // type:object size:0x1 data:byte -lbl_1_data_75C = .data:0x0000075C; // type:object size:0x48 +lbl_1_data_758 = .data:0x00000758; // type:object size:0x4 data:byte +lbl_1_data_75C = .data:0x0000075C; // type:object size:0x48 data:2byte jumptable_1_data_7A4 = .data:0x000007A4; // type:object size:0x20 scope:local lbl_1_data_7C4 = .data:0x000007C4; // type:object size:0x18 jumptable_1_data_7DC = .data:0x000007DC; // type:object size:0x20 scope:local -lbl_1_data_7FC = .data:0x000007FC; // type:object size:0x20 +lbl_1_data_7FC = .data:0x000007FC; // type:object size:0x20 data:byte lbl_1_data_81C = .data:0x0000081C; // type:object size:0x20 -lbl_1_data_83C = .data:0x0000083C; // type:object size:0x8 -lbl_1_data_844 = .data:0x00000844; // type:object size:0x60 -lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x20 -lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0x30 -lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x20 +lbl_1_data_83C = .data:0x0000083C; // type:object size:0x8 data:2byte +lbl_1_data_844 = .data:0x00000844; // type:object size:0x60 data:2byte +lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x20 data:float +lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0x30 data:float +lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x20 data:float lbl_1_data_914 = .data:0x00000914; // type:object size:0x6 data:byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x3C data:4byte @@ -359,7 +359,7 @@ lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x10 data:4byte lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte -lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x8 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x4 data:4byte lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:4byte lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:4byte lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m424Dll/splits.txt b/config/GMPE01_00/rels/m424Dll/splits.txt index 464ddcb7..8a0d8259 100644 --- a/config/GMPE01_00/rels/m424Dll/splits.txt +++ b/config/GMPE01_00/rels/m424Dll/splits.txt @@ -12,12 +12,13 @@ REL/executor.c: REL/m424Dll/main.c: .text start:0x000000A0 end:0x00001AB8 .rodata start:0x00000000 end:0x00000090 - .data start:0x00000000 end:0x00000150 + .data start:0x00000000 end:0x000000E0 .bss start:0x00000000 end:0x00000050 REL/m424Dll/map.c: .text start:0x00001AB8 end:0x00002720 .rodata start:0x00000090 end:0x000000F8 + .data start:0x000000E0 end:0x00000150 .bss start:0x00000050 end:0x00000058 REL/m424Dll/ball.c: diff --git a/config/GMPE01_00/rels/m424Dll/symbols.txt b/config/GMPE01_00/rels/m424Dll/symbols.txt index 987485bc..8320af0c 100644 --- a/config/GMPE01_00/rels/m424Dll/symbols.txt +++ b/config/GMPE01_00/rels/m424Dll/symbols.txt @@ -97,168 +97,168 @@ fn_1_CF80 = .text:0x0000CF80; // type:function size:0x90 fn_1_D010 = .text:0x0000D010; // type:function size:0x64 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC data:4byte -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float lbl_1_data_54 = .data:0x00000054; // type:object size:0xC lbl_1_data_60 = .data:0x00000060; // type:object size:0xC lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC -lbl_1_data_78 = .data:0x00000078; // type:object size:0x23 data:string +lbl_1_data_78 = .data:0x00000078; // type:object size:0x23 scope:local data:string lbl_1_data_9C = .data:0x0000009C; // type:object size:0xC lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xC lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4 @@ -266,8 +266,11 @@ jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x28 scope:local lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC lbl_1_data_EC = .data:0x000000EC; // type:object size:0xC lbl_1_data_F8 = .data:0x000000F8; // type:object size:0xC -lbl_1_data_104 = .data:0x00000104; // type:object size:0x7 data:string -lbl_1_data_10C = .data:0x0000010C; // type:object size:0x44 +lbl_1_data_104 = .data:0x00000104; // type:object size:0x7 scope:local data:string +lbl_1_data_10C = .data:0x0000010C; // type:object size:0x1C +lbl_1_data_128 = .data:0x00000128; // type:object size:0x4 data:byte +lbl_1_data_12C = .data:0x0000012C; // type:object size:0x1C +lbl_1_data_148 = .data:0x00000148; // type:object size:0x8 lbl_1_data_150 = .data:0x00000150; // type:object size:0x2C lbl_1_data_17C = .data:0x0000017C; // type:object size:0x30 jumptable_1_data_1AC = .data:0x000001AC; // type:object size:0x2C scope:local @@ -278,15 +281,16 @@ lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC0 lbl_1_data_2DC = .data:0x000002DC; // type:object size:0xC lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x24 lbl_1_data_30C = .data:0x0000030C; // type:object size:0xC data:4byte -lbl_1_data_318 = .data:0x00000318; // type:object size:0x6 data:string -lbl_1_data_31E = .data:0x0000031E; // type:object size:0x6 data:string -lbl_1_data_324 = .data:0x00000324; // type:object size:0x6 data:string +lbl_1_data_318 = .data:0x00000318; // type:object size:0x6 scope:local data:string +lbl_1_data_31E = .data:0x0000031E; // type:object size:0x6 scope:local data:string +lbl_1_data_324 = .data:0x00000324; // type:object size:0x6 scope:local data:string jumptable_1_data_32C = .data:0x0000032C; // type:object size:0x40 scope:local lbl_1_data_36C = .data:0x0000036C; // type:object size:0x20 lbl_1_data_38C = .data:0x0000038C; // type:object size:0x20 -lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x19 data:string -lbl_1_data_3C5 = .data:0x000003C5; // type:object size:0x5 data:string -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x19 scope:local data:string +lbl_1_data_3C5 = .data:0x000003C5; // type:object size:0x5 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 scope:local data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte @@ -295,7 +299,8 @@ lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:2byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x8 data:2byte lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte @@ -312,6 +317,7 @@ lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x80 data:4byte lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 data:4byte lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x4 data:4byte lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:4byte -lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0xC data:4byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0x4 data:4byte +lbl_1_bss_6D0 = .bss:0x000006D0; // type:object size:0x8 data:4byte lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m425Dll/symbols.txt b/config/GMPE01_00/rels/m425Dll/symbols.txt index cae3368f..627df9e1 100644 --- a/config/GMPE01_00/rels/m425Dll/symbols.txt +++ b/config/GMPE01_00/rels/m425Dll/symbols.txt @@ -65,211 +65,212 @@ fn_1_11A74 = .text:0x00011A74; // type:function size:0x46C fn_1_11EE0 = .text:0x00011EE0; // type:function size:0x7B4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 data:4byte -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC0 -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x10 data:4byte -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x10 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x20 data:4byte -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC0 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x20 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 scope:local data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte lbl_1_data_4 = .data:0x00000004; // type:object size:0xC lbl_1_data_10 = .data:0x00000010; // type:object size:0xC -lbl_1_data_1C = .data:0x0000001C; // type:object size:0x24 +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x24 data:float lbl_1_data_40 = .data:0x00000040; // type:object size:0x4 -lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 data:string +lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 scope:local data:string lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte lbl_1_data_6C = .data:0x0000006C; // type:object size:0x28 lbl_1_data_94 = .data:0x00000094; // type:object size:0x30 jumptable_1_data_C4 = .data:0x000000C4; // type:object size:0x28 scope:local jumptable_1_data_EC = .data:0x000000EC; // type:object size:0x28 scope:local lbl_1_data_114 = .data:0x00000114; // type:object size:0x4 data:4byte -lbl_1_data_118 = .data:0x00000118; // type:object size:0x18 -lbl_1_data_130 = .data:0x00000130; // type:object size:0x1F data:string +lbl_1_data_118 = .data:0x00000118; // type:object size:0x18 data:float +lbl_1_data_130 = .data:0x00000130; // type:object size:0x1F scope:local data:string lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 lbl_1_data_168 = .data:0x00000168; // type:object size:0x4 data:byte -lbl_1_data_16C = .data:0x0000016C; // type:object size:0x30 -lbl_1_data_19C = .data:0x0000019C; // type:object size:0x30 +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x30 data:float +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x30 data:float lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x20 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float @@ -287,7 +288,7 @@ lbl_1_bss_668 = .bss:0x00000668; // type:object size:0x4 data:4byte lbl_1_bss_670 = .bss:0x00000670; // type:object size:0xC data:float lbl_1_bss_67C = .bss:0x0000067C; // type:object size:0xC data:float lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x40 -lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x1 data:byte +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:byte lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0x4 data:4byte lbl_1_bss_6D0 = .bss:0x000006D0; // type:object size:0x1 data:byte lbl_1_bss_6D4 = .bss:0x000006D4; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m426Dll/symbols.txt b/config/GMPE01_00/rels/m426Dll/symbols.txt index 76e8528e..e85de3cf 100644 --- a/config/GMPE01_00/rels/m426Dll/symbols.txt +++ b/config/GMPE01_00/rels/m426Dll/symbols.txt @@ -197,7 +197,7 @@ jumptable_1_data_330 = .data:0x00000330; // type:object size:0x1C scope:local jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x1C scope:local lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x1 data:byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float diff --git a/config/GMPE01_00/rels/m427Dll/symbols.txt b/config/GMPE01_00/rels/m427Dll/symbols.txt index a8b25f76..96db2763 100644 --- a/config/GMPE01_00/rels/m427Dll/symbols.txt +++ b/config/GMPE01_00/rels/m427Dll/symbols.txt @@ -144,217 +144,217 @@ fn_1_172F0 = .text:0x000172F0; // type:function size:0x140 fn_1_17430 = .text:0x00017430; // type:function size:0xA4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:2byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x3C data:4byte -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x6 data:2byte -lbl_1_rodata_136 = .rodata:0x00000136; // type:object size:0xC data:2byte -lbl_1_rodata_142 = .rodata:0x00000142; // type:object size:0x1A data:2byte -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x24 data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x30 data:4byte -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x10 data:4byte -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0xC data:4byte -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0xC data:4byte -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x1 data:byte -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:byte -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:byte -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x2 data:byte -lbl_1_rodata_38A = .rodata:0x0000038A; // type:object size:0x2 data:byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:double -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_136 = .rodata:0x00000136; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_142 = .rodata:0x00000142; // type:object size:0x1A scope:local data:2byte +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0xC scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x2 scope:local data:byte +lbl_1_rodata_38A = .rodata:0x0000038A; // type:object size:0x2 scope:local data:byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:float -lbl_1_data_70 = .data:0x00000070; // type:object size:0x23 data:string +lbl_1_data_70 = .data:0x00000070; // type:object size:0x23 scope:local data:string jumptable_1_data_94 = .data:0x00000094; // type:object size:0x3C scope:local lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x8 lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x4 lbl_1_data_DC = .data:0x000000DC; // type:object size:0x4 lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x4 data:2byte -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:2byte -lbl_1_data_EC = .data:0x000000EC; // type:object size:0x5 data:string +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x5 scope:local data:string lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x4 data:float lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x4 data:float lbl_1_data_FC = .data:0x000000FC; // type:object size:0x30 @@ -365,18 +365,19 @@ lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0x8 lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x8 lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x4 -lbl_1_data_1F0 = .data:0x000001F0; // type:object size:0x13 data:string -lbl_1_data_203 = .data:0x00000203; // type:object size:0x10 data:string -lbl_1_data_213 = .data:0x00000213; // type:object size:0x26 data:string -lbl_1_data_239 = .data:0x00000239; // type:object size:0x25 +lbl_1_data_1F0 = .data:0x000001F0; // type:object size:0x13 scope:local data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0x10 scope:local data:string +lbl_1_data_213 = .data:0x00000213; // type:object size:0x26 scope:local data:string +lbl_1_data_239 = .data:0x00000239; // type:object size:0x24 scope:local data:string lbl_1_data_260 = .data:0x00000260; // type:object size:0x15C -lbl_1_data_3BC = .data:0x000003BC; // type:object size:0x178 +lbl_1_data_3BC = .data:0x000003BC; // type:object size:0x15C +lbl_1_data_518 = .data:0x00000518; // type:object size:0x1C lbl_1_data_534 = .data:0x00000534; // type:object size:0x18 lbl_1_data_54C = .data:0x0000054C; // type:object size:0x18 data:float lbl_1_data_564 = .data:0x00000564; // type:object size:0xC data:float lbl_1_data_570 = .data:0x00000570; // type:object size:0xC data:float lbl_1_data_57C = .data:0x0000057C; // type:object size:0x4 -lbl_1_data_580 = .data:0x00000580; // type:object size:0xE data:string +lbl_1_data_580 = .data:0x00000580; // type:object size:0xE scope:local data:string lbl_1_data_590 = .data:0x00000590; // type:object size:0x1C lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x1C lbl_1_data_5C8 = .data:0x000005C8; // type:object size:0x8 diff --git a/config/GMPE01_00/rels/m428Dll/splits.txt b/config/GMPE01_00/rels/m428Dll/splits.txt index 03f22ea9..3a44b731 100644 --- a/config/GMPE01_00/rels/m428Dll/splits.txt +++ b/config/GMPE01_00/rels/m428Dll/splits.txt @@ -10,13 +10,13 @@ REL/executor.c: .text start:0x00000000 end:0x000000A0 REL/m428Dll/main.c: - .text start:0x000000A0 end:0x000040A4 + .text start:0x000000A0 end:0x000043C8 .rodata start:0x00000000 end:0x000000D8 .data start:0x00000000 end:0x00000130 .bss start:0x00000000 end:0x00000090 REL/m428Dll/map.c: - .text start:0x000040A4 end:0x00009F5C + .text start:0x000043C8 end:0x00009F5C .rodata start:0x000000D8 end:0x00000228 .data start:0x00000130 end:0x00000150 .bss start:0x00000090 end:0x00000130 diff --git a/config/GMPE01_00/rels/m428Dll/symbols.txt b/config/GMPE01_00/rels/m428Dll/symbols.txt index eef0a9df..5f9d1250 100644 --- a/config/GMPE01_00/rels/m428Dll/symbols.txt +++ b/config/GMPE01_00/rels/m428Dll/symbols.txt @@ -124,222 +124,222 @@ fn_1_14560 = .text:0x00014560; // type:function size:0x98 fn_1_145F8 = .text:0x000145F8; // type:function size:0x98 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float lbl_1_data_54 = .data:0x00000054; // type:object size:0xC lbl_1_data_60 = .data:0x00000060; // type:object size:0xC lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC -lbl_1_data_78 = .data:0x00000078; // type:object size:0x23 data:string +lbl_1_data_78 = .data:0x00000078; // type:object size:0x23 scope:local data:string lbl_1_data_9C = .data:0x0000009C; // type:object size:0xC lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xC lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4 jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:byte -lbl_1_data_EC = .data:0x000000EC; // type:object size:0x44 data:byte -lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 -lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x44 data:4byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 scope:local data:string +lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 scope:local data:string lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 data:4byte lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 data:float lbl_1_data_180 = .data:0x00000180; // type:object size:0x30 @@ -351,18 +351,19 @@ lbl_1_data_500 = .data:0x00000500; // type:object size:0x60 lbl_1_data_560 = .data:0x00000560; // type:object size:0x80 lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0x60 lbl_1_data_640 = .data:0x00000640; // type:object size:0x10 -lbl_1_data_650 = .data:0x00000650; // type:object size:0x1 data:byte -lbl_1_data_654 = .data:0x00000654; // type:object size:0x1 data:byte -lbl_1_data_658 = .data:0x00000658; // type:object size:0x14 +lbl_1_data_650 = .data:0x00000650; // type:object size:0x4 data:byte +lbl_1_data_654 = .data:0x00000654; // type:object size:0x4 data:byte +lbl_1_data_658 = .data:0x00000658; // type:object size:0x14 scope:local data:string jumptable_1_data_66C = .data:0x0000066C; // type:object size:0x28 scope:local lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 lbl_1_data_69C = .data:0x0000069C; // type:object size:0x4 -lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x2 data:2byte +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x4 data:2byte lbl_1_data_6A4 = .data:0x000006A4; // type:object size:0x30 lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x20 -lbl_1_data_6F4 = .data:0x000006F4; // type:object size:0x19 data:string -lbl_1_data_70D = .data:0x0000070D; // type:object size:0x5 data:string -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:4byte +lbl_1_data_6F4 = .data:0x000006F4; // type:object size:0x19 scope:local data:string +lbl_1_data_70D = .data:0x0000070D; // type:object size:0x5 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m430Dll/symbols.txt b/config/GMPE01_00/rels/m430Dll/symbols.txt index b27b88e7..50779d4f 100644 --- a/config/GMPE01_00/rels/m430Dll/symbols.txt +++ b/config/GMPE01_00/rels/m430Dll/symbols.txt @@ -115,313 +115,313 @@ fn_1_133A4 = .text:0x000133A4; // type:function size:0x38 fn_1_133DC = .text:0x000133DC; // type:function size:0xB4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:4byte -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:4byte -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 data:4byte -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x10 data:4byte -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:4byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x18 data:4byte -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:4byte -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0xC data:4byte -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC data:4byte -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0xC data:4byte -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC data:4byte -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x18 data:4byte -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 data:4byte -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x8 data:4byte -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x8 data:4byte -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x20 data:4byte -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x14 data:4byte -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x10 data:4byte -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x10 data:4byte -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x1 data:byte -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x1 data:byte -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x1 data:byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x1 data:byte -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x1 data:byte -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x1 data:byte -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x1 data:byte -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x1 data:byte -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x1 data:byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:4byte -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC data:4byte -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:double -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 data:double -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:double -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 data:double -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float -lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 data:float -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float -lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:double -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float -lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 data:float -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float -lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float -lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 data:double -lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 data:double -lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float -lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x8 data:double -lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double -lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x8 data:double -lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 data:double -lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float -lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float -lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:double -lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x4 data:float -lbl_1_rodata_6BC = .rodata:0x000006BC; // type:object size:0x4 data:float -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:double -lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double -lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x8 data:double -lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float -lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float -lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0xC scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0xC scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x18 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 scope:local data:double +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:double +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:double +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 scope:local data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 scope:local data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 scope:local data:double +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 scope:local data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 scope:local data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 scope:local data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 scope:local data:double +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 scope:local data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 scope:local data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x8 scope:local data:double +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 scope:local data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 scope:local data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6BC = .rodata:0x000006BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -429,12 +429,12 @@ lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float -lbl_1_data_50 = .data:0x00000050; // type:object size:0x7 data:string -lbl_1_data_57 = .data:0x00000057; // type:object size:0x7 data:string -lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 +lbl_1_data_50 = .data:0x00000050; // type:object size:0x7 scope:local data:string +lbl_1_data_57 = .data:0x00000057; // type:object size:0x7 scope:local data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 data:float lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x18 -lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x60 -lbl_1_data_120 = .data:0x00000120; // type:object size:0x48 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x60 data:float +lbl_1_data_120 = .data:0x00000120; // type:object size:0x48 data:float lbl_1_data_168 = .data:0x00000168; // type:object size:0x8 lbl_1_data_170 = .data:0x00000170; // type:object size:0x38 lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x20 @@ -445,7 +445,7 @@ lbl_1_data_258 = .data:0x00000258; // type:object size:0x20 lbl_1_data_278 = .data:0x00000278; // type:object size:0x8 lbl_1_data_280 = .data:0x00000280; // type:object size:0x8 lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 -lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x12 scope:local data:string lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x8 lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x54 lbl_1_data_300 = .data:0x00000300; // type:object size:0x8 data:4byte @@ -461,7 +461,7 @@ lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x2 data:2byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte -lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x6 data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m432Dll/symbols.txt b/config/GMPE01_00/rels/m432Dll/symbols.txt index 75ff4704..c01d6777 100644 --- a/config/GMPE01_00/rels/m432Dll/symbols.txt +++ b/config/GMPE01_00/rels/m432Dll/symbols.txt @@ -101,138 +101,138 @@ fn_1_128C8 = .text:0x000128C8; // type:function size:0x5E0 fn_1_12EA8 = .text:0x00012EA8; // type:function size:0x300 fn_1_131A8 = .text:0x000131A8; // type:function size:0x2178 fn_1_15320 = .text:0x00015320; // type:function size:0x9C -fn_1_153BC = .text:0x000153BC; // type:function size:0xDA0 +ObjectSetup = .text:0x000153BC; // type:function size:0xDA0 fn_1_1615C = .text:0x0001615C; // type:function size:0x104 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x20 data:float lbl_1_data_C8 = .data:0x000000C8; // type:object size:0xC @@ -250,81 +250,81 @@ lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x24 lbl_1_data_318 = .data:0x00000318; // type:object size:0x3C lbl_1_data_354 = .data:0x00000354; // type:object size:0x18 lbl_1_data_36C = .data:0x0000036C; // type:object size:0x18 -lbl_1_data_384 = .data:0x00000384; // type:object size:0xB data:string -lbl_1_data_38F = .data:0x0000038F; // type:object size:0xB data:string -lbl_1_data_39A = .data:0x0000039A; // type:object size:0xB data:string -lbl_1_data_3A5 = .data:0x000003A5; // type:object size:0xB data:string -lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0xB data:string -lbl_1_data_3BB = .data:0x000003BB; // type:object size:0xB data:string -lbl_1_data_3C6 = .data:0x000003C6; // type:object size:0xB data:string -lbl_1_data_3D1 = .data:0x000003D1; // type:object size:0xB data:string +lbl_1_data_384 = .data:0x00000384; // type:object size:0xB scope:local data:string +lbl_1_data_38F = .data:0x0000038F; // type:object size:0xB scope:local data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0xB scope:local data:string +lbl_1_data_3A5 = .data:0x000003A5; // type:object size:0xB scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0xB scope:local data:string +lbl_1_data_3BB = .data:0x000003BB; // type:object size:0xB scope:local data:string +lbl_1_data_3C6 = .data:0x000003C6; // type:object size:0xB scope:local data:string +lbl_1_data_3D1 = .data:0x000003D1; // type:object size:0xB scope:local data:string lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x20 -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0xB data:string -lbl_1_data_407 = .data:0x00000407; // type:object size:0xB data:string -lbl_1_data_412 = .data:0x00000412; // type:object size:0xB data:string -lbl_1_data_41D = .data:0x0000041D; // type:object size:0xB data:string -lbl_1_data_428 = .data:0x00000428; // type:object size:0xB data:string -lbl_1_data_433 = .data:0x00000433; // type:object size:0xD +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0xB scope:local data:string +lbl_1_data_407 = .data:0x00000407; // type:object size:0xB scope:local data:string +lbl_1_data_412 = .data:0x00000412; // type:object size:0xB scope:local data:string +lbl_1_data_41D = .data:0x0000041D; // type:object size:0xB scope:local data:string +lbl_1_data_428 = .data:0x00000428; // type:object size:0xB scope:local data:string +lbl_1_data_433 = .data:0x00000433; // type:object size:0xB scope:local data:string lbl_1_data_440 = .data:0x00000440; // type:object size:0x18 data:4byte -lbl_1_data_458 = .data:0x00000458; // type:object size:0xB data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0xB data:string -lbl_1_data_46E = .data:0x0000046E; // type:object size:0xB data:string -lbl_1_data_479 = .data:0x00000479; // type:object size:0xB data:string -lbl_1_data_484 = .data:0x00000484; // type:object size:0xB data:string -lbl_1_data_48F = .data:0x0000048F; // type:object size:0xB data:string -lbl_1_data_49A = .data:0x0000049A; // type:object size:0xB data:string -lbl_1_data_4A5 = .data:0x000004A5; // type:object size:0xB data:string -lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0xB data:string -lbl_1_data_4BB = .data:0x000004BB; // type:object size:0xD +lbl_1_data_458 = .data:0x00000458; // type:object size:0xB scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0xB scope:local data:string +lbl_1_data_46E = .data:0x0000046E; // type:object size:0xB scope:local data:string +lbl_1_data_479 = .data:0x00000479; // type:object size:0xB scope:local data:string +lbl_1_data_484 = .data:0x00000484; // type:object size:0xB scope:local data:string +lbl_1_data_48F = .data:0x0000048F; // type:object size:0xB scope:local data:string +lbl_1_data_49A = .data:0x0000049A; // type:object size:0xB scope:local data:string +lbl_1_data_4A5 = .data:0x000004A5; // type:object size:0xB scope:local data:string +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0xB scope:local data:string +lbl_1_data_4BB = .data:0x000004BB; // type:object size:0xB scope:local data:string lbl_1_data_4C8 = .data:0x000004C8; // type:object size:0x28 data:4byte -lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x14 -lbl_1_data_504 = .data:0x00000504; // type:object size:0x24 +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x14 data:byte +lbl_1_data_504 = .data:0x00000504; // type:object size:0x24 data:byte lbl_1_data_528 = .data:0x00000528; // type:object size:0x8 -lbl_1_data_530 = .data:0x00000530; // type:object size:0xB data:string -lbl_1_data_53B = .data:0x0000053B; // type:object size:0xB data:string -lbl_1_data_546 = .data:0x00000546; // type:object size:0xB data:string -lbl_1_data_551 = .data:0x00000551; // type:object size:0xB data:string -lbl_1_data_55C = .data:0x0000055C; // type:object size:0xB data:string -lbl_1_data_567 = .data:0x00000567; // type:object size:0xB data:string -lbl_1_data_572 = .data:0x00000572; // type:object size:0xB data:string -lbl_1_data_57D = .data:0x0000057D; // type:object size:0xB data:string -lbl_1_data_588 = .data:0x00000588; // type:object size:0xB data:string -lbl_1_data_593 = .data:0x00000593; // type:object size:0xB data:string -lbl_1_data_59E = .data:0x0000059E; // type:object size:0xB data:string -lbl_1_data_5A9 = .data:0x000005A9; // type:object size:0xB data:string -lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0xB data:string -lbl_1_data_5BF = .data:0x000005BF; // type:object size:0xB data:string -lbl_1_data_5CA = .data:0x000005CA; // type:object size:0xB data:string -lbl_1_data_5D5 = .data:0x000005D5; // type:object size:0xB data:string -lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0xB data:string +lbl_1_data_530 = .data:0x00000530; // type:object size:0xB scope:local data:string +lbl_1_data_53B = .data:0x0000053B; // type:object size:0xB scope:local data:string +lbl_1_data_546 = .data:0x00000546; // type:object size:0xB scope:local data:string +lbl_1_data_551 = .data:0x00000551; // type:object size:0xB scope:local data:string +lbl_1_data_55C = .data:0x0000055C; // type:object size:0xB scope:local data:string +lbl_1_data_567 = .data:0x00000567; // type:object size:0xB scope:local data:string +lbl_1_data_572 = .data:0x00000572; // type:object size:0xB scope:local data:string +lbl_1_data_57D = .data:0x0000057D; // type:object size:0xB scope:local data:string +lbl_1_data_588 = .data:0x00000588; // type:object size:0xB scope:local data:string +lbl_1_data_593 = .data:0x00000593; // type:object size:0xB scope:local data:string +lbl_1_data_59E = .data:0x0000059E; // type:object size:0xB scope:local data:string +lbl_1_data_5A9 = .data:0x000005A9; // type:object size:0xB scope:local data:string +lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0xB scope:local data:string +lbl_1_data_5BF = .data:0x000005BF; // type:object size:0xB scope:local data:string +lbl_1_data_5CA = .data:0x000005CA; // type:object size:0xB scope:local data:string +lbl_1_data_5D5 = .data:0x000005D5; // type:object size:0xB scope:local data:string +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0xB scope:local data:string lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x8B8 -lbl_1_data_EA4 = .data:0x00000EA4; // type:object size:0xB data:string -lbl_1_data_EAF = .data:0x00000EAF; // type:object size:0xB data:string -lbl_1_data_EBA = .data:0x00000EBA; // type:object size:0xB data:string -lbl_1_data_EC5 = .data:0x00000EC5; // type:object size:0xB data:string -lbl_1_data_ED0 = .data:0x00000ED0; // type:object size:0xC +lbl_1_data_EA4 = .data:0x00000EA4; // type:object size:0xB scope:local data:string +lbl_1_data_EAF = .data:0x00000EAF; // type:object size:0xB scope:local data:string +lbl_1_data_EBA = .data:0x00000EBA; // type:object size:0xB scope:local data:string +lbl_1_data_EC5 = .data:0x00000EC5; // type:object size:0xB scope:local data:string +lbl_1_data_ED0 = .data:0x00000ED0; // type:object size:0xB scope:local data:string lbl_1_data_EDC = .data:0x00000EDC; // type:object size:0x8B8 lbl_1_data_1794 = .data:0x00001794; // type:object size:0x20 lbl_1_data_17B4 = .data:0x000017B4; // type:object size:0x20 lbl_1_data_17D4 = .data:0x000017D4; // type:object size:0x20 data:float lbl_1_data_17F4 = .data:0x000017F4; // type:object size:0x20 lbl_1_data_1814 = .data:0x00001814; // type:object size:0x50 -lbl_1_data_1864 = .data:0x00001864; // type:object size:0x11 data:string -lbl_1_data_1875 = .data:0x00001875; // type:object size:0x11 data:string -lbl_1_data_1886 = .data:0x00001886; // type:object size:0x11 data:string -lbl_1_data_1897 = .data:0x00001897; // type:object size:0x18 data:string -lbl_1_data_18AF = .data:0x000018AF; // type:object size:0xB data:string -lbl_1_data_18BA = .data:0x000018BA; // type:object size:0x18 data:string -lbl_1_data_18D2 = .data:0x000018D2; // type:object size:0xC data:string -lbl_1_data_18DE = .data:0x000018DE; // type:object size:0x6 data:string -lbl_1_data_18E4 = .data:0x000018E4; // type:object size:0x21 data:string -lbl_1_data_1905 = .data:0x00001905; // type:object size:0x1F +lbl_1_data_1864 = .data:0x00001864; // type:object size:0x11 scope:local data:string +lbl_1_data_1875 = .data:0x00001875; // type:object size:0x11 scope:local data:string +lbl_1_data_1886 = .data:0x00001886; // type:object size:0x11 scope:local data:string +lbl_1_data_1897 = .data:0x00001897; // type:object size:0x18 scope:local data:string +lbl_1_data_18AF = .data:0x000018AF; // type:object size:0xB scope:local data:string +lbl_1_data_18BA = .data:0x000018BA; // type:object size:0x18 scope:local data:string +lbl_1_data_18D2 = .data:0x000018D2; // type:object size:0xC scope:local data:string +lbl_1_data_18DE = .data:0x000018DE; // type:object size:0x6 scope:local data:string +lbl_1_data_18E4 = .data:0x000018E4; // type:object size:0x21 scope:local data:string +lbl_1_data_1905 = .data:0x00001905; // type:object size:0x1D scope:local data:string jumptable_1_data_1924 = .data:0x00001924; // type:object size:0x1C scope:local jumptable_1_data_1940 = .data:0x00001940; // type:object size:0x44 scope:local -lbl_1_data_1984 = .data:0x00001984; // type:object size:0xB data:string -lbl_1_data_198F = .data:0x0000198F; // type:object size:0x1D +lbl_1_data_1984 = .data:0x00001984; // type:object size:0xB scope:local data:string +lbl_1_data_198F = .data:0x0000198F; // type:object size:0x1B scope:local data:string jumptable_1_data_19AC = .data:0x000019AC; // type:object size:0x28 scope:local -lbl_1_data_19D4 = .data:0x000019D4; // type:object size:0x24 data:string +lbl_1_data_19D4 = .data:0x000019D4; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x3F0 data:float lbl_1_bss_3F0 = .bss:0x000003F0; // type:object size:0x4 data:float lbl_1_bss_3F4 = .bss:0x000003F4; // type:object size:0x4 data:4byte @@ -333,7 +333,8 @@ lbl_1_bss_3FC = .bss:0x000003FC; // type:object size:0x4 data:4byte lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x2 data:2byte lbl_1_bss_402 = .bss:0x00000402; // type:object size:0x2 data:2byte lbl_1_bss_404 = .bss:0x00000404; // type:object size:0x2 data:2byte -lbl_1_bss_408 = .bss:0x00000408; // type:object size:0x8 data:4byte +lbl_1_bss_408 = .bss:0x00000408; // type:object size:0x4 data:4byte +lbl_1_bss_40C = .bss:0x0000040C; // type:object size:0x4 data:4byte lbl_1_bss_410 = .bss:0x00000410; // type:object size:0x4 data:4byte lbl_1_bss_414 = .bss:0x00000414; // type:object size:0x4 data:4byte lbl_1_bss_418 = .bss:0x00000418; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m433Dll/symbols.txt b/config/GMPE01_00/rels/m433Dll/symbols.txt index 528cefb2..092ebc7d 100644 --- a/config/GMPE01_00/rels/m433Dll/symbols.txt +++ b/config/GMPE01_00/rels/m433Dll/symbols.txt @@ -119,287 +119,287 @@ fn_1_11098 = .text:0x00011098; // type:function size:0x98 fn_1_11130 = .text:0x00011130; // type:function size:0x1B0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x10 data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0xC0 -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x10 data:4byte -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x10 data:4byte -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 data:4byte -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 data:4byte -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 data:4byte -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 data:4byte -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 data:4byte -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 data:double -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 data:double -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:4byte -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 data:double -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x24 data:4byte -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:4byte -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:4byte -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 data:4byte -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x8 data:4byte -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:4byte -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 data:float -lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 data:float -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 data:float -lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 data:float -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float -lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float -lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float -lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float -lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 data:float -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 data:float -lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 data:float -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float -lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 data:float -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float -lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float -lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 data:float -lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 data:float -lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x4 data:float -lbl_1_rodata_674 = .rodata:0x00000674; // type:object size:0x4 data:float -lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float -lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 data:float -lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 data:float -lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 data:float -lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double -lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float -lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float -lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 data:float -lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 data:float -lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0xC0 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 scope:local data:double +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 scope:local data:float +lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 scope:local data:float +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 scope:local data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 scope:local data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 scope:local data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 scope:local data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 scope:local data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 scope:local data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 scope:local data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 scope:local data:float +lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x4 scope:local data:float +lbl_1_rodata_674 = .rodata:0x00000674; // type:object size:0x4 scope:local data:float +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 scope:local data:float +lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 scope:local data:float +lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 scope:local data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 scope:local data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 scope:local data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 scope:local data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -421,27 +421,27 @@ lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x44 lbl_1_data_208 = .data:0x00000208; // type:object size:0x44 lbl_1_data_24C = .data:0x0000024C; // type:object size:0x1A4 lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x38 -lbl_1_data_428 = .data:0x00000428; // type:object size:0x9 data:string -lbl_1_data_431 = .data:0x00000431; // type:object size:0x9 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0xB data:string -lbl_1_data_445 = .data:0x00000445; // type:object size:0xB data:string +lbl_1_data_428 = .data:0x00000428; // type:object size:0x9 scope:local data:string +lbl_1_data_431 = .data:0x00000431; // type:object size:0x9 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0xB scope:local data:string +lbl_1_data_445 = .data:0x00000445; // type:object size:0xB scope:local data:string lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 lbl_1_data_468 = .data:0x00000468; // type:object size:0x24 lbl_1_data_48C = .data:0x0000048C; // type:object size:0x48 -lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C -lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 -lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 data:string -lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 data:string -lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 data:string -lbl_1_data_590 = .data:0x00000590; // type:object size:0x15 data:string -lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x15 data:string -lbl_1_data_5BA = .data:0x000005BA; // type:object size:0x18 data:string -lbl_1_data_5D2 = .data:0x000005D2; // type:object size:0x18 data:string -lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 data:string -lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 data:string -lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 data:string -lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 data:string -lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 +lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C data:float +lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 data:float +lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 scope:local data:string +lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 scope:local data:string +lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 scope:local data:string +lbl_1_data_590 = .data:0x00000590; // type:object size:0x15 scope:local data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x15 scope:local data:string +lbl_1_data_5BA = .data:0x000005BA; // type:object size:0x18 scope:local data:string +lbl_1_data_5D2 = .data:0x000005D2; // type:object size:0x18 scope:local data:string +lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 scope:local data:string +lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 scope:local data:string +lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 scope:local data:string +lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 scope:local data:string +lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 scope:local data:string jumptable_1_data_654 = .data:0x00000654; // type:object size:0x20 scope:local lbl_1_data_674 = .data:0x00000674; // type:object size:0xC lbl_1_data_680 = .data:0x00000680; // type:object size:0x8 @@ -458,10 +458,13 @@ lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte -lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xA data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:2byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0xC data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x6F0 lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x80 diff --git a/config/GMPE01_00/rels/m434Dll/symbols.txt b/config/GMPE01_00/rels/m434Dll/symbols.txt index 63082c5e..288bd0ad 100644 --- a/config/GMPE01_00/rels/m434Dll/symbols.txt +++ b/config/GMPE01_00/rels/m434Dll/symbols.txt @@ -303,9 +303,9 @@ lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x18 lbl_1_data_1FC = .data:0x000001FC; // type:object size:0x28 lbl_1_data_224 = .data:0x00000224; // type:object size:0x90 -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 data:string -lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 data:string -lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 data:string +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 scope:local data:string +lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 scope:local data:string +lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 scope:local data:string lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0x8 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m435Dll/symbols.txt b/config/GMPE01_00/rels/m435Dll/symbols.txt index 6be340bb..9c0524b6 100644 --- a/config/GMPE01_00/rels/m435Dll/symbols.txt +++ b/config/GMPE01_00/rels/m435Dll/symbols.txt @@ -194,7 +194,7 @@ fn_1_14760 = .text:0x00014760; // type:function size:0x254 _prolog = .text:0x000149B4; // type:function size:0x54 scope:global _epilog = .text:0x00014A08; // type:function size:0x4C scope:global fn_1_14A54 = .text:0x00014A54; // type:function size:0x40C -fn_1_14E60 = .text:0x00014E60; // type:function size:0x40C +ObjectSetup = .text:0x00014E60; // type:function size:0x40C fn_1_1526C = .text:0x0001526C; // type:function size:0x28 fn_1_15294 = .text:0x00015294; // type:function size:0x40 fn_1_152D4 = .text:0x000152D4; // type:function size:0xC8 @@ -238,212 +238,212 @@ fn_1_19E50 = .text:0x00019E50; // type:function size:0x4EC fn_1_1A33C = .text:0x0001A33C; // type:function size:0x110 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:4byte -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x48 -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x20 data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x30 data:4byte -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x30 data:4byte -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x30 data:4byte -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x8 data:4byte -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x8 data:4byte -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x8 data:4byte -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x8 data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x24 data:4byte -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:4byte -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x24 data:4byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x8 data:4byte -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x8 data:4byte -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:4byte -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:4byte -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x8 data:4byte -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x8 data:4byte -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x10 data:4byte -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x8 data:4byte -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x8 data:4byte -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x8 data:4byte -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x8 data:4byte -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x30 data:4byte -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x30 data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x30 data:4byte -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 data:double -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x48 scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x30 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x30 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x10 data:string -lbl_1_data_70 = .data:0x00000070; // type:object size:0x10 data:string -lbl_1_data_80 = .data:0x00000080; // type:object size:0x10 data:string -lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 data:string -lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 data:string -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 data:string -lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x10 data:string -lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x10 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x10 scope:local data:string +lbl_1_data_70 = .data:0x00000070; // type:object size:0x10 scope:local data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0x10 scope:local data:string +lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 scope:local data:string +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 scope:local data:string +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x10 scope:local data:string +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x10 scope:local data:string lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x20 lbl_1_data_100 = .data:0x00000100; // type:object size:0x40 lbl_1_data_140 = .data:0x00000140; // type:object size:0xA0 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x4 data:4byte lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x4 data:4byte lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x4 data:4byte -lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x1B data:string -lbl_1_data_207 = .data:0x00000207; // type:object size:0x22 data:string -lbl_1_data_229 = .data:0x00000229; // type:object size:0x1A data:string -lbl_1_data_243 = .data:0x00000243; // type:object size:0x1A data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0xF +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x1B scope:local data:string +lbl_1_data_207 = .data:0x00000207; // type:object size:0x22 scope:local data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x1A scope:local data:string +lbl_1_data_243 = .data:0x00000243; // type:object size:0x1A scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0xF scope:local lbl_1_data_26C = .data:0x0000026C; // type:object size:0x4 data:4byte jumptable_1_data_270 = .data:0x00000270; // type:object size:0x54 scope:local lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x4 data:float -lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x13 data:string -lbl_1_data_2DB = .data:0x000002DB; // type:object size:0x11 +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x13 scope:local data:string +lbl_1_data_2DB = .data:0x000002DB; // type:object size:0xF scope:local data:string jumptable_1_data_2EC = .data:0x000002EC; // type:object size:0x24 scope:local jumptable_1_data_310 = .data:0x00000310; // type:object size:0x2C scope:local -lbl_1_data_33C = .data:0x0000033C; // type:object size:0xE data:string -lbl_1_data_34A = .data:0x0000034A; // type:object size:0x12 data:string -lbl_1_data_35C = .data:0x0000035C; // type:object size:0x14 +lbl_1_data_33C = .data:0x0000033C; // type:object size:0xE scope:local data:string +lbl_1_data_34A = .data:0x0000034A; // type:object size:0x12 scope:local data:string +lbl_1_data_35C = .data:0x0000035C; // type:object size:0x12 scope:local data:string jumptable_1_data_370 = .data:0x00000370; // type:object size:0x30 scope:local lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0xA8 jumptable_1_data_448 = .data:0x00000448; // type:object size:0x1C scope:local -lbl_1_data_464 = .data:0x00000464; // type:object size:0x4 +lbl_1_data_464 = .data:0x00000464; // type:object size:0x3 scope:local data:string lbl_1_data_468 = .data:0x00000468; // type:object size:0xB4 lbl_1_data_51C = .data:0x0000051C; // type:object size:0x18 jumptable_1_data_534 = .data:0x00000534; // type:object size:0x28 scope:local @@ -452,7 +452,7 @@ lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x8 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:4byte @@ -466,7 +466,7 @@ lbl_1_bss_C1C = .bss:0x00000C1C; // type:object size:0x14 data:4byte lbl_1_bss_C30 = .bss:0x00000C30; // type:object size:0x1B4 data:4byte lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x24 data:4byte lbl_1_bss_E08 = .bss:0x00000E08; // type:object size:0x80 data:4byte -lbl_1_bss_E88 = .bss:0x00000E88; // type:object size:0x4060 data:4byte +lbl_1_bss_E88 = .bss:0x00000E88; // type:object size:0x1360 data:4byte lbl_1_bss_4EE8 = .bss:0x00004EE8; // type:object size:0x20 data:4byte lbl_1_bss_4F08 = .bss:0x00004F08; // type:object size:0x8 data:4byte lbl_1_bss_4F10 = .bss:0x00004F10; // type:object size:0x38 data:4byte diff --git a/config/GMPE01_00/rels/m436Dll/symbols.txt b/config/GMPE01_00/rels/m436Dll/symbols.txt index 4e82430a..96812393 100644 --- a/config/GMPE01_00/rels/m436Dll/symbols.txt +++ b/config/GMPE01_00/rels/m436Dll/symbols.txt @@ -131,7 +131,7 @@ fn_1_10670 = .text:0x00010670; // type:function size:0x1CC _prolog = .text:0x0001083C; // type:function size:0x54 scope:global _epilog = .text:0x00010890; // type:function size:0x4C scope:global fn_1_108DC = .text:0x000108DC; // type:function size:0x410 -fn_1_10CEC = .text:0x00010CEC; // type:function size:0x410 +ObjectSetup = .text:0x00010CEC; // type:function size:0x410 fn_1_110FC = .text:0x000110FC; // type:function size:0x40 fn_1_1113C = .text:0x0001113C; // type:function size:0x28 fn_1_11164 = .text:0x00011164; // type:function size:0xC8 @@ -164,164 +164,164 @@ fn_1_14828 = .text:0x00014828; // type:function size:0x4FC fn_1_14D24 = .text:0x00014D24; // type:function size:0x78C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x3C data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x30 data:4byte -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:4byte -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:4byte -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x18 data:4byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:4byte -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:4byte -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:4byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x8 data:4byte -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0xC data:4byte -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:4byte -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:4byte -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x30 data:4byte -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x30 data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:double -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x30 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x30 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 lbl_1_data_20 = .data:0x00000020; // type:object size:0x20 lbl_1_data_40 = .data:0x00000040; // type:object size:0xA0 lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x4 data:4byte lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x4 data:4byte lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:4byte -lbl_1_data_EC = .data:0x000000EC; // type:object size:0x1B data:string -lbl_1_data_107 = .data:0x00000107; // type:object size:0x22 data:string -lbl_1_data_129 = .data:0x00000129; // type:object size:0x1A data:string -lbl_1_data_143 = .data:0x00000143; // type:object size:0x1A data:string -lbl_1_data_15D = .data:0x0000015D; // type:object size:0xF +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x1B scope:local data:string +lbl_1_data_107 = .data:0x00000107; // type:object size:0x22 scope:local data:string +lbl_1_data_129 = .data:0x00000129; // type:object size:0x1A scope:local data:string +lbl_1_data_143 = .data:0x00000143; // type:object size:0x1A scope:local data:string +lbl_1_data_15D = .data:0x0000015D; // type:object size:0xE scope:local data:string lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 data:4byte -lbl_1_data_170 = .data:0x00000170; // type:object size:0x34 -lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x14 +lbl_1_data_170 = .data:0x00000170; // type:object size:0x12 scope:local data:string +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x12 scope:local data:string jumptable_1_data_1B8 = .data:0x000001B8; // type:object size:0x30 scope:local lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x6C -lbl_1_data_254 = .data:0x00000254; // type:object size:0x18 data:float -lbl_1_data_26C = .data:0x0000026C; // type:object size:0x12 data:string -lbl_1_data_27E = .data:0x0000027E; // type:object size:0x12 data:string +lbl_1_data_254 = .data:0x00000254; // type:object size:0xC data:float +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x12 scope:local data:string +lbl_1_data_27E = .data:0x0000027E; // type:object size:0x12 scope:local data:string lbl_1_data_290 = .data:0x00000290; // type:object size:0x9C lbl_1_data_32C = .data:0x0000032C; // type:object size:0x18 jumptable_1_data_344 = .data:0x00000344; // type:object size:0x28 scope:local @@ -332,7 +332,7 @@ lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC data:float lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x30 data:float diff --git a/config/GMPE01_00/rels/m437Dll/symbols.txt b/config/GMPE01_00/rels/m437Dll/symbols.txt index 8cd64fd3..3e5eb926 100644 --- a/config/GMPE01_00/rels/m437Dll/symbols.txt +++ b/config/GMPE01_00/rels/m437Dll/symbols.txt @@ -166,7 +166,7 @@ fn_1_108A4 = .text:0x000108A4; // type:function size:0x1EC _prolog = .text:0x00010A90; // type:function size:0x54 scope:global _epilog = .text:0x00010AE4; // type:function size:0x4C scope:global fn_1_10B30 = .text:0x00010B30; // type:function size:0x40C -fn_1_10F3C = .text:0x00010F3C; // type:function size:0x40C +ObjectSetup = .text:0x00010F3C; // type:function size:0x40C fn_1_11348 = .text:0x00011348; // type:function size:0x28 fn_1_11370 = .text:0x00011370; // type:function size:0x40 fn_1_113B0 = .text:0x000113B0; // type:function size:0xC8 @@ -214,174 +214,174 @@ fn_1_164B0 = .text:0x000164B0; // type:function size:0x15C fn_1_1660C = .text:0x0001660C; // type:function size:0x190 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x48 -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:4byte -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x78 -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x78 -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC8 -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x78 -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x14 data:4byte -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x30 data:4byte -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x30 data:4byte -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:4byte -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 data:4byte -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:4byte -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:4byte -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 data:4byte -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:4byte -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 data:4byte -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:4byte -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x30 data:4byte -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x10 data:4byte -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x8 data:4byte -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0xC data:4byte -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:4byte -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:4byte -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 data:4byte -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:4byte -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0xC data:4byte -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x8 data:4byte -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x8 data:4byte -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x30 data:4byte -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x18 data:4byte -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 data:float -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 data:double -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float -lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x48 scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x78 scope:local +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x78 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC8 scope:local +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x78 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x30 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x30 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x30 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x18 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 scope:local data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0xA0 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x4 data:4byte lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x4 data:4byte lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x4 data:4byte -lbl_1_data_AC = .data:0x000000AC; // type:object size:0x1B data:string -lbl_1_data_C7 = .data:0x000000C7; // type:object size:0x22 data:string -lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x1A data:string -lbl_1_data_103 = .data:0x00000103; // type:object size:0x1A data:string -lbl_1_data_11D = .data:0x0000011D; // type:object size:0xF +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x1B scope:local data:string +lbl_1_data_C7 = .data:0x000000C7; // type:object size:0x22 scope:local data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x1A scope:local data:string +lbl_1_data_103 = .data:0x00000103; // type:object size:0x1A scope:local data:string +lbl_1_data_11D = .data:0x0000011D; // type:object size:0xE scope:local data:string lbl_1_data_12C = .data:0x0000012C; // type:object size:0x4 data:4byte -lbl_1_data_130 = .data:0x00000130; // type:object size:0x16 data:string -lbl_1_data_146 = .data:0x00000146; // type:object size:0x13 data:string -lbl_1_data_159 = .data:0x00000159; // type:object size:0xE data:string -lbl_1_data_167 = .data:0x00000167; // type:object size:0xE data:string -lbl_1_data_175 = .data:0x00000175; // type:object size:0x13 +lbl_1_data_130 = .data:0x00000130; // type:object size:0x16 scope:local data:string +lbl_1_data_146 = .data:0x00000146; // type:object size:0x13 scope:local data:string +lbl_1_data_159 = .data:0x00000159; // type:object size:0xE scope:local data:string +lbl_1_data_167 = .data:0x00000167; // type:object size:0xE scope:local data:string +lbl_1_data_175 = .data:0x00000175; // type:object size:0x12 scope:local data:string lbl_1_data_188 = .data:0x00000188; // type:object size:0x4 data:float -lbl_1_data_18C = .data:0x0000018C; // type:object size:0x14 data:string +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x14 scope:local data:string jumptable_1_data_1A0 = .data:0x000001A0; // type:object size:0x20 scope:local -lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x14 +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x12 scope:local data:string jumptable_1_data_1D4 = .data:0x000001D4; // type:object size:0x30 scope:local lbl_1_data_204 = .data:0x00000204; // type:object size:0x78 lbl_1_data_27C = .data:0x0000027C; // type:object size:0x90 lbl_1_data_30C = .data:0x0000030C; // type:object size:0x18 jumptable_1_data_324 = .data:0x00000324; // type:object size:0x2C scope:local -lbl_1_data_350 = .data:0x00000350; // type:object size:0x10 data:string -lbl_1_data_360 = .data:0x00000360; // type:object size:0x10 data:string -lbl_1_data_370 = .data:0x00000370; // type:object size:0x10 data:string -lbl_1_data_380 = .data:0x00000380; // type:object size:0x10 data:string -lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 data:string -lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x10 data:string -lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x10 data:string -lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x10 data:string +lbl_1_data_350 = .data:0x00000350; // type:object size:0x10 scope:local data:string +lbl_1_data_360 = .data:0x00000360; // type:object size:0x10 scope:local data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0x10 scope:local data:string +lbl_1_data_380 = .data:0x00000380; // type:object size:0x10 scope:local data:string +lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x10 scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x10 scope:local data:string +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x10 scope:local data:string lbl_1_data_3D0 = .data:0x000003D0; // type:object size:0x20 lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x40 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m438Dll/symbols.txt b/config/GMPE01_00/rels/m438Dll/symbols.txt index 8b3796d8..c1e2961a 100644 --- a/config/GMPE01_00/rels/m438Dll/symbols.txt +++ b/config/GMPE01_00/rels/m438Dll/symbols.txt @@ -381,12 +381,13 @@ lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC lbl_1_data_28 = .data:0x00000028; // type:object size:0xC lbl_1_data_34 = .data:0x00000034; // type:object size:0xC -lbl_1_data_40 = .data:0x00000040; // type:object size:0x24 data:string +lbl_1_data_40 = .data:0x00000040; // type:object size:0x23 scope:local data:string lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte -lbl_1_data_68 = .data:0x00000068; // type:object size:0x420 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x420 data:float lbl_1_data_488 = .data:0x00000488; // type:object size:0x2C lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x30 jumptable_1_data_4E4 = .data:0x000004E4; // type:object size:0x2C scope:local +lbl_1_data_510 = .data:0x00000510; // type:object size:0x4 lbl_1_data_514 = .data:0x00000514; // type:object size:0xC lbl_1_data_520 = .data:0x00000520; // type:object size:0x64 lbl_1_data_584 = .data:0x00000584; // type:object size:0x64 @@ -396,43 +397,44 @@ lbl_1_data_678 = .data:0x00000678; // type:object size:0x24 lbl_1_data_69C = .data:0x0000069C; // type:object size:0x6C lbl_1_data_708 = .data:0x00000708; // type:object size:0x24 lbl_1_data_72C = .data:0x0000072C; // type:object size:0x24 -lbl_1_data_750 = .data:0x00000750; // type:object size:0x7 data:string -lbl_1_data_757 = .data:0x00000757; // type:object size:0x7 data:string -lbl_1_data_75E = .data:0x0000075E; // type:object size:0x7 data:string -lbl_1_data_765 = .data:0x00000765; // type:object size:0x7 data:string -lbl_1_data_76C = .data:0x0000076C; // type:object size:0x7 data:string -lbl_1_data_773 = .data:0x00000773; // type:object size:0x7 data:string -lbl_1_data_77A = .data:0x0000077A; // type:object size:0x7 data:string -lbl_1_data_781 = .data:0x00000781; // type:object size:0x7 data:string -lbl_1_data_788 = .data:0x00000788; // type:object size:0x7 data:string -lbl_1_data_78F = .data:0x0000078F; // type:object size:0x8 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x8 data:string -lbl_1_data_79F = .data:0x0000079F; // type:object size:0x8 data:string -lbl_1_data_7A7 = .data:0x000007A7; // type:object size:0x8 data:string -lbl_1_data_7AF = .data:0x000007AF; // type:object size:0x8 data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x8 data:string -lbl_1_data_7BF = .data:0x000007BF; // type:object size:0x8 data:string -lbl_1_data_7C7 = .data:0x000007C7; // type:object size:0x8 data:string -lbl_1_data_7CF = .data:0x000007CF; // type:object size:0x8 data:string -lbl_1_data_7D7 = .data:0x000007D7; // type:object size:0x8 data:string -lbl_1_data_7DF = .data:0x000007DF; // type:object size:0x8 data:string -lbl_1_data_7E7 = .data:0x000007E7; // type:object size:0x8 data:string -lbl_1_data_7EF = .data:0x000007EF; // type:object size:0x8 data:string -lbl_1_data_7F7 = .data:0x000007F7; // type:object size:0x8 data:string -lbl_1_data_7FF = .data:0x000007FF; // type:object size:0x8 data:string -lbl_1_data_807 = .data:0x00000807; // type:object size:0x8 data:string -lbl_1_data_80F = .data:0x0000080F; // type:object size:0x8 data:string -lbl_1_data_817 = .data:0x00000817; // type:object size:0x8 data:string -lbl_1_data_81F = .data:0x0000081F; // type:object size:0x8 data:string -lbl_1_data_827 = .data:0x00000827; // type:object size:0x8 data:string -lbl_1_data_82F = .data:0x0000082F; // type:object size:0x8 data:string -lbl_1_data_837 = .data:0x00000837; // type:object size:0x8 data:string -lbl_1_data_83F = .data:0x0000083F; // type:object size:0x9 +lbl_1_data_750 = .data:0x00000750; // type:object size:0x7 scope:local data:string +lbl_1_data_757 = .data:0x00000757; // type:object size:0x7 scope:local data:string +lbl_1_data_75E = .data:0x0000075E; // type:object size:0x7 scope:local data:string +lbl_1_data_765 = .data:0x00000765; // type:object size:0x7 scope:local data:string +lbl_1_data_76C = .data:0x0000076C; // type:object size:0x7 scope:local data:string +lbl_1_data_773 = .data:0x00000773; // type:object size:0x7 scope:local data:string +lbl_1_data_77A = .data:0x0000077A; // type:object size:0x7 scope:local data:string +lbl_1_data_781 = .data:0x00000781; // type:object size:0x7 scope:local data:string +lbl_1_data_788 = .data:0x00000788; // type:object size:0x7 scope:local data:string +lbl_1_data_78F = .data:0x0000078F; // type:object size:0x8 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x8 scope:local data:string +lbl_1_data_79F = .data:0x0000079F; // type:object size:0x8 scope:local data:string +lbl_1_data_7A7 = .data:0x000007A7; // type:object size:0x8 scope:local data:string +lbl_1_data_7AF = .data:0x000007AF; // type:object size:0x8 scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x8 scope:local data:string +lbl_1_data_7BF = .data:0x000007BF; // type:object size:0x8 scope:local data:string +lbl_1_data_7C7 = .data:0x000007C7; // type:object size:0x8 scope:local data:string +lbl_1_data_7CF = .data:0x000007CF; // type:object size:0x8 scope:local data:string +lbl_1_data_7D7 = .data:0x000007D7; // type:object size:0x8 scope:local data:string +lbl_1_data_7DF = .data:0x000007DF; // type:object size:0x8 scope:local data:string +lbl_1_data_7E7 = .data:0x000007E7; // type:object size:0x8 scope:local data:string +lbl_1_data_7EF = .data:0x000007EF; // type:object size:0x8 scope:local data:string +lbl_1_data_7F7 = .data:0x000007F7; // type:object size:0x8 scope:local data:string +lbl_1_data_7FF = .data:0x000007FF; // type:object size:0x8 scope:local data:string +lbl_1_data_807 = .data:0x00000807; // type:object size:0x8 scope:local data:string +lbl_1_data_80F = .data:0x0000080F; // type:object size:0x8 scope:local data:string +lbl_1_data_817 = .data:0x00000817; // type:object size:0x8 scope:local data:string +lbl_1_data_81F = .data:0x0000081F; // type:object size:0x8 scope:local data:string +lbl_1_data_827 = .data:0x00000827; // type:object size:0x8 scope:local data:string +lbl_1_data_82F = .data:0x0000082F; // type:object size:0x8 scope:local data:string +lbl_1_data_837 = .data:0x00000837; // type:object size:0x8 scope:local data:string +lbl_1_data_83F = .data:0x0000083F; // type:object size:0x9 scope:local lbl_1_data_848 = .data:0x00000848; // type:object size:0x80 -lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x9 data:string -lbl_1_data_8D1 = .data:0x000008D1; // type:object size:0x7 data:string +lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x9 scope:local data:string +lbl_1_data_8D1 = .data:0x000008D1; // type:object size:0x7 scope:local data:string lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x60 -lbl_1_data_938 = .data:0x00000938; // type:object size:0xB data:string +lbl_1_data_938 = .data:0x00000938; // type:object size:0xB scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x288 @@ -456,6 +458,7 @@ lbl_1_bss_DD8 = .bss:0x00000DD8; // type:object size:0x4 data:4byte lbl_1_bss_DDC = .bss:0x00000DDC; // type:object size:0x4 data:4byte lbl_1_bss_DE0 = .bss:0x00000DE0; // type:object size:0x4 data:4byte lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x44 data:4byte +lbl_1_bss_E28 = .bss:0x00000E28; // type:object size:0x4 data:4byte lbl_1_bss_E2C = .bss:0x00000E2C; // type:object size:0x4 data:4byte lbl_1_bss_E30 = .bss:0x00000E30; // type:object size:0x4 data:4byte lbl_1_bss_E34 = .bss:0x00000E34; // type:object size:0x258 data:4byte diff --git a/config/GMPE01_00/rels/m439Dll/symbols.txt b/config/GMPE01_00/rels/m439Dll/symbols.txt index 246ef044..f3f1ec36 100644 --- a/config/GMPE01_00/rels/m439Dll/symbols.txt +++ b/config/GMPE01_00/rels/m439Dll/symbols.txt @@ -173,89 +173,89 @@ lbl_1_data_EA8 = .data:0x00000EA8; // type:object size:0x9C lbl_1_data_F44 = .data:0x00000F44; // type:object size:0x9C lbl_1_data_FE0 = .data:0x00000FE0; // type:object size:0x34 lbl_1_data_1014 = .data:0x00001014; // type:object size:0x60 -lbl_1_data_1074 = .data:0x00001074; // type:object size:0x18 -lbl_1_data_108C = .data:0x0000108C; // type:object size:0x30 -lbl_1_data_10BC = .data:0x000010BC; // type:object size:0x204 -lbl_1_data_12C0 = .data:0x000012C0; // type:object size:0x204 -lbl_1_data_14C4 = .data:0x000014C4; // type:object size:0x204 +lbl_1_data_1074 = .data:0x00001074; // type:object size:0x18 data:2byte +lbl_1_data_108C = .data:0x0000108C; // type:object size:0x30 data:float +lbl_1_data_10BC = .data:0x000010BC; // type:object size:0x204 data:float +lbl_1_data_12C0 = .data:0x000012C0; // type:object size:0x204 data:float +lbl_1_data_14C4 = .data:0x000014C4; // type:object size:0x204 data:float lbl_1_data_16C8 = .data:0x000016C8; // type:object size:0xC -lbl_1_data_16D4 = .data:0x000016D4; // type:object size:0x4 -lbl_1_data_16D8 = .data:0x000016D8; // type:object size:0x1D4 -lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x1D4 -lbl_1_data_1A80 = .data:0x00001A80; // type:object size:0x1D4 -lbl_1_data_1C54 = .data:0x00001C54; // type:object size:0x120 -lbl_1_data_1D74 = .data:0x00001D74; // type:object size:0x120 -lbl_1_data_1E94 = .data:0x00001E94; // type:object size:0x120 -lbl_1_data_1FB4 = .data:0x00001FB4; // type:object size:0xF0 -lbl_1_data_20A4 = .data:0x000020A4; // type:object size:0xF0 -lbl_1_data_2194 = .data:0x00002194; // type:object size:0xF0 +lbl_1_data_16D4 = .data:0x000016D4; // type:object size:0x4 data:4byte +lbl_1_data_16D8 = .data:0x000016D8; // type:object size:0x1D4 data:float +lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x1D4 data:float +lbl_1_data_1A80 = .data:0x00001A80; // type:object size:0x1D4 data:float +lbl_1_data_1C54 = .data:0x00001C54; // type:object size:0x120 data:float +lbl_1_data_1D74 = .data:0x00001D74; // type:object size:0x120 data:float +lbl_1_data_1E94 = .data:0x00001E94; // type:object size:0x120 data:float +lbl_1_data_1FB4 = .data:0x00001FB4; // type:object size:0xF0 data:float +lbl_1_data_20A4 = .data:0x000020A4; // type:object size:0xF0 data:float +lbl_1_data_2194 = .data:0x00002194; // type:object size:0xF0 data:float lbl_1_data_2284 = .data:0x00002284; // type:object size:0x24 -lbl_1_data_22A8 = .data:0x000022A8; // type:object size:0xC -lbl_1_data_22B4 = .data:0x000022B4; // type:object size:0x174 -lbl_1_data_2428 = .data:0x00002428; // type:object size:0x174 -lbl_1_data_259C = .data:0x0000259C; // type:object size:0x174 -lbl_1_data_2710 = .data:0x00002710; // type:object size:0x144 -lbl_1_data_2854 = .data:0x00002854; // type:object size:0x144 -lbl_1_data_2998 = .data:0x00002998; // type:object size:0x144 -lbl_1_data_2ADC = .data:0x00002ADC; // type:object size:0x1A4 -lbl_1_data_2C80 = .data:0x00002C80; // type:object size:0x1A4 -lbl_1_data_2E24 = .data:0x00002E24; // type:object size:0x1A4 +lbl_1_data_22A8 = .data:0x000022A8; // type:object size:0xC data:4byte +lbl_1_data_22B4 = .data:0x000022B4; // type:object size:0x174 data:float +lbl_1_data_2428 = .data:0x00002428; // type:object size:0x174 data:float +lbl_1_data_259C = .data:0x0000259C; // type:object size:0x174 data:float +lbl_1_data_2710 = .data:0x00002710; // type:object size:0x144 data:float +lbl_1_data_2854 = .data:0x00002854; // type:object size:0x144 data:float +lbl_1_data_2998 = .data:0x00002998; // type:object size:0x144 data:float +lbl_1_data_2ADC = .data:0x00002ADC; // type:object size:0x1A4 data:float +lbl_1_data_2C80 = .data:0x00002C80; // type:object size:0x1A4 data:float +lbl_1_data_2E24 = .data:0x00002E24; // type:object size:0x1A4 data:float lbl_1_data_2FC8 = .data:0x00002FC8; // type:object size:0x24 -lbl_1_data_2FEC = .data:0x00002FEC; // type:object size:0xC -lbl_1_data_2FF8 = .data:0x00002FF8; // type:object size:0x294 -lbl_1_data_328C = .data:0x0000328C; // type:object size:0x294 -lbl_1_data_3520 = .data:0x00003520; // type:object size:0x294 +lbl_1_data_2FEC = .data:0x00002FEC; // type:object size:0xC data:4byte +lbl_1_data_2FF8 = .data:0x00002FF8; // type:object size:0x294 data:float +lbl_1_data_328C = .data:0x0000328C; // type:object size:0x294 data:float +lbl_1_data_3520 = .data:0x00003520; // type:object size:0x294 data:float lbl_1_data_37B4 = .data:0x000037B4; // type:object size:0xC -lbl_1_data_37C0 = .data:0x000037C0; // type:object size:0x4 -lbl_1_data_37C4 = .data:0x000037C4; // type:object size:0x198 -lbl_1_data_395C = .data:0x0000395C; // type:object size:0x198 -lbl_1_data_3AF4 = .data:0x00003AF4; // type:object size:0x198 -lbl_1_data_3C8C = .data:0x00003C8C; // type:object size:0x198 -lbl_1_data_3E24 = .data:0x00003E24; // type:object size:0x198 -lbl_1_data_3FBC = .data:0x00003FBC; // type:object size:0x198 +lbl_1_data_37C0 = .data:0x000037C0; // type:object size:0x4 data:4byte +lbl_1_data_37C4 = .data:0x000037C4; // type:object size:0x198 data:float +lbl_1_data_395C = .data:0x0000395C; // type:object size:0x198 data:float +lbl_1_data_3AF4 = .data:0x00003AF4; // type:object size:0x198 data:float +lbl_1_data_3C8C = .data:0x00003C8C; // type:object size:0x198 data:float +lbl_1_data_3E24 = .data:0x00003E24; // type:object size:0x198 data:float +lbl_1_data_3FBC = .data:0x00003FBC; // type:object size:0x198 data:float lbl_1_data_4154 = .data:0x00004154; // type:object size:0x18 -lbl_1_data_416C = .data:0x0000416C; // type:object size:0x8 -lbl_1_data_4174 = .data:0x00004174; // type:object size:0x210 -lbl_1_data_4384 = .data:0x00004384; // type:object size:0x210 -lbl_1_data_4594 = .data:0x00004594; // type:object size:0x210 -lbl_1_data_47A4 = .data:0x000047A4; // type:object size:0x210 -lbl_1_data_49B4 = .data:0x000049B4; // type:object size:0x210 -lbl_1_data_4BC4 = .data:0x00004BC4; // type:object size:0x210 +lbl_1_data_416C = .data:0x0000416C; // type:object size:0x8 data:4byte +lbl_1_data_4174 = .data:0x00004174; // type:object size:0x210 data:float +lbl_1_data_4384 = .data:0x00004384; // type:object size:0x210 data:float +lbl_1_data_4594 = .data:0x00004594; // type:object size:0x210 data:float +lbl_1_data_47A4 = .data:0x000047A4; // type:object size:0x210 data:float +lbl_1_data_49B4 = .data:0x000049B4; // type:object size:0x210 data:float +lbl_1_data_4BC4 = .data:0x00004BC4; // type:object size:0x210 data:float lbl_1_data_4DD4 = .data:0x00004DD4; // type:object size:0x18 -lbl_1_data_4DEC = .data:0x00004DEC; // type:object size:0x8 -lbl_1_data_4DF4 = .data:0x00004DF4; // type:object size:0x1D4 -lbl_1_data_4FC8 = .data:0x00004FC8; // type:object size:0x1D4 -lbl_1_data_519C = .data:0x0000519C; // type:object size:0x1D4 -lbl_1_data_5370 = .data:0x00005370; // type:object size:0x1D4 -lbl_1_data_5544 = .data:0x00005544; // type:object size:0x1D4 -lbl_1_data_5718 = .data:0x00005718; // type:object size:0x1D4 +lbl_1_data_4DEC = .data:0x00004DEC; // type:object size:0x8 data:4byte +lbl_1_data_4DF4 = .data:0x00004DF4; // type:object size:0x1D4 data:float +lbl_1_data_4FC8 = .data:0x00004FC8; // type:object size:0x1D4 data:float +lbl_1_data_519C = .data:0x0000519C; // type:object size:0x1D4 data:float +lbl_1_data_5370 = .data:0x00005370; // type:object size:0x1D4 data:float +lbl_1_data_5544 = .data:0x00005544; // type:object size:0x1D4 data:float +lbl_1_data_5718 = .data:0x00005718; // type:object size:0x1D4 data:float lbl_1_data_58EC = .data:0x000058EC; // type:object size:0x18 -lbl_1_data_5904 = .data:0x00005904; // type:object size:0x8 -lbl_1_data_590C = .data:0x0000590C; // type:object size:0x18C -lbl_1_data_5A98 = .data:0x00005A98; // type:object size:0x18C -lbl_1_data_5C24 = .data:0x00005C24; // type:object size:0x18C -lbl_1_data_5DB0 = .data:0x00005DB0; // type:object size:0x168 -lbl_1_data_5F18 = .data:0x00005F18; // type:object size:0x168 -lbl_1_data_6080 = .data:0x00006080; // type:object size:0x168 +lbl_1_data_5904 = .data:0x00005904; // type:object size:0x8 data:4byte +lbl_1_data_590C = .data:0x0000590C; // type:object size:0x18C data:float +lbl_1_data_5A98 = .data:0x00005A98; // type:object size:0x18C data:float +lbl_1_data_5C24 = .data:0x00005C24; // type:object size:0x18C data:float +lbl_1_data_5DB0 = .data:0x00005DB0; // type:object size:0x168 data:float +lbl_1_data_5F18 = .data:0x00005F18; // type:object size:0x168 data:float +lbl_1_data_6080 = .data:0x00006080; // type:object size:0x168 data:float lbl_1_data_61E8 = .data:0x000061E8; // type:object size:0x18 -lbl_1_data_6200 = .data:0x00006200; // type:object size:0x8 -lbl_1_data_6208 = .data:0x00006208; // type:object size:0x174 -lbl_1_data_637C = .data:0x0000637C; // type:object size:0x174 -lbl_1_data_64F0 = .data:0x000064F0; // type:object size:0x174 -lbl_1_data_6664 = .data:0x00006664; // type:object size:0x15C -lbl_1_data_67C0 = .data:0x000067C0; // type:object size:0x15C -lbl_1_data_691C = .data:0x0000691C; // type:object size:0x15C +lbl_1_data_6200 = .data:0x00006200; // type:object size:0x8 data:4byte +lbl_1_data_6208 = .data:0x00006208; // type:object size:0x174 data:float +lbl_1_data_637C = .data:0x0000637C; // type:object size:0x174 data:float +lbl_1_data_64F0 = .data:0x000064F0; // type:object size:0x174 data:float +lbl_1_data_6664 = .data:0x00006664; // type:object size:0x15C data:float +lbl_1_data_67C0 = .data:0x000067C0; // type:object size:0x15C data:float +lbl_1_data_691C = .data:0x0000691C; // type:object size:0x15C data:float lbl_1_data_6A78 = .data:0x00006A78; // type:object size:0x18 -lbl_1_data_6A90 = .data:0x00006A90; // type:object size:0x8 -lbl_1_data_6A98 = .data:0x00006A98; // type:object size:0x18C -lbl_1_data_6C24 = .data:0x00006C24; // type:object size:0x18C -lbl_1_data_6DB0 = .data:0x00006DB0; // type:object size:0x18C -lbl_1_data_6F3C = .data:0x00006F3C; // type:object size:0x174 -lbl_1_data_70B0 = .data:0x000070B0; // type:object size:0x174 -lbl_1_data_7224 = .data:0x00007224; // type:object size:0x174 +lbl_1_data_6A90 = .data:0x00006A90; // type:object size:0x8 data:4byte +lbl_1_data_6A98 = .data:0x00006A98; // type:object size:0x18C data:float +lbl_1_data_6C24 = .data:0x00006C24; // type:object size:0x18C data:float +lbl_1_data_6DB0 = .data:0x00006DB0; // type:object size:0x18C data:float +lbl_1_data_6F3C = .data:0x00006F3C; // type:object size:0x174 data:float +lbl_1_data_70B0 = .data:0x000070B0; // type:object size:0x174 data:float +lbl_1_data_7224 = .data:0x00007224; // type:object size:0x174 data:float lbl_1_data_7398 = .data:0x00007398; // type:object size:0x18 -lbl_1_data_73B0 = .data:0x000073B0; // type:object size:0x8 -lbl_1_data_73B8 = .data:0x000073B8; // type:object size:0x14 +lbl_1_data_73B0 = .data:0x000073B0; // type:object size:0x8 data:4byte +lbl_1_data_73B8 = .data:0x000073B8; // type:object size:0x14 data:4byte lbl_1_data_73CC = .data:0x000073CC; // type:object size:0x28 lbl_1_data_73F4 = .data:0x000073F4; // type:object size:0x28 lbl_1_data_741C = .data:0x0000741C; // type:object size:0x70 data:float diff --git a/config/GMPE01_00/rels/m440Dll/symbols.txt b/config/GMPE01_00/rels/m440Dll/symbols.txt index 1457a3b2..47f1c944 100644 --- a/config/GMPE01_00/rels/m440Dll/symbols.txt +++ b/config/GMPE01_00/rels/m440Dll/symbols.txt @@ -238,16 +238,16 @@ lbl_1_data_60 = .data:0x00000060; // type:object size:0xC lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC data:float lbl_1_data_78 = .data:0x00000078; // type:object size:0x54 data:float lbl_1_data_CC = .data:0x000000CC; // type:object size:0x18 scope:local -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x2 data:2byte -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x2 data:2byte -lbl_1_data_EC = .data:0x000000EC; // type:object size:0x2 data:2byte -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 data:2byte +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x4 data:2byte +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:2byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x4 data:2byte +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x4 data:2byte lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x10 -lbl_1_data_104 = .data:0x00000104; // type:object size:0x2 data:2byte -lbl_1_data_108 = .data:0x00000108; // type:object size:0x2 data:2byte +lbl_1_data_104 = .data:0x00000104; // type:object size:0x4 data:2byte +lbl_1_data_108 = .data:0x00000108; // type:object size:0x4 data:2byte lbl_1_data_10C = .data:0x0000010C; // type:object size:0x12 lbl_1_data_11E = .data:0x0000011E; // type:object size:0x13 scope:local data:string -lbl_1_data_131 = .data:0x00000131; // type:object size:0x18 scope:local data:string +lbl_1_data_131 = .data:0x00000131; // type:object size:0x17 scope:local data:string lbl_1_data_149 = .data:0x00000149; // type:object size:0x19 scope:local data:string lbl_1_data_162 = .data:0x00000162; // type:object size:0x1C scope:local data:string lbl_1_data_17E = .data:0x0000017E; // type:object size:0x10 scope:local data:string diff --git a/config/GMPE01_00/rels/m442Dll/symbols.txt b/config/GMPE01_00/rels/m442Dll/symbols.txt index c4f962cc..e5e664a3 100644 --- a/config/GMPE01_00/rels/m442Dll/symbols.txt +++ b/config/GMPE01_00/rels/m442Dll/symbols.txt @@ -167,14 +167,14 @@ lbl_1_data_60 = .data:0x00000060; // type:object size:0xC data:float lbl_1_data_6C = .data:0x0000006C; // type:object size:0x4 data:byte lbl_1_data_70 = .data:0x00000070; // type:object size:0xC data:float lbl_1_data_7C = .data:0x0000007C; // type:object size:0xC data:float -lbl_1_data_88 = .data:0x00000088; // type:object size:0x24 scope:local data:string +lbl_1_data_88 = .data:0x00000088; // type:object size:0x23 scope:local data:string lbl_1_data_AC = .data:0x000000AC; // type:object size:0x4 data:4byte jumptable_1_data_B0 = .data:0x000000B0; // type:object size:0x30 scope:local lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x1C scope:local data:string lbl_1_data_FC = .data:0x000000FC; // type:object size:0x1C data:4byte lbl_1_data_118 = .data:0x00000118; // type:object size:0x8 data:4byte lbl_1_data_120 = .data:0x00000120; // type:object size:0x30 data:float -lbl_1_data_150 = .data:0x00000150; // type:object size:0x1A scope:local data:string +lbl_1_data_150 = .data:0x00000150; // type:object size:0x19 scope:local data:string lbl_1_data_16A = .data:0x0000016A; // type:object size:0x20 data:2byte lbl_1_data_18A = .data:0x0000018A; // type:object size:0x14 data:2byte lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0xC data:4byte diff --git a/config/GMPE01_00/rels/m443Dll/splits.txt b/config/GMPE01_00/rels/m443Dll/splits.txt index ff3f7391..b9a84a24 100644 --- a/config/GMPE01_00/rels/m443Dll/splits.txt +++ b/config/GMPE01_00/rels/m443Dll/splits.txt @@ -17,11 +17,11 @@ REL/m443Dll/main.c: REL/m443Dll/map.c: .text start:0x00004A5C end:0x00005444 - .rodata start:0x000001F0 end:0x00000278 + .rodata start:0x000001F0 end:0x00000268 .data start:0x00000240 end:0x00000258 REL/m443Dll/player.c: .text start:0x00005444 end:0x00009638 - .rodata start:0x00000278 end:0x000004E0 + .rodata start:0x00000268 end:0x000004E0 .data start:0x00000258 end:0x000004F0 .bss start:0x00000078 end:0x000000A0 diff --git a/config/GMPE01_00/rels/m443Dll/symbols.txt b/config/GMPE01_00/rels/m443Dll/symbols.txt index 76a2059a..ed466311 100644 --- a/config/GMPE01_00/rels/m443Dll/symbols.txt +++ b/config/GMPE01_00/rels/m443Dll/symbols.txt @@ -76,203 +76,205 @@ fn_1_8FFC = .text:0x00008FFC; // type:function size:0x5A8 fn_1_95A4 = .text:0x000095A4; // type:function size:0x94 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x50 -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x14 data:4byte -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 data:4byte -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x10 data:4byte -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC data:4byte -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x34 data:4byte -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x10 data:4byte -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x40 data:4byte -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x10 data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x10 data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x20 data:4byte -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x50 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x34 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x10 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -280,17 +282,18 @@ lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float -lbl_1_data_4C = .data:0x0000004C; // type:object size:0x14 data:string +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x14 scope:local data:string lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x48 lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x18 lbl_1_data_108 = .data:0x00000108; // type:object size:0x80 lbl_1_data_188 = .data:0x00000188; // type:object size:0x80 -lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte -lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A data:string -lbl_1_data_226 = .data:0x00000226; // type:object size:0x19 data:string +lbl_1_data_208 = .data:0x00000208; // type:object size:0x4 data:byte +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A scope:local data:string +lbl_1_data_226 = .data:0x00000226; // type:object size:0x19 scope:local data:string lbl_1_data_240 = .data:0x00000240; // type:object size:0x14 -lbl_1_data_264 = .data:0x00000258; // type:object size:0x20 +lbl_1_data_258 = .data:0x00000258; // type:object size:0xB scope:local data:string +lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 lbl_1_data_284 = .data:0x00000284; // type:object size:0x40 lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x10 lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x50 @@ -301,10 +304,10 @@ lbl_1_data_354 = .data:0x00000354; // type:object size:0x10 lbl_1_data_364 = .data:0x00000364; // type:object size:0x30 lbl_1_data_394 = .data:0x00000394; // type:object size:0x30 lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x30 -lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x5 data:string -lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x7 data:string -lbl_1_data_400 = .data:0x00000400; // type:object size:0x7 data:string -lbl_1_data_407 = .data:0x00000407; // type:object size:0x9 +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x5 scope:local data:string +lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x7 scope:local data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x7 scope:local data:string +lbl_1_data_407 = .data:0x00000407; // type:object size:0x7 scope:local data:string lbl_1_data_410 = .data:0x00000410; // type:object size:0x58 lbl_1_data_468 = .data:0x00000468; // type:object size:0x20 lbl_1_data_488 = .data:0x00000488; // type:object size:0x58 diff --git a/config/GMPE01_00/rels/m444dll/symbols.txt b/config/GMPE01_00/rels/m444dll/symbols.txt index ca550b02..65610d76 100644 --- a/config/GMPE01_00/rels/m444dll/symbols.txt +++ b/config/GMPE01_00/rels/m444dll/symbols.txt @@ -38,108 +38,108 @@ fn_1_D9C8 = .text:0x0000D9C8; // type:function size:0x2C fn_1_D9F4 = .text:0x0000D9F4; // type:function size:0x42C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float @@ -219,35 +219,35 @@ lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data: lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x118 data:float lbl_1_data_118 = .data:0x00000118; // type:object size:0x28 lbl_1_data_140 = .data:0x00000140; // type:object size:0xC data:float lbl_1_data_14C = .data:0x0000014C; // type:object size:0x3C data:float -lbl_1_data_188 = .data:0x00000188; // type:object size:0xC +lbl_1_data_188 = .data:0x00000188; // type:object size:0xA data:2byte lbl_1_data_194 = .data:0x00000194; // type:object size:0x20 -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 data:string -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA data:string -lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA data:string -lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA data:string -lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD data:string -lbl_1_data_203 = .data:0x00000203; // type:object size:0xD data:string -lbl_1_data_210 = .data:0x00000210; // type:object size:0xD data:string -lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD data:string -lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB data:string -lbl_1_data_235 = .data:0x00000235; // type:object size:0xB data:string +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 scope:local data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA scope:local data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA scope:local data:string +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA scope:local data:string +lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD scope:local data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0xD scope:local data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xD scope:local data:string +lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD scope:local data:string +lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB scope:local data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0xB scope:local data:string lbl_1_data_240 = .data:0x00000240; // type:object size:0x4 -lbl_1_data_244 = .data:0x00000244; // type:object size:0xA data:string -lbl_1_data_24E = .data:0x0000024E; // type:object size:0x4 data:string +lbl_1_data_244 = .data:0x00000244; // type:object size:0xA scope:local data:string +lbl_1_data_24E = .data:0x0000024E; // type:object size:0x4 scope:local data:string lbl_1_data_258 = .data:0x00000258; // type:object size:0xC lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 @@ -267,7 +267,7 @@ lbl_1_data_361 = .data:0x00000361; // type:object size:0xD scope:local data:stri lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD scope:local data:string lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD scope:local data:string jumptable_1_data_388 = .data:0x00000388; // type:object size:0x1C scope:local -lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x8 +lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x6 data:2byte lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x30 data:float lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x24 data:float lbl_1_data_400 = .data:0x00000400; // type:object size:0x54 data:float diff --git a/config/GMPE01_00/rels/m445Dll/symbols.txt b/config/GMPE01_00/rels/m445Dll/symbols.txt index 0f826a14..81f152e7 100644 --- a/config/GMPE01_00/rels/m445Dll/symbols.txt +++ b/config/GMPE01_00/rels/m445Dll/symbols.txt @@ -37,132 +37,132 @@ fn_1_89B8 = .text:0x000089B8; // type:function size:0x60 fn_1_8A18 = .text:0x00008A18; // type:function size:0x33C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x40 +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 lbl_1_data_40 = .data:0x00000040; // type:object size:0x20 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x18 -lbl_1_data_78 = .data:0x00000078; // type:object size:0x18 -lbl_1_data_90 = .data:0x00000090; // type:object size:0x40 -lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x40 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x18 data:float +lbl_1_data_78 = .data:0x00000078; // type:object size:0x18 data:float +lbl_1_data_90 = .data:0x00000090; // type:object size:0x40 data:float +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x40 data:float lbl_1_data_110 = .data:0x00000110; // type:object size:0x40 -lbl_1_data_150 = .data:0x00000150; // type:object size:0x12 data:string -lbl_1_data_162 = .data:0x00000162; // type:object size:0x12 data:string -lbl_1_data_174 = .data:0x00000174; // type:object size:0x13 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x13 data:string -lbl_1_data_19A = .data:0x0000019A; // type:object size:0x14 data:string -lbl_1_data_1AE = .data:0x000001AE; // type:object size:0x14 data:string -lbl_1_data_1C2 = .data:0x000001C2; // type:object size:0x10 data:string -lbl_1_data_1D2 = .data:0x000001D2; // type:object size:0x10 data:string -lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0x13 data:string -lbl_1_data_1F5 = .data:0x000001F5; // type:object size:0xF data:string -lbl_1_data_204 = .data:0x00000204; // type:object size:0xE data:string -lbl_1_data_212 = .data:0x00000212; // type:object size:0xE +lbl_1_data_150 = .data:0x00000150; // type:object size:0x12 scope:local data:string +lbl_1_data_162 = .data:0x00000162; // type:object size:0x12 scope:local data:string +lbl_1_data_174 = .data:0x00000174; // type:object size:0x13 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x13 scope:local data:string +lbl_1_data_19A = .data:0x0000019A; // type:object size:0x14 scope:local data:string +lbl_1_data_1AE = .data:0x000001AE; // type:object size:0x14 scope:local data:string +lbl_1_data_1C2 = .data:0x000001C2; // type:object size:0x10 scope:local data:string +lbl_1_data_1D2 = .data:0x000001D2; // type:object size:0x10 scope:local data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0x13 scope:local data:string +lbl_1_data_1F5 = .data:0x000001F5; // type:object size:0xF scope:local data:string +lbl_1_data_204 = .data:0x00000204; // type:object size:0xE scope:local data:string +lbl_1_data_212 = .data:0x00000212; // type:object size:0xC scope:local data:string lbl_1_data_220 = .data:0x00000220; // type:object size:0x40 lbl_1_data_260 = .data:0x00000260; // type:object size:0x20 -lbl_1_data_280 = .data:0x00000280; // type:object size:0xF data:string -lbl_1_data_28F = .data:0x0000028F; // type:object size:0xB data:string +lbl_1_data_280 = .data:0x00000280; // type:object size:0xF scope:local data:string +lbl_1_data_28F = .data:0x0000028F; // type:object size:0xB scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float lbl_1_bss_14 = .bss:0x00000014; // type:object size:0xC data:float lbl_1_bss_20 = .bss:0x00000020; // type:object size:0xC data:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x28 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x230 lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x300 data:2byte -lbl_1_bss_588 = .bss:0x00000588; // type:object size:0x13C data:4byte +lbl_1_bss_588 = .bss:0x00000588; // type:object size:0x138 data:4byte lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x4 data:4byte lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:4byte lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0xC data:4byte diff --git a/config/GMPE01_00/rels/m446dll/symbols.txt b/config/GMPE01_00/rels/m446dll/symbols.txt index e9879dc0..b1e4494c 100644 --- a/config/GMPE01_00/rels/m446dll/symbols.txt +++ b/config/GMPE01_00/rels/m446dll/symbols.txt @@ -260,22 +260,22 @@ lbl_1_data_150 = .data:0x00000150; // type:object size:0xC lbl_1_data_15C = .data:0x0000015C; // type:object size:0x20 scope:local jumptable_1_data_17C = .data:0x0000017C; // type:object size:0x2C scope:local lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x1F scope:local data:string -lbl_1_data_1C7 = .data:0x000001C7; // type:object size:0x1F scope:local data:string +lbl_1_data_1C7 = .data:0x000001C7; // type:object size:0x1E scope:local data:string lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x1E scope:local data:string -lbl_1_data_206 = .data:0x00000206; // type:object size:0x22 scope:local data:string +lbl_1_data_206 = .data:0x00000206; // type:object size:0x1E scope:local data:string lbl_1_data_228 = .data:0x00000228; // type:object size:0x24 lbl_1_data_24C = .data:0x0000024C; // type:object size:0x90 lbl_1_data_2DC = .data:0x000002DC; // type:object size:0x14 lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x1F scope:local data:string lbl_1_data_30F = .data:0x0000030F; // type:object size:0x1F scope:local data:string -lbl_1_data_32E = .data:0x0000032E; // type:object size:0x22 scope:local data:string +lbl_1_data_32E = .data:0x0000032E; // type:object size:0x1F scope:local data:string jumptable_1_data_350 = .data:0x00000350; // type:object size:0x1C scope:local lbl_1_data_370 = .data:0x00000370; // type:object size:0xC data:float lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1E scope:local data:string lbl_1_data_39A = .data:0x0000039A; // type:object size:0x1E scope:local data:string -lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x10 scope:local data:string +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0xE scope:local data:string lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 -lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x24 scope:local data:string +lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x1F scope:local data:string lbl_1_data_410 = .data:0x00000410; // type:object size:0x14 lbl_1_data_424 = .data:0x00000424; // type:object size:0x3C lbl_1_data_460 = .data:0x00000460; // type:object size:0x54 data:byte diff --git a/config/GMPE01_00/rels/m447dll/symbols.txt b/config/GMPE01_00/rels/m447dll/symbols.txt index 189f63b5..b32598b2 100644 --- a/config/GMPE01_00/rels/m447dll/symbols.txt +++ b/config/GMPE01_00/rels/m447dll/symbols.txt @@ -114,182 +114,182 @@ fn_1_A240 = .text:0x0000A240; // type:function size:0x34 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x64 -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC data:4byte -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x18 -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x18 data:4byte -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x18 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x58 -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x3C -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x1 data:byte -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x3C data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x144 -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x24 -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x60 -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x14 -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x20 -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x60 -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 data:double -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x24 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x60 data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x14 data:byte +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x20 scope:local +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x60 scope:local +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x50 -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x50 -lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float -lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float -lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 data:float -lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 data:float -lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float -lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float -lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 data:float -lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0x4 data:float -lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:double -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 data:float -lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double -lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 data:float -lbl_1_rodata_6D4 = .rodata:0x000006D4; // type:object size:0x4 data:float -lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float -lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float -lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float -lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float -lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float -lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float -lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x8 data:double -lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 data:float -lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 data:double -lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 data:float -lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 data:double -lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float -lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 data:double -lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float -lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float -lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float -lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x1 data:byte -lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 data:float -lbl_1_rodata_73C = .rodata:0x0000073C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x1C +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x50 data:float +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 scope:local data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6D4 = .rodata:0x000006D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 scope:local data:double +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 scope:local data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 scope:local data:double +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 scope:local data:double +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 scope:local data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 scope:local data:float +lbl_1_rodata_73C = .rodata:0x0000073C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x19 scope:local data:string lbl_1_data_1C = .data:0x0000001C; // type:object size:0x14 jumptable_1_data_30 = .data:0x00000030; // type:object size:0x28 scope:local jumptable_1_data_58 = .data:0x00000058; // type:object size:0x28 scope:local jumptable_1_data_80 = .data:0x00000080; // type:object size:0x20 scope:local lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA8 lbl_1_data_148 = .data:0x00000148; // type:object size:0x14 -lbl_1_data_160 = .data:0x00000160; // type:object size:0x1E data:string -lbl_1_data_17E = .data:0x0000017E; // type:object size:0x1E data:string -lbl_1_data_19C = .data:0x0000019C; // type:object size:0x14 -lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x1C +lbl_1_data_160 = .data:0x00000160; // type:object size:0x1E scope:local data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x1E scope:local data:string +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x10 scope:local data:string +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x1B scope:local data:string lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x2C jumptable_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 scope:local -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x40 -lbl_1_data_25C = .data:0x0000025C; // type:object size:0x18 -lbl_1_data_278 = .data:0x00000278; // type:object size:0x1A data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x40 data:float +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x18 data:float +lbl_1_data_278 = .data:0x00000278; // type:object size:0x1A scope:local data:string lbl_1_data_294 = .data:0x00000294; // type:object size:0x18 -lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x37 data:string +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x37 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:float lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float diff --git a/config/GMPE01_00/rels/m448Dll/symbols.txt b/config/GMPE01_00/rels/m448Dll/symbols.txt index d04f9849..d53e0617 100644 --- a/config/GMPE01_00/rels/m448Dll/symbols.txt +++ b/config/GMPE01_00/rels/m448Dll/symbols.txt @@ -16,135 +16,135 @@ ObjectSetup = .text:0x0000965C; // type:function size:0x4A4 fn_1_9B00 = .text:0x00009B00; // type:function size:0x120 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x14 data:4byte -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x14 data:4byte -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x14 data:4byte -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x14 data:4byte -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x14 data:4byte -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x10 data:4byte -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x10 data:4byte -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0xC data:4byte -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x54 -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x10 data:4byte -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:4byte -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x50 -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x50 -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x50 -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x24 data:4byte -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x34 data:4byte -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x24 data:4byte -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x50 -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x50 -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x18 data:4byte -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x18 data:4byte -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x8 data:4byte -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x28 data:4byte -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x28 data:4byte -lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0xC data:4byte -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0xC data:4byte -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x1 data:byte -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x14 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x14 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x14 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x14 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x54 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x50 scope:local +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x50 scope:local +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x50 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x34 scope:local data:4byte +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x50 scope:local +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x50 scope:local +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0xC scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0xC scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x28 lbl_1_data_28 = .data:0x00000028; // type:object size:0x28 lbl_1_data_50 = .data:0x00000050; // type:object size:0x2C lbl_1_data_7C = .data:0x0000007C; // type:object size:0x2C lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xB data:byte -lbl_1_data_B3 = .data:0x000000B3; // type:object size:0xD +lbl_1_data_B3 = .data:0x000000B3; // type:object size:0xB data:byte lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x2C lbl_1_data_EC = .data:0x000000EC; // type:object size:0x2C data:4byte -lbl_1_data_118 = .data:0x00000118; // type:object size:0x58 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x2C lbl_1_data_170 = .data:0x00000170; // type:object size:0x8 data:4byte lbl_1_data_178 = .data:0x00000178; // type:object size:0x20 lbl_1_data_198 = .data:0x00000198; // type:object size:0x2 data:2byte @@ -154,10 +154,10 @@ lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x4 data:4byte lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x8 data:4byte lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x8 lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x8 -lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x20 +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x20 data:float lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x10 data:float -lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x9 data:string -lbl_1_data_1F5 = .data:0x000001F5; // type:object size:0x1B +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x9 scope:local data:string +lbl_1_data_1F5 = .data:0x000001F5; // type:object size:0x19 scope:local data:string jumptable_1_data_210 = .data:0x00000210; // type:object size:0x2C scope:local jumptable_1_data_23C = .data:0x0000023C; // type:object size:0x20 scope:local lbl_1_data_25C = .data:0x0000025C; // type:object size:0x4 data:4byte @@ -167,10 +167,10 @@ lbl_1_data_268 = .data:0x00000268; // type:object size:0x4 data:float lbl_1_data_26C = .data:0x0000026C; // type:object size:0x4 data:float jumptable_1_data_270 = .data:0x00000270; // type:object size:0x24 scope:local jumptable_1_data_294 = .data:0x00000294; // type:object size:0x20 scope:local -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 data:string -lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 data:string +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 scope:local data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte @@ -178,9 +178,9 @@ lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte -lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:float lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x20 lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m449Dll/symbols.txt b/config/GMPE01_00/rels/m449Dll/symbols.txt index 2a91efc3..bfe80246 100644 --- a/config/GMPE01_00/rels/m449Dll/symbols.txt +++ b/config/GMPE01_00/rels/m449Dll/symbols.txt @@ -18,183 +18,187 @@ ObjectSetup = .text:0x000095D8; // type:function size:0x460 fn_1_9A38 = .text:0x00009A38; // type:function size:0x9C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC0 -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC0 -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC0 -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x20 data:4byte -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 data:double -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x60 -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x18 data:4byte -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x30 data:4byte -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float -lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x20 data:4byte -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:4byte -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x48 -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x48 -lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float -lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float -lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float -lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float -lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float -lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float -lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0xC data:4byte -lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0xC data:4byte -lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x1 data:byte -lbl_1_rodata_70C = .rodata:0x0000070C; // type:object size:0x4 data:float -lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 data:float -lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 data:float -lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float -lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 data:float -lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 data:float -lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 data:float -lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float -lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float -lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float -lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 scope:local +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC0 scope:local +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC0 scope:local +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC0 scope:local +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 scope:local data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x60 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 scope:local data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 scope:local data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 scope:local data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 scope:local data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x48 scope:local +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x48 scope:local +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0xC scope:local data:float +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_70C = .rodata:0x0000070C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 scope:local data:float +lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 scope:local data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float +lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 scope:local data:float +lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 scope:local data:float +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 scope:local data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x48 lbl_1_data_48 = .data:0x00000048; // type:object size:0x48 lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x38 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x50 -lbl_1_data_138 = .data:0x00000138; // type:object size:0x50 -lbl_1_data_188 = .data:0x00000188; // type:object size:0x50 -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x50 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x38 data:byte +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x50 data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x50 data:string +lbl_1_data_188 = .data:0x00000188; // type:object size:0x50 data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x50 data:string lbl_1_data_228 = .data:0x00000228; // type:object size:0x2 data:2byte lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte lbl_1_data_22C = .data:0x0000022C; // type:object size:0x4 data:4byte lbl_1_data_230 = .data:0x00000230; // type:object size:0xC data:4byte lbl_1_data_23C = .data:0x0000023C; // type:object size:0x28 data:4byte -lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 +lbl_1_data_264 = .data:0x00000264; // type:object size:0x1D scope:local data:string lbl_1_data_284 = .data:0x00000284; // type:object size:0x4 data:4byte lbl_1_data_288 = .data:0x00000288; // type:object size:0x4 data:float lbl_1_data_28C = .data:0x0000028C; // type:object size:0x4 data:float lbl_1_data_290 = .data:0x00000290; // type:object size:0x4 data:float lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:float jumptable_1_data_298 = .data:0x00000298; // type:object size:0x1C scope:local -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 data:string -lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 scope:local data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte @@ -204,7 +208,8 @@ lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x90 data:4byte diff --git a/config/GMPE01_00/rels/m450Dll/symbols.txt b/config/GMPE01_00/rels/m450Dll/symbols.txt index 8f6a0e14..37af9137 100644 --- a/config/GMPE01_00/rels/m450Dll/symbols.txt +++ b/config/GMPE01_00/rels/m450Dll/symbols.txt @@ -184,204 +184,206 @@ fn_1_23330 = .text:0x00023330; // type:function size:0x440 fn_1_23770 = .text:0x00023770; // type:function size:0x530 fn_1_23CA0 = .text:0x00023CA0; // type:function size:0x980 fn_1_24620 = .text:0x00024620; // type:function size:0x4A0C -fn_1_2902C = .text:0x0002902C; // type:function size:0x8C0 +ObjectSetup = .text:0x0002902C; // type:function size:0x8C0 fn_1_298EC = .text:0x000298EC; // type:function size:0xD0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x1 data:byte -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:4byte -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x58 -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:4byte -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x58 -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x8 data:4byte -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:4byte -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:double -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x58 scope:local +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x58 scope:local +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F data:string -lbl_1_data_9F = .data:0x0000009F; // type:object size:0xD +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0xC data:byte lbl_1_data_AC = .data:0x000000AC; // type:object size:0x8 lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4C lbl_1_data_100 = .data:0x00000100; // type:object size:0x14 -lbl_1_data_114 = .data:0x00000114; // type:object size:0x3C -lbl_1_data_150 = .data:0x00000150; // type:object size:0x3C -lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 -lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x20 -lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x10 -lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x28 -lbl_1_data_204 = .data:0x00000204; // type:object size:0x30 -lbl_1_data_234 = .data:0x00000234; // type:object size:0x20 -lbl_1_data_254 = .data:0x00000254; // type:object size:0x14 -lbl_1_data_268 = .data:0x00000268; // type:object size:0x14 -lbl_1_data_27C = .data:0x0000027C; // type:object size:0x14 -lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x12 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x13 data:string -lbl_1_data_2C9 = .data:0x000002C9; // type:object size:0x14 data:string -lbl_1_data_2DD = .data:0x000002DD; // type:object size:0x1C data:string -lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0x12 data:string -lbl_1_data_30B = .data:0x0000030B; // type:object size:0x11 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x3C data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x3C data:4byte +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 data:4byte +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x20 data:4byte +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x10 data:4byte +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x28 data:float +lbl_1_data_204 = .data:0x00000204; // type:object size:0x30 data:float +lbl_1_data_234 = .data:0x00000234; // type:object size:0x20 data:float +lbl_1_data_254 = .data:0x00000254; // type:object size:0x14 data:float +lbl_1_data_268 = .data:0x00000268; // type:object size:0x14 data:float +lbl_1_data_27C = .data:0x0000027C; // type:object size:0x14 data:float +lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x12 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x13 scope:local data:string +lbl_1_data_2C9 = .data:0x000002C9; // type:object size:0x14 scope:local data:string +lbl_1_data_2DD = .data:0x000002DD; // type:object size:0x1C scope:local data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0x12 scope:local data:string +lbl_1_data_30B = .data:0x0000030B; // type:object size:0xE scope:local data:string jumptable_1_data_31C = .data:0x0000031C; // type:object size:0x60 scope:local -lbl_1_data_37C = .data:0x0000037C; // type:object size:0x12 data:string -lbl_1_data_38E = .data:0x0000038E; // type:object size:0x12 data:string -lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x13 data:string -lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x14 data:string -lbl_1_data_3C7 = .data:0x000003C7; // type:object size:0x14 data:string -lbl_1_data_3DB = .data:0x000003DB; // type:object size:0x13 data:string -lbl_1_data_3EE = .data:0x000003EE; // type:object size:0x1E +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x12 scope:local data:string +lbl_1_data_38E = .data:0x0000038E; // type:object size:0x12 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x13 scope:local data:string +lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x14 scope:local data:string +lbl_1_data_3C7 = .data:0x000003C7; // type:object size:0x14 scope:local data:string +lbl_1_data_3DB = .data:0x000003DB; // type:object size:0x13 scope:local data:string +lbl_1_data_3EE = .data:0x000003EE; // type:object size:0x1C scope:local data:string jumptable_1_data_40C = .data:0x0000040C; // type:object size:0x44 scope:local -lbl_1_data_450 = .data:0x00000450; // type:object size:0x14 +lbl_1_data_450 = .data:0x00000450; // type:object size:0x12 scope:local data:string lbl_1_data_464 = .data:0x00000464; // type:object size:0xC data:4byte lbl_1_data_470 = .data:0x00000470; // type:object size:0xC lbl_1_data_47C = .data:0x0000047C; // type:object size:0xC data:4byte lbl_1_data_488 = .data:0x00000488; // type:object size:0xC data:4byte lbl_1_data_494 = .data:0x00000494; // type:object size:0xC data:4byte -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xC data:4byte +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xC data:float lbl_1_data_4AC = .data:0x000004AC; // type:object size:0xC data:4byte lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0xC data:4byte lbl_1_data_4C4 = .data:0x000004C4; // type:object size:0xC data:4byte @@ -393,41 +395,41 @@ lbl_1_data_500 = .data:0x00000500; // type:object size:0x4 lbl_1_data_504 = .data:0x00000504; // type:object size:0xC lbl_1_data_510 = .data:0x00000510; // type:object size:0xC lbl_1_data_51C = .data:0x0000051C; // type:object size:0x30 -lbl_1_data_54C = .data:0x0000054C; // type:object size:0x10 data:string -lbl_1_data_55C = .data:0x0000055C; // type:object size:0x10 data:string -lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 data:string -lbl_1_data_57C = .data:0x0000057C; // type:object size:0x10 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x10 data:string -lbl_1_data_59C = .data:0x0000059C; // type:object size:0x10 data:string -lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x10 data:string -lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x10 data:string +lbl_1_data_54C = .data:0x0000054C; // type:object size:0x10 scope:local data:string +lbl_1_data_55C = .data:0x0000055C; // type:object size:0x10 scope:local data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 scope:local data:string +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x10 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x10 scope:local data:string +lbl_1_data_59C = .data:0x0000059C; // type:object size:0x10 scope:local data:string +lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x10 scope:local data:string +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x10 scope:local data:string lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x80 lbl_1_data_64C = .data:0x0000064C; // type:object size:0x2E0 lbl_1_data_92C = .data:0x0000092C; // type:object size:0x20 -lbl_1_data_94C = .data:0x0000094C; // type:object size:0xA0 +lbl_1_data_94C = .data:0x0000094C; // type:object size:0xA0 data:float lbl_1_data_9EC = .data:0x000009EC; // type:object size:0x20 lbl_1_data_A0C = .data:0x00000A0C; // type:object size:0x38 data:4byte -lbl_1_data_A44 = .data:0x00000A44; // type:object size:0x13 data:string -lbl_1_data_A57 = .data:0x00000A57; // type:object size:0x13 data:string -lbl_1_data_A6A = .data:0x00000A6A; // type:object size:0x16 +lbl_1_data_A44 = .data:0x00000A44; // type:object size:0x13 scope:local data:string +lbl_1_data_A57 = .data:0x00000A57; // type:object size:0x13 scope:local data:string +lbl_1_data_A6A = .data:0x00000A6A; // type:object size:0x13 scope:local data:string lbl_1_data_A80 = .data:0x00000A80; // type:object size:0x18C -lbl_1_data_C0C = .data:0x00000C0C; // type:object size:0x13 data:string -lbl_1_data_C1F = .data:0x00000C1F; // type:object size:0x13 data:string -lbl_1_data_C32 = .data:0x00000C32; // type:object size:0x13 data:string -lbl_1_data_C45 = .data:0x00000C45; // type:object size:0x13 data:string +lbl_1_data_C0C = .data:0x00000C0C; // type:object size:0x13 scope:local data:string +lbl_1_data_C1F = .data:0x00000C1F; // type:object size:0x13 scope:local data:string +lbl_1_data_C32 = .data:0x00000C32; // type:object size:0x13 scope:local data:string +lbl_1_data_C45 = .data:0x00000C45; // type:object size:0x13 scope:local data:string lbl_1_data_C58 = .data:0x00000C58; // type:object size:0x1B8 -lbl_1_data_E10 = .data:0x00000E10; // type:object size:0x11 data:string -lbl_1_data_E21 = .data:0x00000E21; // type:object size:0x11 data:string -lbl_1_data_E32 = .data:0x00000E32; // type:object size:0x11 data:string -lbl_1_data_E43 = .data:0x00000E43; // type:object size:0x11 data:string -lbl_1_data_E54 = .data:0x00000E54; // type:object size:0x14 +lbl_1_data_E10 = .data:0x00000E10; // type:object size:0x11 scope:local data:string +lbl_1_data_E21 = .data:0x00000E21; // type:object size:0x11 scope:local data:string +lbl_1_data_E32 = .data:0x00000E32; // type:object size:0x11 scope:local data:string +lbl_1_data_E43 = .data:0x00000E43; // type:object size:0x11 scope:local data:string +lbl_1_data_E54 = .data:0x00000E54; // type:object size:0x11 scope:local data:string lbl_1_data_E68 = .data:0x00000E68; // type:object size:0x14 lbl_1_data_E7C = .data:0x00000E7C; // type:object size:0x84 lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x5C lbl_1_data_F5C = .data:0x00000F5C; // type:object size:0x10 lbl_1_data_F6C = .data:0x00000F6C; // type:object size:0x18 -lbl_1_data_F84 = .data:0x00000F84; // type:object size:0x14 -lbl_1_data_F98 = .data:0x00000F98; // type:object size:0x14 +lbl_1_data_F84 = .data:0x00000F84; // type:object size:0x14 data:float +lbl_1_data_F98 = .data:0x00000F98; // type:object size:0x14 data:float lbl_1_data_FAC = .data:0x00000FAC; // type:object size:0x18 lbl_1_data_FC4 = .data:0x00000FC4; // type:object size:0x14 lbl_1_data_FD8 = .data:0x00000FD8; // type:object size:0x14 @@ -451,47 +453,47 @@ lbl_1_data_1210 = .data:0x00001210; // type:object size:0xC lbl_1_data_121C = .data:0x0000121C; // type:object size:0xC lbl_1_data_1228 = .data:0x00001228; // type:object size:0xC lbl_1_data_1234 = .data:0x00001234; // type:object size:0x20 -lbl_1_data_1254 = .data:0x00001254; // type:object size:0x13 data:string -lbl_1_data_1267 = .data:0x00001267; // type:object size:0x13 data:string -lbl_1_data_127A = .data:0x0000127A; // type:object size:0x13 data:string -lbl_1_data_128D = .data:0x0000128D; // type:object size:0x13 data:string +lbl_1_data_1254 = .data:0x00001254; // type:object size:0x13 scope:local data:string +lbl_1_data_1267 = .data:0x00001267; // type:object size:0x13 scope:local data:string +lbl_1_data_127A = .data:0x0000127A; // type:object size:0x13 scope:local data:string +lbl_1_data_128D = .data:0x0000128D; // type:object size:0x13 scope:local data:string lbl_1_data_12A0 = .data:0x000012A0; // type:object size:0x10 -lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x13 data:string -lbl_1_data_12C3 = .data:0x000012C3; // type:object size:0x13 data:string -lbl_1_data_12D6 = .data:0x000012D6; // type:object size:0x13 data:string -lbl_1_data_12E9 = .data:0x000012E9; // type:object size:0x13 data:string -lbl_1_data_12FC = .data:0x000012FC; // type:object size:0x13 data:string -lbl_1_data_130F = .data:0x0000130F; // type:object size:0x13 data:string -lbl_1_data_1322 = .data:0x00001322; // type:object size:0x13 data:string -lbl_1_data_1335 = .data:0x00001335; // type:object size:0x13 data:string -lbl_1_data_1348 = .data:0x00001348; // type:object size:0x14 +lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x13 scope:local data:string +lbl_1_data_12C3 = .data:0x000012C3; // type:object size:0x13 scope:local data:string +lbl_1_data_12D6 = .data:0x000012D6; // type:object size:0x13 scope:local data:string +lbl_1_data_12E9 = .data:0x000012E9; // type:object size:0x13 scope:local data:string +lbl_1_data_12FC = .data:0x000012FC; // type:object size:0x13 scope:local data:string +lbl_1_data_130F = .data:0x0000130F; // type:object size:0x13 scope:local data:string +lbl_1_data_1322 = .data:0x00001322; // type:object size:0x13 scope:local data:string +lbl_1_data_1335 = .data:0x00001335; // type:object size:0x13 scope:local data:string +lbl_1_data_1348 = .data:0x00001348; // type:object size:0x13 scope:local data:string lbl_1_data_135C = .data:0x0000135C; // type:object size:0x24 lbl_1_data_1380 = .data:0x00001380; // type:object size:0x38 data:4byte lbl_1_data_13B8 = .data:0x000013B8; // type:object size:0x38 data:4byte -lbl_1_data_13F0 = .data:0x000013F0; // type:object size:0x13 data:string -lbl_1_data_1403 = .data:0x00001403; // type:object size:0x13 data:string -lbl_1_data_1416 = .data:0x00001416; // type:object size:0x13 data:string -lbl_1_data_1429 = .data:0x00001429; // type:object size:0x13 data:string -lbl_1_data_143C = .data:0x0000143C; // type:object size:0x14 +lbl_1_data_13F0 = .data:0x000013F0; // type:object size:0x13 scope:local data:string +lbl_1_data_1403 = .data:0x00001403; // type:object size:0x13 scope:local data:string +lbl_1_data_1416 = .data:0x00001416; // type:object size:0x13 scope:local data:string +lbl_1_data_1429 = .data:0x00001429; // type:object size:0x13 scope:local data:string +lbl_1_data_143C = .data:0x0000143C; // type:object size:0x13 scope:local data:string lbl_1_data_1450 = .data:0x00001450; // type:object size:0xB4 lbl_1_data_1504 = .data:0x00001504; // type:object size:0x50 -lbl_1_data_1554 = .data:0x00001554; // type:object size:0x13 data:string -lbl_1_data_1567 = .data:0x00001567; // type:object size:0x13 data:string -lbl_1_data_157A = .data:0x0000157A; // type:object size:0x13 data:string -lbl_1_data_158D = .data:0x0000158D; // type:object size:0x13 data:string -lbl_1_data_15A0 = .data:0x000015A0; // type:object size:0x13 data:string -lbl_1_data_15B3 = .data:0x000015B3; // type:object size:0x12 data:string -lbl_1_data_15C5 = .data:0x000015C5; // type:object size:0x25 data:string -lbl_1_data_15EA = .data:0x000015EA; // type:object size:0x22 data:string -lbl_1_data_160C = .data:0x0000160C; // type:object size:0x9 data:string -lbl_1_data_1615 = .data:0x00001615; // type:object size:0xA data:string -lbl_1_data_161F = .data:0x0000161F; // type:object size:0xE data:string -lbl_1_data_162D = .data:0x0000162D; // type:object size:0x6 data:string -lbl_1_data_1633 = .data:0x00001633; // type:object size:0x1D data:string +lbl_1_data_1554 = .data:0x00001554; // type:object size:0x13 scope:local data:string +lbl_1_data_1567 = .data:0x00001567; // type:object size:0x13 scope:local data:string +lbl_1_data_157A = .data:0x0000157A; // type:object size:0x13 scope:local data:string +lbl_1_data_158D = .data:0x0000158D; // type:object size:0x13 scope:local data:string +lbl_1_data_15A0 = .data:0x000015A0; // type:object size:0x13 scope:local data:string +lbl_1_data_15B3 = .data:0x000015B3; // type:object size:0x12 scope:local data:string +lbl_1_data_15C5 = .data:0x000015C5; // type:object size:0x25 scope:local data:string +lbl_1_data_15EA = .data:0x000015EA; // type:object size:0x22 scope:local data:string +lbl_1_data_160C = .data:0x0000160C; // type:object size:0x9 scope:local data:string +lbl_1_data_1615 = .data:0x00001615; // type:object size:0xA scope:local data:string +lbl_1_data_161F = .data:0x0000161F; // type:object size:0xE scope:local data:string +lbl_1_data_162D = .data:0x0000162D; // type:object size:0x6 scope:local data:string +lbl_1_data_1633 = .data:0x00001633; // type:object size:0x1D scope:local data:string jumptable_1_data_1650 = .data:0x00001650; // type:object size:0x70 scope:local -lbl_1_data_16C0 = .data:0x000016C0; // type:object size:0x1C +lbl_1_data_16C0 = .data:0x000016C0; // type:object size:0x1B scope:local data:string jumptable_1_data_16DC = .data:0x000016DC; // type:object size:0xC4 scope:local -lbl_1_data_17A0 = .data:0x000017A0; // type:object size:0x24 data:string +lbl_1_data_17A0 = .data:0x000017A0; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte @@ -528,7 +530,8 @@ lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:4byte lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x4 data:float -lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x8 data:float +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:float +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:float lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x4 data:4byte lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m453Dll/splits.txt b/config/GMPE01_00/rels/m453Dll/splits.txt index 918d68a7..fcf25f98 100644 --- a/config/GMPE01_00/rels/m453Dll/splits.txt +++ b/config/GMPE01_00/rels/m453Dll/splits.txt @@ -17,12 +17,12 @@ REL/m453Dll/main.c: REL/m453Dll/map.c: .text start:0x000064E8 end:0x00008F48 - .rodata start:0x00000198 end:0x00000248 + .rodata start:0x00000198 end:0x00000240 .data start:0x00000158 end:0x00000BC0 .bss start:0x00000060 end:0x000000C0 REL/m453Dll/score.c: .text start:0x00008F48 end:0x00009674 - .rodata start:0x00000248 end:0x00000278 + .rodata start:0x00000240 end:0x00000278 .data start:0x00000BC0 end:0x00000BCC .bss start:0x000000C0 end:0x000000C8 diff --git a/config/GMPE01_00/rels/m453Dll/symbols.txt b/config/GMPE01_00/rels/m453Dll/symbols.txt index 19f422d2..298e2fb6 100644 --- a/config/GMPE01_00/rels/m453Dll/symbols.txt +++ b/config/GMPE01_00/rels/m453Dll/symbols.txt @@ -83,135 +83,137 @@ fn_1_9484 = .text:0x00009484; // type:function size:0x8C fn_1_9510 = .text:0x00009510; // type:function size:0x164 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x9 data:byte -lbl_1_rodata_8D = .rodata:0x0000008D; // type:object size:0xB data:byte -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x9 scope:local data:byte +lbl_1_rodata_8D = .rodata:0x0000008D; // type:object size:0xB scope:local data:byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte lbl_1_data_4 = .data:0x00000004; // type:object size:0xC lbl_1_data_10 = .data:0x00000010; // type:object size:0xC lbl_1_data_1C = .data:0x0000001C; // type:object size:0x28 -lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 scope:local data:string lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 data:4byte jumptable_1_data_8C = .data:0x0000008C; // type:object size:0x1C scope:local jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local @@ -220,18 +222,18 @@ lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte -lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 -lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 -lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 -lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 -lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 -lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 -lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 -lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 -lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 -lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 -lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 +lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 data:float +lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 data:float +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 data:float +lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 data:float +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 data:float +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 data:float +lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 data:float +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 data:float +lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 data:float +lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 data:float +lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 data:float +lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 data:float lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC data:4byte @@ -247,7 +249,7 @@ lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x6 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:2byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x14 data:2byte lbl_1_bss_32 = .bss:0x00000032; // type:object size:0x2 data:2byte diff --git a/config/GMPE01_00/rels/m455Dll/symbols.txt b/config/GMPE01_00/rels/m455Dll/symbols.txt index 0038cefd..5cefea64 100644 --- a/config/GMPE01_00/rels/m455Dll/symbols.txt +++ b/config/GMPE01_00/rels/m455Dll/symbols.txt @@ -68,203 +68,205 @@ fn_1_9E00 = .text:0x00009E00; // type:function size:0x118 fn_1_9F18 = .text:0x00009F18; // type:function size:0x250 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float lbl_1_data_50 = .data:0x00000050; // type:object size:0x4 -lbl_1_data_54 = .data:0x00000054; // type:object size:0xC -lbl_1_data_60 = .data:0x00000060; // type:object size:0xC -lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC data:float +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC data:float +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x23 scope:local data:string lbl_1_data_90 = .data:0x00000090; // type:object size:0x2 data:2byte lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 data:4byte lbl_1_data_98 = .data:0x00000098; // type:object size:0x4 data:4byte jumptable_1_data_9C = .data:0x0000009C; // type:object size:0x28 scope:local -lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C data:string +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C scope:local data:string lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x28 -lbl_1_data_108 = .data:0x00000108; // type:object size:0x30 -lbl_1_data_138 = .data:0x00000138; // type:object size:0x1C -lbl_1_data_154 = .data:0x00000154; // type:object size:0x10 -lbl_1_data_164 = .data:0x00000164; // type:object size:0xC -lbl_1_data_170 = .data:0x00000170; // type:object size:0x1 data:byte -lbl_1_data_174 = .data:0x00000174; // type:object size:0x5 data:string -lbl_1_data_179 = .data:0x00000179; // type:object size:0xB data:string +lbl_1_data_108 = .data:0x00000108; // type:object size:0x30 data:float +lbl_1_data_138 = .data:0x00000138; // type:object size:0x19 scope:local data:string +lbl_1_data_154 = .data:0x00000154; // type:object size:0x10 data:float +lbl_1_data_164 = .data:0x00000164; // type:object size:0xC data:float +lbl_1_data_170 = .data:0x00000170; // type:object size:0x4 data:byte +lbl_1_data_174 = .data:0x00000174; // type:object size:0x5 scope:local data:string +lbl_1_data_179 = .data:0x00000179; // type:object size:0xB scope:local data:string lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 data:float lbl_1_data_18C = .data:0x0000018C; // type:object size:0x10 -lbl_1_data_19C = .data:0x0000019C; // type:object size:0x3C -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30 -lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x3C data:float +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30 data:float +lbl_1_data_208 = .data:0x00000208; // type:object size:0x4 data:byte lbl_1_data_20C = .data:0x0000020C; // type:object size:0x50 -lbl_1_data_25C = .data:0x0000025C; // type:object size:0x7 data:string -lbl_1_data_263 = .data:0x00000263; // type:object size:0x7 data:string -lbl_1_data_26A = .data:0x0000026A; // type:object size:0x1 data:byte -lbl_1_data_26E = .data:0x0000026E; // type:object size:0x1 data:byte -lbl_1_data_272 = .data:0x00000272; // type:object size:0x6 data:byte -lbl_1_data_278 = .data:0x00000278; // type:object size:0x30 -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x138 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x7 scope:local data:string +lbl_1_data_263 = .data:0x00000263; // type:object size:0x7 scope:local data:string +lbl_1_data_26A = .data:0x0000026A; // type:object size:0x4 data:byte +lbl_1_data_26E = .data:0x0000026E; // type:object size:0x4 data:byte +lbl_1_data_272 = .data:0x00000272; // type:object size:0x4 data:byte +lbl_1_data_278 = .data:0x00000278; // type:object size:0x30 data:float +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x138 data:float lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x68 -lbl_1_data_448 = .data:0x00000448; // type:object size:0xD0 -lbl_1_data_518 = .data:0x00000518; // type:object size:0xD0 -lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x18 -lbl_1_data_600 = .data:0x00000600; // type:object size:0x1 data:byte -lbl_1_data_604 = .data:0x00000604; // type:object size:0x6C +lbl_1_data_448 = .data:0x00000448; // type:object size:0xD0 data:float +lbl_1_data_518 = .data:0x00000518; // type:object size:0xD0 data:float +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x18 data:float +lbl_1_data_600 = .data:0x00000600; // type:object size:0x4 data:byte +lbl_1_data_604 = .data:0x00000604; // type:object size:0x6C data:float lbl_1_data_670 = .data:0x00000670; // type:object size:0x24 -lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 data:byte -lbl_1_data_69C = .data:0x0000069C; // type:object size:0x1 data:byte -lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10 -lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 +lbl_1_data_694 = .data:0x00000694; // type:object size:0x4 data:byte +lbl_1_data_698 = .data:0x00000698; // type:object size:0x4 data:byte +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x4 data:byte +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10 data:float +lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 data:float +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte @@ -281,7 +283,8 @@ lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0xC data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m456Dll/splits.txt b/config/GMPE01_00/rels/m456Dll/splits.txt index 139bf5cd..a2e9bbaa 100644 --- a/config/GMPE01_00/rels/m456Dll/splits.txt +++ b/config/GMPE01_00/rels/m456Dll/splits.txt @@ -10,13 +10,13 @@ REL/executor.c: .text start:0x00000000 end:0x000000A0 REL/m456Dll/main.c: - .text start:0x000000A0 end:0x00002FAC + .text start:0x000000A0 end:0x00002DF4 .rodata start:0x00000000 end:0x000000F0 .data start:0x00000000 end:0x000002E8 .bss start:0x00000000 end:0x00000090 REL/m456Dll/stage.c: - .text start:0x00002FAC end:0x00009C68 + .text start:0x00002DF4 end:0x00009C68 .rodata start:0x000000F0 end:0x00000318 .data start:0x000002E8 end:0x000007D0 .bss start:0x00000090 end:0x000000BC diff --git a/config/GMPE01_00/rels/m456Dll/symbols.txt b/config/GMPE01_00/rels/m456Dll/symbols.txt index 18fc4b5a..68d90044 100644 --- a/config/GMPE01_00/rels/m456Dll/symbols.txt +++ b/config/GMPE01_00/rels/m456Dll/symbols.txt @@ -65,167 +65,168 @@ fn_1_9900 = .text:0x00009900; // type:function size:0x118 fn_1_9A18 = .text:0x00009A18; // type:function size:0x250 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float lbl_1_data_50 = .data:0x00000050; // type:object size:0x4 lbl_1_data_54 = .data:0x00000054; // type:object size:0xC lbl_1_data_60 = .data:0x00000060; // type:object size:0xC -lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x23 scope:local data:string lbl_1_data_90 = .data:0x00000090; // type:object size:0x4 data:4byte lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 data:4byte jumptable_1_data_98 = .data:0x00000098; // type:object size:0x30 scope:local -lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x1C data:string +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x1C scope:local data:string lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x50 lbl_1_data_134 = .data:0x00000134; // type:object size:0x30 lbl_1_data_164 = .data:0x00000164; // type:object size:0x20 @@ -237,8 +238,8 @@ lbl_1_data_230 = .data:0x00000230; // type:object size:0xB8 lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x30 lbl_1_data_318 = .data:0x00000318; // type:object size:0x1 data:byte lbl_1_data_31C = .data:0x0000031C; // type:object size:0x50 -lbl_1_data_36C = .data:0x0000036C; // type:object size:0x7 data:string -lbl_1_data_373 = .data:0x00000373; // type:object size:0x7 data:string +lbl_1_data_36C = .data:0x0000036C; // type:object size:0x7 scope:local data:string +lbl_1_data_373 = .data:0x00000373; // type:object size:0x7 scope:local data:string lbl_1_data_37A = .data:0x0000037A; // type:object size:0x1 data:byte lbl_1_data_37E = .data:0x0000037E; // type:object size:0x1 data:byte lbl_1_data_382 = .data:0x00000382; // type:object size:0x6 data:byte @@ -255,6 +256,7 @@ lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x8 data:byte lbl_1_data_7AC = .data:0x000007AC; // type:object size:0x1 data:byte lbl_1_data_7B0 = .data:0x000007B0; // type:object size:0x10 lbl_1_data_7C0 = .data:0x000007C0; // type:object size:0x10 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float @@ -272,7 +274,8 @@ lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x10 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0xC data:4byte lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m457Dll/symbols.txt b/config/GMPE01_00/rels/m457Dll/symbols.txt index 02f3cb11..790cf96b 100644 --- a/config/GMPE01_00/rels/m457Dll/symbols.txt +++ b/config/GMPE01_00/rels/m457Dll/symbols.txt @@ -1,179 +1,179 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -fn_1_A0 = .text:0x000000A0; // type:function size:0x3CC -fn_1_46C = .text:0x0000046C; // type:function size:0x2858 -fn_1_2CC4 = .text:0x00002CC4; // type:function size:0x283C -fn_1_5500 = .text:0x00005500; // type:function size:0x220 -fn_1_5720 = .text:0x00005720; // type:function size:0x29C -fn_1_59BC = .text:0x000059BC; // type:function size:0xB3C -fn_1_64F8 = .text:0x000064F8; // type:function size:0xAB8 -fn_1_6FB0 = .text:0x00006FB0; // type:function size:0x5F4 -fn_1_75A4 = .text:0x000075A4; // type:function size:0xC0 +CameraPrintDebug = .text:0x000000A0; // type:function size:0x3CC scope:local +M457PlayerExec = .text:0x0000046C; // type:function size:0x2858 scope:local +M457GameExec = .text:0x00002CC4; // type:function size:0x283C scope:local +WrestleMesMain = .text:0x00005500; // type:function size:0x220 scope:local +ShoveMesMain = .text:0x00005720; // type:function size:0x29C scope:local +M457Main = .text:0x000059BC; // type:function size:0xB3C scope:local +M457GameSetup = .text:0x000064F8; // type:function size:0xAB8 scope:local +M457PlayerSetup = .text:0x00006FB0; // type:function size:0x5F4 scope:local +M457Setup = .text:0x000075A4; // type:function size:0xC0 scope:local ObjectSetup = .text:0x00007664; // type:function size:0x480 -fn_1_7AE4 = .text:0x00007AE4; // type:function size:0x9C +M457Exit = .text:0x00007AE4; // type:function size:0x9C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x24 data:4byte -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 data:4byte -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x64 -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x8 data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x8 data:4byte -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x40 data:4byte -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x40 data:4byte -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:4byte -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x90 -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x8 data:double -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:double -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 data:double -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x14 data:4byte -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:4byte -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x40 data:4byte -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x40 data:4byte -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x5C -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x5C -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0xC data:4byte -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0xC data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x1 data:byte -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float -lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x5C -lbl_1_data_5C = .data:0x0000005C; // type:object size:0x5C data:4byte -lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 -lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 -lbl_1_data_148 = .data:0x00000148; // type:object size:0xC -lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 -lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C -lbl_1_data_220 = .data:0x00000220; // type:object size:0x6C -lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x4 data:4byte -lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x4 data:4byte -lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x4 data:4byte -lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte -lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 data:string -lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 data:string +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x64 scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x90 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x8 scope:local data:double +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x5C scope:local +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x5C scope:local +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0xC scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0xC scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C scope:local data:4byte +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC scope:local data:byte +lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local +lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local data:float +sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local data:float +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 scope:local data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 scope:local data:2byte +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 scope:local data:4byte +windSeNo = .data:0x000002AC; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 scope:local data:2byte +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string +lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local -lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte -lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float -lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float -lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 scope:local data:4byte +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 scope:local data:float jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local -lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 data:string -lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 data:string -lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:float -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte -lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte -lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x8 data:4byte -lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte -lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte +lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string +lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string +lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +m457MesEndF = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +againstBrowserF = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lightId = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +objman = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +gameState = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte +gameObj = .bss:0x00000064; // type:object size:0x4 scope:local data:4byte +playerObj = .bss:0x00000068; // type:object size:0x8 scope:local data:4byte +omViewObj = .bss:0x00000070; // type:object size:0x4 scope:local data:4byte +mainObj = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 scope:local data:4byte diff --git a/config/GMPE01_00/rels/m458Dll/symbols.txt b/config/GMPE01_00/rels/m458Dll/symbols.txt index 0a2dc8ab..fda69ac1 100644 --- a/config/GMPE01_00/rels/m458Dll/symbols.txt +++ b/config/GMPE01_00/rels/m458Dll/symbols.txt @@ -13,113 +13,113 @@ ObjectSetup = .text:0x0000691C; // type:function size:0x480 fn_1_6D9C = .text:0x00006D9C; // type:function size:0xD0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:4byte -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x94 -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x50 -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:4byte -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x70 -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:4byte -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:4byte -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0xC data:4byte -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0xC data:4byte -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x94 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x50 scope:local data:4byte +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x70 scope:local +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0xC scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0xC scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 lbl_1_data_8 = .data:0x00000008; // type:object size:0x8 data:4byte lbl_1_data_10 = .data:0x00000010; // type:object size:0x28 lbl_1_data_38 = .data:0x00000038; // type:object size:0x28 lbl_1_data_60 = .data:0x00000060; // type:object size:0x28 -lbl_1_data_88 = .data:0x00000088; // type:object size:0xA -lbl_1_data_92 = .data:0x00000092; // type:object size:0xA +lbl_1_data_88 = .data:0x00000088; // type:object size:0xA data:byte +lbl_1_data_92 = .data:0x00000092; // type:object size:0xA data:byte lbl_1_data_9C = .data:0x0000009C; // type:object size:0x28 lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x28 lbl_1_data_EC = .data:0x000000EC; // type:object size:0x28 @@ -130,22 +130,23 @@ lbl_1_data_130 = .data:0x00000130; // type:object size:0x4 data:4byte lbl_1_data_134 = .data:0x00000134; // type:object size:0x4 data:4byte lbl_1_data_138 = .data:0x00000138; // type:object size:0x24 data:2byte lbl_1_data_15C = .data:0x0000015C; // type:object size:0x4 data:4byte -lbl_1_data_160 = .data:0x00000160; // type:object size:0x9 data:string -lbl_1_data_169 = .data:0x00000169; // type:object size:0x3 data:string +lbl_1_data_160 = .data:0x00000160; // type:object size:0x9 scope:local data:string +lbl_1_data_169 = .data:0x00000169; // type:object size:0x3 scope:local data:string lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 data:4byte jumptable_1_data_170 = .data:0x00000170; // type:object size:0x30 scope:local lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x4 data:4byte lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x4 data:float lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x4 data:float lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x4 data:float -lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x4 data:string +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x4 scope:local data:string jumptable_1_data_1B4 = .data:0x000001B4; // type:object size:0x34 scope:local lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x2C -lbl_1_data_214 = .data:0x00000214; // type:object size:0x8 data:string -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x19 data:string -lbl_1_data_235 = .data:0x00000235; // type:object size:0x24 data:string +lbl_1_data_214 = .data:0x00000214; // type:object size:0x8 scope:local data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x19 scope:local data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte @@ -156,7 +157,8 @@ lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:float lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x50 lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte @@ -165,11 +167,13 @@ lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte -lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x8 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte -lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x8 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:4byte lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x1C0 data:4byte diff --git a/config/GMPE01_00/rels/m459dll/symbols.txt b/config/GMPE01_00/rels/m459dll/symbols.txt index 5520ff1e..7e0f8085 100644 --- a/config/GMPE01_00/rels/m459dll/symbols.txt +++ b/config/GMPE01_00/rels/m459dll/symbols.txt @@ -64,91 +64,91 @@ fn_1_6198 = .text:0x00006198; // type:function size:0x2C0 fn_1_6458 = .text:0x00006458; // type:function size:0x128 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x78 -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x18 -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:4byte -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x20 -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x20 -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x18C -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x10 -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x8 -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x14 -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x14 -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x14 -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x14 -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0xC data:4byte -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0xC data:4byte -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0xC data:4byte -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x48 -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B data:string -lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1B data:string +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 scope:local +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x78 scope:local +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x18 scope:local +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x20 scope:local +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x20 scope:local +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x18C scope:local +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x10 scope:local +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x8 scope:local +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x14 scope:local +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x14 scope:local +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x14 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x14 scope:local +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0xC scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0xC scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0xC scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x48 scope:local +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B scope:local data:string +lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1B scope:local data:string jumptable_1_data_38 = .data:0x00000038; // type:object size:0x38 scope:local lbl_1_data_70 = .data:0x00000070; // type:object size:0x1C lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte diff --git a/config/GMPE01_00/rels/m460Dll/symbols.txt b/config/GMPE01_00/rels/m460Dll/symbols.txt index 0261cad3..bd1cca6f 100644 --- a/config/GMPE01_00/rels/m460Dll/symbols.txt +++ b/config/GMPE01_00/rels/m460Dll/symbols.txt @@ -86,167 +86,167 @@ fn_1_91E4 = .text:0x000091E4; // type:function size:0x8C fn_1_9270 = .text:0x00009270; // type:function size:0x164 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC data:4byte -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:4byte -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x50 -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x14 data:4byte -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x10 data:4byte -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x10 data:4byte -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x30 data:4byte -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x18 data:4byte -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x18 data:4byte -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 data:4byte -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:4byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x1 data:byte -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x1 data:byte -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0xC data:4byte -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x50 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x10 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x30 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x18 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x18 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -259,9 +259,9 @@ lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 lbl_1_data_94 = .data:0x00000094; // type:object size:0xC lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC -lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x1 data:byte -lbl_1_data_BC = .data:0x000000BC; // type:object size:0x1A data:string -lbl_1_data_D6 = .data:0x000000D6; // type:object size:0x19 data:string +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x4 data:byte +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x1A scope:local data:string +lbl_1_data_D6 = .data:0x000000D6; // type:object size:0x19 scope:local data:string lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x20 lbl_1_data_110 = .data:0x00000110; // type:object size:0xA0 jumptable_1_data_1B0 = .data:0x000001B0; // type:object size:0x24 scope:local @@ -273,10 +273,10 @@ lbl_1_data_334 = .data:0x00000334; // type:object size:0xC lbl_1_data_340 = .data:0x00000340; // type:object size:0xC lbl_1_data_34C = .data:0x0000034C; // type:object size:0x8 lbl_1_data_354 = .data:0x00000354; // type:object size:0x8 -lbl_1_data_35C = .data:0x0000035C; // type:object size:0x7 data:string -lbl_1_data_363 = .data:0x00000363; // type:object size:0x7 data:string +lbl_1_data_35C = .data:0x0000035C; // type:object size:0x7 scope:local data:string +lbl_1_data_363 = .data:0x00000363; // type:object size:0x7 scope:local data:string lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC -lbl_1_data_378 = .data:0x00000378; // type:object size:0x8 data:byte +lbl_1_data_378 = .data:0x00000378; // type:object size:0x4 data:byte lbl_1_data_380 = .data:0x00000380; // type:object size:0xC lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m461Dll/symbols.txt b/config/GMPE01_00/rels/m461Dll/symbols.txt index 02cf6c76..27492436 100644 --- a/config/GMPE01_00/rels/m461Dll/symbols.txt +++ b/config/GMPE01_00/rels/m461Dll/symbols.txt @@ -70,94 +70,94 @@ fn_1_ADDC = .text:0x0000ADDC; // type:function size:0x458 fn_1_B234 = .text:0x0000B234; // type:function size:0x7F8 fn_1_BA2C = .text:0x0000BA2C; // type:function size:0xF44 fn_1_C970 = .text:0x0000C970; // type:function size:0x240 -fn_1_CBB0 = .text:0x0000CBB0; // type:function size:0xB5C +ObjectSetup = .text:0x0000CBB0; // type:function size:0xB5C fn_1_D70C = .text:0x0000D70C; // type:function size:0xD0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x20 +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC data:4byte lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC lbl_1_data_B8 = .data:0x000000B8; // type:object size:0xC data:4byte @@ -179,14 +179,14 @@ lbl_1_data_240 = .data:0x00000240; // type:object size:0x24 lbl_1_data_264 = .data:0x00000264; // type:object size:0xC data:4byte lbl_1_data_270 = .data:0x00000270; // type:object size:0x80 lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x30 -lbl_1_data_320 = .data:0x00000320; // type:object size:0x23 data:string -lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 data:string -lbl_1_data_34C = .data:0x0000034C; // type:object size:0x6 data:string -lbl_1_data_352 = .data:0x00000352; // type:object size:0x1D data:string -lbl_1_data_36F = .data:0x0000036F; // type:object size:0x1D data:string -lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1C +lbl_1_data_320 = .data:0x00000320; // type:object size:0x23 scope:local data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 scope:local data:string +lbl_1_data_34C = .data:0x0000034C; // type:object size:0x6 scope:local data:string +lbl_1_data_352 = .data:0x00000352; // type:object size:0x1D scope:local data:string +lbl_1_data_36F = .data:0x0000036F; // type:object size:0x1D scope:local data:string +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1B scope:local data:string jumptable_1_data_3A8 = .data:0x000003A8; // type:object size:0x20 scope:local -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 data:string +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float @@ -199,7 +199,8 @@ lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x10 -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x10 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x50 lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m462Dll/symbols.txt b/config/GMPE01_00/rels/m462Dll/symbols.txt index d702b245..0af8810d 100644 --- a/config/GMPE01_00/rels/m462Dll/symbols.txt +++ b/config/GMPE01_00/rels/m462Dll/symbols.txt @@ -34,101 +34,101 @@ fn_1_7D40 = .text:0x00007D40; // type:function size:0x60 fn_1_7DA0 = .text:0x00007DA0; // type:function size:0x3BC _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 -lbl_1_data_30 = .data:0x00000030; // type:object size:0x60 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x60 data:float lbl_1_data_90 = .data:0x00000090; // type:object size:0x30 data:float lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x3C lbl_1_data_FC = .data:0x000000FC; // type:object size:0x14 data:float -lbl_1_data_110 = .data:0x00000110; // type:object size:0xB data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0xB scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float diff --git a/config/GMPE01_00/rels/m463Dll/splits.txt b/config/GMPE01_00/rels/m463Dll/splits.txt index ceb93b07..f1310070 100644 --- a/config/GMPE01_00/rels/m463Dll/splits.txt +++ b/config/GMPE01_00/rels/m463Dll/splits.txt @@ -6,8 +6,11 @@ Sections: .data type:data align:8 .bss type:bss align:8 +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + REL/m463Dll/main.c: - .text start:0x00000000 end:0x000066B8 + .text start:0x000000A0 end:0x000066B8 .rodata start:0x00000000 end:0x00000414 .data start:0x00000000 end:0x0000024D .bss start:0x00000000 end:0x000005AC diff --git a/config/GMPE01_00/rels/m463Dll/symbols.txt b/config/GMPE01_00/rels/m463Dll/symbols.txt index 87b16e8f..e336c47f 100644 --- a/config/GMPE01_00/rels/m463Dll/symbols.txt +++ b/config/GMPE01_00/rels/m463Dll/symbols.txt @@ -8,123 +8,123 @@ fn_1_45F8 = .text:0x000045F8; // type:function size:0xDA8 fn_1_53A0 = .text:0x000053A0; // type:function size:0x4B0 fn_1_5850 = .text:0x00005850; // type:function size:0x854 fn_1_60A4 = .text:0x000060A4; // type:function size:0x98 -fn_1_613C = .text:0x0000613C; // type:function size:0x460 +ObjectSetup = .text:0x0000613C; // type:function size:0x460 fn_1_659C = .text:0x0000659C; // type:function size:0x11C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC data:4byte -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:4byte -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x94 -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:4byte -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x50 -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x70 -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x24 data:4byte -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x24 data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x10 data:4byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0xC data:4byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0xC data:4byte -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x1 data:byte -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x90 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x50 scope:local +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x70 scope:local +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0xC scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0xC scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 lbl_1_data_24 = .data:0x00000024; // type:object size:0x24 lbl_1_data_48 = .data:0x00000048; // type:object size:0x24 lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 lbl_1_data_90 = .data:0x00000090; // type:object size:0x24 -lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 -lbl_1_data_BD = .data:0x000000BD; // type:object size:0xB +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 data:byte +lbl_1_data_BD = .data:0x000000BD; // type:object size:0x9 data:byte lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x24 lbl_1_data_EC = .data:0x000000EC; // type:object size:0x24 lbl_1_data_110 = .data:0x00000110; // type:object size:0x24 -lbl_1_data_134 = .data:0x00000134; // type:object size:0x18 data:float +lbl_1_data_134 = .data:0x00000134; // type:object size:0x18 data:4byte lbl_1_data_14C = .data:0x0000014C; // type:object size:0x2 data:2byte lbl_1_data_14E = .data:0x0000014E; // type:object size:0x2 data:2byte lbl_1_data_150 = .data:0x00000150; // type:object size:0x4 data:4byte -lbl_1_data_154 = .data:0x00000154; // type:object size:0x24 data:4byte -lbl_1_data_178 = .data:0x00000178; // type:object size:0x9 data:string -lbl_1_data_181 = .data:0x00000181; // type:object size:0x3 data:string +lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte +lbl_1_data_178 = .data:0x00000178; // type:object size:0x9 scope:local data:string +lbl_1_data_181 = .data:0x00000181; // type:object size:0x3 scope:local data:string lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 data:4byte jumptable_1_data_188 = .data:0x00000188; // type:object size:0x1C scope:local lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x10 @@ -134,30 +134,30 @@ lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4 data:float lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x4 data:float jumptable_1_data_1C4 = .data:0x000001C4; // type:object size:0x20 scope:local lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x2C -lbl_1_data_210 = .data:0x00000210; // type:object size:0x19 data:string -lbl_1_data_229 = .data:0x00000229; // type:object size:0x24 data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0x19 scope:local data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x8 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x8 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x2D0 lbl_1_bss_32C = .bss:0x0000032C; // type:object size:0x4 data:4byte -lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x24 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x24 scope:local data:4byte lbl_1_bss_354 = .bss:0x00000354; // type:object size:0x4 data:4byte lbl_1_bss_358 = .bss:0x00000358; // type:object size:0x4 data:4byte lbl_1_bss_35C = .bss:0x0000035C; // type:object size:0x1C0 data:4byte diff --git a/config/GMPE01_00/rels/mentDll/splits.txt b/config/GMPE01_00/rels/mentDll/splits.txt index 57db84a5..77b37cde 100644 --- a/config/GMPE01_00/rels/mentDll/splits.txt +++ b/config/GMPE01_00/rels/mentDll/splits.txt @@ -9,9 +9,11 @@ Sections: REL/mentDll/common.c: .text start:0x00000000 end:0x0000658C .rodata start:0x00000000 end:0x000000E8 + .data start:0x00000000 end:0x000000D8 + .bss start:0x00000000 end:0x00000008 REL/mentDll/main.c: .text start:0x0000658C end:0x00023A38 .rodata start:0x000000E8 end:0x00000528 - .data start:0x00000000 end:0x000006D0 - .bss start:0x00000000 end:0x000036C4 + .data start:0x000000D8 end:0x000006D0 + .bss start:0x00000008 end:0x000036C4 diff --git a/config/GMPE01_00/rels/mentDll/symbols.txt b/config/GMPE01_00/rels/mentDll/symbols.txt index 1c9c6ddd..fe98fd1f 100644 --- a/config/GMPE01_00/rels/mentDll/symbols.txt +++ b/config/GMPE01_00/rels/mentDll/symbols.txt @@ -204,222 +204,223 @@ fn_1_225F4 = .text:0x000225F4; // type:function size:0xE38 fn_1_2342C = .text:0x0002342C; // type:function size:0x60C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0xC data:4byte -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x1 data:byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1C data:4byte -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0xC data:4byte -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x10 data:4byte -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x18 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0xC data:4byte -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC data:4byte -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC data:4byte -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x18 data:4byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC data:4byte -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC data:4byte -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC data:4byte -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1C data:4byte -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x10 data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x18 data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0xC data:4byte -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0xC data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x1C data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0xC data:4byte -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0xC data:4byte -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0xC data:4byte -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0xC data:4byte -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC data:4byte -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x18 data:4byte -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x90 -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x18 data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x40 data:4byte -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 data:4byte -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 data:4byte -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0xC scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0xC scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0xC scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0xC scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0xC scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0xC scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0xC scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0xC scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x90 scope:local +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte lbl_1_data_70 = .data:0x00000070; // type:object size:0x4 data:4byte -lbl_1_data_74 = .data:0x00000074; // type:object size:0x22 data:string -lbl_1_data_96 = .data:0x00000096; // type:object size:0x1A data:string -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1A data:string -lbl_1_data_CA = .data:0x000000CA; // type:object size:0xE data:string +lbl_1_data_74 = .data:0x00000074; // type:object size:0x22 scope:local data:string +lbl_1_data_96 = .data:0x00000096; // type:object size:0x1A scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1A scope:local data:string +lbl_1_data_CA = .data:0x000000CA; // type:object size:0xE scope:local data:string lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x48 data:float lbl_1_data_120 = .data:0x00000120; // type:object size:0x18 jumptable_1_data_138 = .data:0x00000138; // type:object size:0x30 scope:local -lbl_1_data_168 = .data:0x00000168; // type:object size:0x16 data:string -lbl_1_data_17E = .data:0x0000017E; // type:object size:0x15 data:string -lbl_1_data_193 = .data:0x00000193; // type:object size:0x17 data:string -lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x16 data:string -lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x17 data:string -lbl_1_data_1D7 = .data:0x000001D7; // type:object size:0x16 data:string -lbl_1_data_1ED = .data:0x000001ED; // type:object size:0x17 data:string -lbl_1_data_204 = .data:0x00000204; // type:object size:0x16 data:string -lbl_1_data_21A = .data:0x0000021A; // type:object size:0xF data:string -lbl_1_data_229 = .data:0x00000229; // type:object size:0x1C data:string -lbl_1_data_245 = .data:0x00000245; // type:object size:0x1D data:string -lbl_1_data_262 = .data:0x00000262; // type:object size:0x14 data:string -lbl_1_data_276 = .data:0x00000276; // type:object size:0x15 data:string -lbl_1_data_28B = .data:0x0000028B; // type:object size:0x14 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x15 +lbl_1_data_168 = .data:0x00000168; // type:object size:0x16 scope:local data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x15 scope:local data:string +lbl_1_data_193 = .data:0x00000193; // type:object size:0x17 scope:local data:string +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x16 scope:local data:string +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x17 scope:local data:string +lbl_1_data_1D7 = .data:0x000001D7; // type:object size:0x16 scope:local data:string +lbl_1_data_1ED = .data:0x000001ED; // type:object size:0x17 scope:local data:string +lbl_1_data_204 = .data:0x00000204; // type:object size:0x16 scope:local data:string +lbl_1_data_21A = .data:0x0000021A; // type:object size:0xF scope:local data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x1C scope:local data:string +lbl_1_data_245 = .data:0x00000245; // type:object size:0x1D scope:local data:string +lbl_1_data_262 = .data:0x00000262; // type:object size:0x14 scope:local data:string +lbl_1_data_276 = .data:0x00000276; // type:object size:0x15 scope:local data:string +lbl_1_data_28B = .data:0x0000028B; // type:object size:0x14 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x14 scope:local data:string lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3C lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte -lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 data:string -lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 data:string -lbl_1_data_334 = .data:0x00000334; // type:object size:0x2A data:string -lbl_1_data_35E = .data:0x0000035E; // type:object size:0x3 data:string -lbl_1_data_361 = .data:0x00000361; // type:object size:0x1B data:string -lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1A data:string -lbl_1_data_396 = .data:0x00000396; // type:object size:0x29 data:string -lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x2A data:string -lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0x2A data:string -lbl_1_data_413 = .data:0x00000413; // type:object size:0x2B data:string -lbl_1_data_43E = .data:0x0000043E; // type:object size:0x29 data:string -lbl_1_data_467 = .data:0x00000467; // type:object size:0x2B data:string -lbl_1_data_492 = .data:0x00000492; // type:object size:0x20 data:string -lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x22 +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 scope:local data:string +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 scope:local data:string +lbl_1_data_334 = .data:0x00000334; // type:object size:0x2A scope:local data:string +lbl_1_data_35E = .data:0x0000035E; // type:object size:0x3 scope:local data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0x1B scope:local data:string +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1A scope:local data:string +lbl_1_data_396 = .data:0x00000396; // type:object size:0x29 scope:local data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x2A scope:local data:string +lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0x2A scope:local data:string +lbl_1_data_413 = .data:0x00000413; // type:object size:0x2B scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x29 scope:local data:string +lbl_1_data_467 = .data:0x00000467; // type:object size:0x2B scope:local data:string +lbl_1_data_492 = .data:0x00000492; // type:object size:0x20 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x20 scope:local data:string jumptable_1_data_4D4 = .data:0x000004D4; // type:object size:0x54 scope:local -lbl_1_data_528 = .data:0x00000528; // type:object size:0x1B data:string -lbl_1_data_543 = .data:0x00000543; // type:object size:0x1A data:string -lbl_1_data_55D = .data:0x0000055D; // type:object size:0xF data:string -lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 data:string +lbl_1_data_528 = .data:0x00000528; // type:object size:0x1B scope:local data:string +lbl_1_data_543 = .data:0x00000543; // type:object size:0x1A scope:local data:string +lbl_1_data_55D = .data:0x0000055D; // type:object size:0xF scope:local data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 scope:local data:string lbl_1_data_57C = .data:0x0000057C; // type:object size:0x40 lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x20 lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x64 data:float lbl_1_data_640 = .data:0x00000640; // type:object size:0x50 data:4byte lbl_1_data_690 = .data:0x00000690; // type:object size:0x40 data:4byte -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x14 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x10 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x40 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float diff --git a/config/GMPE01_00/rels/mgmodedll/symbols.txt b/config/GMPE01_00/rels/mgmodedll/symbols.txt index 98eaa055..a969c989 100644 --- a/config/GMPE01_00/rels/mgmodedll/symbols.txt +++ b/config/GMPE01_00/rels/mgmodedll/symbols.txt @@ -381,7 +381,7 @@ lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data: lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0xC scope:local data:float lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float @@ -431,9 +431,9 @@ lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 scope:local data: lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 scope:local data:float lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 scope:local data:float -lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0xC scope:local data:4byte -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0xC scope:local data:4byte -lbl_1_rodata_6CC = .rodata:0x000006CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0xC scope:local data:float +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0xC scope:local data:float +lbl_1_rodata_6CC = .rodata:0x000006CC; // type:object size:0xC scope:local data:float lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 scope:local data:float @@ -446,7 +446,7 @@ lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 scope:local data: lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0x4 scope:local data:float lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x4 scope:local data:float lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x8 scope:local data:double -lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 scope:local data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 scope:local data:float lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 scope:local data:double lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float @@ -475,39 +475,39 @@ lbl_1_data_90 = .data:0x00000090; // type:object size:0xA scope:local data:strin lbl_1_data_9A = .data:0x0000009A; // type:object size:0x6 scope:local lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x2 scope:local data:2byte lbl_1_data_A2 = .data:0x000000A2; // type:object size:0xE -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 data:float lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x10 -lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x6 -lbl_1_data_D6 = .data:0x000000D6; // type:object size:0xA -lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x20 +messInsertBase$836 = .data:0x000000D0; // type:object size:0x6 scope:local +customMinNum$837 = .data:0x000000D6; // type:object size:0x8 scope:local +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x20 data:float lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x10 -lbl_1_data_120 = .data:0x00000120; // type:object size:0x28 +lbl_1_data_110 = .data:0x00000110; // type:object size:0xC +mgRecordIdxTbl = .data:0x00000120; // type:object size:0x28 lbl_1_data_148 = .data:0x00000148; // type:object size:0x2 data:2byte lbl_1_data_14A = .data:0x0000014A; // type:object size:0x8 -lbl_1_data_152 = .data:0x00000152; // type:object size:0x16 +lbl_1_data_152 = .data:0x00000152; // type:object size:0x10 data:4byte lbl_1_data_168 = .data:0x00000168; // type:object size:0x2 data:2byte -lbl_1_data_16A = .data:0x0000016A; // type:object size:0x32 +lbl_1_data_16A = .data:0x0000016A; // type:object size:0x30 lbl_1_data_19C = .data:0x0000019C; // type:object size:0x10 lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x10 -lbl_1_data_1BC = .data:0x000001BC; // type:object size:0xA data:string -lbl_1_data_1C6 = .data:0x000001C6; // type:object size:0xE data:string -lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xB data:string -lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x24 data:string -lbl_1_data_208 = .data:0x00000208; // type:object size:0x26 data:string -lbl_1_data_22E = .data:0x0000022E; // type:object size:0x27 data:string -lbl_1_data_255 = .data:0x00000255; // type:object size:0x1C data:string -lbl_1_data_271 = .data:0x00000271; // type:object size:0x1B data:string -lbl_1_data_28C = .data:0x0000028C; // type:object size:0x1C data:string -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x1D data:string -lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0xC data:string -lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x1A data:string -lbl_1_data_2EB = .data:0x000002EB; // type:object size:0x1A data:string -lbl_1_data_305 = .data:0x00000305; // type:object size:0x27 +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0xA scope:local data:string +lbl_1_data_1C6 = .data:0x000001C6; // type:object size:0xE scope:local data:string +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xB scope:local data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x24 scope:local data:string +lbl_1_data_208 = .data:0x00000208; // type:object size:0x26 scope:local data:string +lbl_1_data_22E = .data:0x0000022E; // type:object size:0x27 scope:local data:string +lbl_1_data_255 = .data:0x00000255; // type:object size:0x1C scope:local data:string +lbl_1_data_271 = .data:0x00000271; // type:object size:0x1B scope:local data:string +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x1C scope:local data:string +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x1D scope:local data:string +lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0xC scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x1A scope:local data:string +lbl_1_data_2EB = .data:0x000002EB; // type:object size:0x1A scope:local data:string +lbl_1_data_305 = .data:0x00000305; // type:object size:0x26 scope:local data:string lbl_1_data_32C = .data:0x0000032C; // type:object size:0x40 data:4byte lbl_1_data_36C = .data:0x0000036C; // type:object size:0x60 lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x18 data:4byte -lbl_1_data_3E4 = .data:0x000003E4; // type:object size:0x64 +lbl_1_data_3E4 = .data:0x000003E4; // type:object size:0x64 data:float lbl_1_data_448 = .data:0x00000448; // type:object size:0x40 lbl_1_data_488 = .data:0x00000488; // type:object size:0x4 data:4byte lbl_1_data_490 = .data:0x00000490; // type:object size:0x2D8 @@ -516,7 +516,7 @@ lbl_1_data_9C0 = .data:0x000009C0; // type:object size:0x20 lbl_1_data_9E0 = .data:0x000009E0; // type:object size:0x20 lbl_1_data_A00 = .data:0x00000A00; // type:object size:0x2 data:2byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +mgModeEvtNo = .bss:0x00000004; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x264 data:4byte lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x8 data:float lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x18 data:4byte @@ -531,8 +531,8 @@ lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x2 data:2byte lbl_1_bss_2CE = .bss:0x000002CE; // type:object size:0x2 data:2byte lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x4 data:4byte lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x4 data:4byte -lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x4 data:4byte -lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x4 data:4byte +objman = .bss:0x000002D8; // type:object size:0x4 data:4byte +outViewObj = .bss:0x000002DC; // type:object size:0x4 data:4byte lbl_1_bss_2E2 = .bss:0x000002E2; // type:object size:0x2 data:2byte lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0x2 data:2byte lbl_1_bss_2E6 = .bss:0x000002E6; // type:object size:0x2 data:2byte @@ -548,22 +548,22 @@ lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x28 data:2byte lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x8 lbl_1_bss_348 = .bss:0x00000348; // type:object size:0x2 data:2byte lbl_1_bss_34A = .bss:0x0000034A; // type:object size:0x8 data:2byte -lbl_1_bss_352 = .bss:0x00000352; // type:object size:0x1E -lbl_1_bss_370 = .bss:0x00000370; // type:object size:0xC -lbl_1_bss_37C = .bss:0x0000037C; // type:object size:0xC +lbl_1_bss_352 = .bss:0x00000352; // type:object size:0x1C +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0xC scope:local +lbl_1_bss_37C = .bss:0x0000037C; // type:object size:0xC scope:local lbl_1_bss_388 = .bss:0x00000388; // type:object size:0x2 data:2byte lbl_1_bss_38A = .bss:0x0000038A; // type:object size:0x2 data:2byte lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x8 lbl_1_bss_394 = .bss:0x00000394; // type:object size:0x2 data:2byte -lbl_1_bss_396 = .bss:0x00000396; // type:object size:0xA +lbl_1_bss_396 = .bss:0x00000396; // type:object size:0x8 lbl_1_bss_3A0 = .bss:0x000003A0; // type:object size:0x4 data:4byte lbl_1_bss_3A4 = .bss:0x000003A4; // type:object size:0x2 data:2byte lbl_1_bss_3A8 = .bss:0x000003A8; // type:object size:0x2 data:2byte lbl_1_bss_3AA = .bss:0x000003AA; // type:object size:0x2 data:2byte -lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x2 data:2byte -lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x2 data:2byte -lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x2 data:2byte -lbl_1_bss_3B8 = .bss:0x000003B8; // type:object size:0x8 data:2byte +lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x4 data:2byte +lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x4 data:2byte +lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x4 data:2byte +lbl_1_bss_3B8 = .bss:0x000003B8; // type:object size:0x2 data:2byte lbl_1_bss_3C0 = .bss:0x000003C0; // type:object size:0x4 data:4byte lbl_1_bss_3C4 = .bss:0x000003C4; // type:object size:0x4 data:4byte lbl_1_bss_3C8 = .bss:0x000003C8; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/modeseldll/symbols.txt b/config/GMPE01_00/rels/modeseldll/symbols.txt index 53057676..1dd29df7 100644 --- a/config/GMPE01_00/rels/modeseldll/symbols.txt +++ b/config/GMPE01_00/rels/modeseldll/symbols.txt @@ -73,48 +73,48 @@ lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:d lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float @@ -188,9 +188,9 @@ lbl_1_data_80 = .data:0x00000080; // type:object size:0xC lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18 lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x18 lbl_1_data_BC = .data:0x000000BC; // type:object size:0x18 -lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x14 data:string -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x9 data:string -lbl_1_data_F1 = .data:0x000000F1; // type:object size:0xF +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x14 scope:local data:string +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x9 scope:local data:string +lbl_1_data_F1 = .data:0x000000F1; // type:object size:0xF scope:local lbl_1_data_100 = .data:0x00000100; // type:object size:0x2 data:2byte lbl_1_data_104 = .data:0x00000104; // type:object size:0x118 data:float lbl_1_data_21C = .data:0x0000021C; // type:object size:0x48 data:4byte diff --git a/config/GMPE01_00/rels/mpexDll/splits.txt b/config/GMPE01_00/rels/mpexDll/splits.txt index 965cdf04..c53e66f4 100644 --- a/config/GMPE01_00/rels/mpexDll/splits.txt +++ b/config/GMPE01_00/rels/mpexDll/splits.txt @@ -6,8 +6,11 @@ Sections: .data type:data align:8 .bss type:bss align:8 +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + REL/mpexDll/main.c: - .text start:0x00000000 end:0x00003044 + .text start:0x000000A0 end:0x00003044 .rodata start:0x00000000 end:0x000000A0 .data start:0x00000000 end:0x00000240 .bss start:0x00000000 end:0x000000A8 diff --git a/config/GMPE01_00/rels/mpexDll/symbols.txt b/config/GMPE01_00/rels/mpexDll/symbols.txt index 85a09fc4..994e2382 100644 --- a/config/GMPE01_00/rels/mpexDll/symbols.txt +++ b/config/GMPE01_00/rels/mpexDll/symbols.txt @@ -3,7 +3,7 @@ _epilog = .text:0x00000054; // type:function size:0x4C scope:global fn_1_A0 = .text:0x000000A0; // type:function size:0xE8 fn_1_188 = .text:0x00000188; // type:function size:0x38 fn_1_1C0 = .text:0x000001C0; // type:function size:0x70 -fn_1_230 = .text:0x00000230; // type:function size:0x68 +ObjectSetup = .text:0x00000230; // type:function size:0x68 fn_1_298 = .text:0x00000298; // type:function size:0xDC fn_1_374 = .text:0x00000374; // type:function size:0xC4 fn_1_438 = .text:0x00000438; // type:function size:0x3E4 @@ -213,218 +213,220 @@ fn_1_1CB80 = .text:0x0001CB80; // type:function size:0x4AC fn_1_1D02C = .text:0x0001D02C; // type:function size:0x16C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0xC data:4byte -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0xC data:4byte -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x78 -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC data:4byte -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0xC data:4byte -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC data:4byte -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:4byte -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC data:4byte -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC data:4byte -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:4byte -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xB4 -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x6C -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x2C data:4byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0xB0 -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0xC data:4byte -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x18 data:4byte -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC data:4byte -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float -lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 data:double -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x38 data:4byte -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x4F data:string -lbl_1_data_4F = .data:0x0000004F; // type:object size:0x50 data:string -lbl_1_data_9F = .data:0x0000009F; // type:object size:0x50 data:string -lbl_1_data_EF = .data:0x000000EF; // type:object size:0x4E data:string -lbl_1_data_13D = .data:0x0000013D; // type:object size:0x50 data:string -lbl_1_data_18D = .data:0x0000018D; // type:object size:0x4F data:string -lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 data:string -lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A data:string -lbl_1_data_218 = .data:0x00000218; // type:object size:0x1A data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0xE data:string -lbl_1_data_240 = .data:0x00000240; // type:object size:0x54 +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 scope:local data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 scope:local data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x78 scope:local +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xB4 scope:local +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x6C scope:local +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x2C scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0xB0 scope:local +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x38 scope:local data:4byte +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4F scope:local data:string +lbl_1_data_4F = .data:0x0000004F; // type:object size:0x50 scope:local data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0x50 scope:local data:string +lbl_1_data_EF = .data:0x000000EF; // type:object size:0x4E scope:local data:string +lbl_1_data_13D = .data:0x0000013D; // type:object size:0x50 scope:local data:string +lbl_1_data_18D = .data:0x0000018D; // type:object size:0x4F scope:local data:string +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 scope:local data:string +lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A scope:local data:string +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1A scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0xE scope:local data:string +lbl_1_data_240 = .data:0x00000240; // type:object size:0x54 data:float lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:4byte lbl_1_data_298 = .data:0x00000298; // type:object size:0x4 data:4byte -lbl_1_data_29C = .data:0x0000029C; // type:object size:0x18 +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x15 scope:local data:string lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x10 data:4byte lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x4 data:4byte -lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x3 data:string -lbl_1_data_2CB = .data:0x000002CB; // type:object size:0x5 data:string -lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x19 data:string -lbl_1_data_2E9 = .data:0x000002E9; // type:object size:0x12 data:string -lbl_1_data_2FB = .data:0x000002FB; // type:object size:0x29 +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x3 scope:local data:string +lbl_1_data_2CB = .data:0x000002CB; // type:object size:0x5 scope:local data:string +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x19 scope:local data:string +lbl_1_data_2E9 = .data:0x000002E9; // type:object size:0x12 scope:local data:string +lbl_1_data_2FB = .data:0x000002FB; // type:object size:0x28 scope:local data:string lbl_1_data_324 = .data:0x00000324; // type:object size:0x4 data:4byte lbl_1_data_328 = .data:0x00000328; // type:object size:0x4 data:4byte lbl_1_data_32C = .data:0x0000032C; // type:object size:0xC data:4byte -lbl_1_data_338 = .data:0x00000338; // type:object size:0x2B data:string -lbl_1_data_363 = .data:0x00000363; // type:object size:0x28 data:string -lbl_1_data_38B = .data:0x0000038B; // type:object size:0x5 data:string -lbl_1_data_390 = .data:0x00000390; // type:object size:0x4 data:string -lbl_1_data_394 = .data:0x00000394; // type:object size:0x4 +lbl_1_data_338 = .data:0x00000338; // type:object size:0x2B scope:local data:string +lbl_1_data_363 = .data:0x00000363; // type:object size:0x28 scope:local data:string +lbl_1_data_38B = .data:0x0000038B; // type:object size:0x5 scope:local data:string +lbl_1_data_390 = .data:0x00000390; // type:object size:0x4 scope:local data:string +lbl_1_data_394 = .data:0x00000394; // type:object size:0x3 scope:local data:string jumptable_1_data_398 = .data:0x00000398; // type:object size:0x2C scope:local -lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x3C data:string -lbl_1_data_400 = .data:0x00000400; // type:object size:0x16 data:string -lbl_1_data_416 = .data:0x00000416; // type:object size:0x1A data:string -lbl_1_data_430 = .data:0x00000430; // type:object size:0x1A data:string -lbl_1_data_44A = .data:0x0000044A; // type:object size:0x1A data:string -lbl_1_data_464 = .data:0x00000464; // type:object size:0x17 data:string -lbl_1_data_47B = .data:0x0000047B; // type:object size:0x16 data:string -lbl_1_data_491 = .data:0x00000491; // type:object size:0x16 data:string -lbl_1_data_4A7 = .data:0x000004A7; // type:object size:0x19 data:string -lbl_1_data_4C0 = .data:0x000004C0; // type:object size:0x16 data:string -lbl_1_data_4D6 = .data:0x000004D6; // type:object size:0x42 -lbl_1_data_518 = .data:0x00000518; // type:object size:0x3C data:string -lbl_1_data_554 = .data:0x00000554; // type:object size:0x19 data:string -lbl_1_data_56D = .data:0x0000056D; // type:object size:0x1A data:string -lbl_1_data_587 = .data:0x00000587; // type:object size:0x3D +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x3C scope:local data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x16 scope:local data:string +lbl_1_data_416 = .data:0x00000416; // type:object size:0x1A scope:local data:string +lbl_1_data_430 = .data:0x00000430; // type:object size:0x1A scope:local data:string +lbl_1_data_44A = .data:0x0000044A; // type:object size:0x1A scope:local data:string +lbl_1_data_464 = .data:0x00000464; // type:object size:0x17 scope:local data:string +lbl_1_data_47B = .data:0x0000047B; // type:object size:0x16 scope:local data:string +lbl_1_data_491 = .data:0x00000491; // type:object size:0x16 scope:local data:string +lbl_1_data_4A7 = .data:0x000004A7; // type:object size:0x19 scope:local data:string +lbl_1_data_4C0 = .data:0x000004C0; // type:object size:0x16 scope:local data:string +lbl_1_data_4D6 = .data:0x000004D6; // type:object size:0x3B scope:local data:string +lbl_1_data_518 = .data:0x00000518; // type:object size:0x3C scope:local data:string +lbl_1_data_554 = .data:0x00000554; // type:object size:0x19 scope:local data:string +lbl_1_data_56D = .data:0x0000056D; // type:object size:0x1A scope:local data:string +lbl_1_data_587 = .data:0x00000587; // type:object size:0x3A scope:local data:string lbl_1_data_5C4 = .data:0x000005C4; // type:object size:0x20 data:4byte lbl_1_data_5E4 = .data:0x000005E4; // type:object size:0x40 data:4byte lbl_1_data_624 = .data:0x00000624; // type:object size:0x70 @@ -435,8 +437,9 @@ lbl_1_data_74C = .data:0x0000074C; // type:object size:0x10 lbl_1_data_75C = .data:0x0000075C; // type:object size:0x20 lbl_1_data_77C = .data:0x0000077C; // type:object size:0x4 data:4byte lbl_1_data_780 = .data:0x00000780; // type:object size:0x8 data:4byte -lbl_1_data_788 = .data:0x00000788; // type:object size:0x318 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x64 data:4byte +fontDataTbl = .data:0x00000788; // type:object size:0x318 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x60 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/mstory2Dll/splits.txt b/config/GMPE01_00/rels/mstory2Dll/splits.txt index 43465253..aa6bd0d5 100644 --- a/config/GMPE01_00/rels/mstory2Dll/splits.txt +++ b/config/GMPE01_00/rels/mstory2Dll/splits.txt @@ -27,24 +27,24 @@ REL/mstory2Dll/board_clear.c: REL/mstory2Dll/board_miss.c: .text start:0x0000E570 end:0x000123C8 .rodata start:0x00000248 end:0x00000310 - .data start:0x00000698 end:0x00000D50 + .data start:0x00000698 end:0x00000850 .bss start:0x000004E0 end:0x00000790 REL/mstory2Dll/mg_clear.c: .text start:0x000123C8 end:0x00016060 .rodata start:0x00000310 end:0x000003D0 - .data start:0x00000D50 end:0x00000DB8 + .data start:0x00000850 end:0x00000DB8 .bss start:0x00000790 end:0x00000968 REL/mstory2Dll/mg_miss.c: .text start:0x00016060 end:0x000186D0 - .rodata start:0x000003D0 end:0x00000440 + .rodata start:0x000003D0 end:0x00000438 .data start:0x00000DB8 end:0x00000EF8 .bss start:0x00000968 end:0x00000B38 REL/mstory2Dll/ending.c: .text start:0x000186D0 end:0x0001B560 - .rodata start:0x00000440 end:0x000004B8 + .rodata start:0x00000438 end:0x000004B8 .data start:0x00000EF8 end:0x00001113 .bss start:0x00000B38 end:0x00000D10 diff --git a/config/GMPE01_00/rels/mstory2Dll/symbols.txt b/config/GMPE01_00/rels/mstory2Dll/symbols.txt index de1259ef..f0c05621 100644 --- a/config/GMPE01_00/rels/mstory2Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory2Dll/symbols.txt @@ -5,7 +5,7 @@ _prolog = .text:0x00000344; // type:function size:0x54 scope:global _epilog = .text:0x00000398; // type:function size:0x4C scope:global fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 -fn_1_6AC = .text:0x000006AC; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 fn_1_864 = .text:0x00000864; // type:function size:0x28 fn_1_88C = .text:0x0000088C; // type:function size:0x20 fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 @@ -265,397 +265,398 @@ fn_1_1B870 = .text:0x0001B870; // type:function size:0x9C fn_1_1B90C = .text:0x0001B90C; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC data:4byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 data:byte -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 data:byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC data:4byte -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 data:byte -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC data:4byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC data:4byte -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 data:byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 data:byte -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte -lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 data:string -lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 data:string -lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0xF +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 -lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 data:string -lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 data:string +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local -lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A data:string -lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A data:string -lbl_1_data_278 = .data:0x00000278; // type:object size:0xE data:string -lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 data:string -lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 data:string -lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string -lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string -lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 -lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 -lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string -lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 data:string +lbl_1_data_328 = .data:0x00000328; // type:object size:0x40 +lbl_1_data_368 = .data:0x00000368; // type:object size:0x20 data:float +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x2C lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 data:string -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 data:string -lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 data:string -lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 data:string -lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 data:string -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 data:string -lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string -lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string -lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string -lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string -lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF data:string -lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string -lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string -lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 data:string -lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 data:string -lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 data:string -lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 data:string -lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 data:string -lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 data:string -lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA data:string -lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string -lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string -lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string -lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF scope:local data:string +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string +lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 data:float lbl_1_data_698 = .data:0x00000698; // type:object size:0x1C lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0x20 -lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string -lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string -lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string -lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 data:string -lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 data:string -lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 data:string -lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 data:string -lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 data:string -lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 data:string -lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string -lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string -lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte -lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 data:string -lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 data:string -lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 data:string -lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 data:string -lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 data:string -lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 data:string -lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 data:string -lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 data:string -lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 data:string -lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 data:string -lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 data:string -lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA data:string -lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C data:string -lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string -lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string -lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string -lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string -lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 data:string -lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string -lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string -lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string -lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 data:string -lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 data:string -lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 data:string -lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 data:string -lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 data:string -lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 data:string -lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 data:string -lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string -lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string -lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string -lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string -lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C data:string +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 scope:local data:string +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C scope:local data:string lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte -lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 data:string -lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 data:string -lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 data:string -lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 data:string -lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 data:string -lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 data:string -lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 data:string -lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 data:string -lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 data:string -lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 data:string -lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 data:string -lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA data:string -lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C data:string -lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D data:string -lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 data:string -lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 data:string -lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 data:string -lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 data:string -lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 data:string -lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 data:string -lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string -lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 -lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x20 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x44 data:float diff --git a/config/GMPE01_00/rels/mstory3Dll/symbols.txt b/config/GMPE01_00/rels/mstory3Dll/symbols.txt index a6159435..4863cac3 100644 --- a/config/GMPE01_00/rels/mstory3Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory3Dll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x2C8 _prolog = .text:0x0000036C; // type:function size:0x54 scope:global _epilog = .text:0x000003C0; // type:function size:0x4C scope:global fn_1_40C = .text:0x0000040C; // type:function size:0xE4 -fn_1_4F0 = .text:0x000004F0; // type:function size:0xE4 +ObjectSetup = .text:0x000004F0; // type:function size:0xE4 fn_1_5D4 = .text:0x000005D4; // type:function size:0x28 fn_1_5FC = .text:0x000005FC; // type:function size:0x20 fn_1_61C = .text:0x0000061C; // type:function size:0xD8 @@ -202,315 +202,315 @@ fn_1_1E558 = .text:0x0001E558; // type:function size:0x2C8 fn_1_1E820 = .text:0x0001E820; // type:function size:0x8E0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC data:4byte -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC data:4byte -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC data:4byte -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 data:4byte -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC data:4byte -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 data:4byte -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 data:4byte -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 data:4byte -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 data:4byte -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 data:4byte -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 data:4byte -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 data:4byte -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x1 data:byte -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C data:4byte -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float -lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 data:4byte -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C data:4byte -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 data:4byte -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 data:double -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 data:double -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 scope:local data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 -lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 data:string -lbl_1_data_95 = .data:0x00000095; // type:object size:0xD data:string +lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0xD scope:local data:string lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 -lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 data:string -lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 data:string -lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A data:string -lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A data:string -lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE data:string +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 scope:local data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A scope:local data:string +lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A scope:local data:string +lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE scope:local data:string lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 lbl_1_data_200 = .data:0x00000200; // type:object size:0x50 -lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 data:string -lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 data:string -lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 data:string -lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 data:string -lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 data:string -lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 data:string -lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 data:string -lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF data:string -lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D data:string -lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C data:string -lbl_1_data_364 = .data:0x00000364; // type:object size:0x8 data:4byte -lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC -lbl_1_data_378 = .data:0x00000378; // type:object size:0xF data:string -lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 data:string +lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 scope:local data:string +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 scope:local data:string +lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 scope:local data:string +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 scope:local data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 scope:local data:string +lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D scope:local data:string +lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C scope:local data:string +lbl_1_data_364 = .data:0x00000364; // type:object size:0x4 data:4byte +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC data:float +lbl_1_data_378 = .data:0x00000378; // type:object size:0xF scope:local data:string +lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 scope:local data:string jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 data:string -lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 data:string -lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 data:string -lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 data:string -lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 data:string -lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 data:string -lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 data:string -lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 data:string -lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 data:string -lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 data:string -lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 data:string -lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x12 +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 scope:local data:string +lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 scope:local data:string +lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 scope:local data:string +lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 scope:local data:string +lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 scope:local data:string +lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 scope:local data:string +lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 scope:local data:string +lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x10 scope:local data:string lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 -lbl_1_data_78C = .data:0x0000078C; // type:object size:0x5 -lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 data:string -lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 data:string -lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 data:string -lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 data:string -lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 data:string -lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 data:string -lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 data:string -lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 data:string -lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF data:string -lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C data:string -lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D data:string -lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 data:string -lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 data:string -lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 data:string -lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 data:string -lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 data:string -lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A data:string -lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A data:string -lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x1B -lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 data:string -lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 data:string +lbl_1_data_78C = .data:0x0000078C; // type:object size:0x50 +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 scope:local data:string +lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 scope:local data:string +lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 scope:local data:string +lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 scope:local data:string +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 scope:local data:string +lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 scope:local data:string +lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 scope:local data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF scope:local data:string +lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C scope:local data:string +lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D scope:local data:string +lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 scope:local data:string +lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 scope:local data:string +lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 scope:local data:string +lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 scope:local data:string +lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 scope:local data:string +lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A scope:local data:string +lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A scope:local data:string +lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x19 scope:local data:string +lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 scope:local data:string +lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:float @@ -542,7 +542,7 @@ lbl_1_bss_18F4 = .bss:0x000018F4; // type:object size:0xA0 lbl_1_bss_1994 = .bss:0x00001994; // type:object size:0x28 data:4byte lbl_1_bss_19BC = .bss:0x000019BC; // type:object size:0x28 data:4byte lbl_1_bss_19E4 = .bss:0x000019E4; // type:object size:0x28 data:4byte -lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2DC data:float +lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2D8 data:float lbl_1_bss_1CE8 = .bss:0x00001CE8; // type:object size:0x2 data:2byte lbl_1_bss_1CEC = .bss:0x00001CEC; // type:object size:0x4 data:4byte lbl_1_bss_1CF0 = .bss:0x00001CF0; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/mstoryDll/splits.txt b/config/GMPE01_00/rels/mstoryDll/splits.txt index 1c6cb09d..14c897fa 100644 --- a/config/GMPE01_00/rels/mstoryDll/splits.txt +++ b/config/GMPE01_00/rels/mstoryDll/splits.txt @@ -10,13 +10,13 @@ REL/mstoryDll/main.c: .text start:0x00000000 end:0x00007090 .rodata start:0x00000000 end:0x00000108 .data start:0x00000000 end:0x00000190 - .bss start:0x00000000 end:0x00000058 + .bss start:0x00000000 end:0x000000A8 REL/mstoryDll/board_clear.c: .text start:0x00007090 end:0x0000A830 .rodata start:0x00000108 end:0x00000268 .data start:0x00000190 end:0x00000388 - .bss start:0x00000058 end:0x000002C8 + .bss start:0x000000A8 end:0x000002C8 REL/mstoryDll/board_miss.c: .text start:0x0000A830 end:0x0000E710 diff --git a/config/GMPE01_00/rels/mstoryDll/symbols.txt b/config/GMPE01_00/rels/mstoryDll/symbols.txt index 9bc5210b..93875bb3 100644 --- a/config/GMPE01_00/rels/mstoryDll/symbols.txt +++ b/config/GMPE01_00/rels/mstoryDll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x344 _prolog = .text:0x000003E8; // type:function size:0x54 scope:global _epilog = .text:0x0000043C; // type:function size:0x4C scope:global fn_1_488 = .text:0x00000488; // type:function size:0x1D0 -fn_1_658 = .text:0x00000658; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 fn_1_828 = .text:0x00000828; // type:function size:0x28 fn_1_850 = .text:0x00000850; // type:function size:0x20 fn_1_870 = .text:0x00000870; // type:function size:0xD8 @@ -189,283 +189,284 @@ fn_1_13E2C = .text:0x00013E2C; // type:function size:0x324 fn_1_14150 = .text:0x00014150; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC data:4byte -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 data:byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC data:2byte -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 data:4byte -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 data:4byte -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 data:4byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 data:4byte -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 data:4byte -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 data:byte -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 data:4byte -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C data:4byte -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xA scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 data:string -lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 data:string -lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A data:string -lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 data:string -lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string -lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string -lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string -lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string -lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE scope:local data:string lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 data:string -lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 data:string -lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string -lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string -lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string -lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A data:string -lbl_1_data_354 = .data:0x00000354; // type:object size:0x30 +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A scope:local data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0x30 data:float lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C -lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string -lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 data:string -lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 data:string -lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 data:string -lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 data:string -lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 data:string -lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 data:string -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA data:string -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string -lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string -lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string -lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string -lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 data:string -lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 scope:local data:string +lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 data:float lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 -lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 data:string -lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 data:string -lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 data:string -lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 data:string -lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 data:string -lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 data:string -lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 data:string -lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 data:string -lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF data:string -lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C data:string -lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D data:string -lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C data:string -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 data:string -lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string -lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string -lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string -lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string -lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 data:string +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 scope:local data:string lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C -lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string -lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string -lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 data:string -lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 data:string -lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 data:string -lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 data:string -lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 data:string -lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 data:string -lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string -lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string -lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string -lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string -lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A data:string -lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A scope:local data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0xC data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 diff --git a/config/GMPE01_00/rels/nisDll/splits.txt b/config/GMPE01_00/rels/nisDll/splits.txt index ac3125d0..4554248b 100644 --- a/config/GMPE01_00/rels/nisDll/splits.txt +++ b/config/GMPE01_00/rels/nisDll/splits.txt @@ -2,4 +2,8 @@ Sections: .text type:code align:4 .ctors type:rodata align:4 .dtors type:rodata align:4 - .data type:data align:8 + .rodata type:rodata align:8 + +REL/nisDll/main.c: + .text start:0x00000000 end:0x0000017C + .rodata start:0x00000000 end:0x00000010 diff --git a/config/GMPE01_00/rels/nisDll/symbols.txt b/config/GMPE01_00/rels/nisDll/symbols.txt index 1143328c..8cabd560 100644 --- a/config/GMPE01_00/rels/nisDll/symbols.txt +++ b/config/GMPE01_00/rels/nisDll/symbols.txt @@ -1,4 +1,4 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x68 +ObjectSetup = .text:0x00000000; // type:function size:0x68 fn_1_68 = .text:0x00000068; // type:function size:0x2C _prolog = .text:0x00000094; // type:function size:0x9C scope:global _epilog = .text:0x00000130; // type:function size:0x4C scope:global diff --git a/config/GMPE01_00/rels/present/symbols.txt b/config/GMPE01_00/rels/present/symbols.txt index 415738fe..332b6bce 100644 --- a/config/GMPE01_00/rels/present/symbols.txt +++ b/config/GMPE01_00/rels/present/symbols.txt @@ -1,75 +1,75 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ObjectSetup = .text:0x000000A0; // type:function size:0xA4 -fn_1_144 = .text:0x00000144; // type:function size:0x110 -fn_1_254 = .text:0x00000254; // type:function size:0xE0 -fn_1_334 = .text:0x00000334; // type:function size:0x128 -fn_1_45C = .text:0x0000045C; // type:function size:0xF4 -fn_1_550 = .text:0x00000550; // type:function size:0x34 -fn_1_584 = .text:0x00000584; // type:function size:0x34 -fn_1_5B8 = .text:0x000005B8; // type:function size:0x34 -fn_1_5EC = .text:0x000005EC; // type:function size:0xC8 -fn_1_6B4 = .text:0x000006B4; // type:function size:0x23C -fn_1_8F0 = .text:0x000008F0; // type:function size:0x30 -fn_1_920 = .text:0x00000920; // type:function size:0x84 -fn_1_9A4 = .text:0x000009A4; // type:function size:0x84 -fn_1_A28 = .text:0x00000A28; // type:function size:0x84 -fn_1_AAC = .text:0x00000AAC; // type:function size:0x30 -fn_1_ADC = .text:0x00000ADC; // type:function size:0x30 -fn_1_B0C = .text:0x00000B0C; // type:function size:0x30 -fn_1_B3C = .text:0x00000B3C; // type:function size:0x30 -fn_1_B6C = .text:0x00000B6C; // type:function size:0x8C -fn_1_BF8 = .text:0x00000BF8; // type:function size:0x28 -fn_1_C20 = .text:0x00000C20; // type:function size:0x578 -fn_1_1198 = .text:0x00001198; // type:function size:0x200 -fn_1_1398 = .text:0x00001398; // type:function size:0xC0 -fn_1_1458 = .text:0x00001458; // type:function size:0x32C -fn_1_1784 = .text:0x00001784; // type:function size:0x88 -fn_1_180C = .text:0x0000180C; // type:function size:0x44 -fn_1_1850 = .text:0x00001850; // type:function size:0x1C -fn_1_186C = .text:0x0000186C; // type:function size:0xBC -fn_1_1928 = .text:0x00001928; // type:function size:0x680 -fn_1_1FA8 = .text:0x00001FA8; // type:function size:0x140 -fn_1_20E8 = .text:0x000020E8; // type:function size:0x5A4 -fn_1_268C = .text:0x0000268C; // type:function size:0x7C -fn_1_2708 = .text:0x00002708; // type:function size:0x6C -fn_1_2774 = .text:0x00002774; // type:function size:0x17C -fn_1_28F0 = .text:0x000028F0; // type:function size:0x34 -fn_1_2924 = .text:0x00002924; // type:function size:0x260 -fn_1_2B84 = .text:0x00002B84; // type:function size:0x48 -fn_1_2BCC = .text:0x00002BCC; // type:function size:0x90 -fn_1_2C5C = .text:0x00002C5C; // type:function size:0x738 -fn_1_3394 = .text:0x00003394; // type:function size:0x18 -fn_1_33AC = .text:0x000033AC; // type:function size:0x590 -fn_1_393C = .text:0x0000393C; // type:function size:0x6C -fn_1_39A8 = .text:0x000039A8; // type:function size:0x170 -fn_1_3B18 = .text:0x00003B18; // type:function size:0x74 -fn_1_3B8C = .text:0x00003B8C; // type:function size:0x22C -fn_1_3DB8 = .text:0x00003DB8; // type:function size:0xEC -fn_1_3EA4 = .text:0x00003EA4; // type:function size:0x19C -fn_1_4040 = .text:0x00004040; // type:function size:0x40 -fn_1_4080 = .text:0x00004080; // type:function size:0x18 -fn_1_4098 = .text:0x00004098; // type:function size:0x18 -fn_1_40B0 = .text:0x000040B0; // type:function size:0x54 -fn_1_4104 = .text:0x00004104; // type:function size:0x40 -fn_1_4144 = .text:0x00004144; // type:function size:0x40 -fn_1_4184 = .text:0x00004184; // type:function size:0xC -fn_1_4190 = .text:0x00004190; // type:function size:0xC -fn_1_419C = .text:0x0000419C; // type:function size:0x20 -fn_1_41BC = .text:0x000041BC; // type:function size:0x24 -fn_1_41E0 = .text:0x000041E0; // type:function size:0x114 -fn_1_42F4 = .text:0x000042F4; // type:function size:0x240 -fn_1_4534 = .text:0x00004534; // type:function size:0x8C -fn_1_45C0 = .text:0x000045C0; // type:function size:0x44 -fn_1_4604 = .text:0x00004604; // type:function size:0x1C -fn_1_4620 = .text:0x00004620; // type:function size:0x260 -fn_1_4880 = .text:0x00004880; // type:function size:0x184 -fn_1_4A04 = .text:0x00004A04; // type:function size:0x2E8 -fn_1_4CEC = .text:0x00004CEC; // type:function size:0x104 +PresentFadeSprite = .text:0x00000144; // type:function size:0x110 +FadeSprite = .text:0x00000254; // type:function size:0xE0 scope:local +FadeSpriteWithMultiplier = .text:0x00000334; // type:function size:0x128 +FadeModel = .text:0x0000045C; // type:function size:0xF4 scope:local +PresentPadCheck = .text:0x00000550; // type:function size:0x34 +PresentPadDStkRepCheck = .text:0x00000584; // type:function size:0x34 +PresentPadDStkCheck = .text:0x000005B8; // type:function size:0x34 +SceneMain = .text:0x000005EC; // type:function size:0xC8 scope:local +PresentCameraCreate = .text:0x000006B4; // type:function size:0x23C +PresentCameraKill = .text:0x000008F0; // type:function size:0x30 +PresentCameraTargetSet = .text:0x00000920; // type:function size:0x84 +PresentCameraFocusSet = .text:0x000009A4; // type:function size:0x84 +PresentCameraViewSet = .text:0x00000A28; // type:function size:0x84 +PresentCameraZoomGet = .text:0x00000AAC; // type:function size:0x30 +PresentCameraRotGet = .text:0x00000ADC; // type:function size:0x30 +PresentCameraPosGet = .text:0x00000B0C; // type:function size:0x30 +PresentCameraTargetGet = .text:0x00000B3C; // type:function size:0x30 +PresentCameraDoneCheck = .text:0x00000B6C; // type:function size:0x8C +ExecCameraObj = .text:0x00000BF8; // type:function size:0x28 scope:local +ExecCamera = .text:0x00000C20; // type:function size:0x578 scope:local +CameraExecDebug = .text:0x00001198; // type:function size:0x200 scope:local +CameraPrintDebug = .text:0x00001398; // type:function size:0xC0 scope:local +PresentCreate = .text:0x00001458; // type:function size:0x32C +PresentKill = .text:0x00001784; // type:function size:0x88 +PresentExecModeSet = .text:0x0000180C; // type:function size:0x44 +PresentExecModeGet = .text:0x00001850; // type:function size:0x1C +PresentSelectedIDSet = .text:0x0000186C; // type:function size:0xBC +ExecSelectRoom = .text:0x00001928; // type:function size:0x680 scope:local +ChangeRoom = .text:0x00001FA8; // type:function size:0x140 scope:local +ExecSelectPresent = .text:0x000020E8; // type:function size:0x5A4 scope:local +GetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local +SetCameraRot = .text:0x00002708; // type:function size:0x6C scope:local +RotateCamera = .text:0x00002774; // type:function size:0x17C scope:local +CameraRotationDoneCheck = .text:0x000028F0; // type:function size:0x34 scope:local +ShowHidePresents = .text:0x00002924; // type:function size:0x260 scope:local +PresentUnlocked = .text:0x00002B84; // type:function size:0x48 scope:local +UnlockedPresents = .text:0x00002BCC; // type:function size:0x90 scope:local +MoveCursor = .text:0x00002C5C; // type:function size:0x738 scope:local +TotalPresentsInRoom = .text:0x00003394; // type:function size:0x18 scope:local +ExecPresentGet = .text:0x000033AC; // type:function size:0x590 scope:local +fn_1_393C = .text:0x0000393C; // type:function size:0x6C scope:local +PresentStateCreate = .text:0x000039A8; // type:function size:0x170 +PresentStateKill = .text:0x00003B18; // type:function size:0x74 +ExecPresentView = .text:0x00003B8C; // type:function size:0x22C scope:local +ExecPresentGet = .text:0x00003DB8; // type:function size:0xEC scope:local +PresentWinCreate = .text:0x00003EA4; // type:function size:0x19C +PresentWinKill = .text:0x00004040; // type:function size:0x40 +PresentWinAnimIn = .text:0x00004080; // type:function size:0x18 +PresentWinAnimOut = .text:0x00004098; // type:function size:0x18 +PresentWinMesSet = .text:0x000040B0; // type:function size:0x54 +PresentWinInsertMesSet = .text:0x00004104; // type:function size:0x40 +PresentWinPosSet = .text:0x00004144; // type:function size:0x40 +PresentWinDispOn = .text:0x00004184; // type:function size:0xC +PresentWinDispOff = .text:0x00004190; // type:function size:0xC +PresentWinMesWait = .text:0x0000419C; // type:function size:0x20 +PresentWinChoiceSet = .text:0x000041BC; // type:function size:0x24 +ExecWindow = .text:0x000041E0; // type:function size:0x114 scope:local +PresentGuideCreate = .text:0x000042F4; // type:function size:0x240 +PresentGuideKill = .text:0x00004534; // type:function size:0x8C +PresentGuideExecModeSet = .text:0x000045C0; // type:function size:0x44 +PresentGuideExecModeGet = .text:0x00004604; // type:function size:0x1C +ExecGuideEnter = .text:0x00004620; // type:function size:0x260 scope:local +ExecGuideLeave = .text:0x00004880; // type:function size:0x184 scope:local +UpdateGuide = .text:0x00004A04; // type:function size:0x2E8 scope:local +LerpAngle = .text:0x00004CEC; // type:function size:0x104 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -__fakeHalf = .rodata:0x00000000; // type:object size:0x4 data:float -__fakeThree = .rodata:0x00000004; // type:object size:0x4 data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:float @@ -95,14 +95,14 @@ lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:f lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x218 scope:local -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x708 scope:local +presentMdlTbl = .rodata:0x000000A0; // type:object size:0x218 scope:local +roomTbl = .rodata:0x000002B8; // type:object size:0x708 scope:local lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 scope:local data:float lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 scope:local data:float lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 scope:local data:float lbl_1_rodata_9D0 = .rodata:0x000009D0; // type:object size:0x8 scope:local data:float -lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0x20 scope:local -lbl_1_rodata_9F8 = .rodata:0x000009F8; // type:object size:0x28 scope:local +roomIdxTbl = .rodata:0x000009D8; // type:object size:0x20 scope:local +roomMessTbl = .rodata:0x000009F8; // type:object size:0x28 scope:local lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x4 scope:local data:float lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 scope:local data:float lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 scope:local data:float @@ -119,7 +119,7 @@ lbl_1_rodata_A58 = .rodata:0x00000A58; // type:object size:0x4 scope:local data: lbl_1_rodata_A60 = .rodata:0x00000A60; // type:object size:0x8 scope:local data:double lbl_1_rodata_A68 = .rodata:0x00000A68; // type:object size:0x8 scope:local data:double lbl_1_rodata_A70 = .rodata:0x00000A70; // type:object size:0x4 scope:local data:float -lbl_1_rodata_A74 = .rodata:0x00000A74; // type:object size:0x28 scope:local +roomPresentOffsetTbl = .rodata:0x00000A74; // type:object size:0x28 scope:local lbl_1_rodata_A9C = .rodata:0x00000A9C; // type:object size:0x4 scope:local data:float lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x4 scope:local data:float lbl_1_rodata_AA4 = .rodata:0x00000AA4; // type:object size:0x4 scope:local data:float @@ -128,11 +128,11 @@ lbl_1_rodata_AAC = .rodata:0x00000AAC; // type:object size:0x4 scope:local data: lbl_1_rodata_AB0 = .rodata:0x00000AB0; // type:object size:0x4 scope:local data:float lbl_1_rodata_AB8 = .rodata:0x00000AB8; // type:object size:0x8 scope:local data:double lbl_1_rodata_AC0 = .rodata:0x00000AC0; // type:object size:0x8 scope:local data:double -lbl_1_rodata_AC8 = .rodata:0x00000AC8; // type:object size:0x28 scope:local -lbl_1_rodata_AF0 = .rodata:0x00000AF0; // type:object size:0x28 scope:local +totalPresentCntTbl = .rodata:0x00000AC8; // type:object size:0x28 scope:local +presentItemIdxTbl = .rodata:0x00000AF0; // type:object size:0x28 scope:local lbl_1_rodata_B18 = .rodata:0x00000B18; // type:object size:0x28 scope:local -lbl_1_rodata_B40 = .rodata:0x00000B40; // type:object size:0x28 scope:local -lbl_1_rodata_B68 = .rodata:0x00000B68; // type:object size:0x28 scope:local +constellationIdxTbl = .rodata:0x00000B40; // type:object size:0x28 scope:local +roofIdxTbl = .rodata:0x00000B68; // type:object size:0x28 scope:local lbl_1_rodata_B90 = .rodata:0x00000B90; // type:object size:0x4 scope:local data:float lbl_1_rodata_B94 = .rodata:0x00000B94; // type:object size:0x4 scope:local data:float lbl_1_rodata_B98 = .rodata:0x00000B98; // type:object size:0x4 scope:local data:float @@ -148,7 +148,7 @@ lbl_1_rodata_BC4 = .rodata:0x00000BC4; // type:object size:0x4 scope:local data: lbl_1_rodata_BC8 = .rodata:0x00000BC8; // type:object size:0x4 scope:local data:float lbl_1_rodata_BCC = .rodata:0x00000BCC; // type:object size:0x4 scope:local data:float lbl_1_rodata_BD0 = .rodata:0x00000BD0; // type:object size:0x4 scope:local data:float -lbl_1_rodata_BD8 = .rodata:0x00000BD8; // type:object size:0xC scope:local +guideMotTbl = .rodata:0x00000BD8; // type:object size:0xC scope:local lbl_1_rodata_BE4 = .rodata:0x00000BE4; // type:object size:0x4 scope:local data:float lbl_1_rodata_BE8 = .rodata:0x00000BE8; // type:object size:0x4 scope:local data:float lbl_1_rodata_BEC = .rodata:0x00000BEC; // type:object size:0x4 scope:local data:float @@ -171,22 +171,23 @@ lbl_1_rodata_C48 = .rodata:0x00000C48; // type:object size:0x4 scope:local data: lbl_1_rodata_C4C = .rodata:0x00000C4C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B scope:local data:string lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1B scope:local data:string -lbl_1_data_36 = .data:0x00000036; // type:object size:0x1A scope:local data:string -lbl_1_data_50 = .data:0x00000050; // type:object size:0x1C data:4byte -lbl_1_data_6C = .data:0x0000006C; // type:object size:0x10 data:4byte -lbl_1_data_7C = .data:0x0000007C; // type:object size:0x8 scope:local data:string -lbl_1_data_84 = .data:0x00000084; // type:object size:0x20 +lbl_1_data_36 = .data:0x00000036; // type:object size:0x16 scope:local data:string +lightTbl = .data:0x00000050; // type:object size:0x1C scope:local data:4byte +execModeTbl = .data:0x0000006C; // type:object size:0x10 scope:local data:4byte +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x7 scope:local data:string +roomIdxTbl2 = .data:0x00000084; // type:object size:0x20 jumptable_1_data_A4 = .data:0x000000A4; // type:object size:0x2C scope:local jumptable_1_data_D0 = .data:0x000000D0; // type:object size:0x1C scope:local -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x24 data:float +shadowPosTbl = .data:0x000000F0; // type:object size:0x24 scope:local data:float lbl_1_data_114 = .data:0x00000114; // type:object size:0x2A scope:local data:string -lbl_1_data_13E = .data:0x0000013E; // type:object size:0x2E scope:local data:string +lbl_1_data_13E = .data:0x0000013E; // type:object size:0x2B scope:local data:string jumptable_1_data_16C = .data:0x0000016C; // type:object size:0x34 scope:local -lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0xC data:4byte -lbl_1_bss_14 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +execModeTbl = .data:0x000001A0; // type:object size:0xC scope:local data:4byte +scene = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +presentObjMan = .bss:0x00000004; // type:object size:0x4 data:4byte +presentCamera = .bss:0x00000008; // type:object size:0x4 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +present = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +presentState = .bss:0x00000018; // type:object size:0x4 data:4byte +presentGuide = .bss:0x00000020; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/resultDll/symbols.txt b/config/GMPE01_00/rels/resultDll/symbols.txt index b0b7a9af..db16ef1b 100644 --- a/config/GMPE01_00/rels/resultDll/symbols.txt +++ b/config/GMPE01_00/rels/resultDll/symbols.txt @@ -1,34 +1,34 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ObjectSetup = .text:0x000000A0; // type:function size:0x438 -fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0 -fn_1_888 = .text:0x00000888; // type:function size:0x2F0 -fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4 -fn_1_1F4C = .text:0x00001F4C; // type:function size:0xB90 -fn_1_2ADC = .text:0x00002ADC; // type:function size:0x1074 -fn_1_3B50 = .text:0x00003B50; // type:function size:0x15C -fn_1_3CAC = .text:0x00003CAC; // type:function size:0x15C -fn_1_3E08 = .text:0x00003E08; // type:function size:0x1D0 -fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x104 -fn_1_40DC = .text:0x000040DC; // type:function size:0x160 -fn_1_423C = .text:0x0000423C; // type:function size:0x3E0 -fn_1_461C = .text:0x0000461C; // type:function size:0x1E0 -fn_1_47FC = .text:0x000047FC; // type:function size:0x1084 -fn_1_5880 = .text:0x00005880; // type:function size:0xC10 -fn_1_6490 = .text:0x00006490; // type:function size:0x2D0 -fn_1_6760 = .text:0x00006760; // type:function size:0xC4 -fn_1_6824 = .text:0x00006824; // type:function size:0xD20 -fn_1_7544 = .text:0x00007544; // type:function size:0xA54 -fn_1_7F98 = .text:0x00007F98; // type:function size:0x3A0 -fn_1_8338 = .text:0x00008338; // type:function size:0x14C -fn_1_8484 = .text:0x00008484; // type:function size:0x1D4 -fn_1_8658 = .text:0x00008658; // type:function size:0x84 -fn_1_86DC = .text:0x000086DC; // type:function size:0x2BC -fn_1_8998 = .text:0x00008998; // type:function size:0x320 -fn_1_8CB8 = .text:0x00008CB8; // type:function size:0x340 -fn_1_8FF8 = .text:0x00008FF8; // type:function size:0x284 -fn_1_927C = .text:0x0000927C; // type:function size:0x138 -fn_1_93B4 = .text:0x000093B4; // type:function size:0x78 +ResultMain = .text:0x000004D8; // type:function size:0x3B0 scope:local +ResultIdle = .text:0x00000888; // type:function size:0x2F0 scope:local +ResultCreate = .text:0x00000B78; // type:function size:0x13D4 scope:local +ResultStatAdd = .text:0x00001F4C; // type:function size:0xB90 scope:local +ResultOrderApply = .text:0x00002ADC; // type:function size:0x1074 scope:local +ResultSprNumSet = .text:0x00003B50; // type:function size:0x15C scope:local +ResultCoinAddNumSet = .text:0x00003CAC; // type:function size:0x15C scope:local +ResultOrderSet = .text:0x00003E08; // type:function size:0x1D0 scope:local +ResultBoardDataRead = .text:0x00003FD8; // type:function size:0x104 +ResultCoinAdd = .text:0x000040DC; // type:function size:0x160 +ResultCoinNumGet = .text:0x0000423C; // type:function size:0x3E0 +SaveExec = .text:0x0000461C; // type:function size:0x1E0 scope:local +ResultTeamExec = .text:0x000047FC; // type:function size:0x1084 scope:local +CameraDebug = .text:0x00005880; // type:function size:0xC10 +ResultBattleMain = .text:0x00006490; // type:function size:0x2D0 +ResultBattleIdle = .text:0x00006760; // type:function size:0xC4 scope:local +ResultBattleCreate = .text:0x00006824; // type:function size:0xD20 scope:local +ResultBattleStatAdd = .text:0x00007544; // type:function size:0xA54 scope:local +ResultBattleCoinAddShow = .text:0x00007F98; // type:function size:0x3A0 scope:local +ResultBattleCoinAddNumSet = .text:0x00008338; // type:function size:0x14C scope:local +ResultBattleOrderSet = .text:0x00008484; // type:function size:0x1D4 scope:local +CoinEffectInit = .text:0x00008658; // type:function size:0x84 scope:local +CoinEffectAdd = .text:0x000086DC; // type:function size:0x2BC scope:local +CoinEffectMain = .text:0x00008998; // type:function size:0x320 scope:local +ResultShadowDraw = .text:0x00008CB8; // type:function size:0x340 scope:local +StageModelCreate = .text:0x00008FF8; // type:function size:0x284 +StageSpriteCreate = .text:0x0000927C; // type:function size:0x138 +StageSpriteKill = .text:0x000093B4; // type:function size:0x78 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float @@ -94,7 +94,7 @@ lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data: lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float @@ -134,77 +134,77 @@ lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data: lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double -lbl_1_data_0 = .data:0x00000000; // type:object size:0x2A4 -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0xDC data:4byte -lbl_1_data_380 = .data:0x00000380; // type:object size:0x2 data:2byte +resultModel = .data:0x00000000; // type:object size:0x2A4 scope:local +resultSprite = .data:0x000002A4; // type:object size:0xDC scope:local data:4byte +rankNewGrpId = .data:0x00000380; // type:object size:0x2 scope:local data:2byte lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string -lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x18 -lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x18 -lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x20 -lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10 -lbl_1_data_408 = .data:0x00000408; // type:object size:0x30 -lbl_1_data_438 = .data:0x00000438; // type:object size:0x10 -lbl_1_data_448 = .data:0x00000448; // type:object size:0x8 scope:local -lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 -lbl_1_data_468 = .data:0x00000468; // type:object size:0x20 -lbl_1_data_488 = .data:0x00000488; // type:object size:0x30 +resultBackFile = .data:0x000003A8; // type:object size:0x18 scope:local +resultLetterFile = .data:0x000003C0; // type:object size:0x18 scope:local +resultStatPosTbl = .data:0x000003D8; // type:object size:0x20 scope:local +resultRankPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local +resultCharPosTbl = .data:0x00000408; // type:object size:0x30 scope:local +resultCoinAddPosTbl = .data:0x00000438; // type:object size:0x10 scope:local +lbl_1_data_448 = .data:0x00000448; // type:object size:0x5 scope:local data:string +resultBoardDirTbl = .data:0x00000450; // type:object size:0x18 scope:local +resultCharMdlTbl = .data:0x00000468; // type:object size:0x20 scope:local +resultTeamCharPosTbl = .data:0x00000488; // type:object size:0x30 scope:local lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x270 -lbl_1_data_758 = .data:0x00000758; // type:object size:0x28 -lbl_1_data_780 = .data:0x00000780; // type:object size:0x50 -lbl_1_data_7D0 = .data:0x000007D0; // type:object size:0x20 -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x30 +resultBattleModel = .data:0x000004E8; // type:object size:0x270 scope:local +resultBattleSprite = .data:0x00000758; // type:object size:0x28 scope:local +resultBattleEffParMan = .data:0x00000780; // type:object size:0x50 scope:local +resultStatPosTbl = .data:0x000007D0; // type:object size:0x20 scope:local +playerPosTbl = .data:0x000007F0; // type:object size:0x30 scope:local lbl_1_data_820 = .data:0x00000820; // type:object size:0x10 -lbl_1_data_830 = .data:0x00000830; // type:object size:0x10 -lbl_1_data_840 = .data:0x00000840; // type:object size:0x20 -lbl_1_data_860 = .data:0x00000860; // type:object size:0x20 -lbl_1_data_880 = .data:0x00000880; // type:object size:0x20 -lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte -lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:float -lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:float -lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte -lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x8 -lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x28 -lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x8 -lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x8 -lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x8 -lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x40 -lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte -lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x30 -lbl_1_bss_CE = .bss:0x000000CE; // type:object size:0x12 -lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte -lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x60 -lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x14 -lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x10 -lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x8 -lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x2 data:2byte -lbl_1_bss_172 = .bss:0x00000172; // type:object size:0x2 data:2byte -lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte -lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte -lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte -lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte -lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte +bomheiCubeMdlTbl = .data:0x00000830; // type:object size:0x10 scope:local +coinEffectYOfs = .data:0x00000840; // type:object size:0x20 scope:local +coinAddYOfs = .data:0x00000860; // type:object size:0x20 scope:local +coinBlankYOfs = .data:0x00000880; // type:object size:0x20 scope:local +coinNumXOfs = .data:0x000008A0; // type:object size:0x6 scope:local data:2byte +lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:string +lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:string +cameraShakeOfs = .data:0x000008B8; // type:object size:0x60 scope:local +resultReorderF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +resultSkipF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +resultTeamOrder = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte +resultCharCubeMdlId = .bss:0x0000000A; // type:object size:0x8 scope:local +resultCoinAddSprId = .bss:0x00000012; // type:object size:0x28 scope:local +resultCoinAddGrpId = .bss:0x0000003A; // type:object size:0x8 scope:local +resultRank = .bss:0x00000042; // type:object size:0x8 scope:local +resultOrder = .bss:0x0000004A; // type:object size:0x8 scope:local +resultRankGrpId = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte +resultPlayerCubeMdlId = .bss:0x00000054; // type:object size:0x8 scope:local +resultCubeMdlId = .bss:0x0000005C; // type:object size:0x40 scope:local +resultCrownGrpId = .bss:0x0000009C; // type:object size:0x2 scope:local data:2byte +resultNumSprId = .bss:0x0000009E; // type:object size:0x30 scope:local +resultNumGrpId = .bss:0x000000CE; // type:object size:0x10 scope:local +resultCrownAnim = .bss:0x000000E0; // type:object size:0x4 scope:local data:4byte +resultCharAnim = .bss:0x000000E4; // type:object size:0x60 scope:local +resultRankAnim = .bss:0x00000144; // type:object size:0x14 scope:local +statShadowMdlId = .bss:0x00000158; // type:object size:0x10 scope:local +charShadowMdlId = .bss:0x00000168; // type:object size:0x8 scope:local +teamResultGrpId = .bss:0x00000170; // type:object size:0x2 scope:local data:2byte +resultBonusPlayer = .bss:0x00000172; // type:object size:0x2 data:2byte +resultFastF = .bss:0x00000174; // type:object size:0x4 data:4byte +resultReadEndF = .bss:0x00000178; // type:object size:0x4 data:4byte +resultMgNo = .bss:0x0000017C; // type:object size:0x2 data:2byte +objman = .bss:0x00000180; // type:object size:0x4 data:4byte +outViewObj = .bss:0x00000184; // type:object size:0x4 scope:local data:4byte lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte -lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte -lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680 -lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x8 +resultBattleSkipF = .bss:0x00000190; // type:object size:0x4 scope:local data:4byte +coinEffectData = .bss:0x00000194; // type:object size:0x1680 scope:local +resultBattleEffParManId = .bss:0x00001814; // type:object size:0x8 scope:local lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC -lbl_1_bss_1828 = .bss:0x00001828; // type:object size:0x168 data:2byte -lbl_1_bss_1990 = .bss:0x00001990; // type:object size:0x20 -lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x8 -lbl_1_bss_19B8 = .bss:0x000019B8; // type:object size:0x28 -lbl_1_bss_19E0 = .bss:0x000019E0; // type:object size:0x8 -lbl_1_bss_19E8 = .bss:0x000019E8; // type:object size:0x8 -lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x8 +coinEffectMdlId = .bss:0x00001828; // type:object size:0x168 scope:local data:2byte +resultBattleCharMot = .bss:0x00001990; // type:object size:0x20 scope:local +resultBattleCharMdl = .bss:0x000019B0; // type:object size:0x8 scope:local +coinNumSprId = .bss:0x000019B8; // type:object size:0x28 scope:local +coinNumGrpId = .bss:0x000019E0; // type:object size:0x8 scope:local +resultBattleRank = .bss:0x000019E8; // type:object size:0x8 scope:local +resultBattleOrder = .bss:0x000019F0; // type:object size:0x8 scope:local lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20 lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2 -lbl_1_bss_1A1A = .bss:0x00001A1A; // type:object size:0x42 data:2byte -lbl_1_bss_1A5C = .bss:0x00001A5C; // type:object size:0x40 data:2byte -lbl_1_bss_1A9C = .bss:0x00001A9C; // type:object size:0x40 data:2byte +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 diff --git a/config/GMPE01_00/rels/w01Dll/splits.txt b/config/GMPE01_00/rels/w01Dll/splits.txt index 7baca9d9..8e0a4285 100644 --- a/config/GMPE01_00/rels/w01Dll/splits.txt +++ b/config/GMPE01_00/rels/w01Dll/splits.txt @@ -11,13 +11,13 @@ REL/board_executor.c: .rodata start:0x00000000 end:0x00000010 REL/w01Dll/main.c: - .text start:0x000000E0 end:0x00009D00 + .text start:0x000000E0 end:0x00009DD8 .rodata start:0x00000010 end:0x00000198 .data start:0x00000000 end:0x00000658 .bss start:0x00000000 end:0x00000708 REL/w01Dll/mg_coin.c: - .text start:0x00009D00 end:0x0000D740 + .text start:0x00009DD8 end:0x0000D740 .rodata start:0x00000198 end:0x000002C8 .data start:0x00000658 end:0x00000F08 .bss start:0x00000708 end:0x000007A0 diff --git a/config/GMPE01_00/rels/w01Dll/symbols.txt b/config/GMPE01_00/rels/w01Dll/symbols.txt index ad0e3d24..66542f00 100644 --- a/config/GMPE01_00/rels/w01Dll/symbols.txt +++ b/config/GMPE01_00/rels/w01Dll/symbols.txt @@ -3,137 +3,137 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global BoardCreate = .text:0x000000E0; // type:function size:0x4BC BoardDestroy = .text:0x0000059C; // type:function size:0x194 -fn_1_730 = .text:0x00000730; // type:function size:0x44 scope:local -fn_1_774 = .text:0x00000774; // type:function size:0x4 scope:local -fn_1_778 = .text:0x00000778; // type:function size:0x9C scope:local -fn_1_814 = .text:0x00000814; // type:function size:0x1D4 scope:local -fn_1_9E8 = .text:0x000009E8; // type:function size:0x318 scope:local +LightSetHook = .text:0x00000730; // type:function size:0x44 scope:local +LightResetHook = .text:0x00000774; // type:function size:0x4 scope:local +LandEvent = .text:0x00000778; // type:function size:0x9C scope:local +WalkEvent = .text:0x00000814; // type:function size:0x1D4 scope:local +MapObjDispSet = .text:0x000009E8; // type:function size:0x318 scope:local fn_1_D00 = .text:0x00000D00; // type:function size:0x4 scope:local -fn_1_D04 = .text:0x00000D04; // type:function size:0x550 scope:local -fn_1_1254 = .text:0x00001254; // type:function size:0x38 scope:local -fn_1_128C = .text:0x0000128C; // type:function size:0x80 scope:local -fn_1_130C = .text:0x0000130C; // type:function size:0x270 scope:local -fn_1_157C = .text:0x0000157C; // type:function size:0xF4 scope:local -fn_1_1670 = .text:0x00001670; // type:function size:0x90 scope:local -fn_1_1700 = .text:0x00001700; // type:function size:0x290 scope:local -fn_1_1990 = .text:0x00001990; // type:function size:0x148 scope:local -fn_1_1AD8 = .text:0x00001AD8; // type:function size:0x64 scope:local -fn_1_1B3C = .text:0x00001B3C; // type:function size:0x3A8 scope:local -fn_1_1EE4 = .text:0x00001EE4; // type:function size:0x48 scope:local -fn_1_1F2C = .text:0x00001F2C; // type:function size:0x78 scope:local -fn_1_1FA4 = .text:0x00001FA4; // type:function size:0x580 scope:local -fn_1_2524 = .text:0x00002524; // type:function size:0x248 scope:local -fn_1_276C = .text:0x0000276C; // type:function size:0x7AC scope:local -fn_1_2F18 = .text:0x00002F18; // type:function size:0x438 scope:local -fn_1_3350 = .text:0x00003350; // type:function size:0x1C4 scope:local -fn_1_3514 = .text:0x00003514; // type:function size:0xA0 scope:local -fn_1_35B4 = .text:0x000035B4; // type:function size:0x70 scope:local -fn_1_3624 = .text:0x00003624; // type:function size:0xFD0 scope:local -fn_1_45F4 = .text:0x000045F4; // type:function size:0x180 scope:local -fn_1_4774 = .text:0x00004774; // type:function size:0xF0 scope:local -fn_1_4864 = .text:0x00004864; // type:function size:0x50 scope:local -fn_1_48B4 = .text:0x000048B4; // type:function size:0x560 scope:local -fn_1_4E14 = .text:0x00004E14; // type:function size:0x194 scope:local -fn_1_4FA8 = .text:0x00004FA8; // type:function size:0x30 scope:local -fn_1_4FD8 = .text:0x00004FD8; // type:function size:0xFC scope:local -fn_1_50D4 = .text:0x000050D4; // type:function size:0x2E4 scope:local -fn_1_53B8 = .text:0x000053B8; // type:function size:0x84 scope:local -fn_1_543C = .text:0x0000543C; // type:function size:0x258 scope:local -fn_1_5694 = .text:0x00005694; // type:function size:0x1D8 scope:local -fn_1_586C = .text:0x0000586C; // type:function size:0xC0 scope:local -fn_1_592C = .text:0x0000592C; // type:function size:0x200 scope:local -fn_1_5B2C = .text:0x00005B2C; // type:function size:0x14 scope:local -fn_1_5B40 = .text:0x00005B40; // type:function size:0x190 scope:local -fn_1_5CD0 = .text:0x00005CD0; // type:function size:0x38 scope:local -fn_1_5D08 = .text:0x00005D08; // type:function size:0x390 scope:local -fn_1_6098 = .text:0x00006098; // type:function size:0xFC scope:local -fn_1_6194 = .text:0x00006194; // type:function size:0x25C scope:local -fn_1_63F0 = .text:0x000063F0; // type:function size:0x624 scope:local -fn_1_6A14 = .text:0x00006A14; // type:function size:0x1AC scope:local -fn_1_6BC0 = .text:0x00006BC0; // type:function size:0x3F4 scope:local -fn_1_6FB4 = .text:0x00006FB4; // type:function size:0x574 scope:local -fn_1_7528 = .text:0x00007528; // type:function size:0x2C4 scope:local -fn_1_77EC = .text:0x000077EC; // type:function size:0xA8 scope:local -fn_1_7894 = .text:0x00007894; // type:function size:0x1D0 scope:local -fn_1_7A64 = .text:0x00007A64; // type:function size:0xAC8 scope:local -fn_1_852C = .text:0x0000852C; // type:function size:0x280 scope:local -fn_1_87AC = .text:0x000087AC; // type:function size:0x34 scope:local -fn_1_87E0 = .text:0x000087E0; // type:function size:0x1A8 scope:local -fn_1_8988 = .text:0x00008988; // type:function size:0xC8 scope:local -fn_1_8A50 = .text:0x00008A50; // type:function size:0x11C scope:local -fn_1_8B6C = .text:0x00008B6C; // type:function size:0x270 scope:local -fn_1_8DDC = .text:0x00008DDC; // type:function size:0x3B0 scope:local -fn_1_918C = .text:0x0000918C; // type:function size:0xF0 scope:local -fn_1_927C = .text:0x0000927C; // type:function size:0xB0 scope:local -fn_1_932C = .text:0x0000932C; // type:function size:0x17C scope:local -fn_1_94A8 = .text:0x000094A8; // type:function size:0x14C scope:local -fn_1_95F4 = .text:0x000095F4; // type:function size:0x200 scope:local -fn_1_97F4 = .text:0x000097F4; // type:function size:0xF8 scope:local -fn_1_98EC = .text:0x000098EC; // type:function size:0x34 scope:local -fn_1_9920 = .text:0x00009920; // type:function size:0x104 scope:local -fn_1_9A24 = .text:0x00009A24; // type:function size:0x198 scope:local -fn_1_9BBC = .text:0x00009BBC; // type:function size:0x144 scope:local -fn_1_9D00 = .text:0x00009D00; // type:function size:0xD8 -fn_1_9DD8 = .text:0x00009DD8; // type:function size:0x6E0 -fn_1_A4B8 = .text:0x0000A4B8; // type:function size:0x9C scope:local -fn_1_A554 = .text:0x0000A554; // type:function size:0xA8 scope:local -fn_1_A5FC = .text:0x0000A5FC; // type:function size:0xE4 scope:local -fn_1_A6E0 = .text:0x0000A6E0; // type:function size:0x938 scope:local -fn_1_B018 = .text:0x0000B018; // type:function size:0x70 scope:local -fn_1_B088 = .text:0x0000B088; // type:function size:0x144 scope:local -fn_1_B1CC = .text:0x0000B1CC; // type:function size:0x1EC scope:local -fn_1_B3B8 = .text:0x0000B3B8; // type:function size:0xC0 scope:local -fn_1_B478 = .text:0x0000B478; // type:function size:0x680 scope:local -fn_1_BAF8 = .text:0x0000BAF8; // type:function size:0x1E4 scope:local -fn_1_BCDC = .text:0x0000BCDC; // type:function size:0x224 scope:local -fn_1_BF00 = .text:0x0000BF00; // type:function size:0x68 scope:local -fn_1_BF68 = .text:0x0000BF68; // type:function size:0x98 scope:local -fn_1_C000 = .text:0x0000C000; // type:function size:0xFC scope:local -fn_1_C0FC = .text:0x0000C0FC; // type:function size:0x160 scope:local -fn_1_C25C = .text:0x0000C25C; // type:function size:0x5E8 scope:local -fn_1_C844 = .text:0x0000C844; // type:function size:0x50 scope:local -fn_1_C894 = .text:0x0000C894; // type:function size:0xB8 scope:local -fn_1_C94C = .text:0x0000C94C; // type:function size:0x4C scope:local -fn_1_C998 = .text:0x0000C998; // type:function size:0x1AC scope:local -fn_1_CB44 = .text:0x0000CB44; // type:function size:0x380 scope:local -fn_1_CEC4 = .text:0x0000CEC4; // type:function size:0x170 scope:local -fn_1_D034 = .text:0x0000D034; // type:function size:0x48 scope:local -fn_1_D07C = .text:0x0000D07C; // type:function size:0x98 scope:local -fn_1_D114 = .text:0x0000D114; // type:function size:0x62C scope:local -fn_1_D740 = .text:0x0000D740; // type:function size:0x644 -fn_1_DD84 = .text:0x0000DD84; // type:function size:0x110 -fn_1_DE94 = .text:0x0000DE94; // type:function size:0x26C -fn_1_E100 = .text:0x0000E100; // type:function size:0x54 scope:local -fn_1_E154 = .text:0x0000E154; // type:function size:0x164 scope:local -fn_1_E2B8 = .text:0x0000E2B8; // type:function size:0x194 scope:local -fn_1_E44C = .text:0x0000E44C; // type:function size:0x4C8 scope:local -fn_1_E914 = .text:0x0000E914; // type:function size:0x3C0 scope:local -fn_1_ECD4 = .text:0x0000ECD4; // type:function size:0x1CC scope:local -fn_1_EEA0 = .text:0x0000EEA0; // type:function size:0x38 scope:local -fn_1_EED8 = .text:0x0000EED8; // type:function size:0x1C4 scope:local -fn_1_F09C = .text:0x0000F09C; // type:function size:0x2AC scope:local -fn_1_F348 = .text:0x0000F348; // type:function size:0xB0 scope:local -fn_1_F3F8 = .text:0x0000F3F8; // type:function size:0x2F0 scope:local -fn_1_F6E8 = .text:0x0000F6E8; // type:function size:0x1A8 scope:local -fn_1_F890 = .text:0x0000F890; // type:function size:0x18C scope:local -fn_1_FA1C = .text:0x0000FA1C; // type:function size:0xA0 scope:local -fn_1_FABC = .text:0x0000FABC; // type:function size:0x9C scope:local -fn_1_FB58 = .text:0x0000FB58; // type:function size:0xE4 scope:local -fn_1_FC3C = .text:0x0000FC3C; // type:function size:0xB0 scope:local -fn_1_FCEC = .text:0x0000FCEC; // type:function size:0x50 scope:local -fn_1_FD3C = .text:0x0000FD3C; // type:function size:0x108 scope:local -fn_1_FE44 = .text:0x0000FE44; // type:function size:0x8C scope:local -fn_1_FED0 = .text:0x0000FED0; // type:function size:0x14C scope:local -fn_1_1001C = .text:0x0001001C; // type:function size:0x19C scope:local -fn_1_101B8 = .text:0x000101B8; // type:function size:0x4AC scope:local -fn_1_10664 = .text:0x00010664; // type:function size:0x1BC scope:local -fn_1_10820 = .text:0x00010820; // type:function size:0x2C8 scope:local -fn_1_10AE8 = .text:0x00010AE8; // type:function size:0xC8 scope:local -fn_1_10BB0 = .text:0x00010BB0; // type:function size:0x140 scope:local -fn_1_10CF0 = .text:0x00010CF0; // type:function size:0x1C8 scope:local -fn_1_10EB8 = .text:0x00010EB8; // type:function size:0x1AC scope:local -fn_1_11064 = .text:0x00011064; // type:function size:0x420 scope:local -fn_1_11484 = .text:0x00011484; // type:function size:0x56C scope:local +RoundItemMain = .text:0x00000D04; // type:function size:0x550 scope:local +RoundItemDestroy = .text:0x00001254; // type:function size:0x38 scope:local +RoundItemEvent = .text:0x0000128C; // type:function size:0x80 scope:local +SpaceAmidaEvent = .text:0x0000130C; // type:function size:0x270 scope:local +WalkMiniEvent = .text:0x0000157C; // type:function size:0xF4 scope:local +UpdateHostDisp = .text:0x00001670; // type:function size:0x90 scope:local +CoasterInit = .text:0x00001700; // type:function size:0x290 scope:local +CoasterPathUpdate = .text:0x00001990; // type:function size:0x148 scope:local +CoasterPosCalc = .text:0x00001AD8; // type:function size:0x64 scope:local +CoasterCameraUpdate = .text:0x00001B3C; // type:function size:0x3A8 scope:local +CoasterCameraObjKill = .text:0x00001EE4; // type:function size:0x48 scope:local +CoasterCameraObjMain = .text:0x00001F2C; // type:function size:0x78 scope:local +CoasterCameraObjUpdate = .text:0x00001FA4; // type:function size:0x580 scope:local +CoasterStickRotGet = .text:0x00002524; // type:function size:0x248 scope:local +CoasterRotUpdate = .text:0x0000276C; // type:function size:0x7AC scope:local +CoasterCoinCheck = .text:0x00002F18; // type:function size:0x438 scope:local +CoasterPathMotUpdate = .text:0x00003350; // type:function size:0x1C4 scope:local +CoasterMotCreate = .text:0x00003514; // type:function size:0xA0 scope:local +CoasterMotKill = .text:0x000035B4; // type:function size:0x70 scope:local +CoasterExec = .text:0x00003624; // type:function size:0xFD0 scope:local +CoasterExit = .text:0x000045F4; // type:function size:0x180 scope:local +CoasterWinCreate = .text:0x00004774; // type:function size:0xF0 scope:local +CoasterWinKill = .text:0x00004864; // type:function size:0x50 scope:local +CoasterHostExec = .text:0x000048B4; // type:function size:0x560 scope:local +CoasterMain = .text:0x00004E14; // type:function size:0x194 scope:local +CoasterDestroy = .text:0x00004FA8; // type:function size:0x30 scope:local +CoasterEvent = .text:0x00004FD8; // type:function size:0xFC scope:local +CoasterCoinCreate = .text:0x000050D4; // type:function size:0x2E4 scope:local +CoasterCoinKill = .text:0x000053B8; // type:function size:0x84 scope:local +CupInit = .text:0x0000543C; // type:function size:0x258 scope:local +CupMotOnSet = .text:0x00005694; // type:function size:0x1D8 scope:local +CupEvent = .text:0x0000586C; // type:function size:0xC0 scope:local +CupMain = .text:0x0000592C; // type:function size:0x200 scope:local +CupDestroy = .text:0x00005B2C; // type:function size:0x14 scope:local +CupExec = .text:0x00005B40; // type:function size:0x190 scope:local +CupObjCheck = .text:0x00005CD0; // type:function size:0x38 scope:local +CupObjCreate = .text:0x00005D08; // type:function size:0x390 scope:local +CupObjMain = .text:0x00006098; // type:function size:0xFC scope:local +CupObjInit = .text:0x00006194; // type:function size:0x25C scope:local +CupObjJumpWait = .text:0x000063F0; // type:function size:0x624 scope:local +CupObjHookReset = .text:0x00006A14; // type:function size:0x1AC scope:local +CupObjStop = .text:0x00006BC0; // type:function size:0x3F4 scope:local +CupObjRotate = .text:0x00006FB4; // type:function size:0x574 scope:local +CupLandEvent = .text:0x00007528; // type:function size:0x2C4 scope:local +CoasterLandEvent = .text:0x000077EC; // type:function size:0xA8 scope:local +CoasterLandMain = .text:0x00007894; // type:function size:0x1D0 scope:local +CoasterLandExec = .text:0x00007A64; // type:function size:0xAC8 scope:local +CoasterPlayerManCreate = .text:0x0000852C; // type:function size:0x280 scope:local +CoasterPlayerManKill = .text:0x000087AC; // type:function size:0x34 scope:local +CoasterPlayerManUpdate = .text:0x000087E0; // type:function size:0x1A8 scope:local +CoasterPlayerWait = .text:0x00008988; // type:function size:0xC8 scope:local +CoasterPlayerChaseBegin = .text:0x00008A50; // type:function size:0x11C scope:local +CoasterPlayerChasePathSet = .text:0x00008B6C; // type:function size:0x270 scope:local +CoasterPlayerChase = .text:0x00008DDC; // type:function size:0x3B0 scope:local +CoasterPlayerStop = .text:0x0000918C; // type:function size:0xF0 scope:local +CoasterPlayerEnd = .text:0x0000927C; // type:function size:0xB0 scope:local +CoasterPlayerEndSet = .text:0x0000932C; // type:function size:0x17C scope:local +CoasterPlayerLoopCheck = .text:0x000094A8; // type:function size:0x14C scope:local +CoasterPlayerTimeInit = .text:0x000095F4; // type:function size:0x200 scope:local +CoasterEffCreate = .text:0x000097F4; // type:function size:0xF8 scope:local +CoasterEffKill = .text:0x000098EC; // type:function size:0x34 scope:local +CoasterEffUpdate = .text:0x00009920; // type:function size:0x104 scope:local +CoasterEffAdd = .text:0x00009A24; // type:function size:0x198 scope:local +CoasterEffModelUpdate = .text:0x00009BBC; // type:function size:0x144 scope:local +CoasterHostComKeySet = .text:0x00009D00; // type:function size:0xD8 scope:local +SpaceAmidaExec = .text:0x00009DD8; // type:function size:0x6E0 +SpaceAmidaMainUpdate = .text:0x0000A4B8; // type:function size:0x9C scope:local +SpaceAmidaStop = .text:0x0000A554; // type:function size:0xA8 scope:local +SpaceAmidaKill = .text:0x0000A5FC; // type:function size:0xE4 scope:local +SpaceAmidaRocketObjUpdate = .text:0x0000A6E0; // type:function size:0x938 scope:local +SpaceAmidaMapLenGet = .text:0x0000B018; // type:function size:0x70 scope:local +SpaceAmidaComChoiceSet = .text:0x0000B088; // type:function size:0x144 scope:local +SpaceAmidaComInputGet = .text:0x0000B1CC; // type:function size:0x1EC scope:local +SpaceAmidaGameOpen = .text:0x0000B3B8; // type:function size:0xC0 scope:local +SpaceAmidaGameUpdate = .text:0x0000B478; // type:function size:0x680 scope:local +SpaceAmidaRocketJump = .text:0x0000BAF8; // type:function size:0x1E4 scope:local +SpaceAmidaRocketKemuriExec = .text:0x0000BCDC; // type:function size:0x224 scope:local +SpaceAmidaRocketWait = .text:0x0000BF00; // type:function size:0x68 scope:local +SpaceAmidaRocketUp = .text:0x0000BF68; // type:function size:0x98 scope:local +SpaceAmidaCoinWin = .text:0x0000C000; // type:function size:0xFC scope:local +SpaceAmidaJumpDown = .text:0x0000C0FC; // type:function size:0x160 scope:local +SpaceAmidaCoinRainMain = .text:0x0000C25C; // type:function size:0x5E8 scope:local +SpaceAmidaReturnWinMain = .text:0x0000C844; // type:function size:0x50 scope:local +SpaceAmidaGameStop = .text:0x0000C894; // type:function size:0xB8 scope:local +SpaceAmidaDirGet = .text:0x0000C94C; // type:function size:0x4C scope:local +SpaceAmidaAngleGet = .text:0x0000C998; // type:function size:0x1AC scope:local +SpaceAmidaPlayerRotAdd = .text:0x0000CB44; // type:function size:0x380 scope:local +SpaceAmidaEffCreate = .text:0x0000CEC4; // type:function size:0x170 scope:local +SpaceAmidaEffKill = .text:0x0000D034; // type:function size:0x48 scope:local +SpaceAmidaEffUpdate = .text:0x0000D07C; // type:function size:0x98 scope:local +SpaceAmidaEffParticleHook = .text:0x0000D114; // type:function size:0x62C scope:local +RoundItemInit = .text:0x0000D740; // type:function size:0x644 +RoundItemKill = .text:0x0000DD84; // type:function size:0x110 +RoundItemEventStart = .text:0x0000DE94; // type:function size:0x26C +RoundItemEnd = .text:0x0000E100; // type:function size:0x54 scope:local +RoundItemClose = .text:0x0000E154; // type:function size:0x164 scope:local +RoundItemMainUpdate = .text:0x0000E2B8; // type:function size:0x194 scope:local +RoundItemUmaStop = .text:0x0000E44C; // type:function size:0x4C8 scope:local +RoundItemPlayerJump = .text:0x0000E914; // type:function size:0x3C0 scope:local +RoundItemStartWait = .text:0x0000ECD4; // type:function size:0x1CC scope:local +RoundItemComInputGet = .text:0x0000EEA0; // type:function size:0x38 scope:local +RoundItemInputWait = .text:0x0000EED8; // type:function size:0x1C4 scope:local +RoundItemStop = .text:0x0000F09C; // type:function size:0x2AC scope:local +RoundItemLightFlicker = .text:0x0000F348; // type:function size:0xB0 scope:local +RoundItemUmaJumpWait = .text:0x0000F3F8; // type:function size:0x2F0 scope:local +RoundItemUmaJump = .text:0x0000F6E8; // type:function size:0x1A8 scope:local +RoundItemRotatePlayer = .text:0x0000F890; // type:function size:0x18C scope:local +RoundItemStreamWait = .text:0x0000FA1C; // type:function size:0xA0 scope:local +RoundItemWinWait = .text:0x0000FABC; // type:function size:0x9C scope:local +ItemGetWinExec = .text:0x0000FB58; // type:function size:0xE4 scope:local +ItemGetShrinkWait = .text:0x0000FC3C; // type:function size:0xB0 scope:local +ItemGetReturnWinExec = .text:0x0000FCEC; // type:function size:0x50 scope:local +RoundItemGameClose = .text:0x0000FD3C; // type:function size:0x108 scope:local +RoundItemGameEnd = .text:0x0000FE44; // type:function size:0x8C scope:local +RoundItemItemUpdate = .text:0x0000FED0; // type:function size:0x14C scope:local +RoundItemItemGet = .text:0x0001001C; // type:function size:0x19C scope:local +ItemGetCreate = .text:0x000101B8; // type:function size:0x4AC scope:local +ItemGetObjUpdate = .text:0x00010664; // type:function size:0x1BC scope:local +ItemGetPlayerMove = .text:0x00010820; // type:function size:0x2C8 scope:local +ItemGetShrink = .text:0x00010AE8; // type:function size:0xC8 scope:local +RoundItemUmaRotYGet = .text:0x00010BB0; // type:function size:0x140 scope:local +RoundItemUmaPlayerSet = .text:0x00010CF0; // type:function size:0x1C8 scope:local +RoundItemAngleGet = .text:0x00010EB8; // type:function size:0x1AC scope:local +ItemGetEff1Hook = .text:0x00011064; // type:function size:0x420 scope:local +ItemGetEff2Hook = .text:0x00011484; // type:function size:0x56C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float @@ -334,136 +334,136 @@ lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data: lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x528 scope:local -lbl_1_data_528 = .data:0x00000528; // type:object size:0x2 scope:local data:2byte -lbl_1_data_52A = .data:0x0000052A; // type:object size:0x2 scope:local data:2byte -lbl_1_data_52C = .data:0x0000052C; // type:object size:0x2 scope:local data:2byte -lbl_1_data_52E = .data:0x0000052E; // type:object size:0x2 scope:local data:2byte -lbl_1_data_530 = .data:0x00000530; // type:object size:0x2 scope:local data:2byte -lbl_1_data_534 = .data:0x00000534; // type:object size:0x8 scope:local -lbl_1_data_53C = .data:0x0000053C; // type:object size:0x8 scope:local +mapObjData = .data:0x00000000; // type:object size:0x528 scope:local +bgMdl = .data:0x00000528; // type:object size:0x2 scope:local data:2byte +fgMdl = .data:0x0000052A; // type:object size:0x2 scope:local data:2byte +starHostMdl = .data:0x0000052C; // type:object size:0x2 scope:local data:2byte +hostMdl = .data:0x0000052E; // type:object size:0x2 scope:local data:2byte +syuppouMdl = .data:0x00000530; // type:object size:0x2 scope:local data:2byte +starHostMotTbl = .data:0x00000534; // type:object size:0x8 scope:local +hostMotTbl = .data:0x0000053C; // type:object size:0x8 scope:local lbl_1_data_544 = .data:0x00000544; // type:object size:0x14 scope:local data:string lbl_1_data_558 = .data:0x00000558; // type:object size:0x14 scope:local data:string lbl_1_data_56C = .data:0x0000056C; // type:object size:0x13 scope:local data:string -lbl_1_data_580 = .data:0x00000580; // type:object size:0x2 scope:local data:2byte +coasterWinId = .data:0x00000580; // type:object size:0x2 scope:local data:2byte lbl_1_data_582 = .data:0x00000582; // type:object size:0x12 scope:local -lbl_1_data_594 = .data:0x00000594; // type:object size:0x40 scope:local -lbl_1_data_5D4 = .data:0x000005D4; // type:object size:0x4 scope:local data:4byte -lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x4 scope:local data:4byte -lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x10 scope:local data:2byte +coasterMotTbl = .data:0x00000594; // type:object size:0x40 scope:local +cupMoveSeNo = .data:0x000005D4; // type:object size:0x4 scope:local data:4byte +decaStompSeNo = .data:0x000005D8; // type:object size:0x4 scope:local data:4byte +cupMapObj = .data:0x000005DC; // type:object size:0x10 scope:local data:2byte lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x7 scope:local data:string lbl_1_data_5F3 = .data:0x000005F3; // type:object size:0x7 scope:local data:string lbl_1_data_5FA = .data:0x000005FA; // type:object size:0x7 scope:local data:string -lbl_1_data_604 = .data:0x00000604; // type:object size:0xC scope:local -lbl_1_data_610 = .data:0x00000610; // type:object size:0x10 scope:local +cupHookTbl = .data:0x00000604; // type:object size:0xC scope:local +cupArrowRot = .data:0x00000610; // type:object size:0x10 scope:local lbl_1_data_620 = .data:0x00000620; // type:object size:0x5 scope:local data:string lbl_1_data_625 = .data:0x00000625; // type:object size:0x5 scope:local data:string lbl_1_data_62A = .data:0x0000062A; // type:object size:0x5 scope:local data:string lbl_1_data_62F = .data:0x0000062F; // type:object size:0x4 scope:local data:string -lbl_1_data_633 = .data:0x00000633; // type:object size:0x1 scope:local data:byte -lbl_1_data_634 = .data:0x00000634; // type:object size:0x24 scope:local -lbl_1_data_658 = .data:0x00000658; // type:object size:0x24 scope:local -lbl_1_data_67C = .data:0x0000067C; // type:object size:0x12 scope:local data:2byte -lbl_1_data_690 = .data:0x00000690; // type:object size:0x2D0 scope:local -lbl_1_data_960 = .data:0x00000960; // type:object size:0x2D0 scope:local -lbl_1_data_C30 = .data:0x00000C30; // type:object size:0x2D0 scope:local +coasterChasePlayer = .data:0x00000633; // type:object size:0x1 scope:local data:byte +coasterChaseSe = .data:0x00000634; // type:object size:0x24 scope:local +effPosTbl = .data:0x00000658; // type:object size:0x24 scope:local +spaceAmidaCoinNumTbl = .data:0x0000067C; // type:object size:0x12 scope:local data:2byte +spaceAmidaMap1 = .data:0x00000690; // type:object size:0x2D0 scope:local +spaceAmidaMap2 = .data:0x00000960; // type:object size:0x2D0 scope:local +spaceAmidaMap3 = .data:0x00000C30; // type:object size:0x2D0 scope:local lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x3 scope:local data:string -lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x38 scope:local -lbl_1_data_F40 = .data:0x00000F40; // type:object size:0x20 scope:local -lbl_1_data_F60 = .data:0x00000F60; // type:object size:0x20 scope:local +itemMdlTbl = .data:0x00000F08; // type:object size:0x38 scope:local +itemGetMotTbl = .data:0x00000F40; // type:object size:0x20 scope:local +jumpMotTbl = .data:0x00000F60; // type:object size:0x20 scope:local lbl_1_data_F80 = .data:0x00000F80; // type:object size:0x7 scope:local data:string lbl_1_data_F87 = .data:0x00000F87; // type:object size:0x5 scope:local data:string lbl_1_data_F8C = .data:0x00000F8C; // type:object size:0x5 scope:local data:string lbl_1_data_F91 = .data:0x00000F91; // type:object size:0x5 scope:local data:string lbl_1_data_F96 = .data:0x00000F96; // type:object size:0x5 scope:local data:string -lbl_1_data_F9C = .data:0x00000F9C; // type:object size:0x10 scope:local data:4byte -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x1 scope:local data:byte -lbl_1_bss_29 = .bss:0x00000029; // type:object size:0x1 scope:local data:byte +umaHookTbl = .data:0x00000F9C; // type:object size:0x10 scope:local data:4byte +boardWork = .bss:0x00000000; // type:object size:0x4 data:4byte +roundItemProc = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +coasterProc = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte +coasterPlayerManObj = .bss:0x0000000C; // type:object size:0x4 scope:local data:4byte +coasterCameraObj = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +cupProc = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte +cupObj = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +coasterPlayerChaseNum = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte +coasterEffObj = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +cupSpaceEnd = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte +cupSpaceStart = .bss:0x00000026; // type:object size:0x2 scope:local data:2byte +cupHookNo = .bss:0x00000028; // type:object size:0x1 scope:local data:byte +cupSide = .bss:0x00000029; // type:object size:0x1 scope:local data:byte lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x5A0 scope:local -lbl_1_bss_5CC = .bss:0x000005CC; // type:object size:0x4 scope:local data:2byte -lbl_1_bss_5D0 = .bss:0x000005D0; // type:object size:0x30 scope:local -lbl_1_bss_600 = .bss:0x00000600; // type:object size:0x18 scope:local -lbl_1_bss_618 = .bss:0x00000618; // type:object size:0xC scope:local data:4byte -lbl_1_bss_624 = .bss:0x00000624; // type:object size:0xC scope:local data:float -lbl_1_bss_630 = .bss:0x00000630; // type:object size:0xC scope:local data:4byte -lbl_1_bss_63C = .bss:0x0000063C; // type:object size:0x4 scope:local data:float -lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x4 scope:local data:float -lbl_1_bss_644 = .bss:0x00000644; // type:object size:0x4 scope:local data:float -lbl_1_bss_648 = .bss:0x00000648; // type:object size:0xC scope:local data:4byte -lbl_1_bss_654 = .bss:0x00000654; // type:object size:0xC scope:local data:float -lbl_1_bss_660 = .bss:0x00000660; // type:object size:0xC scope:local data:float -lbl_1_bss_66C = .bss:0x0000066C; // type:object size:0x4 scope:local data:float -lbl_1_bss_670 = .bss:0x00000670; // type:object size:0x4 scope:local data:float -lbl_1_bss_674 = .bss:0x00000674; // type:object size:0x4 scope:local data:float -lbl_1_bss_678 = .bss:0x00000678; // type:object size:0x30 scope:local +coasterMotId = .bss:0x000005CC; // type:object size:0x4 scope:local data:2byte +coasterCoinMdlId = .bss:0x000005D0; // type:object size:0x30 scope:local +coasterCoinF = .bss:0x00000600; // type:object size:0x18 scope:local +coasterCameraTarget = .bss:0x00000618; // type:object size:0xC scope:local data:4byte +coasterCameraUp = .bss:0x00000624; // type:object size:0xC scope:local data:float +coasterCameraPos = .bss:0x00000630; // type:object size:0xC scope:local data:4byte +coasterBaseRotY = .bss:0x0000063C; // type:object size:0x4 scope:local data:float +coasterTime = .bss:0x00000640; // type:object size:0x4 scope:local data:float +coasterMaxTime = .bss:0x00000644; // type:object size:0x4 scope:local data:float +coasterPosOld = .bss:0x00000648; // type:object size:0xC scope:local data:4byte +coasterPos = .bss:0x00000654; // type:object size:0xC scope:local data:float +coasterRot = .bss:0x00000660; // type:object size:0xC scope:local data:float +coasterCamSpeed = .bss:0x0000066C; // type:object size:0x4 scope:local data:float +coasterSpeed = .bss:0x00000670; // type:object size:0x4 scope:local data:float +coasterAccel = .bss:0x00000674; // type:object size:0x4 scope:local data:float +coasterMtx = .bss:0x00000678; // type:object size:0x30 scope:local lbl_1_bss_6A8 = .bss:0x000006A8; // type:object size:0x4 scope:local data:float -lbl_1_bss_6AC = .bss:0x000006AC; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_6AE = .bss:0x000006AE; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_6B0 = .bss:0x000006B0; // type:object size:0x1 scope:local data:byte -lbl_1_bss_6B1 = .bss:0x000006B1; // type:object size:0x1 scope:local data:byte -lbl_1_bss_6B2 = .bss:0x000006B2; // type:object size:0x1 scope:local data:byte -lbl_1_bss_6B3 = .bss:0x000006B3; // type:object size:0x1 scope:local data:byte -lbl_1_bss_6B4 = .bss:0x000006B4; // type:object size:0x1 scope:local data:byte -lbl_1_bss_6B6 = .bss:0x000006B6; // type:object size:0xA scope:local data:2byte -lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x42 data:2byte -lbl_1_bss_708 = .bss:0x00000708; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_70C = .bss:0x0000070C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_714 = .bss:0x00000714; // type:object size:0xC scope:local -lbl_1_bss_720 = .bss:0x00000720; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_724 = .bss:0x00000724; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_72A = .bss:0x0000072A; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_72C = .bss:0x0000072C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_730 = .bss:0x00000730; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_734 = .bss:0x00000734; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_738 = .bss:0x00000738; // type:object size:0xC scope:local data:float -lbl_1_bss_744 = .bss:0x00000744; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_748 = .bss:0x00000748; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_74C = .bss:0x0000074C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_750 = .bss:0x00000750; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_754 = .bss:0x00000754; // type:object size:0x4 scope:local data:float -lbl_1_bss_758 = .bss:0x00000758; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_75C = .bss:0x0000075C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_760 = .bss:0x00000760; // type:object size:0x28 scope:local -lbl_1_bss_788 = .bss:0x00000788; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_78A = .bss:0x0000078A; // type:object size:0x6 scope:local data:2byte -lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x6 scope:local data:2byte -lbl_1_bss_796 = .bss:0x00000796; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_79C = .bss:0x0000079C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7A0 = .bss:0x000007A0; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7A4 = .bss:0x000007A4; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7A8 = .bss:0x000007A8; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7AA = .bss:0x000007AA; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7AC = .bss:0x000007AC; // type:object size:0x8 scope:local data:4byte -lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7B8 = .bss:0x000007B8; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7BC = .bss:0x000007BC; // type:object size:0x8 scope:local data:4byte -lbl_1_bss_7C4 = .bss:0x000007C4; // type:object size:0xC scope:local data:float -lbl_1_bss_7D0 = .bss:0x000007D0; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7D2 = .bss:0x000007D2; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7D4 = .bss:0x000007D4; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7D6 = .bss:0x000007D6; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_7D8 = .bss:0x000007D8; // type:object size:0xC scope:local data:4byte -lbl_1_bss_7E4 = .bss:0x000007E4; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x4 scope:local data:float -lbl_1_bss_7EC = .bss:0x000007EC; // type:object size:0x4 scope:local data:float -lbl_1_bss_7F0 = .bss:0x000007F0; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7F4 = .bss:0x000007F4; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7F8 = .bss:0x000007F8; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_7FC = .bss:0x000007FC; // type:object size:0x10 scope:local data:4byte -lbl_1_bss_80C = .bss:0x0000080C; // type:object size:0xC scope:local data:float -lbl_1_bss_818 = .bss:0x00000818; // type:object size:0x4 scope:local data:4byte +coasterStartSpace = .bss:0x000006AC; // type:object size:0x2 scope:local data:2byte +coasterPathMdlId = .bss:0x000006AE; // type:object size:0x2 scope:local data:2byte +coasterType = .bss:0x000006B0; // type:object size:0x1 scope:local data:byte +coasterLandF = .bss:0x000006B1; // type:object size:0x1 scope:local data:byte +coasterDoneF = .bss:0x000006B2; // type:object size:0x1 scope:local data:byte +coasterLoopF = .bss:0x000006B3; // type:object size:0x1 scope:local data:byte +eventPlayer = .bss:0x000006B4; // type:object size:0x1 scope:local data:byte +roundItemTbl = .bss:0x000006B6; // type:object size:0xA scope:local data:2byte +mapObjMotTbl = .bss:0x000006C0; // type:object size:0x4 scope:local data:4byte +mapObjMdlId = .bss:0x000006C4; // type:object size:0x42 data:2byte +spaceAmidaSeqStopF = .bss:0x00000708; // type:object size:0x2 scope:local data:2byte +spaceAmidaEffAnim = .bss:0x0000070C; // type:object size:0x4 scope:local data:4byte +spaceAmidaEffObj = .bss:0x00000710; // type:object size:0x4 scope:local data:4byte +rocketObj = .bss:0x00000714; // type:object size:0xC scope:local +spaceAmidaGameObj = .bss:0x00000720; // type:object size:0x4 scope:local data:4byte +spaceAmidaSeNo = .bss:0x00000724; // type:object size:0x4 scope:local data:4byte +spaceAmidaCoinNum = .bss:0x00000728; // type:object size:0x2 scope:local data:2byte +spaceAmidaStopF = .bss:0x0000072A; // type:object size:0x2 scope:local data:2byte +rocketWarpF = .bss:0x0000072C; // type:object size:0x4 scope:local data:4byte +spaceAmidaPath = .bss:0x00000730; // type:object size:0x4 scope:local data:4byte +spaceAmidaMapNo = .bss:0x00000734; // type:object size:0x4 scope:local data:4byte +spaceAmidaPos = .bss:0x00000738; // type:object size:0xC scope:local data:float +timerSeqId = .bss:0x00000744; // type:object size:0x2 scope:local data:2byte +timerFrame = .bss:0x00000748; // type:object size:0x4 scope:local data:4byte +timerSec = .bss:0x0000074C; // type:object size:0x4 scope:local data:4byte +kemuriMdlId = .bss:0x00000750; // type:object size:0x2 scope:local data:2byte +spaceAmidaTime = .bss:0x00000754; // type:object size:0x4 scope:local data:float +spaceAmidaMainObj = .bss:0x00000758; // type:object size:0x4 scope:local data:4byte +coinWinProc = .bss:0x0000075C; // type:object size:0x4 scope:local data:4byte +coinMdlId = .bss:0x00000760; // type:object size:0x28 scope:local +spaceAmidaEffMdlId = .bss:0x00000788; // type:object size:0x2 scope:local data:2byte +rocketMdlId = .bss:0x0000078A; // type:object size:0x6 scope:local data:2byte +mapMdlId = .bss:0x00000790; // type:object size:0x6 scope:local data:2byte +spaceAmidaMdlId = .bss:0x00000796; // type:object size:0x2 scope:local data:2byte +spaceAmidaPlayerNo = .bss:0x00000798; // type:object size:0x4 scope:local data:4byte +spaceAmidaPadNo = .bss:0x0000079C; // type:object size:0x4 scope:local data:4byte +roundItemEffAnim = .bss:0x000007A0; // type:object size:0x4 scope:local data:4byte +roundItemStreamId = .bss:0x000007A4; // type:object size:0x4 scope:local data:4byte +umaStopTimer = .bss:0x000007A8; // type:object size:0x2 scope:local data:2byte +roundItemStopF = .bss:0x000007AA; // type:object size:0x2 scope:local data:2byte +itemGetSeNo = .bss:0x000007AC; // type:object size:0x4 scope:local data:4byte +umaStopF = .bss:0x000007B4; // type:object size:0x2 scope:local data:2byte +jumpMotId = .bss:0x000007B8; // type:object size:0x4 scope:local data:4byte +itemGetMotId = .bss:0x000007BC; // type:object size:0x8 scope:local data:4byte +playerPos = .bss:0x000007C4; // type:object size:0xC scope:local data:float +timerFrame = .bss:0x000007D0; // type:object size:0x2 scope:local data:2byte +timerSec = .bss:0x000007D2; // type:object size:0x2 scope:local data:2byte +timerSeqId = .bss:0x000007D4; // type:object size:0x2 scope:local data:2byte +seqStartId = .bss:0x000007D6; // type:object size:0x2 scope:local data:2byte +umaPos = .bss:0x000007D8; // type:object size:0xC scope:local data:4byte +roundItemPlayer = .bss:0x000007E4; // type:object size:0x4 scope:local data:4byte +borderSpeed = .bss:0x000007E8; // type:object size:0x4 scope:local data:float +umaSpeed = .bss:0x000007EC; // type:object size:0x4 scope:local data:float +itemGetObj = .bss:0x000007F0; // type:object size:0x4 scope:local data:4byte +roundItemMainObj = .bss:0x000007F4; // type:object size:0x4 scope:local data:4byte +roundItemUmaObj = .bss:0x000007F8; // type:object size:0x4 scope:local data:4byte +itemObj = .bss:0x000007FC; // type:object size:0x10 scope:local data:4byte +roundItemPos = .bss:0x0000080C; // type:object size:0xC scope:local data:float +itemAnim = .bss:0x00000818; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPE01_00/rels/w05Dll/symbols.txt b/config/GMPE01_00/rels/w05Dll/symbols.txt index 4f1ddabd..56c26c7c 100644 --- a/config/GMPE01_00/rels/w05Dll/symbols.txt +++ b/config/GMPE01_00/rels/w05Dll/symbols.txt @@ -287,7 +287,7 @@ lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x18 lbl_1_data_310 = .data:0x00000310; // type:object size:0x8 lbl_1_data_318 = .data:0x00000318; // type:object size:0x7 scope:local data:string lbl_1_data_31F = .data:0x0000031F; // type:object size:0x7 scope:local data:string -lbl_1_data_326 = .data:0x00000326; // type:object size:0xA scope:local data:string +lbl_1_data_326 = .data:0x00000326; // type:object size:0x7 scope:local data:string lbl_1_data_330 = .data:0x00000330; // type:object size:0xC lbl_1_data_33C = .data:0x0000033C; // type:object size:0x7 scope:local data:string lbl_1_data_343 = .data:0x00000343; // type:object size:0xD scope:local data:string @@ -302,7 +302,7 @@ lbl_1_data_470 = .data:0x00000470; // type:object size:0xC lbl_1_data_47C = .data:0x0000047C; // type:object size:0xC lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 scope:local data:string lbl_1_data_48B = .data:0x0000048B; // type:object size:0x4 scope:local data:string -lbl_1_data_48F = .data:0x0000048F; // type:object size:0x5 scope:local data:string +lbl_1_data_48F = .data:0x0000048F; // type:object size:0x4 scope:local data:string lbl_1_data_494 = .data:0x00000494; // type:object size:0xC lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xD scope:local data:string lbl_1_data_4AD = .data:0x000004AD; // type:object size:0x5 scope:local data:string diff --git a/config/GMPE01_00/rels/w10Dll/symbols.txt b/config/GMPE01_00/rels/w10Dll/symbols.txt index 89f2a634..f10220e4 100644 --- a/config/GMPE01_00/rels/w10Dll/symbols.txt +++ b/config/GMPE01_00/rels/w10Dll/symbols.txt @@ -98,7 +98,7 @@ lotteryHostMot = .data:0x00000064; // type:object size:0x8 scope:local booHouseHostMot = .data:0x0000006C; // type:object size:0x8 scope:local hostMot = .data:0x00000078; // type:object size:0x8 scope:local hostPosTbl = .data:0x00000080; // type:object size:0x18 scope:local data:float -lbl_1_data_98 = .data:0x00000098; // type:object size:0x2E scope:local data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0x2D scope:local data:string rollDataTbl = .data:0x000000C6; // type:object size:0x42 scope:local sceneTbl = .data:0x00000108; // type:object size:0x150 scope:local lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 scope:local data:string diff --git a/config/GMPE01_00/rels/ztardll/symbols.txt b/config/GMPE01_00/rels/ztardll/symbols.txt index 6e398a8c..f92691a8 100644 --- a/config/GMPE01_00/rels/ztardll/symbols.txt +++ b/config/GMPE01_00/rels/ztardll/symbols.txt @@ -87,137 +87,139 @@ fn_1_11F68 = .text:0x00011F68; // type:function size:0x340 fn_1_122A8 = .text:0x000122A8; // type:function size:0xC4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x38 data:4byte -lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 data:string +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x38 scope:local data:4byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 scope:local data:string lbl_1_data_22 = .data:0x00000022; // type:object size:0x8 lbl_1_data_2C = .data:0x0000002C; // type:object size:0x18 -lbl_1_data_44 = .data:0x00000044; // type:object size:0x6 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x6 data:byte lbl_1_data_4A = .data:0x0000004A; // type:object size:0xC lbl_1_data_56 = .data:0x00000056; // type:object size:0xE data:2byte -lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 -lbl_1_data_84 = .data:0x00000084; // type:object size:0x10 -lbl_1_data_94 = .data:0x00000094; // type:object size:0xC -lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA data:string -lbl_1_data_AA = .data:0x000000AA; // type:object size:0x4 data:string +lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 data:float +lbl_1_data_84 = .data:0x00000084; // type:object size:0x10 data:byte +lbl_1_data_94 = .data:0x00000094; // type:object size:0xC data:byte +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA scope:local data:string +lbl_1_data_AA = .data:0x000000AA; // type:object size:0x4 scope:local data:string lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x318 lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x20 lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x20 -lbl_1_data_408 = .data:0x00000408; // type:object size:0x3C data:string -lbl_1_data_444 = .data:0x00000444; // type:object size:0x19 data:string -lbl_1_data_45D = .data:0x0000045D; // type:object size:0x1A data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x3D +lbl_1_data_408 = .data:0x00000408; // type:object size:0x3C scope:local data:string +lbl_1_data_444 = .data:0x00000444; // type:object size:0x19 scope:local data:string +lbl_1_data_45D = .data:0x0000045D; // type:object size:0x1A scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x3A scope:local data:string lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x20 data:4byte lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x40 data:4byte lbl_1_data_514 = .data:0x00000514; // type:object size:0x70 @@ -228,25 +230,27 @@ lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 lbl_1_data_64C = .data:0x0000064C; // type:object size:0x20 lbl_1_data_66C = .data:0x0000066C; // type:object size:0x4 data:4byte lbl_1_data_670 = .data:0x00000670; // type:object size:0x4 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x28 data:2byte lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x8 data:2byte -lbl_1_bss_3E = .bss:0x0000003E; // type:object size:0x2 data:2byte +lbl_1_bss_3E = .bss:0x0000003E; // type:object size:0x4 data:2byte lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x2 data:2byte lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x2 data:2byte lbl_1_bss_46 = .bss:0x00000046; // type:object size:0x2 data:2byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x2 data:2byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x2 data:2byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:2byte lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 data:2byte lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x2 data:2byte lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x2 data:2byte lbl_1_bss_5E = .bss:0x0000005E; // type:object size:0x2 data:2byte -lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x8 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 47bd92ab..d9a64bf5 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -1,17 +1,17 @@ Sections: - .init type:code - extab type:rodata - extabindex type:rodata - .text type:code - .ctors type:rodata - .dtors type:rodata - .rodata type:rodata - .data type:data - .bss type:bss - .sdata type:data - .sbss type:bss - .sdata2 type:rodata - .sbss2 type:bss + .init type:code align:4 + extab type:rodata align:32 + extabindex type:rodata align:32 + .text type:code align:8 + .ctors type:rodata align:32 + .dtors type:rodata align:32 + .rodata type:rodata align:32 + .data type:data align:32 + .bss type:bss align:32 + .sdata type:data align:4 + .sbss type:bss align:8 + .sdata2 type:rodata align:32 + .sbss2 type:bss align:16 game/main.c: .text start:0x800057C0 end:0x80005A5C @@ -680,12 +680,12 @@ dolphin/mtx/vec.c: .sdata2 start:0x801D6380 end:0x801D6390 dolphin/mtx/quat.c: - .text start:0x800BC2C4 end:0x800BC710 + .text start:0x800BC2C4 end:0x800BC884 .rodata start:0x8011E430 end:0x8011E440 .sdata2 start:0x801D6390 end:0x801D63B8 dolphin/mtx/psmtx.c: - .text start:0x800BC710 end:0x800BC9E8 + .text start:0x800BC884 end:0x800BC9E8 dolphin/dvd/dvdlow.c: .text start:0x800BC9E8 end:0x800BD83C @@ -742,7 +742,7 @@ dolphin/demo/DEMOPuts.c: dolphin/demo/DEMOStats.c: .text start:0x800C2F84 end:0x800C3CDC - .data start:0x8013D5E0 end:0x8013D748 + .data start:0x8013D5E0 end:0x8013D738 .sdata start:0x801D3908 end:0x801D3910 .sbss start:0x801D4488 end:0x801D44E8 .sdata2 start:0x801D63D8 end:0x801D63E8 @@ -753,6 +753,7 @@ dolphin/pad/Padclamp.c: dolphin/pad/Pad.c: .text start:0x800C3F14 end:0x800C59DC + .data start:0x8013D738 end:0x8013D748 .bss start:0x801A61B0 end:0x801A6200 .sdata start:0x801D3918 end:0x801D3938 .sbss start:0x801D44E8 end:0x801D4510 @@ -954,7 +955,7 @@ Runtime.PPCEABI.H/NewMore.cp: .data start:0x8013E208 end:0x8013E218 .sdata start:0x801D39A0 end:0x801D39A8 -Runtime.PPCEABI.H/NMWException.cp: +Runtime.PPCEABI.H/NMWException.cpp: extab start:0x80005650 end:0x80005670 extabindex start:0x80005718 end:0x80005748 .text start:0x800E2108 end:0x800E23CC @@ -970,7 +971,7 @@ Runtime.PPCEABI.H/__init_cpp_exceptions.cpp: .dtors start:0x8011DCE0 end:0x8011DCE8 .sdata start:0x801D39B0 end:0x801D39B8 -Runtime.PPCEABI.H/Gecko_ExceptionPPC.cp: +Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp: extab start:0x80005670 end:0x800056E4 extabindex start:0x80005748 end:0x8000579C .text start:0x800E2B24 end:0x800E3F5C @@ -1185,7 +1186,7 @@ TRK_MINNOW_DOLPHIN/serpoll.c: .text start:0x800ECC5C end:0x800ED028 .bss start:0x801A9110 end:0x801A9128 -TRK_MINNOW_DOLPHIN/usrput.c: +TRK_MINNOW_DOLPHIN/usr_put.c: .text start:0x800ED028 end:0x800ED0B4 TRK_MINNOW_DOLPHIN/dispatch.c: @@ -1215,15 +1216,15 @@ TRK_MINNOW_DOLPHIN/mem_TRK.c: .text start:0x800F0398 end:0x800F0454 TRK_MINNOW_DOLPHIN/targimpl.c: - .text start:0x800F0454 end:0x800F1CF0 + .text start:0x800F0454 end:0x800F1CE4 .rodata start:0x8011EA90 end:0x8011EB18 .data start:0x8013EA58 end:0x8013EA88 .bss start:0x801A9138 end:0x801A96B8 -TRK_MINNOW_DOLPHIN/targsupp.c: - .text start:0x800F1CF0 end:0x800F1D10 +TRK_MINNOW_DOLPHIN/targsupp.s: + .text start:0x800F1CE4 end:0x800F1D10 -TRK_MINNOW_DOLPHIN/__exception.c: +TRK_MINNOW_DOLPHIN/__exception.s: .init start:0x80003534 end:0x80005468 TRK_MINNOW_DOLPHIN/dolphin_trk.c: diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 8d327e2d..17ef4f4f 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -244,7 +244,7 @@ Hu3DDraw = .text:0x80014024; // type:function size:0x1A0 objCall = .text:0x800141C4; // type:function size:0xEC scope:local objMesh = .text:0x800142B0; // type:function size:0x86C scope:local ObjCullCheck = .text:0x80014B1C; // type:function size:0x4C0 -FaceDraw = .text:0x80014FDC; // type:function size:0x10DC scope:local +FaceDraw = .text:0x80014FDC; // type:function size:0x10DC SetTevStageNoTex = .text:0x800160B8; // type:function size:0x8E8 scope:local SetTevStageTex = .text:0x800169A0; // type:function size:0x2588 scope:local SetKColor = .text:0x80018F28; // type:function size:0x164 scope:local @@ -475,7 +475,7 @@ Hu3DParticleAttrSet = .text:0x8002A544; // type:function size:0x40 Hu3DParticleAttrReset = .text:0x8002A584; // type:function size:0x44 Hu3DParticleCntSet = .text:0x8002A5C8; // type:function size:0x3C Hu3DParticleAnimModeSet = .text:0x8002A604; // type:function size:0x60 -_Hu3DParticleAttrReset = .text:0x8002A664; // type:function size:0xAD4 scope:local +particleFunc = .text:0x8002A664; // type:function size:0xAD4 scope:local Hu3DParManInit = .text:0x8002B138; // type:function size:0x48 Hu3DParManCreate = .text:0x8002B180; // type:function size:0x1D4 Hu3DParManLink = .text:0x8002B354; // type:function size:0x17C @@ -666,29 +666,29 @@ MGSeqKillAll = .text:0x80035A0C; // type:function size:0x3C MGSeqDoneCheck = .text:0x80035A48; // type:function size:0xA4 MGSeqStub = .text:0x80035AEC; // type:function size:0x4 MGSeqSprKill = .text:0x80035AF0; // type:function size:0x8C -SeqInitTimer = .text:0x80035B7C; // type:function size:0x2E0 scope:local -SeqUpdateTimer = .text:0x80035E5C; // type:function size:0x69C scope:local -SeqInitType2 = .text:0x800364F8; // type:function size:0x3D8 scope:local -SeqUpdateType2 = .text:0x800368D0; // type:function size:0x2F8 scope:local +MGSeqInitTimer = .text:0x80035B7C; // type:function size:0x2E0 +MGSeqUpdateTimer = .text:0x80035E5C; // type:function size:0x69C +MGSeqInitType2 = .text:0x800364F8; // type:function size:0x3D8 +MGSeqUpdateType2 = .text:0x800368D0; // type:function size:0x2F8 fn_80036BC8 = .text:0x80036BC8; // type:function size:0x188 SeqMakeWord = .text:0x80036D50; // type:function size:0x1D0 scope:local SeqLoadFontChar = .text:0x80036F20; // type:function size:0x26C scope:local -SeqInitMGBasic = .text:0x8003718C; // type:function size:0x194 scope:local -SeqUpdateMGBasic = .text:0x80037320; // type:function size:0x9D0 scope:local -SeqInitMGCommon = .text:0x80037CF0; // type:function size:0x2A4 scope:local -SeqUpdateMGBattle = .text:0x80037F94; // type:function size:0xDA4 scope:local -SeqUpdateMG1vs3 = .text:0x80038D38; // type:function size:0xDA4 scope:local -SeqUpdateMGStory = .text:0x80039ADC; // type:function size:0xBB8 scope:local -SeqUpdateMG2vs2 = .text:0x8003A694; // type:function size:0xAB4 scope:local -SeqInitFlip = .text:0x8003B148; // type:function size:0x3C4 scope:local -SeqUpdateFlip = .text:0x8003B50C; // type:function size:0x91C scope:local -SeqUpdateMGBowser = .text:0x8003BE28; // type:function size:0xC84 scope:local -SeqInitDraw = .text:0x8003CAAC; // type:function size:0xDC scope:local -SeqUpdateDraw = .text:0x8003CB88; // type:function size:0x3DC scope:local -SeqInitWin = .text:0x8003CF64; // type:function size:0x8A0 scope:local -SeqUpdateWin = .text:0x8003D804; // type:function size:0x72C scope:local -SeqInitRecord = .text:0x8003DF30; // type:function size:0x774 scope:local -SeqUpdateRecord = .text:0x8003E6A4; // type:function size:0x304 scope:local +MGSeqInitMGBasic = .text:0x8003718C; // type:function size:0x194 +MGSeqUpdateMGBasic = .text:0x80037320; // type:function size:0x9D0 +MGSeqInitMGCommon = .text:0x80037CF0; // type:function size:0x2A4 +MGSeqUpdateMGBattle = .text:0x80037F94; // type:function size:0xDA4 +MGSeqUpdateMG1vs3 = .text:0x80038D38; // type:function size:0xDA4 +MGSeqUpdateMGStory = .text:0x80039ADC; // type:function size:0xBB8 +MGSeqUpdateMG2vs2 = .text:0x8003A694; // type:function size:0xAB4 +MGSeqInitFlip = .text:0x8003B148; // type:function size:0x3C4 +MGSeqUpdateFlip = .text:0x8003B50C; // type:function size:0x91C +MGSeqUpdateMGBowser = .text:0x8003BE28; // type:function size:0xC84 +MGSeqInitDraw = .text:0x8003CAAC; // type:function size:0xDC +MGSeqUpdateDraw = .text:0x8003CB88; // type:function size:0x3DC +MGSeqInitWin = .text:0x8003CF64; // type:function size:0x8A0 +MGSeqUpdateWin = .text:0x8003D804; // type:function size:0x72C +MGSeqInitRecord = .text:0x8003DF30; // type:function size:0x774 +MGSeqUpdateRecord = .text:0x8003E6A4; // type:function size:0x304 MGSeqPauseInit = .text:0x8003E9A8; // type:function size:0x6C PauseProc = .text:0x8003EA14; // type:function size:0x94C scope:local MGSeqPauseKill = .text:0x8003F360; // type:function size:0xC @@ -721,7 +721,7 @@ fn_80040374 = .text:0x80040374; // type:function size:0x98 fn_8004040C = .text:0x8004040C; // type:function size:0xF4 GetClusterCurve = .text:0x80040500; // type:function size:0xA8 GetClusterWeightCurve = .text:0x800405A8; // type:function size:0xA8 -SetClusterMain = .text:0x80040650; // type:function size:0x3A0 +SetClusterMain = .text:0x80040650; // type:function size:0x3A0 scope:local ClusterProc = .text:0x800409F0; // type:function size:0x160 ClusterMotionExec = .text:0x80040B50; // type:function size:0x210 SetShapeMain = .text:0x80040D60; // type:function size:0x36C scope:local @@ -1841,10 +1841,10 @@ BallBooFlash = .text:0x800A1024; // type:function size:0x178 scope:local TakeBallCoin = .text:0x800A119C; // type:function size:0x1B0 scope:local ExecTakeBallCoin = .text:0x800A134C; // type:function size:0xDC scope:local TakeBallCoinPosSet = .text:0x800A1428; // type:function size:0x9C scope:local -CheckBallCoinDone = .text:0x800A14C4; // type:function size:0x68 -TakeBallStar = .text:0x800A152C; // type:function size:0x168 -ExecTakeBallStar = .text:0x800A1694; // type:function size:0x184 -CheckTakeBallStarDone = .text:0x800A1818; // type:function size:0x1C +CheckBallCoinDone = .text:0x800A14C4; // type:function size:0x68 scope:local +TakeBallStar = .text:0x800A152C; // type:function size:0x168 scope:local +ExecTakeBallStar = .text:0x800A1694; // type:function size:0x184 scope:local +CheckTakeBallStarDone = .text:0x800A1818; // type:function size:0x1C scope:local BoardBooStealValueGet = .text:0x800A1834; // type:function size:0x30 BoardBooStealLightCheck = .text:0x800A1864; // type:function size:0x20 UpdatePlayerCoins = .text:0x800A1884; // type:function size:0x1B0 scope:local @@ -2102,6 +2102,8 @@ OSSetErrorHandler = .text:0x800B6FC8; // type:function size:0x1C scope:global __OSUnhandledException = .text:0x800B6FE4; // type:function size:0x200 scope:global OSGetFontEncode = .text:0x800B71E4; // type:function size:0x58 OSDisableInterrupts = .text:0x800B723C; // type:function size:0x14 scope:global +__RAS_OSDisableInterrupts_begin = .text:0x800B723C; // type:label scope:global +__RAS_OSDisableInterrupts_end = .text:0x800B724C; // type:label scope:global OSEnableInterrupts = .text:0x800B7250; // type:function size:0x14 scope:global OSRestoreInterrupts = .text:0x800B7264; // type:function size:0x24 scope:global __OSSetInterruptHandler = .text:0x800B7288; // type:function size:0x1C scope:global @@ -2192,8 +2194,8 @@ __init_user = .text:0x800BB280; // type:function size:0x20 scope:global __init_cpp = .text:0x800BB2A0; // type:function size:0x54 scope:local _ExitProcess = .text:0x800BB2F4; // type:function size:0x20 scope:global DBInit = .text:0x800BB314; // type:function size:0x28 scope:global -__DBExceptionDestinationAux = .text:0x800BB33C; // type:function size:0x48 scope:local -__DBExceptionDestination = .text:0x800BB384; // type:function size:0x10 scope:global +__DBExceptionDestinationAux = .text:0x800BB33C; // type:function size:0x48 scope:global +__DBExceptionDestination = .text:0x800BB384; // type:function size:0x10 scope:local __DBIsExceptionMarked = .text:0x800BB394; // type:function size:0x1C scope:global DBPrintf = .text:0x800BB3B0; // type:function size:0x50 scope:global PSMTXIdentity = .text:0x800BB400; // type:function size:0x2C @@ -2321,7 +2323,7 @@ __fstLoad = .text:0x800C0A04; // type:function size:0x168 scope:global __VIRetraceHandler = .text:0x800C0B6C; // type:function size:0x228 scope:local VISetPreRetraceCallback = .text:0x800C0D94; // type:function size:0x44 VISetPostRetraceCallback = .text:0x800C0DD8; // type:function size:0x44 -getTiming = .text:0x800C0E1C; // type:function size:0x90 +getTiming = .text:0x800C0E1C; // type:function size:0x90 scope:local __VIInit = .text:0x800C0EAC; // type:function size:0x1F8 VIInit = .text:0x800C10A4; // type:function size:0x478 VIWaitForRetrace = .text:0x800C151C; // type:function size:0x54 @@ -2570,7 +2572,7 @@ GXEndDisplayList = .text:0x800CF0E0; // type:function size:0xD4 GXCallDisplayList = .text:0x800CF1B4; // type:function size:0x70 GXProject = .text:0x800CF224; // type:function size:0x174 GXSetProjection = .text:0x800CF398; // type:function size:0xD4 -GXSetProjectionv = .text:0x800CF46C; // type:function size:0x78 +GXGetProjectionv = .text:0x800CF46C; // type:function size:0x78 WriteMTXPS4x3 = .text:0x800CF4E4; // type:function size:0x34 scope:local WriteMTXPS3x3from3x4 = .text:0x800CF518; // type:function size:0x34 scope:local WriteMTXPS4x2 = .text:0x800CF54C; // type:function size:0x24 scope:local @@ -2754,8 +2756,8 @@ __THPHuffDecodeDCTCompU = .text:0x800E0C48; // type:function size:0x6A8 scope:lo __THPHuffDecodeDCTCompV = .text:0x800E12F0; // type:function size:0x6A8 scope:local THPInit = .text:0x800E1998; // type:function size:0x78 THPAudioDecode = .text:0x800E1A10; // type:function size:0x464 -__THPAudioGetNewSample = .text:0x800E1E74; // type:function size:0x90 -__THPAudioInitialize = .text:0x800E1F04; // type:function size:0x3C +__THPAudioGetNewSample = .text:0x800E1E74; // type:function size:0x90 scope:local +__THPAudioInitialize = .text:0x800E1F04; // type:function size:0x3C scope:local __va_arg = .text:0x800E1F40; // type:function size:0xC8 scope:global __destroy_global_chain = .text:0x800E2008; // type:function size:0x48 scope:global __register_global_object = .text:0x800E2050; // type:function size:0x18 scope:global @@ -2916,7 +2918,7 @@ __StringWrite = .text:0x800E65DC; // type:function size:0x6C __FileWrite = .text:0x800E6648; // type:function size:0x58 scope:global __pformatter = .text:0x800E66A0; // type:function size:0x774 scope:local float2str = .text:0x800E6E14; // type:function size:0x6EC scope:local -round_decimal = .text:0x800E7500; // type:function size:0x12C +round_decimal = .text:0x800E7500; // type:function size:0x12C scope:local double2hex = .text:0x800E762C; // type:function size:0x338 scope:local longlong2str = .text:0x800E7964; // type:function size:0x2DC scope:local long2str = .text:0x800E7C40; // type:function size:0x220 scope:local @@ -3030,9 +3032,9 @@ TRK_flush_cache = .text:0x800F0360; // type:function size:0x38 TRK_fill_mem = .text:0x800F0398; // type:function size:0xBC __TRK_get_MSR = .text:0x800F0454; // type:function size:0x8 __TRK_set_MSR = .text:0x800F045C; // type:function size:0x8 -TRK_ppc_memcpy = .text:0x800F0464; // type:function size:0x3C +TRK_ppc_memcpy = .text:0x800F0464; // type:function size:0x3C scope:local TRKInterruptHandler = .text:0x800F04A0; // type:function size:0x194 scope:global -TRKExceptionHandler = .text:0x800F0634; // type:function size:0x9C scope:global +TRKExceptionHandler = .text:0x800F0634; // type:function size:0x9C scope:local TRKSwapAndGo = .text:0x800F06D0; // type:function size:0xC4 scope:global TRKInterruptHandlerEnableInterrupts = .text:0x800F0794; // type:function size:0x54 scope:global TRKTargetSetInputPendingPtr = .text:0x800F07E8; // type:function size:0x10 scope:global @@ -3512,7 +3514,7 @@ msmSysDelGroupAll = .text:0x801161B4; // type:function size:0x140 msmSysDelGroupBase = .text:0x801162F4; // type:function size:0x28C msmSysLoadGroupBase = .text:0x80116580; // type:function size:0x298 msmSysLoadGroupSet = .text:0x80116818; // type:function size:0x3F0 -msmSysLoadGroupSub = .text:0x80116C08; // type:function size:0x3B4 +msmSysLoadGroupSub = .text:0x80116C08; // type:function size:0x3B4 scope:local msmSysLoadGroup = .text:0x80116FBC; // type:function size:0x278 msmSysCheckInit = .text:0x80117234; // type:function size:0x20 msmSysInit = .text:0x80117254; // type:function size:0x474 @@ -3558,7 +3560,7 @@ msmSePlay = .text:0x80119A94; // type:function size:0x480 msmSeInit = .text:0x80119F14; // type:function size:0x130 msmStreamGetStatus = .text:0x8011A044; // type:function size:0xC8 msmStreamSetMasterVolume = .text:0x8011A10C; // type:function size:0x118 -msmStreamPauseAll = .text:0x8011A224; // type:function size:0xE0 +msmStreamStopAll = .text:0x8011A224; // type:function size:0xE0 msmStreamStop = .text:0x8011A304; // type:function size:0x204 msmStreamPlay = .text:0x8011A508; // type:function size:0x88 msmStreamPeriodicProc = .text:0x8011A590; // type:function size:0x8C @@ -3566,15 +3568,15 @@ msmStreamSetOutputMode = .text:0x8011A61C; // type:function size:0x114 msmStreamAmemFree = .text:0x8011A730; // type:function size:0x68 msmStreamAmemAlloc = .text:0x8011A798; // type:function size:0x10C msmStreamInit = .text:0x8011A8A4; // type:function size:0x2A8 -msmStreamPauseOff = .text:0x8011AB4C; // type:function size:0x2B8 -msmStreamPauseOn = .text:0x8011AE04; // type:function size:0x1AC -msmStreamPauseFade = .text:0x8011AFB0; // type:function size:0x2E8 -msmStreamFade = .text:0x8011B298; // type:function size:0x33C +msmStreamPauseOff = .text:0x8011AB4C; // type:function size:0x2B8 scope:local +msmStreamPauseOn = .text:0x8011AE04; // type:function size:0x1AC scope:local +msmStreamPauseFade = .text:0x8011AFB0; // type:function size:0x2E8 scope:local +msmStreamFade = .text:0x8011B298; // type:function size:0x33C scope:local msmStreamStopSub = .text:0x8011B5D4; // type:function size:0x13C scope:local msmStreamSetParamSub = .text:0x8011B710; // type:function size:0xE0 scope:local -msmStreamPackStartStereo = .text:0x8011B7F0; // type:function size:0x448 -msmStreamPackStartMono = .text:0x8011BC38; // type:function size:0x2DC -msmStreamSlotOff = .text:0x8011BF14; // type:function size:0xD0 +msmStreamPackStartStereo = .text:0x8011B7F0; // type:function size:0x448 scope:local +msmStreamPackStartMono = .text:0x8011BC38; // type:function size:0x2DC scope:local +msmStreamSlotOff = .text:0x8011BF14; // type:function size:0xD0 scope:local msmStreamData = .text:0x8011BFE4; // type:function size:0x320 scope:local msmStreamDvdCallback = .text:0x8011C304; // type:function size:0x4A8 scope:local msmStreamDvdCallback2 = .text:0x8011C7AC; // type:function size:0x188 scope:local @@ -3609,8 +3611,8 @@ pickSpr = .rodata:0x8011DFD0; // type:object size:0x20 scope:local handMdl = .rodata:0x8011DFF0; // type:object size:0x20 scope:local ticketSpr = .rodata:0x8011E010; // type:object size:0x10 scope:local lbl_8011E020 = .rodata:0x8011E020; // type:object size:0x20 data:4byte -lbl_8011E040 = .rodata:0x8011E040; // type:object size:0x24 -lbl_8011E064 = .rodata:0x8011E064; // type:object size:0x4C +starMesTbl1 = .rodata:0x8011E040; // type:object size:0x24 scope:local +starMesTbl2 = .rodata:0x8011E064; // type:object size:0x48 scope:local lbl_8011E0B0 = .rodata:0x8011E0B0; // type:object size:0x10 data:4byte lbl_8011E0C0 = .rodata:0x8011E0C0; // type:object size:0x54 data:4byte lbl_8011E118 = .rodata:0x8011E118; // type:object size:0x38 data:4byte @@ -3644,14 +3646,14 @@ __THPAANScaleFactor = .rodata:0x8011E490; // type:object size:0x40 data:byte lbl_8011E4D0 = .rodata:0x8011E4D0; // type:object size:0x10 lbl_8011E4E0 = .rodata:0x8011E4E0; // type:object size:0x10 __constants = .rodata:0x8011E4F0; // type:object size:0x18 scope:local data:double -lbl_8011E508 = .rodata:0x8011E508; // type:object size:0x54 -lbl_8011E55C = .rodata:0x8011E55C; // type:object size:0x14 -lbl_8011E570 = .rodata:0x8011E570; // type:object size:0x10 -lbl_8011E580 = .rodata:0x8011E580; // type:object size:0x20 +lbl_8011E508 = .rodata:0x8011E508; // type:object size:0x54 data:string +lbl_8011E55C = .rodata:0x8011E55C; // type:object size:0x14 data:string +lbl_8011E570 = .rodata:0x8011E570; // type:object size:0x10 data:string +lbl_8011E580 = .rodata:0x8011E580; // type:object size:0x20 data:string lbl_8011E5A0 = .rodata:0x8011E5A0; // type:object size:0x38 lbl_8011E5D8 = .rodata:0x8011E5D8; // type:object size:0x40 fix_pool_sizes = .rodata:0x8011E618; // type:object size:0x18 scope:local data:4byte -lbl_8011E630 = .rodata:0x8011E630; // type:object size:0xE0 +lbl_8011E630 = .rodata:0x8011E630; // type:object size:0xE0 data:string @stringBase0 = .rodata:0x8011E710; // type:object size:0x25 scope:local data:string_table Zero = .rodata:0x8011E738; // type:object size:0x10 scope:local bp = .rodata:0x8011E748; // type:object size:0x10 scope:local data:double @@ -3665,12 +3667,12 @@ T = .rodata:0x8011E950; // type:object size:0x68 scope:local data:double atanhi = .rodata:0x8011E9B8; // type:object size:0x20 scope:local atanlo = .rodata:0x8011E9D8; // type:object size:0x20 scope:local aT = .rodata:0x8011E9F8; // type:object size:0x58 scope:local -@62 = .rodata:0x8011EA50; // type:object size:0x1B scope:local data:string -lbl_8011EA70 = .rodata:0x8011EA70; // type:object size:0x20 +@62 = .rodata:0x8011EA50; // type:object size:0x1C scope:local data:string +lbl_8011EA70 = .rodata:0x8011EA70; // type:object size:0x1D data:string gTRKMemMap = .rodata:0x8011EA90; // type:object size:0x10 data:4byte -lbl_8011EAA0 = .rodata:0x8011EAA0; // type:object size:0x28 data:4byte -lbl_8011EAC8 = .rodata:0x8011EAC8; // type:object size:0x28 data:4byte -lbl_8011EAF0 = .rodata:0x8011EAF0; // type:object size:0x28 data:4byte +lbl_8011EAA0 = .rodata:0x8011EAA0; // type:object size:0x28 scope:local data:4byte +lbl_8011EAC8 = .rodata:0x8011EAC8; // type:object size:0x28 scope:local data:4byte +lbl_8011EAF0 = .rodata:0x8011EAF0; // type:object size:0x28 scope:local data:4byte @154 = .rodata:0x8011EB18; // type:object size:0x21 scope:local data:string @155 = .rodata:0x8011EB3C; // type:object size:0x24 scope:local data:string dspMixerCycles = .rodata:0x8011EB60; // type:object size:0x40 @@ -3678,7 +3680,7 @@ pbOffsets$890 = .rodata:0x8011EBA0; // type:object size:0x18 scope:local inpColdMIDIDefaults = .rodata:0x8011EBB8; // type:object size:0x88 scope:local inpWarmMIDIDefaults = .rodata:0x8011EC40; // type:object size:0x88 scope:local data:byte itdOffTab = .rodata:0x8011ECC8; // type:object size:0x100 scope:local -lbl_8011EDE0 = .data:0x8011EDE0; // type:object size:0x10 data:string +lbl_8011EDE0 = .data:0x8011EDE0; // type:object size:0x10 scope:local data:string chanTbl = .data:0x8011EDF0; // type:object size:0x10 scope:local correctDiskID = .data:0x8011EE00; // type:object size:0x124 scope:local jumptable_8011EF24 = .data:0x8011EF24; // type:object size:0x34 scope:local @@ -3826,7 +3828,8 @@ DataDirStat = .data:0x8011F7C4; // type:object size:0x468 scope:local data:4byte lbl_8011FC2C = .data:0x8011FC2C; // type:object size:0x1D data:string lbl_8011FC49 = .data:0x8011FC49; // type:object size:0x1F data:string lbl_8011FC68 = .data:0x8011FC68; // type:object size:0x1D data:string -lbl_8011FC85 = .data:0x8011FC85; // type:object size:0x1F data:string +lbl_8011FC85 = .data:0x8011FC85; // type:object size:0x12 data:string +lbl_8011FC97 = .data:0x8011FC97; // type:object size:0xD data:string lbl_8011FCA4 = .data:0x8011FCA4; // type:object size:0x1A data:string lbl_8011FCBE = .data:0x8011FCBE; // type:object size:0x122 lbl_8011FDE0 = .data:0x8011FDE0; // type:object size:0x20 @@ -3911,14 +3914,14 @@ lbl_8012E70A = .data:0x8012E70A; // type:object size:0xB data:string lbl_8012E715 = .data:0x8012E715; // type:object size:0x273 lbl_8012E988 = .data:0x8012E988; // type:object size:0x12 data:string lbl_8012E99A = .data:0x8012E99A; // type:object size:0xD6 -HuSndGrpTbl = .data:0x8012EA70; // type:object size:0x5B0 +sndGrpTable = .data:0x8012EA70; // type:object size:0x5B0 lbl_8012F020 = .data:0x8012F020; // type:object size:0x94 lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31 seqInfoTbl = .data:0x8012F130; // type:object size:0x1DC scope:local seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local -mgSeqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local +mgSeqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local data:2byte lbl_8012F336 = .data:0x8012F336; // type:object size:0x53 scope:local data:string lbl_8012F389 = .data:0x8012F389; // type:object size:0x9 scope:local data:string lbl_8012F392 = .data:0x8012F392; // type:object size:0x9 scope:local data:string @@ -4130,7 +4133,7 @@ VolumeTable = .data:0x801311E8; // type:object size:0x100 scope:local lbl_801312E8 = .data:0x801312E8; // type:object size:0x4D lbl_80131335 = .data:0x80131335; // type:object size:0x1B mgInfoTbl = .data:0x80131350; // type:object size:0xE00 data:2byte -commentTbl = .data:0x80132150; // type:object size:0x40 scope:local +commentTbl = .data:0x80132150; // type:object size:0x40 scope:local data:string lbl_80132190 = .data:0x80132190; // type:object size:0xC data:string lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string lbl_801321A8 = .data:0x801321A8; // type:object size:0xC data:string @@ -4288,7 +4291,8 @@ statusLayout1Vs3 = .data:0x8013AD64; // type:object size:0x30 scope:local data:f statusLayout2Vs2 = .data:0x8013AD94; // type:object size:0x30 scope:local data:float luckyMessTbl = .data:0x8013ADC4; // type:object size:0x24 scope:local jumptable_8013ADE8 = .data:0x8013ADE8; // type:object size:0x20 scope:local -hiliteYTbl = .data:0x8013AE08; // type:object size:0x10 scope:local +cursorYTbl = .data:0x8013AE08; // type:object size:0x10 scope:local +hiliteYTbl = .data:0x8013AE18; // type:object size:0x10 scope:local hiliteColTbl = .data:0x8013AE28; // type:object size:0xC scope:local hostMesTbl = .data:0x8013AE38; // type:object size:0x90 scope:local houseMdlTbl = .data:0x8013AEC8; // type:object size:0x30 scope:local @@ -4328,27 +4332,100 @@ jumptable_8013B4D4 = .data:0x8013B4D4; // type:object size:0x20 scope:local jumptable_8013B4F4 = .data:0x8013B4F4; // type:object size:0x20 scope:local lbl_8013B518 = .data:0x8013B518; // type:object size:0x24 data:string lbl_8013B53C = .data:0x8013B53C; // type:object size:0x24 data:string -@84 = .data:0x8013B560; // type:object size:0x1E scope:local data:string -__OSExceptionLocations = .data:0x8013B648; // type:object size:0x3C -lbl_8013B720 = .data:0x8013B720; // type:object size:0x398 +@82 = .data:0x8013B560; // type:object size:0x1E scope:local data:string +lbl_8013B580 = .data:0x8013B580; // type:object size:0x16 scope:local data:string +lbl_8013B598 = .data:0x8013B598; // type:object size:0xC scope:local data:string +lbl_8013B5A4 = .data:0x8013B5A4; // type:object size:0x9 scope:local data:string +lbl_8013B5B4 = .data:0x8013B5B0; // type:object size:0x10 scope:local data:string +lbl_8013B5C0 = .data:0x8013B5C0; // type:object size:0xB scope:local data:string +lbl_8013B5CC = .data:0x8013B5CC; // type:object size:0xE scope:local data:string +lbl_8013B5DC = .data:0x8013B5DC; // type:object size:0xD scope:local data:string +lbl_8013B5EC = .data:0x8013B5EC; // type:object size:0xD scope:local data:string +lbl_8013B5FC = .data:0x8013B5FC; // type:object size:0xD scope:local data:string +lbl_8013B60C = .data:0x8013B60C; // type:object size:0x12 scope:local data:string +lbl_8013B620 = .data:0x8013B620; // type:object size:0xE scope:local data:string +lbl_8013B630 = .data:0x8013B630; // type:object size:0x15 scope:local data:string +__OSExceptionLocations = .data:0x8013B648; // type:object size:0x3C scope:local +lbl_8013B720 = .data:0x8013B720; // type:object size:0x24 scope:local data:string +lbl_8013B744 = .data:0x8013B744; // type:object size:0x37 scope:local data:string +lbl_8013B77C = .data:0x8013B77C; // type:object size:0x28 scope:local data:string +lbl_8013B7A4 = .data:0x8013B7A4; // type:object size:0x4F scope:local data:string +lbl_8013B7F4 = .data:0x8013B7F4; // type:object size:0x3E scope:local data:string +lbl_8013B834 = .data:0x8013B834; // type:object size:0x37 scope:local data:string +lbl_8013B86C = .data:0x8013B86C; // type:object size:0x49 scope:local data:string +lbl_8013B8B8 = .data:0x8013B8B8; // type:object size:0x33 scope:local data:string +lbl_8013B8EC = .data:0x8013B8EC; // type:object size:0x3D scope:local data:string +lbl_8013B92C = .data:0x8013B92C; // type:object size:0x39 scope:local data:string +lbl_8013B968 = .data:0x8013B968; // type:object size:0x45 scope:local data:string +lbl_8013B9B0 = .data:0x8013B9B0; // type:object size:0x5F scope:local data:string +lbl_8013BA10 = .data:0x8013BA10; // type:object size:0x2C scope:local data:string +lbl_8013BA3C = .data:0x8013BA3C; // type:object size:0x12 scope:local data:string +lbl_8013BA50 = .data:0x8013BA50; // type:object size:0x12 scope:local data:string +lbl_8013BA64 = .data:0x8013BA64; // type:object size:0x1A scope:local data:string +lbl_8013BA80 = .data:0x8013BA80; // type:object size:0x13 scope:local data:string +lbl_8013BA94 = .data:0x8013BA94; // type:object size:0x10 scope:local data:string +lbl_8013BAA4 = .data:0x8013BAA4; // type:object size:0xE scope:local data:string DSPInitCode = .data:0x8013BAB8; // type:object size:0x80 scope:local @69 = .data:0x8013BB38; // type:object size:0x29 scope:local data:string -lbl_8013BD68 = .data:0x8013BD68; // type:object size:0x1B4 -@74 = .data:0x8013BF1C; // type:object size:0x23 scope:local data:string +lbl_8013BB64 = .data:0x8013BB64; // type:object size:0x18 scope:local data:string +lbl_8013BB7C = .data:0x8013BB7C; // type:object size:0x1B scope:local data:string +lbl_8013BB98 = .data:0x8013BB98; // type:object size:0x30 scope:local data:string +lbl_8013BBC8 = .data:0x8013BBC8; // type:object size:0x3C scope:local data:string +lbl_8013BC04 = .data:0x8013BC04; // type:object size:0x37 scope:local data:string +lbl_8013BC3D = .data:0x8013BC3D; // type:object size:0x3E scope:local data:string +lbl_8013BC7C = .data:0x8013BC7C; // type:object size:0x29 scope:local data:string +lbl_8013BCA8 = .data:0x8013BCA8; // type:object size:0x1D scope:local data:string +lbl_8013BCC8 = .data:0x8013BCC8; // type:object size:0x19 scope:local data:string +lbl_8013BCE4 = .data:0x8013BCE4; // type:object size:0x19 scope:local data:string +lbl_8013BD00 = .data:0x8013BD00; // type:object size:0x19 scope:local data:string +lbl_8013BD1C = .data:0x8013BD1C; // type:object size:0x16 scope:local data:string +lbl_8013BD34 = .data:0x8013BD34; // type:object size:0x2E scope:local data:string +lbl_8013BD68 = .data:0x8013BD68; // type:object size:0x44 scope:local data:string +lbl_8013BDAC = .data:0x8013BDAC; // type:object size:0x30 scope:local data:string +lbl_8013BDDC = .data:0x8013BDDC; // type:object size:0x2F scope:local data:string +lbl_8013BE0C = .data:0x8013BE0C; // type:object size:0x2F scope:local data:string +lbl_8013BE3C = .data:0x8013BE3C; // type:object size:0x11 scope:local data:string +lbl_8013BE50 = .data:0x8013BE50; // type:object size:0x21 scope:local data:string +lbl_8013BE74 = .data:0x8013BE74; // type:object size:0x12 scope:local data:string +lbl_8013BE88 = .data:0x8013BE88; // type:object size:0x19 scope:local data:string +lbl_8013BEA4 = .data:0x8013BEA4; // type:object size:0x12 scope:local data:string +lbl_8013BEB8 = .data:0x8013BEB8; // type:object size:0x1D scope:local data:string +lbl_8013BED8 = .data:0x8013BED8; // type:object size:0x26 scope:local data:string +lbl_8013BF00 = .data:0x8013BF00; // type:object size:0x1C scope:local data:string +@76 = .data:0x8013BF1C; // type:object size:0x23 scope:local data:string @10 = .data:0x8013BF40; // type:object size:0x16 scope:local data:string -@43 = .data:0x8013C21C; // type:object size:0x40 scope:local +lbl_8013BF58 = .data:0x8013BF58; // type:object size:0x26 scope:local data:string +lbl_8013BF80 = .data:0x8013BF80; // type:object size:0x1C scope:local data:string +lbl_8013BF9C = .data:0x8013BF9C; // type:object size:0x1D scope:local data:string +lbl_8013BFBC = .data:0x8013BFBC; // type:object size:0x17 scope:local data:string +lbl_8013BFD4 = .data:0x8013BFD4; // type:object size:0x31 scope:local data:string +lbl_8013C008 = .data:0x8013C008; // type:object size:0x10 scope:local data:string +lbl_8013C018 = .data:0x8013C018; // type:object size:0x60 scope:local data:string +lbl_8013C078 = .data:0x8013C078; // type:object size:0x4C scope:local data:string +lbl_8013C0C4 = .data:0x8013C0C4; // type:object size:0x62 scope:local data:string +lbl_8013C128 = .data:0x8013C128; // type:object size:0x60 scope:local data:string +lbl_8013C188 = .data:0x8013C188; // type:object size:0x1F scope:local data:string +lbl_8013C1A8 = .data:0x8013C1A8; // type:object size:0x1F scope:local data:string +lbl_8013C1C8 = .data:0x8013C1C8; // type:object size:0x1B scope:local data:string +lbl_8013C1E4 = .data:0x8013C1E4; // type:object size:0x35 scope:local data:string +@87 = .data:0x8013C21C; // type:object size:0x40 scope:local InterruptPrioTable = .data:0x8013C260; // type:object size:0x2C scope:local data:4byte -lbl_8013C290 = .data:0x8013C290; // type:object size:0x28 -lbl_8013C2B8 = .data:0x8013C2B8; // type:object size:0x28 +lbl_8013C290 = .data:0x8013C290; // type:object size:0x25 scope:local data:string +lbl_8013C2B8 = .data:0x8013C2B8; // type:object size:0x27 scope:local data:string ResetFunctionInfo = .data:0x8013C2E0; // type:object size:0x10 scope:local -lbl_8013C2F0 = .data:0x8013C2F0; // type:object size:0x78 +lbl_8013C2F0 = .data:0x8013C2F0; // type:object size:0x12 scope:local data:string +lbl_8013C304 = .data:0x8013C304; // type:object size:0x11 scope:local data:string +lbl_8013C318 = .data:0x8013C318; // type:object size:0xD scope:local data:string +lbl_8013C328 = .data:0x8013C328; // type:object size:0x11 scope:local data:string +lbl_8013C33C = .data:0x8013C33C; // type:object size:0x11 scope:local data:string +lbl_8013C350 = .data:0x8013C350; // type:object size:0x11 scope:local data:string YearDays = .data:0x8013C368; // type:object size:0x30 scope:local LeapYearDays = .data:0x8013C398; // type:object size:0x30 scope:local -lbl_8013C3C8 = .data:0x8013C3C8; // type:object size:0x18 data:string -lbl_8013C3E0 = .data:0x8013C3E0; // type:object size:0xC8 data:string -lbl_8013C4A8 = .data:0x8013C4A8; // type:object size:0x38 -lbl_8013C4E0 = .data:0x8013C4E0; // type:object size:0x34 data:string -lbl_8013C514 = .data:0x8013C514; // type:object size:0x34 +lbl_8013C3C8 = .data:0x8013C3C8; // type:object size:0x18 scope:local data:string +lbl_8013C3E0 = .data:0x8013C3E0; // type:object size:0xC8 scope:local data:string +lbl_8013C4A8 = .data:0x8013C4A8; // type:object size:0x38 scope:local +lbl_8013C4E0 = .data:0x8013C4E0; // type:object size:0x34 scope:local data:string +lbl_8013C514 = .data:0x8013C514; // type:object size:0x34 scope:local @13 = .data:0x8013C548; // type:object size:0x15 scope:local data:string @293 = .data:0x8013C594; // type:object size:0x20 scope:local jumptable_8013C5B4 = .data:0x8013C5B4; // type:object size:0x40 scope:local @@ -4359,23 +4436,31 @@ ErrorTable = .data:0x8013C660; // type:object size:0x48 scope:local data:4byte timing = .data:0x8013C718; // type:object size:0x130 scope:local taps = .data:0x8013C848; // type:object size:0x32 scope:local jumptable_8013C87C = .data:0x8013C87C; // type:object size:0x58 scope:local -lbl_8013C8D4 = .data:0x8013C8D4; // type:object size:0x29 data:string -lbl_8013C900 = .data:0x8013C900; // type:object size:0x29 data:string -lbl_8013C92C = .data:0x8013C92C; // type:object size:0x29 data:string -lbl_8013C958 = .data:0x8013C958; // type:object size:0x29 data:string -lbl_8013C984 = .data:0x8013C984; // type:object size:0x29 data:string -lbl_8013C9B0 = .data:0x8013C9B0; // type:object size:0x29 data:string +lbl_8013C8D4 = .data:0x8013C8D4; // type:object size:0x29 scope:local data:string +lbl_8013C900 = .data:0x8013C900; // type:object size:0x29 scope:local data:string +lbl_8013C92C = .data:0x8013C92C; // type:object size:0x29 scope:local data:string +lbl_8013C958 = .data:0x8013C958; // type:object size:0x29 scope:local data:string +lbl_8013C984 = .data:0x8013C984; // type:object size:0x29 scope:local data:string +lbl_8013C9B0 = .data:0x8013C9B0; // type:object size:0x29 scope:local data:string DEMOFontBitmap = .data:0x8013C9E0; // type:object size:0xC00 align:32 -lbl_8013D5E0 = .data:0x8013D5E0; // type:object size:0xC data:string -lbl_8013D5EC = .data:0x8013D5EC; // type:object size:0x28 +lbl_8013D5E0 = .data:0x8013D5E0; // type:object size:0xC scope:local data:string +lbl_8013D5EC = .data:0x8013D5EC; // type:object size:0x26 scope:local data:string jumptable_8013D614 = .data:0x8013D614; // type:object size:0x28 scope:local jumptable_8013D698 = .data:0x8013D698; // type:object size:0x28 scope:local jumptable_8013D6C0 = .data:0x8013D6C0; // type:object size:0x28 scope:local jumptable_8013D6E8 = .data:0x8013D6E8; // type:object size:0x28 scope:local jumptable_8013D710 = .data:0x8013D710; // type:object size:0x28 scope:local -lbl_8013D738 = .data:0x8013D738; // type:object size:0x10 -lbl_8013D748 = .data:0x8013D748; // type:object size:0x38 -lbl_8013D780 = .data:0x8013D780; // type:object size:0x140 +ResetFunctionInfo = .data:0x8013D738; // type:object size:0x10 +lbl_8013D748 = .data:0x8013D748; // type:object size:0x1E scope:local data:string +lbl_8013D768 = .data:0x8013D768; // type:object size:0xC scope:local data:string +lbl_8013D774 = .data:0x8013D774; // type:object size:0x9 scope:local data:string +lbl_8013D780 = .data:0x8013D780; // type:object size:0x1D scope:local data:string +lbl_8013D7A0 = .data:0x8013D7A0; // type:object size:0x2D scope:local data:string +lbl_8013D7D0 = .data:0x8013D7D0; // type:object size:0x2D scope:local data:string +lbl_8013D800 = .data:0x8013D800; // type:object size:0x2D scope:local data:string +lbl_8013D830 = .data:0x8013D830; // type:object size:0x2D scope:local data:string +lbl_8013D860 = .data:0x8013D860; // type:object size:0x2D scope:local data:string +lbl_8013D890 = .data:0x8013D890; // type:object size:0x2B scope:local data:string jumptable_8013D8C0 = .data:0x8013D8C0; // type:object size:0x68 scope:local jumptable_8013D928 = .data:0x8013D928; // type:object size:0x44 scope:local jumptable_8013D96C = .data:0x8013D96C; // type:object size:0x1C scope:local @@ -4400,6 +4485,17 @@ SectorSizeTable = .data:0x8013E060; // type:object size:0x20 scope:local LatencyTable = .data:0x8013E080; // type:object size:0x20 scope:local Si = .data:0x8013E0A0; // type:object size:0x14 scope:local data:4byte Type = .data:0x8013E0B4; // type:object size:0x10 scope:local +@464 = .data:0x8013E0C4; // type:object size:0xC scope:local data:string +lbl_8013E0D0 = .data:0x8013E0D0; // type:object size:0xF scope:local data:string +lbl_8013E0E0 = .data:0x8013E0E0; // type:object size:0xF scope:local data:string +lbl_8013E0F0 = .data:0x8013E0F0; // type:object size:0xD scope:local data:string +lbl_8013E100 = .data:0x8013E100; // type:object size:0xA scope:local data:string +lbl_8013E10C = .data:0x8013E10C; // type:object size:0x10 scope:local data:string +lbl_8013E11C = .data:0x8013E11C; // type:object size:0x14 scope:local data:string +lbl_8013E130 = .data:0x8013E130; // type:object size:0x12 scope:local data:string +lbl_8013E144 = .data:0x8013E144; // type:object size:0x14 scope:local data:string +lbl_8013E158 = .data:0x8013E158; // type:object size:0x9 scope:local data:string +lbl_8013E164 = .data:0x8013E164; // type:object size:0x9 scope:local data:string XYNTSC = .data:0x8013E170; // type:object size:0x30 scope:local XYPAL = .data:0x8013E1A0; // type:object size:0x30 scope:local __vt__Q23std9exception = .data:0x8013E208; // type:object size:0x10 scope:weak @@ -4421,7 +4517,7 @@ jumptable_8013EA20 = .data:0x8013EA20; // type:object size:0x1C scope:local jumptable_8013EA3C = .data:0x8013EA3C; // type:object size:0x1C scope:local gTRKRestoreFlags = .data:0x8013EA58; // type:object size:0x9 scope:global data:byte gTRKExceptionStatus = .data:0x8013EA64; // type:object size:0x10 scope:local data:4byte -gTRKStepStatus = .data:0x8013EA74; // type:object size:0x14 data:4byte +gTRKStepStatus = .data:0x8013EA74; // type:object size:0x14 scope:local data:4byte TRK_ISR_OFFSETS = .data:0x8013EA88; // type:object size:0x3C scope:local data:4byte gDBCommTable = .data:0x8013EAC8; // type:object size:0x1C scope:global data:4byte jumptable_8013EAE8 = .data:0x8013EAE8; // type:object size:0x50 scope:local @@ -4447,19 +4543,19 @@ jumptable_8013FD68 = .data:0x8013FD68; // type:object size:0x24 scope:local jumptable_8013FD8C = .data:0x8013FD8C; // type:object size:0x24 scope:local jumptable_8013FDB0 = .data:0x8013FDB0; // type:object size:0x24 scope:local sndSintab = .data:0x8013FDD8; // type:object size:0x800 -dspSlave = .data:0x801405E0; // type:object size:0x19E0 align:32 +dspSlave = .data:0x801405E0; // type:object size:0x19E0 align:32 data:byte lens$301 = .data:0x80141FC0; // type:object size:0x10 scope:local lens$301 = .data:0x80141FD0; // type:object size:0x20 scope:local rsmpTab12khz = .data:0x80141FF0; // type:object size:0x800 scope:local padStatErrOld = .bss:0x80142800; // type:object size:0x10 scope:local rumbleData = .bss:0x80142810; // type:object size:0x20 scope:local ReadDataStat = .bss:0x80142840; // type:object size:0x2E00 scope:local align:32 data:4byte -TextBuffer = .bss:0x80145640; // type:object size:0x400 +textBuffer = .bss:0x80145640; // type:object size:0x400 scope:local rmodeobj = .bss:0x80145A40; // type:object size:0x40 scope:local HeapTbl = .bss:0x80145A80; // type:object size:0x14 scope:local strline = .bss:0x80145A98; // type:object size:0x6800 scope:local pfStrBuf = .bss:0x8014C298; // type:object size:0x100 scope:local data:byte -processjmpbuf = .bss:0x8014C398; // type:object size:0xF8 align:8 +processjmpbuf = .bss:0x8014C398; // type:object size:0xF8 scope:local align:8 HuSprData = .bss:0x8014C490; // type:object size:0x9600 HuSprGrpData = .bss:0x80155A90; // type:object size:0x5400 data:2byte HuSprOrder = .bss:0x8015AE90; // type:object size:0x1800 @@ -4514,7 +4610,7 @@ CenterM = .bss:0x801900E0; // type:object size:0xC0 CZoomM = .bss:0x801901A0; // type:object size:0x40 omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50 sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local -charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local +charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 seqWorkData = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte winnerNameW = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte esprite = .bss:0x80190860; // type:object size:0x600 data:2byte @@ -4526,7 +4622,7 @@ 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 winComKeyBuf = .bss:0x801953D0; // type:object size:0x1400 -ARInfo = .bss:0x801967E0; // type:object size:0x400 data:byte +ARInfo = .bss:0x801967E0; // type:object size:0x400 scope:local data:byte arqReq = .bss:0x80196BE0; // type:object size:0x20 scope:local ARQueBuf = .bss:0x80196C00; // type:object size:0x280 scope:local preLoadBuf = .bss:0x80196E80; // type:object size:0x40 scope:local align:32 @@ -4553,7 +4649,7 @@ THPFileName = .bss:0x801981A0; // type:object size:0x40 scope:local mgGameStatBackup = .bss:0x801981E0; // type:object size:0x118 mgIndexList = .bss:0x801982F8; // type:object size:0x100 mgTicTacToeGrid = .bss:0x801983F8; // type:object size:0x12 -_Sys_Flag = .bss:0x80198410; // type:object size:0x10 +_Sys_Flag = .bss:0x80198410; // type:object size:0x10 scope:local curFileInfo = .bss:0x80198420; // type:object size:0x20 saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32 ToeMessageQueue = .bss:0x8019C440; // type:object size:0x20 scope:local @@ -4606,7 +4702,7 @@ spacePos = .bss:0x801A4CF0; // type:object size:0xC scope:local data:float focusPos = .bss:0x801A4CFC; // type:object size:0xC scope:local data:float hostPos = .bss:0x801A4D08; // type:object size:0xC scope:local hostMot = .bss:0x801A4D14; // type:object size:0x10 scope:local data:2byte -lotteryTicketObj = .bss:0x801A4D24; // type:object size:0x14 scope:local data:4byte +lotteryTicketObj = .bss:0x801A4D24; // type:object size:0x10 scope:local data:4byte boxRot = .bss:0x801A4D38; // type:object size:0x20 scope:local padBoxPos = .bss:0x801A4D58; // type:object size:0xC scope:local data:float pathNodeData = .bss:0x801A4D68; // type:object size:0x500 scope:local data:byte @@ -4752,11 +4848,11 @@ fio = .bss:0x801D3150; // type:object size:0xC scope:local data:4byte mus = .bss:0x801D3160; // type:object size:0x178 scope:local data:2byte se = .bss:0x801D32D8; // type:object size:0xDC scope:local data:4byte StreamInfo = .bss:0x801D33C0; // type:object size:0x60 scope:local align:32 data:4byte -lbl_801D3420 = .sdata:0x801D3420; // type:object size:0x5 data:string -lbl_801D3425 = .sdata:0x801D3425; // type:object size:0x7 +lbl_801D3420 = .sdata:0x801D3420; // type:object size:0x5 scope:local data:string +lbl_801D3425 = .sdata:0x801D3425; // type:object size:0x7 scope:local rnd_seed = .sdata:0x801D342C; // type:object size:0x4 data:4byte -lbl_801D3430 = .sdata:0x801D3430; // type:object size:0x6 data:string -lbl_801D3436 = .sdata:0x801D3436; // type:object size:0x2 data:string +lbl_801D3430 = .sdata:0x801D3430; // type:object size:0x6 scope:local data:string +lbl_801D3436 = .sdata:0x801D3436; // type:object size:0x2 scope:local data:string lbl_801D3438 = .sdata:0x801D3438; // type:object size:0x7 data:string lbl_801D343F = .sdata:0x801D343F; // type:object size:0x9 FirstFrame = .sdata:0x801D3448; // type:object size:0x4 scope:local data:4byte @@ -4820,7 +4916,7 @@ lbl_801D359E = .sdata:0x801D359E; // type:object size:0x5 scope:local data:strin lbl_801D35A3 = .sdata:0x801D35A3; // type:object size:0x7 scope:local lbl_801D35AA = .sdata:0x801D35AA; // type:object size:0x6 scope:local lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x6 scope:local data:string -pauseStr$2216 = .sdata:0x801D35B8; // type:object size:0x8 scope:local +pauseStr = .sdata:0x801D35B8; // type:object size:0x8 scope:local lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8 lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8 lbl_801D35D0 = .sdata:0x801D35D0; // type:object size:0x8 @@ -4910,7 +5006,7 @@ itemPickupMdlId = .sdata:0x801D3790; // type:object size:0x2 scope:local data:2b yourTurnSprGrp = .sdata:0x801D3792; // type:object size:0x2 scope:local data:2byte jumpMot = .sdata:0x801D3798; // type:object size:0x2 scope:local data:2byte starMdl = .sdata:0x801D379A; // type:object size:0x2 scope:local data:2byte -lbl_801D37A0 = .sdata:0x801D37A0; // type:object size:0x8 +itemMotTbl = .sdata:0x801D37A0; // type:object size:0x8 scope:local lbl_801D37A8 = .sdata:0x801D37A8; // type:object size:0x8 jumpMot = .sdata:0x801D37B0; // type:object size:0x2 scope:local data:2byte scareMot = .sdata:0x801D37B2; // type:object size:0x2 scope:local data:2byte @@ -4928,9 +5024,9 @@ houseShowMot = .sdata:0x801D37F0; // type:object size:0x2 scope:local data:2byte houseHideMot = .sdata:0x801D37F2; // type:object size:0x2 scope:local data:2byte ballMdl = .sdata:0x801D37F4; // type:object size:0x2 scope:local data:2byte booMdl = .sdata:0x801D37F6; // type:object size:0x2 scope:local data:2byte -lbl_801D37F8 = .sdata:0x801D37F8; // type:object size:0x2 scope:local data:2byte +smokeMdl = .sdata:0x801D37F8; // type:object size:0x2 scope:local data:2byte hostMdl = .sdata:0x801D37FA; // type:object size:0x2 scope:local data:2byte -houseMot = .sdata:0x801D37FC; // type:object size:0x6 scope:local data:2byte +hostMot = .sdata:0x801D37FC; // type:object size:0x6 scope:local data:2byte lbl_801D3802 = .sdata:0x801D3802; // type:object size:0x7 data:string lbl_801D3809 = .sdata:0x801D3809; // type:object size:0x7 data:string lbl_801D3810 = .sdata:0x801D3810; // type:object size:0x7 data:string @@ -4976,13 +5072,13 @@ __OSArenaLo = .sdata:0x801D38C0; // type:object size:0x4 scope:local data:4byte @32 = .sdata:0x801D38C8; // type:object size:0x2 scope:local data:string fontEncode$80 = .sdata:0x801D38D0; // type:object size:0x8 scope:local data:2byte Unit01 = .sdata:0x801D38D8; // type:object size:0x8 -FirstRead = .sdata:0x801D38E0; // type:object size:0x8 scope:local data:4byte -lbl_801D38E8 = .sdata:0x801D38E8; // type:object size:0x8 data:string +FirstRead = .sdata:0x801D38E0; // type:object size:0x4 scope:local data:4byte +lbl_801D38E8 = .sdata:0x801D38E8; // type:object size:0x8 scope:local data:string autoInvalidation = .sdata:0x801D38F0; // type:object size:0x4 scope:local data:4byte @35 = .sdata:0x801D38F8; // type:object size:0x2 scope:local data:string @40 = .sdata:0x801D38FC; // type:object size:0x4 scope:local data:string @41 = .sdata:0x801D3900; // type:object size:0x3 scope:local data:string -lbl_801D3908 = .sdata:0x801D3908; // type:object size:0x8 data:string +lbl_801D3908 = .sdata:0x801D3908; // type:object size:0x8 scope:local data:string ClampRegion = .sdata:0x801D3910; // type:object size:0x8 scope:local data:byte ResettingChan = .sdata:0x801D3918; // type:object size:0x4 scope:local data:4byte XPatchBits = .sdata:0x801D391C; // type:object size:0x4 scope:local data:4byte @@ -5204,8 +5300,8 @@ omovlevtno = .sbss:0x801D3CD4; // type:object size:0x4 data:4byte omovlhisidx = .sbss:0x801D3CD8; // type:object size:0x4 data:4byte omcurdll = .sbss:0x801D3CDC; // type:object size:0x4 data:4byte omcurovl = .sbss:0x801D3CE0; // type:object size:0x4 data:4byte -omnextovl = .sbss:0x801D3CE4; // type:object size:0x4 data:4byte -omwatchproc = .sbss:0x801D3CE8; // type:object size:0x4 data:4byte +omnextovl = .sbss:0x801D3CE4; // type:object size:0x4 scope:local data:4byte +omwatchproc = .sbss:0x801D3CE8; // type:object size:0x4 scope:local data:4byte omDBGSysKeyObj = .sbss:0x801D3CEC; // type:object size:0x4 data:4byte y_start = .sbss:0x801D3CF0; // type:object size:0x4 scope:local data:4byte x_start = .sbss:0x801D3CF4; // type:object size:0x4 scope:local data:4byte @@ -5623,11 +5719,11 @@ __OSLastInterrupt = .sbss:0x801D4308; // type:object size:0x2 scope:global data: __OSLastInterruptTime = .sbss:0x801D4310; // type:object size:0x8 scope:global data:4byte SaveStart = .sbss:0x801D4318; // type:object size:0x4 scope:local data:4byte SaveEnd = .sbss:0x801D431C; // type:object size:0x4 scope:local data:4byte -Prepared = .sbss:0x801D4320; // type:object size:0x8 scope:local data:4byte +Prepared = .sbss:0x801D4320; // type:object size:0x4 scope:local data:4byte ResetFunctionQueue = .sbss:0x801D4328; // type:object size:0x8 scope:local data:4byte ResetCallback = .sbss:0x801D4330; // type:object size:0x4 data:4byte Down = .sbss:0x801D4334; // type:object size:0x4 data:4byte -LastState = .sbss:0x801D4338; // type:object size:0x8 data:4byte +LastState = .sbss:0x801D4338; // type:object size:0x8 scope:local data:4byte HoldUp = .sbss:0x801D4340; // type:object size:0x8 align:8 data:4byte HoldDown = .sbss:0x801D4348; // type:object size:0x8 align:8 data:4byte RunQueueBits = .sbss:0x801D4350; // type:object size:0x4 scope:local data:4byte @@ -5692,7 +5788,7 @@ shdwChanged = .sbss:0x801D4460; // type:object size:0x8 scope:local align:8 data CurrTiming = .sbss:0x801D4468; // type:object size:0x4 scope:local data:4byte CurrTvMode = .sbss:0x801D446C; // type:object size:0x4 scope:local data:4byte FBSet = .sbss:0x801D4470; // type:object size:0x4 scope:local data:4byte -message$343 = .sbss:0x801D4474; // type:object size:0x4 scope:local data:4byte +message$320 = .sbss:0x801D4474; // type:object size:0x4 scope:local data:4byte rmode = .sbss:0x801D4478; // type:object size:0x8 scope:local data:4byte fontShift = .sbss:0x801D4480; // type:object size:0x8 scope:local data:4byte DemoStat = .sbss:0x801D4488; // type:object size:0x4 scope:local data:4byte @@ -5797,8 +5893,8 @@ Vachuff = .sbss:0x801D46E0; // type:object size:0x4 scope:local align:32 data:4b __THPHuffmanBits = .sbss:0x801D46E4; // type:object size:0x4 scope:local data:4byte __THPHuffmanSizeTab = .sbss:0x801D46E8; // type:object size:0x4 scope:local data:4byte __THPHuffmanCodeTab = .sbss:0x801D46EC; // type:object size:0x4 scope:local data:4byte -Gbase = .sbss:0x801D4700; // type:object size:0x20 align:32 data:4byte -Gwid = .sbss:0x801D4720; // type:object size:0x20 align:32 data:4byte +Gbase = .sbss:0x801D4700; // type:object size:0x20 scope:local align:32 data:4byte +Gwid = .sbss:0x801D4720; // type:object size:0x20 scope:local align:32 data:4byte Gq = .sbss:0x801D4740; // type:object size:0x4 scope:local align:32 data:4byte __THPOldGQR5 = .sbss:0x801D4744; // type:object size:0x4 scope:local data:4byte __THPOldGQR6 = .sbss:0x801D4748; // type:object size:0x4 scope:local data:4byte @@ -5925,7 +6021,7 @@ SendMailData = .sbss:0x801D4940; // type:object size:0x4 scope:local data:4byte RecvDataLeng = .sbss:0x801D4944; // type:object size:0x4 scope:local data:4byte pEXIInputFlag = .sbss:0x801D4948; // type:object size:0x4 scope:local data:4byte EXIInputFlag = .sbss:0x801D494C; // type:object size:0x1 scope:local data:byte -lbl_801D4960 = .sdata2:0x801D4960; // type:object size:0x8 data:double +lbl_801D4960 = .sdata2:0x801D4960; // type:object size:0x8 scope:local data:double lbl_801D4968 = .sdata2:0x801D4968; // type:object size:0x4 data:float lbl_801D496C = .sdata2:0x801D496C; // type:object size:0x4 data:float lbl_801D4970 = .sdata2:0x801D4970; // type:object size:0x8 data:double @@ -7284,21 +7380,21 @@ lbl_801D6338 = .sdata2:0x801D6338; // type:object size:0x4 data:float lbl_801D633C = .sdata2:0x801D633C; // type:object size:0x4 data:float lbl_801D6340 = .sdata2:0x801D6340; // type:object size:0x8 data:double lbl_801D6348 = .sdata2:0x801D6348; // type:object size:0x8 data:float -lbl_801D6350 = .sdata2:0x801D6350; // type:object size:0x4 data:float -lbl_801D6354 = .sdata2:0x801D6354; // type:object size:0x4 data:float -lbl_801D6358 = .sdata2:0x801D6358; // type:object size:0x4 data:float -lbl_801D635C = .sdata2:0x801D635C; // type:object size:0x4 data:float -lbl_801D6360 = .sdata2:0x801D6360; // type:object size:0x8 data:float -lbl_801D6368 = .sdata2:0x801D6368; // type:object size:0x4 data:float -lbl_801D636C = .sdata2:0x801D636C; // type:object size:0x4 data:float -lbl_801D6370 = .sdata2:0x801D6370; // type:object size:0x4 data:float -lbl_801D6374 = .sdata2:0x801D6374; // type:object size:0x4 data:float -lbl_801D6378 = .sdata2:0x801D6378; // type:object size:0x4 data:float -lbl_801D637C = .sdata2:0x801D637C; // type:object size:0x4 data:float -lbl_801D6380 = .sdata2:0x801D6380; // type:object size:0x4 data:float -lbl_801D6384 = .sdata2:0x801D6384; // type:object size:0x4 data:float -lbl_801D6388 = .sdata2:0x801D6388; // type:object size:0x4 data:float -lbl_801D638C = .sdata2:0x801D638C; // type:object size:0x4 data:float +lbl_801D6350 = .sdata2:0x801D6350; // type:object size:0x4 scope:local data:float +lbl_801D6354 = .sdata2:0x801D6354; // type:object size:0x4 scope:local data:float +lbl_801D6358 = .sdata2:0x801D6358; // type:object size:0x4 scope:local data:float +lbl_801D635C = .sdata2:0x801D635C; // type:object size:0x4 scope:local data:float +lbl_801D6360 = .sdata2:0x801D6360; // type:object size:0x8 scope:local data:float +lbl_801D6368 = .sdata2:0x801D6368; // type:object size:0x4 scope:local data:float +lbl_801D636C = .sdata2:0x801D636C; // type:object size:0x4 scope:local data:float +lbl_801D6370 = .sdata2:0x801D6370; // type:object size:0x4 scope:local data:float +lbl_801D6374 = .sdata2:0x801D6374; // type:object size:0x4 scope:local data:float +lbl_801D6378 = .sdata2:0x801D6378; // type:object size:0x4 scope:local data:float +lbl_801D637C = .sdata2:0x801D637C; // type:object size:0x4 scope:local data:float +lbl_801D6380 = .sdata2:0x801D6380; // type:object size:0x4 scope:local data:float +lbl_801D6384 = .sdata2:0x801D6384; // type:object size:0x4 scope:local data:float +lbl_801D6388 = .sdata2:0x801D6388; // type:object size:0x4 scope:local data:float +lbl_801D638C = .sdata2:0x801D638C; // type:object size:0x4 scope:local data:float lbl_801D6390 = .sdata2:0x801D6390; // type:object size:0x4 data:float lbl_801D6394 = .sdata2:0x801D6394; // type:object size:0x4 data:float lbl_801D6398 = .sdata2:0x801D6398; // type:object size:0x8 data:double @@ -7307,62 +7403,62 @@ lbl_801D63A8 = .sdata2:0x801D63A8; // type:object size:0x4 data:float lbl_801D63AC = .sdata2:0x801D63AC; // type:object size:0x4 data:float lbl_801D63B0 = .sdata2:0x801D63B0; // type:object size:0x4 data:float lbl_801D63B4 = .sdata2:0x801D63B4; // type:object size:0x4 data:float -lbl_801D63B8 = .sdata2:0x801D63B8; // type:object size:0x4 data:float -lbl_801D63BC = .sdata2:0x801D63BC; // type:object size:0x4 data:float -lbl_801D63C0 = .sdata2:0x801D63C0; // type:object size:0x8 data:double -lbl_801D63C8 = .sdata2:0x801D63C8; // type:object size:0x8 data:double -lbl_801D63D0 = .sdata2:0x801D63D0; // type:object size:0x8 data:float -lbl_801D63D8 = .sdata2:0x801D63D8; // type:object size:0x4 data:float -lbl_801D63E0 = .sdata2:0x801D63E0; // type:object size:0x8 data:double -lbl_801D63E8 = .sdata2:0x801D63E8; // type:object size:0x4 data:4byte -lbl_801D63EC = .sdata2:0x801D63EC; // type:object size:0x4 data:4byte -lbl_801D63F0 = .sdata2:0x801D63F0; // type:object size:0x4 data:4byte -lbl_801D63F4 = .sdata2:0x801D63F4; // type:object size:0x4 data:float -lbl_801D63F8 = .sdata2:0x801D63F8; // type:object size:0x4 data:float -lbl_801D63FC = .sdata2:0x801D63FC; // type:object size:0x4 data:float -lbl_801D6400 = .sdata2:0x801D6400; // type:object size:0x8 data:double -lbl_801D6408 = .sdata2:0x801D6408; // type:object size:0x8 data:float -lbl_801D6410 = .sdata2:0x801D6410; // type:object size:0x4 data:float -lbl_801D6414 = .sdata2:0x801D6414; // type:object size:0x4 data:float -lbl_801D6418 = .sdata2:0x801D6418; // type:object size:0x4 data:float -lbl_801D641C = .sdata2:0x801D641C; // type:object size:0x4 data:float -lbl_801D6420 = .sdata2:0x801D6420; // type:object size:0x4 data:float -lbl_801D6424 = .sdata2:0x801D6424; // type:object size:0x4 data:float -lbl_801D6428 = .sdata2:0x801D6428; // type:object size:0x4 data:float -lbl_801D642C = .sdata2:0x801D642C; // type:object size:0x4 data:float -lbl_801D6430 = .sdata2:0x801D6430; // type:object size:0x4 data:float -lbl_801D6434 = .sdata2:0x801D6434; // type:object size:0x4 data:float -lbl_801D6438 = .sdata2:0x801D6438; // type:object size:0x4 data:float -lbl_801D643C = .sdata2:0x801D643C; // type:object size:0x4 data:float -lbl_801D6440 = .sdata2:0x801D6440; // type:object size:0x4 data:float -lbl_801D6448 = .sdata2:0x801D6448; // type:object size:0x8 data:double -lbl_801D6450 = .sdata2:0x801D6450; // type:object size:0x8 data:double -lbl_801D6458 = .sdata2:0x801D6458; // type:object size:0x8 data:float -lbl_801D6460 = .sdata2:0x801D6460; // type:object size:0x4 data:float -lbl_801D6468 = .sdata2:0x801D6468; // type:object size:0x8 data:double -lbl_801D6470 = .sdata2:0x801D6470; // type:object size:0x4 data:float -lbl_801D6474 = .sdata2:0x801D6474; // type:object size:0x4 data:float -lbl_801D6478 = .sdata2:0x801D6478; // type:object size:0x4 data:float -lbl_801D647C = .sdata2:0x801D647C; // type:object size:0x4 data:float -lbl_801D6480 = .sdata2:0x801D6480; // type:object size:0x4 data:float -lbl_801D6484 = .sdata2:0x801D6484; // type:object size:0x4 data:float -lbl_801D6488 = .sdata2:0x801D6488; // type:object size:0x4 data:float -lbl_801D648C = .sdata2:0x801D648C; // type:object size:0x4 data:float -lbl_801D6490 = .sdata2:0x801D6490; // type:object size:0x4 data:float -lbl_801D6498 = .sdata2:0x801D6498; // type:object size:0x8 data:double -lbl_801D64A0 = .sdata2:0x801D64A0; // type:object size:0x4 data:float -lbl_801D64A4 = .sdata2:0x801D64A4; // type:object size:0x4 data:float -lbl_801D64A8 = .sdata2:0x801D64A8; // type:object size:0x8 data:double -lbl_801D64B0 = .sdata2:0x801D64B0; // type:object size:0x4 data:float -lbl_801D64B8 = .sdata2:0x801D64B8; // type:object size:0x8 data:double -lbl_801D64C0 = .sdata2:0x801D64C0; // type:object size:0x4 data:float -lbl_801D64C8 = .sdata2:0x801D64C8; // type:object size:0x8 data:double -lbl_801D64D0 = .sdata2:0x801D64D0; // type:object size:0x4 data:float -lbl_801D64D4 = .sdata2:0x801D64D4; // type:object size:0x4 data:float -lbl_801D64D8 = .sdata2:0x801D64D8; // type:object size:0x4 data:float -lbl_801D64E0 = .sdata2:0x801D64E0; // type:object size:0x8 data:double -lbl_801D64E8 = .sdata2:0x801D64E8; // type:object size:0x4 data:float -lbl_801D64EC = .sdata2:0x801D64EC; // type:object size:0x4 data:float +lbl_801D63B8 = .sdata2:0x801D63B8; // type:object size:0x4 scope:local data:float +lbl_801D63BC = .sdata2:0x801D63BC; // type:object size:0x4 scope:local data:float +lbl_801D63C0 = .sdata2:0x801D63C0; // type:object size:0x8 scope:local data:double +lbl_801D63C8 = .sdata2:0x801D63C8; // type:object size:0x8 scope:local data:double +lbl_801D63D0 = .sdata2:0x801D63D0; // type:object size:0x8 scope:local data:float +lbl_801D63D8 = .sdata2:0x801D63D8; // type:object size:0x4 scope:local data:float +lbl_801D63E0 = .sdata2:0x801D63E0; // type:object size:0x8 scope:local data:double +lbl_801D63E8 = .sdata2:0x801D63E8; // type:object size:0x4 scope:local data:4byte +lbl_801D63EC = .sdata2:0x801D63EC; // type:object size:0x4 scope:local data:4byte +lbl_801D63F0 = .sdata2:0x801D63F0; // type:object size:0x4 scope:local data:4byte +lbl_801D63F4 = .sdata2:0x801D63F4; // type:object size:0x4 scope:local data:float +lbl_801D63F8 = .sdata2:0x801D63F8; // type:object size:0x4 scope:local data:float +lbl_801D63FC = .sdata2:0x801D63FC; // type:object size:0x4 scope:local data:float +lbl_801D6400 = .sdata2:0x801D6400; // type:object size:0x8 scope:local data:double +lbl_801D6408 = .sdata2:0x801D6408; // type:object size:0x8 scope:local data:float +lbl_801D6410 = .sdata2:0x801D6410; // type:object size:0x4 scope:local data:float +lbl_801D6414 = .sdata2:0x801D6414; // type:object size:0x4 scope:local data:float +lbl_801D6418 = .sdata2:0x801D6418; // type:object size:0x4 scope:local data:float +lbl_801D641C = .sdata2:0x801D641C; // type:object size:0x4 scope:local data:float +lbl_801D6420 = .sdata2:0x801D6420; // type:object size:0x4 scope:local data:float +lbl_801D6424 = .sdata2:0x801D6424; // type:object size:0x4 scope:local data:float +lbl_801D6428 = .sdata2:0x801D6428; // type:object size:0x4 scope:local data:float +lbl_801D642C = .sdata2:0x801D642C; // type:object size:0x4 scope:local data:float +lbl_801D6430 = .sdata2:0x801D6430; // type:object size:0x4 scope:local data:float +lbl_801D6434 = .sdata2:0x801D6434; // type:object size:0x4 scope:local data:float +lbl_801D6438 = .sdata2:0x801D6438; // type:object size:0x4 scope:local data:float +lbl_801D643C = .sdata2:0x801D643C; // type:object size:0x4 scope:local data:float +lbl_801D6440 = .sdata2:0x801D6440; // type:object size:0x4 scope:local data:float +lbl_801D6448 = .sdata2:0x801D6448; // type:object size:0x8 scope:local data:double +lbl_801D6450 = .sdata2:0x801D6450; // type:object size:0x8 scope:local data:double +lbl_801D6458 = .sdata2:0x801D6458; // type:object size:0x8 scope:local data:float +lbl_801D6460 = .sdata2:0x801D6460; // type:object size:0x4 scope:local data:float +lbl_801D6468 = .sdata2:0x801D6468; // type:object size:0x8 scope:local data:double +lbl_801D6470 = .sdata2:0x801D6470; // type:object size:0x4 scope:local data:float +lbl_801D6474 = .sdata2:0x801D6474; // type:object size:0x4 scope:local data:float +lbl_801D6478 = .sdata2:0x801D6478; // type:object size:0x4 scope:local data:float +lbl_801D647C = .sdata2:0x801D647C; // type:object size:0x4 scope:local data:float +lbl_801D6480 = .sdata2:0x801D6480; // type:object size:0x4 scope:local data:float +lbl_801D6484 = .sdata2:0x801D6484; // type:object size:0x4 scope:local data:float +lbl_801D6488 = .sdata2:0x801D6488; // type:object size:0x4 scope:local data:float +lbl_801D648C = .sdata2:0x801D648C; // type:object size:0x4 scope:local data:float +lbl_801D6490 = .sdata2:0x801D6490; // type:object size:0x4 scope:local data:float +lbl_801D6498 = .sdata2:0x801D6498; // type:object size:0x8 scope:local data:double +lbl_801D64A0 = .sdata2:0x801D64A0; // type:object size:0x4 scope:local data:float +lbl_801D64A4 = .sdata2:0x801D64A4; // type:object size:0x4 scope:local data:float +lbl_801D64A8 = .sdata2:0x801D64A8; // type:object size:0x8 scope:local data:double +lbl_801D64B0 = .sdata2:0x801D64B0; // type:object size:0x4 scope:local data:float +lbl_801D64B8 = .sdata2:0x801D64B8; // type:object size:0x8 scope:local data:double +lbl_801D64C0 = .sdata2:0x801D64C0; // type:object size:0x4 scope:local data:float +lbl_801D64C8 = .sdata2:0x801D64C8; // type:object size:0x8 scope:local data:double +lbl_801D64D0 = .sdata2:0x801D64D0; // type:object size:0x4 scope:local data:float +lbl_801D64D4 = .sdata2:0x801D64D4; // type:object size:0x4 scope:local data:float +lbl_801D64D8 = .sdata2:0x801D64D8; // type:object size:0x4 scope:local data:float +lbl_801D64E0 = .sdata2:0x801D64E0; // type:object size:0x8 scope:local data:double +lbl_801D64E8 = .sdata2:0x801D64E8; // type:object size:0x4 scope:local data:float +lbl_801D64EC = .sdata2:0x801D64EC; // type:object size:0x4 scope:local data:float lbl_801D64F0 = .sdata2:0x801D64F0; // type:object size:0x8 data:double lbl_801D64F8 = .sdata2:0x801D64F8; // type:object size:0x4 data:float lbl_801D64FC = .sdata2:0x801D64FC; // type:object size:0x4 data:float @@ -7615,11 +7711,5 @@ lbl_801D6BC4 = .sdata2:0x801D6BC4; // type:object size:0x4 data:float lbl_801D6BC8 = .sdata2:0x801D6BC8; // type:object size:0x4 data:float lbl_801D6BCC = .sdata2:0x801D6BCC; // type:object size:0x4 data:float lbl_801D6BD0 = .sdata2:0x801D6BD0; // type:object size:0x8 data:double -lbl_801D6BE0 = .sbss2:0x801D6BE0; // type:object size:0x1 data:byte -lbl_801D6BE1 = .sbss2:0x801D6BE1; // type:object size:0x1 data:byte -lbl_801D6BE2 = .sbss2:0x801D6BE2; // type:object size:0x1 data:byte -lbl_801D6BE3 = .sbss2:0x801D6BE3; // type:object size:0x1 data:byte -lbl_801D6BE4 = .sbss2:0x801D6BE4; // type:object size:0x1 data:byte -lbl_801D6BE5 = .sbss2:0x801D6BE5; // type:object size:0x1 data:byte -lbl_801D6BE6 = .sbss2:0x801D6BE6; // type:object size:0x1 data:byte -lbl_801D6BE7 = .sbss2:0x801D6BE7; // type:object size:0x1 data:byte +lbl_801D6BE0 = .sbss2:0x801D6BE0; // type:object size:0x4 scope:local data:byte +lbl_801D6BE4 = .sbss2:0x801D6BE4; // type:object size:0x4 scope:local data:byte diff --git a/config/GMPE01_01/build.sha1 b/config/GMPE01_01/build.sha1 new file mode 100644 index 00000000..349e60a6 --- /dev/null +++ b/config/GMPE01_01/build.sha1 @@ -0,0 +1,100 @@ +64b42eac733a57a53d2ce25e7e47f54fc1e31915 build/GMPE01_01/main.dol +3fbbebc0440f0d91432ecd6a27ef68d5309b87b6 build/GMPE01_01/_minigameDll/_minigameDll.rel +bdfca4f9bce60519badca0d2d0a5b71f6d99706f build/GMPE01_01/bootDll/bootDll.rel +f09399fee83c63abfe2adb25341152adad959a93 build/GMPE01_01/instDll/instDll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPE01_01/m302Dll/m302Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPE01_01/m303Dll/m303Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPE01_01/m330Dll/m330Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPE01_01/m333Dll/m333Dll.rel +136d192a1464e593cd0b767691dfa012c58730ed build/GMPE01_01/m402Dll/m402Dll.rel +b834eb5f8a2749f3be52aa9023cc81403075eba9 build/GMPE01_01/m403Dll/m403Dll.rel +c46b7814cefa8e5dee8dfd1883e369877ac78c0c build/GMPE01_01/m404Dll/m404Dll.rel +7857e0822079d0c7bbfec756a7cf4206b754d100 build/GMPE01_01/m405Dll/m405Dll.rel +bea398ac8abe018dce80914e6b3d6d7578eb86bb build/GMPE01_01/m406Dll/m406Dll.rel +6f63338c417ab62740a40f0968c03c570b440b8a build/GMPE01_01/m407dll/m407dll.rel +7a8ff34b4bcaff39037c9e2f717505cbc63d4230 build/GMPE01_01/m408Dll/m408Dll.rel +984f031fc50121369d5b04d1ec2c54322efdf281 build/GMPE01_01/m409Dll/m409Dll.rel +94e308e409038f7919177d190110ce589cc8a8e8 build/GMPE01_01/m410Dll/m410Dll.rel +26ac81a3db9f3850bb43b23cdb7168dcddccaeea build/GMPE01_01/m411Dll/m411Dll.rel +3ebb173a52aaea75acb414f73264e72a2943c6f8 build/GMPE01_01/m412Dll/m412Dll.rel +e59d4b66b1f57637c335b4745a696e3dbcb4bbe3 build/GMPE01_01/m413Dll/m413Dll.rel +f7fe1aa24c7b6b8ca2bb28922696c0392dc7d029 build/GMPE01_01/m414Dll/m414Dll.rel +3c697b54ebdd01971b99af8c812b4850fa181f4f build/GMPE01_01/m415Dll/m415Dll.rel +d26526935455b26beb2b9eaed1bfae3f3f458c25 build/GMPE01_01/m416Dll/m416Dll.rel +b5c3805ec3cb023299ed09b782b92441085d0054 build/GMPE01_01/m417Dll/m417Dll.rel +0d02610005c46ad4f47ff51f5e154f9b0d16a4f4 build/GMPE01_01/m418Dll/m418Dll.rel +bbceb138b8cc43e578179a7892801633892cb03c build/GMPE01_01/m419Dll/m419Dll.rel +2ef4ee163bc2aa15f87c8c89afb4f28939f088c8 build/GMPE01_01/m420dll/m420dll.rel +216a99780a3915d7096385bbcddfc979ab3a4025 build/GMPE01_01/m421Dll/m421Dll.rel +9ad72ba6c3ac277e521dca2fc1372a5d31c18930 build/GMPE01_01/m422Dll/m422Dll.rel +377c6a56b3faf8f991ec4fccaf1972cb41910438 build/GMPE01_01/m423Dll/m423Dll.rel +5814f59970268406bd86a86d0fee5a09359ab506 build/GMPE01_01/m424Dll/m424Dll.rel +ecaeae453393d228f2769aab9c022820bcdb58f1 build/GMPE01_01/m425Dll/m425Dll.rel +c240697a57cc08d34e27e89d8d3455454799e8b1 build/GMPE01_01/m426Dll/m426Dll.rel +c78a0857e9c44fb33bd4fdc3e392a15b4dec0431 build/GMPE01_01/m427Dll/m427Dll.rel +a1d5672d8ef0aac089dda00287fd68bf2bb67807 build/GMPE01_01/m428Dll/m428Dll.rel +d25f198ce04aa5ca7b54ada9de52f722bd751447 build/GMPE01_01/m429Dll/m429Dll.rel +8bef3e2f51db3afa82dcaf64e209067a58c04bf9 build/GMPE01_01/m430Dll/m430Dll.rel +7148ec21ca6e0aa8d213a1dce0aeb9d93a9b496c build/GMPE01_01/m431Dll/m431Dll.rel +096f5a85bb837af68bd491e962eda7726d8d26a0 build/GMPE01_01/m432Dll/m432Dll.rel +c36f56264ab9cf74b882c2544cdb9b89f6a098cd build/GMPE01_01/m433Dll/m433Dll.rel +55912c8441002b61701fc8c769f707c69e2740c1 build/GMPE01_01/m434Dll/m434Dll.rel +56f1fc330e8b97fa426fac3d901b1feed946566e build/GMPE01_01/m435Dll/m435Dll.rel +e53f3d381bfb99351483e70b9d79c2e8676f73d5 build/GMPE01_01/m436Dll/m436Dll.rel +404698b53acad1231e00d84d0196ddce8d9d9dd9 build/GMPE01_01/m437Dll/m437Dll.rel +9bddf4b81b9a792260000abe2631da493a8b8564 build/GMPE01_01/m438Dll/m438Dll.rel +a2a18c9d26dedfa8e2ae003c3a2e1bdcc1cbd4cc build/GMPE01_01/m439Dll/m439Dll.rel +227ca13bcd72059bdd506e9611d9b52f661af6c5 build/GMPE01_01/m440Dll/m440Dll.rel +d6cbf72115374e06ffea3f15001977c288a9c3fb build/GMPE01_01/m441Dll/m441Dll.rel +347fcb836b5266dfe3d1088e1aa796c043b0fe60 build/GMPE01_01/m442Dll/m442Dll.rel +77444c6739a4d9390f30ba56c5fcd82ee4efc0c2 build/GMPE01_01/m443Dll/m443Dll.rel +897d8ebd200020bc5bb9d949f869b3a2331077c7 build/GMPE01_01/m444dll/m444dll.rel +d4d9f2aad53aa7f4e1c313438a0e3767f8e58eb9 build/GMPE01_01/m445Dll/m445Dll.rel +4b16e5eff613eaf4cc98411809cd1f1578e33fd1 build/GMPE01_01/m446dll/m446dll.rel +775ca8f8b3be867ad67f91bc3b6ebcc8c3068d2b build/GMPE01_01/m447dll/m447dll.rel +e6f7586dadbe3f5b5045c0bdf2fe618d42ef3a44 build/GMPE01_01/m448Dll/m448Dll.rel +e797c2ff132ab35e768be62cb62219592464ca9d build/GMPE01_01/m449Dll/m449Dll.rel +f2ea7da07cf8be4f449c97b829d3231911e158a0 build/GMPE01_01/m450Dll/m450Dll.rel +3f82fd24071582b6494a9f99750c0bc3c10d502e build/GMPE01_01/m451Dll/m451Dll.rel +49ef28c2862000fae4d8efd8fec0ff9b41f24461 build/GMPE01_01/m453Dll/m453Dll.rel +e0b21cfbe592955c84662ff50d8a33e147403906 build/GMPE01_01/m455Dll/m455Dll.rel +97d5701b151c6ad8cf8cea6e776973daa95eea34 build/GMPE01_01/m456Dll/m456Dll.rel +d4a411f9ef850f52506afd1ad1de88d2d8de361b build/GMPE01_01/m457Dll/m457Dll.rel +7ac361c5a04f83d46f516a13a43e43b59b929435 build/GMPE01_01/m458Dll/m458Dll.rel +1aafc4f38ddfee64ea8f7dda7cbd7113e86997ba build/GMPE01_01/m459dll/m459dll.rel +5d28f1a87edee5216b9bb28d9cbff2b22d617747 build/GMPE01_01/m460Dll/m460Dll.rel +ab058151bd25600f05f8b6fedbec1c7448175123 build/GMPE01_01/m461Dll/m461Dll.rel +78d6ab00677791ece684a0c149d1ae72efc52d1c build/GMPE01_01/m462Dll/m462Dll.rel +32010595b4fd0b75293fc46b9026c5613d0ea4c2 build/GMPE01_01/m463Dll/m463Dll.rel +9e63dd96943ffd2747be5aad924b95892d46051a build/GMPE01_01/mentDll/mentDll.rel +7e119de456b3557dcf514c70bd7ab81dc5f9cf54 build/GMPE01_01/messDll/messDll.rel +376c78e2d1b7d7a429959c532e9cb92c98f73b7e build/GMPE01_01/mgmodedll/mgmodedll.rel +8de28c0f254a2c574c4da9b6a3a17e5ad7ffe1f9 build/GMPE01_01/modeltestDll/modeltestDll.rel +bdf8cd57fa23f07c429393817037ade04e2c6024 build/GMPE01_01/modeseldll/modeseldll.rel +4524e63b63510b42bca907f72e67affddec856f9 build/GMPE01_01/mpexDll/mpexDll.rel +86ff8288bb92472376d02cade1d3c9603b613c57 build/GMPE01_01/msetupDll/msetupDll.rel +3395fac055bd155c682642bab7d09f428e48bed9 build/GMPE01_01/mstory2Dll/mstory2Dll.rel +9d67ee54dd30be83331e303d2bcf12ff2b2fa136 build/GMPE01_01/mstory3Dll/mstory3Dll.rel +7f9cc4a18a137f861b2c326b099c02ba4e5bd94b build/GMPE01_01/mstory4Dll/mstory4Dll.rel +b1591a5f829e0c577912fc703a7d280306ff4f77 build/GMPE01_01/mstoryDll/mstoryDll.rel +d74a5147245a1877b140ee2af7f75b2b6c90892d build/GMPE01_01/nisDll/nisDll.rel +5c6973fe7e0271885a5a87d87d4e7164ef711abb build/GMPE01_01/option/option.rel +ddb8d8a825578a588276b9d4f65eceee26f91253 build/GMPE01_01/present/present.rel +41a820438884ae8566f34f895198a186aae60305 build/GMPE01_01/resultDll/resultDll.rel +f34c104078b41971412cb09b37c4dc9526be02e3 build/GMPE01_01/safDll/safDll.rel +81a00a71b8d1ab22bfd3df10d815c87ba618ec84 build/GMPE01_01/selmenuDll/selmenuDll.rel +a6210fbcdf3d7f0063f3052e2ae525abacac08e7 build/GMPE01_01/staffDll/staffDll.rel +7488bc249dc7c656f60105e4d24c4011983c2ba2 build/GMPE01_01/subchrselDll/subchrselDll.rel +d3de36269886995d959e1fd58d8ad806843c8819 build/GMPE01_01/w01Dll/w01Dll.rel +750c4d6cd6a49d290f5cc63432d4f65642fbd7e4 build/GMPE01_01/w02Dll/w02Dll.rel +f9e8d9c4581d44488adaffa3d46d9bc835d4f9bd build/GMPE01_01/w03Dll/w03Dll.rel +821126eeb7054150744b925cc4cb06c751ddcefd build/GMPE01_01/w04Dll/w04Dll.rel +d29f7ccadcba23c8446d05101c4efa5caba26dfd build/GMPE01_01/w05Dll/w05Dll.rel +d11a7a6d44189ba8d1e3a7168ea640ea9f2152fe build/GMPE01_01/w06Dll/w06Dll.rel +54bb23228b04c5aaa6aa7c8ca1f846baec5a1f2c build/GMPE01_01/w10Dll/w10Dll.rel +98cc41456afa9e1ccbb8e03718b8d3cb64e4e86f build/GMPE01_01/w20Dll/w20Dll.rel +b888f2c6703e680699ff8c59ad9200b9d78d30a1 build/GMPE01_01/w21Dll/w21Dll.rel +87d9fee70ed4f011e0b30e05156d087204cf686f build/GMPE01_01/ztardll/ztardll.rel +234e07cee1491c7060e30805681bf5f39150122d build/GMPE01_01/E3setupDLL/E3setupDLL.rel +eba8a17e8b263bc9cd601b1aea7e698a8785416a build/GMPE01_01/m300Dll/m300Dll.rel +f3ec526c25986a3fcf7dfbc8c463626839a3a801 build/GMPE01_01/m401Dll/m401Dll.rel diff --git a/config/GMPE01_01/config.yml b/config/GMPE01_01/config.yml new file mode 100644 index 00000000..8445dc5f --- /dev/null +++ b/config/GMPE01_01/config.yml @@ -0,0 +1,571 @@ +object_base: orig/GMPE01_01 +object: sys/main.dol +hash: 64b42eac733a57a53d2ce25e7e47f54fc1e31915 +symbols: config/GMPE01_01/symbols.txt +splits: config/GMPE01_01/splits.txt +quick_analysis: true # Faster re-runs after initial analysis +mw_comment_version: 10 # GC 2.6 linker +force_active: [__register_global_object, lbl_801D40D0, _kerent] + +modules: +- object: files/dll/_minigameDll.rel + hash: 3fbbebc0440f0d91432ecd6a27ef68d5309b87b6 + symbols: config/GMPE01_00/rels/_minigameDll/symbols.txt + splits: config/GMPE01_00/rels/_minigameDll/splits.txt + links: [] +- object: files/dll/bootDll.rel + hash: bdfca4f9bce60519badca0d2d0a5b71f6d99706f + symbols: config/GMPE01_00/rels/bootDll/symbols.txt + splits: config/GMPE01_00/rels/bootDll/splits.txt + links: [] + extract: + - symbol: nintendoData + binary: nintendoData.bin + header: nintendoData.inc +- object: files/dll/instDll.rel + hash: f09399fee83c63abfe2adb25341152adad959a93 + symbols: config/GMPE01_00/rels/instDll/symbols.txt + splits: config/GMPE01_00/rels/instDll/splits.txt + links: [] +- object: files/dll/m302Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPE01_00/rels/m302Dll/symbols.txt + splits: config/GMPE01_00/rels/m302Dll/splits.txt + links: [] +- object: files/dll/m303Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPE01_00/rels/m303Dll/symbols.txt + splits: config/GMPE01_00/rels/m303Dll/splits.txt + links: [] +- object: files/dll/m330Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPE01_00/rels/m330Dll/symbols.txt + splits: config/GMPE01_00/rels/m330Dll/splits.txt + links: [] +- object: files/dll/m333Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPE01_00/rels/m333Dll/symbols.txt + splits: config/GMPE01_00/rels/m333Dll/splits.txt + links: [] +- object: files/dll/m402Dll.rel + hash: 136d192a1464e593cd0b767691dfa012c58730ed + symbols: config/GMPE01_00/rels/m402Dll/symbols.txt + splits: config/GMPE01_00/rels/m402Dll/splits.txt + links: [] +- object: files/dll/m403Dll.rel + hash: b834eb5f8a2749f3be52aa9023cc81403075eba9 + symbols: config/GMPE01_00/rels/m403Dll/symbols.txt + splits: config/GMPE01_00/rels/m403Dll/splits.txt + links: [] +- object: files/dll/m404Dll.rel + hash: c46b7814cefa8e5dee8dfd1883e369877ac78c0c + symbols: config/GMPE01_00/rels/m404Dll/symbols.txt + splits: config/GMPE01_00/rels/m404Dll/splits.txt + links: [] +- object: files/dll/m405Dll.rel + hash: 7857e0822079d0c7bbfec756a7cf4206b754d100 + symbols: config/GMPE01_00/rels/m405Dll/symbols.txt + splits: config/GMPE01_00/rels/m405Dll/splits.txt + links: [] +- object: files/dll/m406Dll.rel + hash: bea398ac8abe018dce80914e6b3d6d7578eb86bb + symbols: config/GMPE01_00/rels/m406Dll/symbols.txt + splits: config/GMPE01_00/rels/m406Dll/splits.txt + links: [] +- object: files/dll/m407dll.rel + hash: 6f63338c417ab62740a40f0968c03c570b440b8a + symbols: config/GMPE01_00/rels/m407dll/symbols.txt + splits: config/GMPE01_00/rels/m407dll/splits.txt + links: [] +- object: files/dll/m408Dll.rel + hash: 7a8ff34b4bcaff39037c9e2f717505cbc63d4230 + symbols: config/GMPE01_00/rels/m408Dll/symbols.txt + splits: config/GMPE01_00/rels/m408Dll/splits.txt + links: [] +- object: files/dll/m409Dll.rel + hash: 984f031fc50121369d5b04d1ec2c54322efdf281 + symbols: config/GMPE01_00/rels/m409Dll/symbols.txt + splits: config/GMPE01_00/rels/m409Dll/splits.txt + links: [] +- object: files/dll/m410Dll.rel + hash: 94e308e409038f7919177d190110ce589cc8a8e8 + symbols: config/GMPE01_00/rels/m410Dll/symbols.txt + splits: config/GMPE01_00/rels/m410Dll/splits.txt + links: [] +- object: files/dll/m411Dll.rel + hash: 26ac81a3db9f3850bb43b23cdb7168dcddccaeea + symbols: config/GMPE01_00/rels/m411Dll/symbols.txt + splits: config/GMPE01_00/rels/m411Dll/splits.txt + links: [] +- object: files/dll/m412Dll.rel + hash: 3ebb173a52aaea75acb414f73264e72a2943c6f8 + symbols: config/GMPE01_00/rels/m412Dll/symbols.txt + splits: config/GMPE01_00/rels/m412Dll/splits.txt + links: [] +- object: files/dll/m413Dll.rel + hash: e59d4b66b1f57637c335b4745a696e3dbcb4bbe3 + symbols: config/GMPE01_00/rels/m413Dll/symbols.txt + splits: config/GMPE01_00/rels/m413Dll/splits.txt + links: [] +- object: files/dll/m414Dll.rel + hash: f7fe1aa24c7b6b8ca2bb28922696c0392dc7d029 + symbols: config/GMPE01_00/rels/m414Dll/symbols.txt + splits: config/GMPE01_00/rels/m414Dll/splits.txt + links: [] +- object: files/dll/m415Dll.rel + hash: 3c697b54ebdd01971b99af8c812b4850fa181f4f + symbols: config/GMPE01_00/rels/m415Dll/symbols.txt + splits: config/GMPE01_00/rels/m415Dll/splits.txt + links: [] +- object: files/dll/m416Dll.rel + hash: d26526935455b26beb2b9eaed1bfae3f3f458c25 + symbols: config/GMPE01_00/rels/m416Dll/symbols.txt + splits: config/GMPE01_00/rels/m416Dll/splits.txt + links: [] +- object: files/dll/m417Dll.rel + hash: b5c3805ec3cb023299ed09b782b92441085d0054 + symbols: config/GMPE01_00/rels/m417Dll/symbols.txt + splits: config/GMPE01_00/rels/m417Dll/splits.txt + links: [] +- object: files/dll/m418Dll.rel + hash: 0d02610005c46ad4f47ff51f5e154f9b0d16a4f4 + symbols: config/GMPE01_00/rels/m418Dll/symbols.txt + splits: config/GMPE01_00/rels/m418Dll/splits.txt + links: [] +- object: files/dll/m419Dll.rel + hash: bbceb138b8cc43e578179a7892801633892cb03c + symbols: config/GMPE01_00/rels/m419Dll/symbols.txt + splits: config/GMPE01_00/rels/m419Dll/splits.txt + links: [] +- object: files/dll/m420dll.rel + hash: 2ef4ee163bc2aa15f87c8c89afb4f28939f088c8 + symbols: config/GMPE01_00/rels/m420dll/symbols.txt + splits: config/GMPE01_00/rels/m420dll/splits.txt + links: [] +- object: files/dll/m421Dll.rel + hash: 216a99780a3915d7096385bbcddfc979ab3a4025 + symbols: config/GMPE01_00/rels/m421Dll/symbols.txt + splits: config/GMPE01_00/rels/m421Dll/splits.txt + links: [] +- object: files/dll/m422Dll.rel + hash: 9ad72ba6c3ac277e521dca2fc1372a5d31c18930 + symbols: config/GMPE01_00/rels/m422Dll/symbols.txt + splits: config/GMPE01_00/rels/m422Dll/splits.txt + links: [] +- object: files/dll/m423Dll.rel + hash: 377c6a56b3faf8f991ec4fccaf1972cb41910438 + symbols: config/GMPE01_00/rels/m423Dll/symbols.txt + splits: config/GMPE01_00/rels/m423Dll/splits.txt + links: [] +- object: files/dll/m424Dll.rel + hash: 5814f59970268406bd86a86d0fee5a09359ab506 + symbols: config/GMPE01_00/rels/m424Dll/symbols.txt + splits: config/GMPE01_00/rels/m424Dll/splits.txt + links: [] +- object: files/dll/m425Dll.rel + hash: ecaeae453393d228f2769aab9c022820bcdb58f1 + symbols: config/GMPE01_00/rels/m425Dll/symbols.txt + splits: config/GMPE01_00/rels/m425Dll/splits.txt + links: [] +- object: files/dll/m426Dll.rel + hash: c240697a57cc08d34e27e89d8d3455454799e8b1 + symbols: config/GMPE01_00/rels/m426Dll/symbols.txt + splits: config/GMPE01_00/rels/m426Dll/splits.txt + links: [] +- object: files/dll/m427Dll.rel + hash: c78a0857e9c44fb33bd4fdc3e392a15b4dec0431 + symbols: config/GMPE01_00/rels/m427Dll/symbols.txt + splits: config/GMPE01_00/rels/m427Dll/splits.txt + links: [] +- object: files/dll/m428Dll.rel + hash: a1d5672d8ef0aac089dda00287fd68bf2bb67807 + symbols: config/GMPE01_00/rels/m428Dll/symbols.txt + splits: config/GMPE01_00/rels/m428Dll/splits.txt + links: [] +- object: files/dll/m429Dll.rel + hash: d25f198ce04aa5ca7b54ada9de52f722bd751447 + symbols: config/GMPE01_00/rels/m429Dll/symbols.txt + splits: config/GMPE01_00/rels/m429Dll/splits.txt + links: [] +- object: files/dll/m430Dll.rel + hash: 8bef3e2f51db3afa82dcaf64e209067a58c04bf9 + symbols: config/GMPE01_00/rels/m430Dll/symbols.txt + splits: config/GMPE01_00/rels/m430Dll/splits.txt + links: [] +- object: files/dll/m431Dll.rel + hash: 7148ec21ca6e0aa8d213a1dce0aeb9d93a9b496c + symbols: config/GMPE01_00/rels/m431Dll/symbols.txt + splits: config/GMPE01_00/rels/m431Dll/splits.txt + links: [] +- object: files/dll/m432Dll.rel + hash: 096f5a85bb837af68bd491e962eda7726d8d26a0 + symbols: config/GMPE01_00/rels/m432Dll/symbols.txt + splits: config/GMPE01_00/rels/m432Dll/splits.txt + links: [] +- object: files/dll/m433Dll.rel + hash: c36f56264ab9cf74b882c2544cdb9b89f6a098cd + symbols: config/GMPE01_00/rels/m433Dll/symbols.txt + splits: config/GMPE01_00/rels/m433Dll/splits.txt + links: [] +- object: files/dll/m434Dll.rel + hash: 55912c8441002b61701fc8c769f707c69e2740c1 + symbols: config/GMPE01_00/rels/m434Dll/symbols.txt + splits: config/GMPE01_00/rels/m434Dll/splits.txt + links: [] +- object: files/dll/m435Dll.rel + hash: 56f1fc330e8b97fa426fac3d901b1feed946566e + symbols: config/GMPE01_00/rels/m435Dll/symbols.txt + splits: config/GMPE01_00/rels/m435Dll/splits.txt + links: [] +- object: files/dll/m436Dll.rel + hash: e53f3d381bfb99351483e70b9d79c2e8676f73d5 + symbols: config/GMPE01_00/rels/m436Dll/symbols.txt + splits: config/GMPE01_00/rels/m436Dll/splits.txt + links: [] +- object: files/dll/m437Dll.rel + hash: 404698b53acad1231e00d84d0196ddce8d9d9dd9 + symbols: config/GMPE01_00/rels/m437Dll/symbols.txt + splits: config/GMPE01_00/rels/m437Dll/splits.txt + links: [] +- object: files/dll/m438Dll.rel + hash: 9bddf4b81b9a792260000abe2631da493a8b8564 + symbols: config/GMPE01_00/rels/m438Dll/symbols.txt + splits: config/GMPE01_00/rels/m438Dll/splits.txt + links: [] +- object: files/dll/m439Dll.rel + hash: a2a18c9d26dedfa8e2ae003c3a2e1bdcc1cbd4cc + symbols: config/GMPE01_00/rels/m439Dll/symbols.txt + splits: config/GMPE01_00/rels/m439Dll/splits.txt + links: [] +- object: files/dll/m440Dll.rel + hash: 227ca13bcd72059bdd506e9611d9b52f661af6c5 + symbols: config/GMPE01_00/rels/m440Dll/symbols.txt + splits: config/GMPE01_00/rels/m440Dll/splits.txt + links: [] +- object: files/dll/m441Dll.rel + hash: d6cbf72115374e06ffea3f15001977c288a9c3fb + symbols: config/GMPE01_00/rels/m441Dll/symbols.txt + splits: config/GMPE01_00/rels/m441Dll/splits.txt + links: [] +- object: files/dll/m442Dll.rel + hash: 347fcb836b5266dfe3d1088e1aa796c043b0fe60 + symbols: config/GMPE01_00/rels/m442Dll/symbols.txt + splits: config/GMPE01_00/rels/m442Dll/splits.txt + links: [] +- object: files/dll/m443Dll.rel + hash: 77444c6739a4d9390f30ba56c5fcd82ee4efc0c2 + symbols: config/GMPE01_00/rels/m443Dll/symbols.txt + splits: config/GMPE01_00/rels/m443Dll/splits.txt + links: [] +- object: files/dll/m444dll.rel + hash: 897d8ebd200020bc5bb9d949f869b3a2331077c7 + symbols: config/GMPE01_01/rels/m444dll/symbols.txt + splits: config/GMPE01_01/rels/m444dll/splits.txt + links: [] +- object: files/dll/m445Dll.rel + hash: d4d9f2aad53aa7f4e1c313438a0e3767f8e58eb9 + symbols: config/GMPE01_00/rels/m445Dll/symbols.txt + splits: config/GMPE01_00/rels/m445Dll/splits.txt + links: [] +- object: files/dll/m446dll.rel + hash: 4b16e5eff613eaf4cc98411809cd1f1578e33fd1 + symbols: config/GMPE01_00/rels/m446dll/symbols.txt + splits: config/GMPE01_00/rels/m446dll/splits.txt + links: [] +- object: files/dll/m447dll.rel + hash: 775ca8f8b3be867ad67f91bc3b6ebcc8c3068d2b + symbols: config/GMPE01_00/rels/m447dll/symbols.txt + splits: config/GMPE01_00/rels/m447dll/splits.txt + links: [] +- object: files/dll/m448Dll.rel + hash: e6f7586dadbe3f5b5045c0bdf2fe618d42ef3a44 + symbols: config/GMPE01_00/rels/m448Dll/symbols.txt + splits: config/GMPE01_00/rels/m448Dll/splits.txt + links: [] +- object: files/dll/m449Dll.rel + hash: e797c2ff132ab35e768be62cb62219592464ca9d + symbols: config/GMPE01_00/rels/m449Dll/symbols.txt + splits: config/GMPE01_00/rels/m449Dll/splits.txt + links: [] +- object: files/dll/m450Dll.rel + hash: f2ea7da07cf8be4f449c97b829d3231911e158a0 + symbols: config/GMPE01_00/rels/m450Dll/symbols.txt + splits: config/GMPE01_00/rels/m450Dll/splits.txt + links: [] +- object: files/dll/m451Dll.rel + hash: 3f82fd24071582b6494a9f99750c0bc3c10d502e + symbols: config/GMPE01_00/rels/m451Dll/symbols.txt + splits: config/GMPE01_00/rels/m451Dll/splits.txt + links: [] +- object: files/dll/m453Dll.rel + hash: 49ef28c2862000fae4d8efd8fec0ff9b41f24461 + symbols: config/GMPE01_00/rels/m453Dll/symbols.txt + splits: config/GMPE01_00/rels/m453Dll/splits.txt + links: [] +- object: files/dll/m455Dll.rel + hash: e0b21cfbe592955c84662ff50d8a33e147403906 + symbols: config/GMPE01_00/rels/m455Dll/symbols.txt + splits: config/GMPE01_00/rels/m455Dll/splits.txt + links: [] +- object: files/dll/m456Dll.rel + hash: 97d5701b151c6ad8cf8cea6e776973daa95eea34 + symbols: config/GMPE01_00/rels/m456Dll/symbols.txt + splits: config/GMPE01_00/rels/m456Dll/splits.txt + links: [] +- object: files/dll/m457Dll.rel + hash: d4a411f9ef850f52506afd1ad1de88d2d8de361b + symbols: config/GMPE01_00/rels/m457Dll/symbols.txt + splits: config/GMPE01_00/rels/m457Dll/splits.txt + links: [] +- object: files/dll/m458Dll.rel + hash: 7ac361c5a04f83d46f516a13a43e43b59b929435 + symbols: config/GMPE01_00/rels/m458Dll/symbols.txt + splits: config/GMPE01_00/rels/m458Dll/splits.txt + links: [] +- object: files/dll/m459dll.rel + hash: 1aafc4f38ddfee64ea8f7dda7cbd7113e86997ba + symbols: config/GMPE01_00/rels/m459dll/symbols.txt + splits: config/GMPE01_00/rels/m459dll/splits.txt + links: [] +- object: files/dll/m460Dll.rel + hash: 5d28f1a87edee5216b9bb28d9cbff2b22d617747 + symbols: config/GMPE01_00/rels/m460Dll/symbols.txt + splits: config/GMPE01_00/rels/m460Dll/splits.txt + links: [] +- object: files/dll/m461Dll.rel + hash: ab058151bd25600f05f8b6fedbec1c7448175123 + symbols: config/GMPE01_00/rels/m461Dll/symbols.txt + splits: config/GMPE01_00/rels/m461Dll/splits.txt + links: [] +- object: files/dll/m462Dll.rel + hash: 78d6ab00677791ece684a0c149d1ae72efc52d1c + symbols: config/GMPE01_00/rels/m462Dll/symbols.txt + splits: config/GMPE01_00/rels/m462Dll/splits.txt + links: [] +- object: files/dll/m463Dll.rel + hash: 32010595b4fd0b75293fc46b9026c5613d0ea4c2 + symbols: config/GMPE01_00/rels/m463Dll/symbols.txt + splits: config/GMPE01_00/rels/m463Dll/splits.txt + links: [] +- object: files/dll/mentDll.rel + hash: 9e63dd96943ffd2747be5aad924b95892d46051a + symbols: config/GMPE01_00/rels/mentDll/symbols.txt + splits: config/GMPE01_00/rels/mentDll/splits.txt + links: [] +- object: files/dll/messDll.rel + hash: 7e119de456b3557dcf514c70bd7ab81dc5f9cf54 + symbols: config/GMPE01_00/rels/messDll/symbols.txt + splits: config/GMPE01_00/rels/messDll/splits.txt + links: [] +- object: files/dll/mgmodedll.rel + hash: 376c78e2d1b7d7a429959c532e9cb92c98f73b7e + symbols: config/GMPE01_00/rels/mgmodedll/symbols.txt + splits: config/GMPE01_00/rels/mgmodedll/splits.txt + links: [] +- object: files/dll/modeltestDll.rel + hash: 8de28c0f254a2c574c4da9b6a3a17e5ad7ffe1f9 + symbols: config/GMPE01_00/rels/modeltestDll/symbols.txt + splits: config/GMPE01_00/rels/modeltestDll/splits.txt + links: [] +- object: files/dll/modeseldll.rel + hash: bdf8cd57fa23f07c429393817037ade04e2c6024 + symbols: config/GMPE01_00/rels/modeseldll/symbols.txt + splits: config/GMPE01_00/rels/modeseldll/splits.txt + links: [] +- object: files/dll/mpexDll.rel + hash: 4524e63b63510b42bca907f72e67affddec856f9 + symbols: config/GMPE01_00/rels/mpexDll/symbols.txt + splits: config/GMPE01_00/rels/mpexDll/splits.txt + links: [] +- object: files/dll/msetupDll.rel + hash: 86ff8288bb92472376d02cade1d3c9603b613c57 + symbols: config/GMPE01_00/rels/msetupDll/symbols.txt + splits: config/GMPE01_00/rels/msetupDll/splits.txt + links: [] +- object: files/dll/mstory2Dll.rel + hash: 3395fac055bd155c682642bab7d09f428e48bed9 + symbols: config/GMPE01_01/rels/mstory2Dll/symbols.txt + splits: config/GMPE01_01/rels/mstory2Dll/splits.txt + links: [] +- object: files/dll/mstory3Dll.rel + hash: 9d67ee54dd30be83331e303d2bcf12ff2b2fa136 + symbols: config/GMPE01_01/rels/mstory3Dll/symbols.txt + splits: config/GMPE01_01/rels/mstory3Dll/splits.txt + links: [] +- object: files/dll/mstory4Dll.rel + hash: 7f9cc4a18a137f861b2c326b099c02ba4e5bd94b + symbols: config/GMPE01_00/rels/mstory4Dll/symbols.txt + splits: config/GMPE01_00/rels/mstory4Dll/splits.txt + links: [] +- object: files/dll/mstoryDll.rel + hash: b1591a5f829e0c577912fc703a7d280306ff4f77 + symbols: config/GMPE01_01/rels/mstoryDll/symbols.txt + splits: config/GMPE01_01/rels/mstoryDll/splits.txt + links: [] +- object: files/dll/nisDll.rel + hash: d74a5147245a1877b140ee2af7f75b2b6c90892d + symbols: config/GMPE01_00/rels/nisDll/symbols.txt + splits: config/GMPE01_00/rels/nisDll/splits.txt + links: [] +- object: files/dll/option.rel + hash: 5c6973fe7e0271885a5a87d87d4e7164ef711abb + symbols: config/GMPE01_00/rels/option/symbols.txt + splits: config/GMPE01_00/rels/option/splits.txt + links: [] +- object: files/dll/present.rel + hash: ddb8d8a825578a588276b9d4f65eceee26f91253 + symbols: config/GMPE01_00/rels/present/symbols.txt + splits: config/GMPE01_00/rels/present/splits.txt + links: [] +- object: files/dll/resultDll.rel + hash: 41a820438884ae8566f34f895198a186aae60305 + symbols: config/GMPE01_00/rels/resultDll/symbols.txt + splits: config/GMPE01_00/rels/resultDll/splits.txt + links: [] +- object: files/dll/safDll.rel + hash: f34c104078b41971412cb09b37c4dc9526be02e3 + symbols: config/GMPE01_00/rels/safDll/symbols.txt + splits: config/GMPE01_00/rels/safDll/splits.txt + links: [] +- object: files/dll/selmenuDll.rel + hash: 81a00a71b8d1ab22bfd3df10d815c87ba618ec84 + symbols: config/GMPE01_00/rels/selmenuDll/symbols.txt + splits: config/GMPE01_00/rels/selmenuDll/splits.txt + links: [] +- object: files/dll/staffDll.rel + hash: a6210fbcdf3d7f0063f3052e2ae525abacac08e7 + symbols: config/GMPE01_00/rels/staffDll/symbols.txt + splits: config/GMPE01_00/rels/staffDll/splits.txt + links: [] +- object: files/dll/subchrselDll.rel + hash: 7488bc249dc7c656f60105e4d24c4011983c2ba2 + symbols: config/GMPE01_00/rels/subchrselDll/symbols.txt + splits: config/GMPE01_00/rels/subchrselDll/splits.txt + links: [] +- object: files/dll/w01Dll.rel + hash: d3de36269886995d959e1fd58d8ad806843c8819 + symbols: config/GMPE01_00/rels/w01Dll/symbols.txt + splits: config/GMPE01_00/rels/w01Dll/splits.txt + links: [] +- object: files/dll/w02Dll.rel + hash: 750c4d6cd6a49d290f5cc63432d4f65642fbd7e4 + symbols: config/GMPE01_00/rels/w02Dll/symbols.txt + splits: config/GMPE01_00/rels/w02Dll/splits.txt + links: [] +- object: files/dll/w03Dll.rel + hash: f9e8d9c4581d44488adaffa3d46d9bc835d4f9bd + symbols: config/GMPE01_00/rels/w03Dll/symbols.txt + splits: config/GMPE01_00/rels/w03Dll/splits.txt + links: [] +- object: files/dll/w04Dll.rel + hash: 821126eeb7054150744b925cc4cb06c751ddcefd + symbols: config/GMPE01_00/rels/w04Dll/symbols.txt + splits: config/GMPE01_00/rels/w04Dll/splits.txt + links: [] +- object: files/dll/w05Dll.rel + hash: d29f7ccadcba23c8446d05101c4efa5caba26dfd + symbols: config/GMPE01_00/rels/w05Dll/symbols.txt + splits: config/GMPE01_00/rels/w05Dll/splits.txt + links: [] +- object: files/dll/w06Dll.rel + hash: d11a7a6d44189ba8d1e3a7168ea640ea9f2152fe + symbols: config/GMPE01_00/rels/w06Dll/symbols.txt + splits: config/GMPE01_00/rels/w06Dll/splits.txt + links: [] +- object: files/dll/w10Dll.rel + hash: 54bb23228b04c5aaa6aa7c8ca1f846baec5a1f2c + symbols: config/GMPE01_00/rels/w10Dll/symbols.txt + splits: config/GMPE01_00/rels/w10Dll/splits.txt + links: [] +- object: files/dll/w20Dll.rel + hash: 98cc41456afa9e1ccbb8e03718b8d3cb64e4e86f + symbols: config/GMPE01_00/rels/w20Dll/symbols.txt + splits: config/GMPE01_00/rels/w20Dll/splits.txt + links: [] +- object: files/dll/w21Dll.rel + hash: b888f2c6703e680699ff8c59ad9200b9d78d30a1 + symbols: config/GMPE01_00/rels/w21Dll/symbols.txt + splits: config/GMPE01_00/rels/w21Dll/splits.txt + links: [] +- object: files/dll/ztardll.rel + hash: 87d9fee70ed4f011e0b30e05156d087204cf686f + symbols: config/GMPE01_00/rels/ztardll/symbols.txt + splits: config/GMPE01_00/rels/ztardll/splits.txt + links: [] +- object: files/dll/E3setupDLL.rel + hash: 234e07cee1491c7060e30805681bf5f39150122d + symbols: config/GMPE01_00/rels/E3setupDLL/symbols.txt + splits: config/GMPE01_00/rels/E3setupDLL/splits.txt + links: [_minigameDll] +- object: files/dll/m300Dll.rel + hash: eba8a17e8b263bc9cd601b1aea7e698a8785416a + symbols: config/GMPE01_00/rels/m300Dll/symbols.txt + splits: config/GMPE01_00/rels/m300Dll/splits.txt + links: [_minigameDll] +- object: files/dll/m401Dll.rel + hash: f3ec526c25986a3fcf7dfbc8c463626839a3a801 + symbols: config/GMPE01_00/rels/m401Dll/symbols.txt + splits: config/GMPE01_00/rels/m401Dll/splits.txt + links: [_minigameDll] + +extract: +- symbol: ank8x8_4b + binary: ank8x8_4b.bin + header: ank8x8_4b.inc +- symbol: refMapData0 + binary: refMapData0.anm + header: refMapData0.inc +- symbol: refMapData1 + binary: refMapData1.anm + header: refMapData1.inc +- symbol: refMapData2 + binary: refMapData2.anm + header: refMapData2.inc +- symbol: refMapData3 + binary: refMapData3.anm + header: refMapData3.inc +- symbol: refMapData4 + binary: refMapData4.anm + header: refMapData4.inc +- symbol: toonMapData + binary: toonMapData.anm + header: toonMapData.inc +- symbol: toonMapData2 + binary: toonMapData2.anm + header: toonMapData2.inc +- symbol: hiliteData + binary: hiliteData.anm + header: hiliteData.inc +- symbol: hiliteData2 + binary: hiliteData2.anm + header: hiliteData2.inc +- symbol: hiliteData3 + binary: hiliteData3.anm + header: hiliteData3.inc +- symbol: hiliteData4 + binary: hiliteData4.anm + header: hiliteData4.inc +- symbol: Ascii8x8_1bpp + binary: Ascii8x8_1bpp.bin + header: Ascii8x8_1bpp.inc +- symbol: coveropen_en + binary: coveropen_en.bin + header: coveropen_en.inc +- symbol: fatalerror_en + binary: fatalerror_en.bin + header: fatalerror_en.inc +- symbol: loading_en + binary: loading_en.bin + header: loading_en.inc +- symbol: nodisc_en + binary: nodisc_en.bin + header: nodisc_en.inc +- symbol: retryerror_en + binary: retryerror_en.bin + header: retryerror_en.inc +- symbol: wrongdisc_en + binary: wrongdisc_en.bin + header: wrongdisc_en.inc +- symbol: DEMOFontBitmap + binary: DEMOFontBitmap.bin + header: DEMOFontBitmap.inc diff --git a/config/GMPE01_01/rels/m444dll/splits.txt b/config/GMPE01_01/rels/m444dll/splits.txt new file mode 100644 index 00000000..08b0966c --- /dev/null +++ b/config/GMPE01_01/rels/m444dll/splits.txt @@ -0,0 +1,32 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m444dll/main.c: + .text start:0x000000A0 end:0x00008424 + .rodata start:0x00000000 end:0x00000278 + .data start:0x00000000 end:0x00000258 + .bss start:0x00000000 end:0x00000310 + +REL/m444dll/pinball.c: + .text start:0x00008424 end:0x0000D664 + .rodata start:0x00000278 end:0x00000430 + .data start:0x00000258 end:0x00000470 + .bss start:0x00000310 end:0x00019908 + +REL/m444dll/datalist.c: + .text start:0x0000D664 end:0x0000DAA4 + .rodata start:0x00000430 end:0x00000440 + .data start:0x00000470 end:0x000016EC + .bss start:0x00019908 end:0x00019A76 + +REL/m444dll/shadow.c: + .text start:0x0000DAA4 end:0x0000DEFC + .rodata start:0x00000440 end:0x0000047C diff --git a/config/GMPE01_01/rels/m444dll/symbols.txt b/config/GMPE01_01/rels/m444dll/symbols.txt new file mode 100644 index 00000000..cdfb7397 --- /dev/null +++ b/config/GMPE01_01/rels/m444dll/symbols.txt @@ -0,0 +1,325 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x3D0 +fn_1_470 = .text:0x00000470; // type:function size:0x370C +fn_1_3B7C = .text:0x00003B7C; // type:function size:0x1270 +fn_1_4DEC = .text:0x00004DEC; // type:function size:0x7C4 +fn_1_55B0 = .text:0x000055B0; // type:function size:0x1C4 +fn_1_5774 = .text:0x00005774; // type:function size:0x6F4 +fn_1_5E68 = .text:0x00005E68; // type:function size:0x6F4 +fn_1_655C = .text:0x0000655C; // type:function size:0x824 +fn_1_6D80 = .text:0x00006D80; // type:function size:0xBC +fn_1_6E3C = .text:0x00006E3C; // type:function size:0xA0 +fn_1_6EDC = .text:0x00006EDC; // type:function size:0x3B4 +fn_1_7290 = .text:0x00007290; // type:function size:0xC2C +fn_1_7EBC = .text:0x00007EBC; // type:function size:0x2C4 +fn_1_8180 = .text:0x00008180; // type:function size:0x90 +fn_1_8210 = .text:0x00008210; // type:function size:0xEC +fn_1_82FC = .text:0x000082FC; // type:function size:0x128 +fn_1_8424 = .text:0x00008424; // type:function size:0x1F8 +fn_1_861C = .text:0x0000861C; // type:function size:0x7B4 +fn_1_8DD0 = .text:0x00008DD0; // type:function size:0x648 +fn_1_9418 = .text:0x00009418; // type:function size:0x894 +fn_1_9CAC = .text:0x00009CAC; // type:function size:0x3B4 +fn_1_A060 = .text:0x0000A060; // type:function size:0xB70 +fn_1_ABD0 = .text:0x0000ABD0; // type:function size:0x618 +fn_1_B1E8 = .text:0x0000B1E8; // type:function size:0x1108 +fn_1_C214 = .text:0x0000C2F0; // type:function size:0x528 +fn_1_C73C = .text:0x0000C818; // type:function size:0x2F4 +fn_1_CA30 = .text:0x0000CB0C; // type:function size:0x140 +fn_1_CB70 = .text:0x0000CC4C; // type:function size:0x298 +fn_1_CE08 = .text:0x0000CEE4; // type:function size:0x194 +fn_1_CF9C = .text:0x0000D078; // type:function size:0x244 +fn_1_D1E0 = .text:0x0000D2BC; // type:function size:0x3A8 +fn_1_D588 = .text:0x0000D664; // type:function size:0x290 +fn_1_D818 = .text:0x0000D8F4; // type:function size:0x138 +fn_1_D950 = .text:0x0000DA2C; // type:function size:0x78 +fn_1_D9C8 = .text:0x0000DAA4; // type:function size:0x2C +fn_1_D9F4 = .text:0x0000DAD0; // type:function size:0x42C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x118 data:float +lbl_1_data_118 = .data:0x00000118; // type:object size:0x28 +lbl_1_data_140 = .data:0x00000140; // type:object size:0xC data:float +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x3C data:float +lbl_1_data_188 = .data:0x00000188; // type:object size:0xA data:2byte +lbl_1_data_194 = .data:0x00000194; // type:object size:0x20 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 scope:local data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA scope:local data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA scope:local data:string +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA scope:local data:string +lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD scope:local data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0xD scope:local data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xD scope:local data:string +lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD scope:local data:string +lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB scope:local data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0xB scope:local data:string +lbl_1_data_240 = .data:0x00000240; // type:object size:0x4 +lbl_1_data_244 = .data:0x00000244; // type:object size:0xA scope:local data:string +lbl_1_data_24E = .data:0x0000024E; // type:object size:0x4 scope:local data:string +lbl_1_data_258 = .data:0x00000258; // type:object size:0xC +lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C +lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0xA +lbl_1_data_2D2 = .data:0x000002D2; // type:object size:0xD scope:local data:string +lbl_1_data_2DF = .data:0x000002DF; // type:object size:0xD scope:local data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xD scope:local data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0xD scope:local data:string +lbl_1_data_306 = .data:0x00000306; // type:object size:0xD scope:local data:string +lbl_1_data_313 = .data:0x00000313; // type:object size:0xD scope:local data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0xD scope:local data:string +lbl_1_data_32D = .data:0x0000032D; // type:object size:0xD scope:local data:string +lbl_1_data_33A = .data:0x0000033A; // type:object size:0xD scope:local data:string +lbl_1_data_347 = .data:0x00000347; // type:object size:0xD scope:local data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0xD scope:local data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0xD scope:local data:string +lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD scope:local data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD scope:local data:string +jumptable_1_data_388 = .data:0x00000388; // type:object size:0x1C scope:local +lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x6 data:2byte +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x30 data:float +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x24 data:float +lbl_1_data_400 = .data:0x00000400; // type:object size:0x54 data:float +lbl_1_data_454 = .data:0x00000454; // type:object size:0xC +lbl_1_data_460 = .data:0x00000460; // type:object size:0x10 scope:local data:string +lbl_1_data_470 = .data:0x00000470; // type:object size:0x127C +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x140 data:2byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x140 data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x8 data:float +lbl_1_bss_290 = .bss:0x00000290; // type:object size:0x18 data:4byte +lbl_1_bss_2A8 = .bss:0x000002A8; // type:object size:0x18 data:float +lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0x10 data:2byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x2 data:2byte +lbl_1_bss_2D2 = .bss:0x000002D2; // type:object size:0x2 data:2byte +lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x2 data:2byte +lbl_1_bss_2D6 = .bss:0x000002D6; // type:object size:0x2 data:2byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x2 data:2byte +lbl_1_bss_2DA = .bss:0x000002DA; // type:object size:0x2 data:2byte +lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x2 data:2byte +lbl_1_bss_2E0 = .bss:0x000002E0; // type:object size:0x4 data:float +lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0xC data:float +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0xC data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0x4 data:4byte +lbl_1_bss_300 = .bss:0x00000300; // type:object size:0x8 data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0x4 data:4byte +lbl_1_bss_310 = .bss:0x00000310; // type:object size:0x1 data:byte +lbl_1_bss_312 = .bss:0x00000312; // type:object size:0x2 data:2byte +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0xC data:float +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x8 data:2byte +lbl_1_bss_328 = .bss:0x00000328; // type:object size:0x24 data:float +lbl_1_bss_34C = .bss:0x0000034C; // type:object size:0x24 data:float +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0x400 +lbl_1_bss_770 = .bss:0x00000770; // type:object size:0xC data:float +lbl_1_bss_77C = .bss:0x0000077C; // type:object size:0xC data:float +lbl_1_bss_788 = .bss:0x00000788; // type:object size:0xC +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x90 +lbl_1_bss_824 = .bss:0x00000824; // type:object size:0x3C +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x24 +lbl_1_bss_884 = .bss:0x00000884; // type:object size:0x1000 +lbl_1_bss_1884 = .bss:0x00001884; // type:object size:0x2 data:2byte +lbl_1_bss_1888 = .bss:0x00001888; // type:object size:0xC data:float +lbl_1_bss_1894 = .bss:0x00001894; // type:object size:0xC data:float +lbl_1_bss_18A0 = .bss:0x000018A0; // type:object size:0x14 +lbl_1_bss_18B4 = .bss:0x000018B4; // type:object size:0x3C +lbl_1_bss_18F0 = .bss:0x000018F0; // type:object size:0xC000 +lbl_1_bss_D8F0 = .bss:0x0000D8F0; // type:object size:0xC000 +lbl_1_bss_198F0 = .bss:0x000198F0; // type:object size:0x14 +lbl_1_bss_19908 = .bss:0x00019908; // type:object size:0x2 +lbl_1_bss_1990A = .bss:0x0001990A; // type:object size:0x4 data:2byte +lbl_1_bss_1990E = .bss:0x0001990E; // type:object size:0xB4 data:2byte +lbl_1_bss_199C2 = .bss:0x000199C2; // type:object size:0xB4 data:2byte diff --git a/config/GMPE01_01/rels/mstory2Dll/splits.txt b/config/GMPE01_01/rels/mstory2Dll/splits.txt new file mode 100644 index 00000000..efd06f61 --- /dev/null +++ b/config/GMPE01_01/rels/mstory2Dll/splits.txt @@ -0,0 +1,54 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B560 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B560 end:0x0001B974 + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPE01_01/rels/mstory2Dll/symbols.txt b/config/GMPE01_01/rels/mstory2Dll/symbols.txt new file mode 100644 index 00000000..8bf47557 --- /dev/null +++ b/config/GMPE01_01/rels/mstory2Dll/symbols.txt @@ -0,0 +1,713 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2A0 +_prolog = .text:0x00000344; // type:function size:0x54 scope:global +_epilog = .text:0x00000398; // type:function size:0x4C scope:global +fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 +fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 +fn_1_864 = .text:0x00000864; // type:function size:0x28 +fn_1_88C = .text:0x0000088C; // type:function size:0x20 +fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 +fn_1_984 = .text:0x00000984; // type:function size:0xC8 +fn_1_A4C = .text:0x00000A4C; // type:function size:0xBC +fn_1_B08 = .text:0x00000B08; // type:function size:0xBC +fn_1_BC4 = .text:0x00000BC4; // type:function size:0x4 +fn_1_BC8 = .text:0x00000BC8; // type:function size:0x20 +fn_1_BE8 = .text:0x00000BE8; // type:function size:0x28 +fn_1_C10 = .text:0x00000C10; // type:function size:0x20 +fn_1_C30 = .text:0x00000C30; // type:function size:0x24 +fn_1_C54 = .text:0x00000C54; // type:function size:0x4 +fn_1_C58 = .text:0x00000C58; // type:function size:0xA48 +fn_1_16A0 = .text:0x000016A0; // type:function size:0x1BC +fn_1_185C = .text:0x0000185C; // type:function size:0x1D8 +fn_1_1A34 = .text:0x00001A34; // type:function size:0x60 +fn_1_1A94 = .text:0x00001A94; // type:function size:0x68 +fn_1_1AFC = .text:0x00001AFC; // type:function size:0xAC +fn_1_1BA8 = .text:0x00001BA8; // type:function size:0xBC +fn_1_1C64 = .text:0x00001C64; // type:function size:0xB4 +fn_1_1D18 = .text:0x00001D18; // type:function size:0x34 +fn_1_1D4C = .text:0x00001D4C; // type:function size:0x40 +fn_1_1D8C = .text:0x00001D8C; // type:function size:0x70 +fn_1_1DFC = .text:0x00001DFC; // type:function size:0x188 +fn_1_1F84 = .text:0x00001F84; // type:function size:0x2E0 +fn_1_2264 = .text:0x00002264; // type:function size:0x90 +fn_1_22F4 = .text:0x000022F4; // type:function size:0x48 +fn_1_233C = .text:0x0000233C; // type:function size:0x54 +fn_1_2390 = .text:0x00002390; // type:function size:0x3C0 +fn_1_2750 = .text:0x00002750; // type:function size:0x10 +fn_1_2760 = .text:0x00002760; // type:function size:0x10 +fn_1_2770 = .text:0x00002770; // type:function size:0xB8 +fn_1_2828 = .text:0x00002828; // type:function size:0x120 +fn_1_2948 = .text:0x00002948; // type:function size:0x3B8 +fn_1_2D00 = .text:0x00002D00; // type:function size:0x7F4 +fn_1_34F4 = .text:0x000034F4; // type:function size:0x88 +fn_1_357C = .text:0x0000357C; // type:function size:0x94 +fn_1_3610 = .text:0x00003610; // type:function size:0x58 +fn_1_3668 = .text:0x00003668; // type:function size:0xEC +fn_1_3754 = .text:0x00003754; // type:function size:0xC4 +fn_1_3818 = .text:0x00003818; // type:function size:0x3C +fn_1_3854 = .text:0x00003854; // type:function size:0x44 +fn_1_3898 = .text:0x00003898; // type:function size:0x26C +fn_1_3B04 = .text:0x00003B04; // type:function size:0x26C +fn_1_3D70 = .text:0x00003D70; // type:function size:0x27C +fn_1_3FEC = .text:0x00003FEC; // type:function size:0x2B4 +fn_1_42A0 = .text:0x000042A0; // type:function size:0x46C +fn_1_470C = .text:0x0000470C; // type:function size:0x454 +fn_1_4B60 = .text:0x00004B60; // type:function size:0x48C +fn_1_4FEC = .text:0x00004FEC; // type:function size:0x658 +fn_1_5644 = .text:0x00005644; // type:function size:0x4C4 +fn_1_5B08 = .text:0x00005B08; // type:function size:0x4FC +fn_1_6004 = .text:0x00006004; // type:function size:0x6C8 +fn_1_66CC = .text:0x000066CC; // type:function size:0x38 +fn_1_6704 = .text:0x00006704; // type:function size:0xD4 +fn_1_67D8 = .text:0x000067D8; // type:function size:0x198 +fn_1_6970 = .text:0x00006970; // type:function size:0x34 +fn_1_69A4 = .text:0x000069A4; // type:function size:0x40 +fn_1_69E4 = .text:0x000069E4; // type:function size:0xAC +fn_1_6A90 = .text:0x00006A90; // type:function size:0x2E8 +fn_1_6D78 = .text:0x00006D78; // type:function size:0x44 +fn_1_6DBC = .text:0x00006DBC; // type:function size:0x1F4 +fn_1_6FB0 = .text:0x00006FB0; // type:function size:0xB4 +fn_1_7064 = .text:0x00007064; // type:function size:0x178 +fn_1_71DC = .text:0x000071DC; // type:function size:0x68 +fn_1_7244 = .text:0x00007244; // type:function size:0x140 +fn_1_7384 = .text:0x00007384; // type:function size:0xA2C +fn_1_7DB0 = .text:0x00007DB0; // type:function size:0x1A4 +fn_1_7F54 = .text:0x00007F54; // type:function size:0x118 +fn_1_806C = .text:0x0000806C; // type:function size:0x8C +fn_1_80F8 = .text:0x000080F8; // type:function size:0x488 +fn_1_8580 = .text:0x00008580; // type:function size:0x5C +fn_1_85DC = .text:0x000085DC; // type:function size:0x1F8 +fn_1_87D4 = .text:0x000087D4; // type:function size:0x2E8 +fn_1_8ABC = .text:0x00008ABC; // type:function size:0x578 +fn_1_9034 = .text:0x00009034; // type:function size:0x164 +fn_1_9198 = .text:0x00009198; // type:function size:0x124 +fn_1_92BC = .text:0x000092BC; // type:function size:0x4AC +fn_1_9768 = .text:0x00009768; // type:function size:0xB4 +fn_1_981C = .text:0x0000981C; // type:function size:0x138 +fn_1_9954 = .text:0x00009954; // type:function size:0xBC +fn_1_9A10 = .text:0x00009A10; // type:function size:0x1C4 +fn_1_9BD4 = .text:0x00009BD4; // type:function size:0xE4 +fn_1_9CB8 = .text:0x00009CB8; // type:function size:0x214 +fn_1_9ECC = .text:0x00009ECC; // type:function size:0x110 +fn_1_9FDC = .text:0x00009FDC; // type:function size:0x2AC +fn_1_A288 = .text:0x0000A288; // type:function size:0x220 +fn_1_A4A8 = .text:0x0000A4A8; // type:function size:0xE4 +fn_1_A58C = .text:0x0000A58C; // type:function size:0x2BC +fn_1_A848 = .text:0x0000A848; // type:function size:0x2C8 +fn_1_AB10 = .text:0x0000AB10; // type:function size:0x2A0 +fn_1_ADB0 = .text:0x0000ADB0; // type:function size:0xAC +fn_1_AE5C = .text:0x0000AE5C; // type:function size:0x364 +fn_1_B1C0 = .text:0x0000B1C0; // type:function size:0x8C +fn_1_B24C = .text:0x0000B24C; // type:function size:0x130 +fn_1_B37C = .text:0x0000B37C; // type:function size:0x68 +fn_1_B3E4 = .text:0x0000B3E4; // type:function size:0x134 +fn_1_B518 = .text:0x0000B518; // type:function size:0x8C +fn_1_B5A4 = .text:0x0000B5A4; // type:function size:0x3E0 +fn_1_B984 = .text:0x0000B984; // type:function size:0x5C +fn_1_B9E0 = .text:0x0000B9E0; // type:function size:0xB0 +fn_1_BA90 = .text:0x0000BA90; // type:function size:0x360 +fn_1_BDF0 = .text:0x0000BDF0; // type:function size:0x158 +fn_1_BF48 = .text:0x0000BF48; // type:function size:0x328 +fn_1_C270 = .text:0x0000C270; // type:function size:0x250 +fn_1_C4C0 = .text:0x0000C4C0; // type:function size:0xB4 +fn_1_C574 = .text:0x0000C574; // type:function size:0x228 +fn_1_C79C = .text:0x0000C79C; // type:function size:0xBC +fn_1_C858 = .text:0x0000C858; // type:function size:0x2B4 +fn_1_CB0C = .text:0x0000CB0C; // type:function size:0x1C0 +fn_1_CCCC = .text:0x0000CCCC; // type:function size:0xAC +fn_1_CD78 = .text:0x0000CD78; // type:function size:0x2B8 +fn_1_D030 = .text:0x0000D030; // type:function size:0x1F4 +fn_1_D224 = .text:0x0000D224; // type:function size:0xAC +fn_1_D2D0 = .text:0x0000D2D0; // type:function size:0xC4 +fn_1_D394 = .text:0x0000D394; // type:function size:0xE4 +fn_1_D478 = .text:0x0000D478; // type:function size:0x2EC +fn_1_D764 = .text:0x0000D764; // type:function size:0x134 +fn_1_D898 = .text:0x0000D898; // type:function size:0x2C0 +fn_1_DB58 = .text:0x0000DB58; // type:function size:0xFC +fn_1_DC54 = .text:0x0000DC54; // type:function size:0x170 +fn_1_DDC4 = .text:0x0000DDC4; // type:function size:0x3F4 +fn_1_E1B8 = .text:0x0000E1B8; // type:function size:0x8C +fn_1_E244 = .text:0x0000E244; // type:function size:0xF0 +fn_1_E334 = .text:0x0000E334; // type:function size:0x23C +fn_1_E570 = .text:0x0000E570; // type:function size:0xC8 +fn_1_E638 = .text:0x0000E638; // type:function size:0x2B4 +fn_1_E8EC = .text:0x0000E8EC; // type:function size:0x140 +fn_1_EA2C = .text:0x0000EA2C; // type:function size:0x134 +fn_1_EB60 = .text:0x0000EB60; // type:function size:0x8C +fn_1_EBEC = .text:0x0000EBEC; // type:function size:0x3E0 +fn_1_EFCC = .text:0x0000EFCC; // type:function size:0x5C +fn_1_F028 = .text:0x0000F028; // type:function size:0x128 +fn_1_F150 = .text:0x0000F150; // type:function size:0xDC +fn_1_F22C = .text:0x0000F22C; // type:function size:0xD0 +fn_1_F2FC = .text:0x0000F2FC; // type:function size:0xD4 +fn_1_F3D0 = .text:0x0000F3D0; // type:function size:0x468 +fn_1_F838 = .text:0x0000F838; // type:function size:0x4 +fn_1_F83C = .text:0x0000F83C; // type:function size:0x78 +fn_1_F8B4 = .text:0x0000F8B4; // type:function size:0x548 +fn_1_FDFC = .text:0x0000FDFC; // type:function size:0xB4 +fn_1_FEB0 = .text:0x0000FEB0; // type:function size:0x228 +fn_1_100D8 = .text:0x000100D8; // type:function size:0xBC +fn_1_10194 = .text:0x00010194; // type:function size:0x2B4 +fn_1_10448 = .text:0x00010448; // type:function size:0x1BC +fn_1_10604 = .text:0x00010604; // type:function size:0xAC +fn_1_106B0 = .text:0x000106B0; // type:function size:0x29C +fn_1_1094C = .text:0x0001094C; // type:function size:0x2B4 +fn_1_10C00 = .text:0x00010C00; // type:function size:0x1F4 +fn_1_10DF4 = .text:0x00010DF4; // type:function size:0xAC +fn_1_10EA0 = .text:0x00010EA0; // type:function size:0xE4 +fn_1_10F84 = .text:0x00010F84; // type:function size:0xC4 +fn_1_11048 = .text:0x00011048; // type:function size:0xE4 +fn_1_1112C = .text:0x0001112C; // type:function size:0x2EC +fn_1_11418 = .text:0x00011418; // type:function size:0x134 +fn_1_1154C = .text:0x0001154C; // type:function size:0x2EC +fn_1_11838 = .text:0x00011838; // type:function size:0xFC +fn_1_11934 = .text:0x00011934; // type:function size:0x164 +fn_1_11A98 = .text:0x00011A98; // type:function size:0x118 +fn_1_11BB0 = .text:0x00011BB0; // type:function size:0x420 +fn_1_11FD0 = .text:0x00011FD0; // type:function size:0x8C +fn_1_1205C = .text:0x0001205C; // type:function size:0x130 +fn_1_1218C = .text:0x0001218C; // type:function size:0x23C +fn_1_123C8 = .text:0x000123C8; // type:function size:0x1A4 +fn_1_1256C = .text:0x0001256C; // type:function size:0x124 +fn_1_12690 = .text:0x00012690; // type:function size:0x8C +fn_1_1271C = .text:0x0001271C; // type:function size:0x3AC +fn_1_12AC8 = .text:0x00012AC8; // type:function size:0x48 +fn_1_12B10 = .text:0x00012B10; // type:function size:0x2C4 +fn_1_12DD4 = .text:0x00012DD4; // type:function size:0x37C +fn_1_13150 = .text:0x00013150; // type:function size:0x70 +fn_1_131C0 = .text:0x000131C0; // type:function size:0xA4 +fn_1_13264 = .text:0x00013264; // type:function size:0x5C4 +fn_1_13828 = .text:0x00013828; // type:function size:0xA4 +fn_1_138CC = .text:0x000138CC; // type:function size:0x14C +fn_1_13A18 = .text:0x00013A18; // type:function size:0x1A0 +fn_1_13BB8 = .text:0x00013BB8; // type:function size:0xB4 +fn_1_13C6C = .text:0x00013C6C; // type:function size:0x348 +fn_1_13FB4 = .text:0x00013FB4; // type:function size:0xEC +fn_1_140A0 = .text:0x000140A0; // type:function size:0xCC +fn_1_1416C = .text:0x0001416C; // type:function size:0x330 +fn_1_1449C = .text:0x0001449C; // type:function size:0x3CC +fn_1_14868 = .text:0x00014868; // type:function size:0x234 +fn_1_14A9C = .text:0x00014A9C; // type:function size:0xAC +fn_1_14B48 = .text:0x00014B48; // type:function size:0xF8 +fn_1_14C40 = .text:0x00014C40; // type:function size:0x32C +fn_1_14F6C = .text:0x00014F6C; // type:function size:0x1C8 +fn_1_15134 = .text:0x00015134; // type:function size:0xAC +fn_1_151E0 = .text:0x000151E0; // type:function size:0xE4 +fn_1_152C4 = .text:0x000152C4; // type:function size:0xE4 +fn_1_153A8 = .text:0x000153A8; // type:function size:0x2C0 +fn_1_15668 = .text:0x00015668; // type:function size:0xE4 +fn_1_1574C = .text:0x0001574C; // type:function size:0x1F8 +fn_1_15944 = .text:0x00015944; // type:function size:0xAC +fn_1_159F0 = .text:0x000159F0; // type:function size:0x2EC +fn_1_15CDC = .text:0x00015CDC; // type:function size:0x8C +fn_1_15D68 = .text:0x00015D68; // type:function size:0xF0 +fn_1_15E58 = .text:0x00015E58; // type:function size:0x118 +fn_1_15F70 = .text:0x00015F70; // type:function size:0xF0 +fn_1_16060 = .text:0x00016060; // type:function size:0x118 +fn_1_16178 = .text:0x00016178; // type:function size:0x8C +fn_1_16204 = .text:0x00016204; // type:function size:0x3AC +fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C +fn_1_1661C = .text:0x0001660C; // type:function size:0x110 +fn_1_1670C = .text:0x0001671C; // type:function size:0x194 +fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 +fn_1_16984 = .text:0x00016984; // type:function size:0x50 +fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 +fn_1_169D8 = .text:0x000169D8; // type:function size:0xF4 +fn_1_16ACC = .text:0x00016ACC; // type:function size:0x4F4 +fn_1_16FC0 = .text:0x00016FC0; // type:function size:0xB4 +fn_1_17074 = .text:0x00017074; // type:function size:0x208 +fn_1_1727C = .text:0x0001727C; // type:function size:0xBC +fn_1_17338 = .text:0x00017338; // type:function size:0x294 +fn_1_175CC = .text:0x000175CC; // type:function size:0x180 +fn_1_1774C = .text:0x0001774C; // type:function size:0xAC +fn_1_177F8 = .text:0x000177F8; // type:function size:0x278 +fn_1_17A70 = .text:0x00017A70; // type:function size:0x128 +fn_1_17B98 = .text:0x00017B98; // type:function size:0xAC +fn_1_17C44 = .text:0x00017C44; // type:function size:0x220 +fn_1_17E64 = .text:0x00017E64; // type:function size:0xE4 +fn_1_17F48 = .text:0x00017F48; // type:function size:0x190 +fn_1_180D8 = .text:0x000180D8; // type:function size:0xAC +fn_1_18184 = .text:0x00018184; // type:function size:0x284 +fn_1_18408 = .text:0x00018408; // type:function size:0x8C +fn_1_18494 = .text:0x00018494; // type:function size:0x23C +fn_1_186D0 = .text:0x000186D0; // type:function size:0x220 +fn_1_188F0 = .text:0x000188F0; // type:function size:0x144 +fn_1_18A34 = .text:0x00018A34; // type:function size:0x8C +fn_1_18AC0 = .text:0x00018AC0; // type:function size:0x3BC +fn_1_18E7C = .text:0x00018E7C; // type:function size:0x48 +fn_1_18EC4 = .text:0x00018EC4; // type:function size:0x274 +fn_1_19138 = .text:0x00019138; // type:function size:0x1FC +fn_1_19334 = .text:0x00019334; // type:function size:0x66C +fn_1_199A0 = .text:0x000199A0; // type:function size:0x248 +fn_1_19BE8 = .text:0x00019BE8; // type:function size:0x84 +fn_1_19C6C = .text:0x00019C6C; // type:function size:0x2A8 +fn_1_19F14 = .text:0x00019F14; // type:function size:0xB4 +fn_1_19FC8 = .text:0x00019FC8; // type:function size:0x198 +fn_1_1A160 = .text:0x0001A160; // type:function size:0x208 +fn_1_1A368 = .text:0x0001A368; // type:function size:0x1D0 +fn_1_1A538 = .text:0x0001A538; // type:function size:0x40 +fn_1_1A578 = .text:0x0001A578; // type:function size:0x254 +fn_1_1A7CC = .text:0x0001A7CC; // type:function size:0x204 +fn_1_1A9D0 = .text:0x0001A9D0; // type:function size:0xE4 +fn_1_1AAB4 = .text:0x0001AAB4; // type:function size:0x288 +fn_1_1AD3C = .text:0x0001AD3C; // type:function size:0xE4 +fn_1_1AE20 = .text:0x0001AE20; // type:function size:0x1B4 +fn_1_1AFD4 = .text:0x0001AFD4; // type:function size:0x110 +fn_1_1B0E4 = .text:0x0001B0E4; // type:function size:0x234 +fn_1_1B318 = .text:0x0001B318; // type:function size:0x8C +fn_1_1B3A4 = .text:0x0001B3A4; // type:function size:0x8C +fn_1_1B430 = .text:0x0001B430; // type:function size:0x130 +fn_1_1B560 = .text:0x0001B560; // type:function size:0xEC +fn_1_1B64C = .text:0x0001B64C; // type:function size:0x23C +fn_1_1B870 = .text:0x0001B888; // type:function size:0x9C +fn_1_1B90C = .text:0x0001B924; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local +lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string +jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local +jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local +lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 +lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x2C +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF scope:local data:string +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string +lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 +lbl_1_data_698 = .data:0x00000698; // type:object size:0x1C +lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0x20 +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 +lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 +lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte +lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 scope:local data:string +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C scope:local data:string +lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 +lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte +lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte +lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string +lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x20 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x44 data:float +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0xC data:float +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x40 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x28 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x28 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x28 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x28 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x28 data:4byte +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x104 data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x4 data:4byte +lbl_1_bss_29C = .bss:0x0000029C; // type:object size:0xA0 +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x28 data:4byte +lbl_1_bss_364 = .bss:0x00000364; // type:object size:0x28 data:4byte +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x28 data:4byte +lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x28 data:4byte +lbl_1_bss_3DC = .bss:0x000003DC; // type:object size:0x104 data:4byte +lbl_1_bss_4E0 = .bss:0x000004E0; // type:object size:0x4 data:4byte +lbl_1_bss_4E4 = .bss:0x000004E4; // type:object size:0x4 data:4byte +lbl_1_bss_4E8 = .bss:0x000004E8; // type:object size:0x60 data:4byte +lbl_1_bss_548 = .bss:0x00000548; // type:object size:0xA0 +lbl_1_bss_5E8 = .bss:0x000005E8; // type:object size:0x28 data:4byte +lbl_1_bss_610 = .bss:0x00000610; // type:object size:0x28 data:4byte +lbl_1_bss_638 = .bss:0x00000638; // type:object size:0x28 data:4byte +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x28 data:4byte +lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x104 data:float +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x28 data:4byte +lbl_1_bss_7C0 = .bss:0x000007C0; // type:object size:0x28 data:4byte +lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x28 data:4byte +lbl_1_bss_810 = .bss:0x00000810; // type:object size:0x28 data:4byte +lbl_1_bss_838 = .bss:0x00000838; // type:object size:0x28 data:4byte +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x104 data:4byte +lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x4 data:4byte +lbl_1_bss_96C = .bss:0x0000096C; // type:object size:0x28 data:4byte +lbl_1_bss_994 = .bss:0x00000994; // type:object size:0x28 data:4byte +lbl_1_bss_9BC = .bss:0x000009BC; // type:object size:0x28 data:4byte +lbl_1_bss_9E4 = .bss:0x000009E4; // type:object size:0x28 data:4byte +lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x28 data:4byte +lbl_1_bss_A34 = .bss:0x00000A34; // type:object size:0x104 data:4byte +lbl_1_bss_B38 = .bss:0x00000B38; // type:object size:0x4 data:4byte +lbl_1_bss_B3C = .bss:0x00000B3C; // type:object size:0x4 data:4byte +lbl_1_bss_B40 = .bss:0x00000B40; // type:object size:0x4 data:4byte +lbl_1_bss_B44 = .bss:0x00000B44; // type:object size:0x28 data:4byte +lbl_1_bss_B6C = .bss:0x00000B6C; // type:object size:0x28 data:4byte +lbl_1_bss_B94 = .bss:0x00000B94; // type:object size:0x28 data:4byte +lbl_1_bss_BBC = .bss:0x00000BBC; // type:object size:0x28 data:4byte +lbl_1_bss_BE4 = .bss:0x00000BE4; // type:object size:0x28 data:4byte +lbl_1_bss_C0C = .bss:0x00000C0C; // type:object size:0x104 data:float +lbl_1_bss_D10 = .bss:0x00000D10; // type:object size:0x4 data:4byte +lbl_1_bss_D14 = .bss:0x00000D14; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_01/rels/mstory3Dll/splits.txt b/config/GMPE01_01/rels/mstory3Dll/splits.txt new file mode 100644 index 00000000..5251d4d5 --- /dev/null +++ b/config/GMPE01_01/rels/mstory3Dll/splits.txt @@ -0,0 +1,31 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory3Dll/main.c: + .text start:0x00000000 end:0x00006E34 + .rodata start:0x00000000 end:0x00000110 + .data start:0x00000000 end:0x00000130 + .bss start:0x00000000 end:0x00000058 + +REL/mstory3Dll/result_seq.c: + .text start:0x00006E34 end:0x000157F0 + .rodata start:0x00000110 end:0x00000418 + .data start:0x00000130 end:0x000007E0 + .bss start:0x00000058 end:0x000018D0 + +REL/mstory3Dll/result.c: + .text start:0x000157F0 end:0x0001DEF0 + .rodata start:0x00000418 end:0x000005D0 + .data start:0x000007E0 end:0x00000A90 + .bss start:0x000018D0 end:0x00001CE8 + +REL/mstory3Dll/win_effect.c: + .text start:0x0001DEF0 end:0x0001F118 + .rodata start:0x000005D0 end:0x00000644 + .data start:0x00000A90 end:0x00000AAB + .bss start:0x00001CE8 end:0x00001D50 diff --git a/config/GMPE01_01/rels/mstory3Dll/symbols.txt b/config/GMPE01_01/rels/mstory3Dll/symbols.txt new file mode 100644 index 00000000..3113f967 --- /dev/null +++ b/config/GMPE01_01/rels/mstory3Dll/symbols.txt @@ -0,0 +1,550 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2C8 +_prolog = .text:0x0000036C; // type:function size:0x54 scope:global +_epilog = .text:0x000003C0; // type:function size:0x4C scope:global +fn_1_40C = .text:0x0000040C; // type:function size:0xE4 +ObjectSetup = .text:0x000004F0; // type:function size:0xE4 +fn_1_5D4 = .text:0x000005D4; // type:function size:0x28 +fn_1_5FC = .text:0x000005FC; // type:function size:0x20 +fn_1_61C = .text:0x0000061C; // type:function size:0xD8 +fn_1_6F4 = .text:0x000006F4; // type:function size:0xC8 +fn_1_7BC = .text:0x000007BC; // type:function size:0xBC +fn_1_878 = .text:0x00000878; // type:function size:0xBC +fn_1_934 = .text:0x00000934; // type:function size:0x4 +fn_1_938 = .text:0x00000938; // type:function size:0x20 +fn_1_958 = .text:0x00000958; // type:function size:0x28 +fn_1_980 = .text:0x00000980; // type:function size:0x20 +fn_1_9A0 = .text:0x000009A0; // type:function size:0x24 +fn_1_9C4 = .text:0x000009C4; // type:function size:0x20 +fn_1_9E4 = .text:0x000009E4; // type:function size:0xA48 +fn_1_142C = .text:0x0000142C; // type:function size:0x1F8 +fn_1_1624 = .text:0x00001624; // type:function size:0x210 +fn_1_1834 = .text:0x00001834; // type:function size:0x1F0 +fn_1_1A24 = .text:0x00001A24; // type:function size:0x2C +fn_1_1A50 = .text:0x00001A50; // type:function size:0x60 +fn_1_1AB0 = .text:0x00001AB0; // type:function size:0x68 +fn_1_1B18 = .text:0x00001B18; // type:function size:0xAC +fn_1_1BC4 = .text:0x00001BC4; // type:function size:0xC4 +fn_1_1C88 = .text:0x00001C88; // type:function size:0xBC +fn_1_1D44 = .text:0x00001D44; // type:function size:0x34 +fn_1_1D78 = .text:0x00001D78; // type:function size:0x40 +fn_1_1DB8 = .text:0x00001DB8; // type:function size:0x70 +fn_1_1E28 = .text:0x00001E28; // type:function size:0x178 +fn_1_1FA0 = .text:0x00001FA0; // type:function size:0x2E0 +fn_1_2280 = .text:0x00002280; // type:function size:0x90 +fn_1_2310 = .text:0x00002310; // type:function size:0xC8 +fn_1_23D8 = .text:0x000023D8; // type:function size:0x48 +fn_1_2420 = .text:0x00002420; // type:function size:0x54 +fn_1_2474 = .text:0x00002474; // type:function size:0x3C0 +fn_1_2834 = .text:0x00002834; // type:function size:0x10 +fn_1_2844 = .text:0x00002844; // type:function size:0x10 +fn_1_2854 = .text:0x00002854; // type:function size:0xB8 +fn_1_290C = .text:0x0000290C; // type:function size:0x120 +fn_1_2A2C = .text:0x00002A2C; // type:function size:0x3A8 +fn_1_2DD4 = .text:0x00002DD4; // type:function size:0x7F4 +fn_1_35C8 = .text:0x000035C8; // type:function size:0x88 +fn_1_3650 = .text:0x00003650; // type:function size:0x94 +fn_1_36E4 = .text:0x000036E4; // type:function size:0x58 +fn_1_373C = .text:0x0000373C; // type:function size:0x8C +fn_1_37C8 = .text:0x000037C8; // type:function size:0xEC +fn_1_38B4 = .text:0x000038B4; // type:function size:0xC4 +fn_1_3978 = .text:0x00003978; // type:function size:0x3C +fn_1_39B4 = .text:0x000039B4; // type:function size:0x44 +fn_1_39F8 = .text:0x000039F8; // type:function size:0x26C +fn_1_3C64 = .text:0x00003C64; // type:function size:0x26C +fn_1_3ED0 = .text:0x00003ED0; // type:function size:0x27C +fn_1_414C = .text:0x0000414C; // type:function size:0x2B4 +fn_1_4400 = .text:0x00004400; // type:function size:0x46C +fn_1_486C = .text:0x0000486C; // type:function size:0x454 +fn_1_4CC0 = .text:0x00004CC0; // type:function size:0x48C +fn_1_514C = .text:0x0000514C; // type:function size:0x658 +fn_1_57A4 = .text:0x000057A4; // type:function size:0x4C4 +fn_1_5C68 = .text:0x00005C68; // type:function size:0x4FC +fn_1_6164 = .text:0x00006164; // type:function size:0x6C8 +fn_1_682C = .text:0x0000682C; // type:function size:0xC4 +fn_1_68F0 = .text:0x000068F0; // type:function size:0x188 +fn_1_6A78 = .text:0x00006A78; // type:function size:0x34 +fn_1_6AAC = .text:0x00006AAC; // type:function size:0x40 +fn_1_6AEC = .text:0x00006AEC; // type:function size:0xAC +fn_1_6B98 = .text:0x00006B98; // type:function size:0x1E8 +fn_1_6D80 = .text:0x00006D80; // type:function size:0xB4 +fn_1_6E34 = .text:0x00006E34; // type:function size:0x1D0 +fn_1_7004 = .text:0x00007004; // type:function size:0x394 +fn_1_7398 = .text:0x00007398; // type:function size:0x640 +fn_1_79D8 = .text:0x000079D8; // type:function size:0x4B0 +fn_1_7E88 = .text:0x00007E88; // type:function size:0x2C4 +fn_1_814C = .text:0x0000814C; // type:function size:0x118 +fn_1_8264 = .text:0x00008264; // type:function size:0x7C +fn_1_82E0 = .text:0x000082E0; // type:function size:0x8C +fn_1_836C = .text:0x0000836C; // type:function size:0xF0 +fn_1_845C = .text:0x0000845C; // type:function size:0x2FC +fn_1_8758 = .text:0x00008758; // type:function size:0x100 +fn_1_8858 = .text:0x00008858; // type:function size:0xF0 +fn_1_8948 = .text:0x00008948; // type:function size:0xF0 +fn_1_8A38 = .text:0x00008A38; // type:function size:0xF0 +fn_1_8B28 = .text:0x00008B28; // type:function size:0xF0 +fn_1_8C18 = .text:0x00008C18; // type:function size:0x7C +fn_1_8C94 = .text:0x00008C94; // type:function size:0x4AC +fn_1_9140 = .text:0x00009140; // type:function size:0x88 +fn_1_91C8 = .text:0x000091C8; // type:function size:0x58 +fn_1_9220 = .text:0x00009220; // type:function size:0x1B0 +fn_1_93D0 = .text:0x000093D0; // type:function size:0xB8 +fn_1_9488 = .text:0x00009488; // type:function size:0x228 +fn_1_96B0 = .text:0x000096B0; // type:function size:0xB8 +fn_1_9768 = .text:0x00009768; // type:function size:0x228 +fn_1_9990 = .text:0x00009990; // type:function size:0x78 +fn_1_9A08 = .text:0x00009A08; // type:function size:0x5C +fn_1_9A64 = .text:0x00009A64; // type:function size:0x8B0 +fn_1_A314 = .text:0x0000A314; // type:function size:0x1DC +fn_1_A4F0 = .text:0x0000A4F0; // type:function size:0x6BC +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0xAC4 +fn_1_B670 = .text:0x0000B670; // type:function size:0x118 +fn_1_B788 = .text:0x0000B788; // type:function size:0x6D4 +fn_1_BE5C = .text:0x0000BE5C; // type:function size:0x104 +fn_1_BF60 = .text:0x0000BF60; // type:function size:0x100 +fn_1_C060 = .text:0x0000C060; // type:function size:0xE0C +fn_1_CE6C = .text:0x0000CE6C; // type:function size:0x620 +fn_1_D48C = .text:0x0000D48C; // type:function size:0xAC +fn_1_D538 = .text:0x0000D538; // type:function size:0x1E0 +fn_1_D718 = .text:0x0000D718; // type:function size:0xC0 +fn_1_D7D8 = .text:0x0000D7D8; // type:function size:0x390 +fn_1_DB68 = .text:0x0000DB68; // type:function size:0x5F8 +fn_1_E160 = .text:0x0000E160; // type:function size:0x1BD0 +fn_1_FD30 = .text:0x0000FD30; // type:function size:0x150 +fn_1_FE80 = .text:0x0000FE80; // type:function size:0xFC +fn_1_FF7C = .text:0x0000FF7C; // type:function size:0x3F0 +fn_1_1036C = .text:0x0001036C; // type:function size:0xA08 +fn_1_10D74 = .text:0x00010D74; // type:function size:0xA20 +fn_1_11794 = .text:0x00011794; // type:function size:0xA0 +fn_1_11834 = .text:0x00011834; // type:function size:0xBA4 +fn_1_123D8 = .text:0x000123D8; // type:function size:0x44 +fn_1_1241C = .text:0x0001241C; // type:function size:0x4 +fn_1_12420 = .text:0x00012420; // type:function size:0x678 +fn_1_12A98 = .text:0x00012A98; // type:function size:0x170 +fn_1_12C08 = .text:0x00012C08; // type:function size:0x1A4 +fn_1_12DAC = .text:0x00012DAC; // type:function size:0x2FC +fn_1_130A8 = .text:0x000130A8; // type:function size:0xD4 +fn_1_1317C = .text:0x0001317C; // type:function size:0x130 +fn_1_132AC = .text:0x000132AC; // type:function size:0x65C +fn_1_13908 = .text:0x00013908; // type:function size:0x130 +fn_1_13A38 = .text:0x00013A38; // type:function size:0x4 +fn_1_13A3C = .text:0x00013A3C; // type:function size:0x23C +fn_1_13C78 = .text:0x00013C78; // type:function size:0xC0 +fn_1_13D38 = .text:0x00013D38; // type:function size:0x60 +fn_1_13D98 = .text:0x00013D98; // type:function size:0x308 +fn_1_140A0 = .text:0x000140A0; // type:function size:0x38C +fn_1_1442C = .text:0x0001442C; // type:function size:0x140 +fn_1_1456C = .text:0x0001456C; // type:function size:0x118 +fn_1_14684 = .text:0x00014684; // type:function size:0x7C +fn_1_14700 = .text:0x00014700; // type:function size:0x48 +fn_1_14748 = .text:0x00014748; // type:function size:0x724 +fn_1_14E6C = .text:0x00014E6C; // type:function size:0x114 +fn_1_14F80 = .text:0x00014F80; // type:function size:0x54 +fn_1_14FD4 = .text:0x00014FD4; // type:function size:0x31C +fn_1_152F0 = .text:0x000152F0; // type:function size:0x160 +fn_1_15450 = .text:0x00015450; // type:function size:0x3A0 +fn_1_157F0 = .text:0x000157F0; // type:function size:0x1B4 +fn_1_159A4 = .text:0x000159A4; // type:function size:0x268 +fn_1_15C0C = .text:0x00015C0C; // type:function size:0xFC +fn_1_15D08 = .text:0x00015D08; // type:function size:0xC0 +fn_1_15DC8 = .text:0x00015DC8; // type:function size:0x3F0 +fn_1_161B8 = .text:0x000161B8; // type:function size:0x3BC +fn_1_16574 = .text:0x00016574; // type:function size:0x54 +fn_1_165C8 = .text:0x000165C8; // type:function size:0x35C +fn_1_16924 = .text:0x00016924; // type:function size:0x1B0 +fn_1_16AD4 = .text:0x00016AD4; // type:function size:0x400 +fn_1_16ED4 = .text:0x00016ED4; // type:function size:0x258 +fn_1_1712C = .text:0x0001712C; // type:function size:0x160 +fn_1_1728C = .text:0x0001728C; // type:function size:0x210 +fn_1_17484 = .text:0x0001749C; // type:function size:0xEC +fn_1_17570 = .text:0x00017588; // type:function size:0x850 +fn_1_17DC0 = .text:0x00017DD8; // type:function size:0x2C0 +fn_1_18080 = .text:0x00018098; // type:function size:0x9C +fn_1_1811C = .text:0x00018134; // type:function size:0x218 +fn_1_18334 = .text:0x0001834C; // type:function size:0x1B4 +fn_1_184E8 = .text:0x00018500; // type:function size:0x70 +fn_1_18558 = .text:0x00018570; // type:function size:0x110 +fn_1_18668 = .text:0x00018680; // type:function size:0x694 +fn_1_18CFC = .text:0x00018D14; // type:function size:0x29C +fn_1_18F98 = .text:0x00018FB0; // type:function size:0x1AC +fn_1_19144 = .text:0x0001915C; // type:function size:0xD0 +fn_1_19214 = .text:0x0001922C; // type:function size:0x28C +fn_1_194A0 = .text:0x000194B8; // type:function size:0xF0 +fn_1_19590 = .text:0x000195A8; // type:function size:0x224 +fn_1_197B4 = .text:0x000197CC; // type:function size:0x854 +fn_1_1A008 = .text:0x0001A020; // type:function size:0x1EF4 +fn_1_1BEFC = .text:0x0001BF14; // type:function size:0x3F8 +fn_1_1C2F4 = .text:0x0001C30C; // type:function size:0x16C +fn_1_1C460 = .text:0x0001C478; // type:function size:0xD4 +fn_1_1C534 = .text:0x0001C54C; // type:function size:0x3E0 +fn_1_1C914 = .text:0x0001C92C; // type:function size:0x184 +fn_1_1CA98 = .text:0x0001CAB0; // type:function size:0xE4 +fn_1_1CB7C = .text:0x0001CB94; // type:function size:0xE0 +fn_1_1CC5C = .text:0x0001CC74; // type:function size:0x104 +fn_1_1CD60 = .text:0x0001CD78; // type:function size:0x90 +fn_1_1CDF0 = .text:0x0001CE08; // type:function size:0x334 +fn_1_1D124 = .text:0x0001D13C; // type:function size:0x518 +fn_1_1D63C = .text:0x0001D654; // type:function size:0x140 +fn_1_1D77C = .text:0x0001D794; // type:function size:0x150 +fn_1_1D8CC = .text:0x0001D8E4; // type:function size:0x98 +fn_1_1D964 = .text:0x0001D97C; // type:function size:0x100 +fn_1_1DA64 = .text:0x0001DA7C; // type:function size:0x48 +fn_1_1DAAC = .text:0x0001DAC4; // type:function size:0x3A0 +fn_1_1DE4C = .text:0x0001DE64; // type:function size:0x8C +fn_1_1DED8 = .text:0x0001DEF0; // type:function size:0x21C +fn_1_1E0F4 = .text:0x0001E10C; // type:function size:0x14 +fn_1_1E108 = .text:0x0001E120; // type:function size:0x10 +fn_1_1E118 = .text:0x0001E130; // type:function size:0x14 +fn_1_1E12C = .text:0x0001E144; // type:function size:0x10 +fn_1_1E13C = .text:0x0001E154; // type:function size:0x41C +fn_1_1E558 = .text:0x0001E570; // type:function size:0x2C8 +fn_1_1E820 = .text:0x0001E838; // type:function size:0x8E0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 scope:local data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0xD scope:local data:string +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 scope:local data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A scope:local data:string +lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A scope:local data:string +lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE scope:local data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float +lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 +lbl_1_data_200 = .data:0x00000200; // type:object size:0x50 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 scope:local data:string +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 scope:local data:string +lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 scope:local data:string +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 scope:local data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 scope:local data:string +lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D scope:local data:string +lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C scope:local data:string +lbl_1_data_364 = .data:0x00000364; // type:object size:0x8 data:4byte +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC +lbl_1_data_378 = .data:0x00000378; // type:object size:0xF scope:local data:string +lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 scope:local data:string +jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 scope:local data:string +lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 scope:local data:string +lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 scope:local data:string +lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 scope:local data:string +lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 scope:local data:string +lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 scope:local data:string +lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 scope:local data:string +lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x12 scope:local +lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 +lbl_1_data_78C = .data:0x0000078C; // type:object size:0x5 +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 scope:local data:string +lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 scope:local data:string +lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 scope:local data:string +lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 scope:local data:string +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 scope:local data:string +lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 scope:local data:string +lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 scope:local data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF scope:local data:string +lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C scope:local data:string +lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D scope:local data:string +lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 scope:local data:string +lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 scope:local data:string +lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 scope:local data:string +lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 scope:local data:string +lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 scope:local data:string +lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A scope:local data:string +lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A scope:local data:string +lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x1B scope:local +lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 scope:local data:string +lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:float +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:float +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:float +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:float +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:float +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x1340 +lbl_1_bss_1408 = .bss:0x00001408; // type:object size:0x18 +lbl_1_bss_1420 = .bss:0x00001420; // type:object size:0x4 data:4byte +lbl_1_bss_1424 = .bss:0x00001424; // type:object size:0x4 data:float +lbl_1_bss_1428 = .bss:0x00001428; // type:object size:0x10 data:4byte +lbl_1_bss_1438 = .bss:0x00001438; // type:object size:0x10 +lbl_1_bss_1448 = .bss:0x00001448; // type:object size:0x10 data:4byte +lbl_1_bss_1458 = .bss:0x00001458; // type:object size:0x10 data:4byte +lbl_1_bss_1468 = .bss:0x00001468; // type:object size:0x28 data:4byte +lbl_1_bss_1490 = .bss:0x00001490; // type:object size:0xA0 data:4byte +lbl_1_bss_1530 = .bss:0x00001530; // type:object size:0x28 data:4byte +lbl_1_bss_1558 = .bss:0x00001558; // type:object size:0x28 data:4byte +lbl_1_bss_1580 = .bss:0x00001580; // type:object size:0x350 data:4byte +lbl_1_bss_18D0 = .bss:0x000018D0; // type:object size:0x4 data:4byte +lbl_1_bss_18D4 = .bss:0x000018D4; // type:object size:0x4 data:4byte +lbl_1_bss_18D8 = .bss:0x000018D8; // type:object size:0xC data:4byte +lbl_1_bss_18E4 = .bss:0x000018E4; // type:object size:0x8 data:4byte +lbl_1_bss_18EC = .bss:0x000018EC; // type:object size:0x8 data:4byte +lbl_1_bss_18F4 = .bss:0x000018F4; // type:object size:0xA0 +lbl_1_bss_1994 = .bss:0x00001994; // type:object size:0x28 data:4byte +lbl_1_bss_19BC = .bss:0x000019BC; // type:object size:0x28 data:4byte +lbl_1_bss_19E4 = .bss:0x000019E4; // type:object size:0x28 data:4byte +lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2DC data:float +lbl_1_bss_1CE8 = .bss:0x00001CE8; // type:object size:0x2 data:2byte +lbl_1_bss_1CEC = .bss:0x00001CEC; // type:object size:0x4 data:4byte +lbl_1_bss_1CF0 = .bss:0x00001CF0; // type:object size:0x4 data:4byte +lbl_1_bss_1CF4 = .bss:0x00001CF4; // type:object size:0x4 data:4byte +lbl_1_bss_1CF8 = .bss:0x00001CF8; // type:object size:0x58 data:2byte diff --git a/config/GMPE01_01/rels/mstoryDll/splits.txt b/config/GMPE01_01/rels/mstoryDll/splits.txt new file mode 100644 index 00000000..7378f74e --- /dev/null +++ b/config/GMPE01_01/rels/mstoryDll/splits.txt @@ -0,0 +1,43 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141B8 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPE01_01/rels/mstoryDll/symbols.txt b/config/GMPE01_01/rels/mstoryDll/symbols.txt new file mode 100644 index 00000000..225344ab --- /dev/null +++ b/config/GMPE01_01/rels/mstoryDll/symbols.txt @@ -0,0 +1,500 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x344 +_prolog = .text:0x000003E8; // type:function size:0x54 scope:global +_epilog = .text:0x0000043C; // type:function size:0x4C scope:global +fn_1_488 = .text:0x00000488; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 +fn_1_828 = .text:0x00000828; // type:function size:0x28 +fn_1_850 = .text:0x00000850; // type:function size:0x20 +fn_1_870 = .text:0x00000870; // type:function size:0xD8 +fn_1_948 = .text:0x00000948; // type:function size:0xC8 +fn_1_A10 = .text:0x00000A10; // type:function size:0xBC +fn_1_ACC = .text:0x00000ACC; // type:function size:0xBC +fn_1_B88 = .text:0x00000B88; // type:function size:0x4 +fn_1_B8C = .text:0x00000B8C; // type:function size:0x20 +fn_1_BAC = .text:0x00000BAC; // type:function size:0x28 +fn_1_BD4 = .text:0x00000BD4; // type:function size:0x20 +fn_1_BF4 = .text:0x00000BF4; // type:function size:0x24 +fn_1_C18 = .text:0x00000C18; // type:function size:0x20 +fn_1_C38 = .text:0x00000C38; // type:function size:0xA48 +fn_1_1680 = .text:0x00001680; // type:function size:0x1B4 +fn_1_1834 = .text:0x00001834; // type:function size:0x1D0 +fn_1_1A04 = .text:0x00001A04; // type:function size:0x60 +fn_1_1A64 = .text:0x00001A64; // type:function size:0x68 +fn_1_1ACC = .text:0x00001ACC; // type:function size:0xAC +fn_1_1B78 = .text:0x00001B78; // type:function size:0xBC +fn_1_1C34 = .text:0x00001C34; // type:function size:0xB4 +fn_1_1CE8 = .text:0x00001CE8; // type:function size:0x34 +fn_1_1D1C = .text:0x00001D1C; // type:function size:0x40 +fn_1_1D5C = .text:0x00001D5C; // type:function size:0x70 +fn_1_1DCC = .text:0x00001DCC; // type:function size:0x178 +fn_1_1F44 = .text:0x00001F44; // type:function size:0x2E0 +fn_1_2224 = .text:0x00002224; // type:function size:0x90 +fn_1_22B4 = .text:0x000022B4; // type:function size:0x48 +fn_1_22FC = .text:0x000022FC; // type:function size:0x54 +fn_1_2350 = .text:0x00002350; // type:function size:0x3C0 +fn_1_2710 = .text:0x00002710; // type:function size:0x10 +fn_1_2720 = .text:0x00002720; // type:function size:0x10 +fn_1_2730 = .text:0x00002730; // type:function size:0xB8 +fn_1_27E8 = .text:0x000027E8; // type:function size:0x120 +fn_1_2908 = .text:0x00002908; // type:function size:0x3A8 +fn_1_2CB0 = .text:0x00002CB0; // type:function size:0x7F4 +fn_1_34A4 = .text:0x000034A4; // type:function size:0x88 +fn_1_352C = .text:0x0000352C; // type:function size:0x94 +fn_1_35C0 = .text:0x000035C0; // type:function size:0x58 +fn_1_3618 = .text:0x00003618; // type:function size:0xEC +fn_1_3704 = .text:0x00003704; // type:function size:0xC4 +fn_1_37C8 = .text:0x000037C8; // type:function size:0x3C +fn_1_3804 = .text:0x00003804; // type:function size:0x44 +fn_1_3848 = .text:0x00003848; // type:function size:0x274 +fn_1_3ABC = .text:0x00003ABC; // type:function size:0x26C +fn_1_3D28 = .text:0x00003D28; // type:function size:0x22C +fn_1_3F54 = .text:0x00003F54; // type:function size:0x27C +fn_1_41D0 = .text:0x000041D0; // type:function size:0x2B4 +fn_1_4484 = .text:0x00004484; // type:function size:0x46C +fn_1_48F0 = .text:0x000048F0; // type:function size:0x454 +fn_1_4D44 = .text:0x00004D44; // type:function size:0x48C +fn_1_51D0 = .text:0x000051D0; // type:function size:0x658 +fn_1_5828 = .text:0x00005828; // type:function size:0x4C4 +fn_1_5CEC = .text:0x00005CEC; // type:function size:0x4FC +fn_1_61E8 = .text:0x000061E8; // type:function size:0x6C8 +fn_1_68B0 = .text:0x000068B0; // type:function size:0xC4 +fn_1_6974 = .text:0x00006974; // type:function size:0x188 +fn_1_6AFC = .text:0x00006AFC; // type:function size:0x34 +fn_1_6B30 = .text:0x00006B30; // type:function size:0x40 +fn_1_6B70 = .text:0x00006B70; // type:function size:0xAC +fn_1_6C1C = .text:0x00006C1C; // type:function size:0x1E8 +fn_1_6E04 = .text:0x00006E04; // type:function size:0xB4 +fn_1_6EB8 = .text:0x00006EB8; // type:function size:0x170 +fn_1_7028 = .text:0x00007028; // type:function size:0x68 +fn_1_7090 = .text:0x00007090; // type:function size:0xA4 +fn_1_7134 = .text:0x00007134; // type:function size:0x1E8 +fn_1_731C = .text:0x0000731C; // type:function size:0x69C +fn_1_79B8 = .text:0x000079B8; // type:function size:0x128 +fn_1_7AE0 = .text:0x00007AE0; // type:function size:0x390 +fn_1_7E70 = .text:0x00007E70; // type:function size:0x5C +fn_1_7ECC = .text:0x00007ECC; // type:function size:0x1C4 +fn_1_8090 = .text:0x00008090; // type:function size:0x320 +fn_1_83B0 = .text:0x000083B0; // type:function size:0x58 +fn_1_8408 = .text:0x00008408; // type:function size:0x3D4 +fn_1_87DC = .text:0x000087DC; // type:function size:0x268 +fn_1_8A44 = .text:0x00008A44; // type:function size:0x9C +fn_1_8AE0 = .text:0x00008AE0; // type:function size:0x2E0 +fn_1_8DC0 = .text:0x00008DC0; // type:function size:0xAC +fn_1_8E6C = .text:0x00008E6C; // type:function size:0xFC +fn_1_8F68 = .text:0x00008F68; // type:function size:0x36C +fn_1_92D4 = .text:0x000092D4; // type:function size:0x134 +fn_1_9408 = .text:0x00009408; // type:function size:0x310 +fn_1_9718 = .text:0x00009718; // type:function size:0x18C +fn_1_98A4 = .text:0x000098A4; // type:function size:0x88 +fn_1_992C = .text:0x0000992C; // type:function size:0x3DC +fn_1_9D08 = .text:0x00009D08; // type:function size:0x300 +fn_1_A008 = .text:0x0000A008; // type:function size:0xE4 +fn_1_A0EC = .text:0x0000A0EC; // type:function size:0x38C +fn_1_A478 = .text:0x0000A478; // type:function size:0x8C +fn_1_A504 = .text:0x0000A504; // type:function size:0xF0 +fn_1_A5F4 = .text:0x0000A5F4; // type:function size:0x23C +fn_1_A830 = .text:0x0000A830; // type:function size:0xC8 +fn_1_A8F8 = .text:0x0000A8F8; // type:function size:0x2B4 +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0x150 +fn_1_ACFC = .text:0x0000ACFC; // type:function size:0x134 +fn_1_AE30 = .text:0x0000AE30; // type:function size:0x8C +fn_1_AEBC = .text:0x0000AEBC; // type:function size:0x374 +fn_1_B230 = .text:0x0000B230; // type:function size:0x5C +fn_1_B28C = .text:0x0000B28C; // type:function size:0x214 +fn_1_B4A0 = .text:0x0000B4A0; // type:function size:0xE8 +fn_1_B588 = .text:0x0000B588; // type:function size:0xE8 +fn_1_B670 = .text:0x0000B670; // type:function size:0x11C +fn_1_B78C = .text:0x0000B78C; // type:function size:0x13C +fn_1_B8C8 = .text:0x0000B8C8; // type:function size:0x4 +fn_1_B8CC = .text:0x0000B8CC; // type:function size:0x104 +fn_1_B9D0 = .text:0x0000B9D0; // type:function size:0x208 +fn_1_BBD8 = .text:0x0000BBD8; // type:function size:0x788 +fn_1_C360 = .text:0x0000C360; // type:function size:0xB4 +fn_1_C414 = .text:0x0000C414; // type:function size:0x2F4 +fn_1_C708 = .text:0x0000C708; // type:function size:0xBC +fn_1_C7C4 = .text:0x0000C7C4; // type:function size:0x384 +fn_1_CB48 = .text:0x0000CB48; // type:function size:0x300 +fn_1_CE48 = .text:0x0000CE48; // type:function size:0xAC +fn_1_CEF4 = .text:0x0000CEF4; // type:function size:0xE4 +fn_1_CFD8 = .text:0x0000CFD8; // type:function size:0xC4 +fn_1_D09C = .text:0x0000D09C; // type:function size:0xE4 +fn_1_D180 = .text:0x0000D180; // type:function size:0x3FC +fn_1_D57C = .text:0x0000D57C; // type:function size:0x134 +fn_1_D6B0 = .text:0x0000D6B0; // type:function size:0x2F8 +fn_1_D9A8 = .text:0x0000D9A8; // type:function size:0xFC +fn_1_DAA4 = .text:0x0000DAA4; // type:function size:0x164 +fn_1_DC08 = .text:0x0000DC08; // type:function size:0x118 +fn_1_DD20 = .text:0x0000DD20; // type:function size:0xE4 +fn_1_DE04 = .text:0x0000DE04; // type:function size:0x424 +fn_1_E228 = .text:0x0000E228; // type:function size:0x8C +fn_1_E2B4 = .text:0x0000E2B4; // type:function size:0x130 +fn_1_E3E4 = .text:0x0000E3E4; // type:function size:0x23C +fn_1_E620 = .text:0x0000E620; // type:function size:0xF0 +fn_1_E710 = .text:0x0000E710; // type:function size:0x118 +fn_1_E828 = .text:0x0000E828; // type:function size:0x8C +fn_1_E8B4 = .text:0x0000E8B4; // type:function size:0x34C +fn_1_EC00 = .text:0x0000EC00; // type:function size:0x5C +fn_1_EC5C = .text:0x0000EC5C; // type:function size:0x384 +fn_1_EFE0 = .text:0x0000EFE0; // type:function size:0x70 +fn_1_F050 = .text:0x0000F050; // type:function size:0x14C +fn_1_F19C = .text:0x0000F19C; // type:function size:0x5E4 +fn_1_F780 = .text:0x0000F780; // type:function size:0xEC +fn_1_F86C = .text:0x0000F86C; // type:function size:0xA4 +fn_1_F910 = .text:0x0000F910; // type:function size:0x1D4 +fn_1_FAE4 = .text:0x0000FAE4; // type:function size:0x238 +fn_1_FD1C = .text:0x0000FD1C; // type:function size:0xB4 +fn_1_FDD0 = .text:0x0000FDD0; // type:function size:0x4C8 +fn_1_10298 = .text:0x00010298; // type:function size:0xEC +fn_1_10384 = .text:0x00010384; // type:function size:0xCC +fn_1_10450 = .text:0x00010450; // type:function size:0xFC +fn_1_1054C = .text:0x0001054C; // type:function size:0xAC +fn_1_105F8 = .text:0x000105F8; // type:function size:0x300 +fn_1_108F8 = .text:0x000108F8; // type:function size:0x374 +fn_1_10C6C = .text:0x00010C6C; // type:function size:0xE4 +fn_1_10D50 = .text:0x00010D50; // type:function size:0x1D4 +fn_1_10F24 = .text:0x00010F24; // type:function size:0xAC +fn_1_10FD0 = .text:0x00010FD0; // type:function size:0x2D0 +fn_1_112A0 = .text:0x000112A0; // type:function size:0x8C +fn_1_1132C = .text:0x0001132C; // type:function size:0xF0 +fn_1_1141C = .text:0x0001141C; // type:function size:0x118 +fn_1_11534 = .text:0x00011534; // type:function size:0xF0 +fn_1_11624 = .text:0x00011624; // type:function size:0x10C +fn_1_11730 = .text:0x00011730; // type:function size:0x35C +fn_1_11A8C = .text:0x00011A8C; // type:function size:0x5C +fn_1_11AE8 = .text:0x00011AE8; // type:function size:0x184 +fn_1_11C6C = .text:0x00011C6C; // type:function size:0x16C +fn_1_11DD8 = .text:0x00011DD8; // type:function size:0xEC +fn_1_11EC4 = .text:0x00011EC4; // type:function size:0x64 +fn_1_11F28 = .text:0x00011F28; // type:function size:0x4 +fn_1_11F2C = .text:0x00011F2C; // type:function size:0x144 +fn_1_12070 = .text:0x00012070; // type:function size:0x5C0 +fn_1_12630 = .text:0x00012630; // type:function size:0xB4 +fn_1_126E4 = .text:0x000126E4; // type:function size:0x234 +fn_1_12918 = .text:0x00012918; // type:function size:0xBC +fn_1_129D4 = .text:0x000129D4; // type:function size:0x2C0 +fn_1_12C94 = .text:0x00012C94; // type:function size:0xE4 +fn_1_12D78 = .text:0x00012D78; // type:function size:0x1A8 +fn_1_12F20 = .text:0x00012F20; // type:function size:0x88 +fn_1_12FA8 = .text:0x00012FA8; // type:function size:0x118 +fn_1_130C0 = .text:0x000130C0; // type:function size:0x22C +fn_1_132EC = .text:0x000132EC; // type:function size:0x284 +fn_1_13570 = .text:0x00013570; // type:function size:0x310 +fn_1_13880 = .text:0x00013880; // type:function size:0x8C +fn_1_1390C = .text:0x0001390C; // type:function size:0x23C +fn_1_13B48 = .text:0x00013B48; // type:function size:0xEC +fn_1_13C34 = .text:0x00013C34; // type:function size:0x210 +fn_1_13E2C = .text:0x00013E44; // type:function size:0x324 +fn_1_14150 = .text:0x00014168; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE scope:local data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A scope:local data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0x30 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 scope:local data:string +lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 +lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 +lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 scope:local data:string +lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A scope:local data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 +lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x28 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x28 data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x104 data:4byte +lbl_1_bss_2C8 = .bss:0x000002C8; // type:object size:0x4 data:4byte +lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x4 data:4byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x60 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x8 data:4byte +lbl_1_bss_338 = .bss:0x00000338; // type:object size:0xA0 +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x28 data:4byte +lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x28 data:4byte +lbl_1_bss_428 = .bss:0x00000428; // type:object size:0x28 data:4byte +lbl_1_bss_450 = .bss:0x00000450; // type:object size:0x108 data:float +lbl_1_bss_558 = .bss:0x00000558; // type:object size:0x4 data:4byte +lbl_1_bss_55C = .bss:0x0000055C; // type:object size:0x4 data:4byte +lbl_1_bss_560 = .bss:0x00000560; // type:object size:0x8 data:4byte +lbl_1_bss_568 = .bss:0x00000568; // type:object size:0x28 data:4byte +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0x28 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x28 data:4byte +lbl_1_bss_5E0 = .bss:0x000005E0; // type:object size:0x28 data:4byte +lbl_1_bss_608 = .bss:0x00000608; // type:object size:0x108 data:4byte +lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 data:4byte +lbl_1_bss_714 = .bss:0x00000714; // type:object size:0x28 data:4byte +lbl_1_bss_73C = .bss:0x0000073C; // type:object size:0x28 data:4byte +lbl_1_bss_764 = .bss:0x00000764; // type:object size:0x28 data:4byte +lbl_1_bss_78C = .bss:0x0000078C; // type:object size:0x28 data:4byte +lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x104 data:4byte +lbl_1_bss_8B8 = .bss:0x000008B8; // type:object size:0x4 data:4byte +lbl_1_bss_8BC = .bss:0x000008BC; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_01/splits.txt b/config/GMPE01_01/splits.txt new file mode 100644 index 00000000..0c85aae7 --- /dev/null +++ b/config/GMPE01_01/splits.txt @@ -0,0 +1,1450 @@ +Sections: + .init type:code align:4 + extab type:rodata align:32 + extabindex type:rodata align:32 + .text type:code align:8 + .ctors type:rodata align:32 + .dtors type:rodata align:32 + .rodata type:rodata align:32 + .data type:data align:32 + .bss type:bss align:32 + .sdata type:data align:4 + .sbss type:bss align:8 + .sdata2 type:rodata align:32 + .sbss2 type:bss align:16 + +game/main.c: + .text start:0x800057C0 end:0x80005A5C + .data start:0x8011EDE0 end:0x8011EDF0 + .sdata start:0x801D3420 end:0x801D3430 + .sbss start:0x801D3A00 end:0x801D3A58 + .sdata2 start:0x801D4960 end:0x801D4968 + +game/pad.c: + .text start:0x80005A5C end:0x80006478 + .data start:0x8011EDF0 end:0x8011EE00 + .bss start:0x80142800 end:0x80142840 + .sbss start:0x801D3A58 end:0x801D3AE0 + +game/dvd.c: + .text start:0x80006478 end:0x80006E38 + .data start:0x8011EE00 end:0x8011EF58 + .sdata start:0x801D3430 end:0x801D3438 + .sbss start:0x801D3AE0 end:0x801D3AE8 + +game/data.c: + .text start:0x80006E38 end:0x80009400 + .data start:0x8011EF58 end:0x8011FDE0 + .bss start:0x80142840 end:0x80145640 + .sdata start:0x801D3438 end:0x801D3448 + .sbss start:0x801D3AE8 end:0x801D3AF8 + +game/decode.c: + .text start:0x80009400 end:0x80009AFC + .data start:0x8011FDE0 end:0x8011FE00 + .bss start:0x80145640 end:0x80145A40 + +game/font.c: + .data start:0x8011FE00 end:0x80121E00 + +game/init.c: + .text start:0x80009AFC end:0x8000A464 + .data start:0x80121E00 end:0x80121F50 + .bss start:0x80145A40 end:0x80145A80 + .sdata start:0x801D3448 end:0x801D3460 + .sbss start:0x801D3AF8 end:0x801D3B28 + .sdata2 start:0x801D4968 end:0x801D4978 + +game/jmp.c: + .text start:0x8000A464 end:0x8000A558 + +game/malloc.c: + .text start:0x8000A558 end:0x8000A938 + .data start:0x80121F50 end:0x80121FC8 + .bss start:0x80145A80 end:0x80145A98 + +game/memory.c: + .text start:0x8000A938 end:0x8000AEF0 + .data start:0x80121FC8 end:0x80122140 + +game/printfunc.c: + .text start:0x8000AEF0 end:0x8000C4A4 + .data start:0x80122140 end:0x80122180 + .bss start:0x80145A98 end:0x8014C398 + .sbss start:0x801D3B28 end:0x801D3B38 + .sdata2 start:0x801D4978 end:0x801D49C8 + +game/process.c: + .text start:0x8000C4A4 end:0x8000D348 + .data start:0x80122180 end:0x801221D0 + .bss start:0x8014C398 end:0x8014C490 + .sbss start:0x801D3B38 end:0x801D3B48 + +game/sprman.c: + .text start:0x8000D348 end:0x8000F6A0 + .rodata start:0x8011DD00 end:0x8011DD10 + .data start:0x801221D0 end:0x801222F0 + .bss start:0x8014C490 end:0x8015C690 + .sdata start:0x801D3460 end:0x801D3470 + .sbss start:0x801D3B48 end:0x801D3B50 + .sdata2 start:0x801D49C8 end:0x801D49F0 + +game/sprput.c: + .text start:0x8000F6A0 end:0x80010B30 + .rodata start:0x8011DD10 end:0x8011DD20 + .data start:0x801222F0 end:0x80122320 + .bss start:0x8015C690 end:0x8015C6C0 + .sbss start:0x801D3B50 end:0x801D3B58 + .sdata2 start:0x801D49F0 end:0x801D4A28 + +game/hsfload.c: + .text start:0x80010B30 end:0x80014018 + .data start:0x80122320 end:0x80122390 + .bss start:0x8015C6C0 end:0x8015CC80 + .sbss start:0x801D3B58 end:0x801D3B90 + +game/hsfdraw.c: + .text start:0x80014018 end:0x8001F9AC + .rodata start:0x8011DD20 end:0x8011DD30 + .data start:0x80122390 end:0x801225A0 + .bss start:0x8015CC80 end:0x801677C0 + .sdata start:0x801D3470 end:0x801D3488 + .sbss start:0x801D3B90 end:0x801D3C30 + .sdata2 start:0x801D4A28 end:0x801D4AB0 + +game/hsfman.c: + .text start:0x8001F9AC end:0x800250E8 + .data start:0x801225A0 end:0x8012D658 + .bss start:0x801677C0 end:0x8018D3D0 + .sbss start:0x801D3C30 end:0x801D3C60 + .sdata2 start:0x801D4AB0 end:0x801D4B10 + .sbss2 start:0x801D6BE0 end:0x801D6BE8 + +game/hsfmotion.c: + .text start:0x800250E8 end:0x80028B04 + .data start:0x8012D658 end:0x8012D838 + .bss start:0x8018D3D0 end:0x8018DBD0 + .sbss start:0x801D3C60 end:0x801D3C68 + .sdata2 start:0x801D4B10 end:0x801D4B60 + +game/hsfanim.c: + .text start:0x80028B04 end:0x8002CB74 + .data start:0x8012D838 end:0x8012D8F8 + .bss start:0x8018DBD0 end:0x8018F790 + .sdata2 start:0x801D4B60 end:0x801D4BE8 + +game/hsfex.c: + .text start:0x8002CB74 end:0x8002E74C + .data start:0x8012D8F8 end:0x8012D918 + .sdata2 start:0x801D4BE8 end:0x801D4C78 + +game/perf.c: + .text start:0x8002E74C end:0x8002EBD8 + .bss start:0x8018F790 end:0x8018FB38 + .sdata start:0x801D3488 end:0x801D3498 + .sbss start:0x801D3C68 end:0x801D3CC0 + +game/objmain.c: + .text start:0x8002EBD8 end:0x8002FF4C + .data start:0x8012D918 end:0x8012DCC8 + .bss start:0x8018FB38 end:0x8018FBF8 + .sdata start:0x801D3498 end:0x801D34A0 + .sbss start:0x801D3CC0 end:0x801D3CF0 + .sdata2 start:0x801D4C78 end:0x801D4CA0 + +game/fault.c: + .text start:0x8002FF4C end:0x800308B8 + .data start:0x8012DCC8 end:0x8012E4F0 + .bss start:0x8018FBF8 end:0x8018FC10 + .sdata start:0x801D34A0 end:0x801D34B0 + .sbss start:0x801D3CF0 end:0x801D3D00 + +game/gamework.c: + .text start:0x800308B8 end:0x800315BC + .rodata start:0x8011DD30 end:0x8011DD50 + .bss start:0x8018FC10 end:0x80190008 + +game/objsysobj.c: + .text start:0x800315BC end:0x80031DB4 + .bss start:0x80190008 end:0x801901E0 + .sbss start:0x801D3D00 end:0x801D3D08 + .sdata2 start:0x801D4CA0 end:0x801D4CB0 + +game/objdll.c: + .text start:0x80031DB4 end:0x800325F4 + .data start:0x8012E4F0 end:0x8012E988 + .bss start:0x801901E0 end:0x80190230 + .sbss start:0x801D3D08 end:0x801D3D10 + +game/frand.c: + .text start:0x800325F4 end:0x80032830 + .sbss start:0x801D3D10 end:0x801D3D18 + .sdata2 start:0x801D4CB0 end:0x801D4CC0 + +game/audio.c: + .text start:0x80032830 end:0x80033EEC + .data start:0x8012E988 end:0x8012F130 + .bss start:0x80190230 end:0x80190450 + .sdata start:0x801D34B0 end:0x801D34B8 + .sbss start:0x801D3D18 end:0x801D3D48 + .sdata2 start:0x801D4CC0 end:0x801D4CD0 + +game/EnvelopeExec.c: + .text start:0x80033EEC end:0x800353AC + .sbss start:0x801D3D48 end:0x801D3D78 + .sdata2 start:0x801D4CD0 end:0x801D4CE8 + +game/minigame_seq.c: + .text start:0x800353AC end:0x8003F8B8 + .data start:0x8012F130 end:0x8012F790 + .bss start:0x80190450 end:0x80190860 + .sdata start:0x801D34B8 end:0x801D35C0 + .sbss start:0x801D3D78 end:0x801D3D98 + .sdata2 start:0x801D4CE8 end:0x801D4EA8 + +game/ovllist.c: + .data start:0x8012F790 end:0x80130100 + +game/esprite.c: + .text start:0x8003F8B8 end:0x8003FF68 + .bss start:0x80190860 end:0x80192060 + .sbss start:0x801D3D98 end:0x801D3DA0 + +game/code_8003FF68.c: + .text start:0x8003FF68 end:0x80040500 + .data start:0x80130100 end:0x80130120 + .bss start:0x80192060 end:0x80192360 + .sdata start:0x801D35C0 end:0x801D35E0 + .sbss start:0x801D3DA0 end:0x801D3DA8 + .sdata2 start:0x801D4EA8 end:0x801D4EC0 + +game/ClusterExec.c: + .text start:0x80040500 end:0x80040D60 + .sdata2 start:0x801D4EC0 end:0x801D4ED0 + +game/ShapeExec.c: + .text start:0x80040D60 end:0x80041170 + .sdata2 start:0x801D4ED0 end:0x801D4EE0 + +game/wipe.c: + .text start:0x80041170 end:0x8004207C + .data start:0x80130120 end:0x80130138 + .bss start:0x80192360 end:0x801923C0 + .sdata start:0x801D35E0 end:0x801D35E8 + .sbss start:0x801D3DA8 end:0x801D3DB0 + .sdata2 start:0x801D4EE0 end:0x801D4F08 + +game/window.c: + .text start:0x8004207C end:0x800483A0 + .data start:0x80130140 end:0x80130688 + .bss start:0x801923C0 end:0x801967E0 + .sdata start:0x801D35E8 end:0x801D35F0 + .sbss start:0x801D3DB0 end:0x801D3DF8 + .sdata2 start:0x801D4F08 end:0x801D4F98 + +game/messdata.c: + .text start:0x800483A0 end:0x80048488 + +game/card.c: + .text start:0x80048488 end:0x80048A84 + .data start:0x80130688 end:0x801306D8 + .sbss start:0x801D3DF8 end:0x801D3E00 + +game/armem.c: + .text start:0x80048A84 end:0x800498F0 + .data start:0x801306D8 end:0x801307C8 + .bss start:0x801967E0 end:0x80196EC0 + .sbss start:0x801D3E00 end:0x801D3E10 + +game/chrman.c: + .text start:0x800498F0 end:0x80050C5C + .data start:0x801307C8 end:0x801311E8 + .bss start:0x80196EC0 end:0x80197650 + .sdata start:0x801D35F0 end:0x801D3638 + .sbss start:0x801D3E10 end:0x801D3E18 + .sdata2 start:0x801D4F98 end:0x801D50D0 + +game/mapspace.c: + .text start:0x80050C5C end:0x80054A00 + .bss start:0x80197650 end:0x80197AC0 + .sbss start:0x801D3E18 end:0x801D3E38 + .sdata2 start:0x801D50D0 end:0x801D5100 + +game/THPSimple.c: + .text start:0x80054A00 end:0x80056B04 + .data start:0x801311E8 end:0x801312E8 + .bss start:0x80197AC0 end:0x801981A0 + .sdata start:0x801D3638 end:0x801D3640 + .sbss start:0x801D3E38 end:0x801D3E58 + .sdata2 start:0x801D5100 end:0x801D5108 + +game/THPDraw.c: + .text start:0x80056B04 end:0x8005745C + .sdata2 start:0x801D5108 end:0x801D5120 + +game/thpmain.c: + .text start:0x8005745C end:0x80057E24 + .rodata start:0x8011DD50 end:0x8011DD60 + .data start:0x801312E8 end:0x80131350 + .bss start:0x801981A0 end:0x801981E0 + .sbss start:0x801D3E58 end:0x801D3E80 + .sdata2 start:0x801D5120 end:0x801D5138 + +game/objsub.c: + .text start:0x80057E24 end:0x80058010 + .data start:0x80131350 end:0x80132150 + .bss start:0x801981E0 end:0x80198410 + .sbss start:0x801D3E80 end:0x801D3EA8 + +game/flag.c: + .text start:0x80058010 end:0x80058228 + .bss start:0x80198410 end:0x80198420 + +game/saveload.c: + .text start:0x80058228 end:0x8005A6F8 + .data start:0x80132150 end:0x801321F8 + .bss start:0x80198420 end:0x8019C440 + .sdata start:0x801D3640 end:0x801D3658 + .sbss start:0x801D3EA8 end:0x801D3EB8 + .sdata2 start:0x801D5138 end:0x801D5148 + +game/sreset.c: + .text start:0x8005A6F8 end:0x8005B150 + .data start:0x801321F8 end:0x80139798 + .bss start:0x8019C440 end:0x8019D7E0 + .sdata start:0x801D3658 end:0x801D3670 + .sbss start:0x801D3EB8 end:0x801D3ED0 + +game/board/main.c: + .text start:0x8005B150 end:0x80061FC4 + .rodata start:0x8011DD60 end:0x8011DD90 + .data start:0x80139798 end:0x80139898 + .bss start:0x8019D7E0 end:0x8019D968 + .sdata start:0x801D3670 end:0x801D3680 + .sbss start:0x801D3ED0 end:0x801D3F20 + .sdata2 start:0x801D5148 end:0x801D51F8 + +game/board/player.c: + .text start:0x80061FC4 end:0x8006D308 + .rodata start:0x8011DD90 end:0x8011DE60 + .data start:0x80139898 end:0x80139AA0 + .bss start:0x8019D968 end:0x8019D998 + .sdata start:0x801D3680 end:0x801D36E0 + .sbss start:0x801D3F20 end:0x801D3F58 + .sdata2 start:0x801D51F8 end:0x801D5300 + +game/board/model.c: + .text start:0x8006D308 end:0x8006FD7C + .sbss start:0x801D3F58 end:0x801D3F68 + .sdata2 start:0x801D5300 end:0x801D5318 + +game/board/window.c: + .text start:0x8006FD7C end:0x80070D84 + .rodata start:0x8011DE60 end:0x8011DED0 + .data start:0x80139AA0 end:0x80139AE8 + .bss start:0x8019D998 end:0x8019D9F8 + .sdata start:0x801D36E0 end:0x801D36E8 + .sbss start:0x801D3F68 end:0x801D3F90 + .sdata2 start:0x801D5318 end:0x801D5328 + +game/board/audio.c: + .text start:0x80070D84 end:0x80071290 + .data start:0x80139AE8 end:0x80139B00 + .sdata start:0x801D36E8 end:0x801D36F0 + .sbss start:0x801D3F90 end:0x801D3F98 + +game/board/com.c: + .text start:0x80071290 end:0x800729A4 + .data start:0x80139B00 end:0x80139BC8 + .sdata start:0x801D36F0 end:0x801D36F8 + .sdata2 start:0x801D5328 end:0x801D5350 + +game/board/view.c: + .text start:0x800729A4 end:0x80073FF4 + .rodata start:0x8011DED0 end:0x8011DEF0 + .data start:0x80139BC8 end:0x80139CC8 + .bss start:0x8019D9F8 end:0x8019DA10 + .sdata start:0x801D36F8 end:0x801D3700 + .sbss start:0x801D3F98 end:0x801D3FB0 + .sdata2 start:0x801D5350 end:0x801D53C0 + +game/board/space.c: + .text start:0x80073FF4 end:0x80077AAC + .data start:0x80139CC8 end:0x80139D08 + .bss start:0x8019DA10 end:0x801A4A60 + .sdata start:0x801D3700 end:0x801D3708 + .sbss start:0x801D3FB0 end:0x801D3FE8 + .sdata2 start:0x801D53C0 end:0x801D5440 + +game/board/shop.c: + .text start:0x80077AAC end:0x8007A83C + .data start:0x80139D08 end:0x80139E88 + .bss start:0x801A4A60 end:0x801A4A90 + .sdata start:0x801D3708 end:0x801D3728 + .sbss start:0x801D3FE8 end:0x801D4008 + .sdata2 start:0x801D5440 end:0x801D5510 + +game/board/lottery.c: + .text start:0x8007A83C end:0x8007FB50 + .rodata start:0x8011DEF0 end:0x8011E020 + .data start:0x80139E88 end:0x8013A1F0 + .bss start:0x801A4A90 end:0x801A4AC0 + .sdata start:0x801D3728 end:0x801D3748 + .sbss start:0x801D4008 end:0x801D4028 + .sdata2 start:0x801D5510 end:0x801D56A0 + +game/board/basic_space.c: + .text start:0x8007FB50 end:0x80080D54 + .data start:0x8013A1F0 end:0x8013A228 + .sdata2 start:0x801D56A0 end:0x801D5730 + +game/board/warp.c: + .text start:0x80080D54 end:0x800816CC + .rodata start:0x8011E020 end:0x8011E040 + .data start:0x8013A228 end:0x8013A248 + .bss start:0x801A4AC0 end:0x801A4AD0 + .sdata start:0x801D3748 end:0x801D3758 + .sbss start:0x801D4028 end:0x801D4040 + .sdata2 start:0x801D5730 end:0x801D5780 + +game/board/char_wheel.c: + .text start:0x800816CC end:0x80082C90 + .data start:0x8013A248 end:0x8013A2B0 + .sdata start:0x801D3758 end:0x801D3760 + .sbss start:0x801D4040 end:0x801D4060 + .sdata2 start:0x801D5780 end:0x801D5810 + +game/board/mushroom.c: + .text start:0x80082C90 end:0x80083EDC + .sdata start:0x801D3760 end:0x801D3770 + .sbss start:0x801D4060 end:0x801D4070 + .sdata2 start:0x801D5810 end:0x801D5898 + +game/board/star.c: + .text start:0x80083EDC end:0x80085CC8 + .rodata start:0x8011E040 end:0x8011E0B0 + .data start:0x8013A2B0 end:0x8013A368 + .bss start:0x801A4AD0 end:0x801A4AE0 + .sdata start:0x801D3770 end:0x801D3778 + .sbss start:0x801D4070 end:0x801D4088 + .sdata2 start:0x801D5898 end:0x801D5938 + +game/board/roll.c: + .text start:0x80085CC8 end:0x80088368 + .rodata start:0x8011E0B0 end:0x8011E118 + .data start:0x8013A368 end:0x8013A408 + .bss start:0x801A4AE0 end:0x801A4AF0 + .sdata start:0x801D3778 end:0x801D3790 + .sbss start:0x801D4088 end:0x801D40A8 + .sdata2 start:0x801D5938 end:0x801D59E0 + +game/board/ui.c: + .text start:0x80088368 end:0x8008DF68 + .rodata start:0x8011E118 end:0x8011E200 + .data start:0x8013A408 end:0x8013A608 + .bss start:0x801A4AF0 end:0x801A4B80 + .sdata start:0x801D3790 end:0x801D3798 + .sbss start:0x801D40A8 end:0x801D40E0 + .sdata2 start:0x801D59E0 end:0x801D5AA0 + +game/board/block.c: + .text start:0x8008DF68 end:0x8008EE28 + .rodata start:0x8011E200 end:0x8011E220 + .data start:0x8013A608 end:0x8013A620 + .bss start:0x801A4B80 end:0x801A4BA8 + .sdata start:0x801D3798 end:0x801D37A0 + .sbss start:0x801D40E0 end:0x801D40F8 + .sdata2 start:0x801D5AA0 end:0x801D5AF8 + +game/board/item.c: + .text start:0x8008EE28 end:0x800975AC + .rodata start:0x8011E220 end:0x8011E238 + .data start:0x8013A620 end:0x8013AA10 + .bss start:0x801A4BA8 end:0x801A4BE8 + .sdata start:0x801D37A0 end:0x801D37B0 + .sbss start:0x801D40F8 end:0x801D4138 + .sdata2 start:0x801D5AF8 end:0x801D5D30 + +game/board/bowser.c: + .text start:0x800975AC end:0x8009B4D4 + .rodata start:0x8011E238 end:0x8011E300 + .data start:0x8013AA10 end:0x8013AA60 + .bss start:0x801A4BE8 end:0x801A4C30 + .sdata start:0x801D37B0 end:0x801D37C8 + .sbss start:0x801D4138 end:0x801D4178 + .sdata2 start:0x801D5D30 end:0x801D5DE0 + +game/board/battle.c: + .text start:0x8009B4D4 end:0x8009D148 + .rodata start:0x8011E300 end:0x8011E380 + .data start:0x8013AA60 end:0x8013AB10 + .bss start:0x801A4C30 end:0x801A4C40 + .sdata start:0x801D37C8 end:0x801D37D0 + .sbss start:0x801D4178 end:0x801D41A0 + .sdata2 start:0x801D5DE0 end:0x801D5E88 + +game/board/fortune.c: + .text start:0x8009D148 end:0x8009DFD0 + .rodata start:0x8011E380 end:0x8011E3A8 + .data start:0x8013AB10 end:0x8013AB28 + .bss start:0x801A4C40 end:0x801A4C58 + .sdata start:0x801D37D0 end:0x801D37D8 + .sbss start:0x801D41A0 end:0x801D41B0 + .sdata2 start:0x801D5E88 end:0x801D5E98 + +game/board/boo.c: + .text start:0x8009DFD0 end:0x800A1A34 + .data start:0x8013AB28 end:0x8013AD00 + .sdata start:0x801D37D8 end:0x801D37E8 + .sbss start:0x801D41B0 end:0x801D41E8 + .sdata2 start:0x801D5E98 end:0x801D5FA8 + +game/board/mg_setup.c: + .text start:0x800A1A34 end:0x800A4F6C + .rodata start:0x8011E3A8 end:0x8011E3D0 + .data start:0x8013AD00 end:0x8013AE38 + .bss start:0x801A4C58 end:0x801A4CC8 + .sdata start:0x801D37E8 end:0x801D37F0 + .sbss start:0x801D41E8 end:0x801D4218 + .sdata2 start:0x801D5FA8 end:0x801D6080 + +game/board/boo_house.c: + .text start:0x800A4F6C end:0x800A6EE4 + .data start:0x8013AE38 end:0x8013AF70 + .bss start:0x801A4CC8 end:0x801A4CD8 + .sdata start:0x801D37F0 end:0x801D3840 + .sbss start:0x801D4218 end:0x801D4230 + .sdata2 start:0x801D6080 end:0x801D60C8 + +game/board/start.c: + .text start:0x800A6EE4 end:0x800A9708 + .rodata start:0x8011E3D0 end:0x8011E3F0 + .data start:0x8013AF70 end:0x8013B0D8 + .bss start:0x801A4CD8 end:0x801A4CF0 + .sdata start:0x801D3840 end:0x801D3850 + .sbss start:0x801D4230 end:0x801D4240 + .sdata2 start:0x801D60C8 end:0x801D6198 + +game/board/last5.c: + .text start:0x800A9708 end:0x800ADB84 + .rodata start:0x8011E3F0 end:0x8011E430 + .data start:0x8013B0D8 end:0x8013B3F0 + .bss start:0x801A4CF0 end:0x801A4D38 + .sdata start:0x801D3850 end:0x801D38A8 + .sbss start:0x801D4240 end:0x801D4260 + .sdata2 start:0x801D6198 end:0x801D6298 + +game/board/pause.c: + .text start:0x800ADB84 end:0x800B1974 + .data start:0x8013B3F0 end:0x8013B518 + .bss start:0x801A4D38 end:0x801A4D68 + .sdata start:0x801D38A8 end:0x801D38B8 + .sbss start:0x801D4260 end:0x801D4280 + .sdata2 start:0x801D6298 end:0x801D6350 + +game/board/com_path.c: + .text start:0x800B1974 end:0x800B3ED8 + .bss start:0x801A4D68 end:0x801A52E8 + .sbss start:0x801D4280 end:0x801D4288 + +game/board/tutorial.c: + .text start:0x800B3ED8 end:0x800B42F4 + .data start:0x8013B518 end:0x8013B560 + .bss start:0x801A52E8 end:0x801A5300 + .sbss start:0x801D4288 end:0x801D42B0 + +dolphin/os/__start.c: + .init start:0x80003100 end:0x80003354 + +dolphin/PPCArch.c: + .text start:0x800B42F4 end:0x800B439C + +dolphin/os/OS.c: + .text start:0x800B439C end:0x800B4CF8 + .data start:0x8013B560 end:0x8013B720 + .bss start:0x801A5300 end:0x801A5350 + .sbss start:0x801D42B0 end:0x801D42E0 + +dolphin/os/OSAlarm.c: + .text start:0x800B4CF8 end:0x800B53A4 + .sbss start:0x801D42E0 end:0x801D42E8 + +dolphin/os/OSAlloc.c: + .text start:0x800B53A4 end:0x800B5D9C + .data start:0x8013B720 end:0x8013BAB8 + .sdata start:0x801D38B8 end:0x801D38C0 + .sbss start:0x801D42E8 end:0x801D42F8 + +dolphin/os/OSArena.c: + .text start:0x800B5D9C end:0x800B5DBC + .sdata start:0x801D38C0 end:0x801D38C8 + .sbss start:0x801D42F8 end:0x801D4300 + +dolphin/os/OSAudioSystem.c: + .text start:0x800B5DBC end:0x800B6050 + .data start:0x8013BAB8 end:0x8013BB38 + +dolphin/os/OSCache.c: + .text start:0x800B6050 end:0x800B66E8 + .data start:0x8013BB38 end:0x8013BD68 + +dolphin/os/OSContext.c: + .text start:0x800B66E8 end:0x800B6F48 + .data start:0x8013BD68 end:0x8013BF40 + +dolphin/os/OSError.c: + .text start:0x800B6F48 end:0x800B71E4 + .data start:0x8013BF40 end:0x8013C260 + .bss start:0x801A5350 end:0x801A5390 + .sdata start:0x801D38C8 end:0x801D38D0 + +dolphin/os/OSFont.c: + .text start:0x800B71E4 end:0x800B723C + .sdata start:0x801D38D0 end:0x801D38D8 + +dolphin/os/OSInterrupt.c: + .text start:0x800B723C end:0x800B7AA8 + .data start:0x8013C260 end:0x8013C290 + .sbss start:0x801D4300 end:0x801D4318 + +dolphin/os/OSLink.c: + .text start:0x800B7AA8 end:0x800B822C + .data start:0x8013C290 end:0x8013C2E0 + +dolphin/os/OSMessage.c: + .text start:0x800B822C end:0x800B828C + +dolphin/os/OSMemory.c: + .text start:0x800B828C end:0x800B8584 + .data start:0x8013C2E0 end:0x8013C2F0 + +dolphin/os/OSMutex.c: + .text start:0x800B8584 end:0x800B85F4 + +dolphin/os/OSReboot.c: + .text start:0x800B85F4 end:0x800B8800 + .bss start:0x801A53A0 end:0x801A53C0 + .sbss start:0x801D4318 end:0x801D4328 + +dolphin/os/OSReset.c: + .text start:0x800B8800 end:0x800B8BE4 + .sbss start:0x801D4328 end:0x801D4330 + +dolphin/os/OSResetSW.c: + .text start:0x800B8BE4 end:0x800B8F70 + .sbss start:0x801D4330 end:0x801D4350 + +dolphin/os/OSRtc.c: + .text start:0x800B8F70 end:0x800B999C + .bss start:0x801A53C0 end:0x801A5418 + +dolphin/os/OSStopwatch.c: + .text start:0x800B999C end:0x800B9D0C + .data start:0x8013C2F0 end:0x8013C368 + +dolphin/os/OSSync.c: + .text start:0x800B9D0C end:0x800B9D90 + +dolphin/os/OSThread.c: + .text start:0x800B9D90 end:0x800BAE5C + .bss start:0x801A5418 end:0x801A5E00 + .sbss start:0x801D4350 end:0x801D4360 + +dolphin/os/OSTime.c: + .text start:0x800BAE5C end:0x800BB280 + .data start:0x8013C368 end:0x8013C3C8 + +dolphin/os/__ppc_eabi_init.c: + .init start:0x80003354 end:0x800033A8 + .text start:0x800BB280 end:0x800BB314 + +dolphin/db.c: + .text start:0x800BB314 end:0x800BB400 + .data start:0x8013C3C8 end:0x8013C3E0 + .sbss start:0x801D4360 end:0x801D4368 + +dolphin/mtx/mtx.c: + .text start:0x800BB400 end:0x800BBCB0 + .sdata start:0x801D38D8 end:0x801D38E0 + .sdata2 start:0x801D6350 end:0x801D6368 + +dolphin/mtx/mtxvec.c: + .text start:0x800BBCB0 end:0x800BBDE4 + +dolphin/mtx/mtx44.c: + .text start:0x800BBDE4 end:0x800BBF4C + .sdata2 start:0x801D6368 end:0x801D6380 + +dolphin/mtx/vec.c: + .text start:0x800BBF4C end:0x800BC2C4 + .sdata2 start:0x801D6380 end:0x801D6390 + +dolphin/mtx/quat.c: + .text start:0x800BC2C4 end:0x800BC884 + .rodata start:0x8011E430 end:0x8011E440 + .sdata2 start:0x801D6390 end:0x801D63B8 + +dolphin/mtx/psmtx.c: + .text start:0x800BC884 end:0x800BC9E8 + +dolphin/dvd/dvdlow.c: + .text start:0x800BC9E8 end:0x800BD83C + .bss start:0x801A5E00 end:0x801A5EE0 + .sdata start:0x801D38E0 end:0x801D38E8 + .sbss start:0x801D4368 end:0x801D43B0 + +dolphin/dvd/dvdfs.c: + .text start:0x800BD83C end:0x800BE118 + .data start:0x8013C3E0 end:0x8013C548 + .sdata start:0x801D38E8 end:0x801D38F0 + .sbss start:0x801D43B0 end:0x801D43D0 + +dolphin/dvd/dvd.c: + .text start:0x800BE118 end:0x800C059C + .data start:0x8013C548 end:0x8013C660 + .bss start:0x801A5EE0 end:0x801A5FB8 + .sdata start:0x801D38F0 end:0x801D38F8 + .sbss start:0x801D43D0 end:0x801D4418 + +dolphin/dvd/dvdqueue.c: + .text start:0x800C059C end:0x800C0794 + .bss start:0x801A5FB8 end:0x801A5FD8 + +dolphin/dvd/dvderror.c: + .text start:0x800C0794 end:0x800C092C + .data start:0x8013C660 end:0x8013C6A8 + +dolphin/dvd/fstload.c: + .text start:0x800C092C end:0x800C0B6C + .data start:0x8013C6A8 end:0x8013C718 + .bss start:0x801A5FD8 end:0x801A6048 + .sdata start:0x801D38F8 end:0x801D3908 + .sbss start:0x801D4418 end:0x801D4428 + +dolphin/vi.c: + .text start:0x800C0B6C end:0x800C2980 + .data start:0x8013C718 end:0x8013C9E0 + .bss start:0x801A6048 end:0x801A6190 + .sbss start:0x801D4428 end:0x801D4478 + +dolphin/demo/DEMOFont.c: + .data start:0x8013C9E0 end:0x8013D5E0 + +dolphin/demo/DEMOInit.c: + .text start:0x800C2980 end:0x800C2988 + .sbss start:0x801D4478 end:0x801D4480 + +dolphin/demo/DEMOPuts.c: + .text start:0x800C2988 end:0x800C2F84 + .bss start:0x801A6190 end:0x801A61B0 + .sbss start:0x801D4480 end:0x801D4488 + .sdata2 start:0x801D63B8 end:0x801D63D8 + +dolphin/demo/DEMOStats.c: + .text start:0x800C2F84 end:0x800C3CDC + .data start:0x8013D5E0 end:0x8013D738 + .sdata start:0x801D3908 end:0x801D3910 + .sbss start:0x801D4488 end:0x801D44E8 + .sdata2 start:0x801D63D8 end:0x801D63E8 + +dolphin/pad/Padclamp.c: + .text start:0x800C3CDC end:0x800C3F14 + .sdata start:0x801D3910 end:0x801D3918 + +dolphin/pad/Pad.c: + .text start:0x800C3F14 end:0x800C59DC + .data start:0x8013D738 end:0x8013D748 + .bss start:0x801A61B0 end:0x801A6200 + .sdata start:0x801D3918 end:0x801D3938 + .sbss start:0x801D44E8 end:0x801D4510 + +dolphin/ai.c: + .text start:0x800C59DC end:0x800C62B8 + .sbss start:0x801D4510 end:0x801D4550 + +dolphin/ar/ar.c: + .text start:0x800C62B8 end:0x800C6F68 + .sbss start:0x801D4550 end:0x801D4570 + +dolphin/ar/arq.c: + .text start:0x800C6F68 end:0x800C72FC + .sbss start:0x801D4570 end:0x801D4598 + +dolphin/dsp/dsp.c: + .text start:0x800C72FC end:0x800C7508 + .data start:0x8013D748 end:0x8013D780 + .sbss start:0x801D4598 end:0x801D45A0 + +dolphin/dsp/dsp_debug.c: + .text start:0x800C7508 end:0x800C7558 + +dolphin/dsp/dsp_task.c: + .text start:0x800C7558 end:0x800C7DDC + .data start:0x8013D780 end:0x8013D8C0 + .sbss start:0x801D45A0 end:0x801D45B8 + +dolphin/gx/GXInit.c: + .text start:0x800C7DDC end:0x800C8ECC + .bss start:0x801A6200 end:0x801A6778 + .sdata start:0x801D3938 end:0x801D3940 + .sbss start:0x801D45B8 end:0x801D45C8 + .sdata2 start:0x801D63E8 end:0x801D6408 + +dolphin/gx/GXFifo.c: + .text start:0x800C8ECC end:0x800C96F4 + .sbss start:0x801D45C8 end:0x801D45E8 + +dolphin/gx/GXAttr.c: + .text start:0x800C96F4 end:0x800CA51C + .data start:0x8013D8C0 end:0x8013D9E0 + .sdata start:0x801D3940 end:0x801D3950 + +dolphin/gx/GXMisc.c: + .text start:0x800CA51C end:0x800CAC40 + .sbss start:0x801D45E8 end:0x801D4600 + +dolphin/gx/GXGeometry.c: + .text start:0x800CAC40 end:0x800CB020 + +dolphin/gx/GXFrameBuf.c: + .text start:0x800CB020 end:0x800CBBD4 + .data start:0x8013D9E0 end:0x8013DB10 + .sdata2 start:0x801D6408 end:0x801D6410 + +dolphin/gx/GXLight.c: + .text start:0x800CBBD4 end:0x800CC5C0 + .data start:0x8013DB10 end:0x8013DB30 + .sdata2 start:0x801D6410 end:0x801D6460 + +dolphin/gx/GXTexture.c: + .text start:0x800CC5C0 end:0x800CD618 + .data start:0x8013DB30 end:0x8013DD58 + .sdata start:0x801D3950 end:0x801D3990 + .sdata2 start:0x801D6460 end:0x801D6488 + +dolphin/gx/GXBump.c: + .text start:0x800CD618 end:0x800CDE94 + .sdata2 start:0x801D6488 end:0x801D64A0 + +dolphin/gx/GXTev.c: + .text start:0x800CDE94 end:0x800CE8CC + .data start:0x8013DD58 end:0x8013DD80 + +dolphin/gx/GXPixel.c: + .text start:0x800CE8CC end:0x800CF014 + .data start:0x8013DD80 end:0x8013DDA0 + .sdata2 start:0x801D64A0 end:0x801D64D0 + +dolphin/gx/GXStubs.c: + .text start:0x800CF014 end:0x800CF018 + +dolphin/gx/GXDisplayList.c: + .text start:0x800CF018 end:0x800CF224 + .bss start:0x801A6778 end:0x801A6C98 + .sbss start:0x801D4600 end:0x801D4608 + +dolphin/gx/GXTransform.c: + .text start:0x800CF224 end:0x800CF9D8 + .sdata2 start:0x801D64D0 end:0x801D64F0 + +dolphin/gx/GXPerf.c: + .text start:0x800CF9D8 end:0x800D09A4 + .data start:0x8013DDA0 end:0x8013DEE8 + +dolphin/card/CARDBios.c: + .text start:0x800D09A4 end:0x800D1CC4 + .data start:0x8013DEE8 end:0x8013DF00 + .bss start:0x801A6C98 end:0x801A6ED8 + +dolphin/card/CARDUnlock.c: + .text start:0x800D1CC4 end:0x800D2F24 + .data start:0x8013DF00 end:0x8013E060 + .sdata start:0x801D3990 end:0x801D3998 + +dolphin/card/CARDRdwr.c: + .text start:0x800D2F24 end:0x800D31A4 + +dolphin/card/CARDBlock.c: + .text start:0x800D31A4 end:0x800D35A8 + +dolphin/card/CARDDir.c: + .text start:0x800D35A8 end:0x800D380C + +dolphin/card/CARDCheck.c: + .text start:0x800D380C end:0x800D4774 + +dolphin/card/CARDMount.c: + .text start:0x800D4774 end:0x800D5234 + .data start:0x8013E060 end:0x8013E0A0 + +dolphin/card/CARDFormat.c: + .text start:0x800D5234 end:0x800D5A24 + +dolphin/card/CARDOpen.c: + .text start:0x800D5A24 end:0x800D5E78 + +dolphin/card/CARDCreate.c: + .text start:0x800D5E78 end:0x800D6210 + +dolphin/card/CARDRead.c: + .text start:0x800D6210 end:0x800D6688 + +dolphin/card/CARDWrite.c: + .text start:0x800D6688 end:0x800D6A04 + +dolphin/card/CARDDelete.c: + .text start:0x800D6A04 end:0x800D6C00 + +dolphin/card/CARDStat.c: + .text start:0x800D6C00 end:0x800D70E0 + +dolphin/card/CARDNet.c: + .text start:0x800D70E0 end:0x800D71A4 + .sdata start:0x801D3998 end:0x801D39A0 + +dolphin/exi/EXIBios.c: + .text start:0x800D71A4 end:0x800D8A78 + .bss start:0x801A6ED8 end:0x801A6F98 + +dolphin/exi/EXIUart.c: + .text start:0x800D8A78 end:0x800D8CE8 + .sbss start:0x801D4608 end:0x801D4618 + +dolphin/si/SIBios.c: + .text start:0x800D8CE8 end:0x800DA3C8 + .data start:0x8013E0A0 end:0x8013E170 + .bss start:0x801A6F98 end:0x801A71A0 + .sbss start:0x801D4618 end:0x801D4628 + +dolphin/si/SISamplingRate.c: + .text start:0x800DA3C8 end:0x800DA4D0 + .data start:0x8013E170 end:0x8013E208 + .sbss start:0x801D4628 end:0x801D4640 + +dolphin/thp/THPDec.c: + .text start:0x800DA4D0 end:0x800E1A10 + .rodata start:0x8011E440 end:0x8011E4D0 + .bss start:0x801A71A0 end:0x801A72D0 + .sbss start:0x801D4640 end:0x801D4758 + .sdata2 start:0x801D64F0 end:0x801D6510 + +dolphin/thp/THPAudio.c: + .text start:0x800E1A10 end:0x800E1F40 + +Runtime.PPCEABI.H/__va_arg.c: + .text start:0x800E1F40 end:0x800E2008 + +Runtime.PPCEABI.H/global_destructor_chain.c: + .text start:0x800E2008 end:0x800E2068 + .dtors start:0x8011DCE8 end:0x8011DCEC + .sbss start:0x801D4758 end:0x801D4760 + +Runtime.PPCEABI.H/__mem.c: + .init start:0x800033A8 end:0x800034E0 + +Runtime.PPCEABI.H/New.cp: + extab start:0x80005620 end:0x80005648 + extabindex start:0x80005700 end:0x8000570C + .text start:0x800E2068 end:0x800E20B4 + +Runtime.PPCEABI.H/NewMore.cp: + extab start:0x80005648 end:0x80005650 + extabindex start:0x8000570C end:0x80005718 + .text start:0x800E20B4 end:0x800E2108 + .rodata start:0x8011E4D0 end:0x8011E4F0 + .data start:0x8013E208 end:0x8013E218 + .sdata start:0x801D39A0 end:0x801D39A8 + +Runtime.PPCEABI.H/NMWException.cpp: + extab start:0x80005650 end:0x80005670 + extabindex start:0x80005718 end:0x80005748 + .text start:0x800E2108 end:0x800E23CC + .sdata start:0x801D39A8 end:0x801D39B0 + +Runtime.PPCEABI.H/runtime.c: + .text start:0x800E23CC end:0x800E2AA8 + .rodata start:0x8011E4F0 end:0x8011E508 + +Runtime.PPCEABI.H/__init_cpp_exceptions.cpp: + .text start:0x800E2AA8 end:0x800E2B24 + .ctors start:0x8011DCC0 end:0x8011DCC4 + .dtors start:0x8011DCE0 end:0x8011DCE8 + .sdata start:0x801D39B0 end:0x801D39B8 + +Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp: + extab start:0x80005670 end:0x800056E4 + extabindex start:0x80005748 end:0x8000579C + .text start:0x800E2B24 end:0x800E3F5C + .rodata start:0x8011E508 end:0x8011E5A0 + .data start:0x8013E218 end:0x8013E300 + .bss start:0x801A72D0 end:0x801A72E0 + .sdata start:0x801D39B8 end:0x801D39C8 + +Runtime.PPCEABI.H/GCN_mem_alloc.c: + .text start:0x800E3F5C end:0x800E4014 + .rodata start:0x8011E5A0 end:0x8011E618 + +MSL_C.PPCEABI.bare.H/abort_exit.c: + .text start:0x800E4014 end:0x800E4168 + .bss start:0x801A72E0 end:0x801A73E0 + .sbss start:0x801D4760 end:0x801D4770 + +MSL_C.PPCEABI.bare.H/alloc.c: + .text start:0x800E4168 end:0x800E46D0 + .rodata start:0x8011E618 end:0x8011E630 + .bss start:0x801A73E0 end:0x801A7418 + .sbss start:0x801D4770 end:0x801D4778 + +MSL_C.PPCEABI.bare.H/errno.c: + .sbss start:0x801D4778 end:0x801D4780 + +MSL_C.PPCEABI.bare.H/ansi_files.c: + .text start:0x800E46D0 end:0x800E47D8 + .data start:0x8013E300 end:0x8013E440 + .bss start:0x801A7418 end:0x801A7718 + +MSL_C.PPCEABI.bare.H/ansi_fp.c: + .text start:0x800E47D8 end:0x800E53F0 + .rodata start:0x8011E630 end:0x8011E710 + .data start:0x8013E440 end:0x8013E568 + .sdata2 start:0x801D6510 end:0x801D6518 + +MSL_C.PPCEABI.bare.H/arith.c: + .text start:0x800E53F0 end:0x800E5400 + +MSL_C.PPCEABI.bare.H/buffer_io.c: + .text start:0x800E5400 end:0x800E54F8 + +MSL_C.PPCEABI.bare.H/ctype.c: + .text start:0x800E54F8 end:0x800E5534 + .data start:0x8013E568 end:0x8013E768 + +MSL_C.PPCEABI.bare.H/direct_io.c: + .text start:0x800E5534 end:0x800E5860 + +MSL_C.PPCEABI.bare.H/file_io.c: + .text start:0x800E5860 end:0x800E5A58 + +MSL_C.PPCEABI.bare.H/FILE_POS.c: + .text start:0x800E5A58 end:0x800E5D24 + +MSL_C.PPCEABI.bare.H/mbstring.c: + .text start:0x800E5D24 end:0x800E5E68 + .sdata2 start:0x801D6518 end:0x801D6520 + +MSL_C.PPCEABI.bare.H/mem.c: + .text start:0x800E5E68 end:0x800E5FD8 + +MSL_C.PPCEABI.bare.H/mem_funcs.c: + .text start:0x800E5FD8 end:0x800E62B8 + +MSL_C.PPCEABI.bare.H/misc_io.c: + .text start:0x800E62B8 end:0x800E62C8 + +MSL_C.PPCEABI.bare.H/printf.c: + .text start:0x800E62C8 end:0x800E8364 + .rodata start:0x8011E710 end:0x8011E738 + .data start:0x8013E768 end:0x8013E998 + .sdata start:0x801D39C8 end:0x801D39D0 + .sdata2 start:0x801D6520 end:0x801D6528 + +MSL_C.PPCEABI.bare.H/float.c: + .sdata start:0x801D39D0 end:0x801D39D8 + +MSL_C.PPCEABI.bare.H/signal.c: + .text start:0x800E8364 end:0x800E8414 + .bss start:0x801A7718 end:0x801A7730 + +MSL_C.PPCEABI.bare.H/string.c: + .text start:0x800E8414 end:0x800E86C4 + +MSL_C.PPCEABI.bare.H/uart_console_io.c: + .text start:0x800E86C4 end:0x800E8790 + .sbss start:0x801D4780 end:0x801D4788 + +MSL_C.PPCEABI.bare.H/wchar_io.c: + .text start:0x800E8790 end:0x800E8818 + +MSL_C.PPCEABI.bare.H/e_acos.c: + .text start:0x800E8818 end:0x800E8B28 + .sdata2 start:0x801D6528 end:0x801D65B8 + +MSL_C.PPCEABI.bare.H/e_asin.c: + .text start:0x800E8B28 end:0x800E8D8C + .sdata2 start:0x801D65B8 end:0x801D6650 + +MSL_C.PPCEABI.bare.H/e_atan2.c: + .text start:0x800E8D8C end:0x800E901C + .sdata2 start:0x801D6650 end:0x801D66A8 + +MSL_C.PPCEABI.bare.H/e_fmod.c: + .text start:0x800E901C end:0x800E9358 + .rodata start:0x8011E738 end:0x8011E748 + +MSL_C.PPCEABI.bare.H/e_pow.c: + .text start:0x800E9358 end:0x800E9BE4 + .rodata start:0x8011E748 end:0x8011E778 + .sdata2 start:0x801D66A8 end:0x801D67B8 + +MSL_C.PPCEABI.bare.H/e_rem_pio2.c: + .text start:0x800E9BE4 end:0x800E9F84 + .rodata start:0x8011E778 end:0x8011E900 + .sdata2 start:0x801D67B8 end:0x801D6810 + +MSL_C.PPCEABI.bare.H/k_cos.c: + .text start:0x800E9F84 end:0x800EA078 + .sdata2 start:0x801D6810 end:0x801D6858 + +MSL_C.PPCEABI.bare.H/k_rem_pio2.c: + .text start:0x800EA078 end:0x800EAECC + .rodata start:0x8011E900 end:0x8011E950 + .sdata2 start:0x801D6858 end:0x801D6898 + +MSL_C.PPCEABI.bare.H/k_sin.c: + .text start:0x800EAECC end:0x800EAF6C + .sdata2 start:0x801D6898 end:0x801D68D0 + +MSL_C.PPCEABI.bare.H/k_tan.c: + .text start:0x800EAF6C end:0x800EB180 + .rodata start:0x8011E950 end:0x8011E9B8 + .sdata2 start:0x801D68D0 end:0x801D6908 + +MSL_C.PPCEABI.bare.H/s_atan.c: + .text start:0x800EB180 end:0x800EB380 + .rodata start:0x8011E9B8 end:0x8011EA50 + .sdata2 start:0x801D6908 end:0x801D6930 + +MSL_C.PPCEABI.bare.H/s_copysign.c: + .text start:0x800EB380 end:0x800EB3A8 + +MSL_C.PPCEABI.bare.H/s_cos.c: + .text start:0x800EB3A8 end:0x800EB47C + .sdata2 start:0x801D6930 end:0x801D6938 + +MSL_C.PPCEABI.bare.H/s_floor.c: + .text start:0x800EB47C end:0x800EB5C4 + .sdata2 start:0x801D6938 end:0x801D6948 + +MSL_C.PPCEABI.bare.H/s_frexp.c: + .text start:0x800EB5C4 end:0x800EB650 + .sdata2 start:0x801D6948 end:0x801D6950 + +MSL_C.PPCEABI.bare.H/s_ldexp.c: + .text start:0x800EB650 end:0x800EB814 + .sdata2 start:0x801D6950 end:0x801D6978 + +MSL_C.PPCEABI.bare.H/s_modf.c: + .text start:0x800EB814 end:0x800EB910 + +MSL_C.PPCEABI.bare.H/s_sin.c: + .text start:0x800EB910 end:0x800EB9E8 + .sdata2 start:0x801D6978 end:0x801D6980 + +MSL_C.PPCEABI.bare.H/s_tan.c: + .text start:0x800EB9E8 end:0x800EBA60 + .sdata2 start:0x801D6980 end:0x801D6988 + +MSL_C.PPCEABI.bare.H/w_acos.c: + .text start:0x800EBA60 end:0x800EBA80 + +MSL_C.PPCEABI.bare.H/w_asin.c: + .text start:0x800EBA80 end:0x800EBAA0 + +MSL_C.PPCEABI.bare.H/w_atan2.c: + .text start:0x800EBAA0 end:0x800EBAC0 + +MSL_C.PPCEABI.bare.H/w_fmod.c: + .text start:0x800EBAC0 end:0x800EBAE0 + +MSL_C.PPCEABI.bare.H/w_pow.c: + .text start:0x800EBAE0 end:0x800EBB00 + +MSL_C.PPCEABI.bare.H/math_ppc.c: + .text start:0x800EBB00 end:0x800EBBB4 + +TRK_MINNOW_DOLPHIN/mainloop.c: + .text start:0x800EBBB4 end:0x800EBCAC + +TRK_MINNOW_DOLPHIN/nubevent.c: + .text start:0x800EBCAC end:0x800EBED4 + .bss start:0x801A7730 end:0x801A7758 + +TRK_MINNOW_DOLPHIN/nubinit.c: + .text start:0x800EBED4 end:0x800EC054 + .rodata start:0x8011EA50 end:0x8011EA70 + .bss start:0x801A7758 end:0x801A7760 + +TRK_MINNOW_DOLPHIN/msg.c: + .text start:0x800EC054 end:0x800EC230 + +TRK_MINNOW_DOLPHIN/msgbuf.c: + .text start:0x800EC230 end:0x800ECC5C + .rodata start:0x8011EA70 end:0x8011EA90 + .bss start:0x801A7760 end:0x801A9110 + +TRK_MINNOW_DOLPHIN/serpoll.c: + .text start:0x800ECC5C end:0x800ED028 + .bss start:0x801A9110 end:0x801A9128 + +TRK_MINNOW_DOLPHIN/usr_put.c: + .text start:0x800ED028 end:0x800ED0B4 + +TRK_MINNOW_DOLPHIN/dispatch.c: + .text start:0x800ED0B4 end:0x800ED150 + .data start:0x8013E998 end:0x8013EA20 + .bss start:0x801A9128 end:0x801A9130 + +TRK_MINNOW_DOLPHIN/msghndlr.c: + .text start:0x800ED150 end:0x800EF9B0 + .data start:0x8013EA20 end:0x8013EA58 + .bss start:0x801A9130 end:0x801A9138 + +TRK_MINNOW_DOLPHIN/support.c: + .text start:0x800EF9B0 end:0x800F0270 + +TRK_MINNOW_DOLPHIN/mutex_TRK.c: + .text start:0x800F0270 end:0x800F0288 + +TRK_MINNOW_DOLPHIN/notify.c: + .text start:0x800F0288 end:0x800F0360 + +TRK_MINNOW_DOLPHIN/flush_cache.c: + .text start:0x800F0360 end:0x800F0398 + +TRK_MINNOW_DOLPHIN/mem_TRK.c: + .init start:0x800034E0 end:0x80003534 + .text start:0x800F0398 end:0x800F0454 + +TRK_MINNOW_DOLPHIN/targimpl.c: + .text start:0x800F0454 end:0x800F1CE4 + .rodata start:0x8011EA90 end:0x8011EB18 + .data start:0x8013EA58 end:0x8013EA88 + .bss start:0x801A9138 end:0x801A96B8 + +TRK_MINNOW_DOLPHIN/targsupp.s: + .text start:0x800F1CF0 end:0x800F1D10 + +TRK_MINNOW_DOLPHIN/__exception.s: + .init start:0x80003534 end:0x80005468 + +TRK_MINNOW_DOLPHIN/dolphin_trk.c: + .init start:0x80005468 end:0x8000556C + .text start:0x800F1D10 end:0x800F1E50 + .data start:0x8013EA88 end:0x8013EAC8 + .bss start:0x801A96B8 end:0x801A96C0 + +TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c: + .text start:0x800F1E50 end:0x800F21C8 + +TRK_MINNOW_DOLPHIN/main_TRK.c: + .text start:0x800F21C8 end:0x800F220C + .bss start:0x801A96C0 end:0x801A96C8 + +TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c: + .text start:0x800F220C end:0x800F26B8 + .rodata start:0x8011EB18 end:0x8011EB60 + .data start:0x8013EAC8 end:0x8013EAE8 + .bss start:0x801A96C8 end:0x801AB8F0 + +TRK_MINNOW_DOLPHIN/targcont.c: + .text start:0x800F26B8 end:0x800F26EC + +TRK_MINNOW_DOLPHIN/target_options.c: + .text start:0x800F26EC end:0x800F2708 + .bss start:0x801AB8F0 end:0x801AB8F8 + +TRK_MINNOW_DOLPHIN/mslsupp.c: + .text start:0x800F2708 end:0x800F2880 + +musyx/runtime/seq.c: + .text start:0x800F2880 end:0x800F67F0 + .data start:0x8013EAE8 end:0x8013EB38 + .bss start:0x801AB8F8 end:0x801B9138 + .sbss start:0x801D4788 end:0x801D47A8 + .sdata2 start:0x801D6988 end:0x801D69A8 + +musyx/runtime/synth.c: + .text start:0x800F67F0 end:0x800F9B4C + .bss start:0x801B9138 end:0x801BA720 + .sbss start:0x801D47A8 end:0x801D47F0 + .sdata2 start:0x801D69A8 end:0x801D69E8 + +musyx/runtime/seq_api.c: + .text start:0x800F9B4C end:0x800F9DCC + +musyx/runtime/snd_synthapi.c: + .text start:0x800F9DCC end:0x800FA54C + +musyx/runtime/stream.c: + .text start:0x800FA54C end:0x800FE0B8 + .bss start:0x801BA720 end:0x801BC020 + .sbss start:0x801D47F0 end:0x801D47F8 + .sdata2 start:0x801D69E8 end:0x801D6A00 + +musyx/runtime/synthdata.c: + .text start:0x800FE0B8 end:0x800FFE48 + .bss start:0x801BC020 end:0x801C6658 + .sbss start:0x801D47F8 end:0x801D4840 + +musyx/runtime/synthmacros.c: + .text start:0x800FFE48 end:0x80104BA0 + .data start:0x8013EB38 end:0x8013EF80 + .bss start:0x801C6658 end:0x801C6678 + .sbss start:0x801D4840 end:0x801D4860 + .sdata2 start:0x801D6A00 end:0x801D6A28 + +musyx/runtime/synthvoice.c: + .text start:0x80104BA0 end:0x80106630 + .bss start:0x801C6678 end:0x801C7638 + .sbss start:0x801D4860 end:0x801D4878 + +musyx/runtime/synth_ac.c: + .text start:0x80106630 end:0x80106750 + .data start:0x8013EF80 end:0x8013F380 + .sdata2 start:0x801D6A28 end:0x801D6A40 + +musyx/runtime/synth_dbtab.c: + .data start:0x8013F380 end:0x8013FB08 + +musyx/runtime/synth_adsr.c: + .text start:0x80106750 end:0x80106F10 + .sdata2 start:0x801D6A40 end:0x801D6A68 + +musyx/runtime/synth_vsamples.c: + .text start:0x80106F10 end:0x80107698 + .bss start:0x801C7638 end:0x801C7F88 + +musyx/runtime/s_data.c: + .text start:0x80107698 end:0x801081F0 + .bss start:0x801C7F88 end:0x801C8588 + .sbss start:0x801D4878 end:0x801D4880 + +musyx/runtime/hw_dspctrl.c: + .text start:0x801081F0 end:0x8010B604 + .rodata start:0x8011EB60 end:0x8011EBB8 + .data start:0x8013FB08 end:0x8013FB20 + .bss start:0x801C8588 end:0x801C8C68 + .sbss start:0x801D4880 end:0x801D48C0 + +musyx/runtime/hw_volconv.c: + .text start:0x8010B604 end:0x8010BCF4 + .data start:0x8013FB20 end:0x8013FD48 + .sdata2 start:0x801D6A68 end:0x801D6AA0 + +musyx/runtime/snd3d.c: + .text start:0x8010BCF4 end:0x8010E0C4 + .bss start:0x801C8C68 end:0x801C9AB8 + .sbss start:0x801D48C0 end:0x801D48E0 + .sdata2 start:0x801D6AA0 end:0x801D6AF0 + +musyx/runtime/snd_init.c: + .text start:0x8010E0C4 end:0x8010E218 + +musyx/runtime/snd_math.c: + .text start:0x8010E218 end:0x8010E5D8 + .sdata2 start:0x801D6AF0 end:0x801D6B10 + +musyx/runtime/snd_midictrl.c: + .text start:0x8010E5D8 end:0x801102AC + .rodata start:0x8011EBB8 end:0x8011ECC8 + .data start:0x8013FD48 end:0x8013FDD8 + .bss start:0x801C9AB8 end:0x801D02B8 + +musyx/runtime/snd_service.c: + .text start:0x801102AC end:0x80110458 + .data start:0x8013FDD8 end:0x801405E0 + .sdata start:0x801D39D8 end:0x801D39E0 + +musyx/runtime/hardware.c: + .text start:0x80110458 end:0x8011145C + .rodata start:0x8011ECC8 end:0x8011EDC8 + .sdata start:0x801D39E0 end:0x801D39F0 + .sbss start:0x801D48E0 end:0x801D48F0 + .sdata2 start:0x801D6B10 end:0x801D6B28 + +musyx/runtime/dsp_import.c: + .data start:0x801405E0 end:0x80141FC0 + .sdata start:0x801D39F0 end:0x801D39F8 + +musyx/runtime/hw_aramdma.c: + .text start:0x8011145C end:0x801120D0 + .bss start:0x801D02B8 end:0x801D0BC0 + .sbss start:0x801D48F0 end:0x801D4910 + +musyx/runtime/hw_dolphin.c: + .text start:0x801120D0 end:0x801125C8 + .bss start:0x801D0BC0 end:0x801D2C20 + .sbss start:0x801D4910 end:0x801D4938 + +musyx/runtime/hw_memory.c: + .text start:0x801125C8 end:0x8011261C + +musyx/runtime/CheapReverb/creverb_fx.c: + .text start:0x8011261C end:0x801126D8 + +musyx/runtime/CheapReverb/creverb.c: + .text start:0x801126D8 end:0x80112F94 + .data start:0x80141FC0 end:0x80141FD0 + .sdata2 start:0x801D6B28 end:0x801D6B68 + +musyx/runtime/StdReverb/reverb_fx.c: + .text start:0x80112F94 end:0x80113054 + +musyx/runtime/StdReverb/reverb.c: + .text start:0x80113054 end:0x80113D98 + .data start:0x80141FD0 end:0x80141FF0 + .sdata2 start:0x801D6B68 end:0x801D6BB0 + +musyx/runtime/Delay/delay_fx.c: + .text start:0x80113D98 end:0x80114144 + +musyx/runtime/Chorus/chorus_fx.c: + .text start:0x80114144 end:0x801149AC + .data start:0x80141FF0 end:0x801427F0 + .sdata2 start:0x801D6BB0 end:0x801D6BB8 + +OdemuExi2/DebuggerDriver.c: + .text start:0x801149AC end:0x8011542C + .sdata start:0x801D39F8 end:0x801D39F9 + .sbss start:0x801D4938 end:0x801D494D + +amcstubs/AmcExi2Stubs.c: + .text start:0x8011542C end:0x8011545C + +odenotstub/odenotstub.c: + .text start:0x8011545C end:0x80115464 + +libhu/setvf.c: + .text start:0x80115464 end:0x80115474 + +libhu/subvf.c: + .text start:0x80115474 end:0x801154A8 + +msm/msmsys.c: + .text start:0x801154A8 end:0x801176C8 + .bss start:0x801D2C20 end:0x801D3120 + .sdata2 start:0x801D6BB8 end:0x801D6BC0 + +msm/msmmem.c: + .text start:0x801176C8 end:0x801178F8 + .bss start:0x801D3120 end:0x801D3150 + +msm/msmfio.c: + .text start:0x801178F8 end:0x801179E8 + .bss start:0x801D3150 end:0x801D3160 + +msm/msmmus.c: + .text start:0x801179E8 end:0x80118A80 + .bss start:0x801D3160 end:0x801D32D8 + +msm/msmse.c: + .text start:0x80118A80 end:0x8011A044 + .bss start:0x801D32D8 end:0x801D33C0 + .sdata2 start:0x801D6BC0 end:0x801D6BD8 + +msm/msmstream.c: + .text start:0x8011A044 end:0x8011CCC4 + .bss start:0x801D33C0 end:0x801D3420 + +game/kerent.c: + .text start:0x8011CCC4 end:0x8011DCA8 diff --git a/config/GMPE01_01/symbols.txt b/config/GMPE01_01/symbols.txt new file mode 100644 index 00000000..5bed188a --- /dev/null +++ b/config/GMPE01_01/symbols.txt @@ -0,0 +1,7714 @@ +__check_pad3 = .init:0x80003100; // type:function size:0x40 scope:local +__start = .init:0x80003140; // type:function size:0x138 scope:weak +__init_registers = .init:0x80003278; // type:function size:0x1C scope:local +__init_data = .init:0x80003294; // type:function size:0xC0 scope:local +__init_hardware = .init:0x80003354; // type:function size:0x20 scope:global +__flush_cache = .init:0x80003374; // type:function size:0x34 scope:global +memset = .init:0x800033A8; // type:function size:0x30 scope:global +__fill_mem = .init:0x800033D8; // type:function size:0xB8 scope:global +memcpy = .init:0x80003490; // type:function size:0x50 scope:global +TRK_memset = .init:0x800034E0; // type:function size:0x30 +TRK_memcpy = .init:0x80003510; // type:function size:0x24 +gTRKInterruptVectorTable = .init:0x80003534; // type:label scope:global +lbl_8000387C = .init:0x8000387C; // type:label +lbl_800038E0 = .init:0x800038E0; // type:label +__TRK_reset = .init:0x80005468; // type:function size:0x104 +gTRKInterruptVectorTableEnd = .init:0x80005468; // type:label scope:global +_rom_copy_info = .init:0x8000556C; // type:object size:0x84 scope:global data:4byte +_bss_init_info = .init:0x800055F0; // type:object size:0x20 scope:global data:4byte +@etb_80005620 = extab:0x80005620; // type:object size:0x28 scope:local hidden +@etb_80005648 = extab:0x80005648; // type:object size:0x8 scope:local hidden +@etb_80005650 = extab:0x80005650; // type:object size:0x8 scope:local hidden +@etb_80005658 = extab:0x80005658; // type:object size:0x8 scope:local hidden +@etb_80005660 = extab:0x80005660; // type:object size:0x8 scope:local hidden +@etb_80005668 = extab:0x80005668; // type:object size:0x8 scope:local hidden +@etb_80005670 = extab:0x80005670; // type:object size:0x8 scope:local hidden +@etb_80005678 = extab:0x80005678; // type:object size:0x14 scope:local hidden +@etb_8000568C = extab:0x8000568C; // type:object size:0x2C scope:local hidden +@etb_800056B8 = extab:0x800056B8; // type:object size:0x8 scope:local hidden +@etb_800056C0 = extab:0x800056C0; // type:object size:0x14 scope:local hidden +@etb_800056D4 = extab:0x800056D4; // type:object size:0x8 scope:local hidden +@etb_800056DC = extab:0x800056DC; // type:object size:0x8 scope:local hidden +@eti_80005700 = extabindex:0x80005700; // type:object size:0xC scope:local hidden +@eti_8000570C = extabindex:0x8000570C; // type:object size:0xC scope:local hidden +@eti_80005718 = extabindex:0x80005718; // type:object size:0xC scope:local hidden +@eti_80005724 = extabindex:0x80005724; // type:object size:0xC scope:local hidden +@eti_80005730 = extabindex:0x80005730; // type:object size:0xC scope:local hidden +@eti_8000573C = extabindex:0x8000573C; // type:object size:0xC scope:local hidden +@eti_80005748 = extabindex:0x80005748; // type:object size:0xC scope:local hidden +@eti_80005754 = extabindex:0x80005754; // type:object size:0xC scope:local hidden +@eti_80005760 = extabindex:0x80005760; // type:object size:0xC scope:local hidden +@eti_8000576C = extabindex:0x8000576C; // type:object size:0xC scope:local hidden +@eti_80005778 = extabindex:0x80005778; // type:object size:0xC scope:local hidden +@eti_80005784 = extabindex:0x80005784; // type:object size:0xC scope:local hidden +@eti_80005790 = extabindex:0x80005790; // type:object size:0xC scope:local hidden +_eti_init_info = extabindex:0x8000579C; // type:object size:0x20 scope:global +main = .text:0x800057C0; // type:function size:0x22C scope:global +HuSysVWaitSet = .text:0x800059EC; // type:function size:0x38 +HuSysVWaitGet = .text:0x80005A24; // type:function size:0xC +rand8 = .text:0x80005A30; // type:function size:0x2C +HuPadInit = .text:0x80005A5C; // type:function size:0xF0 +HuPadRead = .text:0x80005B4C; // type:function size:0x168 +PadReadVSync = .text:0x80005CB4; // type:function size:0x440 scope:local +PadADConv = .text:0x800060F4; // type:function size:0x234 scope:local +HuPadRumbleSet = .text:0x80006328; // type:function size:0x54 +HuPadRumbleStop = .text:0x8000637C; // type:function size:0x70 +HuPadRumbleAllStop = .text:0x800063EC; // type:function size:0x70 +HuPadStatGet = .text:0x8000645C; // type:function size:0x14 +HuPadRumbleGet = .text:0x80006470; // type:function size:0x8 +HuDVDReadAsyncCallBack = .text:0x80006478; // type:function size:0xC scope:local +HuDvdDataRead = .text:0x80006484; // type:function size:0x16C +HuDvdDataReadMulti = .text:0x800065F0; // type:function size:0x1B4 +HuDvdDataReadDirect = .text:0x800067A4; // type:function size:0x170 +HuDvdDataFastRead = .text:0x80006914; // type:function size:0x16C +HuDvdDataFastReadNum = .text:0x80006A80; // type:function size:0x174 +HuDvdDataFastReadAsync = .text:0x80006BF4; // type:function size:0x150 +HuDvdDataClose = .text:0x80006D44; // type:function size:0x38 +HuDvdErrorWatch = .text:0x80006D7C; // type:function size:0xBC +HuDataInit = .text:0x80006E38; // type:function size:0xD0 +HuDataReadChk = .text:0x80006F08; // type:function size:0x74 +HuDataGetStatus = .text:0x80006F7C; // type:function size:0x64 +HuDataGetDirPtr = .text:0x80006FE0; // type:function size:0xB8 +HuDataDirRead = .text:0x80007098; // type:function size:0x224 +HuDataDirSet = .text:0x800072BC; // type:function size:0x188 +HuDataDirReadAsyncCallBack = .text:0x80007444; // type:function size:0xC8 +HuDataDirReadAsync = .text:0x8000750C; // type:function size:0x1A8 +HuDataDirReadNumAsync = .text:0x800076B4; // type:function size:0x1A8 +HuDataGetAsyncStat = .text:0x8000785C; // type:function size:0x60 +HuDataRead = .text:0x800078BC; // type:function size:0x344 +HuDataReadNum = .text:0x80007C00; // type:function size:0x3A0 +HuDataSelHeapRead = .text:0x80007FA0; // type:function size:0x3C4 +HuDataSelHeapReadNum = .text:0x80008364; // type:function size:0x428 +HuDataReadMulti = .text:0x8000878C; // type:function size:0x30 +HuDataReadMultiSub = .text:0x800087BC; // type:function size:0x3FC +HuDataGetSize = .text:0x80008BB8; // type:function size:0x104 +HuDataClose = .text:0x80008CBC; // type:function size:0x38 +HuDataCloseMulti = .text:0x80008CF4; // type:function size:0x7C +HuDataDirClose = .text:0x80008D70; // type:function size:0xD4 +HuDataDirCloseNum = .text:0x80008E44; // type:function size:0x130 +HuDataReadNumHeapShortForce = .text:0x80008F74; // type:function size:0x48C +HuDecodeSlide = .text:0x80009400; // type:function size:0x200 scope:local +HuDecodeFslide = .text:0x80009600; // type:function size:0x1D8 scope:local +HuDecodeData = .text:0x800097D8; // type:function size:0x324 +HuSysInit = .text:0x80009AFC; // type:function size:0x138 +InitRenderMode = .text:0x80009C34; // type:function size:0xD0 scope:local +InitGX = .text:0x80009D04; // type:function size:0x164 scope:local +InitMem = .text:0x80009E68; // type:function size:0x13C scope:local +InitVI = .text:0x80009FA4; // type:function size:0x54 scope:local +HuSysBeforeRender = .text:0x80009FF8; // type:function size:0xE4 +HuSysDoneRender = .text:0x8000A0DC; // type:function size:0xC8 +SwapBuffers = .text:0x8000A1A4; // type:function size:0x6C scope:local +LoadMemInfo = .text:0x8000A210; // type:function size:0x254 scope:local +gcsetjmp = .text:0x8000A464; // type:function size:0x74 +gclongjmp = .text:0x8000A4D8; // type:function size:0x80 +HuMemInitAll = .text:0x8000A558; // type:function size:0x12C +HuMemInit = .text:0x8000A684; // type:function size:0x30 +HuMemDCFlushAll = .text:0x8000A6B4; // type:function size:0x2C +HuMemDCFlush = .text:0x8000A6E0; // type:function size:0x54 +HuMemDirectMalloc = .text:0x8000A734; // type:function size:0x64 +HuMemDirectMallocNum = .text:0x8000A798; // type:function size:0x6C +HuMemDirectFree = .text:0x8000A804; // type:function size:0x38 +HuMemDirectFreeNum = .text:0x8000A83C; // type:function size:0x54 +HuMemUsedMallocSizeGet = .text:0x8000A890; // type:function size:0x3C +HuMemUsedMallocBlockGet = .text:0x8000A8CC; // type:function size:0x3C +HuMemHeapSizeGet = .text:0x8000A908; // type:function size:0x18 +HuMemHeapPtrGet = .text:0x8000A920; // type:function size:0x18 +HuMemHeapInit = .text:0x8000A938; // type:function size:0x4C +HuMemMemoryAllocNum = .text:0x8000A984; // type:function size:0x40 +HuMemMemoryAlloc = .text:0x8000A9C4; // type:function size:0x3C +HuMemMemoryAlloc2 = .text:0x8000AA00; // type:function size:0x108 scope:local +HuMemMemoryFreeNum = .text:0x8000AB08; // type:function size:0x7C +HuMemMemoryFree = .text:0x8000AB84; // type:function size:0x12C +HuMemUsedMemorySizeGet = .text:0x8000ACB0; // type:function size:0x48 +HuMemUsedMemoryBlockGet = .text:0x8000ACF8; // type:function size:0x44 +HuMemMemoryAllocSizeGet = .text:0x8000AD3C; // type:function size:0xC +HuMemHeapDump = .text:0x8000AD48; // type:function size:0x158 +HuMemMemorySizeGet = .text:0x8000AEA0; // type:function size:0x50 +pfInit = .text:0x8000AEF0; // type:function size:0x64 +pfClsScr = .text:0x8000AF54; // type:function size:0xA0 +print8 = .text:0x8000AFF4; // type:function size:0x15C +printWin = .text:0x8000B150; // type:function size:0xAC +pfDrawFonts = .text:0x8000B1FC; // type:function size:0xEE8 +WireDraw = .text:0x8000C0E4; // type:function size:0x3C0 scope:local +HuPrcInit = .text:0x8000C4A4; // type:function size:0x14 +HuPrcCreate = .text:0x8000C4B8; // type:function size:0x1E8 +HuPrcChildLink = .text:0x8000C6A0; // type:function size:0x68 +HuPrcChildUnlink = .text:0x8000C708; // type:function size:0x58 +HuPrcChildCreate = .text:0x8000C760; // type:function size:0x27C +HuPrcChildWatch = .text:0x8000C9DC; // type:function size:0x60 +HuPrcCurrentGet = .text:0x8000CA3C; // type:function size:0x8 +SetKillStatusProcess = .text:0x8000CA44; // type:function size:0x50 scope:local +HuPrcKill = .text:0x8000CA94; // type:function size:0xD4 +HuPrcChildKill = .text:0x8000CB68; // type:function size:0x2A4 +HuPrcEnd = .text:0x8000CE0C; // type:function size:0x100 +HuPrcSleep = .text:0x8000CF0C; // type:function size:0x80 +HuPrcVSleep = .text:0x8000CF8C; // type:function size:0x54 +HuPrcWakeup = .text:0x8000CFE0; // type:function size:0xC +HuPrcDestructorSet2 = .text:0x8000CFEC; // type:function size:0x8 +HuPrcDestructorSet = .text:0x8000CFF4; // type:function size:0x28 +HuPrcCall = .text:0x8000D01C; // type:function size:0x184 +HuPrcMemAlloc = .text:0x8000D1A0; // type:function size:0x4C +HuPrcMemFree = .text:0x8000D1EC; // type:function size:0x30 +HuPrcSetStat = .text:0x8000D21C; // type:function size:0x10 +HuPrcResetStat = .text:0x8000D22C; // type:function size:0x14 +HuPrcAllPause = .text:0x8000D240; // type:function size:0x84 +HuPrcAllUPause = .text:0x8000D2C4; // type:function size:0x84 +HuSprInit = .text:0x8000D348; // type:function size:0xA0 +HuSprClose = .text:0x8000D3E8; // type:function size:0xB0 +HuSprExec = .text:0x8000D498; // type:function size:0x64 +HuSprBegin = .text:0x8000D4FC; // type:function size:0x188 +HuSprOrderEntry = .text:0x8000D684; // type:function size:0x14C +HuSprCall = .text:0x8000D7D0; // type:function size:0xF4 +HuSprFinish = .text:0x8000D8C4; // type:function size:0x458 +HuSprPauseSet = .text:0x8000DD1C; // type:function size:0x8 +HuSprAnimRead = .text:0x8000DD24; // type:function size:0x114 +HuSprAnimLock = .text:0x8000DE38; // type:function size:0x10 +HuSprCreate = .text:0x8000DE48; // type:function size:0x128 +HuSprFuncCreate = .text:0x8000DF70; // type:function size:0x188 +HuSprGrpCreate = .text:0x8000E0F8; // type:function size:0xF4 +HuSprGrpCopy = .text:0x8000E1EC; // type:function size:0x334 +HuSprGrpMemberSet = .text:0x8000E520; // type:function size:0x8C +HuSprGrpMemberKill = .text:0x8000E5AC; // type:function size:0xAC +HuSprGrpKill = .text:0x8000E658; // type:function size:0x9C +HuSprKill = .text:0x8000E6F4; // type:function size:0x84 +HuSprAnimKill = .text:0x8000E778; // type:function size:0x90 +HuSprAttrSet = .text:0x8000E808; // type:function size:0xAC +HuSprAttrReset = .text:0x8000E8B4; // type:function size:0xAC +HuSprPosSet = .text:0x8000E960; // type:function size:0x60 +HuSprZRotSet = .text:0x8000E9C0; // type:function size:0x5C +HuSprScaleSet = .text:0x8000EA1C; // type:function size:0x60 +HuSprTPLvlSet = .text:0x8000EA7C; // type:function size:0x64 +HuSprColorSet = .text:0x8000EAE0; // type:function size:0x64 +HuSprSpeedSet = .text:0x8000EB44; // type:function size:0x4C +HuSprBankSet = .text:0x8000EB90; // type:function size:0xF0 +HuSprGrpPosSet = .text:0x8000EC80; // type:function size:0x9C +HuSprGrpCenterSet = .text:0x8000ED1C; // type:function size:0x9C +HuSprGrpZRotSet = .text:0x8000EDB8; // type:function size:0x98 +HuSprGrpScaleSet = .text:0x8000EE50; // type:function size:0x9C +HuSprGrpTPLvlSet = .text:0x8000EEEC; // type:function size:0xC0 +HuSprGrpDrawNoSet = .text:0x8000EFAC; // type:function size:0x8C +HuSprDrawNoSet = .text:0x8000F038; // type:function size:0x50 +HuSprPriSet = .text:0x8000F088; // type:function size:0x4C +HuSprGrpScissorSet = .text:0x8000F0D4; // type:function size:0xAC +HuSprScissorSet = .text:0x8000F180; // type:function size:0x58 +HuSprAnimMake = .text:0x8000F1D8; // type:function size:0x1FC +HuSprBGSet = .text:0x8000F3D4; // type:function size:0x68 +HuSprSprBGSet = .text:0x8000F43C; // type:function size:0x50 +AnimDebug = .text:0x8000F48C; // type:function size:0x214 +HuSprDispInit = .text:0x8000F6A0; // type:function size:0x158 +HuSprDisp = .text:0x8000F7F8; // type:function size:0xECC +HuSprTexLoad = .text:0x800106C4; // type:function size:0x29C +HuSprExecLayerSet = .text:0x80010960; // type:function size:0x58 +HuSprLayerHook = .text:0x800109B8; // type:function size:0x178 scope:local +LoadHSF = .text:0x80010B30; // type:function size:0xB0 +ClusterAdjustObject = .text:0x80010BE0; // type:function size:0xA0 +FileLoad = .text:0x80010C80; // type:function size:0xC8 scope:local +SetHsfModel = .text:0x80010D48; // type:function size:0x284 scope:local +SetName = .text:0x80010FCC; // type:function size:0x38 +MaterialLoad = .text:0x80011004; // type:function size:0x210 scope:local +AttributeLoad = .text:0x80011214; // type:function size:0xF8 scope:local +SceneLoad = .text:0x8001130C; // type:function size:0x80 scope:local +ColorLoad = .text:0x8001138C; // type:function size:0x130 scope:local +VertexLoad = .text:0x800114BC; // type:function size:0x1C0 scope:local +NormalLoad = .text:0x8001167C; // type:function size:0x128 scope:local +STLoad = .text:0x800117A4; // type:function size:0x1A8 scope:local +FaceLoad = .text:0x8001194C; // type:function size:0x190 scope:local +DispObject = .text:0x80011ADC; // type:function size:0x7A8 scope:local +ObjectLoad = .text:0x80012284; // type:function size:0x15C scope:local +CenvLoad = .text:0x800123E0; // type:function size:0x464 scope:local +SkeletonLoad = .text:0x80012844; // type:function size:0x198 scope:local +PartLoad = .text:0x800129DC; // type:function size:0x12C scope:local +ClusterLoad = .text:0x80012B08; // type:function size:0x1E8 scope:local +ShapeLoad = .text:0x80012CF0; // type:function size:0x168 scope:local +MapAttrLoad = .text:0x80012E58; // type:function size:0xD0 scope:local +BitmapLoad = .text:0x80012F28; // type:function size:0x174 scope:local +PaletteLoad = .text:0x8001309C; // type:function size:0x16C scope:local +MakeObjectName = .text:0x80013208; // type:function size:0xE8 +CmpObjectName = .text:0x800132F0; // type:function size:0x38 +MotionLoad = .text:0x80013328; // type:function size:0x938 scope:local +MatrixLoad = .text:0x80013C60; // type:function size:0x80 scope:local +SearchObjectSetName = .text:0x80013CE0; // type:function size:0x94 scope:local +SearchVertexPtr = .text:0x80013D74; // type:function size:0x44 scope:local +SearchNormalPtr = .text:0x80013DB8; // type:function size:0x44 scope:local +SearchStPtr = .text:0x80013DFC; // type:function size:0x44 scope:local +SearchColorPtr = .text:0x80013E40; // type:function size:0x44 scope:local +SearchFacePtr = .text:0x80013E84; // type:function size:0x44 scope:local +SearchCenvPtr = .text:0x80013EC8; // type:function size:0x44 scope:local +SearchPartPtr = .text:0x80013F0C; // type:function size:0x44 scope:local +SearchPalettePtr = .text:0x80013F50; // type:function size:0x3C scope:local +SearchBitmapPtr = .text:0x80013F8C; // type:function size:0x44 scope:local +GetString = .text:0x80013FD0; // type:function size:0x24 scope:local +GetMotionString = .text:0x80013FF4; // type:function size:0x24 scope:local +Hu3DDrawPreInit = .text:0x80014018; // type:function size:0xC +Hu3DDraw = .text:0x80014024; // type:function size:0x1A0 +objCall = .text:0x800141C4; // type:function size:0xEC scope:local +objMesh = .text:0x800142B0; // type:function size:0x86C scope:local +ObjCullCheck = .text:0x80014B1C; // type:function size:0x4C0 +FaceDraw = .text:0x80014FDC; // type:function size:0x10DC +SetTevStageNoTex = .text:0x800160B8; // type:function size:0x8E8 scope:local +SetTevStageTex = .text:0x800169A0; // type:function size:0x2588 scope:local +SetKColor = .text:0x80018F28; // type:function size:0x164 scope:local +SetKColorRGB = .text:0x8001908C; // type:function size:0x180 scope:local +FlushKColor = .text:0x8001920C; // type:function size:0xB0 scope:local +SetReflect = .text:0x800192BC; // type:function size:0x280 scope:local +SetProjection = .text:0x8001953C; // type:function size:0x29C scope:local +SetShadowTex = .text:0x800197D8; // type:function size:0x8C scope:local +SetShadow = .text:0x80019864; // type:function size:0xCC scope:local +FaceDrawShadow = .text:0x80019930; // type:function size:0x5E4 scope:local +LoadTexture = .text:0x80019F14; // type:function size:0x75C scope:local +objNull = .text:0x8001A670; // type:function size:0x248 scope:local +objRoot = .text:0x8001A8B8; // type:function size:0x198 scope:local +objJoint = .text:0x8001AA50; // type:function size:0x248 scope:local +objMap = .text:0x8001AC98; // type:function size:0x17C scope:local +objReplica = .text:0x8001AE14; // type:function size:0x1B4 scope:local +Hu3DDrawPost = .text:0x8001AFC8; // type:function size:0xB00 +ObjDraw = .text:0x8001BAC8; // type:function size:0x6D0 scope:local +MakeDisplayList = .text:0x8001C198; // type:function size:0xBC +MDObjCall = .text:0x8001C254; // type:function size:0x438 scope:local +MDObjMesh = .text:0x8001C68C; // type:function size:0x2A8 scope:local +ObjConstantMake = .text:0x8001C934; // type:function size:0x68 +MDFaceDraw = .text:0x8001C99C; // type:function size:0xD08 scope:local +MakeCalcNBT = .text:0x8001D6A4; // type:function size:0x3A8 scope:local +MakeNBT = .text:0x8001DA4C; // type:function size:0x2C4 scope:local +MDFaceCnt = .text:0x8001DD10; // type:function size:0x2C8 scope:local +mtxTransCat = .text:0x8001DFD8; // type:function size:0x4C +mtxRotCat = .text:0x8001E024; // type:function size:0xF4 +mtxRot = .text:0x8001E118; // type:function size:0xF0 +mtxScaleCat = .text:0x8001E208; // type:function size:0x70 +HmfInverseMtxF3X3 = .text:0x8001E278; // type:function size:0x1E0 +SetDefLight = .text:0x8001E458; // type:function size:0x190 +Hu3DModelObjPosGet = .text:0x8001E5E8; // type:function size:0x90 +Hu3DModelObjMtxGet = .text:0x8001E678; // type:function size:0x318 +PGObjCall = .text:0x8001E990; // type:function size:0x80 +PGObjCalc = .text:0x8001EA10; // type:function size:0x7B0 +PGObjReplica = .text:0x8001F1C0; // type:function size:0x574 +Hu3DObjDuplicate = .text:0x8001F734; // type:function size:0x158 +Hu3DModelObjDrawInit = .text:0x8001F88C; // type:function size:0x90 +Hu3DModelObjDraw = .text:0x8001F91C; // type:function size:0x90 +Hu3DInit = .text:0x8001F9AC; // type:function size:0x220 +Hu3DPreProc = .text:0x8001FBCC; // type:function size:0xD8 +Hu3DExec = .text:0x8001FCA4; // type:function size:0x688 +Hu3DAllKill = .text:0x8002032C; // type:function size:0x158 +Hu3DBGColorSet = .text:0x80020484; // type:function size:0x18 +Hu3DLayerHookSet = .text:0x8002049C; // type:function size:0x1C +Hu3DPauseSet = .text:0x800204B8; // type:function size:0xC +Hu3DNoSyncSet = .text:0x800204C4; // type:function size:0xC +Hu3DModelCreate = .text:0x800204D0; // type:function size:0x330 +Hu3DModelLink = .text:0x80020800; // type:function size:0x2E8 +Hu3DHookFuncCreate = .text:0x80020AE8; // type:function size:0x1C8 +Hu3DModelKill = .text:0x80020CB0; // type:function size:0x34C +Hu3DModelAllKill = .text:0x80020FFC; // type:function size:0xD0 +Hu3DModelPosSet = .text:0x800210CC; // type:function size:0x34 +Hu3DModelPosSetV = .text:0x80021100; // type:function size:0x40 +Hu3DModelRotSet = .text:0x80021140; // type:function size:0x34 +Hu3DModelRotSetV = .text:0x80021174; // type:function size:0x40 +Hu3DModelScaleSet = .text:0x800211B4; // type:function size:0x34 +Hu3DModelScaleSetV = .text:0x800211E8; // type:function size:0x40 +Hu3DModelAttrSet = .text:0x80021228; // type:function size:0x54 +Hu3DModelAttrReset = .text:0x8002127C; // type:function size:0x50 +Hu3DModelAttrGet = .text:0x800212CC; // type:function size:0x2C +Hu3DModelMotionAttrGet = .text:0x800212F8; // type:function size:0x2C +Hu3DModelClusterAttrSet = .text:0x80021324; // type:function size:0x44 +Hu3DModelClusterAttrReset = .text:0x80021368; // type:function size:0x44 +Hu3DModelCameraSet = .text:0x800213AC; // type:function size:0x2C +Hu3DModelLayerSet = .text:0x800213D8; // type:function size:0x6C +Hu3DModelObjPtrGet = .text:0x80021444; // type:function size:0xD8 +Hu3DModelTPLvlSet = .text:0x8002151C; // type:function size:0xF8 +Hu3DModelHiliteMapSet = .text:0x80021614; // type:function size:0x98 +Hu3DModelShadowSet = .text:0x800216AC; // type:function size:0xB0 +Hu3DModelShadowReset = .text:0x8002175C; // type:function size:0xA0 +Hu3DModelShadowDispOn = .text:0x800217FC; // type:function size:0x34 +Hu3DModelShadowDispOff = .text:0x80021830; // type:function size:0x34 +Hu3DModelShadowMapSet = .text:0x80021864; // type:function size:0x88 +Hu3DModelShadowMapObjSet = .text:0x800218EC; // type:function size:0xBC +Hu3DModelAmbSet = .text:0x800219A8; // type:function size:0x34 +Hu3DModelHookSet = .text:0x800219DC; // type:function size:0xEC +Hu3DModelHookReset = .text:0x80021AC8; // type:function size:0xB4 +Hu3DModelHookObjReset = .text:0x80021B7C; // type:function size:0xF0 +Hu3DModelProjectionSet = .text:0x80021C6C; // type:function size:0x44 +Hu3DModelProjectionReset = .text:0x80021CB0; // type:function size:0x44 +Hu3DModelHiliteTypeSet = .text:0x80021CF4; // type:function size:0xBC +Hu3DModelReflectTypeSet = .text:0x80021DB0; // type:function size:0x30 +Hu3DCameraCreate = .text:0x80021DE0; // type:function size:0x134 +Hu3DCameraPerspectiveSet = .text:0x80021F14; // type:function size:0x80 +Hu3DCameraViewportSet = .text:0x80021F94; // type:function size:0x88 +Hu3DCameraScissorSet = .text:0x8002201C; // type:function size:0x90 +Hu3DCameraPosSet = .text:0x800220AC; // type:function size:0x98 +Hu3DCameraPosSetV = .text:0x80022144; // type:function size:0xB8 +Hu3DCameraKill = .text:0x800221FC; // type:function size:0x78 +Hu3DCameraAllKill = .text:0x80022274; // type:function size:0xD0 +Hu3DCameraSet = .text:0x80022344; // type:function size:0xDC +Hu3DModelCameraInfoSet = .text:0x80022420; // type:function size:0x3C0 +Hu3DModelCameraCreate = .text:0x800227E0; // type:function size:0x88 +Hu3DCameraMotionOn = .text:0x80022868; // type:function size:0x58 +Hu3DCameraMotionStart = .text:0x800228C0; // type:function size:0xD4 +Hu3DCameraMotionOff = .text:0x80022994; // type:function size:0x34 +Hu3DLighInit = .text:0x800229C8; // type:function size:0x74 +Hu3DGLightCreate = .text:0x80022A3C; // type:function size:0xA0 +Hu3DGLightCreateV = .text:0x80022ADC; // type:function size:0x104 +Hu3DLLightCreate = .text:0x80022BE0; // type:function size:0xA8 +Hu3DLLightCreateV = .text:0x80022C88; // type:function size:0x17C +Hu3DGLightSpotSet = .text:0x80022E04; // type:function size:0x44 +Hu3DLLightSpotSet = .text:0x80022E48; // type:function size:0x6C +Hu3DGLightInfinitytSet = .text:0x80022EB4; // type:function size:0x48 +Hu3DLLightInfinitytSet = .text:0x80022EFC; // type:function size:0x70 +Hu3DGLightPointSet = .text:0x80022F6C; // type:function size:0x58 +Hu3DLLightPointSet = .text:0x80022FC4; // type:function size:0x80 +Hu3DGLightKill = .text:0x80023044; // type:function size:0x20 +Hu3DLLightKill = .text:0x80023064; // type:function size:0xBC +Hu3DLightAllKill = .text:0x80023120; // type:function size:0x68 +Hu3DGLightColorSet = .text:0x80023188; // type:function size:0x38 +Hu3DLLightColorSet = .text:0x800231C0; // type:function size:0x60 +Hu3DGLightPosSetV = .text:0x80023220; // type:function size:0x70 +Hu3DLLightPosSetV = .text:0x80023290; // type:function size:0x9C +Hu3DGLightPosSet = .text:0x8002332C; // type:function size:0x90 +Hu3DLLightPosSet = .text:0x800233BC; // type:function size:0xBC +Hu3DGLightPosAimSetV = .text:0x80023478; // type:function size:0x80 +Hu3DLLightPosAimSetV = .text:0x800234F8; // type:function size:0xAC +Hu3DGLightPosAimSet = .text:0x800235A4; // type:function size:0xC4 +Hu3DLLightPosAimSet = .text:0x80023668; // type:function size:0xF0 +Hu3DGLightStaticSet = .text:0x80023758; // type:function size:0x54 +Hu3DLLightStaticSet = .text:0x800237AC; // type:function size:0x7C +Hu3DModelLightInfoSet = .text:0x80023828; // type:function size:0x4D0 +Hu3DLightSet = .text:0x80023CF8; // type:function size:0x130 +lightSet = .text:0x80023E28; // type:function size:0x254 scope:local +Hu3DReflectMapSet = .text:0x8002407C; // type:function size:0x68 +Hu3DReflectNoSet = .text:0x800240E4; // type:function size:0x8 +Hu3DFogSet = .text:0x800240EC; // type:function size:0x60 +Hu3DFogClear = .text:0x8002414C; // type:function size:0x74 +Hu3DShadowCreate = .text:0x800241C0; // type:function size:0x188 +Hu3DShadowPosSet = .text:0x80024348; // type:function size:0x64 +Hu3DShadowTPLvlSet = .text:0x800243AC; // type:function size:0x2C +Hu3DShadowSizeSet = .text:0x800243D8; // type:function size:0x78 +Hu3DShadowExec = .text:0x80024450; // type:function size:0x860 +Hu3DProjectionCreate = .text:0x80024CB0; // type:function size:0x130 +Hu3DProjectionKill = .text:0x80024DE0; // type:function size:0x60 +Hu3DProjectionPosSet = .text:0x80024E40; // type:function size:0x88 +Hu3DProjectionTPLvlSet = .text:0x80024EC8; // type:function size:0x38 +Hu3DMipMapSet = .text:0x80024F00; // type:function size:0x1E8 +Hu3DMotionInit = .text:0x800250E8; // type:function size:0x48 +Hu3DMotionCreate = .text:0x80025130; // type:function size:0xA4 +Hu3DMotionModelCreate = .text:0x800251D4; // type:function size:0xC4 +Hu3DMotionKill = .text:0x80025298; // type:function size:0x114 +Hu3DMotionAllKill = .text:0x800253AC; // type:function size:0x11C +Hu3DMotionSet = .text:0x800254C8; // type:function size:0xBC +Hu3DMotionOverlaySet = .text:0x80025584; // type:function size:0x54 +Hu3DMotionOverlayReset = .text:0x800255D8; // type:function size:0x20 +Hu3DMotionOverlayTimeGet = .text:0x800255F8; // type:function size:0x1C +Hu3DMotionOverlayTimeSet = .text:0x80025614; // type:function size:0x1C +Hu3DMotionOverlaySpeedSet = .text:0x80025630; // type:function size:0x1C +Hu3DMotionShiftSet = .text:0x8002564C; // type:function size:0x1F4 +Hu3DMotionShapeSet = .text:0x80025840; // type:function size:0xBC +Hu3DMotionShapeIDGet = .text:0x800258FC; // type:function size:0x1C +Hu3DMotionShapeSpeedSet = .text:0x80025918; // type:function size:0x2C +Hu3DMotionShapeTimeSet = .text:0x80025944; // type:function size:0x1C +Hu3DMotionShapeMaxTimeGet = .text:0x80025960; // type:function size:0x44 +Hu3DMotionShapeStartEndSet = .text:0x800259A4; // type:function size:0x30 +Hu3DMotionClusterSet = .text:0x800259D4; // type:function size:0x114 +Hu3DMotionClusterNoSet = .text:0x80025AE8; // type:function size:0xD0 +Hu3DMotionShapeReset = .text:0x80025BB8; // type:function size:0x20 +Hu3DMotionClusterReset = .text:0x80025BD8; // type:function size:0xC8 +Hu3DMotionIDGet = .text:0x80025CA0; // type:function size:0x2C +Hu3DMotionShiftIDGet = .text:0x80025CCC; // type:function size:0x2C +Hu3DMotionTimeSet = .text:0x80025CF8; // type:function size:0xF4 +Hu3DMotionTimeGet = .text:0x80025DEC; // type:function size:0x2C +Hu3DMotionShiftTimeGet = .text:0x80025E18; // type:function size:0x2C +Hu3DMotionMaxTimeGet = .text:0x80025E44; // type:function size:0xA8 +Hu3DMotionShiftMaxTimeGet = .text:0x80025EEC; // type:function size:0xA8 +Hu3DMotionShiftStartEndSet = .text:0x80025F94; // type:function size:0x30 +Hu3DMotionMotionMaxTimeGet = .text:0x80025FC4; // type:function size:0x8C +Hu3DMotionStartEndSet = .text:0x80026050; // type:function size:0x30 +Hu3DMotionEndCheck = .text:0x80026080; // type:function size:0x170 +Hu3DMotionSpeedSet = .text:0x800261F0; // type:function size:0x2C +Hu3DMotionShiftSpeedSet = .text:0x8002621C; // type:function size:0x2C +Hu3DMotionNoMotSet = .text:0x80026248; // type:function size:0x114 +Hu3DMotionNoMotReset = .text:0x8002635C; // type:function size:0x5C +Hu3DMotionForceSet = .text:0x800263B8; // type:function size:0x108 +Hu3DMotionNext = .text:0x800264C0; // type:function size:0x798 +Hu3DMotionExec = .text:0x80026C58; // type:function size:0x534 +Hu3DCameraMotionExec = .text:0x8002718C; // type:function size:0xC0 +Hu3DSubMotionExec = .text:0x8002724C; // type:function size:0x2A8 +GetObjTRXPtr = .text:0x800274F4; // type:function size:0x14C scope:weak +SetObjMatMotion = .text:0x80027640; // type:function size:0x208 +SetObjAttrMotion = .text:0x80027848; // type:function size:0x218 +SetObjCameraMotion = .text:0x80027A60; // type:function size:0x558 +SetObjLightMotion = .text:0x80027FB8; // type:function size:0x1D8 +GetCurve = .text:0x80028190; // type:function size:0xD8 +GetConstant = .text:0x80028268; // type:function size:0x70 +GetLinear = .text:0x800282D8; // type:function size:0x110 +GetBezier = .text:0x800283E8; // type:function size:0x200 scope:weak +GetBitMap = .text:0x800285E8; // type:function size:0x64 +Hu3DJointMotion = .text:0x8002864C; // type:function size:0xCC +JointModel_Motion = .text:0x80028718; // type:function size:0x124 +Hu3DMotionCalc = .text:0x8002883C; // type:function size:0x19C +SearchObjectIndex = .text:0x800289D8; // type:function size:0x90 scope:local +SearchAttributeIndex = .text:0x80028A68; // type:function size:0x9C scope:local +Hu3DAnimInit = .text:0x80028B04; // type:function size:0x7C +Hu3DAnimCreate = .text:0x80028B80; // type:function size:0x1D0 +Hu3DAnimLink = .text:0x80028D50; // type:function size:0x1C4 +Hu3DAnimKill = .text:0x80028F14; // type:function size:0x104 +Hu3DAnimModelKill = .text:0x80029018; // type:function size:0x13C +Hu3DAnimAllKill = .text:0x80029154; // type:function size:0x134 +Hu3DAnimAttrSet = .text:0x80029288; // type:function size:0x34 +Hu3DAnimAttrReset = .text:0x800292BC; // type:function size:0x38 +Hu3DAnimSpeedSet = .text:0x800292F4; // type:function size:0x2C +Hu3DAnimBankSet = .text:0x80029320; // type:function size:0x48 +Hu3DAnmNoSet = .text:0x80029368; // type:function size:0x38 +Hu3DAnimSet = .text:0x800293A0; // type:function size:0x240 +Hu3DAnimExec = .text:0x800295E0; // type:function size:0x474 +Hu3DTexScrollCreate = .text:0x80029A54; // type:function size:0x1AC +Hu3DTexScrollKill = .text:0x80029C00; // type:function size:0xE0 +Hu3DTexScrollAllKill = .text:0x80029CE0; // type:function size:0x10C +Hu3DTexScrollPosSet = .text:0x80029DEC; // type:function size:0x44 +Hu3DTexScrollPosMoveSet = .text:0x80029E30; // type:function size:0xA4 +Hu3DTexScrollRotSet = .text:0x80029ED4; // type:function size:0x3C +Hu3DTexScrollRotMoveSet = .text:0x80029F10; // type:function size:0x5C +Hu3DTexScrollPauseDisableSet = .text:0x80029F6C; // type:function size:0x54 +Hu3DParticleCreate = .text:0x80029FC0; // type:function size:0x348 +Hu3DParticleScaleSet = .text:0x8002A308; // type:function size:0x6C +Hu3DParticleZRotSet = .text:0x8002A374; // type:function size:0x6C +Hu3DParticleColSet = .text:0x8002A3E0; // type:function size:0x74 +Hu3DParticleTPLvlSet = .text:0x8002A454; // type:function size:0x80 +Hu3DParticleBlendModeSet = .text:0x8002A4D4; // type:function size:0x38 +Hu3DParticleHookSet = .text:0x8002A50C; // type:function size:0x38 +Hu3DParticleAttrSet = .text:0x8002A544; // type:function size:0x40 +Hu3DParticleAttrReset = .text:0x8002A584; // type:function size:0x44 +Hu3DParticleCntSet = .text:0x8002A5C8; // type:function size:0x3C +Hu3DParticleAnimModeSet = .text:0x8002A604; // type:function size:0x60 +particleFunc = .text:0x8002A664; // type:function size:0xAD4 scope:local +Hu3DParManInit = .text:0x8002B138; // type:function size:0x48 +Hu3DParManCreate = .text:0x8002B180; // type:function size:0x1D4 +Hu3DParManLink = .text:0x8002B354; // type:function size:0x17C +Hu3DParManKill = .text:0x8002B4D0; // type:function size:0x190 +Hu3DParManAllKill = .text:0x8002B660; // type:function size:0x1C4 +Hu3DParManPtrGet = .text:0x8002B824; // type:function size:0x20 +Hu3DParManPosSet = .text:0x8002B844; // type:function size:0x3C +Hu3DParManVecSet = .text:0x8002B880; // type:function size:0x3C +Hu3DParManRotSet = .text:0x8002B8BC; // type:function size:0x7C +Hu3DParManAttrSet = .text:0x8002B938; // type:function size:0x40 +Hu3DParManAttrReset = .text:0x8002B978; // type:function size:0x40 +Hu3DParManModelIDGet = .text:0x8002B9B8; // type:function size:0x34 +Hu3DParManTimeLimitSet = .text:0x8002B9EC; // type:function size:0x38 +Hu3DParManVacumeSet = .text:0x8002BA24; // type:function size:0x74 +Hu3DParManColorSet = .text:0x8002BA98; // type:function size:0x68 +ParManFunc = .text:0x8002BB00; // type:function size:0xBC0 scope:local +ParManHook = .text:0x8002C6C0; // type:function size:0x4B4 scope:local +CamMotionEx2 = .text:0x8002CB74; // type:function size:0xAC +CamMotionEx = .text:0x8002CC20; // type:function size:0xA14 +SetObjCamMotion = .text:0x8002D634; // type:function size:0x244 scope:local +InterpolateBMLine = .text:0x8002D878; // type:function size:0x40C +Hu3D2Dto3D = .text:0x8002DC84; // type:function size:0x1D4 +Hu3D3Dto2D = .text:0x8002DE58; // type:function size:0x1D0 +Hu3DMtxTransGet = .text:0x8002E028; // type:function size:0x1C +Hu3DMtxRotGet = .text:0x8002E044; // type:function size:0x540 +Hu3DMtxScaleGet = .text:0x8002E584; // type:function size:0x1C8 +HuPerfInit = .text:0x8002E74C; // type:function size:0x94 +HuPerfCreate = .text:0x8002E7E0; // type:function size:0x130 +HuPerfZero = .text:0x8002E910; // type:function size:0x40 +HuPerfBegin = .text:0x8002E950; // type:function size:0x7C +HuPerfEnd = .text:0x8002E9CC; // type:function size:0xA0 +DSCallbackFunc = .text:0x8002EA6C; // type:function size:0x16C scope:local +omMasterInit = .text:0x8002EBD8; // type:function size:0x90 +omWatchOverlayProc = .text:0x8002EC68; // type:function size:0x170 scope:local +omOvlCallEx = .text:0x8002EDD8; // type:function size:0xE8 +omOvlGotoEx = .text:0x8002EEC0; // type:function size:0x60 +omOvlReturnEx = .text:0x8002EF20; // type:function size:0xF4 +omOvlKill = .text:0x8002F014; // type:function size:0xB8 +omOvlHisChg = .text:0x8002F0CC; // type:function size:0xA0 +omOvlHisGet = .text:0x8002F16C; // type:function size:0x78 +omInitObjMan = .text:0x8002F1E4; // type:function size:0x220 +omDestroyObjMan = .text:0x8002F404; // type:function size:0x50 +omAddObjEx = .text:0x8002F454; // type:function size:0x1DC +omInsertObj = .text:0x8002F630; // type:function size:0xF8 +omAddMember = .text:0x8002F728; // type:function size:0x84 +omDelObjEx = .text:0x8002F7AC; // type:function size:0x190 +omDelMember = .text:0x8002F93C; // type:function size:0x88 +omMakeGroupEx = .text:0x8002F9C4; // type:function size:0xFC +omGetGroupMemberListEx = .text:0x8002FAC0; // type:function size:0x2C +omSetStatBit = .text:0x8002FAEC; // type:function size:0x10 +omResetStatBit = .text:0x8002FAFC; // type:function size:0x14 +omSetTra = .text:0x8002FB10; // type:function size:0x10 +omSetRot = .text:0x8002FB20; // type:function size:0x10 +omSetSca = .text:0x8002FB30; // type:function size:0x10 +omMain = .text:0x8002FB40; // type:function size:0x2F8 +omAllPause = .text:0x8002FE38; // type:function size:0xE0 +omPauseChk = .text:0x8002FF18; // type:function size:0x2C +omCurrentOvlGet = .text:0x8002FF44; // type:function size:0x8 +OSPanic = .text:0x8002FF4C; // type:function size:0x150 +HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118 +HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34 +XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98 scope:local +XFB_CR = .text:0x80030280; // type:function size:0x50 scope:local +XFB_puts = .text:0x800302D0; // type:function size:0xF4 scope:local +XFB_putcS = .text:0x800303C4; // type:function size:0x150 scope:local +XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0 scope:local +XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 scope:local +GWInit = .text:0x800308B8; // type:function size:0x14C +GWGameStatReset = .text:0x80030A04; // type:function size:0x318 +GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C +GWMGRecordSet = .text:0x80030D68; // type:function size:0x54 +GWMGRecordGet = .text:0x80030DBC; // type:function size:0x18 +GWCharColorGet = .text:0x80030DD4; // type:function size:0x140 +GWBoardPlayCountSet = .text:0x80030F14; // type:function size:0x24 +GWBoardPlayCountAdd = .text:0x80030F38; // type:function size:0x38 +GWBoardPlayCountGet = .text:0x80030F70; // type:function size:0x14 +GWBoardMaxStarsSet = .text:0x80030F84; // type:function size:0x1C +GWBoardMaxStarsGet = .text:0x80030FA0; // type:function size:0x18 +GWBoardMaxCoinsSet = .text:0x80030FB8; // type:function size:0x1C +GWBoardMaxCoinsGet = .text:0x80030FD4; // type:function size:0x18 +GWBoardWinCountInc = .text:0x80030FEC; // type:function size:0x5C +GWBoardWinCountGet = .text:0x80031048; // type:function size:0x1C +GWBoardWinCountSet = .text:0x80031064; // type:function size:0x20 +GWMGAvailGet = .text:0x80031084; // type:function size:0x6C +GWMGAvailSet = .text:0x800310F0; // type:function size:0x5C +GWMGCustomGet = .text:0x8003114C; // type:function size:0x6C +GWMGCustomSet = .text:0x800311B8; // type:function size:0x5C +GWMGCustomReset = .text:0x80031214; // type:function size:0x60 +GWCoinsGet = .text:0x80031274; // type:function size:0x18 +GWCoinsSet = .text:0x8003128C; // type:function size:0xB0 +GWCoinsAdd = .text:0x8003133C; // type:function size:0xD0 +GWStarsSet = .text:0x8003140C; // type:function size:0x6C +GWStarsAdd = .text:0x80031478; // type:function size:0x94 +GWStarsGet = .text:0x8003150C; // type:function size:0x18 +GWTotalStarsSet = .text:0x80031524; // type:function size:0x34 +GWTotalStarsAdd = .text:0x80031558; // type:function size:0x54 +GWTotalStarsGet = .text:0x800315AC; // type:function size:0x10 +omOutView = .text:0x800315BC; // type:function size:0x238 +omOutViewMulti = .text:0x800317F4; // type:function size:0x2C4 +omSystemKeyCheckSetup = .text:0x80031AB8; // type:function size:0x74 +omSystemKeyCheck = .text:0x80031B2C; // type:function size:0x230 +omSysPauseEnable = .text:0x80031D5C; // type:function size:0x8 +omSysPauseCtrl = .text:0x80031D64; // type:function size:0x50 +omDLLDBGOut = .text:0x80031DB4; // type:function size:0x2C +omDLLInit = .text:0x80031DE0; // type:function size:0x6C +omDLLStart = .text:0x80031E4C; // type:function size:0x154 +omDLLNumEnd = .text:0x80031FA0; // type:function size:0xB4 +omDLLEnd = .text:0x80032054; // type:function size:0x13C +omDLLLink = .text:0x80032190; // type:function size:0x138 +omDLLUnlink = .text:0x800322C8; // type:function size:0xB4 +omDLLSearch = .text:0x8003237C; // type:function size:0xC8 +omDLLInfoDump = .text:0x80032444; // type:function size:0xD0 +omDLLHeaderDump = .text:0x80032514; // type:function size:0xE0 +frand = .text:0x800325F4; // type:function size:0xAC +frandf = .text:0x800326A0; // type:function size:0xD8 +frandmod = .text:0x80032778; // type:function size:0xB8 +HuAudInit = .text:0x80032830; // type:function size:0x170 +HuAudStreamPlay = .text:0x800329A0; // type:function size:0x8 +HuAudStreamVolSet = .text:0x800329A8; // type:function size:0x3C +HuAudStreamPauseOn = .text:0x800329E4; // type:function size:0x24 +HuAudStreamPauseOff = .text:0x80032A08; // type:function size:0x24 +HuAudStreamFadeOut = .text:0x80032A2C; // type:function size:0x4 +HuAudAllStop = .text:0x80032A30; // type:function size:0x28 +HuAudFadeOut = .text:0x80032A58; // type:function size:0x3C +HuAudFXPlay = .text:0x80032A94; // type:function size:0x80 +HuAudFXPlayVol = .text:0x80032B14; // type:function size:0x48 +HuAudFXPlayVolPan = .text:0x80032B5C; // type:function size:0x68 +HuAudFXStop = .text:0x80032BC4; // type:function size:0x2C +HuAudFXAllStop = .text:0x80032BF0; // type:function size:0x28 +HuAudFXFadeOut = .text:0x80032C18; // type:function size:0x30 +HuAudFXPanning = .text:0x80032C48; // type:function size:0x50 +HuAudFXListnerSet = .text:0x80032C98; // type:function size:0xA4 +HuAudFXListnerSetEX = .text:0x80032D3C; // type:function size:0x134 +HuAudFXListnerUpdate = .text:0x80032E70; // type:function size:0x3C +HuAudFXEmiterPlay = .text:0x80032EAC; // type:function size:0x6C +HuAudFXEmiterUpDate = .text:0x80032F18; // type:function size:0x64 +HuAudFXListnerKill = .text:0x80032F7C; // type:function size:0x20 +HuAudFXPauseAll = .text:0x80032F9C; // type:function size:0x2C +HuAudFXStatusGet = .text:0x80032FC8; // type:function size:0x28 +HuAudFXPitchSet = .text:0x80032FF0; // type:function size:0x54 +HuAudFXVolSet = .text:0x80033044; // type:function size:0x58 +HuAudSeqPlay = .text:0x8003309C; // type:function size:0x5C +HuAudSeqStop = .text:0x800330F8; // type:function size:0x48 +HuAudSeqFadeOut = .text:0x80033140; // type:function size:0x3C +HuAudSeqAllFadeOut = .text:0x8003317C; // type:function size:0x5C +HuAudSeqAllStop = .text:0x800331D8; // type:function size:0x28 +HuAudSeqPauseAll = .text:0x80033200; // type:function size:0x2C +HuAudSeqPause = .text:0x8003322C; // type:function size:0x54 +HuAudSeqMidiCtrlGet = .text:0x80033280; // type:function size:0x60 +HuAudSStreamPlay = .text:0x800332E0; // type:function size:0x64 +HuAudSStreamStop = .text:0x80033344; // type:function size:0x38 +HuAudSStreamFadeOut = .text:0x8003337C; // type:function size:0x3C +HuAudSStreamAllFadeOut = .text:0x800333B8; // type:function size:0x28 +HuAudSStreamAllStop = .text:0x800333E0; // type:function size:0x24 +HuAudSStreamStatGet = .text:0x80033404; // type:function size:0x28 +HuAudDllSndGrpSet = .text:0x8003342C; // type:function size:0x104 +HuAudSndGrpSetSet = .text:0x80033530; // type:function size:0x1A4 +HuAudSndGrpSet = .text:0x800336D4; // type:function size:0x60 +HuAudSndCommonGrpSet = .text:0x80033734; // type:function size:0x154 +HuAudAUXSet = .text:0x80033888; // type:function size:0x58 +HuAudAUXVolSet = .text:0x800338E0; // type:function size:0xC +HuAudVoiceInit = .text:0x800338EC; // type:function size:0x294 +HuAudPlayerVoicePlay = .text:0x80033B80; // type:function size:0x50 +HuAudPlayerVoicePlayPos = .text:0x80033BD0; // type:function size:0x58 +HuAudPlayerVoicePlayEntry = .text:0x80033C28; // type:function size:0x50 +HuAudCharVoicePlay = .text:0x80033C78; // type:function size:0xAC +HuAudCharVoicePlayPos = .text:0x80033D24; // type:function size:0xD0 +HuAudCharVoicePlayEntry = .text:0x80033DF4; // type:function size:0x90 +HuSePlay = .text:0x80033E84; // type:function size:0x68 scope:local +InitEnvelope = .text:0x80033EEC; // type:function size:0x1A4 +SetEnvelopMtx = .text:0x80034090; // type:function size:0x23C scope:local +EnvelopeProc = .text:0x800342CC; // type:function size:0x80 +InitVtxParm = .text:0x8003434C; // type:function size:0x50 +SetEnvelopMain = .text:0x8003439C; // type:function size:0x158 scope:local +SetEnvelop = .text:0x800344F4; // type:function size:0x9F0 scope:local +SetMtx = .text:0x80034EE4; // type:function size:0x334 scope:local +SetRevMtx = .text:0x80035218; // type:function size:0x11C scope:local +SearchSklenton = .text:0x80035334; // type:function size:0x78 scope:local +MGSeqInit = .text:0x800353AC; // type:function size:0xBC +MGSeqMain = .text:0x80035468; // type:function size:0x188 +CreateSeq = .text:0x800355F0; // type:function size:0x1A4 scope:local +MGSeqCreate = .text:0x80035794; // type:function size:0x100 +MGSeqStatGet = .text:0x80035894; // type:function size:0x88 +MGSeqPosSet = .text:0x8003591C; // type:function size:0x4C +MGSeqParamSet = .text:0x80035968; // type:function size:0x4C +MGSeqKill = .text:0x800359B4; // type:function size:0x58 +MGSeqKillAll = .text:0x80035A0C; // type:function size:0x3C +MGSeqDoneCheck = .text:0x80035A48; // type:function size:0xA4 +MGSeqStub = .text:0x80035AEC; // type:function size:0x4 +MGSeqSprKill = .text:0x80035AF0; // type:function size:0x8C +MGSeqInitTimer = .text:0x80035B7C; // type:function size:0x2E0 +MGSeqUpdateTimer = .text:0x80035E5C; // type:function size:0x69C +MGSeqInitType2 = .text:0x800364F8; // type:function size:0x3D8 +MGSeqUpdateType2 = .text:0x800368D0; // type:function size:0x2F8 +fn_80036BC8 = .text:0x80036BC8; // type:function size:0x188 +SeqMakeWord = .text:0x80036D50; // type:function size:0x1D0 scope:local +SeqLoadFontChar = .text:0x80036F20; // type:function size:0x26C scope:local +MGSeqInitMGBasic = .text:0x8003718C; // type:function size:0x194 +MGSeqUpdateMGBasic = .text:0x80037320; // type:function size:0x9D0 +MGSeqInitMGCommon = .text:0x80037CF0; // type:function size:0x2A4 +MGSeqUpdateMGBattle = .text:0x80037F94; // type:function size:0xDA4 +MGSeqUpdateMG1vs3 = .text:0x80038D38; // type:function size:0xDA4 +MGSeqUpdateMGStory = .text:0x80039ADC; // type:function size:0xBB8 +MGSeqUpdateMG2vs2 = .text:0x8003A694; // type:function size:0xAB4 +MGSeqInitFlip = .text:0x8003B148; // type:function size:0x3C4 +MGSeqUpdateFlip = .text:0x8003B50C; // type:function size:0x91C +MGSeqUpdateMGBowser = .text:0x8003BE28; // type:function size:0xC84 +MGSeqInitDraw = .text:0x8003CAAC; // type:function size:0xDC +MGSeqUpdateDraw = .text:0x8003CB88; // type:function size:0x3DC +MGSeqInitWin = .text:0x8003CF64; // type:function size:0x8A0 +MGSeqUpdateWin = .text:0x8003D804; // type:function size:0x72C +MGSeqInitRecord = .text:0x8003DF30; // type:function size:0x774 +MGSeqUpdateRecord = .text:0x8003E6A4; // type:function size:0x304 +MGSeqPauseInit = .text:0x8003E9A8; // type:function size:0x6C +PauseProc = .text:0x8003EA14; // type:function size:0x94C scope:local +MGSeqPauseKill = .text:0x8003F360; // type:function size:0xC +MGSeqPauseEnableCtrl = .text:0x8003F36C; // type:function size:0x40 +MGSeqPracticeInit = .text:0x8003F3AC; // type:function size:0xDC +PracticeProc = .text:0x8003F488; // type:function size:0x234 scope:local +SeqPlayStartFX = .text:0x8003F6BC; // type:function size:0xD4 scope:local +MGSeqPracticeExitCheck = .text:0x8003F790; // type:function size:0x128 +espInit = .text:0x8003F8B8; // type:function size:0xA0 +espEntry = .text:0x8003F958; // type:function size:0x1B0 +espKill = .text:0x8003FB08; // type:function size:0x98 +espGrpIDGet = .text:0x8003FBA0; // type:function size:0x8 +espDispOn = .text:0x8003FBA8; // type:function size:0x44 +espDispOff = .text:0x8003FBEC; // type:function size:0x44 +espAttrSet = .text:0x8003FC30; // type:function size:0x48 +espAttrReset = .text:0x8003FC78; // type:function size:0x48 +espPosSet = .text:0x8003FCC0; // type:function size:0x50 +espScaleSet = .text:0x8003FD10; // type:function size:0x50 +espZRotSet = .text:0x8003FD60; // type:function size:0x48 +espTPLvlSet = .text:0x8003FDA8; // type:function size:0x48 +espColorSet = .text:0x8003FDF0; // type:function size:0x58 +espSpeedSet = .text:0x8003FE48; // type:function size:0x48 +espBankSet = .text:0x8003FE90; // type:function size:0x48 +espDrawNoSet = .text:0x8003FED8; // type:function size:0x48 +espPriSet = .text:0x8003FF20; // type:function size:0x48 +fn_8003FF68 = .text:0x8003FF68; // type:function size:0x268 +fn_800401D0 = .text:0x800401D0; // type:function size:0x12C +fn_800402FC = .text:0x800402FC; // type:function size:0x78 +fn_80040374 = .text:0x80040374; // type:function size:0x98 +fn_8004040C = .text:0x8004040C; // type:function size:0xF4 +GetClusterCurve = .text:0x80040500; // type:function size:0xA8 +GetClusterWeightCurve = .text:0x800405A8; // type:function size:0xA8 +SetClusterMain = .text:0x80040650; // type:function size:0x3A0 +ClusterProc = .text:0x800409F0; // type:function size:0x160 +ClusterMotionExec = .text:0x80040B50; // type:function size:0x210 +SetShapeMain = .text:0x80040D60; // type:function size:0x36C scope:local +ShapeProc = .text:0x800410CC; // type:function size:0xA4 +WipeInit = .text:0x80041170; // type:function size:0xB4 +WipeExecAlways = .text:0x80041224; // type:function size:0x288 +WipeCreate = .text:0x800414AC; // type:function size:0x12C +WipeColorSet = .text:0x800415D8; // type:function size:0x28 +WipeStatGet = .text:0x80041600; // type:function size:0x10 +WipeDummyFade = .text:0x80041610; // type:function size:0x8 scope:local +WipeNormalFade = .text:0x80041618; // type:function size:0xFC scope:local +WipeColorFill = .text:0x80041714; // type:function size:0x31C scope:local +WipeCrossFade = .text:0x80041A30; // type:function size:0x184 scope:local +WipeFrameStill = .text:0x80041BB4; // type:function size:0x4C8 scope:local +HuWindowInit = .text:0x8004207C; // type:function size:0x74 +HuWinInit = .text:0x800420F0; // type:function size:0x214 +HuWinCreate = .text:0x80042304; // type:function size:0x544 +HuWinKill = .text:0x80042848; // type:function size:0xA4 +HuWinAllKill = .text:0x800428EC; // type:function size:0x1AC +MesDispFunc = .text:0x80042A98; // type:function size:0x7C4 scope:local +winBGMake = .text:0x8004325C; // type:function size:0x480 scope:local +HuWinProc = .text:0x800436DC; // type:function size:0xF4 scope:local +HuWinDrawMes = .text:0x800437D0; // type:function size:0x106C scope:local +HuWinCR = .text:0x8004483C; // type:function size:0x54 scope:local +_HuWinHomeClear = .text:0x80044890; // type:function size:0x90 scope:local +HuWinHomeClear = .text:0x80044920; // type:function size:0xA4 +HuWinKeyWaitEntry = .text:0x800449C4; // type:function size:0x88 +HuWinKeyWait = .text:0x80044A4C; // type:function size:0x10C scope:local +HuWinSpcFontEntry = .text:0x80044B58; // type:function size:0x1A4 scope:local +HuWinSpcFontClear = .text:0x80044CFC; // type:function size:0x80 scope:local +HuWinChoice = .text:0x80044D7C; // type:function size:0xA9C scope:local +HuWinActivePadGet = .text:0x80045818; // type:function size:0x68 +HuWinActiveKeyGetX = .text:0x80045880; // type:function size:0xE8 +HuWinPosSet = .text:0x80045968; // type:function size:0x6C +HuWinScaleSet = .text:0x800459D4; // type:function size:0x6C +HuWinZRotSet = .text:0x80045A40; // type:function size:0x58 +HuWinCenterPosSet = .text:0x80045A98; // type:function size:0xAC +HuWinDrawNoSet = .text:0x80045B44; // type:function size:0x4C +HuWinScissorSet = .text:0x80045B90; // type:function size:0x64 +HuWinPriSet = .text:0x80045BF4; // type:function size:0xB8 +HuWinAttrSet = .text:0x80045CAC; // type:function size:0x34 +HuWinAttrReset = .text:0x80045CE0; // type:function size:0x34 +HuWinStatGet = .text:0x80045D14; // type:function size:0x2C +HuWinMesColSet = .text:0x80045D40; // type:function size:0x3C +HuWinMesPalSet = .text:0x80045D7C; // type:function size:0x58 +HuWinBGTPLvlSet = .text:0x80045DD4; // type:function size:0x50 +HuWinBGColSet = .text:0x80045E24; // type:function size:0x60 +HuWinMesSpeedSet = .text:0x80045E84; // type:function size:0x2C +HuWinMesRead = .text:0x80045EB0; // type:function size:0xC4 +HuWinMesSet = .text:0x80045F74; // type:function size:0x398 +HuWinInsertMesSet = .text:0x8004630C; // type:function size:0xD8 +HuWinChoiceGet = .text:0x800463E4; // type:function size:0x27C +HuWinChoiceNumGet = .text:0x80046660; // type:function size:0x2C +HuWinChoiceDisable = .text:0x8004668C; // type:function size:0x38 +HuWinChoiceNowGet = .text:0x800466C4; // type:function size:0x40 +HuWinMesWait = .text:0x80046704; // type:function size:0x50 +HuWinAnimSet = .text:0x80046754; // type:function size:0x8C +HuWinSprSet = .text:0x800467E0; // type:function size:0xF0 +HuWinSprPosSet = .text:0x800468D0; // type:function size:0x88 +HuWinSprPriSet = .text:0x80046958; // type:function size:0x6C +HuWinSprIDGet = .text:0x800469C4; // type:function size:0x38 +HuWinSprKill = .text:0x800469FC; // type:function size:0x68 +HuWinDispOff = .text:0x80046A64; // type:function size:0x90 +HuWinDispOn = .text:0x80046AF4; // type:function size:0x90 +HuWinComKeyWait = .text:0x80046B84; // type:function size:0xC0 +HuWinComKeySet = .text:0x80046C44; // type:function size:0x44 +_HuWinComKeySet = .text:0x80046C88; // type:function size:0x98 +HuWinComKeyGet = .text:0x80046D20; // type:function size:0x1D4 +HuWinComKeyReset = .text:0x80046EF4; // type:function size:0x10 +HuWinMesMaxSizeGet = .text:0x80046F04; // type:function size:0x170 +HuWinInsertMesSizeGet = .text:0x80047074; // type:function size:0x54 +HuWinMesSizeCancelCRSet = .text:0x800470C8; // type:function size:0x8 +HuWinMesMaxSizeBetGet = .text:0x800470D0; // type:function size:0x114 +GetMesMaxSizeSub = .text:0x800471E4; // type:function size:0x2A0 scope:local +GetMesMaxSizeSub2 = .text:0x80047484; // type:function size:0x1CC scope:local +HuWinKeyWaitNumGet = .text:0x80047650; // type:function size:0x88 +HuWinPushKeySet = .text:0x800476D8; // type:function size:0x2C +HuWinDisablePlayerSet = .text:0x80047704; // type:function size:0x34 +HuWinDisablePlayerReset = .text:0x80047738; // type:function size:0x38 +HuWinExCreate = .text:0x80047770; // type:function size:0x4C +HuWinExCreateStyled = .text:0x800477BC; // type:function size:0x228 +HuWinExAnimIn = .text:0x800479E4; // type:function size:0x3B0 +HuWinExAnimOut = .text:0x80047D94; // type:function size:0x304 +HuWinExCleanup = .text:0x80048098; // type:function size:0xA4 +HuWinExAnimPopIn = .text:0x8004813C; // type:function size:0x264 +MessData_MesPtrGet = .text:0x800483A0; // type:function size:0xE8 +HuCardInit = .text:0x80048488; // type:function size:0x34 +HuCardCheck = .text:0x800484BC; // type:function size:0xC4 +HuCardSlotCheck = .text:0x80048580; // type:function size:0x58 +HuCardMount = .text:0x800485D8; // type:function size:0xEC +HuCardUnMount = .text:0x800486C4; // type:function size:0x28 +HuCardFormat = .text:0x800486EC; // type:function size:0x50 +MountCallBack = .text:0x8004873C; // type:function size:0x14 scope:local +HuCardOpen = .text:0x80048750; // type:function size:0x70 +HuCardRead = .text:0x800487C0; // type:function size:0x68 +HuCardCreate = .text:0x80048828; // type:function size:0x100 +HuCardClose = .text:0x80048928; // type:function size:0x38 +HuCardWrite = .text:0x80048960; // type:function size:0x50 +HuCardDelete = .text:0x800489B0; // type:function size:0x40 +HuCardSectorSizeGet = .text:0x800489F0; // type:function size:0x4C +HuCardFreeSpaceGet = .text:0x80048A3C; // type:function size:0x48 +HuARInit = .text:0x80048A84; // type:function size:0x148 +HuARMalloc = .text:0x80048BCC; // type:function size:0x16C +HuARFree = .text:0x80048D38; // type:function size:0x16C +HuAMemDump = .text:0x80048EA4; // type:function size:0xA8 +HuAR_DVDtoARAM = .text:0x80048F4C; // type:function size:0x160 +ArqCallBack = .text:0x800490AC; // type:function size:0x10 scope:local +HuAR_MRAMtoARAM = .text:0x800490BC; // type:function size:0x2C +HuAR_MRAMtoARAM2 = .text:0x800490E8; // type:function size:0x140 +HuAR_ARAMtoMRAM = .text:0x80049228; // type:function size:0x2C +HuAR_ARAMtoMRAMNum = .text:0x80049254; // type:function size:0x1F0 +ArqCallBackAM = .text:0x80049444; // type:function size:0x44 scope:local +HuARDMACheck = .text:0x80049488; // type:function size:0x8 +HuARDirCheck = .text:0x80049490; // type:function size:0x58 +HuARDirFree = .text:0x800494E8; // type:function size:0x68 +HuAR_ARAMtoMRAMFileRead = .text:0x80049550; // type:function size:0x390 +ArqCallBackAMFileRead = .text:0x800498E0; // type:function size:0x10 scope:local +CharManInit = .text:0x800498F0; // type:function size:0x134 +CharAMemPtrGet = .text:0x80049A24; // type:function size:0x1C +CharARAMOpen = .text:0x80049A40; // type:function size:0x98 +CharARAMClose = .text:0x80049AD8; // type:function size:0x58 +CharKill = .text:0x80049B30; // type:function size:0x428 +CharKillAll = .text:0x80049F58; // type:function size:0x3C +CharModelCreate = .text:0x80049F94; // type:function size:0x180 +UpdateChar = .text:0x8004A114; // type:function size:0x20C scope:local +UpdateCharAnim = .text:0x8004A320; // type:function size:0x173C scope:local +PlayCharVoice = .text:0x8004BA5C; // type:function size:0xB0 scope:local +InitEffect = .text:0x8004BB0C; // type:function size:0x254 scope:local +CreateEffectDust = .text:0x8004BD60; // type:function size:0xB0 scope:local +CreateEffectSmoke = .text:0x8004BE10; // type:function size:0xB0 scope:local +CreateEffectDot = .text:0x8004BEC0; // type:function size:0xB0 scope:local +CreateEffectStar = .text:0x8004BF70; // type:function size:0xB0 scope:local +CreateEffectWarn = .text:0x8004C020; // type:function size:0xB0 scope:local +CreateEffectBird = .text:0x8004C0D0; // type:function size:0xB0 scope:local +CreateEffect = .text:0x8004C180; // type:function size:0x1CC scope:local +UpdateEffect = .text:0x8004C34C; // type:function size:0x4A0 scope:local +RotateEffect = .text:0x8004C7EC; // type:function size:0x1E8 scope:local +PlayEffectSound = .text:0x8004C9D4; // type:function size:0x344 scope:local +CharModelMotionCreate = .text:0x8004CD18; // type:function size:0x1D0 +CharModelMotionIndexSet = .text:0x8004CEE8; // type:function size:0x88 +CharModelMotionKill = .text:0x8004CF70; // type:function size:0x9C +CharModelMotionDataClose = .text:0x8004D00C; // type:function size:0x2B8 +CharModelDataClose = .text:0x8004D2C4; // type:function size:0x430 +CharModelKill = .text:0x8004D6F4; // type:function size:0x244 +CharModelMotionSet = .text:0x8004D938; // type:function size:0x7C +CharModelTexAnimSet = .text:0x8004D9B4; // type:function size:0x17C +CharModelTexNameGet = .text:0x8004DB30; // type:function size:0x7C +CharModelHookNameGet = .text:0x8004DBAC; // type:function size:0x7C +CharModelMotionTimeSet = .text:0x8004DC28; // type:function size:0x4C +CharModelMotionTimeGet = .text:0x8004DC74; // type:function size:0x44 +CharModelMotionMaxTimeGet = .text:0x8004DCB8; // type:function size:0x44 +CharModelMotionEndCheck = .text:0x8004DCFC; // type:function size:0x44 +CharModelMotionShiftIDGet = .text:0x8004DD40; // type:function size:0x44 +CharModelMotionShiftSet = .text:0x8004DD84; // type:function size:0x84 +CharModelMotionShiftTimeGet = .text:0x8004DE08; // type:function size:0x44 +CharModelMotionSpeedSet = .text:0x8004DE4C; // type:function size:0x4C +CharModelLayerSetAll = .text:0x8004DE98; // type:function size:0x80 +CharModelItemHookCreate = .text:0x8004DF18; // type:function size:0x1D4 +UpdateItemHook = .text:0x8004E0EC; // type:function size:0x484 scope:local +CharModelEffectCreate = .text:0x8004E570; // type:function size:0x3FC +OrbitEffect = .text:0x8004E96C; // type:function size:0x168 scope:local +CharModelCoinEffectCreate = .text:0x8004EAD4; // type:function size:0x1A0 +fn_8004EC74 = .text:0x8004EC74; // type:function size:0x130 +fn_8004EDA4 = .text:0x8004EDA4; // type:function size:0x2B4 +fn_8004F058 = .text:0x8004F058; // type:function size:0xE4 +fn_8004F13C = .text:0x8004F13C; // type:function size:0x2B4 +CharModelLayerSetAll2 = .text:0x8004F3F0; // type:function size:0x80 +CharModelVoiceEnableSet = .text:0x8004F470; // type:function size:0xBC +fn_8004F52C = .text:0x8004F52C; // type:function size:0x4C +CharModelEffectEnableSet = .text:0x8004F578; // type:function size:0xB0 +CharModelEffectNpcInit = .text:0x8004F628; // type:function size:0x2CC +CharModelEffectNpcInitSilent = .text:0x8004F8F4; // type:function size:0x2CC +UpdateNpcEffect = .text:0x8004FBC0; // type:function size:0xF80 scope:local +CharModelStepTypeSet = .text:0x80050B40; // type:function size:0x30 +PlayStepFX = .text:0x80050B70; // type:function size:0xEC scope:local +MapWall = .text:0x80050C5C; // type:function size:0x1B8 +MapWallCheck = .text:0x80050E14; // type:function size:0x110 +MapPos = .text:0x80050F24; // type:function size:0x2A8 +PolygonRangeCheck = .text:0x800511CC; // type:function size:0x38C scope:local +DefIfnnerMapCircle = .text:0x80051558; // type:function size:0x470 scope:local +CalcPPLength = .text:0x800519C8; // type:function size:0x5D4 scope:local +MapIflnnerCalc = .text:0x80051F9C; // type:function size:0xF4 scope:local +MapCalcPoint = .text:0x80052090; // type:function size:0x388 scope:local +AreaCheck = .text:0x80052418; // type:function size:0x148 scope:local +MapIflnnerTriangle = .text:0x80052560; // type:function size:0x518 scope:local +MapIflnnerQuadrangle = .text:0x80052A78; // type:function size:0x994 scope:local +GetPolygonCircleMtx = .text:0x8005340C; // type:function size:0xC28 scope:local +PrecalcPntToTriangle = .text:0x80054034; // type:function size:0x43C scope:local +Hitcheck_Triangle_with_Sphere = .text:0x80054470; // type:function size:0x100 +Hitcheck_Quadrangle_with_Sphere = .text:0x80054570; // type:function size:0x19C +DefSetHitFace = .text:0x8005470C; // type:function size:0x4C scope:local +AppendAddXZ = .text:0x80054758; // type:function size:0x184 +CharRotInv = .text:0x800548DC; // type:function size:0x124 +THPSimpleInit = .text:0x80054A00; // type:function size:0x124 +THPSimpleQuit = .text:0x80054B24; // type:function size:0x54 +THPSimpleOpen = .text:0x80054B78; // type:function size:0x408 +THPSimpleClose = .text:0x80054F80; // type:function size:0xC0 +THPSimpleCalcNeedMemory = .text:0x80055040; // type:function size:0x184 +THPSimpleSetBuffer = .text:0x800551C4; // type:function size:0x240 +__THPSimpleDVDCallback = .text:0x80055404; // type:function size:0x2A4 scope:local +THPSimplePreLoad = .text:0x800556A8; // type:function size:0x2A4 +THPSimpleAudioStart = .text:0x8005594C; // type:function size:0x14 +THPSimpleAudioStop = .text:0x80055960; // type:function size:0x14 +THPSimpleLoadStop = .text:0x80055974; // type:function size:0x1B8 +THPSimpleDecode = .text:0x80055B2C; // type:function size:0x47C +VideoDecode = .text:0x80055FA8; // type:function size:0xD8 scope:local +THPSimpleDrawCurrentFrame = .text:0x80056080; // type:function size:0x104 +MixAudio = .text:0x80056184; // type:function size:0x5F8 scope:local +THPSimpleGetVideoInfo = .text:0x8005677C; // type:function size:0x58 +THPSimpleGetTotalFrame = .text:0x800567D4; // type:function size:0x2C +THPAudioMixCallback = .text:0x80056800; // type:function size:0x188 scope:local +THPSimpleSetVolume = .text:0x80056988; // type:function size:0x17C +THPGXRestore = .text:0x80056B04; // type:function size:0x130 +THPGXYuv2RgbSetup = .text:0x80056C34; // type:function size:0x5A0 +THPGXYuv2RgbDraw = .text:0x800571D4; // type:function size:0x288 +HuTHPSprCreateVol = .text:0x8005745C; // type:function size:0x108 +HuTHPSprCreate = .text:0x80057564; // type:function size:0x110 +HuTHP3DCreateVol = .text:0x80057674; // type:function size:0xF8 +HuTHP3DCreate = .text:0x8005776C; // type:function size:0x100 +HuTHPStop = .text:0x8005786C; // type:function size:0xC +HuTHPClose = .text:0x80057878; // type:function size:0xC +HuTHPRestart = .text:0x80057884; // type:function size:0xC +HuTHPEndCheck = .text:0x80057890; // type:function size:0x54 +HuTHPFrameGet = .text:0x800578E4; // type:function size:0x8 +HuTHPTotalFrameGet = .text:0x800578EC; // type:function size:0x20 +HuTHPSetVolume = .text:0x8005790C; // type:function size:0x30 +THPTestProc = .text:0x8005793C; // type:function size:0x27C scope:local +THPViewFunc = .text:0x80057BB8; // type:function size:0xA4 scope:local +THPViewSprFunc = .text:0x80057C5C; // type:function size:0x17C scope:local +THPDecodeFunc = .text:0x80057DD8; // type:function size:0x4C scope:local +omMgIndexGet = .text:0x80057E24; // type:function size:0x5C +omGameSysInit = .text:0x80057E80; // type:function size:0xF4 +omVibrate = .text:0x80057F74; // type:function size:0x9C +_CheckFlag = .text:0x80058010; // type:function size:0xA0 +_SetFlag = .text:0x800580B0; // type:function size:0xA4 +_ClearFlag = .text:0x80058154; // type:function size:0xA4 +_InitFlag = .text:0x800581F8; // type:function size:0x30 +SLFileOpen = .text:0x80058228; // type:function size:0x140 +SLFileCreate = .text:0x80058368; // type:function size:0x2B0 +SLFileWrite = .text:0x80058618; // type:function size:0x11C +SLFileRead = .text:0x80058734; // type:function size:0x84 +SLFileClose = .text:0x800587B8; // type:function size:0x4C +SLCurSlotNoSet = .text:0x80058804; // type:function size:0x8 +SLCurBoxNoSet = .text:0x8005880C; // type:function size:0xC +SLSaveFlagSet = .text:0x80058818; // type:function size:0x40 +SLSaveFlagGet = .text:0x80058858; // type:function size:0x8 +SLSaveDataMake = .text:0x80058860; // type:function size:0x154 +SLSaveDataInfoSet = .text:0x800589B4; // type:function size:0x218 +SLCommonSet = .text:0x80058BCC; // type:function size:0x254 +SLSaveBoard = .text:0x80058E20; // type:function size:0x8C +SLSaveBoardStory = .text:0x80058EAC; // type:function size:0x8C +SLSave = .text:0x80058F38; // type:function size:0x380 +SLCreateSaveWin = .text:0x800592B8; // type:function size:0xDC scope:local +SLKillSaveWin = .text:0x80059394; // type:function size:0x48 scope:local +SLLoad = .text:0x800593DC; // type:function size:0x110 +SLLoadGameStat = .text:0x800594EC; // type:function size:0x38 +SLLoadBoard = .text:0x80059524; // type:function size:0x1A0 +SLLoadBoardStory = .text:0x800596C4; // type:function size:0x184 +SLSerialNoGet = .text:0x80059848; // type:function size:0x28 +SLSerialNoCheck = .text:0x80059870; // type:function size:0xA0 +SLCheckSumCheck = .text:0x80059910; // type:function size:0x60 +SLCheckSumGet = .text:0x80059970; // type:function size:0x54 +SLCheckSumSet = .text:0x800599C4; // type:function size:0x90 +SLStatSet = .text:0x80059A54; // type:function size:0x1D4 +SLCardMount = .text:0x80059C28; // type:function size:0x12C +SLFormat = .text:0x80059D54; // type:function size:0x5A8 +SLMessOut = .text:0x8005A2FC; // type:function size:0x3FC +HuSoftResetButtonCheck = .text:0x8005A6F8; // type:function size:0x50 +HuDvdErrDispIntFunc = .text:0x8005A748; // type:function size:0x28 +HuDvdErrDispInit = .text:0x8005A770; // type:function size:0x1F4 +ToeThreadFunc = .text:0x8005A964; // type:function size:0xD8 scope:local +ToeDispCheck = .text:0x8005AA3C; // type:function size:0x128 scope:local +_HuDvdErrDispXFB = .text:0x8005AB64; // type:function size:0x2D0 scope:local +HuRestartSystem = .text:0x8005AE34; // type:function size:0xDC +HuSoftResetCheck = .text:0x8005AF10; // type:function size:0xFC scope:local +HuSoftResetCountCheck = .text:0x8005B00C; // type:function size:0xCC scope:local +HuSoftResetPostProc = .text:0x8005B0D8; // type:function size:0x78 scope:local +BoardObjectSetup = .text:0x8005B150; // type:function size:0x2E0 +InitBoardFunc = .text:0x8005B430; // type:function size:0x64 scope:local +ExecBoardFunc = .text:0x8005B494; // type:function size:0x9C scope:local +KillBoardFunc = .text:0x8005B530; // type:function size:0xCC scope:local +BoardKill = .text:0x8005B5FC; // type:function size:0xAC +BoardIsKill = .text:0x8005B6A8; // type:function size:0x48 +BoardPauseDisableSet = .text:0x8005B6F0; // type:function size:0x74 +BoardPauseDisableGet = .text:0x8005B764; // type:function size:0x48 +BoardSaveInit = .text:0x8005B7AC; // type:function size:0x524 +BoardStoryConfigSet = .text:0x8005BCD0; // type:function size:0x160 +BoardPartyConfigSet = .text:0x8005BE30; // type:function size:0x160 +DestroyMainFunc = .text:0x8005BF90; // type:function size:0xC scope:local +MainFunc = .text:0x8005BF9C; // type:function size:0x7D0 scope:local +BoardTurnNext = .text:0x8005C76C; // type:function size:0x8C +ExecTurnStart = .text:0x8005C7F8; // type:function size:0x28C scope:local +BoardNextOvlSet = .text:0x8005CA84; // type:function size:0xC4 +BoardStartCheck = .text:0x8005CB48; // type:function size:0x8C +CreateBoard = .text:0x8005CBD4; // type:function size:0x410 scope:local +DestroyBoard = .text:0x8005CFE4; // type:function size:0x128 scope:local +BoardLightHookSet = .text:0x8005D10C; // type:function size:0xC +BoardLightSetExec = .text:0x8005D118; // type:function size:0x44 +BoardLightResetExec = .text:0x8005D15C; // type:function size:0x50 +BoardCameraBackup = .text:0x8005D1AC; // type:function size:0x3C +BoardCameraRestore = .text:0x8005D1E8; // type:function size:0x48 +BoardCameraScissorSet = .text:0x8005D230; // type:function size:0x54 +BoardCameraViewSet = .text:0x8005D284; // type:function size:0x2AC +BoardCameraPosGet = .text:0x8005D530; // type:function size:0x48 +BoardCameraTargetGet = .text:0x8005D578; // type:function size:0x48 +BoardCameraRotGet = .text:0x8005D5C0; // type:function size:0x48 +BoardCameraZoomGet = .text:0x8005D608; // type:function size:0x20 +BoardCameraDirGet = .text:0x8005D628; // type:function size:0xA8 +BoardCameraPointDirGet = .text:0x8005D6D0; // type:function size:0xBC +BoardCameraMaskSet = .text:0x8005D78C; // type:function size:0x28 +BoardCameraMoveSet = .text:0x8005D7B4; // type:function size:0x50 +BoardCameraOffsetSet = .text:0x8005D804; // type:function size:0x30 +BoardCameraTargetPlayerSet = .text:0x8005D834; // type:function size:0xB4 +BoardCameraTargetModelSet = .text:0x8005D8E8; // type:function size:0x40 +BoardCameraTargetSpaceSet = .text:0x8005D928; // type:function size:0x44 +BoardCameraPosCalcFuncSet = .text:0x8005D96C; // type:function size:0x28 +BoardCameraQuakeSet = .text:0x8005D994; // type:function size:0x3C +BoardCameraQuakeReset = .text:0x8005D9D0; // type:function size:0x3C +BoardCameraTargetSet = .text:0x8005DA0C; // type:function size:0x28 +BoardCameraPosSet = .text:0x8005DA34; // type:function size:0x28 +BoardCameraXRotZoomSet = .text:0x8005DA5C; // type:function size:0x24 +BoardCameraZoomSet = .text:0x8005DA80; // type:function size:0x20 +BoardCameraRotSet = .text:0x8005DAA0; // type:function size:0x24 +BoardCameraNearFarSet = .text:0x8005DAC4; // type:function size:0x24 +BoardCameraNearFarGet = .text:0x8005DAE8; // type:function size:0x3C +BoardCameraMotionStart = .text:0x8005DB24; // type:function size:0x48 +BoardCameraMotionStartEx = .text:0x8005DB6C; // type:function size:0x230 +BoardCameraFovSet = .text:0x8005DD9C; // type:function size:0x20 +BoardCameraCullCheck = .text:0x8005DDBC; // type:function size:0x2BC +BoardCameraMotionIsDone = .text:0x8005E078; // type:function size:0x48 +BoardCameraMotionWait = .text:0x8005E0C0; // type:function size:0x58 +BoardCameraInit = .text:0x8005E118; // type:function size:0x24C +UpdateCamera = .text:0x8005E364; // type:function size:0x350 scope:local +CalcCameraTarget = .text:0x8005E6B4; // type:function size:0xE4 scope:local +CalcCameraPos = .text:0x8005E798; // type:function size:0x764 scope:local +BoardMGDoneFlagSet = .text:0x8005EEFC; // type:function size:0x48 +BoardMGDoneFlagGet = .text:0x8005EF44; // type:function size:0x48 +BoardMGExit = .text:0x8005EF8C; // type:function size:0x170 +KillBoardMG = .text:0x8005F0FC; // type:function size:0x60 scope:local +ExecBoardMG = .text:0x8005F15C; // type:function size:0xC4 scope:local +BoardMGCreate = .text:0x8005F220; // type:function size:0x74 +BoardEventFlagSet = .text:0x8005F294; // type:function size:0x28 +BoardEventFlagReset = .text:0x8005F2BC; // type:function size:0x28 +BoardEventFlagGet = .text:0x8005F2E4; // type:function size:0x48 +BoardMTXCalcLookAt = .text:0x8005F32C; // type:function size:0x10C +BoardArcSin = .text:0x8005F438; // type:function size:0x330 +BoardArcCos = .text:0x8005F768; // type:function size:0x390 +BoardRandInit = .text:0x8005FAF8; // type:function size:0x24 +BoardRand = .text:0x8005FB1C; // type:function size:0x24 +BoardRandMod = .text:0x8005FB40; // type:function size:0x50 +BoardRandFloat = .text:0x8005FB90; // type:function size:0x58 +BoardVecDistXZCalc = .text:0x8005FBE8; // type:function size:0x134 +BoardVecMaxDistXZCheck = .text:0x8005FD1C; // type:function size:0x15C +BoardDAngleCalcVec = .text:0x8005FE78; // type:function size:0x7C +BoardDAngleCalc = .text:0x8005FEF4; // type:function size:0x34 +BoardDAngleCalcRange = .text:0x8005FF28; // type:function size:0x1C0 +BoardVecMinDistCheck = .text:0x800600E8; // type:function size:0x6C +BoardFilterFadeOut = .text:0x80060154; // type:function size:0xD4 +BoardFilterFadeInit = .text:0x80060228; // type:function size:0x174 +BoardFilterFadePauseCheck = .text:0x8006039C; // type:function size:0x5C +BoardFilterFadeCheck = .text:0x800603F8; // type:function size:0x34 +UpdateFilter = .text:0x8006042C; // type:function size:0x178 scope:local +DrawFilter = .text:0x800605A4; // type:function size:0x350 scope:local +BoardConfettiCreate = .text:0x800608F4; // type:function size:0x164 +BoardConfettiKill = .text:0x80060A58; // type:function size:0x24 +BoardConfettiStop = .text:0x80060A7C; // type:function size:0x88 +UpdateConfetti = .text:0x80060B04; // type:function size:0xB8 scope:local +SpawnConfetti = .text:0x80060BBC; // type:function size:0x564 scope:local +MoveConfetti = .text:0x80061120; // type:function size:0x14C scope:local +DrawConfetti = .text:0x8006126C; // type:function size:0x254 scope:local +BoardLast5GfxInit = .text:0x800614C0; // type:function size:0x2B4 +UpdateLast5Gfx = .text:0x80061774; // type:function size:0x2AC scope:local +BoardLast5GfxShowSet = .text:0x80061A20; // type:function size:0xAC +BoardTauntInit = .text:0x80061ACC; // type:function size:0x80 +BoardTauntKill = .text:0x80061B4C; // type:function size:0x54 +TauntUpdate = .text:0x80061BA0; // type:function size:0x3A4 scope:local +BoardDataDirReadAsync = .text:0x80061F44; // type:function size:0x38 +BoardDataAsyncWait = .text:0x80061F7C; // type:function size:0x48 +BoardItemPrevGet = .text:0x80061FC4; // type:function size:0xC +BoardItemPrevSet = .text:0x80061FD0; // type:function size:0xC +BoardPlayerGetCharMess = .text:0x80061FDC; // type:function size:0x78 +BoardPlayerGetCharName = .text:0x80062054; // type:function size:0x78 +BoardPlayerIsAllCom = .text:0x800620CC; // type:function size:0x80 +BoardPlayerInit = .text:0x8006214C; // type:function size:0x16C +BoardPlayerModelInit = .text:0x800622B8; // type:function size:0x588 +BoardPlayerModelKill = .text:0x80062840; // type:function size:0xFC +BoardPlayerLayerSet = .text:0x8006293C; // type:function size:0x84 +BoardPlayerCameraSet = .text:0x800629C0; // type:function size:0x80 +fn_80062A40 = .text:0x80062A40; // type:function size:0x80 +BoardPlayerExistCheck = .text:0x80062AC0; // type:function size:0xB4 +BoardPlayerItemAdd = .text:0x80062B74; // type:function size:0xB0 +BoardPlayerItemRemove = .text:0x80062C24; // type:function size:0xB4 +BoardPlayerItemFind = .text:0x80062CD8; // type:function size:0x58 +BoardPlayerItemCount = .text:0x80062D30; // type:function size:0x60 +BoardPlayerCornerPosSet = .text:0x80062D90; // type:function size:0x40 +BoardPlayerCornerPosGet = .text:0x80062DD0; // type:function size:0xC4 +BoardPlayerAmbSet = .text:0x80062E94; // type:function size:0x90 +BoardPlayerMtxSet = .text:0x80062F24; // type:function size:0x80 +BoardPlayerPosSetV = .text:0x80062FA4; // type:function size:0x9C +BoardPlayerPosSet = .text:0x80063040; // type:function size:0xCC +BoardPlayerPosGet = .text:0x8006310C; // type:function size:0x80 +BoardPlayerRotSetV = .text:0x8006318C; // type:function size:0x9C +BoardPlayerRotSet = .text:0x80063228; // type:function size:0xCC +BoardPlayerRotGet = .text:0x800632F4; // type:function size:0x80 +BoardPlayerRotYSet = .text:0x80063374; // type:function size:0xD4 +BoardPlayerRotYGet = .text:0x80063448; // type:function size:0xA8 +BoardPlayerScaleSetV = .text:0x800634F0; // type:function size:0x80 +BoardPlayerScaleSet = .text:0x80063570; // type:function size:0x90 +BoardPlayerScaleGet = .text:0x80063600; // type:function size:0x80 +BoardPlayerCurrMotionGet = .text:0x80063680; // type:function size:0x44 +BoardPlayerVoiceEnableSet = .text:0x800636C4; // type:function size:0x88 +BoardPlayerMotionCreate = .text:0x8006374C; // type:function size:0x80 +BoardPlayerMotionKill = .text:0x800637CC; // type:function size:0x80 +BoardPlayerMotionEndCheck = .text:0x8006384C; // type:function size:0x78 +BoardPlayerMotionEndWait = .text:0x800638C4; // type:function size:0x88 +BoardPlayerMotionStart = .text:0x8006394C; // type:function size:0xD0 +BoardPlayerMotionShiftSet = .text:0x80063A1C; // type:function size:0xE0 +BoardPlayerMotionSpeedSet = .text:0x80063AFC; // type:function size:0x80 +BoardPlayerMotionTimeSet = .text:0x80063B7C; // type:function size:0x80 +BoardPlayerMotionTimeGet = .text:0x80063BFC; // type:function size:0x78 +BoardPlayerMotionMaxTimeGet = .text:0x80063C74; // type:function size:0x78 +BoardPlayerMotionStartEndSet = .text:0x80063CEC; // type:function size:0xA0 +BoardPlayerModelAttrSet = .text:0x80063D8C; // type:function size:0x80 +BoardPlayerModelAttrReset = .text:0x80063E0C; // type:function size:0x80 +BoardPlayerCoinsSet = .text:0x80063E8C; // type:function size:0x34 +BoardPlayerCoinsGet = .text:0x80063EC0; // type:function size:0x2C +BoardPlayerCoinsAdd = .text:0x80063EEC; // type:function size:0x9C +BoardPlayerStarsAdd = .text:0x80063F88; // type:function size:0x48 +BoardPlayerSizeSet = .text:0x80063FD0; // type:function size:0x16C +BoardPlayerSizeGet = .text:0x8006413C; // type:function size:0x40 +BoardPlayerSameTeamFind = .text:0x8006417C; // type:function size:0x7C +BoardPlayerTeamFind = .text:0x800641F8; // type:function size:0x7C +BoardPlayerRankCalc = .text:0x80064274; // type:function size:0xC4 +BoardPlayerPreTurnHookSet = .text:0x80064338; // type:function size:0x18 +BoardPlayerPostTurnHookSet = .text:0x80064350; // type:function size:0x18 +BoardPlayerTurnExec = .text:0x80064368; // type:function size:0x15C +BoardPlayerTurnRollExec = .text:0x800644C4; // type:function size:0x160 +BoardPlayerTurnMoveExec = .text:0x80064624; // type:function size:0x420 +BoardPlayerPostTurnHookExec = .text:0x80064A44; // type:function size:0x80 +BoardPlayerSizeRestore = .text:0x80064AC4; // type:function size:0x18C +BoardPlayerZoomRestore = .text:0x80064C50; // type:function size:0x134 +BoardJunctionMaskSet = .text:0x80064D84; // type:function size:0x10 +BoardJunctionMaskReset = .text:0x80064D94; // type:function size:0x10 +BoardJunctionMaskZero = .text:0x80064DA4; // type:function size:0xC +InitJunction = .text:0x80064DB0; // type:function size:0x634 scope:local +UpdateJunctionGfx = .text:0x800653E4; // type:function size:0x1A0 scope:local +StopJunctionPlayer = .text:0x80065584; // type:function size:0x70 scope:local +RestoreJunction = .text:0x800655F4; // type:function size:0x180 scope:local +GetDefaultDirection = .text:0x80065774; // type:function size:0x114 scope:local +DoDebugMove = .text:0x80065888; // type:function size:0x8E8 scope:local +ExecJunction = .text:0x80066170; // type:function size:0xBF8 scope:local +BoardPlayerMoveTo = .text:0x80066D68; // type:function size:0xBC +BoardPlayerMoveBetween = .text:0x80066E24; // type:function size:0x90 +BoardPlayerMoveToAsync = .text:0x80066EB4; // type:function size:0x90 +BoardPlayerPosLerpStart = .text:0x80066F44; // type:function size:0x430 +PlayerPosLerpFunc = .text:0x80067374; // type:function size:0x218 scope:local +BoardPlayerDiceJumpStart = .text:0x8006758C; // type:function size:0x1D4 +BoardPlayerDiceJumpCheck = .text:0x80067760; // type:function size:0x54 +DiceJumpFunc = .text:0x800677B4; // type:function size:0x3E4 scope:local +BoardPlayerIdleSet = .text:0x80067B98; // type:function size:0xF8 +BoardPlayerMotBlendSet = .text:0x80067C90; // type:function size:0x5A0 +ExecMotBlend = .text:0x80068230; // type:function size:0x51C scope:local +BoardPlayerMotBlendCheck = .text:0x8006874C; // type:function size:0x2C +BoardRollCreate = .text:0x80068778; // type:function size:0x138 +BoardRollUpdateSet = .text:0x800688B0; // type:function size:0x38 +BoardRollDispSet = .text:0x800688E8; // type:function size:0x10C +UpdateRollSprite = .text:0x800689F4; // type:function size:0x194 scope:local +UpdateRoll = .text:0x80068B88; // type:function size:0x278 scope:local +BoardPlayerBtnDownWait = .text:0x80068E00; // type:function size:0x6C +BoardPlayerAutoSizeSet = .text:0x80068E6C; // type:function size:0x9C +BoardPlayerAutoSizeGet = .text:0x80068F08; // type:function size:0x40 +BoardPlayerMoveAwayIsDone = .text:0x80068F48; // type:function size:0x1C +BoardPlayerMoveAwayStart = .text:0x80068F64; // type:function size:0x224 +BoardPlayerMoveAwayStartCurr = .text:0x80069188; // type:function size:0x40 +MoveAwayObjFunc = .text:0x800691C8; // type:function size:0x100 scope:local +BoardBowserSuitInit = .text:0x800692C8; // type:function size:0x1A4 +BoardBowserSuitKill = .text:0x8006946C; // type:function size:0x128 +BoardBowserSuitModelGet = .text:0x80069594; // type:function size:0x8 +BoardBowserSuitPlayerModelGet = .text:0x8006959C; // type:function size:0x8 +BoardBowserSuitMotionCreate = .text:0x800695A4; // type:function size:0x74 +BoardBowserSuitMotionSetWait = .text:0x80069618; // type:function size:0x54 +BoardBowserSuitMotionSetWalk = .text:0x8006966C; // type:function size:0x4C +BoardBowserSuitMotionSetWin = .text:0x800696B8; // type:function size:0x44 +BoardBowserSuitMotionSetJump = .text:0x800696FC; // type:function size:0x44 +BoardBowserSuitPlayerModelKill = .text:0x80069740; // type:function size:0x44 +UpdateBowserSuit = .text:0x80069784; // type:function size:0x1F0 scope:local +BoardPlayerSparkSet = .text:0x80069974; // type:function size:0x5C +DoSparkSpace = .text:0x800699D0; // type:function size:0x1294 scope:local +RemoveSparkSpace = .text:0x8006AC64; // type:function size:0xA0 scope:local +SetPlayerSizeAuto = .text:0x8006AD04; // type:function size:0x24C scope:local +BoardMegaDoubleDiceCheck = .text:0x8006AF50; // type:function size:0x8 +BoardPlayerResizeAnimExec = .text:0x8006AF58; // type:function size:0x38C +MegaSquishFunc = .text:0x8006B2E4; // type:function size:0x950 scope:local +MegaPlayerPassFunc = .text:0x8006BC34; // type:function size:0x980 scope:local +MegaExecJump = .text:0x8006C5B4; // type:function size:0xA48 scope:local +BoardPlayerCopyEyeMat = .text:0x8006CFFC; // type:function size:0x24C +BoardPlayerCopyMat = .text:0x8006D248; // type:function size:0xC0 +BoardModelInit = .text:0x8006D308; // type:function size:0xF0 +BoardModelKillAll = .text:0x8006D3F8; // type:function size:0xA0 +ModelMgrFunc = .text:0x8006D498; // type:function size:0x70 scope:local +BoardModelDummyUpdate = .text:0x8006D508; // type:function size:0x4 +BoardModelVisibilityUpdate = .text:0x8006D50C; // type:function size:0xCC +BoardModelHideSetAll = .text:0x8006D5D8; // type:function size:0x90 +BoardModelAmbSetAll = .text:0x8006D668; // type:function size:0x70 +BoardModelCameraSetAll = .text:0x8006D6D8; // type:function size:0x7C +CreateInstance = .text:0x8006D754; // type:function size:0x250 scope:local +BoardModelCreate = .text:0x8006D9A4; // type:function size:0x40 +BoardModelCreateCharacter = .text:0x8006D9E4; // type:function size:0x44 +BoardModelCreateParam = .text:0x8006DA28; // type:function size:0x168 +BoardModelKill = .text:0x8006DB90; // type:function size:0x44 +BoardModelIDGet = .text:0x8006DBD4; // type:function size:0x48 +fn_8006DC1C = .text:0x8006DC1C; // type:function size:0x60 +BoardModelPassSet = .text:0x8006DC7C; // type:function size:0x74 +BoardModelAmbSet = .text:0x8006DCF0; // type:function size:0x68 +BoardModelExistCheck = .text:0x8006DD58; // type:function size:0x48 +BoardModelExistDupe = .text:0x8006DDA0; // type:function size:0x48 +fn_8006DDE8 = .text:0x8006DDE8; // type:function size:0x70 +BoardModelMotionCreate = .text:0x8006DE58; // type:function size:0x140 +BoardModelMotionKill = .text:0x8006DF98; // type:function size:0x118 +BoardModelMotionStartEndSet = .text:0x8006E0B0; // type:function size:0xE8 +BoardModelMotionUpdateSet = .text:0x8006E198; // type:function size:0x7C +BoardModelVoiceEnableSet = .text:0x8006E214; // type:function size:0xA4 +BoardModelMotionStart = .text:0x8006E2B8; // type:function size:0x174 +BoardModelMotionShiftIDGet = .text:0x8006E42C; // type:function size:0x50 +BoardModelMotionShiftSet = .text:0x8006E47C; // type:function size:0x148 +BoardModelAttrSet = .text:0x8006E5C4; // type:function size:0x58 +BoardModelAttrReset = .text:0x8006E61C; // type:function size:0x58 +BoardModelMotionTimeSet = .text:0x8006E674; // type:function size:0x84 +BoardModelMotionTimeGet = .text:0x8006E6F8; // type:function size:0x94 +BoardModelMotionMaxTimeGet = .text:0x8006E78C; // type:function size:0x88 +BoardModelMotionSpeedGet = .text:0x8006E814; // type:function size:0x64 +BoardModelMotionSpeedSet = .text:0x8006E878; // type:function size:0xA4 +BoardModelMotionEndCheck = .text:0x8006E91C; // type:function size:0x80 +BoardModelMotionShapeSet = .text:0x8006E99C; // type:function size:0x100 +BoardModelMotionShapeTimeGet = .text:0x8006EA9C; // type:function size:0x7C +BoardModelMotionShapeMaxTimeGet = .text:0x8006EB18; // type:function size:0xBC +BoardModelMotionShapeSpeedSet = .text:0x8006EBD4; // type:function size:0x88 +BoardModelMotionShapeSpeedGet = .text:0x8006EC5C; // type:function size:0x64 +BoardModelMotionShapeEndCheck = .text:0x8006ECC0; // type:function size:0x14C +BoardModelMotionShapeStartEndSet = .text:0x8006EE0C; // type:function size:0x100 +BoardModelAlphaSet = .text:0x8006EF0C; // type:function size:0xB0 +BoardModelMtxSet = .text:0x8006EFBC; // type:function size:0x8C +BoardModelMtxGet = .text:0x8006F048; // type:function size:0x8C +BoardModelRotYSet = .text:0x8006F0D4; // type:function size:0x54 +BoardModelRotYGet = .text:0x8006F128; // type:function size:0x30 +BoardModelPosSetV = .text:0x8006F158; // type:function size:0x50 +BoardModelPosSet = .text:0x8006F1A8; // type:function size:0x78 +BoardModelRotSetV = .text:0x8006F220; // type:function size:0x50 +BoardModelRotSet = .text:0x8006F270; // type:function size:0x78 +BoardModelScaleSetV = .text:0x8006F2E8; // type:function size:0x50 +BoardModelScaleSet = .text:0x8006F338; // type:function size:0x78 +BoardModelPosGet = .text:0x8006F3B0; // type:function size:0x74 +BoardModelRotGet = .text:0x8006F424; // type:function size:0x74 +BoardModelScaleGet = .text:0x8006F498; // type:function size:0x74 +BoardModelVisibilitySet = .text:0x8006F50C; // type:function size:0x60 +BoardModelVisibilityGet = .text:0x8006F56C; // type:function size:0x4C +BoardModelCameraSet = .text:0x8006F5B8; // type:function size:0x64 +BoardModelLayerSet = .text:0x8006F61C; // type:function size:0x64 +BoardModelLayerGet = .text:0x8006F680; // type:function size:0x48 +BoardModelLayerSetAll = .text:0x8006F6C8; // type:function size:0x74 +BoardModelHookSet = .text:0x8006F73C; // type:function size:0xC4 +BoardModelHookReset = .text:0x8006F800; // type:function size:0x50 +BoardModelHookObjReset = .text:0x8006F850; // type:function size:0x58 +SearchBoardModel = .text:0x8006F8A8; // type:function size:0x9C scope:local +KillBoardModel = .text:0x8006F944; // type:function size:0x178 scope:local +CreateBoardModel = .text:0x8006FABC; // type:function size:0x194 scope:local +CreateBoardModelMotion = .text:0x8006FC50; // type:function size:0x12C scope:local +BoardWinInit = .text:0x8006FD7C; // type:function size:0x24 +BoardWinUnusedArraySet = .text:0x8006FDA0; // type:function size:0x34 +BoardWinKillAll = .text:0x8006FDD4; // type:function size:0x24 +BoardWinDestroy = .text:0x8006FDF8; // type:function size:0x6C +ExecBoardWindow = .text:0x8006FE64; // type:function size:0x514 scope:local +BoardWinChoiceGet = .text:0x80070378; // type:function size:0xC +BoardWinPause = .text:0x80070384; // type:function size:0xC +BoardWinCreateChoice = .text:0x80070390; // type:function size:0x1A0 +BoardWinCreate = .text:0x80070530; // type:function size:0x1A0 +BoardWinInsertMesSet = .text:0x800706D0; // type:function size:0x18 +BoardWinWait = .text:0x800706E8; // type:function size:0x50 +BoardWinKill = .text:0x80070738; // type:function size:0x38 +BoardWinAttrSet = .text:0x80070770; // type:function size:0x48 +BoardWinAttrReset = .text:0x800707B8; // type:function size:0x48 +BoardWinChoiceDisable = .text:0x80070800; // type:function size:0x1C +BoardWinKeyWait = .text:0x8007081C; // type:function size:0xC +BoardWinSpeedGet = .text:0x80070828; // type:function size:0x64 +BoardWinSpeedSet = .text:0x8007088C; // type:function size:0x50 +BoardWinChoiceNowGet = .text:0x800708DC; // type:function size:0x38 +BoardWinPriSet = .text:0x80070914; // type:function size:0x44 +BoardWinChoiceNowGet2 = .text:0x80070958; // type:function size:0x38 +BoardWinPortraitGet = .text:0x80070990; // type:function size:0x38 +BoardWinPortraitGetStar = .text:0x800709C8; // type:function size:0x38 +BoardWinPlayerSet = .text:0x80070A00; // type:function size:0x168 +BoardWinStartComKeySet = .text:0x80070B68; // type:function size:0x214 +BoardWinComKeyFuncSet = .text:0x80070D7C; // type:function size:0x8 +BoardMusStartBoard = .text:0x80070D84; // type:function size:0x68 +BoardMusStart = .text:0x80070DEC; // type:function size:0xD0 +BoardAudSeqFadeOutFast = .text:0x80070EBC; // type:function size:0x2C +BoardAudSeqFadeOut = .text:0x80070EE8; // type:function size:0x60 +BoardMusLoudSet = .text:0x80070F48; // type:function size:0x5C +BoardMusVolPanSet = .text:0x80070FA4; // type:function size:0x90 +BoardAudSeqPause = .text:0x80071034; // type:function size:0x94 +BoardMusStatusGet = .text:0x800710C8; // type:function size:0x54 +BoardAudSeqClear = .text:0x8007111C; // type:function size:0x50 +BoardAudSeqFadeOutAll = .text:0x8007116C; // type:function size:0x74 +BoardAudFXPlay = .text:0x800711E0; // type:function size:0x78 +BoardAudFXStop = .text:0x80071258; // type:function size:0x38 +ExecComKeyLeft = .text:0x80071290; // type:function size:0x38 scope:local +BoardComKeySetLeft = .text:0x800712C8; // type:function size:0x28 +ExecComKeyRight = .text:0x800712F0; // type:function size:0x38 scope:local +BoardComKeySetRight = .text:0x80071328; // type:function size:0x28 +ExecComKeyUp = .text:0x80071350; // type:function size:0x38 scope:local +BoardComKeySetUp = .text:0x80071388; // type:function size:0x28 +ExecComKeyDown = .text:0x800713B0; // type:function size:0x38 scope:local +BoardComKeySetDown = .text:0x800713E8; // type:function size:0x28 +ExecComKey = .text:0x80071410; // type:function size:0xE8 scope:local +BoardComPreferItemGet = .text:0x800714F8; // type:function size:0x100 +BoardComPreferItemCheck = .text:0x800715F8; // type:function size:0x120 +BoardComItemWeightGet = .text:0x80071718; // type:function size:0x74 +BoardComUseItemSlotGet = .text:0x8007178C; // type:function size:0xD0 +BoardComUseItemSet = .text:0x8007185C; // type:function size:0x6C +BoardComUseItemCheck = .text:0x800718C8; // type:function size:0x68 +ChooseUseItem = .text:0x80071930; // type:function size:0x16C scope:local +CheckMiniUse = .text:0x80071A9C; // type:function size:0x220 scope:local +CheckMegaUse = .text:0x80071CBC; // type:function size:0x248 scope:local +CheckSparkUse = .text:0x80071F04; // type:function size:0x158 scope:local +CheckBoardChangeUse = .text:0x8007205C; // type:function size:0x314 scope:local +CheckSwapUse = .text:0x80072370; // type:function size:0x198 scope:local +CheckBooUse = .text:0x80072508; // type:function size:0x7C scope:local +CheckLampUse = .text:0x80072584; // type:function size:0x74 scope:local +BoardComJunctionInputGet = .text:0x800725F8; // type:function size:0x304 +BoardComFarPlayerFind = .text:0x800728FC; // type:function size:0xA8 +BoardViewOverheadExec = .text:0x800729A4; // type:function size:0x134 +BoardViewFocusGetPos = .text:0x80072AD8; // type:function size:0x3C +BoardViewFocusSet = .text:0x80072B14; // type:function size:0xF0 +BoardViewMoveStart = .text:0x80072C04; // type:function size:0x128 +BoardViewMoveCheck = .text:0x80072D2C; // type:function size:0x34 +BoardViewMoveEnd = .text:0x80072D60; // type:function size:0xC +BoardViewWait = .text:0x80072D6C; // type:function size:0x3C +BoardViewMapExec = .text:0x80072DA8; // type:function size:0xC8 +ExecMapView = .text:0x80072E70; // type:function size:0x398 scope:local +ExecStarView = .text:0x80073208; // type:function size:0x170 scope:local +ExecOverheadView = .text:0x80073378; // type:function size:0x158 scope:local +DestroyView = .text:0x800734D0; // type:function size:0x80 scope:local +SetTargetView = .text:0x80073550; // type:function size:0x178 scope:local +DestroyFocus = .text:0x800736C8; // type:function size:0x4C scope:local +CreateButtonWin = .text:0x80073714; // type:function size:0xE0 scope:local +DestroyButtonWin = .text:0x800737F4; // type:function size:0x38 scope:local +InitOverheadView = .text:0x8007382C; // type:function size:0x374 scope:local +DestroyOverheadView = .text:0x80073BA0; // type:function size:0x24 scope:local +UpdateOverheadView = .text:0x80073BC4; // type:function size:0x400 scope:local +WaitOverheadView = .text:0x80073FC4; // type:function size:0x30 scope:local +BoardSpaceWalkEventFuncSet = .text:0x80073FF4; // type:function size:0x8 +BoardSpaceWalkMiniEventFuncSet = .text:0x80073FFC; // type:function size:0x8 +BoardSpaceLandEventFuncSet = .text:0x80074004; // type:function size:0x8 +BoardSpaceWalkEventExec = .text:0x8007400C; // type:function size:0x48 +BoardSpaceWalkMiniEventExec = .text:0x80074054; // type:function size:0x60 +BoardSpaceCountGet = .text:0x800740B4; // type:function size:0x10 +BoardSpaceGet = .text:0x800740C4; // type:function size:0x44 +BoardSpaceAttrSet = .text:0x80074108; // type:function size:0x18 +BoardSpaceAttrReset = .text:0x80074120; // type:function size:0x18 +BoardSpaceFlagGet = .text:0x80074138; // type:function size:0x48 +BoardSpaceTypeGet = .text:0x80074180; // type:function size:0x48 +BoardSpaceTypeSet = .text:0x800741C8; // type:function size:0x48 +BoardSpacePosGet = .text:0x80074210; // type:function size:0x8C +BoardSpaceCornerPosGet = .text:0x8007429C; // type:function size:0x2C8 +BoardSpaceRotGet = .text:0x80074564; // type:function size:0x8C +BoardSpaceFlagSearch = .text:0x800745F0; // type:function size:0xA0 +BoardSpaceFlagPosGet = .text:0x80074690; // type:function size:0x134 +BoardSpaceLinkFlagSearch = .text:0x800747C4; // type:function size:0x134 +BoardSpaceLinkTypeListGet = .text:0x800748F8; // type:function size:0x148 +BoardSpaceLinkTargetListGet = .text:0x80074A40; // type:function size:0x104 +BoardSpaceLinkTypeSearch = .text:0x80074B44; // type:function size:0x110 +BoardSpaceLinkTransformGet = .text:0x80074C54; // type:function size:0x1FC +BoardSpaceHostSet = .text:0x80074E50; // type:function size:0x1BC +BoardSpaceStarSetIndex = .text:0x8007500C; // type:function size:0x4AC +BoardSpaceStarGetNext = .text:0x800754B8; // type:function size:0x344 +BoardSpaceStarGetRandom = .text:0x800757FC; // type:function size:0x9C +BoardSpaceStarMove = .text:0x80075898; // type:function size:0xF0 +BoardSpaceStarGet = .text:0x80075988; // type:function size:0x1C +BoardSpaceStarGetCurr = .text:0x800759A4; // type:function size:0x3C +BoardSpaceStarCheck = .text:0x800759E0; // type:function size:0x110 +BoardSpaceLandExec = .text:0x80075AF0; // type:function size:0x474 +BoardSpaceWalkExec = .text:0x80075F64; // type:function size:0x2A4 +BoardSpaceBlockExec = .text:0x80076208; // type:function size:0x180 +ExecPipeSpace = .text:0x80076388; // type:function size:0x268 scope:local +BoardSpaceTypeForce = .text:0x800765F0; // type:function size:0x5C +BoardSpaceHide = .text:0x8007664C; // type:function size:0x48 +DrawSpaces = .text:0x80076694; // type:function size:0x9E8 scope:local +BoardSpaceRead = .text:0x8007707C; // type:function size:0x174 +BoardSpaceCameraSet = .text:0x800771F0; // type:function size:0x2C +BoardSpaceBlockPosSet = .text:0x8007721C; // type:function size:0xD0 +BoardSpaceInit = .text:0x800772EC; // type:function size:0x750 +BoardSpaceDestroy = .text:0x80077A3C; // type:function size:0x70 +BoardShopHostSet = .text:0x80077AAC; // type:function size:0x8 +BoardShopHostGet = .text:0x80077AB4; // type:function size:0x8 +BoardShopInit = .text:0x80077ABC; // type:function size:0xD4 +BoardShopKill = .text:0x80077B90; // type:function size:0xA0 +BoardShopExec = .text:0x80077C30; // type:function size:0x9C +ExecShop = .text:0x80077CCC; // type:function size:0x800 scope:local +DestroyShop = .text:0x800784CC; // type:function size:0xD4 scope:local +PopupShop = .text:0x800785A0; // type:function size:0x1B4 scope:local +CloseShop = .text:0x80078754; // type:function size:0xBC scope:local +CreateShopWin = .text:0x80078810; // type:function size:0x13C scope:local +UpdateShopWin = .text:0x8007894C; // type:function size:0x314 scope:local +SetShopWinItem = .text:0x80078C60; // type:function size:0x168 scope:local +PauseShopWin = .text:0x80078DC8; // type:function size:0x2C scope:local +StartItemGive = .text:0x80078DF4; // type:function size:0x18C scope:local +ExecItemGive = .text:0x80078F80; // type:function size:0x168 scope:local +MoveItemGive = .text:0x800790E8; // type:function size:0x34C scope:local +ShrinkItemGive = .text:0x80079434; // type:function size:0x144 scope:local +WaitItemGive = .text:0x80079578; // type:function size:0x6C scope:local +GetShopItems = .text:0x800795E4; // type:function size:0x280 scope:local +GetDefaultShopItems = .text:0x80079864; // type:function size:0xA0 scope:local +SortShopItems = .text:0x80079904; // type:function size:0x14C scope:local +DecideComEnter = .text:0x80079A50; // type:function size:0x1C8 scope:local +DecideComBuy = .text:0x80079C18; // type:function size:0x60 scope:local +GetComItemChoice = .text:0x80079C78; // type:function size:0x158 scope:local +WaitItemChoice = .text:0x80079DD0; // type:function size:0x30 scope:local +CreateShopItemChoice = .text:0x80079E00; // type:function size:0x188 scope:local +GetShopItemChoice = .text:0x80079F88; // type:function size:0xC scope:local +GetShopItemWinChoice = .text:0x80079F94; // type:function size:0x38 scope:local +MoveShopItemChoice = .text:0x80079FCC; // type:function size:0x260 scope:local +UpdateShopItemChoice = .text:0x8007A22C; // type:function size:0x104 scope:local +GetShopItemChoiceInput = .text:0x8007A330; // type:function size:0x30 scope:local +BoardShopTutorialExec = .text:0x8007A360; // type:function size:0x4DC +BoardLotteryHostSet = .text:0x8007A83C; // type:function size:0x8 +BoardLotteryHostGet = .text:0x8007A844; // type:function size:0x8 +BoardLotteryExec = .text:0x8007A84C; // type:function size:0x8C +BoardLotteryInit = .text:0x8007A8D8; // type:function size:0x16C +CreateModel = .text:0x8007AA44; // type:function size:0x3B4 scope:local +KillModel = .text:0x8007ADF8; // type:function size:0x1FC scope:local +BoardLotteryKill = .text:0x8007AFF4; // type:function size:0x64 +DestroyLottery = .text:0x8007B058; // type:function size:0xB0 scope:local +ExecLottery = .text:0x8007B108; // type:function size:0x798 scope:local +DoMiniJumpUp = .text:0x8007B8A0; // type:function size:0x20C scope:local +DoMiniJumpDown = .text:0x8007BAAC; // type:function size:0x1BC scope:local +PayEnterFee = .text:0x8007BC68; // type:function size:0xF0 scope:local +ShowTicket = .text:0x8007BD58; // type:function size:0x3C8 scope:local +SetupTicket = .text:0x8007C120; // type:function size:0x140 scope:local +ExecBallGame = .text:0x8007C260; // type:function size:0x914 scope:local +SetBallPrize = .text:0x8007CB74; // type:function size:0xC8 scope:local +ExecBallPrize = .text:0x8007CC3C; // type:function size:0x27C scope:local +ExecScratchTicket = .text:0x8007CEB8; // type:function size:0x30C scope:local +ExecScratch = .text:0x8007D1C4; // type:function size:0x3AC scope:local +KillScratch = .text:0x8007D570; // type:function size:0x6C scope:local +ExecScratchSpr = .text:0x8007D5DC; // type:function size:0x21C scope:local +HideScratchSpr = .text:0x8007D7F8; // type:function size:0x68 scope:local +InitScratchSpr = .text:0x8007D860; // type:function size:0x288 scope:local +ExecScratchPick = .text:0x8007DAE8; // type:function size:0x3DC scope:local +InitScratchPick = .text:0x8007DEC4; // type:function size:0x14C scope:local +InitTicketPrizes = .text:0x8007E010; // type:function size:0xD0 scope:local +ExecTicketFocus = .text:0x8007E0E0; // type:function size:0x160 scope:local +ScratchTicketCheckDone = .text:0x8007E240; // type:function size:0xA8 scope:local +TicketGetPixel = .text:0x8007E2E8; // type:function size:0x84 scope:local +TicketUpdate = .text:0x8007E36C; // type:function size:0x6B0 scope:local +ExecCoinPrize = .text:0x8007EA1C; // type:function size:0x440 scope:local +ExecItemPrize = .text:0x8007EE5C; // type:function size:0x338 scope:local +KillCoin = .text:0x8007F194; // type:function size:0x68 scope:local +ExecPrize = .text:0x8007F1FC; // type:function size:0x4C0 scope:local +ExecLose = .text:0x8007F6BC; // type:function size:0xA4 scope:local +CreateLotteryWin = .text:0x8007F760; // type:function size:0xFC scope:local +KillLotteryWin = .text:0x8007F85C; // type:function size:0x38 scope:local +BoardLotteryTutorialExec = .text:0x8007F894; // type:function size:0x2BC +BoardLandBlueExec = .text:0x8007FB50; // type:function size:0x184 +BoardLandRedExec = .text:0x8007FCD4; // type:function size:0x19C +BoardCoinChgCreate = .text:0x8007FE70; // type:function size:0x1E8 +BoardCoinChgExist = .text:0x80080058; // type:function size:0x6C +BoardCoinChgHide = .text:0x800800C4; // type:function size:0x60 +CreateCoinChg = .text:0x80080124; // type:function size:0x23C scope:local +UpdateCoinChg = .text:0x80080360; // type:function size:0x198 scope:local +CoinChgAppear = .text:0x800804F8; // type:function size:0x1B8 scope:local +CoinChgSeparate = .text:0x800806B0; // type:function size:0x29C scope:local +CoinChgShow = .text:0x8008094C; // type:function size:0x1A8 scope:local +CoinChgDisappear = .text:0x80080AF4; // type:function size:0x260 scope:local +BoardWarpExec = .text:0x80080D54; // type:function size:0xA4 +WarpProcess = .text:0x80080DF8; // type:function size:0x250 scope:local +WarpKill = .text:0x80081048; // type:function size:0x5C scope:local +WarpInit = .text:0x800810A4; // type:function size:0x118 scope:local +WarpLaunch = .text:0x800811BC; // type:function size:0xBC scope:local +WarpStartImpact = .text:0x80081278; // type:function size:0x1B0 scope:local +WarpFall = .text:0x80081428; // type:function size:0xA4 scope:local +WarpImpact = .text:0x800814CC; // type:function size:0x200 scope:local +BoardCharWheelInit = .text:0x800816CC; // type:function size:0x11C +BoardCharWheelCheck = .text:0x800817E8; // type:function size:0x34 +BoardCharWheelWait = .text:0x8008181C; // type:function size:0x50 +BoardCharWheelResultGet = .text:0x8008186C; // type:function size:0x18 +BoardCharWheelSpeedSet = .text:0x80081884; // type:function size:0x1C +ExecCharWheel = .text:0x800818A0; // type:function size:0xFC scope:local +InitCharWheel = .text:0x8008199C; // type:function size:0x754 scope:local +UpdateCharWheel = .text:0x800820F0; // type:function size:0x314 scope:local +StopCharWheel = .text:0x80082404; // type:function size:0x164 scope:local +GrowCharWheel = .text:0x80082568; // type:function size:0x120 scope:local +ShrinkCharWheel = .text:0x80082688; // type:function size:0x10C scope:local +KillCharWheelSpr = .text:0x80082794; // type:function size:0x38 scope:local +SetCharWheelChars = .text:0x800827CC; // type:function size:0xBC scope:local +GetInput = .text:0x80082888; // type:function size:0x224 scope:local +BoardCharWheelTargetSet = .text:0x80082AAC; // type:function size:0x10 +GetComDelay = .text:0x80082ABC; // type:function size:0x148 scope:local +GetComInput = .text:0x80082C04; // type:function size:0x8C scope:local +BoardMushroomExec = .text:0x80082C90; // type:function size:0xA4 +MushroomMain = .text:0x80082D34; // type:function size:0x38C scope:local +KillMushroom = .text:0x800830C0; // type:function size:0x58 scope:local +BoxMain = .text:0x80083118; // type:function size:0x118 scope:local +ShowBox = .text:0x80083230; // type:function size:0x114 scope:local +ExitBox = .text:0x80083344; // type:function size:0x160 scope:local +HideBox = .text:0x800834A4; // type:function size:0x68 scope:local +CenterBox = .text:0x8008350C; // type:function size:0xD4 scope:local +InitBox = .text:0x800835E0; // type:function size:0x2EC scope:local +MarkKillBox = .text:0x800838CC; // type:function size:0x64 scope:local +SetBoxHide = .text:0x80083930; // type:function size:0x34 scope:local +SetBoxCenter = .text:0x80083964; // type:function size:0x54 scope:local +SetBoxShow = .text:0x800839B8; // type:function size:0x34 scope:local +WaitBoxOpen = .text:0x800839EC; // type:function size:0x5C scope:local +WaitBoxCenter = .text:0x80083A48; // type:function size:0x58 scope:local +CheckBox = .text:0x80083AA0; // type:function size:0x60 scope:local +DoItemGive = .text:0x80083B00; // type:function size:0x240 scope:local +StartItemGive = .text:0x80083D40; // type:function size:0xD4 scope:local +KillItemMdl = .text:0x80083E14; // type:function size:0x38 scope:local +ShowItemMdl = .text:0x80083E4C; // type:function size:0x48 scope:local +WaitItemGive = .text:0x80083E94; // type:function size:0x48 scope:local +BoardStarHostSet = .text:0x80083EDC; // type:function size:0xA8 +BoardStarHostMdlGet = .text:0x80083F84; // type:function size:0x8 +BoardStarExec = .text:0x80083F8C; // type:function size:0xCC +ExecStar = .text:0x80084058; // type:function size:0x8F4 scope:local +DestroyStar = .text:0x8008494C; // type:function size:0x84 scope:local +GiveStarMain = .text:0x800849D0; // type:function size:0x160 scope:local +UpdateStarAngle = .text:0x80084B30; // type:function size:0x144 scope:local +InitGiveStar = .text:0x80084C74; // type:function size:0x10C scope:local +MoveGiveStar = .text:0x80084D80; // type:function size:0x180 scope:local +ShrinkGiveStar = .text:0x80084F00; // type:function size:0x204 scope:local +StopGiveStar = .text:0x80085104; // type:function size:0x38 scope:local +InitGiveStarEffect = .text:0x8008513C; // type:function size:0xB4 scope:local +KillGiveStarEffect = .text:0x800851F0; // type:function size:0x40 scope:local +BoardStarGive = .text:0x80085230; // type:function size:0x31C +BoardStarShowNext = .text:0x8008554C; // type:function size:0x628 +ShowNextUpdate = .text:0x80085B74; // type:function size:0x130 scope:local +HideNextHost = .text:0x80085CA4; // type:function size:0x24 scope:local +BoardRollExec = .text:0x80085CC8; // type:function size:0x1EC +BoardRollKill = .text:0x80085EB4; // type:function size:0x38 +BoardRollUPauseSet = .text:0x80085EEC; // type:function size:0x84 +BoardRollWinDispSet = .text:0x80085F70; // type:function size:0x4C +RollMain = .text:0x80085FBC; // type:function size:0x490 scope:local +DiceCreate = .text:0x8008644C; // type:function size:0x280 scope:local +DoInput = .text:0x800866CC; // type:function size:0x1C8 scope:local +DiceWaitFull = .text:0x80086894; // type:function size:0x60 scope:local +DiceSetHit = .text:0x800868F4; // type:function size:0x130 scope:local +RollDestroy = .text:0x80086A24; // type:function size:0x60 scope:local +DiceMain = .text:0x80086A84; // type:function size:0x7E4 scope:local +DicePause = .text:0x80087268; // type:function size:0x40 scope:local +DicePauseAll = .text:0x800872A8; // type:function size:0x90 scope:local +BoardDiceEffectCreate = .text:0x80087338; // type:function size:0xE0 +DiceHideEffect = .text:0x80087418; // type:function size:0x84 scope:local +BoardDicePauseAll = .text:0x8008749C; // type:function size:0x94 +BoardDiceDoneCheck = .text:0x80087530; // type:function size:0x8C +BoardDiceStop = .text:0x800875BC; // type:function size:0x58 +BoardDiceVisibleSet = .text:0x80087614; // type:function size:0xC0 +BoardDiceValueSet = .text:0x800876D4; // type:function size:0x200 +DiceDigitMain = .text:0x800878D4; // type:function size:0xAC scope:local +DiceDigitKill = .text:0x80087980; // type:function size:0x68 scope:local +DiceKill = .text:0x800879E8; // type:function size:0xB4 scope:local +DiceDigitMove = .text:0x80087A9C; // type:function size:0x390 scope:local +DiceDigitRotate = .text:0x80087E2C; // type:function size:0x110 scope:local +SameRollExec = .text:0x80087F3C; // type:function size:0x248 scope:local +GetBtnRoll = .text:0x80088184; // type:function size:0x110 scope:local +GetComBtnRoll = .text:0x80088294; // type:function size:0x88 scope:local +BoardRollTutorialSet = .text:0x8008831C; // type:function size:0x4C +BoardItemModelGet = .text:0x80088368; // type:function size:0x90 +BoardItemNameGet = .text:0x800883F8; // type:function size:0x98 +BoardStatusStopCheck = .text:0x80088490; // type:function size:0x48 +BoardStatusVisibleGet = .text:0x800884D8; // type:function size:0x1C +BoardStatusShowSetAll = .text:0x800884F4; // type:function size:0x48 +BoardStatusItemSet = .text:0x8008853C; // type:function size:0xFC +BoardStatusShowSetForce = .text:0x80088638; // type:function size:0x24 +BoardStatusGraySet = .text:0x8008865C; // type:function size:0x134 +BoardStatusShowSet = .text:0x80088790; // type:function size:0x138 +BoardStatusItemHideSet = .text:0x800888C8; // type:function size:0x50 +BoardStatusTargetPosSet = .text:0x80088918; // type:function size:0x44 +BoardStatusPosGet = .text:0x8008895C; // type:function size:0x34 +BoardStatusPosSet = .text:0x80088990; // type:function size:0x6C +BoardStatusHammerCreate = .text:0x800889FC; // type:function size:0x158 +BoardStatusHammerShowSet = .text:0x80088B54; // type:function size:0x94 +BoardStatusHammerKill = .text:0x80088BE8; // type:function size:0x6C +BoardStatusKill = .text:0x80088C54; // type:function size:0x90 +BoardStatusCreate = .text:0x80088CE4; // type:function size:0x20C +KillAllBoardStatus = .text:0x80088EF0; // type:function size:0x98 scope:local +CreateBoardStatusSprite = .text:0x80088F88; // type:function size:0x36C scope:local +BoardSpriteCreate = .text:0x800892F4; // type:function size:0x8C +UpdateBoardStatus = .text:0x80089380; // type:function size:0x210 scope:local +BoardStatusProc = .text:0x80089590; // type:function size:0x40 scope:local +MoveBoardStatus = .text:0x800895D0; // type:function size:0x180 scope:local +BoardSpriteDigitUpdate = .text:0x80089750; // type:function size:0x140 +UpdateStatusItem = .text:0x80089890; // type:function size:0xB8 scope:local +BoardPickerCreate = .text:0x80089948; // type:function size:0x29C +BoardPickerBackFlagSet = .text:0x80089BE4; // type:function size:0x74 +BoardPickerDoneCheck = .text:0x80089C58; // type:function size:0x1C +BoardPickerPosGet = .text:0x80089C74; // type:function size:0x48 +BoardPickerChoiceGet = .text:0x80089CBC; // type:function size:0xC +UpdatePicker = .text:0x80089CC8; // type:function size:0xFC scope:local +UpdatePickerInput = .text:0x80089DC4; // type:function size:0x15C scope:local +MovePicker = .text:0x80089F20; // type:function size:0x110 scope:local +UpdateComPickerButton = .text:0x8008A030; // type:function size:0x30 scope:local +CheckPickerButton = .text:0x8008A060; // type:function size:0x19C scope:local +BoardYourTurnExec = .text:0x8008A1FC; // type:function size:0x1E4 +UpdateYourTurn = .text:0x8008A3E0; // type:function size:0xD4 scope:local +GrowYourTurn = .text:0x8008A4B4; // type:function size:0xD8 scope:local +WaitYourTurn = .text:0x8008A58C; // type:function size:0xEC scope:local +ShrinkYourTurn = .text:0x8008A678; // type:function size:0xC8 scope:local +BoardItemUseExec = .text:0x8008A740; // type:function size:0x80 +ItemUseTeamProc = .text:0x8008A7C0; // type:function size:0x4A8 scope:local +ItemUseProc = .text:0x8008AC68; // type:function size:0x370 scope:local +FinishItemUse = .text:0x8008AFD8; // type:function size:0x174 scope:local +DestroyItemUse = .text:0x8008B14C; // type:function size:0x78 scope:local +BoardMakeRandomItem = .text:0x8008B1C4; // type:function size:0x74 +TeamItemPosSet = .text:0x8008B238; // type:function size:0xE8 scope:local +ExecItemPick = .text:0x8008B320; // type:function size:0x650 scope:local +UpdateItemPick = .text:0x8008B970; // type:function size:0x3AC scope:local +MakeItemPickSpace = .text:0x8008BD1C; // type:function size:0x420 scope:local +SetItemUIStatus = .text:0x8008C13C; // type:function size:0x248 scope:local +BoardItemGetDestPos = .text:0x8008C384; // type:function size:0xA8 +ItemGetPos = .text:0x8008C42C; // type:function size:0x104 scope:local +BoardItemStatusKill = .text:0x8008C530; // type:function size:0x400 +UpdateItemPickGfx = .text:0x8008C930; // type:function size:0x388 scope:local +UpdateItemPickup = .text:0x8008CCB8; // type:function size:0x674 scope:local +CheckItemWindow = .text:0x8008D32C; // type:function size:0x50 scope:local +HideItemWindow = .text:0x8008D37C; // type:function size:0x38 scope:local +CreateItemWindow = .text:0x8008D3B4; // type:function size:0x5A4 scope:local +CheckItemWindowSlide = .text:0x8008D958; // type:function size:0x58 scope:local +KillItemWindow = .text:0x8008D9B0; // type:function size:0x38 scope:local +SetItemWindowCurr = .text:0x8008D9E8; // type:function size:0xA4 scope:local +UpdateItemWindow = .text:0x8008DA8C; // type:function size:0x350 scope:local +CreatePickerWindow = .text:0x8008DDDC; // type:function size:0x148 scope:local +KillPickerWindow = .text:0x8008DF24; // type:function size:0x44 scope:local +BoardBlockExec = .text:0x8008DF68; // type:function size:0x84 +BlockProc = .text:0x8008DFEC; // type:function size:0x358 scope:local +DestroyBlock = .text:0x8008E344; // type:function size:0x54 scope:local +CreateBlockObj = .text:0x8008E398; // type:function size:0x1F4 scope:local +ExecBlockObj = .text:0x8008E58C; // type:function size:0x12C scope:local +DestroyBlockObj = .text:0x8008E6B8; // type:function size:0x38 scope:local +SpawnBlock = .text:0x8008E6F0; // type:function size:0x120 scope:local +HitBlock = .text:0x8008E810; // type:function size:0xCC scope:local +OpenBlock = .text:0x8008E8DC; // type:function size:0x140 scope:local +SetBlockOpen = .text:0x8008EA1C; // type:function size:0x2C scope:local +SetBlockStop = .text:0x8008EA48; // type:function size:0x2C scope:local +WaitBlockHit = .text:0x8008EA74; // type:function size:0x48 scope:local +CreateCoinMdl = .text:0x8008EABC; // type:function size:0x94 scope:local +KillCoinMdl = .text:0x8008EB50; // type:function size:0x9C scope:local +PopupCoin = .text:0x8008EBEC; // type:function size:0x10C scope:local +PopupCoinExec = .text:0x8008ECF8; // type:function size:0x130 scope:local +BoardItemStart = .text:0x8008EE28; // type:function size:0x74 +BoardItemDoneCheck = .text:0x8008EE9C; // type:function size:0x1C +BoardItemPlayerRestore = .text:0x8008EEB8; // type:function size:0x6C +ItemProcess = .text:0x8008EF24; // type:function size:0x64 scope:local +RestoreProcess = .text:0x8008EF88; // type:function size:0x64 scope:local +ItemDestroy = .text:0x8008EFEC; // type:function size:0xC scope:local +RestoreDestroy = .text:0x8008EFF8; // type:function size:0xC scope:local +ItemSizeShowAnim = .text:0x8008F004; // type:function size:0x180 scope:local +ItemRotProc = .text:0x8008F184; // type:function size:0x1BC scope:local +ItemShowProc = .text:0x8008F340; // type:function size:0x220 scope:local +ItemGetTarget = .text:0x8008F560; // type:function size:0x374 scope:local +ItemSizeSet = .text:0x8008F8D4; // type:function size:0x204 scope:local +ExecItemMini = .text:0x8008FAD8; // type:function size:0xA4 scope:local +ExecItemMega = .text:0x8008FB7C; // type:function size:0xA4 scope:local +ExecItemMiniSuper = .text:0x8008FC20; // type:function size:0xA4 scope:local +ExecItemMegaSuper = .text:0x8008FCC4; // type:function size:0xA4 scope:local +ExecItemHammer = .text:0x8008FD68; // type:function size:0x584 scope:local +ExecItemPipe = .text:0x800902EC; // type:function size:0xD34 scope:local +ExecItemSwap = .text:0x80091020; // type:function size:0xEBC scope:local +ExecItemSpark = .text:0x80091EDC; // type:function size:0x4FC scope:local +ExecItemLight = .text:0x800923D8; // type:function size:0xC8 scope:local +ExecItemWhistle = .text:0x800924A0; // type:function size:0xE3C scope:local +ExecItemBowser = .text:0x800932DC; // type:function size:0x3D4 scope:local +ExecItemBooBall = .text:0x800936B0; // type:function size:0x1370 scope:local +LampParticleUpdate = .text:0x80094A20; // type:function size:0x488 scope:local +GenieParticleUpdate = .text:0x80094EA8; // type:function size:0x388 scope:local +GenieCameraProc = .text:0x80095230; // type:function size:0xB0 scope:local +GenieCameraCalc = .text:0x800952E0; // type:function size:0x7A4 scope:local +GenieSceneExec = .text:0x80095A84; // type:function size:0x9D8 scope:local +ExecItemGenie = .text:0x8009645C; // type:function size:0x628 scope:local +BoardItemBagItemSet = .text:0x80096A84; // type:function size:0x3C +ExecItemBagJump = .text:0x80096AC0; // type:function size:0x13C scope:local +ExecItemBagShow = .text:0x80096BFC; // type:function size:0xDC scope:local +ExecItemBag = .text:0x80096CD8; // type:function size:0x584 scope:local +RestoreItemNull = .text:0x8009725C; // type:function size:0x1C scope:local +RestoreItemMini = .text:0x80097278; // type:function size:0x2C scope:local +RestoreItemMega = .text:0x800972A4; // type:function size:0x2C scope:local +RestoreItemMiniSuper = .text:0x800972D0; // type:function size:0x2C scope:local +RestoreItemMegaSuper = .text:0x800972FC; // type:function size:0x2C scope:local +RestoreItemBowser = .text:0x80097328; // type:function size:0x284 scope:local +BoardBowserExec = .text:0x800975AC; // type:function size:0x144 +ExecBowser = .text:0x800976F0; // type:function size:0x28C scope:local +ExecBowserMain = .text:0x8009797C; // type:function size:0x208 scope:local +ExecMGReturn = .text:0x80097B84; // type:function size:0x1DC scope:local +DestroyBowser = .text:0x80097D60; // type:function size:0x30 scope:local +SquishPlayers = .text:0x80097D90; // type:function size:0x148 scope:local +ExecBowserSpecial = .text:0x80097ED8; // type:function size:0x1B4 scope:local +ExecBowserGame = .text:0x8009808C; // type:function size:0x250 scope:local +DoMGReturnEffect = .text:0x800982DC; // type:function size:0x220 scope:local +ExecBowserShuffle = .text:0x800984FC; // type:function size:0x2B0 scope:local +ExecBowserRevo = .text:0x800987AC; // type:function size:0x160 scope:local +ExecBowserSuit = .text:0x8009890C; // type:function size:0xB8 scope:local +CheckSuitGive = .text:0x800989C4; // type:function size:0x1C scope:local +StartSuitGive = .text:0x800989E0; // type:function size:0x148 scope:local +SuitGiveMain = .text:0x80098B28; // type:function size:0x210 scope:local +CreateBowserObj = .text:0x80098D38; // type:function size:0x228 scope:local +ExecBowserObj = .text:0x80098F60; // type:function size:0x230 scope:local +ExecBowserFall = .text:0x80099190; // type:function size:0x270 scope:local +ExecBowserLaugh = .text:0x80099400; // type:function size:0x58 scope:local +ExecBowserFire = .text:0x80099458; // type:function size:0x44 scope:local +ExecBowserJump = .text:0x8009949C; // type:function size:0x150 scope:local +ExecBowserPowerUp = .text:0x800995EC; // type:function size:0x128 scope:local +SetBowserState = .text:0x80099714; // type:function size:0x34 scope:local +CheckBowserIdle = .text:0x80099748; // type:function size:0x5C scope:local +CreateMiniBowser = .text:0x800997A4; // type:function size:0xD4 scope:local +CheckMiniBowser = .text:0x80099878; // type:function size:0x1C scope:local +ExecMiniBowser = .text:0x80099894; // type:function size:0x18C scope:local +CreateBowserEvent = .text:0x80099A20; // type:function size:0x1E8 scope:local +CheckBowserEvent = .text:0x80099C08; // type:function size:0x38 scope:local +StopBowserEvent = .text:0x80099C40; // type:function size:0x24 scope:local +ExecBowserEvent = .text:0x80099C64; // type:function size:0xEC scope:local +ShowBowserEvent = .text:0x80099D50; // type:function size:0x1C8 scope:local +HideBowserEvent = .text:0x80099F18; // type:function size:0x108 scope:local +ConfigBowserEvent = .text:0x8009A020; // type:function size:0x160 scope:local +CreatePlayerMot = .text:0x8009A180; // type:function size:0x1AC scope:local +KillPlayerMot = .text:0x8009A32C; // type:function size:0xB8 scope:local +InitBowserFire = .text:0x8009A3E4; // type:function size:0x90 scope:local +BowserFireHook = .text:0x8009A474; // type:function size:0x160 scope:local +SpawnBowserFire = .text:0x8009A5D4; // type:function size:0xE4 scope:local +CheckBowserFire = .text:0x8009A6B8; // type:function size:0xCC scope:local +KillBowserFire = .text:0x8009A784; // type:function size:0x40 scope:local +ExecMiniBowserEvent = .text:0x8009A7C4; // type:function size:0x188 scope:local +MiniBowserTake = .text:0x8009A94C; // type:function size:0x2C4 scope:local +MiniBowserTakeAll = .text:0x8009AC10; // type:function size:0x2B8 scope:local +MiniBowserBalloonStop = .text:0x8009AEC8; // type:function size:0x24 scope:local +GetMiniBowserBalloonState = .text:0x8009AEEC; // type:function size:0xC scope:local +SetMiniBowserBalloonState = .text:0x8009AEF8; // type:function size:0x10 scope:local +CreateMiniBowserBalloon = .text:0x8009AF08; // type:function size:0x14C scope:local +ExecMiniBowserBalloon = .text:0x8009B054; // type:function size:0x120 scope:local +MiniBowserBalloonHover = .text:0x8009B174; // type:function size:0xB4 scope:local +MiniBowserBalloonFall = .text:0x8009B228; // type:function size:0x88 scope:local +MiniBowserBalloonRaise = .text:0x8009B2B0; // type:function size:0x80 scope:local +SetMiniBowserMotion = .text:0x8009B330; // type:function size:0xD8 scope:local +SetMiniBowserMotionPause = .text:0x8009B408; // type:function size:0x6C scope:local +WaitMiniBowserMotion = .text:0x8009B474; // type:function size:0x60 scope:local +BoardBattleExec = .text:0x8009B4D4; // type:function size:0x124 +DestroyBattle = .text:0x8009B5F8; // type:function size:0x2C scope:local +ExecBattle = .text:0x8009B624; // type:function size:0x708 scope:local +TakeCoins = .text:0x8009BD2C; // type:function size:0x1D4 scope:local +InitExplode = .text:0x8009BF00; // type:function size:0x1FC scope:local +CheckExplode = .text:0x8009C0FC; // type:function size:0x24 scope:local +UpdateExplode = .text:0x8009C120; // type:function size:0x2D0 scope:local +CreateBattleMain = .text:0x8009C3F0; // type:function size:0x1E8 scope:local +UpdateBattleMain = .text:0x8009C5D8; // type:function size:0x1A0 scope:local +DescendBattleBomb = .text:0x8009C778; // type:function size:0x64 scope:local +EndBattle = .text:0x8009C7DC; // type:function size:0x88 scope:local +ShowBattleGame = .text:0x8009C864; // type:function size:0x124 scope:local +RaiseBattleGame = .text:0x8009C988; // type:function size:0x8C scope:local +UpdateBattleCoin = .text:0x8009CA14; // type:function size:0x260 scope:local +ShowBattleCoin = .text:0x8009CC74; // type:function size:0x128 scope:local +InitBattleGameSpr = .text:0x8009CD9C; // type:function size:0x12C scope:local +HideBattleSpr = .text:0x8009CEC8; // type:function size:0x58 scope:local +VibratePad = .text:0x8009CF20; // type:function size:0x64 scope:local +StopBattleBomb = .text:0x8009CF84; // type:function size:0x24 scope:local +GetBattleBombState = .text:0x8009CFA8; // type:function size:0x10 scope:local +SetBattleBombState = .text:0x8009CFB8; // type:function size:0x34 scope:local +SetBattleCoinValue = .text:0x8009CFEC; // type:function size:0x15C scope:local +BoardFortuneExec = .text:0x8009D148; // type:function size:0x124 +FortuneExec = .text:0x8009D26C; // type:function size:0x74 scope:local +DestroyFortune = .text:0x8009D2E0; // type:function size:0xC scope:local +FortuneMain = .text:0x8009D2EC; // type:function size:0x340 scope:local +FortunePostMG = .text:0x8009D62C; // type:function size:0xF8 scope:local +CreateFortunePlatform = .text:0x8009D724; // type:function size:0x160 scope:local +CameraCalcFortune = .text:0x8009D884; // type:function size:0x5C scope:local +ExecFortunePlatform = .text:0x8009D8E0; // type:function size:0x198 scope:local +ExecComFortuneWin = .text:0x8009DA78; // type:function size:0x18C scope:local +ConfigComFortune = .text:0x8009DC04; // type:function size:0x20C scope:local +ComFortuneAddStar = .text:0x8009DE10; // type:function size:0x78 scope:local +ComFortuneAddCoin = .text:0x8009DE88; // type:function size:0x78 scope:local +ComFortuneSwapCoin = .text:0x8009DF00; // type:function size:0x68 scope:local +ComFortuneSwapStar = .text:0x8009DF68; // type:function size:0x68 scope:local +BoardBooCreate = .text:0x8009DFD0; // type:function size:0x11C +BoardBooKill = .text:0x8009E0EC; // type:function size:0x2C +BoardBooStealTypeSet = .text:0x8009E118; // type:function size:0x2A8 +ComSetupStealPlayer = .text:0x8009E3C0; // type:function size:0x1D4 scope:local +ComSetStealPlayerInput = .text:0x8009E594; // type:function size:0xE8 scope:local +BoardBooStealMain = .text:0x8009E67C; // type:function size:0x280 +ExecCoinSteal = .text:0x8009E8FC; // type:function size:0xC0 scope:local +ExecStarSteal = .text:0x8009E9BC; // type:function size:0xA8 scope:local +ExecLightSteal = .text:0x8009EA64; // type:function size:0x94 scope:local +SetBooMode = .text:0x8009EAF8; // type:function size:0x10 scope:local +CreateBallMdl = .text:0x8009EB08; // type:function size:0xBC scope:local +CreateBallView = .text:0x8009EBC4; // type:function size:0x1D4 scope:local +SetBallView = .text:0x8009ED98; // type:function size:0xAC scope:local +SetBallActive = .text:0x8009EE44; // type:function size:0x28 scope:local +CheckBallKill = .text:0x8009EE6C; // type:function size:0x4C scope:local +BallMain = .text:0x8009EEB8; // type:function size:0x300 scope:local +BallRenderHook = .text:0x8009F1B8; // type:function size:0x4A0 scope:local +ExecBoo = .text:0x8009F658; // type:function size:0x9C scope:local +UpdateBallCamera = .text:0x8009F6F4; // type:function size:0x1DC scope:local +CreateBallPlayer = .text:0x8009F8D0; // type:function size:0x358 scope:local +GetBallPlayerState = .text:0x8009FC28; // type:function size:0x24 scope:local +SetBallPlayerState = .text:0x8009FC4C; // type:function size:0x2C scope:local +ExecBallPlayer = .text:0x8009FC78; // type:function size:0x214 scope:local +BallPlayerZoomOut = .text:0x8009FE8C; // type:function size:0x15C scope:local +BallPlayerScare = .text:0x8009FFE8; // type:function size:0x110 scope:local +BallPlayerTurn = .text:0x800A00F8; // type:function size:0x68 scope:local +BallPlayerPunch = .text:0x800A0160; // type:function size:0x1E0 scope:local +BallPlayerUseLight = .text:0x800A0340; // type:function size:0x10C scope:local +BallPlayerCatch = .text:0x800A044C; // type:function size:0x190 scope:local +BallBooCreate = .text:0x800A05DC; // type:function size:0x328 scope:local +SetBallBooState = .text:0x800A0904; // type:function size:0x170 scope:local +GetBallBooState = .text:0x800A0A74; // type:function size:0x24 scope:local +ExecBallBoo = .text:0x800A0A98; // type:function size:0x128 scope:local +BallBooSpawn = .text:0x800A0BC0; // type:function size:0x54 scope:local +BallBooChase = .text:0x800A0C14; // type:function size:0x104 scope:local +BallBooBattle = .text:0x800A0D18; // type:function size:0x218 scope:local +BallBooAttack = .text:0x800A0F30; // type:function size:0xF4 scope:local +BallBooFlash = .text:0x800A1024; // type:function size:0x178 scope:local +TakeBallCoin = .text:0x800A119C; // type:function size:0x1B0 scope:local +ExecTakeBallCoin = .text:0x800A134C; // type:function size:0xDC scope:local +TakeBallCoinPosSet = .text:0x800A1428; // type:function size:0x9C scope:local +CheckBallCoinDone = .text:0x800A14C4; // type:function size:0x68 +TakeBallStar = .text:0x800A152C; // type:function size:0x168 +ExecTakeBallStar = .text:0x800A1694; // type:function size:0x184 +CheckTakeBallStarDone = .text:0x800A1818; // type:function size:0x1C +BoardBooStealValueGet = .text:0x800A1834; // type:function size:0x30 +BoardBooStealLightCheck = .text:0x800A1864; // type:function size:0x20 +UpdatePlayerCoins = .text:0x800A1884; // type:function size:0x1B0 scope:local +BoardMGSetupExec = .text:0x800A1A34; // type:function size:0x60 +DestroyMGSetup = .text:0x800A1A94; // type:function size:0x1C scope:local +ExecMGSetup = .text:0x800A1AB0; // type:function size:0x6FC scope:local +DetermineMGList = .text:0x800A21AC; // type:function size:0x3B0 scope:local +SetupStatusLayout = .text:0x800A255C; // type:function size:0x3A8 scope:local +GetMGType = .text:0x800A2904; // type:function size:0x388 scope:local +GetMGTypeTeam = .text:0x800A2C8C; // type:function size:0x3A4 scope:local +CreateMGSetup = .text:0x800A3030; // type:function size:0x194 scope:local +UpdateMGSetup = .text:0x800A31C4; // type:function size:0x198 scope:local +CenterStatus = .text:0x800A335C; // type:function size:0x174 scope:local +SeparateStatus = .text:0x800A34D0; // type:function size:0x200 scope:local +PopupVS = .text:0x800A36D0; // type:function size:0x20C scope:local +FallMGType = .text:0x800A38DC; // type:function size:0x1C8 scope:local +LuckyMGFall = .text:0x800A3AA4; // type:function size:0x204 scope:local +HideLuckyValue = .text:0x800A3CA8; // type:function size:0xA8 scope:local +UpdateLuckyValue = .text:0x800A3D50; // type:function size:0x430 scope:local +UpdateMGList = .text:0x800A4180; // type:function size:0x8FC scope:local +BoardMGSetupPlayClear = .text:0x800A4A7C; // type:function size:0x74 +BoardMGSetupPlaySearch = .text:0x800A4AF0; // type:function size:0xC8 +BoardMGSetupPlayPush = .text:0x800A4BB8; // type:function size:0xD0 +BoardMGSetupTutorialExec = .text:0x800A4C88; // type:function size:0x2E4 +BoardBooHouseHostSet = .text:0x800A4F6C; // type:function size:0x8 +BoardBooHouseHostGet = .text:0x800A4F74; // type:function size:0x8 +BoardBooHouseCreate = .text:0x800A4F7C; // type:function size:0xB4 +BoardBooHouseKill = .text:0x800A5030; // type:function size:0x50 +BoardBooHouseExec = .text:0x800A5080; // type:function size:0x94 +ExecBooHouse = .text:0x800A5114; // type:function size:0x538 scope:local +DestroyBooHouse = .text:0x800A564C; // type:function size:0xF0 scope:local +PickComStealType = .text:0x800A573C; // type:function size:0xFC scope:local +OpenBooHouse = .text:0x800A5838; // type:function size:0x3A0 scope:local +CloseBooHouse = .text:0x800A5BD8; // type:function size:0x124 scope:local +CreateBooHouseModel = .text:0x800A5CFC; // type:function size:0xB0 scope:local +KillBooHouseModel = .text:0x800A5DAC; // type:function size:0xD4 scope:local +ExecNullSteal = .text:0x800A5E80; // type:function size:0x68 scope:local +ExecStarSteal = .text:0x800A5EE8; // type:function size:0x2AC scope:local +ExecCoinSteal = .text:0x800A6194; // type:function size:0x2AC scope:local +ApplySteal = .text:0x800A6440; // type:function size:0x188 scope:local +ApplyCoinSteal = .text:0x800A65C8; // type:function size:0x16C scope:local +ApplyStarSteal = .text:0x800A6734; // type:function size:0x164 scope:local +ApplyBooLight = .text:0x800A6898; // type:function size:0x70 scope:local +SetBooBallPos = .text:0x800A6908; // type:function size:0x60 scope:local +BoardBooComUseCheck = .text:0x800A6968; // type:function size:0x1A8 +BoardBooHouseTutorialExec = .text:0x800A6B10; // type:function size:0x3D4 +BoardStartExec = .text:0x800A6EE4; // type:function size:0x64 +DestroyStart = .text:0x800A6F48; // type:function size:0x84 scope:local +ExecStart = .text:0x800A6FCC; // type:function size:0x400 scope:local +ShowLogo = .text:0x800A73CC; // type:function size:0x2FC scope:local +FocusStart = .text:0x800A76C8; // type:function size:0x17C scope:local +CreatePlayerStart = .text:0x800A7844; // type:function size:0x2D8 scope:local +ExecPlayerStart = .text:0x800A7B1C; // type:function size:0x188 scope:local +PlayerFall = .text:0x800A7CA4; // type:function size:0x1C8 scope:local +PlayerWaitSpeak = .text:0x800A7E6C; // type:function size:0xEC scope:local +PlayerDiceFall = .text:0x800A7F58; // type:function size:0x1A8 scope:local +PlayerDiceRoll = .text:0x800A8100; // type:function size:0x454 scope:local +PlayerDiceNumShow = .text:0x800A8554; // type:function size:0xD8 scope:local +PlayerDiceNumHide = .text:0x800A862C; // type:function size:0x250 scope:local +SetPlayerStartState = .text:0x800A887C; // type:function size:0xC8 scope:local +GetPlayerStartState = .text:0x800A8944; // type:function size:0x3C scope:local +ExecStartRoll = .text:0x800A8980; // type:function size:0x6D4 scope:local +InitCamera = .text:0x800A9054; // type:function size:0x318 scope:local +InitHost = .text:0x800A936C; // type:function size:0xA4 scope:local +CreateTapWin = .text:0x800A9410; // type:function size:0xDC scope:local +OrderPlayers = .text:0x800A94EC; // type:function size:0x21C scope:local +BoardLast5Exec = .text:0x800A9708; // type:function size:0x84 +DestroyLast5 = .text:0x800A978C; // type:function size:0x30 scope:local +ExecLast5 = .text:0x800A97BC; // type:function size:0x1D4 scope:local +CreateLast5 = .text:0x800A9990; // type:function size:0x184 scope:local +KillLast5 = .text:0x800A9B14; // type:function size:0x48 scope:local +InitHost = .text:0x800A9B5C; // type:function size:0x10C scope:local +KillHost = .text:0x800A9C68; // type:function size:0xA4 scope:local +Last5Main = .text:0x800A9D0C; // type:function size:0xCC0 scope:local +CheckJump = .text:0x800AA9CC; // type:function size:0xA4 scope:local +CreateLotteryDrawWheel = .text:0x800AAA70; // type:function size:0x1FC scope:local +CreateLotteryDraw = .text:0x800AAC6C; // type:function size:0xD4 scope:local +UpdateLotteryDraw = .text:0x800AAD40; // type:function size:0x170 scope:local +SetLotteryDrawState = .text:0x800AAEB0; // type:function size:0x88 scope:local +GetLotteryDrawState = .text:0x800AAF38; // type:function size:0x20 scope:local +KillLotteryDrawWheel = .text:0x800AAF58; // type:function size:0x24 scope:local +UpdateLotteryDrawWheel = .text:0x800AAF7C; // type:function size:0x2D0 scope:local +SetLotteryDrawWheelState = .text:0x800AB24C; // type:function size:0x1D8 scope:local +ExecLotteryDraw = .text:0x800AB424; // type:function size:0x950 scope:local +KillLotteryTicket = .text:0x800ABD74; // type:function size:0x4C scope:local +InitLotteryTicket = .text:0x800ABDC0; // type:function size:0x488 scope:local +UpdateLotteryTicket = .text:0x800AC248; // type:function size:0x2A4 scope:local +SetLotteryTicketState = .text:0x800AC4EC; // type:function size:0x1C0 scope:local +GetLotteryTicketPlayer = .text:0x800AC6AC; // type:function size:0x7C scope:local +CheckLotteryTicket = .text:0x800AC728; // type:function size:0x78 scope:local +UpdateLotteryTicketMatch = .text:0x800AC7A0; // type:function size:0xB0 scope:local +StartHostMove = .text:0x800AC850; // type:function size:0x1CC scope:local +ExecHostMove = .text:0x800ACA1C; // type:function size:0x228 scope:local +CheckHostMove = .text:0x800ACC44; // type:function size:0x1C scope:local +CreateStopWin = .text:0x800ACC60; // type:function size:0xC0 scope:local +CreateLast5Roulette = .text:0x800ACD20; // type:function size:0x180 scope:local +UpdateLast5Roulette = .text:0x800ACEA0; // type:function size:0x2B0 scope:local +SetLast5RouletteFade = .text:0x800AD150; // type:function size:0x44 scope:local +SetLast5RouletteState = .text:0x800AD194; // type:function size:0x38 scope:local +GetLast5RouletteState = .text:0x800AD1CC; // type:function size:0x38 scope:local +GetLast5RouletteResult = .text:0x800AD204; // type:function size:0x44 scope:local +CreateTeamResult = .text:0x800AD248; // type:function size:0x2B4 scope:local +CreateTeamResultWork = .text:0x800AD4FC; // type:function size:0x340 scope:local +SetTeamResultTarget = .text:0x800AD83C; // type:function size:0x58 scope:local +GetTeamResultTarget = .text:0x800AD894; // type:function size:0x58 scope:local +KillTeamResult = .text:0x800AD8EC; // type:function size:0x38 scope:local +UpdateTeamResult = .text:0x800AD924; // type:function size:0x260 scope:local +BoardPauseStart = .text:0x800ADB84; // type:function size:0x88 +PauseExit = .text:0x800ADC0C; // type:function size:0x3C0 scope:local +PauseProcess = .text:0x800ADFCC; // type:function size:0x108 scope:local +CreatePauseScreen = .text:0x800AE0D4; // type:function size:0xABC scope:local +DeletePauseScreen = .text:0x800AEB90; // type:function size:0x168 scope:local +SetBoxVisible = .text:0x800AECF8; // type:function size:0x58 scope:local +PauseConfigObjFunc = .text:0x800AED50; // type:function size:0x4F4 scope:local +UpdatePauseText = .text:0x800AF244; // type:function size:0x310 scope:local +InitPauseQuit = .text:0x800AF554; // type:function size:0x264 scope:local +PauseQuitProcess = .text:0x800AF7B8; // type:function size:0x110 scope:local +DeletePauseQuit = .text:0x800AF8C8; // type:function size:0x48 scope:local +UpdatePadConfig = .text:0x800AF910; // type:function size:0xD4 scope:local +CreatePadConfig = .text:0x800AF9E4; // type:function size:0x1CC scope:local +ScrollInPadConfig = .text:0x800AFBB0; // type:function size:0x178 scope:local +CursorMovePadConfig = .text:0x800AFD28; // type:function size:0x238 scope:local +ChangeDiffPadConfig = .text:0x800AFF60; // type:function size:0x3B0 scope:local +ScrollOutPadConfig = .text:0x800B0310; // type:function size:0x154 scope:local +UpdatePauseBox = .text:0x800B0464; // type:function size:0x390 scope:local +UpdatePauseBoxExt = .text:0x800B07F4; // type:function size:0x3E4 scope:local +ExecPauseConfig = .text:0x800B0BD8; // type:function size:0x240 scope:local +CreatePauseControlWin = .text:0x800B0E18; // type:function size:0x210 scope:local +DeletePauseControlWin = .text:0x800B1028; // type:function size:0x70 scope:local +WaitPauseInput = .text:0x800B1098; // type:function size:0x1B8 scope:local +ShowPauseConfig = .text:0x800B1250; // type:function size:0x12C scope:local +CreatePadConfigSprite = .text:0x800B137C; // type:function size:0x1A4 scope:local +ShowPadConfigSprite = .text:0x800B1520; // type:function size:0x10C scope:local +PauseCreateNumber = .text:0x800B162C; // type:function size:0xDC scope:local +BoardPauseActiveCheck = .text:0x800B1708; // type:function size:0x34 +BoardPauseReqCheck = .text:0x800B173C; // type:function size:0x12C +CheckPort = .text:0x800B1868; // type:function size:0x4C scope:local +RotateBox = .text:0x800B18B4; // type:function size:0xC0 scope:local +SearchPathNodeSpace = .text:0x800B1974; // type:function size:0x60 scope:local +InitPathNode = .text:0x800B19D4; // type:function size:0x180 scope:local +FindChildNode = .text:0x800B1B54; // type:function size:0xE4 scope:local +GetNumValidLinks = .text:0x800B1C38; // type:function size:0xB4 scope:local +AddValidLinks = .text:0x800B1CEC; // type:function size:0xD0 scope:local +CheckPathSpace = .text:0x800B1DBC; // type:function size:0x30 scope:local +FindValidLink = .text:0x800B1DEC; // type:function size:0xAC scope:local +CheckEndSpace = .text:0x800B1E98; // type:function size:0xF0 scope:local +BoardComPathShortcutLenGet = .text:0x800B1F88; // type:function size:0x74C +BoardComPathBestGet = .text:0x800B26D4; // type:function size:0x3E4 +BoardComPathLenGet = .text:0x800B2AB8; // type:function size:0x65C +CheckPath = .text:0x800B3114; // type:function size:0x488 scope:local +BoardComPathBestGetFlag = .text:0x800B359C; // type:function size:0x45C +CheckPathFlag = .text:0x800B39F8; // type:function size:0x4E0 scope:local +TutorialProcFunc = .text:0x800B3ED8; // type:function size:0x34 scope:local +BoardTutorialInit = .text:0x800B3F0C; // type:function size:0x80 +BoardTutorialKill = .text:0x800B3F8C; // type:function size:0x4C +BoardTutorialHookSet = .text:0x800B3FD8; // type:function size:0x8 +BoardTutorialHookExec = .text:0x800B3FE0; // type:function size:0x44 +BoardTutorialPlayerInit = .text:0x800B4024; // type:function size:0x78 +BoardTutorialWorkSave = .text:0x800B409C; // type:function size:0x10C +BoardTutorialWorkRestore = .text:0x800B41A8; // type:function size:0xBC +BoardTutorialDirInputSet = .text:0x800B4264; // type:function size:0x10 +BoardTutorialBlockSetPos = .text:0x800B4274; // type:function size:0x40 +BoardTutorialItemSet = .text:0x800B42B4; // type:function size:0x8 +BoardTutorialHostSet = .text:0x800B42BC; // type:function size:0x8 +BoardTutorialHostHide = .text:0x800B42C4; // type:function size:0x30 +PPCMfmsr = .text:0x800B42F4; // type:function size:0x8 scope:global +PPCMtmsr = .text:0x800B42FC; // type:function size:0x8 scope:global +PPCMfhid0 = .text:0x800B4304; // type:function size:0x8 scope:global +PPCMthid0 = .text:0x800B430C; // type:function size:0x8 +PPCMfl2cr = .text:0x800B4314; // type:function size:0x8 scope:global +PPCMtl2cr = .text:0x800B431C; // type:function size:0x8 scope:global +PPCMtdec = .text:0x800B4324; // type:function size:0x8 scope:weak +PPCSync = .text:0x800B432C; // type:function size:0x8 +PPCHalt = .text:0x800B4334; // type:function size:0x14 scope:weak +PPCMfhid2 = .text:0x800B4348; // type:function size:0x8 scope:global +PPCMthid2 = .text:0x800B4350; // type:function size:0x8 scope:global +PPCMfwpar = .text:0x800B4358; // type:function size:0xC +PPCMtwpar = .text:0x800B4364; // type:function size:0x8 scope:global +PPCDisableSpeculation = .text:0x800B436C; // type:function size:0x28 scope:global +PPCSetFpNonIEEEMode = .text:0x800B4394; // type:function size:0x8 scope:global +OSGetConsoleType = .text:0x800B439C; // type:function size:0x28 scope:global +ClearArena = .text:0x800B43C4; // type:function size:0x128 scope:local +InquiryCallback = .text:0x800B44EC; // type:function size:0x3C scope:local +OSInit = .text:0x800B4528; // type:function size:0x3B8 scope:global +OSExceptionInit = .text:0x800B48E0; // type:function size:0x280 scope:local +__OSDBINTSTART = .text:0x800B4B60; // type:label scope:global +__OSDBIntegrator = .text:0x800B4B60; // type:function size:0x24 scope:local +__OSDBINTEND = .text:0x800B4B84; // type:label scope:global +__OSDBJump = .text:0x800B4B84; // type:function size:0x4 scope:local +__OSDBJUMPEND = .text:0x800B4B88; // type:label scope:global +__OSSetExceptionHandler = .text:0x800B4B88; // type:function size:0x1C scope:global +__OSGetExceptionHandler = .text:0x800B4BA4; // type:function size:0x14 scope:global +__OSEVStart = .text:0x800B4BB8; // type:label scope:global +OSExceptionVector = .text:0x800B4BB8; // type:function size:0x9C scope:local +__DBVECTOR = .text:0x800B4C10; // type:label scope:global data:4byte +__OSEVSetNumber = .text:0x800B4C20; // type:label scope:global data:4byte +__OSEVEnd = .text:0x800B4C50; // type:label scope:global +OSDefaultExceptionHandler = .text:0x800B4C54; // type:function size:0x58 scope:global +__OSPSInit = .text:0x800B4CAC; // type:function size:0x38 scope:global +__OSGetDIConfig = .text:0x800B4CE4; // type:function size:0x14 +OSInitAlarm = .text:0x800B4CF8; // type:function size:0x4C scope:global +OSCreateAlarm = .text:0x800B4D44; // type:function size:0xC scope:global +InsertAlarm = .text:0x800B4D50; // type:function size:0x250 scope:local +OSSetAlarm = .text:0x800B4FA0; // type:function size:0x68 scope:global +OSCancelAlarm = .text:0x800B5008; // type:function size:0x11C +DecrementerExceptionCallback = .text:0x800B5124; // type:function size:0x230 scope:local +DecrementerExceptionHandler = .text:0x800B5354; // type:function size:0x50 scope:local +DLInsert = .text:0x800B53A4; // type:function size:0xAC scope:local +OSAllocFromHeap = .text:0x800B5450; // type:function size:0xFC +OSAllocFixed = .text:0x800B554C; // type:function size:0x284 +OSFreeToHeap = .text:0x800B57D0; // type:function size:0x7C +OSSetCurrentHeap = .text:0x800B584C; // type:function size:0x10 +OSInitAlloc = .text:0x800B585C; // type:function size:0x70 +OSCreateHeap = .text:0x800B58CC; // type:function size:0x6C +OSCheckHeap = .text:0x800B5938; // type:function size:0x360 +OSDumpHeap = .text:0x800B5C98; // type:function size:0x104 +OSGetArenaHi = .text:0x800B5D9C; // type:function size:0x8 scope:global +OSGetArenaLo = .text:0x800B5DA4; // type:function size:0x8 scope:global +OSSetArenaHi = .text:0x800B5DAC; // type:function size:0x8 scope:global +OSSetArenaLo = .text:0x800B5DB4; // type:function size:0x8 scope:global +__OSInitAudioSystem = .text:0x800B5DBC; // type:function size:0x1BC scope:global +__OSStopAudioSystem = .text:0x800B5F78; // type:function size:0xD8 scope:global +DCEnable = .text:0x800B6050; // type:function size:0x14 scope:global +DCInvalidateRange = .text:0x800B6064; // type:function size:0x30 scope:global +DCFlushRange = .text:0x800B6094; // type:function size:0x34 scope:global +DCStoreRange = .text:0x800B60C8; // type:function size:0x34 +DCFlushRangeNoSync = .text:0x800B60FC; // type:function size:0x30 scope:global +DCStoreRangeNoSync = .text:0x800B612C; // type:function size:0x30 +DCZeroRange = .text:0x800B615C; // type:function size:0x30 +ICInvalidateRange = .text:0x800B618C; // type:function size:0x38 scope:global +ICFlashInvalidate = .text:0x800B61C4; // type:function size:0x10 scope:global +ICEnable = .text:0x800B61D4; // type:function size:0x14 scope:global +__LCEnable = .text:0x800B61E8; // type:function size:0xCC scope:local +LCEnable = .text:0x800B62B4; // type:function size:0x38 +LCDisable = .text:0x800B62EC; // type:function size:0x28 scope:global +LCStoreBlocks = .text:0x800B6314; // type:function size:0x24 +LCStoreData = .text:0x800B6338; // type:function size:0xAC +LCQueueWait = .text:0x800B63E4; // type:function size:0x18 +L2GlobalInvalidate = .text:0x800B63FC; // type:function size:0x98 scope:global +DMAErrorHandler = .text:0x800B6494; // type:function size:0x160 scope:global +__OSCacheInit = .text:0x800B65F4; // type:function size:0xF4 scope:global +__OSLoadFPUContext = .text:0x800B66E8; // type:function size:0x124 scope:local +__OSSaveFPUContext = .text:0x800B680C; // type:function size:0x128 scope:local +OSSetCurrentContext = .text:0x800B6934; // type:function size:0x5C scope:global +OSGetCurrentContext = .text:0x800B6990; // type:function size:0xC +OSSaveContext = .text:0x800B699C; // type:function size:0x80 +OSLoadContext = .text:0x800B6A1C; // type:function size:0xD8 scope:global +OSClearContext = .text:0x800B6AF4; // type:function size:0x24 scope:global +OSInitContext = .text:0x800B6B18; // type:function size:0xBC +OSDumpContext = .text:0x800B6BD4; // type:function size:0x2A8 scope:global +OSSwitchFPUContext = .text:0x800B6E7C; // type:function size:0x84 scope:local +__OSContextInit = .text:0x800B6F00; // type:function size:0x48 scope:global +OSReport = .text:0x800B6F48; // type:function size:0x80 scope:global +OSSetErrorHandler = .text:0x800B6FC8; // type:function size:0x1C scope:global +__OSUnhandledException = .text:0x800B6FE4; // type:function size:0x200 scope:global +OSGetFontEncode = .text:0x800B71E4; // type:function size:0x58 +OSDisableInterrupts = .text:0x800B723C; // type:function size:0x14 scope:global +__RAS_OSDisableInterrupts_begin = .text:0x800B723C; // type:label scope:global +__RAS_OSDisableInterrupts_end = .text:0x800B724C; // type:label scope:global +OSEnableInterrupts = .text:0x800B7250; // type:function size:0x14 scope:global +OSRestoreInterrupts = .text:0x800B7264; // type:function size:0x24 scope:global +__OSSetInterruptHandler = .text:0x800B7288; // type:function size:0x1C scope:global +__OSGetInterruptHandler = .text:0x800B72A4; // type:function size:0x14 +__OSInterruptInit = .text:0x800B72B8; // type:function size:0x74 scope:global +SetInterruptMask = .text:0x800B732C; // type:function size:0x2D8 scope:local +__OSMaskInterrupts = .text:0x800B7604; // type:function size:0x88 scope:global +__OSUnmaskInterrupts = .text:0x800B768C; // type:function size:0x88 scope:global +__OSDispatchInterrupt = .text:0x800B7714; // type:function size:0x344 +ExternalInterruptHandler = .text:0x800B7A58; // type:function size:0x50 scope:local +OSNotifyLink = .text:0x800B7AA8; // type:function size:0x4 scope:weak +OSNotifyUnlink = .text:0x800B7AAC; // type:function size:0x4 scope:weak +Relocate = .text:0x800B7AB0; // type:function size:0x274 scope:local +OSLink = .text:0x800B7D24; // type:function size:0x250 +Undo = .text:0x800B7F74; // type:function size:0x20C scope:local +OSUnlink = .text:0x800B8180; // type:function size:0x94 +__OSModuleInit = .text:0x800B8214; // type:function size:0x18 scope:global +OSInitMessageQueue = .text:0x800B822C; // type:function size:0x60 +OSGetPhysicalMemSize = .text:0x800B828C; // type:function size:0xC +OSGetConsoleSimulatedMemSize = .text:0x800B8298; // type:function size:0xC +OnReset = .text:0x800B82A4; // type:function size:0x3C scope:local +MEMIntrruptHandler = .text:0x800B82E0; // type:function size:0x6C scope:local +Config24MB = .text:0x800B834C; // type:function size:0x80 scope:local +Config48MB = .text:0x800B83CC; // type:function size:0x80 scope:local +RealMode = .text:0x800B844C; // type:function size:0x18 scope:local +__OSInitMemoryProtection = .text:0x800B8464; // type:function size:0x120 scope:global +__OSUnlockAllMutex = .text:0x800B8584; // type:function size:0x70 +Run = .text:0x800B85F4; // type:function size:0x40 scope:local +Callback = .text:0x800B8634; // type:function size:0xC scope:local +__OSReboot = .text:0x800B8640; // type:function size:0x1C0 scope:global +OSRegisterResetFunction = .text:0x800B8800; // type:function size:0x84 scope:global +Reset = .text:0x800B8884; // type:function size:0x70 scope:local +__OSDoHotReset = .text:0x800B88F4; // type:function size:0x48 +OSResetSystem = .text:0x800B893C; // type:function size:0x278 scope:global +OSGetResetCode = .text:0x800B8BB4; // type:function size:0x30 scope:global +__OSResetSWInterruptHandler = .text:0x800B8BE4; // type:function size:0xF4 scope:global +OSGetResetButtonState = .text:0x800B8CD8; // type:function size:0x298 +WriteSramCallback = .text:0x800B8F70; // type:function size:0x60 scope:local +WriteSram = .text:0x800B8FD0; // type:function size:0x118 scope:local +__OSInitSram = .text:0x800B90E8; // type:function size:0x134 scope:global +__OSLockSram = .text:0x800B921C; // type:function size:0x5C scope:global +__OSLockSramEx = .text:0x800B9278; // type:function size:0x5C scope:global +UnlockSram = .text:0x800B92D4; // type:function size:0x308 scope:local +__OSUnlockSram = .text:0x800B95DC; // type:function size:0x24 scope:global +__OSUnlockSramEx = .text:0x800B9600; // type:function size:0x24 scope:global +__OSSyncSram = .text:0x800B9624; // type:function size:0x10 scope:global +OSGetSoundMode = .text:0x800B9634; // type:function size:0x80 +OSSetSoundMode = .text:0x800B96B4; // type:function size:0xA4 +OSGetProgressiveMode = .text:0x800B9758; // type:function size:0x70 +OSSetProgressiveMode = .text:0x800B97C8; // type:function size:0xA4 +OSGetWirelessID = .text:0x800B986C; // type:function size:0x84 +OSSetWirelessID = .text:0x800B98F0; // type:function size:0xAC +OSInitStopwatch = .text:0x800B999C; // type:function size:0x2C +OSStartStopwatch = .text:0x800B99C8; // type:function size:0x3C +OSStopStopwatch = .text:0x800B9A04; // type:function size:0xCC +OSCheckStopwatch = .text:0x800B9AD0; // type:function size:0x70 +OSResetStopwatch = .text:0x800B9B40; // type:function size:0x28 +OSDumpStopwatch = .text:0x800B9B68; // type:function size:0x1A4 +__OSSystemCallVectorStart = .text:0x800B9D0C; // type:label scope:global +SystemCallVector = .text:0x800B9D0C; // type:function size:0x20 scope:local +__OSSystemCallVectorEnd = .text:0x800B9D28; // type:label scope:global +__OSInitSystemCall = .text:0x800B9D2C; // type:function size:0x64 scope:global +__OSThreadInit = .text:0x800B9D90; // type:function size:0x128 scope:global +OSInitThreadQueue = .text:0x800B9EB8; // type:function size:0x10 scope:global +OSGetCurrentThread = .text:0x800B9EC8; // type:function size:0xC +OSDisableScheduler = .text:0x800B9ED4; // type:function size:0x40 scope:global +OSEnableScheduler = .text:0x800B9F14; // type:function size:0x40 scope:global +UnsetRun = .text:0x800B9F54; // type:function size:0x68 scope:local +__OSGetEffectivePriority = .text:0x800B9FBC; // type:function size:0x3C +SetEffectivePriority = .text:0x800B9FF8; // type:function size:0x1C0 scope:local +SelectThread = .text:0x800BA1B8; // type:function size:0x200 scope:local +__OSReschedule = .text:0x800BA3B8; // type:function size:0x30 scope:global +OSYieldThread = .text:0x800BA3E8; // type:function size:0x3C +OSCreateThread = .text:0x800BA424; // type:function size:0x120 +OSExitThread = .text:0x800BA544; // type:function size:0xE4 +OSCancelThread = .text:0x800BA628; // type:function size:0x1BC scope:global +OSResumeThread = .text:0x800BA7E4; // type:function size:0x288 +OSSuspendThread = .text:0x800BAA6C; // type:function size:0x170 +OSSleepThread = .text:0x800BABDC; // type:function size:0xEC +OSWakeupThread = .text:0x800BACC8; // type:function size:0x104 +OSSetIdleFunction = .text:0x800BADCC; // type:function size:0x90 +OSGetTime = .text:0x800BAE5C; // type:function size:0x18 scope:global +OSGetTick = .text:0x800BAE74; // type:function size:0x8 scope:global +__OSGetSystemTime = .text:0x800BAE7C; // type:function size:0x64 scope:global +GetDates = .text:0x800BAEE0; // type:function size:0x19C scope:local +OSTicksToCalendarTime = .text:0x800BB07C; // type:function size:0x204 +__init_user = .text:0x800BB280; // type:function size:0x20 scope:global +__init_cpp = .text:0x800BB2A0; // type:function size:0x54 scope:local +_ExitProcess = .text:0x800BB2F4; // type:function size:0x20 scope:global +DBInit = .text:0x800BB314; // type:function size:0x28 scope:global +__DBExceptionDestinationAux = .text:0x800BB33C; // type:function size:0x48 scope:global +__DBExceptionDestination = .text:0x800BB384; // type:function size:0x10 scope:local +__DBIsExceptionMarked = .text:0x800BB394; // type:function size:0x1C scope:global +DBPrintf = .text:0x800BB3B0; // type:function size:0x50 scope:global +PSMTXIdentity = .text:0x800BB400; // type:function size:0x2C +PSMTXCopy = .text:0x800BB42C; // type:function size:0x34 +PSMTXConcat = .text:0x800BB460; // type:function size:0xCC +PSMTXTranspose = .text:0x800BB52C; // type:function size:0x50 +PSMTXInverse = .text:0x800BB57C; // type:function size:0xF8 +PSMTXInvXpose = .text:0x800BB674; // type:function size:0xC8 +PSMTXRotRad = .text:0x800BB73C; // type:function size:0x70 +PSMTXRotTrig = .text:0x800BB7AC; // type:function size:0xA8 +PSMTXRotAxisRad = .text:0x800BB854; // type:function size:0x104 +PSMTXTrans = .text:0x800BB958; // type:function size:0x34 +PSMTXScale = .text:0x800BB98C; // type:function size:0x28 +PSMTXQuat = .text:0x800BB9B4; // type:function size:0xA4 +C_MTXLookAt = .text:0x800BBA58; // type:function size:0x18C +C_MTXLightPerspective = .text:0x800BBBE4; // type:function size:0xCC +PSMTXMultVec = .text:0x800BBCB0; // type:function size:0x54 +PSMTXMultVecArray = .text:0x800BBD04; // type:function size:0x8C +PSMTXMultVecSR = .text:0x800BBD90; // type:function size:0x54 +C_MTXPerspective = .text:0x800BBDE4; // type:function size:0xD0 +C_MTXOrtho = .text:0x800BBEB4; // type:function size:0x98 +PSVECAdd = .text:0x800BBF4C; // type:function size:0x24 +PSVECSubtract = .text:0x800BBF70; // type:function size:0x24 +PSVECScale = .text:0x800BBF94; // type:function size:0x1C +PSVECNormalize = .text:0x800BBFB0; // type:function size:0x44 +PSVECSquareMag = .text:0x800BBFF4; // type:function size:0x18 +PSVECMag = .text:0x800BC00C; // type:function size:0x3C +PSVECDotProduct = .text:0x800BC048; // type:function size:0x20 +PSVECCrossProduct = .text:0x800BC068; // type:function size:0x3C +C_VECHalfAngle = .text:0x800BC0A4; // type:function size:0xD8 +C_VECReflect = .text:0x800BC17C; // type:function size:0xD4 +PSVECSquareDistance = .text:0x800BC250; // type:function size:0x28 +PSVECDistance = .text:0x800BC278; // type:function size:0x4C +C_QUATAdd = .text:0x800BC2C4; // type:function size:0x44 +PSQUATAdd = .text:0x800BC308; // type:function size:0x24 +PSQUATMultiply = .text:0x800BC32C; // type:function size:0x5C +PSQUATNormalize = .text:0x800BC388; // type:function size:0x54 +PSQUATInverse = .text:0x800BC3DC; // type:function size:0x50 +C_QUATRotAxisRad = .text:0x800BC42C; // type:function size:0x8C +C_QUATMtx = .text:0x800BC4B8; // type:function size:0x258 +C_QUATSlerp = .text:0x800BC710; // type:function size:0x174 +PSMTXReorder = .text:0x800BC884; // type:function size:0x4C +PSMTXROMultVecArray = .text:0x800BC8D0; // type:function size:0x118 +__DVDInitWA = .text:0x800BC9E8; // type:function size:0x40 scope:global +__DVDInterruptHandler = .text:0x800BCA28; // type:function size:0x2F4 scope:global +AlarmHandler = .text:0x800BCD1C; // type:function size:0x84 scope:local +AlarmHandlerForTimeout = .text:0x800BCDA0; // type:function size:0x70 scope:local +Read = .text:0x800BCE10; // type:function size:0x110 scope:local +SeekTwiceBeforeRead = .text:0x800BCF20; // type:function size:0x80 scope:local +DVDLowRead = .text:0x800BCFA0; // type:function size:0x298 +DVDLowSeek = .text:0x800BD238; // type:function size:0x94 +DVDLowWaitCoverClose = .text:0x800BD2CC; // type:function size:0x2C scope:global +DVDLowReadDiskID = .text:0x800BD2F8; // type:function size:0xA4 +DVDLowStopMotor = .text:0x800BD39C; // type:function size:0x8C scope:global +DVDLowRequestError = .text:0x800BD428; // type:function size:0x8C +DVDLowInquiry = .text:0x800BD4B4; // type:function size:0x9C +DVDLowAudioStream = .text:0x800BD550; // type:function size:0x98 +DVDLowRequestAudioStatus = .text:0x800BD5E8; // type:function size:0x8C +DVDLowAudioBufferConfig = .text:0x800BD674; // type:function size:0x9C +DVDLowReset = .text:0x800BD710; // type:function size:0xBC scope:global +DVDLowBreak = .text:0x800BD7CC; // type:function size:0x14 +DVDLowClearCallback = .text:0x800BD7E0; // type:function size:0x18 +__DVDLowSetWAType = .text:0x800BD7F8; // type:function size:0x44 scope:global +__DVDFSInit = .text:0x800BD83C; // type:function size:0x38 scope:global +DVDConvertPathToEntrynum = .text:0x800BD874; // type:function size:0x2F4 +DVDFastOpen = .text:0x800BDB68; // type:function size:0x74 +DVDOpen = .text:0x800BDBDC; // type:function size:0xC8 +DVDClose = .text:0x800BDCA4; // type:function size:0x24 +entryToPath = .text:0x800BDCC8; // type:function size:0x160 scope:local +DVDGetCurrentDir = .text:0x800BDE28; // type:function size:0xC4 +DVDReadAsyncPrio = .text:0x800BDEEC; // type:function size:0xC0 +cbForReadAsync = .text:0x800BDFAC; // type:function size:0x30 scope:local +DVDReadPrio = .text:0x800BDFDC; // type:function size:0x118 +cbForReadSync = .text:0x800BE0F4; // type:function size:0x24 scope:local +DVDInit = .text:0x800BE118; // type:function size:0xFC scope:global +stateReadingFST = .text:0x800BE214; // type:function size:0x54 scope:local +cbForStateReadingFST = .text:0x800BE268; // type:function size:0x80 scope:local +cbForStateError = .text:0x800BE2E8; // type:function size:0xA8 scope:local +stateTimeout = .text:0x800BE390; // type:function size:0x9C scope:local +stateGettingError = .text:0x800BE42C; // type:function size:0x28 scope:local +CategorizeError = .text:0x800BE454; // type:function size:0xB4 scope:local +cbForStateGettingError = .text:0x800BE508; // type:function size:0x294 scope:local +cbForUnrecoveredError = .text:0x800BE79C; // type:function size:0x68 scope:local +cbForUnrecoveredErrorRetry = .text:0x800BE804; // type:function size:0x98 scope:local +stateGoToRetry = .text:0x800BE89C; // type:function size:0x28 scope:local +cbForStateGoToRetry = .text:0x800BE8C4; // type:function size:0x158 scope:local +stateCheckID = .text:0x800BEA1C; // type:function size:0xE4 scope:local +stateCheckID3 = .text:0x800BEB00; // type:function size:0x34 scope:local +stateCheckID2 = .text:0x800BEB34; // type:function size:0x38 scope:local +cbForStateCheckID1 = .text:0x800BEB6C; // type:function size:0x114 scope:local +cbForStateCheckID2 = .text:0x800BEC80; // type:function size:0xA4 scope:local +cbForStateCheckID3 = .text:0x800BED24; // type:function size:0xFC scope:local +AlarmHandler = .text:0x800BEE20; // type:function size:0x44 scope:local +stateCoverClosed = .text:0x800BEE64; // type:function size:0xCC scope:local +stateCoverClosed_CMD = .text:0x800BEF30; // type:function size:0x30 scope:local +cbForStateCoverClosed = .text:0x800BEF60; // type:function size:0x70 scope:local +stateMotorStopped = .text:0x800BEFD0; // type:function size:0x28 scope:local +cbForStateMotorStopped = .text:0x800BEFF8; // type:function size:0xE4 scope:local +stateReady = .text:0x800BF0DC; // type:function size:0x248 scope:local +stateBusy = .text:0x800BF324; // type:function size:0x2C0 scope:local +cbForStateBusy = .text:0x800BF5E4; // type:function size:0x5D4 scope:local +DVDReadAbsAsyncPrio = .text:0x800BFBB8; // type:function size:0xDC +DVDReadAbsAsyncForBS = .text:0x800BFC94; // type:function size:0xD0 +DVDReadDiskID = .text:0x800BFD64; // type:function size:0xD4 scope:global +DVDInquiryAsync = .text:0x800BFE38; // type:function size:0xD0 scope:global +DVDReset = .text:0x800BFF08; // type:function size:0x44 scope:global +DVDGetCommandBlockStatus = .text:0x800BFF4C; // type:function size:0x4C +DVDGetDriveStatus = .text:0x800BFF98; // type:function size:0xAC scope:global +DVDSetAutoInvalidation = .text:0x800C0044; // type:function size:0x10 +DVDCancelAsync = .text:0x800C0054; // type:function size:0x270 +DVDCancel = .text:0x800C02C4; // type:function size:0xAC +cbForCancelSync = .text:0x800C0370; // type:function size:0x24 scope:local +DVDGetCurrentDiskID = .text:0x800C0394; // type:function size:0x8 +DVDCheckDisk = .text:0x800C039C; // type:function size:0xE4 +__DVDPrepareResetAsync = .text:0x800C0480; // type:function size:0x11C +__DVDClearWaitingQueue = .text:0x800C059C; // type:function size:0x38 scope:global +__DVDPushWaitingQueue = .text:0x800C05D4; // type:function size:0x68 scope:global +__DVDPopWaitingQueue = .text:0x800C063C; // type:function size:0xA0 scope:global +__DVDCheckWaitingQueue = .text:0x800C06DC; // type:function size:0x58 scope:global +__DVDDequeueWaitingQueue = .text:0x800C0734; // type:function size:0x60 +ErrorCode2Num = .text:0x800C0794; // type:function size:0x11C scope:local +__DVDStoreErrorCode = .text:0x800C08B0; // type:function size:0x7C scope:global +cb = .text:0x800C092C; // type:function size:0xD8 scope:local +__fstLoad = .text:0x800C0A04; // type:function size:0x168 scope:global +__VIRetraceHandler = .text:0x800C0B6C; // type:function size:0x228 scope:local +VISetPreRetraceCallback = .text:0x800C0D94; // type:function size:0x44 +VISetPostRetraceCallback = .text:0x800C0DD8; // type:function size:0x44 +getTiming = .text:0x800C0E1C; // type:function size:0x90 scope:local +__VIInit = .text:0x800C0EAC; // type:function size:0x1F8 +VIInit = .text:0x800C10A4; // type:function size:0x478 +VIWaitForRetrace = .text:0x800C151C; // type:function size:0x54 +setFbbRegs = .text:0x800C1570; // type:function size:0x2D4 scope:local +setVerticalRegs = .text:0x800C1844; // type:function size:0x1A0 scope:local +VIConfigure = .text:0x800C19E4; // type:function size:0x79C +VIConfigurePan = .text:0x800C2180; // type:function size:0x394 +VIFlush = .text:0x800C2514; // type:function size:0x11C +VISetNextFrameBuffer = .text:0x800C2630; // type:function size:0x6C +VISetBlack = .text:0x800C269C; // type:function size:0x7C +VIGetRetraceCount = .text:0x800C2718; // type:function size:0x8 +getCurrentFieldEvenOdd = .text:0x800C2720; // type:function size:0x68 scope:local +VIGetNextField = .text:0x800C2788; // type:function size:0xA8 +VIGetCurrentLine = .text:0x800C2830; // type:function size:0x98 +VIGetTvFormat = .text:0x800C28C8; // type:function size:0x7C scope:global +VIGetDTVStatus = .text:0x800C2944; // type:function size:0x3C +DEMOGetRenderModeObj = .text:0x800C2980; // type:function size:0x8 +DEMOInitCaption = .text:0x800C2988; // type:function size:0x228 +DEMOPuts = .text:0x800C2BB0; // type:function size:0x310 +DEMOPrintf = .text:0x800C2EC0; // type:function size:0xC4 +DEMOWriteStats = .text:0x800C2F84; // type:function size:0x394 +DEMOUpdateStats = .text:0x800C3318; // type:function size:0x58 +DEMOPrintStats = .text:0x800C3370; // type:function size:0x96C +ClampStick = .text:0x800C3CDC; // type:function size:0x130 scope:local +PADClamp = .text:0x800C3E0C; // type:function size:0x108 +UpdateOrigin = .text:0x800C3F14; // type:function size:0x1A4 scope:local +PADOriginCallback = .text:0x800C40B8; // type:function size:0xC4 scope:local +PADOriginUpdateCallback = .text:0x800C417C; // type:function size:0xC0 scope:local +PADProbeCallback = .text:0x800C423C; // type:function size:0xD8 scope:local +PADTypeAndStatusCallback = .text:0x800C4314; // type:function size:0x32C scope:local +PADReceiveCheckCallback = .text:0x800C4640; // type:function size:0x134 scope:local +PADReset = .text:0x800C4774; // type:function size:0x100 +PADRecalibrate = .text:0x800C4874; // type:function size:0x104 +PADInit = .text:0x800C4978; // type:function size:0x210 +PADRead = .text:0x800C4B88; // type:function size:0x3AC +PADControlMotor = .text:0x800C4F34; // type:function size:0xA4 +PADSetSpec = .text:0x800C4FD8; // type:function size:0x60 +SPEC0_MakeStatus = .text:0x800C5038; // type:function size:0x174 scope:local +SPEC1_MakeStatus = .text:0x800C51AC; // type:function size:0x174 scope:local +SPEC2_MakeStatus = .text:0x800C5320; // type:function size:0x3F8 scope:local +OnReset = .text:0x800C5718; // type:function size:0x194 scope:local +SamplingHandler = .text:0x800C58AC; // type:function size:0x60 scope:local +PADSetSamplingCallback = .text:0x800C590C; // type:function size:0x54 +__PADDisableRecalibration = .text:0x800C5960; // type:function size:0x7C scope:global +AIRegisterDMACallback = .text:0x800C59DC; // type:function size:0x44 +AIInitDMA = .text:0x800C5A20; // type:function size:0x88 +AIStartDMA = .text:0x800C5AA8; // type:function size:0x18 +AIStopDMA = .text:0x800C5AC0; // type:function size:0x18 +AIGetDMAStartAddr = .text:0x800C5AD8; // type:function size:0x1C +AISetStreamPlayState = .text:0x800C5AF4; // type:function size:0xD8 +AIGetStreamPlayState = .text:0x800C5BCC; // type:function size:0x10 +AISetDSPSampleRate = .text:0x800C5BDC; // type:function size:0xE0 +AIGetDSPSampleRate = .text:0x800C5CBC; // type:function size:0x14 +__AI_set_stream_sample_rate = .text:0x800C5CD0; // type:function size:0xD4 scope:local +AIGetStreamSampleRate = .text:0x800C5DA4; // type:function size:0x10 +AISetStreamVolLeft = .text:0x800C5DB4; // type:function size:0x1C +AIGetStreamVolLeft = .text:0x800C5DD0; // type:function size:0x10 +AISetStreamVolRight = .text:0x800C5DE0; // type:function size:0x1C +AIGetStreamVolRight = .text:0x800C5DFC; // type:function size:0x10 +AIInit = .text:0x800C5E0C; // type:function size:0x164 +__AISHandler = .text:0x800C5F70; // type:function size:0x7C +__AIDHandler = .text:0x800C5FEC; // type:function size:0x90 +__AICallbackStackSwitch = .text:0x800C607C; // type:function size:0x58 +__AI_SRC_INIT = .text:0x800C60D4; // type:function size:0x1E4 +ARRegisterDMACallback = .text:0x800C62B8; // type:function size:0x44 +ARGetDMAStatus = .text:0x800C62FC; // type:function size:0x3C +ARStartDMA = .text:0x800C6338; // type:function size:0xF0 +ARAlloc = .text:0x800C6428; // type:function size:0x68 +ARFree = .text:0x800C6490; // type:function size:0x74 +ARCheckInit = .text:0x800C6504; // type:function size:0x8 +ARInit = .text:0x800C650C; // type:function size:0xBC +ARSetSize = .text:0x800C65C8; // type:function size:0x4 +ARGetBaseAddress = .text:0x800C65CC; // type:function size:0x8 +ARGetSize = .text:0x800C65D4; // type:function size:0x8 +__ARHandler = .text:0x800C65DC; // type:function size:0x78 scope:local +__ARChecksize = .text:0x800C6654; // type:function size:0x914 scope:local +__ARQServiceQueueLo = .text:0x800C6F68; // type:function size:0x100 +__ARQCallbackHack = .text:0x800C7068; // type:function size:0x4 +__ARQInterruptServiceRoutine = .text:0x800C706C; // type:function size:0xCC +ARQInit = .text:0x800C7138; // type:function size:0x68 +ARQPostRequest = .text:0x800C71A0; // type:function size:0x15C +DSPCheckMailToDSP = .text:0x800C72FC; // type:function size:0x10 +DSPCheckMailFromDSP = .text:0x800C730C; // type:function size:0x10 +DSPReadMailFromDSP = .text:0x800C731C; // type:function size:0x18 +DSPSendMailToDSP = .text:0x800C7334; // type:function size:0x14 +DSPInit = .text:0x800C7348; // type:function size:0xB8 +DSPReset = .text:0x800C7400; // type:function size:0x48 +DSPHalt = .text:0x800C7448; // type:function size:0x40 +DSPGetDMAStatus = .text:0x800C7488; // type:function size:0x10 +DSPAddTask = .text:0x800C7498; // type:function size:0x70 +__DSP_debug_printf = .text:0x800C7508; // type:function size:0x50 +__DSPHandler = .text:0x800C7558; // type:function size:0x424 +__DSP_exec_task = .text:0x800C797C; // type:function size:0x1A0 +__DSP_boot_task = .text:0x800C7B1C; // type:function size:0x18C +__DSP_insert_task = .text:0x800C7CA8; // type:function size:0xA0 +__DSP_remove_task = .text:0x800C7D48; // type:function size:0x94 +__GXDefaultTexRegionCallback = .text:0x800C7DDC; // type:function size:0x7C +__GXDefaultTlutRegionCallback = .text:0x800C7E58; // type:function size:0x24 +GXInit = .text:0x800C7E7C; // type:function size:0x7CC scope:global +__GXInitGX = .text:0x800C8648; // type:function size:0x884 scope:global +GXCPInterruptHandler = .text:0x800C8ECC; // type:function size:0x13C scope:local +GXInitFifoBase = .text:0x800C9008; // type:function size:0x6C scope:global +GXInitFifoPtrs = .text:0x800C9074; // type:function size:0x70 +GXInitFifoLimits = .text:0x800C90E4; // type:function size:0xC +GXSetCPUFifo = .text:0x800C90F0; // type:function size:0x110 scope:global +GXSetGPFifo = .text:0x800C9200; // type:function size:0x178 scope:global +GXSaveCPUFifo = .text:0x800C9378; // type:function size:0x20 +__GXSaveCPUFifoAux = .text:0x800C9398; // type:function size:0xDC +__GXFifoInit = .text:0x800C9474; // type:function size:0x4C scope:global +__GXFifoReadEnable = .text:0x800C94C0; // type:function size:0x28 +__GXFifoReadDisable = .text:0x800C94E8; // type:function size:0x24 +__GXFifoLink = .text:0x800C950C; // type:function size:0x44 +__GXWriteFifoIntEnable = .text:0x800C9550; // type:function size:0x4C +__GXWriteFifoIntReset = .text:0x800C959C; // type:function size:0x4C +__GXCleanGPFifo = .text:0x800C95E8; // type:function size:0xFC +GXGetCPUFifo = .text:0x800C96E4; // type:function size:0x8 +GXGetGPFifo = .text:0x800C96EC; // type:function size:0x8 +__GXXfVtxSpecs = .text:0x800C96F4; // type:function size:0x158 +GXSetVtxDesc = .text:0x800C984C; // type:function size:0x360 +__GXSetVCD = .text:0x800C9BAC; // type:function size:0x54 +__GXCalculateVLim = .text:0x800C9C00; // type:function size:0x124 +GXClearVtxDesc = .text:0x800C9D24; // type:function size:0x4C +GXSetVtxAttrFmt = .text:0x800C9D70; // type:function size:0x35C +__GXSetVAT = .text:0x800CA0CC; // type:function size:0x9C +GXSetArray = .text:0x800CA168; // type:function size:0x8C +GXInvalidateVtxCache = .text:0x800CA1F4; // type:function size:0x10 +GXSetTexCoordGen2 = .text:0x800CA204; // type:function size:0x2D0 +GXSetNumTexGens = .text:0x800CA4D4; // type:function size:0x48 +GXSetMisc = .text:0x800CA51C; // type:function size:0x78 scope:global +GXFlush = .text:0x800CA594; // type:function size:0x5C +GXResetWriteGatherPipe = .text:0x800CA5F0; // type:function size:0x34 +__GXAbortWaitPECopyDone = .text:0x800CA624; // type:function size:0xCC +GXSetDrawSync = .text:0x800CA6F0; // type:function size:0xB8 +GXSetDrawDone = .text:0x800CA7A8; // type:function size:0x98 +GXWaitDrawDone = .text:0x800CA840; // type:function size:0x4C +GXDrawDone = .text:0x800CA88C; // type:function size:0x80 +GXPixModeSync = .text:0x800CA90C; // type:function size:0x24 +GXPokeAlphaMode = .text:0x800CA930; // type:function size:0x14 +GXPokeAlphaRead = .text:0x800CA944; // type:function size:0x14 +GXPokeAlphaUpdate = .text:0x800CA958; // type:function size:0x1C +GXPokeBlendMode = .text:0x800CA974; // type:function size:0x88 +GXPokeColorUpdate = .text:0x800CA9FC; // type:function size:0x1C +GXPokeDstAlpha = .text:0x800CAA18; // type:function size:0x14 +GXPokeDither = .text:0x800CAA2C; // type:function size:0x1C +GXPokeZMode = .text:0x800CAA48; // type:function size:0x28 +GXSetDrawSyncCallback = .text:0x800CAA70; // type:function size:0x44 +GXTokenInterruptHandler = .text:0x800CAAB4; // type:function size:0x88 +GXFinishInterruptHandler = .text:0x800CAB3C; // type:function size:0x84 +__GXPEInit = .text:0x800CABC0; // type:function size:0x80 scope:global +__GXSetDirtyState = .text:0x800CAC40; // type:function size:0xA0 +GXBegin = .text:0x800CACE0; // type:function size:0xF0 +__GXSendFlushPrim = .text:0x800CADD0; // type:function size:0x88 +GXSetLineWidth = .text:0x800CAE58; // type:function size:0x58 +GXSetPointSize = .text:0x800CAEB0; // type:function size:0x54 +GXEnableTexOffsets = .text:0x800CAF04; // type:function size:0x64 +GXSetCullMode = .text:0x800CAF68; // type:function size:0x50 +GXSetCoPlanar = .text:0x800CAFB8; // type:function size:0x44 +__GXSetGenMode = .text:0x800CAFFC; // type:function size:0x24 +GXAdjustForOverscan = .text:0x800CB020; // type:function size:0x120 +GXSetDispCopySrc = .text:0x800CB140; // type:function size:0xC0 +GXSetTexCopySrc = .text:0x800CB200; // type:function size:0xC0 +GXSetDispCopyDst = .text:0x800CB2C0; // type:function size:0x44 +GXSetTexCopyDst = .text:0x800CB304; // type:function size:0x170 +GXSetDispCopyFrame2Field = .text:0x800CB474; // type:function size:0x2C +GXSetCopyClamp = .text:0x800CB4A0; // type:function size:0x7C +GXSetDispCopyYScale = .text:0x800CB51C; // type:function size:0xD4 +GXSetCopyClear = .text:0x800CB5F0; // type:function size:0x68 +GXSetCopyFilter = .text:0x800CB658; // type:function size:0x228 +GXSetDispCopyGamma = .text:0x800CB880; // type:function size:0x1C +GXCopyDisp = .text:0x800CB89C; // type:function size:0x170 +GXCopyTex = .text:0x800CBA0C; // type:function size:0x190 +GXClearBoundingBox = .text:0x800CBB9C; // type:function size:0x38 +GXInitLightAttn = .text:0x800CBBD4; // type:function size:0x1C +GXInitLightAttnK = .text:0x800CBBF0; // type:function size:0x10 +GXInitLightSpot = .text:0x800CBC00; // type:function size:0x180 +GXInitLightDistAttn = .text:0x800CBD80; // type:function size:0xD0 +GXInitLightPos = .text:0x800CBE50; // type:function size:0x10 +GXInitLightDir = .text:0x800CBE60; // type:function size:0x1C +GXInitSpecularDir = .text:0x800CBE7C; // type:function size:0xD4 +GXInitLightColor = .text:0x800CBF50; // type:function size:0x28 +GXLoadLightObjImm = .text:0x800CBF78; // type:function size:0x148 +GXSetChanAmbColor = .text:0x800CC0C0; // type:function size:0x168 +GXSetChanMatColor = .text:0x800CC228; // type:function size:0x168 +GXSetNumChans = .text:0x800CC390; // type:function size:0x4C +GXSetChanCtrl = .text:0x800CC3DC; // type:function size:0x1E4 +GXGetTexBufferSize = .text:0x800CC5C0; // type:function size:0x15C +__GetImageTileCount = .text:0x800CC71C; // type:function size:0xC8 +GXInitTexObj = .text:0x800CC7E4; // type:function size:0x274 +GXInitTexObjCI = .text:0x800CCA58; // type:function size:0x48 +GXInitTexObjLOD = .text:0x800CCAA0; // type:function size:0x194 +GXGetTexObjFmt = .text:0x800CCC34; // type:function size:0x8 +GXLoadTexObjPreLoaded = .text:0x800CCC3C; // type:function size:0x1A8 +GXLoadTexObj = .text:0x800CCDE4; // type:function size:0x54 +GXInitTlutObj = .text:0x800CCE38; // type:function size:0x48 +GXLoadTlut = .text:0x800CCE80; // type:function size:0x9C +GXInitTexCacheRegion = .text:0x800CCF1C; // type:function size:0x120 scope:global +GXInitTlutRegion = .text:0x800CD03C; // type:function size:0x48 scope:global +GXInvalidateTexAll = .text:0x800CD084; // type:function size:0x48 +GXSetTexRegionCallback = .text:0x800CD0CC; // type:function size:0x14 +GXSetTlutRegionCallback = .text:0x800CD0E0; // type:function size:0x14 +GXSetTexCoordScaleManually = .text:0x800CD0F4; // type:function size:0x9C +__SetSURegs = .text:0x800CD190; // type:function size:0xCC scope:local +__GXSetSUTexRegs = .text:0x800CD25C; // type:function size:0x17C +__GXSetTmemConfig = .text:0x800CD3D8; // type:function size:0x240 scope:global +GXSetTevIndirect = .text:0x800CD618; // type:function size:0x9C +GXSetIndTexMtx = .text:0x800CD6B4; // type:function size:0x160 +GXSetIndTexCoordScale = .text:0x800CD814; // type:function size:0x1D4 +GXSetIndTexOrder = .text:0x800CD9E8; // type:function size:0x138 +GXSetNumIndStages = .text:0x800CDB20; // type:function size:0x2C +GXSetTevDirect = .text:0x800CDB4C; // type:function size:0x48 +GXSetTevIndWarp = .text:0x800CDB94; // type:function size:0x64 +GXSetTevIndTile = .text:0x800CDBF8; // type:function size:0x1AC +__GXUpdateBPMask = .text:0x800CDDA4; // type:function size:0xCC +__GXFlushTextureState = .text:0x800CDE70; // type:function size:0x24 scope:global +GXSetTevOp = .text:0x800CDE94; // type:function size:0x1A4 +GXSetTevColorIn = .text:0x800CE038; // type:function size:0x80 +GXSetTevAlphaIn = .text:0x800CE0B8; // type:function size:0x84 +GXSetTevColorOp = .text:0x800CE13C; // type:function size:0xC0 +GXSetTevAlphaOp = .text:0x800CE1FC; // type:function size:0xC0 +GXSetTevColor = .text:0x800CE2BC; // type:function size:0x74 +GXSetTevColorS10 = .text:0x800CE330; // type:function size:0x74 +GXSetTevKColor = .text:0x800CE3A4; // type:function size:0x74 +GXSetTevKColorSel = .text:0x800CE418; // type:function size:0x6C +GXSetTevKAlphaSel = .text:0x800CE484; // type:function size:0x6C +GXSetTevSwapMode = .text:0x800CE4F0; // type:function size:0x58 +GXSetTevSwapModeTable = .text:0x800CE548; // type:function size:0xA0 +GXSetAlphaCompare = .text:0x800CE5E8; // type:function size:0x50 +GXSetZTexture = .text:0x800CE638; // type:function size:0x84 +GXSetTevOrder = .text:0x800CE6BC; // type:function size:0x1DC +GXSetNumTevStages = .text:0x800CE898; // type:function size:0x34 +GXSetFog = .text:0x800CE8CC; // type:function size:0x1B0 +GXSetFogRangeAdj = .text:0x800CEA7C; // type:function size:0x100 +GXSetBlendMode = .text:0x800CEB7C; // type:function size:0x104 +GXSetColorUpdate = .text:0x800CEC80; // type:function size:0x40 +GXSetAlphaUpdate = .text:0x800CECC0; // type:function size:0x40 +GXSetZMode = .text:0x800CED00; // type:function size:0x78 +GXSetZCompLoc = .text:0x800CED78; // type:function size:0x40 +GXSetPixelFmt = .text:0x800CEDB8; // type:function size:0x110 +GXSetDither = .text:0x800CEEC8; // type:function size:0x40 +GXSetDstAlpha = .text:0x800CEF08; // type:function size:0x54 +GXSetFieldMask = .text:0x800CEF5C; // type:function size:0x38 +GXSetFieldMode = .text:0x800CEF94; // type:function size:0x80 +__GXSetRange = .text:0x800CF014; // type:function size:0x4 +GXBeginDisplayList = .text:0x800CF018; // type:function size:0xC8 +GXEndDisplayList = .text:0x800CF0E0; // type:function size:0xD4 +GXCallDisplayList = .text:0x800CF1B4; // type:function size:0x70 +GXProject = .text:0x800CF224; // type:function size:0x174 +GXSetProjection = .text:0x800CF398; // type:function size:0xD4 +GXGetProjectionv = .text:0x800CF46C; // type:function size:0x78 +WriteMTXPS4x3 = .text:0x800CF4E4; // type:function size:0x34 scope:local +WriteMTXPS3x3from3x4 = .text:0x800CF518; // type:function size:0x34 scope:local +WriteMTXPS4x2 = .text:0x800CF54C; // type:function size:0x24 scope:local +GXLoadPosMtxImm = .text:0x800CF570; // type:function size:0x3C +GXLoadNrmMtxImm = .text:0x800CF5AC; // type:function size:0x40 +GXSetCurrentMtx = .text:0x800CF5EC; // type:function size:0x3C +GXLoadTexMtxImm = .text:0x800CF628; // type:function size:0x84 +GXSetViewportJitter = .text:0x800CF6AC; // type:function size:0x11C +GXSetViewport = .text:0x800CF7C8; // type:function size:0x24 +GXGetViewportv = .text:0x800CF7EC; // type:function size:0x4C +GXSetScissor = .text:0x800CF838; // type:function size:0xB0 +GXSetScissorBoxOffset = .text:0x800CF8E8; // type:function size:0x44 +GXSetClipMode = .text:0x800CF92C; // type:function size:0x28 +__GXSetMatrixIndex = .text:0x800CF954; // type:function size:0x84 +GXSetGPMetric = .text:0x800CF9D8; // type:function size:0x898 +GXReadGPMetric = .text:0x800D0270; // type:function size:0x1A8 +GXClearGPMetric = .text:0x800D0418; // type:function size:0x10 +GXReadGP0Metric = .text:0x800D0428; // type:function size:0x2C +GXReadGP1Metric = .text:0x800D0454; // type:function size:0x2C +GXReadMemMetric = .text:0x800D0480; // type:function size:0x214 +GXClearMemMetric = .text:0x800D0694; // type:function size:0xA8 +GXReadPixMetric = .text:0x800D073C; // type:function size:0x138 +GXClearPixMetric = .text:0x800D0874; // type:function size:0x30 +GXSetVCacheMetric = .text:0x800D08A4; // type:function size:0x50 +GXReadVCacheMetric = .text:0x800D08F4; // type:function size:0x94 +GXClearVCacheMetric = .text:0x800D0988; // type:function size:0x1C +__CARDDefaultApiCallback = .text:0x800D09A4; // type:function size:0x4 +__CARDSyncCallback = .text:0x800D09A8; // type:function size:0x34 +__CARDExtHandler = .text:0x800D09DC; // type:function size:0xD8 +__CARDExiHandler = .text:0x800D0AB4; // type:function size:0x118 +__CARDTxHandler = .text:0x800D0BCC; // type:function size:0xA8 +__CARDUnlockedHandler = .text:0x800D0C74; // type:function size:0x84 +__CARDEnableInterrupt = .text:0x800D0CF8; // type:function size:0xC0 +__CARDReadStatus = .text:0x800D0DB8; // type:function size:0xF0 +__CARDClearStatus = .text:0x800D0EA8; // type:function size:0xAC +TimeoutHandler = .text:0x800D0F54; // type:function size:0xA4 scope:local +Retry = .text:0x800D0FF8; // type:function size:0x22C scope:local +UnlockedCallback = .text:0x800D1224; // type:function size:0x110 scope:local +__CARDStart = .text:0x800D1334; // type:function size:0x1B4 +__CARDReadSegment = .text:0x800D14E8; // type:function size:0x134 +__CARDWritePage = .text:0x800D161C; // type:function size:0x11C +__CARDEraseSector = .text:0x800D1738; // type:function size:0xE0 +CARDInit = .text:0x800D1818; // type:function size:0x9C +__CARDSetDiskID = .text:0x800D18B4; // type:function size:0x38 +__CARDGetControlBlock = .text:0x800D18EC; // type:function size:0xB8 +__CARDPutControlBlock = .text:0x800D19A4; // type:function size:0x64 +CARDFreeBlocks = .text:0x800D1A08; // type:function size:0x150 +CARDGetSectorSize = .text:0x800D1B58; // type:function size:0x84 +__CARDSync = .text:0x800D1BDC; // type:function size:0x98 +OnReset = .text:0x800D1C74; // type:function size:0x50 scope:local +bitrev = .text:0x800D1CC4; // type:function size:0x16C scope:local +ReadArrayUnlock = .text:0x800D1E30; // type:function size:0x144 scope:local +DummyLen = .text:0x800D1F74; // type:function size:0xC4 scope:local +__CARDUnlock = .text:0x800D2038; // type:function size:0xB58 +InitCallback = .text:0x800D2B90; // type:function size:0x70 scope:local +DoneCallback = .text:0x800D2C00; // type:function size:0x324 scope:local +BlockReadCallback = .text:0x800D2F24; // type:function size:0xDC scope:local +__CARDRead = .text:0x800D3000; // type:function size:0x64 +BlockWriteCallback = .text:0x800D3064; // type:function size:0xDC scope:local +__CARDWrite = .text:0x800D3140; // type:function size:0x64 +__CARDGetFatBlock = .text:0x800D31A4; // type:function size:0x8 +WriteCallback = .text:0x800D31AC; // type:function size:0xD4 scope:local +EraseCallback = .text:0x800D3280; // type:function size:0xC8 scope:local +__CARDAllocBlock = .text:0x800D3348; // type:function size:0x118 +__CARDFreeBlock = .text:0x800D3460; // type:function size:0x9C +__CARDUpdateFatBlock = .text:0x800D34FC; // type:function size:0xAC +__CARDGetDirBlock = .text:0x800D35A8; // type:function size:0x8 +WriteCallback = .text:0x800D35B0; // type:function size:0xD0 scope:local +EraseCallback = .text:0x800D3680; // type:function size:0xC8 scope:local +__CARDUpdateDir = .text:0x800D3748; // type:function size:0xC4 +__CARDCheckSum = .text:0x800D380C; // type:function size:0x1B0 +VerifyID = .text:0x800D39BC; // type:function size:0x284 scope:local +VerifyDir = .text:0x800D3C40; // type:function size:0x240 scope:local +VerifyFAT = .text:0x800D3E80; // type:function size:0x284 scope:local +__CARDVerify = .text:0x800D4104; // type:function size:0x8C +CARDCheckExAsync = .text:0x800D4190; // type:function size:0x590 +CARDCheck = .text:0x800D4720; // type:function size:0x54 +IsCard = .text:0x800D4774; // type:function size:0xCC scope:local +CARDProbeEx = .text:0x800D4840; // type:function size:0x17C +DoMount = .text:0x800D49BC; // type:function size:0x410 scope:local +__CARDMountCallback = .text:0x800D4DCC; // type:function size:0x138 +CARDMountAsync = .text:0x800D4F04; // type:function size:0x1A0 +CARDMount = .text:0x800D50A4; // type:function size:0x48 +DoUnmount = .text:0x800D50EC; // type:function size:0x9C scope:local +CARDUnmount = .text:0x800D5188; // type:function size:0xAC +FormatCallback = .text:0x800D5234; // type:function size:0x144 scope:local +__CARDFormatRegionAsync = .text:0x800D5378; // type:function size:0x658 +CARDFormat = .text:0x800D59D0; // type:function size:0x54 +__CARDCompareFileName = .text:0x800D5A24; // type:function size:0x68 +__CARDAccess = .text:0x800D5A8C; // type:function size:0x98 +__CARDIsPublic = .text:0x800D5B24; // type:function size:0x30 +__CARDGetFileNo = .text:0x800D5B54; // type:function size:0x150 +CARDOpen = .text:0x800D5CA4; // type:function size:0x178 +CARDClose = .text:0x800D5E1C; // type:function size:0x54 +__CARDIsOpened = .text:0x800D5E70; // type:function size:0x8 +CreateCallbackFat = .text:0x800D5E78; // type:function size:0x130 scope:local +CARDCreateAsync = .text:0x800D5FA8; // type:function size:0x220 +CARDCreate = .text:0x800D61C8; // type:function size:0x48 +__CARDSeek = .text:0x800D6210; // type:function size:0x1B8 +ReadCallback = .text:0x800D63C8; // type:function size:0x130 scope:local +CARDReadAsync = .text:0x800D64F8; // type:function size:0x148 +CARDRead = .text:0x800D6640; // type:function size:0x48 +WriteCallback = .text:0x800D6688; // type:function size:0x170 scope:local +EraseCallback = .text:0x800D67F8; // type:function size:0xB0 scope:local +CARDWriteAsync = .text:0x800D68A8; // type:function size:0x114 +CARDWrite = .text:0x800D69BC; // type:function size:0x48 +DeleteCallback = .text:0x800D6A04; // type:function size:0xA4 scope:local +CARDDeleteAsync = .text:0x800D6AA8; // type:function size:0x110 +CARDDelete = .text:0x800D6BB8; // type:function size:0x48 +UpdateIconOffsets = .text:0x800D6C00; // type:function size:0x1F8 scope:local +CARDGetStatus = .text:0x800D6DF8; // type:function size:0x12C +CARDSetStatusAsync = .text:0x800D6F24; // type:function size:0x174 +CARDSetStatus = .text:0x800D7098; // type:function size:0x48 +CARDGetSerialNo = .text:0x800D70E0; // type:function size:0xC4 +SetExiInterruptMask = .text:0x800D71A4; // type:function size:0xF4 scope:local +EXIImm = .text:0x800D7298; // type:function size:0x25C scope:global +EXIImmEx = .text:0x800D74F4; // type:function size:0xA0 +EXIDma = .text:0x800D7594; // type:function size:0xEC scope:global +EXISync = .text:0x800D7680; // type:function size:0x238 scope:global +EXIClearInterrupts = .text:0x800D78B8; // type:function size:0x48 +EXISetExiCallback = .text:0x800D7900; // type:function size:0x7C +__EXIProbe = .text:0x800D797C; // type:function size:0x174 scope:local +EXIProbe = .text:0x800D7AF0; // type:function size:0x80 +EXIProbeEx = .text:0x800D7B70; // type:function size:0xB4 +EXIAttach = .text:0x800D7C24; // type:function size:0x10C +EXIDetach = .text:0x800D7D30; // type:function size:0xBC +EXISelect = .text:0x800D7DEC; // type:function size:0x12C scope:global +EXIDeselect = .text:0x800D7F18; // type:function size:0x110 scope:global +EXIIntrruptHandler = .text:0x800D8028; // type:function size:0xC8 scope:local +TCIntrruptHandler = .text:0x800D80F0; // type:function size:0x218 scope:local +EXTIntrruptHandler = .text:0x800D8308; // type:function size:0xD0 scope:local +EXIInit = .text:0x800D83D8; // type:function size:0x114 scope:global +EXILock = .text:0x800D84EC; // type:function size:0xF4 scope:global +EXIUnlock = .text:0x800D85E0; // type:function size:0xDC scope:global +EXIGetState = .text:0x800D86BC; // type:function size:0x18 +UnlockedHandler = .text:0x800D86D4; // type:function size:0x28 scope:local +EXIGetID = .text:0x800D86FC; // type:function size:0x37C +InitializeUART = .text:0x800D8A78; // type:function size:0x70 +WriteUARTN = .text:0x800D8AE8; // type:function size:0x200 +SIBusy = .text:0x800D8CE8; // type:function size:0x20 +SIIsChanBusy = .text:0x800D8D08; // type:function size:0x3C +CompleteTransfer = .text:0x800D8D44; // type:function size:0x2FC +SIInterruptHandler = .text:0x800D9040; // type:function size:0x344 scope:local +SIEnablePollingInterrupt = .text:0x800D9384; // type:function size:0x98 +SIRegisterPollingHandler = .text:0x800D941C; // type:function size:0xCC +SIUnregisterPollingHandler = .text:0x800D94E8; // type:function size:0xF4 +SIInit = .text:0x800D95DC; // type:function size:0xA4 scope:global +__SITransfer = .text:0x800D9680; // type:function size:0x20C +SIGetStatus = .text:0x800D988C; // type:function size:0x7C +SISetCommand = .text:0x800D9908; // type:function size:0x14 +SITransferCommands = .text:0x800D991C; // type:function size:0x10 +SISetXY = .text:0x800D992C; // type:function size:0x6C scope:global +SIEnablePolling = .text:0x800D9998; // type:function size:0x9C +SIDisablePolling = .text:0x800D9A34; // type:function size:0x6C +SIGetResponseRaw = .text:0x800D9AA0; // type:function size:0xD4 +SIGetResponse = .text:0x800D9B74; // type:function size:0xC4 +AlarmHandler = .text:0x800D9C38; // type:function size:0x8C scope:local +SITransfer = .text:0x800D9CC4; // type:function size:0x16C scope:global +GetTypeCallback = .text:0x800D9E30; // type:function size:0x298 scope:local +SIGetType = .text:0x800DA0C8; // type:function size:0x1C4 scope:global +SIGetTypeAsync = .text:0x800DA28C; // type:function size:0x13C +SISetSamplingRate = .text:0x800DA3C8; // type:function size:0xE4 scope:global +SIRefreshSamplingRate = .text:0x800DA4AC; // type:function size:0x24 +THPVideoDecode = .text:0x800DA4D0; // type:function size:0x244 +__THPSetupBuffers = .text:0x800DA714; // type:function size:0x44 scope:local +__THPReadFrameHeader = .text:0x800DA758; // type:function size:0x13C scope:local +__THPReadScaneHeader = .text:0x800DA894; // type:function size:0x11C scope:local +__THPReadQuantizationTable = .text:0x800DA9B0; // type:function size:0x3BC scope:local +__THPReadHuffmanTableSpecification = .text:0x800DAD6C; // type:function size:0x1E0 scope:local +__THPHuffGenerateSizeTable = .text:0x800DAF4C; // type:function size:0xF0 scope:local +__THPHuffGenerateCodeTable = .text:0x800DB03C; // type:function size:0x68 scope:local +__THPHuffGenerateDecoderTables = .text:0x800DB0A4; // type:function size:0x1BC scope:local +__THPRestartDefinition = .text:0x800DB260; // type:function size:0x54 scope:local +__THPPrepBitStream = .text:0x800DB2B4; // type:function size:0x24C scope:local +__THPDecompressYUV = .text:0x800DB500; // type:function size:0x10C scope:local +__THPDecompressiMCURow512x448 = .text:0x800DB60C; // type:function size:0x1A88 scope:local +__THPDecompressiMCURow640x480 = .text:0x800DD094; // type:function size:0x1A8C scope:local +__THPDecompressiMCURowNxN = .text:0x800DEB20; // type:function size:0x1AAC scope:local +__THPHuffDecodeDCTCompY = .text:0x800E05CC; // type:function size:0x67C scope:local +__THPHuffDecodeDCTCompU = .text:0x800E0C48; // type:function size:0x6A8 scope:local +__THPHuffDecodeDCTCompV = .text:0x800E12F0; // type:function size:0x6A8 scope:local +THPInit = .text:0x800E1998; // type:function size:0x78 +THPAudioDecode = .text:0x800E1A10; // type:function size:0x464 +__THPAudioGetNewSample = .text:0x800E1E74; // type:function size:0x90 +__THPAudioInitialize = .text:0x800E1F04; // type:function size:0x3C +__va_arg = .text:0x800E1F40; // type:function size:0xC8 scope:global +__destroy_global_chain = .text:0x800E2008; // type:function size:0x48 scope:global +__register_global_object = .text:0x800E2050; // type:function size:0x18 scope:global +__dl__FPv = .text:0x800E2068; // type:function size:0x4C +__dt__Q23std9exceptionFv = .text:0x800E20B4; // type:function size:0x48 +what__Q23std9exceptionCFv = .text:0x800E20FC; // type:function size:0xC +__throw_catch_compare = .text:0x800E2108; // type:function size:0x22C +unexpected__3stdFv = .text:0x800E2334; // type:function size:0x28 +terminate__3stdFv = .text:0x800E235C; // type:function size:0x28 +duhandler__3stdFv = .text:0x800E2384; // type:function size:0x28 +dthandler__3stdFv = .text:0x800E23AC; // type:function size:0x20 +__cvt_fp2unsigned = .text:0x800E23CC; // type:function size:0x5C +__save_fpr = .text:0x800E2428; // type:function size:0x4C +_savefpr_14 = .text:0x800E2428; // type:label scope:global +_savefpr_15 = .text:0x800E242C; // type:label scope:global +_savefpr_16 = .text:0x800E2430; // type:label scope:global +_savefpr_17 = .text:0x800E2434; // type:label scope:global +_savefpr_18 = .text:0x800E2438; // type:label scope:global +_savefpr_19 = .text:0x800E243C; // type:label scope:global +_savefpr_20 = .text:0x800E2440; // type:label scope:global +_savefpr_21 = .text:0x800E2444; // type:label scope:global +_savefpr_22 = .text:0x800E2448; // type:label scope:global +_savefpr_23 = .text:0x800E244C; // type:label scope:global +_savefpr_24 = .text:0x800E2450; // type:label scope:global +_savefpr_25 = .text:0x800E2454; // type:label scope:global +_savefpr_26 = .text:0x800E2458; // type:label scope:global +_savefpr_27 = .text:0x800E245C; // type:label scope:global +_savefpr_28 = .text:0x800E2460; // type:label scope:global +_savefpr_29 = .text:0x800E2464; // type:label scope:global +_savefpr_30 = .text:0x800E2468; // type:label scope:global +_savefpr_31 = .text:0x800E246C; // type:label scope:global +__restore_fpr = .text:0x800E2474; // type:function size:0x4C +_restfpr_14 = .text:0x800E2474; // type:label scope:global +_restfpr_15 = .text:0x800E2478; // type:label scope:global +_restfpr_16 = .text:0x800E247C; // type:label scope:global +_restfpr_17 = .text:0x800E2480; // type:label scope:global +_restfpr_18 = .text:0x800E2484; // type:label scope:global +_restfpr_19 = .text:0x800E2488; // type:label scope:global +_restfpr_20 = .text:0x800E248C; // type:label scope:global +_restfpr_21 = .text:0x800E2490; // type:label scope:global +_restfpr_22 = .text:0x800E2494; // type:label scope:global +_restfpr_23 = .text:0x800E2498; // type:label scope:global +_restfpr_24 = .text:0x800E249C; // type:label scope:global +_restfpr_25 = .text:0x800E24A0; // type:label scope:global +_restfpr_26 = .text:0x800E24A4; // type:label scope:global +_restfpr_27 = .text:0x800E24A8; // type:label scope:global +_restfpr_28 = .text:0x800E24AC; // type:label scope:global +_restfpr_29 = .text:0x800E24B0; // type:label scope:global +_restfpr_30 = .text:0x800E24B4; // type:label scope:global +_restfpr_31 = .text:0x800E24B8; // type:label scope:global +__save_gpr = .text:0x800E24C0; // type:function size:0x4C +_savegpr_14 = .text:0x800E24C0; // type:label scope:global +_savegpr_15 = .text:0x800E24C4; // type:label scope:global +_savegpr_16 = .text:0x800E24C8; // type:label scope:global +_savegpr_17 = .text:0x800E24CC; // type:label scope:global +_savegpr_18 = .text:0x800E24D0; // type:label scope:global +_savegpr_19 = .text:0x800E24D4; // type:label scope:global +_savegpr_20 = .text:0x800E24D8; // type:label scope:global +_savegpr_21 = .text:0x800E24DC; // type:label scope:global +_savegpr_22 = .text:0x800E24E0; // type:label scope:global +_savegpr_23 = .text:0x800E24E4; // type:label scope:global +_savegpr_24 = .text:0x800E24E8; // type:label scope:global +_savegpr_25 = .text:0x800E24EC; // type:label scope:global +_savegpr_26 = .text:0x800E24F0; // type:label scope:global +_savegpr_27 = .text:0x800E24F4; // type:label scope:global +_savegpr_28 = .text:0x800E24F8; // type:label scope:global +_savegpr_29 = .text:0x800E24FC; // type:label scope:global +_savegpr_30 = .text:0x800E2500; // type:label scope:global +_savegpr_31 = .text:0x800E2504; // type:label scope:global +__restore_gpr = .text:0x800E250C; // type:function size:0x4C +_restgpr_14 = .text:0x800E250C; // type:label scope:global +_restgpr_15 = .text:0x800E2510; // type:label scope:global +_restgpr_16 = .text:0x800E2514; // type:label scope:global +_restgpr_17 = .text:0x800E2518; // type:label scope:global +_restgpr_18 = .text:0x800E251C; // type:label scope:global +_restgpr_19 = .text:0x800E2520; // type:label scope:global +_restgpr_20 = .text:0x800E2524; // type:label scope:global +_restgpr_21 = .text:0x800E2528; // type:label scope:global +_restgpr_22 = .text:0x800E252C; // type:label scope:global +_restgpr_23 = .text:0x800E2530; // type:label scope:global +_restgpr_24 = .text:0x800E2534; // type:label scope:global +_restgpr_25 = .text:0x800E2538; // type:label scope:global +_restgpr_26 = .text:0x800E253C; // type:label scope:global +_restgpr_27 = .text:0x800E2540; // type:label scope:global +_restgpr_28 = .text:0x800E2544; // type:label scope:global +_restgpr_29 = .text:0x800E2548; // type:label scope:global +_restgpr_30 = .text:0x800E254C; // type:label scope:global +_restgpr_31 = .text:0x800E2550; // type:label scope:global +__div2u = .text:0x800E2558; // type:function size:0xEC scope:global +__div2i = .text:0x800E2644; // type:function size:0x138 +__mod2u = .text:0x800E277C; // type:function size:0xE4 scope:global +__mod2i = .text:0x800E2860; // type:function size:0x10C +__shl2i = .text:0x800E296C; // type:function size:0x24 +__shr2u = .text:0x800E2990; // type:function size:0x24 +__shr2i = .text:0x800E29B4; // type:function size:0x28 +__cvt_dbl_usll = .text:0x800E29DC; // type:function size:0xCC +GetR2__Fv = .text:0x800E2AA8; // type:function size:0x8 scope:local +__fini_cpp_exceptions = .text:0x800E2AB0; // type:function size:0x34 scope:global +__init_cpp_exceptions = .text:0x800E2AE4; // type:function size:0x40 scope:global +ExPPC_LongJump__FP12ThrowContextPvPv = .text:0x800E2B24; // type:function size:0x104 +__throw = .text:0x800E2C28; // type:function size:0x144 +__end__catch = .text:0x800E2D6C; // type:function size:0x44 +ExPPC_ThrowHandler__FP12ThrowContext = .text:0x800E2DB0; // type:function size:0x410 +__unexpected = .text:0x800E31C0; // type:function size:0x1B4 +__dt__Q23std13bad_exceptionFv = .text:0x800E3374; // type:function size:0x5C +ExPPC_UnwindStack__FP12ThrowContextP15MWExceptionInfoPv = .text:0x800E33D0; // type:function size:0x50C +ExPPC_PopStackFrame__FP12ThrowContextP15MWExceptionInfo = .text:0x800E38DC; // type:function size:0x248 +ExPPC_NextAction__FP14ActionIterator = .text:0x800E3B24; // type:function size:0x1C0 +ExPPC_FindExceptionRecord__FPcP15MWExceptionInfo = .text:0x800E3CE4; // type:function size:0x204 +__unregister_fragment = .text:0x800E3EE8; // type:function size:0x34 scope:global +__register_fragment = .text:0x800E3F1C; // type:function size:0x34 scope:global +what__Q23std13bad_exceptionCFv = .text:0x800E3F50; // type:function size:0xC +__sys_free = .text:0x800E3F5C; // type:function size:0xB8 +exit = .text:0x800E4014; // type:function size:0xCC scope:global +abort = .text:0x800E40E0; // type:function size:0x88 +free = .text:0x800E4168; // type:function size:0x134 +deallocate_from_fixed_pools = .text:0x800E429C; // type:function size:0x1FC +SubBlock_merge_next = .text:0x800E4498; // type:function size:0xBC scope:local +Block_link = .text:0x800E4554; // type:function size:0x17C scope:local +__flush_all = .text:0x800E46D0; // type:function size:0x70 +__close_all = .text:0x800E4740; // type:function size:0x98 scope:global +__num2dec = .text:0x800E47D8; // type:function size:0x1A4 +__num2dec_internal = .text:0x800E497C; // type:function size:0x23C scope:local +__two_exp = .text:0x800E4BB8; // type:function size:0x340 scope:local +__str2dec = .text:0x800E4EF8; // type:function size:0xEC scope:local +__timesdec = .text:0x800E4FE4; // type:function size:0x28C scope:local +__ull2dec = .text:0x800E5270; // type:function size:0x110 scope:local +__count_trailing_zerol = .text:0x800E5380; // type:function size:0x70 scope:local +abs = .text:0x800E53F0; // type:function size:0x10 +__flush_buffer = .text:0x800E5400; // type:function size:0xC4 scope:global +__prep_buffer = .text:0x800E54C4; // type:function size:0x34 scope:global +tolower = .text:0x800E54F8; // type:function size:0x24 +isalpha = .text:0x800E551C; // type:function size:0x18 +__fwrite = .text:0x800E5534; // type:function size:0x30C scope:global +fwrite = .text:0x800E5840; // type:function size:0x20 scope:global +fflush = .text:0x800E5860; // type:function size:0x138 +fclose = .text:0x800E5998; // type:function size:0xC0 +fseek = .text:0x800E5A58; // type:function size:0x20 scope:global +_fseek = .text:0x800E5A78; // type:function size:0x23C +ftell = .text:0x800E5CB4; // type:function size:0x70 +wcstombs = .text:0x800E5D24; // type:function size:0xA0 scope:global +unicode_to_UTF8 = .text:0x800E5DC4; // type:function size:0xA4 scope:local +memcmp = .text:0x800E5E68; // type:function size:0x4C +__memrchr = .text:0x800E5EB4; // type:function size:0x2C scope:global +memchr = .text:0x800E5EE0; // type:function size:0x2C scope:global +memmove = .text:0x800E5F0C; // type:function size:0xCC +__copy_longs_rev_unaligned = .text:0x800E5FD8; // type:function size:0xB0 +__copy_longs_unaligned = .text:0x800E6088; // type:function size:0xC4 +__copy_longs_rev_aligned = .text:0x800E614C; // type:function size:0xAC +__copy_longs_aligned = .text:0x800E61F8; // type:function size:0xC0 +__stdio_atexit = .text:0x800E62B8; // type:function size:0x10 scope:global +sprintf = .text:0x800E62C8; // type:function size:0xE0 +vsprintf = .text:0x800E63A8; // type:function size:0x78 +vsnprintf = .text:0x800E6420; // type:function size:0x74 +vprintf = .text:0x800E6494; // type:function size:0x7C scope:global +printf = .text:0x800E6510; // type:function size:0xCC +__StringWrite = .text:0x800E65DC; // type:function size:0x6C +__FileWrite = .text:0x800E6648; // type:function size:0x58 scope:global +__pformatter = .text:0x800E66A0; // type:function size:0x774 scope:local +float2str = .text:0x800E6E14; // type:function size:0x6EC scope:local +round_decimal = .text:0x800E7500; // type:function size:0x12C +double2hex = .text:0x800E762C; // type:function size:0x338 scope:local +longlong2str = .text:0x800E7964; // type:function size:0x2DC scope:local +long2str = .text:0x800E7C40; // type:function size:0x220 scope:local +parse_format = .text:0x800E7E60; // type:function size:0x504 scope:local +raise = .text:0x800E8364; // type:function size:0xB0 +strchr = .text:0x800E8414; // type:function size:0x30 scope:global +strncmp = .text:0x800E8444; // type:function size:0x40 +strcmp = .text:0x800E8484; // type:function size:0x128 +strcat = .text:0x800E85AC; // type:function size:0x44 +strcpy = .text:0x800E85F0; // type:function size:0xB8 +strlen = .text:0x800E86A8; // type:function size:0x1C scope:global +__close_console = .text:0x800E86C4; // type:function size:0x8 +__write_console = .text:0x800E86CC; // type:function size:0xC4 +fwide = .text:0x800E8790; // type:function size:0x88 scope:global +__ieee754_acos = .text:0x800E8818; // type:function size:0x310 +__ieee754_asin = .text:0x800E8B28; // type:function size:0x264 +__ieee754_atan2 = .text:0x800E8D8C; // type:function size:0x290 +__ieee754_fmod = .text:0x800E901C; // type:function size:0x33C +__ieee754_pow = .text:0x800E9358; // type:function size:0x88C +__ieee754_rem_pio2 = .text:0x800E9BE4; // type:function size:0x3A0 +__kernel_cos = .text:0x800E9F84; // type:function size:0xF4 +__kernel_rem_pio2 = .text:0x800EA078; // type:function size:0xE54 +__kernel_sin = .text:0x800EAECC; // type:function size:0xA0 +__kernel_tan = .text:0x800EAF6C; // type:function size:0x214 +atan = .text:0x800EB180; // type:function size:0x200 +copysign = .text:0x800EB380; // type:function size:0x28 +cos = .text:0x800EB3A8; // type:function size:0xD4 +floor = .text:0x800EB47C; // type:function size:0x148 +frexp = .text:0x800EB5C4; // type:function size:0x8C +ldexp = .text:0x800EB650; // type:function size:0x1C4 +modf = .text:0x800EB814; // type:function size:0xFC +sin = .text:0x800EB910; // type:function size:0xD8 +tan = .text:0x800EB9E8; // type:function size:0x78 +acos = .text:0x800EBA60; // type:function size:0x20 +asin = .text:0x800EBA80; // type:function size:0x20 +atan2 = .text:0x800EBAA0; // type:function size:0x20 +fmod = .text:0x800EBAC0; // type:function size:0x20 +pow = .text:0x800EBAE0; // type:function size:0x20 +tanf = .text:0x800EBB00; // type:function size:0x24 scope:weak +sinf = .text:0x800EBB24; // type:function size:0x24 scope:weak +cosf = .text:0x800EBB48; // type:function size:0x24 scope:weak +atan2f = .text:0x800EBB6C; // type:function size:0x24 scope:weak +acosf = .text:0x800EBB90; // type:function size:0x24 scope:weak +TRKNubMainLoop = .text:0x800EBBB4; // type:function size:0xF8 scope:global +TRKDestructEvent = .text:0x800EBCAC; // type:function size:0x24 scope:global +TRKConstructEvent = .text:0x800EBCD0; // type:function size:0x18 +TRKPostEvent = .text:0x800EBCE8; // type:function size:0xE0 +TRKGetNextEvent = .text:0x800EBDC8; // type:function size:0xB4 scope:global +TRKInitializeEventQueue = .text:0x800EBE7C; // type:function size:0x58 scope:global +TRKNubWelcome = .text:0x800EBED4; // type:function size:0x28 scope:global +TRKTerminateNub = .text:0x800EBEFC; // type:function size:0x24 scope:global +TRKInitializeNub = .text:0x800EBF20; // type:function size:0x134 scope:global +TRKMessageSend = .text:0x800EC054; // type:function size:0x1DC +TRKReadBuffer_ui32 = .text:0x800EC230; // type:function size:0xF0 +TRKReadBuffer_ui8 = .text:0x800EC320; // type:function size:0x98 +TRKReadBuffer1_ui64 = .text:0x800EC3B8; // type:function size:0xE8 +TRKReadBuffer1_ui32 = .text:0x800EC4A0; // type:function size:0xC8 +TRKReadBuffer1_ui16 = .text:0x800EC568; // type:function size:0xB8 +TRKReadBuffer1_ui8 = .text:0x800EC620; // type:function size:0x80 +TRKAppendBuffer_ui32 = .text:0x800EC6A0; // type:function size:0xA8 +TRKAppendBuffer_ui8 = .text:0x800EC748; // type:function size:0x68 +TRKAppendBuffer1_ui64 = .text:0x800EC7B0; // type:function size:0x88 +TRKAppendBuffer1_ui32 = .text:0x800EC838; // type:function size:0x64 +TRKAppendBuffer1_ui16 = .text:0x800EC89C; // type:function size:0x54 +TRKReadBuffer = .text:0x800EC8F0; // type:function size:0x8C +TRKAppendBuffer = .text:0x800EC97C; // type:function size:0xA4 +TRKSetBufferPosition = .text:0x800ECA20; // type:function size:0x30 +TRKResetBuffer = .text:0x800ECA50; // type:function size:0x40 +TRKReleaseBuffer = .text:0x800ECA90; // type:function size:0x64 +TRKGetBuffer = .text:0x800ECAF4; // type:function size:0x2C scope:global +TRKGetFreeBuffer = .text:0x800ECB20; // type:function size:0xC8 +TRKInitializeMessageBuffers = .text:0x800ECBE8; // type:function size:0x74 scope:global +TRKTerminateSerialHandler = .text:0x800ECC5C; // type:function size:0x8 +TRKInitializeSerialHandler = .text:0x800ECC64; // type:function size:0x24 scope:global +TRKProcessInput = .text:0x800ECC88; // type:function size:0x50 +TRKGetInput = .text:0x800ECCD8; // type:function size:0x98 scope:global +TRKTestForPacket = .text:0x800ECD70; // type:function size:0x2B8 +usr_put_initialize = .text:0x800ED028; // type:function size:0x4 scope:global +usr_puts_serial = .text:0x800ED02C; // type:function size:0x88 +TRKDispatchMessage = .text:0x800ED0B4; // type:function size:0x84 scope:global +TRKInitializeDispatcher = .text:0x800ED138; // type:function size:0x18 scope:global +TRKDoSetOption = .text:0x800ED150; // type:function size:0x1A4 +TRKDoStop = .text:0x800ED2F4; // type:function size:0x100 +TRKDoStep = .text:0x800ED3F4; // type:function size:0x530 +TRKDoContinue = .text:0x800ED924; // type:function size:0x154 +TRKDoFlushCache = .text:0x800EDA78; // type:function size:0x2F8 +TRKDoWriteRegisters = .text:0x800EDD70; // type:function size:0x3C8 +TRKDoReadRegisters = .text:0x800EE138; // type:function size:0x3CC +TRKDoWriteMemory = .text:0x800EE504; // type:function size:0x420 +TRKDoReadMemory = .text:0x800EE924; // type:function size:0x410 +TRKDoCPUType = .text:0x800EED34; // type:function size:0x398 +TRKDoSupportMask = .text:0x800EF0CC; // type:function size:0x230 +TRKDoVersions = .text:0x800EF2FC; // type:function size:0x2D8 +TRKDoReset = .text:0x800EF5D4; // type:function size:0xB8 +TRKDoDisconnect = .text:0x800EF68C; // type:function size:0xE4 +TRKDoConnect = .text:0x800EF770; // type:function size:0xBC +TRKDoUnsupported = .text:0x800EF82C; // type:function size:0xB0 +TRKStandardACK = .text:0x800EF8DC; // type:function size:0xB8 +SetTRKConnected = .text:0x800EF994; // type:function size:0xC +GetTRKConnected = .text:0x800EF9A0; // type:function size:0x10 +HandlePositionFileSupportRequest = .text:0x800EF9B0; // type:function size:0x190 +HandleCloseFileSupportRequest = .text:0x800EFB40; // type:function size:0x120 +HandleOpenFileSupportRequest = .text:0x800EFC60; // type:function size:0x1A8 +TRKRequestSend = .text:0x800EFE08; // type:function size:0x1A4 +TRKSuppAccessFile = .text:0x800EFFAC; // type:function size:0x2C4 +TRKReleaseMutex = .text:0x800F0270; // type:function size:0x8 +TRKAcquireMutex = .text:0x800F0278; // type:function size:0x8 +TRKInitializeMutex = .text:0x800F0280; // type:function size:0x8 +TRKDoNotifyStopped = .text:0x800F0288; // type:function size:0xD8 +TRK_flush_cache = .text:0x800F0360; // type:function size:0x38 +TRK_fill_mem = .text:0x800F0398; // type:function size:0xBC +__TRK_get_MSR = .text:0x800F0454; // type:function size:0x8 +__TRK_set_MSR = .text:0x800F045C; // type:function size:0x8 +TRK_ppc_memcpy = .text:0x800F0464; // type:function size:0x3C +TRKInterruptHandler = .text:0x800F04A0; // type:function size:0x194 scope:global +TRKExceptionHandler = .text:0x800F0634; // type:function size:0x9C scope:global +TRKSwapAndGo = .text:0x800F06D0; // type:function size:0xC4 scope:global +TRKInterruptHandlerEnableInterrupts = .text:0x800F0794; // type:function size:0x54 scope:global +TRKTargetSetInputPendingPtr = .text:0x800F07E8; // type:function size:0x10 scope:global +TRKPPCAccessFPRegister = .text:0x800F07F8; // type:function size:0x21C +TRKTargetStop = .text:0x800F0A14; // type:function size:0x18 +TRKTargetSetStopped = .text:0x800F0A2C; // type:function size:0x10 scope:global +TRKTargetStopped = .text:0x800F0A3C; // type:function size:0x10 scope:global +TRKTargetFlushCache = .text:0x800F0A4C; // type:function size:0x3C +TRKTargetSupportRequest = .text:0x800F0A88; // type:function size:0x208 scope:global +TRKTargetGetPC = .text:0x800F0C90; // type:function size:0x10 +TRKTargetStepOutOfRange = .text:0x800F0CA0; // type:function size:0x7C +TRKTargetSingleStep = .text:0x800F0D1C; // type:function size:0x6C +TRKTargetAddExceptionInfo = .text:0x800F0D88; // type:function size:0xAC +TRKTargetAddStopInfo = .text:0x800F0E34; // type:function size:0x124 +TRKTargetInterrupt = .text:0x800F0F58; // type:function size:0x15C scope:global +TRKPostInterruptEvent = .text:0x800F10B4; // type:function size:0xC0 scope:global +TRKTargetCPUType = .text:0x800F1174; // type:function size:0x60 +TRKTargetSupportMask = .text:0x800F11D4; // type:function size:0xA4 +TRKTargetVersions = .text:0x800F1278; // type:function size:0x24 +TRKTargetAccessExtended2 = .text:0x800F129C; // type:function size:0x438 +TRKTargetAccessExtended1 = .text:0x800F16D4; // type:function size:0x170 +TRKTargetAccessFP = .text:0x800F1844; // type:function size:0x13C +TRKTargetAccessDefault = .text:0x800F1980; // type:function size:0xF4 +TRKTargetAccessMemory = .text:0x800F1A74; // type:function size:0x14C +TRKValidMemory32 = .text:0x800F1BC0; // type:function size:0x124 +TRKAccessFile = .text:0x800F1CF0; // type:function size:0x8 +TRKOpenFile = .text:0x800F1CF8; // type:function size:0x8 +TRKCloseFile = .text:0x800F1D00; // type:function size:0x8 +TRKPositionFile = .text:0x800F1D08; // type:function size:0x8 +InitMetroTRK = .text:0x800F1D10; // type:function size:0x94 scope:global +TRKInitializeTarget = .text:0x800F1DA4; // type:function size:0x4C scope:global +TRKTargetTranslate = .text:0x800F1DF0; // type:function size:0x40 +EnableMetroTRKInterrupts = .text:0x800F1E30; // type:function size:0x20 scope:global +TRKSaveExtended1Block = .text:0x800F1E50; // type:function size:0x1B8 scope:global +TRKRestoreExtended1Block = .text:0x800F2008; // type:function size:0x1B8 scope:global +TRKTargetCPUMinorType = .text:0x800F21C0; // type:function size:0x8 +TRK_main = .text:0x800F21C8; // type:function size:0x44 scope:global +TRKLoadContext = .text:0x800F220C; // type:function size:0x88 scope:global +TRKUARTInterruptHandler = .text:0x800F2294; // type:function size:0x4 scope:global +TRK_board_display = .text:0x800F2298; // type:function size:0x24 scope:global +UnreserveEXI2Port = .text:0x800F22BC; // type:function size:0x30 scope:global +ReserveEXI2Port = .text:0x800F22EC; // type:function size:0x30 scope:global +TRKReadUARTPoll = .text:0x800F231C; // type:function size:0xF0 +WriteUART1 = .text:0x800F240C; // type:function size:0x28 +WriteUARTFlush = .text:0x800F2434; // type:function size:0xE0 +EnableEXI2Interrupts = .text:0x800F2514; // type:function size:0x30 +TRKInitializeIntDrivenUART = .text:0x800F2544; // type:function size:0x3C scope:global +InitMetroTRKCommTable = .text:0x800F2580; // type:function size:0x100 scope:global +TRKEXICallBack = .text:0x800F2680; // type:function size:0x38 scope:global +TRKTargetContinue = .text:0x800F26B8; // type:function size:0x34 scope:global +GetUseSerialIO = .text:0x800F26EC; // type:function size:0x10 +SetUseSerialIO = .text:0x800F26FC; // type:function size:0xC +__TRK_write_console = .text:0x800F2708; // type:function size:0xBC +__read_console = .text:0x800F27C4; // type:function size:0xBC +seqGetPrivateId = .text:0x800F2880; // type:function size:0x68 +seqStartPlay = .text:0x800F28E8; // type:function size:0xAC4 +StartPause = .text:0x800F33AC; // type:function size:0x64 +seqPause = .text:0x800F3410; // type:function size:0x27C +seqStop = .text:0x800F368C; // type:function size:0x2B0 +seqKillInstancesByGroupID = .text:0x800F393C; // type:function size:0x90 +seqSpeed = .text:0x800F39CC; // type:function size:0xE4 +seqContinue = .text:0x800F3AB0; // type:function size:0x108 +seqMute = .text:0x800F3BB8; // type:function size:0xBC +seqVolume = .text:0x800F3C74; // type:function size:0x1CC +seqCrossFade = .text:0x800F3E40; // type:function size:0xB58 +GenerateNextTrackEvent = .text:0x800F4998; // type:function size:0x218 scope:local +HandleEvent = .text:0x800F4BB0; // type:function size:0xA94 scope:local +InitTrackEvents = .text:0x800F5644; // type:function size:0x174 scope:local +HandleTrackEvents = .text:0x800F57B8; // type:function size:0x49C scope:local +seqHandle = .text:0x800F5C54; // type:function size:0x9F4 +seqInit = .text:0x800F6648; // type:function size:0x1A8 +synthSetBpm = .text:0x800F67F0; // type:function size:0x44 +synthGetTicksPerSecond = .text:0x800F6834; // type:function size:0x34 +synthInitPortamento = .text:0x800F6868; // type:function size:0x78 +do_voice_portamento = .text:0x800F68E0; // type:function size:0x2A0 scope:local +StartLayer = .text:0x800F6B80; // type:function size:0x3C0 scope:local +StartKeymap = .text:0x800F6F40; // type:function size:0x25C scope:local +synthStartSound = .text:0x800F719C; // type:function size:0x45C +LowPrecisionHandler = .text:0x800F75F8; // type:function size:0x744 scope:local +ZeroOffsetHandler = .text:0x800F7D3C; // type:function size:0x6FC scope:local +synthAddJob = .text:0x800F8438; // type:function size:0x150 scope:local +synthStartSynthJobHandling = .text:0x800F8588; // type:function size:0x64 +synthForceLowPrecisionUpdate = .text:0x800F85EC; // type:function size:0x44 +synthKeyStateUpdate = .text:0x800F8630; // type:function size:0x28 +synthHandle = .text:0x800F8658; // type:function size:0x510 +synthFXGetMaxVoices = .text:0x800F8B68; // type:function size:0x34 +synthFXStart = .text:0x800F8B9C; // type:function size:0xC8 +synthFXSetCtrl = .text:0x800F8C64; // type:function size:0xE4 +synthFXSetCtrl14 = .text:0x800F8D48; // type:function size:0xE4 +synthFXCloneMidiSetup = .text:0x800F8E2C; // type:function size:0x84 +synthSendKeyOff = .text:0x800F8EB0; // type:function size:0x88 +synthVolume = .text:0x800F8F38; // type:function size:0x530 +synthIsFadeOutActive = .text:0x800F9468; // type:function size:0x54 +synthSetMusicVolumeType = .text:0x800F94BC; // type:function size:0x28 +synthHWMessageHandler = .text:0x800F94E4; // type:function size:0xD0 +synthInit = .text:0x800F95B4; // type:function size:0x574 +synthExit = .text:0x800F9B28; // type:function size:0x24 +sndSeqGetValid = .text:0x800F9B4C; // type:function size:0x30 +sndSeqPause = .text:0x800F9B7C; // type:function size:0x38 +sndSeqStop = .text:0x800F9BB4; // type:function size:0x38 +sndSeqSpeed = .text:0x800F9BEC; // type:function size:0x48 +sndSeqContinue = .text:0x800F9C34; // type:function size:0x38 +sndSeqMute = .text:0x800F9C6C; // type:function size:0x58 +sndSeqVolume = .text:0x800F9CC4; // type:function size:0x68 +sndSeqGetMidiCtrl = .text:0x800F9D2C; // type:function size:0x84 +seqGetMIDIPriority = .text:0x800F9DB0; // type:function size:0x1C +sndFXCtrl = .text:0x800F9DCC; // type:function size:0x60 +sndFXCtrl14 = .text:0x800F9E2C; // type:function size:0x60 +sndFXKeyOff = .text:0x800F9E8C; // type:function size:0x40 +sndFXStartParaInfo = .text:0x800F9ECC; // type:function size:0xE0 +sndFXCheck = .text:0x800F9FAC; // type:function size:0x40 +sndSendMessage = .text:0x800F9FEC; // type:function size:0x50 +sndVolume = .text:0x800FA03C; // type:function size:0x60 +sndMasterVolume = .text:0x800FA09C; // type:function size:0x94 +sndOutputMode = .text:0x800FA130; // type:function size:0xEC +sndSetAuxProcessingCallbacks = .text:0x800FA21C; // type:function size:0x158 +synthActivateStudio = .text:0x800FA374; // type:function size:0xA8 +synthDeactivateStudio = .text:0x800FA41C; // type:function size:0xF0 +synthAddStudioInput = .text:0x800FA50C; // type:function size:0x20 +synthRemoveStudioInput = .text:0x800FA52C; // type:function size:0x20 +streamInit = .text:0x800FA54C; // type:function size:0xBC +SetHWMix = .text:0x800FA608; // type:function size:0x8C scope:local +streamHandle = .text:0x800FA694; // type:function size:0x8AC +streamCorrectLoops = .text:0x800FAF40; // type:function size:0x4 +streamKill = .text:0x800FAF44; // type:function size:0x84 +GetPrivateIndex = .text:0x800FAFC8; // type:function size:0x160 +sndStreamARAMUpdate = .text:0x800FB128; // type:function size:0x2C4 +CheckOutputMode = .text:0x800FB3EC; // type:function size:0x34 +SetupVolumeAndPan = .text:0x800FB420; // type:function size:0x44 +streamOutputModeChanged = .text:0x800FB464; // type:function size:0x130 +sndStreamAllocEx = .text:0x800FB594; // type:function size:0x458 +sndStreamAllocLength = .text:0x800FB9EC; // type:function size:0x44 +sndStreamADPCMParameter = .text:0x800FBA30; // type:function size:0x6E8 +sndStreamMixParameterEx = .text:0x800FC118; // type:function size:0x560 +sndStreamFrq = .text:0x800FC678; // type:function size:0x654 +sndStreamFree = .text:0x800FCCCC; // type:function size:0x6B8 +sndStreamActivate = .text:0x800FD384; // type:function size:0x634 +sndStreamDeactivate = .text:0x800FD9B8; // type:function size:0x700 +dataInsertKeymap = .text:0x800FE0B8; // type:function size:0x1F0 +dataRemoveKeymap = .text:0x800FE2A8; // type:function size:0x17C +dataInsertLayer = .text:0x800FE424; // type:function size:0x248 +dataRemoveLayer = .text:0x800FE66C; // type:function size:0x1C4 +dataInsertCurve = .text:0x800FE830; // type:function size:0x204 +dataRemoveCurve = .text:0x800FEA34; // type:function size:0x17C +dataInsertSDir = .text:0x800FEBB0; // type:function size:0x188 +dataRemoveSDir = .text:0x800FED38; // type:function size:0x2C8 +dataAddSampleReference = .text:0x800FF000; // type:function size:0xD8 +dataRemoveSampleReference = .text:0x800FF0D8; // type:function size:0x98 +dataInsertFX = .text:0x800FF170; // type:function size:0x11C +dataRemoveFX = .text:0x800FF28C; // type:function size:0x15C +dataInsertMacro = .text:0x800FF3E8; // type:function size:0x304 +dataRemoveMacro = .text:0x800FF6EC; // type:function size:0x284 +maccmp = .text:0x800FF970; // type:function size:0x10 scope:local +dataGetMacro = .text:0x800FF980; // type:function size:0x8C +smpcmp = .text:0x800FFA0C; // type:function size:0x10 scope:local +dataGetSample = .text:0x800FFA1C; // type:function size:0x128 +curvecmp = .text:0x800FFB44; // type:function size:0x10 scope:local +dataGetCurve = .text:0x800FFB54; // type:function size:0x5C +dataGetKeymap = .text:0x800FFBB0; // type:function size:0x5C +layercmp = .text:0x800FFC0C; // type:function size:0x10 scope:local +dataGetLayer = .text:0x800FFC1C; // type:function size:0x7C +fxcmp = .text:0x800FFC98; // type:function size:0x10 scope:local +dataGetFX = .text:0x800FFCA8; // type:function size:0x9C +dataInit = .text:0x800FFD44; // type:function size:0xE4 +dataExit = .text:0x800FFE28; // type:function size:0x20 +mcmdWait = .text:0x800FFE48; // type:function size:0x2F0 scope:local +mcmdGosub = .text:0x80100138; // type:function size:0xD0 scope:local +mcmdLoop = .text:0x80100208; // type:function size:0x154 scope:local +mcmdPlayMacro = .text:0x8010035C; // type:function size:0x18C scope:local +mcmdAddKey = .text:0x801004E8; // type:function size:0xD8 scope:local +mcmdStartSample = .text:0x801005C0; // type:function size:0x1FC scope:local +mcmdVibrato = .text:0x801007BC; // type:function size:0x17C scope:local +DoSetPitch = .text:0x80100938; // type:function size:0x1A0 scope:local +mcmdSetADSR = .text:0x80100AD8; // type:function size:0x258 scope:local +mcmdSetADSRFromCtrl = .text:0x80100D30; // type:function size:0x12C scope:local +mcmdSetPitchADSR = .text:0x80100E5C; // type:function size:0x27C scope:local +mcmdSetPanning = .text:0x801010D8; // type:function size:0x9C scope:local +mcmdSetSurroundPanning = .text:0x80101174; // type:function size:0x9C scope:local +mcmdScaleVolume = .text:0x80101210; // type:function size:0x134 scope:local +mcmdEnvelope = .text:0x80101344; // type:function size:0x130 scope:local +mcmdFadeIn = .text:0x80101474; // type:function size:0x13C scope:local +mcmdRandomKey = .text:0x801015B0; // type:function size:0x19C scope:local +mcmdVolumeSelect = .text:0x8010174C; // type:function size:0x104 scope:local +mcmdPanningSelect = .text:0x80101850; // type:function size:0x104 scope:local +mcmdPitchWheelSelect = .text:0x80101954; // type:function size:0x104 scope:local +mcmdModWheelSelect = .text:0x80101A58; // type:function size:0x104 scope:local +mcmdPedalSelect = .text:0x80101B5C; // type:function size:0x104 scope:local +mcmdPortamentoSelect = .text:0x80101C60; // type:function size:0x104 scope:local +mcmdReverbSelect = .text:0x80101D64; // type:function size:0x104 scope:local +mcmdPreAuxASelect = .text:0x80101E68; // type:function size:0x104 scope:local +mcmdPreAuxBSelect = .text:0x80101F6C; // type:function size:0x104 scope:local +mcmdPostAuxBSelect = .text:0x80102070; // type:function size:0x104 scope:local +mcmdSurroundPanningSelect = .text:0x80102174; // type:function size:0x104 scope:local +mcmdDopplerSelect = .text:0x80102278; // type:function size:0x104 scope:local +mcmdTremoloSelect = .text:0x8010237C; // type:function size:0x104 scope:local +mcmdAuxAFXSelect = .text:0x80102480; // type:function size:0x17C scope:local +mcmdAuxBFXSelect = .text:0x801025FC; // type:function size:0x17C scope:local +mcmdPortamento = .text:0x80102778; // type:function size:0x164 scope:local +varGet = .text:0x801028DC; // type:function size:0x68 +mcmdVarCalculation = .text:0x80102944; // type:function size:0x220 scope:local +mcmdIfVarCompare = .text:0x80102B64; // type:function size:0x14C scope:local +macPostMessage = .text:0x80102CB0; // type:function size:0xBC +mcmdSendMessage = .text:0x80102D6C; // type:function size:0x244 scope:local +mcmdGetVID = .text:0x80102FB0; // type:function size:0x80 scope:local +mcmdSetKeyGroup = .text:0x80103030; // type:function size:0xDC scope:local +macHandleActive = .text:0x8010310C; // type:function size:0xF58 scope:local +macHandle = .text:0x80104064; // type:function size:0x150 +macSampleEndNotify = .text:0x801041B4; // type:function size:0xAC +macSetExternalKeyoff = .text:0x80104260; // type:function size:0xF0 +macSetPedalState = .text:0x80104350; // type:function size:0x108 +TimeQueueAdd = .text:0x80104458; // type:function size:0xA4 scope:local +macMakeActive = .text:0x801044FC; // type:function size:0x108 +macMakeInactive = .text:0x80104604; // type:function size:0xFC +macStart = .text:0x80104700; // type:function size:0x438 +macInit = .text:0x80104B38; // type:function size:0x68 +vidInit = .text:0x80104BA0; // type:function size:0xE0 +vidRemoveVoiceReferences = .text:0x80104C80; // type:function size:0x350 +vidMakeRoot = .text:0x80104FD0; // type:function size:0x14 +vidMakeNew = .text:0x80104FE4; // type:function size:0x104 +vidGetInternalId = .text:0x801050E8; // type:function size:0x50 +voiceSetPriority = .text:0x80105138; // type:function size:0x24C +voiceAllocate = .text:0x80105384; // type:function size:0x460 +voiceFree = .text:0x801057E4; // type:function size:0x1C4 +synthInitAllocationAids = .text:0x801059A8; // type:function size:0x2A0 +voiceBlock = .text:0x80105C48; // type:function size:0xFC +voiceUnblock = .text:0x80105D44; // type:function size:0x218 +voiceKill = .text:0x80105F5C; // type:function size:0x234 +voiceKillSound = .text:0x80106190; // type:function size:0xC4 +synthKillVoicesByMacroReferences = .text:0x80106254; // type:function size:0x15C +voiceIsLastStarted = .text:0x801063B0; // type:function size:0x74 +voiceSetLastStarted = .text:0x80106424; // type:function size:0x54 +voiceResetLastStarted = .text:0x80106478; // type:function size:0x74 +voiceInitLastStarted = .text:0x801064EC; // type:function size:0x144 +sndPitchUpOne = .text:0x80106630; // type:function size:0x3C +sndGetPitch = .text:0x8010666C; // type:function size:0xE4 +adsrConvertTimeCents = .text:0x80106750; // type:function size:0x58 +salChangeADSRState = .text:0x801067A8; // type:function size:0x26C +adsrSetup = .text:0x80106A14; // type:function size:0x28 +adsrStartRelease = .text:0x80106A3C; // type:function size:0x150 +adsrRelease = .text:0x80106B8C; // type:function size:0x168 +adsrHandle = .text:0x80106CF4; // type:function size:0x198 +adsrHandleLowPrecision = .text:0x80106E8C; // type:function size:0x84 +vsInit = .text:0x80106F10; // type:function size:0xBC +vsSampleStartNotify = .text:0x80106FCC; // type:function size:0x248 +vsSampleEndNotify = .text:0x80107214; // type:function size:0xA8 +vsUpdateBuffer = .text:0x801072BC; // type:function size:0x1F8 +vsSampleUpdates = .text:0x801074B4; // type:function size:0x1E4 +dataInitStack = .text:0x80107698; // type:function size:0xC +InsertData = .text:0x801076A4; // type:function size:0x27C scope:local +sndPushGroup = .text:0x80107920; // type:function size:0x32C +sndPopGroup = .text:0x80107C4C; // type:function size:0x33C +seqPlaySong = .text:0x80107F88; // type:function size:0x14C +sndSeqPlayEx = .text:0x801080D4; // type:function size:0x11C +salInitDspCtrl = .text:0x801081F0; // type:function size:0x3B4 +salInitHRTFBuffer = .text:0x801085A4; // type:function size:0x38 +salExitDspCtrl = .text:0x801085DC; // type:function size:0xE0 +salActivateStudio = .text:0x801086BC; // type:function size:0x150 +salDeactivateStudio = .text:0x8010880C; // type:function size:0x20 +salCheckVolErrorAndResetDelta = .text:0x8010882C; // type:function size:0xF4 +sal_setup_dspvol = .text:0x80108920; // type:function size:0x48 scope:local +sal_update_hostplayinfo = .text:0x80108968; // type:function size:0x74 scope:local +DoDepopFade = .text:0x801089DC; // type:function size:0xAC scope:local +HandleDepopVoice = .text:0x80108A88; // type:function size:0x2DC scope:local +SortVoices = .text:0x80108D64; // type:function size:0x258 scope:local +salBuildCommandList = .text:0x80108FBC; // type:function size:0x21B8 +salSynthSendMessage = .text:0x8010B174; // type:function size:0x44 +salActivateVoice = .text:0x8010B1B8; // type:function size:0xA0 +salDeactivateVoice = .text:0x8010B258; // type:function size:0x60 +salReconnectVoice = .text:0x8010B2B8; // type:function size:0xC8 +salAddStudioInput = .text:0x8010B380; // type:function size:0xA8 +salRemoveStudioInput = .text:0x8010B428; // type:function size:0x84 +salHandleAuxProcessing = .text:0x8010B4AC; // type:function size:0x158 +salCalcVolume = .text:0x8010B604; // type:function size:0x6F0 +CheckRoomStatus = .text:0x8010BCF4; // type:function size:0x4B4 scope:local +CalcEmitter = .text:0x8010C1A8; // type:function size:0x51C scope:local +sndUpdateEmitter = .text:0x8010C6C4; // type:function size:0x130 +sndCheckEmitter = .text:0x8010C7F4; // type:function size:0x20 +AddEmitter = .text:0x8010C814; // type:function size:0x3F8 scope:local +sndAddEmitterParaEx = .text:0x8010CC0C; // type:function size:0x50 +sndRemoveEmitter = .text:0x8010CC5C; // type:function size:0xA8 +sndEmitterVoiceID = .text:0x8010CD04; // type:function size:0x5C +s3dKillEmitterByFXID = .text:0x8010CD60; // type:function size:0xFC +sndUpdateListener = .text:0x8010CE5C; // type:function size:0x204 +sndAddListenerEx = .text:0x8010D060; // type:function size:0x230 +sndRemoveListener = .text:0x8010D290; // type:function size:0xD0 +AddStartingEmitter = .text:0x8010D360; // type:function size:0x14C scope:local +StartContinousEmitters = .text:0x8010D4AC; // type:function size:0x3B0 scope:local +s3dHandle = .text:0x8010D85C; // type:function size:0x82C +s3dInit = .text:0x8010E088; // type:function size:0x38 +s3dExit = .text:0x8010E0C0; // type:function size:0x4 +sndInit = .text:0x8010E0C4; // type:function size:0x118 +sndQuit = .text:0x8010E1DC; // type:function size:0x34 +sndIsInstalled = .text:0x8010E210; // type:function size:0x8 +salApplyMatrix = .text:0x8010E218; // type:function size:0xAC +salNormalizeVector = .text:0x8010E2C4; // type:function size:0xB4 +salCrossProduct = .text:0x8010E378; // type:function size:0x64 +salInvertMatrix = .text:0x8010E3DC; // type:function size:0x1FC +inpSetGlobalMIDIDirtyFlag = .text:0x8010E5D8; // type:function size:0x24 +inpSetMidiCtrl = .text:0x8010E5FC; // type:function size:0x608 +inpSetMidiCtrl14 = .text:0x8010EC04; // type:function size:0x124 +inpResetMidiCtrl = .text:0x8010ED28; // type:function size:0xF0 +inpGetMidiCtrl = .text:0x8010EE18; // type:function size:0x2C4 +inpGetChannelDefaults = .text:0x8010F0DC; // type:function size:0x34 +inpResetChannelDefaults = .text:0x8010F110; // type:function size:0x3C +inpAddCtrl = .text:0x8010F14C; // type:function size:0x98 +inpFXCopyCtrl = .text:0x8010F1E4; // type:function size:0x114 +inpSetMidiLastNote = .text:0x8010F2F8; // type:function size:0x3C +inpGetMidiLastNote = .text:0x8010F334; // type:function size:0x3C +_GetInputValue = .text:0x8010F370; // type:function size:0x4A0 scope:local +inpGetVolume = .text:0x8010F810; // type:function size:0x48 +inpGetPanning = .text:0x8010F858; // type:function size:0x48 +inpGetSurPanning = .text:0x8010F8A0; // type:function size:0x48 +inpGetPitchBend = .text:0x8010F8E8; // type:function size:0x48 +inpGetDoppler = .text:0x8010F930; // type:function size:0x48 +inpGetModulation = .text:0x8010F978; // type:function size:0x48 +inpGetPedal = .text:0x8010F9C0; // type:function size:0x48 +inpGetPreAuxA = .text:0x8010FA08; // type:function size:0x48 +inpGetReverb = .text:0x8010FA50; // type:function size:0x48 +inpGetPreAuxB = .text:0x8010FA98; // type:function size:0x48 +inpGetPostAuxB = .text:0x8010FAE0; // type:function size:0x48 +inpGetTremolo = .text:0x8010FB28; // type:function size:0x48 +inpGetAuxA = .text:0x8010FB70; // type:function size:0xB4 +inpGetAuxB = .text:0x8010FC24; // type:function size:0xB4 +inpInit = .text:0x8010FCD8; // type:function size:0x284 +inpTranslateExCtrl = .text:0x8010FF5C; // type:function size:0x70 +inpGetExCtrl = .text:0x8010FFCC; // type:function size:0xFC +inpSetExCtrl = .text:0x801100C8; // type:function size:0x1E4 +sndRand = .text:0x801102AC; // type:function size:0x1C +sndSin = .text:0x801102C8; // type:function size:0x8C +sndBSearch = .text:0x80110354; // type:function size:0xA4 +sndConvertMs = .text:0x801103F8; // type:function size:0x10 +sndConvertTicks = .text:0x80110408; // type:function size:0x48 +sndConvert2Ms = .text:0x80110450; // type:function size:0x8 +snd_handle_irq = .text:0x80110458; // type:function size:0x154 scope:local +hwInit = .text:0x801105AC; // type:function size:0xB8 +hwExit = .text:0x80110664; // type:function size:0x34 +hwSetTimeOffset = .text:0x80110698; // type:function size:0x8 +hwGetTimeOffset = .text:0x801106A0; // type:function size:0x8 +hwIsActive = .text:0x801106A8; // type:function size:0x20 +hwSetMesgCallback = .text:0x801106C8; // type:function size:0x8 +hwSetPriority = .text:0x801106D0; // type:function size:0x14 +hwInitSamplePlayback = .text:0x801106E4; // type:function size:0x1B4 +hwBreak = .text:0x80110898; // type:function size:0x50 +hwSetADSR = .text:0x801108E8; // type:function size:0x1AC +hwSetVirtualSampleLoopBuffer = .text:0x80110A94; // type:function size:0x20 +hwGetVirtualSampleState = .text:0x80110AB4; // type:function size:0x14 +hwGetSampleType = .text:0x80110AC8; // type:function size:0x14 +hwGetSampleID = .text:0x80110ADC; // type:function size:0x14 +hwSetStreamLoopPS = .text:0x80110AF0; // type:function size:0x14 +hwStart = .text:0x80110B04; // type:function size:0x3C +hwKeyOff = .text:0x80110B40; // type:function size:0x28 +hwSetPitch = .text:0x80110B68; // type:function size:0x78 +hwSetSRCType = .text:0x80110BE0; // type:function size:0x2C +hwSetPolyPhaseFilter = .text:0x80110C0C; // type:function size:0x2C +hwSetITDMode = .text:0x80110C38; // type:function size:0x5C +hwSetVolume = .text:0x80110C94; // type:function size:0x2C0 +hwOff = .text:0x80110F54; // type:function size:0x2C +hwSetAUXProcessingCallbacks = .text:0x80110F80; // type:function size:0x28 +hwActivateStudio = .text:0x80110FA8; // type:function size:0x20 +hwDeactivateStudio = .text:0x80110FC8; // type:function size:0x20 +hwAddInput = .text:0x80110FE8; // type:function size:0x34 +hwRemoveInput = .text:0x8011101C; // type:function size:0x34 +hwChangeStudio = .text:0x80111050; // type:function size:0x2C +hwGetPos = .text:0x8011107C; // type:function size:0xA4 +hwFlushStream = .text:0x80111120; // type:function size:0x90 +hwInitStream = .text:0x801111B0; // type:function size:0x20 +hwExitStream = .text:0x801111D0; // type:function size:0x20 +hwGetStreamPlayBuffer = .text:0x801111F0; // type:function size:0x24 +hwTransAddr = .text:0x80111214; // type:function size:0x4 +hwFrq2Pitch = .text:0x80111218; // type:function size:0x5C +hwInitSampleMem = .text:0x80111274; // type:function size:0x24 +hwExitSampleMem = .text:0x80111298; // type:function size:0x20 +hwSaveSample = .text:0x801112B8; // type:function size:0x94 +hwRemoveSample = .text:0x8011134C; // type:function size:0x84 +hwSyncSampleMem = .text:0x801113D0; // type:function size:0x20 +hwFrameDone = .text:0x801113F0; // type:function size:0x4 +sndSetHooks = .text:0x801113F4; // type:function size:0x14 +hwDisableHRTF = .text:0x80111408; // type:function size:0xC +hwGetVirtualSampleID = .text:0x80111414; // type:function size:0x28 +hwVoiceInStartup = .text:0x8011143C; // type:function size:0x20 +aramQueueCallback = .text:0x8011145C; // type:function size:0xA0 +aramUploadData = .text:0x801114FC; // type:function size:0x1DC +aramSyncTransferQueue = .text:0x801116D8; // type:function size:0x18 +aramInit = .text:0x801116F0; // type:function size:0x2EC +aramExit = .text:0x801119DC; // type:function size:0x4 +aramGetZeroBuffer = .text:0x801119E0; // type:function size:0x20 +aramStoreData = .text:0x80111A00; // type:function size:0x3BC +aramRemoveData = .text:0x80111DBC; // type:function size:0x18 +InitStreamBuffers = .text:0x80111DD4; // type:function size:0xC4 scope:local +aramAllocateStreamBuffer = .text:0x80111E98; // type:function size:0x108 +aramGetStreamBufferAddress = .text:0x80111FA0; // type:function size:0x38 +aramFreeStreamBuffer = .text:0x80111FD8; // type:function size:0xF8 +salCallback = .text:0x801120D0; // type:function size:0xA8 scope:local +dspInitCallback = .text:0x80112178; // type:function size:0x10 scope:local +dspResumeCallback = .text:0x80112188; // type:function size:0x64 scope:local +salInitAi = .text:0x801121EC; // type:function size:0xC8 +salStartAi = .text:0x801122B4; // type:function size:0x20 +salExitAi = .text:0x801122D4; // type:function size:0x34 +salAiGetDest = .text:0x80112308; // type:function size:0x30 +salInitDsp = .text:0x80112338; // type:function size:0xBC +salExitDsp = .text:0x801123F4; // type:function size:0x34 +salCtrlDsp = .text:0x80112428; // type:function size:0x74 +salGetStartDelay = .text:0x8011249C; // type:function size:0x4C +hwInitIrq = .text:0x801124E8; // type:function size:0x2C +hwExitIrq = .text:0x80112514; // type:function size:0x4 +hwEnableIrq = .text:0x80112518; // type:function size:0x38 +hwDisableIrq = .text:0x80112550; // type:function size:0x38 +hwIRQEnterCritical = .text:0x80112588; // type:function size:0x20 +hwIRQLeaveCritical = .text:0x801125A8; // type:function size:0x20 +salMalloc = .text:0x801125C8; // type:function size:0x28 +salFree = .text:0x801125F0; // type:function size:0x2C +sndAuxCallbackReverbSTD = .text:0x8011261C; // type:function size:0x5C +sndAuxCallbackPrepareReverbSTD = .text:0x80112678; // type:function size:0x3C +sndAuxCallbackShutdownReverbSTD = .text:0x801126B4; // type:function size:0x24 +ReverbSTDCreate = .text:0x801126D8; // type:function size:0x428 +HandleReverb = .text:0x80112B00; // type:function size:0x3B4 scope:local +ReverbSTDCallback = .text:0x80112EB4; // type:function size:0x24 +ReverbSTDFree = .text:0x80112ED8; // type:function size:0xBC +sndAuxCallbackReverbHI = .text:0x80112F94; // type:function size:0x5C +sndAuxCallbackPrepareReverbHI = .text:0x80112FF0; // type:function size:0x40 +sndAuxCallbackShutdownReverbHI = .text:0x80113030; // type:function size:0x24 +ReverbHICreate = .text:0x80113054; // type:function size:0x50C +DoCrossTalk = .text:0x80113560; // type:function size:0x190 scope:local +HandleReverb = .text:0x801136F0; // type:function size:0x50C +ReverbHICallback = .text:0x80113BFC; // type:function size:0xE0 +ReverbHIFree = .text:0x80113CDC; // type:function size:0xBC +sndAuxCallbackDelay = .text:0x80113D98; // type:function size:0x168 +sndAuxCallbackUpdateSettingsDelay = .text:0x80113F00; // type:function size:0x1D0 +sndAuxCallbackPrepareDelay = .text:0x801140D0; // type:function size:0x28 +sndAuxCallbackShutdownDelay = .text:0x801140F8; // type:function size:0x4C +do_src1 = .text:0x80114144; // type:function size:0x198 scope:local +do_src2 = .text:0x801142DC; // type:function size:0x1EC scope:local +sndAuxCallbackChorus = .text:0x801144C8; // type:function size:0x2BC +sndAuxCallbackPrepareChorus = .text:0x80114784; // type:function size:0x200 +sndAuxCallbackShutdownChorus = .text:0x80114984; // type:function size:0x28 +DBClose = .text:0x801149AC; // type:function size:0x4 scope:global align:4 +DBOpen = .text:0x801149B0; // type:function size:0x4 scope:global align:4 +DBWrite = .text:0x801149B4; // type:function size:0x260 scope:global align:4 +DBRead = .text:0x80114C14; // type:function size:0x8C scope:global align:4 +DBQueryData = .text:0x80114CA0; // type:function size:0x9C scope:global align:4 +DBInitInterrupts = .text:0x80114D3C; // type:function size:0x54 scope:global align:4 +DBInitComm = .text:0x80114D90; // type:function size:0x78 scope:global align:4 +DBGHandler = .text:0x80114E08; // type:function size:0x40 scope:global align:4 +MWCallback = .text:0x80114E48; // type:function size:0x3C scope:global align:4 +DBGReadStatus = .text:0x80114E84; // type:function size:0xAC scope:global align:4 +DBGWrite = .text:0x80114F30; // type:function size:0xDC scope:global align:4 +DBGRead = .text:0x8011500C; // type:function size:0xDC scope:global align:4 +DBGReadMailbox = .text:0x801150E8; // type:function size:0xAC scope:global align:4 +DBGEXIImm = .text:0x80115194; // type:function size:0x298 scope:global align:4 +EXI2_Init = .text:0x8011542C; // type:function size:0x4 scope:global +EXI2_EnableInterrupts = .text:0x80115430; // type:function size:0x4 scope:global +EXI2_Poll = .text:0x80115434; // type:function size:0x8 scope:global +EXI2_ReadN = .text:0x8011543C; // type:function size:0x8 scope:global +EXI2_WriteN = .text:0x80115444; // type:function size:0x8 scope:global +EXI2_Reserve = .text:0x8011544C; // type:function size:0x4 scope:global +EXI2_Unreserve = .text:0x80115450; // type:function size:0x4 scope:global +AMC_IsStub = .text:0x80115454; // type:function size:0x8 scope:global +Hu_IsStub = .text:0x8011545C; // type:function size:0x8 scope:weak +HuSetVecF = .text:0x80115464; // type:function size:0x10 +HuSubVecF = .text:0x80115474; // type:function size:0x34 +msmSysServer = .text:0x801154A8; // type:function size:0x6C scope:local +msmSysSetAuxParam = .text:0x80115514; // type:function size:0x27C scope:local +msmSysLoadBaseGroup = .text:0x80115790; // type:function size:0x15C scope:local +msmSysSearchGroupStack = .text:0x801158EC; // type:function size:0xB4 scope:local +msmSysGroupInit = .text:0x801159A0; // type:function size:0x31C scope:local +msmSysIrqDisable = .text:0x80115CBC; // type:function size:0x48 +msmSysIrqEnable = .text:0x80115D04; // type:function size:0x48 +msmSysCheckBaseGroup = .text:0x80115D4C; // type:function size:0x68 +msmSysGetGroupDataPtr = .text:0x80115DB4; // type:function size:0xD8 +msmSysCheckLoadGroupID = .text:0x80115E8C; // type:function size:0xFC +msmSysRegularProc = .text:0x80115F88; // type:function size:0x4 +msmSysGetOutputMode = .text:0x80115F8C; // type:function size:0x14 +msmSysSetOutputMode = .text:0x80115FA0; // type:function size:0xD8 +msmSysSetAux = .text:0x80116078; // type:function size:0x114 +msmSysGetSampSize = .text:0x8011618C; // type:function size:0x28 +msmSysDelGroupAll = .text:0x801161B4; // type:function size:0x140 +msmSysDelGroupBase = .text:0x801162F4; // type:function size:0x28C +msmSysLoadGroupBase = .text:0x80116580; // type:function size:0x298 +msmSysLoadGroupSet = .text:0x80116818; // type:function size:0x3F0 +msmSysLoadGroupSub = .text:0x80116C08; // type:function size:0x3B4 +msmSysLoadGroup = .text:0x80116FBC; // type:function size:0x278 +msmSysCheckInit = .text:0x80117234; // type:function size:0x20 +msmSysInit = .text:0x80117254; // type:function size:0x474 +msmMemFree = .text:0x801176C8; // type:function size:0xC8 +msmMemAlloc = .text:0x80117790; // type:function size:0x104 +msmMemInit = .text:0x80117894; // type:function size:0x64 +msmFioClose = .text:0x801178F8; // type:function size:0x30 +msmFioRead = .text:0x80117928; // type:function size:0x34 +msmFioOpen = .text:0x8011795C; // type:function size:0x2C +msmFioInit = .text:0x80117988; // type:function size:0x60 +msmMusPauseSub = .text:0x801179E8; // type:function size:0x154 scope:local +msmMusPauseFade = .text:0x80117B3C; // type:function size:0x174 scope:local +msmMusFade = .text:0x80117CB0; // type:function size:0x1BC scope:local +msmMusFdoutEnd = .text:0x80117E6C; // type:function size:0x4 +msmMusPeriodicProc = .text:0x80117E70; // type:function size:0x1CC +msmMusGetMidiCtrl = .text:0x8011803C; // type:function size:0x9C +msmMusGetNumPlay = .text:0x801180D8; // type:function size:0x38 +msmMusGetStatus = .text:0x80118110; // type:function size:0x3C +msmMusSetMasterVolume = .text:0x8011814C; // type:function size:0x30 +msmMusSetParam = .text:0x8011817C; // type:function size:0x16C +msmMusPauseAll = .text:0x801182E8; // type:function size:0x88 +msmMusPause = .text:0x80118370; // type:function size:0x74 +msmMusStopAll = .text:0x801183E4; // type:function size:0x134 +msmMusStop = .text:0x80118518; // type:function size:0xCC +msmMusPlay = .text:0x801185E4; // type:function size:0x328 +msmMusInit = .text:0x8011890C; // type:function size:0x174 +msmSeFade = .text:0x80118A80; // type:function size:0x250 scope:local +msmSePauseSub = .text:0x80118CD0; // type:function size:0x184 scope:local +msmSePeriodicProc = .text:0x80118E54; // type:function size:0x270 +msmSeGetIndexPtr = .text:0x801190C4; // type:function size:0x30 +msmSeDelListener = .text:0x801190F4; // type:function size:0x4C +msmSeUpdataListener = .text:0x80119140; // type:function size:0xD8 +msmSeSetListener = .text:0x80119218; // type:function size:0x13C +msmSeGetEntryID = .text:0x80119354; // type:function size:0x74 +msmSeGetNumPlay = .text:0x801193C8; // type:function size:0x38 +msmSeGetStatus = .text:0x80119400; // type:function size:0x60 +msmSeSetMasterVolume = .text:0x80119460; // type:function size:0x30 +msmSeSetParam = .text:0x80119490; // type:function size:0x320 +msmSePauseAll = .text:0x801197B0; // type:function size:0x80 +msmSeStopAll = .text:0x80119830; // type:function size:0x168 +msmSeStop = .text:0x80119998; // type:function size:0xFC +msmSePlay = .text:0x80119A94; // type:function size:0x480 +msmSeInit = .text:0x80119F14; // type:function size:0x130 +msmStreamGetStatus = .text:0x8011A044; // type:function size:0xC8 +msmStreamSetMasterVolume = .text:0x8011A10C; // type:function size:0x118 +msmStreamStopAll = .text:0x8011A224; // type:function size:0xE0 +msmStreamStop = .text:0x8011A304; // type:function size:0x204 +msmStreamPlay = .text:0x8011A508; // type:function size:0x88 +msmStreamPeriodicProc = .text:0x8011A590; // type:function size:0x8C +msmStreamSetOutputMode = .text:0x8011A61C; // type:function size:0x114 +msmStreamAmemFree = .text:0x8011A730; // type:function size:0x68 +msmStreamAmemAlloc = .text:0x8011A798; // type:function size:0x10C +msmStreamInit = .text:0x8011A8A4; // type:function size:0x2A8 +msmStreamPauseOff = .text:0x8011AB4C; // type:function size:0x2B8 scope:local +msmStreamPauseOn = .text:0x8011AE04; // type:function size:0x1AC scope:local +msmStreamPauseFade = .text:0x8011AFB0; // type:function size:0x2E8 scope:local +msmStreamFade = .text:0x8011B298; // type:function size:0x33C scope:local +msmStreamStopSub = .text:0x8011B5D4; // type:function size:0x13C scope:local +msmStreamSetParamSub = .text:0x8011B710; // type:function size:0xE0 scope:local +msmStreamPackStartStereo = .text:0x8011B7F0; // type:function size:0x448 scope:local +msmStreamPackStartMono = .text:0x8011BC38; // type:function size:0x2DC scope:local +msmStreamSlotOff = .text:0x8011BF14; // type:function size:0xD0 scope:local +msmStreamData = .text:0x8011BFE4; // type:function size:0x320 scope:local +msmStreamDvdCallback = .text:0x8011C304; // type:function size:0x4A8 scope:local +msmStreamDvdCallback2 = .text:0x8011C7AC; // type:function size:0x188 scope:local +msmStreamUpdateFunc = .text:0x8011C934; // type:function size:0x17C scope:local +msmStreamSlotInit = .text:0x8011CAB0; // type:function size:0x214 scope:local +_kerent = .text:0x8011CCC4; // type:function size:0xFE4 scope:global +_ctors = .ctors:0x8011DCC0; // type:label scope:global data:4byte +__init_cpp_exceptions_reference = .ctors:0x8011DCC0; // type:object size:0x4 scope:global +_dtors = .dtors:0x8011DCE0; // type:label scope:global data:4byte +__destroy_global_chain_reference = .dtors:0x8011DCE0; // type:object size:0x4 scope:global +__fini_cpp_exceptions_reference = .dtors:0x8011DCE4; // type:object size:0x4 scope:global +lbl_8011DD00 = .rodata:0x8011DD00; // type:object size:0x10 scope:local data:4byte +lbl_8011DD10 = .rodata:0x8011DD10; // type:object size:0x10 data:4byte +lbl_8011DD20 = .rodata:0x8011DD20; // type:object size:0xC data:4byte +lbl_8011DD30 = .rodata:0x8011DD30; // type:object size:0x20 data:byte +lbl_8011DD50 = .rodata:0x8011DD50; // type:object size:0x10 data:4byte +lbl_8011DD60 = .rodata:0x8011DD60; // type:object size:0x24 data:4byte +lbl_8011DD84 = .rodata:0x8011DD84; // type:object size:0xC data:4byte +lbl_8011DD90 = .rodata:0x8011DD90; // type:object size:0x20 data:4byte +lbl_8011DDB0 = .rodata:0x8011DDB0; // type:object size:0x20 data:4byte +lbl_8011DDD0 = .rodata:0x8011DDD0; // type:object size:0x5C data:4byte +lbl_8011DE2C = .rodata:0x8011DE2C; // type:object size:0x24 data:4byte +lbl_8011DE50 = .rodata:0x8011DE50; // type:object size:0x10 data:4byte +lbl_8011DE60 = .rodata:0x8011DE60; // type:object size:0x38 data:4byte +lbl_8011DE98 = .rodata:0x8011DE98; // type:object size:0x38 data:4byte +lbl_8011DED0 = .rodata:0x8011DED0; // type:object size:0x20 data:4byte +lbl_8011DEF0 = .rodata:0x8011DEF0; // type:object size:0x10 data:4byte +lbl_8011DF00 = .rodata:0x8011DF00; // type:object size:0x90 data:4byte +lbl_8011DF90 = .rodata:0x8011DF90; // type:object size:0x20 data:4byte +lbl_8011DFB0 = .rodata:0x8011DFB0; // type:object size:0x20 data:4byte +pickSpr = .rodata:0x8011DFD0; // type:object size:0x20 scope:local +handMdl = .rodata:0x8011DFF0; // type:object size:0x20 scope:local +ticketSpr = .rodata:0x8011E010; // type:object size:0x10 scope:local +lbl_8011E020 = .rodata:0x8011E020; // type:object size:0x20 data:4byte +lbl_8011E040 = .rodata:0x8011E040; // type:object size:0x24 +lbl_8011E064 = .rodata:0x8011E064; // type:object size:0x4C +lbl_8011E0B0 = .rodata:0x8011E0B0; // type:object size:0x10 data:4byte +lbl_8011E0C0 = .rodata:0x8011E0C0; // type:object size:0x54 data:4byte +lbl_8011E118 = .rodata:0x8011E118; // type:object size:0x38 data:4byte +lbl_8011E150 = .rodata:0x8011E150; // type:object size:0x3C data:4byte +lbl_8011E18C = .rodata:0x8011E18C; // type:object size:0x14 data:2byte +lbl_8011E1A0 = .rodata:0x8011E1A0; // type:object size:0x20 data:4byte +lbl_8011E1C0 = .rodata:0x8011E1C0; // type:object size:0x20 data:4byte +lbl_8011E1E0 = .rodata:0x8011E1E0; // type:object size:0x20 data:4byte +lbl_8011E200 = .rodata:0x8011E200; // type:object size:0x20 data:4byte +lbl_8011E220 = .rodata:0x8011E220; // type:object size:0xC data:4byte +lbl_8011E22C = .rodata:0x8011E22C; // type:object size:0xC data:4byte +lbl_8011E238 = .rodata:0x8011E238; // type:object size:0xC data:4byte +lbl_8011E244 = .rodata:0x8011E244; // type:object size:0xC data:4byte +bowserMotTbl = .rodata:0x8011E250; // type:object size:0x18 scope:local +lbl_8011E268 = .rodata:0x8011E268; // type:object size:0x10 data:4byte +lbl_8011E278 = .rodata:0x8011E278; // type:object size:0x60 data:4byte +lbl_8011E2D8 = .rodata:0x8011E2D8; // type:object size:0xC data:byte +miniBowserMotTbl = .rodata:0x8011E2E4; // type:object size:0x1C scope:local +lbl_8011E300 = .rodata:0x8011E300; // type:object size:0x24 data:4byte +lbl_8011E324 = .rodata:0x8011E324; // type:object size:0x20 data:4byte +lbl_8011E344 = .rodata:0x8011E344; // type:object size:0x2C data:4byte +lbl_8011E370 = .rodata:0x8011E370; // type:object size:0x10 data:4byte +lbl_8011E380 = .rodata:0x8011E380; // type:object size:0x24 data:4byte +lbl_8011E3A8 = .rodata:0x8011E3A8; // type:object size:0x24 data:4byte +lbl_8011E3D0 = .rodata:0x8011E3D0; // type:object size:0x20 data:4byte +lbl_8011E3F0 = .rodata:0x8011E3F0; // type:object size:0x20 data:4byte +lbl_8011E410 = .rodata:0x8011E410; // type:object size:0x20 data:4byte +lbl_8011E430 = .rodata:0x8011E430; // type:object size:0x10 data:4byte +__THPJpegNaturalOrder = .rodata:0x8011E440; // type:object size:0x50 data:byte +__THPAANScaleFactor = .rodata:0x8011E490; // type:object size:0x40 data:byte +lbl_8011E4D0 = .rodata:0x8011E4D0; // type:object size:0x10 +lbl_8011E4E0 = .rodata:0x8011E4E0; // type:object size:0x10 +__constants = .rodata:0x8011E4F0; // type:object size:0x18 scope:local data:double +lbl_8011E508 = .rodata:0x8011E508; // type:object size:0x54 +lbl_8011E55C = .rodata:0x8011E55C; // type:object size:0x14 +lbl_8011E570 = .rodata:0x8011E570; // type:object size:0x10 +lbl_8011E580 = .rodata:0x8011E580; // type:object size:0x20 +lbl_8011E5A0 = .rodata:0x8011E5A0; // type:object size:0x38 +lbl_8011E5D8 = .rodata:0x8011E5D8; // type:object size:0x40 +fix_pool_sizes = .rodata:0x8011E618; // type:object size:0x18 scope:local data:4byte +lbl_8011E630 = .rodata:0x8011E630; // type:object size:0xE0 +@stringBase0 = .rodata:0x8011E710; // type:object size:0x25 scope:local data:string_table +Zero = .rodata:0x8011E738; // type:object size:0x10 scope:local +bp = .rodata:0x8011E748; // type:object size:0x10 scope:local data:double +dp_h = .rodata:0x8011E758; // type:object size:0x10 scope:local +dp_l = .rodata:0x8011E768; // type:object size:0x10 scope:local +two_over_pi = .rodata:0x8011E778; // type:object size:0x108 scope:local +npio2_hw = .rodata:0x8011E880; // type:object size:0x80 scope:local +init_jk = .rodata:0x8011E900; // type:object size:0x10 scope:local +PIo2 = .rodata:0x8011E910; // type:object size:0x40 scope:local data:double +T = .rodata:0x8011E950; // type:object size:0x68 scope:local data:double +atanhi = .rodata:0x8011E9B8; // type:object size:0x20 scope:local +atanlo = .rodata:0x8011E9D8; // type:object size:0x20 scope:local +aT = .rodata:0x8011E9F8; // type:object size:0x58 scope:local +@62 = .rodata:0x8011EA50; // type:object size:0x1C scope:local data:string +lbl_8011EA70 = .rodata:0x8011EA70; // type:object size:0x20 +gTRKMemMap = .rodata:0x8011EA90; // type:object size:0x10 data:4byte +lbl_8011EAA0 = .rodata:0x8011EAA0; // type:object size:0x28 data:4byte +lbl_8011EAC8 = .rodata:0x8011EAC8; // type:object size:0x28 data:4byte +lbl_8011EAF0 = .rodata:0x8011EAF0; // type:object size:0x28 data:4byte +@154 = .rodata:0x8011EB18; // type:object size:0x21 scope:local data:string +@155 = .rodata:0x8011EB3C; // type:object size:0x24 scope:local data:string +dspMixerCycles = .rodata:0x8011EB60; // type:object size:0x40 +pbOffsets$890 = .rodata:0x8011EBA0; // type:object size:0x18 scope:local +inpColdMIDIDefaults = .rodata:0x8011EBB8; // type:object size:0x88 scope:local +inpWarmMIDIDefaults = .rodata:0x8011EC40; // type:object size:0x88 scope:local data:byte +itdOffTab = .rodata:0x8011ECC8; // type:object size:0x100 scope:local +lbl_8011EDE0 = .data:0x8011EDE0; // type:object size:0x10 scope:local data:string +chanTbl = .data:0x8011EDF0; // type:object size:0x10 scope:local +correctDiskID = .data:0x8011EE00; // type:object size:0x124 scope:local +jumptable_8011EF24 = .data:0x8011EF24; // type:object size:0x34 scope:local +lbl_8011EF58 = .data:0x8011EF58; // type:object size:0x11 data:string +lbl_8011EF69 = .data:0x8011EF69; // type:object size:0x11 data:string +lbl_8011EF7A = .data:0x8011EF7A; // type:object size:0x10 data:string +lbl_8011EF8A = .data:0x8011EF8A; // type:object size:0x10 data:string +lbl_8011EF9A = .data:0x8011EF9A; // type:object size:0x14 data:string +lbl_8011EFAE = .data:0x8011EFAE; // type:object size:0x11 data:string +lbl_8011EFBF = .data:0x8011EFBF; // type:object size:0x10 data:string +lbl_8011EFCF = .data:0x8011EFCF; // type:object size:0xF data:string +lbl_8011EFDE = .data:0x8011EFDE; // type:object size:0x10 data:string +lbl_8011EFEE = .data:0x8011EFEE; // type:object size:0x13 data:string +lbl_8011F001 = .data:0x8011F001; // type:object size:0xF data:string +lbl_8011F010 = .data:0x8011F010; // type:object size:0x13 data:string +lbl_8011F023 = .data:0x8011F023; // type:object size:0x13 data:string +lbl_8011F036 = .data:0x8011F036; // type:object size:0x12 data:string +lbl_8011F048 = .data:0x8011F048; // type:object size:0x10 data:string +lbl_8011F058 = .data:0x8011F058; // type:object size:0x14 data:string +lbl_8011F06C = .data:0x8011F06C; // type:object size:0x14 data:string +lbl_8011F080 = .data:0x8011F080; // type:object size:0x13 data:string +lbl_8011F093 = .data:0x8011F093; // type:object size:0x10 data:string +lbl_8011F0A3 = .data:0x8011F0A3; // type:object size:0x11 data:string +lbl_8011F0B4 = .data:0x8011F0B4; // type:object size:0xE data:string +lbl_8011F0C2 = .data:0x8011F0C2; // type:object size:0x12 data:string +lbl_8011F0D4 = .data:0x8011F0D4; // type:object size:0x11 data:string +lbl_8011F0E5 = .data:0x8011F0E5; // type:object size:0xF data:string +lbl_8011F0F4 = .data:0x8011F0F4; // type:object size:0x13 data:string +lbl_8011F107 = .data:0x8011F107; // type:object size:0x13 data:string +lbl_8011F11A = .data:0x8011F11A; // type:object size:0x12 data:string +lbl_8011F12C = .data:0x8011F12C; // type:object size:0xE data:string +lbl_8011F13A = .data:0x8011F13A; // type:object size:0xE data:string +lbl_8011F148 = .data:0x8011F148; // type:object size:0xE data:string +lbl_8011F156 = .data:0x8011F156; // type:object size:0xE data:string +lbl_8011F164 = .data:0x8011F164; // type:object size:0xE data:string +lbl_8011F172 = .data:0x8011F172; // type:object size:0xE data:string +lbl_8011F180 = .data:0x8011F180; // type:object size:0xE data:string +lbl_8011F18E = .data:0x8011F18E; // type:object size:0xE data:string +lbl_8011F19C = .data:0x8011F19C; // type:object size:0xE data:string +lbl_8011F1AA = .data:0x8011F1AA; // type:object size:0xE data:string +lbl_8011F1B8 = .data:0x8011F1B8; // type:object size:0xE data:string +lbl_8011F1C6 = .data:0x8011F1C6; // type:object size:0xE data:string +lbl_8011F1D4 = .data:0x8011F1D4; // type:object size:0xE data:string +lbl_8011F1E2 = .data:0x8011F1E2; // type:object size:0xE data:string +lbl_8011F1F0 = .data:0x8011F1F0; // type:object size:0xE data:string +lbl_8011F1FE = .data:0x8011F1FE; // type:object size:0xE data:string +lbl_8011F20C = .data:0x8011F20C; // type:object size:0xE data:string +lbl_8011F21A = .data:0x8011F21A; // type:object size:0xE data:string +lbl_8011F228 = .data:0x8011F228; // type:object size:0xE data:string +lbl_8011F236 = .data:0x8011F236; // type:object size:0xE data:string +lbl_8011F244 = .data:0x8011F244; // type:object size:0xE data:string +lbl_8011F252 = .data:0x8011F252; // type:object size:0xE data:string +lbl_8011F260 = .data:0x8011F260; // type:object size:0xE data:string +lbl_8011F26E = .data:0x8011F26E; // type:object size:0xE data:string +lbl_8011F27C = .data:0x8011F27C; // type:object size:0xE data:string +lbl_8011F28A = .data:0x8011F28A; // type:object size:0xE data:string +lbl_8011F298 = .data:0x8011F298; // type:object size:0xE data:string +lbl_8011F2A6 = .data:0x8011F2A6; // type:object size:0xE data:string +lbl_8011F2B4 = .data:0x8011F2B4; // type:object size:0xE data:string +lbl_8011F2C2 = .data:0x8011F2C2; // type:object size:0xE data:string +lbl_8011F2D0 = .data:0x8011F2D0; // type:object size:0xE data:string +lbl_8011F2DE = .data:0x8011F2DE; // type:object size:0xE data:string +lbl_8011F2EC = .data:0x8011F2EC; // type:object size:0xE data:string +lbl_8011F2FA = .data:0x8011F2FA; // type:object size:0xE data:string +lbl_8011F308 = .data:0x8011F308; // type:object size:0xE data:string +lbl_8011F316 = .data:0x8011F316; // type:object size:0xE data:string +lbl_8011F324 = .data:0x8011F324; // type:object size:0xE data:string +lbl_8011F332 = .data:0x8011F332; // type:object size:0xE data:string +lbl_8011F340 = .data:0x8011F340; // type:object size:0xE data:string +lbl_8011F34E = .data:0x8011F34E; // type:object size:0xE data:string +lbl_8011F35C = .data:0x8011F35C; // type:object size:0xE data:string +lbl_8011F36A = .data:0x8011F36A; // type:object size:0xE data:string +lbl_8011F378 = .data:0x8011F378; // type:object size:0xE data:string +lbl_8011F386 = .data:0x8011F386; // type:object size:0xE data:string +lbl_8011F394 = .data:0x8011F394; // type:object size:0xE data:string +lbl_8011F3A2 = .data:0x8011F3A2; // type:object size:0xE data:string +lbl_8011F3B0 = .data:0x8011F3B0; // type:object size:0xE data:string +lbl_8011F3BE = .data:0x8011F3BE; // type:object size:0xE data:string +lbl_8011F3CC = .data:0x8011F3CC; // type:object size:0xE data:string +lbl_8011F3DA = .data:0x8011F3DA; // type:object size:0xE data:string +lbl_8011F3E8 = .data:0x8011F3E8; // type:object size:0xE data:string +lbl_8011F3F6 = .data:0x8011F3F6; // type:object size:0xE data:string +lbl_8011F404 = .data:0x8011F404; // type:object size:0xE data:string +lbl_8011F412 = .data:0x8011F412; // type:object size:0xE data:string +lbl_8011F420 = .data:0x8011F420; // type:object size:0xE data:string +lbl_8011F42E = .data:0x8011F42E; // type:object size:0xE data:string +lbl_8011F43C = .data:0x8011F43C; // type:object size:0xE data:string +lbl_8011F44A = .data:0x8011F44A; // type:object size:0xE data:string +lbl_8011F458 = .data:0x8011F458; // type:object size:0xE data:string +lbl_8011F466 = .data:0x8011F466; // type:object size:0xE data:string +lbl_8011F474 = .data:0x8011F474; // type:object size:0xE data:string +lbl_8011F482 = .data:0x8011F482; // type:object size:0xE data:string +lbl_8011F490 = .data:0x8011F490; // type:object size:0xE data:string +lbl_8011F49E = .data:0x8011F49E; // type:object size:0xE data:string +lbl_8011F4AC = .data:0x8011F4AC; // type:object size:0xE data:string +lbl_8011F4BA = .data:0x8011F4BA; // type:object size:0xF data:string +lbl_8011F4C9 = .data:0x8011F4C9; // type:object size:0x13 data:string +lbl_8011F4DC = .data:0x8011F4DC; // type:object size:0x13 data:string +lbl_8011F4EF = .data:0x8011F4EF; // type:object size:0x12 data:string +lbl_8011F501 = .data:0x8011F501; // type:object size:0xE data:string +lbl_8011F50F = .data:0x8011F50F; // type:object size:0x11 data:string +lbl_8011F520 = .data:0x8011F520; // type:object size:0x10 data:string +lbl_8011F530 = .data:0x8011F530; // type:object size:0x11 data:string +lbl_8011F541 = .data:0x8011F541; // type:object size:0xE data:string +lbl_8011F54F = .data:0x8011F54F; // type:object size:0x10 data:string +lbl_8011F55F = .data:0x8011F55F; // type:object size:0x11 data:string +lbl_8011F570 = .data:0x8011F570; // type:object size:0x11 data:string +lbl_8011F581 = .data:0x8011F581; // type:object size:0x11 data:string +lbl_8011F592 = .data:0x8011F592; // type:object size:0x10 data:string +lbl_8011F5A2 = .data:0x8011F5A2; // type:object size:0xF data:string +lbl_8011F5B1 = .data:0x8011F5B1; // type:object size:0x13 data:string +lbl_8011F5C4 = .data:0x8011F5C4; // type:object size:0x13 data:string +lbl_8011F5D7 = .data:0x8011F5D7; // type:object size:0x12 data:string +lbl_8011F5E9 = .data:0x8011F5E9; // type:object size:0x11 data:string +lbl_8011F5FA = .data:0x8011F5FA; // type:object size:0x10 data:string +lbl_8011F60A = .data:0x8011F60A; // type:object size:0xD data:string +lbl_8011F617 = .data:0x8011F617; // type:object size:0x11 data:string +lbl_8011F628 = .data:0x8011F628; // type:object size:0xF data:string +lbl_8011F637 = .data:0x8011F637; // type:object size:0xF data:string +lbl_8011F646 = .data:0x8011F646; // type:object size:0xF data:string +lbl_8011F655 = .data:0x8011F655; // type:object size:0xD data:string +lbl_8011F662 = .data:0x8011F662; // type:object size:0xD data:string +lbl_8011F66F = .data:0x8011F66F; // type:object size:0xD data:string +lbl_8011F67C = .data:0x8011F67C; // type:object size:0xD data:string +lbl_8011F689 = .data:0x8011F689; // type:object size:0xD data:string +lbl_8011F696 = .data:0x8011F696; // type:object size:0xD data:string +lbl_8011F6A3 = .data:0x8011F6A3; // type:object size:0xD data:string +lbl_8011F6B0 = .data:0x8011F6B0; // type:object size:0xD data:string +lbl_8011F6BD = .data:0x8011F6BD; // type:object size:0xD data:string +lbl_8011F6CA = .data:0x8011F6CA; // type:object size:0x11 data:string +lbl_8011F6DB = .data:0x8011F6DB; // type:object size:0x15 data:string +lbl_8011F6F0 = .data:0x8011F6F0; // type:object size:0x15 data:string +lbl_8011F705 = .data:0x8011F705; // type:object size:0x14 data:string +lbl_8011F719 = .data:0x8011F719; // type:object size:0xF data:string +lbl_8011F728 = .data:0x8011F728; // type:object size:0x13 data:string +lbl_8011F73B = .data:0x8011F73B; // type:object size:0x13 data:string +lbl_8011F74E = .data:0x8011F74E; // type:object size:0x12 data:string +lbl_8011F760 = .data:0x8011F760; // type:object size:0xD data:string +lbl_8011F76D = .data:0x8011F76D; // type:object size:0xF data:string +lbl_8011F77C = .data:0x8011F77C; // type:object size:0x13 data:string +lbl_8011F78F = .data:0x8011F78F; // type:object size:0x13 data:string +lbl_8011F7A2 = .data:0x8011F7A2; // type:object size:0x12 data:string +lbl_8011F7B4 = .data:0x8011F7B4; // type:object size:0x10 +DataDirStat = .data:0x8011F7C4; // type:object size:0x468 scope:local data:4byte +lbl_8011FC2C = .data:0x8011FC2C; // type:object size:0x1D data:string +lbl_8011FC49 = .data:0x8011FC49; // type:object size:0x1F data:string +lbl_8011FC68 = .data:0x8011FC68; // type:object size:0x1D data:string +lbl_8011FC85 = .data:0x8011FC85; // type:object size:0x12 data:string +lbl_8011FC97 = .data:0x8011FC97; // type:object size:0xD data:string +lbl_8011FCA4 = .data:0x8011FCA4; // type:object size:0x1A data:string +lbl_8011FCBE = .data:0x8011FCBE; // type:object size:0x122 +lbl_8011FDE0 = .data:0x8011FDE0; // type:object size:0x20 +ank8x8_4b = .data:0x8011FE00; // type:object size:0x2000 align:32 +lbl_80121E00 = .data:0x80121E00; // type:object size:0x150 scope:local +HeapSizeTbl = .data:0x80121F50; // type:object size:0x78 scope:local +lbl_80121FC8 = .data:0x80121FC8; // type:object size:0x50 scope:local +lbl_80122018 = .data:0x80122018; // type:object size:0x128 scope:local +fcoltbl = .data:0x80122140; // type:object size:0x40 scope:local align:32 +lbl_80122180 = .data:0x80122180; // type:object size:0x1F data:string +lbl_8012219F = .data:0x8012219F; // type:object size:0x31 +lbl_801221D0 = .data:0x801221D0; // type:object size:0x12 +bitSizeTbl = .data:0x801221E2; // type:object size:0x16 scope:local +lbl_801221F8 = .data:0x801221F8; // type:object size:0xF8 scope:local +jumptable_801222F0 = .data:0x801222F0; // type:object size:0x2C scope:local +jumptable_80122320 = .data:0x80122320; // type:object size:0x28 scope:local +jumptable_80122348 = .data:0x80122348; // type:object size:0x2C scope:local +lbl_80122374 = .data:0x80122374; // type:object size:0x1C +texMtxTbl = .data:0x80122390; // type:object size:0xC data:byte +jumptable_8012239C = .data:0x8012239C; // type:object size:0x28 scope:local +lbl_801223C4 = .data:0x801223C4; // type:object size:0x18 data:string +jumptable_801223DC = .data:0x801223DC; // type:object size:0x28 scope:local +jumptable_80122404 = .data:0x80122404; // type:object size:0x28 scope:local +refMtx = .data:0x8012242C; // type:object size:0x30 scope:local +kColorSelTbl = .data:0x8012245C; // type:object size:0x30 scope:local +kColorTbl = .data:0x8012248C; // type:object size:0x10 scope:local +kColorSelTbl2 = .data:0x8012249C; // type:object size:0x10 scope:local +kColorSelATbl = .data:0x801224AC; // type:object size:0x10 scope:local +lbl_801224BC = .data:0x801224BC; // type:object size:0x14 +jumptable_801224D0 = .data:0x801224D0; // type:object size:0x30 scope:local +jumptable_80122500 = .data:0x80122500; // type:object size:0x28 scope:local +jumptable_80122528 = .data:0x80122528; // type:object size:0x28 scope:local +lbl_80122550 = .data:0x80122550; // type:object size:0x19 data:string +lbl_80122569 = .data:0x80122569; // type:object size:0xA data:string +lbl_80122573 = .data:0x80122573; // type:object size:0x2D +refMapData0 = .data:0x801225A0; // type:object size:0x1240 align:32 noreloc +refMapData1 = .data:0x801237E0; // type:object size:0x1100 align:32 noreloc +refMapData2 = .data:0x801248E0; // type:object size:0x2080 align:32 noreloc +refMapData3 = .data:0x80126960; // type:object size:0x2080 align:32 noreloc +refMapData4 = .data:0x801289E0; // type:object size:0x2080 align:32 noreloc +toonMapData = .data:0x8012AA60; // type:object size:0x880 align:32 noreloc +toonMapData2 = .data:0x8012B2E0; // type:object size:0x1080 align:32 noreloc +hiliteData = .data:0x8012C360; // type:object size:0x480 align:32 noreloc +hiliteData2 = .data:0x8012C7E0; // type:object size:0x480 align:32 noreloc +hiliteData3 = .data:0x8012CC60; // type:object size:0x480 align:32 noreloc +hiliteData4 = .data:0x8012D0E0; // type:object size:0x480 align:32 noreloc +lbl_8012D560 = .data:0x8012D560; // type:object size:0x1B data:string +lbl_8012D57B = .data:0x8012D57B; // type:object size:0x16 data:string +lbl_8012D591 = .data:0x8012D591; // type:object size:0x21 data:string +lbl_8012D5B2 = .data:0x8012D5B2; // type:object size:0x26 +defCamera = .data:0x8012D5D8; // type:object size:0x58 data:4byte +lbl_8012D630 = .data:0x8012D630; // type:object size:0x28 +lbl_8012D658 = .data:0x8012D658; // type:object size:0x1C data:string +lbl_8012D674 = .data:0x8012D674; // type:object size:0x1C +jumptable_8012D690 = .data:0x8012D690; // type:object size:0x2C scope:local +jumptable_8012D6BC = .data:0x8012D6BC; // type:object size:0x68 scope:local +jumptable_8012D724 = .data:0x8012D724; // type:object size:0xF0 scope:local +jumptable_8012D814 = .data:0x8012D814; // type:object size:0x20 scope:local +lbl_8012D838 = .data:0x8012D838; // type:object size:0x15 data:string +lbl_8012D84D = .data:0x8012D84D; // type:object size:0x1F data:string +lbl_8012D86C = .data:0x8012D86C; // type:object size:0x18 +basePos = .data:0x8012D884; // type:object size:0x30 scope:local +baseST = .data:0x8012D8B4; // type:object size:0x20 scope:local +jitterTbl = .data:0x8012D8D4; // type:object size:0x24 scope:local +jumptable_8012D8F8 = .data:0x8012D8F8; // type:object size:0x1C scope:local +lbl_8012D918 = .data:0x8012D918; // type:object size:0xCA +lbl_8012D9E2 = .data:0x8012D9E2; // type:object size:0x1C data:string +lbl_8012D9FE = .data:0x8012D9FE; // type:object size:0x1C data:string +lbl_8012DA1A = .data:0x8012DA1A; // type:object size:0x1D data:string +lbl_8012DA37 = .data:0x8012DA37; // type:object size:0x18 data:string +lbl_8012DA4F = .data:0x8012DA4F; // type:object size:0xC data:string +lbl_8012DA5B = .data:0x8012DA5B; // type:object size:0x45 +lbl_8012DAA0 = .data:0x8012DAA0; // type:object size:0x45 +lbl_8012DAE5 = .data:0x8012DAE5; // type:object size:0x19 data:string +lbl_8012DAFE = .data:0x8012DAFE; // type:object size:0x17 data:string +lbl_8012DB15 = .data:0x8012DB15; // type:object size:0x1B3 +XFB_Colors = .data:0x8012DCC8; // type:object size:0xF scope:local data:byte +Ascii8x8_1bpp = .data:0x8012DCD7; // type:object size:0x800 scope:local align:1 +lbl_8012E4D7 = .data:0x8012E4D7; // type:object size:0x19 +lbl_8012E4F0 = .data:0x8012E4F0; // type:object size:0x21A +lbl_8012E70A = .data:0x8012E70A; // type:object size:0xB data:string +lbl_8012E715 = .data:0x8012E715; // type:object size:0x273 +lbl_8012E988 = .data:0x8012E988; // type:object size:0x12 data:string +lbl_8012E99A = .data:0x8012E99A; // type:object size:0xD6 +sndGrpTable = .data:0x8012EA70; // type:object size:0x5B0 +lbl_8012F020 = .data:0x8012F020; // type:object size:0x94 +lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string +lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A +lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31 +seqInfoTbl = .data:0x8012F130; // type:object size:0x1DC scope:local +seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local +mgSeqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local +lbl_8012F336 = .data:0x8012F336; // type:object size:0x53 scope:local data:string +lbl_8012F389 = .data:0x8012F389; // type:object size:0x9 scope:local data:string +lbl_8012F392 = .data:0x8012F392; // type:object size:0x9 scope:local data:string +seqFontAlphaTbl = .data:0x8012F39B; // type:object size:0x35 scope:local data:string +seqFontKanaTbl = .data:0x8012F3D0; // type:object size:0x52 scope:local data:string +seqFontNumTbl = .data:0x8012F422; // type:object size:0xB scope:local data:string +letterBufTbl = .data:0x8012F430; // type:object size:0x14 scope:local +wordMgTbl = .data:0x8012F444; // type:object size:0x18 scope:local +letterOfs$909 = .data:0x8012F45C; // type:object size:0x40 scope:local +letterOfs$1386 = .data:0x8012F49C; // type:object size:0x1C scope:local +letterOfs$1761 = .data:0x8012F4B8; // type:object size:0x38 scope:local +lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0xA scope:local data:string +winCharNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local +lbl_8012F574 = .data:0x8012F574; // type:object size:0xA scope:local data:string +winWordTbl = .data:0x8012F580; // type:object size:0x18 scope:local +winPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local +practiceTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local +yPosTbl$2366 = .data:0x8012F694; // type:object size:0xC scope:local +seqStartFXTbl = .data:0x8012F6A0; // type:object size:0xF0 scope:local +lbl_8012F790 = .data:0x8012F790; // type:object size:0x15 data:string +lbl_8012F7A5 = .data:0x8012F7A5; // type:object size:0x10 data:string +lbl_8012F7B5 = .data:0x8012F7B5; // type:object size:0x13 data:string +lbl_8012F7C8 = .data:0x8012F7C8; // type:object size:0x10 data:string +lbl_8012F7D8 = .data:0x8012F7D8; // type:object size:0x10 data:string +lbl_8012F7E8 = .data:0x8012F7E8; // type:object size:0x10 data:string +lbl_8012F7F8 = .data:0x8012F7F8; // type:object size:0x10 data:string +lbl_8012F808 = .data:0x8012F808; // type:object size:0x10 data:string +lbl_8012F818 = .data:0x8012F818; // type:object size:0x10 data:string +lbl_8012F828 = .data:0x8012F828; // type:object size:0x10 data:string +lbl_8012F838 = .data:0x8012F838; // type:object size:0x10 data:string +lbl_8012F848 = .data:0x8012F848; // type:object size:0x10 data:string +lbl_8012F858 = .data:0x8012F858; // type:object size:0x10 data:string +lbl_8012F868 = .data:0x8012F868; // type:object size:0x10 data:string +lbl_8012F878 = .data:0x8012F878; // type:object size:0x10 data:string +lbl_8012F888 = .data:0x8012F888; // type:object size:0x10 data:string +lbl_8012F898 = .data:0x8012F898; // type:object size:0x10 data:string +lbl_8012F8A8 = .data:0x8012F8A8; // type:object size:0x10 data:string +lbl_8012F8B8 = .data:0x8012F8B8; // type:object size:0x10 data:string +lbl_8012F8C8 = .data:0x8012F8C8; // type:object size:0x10 data:string +lbl_8012F8D8 = .data:0x8012F8D8; // type:object size:0x10 data:string +lbl_8012F8E8 = .data:0x8012F8E8; // type:object size:0x10 data:string +lbl_8012F8F8 = .data:0x8012F8F8; // type:object size:0x10 data:string +lbl_8012F908 = .data:0x8012F908; // type:object size:0x10 data:string +lbl_8012F918 = .data:0x8012F918; // type:object size:0x10 data:string +lbl_8012F928 = .data:0x8012F928; // type:object size:0x10 data:string +lbl_8012F938 = .data:0x8012F938; // type:object size:0x10 data:string +lbl_8012F948 = .data:0x8012F948; // type:object size:0x10 data:string +lbl_8012F958 = .data:0x8012F958; // type:object size:0x10 data:string +lbl_8012F968 = .data:0x8012F968; // type:object size:0x10 data:string +lbl_8012F978 = .data:0x8012F978; // type:object size:0x10 data:string +lbl_8012F988 = .data:0x8012F988; // type:object size:0x10 data:string +lbl_8012F998 = .data:0x8012F998; // type:object size:0x10 data:string +lbl_8012F9A8 = .data:0x8012F9A8; // type:object size:0x10 data:string +lbl_8012F9B8 = .data:0x8012F9B8; // type:object size:0x10 data:string +lbl_8012F9C8 = .data:0x8012F9C8; // type:object size:0x10 data:string +lbl_8012F9D8 = .data:0x8012F9D8; // type:object size:0x10 data:string +lbl_8012F9E8 = .data:0x8012F9E8; // type:object size:0x10 data:string +lbl_8012F9F8 = .data:0x8012F9F8; // type:object size:0x10 data:string +lbl_8012FA08 = .data:0x8012FA08; // type:object size:0x10 data:string +lbl_8012FA18 = .data:0x8012FA18; // type:object size:0x10 data:string +lbl_8012FA28 = .data:0x8012FA28; // type:object size:0x10 data:string +lbl_8012FA38 = .data:0x8012FA38; // type:object size:0x10 data:string +lbl_8012FA48 = .data:0x8012FA48; // type:object size:0x10 data:string +lbl_8012FA58 = .data:0x8012FA58; // type:object size:0x10 data:string +lbl_8012FA68 = .data:0x8012FA68; // type:object size:0x10 data:string +lbl_8012FA78 = .data:0x8012FA78; // type:object size:0x10 data:string +lbl_8012FA88 = .data:0x8012FA88; // type:object size:0x10 data:string +lbl_8012FA98 = .data:0x8012FA98; // type:object size:0x10 data:string +lbl_8012FAA8 = .data:0x8012FAA8; // type:object size:0x10 data:string +lbl_8012FAB8 = .data:0x8012FAB8; // type:object size:0x10 data:string +lbl_8012FAC8 = .data:0x8012FAC8; // type:object size:0x10 data:string +lbl_8012FAD8 = .data:0x8012FAD8; // type:object size:0x10 data:string +lbl_8012FAE8 = .data:0x8012FAE8; // type:object size:0x10 data:string +lbl_8012FAF8 = .data:0x8012FAF8; // type:object size:0x10 data:string +lbl_8012FB08 = .data:0x8012FB08; // type:object size:0x10 data:string +lbl_8012FB18 = .data:0x8012FB18; // type:object size:0x10 data:string +lbl_8012FB28 = .data:0x8012FB28; // type:object size:0x10 data:string +lbl_8012FB38 = .data:0x8012FB38; // type:object size:0x10 data:string +lbl_8012FB48 = .data:0x8012FB48; // type:object size:0x10 data:string +lbl_8012FB58 = .data:0x8012FB58; // type:object size:0x10 data:string +lbl_8012FB68 = .data:0x8012FB68; // type:object size:0x10 data:string +lbl_8012FB78 = .data:0x8012FB78; // type:object size:0x10 data:string +lbl_8012FB88 = .data:0x8012FB88; // type:object size:0x10 data:string +lbl_8012FB98 = .data:0x8012FB98; // type:object size:0x10 data:string +lbl_8012FBA8 = .data:0x8012FBA8; // type:object size:0x10 data:string +lbl_8012FBB8 = .data:0x8012FBB8; // type:object size:0x10 data:string +lbl_8012FBC8 = .data:0x8012FBC8; // type:object size:0x10 data:string +lbl_8012FBD8 = .data:0x8012FBD8; // type:object size:0x10 data:string +lbl_8012FBE8 = .data:0x8012FBE8; // type:object size:0x10 data:string +lbl_8012FBF8 = .data:0x8012FBF8; // type:object size:0x10 data:string +lbl_8012FC08 = .data:0x8012FC08; // type:object size:0x10 data:string +lbl_8012FC18 = .data:0x8012FC18; // type:object size:0x12 data:string +lbl_8012FC2A = .data:0x8012FC2A; // type:object size:0x15 data:string +lbl_8012FC3F = .data:0x8012FC3F; // type:object size:0x13 data:string +lbl_8012FC52 = .data:0x8012FC52; // type:object size:0x10 data:string +lbl_8012FC62 = .data:0x8012FC62; // type:object size:0x12 data:string +lbl_8012FC74 = .data:0x8012FC74; // type:object size:0x13 data:string +lbl_8012FC87 = .data:0x8012FC87; // type:object size:0x13 data:string +lbl_8012FC9A = .data:0x8012FC9A; // type:object size:0x13 data:string +lbl_8012FCAD = .data:0x8012FCAD; // type:object size:0x12 data:string +lbl_8012FCBF = .data:0x8012FCBF; // type:object size:0xF data:string +lbl_8012FCCE = .data:0x8012FCCE; // type:object size:0xF data:string +lbl_8012FCDD = .data:0x8012FCDD; // type:object size:0x10 data:string +lbl_8012FCED = .data:0x8012FCED; // type:object size:0x12 data:string +lbl_8012FCFF = .data:0x8012FCFF; // type:object size:0xF data:string +lbl_8012FD0E = .data:0x8012FD0E; // type:object size:0x13 data:string +lbl_8012FD21 = .data:0x8012FD21; // type:object size:0x11 data:string +lbl_8012FD32 = .data:0x8012FD32; // type:object size:0x15 data:string +lbl_8012FD47 = .data:0x8012FD47; // type:object size:0xF data:string +lbl_8012FD56 = .data:0x8012FD56; // type:object size:0xF data:string +lbl_8012FD65 = .data:0x8012FD65; // type:object size:0xF data:string +lbl_8012FD74 = .data:0x8012FD74; // type:object size:0xF data:string +lbl_8012FD83 = .data:0x8012FD83; // type:object size:0xF data:string +lbl_8012FD92 = .data:0x8012FD92; // type:object size:0xF data:string +lbl_8012FDA1 = .data:0x8012FDA1; // type:object size:0xF data:string +lbl_8012FDB0 = .data:0x8012FDB0; // type:object size:0xF data:string +lbl_8012FDBF = .data:0x8012FDBF; // type:object size:0xF data:string +lbl_8012FDCE = .data:0x8012FDCE; // type:object size:0x12 +_ovltbl = .data:0x8012FDE0; // type:object size:0x320 +lbl_80130100 = .data:0x80130100; // type:object size:0x20 +fadeInFunc = .data:0x80130120; // type:object size:0xC scope:local +fadeOutFunc = .data:0x8013012C; // type:object size:0xC scope:local +spcFontTbl = .data:0x80130140; // type:object size:0x170 scope:local +charWETbl = .data:0x801302B0; // type:object size:0x130 +charWJTbl = .data:0x801303E0; // type:object size:0x140 +charColPal = .data:0x80130520; // type:object size:0x3C scope:local align:32 +frameFileTbl = .data:0x8013055C; // type:object size:0x10 scope:local +lbl_8013056C = .data:0x8013056C; // type:object size:0xE data:string +lbl_8013057A = .data:0x8013057A; // type:object size:0xF data:string +lbl_80130589 = .data:0x80130589; // type:object size:0x10 data:string +lbl_80130599 = .data:0x80130599; // type:object size:0x13 +mesDataTbl = .data:0x801305AC; // type:object size:0x10 scope:local +winVoiceTbl = .data:0x801305BC; // type:object size:0x54 scope:local +lbl_80130610 = .data:0x80130610; // type:object size:0x13 data:string +lbl_80130623 = .data:0x80130623; // type:object size:0x19 +winPortraitTbl = .data:0x8013063C; // type:object size:0x4C scope:local +lbl_80130688 = .data:0x80130688; // type:object size:0x26 data:string +lbl_801306AE = .data:0x801306AE; // type:object size:0x2A +lbl_801306D8 = .data:0x801306D8; // type:object size:0x19 data:string +lbl_801306F1 = .data:0x801306F1; // type:object size:0x14 data:string +lbl_80130705 = .data:0x80130705; // type:object size:0x93 +lbl_80130798 = .data:0x80130798; // type:object size:0x30 +effectDataTbl = .data:0x801307C8; // type:object size:0x60 scope:local +charDirTbl = .data:0x80130828; // type:object size:0x60 scope:local +effectDustParam = .data:0x80130888; // type:object size:0x38 scope:local +effectDotParam = .data:0x801308C0; // type:object size:0x38 scope:local +effectStarParam = .data:0x801308F8; // type:object size:0x38 scope:local +effectWarnParam = .data:0x80130930; // type:object size:0x38 scope:local +effectSmokeParam = .data:0x80130968; // type:object size:0x38 scope:local +lbl_801309A0 = .data:0x801309A0; // type:object size:0x20 scope:local +lbl_801309C0 = .data:0x801309C0; // type:object size:0x20 scope:local +lbl_801309E0 = .data:0x801309E0; // type:object size:0x10 scope:local +jumptable_801309F0 = .data:0x801309F0; // type:object size:0x1E8 scope:local +voiceParam = .data:0x80130BD8; // type:object size:0x40 scope:local +lbl_80130C18 = .data:0x80130C18; // type:object size:0xE data:string +lbl_80130C26 = .data:0x80130C26; // type:object size:0xE data:string +lbl_80130C34 = .data:0x80130C34; // type:object size:0xE data:string +lbl_80130C42 = .data:0x80130C42; // type:object size:0xD data:string +lbl_80130C4F = .data:0x80130C4F; // type:object size:0xD data:string +lbl_80130C5C = .data:0x80130C5C; // type:object size:0xB data:string +lbl_80130C67 = .data:0x80130C67; // type:object size:0xF data:string +lbl_80130C76 = .data:0x80130C76; // type:object size:0xF data:string +lbl_80130C85 = .data:0x80130C85; // type:object size:0xF data:string +lbl_80130C94 = .data:0x80130C94; // type:object size:0xF data:string +lbl_80130CA3 = .data:0x80130CA3; // type:object size:0xF data:string +lbl_80130CB2 = .data:0x80130CB2; // type:object size:0xF data:string +lbl_80130CC1 = .data:0x80130CC1; // type:object size:0x9 data:string +lbl_80130CCA = .data:0x80130CCA; // type:object size:0xD data:string +lbl_80130CD7 = .data:0x80130CD7; // type:object size:0x17 data:string +lbl_80130CEE = .data:0x80130CEE; // type:object size:0x17 data:string +lbl_80130D05 = .data:0x80130D05; // type:object size:0xE data:string +lbl_80130D13 = .data:0x80130D13; // type:object size:0xE data:string +lbl_80130D21 = .data:0x80130D21; // type:object size:0xD data:string +lbl_80130D2E = .data:0x80130D2E; // type:object size:0xE data:string +lbl_80130D3C = .data:0x80130D3C; // type:object size:0xE data:string +lbl_80130D4A = .data:0x80130D4A; // type:object size:0xF data:string +lbl_80130D59 = .data:0x80130D59; // type:object size:0xF data:string +lbl_80130D68 = .data:0x80130D68; // type:object size:0x18 data:string +lbl_80130D80 = .data:0x80130D80; // type:object size:0x18 data:string +lbl_80130D98 = .data:0x80130D98; // type:object size:0xE data:string +lbl_80130DA6 = .data:0x80130DA6; // type:object size:0x18 data:string +lbl_80130DBE = .data:0x80130DBE; // type:object size:0x1A +charTexNameTbl = .data:0x80130DD8; // type:object size:0x100 +lbl_80130ED8 = .data:0x80130ED8; // type:object size:0xD data:string +lbl_80130EE5 = .data:0x80130EE5; // type:object size:0xD data:string +lbl_80130EF2 = .data:0x80130EF2; // type:object size:0xE data:string +lbl_80130F00 = .data:0x80130F00; // type:object size:0xE data:string +lbl_80130F0E = .data:0x80130F0E; // type:object size:0x12 +hookNameTbl = .data:0x80130F20; // type:object size:0xA0 scope:local +modelParticleParam = .data:0x80130FC0; // type:object size:0x38 scope:local +coinParticleParam = .data:0x80130FF8; // type:object size:0x38 scope:local +lbl_80131030 = .data:0x80131030; // type:object size:0x38 scope:local +lbl_80131068 = .data:0x80131068; // type:object size:0x38 scope:local +lbl_801310A0 = .data:0x801310A0; // type:object size:0x1C +lbl_801310BC = .data:0x801310BC; // type:object size:0x38 scope:local +lbl_801310F4 = .data:0x801310F4; // type:object size:0x38 scope:local +lbl_8013112C = .data:0x8013112C; // type:object size:0x1A data:string +lbl_80131146 = .data:0x80131146; // type:object size:0x12 scope:local +lbl_80131158 = .data:0x80131158; // type:object size:0x12 scope:local +lbl_8013116A = .data:0x8013116A; // type:object size:0x12 scope:local +lbl_8013117C = .data:0x8013117C; // type:object size:0x12 scope:local +lbl_8013118E = .data:0x8013118E; // type:object size:0xE scope:local +lbl_8013119C = .data:0x8013119C; // type:object size:0xE scope:local +lbl_801311AA = .data:0x801311AA; // type:object size:0xE scope:local +lbl_801311B8 = .data:0x801311B8; // type:object size:0xE scope:local +lbl_801311C6 = .data:0x801311C6; // type:object size:0xE scope:local +lbl_801311D4 = .data:0x801311D4; // type:object size:0xE scope:local +VolumeTable = .data:0x801311E8; // type:object size:0x100 scope:local +lbl_801312E8 = .data:0x801312E8; // type:object size:0x4D +lbl_80131335 = .data:0x80131335; // type:object size:0x1B +mgInfoTbl = .data:0x80131350; // type:object size:0xE00 data:2byte +commentTbl = .data:0x80132150; // type:object size:0x40 scope:local +lbl_80132190 = .data:0x80132190; // type:object size:0xC data:string +lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string +lbl_801321A8 = .data:0x801321A8; // type:object size:0xC data:string +SaveFileNameTbl = .data:0x801321B4; // type:object size:0xC +jumptable_801321C0 = .data:0x801321C0; // type:object size:0x34 scope:local +SR_PreRstChk = .data:0x801321F8; // type:object size:0x10 scope:local +coveropen_en = .data:0x80132208; // type:object size:0x1384 noreloc +fatalerror_en = .data:0x8013358C; // type:object size:0x1384 noreloc +loading_en = .data:0x80134910; // type:object size:0x1384 noreloc +nodisc_en = .data:0x80135C94; // type:object size:0x1384 noreloc +retryerror_en = .data:0x80137018; // type:object size:0x1384 noreloc +wrongdisc_en = .data:0x8013839C; // type:object size:0x1384 noreloc +jumptable_80139720 = .data:0x80139720; // type:object size:0x34 scope:local +bmpMes$493 = .data:0x80139754; // type:object size:0x18 scope:local +lbl_8013976C = .data:0x8013976C; // type:object size:0x13 data:string +lbl_8013977F = .data:0x8013977F; // type:object size:0x12 data:string +camViewTbl = .data:0x80139798; // type:object size:0x24 scope:local +jumptable_801397BC = .data:0x801397BC; // type:object size:0x24 scope:local +confettiLightTbl = .data:0x801397E0; // type:object size:0x48 scope:local +last5GfxSprTbl = .data:0x80139828; // type:object size:0xC scope:local +last5GfxPosTbl = .data:0x80139834; // type:object size:0x30 scope:local +tauntActiveFXTbl = .data:0x80139864; // type:object size:0x10 scope:local +tauntFXTbl = .data:0x80139874; // type:object size:0x24 scope:local +diceJumpObj = .data:0x80139898; // type:object size:0x10 scope:local +motDoneF = .data:0x801398A8; // type:object size:0x10 scope:local +bowserSuitMot = .data:0x801398B8; // type:object size:0xA scope:local data:2byte +lbl_801398C2 = .data:0x801398C2; // type:object size:0x17 data:string +lbl_801398D9 = .data:0x801398D9; // type:object size:0x17 data:string +lbl_801398F0 = .data:0x801398F0; // type:object size:0xE data:string +lbl_801398FE = .data:0x801398FE; // type:object size:0xE data:string +lbl_8013990C = .data:0x8013990C; // type:object size:0x18 data:string +lbl_80139924 = .data:0x80139924; // type:object size:0x18 data:string +eyeMatTbl = .data:0x8013993C; // type:object size:0x40 scope:local +lbl_8013997C = .data:0x8013997C; // type:object size:0x20 +boardMotTbl = .data:0x8013999C; // type:object size:0x20 scope:local +boardMotRevTbl = .data:0x801399BC; // type:object size:0x20 scope:local +bowserSuitCharMdlTbl = .data:0x801399DC; // type:object size:0x20 scope:local +bowserSuitMotTbl = .data:0x801399FC; // type:object size:0x14 scope:local +sparkMotTbl = .data:0x80139A10; // type:object size:0x20 scope:local +boardSparkSfxTbl = .data:0x80139A30; // type:object size:0x20 scope:local +boardSparkSfxTblAlt = .data:0x80139A50; // type:object size:0x20 scope:local +megaSquishObj = .data:0x80139A70; // type:object size:0x10 scope:local +megaSquishSfxTbl = .data:0x80139A80; // type:object size:0x20 scope:local +PortraitTbl = .data:0x80139AA0; // type:object size:0x24 scope:local +StarPortraitTbl = .data:0x80139AC4; // type:object size:0x24 scope:local +boardMusTbl = .data:0x80139AE8; // type:object size:0x12 scope:local +comItemPreferTbl = .data:0x80139B00; // type:object size:0x60 scope:local +comItemUseCheckFuncTbl = .data:0x80139B60; // type:object size:0x38 scope:local +comJunctionDirTbl = .data:0x80139B98; // type:object size:0x30 scope:local +overhead2DPos = .data:0x80139BC8; // type:object size:0x28 scope:local +mapViewMinZ = .data:0x80139BF0; // type:object size:0x24 scope:local +mapViewMaxZ = .data:0x80139C14; // type:object size:0x24 scope:local +mapViewMinX = .data:0x80139C38; // type:object size:0x24 scope:local +mapViewMaxX = .data:0x80139C5C; // type:object size:0x24 scope:local +overheadCamZoom = .data:0x80139C80; // type:object size:0x24 scope:local +overheadCamPosZ = .data:0x80139CA4; // type:object size:0x24 scope:local +spaceImgIdx = .data:0x80139CC8; // type:object size:0xC scope:local +spaceHiliteImgIdx = .data:0x80139CD4; // type:object size:0xC scope:local +jumptable_80139CE0 = .data:0x80139CE0; // type:object size:0x28 scope:local +hostMessTbl = .data:0x80139D08; // type:object size:0x24 scope:local +itemPriceTbl = .data:0x80139D2C; // type:object size:0x10 scope:local data:byte +shopMotTbl = .data:0x80139D3C; // type:object size:0x6C scope:local +lbl_80139DA8 = .data:0x80139DA8; // type:object size:0xA data:string +itemPrioTbl = .data:0x80139DB2; // type:object size:0x8C scope:local data:byte +rankItemGroupTbl = .data:0x80139E3E; // type:object size:0x18 scope:local data:byte +cursorPosTbl = .data:0x80139E58; // type:object size:0x30 scope:local data:float +comInputDraw1 = .data:0x80139E88; // type:object size:0xEE scope:local data:2byte +comInputDraw2 = .data:0x80139F76; // type:object size:0xBA scope:local data:2byte +comInputBall = .data:0x8013A030; // type:object size:0xCE scope:local data:2byte +lbl_8013A0FE = .data:0x8013A0FE; // type:object size:0xC data:string +lbl_8013A10A = .data:0x8013A10A; // type:object size:0xA data:string +lbl_8013A114 = .data:0x8013A114; // type:object size:0x9 data:string +lbl_8013A11D = .data:0x8013A11D; // type:object size:0xE data:string +lbl_8013A12B = .data:0x8013A12B; // type:object size:0xA data:string +lbl_8013A135 = .data:0x8013A135; // type:object size:0xB data:string +jumptable_8013A140 = .data:0x8013A140; // type:object size:0x24 scope:local +ticketObj = .data:0x8013A164; // type:object size:0x30 scope:local +ticketPrize = .data:0x8013A194; // type:object size:0xC scope:local +handLastPos = .data:0x8013A1A0; // type:object size:0xC scope:local data:4byte +loseSoundTbl = .data:0x8013A1AC; // type:object size:0x20 scope:local +loseMotTbl = .data:0x8013A1CC; // type:object size:0x20 scope:local +coinChgObj = .data:0x8013A1F0; // type:object size:0x10 scope:local +coinDigitMdl = .data:0x8013A200; // type:object size:0x28 scope:local +jumptable_8013A228 = .data:0x8013A228; // type:object size:0x1C scope:local +wheelSprTbl = .data:0x8013A248; // type:object size:0x28 scope:local +wheelSprPrio = .data:0x8013A270; // type:object size:0xE scope:local data:byte +wheelCharIconTbl = .data:0x8013A280; // type:object size:0x20 scope:local +lbl_8013A2A0 = .data:0x8013A2A0; // type:object size:0xF data:string +boardStarSndTbl = .data:0x8013A2B0; // type:object size:0x20 +hostMotTbl = .data:0x8013A2D0; // type:object size:0x48 scope:local +starEffParam = .data:0x8013A318; // type:object size:0x50 scope:local noreloc +diceObj = .data:0x8013A368; // type:object size:0xC scope:local data:4byte +diceDigitObj = .data:0x8013A374; // type:object size:0xC scope:local data:4byte +diceSndStatus = .data:0x8013A380; // type:object size:0xC scope:local +diceEffParam = .data:0x8013A38C; // type:object size:0x50 scope:local +diceDigitMdlTbl = .data:0x8013A3DC; // type:object size:0x28 scope:local +uiStatus = .data:0x8013A408; // type:object size:0x70 scope:local data:4byte +statusSprTbl = .data:0x8013A478; // type:object size:0x2C scope:local +statusSprPrioTbl = .data:0x8013A4A4; // type:object size:0x18 scope:local +statusHideOfsTbl = .data:0x8013A4BC; // type:object size:0x10 scope:local data:float +statusPosTbl = .data:0x8013A4CC; // type:object size:0x20 scope:local data:float +statusColTbl = .data:0x8013A4EC; // type:object size:0x10 scope:local +statusSprPosTbl = .data:0x8013A4FC; // type:object size:0x88 scope:local data:float +statusItemPosTbl = .data:0x8013A584; // type:object size:0x30 scope:local data:float +itemMdlTbl = .data:0x8013A5B4; // type:object size:0x38 scope:local +teamItemStatusPosTbl = .data:0x8013A5EC; // type:object size:0x18 scope:local data:float +coinMdl = .data:0x8013A608; // type:object size:0x14 scope:local +itemFuncTbl = .data:0x8013A620; // type:object size:0x38 scope:local +itemRestoreFuncTbl = .data:0x8013A658; // type:object size:0x38 scope:local +itemMdlTbl = .data:0x8013A690; // type:object size:0x38 scope:local +forceMoveSfxTbl = .data:0x8013A6C8; // type:object size:0x18 scope:local +callMotTbl = .data:0x8013A6E0; // type:object size:0x20 scope:local +lbl_8013A700 = .data:0x8013A700; // type:object size:0x13 data:string +lbl_8013A713 = .data:0x8013A713; // type:object size:0x13 data:string +lbl_8013A726 = .data:0x8013A726; // type:object size:0x13 data:string +lbl_8013A739 = .data:0x8013A739; // type:object size:0x13 data:string +lbl_8013A74C = .data:0x8013A74C; // type:object size:0x13 data:string +lbl_8013A75F = .data:0x8013A75F; // type:object size:0x13 data:string +lbl_8013A772 = .data:0x8013A772; // type:object size:0x13 data:string +lbl_8013A785 = .data:0x8013A785; // type:object size:0x13 data:string +callHookTbl = .data:0x8013A798; // type:object size:0x20 scope:local +callAttackMotTbl = .data:0x8013A7B8; // type:object size:0x18 scope:local +callAttackMotTbl2 = .data:0x8013A7D0; // type:object size:0x18 scope:local +suitMotTbl = .data:0x8013A7E8; // type:object size:0x40 scope:local +lbl_8013A828 = .data:0x8013A828; // type:object size:0xE data:string +booMotTbl = .data:0x8013A838; // type:object size:0xC scope:local +shadowPos = .data:0x8013A844; // type:object size:0xC scope:local +shadowTarget = .data:0x8013A850; // type:object size:0xC scope:local +shadowUp = .data:0x8013A85C; // type:object size:0xC scope:local +armUpMotTbl = .data:0x8013A868; // type:object size:0x20 scope:local +scareMotTbl = .data:0x8013A888; // type:object size:0x20 scope:local +impactMotTbl = .data:0x8013A8A8; // type:object size:0x20 scope:local +cameraDataTbl = .data:0x8013A8C8; // type:object size:0x134 scope:local +genieMotTbl = .data:0x8013A9FC; // type:object size:0x10 scope:local +scareFXTbl = .data:0x8013AA10; // type:object size:0x20 scope:local +jumptable_8013AA30 = .data:0x8013AA30; // type:object size:0x1C scope:local +lbl_8013AA4C = .data:0x8013AA4C; // type:object size:0xD data:string +battleCursorPosTbl = .data:0x8013AA60; // type:object size:0x18 scope:local data:float +bombFXTbl = .data:0x8013AA78; // type:object size:0x20 scope:local +battleSprPrioTbl = .data:0x8013AA98; // type:object size:0x16 scope:local +jumptable_8013AAB0 = .data:0x8013AAB0; // type:object size:0x24 scope:local +battleChanceTbl = .data:0x8013AAD4; // type:object size:0x3C scope:local +comPrizeMessTbl = .data:0x8013AB10; // type:object size:0x18 scope:local +booPlayerMotTbl = .data:0x8013AB28; // type:object size:0xC0 scope:local +booSfxTbl = .data:0x8013ABE8; // type:object size:0x80 scope:local +hostMess = .data:0x8013AC68; // type:object size:0x18 scope:local +lbl_8013AC80 = .data:0x8013AC80; // type:object size:0xC data:string +ballBooMdl = .data:0x8013AC8C; // type:object size:0x18 scope:local +jumptable_8013ACA4 = .data:0x8013ACA4; // type:object size:0x20 scope:local +stealSuccessTbl = .data:0x8013ACC4; // type:object size:0x24 scope:local +stealTbl = .data:0x8013ACE8; // type:object size:0x12 scope:local +mgSetupSprTbl = .data:0x8013AD00; // type:object size:0x34 scope:local +statusLayout4P = .data:0x8013AD34; // type:object size:0x30 scope:local data:float +statusLayout1Vs3 = .data:0x8013AD64; // type:object size:0x30 scope:local data:float +statusLayout2Vs2 = .data:0x8013AD94; // type:object size:0x30 scope:local data:float +luckyMessTbl = .data:0x8013ADC4; // type:object size:0x24 scope:local +jumptable_8013ADE8 = .data:0x8013ADE8; // type:object size:0x20 scope:local +hiliteYTbl = .data:0x8013AE08; // type:object size:0x10 scope:local +hiliteColTbl = .data:0x8013AE28; // type:object size:0xC scope:local +hostMesTbl = .data:0x8013AE38; // type:object size:0x90 scope:local +houseMdlTbl = .data:0x8013AEC8; // type:object size:0x30 scope:local +booMotTbl = .data:0x8013AEF8; // type:object size:0xC scope:local +houseMotTbl = .data:0x8013AF04; // type:object size:0x6C scope:local +playerStartObj = .data:0x8013AF70; // type:object size:0x10 scope:local data:4byte +hitFX = .data:0x8013AF80; // type:object size:0x10 scope:local +startMesTbl = .data:0x8013AF90; // type:object size:0xB4 scope:local +logoSprTbl = .data:0x8013B044; // type:object size:0x24 scope:local +jumptable_8013B068 = .data:0x8013B068; // type:object size:0x1C scope:local +digitMdlTbl = .data:0x8013B084; // type:object size:0x24 scope:local +playerOrderMesTbl = .data:0x8013B0A8; // type:object size:0xC scope:local +jumptable_8013B0B4 = .data:0x8013B0B4; // type:object size:0x24 scope:local +hostMotTbl = .data:0x8013B0D8; // type:object size:0x120 scope:local +messBaseTbl = .data:0x8013B1F8; // type:object size:0x24 scope:local +playerOfsTbl = .data:0x8013B21C; // type:object size:0x18 scope:local +plateObjNameTbl = .data:0x8013B234; // type:object size:0x10 scope:local +hiliteObjNameTbl = .data:0x8013B244; // type:object size:0x10 scope:local +faceObjNameTbl = .data:0x8013B254; // type:object size:0x10 scope:local +resultRankFX12Tbl = .data:0x8013B264; // type:object size:0x20 scope:local +resultRankFX3Tbl = .data:0x8013B284; // type:object size:0x20 scope:local +resultRankFX4Tbl = .data:0x8013B2A4; // type:object size:0x20 scope:local +impactFXTbl = .data:0x8013B2C4; // type:object size:0x20 scope:local +lotteryWheelMdlTbl = .data:0x8013B2E4; // type:object size:0x20 scope:local +teamSprPrioTbl = .data:0x8013B304; // type:object size:0x1E scope:local +teamSprTbl = .data:0x8013B324; // type:object size:0x34 scope:local +teamSprPosTbl = .data:0x8013B358; // type:object size:0x78 scope:local +teamCharSprTbl = .data:0x8013B3D0; // type:object size:0x20 scope:local +boxModelID = .data:0x8013B3F0; // type:object size:0x10 scope:local data:2byte +boxPosTbl = .data:0x8013B400; // type:object size:0x40 scope:local data:float +padConfigPosTbl = .data:0x8013B440; // type:object size:0x20 scope:local +boardLogoTbl = .data:0x8013B460; // type:object size:0x24 scope:local +turnDigitPosTbl = .data:0x8013B484; // type:object size:0x10 scope:local +boxMdlTbl = .data:0x8013B494; // type:object size:0x20 scope:local +jumptable_8013B4B4 = .data:0x8013B4B4; // type:object size:0x20 scope:local +jumptable_8013B4D4 = .data:0x8013B4D4; // type:object size:0x20 scope:local +jumptable_8013B4F4 = .data:0x8013B4F4; // type:object size:0x20 scope:local +lbl_8013B518 = .data:0x8013B518; // type:object size:0x24 data:string +lbl_8013B53C = .data:0x8013B53C; // type:object size:0x24 data:string +@82 = .data:0x8013B560; // type:object size:0x1E scope:local data:string +lbl_8013B580 = .data:0x8013B580; // type:object size:0x16 scope:local data:string +lbl_8013B598 = .data:0x8013B598; // type:object size:0xC scope:local data:string +lbl_8013B5A4 = .data:0x8013B5A4; // type:object size:0x9 scope:local data:string +lbl_8013B5B4 = .data:0x8013B5B0; // type:object size:0x10 scope:local data:string +lbl_8013B5C0 = .data:0x8013B5C0; // type:object size:0xB scope:local data:string +lbl_8013B5CC = .data:0x8013B5CC; // type:object size:0xE scope:local data:string +lbl_8013B5DC = .data:0x8013B5DC; // type:object size:0xD scope:local data:string +lbl_8013B5EC = .data:0x8013B5EC; // type:object size:0xD scope:local data:string +lbl_8013B5FC = .data:0x8013B5FC; // type:object size:0xD scope:local data:string +lbl_8013B60C = .data:0x8013B60C; // type:object size:0x12 scope:local data:string +lbl_8013B620 = .data:0x8013B620; // type:object size:0xE scope:local data:string +lbl_8013B630 = .data:0x8013B630; // type:object size:0x15 scope:local data:string +__OSExceptionLocations = .data:0x8013B648; // type:object size:0x3C scope:local +lbl_8013B720 = .data:0x8013B720; // type:object size:0x24 scope:local data:string +lbl_8013B744 = .data:0x8013B744; // type:object size:0x37 scope:local data:string +lbl_8013B77C = .data:0x8013B77C; // type:object size:0x28 scope:local data:string +lbl_8013B7A4 = .data:0x8013B7A4; // type:object size:0x4F scope:local data:string +lbl_8013B7F4 = .data:0x8013B7F4; // type:object size:0x3E scope:local data:string +lbl_8013B834 = .data:0x8013B834; // type:object size:0x37 scope:local data:string +lbl_8013B86C = .data:0x8013B86C; // type:object size:0x49 scope:local data:string +lbl_8013B8B8 = .data:0x8013B8B8; // type:object size:0x33 scope:local data:string +lbl_8013B8EC = .data:0x8013B8EC; // type:object size:0x3D scope:local data:string +lbl_8013B92C = .data:0x8013B92C; // type:object size:0x39 scope:local data:string +lbl_8013B968 = .data:0x8013B968; // type:object size:0x45 scope:local data:string +lbl_8013B9B0 = .data:0x8013B9B0; // type:object size:0x5F scope:local data:string +lbl_8013BA10 = .data:0x8013BA10; // type:object size:0x2C scope:local data:string +lbl_8013BA3C = .data:0x8013BA3C; // type:object size:0x12 scope:local data:string +lbl_8013BA50 = .data:0x8013BA50; // type:object size:0x12 scope:local data:string +lbl_8013BA64 = .data:0x8013BA64; // type:object size:0x1A scope:local data:string +lbl_8013BA80 = .data:0x8013BA80; // type:object size:0x13 scope:local data:string +lbl_8013BA94 = .data:0x8013BA94; // type:object size:0x10 scope:local data:string +lbl_8013BAA4 = .data:0x8013BAA4; // type:object size:0xE scope:local data:string +DSPInitCode = .data:0x8013BAB8; // type:object size:0x80 scope:local +@69 = .data:0x8013BB38; // type:object size:0x29 scope:local data:string +lbl_8013BB64 = .data:0x8013BB64; // type:object size:0x18 scope:local data:string +lbl_8013BB7C = .data:0x8013BB7C; // type:object size:0x1B scope:local data:string +lbl_8013BB98 = .data:0x8013BB98; // type:object size:0x30 scope:local data:string +lbl_8013BBC8 = .data:0x8013BBC8; // type:object size:0x3C scope:local data:string +lbl_8013BC04 = .data:0x8013BC04; // type:object size:0x37 scope:local data:string +lbl_8013BC3D = .data:0x8013BC3D; // type:object size:0x3E scope:local data:string +lbl_8013BC7C = .data:0x8013BC7C; // type:object size:0x29 scope:local data:string +lbl_8013BCA8 = .data:0x8013BCA8; // type:object size:0x1D scope:local data:string +lbl_8013BCC8 = .data:0x8013BCC8; // type:object size:0x19 scope:local data:string +lbl_8013BCE4 = .data:0x8013BCE4; // type:object size:0x19 scope:local data:string +lbl_8013BD00 = .data:0x8013BD00; // type:object size:0x19 scope:local data:string +lbl_8013BD1C = .data:0x8013BD1C; // type:object size:0x16 scope:local data:string +lbl_8013BD34 = .data:0x8013BD34; // type:object size:0x2E scope:local data:string +lbl_8013BD68 = .data:0x8013BD68; // type:object size:0x44 scope:local data:string +lbl_8013BDAC = .data:0x8013BDAC; // type:object size:0x30 scope:local data:string +lbl_8013BDDC = .data:0x8013BDDC; // type:object size:0x2F scope:local data:string +lbl_8013BE0C = .data:0x8013BE0C; // type:object size:0x2F scope:local data:string +lbl_8013BE3C = .data:0x8013BE3C; // type:object size:0x11 scope:local data:string +lbl_8013BE50 = .data:0x8013BE50; // type:object size:0x21 scope:local data:string +lbl_8013BE74 = .data:0x8013BE74; // type:object size:0x12 scope:local data:string +lbl_8013BE88 = .data:0x8013BE88; // type:object size:0x19 scope:local data:string +lbl_8013BEA4 = .data:0x8013BEA4; // type:object size:0x12 scope:local data:string +lbl_8013BEB8 = .data:0x8013BEB8; // type:object size:0x1D scope:local data:string +lbl_8013BED8 = .data:0x8013BED8; // type:object size:0x26 scope:local data:string +lbl_8013BF00 = .data:0x8013BF00; // type:object size:0x1C scope:local data:string +@76 = .data:0x8013BF1C; // type:object size:0x23 scope:local data:string +@10 = .data:0x8013BF40; // type:object size:0x16 scope:local data:string +lbl_8013BF58 = .data:0x8013BF58; // type:object size:0x26 scope:local data:string +lbl_8013BF80 = .data:0x8013BF80; // type:object size:0x1C scope:local data:string +lbl_8013BF9C = .data:0x8013BF9C; // type:object size:0x1D scope:local data:string +lbl_8013BFBC = .data:0x8013BFBC; // type:object size:0x17 scope:local data:string +lbl_8013BFD4 = .data:0x8013BFD4; // type:object size:0x31 scope:local data:string +lbl_8013C008 = .data:0x8013C008; // type:object size:0x10 scope:local data:string +lbl_8013C018 = .data:0x8013C018; // type:object size:0x60 scope:local data:string +lbl_8013C078 = .data:0x8013C078; // type:object size:0x4C scope:local data:string +lbl_8013C0C4 = .data:0x8013C0C4; // type:object size:0x62 scope:local data:string +lbl_8013C128 = .data:0x8013C128; // type:object size:0x60 scope:local data:string +lbl_8013C188 = .data:0x8013C188; // type:object size:0x1F scope:local data:string +lbl_8013C1A8 = .data:0x8013C1A8; // type:object size:0x1F scope:local data:string +lbl_8013C1C8 = .data:0x8013C1C8; // type:object size:0x1B scope:local data:string +lbl_8013C1E4 = .data:0x8013C1E4; // type:object size:0x35 scope:local data:string +@87 = .data:0x8013C21C; // type:object size:0x40 scope:local +InterruptPrioTable = .data:0x8013C260; // type:object size:0x2C scope:local data:4byte +lbl_8013C290 = .data:0x8013C290; // type:object size:0x25 scope:local data:string +lbl_8013C2B8 = .data:0x8013C2B8; // type:object size:0x27 scope:local data:string +ResetFunctionInfo = .data:0x8013C2E0; // type:object size:0x10 scope:local +lbl_8013C2F0 = .data:0x8013C2F0; // type:object size:0x12 scope:local data:string +lbl_8013C304 = .data:0x8013C304; // type:object size:0x11 scope:local data:string +lbl_8013C318 = .data:0x8013C318; // type:object size:0xD scope:local data:string +lbl_8013C328 = .data:0x8013C328; // type:object size:0x11 scope:local data:string +lbl_8013C33C = .data:0x8013C33C; // type:object size:0x11 scope:local data:string +lbl_8013C350 = .data:0x8013C350; // type:object size:0x11 scope:local data:string +YearDays = .data:0x8013C368; // type:object size:0x30 scope:local +LeapYearDays = .data:0x8013C398; // type:object size:0x30 scope:local +lbl_8013C3C8 = .data:0x8013C3C8; // type:object size:0x18 scope:local data:string +lbl_8013C3E0 = .data:0x8013C3E0; // type:object size:0xC8 scope:local data:string +lbl_8013C4A8 = .data:0x8013C4A8; // type:object size:0x38 scope:local +lbl_8013C4E0 = .data:0x8013C4E0; // type:object size:0x34 scope:local data:string +lbl_8013C514 = .data:0x8013C514; // type:object size:0x34 scope:local +@13 = .data:0x8013C548; // type:object size:0x15 scope:local data:string +@293 = .data:0x8013C594; // type:object size:0x20 scope:local +jumptable_8013C5B4 = .data:0x8013C5B4; // type:object size:0x40 scope:local +jumptable_8013C5F4 = .data:0x8013C5F4; // type:object size:0x34 scope:local +jumptable_8013C628 = .data:0x8013C628; // type:object size:0x34 scope:local +ErrorTable = .data:0x8013C660; // type:object size:0x48 scope:local data:4byte +@36 = .data:0x8013C6A8; // type:object size:0x1A scope:local data:string +timing = .data:0x8013C718; // type:object size:0x130 scope:local +taps = .data:0x8013C848; // type:object size:0x32 scope:local +jumptable_8013C87C = .data:0x8013C87C; // type:object size:0x58 scope:local +lbl_8013C8D4 = .data:0x8013C8D4; // type:object size:0x29 scope:local data:string +lbl_8013C900 = .data:0x8013C900; // type:object size:0x29 scope:local data:string +lbl_8013C92C = .data:0x8013C92C; // type:object size:0x29 scope:local data:string +lbl_8013C958 = .data:0x8013C958; // type:object size:0x29 scope:local data:string +lbl_8013C984 = .data:0x8013C984; // type:object size:0x29 scope:local data:string +lbl_8013C9B0 = .data:0x8013C9B0; // type:object size:0x29 scope:local data:string +DEMOFontBitmap = .data:0x8013C9E0; // type:object size:0xC00 align:32 +lbl_8013D5E0 = .data:0x8013D5E0; // type:object size:0xC scope:local data:string +lbl_8013D5EC = .data:0x8013D5EC; // type:object size:0x26 scope:local data:string +jumptable_8013D614 = .data:0x8013D614; // type:object size:0x28 scope:local +jumptable_8013D698 = .data:0x8013D698; // type:object size:0x28 scope:local +jumptable_8013D6C0 = .data:0x8013D6C0; // type:object size:0x28 scope:local +jumptable_8013D6E8 = .data:0x8013D6E8; // type:object size:0x28 scope:local +jumptable_8013D710 = .data:0x8013D710; // type:object size:0x28 scope:local +ResetFunctionInfo = .data:0x8013D738; // type:object size:0x10 +lbl_8013D748 = .data:0x8013D748; // type:object size:0x1E scope:local data:string +lbl_8013D768 = .data:0x8013D768; // type:object size:0xC scope:local data:string +lbl_8013D774 = .data:0x8013D774; // type:object size:0x9 scope:local data:string +lbl_8013D780 = .data:0x8013D780; // type:object size:0x1D scope:local data:string +lbl_8013D7A0 = .data:0x8013D7A0; // type:object size:0x2D scope:local data:string +lbl_8013D7D0 = .data:0x8013D7D0; // type:object size:0x2D scope:local data:string +lbl_8013D800 = .data:0x8013D800; // type:object size:0x2D scope:local data:string +lbl_8013D830 = .data:0x8013D830; // type:object size:0x2D scope:local data:string +lbl_8013D860 = .data:0x8013D860; // type:object size:0x2D scope:local data:string +lbl_8013D890 = .data:0x8013D890; // type:object size:0x2B scope:local data:string +jumptable_8013D8C0 = .data:0x8013D8C0; // type:object size:0x68 scope:local +jumptable_8013D928 = .data:0x8013D928; // type:object size:0x44 scope:local +jumptable_8013D96C = .data:0x8013D96C; // type:object size:0x1C scope:local +jumptable_8013D988 = .data:0x8013D988; // type:object size:0x54 scope:local +GXNtsc480IntDf = .data:0x8013D9E0; // type:object size:0x3C +GXNtsc480Prog = .data:0x8013DA1C; // type:object size:0x3C +GXMpal480IntDf = .data:0x8013DA58; // type:object size:0x3C +GXPal528IntDf = .data:0x8013DA94; // type:object size:0x3C +GXEurgb60Hz480IntDf = .data:0x8013DAD0; // type:object size:0x3C +jumptable_8013DB10 = .data:0x8013DB10; // type:object size:0x1C scope:local +jumptable_8013DB30 = .data:0x8013DB30; // type:object size:0xF4 scope:local +jumptable_8013DC24 = .data:0x8013DC24; // type:object size:0xF4 scope:local +jumptable_8013DD18 = .data:0x8013DD18; // type:object size:0x3C scope:local +c2r$364 = .data:0x8013DD58; // type:object size:0x24 scope:local +p2f$194 = .data:0x8013DD80; // type:object size:0x20 scope:local +jumptable_8013DDA0 = .data:0x8013DDA0; // type:object size:0x5C scope:local +jumptable_8013DDFC = .data:0x8013DDFC; // type:object size:0x90 scope:local +jumptable_8013DE8C = .data:0x8013DE8C; // type:object size:0x5C scope:local +ResetFunctionInfo = .data:0x8013DEE8; // type:object size:0x10 scope:local +CardData = .data:0x8013DF00; // type:object size:0x160 scope:local align:32 +SectorSizeTable = .data:0x8013E060; // type:object size:0x20 scope:local +LatencyTable = .data:0x8013E080; // type:object size:0x20 scope:local +Si = .data:0x8013E0A0; // type:object size:0x14 scope:local data:4byte +Type = .data:0x8013E0B4; // type:object size:0x10 scope:local +@464 = .data:0x8013E0C4; // type:object size:0xC scope:local data:string +lbl_8013E0D0 = .data:0x8013E0D0; // type:object size:0xF scope:local data:string +lbl_8013E0E0 = .data:0x8013E0E0; // type:object size:0xF scope:local data:string +lbl_8013E0F0 = .data:0x8013E0F0; // type:object size:0xD scope:local data:string +lbl_8013E100 = .data:0x8013E100; // type:object size:0xA scope:local data:string +lbl_8013E10C = .data:0x8013E10C; // type:object size:0x10 scope:local data:string +lbl_8013E11C = .data:0x8013E11C; // type:object size:0x14 scope:local data:string +lbl_8013E130 = .data:0x8013E130; // type:object size:0x12 scope:local data:string +lbl_8013E144 = .data:0x8013E144; // type:object size:0x14 scope:local data:string +lbl_8013E158 = .data:0x8013E158; // type:object size:0x9 scope:local data:string +lbl_8013E164 = .data:0x8013E164; // type:object size:0x9 scope:local data:string +XYNTSC = .data:0x8013E170; // type:object size:0x30 scope:local +XYPAL = .data:0x8013E1A0; // type:object size:0x30 scope:local +__vt__Q23std9exception = .data:0x8013E208; // type:object size:0x10 scope:weak +jumptable_8013E218 = .data:0x8013E218; // type:object size:0x44 scope:local +jumptable_8013E25C = .data:0x8013E25C; // type:object size:0x44 scope:local +jumptable_8013E2A0 = .data:0x8013E2A0; // type:object size:0x44 scope:local +lbl_8013E2E4 = .data:0x8013E2E4; // type:object size:0xC +__vt__Q23std13bad_exception = .data:0x8013E2F0; // type:object size:0x10 scope:weak +__files = .data:0x8013E300; // type:object size:0x140 scope:global +jumptable_8013E440 = .data:0x8013E440; // type:object size:0x124 scope:local +__ctype_map = .data:0x8013E568; // type:object size:0x100 +__lower_map = .data:0x8013E668; // type:object size:0x100 +@1249 = .data:0x8013E768; // type:object size:0x84 scope:local +jumptable_8013E7EC = .data:0x8013E7EC; // type:object size:0x84 scope:local +jumptable_8013E870 = .data:0x8013E870; // type:object size:0xE0 scope:local +jumptable_8013E950 = .data:0x8013E950; // type:object size:0x44 scope:local +gTRKDispatchTable = .data:0x8013E998; // type:object size:0x84 +jumptable_8013EA20 = .data:0x8013EA20; // type:object size:0x1C scope:local +jumptable_8013EA3C = .data:0x8013EA3C; // type:object size:0x1C scope:local +gTRKRestoreFlags = .data:0x8013EA58; // type:object size:0x9 scope:global data:byte +gTRKExceptionStatus = .data:0x8013EA64; // type:object size:0x10 scope:local data:4byte +gTRKStepStatus = .data:0x8013EA74; // type:object size:0x14 data:4byte +TRK_ISR_OFFSETS = .data:0x8013EA88; // type:object size:0x3C scope:local data:4byte +gDBCommTable = .data:0x8013EAC8; // type:object size:0x1C scope:global data:4byte +jumptable_8013EAE8 = .data:0x8013EAE8; // type:object size:0x50 scope:local +kf$703 = .data:0x8013EB38; // type:object size:0x1C scope:local +midi2TimeTab = .data:0x8013EB54; // type:object size:0x204 scope:local +mask$1265 = .data:0x8013ED58; // type:object size:0x20 scope:local +dirty$1266 = .data:0x8013ED78; // type:object size:0x10 scope:local +mask$1285 = .data:0x8013ED88; // type:object size:0x20 scope:local +dirty$1286 = .data:0x8013EDA8; // type:object size:0x10 scope:local +jumptable_8013EDB8 = .data:0x8013EDB8; // type:object size:0x1C8 scope:local +toneup_tab = .data:0x8013EF80; // type:object size:0x200 scope:local +tonedown_tab = .data:0x8013F180; // type:object size:0x200 scope:local +dspAttenuationTab = .data:0x8013F380; // type:object size:0x184 +dspScale2IndexTab = .data:0x8013F504; // type:object size:0x400 +dspDLSVolTab = .data:0x8013F904; // type:object size:0x204 +dspSRCCycles = .data:0x8013FB08; // type:object size:0x18 +musyx_vol_tab = .data:0x8013FB20; // type:object size:0x204 scope:local +pan_tab = .data:0x8013FD24; // type:object size:0x10 scope:local +pan_tab_dpl2 = .data:0x8013FD34; // type:object size:0x10 scope:local +dirtyMask$1062 = .data:0x8013FD48; // type:object size:0x10 scope:local +dirtyMask$1075 = .data:0x8013FD58; // type:object size:0x10 scope:local +jumptable_8013FD68 = .data:0x8013FD68; // type:object size:0x24 scope:local +jumptable_8013FD8C = .data:0x8013FD8C; // type:object size:0x24 scope:local +jumptable_8013FDB0 = .data:0x8013FDB0; // type:object size:0x24 scope:local +sndSintab = .data:0x8013FDD8; // type:object size:0x800 +dspSlave = .data:0x801405E0; // type:object size:0x19E0 align:32 +lens$301 = .data:0x80141FC0; // type:object size:0x10 scope:local +lens$301 = .data:0x80141FD0; // type:object size:0x20 scope:local +rsmpTab12khz = .data:0x80141FF0; // type:object size:0x800 scope:local +padStatErrOld = .bss:0x80142800; // type:object size:0x10 scope:local +rumbleData = .bss:0x80142810; // type:object size:0x20 scope:local +ReadDataStat = .bss:0x80142840; // type:object size:0x2E00 scope:local align:32 data:4byte +TextBuffer = .bss:0x80145640; // type:object size:0x400 +rmodeobj = .bss:0x80145A40; // type:object size:0x40 scope:local +HeapTbl = .bss:0x80145A80; // type:object size:0x14 scope:local +strline = .bss:0x80145A98; // type:object size:0x6800 scope:local +pfStrBuf = .bss:0x8014C298; // type:object size:0x100 scope:local data:byte +processjmpbuf = .bss:0x8014C398; // type:object size:0xF8 align:8 +HuSprData = .bss:0x8014C490; // type:object size:0x9600 +HuSprGrpData = .bss:0x80155A90; // type:object size:0x5400 data:2byte +HuSprOrder = .bss:0x8015AE90; // type:object size:0x1800 +bmpNoCC = .bss:0x8015C690; // type:object size:0x20 scope:local +HuSprLayerDrawNo = .bss:0x8015C6B0; // type:object size:0x10 scope:local +Model = .bss:0x8015C6C0; // type:object size:0x80 +head = .bss:0x8015C740; // type:object size:0xB0 +rgba = .bss:0x8015C7F0; // type:object size:0x190 +lbl_8015C980 = .bss:0x8015C980; // type:object size:0x300 scope:local data:byte +DrawObjData = .bss:0x8015CC80; // type:object size:0x9000 scope:local +BmpPtrBak = .bss:0x80165C80; // type:object size:0x20 scope:local data:4byte +MTXBuf = .bss:0x80165CA0; // type:object size:0x1200 scope:local +scaleBuf = .bss:0x80166EA0; // type:object size:0x480 scope:local data:4byte +texCol = .bss:0x80167320; // type:object size:0x40 scope:local data:byte +hiliteMtx = .bss:0x80167360; // type:object size:0x30 scope:local +DrawObjNum = .bss:0x80167390; // type:object size:0x400 scope:local +NBTB = .bss:0x80167790; // type:object size:0xC scope:local data:float +NBTT = .bss:0x8016779C; // type:object size:0xC scope:local data:float +PGMaxPos = .bss:0x801677A8; // type:object size:0xC data:float +PGMinPos = .bss:0x801677B4; // type:object size:0xC data:float +Hu3DData = .bss:0x801677C0; // type:object size:0x24800 data:byte +Hu3DCamera = .bss:0x8018BFC0; // type:object size:0x580 data:float +layerNum = .bss:0x8018C540; // type:object size:0x10 scope:local data:2byte +layerHook = .bss:0x8018C550; // type:object size:0x20 scope:local +reflectAnim = .bss:0x8018C570; // type:object size:0x14 data:4byte +hiliteAnim = .bss:0x8018C584; // type:object size:0x10 data:4byte +Hu3DProjection = .bss:0x8018C594; // type:object size:0x260 data:byte +Hu3DShadowData = .bss:0x8018C7F4; // type:object size:0x98 data:byte +FogData = .bss:0x8018C88C; // type:object size:0x10 data:4byte +Hu3DCameraMtx = .bss:0x8018C89C; // type:object size:0x30 +Hu3DCameraMtxXPose = .bss:0x8018C8CC; // type:object size:0x30 +Hu3DGlobalLight = .bss:0x8018C8FC; // type:object size:0x220 data:2byte +Hu3DLocalLight = .bss:0x8018CB1C; // type:object size:0x880 data:2byte +lbl_8018D39C = .bss:0x8018D39C; // type:object size:0x30 +Hu3DMotion = .bss:0x8018D3D0; // type:object size:0x800 data:2byte +Hu3DTexAnimData = .bss:0x8018DBD0; // type:object size:0x1400 data:2byte +Hu3DTexScrData = .bss:0x8018EFD0; // type:object size:0x6C0 data:2byte +parManProc = .bss:0x8018F690; // type:object size:0x100 scope:local +perf = .bss:0x8018F790; // type:object size:0x370 scope:local +Ssw = .bss:0x8018FB00; // type:object size:0x38 scope:local +omovlhis = .bss:0x8018FB38; // type:object size:0xC0 scope:local +XFB_Geometry = .bss:0x8018FBF8; // type:object size:0x18 scope:local +GWPlayerCfg = .bss:0x8018FC10; // type:object size:0x28 +GWPlayer = .bss:0x8018FC38; // type:object size:0xC0 data:byte +GWSystem = .bss:0x8018FCF8; // type:object size:0xDC data:byte +GWGameStat = .bss:0x8018FDD8; // type:object size:0x118 +GWGameStatDefault = .bss:0x8018FEF0; // type:object size:0x118 +CRot = .bss:0x80190008; // type:object size:0xC data:float +Center = .bss:0x80190014; // type:object size:0xC data:float +CRotM = .bss:0x80190020; // type:object size:0xC0 +CenterM = .bss:0x801900E0; // type:object size:0xC0 +CZoomM = .bss:0x801901A0; // type:object size:0x40 +omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50 +sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local +charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local +seqWorkData = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte +winnerNameW = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte +esprite = .bss:0x80190860; // type:object size:0x600 data:2byte +espanim = .bss:0x80190E60; // type:object size:0x1200 data:4byte +lbl_80192060 = .bss:0x80192060; // type:object size:0x100 +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 +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 +ARQueBuf = .bss:0x80196C00; // type:object size:0x280 scope:local +preLoadBuf = .bss:0x80196E80; // type:object size:0x40 scope:local align:32 +charInstance = .bss:0x80196EC0; // type:object size:0x640 scope:local +effectMdl = .bss:0x80197500; // type:object size:0x10 scope:local data:2byte +particleData = .bss:0x80197510; // type:object size:0x20 scope:local +itemHookProcess = .bss:0x80197530; // type:object size:0x80 scope:local +lbl_801975B0 = .bss:0x801975B0; // type:object size:0x10 scope:local +lbl_801975C0 = .bss:0x801975C0; // type:object size:0x90 scope:local +MapObject = .bss:0x80197650; // type:object size:0x40 +MapMT = .bss:0x80197690; // type:object size:0x30 +MapMTR = .bss:0x801976C0; // type:object size:0x30 +MTRAdd = .bss:0x801976F0; // type:object size:0xC scope:local data:float +FieldVec = .bss:0x801976FC; // type:object size:0xC scope:local data:float +ColisionIdx = .bss:0x80197708; // type:object size:0x78 +HitFaceVec = .bss:0x80197780; // type:object size:0x180 +OldXYZ = .bss:0x80197900; // type:object size:0xC scope:local +HitFace = .bss:0x8019790C; // type:object size:0x180 +CharObject = .bss:0x80197A8C; // type:object size:0x30 +SimpleControl = .bss:0x80197AC0; // type:object size:0x19C +SoundBuffer = .bss:0x80197C60; // type:object size:0x500 scope:local align:32 +WorkBuffer = .bss:0x80198160; // type:object size:0x40 scope:local align:32 +THPFileName = .bss:0x801981A0; // type:object size:0x40 scope:local +mgGameStatBackup = .bss:0x801981E0; // type:object size:0x118 +mgIndexList = .bss:0x801982F8; // type:object size:0x100 +mgTicTacToeGrid = .bss:0x801983F8; // type:object size:0x12 +_Sys_Flag = .bss:0x80198410; // type:object size:0x10 +curFileInfo = .bss:0x80198420; // type:object size:0x20 +saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32 +ToeMessageQueue = .bss:0x8019C440; // type:object size:0x20 scope:local +padStat$377 = .bss:0x8019C460; // type:object size:0x30 scope:local +ToeMessageArray = .bss:0x8019C490; // type:object size:0x40 scope:local +ToeThread = .bss:0x8019C4D0; // type:object size:0x310 scope:local align:8 +ToeThreadStack = .bss:0x8019C7E0; // type:object size:0x1000 scope:local +boardCamera = .bss:0x8019D7E0; // type:object size:0xC4 data:byte +cameraBackup = .bss:0x8019D8A4; // type:object size:0xC4 scope:local +preTurnHook = .bss:0x8019D968; // type:object size:0x10 scope:local +postTurnHook = .bss:0x8019D978; // type:object size:0x10 scope:local +playerMatCopy = .bss:0x8019D988; // type:object size:0x10 scope:local +winInsertMesTbl = .bss:0x8019D998; // type:object size:0x20 scope:local +choiceDisableTbl = .bss:0x8019D9B8; // type:object size:0x40 scope:local +focusPos = .bss:0x8019D9F8; // type:object size:0xC scope:local data:float +focusPosTarget = .bss:0x8019DA04; // type:object size:0xC scope:local data:4byte +spaceData = .bss:0x8019DA10; // type:object size:0x7000 scope:local data:float +boardSpaceStarTbl = .bss:0x801A4A10; // type:object size:0x10 +spaceTex = .bss:0x801A4A20; // type:object size:0x20 scope:local +spaceHiliteTex = .bss:0x801A4A40; // type:object size:0x20 scope:local +activeItemTbl = .bss:0x801A4A60; // type:object size:0x14 scope:local data:4byte +choiceEnableTbl = .bss:0x801A4A74; // type:object size:0x18 scope:local +lotteryMdl = .bss:0x801A4A90; // type:object size:0xC scope:local data:2byte +coinF = .bss:0x801A4A9C; // type:object size:0xC scope:local +coinMdl = .bss:0x801A4AA8; // type:object size:0x14 scope:local data:2byte +warpPos = .bss:0x801A4AC0; // type:object size:0x10 scope:local +starCharPos = .bss:0x801A4AD0; // type:object size:0xC scope:local data:4byte +tutorialRoll = .bss:0x801A4AE0; // type:object size:0xC scope:local +itemMdlId = .bss:0x801A4AF0; // type:object size:0x18 scope:local +pickerPos = .bss:0x801A4B08; // type:object size:0x30 scope:local +itemPosTemp = .bss:0x801A4B38; // type:object size:0x48 scope:local +coinF = .bss:0x801A4B80; // type:object size:0x28 scope:local +booBallPos = .bss:0x801A4BA8; // type:object size:0xC scope:local data:4byte +booBallScale = .bss:0x801A4BB4; // type:object size:0xC scope:local data:float +booCamPos = .bss:0x801A4BC0; // type:object size:0xC scope:local data:float +booCamTarget = .bss:0x801A4BCC; // type:object size:0xC scope:local data:float +booCamUp = .bss:0x801A4BD8; // type:object size:0xC scope:local data:float +playerPosTemp = .bss:0x801A4BE8; // type:object size:0x30 scope:local +bowserEvent = .bss:0x801A4C18; // type:object size:0x16 scope:local +battleMGList = .bss:0x801A4C30; // type:object size:0x10 scope:local data:2byte +camPosFortune = .bss:0x801A4C40; // type:object size:0xC scope:local data:4byte +camTargetFortune = .bss:0x801A4C4C; // type:object size:0xC scope:local data:float +activeMG = .bss:0x801A4C58; // type:object size:0x20 scope:local data:2byte +mgListAll = .bss:0x801A4C78; // type:object size:0x40 scope:local data:2byte +mgPlay4P = .bss:0x801A4CB8; // type:object size:0x10 scope:local +houseMdl = .bss:0x801A4CC8; // type:object size:0xC scope:local data:2byte +spacePos = .bss:0x801A4CD8; // type:object size:0xC scope:local data:float +camStartFocusPos = .bss:0x801A4CE4; // type:object size:0xC scope:local data:float +spacePos = .bss:0x801A4CF0; // type:object size:0xC scope:local data:float +focusPos = .bss:0x801A4CFC; // type:object size:0xC scope:local data:float +hostPos = .bss:0x801A4D08; // type:object size:0xC scope:local +hostMot = .bss:0x801A4D14; // type:object size:0x10 scope:local data:2byte +lotteryTicketObj = .bss:0x801A4D24; // type:object size:0x14 scope:local data:4byte +boxRot = .bss:0x801A4D38; // type:object size:0x20 scope:local +padBoxPos = .bss:0x801A4D58; // type:object size:0xC scope:local data:float +pathNodeData = .bss:0x801A4D68; // type:object size:0x500 scope:local data:byte +candidateNodes = .bss:0x801A5268; // type:object size:0x40 scope:local +startPathSpaceSearch = .bss:0x801A52A8; // type:object size:0x20 scope:local +startPathSpace = .bss:0x801A52C8; // type:object size:0x20 scope:local +boardTutorialData = .bss:0x801A52E8; // type:object size:0x10 data:4byte +DriveInfo = .bss:0x801A5300; // type:object size:0x20 scope:local align:32 +DriveBlock = .bss:0x801A5320; // type:object size:0x30 scope:local +__OSErrorTable = .bss:0x801A5350; // type:object size:0x40 scope:global +Header = .bss:0x801A53A0; // type:object size:0x20 scope:local align:32 +Scb = .bss:0x801A53C0; // type:object size:0x54 scope:local align:32 data:4byte +RunQueue = .bss:0x801A5418; // type:object size:0x100 scope:local data:4byte +IdleThread = .bss:0x801A5518; // type:object size:0x310 scope:local align:8 data:4byte +DefaultThread = .bss:0x801A5828; // type:object size:0x310 scope:local align:8 data:4byte +IdleContext = .bss:0x801A5B38; // type:object size:0x2C8 scope:local align:8 data:4byte +CommandList = .bss:0x801A5E00; // type:object size:0x3C scope:local data:4byte +AlarmForWA = .bss:0x801A5E40; // type:object size:0x28 scope:local align:8 +AlarmForTimeout = .bss:0x801A5E68; // type:object size:0x28 scope:local align:8 +AlarmForBreak = .bss:0x801A5E90; // type:object size:0x28 scope:local align:8 +Prev = .bss:0x801A5EB8; // type:object size:0xC scope:local +Curr = .bss:0x801A5EC4; // type:object size:0xC scope:local +tmpBuffer = .bss:0x801A5EE0; // type:object size:0x80 scope:local align:32 +DummyCommandBlock = .bss:0x801A5F60; // type:object size:0x30 scope:local +ResetAlarm = .bss:0x801A5F90; // type:object size:0x28 scope:local align:8 +WaitingQueue = .bss:0x801A5FB8; // type:object size:0x20 scope:local data:4byte +bb2Buf = .bss:0x801A5FD8; // type:object size:0x3F scope:local +block$16 = .bss:0x801A6018; // type:object size:0x30 scope:local +regs = .bss:0x801A6048; // type:object size:0x78 scope:local data:2byte +shdwRegs = .bss:0x801A60C0; // type:object size:0x78 scope:local +HorVer = .bss:0x801A6138; // type:object size:0x58 scope:local data:2byte +fontTexObj = .bss:0x801A6190; // type:object size:0x20 scope:local +Type = .bss:0x801A61B0; // type:object size:0x10 scope:local +Origin = .bss:0x801A61C0; // type:object size:0x1E scope:local +CmdProbeDevice = .bss:0x801A61F0; // type:object size:0x10 scope:local +gxData = .bss:0x801A6200; // type:object size:0x4F8 scope:local +FifoObj = .bss:0x801A66F8; // type:object size:0x80 +DisplayListFifo = .bss:0x801A6778; // type:object size:0x24 scope:local data:4byte +__savedGXdata = .bss:0x801A679C; // type:object size:0x4F8 scope:local data:4byte +__CARDBlock = .bss:0x801A6C98; // type:object size:0x220 data:4byte +__CARDDiskNone = .bss:0x801A6EB8; // type:object size:0x20 +Ecb = .bss:0x801A6ED8; // type:object size:0xC0 scope:local data:4byte +Packet = .bss:0x801A6F98; // type:object size:0x80 scope:local align:8 data:4byte +Alarm = .bss:0x801A7018; // type:object size:0xA0 scope:local align:8 +TypeTime = .bss:0x801A70B8; // type:object size:0x20 scope:local align:8 +XferTime = .bss:0x801A70D8; // type:object size:0x20 scope:local align:8 +TypeCallback = .bss:0x801A70F8; // type:object size:0x40 scope:local +RDSTHandler = .bss:0x801A7138; // type:object size:0x10 scope:local data:4byte +InputBufferValid = .bss:0x801A7148; // type:object size:0x10 scope:local data:4byte +InputBuffer = .bss:0x801A7158; // type:object size:0x20 scope:local data:4byte +InputBufferVcount = .bss:0x801A7178; // type:object size:0x10 scope:local data:4byte +cmdFixDevice$327 = .bss:0x801A7188; // type:object size:0x10 scope:local data:4byte +__THPIDCTWorkspace = .bss:0x801A71A0; // type:object size:0x100 scope:local align:32 +__THPLCWork512 = .bss:0x801A72A0; // type:object size:0xC scope:local +__THPLCWork640 = .bss:0x801A72AC; // type:object size:0xC scope:local +__THPMCUBuffer = .bss:0x801A72B8; // type:object size:0x18 scope:local data:4byte +fragmentinfo = .bss:0x801A72D0; // type:object size:0xC scope:local data:4byte +__atexit_funcs = .bss:0x801A72E0; // type:object size:0x100 scope:local +protopool$192 = .bss:0x801A73E0; // type:object size:0x38 scope:local data:4byte +stderr_buff = .bss:0x801A7418; // type:object size:0x100 scope:local +stdout_buff = .bss:0x801A7518; // type:object size:0x100 scope:local +stdin_buff = .bss:0x801A7618; // type:object size:0x100 scope:local +signal_funcs = .bss:0x801A7718; // type:object size:0x18 scope:local +gTRKEventQueue = .bss:0x801A7730; // type:object size:0x28 +gTRKBigEndian = .bss:0x801A7758; // type:object size:0x4 scope:global data:4byte +gTRKMsgBufs = .bss:0x801A7760; // type:object size:0x19B0 +gTRKInputPendingPtr = .bss:0x801A9110; // type:object size:0x4 scope:global data:4byte +gTRKFramingState = .bss:0x801A9114; // type:object size:0x14 scope:local data:4byte +gTRKDispatchTableSize = .bss:0x801A9128; // type:object size:0x4 data:4byte +IsTRKConnected = .bss:0x801A9130; // type:object size:0x4 scope:local data:4byte +TRK_saved_exceptionID = .bss:0x801A9138; // type:object size:0x2 scope:local data:2byte +gTRKState = .bss:0x801A913C; // type:object size:0xA4 scope:global data:4byte +gTRKCPUState = .bss:0x801A91E0; // type:object size:0x430 scope:global +gTRKSaveState = .bss:0x801A9610; // type:object size:0x94 scope:global data:4byte +TRKvalue128_temp = .bss:0x801A96A4; // type:object size:0x10 +lc_base = .bss:0x801A96B8; // type:object size:0x4 scope:local data:4byte +TRK_mainError = .bss:0x801A96C0; // type:object size:0x4 scope:local data:4byte +gWritePos = .bss:0x801A96C8; // type:object size:0x4 scope:local data:4byte +gReadPos = .bss:0x801A96CC; // type:object size:0x4 scope:local data:4byte +gReadCount = .bss:0x801A96D0; // type:object size:0x4 scope:local data:4byte +_MetroTRK_Has_Framing = .bss:0x801A96D4; // type:object size:0x4 data:4byte +gReadBuf = .bss:0x801A96D8; // type:object size:0x110A scope:local +gWriteBuf = .bss:0x801AA7E4; // type:object size:0x110A scope:local +bUseSerialIO = .bss:0x801AB8F0; // type:object size:0x1 scope:local data:byte +seqNote = .bss:0x801AB8F8; // type:object size:0x1400 scope:local data:4byte +seqInstance = .bss:0x801ACCF8; // type:object size:0xC340 +seqMIDIPriority = .bss:0x801B9038; // type:object size:0x100 data:2byte +synthTicksPerSecond = .bss:0x801B9138; // type:object size:0x240 scope:local +synthInfo = .bss:0x801B9378; // type:object size:0x214 data:4byte +synthMasterFader = .bss:0x801B958C; // type:object size:0x600 data:float +synthTrackVolume = .bss:0x801B9B8C; // type:object size:0x40 data:byte +synthJobTable = .bss:0x801B9BCC; // type:object size:0x180 scope:local +synthAuxAUser = .bss:0x801B9D4C; // type:object size:0x20 data:4byte +synthAuxACallback = .bss:0x801B9D6C; // type:object size:0x20 data:4byte +synthAuxBUser = .bss:0x801B9D8C; // type:object size:0x20 data:4byte +synthAuxBCallback = .bss:0x801B9DAC; // type:object size:0x20 data:4byte +synthITDDefault = .bss:0x801B9DCC; // type:object size:0x10 data:byte +synthGlobalVariable = .bss:0x801B9DDC; // type:object size:0x40 data:4byte +inpAuxB = .bss:0x801B9E1C; // type:object size:0x480 +inpAuxA = .bss:0x801BA29C; // type:object size:0x480 +streamInfo = .bss:0x801BA720; // type:object size:0x1900 data:4byte +dataKeymapTab = .bss:0x801BC020; // type:object size:0x800 scope:local +dataLayerTab = .bss:0x801BC820; // type:object size:0xC00 scope:local +dataCurveTab = .bss:0x801BD420; // type:object size:0x4000 scope:local +dataSmpSDirs = .bss:0x801C1420; // type:object size:0x600 scope:local data:4byte +dataFXGroups = .bss:0x801C1A20; // type:object size:0x400 scope:local data:2byte +dataMacMainTab = .bss:0x801C1E20; // type:object size:0x800 scope:local data:2byte +dataMacSubTabmem = .bss:0x801C2620; // type:object size:0x4000 scope:local +key$787 = .bss:0x801C6620; // type:object size:0x20 scope:local data:2byte +key$836 = .bss:0x801C6640; // type:object size:0xC scope:local +key$850 = .bss:0x801C664C; // type:object size:0xA scope:local data:2byte +newsmp$473 = .bss:0x801C6658; // type:object size:0x20 scope:local data:4byte +vidList = .bss:0x801C6678; // type:object size:0x800 scope:local data:4byte +voicePrioSortVoices = .bss:0x801C6E78; // type:object size:0x100 +voicePrioSortVoicesRoot = .bss:0x801C6F78; // type:object size:0x100 +voicePrioSortRootList = .bss:0x801C7078; // type:object size:0x400 +voiceList = .bss:0x801C7478; // type:object size:0x100 +synth_last_fxstarted = .bss:0x801C7578; // type:object size:0x40 scope:local data:byte +synth_last_started = .bss:0x801C75B8; // type:object size:0x80 scope:local data:byte +vs = .bss:0x801C7638; // type:object size:0x950 data:byte +gs = .bss:0x801C7F88; // type:object size:0x600 scope:local data:4byte +dspStudio = .bss:0x801C8588; // type:object size:0x5E0 data:4byte +voices$591 = .bss:0x801C8B68; // type:object size:0x100 scope:local data:4byte +tmp_em$515 = .bss:0x801C8C68; // type:object size:0x50 scope:local +startGroup = .bss:0x801C8CB8; // type:object size:0x400 scope:local data:4byte +runList = .bss:0x801C90B8; // type:object size:0x300 scope:local +startListNum = .bss:0x801C93B8; // type:object size:0x700 scope:local +inpGlobalMIDIDirtyFlags = .bss:0x801C9AB8; // type:object size:0x200 scope:local data:4byte +midi_ctrl = .bss:0x801C9CB8; // type:object size:0x4300 scope:local +inpChannelDefaults = .bss:0x801CDFB8; // type:object size:0x80 scope:local +fx_ctrl = .bss:0x801CE038; // type:object size:0x2180 scope:local +inpFXChannelDefaults = .bss:0x801D01B8; // type:object size:0x40 scope:local +midi_lastNote = .bss:0x801D01F8; // type:object size:0x80 scope:local +fx_lastNote = .bss:0x801D0278; // type:object size:0x40 scope:local +aramQueueLo = .bss:0x801D02B8; // type:object size:0x284 scope:local +aramQueueHi = .bss:0x801D053C; // type:object size:0x284 scope:local +aramStreamBuffers = .bss:0x801D07C0; // type:object size:0x400 scope:local data:4byte +dsp_task = .bss:0x801D0BC0; // type:object size:0x60 scope:local align:8 +dram_image = .bss:0x801D0C20; // type:object size:0x2000 scope:local align:32 +sys = .bss:0x801D2C20; // type:object size:0x4FC scope:local data:4byte +mem = .bss:0x801D3120; // type:object size:0x2C scope:local data:4byte +fio = .bss:0x801D3150; // type:object size:0xC scope:local data:4byte +mus = .bss:0x801D3160; // type:object size:0x178 scope:local data:2byte +se = .bss:0x801D32D8; // type:object size:0xDC scope:local data:4byte +StreamInfo = .bss:0x801D33C0; // type:object size:0x60 scope:local align:32 data:4byte +lbl_801D3420 = .sdata:0x801D3420; // type:object size:0x5 scope:local data:string +lbl_801D3425 = .sdata:0x801D3425; // type:object size:0x7 scope:local +rnd_seed = .sdata:0x801D342C; // type:object size:0x4 data:4byte +lbl_801D3430 = .sdata:0x801D3430; // type:object size:0x6 scope:local data:string +lbl_801D3436 = .sdata:0x801D3436; // type:object size:0x2 scope:local data:string +lbl_801D3438 = .sdata:0x801D3438; // type:object size:0x7 data:string +lbl_801D343F = .sdata:0x801D343F; // type:object size:0x9 +FirstFrame = .sdata:0x801D3448; // type:object size:0x4 scope:local data:4byte +lbl_801D344C = .sdata:0x801D344C; // type:object size:0x7 data:string +lbl_801D3453 = .sdata:0x801D3453; // type:object size:0xD +lbl_801D3460 = .sdata:0x801D3460; // type:object size:0x2 data:string +lbl_801D3462 = .sdata:0x801D3462; // type:object size:0xE +oneceF = .sdata:0x801D3470; // type:object size:0x2 scope:local data:2byte +firstTev = .sdata:0x801D3472; // type:object size:0x4 scope:local +secondTev = .sdata:0x801D3476; // type:object size:0x4 scope:local +lbl_801D347A = .sdata:0x801D347A; // type:object size:0xE +lbl_801D3488 = .sdata:0x801D3488; // type:object size:0x4 data:string +lbl_801D348C = .sdata:0x801D348C; // type:object size:0xC +omSysPauseEnableFlag = .sdata:0x801D3498; // type:object size:0x1 data:byte +omprevovl = .sdata:0x801D349C; // type:object size:0x4 data:4byte +titleMes$442 = .sdata:0x801D34A0; // type:object size:0x4 scope:local data:4byte +lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC +lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1 +lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7 +mgSeqOvlPrev = .sdata:0x801D34B8; // type:object size:0x4 data:4byte +wordStartE = .sdata:0x801D34BC; // type:object size:0x7 scope:local data:string +seqPunctTbl = .sdata:0x801D34C3; // type:object size:0x3 scope:local data:byte +wordStartJ = .sdata:0x801D34C6; // type:object size:0x6 scope:local +wordFinishJ = .sdata:0x801D34CC; // type:object size:0x8 scope:local +wordDrawJ = .sdata:0x801D34D4; // type:object size:0x6 scope:local +wordFinishE = .sdata:0x801D34DA; // type:object size:0x8 scope:local data:string +wordDrawE = .sdata:0x801D34E2; // type:object size:0x6 scope:local data:string +lbl_801D34E8 = .sdata:0x801D34E8; // type:object size:0x4 scope:local +lbl_801D34EC = .sdata:0x801D34EC; // type:object size:0x6 scope:local data:string +lbl_801D34F2 = .sdata:0x801D34F2; // type:object size:0x6 scope:local +lbl_801D34F8 = .sdata:0x801D34F8; // type:object size:0x6 scope:local data:string +lbl_801D34FE = .sdata:0x801D34FE; // type:object size:0x5 scope:local +lbl_801D3503 = .sdata:0x801D3503; // type:object size:0x6 scope:local data:string +lbl_801D3509 = .sdata:0x801D3509; // type:object size:0x5 scope:local +lbl_801D350E = .sdata:0x801D350E; // type:object size:0x6 scope:local data:string +lbl_801D3514 = .sdata:0x801D3514; // type:object size:0x4 scope:local +lbl_801D3518 = .sdata:0x801D3518; // type:object size:0x6 scope:local data:string +lbl_801D351E = .sdata:0x801D351E; // type:object size:0x6 scope:local +lbl_801D3524 = .sdata:0x801D3524; // type:object size:0x5 scope:local data:string +lbl_801D3529 = .sdata:0x801D3529; // type:object size:0x7 scope:local +lbl_801D3530 = .sdata:0x801D3530; // type:object size:0x6 scope:local data:string +lbl_801D3536 = .sdata:0x801D3536; // type:object size:0x7 scope:local +lbl_801D353D = .sdata:0x801D353D; // type:object size:0x8 scope:local data:string +lbl_801D3545 = .sdata:0x801D3545; // type:object size:0x5 scope:local +lbl_801D354A = .sdata:0x801D354A; // type:object size:0x7 scope:local data:string +lbl_801D3551 = .sdata:0x801D3551; // type:object size:0x6 scope:local +lbl_801D3557 = .sdata:0x801D3557; // type:object size:0x5 scope:local data:string +lbl_801D355C = .sdata:0x801D355C; // type:object size:0x5 scope:local +lbl_801D3561 = .sdata:0x801D3561; // type:object size:0x8 scope:local data:string +lbl_801D3569 = .sdata:0x801D3569; // type:object size:0x4 scope:local +lbl_801D356D = .sdata:0x801D356D; // type:object size:0x4 scope:local data:string +lbl_801D3571 = .sdata:0x801D3571; // type:object size:0x5 scope:local +lbl_801D3576 = .sdata:0x801D3576; // type:object size:0x6 scope:local data:string +lbl_801D357C = .sdata:0x801D357C; // type:object size:0x7 scope:local +lbl_801D3583 = .sdata:0x801D3583; // type:object size:0x6 scope:local +lbl_801D3589 = .sdata:0x801D3589; // type:object size:0x7 scope:local data:string +lbl_801D3590 = .sdata:0x801D3590; // type:object size:0x3 scope:local +lbl_801D3593 = .sdata:0x801D3593; // type:object size:0x5 scope:local data:string +lbl_801D3598 = .sdata:0x801D3598; // type:object size:0x6 scope:local +lbl_801D359E = .sdata:0x801D359E; // type:object size:0x5 scope:local data:string +lbl_801D35A3 = .sdata:0x801D35A3; // type:object size:0x7 scope:local +lbl_801D35AA = .sdata:0x801D35AA; // type:object size:0x6 scope:local +lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x6 scope:local data:string +pauseStr = .sdata:0x801D35B8; // type:object size:0x8 scope:local +lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8 +lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8 +lbl_801D35D0 = .sdata:0x801D35D0; // type:object size:0x8 +lbl_801D35D8 = .sdata:0x801D35D8; // type:object size:0x8 +colorN$400 = .sdata:0x801D35E0; // type:object size:0x4 data:byte +colorN$444 = .sdata:0x801D35E4; // type:object size:0x4 data:byte +winPrio = .sdata:0x801D35E8; // type:object size:0x8 scope:local data:2byte +lbl_801D35F0 = .sdata:0x801D35F0; // type:object size:0x8 scope:local +lbl_801D35F8 = .sdata:0x801D35F8; // type:object size:0x8 scope:local +lbl_801D3600 = .sdata:0x801D3600; // type:object size:0x8 scope:local +lbl_801D3608 = .sdata:0x801D3608; // type:object size:0x8 scope:local +lbl_801D3610 = .sdata:0x801D3610; // type:object size:0x8 scope:local +lbl_801D3618 = .sdata:0x801D3618; // type:object size:0x1 +lbl_801D3619 = .sdata:0x801D3619; // type:object size:0x5 data:string +lbl_801D361E = .sdata:0x801D361E; // type:object size:0x5 data:string +lbl_801D3623 = .sdata:0x801D3623; // type:object size:0x8 data:string +lbl_801D362B = .sdata:0x801D362B; // type:object size:0x6 data:string +lbl_801D3631 = .sdata:0x801D3631; // type:object size:0x7 +lbl_801D3638 = .sdata:0x801D3638; // type:object size:0x8 +SaveEnableF = .sdata:0x801D3640; // type:object size:0x4 data:4byte +lbl_801D3644 = .sdata:0x801D3644; // type:object size:0x2 data:string +lbl_801D3646 = .sdata:0x801D3646; // type:object size:0x2 data:string +SlotNameTbl = .sdata:0x801D3648; // type:object size:0x8 scope:local +saveMessWin = .sdata:0x801D3650; // type:object size:0x4 scope:local data:4byte +SR_PushTime = .sdata:0x801D3658; // type:object size:0x8 scope:local data:2byte +SR_ResetPad = .sdata:0x801D3660; // type:object size:0x1 scope:local data:byte +Xfb = .sdata:0x801D3664; // type:object size:0x8 scope:local data:4byte +nextOvl = .sdata:0x801D3670; // type:object size:0x4 scope:local data:4byte +colorN$488 = .sdata:0x801D3674; // type:object size:0x4 scope:local data:byte +lbl_801D3678 = .sdata:0x801D3678; // type:object size:0x8 +suitMdl = .sdata:0x801D3680; // type:object size:0x2 scope:local data:2byte +suitPlayerMdl = .sdata:0x801D3682; // type:object size:0x2 scope:local data:2byte +suitCurrMot = .sdata:0x801D3684; // type:object size:0x2 scope:local data:2byte +lbl_801D3686 = .sdata:0x801D3686; // type:object size:0x5 data:string +lbl_801D368B = .sdata:0x801D368B; // type:object size:0x5 data:string +lbl_801D3690 = .sdata:0x801D3690; // type:object size:0x6 data:string +lbl_801D3696 = .sdata:0x801D3696; // type:object size:0x6 data:string +lbl_801D369C = .sdata:0x801D369C; // type:object size:0x6 data:string +lbl_801D36A2 = .sdata:0x801D36A2; // type:object size:0x6 data:string +lbl_801D36A8 = .sdata:0x801D36A8; // type:object size:0x6 data:string +lbl_801D36AE = .sdata:0x801D36AE; // type:object size:0x6 data:string +lbl_801D36B4 = .sdata:0x801D36B4; // type:object size:0x6 data:string +lbl_801D36BA = .sdata:0x801D36BA; // type:object size:0x6 data:string +lbl_801D36C0 = .sdata:0x801D36C0; // type:object size:0x6 data:string +lbl_801D36C6 = .sdata:0x801D36C6; // type:object size:0x6 data:string +lbl_801D36CC = .sdata:0x801D36CC; // type:object size:0x6 data:string +lbl_801D36D2 = .sdata:0x801D36D2; // type:object size:0x8 data:string +windowID = .sdata:0x801D36E0; // type:object size:0x2 scope:local data:2byte +boardFX = .sdata:0x801D36E8; // type:object size:0x4 scope:local data:4byte +itemUse = .sdata:0x801D36F0; // type:object size:0x1 scope:local data:byte +buttonWin = .sdata:0x801D36F8; // type:object size:0x2 scope:local data:2byte +focusMdl = .sdata:0x801D36FA; // type:object size:0x2 scope:local data:2byte +spaceDrawMdl = .sdata:0x801D3700; // type:object size:0x2 scope:local data:2byte +starPlatMdl = .sdata:0x801D3702; // type:object size:0x2 scope:local data:2byte +itemMdl = .sdata:0x801D3708; // type:object size:0x2 scope:local data:2byte +itemChoice = .sdata:0x801D370A; // type:object size:0x1 scope:local data:byte +shopMdlParam = .sdata:0x801D370C; // type:object size:0x8 scope:local +hostMdl = .sdata:0x801D3714; // type:object size:0x2 scope:local data:2byte +shopMot = .sdata:0x801D3716; // type:object size:0x6 scope:local data:2byte +itemCurChoice = .sdata:0x801D371C; // type:object size:0x1 scope:local data:byte +defaultItemTbl = .sdata:0x801D371D; // type:object size:0x5 scope:local data:byte +hostMdl = .sdata:0x801D3728; // type:object size:0x2 scope:local data:2byte +lotteryMot = .sdata:0x801D372A; // type:object size:0x8 scope:local data:2byte +lotterySpr = .sdata:0x801D3732; // type:object size:0x2 scope:local data:2byte +lotteryInstWin = .sdata:0x801D3734; // type:object size:0x2 scope:local data:2byte +gripMdl = .sdata:0x801D3736; // type:object size:0x4 scope:local data:2byte +turnMot = .sdata:0x801D373A; // type:object size:0x2 scope:local data:2byte +ballMdl = .sdata:0x801D373C; // type:object size:0x8 scope:local data:2byte +loseMot = .sdata:0x801D3744; // type:object size:0x2 scope:local data:2byte +ticketSprGrp = .sdata:0x801D3746; // type:object size:0x2 scope:local data:2byte +warpSpringMdl = .sdata:0x801D3748; // type:object size:0x2 scope:local data:2byte +warpImpactMdl = .sdata:0x801D374A; // type:object size:0x2 scope:local data:2byte +warpImpactPlayer = .sdata:0x801D374C; // type:object size:0x4 scope:local +lbl_801D3750 = .sdata:0x801D3750; // type:object size:0x8 +wheelPos = .sdata:0x801D3758; // type:object size:0x1 scope:local data:byte +wheelSprGrp = .sdata:0x801D375A; // type:object size:0x2 scope:local data:2byte +wheelFXStat = .sdata:0x801D375C; // type:object size:0x4 scope:local data:4byte +boxObj = .sdata:0x801D3760; // type:object size:0x8 scope:local +itemMdl = .sdata:0x801D3768; // type:object size:0x2 scope:local data:2byte +starParman = .sdata:0x801D3770; // type:object size:0x2 scope:local data:2byte +hostMdl = .sdata:0x801D3772; // type:object size:0x2 scope:local data:2byte +diceMdl = .sdata:0x801D3778; // type:object size:0x6 scope:local +diceEff = .sdata:0x801D377E; // type:object size:0x6 scope:local +rollWin = .sdata:0x801D3784; // type:object size:0x2 scope:local data:2byte +lbl_801D3786 = .sdata:0x801D3786; // type:object size:0x3 scope:local data:string +itemPickupMdlId = .sdata:0x801D3790; // type:object size:0x2 scope:local data:2byte +yourTurnSprGrp = .sdata:0x801D3792; // type:object size:0x2 scope:local data:2byte +jumpMot = .sdata:0x801D3798; // type:object size:0x2 scope:local data:2byte +starMdl = .sdata:0x801D379A; // type:object size:0x2 scope:local data:2byte +lbl_801D37A0 = .sdata:0x801D37A0; // type:object size:0x8 +lbl_801D37A8 = .sdata:0x801D37A8; // type:object size:0x8 +jumpMot = .sdata:0x801D37B0; // type:object size:0x2 scope:local data:2byte +scareMot = .sdata:0x801D37B2; // type:object size:0x2 scope:local data:2byte +suitItemMdl = .sdata:0x801D37B4; // type:object size:0x2 scope:local data:2byte +bowserMdl = .sdata:0x801D37B6; // type:object size:0x2 scope:local data:2byte +lbl_801D37B8 = .sdata:0x801D37B8; // type:object size:0x3 data:string +lbl_801D37BB = .sdata:0x801D37BB; // type:object size:0x8 data:string +lbl_801D37C8 = .sdata:0x801D37C8; // type:object size:0x3 data:string +lbl_801D37D0 = .sdata:0x801D37D0; // type:object size:0x7 data:string +ballMdlTbl = .sdata:0x801D37D8; // type:object size:0x8 scope:local +lbl_801D37E0 = .sdata:0x801D37E0; // type:object size:0x4 data:string +luckyValue = .sdata:0x801D37E8; // type:object size:0x1 scope:local data:byte +cursorPos = .sdata:0x801D37E9; // type:object size:0x1 scope:local data:byte +houseShowMot = .sdata:0x801D37F0; // type:object size:0x2 scope:local data:2byte +houseHideMot = .sdata:0x801D37F2; // type:object size:0x2 scope:local data:2byte +ballMdl = .sdata:0x801D37F4; // type:object size:0x2 scope:local data:2byte +booMdl = .sdata:0x801D37F6; // type:object size:0x2 scope:local data:2byte +lbl_801D37F8 = .sdata:0x801D37F8; // type:object size:0x2 scope:local data:2byte +hostMdl = .sdata:0x801D37FA; // type:object size:0x2 scope:local data:2byte +houseMot = .sdata:0x801D37FC; // type:object size:0x6 scope:local data:2byte +lbl_801D3802 = .sdata:0x801D3802; // type:object size:0x7 data:string +lbl_801D3809 = .sdata:0x801D3809; // type:object size:0x7 data:string +lbl_801D3810 = .sdata:0x801D3810; // type:object size:0x7 data:string +lbl_801D3817 = .sdata:0x801D3817; // type:object size:0x7 data:string +lbl_801D381E = .sdata:0x801D381E; // type:object size:0x7 data:string +lbl_801D3825 = .sdata:0x801D3825; // type:object size:0x6 data:string +lbl_801D382B = .sdata:0x801D382B; // type:object size:0x7 data:string +lbl_801D3832 = .sdata:0x801D3832; // type:object size:0x6 data:string +lbl_801D3838 = .sdata:0x801D3838; // type:object size:0x3 data:string +logoSprGrp = .sdata:0x801D3840; // type:object size:0x2 scope:local data:2byte +logoSpr = .sdata:0x801D3842; // type:object size:0x2 scope:local data:2byte +camFocus = .sdata:0x801D3844; // type:object size:0x2 scope:local data:2byte +tapWin = .sdata:0x801D3846; // type:object size:0x2 scope:local data:2byte +streamStatus = .sdata:0x801D3848; // type:object size:0x4 scope:local data:4byte +tutorialRollTbl = .sdata:0x801D384C; // type:object size:0x4 scope:local +stopWin = .sdata:0x801D3850; // type:object size:0x2 scope:local data:2byte +wheelMdl = .sdata:0x801D3852; // type:object size:0x2 scope:local data:2byte +lbl_801D3854 = .sdata:0x801D3854; // type:object size:0x2 data:2byte +focusMdl = .sdata:0x801D3856; // type:object size:0x2 scope:local data:2byte +messBase = .sdata:0x801D3858; // type:object size:0x4 scope:local data:4byte +lbl_801D385C = .sdata:0x801D385C; // type:object size:0x6 data:string +lbl_801D3862 = .sdata:0x801D3862; // type:object size:0x7 data:string +lbl_801D3869 = .sdata:0x801D3869; // type:object size:0x7 data:string +lbl_801D3870 = .sdata:0x801D3870; // type:object size:0x7 data:string +lbl_801D3877 = .sdata:0x801D3877; // type:object size:0x5 data:string +lbl_801D387C = .sdata:0x801D387C; // type:object size:0x6 data:string +lbl_801D3882 = .sdata:0x801D3882; // type:object size:0x6 data:string +lbl_801D3888 = .sdata:0x801D3888; // type:object size:0x6 data:string +lbl_801D388E = .sdata:0x801D388E; // type:object size:0x4 data:string +lbl_801D3892 = .sdata:0x801D3892; // type:object size:0x5 data:string +lbl_801D3897 = .sdata:0x801D3897; // type:object size:0x5 data:string +lbl_801D389C = .sdata:0x801D389C; // type:object size:0x5 data:string +pausePad = .sdata:0x801D38A8; // type:object size:0x1 scope:local data:byte +pauseSprGrp = .sdata:0x801D38AA; // type:object size:0x2 scope:local data:2byte +padConfigSprGrp = .sdata:0x801D38AC; // type:object size:0x2 scope:local data:2byte +pauseCursorPos = .sdata:0x801D38AE; // type:object size:0x2 scope:local data:2byte +settingsControlWin = .sdata:0x801D38B0; // type:object size:0x2 scope:local data:2byte +controlWin = .sdata:0x801D38B2; // type:object size:0x2 scope:local data:2byte +quitWin = .sdata:0x801D38B4; // type:object size:0x2 scope:local data:2byte +settingsWin = .sdata:0x801D38B6; // type:object size:0x2 scope:local data:2byte +__OSCurrHeap = .sdata:0x801D38B8; // type:object size:0x8 data:4byte +__OSArenaLo = .sdata:0x801D38C0; // type:object size:0x4 scope:local data:4byte +@32 = .sdata:0x801D38C8; // type:object size:0x2 scope:local data:string +fontEncode$80 = .sdata:0x801D38D0; // type:object size:0x8 scope:local data:2byte +Unit01 = .sdata:0x801D38D8; // type:object size:0x8 +FirstRead = .sdata:0x801D38E0; // type:object size:0x4 scope:local data:4byte +lbl_801D38E8 = .sdata:0x801D38E8; // type:object size:0x8 scope:local data:string +autoInvalidation = .sdata:0x801D38F0; // type:object size:0x4 scope:local data:4byte +@35 = .sdata:0x801D38F8; // type:object size:0x2 scope:local data:string +@40 = .sdata:0x801D38FC; // type:object size:0x4 scope:local data:string +@41 = .sdata:0x801D3900; // type:object size:0x3 scope:local data:string +lbl_801D3908 = .sdata:0x801D3908; // type:object size:0x8 scope:local data:string +ClampRegion = .sdata:0x801D3910; // type:object size:0x8 scope:local data:byte +ResettingChan = .sdata:0x801D3918; // type:object size:0x4 scope:local data:4byte +XPatchBits = .sdata:0x801D391C; // type:object size:0x4 scope:local data:4byte +AnalogMode = .sdata:0x801D3920; // type:object size:0x4 scope:local data:4byte +Spec = .sdata:0x801D3924; // type:object size:0x4 scope:local data:4byte +MakeStatus = .sdata:0x801D3928; // type:object size:0x4 scope:local data:4byte +CmdReadOrigin = .sdata:0x801D392C; // type:object size:0x4 scope:local +CmdCalibrate = .sdata:0x801D3930; // type:object size:0x4 scope:local +gx = .sdata:0x801D3938; // type:object size:0x4 scope:global data:4byte +tbl1$215 = .sdata:0x801D3940; // type:object size:0x4 scope:local +tbl2$216 = .sdata:0x801D3944; // type:object size:0x4 scope:local +tbl3$217 = .sdata:0x801D3948; // type:object size:0x4 scope:local +GXTexMode0Ids = .sdata:0x801D3950; // type:object size:0x8 scope:local +GXTexMode1Ids = .sdata:0x801D3958; // type:object size:0x8 scope:local +GXTexImage0Ids = .sdata:0x801D3960; // type:object size:0x8 scope:local +GXTexImage1Ids = .sdata:0x801D3968; // type:object size:0x8 scope:local +GXTexImage2Ids = .sdata:0x801D3970; // type:object size:0x8 scope:local +GXTexImage3Ids = .sdata:0x801D3978; // type:object size:0x8 scope:local +GXTexTlutIds = .sdata:0x801D3980; // type:object size:0x8 scope:local +GX2HWFiltConv = .sdata:0x801D3988; // type:object size:0x6 scope:local +next = .sdata:0x801D3990; // type:object size:0x4 scope:local data:4byte +__CARDVendorID = .sdata:0x801D3998; // type:object size:0x2 data:2byte +__RTTI__Q23std9exception = .sdata:0x801D39A0; // type:object size:0x8 scope:local +thandler__3std = .sdata:0x801D39A8; // type:object size:0x4 scope:local data:4byte +uhandler__3std = .sdata:0x801D39AC; // type:object size:0x4 scope:local data:4byte +fragmentID = .sdata:0x801D39B0; // type:object size:0x4 scope:local data:4byte +__RTTI__Q23std9exception = .sdata:0x801D39B8; // type:object size:0x8 scope:local +__RTTI__Q23std13bad_exception = .sdata:0x801D39C0; // type:object size:0x8 scope:local +@wstringBase0 = .sdata:0x801D39C8; // type:object size:0x2 scope:local +__float_nan = .sdata:0x801D39D0; // type:object size:0x4 data:float +__float_huge = .sdata:0x801D39D4; // type:object size:0x4 data:float +last_rnd = .sdata:0x801D39D8; // type:object size:0x4 scope:local data:4byte +dspSRCType$437 = .sdata:0x801D39E0; // type:object size:0x6 align:4 +dspCoefSel$442 = .sdata:0x801D39E8; // type:object size:0x6 align:4 +dspSlaveLength = .sdata:0x801D39F0; // type:object size:0x2 data:2byte +SendCount = .sdata:0x801D39F8; // type:object size:0x1 scope:local data:byte +SystemInitF = .sbss:0x801D3A00; // type:object size:0x4 data:4byte +HuDvdErrWait = .sbss:0x801D3A04; // type:object size:0x4 data:4byte +fi_req = .sbss:0x801D3A08; // type:object size:0x4 scope:local +rf_req = .sbss:0x801D3A0C; // type:object size:0x4 scope:local +pe_req = .sbss:0x801D3A10; // type:object size:0x4 scope:local +vi_req = .sbss:0x801D3A14; // type:object size:0x4 scope:local +io_req = .sbss:0x801D3A18; // type:object size:0x4 scope:local +dsp_req = .sbss:0x801D3A1C; // type:object size:0x4 scope:local +cpu_wr_req = .sbss:0x801D3A20; // type:object size:0x4 scope:local +cpu_rd_req = .sbss:0x801D3A24; // type:object size:0x4 scope:local +tc_req = .sbss:0x801D3A28; // type:object size:0x4 scope:local +cp_req = .sbss:0x801D3A2C; // type:object size:0x4 scope:local +total_copy_clks = .sbss:0x801D3A30; // type:object size:0x4 scope:local +clr_pixels_in = .sbss:0x801D3A34; // type:object size:0x4 scope:local +bot_pixels_out = .sbss:0x801D3A38; // type:object size:0x4 scope:local +bot_pixels_in = .sbss:0x801D3A3C; // type:object size:0x4 scope:local +top_pixels_out = .sbss:0x801D3A40; // type:object size:0x4 scope:local +top_pixels_in = .sbss:0x801D3A44; // type:object size:0x4 scope:local +vstall = .sbss:0x801D3A48; // type:object size:0x4 scope:local +vmiss = .sbss:0x801D3A4C; // type:object size:0x4 scope:local +vcheck = .sbss:0x801D3A50; // type:object size:0x4 scope:local +GlobalCounter = .sbss:0x801D3A54; // type:object size:0x4 data:4byte +VCounter = .sbss:0x801D3A58; // type:object size:0x4 data:4byte +RumbleBit = .sbss:0x801D3A5C; // type:object size:0x4 scope:local data:4byte +_PadErr = .sbss:0x801D3A60; // type:object size:0x4 scope:local +_PadDStkRepOld = .sbss:0x801D3A64; // type:object size:0x4 scope:local +_PadDStkRepCnt = .sbss:0x801D3A68; // type:object size:0x4 scope:local +_PadDStkRep = .sbss:0x801D3A6C; // type:object size:0x4 scope:local +_PadDStk = .sbss:0x801D3A70; // type:object size:0x4 scope:local +_PadTrigR = .sbss:0x801D3A74; // type:object size:0x4 scope:local +_PadTrigL = .sbss:0x801D3A78; // type:object size:0x4 scope:local +_PadSubStkY = .sbss:0x801D3A7C; // type:object size:0x4 scope:local +_PadSubStkX = .sbss:0x801D3A80; // type:object size:0x4 scope:local +_PadStkY = .sbss:0x801D3A84; // type:object size:0x4 scope:local +_PadStkX = .sbss:0x801D3A88; // type:object size:0x4 scope:local +_PadRepCnt = .sbss:0x801D3A8C; // type:object size:0x8 scope:local +_PadBtnDown = .sbss:0x801D3A94; // type:object size:0x8 +_PadBtn = .sbss:0x801D3A9C; // type:object size:0x8 +HuPadErr = .sbss:0x801D3AA4; // type:object size:0x4 +HuPadDStkRep = .sbss:0x801D3AA8; // type:object size:0x4 +HuPadDStk = .sbss:0x801D3AAC; // type:object size:0x4 +HuPadTrigR = .sbss:0x801D3AB0; // type:object size:0x4 +HuPadTrigL = .sbss:0x801D3AB4; // type:object size:0x4 +HuPadSubStkY = .sbss:0x801D3AB8; // type:object size:0x4 +HuPadSubStkX = .sbss:0x801D3ABC; // type:object size:0x4 +HuPadStkY = .sbss:0x801D3AC0; // type:object size:0x4 +HuPadStkX = .sbss:0x801D3AC4; // type:object size:0x4 +HuPadBtnRep = .sbss:0x801D3AC8; // type:object size:0x8 +HuPadBtnDown = .sbss:0x801D3AD0; // type:object size:0x8 data:2byte +HuPadBtn = .sbss:0x801D3AD8; // type:object size:0x8 +beforeDvdStatus = .sbss:0x801D3AE0; // type:object size:0x4 scope:local data:4byte +CallBackStatus = .sbss:0x801D3AE4; // type:object size:0x4 scope:local data:4byte +shortAccessSleep = .sbss:0x801D3AE8; // type:object size:0x4 scope:local data:4byte +DataDirMax = .sbss:0x801D3AEC; // type:object size:0x4 scope:local data:4byte +DirDataSize = .sbss:0x801D3AF0; // type:object size:0x8 data:4byte +DemoStatEnable = .sbss:0x801D3AF8; // type:object size:0x4 scope:local data:4byte +worstVcount = .sbss:0x801D3AFC; // type:object size:0x4 data:4byte +minimumVcountf = .sbss:0x801D3B00; // type:object size:0x4 data:float +minimumVcount = .sbss:0x801D3B04; // type:object size:0x4 data:4byte +DemoCurrentBuffer = .sbss:0x801D3B08; // type:object size:0x4 data:4byte +DemoFrameBuffer2 = .sbss:0x801D3B0C; // type:object size:0x4 data:4byte +DemoFrameBuffer1 = .sbss:0x801D3B10; // type:object size:0x4 data:4byte +DefaultFifoObj = .sbss:0x801D3B14; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x801D3B18; // type:object size:0x4 scope:local data:4byte +currentHeapHandle = .sbss:0x801D3B1C; // type:object size:0x4 data:4byte +RenderMode = .sbss:0x801D3B20; // type:object size:0x8 data:4byte +saftyFrameF = .sbss:0x801D3B28; // type:object size:0x4 data:4byte +strlinecnt = .sbss:0x801D3B2C; // type:object size:0x2 data:2byte +empstrline = .sbss:0x801D3B2E; // type:object size:0x2 data:2byte +fontcolor = .sbss:0x801D3B30; // type:object size:0x8 data:4byte +procfunc = .sbss:0x801D3B38; // type:object size:0x4 data:4byte +processcnt = .sbss:0x801D3B3C; // type:object size:0x2 scope:local data:2byte +processcur = .sbss:0x801D3B40; // type:object size:0x4 scope:local data:4byte +processtop = .sbss:0x801D3B44; // type:object size:0x4 scope:local data:4byte +HuSprPauseF = .sbss:0x801D3B48; // type:object size:0x4 scope:local data:4byte +HuSprOrderNo = .sbss:0x801D3B4C; // type:object size:0x2 scope:local data:2byte +HuSprOrderNum = .sbss:0x801D3B4E; // type:object size:0x2 scope:local data:2byte +bmpCCIdx = .sbss:0x801D3B50; // type:object size:0x8 scope:local data:2byte +MaterialTop = .sbss:0x801D3B58; // type:object size:0x4 data:4byte +AttributeTop = .sbss:0x801D3B5C; // type:object size:0x4 data:4byte +ClusterTop = .sbss:0x801D3B60; // type:object size:0x4 data:4byte +vtxtop = .sbss:0x801D3B64; // type:object size:0x4 data:4byte +objtop = .sbss:0x801D3B68; // type:object size:0x4 data:4byte +NSymIndex = .sbss:0x801D3B6C; // type:object size:0x4 data:4byte +DicStringTable = .sbss:0x801D3B70; // type:object size:0x4 data:4byte +StringTable = .sbss:0x801D3B74; // type:object size:0x4 data:4byte +fileptr = .sbss:0x801D3B78; // type:object size:0x4 data:4byte +NormalDataTop = .sbss:0x801D3B7C; // type:object size:0x4 scope:local data:4byte +VertexDataTop = .sbss:0x801D3B80; // type:object size:0x4 scope:local data:4byte +MotionModel = .sbss:0x801D3B84; // type:object size:0x4 scope:local data:4byte +MotionOnly = .sbss:0x801D3B88; // type:object size:0x8 scope:local data:4byte +CancelTRXF = .sbss:0x801D3B90; // type:object size:0x4 scope:local data:4byte +TL32F = .sbss:0x801D3B94; // type:object size:0x4 scope:local data:4byte +PGName = .sbss:0x801D3B98; // type:object size:0x4 scope:local data:4byte +PGFinishF = .sbss:0x801D3B9C; // type:object size:0x4 scope:local data:4byte +polySize = .sbss:0x801D3BA0; // type:object size:0x2 scope:local data:2byte +curModelID = .sbss:0x801D3BA4; // type:object size:0x4 scope:local data:4byte +mallocNo = .sbss:0x801D3BA8; // type:object size:0x4 scope:local data:4byte +totalSize = .sbss:0x801D3BAC; // type:object size:0x4 scope:local data:4byte +DLTotalNum = .sbss:0x801D3BB0; // type:object size:0x4 scope:local data:4byte +faceNumBuf = .sbss:0x801D3BB4; // type:object size:0x4 scope:local data:4byte +faceCnt = .sbss:0x801D3BB8; // type:object size:0x2 scope:local data:2byte +quadCnt = .sbss:0x801D3BBA; // type:object size:0x2 scope:local data:2byte +triCnt = .sbss:0x801D3BBC; // type:object size:0x2 scope:local data:2byte +matChgCnt = .sbss:0x801D3BBE; // type:object size:0x2 scope:local data:2byte +DLFirstF = .sbss:0x801D3BC0; // type:object size:0x4 scope:local data:4byte +modelObjNum = .sbss:0x801D3BC4; // type:object size:0x2 data:2byte +modelMeshNum = .sbss:0x801D3BC6; // type:object size:0x2 data:2byte +totalTexCacheCnted = .sbss:0x801D3BC8; // type:object size:0x4 data:4byte +totalTexCacheCnt = .sbss:0x801D3BCC; // type:object size:0x4 data:4byte +totalTexCnted = .sbss:0x801D3BD0; // type:object size:0x4 data:4byte +totalTexCnt = .sbss:0x801D3BD4; // type:object size:0x4 data:4byte +totalMatCnted = .sbss:0x801D3BD8; // type:object size:0x4 data:4byte +totalMatCnt = .sbss:0x801D3BDC; // type:object size:0x4 data:4byte +totalPolyCnted = .sbss:0x801D3BE0; // type:object size:0x4 data:4byte +totalPolyCnt = .sbss:0x801D3BE4; // type:object size:0x4 data:4byte +hookIdx = .sbss:0x801D3BE8; // type:object size:0x2 scope:local data:2byte +kColorIdx = .sbss:0x801D3BEC; // type:object size:0x4 scope:local data:4byte +kColor = .sbss:0x801D3BF0; // type:object size:0x4 scope:local data:byte +projectionMapNo = .sbss:0x801D3BF4; // type:object size:0x2 scope:local data:2byte +toonMapNo = .sbss:0x801D3BF6; // type:object size:0x2 scope:local data:2byte +shadowMapNo = .sbss:0x801D3BF8; // type:object size:0x2 scope:local data:2byte +attachMotionF = .sbss:0x801D3BFC; // type:object size:0x4 scope:local data:4byte +vtxModeBak = .sbss:0x801D3C00; // type:object size:0x2 scope:local data:2byte +hiliteMapNo = .sbss:0x801D3C02; // type:object size:0x2 scope:local data:2byte +reflectionMapNo = .sbss:0x801D3C04; // type:object size:0x2 scope:local data:2byte +Hu3DObjInfoP = .sbss:0x801D3C08; // type:object size:0x4 scope:local data:4byte +DrawObjIdx = .sbss:0x801D3C0C; // type:object size:0x2 scope:local data:2byte +lightBit = .sbss:0x801D3C0E; // type:object size:0x2 scope:local data:2byte +drawCnt = .sbss:0x801D3C10; // type:object size:0x4 scope:local data:4byte +DrawData = .sbss:0x801D3C14; // type:object size:0x4 scope:local data:4byte +DLBufStartP = .sbss:0x801D3C18; // type:object size:0x4 scope:local data:4byte +DLBufP = .sbss:0x801D3C1C; // type:object size:0x4 scope:local data:4byte +shadingBak = .sbss:0x801D3C20; // type:object size:0x4 scope:local data:4byte +polyTypeBak = .sbss:0x801D3C24; // type:object size:0x1 scope:local data:byte +materialBak = .sbss:0x801D3C28; // type:object size:0x4 scope:local data:4byte +MTXIdx = .sbss:0x801D3C2C; // type:object size:0x2 data:2byte +modelKillAllF = .sbss:0x801D3C30; // type:object size:0x4 data:4byte +NoSyncF = .sbss:0x801D3C34; // type:object size:0x2 scope:local data:2byte +Hu3DCameraExistF = .sbss:0x801D3C36; // type:object size:0x2 data:2byte +Hu3DPauseF = .sbss:0x801D3C38; // type:object size:0x2 data:2byte +Hu3DMallocNo = .sbss:0x801D3C3C; // type:object size:0x4 data:4byte +Hu3DCameraBit = .sbss:0x801D3C40; // type:object size:0x2 data:2byte +Hu3DCameraNo = .sbss:0x801D3C42; // type:object size:0x2 data:2byte +Hu3DProjectionNum = .sbss:0x801D3C44; // type:object size:0x2 data:2byte +shadowModelDrawF = .sbss:0x801D3C48; // type:object size:0x4 data:4byte +Hu3DShadowF = .sbss:0x801D3C4C; // type:object size:0x4 data:4byte +Hu3DShadowCamBit = .sbss:0x801D3C50; // type:object size:0x2 data:2byte +toonAnim = .sbss:0x801D3C54; // type:object size:0x4 data:4byte +reflectMapNo = .sbss:0x801D3C58; // type:object size:0x2 data:2byte +BGColor = .sbss:0x801D3C5A; // type:object size:0x4 data:byte +bitMapPtr = .sbss:0x801D3C60; // type:object size:0x4 scope:local data:4byte +metf = .sbss:0x801D3C68; // type:object size:0x1 scope:local data:byte +tokenEndF = .sbss:0x801D3C6A; // type:object size:0x2 scope:local data:2byte +total_copy_clks = .sbss:0x801D3C6C; // type:object size:0x4 scope:local data:4byte +clr_pixels_in = .sbss:0x801D3C70; // type:object size:0x4 scope:local +bot_pixels_out = .sbss:0x801D3C74; // type:object size:0x4 scope:local +bot_pixels_in = .sbss:0x801D3C78; // type:object size:0x4 scope:local +top_pixels_out = .sbss:0x801D3C7C; // type:object size:0x4 scope:local +top_pixels_in = .sbss:0x801D3C80; // type:object size:0x4 scope:local +fi_req = .sbss:0x801D3C84; // type:object size:0x4 scope:local +rf_req = .sbss:0x801D3C88; // type:object size:0x4 scope:local +pe_req = .sbss:0x801D3C8C; // type:object size:0x4 scope:local +vi_req = .sbss:0x801D3C90; // type:object size:0x4 scope:local +io_req = .sbss:0x801D3C94; // type:object size:0x4 scope:local +dsp_req = .sbss:0x801D3C98; // type:object size:0x4 scope:local +cpu_wr_req = .sbss:0x801D3C9C; // type:object size:0x4 scope:local +cpu_rd_req = .sbss:0x801D3CA0; // type:object size:0x4 scope:local +tc_req = .sbss:0x801D3CA4; // type:object size:0x4 scope:local +cp_req = .sbss:0x801D3CA8; // type:object size:0x4 scope:local +vstall = .sbss:0x801D3CAC; // type:object size:0x4 scope:local +vmiss = .sbss:0x801D3CB0; // type:object size:0x4 scope:local +vcheck = .sbss:0x801D3CB4; // type:object size:0x4 scope:local +met1 = .sbss:0x801D3CB8; // type:object size:0x4 scope:local +met0 = .sbss:0x801D3CBC; // type:object size:0x4 scope:local +omdispinfo = .sbss:0x801D3CC0; // type:object size:0x2 data:2byte +omSysExitReq = .sbss:0x801D3CC2; // type:object size:0x2 data:2byte +omUPauseFlag = .sbss:0x801D3CC4; // type:object size:0x1 data:byte +omnextovlstat = .sbss:0x801D3CC8; // type:object size:0x4 scope:local data:4byte +omovlstat = .sbss:0x801D3CCC; // type:object size:0x4 data:4byte +omnextovlevtno = .sbss:0x801D3CD0; // type:object size:0x4 scope:local data:4byte +omovlevtno = .sbss:0x801D3CD4; // type:object size:0x4 data:4byte +omovlhisidx = .sbss:0x801D3CD8; // type:object size:0x4 data:4byte +omcurdll = .sbss:0x801D3CDC; // type:object size:0x4 data:4byte +omcurovl = .sbss:0x801D3CE0; // type:object size:0x4 data:4byte +omnextovl = .sbss:0x801D3CE4; // type:object size:0x4 data:4byte +omwatchproc = .sbss:0x801D3CE8; // type:object size:0x4 data:4byte +omDBGSysKeyObj = .sbss:0x801D3CEC; // type:object size:0x4 data:4byte +y_start = .sbss:0x801D3CF0; // type:object size:0x4 scope:local data:4byte +x_start = .sbss:0x801D3CF4; // type:object size:0x4 scope:local data:4byte +Draw_Color = .sbss:0x801D3CF8; // type:object size:0x3 scope:local data:byte +XFB_putc = .sbss:0x801D3CFC; // type:object size:0x4 scope:local data:4byte +omDBGMenuButton = .sbss:0x801D3D00; // type:object size:0x2 +CZoom = .sbss:0x801D3D04; // type:object size:0x4 data:float +omDLLFileList = .sbss:0x801D3D08; // type:object size:0x8 scope:local data:4byte +frand_seed = .sbss:0x801D3D10; // type:object size:0x8 scope:local data:4byte +fadeStat = .sbss:0x801D3D18; // type:object size:0x1 data:byte +musicOffF = .sbss:0x801D3D1C; // type:object size:0x4 data:4byte +Snd3DDistOffset = .sbss:0x801D3D20; // type:object size:0x4 data:float +Snd3DSpeedOffset = .sbss:0x801D3D24; // type:object size:0x4 data:float +Snd3DStartDisOffset = .sbss:0x801D3D28; // type:object size:0x4 data:float +Snd3DFrontSurDisOffset = .sbss:0x801D3D2C; // type:object size:0x4 data:float +Snd3DBackSurDisOffset = .sbss:0x801D3D30; // type:object size:0x4 data:float +HuAuxBVol = .sbss:0x801D3D34; // type:object size:0x1 scope:local data:byte +HuAuxAVol = .sbss:0x801D3D35; // type:object size:0x1 scope:local data:byte +auxBNoBak = .sbss:0x801D3D38; // type:object size:0x4 scope:local data:4byte +auxANoBak = .sbss:0x801D3D3C; // type:object size:0x4 scope:local data:4byte +sndGroupBak = .sbss:0x801D3D40; // type:object size:0x2 scope:local data:2byte +Hu3DAudVol = .sbss:0x801D3D42; // type:object size:0x2 scope:local data:2byte +Meshno = .sbss:0x801D3D48; // type:object size:0x4 scope:local data:4byte +Meshcnt = .sbss:0x801D3D4C; // type:object size:0x4 scope:local data:4byte +normtop = .sbss:0x801D3D50; // type:object size:0x4 scope:local data:4byte +normenv = .sbss:0x801D3D54; // type:object size:0x4 scope:local data:4byte +vtxenv = .sbss:0x801D3D58; // type:object size:0x4 scope:local data:4byte +CurHsf = .sbss:0x801D3D5C; // type:object size:0x4 scope:local data:4byte +objtop = .sbss:0x801D3D60; // type:object size:0x4 scope:local data:4byte +nMesh = .sbss:0x801D3D64; // type:object size:0x4 scope:local data:4byte +nObj = .sbss:0x801D3D68; // type:object size:0x4 scope:local data:4byte +MtxTop = .sbss:0x801D3D6C; // type:object size:0x4 data:4byte +Vertextop = .sbss:0x801D3D70; // type:object size:0x4 data:4byte +seqLanguage = .sbss:0x801D3D78; // type:object size:0x4 scope:local data:4byte +pauseProcess = .sbss:0x801D3D7C; // type:object size:0x4 scope:local data:4byte +pauseActiveF = .sbss:0x801D3D80; // type:object size:0x4 scope:local data:4byte +pauseExitF = .sbss:0x801D3D84; // type:object size:0x4 scope:local data:4byte +pauseWaitF = .sbss:0x801D3D88; // type:object size:0x4 scope:local data:4byte +seqRecordVal = .sbss:0x801D3D8C; // type:object size:0x4 scope:local data:4byte +seqPauseF = .sbss:0x801D3D90; // type:object size:0x2 scope:local data:2byte +seqSpeed = .sbss:0x801D3D92; // type:object size:0x2 scope:local data:2byte +lbl_801D3D94 = .sbss:0x801D3D94; // type:object size:0x1 data:byte +seqDoneF = .sbss:0x801D3D95; // type:object size:0x1 scope:local data:byte +seqTimer = .sbss:0x801D3D96; // type:object size:0x2 scope:local data:2byte +gid = .sbss:0x801D3D98; // type:object size:0x2 scope:local data:2byte +lbl_801D3DA0 = .sbss:0x801D3DA0; // type:object size:0x8 +wipeFadeInF = .sbss:0x801D3DA8; // type:object size:0x8 data:4byte +fontAnim = .sbss:0x801D3DB0; // type:object size:0x4 data:4byte +LanguageNo = .sbss:0x801D3DB4; // type:object size:0x1 scope:local data:byte +comKeyIdx = .sbss:0x801D3DB6; // type:object size:0x2 scope:local data:2byte +comKeyIdxNow = .sbss:0x801D3DB8; // type:object size:0x2 scope:local data:2byte +mesCharCnt = .sbss:0x801D3DBA; // type:object size:0x2 scope:local data:2byte +cancelCRF = .sbss:0x801D3DBC; // type:object size:0x4 scope:local data:4byte +fontWidthP = .sbss:0x801D3DC0; // type:object size:0x4 scope:local data:4byte +winAMemP = .sbss:0x801D3DC4; // type:object size:0x4 scope:local data:4byte +winInsertF = .sbss:0x801D3DC8; // type:object size:0x1 scope:local data:byte +winTabSize = .sbss:0x801D3DC9; // type:object size:0x1 scope:local data:byte +mesWInsert = .sbss:0x801D3DCA; // type:object size:0x8 scope:local +winMaxHeight = .sbss:0x801D3DD2; // type:object size:0x2 scope:local data:2byte +winMaxWidth = .sbss:0x801D3DD4; // type:object size:0x2 scope:local data:2byte +messDataNo = .sbss:0x801D3DD8; // type:object size:0x4 scope:local data:4byte +messDataPtr = .sbss:0x801D3DDC; // type:object size:0x4 data:4byte +winProc = .sbss:0x801D3DE0; // type:object size:0x4 scope:local data:4byte +cardAnimB = .sbss:0x801D3DE4; // type:object size:0x4 scope:local data:4byte +cardAnimA = .sbss:0x801D3DE8; // type:object size:0x4 scope:local data:4byte +cursorAnim = .sbss:0x801D3DEC; // type:object size:0x4 scope:local data:4byte +iconAnim = .sbss:0x801D3DF0; // type:object size:0x4 scope:local data:4byte +UnMountCnt = .sbss:0x801D3DF8; // type:object size:0x1 data:byte +cardWork = .sbss:0x801D3DFC; // type:object size:0x4 scope:local data:4byte +arqIdx = .sbss:0x801D3E00; // type:object size:0x2 scope:local data:2byte +arqCnt = .sbss:0x801D3E04; // type:object size:0x4 scope:local data:4byte +ARBase = .sbss:0x801D3E08; // type:object size:0x8 scope:local data:4byte +effectAMemP = .sbss:0x801D3E10; // type:object size:0x4 scope:local data:4byte +skipAnimUpdate = .sbss:0x801D3E14; // type:object size:0x4 scope:local data:4byte +ColisionCount = .sbss:0x801D3E18; // type:object size:0x4 data:4byte +topvtx = .sbss:0x801D3E1C; // type:object size:0x4 scope:local data:4byte +AttrHsf = .sbss:0x801D3E20; // type:object size:0x4 scope:local data:4byte +HitFaceCount = .sbss:0x801D3E24; // type:object size:0x4 data:4byte +nChar = .sbss:0x801D3E28; // type:object size:0x4 +nMap = .sbss:0x801D3E2C; // type:object size:0x4 data:4byte +AddZ = .sbss:0x801D3E30; // type:object size:0x4 data:float +AddX = .sbss:0x801D3E34; // type:object size:0x4 data:float +Initialized = .sbss:0x801D3E38; // type:object size:0x4 scope:local data:4byte +OldAIDCallback = .sbss:0x801D3E3C; // type:object size:0x4 scope:local data:4byte +AudioSystem = .sbss:0x801D3E40; // type:object size:0x4 scope:local data:4byte +bufIdx = .sbss:0x801D3E44; // type:object size:0x4 scope:local data:4byte +CurAudioBuffer = .sbss:0x801D3E48; // type:object size:0x4 scope:local data:4byte +LastAudioBuffer = .sbss:0x801D3E4C; // type:object size:0x4 scope:local data:4byte +SoundBufferIndex = .sbss:0x801D3E50; // type:object size:0x4 scope:local data:4byte +THPProc = .sbss:0x801D3E58; // type:object size:0x4 data:4byte +THPStart = .sbss:0x801D3E5C; // type:object size:0x2 scope:local data:2byte +THPFrame = .sbss:0x801D3E60; // type:object size:0x4 scope:local data:4byte +THPStat = .sbss:0x801D3E64; // type:object size:0x2 scope:local data:2byte +THPLoopF = .sbss:0x801D3E66; // type:object size:0x2 scope:local data:2byte +decodeThread = .sbss:0x801D3E68; // type:object size:0x4 scope:local data:4byte +decodeStackP = .sbss:0x801D3E6C; // type:object size:0x4 scope:local data:4byte +decodeRate = .sbss:0x801D3E70; // type:object size:0x4 scope:local data:4byte +audioTrack = .sbss:0x801D3E74; // type:object size:0x8 scope:local data:4byte +mgBoardHostEnableF = .sbss:0x801D3E80; // type:object size:0x1 +mgInstExitEnableF = .sbss:0x801D3E84; // type:object size:0x4 +mgPracticeEnableF = .sbss:0x801D3E88; // type:object size:0x4 data:4byte +mgQuitExtraF = .sbss:0x801D3E8C; // type:object size:0x4 data:4byte +mgRecordExtra = .sbss:0x801D3E90; // type:object size:0x4 +lbl_801D3E94 = .sbss:0x801D3E94; // type:object size:0x1 +mgBattleStarMax = .sbss:0x801D3E96; // type:object size:0x2 +mgBattleStar = .sbss:0x801D3E98; // type:object size:0x8 +mgTypeCurr = .sbss:0x801D3EA0; // type:object size:0x2 data:2byte +curSlotNo = .sbss:0x801D3EA8; // type:object size:0x2 data:2byte +curBoxNo = .sbss:0x801D3EAA; // type:object size:0x1 data:byte +saveExecF = .sbss:0x801D3EAC; // type:object size:0x4 +SLSerialNo = .sbss:0x801D3EB0; // type:object size:0x8 data:4byte +H_ResetReady = .sbss:0x801D3EB8; // type:object size:0x4 scope:local data:4byte +SR_RestartChk = .sbss:0x801D3EBC; // type:object size:0x4 scope:local data:4byte +SR_ExecReset = .sbss:0x801D3EC0; // type:object size:0x4 data:4byte +trychkBusyWait = .sbss:0x801D3EC4; // type:object size:0x4 scope:local data:4byte +XfbProg = .sbss:0x801D3EC8; // type:object size:0x4 scope:local data:4byte +XfbH = .sbss:0x801D3ECC; // type:object size:0x2 scope:local data:2byte +XfbW = .sbss:0x801D3ECE; // type:object size:0x2 scope:local data:2byte +boardMainProc = .sbss:0x801D3ED0; // type:object size:0x4 data:4byte +boardObjMan = .sbss:0x801D3ED4; // type:object size:0x4 data:4byte +cameraObj = .sbss:0x801D3ED8; // type:object size:0x4 scope:local data:4byte +tauntObj = .sbss:0x801D3EDC; // type:object size:0x4 scope:local data:4byte +cameraUseBackup = .sbss:0x801D3EE0; // type:object size:0x4 scope:local data:4byte +createFunc = .sbss:0x801D3EE4; // type:object size:0x4 scope:local data:4byte +destroyFunc = .sbss:0x801D3EE8; // type:object size:0x4 scope:local data:4byte +boardLightSetHook = .sbss:0x801D3EEC; // type:object size:0x4 data:4byte +boardLightResetHook = .sbss:0x801D3EF0; // type:object size:0x4 data:4byte +boardTurnFunc = .sbss:0x801D3EF4; // type:object size:0x4 data:4byte +boardStarGiveHook = .sbss:0x801D3EF8; // type:object size:0x4 data:4byte +boardStarShowNextHook = .sbss:0x801D3EFC; // type:object size:0x4 data:4byte +boardBowserHook = .sbss:0x801D3F00; // type:object size:0x4 data:4byte +boardTurnStartFunc = .sbss:0x801D3F04; // type:object size:0x4 data:4byte +filterObj = .sbss:0x801D3F08; // type:object size:0x4 scope:local data:4byte +confettiObj = .sbss:0x801D3F0C; // type:object size:0x4 scope:local data:4byte +last5GfxObj = .sbss:0x801D3F10; // type:object size:0x4 scope:local data:4byte +boardRandSeed = .sbss:0x801D3F14; // type:object size:0x4 data:4byte +boardMainObj = .sbss:0x801D3F18; // type:object size:0x4 data:4byte +megaDoubleDiceF = .sbss:0x801D3F20; // type:object size:0x4 scope:local data:4byte +bowserSuitObj = .sbss:0x801D3F24; // type:object size:0x4 scope:local data:4byte +junctionMask = .sbss:0x801D3F28; // type:object size:0x4 scope:local data:4byte +junctionObj = .sbss:0x801D3F2C; // type:object size:0x4 scope:local data:4byte +rollObj = .sbss:0x801D3F30; // type:object size:0x4 scope:local data:4byte +moveAwayObj = .sbss:0x801D3F34; // type:object size:0x4 scope:local data:4byte +junctionArrowRot = .sbss:0x801D3F38; // type:object size:0x8 scope:local +moveAwayPlayer = .sbss:0x801D3F40; // type:object size:0x4 scope:local data:byte +itemPrev = .sbss:0x801D3F44; // type:object size:0x1 scope:local data:byte +playerMot = .sbss:0x801D3F46; // type:object size:0x8 scope:local +boardPlayerMdl = .sbss:0x801D3F4E; // type:object size:0x8 +modelDataList = .sbss:0x801D3F58; // type:object size:0x4 scope:local data:4byte +modelMgrObj = .sbss:0x801D3F5C; // type:object size:0x4 scope:local data:4byte +modelDataNum = .sbss:0x801D3F60; // type:object size:0x2 scope:local data:2byte +winProc = .sbss:0x801D3F68; // type:object size:0x4 scope:local data:4byte +comKeyFunc = .sbss:0x801D3F6C; // type:object size:0x4 scope:local data:4byte +lbl_801D3F70 = .sbss:0x801D3F70; // type:object size:0x8 data:float +winAttr = .sbss:0x801D3F78; // type:object size:0x4 scope:local data:4byte +winMess = .sbss:0x801D3F7C; // type:object size:0x4 scope:local data:4byte +defaultChoice = .sbss:0x801D3F80; // type:object size:0x2 scope:local data:2byte +messSpeed = .sbss:0x801D3F82; // type:object size:0x2 scope:local data:2byte +winPrio = .sbss:0x801D3F84; // type:object size:0x2 scope:local data:2byte +winWait = .sbss:0x801D3F86; // type:object size:0x1 scope:local data:byte +winPause = .sbss:0x801D3F87; // type:object size:0x1 scope:local data:byte +disablePlayer = .sbss:0x801D3F88; // type:object size:0x1 scope:local data:byte +winPosIdx = .sbss:0x801D3F89; // type:object size:0x1 scope:local data:byte +winPortrait = .sbss:0x801D3F8A; // type:object size:0x1 scope:local data:byte +autoPickF = .sbss:0x801D3F8B; // type:object size:0x1 scope:local data:byte +winChoice = .sbss:0x801D3F8C; // type:object size:0x1 scope:local data:byte +boardSeq = .sbss:0x801D3F90; // type:object size:0x8 scope:local +viewProc = .sbss:0x801D3F98; // type:object size:0x4 scope:local data:4byte +pauseDisableF = .sbss:0x801D3F9C; // type:object size:0x1 scope:local data:byte +overheadObj = .sbss:0x801D3FA0; // type:object size:0x4 scope:local data:4byte +focusTimer = .sbss:0x801D3FA4; // type:object size:0x2 scope:local data:2byte +focusDestroyF = .sbss:0x801D3FA6; // type:object size:0x1 scope:local data:byte +viewMoveF = .sbss:0x801D3FA7; // type:object size:0x1 scope:local data:byte +viewPlayer = .sbss:0x801D3FA8; // type:object size:0x1 scope:local data:byte +viewControls = .sbss:0x801D3FA9; // type:object size:0x1 scope:local data:byte +spaceDrawF = .sbss:0x801D3FB0; // type:object size:0x2 scope:local data:2byte +spaceDrawCnt = .sbss:0x801D3FB4; // type:object size:0x4 scope:local data:4byte +walkEventFunc = .sbss:0x801D3FB8; // type:object size:0x4 scope:local data:4byte +walkMiniEventFunc = .sbss:0x801D3FBC; // type:object size:0x4 scope:local data:4byte +landEventFunc = .sbss:0x801D3FC0; // type:object size:0x4 scope:local data:4byte +lbl_801D3FC4 = .sbss:0x801D3FC4; // type:object size:0x8 data:2byte +spaceHiliteTexFmt = .sbss:0x801D3FCC; // type:object size:0x4 scope:local data:4byte +spaceTexFmt = .sbss:0x801D3FD0; // type:object size:0x4 scope:local data:4byte +spaceHiliteTexData = .sbss:0x801D3FD4; // type:object size:0x4 scope:local data:4byte +spaceTexData = .sbss:0x801D3FD8; // type:object size:0x4 scope:local data:4byte +spaceAttr = .sbss:0x801D3FDC; // type:object size:0x8 scope:local data:4byte +spaceCnt = .sbss:0x801D3FE4; // type:object size:0x4 scope:local data:2byte +shopProc = .sbss:0x801D3FE8; // type:object size:0x4 scope:local data:4byte +shopWinObj = .sbss:0x801D3FEC; // type:object size:0x4 scope:local data:4byte +itemGiveObj = .sbss:0x801D3FF0; // type:object size:0x4 scope:local data:4byte +itemChoiceObj = .sbss:0x801D3FF4; // type:object size:0x4 scope:local data:4byte +comF = .sbss:0x801D3FF8; // type:object size:0x4 scope:local data:4byte +angleVal = .sbss:0x801D3FFC; // type:object size:0x2 scope:local data:2byte +shopPlayer = .sbss:0x801D3FFE; // type:object size:0x1 scope:local data:byte +shopMdlPtr = .sbss:0x801D4000; // type:object size:0x4 scope:local data:4byte +shopMdlIdx = .sbss:0x801D4004; // type:object size:0x4 scope:local +lotteryProc = .sbss:0x801D4008; // type:object size:0x4 scope:local data:4byte +comInputDrawP = .sbss:0x801D400C; // type:object size:0x4 scope:local data:4byte +lotteryTicketPickObj = .sbss:0x801D4010; // type:object size:0x4 scope:local data:4byte +handUpdateF = .sbss:0x801D4014; // type:object size:0x4 scope:local data:4byte +comInputPos = .sbss:0x801D4018; // type:object size:0x1 scope:local data:byte +comLotteryWinType = .sbss:0x801D4019; // type:object size:0x1 scope:local data:byte +comLotteryType = .sbss:0x801D401A; // type:object size:0x1 scope:local data:byte +lbl_801D401B = .sbss:0x801D401B; // type:object size:0x1 data:byte +currPrize = .sbss:0x801D401C; // type:object size:0x1 scope:local data:byte +lotterySpace = .sbss:0x801D401E; // type:object size:0x2 scope:local data:2byte +lotteryMessBase = .sbss:0x801D4020; // type:object size:0x4 scope:local data:4byte +warpProcess = .sbss:0x801D4028; // type:object size:0x4 scope:local data:4byte +warpYVel = .sbss:0x801D402C; // type:object size:0x4 scope:local data:float +warpYFloor = .sbss:0x801D4030; // type:object size:0x4 scope:local data:float +warpSpace = .sbss:0x801D4034; // type:object size:0x2 scope:local data:2byte +warpImpactCnt = .sbss:0x801D4036; // type:object size:0x1 scope:local data:byte +warpTarget = .sbss:0x801D4037; // type:object size:0x1 scope:local data:byte +warpState = .sbss:0x801D4038; // type:object size:0x1 scope:local data:byte +charWheelObj = .sbss:0x801D4040; // type:object size:0x4 scope:local data:4byte +targetF = .sbss:0x801D4044; // type:object size:0x2 scope:local data:2byte +angleOfs = .sbss:0x801D4048; // type:object size:0x4 scope:local data:float +targetVal = .sbss:0x801D404C; // type:object size:0x2 scope:local data:2byte +wheelSpeed = .sbss:0x801D4050; // type:object size:0x4 scope:local data:float +wheelTimer = .sbss:0x801D4054; // type:object size:0x2 scope:local data:2byte +comDelay = .sbss:0x801D4056; // type:object size:0x2 scope:local data:2byte +wheelChars = .sbss:0x801D4058; // type:object size:0x4 scope:local data:byte +mushroomProc = .sbss:0x801D4060; // type:object size:0x4 scope:local data:4byte +itemGiveObj = .sbss:0x801D4064; // type:object size:0x4 scope:local data:4byte +pickerChoice = .sbss:0x801D4068; // type:object size:0x1 scope:local data:byte +itemResult = .sbss:0x801D4069; // type:object size:0x1 scope:local data:byte +starProc = .sbss:0x801D4070; // type:object size:0x4 scope:local data:4byte +giveStarObj = .sbss:0x801D4074; // type:object size:0x4 scope:local data:4byte +starEffAnim = .sbss:0x801D4078; // type:object size:0x4 scope:local data:4byte +starDoneF = .sbss:0x801D407C; // type:object size:0x2 scope:local data:2byte +showNextObj = .sbss:0x801D4080; // type:object size:0x4 scope:local data:4byte +hostMot = .sbss:0x801D4084; // type:object size:0x4 scope:local data:2byte +rollProc = .sbss:0x801D4088; // type:object size:0x4 scope:local data:4byte +tutorialRollF = .sbss:0x801D408C; // type:object size:0x1 scope:local data:byte +sameRollCoinStr = .sbss:0x801D408D; // type:object size:0x8 scope:local +lbl_801D4098 = .sbss:0x801D4098; // type:object size:0x4 data:4byte +diceSize = .sbss:0x801D409C; // type:object size:0x1 scope:local data:byte +destMode = .sbss:0x801D409D; // type:object size:0x1 scope:local data:byte +maxRoll = .sbss:0x801D409E; // type:object size:0x1 scope:local data:byte +inputTimer = .sbss:0x801D409F; // type:object size:0x1 scope:local data:byte +numDice = .sbss:0x801D40A0; // type:object size:0x1 scope:local data:byte +rollPlayer = .sbss:0x801D40A1; // type:object size:0x1 scope:local data:byte +diceValue = .sbss:0x801D40A2; // type:object size:0x3 scope:local data:byte +statusProc = .sbss:0x801D40A8; // type:object size:0x4 scope:local data:4byte +itemWindowObj = .sbss:0x801D40AC; // type:object size:0x4 scope:local data:4byte +pickerObj = .sbss:0x801D40B0; // type:object size:0x4 scope:local data:4byte +yourTurnObj = .sbss:0x801D40B4; // type:object size:0x4 scope:local data:4byte +itemUseProc = .sbss:0x801D40B8; // type:object size:0x4 scope:local data:4byte +itemPickObj = .sbss:0x801D40BC; // type:object size:0x4 scope:local data:4byte +itemPickupPos = .sbss:0x801D40C0; // type:object size:0x4 scope:local data:float +itemRandTbl = .sbss:0x801D40C4; // type:object size:0x6 scope:local +teamItemPlayer = .sbss:0x801D40CA; // type:object size:0x1 scope:local data:byte +itemUsed = .sbss:0x801D40CB; // type:object size:0x1 scope:local data:byte +itemPlayer = .sbss:0x801D40CC; // type:object size:0x1 scope:local data:byte +yourTurnSpr = .sbss:0x801D40CE; // type:object size:0x2 scope:local data:2byte +lbl_801D40D0 = .sbss:0x801D40D0; // type:object size:0x4 data:4byte +pickerBackF = .sbss:0x801D40D4; // type:object size:0x4 scope:local data:4byte +pickerChoiceDefault = .sbss:0x801D40D8; // type:object size:0x1 scope:local data:byte +pickerChoice = .sbss:0x801D40D9; // type:object size:0x1 scope:local data:byte +boardItemUser = .sbss:0x801D40DA; // type:object size:0x1 data:byte +itemTeamF = .sbss:0x801D40DB; // type:object size:0x1 scope:local data:byte +itemTeam = .sbss:0x801D40DC; // type:object size:0x1 scope:local data:byte +blockProc = .sbss:0x801D40E0; // type:object size:0x4 scope:local data:4byte +blockObj = .sbss:0x801D40E4; // type:object size:0x4 scope:local data:4byte +rotY = .sbss:0x801D40E8; // type:object size:0x4 scope:local data:float +scaleAngle = .sbss:0x801D40EC; // type:object size:0x4 scope:local data:float +rotMax = .sbss:0x801D40F0; // type:object size:0x4 scope:local data:float +itemProc = .sbss:0x801D40F8; // type:object size:0x4 scope:local data:4byte +geniePlayerMot = .sbss:0x801D40FC; // type:object size:0x6 scope:local data:2byte +genieParticleAnim = .sbss:0x801D4104; // type:object size:0x4 scope:local data:4byte +genieFov = .sbss:0x801D4108; // type:object size:0x4 scope:local data:float +booCoinStr = .sbss:0x801D410C; // type:object size:0x8 scope:local +booBallAlpha = .sbss:0x801D4114; // type:object size:0x4 scope:local data:float +booBallMdl = .sbss:0x801D4118; // type:object size:0x2 scope:local data:2byte +suitCommonMot = .sbss:0x801D411C; // type:object size:0x8 scope:local data:4byte +suitMot = .sbss:0x801D4124; // type:object size:0x8 scope:local data:4byte +suitMdl = .sbss:0x801D412C; // type:object size:0x2 scope:local data:2byte +currItem = .sbss:0x801D412E; // type:object size:0x1 scope:local data:byte +currItemRestore = .sbss:0x801D412F; // type:object size:0x1 scope:local data:byte +itemBagItems = .sbss:0x801D4130; // type:object size:0x6 scope:local +bowserProc = .sbss:0x801D4138; // type:object size:0x4 scope:local data:4byte +bowserObj = .sbss:0x801D413C; // type:object size:0x4 scope:local data:4byte +miniBowserObj = .sbss:0x801D4140; // type:object size:0x4 scope:local data:4byte +bowserEventObj = .sbss:0x801D4144; // type:object size:0x4 scope:local data:4byte +miniBowserBalloonObj = .sbss:0x801D4148; // type:object size:0x4 scope:local data:4byte +suitGiveObj = .sbss:0x801D414C; // type:object size:0x4 scope:local data:4byte +coinStealStr = .sbss:0x801D4150; // type:object size:0x8 scope:local +coinStealStrAll = .sbss:0x801D4158; // type:object size:0x8 scope:local +fireAnim = .sbss:0x801D4160; // type:object size:0x4 scope:local data:4byte +fireParMan = .sbss:0x801D4164; // type:object size:0x2 scope:local data:2byte +playerMot = .sbss:0x801D4166; // type:object size:0x8 scope:local data:2byte +eventSpace = .sbss:0x801D416E; // type:object size:0x2 scope:local data:2byte +eventType = .sbss:0x801D4170; // type:object size:0x1 scope:local data:byte +eventPlayer = .sbss:0x801D4171; // type:object size:0x1 scope:local data:byte +battleProc = .sbss:0x801D4178; // type:object size:0x4 scope:local data:4byte +battleObj = .sbss:0x801D417C; // type:object size:0x4 scope:local data:4byte +explodeObj = .sbss:0x801D4180; // type:object size:0x4 scope:local data:4byte +battleCoinPosF = .sbss:0x801D4184; // type:object size:0x4 scope:local data:float +battleCoinSpeed = .sbss:0x801D4188; // type:object size:0x4 scope:local data:float +totalCoinStr = .sbss:0x801D418C; // type:object size:0x8 scope:local +battleMGIdx = .sbss:0x801D4194; // type:object size:0x2 scope:local data:byte +battleCoinIdx = .sbss:0x801D4196; // type:object size:0x1 scope:local data:byte +currSpace = .sbss:0x801D4198; // type:object size:0x2 scope:local data:2byte +mgChoice = .sbss:0x801D419A; // type:object size:0x1 scope:local data:byte +coinTakeMax = .sbss:0x801D419B; // type:object size:0x1 scope:local data:byte +currPlayer = .sbss:0x801D419C; // type:object size:0x1 scope:local data:byte +fortuneProc = .sbss:0x801D41A0; // type:object size:0x4 scope:local data:4byte +fortunePlatformObj = .sbss:0x801D41A4; // type:object size:0x4 scope:local data:4byte +comStar = .sbss:0x801D41A8; // type:object size:0x1 scope:local data:byte +comCoin = .sbss:0x801D41A9; // type:object size:0x1 scope:local data:byte +comPrize = .sbss:0x801D41AA; // type:object size:0x1 scope:local data:byte +comPlayer1 = .sbss:0x801D41AB; // type:object size:0x1 scope:local data:byte +comPlayer2 = .sbss:0x801D41AC; // type:object size:0x1 scope:local data:byte +currPlayer = .sbss:0x801D41AD; // type:object size:0x1 scope:local data:byte +booEventObj = .sbss:0x801D41B0; // type:object size:0x4 scope:local data:4byte +ballObj = .sbss:0x801D41B4; // type:object size:0x4 scope:local data:4byte +ballCameraObj = .sbss:0x801D41B8; // type:object size:0x4 scope:local data:4byte +ballBooObj = .sbss:0x801D41BC; // type:object size:0x4 scope:local data:4byte +ballPlayerObj = .sbss:0x801D41C0; // type:object size:0x4 scope:local data:4byte +ballTakeCoinObj = .sbss:0x801D41C4; // type:object size:0x4 scope:local data:4byte +attackTimer = .sbss:0x801D41C8; // type:object size:0x4 scope:local data:4byte +battleTimer = .sbss:0x801D41CC; // type:object size:0x4 scope:local data:4byte +starChoiceEnable = .sbss:0x801D41D0; // type:object size:0x3 scope:local +stealAvail = .sbss:0x801D41D3; // type:object size:0x3 scope:local +punchCount = .sbss:0x801D41D6; // type:object size:0x1 scope:local data:byte +stealSuccess = .sbss:0x801D41D7; // type:object size:0x1 scope:local data:byte +stealValue = .sbss:0x801D41D8; // type:object size:0x1 scope:local data:byte +booKillF = .sbss:0x801D41DC; // type:object size:0x4 scope:local data:4byte +stealType = .sbss:0x801D41E0; // type:object size:0x1 scope:local data:byte +stealTarget = .sbss:0x801D41E1; // type:object size:0x1 scope:local data:byte +lbl_801D41E2 = .sbss:0x801D41E2; // type:object size:0x1 data:byte +mgSetupProc = .sbss:0x801D41E8; // type:object size:0x4 scope:local data:4byte +mgSetupObj = .sbss:0x801D41EC; // type:object size:0x4 scope:local data:4byte +hiliteShowF = .sbss:0x801D41F0; // type:object size:0x1 scope:local data:byte +hiliteBlinkLen = .sbss:0x801D41F1; // type:object size:0x1 scope:local data:byte +hiliteTimer = .sbss:0x801D41F2; // type:object size:0x1 scope:local data:byte +mgPlayBattle = .sbss:0x801D41F4; // type:object size:0x4 scope:local +mgPlay2Vs2 = .sbss:0x801D41F8; // type:object size:0x6 scope:local +mgPlay1Vs3 = .sbss:0x801D41FE; // type:object size:0x6 scope:local +mgPlayBattleLen = .sbss:0x801D4204; // type:object size:0x1 scope:local data:byte +mgPlay2Vs2Len = .sbss:0x801D4205; // type:object size:0x1 scope:local data:byte +mgPlay1Vs3Len = .sbss:0x801D4206; // type:object size:0x1 scope:local data:byte +mgPlay4PLen = .sbss:0x801D4207; // type:object size:0x1 scope:local data:byte +mgNext = .sbss:0x801D4208; // type:object size:0x2 scope:local data:2byte +hilitePos = .sbss:0x801D420C; // type:object size:0x4 scope:local data:float +luckyF = .sbss:0x801D4210; // type:object size:0x4 scope:local data:4byte +mgType = .sbss:0x801D4214; // type:object size:0x1 scope:local data:byte +houseProc = .sbss:0x801D4218; // type:object size:0x4 scope:local data:4byte +stealAmountStr = .sbss:0x801D421C; // type:object size:0x8 scope:local +comCoinStealTarget = .sbss:0x801D4224; // type:object size:0x4 scope:local data:4byte +comStarStealTarget = .sbss:0x801D4228; // type:object size:0x1 scope:local data:byte +stealTarget = .sbss:0x801D4229; // type:object size:0x1 scope:local data:byte +currPlayer = .sbss:0x801D422A; // type:object size:0x1 scope:local data:byte +startProc = .sbss:0x801D4230; // type:object size:0x4 scope:local data:4byte +playerOrderOld = .sbss:0x801D4234; // type:object size:0x4 scope:local +playerOrderNew = .sbss:0x801D4238; // type:object size:0x4 scope:local +startSpace = .sbss:0x801D423C; // type:object size:0x2 scope:local data:2byte +hostMdl = .sbss:0x801D423E; // type:object size:0x2 scope:local data:2byte +lotteryDrawWheelObj = .sbss:0x801D4240; // type:object size:0x4 scope:local data:4byte +lotteryDrawObj = .sbss:0x801D4244; // type:object size:0x4 scope:local data:4byte +hostMoveObj = .sbss:0x801D4248; // type:object size:0x4 scope:local data:4byte +teamResultObj = .sbss:0x801D424C; // type:object size:0x4 scope:local data:4byte +last5Proc = .sbss:0x801D4250; // type:object size:0x4 scope:local data:4byte +last5RouletteObj = .sbss:0x801D4254; // type:object size:0x4 scope:local data:4byte +hostMdl = .sbss:0x801D4258; // type:object size:0x2 scope:local data:2byte +last5Space = .sbss:0x801D425A; // type:object size:0x2 scope:local data:2byte +last5Player = .sbss:0x801D425C; // type:object size:0x1 scope:local data:byte +numTickets = .sbss:0x801D425D; // type:object size:0x1 scope:local data:byte +currTicket = .sbss:0x801D425E; // type:object size:0x1 scope:local data:byte +mainProcess = .sbss:0x801D4260; // type:object size:0x4 scope:local data:4byte +quitProcess = .sbss:0x801D4264; // type:object size:0x4 scope:local data:4byte +configObj = .sbss:0x801D4268; // type:object size:0x4 scope:local data:4byte +boxState = .sbss:0x801D426C; // type:object size:0x8 scope:local +cursorPos = .sbss:0x801D4274; // type:object size:0x1 scope:local data:byte +hostMdl = .sbss:0x801D4276; // type:object size:0x2 scope:local data:2byte +hostOldLayer = .sbss:0x801D4278; // type:object size:0x1 scope:local data:byte +mainScreenF = .sbss:0x801D4279; // type:object size:0x1 scope:local data:byte +pauseQuitF = .sbss:0x801D427A; // type:object size:0x1 scope:local data:byte +childNodeCnt = .sbss:0x801D4280; // type:object size:0x2 scope:local data:2byte +numCandidates = .sbss:0x801D4282; // type:object size:0x2 scope:local data:2byte +gameStatCopy = .sbss:0x801D4288; // type:object size:0x4 scope:local data:4byte +systemCopy = .sbss:0x801D428C; // type:object size:0x4 scope:local data:4byte +playerCopy = .sbss:0x801D4290; // type:object size:0x4 scope:local data:4byte +playerCfgCopy = .sbss:0x801D4294; // type:object size:0x4 scope:local data:4byte +tutorialProcess = .sbss:0x801D4298; // type:object size:0x4 scope:local data:4byte +boardTutorialF = .sbss:0x801D429C; // type:object size:0x1 data:byte +hostMdl = .sbss:0x801D429E; // type:object size:0x2 scope:local data:2byte +boardTutorialUseItem = .sbss:0x801D42A0; // type:object size:0x1 data:byte +boardTutorialBlockF = .sbss:0x801D42A1; // type:object size:0x1 data:byte +boardTutorialBlockItem = .sbss:0x801D42A2; // type:object size:0x1 data:byte +boardTutorialBlockPos = .sbss:0x801D42A4; // type:object size:0x4 data:4byte +boardTutorialDirInputTime = .sbss:0x801D42A8; // type:object size:0x2 data:2byte +boardTutorialDirInputY = .sbss:0x801D42AA; // type:object size:0x1 data:byte +boardTutorialDirInputX = .sbss:0x801D42AB; // type:object size:0x1 data:byte +tutorialHook = .sbss:0x801D42AC; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x801D42B0; // type:object size:0x4 scope:local data:4byte +BI2DebugFlag = .sbss:0x801D42B4; // type:object size:0x4 scope:local data:4byte +BI2DebugFlagHolder = .sbss:0x801D42B8; // type:object size:0x4 scope:local data:4byte +__OSIsGcam = .sbss:0x801D42BC; // type:object size:0x4 scope:global data:4byte +AreWeInitialized = .sbss:0x801D42C0; // type:object size:0x4 scope:local data:4byte +OSExceptionTable = .sbss:0x801D42C4; // type:object size:0x4 scope:local data:4byte +__OSSavedRegionEnd = .sbss:0x801D42C8; // type:object size:0x4 scope:global data:4byte +__OSSavedRegionStart = .sbss:0x801D42CC; // type:object size:0x4 scope:global data:4byte +__OSInIPL = .sbss:0x801D42D0; // type:object size:0x4 scope:global data:4byte +__OSStartTime = .sbss:0x801D42D8; // type:object size:0x8 scope:global data:4byte +AlarmQueue = .sbss:0x801D42E0; // type:object size:0x8 scope:local data:4byte +HeapArray = .sbss:0x801D42E8; // type:object size:0x4 scope:local data:4byte +NumHeaps = .sbss:0x801D42EC; // type:object size:0x4 scope:local data:4byte +ArenaStart = .sbss:0x801D42F0; // type:object size:0x4 scope:local data:4byte +ArenaEnd = .sbss:0x801D42F4; // type:object size:0x4 scope:local data:4byte +__OSArenaHi = .sbss:0x801D42F8; // type:object size:0x4 scope:local data:4byte +InterruptHandlerTable = .sbss:0x801D4300; // type:object size:0x4 scope:local data:4byte +__OSLastInterruptSrr0 = .sbss:0x801D4304; // type:object size:0x4 scope:global data:4byte +__OSLastInterrupt = .sbss:0x801D4308; // type:object size:0x2 scope:global data:2byte +__OSLastInterruptTime = .sbss:0x801D4310; // type:object size:0x8 scope:global data:4byte +SaveStart = .sbss:0x801D4318; // type:object size:0x4 scope:local data:4byte +SaveEnd = .sbss:0x801D431C; // type:object size:0x4 scope:local data:4byte +Prepared = .sbss:0x801D4320; // type:object size:0x8 scope:local data:4byte +ResetFunctionQueue = .sbss:0x801D4328; // type:object size:0x8 scope:local data:4byte +ResetCallback = .sbss:0x801D4330; // type:object size:0x4 data:4byte +Down = .sbss:0x801D4334; // type:object size:0x4 data:4byte +LastState = .sbss:0x801D4338; // type:object size:0x8 scope:local data:4byte +HoldUp = .sbss:0x801D4340; // type:object size:0x8 align:8 data:4byte +HoldDown = .sbss:0x801D4348; // type:object size:0x8 align:8 data:4byte +RunQueueBits = .sbss:0x801D4350; // type:object size:0x4 scope:local data:4byte +RunQueueHint = .sbss:0x801D4354; // type:object size:0x4 scope:local data:4byte +Reschedule = .sbss:0x801D4358; // type:object size:0x4 scope:local data:4byte +__DBInterface = .sbss:0x801D4360; // type:object size:0x4 scope:global data:4byte +DBVerbose = .sbss:0x801D4364; // type:object size:0x4 scope:global data:4byte +StopAtNextInt = .sbss:0x801D4368; // type:object size:0x4 scope:local data:4byte +LastLength = .sbss:0x801D436C; // type:object size:0x4 scope:local data:4byte +Callback = .sbss:0x801D4370; // type:object size:0x4 scope:local data:4byte +ResetCoverCallback = .sbss:0x801D4374; // type:object size:0x4 scope:local data:4byte +LastResetEnd = .sbss:0x801D4378; // type:object size:0x8 scope:local data:4byte +ResetOccurred = .sbss:0x801D4380; // type:object size:0x4 scope:local data:4byte +WaitingCoverClose = .sbss:0x801D4384; // type:object size:0x4 scope:local data:4byte +Breaking = .sbss:0x801D4388; // type:object size:0x4 scope:local data:4byte +WorkAroundType = .sbss:0x801D438C; // type:object size:0x4 scope:local data:4byte +WorkAroundSeekLocation = .sbss:0x801D4390; // type:object size:0x4 scope:local data:4byte +LastReadFinished = .sbss:0x801D4398; // type:object size:0x8 scope:local data:4byte +LastReadIssued = .sbss:0x801D43A0; // type:object size:0x8 scope:local data:4byte +LastCommandWasRead = .sbss:0x801D43A8; // type:object size:0x4 scope:local data:4byte +NextCommandNumber = .sbss:0x801D43AC; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x801D43B0; // type:object size:0x4 scope:local data:4byte +FstStart = .sbss:0x801D43B4; // type:object size:0x4 scope:local data:4byte +FstStringStart = .sbss:0x801D43B8; // type:object size:0x4 scope:local data:4byte +MaxEntryNum = .sbss:0x801D43BC; // type:object size:0x4 scope:local data:4byte +currentDirectory = .sbss:0x801D43C0; // type:object size:0x4 scope:local data:4byte +__DVDLongFileNameFlag = .sbss:0x801D43C4; // type:object size:0x4 scope:global data:4byte +__DVDThreadQueue = .sbss:0x801D43C8; // type:object size:0x8 scope:global +executing = .sbss:0x801D43D0; // type:object size:0x4 scope:local data:4byte +currID = .sbss:0x801D43D4; // type:object size:0x4 scope:local data:4byte +bootInfo = .sbss:0x801D43D8; // type:object size:0x4 scope:local data:4byte +PauseFlag = .sbss:0x801D43DC; // type:object size:0x4 scope:local data:4byte +PausingFlag = .sbss:0x801D43E0; // type:object size:0x4 scope:local data:4byte +AutoFinishing = .sbss:0x801D43E4; // type:object size:0x4 scope:local data:4byte +FatalErrorFlag = .sbss:0x801D43E8; // type:object size:0x4 scope:local data:4byte +CurrCommand = .sbss:0x801D43EC; // type:object size:0x4 scope:local data:4byte +Canceling = .sbss:0x801D43F0; // type:object size:0x4 scope:local data:4byte +CancelCallback = .sbss:0x801D43F4; // type:object size:0x4 scope:local data:4byte +ResumeFromHere = .sbss:0x801D43F8; // type:object size:0x4 scope:local data:4byte +CancelLastError = .sbss:0x801D43FC; // type:object size:0x4 scope:local data:4byte +LastError = .sbss:0x801D4400; // type:object size:0x4 scope:local data:4byte +NumInternalRetry = .sbss:0x801D4404; // type:object size:0x4 scope:local data:4byte +ResetRequired = .sbss:0x801D4408; // type:object size:0x4 scope:local data:4byte +FirstTimeInBootrom = .sbss:0x801D440C; // type:object size:0x4 scope:local data:4byte +DVDInitialized = .sbss:0x801D4410; // type:object size:0x4 scope:local data:4byte +LastState = .sbss:0x801D4414; // type:object size:0x4 scope:local data:4byte +status = .sbss:0x801D4418; // type:object size:0x4 scope:local data:4byte +bb2 = .sbss:0x801D441C; // type:object size:0x4 scope:local data:4byte +idTmp = .sbss:0x801D4420; // type:object size:0x4 scope:local data:4byte +retraceCount = .sbss:0x801D4428; // type:object size:0x4 scope:local data:4byte +flushFlag = .sbss:0x801D442C; // type:object size:0x4 scope:local data:4byte +retraceQueue = .sbss:0x801D4430; // type:object size:0x8 scope:local +PreCB = .sbss:0x801D4438; // type:object size:0x4 scope:local data:4byte +PostCB = .sbss:0x801D443C; // type:object size:0x4 scope:local data:4byte +encoderType = .sbss:0x801D4440; // type:object size:0x4 scope:local data:4byte +displayOffsetH = .sbss:0x801D4444; // type:object size:0x2 scope:local data:2byte +displayOffsetV = .sbss:0x801D4446; // type:object size:0x2 scope:local data:2byte +changeMode = .sbss:0x801D4448; // type:object size:0x4 scope:local data:4byte +changed = .sbss:0x801D4450; // type:object size:0x8 scope:local align:8 data:4byte +shdwChangeMode = .sbss:0x801D4458; // type:object size:0x4 scope:local data:4byte +shdwChanged = .sbss:0x801D4460; // type:object size:0x8 scope:local align:8 data:4byte +CurrTiming = .sbss:0x801D4468; // type:object size:0x4 scope:local data:4byte +CurrTvMode = .sbss:0x801D446C; // type:object size:0x4 scope:local data:4byte +FBSet = .sbss:0x801D4470; // type:object size:0x4 scope:local data:4byte +message$320 = .sbss:0x801D4474; // type:object size:0x4 scope:local data:4byte +rmode = .sbss:0x801D4478; // type:object size:0x8 scope:local data:4byte +fontShift = .sbss:0x801D4480; // type:object size:0x8 scope:local data:4byte +DemoStat = .sbss:0x801D4488; // type:object size:0x4 scope:local data:4byte +DemoStatIndx = .sbss:0x801D448C; // type:object size:0x4 scope:local data:4byte +DemoStatMaxIndx = .sbss:0x801D4490; // type:object size:0x4 scope:local data:4byte +DemoStatClocks = .sbss:0x801D4494; // type:object size:0x4 scope:local data:4byte +DemoStatDisp = .sbss:0x801D4498; // type:object size:0x4 scope:local data:4byte +topPixIn = .sbss:0x801D449C; // type:object size:0x4 scope:local data:4byte +topPixOut = .sbss:0x801D44A0; // type:object size:0x4 scope:local data:4byte +botPixIn = .sbss:0x801D44A4; // type:object size:0x4 scope:local data:4byte +botPixOut = .sbss:0x801D44A8; // type:object size:0x4 scope:local data:4byte +clrPixIn = .sbss:0x801D44AC; // type:object size:0x4 scope:local data:4byte +copyClks = .sbss:0x801D44B0; // type:object size:0x4 scope:local data:4byte +vcCheck = .sbss:0x801D44B4; // type:object size:0x4 scope:local data:4byte +vcMiss = .sbss:0x801D44B8; // type:object size:0x4 scope:local data:4byte +vcStall = .sbss:0x801D44BC; // type:object size:0x4 scope:local data:4byte +cpReq = .sbss:0x801D44C0; // type:object size:0x4 scope:local data:4byte +tcReq = .sbss:0x801D44C4; // type:object size:0x4 scope:local data:4byte +cpuRdReq = .sbss:0x801D44C8; // type:object size:0x4 scope:local data:4byte +cpuWrReq = .sbss:0x801D44CC; // type:object size:0x4 scope:local data:4byte +dspReq = .sbss:0x801D44D0; // type:object size:0x4 scope:local data:4byte +ioReq = .sbss:0x801D44D4; // type:object size:0x4 scope:local data:4byte +viReq = .sbss:0x801D44D8; // type:object size:0x4 scope:local data:4byte +peReq = .sbss:0x801D44DC; // type:object size:0x4 scope:local data:4byte +rfReq = .sbss:0x801D44E0; // type:object size:0x4 scope:local data:4byte +fiReq = .sbss:0x801D44E4; // type:object size:0x4 scope:local data:4byte +Initialized = .sbss:0x801D44E8; // type:object size:0x4 scope:local data:4byte +EnabledBits = .sbss:0x801D44EC; // type:object size:0x4 scope:local data:4byte +ResettingBits = .sbss:0x801D44F0; // type:object size:0x4 scope:local data:4byte +RecalibrateBits = .sbss:0x801D44F4; // type:object size:0x4 scope:local data:4byte +WaitingBits = .sbss:0x801D44F8; // type:object size:0x4 scope:local data:4byte +CheckingBits = .sbss:0x801D44FC; // type:object size:0x4 scope:local data:4byte +PendingBits = .sbss:0x801D4500; // type:object size:0x4 scope:local data:4byte +SamplingCallback = .sbss:0x801D4504; // type:object size:0x4 scope:local data:4byte +recalibrated$397 = .sbss:0x801D4508; // type:object size:0x4 scope:local data:4byte +__PADSpec = .sbss:0x801D450C; // type:object size:0x4 scope:global data:4byte +__AIS_Callback = .sbss:0x801D4510; // type:object size:0x4 scope:local data:4byte +__AID_Callback = .sbss:0x801D4514; // type:object size:0x4 scope:local data:4byte +__CallbackStack = .sbss:0x801D4518; // type:object size:0x4 scope:local data:4byte +__OldStack = .sbss:0x801D451C; // type:object size:0x4 scope:local data:4byte +__AI_init_flag = .sbss:0x801D4520; // type:object size:0x4 scope:local data:4byte +bound_32KHz = .sbss:0x801D4528; // type:object size:0x8 scope:local align:8 data:4byte +bound_48KHz = .sbss:0x801D4530; // type:object size:0x8 scope:local align:8 data:4byte +min_wait = .sbss:0x801D4538; // type:object size:0x8 scope:local align:8 data:4byte +max_wait = .sbss:0x801D4540; // type:object size:0x8 scope:local align:8 data:4byte +buffer = .sbss:0x801D4548; // type:object size:0x8 scope:local align:8 data:4byte +__AR_Callback = .sbss:0x801D4550; // type:object size:0x4 scope:local data:4byte +__AR_Size = .sbss:0x801D4554; // type:object size:0x4 scope:local data:4byte +__AR_InternalSize = .sbss:0x801D4558; // type:object size:0x4 scope:local data:4byte +__AR_ExpansionSize = .sbss:0x801D455C; // type:object size:0x4 scope:local data:4byte +__AR_StackPointer = .sbss:0x801D4560; // type:object size:0x4 scope:local data:4byte +__AR_FreeBlocks = .sbss:0x801D4564; // type:object size:0x4 scope:local data:4byte +__AR_BlockLength = .sbss:0x801D4568; // type:object size:0x4 scope:local data:4byte +__AR_init_flag = .sbss:0x801D456C; // type:object size:0x4 scope:local data:4byte +__ARQRequestQueueHi = .sbss:0x801D4570; // type:object size:0x4 scope:local data:4byte +__ARQRequestTailHi = .sbss:0x801D4574; // type:object size:0x4 scope:local data:4byte +__ARQRequestQueueLo = .sbss:0x801D4578; // type:object size:0x4 scope:local data:4byte +__ARQRequestTailLo = .sbss:0x801D457C; // type:object size:0x4 scope:local data:4byte +__ARQRequestPendingHi = .sbss:0x801D4580; // type:object size:0x4 scope:local data:4byte +__ARQRequestPendingLo = .sbss:0x801D4584; // type:object size:0x4 scope:local data:4byte +__ARQCallbackHi = .sbss:0x801D4588; // type:object size:0x4 scope:local data:4byte +__ARQCallbackLo = .sbss:0x801D458C; // type:object size:0x4 scope:local data:4byte +__ARQChunkSize = .sbss:0x801D4590; // type:object size:0x4 scope:local data:4byte +__ARQ_init_flag = .sbss:0x801D4594; // type:object size:0x4 scope:local data:4byte +__DSP_init_flag = .sbss:0x801D4598; // type:object size:0x8 scope:local data:4byte +__DSP_rude_task_pending = .sbss:0x801D45A0; // type:object size:0x4 data:4byte +__DSP_rude_task = .sbss:0x801D45A4; // type:object size:0x4 data:4byte +__DSP_tmp_task = .sbss:0x801D45A8; // type:object size:0x4 data:4byte +__DSP_last_task = .sbss:0x801D45AC; // type:object size:0x4 data:4byte +__DSP_first_task = .sbss:0x801D45B0; // type:object size:0x4 data:4byte +__DSP_curr_task = .sbss:0x801D45B4; // type:object size:0x4 data:4byte +__piReg = .sbss:0x801D45B8; // type:object size:0x4 scope:global data:4byte +__cpReg = .sbss:0x801D45BC; // type:object size:0x4 scope:global data:4byte +__peReg = .sbss:0x801D45C0; // type:object size:0x4 scope:global data:4byte +__memReg = .sbss:0x801D45C4; // type:object size:0x4 scope:global data:4byte +CPUFifo = .sbss:0x801D45C8; // type:object size:0x4 scope:local data:4byte +GPFifo = .sbss:0x801D45CC; // type:object size:0x4 scope:local data:4byte +__GXCurrentThread = .sbss:0x801D45D0; // type:object size:0x4 scope:local data:4byte +CPGPLinked = .sbss:0x801D45D4; // type:object size:0x1 scope:local data:byte +GXOverflowSuspendInProgress = .sbss:0x801D45D8; // type:object size:0x4 scope:local data:4byte +BreakPointCB = .sbss:0x801D45DC; // type:object size:0x4 scope:local data:4byte +__GXOverflowCount = .sbss:0x801D45E0; // type:object size:0x4 scope:local data:4byte +TokenCB = .sbss:0x801D45E8; // type:object size:0x4 scope:local data:4byte +DrawDoneCB = .sbss:0x801D45EC; // type:object size:0x4 scope:local data:4byte +DrawDone = .sbss:0x801D45F0; // type:object size:0x1 scope:local data:byte +FinishQueue = .sbss:0x801D45F4; // type:object size:0x8 scope:local +OldCPUFifo = .sbss:0x801D4600; // type:object size:0x4 scope:local data:4byte +Chan = .sbss:0x801D4608; // type:object size:0x4 scope:local data:4byte +Dev = .sbss:0x801D460C; // type:object size:0x4 scope:local data:4byte +Enabled = .sbss:0x801D4610; // type:object size:0x4 scope:local data:4byte +BarnacleEnabled = .sbss:0x801D4614; // type:object size:0x4 scope:local data:4byte +cmdTypeAndStatus$78 = .sbss:0x801D4618; // type:object size:0x4 scope:local +cmdTypeAndStatus$371 = .sbss:0x801D461C; // type:object size:0x4 scope:local +__PADFixBits = .sbss:0x801D4620; // type:object size:0x8 data:4byte +SamplingRate = .sbss:0x801D4628; // type:object size:0x4 scope:local data:4byte +Ydchuff = .sbss:0x801D4640; // type:object size:0x4 scope:local align:32 data:4byte +Udchuff = .sbss:0x801D4660; // type:object size:0x4 scope:local align:32 data:4byte +Vdchuff = .sbss:0x801D4680; // type:object size:0x4 scope:local align:32 data:4byte +Yachuff = .sbss:0x801D46A0; // type:object size:0x4 scope:local align:32 data:4byte +Uachuff = .sbss:0x801D46C0; // type:object size:0x4 scope:local align:32 data:4byte +Vachuff = .sbss:0x801D46E0; // type:object size:0x4 scope:local align:32 data:4byte +__THPHuffmanBits = .sbss:0x801D46E4; // type:object size:0x4 scope:local data:4byte +__THPHuffmanSizeTab = .sbss:0x801D46E8; // type:object size:0x4 scope:local data:4byte +__THPHuffmanCodeTab = .sbss:0x801D46EC; // type:object size:0x4 scope:local data:4byte +Gbase = .sbss:0x801D4700; // type:object size:0x20 scope:local align:32 data:4byte +Gwid = .sbss:0x801D4720; // type:object size:0x20 scope:local align:32 data:4byte +Gq = .sbss:0x801D4740; // type:object size:0x4 scope:local align:32 data:4byte +__THPOldGQR5 = .sbss:0x801D4744; // type:object size:0x4 scope:local data:4byte +__THPOldGQR6 = .sbss:0x801D4748; // type:object size:0x4 scope:local data:4byte +__THPWorkArea = .sbss:0x801D474C; // type:object size:0x4 scope:local data:4byte +__THPInfo = .sbss:0x801D4750; // type:object size:0x4 scope:local data:4byte +__THPInitFlag = .sbss:0x801D4754; // type:object size:0x4 scope:local data:4byte +__global_destructor_chain = .sbss:0x801D4758; // type:object size:0x4 scope:global data:4byte +__aborting = .sbss:0x801D4760; // type:object size:0x4 scope:global data:4byte +__atexit_curr_func = .sbss:0x801D4764; // type:object size:0x4 scope:local data:4byte +__stdio_exit = .sbss:0x801D4768; // type:object size:0x4 scope:global data:4byte +__console_exit = .sbss:0x801D476C; // type:object size:0x4 scope:global data:4byte +init$193 = .sbss:0x801D4770; // type:object size:0x1 scope:local data:byte +errno = .sbss:0x801D4778; // type:object size:0x4 data:4byte +initialized$16 = .sbss:0x801D4780; // type:object size:0x4 scope:local data:4byte +seq_next_id = .sbss:0x801D4788; // type:object size:0x4 scope:local data:4byte +curFadeOutState = .sbss:0x801D478C; // type:object size:0x1 scope:local data:byte +curSeqId = .sbss:0x801D4790; // type:object size:0x4 scope:local data:4byte +noteFree = .sbss:0x801D4794; // type:object size:0x4 scope:local data:4byte +cseq = .sbss:0x801D4798; // type:object size:0x4 scope:local data:4byte +seqFreeRoot = .sbss:0x801D479C; // type:object size:0x4 data:4byte +seqPausedRoot = .sbss:0x801D47A0; // type:object size:0x4 data:4byte +seqActiveRoot = .sbss:0x801D47A4; // type:object size:0x4 data:4byte +sndActive = .sbss:0x801D47A8; // type:object size:0x1 data:byte +synthJobTableIndex = .sbss:0x801D47A9; // type:object size:0x1 scope:local data:byte +synthAuxBMIDISet = .sbss:0x801D47AC; // type:object size:0x8 data:byte +synthAuxBMIDI = .sbss:0x801D47B4; // type:object size:0x8 data:byte +synthAuxAMIDISet = .sbss:0x801D47BC; // type:object size:0x8 data:byte +synthAuxAMIDI = .sbss:0x801D47C4; // type:object size:0x8 data:byte +synthMasterFaderPauseActiveFlags = .sbss:0x801D47CC; // type:object size:0x4 data:4byte +synthMasterFaderActiveFlags = .sbss:0x801D47D0; // type:object size:0x4 data:4byte +synthFlags = .sbss:0x801D47D4; // type:object size:0x4 data:4byte +synthVoice = .sbss:0x801D47D8; // type:object size:0x4 data:4byte +synthMessageCallback = .sbss:0x801D47DC; // type:object size:0x4 data:4byte +synthIdleWaitActive = .sbss:0x801D47E0; // type:object size:0x1 data:byte +synthRealTime = .sbss:0x801D47E8; // type:object size:0x8 align:8 data:4byte +nextPublicID = .sbss:0x801D47F0; // type:object size:0x4 scope:local data:4byte +streamCallDelay = .sbss:0x801D47F4; // type:object size:0x1 scope:local data:byte +streamCallCnt = .sbss:0x801D47F5; // type:object size:0x1 scope:local data:byte +result$837 = .sbss:0x801D47F8; // type:object size:0x4 data:4byte +result$823 = .sbss:0x801D47FC; // type:object size:0x4 data:4byte +key$822 = .sbss:0x801D4800; // type:object size:0x8 +result$815 = .sbss:0x801D4808; // type:object size:0x4 data:4byte +key$814 = .sbss:0x801D480C; // type:object size:0x8 +sheader$789 = .sbss:0x801D4814; // type:object size:0x4 data:4byte +result$788 = .sbss:0x801D4818; // type:object size:0x4 data:4byte +result$770 = .sbss:0x801D481C; // type:object size:0x4 data:4byte +key$769 = .sbss:0x801D4820; // type:object size:0x8 +main$768 = .sbss:0x801D4828; // type:object size:0x4 data:4byte +base$767 = .sbss:0x801D482C; // type:object size:0x4 data:4byte +dataFXGroupNum = .sbss:0x801D4830; // type:object size:0x2 data:2byte +dataMacTotal = .sbss:0x801D4832; // type:object size:0x2 data:2byte +dataLayerNum = .sbss:0x801D4834; // type:object size:0x2 data:2byte +dataKeymapNum = .sbss:0x801D4836; // type:object size:0x2 data:2byte +dataCurveNum = .sbss:0x801D4838; // type:object size:0x2 data:2byte +dataSmpSDirNum = .sbss:0x801D483A; // type:object size:0x2 data:2byte +cstep$1643 = .sbss:0x801D4840; // type:object size:0x8 scope:local data:4byte +macRealTime = .sbss:0x801D4848; // type:object size:0x8 scope:local data:4byte +macTimeQueueRoot = .sbss:0x801D4850; // type:object size:0x4 scope:local data:4byte +macActiveMacroRoot = .sbss:0x801D4854; // type:object size:0x4 scope:local data:4byte +DebugMacroSteps = .sbss:0x801D4858; // type:object size:0x8 scope:local data:byte +vidFree = .sbss:0x801D4860; // type:object size:0x4 scope:local data:4byte +vidRoot = .sbss:0x801D4864; // type:object size:0x4 scope:local data:4byte +vidCurrentId = .sbss:0x801D4868; // type:object size:0x4 scope:local data:4byte +voicePrioSortRootListRoot = .sbss:0x801D486C; // type:object size:0x2 data:2byte +voiceMusicRunning = .sbss:0x801D486E; // type:object size:0x1 data:byte +voiceFxRunning = .sbss:0x801D486F; // type:object size:0x1 data:byte +voiceListInsert = .sbss:0x801D4870; // type:object size:0x1 data:byte +voiceListRoot = .sbss:0x801D4871; // type:object size:0x1 data:byte +sp = .sbss:0x801D4878; // type:object size:0x2 scope:local data:2byte +dspARAMZeroBuffer = .sbss:0x801D4880; // type:object size:0x4 data:4byte +dspCmdLastLoad = .sbss:0x801D4884; // type:object size:0x4 data:4byte +dspCmdLastBase = .sbss:0x801D4888; // type:object size:0x4 data:4byte +dspCmdLastSize = .sbss:0x801D488C; // type:object size:0x2 data:2byte +dspCmdCurBase = .sbss:0x801D4890; // type:object size:0x4 data:4byte +dspCmdMaxPtr = .sbss:0x801D4894; // type:object size:0x4 data:4byte +dspCmdPtr = .sbss:0x801D4898; // type:object size:0x4 data:4byte +dspCmdFirstSize = .sbss:0x801D489C; // type:object size:0x2 data:2byte +dspCmdList = .sbss:0x801D48A0; // type:object size:0x4 data:4byte +dspHRTFOn = .sbss:0x801D48A4; // type:object size:0x4 data:4byte +dspHrtfHistoryBuffer = .sbss:0x801D48A8; // type:object size:0x4 data:4byte +dspSurround = .sbss:0x801D48AC; // type:object size:0x4 data:4byte +dspITDBuffer = .sbss:0x801D48B0; // type:object size:0x4 data:4byte +dspVoice = .sbss:0x801D48B4; // type:object size:0x4 data:4byte +salMessageCallback = .sbss:0x801D48B8; // type:object size:0x4 data:4byte +runListNum = .sbss:0x801D48C0; // type:object size:0x1 scope:local data:byte +startListNumnum = .sbss:0x801D48C1; // type:object size:0x1 scope:local data:byte +startGroupNum = .sbss:0x801D48C2; // type:object size:0x1 scope:local data:byte +s3dUseLegacyLogic = .sbss:0x801D48C3; // type:object size:0x1 scope:local data:byte +s3dUseMaxVoices = .sbss:0x801D48C4; // type:object size:0x1 scope:local data:byte +snd_max_studios = .sbss:0x801D48C5; // type:object size:0x1 scope:local data:byte +snd_used_studios = .sbss:0x801D48C8; // type:object size:0x4 scope:local data:4byte +s3dDoorRoot = .sbss:0x801D48CC; // type:object size:0x4 scope:local data:4byte +s3dRoomRoot = .sbss:0x801D48D0; // type:object size:0x4 scope:local data:4byte +s3dListenerRoot = .sbss:0x801D48D4; // type:object size:0x4 scope:local data:4byte +s3dEmitterRoot = .sbss:0x801D48D8; // type:object size:0x4 scope:local data:4byte +s3dCallCnt = .sbss:0x801D48DC; // type:object size:0x1 scope:local data:byte +salTimeOffset = .sbss:0x801D48E0; // type:object size:0x1 data:byte +salHooks = .sbss:0x801D48E4; // type:object size:0x8 data:4byte +salMaxStudioNum = .sbss:0x801D48EC; // type:object size:0x1 data:byte +salNumVoices = .sbss:0x801D48ED; // type:object size:0x1 data:byte +salAuxFrame = .sbss:0x801D48EE; // type:object size:0x1 data:byte +salFrame = .sbss:0x801D48EF; // type:object size:0x1 data:byte +aramIdleStreamBuffers = .sbss:0x801D48F0; // type:object size:0x4 scope:local data:4byte +aramFreeStreamBuffers = .sbss:0x801D48F4; // type:object size:0x4 scope:local data:4byte +aramUsedStreamBuffers = .sbss:0x801D48F8; // type:object size:0x4 scope:local data:4byte +aramUploadChunkSize = .sbss:0x801D48FC; // type:object size:0x4 scope:local data:4byte +aramUploadCallback = .sbss:0x801D4900; // type:object size:0x4 scope:local data:4byte +aramStream = .sbss:0x801D4904; // type:object size:0x4 scope:local data:4byte +aramWrite = .sbss:0x801D4908; // type:object size:0x4 scope:local data:4byte +aramTop = .sbss:0x801D490C; // type:object size:0x4 scope:local data:4byte +oldState = .sbss:0x801D4910; // type:object size:0x4 scope:local data:4byte +hwIrqLevel = .sbss:0x801D4914; // type:object size:0x2 scope:local data:2byte +salDspInitIsDone = .sbss:0x801D4918; // type:object size:0x4 scope:local data:4byte +salLastTick = .sbss:0x801D491C; // type:object size:0x4 scope:local data:4byte +salLogicActive = .sbss:0x801D4920; // type:object size:0x4 scope:local data:4byte +salLogicIsWaiting = .sbss:0x801D4924; // type:object size:0x4 scope:local data:4byte +salDspIsDone = .sbss:0x801D4928; // type:object size:0x4 scope:local data:4byte +salAIBufferBase = .sbss:0x801D492C; // type:object size:0x4 scope:local data:4byte +salAIBufferIndex = .sbss:0x801D4930; // type:object size:0x1 scope:local data:byte +userCallback = .sbss:0x801D4934; // type:object size:0x4 scope:local data:4byte +MTRCallback = .sbss:0x801D4938; // type:object size:0x4 scope:local data:4byte +DBGCallback = .sbss:0x801D493C; // type:object size:0x4 scope:local data:4byte +SendMailData = .sbss:0x801D4940; // type:object size:0x4 scope:local data:4byte +RecvDataLeng = .sbss:0x801D4944; // type:object size:0x4 scope:local data:4byte +pEXIInputFlag = .sbss:0x801D4948; // type:object size:0x4 scope:local data:4byte +EXIInputFlag = .sbss:0x801D494C; // type:object size:0x1 scope:local data:byte +lbl_801D4960 = .sdata2:0x801D4960; // type:object size:0x8 scope:local data:double +lbl_801D4968 = .sdata2:0x801D4968; // type:object size:0x4 data:float +lbl_801D496C = .sdata2:0x801D496C; // type:object size:0x4 data:float +lbl_801D4970 = .sdata2:0x801D4970; // type:object size:0x8 data:double +lbl_801D4978 = .sdata2:0x801D4978; // type:object size:0x4 data:float +lbl_801D497C = .sdata2:0x801D497C; // type:object size:0x4 data:float +lbl_801D4980 = .sdata2:0x801D4980; // type:object size:0x4 data:float +lbl_801D4984 = .sdata2:0x801D4984; // type:object size:0x4 data:float +lbl_801D4988 = .sdata2:0x801D4988; // type:object size:0x4 data:float +lbl_801D498C = .sdata2:0x801D498C; // type:object size:0x4 data:float +lbl_801D4990 = .sdata2:0x801D4990; // type:object size:0x4 data:float +lbl_801D4994 = .sdata2:0x801D4994; // type:object size:0x4 data:float +lbl_801D4998 = .sdata2:0x801D4998; // type:object size:0x4 data:float +lbl_801D49A0 = .sdata2:0x801D49A0; // type:object size:0x8 data:double +lbl_801D49A8 = .sdata2:0x801D49A8; // type:object size:0x8 data:double +lbl_801D49B0 = .sdata2:0x801D49B0; // type:object size:0x4 data:float +lbl_801D49B4 = .sdata2:0x801D49B4; // type:object size:0x4 data:float +lbl_801D49B8 = .sdata2:0x801D49B8; // type:object size:0x4 data:float +lbl_801D49BC = .sdata2:0x801D49BC; // type:object size:0x4 data:float +lbl_801D49C0 = .sdata2:0x801D49C0; // type:object size:0x8 data:float +lbl_801D49C8 = .sdata2:0x801D49C8; // type:object size:0x4 data:float +lbl_801D49CC = .sdata2:0x801D49CC; // type:object size:0x4 data:float +lbl_801D49D0 = .sdata2:0x801D49D0; // type:object size:0x4 data:float +lbl_801D49D8 = .sdata2:0x801D49D8; // type:object size:0x8 data:double +lbl_801D49E0 = .sdata2:0x801D49E0; // type:object size:0x8 data:double +lbl_801D49E8 = .sdata2:0x801D49E8; // type:object size:0x8 data:float +lbl_801D49F0 = .sdata2:0x801D49F0; // type:object size:0x4 data:float +lbl_801D49F4 = .sdata2:0x801D49F4; // type:object size:0x4 data:float +lbl_801D49F8 = .sdata2:0x801D49F8; // type:object size:0x4 data:float +lbl_801D49FC = .sdata2:0x801D49FC; // type:object size:0x4 data:float +lbl_801D4A00 = .sdata2:0x801D4A00; // type:object size:0x4 data:float +lbl_801D4A04 = .sdata2:0x801D4A04; // type:object size:0x4 data:float +lbl_801D4A08 = .sdata2:0x801D4A08; // type:object size:0x4 data:float +lbl_801D4A10 = .sdata2:0x801D4A10; // type:object size:0x8 data:double +lbl_801D4A18 = .sdata2:0x801D4A18; // type:object size:0x8 data:double +lbl_801D4A20 = .sdata2:0x801D4A20; // type:object size:0x8 data:double +lbl_801D4A28 = .sdata2:0x801D4A28; // type:object size:0x4 data:float +lbl_801D4A2C = .sdata2:0x801D4A2C; // type:object size:0x4 data:float +lbl_801D4A30 = .sdata2:0x801D4A30; // type:object size:0x4 data:float +lbl_801D4A34 = .sdata2:0x801D4A34; // type:object size:0x4 data:float +lbl_801D4A38 = .sdata2:0x801D4A38; // type:object size:0x8 data:double +lbl_801D4A40 = .sdata2:0x801D4A40; // type:object size:0x8 data:double +lbl_801D4A48 = .sdata2:0x801D4A48; // type:object size:0x8 data:double +lbl_801D4A50 = .sdata2:0x801D4A50; // type:object size:0x8 data:double +lbl_801D4A58 = .sdata2:0x801D4A58; // type:object size:0x4 data:float +lbl_801D4A60 = .sdata2:0x801D4A60; // type:object size:0x8 data:double +lbl_801D4A68 = .sdata2:0x801D4A68; // type:object size:0x4 data:float +lbl_801D4A6C = .sdata2:0x801D4A6C; // type:object size:0x4 data:float +lbl_801D4A70 = .sdata2:0x801D4A70; // type:object size:0x4 data:float +lbl_801D4A74 = .sdata2:0x801D4A74; // type:object size:0x4 data:float +lbl_801D4A78 = .sdata2:0x801D4A78; // type:object size:0x8 data:double +lbl_801D4A80 = .sdata2:0x801D4A80; // type:object size:0x4 data:float +lbl_801D4A84 = .sdata2:0x801D4A84; // type:object size:0x4 data:float +lbl_801D4A88 = .sdata2:0x801D4A88; // type:object size:0x4 data:float +lbl_801D4A8C = .sdata2:0x801D4A8C; // type:object size:0x4 data:float +lbl_801D4A90 = .sdata2:0x801D4A90; // type:object size:0x8 data:double +lbl_801D4A98 = .sdata2:0x801D4A98; // type:object size:0x4 data:float +lbl_801D4AA0 = .sdata2:0x801D4AA0; // type:object size:0x8 data:double +lbl_801D4AA8 = .sdata2:0x801D4AA8; // type:object size:0x4 data:float +lbl_801D4AAC = .sdata2:0x801D4AAC; // type:object size:0x4 data:float +lbl_801D4AB0 = .sdata2:0x801D4AB0; // type:object size:0x4 data:float +lbl_801D4AB4 = .sdata2:0x801D4AB4; // type:object size:0x4 data:float +lbl_801D4AB8 = .sdata2:0x801D4AB8; // type:object size:0x4 data:float +lbl_801D4AC0 = .sdata2:0x801D4AC0; // type:object size:0x8 data:double +lbl_801D4AC8 = .sdata2:0x801D4AC8; // type:object size:0x8 data:double +lbl_801D4AD0 = .sdata2:0x801D4AD0; // type:object size:0x8 data:double +lbl_801D4AD8 = .sdata2:0x801D4AD8; // type:object size:0x8 data:double +lbl_801D4AE0 = .sdata2:0x801D4AE0; // type:object size:0x4 data:float +lbl_801D4AE4 = .sdata2:0x801D4AE4; // type:object size:0x4 data:float +lbl_801D4AE8 = .sdata2:0x801D4AE8; // type:object size:0x4 data:float +lbl_801D4AEC = .sdata2:0x801D4AEC; // type:object size:0x4 data:float +lbl_801D4AF0 = .sdata2:0x801D4AF0; // type:object size:0x4 data:float +lbl_801D4AF4 = .sdata2:0x801D4AF4; // type:object size:0x4 data:float +lbl_801D4AF8 = .sdata2:0x801D4AF8; // type:object size:0x4 data:float +lbl_801D4AFC = .sdata2:0x801D4AFC; // type:object size:0x4 data:float +lbl_801D4B00 = .sdata2:0x801D4B00; // type:object size:0x8 data:double +lbl_801D4B08 = .sdata2:0x801D4B08; // type:object size:0x8 data:float +lbl_801D4B10 = .sdata2:0x801D4B10; // type:object size:0x4 data:float +lbl_801D4B14 = .sdata2:0x801D4B14; // type:object size:0x4 data:float +lbl_801D4B18 = .sdata2:0x801D4B18; // type:object size:0x8 data:double +lbl_801D4B20 = .sdata2:0x801D4B20; // type:object size:0x8 data:double +lbl_801D4B28 = .sdata2:0x801D4B28; // type:object size:0x4 data:float +lbl_801D4B2C = .sdata2:0x801D4B2C; // type:object size:0x4 data:float +lbl_801D4B30 = .sdata2:0x801D4B30; // type:object size:0x4 data:float +lbl_801D4B38 = .sdata2:0x801D4B38; // type:object size:0x8 data:double +lbl_801D4B40 = .sdata2:0x801D4B40; // type:object size:0x8 data:double +lbl_801D4B48 = .sdata2:0x801D4B48; // type:object size:0x8 data:double +lbl_801D4B50 = .sdata2:0x801D4B50; // type:object size:0x4 data:float +lbl_801D4B54 = .sdata2:0x801D4B54; // type:object size:0x4 data:float +lbl_801D4B58 = .sdata2:0x801D4B58; // type:object size:0x8 data:float +lbl_801D4B60 = .sdata2:0x801D4B60; // type:object size:0x4 data:float +lbl_801D4B64 = .sdata2:0x801D4B64; // type:object size:0x4 data:float +lbl_801D4B68 = .sdata2:0x801D4B68; // type:object size:0x8 data:double +lbl_801D4B70 = .sdata2:0x801D4B70; // type:object size:0x4 data:float +lbl_801D4B74 = .sdata2:0x801D4B74; // type:object size:0x4 data:float +lbl_801D4B78 = .sdata2:0x801D4B78; // type:object size:0x4 data:float +lbl_801D4B7C = .sdata2:0x801D4B7C; // type:object size:0x4 data:float +lbl_801D4B80 = .sdata2:0x801D4B80; // type:object size:0x8 data:double +lbl_801D4B88 = .sdata2:0x801D4B88; // type:object size:0x4 data:float +lbl_801D4B90 = .sdata2:0x801D4B90; // type:object size:0x8 data:double +lbl_801D4B98 = .sdata2:0x801D4B98; // type:object size:0x8 data:double +lbl_801D4BA0 = .sdata2:0x801D4BA0; // type:object size:0x8 data:double +lbl_801D4BA8 = .sdata2:0x801D4BA8; // type:object size:0x4 data:float +lbl_801D4BB0 = .sdata2:0x801D4BB0; // type:object size:0x8 data:double +lbl_801D4BB8 = .sdata2:0x801D4BB8; // type:object size:0x8 data:double +lbl_801D4BC0 = .sdata2:0x801D4BC0; // type:object size:0x4 data:float +lbl_801D4BC8 = .sdata2:0x801D4BC8; // type:object size:0x8 data:double +lbl_801D4BD0 = .sdata2:0x801D4BD0; // type:object size:0x8 data:double +lbl_801D4BD8 = .sdata2:0x801D4BD8; // type:object size:0x8 data:double +lbl_801D4BE0 = .sdata2:0x801D4BE0; // type:object size:0x8 data:double +lbl_801D4BE8 = .sdata2:0x801D4BE8; // type:object size:0x4 data:float +lbl_801D4BEC = .sdata2:0x801D4BEC; // type:object size:0x4 data:float +lbl_801D4BF0 = .sdata2:0x801D4BF0; // type:object size:0x4 data:float +lbl_801D4BF4 = .sdata2:0x801D4BF4; // type:object size:0x4 data:float +lbl_801D4BF8 = .sdata2:0x801D4BF8; // type:object size:0x8 data:double +lbl_801D4C00 = .sdata2:0x801D4C00; // type:object size:0x4 data:float +lbl_801D4C08 = .sdata2:0x801D4C08; // type:object size:0x8 data:double +lbl_801D4C10 = .sdata2:0x801D4C10; // type:object size:0x8 data:double +lbl_801D4C18 = .sdata2:0x801D4C18; // type:object size:0x4 data:float +lbl_801D4C20 = .sdata2:0x801D4C20; // type:object size:0x8 data:double +lbl_801D4C28 = .sdata2:0x801D4C28; // type:object size:0x4 data:float +lbl_801D4C2C = .sdata2:0x801D4C2C; // type:object size:0x4 data:float +lbl_801D4C30 = .sdata2:0x801D4C30; // type:object size:0x4 data:float +lbl_801D4C34 = .sdata2:0x801D4C34; // type:object size:0x4 data:float +lbl_801D4C38 = .sdata2:0x801D4C38; // type:object size:0x8 data:double +lbl_801D4C40 = .sdata2:0x801D4C40; // type:object size:0x8 data:double +lbl_801D4C48 = .sdata2:0x801D4C48; // type:object size:0x4 data:float +lbl_801D4C4C = .sdata2:0x801D4C4C; // type:object size:0x4 data:float +lbl_801D4C50 = .sdata2:0x801D4C50; // type:object size:0x8 data:double +lbl_801D4C58 = .sdata2:0x801D4C58; // type:object size:0x4 data:float +lbl_801D4C5C = .sdata2:0x801D4C5C; // type:object size:0x4 data:float +lbl_801D4C60 = .sdata2:0x801D4C60; // type:object size:0x4 data:float +lbl_801D4C64 = .sdata2:0x801D4C64; // type:object size:0x4 data:float +lbl_801D4C68 = .sdata2:0x801D4C68; // type:object size:0x8 data:double +lbl_801D4C70 = .sdata2:0x801D4C70; // type:object size:0x8 data:double +lbl_801D4C78 = .sdata2:0x801D4C78; // type:object size:0x4 data:float +lbl_801D4C7C = .sdata2:0x801D4C7C; // type:object size:0x4 data:float +lbl_801D4C80 = .sdata2:0x801D4C80; // type:object size:0x4 data:float +lbl_801D4C84 = .sdata2:0x801D4C84; // type:object size:0x4 data:float +lbl_801D4C88 = .sdata2:0x801D4C88; // type:object size:0x4 data:float +lbl_801D4C8C = .sdata2:0x801D4C8C; // type:object size:0x4 data:float +lbl_801D4C90 = .sdata2:0x801D4C90; // type:object size:0x4 data:float +lbl_801D4C94 = .sdata2:0x801D4C94; // type:object size:0x4 data:float +lbl_801D4C98 = .sdata2:0x801D4C98; // type:object size:0x4 data:float +lbl_801D4CA0 = .sdata2:0x801D4CA0; // type:object size:0x8 data:double +lbl_801D4CA8 = .sdata2:0x801D4CA8; // type:object size:0x8 data:double +lbl_801D4CB0 = .sdata2:0x801D4CB0; // type:object size:0x4 data:float +lbl_801D4CB8 = .sdata2:0x801D4CB8; // type:object size:0x8 data:double +lbl_801D4CC0 = .sdata2:0x801D4CC0; // type:object size:0x8 data:double +lbl_801D4CC8 = .sdata2:0x801D4CC8; // type:object size:0x8 data:double +lbl_801D4CD0 = .sdata2:0x801D4CD0; // type:object size:0x4 data:float +lbl_801D4CD4 = .sdata2:0x801D4CD4; // type:object size:0x4 data:float +lbl_801D4CD8 = .sdata2:0x801D4CD8; // type:object size:0x4 data:float +lbl_801D4CE0 = .sdata2:0x801D4CE0; // type:object size:0x8 data:double +lbl_801D4CE8 = .sdata2:0x801D4CE8; // type:object size:0x4 data:float +lbl_801D4CEC = .sdata2:0x801D4CEC; // type:object size:0x4 data:float +lbl_801D4CF0 = .sdata2:0x801D4CF0; // type:object size:0x8 data:double +lbl_801D4CF8 = .sdata2:0x801D4CF8; // type:object size:0x8 data:double +lbl_801D4D00 = .sdata2:0x801D4D00; // type:object size:0x8 data:double +lbl_801D4D08 = .sdata2:0x801D4D08; // type:object size:0x8 data:double +lbl_801D4D10 = .sdata2:0x801D4D10; // type:object size:0x8 data:double +lbl_801D4D18 = .sdata2:0x801D4D18; // type:object size:0x8 data:double +lbl_801D4D20 = .sdata2:0x801D4D20; // type:object size:0x4 data:float +lbl_801D4D24 = .sdata2:0x801D4D24; // type:object size:0x4 data:float +lbl_801D4D28 = .sdata2:0x801D4D28; // type:object size:0x8 data:double +lbl_801D4D30 = .sdata2:0x801D4D30; // type:object size:0x4 data:float +lbl_801D4D34 = .sdata2:0x801D4D34; // type:object size:0x4 data:float +lbl_801D4D38 = .sdata2:0x801D4D38; // type:object size:0x4 data:float +lbl_801D4D3C = .sdata2:0x801D4D3C; // type:object size:0x4 data:float +lbl_801D4D40 = .sdata2:0x801D4D40; // type:object size:0x4 data:float +lbl_801D4D44 = .sdata2:0x801D4D44; // type:object size:0x4 data:float +lbl_801D4D48 = .sdata2:0x801D4D48; // type:object size:0x4 data:float +lbl_801D4D4C = .sdata2:0x801D4D4C; // type:object size:0x4 data:float +lbl_801D4D50 = .sdata2:0x801D4D50; // type:object size:0x4 data:float +lbl_801D4D54 = .sdata2:0x801D4D54; // type:object size:0x4 data:float +lbl_801D4D58 = .sdata2:0x801D4D58; // type:object size:0x4 data:float +lbl_801D4D5C = .sdata2:0x801D4D5C; // type:object size:0x4 data:float +lbl_801D4D60 = .sdata2:0x801D4D60; // type:object size:0x4 data:float +lbl_801D4D64 = .sdata2:0x801D4D64; // type:object size:0x4 data:float +lbl_801D4D68 = .sdata2:0x801D4D68; // type:object size:0x4 data:float +lbl_801D4D6C = .sdata2:0x801D4D6C; // type:object size:0x4 data:float +lbl_801D4D70 = .sdata2:0x801D4D70; // type:object size:0x4 data:float +lbl_801D4D74 = .sdata2:0x801D4D74; // type:object size:0x4 data:float +lbl_801D4D78 = .sdata2:0x801D4D78; // type:object size:0x8 data:double +lbl_801D4D80 = .sdata2:0x801D4D80; // type:object size:0x4 data:float +lbl_801D4D84 = .sdata2:0x801D4D84; // type:object size:0x4 data:float +lbl_801D4D88 = .sdata2:0x801D4D88; // type:object size:0x8 data:double +lbl_801D4D90 = .sdata2:0x801D4D90; // type:object size:0x8 data:double +lbl_801D4D98 = .sdata2:0x801D4D98; // type:object size:0x4 data:float +lbl_801D4D9C = .sdata2:0x801D4D9C; // type:object size:0x4 data:float +lbl_801D4DA0 = .sdata2:0x801D4DA0; // type:object size:0x8 data:double +lbl_801D4DA8 = .sdata2:0x801D4DA8; // type:object size:0x4 data:float +lbl_801D4DAC = .sdata2:0x801D4DAC; // type:object size:0x4 data:float +lbl_801D4DB0 = .sdata2:0x801D4DB0; // type:object size:0x4 data:float +lbl_801D4DB4 = .sdata2:0x801D4DB4; // type:object size:0x4 data:float +lbl_801D4DB8 = .sdata2:0x801D4DB8; // type:object size:0x4 data:float +lbl_801D4DC0 = .sdata2:0x801D4DC0; // type:object size:0x8 data:double +lbl_801D4DC8 = .sdata2:0x801D4DC8; // type:object size:0x4 data:float +lbl_801D4DD0 = .sdata2:0x801D4DD0; // type:object size:0x8 data:double +lbl_801D4DD8 = .sdata2:0x801D4DD8; // type:object size:0x4 data:float +lbl_801D4DDC = .sdata2:0x801D4DDC; // type:object size:0x4 data:float +lbl_801D4DE0 = .sdata2:0x801D4DE0; // type:object size:0x4 data:float +lbl_801D4DE4 = .sdata2:0x801D4DE4; // type:object size:0x4 data:float +lbl_801D4DE8 = .sdata2:0x801D4DE8; // type:object size:0x8 data:double +lbl_801D4DF0 = .sdata2:0x801D4DF0; // type:object size:0x4 data:float +lbl_801D4DF8 = .sdata2:0x801D4DF8; // type:object size:0x8 data:double +lbl_801D4E00 = .sdata2:0x801D4E00; // type:object size:0x8 data:double +lbl_801D4E08 = .sdata2:0x801D4E08; // type:object size:0x8 data:double +lbl_801D4E10 = .sdata2:0x801D4E10; // type:object size:0x4 data:float +lbl_801D4E18 = .sdata2:0x801D4E18; // type:object size:0x8 data:double +lbl_801D4E20 = .sdata2:0x801D4E20; // type:object size:0x8 data:double +lbl_801D4E28 = .sdata2:0x801D4E28; // type:object size:0x4 data:float +lbl_801D4E2C = .sdata2:0x801D4E2C; // type:object size:0x4 data:float +lbl_801D4E30 = .sdata2:0x801D4E30; // type:object size:0x4 data:float +lbl_801D4E34 = .sdata2:0x801D4E34; // type:object size:0x4 data:float +lbl_801D4E38 = .sdata2:0x801D4E38; // type:object size:0x4 data:float +lbl_801D4E3C = .sdata2:0x801D4E3C; // type:object size:0x4 data:float +lbl_801D4E40 = .sdata2:0x801D4E40; // type:object size:0x4 data:float +lbl_801D4E44 = .sdata2:0x801D4E44; // type:object size:0x4 data:float +lbl_801D4E48 = .sdata2:0x801D4E48; // type:object size:0x8 data:double +lbl_801D4E50 = .sdata2:0x801D4E50; // type:object size:0x8 data:double +lbl_801D4E58 = .sdata2:0x801D4E58; // type:object size:0x8 data:double +lbl_801D4E60 = .sdata2:0x801D4E60; // type:object size:0x6 data:2byte +lbl_801D4E68 = .sdata2:0x801D4E68; // type:object size:0x4 data:float +lbl_801D4E6C = .sdata2:0x801D4E6C; // type:object size:0x4 data:float +lbl_801D4E70 = .sdata2:0x801D4E70; // type:object size:0x4 data:float +lbl_801D4E74 = .sdata2:0x801D4E74; // type:object size:0x4 data:float +lbl_801D4E78 = .sdata2:0x801D4E78; // type:object size:0x4 data:float +lbl_801D4E7C = .sdata2:0x801D4E7C; // type:object size:0x4 data:float +lbl_801D4E80 = .sdata2:0x801D4E80; // type:object size:0x4 data:float +lbl_801D4E84 = .sdata2:0x801D4E84; // type:object size:0x4 data:float +lbl_801D4E88 = .sdata2:0x801D4E88; // type:object size:0x4 data:float +lbl_801D4E8C = .sdata2:0x801D4E8C; // type:object size:0x4 data:float +lbl_801D4E90 = .sdata2:0x801D4E90; // type:object size:0x8 data:double +lbl_801D4E98 = .sdata2:0x801D4E98; // type:object size:0x8 data:double +lbl_801D4EA0 = .sdata2:0x801D4EA0; // type:object size:0x4 data:float +lbl_801D4EA4 = .sdata2:0x801D4EA4; // type:object size:0x4 data:float +lbl_801D4EA8 = .sdata2:0x801D4EA8; // type:object size:0x4 data:float +lbl_801D4EB0 = .sdata2:0x801D4EB0; // type:object size:0x8 data:double +lbl_801D4EB8 = .sdata2:0x801D4EB8; // type:object size:0x8 data:double +lbl_801D4EC0 = .sdata2:0x801D4EC0; // type:object size:0x4 data:float +lbl_801D4EC4 = .sdata2:0x801D4EC4; // type:object size:0x4 data:float +lbl_801D4EC8 = .sdata2:0x801D4EC8; // type:object size:0x8 data:double +lbl_801D4ED0 = .sdata2:0x801D4ED0; // type:object size:0x4 data:float +lbl_801D4ED4 = .sdata2:0x801D4ED4; // type:object size:0x4 data:float +lbl_801D4ED8 = .sdata2:0x801D4ED8; // type:object size:0x8 data:double +lbl_801D4EE0 = .sdata2:0x801D4EE0; // type:object size:0x4 data:float +lbl_801D4EE8 = .sdata2:0x801D4EE8; // type:object size:0x8 data:double +lbl_801D4EF0 = .sdata2:0x801D4EF0; // type:object size:0x4 data:float +lbl_801D4EF4 = .sdata2:0x801D4EF4; // type:object size:0x4 data:float +lbl_801D4EF8 = .sdata2:0x801D4EF8; // type:object size:0x4 data:float +lbl_801D4EFC = .sdata2:0x801D4EFC; // type:object size:0x4 data:float +lbl_801D4F00 = .sdata2:0x801D4F00; // type:object size:0x8 data:double +lbl_801D4F08 = .sdata2:0x801D4F08; // type:object size:0x4 data:float +lbl_801D4F0C = .sdata2:0x801D4F0C; // type:object size:0x4 data:float +lbl_801D4F10 = .sdata2:0x801D4F10; // type:object size:0x4 data:float +lbl_801D4F14 = .sdata2:0x801D4F14; // type:object size:0x4 data:float +lbl_801D4F18 = .sdata2:0x801D4F18; // type:object size:0x4 data:float +lbl_801D4F20 = .sdata2:0x801D4F20; // type:object size:0x8 data:double +lbl_801D4F28 = .sdata2:0x801D4F28; // type:object size:0x4 data:float +lbl_801D4F2C = .sdata2:0x801D4F2C; // type:object size:0x4 data:float +lbl_801D4F30 = .sdata2:0x801D4F30; // type:object size:0x4 data:float +lbl_801D4F34 = .sdata2:0x801D4F34; // type:object size:0x4 data:float +lbl_801D4F38 = .sdata2:0x801D4F38; // type:object size:0x4 data:float +lbl_801D4F3C = .sdata2:0x801D4F3C; // type:object size:0x4 data:float +lbl_801D4F40 = .sdata2:0x801D4F40; // type:object size:0x4 data:float +lbl_801D4F48 = .sdata2:0x801D4F48; // type:object size:0x8 data:double +lbl_801D4F50 = .sdata2:0x801D4F50; // type:object size:0x4 data:float +lbl_801D4F58 = .sdata2:0x801D4F58; // type:object size:0x8 data:double +lbl_801D4F60 = .sdata2:0x801D4F60; // type:object size:0x4 data:float +lbl_801D4F64 = .sdata2:0x801D4F64; // type:object size:0x4 data:float +lbl_801D4F68 = .sdata2:0x801D4F68; // type:object size:0x4 data:float +lbl_801D4F70 = .sdata2:0x801D4F70; // type:object size:0x8 data:double +lbl_801D4F78 = .sdata2:0x801D4F78; // type:object size:0x8 data:double +lbl_801D4F80 = .sdata2:0x801D4F80; // type:object size:0x8 data:double +lbl_801D4F88 = .sdata2:0x801D4F88; // type:object size:0x4 data:float +lbl_801D4F90 = .sdata2:0x801D4F90; // type:object size:0x8 data:double +lbl_801D4F98 = .sdata2:0x801D4F98; // type:object size:0x8 data:double +lbl_801D4FA0 = .sdata2:0x801D4FA0; // type:object size:0x8 data:double +lbl_801D4FA8 = .sdata2:0x801D4FA8; // type:object size:0x8 data:double +lbl_801D4FB0 = .sdata2:0x801D4FB0; // type:object size:0x8 data:double +lbl_801D4FB8 = .sdata2:0x801D4FB8; // type:object size:0x8 data:double +lbl_801D4FC0 = .sdata2:0x801D4FC0; // type:object size:0x8 data:double +lbl_801D4FC8 = .sdata2:0x801D4FC8; // type:object size:0x8 data:double +lbl_801D4FD0 = .sdata2:0x801D4FD0; // type:object size:0x8 data:double +lbl_801D4FD8 = .sdata2:0x801D4FD8; // type:object size:0x4 data:float +lbl_801D4FDC = .sdata2:0x801D4FDC; // type:object size:0x4 data:float +lbl_801D4FE0 = .sdata2:0x801D4FE0; // type:object size:0x4 data:float +lbl_801D4FE4 = .sdata2:0x801D4FE4; // type:object size:0x4 data:float +lbl_801D4FE8 = .sdata2:0x801D4FE8; // type:object size:0x8 data:double +lbl_801D4FF0 = .sdata2:0x801D4FF0; // type:object size:0x4 data:float +lbl_801D4FF8 = .sdata2:0x801D4FF8; // type:object size:0x8 data:double +lbl_801D5000 = .sdata2:0x801D5000; // type:object size:0x8 data:double +lbl_801D5008 = .sdata2:0x801D5008; // type:object size:0x4 data:float +lbl_801D500C = .sdata2:0x801D500C; // type:object size:0x4 data:float +lbl_801D5010 = .sdata2:0x801D5010; // type:object size:0x8 data:double +lbl_801D5018 = .sdata2:0x801D5018; // type:object size:0x4 data:float +lbl_801D501C = .sdata2:0x801D501C; // type:object size:0x4 data:float +lbl_801D5020 = .sdata2:0x801D5020; // type:object size:0x4 data:float +lbl_801D5024 = .sdata2:0x801D5024; // type:object size:0x4 data:float +lbl_801D5028 = .sdata2:0x801D5028; // type:object size:0x4 data:float +lbl_801D502C = .sdata2:0x801D502C; // type:object size:0x4 data:float +lbl_801D5030 = .sdata2:0x801D5030; // type:object size:0x8 data:double +lbl_801D5038 = .sdata2:0x801D5038; // type:object size:0x4 data:float +lbl_801D5040 = .sdata2:0x801D5040; // type:object size:0x8 data:double +lbl_801D5048 = .sdata2:0x801D5048; // type:object size:0x8 data:double +lbl_801D5050 = .sdata2:0x801D5050; // type:object size:0x4 data:float +lbl_801D5058 = .sdata2:0x801D5058; // type:object size:0x8 data:double +lbl_801D5060 = .sdata2:0x801D5060; // type:object size:0x4 data:float +lbl_801D5064 = .sdata2:0x801D5064; // type:object size:0x4 data:float +lbl_801D5068 = .sdata2:0x801D5068; // type:object size:0x8 data:double +lbl_801D5070 = .sdata2:0x801D5070; // type:object size:0x8 data:double +lbl_801D5078 = .sdata2:0x801D5078; // type:object size:0x4 data:float +lbl_801D507C = .sdata2:0x801D507C; // type:object size:0x4 data:float +lbl_801D5080 = .sdata2:0x801D5080; // type:object size:0x4 data:float +lbl_801D5088 = .sdata2:0x801D5088; // type:object size:0x8 data:double +lbl_801D5090 = .sdata2:0x801D5090; // type:object size:0x4 data:float +lbl_801D5094 = .sdata2:0x801D5094; // type:object size:0x4 data:float +lbl_801D5098 = .sdata2:0x801D5098; // type:object size:0x4 data:float +lbl_801D509C = .sdata2:0x801D509C; // type:object size:0x4 data:float +lbl_801D50A0 = .sdata2:0x801D50A0; // type:object size:0x8 data:double +lbl_801D50A8 = .sdata2:0x801D50A8; // type:object size:0x4 data:float +lbl_801D50B0 = .sdata2:0x801D50B0; // type:object size:0x8 data:double +lbl_801D50B8 = .sdata2:0x801D50B8; // type:object size:0x4 data:float +lbl_801D50C0 = .sdata2:0x801D50C0; // type:object size:0x8 data:double +lbl_801D50C8 = .sdata2:0x801D50C8; // type:object size:0x8 data:float +lbl_801D50D0 = .sdata2:0x801D50D0; // type:object size:0x4 data:float +lbl_801D50D4 = .sdata2:0x801D50D4; // type:object size:0x4 data:float +lbl_801D50D8 = .sdata2:0x801D50D8; // type:object size:0x4 data:float +lbl_801D50DC = .sdata2:0x801D50DC; // type:object size:0x4 data:float +lbl_801D50E0 = .sdata2:0x801D50E0; // type:object size:0x8 data:double +lbl_801D50E8 = .sdata2:0x801D50E8; // type:object size:0x8 data:double +lbl_801D50F0 = .sdata2:0x801D50F0; // type:object size:0x8 data:double +lbl_801D50F8 = .sdata2:0x801D50F8; // type:object size:0x4 data:float +lbl_801D5100 = .sdata2:0x801D5100; // type:object size:0x8 data:double +lbl_801D5108 = .sdata2:0x801D5108; // type:object size:0x2 data:2byte +lbl_801D510A = .sdata2:0x801D510A; // type:object size:0x2 data:2byte +lbl_801D510C = .sdata2:0x801D510C; // type:object size:0x2 data:2byte +lbl_801D510E = .sdata2:0x801D510E; // type:object size:0x2 data:2byte +lbl_801D5110 = .sdata2:0x801D5110; // type:object size:0x1 data:byte +lbl_801D5111 = .sdata2:0x801D5111; // type:object size:0x1 data:byte +lbl_801D5112 = .sdata2:0x801D5112; // type:object size:0x1 data:byte +lbl_801D5113 = .sdata2:0x801D5113; // type:object size:0x1 data:byte +lbl_801D5114 = .sdata2:0x801D5114; // type:object size:0x1 data:byte +lbl_801D5115 = .sdata2:0x801D5115; // type:object size:0x1 data:byte +lbl_801D5116 = .sdata2:0x801D5116; // type:object size:0x1 data:byte +lbl_801D5117 = .sdata2:0x801D5117; // type:object size:0x1 data:byte +lbl_801D5118 = .sdata2:0x801D5118; // type:object size:0x1 data:byte +lbl_801D5119 = .sdata2:0x801D5119; // type:object size:0x1 data:byte +lbl_801D511A = .sdata2:0x801D511A; // type:object size:0x1 data:byte +lbl_801D511B = .sdata2:0x801D511B; // type:object size:0x1 data:byte +lbl_801D511C = .sdata2:0x801D511C; // type:object size:0x4 data:float +lbl_801D5120 = .sdata2:0x801D5120; // type:object size:0x4 data:float +lbl_801D5124 = .sdata2:0x801D5124; // type:object size:0x1 data:byte +lbl_801D5125 = .sdata2:0x801D5125; // type:object size:0x1 data:byte +lbl_801D5126 = .sdata2:0x801D5126; // type:object size:0x1 data:byte +lbl_801D5127 = .sdata2:0x801D5127; // type:object size:0x1 data:byte +lbl_801D5128 = .sdata2:0x801D5128; // type:object size:0x4 data:float +lbl_801D512C = .sdata2:0x801D512C; // type:object size:0x4 data:float +lbl_801D5130 = .sdata2:0x801D5130; // type:object size:0x8 data:float +lbl_801D5138 = .sdata2:0x801D5138; // type:object size:0x4 data:float +lbl_801D513C = .sdata2:0x801D513C; // type:object size:0x4 data:float +lbl_801D5140 = .sdata2:0x801D5140; // type:object size:0x8 data:float +lbl_801D5148 = .sdata2:0x801D5148; // type:object size:0x4 data:float +lbl_801D514C = .sdata2:0x801D514C; // type:object size:0x4 data:float +lbl_801D5150 = .sdata2:0x801D5150; // type:object size:0x4 data:float +lbl_801D5154 = .sdata2:0x801D5154; // type:object size:0x4 data:float +lbl_801D5158 = .sdata2:0x801D5158; // type:object size:0x4 data:float +lbl_801D515C = .sdata2:0x801D515C; // type:object size:0x4 data:float +lbl_801D5160 = .sdata2:0x801D5160; // type:object size:0x8 data:double +lbl_801D5168 = .sdata2:0x801D5168; // type:object size:0x8 data:double +lbl_801D5170 = .sdata2:0x801D5170; // type:object size:0x4 data:float +lbl_801D5174 = .sdata2:0x801D5174; // type:object size:0x4 data:float +lbl_801D5178 = .sdata2:0x801D5178; // type:object size:0x8 data:double +lbl_801D5180 = .sdata2:0x801D5180; // type:object size:0x8 data:double +lbl_801D5188 = .sdata2:0x801D5188; // type:object size:0x4 data:float +lbl_801D518C = .sdata2:0x801D518C; // type:object size:0x4 data:float +lbl_801D5190 = .sdata2:0x801D5190; // type:object size:0x4 data:float +lbl_801D5194 = .sdata2:0x801D5194; // type:object size:0x4 data:float +lbl_801D5198 = .sdata2:0x801D5198; // type:object size:0x4 data:float +lbl_801D519C = .sdata2:0x801D519C; // type:object size:0x4 data:float +lbl_801D51A0 = .sdata2:0x801D51A0; // type:object size:0x8 data:double +lbl_801D51A8 = .sdata2:0x801D51A8; // type:object size:0x4 data:float +lbl_801D51AC = .sdata2:0x801D51AC; // type:object size:0x4 data:float +lbl_801D51B0 = .sdata2:0x801D51B0; // type:object size:0x8 data:double +lbl_801D51B8 = .sdata2:0x801D51B8; // type:object size:0x4 data:float +lbl_801D51BC = .sdata2:0x801D51BC; // type:object size:0x4 data:float +lbl_801D51C0 = .sdata2:0x801D51C0; // type:object size:0x4 data:float +lbl_801D51C4 = .sdata2:0x801D51C4; // type:object size:0x4 data:float +lbl_801D51C8 = .sdata2:0x801D51C8; // type:object size:0x4 data:float +lbl_801D51CC = .sdata2:0x801D51CC; // type:object size:0x4 data:float +lbl_801D51D0 = .sdata2:0x801D51D0; // type:object size:0x4 data:float +lbl_801D51D4 = .sdata2:0x801D51D4; // type:object size:0x4 data:float +lbl_801D51D8 = .sdata2:0x801D51D8; // type:object size:0x4 data:float +lbl_801D51DC = .sdata2:0x801D51DC; // type:object size:0x4 data:float +lbl_801D51E0 = .sdata2:0x801D51E0; // type:object size:0x4 data:float +lbl_801D51E4 = .sdata2:0x801D51E4; // type:object size:0x4 data:float +lbl_801D51E8 = .sdata2:0x801D51E8; // type:object size:0x4 data:float +lbl_801D51EC = .sdata2:0x801D51EC; // type:object size:0x4 data:float +lbl_801D51F0 = .sdata2:0x801D51F0; // type:object size:0x4 data:float +lbl_801D51F4 = .sdata2:0x801D51F4; // type:object size:0x4 data:float +lbl_801D51F8 = .sdata2:0x801D51F8; // type:object size:0x4 data:float +lbl_801D51FC = .sdata2:0x801D51FC; // type:object size:0x4 data:float +lbl_801D5200 = .sdata2:0x801D5200; // type:object size:0x4 data:float +lbl_801D5204 = .sdata2:0x801D5204; // type:object size:0x4 data:float +lbl_801D5208 = .sdata2:0x801D5208; // type:object size:0x4 data:float +lbl_801D520C = .sdata2:0x801D520C; // type:object size:0x4 data:float +lbl_801D5210 = .sdata2:0x801D5210; // type:object size:0x4 data:float +lbl_801D5218 = .sdata2:0x801D5218; // type:object size:0x8 data:double +lbl_801D5220 = .sdata2:0x801D5220; // type:object size:0x8 data:double +lbl_801D5228 = .sdata2:0x801D5228; // type:object size:0x4 data:float +lbl_801D5230 = .sdata2:0x801D5230; // type:object size:0x8 data:double +lbl_801D5238 = .sdata2:0x801D5238; // type:object size:0x4 data:float +lbl_801D5240 = .sdata2:0x801D5240; // type:object size:0x8 data:double +lbl_801D5248 = .sdata2:0x801D5248; // type:object size:0x4 data:float +lbl_801D524C = .sdata2:0x801D524C; // type:object size:0x4 data:float +lbl_801D5250 = .sdata2:0x801D5250; // type:object size:0x4 data:float +lbl_801D5254 = .sdata2:0x801D5254; // type:object size:0x4 data:float +lbl_801D5258 = .sdata2:0x801D5258; // type:object size:0x8 data:double +lbl_801D5260 = .sdata2:0x801D5260; // type:object size:0x8 data:double +lbl_801D5268 = .sdata2:0x801D5268; // type:object size:0x4 data:float +lbl_801D526C = .sdata2:0x801D526C; // type:object size:0x4 data:float +lbl_801D5270 = .sdata2:0x801D5270; // type:object size:0x4 data:float +lbl_801D5274 = .sdata2:0x801D5274; // type:object size:0x4 data:float +lbl_801D5278 = .sdata2:0x801D5278; // type:object size:0x4 data:float +lbl_801D527C = .sdata2:0x801D527C; // type:object size:0x4 data:float +lbl_801D5280 = .sdata2:0x801D5280; // type:object size:0x4 data:float +lbl_801D5284 = .sdata2:0x801D5284; // type:object size:0x4 data:float +lbl_801D5288 = .sdata2:0x801D5288; // type:object size:0x4 data:float +lbl_801D528C = .sdata2:0x801D528C; // type:object size:0x4 data:float +lbl_801D5290 = .sdata2:0x801D5290; // type:object size:0x4 data:float +lbl_801D5294 = .sdata2:0x801D5294; // type:object size:0x4 data:float +lbl_801D5298 = .sdata2:0x801D5298; // type:object size:0x4 data:float +lbl_801D529C = .sdata2:0x801D529C; // type:object size:0x4 data:float +lbl_801D52A0 = .sdata2:0x801D52A0; // type:object size:0x4 data:4byte +lbl_801D52A4 = .sdata2:0x801D52A4; // type:object size:0x4 data:4byte +lbl_801D52A8 = .sdata2:0x801D52A8; // type:object size:0x4 data:float +lbl_801D52AC = .sdata2:0x801D52AC; // type:object size:0x4 data:float +lbl_801D52B0 = .sdata2:0x801D52B0; // type:object size:0x4 data:float +lbl_801D52B4 = .sdata2:0x801D52B4; // type:object size:0x4 data:float +lbl_801D52B8 = .sdata2:0x801D52B8; // type:object size:0x4 data:float +lbl_801D52BC = .sdata2:0x801D52BC; // type:object size:0x4 data:float +lbl_801D52C0 = .sdata2:0x801D52C0; // type:object size:0x4 data:float +lbl_801D52C4 = .sdata2:0x801D52C4; // type:object size:0x4 data:float +lbl_801D52C8 = .sdata2:0x801D52C8; // type:object size:0x4 data:float +lbl_801D52CC = .sdata2:0x801D52CC; // type:object size:0x2 data:2byte +lbl_801D52CE = .sdata2:0x801D52CE; // type:object size:0x2 data:2byte +lbl_801D52D0 = .sdata2:0x801D52D0; // type:object size:0x2 data:2byte +lbl_801D52D2 = .sdata2:0x801D52D2; // type:object size:0x2 data:2byte +lbl_801D52D4 = .sdata2:0x801D52D4; // type:object size:0x1 data:byte +lbl_801D52D5 = .sdata2:0x801D52D5; // type:object size:0x1 data:byte +lbl_801D52D6 = .sdata2:0x801D52D6; // type:object size:0x1 data:byte +lbl_801D52D7 = .sdata2:0x801D52D7; // type:object size:0x1 data:byte +lbl_801D52D8 = .sdata2:0x801D52D8; // type:object size:0x1 data:byte +lbl_801D52D9 = .sdata2:0x801D52D9; // type:object size:0x1 data:byte +lbl_801D52DA = .sdata2:0x801D52DA; // type:object size:0x1 data:byte +lbl_801D52DB = .sdata2:0x801D52DB; // type:object size:0x1 data:byte +lbl_801D52DC = .sdata2:0x801D52DC; // type:object size:0x4 data:float +lbl_801D52E0 = .sdata2:0x801D52E0; // type:object size:0x4 data:float +lbl_801D52E4 = .sdata2:0x801D52E4; // type:object size:0x4 data:float +lbl_801D52E8 = .sdata2:0x801D52E8; // type:object size:0x4 data:float +lbl_801D52EC = .sdata2:0x801D52EC; // type:object size:0x4 data:float +lbl_801D52F0 = .sdata2:0x801D52F0; // type:object size:0x4 data:float +lbl_801D52F8 = .sdata2:0x801D52F8; // type:object size:0x8 data:double +lbl_801D5300 = .sdata2:0x801D5300; // type:object size:0x4 data:float +lbl_801D5304 = .sdata2:0x801D5304; // type:object size:0x4 data:float +lbl_801D5308 = .sdata2:0x801D5308; // type:object size:0x4 data:float +lbl_801D530C = .sdata2:0x801D530C; // type:object size:0x4 data:float +lbl_801D5310 = .sdata2:0x801D5310; // type:object size:0x8 data:float +winSpeedTbl = .sdata2:0x801D5318; // type:object size:0x4 scope:local +lbl_801D531C = .sdata2:0x801D531C; // type:object size:0x4 data:float +lbl_801D5320 = .sdata2:0x801D5320; // type:object size:0x4 data:float +lbl_801D5328 = .sdata2:0x801D5328; // type:object size:0x8 data:double +lbl_801D5330 = .sdata2:0x801D5330; // type:object size:0x8 data:double +lbl_801D5338 = .sdata2:0x801D5338; // type:object size:0x8 data:double +lbl_801D5340 = .sdata2:0x801D5340; // type:object size:0x4 data:float +lbl_801D5344 = .sdata2:0x801D5344; // type:object size:0x4 data:float +lbl_801D5348 = .sdata2:0x801D5348; // type:object size:0x8 data:float +lbl_801D5350 = .sdata2:0x801D5350; // type:object size:0x4 data:float +lbl_801D5354 = .sdata2:0x801D5354; // type:object size:0x4 data:float +lbl_801D5358 = .sdata2:0x801D5358; // type:object size:0x4 data:float +lbl_801D5360 = .sdata2:0x801D5360; // type:object size:0x8 data:double +lbl_801D5368 = .sdata2:0x801D5368; // type:object size:0x8 data:double +lbl_801D5370 = .sdata2:0x801D5370; // type:object size:0x4 data:float +lbl_801D5374 = .sdata2:0x801D5374; // type:object size:0x4 data:float +lbl_801D5378 = .sdata2:0x801D5378; // type:object size:0x4 data:float +lbl_801D537C = .sdata2:0x801D537C; // type:object size:0x4 data:float +lbl_801D5380 = .sdata2:0x801D5380; // type:object size:0x4 data:float +lbl_801D5384 = .sdata2:0x801D5384; // type:object size:0x4 data:float +lbl_801D5388 = .sdata2:0x801D5388; // type:object size:0x4 data:float +lbl_801D538C = .sdata2:0x801D538C; // type:object size:0x4 data:float +lbl_801D5390 = .sdata2:0x801D5390; // type:object size:0x4 data:float +lbl_801D5394 = .sdata2:0x801D5394; // type:object size:0x4 data:float +lbl_801D5398 = .sdata2:0x801D5398; // type:object size:0x4 data:float +lbl_801D539C = .sdata2:0x801D539C; // type:object size:0x4 data:float +lbl_801D53A0 = .sdata2:0x801D53A0; // type:object size:0x4 data:float +lbl_801D53A8 = .sdata2:0x801D53A8; // type:object size:0x8 data:double +lbl_801D53B0 = .sdata2:0x801D53B0; // type:object size:0x4 data:float +lbl_801D53B4 = .sdata2:0x801D53B4; // type:object size:0x4 data:float +lbl_801D53B8 = .sdata2:0x801D53B8; // type:object size:0x8 data:float +lbl_801D53C0 = .sdata2:0x801D53C0; // type:object size:0x1 data:byte +lbl_801D53C1 = .sdata2:0x801D53C1; // type:object size:0x1 data:byte +lbl_801D53C2 = .sdata2:0x801D53C2; // type:object size:0x1 data:byte +lbl_801D53C3 = .sdata2:0x801D53C3; // type:object size:0x1 data:byte +lbl_801D53C4 = .sdata2:0x801D53C4; // type:object size:0x1 data:byte +lbl_801D53C5 = .sdata2:0x801D53C5; // type:object size:0x1 data:byte +lbl_801D53C6 = .sdata2:0x801D53C6; // type:object size:0x1 data:byte +lbl_801D53C7 = .sdata2:0x801D53C7; // type:object size:0x1 data:byte +lbl_801D53C8 = .sdata2:0x801D53C8; // type:object size:0x4 data:float +lbl_801D53CC = .sdata2:0x801D53CC; // type:object size:0x4 data:float +lbl_801D53D0 = .sdata2:0x801D53D0; // type:object size:0x8 data:double +lbl_801D53D8 = .sdata2:0x801D53D8; // type:object size:0x8 data:double +lbl_801D53E0 = .sdata2:0x801D53E0; // type:object size:0x8 data:double +lbl_801D53E8 = .sdata2:0x801D53E8; // type:object size:0x4 data:float +lbl_801D53F0 = .sdata2:0x801D53F0; // type:object size:0x8 data:double +lbl_801D53F8 = .sdata2:0x801D53F8; // type:object size:0x4 data:float +lbl_801D53FC = .sdata2:0x801D53FC; // type:object size:0x4 data:float +lbl_801D5400 = .sdata2:0x801D5400; // type:object size:0x4 data:float +lbl_801D5404 = .sdata2:0x801D5404; // type:object size:0x4 data:float +lbl_801D5408 = .sdata2:0x801D5408; // type:object size:0x4 data:float +lbl_801D540C = .sdata2:0x801D540C; // type:object size:0x4 data:float +lbl_801D5410 = .sdata2:0x801D5410; // type:object size:0x4 data:float +lbl_801D5414 = .sdata2:0x801D5414; // type:object size:0x1 data:byte +lbl_801D5415 = .sdata2:0x801D5415; // type:object size:0x1 data:byte +lbl_801D5416 = .sdata2:0x801D5416; // type:object size:0x1 data:byte +lbl_801D5417 = .sdata2:0x801D5417; // type:object size:0x1 data:byte +lbl_801D5418 = .sdata2:0x801D5418; // type:object size:0x4 data:float +lbl_801D541C = .sdata2:0x801D541C; // type:object size:0x4 data:float +lbl_801D5420 = .sdata2:0x801D5420; // type:object size:0x4 data:float +lbl_801D5424 = .sdata2:0x801D5424; // type:object size:0x4 data:float +lbl_801D5428 = .sdata2:0x801D5428; // type:object size:0x4 data:float +lbl_801D542C = .sdata2:0x801D542C; // type:object size:0x4 data:float +lbl_801D5430 = .sdata2:0x801D5430; // type:object size:0x4 data:float +lbl_801D5434 = .sdata2:0x801D5434; // type:object size:0x4 data:float +lbl_801D5438 = .sdata2:0x801D5438; // type:object size:0x4 data:float +lbl_801D543C = .sdata2:0x801D543C; // type:object size:0x4 data:float +lbl_801D5440 = .sdata2:0x801D5440; // type:object size:0x4 data:4byte +lbl_801D5444 = .sdata2:0x801D5444; // type:object size:0x4 data:4byte +lbl_801D5448 = .sdata2:0x801D5448; // type:object size:0x4 data:float +lbl_801D5450 = .sdata2:0x801D5450; // type:object size:0x8 data:double +lbl_801D5458 = .sdata2:0x801D5458; // type:object size:0x8 data:double +lbl_801D5460 = .sdata2:0x801D5460; // type:object size:0x4 data:float +lbl_801D5464 = .sdata2:0x801D5464; // type:object size:0x4 data:float +lbl_801D5468 = .sdata2:0x801D5468; // type:object size:0x4 data:float +lbl_801D546C = .sdata2:0x801D546C; // type:object size:0x4 data:float +lbl_801D5470 = .sdata2:0x801D5470; // type:object size:0x4 data:float +lbl_801D5474 = .sdata2:0x801D5474; // type:object size:0x4 data:float +lbl_801D5478 = .sdata2:0x801D5478; // type:object size:0x4 data:float +lbl_801D547C = .sdata2:0x801D547C; // type:object size:0x4 data:float +lbl_801D5480 = .sdata2:0x801D5480; // type:object size:0x4 data:float +lbl_801D5484 = .sdata2:0x801D5484; // type:object size:0x4 data:float +lbl_801D5488 = .sdata2:0x801D5488; // type:object size:0x4 data:float +lbl_801D548C = .sdata2:0x801D548C; // type:object size:0x4 data:float +lbl_801D5490 = .sdata2:0x801D5490; // type:object size:0x4 data:float +lbl_801D5494 = .sdata2:0x801D5494; // type:object size:0x4 data:float +lbl_801D5498 = .sdata2:0x801D5498; // type:object size:0x4 data:float +lbl_801D549C = .sdata2:0x801D549C; // type:object size:0x4 data:float +lbl_801D54A0 = .sdata2:0x801D54A0; // type:object size:0x4 data:float +lbl_801D54A8 = .sdata2:0x801D54A8; // type:object size:0x8 data:double +lbl_801D54B0 = .sdata2:0x801D54B0; // type:object size:0x4 data:float +lbl_801D54B4 = .sdata2:0x801D54B4; // type:object size:0x4 data:float +lbl_801D54B8 = .sdata2:0x801D54B8; // type:object size:0x4 data:float +lbl_801D54BC = .sdata2:0x801D54BC; // type:object size:0x4 data:float +lbl_801D54C0 = .sdata2:0x801D54C0; // type:object size:0x4 data:float +lbl_801D54C4 = .sdata2:0x801D54C4; // type:object size:0x4 data:float +lbl_801D54C8 = .sdata2:0x801D54C8; // type:object size:0x4 data:float +lbl_801D54CC = .sdata2:0x801D54CC; // type:object size:0x4 data:float +lbl_801D54D0 = .sdata2:0x801D54D0; // type:object size:0x4 data:float +lbl_801D54D4 = .sdata2:0x801D54D4; // type:object size:0x4 data:float +lbl_801D54D8 = .sdata2:0x801D54D8; // type:object size:0x4 data:float +lbl_801D54DC = .sdata2:0x801D54DC; // type:object size:0x4 data:float +lbl_801D54E0 = .sdata2:0x801D54E0; // type:object size:0x4 data:float +lbl_801D54E8 = .sdata2:0x801D54E8; // type:object size:0x8 data:double +lbl_801D54F0 = .sdata2:0x801D54F0; // type:object size:0x4 data:float +lbl_801D54F4 = .sdata2:0x801D54F4; // type:object size:0x4 data:float +lbl_801D54F8 = .sdata2:0x801D54F8; // type:object size:0x4 data:float +lbl_801D5500 = .sdata2:0x801D5500; // type:object size:0x8 data:double +lbl_801D5508 = .sdata2:0x801D5508; // type:object size:0x8 data:float +lbl_801D5510 = .sdata2:0x801D5510; // type:object size:0x4 data:float +lbl_801D5514 = .sdata2:0x801D5514; // type:object size:0x4 data:4byte +lbl_801D5518 = .sdata2:0x801D5518; // type:object size:0x4 data:4byte +lbl_801D551C = .sdata2:0x801D551C; // type:object size:0x4 data:float +lbl_801D5520 = .sdata2:0x801D5520; // type:object size:0x4 data:float +lbl_801D5528 = .sdata2:0x801D5528; // type:object size:0x8 data:double +lbl_801D5530 = .sdata2:0x801D5530; // type:object size:0x8 data:double +lbl_801D5538 = .sdata2:0x801D5538; // type:object size:0x4 data:float +lbl_801D553C = .sdata2:0x801D553C; // type:object size:0x4 data:float +lbl_801D5540 = .sdata2:0x801D5540; // type:object size:0x4 data:float +lbl_801D5544 = .sdata2:0x801D5544; // type:object size:0x4 data:float +lbl_801D5548 = .sdata2:0x801D5548; // type:object size:0x8 data:double +lbl_801D5550 = .sdata2:0x801D5550; // type:object size:0x4 data:float +lbl_801D5554 = .sdata2:0x801D5554; // type:object size:0x4 data:float +lbl_801D5558 = .sdata2:0x801D5558; // type:object size:0x4 data:float +lbl_801D555C = .sdata2:0x801D555C; // type:object size:0x4 data:float +lbl_801D5560 = .sdata2:0x801D5560; // type:object size:0x4 data:float +lbl_801D5564 = .sdata2:0x801D5564; // type:object size:0x4 data:float +lbl_801D5568 = .sdata2:0x801D5568; // type:object size:0x4 data:float +lbl_801D556C = .sdata2:0x801D556C; // type:object size:0x4 data:float +lbl_801D5570 = .sdata2:0x801D5570; // type:object size:0x4 data:float +lbl_801D5574 = .sdata2:0x801D5574; // type:object size:0x4 data:float +lbl_801D5578 = .sdata2:0x801D5578; // type:object size:0x4 data:float +lbl_801D557C = .sdata2:0x801D557C; // type:object size:0x4 data:float +lbl_801D5580 = .sdata2:0x801D5580; // type:object size:0x4 data:float +lbl_801D5584 = .sdata2:0x801D5584; // type:object size:0x4 data:4byte +lbl_801D5588 = .sdata2:0x801D5588; // type:object size:0x4 data:4byte +lbl_801D558C = .sdata2:0x801D558C; // type:object size:0x2 data:2byte +lbl_801D558E = .sdata2:0x801D558E; // type:object size:0x2 data:2byte +lbl_801D5590 = .sdata2:0x801D5590; // type:object size:0x2 data:2byte +lbl_801D5592 = .sdata2:0x801D5592; // type:object size:0x2 data:2byte +lbl_801D5594 = .sdata2:0x801D5594; // type:object size:0x4 data:float +lbl_801D5598 = .sdata2:0x801D5598; // type:object size:0x4 data:float +lbl_801D559C = .sdata2:0x801D559C; // type:object size:0x4 data:float +lbl_801D55A0 = .sdata2:0x801D55A0; // type:object size:0x4 data:float +lbl_801D55A4 = .sdata2:0x801D55A4; // type:object size:0x4 data:float +lbl_801D55A8 = .sdata2:0x801D55A8; // type:object size:0x4 data:float +lbl_801D55AC = .sdata2:0x801D55AC; // type:object size:0x4 data:float +lbl_801D55B0 = .sdata2:0x801D55B0; // type:object size:0x4 data:float +lbl_801D55B4 = .sdata2:0x801D55B4; // type:object size:0x4 data:float +lbl_801D55B8 = .sdata2:0x801D55B8; // type:object size:0x4 data:float +lbl_801D55BC = .sdata2:0x801D55BC; // type:object size:0x4 data:float +lbl_801D55C0 = .sdata2:0x801D55C0; // type:object size:0x4 data:float +lbl_801D55C4 = .sdata2:0x801D55C4; // type:object size:0x4 data:float +lbl_801D55C8 = .sdata2:0x801D55C8; // type:object size:0x4 data:float +lbl_801D55CC = .sdata2:0x801D55CC; // type:object size:0x4 data:float +lbl_801D55D0 = .sdata2:0x801D55D0; // type:object size:0x4 data:float +lbl_801D55D4 = .sdata2:0x801D55D4; // type:object size:0x4 data:float +lbl_801D55D8 = .sdata2:0x801D55D8; // type:object size:0x4 data:float +lbl_801D55DC = .sdata2:0x801D55DC; // type:object size:0x4 data:float +lbl_801D55E0 = .sdata2:0x801D55E0; // type:object size:0x4 data:float +lbl_801D55E4 = .sdata2:0x801D55E4; // type:object size:0x4 data:float +lbl_801D55E8 = .sdata2:0x801D55E8; // type:object size:0x4 data:float +lbl_801D55EC = .sdata2:0x801D55EC; // type:object size:0x4 data:float +lbl_801D55F0 = .sdata2:0x801D55F0; // type:object size:0x4 data:float +lbl_801D55F4 = .sdata2:0x801D55F4; // type:object size:0x4 data:float +lbl_801D55F8 = .sdata2:0x801D55F8; // type:object size:0x4 data:float +lbl_801D55FC = .sdata2:0x801D55FC; // type:object size:0x4 data:float +lbl_801D5600 = .sdata2:0x801D5600; // type:object size:0x4 data:float +lbl_801D5604 = .sdata2:0x801D5604; // type:object size:0x4 data:float +lbl_801D5608 = .sdata2:0x801D5608; // type:object size:0x4 data:float +lbl_801D560C = .sdata2:0x801D560C; // type:object size:0x4 data:float +lbl_801D5610 = .sdata2:0x801D5610; // type:object size:0x4 data:float +lbl_801D5614 = .sdata2:0x801D5614; // type:object size:0x4 data:float +lbl_801D5618 = .sdata2:0x801D5618; // type:object size:0x4 data:float +lbl_801D561C = .sdata2:0x801D561C; // type:object size:0x4 data:float +lbl_801D5620 = .sdata2:0x801D5620; // type:object size:0x4 data:float +lbl_801D5624 = .sdata2:0x801D5624; // type:object size:0x4 data:float +lbl_801D5628 = .sdata2:0x801D5628; // type:object size:0x8 data:double +lbl_801D5630 = .sdata2:0x801D5630; // type:object size:0x8 data:double +lbl_801D5638 = .sdata2:0x801D5638; // type:object size:0x4 data:float +lbl_801D563C = .sdata2:0x801D563C; // type:object size:0x4 data:float +lbl_801D5640 = .sdata2:0x801D5640; // type:object size:0x4 data:float +lbl_801D5644 = .sdata2:0x801D5644; // type:object size:0x4 data:float +lbl_801D5648 = .sdata2:0x801D5648; // type:object size:0x4 data:float +lbl_801D564C = .sdata2:0x801D564C; // type:object size:0x4 data:float +lbl_801D5650 = .sdata2:0x801D5650; // type:object size:0x4 data:float +lbl_801D5654 = .sdata2:0x801D5654; // type:object size:0x4 data:float +lbl_801D5658 = .sdata2:0x801D5658; // type:object size:0x4 data:float +lbl_801D565C = .sdata2:0x801D565C; // type:object size:0x4 data:float +lbl_801D5660 = .sdata2:0x801D5660; // type:object size:0x4 data:float +lbl_801D5664 = .sdata2:0x801D5664; // type:object size:0x4 data:float +lbl_801D5668 = .sdata2:0x801D5668; // type:object size:0x8 data:double +lbl_801D5670 = .sdata2:0x801D5670; // type:object size:0x4 data:4byte +lbl_801D5674 = .sdata2:0x801D5674; // type:object size:0x4 data:4byte +lbl_801D5678 = .sdata2:0x801D5678; // type:object size:0x1 data:byte +lbl_801D5679 = .sdata2:0x801D5679; // type:object size:0x1 data:byte +lbl_801D567C = .sdata2:0x801D567C; // type:object size:0x4 data:float +lbl_801D5680 = .sdata2:0x801D5680; // type:object size:0x4 data:float +lbl_801D5684 = .sdata2:0x801D5684; // type:object size:0x4 data:float +lbl_801D5688 = .sdata2:0x801D5688; // type:object size:0x4 data:float +lbl_801D568C = .sdata2:0x801D568C; // type:object size:0x4 data:float +lbl_801D5690 = .sdata2:0x801D5690; // type:object size:0x4 data:float +lbl_801D5694 = .sdata2:0x801D5694; // type:object size:0x4 data:float +lbl_801D5698 = .sdata2:0x801D5698; // type:object size:0x8 data:float +lbl_801D56A0 = .sdata2:0x801D56A0; // type:object size:0x4 data:float +lbl_801D56A4 = .sdata2:0x801D56A4; // type:object size:0x4 data:float +lbl_801D56A8 = .sdata2:0x801D56A8; // type:object size:0x4 data:float +lbl_801D56AC = .sdata2:0x801D56AC; // type:object size:0x4 data:float +coinSignMdl = .sdata2:0x801D56B0; // type:object size:0x8 scope:local +lbl_801D56B8 = .sdata2:0x801D56B8; // type:object size:0x4 data:float +lbl_801D56BC = .sdata2:0x801D56BC; // type:object size:0x4 data:float +lbl_801D56C0 = .sdata2:0x801D56C0; // type:object size:0x4 data:float +lbl_801D56C8 = .sdata2:0x801D56C8; // type:object size:0x8 data:double +lbl_801D56D0 = .sdata2:0x801D56D0; // type:object size:0x8 data:double +lbl_801D56D8 = .sdata2:0x801D56D8; // type:object size:0x4 data:float +lbl_801D56DC = .sdata2:0x801D56DC; // type:object size:0x4 data:float +lbl_801D56E0 = .sdata2:0x801D56E0; // type:object size:0x4 data:float +lbl_801D56E8 = .sdata2:0x801D56E8; // type:object size:0x8 data:double +lbl_801D56F0 = .sdata2:0x801D56F0; // type:object size:0x4 data:float +lbl_801D56F4 = .sdata2:0x801D56F4; // type:object size:0x4 data:float +lbl_801D56F8 = .sdata2:0x801D56F8; // type:object size:0x4 data:float +lbl_801D56FC = .sdata2:0x801D56FC; // type:object size:0x4 data:float +lbl_801D5700 = .sdata2:0x801D5700; // type:object size:0x4 data:float +lbl_801D5704 = .sdata2:0x801D5704; // type:object size:0x4 data:float +lbl_801D5708 = .sdata2:0x801D5708; // type:object size:0x4 data:float +lbl_801D570C = .sdata2:0x801D570C; // type:object size:0x4 data:float +lbl_801D5710 = .sdata2:0x801D5710; // type:object size:0x8 data:double +lbl_801D5718 = .sdata2:0x801D5718; // type:object size:0x8 data:double +lbl_801D5720 = .sdata2:0x801D5720; // type:object size:0x4 data:float +lbl_801D5728 = .sdata2:0x801D5728; // type:object size:0x8 data:double +lbl_801D5730 = .sdata2:0x801D5730; // type:object size:0x4 data:float +lbl_801D5734 = .sdata2:0x801D5734; // type:object size:0x4 data:float +lbl_801D5738 = .sdata2:0x801D5738; // type:object size:0x4 data:float +lbl_801D573C = .sdata2:0x801D573C; // type:object size:0x4 data:float +lbl_801D5740 = .sdata2:0x801D5740; // type:object size:0x4 data:float +lbl_801D5744 = .sdata2:0x801D5744; // type:object size:0x4 data:float +lbl_801D5748 = .sdata2:0x801D5748; // type:object size:0x4 data:float +lbl_801D574C = .sdata2:0x801D574C; // type:object size:0x4 data:float +lbl_801D5750 = .sdata2:0x801D5750; // type:object size:0x4 data:float +lbl_801D5754 = .sdata2:0x801D5754; // type:object size:0x4 data:float +lbl_801D5758 = .sdata2:0x801D5758; // type:object size:0x4 data:float +lbl_801D575C = .sdata2:0x801D575C; // type:object size:0x4 data:float +lbl_801D5760 = .sdata2:0x801D5760; // type:object size:0x4 data:float +lbl_801D5768 = .sdata2:0x801D5768; // type:object size:0x8 data:double +lbl_801D5770 = .sdata2:0x801D5770; // type:object size:0x8 data:double +lbl_801D5778 = .sdata2:0x801D5778; // type:object size:0x8 data:float +lbl_801D5780 = .sdata2:0x801D5780; // type:object size:0x4 data:float +lbl_801D5784 = .sdata2:0x801D5784; // type:object size:0x4 data:float +lbl_801D5788 = .sdata2:0x801D5788; // type:object size:0x4 data:float +lbl_801D578C = .sdata2:0x801D578C; // type:object size:0x4 data:float +lbl_801D5790 = .sdata2:0x801D5790; // type:object size:0x4 data:float +lbl_801D5794 = .sdata2:0x801D5794; // type:object size:0x4 data:float +lbl_801D5798 = .sdata2:0x801D5798; // type:object size:0x4 data:float +lbl_801D579C = .sdata2:0x801D579C; // type:object size:0x4 data:float +lbl_801D57A0 = .sdata2:0x801D57A0; // type:object size:0x4 data:float +lbl_801D57A4 = .sdata2:0x801D57A4; // type:object size:0x4 data:float +lbl_801D57A8 = .sdata2:0x801D57A8; // type:object size:0x4 data:float +lbl_801D57AC = .sdata2:0x801D57AC; // type:object size:0x4 data:float +lbl_801D57B0 = .sdata2:0x801D57B0; // type:object size:0x4 data:float +lbl_801D57B4 = .sdata2:0x801D57B4; // type:object size:0x4 data:float +lbl_801D57B8 = .sdata2:0x801D57B8; // type:object size:0x4 data:float +lbl_801D57BC = .sdata2:0x801D57BC; // type:object size:0x4 data:float +lbl_801D57C0 = .sdata2:0x801D57C0; // type:object size:0x8 data:double +lbl_801D57C8 = .sdata2:0x801D57C8; // type:object size:0x4 data:float +lbl_801D57CC = .sdata2:0x801D57CC; // type:object size:0x4 data:float +lbl_801D57D0 = .sdata2:0x801D57D0; // type:object size:0x4 data:float +lbl_801D57D4 = .sdata2:0x801D57D4; // type:object size:0x4 data:float +lbl_801D57D8 = .sdata2:0x801D57D8; // type:object size:0x4 data:float +lbl_801D57DC = .sdata2:0x801D57DC; // type:object size:0x4 data:float +lbl_801D57E0 = .sdata2:0x801D57E0; // type:object size:0x4 data:float +lbl_801D57E4 = .sdata2:0x801D57E4; // type:object size:0x4 data:float +lbl_801D57E8 = .sdata2:0x801D57E8; // type:object size:0x8 data:double +lbl_801D57F0 = .sdata2:0x801D57F0; // type:object size:0x8 data:double +lbl_801D57F8 = .sdata2:0x801D57F8; // type:object size:0x4 data:float +lbl_801D5800 = .sdata2:0x801D5800; // type:object size:0x8 data:double +lbl_801D5808 = .sdata2:0x801D5808; // type:object size:0x8 data:float +boxOfs = .sdata2:0x801D5810; // type:object size:0x8 scope:local data:float +lbl_801D5818 = .sdata2:0x801D5818; // type:object size:0x4 data:float +lbl_801D581C = .sdata2:0x801D581C; // type:object size:0x4 data:float +lbl_801D5820 = .sdata2:0x801D5820; // type:object size:0x4 data:float +lbl_801D5824 = .sdata2:0x801D5824; // type:object size:0x4 data:float +lbl_801D5828 = .sdata2:0x801D5828; // type:object size:0x4 data:float +lbl_801D582C = .sdata2:0x801D582C; // type:object size:0x4 data:float +lbl_801D5830 = .sdata2:0x801D5830; // type:object size:0x8 data:double +lbl_801D5838 = .sdata2:0x801D5838; // type:object size:0x8 data:double +lbl_801D5840 = .sdata2:0x801D5840; // type:object size:0x8 data:double +lbl_801D5848 = .sdata2:0x801D5848; // type:object size:0x4 data:float +lbl_801D584C = .sdata2:0x801D584C; // type:object size:0x4 data:float +lbl_801D5850 = .sdata2:0x801D5850; // type:object size:0x4 data:float +lbl_801D5854 = .sdata2:0x801D5854; // type:object size:0x4 data:4byte +lbl_801D5858 = .sdata2:0x801D5858; // type:object size:0x4 data:4byte +lbl_801D585C = .sdata2:0x801D585C; // type:object size:0x4 data:float +lbl_801D5860 = .sdata2:0x801D5860; // type:object size:0x4 data:float +lbl_801D5864 = .sdata2:0x801D5864; // type:object size:0x4 data:float +lbl_801D5868 = .sdata2:0x801D5868; // type:object size:0x4 data:float +lbl_801D586C = .sdata2:0x801D586C; // type:object size:0x4 data:4byte +lbl_801D5870 = .sdata2:0x801D5870; // type:object size:0x4 data:4byte +lbl_801D5874 = .sdata2:0x801D5874; // type:object size:0x4 data:float +lbl_801D5878 = .sdata2:0x801D5878; // type:object size:0x4 data:float +lbl_801D587C = .sdata2:0x801D587C; // type:object size:0x4 data:float +lbl_801D5880 = .sdata2:0x801D5880; // type:object size:0x4 data:float +lbl_801D5884 = .sdata2:0x801D5884; // type:object size:0x4 data:float +lbl_801D5888 = .sdata2:0x801D5888; // type:object size:0x8 data:double +lbl_801D5890 = .sdata2:0x801D5890; // type:object size:0x4 data:float +lbl_801D5898 = .sdata2:0x801D5898; // type:object size:0x8 data:double +lbl_801D58A0 = .sdata2:0x801D58A0; // type:object size:0x8 data:double +lbl_801D58A8 = .sdata2:0x801D58A8; // type:object size:0x8 data:double +lbl_801D58B0 = .sdata2:0x801D58B0; // type:object size:0x4 data:float +lbl_801D58B4 = .sdata2:0x801D58B4; // type:object size:0x4 data:float +lbl_801D58B8 = .sdata2:0x801D58B8; // type:object size:0x4 data:float +lbl_801D58BC = .sdata2:0x801D58BC; // type:object size:0x4 data:float +lbl_801D58C0 = .sdata2:0x801D58C0; // type:object size:0x4 data:float +lbl_801D58C4 = .sdata2:0x801D58C4; // type:object size:0x4 data:float +lbl_801D58C8 = .sdata2:0x801D58C8; // type:object size:0x4 data:float +lbl_801D58CC = .sdata2:0x801D58CC; // type:object size:0x4 data:float +lbl_801D58D0 = .sdata2:0x801D58D0; // type:object size:0x4 data:float +lbl_801D58D4 = .sdata2:0x801D58D4; // type:object size:0x4 data:float +lbl_801D58D8 = .sdata2:0x801D58D8; // type:object size:0x4 data:float +lbl_801D58E0 = .sdata2:0x801D58E0; // type:object size:0x8 data:double +lbl_801D58E8 = .sdata2:0x801D58E8; // type:object size:0x4 data:float +lbl_801D58EC = .sdata2:0x801D58EC; // type:object size:0x4 data:float +lbl_801D58F0 = .sdata2:0x801D58F0; // type:object size:0x4 data:float +lbl_801D58F4 = .sdata2:0x801D58F4; // type:object size:0x4 data:float +lbl_801D58F8 = .sdata2:0x801D58F8; // type:object size:0x4 data:float +lbl_801D58FC = .sdata2:0x801D58FC; // type:object size:0x4 data:float +lbl_801D5900 = .sdata2:0x801D5900; // type:object size:0x4 data:float +lbl_801D5904 = .sdata2:0x801D5904; // type:object size:0x4 data:float +lbl_801D5908 = .sdata2:0x801D5908; // type:object size:0x4 data:float +lbl_801D590C = .sdata2:0x801D590C; // type:object size:0x4 data:float +lbl_801D5910 = .sdata2:0x801D5910; // type:object size:0x4 data:float +lbl_801D5914 = .sdata2:0x801D5914; // type:object size:0x4 data:float +lbl_801D5918 = .sdata2:0x801D5918; // type:object size:0x4 data:float +lbl_801D591C = .sdata2:0x801D591C; // type:object size:0x4 data:float +lbl_801D5920 = .sdata2:0x801D5920; // type:object size:0x4 data:float +lbl_801D5924 = .sdata2:0x801D5924; // type:object size:0x4 data:float +lbl_801D5928 = .sdata2:0x801D5928; // type:object size:0x4 data:float +lbl_801D592C = .sdata2:0x801D592C; // type:object size:0x4 data:float +lbl_801D5930 = .sdata2:0x801D5930; // type:object size:0x8 data:float +lbl_801D5938 = .sdata2:0x801D5938; // type:object size:0x4 data:float +lbl_801D593C = .sdata2:0x801D593C; // type:object size:0x4 data:float +lbl_801D5940 = .sdata2:0x801D5940; // type:object size:0x4 data:float +lbl_801D5944 = .sdata2:0x801D5944; // type:object size:0x4 data:float +lbl_801D5948 = .sdata2:0x801D5948; // type:object size:0x4 data:float +lbl_801D594C = .sdata2:0x801D594C; // type:object size:0x4 data:float +lbl_801D5950 = .sdata2:0x801D5950; // type:object size:0x4 data:float +lbl_801D5954 = .sdata2:0x801D5954; // type:object size:0x4 data:float +lbl_801D5958 = .sdata2:0x801D5958; // type:object size:0x4 data:float +lbl_801D595C = .sdata2:0x801D595C; // type:object size:0x4 data:float +lbl_801D5960 = .sdata2:0x801D5960; // type:object size:0x4 data:float +lbl_801D5964 = .sdata2:0x801D5964; // type:object size:0x4 data:float +lbl_801D5968 = .sdata2:0x801D5968; // type:object size:0x8 data:double +lbl_801D5970 = .sdata2:0x801D5970; // type:object size:0x8 data:double +lbl_801D5978 = .sdata2:0x801D5978; // type:object size:0x4 data:float +lbl_801D5980 = .sdata2:0x801D5980; // type:object size:0x8 data:double +lbl_801D5988 = .sdata2:0x801D5988; // type:object size:0x8 data:double +lbl_801D5990 = .sdata2:0x801D5990; // type:object size:0x8 data:double +lbl_801D5998 = .sdata2:0x801D5998; // type:object size:0x4 data:float +lbl_801D59A0 = .sdata2:0x801D59A0; // type:object size:0x8 data:double +lbl_801D59A8 = .sdata2:0x801D59A8; // type:object size:0x4 data:float +lbl_801D59AC = .sdata2:0x801D59AC; // type:object size:0x4 data:float +lbl_801D59B0 = .sdata2:0x801D59B0; // type:object size:0x4 data:float +lbl_801D59B4 = .sdata2:0x801D59B4; // type:object size:0x4 data:float +lbl_801D59B8 = .sdata2:0x801D59B8; // type:object size:0x4 data:float +lbl_801D59BC = .sdata2:0x801D59BC; // type:object size:0x4 data:float +lbl_801D59C0 = .sdata2:0x801D59C0; // type:object size:0x4 data:float +lbl_801D59C4 = .sdata2:0x801D59C4; // type:object size:0x4 data:float +lbl_801D59C8 = .sdata2:0x801D59C8; // type:object size:0x4 data:float +lbl_801D59CC = .sdata2:0x801D59CC; // type:object size:0x4 data:float +lbl_801D59D0 = .sdata2:0x801D59D0; // type:object size:0x4 data:float +lbl_801D59D4 = .sdata2:0x801D59D4; // type:object size:0x4 data:float +lbl_801D59D8 = .sdata2:0x801D59D8; // type:object size:0x8 data:float +lbl_801D59E0 = .sdata2:0x801D59E0; // type:object size:0x4 data:float +lbl_801D59E4 = .sdata2:0x801D59E4; // type:object size:0x4 data:float +lbl_801D59E8 = .sdata2:0x801D59E8; // type:object size:0x4 data:float +lbl_801D59EC = .sdata2:0x801D59EC; // type:object size:0x4 data:float +lbl_801D59F0 = .sdata2:0x801D59F0; // type:object size:0x4 data:float +lbl_801D59F4 = .sdata2:0x801D59F4; // type:object size:0x4 data:float +lbl_801D59F8 = .sdata2:0x801D59F8; // type:object size:0x4 data:float +lbl_801D59FC = .sdata2:0x801D59FC; // type:object size:0x4 data:float +lbl_801D5A00 = .sdata2:0x801D5A00; // type:object size:0x4 data:float +lbl_801D5A08 = .sdata2:0x801D5A08; // type:object size:0x8 data:double +lbl_801D5A10 = .sdata2:0x801D5A10; // type:object size:0x8 data:double +lbl_801D5A18 = .sdata2:0x801D5A18; // type:object size:0x8 data:double +lbl_801D5A20 = .sdata2:0x801D5A20; // type:object size:0x4 data:float +lbl_801D5A24 = .sdata2:0x801D5A24; // type:object size:0x4 data:float +lbl_801D5A28 = .sdata2:0x801D5A28; // type:object size:0x4 data:float +lbl_801D5A2C = .sdata2:0x801D5A2C; // type:object size:0x4 data:float +lbl_801D5A30 = .sdata2:0x801D5A30; // type:object size:0x8 data:double +lbl_801D5A38 = .sdata2:0x801D5A38; // type:object size:0x8 data:double +lbl_801D5A40 = .sdata2:0x801D5A40; // type:object size:0x4 data:float +lbl_801D5A44 = .sdata2:0x801D5A44; // type:object size:0x4 data:float +lbl_801D5A48 = .sdata2:0x801D5A48; // type:object size:0x4 data:float +lbl_801D5A4C = .sdata2:0x801D5A4C; // type:object size:0x4 data:float +lbl_801D5A50 = .sdata2:0x801D5A50; // type:object size:0x4 data:float +lbl_801D5A54 = .sdata2:0x801D5A54; // type:object size:0x4 data:float +lbl_801D5A58 = .sdata2:0x801D5A58; // type:object size:0x4 data:float +lbl_801D5A60 = .sdata2:0x801D5A60; // type:object size:0x8 data:double +lbl_801D5A68 = .sdata2:0x801D5A68; // type:object size:0x4 data:float +lbl_801D5A6C = .sdata2:0x801D5A6C; // type:object size:0x4 data:float +lbl_801D5A70 = .sdata2:0x801D5A70; // type:object size:0x4 data:float +lbl_801D5A74 = .sdata2:0x801D5A74; // type:object size:0x4 data:float +lbl_801D5A78 = .sdata2:0x801D5A78; // type:object size:0x4 data:float +lbl_801D5A7C = .sdata2:0x801D5A7C; // type:object size:0x4 data:float +lbl_801D5A80 = .sdata2:0x801D5A80; // type:object size:0x4 data:float +lbl_801D5A84 = .sdata2:0x801D5A84; // type:object size:0x4 data:float +lbl_801D5A88 = .sdata2:0x801D5A88; // type:object size:0x4 data:float +lbl_801D5A8C = .sdata2:0x801D5A8C; // type:object size:0x4 data:float +lbl_801D5A90 = .sdata2:0x801D5A90; // type:object size:0x4 data:float +lbl_801D5A94 = .sdata2:0x801D5A94; // type:object size:0x4 data:float +lbl_801D5A98 = .sdata2:0x801D5A98; // type:object size:0x4 data:float +lbl_801D5A9C = .sdata2:0x801D5A9C; // type:object size:0x4 data:float +lbl_801D5AA0 = .sdata2:0x801D5AA0; // type:object size:0x4 data:float +lbl_801D5AA4 = .sdata2:0x801D5AA4; // type:object size:0x4 data:float +lbl_801D5AA8 = .sdata2:0x801D5AA8; // type:object size:0x4 data:float +lbl_801D5AAC = .sdata2:0x801D5AAC; // type:object size:0x4 data:float +lbl_801D5AB0 = .sdata2:0x801D5AB0; // type:object size:0x4 data:float +lbl_801D5AB4 = .sdata2:0x801D5AB4; // type:object size:0x4 data:float +lbl_801D5AB8 = .sdata2:0x801D5AB8; // type:object size:0x4 data:float +lbl_801D5ABC = .sdata2:0x801D5ABC; // type:object size:0x4 data:float +lbl_801D5AC0 = .sdata2:0x801D5AC0; // type:object size:0x4 data:float +lbl_801D5AC4 = .sdata2:0x801D5AC4; // type:object size:0x4 data:float +lbl_801D5AC8 = .sdata2:0x801D5AC8; // type:object size:0x4 data:float +lbl_801D5ACC = .sdata2:0x801D5ACC; // type:object size:0x4 data:float +lbl_801D5AD0 = .sdata2:0x801D5AD0; // type:object size:0x8 data:double +lbl_801D5AD8 = .sdata2:0x801D5AD8; // type:object size:0x8 data:double +lbl_801D5AE0 = .sdata2:0x801D5AE0; // type:object size:0x8 data:double +lbl_801D5AE8 = .sdata2:0x801D5AE8; // type:object size:0x4 data:float +lbl_801D5AEC = .sdata2:0x801D5AEC; // type:object size:0x4 data:float +lbl_801D5AF0 = .sdata2:0x801D5AF0; // type:object size:0x4 data:float +lbl_801D5AF4 = .sdata2:0x801D5AF4; // type:object size:0x4 data:float +lbl_801D5AF8 = .sdata2:0x801D5AF8; // type:object size:0x4 data:float +lbl_801D5AFC = .sdata2:0x801D5AFC; // type:object size:0x4 data:float +lbl_801D5B00 = .sdata2:0x801D5B00; // type:object size:0x4 data:float +lbl_801D5B08 = .sdata2:0x801D5B08; // type:object size:0x8 data:double +lbl_801D5B10 = .sdata2:0x801D5B10; // type:object size:0x8 data:double +lbl_801D5B18 = .sdata2:0x801D5B18; // type:object size:0x8 data:double +lbl_801D5B20 = .sdata2:0x801D5B20; // type:object size:0x4 data:float +lbl_801D5B24 = .sdata2:0x801D5B24; // type:object size:0x4 data:float +lbl_801D5B28 = .sdata2:0x801D5B28; // type:object size:0x4 data:float +lbl_801D5B2C = .sdata2:0x801D5B2C; // type:object size:0x4 data:float +lbl_801D5B30 = .sdata2:0x801D5B30; // type:object size:0x4 data:float +lbl_801D5B34 = .sdata2:0x801D5B34; // type:object size:0x4 data:float +lbl_801D5B38 = .sdata2:0x801D5B38; // type:object size:0x4 data:float +lbl_801D5B3C = .sdata2:0x801D5B3C; // type:object size:0x4 data:float +lbl_801D5B40 = .sdata2:0x801D5B40; // type:object size:0x4 data:float +lbl_801D5B44 = .sdata2:0x801D5B44; // type:object size:0x4 data:float +lbl_801D5B48 = .sdata2:0x801D5B48; // type:object size:0x8 data:double +lbl_801D5B50 = .sdata2:0x801D5B50; // type:object size:0x4 data:float +lbl_801D5B54 = .sdata2:0x801D5B54; // type:object size:0x4 data:float +lbl_801D5B58 = .sdata2:0x801D5B58; // type:object size:0x4 data:float +lbl_801D5B5C = .sdata2:0x801D5B5C; // type:object size:0x4 data:float +lbl_801D5B60 = .sdata2:0x801D5B60; // type:object size:0x4 data:float +lbl_801D5B64 = .sdata2:0x801D5B64; // type:object size:0x4 data:float +lbl_801D5B68 = .sdata2:0x801D5B68; // type:object size:0x4 data:float +lbl_801D5B6C = .sdata2:0x801D5B6C; // type:object size:0x4 data:float +lbl_801D5B70 = .sdata2:0x801D5B70; // type:object size:0x4 data:float +lbl_801D5B74 = .sdata2:0x801D5B74; // type:object size:0x4 data:float +lbl_801D5B78 = .sdata2:0x801D5B78; // type:object size:0x4 data:float +lbl_801D5B7C = .sdata2:0x801D5B7C; // type:object size:0x4 data:float +lbl_801D5B80 = .sdata2:0x801D5B80; // type:object size:0x4 data:float +lbl_801D5B84 = .sdata2:0x801D5B84; // type:object size:0x4 data:float +lbl_801D5B88 = .sdata2:0x801D5B88; // type:object size:0x4 data:float +lbl_801D5B8C = .sdata2:0x801D5B8C; // type:object size:0x4 data:float +lbl_801D5B90 = .sdata2:0x801D5B90; // type:object size:0x4 data:float +lbl_801D5B94 = .sdata2:0x801D5B94; // type:object size:0x4 data:float +lbl_801D5B98 = .sdata2:0x801D5B98; // type:object size:0x4 data:float +lbl_801D5B9C = .sdata2:0x801D5B9C; // type:object size:0x4 data:float +lbl_801D5BA0 = .sdata2:0x801D5BA0; // type:object size:0x4 data:float +lbl_801D5BA4 = .sdata2:0x801D5BA4; // type:object size:0x4 data:float +lbl_801D5BA8 = .sdata2:0x801D5BA8; // type:object size:0x4 data:float +lbl_801D5BAC = .sdata2:0x801D5BAC; // type:object size:0x4 data:float +lbl_801D5BB0 = .sdata2:0x801D5BB0; // type:object size:0x8 data:double +lbl_801D5BB8 = .sdata2:0x801D5BB8; // type:object size:0x8 data:double +lbl_801D5BC0 = .sdata2:0x801D5BC0; // type:object size:0x4 data:float +lbl_801D5BC4 = .sdata2:0x801D5BC4; // type:object size:0x4 data:float +lbl_801D5BC8 = .sdata2:0x801D5BC8; // type:object size:0x4 data:float +lbl_801D5BCC = .sdata2:0x801D5BCC; // type:object size:0x4 data:float +lbl_801D5BD0 = .sdata2:0x801D5BD0; // type:object size:0x4 data:float +lbl_801D5BD8 = .sdata2:0x801D5BD8; // type:object size:0x8 data:double +lbl_801D5BE0 = .sdata2:0x801D5BE0; // type:object size:0x4 data:float +lbl_801D5BE4 = .sdata2:0x801D5BE4; // type:object size:0x4 data:float +lbl_801D5BE8 = .sdata2:0x801D5BE8; // type:object size:0x4 data:float +lbl_801D5BEC = .sdata2:0x801D5BEC; // type:object size:0x4 data:float +lbl_801D5BF0 = .sdata2:0x801D5BF0; // type:object size:0x4 data:float +lbl_801D5BF4 = .sdata2:0x801D5BF4; // type:object size:0x4 data:float +lbl_801D5BF8 = .sdata2:0x801D5BF8; // type:object size:0x4 data:float +lbl_801D5BFC = .sdata2:0x801D5BFC; // type:object size:0x4 data:float +lbl_801D5C00 = .sdata2:0x801D5C00; // type:object size:0x4 data:float +lbl_801D5C04 = .sdata2:0x801D5C04; // type:object size:0x4 data:float +lbl_801D5C08 = .sdata2:0x801D5C08; // type:object size:0x4 data:float +lbl_801D5C10 = .sdata2:0x801D5C10; // type:object size:0x8 data:double +lbl_801D5C18 = .sdata2:0x801D5C18; // type:object size:0x4 data:float +lbl_801D5C1C = .sdata2:0x801D5C1C; // type:object size:0x4 data:float +lbl_801D5C20 = .sdata2:0x801D5C20; // type:object size:0x4 data:float +lbl_801D5C24 = .sdata2:0x801D5C24; // type:object size:0x4 data:float +lbl_801D5C28 = .sdata2:0x801D5C28; // type:object size:0x4 data:float +lbl_801D5C2C = .sdata2:0x801D5C2C; // type:object size:0x4 data:float +lbl_801D5C30 = .sdata2:0x801D5C30; // type:object size:0x4 data:float +lbl_801D5C34 = .sdata2:0x801D5C34; // type:object size:0x4 data:float +lbl_801D5C38 = .sdata2:0x801D5C38; // type:object size:0x4 data:float +lbl_801D5C3C = .sdata2:0x801D5C3C; // type:object size:0x4 data:float +lbl_801D5C40 = .sdata2:0x801D5C40; // type:object size:0x4 data:float +lbl_801D5C44 = .sdata2:0x801D5C44; // type:object size:0x4 data:float +lbl_801D5C48 = .sdata2:0x801D5C48; // type:object size:0x4 data:float +lbl_801D5C4C = .sdata2:0x801D5C4C; // type:object size:0x4 data:float +lbl_801D5C50 = .sdata2:0x801D5C50; // type:object size:0x4 data:float +lbl_801D5C54 = .sdata2:0x801D5C54; // type:object size:0x4 data:float +lbl_801D5C58 = .sdata2:0x801D5C58; // type:object size:0x4 data:float +lbl_801D5C5C = .sdata2:0x801D5C5C; // type:object size:0x4 data:float +lbl_801D5C60 = .sdata2:0x801D5C60; // type:object size:0x4 data:float +lbl_801D5C68 = .sdata2:0x801D5C68; // type:object size:0x8 data:double +lbl_801D5C70 = .sdata2:0x801D5C70; // type:object size:0x4 data:float +lbl_801D5C78 = .sdata2:0x801D5C78; // type:object size:0x8 data:double +lbl_801D5C80 = .sdata2:0x801D5C80; // type:object size:0x4 data:float +lbl_801D5C84 = .sdata2:0x801D5C84; // type:object size:0x4 data:float +lbl_801D5C88 = .sdata2:0x801D5C88; // type:object size:0x4 data:float +lbl_801D5C8C = .sdata2:0x801D5C8C; // type:object size:0x4 data:float +lbl_801D5C90 = .sdata2:0x801D5C90; // type:object size:0x4 data:float +lbl_801D5C98 = .sdata2:0x801D5C98; // type:object size:0x8 data:double +lbl_801D5CA0 = .sdata2:0x801D5CA0; // type:object size:0x4 data:float +lbl_801D5CA4 = .sdata2:0x801D5CA4; // type:object size:0x4 data:float +lbl_801D5CA8 = .sdata2:0x801D5CA8; // type:object size:0x4 data:float +lbl_801D5CAC = .sdata2:0x801D5CAC; // type:object size:0x4 data:float +lbl_801D5CB0 = .sdata2:0x801D5CB0; // type:object size:0x4 data:float +lbl_801D5CB4 = .sdata2:0x801D5CB4; // type:object size:0x4 data:float +lbl_801D5CB8 = .sdata2:0x801D5CB8; // type:object size:0x4 data:float +lbl_801D5CBC = .sdata2:0x801D5CBC; // type:object size:0x4 data:float +lbl_801D5CC0 = .sdata2:0x801D5CC0; // type:object size:0x4 data:float +lbl_801D5CC4 = .sdata2:0x801D5CC4; // type:object size:0x4 data:float +lbl_801D5CC8 = .sdata2:0x801D5CC8; // type:object size:0x4 data:float +lbl_801D5CCC = .sdata2:0x801D5CCC; // type:object size:0x4 data:float +lbl_801D5CD0 = .sdata2:0x801D5CD0; // type:object size:0x1 data:byte +lbl_801D5CD1 = .sdata2:0x801D5CD1; // type:object size:0x1 data:byte +lbl_801D5CD2 = .sdata2:0x801D5CD2; // type:object size:0x1 data:byte +lbl_801D5CD3 = .sdata2:0x801D5CD3; // type:object size:0x1 data:byte +lbl_801D5CD4 = .sdata2:0x801D5CD4; // type:object size:0x4 data:float +lbl_801D5CD8 = .sdata2:0x801D5CD8; // type:object size:0x4 data:float +lbl_801D5CDC = .sdata2:0x801D5CDC; // type:object size:0x4 data:float +lbl_801D5CE0 = .sdata2:0x801D5CE0; // type:object size:0x4 data:float +lbl_801D5CE4 = .sdata2:0x801D5CE4; // type:object size:0x4 data:float +lbl_801D5CE8 = .sdata2:0x801D5CE8; // type:object size:0x8 data:double +lbl_801D5CF0 = .sdata2:0x801D5CF0; // type:object size:0x8 data:double +lbl_801D5CF8 = .sdata2:0x801D5CF8; // type:object size:0x4 data:float +lbl_801D5CFC = .sdata2:0x801D5CFC; // type:object size:0x4 data:float +lbl_801D5D00 = .sdata2:0x801D5D00; // type:object size:0x4 data:float +lbl_801D5D04 = .sdata2:0x801D5D04; // type:object size:0x4 data:float +lbl_801D5D08 = .sdata2:0x801D5D08; // type:object size:0x4 data:float +lbl_801D5D0C = .sdata2:0x801D5D0C; // type:object size:0x4 data:float +lbl_801D5D10 = .sdata2:0x801D5D10; // type:object size:0x8 data:double +lbl_801D5D18 = .sdata2:0x801D5D18; // type:object size:0x4 data:float +lbl_801D5D1C = .sdata2:0x801D5D1C; // type:object size:0x4 data:float +lbl_801D5D20 = .sdata2:0x801D5D20; // type:object size:0x8 data:double +lbl_801D5D28 = .sdata2:0x801D5D28; // type:object size:0x8 data:float +lbl_801D5D30 = .sdata2:0x801D5D30; // type:object size:0x4 data:float +lbl_801D5D34 = .sdata2:0x801D5D34; // type:object size:0x4 data:float +lbl_801D5D38 = .sdata2:0x801D5D38; // type:object size:0x4 data:float +lbl_801D5D3C = .sdata2:0x801D5D3C; // type:object size:0x4 data:float +lbl_801D5D40 = .sdata2:0x801D5D40; // type:object size:0x4 data:float +lbl_801D5D44 = .sdata2:0x801D5D44; // type:object size:0x4 data:float +lbl_801D5D48 = .sdata2:0x801D5D48; // type:object size:0x4 data:float +lbl_801D5D4C = .sdata2:0x801D5D4C; // type:object size:0x4 data:float +lbl_801D5D50 = .sdata2:0x801D5D50; // type:object size:0x4 data:float +lbl_801D5D54 = .sdata2:0x801D5D54; // type:object size:0x4 data:float +lbl_801D5D58 = .sdata2:0x801D5D58; // type:object size:0x2 data:2byte +lbl_801D5D5A = .sdata2:0x801D5D5A; // type:object size:0x2 data:2byte +lbl_801D5D5C = .sdata2:0x801D5D5C; // type:object size:0x2 data:2byte +lbl_801D5D60 = .sdata2:0x801D5D60; // type:object size:0x4 data:float +lbl_801D5D64 = .sdata2:0x801D5D64; // type:object size:0x4 data:float +lbl_801D5D68 = .sdata2:0x801D5D68; // type:object size:0x4 data:float +lbl_801D5D6C = .sdata2:0x801D5D6C; // type:object size:0x4 data:float +lbl_801D5D70 = .sdata2:0x801D5D70; // type:object size:0x4 data:float +lbl_801D5D74 = .sdata2:0x801D5D74; // type:object size:0x4 data:float +lbl_801D5D78 = .sdata2:0x801D5D78; // type:object size:0x4 data:float +lbl_801D5D7C = .sdata2:0x801D5D7C; // type:object size:0x4 data:float +lbl_801D5D80 = .sdata2:0x801D5D80; // type:object size:0x8 data:double +lbl_801D5D88 = .sdata2:0x801D5D88; // type:object size:0x8 data:double +lbl_801D5D90 = .sdata2:0x801D5D90; // type:object size:0x8 data:double +lbl_801D5D98 = .sdata2:0x801D5D98; // type:object size:0x4 data:float +lbl_801D5D9C = .sdata2:0x801D5D9C; // type:object size:0x4 data:float +lbl_801D5DA0 = .sdata2:0x801D5DA0; // type:object size:0x4 data:float +lbl_801D5DA4 = .sdata2:0x801D5DA4; // type:object size:0x4 data:float +lbl_801D5DA8 = .sdata2:0x801D5DA8; // type:object size:0x4 data:float +lbl_801D5DAC = .sdata2:0x801D5DAC; // type:object size:0x4 data:float +lbl_801D5DB0 = .sdata2:0x801D5DB0; // type:object size:0x4 data:float +lbl_801D5DB4 = .sdata2:0x801D5DB4; // type:object size:0x4 data:float +lbl_801D5DB8 = .sdata2:0x801D5DB8; // type:object size:0x4 data:float +lbl_801D5DC0 = .sdata2:0x801D5DC0; // type:object size:0x8 data:double +lbl_801D5DC8 = .sdata2:0x801D5DC8; // type:object size:0x1 data:byte +lbl_801D5DC9 = .sdata2:0x801D5DC9; // type:object size:0x1 data:byte +lbl_801D5DCA = .sdata2:0x801D5DCA; // type:object size:0x1 data:byte +lbl_801D5DCC = .sdata2:0x801D5DCC; // type:object size:0x4 data:float +lbl_801D5DD0 = .sdata2:0x801D5DD0; // type:object size:0x8 data:double +lbl_801D5DD8 = .sdata2:0x801D5DD8; // type:object size:0x8 data:float +battleCoinTbl = .sdata2:0x801D5DE0; // type:object size:0x5 scope:local +lbl_801D5DE8 = .sdata2:0x801D5DE8; // type:object size:0x4 data:float +lbl_801D5DEC = .sdata2:0x801D5DEC; // type:object size:0x4 data:float +lbl_801D5DF0 = .sdata2:0x801D5DF0; // type:object size:0x4 data:float +lbl_801D5DF4 = .sdata2:0x801D5DF4; // type:object size:0x4 data:float +lbl_801D5DF8 = .sdata2:0x801D5DF8; // type:object size:0x4 data:float +lbl_801D5DFC = .sdata2:0x801D5DFC; // type:object size:0x4 data:float +lbl_801D5E00 = .sdata2:0x801D5E00; // type:object size:0x4 data:float +lbl_801D5E04 = .sdata2:0x801D5E04; // type:object size:0x4 data:float +lbl_801D5E08 = .sdata2:0x801D5E08; // type:object size:0x4 data:float +lbl_801D5E0C = .sdata2:0x801D5E0C; // type:object size:0x4 data:float +lbl_801D5E10 = .sdata2:0x801D5E10; // type:object size:0x4 data:float +lbl_801D5E14 = .sdata2:0x801D5E14; // type:object size:0x4 data:float +lbl_801D5E18 = .sdata2:0x801D5E18; // type:object size:0x4 data:float +lbl_801D5E1C = .sdata2:0x801D5E1C; // type:object size:0x4 data:float +lbl_801D5E20 = .sdata2:0x801D5E20; // type:object size:0x4 data:float +lbl_801D5E24 = .sdata2:0x801D5E24; // type:object size:0x4 data:float +lbl_801D5E28 = .sdata2:0x801D5E28; // type:object size:0x4 data:float +lbl_801D5E2C = .sdata2:0x801D5E2C; // type:object size:0x4 data:float +lbl_801D5E30 = .sdata2:0x801D5E30; // type:object size:0x4 data:float +lbl_801D5E34 = .sdata2:0x801D5E34; // type:object size:0x4 data:float +lbl_801D5E38 = .sdata2:0x801D5E38; // type:object size:0x4 data:float +lbl_801D5E40 = .sdata2:0x801D5E40; // type:object size:0x8 data:double +lbl_801D5E48 = .sdata2:0x801D5E48; // type:object size:0x8 data:double +lbl_801D5E50 = .sdata2:0x801D5E50; // type:object size:0x4 data:float +lbl_801D5E54 = .sdata2:0x801D5E54; // type:object size:0x4 data:float +lbl_801D5E58 = .sdata2:0x801D5E58; // type:object size:0x4 data:float +lbl_801D5E5C = .sdata2:0x801D5E5C; // type:object size:0x4 data:float +lbl_801D5E60 = .sdata2:0x801D5E60; // type:object size:0x4 data:float +lbl_801D5E64 = .sdata2:0x801D5E64; // type:object size:0x4 data:float +lbl_801D5E68 = .sdata2:0x801D5E68; // type:object size:0x4 data:float +lbl_801D5E6C = .sdata2:0x801D5E6C; // type:object size:0x4 data:float +lbl_801D5E70 = .sdata2:0x801D5E70; // type:object size:0x8 data:double +lbl_801D5E78 = .sdata2:0x801D5E78; // type:object size:0x4 data:float +lbl_801D5E80 = .sdata2:0x801D5E80; // type:object size:0x8 data:double +lbl_801D5E88 = .sdata2:0x801D5E88; // type:object size:0x4 data:float +lbl_801D5E8C = .sdata2:0x801D5E8C; // type:object size:0x4 data:float +lbl_801D5E90 = .sdata2:0x801D5E90; // type:object size:0x1 data:byte +lbl_801D5E91 = .sdata2:0x801D5E91; // type:object size:0x1 data:byte +lbl_801D5E92 = .sdata2:0x801D5E92; // type:object size:0x1 data:byte +lbl_801D5E93 = .sdata2:0x801D5E93; // type:object size:0x1 data:byte +lbl_801D5E94 = .sdata2:0x801D5E94; // type:object size:0x1 data:byte +lbl_801D5E98 = .sdata2:0x801D5E98; // type:object size:0x4 data:float +lbl_801D5E9C = .sdata2:0x801D5E9C; // type:object size:0x4 data:float +lbl_801D5EA0 = .sdata2:0x801D5EA0; // type:object size:0x4 data:float +lbl_801D5EA4 = .sdata2:0x801D5EA4; // type:object size:0x4 data:float +lbl_801D5EA8 = .sdata2:0x801D5EA8; // type:object size:0x4 data:float +lbl_801D5EAC = .sdata2:0x801D5EAC; // type:object size:0x4 data:float +lbl_801D5EB0 = .sdata2:0x801D5EB0; // type:object size:0x4 data:float +lbl_801D5EB4 = .sdata2:0x801D5EB4; // type:object size:0x4 data:float +lbl_801D5EB8 = .sdata2:0x801D5EB8; // type:object size:0x4 data:float +lbl_801D5EBC = .sdata2:0x801D5EBC; // type:object size:0x4 data:float +lbl_801D5EC0 = .sdata2:0x801D5EC0; // type:object size:0x4 data:float +lbl_801D5EC4 = .sdata2:0x801D5EC4; // type:object size:0x4 data:float +lbl_801D5EC8 = .sdata2:0x801D5EC8; // type:object size:0x4 data:float +lbl_801D5ECC = .sdata2:0x801D5ECC; // type:object size:0x4 data:float +lbl_801D5ED0 = .sdata2:0x801D5ED0; // type:object size:0x8 data:double +lbl_801D5ED8 = .sdata2:0x801D5ED8; // type:object size:0x8 data:double +lbl_801D5EE0 = .sdata2:0x801D5EE0; // type:object size:0x4 data:float +lbl_801D5EE8 = .sdata2:0x801D5EE8; // type:object size:0x8 data:double +lbl_801D5EF0 = .sdata2:0x801D5EF0; // type:object size:0x8 data:double +lbl_801D5EF8 = .sdata2:0x801D5EF8; // type:object size:0x8 data:double +lbl_801D5F00 = .sdata2:0x801D5F00; // type:object size:0x8 data:double +lbl_801D5F08 = .sdata2:0x801D5F08; // type:object size:0x4 data:float +lbl_801D5F10 = .sdata2:0x801D5F10; // type:object size:0x8 data:double +lbl_801D5F18 = .sdata2:0x801D5F18; // type:object size:0x4 data:float +lbl_801D5F1C = .sdata2:0x801D5F1C; // type:object size:0x4 data:float +lbl_801D5F20 = .sdata2:0x801D5F20; // type:object size:0x4 data:float +lbl_801D5F28 = .sdata2:0x801D5F28; // type:object size:0x8 data:double +lbl_801D5F30 = .sdata2:0x801D5F30; // type:object size:0x8 data:double +lbl_801D5F38 = .sdata2:0x801D5F38; // type:object size:0x4 data:float +lbl_801D5F40 = .sdata2:0x801D5F40; // type:object size:0x8 data:double +lbl_801D5F48 = .sdata2:0x801D5F48; // type:object size:0x4 data:float +lbl_801D5F4C = .sdata2:0x801D5F4C; // type:object size:0x4 data:float +lbl_801D5F50 = .sdata2:0x801D5F50; // type:object size:0x4 data:float +lbl_801D5F54 = .sdata2:0x801D5F54; // type:object size:0x4 data:float +lbl_801D5F58 = .sdata2:0x801D5F58; // type:object size:0x8 data:double +lbl_801D5F60 = .sdata2:0x801D5F60; // type:object size:0x8 data:double +lbl_801D5F68 = .sdata2:0x801D5F68; // type:object size:0x4 data:float +lbl_801D5F6C = .sdata2:0x801D5F6C; // type:object size:0x4 data:float +lbl_801D5F70 = .sdata2:0x801D5F70; // type:object size:0x4 data:float +lbl_801D5F78 = .sdata2:0x801D5F78; // type:object size:0x8 data:double +lbl_801D5F80 = .sdata2:0x801D5F80; // type:object size:0x4 data:float +lbl_801D5F84 = .sdata2:0x801D5F84; // type:object size:0x4 data:float +lbl_801D5F88 = .sdata2:0x801D5F88; // type:object size:0x4 data:float +lbl_801D5F8C = .sdata2:0x801D5F8C; // type:object size:0x4 data:float +lbl_801D5F90 = .sdata2:0x801D5F90; // type:object size:0x8 data:double +lbl_801D5F98 = .sdata2:0x801D5F98; // type:object size:0x4 data:float +lbl_801D5F9C = .sdata2:0x801D5F9C; // type:object size:0x4 data:float +lbl_801D5FA0 = .sdata2:0x801D5FA0; // type:object size:0x4 data:float +lbl_801D5FA4 = .sdata2:0x801D5FA4; // type:object size:0x4 data:float +lbl_801D5FA8 = .sdata2:0x801D5FA8; // type:object size:0x4 data:float +lbl_801D5FAC = .sdata2:0x801D5FAC; // type:object size:0x4 data:float +lbl_801D5FB0 = .sdata2:0x801D5FB0; // type:object size:0x4 data:float +lbl_801D5FB4 = .sdata2:0x801D5FB4; // type:object size:0x4 data:float +lbl_801D5FB8 = .sdata2:0x801D5FB8; // type:object size:0x4 data:float +lbl_801D5FBC = .sdata2:0x801D5FBC; // type:object size:0x4 data:float +lbl_801D5FC0 = .sdata2:0x801D5FC0; // type:object size:0x4 data:float +lbl_801D5FC4 = .sdata2:0x801D5FC4; // type:object size:0x1 data:byte +lbl_801D5FC5 = .sdata2:0x801D5FC5; // type:object size:0x1 data:byte +lbl_801D5FC8 = .sdata2:0x801D5FC8; // type:object size:0x4 data:float +lbl_801D5FD0 = .sdata2:0x801D5FD0; // type:object size:0x8 data:double +lbl_801D5FD8 = .sdata2:0x801D5FD8; // type:object size:0x8 data:double +lbl_801D5FE0 = .sdata2:0x801D5FE0; // type:object size:0x8 data:double +lbl_801D5FE8 = .sdata2:0x801D5FE8; // type:object size:0x8 data:double +lbl_801D5FF0 = .sdata2:0x801D5FF0; // type:object size:0x4 data:float +lbl_801D5FF4 = .sdata2:0x801D5FF4; // type:object size:0x4 data:float +lbl_801D5FF8 = .sdata2:0x801D5FF8; // type:object size:0x8 data:double +lbl_801D6000 = .sdata2:0x801D6000; // type:object size:0x4 data:float +lbl_801D6004 = .sdata2:0x801D6004; // type:object size:0x4 data:float +lbl_801D6008 = .sdata2:0x801D6008; // type:object size:0x8 data:double +lbl_801D6010 = .sdata2:0x801D6010; // type:object size:0x4 data:float +lbl_801D6014 = .sdata2:0x801D6014; // type:object size:0x2 data:2byte +lbl_801D6016 = .sdata2:0x801D6016; // type:object size:0x2 data:2byte +lbl_801D6018 = .sdata2:0x801D6018; // type:object size:0x2 data:2byte +lbl_801D601C = .sdata2:0x801D601C; // type:object size:0x4 data:float +lbl_801D6020 = .sdata2:0x801D6020; // type:object size:0x4 data:float +lbl_801D6024 = .sdata2:0x801D6024; // type:object size:0x4 data:float +lbl_801D6028 = .sdata2:0x801D6028; // type:object size:0x2 data:2byte +lbl_801D602A = .sdata2:0x801D602A; // type:object size:0x2 data:2byte +lbl_801D602C = .sdata2:0x801D602C; // type:object size:0x2 data:2byte +lbl_801D6030 = .sdata2:0x801D6030; // type:object size:0x4 data:float +lbl_801D6034 = .sdata2:0x801D6034; // type:object size:0x4 data:float +lbl_801D6038 = .sdata2:0x801D6038; // type:object size:0x4 data:float +lbl_801D603C = .sdata2:0x801D603C; // type:object size:0x4 data:float +lbl_801D6040 = .sdata2:0x801D6040; // type:object size:0x4 data:float +lbl_801D6044 = .sdata2:0x801D6044; // type:object size:0x4 data:float +lbl_801D6048 = .sdata2:0x801D6048; // type:object size:0x4 data:float +lbl_801D6050 = .sdata2:0x801D6050; // type:object size:0x8 data:double +lbl_801D6058 = .sdata2:0x801D6058; // type:object size:0x4 data:float +lbl_801D605C = .sdata2:0x801D605C; // type:object size:0x4 data:float +lbl_801D6060 = .sdata2:0x801D6060; // type:object size:0x4 data:float +lbl_801D6064 = .sdata2:0x801D6064; // type:object size:0x4 data:float +lbl_801D6068 = .sdata2:0x801D6068; // type:object size:0x4 data:float +lbl_801D606C = .sdata2:0x801D606C; // type:object size:0x4 data:float +lbl_801D6070 = .sdata2:0x801D6070; // type:object size:0x4 data:float +lbl_801D6078 = .sdata2:0x801D6078; // type:object size:0x8 data:double +lbl_801D6080 = .sdata2:0x801D6080; // type:object size:0x8 data:double +lbl_801D6088 = .sdata2:0x801D6088; // type:object size:0x8 data:double +lbl_801D6090 = .sdata2:0x801D6090; // type:object size:0x4 data:float +lbl_801D6094 = .sdata2:0x801D6094; // type:object size:0x4 data:float +lbl_801D6098 = .sdata2:0x801D6098; // type:object size:0x4 data:float +lbl_801D609C = .sdata2:0x801D609C; // type:object size:0x4 data:float +lbl_801D60A0 = .sdata2:0x801D60A0; // type:object size:0x4 data:float +lbl_801D60A4 = .sdata2:0x801D60A4; // type:object size:0x4 data:float +lbl_801D60A8 = .sdata2:0x801D60A8; // type:object size:0x4 data:float +lbl_801D60AC = .sdata2:0x801D60AC; // type:object size:0x4 data:float +lbl_801D60B0 = .sdata2:0x801D60B0; // type:object size:0x4 data:float +lbl_801D60B4 = .sdata2:0x801D60B4; // type:object size:0x4 data:float +lbl_801D60B8 = .sdata2:0x801D60B8; // type:object size:0x4 data:float +lbl_801D60BC = .sdata2:0x801D60BC; // type:object size:0x4 data:float +lbl_801D60C0 = .sdata2:0x801D60C0; // type:object size:0x4 data:float +lbl_801D60C4 = .sdata2:0x801D60C4; // type:object size:0x4 data:float +lbl_801D60C8 = .sdata2:0x801D60C8; // type:object size:0x4 data:float +lbl_801D60CC = .sdata2:0x801D60CC; // type:object size:0x4 data:float +lbl_801D60D0 = .sdata2:0x801D60D0; // type:object size:0x4 data:float +lbl_801D60D4 = .sdata2:0x801D60D4; // type:object size:0x4 data:float +lbl_801D60D8 = .sdata2:0x801D60D8; // type:object size:0x4 data:float +lbl_801D60DC = .sdata2:0x801D60DC; // type:object size:0x4 data:float +lbl_801D60E0 = .sdata2:0x801D60E0; // type:object size:0x8 data:double +lbl_801D60E8 = .sdata2:0x801D60E8; // type:object size:0x8 data:double +lbl_801D60F0 = .sdata2:0x801D60F0; // type:object size:0x4 data:float +lbl_801D60F8 = .sdata2:0x801D60F8; // type:object size:0x8 data:double +lbl_801D6100 = .sdata2:0x801D6100; // type:object size:0x8 data:double +lbl_801D6108 = .sdata2:0x801D6108; // type:object size:0x4 data:float +lbl_801D610C = .sdata2:0x801D610C; // type:object size:0x4 data:float +lbl_801D6110 = .sdata2:0x801D6110; // type:object size:0x4 data:float +lbl_801D6114 = .sdata2:0x801D6114; // type:object size:0x4 data:float +lbl_801D6118 = .sdata2:0x801D6118; // type:object size:0x4 data:float +lbl_801D611C = .sdata2:0x801D611C; // type:object size:0x4 data:float +lbl_801D6120 = .sdata2:0x801D6120; // type:object size:0x4 data:float +lbl_801D6124 = .sdata2:0x801D6124; // type:object size:0x4 data:float +lbl_801D6128 = .sdata2:0x801D6128; // type:object size:0x4 data:float +lbl_801D612C = .sdata2:0x801D612C; // type:object size:0x4 data:float +lbl_801D6130 = .sdata2:0x801D6130; // type:object size:0x4 data:float +lbl_801D6134 = .sdata2:0x801D6134; // type:object size:0x4 data:float +lbl_801D6138 = .sdata2:0x801D6138; // type:object size:0x4 data:float +lbl_801D613C = .sdata2:0x801D613C; // type:object size:0x4 data:float +lbl_801D6140 = .sdata2:0x801D6140; // type:object size:0x4 data:float +lbl_801D6144 = .sdata2:0x801D6144; // type:object size:0x4 data:float +lbl_801D6148 = .sdata2:0x801D6148; // type:object size:0x4 data:float +lbl_801D614C = .sdata2:0x801D614C; // type:object size:0x4 data:float +lbl_801D6150 = .sdata2:0x801D6150; // type:object size:0x4 data:float +lbl_801D6158 = .sdata2:0x801D6158; // type:object size:0x8 data:double +lbl_801D6160 = .sdata2:0x801D6160; // type:object size:0x8 data:double +lbl_801D6168 = .sdata2:0x801D6168; // type:object size:0x8 data:double +lbl_801D6170 = .sdata2:0x801D6170; // type:object size:0x8 data:double +lbl_801D6178 = .sdata2:0x801D6178; // type:object size:0x4 data:float +lbl_801D617C = .sdata2:0x801D617C; // type:object size:0x4 data:float +lbl_801D6180 = .sdata2:0x801D6180; // type:object size:0x4 data:float +lbl_801D6184 = .sdata2:0x801D6184; // type:object size:0x4 data:float +lbl_801D6188 = .sdata2:0x801D6188; // type:object size:0x4 data:float +lbl_801D618C = .sdata2:0x801D618C; // type:object size:0x4 data:float +lbl_801D6190 = .sdata2:0x801D6190; // type:object size:0x4 data:float +lbl_801D6194 = .sdata2:0x801D6194; // type:object size:0x4 data:float +lbl_801D6198 = .sdata2:0x801D6198; // type:object size:0x4 data:float +lbl_801D619C = .sdata2:0x801D619C; // type:object size:0x4 data:float +lbl_801D61A0 = .sdata2:0x801D61A0; // type:object size:0x4 data:float +lbl_801D61A4 = .sdata2:0x801D61A4; // type:object size:0x4 data:float +lbl_801D61A8 = .sdata2:0x801D61A8; // type:object size:0x4 data:float +lbl_801D61AC = .sdata2:0x801D61AC; // type:object size:0x4 data:float +lbl_801D61B0 = .sdata2:0x801D61B0; // type:object size:0x4 data:float +lbl_801D61B4 = .sdata2:0x801D61B4; // type:object size:0x4 data:float +lbl_801D61B8 = .sdata2:0x801D61B8; // type:object size:0x4 data:float +lbl_801D61BC = .sdata2:0x801D61BC; // type:object size:0x4 data:float +lbl_801D61C0 = .sdata2:0x801D61C0; // type:object size:0x4 data:float +lbl_801D61C4 = .sdata2:0x801D61C4; // type:object size:0x4 data:float +lbl_801D61C8 = .sdata2:0x801D61C8; // type:object size:0x4 data:float +lbl_801D61CC = .sdata2:0x801D61CC; // type:object size:0x4 data:float +lbl_801D61D0 = .sdata2:0x801D61D0; // type:object size:0x8 data:double +lbl_801D61D8 = .sdata2:0x801D61D8; // type:object size:0x8 data:double +lbl_801D61E0 = .sdata2:0x801D61E0; // type:object size:0x4 data:float +lbl_801D61E4 = .sdata2:0x801D61E4; // type:object size:0x4 data:float +lbl_801D61E8 = .sdata2:0x801D61E8; // type:object size:0x8 data:double +lbl_801D61F0 = .sdata2:0x801D61F0; // type:object size:0x4 data:float +lbl_801D61F4 = .sdata2:0x801D61F4; // type:object size:0x4 data:float +lbl_801D61F8 = .sdata2:0x801D61F8; // type:object size:0x4 data:float +lbl_801D61FC = .sdata2:0x801D61FC; // type:object size:0x4 data:float +lbl_801D6200 = .sdata2:0x801D6200; // type:object size:0x4 data:float +lbl_801D6204 = .sdata2:0x801D6204; // type:object size:0x4 data:float +lbl_801D6208 = .sdata2:0x801D6208; // type:object size:0x4 data:float +lbl_801D620C = .sdata2:0x801D620C; // type:object size:0x4 data:float +lbl_801D6210 = .sdata2:0x801D6210; // type:object size:0x4 data:float +lbl_801D6214 = .sdata2:0x801D6214; // type:object size:0x4 data:float +lbl_801D6218 = .sdata2:0x801D6218; // type:object size:0x4 data:float +lbl_801D621C = .sdata2:0x801D621C; // type:object size:0x4 data:float +lbl_801D6220 = .sdata2:0x801D6220; // type:object size:0x4 data:float +lbl_801D6224 = .sdata2:0x801D6224; // type:object size:0x4 data:float +lbl_801D6228 = .sdata2:0x801D6228; // type:object size:0x4 data:float +lbl_801D622C = .sdata2:0x801D622C; // type:object size:0x4 data:float +lbl_801D6230 = .sdata2:0x801D6230; // type:object size:0x4 data:float +lbl_801D6234 = .sdata2:0x801D6234; // type:object size:0x4 data:float +lbl_801D6238 = .sdata2:0x801D6238; // type:object size:0x4 data:float +lbl_801D623C = .sdata2:0x801D623C; // type:object size:0x4 data:float +lbl_801D6240 = .sdata2:0x801D6240; // type:object size:0x4 data:float +lbl_801D6248 = .sdata2:0x801D6248; // type:object size:0x8 data:double +lbl_801D6250 = .sdata2:0x801D6250; // type:object size:0x8 data:double +lbl_801D6258 = .sdata2:0x801D6258; // type:object size:0x8 data:double +lbl_801D6260 = .sdata2:0x801D6260; // type:object size:0x8 data:double +lbl_801D6268 = .sdata2:0x801D6268; // type:object size:0x4 data:float +lbl_801D626C = .sdata2:0x801D626C; // type:object size:0x4 data:float +lbl_801D6270 = .sdata2:0x801D6270; // type:object size:0x4 data:float +lbl_801D6274 = .sdata2:0x801D6274; // type:object size:0x4 data:float +lbl_801D6278 = .sdata2:0x801D6278; // type:object size:0x4 data:float +lbl_801D627C = .sdata2:0x801D627C; // type:object size:0x4 data:float +lbl_801D6280 = .sdata2:0x801D6280; // type:object size:0x4 data:float +lbl_801D6284 = .sdata2:0x801D6284; // type:object size:0x4 data:float +lbl_801D6288 = .sdata2:0x801D6288; // type:object size:0x4 data:float +lbl_801D628C = .sdata2:0x801D628C; // type:object size:0x1 data:byte +lbl_801D628D = .sdata2:0x801D628D; // type:object size:0x1 data:byte +lbl_801D628E = .sdata2:0x801D628E; // type:object size:0x1 data:byte +lbl_801D628F = .sdata2:0x801D628F; // type:object size:0x1 data:byte +lbl_801D6290 = .sdata2:0x801D6290; // type:object size:0x8 data:float +lbl_801D6298 = .sdata2:0x801D6298; // type:object size:0x4 data:float +lbl_801D629C = .sdata2:0x801D629C; // type:object size:0x4 data:float +lbl_801D62A0 = .sdata2:0x801D62A0; // type:object size:0x4 data:float +lbl_801D62A4 = .sdata2:0x801D62A4; // type:object size:0x4 data:float +lbl_801D62A8 = .sdata2:0x801D62A8; // type:object size:0x4 data:float +lbl_801D62AC = .sdata2:0x801D62AC; // type:object size:0x4 data:float +lbl_801D62B0 = .sdata2:0x801D62B0; // type:object size:0x4 data:float +lbl_801D62B4 = .sdata2:0x801D62B4; // type:object size:0x4 data:float +lbl_801D62B8 = .sdata2:0x801D62B8; // type:object size:0x4 data:float +lbl_801D62BC = .sdata2:0x801D62BC; // type:object size:0x4 data:float +lbl_801D62C0 = .sdata2:0x801D62C0; // type:object size:0x4 data:float +lbl_801D62C4 = .sdata2:0x801D62C4; // type:object size:0x4 data:float +lbl_801D62C8 = .sdata2:0x801D62C8; // type:object size:0x4 data:float +lbl_801D62CC = .sdata2:0x801D62CC; // type:object size:0x4 data:float +lbl_801D62D0 = .sdata2:0x801D62D0; // type:object size:0x4 data:float +lbl_801D62D4 = .sdata2:0x801D62D4; // type:object size:0x4 data:float +lbl_801D62D8 = .sdata2:0x801D62D8; // type:object size:0x4 data:float +lbl_801D62DC = .sdata2:0x801D62DC; // type:object size:0x4 data:float +lbl_801D62E0 = .sdata2:0x801D62E0; // type:object size:0x4 data:float +lbl_801D62E4 = .sdata2:0x801D62E4; // type:object size:0x4 data:float +lbl_801D62E8 = .sdata2:0x801D62E8; // type:object size:0x4 data:float +lbl_801D62EC = .sdata2:0x801D62EC; // type:object size:0x4 data:float +lbl_801D62F0 = .sdata2:0x801D62F0; // type:object size:0x4 data:float +lbl_801D62F4 = .sdata2:0x801D62F4; // type:object size:0x4 data:float +lbl_801D62F8 = .sdata2:0x801D62F8; // type:object size:0x4 data:float +lbl_801D62FC = .sdata2:0x801D62FC; // type:object size:0x4 data:float +lbl_801D6300 = .sdata2:0x801D6300; // type:object size:0x4 data:float +lbl_801D6304 = .sdata2:0x801D6304; // type:object size:0x4 data:float +lbl_801D6308 = .sdata2:0x801D6308; // type:object size:0x4 data:float +lbl_801D630C = .sdata2:0x801D630C; // type:object size:0x4 data:float +lbl_801D6310 = .sdata2:0x801D6310; // type:object size:0x4 data:float +lbl_801D6314 = .sdata2:0x801D6314; // type:object size:0x4 data:float +lbl_801D6318 = .sdata2:0x801D6318; // type:object size:0x4 data:float +lbl_801D631C = .sdata2:0x801D631C; // type:object size:0x4 data:float +lbl_801D6320 = .sdata2:0x801D6320; // type:object size:0x4 data:float +lbl_801D6324 = .sdata2:0x801D6324; // type:object size:0x4 data:float +lbl_801D6328 = .sdata2:0x801D6328; // type:object size:0x4 data:float +lbl_801D632C = .sdata2:0x801D632C; // type:object size:0x4 data:float +lbl_801D6330 = .sdata2:0x801D6330; // type:object size:0x4 data:float +lbl_801D6334 = .sdata2:0x801D6334; // type:object size:0x4 data:float +lbl_801D6338 = .sdata2:0x801D6338; // type:object size:0x4 data:float +lbl_801D633C = .sdata2:0x801D633C; // type:object size:0x4 data:float +lbl_801D6340 = .sdata2:0x801D6340; // type:object size:0x8 data:double +lbl_801D6348 = .sdata2:0x801D6348; // type:object size:0x8 data:float +lbl_801D6350 = .sdata2:0x801D6350; // type:object size:0x4 scope:local data:float +lbl_801D6354 = .sdata2:0x801D6354; // type:object size:0x4 scope:local data:float +lbl_801D6358 = .sdata2:0x801D6358; // type:object size:0x4 scope:local data:float +lbl_801D635C = .sdata2:0x801D635C; // type:object size:0x4 scope:local data:float +lbl_801D6360 = .sdata2:0x801D6360; // type:object size:0x8 scope:local data:float +lbl_801D6368 = .sdata2:0x801D6368; // type:object size:0x4 scope:local data:float +lbl_801D636C = .sdata2:0x801D636C; // type:object size:0x4 scope:local data:float +lbl_801D6370 = .sdata2:0x801D6370; // type:object size:0x4 scope:local data:float +lbl_801D6374 = .sdata2:0x801D6374; // type:object size:0x4 scope:local data:float +lbl_801D6378 = .sdata2:0x801D6378; // type:object size:0x4 scope:local data:float +lbl_801D637C = .sdata2:0x801D637C; // type:object size:0x4 scope:local data:float +lbl_801D6380 = .sdata2:0x801D6380; // type:object size:0x4 scope:local data:float +lbl_801D6384 = .sdata2:0x801D6384; // type:object size:0x4 scope:local data:float +lbl_801D6388 = .sdata2:0x801D6388; // type:object size:0x4 scope:local data:float +lbl_801D638C = .sdata2:0x801D638C; // type:object size:0x4 scope:local data:float +lbl_801D6390 = .sdata2:0x801D6390; // type:object size:0x4 data:float +lbl_801D6394 = .sdata2:0x801D6394; // type:object size:0x4 data:float +lbl_801D6398 = .sdata2:0x801D6398; // type:object size:0x8 data:double +lbl_801D63A0 = .sdata2:0x801D63A0; // type:object size:0x8 data:double +lbl_801D63A8 = .sdata2:0x801D63A8; // type:object size:0x4 data:float +lbl_801D63AC = .sdata2:0x801D63AC; // type:object size:0x4 data:float +lbl_801D63B0 = .sdata2:0x801D63B0; // type:object size:0x4 data:float +lbl_801D63B4 = .sdata2:0x801D63B4; // type:object size:0x4 data:float +lbl_801D63B8 = .sdata2:0x801D63B8; // type:object size:0x4 scope:local data:float +lbl_801D63BC = .sdata2:0x801D63BC; // type:object size:0x4 scope:local data:float +lbl_801D63C0 = .sdata2:0x801D63C0; // type:object size:0x8 scope:local data:double +lbl_801D63C8 = .sdata2:0x801D63C8; // type:object size:0x8 scope:local data:double +lbl_801D63D0 = .sdata2:0x801D63D0; // type:object size:0x8 scope:local data:float +lbl_801D63D8 = .sdata2:0x801D63D8; // type:object size:0x4 scope:local data:float +lbl_801D63E0 = .sdata2:0x801D63E0; // type:object size:0x8 scope:local data:double +lbl_801D63E8 = .sdata2:0x801D63E8; // type:object size:0x4 data:4byte +lbl_801D63EC = .sdata2:0x801D63EC; // type:object size:0x4 data:4byte +lbl_801D63F0 = .sdata2:0x801D63F0; // type:object size:0x4 data:4byte +lbl_801D63F4 = .sdata2:0x801D63F4; // type:object size:0x4 data:float +lbl_801D63F8 = .sdata2:0x801D63F8; // type:object size:0x4 data:float +lbl_801D63FC = .sdata2:0x801D63FC; // type:object size:0x4 data:float +lbl_801D6400 = .sdata2:0x801D6400; // type:object size:0x8 data:double +lbl_801D6408 = .sdata2:0x801D6408; // type:object size:0x8 data:float +lbl_801D6410 = .sdata2:0x801D6410; // type:object size:0x4 data:float +lbl_801D6414 = .sdata2:0x801D6414; // type:object size:0x4 data:float +lbl_801D6418 = .sdata2:0x801D6418; // type:object size:0x4 data:float +lbl_801D641C = .sdata2:0x801D641C; // type:object size:0x4 data:float +lbl_801D6420 = .sdata2:0x801D6420; // type:object size:0x4 data:float +lbl_801D6424 = .sdata2:0x801D6424; // type:object size:0x4 data:float +lbl_801D6428 = .sdata2:0x801D6428; // type:object size:0x4 data:float +lbl_801D642C = .sdata2:0x801D642C; // type:object size:0x4 data:float +lbl_801D6430 = .sdata2:0x801D6430; // type:object size:0x4 data:float +lbl_801D6434 = .sdata2:0x801D6434; // type:object size:0x4 data:float +lbl_801D6438 = .sdata2:0x801D6438; // type:object size:0x4 data:float +lbl_801D643C = .sdata2:0x801D643C; // type:object size:0x4 data:float +lbl_801D6440 = .sdata2:0x801D6440; // type:object size:0x4 data:float +lbl_801D6448 = .sdata2:0x801D6448; // type:object size:0x8 data:double +lbl_801D6450 = .sdata2:0x801D6450; // type:object size:0x8 data:double +lbl_801D6458 = .sdata2:0x801D6458; // type:object size:0x8 data:float +lbl_801D6460 = .sdata2:0x801D6460; // type:object size:0x4 data:float +lbl_801D6468 = .sdata2:0x801D6468; // type:object size:0x8 data:double +lbl_801D6470 = .sdata2:0x801D6470; // type:object size:0x4 data:float +lbl_801D6474 = .sdata2:0x801D6474; // type:object size:0x4 data:float +lbl_801D6478 = .sdata2:0x801D6478; // type:object size:0x4 data:float +lbl_801D647C = .sdata2:0x801D647C; // type:object size:0x4 data:float +lbl_801D6480 = .sdata2:0x801D6480; // type:object size:0x4 data:float +lbl_801D6484 = .sdata2:0x801D6484; // type:object size:0x4 data:float +lbl_801D6488 = .sdata2:0x801D6488; // type:object size:0x4 data:float +lbl_801D648C = .sdata2:0x801D648C; // type:object size:0x4 data:float +lbl_801D6490 = .sdata2:0x801D6490; // type:object size:0x4 data:float +lbl_801D6498 = .sdata2:0x801D6498; // type:object size:0x8 data:double +lbl_801D64A0 = .sdata2:0x801D64A0; // type:object size:0x4 data:float +lbl_801D64A4 = .sdata2:0x801D64A4; // type:object size:0x4 data:float +lbl_801D64A8 = .sdata2:0x801D64A8; // type:object size:0x8 data:double +lbl_801D64B0 = .sdata2:0x801D64B0; // type:object size:0x4 data:float +lbl_801D64B8 = .sdata2:0x801D64B8; // type:object size:0x8 data:double +lbl_801D64C0 = .sdata2:0x801D64C0; // type:object size:0x4 data:float +lbl_801D64C8 = .sdata2:0x801D64C8; // type:object size:0x8 data:double +lbl_801D64D0 = .sdata2:0x801D64D0; // type:object size:0x4 data:float +lbl_801D64D4 = .sdata2:0x801D64D4; // type:object size:0x4 data:float +lbl_801D64D8 = .sdata2:0x801D64D8; // type:object size:0x4 data:float +lbl_801D64E0 = .sdata2:0x801D64E0; // type:object size:0x8 data:double +lbl_801D64E8 = .sdata2:0x801D64E8; // type:object size:0x4 data:float +lbl_801D64EC = .sdata2:0x801D64EC; // type:object size:0x4 data:float +lbl_801D64F0 = .sdata2:0x801D64F0; // type:object size:0x8 data:double +lbl_801D64F8 = .sdata2:0x801D64F8; // type:object size:0x4 data:float +lbl_801D64FC = .sdata2:0x801D64FC; // type:object size:0x4 data:float +lbl_801D6500 = .sdata2:0x801D6500; // type:object size:0x4 data:float +lbl_801D6504 = .sdata2:0x801D6504; // type:object size:0x4 data:float +lbl_801D6508 = .sdata2:0x801D6508; // type:object size:0x4 data:float +lbl_801D6510 = .sdata2:0x801D6510; // type:object size:0x8 data:double +lbl_801D6518 = .sdata2:0x801D6518; // type:object size:0x4 data:4byte +lbl_801D6520 = .sdata2:0x801D6520; // type:object size:0x8 data:double +lbl_801D6528 = .sdata2:0x801D6528; // type:object size:0x8 data:double +lbl_801D6530 = .sdata2:0x801D6530; // type:object size:0x8 data:double +lbl_801D6538 = .sdata2:0x801D6538; // type:object size:0x8 data:double +lbl_801D6540 = .sdata2:0x801D6540; // type:object size:0x8 data:double +lbl_801D6548 = .sdata2:0x801D6548; // type:object size:0x8 data:double +lbl_801D6550 = .sdata2:0x801D6550; // type:object size:0x8 data:double +lbl_801D6558 = .sdata2:0x801D6558; // type:object size:0x8 data:double +lbl_801D6560 = .sdata2:0x801D6560; // type:object size:0x8 data:double +lbl_801D6568 = .sdata2:0x801D6568; // type:object size:0x8 data:double +lbl_801D6570 = .sdata2:0x801D6570; // type:object size:0x8 data:double +lbl_801D6578 = .sdata2:0x801D6578; // type:object size:0x8 data:double +lbl_801D6580 = .sdata2:0x801D6580; // type:object size:0x8 data:double +lbl_801D6588 = .sdata2:0x801D6588; // type:object size:0x8 data:double +lbl_801D6590 = .sdata2:0x801D6590; // type:object size:0x8 data:double +lbl_801D6598 = .sdata2:0x801D6598; // type:object size:0x8 data:double +lbl_801D65A0 = .sdata2:0x801D65A0; // type:object size:0x8 data:double +lbl_801D65A8 = .sdata2:0x801D65A8; // type:object size:0x8 data:double +lbl_801D65B0 = .sdata2:0x801D65B0; // type:object size:0x8 data:double +lbl_801D65B8 = .sdata2:0x801D65B8; // type:object size:0x8 data:double +lbl_801D65C0 = .sdata2:0x801D65C0; // type:object size:0x8 data:double +lbl_801D65C8 = .sdata2:0x801D65C8; // type:object size:0x8 data:double +lbl_801D65D0 = .sdata2:0x801D65D0; // type:object size:0x8 data:double +lbl_801D65D8 = .sdata2:0x801D65D8; // type:object size:0x8 data:double +lbl_801D65E0 = .sdata2:0x801D65E0; // type:object size:0x8 data:double +lbl_801D65E8 = .sdata2:0x801D65E8; // type:object size:0x8 data:double +lbl_801D65F0 = .sdata2:0x801D65F0; // type:object size:0x8 data:double +lbl_801D65F8 = .sdata2:0x801D65F8; // type:object size:0x8 data:double +lbl_801D6600 = .sdata2:0x801D6600; // type:object size:0x8 data:double +lbl_801D6608 = .sdata2:0x801D6608; // type:object size:0x8 data:double +lbl_801D6610 = .sdata2:0x801D6610; // type:object size:0x8 data:double +lbl_801D6618 = .sdata2:0x801D6618; // type:object size:0x8 data:double +lbl_801D6620 = .sdata2:0x801D6620; // type:object size:0x8 data:double +lbl_801D6628 = .sdata2:0x801D6628; // type:object size:0x8 data:double +lbl_801D6630 = .sdata2:0x801D6630; // type:object size:0x8 data:double +lbl_801D6638 = .sdata2:0x801D6638; // type:object size:0x8 data:double +lbl_801D6640 = .sdata2:0x801D6640; // type:object size:0x8 data:double +lbl_801D6648 = .sdata2:0x801D6648; // type:object size:0x8 data:double +lbl_801D6650 = .sdata2:0x801D6650; // type:object size:0x8 data:double +lbl_801D6658 = .sdata2:0x801D6658; // type:object size:0x8 data:double +lbl_801D6660 = .sdata2:0x801D6660; // type:object size:0x8 data:double +lbl_801D6668 = .sdata2:0x801D6668; // type:object size:0x8 data:double +lbl_801D6670 = .sdata2:0x801D6670; // type:object size:0x8 data:double +lbl_801D6678 = .sdata2:0x801D6678; // type:object size:0x8 data:double +lbl_801D6680 = .sdata2:0x801D6680; // type:object size:0x8 data:double +lbl_801D6688 = .sdata2:0x801D6688; // type:object size:0x8 data:double +lbl_801D6690 = .sdata2:0x801D6690; // type:object size:0x8 data:double +lbl_801D6698 = .sdata2:0x801D6698; // type:object size:0x8 data:double +lbl_801D66A0 = .sdata2:0x801D66A0; // type:object size:0x8 data:double +lbl_801D66A8 = .sdata2:0x801D66A8; // type:object size:0x8 data:double +lbl_801D66B0 = .sdata2:0x801D66B0; // type:object size:0x8 data:double +lbl_801D66B8 = .sdata2:0x801D66B8; // type:object size:0x8 data:double +lbl_801D66C0 = .sdata2:0x801D66C0; // type:object size:0x8 data:double +lbl_801D66C8 = .sdata2:0x801D66C8; // type:object size:0x8 data:double +lbl_801D66D0 = .sdata2:0x801D66D0; // type:object size:0x8 data:double +lbl_801D66D8 = .sdata2:0x801D66D8; // type:object size:0x8 data:double +lbl_801D66E0 = .sdata2:0x801D66E0; // type:object size:0x8 data:double +lbl_801D66E8 = .sdata2:0x801D66E8; // type:object size:0x8 data:double +lbl_801D66F0 = .sdata2:0x801D66F0; // type:object size:0x8 data:double +lbl_801D66F8 = .sdata2:0x801D66F8; // type:object size:0x8 data:double +lbl_801D6700 = .sdata2:0x801D6700; // type:object size:0x8 data:double +lbl_801D6708 = .sdata2:0x801D6708; // type:object size:0x8 data:double +lbl_801D6710 = .sdata2:0x801D6710; // type:object size:0x8 data:double +lbl_801D6718 = .sdata2:0x801D6718; // type:object size:0x8 data:double +lbl_801D6720 = .sdata2:0x801D6720; // type:object size:0x8 data:double +lbl_801D6728 = .sdata2:0x801D6728; // type:object size:0x8 data:double +lbl_801D6730 = .sdata2:0x801D6730; // type:object size:0x8 data:double +lbl_801D6738 = .sdata2:0x801D6738; // type:object size:0x8 data:double +lbl_801D6740 = .sdata2:0x801D6740; // type:object size:0x8 data:double +lbl_801D6748 = .sdata2:0x801D6748; // type:object size:0x8 data:double +lbl_801D6750 = .sdata2:0x801D6750; // type:object size:0x8 data:double +lbl_801D6758 = .sdata2:0x801D6758; // type:object size:0x8 data:double +lbl_801D6760 = .sdata2:0x801D6760; // type:object size:0x8 data:double +lbl_801D6768 = .sdata2:0x801D6768; // type:object size:0x8 data:double +lbl_801D6770 = .sdata2:0x801D6770; // type:object size:0x8 data:double +lbl_801D6778 = .sdata2:0x801D6778; // type:object size:0x8 data:double +lbl_801D6780 = .sdata2:0x801D6780; // type:object size:0x8 data:double +lbl_801D6788 = .sdata2:0x801D6788; // type:object size:0x8 data:double +lbl_801D6790 = .sdata2:0x801D6790; // type:object size:0x8 data:double +lbl_801D6798 = .sdata2:0x801D6798; // type:object size:0x8 data:double +lbl_801D67A0 = .sdata2:0x801D67A0; // type:object size:0x8 data:double +lbl_801D67A8 = .sdata2:0x801D67A8; // type:object size:0x8 data:double +lbl_801D67B0 = .sdata2:0x801D67B0; // type:object size:0x8 data:double +lbl_801D67B8 = .sdata2:0x801D67B8; // type:object size:0x8 data:double +lbl_801D67C0 = .sdata2:0x801D67C0; // type:object size:0x8 data:double +lbl_801D67C8 = .sdata2:0x801D67C8; // type:object size:0x8 data:double +lbl_801D67D0 = .sdata2:0x801D67D0; // type:object size:0x8 data:double +lbl_801D67D8 = .sdata2:0x801D67D8; // type:object size:0x8 data:double +lbl_801D67E0 = .sdata2:0x801D67E0; // type:object size:0x8 data:double +lbl_801D67E8 = .sdata2:0x801D67E8; // type:object size:0x8 data:double +lbl_801D67F0 = .sdata2:0x801D67F0; // type:object size:0x8 data:double +lbl_801D67F8 = .sdata2:0x801D67F8; // type:object size:0x8 data:double +lbl_801D6800 = .sdata2:0x801D6800; // type:object size:0x8 data:double +lbl_801D6808 = .sdata2:0x801D6808; // type:object size:0x8 data:double +lbl_801D6810 = .sdata2:0x801D6810; // type:object size:0x8 data:double +lbl_801D6818 = .sdata2:0x801D6818; // type:object size:0x8 data:double +lbl_801D6820 = .sdata2:0x801D6820; // type:object size:0x8 data:double +lbl_801D6828 = .sdata2:0x801D6828; // type:object size:0x8 data:double +lbl_801D6830 = .sdata2:0x801D6830; // type:object size:0x8 data:double +lbl_801D6838 = .sdata2:0x801D6838; // type:object size:0x8 data:double +lbl_801D6840 = .sdata2:0x801D6840; // type:object size:0x8 data:double +lbl_801D6848 = .sdata2:0x801D6848; // type:object size:0x8 data:double +lbl_801D6850 = .sdata2:0x801D6850; // type:object size:0x8 data:double +lbl_801D6858 = .sdata2:0x801D6858; // type:object size:0x8 data:double +lbl_801D6860 = .sdata2:0x801D6860; // type:object size:0x8 data:double +lbl_801D6868 = .sdata2:0x801D6868; // type:object size:0x8 data:double +lbl_801D6870 = .sdata2:0x801D6870; // type:object size:0x8 data:double +lbl_801D6878 = .sdata2:0x801D6878; // type:object size:0x8 data:double +lbl_801D6880 = .sdata2:0x801D6880; // type:object size:0x8 data:double +lbl_801D6888 = .sdata2:0x801D6888; // type:object size:0x8 data:double +lbl_801D6890 = .sdata2:0x801D6890; // type:object size:0x8 data:double +lbl_801D6898 = .sdata2:0x801D6898; // type:object size:0x8 data:double +lbl_801D68A0 = .sdata2:0x801D68A0; // type:object size:0x8 data:double +lbl_801D68A8 = .sdata2:0x801D68A8; // type:object size:0x8 data:double +lbl_801D68B0 = .sdata2:0x801D68B0; // type:object size:0x8 data:double +lbl_801D68B8 = .sdata2:0x801D68B8; // type:object size:0x8 data:double +lbl_801D68C0 = .sdata2:0x801D68C0; // type:object size:0x8 data:double +lbl_801D68C8 = .sdata2:0x801D68C8; // type:object size:0x8 data:double +lbl_801D68D0 = .sdata2:0x801D68D0; // type:object size:0x8 data:double +lbl_801D68D8 = .sdata2:0x801D68D8; // type:object size:0x8 data:double +lbl_801D68E0 = .sdata2:0x801D68E0; // type:object size:0x8 data:double +lbl_801D68E8 = .sdata2:0x801D68E8; // type:object size:0x8 data:double +lbl_801D68F0 = .sdata2:0x801D68F0; // type:object size:0x8 data:double +lbl_801D68F8 = .sdata2:0x801D68F8; // type:object size:0x8 data:double +lbl_801D6900 = .sdata2:0x801D6900; // type:object size:0x8 data:double +lbl_801D6908 = .sdata2:0x801D6908; // type:object size:0x8 data:double +lbl_801D6910 = .sdata2:0x801D6910; // type:object size:0x8 data:double +lbl_801D6918 = .sdata2:0x801D6918; // type:object size:0x8 data:double +lbl_801D6920 = .sdata2:0x801D6920; // type:object size:0x8 data:double +lbl_801D6928 = .sdata2:0x801D6928; // type:object size:0x8 data:double +lbl_801D6930 = .sdata2:0x801D6930; // type:object size:0x8 data:double +lbl_801D6938 = .sdata2:0x801D6938; // type:object size:0x8 data:double +lbl_801D6940 = .sdata2:0x801D6940; // type:object size:0x8 data:double +lbl_801D6948 = .sdata2:0x801D6948; // type:object size:0x8 data:double +lbl_801D6950 = .sdata2:0x801D6950; // type:object size:0x8 data:double +lbl_801D6958 = .sdata2:0x801D6958; // type:object size:0x8 data:double +lbl_801D6960 = .sdata2:0x801D6960; // type:object size:0x8 data:double +lbl_801D6968 = .sdata2:0x801D6968; // type:object size:0x8 data:double +lbl_801D6970 = .sdata2:0x801D6970; // type:object size:0x8 data:double +lbl_801D6978 = .sdata2:0x801D6978; // type:object size:0x8 data:double +lbl_801D6980 = .sdata2:0x801D6980; // type:object size:0x8 data:double +lbl_801D6988 = .sdata2:0x801D6988; // type:object size:0x4 data:float +lbl_801D698C = .sdata2:0x801D698C; // type:object size:0x4 data:float +lbl_801D6990 = .sdata2:0x801D6990; // type:object size:0x4 data:float +lbl_801D6998 = .sdata2:0x801D6998; // type:object size:0x8 data:double +lbl_801D69A0 = .sdata2:0x801D69A0; // type:object size:0x8 data:double +lbl_801D69A8 = .sdata2:0x801D69A8; // type:object size:0x4 data:float +lbl_801D69AC = .sdata2:0x801D69AC; // type:object size:0x4 data:float +lbl_801D69B0 = .sdata2:0x801D69B0; // type:object size:0x4 data:float +lbl_801D69B4 = .sdata2:0x801D69B4; // type:object size:0x4 data:float +lbl_801D69B8 = .sdata2:0x801D69B8; // type:object size:0x4 data:float +lbl_801D69BC = .sdata2:0x801D69BC; // type:object size:0x4 data:float +lbl_801D69C0 = .sdata2:0x801D69C0; // type:object size:0x4 data:float +lbl_801D69C4 = .sdata2:0x801D69C4; // type:object size:0x4 data:float +lbl_801D69C8 = .sdata2:0x801D69C8; // type:object size:0x4 data:float +lbl_801D69D0 = .sdata2:0x801D69D0; // type:object size:0x8 data:double +lbl_801D69D8 = .sdata2:0x801D69D8; // type:object size:0x8 data:double +lbl_801D69E0 = .sdata2:0x801D69E0; // type:object size:0x4 data:float +lbl_801D69E4 = .sdata2:0x801D69E4; // type:object size:0x4 data:float +lbl_801D69E8 = .sdata2:0x801D69E8; // type:object size:0x4 data:float +lbl_801D69F0 = .sdata2:0x801D69F0; // type:object size:0x8 data:double +lbl_801D69F8 = .sdata2:0x801D69F8; // type:object size:0x8 data:float +lbl_801D6A00 = .sdata2:0x801D6A00; // type:object size:0x4 data:float +lbl_801D6A04 = .sdata2:0x801D6A04; // type:object size:0x4 data:float +lbl_801D6A08 = .sdata2:0x801D6A08; // type:object size:0x4 data:float +lbl_801D6A10 = .sdata2:0x801D6A10; // type:object size:0x8 data:double +lbl_801D6A18 = .sdata2:0x801D6A18; // type:object size:0x8 data:double +lbl_801D6A20 = .sdata2:0x801D6A20; // type:object size:0x4 data:float +lbl_801D6A24 = .sdata2:0x801D6A24; // type:object size:0x4 data:float +lbl_801D6A28 = .sdata2:0x801D6A28; // type:object size:0x4 data:float +lbl_801D6A30 = .sdata2:0x801D6A30; // type:object size:0x8 data:double +lbl_801D6A38 = .sdata2:0x801D6A38; // type:object size:0x4 data:float +lbl_801D6A40 = .sdata2:0x801D6A40; // type:object size:0x8 data:double +lbl_801D6A48 = .sdata2:0x801D6A48; // type:object size:0x4 data:float +lbl_801D6A4C = .sdata2:0x801D6A4C; // type:object size:0x4 data:float +lbl_801D6A50 = .sdata2:0x801D6A50; // type:object size:0x8 data:double +lbl_801D6A58 = .sdata2:0x801D6A58; // type:object size:0x4 data:float +lbl_801D6A60 = .sdata2:0x801D6A60; // type:object size:0x8 data:double +lbl_801D6A68 = .sdata2:0x801D6A68; // type:object size:0x4 data:float +lbl_801D6A6C = .sdata2:0x801D6A6C; // type:object size:0x4 data:float +lbl_801D6A70 = .sdata2:0x801D6A70; // type:object size:0x4 data:float +lbl_801D6A78 = .sdata2:0x801D6A78; // type:object size:0x8 data:double +lbl_801D6A80 = .sdata2:0x801D6A80; // type:object size:0x4 data:float +lbl_801D6A88 = .sdata2:0x801D6A88; // type:object size:0x8 data:double +lbl_801D6A90 = .sdata2:0x801D6A90; // type:object size:0x4 data:float +lbl_801D6A94 = .sdata2:0x801D6A94; // type:object size:0x4 data:float +lbl_801D6A98 = .sdata2:0x801D6A98; // type:object size:0x8 data:float +lbl_801D6AA0 = .sdata2:0x801D6AA0; // type:object size:0x4 data:float +lbl_801D6AA8 = .sdata2:0x801D6AA8; // type:object size:0x8 data:double +lbl_801D6AB0 = .sdata2:0x801D6AB0; // type:object size:0x4 data:float +lbl_801D6AB4 = .sdata2:0x801D6AB4; // type:object size:0x4 data:float +lbl_801D6AB8 = .sdata2:0x801D6AB8; // type:object size:0x8 data:double +lbl_801D6AC0 = .sdata2:0x801D6AC0; // type:object size:0x4 data:float +lbl_801D6AC4 = .sdata2:0x801D6AC4; // type:object size:0x4 data:float +lbl_801D6AC8 = .sdata2:0x801D6AC8; // type:object size:0x8 data:double +lbl_801D6AD0 = .sdata2:0x801D6AD0; // type:object size:0x4 data:float +lbl_801D6AD4 = .sdata2:0x801D6AD4; // type:object size:0x4 data:float +lbl_801D6AD8 = .sdata2:0x801D6AD8; // type:object size:0x4 data:float +lbl_801D6ADC = .sdata2:0x801D6ADC; // type:object size:0x4 data:float +lbl_801D6AE0 = .sdata2:0x801D6AE0; // type:object size:0x4 data:float +lbl_801D6AE4 = .sdata2:0x801D6AE4; // type:object size:0x4 data:float +lbl_801D6AE8 = .sdata2:0x801D6AE8; // type:object size:0x8 data:float +lbl_801D6AF0 = .sdata2:0x801D6AF0; // type:object size:0x4 data:float +lbl_801D6AF8 = .sdata2:0x801D6AF8; // type:object size:0x8 data:double +lbl_801D6B00 = .sdata2:0x801D6B00; // type:object size:0x8 data:double +lbl_801D6B08 = .sdata2:0x801D6B08; // type:object size:0x8 data:float +lbl_801D6B10 = .sdata2:0x801D6B10; // type:object size:0x4 data:float +lbl_801D6B14 = .sdata2:0x801D6B14; // type:object size:0x4 data:float +lbl_801D6B18 = .sdata2:0x801D6B18; // type:object size:0x4 data:float +lbl_801D6B20 = .sdata2:0x801D6B20; // type:object size:0x8 data:double +lbl_801D6B28 = .sdata2:0x801D6B28; // type:object size:0x4 data:float +lbl_801D6B2C = .sdata2:0x801D6B2C; // type:object size:0x4 data:float +lbl_801D6B30 = .sdata2:0x801D6B30; // type:object size:0x4 data:float +lbl_801D6B34 = .sdata2:0x801D6B34; // type:object size:0x4 data:float +lbl_801D6B38 = .sdata2:0x801D6B38; // type:object size:0x4 data:float +lbl_801D6B3C = .sdata2:0x801D6B3C; // type:object size:0x4 data:float +lbl_801D6B40 = .sdata2:0x801D6B40; // type:object size:0x8 data:double +lbl_801D6B48 = .sdata2:0x801D6B48; // type:object size:0x4 data:float +lbl_801D6B4C = .sdata2:0x801D6B4C; // type:object size:0x4 data:float +lbl_801D6B50 = .sdata2:0x801D6B50; // type:object size:0x8 data:double +value0_3 = .sdata2:0x801D6B58; // type:object size:0x4 scope:local data:float +value0_6 = .sdata2:0x801D6B5C; // type:object size:0x4 scope:local data:float +i2fMagic = .sdata2:0x801D6B60; // type:object size:0x8 scope:local data:double +lbl_801D6B68 = .sdata2:0x801D6B68; // type:object size:0x4 data:float +lbl_801D6B6C = .sdata2:0x801D6B6C; // type:object size:0x4 data:float +lbl_801D6B70 = .sdata2:0x801D6B70; // type:object size:0x4 data:float +lbl_801D6B74 = .sdata2:0x801D6B74; // type:object size:0x4 data:float +lbl_801D6B78 = .sdata2:0x801D6B78; // type:object size:0x4 data:float +lbl_801D6B7C = .sdata2:0x801D6B7C; // type:object size:0x4 data:float +lbl_801D6B80 = .sdata2:0x801D6B80; // type:object size:0x8 data:double +lbl_801D6B88 = .sdata2:0x801D6B88; // type:object size:0x4 data:float +lbl_801D6B8C = .sdata2:0x801D6B8C; // type:object size:0x4 data:float +lbl_801D6B90 = .sdata2:0x801D6B90; // type:object size:0x8 data:double +i2fMagic = .sdata2:0x801D6B98; // type:object size:0x8 scope:local data:double +value0_3 = .sdata2:0x801D6BA0; // type:object size:0x4 scope:local data:float +value0_6 = .sdata2:0x801D6BA4; // type:object size:0x4 scope:local data:float +lbl_801D6BA8 = .sdata2:0x801D6BA8; // type:object size:0x4 data:float +i2fMagic = .sdata2:0x801D6BB0; // type:object size:0x8 scope:local data:double +lbl_801D6BB8 = .sdata2:0x801D6BB8; // type:object size:0x8 data:4byte +lbl_801D6BC0 = .sdata2:0x801D6BC0; // type:object size:0x4 data:float +lbl_801D6BC4 = .sdata2:0x801D6BC4; // type:object size:0x4 data:float +lbl_801D6BC8 = .sdata2:0x801D6BC8; // type:object size:0x4 data:float +lbl_801D6BCC = .sdata2:0x801D6BCC; // type:object size:0x4 data:float +lbl_801D6BD0 = .sdata2:0x801D6BD0; // type:object size:0x8 data:double +lbl_801D6BE0 = .sbss2:0x801D6BE0; // type:object size:0x4 scope:local data:byte +lbl_801D6BE4 = .sbss2:0x801D6BE4; // type:object size:0x4 scope:local data:byte diff --git a/config/GMPJ01_00/build.sha1 b/config/GMPJ01_00/build.sha1 new file mode 100644 index 00000000..c9f5f735 --- /dev/null +++ b/config/GMPJ01_00/build.sha1 @@ -0,0 +1,100 @@ +abe951fa239e7cb5de67e1ac091cfbc14010d6e0 build/GMPJ01_00/main.dol +164e5e0bec4e1fbf068a158b00a62bd2a4124fb1 build/GMPJ01_00/_minigameDll/_minigameDll.rel +214a6992eabf31e8a202833c8f6e4da4e553ceb5 build/GMPJ01_00/bootDll/bootDll.rel +bd08e86c8b36eaa84319a8c41030afc769058983 build/GMPJ01_00/instDll/instDll.rel +803dcd1192a06ea975d04234bc6ea29a8852a3f5 build/GMPJ01_00/m302Dll/m302Dll.rel +803dcd1192a06ea975d04234bc6ea29a8852a3f5 build/GMPJ01_00/m303Dll/m303Dll.rel +803dcd1192a06ea975d04234bc6ea29a8852a3f5 build/GMPJ01_00/m330Dll/m330Dll.rel +803dcd1192a06ea975d04234bc6ea29a8852a3f5 build/GMPJ01_00/m333Dll/m333Dll.rel +fc2f898e5da6e17e2bb4a5b1efa6344dc210ed19 build/GMPJ01_00/m402Dll/m402Dll.rel +f6346c570fb659d8098f55a8f15b54ab96393019 build/GMPJ01_00/m403Dll/m403Dll.rel +404b9558c0a1b0ac728afe9e827604e0d606a8e1 build/GMPJ01_00/m404Dll/m404Dll.rel +a5ab650f706128955ee2bc7a068813097b9c31c0 build/GMPJ01_00/m405Dll/m405Dll.rel +90ab2775e7e60d07bcb2bc4879e2c2e4ef95a721 build/GMPJ01_00/m406Dll/m406Dll.rel +efe1a502cd82f22572f1e56992be2cf7a9c27cbb build/GMPJ01_00/m407dll/m407dll.rel +2206fa17d24e900079543ac9d4c48ad405d8e55f build/GMPJ01_00/m408Dll/m408Dll.rel +7edd8e77b69db00378c14b2130b9d3692841b8d1 build/GMPJ01_00/m409Dll/m409Dll.rel +8d6dd949a706594ad6bbc5d2447072a3519b087c build/GMPJ01_00/m410Dll/m410Dll.rel +8cbdc67b341232955341a2f9193128483f3d2325 build/GMPJ01_00/m411Dll/m411Dll.rel +952cd93f9dca7282ffe4a162e773a93249e39c6e build/GMPJ01_00/m412Dll/m412Dll.rel +bb130095d6045dc761b3dcd70307c8de12946e95 build/GMPJ01_00/m413Dll/m413Dll.rel +f75c13865a8508024bb6c4ba215293e02ac4029a build/GMPJ01_00/m414Dll/m414Dll.rel +9c90fbfaa45e838dcf0d06f1d8930c4ebfb346d6 build/GMPJ01_00/m415Dll/m415Dll.rel +fb6e0bd126678c5611d4b805697804edd5a3bbb4 build/GMPJ01_00/m416Dll/m416Dll.rel +3d1a40d456dab6fc4058bee79d0b9556ec69da5b build/GMPJ01_00/m417Dll/m417Dll.rel +c545db0be0b14179586b0b7e3f29ffa68f30a4a2 build/GMPJ01_00/m418Dll/m418Dll.rel +eac3a130a36057c156b3527ff464cd29e5f89b34 build/GMPJ01_00/m419Dll/m419Dll.rel +f5f355eb7e0884478ce8d353bd7f39a3d270f22f build/GMPJ01_00/m420dll/m420dll.rel +5e199b4773791122284125afa07e094edff53ea2 build/GMPJ01_00/m421Dll/m421Dll.rel +bc3cc80aafb1d4e3f80e746f275fd5d69b251a98 build/GMPJ01_00/m422Dll/m422Dll.rel +e4220010e147160fcd683e4f75f668a2a278545d build/GMPJ01_00/m423Dll/m423Dll.rel +6007eaeb00271006355018faf4c45cdb6bea9462 build/GMPJ01_00/m424Dll/m424Dll.rel +78b12773afcf2c5d7f5f3437d0f8f46d9ee2fb6c build/GMPJ01_00/m425Dll/m425Dll.rel +646a30f82b46f522b154da1441c633a6344bcb4e build/GMPJ01_00/m426Dll/m426Dll.rel +d1775769482dcca5335b715423c7937cc90c11ff build/GMPJ01_00/m427Dll/m427Dll.rel +3a429bc7c87646735dd0221938162031e8e8eb18 build/GMPJ01_00/m428Dll/m428Dll.rel +5c73605a373af413cbdde7ab014697dbf74d73c5 build/GMPJ01_00/m429Dll/m429Dll.rel +5b7bee635458a6faa467e32387774a1c755842c2 build/GMPJ01_00/m430Dll/m430Dll.rel +d838e4d9378ce9d70cec9ba87f585340755b3978 build/GMPJ01_00/m431Dll/m431Dll.rel +84429fff6278ce44615d859220b04bee048aab32 build/GMPJ01_00/m432Dll/m432Dll.rel +f56e9cc895578b9ff8cf57f54fa7af35459bb353 build/GMPJ01_00/m433Dll/m433Dll.rel +cd3135998d2703af72e9c547cf2ecdff8dfddb12 build/GMPJ01_00/m434Dll/m434Dll.rel +bd3a81c1b4eb44503bc81d30412c9a9ebf646f09 build/GMPJ01_00/m435Dll/m435Dll.rel +43b55269820dba54ba5afb2cbdeeb889b4a3908f build/GMPJ01_00/m436Dll/m436Dll.rel +9c5711c7354f0b0e1811aae39d63ae3a1ab1d8fc build/GMPJ01_00/m437Dll/m437Dll.rel +eff0920fd6695a4886e531477fe845ebab9fa58c build/GMPJ01_00/m438Dll/m438Dll.rel +a69d462dff8ed14565de09fdf9ea25811a07e760 build/GMPJ01_00/m439Dll/m439Dll.rel +b131837b247ab12b0a0eedc24524b4b7078fe3df build/GMPJ01_00/m440Dll/m440Dll.rel +50290b2b7216b6e1c873d2140371cd01d318e96d build/GMPJ01_00/m441Dll/m441Dll.rel +86d546fc4345975773057465c0ded6f001cbf3f7 build/GMPJ01_00/m442Dll/m442Dll.rel +8625605a1198477a21f7540151822bba638ba56f build/GMPJ01_00/m443Dll/m443Dll.rel +1a9e6e528ccc38315650fe86c607a51f7bbca22e build/GMPJ01_00/m444dll/m444dll.rel +1dceaf7e6a3b550eeba10b1f88b1f77df67d77d4 build/GMPJ01_00/m445Dll/m445Dll.rel +bb9b17127b6d3e7c42f7c198c4b58d73dc6ead04 build/GMPJ01_00/m446dll/m446dll.rel +dcb78f18f4b2de862532b0557a093bf0e7ac2a3f build/GMPJ01_00/m447dll/m447dll.rel +7a9b438e699ee4c960438e60f08f6a3f10a6847f build/GMPJ01_00/m448Dll/m448Dll.rel +2511aaea175c454025b25e6f873991f643517afa build/GMPJ01_00/m449Dll/m449Dll.rel +b9bed4dffcb4447b1cf83dc7be8dfb4e04ba6908 build/GMPJ01_00/m450Dll/m450Dll.rel +30b1fcd7438cbc70bd78b0a68d58b5c4dc7dfc1f build/GMPJ01_00/m451Dll/m451Dll.rel +4726a8d2fe900e5fd3a1fe747e53d9d8bd533c4d build/GMPJ01_00/m453Dll/m453Dll.rel +3f6938ca1a430e799f82ed835bdb2852caa6f081 build/GMPJ01_00/m455Dll/m455Dll.rel +32c370c9e690903950c449ecde463aa1f67c22d2 build/GMPJ01_00/m456Dll/m456Dll.rel +8cc0fbd1a8c70cd84068054c859fbe437b100a29 build/GMPJ01_00/m457Dll/m457Dll.rel +c6b7148b5103f7c079821322e6c52750dc421b92 build/GMPJ01_00/m458Dll/m458Dll.rel +050ceeb799efbc0b789944e7ac9f8092c0916710 build/GMPJ01_00/m459dll/m459dll.rel +2d34a403542ce7ea0752244425e98ba34e2cae7a build/GMPJ01_00/m460Dll/m460Dll.rel +d95c248d3570681f5367e3b2bf3598560ae9ff1c build/GMPJ01_00/m461Dll/m461Dll.rel +0f050808bb94a113ad75d5364cb5ca660868f44a build/GMPJ01_00/m462Dll/m462Dll.rel +70616dce8be76266dcc1f364353bac97598b81eb build/GMPJ01_00/m463Dll/m463Dll.rel +8a933d827ea1455c93e7c277bfa48be844897d9f build/GMPJ01_00/mentDll/mentDll.rel +af7dc453707dbb01a82e9f867bfeff2f06a73a29 build/GMPJ01_00/mgmodedll/mgmodedll.rel +b64343c9747b118a29ceb4bcb028cb4f16fb589e build/GMPJ01_00/modeltestDll/modeltestDll.rel +e4181ec6478f305cd87d1f4d1f28758637321956 build/GMPJ01_00/modeseldll/modeseldll.rel +a521e035ae1210b6638cb781febd390d1999190b build/GMPJ01_00/movieDll/movieDll.rel +d6a49ebd47855e9bdffa17c1ab57ca548a3fb75a build/GMPJ01_00/mpexDll/mpexDll.rel +7cbf86d25a20d5571270b45ed1620c6ff7913476 build/GMPJ01_00/msetupDll/msetupDll.rel +cbb7197d16e7cec374e0b5d3bd90d0cc9d650127 build/GMPJ01_00/mstory2Dll/mstory2Dll.rel +f02191dfe80020d8e9cc17ea2da8f33e81a32e31 build/GMPJ01_00/mstory3Dll/mstory3Dll.rel +4ae421deb583f684d17a58d232861a4c52b7d694 build/GMPJ01_00/mstory4Dll/mstory4Dll.rel +403343e740c0ea0cd1c1571946921b0e137a612f build/GMPJ01_00/mstoryDll/mstoryDll.rel +95803acba3dd4fc8e98140a923f3716d45377eef build/GMPJ01_00/nisDll/nisDll.rel +d8915bb0a375a86125fb67a287d1723cfafc6f62 build/GMPJ01_00/option/option.rel +ef8fa41e2b5f0e69cd6d2d763d8cdaeca782b4c9 build/GMPJ01_00/present/present.rel +5166964e0adaa9beb257665edd8d0d1726d53f88 build/GMPJ01_00/resultDll/resultDll.rel +5cb945cfbe3c8f626326c75b26d7ea3b318ae3c9 build/GMPJ01_00/safDll/safDll.rel +86639a3aff8b7660f541a15904868131d01a458f build/GMPJ01_00/selmenuDll/selmenuDll.rel +bca64fa6b8287dba977e7bc567dbbf345d36fed8 build/GMPJ01_00/staffDll/staffDll.rel +2ea368663d63828fdfdf0085290ba9a1e160b620 build/GMPJ01_00/subchrselDll/subchrselDll.rel +75f8861387de75f5d5d74e59e69fc43f2e5e3de2 build/GMPJ01_00/w01Dll/w01Dll.rel +91cdc49e2aa44fa47551345d6ecfaa563e5c648b build/GMPJ01_00/w02Dll/w02Dll.rel +5e3a277824da41154ac2601e00c72661c86aa41b build/GMPJ01_00/w03Dll/w03Dll.rel +cd988b1377ba5039794b4cc2eae2921e5a6de167 build/GMPJ01_00/w04Dll/w04Dll.rel +2a6e644000418800e5e85fd4585c37f0193fbe76 build/GMPJ01_00/w05Dll/w05Dll.rel +d9765f5f7e9e1ea486fe6f1ab3a478dff265c72a build/GMPJ01_00/w06Dll/w06Dll.rel +f7f16f2fb45fc874a437267ca7d17139c1110495 build/GMPJ01_00/w10Dll/w10Dll.rel +dce8d65e08069e87029a0a950aa2ab6894c110b4 build/GMPJ01_00/w20Dll/w20Dll.rel +0ecb1234fdc25f76f41c12678135d0c74a5b39a2 build/GMPJ01_00/w21Dll/w21Dll.rel +f21fcb2b66e154a0ae3e875ddefbb5e9eb1d5174 build/GMPJ01_00/ztardll/ztardll.rel +83c94c0ef384f7783fecfd77fb845659883dd7d6 build/GMPJ01_00/E3setupDLL/E3setupDLL.rel +1264a80903d561b61e86d9db3e7648e0b7570bf5 build/GMPJ01_00/m300Dll/m300Dll.rel +5ae17b9ca8a5689c107350b5e0dabb658f4af019 build/GMPJ01_00/m401Dll/m401Dll.rel diff --git a/config/GMPJ01_00/config.yml b/config/GMPJ01_00/config.yml new file mode 100644 index 00000000..441f226f --- /dev/null +++ b/config/GMPJ01_00/config.yml @@ -0,0 +1,568 @@ +object_base: orig/GMPJ01_00 +object: sys/main.dol +hash: abe951fa239e7cb5de67e1ac091cfbc14010d6e0 +symbols: config/GMPJ01_00/symbols.txt +splits: config/GMPJ01_00/splits.txt +quick_analysis: true # Faster re-runs after initial analysis +mw_comment_version: 10 # GC 2.6 linker +force_active: [__register_global_object, _kerent] + +detect_objects: true +detect_strings: true +fill_gaps: true +# TODO add hashes +modules: + - object: files/dll/_minigameDll.rel + + symbols: config/GMPE01_00/rels/_minigameDll/symbols.txt + splits: config/GMPE01_00/rels/_minigameDll/splits.txt + links: [] + - object: files/dll/bootDll.rel + + symbols: config/GMPJ01_00/rels/bootDll/symbols.txt + splits: config/GMPJ01_00/rels/bootDll/splits.txt + links: [] + - object: files/dll/instDll.rel + + symbols: config/GMPJ01_00/rels/instDll/symbols.txt + splits: config/GMPJ01_00/rels/instDll/splits.txt + links: [] + - object: files/dll/m302Dll.rel + + symbols: config/GMPJ01_00/rels/m302Dll/symbols.txt + splits: config/GMPJ01_00/rels/m302Dll/splits.txt + links: [] + - object: files/dll/m303Dll.rel + + symbols: config/GMPJ01_00/rels/m303Dll/symbols.txt + splits: config/GMPJ01_00/rels/m303Dll/splits.txt + links: [] + - object: files/dll/m330Dll.rel + + symbols: config/GMPJ01_00/rels/m330Dll/symbols.txt + splits: config/GMPJ01_00/rels/m330Dll/splits.txt + links: [] + - object: files/dll/m333Dll.rel + + symbols: config/GMPJ01_00/rels/m333Dll/symbols.txt + splits: config/GMPJ01_00/rels/m333Dll/splits.txt + links: [] + - object: files/dll/m402Dll.rel + + symbols: config/GMPE01_00/rels/m402Dll/symbols.txt + splits: config/GMPE01_00/rels/m402Dll/splits.txt + links: [] + - object: files/dll/m403Dll.rel + + symbols: config/GMPE01_00/rels/m403Dll/symbols.txt + splits: config/GMPE01_00/rels/m403Dll/splits.txt + links: [] + - object: files/dll/m404Dll.rel + + symbols: config/GMPE01_00/rels/m404Dll/symbols.txt + splits: config/GMPE01_00/rels/m404Dll/splits.txt + links: [] + - object: files/dll/m405Dll.rel + + symbols: config/GMPE01_00/rels/m405Dll/symbols.txt + splits: config/GMPE01_00/rels/m405Dll/splits.txt + links: [] + - object: files/dll/m406Dll.rel + + symbols: config/GMPE01_00/rels/m406Dll/symbols.txt + splits: config/GMPE01_00/rels/m406Dll/splits.txt + links: [] + - object: files/dll/m407dll.rel + + symbols: config/GMPE01_00/rels/m407dll/symbols.txt + splits: config/GMPE01_00/rels/m407dll/splits.txt + links: [] + - object: files/dll/m408Dll.rel + + symbols: config/GMPE01_00/rels/m408Dll/symbols.txt + splits: config/GMPE01_00/rels/m408Dll/splits.txt + links: [] + - object: files/dll/m409Dll.rel + + symbols: config/GMPE01_00/rels/m409Dll/symbols.txt + splits: config/GMPE01_00/rels/m409Dll/splits.txt + links: [] + - object: files/dll/m410Dll.rel + + symbols: config/GMPE01_00/rels/m410Dll/symbols.txt + splits: config/GMPE01_00/rels/m410Dll/splits.txt + links: [] + - object: files/dll/m411Dll.rel + + symbols: config/GMPE01_00/rels/m411Dll/symbols.txt + splits: config/GMPE01_00/rels/m411Dll/splits.txt + links: [] + - object: files/dll/m412Dll.rel + + symbols: config/GMPE01_00/rels/m412Dll/symbols.txt + splits: config/GMPE01_00/rels/m412Dll/splits.txt + links: [] + - object: files/dll/m413Dll.rel + + symbols: config/GMPJ01_00/rels/m413Dll/symbols.txt + splits: config/GMPJ01_00/rels/m413Dll/splits.txt + links: [] + - object: files/dll/m414Dll.rel + + symbols: config/GMPE01_00/rels/m414Dll/symbols.txt + splits: config/GMPE01_00/rels/m414Dll/splits.txt + links: [] + - object: files/dll/m415Dll.rel + + symbols: config/GMPE01_00/rels/m415Dll/symbols.txt + splits: config/GMPE01_00/rels/m415Dll/splits.txt + links: [] + - object: files/dll/m416Dll.rel + + symbols: config/GMPE01_00/rels/m416Dll/symbols.txt + splits: config/GMPE01_00/rels/m416Dll/splits.txt + links: [] + - object: files/dll/m417Dll.rel + + symbols: config/GMPE01_00/rels/m417Dll/symbols.txt + splits: config/GMPE01_00/rels/m417Dll/splits.txt + links: [] + - object: files/dll/m418Dll.rel + + symbols: config/GMPJ01_00/rels/m418Dll/symbols.txt + splits: config/GMPJ01_00/rels/m418Dll/splits.txt + links: [] + - object: files/dll/m419Dll.rel + + symbols: config/GMPJ01_00/rels/m419Dll/symbols.txt + splits: config/GMPJ01_00/rels/m419Dll/splits.txt + links: [] + - object: files/dll/m420dll.rel + + symbols: config/GMPE01_00/rels/m420dll/symbols.txt + splits: config/GMPE01_00/rels/m420dll/splits.txt + links: [] + - object: files/dll/m421Dll.rel + + symbols: config/GMPE01_00/rels/m421Dll/symbols.txt + splits: config/GMPE01_00/rels/m421Dll/splits.txt + links: [] + - object: files/dll/m422Dll.rel + + symbols: config/GMPJ01_00/rels/m422Dll/symbols.txt + splits: config/GMPJ01_00/rels/m422Dll/splits.txt + links: [] + - object: files/dll/m423Dll.rel + + symbols: config/GMPJ01_00/rels/m423Dll/symbols.txt + splits: config/GMPJ01_00/rels/m423Dll/splits.txt + links: [] + - object: files/dll/m424Dll.rel + + symbols: config/GMPJ01_00/rels/m424Dll/symbols.txt + splits: config/GMPJ01_00/rels/m424Dll/splits.txt + links: [] + - object: files/dll/m425Dll.rel + + symbols: config/GMPJ01_00/rels/m425Dll/symbols.txt + splits: config/GMPJ01_00/rels/m425Dll/splits.txt + links: [] + - object: files/dll/m426Dll.rel + + symbols: config/GMPJ01_00/rels/m426Dll/symbols.txt + splits: config/GMPJ01_00/rels/m426Dll/splits.txt + links: [] + - object: files/dll/m427Dll.rel + + symbols: config/GMPJ01_00/rels/m427Dll/symbols.txt + splits: config/GMPJ01_00/rels/m427Dll/splits.txt + links: [] + - object: files/dll/m428Dll.rel + + symbols: config/GMPJ01_00/rels/m428Dll/symbols.txt + splits: config/GMPJ01_00/rels/m428Dll/splits.txt + links: [] + - object: files/dll/m429Dll.rel + + symbols: config/GMPE01_00/rels/m429Dll/symbols.txt + splits: config/GMPE01_00/rels/m429Dll/splits.txt + links: [] + - object: files/dll/m430Dll.rel + + symbols: config/GMPJ01_00/rels/m430Dll/symbols.txt + splits: config/GMPJ01_00/rels/m430Dll/splits.txt + links: [] + - object: files/dll/m431Dll.rel + + symbols: config/GMPE01_00/rels/m431Dll/symbols.txt + splits: config/GMPE01_00/rels/m431Dll/splits.txt + links: [] + - object: files/dll/m432Dll.rel + + symbols: config/GMPE01_00/rels/m432Dll/symbols.txt + splits: config/GMPE01_00/rels/m432Dll/splits.txt + links: [] + - object: files/dll/m433Dll.rel + + symbols: config/GMPJ01_00/rels/m433Dll/symbols.txt + splits: config/GMPJ01_00/rels/m433Dll/splits.txt + links: [] + - object: files/dll/m434Dll.rel + + symbols: config/GMPE01_00/rels/m434Dll/symbols.txt + splits: config/GMPE01_00/rels/m434Dll/splits.txt + links: [] + - object: files/dll/m435Dll.rel + + symbols: config/GMPE01_00/rels/m435Dll/symbols.txt + splits: config/GMPE01_00/rels/m435Dll/splits.txt + links: [] + - object: files/dll/m436Dll.rel + + symbols: config/GMPE01_00/rels/m436Dll/symbols.txt + splits: config/GMPE01_00/rels/m436Dll/splits.txt + links: [] + - object: files/dll/m437Dll.rel + + symbols: config/GMPE01_00/rels/m437Dll/symbols.txt + splits: config/GMPE01_00/rels/m437Dll/splits.txt + links: [] + - object: files/dll/m438Dll.rel + + symbols: config/GMPJ01_00/rels/m438Dll/symbols.txt + splits: config/GMPJ01_00/rels/m438Dll/splits.txt + links: [] + - object: files/dll/m439Dll.rel + + symbols: config/GMPE01_00/rels/m439Dll/symbols.txt + splits: config/GMPE01_00/rels/m439Dll/splits.txt + links: [] + - object: files/dll/m440Dll.rel + + symbols: config/GMPE01_00/rels/m440Dll/symbols.txt + splits: config/GMPE01_00/rels/m440Dll/splits.txt + links: [] + - object: files/dll/m441Dll.rel + + symbols: config/GMPE01_00/rels/m441Dll/symbols.txt + splits: config/GMPE01_00/rels/m441Dll/splits.txt + links: [] + - object: files/dll/m442Dll.rel + + symbols: config/GMPE01_00/rels/m442Dll/symbols.txt + splits: config/GMPE01_00/rels/m442Dll/splits.txt + links: [] + - object: files/dll/m443Dll.rel + + symbols: config/GMPE01_00/rels/m443Dll/symbols.txt + splits: config/GMPE01_00/rels/m443Dll/splits.txt + links: [] + - object: files/dll/m444dll.rel + + symbols: config/GMPJ01_00/rels/m444dll/symbols.txt + splits: config/GMPJ01_00/rels/m444dll/splits.txt + links: [] + - object: files/dll/m445Dll.rel + + symbols: config/GMPE01_00/rels/m445Dll/symbols.txt + splits: config/GMPE01_00/rels/m445Dll/splits.txt + links: [] + - object: files/dll/m446dll.rel + + symbols: config/GMPE01_00/rels/m446dll/symbols.txt + splits: config/GMPE01_00/rels/m446dll/splits.txt + links: [] + - object: files/dll/m447dll.rel + + symbols: config/GMPE01_00/rels/m447dll/symbols.txt + splits: config/GMPE01_00/rels/m447dll/splits.txt + links: [] + - object: files/dll/m448Dll.rel + + symbols: config/GMPE01_00/rels/m448Dll/symbols.txt + splits: config/GMPE01_00/rels/m448Dll/splits.txt + links: [] + - object: files/dll/m449Dll.rel + + symbols: config/GMPJ01_00/rels/m449Dll/symbols.txt + splits: config/GMPJ01_00/rels/m449Dll/splits.txt + links: [] + - object: files/dll/m450Dll.rel + + symbols: config/GMPE01_00/rels/m450Dll/symbols.txt + splits: config/GMPE01_00/rels/m450Dll/splits.txt + links: [] + - object: files/dll/m451Dll.rel + + symbols: config/GMPE01_00/rels/m451Dll/symbols.txt + splits: config/GMPE01_00/rels/m451Dll/splits.txt + links: [] + - object: files/dll/m453Dll.rel + + symbols: config/GMPE01_00/rels/m453Dll/symbols.txt + splits: config/GMPE01_00/rels/m453Dll/splits.txt + links: [] + - object: files/dll/m455Dll.rel + + symbols: config/GMPE01_00/rels/m455Dll/symbols.txt + splits: config/GMPE01_00/rels/m455Dll/splits.txt + links: [] + - object: files/dll/m456Dll.rel + + symbols: config/GMPE01_00/rels/m456Dll/symbols.txt + splits: config/GMPE01_00/rels/m456Dll/splits.txt + links: [] + - object: files/dll/m457Dll.rel + + symbols: config/GMPJ01_00/rels/m457Dll/symbols.txt + splits: config/GMPJ01_00/rels/m457Dll/splits.txt + links: [] + - object: files/dll/m458Dll.rel + + symbols: config/GMPJ01_00/rels/m458Dll/symbols.txt + splits: config/GMPJ01_00/rels/m458Dll/splits.txt + links: [] + - object: files/dll/m459dll.rel + + symbols: config/GMPJ01_00/rels/m459dll/symbols.txt + splits: config/GMPJ01_00/rels/m459dll/splits.txt + links: [] + - object: files/dll/m460Dll.rel + + symbols: config/GMPE01_00/rels/m460Dll/symbols.txt + splits: config/GMPE01_00/rels/m460Dll/splits.txt + links: [] + - object: files/dll/m461Dll.rel + + symbols: config/GMPE01_00/rels/m461Dll/symbols.txt + splits: config/GMPE01_00/rels/m461Dll/splits.txt + links: [] + - object: files/dll/m462Dll.rel + + symbols: config/GMPJ01_00/rels/m462Dll/symbols.txt + splits: config/GMPJ01_00/rels/m462Dll/splits.txt + links: [] + - object: files/dll/m463Dll.rel + + symbols: config/GMPJ01_00/rels/m463Dll/symbols.txt + splits: config/GMPJ01_00/rels/m463Dll/splits.txt + links: [] + - object: files/dll/mentDll.rel + + symbols: config/GMPJ01_00/rels/mentDll/symbols.txt + splits: config/GMPJ01_00/rels/mentDll/splits.txt + links: [] + - object: files/dll/movieDll.rel + + symbols: config/GMPJ01_00/rels/movieDll/symbols.txt + splits: config/GMPJ01_00/rels/movieDll/splits.txt + links: [] + - object: files/dll/mgmodedll.rel + + symbols: config/GMPE01_00/rels/mgmodedll/symbols.txt + splits: config/GMPE01_00/rels/mgmodedll/splits.txt + links: [] + - object: files/dll/modeltestDll.rel + + symbols: config/GMPE01_00/rels/modeltestDll/symbols.txt + splits: config/GMPE01_00/rels/modeltestDll/splits.txt + links: [] + - object: files/dll/modeseldll.rel + + symbols: config/GMPJ01_00/rels/modeseldll/symbols.txt + splits: config/GMPJ01_00/rels/modeseldll/splits.txt + links: [] + - object: files/dll/mpexDll.rel + + symbols: config/GMPJ01_00/rels/mpexDll/symbols.txt + splits: config/GMPJ01_00/rels/mpexDll/splits.txt + links: [] + - object: files/dll/msetupDll.rel + + symbols: config/GMPJ01_00/rels/msetupDll/symbols.txt + splits: config/GMPJ01_00/rels/msetupDll/splits.txt + links: [] + - object: files/dll/mstory2Dll.rel + + symbols: config/GMPJ01_00/rels/mstory2Dll/symbols.txt + splits: config/GMPJ01_00/rels/mstory2Dll/splits.txt + links: [] + - object: files/dll/mstory3Dll.rel + + symbols: config/GMPJ01_00/rels/mstory3Dll/symbols.txt + splits: config/GMPJ01_00/rels/mstory3Dll/splits.txt + links: [] + - object: files/dll/mstory4Dll.rel + + symbols: config/GMPJ01_00/rels/mstory4Dll/symbols.txt + splits: config/GMPJ01_00/rels/mstory4Dll/splits.txt + links: [] + - object: files/dll/mstoryDll.rel + + symbols: config/GMPJ01_00/rels/mstoryDll/symbols.txt + splits: config/GMPJ01_00/rels/mstoryDll/splits.txt + links: [] + - object: files/dll/nisDll.rel + + symbols: config/GMPE01_00/rels/nisDll/symbols.txt + splits: config/GMPE01_00/rels/nisDll/splits.txt + links: [] + - object: files/dll/option.rel + + symbols: config/GMPJ01_00/rels/option/symbols.txt + splits: config/GMPJ01_00/rels/option/splits.txt + links: [] + - object: files/dll/present.rel + + symbols: config/GMPE01_00/rels/present/symbols.txt + splits: config/GMPE01_00/rels/present/splits.txt + links: [] + - object: files/dll/resultDll.rel + + symbols: config/GMPE01_00/rels/resultDll/symbols.txt + splits: config/GMPE01_00/rels/resultDll/splits.txt + links: [] + - object: files/dll/safDll.rel + + symbols: config/GMPJ01_00/rels/safDll/symbols.txt + splits: config/GMPJ01_00/rels/safDll/splits.txt + links: [] + - object: files/dll/selmenuDll.rel + + symbols: config/GMPJ01_00/rels/selmenuDll/symbols.txt + splits: config/GMPJ01_00/rels/selmenuDll/splits.txt + links: [] + - object: files/dll/staffDll.rel + + symbols: config/GMPJ01_00/rels/staffDll/symbols.txt + splits: config/GMPJ01_00/rels/staffDll/splits.txt + links: [] + - object: files/dll/subchrselDll.rel + + symbols: config/GMPJ01_00/rels/subchrselDll/symbols.txt + splits: config/GMPJ01_00/rels/subchrselDll/splits.txt + links: [] + - object: files/dll/w01Dll.rel + + symbols: config/GMPE01_00/rels/w01Dll/symbols.txt + splits: config/GMPE01_00/rels/w01Dll/splits.txt + links: [] + - object: files/dll/w02Dll.rel + + symbols: config/GMPE01_00/rels/w02Dll/symbols.txt + splits: config/GMPE01_00/rels/w02Dll/splits.txt + links: [] + - object: files/dll/w03Dll.rel + + symbols: config/GMPE01_00/rels/w03Dll/symbols.txt + splits: config/GMPE01_00/rels/w03Dll/splits.txt + links: [] + - object: files/dll/w04Dll.rel + + symbols: config/GMPJ01_00/rels/w04Dll/symbols.txt + splits: config/GMPJ01_00/rels/w04Dll/splits.txt + links: [] + - object: files/dll/w05Dll.rel + + symbols: config/GMPE01_00/rels/w05Dll/symbols.txt + splits: config/GMPE01_00/rels/w05Dll/splits.txt + links: [] + - object: files/dll/w06Dll.rel + + symbols: config/GMPE01_00/rels/w06Dll/symbols.txt + splits: config/GMPE01_00/rels/w06Dll/splits.txt + links: [] + - object: files/dll/w10Dll.rel + + symbols: config/GMPE01_00/rels/w10Dll/symbols.txt + splits: config/GMPE01_00/rels/w10Dll/splits.txt + links: [] + - object: files/dll/w20Dll.rel + + symbols: config/GMPE01_00/rels/w20Dll/symbols.txt + splits: config/GMPE01_00/rels/w20Dll/splits.txt + links: [] + - object: files/dll/w21Dll.rel + + symbols: config/GMPE01_00/rels/w21Dll/symbols.txt + splits: config/GMPE01_00/rels/w21Dll/splits.txt + links: [] + - object: files/dll/ztardll.rel + + symbols: config/GMPJ01_00/rels/ztardll/symbols.txt + splits: config/GMPJ01_00/rels/ztardll/splits.txt + links: [] + - object: files/dll/E3setupDLL.rel + + symbols: config/GMPJ01_00/rels/E3setupDLL/symbols.txt + splits: config/GMPJ01_00/rels/E3setupDLL/splits.txt + links: [_minigameDll] + - object: files/dll/m300Dll.rel + + symbols: config/GMPJ01_00/rels/m300Dll/symbols.txt + splits: config/GMPJ01_00/rels/m300Dll/splits.txt + links: [_minigameDll] + - object: files/dll/m401Dll.rel + + symbols: config/GMPE01_00/rels/m401Dll/symbols.txt + splits: config/GMPE01_00/rels/m401Dll/splits.txt + links: [_minigameDll] + +extract: +- symbol: ank8x8_4b + binary: ank8x8_4b.bin + header: ank8x8_4b.inc +- symbol: refMapData0 + binary: refMapData0.anm + header: refMapData0.inc +- symbol: refMapData1 + binary: refMapData1.anm + header: refMapData1.inc +- symbol: refMapData2 + binary: refMapData2.anm + header: refMapData2.inc +- symbol: refMapData3 + binary: refMapData3.anm + header: refMapData3.inc +- symbol: refMapData4 + binary: refMapData4.anm + header: refMapData4.inc +- symbol: toonMapData + binary: toonMapData.anm + header: toonMapData.inc +- symbol: toonMapData2 + binary: toonMapData2.anm + header: toonMapData2.inc +- symbol: hiliteData + binary: hiliteData.anm + header: hiliteData.inc +- symbol: hiliteData2 + binary: hiliteData2.anm + header: hiliteData2.inc +- symbol: hiliteData3 + binary: hiliteData3.anm + header: hiliteData3.inc +- symbol: hiliteData4 + binary: hiliteData4.anm + header: hiliteData4.inc +- symbol: Ascii8x8_1bpp + binary: Ascii8x8_1bpp.bin + header: Ascii8x8_1bpp.inc +- symbol: coveropen_jp + binary: coveropen_jp.bin + header: coveropen_jp.inc +- symbol: fatalerror_jp + binary: fatalerror_jp.bin + header: fatalerror_jp.inc +- symbol: loading_jp + binary: loading_jp.bin + header: loading_jp.inc +- symbol: nodisc_jp + binary: nodisc_jp.bin + header: nodisc_jp.inc +- symbol: retryerror_jp + binary: retryerror_jp.bin + header: retryerror_jp.inc +- symbol: wrongdisc_jp + binary: wrongdisc_jp.bin + header: wrongdisc_jp.inc diff --git a/config/GMPJ01_00/rels/E3setupDLL/splits.txt b/config/GMPJ01_00/rels/E3setupDLL/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/E3setupDLL/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/E3setupDLL/symbols.txt b/config/GMPJ01_00/rels/E3setupDLL/symbols.txt new file mode 100644 index 00000000..382731fd --- /dev/null +++ b/config/GMPJ01_00/rels/E3setupDLL/symbols.txt @@ -0,0 +1,192 @@ +fn_2_0 = .text:0x00000000; // type:function size:0x324 +fn_2_324 = .text:0x00000324; // type:function size:0x9C +fn_2_3C0 = .text:0x000003C0; // type:function size:0xA0 +fn_2_460 = .text:0x00000460; // type:function size:0x584 +fn_2_9E4 = .text:0x000009E4; // type:function size:0x528 +fn_2_F0C = .text:0x00000F0C; // type:function size:0x80 +fn_2_F8C = .text:0x00000F8C; // type:function size:0x1AC +fn_2_1138 = .text:0x00001138; // type:function size:0x14 +fn_2_114C = .text:0x0000114C; // type:function size:0x1F0 +_prolog = .text:0x0000133C; // type:function size:0x54 scope:global +_epilog = .text:0x00001390; // type:function size:0x4C scope:global +fn_2_13DC = .text:0x000013DC; // type:function size:0x108 +fn_2_14E4 = .text:0x000014E4; // type:function size:0x514 +fn_2_19F8 = .text:0x000019F8; // type:function size:0x1AC +fn_2_1BA4 = .text:0x00001BA4; // type:function size:0x7C +fn_2_1C20 = .text:0x00001C20; // type:function size:0x84 +fn_2_1CA4 = .text:0x00001CA4; // type:function size:0x90 +fn_2_1D34 = .text:0x00001D34; // type:function size:0x24 +fn_2_1D58 = .text:0x00001D58; // type:function size:0xFC +fn_2_1E54 = .text:0x00001E54; // type:function size:0x1C0 +fn_2_2014 = .text:0x00002014; // type:function size:0x78 +fn_2_208C = .text:0x0000208C; // type:function size:0x2C +fn_2_20B8 = .text:0x000020B8; // type:function size:0xA4 +fn_2_215C = .text:0x0000215C; // type:function size:0x400 +fn_2_255C = .text:0x0000255C; // type:function size:0x124 +fn_2_2680 = .text:0x00002680; // type:function size:0x74 +fn_2_26F4 = .text:0x000026F4; // type:function size:0x344 +fn_2_2A38 = .text:0x00002A38; // type:function size:0x59C +fn_2_2FD4 = .text:0x00002FD4; // type:function size:0x208 +fn_2_31DC = .text:0x000031DC; // type:function size:0x37C +fn_2_3558 = .text:0x00003558; // type:function size:0x3B4 +fn_2_390C = .text:0x0000390C; // type:function size:0xAC +fn_2_39B8 = .text:0x000039B8; // type:function size:0x2B8 +fn_2_3C70 = .text:0x00003C70; // type:function size:0x534 +fn_2_41A4 = .text:0x000041A4; // type:function size:0x2DC +fn_2_4480 = .text:0x00004480; // type:function size:0x520 +fn_2_49A0 = .text:0x000049A0; // type:function size:0x59C +fn_2_4F3C = .text:0x00004F3C; // type:function size:0x4E8 +fn_2_5424 = .text:0x00005424; // type:function size:0x100 +fn_2_5524 = .text:0x00005524; // type:function size:0x184 +fn_2_56A8 = .text:0x000056A8; // type:function size:0x7C +fn_2_5724 = .text:0x00005724; // type:function size:0x12C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_2_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_2_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:float +lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_2_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_2_data_24 = .data:0x00000024; // type:object size:0x1A +lbl_2_data_3E = .data:0x0000003E; // type:object size:0x1A +lbl_2_data_58 = .data:0x00000058; // type:object size:0x1C +lbl_2_data_74 = .data:0x00000074; // type:object size:0x34 +lbl_2_data_A8 = .data:0x000000A8; // type:object size:0x21 +lbl_2_data_C9 = .data:0x000000C9; // type:object size:0x16 +lbl_2_data_DF = .data:0x000000DF; // type:object size:0x16 +lbl_2_data_F5 = .data:0x000000F5; // type:object size:0x16 +lbl_2_data_10B = .data:0x0000010B; // type:object size:0xD +lbl_2_data_118 = .data:0x00000118; // type:object size:0x16 +lbl_2_data_12E = .data:0x0000012E; // type:object size:0xD +lbl_2_data_13B = .data:0x0000013B; // type:object size:0x16 +lbl_2_data_151 = .data:0x00000151; // type:object size:0x16 +lbl_2_data_167 = .data:0x00000167; // type:object size:0x16 +lbl_2_data_17D = .data:0x0000017D; // type:object size:0x16 +lbl_2_data_193 = .data:0x00000193; // type:object size:0x16 +lbl_2_data_1A9 = .data:0x000001A9; // type:object size:0x4B +lbl_2_data_1F4 = .data:0x000001F4; // type:object size:0x14 +lbl_2_data_208 = .data:0x00000208; // type:object size:0x34 +lbl_2_data_23C = .data:0x0000023C; // type:object size:0x14 +lbl_2_data_250 = .data:0x00000250; // type:object size:0xC +lbl_2_data_25C = .data:0x0000025C; // type:object size:0xC +lbl_2_data_268 = .data:0x00000268; // type:object size:0x6C +lbl_2_data_2D4 = .data:0x000002D4; // type:object size:0x8 +lbl_2_data_2DC = .data:0x000002DC; // type:object size:0x10 +lbl_2_data_2EC = .data:0x000002EC; // type:object size:0x20 +lbl_2_data_30C = .data:0x0000030C; // type:object size:0x1C +lbl_2_data_328 = .data:0x00000328; // type:object size:0x10 +lbl_2_data_338 = .data:0x00000338; // type:object size:0x40 +lbl_2_data_378 = .data:0x00000378; // type:object size:0x20 +lbl_2_data_398 = .data:0x00000398; // type:object size:0x10 +lbl_2_data_3A8 = .data:0x000003A8; // type:object size:0x20 +lbl_2_data_3C8 = .data:0x000003C8; // type:object size:0x14 +lbl_2_data_3DC = .data:0x000003DC; // type:object size:0x14 +lbl_2_data_3F0 = .data:0x000003F0; // type:object size:0x8 +lbl_2_data_3F8 = .data:0x000003F8; // type:object size:0x10 +lbl_2_data_408 = .data:0x00000408; // type:object size:0x10 +lbl_2_data_418 = .data:0x00000418; // type:object size:0x60 +lbl_2_data_478 = .data:0x00000478; // type:object size:0x24 +lbl_2_data_49C = .data:0x0000049C; // type:object size:0x34 +lbl_2_bss_A = .bss:0x0000000A; // type:object size:0x2 data:2byte +lbl_2_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_2_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_2_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_2_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_2_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_2_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_2_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_2_bss_28 = .bss:0x00000028; // type:object size:0xC data:2byte +lbl_2_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte +lbl_2_bss_36 = .bss:0x00000036; // type:object size:0x2 data:2byte +lbl_2_bss_3A = .bss:0x0000003A; // type:object size:0x2 data:2byte +lbl_2_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_2_bss_40 = .bss:0x00000040; // type:object size:0x2 data:2byte +lbl_2_bss_44 = .bss:0x00000044; // type:object size:0x4 data:float +lbl_2_bss_48 = .bss:0x00000048; // type:object size:0xC data:float +lbl_2_bss_54 = .bss:0x00000054; // type:object size:0xC data:float +lbl_2_bss_60 = .bss:0x00000060; // type:object size:0x2 data:2byte +lbl_2_bss_62 = .bss:0x00000062; // type:object size:0x8 +lbl_2_bss_6A = .bss:0x0000006A; // type:object size:0x6 data:2byte +lbl_2_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_2_bss_74 = .bss:0x00000074; // type:object size:0x18 data:4byte +lbl_2_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_2_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_2_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_2_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_2_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:float +lbl_2_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_2_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_2_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_2_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_2_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_2_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_2_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_2_bss_BC = .bss:0x000000BC; // type:object size:0x2 data:2byte +lbl_2_bss_BE = .bss:0x000000BE; // type:object size:0x2 data:2byte +lbl_2_bss_C0 = .bss:0x000000C0; // type:object size:0x20 +lbl_2_bss_E0 = .bss:0x000000E0; // type:object size:0x18 data:2byte diff --git a/config/GMPJ01_00/rels/bootDll/splits.txt b/config/GMPJ01_00/rels/bootDll/splits.txt new file mode 100644 index 00000000..bc4e958f --- /dev/null +++ b/config/GMPJ01_00/rels/bootDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:32 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/bootDll/symbols.txt b/config/GMPJ01_00/rels/bootDll/symbols.txt new file mode 100644 index 00000000..a27cc9e1 --- /dev/null +++ b/config/GMPJ01_00/rels/bootDll/symbols.txt @@ -0,0 +1,67 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x1CC +fn_1_26C = .text:0x0000026C; // type:function size:0x78C +fn_1_9F8 = .text:0x000009F8; // type:function size:0xC8 +fn_1_AC0 = .text:0x00000AC0; // type:function size:0x6B8 +fn_1_1178 = .text:0x00001178; // type:function size:0x3B4 +fn_1_152C = .text:0x0000152C; // type:function size:0xBD4 +fn_1_2100 = .text:0x00002100; // type:function size:0x374 +fn_1_2474 = .text:0x00002474; // type:function size:0x4D0 +fn_1_2944 = .text:0x00002944; // type:function size:0x84 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 data:string +lbl_1_data_24 = .data:0x00000024; // type:object size:0x14 data:string +lbl_1_data_38 = .data:0x00000038; // type:object size:0x18 data:2byte +lbl_1_data_50 = .data:0x00000050; // type:object size:0x8 +lbl_1_data_58 = .data:0x00000058; // type:object size:0x4 +lbl_1_data_5C = .data:0x0000005C; // type:object size:0x1A data:string +lbl_1_data_76 = .data:0x00000076; // type:object size:0x13 data:string +lbl_1_data_89 = .data:0x00000089; // type:object size:0x17 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x307D +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x6 +lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x6 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0xE data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x18 data:float +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte diff --git a/config/GMPJ01_00/rels/instDll/splits.txt b/config/GMPJ01_00/rels/instDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/instDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/instDll/symbols.txt b/config/GMPJ01_00/rels/instDll/symbols.txt new file mode 100644 index 00000000..1013d7c3 --- /dev/null +++ b/config/GMPJ01_00/rels/instDll/symbols.txt @@ -0,0 +1,149 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x8F4 +fn_1_994 = .text:0x00000994; // type:function size:0xE50 +fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28 +fn_1_220C = .text:0x0000220C; // type:function size:0x5F8 +fn_1_2804 = .text:0x00002804; // type:function size:0x79C +fn_1_2FA0 = .text:0x00002FA0; // type:function size:0x11D4 +fn_1_4174 = .text:0x00004174; // type:function size:0x3B4 +fn_1_4528 = .text:0x00004528; // type:function size:0xB88 +fn_1_50B0 = .text:0x000050B0; // type:function size:0xAB4 +fn_1_5B64 = .text:0x00005B64; // type:function size:0x340 +fn_1_5EA4 = .text:0x00005EA4; // type:function size:0x47C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte +lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 data:string +lbl_1_data_26 = .data:0x00000026; // type:object size:0x20 +lbl_1_data_46 = .data:0x00000046; // type:object size:0xA +lbl_1_data_50 = .data:0x00000050; // type:object size:0x20 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x20 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 data:string +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 data:string +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4 +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x48 +lbl_1_data_10C = .data:0x0000010C; // type:object size:0x18 +lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 data:float +lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 data:float +lbl_1_data_150 = .data:0x00000150; // type:object size:0x4C8 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x18 data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x18 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x8 data:4byte diff --git a/config/GMPJ01_00/rels/m300Dll/splits.txt b/config/GMPJ01_00/rels/m300Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPJ01_00/rels/m300Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPJ01_00/rels/m300Dll/symbols.txt b/config/GMPJ01_00/rels/m300Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPJ01_00/rels/m300Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPJ01_00/rels/m302Dll/splits.txt b/config/GMPJ01_00/rels/m302Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPJ01_00/rels/m302Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPJ01_00/rels/m302Dll/symbols.txt b/config/GMPJ01_00/rels/m302Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPJ01_00/rels/m302Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPJ01_00/rels/m303Dll/splits.txt b/config/GMPJ01_00/rels/m303Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPJ01_00/rels/m303Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPJ01_00/rels/m303Dll/symbols.txt b/config/GMPJ01_00/rels/m303Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPJ01_00/rels/m303Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPJ01_00/rels/m330Dll/splits.txt b/config/GMPJ01_00/rels/m330Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPJ01_00/rels/m330Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPJ01_00/rels/m330Dll/symbols.txt b/config/GMPJ01_00/rels/m330Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPJ01_00/rels/m330Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPJ01_00/rels/m333Dll/splits.txt b/config/GMPJ01_00/rels/m333Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPJ01_00/rels/m333Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPJ01_00/rels/m333Dll/symbols.txt b/config/GMPJ01_00/rels/m333Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPJ01_00/rels/m333Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPJ01_00/rels/m413Dll/splits.txt b/config/GMPJ01_00/rels/m413Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m413Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m413Dll/symbols.txt b/config/GMPJ01_00/rels/m413Dll/symbols.txt new file mode 100644 index 00000000..019fba8d --- /dev/null +++ b/config/GMPJ01_00/rels/m413Dll/symbols.txt @@ -0,0 +1,210 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x2EC +fn_1_38C = .text:0x0000038C; // type:function size:0x134 +fn_1_4C0 = .text:0x000004C0; // type:function size:0xBC +fn_1_57C = .text:0x0000057C; // type:function size:0x154 +fn_1_6D0 = .text:0x000006D0; // type:function size:0x128 +fn_1_7F8 = .text:0x000007F8; // type:function size:0x6C8 +fn_1_EC0 = .text:0x00000EC0; // type:function size:0x1F8 +fn_1_10B8 = .text:0x000010B8; // type:function size:0x90C +fn_1_19C4 = .text:0x000019C4; // type:function size:0x4 +fn_1_19C8 = .text:0x000019C8; // type:function size:0x38DC +fn_1_52A4 = .text:0x000052A4; // type:function size:0x3824 +fn_1_8AC8 = .text:0x00008AC8; // type:function size:0x148 +fn_1_8C10 = .text:0x00008C10; // type:function size:0x192C +fn_1_A53C = .text:0x0000A53C; // type:function size:0x1188 +fn_1_B6C4 = .text:0x0000B6C4; // type:function size:0x101C +fn_1_C6E0 = .text:0x0000C6E0; // type:function size:0x4D4 +fn_1_CBB4 = .text:0x0000CBB4; // type:function size:0x78C +fn_1_D340 = .text:0x0000D340; // type:function size:0x60 +fn_1_D3A0 = .text:0x0000D3A0; // type:function size:0x360 +fn_1_D700 = .text:0x0000D700; // type:function size:0x64 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xCC +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:4byte +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x19 data:byte +lbl_1_rodata_201 = .rodata:0x00000201; // type:object size:0x1F data:byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC data:4byte +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x30 data:4byte +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x10 data:4byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x10 data:4byte +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0xC data:4byte +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0xC data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 data:4byte +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:4byte +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x428 +lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0xC data:4byte +lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0xC data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0x4 data:float +lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 data:float +lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x8 data:double +lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x8 data:double +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x8 data:double +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x8 data:double +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_rodata_7AC = .rodata:0x000007AC; // type:object size:0x10 data:4byte +lbl_1_rodata_7BC = .rodata:0x000007BC; // type:object size:0x14 data:4byte +lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x60 +lbl_1_rodata_830 = .rodata:0x00000830; // type:object size:0x8 data:double +lbl_1_rodata_838 = .rodata:0x00000838; // type:object size:0x8 data:double +lbl_1_rodata_840 = .rodata:0x00000840; // type:object size:0x4 data:float +lbl_1_rodata_848 = .rodata:0x00000848; // type:object size:0x8 data:double +lbl_1_rodata_850 = .rodata:0x00000850; // type:object size:0x4 data:float +lbl_1_rodata_858 = .rodata:0x00000858; // type:object size:0x8 data:double +lbl_1_rodata_860 = .rodata:0x00000860; // type:object size:0x8 data:double +lbl_1_rodata_868 = .rodata:0x00000868; // type:object size:0x8 data:double +lbl_1_rodata_870 = .rodata:0x00000870; // type:object size:0x8 data:double +lbl_1_rodata_878 = .rodata:0x00000878; // type:object size:0x4 data:float +lbl_1_rodata_87C = .rodata:0x0000087C; // type:object size:0x4 data:float +lbl_1_rodata_880 = .rodata:0x00000880; // type:object size:0x4 data:float +lbl_1_rodata_884 = .rodata:0x00000884; // type:object size:0x4 data:float +lbl_1_rodata_888 = .rodata:0x00000888; // type:object size:0x4 data:float +lbl_1_rodata_88C = .rodata:0x0000088C; // type:object size:0x1C data:4byte +lbl_1_rodata_8A8 = .rodata:0x000008A8; // type:object size:0x8 data:double +lbl_1_rodata_8B0 = .rodata:0x000008B0; // type:object size:0x4 data:float +lbl_1_rodata_8B4 = .rodata:0x000008B4; // type:object size:0x4 data:float +lbl_1_rodata_8B8 = .rodata:0x000008B8; // type:object size:0x4 data:float +lbl_1_rodata_8BC = .rodata:0x000008BC; // type:object size:0x4 data:float +lbl_1_rodata_8C0 = .rodata:0x000008C0; // type:object size:0x8 data:double +lbl_1_rodata_8C8 = .rodata:0x000008C8; // type:object size:0x4 data:float +lbl_1_rodata_8D0 = .rodata:0x000008D0; // type:object size:0x8 data:double +lbl_1_rodata_8D8 = .rodata:0x000008D8; // type:object size:0x4 data:float +lbl_1_rodata_8DC = .rodata:0x000008DC; // type:object size:0x4 data:float +lbl_1_rodata_8E0 = .rodata:0x000008E0; // type:object size:0x4 data:float +lbl_1_rodata_8E4 = .rodata:0x000008E4; // type:object size:0x4 data:float +lbl_1_rodata_8E8 = .rodata:0x000008E8; // type:object size:0x4 data:float +lbl_1_rodata_8EC = .rodata:0x000008EC; // type:object size:0x4 data:float +lbl_1_rodata_8F0 = .rodata:0x000008F0; // type:object size:0x4 data:float +lbl_1_rodata_8F4 = .rodata:0x000008F4; // type:object size:0x4 data:float +lbl_1_rodata_8F8 = .rodata:0x000008F8; // type:object size:0x8 data:double +lbl_1_rodata_900 = .rodata:0x00000900; // type:object size:0x8 data:double +lbl_1_rodata_908 = .rodata:0x00000908; // type:object size:0x4 data:float +lbl_1_rodata_90C = .rodata:0x0000090C; // type:object size:0x4 data:float +lbl_1_rodata_910 = .rodata:0x00000910; // type:object size:0x4 data:float +lbl_1_rodata_914 = .rodata:0x00000914; // type:object size:0xC data:byte +lbl_1_rodata_920 = .rodata:0x00000920; // type:object size:0x18 data:4byte +lbl_1_rodata_938 = .rodata:0x00000938; // type:object size:0x8 data:byte +lbl_1_rodata_940 = .rodata:0x00000940; // type:object size:0x10 data:4byte +lbl_1_rodata_950 = .rodata:0x00000950; // type:object size:0x1 data:byte +lbl_1_rodata_954 = .rodata:0x00000954; // type:object size:0x10 data:4byte +lbl_1_rodata_964 = .rodata:0x00000964; // type:object size:0x14 data:4byte +lbl_1_rodata_978 = .rodata:0x00000978; // type:object size:0x8 data:double +lbl_1_rodata_980 = .rodata:0x00000980; // type:object size:0x4 data:float +lbl_1_rodata_984 = .rodata:0x00000984; // type:object size:0x4 data:float +lbl_1_rodata_988 = .rodata:0x00000988; // type:object size:0x4 data:float +lbl_1_rodata_98C = .rodata:0x0000098C; // type:object size:0x4 data:float +lbl_1_rodata_990 = .rodata:0x00000990; // type:object size:0x8 data:double +lbl_1_rodata_998 = .rodata:0x00000998; // type:object size:0x4 data:float +lbl_1_rodata_99C = .rodata:0x0000099C; // type:object size:0x4 data:float +lbl_1_rodata_9A0 = .rodata:0x000009A0; // type:object size:0x8 data:double +lbl_1_rodata_9A8 = .rodata:0x000009A8; // type:object size:0x8 data:double +lbl_1_rodata_9B0 = .rodata:0x000009B0; // type:object size:0x10 data:4byte +lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 data:float +lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 data:float +lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 data:float +lbl_1_rodata_9CC = .rodata:0x000009CC; // type:object size:0xC data:4byte +lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0xC data:4byte +lbl_1_rodata_9E4 = .rodata:0x000009E4; // type:object size:0xC data:4byte +lbl_1_rodata_9F0 = .rodata:0x000009F0; // type:object size:0xC data:4byte +lbl_1_rodata_9FC = .rodata:0x000009FC; // type:object size:0xC data:4byte +lbl_1_rodata_A08 = .rodata:0x00000A08; // type:object size:0xC data:4byte +lbl_1_rodata_A14 = .rodata:0x00000A14; // type:object size:0xC data:4byte +lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x1 data:byte +lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 data:float +lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 data:float +lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 data:float +lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 data:float +lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4 data:4byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0x8 data:4byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x2C data:4byte +lbl_1_data_38 = .data:0x00000038; // type:object size:0x9 data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x19 data:string +lbl_1_data_5A = .data:0x0000005A; // type:object size:0x1B data:string +lbl_1_data_75 = .data:0x00000075; // type:object size:0x10 data:string +lbl_1_data_85 = .data:0x00000085; // type:object size:0x10 data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0x10 data:string +lbl_1_data_A5 = .data:0x000000A5; // type:object size:0x10 data:string +lbl_1_data_B5 = .data:0x000000B5; // type:object size:0x11 data:string +lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x11 data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x12 data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x12 data:string +lbl_1_data_FB = .data:0x000000FB; // type:object size:0x12 data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0xF data:string +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x8 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x70 +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x18 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x28 +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x2580 +lbl_1_bss_2680 = .bss:0x00002680; // type:object size:0x4 data:4byte +lbl_1_bss_2684 = .bss:0x00002684; // type:object size:0x3E8 +lbl_1_bss_2A6C = .bss:0x00002A6C; // type:object size:0x4E18 +lbl_1_bss_7884 = .bss:0x00007884; // type:object size:0x30 diff --git a/config/GMPJ01_00/rels/m418Dll/splits.txt b/config/GMPJ01_00/rels/m418Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m418Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m418Dll/symbols.txt b/config/GMPJ01_00/rels/m418Dll/symbols.txt new file mode 100644 index 00000000..f4b66ec8 --- /dev/null +++ b/config/GMPJ01_00/rels/m418Dll/symbols.txt @@ -0,0 +1,303 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x74 +fn_1_74 = .text:0x00000074; // type:function size:0xE4 +fn_1_158 = .text:0x00000158; // type:function size:0x28 +fn_1_180 = .text:0x00000180; // type:function size:0xC8 +fn_1_248 = .text:0x00000248; // type:function size:0x20 +fn_1_268 = .text:0x00000268; // type:function size:0x298 +fn_1_500 = .text:0x00000500; // type:function size:0x118 +fn_1_618 = .text:0x00000618; // type:function size:0xC4 +fn_1_6DC = .text:0x000006DC; // type:function size:0x38 +fn_1_714 = .text:0x00000714; // type:function size:0x34 +fn_1_748 = .text:0x00000748; // type:function size:0x38 +fn_1_780 = .text:0x00000780; // type:function size:0x1D0 +fn_1_950 = .text:0x00000950; // type:function size:0x48 +fn_1_998 = .text:0x00000998; // type:function size:0x110 +fn_1_AA8 = .text:0x00000AA8; // type:function size:0xA4 +fn_1_B4C = .text:0x00000B4C; // type:function size:0x328 +fn_1_E74 = .text:0x00000E74; // type:function size:0x67C +fn_1_14F0 = .text:0x000014F0; // type:function size:0x3BC +fn_1_18AC = .text:0x000018AC; // type:function size:0x50 +fn_1_18FC = .text:0x000018FC; // type:function size:0x7B4 +fn_1_20B0 = .text:0x000020B0; // type:function size:0xC8 +fn_1_2178 = .text:0x00002178; // type:function size:0x71C +fn_1_2894 = .text:0x00002894; // type:function size:0x10C +fn_1_29A0 = .text:0x000029A0; // type:function size:0x224 +fn_1_2BC4 = .text:0x00002BC4; // type:function size:0x48 +fn_1_2C0C = .text:0x00002C0C; // type:function size:0x448 +fn_1_3054 = .text:0x00003054; // type:function size:0xE4 +fn_1_3138 = .text:0x00003138; // type:function size:0x108 +fn_1_3240 = .text:0x00003240; // type:function size:0x1C8 +fn_1_3408 = .text:0x00003408; // type:function size:0x3C +fn_1_3444 = .text:0x00003444; // type:function size:0xA6C +fn_1_3EB0 = .text:0x00003EB0; // type:function size:0x814 +fn_1_46C4 = .text:0x000046C4; // type:function size:0x5C0 +fn_1_4C84 = .text:0x00004C84; // type:function size:0x2DC +fn_1_4F60 = .text:0x00004F60; // type:function size:0x3F8 +fn_1_5358 = .text:0x00005358; // type:function size:0xE4 +fn_1_543C = .text:0x0000543C; // type:function size:0x150 +fn_1_558C = .text:0x0000558C; // type:function size:0x120 +fn_1_56AC = .text:0x000056AC; // type:function size:0xBC +fn_1_5768 = .text:0x00005768; // type:function size:0x7C +fn_1_57E4 = .text:0x000057E4; // type:function size:0x18C +fn_1_5970 = .text:0x00005970; // type:function size:0xFC +fn_1_5A6C = .text:0x00005A6C; // type:function size:0x2BC +fn_1_5D28 = .text:0x00005D28; // type:function size:0x30 +fn_1_5D58 = .text:0x00005D58; // type:function size:0x98 +fn_1_5DF0 = .text:0x00005DF0; // type:function size:0x248 +fn_1_6038 = .text:0x00006038; // type:function size:0x2DC +fn_1_6314 = .text:0x00006314; // type:function size:0xE4 +fn_1_63F8 = .text:0x000063F8; // type:function size:0x118 +fn_1_6510 = .text:0x00006510; // type:function size:0x108 +fn_1_6618 = .text:0x00006618; // type:function size:0x128 +fn_1_6740 = .text:0x00006740; // type:function size:0xC8 +fn_1_6808 = .text:0x00006808; // type:function size:0x10C +fn_1_6914 = .text:0x00006914; // type:function size:0x4B8 +fn_1_6DCC = .text:0x00006DCC; // type:function size:0xA0 +fn_1_6E6C = .text:0x00006E6C; // type:function size:0x48 +fn_1_6EB4 = .text:0x00006EB4; // type:function size:0x84 +fn_1_6F38 = .text:0x00006F38; // type:function size:0x35C +fn_1_7294 = .text:0x00007294; // type:function size:0x4 +fn_1_7298 = .text:0x00007298; // type:function size:0x2D8 +fn_1_7570 = .text:0x00007570; // type:function size:0x74 +fn_1_75E4 = .text:0x000075E4; // type:function size:0x214 +fn_1_77F8 = .text:0x000077F8; // type:function size:0x68 +fn_1_7860 = .text:0x00007860; // type:function size:0x208 +fn_1_7A68 = .text:0x00007A68; // type:function size:0x100 +fn_1_7B68 = .text:0x00007B68; // type:function size:0x218 +fn_1_7D80 = .text:0x00007D80; // type:function size:0xA4 +fn_1_7E24 = .text:0x00007E24; // type:function size:0xF8 +fn_1_7F1C = .text:0x00007F1C; // type:function size:0xB8 +fn_1_7FD4 = .text:0x00007FD4; // type:function size:0x1CC +fn_1_81A0 = .text:0x000081A0; // type:function size:0x4 +fn_1_81A4 = .text:0x000081A4; // type:function size:0x2DC +fn_1_8480 = .text:0x00008480; // type:function size:0x30 +fn_1_84B0 = .text:0x000084B0; // type:function size:0x98 +fn_1_8548 = .text:0x00008548; // type:function size:0x120 +fn_1_8668 = .text:0x00008668; // type:function size:0xC0 +fn_1_8728 = .text:0x00008728; // type:function size:0xA8 +fn_1_87D0 = .text:0x000087D0; // type:function size:0xBC +fn_1_888C = .text:0x0000888C; // type:function size:0x28 +fn_1_88B4 = .text:0x000088B4; // type:function size:0xFC +fn_1_89B0 = .text:0x000089B0; // type:function size:0x164 +fn_1_8B14 = .text:0x00008B14; // type:function size:0x170 +fn_1_8C84 = .text:0x00008C84; // type:function size:0xEC +fn_1_8D70 = .text:0x00008D70; // type:function size:0x204 +fn_1_8F74 = .text:0x00008F74; // type:function size:0x120 +fn_1_9094 = .text:0x00009094; // type:function size:0x48 +fn_1_90DC = .text:0x000090DC; // type:function size:0x64 +fn_1_9140 = .text:0x00009140; // type:function size:0xA4 +fn_1_91E4 = .text:0x000091E4; // type:function size:0x108 +fn_1_92EC = .text:0x000092EC; // type:function size:0x48 +fn_1_9334 = .text:0x00009334; // type:function size:0x30 +fn_1_9364 = .text:0x00009364; // type:function size:0x98 +fn_1_93FC = .text:0x000093FC; // type:function size:0x130 +fn_1_952C = .text:0x0000952C; // type:function size:0x60 +fn_1_958C = .text:0x0000958C; // type:function size:0x618 +fn_1_9BA4 = .text:0x00009BA4; // type:function size:0x3F0 +fn_1_9F94 = .text:0x00009F94; // type:function size:0x1BC +_prolog = .text:0x0000A150; // type:function size:0x54 scope:global +_epilog = .text:0x0000A1A4; // type:function size:0x4C scope:global +fn_1_A1F0 = .text:0x0000A1F0; // type:function size:0x398 +fn_1_A588 = .text:0x0000A588; // type:function size:0x398 +fn_1_A920 = .text:0x0000A920; // type:function size:0x20 +fn_1_A940 = .text:0x0000A940; // type:function size:0x28 +fn_1_A968 = .text:0x0000A968; // type:function size:0xC8 +fn_1_AA30 = .text:0x0000AA30; // type:function size:0xBC +fn_1_AAEC = .text:0x0000AAEC; // type:function size:0xD8 +fn_1_ABC4 = .text:0x0000ABC4; // type:function size:0x150 +fn_1_AD14 = .text:0x0000AD14; // type:function size:0x178 +fn_1_AE8C = .text:0x0000AE8C; // type:function size:0x50 +fn_1_AEDC = .text:0x0000AEDC; // type:function size:0x5C +fn_1_AF38 = .text:0x0000AF38; // type:function size:0x88 +fn_1_AFC0 = .text:0x0000AFC0; // type:function size:0x74 +fn_1_B034 = .text:0x0000B034; // type:function size:0x94 +fn_1_B0C8 = .text:0x0000B0C8; // type:function size:0x3C +fn_1_B104 = .text:0x0000B104; // type:function size:0x318 +fn_1_B41C = .text:0x0000B41C; // type:function size:0x3C +fn_1_B458 = .text:0x0000B458; // type:function size:0x4C +fn_1_B4A4 = .text:0x0000B4A4; // type:function size:0x26C +fn_1_B710 = .text:0x0000B710; // type:function size:0x26C +fn_1_B97C = .text:0x0000B97C; // type:function size:0x27C +fn_1_BBF8 = .text:0x0000BBF8; // type:function size:0x2B4 +fn_1_BEAC = .text:0x0000BEAC; // type:function size:0x46C +fn_1_C318 = .text:0x0000C318; // type:function size:0x454 +fn_1_C76C = .text:0x0000C76C; // type:function size:0x48C +fn_1_CBF8 = .text:0x0000CBF8; // type:function size:0x658 +fn_1_D250 = .text:0x0000D250; // type:function size:0x4C4 +fn_1_D714 = .text:0x0000D714; // type:function size:0x4FC +fn_1_DC10 = .text:0x0000DC10; // type:function size:0x6C8 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0xC data:4byte +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0xC data:4byte +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0xC data:4byte +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC data:4byte +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0xC data:4byte +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0xC data:4byte +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x10 data:4byte +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:4byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC data:4byte +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0xC data:4byte +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0xC data:4byte +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0xC data:4byte +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC data:4byte +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0xC data:4byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0xC data:4byte +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0xC data:4byte +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0xC data:4byte +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0xC data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 data:4byte +lbl_1_data_8 = .data:0x00000008; // type:object size:0x4 data:4byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x12 scope:local data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x13 scope:local data:string +lbl_1_data_31 = .data:0x00000031; // type:object size:0x10 scope:local data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x10 scope:local data:string +lbl_1_data_51 = .data:0x00000051; // type:object size:0x10 scope:local data:string +lbl_1_data_61 = .data:0x00000061; // type:object size:0x10 scope:local data:string +lbl_1_data_71 = .data:0x00000071; // type:object size:0xD scope:local data:string +lbl_1_data_7E = .data:0x0000007E; // type:object size:0xE scope:local data:string +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x6C data:4byte +jumptable_1_data_F8 = .data:0x000000F8; // type:object size:0x88 scope:local +lbl_1_data_180 = .data:0x00000180; // type:object size:0x12 scope:local data:string +lbl_1_data_192 = .data:0x00000192; // type:object size:0x15 scope:local data:string +lbl_1_data_1A7 = .data:0x000001A7; // type:object size:0x19 scope:local data:string +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x20 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x60 +lbl_1_data_240 = .data:0x00000240; // type:object size:0x24 +lbl_1_data_264 = .data:0x00000264; // type:object size:0x30 +lbl_1_data_294 = .data:0x00000294; // type:object size:0x24 +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x60 +lbl_1_data_318 = .data:0x00000318; // type:object size:0x30 +lbl_1_data_348 = .data:0x00000348; // type:object size:0x84 +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x30 +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x48 +lbl_1_data_444 = .data:0x00000444; // type:object size:0x60 +jumptable_1_data_4A4 = .data:0x000004A4; // type:object size:0x28 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x18 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x18 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x18 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0xB4 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x54 data:4byte +lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x70 +lbl_1_bss_1E0 = .bss:0x000001E0; // type:object size:0x14 data:4byte +lbl_1_bss_1F4 = .bss:0x000001F4; // type:object size:0x4C data:4byte +lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x2C data:4byte +lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x180 +lbl_1_bss_3EC = .bss:0x000003EC; // type:object size:0x44 data:4byte diff --git a/config/GMPJ01_00/rels/m419Dll/splits.txt b/config/GMPJ01_00/rels/m419Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m419Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m419Dll/symbols.txt b/config/GMPJ01_00/rels/m419Dll/symbols.txt new file mode 100644 index 00000000..7b1b3da9 --- /dev/null +++ b/config/GMPJ01_00/rels/m419Dll/symbols.txt @@ -0,0 +1,184 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x400 +fn_1_4A0 = .text:0x000004A0; // type:function size:0xDC +fn_1_57C = .text:0x0000057C; // type:function size:0x2CC +fn_1_848 = .text:0x00000848; // type:function size:0x288 +fn_1_AD0 = .text:0x00000AD0; // type:function size:0x488 +fn_1_F58 = .text:0x00000F58; // type:function size:0x102C +fn_1_1F84 = .text:0x00001F84; // type:function size:0x128 +fn_1_20AC = .text:0x000020AC; // type:function size:0x128 +fn_1_21D4 = .text:0x000021D4; // type:function size:0x80 +fn_1_2254 = .text:0x00002254; // type:function size:0x4F0 +fn_1_2744 = .text:0x00002744; // type:function size:0x498 +fn_1_2BDC = .text:0x00002BDC; // type:function size:0x220 +fn_1_2DFC = .text:0x00002DFC; // type:function size:0x4FC +fn_1_32F8 = .text:0x000032F8; // type:function size:0x154 +fn_1_344C = .text:0x0000344C; // type:function size:0x1398 +fn_1_47E4 = .text:0x000047E4; // type:function size:0x33C +fn_1_4B20 = .text:0x00004B20; // type:function size:0x334 +fn_1_4E54 = .text:0x00004E54; // type:function size:0xB8 +fn_1_4F0C = .text:0x00004F0C; // type:function size:0xC0 +fn_1_4FCC = .text:0x00004FCC; // type:function size:0x6C +fn_1_5038 = .text:0x00005038; // type:function size:0x6C +fn_1_50A4 = .text:0x000050A4; // type:function size:0x244 +fn_1_52E8 = .text:0x000052E8; // type:function size:0x570 +fn_1_5858 = .text:0x00005858; // type:function size:0x104 +fn_1_595C = .text:0x0000595C; // type:function size:0x17C +fn_1_5AD8 = .text:0x00005AD8; // type:function size:0x45C +fn_1_5F34 = .text:0x00005F34; // type:function size:0x358 +fn_1_628C = .text:0x0000628C; // type:function size:0x334 +fn_1_65C0 = .text:0x000065C0; // type:function size:0x1E0 +fn_1_67A0 = .text:0x000067A0; // type:function size:0x564 +fn_1_6D04 = .text:0x00006D04; // type:function size:0x198 +fn_1_6E9C = .text:0x00006E9C; // type:function size:0xA18 +fn_1_78B4 = .text:0x000078B4; // type:function size:0x223C +fn_1_9AF0 = .text:0x00009AF0; // type:function size:0x130C +fn_1_ADFC = .text:0x0000ADFC; // type:function size:0x258 +fn_1_B054 = .text:0x0000B054; // type:function size:0x2E78 +fn_1_DECC = .text:0x0000DECC; // type:function size:0x70 +fn_1_DF3C = .text:0x0000DF3C; // type:function size:0x5C +fn_1_DF98 = .text:0x0000DF98; // type:function size:0x17A4 +fn_1_F73C = .text:0x0000F73C; // type:function size:0x280 +fn_1_F9BC = .text:0x0000F9BC; // type:function size:0x89C +fn_1_10258 = .text:0x00010258; // type:function size:0x248 +fn_1_104A0 = .text:0x000104A0; // type:function size:0x60 +fn_1_10500 = .text:0x00010500; // type:function size:0x3E0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x2C +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x10 +lbl_1_data_5C = .data:0x0000005C; // type:object size:0x60 +lbl_1_data_BC = .data:0x000000BC; // type:object size:0xB data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x60 +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x1 data:byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x20 +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x20 +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0xC data:float +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0xC data:float +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0xC data:float +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0xB8 data:4byte +lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x10 +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x58 data:2byte +lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x18 data:2byte +lbl_1_bss_200 = .bss:0x00000200; // type:object size:0x380 +lbl_1_bss_580 = .bss:0x00000580; // type:object size:0x4 data:4byte +lbl_1_bss_584 = .bss:0x00000584; // type:object size:0x10 data:4byte +lbl_1_bss_594 = .bss:0x00000594; // type:object size:0x10 +lbl_1_bss_5A4 = .bss:0x000005A4; // type:object size:0x4 data:4byte +lbl_1_bss_5A8 = .bss:0x000005A8; // type:object size:0x4 data:4byte +lbl_1_bss_5AC = .bss:0x000005AC; // type:object size:0x4 data:4byte +lbl_1_bss_5B0 = .bss:0x000005B0; // type:object size:0x4 data:4byte +lbl_1_bss_5B4 = .bss:0x000005B4; // type:object size:0x4 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x2 data:2byte +lbl_1_bss_5BA = .bss:0x000005BA; // type:object size:0x2 data:2byte +lbl_1_bss_5BC = .bss:0x000005BC; // type:object size:0x2 data:2byte +lbl_1_bss_5BE = .bss:0x000005BE; // type:object size:0x2 data:2byte +lbl_1_bss_5C2 = .bss:0x000005C2; // type:object size:0x2 data:2byte diff --git a/config/GMPJ01_00/rels/m422Dll/splits.txt b/config/GMPJ01_00/rels/m422Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m422Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m422Dll/symbols.txt b/config/GMPJ01_00/rels/m422Dll/symbols.txt new file mode 100644 index 00000000..804db144 --- /dev/null +++ b/config/GMPJ01_00/rels/m422Dll/symbols.txt @@ -0,0 +1,249 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x25C +fn_1_2FC = .text:0x000002FC; // type:function size:0x31C0 +fn_1_34BC = .text:0x000034BC; // type:function size:0x6B8 +fn_1_3B74 = .text:0x00003B74; // type:function size:0x4E6C +fn_1_89E0 = .text:0x000089E0; // type:function size:0xA30 +fn_1_9410 = .text:0x00009410; // type:function size:0x4F0 +fn_1_9900 = .text:0x00009900; // type:function size:0x134C +fn_1_AC4C = .text:0x0000AC4C; // type:function size:0x3B8 +fn_1_B004 = .text:0x0000B004; // type:function size:0x54 +fn_1_B058 = .text:0x0000B058; // type:function size:0x428 +fn_1_B480 = .text:0x0000B480; // type:function size:0xAC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x30 +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x30 +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x30 +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x30 +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x30 +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x30 +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x1C data:4byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x1C data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0xC data:4byte +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC data:4byte +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0xC data:4byte +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0xC data:4byte +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x20 data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x60 +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:4byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x60 +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x30 data:4byte +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x34 data:4byte +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 data:double +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x8 data:double +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 data:double +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 data:double +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 data:double +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float +lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x2C data:4byte +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 data:double +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 data:double +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x28 data:4byte +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x20 data:4byte +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:4byte +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:4byte +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:4byte +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x40 data:4byte +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x40 data:4byte +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x4 data:float +lbl_1_rodata_74C = .rodata:0x0000074C; // type:object size:0x4 data:float +lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 data:float +lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 data:float +lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 data:float +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x8 data:double +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 data:float +lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x10 data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0xC data:4byte +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0xC data:4byte +lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x1 data:byte +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 data:float +lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 data:float +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 data:float +lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 data:float +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x40 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x20 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x20 +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x7 +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x9 +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x1680 data:float +lbl_1_data_1770 = .data:0x00001770; // type:object size:0xF data:string +lbl_1_data_177F = .data:0x0000177F; // type:object size:0x10 data:string +lbl_1_data_178F = .data:0x0000178F; // type:object size:0x10 data:string +lbl_1_data_179F = .data:0x0000179F; // type:object size:0xF data:string +lbl_1_data_17AE = .data:0x000017AE; // type:object size:0x10 data:string +lbl_1_data_17BE = .data:0x000017BE; // type:object size:0x10 data:string +lbl_1_data_17CE = .data:0x000017CE; // type:object size:0xF data:string +lbl_1_data_17DD = .data:0x000017DD; // type:object size:0x11 data:string +lbl_1_data_17EE = .data:0x000017EE; // type:object size:0x11 data:string +lbl_1_data_17FF = .data:0x000017FF; // type:object size:0x12 data:string +lbl_1_data_1811 = .data:0x00001811; // type:object size:0x5 data:string +lbl_1_data_1816 = .data:0x00001816; // type:object size:0x12 +lbl_1_data_1828 = .data:0x00001828; // type:object size:0x50 +lbl_1_data_1878 = .data:0x00001878; // type:object size:0x2C +lbl_1_data_18A4 = .data:0x000018A4; // type:object size:0x8 data:4byte +lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x4 data:4byte +lbl_1_data_18B0 = .data:0x000018B0; // type:object size:0x4 data:4byte +lbl_1_data_18B4 = .data:0x000018B4; // type:object size:0x40 +lbl_1_data_18F4 = .data:0x000018F4; // type:object size:0xC data:4byte +lbl_1_data_1900 = .data:0x00001900; // type:object size:0x4 data:4byte +lbl_1_data_1904 = .data:0x00001904; // type:object size:0x1B data:string +lbl_1_data_191F = .data:0x0000191F; // type:object size:0x19 data:string +lbl_1_data_1938 = .data:0x00001938; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x8 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x10 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0xB0 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0xC0 diff --git a/config/GMPJ01_00/rels/m423Dll/splits.txt b/config/GMPJ01_00/rels/m423Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m423Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m423Dll/symbols.txt b/config/GMPJ01_00/rels/m423Dll/symbols.txt new file mode 100644 index 00000000..5450a16f --- /dev/null +++ b/config/GMPJ01_00/rels/m423Dll/symbols.txt @@ -0,0 +1,367 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x278 +fn_1_318 = .text:0x00000318; // type:function size:0x98 +fn_1_3B0 = .text:0x000003B0; // type:function size:0xA4C +fn_1_DFC = .text:0x00000DFC; // type:function size:0x64 +fn_1_E60 = .text:0x00000E60; // type:function size:0xA0 +fn_1_F00 = .text:0x00000F00; // type:function size:0x10 +fn_1_F10 = .text:0x00000F10; // type:function size:0x50 +fn_1_F60 = .text:0x00000F60; // type:function size:0x244 +fn_1_11A4 = .text:0x000011A4; // type:function size:0x34 +fn_1_11D8 = .text:0x000011D8; // type:function size:0x60 +fn_1_1238 = .text:0x00001238; // type:function size:0x68 +fn_1_12A0 = .text:0x000012A0; // type:function size:0x100 +fn_1_13A0 = .text:0x000013A0; // type:function size:0xA4 +fn_1_1444 = .text:0x00001444; // type:function size:0x5C +fn_1_14A0 = .text:0x000014A0; // type:function size:0x45C +fn_1_18FC = .text:0x000018FC; // type:function size:0x260 +fn_1_1B5C = .text:0x00001B5C; // type:function size:0x400 +fn_1_1F5C = .text:0x00001F5C; // type:function size:0x334 +fn_1_2290 = .text:0x00002290; // type:function size:0x394 +fn_1_2624 = .text:0x00002624; // type:function size:0x394 +fn_1_29B8 = .text:0x000029B8; // type:function size:0x4 +fn_1_29BC = .text:0x000029BC; // type:function size:0x24C +fn_1_2C08 = .text:0x00002C08; // type:function size:0x8D0 +fn_1_34D8 = .text:0x000034D8; // type:function size:0x50 +fn_1_3528 = .text:0x00003528; // type:function size:0x370 +fn_1_3898 = .text:0x00003898; // type:function size:0x1C0 +fn_1_3A58 = .text:0x00003A58; // type:function size:0xC +fn_1_3A64 = .text:0x00003A64; // type:function size:0x28 +fn_1_3A8C = .text:0x00003A8C; // type:function size:0x170 +fn_1_3BFC = .text:0x00003BFC; // type:function size:0x3E4 +fn_1_3FE0 = .text:0x00003FE0; // type:function size:0x798 +fn_1_4778 = .text:0x00004778; // type:function size:0x15A0 +fn_1_5D18 = .text:0x00005D18; // type:function size:0x1AAC +fn_1_77C4 = .text:0x000077C4; // type:function size:0xC +fn_1_77D0 = .text:0x000077D0; // type:function size:0x4C +fn_1_781C = .text:0x0000781C; // type:function size:0x100 +fn_1_791C = .text:0x0000791C; // type:function size:0x18C +fn_1_7AA8 = .text:0x00007AA8; // type:function size:0xA0 +fn_1_7B48 = .text:0x00007B48; // type:function size:0x780 +fn_1_82C8 = .text:0x000082C8; // type:function size:0x70 +fn_1_8338 = .text:0x00008338; // type:function size:0x97C +fn_1_8CB4 = .text:0x00008CB4; // type:function size:0x910 +fn_1_95C4 = .text:0x000095C4; // type:function size:0x50 +fn_1_9614 = .text:0x00009614; // type:function size:0x28C +fn_1_98A0 = .text:0x000098A0; // type:function size:0x1100 +fn_1_A9A0 = .text:0x0000A9A0; // type:function size:0xC +fn_1_A9AC = .text:0x0000A9AC; // type:function size:0x28 +fn_1_A9D4 = .text:0x0000A9D4; // type:function size:0x238 +fn_1_AC0C = .text:0x0000AC0C; // type:function size:0x74 +fn_1_AC80 = .text:0x0000AC80; // type:function size:0x1E4 +fn_1_AE64 = .text:0x0000AE64; // type:function size:0x84 +fn_1_AEE8 = .text:0x0000AEE8; // type:function size:0x254 +fn_1_B13C = .text:0x0000B13C; // type:function size:0x68 +fn_1_B1A4 = .text:0x0000B1A4; // type:function size:0x160 +fn_1_B304 = .text:0x0000B304; // type:function size:0x12C +fn_1_B430 = .text:0x0000B430; // type:function size:0x8A8 +fn_1_BCD8 = .text:0x0000BCD8; // type:function size:0x7C0 +fn_1_C498 = .text:0x0000C498; // type:function size:0x1498 +fn_1_D930 = .text:0x0000D930; // type:function size:0x108 +fn_1_DA38 = .text:0x0000DA38; // type:function size:0x190 +fn_1_DBC8 = .text:0x0000DBC8; // type:function size:0x5C +fn_1_DC24 = .text:0x0000DC24; // type:function size:0x14C +fn_1_DD70 = .text:0x0000DD70; // type:function size:0x44C +fn_1_E1BC = .text:0x0000E1BC; // type:function size:0xD4 +fn_1_E290 = .text:0x0000E290; // type:function size:0xA0 +fn_1_E330 = .text:0x0000E330; // type:function size:0x4 +fn_1_E334 = .text:0x0000E334; // type:function size:0x12C +fn_1_E460 = .text:0x0000E460; // type:function size:0x8C +fn_1_E4EC = .text:0x0000E4EC; // type:function size:0x120 +fn_1_E60C = .text:0x0000E60C; // type:function size:0x6C +fn_1_E678 = .text:0x0000E678; // type:function size:0x8CC +fn_1_EF44 = .text:0x0000EF44; // type:function size:0x630 +fn_1_F574 = .text:0x0000F574; // type:function size:0x11C +fn_1_F690 = .text:0x0000F690; // type:function size:0x50 +fn_1_F6E0 = .text:0x0000F6E0; // type:function size:0x360 +fn_1_FA40 = .text:0x0000FA40; // type:function size:0x4D0 +fn_1_FF10 = .text:0x0000FF10; // type:function size:0x88 +fn_1_FF98 = .text:0x0000FF98; // type:function size:0x90 +fn_1_10028 = .text:0x00010028; // type:function size:0xB4 +fn_1_100DC = .text:0x000100DC; // type:function size:0x3A4 +fn_1_10480 = .text:0x00010480; // type:function size:0xAC +fn_1_1052C = .text:0x0001052C; // type:function size:0x4 +fn_1_10530 = .text:0x00010530; // type:function size:0x10 +fn_1_10540 = .text:0x00010540; // type:function size:0x198 +fn_1_106D8 = .text:0x000106D8; // type:function size:0x4F0 +fn_1_10BC8 = .text:0x00010BC8; // type:function size:0x440 +fn_1_11008 = .text:0x00011008; // type:function size:0x10C +fn_1_11114 = .text:0x00011114; // type:function size:0x4B0 +fn_1_115C4 = .text:0x000115C4; // type:function size:0x33C +fn_1_11900 = .text:0x00011900; // type:function size:0x8DC +fn_1_121DC = .text:0x000121DC; // type:function size:0x118 +fn_1_122F4 = .text:0x000122F4; // type:function size:0x250 +fn_1_12544 = .text:0x00012544; // type:function size:0x3F8 +fn_1_1293C = .text:0x0001293C; // type:function size:0xB4 +fn_1_129F0 = .text:0x000129F0; // type:function size:0x27C +fn_1_12C6C = .text:0x00012C6C; // type:function size:0x100 +fn_1_12D6C = .text:0x00012D6C; // type:function size:0xFC +fn_1_12E68 = .text:0x00012E68; // type:function size:0x4E4 +fn_1_1334C = .text:0x0001334C; // type:function size:0x330 +fn_1_1367C = .text:0x0001367C; // type:function size:0x148 +fn_1_137C4 = .text:0x000137C4; // type:function size:0x78C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x1 data:byte +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float +lbl_1_data_38 = .data:0x00000038; // type:object size:0x118 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 data:float +lbl_1_data_180 = .data:0x00000180; // type:object size:0x30 data:float +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x24 +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xC +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0xC +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xC +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC +lbl_1_data_228 = .data:0x00000228; // type:object size:0xC +lbl_1_data_234 = .data:0x00000234; // type:object size:0x4 +lbl_1_data_238 = .data:0x00000238; // type:object size:0x18 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x18 +jumptable_1_data_268 = .data:0x00000268; // type:object size:0x30 scope:local +lbl_1_data_298 = .data:0x00000298; // type:object size:0x1 data:byte +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x30 +lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x20 +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x20 +lbl_1_data_30C = .data:0x0000030C; // type:object size:0x4 +lbl_1_data_310 = .data:0x00000310; // type:object size:0x1 data:byte +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 data:4byte +lbl_1_data_334 = .data:0x00000334; // type:object size:0x30 +lbl_1_data_364 = .data:0x00000364; // type:object size:0x24 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x1 data:byte +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1F data:string +lbl_1_data_3AB = .data:0x000003AB; // type:object size:0x1 data:byte +lbl_1_data_3AF = .data:0x000003AF; // type:object size:0x1 data:byte +lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x5 data:byte +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0xF0 +lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0x54 +lbl_1_data_4FC = .data:0x000004FC; // type:object size:0xC +lbl_1_data_508 = .data:0x00000508; // type:object size:0x18 +lbl_1_data_520 = .data:0x00000520; // type:object size:0x6 +lbl_1_data_526 = .data:0x00000526; // type:object size:0x6 +lbl_1_data_52C = .data:0x0000052C; // type:object size:0x8 +lbl_1_data_534 = .data:0x00000534; // type:object size:0x40 +lbl_1_data_574 = .data:0x00000574; // type:object size:0xC +lbl_1_data_580 = .data:0x00000580; // type:object size:0x58 +lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x10 +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0xC data:4byte +lbl_1_data_5F4 = .data:0x000005F4; // type:object size:0x1 data:byte +lbl_1_data_5F8 = .data:0x000005F8; // type:object size:0x1 data:byte +jumptable_1_data_5FC = .data:0x000005FC; // type:object size:0x34 scope:local +lbl_1_data_630 = .data:0x00000630; // type:object size:0x1 data:byte +jumptable_1_data_634 = .data:0x00000634; // type:object size:0x34 scope:local +lbl_1_data_668 = .data:0x00000668; // type:object size:0x10 +lbl_1_data_678 = .data:0x00000678; // type:object size:0x10 +lbl_1_data_688 = .data:0x00000688; // type:object size:0x20 +lbl_1_data_6A8 = .data:0x000006A8; // type:object size:0x20 data:4byte +lbl_1_data_6C8 = .data:0x000006C8; // type:object size:0x10 +lbl_1_data_6D8 = .data:0x000006D8; // type:object size:0x20 +lbl_1_data_6F8 = .data:0x000006F8; // type:object size:0x20 +lbl_1_data_718 = .data:0x00000718; // type:object size:0x20 +lbl_1_data_738 = .data:0x00000738; // type:object size:0x20 +lbl_1_data_758 = .data:0x00000758; // type:object size:0x1 data:byte +lbl_1_data_75C = .data:0x0000075C; // type:object size:0x48 +jumptable_1_data_7A4 = .data:0x000007A4; // type:object size:0x20 scope:local +lbl_1_data_7C4 = .data:0x000007C4; // type:object size:0x18 +jumptable_1_data_7DC = .data:0x000007DC; // type:object size:0x20 scope:local +lbl_1_data_7FC = .data:0x000007FC; // type:object size:0x20 +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x20 +lbl_1_data_83C = .data:0x0000083C; // type:object size:0x8 +lbl_1_data_844 = .data:0x00000844; // type:object size:0x60 +lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x20 +lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0x30 +lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x20 +lbl_1_data_914 = .data:0x00000914; // type:object size:0x6 data:byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x3C data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x3C data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0xC data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x10 +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x10 data:4byte +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x10 data:4byte +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x8 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:4byte +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:4byte +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m424Dll/splits.txt b/config/GMPJ01_00/rels/m424Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m424Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m424Dll/symbols.txt b/config/GMPJ01_00/rels/m424Dll/symbols.txt new file mode 100644 index 00000000..cd7eab29 --- /dev/null +++ b/config/GMPJ01_00/rels/m424Dll/symbols.txt @@ -0,0 +1,315 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x1C4 +fn_1_264 = .text:0x00000264; // type:function size:0x1B8 +fn_1_41C = .text:0x0000041C; // type:function size:0xAC4 +fn_1_EE0 = .text:0x00000EE0; // type:function size:0x60 +fn_1_F40 = .text:0x00000F40; // type:function size:0xA0 +fn_1_FE0 = .text:0x00000FE0; // type:function size:0x10 +fn_1_FF0 = .text:0x00000FF0; // type:function size:0x1FC +fn_1_11EC = .text:0x000011EC; // type:function size:0x4 +fn_1_11F0 = .text:0x000011F0; // type:function size:0x4 +fn_1_11F4 = .text:0x000011F4; // type:function size:0x10 +fn_1_1204 = .text:0x00001204; // type:function size:0x154 +fn_1_1358 = .text:0x00001358; // type:function size:0x118 +fn_1_1470 = .text:0x00001470; // type:function size:0x250 +fn_1_16C0 = .text:0x000016C0; // type:function size:0x3F8 +fn_1_1AB8 = .text:0x00001AB8; // type:function size:0xD4 +fn_1_1B8C = .text:0x00001B8C; // type:function size:0x2C +fn_1_1BB8 = .text:0x00001BB8; // type:function size:0x264 +fn_1_1E1C = .text:0x00001E1C; // type:function size:0x314 +fn_1_2130 = .text:0x00002130; // type:function size:0xC +fn_1_213C = .text:0x0000213C; // type:function size:0x74 +fn_1_21B0 = .text:0x000021B0; // type:function size:0x70 +fn_1_2220 = .text:0x00002220; // type:function size:0x218 +fn_1_2438 = .text:0x00002438; // type:function size:0xF4 +fn_1_252C = .text:0x0000252C; // type:function size:0x94 +fn_1_25C0 = .text:0x000025C0; // type:function size:0xB0 +fn_1_2670 = .text:0x00002670; // type:function size:0xB0 +fn_1_2720 = .text:0x00002720; // type:function size:0x160 +fn_1_2880 = .text:0x00002880; // type:function size:0x20 +fn_1_28A0 = .text:0x000028A0; // type:function size:0x598 +fn_1_2E38 = .text:0x00002E38; // type:function size:0x4 +fn_1_2E3C = .text:0x00002E3C; // type:function size:0x384 +fn_1_31C0 = .text:0x000031C0; // type:function size:0x63C +fn_1_37FC = .text:0x000037FC; // type:function size:0xA24 +fn_1_4220 = .text:0x00004220; // type:function size:0x478 +fn_1_4698 = .text:0x00004698; // type:function size:0x4 +fn_1_469C = .text:0x0000469C; // type:function size:0x234 +fn_1_48D0 = .text:0x000048D0; // type:function size:0x1C0 +fn_1_4A90 = .text:0x00004A90; // type:function size:0x588 +fn_1_5018 = .text:0x00005018; // type:function size:0x1020 +fn_1_6038 = .text:0x00006038; // type:function size:0x40 +fn_1_6078 = .text:0x00006078; // type:function size:0xA0 +fn_1_6118 = .text:0x00006118; // type:function size:0x94 +fn_1_61AC = .text:0x000061AC; // type:function size:0x84 +fn_1_6230 = .text:0x00006230; // type:function size:0x4C +fn_1_627C = .text:0x0000627C; // type:function size:0x54 +fn_1_62D0 = .text:0x000062D0; // type:function size:0x13C +fn_1_640C = .text:0x0000640C; // type:function size:0x168 +fn_1_6574 = .text:0x00006574; // type:function size:0x120 +fn_1_6694 = .text:0x00006694; // type:function size:0x39C +fn_1_6A30 = .text:0x00006A30; // type:function size:0x2E0 +fn_1_6D10 = .text:0x00006D10; // type:function size:0x38C +fn_1_709C = .text:0x0000709C; // type:function size:0x384 +fn_1_7420 = .text:0x00007420; // type:function size:0x3A4 +fn_1_77C4 = .text:0x000077C4; // type:function size:0x238 +fn_1_79FC = .text:0x000079FC; // type:function size:0x2A4 +fn_1_7CA0 = .text:0x00007CA0; // type:function size:0x130 +fn_1_7DD0 = .text:0x00007DD0; // type:function size:0x198 +fn_1_7F68 = .text:0x00007F68; // type:function size:0xD8 +fn_1_8040 = .text:0x00008040; // type:function size:0xBC +fn_1_80FC = .text:0x000080FC; // type:function size:0x33C +fn_1_8438 = .text:0x00008438; // type:function size:0x4B0 +fn_1_88E8 = .text:0x000088E8; // type:function size:0x3C +fn_1_8924 = .text:0x00008924; // type:function size:0x2C +fn_1_8950 = .text:0x00008950; // type:function size:0x2C +fn_1_897C = .text:0x0000897C; // type:function size:0x2C +fn_1_89A8 = .text:0x000089A8; // type:function size:0x2C +fn_1_89D4 = .text:0x000089D4; // type:function size:0x2C +fn_1_8A00 = .text:0x00008A00; // type:function size:0x2C +fn_1_8A2C = .text:0x00008A2C; // type:function size:0x7C +fn_1_8AA8 = .text:0x00008AA8; // type:function size:0x1D0 +fn_1_8C78 = .text:0x00008C78; // type:function size:0x404 +fn_1_907C = .text:0x0000907C; // type:function size:0x374 +fn_1_93F0 = .text:0x000093F0; // type:function size:0xB4 +fn_1_94A4 = .text:0x000094A4; // type:function size:0x2C +fn_1_94D0 = .text:0x000094D0; // type:function size:0x594 +fn_1_9A64 = .text:0x00009A64; // type:function size:0x13F4 +fn_1_AE58 = .text:0x0000AE58; // type:function size:0xC +fn_1_AE64 = .text:0x0000AE64; // type:function size:0x938 +fn_1_B79C = .text:0x0000B79C; // type:function size:0x68 +fn_1_B804 = .text:0x0000B804; // type:function size:0x84 +fn_1_B888 = .text:0x0000B888; // type:function size:0x24 +fn_1_B8AC = .text:0x0000B8AC; // type:function size:0x78 +fn_1_B924 = .text:0x0000B924; // type:function size:0x78 +fn_1_B99C = .text:0x0000B99C; // type:function size:0x44 +fn_1_B9E0 = .text:0x0000B9E0; // type:function size:0x830 +fn_1_C210 = .text:0x0000C210; // type:function size:0xD0 +fn_1_C2E0 = .text:0x0000C2E0; // type:function size:0x324 +fn_1_C604 = .text:0x0000C604; // type:function size:0x250 +fn_1_C854 = .text:0x0000C854; // type:function size:0x24 +fn_1_C878 = .text:0x0000C878; // type:function size:0x124 +fn_1_C99C = .text:0x0000C99C; // type:function size:0x4D8 +fn_1_CE74 = .text:0x0000CE74; // type:function size:0x8C +fn_1_CF00 = .text:0x0000CF00; // type:function size:0x80 +fn_1_CF80 = .text:0x0000CF80; // type:function size:0x90 +fn_1_D010 = .text:0x0000D010; // type:function size:0x64 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC data:4byte +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC +lbl_1_data_78 = .data:0x00000078; // type:object size:0x24 +lbl_1_data_9C = .data:0x0000009C; // type:object size:0xC +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xC +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4 +jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x28 scope:local +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC +lbl_1_data_EC = .data:0x000000EC; // type:object size:0xC +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0xC +lbl_1_data_104 = .data:0x00000104; // type:object size:0x4C +lbl_1_data_150 = .data:0x00000150; // type:object size:0x5C +jumptable_1_data_1AC = .data:0x000001AC; // type:object size:0x2C scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x8 data:4byte +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x30 data:float +lbl_1_data_210 = .data:0x00000210; // type:object size:0xC data:float +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC0 +lbl_1_data_2DC = .data:0x000002DC; // type:object size:0xC +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x24 +lbl_1_data_30C = .data:0x0000030C; // type:object size:0xC data:4byte +lbl_1_data_318 = .data:0x00000318; // type:object size:0x6 data:string +lbl_1_data_31E = .data:0x0000031E; // type:object size:0x6 data:string +lbl_1_data_324 = .data:0x00000324; // type:object size:0x8 +jumptable_1_data_32C = .data:0x0000032C; // type:object size:0x40 scope:local +lbl_1_data_36C = .data:0x0000036C; // type:object size:0x20 +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x20 +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x19 data:string +lbl_1_data_3C5 = .data:0x000003C5; // type:object size:0x5 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x8 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x534 data:4byte +lbl_1_bss_594 = .bss:0x00000594; // type:object size:0x18 +lbl_1_bss_5AC = .bss:0x000005AC; // type:object size:0x10 data:4byte +lbl_1_bss_5BC = .bss:0x000005BC; // type:object size:0x84 +lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x80 data:4byte +lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 data:4byte +lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x4 data:4byte +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:4byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0xC data:4byte +lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte +lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m425Dll/splits.txt b/config/GMPJ01_00/rels/m425Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m425Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m425Dll/symbols.txt b/config/GMPJ01_00/rels/m425Dll/symbols.txt new file mode 100644 index 00000000..05f71975 --- /dev/null +++ b/config/GMPJ01_00/rels/m425Dll/symbols.txt @@ -0,0 +1,299 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3C0 +fn_1_460 = .text:0x00000460; // type:function size:0x20 +fn_1_480 = .text:0x00000480; // type:function size:0x464 +fn_1_8E4 = .text:0x000008E4; // type:function size:0x664 +fn_1_F48 = .text:0x00000F48; // type:function size:0x60 +fn_1_FA8 = .text:0x00000FA8; // type:function size:0x524 +fn_1_14CC = .text:0x000014CC; // type:function size:0x120 +fn_1_15EC = .text:0x000015EC; // type:function size:0xC4 +fn_1_16B0 = .text:0x000016B0; // type:function size:0x490 +fn_1_1B40 = .text:0x00001B40; // type:function size:0xC44 +fn_1_2784 = .text:0x00002784; // type:function size:0xEC +fn_1_2870 = .text:0x00002870; // type:function size:0x224 +fn_1_2A94 = .text:0x00002A94; // type:function size:0x98 +fn_1_2B2C = .text:0x00002B2C; // type:function size:0x34C +fn_1_2E78 = .text:0x00002E78; // type:function size:0x568 +fn_1_33E0 = .text:0x000033E0; // type:function size:0x384 +fn_1_3764 = .text:0x00003764; // type:function size:0x76C +fn_1_3ED0 = .text:0x00003ED0; // type:function size:0xB0 +fn_1_3F80 = .text:0x00003F80; // type:function size:0xB08 +fn_1_4A88 = .text:0x00004A88; // type:function size:0x5BC +fn_1_5044 = .text:0x00005044; // type:function size:0x524 +fn_1_5568 = .text:0x00005568; // type:function size:0xA0 +fn_1_5608 = .text:0x00005608; // type:function size:0xA8 +fn_1_56B0 = .text:0x000056B0; // type:function size:0x8C +fn_1_573C = .text:0x0000573C; // type:function size:0x98 +fn_1_57D4 = .text:0x000057D4; // type:function size:0x44C +fn_1_5C20 = .text:0x00005C20; // type:function size:0x8B4 +fn_1_64D4 = .text:0x000064D4; // type:function size:0x54 +fn_1_6528 = .text:0x00006528; // type:function size:0x78 +fn_1_65A0 = .text:0x000065A0; // type:function size:0x11C +fn_1_66BC = .text:0x000066BC; // type:function size:0x78 +fn_1_6734 = .text:0x00006734; // type:function size:0x2D8 +fn_1_6A0C = .text:0x00006A0C; // type:function size:0x1CC +fn_1_6BD8 = .text:0x00006BD8; // type:function size:0x30 +fn_1_6C08 = .text:0x00006C08; // type:function size:0xC8 +fn_1_6CD0 = .text:0x00006CD0; // type:function size:0x12C +fn_1_6DFC = .text:0x00006DFC; // type:function size:0xC8 +fn_1_6EC4 = .text:0x00006EC4; // type:function size:0x69D8 +fn_1_D89C = .text:0x0000D89C; // type:function size:0x10 +fn_1_D8AC = .text:0x0000D8AC; // type:function size:0x10 +fn_1_D8BC = .text:0x0000D8BC; // type:function size:0x10 +fn_1_D8CC = .text:0x0000D8CC; // type:function size:0x10 +fn_1_D8DC = .text:0x0000D8DC; // type:function size:0xCC +fn_1_D9A8 = .text:0x0000D9A8; // type:function size:0x19C +fn_1_DB44 = .text:0x0000DB44; // type:function size:0x2F8 +fn_1_DE3C = .text:0x0000DE3C; // type:function size:0x3D4 +fn_1_E210 = .text:0x0000E210; // type:function size:0x704 +fn_1_E914 = .text:0x0000E914; // type:function size:0x18B0 +fn_1_101C4 = .text:0x000101C4; // type:function size:0x828 +fn_1_109EC = .text:0x000109EC; // type:function size:0x308 +fn_1_10CF4 = .text:0x00010CF4; // type:function size:0x60 +fn_1_10D54 = .text:0x00010D54; // type:function size:0x60 +fn_1_10DB4 = .text:0x00010DB4; // type:function size:0x88 +fn_1_10E3C = .text:0x00010E3C; // type:function size:0xBC +fn_1_10EF8 = .text:0x00010EF8; // type:function size:0x38C +fn_1_11284 = .text:0x00011284; // type:function size:0x78 +fn_1_112FC = .text:0x000112FC; // type:function size:0x11C +fn_1_11418 = .text:0x00011418; // type:function size:0x3C +fn_1_11454 = .text:0x00011454; // type:function size:0x180 +fn_1_115D4 = .text:0x000115D4; // type:function size:0x110 +fn_1_116E4 = .text:0x000116E4; // type:function size:0x390 +fn_1_11A74 = .text:0x00011A74; // type:function size:0x46C +fn_1_11EE0 = .text:0x00011EE0; // type:function size:0x7B4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 data:4byte +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC0 +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x10 data:4byte +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x10 data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x20 data:4byte +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0xC +lbl_1_data_10 = .data:0x00000010; // type:object size:0x30 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x4 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x28 +lbl_1_data_94 = .data:0x00000094; // type:object size:0x30 +jumptable_1_data_C4 = .data:0x000000C4; // type:object size:0x28 scope:local +jumptable_1_data_EC = .data:0x000000EC; // type:object size:0x28 scope:local +lbl_1_data_114 = .data:0x00000114; // type:object size:0x4 data:4byte +lbl_1_data_118 = .data:0x00000118; // type:object size:0x18 +lbl_1_data_130 = .data:0x00000130; // type:object size:0x20 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 +lbl_1_data_168 = .data:0x00000168; // type:object size:0x1 data:byte +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x30 +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x30 +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x20 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x630 +lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x2 data:2byte +lbl_1_bss_642 = .bss:0x00000642; // type:object size:0x2 data:2byte +lbl_1_bss_644 = .bss:0x00000644; // type:object size:0x2 data:2byte +lbl_1_bss_646 = .bss:0x00000646; // type:object size:0x2 data:2byte +lbl_1_bss_648 = .bss:0x00000648; // type:object size:0x2 data:2byte +lbl_1_bss_64C = .bss:0x0000064C; // type:object size:0x10 +lbl_1_bss_65C = .bss:0x0000065C; // type:object size:0x4 data:4byte +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x4 data:4byte +lbl_1_bss_664 = .bss:0x00000664; // type:object size:0x4 data:4byte +lbl_1_bss_668 = .bss:0x00000668; // type:object size:0x8 data:4byte +lbl_1_bss_670 = .bss:0x00000670; // type:object size:0xC data:float +lbl_1_bss_67C = .bss:0x0000067C; // type:object size:0xC data:float +lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x40 +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x1 data:byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0x4 data:4byte +lbl_1_bss_6D0 = .bss:0x000006D0; // type:object size:0x1 data:byte +lbl_1_bss_6D4 = .bss:0x000006D4; // type:object size:0x4 data:4byte +lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte +lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte +lbl_1_bss_6E0 = .bss:0x000006E0; // type:object size:0x4 data:4byte +lbl_1_bss_6E4 = .bss:0x000006E4; // type:object size:0x4 data:4byte +lbl_1_bss_6E8 = .bss:0x000006E8; // type:object size:0x4 data:4byte +lbl_1_bss_6EC = .bss:0x000006EC; // type:object size:0x4 data:4byte +lbl_1_bss_6F0 = .bss:0x000006F0; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m426Dll/splits.txt b/config/GMPJ01_00/rels/m426Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m426Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m426Dll/symbols.txt b/config/GMPJ01_00/rels/m426Dll/symbols.txt new file mode 100644 index 00000000..ade0fb6b --- /dev/null +++ b/config/GMPJ01_00/rels/m426Dll/symbols.txt @@ -0,0 +1,224 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x16C +fn_1_20C = .text:0x0000020C; // type:function size:0x124 +fn_1_330 = .text:0x00000330; // type:function size:0xA88 +fn_1_DB8 = .text:0x00000DB8; // type:function size:0x60 +fn_1_E18 = .text:0x00000E18; // type:function size:0xA0 +fn_1_EB8 = .text:0x00000EB8; // type:function size:0x14C +fn_1_1004 = .text:0x00001004; // type:function size:0x178 +fn_1_117C = .text:0x0000117C; // type:function size:0x70 +fn_1_11EC = .text:0x000011EC; // type:function size:0x70 +fn_1_125C = .text:0x0000125C; // type:function size:0x49C +fn_1_16F8 = .text:0x000016F8; // type:function size:0x13D0 +fn_1_2AC8 = .text:0x00002AC8; // type:function size:0x14 +fn_1_2ADC = .text:0x00002ADC; // type:function size:0x98 +fn_1_2B74 = .text:0x00002B74; // type:function size:0x368 +fn_1_2EDC = .text:0x00002EDC; // type:function size:0x80 +fn_1_2F5C = .text:0x00002F5C; // type:function size:0x6F8 +fn_1_3654 = .text:0x00003654; // type:function size:0x70 +fn_1_36C4 = .text:0x000036C4; // type:function size:0x50 +fn_1_3714 = .text:0x00003714; // type:function size:0x7E8 +fn_1_3EFC = .text:0x00003EFC; // type:function size:0x700 +fn_1_45FC = .text:0x000045FC; // type:function size:0x48 +fn_1_4644 = .text:0x00004644; // type:function size:0x60 +fn_1_46A4 = .text:0x000046A4; // type:function size:0x94 +fn_1_4738 = .text:0x00004738; // type:function size:0x15C +fn_1_4894 = .text:0x00004894; // type:function size:0x5C +fn_1_48F0 = .text:0x000048F0; // type:function size:0x178 +fn_1_4A68 = .text:0x00004A68; // type:function size:0x8C +fn_1_4AF4 = .text:0x00004AF4; // type:function size:0x3D0 +fn_1_4EC4 = .text:0x00004EC4; // type:function size:0x50 +fn_1_4F14 = .text:0x00004F14; // type:function size:0x220 +fn_1_5134 = .text:0x00005134; // type:function size:0xA00 +fn_1_5B34 = .text:0x00005B34; // type:function size:0x14 +fn_1_5B48 = .text:0x00005B48; // type:function size:0x40 +fn_1_5B88 = .text:0x00005B88; // type:function size:0xE4 +fn_1_5C6C = .text:0x00005C6C; // type:function size:0xD0 +fn_1_5D3C = .text:0x00005D3C; // type:function size:0x130 +fn_1_5E6C = .text:0x00005E6C; // type:function size:0x50 +fn_1_5EBC = .text:0x00005EBC; // type:function size:0x14C +fn_1_6008 = .text:0x00006008; // type:function size:0x178 +fn_1_6180 = .text:0x00006180; // type:function size:0x60 +fn_1_61E0 = .text:0x000061E0; // type:function size:0x68 +fn_1_6248 = .text:0x00006248; // type:function size:0xC8 +fn_1_6310 = .text:0x00006310; // type:function size:0xA8 +fn_1_63B8 = .text:0x000063B8; // type:function size:0x1DC +fn_1_6594 = .text:0x00006594; // type:function size:0x50 +fn_1_65E4 = .text:0x000065E4; // type:function size:0x120 +fn_1_6704 = .text:0x00006704; // type:function size:0x118 +fn_1_681C = .text:0x0000681C; // type:function size:0x28 +fn_1_6844 = .text:0x00006844; // type:function size:0x44 +fn_1_6888 = .text:0x00006888; // type:function size:0x15C +fn_1_69E4 = .text:0x000069E4; // type:function size:0x50 +fn_1_6A34 = .text:0x00006A34; // type:function size:0x38C +fn_1_6DC0 = .text:0x00006DC0; // type:function size:0x410 +fn_1_71D0 = .text:0x000071D0; // type:function size:0xA8 +fn_1_7278 = .text:0x00007278; // type:function size:0xB0 +fn_1_7328 = .text:0x00007328; // type:function size:0xB4 +fn_1_73DC = .text:0x000073DC; // type:function size:0x1B0 +fn_1_758C = .text:0x0000758C; // type:function size:0x20 +fn_1_75AC = .text:0x000075AC; // type:function size:0x4 +fn_1_75B0 = .text:0x000075B0; // type:function size:0xC +fn_1_75BC = .text:0x000075BC; // type:function size:0x38 +fn_1_75F4 = .text:0x000075F4; // type:function size:0x118 +fn_1_770C = .text:0x0000770C; // type:function size:0x250 +fn_1_795C = .text:0x0000795C; // type:function size:0x46C +fn_1_7DC8 = .text:0x00007DC8; // type:function size:0x314 +fn_1_80DC = .text:0x000080DC; // type:function size:0x7D8 +fn_1_88B4 = .text:0x000088B4; // type:function size:0x55C +fn_1_8E10 = .text:0x00008E10; // type:function size:0x38 +fn_1_8E48 = .text:0x00008E48; // type:function size:0x2E8 +fn_1_9130 = .text:0x00009130; // type:function size:0x100 +fn_1_9230 = .text:0x00009230; // type:function size:0x314 +fn_1_9544 = .text:0x00009544; // type:function size:0x1D8 +fn_1_971C = .text:0x0000971C; // type:function size:0x7C +fn_1_9798 = .text:0x00009798; // type:function size:0x54 +fn_1_97EC = .text:0x000097EC; // type:function size:0x7C +fn_1_9868 = .text:0x00009868; // type:function size:0x7C +fn_1_98E4 = .text:0x000098E4; // type:function size:0x78 +fn_1_995C = .text:0x0000995C; // type:function size:0x12C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1 data:byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x30 +lbl_1_data_30 = .data:0x00000030; // type:object size:0xC +lbl_1_data_3C = .data:0x0000003C; // type:object size:0xC +lbl_1_data_48 = .data:0x00000048; // type:object size:0x1 data:byte +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x54 data:float +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC +lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0xC +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x24 +jumptable_1_data_E8 = .data:0x000000E8; // type:object size:0x24 scope:local +lbl_1_data_10C = .data:0x0000010C; // type:object size:0x4 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x60 data:4byte +lbl_1_data_170 = .data:0x00000170; // type:object size:0x60 +lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x8 +jumptable_1_data_1D8 = .data:0x000001D8; // type:object size:0x28 scope:local +lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 +lbl_1_data_218 = .data:0x00000218; // type:object size:0x8 +lbl_1_data_220 = .data:0x00000220; // type:object size:0xC +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x30 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x20 +lbl_1_data_27C = .data:0x0000027C; // type:object size:0x30 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x10 +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x20 +jumptable_1_data_2DC = .data:0x000002DC; // type:object size:0x1C scope:local +jumptable_1_data_2F8 = .data:0x000002F8; // type:object size:0x1C scope:local +jumptable_1_data_314 = .data:0x00000314; // type:object size:0x1C scope:local +jumptable_1_data_330 = .data:0x00000330; // type:object size:0x1C scope:local +jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x1C scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x1 data:byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x10 +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x8 +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m427Dll/splits.txt b/config/GMPJ01_00/rels/m427Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m427Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m427Dll/symbols.txt b/config/GMPJ01_00/rels/m427Dll/symbols.txt new file mode 100644 index 00000000..0ce6699f --- /dev/null +++ b/config/GMPJ01_00/rels/m427Dll/symbols.txt @@ -0,0 +1,437 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x1FC +fn_1_29C = .text:0x0000029C; // type:function size:0x64 +fn_1_300 = .text:0x00000300; // type:function size:0x1364 +fn_1_1664 = .text:0x00001664; // type:function size:0x60 +fn_1_16C4 = .text:0x000016C4; // type:function size:0xC4 +fn_1_1788 = .text:0x00001788; // type:function size:0x10 +fn_1_1798 = .text:0x00001798; // type:function size:0xCC +fn_1_1864 = .text:0x00001864; // type:function size:0x20 +fn_1_1884 = .text:0x00001884; // type:function size:0xD0 +fn_1_1954 = .text:0x00001954; // type:function size:0x5E0 +fn_1_1F34 = .text:0x00001F34; // type:function size:0x254 +fn_1_2188 = .text:0x00002188; // type:function size:0x60 +fn_1_21E8 = .text:0x000021E8; // type:function size:0x144 +fn_1_232C = .text:0x0000232C; // type:function size:0x1EC +fn_1_2518 = .text:0x00002518; // type:function size:0x1EC +fn_1_2704 = .text:0x00002704; // type:function size:0x28 +fn_1_272C = .text:0x0000272C; // type:function size:0x64 +fn_1_2790 = .text:0x00002790; // type:function size:0x390 +fn_1_2B20 = .text:0x00002B20; // type:function size:0x4 +fn_1_2B24 = .text:0x00002B24; // type:function size:0x4 +fn_1_2B28 = .text:0x00002B28; // type:function size:0x1C0 +fn_1_2CE8 = .text:0x00002CE8; // type:function size:0x1F8 +fn_1_2EE0 = .text:0x00002EE0; // type:function size:0x8C +fn_1_2F6C = .text:0x00002F6C; // type:function size:0x1F8 +fn_1_3164 = .text:0x00003164; // type:function size:0x188 +fn_1_32EC = .text:0x000032EC; // type:function size:0x8 +fn_1_32F4 = .text:0x000032F4; // type:function size:0x438 +fn_1_372C = .text:0x0000372C; // type:function size:0x35C +fn_1_3A88 = .text:0x00003A88; // type:function size:0x98 +fn_1_3B20 = .text:0x00003B20; // type:function size:0x29C +fn_1_3DBC = .text:0x00003DBC; // type:function size:0x9C +fn_1_3E58 = .text:0x00003E58; // type:function size:0x3C0 +fn_1_4218 = .text:0x00004218; // type:function size:0x2DC +fn_1_44F4 = .text:0x000044F4; // type:function size:0x7C +fn_1_4570 = .text:0x00004570; // type:function size:0x37C +fn_1_48EC = .text:0x000048EC; // type:function size:0x490 +fn_1_4D7C = .text:0x00004D7C; // type:function size:0x324 +fn_1_50A0 = .text:0x000050A0; // type:function size:0x6C +fn_1_510C = .text:0x0000510C; // type:function size:0x480 +fn_1_558C = .text:0x0000558C; // type:function size:0xC00 +fn_1_618C = .text:0x0000618C; // type:function size:0x5D4 +fn_1_6760 = .text:0x00006760; // type:function size:0xB84 +fn_1_72E4 = .text:0x000072E4; // type:function size:0xD8 +fn_1_73BC = .text:0x000073BC; // type:function size:0x590 +fn_1_794C = .text:0x0000794C; // type:function size:0x2E8 +fn_1_7C34 = .text:0x00007C34; // type:function size:0x22C +fn_1_7E60 = .text:0x00007E60; // type:function size:0xD8 +fn_1_7F38 = .text:0x00007F38; // type:function size:0x69C +fn_1_85D4 = .text:0x000085D4; // type:function size:0x194 +fn_1_8768 = .text:0x00008768; // type:function size:0x6B4 +fn_1_8E1C = .text:0x00008E1C; // type:function size:0x174 +fn_1_8F90 = .text:0x00008F90; // type:function size:0x250 +fn_1_91E0 = .text:0x000091E0; // type:function size:0x60 +fn_1_9240 = .text:0x00009240; // type:function size:0xD8 +fn_1_9318 = .text:0x00009318; // type:function size:0xD4 +fn_1_93EC = .text:0x000093EC; // type:function size:0xD0 +fn_1_94BC = .text:0x000094BC; // type:function size:0x12C +fn_1_95E8 = .text:0x000095E8; // type:function size:0x370 +fn_1_9958 = .text:0x00009958; // type:function size:0x44 +fn_1_999C = .text:0x0000999C; // type:function size:0x48 +fn_1_99E4 = .text:0x000099E4; // type:function size:0x48 +fn_1_9A2C = .text:0x00009A2C; // type:function size:0x74 +fn_1_9AA0 = .text:0x00009AA0; // type:function size:0x74 +fn_1_9B14 = .text:0x00009B14; // type:function size:0x74 +fn_1_9B88 = .text:0x00009B88; // type:function size:0x5C0 +fn_1_A148 = .text:0x0000A148; // type:function size:0xAC +fn_1_A1F4 = .text:0x0000A1F4; // type:function size:0x604 +fn_1_A7F8 = .text:0x0000A7F8; // type:function size:0x680 +fn_1_AE78 = .text:0x0000AE78; // type:function size:0x31C +fn_1_B194 = .text:0x0000B194; // type:function size:0x238 +fn_1_B3CC = .text:0x0000B3CC; // type:function size:0x960 +fn_1_BD2C = .text:0x0000BD2C; // type:function size:0x428 +fn_1_C154 = .text:0x0000C154; // type:function size:0xAC +fn_1_C200 = .text:0x0000C200; // type:function size:0xAC +fn_1_C2AC = .text:0x0000C2AC; // type:function size:0x10 +fn_1_C2BC = .text:0x0000C2BC; // type:function size:0xC +fn_1_C2C8 = .text:0x0000C2C8; // type:function size:0xD8 +fn_1_C3A0 = .text:0x0000C3A0; // type:function size:0x7C +fn_1_C41C = .text:0x0000C41C; // type:function size:0x10C +fn_1_C528 = .text:0x0000C528; // type:function size:0x164 +fn_1_C68C = .text:0x0000C68C; // type:function size:0xE0 +fn_1_C76C = .text:0x0000C76C; // type:function size:0xAC0 +fn_1_D22C = .text:0x0000D22C; // type:function size:0x204 +fn_1_D430 = .text:0x0000D430; // type:function size:0xCC +fn_1_D4FC = .text:0x0000D4FC; // type:function size:0x140 +fn_1_D63C = .text:0x0000D63C; // type:function size:0x544 +fn_1_DB80 = .text:0x0000DB80; // type:function size:0x60 +fn_1_DBE0 = .text:0x0000DBE0; // type:function size:0x2C +fn_1_DC0C = .text:0x0000DC0C; // type:function size:0x58 +fn_1_DC64 = .text:0x0000DC64; // type:function size:0x38 +fn_1_DC9C = .text:0x0000DC9C; // type:function size:0x38 +fn_1_DCD4 = .text:0x0000DCD4; // type:function size:0x5DC +fn_1_E2B0 = .text:0x0000E2B0; // type:function size:0xCC +fn_1_E37C = .text:0x0000E37C; // type:function size:0xA4 +fn_1_E420 = .text:0x0000E420; // type:function size:0x68 +fn_1_E488 = .text:0x0000E488; // type:function size:0x504 +fn_1_E98C = .text:0x0000E98C; // type:function size:0x2C8 +fn_1_EC54 = .text:0x0000EC54; // type:function size:0x20 +fn_1_EC74 = .text:0x0000EC74; // type:function size:0x20 +fn_1_EC94 = .text:0x0000EC94; // type:function size:0x44C +fn_1_F0E0 = .text:0x0000F0E0; // type:function size:0x1750 +fn_1_10830 = .text:0x00010830; // type:function size:0x75C +fn_1_10F8C = .text:0x00010F8C; // type:function size:0x5C +fn_1_10FE8 = .text:0x00010FE8; // type:function size:0x100 +fn_1_110E8 = .text:0x000110E8; // type:function size:0xD8 +fn_1_111C0 = .text:0x000111C0; // type:function size:0xD8 +fn_1_11298 = .text:0x00011298; // type:function size:0x158 +fn_1_113F0 = .text:0x000113F0; // type:function size:0x4C +fn_1_1143C = .text:0x0001143C; // type:function size:0x178 +fn_1_115B4 = .text:0x000115B4; // type:function size:0x40C +fn_1_119C0 = .text:0x000119C0; // type:function size:0xB4 +fn_1_11A74 = .text:0x00011A74; // type:function size:0x464 +fn_1_11ED8 = .text:0x00011ED8; // type:function size:0x63C +fn_1_12514 = .text:0x00012514; // type:function size:0x4 +fn_1_12518 = .text:0x00012518; // type:function size:0x68 +fn_1_12580 = .text:0x00012580; // type:function size:0x588 +fn_1_12B08 = .text:0x00012B08; // type:function size:0x141C +fn_1_13F24 = .text:0x00013F24; // type:function size:0x94 +fn_1_13FB8 = .text:0x00013FB8; // type:function size:0x4 +fn_1_13FBC = .text:0x00013FBC; // type:function size:0x14FC +fn_1_154B8 = .text:0x000154B8; // type:function size:0x4 +fn_1_154BC = .text:0x000154BC; // type:function size:0x124 +fn_1_155E0 = .text:0x000155E0; // type:function size:0x134 +fn_1_15714 = .text:0x00015714; // type:function size:0x1C4 +fn_1_158D8 = .text:0x000158D8; // type:function size:0x218 +fn_1_15AF0 = .text:0x00015AF0; // type:function size:0x420 +fn_1_15F10 = .text:0x00015F10; // type:function size:0xC0 +fn_1_15FD0 = .text:0x00015FD0; // type:function size:0xAC +fn_1_1607C = .text:0x0001607C; // type:function size:0x58 +fn_1_160D4 = .text:0x000160D4; // type:function size:0x18C +fn_1_16260 = .text:0x00016260; // type:function size:0x334 +fn_1_16594 = .text:0x00016594; // type:function size:0x118 +fn_1_166AC = .text:0x000166AC; // type:function size:0x250 +fn_1_168FC = .text:0x000168FC; // type:function size:0x3F8 +fn_1_16CF4 = .text:0x00016CF4; // type:function size:0x148 +fn_1_16E3C = .text:0x00016E3C; // type:function size:0xBC +fn_1_16EF8 = .text:0x00016EF8; // type:function size:0x150 +fn_1_17048 = .text:0x00017048; // type:function size:0x1F0 +fn_1_17238 = .text:0x00017238; // type:function size:0x4 +fn_1_1723C = .text:0x0001723C; // type:function size:0xB4 +fn_1_172F0 = .text:0x000172F0; // type:function size:0x140 +fn_1_17430 = .text:0x00017430; // type:function size:0xA4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:2byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x3C data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x6 data:2byte +lbl_1_rodata_136 = .rodata:0x00000136; // type:object size:0xC data:2byte +lbl_1_rodata_142 = .rodata:0x00000142; // type:object size:0x1A data:2byte +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x24 data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x30 data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x10 data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0xC data:4byte +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0xC data:4byte +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x1 data:byte +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x1 data:byte +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x1 data:byte +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x1 data:byte +lbl_1_rodata_38A = .rodata:0x0000038A; // type:object size:0x1 data:byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:float +lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 +jumptable_1_data_94 = .data:0x00000094; // type:object size:0x3C scope:local +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x8 +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x4 +lbl_1_data_DC = .data:0x000000DC; // type:object size:0x4 +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC data:2byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x8 +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x4 data:float +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x4 data:float +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x30 +lbl_1_data_12C = .data:0x0000012C; // type:object size:0x8 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x10 +lbl_1_data_144 = .data:0x00000144; // type:object size:0x90 data:float +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0x8 +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x8 +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x4 +lbl_1_data_1F0 = .data:0x000001F0; // type:object size:0x13 data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0x10 data:string +lbl_1_data_213 = .data:0x00000213; // type:object size:0x26 data:string +lbl_1_data_239 = .data:0x00000239; // type:object size:0x27 +lbl_1_data_260 = .data:0x00000260; // type:object size:0x15C +lbl_1_data_3BC = .data:0x000003BC; // type:object size:0x178 +lbl_1_data_534 = .data:0x00000534; // type:object size:0x18 +lbl_1_data_54C = .data:0x0000054C; // type:object size:0x18 data:float +lbl_1_data_564 = .data:0x00000564; // type:object size:0xC data:float +lbl_1_data_570 = .data:0x00000570; // type:object size:0xC data:float +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x4 +lbl_1_data_580 = .data:0x00000580; // type:object size:0x10 +lbl_1_data_590 = .data:0x00000590; // type:object size:0x1C +lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x1C +lbl_1_data_5C8 = .data:0x000005C8; // type:object size:0x8 +lbl_1_data_5D0 = .data:0x000005D0; // type:object size:0x8 +jumptable_1_data_5D8 = .data:0x000005D8; // type:object size:0x20 scope:local +lbl_1_data_5F8 = .data:0x000005F8; // type:object size:0x8 +lbl_1_data_600 = .data:0x00000600; // type:object size:0x8 +lbl_1_data_608 = .data:0x00000608; // type:object size:0x10 +lbl_1_data_618 = .data:0x00000618; // type:object size:0x10 +jumptable_1_data_628 = .data:0x00000628; // type:object size:0x20 scope:local +lbl_1_data_648 = .data:0x00000648; // type:object size:0x4 +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1 data:byte +lbl_1_data_650 = .data:0x00000650; // type:object size:0x4 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x40 +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x8 +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x1 data:byte +lbl_1_bss_91 = .bss:0x00000091; // type:object size:0x1 data:byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:float +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4C data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x4 data:4byte +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x4 +lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x4 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x4 data:4byte +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x60 data:2byte +lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x3F0 data:byte +lbl_1_bss_548 = .bss:0x00000548; // type:object size:0x8 data:4byte +lbl_1_bss_550 = .bss:0x00000550; // type:object size:0x4 data:4byte +lbl_1_bss_554 = .bss:0x00000554; // type:object size:0x4 data:4byte +lbl_1_bss_558 = .bss:0x00000558; // type:object size:0x4 data:4byte +lbl_1_bss_55C = .bss:0x0000055C; // type:object size:0x10 +lbl_1_bss_56C = .bss:0x0000056C; // type:object size:0x8 +lbl_1_bss_574 = .bss:0x00000574; // type:object size:0x4 data:4byte +lbl_1_bss_578 = .bss:0x00000578; // type:object size:0x4 data:4byte +lbl_1_bss_57C = .bss:0x0000057C; // type:object size:0x4 data:4byte +lbl_1_bss_580 = .bss:0x00000580; // type:object size:0x4 data:4byte +lbl_1_bss_584 = .bss:0x00000584; // type:object size:0x4 data:4byte +lbl_1_bss_588 = .bss:0x00000588; // type:object size:0x4 data:4byte +lbl_1_bss_58C = .bss:0x0000058C; // type:object size:0x4 data:4byte +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0x4 data:4byte +lbl_1_bss_594 = .bss:0x00000594; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m428Dll/splits.txt b/config/GMPJ01_00/rels/m428Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m428Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m428Dll/symbols.txt b/config/GMPJ01_00/rels/m428Dll/symbols.txt new file mode 100644 index 00000000..cd8f595d --- /dev/null +++ b/config/GMPJ01_00/rels/m428Dll/symbols.txt @@ -0,0 +1,409 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x218 +fn_1_2B8 = .text:0x000002B8; // type:function size:0x1C0 +fn_1_478 = .text:0x00000478; // type:function size:0x2154 +fn_1_25CC = .text:0x000025CC; // type:function size:0x50 +fn_1_261C = .text:0x0000261C; // type:function size:0xC4 +fn_1_26E0 = .text:0x000026E0; // type:function size:0x10 +fn_1_26F0 = .text:0x000026F0; // type:function size:0x2F8 +fn_1_29E8 = .text:0x000029E8; // type:function size:0x4 +fn_1_29EC = .text:0x000029EC; // type:function size:0x4 +fn_1_29F0 = .text:0x000029F0; // type:function size:0x10 +fn_1_2A00 = .text:0x00002A00; // type:function size:0xCC +fn_1_2ACC = .text:0x00002ACC; // type:function size:0x1C4 +fn_1_2C90 = .text:0x00002C90; // type:function size:0x19C +fn_1_2E2C = .text:0x00002E2C; // type:function size:0xD38 +fn_1_3B64 = .text:0x00003B64; // type:function size:0x540 +fn_1_40A4 = .text:0x000040A4; // type:function size:0xCC +fn_1_4170 = .text:0x00004170; // type:function size:0xF4 +fn_1_4264 = .text:0x00004264; // type:function size:0xC0 +fn_1_4324 = .text:0x00004324; // type:function size:0xA4 +fn_1_43C8 = .text:0x000043C8; // type:function size:0x268 +fn_1_4630 = .text:0x00004630; // type:function size:0x20 +fn_1_4650 = .text:0x00004650; // type:function size:0x10C +fn_1_475C = .text:0x0000475C; // type:function size:0x420 +fn_1_4B7C = .text:0x00004B7C; // type:function size:0x2C8 +fn_1_4E44 = .text:0x00004E44; // type:function size:0x34 +fn_1_4E78 = .text:0x00004E78; // type:function size:0x8C +fn_1_4F04 = .text:0x00004F04; // type:function size:0x2DC +fn_1_51E0 = .text:0x000051E0; // type:function size:0xF8 +fn_1_52D8 = .text:0x000052D8; // type:function size:0x4 +fn_1_52DC = .text:0x000052DC; // type:function size:0x94 +fn_1_5370 = .text:0x00005370; // type:function size:0x1E8 +fn_1_5558 = .text:0x00005558; // type:function size:0x12C +fn_1_5684 = .text:0x00005684; // type:function size:0x648 +fn_1_5CCC = .text:0x00005CCC; // type:function size:0x5B4 +fn_1_6280 = .text:0x00006280; // type:function size:0xF2C +fn_1_71AC = .text:0x000071AC; // type:function size:0xE8 +fn_1_7294 = .text:0x00007294; // type:function size:0x40 +fn_1_72D4 = .text:0x000072D4; // type:function size:0xC8 +fn_1_739C = .text:0x0000739C; // type:function size:0x94 +fn_1_7430 = .text:0x00007430; // type:function size:0x84 +fn_1_74B4 = .text:0x000074B4; // type:function size:0x4C +fn_1_7500 = .text:0x00007500; // type:function size:0x54 +fn_1_7554 = .text:0x00007554; // type:function size:0x13C +fn_1_7690 = .text:0x00007690; // type:function size:0x168 +fn_1_77F8 = .text:0x000077F8; // type:function size:0x120 +fn_1_7918 = .text:0x00007918; // type:function size:0x39C +fn_1_7CB4 = .text:0x00007CB4; // type:function size:0x2E0 +fn_1_7F94 = .text:0x00007F94; // type:function size:0x198 +fn_1_812C = .text:0x0000812C; // type:function size:0xD8 +fn_1_8204 = .text:0x00008204; // type:function size:0xBC +fn_1_82C0 = .text:0x000082C0; // type:function size:0x33C +fn_1_85FC = .text:0x000085FC; // type:function size:0x4B0 +fn_1_8AAC = .text:0x00008AAC; // type:function size:0x78 +fn_1_8B24 = .text:0x00008B24; // type:function size:0x11C +fn_1_8C40 = .text:0x00008C40; // type:function size:0x78 +fn_1_8CB8 = .text:0x00008CB8; // type:function size:0x2D8 +fn_1_8F90 = .text:0x00008F90; // type:function size:0x2B8 +fn_1_9248 = .text:0x00009248; // type:function size:0x154 +fn_1_939C = .text:0x0000939C; // type:function size:0x3E0 +fn_1_977C = .text:0x0000977C; // type:function size:0x214 +fn_1_9990 = .text:0x00009990; // type:function size:0xA0 +fn_1_9A30 = .text:0x00009A30; // type:function size:0xAC +fn_1_9ADC = .text:0x00009ADC; // type:function size:0x30C +fn_1_9DE8 = .text:0x00009DE8; // type:function size:0xC0 +fn_1_9EA8 = .text:0x00009EA8; // type:function size:0x60 +fn_1_9F08 = .text:0x00009F08; // type:function size:0x54 +fn_1_9F5C = .text:0x00009F5C; // type:function size:0x154 +fn_1_A0B0 = .text:0x0000A0B0; // type:function size:0x58 +fn_1_A108 = .text:0x0000A108; // type:function size:0x3C0 +fn_1_A4C8 = .text:0x0000A4C8; // type:function size:0xF0C +fn_1_B3D4 = .text:0x0000B3D4; // type:function size:0x68 +fn_1_B43C = .text:0x0000B43C; // type:function size:0x794 +fn_1_BBD0 = .text:0x0000BBD0; // type:function size:0x2A24 +fn_1_E5F4 = .text:0x0000E5F4; // type:function size:0xC +fn_1_E600 = .text:0x0000E600; // type:function size:0xA80 +fn_1_F080 = .text:0x0000F080; // type:function size:0x208 +fn_1_F288 = .text:0x0000F288; // type:function size:0xCC +fn_1_F354 = .text:0x0000F354; // type:function size:0x68 +fn_1_F3BC = .text:0x0000F3BC; // type:function size:0x58 +fn_1_F414 = .text:0x0000F414; // type:function size:0x40 +fn_1_F454 = .text:0x0000F454; // type:function size:0x18 +fn_1_F46C = .text:0x0000F46C; // type:function size:0x48 +fn_1_F4B4 = .text:0x0000F4B4; // type:function size:0x34 +fn_1_F4E8 = .text:0x0000F4E8; // type:function size:0x50 +fn_1_F538 = .text:0x0000F538; // type:function size:0x354 +fn_1_F88C = .text:0x0000F88C; // type:function size:0x300 +fn_1_FB8C = .text:0x0000FB8C; // type:function size:0x30C +fn_1_FE98 = .text:0x0000FE98; // type:function size:0x410 +fn_1_102A8 = .text:0x000102A8; // type:function size:0x288 +fn_1_10530 = .text:0x00010530; // type:function size:0x60 +fn_1_10590 = .text:0x00010590; // type:function size:0x58 +fn_1_105E8 = .text:0x000105E8; // type:function size:0xC0 +fn_1_106A8 = .text:0x000106A8; // type:function size:0xE0 +fn_1_10788 = .text:0x00010788; // type:function size:0x300 +fn_1_10A88 = .text:0x00010A88; // type:function size:0x58C +fn_1_11014 = .text:0x00011014; // type:function size:0x5E4 +fn_1_115F8 = .text:0x000115F8; // type:function size:0xCC +fn_1_116C4 = .text:0x000116C4; // type:function size:0x90 +fn_1_11754 = .text:0x00011754; // type:function size:0x44 +fn_1_11798 = .text:0x00011798; // type:function size:0x110 +fn_1_118A8 = .text:0x000118A8; // type:function size:0x88 +fn_1_11930 = .text:0x00011930; // type:function size:0x130 +fn_1_11A60 = .text:0x00011A60; // type:function size:0x1C0 +fn_1_11C20 = .text:0x00011C20; // type:function size:0x6C +fn_1_11C8C = .text:0x00011C8C; // type:function size:0x158 +fn_1_11DE4 = .text:0x00011DE4; // type:function size:0x470 +fn_1_12254 = .text:0x00012254; // type:function size:0x118 +fn_1_1236C = .text:0x0001236C; // type:function size:0x250 +fn_1_125BC = .text:0x000125BC; // type:function size:0x3F8 +fn_1_129B4 = .text:0x000129B4; // type:function size:0x78 +fn_1_12A2C = .text:0x00012A2C; // type:function size:0x78 +fn_1_12AA4 = .text:0x00012AA4; // type:function size:0x230 +fn_1_12CD4 = .text:0x00012CD4; // type:function size:0x4B0 +fn_1_13184 = .text:0x00013184; // type:function size:0x33C +fn_1_134C0 = .text:0x000134C0; // type:function size:0x8DC +fn_1_13D9C = .text:0x00013D9C; // type:function size:0x78 +fn_1_13E14 = .text:0x00013E14; // type:function size:0xB4 +fn_1_13EC8 = .text:0x00013EC8; // type:function size:0x8C +fn_1_13F54 = .text:0x00013F54; // type:function size:0x134 +fn_1_14088 = .text:0x00014088; // type:function size:0x4D8 +fn_1_14560 = .text:0x00014560; // type:function size:0x98 +fn_1_145F8 = .text:0x000145F8; // type:function size:0x98 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC +lbl_1_data_78 = .data:0x00000078; // type:object size:0x24 +lbl_1_data_9C = .data:0x0000009C; // type:object size:0xC +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xC +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4 +jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x48 data:byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 +lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 data:float +lbl_1_data_180 = .data:0x00000180; // type:object size:0x30 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2A0 +lbl_1_data_450 = .data:0x00000450; // type:object size:0x30 +lbl_1_data_480 = .data:0x00000480; // type:object size:0x30 +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0x50 data:float +lbl_1_data_500 = .data:0x00000500; // type:object size:0x60 +lbl_1_data_560 = .data:0x00000560; // type:object size:0x80 +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0x60 +lbl_1_data_640 = .data:0x00000640; // type:object size:0x10 +lbl_1_data_650 = .data:0x00000650; // type:object size:0x1 data:byte +lbl_1_data_654 = .data:0x00000654; // type:object size:0x1 data:byte +lbl_1_data_658 = .data:0x00000658; // type:object size:0x14 +jumptable_1_data_66C = .data:0x0000066C; // type:object size:0x28 scope:local +lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x4 +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x2 data:2byte +lbl_1_data_6A4 = .data:0x000006A4; // type:object size:0x30 +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x20 +lbl_1_data_6F4 = .data:0x000006F4; // type:object size:0x19 data:string +lbl_1_data_70D = .data:0x0000070D; // type:object size:0x5 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x10 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x10 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x8 data:2byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 data:2byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:float +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x8 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x8 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x8 +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x80 +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:4byte +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:4byte +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x4 data:4byte +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte +lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x4 data:4byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x80 +lbl_1_bss_1BC = .bss:0x000001BC; // type:object size:0x80 +lbl_1_bss_23C = .bss:0x0000023C; // type:object size:0x60 +lbl_1_bss_29C = .bss:0x0000029C; // type:object size:0x8 data:4byte +lbl_1_bss_2A4 = .bss:0x000002A4; // type:object size:0x4 data:4byte +lbl_1_bss_2A8 = .bss:0x000002A8; // type:object size:0x4 data:4byte +lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x4 data:4byte +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 data:4byte +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0x4 data:4byte +lbl_1_bss_2B8 = .bss:0x000002B8; // type:object size:0x10 +lbl_1_bss_2C8 = .bss:0x000002C8; // type:object size:0x8 +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m429Dll/splits.txt b/config/GMPJ01_00/rels/m429Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m429Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m429Dll/symbols.txt b/config/GMPJ01_00/rels/m429Dll/symbols.txt new file mode 100644 index 00000000..f2faf4cf --- /dev/null +++ b/config/GMPJ01_00/rels/m429Dll/symbols.txt @@ -0,0 +1,316 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x218 +fn_1_798 = .text:0x00000798; // type:function size:0x254 +fn_1_9EC = .text:0x000009EC; // type:function size:0x54 +fn_1_A40 = .text:0x00000A40; // type:function size:0x10C +fn_1_B4C = .text:0x00000B4C; // type:function size:0x6A8 +fn_1_11F4 = .text:0x000011F4; // type:function size:0x15C +fn_1_1350 = .text:0x00001350; // type:function size:0x8C +fn_1_13DC = .text:0x000013DC; // type:function size:0x334 +fn_1_1710 = .text:0x00001710; // type:function size:0x350 +fn_1_1A60 = .text:0x00001A60; // type:function size:0x2B8 +fn_1_1D18 = .text:0x00001D18; // type:function size:0x58 +fn_1_1D70 = .text:0x00001D70; // type:function size:0xB0 +fn_1_1E20 = .text:0x00001E20; // type:function size:0x104 +fn_1_1F24 = .text:0x00001F24; // type:function size:0x34 +fn_1_1F58 = .text:0x00001F58; // type:function size:0x6C +fn_1_1FC4 = .text:0x00001FC4; // type:function size:0x3F0 +fn_1_23B4 = .text:0x000023B4; // type:function size:0x260 +fn_1_2614 = .text:0x00002614; // type:function size:0x70 +fn_1_2684 = .text:0x00002684; // type:function size:0x2CC +fn_1_2950 = .text:0x00002950; // type:function size:0x290 +fn_1_2BE0 = .text:0x00002BE0; // type:function size:0x234 +fn_1_2E14 = .text:0x00002E14; // type:function size:0xD8 +fn_1_2EEC = .text:0x00002EEC; // type:function size:0x2BC +fn_1_31A8 = .text:0x000031A8; // type:function size:0x4 +fn_1_31AC = .text:0x000031AC; // type:function size:0xD8 +fn_1_3284 = .text:0x00003284; // type:function size:0x174 +fn_1_33F8 = .text:0x000033F8; // type:function size:0x304 +fn_1_36FC = .text:0x000036FC; // type:function size:0x170 +fn_1_386C = .text:0x0000386C; // type:function size:0x560 +fn_1_3DCC = .text:0x00003DCC; // type:function size:0x254 +_prolog = .text:0x00004020; // type:function size:0x54 scope:global +_epilog = .text:0x00004074; // type:function size:0x4C scope:global +fn_1_40C0 = .text:0x000040C0; // type:function size:0x164 +fn_1_4224 = .text:0x00004224; // type:function size:0xBCC +fn_1_4DF0 = .text:0x00004DF0; // type:function size:0x60 +fn_1_4E50 = .text:0x00004E50; // type:function size:0x25C +fn_1_50AC = .text:0x000050AC; // type:function size:0x410 +fn_1_54BC = .text:0x000054BC; // type:function size:0x380 +fn_1_583C = .text:0x0000583C; // type:function size:0x120 +fn_1_595C = .text:0x0000595C; // type:function size:0x380 +fn_1_5CDC = .text:0x00005CDC; // type:function size:0x268 +fn_1_5F44 = .text:0x00005F44; // type:function size:0x1154 +fn_1_7098 = .text:0x00007098; // type:function size:0x158 +fn_1_71F0 = .text:0x000071F0; // type:function size:0xB48 +fn_1_7D38 = .text:0x00007D38; // type:function size:0x1230 +fn_1_8F68 = .text:0x00008F68; // type:function size:0xA84 +fn_1_99EC = .text:0x000099EC; // type:function size:0x4 +fn_1_99F0 = .text:0x000099F0; // type:function size:0x1BC +fn_1_9BAC = .text:0x00009BAC; // type:function size:0x340 +fn_1_9EEC = .text:0x00009EEC; // type:function size:0x1BC +fn_1_A0A8 = .text:0x0000A0A8; // type:function size:0x70 +fn_1_A118 = .text:0x0000A118; // type:function size:0x470 +fn_1_A588 = .text:0x0000A588; // type:function size:0x22C +fn_1_A7B4 = .text:0x0000A7B4; // type:function size:0x5C0 +fn_1_AD74 = .text:0x0000AD74; // type:function size:0x2A8 +fn_1_B01C = .text:0x0000B01C; // type:function size:0x738 +fn_1_B754 = .text:0x0000B754; // type:function size:0x18C +fn_1_B8E0 = .text:0x0000B8E0; // type:function size:0x1D08 +fn_1_D5E8 = .text:0x0000D5E8; // type:function size:0x6B4 +fn_1_DC9C = .text:0x0000DC9C; // type:function size:0xCD0 +fn_1_E96C = .text:0x0000E96C; // type:function size:0x104 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0xD data:string +lbl_1_data_1D = .data:0x0000001D; // type:object size:0xE data:string +lbl_1_data_2B = .data:0x0000002B; // type:object size:0xE data:string +lbl_1_data_39 = .data:0x00000039; // type:object size:0xE data:string +lbl_1_data_47 = .data:0x00000047; // type:object size:0xD data:string +lbl_1_data_54 = .data:0x00000054; // type:object size:0xD data:string +lbl_1_data_61 = .data:0x00000061; // type:object size:0xE data:string +lbl_1_data_6F = .data:0x0000006F; // type:object size:0xE data:string +lbl_1_data_7D = .data:0x0000007D; // type:object size:0xE data:string +lbl_1_data_8B = .data:0x0000008B; // type:object size:0xD data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0xE data:string +lbl_1_data_A6 = .data:0x000000A6; // type:object size:0xE data:string +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0xE data:string +lbl_1_data_C2 = .data:0x000000C2; // type:object size:0xD data:string +lbl_1_data_CF = .data:0x000000CF; // type:object size:0xD data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xD data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0xD data:string +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0xE data:string +lbl_1_data_104 = .data:0x00000104; // type:object size:0xE data:string +lbl_1_data_112 = .data:0x00000112; // type:object size:0xE data:string +lbl_1_data_120 = .data:0x00000120; // type:object size:0xE data:string +lbl_1_data_12E = .data:0x0000012E; // type:object size:0xE data:string +lbl_1_data_13C = .data:0x0000013C; // type:object size:0xE data:string +lbl_1_data_14A = .data:0x0000014A; // type:object size:0xE data:string +lbl_1_data_158 = .data:0x00000158; // type:object size:0xE data:string +lbl_1_data_166 = .data:0x00000166; // type:object size:0xE data:string +lbl_1_data_174 = .data:0x00000174; // type:object size:0xE data:string +lbl_1_data_182 = .data:0x00000182; // type:object size:0xE data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0xE data:string +lbl_1_data_19E = .data:0x0000019E; // type:object size:0xE data:string +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0xE data:string +lbl_1_data_1BA = .data:0x000001BA; // type:object size:0xE data:string +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0xE data:string +lbl_1_data_1D6 = .data:0x000001D6; // type:object size:0xE data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xE data:string +lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xE data:string +lbl_1_data_200 = .data:0x00000200; // type:object size:0xE data:string +lbl_1_data_20E = .data:0x0000020E; // type:object size:0xE data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x10 +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x57C +lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0xD data:string +lbl_1_data_7B5 = .data:0x000007B5; // type:object size:0xD data:string +lbl_1_data_7C2 = .data:0x000007C2; // type:object size:0xD data:string +lbl_1_data_7CF = .data:0x000007CF; // type:object size:0xE data:string +lbl_1_data_7DD = .data:0x000007DD; // type:object size:0xE data:string +lbl_1_data_7EB = .data:0x000007EB; // type:object size:0xE data:string +lbl_1_data_7F9 = .data:0x000007F9; // type:object size:0xE data:string +lbl_1_data_807 = .data:0x00000807; // type:object size:0xD data:string +lbl_1_data_814 = .data:0x00000814; // type:object size:0xD data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0xD data:string +lbl_1_data_82E = .data:0x0000082E; // type:object size:0xE data:string +lbl_1_data_83C = .data:0x0000083C; // type:object size:0xE data:string +lbl_1_data_84A = .data:0x0000084A; // type:object size:0xD data:string +lbl_1_data_857 = .data:0x00000857; // type:object size:0xD data:string +lbl_1_data_864 = .data:0x00000864; // type:object size:0xD data:string +lbl_1_data_871 = .data:0x00000871; // type:object size:0xE data:string +lbl_1_data_87F = .data:0x0000087F; // type:object size:0xE data:string +lbl_1_data_88D = .data:0x0000088D; // type:object size:0xE data:string +lbl_1_data_89B = .data:0x0000089B; // type:object size:0xE data:string +lbl_1_data_8A9 = .data:0x000008A9; // type:object size:0xE data:string +lbl_1_data_8B7 = .data:0x000008B7; // type:object size:0xE data:string +lbl_1_data_8C5 = .data:0x000008C5; // type:object size:0xE data:string +lbl_1_data_8D3 = .data:0x000008D3; // type:object size:0xE data:string +lbl_1_data_8E1 = .data:0x000008E1; // type:object size:0xE data:string +lbl_1_data_8EF = .data:0x000008EF; // type:object size:0xE data:string +lbl_1_data_8FD = .data:0x000008FD; // type:object size:0xE data:string +lbl_1_data_90B = .data:0x0000090B; // type:object size:0xE data:string +lbl_1_data_919 = .data:0x00000919; // type:object size:0xE data:string +lbl_1_data_927 = .data:0x00000927; // type:object size:0xE data:string +lbl_1_data_935 = .data:0x00000935; // type:object size:0xE data:string +lbl_1_data_943 = .data:0x00000943; // type:object size:0xE data:string +lbl_1_data_951 = .data:0x00000951; // type:object size:0xE data:string +lbl_1_data_95F = .data:0x0000095F; // type:object size:0xE data:string +lbl_1_data_96D = .data:0x0000096D; // type:object size:0xE data:string +lbl_1_data_97B = .data:0x0000097B; // type:object size:0xE data:string +lbl_1_data_989 = .data:0x00000989; // type:object size:0xE data:string +lbl_1_data_997 = .data:0x00000997; // type:object size:0xE data:string +lbl_1_data_9A5 = .data:0x000009A5; // type:object size:0xE data:string +lbl_1_data_9B3 = .data:0x000009B3; // type:object size:0xE data:string +lbl_1_data_9C1 = .data:0x000009C1; // type:object size:0xE data:string +lbl_1_data_9CF = .data:0x000009CF; // type:object size:0xE data:string +lbl_1_data_9DD = .data:0x000009DD; // type:object size:0xF +lbl_1_data_9EC = .data:0x000009EC; // type:object size:0x5E8 +lbl_1_data_FD4 = .data:0x00000FD4; // type:object size:0xC +lbl_1_data_FE0 = .data:0x00000FE0; // type:object size:0xC +lbl_1_data_FEC = .data:0x00000FEC; // type:object size:0x10 +lbl_1_data_FFC = .data:0x00000FFC; // type:object size:0x40 +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x40 data:float +lbl_1_data_107C = .data:0x0000107C; // type:object size:0x40 +lbl_1_data_10BC = .data:0x000010BC; // type:object size:0x40 +lbl_1_data_10FC = .data:0x000010FC; // type:object size:0x20 +lbl_1_data_111C = .data:0x0000111C; // type:object size:0xC +lbl_1_data_1128 = .data:0x00001128; // type:object size:0xC +lbl_1_data_1134 = .data:0x00001134; // type:object size:0x4 +lbl_1_data_1138 = .data:0x00001138; // type:object size:0xC +lbl_1_data_1144 = .data:0x00001144; // type:object size:0xC +lbl_1_data_1150 = .data:0x00001150; // type:object size:0x140 +lbl_1_data_1290 = .data:0x00001290; // type:object size:0x20 +lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x20 +lbl_1_data_12D0 = .data:0x000012D0; // type:object size:0x10 +lbl_1_data_12E0 = .data:0x000012E0; // type:object size:0x30 +lbl_1_data_1310 = .data:0x00001310; // type:object size:0x10 +lbl_1_data_1320 = .data:0x00001320; // type:object size:0x10 +lbl_1_data_1330 = .data:0x00001330; // type:object size:0x10 +lbl_1_data_1340 = .data:0x00001340; // type:object size:0x48 +lbl_1_data_1388 = .data:0x00001388; // type:object size:0x20 +lbl_1_data_13A8 = .data:0x000013A8; // type:object size:0x10 +lbl_1_data_13B8 = .data:0x000013B8; // type:object size:0x10 +lbl_1_data_13C8 = .data:0x000013C8; // type:object size:0x10 +lbl_1_data_13D8 = .data:0x000013D8; // type:object size:0x10 +lbl_1_data_13E8 = .data:0x000013E8; // type:object size:0x50 +lbl_1_data_1438 = .data:0x00001438; // type:object size:0x21 data:string +lbl_1_data_1459 = .data:0x00001459; // type:object size:0x1F +jumptable_1_data_1478 = .data:0x00001478; // type:object size:0x24 scope:local +lbl_1_data_149C = .data:0x0000149C; // type:object size:0x1C +jumptable_1_data_14B8 = .data:0x000014B8; // type:object size:0x34 scope:local +lbl_1_data_14EC = .data:0x000014EC; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0xA data:2byte +lbl_1_bss_1A = .bss:0x0000001A; // type:object size:0x2 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x30 +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x30 +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x30 +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x30 +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x18 data:float +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:float +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:float +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:float +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:float +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:float +lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x4 data:float +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:float +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:float +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x60 +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x8 data:4byte +lbl_1_bss_198 = .bss:0x00000198; // type:object size:0x4 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 data:4byte +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x4 data:4byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x100 +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x40 data:4byte +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0x4 data:float +lbl_1_bss_2F4 = .bss:0x000002F4; // type:object size:0x4 data:4byte +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x4 data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0x2 data:2byte +lbl_1_bss_2FE = .bss:0x000002FE; // type:object size:0x2 data:2byte +lbl_1_bss_300 = .bss:0x00000300; // type:object size:0x4 data:4byte +lbl_1_bss_304 = .bss:0x00000304; // type:object size:0x4 data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0xC data:float +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0xC data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0xC data:float +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0xC data:4byte +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x4 data:4byte +lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x18 data:4byte +lbl_1_bss_358 = .bss:0x00000358; // type:object size:0xC data:4byte diff --git a/config/GMPJ01_00/rels/m430Dll/splits.txt b/config/GMPJ01_00/rels/m430Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m430Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m430Dll/symbols.txt b/config/GMPJ01_00/rels/m430Dll/symbols.txt new file mode 100644 index 00000000..3517ae68 --- /dev/null +++ b/config/GMPJ01_00/rels/m430Dll/symbols.txt @@ -0,0 +1,492 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x5BC +fn_1_65C = .text:0x0000065C; // type:function size:0xC4 +fn_1_720 = .text:0x00000720; // type:function size:0x334 +fn_1_A54 = .text:0x00000A54; // type:function size:0x144 +fn_1_B98 = .text:0x00000B98; // type:function size:0x564 +fn_1_10FC = .text:0x000010FC; // type:function size:0x590 +fn_1_168C = .text:0x0000168C; // type:function size:0x478 +fn_1_1B04 = .text:0x00001B04; // type:function size:0x6E0 +fn_1_21E4 = .text:0x000021E4; // type:function size:0x52C +fn_1_2710 = .text:0x00002710; // type:function size:0x638 +fn_1_2D48 = .text:0x00002D48; // type:function size:0x138 +fn_1_2E80 = .text:0x00002E80; // type:function size:0x81C +fn_1_369C = .text:0x0000369C; // type:function size:0xCC +fn_1_3768 = .text:0x00003768; // type:function size:0x8C8 +fn_1_4030 = .text:0x00004030; // type:function size:0x10 +fn_1_4040 = .text:0x00004040; // type:function size:0x18 +fn_1_4058 = .text:0x00004058; // type:function size:0x18 +fn_1_4070 = .text:0x00004070; // type:function size:0x18 +fn_1_4088 = .text:0x00004088; // type:function size:0x18 +fn_1_40A0 = .text:0x000040A0; // type:function size:0x18 +fn_1_40B8 = .text:0x000040B8; // type:function size:0x18 +fn_1_40D0 = .text:0x000040D0; // type:function size:0x30 +fn_1_4100 = .text:0x00004100; // type:function size:0x30 +fn_1_4130 = .text:0x00004130; // type:function size:0xC0 +fn_1_41F0 = .text:0x000041F0; // type:function size:0x348 +fn_1_4538 = .text:0x00004538; // type:function size:0x378 +fn_1_48B0 = .text:0x000048B0; // type:function size:0x11C +fn_1_49CC = .text:0x000049CC; // type:function size:0xB4 +fn_1_4A80 = .text:0x00004A80; // type:function size:0x1C8 +fn_1_4C48 = .text:0x00004C48; // type:function size:0x6C +fn_1_4CB4 = .text:0x00004CB4; // type:function size:0x1144 +fn_1_5DF8 = .text:0x00005DF8; // type:function size:0x388 +fn_1_6180 = .text:0x00006180; // type:function size:0x3C0 +fn_1_6540 = .text:0x00006540; // type:function size:0x214 +fn_1_6754 = .text:0x00006754; // type:function size:0x674 +fn_1_6DC8 = .text:0x00006DC8; // type:function size:0x2E4 +fn_1_70AC = .text:0x000070AC; // type:function size:0x280 +fn_1_732C = .text:0x0000732C; // type:function size:0x3AC +fn_1_76D8 = .text:0x000076D8; // type:function size:0x170 +fn_1_7848 = .text:0x00007848; // type:function size:0x464 +fn_1_7CAC = .text:0x00007CAC; // type:function size:0x200 +fn_1_7EAC = .text:0x00007EAC; // type:function size:0x110 +fn_1_7FBC = .text:0x00007FBC; // type:function size:0x40 +fn_1_7FFC = .text:0x00007FFC; // type:function size:0x40 +fn_1_803C = .text:0x0000803C; // type:function size:0x228 +fn_1_8264 = .text:0x00008264; // type:function size:0x90 +fn_1_82F4 = .text:0x000082F4; // type:function size:0x3C0 +fn_1_86B4 = .text:0x000086B4; // type:function size:0x4A8 +fn_1_8B5C = .text:0x00008B5C; // type:function size:0x184 +fn_1_8CE0 = .text:0x00008CE0; // type:function size:0x95C +fn_1_963C = .text:0x0000963C; // type:function size:0x654 +fn_1_9C90 = .text:0x00009C90; // type:function size:0x718 +fn_1_A3A8 = .text:0x0000A3A8; // type:function size:0x7F0 +fn_1_AB98 = .text:0x0000AB98; // type:function size:0xEC +fn_1_AC84 = .text:0x0000AC84; // type:function size:0x80 +fn_1_AD04 = .text:0x0000AD04; // type:function size:0x1DC +fn_1_AEE0 = .text:0x0000AEE0; // type:function size:0x4B4 +fn_1_B394 = .text:0x0000B394; // type:function size:0x1DC +fn_1_B570 = .text:0x0000B570; // type:function size:0x5E4 +fn_1_BB54 = .text:0x0000BB54; // type:function size:0x34 +fn_1_BB88 = .text:0x0000BB88; // type:function size:0x10 +fn_1_BB98 = .text:0x0000BB98; // type:function size:0x2C +fn_1_BBC4 = .text:0x0000BBC4; // type:function size:0x260 +fn_1_BE24 = .text:0x0000BE24; // type:function size:0x1E8 +fn_1_C00C = .text:0x0000C00C; // type:function size:0x34 +fn_1_C040 = .text:0x0000C040; // type:function size:0x1A4 +fn_1_C1E4 = .text:0x0000C1E4; // type:function size:0x858 +fn_1_CA3C = .text:0x0000CA3C; // type:function size:0x894 +fn_1_D2D0 = .text:0x0000D2D0; // type:function size:0x558 +fn_1_D828 = .text:0x0000D828; // type:function size:0x10D4 +fn_1_E8FC = .text:0x0000E8FC; // type:function size:0x7DC +fn_1_F0D8 = .text:0x0000F0D8; // type:function size:0x554 +fn_1_F62C = .text:0x0000F62C; // type:function size:0x74 +fn_1_F6A0 = .text:0x0000F6A0; // type:function size:0x5FC +fn_1_FC9C = .text:0x0000FC9C; // type:function size:0x404 +fn_1_100A0 = .text:0x000100A0; // type:function size:0x29C +fn_1_1033C = .text:0x0001033C; // type:function size:0x200 +fn_1_1053C = .text:0x0001053C; // type:function size:0x4 +fn_1_10540 = .text:0x00010540; // type:function size:0x4C +fn_1_1058C = .text:0x0001058C; // type:function size:0x2C +fn_1_105B8 = .text:0x000105B8; // type:function size:0x64 +fn_1_1061C = .text:0x0001061C; // type:function size:0x32C +fn_1_10948 = .text:0x00010948; // type:function size:0x240 +fn_1_10B88 = .text:0x00010B88; // type:function size:0x194 +fn_1_10D1C = .text:0x00010D1C; // type:function size:0x204 +fn_1_10F20 = .text:0x00010F20; // type:function size:0x4 +fn_1_10F24 = .text:0x00010F24; // type:function size:0x184 +fn_1_110A8 = .text:0x000110A8; // type:function size:0x114 +fn_1_111BC = .text:0x000111BC; // type:function size:0x158 +fn_1_11314 = .text:0x00011314; // type:function size:0x98 +fn_1_113AC = .text:0x000113AC; // type:function size:0x144 +fn_1_114F0 = .text:0x000114F0; // type:function size:0x154 +fn_1_11644 = .text:0x00011644; // type:function size:0x4 +fn_1_11648 = .text:0x00011648; // type:function size:0x15C +fn_1_117A4 = .text:0x000117A4; // type:function size:0x278 +fn_1_11A1C = .text:0x00011A1C; // type:function size:0x148 +fn_1_11B64 = .text:0x00011B64; // type:function size:0x30 +fn_1_11B94 = .text:0x00011B94; // type:function size:0x88 +fn_1_11C1C = .text:0x00011C1C; // type:function size:0x154 +fn_1_11D70 = .text:0x00011D70; // type:function size:0x1F0 +fn_1_11F60 = .text:0x00011F60; // type:function size:0x30 +fn_1_11F90 = .text:0x00011F90; // type:function size:0x5C0 +fn_1_12550 = .text:0x00012550; // type:function size:0x74 +fn_1_125C4 = .text:0x000125C4; // type:function size:0x408 +fn_1_129CC = .text:0x000129CC; // type:function size:0x3A8 +fn_1_12D74 = .text:0x00012D74; // type:function size:0x7C +fn_1_12DF0 = .text:0x00012DF0; // type:function size:0xB8 +fn_1_12EA8 = .text:0x00012EA8; // type:function size:0x78 +fn_1_12F20 = .text:0x00012F20; // type:function size:0x11C +fn_1_1303C = .text:0x0001303C; // type:function size:0x118 +fn_1_13154 = .text:0x00013154; // type:function size:0x250 +fn_1_133A4 = .text:0x000133A4; // type:function size:0x38 +fn_1_133DC = .text:0x000133DC; // type:function size:0xB4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:4byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:4byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x10 data:4byte +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:4byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x18 data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0xC data:4byte +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC data:4byte +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0xC data:4byte +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC data:4byte +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x18 data:4byte +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 data:4byte +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x8 data:4byte +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x8 data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x20 data:4byte +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x14 data:4byte +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x10 data:4byte +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x10 data:4byte +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x1 data:byte +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x1 data:byte +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x1 data:byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x1 data:byte +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x1 data:byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x1 data:byte +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x1 data:byte +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x1 data:byte +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x1 data:byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:4byte +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 data:double +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:double +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 data:double +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float +lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:double +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 data:double +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x8 data:double +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x8 data:double +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 data:double +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:double +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x4 data:float +lbl_1_rodata_6BC = .rodata:0x000006BC; // type:object size:0x4 data:float +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:double +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x8 data:double +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0x10 data:float +lbl_1_data_50 = .data:0x00000050; // type:object size:0x7 data:string +lbl_1_data_57 = .data:0x00000057; // type:object size:0x9 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x18 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x60 +lbl_1_data_120 = .data:0x00000120; // type:object size:0x48 +lbl_1_data_168 = .data:0x00000168; // type:object size:0x8 +lbl_1_data_170 = .data:0x00000170; // type:object size:0x38 +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x20 +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x14 +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x1C +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x60 +lbl_1_data_258 = .data:0x00000258; // type:object size:0x20 +lbl_1_data_278 = .data:0x00000278; // type:object size:0x8 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x8 +lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x8 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x54 +lbl_1_data_300 = .data:0x00000300; // type:object size:0x8 data:4byte +lbl_1_data_308 = .data:0x00000308; // type:object size:0x4 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte +lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x2 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x6 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:float +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:float +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0xE0 data:4byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x4 data:4byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x4 data:4byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x8 data:4byte +lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x4 data:4byte +lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x4 data:4byte +lbl_1_bss_160 = .bss:0x00000160; // type:object size:0x4 data:4byte +lbl_1_bss_164 = .bss:0x00000164; // type:object size:0x4 data:4byte +lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x4 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x4 data:4byte +lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x4 data:4byte +lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte +lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte +lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m433Dll/splits.txt b/config/GMPJ01_00/rels/m433Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m433Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m433Dll/symbols.txt b/config/GMPJ01_00/rels/m433Dll/symbols.txt new file mode 100644 index 00000000..1d318f59 --- /dev/null +++ b/config/GMPJ01_00/rels/m433Dll/symbols.txt @@ -0,0 +1,472 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x420 +fn_1_4C0 = .text:0x000004C0; // type:function size:0xC4 +fn_1_584 = .text:0x00000584; // type:function size:0x94 +fn_1_618 = .text:0x00000618; // type:function size:0x180 +fn_1_798 = .text:0x00000798; // type:function size:0x33C +fn_1_AD4 = .text:0x00000AD4; // type:function size:0x358 +fn_1_E2C = .text:0x00000E2C; // type:function size:0x214 +fn_1_1040 = .text:0x00001040; // type:function size:0x3BC +fn_1_13FC = .text:0x000013FC; // type:function size:0x2D4 +fn_1_16D0 = .text:0x000016D0; // type:function size:0x36C +fn_1_1A3C = .text:0x00001A3C; // type:function size:0xC +fn_1_1A48 = .text:0x00001A48; // type:function size:0x6F4 +fn_1_213C = .text:0x0000213C; // type:function size:0x18 +fn_1_2154 = .text:0x00002154; // type:function size:0x18 +fn_1_216C = .text:0x0000216C; // type:function size:0x18 +fn_1_2184 = .text:0x00002184; // type:function size:0x18 +fn_1_219C = .text:0x0000219C; // type:function size:0x30 +fn_1_21CC = .text:0x000021CC; // type:function size:0x18 +fn_1_21E4 = .text:0x000021E4; // type:function size:0x30 +fn_1_2214 = .text:0x00002214; // type:function size:0x30 +fn_1_2244 = .text:0x00002244; // type:function size:0x38 +fn_1_227C = .text:0x0000227C; // type:function size:0x208 +fn_1_2484 = .text:0x00002484; // type:function size:0x240 +fn_1_26C4 = .text:0x000026C4; // type:function size:0x11C +fn_1_27E0 = .text:0x000027E0; // type:function size:0xB4 +fn_1_2894 = .text:0x00002894; // type:function size:0xF0 +fn_1_2984 = .text:0x00002984; // type:function size:0x20 +fn_1_29A4 = .text:0x000029A4; // type:function size:0x120 +fn_1_2AC4 = .text:0x00002AC4; // type:function size:0x21C +fn_1_2CE0 = .text:0x00002CE0; // type:function size:0x5EC +fn_1_32CC = .text:0x000032CC; // type:function size:0x6E0 +fn_1_39AC = .text:0x000039AC; // type:function size:0x270 +fn_1_3C1C = .text:0x00003C1C; // type:function size:0x240 +fn_1_3E5C = .text:0x00003E5C; // type:function size:0xB8 +fn_1_3F14 = .text:0x00003F14; // type:function size:0xB80 +fn_1_4A94 = .text:0x00004A94; // type:function size:0x10C +fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x334 +fn_1_4ED4 = .text:0x00004ED4; // type:function size:0xEC +fn_1_4FC0 = .text:0x00004FC0; // type:function size:0x28 +fn_1_4FE8 = .text:0x00004FE8; // type:function size:0x80 +fn_1_5068 = .text:0x00005068; // type:function size:0x40 +fn_1_50A8 = .text:0x000050A8; // type:function size:0xA0 +fn_1_5148 = .text:0x00005148; // type:function size:0x94 +fn_1_51DC = .text:0x000051DC; // type:function size:0x84 +fn_1_5260 = .text:0x00005260; // type:function size:0x54 +fn_1_52B4 = .text:0x000052B4; // type:function size:0x168 +fn_1_541C = .text:0x0000541C; // type:function size:0x120 +fn_1_553C = .text:0x0000553C; // type:function size:0x39C +fn_1_58D8 = .text:0x000058D8; // type:function size:0x2C +fn_1_5904 = .text:0x00005904; // type:function size:0x270 +fn_1_5B74 = .text:0x00005B74; // type:function size:0x24 +fn_1_5B98 = .text:0x00005B98; // type:function size:0x4D8 +fn_1_6070 = .text:0x00006070; // type:function size:0x50 +fn_1_60C0 = .text:0x000060C0; // type:function size:0x76C +fn_1_682C = .text:0x0000682C; // type:function size:0xA00 +fn_1_722C = .text:0x0000722C; // type:function size:0x2A8 +fn_1_74D4 = .text:0x000074D4; // type:function size:0xF34 +fn_1_8408 = .text:0x00008408; // type:function size:0x334 +fn_1_873C = .text:0x0000873C; // type:function size:0x1FC +fn_1_8938 = .text:0x00008938; // type:function size:0x298 +fn_1_8BD0 = .text:0x00008BD0; // type:function size:0x3B0 +fn_1_8F80 = .text:0x00008F80; // type:function size:0x708 +fn_1_9688 = .text:0x00009688; // type:function size:0xF90 +fn_1_A618 = .text:0x0000A618; // type:function size:0x570 +fn_1_AB88 = .text:0x0000AB88; // type:function size:0x60C +fn_1_B194 = .text:0x0000B194; // type:function size:0x340 +fn_1_B4D4 = .text:0x0000B4D4; // type:function size:0x20C +fn_1_B6E0 = .text:0x0000B6E0; // type:function size:0xCC +fn_1_B7AC = .text:0x0000B7AC; // type:function size:0x8C +fn_1_B838 = .text:0x0000B838; // type:function size:0x2A8 +fn_1_BAE0 = .text:0x0000BAE0; // type:function size:0x268 +fn_1_BD48 = .text:0x0000BD48; // type:function size:0x4F8 +fn_1_C240 = .text:0x0000C240; // type:function size:0x46C +fn_1_C6AC = .text:0x0000C6AC; // type:function size:0x4 +fn_1_C6B0 = .text:0x0000C6B0; // type:function size:0x4E8 +fn_1_CB98 = .text:0x0000CB98; // type:function size:0x220 +fn_1_CDB8 = .text:0x0000CDB8; // type:function size:0x3C8 +fn_1_D180 = .text:0x0000D180; // type:function size:0x1B8 +fn_1_D338 = .text:0x0000D338; // type:function size:0x1A8 +fn_1_D4E0 = .text:0x0000D4E0; // type:function size:0x1C8 +fn_1_D6A8 = .text:0x0000D6A8; // type:function size:0x1E0 +fn_1_D888 = .text:0x0000D888; // type:function size:0x4E8 +fn_1_DD70 = .text:0x0000DD70; // type:function size:0xB8 +fn_1_DE28 = .text:0x0000DE28; // type:function size:0x11C +fn_1_DF44 = .text:0x0000DF44; // type:function size:0xA0 +fn_1_DFE4 = .text:0x0000DFE4; // type:function size:0x138 +fn_1_E11C = .text:0x0000E11C; // type:function size:0x4A4 +fn_1_E5C0 = .text:0x0000E5C0; // type:function size:0x4CC +fn_1_EA8C = .text:0x0000EA8C; // type:function size:0x158 +fn_1_EBE4 = .text:0x0000EBE4; // type:function size:0x118 +fn_1_ECFC = .text:0x0000ECFC; // type:function size:0x1168 +fn_1_FE64 = .text:0x0000FE64; // type:function size:0x28 +fn_1_FE8C = .text:0x0000FE8C; // type:function size:0x2A4 +fn_1_10130 = .text:0x00010130; // type:function size:0x130 +fn_1_10260 = .text:0x00010260; // type:function size:0x3B4 +fn_1_10614 = .text:0x00010614; // type:function size:0xF8 +fn_1_1070C = .text:0x0001070C; // type:function size:0x34 +fn_1_10740 = .text:0x00010740; // type:function size:0x70 +fn_1_107B0 = .text:0x000107B0; // type:function size:0x98 +fn_1_10848 = .text:0x00010848; // type:function size:0x30 +fn_1_10878 = .text:0x00010878; // type:function size:0x4C +fn_1_108C4 = .text:0x000108C4; // type:function size:0x3C +fn_1_10900 = .text:0x00010900; // type:function size:0x28 +fn_1_10928 = .text:0x00010928; // type:function size:0x1F8 +fn_1_10B20 = .text:0x00010B20; // type:function size:0x204 +fn_1_10D24 = .text:0x00010D24; // type:function size:0x180 +fn_1_10EA4 = .text:0x00010EA4; // type:function size:0x28 +fn_1_10ECC = .text:0x00010ECC; // type:function size:0x34 +fn_1_10F00 = .text:0x00010F00; // type:function size:0x38 +fn_1_10F38 = .text:0x00010F38; // type:function size:0x34 +fn_1_10F6C = .text:0x00010F6C; // type:function size:0x38 +fn_1_10FA4 = .text:0x00010FA4; // type:function size:0x38 +fn_1_10FDC = .text:0x00010FDC; // type:function size:0x28 +fn_1_11004 = .text:0x00011004; // type:function size:0x5C +fn_1_11060 = .text:0x00011060; // type:function size:0x38 +fn_1_11098 = .text:0x00011098; // type:function size:0x98 +fn_1_11130 = .text:0x00011130; // type:function size:0x1B0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x10 data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0xC0 +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x10 data:4byte +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x10 data:4byte +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 data:4byte +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 data:4byte +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 data:4byte +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 data:4byte +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 data:double +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 data:double +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:4byte +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 data:double +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x24 data:4byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:4byte +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:4byte +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x8 data:4byte +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:4byte +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 data:float +lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 data:float +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 data:float +lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 data:float +lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x4 data:float +lbl_1_rodata_674 = .rodata:0x00000674; // type:object size:0x4 data:float +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float +lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 data:float +lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 data:float +lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 data:float +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0xC data:float +lbl_1_data_58 = .data:0x00000058; // type:object size:0x50 data:float +jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C data:4byte +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x38 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x38 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 +lbl_1_data_180 = .data:0x00000180; // type:object size:0x44 +lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x44 +lbl_1_data_208 = .data:0x00000208; // type:object size:0x44 +lbl_1_data_24C = .data:0x0000024C; // type:object size:0x1A4 +lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x38 +lbl_1_data_428 = .data:0x00000428; // type:object size:0x9 data:string +lbl_1_data_431 = .data:0x00000431; // type:object size:0x9 data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0xB data:string +lbl_1_data_445 = .data:0x00000445; // type:object size:0xB data:string +lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 +lbl_1_data_468 = .data:0x00000468; // type:object size:0x24 +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x48 +lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C +lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 +lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 data:string +lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 data:string +lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 data:string +lbl_1_data_590 = .data:0x00000590; // type:object size:0x15 data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x15 data:string +lbl_1_data_5BA = .data:0x000005BA; // type:object size:0x18 data:string +lbl_1_data_5D2 = .data:0x000005D2; // type:object size:0x18 data:string +lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 data:string +lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 data:string +lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 data:string +lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 data:string +lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 +jumptable_1_data_654 = .data:0x00000654; // type:object size:0x20 scope:local +lbl_1_data_674 = .data:0x00000674; // type:object size:0xC +lbl_1_data_680 = .data:0x00000680; // type:object size:0x8 +lbl_1_data_688 = .data:0x00000688; // type:object size:0x28 +lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 +lbl_1_data_6C0 = .data:0x000006C0; // type:object size:0xB0 data:4byte +lbl_1_data_770 = .data:0x00000770; // type:object size:0x24 +lbl_1_data_794 = .data:0x00000794; // type:object size:0x6C +lbl_1_data_800 = .data:0x00000800; // type:object size:0x24 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xA data:2byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0xC data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x6F0 +lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x80 +lbl_1_bss_7A8 = .bss:0x000007A8; // type:object size:0x4 data:4byte +lbl_1_bss_7AC = .bss:0x000007AC; // type:object size:0x4 data:4byte +lbl_1_bss_7B0 = .bss:0x000007B0; // type:object size:0x8 data:4byte +lbl_1_bss_7B8 = .bss:0x000007B8; // type:object size:0x10 +lbl_1_bss_7C8 = .bss:0x000007C8; // type:object size:0x4 data:4byte +lbl_1_bss_7CC = .bss:0x000007CC; // type:object size:0x4 data:4byte +lbl_1_bss_7D0 = .bss:0x000007D0; // type:object size:0x14 diff --git a/config/GMPJ01_00/rels/m438Dll/splits.txt b/config/GMPJ01_00/rels/m438Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m438Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m438Dll/symbols.txt b/config/GMPJ01_00/rels/m438Dll/symbols.txt new file mode 100644 index 00000000..7ea887f2 --- /dev/null +++ b/config/GMPJ01_00/rels/m438Dll/symbols.txt @@ -0,0 +1,462 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x43C +fn_1_4DC = .text:0x000004DC; // type:function size:0x20 +fn_1_4FC = .text:0x000004FC; // type:function size:0x478 +fn_1_974 = .text:0x00000974; // type:function size:0x800 +fn_1_1174 = .text:0x00001174; // type:function size:0x90 +fn_1_1204 = .text:0x00001204; // type:function size:0x19C +fn_1_13A0 = .text:0x000013A0; // type:function size:0x9C0 +fn_1_1D60 = .text:0x00001D60; // type:function size:0x1AC +fn_1_1F0C = .text:0x00001F0C; // type:function size:0x164 +fn_1_2070 = .text:0x00002070; // type:function size:0x4F4 +fn_1_2564 = .text:0x00002564; // type:function size:0xA0 +fn_1_2604 = .text:0x00002604; // type:function size:0x2B8 +fn_1_28BC = .text:0x000028BC; // type:function size:0x28 +fn_1_28E4 = .text:0x000028E4; // type:function size:0x80 +fn_1_2964 = .text:0x00002964; // type:function size:0x3EC +fn_1_2D50 = .text:0x00002D50; // type:function size:0xFC +fn_1_2E4C = .text:0x00002E4C; // type:function size:0x770 +fn_1_35BC = .text:0x000035BC; // type:function size:0x4 +fn_1_35C0 = .text:0x000035C0; // type:function size:0xDB4 +fn_1_4374 = .text:0x00004374; // type:function size:0x3B0 +fn_1_4724 = .text:0x00004724; // type:function size:0x260 +fn_1_4984 = .text:0x00004984; // type:function size:0x5CC +fn_1_4F50 = .text:0x00004F50; // type:function size:0xDFC +fn_1_5D4C = .text:0x00005D4C; // type:function size:0x570 +fn_1_62BC = .text:0x000062BC; // type:function size:0xF4 +fn_1_63B0 = .text:0x000063B0; // type:function size:0x68C +fn_1_6A3C = .text:0x00006A3C; // type:function size:0x8C4 +fn_1_7300 = .text:0x00007300; // type:function size:0x558 +fn_1_7858 = .text:0x00007858; // type:function size:0x300 +fn_1_7B58 = .text:0x00007B58; // type:function size:0x64 +fn_1_7BBC = .text:0x00007BBC; // type:function size:0x40 +fn_1_7BFC = .text:0x00007BFC; // type:function size:0xA0 +fn_1_7C9C = .text:0x00007C9C; // type:function size:0x94 +fn_1_7D30 = .text:0x00007D30; // type:function size:0x84 +fn_1_7DB4 = .text:0x00007DB4; // type:function size:0x24 +fn_1_7DD8 = .text:0x00007DD8; // type:function size:0x104 +fn_1_7EDC = .text:0x00007EDC; // type:function size:0x168 +fn_1_8044 = .text:0x00008044; // type:function size:0x120 +fn_1_8164 = .text:0x00008164; // type:function size:0x39C +fn_1_8500 = .text:0x00008500; // type:function size:0x250 +fn_1_8750 = .text:0x00008750; // type:function size:0x78 +fn_1_87C8 = .text:0x000087C8; // type:function size:0x11C +fn_1_88E4 = .text:0x000088E4; // type:function size:0x78 +fn_1_895C = .text:0x0000895C; // type:function size:0x2D8 +fn_1_8C34 = .text:0x00008C34; // type:function size:0x2B8 +fn_1_8EEC = .text:0x00008EEC; // type:function size:0x154 +fn_1_9040 = .text:0x00009040; // type:function size:0x3E0 +fn_1_9420 = .text:0x00009420; // type:function size:0x214 +fn_1_9634 = .text:0x00009634; // type:function size:0x198 +fn_1_97CC = .text:0x000097CC; // type:function size:0xD8 +fn_1_98A4 = .text:0x000098A4; // type:function size:0xBC +fn_1_9960 = .text:0x00009960; // type:function size:0x33C +fn_1_9C9C = .text:0x00009C9C; // type:function size:0x4B0 +fn_1_A14C = .text:0x0000A14C; // type:function size:0x4C0 +fn_1_A60C = .text:0x0000A60C; // type:function size:0x7C +fn_1_A688 = .text:0x0000A688; // type:function size:0x4 +fn_1_A68C = .text:0x0000A68C; // type:function size:0x270 +fn_1_A8FC = .text:0x0000A8FC; // type:function size:0x51C +fn_1_AE18 = .text:0x0000AE18; // type:function size:0x628 +fn_1_B440 = .text:0x0000B440; // type:function size:0x98 +fn_1_B4D8 = .text:0x0000B4D8; // type:function size:0x70 +fn_1_B548 = .text:0x0000B548; // type:function size:0x4 +fn_1_B54C = .text:0x0000B54C; // type:function size:0x9D4 +fn_1_BF20 = .text:0x0000BF20; // type:function size:0x844 +fn_1_C764 = .text:0x0000C764; // type:function size:0x184 +fn_1_C8E8 = .text:0x0000C8E8; // type:function size:0x1C8 +fn_1_CAB0 = .text:0x0000CAB0; // type:function size:0x94C +fn_1_D3FC = .text:0x0000D3FC; // type:function size:0x180 +fn_1_D57C = .text:0x0000D57C; // type:function size:0x4E8 +fn_1_DA64 = .text:0x0000DA64; // type:function size:0x43C +fn_1_DEA0 = .text:0x0000DEA0; // type:function size:0xD0 +fn_1_DF70 = .text:0x0000DF70; // type:function size:0xC4 +fn_1_E034 = .text:0x0000E034; // type:function size:0x454 +fn_1_E488 = .text:0x0000E488; // type:function size:0x11C +fn_1_E5A4 = .text:0x0000E5A4; // type:function size:0xB4 +fn_1_E658 = .text:0x0000E658; // type:function size:0x138 +fn_1_E790 = .text:0x0000E790; // type:function size:0xDA8 +fn_1_F538 = .text:0x0000F538; // type:function size:0x12C +fn_1_F664 = .text:0x0000F664; // type:function size:0x1C +fn_1_F680 = .text:0x0000F680; // type:function size:0x2C +fn_1_F6AC = .text:0x0000F6AC; // type:function size:0x1C +fn_1_F6C8 = .text:0x0000F6C8; // type:function size:0x184 +fn_1_F84C = .text:0x0000F84C; // type:function size:0xA0 +fn_1_F8EC = .text:0x0000F8EC; // type:function size:0xA8 +fn_1_F994 = .text:0x0000F994; // type:function size:0x8C +fn_1_FA20 = .text:0x0000FA20; // type:function size:0x98 +fn_1_FAB8 = .text:0x0000FAB8; // type:function size:0x288 +fn_1_FD40 = .text:0x0000FD40; // type:function size:0x518 +fn_1_10258 = .text:0x00010258; // type:function size:0x564 +fn_1_107BC = .text:0x000107BC; // type:function size:0x128 +fn_1_108E4 = .text:0x000108E4; // type:function size:0x2C +fn_1_10910 = .text:0x00010910; // type:function size:0x3A8 +fn_1_10CB8 = .text:0x00010CB8; // type:function size:0x254 +fn_1_10F0C = .text:0x00010F0C; // type:function size:0x80 +fn_1_10F8C = .text:0x00010F8C; // type:function size:0x8C +fn_1_11018 = .text:0x00011018; // type:function size:0x9C +fn_1_110B4 = .text:0x000110B4; // type:function size:0x5A4 +fn_1_11658 = .text:0x00011658; // type:function size:0x238 +fn_1_11890 = .text:0x00011890; // type:function size:0x6C +fn_1_118FC = .text:0x000118FC; // type:function size:0x70 +fn_1_1196C = .text:0x0001196C; // type:function size:0x74 +fn_1_119E0 = .text:0x000119E0; // type:function size:0x84 +fn_1_11A64 = .text:0x00011A64; // type:function size:0x88 +fn_1_11AEC = .text:0x00011AEC; // type:function size:0x8C +fn_1_11B78 = .text:0x00011B78; // type:function size:0x70 +fn_1_11BE8 = .text:0x00011BE8; // type:function size:0x74 +fn_1_11C5C = .text:0x00011C5C; // type:function size:0x6C +fn_1_11CC8 = .text:0x00011CC8; // type:function size:0x70 +fn_1_11D38 = .text:0x00011D38; // type:function size:0x74 +fn_1_11DAC = .text:0x00011DAC; // type:function size:0x6C +fn_1_11E18 = .text:0x00011E18; // type:function size:0x70 +fn_1_11E88 = .text:0x00011E88; // type:function size:0x74 +fn_1_11EFC = .text:0x00011EFC; // type:function size:0x6C +fn_1_11F68 = .text:0x00011F68; // type:function size:0x70 +fn_1_11FD8 = .text:0x00011FD8; // type:function size:0x74 +fn_1_1204C = .text:0x0001204C; // type:function size:0x44 +fn_1_12090 = .text:0x00012090; // type:function size:0x70 +fn_1_12100 = .text:0x00012100; // type:function size:0x74 +fn_1_12174 = .text:0x00012174; // type:function size:0x44 +fn_1_121B8 = .text:0x000121B8; // type:function size:0x70 +fn_1_12228 = .text:0x00012228; // type:function size:0x74 +fn_1_1229C = .text:0x0001229C; // type:function size:0x5C +fn_1_122F8 = .text:0x000122F8; // type:function size:0x80 +fn_1_12378 = .text:0x00012378; // type:function size:0x74 +fn_1_123EC = .text:0x000123EC; // type:function size:0x78 +fn_1_12464 = .text:0x00012464; // type:function size:0x68 +fn_1_124CC = .text:0x000124CC; // type:function size:0x6C +fn_1_12538 = .text:0x00012538; // type:function size:0x68 +fn_1_125A0 = .text:0x000125A0; // type:function size:0x6C +fn_1_1260C = .text:0x0001260C; // type:function size:0x68 +fn_1_12674 = .text:0x00012674; // type:function size:0x6C +fn_1_126E0 = .text:0x000126E0; // type:function size:0x6C +fn_1_1274C = .text:0x0001274C; // type:function size:0x78 +fn_1_127C4 = .text:0x000127C4; // type:function size:0x98 +fn_1_1285C = .text:0x0001285C; // type:function size:0x6C +fn_1_128C8 = .text:0x000128C8; // type:function size:0x78 +fn_1_12940 = .text:0x00012940; // type:function size:0x98 +fn_1_129D8 = .text:0x000129D8; // type:function size:0x70 +fn_1_12A48 = .text:0x00012A48; // type:function size:0x78 +fn_1_12AC0 = .text:0x00012AC0; // type:function size:0x98 +fn_1_12B58 = .text:0x00012B58; // type:function size:0x40 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x10 data:4byte +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x30 data:4byte +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x10 data:byte +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC +lbl_1_data_40 = .data:0x00000040; // type:object size:0x24 +lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte +lbl_1_data_68 = .data:0x00000068; // type:object size:0x420 +lbl_1_data_488 = .data:0x00000488; // type:object size:0x2C +lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x30 +jumptable_1_data_4E4 = .data:0x000004E4; // type:object size:0x2C scope:local +lbl_1_data_514 = .data:0x00000514; // type:object size:0xC +lbl_1_data_520 = .data:0x00000520; // type:object size:0x64 +lbl_1_data_584 = .data:0x00000584; // type:object size:0x64 +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x24 +lbl_1_data_60C = .data:0x0000060C; // type:object size:0x6C +lbl_1_data_678 = .data:0x00000678; // type:object size:0x24 +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x6C +lbl_1_data_708 = .data:0x00000708; // type:object size:0x24 +lbl_1_data_72C = .data:0x0000072C; // type:object size:0x24 +lbl_1_data_750 = .data:0x00000750; // type:object size:0x7 data:string +lbl_1_data_757 = .data:0x00000757; // type:object size:0x7 data:string +lbl_1_data_75E = .data:0x0000075E; // type:object size:0x7 data:string +lbl_1_data_765 = .data:0x00000765; // type:object size:0x7 data:string +lbl_1_data_76C = .data:0x0000076C; // type:object size:0x7 data:string +lbl_1_data_773 = .data:0x00000773; // type:object size:0x7 data:string +lbl_1_data_77A = .data:0x0000077A; // type:object size:0x7 data:string +lbl_1_data_781 = .data:0x00000781; // type:object size:0x7 data:string +lbl_1_data_788 = .data:0x00000788; // type:object size:0x7 data:string +lbl_1_data_78F = .data:0x0000078F; // type:object size:0x8 data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x8 data:string +lbl_1_data_79F = .data:0x0000079F; // type:object size:0x8 data:string +lbl_1_data_7A7 = .data:0x000007A7; // type:object size:0x8 data:string +lbl_1_data_7AF = .data:0x000007AF; // type:object size:0x8 data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x8 data:string +lbl_1_data_7BF = .data:0x000007BF; // type:object size:0x8 data:string +lbl_1_data_7C7 = .data:0x000007C7; // type:object size:0x8 data:string +lbl_1_data_7CF = .data:0x000007CF; // type:object size:0x8 data:string +lbl_1_data_7D7 = .data:0x000007D7; // type:object size:0x8 data:string +lbl_1_data_7DF = .data:0x000007DF; // type:object size:0x8 data:string +lbl_1_data_7E7 = .data:0x000007E7; // type:object size:0x8 data:string +lbl_1_data_7EF = .data:0x000007EF; // type:object size:0x8 data:string +lbl_1_data_7F7 = .data:0x000007F7; // type:object size:0x8 data:string +lbl_1_data_7FF = .data:0x000007FF; // type:object size:0x8 data:string +lbl_1_data_807 = .data:0x00000807; // type:object size:0x8 data:string +lbl_1_data_80F = .data:0x0000080F; // type:object size:0x8 data:string +lbl_1_data_817 = .data:0x00000817; // type:object size:0x8 data:string +lbl_1_data_81F = .data:0x0000081F; // type:object size:0x8 data:string +lbl_1_data_827 = .data:0x00000827; // type:object size:0x8 data:string +lbl_1_data_82F = .data:0x0000082F; // type:object size:0x8 data:string +lbl_1_data_837 = .data:0x00000837; // type:object size:0x8 data:string +lbl_1_data_83F = .data:0x0000083F; // type:object size:0x9 +lbl_1_data_848 = .data:0x00000848; // type:object size:0x80 +lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x9 data:string +lbl_1_data_8D1 = .data:0x000008D1; // type:object size:0x7 data:string +lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x60 +lbl_1_data_938 = .data:0x00000938; // type:object size:0xB data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x288 +lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 data:4byte +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x900 data:float +lbl_1_bss_B98 = .bss:0x00000B98; // type:object size:0xC data:4byte +lbl_1_bss_BA4 = .bss:0x00000BA4; // type:object size:0x200 +lbl_1_bss_DA4 = .bss:0x00000DA4; // type:object size:0x4 data:4byte +lbl_1_bss_DA8 = .bss:0x00000DA8; // type:object size:0x2 data:2byte +lbl_1_bss_DAA = .bss:0x00000DAA; // type:object size:0x8 data:2byte +lbl_1_bss_DB2 = .bss:0x00000DB2; // type:object size:0x2 data:2byte +lbl_1_bss_DB4 = .bss:0x00000DB4; // type:object size:0x2 data:2byte +lbl_1_bss_DB6 = .bss:0x00000DB6; // type:object size:0x2 data:2byte +lbl_1_bss_DB8 = .bss:0x00000DB8; // type:object size:0x2 data:2byte +lbl_1_bss_DBA = .bss:0x00000DBA; // type:object size:0x2 data:2byte +lbl_1_bss_DBC = .bss:0x00000DBC; // type:object size:0x4 data:4byte +lbl_1_bss_DC0 = .bss:0x00000DC0; // type:object size:0x4 data:4byte +lbl_1_bss_DC4 = .bss:0x00000DC4; // type:object size:0x10 +lbl_1_bss_DD4 = .bss:0x00000DD4; // type:object size:0x4 data:4byte +lbl_1_bss_DD8 = .bss:0x00000DD8; // type:object size:0x4 data:4byte +lbl_1_bss_DDC = .bss:0x00000DDC; // type:object size:0x4 data:4byte +lbl_1_bss_DE0 = .bss:0x00000DE0; // type:object size:0x4 data:4byte +lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x48 data:4byte +lbl_1_bss_E2C = .bss:0x00000E2C; // type:object size:0x4 data:4byte +lbl_1_bss_E30 = .bss:0x00000E30; // type:object size:0x4 data:4byte +lbl_1_bss_E34 = .bss:0x00000E34; // type:object size:0x258 data:4byte +lbl_1_bss_108C = .bss:0x0000108C; // type:object size:0x18 data:4byte diff --git a/config/GMPJ01_00/rels/m444dll/splits.txt b/config/GMPJ01_00/rels/m444dll/splits.txt new file mode 100644 index 00000000..d8c548ff --- /dev/null +++ b/config/GMPJ01_00/rels/m444dll/splits.txt @@ -0,0 +1,32 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m444dll/main.c: + .text start:0x000000A0 end:0x00008434 + .rodata start:0x00000000 end:0x00000278 + .data start:0x00000000 end:0x00000258 + .bss start:0x00000000 end:0x00000310 + +REL/m444dll/pinball.c: + .text start:0x00008434 end:0x0000D598 + .rodata start:0x00000278 end:0x00000428 + .data start:0x00000258 end:0x00000470 + .bss start:0x00000310 end:0x00019904 + +REL/m444dll/datalist.c: + .text start:0x0000D598 end:0x0000D9D8 + .rodata start:0x00000428 end:0x00000438 + .data start:0x00000470 end:0x000016EC + .bss start:0x00019908 end:0x00019A76 + +REL/m444dll/shadow.c: + .text start:0x0000D9D8 end:0x0000DE30 + .rodata start:0x00000438 end:0x00000474 diff --git a/config/GMPJ01_00/rels/m444dll/symbols.txt b/config/GMPJ01_00/rels/m444dll/symbols.txt new file mode 100644 index 00000000..a6bc53d3 --- /dev/null +++ b/config/GMPJ01_00/rels/m444dll/symbols.txt @@ -0,0 +1,320 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x3E0 +fn_1_470 = .text:0x00000480; // type:function size:0x370C +fn_1_3B7C = .text:0x00003B8C; // type:function size:0x1270 +fn_1_4DEC = .text:0x00004DFC; // type:function size:0x7C4 +fn_1_55B0 = .text:0x000055C0; // type:function size:0x1C4 +fn_1_5774 = .text:0x00005784; // type:function size:0x6F4 +fn_1_5E68 = .text:0x00005E78; // type:function size:0x6F4 +fn_1_655C = .text:0x0000656C; // type:function size:0x824 +fn_1_6D80 = .text:0x00006D90; // type:function size:0xBC +fn_1_6E3C = .text:0x00006E4C; // type:function size:0xA0 +fn_1_6EDC = .text:0x00006EEC; // type:function size:0x3B4 +fn_1_7290 = .text:0x000072A0; // type:function size:0xC2C +fn_1_7EBC = .text:0x00007ECC; // type:function size:0x2C4 +fn_1_8180 = .text:0x00008190; // type:function size:0x90 +fn_1_8210 = .text:0x00008220; // type:function size:0xEC +fn_1_82FC = .text:0x0000830C; // type:function size:0x128 +fn_1_8424 = .text:0x00008434; // type:function size:0x1F8 +fn_1_861C = .text:0x0000862C; // type:function size:0x7B4 +fn_1_8DD0 = .text:0x00008DE0; // type:function size:0x648 +fn_1_9418 = .text:0x00009428; // type:function size:0x894 +fn_1_9CAC = .text:0x00009CBC; // type:function size:0x3B4 +fn_1_A060 = .text:0x0000A070; // type:function size:0xB70 +fn_1_ABD0 = .text:0x0000ABE0; // type:function size:0x618 +fn_1_B1E8 = .text:0x0000B1F8; // type:function size:0x102C +fn_1_C214 = .text:0x0000C224; // type:function size:0x528 +fn_1_C73C = .text:0x0000C74C; // type:function size:0x2F4 +fn_1_CA30 = .text:0x0000CA40; // type:function size:0x140 +fn_1_CB70 = .text:0x0000CB80; // type:function size:0x298 +fn_1_CE08 = .text:0x0000CE18; // type:function size:0x194 +fn_1_CF9C = .text:0x0000CFAC; // type:function size:0x244 +fn_1_D1E0 = .text:0x0000D1F0; // type:function size:0x3A8 +fn_1_D588 = .text:0x0000D598; // type:function size:0x290 +fn_1_D818 = .text:0x0000D828; // type:function size:0x138 +fn_1_D950 = .text:0x0000D960; // type:function size:0x78 +fn_1_D9C8 = .text:0x0000D9D8; // type:function size:0x2C +fn_1_D9F4 = .text:0x0000DA04; // type:function size:0x42C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x118 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x28 +lbl_1_data_140 = .data:0x00000140; // type:object size:0x54 data:float +lbl_1_data_194 = .data:0x00000194; // type:object size:0x20 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 scope:local data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA scope:local data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA scope:local data:string +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA scope:local data:string +lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD scope:local data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0xD scope:local data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xD scope:local data:string +lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD scope:local data:string +lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB scope:local data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0xB scope:local data:string +lbl_1_data_240 = .data:0x00000240; // type:object size:0x4 +lbl_1_data_244 = .data:0x00000244; // type:object size:0xA scope:local data:string +lbl_1_data_24E = .data:0x0000024E; // type:object size:0xA scope:local +lbl_1_data_258 = .data:0x00000258; // type:object size:0xC +lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C +lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0xA +lbl_1_data_2D2 = .data:0x000002D2; // type:object size:0xD scope:local data:string +lbl_1_data_2DF = .data:0x000002DF; // type:object size:0xD scope:local data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xD scope:local data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0xD scope:local data:string +lbl_1_data_306 = .data:0x00000306; // type:object size:0xD scope:local data:string +lbl_1_data_313 = .data:0x00000313; // type:object size:0xD scope:local data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0xD scope:local data:string +lbl_1_data_32D = .data:0x0000032D; // type:object size:0xD scope:local data:string +lbl_1_data_33A = .data:0x0000033A; // type:object size:0xD scope:local data:string +lbl_1_data_347 = .data:0x00000347; // type:object size:0xD scope:local data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0xD scope:local data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0xD scope:local data:string +lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD scope:local data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD scope:local data:string +jumptable_1_data_388 = .data:0x00000388; // type:object size:0x1C scope:local +lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x8 +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x30 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x24 +lbl_1_data_400 = .data:0x00000400; // type:object size:0x54 +lbl_1_data_454 = .data:0x00000454; // type:object size:0xC +lbl_1_data_460 = .data:0x00000460; // type:object size:0x10 scope:local data:string +lbl_1_data_470 = .data:0x00000470; // type:object size:0x127C +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x140 data:2byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x140 data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x8 data:float +lbl_1_bss_290 = .bss:0x00000290; // type:object size:0x18 data:4byte +lbl_1_bss_2A8 = .bss:0x000002A8; // type:object size:0x18 data:float +lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0x10 data:2byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x2 data:2byte +lbl_1_bss_2D2 = .bss:0x000002D2; // type:object size:0x2 data:2byte +lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x2 data:2byte +lbl_1_bss_2D6 = .bss:0x000002D6; // type:object size:0x2 data:2byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x2 data:2byte +lbl_1_bss_2DA = .bss:0x000002DA; // type:object size:0x2 data:2byte +lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x2 data:2byte +lbl_1_bss_2E0 = .bss:0x000002E0; // type:object size:0x4 data:float +lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0xC data:float +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0xC data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0x4 data:4byte +lbl_1_bss_310 = .bss:0x00000310; // type:object size:0x1 data:byte +lbl_1_bss_312 = .bss:0x00000312; // type:object size:0x2 data:2byte +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0xC data:float +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x8 data:2byte +lbl_1_bss_328 = .bss:0x00000328; // type:object size:0x24 data:float +lbl_1_bss_34C = .bss:0x0000034C; // type:object size:0x24 data:float +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0x400 +lbl_1_bss_770 = .bss:0x00000770; // type:object size:0xC data:float +lbl_1_bss_77C = .bss:0x0000077C; // type:object size:0xC data:float +lbl_1_bss_788 = .bss:0x00000788; // type:object size:0xC +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x90 +lbl_1_bss_824 = .bss:0x00000824; // type:object size:0x3C +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x24 +lbl_1_bss_884 = .bss:0x00000884; // type:object size:0x1000 +lbl_1_bss_1884 = .bss:0x00001884; // type:object size:0x2 data:2byte +lbl_1_bss_1888 = .bss:0x00001888; // type:object size:0xC data:float +lbl_1_bss_1894 = .bss:0x00001894; // type:object size:0xC data:float +lbl_1_bss_18A0 = .bss:0x000018A0; // type:object size:0x14 +lbl_1_bss_18B4 = .bss:0x000018B4; // type:object size:0x3C +lbl_1_bss_18F0 = .bss:0x000018F0; // type:object size:0xC000 +lbl_1_bss_D8F0 = .bss:0x0000D8F0; // type:object size:0xC000 +lbl_1_bss_198F0 = .bss:0x000198F0; // type:object size:0x14 +lbl_1_bss_1990A = .bss:0x0001990A; // type:object size:0x2 data:2byte +lbl_1_bss_1990E = .bss:0x0001990E; // type:object size:0xB4 data:2byte +lbl_1_bss_199C2 = .bss:0x000199C2; // type:object size:0xB4 data:2byte diff --git a/config/GMPJ01_00/rels/m449Dll/splits.txt b/config/GMPJ01_00/rels/m449Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m449Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m449Dll/symbols.txt b/config/GMPJ01_00/rels/m449Dll/symbols.txt new file mode 100644 index 00000000..d2709158 --- /dev/null +++ b/config/GMPJ01_00/rels/m449Dll/symbols.txt @@ -0,0 +1,210 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x358 +fn_1_3F8 = .text:0x000003F8; // type:function size:0x360 +fn_1_758 = .text:0x00000758; // type:function size:0x5EB8 +fn_1_6610 = .text:0x00006610; // type:function size:0x8 +fn_1_6618 = .text:0x00006618; // type:function size:0x2C +fn_1_6644 = .text:0x00006644; // type:function size:0x140 +fn_1_6784 = .text:0x00006784; // type:function size:0xCC +fn_1_6850 = .text:0x00006850; // type:function size:0x958 +fn_1_71A8 = .text:0x000071A8; // type:function size:0x39C +fn_1_7544 = .text:0x00007544; // type:function size:0x988 +fn_1_7ECC = .text:0x00007ECC; // type:function size:0xC8 +fn_1_7F94 = .text:0x00007F94; // type:function size:0x5A4 +fn_1_8538 = .text:0x00008538; // type:function size:0xFC0 +fn_1_94F8 = .text:0x000094F8; // type:function size:0xE0 +fn_1_95D8 = .text:0x000095D8; // type:function size:0x460 +fn_1_9A38 = .text:0x00009A38; // type:function size:0x9C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC0 +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC0 +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC0 +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x20 data:4byte +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x60 +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x18 data:4byte +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x30 data:4byte +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x20 data:4byte +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:4byte +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x48 +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x48 +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0xC data:4byte +lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0xC data:4byte +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x1 data:byte +lbl_1_rodata_70C = .rodata:0x0000070C; // type:object size:0x4 data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 data:float +lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float +lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 data:float +lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 data:float +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x48 +lbl_1_data_48 = .data:0x00000048; // type:object size:0x48 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x38 +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x50 +lbl_1_data_138 = .data:0x00000138; // type:object size:0x50 +lbl_1_data_188 = .data:0x00000188; // type:object size:0x50 +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x50 +lbl_1_data_228 = .data:0x00000228; // type:object size:0x2 data:2byte +lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x4 data:4byte +lbl_1_data_230 = .data:0x00000230; // type:object size:0xC data:4byte +lbl_1_data_23C = .data:0x0000023C; // type:object size:0x28 data:4byte +lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 +lbl_1_data_284 = .data:0x00000284; // type:object size:0x4 data:4byte +lbl_1_data_288 = .data:0x00000288; // type:object size:0x4 data:float +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x4 data:float +lbl_1_data_290 = .data:0x00000290; // type:object size:0x4 data:float +lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:float +jumptable_1_data_298 = .data:0x00000298; // type:object size:0x1C scope:local +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x90 data:4byte diff --git a/config/GMPJ01_00/rels/m457Dll/splits.txt b/config/GMPJ01_00/rels/m457Dll/splits.txt new file mode 100644 index 00000000..b1f5db69 --- /dev/null +++ b/config/GMPJ01_00/rels/m457Dll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m457Dll/main.c: + .text start:0x000000A0 end:0x00007B60 + .rodata start:0x00000000 end:0x00000578 + .data start:0x00000000 end:0x000003E7 + .bss start:0x00000000 end:0x000000C8 diff --git a/config/GMPJ01_00/rels/m457Dll/symbols.txt b/config/GMPJ01_00/rels/m457Dll/symbols.txt new file mode 100644 index 00000000..fd8c1e4e --- /dev/null +++ b/config/GMPJ01_00/rels/m457Dll/symbols.txt @@ -0,0 +1,178 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +CameraPrintDebug = .text:0x000000A0; // type:function size:0x3CC scope:local +M457PlayerExec = .text:0x0000046C; // type:function size:0x2858 scope:local +M457GameExec = .text:0x00002CC4; // type:function size:0x281C scope:local +WrestleMesMain = .text:0x000054E0; // type:function size:0x220 scope:local +ShoveMesMain = .text:0x00005700; // type:function size:0x29C scope:local +M457Main = .text:0x0000599C; // type:function size:0xB3C scope:local +M457GameSetup = .text:0x000064D8; // type:function size:0xAB8 scope:local +M457PlayerSetup = .text:0x00006F90; // type:function size:0x5F4 scope:local +M457Setup = .text:0x00007584; // type:function size:0xC0 scope:local +ObjectSetup = .text:0x00007644; // type:function size:0x480 +M457Exit = .text:0x00007AC4; // type:function size:0x9C scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x64 +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x90 +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x8 scope:local data:double +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x5C +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x5C +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C data:4byte scope:local +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC scope:local +lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local +lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local +sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float scope:local +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte scope:local +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte scope:local +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 data:4byte scope:local +windSeNo = .data:0x000002AC; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte scope:local +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string +lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string +jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local +jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte scope:local +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float scope:local +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float scope:local +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float scope:local +jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local +jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local +lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string +lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string +lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte scope:local +m457MesEndF = .bss:0x00000010; // type:object size:0x4 data:4byte scope:local +againstBrowserF = .bss:0x00000014; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float scope:local +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float scope:local +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float scope:local +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float scope:local +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte scope:local +lightId = .bss:0x00000048; // type:object size:0x4 data:4byte scope:local +objman = .bss:0x0000004C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte scope:local +gameState = .bss:0x0000005C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte scope:local +gameObj = .bss:0x00000064; // type:object size:0x4 data:4byte scope:local +playerObj = .bss:0x00000068; // type:object size:0x8 data:4byte scope:local +omViewObj = .bss:0x00000070; // type:object size:0x4 data:4byte scope:local +mainObj = .bss:0x00000074; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte scope:local diff --git a/config/GMPJ01_00/rels/m458Dll/splits.txt b/config/GMPJ01_00/rels/m458Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m458Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m458Dll/symbols.txt b/config/GMPJ01_00/rels/m458Dll/symbols.txt new file mode 100644 index 00000000..5c135c78 --- /dev/null +++ b/config/GMPJ01_00/rels/m458Dll/symbols.txt @@ -0,0 +1,176 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x428 +fn_1_4C8 = .text:0x000004C8; // type:function size:0x3044 +fn_1_350C = .text:0x0000350C; // type:function size:0x16DC +fn_1_4BE8 = .text:0x00004BE8; // type:function size:0x15C +fn_1_4D44 = .text:0x00004D44; // type:function size:0x2D0 +fn_1_5014 = .text:0x00005014; // type:function size:0x9C8 +fn_1_59DC = .text:0x000059DC; // type:function size:0x938 +fn_1_6314 = .text:0x00006314; // type:function size:0x548 +fn_1_685C = .text:0x0000685C; // type:function size:0xC0 +fn_1_691C = .text:0x0000691C; // type:function size:0x480 +fn_1_6D9C = .text:0x00006D9C; // type:function size:0xD0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x94 +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x50 +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:4byte +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x70 +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:4byte +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0xC data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0xC data:4byte +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 +lbl_1_data_8 = .data:0x00000008; // type:object size:0x8 data:4byte +lbl_1_data_10 = .data:0x00000010; // type:object size:0x28 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x28 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x28 +lbl_1_data_88 = .data:0x00000088; // type:object size:0xA +lbl_1_data_92 = .data:0x00000092; // type:object size:0xA +lbl_1_data_9C = .data:0x0000009C; // type:object size:0x28 +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x28 +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x28 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x18 data:float +lbl_1_data_12C = .data:0x0000012C; // type:object size:0x2 data:2byte +lbl_1_data_12E = .data:0x0000012E; // type:object size:0x2 data:2byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x4 data:4byte +lbl_1_data_134 = .data:0x00000134; // type:object size:0x4 data:4byte +lbl_1_data_138 = .data:0x00000138; // type:object size:0x24 data:2byte +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x4 data:4byte +lbl_1_data_160 = .data:0x00000160; // type:object size:0x9 data:string +lbl_1_data_169 = .data:0x00000169; // type:object size:0x3 data:string +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 data:4byte +jumptable_1_data_170 = .data:0x00000170; // type:object size:0x30 scope:local +lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x4 data:float +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x4 data:float +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x4 data:float +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x4 data:string +jumptable_1_data_1B4 = .data:0x000001B4; // type:object size:0x34 scope:local +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x2C +lbl_1_data_214 = .data:0x00000214; // type:object size:0x8 data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x19 data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x50 +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x8 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x8 data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x1C0 data:4byte +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x90 diff --git a/config/GMPJ01_00/rels/m459dll/splits.txt b/config/GMPJ01_00/rels/m459dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m459dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m459dll/symbols.txt b/config/GMPJ01_00/rels/m459dll/symbols.txt new file mode 100644 index 00000000..ee18477b --- /dev/null +++ b/config/GMPJ01_00/rels/m459dll/symbols.txt @@ -0,0 +1,169 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x138 +fn_1_1D8 = .text:0x000001D8; // type:function size:0x468 +fn_1_640 = .text:0x00000640; // type:function size:0xFC +fn_1_73C = .text:0x0000073C; // type:function size:0x73C +fn_1_E78 = .text:0x00000E78; // type:function size:0x364 +fn_1_11DC = .text:0x000011DC; // type:function size:0x28 +fn_1_1204 = .text:0x00001204; // type:function size:0x28 +fn_1_122C = .text:0x0000122C; // type:function size:0x200 +fn_1_142C = .text:0x0000142C; // type:function size:0x8C +fn_1_14B8 = .text:0x000014B8; // type:function size:0x2C0 +fn_1_1778 = .text:0x00001778; // type:function size:0x124 +fn_1_189C = .text:0x0000189C; // type:function size:0x118 +fn_1_19B4 = .text:0x000019B4; // type:function size:0x4C +fn_1_1A00 = .text:0x00001A00; // type:function size:0x5DC +fn_1_1FDC = .text:0x00001FDC; // type:function size:0x68 +fn_1_2044 = .text:0x00002044; // type:function size:0x168 +fn_1_21AC = .text:0x000021AC; // type:function size:0x200 +fn_1_23AC = .text:0x000023AC; // type:function size:0x21C +fn_1_25C8 = .text:0x000025C8; // type:function size:0x200 +fn_1_27C8 = .text:0x000027C8; // type:function size:0x168 +fn_1_2930 = .text:0x00002930; // type:function size:0x1F4 +fn_1_2B24 = .text:0x00002B24; // type:function size:0x3F4 +fn_1_2F18 = .text:0x00002F18; // type:function size:0xEC +fn_1_3004 = .text:0x00003004; // type:function size:0x388 +fn_1_338C = .text:0x0000338C; // type:function size:0x374 +fn_1_3700 = .text:0x00003700; // type:function size:0xA60 +fn_1_4160 = .text:0x00004160; // type:function size:0xB0 +fn_1_4210 = .text:0x00004210; // type:function size:0x104 +fn_1_4314 = .text:0x00004314; // type:function size:0x21C +fn_1_4530 = .text:0x00004530; // type:function size:0xBC +fn_1_45EC = .text:0x000045EC; // type:function size:0x178 +fn_1_4764 = .text:0x00004764; // type:function size:0x80 +fn_1_47E4 = .text:0x000047E4; // type:function size:0x6C +fn_1_4850 = .text:0x00004850; // type:function size:0x94 +fn_1_48E4 = .text:0x000048E4; // type:function size:0x190 +fn_1_4A74 = .text:0x00004A74; // type:function size:0xF4 +fn_1_4B68 = .text:0x00004B68; // type:function size:0xB4 +fn_1_4C1C = .text:0x00004C1C; // type:function size:0xB4 +fn_1_4CD0 = .text:0x00004CD0; // type:function size:0x184 +fn_1_4E54 = .text:0x00004E54; // type:function size:0x10 +fn_1_4E64 = .text:0x00004E64; // type:function size:0x20 +fn_1_4E84 = .text:0x00004E84; // type:function size:0x14 +fn_1_4E98 = .text:0x00004E98; // type:function size:0x14 +fn_1_4EAC = .text:0x00004EAC; // type:function size:0xE0 +fn_1_4F8C = .text:0x00004F8C; // type:function size:0x20 +fn_1_4FAC = .text:0x00004FAC; // type:function size:0x1C +fn_1_4FC8 = .text:0x00004FC8; // type:function size:0x310 +fn_1_52D8 = .text:0x000052D8; // type:function size:0x18 +fn_1_52F0 = .text:0x000052F0; // type:function size:0x10 +fn_1_5300 = .text:0x00005300; // type:function size:0x10 +fn_1_5310 = .text:0x00005310; // type:function size:0x4C +fn_1_535C = .text:0x0000535C; // type:function size:0x134 +fn_1_5490 = .text:0x00005490; // type:function size:0xDC +fn_1_556C = .text:0x0000556C; // type:function size:0x44 +fn_1_55B0 = .text:0x000055B0; // type:function size:0x4C8 +fn_1_5A78 = .text:0x00005A78; // type:function size:0x3C4 +fn_1_5E3C = .text:0x00005E3C; // type:function size:0x70 +fn_1_5EAC = .text:0x00005EAC; // type:function size:0x94 +fn_1_5F40 = .text:0x00005F40; // type:function size:0x44 +fn_1_5F84 = .text:0x00005F84; // type:function size:0x214 +fn_1_6198 = .text:0x00006198; // type:function size:0x2C0 +fn_1_6458 = .text:0x00006458; // type:function size:0x128 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x78 +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x18 +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:wstring +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x20 +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x20 +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x19C +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x8 +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x14 +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x14 +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x14 +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x14 +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0xC data:4byte +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0xC data:4byte +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0xC data:4byte +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x48 +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B data:string +lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1D +jumptable_1_data_38 = .data:0x00000038; // type:object size:0x38 scope:local +lbl_1_data_70 = .data:0x00000070; // type:object size:0x1C +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x1 data:byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x30 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x18 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0xC data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0xC data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x50 +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x550 data:4byte +lbl_1_bss_61C = .bss:0x0000061C; // type:object size:0x7C data:float +lbl_1_bss_698 = .bss:0x00000698; // type:object size:0x4C data:4byte +lbl_1_bss_6E4 = .bss:0x000006E4; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/m462Dll/splits.txt b/config/GMPJ01_00/rels/m462Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m462Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m462Dll/symbols.txt b/config/GMPJ01_00/rels/m462Dll/symbols.txt new file mode 100644 index 00000000..619006c8 --- /dev/null +++ b/config/GMPJ01_00/rels/m462Dll/symbols.txt @@ -0,0 +1,144 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x400 +fn_1_4A0 = .text:0x000004A0; // type:function size:0x1014 +fn_1_14B4 = .text:0x000014B4; // type:function size:0x80 +fn_1_1534 = .text:0x00001534; // type:function size:0x80 +fn_1_15B4 = .text:0x000015B4; // type:function size:0x80 +fn_1_1634 = .text:0x00001634; // type:function size:0xC4 +fn_1_16F8 = .text:0x000016F8; // type:function size:0x54 +fn_1_174C = .text:0x0000174C; // type:function size:0x54 +fn_1_17A0 = .text:0x000017A0; // type:function size:0xE0 +fn_1_1880 = .text:0x00001880; // type:function size:0x354 +fn_1_1BD4 = .text:0x00001BD4; // type:function size:0x23C +fn_1_1E10 = .text:0x00001E10; // type:function size:0x11CC +fn_1_2FDC = .text:0x00002FDC; // type:function size:0x14FC +fn_1_44D8 = .text:0x000044D8; // type:function size:0x16C +fn_1_4644 = .text:0x00004644; // type:function size:0x580 +fn_1_4BC4 = .text:0x00004BC4; // type:function size:0x898 +fn_1_545C = .text:0x0000545C; // type:function size:0x4F0 +fn_1_594C = .text:0x0000594C; // type:function size:0x498 +fn_1_5DE4 = .text:0x00005DE4; // type:function size:0x498 +fn_1_627C = .text:0x0000627C; // type:function size:0x74 +fn_1_62F0 = .text:0x000062F0; // type:function size:0x7C +fn_1_636C = .text:0x0000636C; // type:function size:0x48 +fn_1_63B4 = .text:0x000063B4; // type:function size:0x48 +fn_1_63FC = .text:0x000063FC; // type:function size:0x1D4 +fn_1_65D0 = .text:0x000065D0; // type:function size:0x220 +fn_1_67F0 = .text:0x000067F0; // type:function size:0x104 +fn_1_68F4 = .text:0x000068F4; // type:function size:0x70 +fn_1_6964 = .text:0x00006964; // type:function size:0x5C +fn_1_69C0 = .text:0x000069C0; // type:function size:0x137C +fn_1_7D3C = .text:0x00007D3C; // type:function size:0x4 +fn_1_7D40 = .text:0x00007D40; // type:function size:0x60 +fn_1_7DA0 = .text:0x00007DA0; // type:function size:0x3BC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x60 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x30 data:float +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x3C +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x14 data:float +lbl_1_data_110 = .data:0x00000110; // type:object size:0xB data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x48 data:float +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x2D0 +lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x98 data:float +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x4 data:4byte +lbl_1_bss_3DC = .bss:0x000003DC; // type:object size:0x4 data:4byte +lbl_1_bss_3E0 = .bss:0x000003E0; // type:object size:0x4 data:4byte +lbl_1_bss_3E4 = .bss:0x000003E4; // type:object size:0x4 data:4byte +lbl_1_bss_3E8 = .bss:0x000003E8; // type:object size:0x2 data:2byte +lbl_1_bss_3EA = .bss:0x000003EA; // type:object size:0x2 data:2byte diff --git a/config/GMPJ01_00/rels/m463Dll/splits.txt b/config/GMPJ01_00/rels/m463Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/m463Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/m463Dll/symbols.txt b/config/GMPJ01_00/rels/m463Dll/symbols.txt new file mode 100644 index 00000000..87b16e8f --- /dev/null +++ b/config/GMPJ01_00/rels/m463Dll/symbols.txt @@ -0,0 +1,164 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x428 +fn_1_4C8 = .text:0x000004C8; // type:function size:0x2D9C +fn_1_3264 = .text:0x00003264; // type:function size:0x1210 +fn_1_4474 = .text:0x00004474; // type:function size:0x184 +fn_1_45F8 = .text:0x000045F8; // type:function size:0xDA8 +fn_1_53A0 = .text:0x000053A0; // type:function size:0x4B0 +fn_1_5850 = .text:0x00005850; // type:function size:0x854 +fn_1_60A4 = .text:0x000060A4; // type:function size:0x98 +fn_1_613C = .text:0x0000613C; // type:function size:0x460 +fn_1_659C = .text:0x0000659C; // type:function size:0x11C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:4byte +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x94 +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:4byte +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x50 +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x70 +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x24 data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x24 data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x10 data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0xC data:4byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0xC data:4byte +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x1 data:byte +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 +lbl_1_data_24 = .data:0x00000024; // type:object size:0x24 +lbl_1_data_48 = .data:0x00000048; // type:object size:0x24 +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x24 +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 +lbl_1_data_BD = .data:0x000000BD; // type:object size:0xB +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x24 +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x24 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x24 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x18 data:float +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x2 data:2byte +lbl_1_data_14E = .data:0x0000014E; // type:object size:0x2 data:2byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x4 data:4byte +lbl_1_data_154 = .data:0x00000154; // type:object size:0x24 data:4byte +lbl_1_data_178 = .data:0x00000178; // type:object size:0x9 data:string +lbl_1_data_181 = .data:0x00000181; // type:object size:0x3 data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 data:4byte +jumptable_1_data_188 = .data:0x00000188; // type:object size:0x1C scope:local +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x10 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x4 data:4byte +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x4 data:float +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4 data:float +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x4 data:float +jumptable_1_data_1C4 = .data:0x000001C4; // type:object size:0x20 scope:local +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x2C +lbl_1_data_210 = .data:0x00000210; // type:object size:0x19 data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x8 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x8 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x2D0 +lbl_1_bss_32C = .bss:0x0000032C; // type:object size:0x4 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x24 data:4byte +lbl_1_bss_354 = .bss:0x00000354; // type:object size:0x4 data:4byte +lbl_1_bss_358 = .bss:0x00000358; // type:object size:0x4 data:4byte +lbl_1_bss_35C = .bss:0x0000035C; // type:object size:0x1C0 data:4byte +lbl_1_bss_51C = .bss:0x0000051C; // type:object size:0x90 diff --git a/config/GMPJ01_00/rels/mentDll/splits.txt b/config/GMPJ01_00/rels/mentDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/mentDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/mentDll/symbols.txt b/config/GMPJ01_00/rels/mentDll/symbols.txt new file mode 100644 index 00000000..1be34e66 --- /dev/null +++ b/config/GMPJ01_00/rels/mentDll/symbols.txt @@ -0,0 +1,442 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +_prolog = .text:0x000000A4; // type:function size:0x54 scope:global +_epilog = .text:0x000000F8; // type:function size:0x4C scope:global +fn_1_144 = .text:0x00000144; // type:function size:0xC8 +fn_1_20C = .text:0x0000020C; // type:function size:0x28 +fn_1_234 = .text:0x00000234; // type:function size:0x20 +fn_1_254 = .text:0x00000254; // type:function size:0xD8 +fn_1_32C = .text:0x0000032C; // type:function size:0xC8 +fn_1_3F4 = .text:0x000003F4; // type:function size:0xBC +fn_1_4B0 = .text:0x000004B0; // type:function size:0x28 +fn_1_4D8 = .text:0x000004D8; // type:function size:0x20 +fn_1_4F8 = .text:0x000004F8; // type:function size:0x14 +fn_1_50C = .text:0x0000050C; // type:function size:0xDC +fn_1_5E8 = .text:0x000005E8; // type:function size:0xE8 +fn_1_6D0 = .text:0x000006D0; // type:function size:0x24 +fn_1_6F4 = .text:0x000006F4; // type:function size:0xA48 +fn_1_113C = .text:0x0000113C; // type:function size:0x2F8 +fn_1_1434 = .text:0x00001434; // type:function size:0x218 +fn_1_164C = .text:0x0000164C; // type:function size:0x60 +fn_1_16AC = .text:0x000016AC; // type:function size:0x68 +fn_1_1714 = .text:0x00001714; // type:function size:0x90 +fn_1_17A4 = .text:0x000017A4; // type:function size:0x134 +fn_1_18D8 = .text:0x000018D8; // type:function size:0x50 +fn_1_1928 = .text:0x00001928; // type:function size:0x40 +fn_1_1968 = .text:0x00001968; // type:function size:0xF4 +fn_1_1A5C = .text:0x00001A5C; // type:function size:0x37C +fn_1_1DD8 = .text:0x00001DD8; // type:function size:0x37C +fn_1_2154 = .text:0x00002154; // type:function size:0x1C4 +fn_1_2318 = .text:0x00002318; // type:function size:0x54 +fn_1_236C = .text:0x0000236C; // type:function size:0x3E4 +fn_1_2750 = .text:0x00002750; // type:function size:0xB8 +fn_1_2808 = .text:0x00002808; // type:function size:0x3C +fn_1_2844 = .text:0x00002844; // type:function size:0x120 +fn_1_2964 = .text:0x00002964; // type:function size:0x3C +fn_1_29A0 = .text:0x000029A0; // type:function size:0x44 +fn_1_29E4 = .text:0x000029E4; // type:function size:0x26C +fn_1_2C50 = .text:0x00002C50; // type:function size:0x26C +fn_1_2EBC = .text:0x00002EBC; // type:function size:0x27C +fn_1_3138 = .text:0x00003138; // type:function size:0x2B4 +fn_1_33EC = .text:0x000033EC; // type:function size:0x46C +fn_1_3858 = .text:0x00003858; // type:function size:0x454 +fn_1_3CAC = .text:0x00003CAC; // type:function size:0x48C +fn_1_4138 = .text:0x00004138; // type:function size:0x658 +fn_1_4790 = .text:0x00004790; // type:function size:0x4C4 +fn_1_4C54 = .text:0x00004C54; // type:function size:0x4FC +fn_1_5150 = .text:0x00005150; // type:function size:0x6C8 +fn_1_5818 = .text:0x00005818; // type:function size:0x188 +fn_1_59A0 = .text:0x000059A0; // type:function size:0x1B0 +fn_1_5B50 = .text:0x00005B50; // type:function size:0xB8 +fn_1_5C08 = .text:0x00005C08; // type:function size:0xD4 +fn_1_5CDC = .text:0x00005CDC; // type:function size:0x5C +fn_1_5D38 = .text:0x00005D38; // type:function size:0x7FC +fn_1_6534 = .text:0x00006534; // type:function size:0x58 +fn_1_658C = .text:0x0000658C; // type:function size:0x6C0 +fn_1_6C4C = .text:0x00006C4C; // type:function size:0x4D8 +fn_1_7124 = .text:0x00007124; // type:function size:0xF4 +fn_1_7218 = .text:0x00007218; // type:function size:0xEC +fn_1_7304 = .text:0x00007304; // type:function size:0x380 +fn_1_7684 = .text:0x00007684; // type:function size:0x13C +fn_1_77C0 = .text:0x000077C0; // type:function size:0x98 +fn_1_7858 = .text:0x00007858; // type:function size:0xA8 +fn_1_7900 = .text:0x00007900; // type:function size:0x114 +fn_1_7A14 = .text:0x00007A14; // type:function size:0x794 +fn_1_81A8 = .text:0x000081A8; // type:function size:0x30 +fn_1_81D8 = .text:0x000081D8; // type:function size:0x18 +fn_1_81F0 = .text:0x000081F0; // type:function size:0x5C +fn_1_824C = .text:0x0000824C; // type:function size:0x180 +fn_1_83CC = .text:0x000083CC; // type:function size:0x1FC +fn_1_85C8 = .text:0x000085C8; // type:function size:0x2DC +fn_1_88A4 = .text:0x000088A4; // type:function size:0x29C +fn_1_8B40 = .text:0x00008B40; // type:function size:0x28 +fn_1_8B68 = .text:0x00008B68; // type:function size:0x3DC +fn_1_8F44 = .text:0x00008F44; // type:function size:0x54 +fn_1_8F98 = .text:0x00008F98; // type:function size:0x20 +fn_1_8FB8 = .text:0x00008FB8; // type:function size:0x314 +fn_1_92CC = .text:0x000092CC; // type:function size:0x618 +fn_1_98E4 = .text:0x000098E4; // type:function size:0xC8 +fn_1_99AC = .text:0x000099AC; // type:function size:0x20 +fn_1_99CC = .text:0x000099CC; // type:function size:0x6D8 +fn_1_A0A4 = .text:0x0000A0A4; // type:function size:0x20 +fn_1_A0C4 = .text:0x0000A0C4; // type:function size:0x2D8 +fn_1_A39C = .text:0x0000A39C; // type:function size:0x20 +fn_1_A3BC = .text:0x0000A3BC; // type:function size:0x5D4 +fn_1_A990 = .text:0x0000A990; // type:function size:0x20 +fn_1_A9B0 = .text:0x0000A9B0; // type:function size:0x3C8 +fn_1_AD78 = .text:0x0000AD78; // type:function size:0x30C +fn_1_B084 = .text:0x0000B084; // type:function size:0x5D0 +fn_1_B654 = .text:0x0000B654; // type:function size:0xB20 +fn_1_C174 = .text:0x0000C174; // type:function size:0x1E0 +fn_1_C354 = .text:0x0000C354; // type:function size:0xEC +fn_1_C440 = .text:0x0000C440; // type:function size:0x78 +fn_1_C4B8 = .text:0x0000C4B8; // type:function size:0x62C +fn_1_CAE4 = .text:0x0000CAE4; // type:function size:0x288 +fn_1_CD6C = .text:0x0000CD6C; // type:function size:0x20 +fn_1_CD8C = .text:0x0000CD8C; // type:function size:0x200 +fn_1_CF8C = .text:0x0000CF8C; // type:function size:0x384 +fn_1_D310 = .text:0x0000D310; // type:function size:0x20 +fn_1_D330 = .text:0x0000D330; // type:function size:0x20 +fn_1_D350 = .text:0x0000D350; // type:function size:0x2E4 +fn_1_D634 = .text:0x0000D634; // type:function size:0x82C +fn_1_DE60 = .text:0x0000DE60; // type:function size:0x17C +fn_1_DFDC = .text:0x0000DFDC; // type:function size:0x268 +fn_1_E244 = .text:0x0000E244; // type:function size:0x70 +fn_1_E2B4 = .text:0x0000E2B4; // type:function size:0x148 +fn_1_E3FC = .text:0x0000E3FC; // type:function size:0x90 +fn_1_E48C = .text:0x0000E48C; // type:function size:0x1C8 +fn_1_E654 = .text:0x0000E654; // type:function size:0xC8 +fn_1_E71C = .text:0x0000E71C; // type:function size:0x158 +fn_1_E874 = .text:0x0000E874; // type:function size:0xFC8 +fn_1_F83C = .text:0x0000F83C; // type:function size:0x670 +fn_1_FEAC = .text:0x0000FEAC; // type:function size:0x388 +fn_1_10234 = .text:0x00010234; // type:function size:0x308 +fn_1_1053C = .text:0x0001053C; // type:function size:0x7C +fn_1_105B8 = .text:0x000105B8; // type:function size:0x39C +fn_1_10954 = .text:0x00010954; // type:function size:0x308 +fn_1_10C5C = .text:0x00010C5C; // type:function size:0x7C +fn_1_10CD8 = .text:0x00010CD8; // type:function size:0x39C +fn_1_11074 = .text:0x00011074; // type:function size:0x2F4 +fn_1_11368 = .text:0x00011368; // type:function size:0x138 +fn_1_114A0 = .text:0x000114A0; // type:function size:0x74 +fn_1_11514 = .text:0x00011514; // type:function size:0x1E0 +fn_1_116F4 = .text:0x000116F4; // type:function size:0x158 +fn_1_1184C = .text:0x0001184C; // type:function size:0xBC +fn_1_11908 = .text:0x00011908; // type:function size:0x1C8 +fn_1_11AD0 = .text:0x00011AD0; // type:function size:0x2D4 +fn_1_11DA4 = .text:0x00011DA4; // type:function size:0x434 +fn_1_121D8 = .text:0x000121D8; // type:function size:0x624 +fn_1_127FC = .text:0x000127FC; // type:function size:0x210 +fn_1_12A0C = .text:0x00012A0C; // type:function size:0x434 +fn_1_12E40 = .text:0x00012E40; // type:function size:0x508 +fn_1_13348 = .text:0x00013348; // type:function size:0x160 +fn_1_134A8 = .text:0x000134A8; // type:function size:0x1E4 +fn_1_1368C = .text:0x0001368C; // type:function size:0x64 +fn_1_136F0 = .text:0x000136F0; // type:function size:0xB4 +fn_1_137A4 = .text:0x000137A4; // type:function size:0x1CC +fn_1_13970 = .text:0x00013970; // type:function size:0x3F0 +fn_1_13D60 = .text:0x00013D60; // type:function size:0x8C +fn_1_13DEC = .text:0x00013DEC; // type:function size:0xF0 +fn_1_13EDC = .text:0x00013EDC; // type:function size:0x8C +fn_1_13F68 = .text:0x00013F68; // type:function size:0xF0 +fn_1_14058 = .text:0x00014058; // type:function size:0xF0 +fn_1_14148 = .text:0x00014148; // type:function size:0xF0 +fn_1_14238 = .text:0x00014238; // type:function size:0xF0 +fn_1_14328 = .text:0x00014328; // type:function size:0xF0 +fn_1_14418 = .text:0x00014418; // type:function size:0x2B8 +fn_1_146D0 = .text:0x000146D0; // type:function size:0xF0 +fn_1_147C0 = .text:0x000147C0; // type:function size:0xF0 +fn_1_148B0 = .text:0x000148B0; // type:function size:0xF0 +fn_1_149A0 = .text:0x000149A0; // type:function size:0x8C +fn_1_14A2C = .text:0x00014A2C; // type:function size:0x8C +fn_1_14AB8 = .text:0x00014AB8; // type:function size:0xF0 +fn_1_14BA8 = .text:0x00014BA8; // type:function size:0x138 +fn_1_14CE0 = .text:0x00014CE0; // type:function size:0x3B8 +fn_1_15098 = .text:0x00015098; // type:function size:0x120 +fn_1_151B8 = .text:0x000151B8; // type:function size:0x798 +fn_1_15950 = .text:0x00015950; // type:function size:0x364 +fn_1_15CB4 = .text:0x00015CB4; // type:function size:0x5EC +fn_1_162A0 = .text:0x000162A0; // type:function size:0x1EC +fn_1_1648C = .text:0x0001648C; // type:function size:0x6DC +fn_1_16B68 = .text:0x00016B68; // type:function size:0x894 +fn_1_173FC = .text:0x000173FC; // type:function size:0x518 +fn_1_17914 = .text:0x00017914; // type:function size:0xC8 +fn_1_179DC = .text:0x000179DC; // type:function size:0x2EC +fn_1_17CC8 = .text:0x00017CC8; // type:function size:0x454 +fn_1_1811C = .text:0x0001811C; // type:function size:0x3F0 +fn_1_1850C = .text:0x0001850C; // type:function size:0x220 +fn_1_1872C = .text:0x0001872C; // type:function size:0x5C +fn_1_18788 = .text:0x00018788; // type:function size:0x2CC +fn_1_18A54 = .text:0x00018A54; // type:function size:0x378 +fn_1_18DCC = .text:0x00018DCC; // type:function size:0x1A8 +fn_1_18F74 = .text:0x00018F74; // type:function size:0x174 +fn_1_190E8 = .text:0x000190E8; // type:function size:0xBB0 +fn_1_19C98 = .text:0x00019C98; // type:function size:0x1E94 +fn_1_1BB2C = .text:0x0001BB2C; // type:function size:0xA28 +fn_1_1C554 = .text:0x0001C554; // type:function size:0x120 +fn_1_1C674 = .text:0x0001C674; // type:function size:0xE0 +fn_1_1C754 = .text:0x0001C754; // type:function size:0x23C +fn_1_1C990 = .text:0x0001C990; // type:function size:0x238 +fn_1_1CBC8 = .text:0x0001CBC8; // type:function size:0x3A0 +fn_1_1CF68 = .text:0x0001CF68; // type:function size:0x594 +fn_1_1D4FC = .text:0x0001D4FC; // type:function size:0x9CC +fn_1_1DEC8 = .text:0x0001DEC8; // type:function size:0x70 +fn_1_1DF38 = .text:0x0001DF38; // type:function size:0x70 +fn_1_1DFA8 = .text:0x0001DFA8; // type:function size:0x1FC +fn_1_1E1A4 = .text:0x0001E1A4; // type:function size:0x250 +fn_1_1E3F4 = .text:0x0001E3F4; // type:function size:0x4A0 +fn_1_1E894 = .text:0x0001E894; // type:function size:0xD4C +fn_1_1F5E0 = .text:0x0001F5E0; // type:function size:0xC8 +fn_1_1F6A8 = .text:0x0001F6A8; // type:function size:0x1B0 +fn_1_1F858 = .text:0x0001F858; // type:function size:0x1CC +fn_1_1FA24 = .text:0x0001FA24; // type:function size:0x220 +fn_1_1FC44 = .text:0x0001FC44; // type:function size:0x1B4 +fn_1_1FDF8 = .text:0x0001FDF8; // type:function size:0x144 +fn_1_1FF3C = .text:0x0001FF3C; // type:function size:0x610 +fn_1_2054C = .text:0x0002054C; // type:function size:0x260 +fn_1_207AC = .text:0x000207AC; // type:function size:0x138 +fn_1_208E4 = .text:0x000208E4; // type:function size:0x130 +fn_1_20A14 = .text:0x00020A14; // type:function size:0x130 +fn_1_20B44 = .text:0x00020B44; // type:function size:0x5E0 +fn_1_21124 = .text:0x00021124; // type:function size:0x5F0 +fn_1_21714 = .text:0x00021714; // type:function size:0xED0 +fn_1_225E4 = .text:0x000225E4; // type:function size:0xE38 +fn_1_2341C = .text:0x0002341C; // type:function size:0x60C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0xC data:4byte +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x1 data:byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1C data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0xC data:4byte +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x10 data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x18 data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0xC data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC data:4byte +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x18 data:4byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC data:4byte +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC data:4byte +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC data:4byte +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1C data:4byte +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x10 data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x18 data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0xC data:4byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0xC data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x1C data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0xC data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0xC data:4byte +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0xC data:4byte +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0xC data:4byte +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC data:4byte +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x18 data:4byte +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x90 +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x18 data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x40 data:4byte +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 data:4byte +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 data:4byte +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x4 data:4byte +lbl_1_data_74 = .data:0x00000074; // type:object size:0x22 data:string +lbl_1_data_96 = .data:0x00000096; // type:object size:0x1A data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1A data:string +lbl_1_data_CA = .data:0x000000CA; // type:object size:0xE data:string +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x48 data:float +lbl_1_data_120 = .data:0x00000120; // type:object size:0x18 +jumptable_1_data_138 = .data:0x00000138; // type:object size:0x30 scope:local +lbl_1_data_168 = .data:0x00000168; // type:object size:0x16 data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x15 data:string +lbl_1_data_193 = .data:0x00000193; // type:object size:0x17 data:string +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x16 data:string +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x17 data:string +lbl_1_data_1D7 = .data:0x000001D7; // type:object size:0x16 data:string +lbl_1_data_1ED = .data:0x000001ED; // type:object size:0x17 data:string +lbl_1_data_204 = .data:0x00000204; // type:object size:0x16 data:string +lbl_1_data_21A = .data:0x0000021A; // type:object size:0xF data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x1C data:string +lbl_1_data_245 = .data:0x00000245; // type:object size:0x1D data:string +lbl_1_data_262 = .data:0x00000262; // type:object size:0x14 data:string +lbl_1_data_276 = .data:0x00000276; // type:object size:0x15 data:string +lbl_1_data_28B = .data:0x0000028B; // type:object size:0x14 data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x15 +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3C +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 data:string +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 data:string +lbl_1_data_334 = .data:0x00000334; // type:object size:0x2A data:string +lbl_1_data_35E = .data:0x0000035E; // type:object size:0x3 data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0x1B data:string +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1A data:string +lbl_1_data_396 = .data:0x00000396; // type:object size:0x29 data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x2A data:string +lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0x2A data:string +lbl_1_data_413 = .data:0x00000413; // type:object size:0x2B data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x29 data:string +lbl_1_data_467 = .data:0x00000467; // type:object size:0x2B data:string +lbl_1_data_492 = .data:0x00000492; // type:object size:0x20 data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x22 +jumptable_1_data_4D4 = .data:0x000004D4; // type:object size:0x54 scope:local +lbl_1_data_528 = .data:0x00000528; // type:object size:0x1B data:string +lbl_1_data_543 = .data:0x00000543; // type:object size:0x1A data:string +lbl_1_data_55D = .data:0x0000055D; // type:object size:0xF data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 data:string +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x40 +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x20 +lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x64 data:float +lbl_1_data_640 = .data:0x00000640; // type:object size:0x50 data:4byte +lbl_1_data_690 = .data:0x00000690; // type:object size:0x40 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x14 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x10 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x40 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x20 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x15E0 +lbl_1_bss_16C4 = .bss:0x000016C4; // type:object size:0x1A40 +lbl_1_bss_3104 = .bss:0x00003104; // type:object size:0x4 data:4byte +lbl_1_bss_3108 = .bss:0x00003108; // type:object size:0xC data:4byte +lbl_1_bss_3114 = .bss:0x00003114; // type:object size:0x240 data:4byte +lbl_1_bss_3354 = .bss:0x00003354; // type:object size:0x58 data:4byte +lbl_1_bss_33AC = .bss:0x000033AC; // type:object size:0x210 data:4byte +lbl_1_bss_35BC = .bss:0x000035BC; // type:object size:0xB0 data:4byte +lbl_1_bss_366C = .bss:0x0000366C; // type:object size:0x58 data:4byte diff --git a/config/GMPJ01_00/rels/modeseldll/splits.txt b/config/GMPJ01_00/rels/modeseldll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/modeseldll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/modeseldll/symbols.txt b/config/GMPJ01_00/rels/modeseldll/symbols.txt new file mode 100644 index 00000000..9e826608 --- /dev/null +++ b/config/GMPJ01_00/rels/modeseldll/symbols.txt @@ -0,0 +1,270 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x384 +fn_1_424 = .text:0x00000424; // type:function size:0x5E0 +fn_1_A04 = .text:0x00000A04; // type:function size:0xFC +fn_1_B00 = .text:0x00000B00; // type:function size:0x9C +fn_1_B9C = .text:0x00000B9C; // type:function size:0x3B4 +fn_1_F50 = .text:0x00000F50; // type:function size:0xC2C +fn_1_1B7C = .text:0x00001B7C; // type:function size:0x2C4 +fn_1_1E40 = .text:0x00001E40; // type:function size:0x90 +fn_1_1ED0 = .text:0x00001ED0; // type:function size:0x4A8 +fn_1_2378 = .text:0x00002378; // type:function size:0x128 +fn_1_24A0 = .text:0x000024A0; // type:function size:0x11D8 +fn_1_3678 = .text:0x00003678; // type:function size:0x174 +fn_1_37EC = .text:0x000037EC; // type:function size:0x2DC +fn_1_3AC8 = .text:0x00003AC8; // type:function size:0x1B80 +fn_1_5648 = .text:0x00005648; // type:function size:0x19C +fn_1_57E4 = .text:0x000057E4; // type:function size:0x88 +fn_1_586C = .text:0x0000586C; // type:function size:0x35C +fn_1_5BC8 = .text:0x00005BC8; // type:function size:0x8C +fn_1_5C54 = .text:0x00005C54; // type:function size:0xF8 +fn_1_5D4C = .text:0x00005D4C; // type:function size:0x484 +fn_1_61D0 = .text:0x000061D0; // type:function size:0x1134 +fn_1_7304 = .text:0x00007304; // type:function size:0x34C +fn_1_7650 = .text:0x00007650; // type:function size:0x8C +fn_1_76DC = .text:0x000076DC; // type:function size:0x4C0 +fn_1_7B9C = .text:0x00007B9C; // type:function size:0x5B8 +fn_1_8154 = .text:0x00008154; // type:function size:0x288 +fn_1_83DC = .text:0x000083DC; // type:function size:0x18C +fn_1_8568 = .text:0x00008568; // type:function size:0x6F0 +fn_1_8C58 = .text:0x00008C58; // type:function size:0x11DC +fn_1_9E34 = .text:0x00009E34; // type:function size:0x38 +fn_1_9E6C = .text:0x00009E6C; // type:function size:0xAE4 +fn_1_A950 = .text:0x0000A950; // type:function size:0x1F8 +fn_1_AB48 = .text:0x0000AB48; // type:function size:0xE20 +fn_1_B968 = .text:0x0000B968; // type:function size:0x154 +fn_1_BABC = .text:0x0000BABC; // type:function size:0x60 +fn_1_BB1C = .text:0x0000BB1C; // type:function size:0x458 +fn_1_BF74 = .text:0x0000BF74; // type:function size:0x290 +fn_1_C204 = .text:0x0000C204; // type:function size:0x154 +fn_1_C358 = .text:0x0000C358; // type:function size:0x78 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:byte +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x22 data:string +lbl_1_data_5A = .data:0x0000005A; // type:object size:0x14 data:string +lbl_1_data_6E = .data:0x0000006E; // type:object size:0x4 +lbl_1_data_72 = .data:0x00000072; // type:object size:0xA data:string +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x4 data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0xC +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18 +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x18 +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x18 +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x14 data:string +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x9 data:string +lbl_1_data_F1 = .data:0x000000F1; // type:object size:0xF +lbl_1_data_100 = .data:0x00000100; // type:object size:0x11C data:2byte +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x48 data:4byte +lbl_1_data_264 = .data:0x00000264; // type:object size:0x3 +lbl_1_data_267 = .data:0x00000267; // type:object size:0x5 +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x8 +lbl_1_data_274 = .data:0x00000274; // type:object size:0x2 data:string +lbl_1_data_276 = .data:0x00000276; // type:object size:0x2 data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0x8 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:string +lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:string +lbl_1_data_284 = .data:0x00000284; // type:object size:0x4 +lbl_1_data_288 = .data:0x00000288; // type:object size:0xC +lbl_1_data_294 = .data:0x00000294; // type:object size:0x19 data:string +lbl_1_data_2AD = .data:0x000002AD; // type:object size:0x23 data:string +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x1B data:string +lbl_1_data_2EB = .data:0x000002EB; // type:object size:0x19 data:string +lbl_1_data_304 = .data:0x00000304; // type:object size:0x19 data:string +lbl_1_data_31D = .data:0x0000031D; // type:object size:0x20 data:string +lbl_1_data_33D = .data:0x0000033D; // type:object size:0x1B data:string +lbl_1_data_358 = .data:0x00000358; // type:object size:0x1B data:string +lbl_1_data_373 = .data:0x00000373; // type:object size:0x22 data:string +lbl_1_data_395 = .data:0x00000395; // type:object size:0x5 data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0x15 data:string +lbl_1_data_3AF = .data:0x000003AF; // type:object size:0x15 data:string +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x1F data:string +lbl_1_data_3E3 = .data:0x000003E3; // type:object size:0x10 data:string +lbl_1_data_3F3 = .data:0x000003F3; // type:object size:0xD data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x16 +lbl_1_data_416 = .data:0x00000416; // type:object size:0x6 data:string +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x2 data:2byte +lbl_1_data_41E = .data:0x0000041E; // type:object size:0xA +lbl_1_data_428 = .data:0x00000428; // type:object size:0x514 +lbl_1_data_93C = .data:0x0000093C; // type:object size:0x104 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x18 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x30 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0xC data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0xC data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x8 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x2 data:2byte +lbl_1_bss_82 = .bss:0x00000082; // type:object size:0x6 data:2byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x2 data:2byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:float +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x2 data:2byte +lbl_1_bss_92 = .bss:0x00000092; // type:object size:0x6 +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x6 +lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x6 +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x8 +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0xC +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0xC +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0xC +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x18 +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x6 +lbl_1_bss_EE = .bss:0x000000EE; // type:object size:0x6 +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x4 data:4byte +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x4 data:4byte +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x8 data:float +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x8 data:float +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x6 +lbl_1_bss_116 = .bss:0x00000116; // type:object size:0x6 +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x2 data:2byte +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0xC data:4byte +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x8 data:4byte +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x6 +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x6 +lbl_1_bss_146 = .bss:0x00000146; // type:object size:0x2 data:2byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x2 data:2byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x6 +lbl_1_bss_152 = .bss:0x00000152; // type:object size:0x1A data:2byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x30 data:2byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x30 data:2byte diff --git a/config/GMPJ01_00/rels/movieDll/splits.txt b/config/GMPJ01_00/rels/movieDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/movieDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/movieDll/symbols.txt b/config/GMPJ01_00/rels/movieDll/symbols.txt new file mode 100644 index 00000000..9127e46f --- /dev/null +++ b/config/GMPJ01_00/rels/movieDll/symbols.txt @@ -0,0 +1,51 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x23C +fn_1_2DC = .text:0x000002DC; // type:function size:0xE8 +fn_1_3C4 = .text:0x000003C4; // type:function size:0xD90 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_data_4 = .data:0x00000004; // type:object size:0x14 data:string +lbl_1_data_18 = .data:0x00000018; // type:object size:0x14 data:string +lbl_1_data_2C = .data:0x0000002C; // type:object size:0x15 data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x15 data:string +lbl_1_data_56 = .data:0x00000056; // type:object size:0x15 data:string +lbl_1_data_6B = .data:0x0000006B; // type:object size:0x15 data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0x15 data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0x15 data:string +lbl_1_data_AA = .data:0x000000AA; // type:object size:0x15 data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x15 data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x14 data:string +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x14 data:string +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x34 data:4byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2C4 data:2byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x4 data:4byte +lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x4 data:4byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x20 +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x4 data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/mpexDll/splits.txt b/config/GMPJ01_00/rels/mpexDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/mpexDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/mpexDll/symbols.txt b/config/GMPJ01_00/rels/mpexDll/symbols.txt new file mode 100644 index 00000000..17f221a1 --- /dev/null +++ b/config/GMPJ01_00/rels/mpexDll/symbols.txt @@ -0,0 +1,474 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0xE8 +fn_1_188 = .text:0x00000188; // type:function size:0x38 +fn_1_1C0 = .text:0x000001C0; // type:function size:0x70 +fn_1_230 = .text:0x00000230; // type:function size:0x68 +fn_1_298 = .text:0x00000298; // type:function size:0xDC +fn_1_374 = .text:0x00000374; // type:function size:0xC4 +fn_1_438 = .text:0x00000438; // type:function size:0x3E4 +fn_1_81C = .text:0x0000081C; // type:function size:0xB8 +fn_1_8D4 = .text:0x000008D4; // type:function size:0x3C +fn_1_910 = .text:0x00000910; // type:function size:0x124 +fn_1_A34 = .text:0x00000A34; // type:function size:0x3C +fn_1_A70 = .text:0x00000A70; // type:function size:0x44 +fn_1_AB4 = .text:0x00000AB4; // type:function size:0x1D0 +fn_1_C84 = .text:0x00000C84; // type:function size:0x1C4 +fn_1_E48 = .text:0x00000E48; // type:function size:0x200 +fn_1_1048 = .text:0x00001048; // type:function size:0x238 +fn_1_1280 = .text:0x00001280; // type:function size:0x39C +fn_1_161C = .text:0x0000161C; // type:function size:0x200 +fn_1_181C = .text:0x0000181C; // type:function size:0x238 +fn_1_1A54 = .text:0x00001A54; // type:function size:0x39C +fn_1_1DF0 = .text:0x00001DF0; // type:function size:0x200 +fn_1_1FF0 = .text:0x00001FF0; // type:function size:0x238 +fn_1_2228 = .text:0x00002228; // type:function size:0x39C +fn_1_25C4 = .text:0x000025C4; // type:function size:0x178 +fn_1_273C = .text:0x0000273C; // type:function size:0x1A0 +fn_1_28DC = .text:0x000028DC; // type:function size:0x4 +fn_1_28E0 = .text:0x000028E0; // type:function size:0x764 +fn_1_3044 = .text:0x00003044; // type:function size:0x294 +fn_1_32D8 = .text:0x000032D8; // type:function size:0xAC +fn_1_3384 = .text:0x00003384; // type:function size:0x74 +fn_1_33F8 = .text:0x000033F8; // type:function size:0x110 +fn_1_3508 = .text:0x00003508; // type:function size:0x19C +fn_1_36A4 = .text:0x000036A4; // type:function size:0xB4 +fn_1_3758 = .text:0x00003758; // type:function size:0x224 +fn_1_397C = .text:0x0000397C; // type:function size:0x78 +fn_1_39F4 = .text:0x000039F4; // type:function size:0x104 +fn_1_3AF8 = .text:0x00003AF8; // type:function size:0x51C +fn_1_4014 = .text:0x00004014; // type:function size:0x98 +fn_1_40AC = .text:0x000040AC; // type:function size:0x98 +fn_1_4144 = .text:0x00004144; // type:function size:0x40 +fn_1_4184 = .text:0x00004184; // type:function size:0x2C8 +fn_1_444C = .text:0x0000444C; // type:function size:0xC8 +fn_1_4514 = .text:0x00004514; // type:function size:0x21C +fn_1_4730 = .text:0x00004730; // type:function size:0x40 +fn_1_4770 = .text:0x00004770; // type:function size:0x2E8 +fn_1_4A58 = .text:0x00004A58; // type:function size:0xE4 +fn_1_4B3C = .text:0x00004B3C; // type:function size:0x3C +fn_1_4B78 = .text:0x00004B78; // type:function size:0xF4 +fn_1_4C6C = .text:0x00004C6C; // type:function size:0x18C +fn_1_4DF8 = .text:0x00004DF8; // type:function size:0x18C +fn_1_4F84 = .text:0x00004F84; // type:function size:0x2B4 +fn_1_5238 = .text:0x00005238; // type:function size:0x2F8 +fn_1_5530 = .text:0x00005530; // type:function size:0x188 +fn_1_56B8 = .text:0x000056B8; // type:function size:0x128 +fn_1_57E0 = .text:0x000057E0; // type:function size:0x3C +fn_1_581C = .text:0x0000581C; // type:function size:0x140 +fn_1_595C = .text:0x0000595C; // type:function size:0x19C +fn_1_5AF8 = .text:0x00005AF8; // type:function size:0x124 +fn_1_5C1C = .text:0x00005C1C; // type:function size:0x124 +fn_1_5D40 = .text:0x00005D40; // type:function size:0x1E88 +fn_1_7BC8 = .text:0x00007BC8; // type:function size:0x1B8 +fn_1_7D80 = .text:0x00007D80; // type:function size:0x244 +fn_1_7FC4 = .text:0x00007FC4; // type:function size:0x1A8 +fn_1_816C = .text:0x0000816C; // type:function size:0x1B4 +fn_1_8320 = .text:0x00008320; // type:function size:0x2A4 +fn_1_85C4 = .text:0x000085C4; // type:function size:0x194 +fn_1_8758 = .text:0x00008758; // type:function size:0x194 +fn_1_88EC = .text:0x000088EC; // type:function size:0xD8 +fn_1_89C4 = .text:0x000089C4; // type:function size:0x118 +fn_1_8ADC = .text:0x00008ADC; // type:function size:0x540 +fn_1_901C = .text:0x0000901C; // type:function size:0x414 +fn_1_9430 = .text:0x00009430; // type:function size:0x284 +fn_1_96B4 = .text:0x000096B4; // type:function size:0x8C +fn_1_9740 = .text:0x00009740; // type:function size:0x150 +fn_1_9890 = .text:0x00009890; // type:function size:0x78 +fn_1_9908 = .text:0x00009908; // type:function size:0x80 +fn_1_9988 = .text:0x00009988; // type:function size:0x34C +fn_1_9CD4 = .text:0x00009CD4; // type:function size:0x98 +fn_1_9D6C = .text:0x00009D6C; // type:function size:0x1A4 +fn_1_9F10 = .text:0x00009F10; // type:function size:0x1D4 +fn_1_A0E4 = .text:0x0000A0E4; // type:function size:0x1C8 +fn_1_A2AC = .text:0x0000A2AC; // type:function size:0xF8 +fn_1_A3A4 = .text:0x0000A3A4; // type:function size:0x264 +fn_1_A608 = .text:0x0000A608; // type:function size:0x72C +fn_1_AD34 = .text:0x0000AD34; // type:function size:0x2D0 +fn_1_B004 = .text:0x0000B004; // type:function size:0x20C +fn_1_B210 = .text:0x0000B210; // type:function size:0x38 +fn_1_B248 = .text:0x0000B248; // type:function size:0x9C +fn_1_B2E4 = .text:0x0000B2E4; // type:function size:0x510 +fn_1_B7F4 = .text:0x0000B7F4; // type:function size:0x7C +fn_1_B870 = .text:0x0000B870; // type:function size:0x138 +fn_1_B9A8 = .text:0x0000B9A8; // type:function size:0x18C +fn_1_BB34 = .text:0x0000BB34; // type:function size:0xE4 +fn_1_BC18 = .text:0x0000BC18; // type:function size:0xC0 +fn_1_BCD8 = .text:0x0000BCD8; // type:function size:0x38 +fn_1_BD10 = .text:0x0000BD10; // type:function size:0x68 +fn_1_BD78 = .text:0x0000BD78; // type:function size:0x2F4 +fn_1_C06C = .text:0x0000C06C; // type:function size:0x70 +fn_1_C0DC = .text:0x0000C0DC; // type:function size:0x3F8 +fn_1_C4D4 = .text:0x0000C4D4; // type:function size:0x70 +fn_1_C544 = .text:0x0000C544; // type:function size:0x31C +fn_1_C860 = .text:0x0000C860; // type:function size:0x38 +fn_1_C898 = .text:0x0000C898; // type:function size:0x200 +fn_1_CA98 = .text:0x0000CA98; // type:function size:0x478 +fn_1_CF10 = .text:0x0000CF10; // type:function size:0x49C +fn_1_D3AC = .text:0x0000D3AC; // type:function size:0xBC +fn_1_D468 = .text:0x0000D468; // type:function size:0x244 +fn_1_D6AC = .text:0x0000D6AC; // type:function size:0x524 +fn_1_DBD0 = .text:0x0000DBD0; // type:function size:0x5A4 +fn_1_E174 = .text:0x0000E174; // type:function size:0x210 +fn_1_E384 = .text:0x0000E384; // type:function size:0x1E4 +fn_1_E568 = .text:0x0000E568; // type:function size:0x5B4 +fn_1_EB1C = .text:0x0000EB1C; // type:function size:0x25C +fn_1_ED78 = .text:0x0000ED78; // type:function size:0x348 +fn_1_F0C0 = .text:0x0000F0C0; // type:function size:0x324 +fn_1_F3E4 = .text:0x0000F3E4; // type:function size:0x70 +fn_1_F454 = .text:0x0000F454; // type:function size:0x2B4 +fn_1_F708 = .text:0x0000F708; // type:function size:0x174 +fn_1_F87C = .text:0x0000F87C; // type:function size:0x4B0 +fn_1_FD2C = .text:0x0000FD2C; // type:function size:0x370 +fn_1_1009C = .text:0x0001009C; // type:function size:0xCC +fn_1_10168 = .text:0x00010168; // type:function size:0x40 +fn_1_101A8 = .text:0x000101A8; // type:function size:0x1F4 +fn_1_1039C = .text:0x0001039C; // type:function size:0x348 +fn_1_106E4 = .text:0x000106E4; // type:function size:0x70 +fn_1_10754 = .text:0x00010754; // type:function size:0x260 +fn_1_109B4 = .text:0x000109B4; // type:function size:0x174 +fn_1_10B28 = .text:0x00010B28; // type:function size:0x45C +fn_1_10F84 = .text:0x00010F84; // type:function size:0x370 +fn_1_112F4 = .text:0x000112F4; // type:function size:0xCC +fn_1_113C0 = .text:0x000113C0; // type:function size:0x40 +fn_1_11400 = .text:0x00011400; // type:function size:0x1F4 +fn_1_115F4 = .text:0x000115F4; // type:function size:0x15C +fn_1_11750 = .text:0x00011750; // type:function size:0x54 +fn_1_117A4 = .text:0x000117A4; // type:function size:0x5C +fn_1_11800 = .text:0x00011800; // type:function size:0x5C +fn_1_1185C = .text:0x0001185C; // type:function size:0x3EC +fn_1_11C48 = .text:0x00011C48; // type:function size:0x198 +fn_1_11DE0 = .text:0x00011DE0; // type:function size:0x228 +fn_1_12008 = .text:0x00012008; // type:function size:0x3F4 +fn_1_123FC = .text:0x000123FC; // type:function size:0xA0 +fn_1_1249C = .text:0x0001249C; // type:function size:0x224 +fn_1_126C0 = .text:0x000126C0; // type:function size:0x2DC +fn_1_1299C = .text:0x0001299C; // type:function size:0x2C +fn_1_129C8 = .text:0x000129C8; // type:function size:0x518 +fn_1_12EE0 = .text:0x00012EE0; // type:function size:0x2C +fn_1_12F0C = .text:0x00012F0C; // type:function size:0x28 +fn_1_12F34 = .text:0x00012F34; // type:function size:0x274 +fn_1_131A8 = .text:0x000131A8; // type:function size:0x2C +fn_1_131D4 = .text:0x000131D4; // type:function size:0x2C +fn_1_13200 = .text:0x00013200; // type:function size:0x24 +fn_1_13224 = .text:0x00013224; // type:function size:0x2BC +fn_1_134E0 = .text:0x000134E0; // type:function size:0x500 +fn_1_139E0 = .text:0x000139E0; // type:function size:0x480 +fn_1_13E60 = .text:0x00013E60; // type:function size:0x80C +fn_1_1466C = .text:0x0001466C; // type:function size:0x28 +fn_1_14694 = .text:0x00014694; // type:function size:0x28 +fn_1_146BC = .text:0x000146BC; // type:function size:0x21C +fn_1_148D8 = .text:0x000148D8; // type:function size:0x194 +fn_1_14A6C = .text:0x00014A6C; // type:function size:0x198 +fn_1_14C04 = .text:0x00014C04; // type:function size:0x9C +fn_1_14CA0 = .text:0x00014CA0; // type:function size:0x2D8 +fn_1_14F78 = .text:0x00014F78; // type:function size:0x2DC +fn_1_15254 = .text:0x00015254; // type:function size:0x1E0 +fn_1_15434 = .text:0x00015434; // type:function size:0xF0 +fn_1_15524 = .text:0x00015524; // type:function size:0x50 +fn_1_15574 = .text:0x00015574; // type:function size:0x584 +fn_1_15AF8 = .text:0x00015AF8; // type:function size:0x5D8 +fn_1_160D0 = .text:0x000160D0; // type:function size:0x2E0 +fn_1_163B0 = .text:0x000163B0; // type:function size:0x274 +fn_1_16624 = .text:0x00016624; // type:function size:0x7C +fn_1_166A0 = .text:0x000166A0; // type:function size:0x44C +fn_1_16AEC = .text:0x00016AEC; // type:function size:0x434 +fn_1_16F20 = .text:0x00016F20; // type:function size:0x204 +fn_1_17124 = .text:0x00017124; // type:function size:0x790 +fn_1_178B4 = .text:0x000178B4; // type:function size:0xB0C +fn_1_183C0 = .text:0x000183C0; // type:function size:0x720 +fn_1_18AE0 = .text:0x00018AE0; // type:function size:0x9C +fn_1_18B7C = .text:0x00018B7C; // type:function size:0xCCC +fn_1_19848 = .text:0x00019848; // type:function size:0x924 +fn_1_1A16C = .text:0x0001A16C; // type:function size:0x1E8 +fn_1_1A354 = .text:0x0001A354; // type:function size:0x958 +fn_1_1ACAC = .text:0x0001ACAC; // type:function size:0x7C +fn_1_1AD28 = .text:0x0001AD28; // type:function size:0x164 +fn_1_1AE8C = .text:0x0001AE8C; // type:function size:0x1B8 +fn_1_1B044 = .text:0x0001B044; // type:function size:0xA4 +fn_1_1B0E8 = .text:0x0001B0E8; // type:function size:0xF4 +fn_1_1B1DC = .text:0x0001B1DC; // type:function size:0x80 +fn_1_1B25C = .text:0x0001B25C; // type:function size:0x80 +fn_1_1B2DC = .text:0x0001B2DC; // type:function size:0x28 +fn_1_1B304 = .text:0x0001B304; // type:function size:0x20 +fn_1_1B324 = .text:0x0001B324; // type:function size:0xD8 +fn_1_1B3FC = .text:0x0001B3FC; // type:function size:0xC8 +fn_1_1B4C4 = .text:0x0001B4C4; // type:function size:0xBC +fn_1_1B580 = .text:0x0001B580; // type:function size:0x40 +fn_1_1B5C0 = .text:0x0001B5C0; // type:function size:0x24 +fn_1_1B5E4 = .text:0x0001B5E4; // type:function size:0x1C0 +fn_1_1B7A4 = .text:0x0001B7A4; // type:function size:0x84 +fn_1_1B828 = .text:0x0001B828; // type:function size:0xD4 +fn_1_1B8FC = .text:0x0001B8FC; // type:function size:0x58 +fn_1_1B954 = .text:0x0001B954; // type:function size:0x15C +fn_1_1BAB0 = .text:0x0001BAB0; // type:function size:0x1C4 +fn_1_1BC74 = .text:0x0001BC74; // type:function size:0x1AC +fn_1_1BE20 = .text:0x0001BE20; // type:function size:0x54 +fn_1_1BE74 = .text:0x0001BE74; // type:function size:0x304 +fn_1_1C178 = .text:0x0001C178; // type:function size:0x304 +fn_1_1C47C = .text:0x0001C47C; // type:function size:0x340 +fn_1_1C7BC = .text:0x0001C7BC; // type:function size:0xC4 +fn_1_1C880 = .text:0x0001C880; // type:function size:0x47C +fn_1_1CCFC = .text:0x0001CCFC; // type:function size:0x16C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0xC data:4byte +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0xC data:4byte +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x78 +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0xC data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC data:4byte +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC data:4byte +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:4byte +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xB4 +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x6C +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x2C data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0xB0 +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0xC data:4byte +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x18 data:4byte +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC data:4byte +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 data:double +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x38 data:4byte +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4F data:string +lbl_1_data_4F = .data:0x0000004F; // type:object size:0x50 data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0x50 data:string +lbl_1_data_EF = .data:0x000000EF; // type:object size:0x4E data:string +lbl_1_data_13D = .data:0x0000013D; // type:object size:0x50 data:string +lbl_1_data_18D = .data:0x0000018D; // type:object size:0x4F data:string +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 data:string +lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A data:string +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1A data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x62 +lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:4byte +lbl_1_data_298 = .data:0x00000298; // type:object size:0x4 data:4byte +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x18 +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x10 data:4byte +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x4 data:4byte +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x3 data:string +lbl_1_data_2CB = .data:0x000002CB; // type:object size:0x5 data:string +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x19 data:string +lbl_1_data_2E9 = .data:0x000002E9; // type:object size:0x12 data:string +lbl_1_data_2FB = .data:0x000002FB; // type:object size:0x29 +lbl_1_data_324 = .data:0x00000324; // type:object size:0x4 data:4byte +lbl_1_data_328 = .data:0x00000328; // type:object size:0x4 data:4byte +lbl_1_data_32C = .data:0x0000032C; // type:object size:0xC data:4byte +lbl_1_data_338 = .data:0x00000338; // type:object size:0x2B data:string +lbl_1_data_363 = .data:0x00000363; // type:object size:0x28 data:string +lbl_1_data_38B = .data:0x0000038B; // type:object size:0x5 data:string +lbl_1_data_390 = .data:0x00000390; // type:object size:0x4 data:string +lbl_1_data_394 = .data:0x00000394; // type:object size:0x4 +jumptable_1_data_398 = .data:0x00000398; // type:object size:0x2C scope:local +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x3C data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x16 data:string +lbl_1_data_416 = .data:0x00000416; // type:object size:0x1A data:string +lbl_1_data_430 = .data:0x00000430; // type:object size:0x1A data:string +lbl_1_data_44A = .data:0x0000044A; // type:object size:0x1A data:string +lbl_1_data_464 = .data:0x00000464; // type:object size:0x17 data:string +lbl_1_data_47B = .data:0x0000047B; // type:object size:0x16 data:string +lbl_1_data_491 = .data:0x00000491; // type:object size:0x16 data:string +lbl_1_data_4A7 = .data:0x000004A7; // type:object size:0x19 data:string +lbl_1_data_4C0 = .data:0x000004C0; // type:object size:0x16 data:string +lbl_1_data_4D6 = .data:0x000004D6; // type:object size:0x42 +lbl_1_data_518 = .data:0x00000518; // type:object size:0x3C data:string +lbl_1_data_554 = .data:0x00000554; // type:object size:0x19 data:string +lbl_1_data_56D = .data:0x0000056D; // type:object size:0x1A data:string +lbl_1_data_587 = .data:0x00000587; // type:object size:0x3D +lbl_1_data_5C4 = .data:0x000005C4; // type:object size:0x20 data:4byte +lbl_1_data_5E4 = .data:0x000005E4; // type:object size:0x40 data:4byte +lbl_1_data_624 = .data:0x00000624; // type:object size:0x70 +lbl_1_data_694 = .data:0x00000694; // type:object size:0x90 data:4byte +lbl_1_data_724 = .data:0x00000724; // type:object size:0x20 +lbl_1_data_744 = .data:0x00000744; // type:object size:0x8 data:4byte +lbl_1_data_74C = .data:0x0000074C; // type:object size:0x10 +lbl_1_data_75C = .data:0x0000075C; // type:object size:0x20 +lbl_1_data_77C = .data:0x0000077C; // type:object size:0x4 data:4byte +lbl_1_data_780 = .data:0x00000780; // type:object size:0x8 data:4byte +lbl_1_data_788 = .data:0x00000788; // type:object size:0x4C8 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x64 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:float +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x18 +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x8 +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x8 +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x8 +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x8 +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x4 data:4byte +lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x8 +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x8 +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x10 +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x50 +lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x2C data:4byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 data:4byte +lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 data:4byte +lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0x120 data:4byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0xD8 data:4byte +lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x48 data:4byte +lbl_1_bss_3F8 = .bss:0x000003F8; // type:object size:0x48 data:4byte +lbl_1_bss_440 = .bss:0x00000440; // type:object size:0x4 data:4byte +lbl_1_bss_444 = .bss:0x00000444; // type:object size:0x4 data:4byte +lbl_1_bss_448 = .bss:0x00000448; // type:object size:0x14 data:4byte +lbl_1_bss_45C = .bss:0x0000045C; // type:object size:0x180 data:4byte +lbl_1_bss_5DC = .bss:0x000005DC; // type:object size:0x60 data:4byte +lbl_1_bss_63C = .bss:0x0000063C; // type:object size:0x70 data:4byte +lbl_1_bss_6AC = .bss:0x000006AC; // type:object size:0x1 data:byte diff --git a/config/GMPJ01_00/rels/msetupDll/splits.txt b/config/GMPJ01_00/rels/msetupDll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPJ01_00/rels/msetupDll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPJ01_00/rels/msetupDll/symbols.txt b/config/GMPJ01_00/rels/msetupDll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPJ01_00/rels/msetupDll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPJ01_00/rels/mstory2Dll/splits.txt b/config/GMPJ01_00/rels/mstory2Dll/splits.txt new file mode 100644 index 00000000..aa6bd0d5 --- /dev/null +++ b/config/GMPJ01_00/rels/mstory2Dll/splits.txt @@ -0,0 +1,54 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B560 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B560 end:0x0001B95C + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPJ01_00/rels/mstory2Dll/symbols.txt b/config/GMPJ01_00/rels/mstory2Dll/symbols.txt new file mode 100644 index 00000000..c14583cf --- /dev/null +++ b/config/GMPJ01_00/rels/mstory2Dll/symbols.txt @@ -0,0 +1,709 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2A0 +_prolog = .text:0x00000344; // type:function size:0x54 scope:global +_epilog = .text:0x00000398; // type:function size:0x4C scope:global +fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 +fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 +fn_1_864 = .text:0x00000864; // type:function size:0x28 +fn_1_88C = .text:0x0000088C; // type:function size:0x20 +fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 +fn_1_984 = .text:0x00000984; // type:function size:0xC8 +fn_1_A4C = .text:0x00000A4C; // type:function size:0xBC +fn_1_B08 = .text:0x00000B08; // type:function size:0xBC +fn_1_BC4 = .text:0x00000BC4; // type:function size:0x4 +fn_1_BC8 = .text:0x00000BC8; // type:function size:0x20 +fn_1_BE8 = .text:0x00000BE8; // type:function size:0x28 +fn_1_C10 = .text:0x00000C10; // type:function size:0x20 +fn_1_C30 = .text:0x00000C30; // type:function size:0x24 +fn_1_C54 = .text:0x00000C54; // type:function size:0x4 +fn_1_C58 = .text:0x00000C58; // type:function size:0xA48 +fn_1_16A0 = .text:0x000016A0; // type:function size:0x1BC +fn_1_185C = .text:0x0000185C; // type:function size:0x1D8 +fn_1_1A34 = .text:0x00001A34; // type:function size:0x60 +fn_1_1A94 = .text:0x00001A94; // type:function size:0x68 +fn_1_1AFC = .text:0x00001AFC; // type:function size:0xAC +fn_1_1BA8 = .text:0x00001BA8; // type:function size:0xBC +fn_1_1C64 = .text:0x00001C64; // type:function size:0xB4 +fn_1_1D18 = .text:0x00001D18; // type:function size:0x34 +fn_1_1D4C = .text:0x00001D4C; // type:function size:0x40 +fn_1_1D8C = .text:0x00001D8C; // type:function size:0x70 +fn_1_1DFC = .text:0x00001DFC; // type:function size:0x188 +fn_1_1F84 = .text:0x00001F84; // type:function size:0x2E0 +fn_1_2264 = .text:0x00002264; // type:function size:0x90 +fn_1_22F4 = .text:0x000022F4; // type:function size:0x48 +fn_1_233C = .text:0x0000233C; // type:function size:0x54 +fn_1_2390 = .text:0x00002390; // type:function size:0x3C0 +fn_1_2750 = .text:0x00002750; // type:function size:0x10 +fn_1_2760 = .text:0x00002760; // type:function size:0x10 +fn_1_2770 = .text:0x00002770; // type:function size:0xB8 +fn_1_2828 = .text:0x00002828; // type:function size:0x120 +fn_1_2948 = .text:0x00002948; // type:function size:0x3B8 +fn_1_2D00 = .text:0x00002D00; // type:function size:0x7F4 +fn_1_34F4 = .text:0x000034F4; // type:function size:0x88 +fn_1_357C = .text:0x0000357C; // type:function size:0x94 +fn_1_3610 = .text:0x00003610; // type:function size:0x58 +fn_1_3668 = .text:0x00003668; // type:function size:0xEC +fn_1_3754 = .text:0x00003754; // type:function size:0xC4 +fn_1_3818 = .text:0x00003818; // type:function size:0x3C +fn_1_3854 = .text:0x00003854; // type:function size:0x44 +fn_1_3898 = .text:0x00003898; // type:function size:0x26C +fn_1_3B04 = .text:0x00003B04; // type:function size:0x26C +fn_1_3D70 = .text:0x00003D70; // type:function size:0x27C +fn_1_3FEC = .text:0x00003FEC; // type:function size:0x2B4 +fn_1_42A0 = .text:0x000042A0; // type:function size:0x46C +fn_1_470C = .text:0x0000470C; // type:function size:0x454 +fn_1_4B60 = .text:0x00004B60; // type:function size:0x48C +fn_1_4FEC = .text:0x00004FEC; // type:function size:0x658 +fn_1_5644 = .text:0x00005644; // type:function size:0x4C4 +fn_1_5B08 = .text:0x00005B08; // type:function size:0x4FC +fn_1_6004 = .text:0x00006004; // type:function size:0x6C8 +fn_1_66CC = .text:0x000066CC; // type:function size:0x38 +fn_1_6704 = .text:0x00006704; // type:function size:0xD4 +fn_1_67D8 = .text:0x000067D8; // type:function size:0x198 +fn_1_6970 = .text:0x00006970; // type:function size:0x34 +fn_1_69A4 = .text:0x000069A4; // type:function size:0x40 +fn_1_69E4 = .text:0x000069E4; // type:function size:0xAC +fn_1_6A90 = .text:0x00006A90; // type:function size:0x2E8 +fn_1_6D78 = .text:0x00006D78; // type:function size:0x44 +fn_1_6DBC = .text:0x00006DBC; // type:function size:0x1F4 +fn_1_6FB0 = .text:0x00006FB0; // type:function size:0xB4 +fn_1_7064 = .text:0x00007064; // type:function size:0x178 +fn_1_71DC = .text:0x000071DC; // type:function size:0x68 +fn_1_7244 = .text:0x00007244; // type:function size:0x140 +fn_1_7384 = .text:0x00007384; // type:function size:0xA2C +fn_1_7DB0 = .text:0x00007DB0; // type:function size:0x1A4 +fn_1_7F54 = .text:0x00007F54; // type:function size:0x118 +fn_1_806C = .text:0x0000806C; // type:function size:0x8C +fn_1_80F8 = .text:0x000080F8; // type:function size:0x488 +fn_1_8580 = .text:0x00008580; // type:function size:0x5C +fn_1_85DC = .text:0x000085DC; // type:function size:0x1F8 +fn_1_87D4 = .text:0x000087D4; // type:function size:0x2E8 +fn_1_8ABC = .text:0x00008ABC; // type:function size:0x578 +fn_1_9034 = .text:0x00009034; // type:function size:0x164 +fn_1_9198 = .text:0x00009198; // type:function size:0x124 +fn_1_92BC = .text:0x000092BC; // type:function size:0x4AC +fn_1_9768 = .text:0x00009768; // type:function size:0xB4 +fn_1_981C = .text:0x0000981C; // type:function size:0x138 +fn_1_9954 = .text:0x00009954; // type:function size:0xBC +fn_1_9A10 = .text:0x00009A10; // type:function size:0x1C4 +fn_1_9BD4 = .text:0x00009BD4; // type:function size:0xE4 +fn_1_9CB8 = .text:0x00009CB8; // type:function size:0x214 +fn_1_9ECC = .text:0x00009ECC; // type:function size:0x110 +fn_1_9FDC = .text:0x00009FDC; // type:function size:0x2AC +fn_1_A288 = .text:0x0000A288; // type:function size:0x220 +fn_1_A4A8 = .text:0x0000A4A8; // type:function size:0xE4 +fn_1_A58C = .text:0x0000A58C; // type:function size:0x2BC +fn_1_A848 = .text:0x0000A848; // type:function size:0x2C8 +fn_1_AB10 = .text:0x0000AB10; // type:function size:0x2A0 +fn_1_ADB0 = .text:0x0000ADB0; // type:function size:0xAC +fn_1_AE5C = .text:0x0000AE5C; // type:function size:0x364 +fn_1_B1C0 = .text:0x0000B1C0; // type:function size:0x8C +fn_1_B24C = .text:0x0000B24C; // type:function size:0x130 +fn_1_B37C = .text:0x0000B37C; // type:function size:0x68 +fn_1_B3E4 = .text:0x0000B3E4; // type:function size:0x134 +fn_1_B518 = .text:0x0000B518; // type:function size:0x8C +fn_1_B5A4 = .text:0x0000B5A4; // type:function size:0x3E0 +fn_1_B984 = .text:0x0000B984; // type:function size:0x5C +fn_1_B9E0 = .text:0x0000B9E0; // type:function size:0xB0 +fn_1_BA90 = .text:0x0000BA90; // type:function size:0x360 +fn_1_BDF0 = .text:0x0000BDF0; // type:function size:0x158 +fn_1_BF48 = .text:0x0000BF48; // type:function size:0x328 +fn_1_C270 = .text:0x0000C270; // type:function size:0x250 +fn_1_C4C0 = .text:0x0000C4C0; // type:function size:0xB4 +fn_1_C574 = .text:0x0000C574; // type:function size:0x228 +fn_1_C79C = .text:0x0000C79C; // type:function size:0xBC +fn_1_C858 = .text:0x0000C858; // type:function size:0x2B4 +fn_1_CB0C = .text:0x0000CB0C; // type:function size:0x1C0 +fn_1_CCCC = .text:0x0000CCCC; // type:function size:0xAC +fn_1_CD78 = .text:0x0000CD78; // type:function size:0x2B8 +fn_1_D030 = .text:0x0000D030; // type:function size:0x1F4 +fn_1_D224 = .text:0x0000D224; // type:function size:0xAC +fn_1_D2D0 = .text:0x0000D2D0; // type:function size:0xC4 +fn_1_D394 = .text:0x0000D394; // type:function size:0xE4 +fn_1_D478 = .text:0x0000D478; // type:function size:0x2EC +fn_1_D764 = .text:0x0000D764; // type:function size:0x134 +fn_1_D898 = .text:0x0000D898; // type:function size:0x2C0 +fn_1_DB58 = .text:0x0000DB58; // type:function size:0xFC +fn_1_DC54 = .text:0x0000DC54; // type:function size:0x170 +fn_1_DDC4 = .text:0x0000DDC4; // type:function size:0x3F4 +fn_1_E1B8 = .text:0x0000E1B8; // type:function size:0x8C +fn_1_E244 = .text:0x0000E244; // type:function size:0xF0 +fn_1_E334 = .text:0x0000E334; // type:function size:0x23C +fn_1_E570 = .text:0x0000E570; // type:function size:0xC8 +fn_1_E638 = .text:0x0000E638; // type:function size:0x2B4 +fn_1_E8EC = .text:0x0000E8EC; // type:function size:0x140 +fn_1_EA2C = .text:0x0000EA2C; // type:function size:0x134 +fn_1_EB60 = .text:0x0000EB60; // type:function size:0x8C +fn_1_EBEC = .text:0x0000EBEC; // type:function size:0x3E0 +fn_1_EFCC = .text:0x0000EFCC; // type:function size:0x5C +fn_1_F028 = .text:0x0000F028; // type:function size:0x128 +fn_1_F150 = .text:0x0000F150; // type:function size:0xDC +fn_1_F22C = .text:0x0000F22C; // type:function size:0xD0 +fn_1_F2FC = .text:0x0000F2FC; // type:function size:0xD4 +fn_1_F3D0 = .text:0x0000F3D0; // type:function size:0x468 +fn_1_F838 = .text:0x0000F838; // type:function size:0x4 +fn_1_F83C = .text:0x0000F83C; // type:function size:0x78 +fn_1_F8B4 = .text:0x0000F8B4; // type:function size:0x548 +fn_1_FDFC = .text:0x0000FDFC; // type:function size:0xB4 +fn_1_FEB0 = .text:0x0000FEB0; // type:function size:0x228 +fn_1_100D8 = .text:0x000100D8; // type:function size:0xBC +fn_1_10194 = .text:0x00010194; // type:function size:0x2B4 +fn_1_10448 = .text:0x00010448; // type:function size:0x1BC +fn_1_10604 = .text:0x00010604; // type:function size:0xAC +fn_1_106B0 = .text:0x000106B0; // type:function size:0x29C +fn_1_1094C = .text:0x0001094C; // type:function size:0x2B4 +fn_1_10C00 = .text:0x00010C00; // type:function size:0x1F4 +fn_1_10DF4 = .text:0x00010DF4; // type:function size:0xAC +fn_1_10EA0 = .text:0x00010EA0; // type:function size:0xE4 +fn_1_10F84 = .text:0x00010F84; // type:function size:0xC4 +fn_1_11048 = .text:0x00011048; // type:function size:0xE4 +fn_1_1112C = .text:0x0001112C; // type:function size:0x2EC +fn_1_11418 = .text:0x00011418; // type:function size:0x134 +fn_1_1154C = .text:0x0001154C; // type:function size:0x2EC +fn_1_11838 = .text:0x00011838; // type:function size:0xFC +fn_1_11934 = .text:0x00011934; // type:function size:0x164 +fn_1_11A98 = .text:0x00011A98; // type:function size:0x118 +fn_1_11BB0 = .text:0x00011BB0; // type:function size:0x420 +fn_1_11FD0 = .text:0x00011FD0; // type:function size:0x8C +fn_1_1205C = .text:0x0001205C; // type:function size:0x130 +fn_1_1218C = .text:0x0001218C; // type:function size:0x23C +fn_1_123C8 = .text:0x000123C8; // type:function size:0x1A4 +fn_1_1256C = .text:0x0001256C; // type:function size:0x124 +fn_1_12690 = .text:0x00012690; // type:function size:0x8C +fn_1_1271C = .text:0x0001271C; // type:function size:0x3AC +fn_1_12AC8 = .text:0x00012AC8; // type:function size:0x48 +fn_1_12B10 = .text:0x00012B10; // type:function size:0x2C4 +fn_1_12DD4 = .text:0x00012DD4; // type:function size:0x37C +fn_1_13150 = .text:0x00013150; // type:function size:0x70 +fn_1_131C0 = .text:0x000131C0; // type:function size:0xA4 +fn_1_13264 = .text:0x00013264; // type:function size:0x5C4 +fn_1_13828 = .text:0x00013828; // type:function size:0xA4 +fn_1_138CC = .text:0x000138CC; // type:function size:0x14C +fn_1_13A18 = .text:0x00013A18; // type:function size:0x1A0 +fn_1_13BB8 = .text:0x00013BB8; // type:function size:0xB4 +fn_1_13C6C = .text:0x00013C6C; // type:function size:0x348 +fn_1_13FB4 = .text:0x00013FB4; // type:function size:0xEC +fn_1_140A0 = .text:0x000140A0; // type:function size:0xCC +fn_1_1416C = .text:0x0001416C; // type:function size:0x330 +fn_1_1449C = .text:0x0001449C; // type:function size:0x3CC +fn_1_14868 = .text:0x00014868; // type:function size:0x234 +fn_1_14A9C = .text:0x00014A9C; // type:function size:0xAC +fn_1_14B48 = .text:0x00014B48; // type:function size:0xF8 +fn_1_14C40 = .text:0x00014C40; // type:function size:0x32C +fn_1_14F6C = .text:0x00014F6C; // type:function size:0x1C8 +fn_1_15134 = .text:0x00015134; // type:function size:0xAC +fn_1_151E0 = .text:0x000151E0; // type:function size:0xE4 +fn_1_152C4 = .text:0x000152C4; // type:function size:0xE4 +fn_1_153A8 = .text:0x000153A8; // type:function size:0x2C0 +fn_1_15668 = .text:0x00015668; // type:function size:0xE4 +fn_1_1574C = .text:0x0001574C; // type:function size:0x1F8 +fn_1_15944 = .text:0x00015944; // type:function size:0xAC +fn_1_159F0 = .text:0x000159F0; // type:function size:0x2EC +fn_1_15CDC = .text:0x00015CDC; // type:function size:0x8C +fn_1_15D68 = .text:0x00015D68; // type:function size:0xF0 +fn_1_15E58 = .text:0x00015E58; // type:function size:0x118 +fn_1_15F70 = .text:0x00015F70; // type:function size:0xF0 +fn_1_16060 = .text:0x00016060; // type:function size:0x118 +fn_1_16178 = .text:0x00016178; // type:function size:0x8C +fn_1_16204 = .text:0x00016204; // type:function size:0x3AC +fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C +fn_1_1661C = .text:0x0001660C; // type:function size:0x110 +fn_1_1670C = .text:0x0001671C; // type:function size:0x194 +fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 +fn_1_16984 = .text:0x00016984; // type:function size:0x50 +fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 +fn_1_169D8 = .text:0x000169D8; // type:function size:0xF4 +fn_1_16ACC = .text:0x00016ACC; // type:function size:0x4F4 +fn_1_16FC0 = .text:0x00016FC0; // type:function size:0xB4 +fn_1_17074 = .text:0x00017074; // type:function size:0x208 +fn_1_1727C = .text:0x0001727C; // type:function size:0xBC +fn_1_17338 = .text:0x00017338; // type:function size:0x294 +fn_1_175CC = .text:0x000175CC; // type:function size:0x180 +fn_1_1774C = .text:0x0001774C; // type:function size:0xAC +fn_1_177F8 = .text:0x000177F8; // type:function size:0x278 +fn_1_17A70 = .text:0x00017A70; // type:function size:0x128 +fn_1_17B98 = .text:0x00017B98; // type:function size:0xAC +fn_1_17C44 = .text:0x00017C44; // type:function size:0x220 +fn_1_17E64 = .text:0x00017E64; // type:function size:0xE4 +fn_1_17F48 = .text:0x00017F48; // type:function size:0x190 +fn_1_180D8 = .text:0x000180D8; // type:function size:0xAC +fn_1_18184 = .text:0x00018184; // type:function size:0x284 +fn_1_18408 = .text:0x00018408; // type:function size:0x8C +fn_1_18494 = .text:0x00018494; // type:function size:0x23C +fn_1_186D0 = .text:0x000186D0; // type:function size:0x220 +fn_1_188F0 = .text:0x000188F0; // type:function size:0x144 +fn_1_18A34 = .text:0x00018A34; // type:function size:0x8C +fn_1_18AC0 = .text:0x00018AC0; // type:function size:0x3BC +fn_1_18E7C = .text:0x00018E7C; // type:function size:0x48 +fn_1_18EC4 = .text:0x00018EC4; // type:function size:0x274 +fn_1_19138 = .text:0x00019138; // type:function size:0x1FC +fn_1_19334 = .text:0x00019334; // type:function size:0x66C +fn_1_199A0 = .text:0x000199A0; // type:function size:0x248 +fn_1_19BE8 = .text:0x00019BE8; // type:function size:0x84 +fn_1_19C6C = .text:0x00019C6C; // type:function size:0x2A8 +fn_1_19F14 = .text:0x00019F14; // type:function size:0xB4 +fn_1_19FC8 = .text:0x00019FC8; // type:function size:0x198 +fn_1_1A160 = .text:0x0001A160; // type:function size:0x208 +fn_1_1A368 = .text:0x0001A368; // type:function size:0x1D0 +fn_1_1A538 = .text:0x0001A538; // type:function size:0x40 +fn_1_1A578 = .text:0x0001A578; // type:function size:0x254 +fn_1_1A7CC = .text:0x0001A7CC; // type:function size:0x204 +fn_1_1A9D0 = .text:0x0001A9D0; // type:function size:0xE4 +fn_1_1AAB4 = .text:0x0001AAB4; // type:function size:0x288 +fn_1_1AD3C = .text:0x0001AD3C; // type:function size:0xE4 +fn_1_1AE20 = .text:0x0001AE20; // type:function size:0x1B4 +fn_1_1AFD4 = .text:0x0001AFD4; // type:function size:0x110 +fn_1_1B0E4 = .text:0x0001B0E4; // type:function size:0x234 +fn_1_1B318 = .text:0x0001B318; // type:function size:0x8C +fn_1_1B3A4 = .text:0x0001B3A4; // type:function size:0x8C +fn_1_1B430 = .text:0x0001B430; // type:function size:0x130 +fn_1_1B560 = .text:0x0001B560; // type:function size:0xEC +fn_1_1B64C = .text:0x0001B64C; // type:function size:0x224 +fn_1_1B870 = .text:0x0001B870; // type:function size:0x9C +fn_1_1B90C = .text:0x0001B90C; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local +lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string +jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local +jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local +lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 +lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 scope:local +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string +lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 +lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 +lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 +lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte +lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB scope:local +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 scope:local +lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 +lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte +lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte +lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string +lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x40 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x28 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x28 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x28 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x28 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x28 data:4byte +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x104 data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x4 data:4byte +lbl_1_bss_29C = .bss:0x0000029C; // type:object size:0xA0 +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x28 data:4byte +lbl_1_bss_364 = .bss:0x00000364; // type:object size:0x28 data:4byte +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x28 data:4byte +lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x28 data:4byte +lbl_1_bss_3DC = .bss:0x000003DC; // type:object size:0x104 data:4byte +lbl_1_bss_4E0 = .bss:0x000004E0; // type:object size:0x4 data:4byte +lbl_1_bss_4E4 = .bss:0x000004E4; // type:object size:0x4 data:4byte +lbl_1_bss_4E8 = .bss:0x000004E8; // type:object size:0x60 data:4byte +lbl_1_bss_548 = .bss:0x00000548; // type:object size:0xA0 +lbl_1_bss_5E8 = .bss:0x000005E8; // type:object size:0x28 data:4byte +lbl_1_bss_610 = .bss:0x00000610; // type:object size:0x28 data:4byte +lbl_1_bss_638 = .bss:0x00000638; // type:object size:0x28 data:4byte +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x28 data:4byte +lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x108 data:float +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x28 data:4byte +lbl_1_bss_7C0 = .bss:0x000007C0; // type:object size:0x28 data:4byte +lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x28 data:4byte +lbl_1_bss_810 = .bss:0x00000810; // type:object size:0x28 data:4byte +lbl_1_bss_838 = .bss:0x00000838; // type:object size:0x28 data:4byte +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x108 data:4byte +lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x4 data:4byte +lbl_1_bss_96C = .bss:0x0000096C; // type:object size:0x28 data:4byte +lbl_1_bss_994 = .bss:0x00000994; // type:object size:0x28 data:4byte +lbl_1_bss_9BC = .bss:0x000009BC; // type:object size:0x28 data:4byte +lbl_1_bss_9E4 = .bss:0x000009E4; // type:object size:0x28 data:4byte +lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x28 data:4byte +lbl_1_bss_A34 = .bss:0x00000A34; // type:object size:0x104 data:4byte +lbl_1_bss_B38 = .bss:0x00000B38; // type:object size:0x4 data:4byte +lbl_1_bss_B3C = .bss:0x00000B3C; // type:object size:0x4 data:4byte +lbl_1_bss_B40 = .bss:0x00000B40; // type:object size:0x4 data:4byte +lbl_1_bss_B44 = .bss:0x00000B44; // type:object size:0x28 data:4byte +lbl_1_bss_B6C = .bss:0x00000B6C; // type:object size:0x28 data:4byte +lbl_1_bss_B94 = .bss:0x00000B94; // type:object size:0x28 data:4byte +lbl_1_bss_BBC = .bss:0x00000BBC; // type:object size:0x28 data:4byte +lbl_1_bss_BE4 = .bss:0x00000BE4; // type:object size:0x28 data:4byte +lbl_1_bss_C0C = .bss:0x00000C0C; // type:object size:0x104 data:float +lbl_1_bss_D10 = .bss:0x00000D10; // type:object size:0x4 data:4byte +lbl_1_bss_D14 = .bss:0x00000D14; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/mstory3Dll/splits.txt b/config/GMPJ01_00/rels/mstory3Dll/splits.txt new file mode 100644 index 00000000..6d23734f --- /dev/null +++ b/config/GMPJ01_00/rels/mstory3Dll/splits.txt @@ -0,0 +1,31 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory3Dll/main.c: + .text start:0x00000000 end:0x00006E34 + .rodata start:0x00000000 end:0x00000110 + .data start:0x00000000 end:0x00000130 + .bss start:0x00000000 end:0x00000058 + +REL/mstory3Dll/result_seq.c: + .text start:0x00006E34 end:0x000157F0 + .rodata start:0x00000110 end:0x00000418 + .data start:0x00000130 end:0x000007E0 + .bss start:0x00000058 end:0x000018D0 + +REL/mstory3Dll/result.c: + .text start:0x000157F0 end:0x0001DED8 + .rodata start:0x00000418 end:0x000005D0 + .data start:0x000007E0 end:0x00000A90 + .bss start:0x000018D0 end:0x00001CE8 + +REL/mstory3Dll/win_effect.c: + .text start:0x0001DED8 end:0x0001F100 + .rodata start:0x000005D0 end:0x00000644 + .data start:0x00000A90 end:0x00000AAB + .bss start:0x00001CE8 end:0x00001D50 diff --git a/config/GMPJ01_00/rels/mstory3Dll/symbols.txt b/config/GMPJ01_00/rels/mstory3Dll/symbols.txt new file mode 100644 index 00000000..4863cac3 --- /dev/null +++ b/config/GMPJ01_00/rels/mstory3Dll/symbols.txt @@ -0,0 +1,550 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2C8 +_prolog = .text:0x0000036C; // type:function size:0x54 scope:global +_epilog = .text:0x000003C0; // type:function size:0x4C scope:global +fn_1_40C = .text:0x0000040C; // type:function size:0xE4 +ObjectSetup = .text:0x000004F0; // type:function size:0xE4 +fn_1_5D4 = .text:0x000005D4; // type:function size:0x28 +fn_1_5FC = .text:0x000005FC; // type:function size:0x20 +fn_1_61C = .text:0x0000061C; // type:function size:0xD8 +fn_1_6F4 = .text:0x000006F4; // type:function size:0xC8 +fn_1_7BC = .text:0x000007BC; // type:function size:0xBC +fn_1_878 = .text:0x00000878; // type:function size:0xBC +fn_1_934 = .text:0x00000934; // type:function size:0x4 +fn_1_938 = .text:0x00000938; // type:function size:0x20 +fn_1_958 = .text:0x00000958; // type:function size:0x28 +fn_1_980 = .text:0x00000980; // type:function size:0x20 +fn_1_9A0 = .text:0x000009A0; // type:function size:0x24 +fn_1_9C4 = .text:0x000009C4; // type:function size:0x20 +fn_1_9E4 = .text:0x000009E4; // type:function size:0xA48 +fn_1_142C = .text:0x0000142C; // type:function size:0x1F8 +fn_1_1624 = .text:0x00001624; // type:function size:0x210 +fn_1_1834 = .text:0x00001834; // type:function size:0x1F0 +fn_1_1A24 = .text:0x00001A24; // type:function size:0x2C +fn_1_1A50 = .text:0x00001A50; // type:function size:0x60 +fn_1_1AB0 = .text:0x00001AB0; // type:function size:0x68 +fn_1_1B18 = .text:0x00001B18; // type:function size:0xAC +fn_1_1BC4 = .text:0x00001BC4; // type:function size:0xC4 +fn_1_1C88 = .text:0x00001C88; // type:function size:0xBC +fn_1_1D44 = .text:0x00001D44; // type:function size:0x34 +fn_1_1D78 = .text:0x00001D78; // type:function size:0x40 +fn_1_1DB8 = .text:0x00001DB8; // type:function size:0x70 +fn_1_1E28 = .text:0x00001E28; // type:function size:0x178 +fn_1_1FA0 = .text:0x00001FA0; // type:function size:0x2E0 +fn_1_2280 = .text:0x00002280; // type:function size:0x90 +fn_1_2310 = .text:0x00002310; // type:function size:0xC8 +fn_1_23D8 = .text:0x000023D8; // type:function size:0x48 +fn_1_2420 = .text:0x00002420; // type:function size:0x54 +fn_1_2474 = .text:0x00002474; // type:function size:0x3C0 +fn_1_2834 = .text:0x00002834; // type:function size:0x10 +fn_1_2844 = .text:0x00002844; // type:function size:0x10 +fn_1_2854 = .text:0x00002854; // type:function size:0xB8 +fn_1_290C = .text:0x0000290C; // type:function size:0x120 +fn_1_2A2C = .text:0x00002A2C; // type:function size:0x3A8 +fn_1_2DD4 = .text:0x00002DD4; // type:function size:0x7F4 +fn_1_35C8 = .text:0x000035C8; // type:function size:0x88 +fn_1_3650 = .text:0x00003650; // type:function size:0x94 +fn_1_36E4 = .text:0x000036E4; // type:function size:0x58 +fn_1_373C = .text:0x0000373C; // type:function size:0x8C +fn_1_37C8 = .text:0x000037C8; // type:function size:0xEC +fn_1_38B4 = .text:0x000038B4; // type:function size:0xC4 +fn_1_3978 = .text:0x00003978; // type:function size:0x3C +fn_1_39B4 = .text:0x000039B4; // type:function size:0x44 +fn_1_39F8 = .text:0x000039F8; // type:function size:0x26C +fn_1_3C64 = .text:0x00003C64; // type:function size:0x26C +fn_1_3ED0 = .text:0x00003ED0; // type:function size:0x27C +fn_1_414C = .text:0x0000414C; // type:function size:0x2B4 +fn_1_4400 = .text:0x00004400; // type:function size:0x46C +fn_1_486C = .text:0x0000486C; // type:function size:0x454 +fn_1_4CC0 = .text:0x00004CC0; // type:function size:0x48C +fn_1_514C = .text:0x0000514C; // type:function size:0x658 +fn_1_57A4 = .text:0x000057A4; // type:function size:0x4C4 +fn_1_5C68 = .text:0x00005C68; // type:function size:0x4FC +fn_1_6164 = .text:0x00006164; // type:function size:0x6C8 +fn_1_682C = .text:0x0000682C; // type:function size:0xC4 +fn_1_68F0 = .text:0x000068F0; // type:function size:0x188 +fn_1_6A78 = .text:0x00006A78; // type:function size:0x34 +fn_1_6AAC = .text:0x00006AAC; // type:function size:0x40 +fn_1_6AEC = .text:0x00006AEC; // type:function size:0xAC +fn_1_6B98 = .text:0x00006B98; // type:function size:0x1E8 +fn_1_6D80 = .text:0x00006D80; // type:function size:0xB4 +fn_1_6E34 = .text:0x00006E34; // type:function size:0x1D0 +fn_1_7004 = .text:0x00007004; // type:function size:0x394 +fn_1_7398 = .text:0x00007398; // type:function size:0x640 +fn_1_79D8 = .text:0x000079D8; // type:function size:0x4B0 +fn_1_7E88 = .text:0x00007E88; // type:function size:0x2C4 +fn_1_814C = .text:0x0000814C; // type:function size:0x118 +fn_1_8264 = .text:0x00008264; // type:function size:0x7C +fn_1_82E0 = .text:0x000082E0; // type:function size:0x8C +fn_1_836C = .text:0x0000836C; // type:function size:0xF0 +fn_1_845C = .text:0x0000845C; // type:function size:0x2FC +fn_1_8758 = .text:0x00008758; // type:function size:0x100 +fn_1_8858 = .text:0x00008858; // type:function size:0xF0 +fn_1_8948 = .text:0x00008948; // type:function size:0xF0 +fn_1_8A38 = .text:0x00008A38; // type:function size:0xF0 +fn_1_8B28 = .text:0x00008B28; // type:function size:0xF0 +fn_1_8C18 = .text:0x00008C18; // type:function size:0x7C +fn_1_8C94 = .text:0x00008C94; // type:function size:0x4AC +fn_1_9140 = .text:0x00009140; // type:function size:0x88 +fn_1_91C8 = .text:0x000091C8; // type:function size:0x58 +fn_1_9220 = .text:0x00009220; // type:function size:0x1B0 +fn_1_93D0 = .text:0x000093D0; // type:function size:0xB8 +fn_1_9488 = .text:0x00009488; // type:function size:0x228 +fn_1_96B0 = .text:0x000096B0; // type:function size:0xB8 +fn_1_9768 = .text:0x00009768; // type:function size:0x228 +fn_1_9990 = .text:0x00009990; // type:function size:0x78 +fn_1_9A08 = .text:0x00009A08; // type:function size:0x5C +fn_1_9A64 = .text:0x00009A64; // type:function size:0x8B0 +fn_1_A314 = .text:0x0000A314; // type:function size:0x1DC +fn_1_A4F0 = .text:0x0000A4F0; // type:function size:0x6BC +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0xAC4 +fn_1_B670 = .text:0x0000B670; // type:function size:0x118 +fn_1_B788 = .text:0x0000B788; // type:function size:0x6D4 +fn_1_BE5C = .text:0x0000BE5C; // type:function size:0x104 +fn_1_BF60 = .text:0x0000BF60; // type:function size:0x100 +fn_1_C060 = .text:0x0000C060; // type:function size:0xE0C +fn_1_CE6C = .text:0x0000CE6C; // type:function size:0x620 +fn_1_D48C = .text:0x0000D48C; // type:function size:0xAC +fn_1_D538 = .text:0x0000D538; // type:function size:0x1E0 +fn_1_D718 = .text:0x0000D718; // type:function size:0xC0 +fn_1_D7D8 = .text:0x0000D7D8; // type:function size:0x390 +fn_1_DB68 = .text:0x0000DB68; // type:function size:0x5F8 +fn_1_E160 = .text:0x0000E160; // type:function size:0x1BD0 +fn_1_FD30 = .text:0x0000FD30; // type:function size:0x150 +fn_1_FE80 = .text:0x0000FE80; // type:function size:0xFC +fn_1_FF7C = .text:0x0000FF7C; // type:function size:0x3F0 +fn_1_1036C = .text:0x0001036C; // type:function size:0xA08 +fn_1_10D74 = .text:0x00010D74; // type:function size:0xA20 +fn_1_11794 = .text:0x00011794; // type:function size:0xA0 +fn_1_11834 = .text:0x00011834; // type:function size:0xBA4 +fn_1_123D8 = .text:0x000123D8; // type:function size:0x44 +fn_1_1241C = .text:0x0001241C; // type:function size:0x4 +fn_1_12420 = .text:0x00012420; // type:function size:0x678 +fn_1_12A98 = .text:0x00012A98; // type:function size:0x170 +fn_1_12C08 = .text:0x00012C08; // type:function size:0x1A4 +fn_1_12DAC = .text:0x00012DAC; // type:function size:0x2FC +fn_1_130A8 = .text:0x000130A8; // type:function size:0xD4 +fn_1_1317C = .text:0x0001317C; // type:function size:0x130 +fn_1_132AC = .text:0x000132AC; // type:function size:0x65C +fn_1_13908 = .text:0x00013908; // type:function size:0x130 +fn_1_13A38 = .text:0x00013A38; // type:function size:0x4 +fn_1_13A3C = .text:0x00013A3C; // type:function size:0x23C +fn_1_13C78 = .text:0x00013C78; // type:function size:0xC0 +fn_1_13D38 = .text:0x00013D38; // type:function size:0x60 +fn_1_13D98 = .text:0x00013D98; // type:function size:0x308 +fn_1_140A0 = .text:0x000140A0; // type:function size:0x38C +fn_1_1442C = .text:0x0001442C; // type:function size:0x140 +fn_1_1456C = .text:0x0001456C; // type:function size:0x118 +fn_1_14684 = .text:0x00014684; // type:function size:0x7C +fn_1_14700 = .text:0x00014700; // type:function size:0x48 +fn_1_14748 = .text:0x00014748; // type:function size:0x724 +fn_1_14E6C = .text:0x00014E6C; // type:function size:0x114 +fn_1_14F80 = .text:0x00014F80; // type:function size:0x54 +fn_1_14FD4 = .text:0x00014FD4; // type:function size:0x31C +fn_1_152F0 = .text:0x000152F0; // type:function size:0x160 +fn_1_15450 = .text:0x00015450; // type:function size:0x3A0 +fn_1_157F0 = .text:0x000157F0; // type:function size:0x1B4 +fn_1_159A4 = .text:0x000159A4; // type:function size:0x268 +fn_1_15C0C = .text:0x00015C0C; // type:function size:0xFC +fn_1_15D08 = .text:0x00015D08; // type:function size:0xC0 +fn_1_15DC8 = .text:0x00015DC8; // type:function size:0x3F0 +fn_1_161B8 = .text:0x000161B8; // type:function size:0x3BC +fn_1_16574 = .text:0x00016574; // type:function size:0x54 +fn_1_165C8 = .text:0x000165C8; // type:function size:0x35C +fn_1_16924 = .text:0x00016924; // type:function size:0x1B0 +fn_1_16AD4 = .text:0x00016AD4; // type:function size:0x400 +fn_1_16ED4 = .text:0x00016ED4; // type:function size:0x258 +fn_1_1712C = .text:0x0001712C; // type:function size:0x160 +fn_1_1728C = .text:0x0001728C; // type:function size:0x1F8 +fn_1_17484 = .text:0x00017484; // type:function size:0xEC +fn_1_17570 = .text:0x00017570; // type:function size:0x850 +fn_1_17DC0 = .text:0x00017DC0; // type:function size:0x2C0 +fn_1_18080 = .text:0x00018080; // type:function size:0x9C +fn_1_1811C = .text:0x0001811C; // type:function size:0x218 +fn_1_18334 = .text:0x00018334; // type:function size:0x1B4 +fn_1_184E8 = .text:0x000184E8; // type:function size:0x70 +fn_1_18558 = .text:0x00018558; // type:function size:0x110 +fn_1_18668 = .text:0x00018668; // type:function size:0x694 +fn_1_18CFC = .text:0x00018CFC; // type:function size:0x29C +fn_1_18F98 = .text:0x00018F98; // type:function size:0x1AC +fn_1_19144 = .text:0x00019144; // type:function size:0xD0 +fn_1_19214 = .text:0x00019214; // type:function size:0x28C +fn_1_194A0 = .text:0x000194A0; // type:function size:0xF0 +fn_1_19590 = .text:0x00019590; // type:function size:0x224 +fn_1_197B4 = .text:0x000197B4; // type:function size:0x854 +fn_1_1A008 = .text:0x0001A008; // type:function size:0x1EF4 +fn_1_1BEFC = .text:0x0001BEFC; // type:function size:0x3F8 +fn_1_1C2F4 = .text:0x0001C2F4; // type:function size:0x16C +fn_1_1C460 = .text:0x0001C460; // type:function size:0xD4 +fn_1_1C534 = .text:0x0001C534; // type:function size:0x3E0 +fn_1_1C914 = .text:0x0001C914; // type:function size:0x184 +fn_1_1CA98 = .text:0x0001CA98; // type:function size:0xE4 +fn_1_1CB7C = .text:0x0001CB7C; // type:function size:0xE0 +fn_1_1CC5C = .text:0x0001CC5C; // type:function size:0x104 +fn_1_1CD60 = .text:0x0001CD60; // type:function size:0x90 +fn_1_1CDF0 = .text:0x0001CDF0; // type:function size:0x334 +fn_1_1D124 = .text:0x0001D124; // type:function size:0x518 +fn_1_1D63C = .text:0x0001D63C; // type:function size:0x140 +fn_1_1D77C = .text:0x0001D77C; // type:function size:0x150 +fn_1_1D8CC = .text:0x0001D8CC; // type:function size:0x98 +fn_1_1D964 = .text:0x0001D964; // type:function size:0x100 +fn_1_1DA64 = .text:0x0001DA64; // type:function size:0x48 +fn_1_1DAAC = .text:0x0001DAAC; // type:function size:0x3A0 +fn_1_1DE4C = .text:0x0001DE4C; // type:function size:0x8C +fn_1_1DED8 = .text:0x0001DED8; // type:function size:0x21C +fn_1_1E0F4 = .text:0x0001E0F4; // type:function size:0x14 +fn_1_1E108 = .text:0x0001E108; // type:function size:0x10 +fn_1_1E118 = .text:0x0001E118; // type:function size:0x14 +fn_1_1E12C = .text:0x0001E12C; // type:function size:0x10 +fn_1_1E13C = .text:0x0001E13C; // type:function size:0x41C +fn_1_1E558 = .text:0x0001E558; // type:function size:0x2C8 +fn_1_1E820 = .text:0x0001E820; // type:function size:0x8E0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 scope:local data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0xD scope:local data:string +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 scope:local data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A scope:local data:string +lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A scope:local data:string +lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE scope:local data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float +lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 +lbl_1_data_200 = .data:0x00000200; // type:object size:0x50 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 scope:local data:string +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 scope:local data:string +lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 scope:local data:string +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 scope:local data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 scope:local data:string +lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D scope:local data:string +lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C scope:local data:string +lbl_1_data_364 = .data:0x00000364; // type:object size:0x4 data:4byte +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC data:float +lbl_1_data_378 = .data:0x00000378; // type:object size:0xF scope:local data:string +lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 scope:local data:string +jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 scope:local data:string +lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 scope:local data:string +lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 scope:local data:string +lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 scope:local data:string +lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 scope:local data:string +lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 scope:local data:string +lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 scope:local data:string +lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x10 scope:local data:string +lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 +lbl_1_data_78C = .data:0x0000078C; // type:object size:0x50 +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 scope:local data:string +lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 scope:local data:string +lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 scope:local data:string +lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 scope:local data:string +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 scope:local data:string +lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 scope:local data:string +lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 scope:local data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF scope:local data:string +lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C scope:local data:string +lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D scope:local data:string +lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 scope:local data:string +lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 scope:local data:string +lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 scope:local data:string +lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 scope:local data:string +lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 scope:local data:string +lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A scope:local data:string +lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A scope:local data:string +lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x19 scope:local data:string +lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 scope:local data:string +lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:float +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:float +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:float +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:float +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:float +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x1340 +lbl_1_bss_1408 = .bss:0x00001408; // type:object size:0x18 +lbl_1_bss_1420 = .bss:0x00001420; // type:object size:0x4 data:4byte +lbl_1_bss_1424 = .bss:0x00001424; // type:object size:0x4 data:float +lbl_1_bss_1428 = .bss:0x00001428; // type:object size:0x10 data:4byte +lbl_1_bss_1438 = .bss:0x00001438; // type:object size:0x10 +lbl_1_bss_1448 = .bss:0x00001448; // type:object size:0x10 data:4byte +lbl_1_bss_1458 = .bss:0x00001458; // type:object size:0x10 data:4byte +lbl_1_bss_1468 = .bss:0x00001468; // type:object size:0x28 data:4byte +lbl_1_bss_1490 = .bss:0x00001490; // type:object size:0xA0 data:4byte +lbl_1_bss_1530 = .bss:0x00001530; // type:object size:0x28 data:4byte +lbl_1_bss_1558 = .bss:0x00001558; // type:object size:0x28 data:4byte +lbl_1_bss_1580 = .bss:0x00001580; // type:object size:0x350 data:4byte +lbl_1_bss_18D0 = .bss:0x000018D0; // type:object size:0x4 data:4byte +lbl_1_bss_18D4 = .bss:0x000018D4; // type:object size:0x4 data:4byte +lbl_1_bss_18D8 = .bss:0x000018D8; // type:object size:0xC data:4byte +lbl_1_bss_18E4 = .bss:0x000018E4; // type:object size:0x8 data:4byte +lbl_1_bss_18EC = .bss:0x000018EC; // type:object size:0x8 data:4byte +lbl_1_bss_18F4 = .bss:0x000018F4; // type:object size:0xA0 +lbl_1_bss_1994 = .bss:0x00001994; // type:object size:0x28 data:4byte +lbl_1_bss_19BC = .bss:0x000019BC; // type:object size:0x28 data:4byte +lbl_1_bss_19E4 = .bss:0x000019E4; // type:object size:0x28 data:4byte +lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2D8 data:float +lbl_1_bss_1CE8 = .bss:0x00001CE8; // type:object size:0x2 data:2byte +lbl_1_bss_1CEC = .bss:0x00001CEC; // type:object size:0x4 data:4byte +lbl_1_bss_1CF0 = .bss:0x00001CF0; // type:object size:0x4 data:4byte +lbl_1_bss_1CF4 = .bss:0x00001CF4; // type:object size:0x4 data:4byte +lbl_1_bss_1CF8 = .bss:0x00001CF8; // type:object size:0x58 data:2byte diff --git a/config/GMPJ01_00/rels/mstory4Dll/splits.txt b/config/GMPJ01_00/rels/mstory4Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/mstory4Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/mstory4Dll/symbols.txt b/config/GMPJ01_00/rels/mstory4Dll/symbols.txt new file mode 100644 index 00000000..59a31229 --- /dev/null +++ b/config/GMPJ01_00/rels/mstory4Dll/symbols.txt @@ -0,0 +1,65 @@ +fn_1_0 = .text:0x00000000; // type:function size:0xEC +fn_1_EC = .text:0x000000EC; // type:function size:0x115C +_prolog = .text:0x00001248; // type:function size:0x54 scope:global +_epilog = .text:0x0000129C; // type:function size:0x4C scope:global +fn_1_12E8 = .text:0x000012E8; // type:function size:0xB8 +fn_1_13A0 = .text:0x000013A0; // type:function size:0x68C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x1 data:byte +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x1C data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x1 data:byte +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x3C0 +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0xF data:string +lbl_1_data_3CF = .data:0x000003CF; // type:object size:0x14 data:string +lbl_1_data_3E3 = .data:0x000003E3; // type:object size:0x15 data:string +lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x11 data:string +lbl_1_data_409 = .data:0x00000409; // type:object size:0x12 data:string +lbl_1_data_41B = .data:0x0000041B; // type:object size:0x15 +lbl_1_data_430 = .data:0x00000430; // type:object size:0x18 +lbl_1_data_448 = .data:0x00000448; // type:object size:0x17 data:string +lbl_1_data_45F = .data:0x0000045F; // type:object size:0x24 data:string +lbl_1_data_483 = .data:0x00000483; // type:object size:0x23 data:string +lbl_1_data_4A6 = .data:0x000004A6; // type:object size:0x27 data:string +lbl_1_data_4CD = .data:0x000004CD; // type:object size:0x26 data:string +lbl_1_data_4F3 = .data:0x000004F3; // type:object size:0x29 data:string +lbl_1_data_51C = .data:0x0000051C; // type:object size:0x1C +lbl_1_data_538 = .data:0x00000538; // type:object size:0x1C +lbl_1_data_554 = .data:0x00000554; // type:object size:0x18 data:4byte +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x1C +lbl_1_data_588 = .data:0x00000588; // type:object size:0x7 data:string +lbl_1_data_58F = .data:0x0000058F; // type:object size:0x33 data:string +lbl_1_data_5C2 = .data:0x000005C2; // type:object size:0x3 data:string +lbl_1_data_5C5 = .data:0x000005C5; // type:object size:0x9 data:string +lbl_1_data_5CE = .data:0x000005CE; // type:object size:0xB data:string +lbl_1_data_5D9 = .data:0x000005D9; // type:object size:0xB data:string +lbl_1_data_5E4 = .data:0x000005E4; // type:object size:0xC +jumptable_1_data_5F0 = .data:0x000005F0; // type:object size:0x1C scope:local +lbl_1_data_60C = .data:0x0000060C; // type:object size:0x6 data:string +lbl_1_data_612 = .data:0x00000612; // type:object size:0x6 data:string +lbl_1_data_618 = .data:0x00000618; // type:object size:0x6 data:string +lbl_1_data_61E = .data:0x0000061E; // type:object size:0x6 data:string +lbl_1_data_624 = .data:0x00000624; // type:object size:0x6 data:string +lbl_1_data_62A = .data:0x0000062A; // type:object size:0x7 data:string +lbl_1_data_631 = .data:0x00000631; // type:object size:0x6 data:string +lbl_1_data_637 = .data:0x00000637; // type:object size:0x9 +lbl_1_data_640 = .data:0x00000640; // type:object size:0x20 +lbl_1_data_660 = .data:0x00000660; // type:object size:0x16 data:string +lbl_1_data_676 = .data:0x00000676; // type:object size:0x11 data:string +lbl_1_data_687 = .data:0x00000687; // type:object size:0x10 data:string +lbl_1_data_697 = .data:0x00000697; // type:object size:0xD data:string +lbl_1_data_6A4 = .data:0x000006A4; // type:object size:0x10 data:string +lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0xD data:string +lbl_1_data_6C1 = .data:0x000006C1; // type:object size:0x1B data:string +lbl_1_data_6DC = .data:0x000006DC; // type:object size:0x1A data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/mstoryDll/splits.txt b/config/GMPJ01_00/rels/mstoryDll/splits.txt new file mode 100644 index 00000000..14c897fa --- /dev/null +++ b/config/GMPJ01_00/rels/mstoryDll/splits.txt @@ -0,0 +1,43 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141A0 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPJ01_00/rels/mstoryDll/symbols.txt b/config/GMPJ01_00/rels/mstoryDll/symbols.txt new file mode 100644 index 00000000..f9dbaabb --- /dev/null +++ b/config/GMPJ01_00/rels/mstoryDll/symbols.txt @@ -0,0 +1,500 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x344 +_prolog = .text:0x000003E8; // type:function size:0x54 scope:global +_epilog = .text:0x0000043C; // type:function size:0x4C scope:global +fn_1_488 = .text:0x00000488; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 +fn_1_828 = .text:0x00000828; // type:function size:0x28 +fn_1_850 = .text:0x00000850; // type:function size:0x20 +fn_1_870 = .text:0x00000870; // type:function size:0xD8 +fn_1_948 = .text:0x00000948; // type:function size:0xC8 +fn_1_A10 = .text:0x00000A10; // type:function size:0xBC +fn_1_ACC = .text:0x00000ACC; // type:function size:0xBC +fn_1_B88 = .text:0x00000B88; // type:function size:0x4 +fn_1_B8C = .text:0x00000B8C; // type:function size:0x20 +fn_1_BAC = .text:0x00000BAC; // type:function size:0x28 +fn_1_BD4 = .text:0x00000BD4; // type:function size:0x20 +fn_1_BF4 = .text:0x00000BF4; // type:function size:0x24 +fn_1_C18 = .text:0x00000C18; // type:function size:0x20 +fn_1_C38 = .text:0x00000C38; // type:function size:0xA48 +fn_1_1680 = .text:0x00001680; // type:function size:0x1B4 +fn_1_1834 = .text:0x00001834; // type:function size:0x1D0 +fn_1_1A04 = .text:0x00001A04; // type:function size:0x60 +fn_1_1A64 = .text:0x00001A64; // type:function size:0x68 +fn_1_1ACC = .text:0x00001ACC; // type:function size:0xAC +fn_1_1B78 = .text:0x00001B78; // type:function size:0xBC +fn_1_1C34 = .text:0x00001C34; // type:function size:0xB4 +fn_1_1CE8 = .text:0x00001CE8; // type:function size:0x34 +fn_1_1D1C = .text:0x00001D1C; // type:function size:0x40 +fn_1_1D5C = .text:0x00001D5C; // type:function size:0x70 +fn_1_1DCC = .text:0x00001DCC; // type:function size:0x178 +fn_1_1F44 = .text:0x00001F44; // type:function size:0x2E0 +fn_1_2224 = .text:0x00002224; // type:function size:0x90 +fn_1_22B4 = .text:0x000022B4; // type:function size:0x48 +fn_1_22FC = .text:0x000022FC; // type:function size:0x54 +fn_1_2350 = .text:0x00002350; // type:function size:0x3C0 +fn_1_2710 = .text:0x00002710; // type:function size:0x10 +fn_1_2720 = .text:0x00002720; // type:function size:0x10 +fn_1_2730 = .text:0x00002730; // type:function size:0xB8 +fn_1_27E8 = .text:0x000027E8; // type:function size:0x120 +fn_1_2908 = .text:0x00002908; // type:function size:0x3A8 +fn_1_2CB0 = .text:0x00002CB0; // type:function size:0x7F4 +fn_1_34A4 = .text:0x000034A4; // type:function size:0x88 +fn_1_352C = .text:0x0000352C; // type:function size:0x94 +fn_1_35C0 = .text:0x000035C0; // type:function size:0x58 +fn_1_3618 = .text:0x00003618; // type:function size:0xEC +fn_1_3704 = .text:0x00003704; // type:function size:0xC4 +fn_1_37C8 = .text:0x000037C8; // type:function size:0x3C +fn_1_3804 = .text:0x00003804; // type:function size:0x44 +fn_1_3848 = .text:0x00003848; // type:function size:0x274 +fn_1_3ABC = .text:0x00003ABC; // type:function size:0x26C +fn_1_3D28 = .text:0x00003D28; // type:function size:0x22C +fn_1_3F54 = .text:0x00003F54; // type:function size:0x27C +fn_1_41D0 = .text:0x000041D0; // type:function size:0x2B4 +fn_1_4484 = .text:0x00004484; // type:function size:0x46C +fn_1_48F0 = .text:0x000048F0; // type:function size:0x454 +fn_1_4D44 = .text:0x00004D44; // type:function size:0x48C +fn_1_51D0 = .text:0x000051D0; // type:function size:0x658 +fn_1_5828 = .text:0x00005828; // type:function size:0x4C4 +fn_1_5CEC = .text:0x00005CEC; // type:function size:0x4FC +fn_1_61E8 = .text:0x000061E8; // type:function size:0x6C8 +fn_1_68B0 = .text:0x000068B0; // type:function size:0xC4 +fn_1_6974 = .text:0x00006974; // type:function size:0x188 +fn_1_6AFC = .text:0x00006AFC; // type:function size:0x34 +fn_1_6B30 = .text:0x00006B30; // type:function size:0x40 +fn_1_6B70 = .text:0x00006B70; // type:function size:0xAC +fn_1_6C1C = .text:0x00006C1C; // type:function size:0x1E8 +fn_1_6E04 = .text:0x00006E04; // type:function size:0xB4 +fn_1_6EB8 = .text:0x00006EB8; // type:function size:0x170 +fn_1_7028 = .text:0x00007028; // type:function size:0x68 +fn_1_7090 = .text:0x00007090; // type:function size:0xA4 +fn_1_7134 = .text:0x00007134; // type:function size:0x1E8 +fn_1_731C = .text:0x0000731C; // type:function size:0x69C +fn_1_79B8 = .text:0x000079B8; // type:function size:0x128 +fn_1_7AE0 = .text:0x00007AE0; // type:function size:0x390 +fn_1_7E70 = .text:0x00007E70; // type:function size:0x5C +fn_1_7ECC = .text:0x00007ECC; // type:function size:0x1C4 +fn_1_8090 = .text:0x00008090; // type:function size:0x320 +fn_1_83B0 = .text:0x000083B0; // type:function size:0x58 +fn_1_8408 = .text:0x00008408; // type:function size:0x3D4 +fn_1_87DC = .text:0x000087DC; // type:function size:0x268 +fn_1_8A44 = .text:0x00008A44; // type:function size:0x9C +fn_1_8AE0 = .text:0x00008AE0; // type:function size:0x2E0 +fn_1_8DC0 = .text:0x00008DC0; // type:function size:0xAC +fn_1_8E6C = .text:0x00008E6C; // type:function size:0xFC +fn_1_8F68 = .text:0x00008F68; // type:function size:0x36C +fn_1_92D4 = .text:0x000092D4; // type:function size:0x134 +fn_1_9408 = .text:0x00009408; // type:function size:0x310 +fn_1_9718 = .text:0x00009718; // type:function size:0x18C +fn_1_98A4 = .text:0x000098A4; // type:function size:0x88 +fn_1_992C = .text:0x0000992C; // type:function size:0x3DC +fn_1_9D08 = .text:0x00009D08; // type:function size:0x300 +fn_1_A008 = .text:0x0000A008; // type:function size:0xE4 +fn_1_A0EC = .text:0x0000A0EC; // type:function size:0x38C +fn_1_A478 = .text:0x0000A478; // type:function size:0x8C +fn_1_A504 = .text:0x0000A504; // type:function size:0xF0 +fn_1_A5F4 = .text:0x0000A5F4; // type:function size:0x23C +fn_1_A830 = .text:0x0000A830; // type:function size:0xC8 +fn_1_A8F8 = .text:0x0000A8F8; // type:function size:0x2B4 +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0x150 +fn_1_ACFC = .text:0x0000ACFC; // type:function size:0x134 +fn_1_AE30 = .text:0x0000AE30; // type:function size:0x8C +fn_1_AEBC = .text:0x0000AEBC; // type:function size:0x374 +fn_1_B230 = .text:0x0000B230; // type:function size:0x5C +fn_1_B28C = .text:0x0000B28C; // type:function size:0x214 +fn_1_B4A0 = .text:0x0000B4A0; // type:function size:0xE8 +fn_1_B588 = .text:0x0000B588; // type:function size:0xE8 +fn_1_B670 = .text:0x0000B670; // type:function size:0x11C +fn_1_B78C = .text:0x0000B78C; // type:function size:0x13C +fn_1_B8C8 = .text:0x0000B8C8; // type:function size:0x4 +fn_1_B8CC = .text:0x0000B8CC; // type:function size:0x104 +fn_1_B9D0 = .text:0x0000B9D0; // type:function size:0x208 +fn_1_BBD8 = .text:0x0000BBD8; // type:function size:0x788 +fn_1_C360 = .text:0x0000C360; // type:function size:0xB4 +fn_1_C414 = .text:0x0000C414; // type:function size:0x2F4 +fn_1_C708 = .text:0x0000C708; // type:function size:0xBC +fn_1_C7C4 = .text:0x0000C7C4; // type:function size:0x384 +fn_1_CB48 = .text:0x0000CB48; // type:function size:0x300 +fn_1_CE48 = .text:0x0000CE48; // type:function size:0xAC +fn_1_CEF4 = .text:0x0000CEF4; // type:function size:0xE4 +fn_1_CFD8 = .text:0x0000CFD8; // type:function size:0xC4 +fn_1_D09C = .text:0x0000D09C; // type:function size:0xE4 +fn_1_D180 = .text:0x0000D180; // type:function size:0x3FC +fn_1_D57C = .text:0x0000D57C; // type:function size:0x134 +fn_1_D6B0 = .text:0x0000D6B0; // type:function size:0x2F8 +fn_1_D9A8 = .text:0x0000D9A8; // type:function size:0xFC +fn_1_DAA4 = .text:0x0000DAA4; // type:function size:0x164 +fn_1_DC08 = .text:0x0000DC08; // type:function size:0x118 +fn_1_DD20 = .text:0x0000DD20; // type:function size:0xE4 +fn_1_DE04 = .text:0x0000DE04; // type:function size:0x424 +fn_1_E228 = .text:0x0000E228; // type:function size:0x8C +fn_1_E2B4 = .text:0x0000E2B4; // type:function size:0x130 +fn_1_E3E4 = .text:0x0000E3E4; // type:function size:0x23C +fn_1_E620 = .text:0x0000E620; // type:function size:0xF0 +fn_1_E710 = .text:0x0000E710; // type:function size:0x118 +fn_1_E828 = .text:0x0000E828; // type:function size:0x8C +fn_1_E8B4 = .text:0x0000E8B4; // type:function size:0x34C +fn_1_EC00 = .text:0x0000EC00; // type:function size:0x5C +fn_1_EC5C = .text:0x0000EC5C; // type:function size:0x384 +fn_1_EFE0 = .text:0x0000EFE0; // type:function size:0x70 +fn_1_F050 = .text:0x0000F050; // type:function size:0x14C +fn_1_F19C = .text:0x0000F19C; // type:function size:0x5E4 +fn_1_F780 = .text:0x0000F780; // type:function size:0xEC +fn_1_F86C = .text:0x0000F86C; // type:function size:0xA4 +fn_1_F910 = .text:0x0000F910; // type:function size:0x1D4 +fn_1_FAE4 = .text:0x0000FAE4; // type:function size:0x238 +fn_1_FD1C = .text:0x0000FD1C; // type:function size:0xB4 +fn_1_FDD0 = .text:0x0000FDD0; // type:function size:0x4C8 +fn_1_10298 = .text:0x00010298; // type:function size:0xEC +fn_1_10384 = .text:0x00010384; // type:function size:0xCC +fn_1_10450 = .text:0x00010450; // type:function size:0xFC +fn_1_1054C = .text:0x0001054C; // type:function size:0xAC +fn_1_105F8 = .text:0x000105F8; // type:function size:0x300 +fn_1_108F8 = .text:0x000108F8; // type:function size:0x374 +fn_1_10C6C = .text:0x00010C6C; // type:function size:0xE4 +fn_1_10D50 = .text:0x00010D50; // type:function size:0x1D4 +fn_1_10F24 = .text:0x00010F24; // type:function size:0xAC +fn_1_10FD0 = .text:0x00010FD0; // type:function size:0x2D0 +fn_1_112A0 = .text:0x000112A0; // type:function size:0x8C +fn_1_1132C = .text:0x0001132C; // type:function size:0xF0 +fn_1_1141C = .text:0x0001141C; // type:function size:0x118 +fn_1_11534 = .text:0x00011534; // type:function size:0xF0 +fn_1_11624 = .text:0x00011624; // type:function size:0x10C +fn_1_11730 = .text:0x00011730; // type:function size:0x35C +fn_1_11A8C = .text:0x00011A8C; // type:function size:0x5C +fn_1_11AE8 = .text:0x00011AE8; // type:function size:0x184 +fn_1_11C6C = .text:0x00011C6C; // type:function size:0x16C +fn_1_11DD8 = .text:0x00011DD8; // type:function size:0xEC +fn_1_11EC4 = .text:0x00011EC4; // type:function size:0x64 +fn_1_11F28 = .text:0x00011F28; // type:function size:0x4 +fn_1_11F2C = .text:0x00011F2C; // type:function size:0x144 +fn_1_12070 = .text:0x00012070; // type:function size:0x5C0 +fn_1_12630 = .text:0x00012630; // type:function size:0xB4 +fn_1_126E4 = .text:0x000126E4; // type:function size:0x234 +fn_1_12918 = .text:0x00012918; // type:function size:0xBC +fn_1_129D4 = .text:0x000129D4; // type:function size:0x2C0 +fn_1_12C94 = .text:0x00012C94; // type:function size:0xE4 +fn_1_12D78 = .text:0x00012D78; // type:function size:0x1A8 +fn_1_12F20 = .text:0x00012F20; // type:function size:0x88 +fn_1_12FA8 = .text:0x00012FA8; // type:function size:0x118 +fn_1_130C0 = .text:0x000130C0; // type:function size:0x22C +fn_1_132EC = .text:0x000132EC; // type:function size:0x284 +fn_1_13570 = .text:0x00013570; // type:function size:0x310 +fn_1_13880 = .text:0x00013880; // type:function size:0x8C +fn_1_1390C = .text:0x0001390C; // type:function size:0x23C +fn_1_13B48 = .text:0x00013B48; // type:function size:0xEC +fn_1_13C34 = .text:0x00013C34; // type:function size:0x1F8 +fn_1_13E2C = .text:0x00013E2C; // type:function size:0x324 +fn_1_14150 = .text:0x00014150; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 scope:local +lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C scope:local +lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 scope:local +lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 +lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 +lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB scope:local +lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 scope:local +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 +lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x28 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x28 data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x104 data:4byte +lbl_1_bss_2C8 = .bss:0x000002C8; // type:object size:0x4 data:4byte +lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x4 data:4byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x60 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x8 data:4byte +lbl_1_bss_338 = .bss:0x00000338; // type:object size:0xA0 +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x28 data:4byte +lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x28 data:4byte +lbl_1_bss_428 = .bss:0x00000428; // type:object size:0x28 data:4byte +lbl_1_bss_450 = .bss:0x00000450; // type:object size:0x108 data:float +lbl_1_bss_558 = .bss:0x00000558; // type:object size:0x4 data:4byte +lbl_1_bss_55C = .bss:0x0000055C; // type:object size:0x4 data:4byte +lbl_1_bss_560 = .bss:0x00000560; // type:object size:0x8 data:4byte +lbl_1_bss_568 = .bss:0x00000568; // type:object size:0x28 data:4byte +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0x28 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x28 data:4byte +lbl_1_bss_5E0 = .bss:0x000005E0; // type:object size:0x28 data:4byte +lbl_1_bss_608 = .bss:0x00000608; // type:object size:0x108 data:4byte +lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 data:4byte +lbl_1_bss_714 = .bss:0x00000714; // type:object size:0x28 data:4byte +lbl_1_bss_73C = .bss:0x0000073C; // type:object size:0x28 data:4byte +lbl_1_bss_764 = .bss:0x00000764; // type:object size:0x28 data:4byte +lbl_1_bss_78C = .bss:0x0000078C; // type:object size:0x28 data:4byte +lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x104 data:4byte +lbl_1_bss_8B8 = .bss:0x000008B8; // type:object size:0x4 data:4byte +lbl_1_bss_8BC = .bss:0x000008BC; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/nisDll/splits.txt b/config/GMPJ01_00/rels/nisDll/splits.txt new file mode 100644 index 00000000..2e500fe0 --- /dev/null +++ b/config/GMPJ01_00/rels/nisDll/splits.txt @@ -0,0 +1,5 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 diff --git a/config/GMPJ01_00/rels/nisDll/symbols.txt b/config/GMPJ01_00/rels/nisDll/symbols.txt new file mode 100644 index 00000000..1143328c --- /dev/null +++ b/config/GMPJ01_00/rels/nisDll/symbols.txt @@ -0,0 +1,6 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x68 +fn_1_68 = .text:0x00000068; // type:function size:0x2C +_prolog = .text:0x00000094; // type:function size:0x9C scope:global +_epilog = .text:0x00000130; // type:function size:0x4C scope:global +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPJ01_00/rels/option/splits.txt b/config/GMPJ01_00/rels/option/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/option/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/option/symbols.txt b/config/GMPJ01_00/rels/option/symbols.txt new file mode 100644 index 00000000..99c6ef45 --- /dev/null +++ b/config/GMPJ01_00/rels/option/symbols.txt @@ -0,0 +1,380 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0xC0 +fn_1_160 = .text:0x00000160; // type:function size:0x110 +fn_1_270 = .text:0x00000270; // type:function size:0xE4 +fn_1_354 = .text:0x00000354; // type:function size:0x114 +fn_1_468 = .text:0x00000468; // type:function size:0xE8 +fn_1_550 = .text:0x00000550; // type:function size:0x34 +fn_1_584 = .text:0x00000584; // type:function size:0x34 +fn_1_5B8 = .text:0x000005B8; // type:function size:0x34 +fn_1_5EC = .text:0x000005EC; // type:function size:0xFC +fn_1_6E8 = .text:0x000006E8; // type:function size:0x110 +fn_1_7F8 = .text:0x000007F8; // type:function size:0x244 +fn_1_A3C = .text:0x00000A3C; // type:function size:0x30 +fn_1_A6C = .text:0x00000A6C; // type:function size:0x84 +fn_1_AF0 = .text:0x00000AF0; // type:function size:0x84 +fn_1_B74 = .text:0x00000B74; // type:function size:0x84 +fn_1_BF8 = .text:0x00000BF8; // type:function size:0x30 +fn_1_C28 = .text:0x00000C28; // type:function size:0x30 +fn_1_C58 = .text:0x00000C58; // type:function size:0x30 +fn_1_C88 = .text:0x00000C88; // type:function size:0x30 +fn_1_CB8 = .text:0x00000CB8; // type:function size:0x8C +fn_1_D44 = .text:0x00000D44; // type:function size:0x28 +fn_1_D6C = .text:0x00000D6C; // type:function size:0x578 +fn_1_12E4 = .text:0x000012E4; // type:function size:0x200 +fn_1_14E4 = .text:0x000014E4; // type:function size:0xC0 +fn_1_15A4 = .text:0x000015A4; // type:function size:0x1F4 +fn_1_1798 = .text:0x00001798; // type:function size:0xAC +fn_1_1844 = .text:0x00001844; // type:function size:0x1E8 +fn_1_1A2C = .text:0x00001A2C; // type:function size:0x44 +fn_1_1A70 = .text:0x00001A70; // type:function size:0x1C +fn_1_1A8C = .text:0x00001A8C; // type:function size:0x5FC +fn_1_2088 = .text:0x00002088; // type:function size:0x88 +fn_1_2110 = .text:0x00002110; // type:function size:0x34 +fn_1_2144 = .text:0x00002144; // type:function size:0x80 +fn_1_21C4 = .text:0x000021C4; // type:function size:0x34 +fn_1_21F8 = .text:0x000021F8; // type:function size:0x224 +fn_1_241C = .text:0x0000241C; // type:function size:0x8C +fn_1_24A8 = .text:0x000024A8; // type:function size:0x44 +fn_1_24EC = .text:0x000024EC; // type:function size:0x1C +fn_1_2508 = .text:0x00002508; // type:function size:0xA4 +fn_1_25AC = .text:0x000025AC; // type:function size:0x46C +fn_1_2A18 = .text:0x00002A18; // type:function size:0x2E8 +fn_1_2D00 = .text:0x00002D00; // type:function size:0x104 +fn_1_2E04 = .text:0x00002E04; // type:function size:0x148 +fn_1_2F4C = .text:0x00002F4C; // type:function size:0x64 +fn_1_2FB0 = .text:0x00002FB0; // type:function size:0x1A8 +fn_1_3158 = .text:0x00003158; // type:function size:0xD4 +fn_1_322C = .text:0x0000322C; // type:function size:0x64 +fn_1_3290 = .text:0x00003290; // type:function size:0x44 +fn_1_32D4 = .text:0x000032D4; // type:function size:0x1C +fn_1_32F0 = .text:0x000032F0; // type:function size:0x4BC +fn_1_37AC = .text:0x000037AC; // type:function size:0xBC +fn_1_3868 = .text:0x00003868; // type:function size:0x54 +fn_1_38BC = .text:0x000038BC; // type:function size:0xD0 +fn_1_398C = .text:0x0000398C; // type:function size:0x54 +fn_1_39E0 = .text:0x000039E0; // type:function size:0x128 +fn_1_3B08 = .text:0x00003B08; // type:function size:0x84 +fn_1_3B8C = .text:0x00003B8C; // type:function size:0x54 +fn_1_3BE0 = .text:0x00003BE0; // type:function size:0x8C +fn_1_3C6C = .text:0x00003C6C; // type:function size:0x94 +fn_1_3D00 = .text:0x00003D00; // type:function size:0x54 +fn_1_3D54 = .text:0x00003D54; // type:function size:0xC8 +fn_1_3E1C = .text:0x00003E1C; // type:function size:0xB4 +fn_1_3ED0 = .text:0x00003ED0; // type:function size:0x58 +fn_1_3F28 = .text:0x00003F28; // type:function size:0xAC +fn_1_3FD4 = .text:0x00003FD4; // type:function size:0x54 +fn_1_4028 = .text:0x00004028; // type:function size:0x2B4 +fn_1_42DC = .text:0x000042DC; // type:function size:0xAC +fn_1_4388 = .text:0x00004388; // type:function size:0x44 +fn_1_43CC = .text:0x000043CC; // type:function size:0x1C +fn_1_43E8 = .text:0x000043E8; // type:function size:0x270 +fn_1_4658 = .text:0x00004658; // type:function size:0x424 +fn_1_4A7C = .text:0x00004A7C; // type:function size:0x3D4 +fn_1_4E50 = .text:0x00004E50; // type:function size:0x93C +fn_1_578C = .text:0x0000578C; // type:function size:0x8B8 +fn_1_6044 = .text:0x00006044; // type:function size:0xF8 +fn_1_613C = .text:0x0000613C; // type:function size:0x64 +fn_1_61A0 = .text:0x000061A0; // type:function size:0xFC +fn_1_629C = .text:0x0000629C; // type:function size:0x54 +fn_1_62F0 = .text:0x000062F0; // type:function size:0xFC +fn_1_63EC = .text:0x000063EC; // type:function size:0x54 +fn_1_6440 = .text:0x00006440; // type:function size:0x94 +fn_1_64D4 = .text:0x000064D4; // type:function size:0x54 +fn_1_6528 = .text:0x00006528; // type:function size:0x118 +fn_1_6640 = .text:0x00006640; // type:function size:0x54 +fn_1_6694 = .text:0x00006694; // type:function size:0x38 +fn_1_66CC = .text:0x000066CC; // type:function size:0x38 +fn_1_6704 = .text:0x00006704; // type:function size:0xC4 +fn_1_67C8 = .text:0x000067C8; // type:function size:0x60 +fn_1_6828 = .text:0x00006828; // type:function size:0x1E4 +fn_1_6A0C = .text:0x00006A0C; // type:function size:0x74 +fn_1_6A80 = .text:0x00006A80; // type:function size:0x1DC +fn_1_6C5C = .text:0x00006C5C; // type:function size:0x74 +fn_1_6CD0 = .text:0x00006CD0; // type:function size:0x1D4 +fn_1_6EA4 = .text:0x00006EA4; // type:function size:0xA4 +fn_1_6F48 = .text:0x00006F48; // type:function size:0x1D4 +fn_1_711C = .text:0x0000711C; // type:function size:0xA4 +fn_1_71C0 = .text:0x000071C0; // type:function size:0xE8 +fn_1_72A8 = .text:0x000072A8; // type:function size:0x68 +fn_1_7310 = .text:0x00007310; // type:function size:0x400 +fn_1_7710 = .text:0x00007710; // type:function size:0x190 +fn_1_78A0 = .text:0x000078A0; // type:function size:0x60 +fn_1_7900 = .text:0x00007900; // type:function size:0x3C +fn_1_793C = .text:0x0000793C; // type:function size:0x5C4 +fn_1_7F00 = .text:0x00007F00; // type:function size:0x148 +fn_1_8048 = .text:0x00008048; // type:function size:0x9C +fn_1_80E4 = .text:0x000080E4; // type:function size:0x178 +fn_1_825C = .text:0x0000825C; // type:function size:0x54 +fn_1_82B0 = .text:0x000082B0; // type:function size:0x44 +fn_1_82F4 = .text:0x000082F4; // type:function size:0x1C +fn_1_8310 = .text:0x00008310; // type:function size:0x778 +fn_1_8A88 = .text:0x00008A88; // type:function size:0xD0 +fn_1_8B58 = .text:0x00008B58; // type:function size:0x54 +fn_1_8BAC = .text:0x00008BAC; // type:function size:0xD8 +fn_1_8C84 = .text:0x00008C84; // type:function size:0xFC +fn_1_8D80 = .text:0x00008D80; // type:function size:0x54 +fn_1_8DD4 = .text:0x00008DD4; // type:function size:0xC4 +fn_1_8E98 = .text:0x00008E98; // type:function size:0x60 +fn_1_8EF8 = .text:0x00008EF8; // type:function size:0x40 +fn_1_8F38 = .text:0x00008F38; // type:function size:0x77C +fn_1_96B4 = .text:0x000096B4; // type:function size:0x9C +fn_1_9750 = .text:0x00009750; // type:function size:0x344 +fn_1_9A94 = .text:0x00009A94; // type:function size:0x7C +fn_1_9B10 = .text:0x00009B10; // type:function size:0x8A0 +fn_1_A3B0 = .text:0x0000A3B0; // type:function size:0x9C +fn_1_A44C = .text:0x0000A44C; // type:function size:0x260 +fn_1_A6AC = .text:0x0000A6AC; // type:function size:0x40 +fn_1_A6EC = .text:0x0000A6EC; // type:function size:0x18 +fn_1_A704 = .text:0x0000A704; // type:function size:0x18 +fn_1_A71C = .text:0x0000A71C; // type:function size:0x54 +fn_1_A770 = .text:0x0000A770; // type:function size:0x40 +fn_1_A7B0 = .text:0x0000A7B0; // type:function size:0x40 +fn_1_A7F0 = .text:0x0000A7F0; // type:function size:0x38 +fn_1_A828 = .text:0x0000A828; // type:function size:0x38 +fn_1_A860 = .text:0x0000A860; // type:function size:0x20 +fn_1_A880 = .text:0x0000A880; // type:function size:0x24 +fn_1_A8A4 = .text:0x0000A8A4; // type:function size:0x108 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0xC data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x38 +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8C0 +lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x30 +lbl_1_rodata_AD0 = .rodata:0x00000AD0; // type:object size:0x780 +lbl_1_rodata_1250 = .rodata:0x00001250; // type:object size:0x4 data:float +lbl_1_rodata_1254 = .rodata:0x00001254; // type:object size:0x4 data:float +lbl_1_rodata_1258 = .rodata:0x00001258; // type:object size:0x4 data:float +lbl_1_rodata_125C = .rodata:0x0000125C; // type:object size:0x4 data:float +lbl_1_rodata_1260 = .rodata:0x00001260; // type:object size:0x4 data:float +lbl_1_rodata_1264 = .rodata:0x00001264; // type:object size:0x4 data:float +lbl_1_rodata_1268 = .rodata:0x00001268; // type:object size:0x4 data:float +lbl_1_rodata_1270 = .rodata:0x00001270; // type:object size:0x8 data:double +lbl_1_rodata_1278 = .rodata:0x00001278; // type:object size:0x8 +lbl_1_rodata_1280 = .rodata:0x00001280; // type:object size:0x8 +lbl_1_rodata_1288 = .rodata:0x00001288; // type:object size:0x8 +lbl_1_rodata_1290 = .rodata:0x00001290; // type:object size:0x4 data:float +lbl_1_rodata_1294 = .rodata:0x00001294; // type:object size:0x4 data:float +lbl_1_rodata_1298 = .rodata:0x00001298; // type:object size:0x4 data:float +lbl_1_rodata_129C = .rodata:0x0000129C; // type:object size:0x4 data:float +lbl_1_rodata_12A0 = .rodata:0x000012A0; // type:object size:0x4 data:float +lbl_1_rodata_12A4 = .rodata:0x000012A4; // type:object size:0x4 data:float +lbl_1_rodata_12A8 = .rodata:0x000012A8; // type:object size:0x4 data:float +lbl_1_rodata_12AC = .rodata:0x000012AC; // type:object size:0x4 data:float +lbl_1_rodata_12B0 = .rodata:0x000012B0; // type:object size:0x4 data:float +lbl_1_rodata_12B4 = .rodata:0x000012B4; // type:object size:0x4 data:float +lbl_1_rodata_12B8 = .rodata:0x000012B8; // type:object size:0x4 data:float +lbl_1_rodata_12BC = .rodata:0x000012BC; // type:object size:0x4 data:float +lbl_1_rodata_12C0 = .rodata:0x000012C0; // type:object size:0x4 data:float +lbl_1_rodata_12C4 = .rodata:0x000012C4; // type:object size:0x4 data:float +lbl_1_rodata_12C8 = .rodata:0x000012C8; // type:object size:0x4 data:float +lbl_1_rodata_12CC = .rodata:0x000012CC; // type:object size:0x4 data:float +lbl_1_rodata_12D0 = .rodata:0x000012D0; // type:object size:0x24 +lbl_1_rodata_12F4 = .rodata:0x000012F4; // type:object size:0x4 data:float +lbl_1_rodata_12F8 = .rodata:0x000012F8; // type:object size:0x4 data:float +lbl_1_rodata_12FC = .rodata:0x000012FC; // type:object size:0x4 data:float +lbl_1_rodata_1300 = .rodata:0x00001300; // type:object size:0x4 data:float +lbl_1_rodata_1304 = .rodata:0x00001304; // type:object size:0x4 data:float +lbl_1_rodata_1308 = .rodata:0x00001308; // type:object size:0x1C +lbl_1_rodata_1324 = .rodata:0x00001324; // type:object size:0x4 data:float +lbl_1_rodata_1328 = .rodata:0x00001328; // type:object size:0x4 data:float +lbl_1_rodata_132C = .rodata:0x0000132C; // type:object size:0x4 data:float +lbl_1_rodata_1330 = .rodata:0x00001330; // type:object size:0x14 +lbl_1_rodata_1344 = .rodata:0x00001344; // type:object size:0x4 data:float +lbl_1_rodata_1348 = .rodata:0x00001348; // type:object size:0x4 data:float +lbl_1_rodata_134C = .rodata:0x0000134C; // type:object size:0x4 +lbl_1_rodata_1350 = .rodata:0x00001350; // type:object size:0x8 +lbl_1_rodata_1358 = .rodata:0x00001358; // type:object size:0x8 data:double +lbl_1_rodata_1360 = .rodata:0x00001360; // type:object size:0x8 data:double +lbl_1_rodata_1368 = .rodata:0x00001368; // type:object size:0x4 data:float +lbl_1_rodata_136C = .rodata:0x0000136C; // type:object size:0x4 data:float +lbl_1_rodata_1370 = .rodata:0x00001370; // type:object size:0x8 data:double +lbl_1_rodata_1378 = .rodata:0x00001378; // type:object size:0x8 data:double +lbl_1_rodata_1380 = .rodata:0x00001380; // type:object size:0x4 data:float +lbl_1_rodata_1384 = .rodata:0x00001384; // type:object size:0x4 data:float +lbl_1_rodata_1388 = .rodata:0x00001388; // type:object size:0x8 data:double +lbl_1_rodata_1390 = .rodata:0x00001390; // type:object size:0x4 data:float +lbl_1_rodata_1394 = .rodata:0x00001394; // type:object size:0x4 data:float +lbl_1_rodata_1398 = .rodata:0x00001398; // type:object size:0x4 data:float +lbl_1_rodata_139C = .rodata:0x0000139C; // type:object size:0x4 data:float +lbl_1_rodata_13A0 = .rodata:0x000013A0; // type:object size:0x8 data:double +lbl_1_rodata_13A8 = .rodata:0x000013A8; // type:object size:0x8 data:double +lbl_1_rodata_13B0 = .rodata:0x000013B0; // type:object size:0x4 data:float +lbl_1_rodata_13B4 = .rodata:0x000013B4; // type:object size:0x4 data:float +lbl_1_rodata_13B8 = .rodata:0x000013B8; // type:object size:0x8 data:float +lbl_1_rodata_13C0 = .rodata:0x000013C0; // type:object size:0x18 +lbl_1_rodata_13D8 = .rodata:0x000013D8; // type:object size:0x4 data:float +lbl_1_rodata_13DC = .rodata:0x000013DC; // type:object size:0x4 data:float +lbl_1_rodata_13E0 = .rodata:0x000013E0; // type:object size:0x4 data:float +lbl_1_rodata_13E4 = .rodata:0x000013E4; // type:object size:0x4 data:float +lbl_1_rodata_13E8 = .rodata:0x000013E8; // type:object size:0x4 data:float +lbl_1_rodata_13EC = .rodata:0x000013EC; // type:object size:0x4 data:float +lbl_1_rodata_13F0 = .rodata:0x000013F0; // type:object size:0x4 data:float +lbl_1_rodata_13F4 = .rodata:0x000013F4; // type:object size:0x4 data:float +lbl_1_rodata_13F8 = .rodata:0x000013F8; // type:object size:0x8 data:double +lbl_1_rodata_1400 = .rodata:0x00001400; // type:object size:0x8 data:double +lbl_1_rodata_1408 = .rodata:0x00001408; // type:object size:0x4 data:float +lbl_1_rodata_140C = .rodata:0x0000140C; // type:object size:0x4 data:float +lbl_1_rodata_1410 = .rodata:0x00001410; // type:object size:0x4 data:float +lbl_1_rodata_1414 = .rodata:0x00001414; // type:object size:0x4 data:float +lbl_1_rodata_1418 = .rodata:0x00001418; // type:object size:0x4 data:float +lbl_1_rodata_1420 = .rodata:0x00001420; // type:object size:0x8 data:double +lbl_1_rodata_1428 = .rodata:0x00001428; // type:object size:0x4 data:float +lbl_1_rodata_142C = .rodata:0x0000142C; // type:object size:0x4 data:float +lbl_1_rodata_1430 = .rodata:0x00001430; // type:object size:0x4 data:float +lbl_1_rodata_1434 = .rodata:0x00001434; // type:object size:0x4 data:float +lbl_1_rodata_1438 = .rodata:0x00001438; // type:object size:0x4 data:float +lbl_1_rodata_143C = .rodata:0x0000143C; // type:object size:0x264 +lbl_1_rodata_16A0 = .rodata:0x000016A0; // type:object size:0x4 data:float +lbl_1_rodata_16A4 = .rodata:0x000016A4; // type:object size:0x4 data:float +lbl_1_rodata_16A8 = .rodata:0x000016A8; // type:object size:0x4 data:float +lbl_1_rodata_16AC = .rodata:0x000016AC; // type:object size:0x4 data:float +lbl_1_rodata_16B0 = .rodata:0x000016B0; // type:object size:0x4 data:float +lbl_1_rodata_16B4 = .rodata:0x000016B4; // type:object size:0x4 data:float +lbl_1_rodata_16B8 = .rodata:0x000016B8; // type:object size:0x4 data:float +lbl_1_rodata_16BC = .rodata:0x000016BC; // type:object size:0x4 data:float +lbl_1_rodata_16C0 = .rodata:0x000016C0; // type:object size:0x4 data:float +lbl_1_rodata_16C4 = .rodata:0x000016C4; // type:object size:0x4 data:float +lbl_1_rodata_16C8 = .rodata:0x000016C8; // type:object size:0x4 data:float +lbl_1_rodata_16CC = .rodata:0x000016CC; // type:object size:0x4 data:float +lbl_1_rodata_16D0 = .rodata:0x000016D0; // type:object size:0x4 data:float +lbl_1_rodata_16D4 = .rodata:0x000016D4; // type:object size:0x4 data:float +lbl_1_rodata_16D8 = .rodata:0x000016D8; // type:object size:0x4 data:float +lbl_1_rodata_16DC = .rodata:0x000016DC; // type:object size:0x4 data:float +lbl_1_rodata_16E0 = .rodata:0x000016E0; // type:object size:0x4 data:float +lbl_1_rodata_16E4 = .rodata:0x000016E4; // type:object size:0x4 data:float +lbl_1_rodata_16E8 = .rodata:0x000016E8; // type:object size:0x4 data:float +lbl_1_rodata_16EC = .rodata:0x000016EC; // type:object size:0x4 data:float +lbl_1_rodata_16F0 = .rodata:0x000016F0; // type:object size:0x4 data:float +lbl_1_rodata_16F4 = .rodata:0x000016F4; // type:object size:0xD4 +lbl_1_rodata_17C8 = .rodata:0x000017C8; // type:object size:0x4 data:float +lbl_1_rodata_17CC = .rodata:0x000017CC; // type:object size:0x4 data:float +lbl_1_rodata_17D0 = .rodata:0x000017D0; // type:object size:0x4 data:float +lbl_1_rodata_17D4 = .rodata:0x000017D4; // type:object size:0x4 data:float +lbl_1_rodata_17D8 = .rodata:0x000017D8; // type:object size:0x4 data:float +lbl_1_rodata_17DC = .rodata:0x000017DC; // type:object size:0x4 data:float +lbl_1_rodata_17E0 = .rodata:0x000017E0; // type:object size:0x4 data:float +lbl_1_rodata_17E4 = .rodata:0x000017E4; // type:object size:0x84 +lbl_1_rodata_1868 = .rodata:0x00001868; // type:object size:0x48 +lbl_1_rodata_18B0 = .rodata:0x000018B0; // type:object size:0x4 data:float +lbl_1_rodata_18B4 = .rodata:0x000018B4; // type:object size:0x4 data:float +lbl_1_rodata_18B8 = .rodata:0x000018B8; // type:object size:0x4 data:float +lbl_1_rodata_18BC = .rodata:0x000018BC; // type:object size:0x4 data:float +lbl_1_rodata_18C0 = .rodata:0x000018C0; // type:object size:0x4 data:float +lbl_1_rodata_18C4 = .rodata:0x000018C4; // type:object size:0x104 +lbl_1_rodata_19C8 = .rodata:0x000019C8; // type:object size:0x4 data:float +lbl_1_rodata_19CC = .rodata:0x000019CC; // type:object size:0x4 data:float +lbl_1_rodata_19D0 = .rodata:0x000019D0; // type:object size:0x4 data:float +lbl_1_rodata_19D4 = .rodata:0x000019D4; // type:object size:0x4 data:float +lbl_1_rodata_19D8 = .rodata:0x000019D8; // type:object size:0x4 data:float +lbl_1_rodata_19DC = .rodata:0x000019DC; // type:object size:0x4 data:float +lbl_1_rodata_19E0 = .rodata:0x000019E0; // type:object size:0x4 data:float +lbl_1_rodata_19E4 = .rodata:0x000019E4; // type:object size:0x4 data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x1B data:string +lbl_1_data_37 = .data:0x00000037; // type:object size:0x1B data:string +lbl_1_data_52 = .data:0x00000052; // type:object size:0x16 data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x8 data:4byte +jumptable_1_data_70 = .data:0x00000070; // type:object size:0x24 scope:local +lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 data:4byte +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x1C +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x24 +jumptable_1_data_E0 = .data:0x000000E0; // type:object size:0x24 scope:local +lbl_1_data_108 = .data:0x00000108; // type:object size:0x8 data:4byte +lbl_1_data_110 = .data:0x00000110; // type:object size:0x8 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x38 data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 data:4byte +lbl_1_data_168 = .data:0x00000168; // type:object size:0xC +jumptable_1_data_174 = .data:0x00000174; // type:object size:0x24 scope:local +jumptable_1_data_198 = .data:0x00000198; // type:object size:0x24 scope:local +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4C +lbl_1_data_208 = .data:0x00000208; // type:object size:0x8 +lbl_1_data_210 = .data:0x00000210; // type:object size:0x8 data:4byte +jumptable_1_data_218 = .data:0x00000218; // type:object size:0x1C scope:local +jumptable_1_data_234 = .data:0x00000234; // type:object size:0x20 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x8 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/safDll/splits.txt b/config/GMPJ01_00/rels/safDll/splits.txt new file mode 100644 index 00000000..e4b1b5df --- /dev/null +++ b/config/GMPJ01_00/rels/safDll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/safDll/main.c: + .text start:0x00000000 end:0x0000052C + .rodata start:0x00000000 end:0x00000024 + .data start:0x00000000 end:0x00000070 + .bss start:0x00000000 end:0x0000030C diff --git a/config/GMPJ01_00/rels/safDll/symbols.txt b/config/GMPJ01_00/rels/safDll/symbols.txt new file mode 100644 index 00000000..0639762d --- /dev/null +++ b/config/GMPJ01_00/rels/safDll/symbols.txt @@ -0,0 +1,131 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x25C +fn_1_2FC = .text:0x000002FC; // type:function size:0x90 +fn_1_38C = .text:0x0000038C; // type:function size:0x1A0 +fn_1_52C = .text:0x0000052C; // type:function size:0xB8C +fn_1_10B8 = .text:0x000010B8; // type:function size:0xC4 +fn_1_117C = .text:0x0000117C; // type:function size:0x10D4 +fn_1_2250 = .text:0x00002250; // type:function size:0x104 +fn_1_2354 = .text:0x00002354; // type:function size:0x184 +fn_1_24D8 = .text:0x000024D8; // type:function size:0xB8 +fn_1_2590 = .text:0x00002590; // type:function size:0x148 +fn_1_26D8 = .text:0x000026D8; // type:function size:0x57C +fn_1_2C54 = .text:0x00002C54; // type:function size:0x4F0 +fn_1_3144 = .text:0x00003144; // type:function size:0x5A0 +fn_1_36E4 = .text:0x000036E4; // type:function size:0x498 +fn_1_3B7C = .text:0x00003B7C; // type:function size:0x284 +fn_1_3E00 = .text:0x00003E00; // type:function size:0x124 +fn_1_3F24 = .text:0x00003F24; // type:function size:0x21C +fn_1_4140 = .text:0x00004140; // type:function size:0x14 +fn_1_4154 = .text:0x00004154; // type:function size:0x10 +fn_1_4164 = .text:0x00004164; // type:function size:0x14 +fn_1_4178 = .text:0x00004178; // type:function size:0x10 +fn_1_4188 = .text:0x00004188; // type:function size:0x41C +fn_1_45A4 = .text:0x000045A4; // type:function size:0x2C8 +fn_1_486C = .text:0x0000486C; // type:function size:0x8E0 +fn_1_514C = .text:0x0000514C; // type:function size:0x404 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x1 data:byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4 data:4byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0x24 +lbl_1_data_28 = .data:0x00000028; // type:object size:0x48 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x11 data:string +lbl_1_data_81 = .data:0x00000081; // type:object size:0x4 data:string +lbl_1_data_85 = .data:0x00000085; // type:object size:0x4 data:string +lbl_1_data_89 = .data:0x00000089; // type:object size:0xE data:string +lbl_1_data_97 = .data:0x00000097; // type:object size:0xB data:string +lbl_1_data_A2 = .data:0x000000A2; // type:object size:0xE data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x13 data:string +lbl_1_data_D3 = .data:0x000000D3; // type:object size:0xD +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x38 data:2byte +lbl_1_data_118 = .data:0x00000118; // type:object size:0x22 data:string +lbl_1_data_13A = .data:0x0000013A; // type:object size:0x17 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0xA +lbl_1_bss_1A = .bss:0x0000001A; // type:object size:0x8 data:2byte +lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x2C2 data:2byte +lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0x4 data:4byte +lbl_1_bss_2E8 = .bss:0x000002E8; // type:object size:0x4 data:4byte +lbl_1_bss_2EC = .bss:0x000002EC; // type:object size:0x20 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0x4 data:4byte +lbl_1_bss_310 = .bss:0x00000310; // type:object size:0x8 data:4byte +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x2 data:2byte +lbl_1_bss_31C = .bss:0x0000031C; // type:object size:0x4 data:4byte +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x4 data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0x4 data:4byte +lbl_1_bss_328 = .bss:0x00000328; // type:object size:0x58 data:2byte +lbl_1_bss_380 = .bss:0x00000380; // type:object size:0x4 data:4byte diff --git a/config/GMPJ01_00/rels/selmenuDll/splits.txt b/config/GMPJ01_00/rels/selmenuDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/selmenuDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/selmenuDll/symbols.txt b/config/GMPJ01_00/rels/selmenuDll/symbols.txt new file mode 100644 index 00000000..b5746a65 --- /dev/null +++ b/config/GMPJ01_00/rels/selmenuDll/symbols.txt @@ -0,0 +1,201 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x4B8 +fn_1_558 = .text:0x00000558; // type:function size:0x60 +fn_1_5B8 = .text:0x000005B8; // type:function size:0x324 +fn_1_8DC = .text:0x000008DC; // type:function size:0x170 +fn_1_A4C = .text:0x00000A4C; // type:function size:0x180 +fn_1_BCC = .text:0x00000BCC; // type:function size:0x88 +fn_1_C54 = .text:0x00000C54; // type:function size:0x474 +fn_1_10C8 = .text:0x000010C8; // type:function size:0xA78 +fn_1_1B40 = .text:0x00001B40; // type:function size:0x334 +fn_1_1E74 = .text:0x00001E74; // type:function size:0x110 +fn_1_1F84 = .text:0x00001F84; // type:function size:0x50 +fn_1_1FD4 = .text:0x00001FD4; // type:function size:0x10C +fn_1_20E0 = .text:0x000020E0; // type:function size:0x1F8 +fn_1_22D8 = .text:0x000022D8; // type:function size:0xD6C +fn_1_3044 = .text:0x00003044; // type:function size:0x2FC +fn_1_3340 = .text:0x00003340; // type:function size:0x804 +fn_1_3B44 = .text:0x00003B44; // type:function size:0x40 +fn_1_3B84 = .text:0x00003B84; // type:function size:0x968 +fn_1_44EC = .text:0x000044EC; // type:function size:0x20 +fn_1_450C = .text:0x0000450C; // type:function size:0x4 +fn_1_4510 = .text:0x00004510; // type:function size:0x64 +fn_1_4574 = .text:0x00004574; // type:function size:0x854 +fn_1_4DC8 = .text:0x00004DC8; // type:function size:0x3D0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x8 data:4byte +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x10 data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x8 data:4byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x6 data:string +lbl_1_data_6 = .data:0x00000006; // type:object size:0x6 data:string +lbl_1_data_C = .data:0x0000000C; // type:object size:0x6 data:string +lbl_1_data_12 = .data:0x00000012; // type:object size:0x6 data:string +lbl_1_data_18 = .data:0x00000018; // type:object size:0x6 data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x7 data:string +lbl_1_data_25 = .data:0x00000025; // type:object size:0x6 data:string +lbl_1_data_2B = .data:0x0000002B; // type:object size:0x9 +lbl_1_data_34 = .data:0x00000034; // type:object size:0x20 +lbl_1_data_54 = .data:0x00000054; // type:object size:0x14 data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x16 data:string +lbl_1_data_7E = .data:0x0000007E; // type:object size:0x11 data:string +lbl_1_data_8F = .data:0x0000008F; // type:object size:0x12 data:string +lbl_1_data_A1 = .data:0x000000A1; // type:object size:0x10 data:string +lbl_1_data_B1 = .data:0x000000B1; // type:object size:0xD data:string +lbl_1_data_BE = .data:0x000000BE; // type:object size:0x11 data:string +lbl_1_data_CF = .data:0x000000CF; // type:object size:0xD data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xE data:string +lbl_1_data_EA = .data:0x000000EA; // type:object size:0x16 data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0x13 data:string +lbl_1_data_113 = .data:0x00000113; // type:object size:0xF data:string +lbl_1_data_122 = .data:0x00000122; // type:object size:0x14 data:string +lbl_1_data_136 = .data:0x00000136; // type:object size:0x11 data:string +lbl_1_data_147 = .data:0x00000147; // type:object size:0x13 data:string +lbl_1_data_15A = .data:0x0000015A; // type:object size:0x10 data:string +lbl_1_data_16A = .data:0x0000016A; // type:object size:0x11 data:string +lbl_1_data_17B = .data:0x0000017B; // type:object size:0x15 data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0x17 data:string +lbl_1_data_1A7 = .data:0x000001A7; // type:object size:0x11 data:string +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x10 data:string +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x10 data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x12 data:string +lbl_1_data_1EA = .data:0x000001EA; // type:object size:0x10 data:string +lbl_1_data_1FA = .data:0x000001FA; // type:object size:0xF data:string +lbl_1_data_209 = .data:0x00000209; // type:object size:0x15 data:string +lbl_1_data_21E = .data:0x0000021E; // type:object size:0xE data:string +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x13 data:string +lbl_1_data_23F = .data:0x0000023F; // type:object size:0x14 data:string +lbl_1_data_253 = .data:0x00000253; // type:object size:0x13 data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x11 data:string +lbl_1_data_277 = .data:0x00000277; // type:object size:0x11 data:string +lbl_1_data_288 = .data:0x00000288; // type:object size:0x11 data:string +lbl_1_data_299 = .data:0x00000299; // type:object size:0x10 data:string +lbl_1_data_2A9 = .data:0x000002A9; // type:object size:0x10 data:string +lbl_1_data_2B9 = .data:0x000002B9; // type:object size:0x1B data:string +lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x11 data:string +lbl_1_data_2E5 = .data:0x000002E5; // type:object size:0x1D data:string +lbl_1_data_302 = .data:0x00000302; // type:object size:0x17 data:string +lbl_1_data_319 = .data:0x00000319; // type:object size:0x16 data:string +lbl_1_data_32F = .data:0x0000032F; // type:object size:0x15 data:string +lbl_1_data_344 = .data:0x00000344; // type:object size:0x13 data:string +lbl_1_data_357 = .data:0x00000357; // type:object size:0xE data:string +lbl_1_data_365 = .data:0x00000365; // type:object size:0x14 data:string +lbl_1_data_379 = .data:0x00000379; // type:object size:0x13 data:string +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x12 data:string +lbl_1_data_39E = .data:0x0000039E; // type:object size:0xD data:string +lbl_1_data_3AB = .data:0x000003AB; // type:object size:0xD data:string +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x17 data:string +lbl_1_data_3CF = .data:0x000003CF; // type:object size:0xE data:string +lbl_1_data_3DD = .data:0x000003DD; // type:object size:0xB data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x11 data:string +lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x11 data:string +lbl_1_data_40A = .data:0x0000040A; // type:object size:0xA data:string +lbl_1_data_414 = .data:0x00000414; // type:object size:0x13 data:string +lbl_1_data_427 = .data:0x00000427; // type:object size:0xD data:string +lbl_1_data_434 = .data:0x00000434; // type:object size:0x5 data:string +lbl_1_data_439 = .data:0x00000439; // type:object size:0x15 data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x5 data:string +lbl_1_data_453 = .data:0x00000453; // type:object size:0xA data:string +lbl_1_data_45D = .data:0x0000045D; // type:object size:0xE data:string +lbl_1_data_46B = .data:0x0000046B; // type:object size:0xE data:string +lbl_1_data_479 = .data:0x00000479; // type:object size:0xE data:string +lbl_1_data_487 = .data:0x00000487; // type:object size:0xE data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0xE data:string +lbl_1_data_4A3 = .data:0x000004A3; // type:object size:0xE data:string +lbl_1_data_4B1 = .data:0x000004B1; // type:object size:0xE data:string +lbl_1_data_4BF = .data:0x000004BF; // type:object size:0xE data:string +lbl_1_data_4CD = .data:0x000004CD; // type:object size:0xA data:string +lbl_1_data_4D7 = .data:0x000004D7; // type:object size:0x11 +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x348 +lbl_1_data_830 = .data:0x00000830; // type:object size:0x28 +lbl_1_data_858 = .data:0x00000858; // type:object size:0x12 data:string +lbl_1_data_86A = .data:0x0000086A; // type:object size:0x12 data:string +lbl_1_data_87C = .data:0x0000087C; // type:object size:0x12 data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0x12 data:string +lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x12 data:string +lbl_1_data_8B2 = .data:0x000008B2; // type:object size:0x12 data:string +lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0x11 data:string +lbl_1_data_8D5 = .data:0x000008D5; // type:object size:0x23 +lbl_1_data_8F8 = .data:0x000008F8; // type:object size:0x2 data:2byte +lbl_1_data_8FA = .data:0x000008FA; // type:object size:0x8 +lbl_1_data_902 = .data:0x00000902; // type:object size:0x12 +lbl_1_data_914 = .data:0x00000914; // type:object size:0x4 data:4byte +lbl_1_data_918 = .data:0x00000918; // type:object size:0x12 data:string +lbl_1_data_92A = .data:0x0000092A; // type:object size:0x24 data:string +lbl_1_data_94E = .data:0x0000094E; // type:object size:0xB data:string +lbl_1_data_959 = .data:0x00000959; // type:object size:0x3 data:string +lbl_1_data_95C = .data:0x0000095C; // type:object size:0x10 +lbl_1_data_96C = .data:0x0000096C; // type:object size:0x20 +lbl_1_data_98C = .data:0x0000098C; // type:object size:0x20 +lbl_1_data_9AC = .data:0x000009AC; // type:object size:0xD data:string +lbl_1_data_9B9 = .data:0x000009B9; // type:object size:0x5 +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x5 +lbl_1_data_9C3 = .data:0x000009C3; // type:object size:0x6 +lbl_1_data_9C9 = .data:0x000009C9; // type:object size:0x9 data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0xA data:string +lbl_1_data_9DC = .data:0x000009DC; // type:object size:0xA data:string +lbl_1_data_9E6 = .data:0x000009E6; // type:object size:0x9 data:string +lbl_1_data_9EF = .data:0x000009EF; // type:object size:0x9 data:string +lbl_1_data_9F8 = .data:0x000009F8; // type:object size:0xC +lbl_1_data_A04 = .data:0x00000A04; // type:object size:0x14 data:4byte +lbl_1_data_A18 = .data:0x00000A18; // type:object size:0x6 data:string +lbl_1_data_A1E = .data:0x00000A1E; // type:object size:0x4 data:string +lbl_1_data_A22 = .data:0x00000A22; // type:object size:0x5 data:string +lbl_1_data_A27 = .data:0x00000A27; // type:object size:0x7 data:string +lbl_1_data_A2E = .data:0x00000A2E; // type:object size:0x5 data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x9 data:string +jumptable_1_data_A3C = .data:0x00000A3C; // type:object size:0x20 scope:local +jumptable_1_data_A5C = .data:0x00000A5C; // type:object size:0x20 scope:local +lbl_1_data_A7C = .data:0x00000A7C; // type:object size:0x4 data:string +lbl_1_data_A80 = .data:0x00000A80; // type:object size:0x4 data:string +lbl_1_data_A84 = .data:0x00000A84; // type:object size:0x10 data:string +lbl_1_data_A94 = .data:0x00000A94; // type:object size:0x15 data:string +lbl_1_data_AA9 = .data:0x00000AA9; // type:object size:0x15 data:string +lbl_1_data_ABE = .data:0x00000ABE; // type:object size:0x15 data:string +lbl_1_data_AD3 = .data:0x00000AD3; // type:object size:0x15 data:string +lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x15 data:string +lbl_1_data_AFD = .data:0x00000AFD; // type:object size:0x15 data:string +lbl_1_data_B12 = .data:0x00000B12; // type:object size:0x15 data:string +lbl_1_data_B27 = .data:0x00000B27; // type:object size:0x14 data:string +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte +lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x2 data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x10 +lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x8 +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x10 +lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x8 +lbl_1_bss_3E = .bss:0x0000003E; // type:object size:0x8 +lbl_1_bss_46 = .bss:0x00000046; // type:object size:0x8 +lbl_1_bss_4E = .bss:0x0000004E; // type:object size:0x2 data:2byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 data:2byte +lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x2 data:2byte +lbl_1_bss_56 = .bss:0x00000056; // type:object size:0x2A data:2byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0xE +lbl_1_bss_96 = .bss:0x00000096; // type:object size:0x2 data:2byte diff --git a/config/GMPJ01_00/rels/staffDll/splits.txt b/config/GMPJ01_00/rels/staffDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/staffDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/staffDll/symbols.txt b/config/GMPJ01_00/rels/staffDll/symbols.txt new file mode 100644 index 00000000..8f507623 --- /dev/null +++ b/config/GMPJ01_00/rels/staffDll/symbols.txt @@ -0,0 +1,54 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x218 +fn_1_2B8 = .text:0x000002B8; // type:function size:0x60 +fn_1_318 = .text:0x00000318; // type:function size:0x3DC +fn_1_6F4 = .text:0x000006F4; // type:function size:0x3AC +fn_1_AA0 = .text:0x00000AA0; // type:function size:0x12C +fn_1_BCC = .text:0x00000BCC; // type:function size:0x1C4 +fn_1_D90 = .text:0x00000D90; // type:function size:0x500 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xFA8 +lbl_1_data_FA8 = .data:0x00000FA8; // type:object size:0xC data:float +lbl_1_data_FB4 = .data:0x00000FB4; // type:object size:0x14 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x6 data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x34 data:2byte diff --git a/config/GMPJ01_00/rels/subchrselDll/splits.txt b/config/GMPJ01_00/rels/subchrselDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPJ01_00/rels/subchrselDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPJ01_00/rels/subchrselDll/symbols.txt b/config/GMPJ01_00/rels/subchrselDll/symbols.txt new file mode 100644 index 00000000..22a9a485 --- /dev/null +++ b/config/GMPJ01_00/rels/subchrselDll/symbols.txt @@ -0,0 +1,33 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x6C +fn_1_10C = .text:0x0000010C; // type:function size:0x58 +fn_1_164 = .text:0x00000164; // type:function size:0x654 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 data:string +lbl_1_data_8 = .data:0x00000008; // type:object size:0x8 data:string +lbl_1_data_10 = .data:0x00000010; // type:object size:0x8 data:string +lbl_1_data_18 = .data:0x00000018; // type:object size:0x8 data:string +lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x6 data:string +lbl_1_data_36 = .data:0x00000036; // type:object size:0x6 data:string +lbl_1_data_3C = .data:0x0000003C; // type:object size:0x6 data:string +lbl_1_data_42 = .data:0x00000042; // type:object size:0x6 data:string +lbl_1_data_48 = .data:0x00000048; // type:object size:0x6 data:string +lbl_1_data_4E = .data:0x0000004E; // type:object size:0x7 data:string +lbl_1_data_55 = .data:0x00000055; // type:object size:0x6 data:string +lbl_1_data_5B = .data:0x0000005B; // type:object size:0x9 +lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 +lbl_1_data_84 = .data:0x00000084; // type:object size:0x1 +lbl_1_data_85 = .data:0x00000085; // type:object size:0x6 data:string +lbl_1_data_8B = .data:0x0000008B; // type:object size:0x8 data:string +lbl_1_data_93 = .data:0x00000093; // type:object size:0x7 data:string +lbl_1_data_9A = .data:0x0000009A; // type:object size:0x7 data:string +lbl_1_data_A1 = .data:0x000000A1; // type:object size:0x6 data:string +lbl_1_data_A7 = .data:0x000000A7; // type:object size:0x9 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1C +lbl_1_data_CC = .data:0x000000CC; // type:object size:0x15 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/config/GMPJ01_00/rels/w04Dll/splits.txt b/config/GMPJ01_00/rels/w04Dll/splits.txt new file mode 100644 index 00000000..d977e9ab --- /dev/null +++ b/config/GMPJ01_00/rels/w04Dll/splits.txt @@ -0,0 +1,47 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w04Dll/main.c: + .text start:0x000000E0 end:0x000012FC + .rodata start:0x00000010 end:0x00000040 + .data start:0x00000000 end:0x00000298 + .bss start:0x00000000 end:0x00000038 + +REL/w04Dll/bridge.c: + .text start:0x000012FC end:0x000020EC + .rodata start:0x00000040 end:0x00000098 + .data start:0x00000298 end:0x000002D0 + .bss start:0x00000038 end:0x00000048 + +REL/w04Dll/boo_event.c: + .text start:0x000020EC end:0x00006024 + .rodata start:0x00000098 end:0x00000180 + .data start:0x000002D0 end:0x000003A8 + .bss start:0x00000048 end:0x00000100 + +REL/w04Dll/big_boo.c: + .text start:0x00006024 end:0x0000A0DC + .rodata start:0x00000180 end:0x000002C0 + .data start:0x000003A8 end:0x000004F0 + .bss start:0x00000100 end:0x00000288 + +REL/w04Dll/mg_item.c: + .text start:0x0000A0DC end:0x0000C784 + .rodata start:0x000002C0 end:0x000003A0 + .data start:0x000004F0 end:0x00000588 + .bss start:0x00000288 end:0x000002B0 + +REL/w04Dll/mg_coin.c: + .text start:0x0000C784 end:0x0000E9F0 + .rodata start:0x000003A0 end:0x00000428 + .data start:0x00000588 end:0x0000063F + .bss start:0x000002B0 end:0x00000328 diff --git a/config/GMPJ01_00/rels/w04Dll/symbols.txt b/config/GMPJ01_00/rels/w04Dll/symbols.txt new file mode 100644 index 00000000..de97498a --- /dev/null +++ b/config/GMPJ01_00/rels/w04Dll/symbols.txt @@ -0,0 +1,451 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x30 +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x514 +BoardDestroy = .text:0x000005F4; // type:function size:0x15C +fn_1_750 = .text:0x00000750; // type:function size:0x44 scope:local +fn_1_794 = .text:0x00000794; // type:function size:0x4 scope:local +fn_1_798 = .text:0x00000798; // type:function size:0x64 scope:local +fn_1_7FC = .text:0x000007FC; // type:function size:0x134 scope:local +fn_1_930 = .text:0x00000930; // type:function size:0x24 scope:local +fn_1_954 = .text:0x00000954; // type:function size:0x4 scope:local +fn_1_958 = .text:0x00000958; // type:function size:0x3A0 scope:local +fn_1_CF8 = .text:0x00000CF8; // type:function size:0x38 scope:local +fn_1_D30 = .text:0x00000D30; // type:function size:0x80 scope:local +fn_1_DB0 = .text:0x00000DB0; // type:function size:0x28C scope:local +fn_1_103C = .text:0x0000103C; // type:function size:0xF4 scope:local +fn_1_1130 = .text:0x00001130; // type:function size:0x1CC +fn_1_12FC = .text:0x000012FC; // type:function size:0x2CC +fn_1_15C8 = .text:0x000015C8; // type:function size:0x50 +fn_1_1618 = .text:0x00001618; // type:function size:0x19C scope:local +fn_1_17B4 = .text:0x000017B4; // type:function size:0x168 scope:local +fn_1_191C = .text:0x0000191C; // type:function size:0x27C scope:local +fn_1_1B98 = .text:0x00001B98; // type:function size:0x94 scope:local +fn_1_1C2C = .text:0x00001C2C; // type:function size:0x234 scope:local +fn_1_1E60 = .text:0x00001E60; // type:function size:0x1A8 scope:local +fn_1_2008 = .text:0x00002008; // type:function size:0x3C scope:local +fn_1_2044 = .text:0x00002044; // type:function size:0x14 scope:local +fn_1_2058 = .text:0x00002058; // type:function size:0x94 +fn_1_20EC = .text:0x000020EC; // type:function size:0x7D0 scope:local +fn_1_28BC = .text:0x000028BC; // type:function size:0x2D0 scope:local +fn_1_2B8C = .text:0x00002B8C; // type:function size:0x84 scope:local +fn_1_2C10 = .text:0x00002C10; // type:function size:0x250 scope:local +fn_1_2E60 = .text:0x00002E60; // type:function size:0x88 scope:local +fn_1_2EE8 = .text:0x00002EE8; // type:function size:0x6C scope:local +fn_1_2F54 = .text:0x00002F54; // type:function size:0x68 scope:local +fn_1_2FBC = .text:0x00002FBC; // type:function size:0x20 scope:local +fn_1_2FDC = .text:0x00002FDC; // type:function size:0xC8 scope:local +fn_1_30A4 = .text:0x000030A4; // type:function size:0x834 scope:local +fn_1_38D8 = .text:0x000038D8; // type:function size:0x3C4 scope:local +fn_1_3C9C = .text:0x00003C9C; // type:function size:0x90C scope:local +fn_1_45A8 = .text:0x000045A8; // type:function size:0x88 scope:local +fn_1_4630 = .text:0x00004630; // type:function size:0x50 scope:local +fn_1_4680 = .text:0x00004680; // type:function size:0x1C8 scope:local +fn_1_4848 = .text:0x00004848; // type:function size:0x7D0 scope:local +fn_1_5018 = .text:0x00005018; // type:function size:0x288 scope:local +fn_1_52A0 = .text:0x000052A0; // type:function size:0x300 scope:local +fn_1_55A0 = .text:0x000055A0; // type:function size:0x14 scope:local +fn_1_55B4 = .text:0x000055B4; // type:function size:0x94 +fn_1_5648 = .text:0x00005648; // type:function size:0x1E0 scope:local +fn_1_5828 = .text:0x00005828; // type:function size:0x7C scope:local +fn_1_58A4 = .text:0x000058A4; // type:function size:0xDC scope:local +fn_1_5980 = .text:0x00005980; // type:function size:0x44 scope:local +fn_1_59C4 = .text:0x000059C4; // type:function size:0x68 scope:local +fn_1_5A2C = .text:0x00005A2C; // type:function size:0x5F8 scope:local +fn_1_6024 = .text:0x00006024; // type:function size:0x28C +fn_1_62B0 = .text:0x000062B0; // type:function size:0x628 scope:local +fn_1_68D8 = .text:0x000068D8; // type:function size:0x420 scope:local +fn_1_6CF8 = .text:0x00006CF8; // type:function size:0x608 scope:local +fn_1_7300 = .text:0x00007300; // type:function size:0x27C scope:local +fn_1_757C = .text:0x0000757C; // type:function size:0x5C scope:local +fn_1_75D8 = .text:0x000075D8; // type:function size:0x2B0 scope:local +fn_1_7888 = .text:0x00007888; // type:function size:0x11D8 scope:local +fn_1_8A60 = .text:0x00008A60; // type:function size:0xE24 scope:local +fn_1_98A0 = .text:0x00009884; // type:function size:0x294 scope:local +fn_1_9B34 = .text:0x00009B18; // type:function size:0xA8 scope:local +fn_1_9BDC = .text:0x00009BC0; // type:function size:0x3C scope:local +fn_1_9C18 = .text:0x00009BFC; // type:function size:0x290 scope:local +fn_1_9EA8 = .text:0x00009E8C; // type:function size:0x14 scope:local +fn_1_9EBC = .text:0x00009EA0; // type:function size:0x94 +fn_1_9F50 = .text:0x00009F34; // type:function size:0x124 scope:local +fn_1_A074 = .text:0x0000A058; // type:function size:0x84 scope:local +fn_1_A0F8 = .text:0x0000A0DC; // type:function size:0xF8 +fn_1_A1F0 = .text:0x0000A1D4; // type:function size:0x52C +fn_1_A71C = .text:0x0000A700; // type:function size:0xCC scope:local +fn_1_A7E8 = .text:0x0000A7CC; // type:function size:0x1294 scope:local +fn_1_BA7C = .text:0x0000BA60; // type:function size:0x84 +fn_1_BB00 = .text:0x0000BAE4; // type:function size:0x7BC +fn_1_C2BC = .text:0x0000C2A0; // type:function size:0xCC +fn_1_C388 = .text:0x0000C36C; // type:function size:0x418 scope:local +fn_1_C7A0 = .text:0x0000C784; // type:function size:0x34 +fn_1_C7D4 = .text:0x0000C7B8; // type:function size:0x7B8 +fn_1_CF8C = .text:0x0000CF70; // type:function size:0x120 scope:local +fn_1_D0AC = .text:0x0000D090; // type:function size:0x30 scope:local +fn_1_D0DC = .text:0x0000D0C0; // type:function size:0x98 scope:local +fn_1_D174 = .text:0x0000D158; // type:function size:0xBC scope:local +fn_1_D230 = .text:0x0000D214; // type:function size:0x74 scope:local +fn_1_D2A4 = .text:0x0000D288; // type:function size:0x2B0 scope:local +fn_1_D554 = .text:0x0000D538; // type:function size:0x154 scope:local +fn_1_D6A8 = .text:0x0000D68C; // type:function size:0x64 scope:local +fn_1_D70C = .text:0x0000D6F0; // type:function size:0x64 scope:local +fn_1_D770 = .text:0x0000D754; // type:function size:0x894 scope:local +fn_1_E004 = .text:0x0000DFE8; // type:function size:0x140 scope:local +fn_1_E144 = .text:0x0000E128; // type:function size:0x48 scope:local +fn_1_E18C = .text:0x0000E170; // type:function size:0x1E8 scope:local +fn_1_E374 = .text:0x0000E358; // type:function size:0x14C scope:local +fn_1_E4C0 = .text:0x0000E4A4; // type:function size:0x1EC scope:local +fn_1_E6AC = .text:0x0000E690; // type:function size:0x1D4 scope:local +fn_1_E880 = .text:0x0000E864; // type:function size:0x18C scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x280 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 scope:local data:2byte +lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 scope:local data:2byte +lbl_1_data_284 = .data:0x00000284; // type:object size:0x2 scope:local data:2byte +lbl_1_data_286 = .data:0x00000286; // type:object size:0x2 scope:local data:2byte +lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 scope:local +lbl_1_data_290 = .data:0x00000290; // type:object size:0x8 scope:local +lbl_1_data_298 = .data:0x00000298; // type:object size:0x8 scope:local +lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0xC scope:local +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x24 scope:local +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x20 scope:local +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 scope:local +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 scope:local +lbl_1_data_334 = .data:0x00000334; // type:object size:0x5 scope:local data:string +lbl_1_data_339 = .data:0x00000339; // type:object size:0x5 scope:local data:string +lbl_1_data_33E = .data:0x0000033E; // type:object size:0x5 scope:local data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0x5 scope:local data:string +lbl_1_data_348 = .data:0x00000348; // type:object size:0x10 scope:local +lbl_1_data_358 = .data:0x00000358; // type:object size:0x10 scope:local +lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 scope:local data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0x12 scope:local data:string +lbl_1_data_382 = .data:0x00000382; // type:object size:0x11 scope:local data:string +lbl_1_data_393 = .data:0x00000393; // type:object size:0x15 scope:local +lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x8 scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x9 scope:local data:string +lbl_1_data_3B9 = .data:0x000003B9; // type:object size:0x6 scope:local data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x5 scope:local data:string +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x8 scope:local +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x14 scope:local data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x14 scope:local +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x20 scope:local +lbl_1_data_414 = .data:0x00000414; // type:object size:0x10 scope:local +lbl_1_data_424 = .data:0x00000424; // type:object size:0x30 scope:local data:2byte +lbl_1_data_454 = .data:0x00000454; // type:object size:0xB scope:local data:string +lbl_1_data_45F = .data:0x0000045F; // type:object size:0x2 scope:local data:string +lbl_1_data_461 = .data:0x00000461; // type:object size:0xC scope:local data:string +lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B scope:local +lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 scope:local data:string +lbl_1_data_48B = .data:0x0000048B; // type:object size:0x11 scope:local +lbl_1_data_49C = .data:0x0000049C; // type:object size:0x54 scope:local +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x6 scope:local data:string +lbl_1_data_4F6 = .data:0x000004F6; // type:object size:0x6 scope:local data:string +lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x6 scope:local data:string +lbl_1_data_502 = .data:0x00000502; // type:object size:0x8 scope:local data:string +lbl_1_data_50A = .data:0x0000050A; // type:object size:0x8 scope:local data:string +lbl_1_data_512 = .data:0x00000512; // type:object size:0xA scope:local +lbl_1_data_51C = .data:0x0000051C; // type:object size:0x18 scope:local data:4byte +lbl_1_data_534 = .data:0x00000534; // type:object size:0xC scope:local +lbl_1_data_540 = .data:0x00000540; // type:object size:0x48 scope:local +lbl_1_data_588 = .data:0x00000588; // type:object size:0x4 scope:local data:4byte +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x5 scope:local data:string +lbl_1_data_591 = .data:0x00000591; // type:object size:0x5 scope:local data:string +lbl_1_data_596 = .data:0x00000596; // type:object size:0x5 scope:local data:string +lbl_1_data_59B = .data:0x0000059B; // type:object size:0x5 scope:local data:string +lbl_1_data_5A0 = .data:0x000005A0; // type:object size:0x5 scope:local data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x5 scope:local data:string +lbl_1_data_5AA = .data:0x000005AA; // type:object size:0x5 scope:local data:string +lbl_1_data_5AF = .data:0x000005AF; // type:object size:0x5 scope:local data:string +lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0x8 scope:local +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x24 scope:local data:4byte +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0x10 scope:local +lbl_1_data_5F0 = .data:0x000005F0; // type:object size:0x20 scope:local +lbl_1_data_610 = .data:0x00000610; // type:object size:0xE scope:local data:string +lbl_1_data_61E = .data:0x0000061E; // type:object size:0xE scope:local data:string +lbl_1_data_62C = .data:0x0000062C; // type:object size:0x10 +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x3 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 scope:local data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x24 data:2byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC scope:local +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x18 scope:local +lbl_1_bss_6A = .bss:0x0000006A; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x30 scope:local +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_B2 = .bss:0x000000B2; // type:object size:0x8 scope:local +lbl_1_bss_BA = .bss:0x000000BA; // type:object size:0x8 scope:local data:2byte +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x10 scope:local +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x10 scope:local +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x10 scope:local +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x6 scope:local data:2byte +lbl_1_bss_FA = .bss:0x000000FA; // type:object size:0x6 scope:local data:2byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC scope:local +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x20 scope:local +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 scope:local +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0xD4 scope:local data:2byte +lbl_1_bss_210 = .bss:0x00000210; // type:object size:0x30 scope:local +lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x30 scope:local +lbl_1_bss_270 = .bss:0x00000270; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_272 = .bss:0x00000272; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x6 scope:local data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x8 scope:local data:4byte +lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x6 scope:local +lbl_1_bss_29E = .bss:0x0000029E; // type:object size:0x8 scope:local +lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0x6 scope:local +lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xE scope:local +lbl_1_bss_2C2 = .bss:0x000002C2; // type:object size:0xE scope:local +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x28 scope:local data:2byte +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2FA = .bss:0x000002FA; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC scope:local +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0xC scope:local data:float +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_31C = .bss:0x0000031C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_326 = .bss:0x00000326; // type:object size:0x2 scope:local data:2byte diff --git a/config/GMPJ01_00/rels/ztardll/splits.txt b/config/GMPJ01_00/rels/ztardll/splits.txt new file mode 100644 index 00000000..9d81d15d --- /dev/null +++ b/config/GMPJ01_00/rels/ztardll/splits.txt @@ -0,0 +1,27 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/ztardll/main.c: + .text start:0x000000A0 end:0x00007820 + .rodata start:0x00000000 end:0x000001B8 + .data start:0x00000000 end:0x000000B0 + .bss start:0x00000000 end:0x00000070 + +REL/ztardll/font.c: + .text start:0x00007820 end:0x00007C9C + .rodata start:0x000001B8 end:0x000001C0 + .data start:0x000000B0 end:0x00000578 + +REL/ztardll/select.c: + .text start:0x00007C9C end:0x00012358 + .rodata start:0x000001C0 end:0x00000298 + .data start:0x00000578 end:0x00000824 + .bss start:0x00000070 end:0x000002D8 diff --git a/config/GMPJ01_00/rels/ztardll/symbols.txt b/config/GMPJ01_00/rels/ztardll/symbols.txt new file mode 100644 index 00000000..f9516f21 --- /dev/null +++ b/config/GMPJ01_00/rels/ztardll/symbols.txt @@ -0,0 +1,257 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x384 +fn_1_424 = .text:0x00000424; // type:function size:0x1350 +fn_1_1774 = .text:0x00001774; // type:function size:0x57C +fn_1_1CF0 = .text:0x00001CF0; // type:function size:0xB0 +fn_1_1DA0 = .text:0x00001DA0; // type:function size:0x5B0 +fn_1_2350 = .text:0x00002350; // type:function size:0x1060 +fn_1_33B0 = .text:0x000033B0; // type:function size:0xD34 +fn_1_40E4 = .text:0x000040E4; // type:function size:0x290 +fn_1_4374 = .text:0x00004374; // type:function size:0x5D4 +fn_1_4948 = .text:0x00004948; // type:function size:0x874 +fn_1_51BC = .text:0x000051BC; // type:function size:0x15C +fn_1_524C = .text:0x00005318; // type:function size:0x14AC +fn_1_66F8 = .text:0x000067C4; // type:function size:0x10C +fn_1_6804 = .text:0x000068D0; // type:function size:0xC10 +fn_1_7414 = .text:0x000074E0; // type:function size:0x340 +fn_1_7754 = .text:0x00007820; // type:function size:0x47C +fn_1_7C00 = .text:0x00007C9C; // type:function size:0x16C +fn_1_7D6C = .text:0x00007E08; // type:function size:0xA0 +fn_1_7E0C = .text:0x00007EA8; // type:function size:0x224 +fn_1_8030 = .text:0x000080CC; // type:function size:0x2DC +fn_1_830C = .text:0x000083A8; // type:function size:0x2C +fn_1_8338 = .text:0x000083D4; // type:function size:0x518 +fn_1_8850 = .text:0x000088EC; // type:function size:0x2C +fn_1_887C = .text:0x00008918; // type:function size:0x28 +fn_1_88A4 = .text:0x00008940; // type:function size:0x274 +fn_1_8B18 = .text:0x00008BB4; // type:function size:0x2C +fn_1_8B44 = .text:0x00008BE0; // type:function size:0x2C +fn_1_8B70 = .text:0x00008C0C; // type:function size:0x24 +fn_1_8B94 = .text:0x00008C30; // type:function size:0x2BC +fn_1_8E50 = .text:0x00008EEC; // type:function size:0x500 +fn_1_9350 = .text:0x000093EC; // type:function size:0x480 +fn_1_97D0 = .text:0x0000986C; // type:function size:0x80C +fn_1_9FDC = .text:0x0000A078; // type:function size:0x28 +fn_1_A004 = .text:0x0000A0A0; // type:function size:0x28 +fn_1_A02C = .text:0x0000A0C8; // type:function size:0x21C +fn_1_A248 = .text:0x0000A2E4; // type:function size:0x194 +fn_1_A3DC = .text:0x0000A478; // type:function size:0x198 +fn_1_A574 = .text:0x0000A610; // type:function size:0x9C +fn_1_A610 = .text:0x0000A6AC; // type:function size:0x2D8 +fn_1_A8E8 = .text:0x0000A984; // type:function size:0x2DC +fn_1_ABC4 = .text:0x0000AC60; // type:function size:0x1E0 +fn_1_ADA4 = .text:0x0000AE40; // type:function size:0xF0 +fn_1_AE94 = .text:0x0000AF30; // type:function size:0x50 +fn_1_AEE4 = .text:0x0000AF80; // type:function size:0x584 +fn_1_B468 = .text:0x0000B504; // type:function size:0x5D8 +fn_1_BA40 = .text:0x0000BADC; // type:function size:0x33C +fn_1_BD7C = .text:0x0000BE18; // type:function size:0x274 +fn_1_BFF0 = .text:0x0000C08C; // type:function size:0x7C +fn_1_C06C = .text:0x0000C108; // type:function size:0x44C +fn_1_C4B8 = .text:0x0000C554; // type:function size:0x434 +fn_1_C8EC = .text:0x0000C988; // type:function size:0x204 +fn_1_CAF0 = .text:0x0000CB8C; // type:function size:0x790 +fn_1_D280 = .text:0x0000D31C; // type:function size:0xB0C +fn_1_DD8C = .text:0x0000DE28; // type:function size:0x720 +fn_1_E4AC = .text:0x0000E548; // type:function size:0x9C +fn_1_E548 = .text:0x0000E5E4; // type:function size:0xCCC +fn_1_F214 = .text:0x0000F2B0; // type:function size:0x924 +fn_1_FB38 = .text:0x0000FBD4; // type:function size:0x258 +fn_1_FD90 = .text:0x0000FE2C; // type:function size:0x958 +fn_1_106E8 = .text:0x00010784; // type:function size:0x7C +fn_1_10764 = .text:0x00010800; // type:function size:0x164 +fn_1_108C8 = .text:0x00010964; // type:function size:0x1B8 +fn_1_10A80 = .text:0x00010B1C; // type:function size:0xA4 +fn_1_10B24 = .text:0x00010BC0; // type:function size:0xF4 +fn_1_10C18 = .text:0x00010CB4; // type:function size:0x80 +fn_1_10C98 = .text:0x00010D34; // type:function size:0x80 +fn_1_10D18 = .text:0x00010DB4; // type:function size:0x28 +fn_1_10D40 = .text:0x00010DDC; // type:function size:0x20 +fn_1_10D60 = .text:0x00010DFC; // type:function size:0xD8 +fn_1_10E38 = .text:0x00010ED4; // type:function size:0xC8 +fn_1_10F00 = .text:0x00010F9C; // type:function size:0xBC +fn_1_10FBC = .text:0x00011058; // type:function size:0x40 +fn_1_10FFC = .text:0x00011098; // type:function size:0x24 +fn_1_11020 = .text:0x000110BC; // type:function size:0x1C0 +fn_1_111E0 = .text:0x0001127C; // type:function size:0x84 +fn_1_11264 = .text:0x00011300; // type:function size:0xD4 +fn_1_11338 = .text:0x000113D4; // type:function size:0x58 +fn_1_11390 = .text:0x0001142C; // type:function size:0x15C +fn_1_114EC = .text:0x00011588; // type:function size:0x1C4 +fn_1_11708 = .text:0x0001174C; // type:function size:0x1AC +fn_1_1190C = .text:0x000118F8; // type:function size:0x54 +fn_1_11960 = .text:0x0001194C; // type:function size:0x304 +fn_1_11C64 = .text:0x00011C50; // type:function size:0x304 +fn_1_11F68 = .text:0x00011F54; // type:function size:0x340 +fn_1_122A8 = .text:0x00012294; // type:function size:0xC4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x38 scope:local data:4byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 scope:local data:string +lbl_1_data_22 = .data:0x00000022; // type:object size:0x8 +lbl_1_data_2C = .data:0x0000002C; // type:object size:0x18 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x6 +lbl_1_data_4A = .data:0x0000004A; // type:object size:0xC +lbl_1_data_56 = .data:0x00000056; // type:object size:0xE data:wstring +lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 +lbl_1_data_84 = .data:0x00000084; // type:object size:0x10 +lbl_1_data_94 = .data:0x00000094; // type:object size:0xC +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA scope:local data:string +lbl_1_data_AA = .data:0x000000AA; // type:object size:0x6 scope:local +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x4C8 +lbl_1_data_3C8 = .data:0x00000578; // type:object size:0x20 +lbl_1_data_3E8 = .data:0x00000598; // type:object size:0x20 +lbl_1_data_5B8 = .data:0x000005B8; // type:object size:0x3C scope:local data:string +lbl_1_data_5F4 = .data:0x000005F4; // type:object size:0x19 scope:local data:string +lbl_1_data_60D = .data:0x0000060D; // type:object size:0x1A scope:local data:string +lbl_1_data_627 = .data:0x00000627; // type:object size:0x3A scope:local data:string +lbl_1_data_4B4 = .data:0x00000664; // type:object size:0x20 data:4byte +lbl_1_data_4D4 = .data:0x00000684; // type:object size:0x40 data:4byte +lbl_1_data_514 = .data:0x000006C4; // type:object size:0x70 +lbl_1_data_584 = .data:0x00000734; // type:object size:0x90 data:4byte +lbl_1_data_614 = .data:0x000007C4; // type:object size:0x20 +lbl_1_data_634 = .data:0x000007E4; // type:object size:0x8 data:4byte +lbl_1_data_63C = .data:0x000007EC; // type:object size:0x10 +lbl_1_data_64C = .data:0x000007FC; // type:object size:0x20 +lbl_1_data_66C = .data:0x0000081C; // type:object size:0x4 data:4byte +lbl_1_data_670 = .data:0x00000820; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x28 data:2byte +lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x8 data:2byte +lbl_1_bss_3E = .bss:0x0000003E; // type:object size:0x2 data:2byte +lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x2 data:2byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x2 data:2byte +lbl_1_bss_46 = .bss:0x00000046; // type:object size:0x2 data:2byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte +lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x2 data:2byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x2 data:2byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 data:2byte +lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x2 data:2byte +lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x2 data:2byte +lbl_1_bss_5E = .bss:0x0000005E; // type:object size:0x2 data:2byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x8 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x14 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x180 data:4byte +lbl_1_bss_20C = .bss:0x0000020C; // type:object size:0x60 data:4byte +lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x6C data:4byte diff --git a/config/GMPJ01_00/splits.txt b/config/GMPJ01_00/splits.txt new file mode 100644 index 00000000..787212a6 --- /dev/null +++ b/config/GMPJ01_00/splits.txt @@ -0,0 +1,334 @@ +Sections: + .init type:code align:4 + extab type:rodata align:32 + extabindex type:rodata align:32 + .text type:code align:8 + .ctors type:rodata align:16 + .dtors type:rodata align:32 + .rodata type:rodata align:32 + .data type:data align:32 + .bss type:bss align:32 + .sdata type:data align:4 + .sbss type:bss align:32 + .sdata2 type:rodata align:32 + .sbss2 type:bss align:4 + +game/main.c: + .text start:0x800057C0 end:0x80005A5C + .data start:0x8011E9C0 end:0x8011E9D0 + .sdata start:0x801D30C0 end:0x801D30D0 + .sbss start:0x801D36C0 end:0x801D3718 + .sdata2 start:0x801D4620 end:0x801D4628 + +game/pad.c: + .text start:0x80005A5C end:0x80006478 + .data start:0x8011E9D0 end:0x8011E9E0 + .bss start:0x801424A0 end:0x801424E0 + .sbss start:0x801D3718 end:0x801D37A0 + +game/dvd.c: + .text start:0x80006478 end:0x80006E38 + .data start:0x8011E9E0 end:0x8011EB38 + .sdata start:0x801D30D0 end:0x801D30D8 + .sbss start:0x801D37A0 end:0x801D37A8 + +game/data.c: + .text start:0x80006E38 end:0x80009400 + .data start:0x8011EB38 end:0x8011F9C0 + .bss start:0x801424E0 end:0x801452E0 + .sdata start:0x801D30D8 end:0x801D30E8 + .sbss start:0x801D37A8 end:0x801D37B8 + +game/decode.c: + .text start:0x80009400 end:0x80009AFC + .data start:0x8011F9C0 end:0x8011F9E0 + .bss start:0x801452E0 end:0x801456E0 + +game/font.c: + .data start:0x8011F9E0 end:0x801219E0 + +game/init.c: + .text start:0x80009AFC end:0x8000A464 + .data start:0x801219E0 end:0x80121B30 + .bss start:0x801456E0 end:0x80145720 + .sdata start:0x801D30E8 end:0x801D3100 + .sbss start:0x801D37B8 end:0x801D37E8 + .sdata2 start:0x801D4628 end:0x801D4638 + +game/jmp.c: + .text start:0x8000A464 end:0x8000A558 + +game/malloc.c: + .text start:0x8000A558 end:0x8000A938 + .data start:0x80121B30 end:0x80121BA8 + .bss start:0x80145720 end:0x80145738 + +game/memory.c: + .text start:0x8000A938 end:0x8000AEF0 + .data start:0x80121BA8 end:0x80121D20 + +game/printfunc.c: + .text start:0x8000AEF0 end:0x8000C4A4 + .data start:0x80121D20 end:0x80121D60 + .bss start:0x80145738 end:0x8014C038 + .sbss start:0x801D37E8 end:0x801D37F8 + .sdata2 start:0x801D4638 end:0x801D4688 + +game/process.c: + .text start:0x8000C4A4 end:0x8000D348 + .data start:0x80121D60 end:0x80121DB0 + .bss start:0x8014C038 end:0x8014C130 + .sbss start:0x801D37F8 end:0x801D3808 + +game/sprman.c: + .text start:0x8000D348 end:0x8000F6A0 + .rodata start:0x8011D8E0 end:0x8011D8F0 + .data start:0x80121DB0 end:0x80121ED0 + .bss start:0x8014C130 end:0x8015C330 + .sdata start:0x801D3100 end:0x801D3110 + .sbss start:0x801D3808 end:0x801D3810 + .sdata2 start:0x801D4688 end:0x801D46B0 + +game/sprput.c: + .text start:0x8000F6A0 end:0x80010B30 + .rodata start:0x8011D8F0 end:0x8011D900 + .data start:0x80121ED0 end:0x80121F00 + .bss start:0x8015C330 end:0x8015C360 + .sbss start:0x801D3810 end:0x801D3818 + .sdata2 start:0x801D46B0 end:0x801D46E8 + +game/hsfload.c: + .text start:0x80010B30 end:0x80014018 + .data start:0x80121F00 end:0x80121F70 + .bss start:0x8015C360 end:0x8015C920 + .sbss start:0x801D3818 end:0x801D3850 + +game/hsfdraw.c: + .text start:0x80014018 end:0x8001F9AC + .rodata start:0x8011D900 end:0x8011D910 + .data start:0x80121F70 end:0x80122180 + .bss start:0x8015C920 end:0x80167460 + .sdata start:0x801D3110 end:0x801D3128 + .sbss start:0x801D3850 end:0x801D38F0 + .sdata2 start:0x801D46E8 end:0x801D4770 + +game/hsfman.c: + .text start:0x8001F9AC end:0x800250E8 + .data start:0x80122180 end:0x8012D238 + .bss start:0x80167460 end:0x8018D070 + .sbss start:0x801D38F0 end:0x801D3920 + .sdata2 start:0x801D4770 end:0x801D47D0 + .sbss2 start:0x801D68A0 end:0x801D68A8 + +game/hsfmotion.c: + .text start:0x800250E8 end:0x80028B04 + .data start:0x8012D238 end:0x8012D418 + .bss start:0x8018D070 end:0x8018D870 + .sbss start:0x801D3920 end:0x801D3928 + .sdata2 start:0x801D47D0 end:0x801D4820 + +game/hsfanim.c: + .text start:0x80028B04 end:0x8002CB74 + .data start:0x8012D418 end:0x8012D4D8 + .bss start:0x8018D870 end:0x8018F430 + .sdata2 start:0x801D4820 end:0x801D48A8 + +game/hsfex.c: + .text start:0x8002CB74 end:0x8002E74C + .data start:0x8012D4D8 end:0x8012D4F8 + .sdata2 start:0x801D48A8 end:0x801D4938 + +game/perf.c: + .text start:0x8002E74C end:0x8002EBD8 + .bss start:0x8018F430 end:0x8018F7D8 + .sdata start:0x801D3128 end:0x801D3138 + .sbss start:0x801D3928 end:0x801D3980 + +game/objmain.c: + .text start:0x8002EBD8 end:0x8002FF4C + .data start:0x8012D4F8 end:0x8012D8A8 + .bss start:0x8018F7D8 end:0x8018F898 + .sdata start:0x801D3138 end:0x801D3140 + .sbss start:0x801D3980 end:0x801D39B0 + .sdata2 start:0x801D4938 end:0x801D4960 + +game/fault.c: + .text start:0x8002FF4C end:0x800308B8 + .data start:0x8012D8A8 end:0x8012E0D0 + .bss start:0x8018F898 end:0x8018F8B0 + .sdata start:0x801D3140 end:0x801D3150 + .sbss start:0x801D39B0 end:0x801D39C0 + +game/gamework.c: + .text start:0x800308B8 end:0x800315BC + .rodata start:0x8011D910 end:0x8011D930 + .bss start:0x8018F8B0 end:0x8018FCA8 + +game/objsysobj.c: + .text start:0x800315BC end:0x80031DB4 + .bss start:0x8018FCA8 end:0x8018FE80 + .sbss start:0x801D39C0 end:0x801D39C8 + .sdata2 start:0x801D4960 end:0x801D4970 + +game/objdll.c: + .text start:0x80031DB4 end:0x800325F4 + .data start:0x8012E0D0 end:0x8012E568 + .bss start:0x8018FE80 end:0x8018FED0 + .sbss start:0x801D39C8 end:0x801D39D0 + +game/frand.c: + .text start:0x800325F4 end:0x80032830 + .sbss start:0x801D39D0 end:0x801D39D8 + .sdata2 start:0x801D4970 end:0x801D4980 + +game/audio.c: + .text start:0x80032830 end:0x80033EEC + .data start:0x8012E568 end:0x8012ED10 + .bss start:0x8018FED0 end:0x801900F0 + .sdata start:0x801D3150 end:0x801D3158 + .sbss start:0x801D39D8 end:0x801D3A08 + .sdata2 start:0x801D4980 end:0x801D4990 + +game/EnvelopeExec.c: + .text start:0x80033EEC end:0x800353AC + .sbss start:0x801D3A08 end:0x801D3A38 + .sdata2 start:0x801D4990 end:0x801D49A8 + +game/minigame_seq.c: + .text start:0x800353AC end:0x8003F690 + .data start:0x8012ED10 end:0x8012F378 + .bss start:0x801900F0 end:0x80190500 + .sdata start:0x801D3158 end:0x801D3258 + .sbss start:0x801D3A38 end:0x801D3A58 + .sdata2 start:0x801D49A8 end:0x801D4B60 + +game/ovllist.c: + .data start:0x8012F378 end:0x8012FCE8 + +game/esprite.c: + .text start:0x8003F690 end:0x8003FD40 + .bss start:0x80190500 end:0x80191D00 + .sbss start:0x801D3A58 end:0x801D3A60 + +game/code_8003FF68.c: + .text start:0x8003FD40 end:0x800402D8 + .data start:0x8012FCE8 end:0x8012FD08 + .bss start:0x80191D00 end:0x80192000 + .sdata start:0x801D3258 end:0x801D3278 + .sbss start:0x801D3A60 end:0x801D3A68 + .sdata2 start:0x801D4B60 end:0x801D4B78 + +game/ClusterExec.c: + .text start:0x800402D8 end:0x80040B38 + .sdata2 start:0x801D4B78 end:0x801D4B88 + +game/ShapeExec.c: + .text start:0x80040B38 end:0x80040F48 + .sdata2 start:0x801D4B88 end:0x801D4B98 + +game/wipe.c: + .text start:0x80040F48 end:0x80041E54 + .data start:0x8012FD08 end:0x8012FD20 + .bss start:0x80192000 end:0x8019204C + .sdata start:0x801D3278 end:0x801D3280 + .sbss start:0x801D3A68 end:0x801D3A70 + .sdata2 start:0x801D4B98 end:0x801D4BC0 + +game/window.c: + .text start:0x80041E54 end:0x80047E88 + .data start:0x8012FD20 end:0x80130268 + .bss start:0x80192060 end:0x80196480 + .sdata start:0x801D3280 end:0x801D3288 + .sbss start:0x801D3A70 end:0x801D3AB8 + .sdata2 start:0x801D4BC0 end:0x801D4C58 + +game/messdata.c: + .text start:0x80047E88 end:0x80047F70 + +game/card.c: + .text start:0x80047F70 end:0x80048574 + .data start:0x80130268 end:0x801302B8 + .sbss start:0x801D3AB8 end:0x801D3AC0 + +game/armem.c: + .text start:0x80048574 end:0x800493E0 + .data start:0x801302B8 end:0x801303A8 + .bss start:0x80196480 end:0x80196B60 + .sbss start:0x801D3AC0 end:0x801D3AD0 + +game/chrman.c: + .text start:0x800493E0 end:0x8005074C + .data start:0x801303A8 end:0x80130DC8 + .bss start:0x80196B60 end:0x801972F0 + .sdata start:0x801D3288 end:0x801D32D0 + .sbss start:0x801D3AD0 end:0x801D3AD8 + .sdata2 start:0x801D4C58 end:0x801D4D90 + +game/mapspace.c: + .text start:0x8005074C end:0x800544F0 + .bss start:0x801972F0 end:0x80197760 + .sbss start:0x801D3AD8 end:0x801D3AF8 + .sdata2 start:0x801D4D90 end:0x801D4DC0 + +game/THPSimple.c: + .text start:0x800544F0 end:0x800565F4 + .data start:0x80130DC8 end:0x80130EC8 + .bss start:0x80197760 end:0x80197E40 + .sdata start:0x801D32D0 end:0x801D32D8 + .sbss start:0x801D3AF8 end:0x801D3B18 + .sdata2 start:0x801D4DC0 end:0x801D4DC8 + +game/THPDraw.c: + .text start:0x800565F4 end:0x80056F4C + .sdata2 start:0x801D4DC8 end:0x801D4DE0 + +game/thpmain.c: + .text start:0x80056F4C end:0x80057914 + .rodata start:0x8011D930 end:0x8011D940 + .data start:0x80130EC8 end:0x80130F30 + .bss start:0x80197E40 end:0x80197E80 + .sbss start:0x801D3B18 end:0x801D3B40 + .sdata2 start:0x801D4DE0 end:0x801D4DF8 + +game/objsub.c: + .text start:0x80057914 end:0x80057B00 + .data start:0x80130F30 end:0x80131D30 + .bss start:0x80197E80 end:0x801980B0 + .sbss start:0x801D3B40 end:0x801D3B68 + +game/flag.c: + .text start:0x80057B00 end:0x80057D18 + .bss start:0x801980B0 end:0x801980C0 + +game/saveload.c: + .text start:0x80057D18 end:0x8005A324 + .data start:0x80131D30 end:0x80131DE8 + .bss start:0x801980C0 end:0x8019C0E0 + .sdata start:0x801D32D8 end:0x801D3300 + .sbss start:0x801D3B68 end:0x801D3B78 + .sdata2 start:0x801D4DF8 end:0x801D4E08 + +game/sreset.c: + .text start:0x8005A324 end:0x8005AD7C + .data start:0x80131E00 end:0x80139438 + .bss start:0x8019C0E0 end:0x8019D480 + .sdata start:0x801D3300 end:0x801D3318 + .sbss start:0x801D3B78 end:0x801D3B90 + +game/board/main.c: + .text start:0x8005AD7C end:0x80061BB4 + .rodata start:0x8011D940 end:0x8011D970 + .data start:0x80139438 end:0x80139538 + .bss start:0x8019D480 end:0x8019D608 + .sdata start:0x801D3318 end:0x801D3328 + .sbss start:0x801D3B90 end:0x801D3BE0 + .sdata2 start:0x801D4E08 end:0x801D4EB8 + +game/board/player.c: + .text start:0x80061BB4 end:0x8006CEF8 + .rodata start:0x8011D970 end:0x8011DA40 + .data start:0x80139538 end:0x80139740 + .bss start:0x8019D608 end:0x8019D638 + .sdata start:0x801D3328 end:0x801D3388 + .sbss start:0x801D3BE0 end:0x801D3C18 + .sdata2 start:0x801D4EB8 end:0x801D4FC0 diff --git a/config/GMPJ01_00/symbols.txt b/config/GMPJ01_00/symbols.txt new file mode 100644 index 00000000..ca5a261c --- /dev/null +++ b/config/GMPJ01_00/symbols.txt @@ -0,0 +1,7540 @@ +__check_pad3 = .init:0x80003100; // type:function size:0x40 scope:local +__start = .init:0x80003140; // type:function size:0x138 scope:weak +__init_registers = .init:0x80003278; // type:function size:0x1C scope:local +__init_data = .init:0x80003294; // type:function size:0xC0 scope:local +__init_hardware = .init:0x80003354; // type:function size:0x20 scope:global +__flush_cache = .init:0x80003374; // type:function size:0x34 scope:global +memset = .init:0x800033A8; // type:function size:0x30 scope:global +__fill_mem = .init:0x800033D8; // type:function size:0xB8 scope:global +memcpy = .init:0x80003490; // type:function size:0x50 scope:global +TRK_memset = .init:0x800034E0; // type:function size:0x30 +TRK_memcpy = .init:0x80003510; // type:function size:0x24 +gTRKInterruptVectorTable = .init:0x80003534; // type:label scope:global +lbl_80003800 = .init:0x80003800; // type:label +lbl_80003C00 = .init:0x80003C00; // type:label +lbl_80003F80 = .init:0x80003F80; // type:label +__TRK_reset = .init:0x80005468; // type:function size:0x104 +gTRKInterruptVectorTableEnd = .init:0x80005468; // type:label scope:global +_rom_copy_info = .init:0x8000556C; // type:object size:0x84 scope:global data:4byte +_bss_init_info = .init:0x800055F0; // type:object size:0x20 scope:global data:4byte +@etb_80005620 = extab:0x80005620; // type:object size:0x28 scope:local hidden +@etb_80005648 = extab:0x80005648; // type:object size:0x8 scope:local hidden +@etb_80005650 = extab:0x80005650; // type:object size:0x8 scope:local hidden +@etb_80005658 = extab:0x80005658; // type:object size:0x8 scope:local hidden +@etb_80005660 = extab:0x80005660; // type:object size:0x8 scope:local hidden +@etb_80005668 = extab:0x80005668; // type:object size:0x8 scope:local hidden +@etb_80005670 = extab:0x80005670; // type:object size:0x8 scope:local hidden +@etb_80005678 = extab:0x80005678; // type:object size:0x14 scope:local hidden +@etb_8000568C = extab:0x8000568C; // type:object size:0x2C scope:local hidden +@etb_800056B8 = extab:0x800056B8; // type:object size:0x8 scope:local hidden +@etb_800056C0 = extab:0x800056C0; // type:object size:0x14 scope:local hidden +@etb_800056D4 = extab:0x800056D4; // type:object size:0x8 scope:local hidden +@etb_800056DC = extab:0x800056DC; // type:object size:0x8 scope:local hidden +@eti_80005700 = extabindex:0x80005700; // type:object size:0xC scope:local hidden +@eti_8000570C = extabindex:0x8000570C; // type:object size:0xC scope:local hidden +@eti_80005718 = extabindex:0x80005718; // type:object size:0xC scope:local hidden +@eti_80005724 = extabindex:0x80005724; // type:object size:0xC scope:local hidden +@eti_80005730 = extabindex:0x80005730; // type:object size:0xC scope:local hidden +@eti_8000573C = extabindex:0x8000573C; // type:object size:0xC scope:local hidden +@eti_80005748 = extabindex:0x80005748; // type:object size:0xC scope:local hidden +@eti_80005754 = extabindex:0x80005754; // type:object size:0xC scope:local hidden +@eti_80005760 = extabindex:0x80005760; // type:object size:0xC scope:local hidden +@eti_8000576C = extabindex:0x8000576C; // type:object size:0xC scope:local hidden +@eti_80005778 = extabindex:0x80005778; // type:object size:0xC scope:local hidden +@eti_80005784 = extabindex:0x80005784; // type:object size:0xC scope:local hidden +@eti_80005790 = extabindex:0x80005790; // type:object size:0xC scope:local hidden +_eti_init_info = extabindex:0x8000579C; // type:object size:0x20 scope:global +main = .text:0x800057C0; // type:function size:0x22C scope:global +HuSysVWaitSet = .text:0x800059EC; // type:function size:0x38 +HuSysVWaitGet = .text:0x80005A24; // type:function size:0xC +rand8 = .text:0x80005A30; // type:function size:0x2C +HuPadInit = .text:0x80005A5C; // type:function size:0xF0 +HuPadRead = .text:0x80005B4C; // type:function size:0x168 +PadReadVSync = .text:0x80005CB4; // type:function size:0x440 scope:local +PadADConv = .text:0x800060F4; // type:function size:0x234 scope:local +HuPadRumbleSet = .text:0x80006328; // type:function size:0x54 +HuPadRumbleStop = .text:0x8000637C; // type:function size:0x70 +HuPadRumbleAllStop = .text:0x800063EC; // type:function size:0x70 +HuPadStatGet = .text:0x8000645C; // type:function size:0x14 +HuPadRumbleGet = .text:0x80006470; // type:function size:0x8 +HuDVDReadAsyncCallBack = .text:0x80006478; // type:function size:0xC scope:local +HuDvdDataRead = .text:0x80006484; // type:function size:0x16C +HuDvdDataReadMulti = .text:0x800065F0; // type:function size:0x1B4 +HuDvdDataReadDirect = .text:0x800067A4; // type:function size:0x170 +HuDvdDataFastRead = .text:0x80006914; // type:function size:0x16C +HuDvdDataFastReadNum = .text:0x80006A80; // type:function size:0x174 +HuDvdDataFastReadAsync = .text:0x80006BF4; // type:function size:0x150 +HuDvdDataClose = .text:0x80006D44; // type:function size:0x38 +HuDvdErrorWatch = .text:0x80006D7C; // type:function size:0xBC +HuDataInit = .text:0x80006E38; // type:function size:0xD0 +HuDataReadChk = .text:0x80006F08; // type:function size:0x74 +HuDataGetStatus = .text:0x80006F7C; // type:function size:0x64 +HuDataGetDirPtr = .text:0x80006FE0; // type:function size:0xB8 +HuDataDirRead = .text:0x80007098; // type:function size:0x224 +HuDataDirSet = .text:0x800072BC; // type:function size:0x188 +HuDataDirReadAsyncCallBack = .text:0x80007444; // type:function size:0xC8 +HuDataDirReadAsync = .text:0x8000750C; // type:function size:0x1A8 +HuDataDirReadNumAsync = .text:0x800076B4; // type:function size:0x1A8 +HuDataGetAsyncStat = .text:0x8000785C; // type:function size:0x60 +HuDataRead = .text:0x800078BC; // type:function size:0x344 +HuDataReadNum = .text:0x80007C00; // type:function size:0x3A0 +HuDataSelHeapRead = .text:0x80007FA0; // type:function size:0x3C4 +HuDataSelHeapReadNum = .text:0x80008364; // type:function size:0x428 +HuDataReadMulti = .text:0x8000878C; // type:function size:0x30 +HuDataReadMultiSub = .text:0x800087BC; // type:function size:0x3FC +HuDataGetSize = .text:0x80008BB8; // type:function size:0x104 +HuDataClose = .text:0x80008CBC; // type:function size:0x38 +HuDataCloseMulti = .text:0x80008CF4; // type:function size:0x7C +HuDataDirClose = .text:0x80008D70; // type:function size:0xD4 +HuDataDirCloseNum = .text:0x80008E44; // type:function size:0x130 +HuDataReadNumHeapShortForce = .text:0x80008F74; // type:function size:0x48C +HuDecodeSlide = .text:0x80009400; // type:function size:0x200 scope:local +HuDecodeFslide = .text:0x80009600; // type:function size:0x1D8 scope:local +HuDecodeData = .text:0x800097D8; // type:function size:0x324 +HuSysInit = .text:0x80009AFC; // type:function size:0x138 +InitRenderMode = .text:0x80009C34; // type:function size:0xD0 scope:local +InitGX = .text:0x80009D04; // type:function size:0x164 scope:local +InitMem = .text:0x80009E68; // type:function size:0x13C scope:local +InitVI = .text:0x80009FA4; // type:function size:0x54 scope:local +HuSysBeforeRender = .text:0x80009FF8; // type:function size:0xE4 +HuSysDoneRender = .text:0x8000A0DC; // type:function size:0xC8 +SwapBuffers = .text:0x8000A1A4; // type:function size:0x6C scope:local +LoadMemInfo = .text:0x8000A210; // type:function size:0x254 scope:local +gcsetjmp = .text:0x8000A464; // type:function size:0x74 +gclongjmp = .text:0x8000A4D8; // type:function size:0x80 +HuMemInitAll = .text:0x8000A558; // type:function size:0x12C +HuMemInit = .text:0x8000A684; // type:function size:0x30 +HuMemDCFlushAll = .text:0x8000A6B4; // type:function size:0x2C +HuMemDCFlush = .text:0x8000A6E0; // type:function size:0x54 +HuMemDirectMalloc = .text:0x8000A734; // type:function size:0x64 +HuMemDirectMallocNum = .text:0x8000A798; // type:function size:0x6C +HuMemDirectFree = .text:0x8000A804; // type:function size:0x38 +HuMemDirectFreeNum = .text:0x8000A83C; // type:function size:0x54 +HuMemUsedMallocSizeGet = .text:0x8000A890; // type:function size:0x3C +HuMemUsedMallocBlockGet = .text:0x8000A8CC; // type:function size:0x3C +HuMemHeapSizeGet = .text:0x8000A908; // type:function size:0x18 +HuMemHeapPtrGet = .text:0x8000A920; // type:function size:0x18 +HuMemHeapInit = .text:0x8000A938; // type:function size:0x4C +HuMemMemoryAllocNum = .text:0x8000A984; // type:function size:0x40 +HuMemMemoryAlloc = .text:0x8000A9C4; // type:function size:0x3C +HuMemMemoryAlloc2 = .text:0x8000AA00; // type:function size:0x108 scope:local +HuMemMemoryFreeNum = .text:0x8000AB08; // type:function size:0x7C +HuMemMemoryFree = .text:0x8000AB84; // type:function size:0x12C +HuMemUsedMemorySizeGet = .text:0x8000ACB0; // type:function size:0x48 +HuMemUsedMemoryBlockGet = .text:0x8000ACF8; // type:function size:0x44 +HuMemMemoryAllocSizeGet = .text:0x8000AD3C; // type:function size:0xC +HuMemHeapDump = .text:0x8000AD48; // type:function size:0x158 +HuMemMemorySizeGet = .text:0x8000AEA0; // type:function size:0x50 +pfInit = .text:0x8000AEF0; // type:function size:0x64 +pfClsScr = .text:0x8000AF54; // type:function size:0xA0 +print8 = .text:0x8000AFF4; // type:function size:0x15C +printWin = .text:0x8000B150; // type:function size:0xAC +pfDrawFonts = .text:0x8000B1FC; // type:function size:0xEE8 +WireDraw = .text:0x8000C0E4; // type:function size:0x3C0 scope:local +HuPrcInit = .text:0x8000C4A4; // type:function size:0x14 +HuPrcCreate = .text:0x8000C4B8; // type:function size:0x1E8 +HuPrcChildLink = .text:0x8000C6A0; // type:function size:0x68 +HuPrcChildUnlink = .text:0x8000C708; // type:function size:0x58 +HuPrcChildCreate = .text:0x8000C760; // type:function size:0x27C +HuPrcChildWatch = .text:0x8000C9DC; // type:function size:0x60 +HuPrcCurrentGet = .text:0x8000CA3C; // type:function size:0x8 +SetKillStatusProcess = .text:0x8000CA44; // type:function size:0x50 scope:local +HuPrcKill = .text:0x8000CA94; // type:function size:0xD4 +HuPrcChildKill = .text:0x8000CB68; // type:function size:0x2A4 +HuPrcEnd = .text:0x8000CE0C; // type:function size:0x100 +HuPrcSleep = .text:0x8000CF0C; // type:function size:0x80 +HuPrcVSleep = .text:0x8000CF8C; // type:function size:0x54 +HuPrcWakeup = .text:0x8000CFE0; // type:function size:0xC +HuPrcDestructorSet2 = .text:0x8000CFEC; // type:function size:0x8 +HuPrcDestructorSet = .text:0x8000CFF4; // type:function size:0x28 +HuPrcCall = .text:0x8000D01C; // type:function size:0x184 +HuPrcMemAlloc = .text:0x8000D1A0; // type:function size:0x4C +HuPrcMemFree = .text:0x8000D1EC; // type:function size:0x30 +HuPrcSetStat = .text:0x8000D21C; // type:function size:0x10 +HuPrcResetStat = .text:0x8000D22C; // type:function size:0x14 +HuPrcAllPause = .text:0x8000D240; // type:function size:0x84 +HuPrcAllUPause = .text:0x8000D2C4; // type:function size:0x84 +HuSprInit = .text:0x8000D348; // type:function size:0xA0 +HuSprClose = .text:0x8000D3E8; // type:function size:0xB0 +HuSprExec = .text:0x8000D498; // type:function size:0x64 +HuSprBegin = .text:0x8000D4FC; // type:function size:0x188 +HuSprOrderEntry = .text:0x8000D684; // type:function size:0x14C +HuSprCall = .text:0x8000D7D0; // type:function size:0xF4 +HuSprFinish = .text:0x8000D8C4; // type:function size:0x458 +HuSprPauseSet = .text:0x8000DD1C; // type:function size:0x8 +HuSprAnimRead = .text:0x8000DD24; // type:function size:0x114 +HuSprAnimLock = .text:0x8000DE38; // type:function size:0x10 +HuSprCreate = .text:0x8000DE48; // type:function size:0x128 +HuSprFuncCreate = .text:0x8000DF70; // type:function size:0x188 +HuSprGrpCreate = .text:0x8000E0F8; // type:function size:0xF4 +HuSprGrpCopy = .text:0x8000E1EC; // type:function size:0x334 +HuSprGrpMemberSet = .text:0x8000E520; // type:function size:0x8C +HuSprGrpMemberKill = .text:0x8000E5AC; // type:function size:0xAC +HuSprGrpKill = .text:0x8000E658; // type:function size:0x9C +HuSprKill = .text:0x8000E6F4; // type:function size:0x84 +HuSprAnimKill = .text:0x8000E778; // type:function size:0x90 +HuSprAttrSet = .text:0x8000E808; // type:function size:0xAC +HuSprAttrReset = .text:0x8000E8B4; // type:function size:0xAC +HuSprPosSet = .text:0x8000E960; // type:function size:0x60 +HuSprZRotSet = .text:0x8000E9C0; // type:function size:0x5C +HuSprScaleSet = .text:0x8000EA1C; // type:function size:0x60 +HuSprTPLvlSet = .text:0x8000EA7C; // type:function size:0x64 +HuSprColorSet = .text:0x8000EAE0; // type:function size:0x64 +HuSprSpeedSet = .text:0x8000EB44; // type:function size:0x4C +HuSprBankSet = .text:0x8000EB90; // type:function size:0xF0 +HuSprGrpPosSet = .text:0x8000EC80; // type:function size:0x9C +HuSprGrpCenterSet = .text:0x8000ED1C; // type:function size:0x9C +HuSprGrpZRotSet = .text:0x8000EDB8; // type:function size:0x98 +HuSprGrpScaleSet = .text:0x8000EE50; // type:function size:0x9C +HuSprGrpTPLvlSet = .text:0x8000EEEC; // type:function size:0xC0 +HuSprGrpDrawNoSet = .text:0x8000EFAC; // type:function size:0x8C +HuSprDrawNoSet = .text:0x8000F038; // type:function size:0x50 +HuSprPriSet = .text:0x8000F088; // type:function size:0x4C +HuSprGrpScissorSet = .text:0x8000F0D4; // type:function size:0xAC +HuSprScissorSet = .text:0x8000F180; // type:function size:0x58 +HuSprAnimMake = .text:0x8000F1D8; // type:function size:0x1FC +HuSprBGSet = .text:0x8000F3D4; // type:function size:0x68 +HuSprSprBGSet = .text:0x8000F43C; // type:function size:0x50 +AnimDebug = .text:0x8000F48C; // type:function size:0x214 +HuSprDispInit = .text:0x8000F6A0; // type:function size:0x158 +HuSprDisp = .text:0x8000F7F8; // type:function size:0xECC +HuSprTexLoad = .text:0x800106C4; // type:function size:0x29C +HuSprExecLayerSet = .text:0x80010960; // type:function size:0x58 +HuSprLayerHook = .text:0x800109B8; // type:function size:0x178 scope:local +LoadHSF = .text:0x80010B30; // type:function size:0xB0 +ClusterAdjustObject = .text:0x80010BE0; // type:function size:0xA0 +FileLoad = .text:0x80010C80; // type:function size:0xC8 scope:local +SetHsfModel = .text:0x80010D48; // type:function size:0x284 scope:local +SetName = .text:0x80010FCC; // type:function size:0x38 +MaterialLoad = .text:0x80011004; // type:function size:0x210 scope:local +AttributeLoad = .text:0x80011214; // type:function size:0xF8 scope:local +SceneLoad = .text:0x8001130C; // type:function size:0x80 scope:local +ColorLoad = .text:0x8001138C; // type:function size:0x130 scope:local +VertexLoad = .text:0x800114BC; // type:function size:0x1C0 scope:local +NormalLoad = .text:0x8001167C; // type:function size:0x128 scope:local +STLoad = .text:0x800117A4; // type:function size:0x1A8 scope:local +FaceLoad = .text:0x8001194C; // type:function size:0x190 scope:local +DispObject = .text:0x80011ADC; // type:function size:0x7A8 scope:local +ObjectLoad = .text:0x80012284; // type:function size:0x15C scope:local +CenvLoad = .text:0x800123E0; // type:function size:0x464 scope:local +SkeletonLoad = .text:0x80012844; // type:function size:0x198 scope:local +PartLoad = .text:0x800129DC; // type:function size:0x12C scope:local +ClusterLoad = .text:0x80012B08; // type:function size:0x1E8 scope:local +ShapeLoad = .text:0x80012CF0; // type:function size:0x168 scope:local +MapAttrLoad = .text:0x80012E58; // type:function size:0xD0 scope:local +BitmapLoad = .text:0x80012F28; // type:function size:0x174 scope:local +PaletteLoad = .text:0x8001309C; // type:function size:0x16C scope:local +MakeObjectName = .text:0x80013208; // type:function size:0xE8 +CmpObjectName = .text:0x800132F0; // type:function size:0x38 +MotionLoad = .text:0x80013328; // type:function size:0x938 scope:local +MatrixLoad = .text:0x80013C60; // type:function size:0x80 scope:local +SearchObjectSetName = .text:0x80013CE0; // type:function size:0x94 scope:local +SearchVertexPtr = .text:0x80013D74; // type:function size:0x44 scope:local +SearchNormalPtr = .text:0x80013DB8; // type:function size:0x44 scope:local +SearchStPtr = .text:0x80013DFC; // type:function size:0x44 scope:local +SearchColorPtr = .text:0x80013E40; // type:function size:0x44 scope:local +SearchFacePtr = .text:0x80013E84; // type:function size:0x44 scope:local +SearchCenvPtr = .text:0x80013EC8; // type:function size:0x44 scope:local +SearchPartPtr = .text:0x80013F0C; // type:function size:0x44 scope:local +SearchPalettePtr = .text:0x80013F50; // type:function size:0x3C scope:local +SearchBitmapPtr = .text:0x80013F8C; // type:function size:0x44 scope:local +GetString = .text:0x80013FD0; // type:function size:0x24 scope:local +GetMotionString = .text:0x80013FF4; // type:function size:0x24 scope:local +Hu3DDrawPreInit = .text:0x80014018; // type:function size:0xC +Hu3DDraw = .text:0x80014024; // type:function size:0x1A0 +objCall = .text:0x800141C4; // type:function size:0xEC scope:local +objMesh = .text:0x800142B0; // type:function size:0x86C scope:local +ObjCullCheck = .text:0x80014B1C; // type:function size:0x4C0 +FaceDraw = .text:0x80014FDC; // type:function size:0x10DC +SetTevStageNoTex = .text:0x800160B8; // type:function size:0x8E8 scope:local +SetTevStageTex = .text:0x800169A0; // type:function size:0x2588 scope:local +SetKColor = .text:0x80018F28; // type:function size:0x164 scope:local +SetKColorRGB = .text:0x8001908C; // type:function size:0x180 scope:local +FlushKColor = .text:0x8001920C; // type:function size:0xB0 scope:local +SetReflect = .text:0x800192BC; // type:function size:0x280 scope:local +SetProjection = .text:0x8001953C; // type:function size:0x29C scope:local +SetShadowTex = .text:0x800197D8; // type:function size:0x8C scope:local +SetShadow = .text:0x80019864; // type:function size:0xCC scope:local +FaceDrawShadow = .text:0x80019930; // type:function size:0x5E4 scope:local +LoadTexture = .text:0x80019F14; // type:function size:0x75C scope:local +objNull = .text:0x8001A670; // type:function size:0x248 scope:local +objRoot = .text:0x8001A8B8; // type:function size:0x198 scope:local +objJoint = .text:0x8001AA50; // type:function size:0x248 scope:local +objMap = .text:0x8001AC98; // type:function size:0x17C scope:local +objReplica = .text:0x8001AE14; // type:function size:0x1B4 scope:local +Hu3DDrawPost = .text:0x8001AFC8; // type:function size:0xB00 +ObjDraw = .text:0x8001BAC8; // type:function size:0x6D0 scope:local +MakeDisplayList = .text:0x8001C198; // type:function size:0xBC +MDObjCall = .text:0x8001C254; // type:function size:0x438 scope:local +MDObjMesh = .text:0x8001C68C; // type:function size:0x2A8 scope:local +ObjConstantMake = .text:0x8001C934; // type:function size:0x68 +MDFaceDraw = .text:0x8001C99C; // type:function size:0xD08 scope:local +MakeCalcNBT = .text:0x8001D6A4; // type:function size:0x3A8 scope:local +MakeNBT = .text:0x8001DA4C; // type:function size:0x2C4 scope:local +MDFaceCnt = .text:0x8001DD10; // type:function size:0x2C8 scope:local +mtxTransCat = .text:0x8001DFD8; // type:function size:0x4C +mtxRotCat = .text:0x8001E024; // type:function size:0xF4 +mtxRot = .text:0x8001E118; // type:function size:0xF0 +mtxScaleCat = .text:0x8001E208; // type:function size:0x70 +HmfInverseMtxF3X3 = .text:0x8001E278; // type:function size:0x1E0 +SetDefLight = .text:0x8001E458; // type:function size:0x190 +Hu3DModelObjPosGet = .text:0x8001E5E8; // type:function size:0x90 +Hu3DModelObjMtxGet = .text:0x8001E678; // type:function size:0x318 +PGObjCall = .text:0x8001E990; // type:function size:0x80 +PGObjCalc = .text:0x8001EA10; // type:function size:0x7B0 +PGObjReplica = .text:0x8001F1C0; // type:function size:0x574 +Hu3DObjDuplicate = .text:0x8001F734; // type:function size:0x158 +Hu3DModelObjDrawInit = .text:0x8001F88C; // type:function size:0x90 +Hu3DModelObjDraw = .text:0x8001F91C; // type:function size:0x90 +Hu3DInit = .text:0x8001F9AC; // type:function size:0x220 +Hu3DPreProc = .text:0x8001FBCC; // type:function size:0xD8 +Hu3DExec = .text:0x8001FCA4; // type:function size:0x688 +Hu3DAllKill = .text:0x8002032C; // type:function size:0x158 +Hu3DBGColorSet = .text:0x80020484; // type:function size:0x18 +Hu3DLayerHookSet = .text:0x8002049C; // type:function size:0x1C +Hu3DPauseSet = .text:0x800204B8; // type:function size:0xC +Hu3DNoSyncSet = .text:0x800204C4; // type:function size:0xC +Hu3DModelCreate = .text:0x800204D0; // type:function size:0x330 +Hu3DModelLink = .text:0x80020800; // type:function size:0x2E8 +Hu3DHookFuncCreate = .text:0x80020AE8; // type:function size:0x1C8 +Hu3DModelKill = .text:0x80020CB0; // type:function size:0x34C +Hu3DModelAllKill = .text:0x80020FFC; // type:function size:0xD0 +Hu3DModelPosSet = .text:0x800210CC; // type:function size:0x34 +Hu3DModelPosSetV = .text:0x80021100; // type:function size:0x40 +Hu3DModelRotSet = .text:0x80021140; // type:function size:0x34 +Hu3DModelRotSetV = .text:0x80021174; // type:function size:0x40 +Hu3DModelScaleSet = .text:0x800211B4; // type:function size:0x34 +Hu3DModelScaleSetV = .text:0x800211E8; // type:function size:0x40 +Hu3DModelAttrSet = .text:0x80021228; // type:function size:0x54 +Hu3DModelAttrReset = .text:0x8002127C; // type:function size:0x50 +Hu3DModelAttrGet = .text:0x800212CC; // type:function size:0x2C +Hu3DModelMotionAttrGet = .text:0x800212F8; // type:function size:0x2C +Hu3DModelClusterAttrSet = .text:0x80021324; // type:function size:0x44 +Hu3DModelClusterAttrReset = .text:0x80021368; // type:function size:0x44 +Hu3DModelCameraSet = .text:0x800213AC; // type:function size:0x2C +Hu3DModelLayerSet = .text:0x800213D8; // type:function size:0x6C +Hu3DModelObjPtrGet = .text:0x80021444; // type:function size:0xD8 +Hu3DModelTPLvlSet = .text:0x8002151C; // type:function size:0xF8 +Hu3DModelHiliteMapSet = .text:0x80021614; // type:function size:0x98 +Hu3DModelShadowSet = .text:0x800216AC; // type:function size:0xB0 +Hu3DModelShadowReset = .text:0x8002175C; // type:function size:0xA0 +Hu3DModelShadowDispOn = .text:0x800217FC; // type:function size:0x34 +Hu3DModelShadowDispOff = .text:0x80021830; // type:function size:0x34 +Hu3DModelShadowMapSet = .text:0x80021864; // type:function size:0x88 +Hu3DModelShadowMapObjSet = .text:0x800218EC; // type:function size:0xBC +Hu3DModelAmbSet = .text:0x800219A8; // type:function size:0x34 +Hu3DModelHookSet = .text:0x800219DC; // type:function size:0xEC +Hu3DModelHookReset = .text:0x80021AC8; // type:function size:0xB4 +Hu3DModelHookObjReset = .text:0x80021B7C; // type:function size:0xF0 +Hu3DModelProjectionSet = .text:0x80021C6C; // type:function size:0x44 +Hu3DModelProjectionReset = .text:0x80021CB0; // type:function size:0x44 +Hu3DModelHiliteTypeSet = .text:0x80021CF4; // type:function size:0xBC +Hu3DModelReflectTypeSet = .text:0x80021DB0; // type:function size:0x30 +Hu3DCameraCreate = .text:0x80021DE0; // type:function size:0x134 +Hu3DCameraPerspectiveSet = .text:0x80021F14; // type:function size:0x80 +Hu3DCameraViewportSet = .text:0x80021F94; // type:function size:0x88 +Hu3DCameraScissorSet = .text:0x8002201C; // type:function size:0x90 +Hu3DCameraPosSet = .text:0x800220AC; // type:function size:0x98 +Hu3DCameraPosSetV = .text:0x80022144; // type:function size:0xB8 +Hu3DCameraKill = .text:0x800221FC; // type:function size:0x78 +Hu3DCameraAllKill = .text:0x80022274; // type:function size:0xD0 +Hu3DCameraSet = .text:0x80022344; // type:function size:0xDC +Hu3DModelCameraInfoSet = .text:0x80022420; // type:function size:0x3C0 +Hu3DModelCameraCreate = .text:0x800227E0; // type:function size:0x88 +Hu3DCameraMotionOn = .text:0x80022868; // type:function size:0x58 +Hu3DCameraMotionStart = .text:0x800228C0; // type:function size:0xD4 +Hu3DCameraMotionOff = .text:0x80022994; // type:function size:0x34 +Hu3DLighInit = .text:0x800229C8; // type:function size:0x74 +Hu3DGLightCreate = .text:0x80022A3C; // type:function size:0xA0 +Hu3DGLightCreateV = .text:0x80022ADC; // type:function size:0x104 +Hu3DLLightCreate = .text:0x80022BE0; // type:function size:0xA8 +Hu3DLLightCreateV = .text:0x80022C88; // type:function size:0x17C +Hu3DGLightSpotSet = .text:0x80022E04; // type:function size:0x44 +Hu3DLLightSpotSet = .text:0x80022E48; // type:function size:0x6C +Hu3DGLightInfinitytSet = .text:0x80022EB4; // type:function size:0x48 +Hu3DLLightInfinitytSet = .text:0x80022EFC; // type:function size:0x70 +Hu3DGLightPointSet = .text:0x80022F6C; // type:function size:0x58 +Hu3DLLightPointSet = .text:0x80022FC4; // type:function size:0x80 +Hu3DGLightKill = .text:0x80023044; // type:function size:0x20 +Hu3DLLightKill = .text:0x80023064; // type:function size:0xBC +Hu3DLightAllKill = .text:0x80023120; // type:function size:0x68 +Hu3DGLightColorSet = .text:0x80023188; // type:function size:0x38 +Hu3DLLightColorSet = .text:0x800231C0; // type:function size:0x60 +Hu3DGLightPosSetV = .text:0x80023220; // type:function size:0x70 +Hu3DLLightPosSetV = .text:0x80023290; // type:function size:0x9C +Hu3DGLightPosSet = .text:0x8002332C; // type:function size:0x90 +Hu3DLLightPosSet = .text:0x800233BC; // type:function size:0xBC +Hu3DGLightPosAimSetV = .text:0x80023478; // type:function size:0x80 +Hu3DLLightPosAimSetV = .text:0x800234F8; // type:function size:0xAC +Hu3DGLightPosAimSet = .text:0x800235A4; // type:function size:0xC4 +Hu3DLLightPosAimSet = .text:0x80023668; // type:function size:0xF0 +Hu3DGLightStaticSet = .text:0x80023758; // type:function size:0x54 +Hu3DLLightStaticSet = .text:0x800237AC; // type:function size:0x7C +Hu3DModelLightInfoSet = .text:0x80023828; // type:function size:0x4D0 +Hu3DLightSet = .text:0x80023CF8; // type:function size:0x130 +lightSet = .text:0x80023E28; // type:function size:0x254 +Hu3DReflectMapSet = .text:0x8002407C; // type:function size:0x68 +Hu3DReflectNoSet = .text:0x800240E4; // type:function size:0x8 +Hu3DFogSet = .text:0x800240EC; // type:function size:0x60 +Hu3DFogClear = .text:0x8002414C; // type:function size:0x74 +Hu3DShadowCreate = .text:0x800241C0; // type:function size:0x188 +Hu3DShadowPosSet = .text:0x80024348; // type:function size:0x64 +Hu3DShadowTPLvlSet = .text:0x800243AC; // type:function size:0x2C +Hu3DShadowSizeSet = .text:0x800243D8; // type:function size:0x78 +Hu3DShadowExec = .text:0x80024450; // type:function size:0x860 +Hu3DProjectionCreate = .text:0x80024CB0; // type:function size:0x130 +Hu3DProjectionKill = .text:0x80024DE0; // type:function size:0x60 +Hu3DProjectionPosSet = .text:0x80024E40; // type:function size:0x88 +Hu3DProjectionTPLvlSet = .text:0x80024EC8; // type:function size:0x38 +Hu3DMipMapSet = .text:0x80024F00; // type:function size:0x1E8 +Hu3DMotionInit = .text:0x800250E8; // type:function size:0x48 +Hu3DMotionCreate = .text:0x80025130; // type:function size:0xA4 +Hu3DMotionModelCreate = .text:0x800251D4; // type:function size:0xC4 +Hu3DMotionKill = .text:0x80025298; // type:function size:0x114 +Hu3DMotionAllKill = .text:0x800253AC; // type:function size:0x11C +Hu3DMotionSet = .text:0x800254C8; // type:function size:0xBC +Hu3DMotionOverlaySet = .text:0x80025584; // type:function size:0x54 +Hu3DMotionOverlayReset = .text:0x800255D8; // type:function size:0x20 +Hu3DMotionOverlayTimeGet = .text:0x800255F8; // type:function size:0x1C +Hu3DMotionOverlayTimeSet = .text:0x80025614; // type:function size:0x1C +Hu3DMotionOverlaySpeedSet = .text:0x80025630; // type:function size:0x1C +Hu3DMotionShiftSet = .text:0x8002564C; // type:function size:0x1F4 +Hu3DMotionShapeSet = .text:0x80025840; // type:function size:0xBC +Hu3DMotionShapeIDGet = .text:0x800258FC; // type:function size:0x1C +Hu3DMotionShapeSpeedSet = .text:0x80025918; // type:function size:0x2C +Hu3DMotionShapeTimeSet = .text:0x80025944; // type:function size:0x1C +Hu3DMotionShapeMaxTimeGet = .text:0x80025960; // type:function size:0x44 +Hu3DMotionShapeStartEndSet = .text:0x800259A4; // type:function size:0x30 +Hu3DMotionClusterSet = .text:0x800259D4; // type:function size:0x114 +Hu3DMotionClusterNoSet = .text:0x80025AE8; // type:function size:0xD0 +Hu3DMotionShapeReset = .text:0x80025BB8; // type:function size:0x20 +Hu3DMotionClusterReset = .text:0x80025BD8; // type:function size:0xC8 +Hu3DMotionIDGet = .text:0x80025CA0; // type:function size:0x2C +Hu3DMotionShiftIDGet = .text:0x80025CCC; // type:function size:0x2C +Hu3DMotionTimeSet = .text:0x80025CF8; // type:function size:0xF4 +Hu3DMotionTimeGet = .text:0x80025DEC; // type:function size:0x2C +Hu3DMotionShiftTimeGet = .text:0x80025E18; // type:function size:0x2C +Hu3DMotionMaxTimeGet = .text:0x80025E44; // type:function size:0xA8 +Hu3DMotionShiftMaxTimeGet = .text:0x80025EEC; // type:function size:0xA8 +Hu3DMotionShiftStartEndSet = .text:0x80025F94; // type:function size:0x30 +Hu3DMotionMotionMaxTimeGet = .text:0x80025FC4; // type:function size:0x8C +Hu3DMotionStartEndSet = .text:0x80026050; // type:function size:0x30 +Hu3DMotionEndCheck = .text:0x80026080; // type:function size:0x170 +Hu3DMotionSpeedSet = .text:0x800261F0; // type:function size:0x2C +Hu3DMotionShiftSpeedSet = .text:0x8002621C; // type:function size:0x2C +Hu3DMotionNoMotSet = .text:0x80026248; // type:function size:0x114 +Hu3DMotionNoMotReset = .text:0x8002635C; // type:function size:0x5C +Hu3DMotionForceSet = .text:0x800263B8; // type:function size:0x108 +Hu3DMotionNext = .text:0x800264C0; // type:function size:0x798 +Hu3DMotionExec = .text:0x80026C58; // type:function size:0x534 +Hu3DCameraMotionExec = .text:0x8002718C; // type:function size:0xC0 +Hu3DSubMotionExec = .text:0x8002724C; // type:function size:0x2A8 +GetObjTRXPtr = .text:0x800274F4; // type:function size:0x14C +SetObjMatMotion = .text:0x80027640; // type:function size:0x208 +SetObjAttrMotion = .text:0x80027848; // type:function size:0x218 +SetObjCameraMotion = .text:0x80027A60; // type:function size:0x558 +SetObjLightMotion = .text:0x80027FB8; // type:function size:0x1D8 +GetCurve = .text:0x80028190; // type:function size:0xD8 +GetConstant = .text:0x80028268; // type:function size:0x70 +GetLinear = .text:0x800282D8; // type:function size:0x110 +GetBezier = .text:0x800283E8; // type:function size:0x200 +GetBitMap = .text:0x800285E8; // type:function size:0x64 +Hu3DJointMotion = .text:0x8002864C; // type:function size:0xCC +JointModel_Motion = .text:0x80028718; // type:function size:0x124 +Hu3DMotionCalc = .text:0x8002883C; // type:function size:0x19C +SearchObjectIndex = .text:0x800289D8; // type:function size:0x90 scope:local +SearchAttributeIndex = .text:0x80028A68; // type:function size:0x9C scope:local +Hu3DAnimInit = .text:0x80028B04; // type:function size:0x7C +Hu3DAnimCreate = .text:0x80028B80; // type:function size:0x1D0 +Hu3DAnimLink = .text:0x80028D50; // type:function size:0x1C4 +Hu3DAnimKill = .text:0x80028F14; // type:function size:0x104 +Hu3DAnimModelKill = .text:0x80029018; // type:function size:0x13C +Hu3DAnimAllKill = .text:0x80029154; // type:function size:0x134 +Hu3DAnimAttrSet = .text:0x80029288; // type:function size:0x34 +Hu3DAnimAttrReset = .text:0x800292BC; // type:function size:0x38 +Hu3DAnimSpeedSet = .text:0x800292F4; // type:function size:0x2C +Hu3DAnimBankSet = .text:0x80029320; // type:function size:0x48 +Hu3DAnmNoSet = .text:0x80029368; // type:function size:0x38 +Hu3DAnimSet = .text:0x800293A0; // type:function size:0x240 +Hu3DAnimExec = .text:0x800295E0; // type:function size:0x474 +Hu3DTexScrollCreate = .text:0x80029A54; // type:function size:0x1AC +Hu3DTexScrollKill = .text:0x80029C00; // type:function size:0xE0 +Hu3DTexScrollAllKill = .text:0x80029CE0; // type:function size:0x10C +Hu3DTexScrollPosSet = .text:0x80029DEC; // type:function size:0x44 +Hu3DTexScrollPosMoveSet = .text:0x80029E30; // type:function size:0xA4 +Hu3DTexScrollRotSet = .text:0x80029ED4; // type:function size:0x3C +Hu3DTexScrollRotMoveSet = .text:0x80029F10; // type:function size:0x5C +Hu3DTexScrollPauseDisableSet = .text:0x80029F6C; // type:function size:0x54 +Hu3DParticleCreate = .text:0x80029FC0; // type:function size:0x348 +Hu3DParticleScaleSet = .text:0x8002A308; // type:function size:0x6C +Hu3DParticleZRotSet = .text:0x8002A374; // type:function size:0x6C +Hu3DParticleColSet = .text:0x8002A3E0; // type:function size:0x74 +Hu3DParticleTPLvlSet = .text:0x8002A454; // type:function size:0x80 +Hu3DParticleBlendModeSet = .text:0x8002A4D4; // type:function size:0x38 +Hu3DParticleHookSet = .text:0x8002A50C; // type:function size:0x38 +Hu3DParticleAttrSet = .text:0x8002A544; // type:function size:0x40 +Hu3DParticleAttrReset = .text:0x8002A584; // type:function size:0x44 +Hu3DParticleCntSet = .text:0x8002A5C8; // type:function size:0x3C +Hu3DParticleAnimModeSet = .text:0x8002A604; // type:function size:0x60 +particleFunc = .text:0x8002A664; // type:function size:0xAD4 scope:local +Hu3DParManInit = .text:0x8002B138; // type:function size:0x48 +Hu3DParManCreate = .text:0x8002B180; // type:function size:0x1D4 +Hu3DParManLink = .text:0x8002B354; // type:function size:0x17C +Hu3DParManKill = .text:0x8002B4D0; // type:function size:0x190 +Hu3DParManAllKill = .text:0x8002B660; // type:function size:0x1C4 +Hu3DParManPtrGet = .text:0x8002B824; // type:function size:0x20 +Hu3DParManPosSet = .text:0x8002B844; // type:function size:0x3C +Hu3DParManVecSet = .text:0x8002B880; // type:function size:0x3C +Hu3DParManRotSet = .text:0x8002B8BC; // type:function size:0x7C +Hu3DParManAttrSet = .text:0x8002B938; // type:function size:0x40 +Hu3DParManAttrReset = .text:0x8002B978; // type:function size:0x40 +Hu3DParManModelIDGet = .text:0x8002B9B8; // type:function size:0x34 +Hu3DParManTimeLimitSet = .text:0x8002B9EC; // type:function size:0x38 +Hu3DParManVacumeSet = .text:0x8002BA24; // type:function size:0x74 +Hu3DParManColorSet = .text:0x8002BA98; // type:function size:0x68 +ParManFunc = .text:0x8002BB00; // type:function size:0xBC0 scope:local +ParManHook = .text:0x8002C6C0; // type:function size:0x4B4 scope:local +CamMotionEx2 = .text:0x8002CB74; // type:function size:0xAC +CamMotionEx = .text:0x8002CC20; // type:function size:0xA14 +SetObjCamMotion = .text:0x8002D634; // type:function size:0x244 scope:local +InterpolateBMLine = .text:0x8002D878; // type:function size:0x40C +Hu3D2Dto3D = .text:0x8002DC84; // type:function size:0x1D4 +Hu3D3Dto2D = .text:0x8002DE58; // type:function size:0x1D0 +Hu3DMtxTransGet = .text:0x8002E028; // type:function size:0x1C +Hu3DMtxRotGet = .text:0x8002E044; // type:function size:0x540 +Hu3DMtxScaleGet = .text:0x8002E584; // type:function size:0x1C8 +HuPerfInit = .text:0x8002E74C; // type:function size:0x94 +HuPerfCreate = .text:0x8002E7E0; // type:function size:0x130 +HuPerfZero = .text:0x8002E910; // type:function size:0x40 +HuPerfBegin = .text:0x8002E950; // type:function size:0x7C +HuPerfEnd = .text:0x8002E9CC; // type:function size:0xA0 +DSCallbackFunc = .text:0x8002EA6C; // type:function size:0x16C scope:local +omMasterInit = .text:0x8002EBD8; // type:function size:0x90 +omWatchOverlayProc = .text:0x8002EC68; // type:function size:0x170 scope:local +omOvlCallEx = .text:0x8002EDD8; // type:function size:0xE8 +omOvlGotoEx = .text:0x8002EEC0; // type:function size:0x60 +omOvlReturnEx = .text:0x8002EF20; // type:function size:0xF4 +omOvlKill = .text:0x8002F014; // type:function size:0xB8 +omOvlHisChg = .text:0x8002F0CC; // type:function size:0xA0 +omOvlHisGet = .text:0x8002F16C; // type:function size:0x78 +omInitObjMan = .text:0x8002F1E4; // type:function size:0x220 +omDestroyObjMan = .text:0x8002F404; // type:function size:0x50 +omAddObjEx = .text:0x8002F454; // type:function size:0x1DC +omInsertObj = .text:0x8002F630; // type:function size:0xF8 +omAddMember = .text:0x8002F728; // type:function size:0x84 +omDelObjEx = .text:0x8002F7AC; // type:function size:0x190 +omDelMember = .text:0x8002F93C; // type:function size:0x88 +omMakeGroupEx = .text:0x8002F9C4; // type:function size:0xFC +omGetGroupMemberListEx = .text:0x8002FAC0; // type:function size:0x2C +omSetStatBit = .text:0x8002FAEC; // type:function size:0x10 +omResetStatBit = .text:0x8002FAFC; // type:function size:0x14 +omSetTra = .text:0x8002FB10; // type:function size:0x10 +omSetRot = .text:0x8002FB20; // type:function size:0x10 +omSetSca = .text:0x8002FB30; // type:function size:0x10 +omMain = .text:0x8002FB40; // type:function size:0x2F8 +omAllPause = .text:0x8002FE38; // type:function size:0xE0 +omPauseChk = .text:0x8002FF18; // type:function size:0x2C +omCurrentOvlGet = .text:0x8002FF44; // type:function size:0x8 +OSPanic = .text:0x8002FF4C; // type:function size:0x150 +HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118 +HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34 +XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98 scope:local +XFB_CR = .text:0x80030280; // type:function size:0x50 scope:local +XFB_puts = .text:0x800302D0; // type:function size:0xF4 scope:local +XFB_putcS = .text:0x800303C4; // type:function size:0x150 scope:local +XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0 scope:local +XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 scope:local +GWInit = .text:0x800308B8; // type:function size:0x14C +GWGameStatReset = .text:0x80030A04; // type:function size:0x318 +GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C +GWMGRecordSet = .text:0x80030D68; // type:function size:0x54 +GWMGRecordGet = .text:0x80030DBC; // type:function size:0x18 +GWCharColorGet = .text:0x80030DD4; // type:function size:0x140 +GWBoardPlayCountSet = .text:0x80030F14; // type:function size:0x24 +GWBoardPlayCountAdd = .text:0x80030F38; // type:function size:0x38 +GWBoardPlayCountGet = .text:0x80030F70; // type:function size:0x14 +GWBoardMaxStarsSet = .text:0x80030F84; // type:function size:0x1C +GWBoardMaxStarsGet = .text:0x80030FA0; // type:function size:0x18 +GWBoardMaxCoinsSet = .text:0x80030FB8; // type:function size:0x1C +GWBoardMaxCoinsGet = .text:0x80030FD4; // type:function size:0x18 +GWBoardWinCountInc = .text:0x80030FEC; // type:function size:0x5C +GWBoardWinCountGet = .text:0x80031048; // type:function size:0x1C +GWBoardWinCountSet = .text:0x80031064; // type:function size:0x20 +GWMGAvailGet = .text:0x80031084; // type:function size:0x6C +GWMGAvailSet = .text:0x800310F0; // type:function size:0x5C +GWMGCustomGet = .text:0x8003114C; // type:function size:0x6C +GWMGCustomSet = .text:0x800311B8; // type:function size:0x5C +GWMGCustomReset = .text:0x80031214; // type:function size:0x60 +GWCoinsGet = .text:0x80031274; // type:function size:0x18 +GWCoinsSet = .text:0x8003128C; // type:function size:0xB0 +GWCoinsAdd = .text:0x8003133C; // type:function size:0xD0 +GWStarsSet = .text:0x8003140C; // type:function size:0x6C +GWStarsAdd = .text:0x80031478; // type:function size:0x94 +GWStarsGet = .text:0x8003150C; // type:function size:0x18 +GWTotalStarsSet = .text:0x80031524; // type:function size:0x34 +GWTotalStarsAdd = .text:0x80031558; // type:function size:0x54 +GWTotalStarsGet = .text:0x800315AC; // type:function size:0x10 +omOutView = .text:0x800315BC; // type:function size:0x238 +omOutViewMulti = .text:0x800317F4; // type:function size:0x2C4 +omSystemKeyCheckSetup = .text:0x80031AB8; // type:function size:0x74 +omSystemKeyCheck = .text:0x80031B2C; // type:function size:0x230 +omSysPauseEnable = .text:0x80031D5C; // type:function size:0x8 +omSysPauseCtrl = .text:0x80031D64; // type:function size:0x50 +omDLLDBGOut = .text:0x80031DB4; // type:function size:0x2C +omDLLInit = .text:0x80031DE0; // type:function size:0x6C +omDLLStart = .text:0x80031E4C; // type:function size:0x154 +omDLLNumEnd = .text:0x80031FA0; // type:function size:0xB4 +omDLLEnd = .text:0x80032054; // type:function size:0x13C +omDLLLink = .text:0x80032190; // type:function size:0x138 +omDLLUnlink = .text:0x800322C8; // type:function size:0xB4 +omDLLSearch = .text:0x8003237C; // type:function size:0xC8 +omDLLInfoDump = .text:0x80032444; // type:function size:0xD0 +omDLLHeaderDump = .text:0x80032514; // type:function size:0xE0 +frand = .text:0x800325F4; // type:function size:0xAC +frandf = .text:0x800326A0; // type:function size:0xD8 +frandmod = .text:0x80032778; // type:function size:0xB8 +HuAudInit = .text:0x80032830; // type:function size:0x170 +HuAudStreamPlay = .text:0x800329A0; // type:function size:0x8 +HuAudStreamVolSet = .text:0x800329A8; // type:function size:0x3C +HuAudStreamPauseOn = .text:0x800329E4; // type:function size:0x24 +HuAudStreamPauseOff = .text:0x80032A08; // type:function size:0x24 +HuAudStreamFadeOut = .text:0x80032A2C; // type:function size:0x4 +HuAudAllStop = .text:0x80032A30; // type:function size:0x28 +HuAudFadeOut = .text:0x80032A58; // type:function size:0x3C +HuAudFXPlay = .text:0x80032A94; // type:function size:0x80 +HuAudFXPlayVol = .text:0x80032B14; // type:function size:0x48 +HuAudFXPlayVolPan = .text:0x80032B5C; // type:function size:0x68 +HuAudFXStop = .text:0x80032BC4; // type:function size:0x2C +HuAudFXAllStop = .text:0x80032BF0; // type:function size:0x28 +HuAudFXFadeOut = .text:0x80032C18; // type:function size:0x30 +HuAudFXPanning = .text:0x80032C48; // type:function size:0x50 +HuAudFXListnerSet = .text:0x80032C98; // type:function size:0xA4 +HuAudFXListnerSetEX = .text:0x80032D3C; // type:function size:0x134 +HuAudFXListnerUpdate = .text:0x80032E70; // type:function size:0x3C +HuAudFXEmiterPlay = .text:0x80032EAC; // type:function size:0x6C +HuAudFXEmiterUpDate = .text:0x80032F18; // type:function size:0x64 +HuAudFXListnerKill = .text:0x80032F7C; // type:function size:0x20 +HuAudFXPauseAll = .text:0x80032F9C; // type:function size:0x2C +HuAudFXStatusGet = .text:0x80032FC8; // type:function size:0x28 +HuAudFXPitchSet = .text:0x80032FF0; // type:function size:0x54 +HuAudFXVolSet = .text:0x80033044; // type:function size:0x58 +HuAudSeqPlay = .text:0x8003309C; // type:function size:0x5C +HuAudSeqStop = .text:0x800330F8; // type:function size:0x48 +HuAudSeqFadeOut = .text:0x80033140; // type:function size:0x3C +HuAudSeqAllFadeOut = .text:0x8003317C; // type:function size:0x5C +HuAudSeqAllStop = .text:0x800331D8; // type:function size:0x28 +HuAudSeqPauseAll = .text:0x80033200; // type:function size:0x2C +HuAudSeqPause = .text:0x8003322C; // type:function size:0x54 +HuAudSeqMidiCtrlGet = .text:0x80033280; // type:function size:0x60 +HuAudSStreamPlay = .text:0x800332E0; // type:function size:0x64 +HuAudSStreamStop = .text:0x80033344; // type:function size:0x38 +HuAudSStreamFadeOut = .text:0x8003337C; // type:function size:0x3C +HuAudSStreamAllFadeOut = .text:0x800333B8; // type:function size:0x28 +HuAudSStreamAllStop = .text:0x800333E0; // type:function size:0x24 +HuAudSStreamStatGet = .text:0x80033404; // type:function size:0x28 +HuAudDllSndGrpSet = .text:0x8003342C; // type:function size:0x104 +HuAudSndGrpSetSet = .text:0x80033530; // type:function size:0x1A4 +HuAudSndGrpSet = .text:0x800336D4; // type:function size:0x60 +HuAudSndCommonGrpSet = .text:0x80033734; // type:function size:0x154 +HuAudAUXSet = .text:0x80033888; // type:function size:0x58 +HuAudAUXVolSet = .text:0x800338E0; // type:function size:0xC +HuAudVoiceInit = .text:0x800338EC; // type:function size:0x294 +HuAudPlayerVoicePlay = .text:0x80033B80; // type:function size:0x50 +HuAudPlayerVoicePlayPos = .text:0x80033BD0; // type:function size:0x58 +HuAudPlayerVoicePlayEntry = .text:0x80033C28; // type:function size:0x50 +HuAudCharVoicePlay = .text:0x80033C78; // type:function size:0xAC +HuAudCharVoicePlayPos = .text:0x80033D24; // type:function size:0xD0 +HuAudCharVoicePlayEntry = .text:0x80033DF4; // type:function size:0x90 +HuSePlay = .text:0x80033E84; // type:function size:0x68 scope:local +InitEnvelope = .text:0x80033EEC; // type:function size:0x1A4 +SetEnvelopMtx = .text:0x80034090; // type:function size:0x23C scope:local +EnvelopeProc = .text:0x800342CC; // type:function size:0x80 +InitVtxParm = .text:0x8003434C; // type:function size:0x50 +SetEnvelopMain = .text:0x8003439C; // type:function size:0x158 scope:local +SetEnvelop = .text:0x800344F4; // type:function size:0x9F0 scope:local +SetMtx = .text:0x80034EE4; // type:function size:0x334 scope:local +SetRevMtx = .text:0x80035218; // type:function size:0x11C scope:local +SearchSklenton = .text:0x80035334; // type:function size:0x78 scope:local +MGSeqInit = .text:0x800353AC; // type:function size:0xBC +MGSeqMain = .text:0x80035468; // type:function size:0x188 +CreateSeq = .text:0x800355F0; // type:function size:0x1A4 scope:local +MGSeqCreate = .text:0x80035794; // type:function size:0x100 +MGSeqStatGet = .text:0x80035894; // type:function size:0x88 +MGSeqPosSet = .text:0x8003591C; // type:function size:0x4C +MGSeqParamSet = .text:0x80035968; // type:function size:0x4C +MGSeqKill = .text:0x800359B4; // type:function size:0x58 +MGSeqKillAll = .text:0x80035A0C; // type:function size:0x3C +MGSeqDoneCheck = .text:0x80035A48; // type:function size:0xA4 +MGSeqStub = .text:0x80035AEC; // type:function size:0x4 +MGSeqSprKill = .text:0x80035AF0; // type:function size:0x8C +MGSeqInitTimer = .text:0x80035B7C; // type:function size:0x2E0 +MGSeqUpdateTimer = .text:0x80035E5C; // type:function size:0x69C +MGSeqInitType2 = .text:0x800364F8; // type:function size:0x3D8 +MGSeqUpdateType2 = .text:0x800368D0; // type:function size:0x2F8 +fn_80036BC8 = .text:0x80036BC8; // type:function size:0x188 +SeqMakeWord = .text:0x80036D50; // type:function size:0x1E4 scope:local +SeqLoadFontChar = .text:0x80036F34; // type:function size:0x23C scope:local +MGSeqInitMGBasic = .text:0x80037170; // type:function size:0x194 +MGSeqUpdateMGBasic = .text:0x80037304; // type:function size:0x9D0 +MGSeqInitMGCommon = .text:0x80037CD4; // type:function size:0x2A4 +MGSeqUpdateMGBattle = .text:0x80037F78; // type:function size:0xDA4 +MGSeqUpdateMG1vs3 = .text:0x80038D1C; // type:function size:0xDA4 +MGSeqUpdateMGStory = .text:0x80039AC0; // type:function size:0xBB8 +MGSeqUpdateMG2vs2 = .text:0x8003A678; // type:function size:0xAB4 +MGSeqInitFlip = .text:0x8003B12C; // type:function size:0x3C4 +MGSeqUpdateFlip = .text:0x8003B4F0; // type:function size:0x91C +MGSeqUpdateMGBowser = .text:0x8003BE0C; // type:function size:0xC84 +MGSeqInitDraw = .text:0x8003CA90; // type:function size:0xDC +MGSeqUpdateDraw = .text:0x8003CB6C; // type:function size:0x3DC +MGSeqInitWin = .text:0x8003CF48; // type:function size:0x6B8 +MGSeqUpdateWin = .text:0x8003D600; // type:function size:0x708 +MGSeqInitRecord = .text:0x8003DD08; // type:function size:0x774 +MGSeqUpdateRecord = .text:0x8003E47C; // type:function size:0x304 +MGSeqPauseInit = .text:0x8003E780; // type:function size:0x6C +PauseProc = .text:0x8003E7EC; // type:function size:0x94C scope:local +MGSeqPauseKill = .text:0x8003F138; // type:function size:0xC +MGSeqPauseEnableCtrl = .text:0x8003F144; // type:function size:0x40 +MGSeqPracticeInit = .text:0x8003F184; // type:function size:0xDC +PracticeProc = .text:0x8003F260; // type:function size:0x234 scope:local +SeqPlayStartFX = .text:0x8003F494; // type:function size:0xD4 scope:local +MGSeqPracticeExitCheck = .text:0x8003F568; // type:function size:0x128 +espInit = .text:0x8003F690; // type:function size:0xA0 +espEntry = .text:0x8003F730; // type:function size:0x1B0 +espKill = .text:0x8003F8E0; // type:function size:0x98 +espGrpIDGet = .text:0x8003F978; // type:function size:0x8 +espDispOn = .text:0x8003F980; // type:function size:0x44 +espDispOff = .text:0x8003F9C4; // type:function size:0x44 +espAttrSet = .text:0x8003FA08; // type:function size:0x48 +espAttrReset = .text:0x8003FA50; // type:function size:0x48 +espPosSet = .text:0x8003FA98; // type:function size:0x50 +espScaleSet = .text:0x8003FAE8; // type:function size:0x50 +espZRotSet = .text:0x8003FB38; // type:function size:0x48 +espTPLvlSet = .text:0x8003FB80; // type:function size:0x48 +espColorSet = .text:0x8003FBC8; // type:function size:0x58 +espSpeedSet = .text:0x8003FC20; // type:function size:0x48 +espBankSet = .text:0x8003FC68; // type:function size:0x48 +espDrawNoSet = .text:0x8003FCB0; // type:function size:0x48 +espPriSet = .text:0x8003FCF8; // type:function size:0x48 +fn_8003FF68 = .text:0x8003FD40; // type:function size:0x268 +fn_800401D0 = .text:0x8003FFA8; // type:function size:0x12C +fn_800402FC = .text:0x800400D4; // type:function size:0x78 +fn_80040374 = .text:0x8004014C; // type:function size:0x98 +fn_8004040C = .text:0x800401E4; // type:function size:0xF4 +GetClusterCurve = .text:0x800402D8; // type:function size:0xA8 +GetClusterWeightCurve = .text:0x80040380; // type:function size:0xA8 +SetClusterMain = .text:0x80040428; // type:function size:0x3A0 +ClusterProc = .text:0x800407C8; // type:function size:0x160 +ClusterMotionExec = .text:0x80040928; // type:function size:0x210 +SetShapeMain = .text:0x80040B38; // type:function size:0x36C scope:local +ShapeProc = .text:0x80040EA4; // type:function size:0xA4 +WipeInit = .text:0x80040F48; // type:function size:0xB4 +WipeExecAlways = .text:0x80040FFC; // type:function size:0x288 +WipeCreate = .text:0x80041284; // type:function size:0x12C +WipeColorSet = .text:0x800413B0; // type:function size:0x28 +WipeStatGet = .text:0x800413D8; // type:function size:0x10 +WipeDummyFade = .text:0x800413E8; // type:function size:0x8 scope:local +WipeNormalFade = .text:0x800413F0; // type:function size:0xFC scope:local +WipeColorFill = .text:0x800414EC; // type:function size:0x31C scope:local +WipeCrossFade = .text:0x80041808; // type:function size:0x184 scope:local +WipeFrameStill = .text:0x8004198C; // type:function size:0x4C8 scope:local +HuWindowInit = .text:0x80041E54; // type:function size:0x74 +HuWinInit = .text:0x80041EC8; // type:function size:0x214 +HuWinCreate = .text:0x800420DC; // type:function size:0x54C +HuWinKill = .text:0x80042628; // type:function size:0xA4 +HuWinAllKill = .text:0x800426CC; // type:function size:0x1AC +MesDispFunc = .text:0x80042878; // type:function size:0x7D0 scope:local +winBGMake = .text:0x80043048; // type:function size:0x480 scope:local +HuWinProc = .text:0x800434C8; // type:function size:0xF4 scope:local +HuWinDrawMes = .text:0x800435BC; // type:function size:0x1044 scope:local +HuWinCR = .text:0x80044600; // type:function size:0x54 scope:local +_HuWinHomeClear = .text:0x80044654; // type:function size:0x90 scope:local +HuWinHomeClear = .text:0x800446E4; // type:function size:0xA4 +HuWinKeyWaitEntry = .text:0x80044788; // type:function size:0x88 +HuWinKeyWait = .text:0x80044810; // type:function size:0x10C scope:local +HuWinSpcFontEntry = .text:0x8004491C; // type:function size:0x1A4 scope:local +HuWinSpcFontClear = .text:0x80044AC0; // type:function size:0x80 scope:local +HuWinChoice = .text:0x80044B40; // type:function size:0xA90 scope:local +HuWinActivePadGet = .text:0x800455D0; // type:function size:0x68 +HuWinActiveKeyGetX = .text:0x80045638; // type:function size:0xE8 +HuWinPosSet = .text:0x80045720; // type:function size:0x6C +HuWinScaleSet = .text:0x8004578C; // type:function size:0x6C +HuWinZRotSet = .text:0x800457F8; // type:function size:0x58 +HuWinCenterPosSet = .text:0x80045850; // type:function size:0xAC +HuWinDrawNoSet = .text:0x800458FC; // type:function size:0x4C +HuWinScissorSet = .text:0x80045948; // type:function size:0x64 +HuWinPriSet = .text:0x800459AC; // type:function size:0xB8 +HuWinAttrSet = .text:0x80045A64; // type:function size:0x34 +HuWinAttrReset = .text:0x80045A98; // type:function size:0x34 +HuWinStatGet = .text:0x80045ACC; // type:function size:0x2C +HuWinMesColSet = .text:0x80045AF8; // type:function size:0x3C +HuWinMesPalSet = .text:0x80045B34; // type:function size:0x58 +HuWinBGTPLvlSet = .text:0x80045B8C; // type:function size:0x50 +HuWinBGColSet = .text:0x80045BDC; // type:function size:0x60 +HuWinMesSpeedSet = .text:0x80045C3C; // type:function size:0x2C +HuWinMesRead = .text:0x80045C68; // type:function size:0xC4 +HuWinMesSet = .text:0x80045D2C; // type:function size:0xC8 +HuWinInsertMesSet = .text:0x80045DF4; // type:function size:0xD8 +HuWinChoiceGet = .text:0x80045ECC; // type:function size:0x27C +HuWinChoiceNumGet = .text:0x80046148; // type:function size:0x2C +HuWinChoiceDisable = .text:0x80046174; // type:function size:0x38 +HuWinChoiceNowGet = .text:0x800461AC; // type:function size:0x40 +HuWinMesWait = .text:0x800461EC; // type:function size:0x50 +HuWinAnimSet = .text:0x8004623C; // type:function size:0x8C +HuWinSprSet = .text:0x800462C8; // type:function size:0xF0 +HuWinSprPosSet = .text:0x800463B8; // type:function size:0x88 +HuWinSprPriSet = .text:0x80046440; // type:function size:0x6C +HuWinSprIDGet = .text:0x800464AC; // type:function size:0x38 +HuWinSprKill = .text:0x800464E4; // type:function size:0x68 +HuWinDispOff = .text:0x8004654C; // type:function size:0x90 +HuWinDispOn = .text:0x800465DC; // type:function size:0x90 +HuWinComKeyWait = .text:0x8004666C; // type:function size:0xC0 +HuWinComKeySet = .text:0x8004672C; // type:function size:0x44 +_HuWinComKeySet = .text:0x80046770; // type:function size:0x98 +HuWinComKeyGet = .text:0x80046808; // type:function size:0x1D4 +HuWinComKeyReset = .text:0x800469DC; // type:function size:0x10 +HuWinMesMaxSizeGet = .text:0x800469EC; // type:function size:0x170 +HuWinInsertMesSizeGet = .text:0x80046B5C; // type:function size:0x54 +HuWinMesSizeCancelCRSet = .text:0x80046BB0; // type:function size:0x8 +HuWinMesMaxSizeBetGet = .text:0x80046BB8; // type:function size:0x114 +GetMesMaxSizeSub = .text:0x80046CCC; // type:function size:0x2A0 scope:local +GetMesMaxSizeSub2 = .text:0x80046F6C; // type:function size:0x1CC scope:local +HuWinKeyWaitNumGet = .text:0x80047138; // type:function size:0x88 +HuWinPushKeySet = .text:0x800471C0; // type:function size:0x2C +HuWinDisablePlayerSet = .text:0x800471EC; // type:function size:0x34 +HuWinDisablePlayerReset = .text:0x80047220; // type:function size:0x38 +HuWinExCreate = .text:0x80047258; // type:function size:0x4C +HuWinExCreateStyled = .text:0x800472A4; // type:function size:0x228 +HuWinExAnimIn = .text:0x800474CC; // type:function size:0x3B0 +HuWinExAnimOut = .text:0x8004787C; // type:function size:0x304 +HuWinExCleanup = .text:0x80047B80; // type:function size:0xA4 +HuWinExAnimPopIn = .text:0x80047C24; // type:function size:0x264 +MessData_MesPtrGet = .text:0x80047E88; // type:function size:0xE8 +HuCardInit = .text:0x80047F70; // type:function size:0x34 +HuCardCheck = .text:0x80047FA4; // type:function size:0xC4 +HuCardSlotCheck = .text:0x80048068; // type:function size:0x58 +HuCardMount = .text:0x800480C0; // type:function size:0xEC +HuCardUnMount = .text:0x800481AC; // type:function size:0x28 +HuCardFormat = .text:0x800481D4; // type:function size:0x50 +MountCallBack = .text:0x80048224; // type:function size:0x1C scope:local +HuCardOpen = .text:0x80048240; // type:function size:0x70 +HuCardRead = .text:0x800482B0; // type:function size:0x68 +HuCardCreate = .text:0x80048318; // type:function size:0x100 +HuCardClose = .text:0x80048418; // type:function size:0x38 +HuCardWrite = .text:0x80048450; // type:function size:0x50 +HuCardDelete = .text:0x800484A0; // type:function size:0x40 +HuCardSectorSizeGet = .text:0x800484E0; // type:function size:0x4C +HuCardFreeSpaceGet = .text:0x8004852C; // type:function size:0x48 +HuARInit = .text:0x80048574; // type:function size:0x148 +HuARMalloc = .text:0x800486BC; // type:function size:0x16C +HuARFree = .text:0x80048828; // type:function size:0x16C +HuAMemDump = .text:0x80048994; // type:function size:0xA8 +HuAR_DVDtoARAM = .text:0x80048A3C; // type:function size:0x160 +ArqCallBack = .text:0x80048B9C; // type:function size:0x10 scope:local +HuAR_MRAMtoARAM = .text:0x80048BAC; // type:function size:0x2C +HuAR_MRAMtoARAM2 = .text:0x80048BD8; // type:function size:0x140 +HuAR_ARAMtoMRAM = .text:0x80048D18; // type:function size:0x2C +HuAR_ARAMtoMRAMNum = .text:0x80048D44; // type:function size:0x1F0 +ArqCallBackAM = .text:0x80048F34; // type:function size:0x44 scope:local +HuARDMACheck = .text:0x80048F78; // type:function size:0x8 +HuARDirCheck = .text:0x80048F80; // type:function size:0x58 +HuARDirFree = .text:0x80048FD8; // type:function size:0x68 +HuAR_ARAMtoMRAMFileRead = .text:0x80049040; // type:function size:0x390 +ArqCallBackAMFileRead = .text:0x800493D0; // type:function size:0x10 scope:local +CharManInit = .text:0x800493E0; // type:function size:0x134 +CharAMemPtrGet = .text:0x80049514; // type:function size:0x1C +CharARAMOpen = .text:0x80049530; // type:function size:0x98 +CharARAMClose = .text:0x800495C8; // type:function size:0x58 +CharKill = .text:0x80049620; // type:function size:0x428 +CharKillAll = .text:0x80049A48; // type:function size:0x3C +CharModelCreate = .text:0x80049A84; // type:function size:0x180 +UpdateChar = .text:0x80049C04; // type:function size:0x20C scope:local +UpdateCharAnim = .text:0x80049E10; // type:function size:0x173C scope:local +PlayCharVoice = .text:0x8004B54C; // type:function size:0xB0 scope:local +InitEffect = .text:0x8004B5FC; // type:function size:0x254 scope:local +CreateEffectDust = .text:0x8004B850; // type:function size:0xB0 scope:local +CreateEffectSmoke = .text:0x8004B900; // type:function size:0xB0 scope:local +CreateEffectDot = .text:0x8004B9B0; // type:function size:0xB0 scope:local +CreateEffectStar = .text:0x8004BA60; // type:function size:0xB0 scope:local +CreateEffectWarn = .text:0x8004BB10; // type:function size:0xB0 scope:local +CreateEffectBird = .text:0x8004BBC0; // type:function size:0xB0 scope:local +CreateEffect = .text:0x8004BC70; // type:function size:0x1CC scope:local +UpdateEffect = .text:0x8004BE3C; // type:function size:0x4A0 scope:local +RotateEffect = .text:0x8004C2DC; // type:function size:0x1E8 scope:local +PlayEffectSound = .text:0x8004C4C4; // type:function size:0x344 scope:local +CharModelMotionCreate = .text:0x8004C808; // type:function size:0x1D0 +CharModelMotionIndexSet = .text:0x8004C9D8; // type:function size:0x88 +CharModelMotionKill = .text:0x8004CA60; // type:function size:0x9C +CharModelMotionDataClose = .text:0x8004CAFC; // type:function size:0x2B8 +CharModelDataClose = .text:0x8004CDB4; // type:function size:0x430 +CharModelKill = .text:0x8004D1E4; // type:function size:0x244 +CharModelMotionSet = .text:0x8004D428; // type:function size:0x7C +CharModelTexAnimSet = .text:0x8004D4A4; // type:function size:0x17C +CharModelTexNameGet = .text:0x8004D620; // type:function size:0x7C +CharModelHookNameGet = .text:0x8004D69C; // type:function size:0x7C +CharModelMotionTimeSet = .text:0x8004D718; // type:function size:0x4C +CharModelMotionTimeGet = .text:0x8004D764; // type:function size:0x44 +CharModelMotionMaxTimeGet = .text:0x8004D7A8; // type:function size:0x44 +CharModelMotionEndCheck = .text:0x8004D7EC; // type:function size:0x44 +CharModelMotionShiftIDGet = .text:0x8004D830; // type:function size:0x44 +CharModelMotionShiftSet = .text:0x8004D874; // type:function size:0x84 +CharModelMotionShiftTimeGet = .text:0x8004D8F8; // type:function size:0x44 +CharModelMotionSpeedSet = .text:0x8004D93C; // type:function size:0x4C +CharModelLayerSetAll = .text:0x8004D988; // type:function size:0x80 +CharModelItemHookCreate = .text:0x8004DA08; // type:function size:0x1D4 +UpdateItemHook = .text:0x8004DBDC; // type:function size:0x484 scope:local +CharModelEffectCreate = .text:0x8004E060; // type:function size:0x3FC +OrbitEffect = .text:0x8004E45C; // type:function size:0x168 scope:local +CharModelCoinEffectCreate = .text:0x8004E5C4; // type:function size:0x1A0 +fn_8004EC74 = .text:0x8004E764; // type:function size:0x130 +fn_8004EDA4 = .text:0x8004E894; // type:function size:0x2B4 +fn_8004F058 = .text:0x8004EB48; // type:function size:0xE4 +fn_8004F13C = .text:0x8004EC2C; // type:function size:0x2B4 +CharModelLayerSetAll2 = .text:0x8004EEE0; // type:function size:0x80 +CharModelVoiceEnableSet = .text:0x8004EF60; // type:function size:0xBC +fn_8004F52C = .text:0x8004F01C; // type:function size:0x4C +CharModelEffectEnableSet = .text:0x8004F068; // type:function size:0xB0 +CharModelEffectNpcInit = .text:0x8004F118; // type:function size:0x2CC +CharModelEffectNpcInitSilent = .text:0x8004F3E4; // type:function size:0x2CC +UpdateNpcEffect = .text:0x8004F6B0; // type:function size:0xF80 scope:local +CharModelStepTypeSet = .text:0x80050630; // type:function size:0x30 +PlayStepFX = .text:0x80050660; // type:function size:0xEC scope:local +MapWall = .text:0x8005074C; // type:function size:0x1B8 +MapWallCheck = .text:0x80050904; // type:function size:0x110 +MapPos = .text:0x80050A14; // type:function size:0x2A8 +PolygonRangeCheck = .text:0x80050CBC; // type:function size:0x38C scope:local +DefIfnnerMapCircle = .text:0x80051048; // type:function size:0x470 scope:local +CalcPPLength = .text:0x800514B8; // type:function size:0x5D4 scope:local +MapIflnnerCalc = .text:0x80051A8C; // type:function size:0xF4 scope:local +MapCalcPoint = .text:0x80051B80; // type:function size:0x388 scope:local +AreaCheck = .text:0x80051F08; // type:function size:0x148 scope:local +MapIflnnerTriangle = .text:0x80052050; // type:function size:0x518 scope:local +MapIflnnerQuadrangle = .text:0x80052568; // type:function size:0x994 scope:local +GetPolygonCircleMtx = .text:0x80052EFC; // type:function size:0xC28 scope:local +PrecalcPntToTriangle = .text:0x80053B24; // type:function size:0x43C scope:local +Hitcheck_Triangle_with_Sphere = .text:0x80053F60; // type:function size:0x100 +Hitcheck_Quadrangle_with_Sphere = .text:0x80054060; // type:function size:0x19C +DefSetHitFace = .text:0x800541FC; // type:function size:0x4C scope:local +AppendAddXZ = .text:0x80054248; // type:function size:0x184 +CharRotInv = .text:0x800543CC; // type:function size:0x124 +THPSimpleInit = .text:0x800544F0; // type:function size:0x124 +THPSimpleQuit = .text:0x80054614; // type:function size:0x54 +THPSimpleOpen = .text:0x80054668; // type:function size:0x408 +THPSimpleClose = .text:0x80054A70; // type:function size:0xC0 +THPSimpleCalcNeedMemory = .text:0x80054B30; // type:function size:0x184 +THPSimpleSetBuffer = .text:0x80054CB4; // type:function size:0x240 +__THPSimpleDVDCallback = .text:0x80054EF4; // type:function size:0x2A4 scope:local +THPSimplePreLoad = .text:0x80055198; // type:function size:0x2A4 +THPSimpleAudioStart = .text:0x8005543C; // type:function size:0x14 +THPSimpleAudioStop = .text:0x80055450; // type:function size:0x14 +THPSimpleLoadStop = .text:0x80055464; // type:function size:0x1B8 +THPSimpleDecode = .text:0x8005561C; // type:function size:0x47C +VideoDecode = .text:0x80055A98; // type:function size:0xD8 scope:local +THPSimpleDrawCurrentFrame = .text:0x80055B70; // type:function size:0x104 +MixAudio = .text:0x80055C74; // type:function size:0x5F8 scope:local +THPSimpleGetVideoInfo = .text:0x8005626C; // type:function size:0x58 +THPSimpleGetTotalFrame = .text:0x800562C4; // type:function size:0x2C +THPAudioMixCallback = .text:0x800562F0; // type:function size:0x188 scope:local +THPSimpleSetVolume = .text:0x80056478; // type:function size:0x17C +THPGXRestore = .text:0x800565F4; // type:function size:0x130 +THPGXYuv2RgbSetup = .text:0x80056724; // type:function size:0x5A0 +THPGXYuv2RgbDraw = .text:0x80056CC4; // type:function size:0x288 +HuTHPSprCreateVol = .text:0x80056F4C; // type:function size:0x108 +HuTHPSprCreate = .text:0x80057054; // type:function size:0x110 +HuTHP3DCreateVol = .text:0x80057164; // type:function size:0xF8 +HuTHP3DCreate = .text:0x8005725C; // type:function size:0x100 +HuTHPStop = .text:0x8005735C; // type:function size:0xC +HuTHPClose = .text:0x80057368; // type:function size:0xC +HuTHPRestart = .text:0x80057374; // type:function size:0xC +HuTHPEndCheck = .text:0x80057380; // type:function size:0x54 +HuTHPFrameGet = .text:0x800573D4; // type:function size:0x8 +HuTHPTotalFrameGet = .text:0x800573DC; // type:function size:0x20 +HuTHPSetVolume = .text:0x800573FC; // type:function size:0x30 +THPTestProc = .text:0x8005742C; // type:function size:0x27C scope:local +THPViewFunc = .text:0x800576A8; // type:function size:0xA4 scope:local +THPViewSprFunc = .text:0x8005774C; // type:function size:0x17C scope:local +THPDecodeFunc = .text:0x800578C8; // type:function size:0x4C scope:local +omMgIndexGet = .text:0x80057914; // type:function size:0x5C +omGameSysInit = .text:0x80057970; // type:function size:0xF4 +omVibrate = .text:0x80057A64; // type:function size:0x9C +_CheckFlag = .text:0x80057B00; // type:function size:0xA0 +_SetFlag = .text:0x80057BA0; // type:function size:0xA4 +_ClearFlag = .text:0x80057C44; // type:function size:0xA4 +_InitFlag = .text:0x80057CE8; // type:function size:0x30 +SLFileOpen = .text:0x80057D18; // type:function size:0x140 +SLFileCreate = .text:0x80057E58; // type:function size:0x280 +SLFileWrite = .text:0x800580D8; // type:function size:0x10C +SLFileRead = .text:0x800581E4; // type:function size:0x84 +SLFileClose = .text:0x80058268; // type:function size:0x4C +SLCurSlotNoSet = .text:0x800582B4; // type:function size:0x8 +SLCurBoxNoSet = .text:0x800582BC; // type:function size:0xC +SLSaveFlagSet = .text:0x800582C8; // type:function size:0x40 +SLSaveFlagGet = .text:0x80058308; // type:function size:0x8 +SLSaveDataMake = .text:0x80058310; // type:function size:0x154 +SLSaveDataInfoSet = .text:0x80058464; // type:function size:0x2A0 +SLCommonSet = .text:0x80058704; // type:function size:0x2DC +SLSaveBoard = .text:0x800589E0; // type:function size:0x8C +SLSaveBoardStory = .text:0x80058A6C; // type:function size:0x8C +SLSave = .text:0x80058AF8; // type:function size:0x370 +SLCreateSaveWin = .text:0x80058E68; // type:function size:0xDC scope:local +SLKillSaveWin = .text:0x80058F44; // type:function size:0x48 scope:local +SLLoad = .text:0x80058F8C; // type:function size:0x110 +SLLoadGameStat = .text:0x8005909C; // type:function size:0x38 +SLLoadBoard = .text:0x800590D4; // type:function size:0x1A0 +SLLoadBoardStory = .text:0x80059274; // type:function size:0x184 +SLSerialNoGet = .text:0x800593F8; // type:function size:0x28 +SLSerialNoCheck = .text:0x80059420; // type:function size:0xA0 +SLCheckSumCheck = .text:0x800594C0; // type:function size:0x60 +SLCheckSumGet = .text:0x80059520; // type:function size:0x54 +SLCheckSumSet = .text:0x80059574; // type:function size:0x90 +SLStatSet = .text:0x80059604; // type:function size:0x1D4 +SLCardMount = .text:0x800597D8; // type:function size:0x12C +SLFormat = .text:0x80059904; // type:function size:0x624 +SLMessOut = .text:0x80059F28; // type:function size:0x3FC +HuSoftResetButtonCheck = .text:0x8005A324; // type:function size:0x50 +HuDvdErrDispIntFunc = .text:0x8005A374; // type:function size:0x28 +HuDvdErrDispInit = .text:0x8005A39C; // type:function size:0x1F4 +ToeThreadFunc = .text:0x8005A590; // type:function size:0xD8 scope:local +ToeDispCheck = .text:0x8005A668; // type:function size:0x128 scope:local +_HuDvdErrDispXFB = .text:0x8005A790; // type:function size:0x2D0 scope:local +HuRestartSystem = .text:0x8005AA60; // type:function size:0xDC +HuSoftResetCheck = .text:0x8005AB3C; // type:function size:0xFC scope:local +HuSoftResetCountCheck = .text:0x8005AC38; // type:function size:0xCC scope:local +HuSoftResetPostProc = .text:0x8005AD04; // type:function size:0x78 scope:local +BoardObjectSetup = .text:0x8005AD7C; // type:function size:0x2E0 +InitBoardFunc = .text:0x8005B05C; // type:function size:0x64 scope:local +ExecBoardFunc = .text:0x8005B0C0; // type:function size:0x9C scope:local +KillBoardFunc = .text:0x8005B15C; // type:function size:0xCC scope:local +BoardKill = .text:0x8005B228; // type:function size:0xAC +BoardIsKill = .text:0x8005B2D4; // type:function size:0x48 +BoardPauseDisableSet = .text:0x8005B31C; // type:function size:0x74 +BoardPauseDisableGet = .text:0x8005B390; // type:function size:0x48 +BoardSaveInit = .text:0x8005B3D8; // type:function size:0x524 +BoardStoryConfigSet = .text:0x8005B8FC; // type:function size:0x160 +BoardPartyConfigSet = .text:0x8005BA5C; // type:function size:0x160 +DestroyMainFunc = .text:0x8005BBBC; // type:function size:0xC scope:local +MainFunc = .text:0x8005BBC8; // type:function size:0x7D0 scope:local +BoardTurnNext = .text:0x8005C398; // type:function size:0x8C +ExecTurnStart = .text:0x8005C424; // type:function size:0x28C scope:local +BoardNextOvlSet = .text:0x8005C6B0; // type:function size:0xC4 +BoardStartCheck = .text:0x8005C774; // type:function size:0x8C +CreateBoard = .text:0x8005C800; // type:function size:0x410 scope:local +DestroyBoard = .text:0x8005CC10; // type:function size:0x128 scope:local +BoardLightHookSet = .text:0x8005CD38; // type:function size:0xC +BoardLightSetExec = .text:0x8005CD44; // type:function size:0x44 +BoardLightResetExec = .text:0x8005CD88; // type:function size:0x50 +BoardCameraBackup = .text:0x8005CDD8; // type:function size:0x3C +BoardCameraRestore = .text:0x8005CE14; // type:function size:0x48 +BoardCameraScissorSet = .text:0x8005CE5C; // type:function size:0x54 +BoardCameraViewSet = .text:0x8005CEB0; // type:function size:0x2AC +BoardCameraPosGet = .text:0x8005D15C; // type:function size:0x48 +BoardCameraTargetGet = .text:0x8005D1A4; // type:function size:0x48 +BoardCameraRotGet = .text:0x8005D1EC; // type:function size:0x48 +BoardCameraZoomGet = .text:0x8005D234; // type:function size:0x20 +BoardCameraDirGet = .text:0x8005D254; // type:function size:0xA8 +BoardCameraPointDirGet = .text:0x8005D2FC; // type:function size:0xBC +BoardCameraMaskSet = .text:0x8005D3B8; // type:function size:0x28 +BoardCameraMoveSet = .text:0x8005D3E0; // type:function size:0x50 +BoardCameraOffsetSet = .text:0x8005D430; // type:function size:0x30 +BoardCameraTargetPlayerSet = .text:0x8005D460; // type:function size:0xB4 +BoardCameraTargetModelSet = .text:0x8005D514; // type:function size:0x40 +BoardCameraTargetSpaceSet = .text:0x8005D554; // type:function size:0x44 +BoardCameraPosCalcFuncSet = .text:0x8005D598; // type:function size:0x28 +BoardCameraQuakeSet = .text:0x8005D5C0; // type:function size:0x3C +BoardCameraQuakeReset = .text:0x8005D5FC; // type:function size:0x3C +BoardCameraTargetSet = .text:0x8005D638; // type:function size:0x28 +BoardCameraPosSet = .text:0x8005D660; // type:function size:0x28 +BoardCameraXRotZoomSet = .text:0x8005D688; // type:function size:0x24 +BoardCameraZoomSet = .text:0x8005D6AC; // type:function size:0x20 +BoardCameraRotSet = .text:0x8005D6CC; // type:function size:0x24 +BoardCameraNearFarSet = .text:0x8005D6F0; // type:function size:0x24 +BoardCameraNearFarGet = .text:0x8005D714; // type:function size:0x3C +BoardCameraMotionStart = .text:0x8005D750; // type:function size:0x48 +BoardCameraMotionStartEx = .text:0x8005D798; // type:function size:0x230 +BoardCameraFovSet = .text:0x8005D9C8; // type:function size:0x20 +BoardCameraCullCheck = .text:0x8005D9E8; // type:function size:0x2BC +BoardCameraMotionIsDone = .text:0x8005DCA4; // type:function size:0x48 +BoardCameraMotionWait = .text:0x8005DCEC; // type:function size:0x58 +BoardCameraInit = .text:0x8005DD44; // type:function size:0x24C +UpdateCamera = .text:0x8005DF90; // type:function size:0x350 scope:local +CalcCameraTarget = .text:0x8005E2E0; // type:function size:0xE4 scope:local +CalcCameraPos = .text:0x8005E3C4; // type:function size:0x764 scope:local +BoardMGDoneFlagSet = .text:0x8005EB28; // type:function size:0x48 +BoardMGDoneFlagGet = .text:0x8005EB70; // type:function size:0x48 +BoardMGExit = .text:0x8005EBB8; // type:function size:0x170 +KillBoardMG = .text:0x8005ED28; // type:function size:0x60 scope:local +ExecBoardMG = .text:0x8005ED88; // type:function size:0xC4 scope:local +BoardMGCreate = .text:0x8005EE4C; // type:function size:0x74 +BoardEventFlagSet = .text:0x8005EEC0; // type:function size:0x28 +BoardEventFlagReset = .text:0x8005EEE8; // type:function size:0x28 +BoardEventFlagGet = .text:0x8005EF10; // type:function size:0x48 +BoardMTXCalcLookAt = .text:0x8005EF58; // type:function size:0x10C +BoardArcSin = .text:0x8005F064; // type:function size:0x330 +BoardArcCos = .text:0x8005F394; // type:function size:0x390 +BoardRandInit = .text:0x8005F724; // type:function size:0x24 +BoardRand = .text:0x8005F748; // type:function size:0x24 +BoardRandMod = .text:0x8005F76C; // type:function size:0x50 +BoardRandFloat = .text:0x8005F7BC; // type:function size:0x58 +BoardVecDistXZCalc = .text:0x8005F814; // type:function size:0x134 +BoardVecMaxDistXZCheck = .text:0x8005F948; // type:function size:0x15C +BoardDAngleCalcVec = .text:0x8005FAA4; // type:function size:0x7C +BoardDAngleCalc = .text:0x8005FB20; // type:function size:0x34 +BoardDAngleCalcRange = .text:0x8005FB54; // type:function size:0x1C0 +BoardVecMinDistCheck = .text:0x8005FD14; // type:function size:0x6C +BoardFilterFadeOut = .text:0x8005FD80; // type:function size:0xD4 +BoardFilterFadeInit = .text:0x8005FE54; // type:function size:0x174 +BoardFilterFadePauseCheck = .text:0x8005FFC8; // type:function size:0x5C +BoardFilterFadeCheck = .text:0x80060024; // type:function size:0x34 +UpdateFilter = .text:0x80060058; // type:function size:0x178 scope:local +DrawFilter = .text:0x800601D0; // type:function size:0x350 scope:local +BoardConfettiCreate = .text:0x80060520; // type:function size:0x164 +BoardConfettiKill = .text:0x80060684; // type:function size:0x24 +BoardConfettiStop = .text:0x800606A8; // type:function size:0x88 +UpdateConfetti = .text:0x80060730; // type:function size:0xB8 scope:local +SpawnConfetti = .text:0x800607E8; // type:function size:0x564 scope:local +MoveConfetti = .text:0x80060D4C; // type:function size:0x14C scope:local +DrawConfetti = .text:0x80060E98; // type:function size:0x254 scope:local +BoardLast5GfxInit = .text:0x800610EC; // type:function size:0x278 +UpdateLast5Gfx = .text:0x80061364; // type:function size:0x2AC scope:local +BoardLast5GfxShowSet = .text:0x80061610; // type:function size:0xAC +BoardTauntInit = .text:0x800616BC; // type:function size:0x80 +BoardTauntKill = .text:0x8006173C; // type:function size:0x54 +TauntUpdate = .text:0x80061790; // type:function size:0x3A4 scope:local +BoardDataDirReadAsync = .text:0x80061B34; // type:function size:0x38 +BoardDataAsyncWait = .text:0x80061B6C; // type:function size:0x48 +BoardItemPrevGet = .text:0x80061BB4; // type:function size:0xC +BoardItemPrevSet = .text:0x80061BC0; // type:function size:0xC +BoardPlayerGetCharMess = .text:0x80061BCC; // type:function size:0x78 +BoardPlayerGetCharName = .text:0x80061C44; // type:function size:0x78 +BoardPlayerIsAllCom = .text:0x80061CBC; // type:function size:0x80 +BoardPlayerInit = .text:0x80061D3C; // type:function size:0x16C +BoardPlayerModelInit = .text:0x80061EA8; // type:function size:0x588 +BoardPlayerModelKill = .text:0x80062430; // type:function size:0xFC +BoardPlayerLayerSet = .text:0x8006252C; // type:function size:0x84 +BoardPlayerCameraSet = .text:0x800625B0; // type:function size:0x80 +fn_80062A40 = .text:0x80062630; // type:function size:0x80 +BoardPlayerExistCheck = .text:0x800626B0; // type:function size:0xB4 +BoardPlayerItemAdd = .text:0x80062764; // type:function size:0xB0 +BoardPlayerItemRemove = .text:0x80062814; // type:function size:0xB4 +BoardPlayerItemFind = .text:0x800628C8; // type:function size:0x58 +BoardPlayerItemCount = .text:0x80062920; // type:function size:0x60 +BoardPlayerCornerPosSet = .text:0x80062980; // type:function size:0x40 +BoardPlayerCornerPosGet = .text:0x800629C0; // type:function size:0xC4 +BoardPlayerAmbSet = .text:0x80062A84; // type:function size:0x90 +BoardPlayerMtxSet = .text:0x80062B14; // type:function size:0x80 +BoardPlayerPosSetV = .text:0x80062B94; // type:function size:0x9C +BoardPlayerPosSet = .text:0x80062C30; // type:function size:0xCC +BoardPlayerPosGet = .text:0x80062CFC; // type:function size:0x80 +BoardPlayerRotSetV = .text:0x80062D7C; // type:function size:0x9C +BoardPlayerRotSet = .text:0x80062E18; // type:function size:0xCC +BoardPlayerRotGet = .text:0x80062EE4; // type:function size:0x80 +BoardPlayerRotYSet = .text:0x80062F64; // type:function size:0xD4 +BoardPlayerRotYGet = .text:0x80063038; // type:function size:0xA8 +BoardPlayerScaleSetV = .text:0x800630E0; // type:function size:0x80 +BoardPlayerScaleSet = .text:0x80063160; // type:function size:0x90 +BoardPlayerScaleGet = .text:0x800631F0; // type:function size:0x80 +BoardPlayerCurrMotionGet = .text:0x80063270; // type:function size:0x44 +BoardPlayerVoiceEnableSet = .text:0x800632B4; // type:function size:0x88 +BoardPlayerMotionCreate = .text:0x8006333C; // type:function size:0x80 +BoardPlayerMotionKill = .text:0x800633BC; // type:function size:0x80 +BoardPlayerMotionEndCheck = .text:0x8006343C; // type:function size:0x78 +BoardPlayerMotionEndWait = .text:0x800634B4; // type:function size:0x88 +BoardPlayerMotionStart = .text:0x8006353C; // type:function size:0xD0 +BoardPlayerMotionShiftSet = .text:0x8006360C; // type:function size:0xE0 +BoardPlayerMotionSpeedSet = .text:0x800636EC; // type:function size:0x80 +BoardPlayerMotionTimeSet = .text:0x8006376C; // type:function size:0x80 +BoardPlayerMotionTimeGet = .text:0x800637EC; // type:function size:0x78 +BoardPlayerMotionMaxTimeGet = .text:0x80063864; // type:function size:0x78 +BoardPlayerMotionStartEndSet = .text:0x800638DC; // type:function size:0xA0 +BoardPlayerModelAttrSet = .text:0x8006397C; // type:function size:0x80 +BoardPlayerModelAttrReset = .text:0x800639FC; // type:function size:0x80 +BoardPlayerCoinsSet = .text:0x80063A7C; // type:function size:0x34 +BoardPlayerCoinsGet = .text:0x80063AB0; // type:function size:0x2C +BoardPlayerCoinsAdd = .text:0x80063ADC; // type:function size:0x9C +BoardPlayerStarsAdd = .text:0x80063B78; // type:function size:0x48 +BoardPlayerSizeSet = .text:0x80063BC0; // type:function size:0x16C +BoardPlayerSizeGet = .text:0x80063D2C; // type:function size:0x40 +BoardPlayerSameTeamFind = .text:0x80063D6C; // type:function size:0x7C +BoardPlayerTeamFind = .text:0x80063DE8; // type:function size:0x7C +BoardPlayerRankCalc = .text:0x80063E64; // type:function size:0xC4 +BoardPlayerPreTurnHookSet = .text:0x80063F28; // type:function size:0x18 +BoardPlayerPostTurnHookSet = .text:0x80063F40; // type:function size:0x18 +BoardPlayerTurnExec = .text:0x80063F58; // type:function size:0x15C +BoardPlayerTurnRollExec = .text:0x800640B4; // type:function size:0x160 +BoardPlayerTurnMoveExec = .text:0x80064214; // type:function size:0x420 +BoardPlayerPostTurnHookExec = .text:0x80064634; // type:function size:0x80 +BoardPlayerSizeRestore = .text:0x800646B4; // type:function size:0x18C +BoardPlayerZoomRestore = .text:0x80064840; // type:function size:0x134 +BoardJunctionMaskSet = .text:0x80064974; // type:function size:0x10 +BoardJunctionMaskReset = .text:0x80064984; // type:function size:0x10 +BoardJunctionMaskZero = .text:0x80064994; // type:function size:0xC +InitJunction = .text:0x800649A0; // type:function size:0x634 scope:local +UpdateJunctionGfx = .text:0x80064FD4; // type:function size:0x1A0 scope:local +StopJunctionPlayer = .text:0x80065174; // type:function size:0x70 scope:local +RestoreJunction = .text:0x800651E4; // type:function size:0x180 scope:local +GetDefaultDirection = .text:0x80065364; // type:function size:0x114 scope:local +DoDebugMove = .text:0x80065478; // type:function size:0x8E8 scope:local +ExecJunction = .text:0x80065D60; // type:function size:0xBF8 scope:local +BoardPlayerMoveTo = .text:0x80066958; // type:function size:0xBC +BoardPlayerMoveBetween = .text:0x80066A14; // type:function size:0x90 +BoardPlayerMoveToAsync = .text:0x80066AA4; // type:function size:0x90 +BoardPlayerPosLerpStart = .text:0x80066B34; // type:function size:0x430 +PlayerPosLerpFunc = .text:0x80066F64; // type:function size:0x218 scope:local +BoardPlayerDiceJumpStart = .text:0x8006717C; // type:function size:0x1D4 +BoardPlayerDiceJumpCheck = .text:0x80067350; // type:function size:0x54 +DiceJumpFunc = .text:0x800673A4; // type:function size:0x3E4 scope:local +BoardPlayerIdleSet = .text:0x80067788; // type:function size:0xF8 +BoardPlayerMotBlendSet = .text:0x80067880; // type:function size:0x5A0 +ExecMotBlend = .text:0x80067E20; // type:function size:0x51C scope:local +BoardPlayerMotBlendCheck = .text:0x8006833C; // type:function size:0x2C +BoardRollCreate = .text:0x80068368; // type:function size:0x138 +BoardRollUpdateSet = .text:0x800684A0; // type:function size:0x38 +BoardRollDispSet = .text:0x800684D8; // type:function size:0x10C +UpdateRollSprite = .text:0x800685E4; // type:function size:0x194 scope:local +UpdateRoll = .text:0x80068778; // type:function size:0x278 scope:local +BoardPlayerBtnDownWait = .text:0x800689F0; // type:function size:0x6C +BoardPlayerAutoSizeSet = .text:0x80068A5C; // type:function size:0x9C +BoardPlayerAutoSizeGet = .text:0x80068AF8; // type:function size:0x40 +BoardPlayerMoveAwayIsDone = .text:0x80068B38; // type:function size:0x1C +BoardPlayerMoveAwayStart = .text:0x80068B54; // type:function size:0x224 +BoardPlayerMoveAwayStartCurr = .text:0x80068D78; // type:function size:0x40 +MoveAwayObjFunc = .text:0x80068DB8; // type:function size:0x100 scope:local +BoardBowserSuitInit = .text:0x80068EB8; // type:function size:0x1A4 +BoardBowserSuitKill = .text:0x8006905C; // type:function size:0x128 +BoardBowserSuitModelGet = .text:0x80069184; // type:function size:0x8 +BoardBowserSuitPlayerModelGet = .text:0x8006918C; // type:function size:0x8 +BoardBowserSuitMotionCreate = .text:0x80069194; // type:function size:0x74 +BoardBowserSuitMotionSetWait = .text:0x80069208; // type:function size:0x54 +BoardBowserSuitMotionSetWalk = .text:0x8006925C; // type:function size:0x4C +BoardBowserSuitMotionSetWin = .text:0x800692A8; // type:function size:0x44 +BoardBowserSuitMotionSetJump = .text:0x800692EC; // type:function size:0x44 +BoardBowserSuitPlayerModelKill = .text:0x80069330; // type:function size:0x44 +UpdateBowserSuit = .text:0x80069374; // type:function size:0x1F0 scope:local +BoardPlayerSparkSet = .text:0x80069564; // type:function size:0x5C +DoSparkSpace = .text:0x800695C0; // type:function size:0x1294 scope:local +RemoveSparkSpace = .text:0x8006A854; // type:function size:0xA0 scope:local +SetPlayerSizeAuto = .text:0x8006A8F4; // type:function size:0x24C scope:local +BoardMegaDoubleDiceCheck = .text:0x8006AB40; // type:function size:0x8 +BoardPlayerResizeAnimExec = .text:0x8006AB48; // type:function size:0x38C +MegaSquishFunc = .text:0x8006AED4; // type:function size:0x950 scope:local +MegaPlayerPassFunc = .text:0x8006B824; // type:function size:0x980 scope:local +MegaExecJump = .text:0x8006C1A4; // type:function size:0xA48 scope:local +BoardPlayerCopyEyeMat = .text:0x8006CBEC; // type:function size:0x24C +BoardPlayerCopyMat = .text:0x8006CE38; // type:function size:0xC0 +BoardModelInit = .text:0x8006CEF8; // type:function size:0xF0 +BoardModelKillAll = .text:0x8006CFE8; // type:function size:0xA0 +ModelMgrFunc = .text:0x8006D088; // type:function size:0x70 scope:local +BoardModelDummyUpdate = .text:0x8006D0F8; // type:function size:0x4 +BoardModelVisibilityUpdate = .text:0x8006D0FC; // type:function size:0xCC +BoardModelHideSetAll = .text:0x8006D1C8; // type:function size:0x90 +BoardModelAmbSetAll = .text:0x8006D258; // type:function size:0x70 +BoardModelCameraSetAll = .text:0x8006D2C8; // type:function size:0x7C +CreateInstance = .text:0x8006D344; // type:function size:0x250 scope:local +BoardModelCreate = .text:0x8006D594; // type:function size:0x40 +BoardModelCreateCharacter = .text:0x8006D5D4; // type:function size:0x44 +BoardModelCreateParam = .text:0x8006D618; // type:function size:0x168 +BoardModelKill = .text:0x8006D780; // type:function size:0x44 +BoardModelIDGet = .text:0x8006D7C4; // type:function size:0x48 +fn_8006DC1C = .text:0x8006D80C; // type:function size:0x60 +BoardModelPassSet = .text:0x8006D86C; // type:function size:0x74 +BoardModelAmbSet = .text:0x8006D8E0; // type:function size:0x68 +BoardModelExistCheck = .text:0x8006D948; // type:function size:0x48 +BoardModelExistDupe = .text:0x8006D990; // type:function size:0x48 +fn_8006DDE8 = .text:0x8006D9D8; // type:function size:0x70 +BoardModelMotionCreate = .text:0x8006DA48; // type:function size:0x140 +BoardModelMotionKill = .text:0x8006DB88; // type:function size:0x118 +BoardModelMotionStartEndSet = .text:0x8006DCA0; // type:function size:0xE8 +BoardModelMotionUpdateSet = .text:0x8006DD88; // type:function size:0x7C +BoardModelVoiceEnableSet = .text:0x8006DE04; // type:function size:0xA4 +BoardModelMotionStart = .text:0x8006DEA8; // type:function size:0x174 +BoardModelMotionShiftIDGet = .text:0x8006E01C; // type:function size:0x50 +BoardModelMotionShiftSet = .text:0x8006E06C; // type:function size:0x148 +BoardModelAttrSet = .text:0x8006E1B4; // type:function size:0x58 +BoardModelAttrReset = .text:0x8006E20C; // type:function size:0x58 +BoardModelMotionTimeSet = .text:0x8006E264; // type:function size:0x84 +BoardModelMotionTimeGet = .text:0x8006E2E8; // type:function size:0x94 +BoardModelMotionMaxTimeGet = .text:0x8006E37C; // type:function size:0x88 +BoardModelMotionSpeedGet = .text:0x8006E404; // type:function size:0x64 +BoardModelMotionSpeedSet = .text:0x8006E468; // type:function size:0xA4 +BoardModelMotionEndCheck = .text:0x8006E50C; // type:function size:0x80 +BoardModelMotionShapeSet = .text:0x8006E58C; // type:function size:0x100 +BoardModelMotionShapeTimeGet = .text:0x8006E68C; // type:function size:0x7C +BoardModelMotionShapeMaxTimeGet = .text:0x8006E708; // type:function size:0xBC +BoardModelMotionShapeSpeedSet = .text:0x8006E7C4; // type:function size:0x88 +BoardModelMotionShapeSpeedGet = .text:0x8006E84C; // type:function size:0x64 +BoardModelMotionShapeEndCheck = .text:0x8006E8B0; // type:function size:0x14C +BoardModelMotionShapeStartEndSet = .text:0x8006E9FC; // type:function size:0x100 +BoardModelAlphaSet = .text:0x8006EAFC; // type:function size:0xB0 +BoardModelMtxSet = .text:0x8006EBAC; // type:function size:0x8C +BoardModelMtxGet = .text:0x8006EC38; // type:function size:0x8C +BoardModelRotYSet = .text:0x8006ECC4; // type:function size:0x54 +BoardModelRotYGet = .text:0x8006ED18; // type:function size:0x30 +BoardModelPosSetV = .text:0x8006ED48; // type:function size:0x50 +BoardModelPosSet = .text:0x8006ED98; // type:function size:0x78 +BoardModelRotSetV = .text:0x8006EE10; // type:function size:0x50 +BoardModelRotSet = .text:0x8006EE60; // type:function size:0x78 +BoardModelScaleSetV = .text:0x8006EED8; // type:function size:0x50 +BoardModelScaleSet = .text:0x8006EF28; // type:function size:0x78 +BoardModelPosGet = .text:0x8006EFA0; // type:function size:0x74 +BoardModelRotGet = .text:0x8006F014; // type:function size:0x74 +BoardModelScaleGet = .text:0x8006F088; // type:function size:0x74 +BoardModelVisibilitySet = .text:0x8006F0FC; // type:function size:0x60 +BoardModelVisibilityGet = .text:0x8006F15C; // type:function size:0x4C +BoardModelCameraSet = .text:0x8006F1A8; // type:function size:0x64 +BoardModelLayerSet = .text:0x8006F20C; // type:function size:0x64 +BoardModelLayerGet = .text:0x8006F270; // type:function size:0x48 +BoardModelLayerSetAll = .text:0x8006F2B8; // type:function size:0x74 +BoardModelHookSet = .text:0x8006F32C; // type:function size:0xC4 +BoardModelHookReset = .text:0x8006F3F0; // type:function size:0x50 +BoardModelHookObjReset = .text:0x8006F440; // type:function size:0x58 +SearchBoardModel = .text:0x8006F498; // type:function size:0x9C scope:local +KillBoardModel = .text:0x8006F534; // type:function size:0x178 scope:local +CreateBoardModel = .text:0x8006F6AC; // type:function size:0x194 scope:local +CreateBoardModelMotion = .text:0x8006F840; // type:function size:0x12C scope:local +BoardWinInit = .text:0x8006F96C; // type:function size:0x24 +BoardWinUnusedArraySet = .text:0x8006F990; // type:function size:0x34 +BoardWinKillAll = .text:0x8006F9C4; // type:function size:0x24 +BoardWinDestroy = .text:0x8006F9E8; // type:function size:0x6C +ExecBoardWindow = .text:0x8006FA54; // type:function size:0x514 scope:local +BoardWinChoiceGet = .text:0x8006FF68; // type:function size:0xC +BoardWinPause = .text:0x8006FF74; // type:function size:0xC +BoardWinCreateChoice = .text:0x8006FF80; // type:function size:0x1A0 +BoardWinCreate = .text:0x80070120; // type:function size:0x1A0 +BoardWinInsertMesSet = .text:0x800702C0; // type:function size:0x18 +BoardWinWait = .text:0x800702D8; // type:function size:0x50 +BoardWinKill = .text:0x80070328; // type:function size:0x38 +BoardWinAttrSet = .text:0x80070360; // type:function size:0x48 +BoardWinAttrReset = .text:0x800703A8; // type:function size:0x48 +BoardWinChoiceDisable = .text:0x800703F0; // type:function size:0x1C +BoardWinKeyWait = .text:0x8007040C; // type:function size:0xC +BoardWinSpeedGet = .text:0x80070418; // type:function size:0x64 +BoardWinSpeedSet = .text:0x8007047C; // type:function size:0x50 +BoardWinChoiceNowGet = .text:0x800704CC; // type:function size:0x38 +BoardWinPriSet = .text:0x80070504; // type:function size:0x44 +BoardWinChoiceNowGet2 = .text:0x80070548; // type:function size:0x38 +BoardWinPortraitGet = .text:0x80070580; // type:function size:0x38 +BoardWinPortraitGetStar = .text:0x800705B8; // type:function size:0x38 +BoardWinPlayerSet = .text:0x800705F0; // type:function size:0x168 +BoardWinStartComKeySet = .text:0x80070758; // type:function size:0x214 +BoardWinComKeyFuncSet = .text:0x8007096C; // type:function size:0x8 +BoardMusStartBoard = .text:0x80070974; // type:function size:0x68 +BoardMusStart = .text:0x800709DC; // type:function size:0xD0 +BoardAudSeqFadeOutFast = .text:0x80070AAC; // type:function size:0x2C +BoardAudSeqFadeOut = .text:0x80070AD8; // type:function size:0x60 +BoardMusLoudSet = .text:0x80070B38; // type:function size:0x5C +BoardMusVolPanSet = .text:0x80070B94; // type:function size:0x90 +BoardAudSeqPause = .text:0x80070C24; // type:function size:0x94 +BoardMusStatusGet = .text:0x80070CB8; // type:function size:0x54 +BoardAudSeqClear = .text:0x80070D0C; // type:function size:0x50 +BoardAudSeqFadeOutAll = .text:0x80070D5C; // type:function size:0x74 +BoardAudFXPlay = .text:0x80070DD0; // type:function size:0x78 +BoardAudFXStop = .text:0x80070E48; // type:function size:0x38 +ExecComKeyLeft = .text:0x80070E80; // type:function size:0x38 scope:local +BoardComKeySetLeft = .text:0x80070EB8; // type:function size:0x28 +ExecComKeyRight = .text:0x80070EE0; // type:function size:0x38 scope:local +BoardComKeySetRight = .text:0x80070F18; // type:function size:0x28 +ExecComKeyUp = .text:0x80070F40; // type:function size:0x38 scope:local +BoardComKeySetUp = .text:0x80070F78; // type:function size:0x28 +ExecComKeyDown = .text:0x80070FA0; // type:function size:0x38 scope:local +BoardComKeySetDown = .text:0x80070FD8; // type:function size:0x28 +ExecComKey = .text:0x80071000; // type:function size:0xE8 +BoardComPreferItemGet = .text:0x800710E8; // type:function size:0x100 +BoardComPreferItemCheck = .text:0x800711E8; // type:function size:0x120 +BoardComItemWeightGet = .text:0x80071308; // type:function size:0x74 +BoardComUseItemSlotGet = .text:0x8007137C; // type:function size:0xD0 +BoardComUseItemSet = .text:0x8007144C; // type:function size:0x6C +BoardComUseItemCheck = .text:0x800714B8; // type:function size:0x68 +ChooseUseItem = .text:0x80071520; // type:function size:0x16C scope:local +CheckMiniUse = .text:0x8007168C; // type:function size:0x220 scope:local +CheckMegaUse = .text:0x800718AC; // type:function size:0x248 scope:local +CheckSparkUse = .text:0x80071AF4; // type:function size:0x158 scope:local +CheckBoardChangeUse = .text:0x80071C4C; // type:function size:0x314 scope:local +CheckSwapUse = .text:0x80071F60; // type:function size:0x198 scope:local +CheckBooUse = .text:0x800720F8; // type:function size:0x7C scope:local +CheckLampUse = .text:0x80072174; // type:function size:0x74 scope:local +BoardComJunctionInputGet = .text:0x800721E8; // type:function size:0x304 +BoardComFarPlayerFind = .text:0x800724EC; // type:function size:0xA8 +BoardViewOverheadExec = .text:0x80072594; // type:function size:0x134 +BoardViewFocusGetPos = .text:0x800726C8; // type:function size:0x3C +BoardViewFocusSet = .text:0x80072704; // type:function size:0xF0 +BoardViewMoveStart = .text:0x800727F4; // type:function size:0x128 +BoardViewMoveCheck = .text:0x8007291C; // type:function size:0x34 +BoardViewMoveEnd = .text:0x80072950; // type:function size:0xC +BoardViewWait = .text:0x8007295C; // type:function size:0x3C +BoardViewMapExec = .text:0x80072998; // type:function size:0xC8 +ExecMapView = .text:0x80072A60; // type:function size:0x398 scope:local +ExecStarView = .text:0x80072DF8; // type:function size:0x170 scope:local +ExecOverheadView = .text:0x80072F68; // type:function size:0x158 scope:local +DestroyView = .text:0x800730C0; // type:function size:0x80 scope:local +SetTargetView = .text:0x80073140; // type:function size:0x178 scope:local +DestroyFocus = .text:0x800732B8; // type:function size:0x4C scope:local +CreateButtonWin = .text:0x80073304; // type:function size:0xE0 scope:local +DestroyButtonWin = .text:0x800733E4; // type:function size:0x38 scope:local +InitOverheadView = .text:0x8007341C; // type:function size:0x374 scope:local +DestroyOverheadView = .text:0x80073790; // type:function size:0x24 scope:local +UpdateOverheadView = .text:0x800737B4; // type:function size:0x400 scope:local +WaitOverheadView = .text:0x80073BB4; // type:function size:0x30 scope:local +BoardSpaceWalkEventFuncSet = .text:0x80073BE4; // type:function size:0x8 +BoardSpaceWalkMiniEventFuncSet = .text:0x80073BEC; // type:function size:0x8 +BoardSpaceLandEventFuncSet = .text:0x80073BF4; // type:function size:0x8 +BoardSpaceWalkEventExec = .text:0x80073BFC; // type:function size:0x48 +BoardSpaceWalkMiniEventExec = .text:0x80073C44; // type:function size:0x60 +BoardSpaceCountGet = .text:0x80073CA4; // type:function size:0x10 +BoardSpaceGet = .text:0x80073CB4; // type:function size:0x44 +BoardSpaceAttrSet = .text:0x80073CF8; // type:function size:0x18 +BoardSpaceAttrReset = .text:0x80073D10; // type:function size:0x18 +BoardSpaceFlagGet = .text:0x80073D28; // type:function size:0x48 +BoardSpaceTypeGet = .text:0x80073D70; // type:function size:0x48 +BoardSpaceTypeSet = .text:0x80073DB8; // type:function size:0x48 +BoardSpacePosGet = .text:0x80073E00; // type:function size:0x8C +BoardSpaceCornerPosGet = .text:0x80073E8C; // type:function size:0x2C8 +BoardSpaceRotGet = .text:0x80074154; // type:function size:0x8C +BoardSpaceFlagSearch = .text:0x800741E0; // type:function size:0xA0 +BoardSpaceFlagPosGet = .text:0x80074280; // type:function size:0x134 +BoardSpaceLinkFlagSearch = .text:0x800743B4; // type:function size:0x134 +BoardSpaceLinkTypeListGet = .text:0x800744E8; // type:function size:0x148 +BoardSpaceLinkTargetListGet = .text:0x80074630; // type:function size:0x104 +BoardSpaceLinkTypeSearch = .text:0x80074734; // type:function size:0x110 +BoardSpaceLinkTransformGet = .text:0x80074844; // type:function size:0x1FC +BoardSpaceHostSet = .text:0x80074A40; // type:function size:0x1BC +BoardSpaceStarSetIndex = .text:0x80074BFC; // type:function size:0x4AC +BoardSpaceStarGetNext = .text:0x800750A8; // type:function size:0x344 +BoardSpaceStarGetRandom = .text:0x800753EC; // type:function size:0x9C +BoardSpaceStarMove = .text:0x80075488; // type:function size:0xF0 +BoardSpaceStarGet = .text:0x80075578; // type:function size:0x1C +BoardSpaceStarGetCurr = .text:0x80075594; // type:function size:0x3C +BoardSpaceStarCheck = .text:0x800755D0; // type:function size:0x110 +BoardSpaceLandExec = .text:0x800756E0; // type:function size:0x474 +BoardSpaceWalkExec = .text:0x80075B54; // type:function size:0x2A4 +BoardSpaceBlockExec = .text:0x80075DF8; // type:function size:0x180 +ExecPipeSpace = .text:0x80075F78; // type:function size:0x268 scope:local +BoardSpaceTypeForce = .text:0x800761E0; // type:function size:0x5C +BoardSpaceHide = .text:0x8007623C; // type:function size:0x48 +DrawSpaces = .text:0x80076284; // type:function size:0x9E8 scope:local +BoardSpaceRead = .text:0x80076C6C; // type:function size:0x174 +BoardSpaceCameraSet = .text:0x80076DE0; // type:function size:0x2C +BoardSpaceBlockPosSet = .text:0x80076E0C; // type:function size:0xD0 +BoardSpaceInit = .text:0x80076EDC; // type:function size:0x750 +BoardSpaceDestroy = .text:0x8007762C; // type:function size:0x70 +BoardShopHostSet = .text:0x8007769C; // type:function size:0x8 +BoardShopHostGet = .text:0x800776A4; // type:function size:0x8 +BoardShopInit = .text:0x800776AC; // type:function size:0xD4 +BoardShopKill = .text:0x80077780; // type:function size:0xA0 +BoardShopExec = .text:0x80077820; // type:function size:0x9C +ExecShop = .text:0x800778BC; // type:function size:0x800 scope:local +DestroyShop = .text:0x800780BC; // type:function size:0xD4 scope:local +PopupShop = .text:0x80078190; // type:function size:0x1B4 scope:local +CloseShop = .text:0x80078344; // type:function size:0xBC scope:local +CreateShopWin = .text:0x80078400; // type:function size:0x13C scope:local +UpdateShopWin = .text:0x8007853C; // type:function size:0x314 scope:local +SetShopWinItem = .text:0x80078850; // type:function size:0x168 scope:local +PauseShopWin = .text:0x800789B8; // type:function size:0x2C scope:local +fn_800789E4 = .text:0x800789E4; // type:function size:0x18C scope:local +ExecItemGive = .text:0x80078B70; // type:function size:0x168 scope:local +MoveItemGive = .text:0x80078CD8; // type:function size:0x34C scope:local +ShrinkItemGive = .text:0x80079024; // type:function size:0x144 scope:local +fn_80079168 = .text:0x80079168; // type:function size:0x6C scope:local +GetShopItems = .text:0x800791D4; // type:function size:0x280 scope:local +GetDefaultShopItems = .text:0x80079454; // type:function size:0xA0 scope:local +SortShopItems = .text:0x800794F4; // type:function size:0x14C scope:local +DecideComEnter = .text:0x80079640; // type:function size:0x1C8 scope:local +DecideComBuy = .text:0x80079808; // type:function size:0x60 scope:local +GetComItemChoice = .text:0x80079868; // type:function size:0x158 scope:local +WaitItemChoice = .text:0x800799C0; // type:function size:0x30 scope:local +CreateShopItemChoice = .text:0x800799F0; // type:function size:0x188 scope:local +GetShopItemChoice = .text:0x80079B78; // type:function size:0xC scope:local +GetShopItemWinChoice = .text:0x80079B84; // type:function size:0x38 scope:local +MoveShopItemChoice = .text:0x80079BBC; // type:function size:0x260 scope:local +UpdateShopItemChoice = .text:0x80079E1C; // type:function size:0x104 scope:local +GetShopItemChoiceInput = .text:0x80079F20; // type:function size:0x30 scope:local +BoardShopTutorialExec = .text:0x80079F50; // type:function size:0x4DC +BoardLotteryHostSet = .text:0x8007A42C; // type:function size:0x8 +BoardLotteryHostGet = .text:0x8007A434; // type:function size:0x8 +BoardLotteryExec = .text:0x8007A43C; // type:function size:0x8C +BoardLotteryInit = .text:0x8007A4C8; // type:function size:0x16C +CreateModel = .text:0x8007A634; // type:function size:0x3B4 scope:local +KillModel = .text:0x8007A9E8; // type:function size:0x1FC scope:local +BoardLotteryKill = .text:0x8007ABE4; // type:function size:0x64 +DestroyLottery = .text:0x8007AC48; // type:function size:0xB0 scope:local +ExecLottery = .text:0x8007ACF8; // type:function size:0x798 scope:local +DoMiniJumpUp = .text:0x8007B490; // type:function size:0x20C scope:local +DoMiniJumpDown = .text:0x8007B69C; // type:function size:0x1BC scope:local +PayEnterFee = .text:0x8007B858; // type:function size:0xF0 scope:local +ShowTicket = .text:0x8007B948; // type:function size:0x3C8 scope:local +SetupTicket = .text:0x8007BD10; // type:function size:0x140 scope:local +ExecBallGame = .text:0x8007BE50; // type:function size:0x914 scope:local +SetBallPrize = .text:0x8007C764; // type:function size:0xC8 scope:local +ExecBallPrize = .text:0x8007C82C; // type:function size:0x27C scope:local +ExecScratchTicket = .text:0x8007CAA8; // type:function size:0x30C scope:local +ExecScratch = .text:0x8007CDB4; // type:function size:0x3AC scope:local +KillScratch = .text:0x8007D160; // type:function size:0x6C scope:local +ExecScratchSpr = .text:0x8007D1CC; // type:function size:0x21C scope:local +HideScratchSpr = .text:0x8007D3E8; // type:function size:0x68 scope:local +InitScratchSpr = .text:0x8007D450; // type:function size:0x288 scope:local +ExecScratchPick = .text:0x8007D6D8; // type:function size:0x3DC scope:local +InitScratchPick = .text:0x8007DAB4; // type:function size:0x14C scope:local +InitTicketPrizes = .text:0x8007DC00; // type:function size:0xD0 scope:local +ExecTicketFocus = .text:0x8007DCD0; // type:function size:0x160 scope:local +ScratchTicketCheckDone = .text:0x8007DE30; // type:function size:0xA8 scope:local +TicketGetPixel = .text:0x8007DED8; // type:function size:0x84 scope:local +TicketUpdate = .text:0x8007DF5C; // type:function size:0x6B0 scope:local +ExecCoinPrize = .text:0x8007E60C; // type:function size:0x440 scope:local +ExecItemPrize = .text:0x8007EA4C; // type:function size:0x338 scope:local +KillCoin = .text:0x8007ED84; // type:function size:0x68 scope:local +ExecPrize = .text:0x8007EDEC; // type:function size:0x4C0 scope:local +ExecLose = .text:0x8007F2AC; // type:function size:0xA4 scope:local +CreateLotteryWin = .text:0x8007F350; // type:function size:0xFC scope:local +KillLotteryWin = .text:0x8007F44C; // type:function size:0x38 scope:local +BoardLotteryTutorialExec = .text:0x8007F484; // type:function size:0x2BC +BoardLandBlueExec = .text:0x8007F740; // type:function size:0x184 +BoardLandRedExec = .text:0x8007F8C4; // type:function size:0x19C +BoardCoinChgCreate = .text:0x8007FA60; // type:function size:0x1E8 +BoardCoinChgExist = .text:0x8007FC48; // type:function size:0x6C +BoardCoinChgHide = .text:0x8007FCB4; // type:function size:0x60 +CreateCoinChg = .text:0x8007FD14; // type:function size:0x23C scope:local +UpdateCoinChg = .text:0x8007FF50; // type:function size:0x198 scope:local +CoinChgAppear = .text:0x800800E8; // type:function size:0x1B8 scope:local +CoinChgSeparate = .text:0x800802A0; // type:function size:0x29C scope:local +CoinChgShow = .text:0x8008053C; // type:function size:0x1A8 scope:local +CoinChgDisappear = .text:0x800806E4; // type:function size:0x260 scope:local +BoardWarpExec = .text:0x80080944; // type:function size:0xA4 +WarpProcess = .text:0x800809E8; // type:function size:0x250 scope:local +WarpKill = .text:0x80080C38; // type:function size:0x5C scope:local +WarpInit = .text:0x80080C94; // type:function size:0x118 scope:local +WarpLaunch = .text:0x80080DAC; // type:function size:0xBC scope:local +WarpStartImpact = .text:0x80080E68; // type:function size:0x1B0 scope:local +WarpFall = .text:0x80081018; // type:function size:0xA4 scope:local +WarpImpact = .text:0x800810BC; // type:function size:0x200 scope:local +BoardCharWheelInit = .text:0x800812BC; // type:function size:0x11C +BoardCharWheelCheck = .text:0x800813D8; // type:function size:0x34 +BoardCharWheelWait = .text:0x8008140C; // type:function size:0x50 +BoardCharWheelResultGet = .text:0x8008145C; // type:function size:0x18 +BoardCharWheelSpeedSet = .text:0x80081474; // type:function size:0x1C +ExecCharWheel = .text:0x80081490; // type:function size:0xFC scope:local +InitCharWheel = .text:0x8008158C; // type:function size:0x754 scope:local +UpdateCharWheel = .text:0x80081CE0; // type:function size:0x314 scope:local +StopCharWheel = .text:0x80081FF4; // type:function size:0x164 scope:local +GrowCharWheel = .text:0x80082158; // type:function size:0x120 scope:local +ShrinkCharWheel = .text:0x80082278; // type:function size:0x10C scope:local +KillCharWheelSpr = .text:0x80082384; // type:function size:0x38 scope:local +SetCharWheelChars = .text:0x800823BC; // type:function size:0xBC scope:local +GetInput = .text:0x80082478; // type:function size:0x224 scope:local +BoardCharWheelTargetSet = .text:0x8008269C; // type:function size:0x10 +GetComDelay = .text:0x800826AC; // type:function size:0x148 scope:local +GetComInput = .text:0x800827F4; // type:function size:0x8C scope:local +BoardMushroomExec = .text:0x80082880; // type:function size:0xA4 +MushroomMain = .text:0x80082924; // type:function size:0x38C scope:local +KillMushroom = .text:0x80082CB0; // type:function size:0x58 scope:local +BoxMain = .text:0x80082D08; // type:function size:0x118 scope:local +ShowBox = .text:0x80082E20; // type:function size:0x114 scope:local +ExitBox = .text:0x80082F34; // type:function size:0x160 scope:local +HideBox = .text:0x80083094; // type:function size:0x68 scope:local +CenterBox = .text:0x800830FC; // type:function size:0xD4 scope:local +InitBox = .text:0x800831D0; // type:function size:0x2EC scope:local +MarkKillBox = .text:0x800834BC; // type:function size:0x64 scope:local +SetBoxHide = .text:0x80083520; // type:function size:0x34 scope:local +SetBoxCenter = .text:0x80083554; // type:function size:0x54 scope:local +SetBoxShow = .text:0x800835A8; // type:function size:0x34 scope:local +WaitBoxOpen = .text:0x800835DC; // type:function size:0x5C scope:local +WaitBoxCenter = .text:0x80083638; // type:function size:0x58 scope:local +CheckBox = .text:0x80083690; // type:function size:0x60 scope:local +DoItemGive = .text:0x800836F0; // type:function size:0x240 scope:local +StartItemGive = .text:0x80083930; // type:function size:0xD4 scope:local +KillItemMdl = .text:0x80083A04; // type:function size:0x38 scope:local +ShowItemMdl = .text:0x80083A3C; // type:function size:0x48 scope:local +WaitItemGive = .text:0x80083A84; // type:function size:0x48 scope:local +BoardStarHostSet = .text:0x80083ACC; // type:function size:0xA8 +BoardStarHostMdlGet = .text:0x80083B74; // type:function size:0x8 +BoardStarExec = .text:0x80083B7C; // type:function size:0xCC +ExecStar = .text:0x80083C48; // type:function size:0x8F4 scope:local +DestroyStar = .text:0x8008453C; // type:function size:0x84 scope:local +GiveStarMain = .text:0x800845C0; // type:function size:0x160 scope:local +UpdateStarAngle = .text:0x80084720; // type:function size:0x144 scope:local +InitGiveStar = .text:0x80084864; // type:function size:0x10C scope:local +MoveGiveStar = .text:0x80084970; // type:function size:0x180 scope:local +ShrinkGiveStar = .text:0x80084AF0; // type:function size:0x204 scope:local +StopGiveStar = .text:0x80084CF4; // type:function size:0x38 scope:local +InitGiveStarEffect = .text:0x80084D2C; // type:function size:0xB4 scope:local +KillGiveStarEffect = .text:0x80084DE0; // type:function size:0x40 scope:local +BoardStarGive = .text:0x80084E20; // type:function size:0x31C +BoardStarShowNext = .text:0x8008513C; // type:function size:0x628 +ShowNextUpdate = .text:0x80085764; // type:function size:0x130 scope:local +HideNextHost = .text:0x80085894; // type:function size:0x24 scope:local +BoardRollExec = .text:0x800858B8; // type:function size:0x1EC +BoardRollKill = .text:0x80085AA4; // type:function size:0x38 +BoardRollUPauseSet = .text:0x80085ADC; // type:function size:0x84 +BoardRollWinDispSet = .text:0x80085B60; // type:function size:0x4C +RollMain = .text:0x80085BAC; // type:function size:0x490 scope:local +DiceCreate = .text:0x8008603C; // type:function size:0x280 scope:local +DoInput = .text:0x800862BC; // type:function size:0x1C8 scope:local +DiceWaitFull = .text:0x80086484; // type:function size:0x60 scope:local +DiceSetHit = .text:0x800864E4; // type:function size:0x130 scope:local +RollDestroy = .text:0x80086614; // type:function size:0x60 scope:local +DiceMain = .text:0x80086674; // type:function size:0x7E4 scope:local +DicePause = .text:0x80086E58; // type:function size:0x40 scope:local +DicePauseAll = .text:0x80086E98; // type:function size:0x90 scope:local +BoardDiceEffectCreate = .text:0x80086F28; // type:function size:0xE0 +DiceHideEffect = .text:0x80087008; // type:function size:0x84 scope:local +BoardDicePauseAll = .text:0x8008708C; // type:function size:0x94 +BoardDiceDoneCheck = .text:0x80087120; // type:function size:0x8C +BoardDiceStop = .text:0x800871AC; // type:function size:0x58 +BoardDiceVisibleSet = .text:0x80087204; // type:function size:0xC0 +BoardDiceValueSet = .text:0x800872C4; // type:function size:0x200 +DiceDigitMain = .text:0x800874C4; // type:function size:0xAC scope:local +DiceDigitKill = .text:0x80087570; // type:function size:0x68 scope:local +DiceKill = .text:0x800875D8; // type:function size:0xB4 scope:local +DiceDigitMove = .text:0x8008768C; // type:function size:0x390 scope:local +DiceDigitRotate = .text:0x80087A1C; // type:function size:0x110 scope:local +SameRollExec = .text:0x80087B2C; // type:function size:0x248 scope:local +GetBtnRoll = .text:0x80087D74; // type:function size:0x110 scope:local +GetComBtnRoll = .text:0x80087E84; // type:function size:0x88 scope:local +BoardRollTutorialSet = .text:0x80087F0C; // type:function size:0x4C +BoardItemModelGet = .text:0x80087F58; // type:function size:0x90 +BoardItemNameGet = .text:0x80087FE8; // type:function size:0x98 +BoardStatusStopCheck = .text:0x80088080; // type:function size:0x48 +BoardStatusVisibleGet = .text:0x800880C8; // type:function size:0x1C +BoardStatusShowSetAll = .text:0x800880E4; // type:function size:0x48 +BoardStatusItemSet = .text:0x8008812C; // type:function size:0xFC +BoardStatusShowSetForce = .text:0x80088228; // type:function size:0x24 +BoardStatusGraySet = .text:0x8008824C; // type:function size:0x134 +BoardStatusShowSet = .text:0x80088380; // type:function size:0x138 +BoardStatusItemHideSet = .text:0x800884B8; // type:function size:0x50 +BoardStatusTargetPosSet = .text:0x80088508; // type:function size:0x44 +BoardStatusPosGet = .text:0x8008854C; // type:function size:0x34 +BoardStatusPosSet = .text:0x80088580; // type:function size:0x6C +BoardStatusHammerCreate = .text:0x800885EC; // type:function size:0x158 +BoardStatusHammerShowSet = .text:0x80088744; // type:function size:0x94 +BoardStatusHammerKill = .text:0x800887D8; // type:function size:0x6C +BoardStatusKill = .text:0x80088844; // type:function size:0x90 +BoardStatusCreate = .text:0x800888D4; // type:function size:0x20C +KillAllBoardStatus = .text:0x80088AE0; // type:function size:0x98 scope:local +CreateBoardStatusSprite = .text:0x80088B78; // type:function size:0x36C scope:local +BoardSpriteCreate = .text:0x80088EE4; // type:function size:0x8C +UpdateBoardStatus = .text:0x80088F70; // type:function size:0x210 scope:local +BoardStatusProc = .text:0x80089180; // type:function size:0x40 scope:local +MoveBoardStatus = .text:0x800891C0; // type:function size:0x180 scope:local +BoardSpriteDigitUpdate = .text:0x80089340; // type:function size:0x140 +UpdateStatusItem = .text:0x80089480; // type:function size:0xB8 scope:local +BoardPickerCreate = .text:0x80089538; // type:function size:0x29C +BoardPickerBackFlagSet = .text:0x800897D4; // type:function size:0x74 +BoardPickerDoneCheck = .text:0x80089848; // type:function size:0x1C +BoardPickerPosGet = .text:0x80089864; // type:function size:0x48 +BoardPickerChoiceGet = .text:0x800898AC; // type:function size:0xC +UpdatePicker = .text:0x800898B8; // type:function size:0xFC scope:local +UpdatePickerInput = .text:0x800899B4; // type:function size:0x15C scope:local +MovePicker = .text:0x80089B10; // type:function size:0x110 scope:local +UpdateComPickerButton = .text:0x80089C20; // type:function size:0x30 scope:local +CheckPickerButton = .text:0x80089C50; // type:function size:0x19C scope:local +BoardYourTurnExec = .text:0x80089DEC; // type:function size:0x1E4 +UpdateYourTurn = .text:0x80089FD0; // type:function size:0xD4 scope:local +GrowYourTurn = .text:0x8008A0A4; // type:function size:0xD8 scope:local +WaitYourTurn = .text:0x8008A17C; // type:function size:0xEC scope:local +ShrinkYourTurn = .text:0x8008A268; // type:function size:0xC8 scope:local +BoardItemUseExec = .text:0x8008A330; // type:function size:0x80 +ItemUseTeamProc = .text:0x8008A3B0; // type:function size:0x4A8 scope:local +ItemUseProc = .text:0x8008A858; // type:function size:0x370 scope:local +FinishItemUse = .text:0x8008ABC8; // type:function size:0x174 scope:local +DestroyItemUse = .text:0x8008AD3C; // type:function size:0x78 scope:local +BoardMakeRandomItem = .text:0x8008ADB4; // type:function size:0x74 +TeamItemPosSet = .text:0x8008AE28; // type:function size:0xE8 scope:local +ExecItemPick = .text:0x8008AF10; // type:function size:0x650 scope:local +UpdateItemPick = .text:0x8008B560; // type:function size:0x3AC scope:local +MakeItemPickSpace = .text:0x8008B90C; // type:function size:0x420 scope:local +SetItemUIStatus = .text:0x8008BD2C; // type:function size:0x248 scope:local +BoardItemGetDestPos = .text:0x8008BF74; // type:function size:0xA8 +ItemGetPos = .text:0x8008C01C; // type:function size:0x104 scope:local +BoardItemStatusKill = .text:0x8008C120; // type:function size:0x400 +UpdateItemPickGfx = .text:0x8008C520; // type:function size:0x388 scope:local +UpdateItemPickup = .text:0x8008C8A8; // type:function size:0x674 scope:local +CheckItemWindow = .text:0x8008CF1C; // type:function size:0x50 scope:local +HideItemWindow = .text:0x8008CF6C; // type:function size:0x38 scope:local +CreateItemWindow = .text:0x8008CFA4; // type:function size:0x5A4 scope:local +CheckItemWindowSlide = .text:0x8008D548; // type:function size:0x58 scope:local +KillItemWindow = .text:0x8008D5A0; // type:function size:0x38 scope:local +SetItemWindowCurr = .text:0x8008D5D8; // type:function size:0xA4 scope:local +UpdateItemWindow = .text:0x8008D67C; // type:function size:0x350 scope:local +CreatePickerWindow = .text:0x8008D9CC; // type:function size:0x148 scope:local +KillPickerWindow = .text:0x8008DB14; // type:function size:0x44 scope:local +BoardBlockExec = .text:0x8008DB58; // type:function size:0x84 +BlockProc = .text:0x8008DBDC; // type:function size:0x358 scope:local +DestroyBlock = .text:0x8008DF34; // type:function size:0x54 scope:local +CreateBlockObj = .text:0x8008DF88; // type:function size:0x1F4 scope:local +ExecBlockObj = .text:0x8008E17C; // type:function size:0x12C scope:local +DestroyBlockObj = .text:0x8008E2A8; // type:function size:0x38 scope:local +SpawnBlock = .text:0x8008E2E0; // type:function size:0x120 scope:local +HitBlock = .text:0x8008E400; // type:function size:0xCC scope:local +OpenBlock = .text:0x8008E4CC; // type:function size:0x140 scope:local +SetBlockOpen = .text:0x8008E60C; // type:function size:0x2C scope:local +SetBlockStop = .text:0x8008E638; // type:function size:0x2C scope:local +WaitBlockHit = .text:0x8008E664; // type:function size:0x48 scope:local +CreateCoinMdl = .text:0x8008E6AC; // type:function size:0x94 scope:local +KillCoinMdl = .text:0x8008E740; // type:function size:0x9C scope:local +PopupCoin = .text:0x8008E7DC; // type:function size:0x10C scope:local +PopupCoinExec = .text:0x8008E8E8; // type:function size:0x130 scope:local +BoardItemStart = .text:0x8008EA18; // type:function size:0x74 +BoardItemDoneCheck = .text:0x8008EA8C; // type:function size:0x1C +BoardItemPlayerRestore = .text:0x8008EAA8; // type:function size:0x6C +ItemProcess = .text:0x8008EB14; // type:function size:0x64 scope:local +RestoreProcess = .text:0x8008EB78; // type:function size:0x64 scope:local +ItemDestroy = .text:0x8008EBDC; // type:function size:0xC scope:local +RestoreDestroy = .text:0x8008EBE8; // type:function size:0xC scope:local +ItemSizeShowAnim = .text:0x8008EBF4; // type:function size:0x180 scope:local +ItemRotProc = .text:0x8008ED74; // type:function size:0x1BC scope:local +ItemShowProc = .text:0x8008EF30; // type:function size:0x220 scope:local +ItemGetTarget = .text:0x8008F150; // type:function size:0x374 scope:local +ItemSizeSet = .text:0x8008F4C4; // type:function size:0x204 scope:local +ExecItemMini = .text:0x8008F6C8; // type:function size:0xA4 scope:local +ExecItemMega = .text:0x8008F76C; // type:function size:0xA4 scope:local +ExecItemMiniSuper = .text:0x8008F810; // type:function size:0xA4 scope:local +ExecItemMegaSuper = .text:0x8008F8B4; // type:function size:0xA4 scope:local +ExecItemHammer = .text:0x8008F958; // type:function size:0x584 scope:local +ExecItemPipe = .text:0x8008FEDC; // type:function size:0xD34 scope:local +ExecItemSwap = .text:0x80090C10; // type:function size:0xEBC scope:local +ExecItemSpark = .text:0x80091ACC; // type:function size:0x4FC scope:local +ExecItemLight = .text:0x80091FC8; // type:function size:0xC8 scope:local +ExecItemWhistle = .text:0x80092090; // type:function size:0xE3C scope:local +ExecItemBowser = .text:0x80092ECC; // type:function size:0x3D4 scope:local +ExecItemBooBall = .text:0x800932A0; // type:function size:0x1370 scope:local +LampParticleUpdate = .text:0x80094610; // type:function size:0x488 scope:local +GenieParticleUpdate = .text:0x80094A98; // type:function size:0x388 scope:local +GenieCameraProc = .text:0x80094E20; // type:function size:0xB0 scope:local +GenieCameraCalc = .text:0x80094ED0; // type:function size:0x7A4 scope:local +GenieSceneExec = .text:0x80095674; // type:function size:0x9D8 scope:local +ExecItemGenie = .text:0x8009604C; // type:function size:0x628 scope:local +BoardItemBagItemSet = .text:0x80096674; // type:function size:0x3C +ExecItemBagJump = .text:0x800966B0; // type:function size:0x13C scope:local +ExecItemBagShow = .text:0x800967EC; // type:function size:0xDC scope:local +ExecItemBag = .text:0x800968C8; // type:function size:0x584 scope:local +RestoreItemNull = .text:0x80096E4C; // type:function size:0x1C scope:local +RestoreItemMini = .text:0x80096E68; // type:function size:0x2C scope:local +RestoreItemMega = .text:0x80096E94; // type:function size:0x2C scope:local +RestoreItemMiniSuper = .text:0x80096EC0; // type:function size:0x2C scope:local +RestoreItemMegaSuper = .text:0x80096EEC; // type:function size:0x2C scope:local +RestoreItemBowser = .text:0x80096F18; // type:function size:0x284 scope:local +BoardBowserExec = .text:0x8009719C; // type:function size:0x144 +ExecBowser = .text:0x800972E0; // type:function size:0x28C scope:local +ExecBowserMain = .text:0x8009756C; // type:function size:0x208 scope:local +ExecMGReturn = .text:0x80097774; // type:function size:0x1DC scope:local +DestroyBowser = .text:0x80097950; // type:function size:0x30 scope:local +SquishPlayers = .text:0x80097980; // type:function size:0x148 scope:local +ExecBowserSpecial = .text:0x80097AC8; // type:function size:0x1B4 scope:local +ExecBowserGame = .text:0x80097C7C; // type:function size:0x250 scope:local +DoMGReturnEffect = .text:0x80097ECC; // type:function size:0x220 scope:local +ExecBowserShuffle = .text:0x800980EC; // type:function size:0x2B0 scope:local +ExecBowserRevo = .text:0x8009839C; // type:function size:0x160 scope:local +ExecBowserSuit = .text:0x800984FC; // type:function size:0xB8 scope:local +CheckSuitGive = .text:0x800985B4; // type:function size:0x1C scope:local +StartSuitGive = .text:0x800985D0; // type:function size:0x148 scope:local +SuitGiveMain = .text:0x80098718; // type:function size:0x210 scope:local +CreateBowserObj = .text:0x80098928; // type:function size:0x228 scope:local +ExecBowserObj = .text:0x80098B50; // type:function size:0x230 scope:local +ExecBowserFall = .text:0x80098D80; // type:function size:0x270 scope:local +ExecBowserLaugh = .text:0x80098FF0; // type:function size:0x58 scope:local +ExecBowserFire = .text:0x80099048; // type:function size:0x44 scope:local +ExecBowserJump = .text:0x8009908C; // type:function size:0x150 scope:local +ExecBowserPowerUp = .text:0x800991DC; // type:function size:0x128 scope:local +SetBowserState = .text:0x80099304; // type:function size:0x34 scope:local +CheckBowserIdle = .text:0x80099338; // type:function size:0x5C scope:local +CreateMiniBowser = .text:0x80099394; // type:function size:0xD4 scope:local +CheckMiniBowser = .text:0x80099468; // type:function size:0x1C scope:local +ExecMiniBowser = .text:0x80099484; // type:function size:0x18C scope:local +CreateBowserEvent = .text:0x80099610; // type:function size:0x1E8 scope:local +CheckBowserEvent = .text:0x800997F8; // type:function size:0x38 scope:local +StopBowserEvent = .text:0x80099830; // type:function size:0x24 scope:local +ExecBowserEvent = .text:0x80099854; // type:function size:0xEC scope:local +ShowBowserEvent = .text:0x80099940; // type:function size:0x1C8 scope:local +HideBowserEvent = .text:0x80099B08; // type:function size:0x108 scope:local +ConfigBowserEvent = .text:0x80099C10; // type:function size:0x160 scope:local +CreatePlayerMot = .text:0x80099D70; // type:function size:0x1AC scope:local +KillPlayerMot = .text:0x80099F1C; // type:function size:0xB8 scope:local +InitBowserFire = .text:0x80099FD4; // type:function size:0x90 scope:local +BowserFireHook = .text:0x8009A064; // type:function size:0x160 scope:local +SpawnBowserFire = .text:0x8009A1C4; // type:function size:0xE4 scope:local +CheckBowserFire = .text:0x8009A2A8; // type:function size:0xCC scope:local +KillBowserFire = .text:0x8009A374; // type:function size:0x40 scope:local +ExecMiniBowserEvent = .text:0x8009A3B4; // type:function size:0x188 scope:local +MiniBowserTake = .text:0x8009A53C; // type:function size:0x2C4 scope:local +MiniBowserTakeAll = .text:0x8009A800; // type:function size:0x2B8 scope:local +MiniBowserBalloonStop = .text:0x8009AAB8; // type:function size:0x24 scope:local +GetMiniBowserBalloonState = .text:0x8009AADC; // type:function size:0xC scope:local +SetMiniBowserBalloonState = .text:0x8009AAE8; // type:function size:0x10 scope:local +CreateMiniBowserBalloon = .text:0x8009AAF8; // type:function size:0x14C scope:local +ExecMiniBowserBalloon = .text:0x8009AC44; // type:function size:0x120 scope:local +MiniBowserBalloonHover = .text:0x8009AD64; // type:function size:0xB4 scope:local +MiniBowserBalloonFall = .text:0x8009AE18; // type:function size:0x88 scope:local +MiniBowserBalloonRaise = .text:0x8009AEA0; // type:function size:0x80 scope:local +SetMiniBowserMotion = .text:0x8009AF20; // type:function size:0xD8 scope:local +SetMiniBowserMotionPause = .text:0x8009AFF8; // type:function size:0x6C scope:local +WaitMiniBowserMotion = .text:0x8009B064; // type:function size:0x60 scope:local +BoardBattleExec = .text:0x8009B0C4; // type:function size:0x124 +DestroyBattle = .text:0x8009B1E8; // type:function size:0x2C scope:local +ExecBattle = .text:0x8009B214; // type:function size:0x708 scope:local +TakeCoins = .text:0x8009B91C; // type:function size:0x1D4 scope:local +InitExplode = .text:0x8009BAF0; // type:function size:0x1FC scope:local +CheckExplode = .text:0x8009BCEC; // type:function size:0x24 scope:local +UpdateExplode = .text:0x8009BD10; // type:function size:0x2D0 scope:local +CreateBattleMain = .text:0x8009BFE0; // type:function size:0x1E8 scope:local +UpdateBattleMain = .text:0x8009C1C8; // type:function size:0x1A0 scope:local +DescendBattleBomb = .text:0x8009C368; // type:function size:0x64 scope:local +EndBattle = .text:0x8009C3CC; // type:function size:0x88 scope:local +ShowBattleGame = .text:0x8009C454; // type:function size:0x124 scope:local +RaiseBattleGame = .text:0x8009C578; // type:function size:0x8C scope:local +UpdateBattleCoin = .text:0x8009C604; // type:function size:0x260 scope:local +ShowBattleCoin = .text:0x8009C864; // type:function size:0x128 scope:local +InitBattleGameSpr = .text:0x8009C98C; // type:function size:0x12C scope:local +HideBattleSpr = .text:0x8009CAB8; // type:function size:0x58 scope:local +VibratePad = .text:0x8009CB10; // type:function size:0x64 scope:local +StopBattleBomb = .text:0x8009CB74; // type:function size:0x24 scope:local +GetBattleBombState = .text:0x8009CB98; // type:function size:0x10 scope:local +SetBattleBombState = .text:0x8009CBA8; // type:function size:0x34 scope:local +SetBattleCoinValue = .text:0x8009CBDC; // type:function size:0x15C scope:local +BoardFortuneExec = .text:0x8009CD38; // type:function size:0x124 +FortuneExec = .text:0x8009CE5C; // type:function size:0x74 scope:local +DestroyFortune = .text:0x8009CED0; // type:function size:0xC scope:local +FortuneMain = .text:0x8009CEDC; // type:function size:0x340 scope:local +FortunePostMG = .text:0x8009D21C; // type:function size:0xF8 scope:local +CreateFortunePlatform = .text:0x8009D314; // type:function size:0x160 scope:local +CameraCalcFortune = .text:0x8009D474; // type:function size:0x5C scope:local +ExecFortunePlatform = .text:0x8009D4D0; // type:function size:0x198 scope:local +ExecComFortuneWin = .text:0x8009D668; // type:function size:0x18C scope:local +ConfigComFortune = .text:0x8009D7F4; // type:function size:0x20C scope:local +ComFortuneAddStar = .text:0x8009DA00; // type:function size:0x78 scope:local +ComFortuneAddCoin = .text:0x8009DA78; // type:function size:0x78 scope:local +ComFortuneSwapCoin = .text:0x8009DAF0; // type:function size:0x68 scope:local +ComFortuneSwapStar = .text:0x8009DB58; // type:function size:0x68 scope:local +BoardBooCreate = .text:0x8009DBC0; // type:function size:0x11C +BoardBooKill = .text:0x8009DCDC; // type:function size:0x2C +BoardBooStealTypeSet = .text:0x8009DD08; // type:function size:0x2A8 +ComSetupStealPlayer = .text:0x8009DFB0; // type:function size:0x1D4 scope:local +ComSetStealPlayerInput = .text:0x8009E184; // type:function size:0xE8 scope:local +BoardBooStealMain = .text:0x8009E26C; // type:function size:0x280 +fn_8009E4EC = .text:0x8009E4EC; // type:function size:0xC0 scope:local +fn_8009E5AC = .text:0x8009E5AC; // type:function size:0xA8 scope:local +ExecLightSteal = .text:0x8009E654; // type:function size:0x94 scope:local +SetBooMode = .text:0x8009E6E8; // type:function size:0x10 scope:local +CreateBallMdl = .text:0x8009E6F8; // type:function size:0xBC scope:local +CreateBallView = .text:0x8009E7B4; // type:function size:0x1D4 scope:local +SetBallView = .text:0x8009E988; // type:function size:0xAC scope:local +SetBallActive = .text:0x8009EA34; // type:function size:0x28 scope:local +CheckBallKill = .text:0x8009EA5C; // type:function size:0x4C scope:local +BallMain = .text:0x8009EAA8; // type:function size:0x300 scope:local +BallRenderHook = .text:0x8009EDA8; // type:function size:0x4A0 scope:local +ExecBoo = .text:0x8009F248; // type:function size:0x9C scope:local +UpdateBallCamera = .text:0x8009F2E4; // type:function size:0x1DC scope:local +CreateBallPlayer = .text:0x8009F4C0; // type:function size:0x358 scope:local +GetBallPlayerState = .text:0x8009F818; // type:function size:0x24 scope:local +SetBallPlayerState = .text:0x8009F83C; // type:function size:0x2C scope:local +ExecBallPlayer = .text:0x8009F868; // type:function size:0x214 scope:local +BallPlayerZoomOut = .text:0x8009FA7C; // type:function size:0x15C scope:local +BallPlayerScare = .text:0x8009FBD8; // type:function size:0x110 scope:local +BallPlayerTurn = .text:0x8009FCE8; // type:function size:0x68 scope:local +BallPlayerPunch = .text:0x8009FD50; // type:function size:0x1E0 scope:local +BallPlayerUseLight = .text:0x8009FF30; // type:function size:0x10C scope:local +BallPlayerCatch = .text:0x800A003C; // type:function size:0x190 scope:local +BallBooCreate = .text:0x800A01CC; // type:function size:0x328 scope:local +SetBallBooState = .text:0x800A04F4; // type:function size:0x170 scope:local +GetBallBooState = .text:0x800A0664; // type:function size:0x24 scope:local +ExecBallBoo = .text:0x800A0688; // type:function size:0x128 scope:local +BallBooSpawn = .text:0x800A07B0; // type:function size:0x54 scope:local +BallBooChase = .text:0x800A0804; // type:function size:0x104 scope:local +BallBooBattle = .text:0x800A0908; // type:function size:0x218 scope:local +BallBooAttack = .text:0x800A0B20; // type:function size:0xF4 scope:local +BallBooFlash = .text:0x800A0C14; // type:function size:0x178 scope:local +TakeBallCoin = .text:0x800A0D8C; // type:function size:0x1B0 scope:local +ExecTakeBallCoin = .text:0x800A0F3C; // type:function size:0xDC scope:local +TakeBallCoinPosSet = .text:0x800A1018; // type:function size:0x9C scope:local +CheckBallCoinDone = .text:0x800A10B4; // type:function size:0x68 +TakeBallStar = .text:0x800A111C; // type:function size:0x168 +ExecTakeBallStar = .text:0x800A1284; // type:function size:0x184 +CheckTakeBallStarDone = .text:0x800A1408; // type:function size:0x1C +BoardBooStealValueGet = .text:0x800A1424; // type:function size:0x30 +BoardBooStealLightCheck = .text:0x800A1454; // type:function size:0x20 +UpdatePlayerCoins = .text:0x800A1474; // type:function size:0x1B0 scope:local +BoardMGSetupExec = .text:0x800A1624; // type:function size:0x60 +DestroyMGSetup = .text:0x800A1684; // type:function size:0x1C scope:local +ExecMGSetup = .text:0x800A16A0; // type:function size:0x6FC scope:local +DetermineMGList = .text:0x800A1D9C; // type:function size:0x3B0 scope:local +SetupStatusLayout = .text:0x800A214C; // type:function size:0x3A8 scope:local +GetMGType = .text:0x800A24F4; // type:function size:0x388 scope:local +GetMGTypeTeam = .text:0x800A287C; // type:function size:0x3A4 scope:local +CreateMGSetup = .text:0x800A2C20; // type:function size:0x194 scope:local +UpdateMGSetup = .text:0x800A2DB4; // type:function size:0x198 scope:local +CenterStatus = .text:0x800A2F4C; // type:function size:0x174 scope:local +SeparateStatus = .text:0x800A30C0; // type:function size:0x200 scope:local +PopupVS = .text:0x800A32C0; // type:function size:0x20C scope:local +FallMGType = .text:0x800A34CC; // type:function size:0x1C8 scope:local +LuckyMGFall = .text:0x800A3694; // type:function size:0x204 scope:local +HideLuckyValue = .text:0x800A3898; // type:function size:0xA8 scope:local +UpdateLuckyValue = .text:0x800A3940; // type:function size:0x430 scope:local +UpdateMGList = .text:0x800A3D70; // type:function size:0x8FC scope:local +BoardMGSetupPlayClear = .text:0x800A466C; // type:function size:0x74 +BoardMGSetupPlaySearch = .text:0x800A46E0; // type:function size:0xC8 +BoardMGSetupPlayPush = .text:0x800A47A8; // type:function size:0xD0 +BoardMGSetupTutorialExec = .text:0x800A4878; // type:function size:0x2E4 +BoardBooHouseHostSet = .text:0x800A4B5C; // type:function size:0x8 +BoardBooHouseHostGet = .text:0x800A4B64; // type:function size:0x8 +BoardBooHouseCreate = .text:0x800A4B6C; // type:function size:0xB4 +BoardBooHouseKill = .text:0x800A4C20; // type:function size:0x50 +BoardBooHouseExec = .text:0x800A4C70; // type:function size:0x94 +ExecBooHouse = .text:0x800A4D04; // type:function size:0x538 scope:local +DestroyBooHouse = .text:0x800A523C; // type:function size:0xF0 scope:local +PickComStealType = .text:0x800A532C; // type:function size:0xFC scope:local +OpenBooHouse = .text:0x800A5428; // type:function size:0x3A0 scope:local +CloseBooHouse = .text:0x800A57C8; // type:function size:0x124 scope:local +CreateBooHouseModel = .text:0x800A58EC; // type:function size:0xB0 scope:local +KillBooHouseModel = .text:0x800A599C; // type:function size:0xD4 scope:local +ExecNullSteal = .text:0x800A5A70; // type:function size:0x68 scope:local +ExecStarSteal = .text:0x800A5AD8; // type:function size:0x2AC scope:local +ExecCoinSteal = .text:0x800A5D84; // type:function size:0x2AC scope:local +ApplySteal = .text:0x800A6030; // type:function size:0x188 scope:local +ApplyCoinSteal = .text:0x800A61B8; // type:function size:0x16C scope:local +ApplyStarSteal = .text:0x800A6324; // type:function size:0x164 scope:local +ApplyBooLight = .text:0x800A6488; // type:function size:0x70 scope:local +SetBooBallPos = .text:0x800A64F8; // type:function size:0x60 scope:local +BoardBooComUseCheck = .text:0x800A6558; // type:function size:0x1A8 +BoardBooHouseTutorialExec = .text:0x800A6700; // type:function size:0x3D4 +BoardStartExec = .text:0x800A6AD4; // type:function size:0x64 +DestroyStart = .text:0x800A6B38; // type:function size:0x84 scope:local +ExecStart = .text:0x800A6BBC; // type:function size:0x400 scope:local +ShowLogo = .text:0x800A6FBC; // type:function size:0x2FC scope:local +FocusStart = .text:0x800A72B8; // type:function size:0x17C scope:local +CreatePlayerStart = .text:0x800A7434; // type:function size:0x2D8 scope:local +ExecPlayerStart = .text:0x800A770C; // type:function size:0x188 scope:local +PlayerFall = .text:0x800A7894; // type:function size:0x1C8 scope:local +PlayerWaitSpeak = .text:0x800A7A5C; // type:function size:0xEC scope:local +PlayerDiceFall = .text:0x800A7B48; // type:function size:0x1A8 scope:local +PlayerDiceRoll = .text:0x800A7CF0; // type:function size:0x454 scope:local +PlayerDiceNumShow = .text:0x800A8144; // type:function size:0xD8 scope:local +PlayerDiceNumHide = .text:0x800A821C; // type:function size:0x250 scope:local +SetPlayerStartState = .text:0x800A846C; // type:function size:0xC8 scope:local +GetPlayerStartState = .text:0x800A8534; // type:function size:0x3C scope:local +ExecStartRoll = .text:0x800A8570; // type:function size:0x6D4 scope:local +InitCamera = .text:0x800A8C44; // type:function size:0x318 scope:local +fn_800A8F5C = .text:0x800A8F5C; // type:function size:0xA4 scope:local +CreateTapWin = .text:0x800A9000; // type:function size:0xDC scope:local +OrderPlayers = .text:0x800A90DC; // type:function size:0x21C scope:local +BoardLast5Exec = .text:0x800A92F8; // type:function size:0x84 +DestroyLast5 = .text:0x800A937C; // type:function size:0x30 scope:local +ExecLast5 = .text:0x800A93AC; // type:function size:0x1D4 scope:local +CreateLast5 = .text:0x800A9580; // type:function size:0x184 scope:local +KillLast5 = .text:0x800A9704; // type:function size:0x48 scope:local +InitHost = .text:0x800A974C; // type:function size:0x10C scope:local +KillHost = .text:0x800A9858; // type:function size:0xA4 scope:local +Last5Main = .text:0x800A98FC; // type:function size:0xCC0 scope:local +CheckJump = .text:0x800AA5BC; // type:function size:0xA4 scope:local +CreateLotteryDrawWheel = .text:0x800AA660; // type:function size:0x1FC scope:local +CreateLotteryDraw = .text:0x800AA85C; // type:function size:0xD4 scope:local +UpdateLotteryDraw = .text:0x800AA930; // type:function size:0x170 scope:local +SetLotteryDrawState = .text:0x800AAAA0; // type:function size:0x88 scope:local +GetLotteryDrawState = .text:0x800AAB28; // type:function size:0x20 scope:local +KillLotteryDrawWheel = .text:0x800AAB48; // type:function size:0x24 scope:local +UpdateLotteryDrawWheel = .text:0x800AAB6C; // type:function size:0x2D0 scope:local +SetLotteryDrawWheelState = .text:0x800AAE3C; // type:function size:0x1D8 scope:local +ExecLotteryDraw = .text:0x800AB014; // type:function size:0x950 scope:local +KillLotteryTicket = .text:0x800AB964; // type:function size:0x4C scope:local +InitLotteryTicket = .text:0x800AB9B0; // type:function size:0x488 scope:local +UpdateLotteryTicket = .text:0x800ABE38; // type:function size:0x2A4 scope:local +SetLotteryTicketState = .text:0x800AC0DC; // type:function size:0x1C0 scope:local +GetLotteryTicketPlayer = .text:0x800AC29C; // type:function size:0x7C scope:local +CheckLotteryTicket = .text:0x800AC318; // type:function size:0x78 scope:local +UpdateLotteryTicketMatch = .text:0x800AC390; // type:function size:0xB0 scope:local +StartHostMove = .text:0x800AC440; // type:function size:0x1CC scope:local +ExecHostMove = .text:0x800AC60C; // type:function size:0x228 scope:local +CheckHostMove = .text:0x800AC834; // type:function size:0x1C scope:local +CreateStopWin = .text:0x800AC850; // type:function size:0xC0 scope:local +CreateLast5Roulette = .text:0x800AC910; // type:function size:0x180 scope:local +UpdateLast5Roulette = .text:0x800ACA90; // type:function size:0x2B0 scope:local +SetLast5RouletteFade = .text:0x800ACD40; // type:function size:0x44 scope:local +SetLast5RouletteState = .text:0x800ACD84; // type:function size:0x38 scope:local +GetLast5RouletteState = .text:0x800ACDBC; // type:function size:0x38 scope:local +GetLast5RouletteResult = .text:0x800ACDF4; // type:function size:0x44 scope:local +CreateTeamResult = .text:0x800ACE38; // type:function size:0x2B4 scope:local +CreateTeamResultWork = .text:0x800AD0EC; // type:function size:0x340 scope:local +SetTeamResultTarget = .text:0x800AD42C; // type:function size:0x58 scope:local +GetTeamResultTarget = .text:0x800AD484; // type:function size:0x58 scope:local +KillTeamResult = .text:0x800AD4DC; // type:function size:0x38 scope:local +UpdateTeamResult = .text:0x800AD514; // type:function size:0x260 scope:local +BoardPauseStart = .text:0x800AD774; // type:function size:0x88 +PauseExit = .text:0x800AD7FC; // type:function size:0x3C0 scope:local +PauseProcess = .text:0x800ADBBC; // type:function size:0x108 scope:local +CreatePauseScreen = .text:0x800ADCC4; // type:function size:0xABC scope:local +DeletePauseScreen = .text:0x800AE780; // type:function size:0x168 scope:local +SetBoxVisible = .text:0x800AE8E8; // type:function size:0x58 scope:local +PauseConfigObjFunc = .text:0x800AE940; // type:function size:0x4F4 scope:local +UpdatePauseText = .text:0x800AEE34; // type:function size:0x310 scope:local +InitPauseQuit = .text:0x800AF144; // type:function size:0x264 scope:local +PauseQuitProcess = .text:0x800AF3A8; // type:function size:0x110 scope:local +DeletePauseQuit = .text:0x800AF4B8; // type:function size:0x48 scope:local +UpdatePadConfig = .text:0x800AF500; // type:function size:0xD4 scope:local +CreatePadConfig = .text:0x800AF5D4; // type:function size:0x1CC scope:local +ScrollInPadConfig = .text:0x800AF7A0; // type:function size:0x178 scope:local +CursorMovePadConfig = .text:0x800AF918; // type:function size:0x238 scope:local +ChangeDiffPadConfig = .text:0x800AFB50; // type:function size:0x3B0 scope:local +ScrollOutPadConfig = .text:0x800AFF00; // type:function size:0x154 scope:local +UpdatePauseBox = .text:0x800B0054; // type:function size:0x390 scope:local +UpdatePauseBoxExt = .text:0x800B03E4; // type:function size:0x3E4 scope:local +ExecPauseConfig = .text:0x800B07C8; // type:function size:0x240 scope:local +CreatePauseControlWin = .text:0x800B0A08; // type:function size:0x210 scope:local +DeletePauseControlWin = .text:0x800B0C18; // type:function size:0x70 scope:local +WaitPauseInput = .text:0x800B0C88; // type:function size:0x1B8 scope:local +ShowPauseConfig = .text:0x800B0E40; // type:function size:0x12C scope:local +CreatePadConfigSprite = .text:0x800B0F6C; // type:function size:0x1A4 scope:local +ShowPadConfigSprite = .text:0x800B1110; // type:function size:0x10C scope:local +PauseCreateNumber = .text:0x800B121C; // type:function size:0xDC scope:local +BoardPauseActiveCheck = .text:0x800B12F8; // type:function size:0x34 +BoardPauseReqCheck = .text:0x800B132C; // type:function size:0x12C +CheckPort = .text:0x800B1458; // type:function size:0x4C scope:local +RotateBox = .text:0x800B14A4; // type:function size:0xC0 scope:local +SearchPathNodeSpace = .text:0x800B1564; // type:function size:0x60 scope:local +InitPathNode = .text:0x800B15C4; // type:function size:0x180 scope:local +FindChildNode = .text:0x800B1744; // type:function size:0xE4 scope:local +GetNumValidLinks = .text:0x800B1828; // type:function size:0xB4 scope:local +AddValidLinks = .text:0x800B18DC; // type:function size:0xD0 scope:local +CheckPathSpace = .text:0x800B19AC; // type:function size:0x30 scope:local +FindValidLink = .text:0x800B19DC; // type:function size:0xAC scope:local +CheckEndSpace = .text:0x800B1A88; // type:function size:0xF0 scope:local +BoardComPathShortcutLenGet = .text:0x800B1B78; // type:function size:0x74C +BoardComPathBestGet = .text:0x800B22C4; // type:function size:0x3E4 +BoardComPathLenGet = .text:0x800B26A8; // type:function size:0x65C +CheckPath = .text:0x800B2D04; // type:function size:0x488 scope:local +BoardComPathBestGetFlag = .text:0x800B318C; // type:function size:0x45C +CheckPathFlag = .text:0x800B35E8; // type:function size:0x4E0 scope:local +TutorialProcFunc = .text:0x800B3AC8; // type:function size:0x34 scope:local +BoardTutorialInit = .text:0x800B3AFC; // type:function size:0x80 +BoardTutorialKill = .text:0x800B3B7C; // type:function size:0x4C +BoardTutorialHookSet = .text:0x800B3BC8; // type:function size:0x8 +BoardTutorialHookExec = .text:0x800B3BD0; // type:function size:0x44 +BoardTutorialPlayerInit = .text:0x800B3C14; // type:function size:0x78 +BoardTutorialWorkSave = .text:0x800B3C8C; // type:function size:0x10C +BoardTutorialWorkRestore = .text:0x800B3D98; // type:function size:0xBC +BoardTutorialDirInputSet = .text:0x800B3E54; // type:function size:0x10 +BoardTutorialBlockSetPos = .text:0x800B3E64; // type:function size:0x40 +BoardTutorialItemSet = .text:0x800B3EA4; // type:function size:0x8 +BoardTutorialHostSet = .text:0x800B3EAC; // type:function size:0x8 +BoardTutorialHostHide = .text:0x800B3EB4; // type:function size:0x30 +PPCMfmsr = .text:0x800B3EE4; // type:function size:0x8 scope:global +PPCMtmsr = .text:0x800B3EEC; // type:function size:0x8 scope:global +PPCMfhid0 = .text:0x800B3EF4; // type:function size:0x8 scope:global +PPCMthid0 = .text:0x800B3EFC; // type:function size:0x8 +PPCMfl2cr = .text:0x800B3F04; // type:function size:0x8 scope:global +PPCMtl2cr = .text:0x800B3F0C; // type:function size:0x8 scope:global +PPCMtdec = .text:0x800B3F14; // type:function size:0x8 scope:weak +PPCSync = .text:0x800B3F1C; // type:function size:0x8 +PPCHalt = .text:0x800B3F24; // type:function size:0x14 scope:weak +PPCMfhid2 = .text:0x800B3F38; // type:function size:0x8 scope:global +PPCMthid2 = .text:0x800B3F40; // type:function size:0x8 scope:global +PPCMfwpar = .text:0x800B3F48; // type:function size:0xC +PPCMtwpar = .text:0x800B3F54; // type:function size:0x8 scope:global +PPCDisableSpeculation = .text:0x800B3F5C; // type:function size:0x28 scope:global +PPCSetFpNonIEEEMode = .text:0x800B3F84; // type:function size:0x8 scope:global +OSGetConsoleType = .text:0x800B3F8C; // type:function size:0x28 scope:global +ClearArena = .text:0x800B3FB4; // type:function size:0x128 scope:local +InquiryCallback = .text:0x800B40DC; // type:function size:0x3C scope:local +OSInit = .text:0x800B4118; // type:function size:0x3B8 scope:global +OSExceptionInit = .text:0x800B44D0; // type:function size:0x280 scope:local +__OSDBINTSTART = .text:0x800B4750; // type:label scope:global +__OSDBIntegrator = .text:0x800B4750; // type:function size:0x24 scope:local +__OSDBINTEND = .text:0x800B4774; // type:label scope:global +__OSDBJump = .text:0x800B4774; // type:function size:0x4 +__OSDBJUMPEND = .text:0x800B4778; // type:label scope:global +__OSSetExceptionHandler = .text:0x800B4778; // type:function size:0x1C scope:global +__OSGetExceptionHandler = .text:0x800B4794; // type:function size:0x14 scope:global +__OSEVStart = .text:0x800B47A8; // type:label scope:global +OSExceptionVector = .text:0x800B47A8; // type:function size:0x9C scope:local +__DBVECTOR = .text:0x800B4800; // type:label scope:global data:4byte +__OSEVSetNumber = .text:0x800B4810; // type:label scope:global data:4byte +__OSEVEnd = .text:0x800B4840; // type:label scope:global +OSDefaultExceptionHandler = .text:0x800B4844; // type:function size:0x58 scope:global +__OSPSInit = .text:0x800B489C; // type:function size:0x38 scope:global +__OSGetDIConfig = .text:0x800B48D4; // type:function size:0x14 +OSInitAlarm = .text:0x800B48E8; // type:function size:0x4C scope:global +OSCreateAlarm = .text:0x800B4934; // type:function size:0xC scope:global +InsertAlarm = .text:0x800B4940; // type:function size:0x250 scope:local +OSSetAlarm = .text:0x800B4B90; // type:function size:0x68 scope:global +OSCancelAlarm = .text:0x800B4BF8; // type:function size:0x11C +DecrementerExceptionCallback = .text:0x800B4D14; // type:function size:0x230 scope:local +DecrementerExceptionHandler = .text:0x800B4F44; // type:function size:0x50 scope:local +DLInsert = .text:0x800B4F94; // type:function size:0xAC scope:local +OSAllocFromHeap = .text:0x800B5040; // type:function size:0xFC +OSAllocFixed = .text:0x800B513C; // type:function size:0x284 +OSFreeToHeap = .text:0x800B53C0; // type:function size:0x7C +OSSetCurrentHeap = .text:0x800B543C; // type:function size:0x10 +OSInitAlloc = .text:0x800B544C; // type:function size:0x70 +OSCreateHeap = .text:0x800B54BC; // type:function size:0x6C +OSCheckHeap = .text:0x800B5528; // type:function size:0x360 +OSDumpHeap = .text:0x800B5888; // type:function size:0x104 +OSGetArenaHi = .text:0x800B598C; // type:function size:0x8 scope:global +OSGetArenaLo = .text:0x800B5994; // type:function size:0x8 scope:global +OSSetArenaHi = .text:0x800B599C; // type:function size:0x8 scope:global +OSSetArenaLo = .text:0x800B59A4; // type:function size:0x8 scope:global +__OSInitAudioSystem = .text:0x800B59AC; // type:function size:0x1BC scope:global +__OSStopAudioSystem = .text:0x800B5B68; // type:function size:0xD8 scope:global +DCEnable = .text:0x800B5C40; // type:function size:0x14 scope:global +DCInvalidateRange = .text:0x800B5C54; // type:function size:0x30 scope:global +DCFlushRange = .text:0x800B5C84; // type:function size:0x34 scope:global +DCStoreRange = .text:0x800B5CB8; // type:function size:0x34 +DCFlushRangeNoSync = .text:0x800B5CEC; // type:function size:0x30 scope:global +DCStoreRangeNoSync = .text:0x800B5D1C; // type:function size:0x30 +DCZeroRange = .text:0x800B5D4C; // type:function size:0x30 +ICInvalidateRange = .text:0x800B5D7C; // type:function size:0x38 scope:global +ICFlashInvalidate = .text:0x800B5DB4; // type:function size:0x10 scope:global +ICEnable = .text:0x800B5DC4; // type:function size:0x14 scope:global +__LCEnable = .text:0x800B5DD8; // type:function size:0xCC scope:local +LCEnable = .text:0x800B5EA4; // type:function size:0x38 +LCDisable = .text:0x800B5EDC; // type:function size:0x28 scope:global +LCStoreBlocks = .text:0x800B5F04; // type:function size:0x24 +LCStoreData = .text:0x800B5F28; // type:function size:0xAC +LCQueueWait = .text:0x800B5FD4; // type:function size:0x18 +L2GlobalInvalidate = .text:0x800B5FEC; // type:function size:0x98 scope:global +DMAErrorHandler = .text:0x800B6084; // type:function size:0x160 scope:global +__OSCacheInit = .text:0x800B61E4; // type:function size:0xF4 scope:global +__OSLoadFPUContext = .text:0x800B62D8; // type:function size:0x124 scope:local +__OSSaveFPUContext = .text:0x800B63FC; // type:function size:0x128 scope:local +OSSetCurrentContext = .text:0x800B6524; // type:function size:0x5C scope:global +OSGetCurrentContext = .text:0x800B6580; // type:function size:0xC +OSSaveContext = .text:0x800B658C; // type:function size:0x80 +OSLoadContext = .text:0x800B660C; // type:function size:0xD8 scope:global +OSClearContext = .text:0x800B66E4; // type:function size:0x24 scope:global +OSInitContext = .text:0x800B6708; // type:function size:0xBC +OSDumpContext = .text:0x800B67C4; // type:function size:0x2A8 scope:global +OSSwitchFPUContext = .text:0x800B6A6C; // type:function size:0x84 scope:local +__OSContextInit = .text:0x800B6AF0; // type:function size:0x48 scope:global +OSReport = .text:0x800B6B38; // type:function size:0x80 scope:global +OSSetErrorHandler = .text:0x800B6BB8; // type:function size:0x1C scope:global +__OSUnhandledException = .text:0x800B6BD4; // type:function size:0x200 scope:global +OSGetFontEncode = .text:0x800B6DD4; // type:function size:0x58 +OSDisableInterrupts = .text:0x800B6E2C; // type:function size:0x14 scope:global +__RAS_OSDisableInterrupts_begin = .text:0x800B6E2C; // type:label scope:global +__RAS_OSDisableInterrupts_end = .text:0x800B6E3C; // type:label scope:global +OSEnableInterrupts = .text:0x800B6E40; // type:function size:0x14 scope:global +OSRestoreInterrupts = .text:0x800B6E54; // type:function size:0x24 scope:global +__OSSetInterruptHandler = .text:0x800B6E78; // type:function size:0x1C scope:global +__OSGetInterruptHandler = .text:0x800B6E94; // type:function size:0x14 +__OSInterruptInit = .text:0x800B6EA8; // type:function size:0x74 scope:global +SetInterruptMask = .text:0x800B6F1C; // type:function size:0x2D8 scope:local +__OSMaskInterrupts = .text:0x800B71F4; // type:function size:0x88 scope:global +__OSUnmaskInterrupts = .text:0x800B727C; // type:function size:0x88 scope:global +__OSDispatchInterrupt = .text:0x800B7304; // type:function size:0x344 +ExternalInterruptHandler = .text:0x800B7648; // type:function size:0x50 scope:local +OSNotifyLink = .text:0x800B7698; // type:function size:0x4 scope:weak +OSNotifyUnlink = .text:0x800B769C; // type:function size:0x4 scope:weak +Relocate = .text:0x800B76A0; // type:function size:0x274 scope:local +OSLink = .text:0x800B7914; // type:function size:0x250 +Undo = .text:0x800B7B64; // type:function size:0x20C scope:local +OSUnlink = .text:0x800B7D70; // type:function size:0x94 +__OSModuleInit = .text:0x800B7E04; // type:function size:0x18 scope:global +OSInitMessageQueue = .text:0x800B7E1C; // type:function size:0x60 +OSGetPhysicalMemSize = .text:0x800B7E7C; // type:function size:0xC +OSGetConsoleSimulatedMemSize = .text:0x800B7E88; // type:function size:0xC +OnReset = .text:0x800B7E94; // type:function size:0x3C scope:local +MEMIntrruptHandler = .text:0x800B7ED0; // type:function size:0x6C scope:local +Config24MB = .text:0x800B7F3C; // type:function size:0x80 scope:local +Config48MB = .text:0x800B7FBC; // type:function size:0x80 scope:local +RealMode = .text:0x800B803C; // type:function size:0x18 scope:local +__OSInitMemoryProtection = .text:0x800B8054; // type:function size:0x120 scope:global +__OSUnlockAllMutex = .text:0x800B8174; // type:function size:0x70 +Run = .text:0x800B81E4; // type:function size:0x40 scope:local +Callback = .text:0x800B8224; // type:function size:0xC scope:local +__OSReboot = .text:0x800B8230; // type:function size:0x1C0 scope:global +OSRegisterResetFunction = .text:0x800B83F0; // type:function size:0x84 scope:global +Reset = .text:0x800B8474; // type:function size:0x70 scope:local +__OSDoHotReset = .text:0x800B84E4; // type:function size:0x48 +OSResetSystem = .text:0x800B852C; // type:function size:0x278 scope:global +OSGetResetCode = .text:0x800B87A4; // type:function size:0x30 scope:global +__OSResetSWInterruptHandler = .text:0x800B87D4; // type:function size:0xF4 scope:global +OSGetResetButtonState = .text:0x800B88C8; // type:function size:0x298 +WriteSramCallback = .text:0x800B8B60; // type:function size:0x60 scope:local +WriteSram = .text:0x800B8BC0; // type:function size:0x118 scope:local +__OSInitSram = .text:0x800B8CD8; // type:function size:0x134 scope:global +__OSLockSram = .text:0x800B8E0C; // type:function size:0x5C scope:global +__OSLockSramEx = .text:0x800B8E68; // type:function size:0x5C scope:global +UnlockSram = .text:0x800B8EC4; // type:function size:0x308 scope:local +__OSUnlockSram = .text:0x800B91CC; // type:function size:0x24 scope:global +__OSUnlockSramEx = .text:0x800B91F0; // type:function size:0x24 scope:global +__OSSyncSram = .text:0x800B9214; // type:function size:0x10 scope:global +OSGetSoundMode = .text:0x800B9224; // type:function size:0x80 +OSSetSoundMode = .text:0x800B92A4; // type:function size:0xA4 +OSGetProgressiveMode = .text:0x800B9348; // type:function size:0x70 +OSSetProgressiveMode = .text:0x800B93B8; // type:function size:0xA4 +OSGetWirelessID = .text:0x800B945C; // type:function size:0x84 +OSSetWirelessID = .text:0x800B94E0; // type:function size:0xAC +OSInitStopwatch = .text:0x800B958C; // type:function size:0x2C +OSStartStopwatch = .text:0x800B95B8; // type:function size:0x3C +OSStopStopwatch = .text:0x800B95F4; // type:function size:0xCC +OSCheckStopwatch = .text:0x800B96C0; // type:function size:0x70 +OSResetStopwatch = .text:0x800B9730; // type:function size:0x28 +OSDumpStopwatch = .text:0x800B9758; // type:function size:0x1A4 +__OSSystemCallVectorStart = .text:0x800B98FC; // type:label scope:global +SystemCallVector = .text:0x800B98FC; // type:function size:0x20 scope:local +__OSSystemCallVectorEnd = .text:0x800B9918; // type:label scope:global +__OSInitSystemCall = .text:0x800B991C; // type:function size:0x64 scope:global +__OSThreadInit = .text:0x800B9980; // type:function size:0x128 scope:global +OSInitThreadQueue = .text:0x800B9AA8; // type:function size:0x10 scope:global +OSGetCurrentThread = .text:0x800B9AB8; // type:function size:0xC +OSDisableScheduler = .text:0x800B9AC4; // type:function size:0x40 scope:global +OSEnableScheduler = .text:0x800B9B04; // type:function size:0x40 scope:global +UnsetRun = .text:0x800B9B44; // type:function size:0x68 scope:local +__OSGetEffectivePriority = .text:0x800B9BAC; // type:function size:0x3C +SetEffectivePriority = .text:0x800B9BE8; // type:function size:0x1C0 scope:local +SelectThread = .text:0x800B9DA8; // type:function size:0x200 scope:local +__OSReschedule = .text:0x800B9FA8; // type:function size:0x30 scope:global +OSYieldThread = .text:0x800B9FD8; // type:function size:0x3C +OSCreateThread = .text:0x800BA014; // type:function size:0x120 +OSExitThread = .text:0x800BA134; // type:function size:0xE4 +OSCancelThread = .text:0x800BA218; // type:function size:0x1BC scope:global +OSResumeThread = .text:0x800BA3D4; // type:function size:0x288 +OSSuspendThread = .text:0x800BA65C; // type:function size:0x170 +OSSleepThread = .text:0x800BA7CC; // type:function size:0xEC +OSWakeupThread = .text:0x800BA8B8; // type:function size:0x104 +OSSetIdleFunction = .text:0x800BA9BC; // type:function size:0x90 +OSGetTime = .text:0x800BAA4C; // type:function size:0x18 scope:global +OSGetTick = .text:0x800BAA64; // type:function size:0x8 scope:global +__OSGetSystemTime = .text:0x800BAA6C; // type:function size:0x64 scope:global +GetDates = .text:0x800BAAD0; // type:function size:0x19C scope:local +OSTicksToCalendarTime = .text:0x800BAC6C; // type:function size:0x204 +__init_user = .text:0x800BAE70; // type:function size:0x20 scope:global +__init_cpp = .text:0x800BAE90; // type:function size:0x54 scope:local +_ExitProcess = .text:0x800BAEE4; // type:function size:0x20 scope:global +DBInit = .text:0x800BAF04; // type:function size:0x28 scope:global +__DBExceptionDestinationAux = .text:0x800BAF2C; // type:function size:0x48 +__DBExceptionDestination = .text:0x800BAF74; // type:function size:0x10 scope:local +__DBIsExceptionMarked = .text:0x800BAF84; // type:function size:0x1C scope:global +DBPrintf = .text:0x800BAFA0; // type:function size:0x50 scope:global +PSMTXIdentity = .text:0x800BAFF0; // type:function size:0x2C +PSMTXCopy = .text:0x800BB01C; // type:function size:0x34 +PSMTXConcat = .text:0x800BB050; // type:function size:0xCC +PSMTXTranspose = .text:0x800BB11C; // type:function size:0x50 +PSMTXInverse = .text:0x800BB16C; // type:function size:0xF8 +PSMTXInvXpose = .text:0x800BB264; // type:function size:0xC8 +PSMTXRotRad = .text:0x800BB32C; // type:function size:0x70 +PSMTXRotTrig = .text:0x800BB39C; // type:function size:0xA8 +PSMTXRotAxisRad = .text:0x800BB444; // type:function size:0x104 +PSMTXTrans = .text:0x800BB548; // type:function size:0x34 +PSMTXScale = .text:0x800BB57C; // type:function size:0x28 +PSMTXQuat = .text:0x800BB5A4; // type:function size:0xA4 +C_MTXLookAt = .text:0x800BB648; // type:function size:0x18C +C_MTXLightPerspective = .text:0x800BB7D4; // type:function size:0xCC +PSMTXMultVec = .text:0x800BB8A0; // type:function size:0x54 +PSMTXMultVecArray = .text:0x800BB8F4; // type:function size:0x8C +PSMTXMultVecSR = .text:0x800BB980; // type:function size:0x54 +C_MTXPerspective = .text:0x800BB9D4; // type:function size:0xD0 +C_MTXOrtho = .text:0x800BBAA4; // type:function size:0x98 +PSVECAdd = .text:0x800BBB3C; // type:function size:0x24 +PSVECSubtract = .text:0x800BBB60; // type:function size:0x24 +PSVECScale = .text:0x800BBB84; // type:function size:0x1C +PSVECNormalize = .text:0x800BBBA0; // type:function size:0x44 +PSVECSquareMag = .text:0x800BBBE4; // type:function size:0x18 +PSVECMag = .text:0x800BBBFC; // type:function size:0x3C +PSVECDotProduct = .text:0x800BBC38; // type:function size:0x20 +PSVECCrossProduct = .text:0x800BBC58; // type:function size:0x3C +C_VECHalfAngle = .text:0x800BBC94; // type:function size:0xD8 +C_VECReflect = .text:0x800BBD6C; // type:function size:0xD4 +PSVECSquareDistance = .text:0x800BBE40; // type:function size:0x28 +PSVECDistance = .text:0x800BBE68; // type:function size:0x4C +C_QUATAdd = .text:0x800BBEB4; // type:function size:0x44 +PSQUATAdd = .text:0x800BBEF8; // type:function size:0x24 +PSQUATMultiply = .text:0x800BBF1C; // type:function size:0x5C +PSQUATNormalize = .text:0x800BBF78; // type:function size:0x54 +PSQUATInverse = .text:0x800BBFCC; // type:function size:0x50 +C_QUATRotAxisRad = .text:0x800BC01C; // type:function size:0x8C +C_QUATMtx = .text:0x800BC0A8; // type:function size:0x258 +C_QUATSlerp = .text:0x800BC300; // type:function size:0x174 +PSMTXReorder = .text:0x800BC474; // type:function size:0x4C +PSMTXROMultVecArray = .text:0x800BC4C0; // type:function size:0x118 +__DVDInitWA = .text:0x800BC5D8; // type:function size:0x40 scope:global +__DVDInterruptHandler = .text:0x800BC618; // type:function size:0x2F4 scope:global +fn_800BC90C = .text:0x800BC90C; // type:function size:0x84 +AlarmHandlerForTimeout = .text:0x800BC990; // type:function size:0x70 scope:local +Read = .text:0x800BCA00; // type:function size:0x110 scope:local +SeekTwiceBeforeRead = .text:0x800BCB10; // type:function size:0x80 scope:local +DVDLowRead = .text:0x800BCB90; // type:function size:0x298 +DVDLowSeek = .text:0x800BCE28; // type:function size:0x94 +DVDLowWaitCoverClose = .text:0x800BCEBC; // type:function size:0x2C scope:global +DVDLowReadDiskID = .text:0x800BCEE8; // type:function size:0xA4 +DVDLowStopMotor = .text:0x800BCF8C; // type:function size:0x8C scope:global +DVDLowRequestError = .text:0x800BD018; // type:function size:0x8C +DVDLowInquiry = .text:0x800BD0A4; // type:function size:0x9C +DVDLowAudioStream = .text:0x800BD140; // type:function size:0x98 +DVDLowRequestAudioStatus = .text:0x800BD1D8; // type:function size:0x8C +DVDLowAudioBufferConfig = .text:0x800BD264; // type:function size:0x9C +DVDLowReset = .text:0x800BD300; // type:function size:0xBC scope:global +DVDLowBreak = .text:0x800BD3BC; // type:function size:0x14 +DVDLowClearCallback = .text:0x800BD3D0; // type:function size:0x18 +__DVDLowSetWAType = .text:0x800BD3E8; // type:function size:0x44 scope:global +__DVDFSInit = .text:0x800BD42C; // type:function size:0x38 scope:global +DVDConvertPathToEntrynum = .text:0x800BD464; // type:function size:0x2F4 +DVDFastOpen = .text:0x800BD758; // type:function size:0x74 +DVDOpen = .text:0x800BD7CC; // type:function size:0xC8 +DVDClose = .text:0x800BD894; // type:function size:0x24 +entryToPath = .text:0x800BD8B8; // type:function size:0x160 scope:local +DVDGetCurrentDir = .text:0x800BDA18; // type:function size:0xC4 +DVDReadAsyncPrio = .text:0x800BDADC; // type:function size:0xC0 +cbForReadAsync = .text:0x800BDB9C; // type:function size:0x30 scope:local +DVDReadPrio = .text:0x800BDBCC; // type:function size:0x118 +cbForReadSync = .text:0x800BDCE4; // type:function size:0x24 scope:local +DVDInit = .text:0x800BDD08; // type:function size:0xFC scope:global +stateReadingFST = .text:0x800BDE04; // type:function size:0x54 scope:local +cbForStateReadingFST = .text:0x800BDE58; // type:function size:0x80 scope:local +cbForStateError = .text:0x800BDED8; // type:function size:0xA8 scope:local +stateTimeout = .text:0x800BDF80; // type:function size:0x9C scope:local +stateGettingError = .text:0x800BE01C; // type:function size:0x28 scope:local +CategorizeError = .text:0x800BE044; // type:function size:0xB4 scope:local +cbForStateGettingError = .text:0x800BE0F8; // type:function size:0x294 scope:local +cbForUnrecoveredError = .text:0x800BE38C; // type:function size:0x68 scope:local +cbForUnrecoveredErrorRetry = .text:0x800BE3F4; // type:function size:0x98 scope:local +stateGoToRetry = .text:0x800BE48C; // type:function size:0x28 scope:local +cbForStateGoToRetry = .text:0x800BE4B4; // type:function size:0x158 scope:local +stateCheckID = .text:0x800BE60C; // type:function size:0xE4 scope:local +stateCheckID3 = .text:0x800BE6F0; // type:function size:0x34 scope:local +stateCheckID2 = .text:0x800BE724; // type:function size:0x38 scope:local +cbForStateCheckID1 = .text:0x800BE75C; // type:function size:0x114 scope:local +cbForStateCheckID2 = .text:0x800BE870; // type:function size:0xA4 scope:local +cbForStateCheckID3 = .text:0x800BE914; // type:function size:0xFC scope:local +AlarmHandler = .text:0x800BEA10; // type:function size:0x44 scope:local +stateCoverClosed = .text:0x800BEA54; // type:function size:0xCC scope:local +stateCoverClosed_CMD = .text:0x800BEB20; // type:function size:0x30 scope:local +cbForStateCoverClosed = .text:0x800BEB50; // type:function size:0x70 scope:local +stateMotorStopped = .text:0x800BEBC0; // type:function size:0x28 scope:local +cbForStateMotorStopped = .text:0x800BEBE8; // type:function size:0xE4 scope:local +stateReady = .text:0x800BECCC; // type:function size:0x248 scope:local +stateBusy = .text:0x800BEF14; // type:function size:0x2C0 scope:local +cbForStateBusy = .text:0x800BF1D4; // type:function size:0x5D4 +DVDReadAbsAsyncPrio = .text:0x800BF7A8; // type:function size:0xDC +DVDReadAbsAsyncForBS = .text:0x800BF884; // type:function size:0xD0 +DVDReadDiskID = .text:0x800BF954; // type:function size:0xD4 scope:global +DVDInquiryAsync = .text:0x800BFA28; // type:function size:0xD0 scope:global +DVDReset = .text:0x800BFAF8; // type:function size:0x44 scope:global +DVDGetCommandBlockStatus = .text:0x800BFB3C; // type:function size:0x4C +DVDGetDriveStatus = .text:0x800BFB88; // type:function size:0xAC scope:global +DVDSetAutoInvalidation = .text:0x800BFC34; // type:function size:0x10 +DVDCancelAsync = .text:0x800BFC44; // type:function size:0x270 +DVDCancel = .text:0x800BFEB4; // type:function size:0xAC +cbForCancelSync = .text:0x800BFF60; // type:function size:0x24 scope:local +DVDGetCurrentDiskID = .text:0x800BFF84; // type:function size:0x8 +DVDCheckDisk = .text:0x800BFF8C; // type:function size:0xE4 +__DVDPrepareResetAsync = .text:0x800C0070; // type:function size:0x11C +__DVDClearWaitingQueue = .text:0x800C018C; // type:function size:0x38 scope:global +__DVDPushWaitingQueue = .text:0x800C01C4; // type:function size:0x68 scope:global +__DVDPopWaitingQueue = .text:0x800C022C; // type:function size:0xA0 scope:global +__DVDCheckWaitingQueue = .text:0x800C02CC; // type:function size:0x58 scope:global +__DVDDequeueWaitingQueue = .text:0x800C0324; // type:function size:0x60 +ErrorCode2Num = .text:0x800C0384; // type:function size:0x11C scope:local +__DVDStoreErrorCode = .text:0x800C04A0; // type:function size:0x7C scope:global +cb = .text:0x800C051C; // type:function size:0xD8 scope:local +__fstLoad = .text:0x800C05F4; // type:function size:0x168 scope:global +__VIRetraceHandler = .text:0x800C075C; // type:function size:0x228 scope:local +VISetPreRetraceCallback = .text:0x800C0984; // type:function size:0x44 +VISetPostRetraceCallback = .text:0x800C09C8; // type:function size:0x44 +getTiming = .text:0x800C0A0C; // type:function size:0x90 scope:local +__VIInit = .text:0x800C0A9C; // type:function size:0x1F8 +VIInit = .text:0x800C0C94; // type:function size:0x478 +VIWaitForRetrace = .text:0x800C110C; // type:function size:0x54 +setFbbRegs = .text:0x800C1160; // type:function size:0x2D4 scope:local +setVerticalRegs = .text:0x800C1434; // type:function size:0x1A0 scope:local +VIConfigure = .text:0x800C15D4; // type:function size:0x79C +VIConfigurePan = .text:0x800C1D70; // type:function size:0x394 +VIFlush = .text:0x800C2104; // type:function size:0x11C +VISetNextFrameBuffer = .text:0x800C2220; // type:function size:0x6C +VISetBlack = .text:0x800C228C; // type:function size:0x7C +VIGetRetraceCount = .text:0x800C2308; // type:function size:0x8 +getCurrentFieldEvenOdd = .text:0x800C2310; // type:function size:0x68 scope:local +VIGetNextField = .text:0x800C2378; // type:function size:0xA8 +VIGetCurrentLine = .text:0x800C2420; // type:function size:0x98 +VIGetTvFormat = .text:0x800C24B8; // type:function size:0x7C scope:global +VIGetDTVStatus = .text:0x800C2534; // type:function size:0x3C +DEMOGetRenderModeObj = .text:0x800C2570; // type:function size:0x8 +DEMOInitCaption = .text:0x800C2578; // type:function size:0x228 +DEMOPuts = .text:0x800C27A0; // type:function size:0x310 +DEMOPrintf = .text:0x800C2AB0; // type:function size:0xC4 +DEMOWriteStats = .text:0x800C2B74; // type:function size:0x394 +DEMOUpdateStats = .text:0x800C2F08; // type:function size:0x58 +DEMOPrintStats = .text:0x800C2F60; // type:function size:0x96C +ClampStick = .text:0x800C38CC; // type:function size:0x130 scope:local +PADClamp = .text:0x800C39FC; // type:function size:0x108 +UpdateOrigin = .text:0x800C3B04; // type:function size:0x1A4 scope:local +PADOriginCallback = .text:0x800C3CA8; // type:function size:0xC4 scope:local +PADOriginUpdateCallback = .text:0x800C3D6C; // type:function size:0xC0 scope:local +PADProbeCallback = .text:0x800C3E2C; // type:function size:0xD8 scope:local +PADTypeAndStatusCallback = .text:0x800C3F04; // type:function size:0x32C scope:local +PADReceiveCheckCallback = .text:0x800C4230; // type:function size:0x134 scope:local +PADReset = .text:0x800C4364; // type:function size:0x100 +PADRecalibrate = .text:0x800C4464; // type:function size:0x104 +PADInit = .text:0x800C4568; // type:function size:0x210 +PADRead = .text:0x800C4778; // type:function size:0x3AC +PADControlMotor = .text:0x800C4B24; // type:function size:0xA4 +PADSetSpec = .text:0x800C4BC8; // type:function size:0x60 +SPEC0_MakeStatus = .text:0x800C4C28; // type:function size:0x174 scope:local +SPEC1_MakeStatus = .text:0x800C4D9C; // type:function size:0x174 scope:local +SPEC2_MakeStatus = .text:0x800C4F10; // type:function size:0x3F8 scope:local +fn_800C5308 = .text:0x800C5308; // type:function size:0x194 scope:local +SamplingHandler = .text:0x800C549C; // type:function size:0x60 scope:local +PADSetSamplingCallback = .text:0x800C54FC; // type:function size:0x54 +__PADDisableRecalibration = .text:0x800C5550; // type:function size:0x7C scope:global +AIRegisterDMACallback = .text:0x800C55CC; // type:function size:0x44 +AIInitDMA = .text:0x800C5610; // type:function size:0x88 +AIStartDMA = .text:0x800C5698; // type:function size:0x18 +AIStopDMA = .text:0x800C56B0; // type:function size:0x18 +AIGetDMAStartAddr = .text:0x800C56C8; // type:function size:0x1C +AISetStreamPlayState = .text:0x800C56E4; // type:function size:0xD8 +AIGetStreamPlayState = .text:0x800C57BC; // type:function size:0x10 +AISetDSPSampleRate = .text:0x800C57CC; // type:function size:0xE0 +AIGetDSPSampleRate = .text:0x800C58AC; // type:function size:0x14 +__AI_set_stream_sample_rate = .text:0x800C58C0; // type:function size:0xD4 scope:local +AIGetStreamSampleRate = .text:0x800C5994; // type:function size:0x10 +AISetStreamVolLeft = .text:0x800C59A4; // type:function size:0x1C +AIGetStreamVolLeft = .text:0x800C59C0; // type:function size:0x10 +AISetStreamVolRight = .text:0x800C59D0; // type:function size:0x1C +AIGetStreamVolRight = .text:0x800C59EC; // type:function size:0x10 +AIInit = .text:0x800C59FC; // type:function size:0x164 +__AISHandler = .text:0x800C5B60; // type:function size:0x7C +__AIDHandler = .text:0x800C5BDC; // type:function size:0x90 +__AICallbackStackSwitch = .text:0x800C5C6C; // type:function size:0x58 +__AI_SRC_INIT = .text:0x800C5CC4; // type:function size:0x1E4 +ARRegisterDMACallback = .text:0x800C5EA8; // type:function size:0x44 +ARGetDMAStatus = .text:0x800C5EEC; // type:function size:0x3C +ARStartDMA = .text:0x800C5F28; // type:function size:0xF0 +ARAlloc = .text:0x800C6018; // type:function size:0x68 +ARFree = .text:0x800C6080; // type:function size:0x74 +ARCheckInit = .text:0x800C60F4; // type:function size:0x8 +ARInit = .text:0x800C60FC; // type:function size:0xBC +ARSetSize = .text:0x800C61B8; // type:function size:0x4 +ARGetBaseAddress = .text:0x800C61BC; // type:function size:0x8 +ARGetSize = .text:0x800C61C4; // type:function size:0x8 +__ARHandler = .text:0x800C61CC; // type:function size:0x78 scope:local +__ARChecksize = .text:0x800C6244; // type:function size:0x914 scope:local +__ARQServiceQueueLo = .text:0x800C6B58; // type:function size:0x100 +__ARQCallbackHack = .text:0x800C6C58; // type:function size:0x4 +__ARQInterruptServiceRoutine = .text:0x800C6C5C; // type:function size:0xCC +ARQInit = .text:0x800C6D28; // type:function size:0x68 +ARQPostRequest = .text:0x800C6D90; // type:function size:0x15C +DSPCheckMailToDSP = .text:0x800C6EEC; // type:function size:0x10 +DSPCheckMailFromDSP = .text:0x800C6EFC; // type:function size:0x10 +DSPReadMailFromDSP = .text:0x800C6F0C; // type:function size:0x18 +DSPSendMailToDSP = .text:0x800C6F24; // type:function size:0x14 +DSPInit = .text:0x800C6F38; // type:function size:0xB8 +DSPReset = .text:0x800C6FF0; // type:function size:0x48 +DSPHalt = .text:0x800C7038; // type:function size:0x40 +DSPGetDMAStatus = .text:0x800C7078; // type:function size:0x10 +DSPAddTask = .text:0x800C7088; // type:function size:0x70 +__DSP_debug_printf = .text:0x800C70F8; // type:function size:0x50 +__DSPHandler = .text:0x800C7148; // type:function size:0x424 +__DSP_exec_task = .text:0x800C756C; // type:function size:0x1A0 +__DSP_boot_task = .text:0x800C770C; // type:function size:0x18C +__DSP_insert_task = .text:0x800C7898; // type:function size:0xA0 +__DSP_remove_task = .text:0x800C7938; // type:function size:0x94 +__GXDefaultTexRegionCallback = .text:0x800C79CC; // type:function size:0x7C +__GXDefaultTlutRegionCallback = .text:0x800C7A48; // type:function size:0x24 +GXInit = .text:0x800C7A6C; // type:function size:0x7CC scope:global +__GXInitGX = .text:0x800C8238; // type:function size:0x884 scope:global +GXCPInterruptHandler = .text:0x800C8ABC; // type:function size:0x13C scope:local +GXInitFifoBase = .text:0x800C8BF8; // type:function size:0x6C scope:global +GXInitFifoPtrs = .text:0x800C8C64; // type:function size:0x70 +GXInitFifoLimits = .text:0x800C8CD4; // type:function size:0xC +GXSetCPUFifo = .text:0x800C8CE0; // type:function size:0x110 scope:global +GXSetGPFifo = .text:0x800C8DF0; // type:function size:0x178 scope:global +GXSaveCPUFifo = .text:0x800C8F68; // type:function size:0x20 +__GXSaveCPUFifoAux = .text:0x800C8F88; // type:function size:0xDC +__GXFifoInit = .text:0x800C9064; // type:function size:0x4C scope:global +__GXFifoReadEnable = .text:0x800C90B0; // type:function size:0x28 +__GXFifoReadDisable = .text:0x800C90D8; // type:function size:0x24 +__GXFifoLink = .text:0x800C90FC; // type:function size:0x44 +__GXWriteFifoIntEnable = .text:0x800C9140; // type:function size:0x4C +__GXWriteFifoIntReset = .text:0x800C918C; // type:function size:0x4C +__GXCleanGPFifo = .text:0x800C91D8; // type:function size:0xFC +GXGetCPUFifo = .text:0x800C92D4; // type:function size:0x8 +GXGetGPFifo = .text:0x800C92DC; // type:function size:0x8 +__GXXfVtxSpecs = .text:0x800C92E4; // type:function size:0x158 +GXSetVtxDesc = .text:0x800C943C; // type:function size:0x360 +__GXSetVCD = .text:0x800C979C; // type:function size:0x54 +__GXCalculateVLim = .text:0x800C97F0; // type:function size:0x124 +GXClearVtxDesc = .text:0x800C9914; // type:function size:0x4C +GXSetVtxAttrFmt = .text:0x800C9960; // type:function size:0x35C +__GXSetVAT = .text:0x800C9CBC; // type:function size:0x9C +GXSetArray = .text:0x800C9D58; // type:function size:0x8C +GXInvalidateVtxCache = .text:0x800C9DE4; // type:function size:0x10 +GXSetTexCoordGen2 = .text:0x800C9DF4; // type:function size:0x2D0 +GXSetNumTexGens = .text:0x800CA0C4; // type:function size:0x48 +GXSetMisc = .text:0x800CA10C; // type:function size:0x78 scope:global +GXFlush = .text:0x800CA184; // type:function size:0x5C +GXResetWriteGatherPipe = .text:0x800CA1E0; // type:function size:0x34 +__GXAbortWaitPECopyDone = .text:0x800CA214; // type:function size:0xCC +GXSetDrawSync = .text:0x800CA2E0; // type:function size:0xB8 +GXSetDrawDone = .text:0x800CA398; // type:function size:0x98 +GXWaitDrawDone = .text:0x800CA430; // type:function size:0x4C +GXDrawDone = .text:0x800CA47C; // type:function size:0x80 +GXPixModeSync = .text:0x800CA4FC; // type:function size:0x24 +GXPokeAlphaMode = .text:0x800CA520; // type:function size:0x14 +GXPokeAlphaRead = .text:0x800CA534; // type:function size:0x14 +GXPokeAlphaUpdate = .text:0x800CA548; // type:function size:0x1C +GXPokeBlendMode = .text:0x800CA564; // type:function size:0x88 +GXPokeColorUpdate = .text:0x800CA5EC; // type:function size:0x1C +GXPokeDstAlpha = .text:0x800CA608; // type:function size:0x14 +GXPokeDither = .text:0x800CA61C; // type:function size:0x1C +GXPokeZMode = .text:0x800CA638; // type:function size:0x28 +GXSetDrawSyncCallback = .text:0x800CA660; // type:function size:0x44 +GXTokenInterruptHandler = .text:0x800CA6A4; // type:function size:0x88 +GXFinishInterruptHandler = .text:0x800CA72C; // type:function size:0x84 +__GXPEInit = .text:0x800CA7B0; // type:function size:0x80 scope:global +__GXSetDirtyState = .text:0x800CA830; // type:function size:0xA0 +GXBegin = .text:0x800CA8D0; // type:function size:0xF0 +__GXSendFlushPrim = .text:0x800CA9C0; // type:function size:0x88 +GXSetLineWidth = .text:0x800CAA48; // type:function size:0x58 +GXSetPointSize = .text:0x800CAAA0; // type:function size:0x54 +GXEnableTexOffsets = .text:0x800CAAF4; // type:function size:0x64 +GXSetCullMode = .text:0x800CAB58; // type:function size:0x50 +GXSetCoPlanar = .text:0x800CABA8; // type:function size:0x44 +__GXSetGenMode = .text:0x800CABEC; // type:function size:0x24 +GXAdjustForOverscan = .text:0x800CAC10; // type:function size:0x120 +GXSetDispCopySrc = .text:0x800CAD30; // type:function size:0xC0 +GXSetTexCopySrc = .text:0x800CADF0; // type:function size:0xC0 +GXSetDispCopyDst = .text:0x800CAEB0; // type:function size:0x44 +GXSetTexCopyDst = .text:0x800CAEF4; // type:function size:0x170 +GXSetDispCopyFrame2Field = .text:0x800CB064; // type:function size:0x2C +GXSetCopyClamp = .text:0x800CB090; // type:function size:0x7C +GXSetDispCopyYScale = .text:0x800CB10C; // type:function size:0xD4 +GXSetCopyClear = .text:0x800CB1E0; // type:function size:0x68 +GXSetCopyFilter = .text:0x800CB248; // type:function size:0x228 +GXSetDispCopyGamma = .text:0x800CB470; // type:function size:0x1C +GXCopyDisp = .text:0x800CB48C; // type:function size:0x170 +GXCopyTex = .text:0x800CB5FC; // type:function size:0x190 +GXClearBoundingBox = .text:0x800CB78C; // type:function size:0x38 +GXInitLightAttn = .text:0x800CB7C4; // type:function size:0x1C +GXInitLightAttnK = .text:0x800CB7E0; // type:function size:0x10 +GXInitLightSpot = .text:0x800CB7F0; // type:function size:0x180 +GXInitLightDistAttn = .text:0x800CB970; // type:function size:0xD0 +GXInitLightPos = .text:0x800CBA40; // type:function size:0x10 +GXInitLightDir = .text:0x800CBA50; // type:function size:0x1C +GXInitSpecularDir = .text:0x800CBA6C; // type:function size:0xD4 +GXInitLightColor = .text:0x800CBB40; // type:function size:0x28 +GXLoadLightObjImm = .text:0x800CBB68; // type:function size:0x148 +GXSetChanAmbColor = .text:0x800CBCB0; // type:function size:0x168 +GXSetChanMatColor = .text:0x800CBE18; // type:function size:0x168 +GXSetNumChans = .text:0x800CBF80; // type:function size:0x4C +GXSetChanCtrl = .text:0x800CBFCC; // type:function size:0x1E4 +GXGetTexBufferSize = .text:0x800CC1B0; // type:function size:0x15C +__GetImageTileCount = .text:0x800CC30C; // type:function size:0xC8 +GXInitTexObj = .text:0x800CC3D4; // type:function size:0x274 +GXInitTexObjCI = .text:0x800CC648; // type:function size:0x48 +GXInitTexObjLOD = .text:0x800CC690; // type:function size:0x194 +GXGetTexObjFmt = .text:0x800CC824; // type:function size:0x8 +GXLoadTexObjPreLoaded = .text:0x800CC82C; // type:function size:0x1A8 +GXLoadTexObj = .text:0x800CC9D4; // type:function size:0x54 +GXInitTlutObj = .text:0x800CCA28; // type:function size:0x48 +GXLoadTlut = .text:0x800CCA70; // type:function size:0x9C +GXInitTexCacheRegion = .text:0x800CCB0C; // type:function size:0x120 scope:global +GXInitTlutRegion = .text:0x800CCC2C; // type:function size:0x48 scope:global +GXInvalidateTexAll = .text:0x800CCC74; // type:function size:0x48 +GXSetTexRegionCallback = .text:0x800CCCBC; // type:function size:0x14 +GXSetTlutRegionCallback = .text:0x800CCCD0; // type:function size:0x14 +GXSetTexCoordScaleManually = .text:0x800CCCE4; // type:function size:0x9C +__SetSURegs = .text:0x800CCD80; // type:function size:0xCC scope:local +__GXSetSUTexRegs = .text:0x800CCE4C; // type:function size:0x17C +__GXSetTmemConfig = .text:0x800CCFC8; // type:function size:0x240 scope:global +GXSetTevIndirect = .text:0x800CD208; // type:function size:0x9C +GXSetIndTexMtx = .text:0x800CD2A4; // type:function size:0x160 +GXSetIndTexCoordScale = .text:0x800CD404; // type:function size:0x1D4 +GXSetIndTexOrder = .text:0x800CD5D8; // type:function size:0x138 +GXSetNumIndStages = .text:0x800CD710; // type:function size:0x2C +GXSetTevDirect = .text:0x800CD73C; // type:function size:0x48 +GXSetTevIndWarp = .text:0x800CD784; // type:function size:0x64 +GXSetTevIndTile = .text:0x800CD7E8; // type:function size:0x1AC +__GXUpdateBPMask = .text:0x800CD994; // type:function size:0xCC +__GXFlushTextureState = .text:0x800CDA60; // type:function size:0x24 scope:global +GXSetTevOp = .text:0x800CDA84; // type:function size:0x1A4 +GXSetTevColorIn = .text:0x800CDC28; // type:function size:0x80 +GXSetTevAlphaIn = .text:0x800CDCA8; // type:function size:0x84 +GXSetTevColorOp = .text:0x800CDD2C; // type:function size:0xC0 +GXSetTevAlphaOp = .text:0x800CDDEC; // type:function size:0xC0 +GXSetTevColor = .text:0x800CDEAC; // type:function size:0x74 +GXSetTevColorS10 = .text:0x800CDF20; // type:function size:0x74 +GXSetTevKColor = .text:0x800CDF94; // type:function size:0x74 +GXSetTevKColorSel = .text:0x800CE008; // type:function size:0x6C +GXSetTevKAlphaSel = .text:0x800CE074; // type:function size:0x6C +GXSetTevSwapMode = .text:0x800CE0E0; // type:function size:0x58 +GXSetTevSwapModeTable = .text:0x800CE138; // type:function size:0xA0 +GXSetAlphaCompare = .text:0x800CE1D8; // type:function size:0x50 +GXSetZTexture = .text:0x800CE228; // type:function size:0x84 +GXSetTevOrder = .text:0x800CE2AC; // type:function size:0x1DC +GXSetNumTevStages = .text:0x800CE488; // type:function size:0x34 +GXSetFog = .text:0x800CE4BC; // type:function size:0x1B0 +GXSetFogRangeAdj = .text:0x800CE66C; // type:function size:0x100 +GXSetBlendMode = .text:0x800CE76C; // type:function size:0x104 +GXSetColorUpdate = .text:0x800CE870; // type:function size:0x40 +GXSetAlphaUpdate = .text:0x800CE8B0; // type:function size:0x40 +GXSetZMode = .text:0x800CE8F0; // type:function size:0x78 +GXSetZCompLoc = .text:0x800CE968; // type:function size:0x40 +GXSetPixelFmt = .text:0x800CE9A8; // type:function size:0x110 +GXSetDither = .text:0x800CEAB8; // type:function size:0x40 +GXSetDstAlpha = .text:0x800CEAF8; // type:function size:0x54 +GXSetFieldMask = .text:0x800CEB4C; // type:function size:0x38 +GXSetFieldMode = .text:0x800CEB84; // type:function size:0x80 +__GXSetRange = .text:0x800CEC04; // type:function size:0x4 +GXBeginDisplayList = .text:0x800CEC08; // type:function size:0xC8 +GXEndDisplayList = .text:0x800CECD0; // type:function size:0xD4 +GXCallDisplayList = .text:0x800CEDA4; // type:function size:0x70 +GXProject = .text:0x800CEE14; // type:function size:0x174 +GXSetProjection = .text:0x800CEF88; // type:function size:0xD4 +GXGetProjectionv = .text:0x800CF05C; // type:function size:0x78 +WriteMTXPS4x3 = .text:0x800CF0D4; // type:function size:0x34 scope:local +WriteMTXPS3x3from3x4 = .text:0x800CF108; // type:function size:0x34 scope:local +WriteMTXPS4x2 = .text:0x800CF13C; // type:function size:0x24 scope:local +GXLoadPosMtxImm = .text:0x800CF160; // type:function size:0x3C +GXLoadNrmMtxImm = .text:0x800CF19C; // type:function size:0x40 +GXSetCurrentMtx = .text:0x800CF1DC; // type:function size:0x3C +GXLoadTexMtxImm = .text:0x800CF218; // type:function size:0x84 +GXSetViewportJitter = .text:0x800CF29C; // type:function size:0x11C +GXSetViewport = .text:0x800CF3B8; // type:function size:0x24 +GXGetViewportv = .text:0x800CF3DC; // type:function size:0x4C +GXSetScissor = .text:0x800CF428; // type:function size:0xB0 +GXSetScissorBoxOffset = .text:0x800CF4D8; // type:function size:0x44 +GXSetClipMode = .text:0x800CF51C; // type:function size:0x28 +__GXSetMatrixIndex = .text:0x800CF544; // type:function size:0x84 +GXSetGPMetric = .text:0x800CF5C8; // type:function size:0x898 +GXReadGPMetric = .text:0x800CFE60; // type:function size:0x1A8 +GXClearGPMetric = .text:0x800D0008; // type:function size:0x10 +GXReadGP0Metric = .text:0x800D0018; // type:function size:0x2C +GXReadGP1Metric = .text:0x800D0044; // type:function size:0x2C +GXReadMemMetric = .text:0x800D0070; // type:function size:0x214 +GXClearMemMetric = .text:0x800D0284; // type:function size:0xA8 +GXReadPixMetric = .text:0x800D032C; // type:function size:0x138 +GXClearPixMetric = .text:0x800D0464; // type:function size:0x30 +GXSetVCacheMetric = .text:0x800D0494; // type:function size:0x50 +GXReadVCacheMetric = .text:0x800D04E4; // type:function size:0x94 +GXClearVCacheMetric = .text:0x800D0578; // type:function size:0x1C +__CARDDefaultApiCallback = .text:0x800D0594; // type:function size:0x4 +__CARDSyncCallback = .text:0x800D0598; // type:function size:0x34 +__CARDExtHandler = .text:0x800D05CC; // type:function size:0xD8 +__CARDExiHandler = .text:0x800D06A4; // type:function size:0x118 +__CARDTxHandler = .text:0x800D07BC; // type:function size:0xA8 +__CARDUnlockedHandler = .text:0x800D0864; // type:function size:0x84 +__CARDEnableInterrupt = .text:0x800D08E8; // type:function size:0xC0 +__CARDReadStatus = .text:0x800D09A8; // type:function size:0xF0 +__CARDClearStatus = .text:0x800D0A98; // type:function size:0xAC +TimeoutHandler = .text:0x800D0B44; // type:function size:0xA4 +Retry = .text:0x800D0BE8; // type:function size:0x22C scope:local +UnlockedCallback = .text:0x800D0E14; // type:function size:0x110 scope:local +__CARDStart = .text:0x800D0F24; // type:function size:0x1B4 scope:local +__CARDReadSegment = .text:0x800D10D8; // type:function size:0x134 +__CARDWritePage = .text:0x800D120C; // type:function size:0x11C +__CARDEraseSector = .text:0x800D1328; // type:function size:0xE0 +CARDInit = .text:0x800D1408; // type:function size:0x9C +__CARDSetDiskID = .text:0x800D14A4; // type:function size:0x38 +__CARDGetControlBlock = .text:0x800D14DC; // type:function size:0xB8 +__CARDPutControlBlock = .text:0x800D1594; // type:function size:0x64 +CARDFreeBlocks = .text:0x800D15F8; // type:function size:0x150 +CARDGetSectorSize = .text:0x800D1748; // type:function size:0x84 +__CARDSync = .text:0x800D17CC; // type:function size:0x98 +OnReset = .text:0x800D1864; // type:function size:0x50 scope:local +bitrev = .text:0x800D18B4; // type:function size:0x16C scope:local +ReadArrayUnlock = .text:0x800D1A20; // type:function size:0x144 scope:local +DummyLen = .text:0x800D1B64; // type:function size:0xC4 scope:local +__CARDUnlock = .text:0x800D1C28; // type:function size:0xB58 +InitCallback = .text:0x800D2780; // type:function size:0x70 scope:local +DoneCallback = .text:0x800D27F0; // type:function size:0x324 scope:local +BlockReadCallback = .text:0x800D2B14; // type:function size:0xDC scope:local +__CARDRead = .text:0x800D2BF0; // type:function size:0x64 +BlockWriteCallback = .text:0x800D2C54; // type:function size:0xDC scope:local +__CARDWrite = .text:0x800D2D30; // type:function size:0x64 +__CARDGetFatBlock = .text:0x800D2D94; // type:function size:0x8 +fn_800D2D9C = .text:0x800D2D9C; // type:function size:0xD4 scope:local +fn_800D2E70 = .text:0x800D2E70; // type:function size:0xC8 scope:local +__CARDAllocBlock = .text:0x800D2F38; // type:function size:0x118 +__CARDFreeBlock = .text:0x800D3050; // type:function size:0x9C +__CARDUpdateFatBlock = .text:0x800D30EC; // type:function size:0xAC +__CARDGetDirBlock = .text:0x800D3198; // type:function size:0x8 +fn_800D31A0 = .text:0x800D31A0; // type:function size:0xD0 scope:local +fn_800D3270 = .text:0x800D3270; // type:function size:0xC8 scope:local +__CARDUpdateDir = .text:0x800D3338; // type:function size:0xC4 +__CARDCheckSum = .text:0x800D33FC; // type:function size:0x1B0 +VerifyID = .text:0x800D35AC; // type:function size:0x284 scope:local +VerifyDir = .text:0x800D3830; // type:function size:0x240 scope:local +VerifyFAT = .text:0x800D3A70; // type:function size:0x284 scope:local +__CARDVerify = .text:0x800D3CF4; // type:function size:0x8C +CARDCheckExAsync = .text:0x800D3D80; // type:function size:0x590 +CARDCheck = .text:0x800D4310; // type:function size:0x54 +IsCard = .text:0x800D4364; // type:function size:0xCC scope:local +CARDProbeEx = .text:0x800D4430; // type:function size:0x17C +DoMount = .text:0x800D45AC; // type:function size:0x410 scope:local +__CARDMountCallback = .text:0x800D49BC; // type:function size:0x138 +CARDMountAsync = .text:0x800D4AF4; // type:function size:0x1A0 +CARDMount = .text:0x800D4C94; // type:function size:0x48 +DoUnmount = .text:0x800D4CDC; // type:function size:0x9C scope:local +CARDUnmount = .text:0x800D4D78; // type:function size:0xAC +FormatCallback = .text:0x800D4E24; // type:function size:0x144 scope:local +__CARDFormatRegionAsync = .text:0x800D4F68; // type:function size:0x658 +CARDFormat = .text:0x800D55C0; // type:function size:0x54 +__CARDCompareFileName = .text:0x800D5614; // type:function size:0x68 +__CARDAccess = .text:0x800D567C; // type:function size:0x98 +__CARDIsPublic = .text:0x800D5714; // type:function size:0x30 +__CARDGetFileNo = .text:0x800D5744; // type:function size:0x150 +CARDOpen = .text:0x800D5894; // type:function size:0x178 +CARDClose = .text:0x800D5A0C; // type:function size:0x54 +__CARDIsOpened = .text:0x800D5A60; // type:function size:0x8 +CreateCallbackFat = .text:0x800D5A68; // type:function size:0x130 scope:local +CARDCreateAsync = .text:0x800D5B98; // type:function size:0x220 +CARDCreate = .text:0x800D5DB8; // type:function size:0x48 +__CARDSeek = .text:0x800D5E00; // type:function size:0x1B8 +ReadCallback = .text:0x800D5FB8; // type:function size:0x130 scope:local +CARDReadAsync = .text:0x800D60E8; // type:function size:0x148 +CARDRead = .text:0x800D6230; // type:function size:0x48 +WriteCallback = .text:0x800D6278; // type:function size:0x170 scope:local +EraseCallback = .text:0x800D63E8; // type:function size:0xB0 scope:local +CARDWriteAsync = .text:0x800D6498; // type:function size:0x114 +CARDWrite = .text:0x800D65AC; // type:function size:0x48 +DeleteCallback = .text:0x800D65F4; // type:function size:0xA4 scope:local +CARDDeleteAsync = .text:0x800D6698; // type:function size:0x110 +CARDDelete = .text:0x800D67A8; // type:function size:0x48 +UpdateIconOffsets = .text:0x800D67F0; // type:function size:0x1F8 scope:local +CARDGetStatus = .text:0x800D69E8; // type:function size:0x12C +CARDSetStatusAsync = .text:0x800D6B14; // type:function size:0x174 +CARDSetStatus = .text:0x800D6C88; // type:function size:0x48 +CARDGetSerialNo = .text:0x800D6CD0; // type:function size:0xC4 +SetExiInterruptMask = .text:0x800D6D94; // type:function size:0xF4 scope:local +EXIImm = .text:0x800D6E88; // type:function size:0x25C scope:global +EXIImmEx = .text:0x800D70E4; // type:function size:0xA0 +EXIDma = .text:0x800D7184; // type:function size:0xEC scope:global +EXISync = .text:0x800D7270; // type:function size:0x238 scope:global +EXIClearInterrupts = .text:0x800D74A8; // type:function size:0x48 +EXISetExiCallback = .text:0x800D74F0; // type:function size:0x7C +__EXIProbe = .text:0x800D756C; // type:function size:0x174 scope:local +EXIProbe = .text:0x800D76E0; // type:function size:0x80 +EXIProbeEx = .text:0x800D7760; // type:function size:0xB4 +EXIAttach = .text:0x800D7814; // type:function size:0x10C +EXIDetach = .text:0x800D7920; // type:function size:0xBC +EXISelect = .text:0x800D79DC; // type:function size:0x12C scope:global +EXIDeselect = .text:0x800D7B08; // type:function size:0x110 scope:global +EXIIntrruptHandler = .text:0x800D7C18; // type:function size:0xC8 scope:local +TCIntrruptHandler = .text:0x800D7CE0; // type:function size:0x218 scope:local +EXTIntrruptHandler = .text:0x800D7EF8; // type:function size:0xD0 scope:local +EXIInit = .text:0x800D7FC8; // type:function size:0x114 scope:global +EXILock = .text:0x800D80DC; // type:function size:0xF4 scope:global +EXIUnlock = .text:0x800D81D0; // type:function size:0xDC scope:global +EXIGetState = .text:0x800D82AC; // type:function size:0x18 +UnlockedHandler = .text:0x800D82C4; // type:function size:0x28 scope:local +EXIGetID = .text:0x800D82EC; // type:function size:0x37C +InitializeUART = .text:0x800D8668; // type:function size:0x70 +WriteUARTN = .text:0x800D86D8; // type:function size:0x200 +SIBusy = .text:0x800D88D8; // type:function size:0x20 +SIIsChanBusy = .text:0x800D88F8; // type:function size:0x3C +CompleteTransfer = .text:0x800D8934; // type:function size:0x2FC +SIInterruptHandler = .text:0x800D8C30; // type:function size:0x344 scope:local +SIEnablePollingInterrupt = .text:0x800D8F74; // type:function size:0x98 +SIRegisterPollingHandler = .text:0x800D900C; // type:function size:0xCC +SIUnregisterPollingHandler = .text:0x800D90D8; // type:function size:0xF4 +SIInit = .text:0x800D91CC; // type:function size:0xA4 scope:global +__SITransfer = .text:0x800D9270; // type:function size:0x20C +SIGetStatus = .text:0x800D947C; // type:function size:0x7C +SISetCommand = .text:0x800D94F8; // type:function size:0x14 +SITransferCommands = .text:0x800D950C; // type:function size:0x10 +SISetXY = .text:0x800D951C; // type:function size:0x6C scope:global +SIEnablePolling = .text:0x800D9588; // type:function size:0x9C +SIDisablePolling = .text:0x800D9624; // type:function size:0x6C +SIGetResponseRaw = .text:0x800D9690; // type:function size:0xD4 +SIGetResponse = .text:0x800D9764; // type:function size:0xC4 +AlarmHandler = .text:0x800D9828; // type:function size:0x8C scope:local +SITransfer = .text:0x800D98B4; // type:function size:0x16C scope:global +GetTypeCallback = .text:0x800D9A20; // type:function size:0x298 scope:local +SIGetType = .text:0x800D9CB8; // type:function size:0x1C4 scope:global +SIGetTypeAsync = .text:0x800D9E7C; // type:function size:0x13C +SISetSamplingRate = .text:0x800D9FB8; // type:function size:0xE4 scope:global +SIRefreshSamplingRate = .text:0x800DA09C; // type:function size:0x24 +THPVideoDecode = .text:0x800DA0C0; // type:function size:0x244 +__THPSetupBuffers = .text:0x800DA304; // type:function size:0x44 scope:local +__THPReadFrameHeader = .text:0x800DA348; // type:function size:0x13C scope:local +__THPReadScaneHeader = .text:0x800DA484; // type:function size:0x11C scope:local +__THPReadQuantizationTable = .text:0x800DA5A0; // type:function size:0x3BC scope:local +__THPReadHuffmanTableSpecification = .text:0x800DA95C; // type:function size:0x1E0 scope:local +__THPHuffGenerateSizeTable = .text:0x800DAB3C; // type:function size:0xF0 scope:local +__THPHuffGenerateCodeTable = .text:0x800DAC2C; // type:function size:0x68 scope:local +__THPHuffGenerateDecoderTables = .text:0x800DAC94; // type:function size:0x1BC scope:local +__THPRestartDefinition = .text:0x800DAE50; // type:function size:0x54 scope:local +__THPPrepBitStream = .text:0x800DAEA4; // type:function size:0x24C scope:local +__THPDecompressYUV = .text:0x800DB0F0; // type:function size:0x10C scope:local +__THPDecompressiMCURow512x448 = .text:0x800DB1FC; // type:function size:0x1A88 scope:local +__THPDecompressiMCURow640x480 = .text:0x800DCC84; // type:function size:0x1A8C scope:local +__THPDecompressiMCURowNxN = .text:0x800DE710; // type:function size:0x1AAC scope:local +__THPHuffDecodeDCTCompY = .text:0x800E01BC; // type:function size:0x67C scope:local +__THPHuffDecodeDCTCompU = .text:0x800E0838; // type:function size:0x6A8 scope:local +__THPHuffDecodeDCTCompV = .text:0x800E0EE0; // type:function size:0x6A8 scope:local +THPInit = .text:0x800E1588; // type:function size:0x78 +THPAudioDecode = .text:0x800E1600; // type:function size:0x464 +__THPAudioGetNewSample = .text:0x800E1A64; // type:function size:0x90 +__THPAudioInitialize = .text:0x800E1AF4; // type:function size:0x3C +__va_arg = .text:0x800E1B30; // type:function size:0xC8 scope:global +__destroy_global_chain = .text:0x800E1BF8; // type:function size:0x48 scope:global +__register_global_object = .text:0x800E1C40; // type:function size:0x18 scope:global +__dl__FPv = .text:0x800E1C58; // type:function size:0x4C +__dt__Q23std9exceptionFv = .text:0x800E1CA4; // type:function size:0x48 +what__Q23std9exceptionCFv = .text:0x800E1CEC; // type:function size:0xC +__throw_catch_compare = .text:0x800E1CF8; // type:function size:0x22C +unexpected__3stdFv = .text:0x800E1F24; // type:function size:0x28 +terminate__3stdFv = .text:0x800E1F4C; // type:function size:0x28 +duhandler__3stdFv = .text:0x800E1F74; // type:function size:0x28 +dthandler__3stdFv = .text:0x800E1F9C; // type:function size:0x20 +__cvt_fp2unsigned = .text:0x800E1FBC; // type:function size:0x5C +__save_fpr = .text:0x800E2018; // type:function size:0x4C scope:global +_savefpr_14 = .text:0x800E2018; // type:label scope:global +_savefpr_15 = .text:0x800E201C; // type:label scope:global +_savefpr_16 = .text:0x800E2020; // type:label scope:global +_savefpr_17 = .text:0x800E2024; // type:label scope:global +_savefpr_18 = .text:0x800E2028; // type:label scope:global +_savefpr_19 = .text:0x800E202C; // type:label scope:global +_savefpr_20 = .text:0x800E2030; // type:label scope:global +_savefpr_21 = .text:0x800E2034; // type:label scope:global +_savefpr_22 = .text:0x800E2038; // type:label scope:global +_savefpr_23 = .text:0x800E203C; // type:label scope:global +_savefpr_24 = .text:0x800E2040; // type:label scope:global +_savefpr_25 = .text:0x800E2044; // type:label scope:global +_savefpr_26 = .text:0x800E2048; // type:label scope:global +_savefpr_27 = .text:0x800E204C; // type:label scope:global +_savefpr_28 = .text:0x800E2050; // type:label scope:global +_savefpr_29 = .text:0x800E2054; // type:label scope:global +_savefpr_30 = .text:0x800E2058; // type:label scope:global +_savefpr_31 = .text:0x800E205C; // type:label scope:global +__restore_fpr = .text:0x800E2064; // type:function size:0x4C scope:global +_restfpr_14 = .text:0x800E2064; // type:label scope:global +_restfpr_15 = .text:0x800E2068; // type:label scope:global +_restfpr_16 = .text:0x800E206C; // type:label scope:global +_restfpr_17 = .text:0x800E2070; // type:label scope:global +_restfpr_18 = .text:0x800E2074; // type:label scope:global +_restfpr_19 = .text:0x800E2078; // type:label scope:global +_restfpr_20 = .text:0x800E207C; // type:label scope:global +_restfpr_21 = .text:0x800E2080; // type:label scope:global +_restfpr_22 = .text:0x800E2084; // type:label scope:global +_restfpr_23 = .text:0x800E2088; // type:label scope:global +_restfpr_24 = .text:0x800E208C; // type:label scope:global +_restfpr_25 = .text:0x800E2090; // type:label scope:global +_restfpr_26 = .text:0x800E2094; // type:label scope:global +_restfpr_27 = .text:0x800E2098; // type:label scope:global +_restfpr_28 = .text:0x800E209C; // type:label scope:global +_restfpr_29 = .text:0x800E20A0; // type:label scope:global +_restfpr_30 = .text:0x800E20A4; // type:label scope:global +_restfpr_31 = .text:0x800E20A8; // type:label scope:global +__save_gpr = .text:0x800E20B0; // type:function size:0x4C scope:global +_savegpr_14 = .text:0x800E20B0; // type:label scope:global +_savegpr_15 = .text:0x800E20B4; // type:label scope:global +_savegpr_16 = .text:0x800E20B8; // type:label scope:global +_savegpr_17 = .text:0x800E20BC; // type:label scope:global +_savegpr_18 = .text:0x800E20C0; // type:label scope:global +_savegpr_19 = .text:0x800E20C4; // type:label scope:global +_savegpr_20 = .text:0x800E20C8; // type:label scope:global +_savegpr_21 = .text:0x800E20CC; // type:label scope:global +_savegpr_22 = .text:0x800E20D0; // type:label scope:global +_savegpr_23 = .text:0x800E20D4; // type:label scope:global +_savegpr_24 = .text:0x800E20D8; // type:label scope:global +_savegpr_25 = .text:0x800E20DC; // type:label scope:global +_savegpr_26 = .text:0x800E20E0; // type:label scope:global +_savegpr_27 = .text:0x800E20E4; // type:label scope:global +_savegpr_28 = .text:0x800E20E8; // type:label scope:global +_savegpr_29 = .text:0x800E20EC; // type:label scope:global +_savegpr_30 = .text:0x800E20F0; // type:label scope:global +_savegpr_31 = .text:0x800E20F4; // type:label scope:global +__restore_gpr = .text:0x800E20FC; // type:function size:0x4C scope:global +_restgpr_14 = .text:0x800E20FC; // type:label scope:global +_restgpr_15 = .text:0x800E2100; // type:label scope:global +_restgpr_16 = .text:0x800E2104; // type:label scope:global +_restgpr_17 = .text:0x800E2108; // type:label scope:global +_restgpr_18 = .text:0x800E210C; // type:label scope:global +_restgpr_19 = .text:0x800E2110; // type:label scope:global +_restgpr_20 = .text:0x800E2114; // type:label scope:global +_restgpr_21 = .text:0x800E2118; // type:label scope:global +_restgpr_22 = .text:0x800E211C; // type:label scope:global +_restgpr_23 = .text:0x800E2120; // type:label scope:global +_restgpr_24 = .text:0x800E2124; // type:label scope:global +_restgpr_25 = .text:0x800E2128; // type:label scope:global +_restgpr_26 = .text:0x800E212C; // type:label scope:global +_restgpr_27 = .text:0x800E2130; // type:label scope:global +_restgpr_28 = .text:0x800E2134; // type:label scope:global +_restgpr_29 = .text:0x800E2138; // type:label scope:global +_restgpr_30 = .text:0x800E213C; // type:label scope:global +_restgpr_31 = .text:0x800E2140; // type:label scope:global +__div2u = .text:0x800E2148; // type:function size:0xEC scope:global +__div2i = .text:0x800E2234; // type:function size:0x138 +__mod2u = .text:0x800E236C; // type:function size:0xE4 scope:global +__mod2i = .text:0x800E2450; // type:function size:0x10C +__shl2i = .text:0x800E255C; // type:function size:0x24 +__shr2u = .text:0x800E2580; // type:function size:0x24 +__shr2i = .text:0x800E25A4; // type:function size:0x28 +__cvt_dbl_usll = .text:0x800E25CC; // type:function size:0xCC +GetR2__Fv = .text:0x800E2698; // type:function size:0x8 scope:local +__fini_cpp_exceptions = .text:0x800E26A0; // type:function size:0x34 scope:global +__init_cpp_exceptions = .text:0x800E26D4; // type:function size:0x40 scope:global +ExPPC_LongJump__FP12ThrowContextPvPv = .text:0x800E2714; // type:function size:0x104 +__throw = .text:0x800E2818; // type:function size:0x144 +__end__catch = .text:0x800E295C; // type:function size:0x44 +ExPPC_ThrowHandler__FP12ThrowContext = .text:0x800E29A0; // type:function size:0x410 +__unexpected = .text:0x800E2DB0; // type:function size:0x1B4 +__dt__Q23std13bad_exceptionFv = .text:0x800E2F64; // type:function size:0x5C +ExPPC_UnwindStack__FP12ThrowContextP15MWExceptionInfoPv = .text:0x800E2FC0; // type:function size:0x50C +ExPPC_PopStackFrame__FP12ThrowContextP15MWExceptionInfo = .text:0x800E34CC; // type:function size:0x248 +ExPPC_NextAction__FP14ActionIterator = .text:0x800E3714; // type:function size:0x1C0 +ExPPC_FindExceptionRecord__FPcP15MWExceptionInfo = .text:0x800E38D4; // type:function size:0x204 +__unregister_fragment = .text:0x800E3AD8; // type:function size:0x34 scope:global +__register_fragment = .text:0x800E3B0C; // type:function size:0x34 scope:global +what__Q23std13bad_exceptionCFv = .text:0x800E3B40; // type:function size:0xC +__sys_free = .text:0x800E3B4C; // type:function size:0xB8 +exit = .text:0x800E3C04; // type:function size:0xCC scope:global +abort = .text:0x800E3CD0; // type:function size:0x88 +free = .text:0x800E3D58; // type:function size:0x134 +deallocate_from_fixed_pools = .text:0x800E3E8C; // type:function size:0x1FC +SubBlock_merge_next = .text:0x800E4088; // type:function size:0xBC scope:local +Block_link = .text:0x800E4144; // type:function size:0x17C scope:local +__flush_all = .text:0x800E42C0; // type:function size:0x70 +__close_all = .text:0x800E4330; // type:function size:0x98 scope:global +__num2dec = .text:0x800E43C8; // type:function size:0x1A4 +__num2dec_internal = .text:0x800E456C; // type:function size:0x23C scope:local +__two_exp = .text:0x800E47A8; // type:function size:0x340 scope:local +__str2dec = .text:0x800E4AE8; // type:function size:0xEC scope:local +__timesdec = .text:0x800E4BD4; // type:function size:0x28C scope:local +__ull2dec = .text:0x800E4E60; // type:function size:0x110 scope:local +__count_trailing_zerol = .text:0x800E4F70; // type:function size:0x70 scope:local +abs = .text:0x800E4FE0; // type:function size:0x10 +__flush_buffer = .text:0x800E4FF0; // type:function size:0xC4 scope:global +__prep_buffer = .text:0x800E50B4; // type:function size:0x34 scope:global +tolower = .text:0x800E50E8; // type:function size:0x24 +isalpha = .text:0x800E510C; // type:function size:0x18 +__fwrite = .text:0x800E5124; // type:function size:0x30C scope:global +fwrite = .text:0x800E5430; // type:function size:0x20 scope:global +fflush = .text:0x800E5450; // type:function size:0x138 +fclose = .text:0x800E5588; // type:function size:0xC0 +fseek = .text:0x800E5648; // type:function size:0x20 scope:global +_fseek = .text:0x800E5668; // type:function size:0x23C +ftell = .text:0x800E58A4; // type:function size:0x70 +wcstombs = .text:0x800E5914; // type:function size:0xA0 scope:global +unicode_to_UTF8 = .text:0x800E59B4; // type:function size:0xA4 scope:local +memcmp = .text:0x800E5A58; // type:function size:0x4C +__memrchr = .text:0x800E5AA4; // type:function size:0x2C scope:global +memchr = .text:0x800E5AD0; // type:function size:0x2C scope:global +memmove = .text:0x800E5AFC; // type:function size:0xCC +__copy_longs_rev_unaligned = .text:0x800E5BC8; // type:function size:0xB0 +__copy_longs_unaligned = .text:0x800E5C78; // type:function size:0xC4 +__copy_longs_rev_aligned = .text:0x800E5D3C; // type:function size:0xAC +__copy_longs_aligned = .text:0x800E5DE8; // type:function size:0xC0 +__stdio_atexit = .text:0x800E5EA8; // type:function size:0x10 scope:global +sprintf = .text:0x800E5EB8; // type:function size:0xE0 +vsprintf = .text:0x800E5F98; // type:function size:0x78 +vsnprintf = .text:0x800E6010; // type:function size:0x74 +vprintf = .text:0x800E6084; // type:function size:0x7C scope:global +printf = .text:0x800E6100; // type:function size:0xCC +__StringWrite = .text:0x800E61CC; // type:function size:0x6C +__FileWrite = .text:0x800E6238; // type:function size:0x58 scope:global +__pformatter = .text:0x800E6290; // type:function size:0x774 scope:local +float2str = .text:0x800E6A04; // type:function size:0x6EC scope:local +round_decimal = .text:0x800E70F0; // type:function size:0x12C +double2hex = .text:0x800E721C; // type:function size:0x338 scope:local +longlong2str = .text:0x800E7554; // type:function size:0x2DC scope:local +long2str = .text:0x800E7830; // type:function size:0x220 scope:local +parse_format = .text:0x800E7A50; // type:function size:0x504 scope:local +raise = .text:0x800E7F54; // type:function size:0xB0 +strchr = .text:0x800E8004; // type:function size:0x30 scope:global +strncmp = .text:0x800E8034; // type:function size:0x40 +strcmp = .text:0x800E8074; // type:function size:0x128 +strcat = .text:0x800E819C; // type:function size:0x44 +strcpy = .text:0x800E81E0; // type:function size:0xB8 +strlen = .text:0x800E8298; // type:function size:0x1C scope:global +__close_console = .text:0x800E82B4; // type:function size:0x8 +__write_console = .text:0x800E82BC; // type:function size:0xC4 +fwide = .text:0x800E8380; // type:function size:0x88 scope:global +__ieee754_acos = .text:0x800E8408; // type:function size:0x310 +__ieee754_asin = .text:0x800E8718; // type:function size:0x264 +__ieee754_atan2 = .text:0x800E897C; // type:function size:0x290 +__ieee754_fmod = .text:0x800E8C0C; // type:function size:0x33C +__ieee754_pow = .text:0x800E8F48; // type:function size:0x88C +__ieee754_rem_pio2 = .text:0x800E97D4; // type:function size:0x3A0 +__kernel_cos = .text:0x800E9B74; // type:function size:0xF4 +__kernel_rem_pio2 = .text:0x800E9C68; // type:function size:0xE54 +__kernel_sin = .text:0x800EAABC; // type:function size:0xA0 +__kernel_tan = .text:0x800EAB5C; // type:function size:0x214 +atan = .text:0x800EAD70; // type:function size:0x200 +copysign = .text:0x800EAF70; // type:function size:0x28 +cos = .text:0x800EAF98; // type:function size:0xD4 +floor = .text:0x800EB06C; // type:function size:0x148 +frexp = .text:0x800EB1B4; // type:function size:0x8C +ldexp = .text:0x800EB240; // type:function size:0x1C4 +modf = .text:0x800EB404; // type:function size:0xFC +sin = .text:0x800EB500; // type:function size:0xD8 +tan = .text:0x800EB5D8; // type:function size:0x78 +acos = .text:0x800EB650; // type:function size:0x20 +asin = .text:0x800EB670; // type:function size:0x20 +atan2 = .text:0x800EB690; // type:function size:0x20 +fmod = .text:0x800EB6B0; // type:function size:0x20 +pow = .text:0x800EB6D0; // type:function size:0x20 +tanf = .text:0x800EB6F0; // type:function size:0x24 +sinf = .text:0x800EB714; // type:function size:0x24 +cosf = .text:0x800EB738; // type:function size:0x24 +atan2f = .text:0x800EB75C; // type:function size:0x24 +acosf = .text:0x800EB780; // type:function size:0x24 +TRKNubMainLoop = .text:0x800EB7A4; // type:function size:0xF8 scope:global +TRKDestructEvent = .text:0x800EB89C; // type:function size:0x24 scope:global +TRKConstructEvent = .text:0x800EB8C0; // type:function size:0x18 +TRKPostEvent = .text:0x800EB8D8; // type:function size:0xE0 +TRKGetNextEvent = .text:0x800EB9B8; // type:function size:0xB4 scope:global +TRKInitializeEventQueue = .text:0x800EBA6C; // type:function size:0x58 scope:global +TRKNubWelcome = .text:0x800EBAC4; // type:function size:0x28 scope:global +TRKTerminateNub = .text:0x800EBAEC; // type:function size:0x24 scope:global +TRKInitializeNub = .text:0x800EBB10; // type:function size:0x134 scope:global +TRKMessageSend = .text:0x800EBC44; // type:function size:0x1DC +TRKReadBuffer_ui32 = .text:0x800EBE20; // type:function size:0xF0 +TRKReadBuffer_ui8 = .text:0x800EBF10; // type:function size:0x98 +TRKReadBuffer1_ui64 = .text:0x800EBFA8; // type:function size:0xE8 +TRKReadBuffer1_ui32 = .text:0x800EC090; // type:function size:0xC8 +TRKReadBuffer1_ui16 = .text:0x800EC158; // type:function size:0xB8 +TRKReadBuffer1_ui8 = .text:0x800EC210; // type:function size:0x80 +TRKAppendBuffer_ui32 = .text:0x800EC290; // type:function size:0xA8 +TRKAppendBuffer_ui8 = .text:0x800EC338; // type:function size:0x68 +TRKAppendBuffer1_ui64 = .text:0x800EC3A0; // type:function size:0x88 +TRKAppendBuffer1_ui32 = .text:0x800EC428; // type:function size:0x64 +TRKAppendBuffer1_ui16 = .text:0x800EC48C; // type:function size:0x54 +TRKReadBuffer = .text:0x800EC4E0; // type:function size:0x8C +TRKAppendBuffer = .text:0x800EC56C; // type:function size:0xA4 +TRKSetBufferPosition = .text:0x800EC610; // type:function size:0x30 +TRKResetBuffer = .text:0x800EC640; // type:function size:0x40 +TRKReleaseBuffer = .text:0x800EC680; // type:function size:0x64 +TRKGetBuffer = .text:0x800EC6E4; // type:function size:0x2C scope:global +TRKGetFreeBuffer = .text:0x800EC710; // type:function size:0xC8 +TRKInitializeMessageBuffers = .text:0x800EC7D8; // type:function size:0x74 scope:global +TRKTerminateSerialHandler = .text:0x800EC84C; // type:function size:0x8 +TRKInitializeSerialHandler = .text:0x800EC854; // type:function size:0x24 scope:global +TRKProcessInput = .text:0x800EC878; // type:function size:0x50 +TRKGetInput = .text:0x800EC8C8; // type:function size:0x98 scope:global +TRKTestForPacket = .text:0x800EC960; // type:function size:0x2B8 +usr_put_initialize = .text:0x800ECC18; // type:function size:0x4 scope:global +usr_puts_serial = .text:0x800ECC1C; // type:function size:0x88 +TRKDispatchMessage = .text:0x800ECCA4; // type:function size:0x84 scope:global +TRKInitializeDispatcher = .text:0x800ECD28; // type:function size:0x18 scope:global +TRKDoSetOption = .text:0x800ECD40; // type:function size:0x1A4 +TRKDoStop = .text:0x800ECEE4; // type:function size:0x100 +TRKDoStep = .text:0x800ECFE4; // type:function size:0x530 +TRKDoContinue = .text:0x800ED514; // type:function size:0x154 +TRKDoFlushCache = .text:0x800ED668; // type:function size:0x2F8 +TRKDoWriteRegisters = .text:0x800ED960; // type:function size:0x3C8 +TRKDoReadRegisters = .text:0x800EDD28; // type:function size:0x3CC +TRKDoWriteMemory = .text:0x800EE0F4; // type:function size:0x420 +TRKDoReadMemory = .text:0x800EE514; // type:function size:0x410 +TRKDoCPUType = .text:0x800EE924; // type:function size:0x398 +TRKDoSupportMask = .text:0x800EECBC; // type:function size:0x230 +TRKDoVersions = .text:0x800EEEEC; // type:function size:0x2D8 +TRKDoReset = .text:0x800EF1C4; // type:function size:0xB8 +TRKDoDisconnect = .text:0x800EF27C; // type:function size:0xE4 +TRKDoConnect = .text:0x800EF360; // type:function size:0xBC +TRKDoUnsupported = .text:0x800EF41C; // type:function size:0xB0 +TRKStandardACK = .text:0x800EF4CC; // type:function size:0xB8 +SetTRKConnected = .text:0x800EF584; // type:function size:0xC +GetTRKConnected = .text:0x800EF590; // type:function size:0x10 +HandlePositionFileSupportRequest = .text:0x800EF5A0; // type:function size:0x190 +HandleCloseFileSupportRequest = .text:0x800EF730; // type:function size:0x120 +HandleOpenFileSupportRequest = .text:0x800EF850; // type:function size:0x1A8 +TRKRequestSend = .text:0x800EF9F8; // type:function size:0x1A4 +TRKSuppAccessFile = .text:0x800EFB9C; // type:function size:0x2C4 +TRKReleaseMutex = .text:0x800EFE60; // type:function size:0x8 +TRKAcquireMutex = .text:0x800EFE68; // type:function size:0x8 +TRKInitializeMutex = .text:0x800EFE70; // type:function size:0x8 +TRKDoNotifyStopped = .text:0x800EFE78; // type:function size:0xD8 +TRK_flush_cache = .text:0x800EFF50; // type:function size:0x38 +TRK_fill_mem = .text:0x800EFF88; // type:function size:0xBC +__TRK_get_MSR = .text:0x800F0044; // type:function size:0x8 +__TRK_set_MSR = .text:0x800F004C; // type:function size:0x8 +TRK_ppc_memcpy = .text:0x800F0054; // type:function size:0x3C +TRKInterruptHandler = .text:0x800F0090; // type:function size:0x194 scope:global +TRKExceptionHandler = .text:0x800F0224; // type:function size:0x9C scope:global +TRKSwapAndGo = .text:0x800F02C0; // type:function size:0xC4 scope:global +TRKInterruptHandlerEnableInterrupts = .text:0x800F0384; // type:function size:0x54 scope:global +TRKTargetSetInputPendingPtr = .text:0x800F03D8; // type:function size:0x10 scope:global +TRKPPCAccessFPRegister = .text:0x800F03E8; // type:function size:0x21C +TRKTargetStop = .text:0x800F0604; // type:function size:0x18 +TRKTargetSetStopped = .text:0x800F061C; // type:function size:0x10 scope:global +TRKTargetStopped = .text:0x800F062C; // type:function size:0x10 scope:global +TRKTargetFlushCache = .text:0x800F063C; // type:function size:0x3C +TRKTargetSupportRequest = .text:0x800F0678; // type:function size:0x208 scope:global +TRKTargetGetPC = .text:0x800F0880; // type:function size:0x10 +TRKTargetStepOutOfRange = .text:0x800F0890; // type:function size:0x7C +TRKTargetSingleStep = .text:0x800F090C; // type:function size:0x6C +TRKTargetAddExceptionInfo = .text:0x800F0978; // type:function size:0xAC +TRKTargetAddStopInfo = .text:0x800F0A24; // type:function size:0x124 +TRKTargetInterrupt = .text:0x800F0B48; // type:function size:0x15C scope:global +TRKPostInterruptEvent = .text:0x800F0CA4; // type:function size:0xC0 scope:global +TRKTargetCPUType = .text:0x800F0D64; // type:function size:0x60 +TRKTargetSupportMask = .text:0x800F0DC4; // type:function size:0xA4 +TRKTargetVersions = .text:0x800F0E68; // type:function size:0x24 +TRKTargetAccessExtended2 = .text:0x800F0E8C; // type:function size:0x438 +TRKTargetAccessExtended1 = .text:0x800F12C4; // type:function size:0x170 +TRKTargetAccessFP = .text:0x800F1434; // type:function size:0x13C +TRKTargetAccessDefault = .text:0x800F1570; // type:function size:0xF4 +TRKTargetAccessMemory = .text:0x800F1664; // type:function size:0x14C +TRKValidMemory32 = .text:0x800F17B0; // type:function size:0x124 +TRKAccessFile = .text:0x800F18E0; // type:function size:0x8 +TRKOpenFile = .text:0x800F18E8; // type:function size:0x8 +TRKCloseFile = .text:0x800F18F0; // type:function size:0x8 +TRKPositionFile = .text:0x800F18F8; // type:function size:0x8 +InitMetroTRK = .text:0x800F1900; // type:function size:0x94 scope:global +TRKInitializeTarget = .text:0x800F1994; // type:function size:0x4C scope:global +TRKTargetTranslate = .text:0x800F19E0; // type:function size:0x40 +EnableMetroTRKInterrupts = .text:0x800F1A20; // type:function size:0x20 scope:global +TRKSaveExtended1Block = .text:0x800F1A40; // type:function size:0x1B8 scope:global +TRKRestoreExtended1Block = .text:0x800F1BF8; // type:function size:0x1B8 scope:global +TRKTargetCPUMinorType = .text:0x800F1DB0; // type:function size:0x8 +TRK_main = .text:0x800F1DB8; // type:function size:0x44 scope:global +TRKLoadContext = .text:0x800F1DFC; // type:function size:0x88 scope:global +TRKUARTInterruptHandler = .text:0x800F1E84; // type:function size:0x4 scope:global +TRK_board_display = .text:0x800F1E88; // type:function size:0x24 scope:global +UnreserveEXI2Port = .text:0x800F1EAC; // type:function size:0x30 scope:global +ReserveEXI2Port = .text:0x800F1EDC; // type:function size:0x30 scope:global +TRKReadUARTPoll = .text:0x800F1F0C; // type:function size:0xF0 +WriteUART1 = .text:0x800F1FFC; // type:function size:0x28 +WriteUARTFlush = .text:0x800F2024; // type:function size:0xE0 +EnableEXI2Interrupts = .text:0x800F2104; // type:function size:0x30 +TRKInitializeIntDrivenUART = .text:0x800F2134; // type:function size:0x3C scope:global +InitMetroTRKCommTable = .text:0x800F2170; // type:function size:0x100 scope:global +TRKEXICallBack = .text:0x800F2270; // type:function size:0x38 scope:global +TRKTargetContinue = .text:0x800F22A8; // type:function size:0x34 scope:global +GetUseSerialIO = .text:0x800F22DC; // type:function size:0x10 +SetUseSerialIO = .text:0x800F22EC; // type:function size:0xC +__TRK_write_console = .text:0x800F22F8; // type:function size:0xBC +__read_console = .text:0x800F23B4; // type:function size:0xBC +seqGetPrivateId = .text:0x800F2470; // type:function size:0x68 +seqStartPlay = .text:0x800F24D8; // type:function size:0xAC4 +StartPause = .text:0x800F2F9C; // type:function size:0x64 +seqPause = .text:0x800F3000; // type:function size:0x27C +seqStop = .text:0x800F327C; // type:function size:0x2B0 +seqKillInstancesByGroupID = .text:0x800F352C; // type:function size:0x90 +seqSpeed = .text:0x800F35BC; // type:function size:0xE4 +seqContinue = .text:0x800F36A0; // type:function size:0x108 +seqMute = .text:0x800F37A8; // type:function size:0xBC +seqVolume = .text:0x800F3864; // type:function size:0x1CC +seqCrossFade = .text:0x800F3A30; // type:function size:0xB58 +GenerateNextTrackEvent = .text:0x800F4588; // type:function size:0x218 scope:local +HandleEvent = .text:0x800F47A0; // type:function size:0xA94 scope:local +InitTrackEvents = .text:0x800F5234; // type:function size:0x174 scope:local +HandleTrackEvents = .text:0x800F53A8; // type:function size:0x49C scope:local +seqHandle = .text:0x800F5844; // type:function size:0x9F4 +seqInit = .text:0x800F6238; // type:function size:0x1A8 +synthSetBpm = .text:0x800F63E0; // type:function size:0x44 +synthGetTicksPerSecond = .text:0x800F6424; // type:function size:0x34 +synthInitPortamento = .text:0x800F6458; // type:function size:0x78 +do_voice_portamento = .text:0x800F64D0; // type:function size:0x2A0 scope:local +StartLayer = .text:0x800F6770; // type:function size:0x3C0 scope:local +StartKeymap = .text:0x800F6B30; // type:function size:0x25C scope:local +synthStartSound = .text:0x800F6D8C; // type:function size:0x45C +LowPrecisionHandler = .text:0x800F71E8; // type:function size:0x744 scope:local +ZeroOffsetHandler = .text:0x800F792C; // type:function size:0x6FC scope:local +synthAddJob = .text:0x800F8028; // type:function size:0x150 scope:local +synthStartSynthJobHandling = .text:0x800F8178; // type:function size:0x64 +synthForceLowPrecisionUpdate = .text:0x800F81DC; // type:function size:0x44 +synthKeyStateUpdate = .text:0x800F8220; // type:function size:0x28 +synthHandle = .text:0x800F8248; // type:function size:0x510 +synthFXGetMaxVoices = .text:0x800F8758; // type:function size:0x34 +synthFXStart = .text:0x800F878C; // type:function size:0xC8 +synthFXSetCtrl = .text:0x800F8854; // type:function size:0xE4 +synthFXSetCtrl14 = .text:0x800F8938; // type:function size:0xE4 +synthFXCloneMidiSetup = .text:0x800F8A1C; // type:function size:0x84 +synthSendKeyOff = .text:0x800F8AA0; // type:function size:0x88 +synthVolume = .text:0x800F8B28; // type:function size:0x530 +synthIsFadeOutActive = .text:0x800F9058; // type:function size:0x54 +synthSetMusicVolumeType = .text:0x800F90AC; // type:function size:0x28 +synthHWMessageHandler = .text:0x800F90D4; // type:function size:0xD0 +synthInit = .text:0x800F91A4; // type:function size:0x574 +synthExit = .text:0x800F9718; // type:function size:0x24 +sndSeqGetValid = .text:0x800F973C; // type:function size:0x30 +sndSeqPause = .text:0x800F976C; // type:function size:0x38 +sndSeqStop = .text:0x800F97A4; // type:function size:0x38 +sndSeqSpeed = .text:0x800F97DC; // type:function size:0x48 +sndSeqContinue = .text:0x800F9824; // type:function size:0x38 +sndSeqMute = .text:0x800F985C; // type:function size:0x58 +sndSeqVolume = .text:0x800F98B4; // type:function size:0x68 +sndSeqGetMidiCtrl = .text:0x800F991C; // type:function size:0x84 +seqGetMIDIPriority = .text:0x800F99A0; // type:function size:0x1C +sndFXCtrl = .text:0x800F99BC; // type:function size:0x60 +sndFXCtrl14 = .text:0x800F9A1C; // type:function size:0x60 +sndFXKeyOff = .text:0x800F9A7C; // type:function size:0x40 +sndFXStartParaInfo = .text:0x800F9ABC; // type:function size:0xE0 +sndFXCheck = .text:0x800F9B9C; // type:function size:0x40 +sndSendMessage = .text:0x800F9BDC; // type:function size:0x50 +sndVolume = .text:0x800F9C2C; // type:function size:0x60 +sndMasterVolume = .text:0x800F9C8C; // type:function size:0x94 +sndOutputMode = .text:0x800F9D20; // type:function size:0xEC +sndSetAuxProcessingCallbacks = .text:0x800F9E0C; // type:function size:0x158 +synthActivateStudio = .text:0x800F9F64; // type:function size:0xA8 +synthDeactivateStudio = .text:0x800FA00C; // type:function size:0xF0 +synthAddStudioInput = .text:0x800FA0FC; // type:function size:0x20 +synthRemoveStudioInput = .text:0x800FA11C; // type:function size:0x20 +streamInit = .text:0x800FA13C; // type:function size:0xBC +SetHWMix = .text:0x800FA1F8; // type:function size:0x8C scope:local +streamHandle = .text:0x800FA284; // type:function size:0x8AC +streamCorrectLoops = .text:0x800FAB30; // type:function size:0x4 +streamKill = .text:0x800FAB34; // type:function size:0x84 +GetPrivateIndex = .text:0x800FABB8; // type:function size:0x160 +sndStreamARAMUpdate = .text:0x800FAD18; // type:function size:0x2C4 +CheckOutputMode = .text:0x800FAFDC; // type:function size:0x34 +SetupVolumeAndPan = .text:0x800FB010; // type:function size:0x44 +streamOutputModeChanged = .text:0x800FB054; // type:function size:0x130 +sndStreamAllocEx = .text:0x800FB184; // type:function size:0x458 +sndStreamAllocLength = .text:0x800FB5DC; // type:function size:0x44 +sndStreamADPCMParameter = .text:0x800FB620; // type:function size:0x6E8 +sndStreamMixParameterEx = .text:0x800FBD08; // type:function size:0x560 +sndStreamFrq = .text:0x800FC268; // type:function size:0x654 +sndStreamFree = .text:0x800FC8BC; // type:function size:0x6B8 +sndStreamActivate = .text:0x800FCF74; // type:function size:0x634 +sndStreamDeactivate = .text:0x800FD5A8; // type:function size:0x700 +dataInsertKeymap = .text:0x800FDCA8; // type:function size:0x1F0 +dataRemoveKeymap = .text:0x800FDE98; // type:function size:0x17C +dataInsertLayer = .text:0x800FE014; // type:function size:0x248 +dataRemoveLayer = .text:0x800FE25C; // type:function size:0x1C4 +dataInsertCurve = .text:0x800FE420; // type:function size:0x204 +dataRemoveCurve = .text:0x800FE624; // type:function size:0x17C +dataInsertSDir = .text:0x800FE7A0; // type:function size:0x188 +dataRemoveSDir = .text:0x800FE928; // type:function size:0x2C8 +dataAddSampleReference = .text:0x800FEBF0; // type:function size:0xD8 +dataRemoveSampleReference = .text:0x800FECC8; // type:function size:0x98 +dataInsertFX = .text:0x800FED60; // type:function size:0x11C +dataRemoveFX = .text:0x800FEE7C; // type:function size:0x15C +dataInsertMacro = .text:0x800FEFD8; // type:function size:0x304 +dataRemoveMacro = .text:0x800FF2DC; // type:function size:0x284 +maccmp = .text:0x800FF560; // type:function size:0x10 scope:local +dataGetMacro = .text:0x800FF570; // type:function size:0x8C +smpcmp = .text:0x800FF5FC; // type:function size:0x10 scope:local +dataGetSample = .text:0x800FF60C; // type:function size:0x128 +curvecmp = .text:0x800FF734; // type:function size:0x10 scope:local +dataGetCurve = .text:0x800FF744; // type:function size:0x5C +dataGetKeymap = .text:0x800FF7A0; // type:function size:0x5C +layercmp = .text:0x800FF7FC; // type:function size:0x10 scope:local +dataGetLayer = .text:0x800FF80C; // type:function size:0x7C +fxcmp = .text:0x800FF888; // type:function size:0x10 scope:local +dataGetFX = .text:0x800FF898; // type:function size:0x9C +dataInit = .text:0x800FF934; // type:function size:0xE4 +dataExit = .text:0x800FFA18; // type:function size:0x20 +mcmdWait = .text:0x800FFA38; // type:function size:0x2F0 scope:local +mcmdGosub = .text:0x800FFD28; // type:function size:0xD0 scope:local +mcmdLoop = .text:0x800FFDF8; // type:function size:0x154 scope:local +mcmdPlayMacro = .text:0x800FFF4C; // type:function size:0x18C scope:local +mcmdAddKey = .text:0x801000D8; // type:function size:0xD8 scope:local +mcmdStartSample = .text:0x801001B0; // type:function size:0x1FC scope:local +mcmdVibrato = .text:0x801003AC; // type:function size:0x17C scope:local +DoSetPitch = .text:0x80100528; // type:function size:0x1A0 scope:local +mcmdSetADSR = .text:0x801006C8; // type:function size:0x258 scope:local +mcmdSetADSRFromCtrl = .text:0x80100920; // type:function size:0x12C scope:local +mcmdSetPitchADSR = .text:0x80100A4C; // type:function size:0x27C scope:local +mcmdSetPanning = .text:0x80100CC8; // type:function size:0x9C scope:local +mcmdSetSurroundPanning = .text:0x80100D64; // type:function size:0x9C scope:local +mcmdScaleVolume = .text:0x80100E00; // type:function size:0x134 scope:local +mcmdEnvelope = .text:0x80100F34; // type:function size:0x130 scope:local +mcmdFadeIn = .text:0x80101064; // type:function size:0x13C scope:local +mcmdRandomKey = .text:0x801011A0; // type:function size:0x19C scope:local +mcmdVolumeSelect = .text:0x8010133C; // type:function size:0x104 scope:local +mcmdPanningSelect = .text:0x80101440; // type:function size:0x104 scope:local +mcmdPitchWheelSelect = .text:0x80101544; // type:function size:0x104 scope:local +mcmdModWheelSelect = .text:0x80101648; // type:function size:0x104 scope:local +mcmdPedalSelect = .text:0x8010174C; // type:function size:0x104 scope:local +mcmdPortamentoSelect = .text:0x80101850; // type:function size:0x104 scope:local +mcmdReverbSelect = .text:0x80101954; // type:function size:0x104 scope:local +mcmdPreAuxASelect = .text:0x80101A58; // type:function size:0x104 scope:local +mcmdPreAuxBSelect = .text:0x80101B5C; // type:function size:0x104 scope:local +mcmdPostAuxBSelect = .text:0x80101C60; // type:function size:0x104 scope:local +mcmdSurroundPanningSelect = .text:0x80101D64; // type:function size:0x104 scope:local +mcmdDopplerSelect = .text:0x80101E68; // type:function size:0x104 scope:local +mcmdTremoloSelect = .text:0x80101F6C; // type:function size:0x104 scope:local +mcmdAuxAFXSelect = .text:0x80102070; // type:function size:0x17C scope:local +mcmdAuxBFXSelect = .text:0x801021EC; // type:function size:0x17C scope:local +mcmdPortamento = .text:0x80102368; // type:function size:0x164 scope:local +varGet = .text:0x801024CC; // type:function size:0x68 +mcmdVarCalculation = .text:0x80102534; // type:function size:0x220 scope:local +mcmdIfVarCompare = .text:0x80102754; // type:function size:0x14C scope:local +macPostMessage = .text:0x801028A0; // type:function size:0xBC +mcmdSendMessage = .text:0x8010295C; // type:function size:0x244 scope:local +mcmdGetVID = .text:0x80102BA0; // type:function size:0x80 scope:local +mcmdSetKeyGroup = .text:0x80102C20; // type:function size:0xDC scope:local +macHandleActive = .text:0x80102CFC; // type:function size:0xF58 scope:local +macHandle = .text:0x80103C54; // type:function size:0x150 +macSampleEndNotify = .text:0x80103DA4; // type:function size:0xAC +macSetExternalKeyoff = .text:0x80103E50; // type:function size:0xF0 +macSetPedalState = .text:0x80103F40; // type:function size:0x108 +TimeQueueAdd = .text:0x80104048; // type:function size:0xA4 scope:local +macMakeActive = .text:0x801040EC; // type:function size:0x108 +macMakeInactive = .text:0x801041F4; // type:function size:0xFC +macStart = .text:0x801042F0; // type:function size:0x438 +macInit = .text:0x80104728; // type:function size:0x68 +vidInit = .text:0x80104790; // type:function size:0xE0 +vidRemoveVoiceReferences = .text:0x80104870; // type:function size:0x350 +vidMakeRoot = .text:0x80104BC0; // type:function size:0x14 +vidMakeNew = .text:0x80104BD4; // type:function size:0x104 +vidGetInternalId = .text:0x80104CD8; // type:function size:0x50 +voiceSetPriority = .text:0x80104D28; // type:function size:0x24C +voiceAllocate = .text:0x80104F74; // type:function size:0x460 +voiceFree = .text:0x801053D4; // type:function size:0x1C4 +synthInitAllocationAids = .text:0x80105598; // type:function size:0x2A0 +voiceBlock = .text:0x80105838; // type:function size:0xFC +voiceUnblock = .text:0x80105934; // type:function size:0x218 +voiceKill = .text:0x80105B4C; // type:function size:0x234 +voiceKillSound = .text:0x80105D80; // type:function size:0xC4 +synthKillVoicesByMacroReferences = .text:0x80105E44; // type:function size:0x15C +voiceIsLastStarted = .text:0x80105FA0; // type:function size:0x74 +voiceSetLastStarted = .text:0x80106014; // type:function size:0x54 +voiceResetLastStarted = .text:0x80106068; // type:function size:0x74 +voiceInitLastStarted = .text:0x801060DC; // type:function size:0x144 +sndPitchUpOne = .text:0x80106220; // type:function size:0x3C +sndGetPitch = .text:0x8010625C; // type:function size:0xE4 +adsrConvertTimeCents = .text:0x80106340; // type:function size:0x58 +salChangeADSRState = .text:0x80106398; // type:function size:0x26C +adsrSetup = .text:0x80106604; // type:function size:0x28 +adsrStartRelease = .text:0x8010662C; // type:function size:0x150 +adsrRelease = .text:0x8010677C; // type:function size:0x168 +adsrHandle = .text:0x801068E4; // type:function size:0x198 +adsrHandleLowPrecision = .text:0x80106A7C; // type:function size:0x84 +vsInit = .text:0x80106B00; // type:function size:0xBC +vsSampleStartNotify = .text:0x80106BBC; // type:function size:0x248 +vsSampleEndNotify = .text:0x80106E04; // type:function size:0xA8 +vsUpdateBuffer = .text:0x80106EAC; // type:function size:0x1F8 +vsSampleUpdates = .text:0x801070A4; // type:function size:0x1E4 +dataInitStack = .text:0x80107288; // type:function size:0xC +InsertData = .text:0x80107294; // type:function size:0x27C scope:local +sndPushGroup = .text:0x80107510; // type:function size:0x32C +sndPopGroup = .text:0x8010783C; // type:function size:0x33C +seqPlaySong = .text:0x80107B78; // type:function size:0x14C +sndSeqPlayEx = .text:0x80107CC4; // type:function size:0x11C +salInitDspCtrl = .text:0x80107DE0; // type:function size:0x3B4 +salInitHRTFBuffer = .text:0x80108194; // type:function size:0x38 +salExitDspCtrl = .text:0x801081CC; // type:function size:0xE0 +salActivateStudio = .text:0x801082AC; // type:function size:0x150 +salDeactivateStudio = .text:0x801083FC; // type:function size:0x20 +salCheckVolErrorAndResetDelta = .text:0x8010841C; // type:function size:0xF4 +sal_setup_dspvol = .text:0x80108510; // type:function size:0x48 scope:local +sal_update_hostplayinfo = .text:0x80108558; // type:function size:0x74 scope:local +DoDepopFade = .text:0x801085CC; // type:function size:0xAC scope:local +HandleDepopVoice = .text:0x80108678; // type:function size:0x2DC scope:local +SortVoices = .text:0x80108954; // type:function size:0x258 scope:local +salBuildCommandList = .text:0x80108BAC; // type:function size:0x21B8 +salSynthSendMessage = .text:0x8010AD64; // type:function size:0x44 +salActivateVoice = .text:0x8010ADA8; // type:function size:0xA0 +salDeactivateVoice = .text:0x8010AE48; // type:function size:0x60 +salReconnectVoice = .text:0x8010AEA8; // type:function size:0xC8 +salAddStudioInput = .text:0x8010AF70; // type:function size:0xA8 +salRemoveStudioInput = .text:0x8010B018; // type:function size:0x84 +salHandleAuxProcessing = .text:0x8010B09C; // type:function size:0x158 +salCalcVolume = .text:0x8010B1F4; // type:function size:0x6F0 +CheckRoomStatus = .text:0x8010B8E4; // type:function size:0x4B4 scope:local +CalcEmitter = .text:0x8010BD98; // type:function size:0x51C scope:local +sndUpdateEmitter = .text:0x8010C2B4; // type:function size:0x130 +sndCheckEmitter = .text:0x8010C3E4; // type:function size:0x20 +AddEmitter = .text:0x8010C404; // type:function size:0x3F8 scope:local +sndAddEmitterParaEx = .text:0x8010C7FC; // type:function size:0x50 +sndRemoveEmitter = .text:0x8010C84C; // type:function size:0xA8 +sndEmitterVoiceID = .text:0x8010C8F4; // type:function size:0x5C +s3dKillEmitterByFXID = .text:0x8010C950; // type:function size:0xFC +sndUpdateListener = .text:0x8010CA4C; // type:function size:0x204 +sndAddListenerEx = .text:0x8010CC50; // type:function size:0x230 +sndRemoveListener = .text:0x8010CE80; // type:function size:0xD0 +AddStartingEmitter = .text:0x8010CF50; // type:function size:0x14C scope:local +StartContinousEmitters = .text:0x8010D09C; // type:function size:0x3B0 scope:local +s3dHandle = .text:0x8010D44C; // type:function size:0x82C +s3dInit = .text:0x8010DC78; // type:function size:0x38 +s3dExit = .text:0x8010DCB0; // type:function size:0x4 +sndInit = .text:0x8010DCB4; // type:function size:0x118 +sndQuit = .text:0x8010DDCC; // type:function size:0x34 +sndIsInstalled = .text:0x8010DE00; // type:function size:0x8 +salApplyMatrix = .text:0x8010DE08; // type:function size:0xAC +salNormalizeVector = .text:0x8010DEB4; // type:function size:0xB4 +salCrossProduct = .text:0x8010DF68; // type:function size:0x64 +salInvertMatrix = .text:0x8010DFCC; // type:function size:0x1FC +inpSetGlobalMIDIDirtyFlag = .text:0x8010E1C8; // type:function size:0x24 +inpSetMidiCtrl = .text:0x8010E1EC; // type:function size:0x608 +inpSetMidiCtrl14 = .text:0x8010E7F4; // type:function size:0x124 +inpResetMidiCtrl = .text:0x8010E918; // type:function size:0xF0 +inpGetMidiCtrl = .text:0x8010EA08; // type:function size:0x2C4 +inpGetChannelDefaults = .text:0x8010ECCC; // type:function size:0x34 +inpResetChannelDefaults = .text:0x8010ED00; // type:function size:0x3C +inpAddCtrl = .text:0x8010ED3C; // type:function size:0x98 +inpFXCopyCtrl = .text:0x8010EDD4; // type:function size:0x114 +inpSetMidiLastNote = .text:0x8010EEE8; // type:function size:0x3C +inpGetMidiLastNote = .text:0x8010EF24; // type:function size:0x3C +_GetInputValue = .text:0x8010EF60; // type:function size:0x4A0 scope:local +inpGetVolume = .text:0x8010F400; // type:function size:0x48 +inpGetPanning = .text:0x8010F448; // type:function size:0x48 +inpGetSurPanning = .text:0x8010F490; // type:function size:0x48 +inpGetPitchBend = .text:0x8010F4D8; // type:function size:0x48 +inpGetDoppler = .text:0x8010F520; // type:function size:0x48 +inpGetModulation = .text:0x8010F568; // type:function size:0x48 +inpGetPedal = .text:0x8010F5B0; // type:function size:0x48 +inpGetPreAuxA = .text:0x8010F5F8; // type:function size:0x48 +inpGetReverb = .text:0x8010F640; // type:function size:0x48 +inpGetPreAuxB = .text:0x8010F688; // type:function size:0x48 +inpGetPostAuxB = .text:0x8010F6D0; // type:function size:0x48 +inpGetTremolo = .text:0x8010F718; // type:function size:0x48 +inpGetAuxA = .text:0x8010F760; // type:function size:0xB4 +inpGetAuxB = .text:0x8010F814; // type:function size:0xB4 +inpInit = .text:0x8010F8C8; // type:function size:0x284 +inpTranslateExCtrl = .text:0x8010FB4C; // type:function size:0x70 +inpGetExCtrl = .text:0x8010FBBC; // type:function size:0xFC +inpSetExCtrl = .text:0x8010FCB8; // type:function size:0x1E4 +sndRand = .text:0x8010FE9C; // type:function size:0x1C +sndSin = .text:0x8010FEB8; // type:function size:0x8C +sndBSearch = .text:0x8010FF44; // type:function size:0xA4 +sndConvertMs = .text:0x8010FFE8; // type:function size:0x10 +sndConvertTicks = .text:0x8010FFF8; // type:function size:0x48 +sndConvert2Ms = .text:0x80110040; // type:function size:0x8 +snd_handle_irq = .text:0x80110048; // type:function size:0x154 scope:local +hwInit = .text:0x8011019C; // type:function size:0xB8 +hwExit = .text:0x80110254; // type:function size:0x34 +hwSetTimeOffset = .text:0x80110288; // type:function size:0x8 +hwGetTimeOffset = .text:0x80110290; // type:function size:0x8 +hwIsActive = .text:0x80110298; // type:function size:0x20 +hwSetMesgCallback = .text:0x801102B8; // type:function size:0x8 +hwSetPriority = .text:0x801102C0; // type:function size:0x14 +hwInitSamplePlayback = .text:0x801102D4; // type:function size:0x1B4 +hwBreak = .text:0x80110488; // type:function size:0x50 +hwSetADSR = .text:0x801104D8; // type:function size:0x1AC +hwSetVirtualSampleLoopBuffer = .text:0x80110684; // type:function size:0x20 +hwGetVirtualSampleState = .text:0x801106A4; // type:function size:0x14 +hwGetSampleType = .text:0x801106B8; // type:function size:0x14 +hwGetSampleID = .text:0x801106CC; // type:function size:0x14 +hwSetStreamLoopPS = .text:0x801106E0; // type:function size:0x14 +hwStart = .text:0x801106F4; // type:function size:0x3C +hwKeyOff = .text:0x80110730; // type:function size:0x28 +hwSetPitch = .text:0x80110758; // type:function size:0x78 +hwSetSRCType = .text:0x801107D0; // type:function size:0x2C +hwSetPolyPhaseFilter = .text:0x801107FC; // type:function size:0x2C +hwSetITDMode = .text:0x80110828; // type:function size:0x5C +hwSetVolume = .text:0x80110884; // type:function size:0x2C0 +hwOff = .text:0x80110B44; // type:function size:0x2C +hwSetAUXProcessingCallbacks = .text:0x80110B70; // type:function size:0x28 +hwActivateStudio = .text:0x80110B98; // type:function size:0x20 +hwDeactivateStudio = .text:0x80110BB8; // type:function size:0x20 +hwAddInput = .text:0x80110BD8; // type:function size:0x34 +hwRemoveInput = .text:0x80110C0C; // type:function size:0x34 +hwChangeStudio = .text:0x80110C40; // type:function size:0x2C +hwGetPos = .text:0x80110C6C; // type:function size:0xA4 +hwFlushStream = .text:0x80110D10; // type:function size:0x90 +hwInitStream = .text:0x80110DA0; // type:function size:0x20 +hwExitStream = .text:0x80110DC0; // type:function size:0x20 +hwGetStreamPlayBuffer = .text:0x80110DE0; // type:function size:0x24 +hwTransAddr = .text:0x80110E04; // type:function size:0x4 +hwFrq2Pitch = .text:0x80110E08; // type:function size:0x5C +hwInitSampleMem = .text:0x80110E64; // type:function size:0x24 +hwExitSampleMem = .text:0x80110E88; // type:function size:0x20 +hwSaveSample = .text:0x80110EA8; // type:function size:0x94 +hwRemoveSample = .text:0x80110F3C; // type:function size:0x84 +hwSyncSampleMem = .text:0x80110FC0; // type:function size:0x20 +hwFrameDone = .text:0x80110FE0; // type:function size:0x4 +sndSetHooks = .text:0x80110FE4; // type:function size:0x14 +hwDisableHRTF = .text:0x80110FF8; // type:function size:0xC +hwGetVirtualSampleID = .text:0x80111004; // type:function size:0x28 +hwVoiceInStartup = .text:0x8011102C; // type:function size:0x20 +aramQueueCallback = .text:0x8011104C; // type:function size:0xA0 +aramUploadData = .text:0x801110EC; // type:function size:0x1DC +aramSyncTransferQueue = .text:0x801112C8; // type:function size:0x18 +aramInit = .text:0x801112E0; // type:function size:0x2EC +aramExit = .text:0x801115CC; // type:function size:0x4 +aramGetZeroBuffer = .text:0x801115D0; // type:function size:0x20 +aramStoreData = .text:0x801115F0; // type:function size:0x3BC +aramRemoveData = .text:0x801119AC; // type:function size:0x18 +InitStreamBuffers = .text:0x801119C4; // type:function size:0xC4 scope:local +aramAllocateStreamBuffer = .text:0x80111A88; // type:function size:0x108 +aramGetStreamBufferAddress = .text:0x80111B90; // type:function size:0x38 +aramFreeStreamBuffer = .text:0x80111BC8; // type:function size:0xF8 +salCallback = .text:0x80111CC0; // type:function size:0xA8 scope:local +dspInitCallback = .text:0x80111D68; // type:function size:0x10 scope:local +dspResumeCallback = .text:0x80111D78; // type:function size:0x64 scope:local +salInitAi = .text:0x80111DDC; // type:function size:0xC8 +salStartAi = .text:0x80111EA4; // type:function size:0x20 +salExitAi = .text:0x80111EC4; // type:function size:0x34 +salAiGetDest = .text:0x80111EF8; // type:function size:0x30 +salInitDsp = .text:0x80111F28; // type:function size:0xBC +salExitDsp = .text:0x80111FE4; // type:function size:0x34 +salCtrlDsp = .text:0x80112018; // type:function size:0x74 +salGetStartDelay = .text:0x8011208C; // type:function size:0x4C +hwInitIrq = .text:0x801120D8; // type:function size:0x2C +hwExitIrq = .text:0x80112104; // type:function size:0x4 +hwEnableIrq = .text:0x80112108; // type:function size:0x38 +hwDisableIrq = .text:0x80112140; // type:function size:0x38 +hwIRQEnterCritical = .text:0x80112178; // type:function size:0x20 +hwIRQLeaveCritical = .text:0x80112198; // type:function size:0x20 +salMalloc = .text:0x801121B8; // type:function size:0x28 +salFree = .text:0x801121E0; // type:function size:0x2C +sndAuxCallbackReverbSTD = .text:0x8011220C; // type:function size:0x5C +sndAuxCallbackPrepareReverbSTD = .text:0x80112268; // type:function size:0x3C +sndAuxCallbackShutdownReverbSTD = .text:0x801122A4; // type:function size:0x24 +ReverbSTDCreate = .text:0x801122C8; // type:function size:0x428 +fn_801126F0 = .text:0x801126F0; // type:function size:0x3B4 scope:local +ReverbSTDCallback = .text:0x80112AA4; // type:function size:0x24 +ReverbSTDFree = .text:0x80112AC8; // type:function size:0xBC +sndAuxCallbackReverbHI = .text:0x80112B84; // type:function size:0x5C +sndAuxCallbackPrepareReverbHI = .text:0x80112BE0; // type:function size:0x40 +sndAuxCallbackShutdownReverbHI = .text:0x80112C20; // type:function size:0x24 +ReverbHICreate = .text:0x80112C44; // type:function size:0x50C +DoCrossTalk = .text:0x80113150; // type:function size:0x190 scope:local +HandleReverb = .text:0x801132E0; // type:function size:0x50C +ReverbHICallback = .text:0x801137EC; // type:function size:0xE0 +ReverbHIFree = .text:0x801138CC; // type:function size:0xBC +sndAuxCallbackDelay = .text:0x80113988; // type:function size:0x168 +sndAuxCallbackUpdateSettingsDelay = .text:0x80113AF0; // type:function size:0x1D0 +sndAuxCallbackPrepareDelay = .text:0x80113CC0; // type:function size:0x28 +sndAuxCallbackShutdownDelay = .text:0x80113CE8; // type:function size:0x4C +do_src1 = .text:0x80113D34; // type:function size:0x198 scope:local +do_src2 = .text:0x80113ECC; // type:function size:0x1EC scope:local +sndAuxCallbackChorus = .text:0x801140B8; // type:function size:0x2BC +sndAuxCallbackPrepareChorus = .text:0x80114374; // type:function size:0x200 +sndAuxCallbackShutdownChorus = .text:0x80114574; // type:function size:0x28 +DBClose = .text:0x8011459C; // type:function size:0x4 scope:global +DBOpen = .text:0x801145A0; // type:function size:0x4 scope:global +DBWrite = .text:0x801145A4; // type:function size:0x260 scope:global +DBRead = .text:0x80114804; // type:function size:0x8C scope:global +DBQueryData = .text:0x80114890; // type:function size:0x9C scope:global +DBInitInterrupts = .text:0x8011492C; // type:function size:0x54 scope:global +DBInitComm = .text:0x80114980; // type:function size:0x78 scope:global +DBGHandler = .text:0x801149F8; // type:function size:0x40 +MWCallback = .text:0x80114A38; // type:function size:0x3C +DBGReadStatus = .text:0x80114A74; // type:function size:0xAC +DBGWrite = .text:0x80114B20; // type:function size:0xDC +DBGRead = .text:0x80114BFC; // type:function size:0xDC +DBGReadMailbox = .text:0x80114CD8; // type:function size:0xAC +DBGEXIImm = .text:0x80114D84; // type:function size:0x298 +EXI2_Init = .text:0x8011501C; // type:function size:0x4 scope:global +EXI2_EnableInterrupts = .text:0x80115020; // type:function size:0x4 scope:global +EXI2_Poll = .text:0x80115024; // type:function size:0x8 scope:global +EXI2_ReadN = .text:0x8011502C; // type:function size:0x8 scope:global +EXI2_WriteN = .text:0x80115034; // type:function size:0x8 scope:global +EXI2_Reserve = .text:0x8011503C; // type:function size:0x4 scope:global +EXI2_Unreserve = .text:0x80115040; // type:function size:0x4 scope:global +AMC_IsStub = .text:0x80115044; // type:function size:0x8 scope:global +Hu_IsStub = .text:0x8011504C; // type:function size:0x8 scope:weak +HuSetVecF = .text:0x80115054; // type:function size:0x10 +HuSubVecF = .text:0x80115064; // type:function size:0x34 +msmSysServer = .text:0x80115098; // type:function size:0x6C scope:local +msmSysSetAuxParam = .text:0x80115104; // type:function size:0x27C scope:local +msmSysLoadBaseGroup = .text:0x80115380; // type:function size:0x15C scope:local +msmSysSearchGroupStack = .text:0x801154DC; // type:function size:0xB4 scope:local +msmSysGroupInit = .text:0x80115590; // type:function size:0x31C scope:local +msmSysIrqDisable = .text:0x801158AC; // type:function size:0x48 +msmSysIrqEnable = .text:0x801158F4; // type:function size:0x48 +msmSysCheckBaseGroup = .text:0x8011593C; // type:function size:0x68 +msmSysGetGroupDataPtr = .text:0x801159A4; // type:function size:0xD8 +msmSysCheckLoadGroupID = .text:0x80115A7C; // type:function size:0xFC +msmSysRegularProc = .text:0x80115B78; // type:function size:0x4 +msmSysGetOutputMode = .text:0x80115B7C; // type:function size:0x14 +msmSysSetOutputMode = .text:0x80115B90; // type:function size:0xD8 +msmSysSetAux = .text:0x80115C68; // type:function size:0x114 +msmSysGetSampSize = .text:0x80115D7C; // type:function size:0x28 +msmSysDelGroupAll = .text:0x80115DA4; // type:function size:0x140 +msmSysDelGroupBase = .text:0x80115EE4; // type:function size:0x28C +msmSysLoadGroupBase = .text:0x80116170; // type:function size:0x298 +msmSysLoadGroupSet = .text:0x80116408; // type:function size:0x3F0 +msmSysLoadGroupSub = .text:0x801167F8; // type:function size:0x3B4 +msmSysLoadGroup = .text:0x80116BAC; // type:function size:0x278 +msmSysCheckInit = .text:0x80116E24; // type:function size:0x20 +msmSysInit = .text:0x80116E44; // type:function size:0x474 +msmMemFree = .text:0x801172B8; // type:function size:0xC8 +msmMemAlloc = .text:0x80117380; // type:function size:0x104 +msmMemInit = .text:0x80117484; // type:function size:0x64 +msmFioClose = .text:0x801174E8; // type:function size:0x30 +msmFioRead = .text:0x80117518; // type:function size:0x34 +msmFioOpen = .text:0x8011754C; // type:function size:0x2C +msmFioInit = .text:0x80117578; // type:function size:0x60 +msmMusPauseSub = .text:0x801175D8; // type:function size:0x154 scope:local +msmMusPauseFade = .text:0x8011772C; // type:function size:0x174 scope:local +msmMusFade = .text:0x801178A0; // type:function size:0x1BC scope:local +msmMusFdoutEnd = .text:0x80117A5C; // type:function size:0x4 +msmMusPeriodicProc = .text:0x80117A60; // type:function size:0x1CC +msmMusGetMidiCtrl = .text:0x80117C2C; // type:function size:0x9C +msmMusGetNumPlay = .text:0x80117CC8; // type:function size:0x38 +msmMusGetStatus = .text:0x80117D00; // type:function size:0x3C +msmMusSetMasterVolume = .text:0x80117D3C; // type:function size:0x30 +msmMusSetParam = .text:0x80117D6C; // type:function size:0x16C +msmMusPauseAll = .text:0x80117ED8; // type:function size:0x88 +msmMusPause = .text:0x80117F60; // type:function size:0x74 +msmMusStopAll = .text:0x80117FD4; // type:function size:0x134 +msmMusStop = .text:0x80118108; // type:function size:0xCC +msmMusPlay = .text:0x801181D4; // type:function size:0x328 +msmMusInit = .text:0x801184FC; // type:function size:0x174 +msmSeFade = .text:0x80118670; // type:function size:0x250 scope:local +msmSePauseSub = .text:0x801188C0; // type:function size:0x184 scope:local +msmSePeriodicProc = .text:0x80118A44; // type:function size:0x270 +msmSeGetIndexPtr = .text:0x80118CB4; // type:function size:0x30 +msmSeDelListener = .text:0x80118CE4; // type:function size:0x4C +msmSeUpdataListener = .text:0x80118D30; // type:function size:0xD8 +msmSeSetListener = .text:0x80118E08; // type:function size:0x13C +msmSeGetEntryID = .text:0x80118F44; // type:function size:0x74 +msmSeGetNumPlay = .text:0x80118FB8; // type:function size:0x38 +msmSeGetStatus = .text:0x80118FF0; // type:function size:0x60 +msmSeSetMasterVolume = .text:0x80119050; // type:function size:0x30 +msmSeSetParam = .text:0x80119080; // type:function size:0x320 +msmSePauseAll = .text:0x801193A0; // type:function size:0x80 +msmSeStopAll = .text:0x80119420; // type:function size:0x168 +msmSeStop = .text:0x80119588; // type:function size:0xFC +msmSePlay = .text:0x80119684; // type:function size:0x480 +msmSeInit = .text:0x80119B04; // type:function size:0x130 +msmStreamGetStatus = .text:0x80119C34; // type:function size:0xC8 +msmStreamSetMasterVolume = .text:0x80119CFC; // type:function size:0x118 +msmStreamStopAll = .text:0x80119E14; // type:function size:0xE0 +msmStreamStop = .text:0x80119EF4; // type:function size:0x204 +msmStreamPlay = .text:0x8011A0F8; // type:function size:0x88 +msmStreamPeriodicProc = .text:0x8011A180; // type:function size:0x8C +msmStreamSetOutputMode = .text:0x8011A20C; // type:function size:0x114 +msmStreamAmemFree = .text:0x8011A320; // type:function size:0x68 +msmStreamAmemAlloc = .text:0x8011A388; // type:function size:0x10C +msmStreamInit = .text:0x8011A494; // type:function size:0x2A8 +msmStreamPauseOff = .text:0x8011A73C; // type:function size:0x2B8 +msmStreamPauseOn = .text:0x8011A9F4; // type:function size:0x1AC +msmStreamPauseFade = .text:0x8011ABA0; // type:function size:0x2E8 +msmStreamFade = .text:0x8011AE88; // type:function size:0x33C +msmStreamStopSub = .text:0x8011B1C4; // type:function size:0x13C scope:local +msmStreamSetParamSub = .text:0x8011B300; // type:function size:0xE0 scope:local +msmStreamPackStartStereo = .text:0x8011B3E0; // type:function size:0x448 +msmStreamPackStartMono = .text:0x8011B828; // type:function size:0x2DC +msmStreamSlotOff = .text:0x8011BB04; // type:function size:0xD0 +msmStreamData = .text:0x8011BBD4; // type:function size:0x320 scope:local +msmStreamDvdCallback = .text:0x8011BEF4; // type:function size:0x4A8 scope:local +msmStreamDvdCallback2 = .text:0x8011C39C; // type:function size:0x188 scope:local +msmStreamUpdateFunc = .text:0x8011C524; // type:function size:0x17C scope:local +msmStreamSlotInit = .text:0x8011C6A0; // type:function size:0x214 scope:local +_kerent = .text:0x8011C8B4; // type:function size:0xFE4 +_ctors = .ctors:0x8011D8A0; // type:label scope:global data:4byte +__init_cpp_exceptions_reference = .ctors:0x8011D8A0; // type:object size:0x4 scope:global +_dtors = .dtors:0x8011D8C0; // type:label scope:global data:4byte +__destroy_global_chain_reference = .dtors:0x8011D8C0; // type:object size:0x4 scope:global +__fini_cpp_exceptions_reference = .dtors:0x8011D8C4; // type:object size:0x4 scope:global +lbl_8011D8E0 = .rodata:0x8011D8E0; // type:object size:0x10 scope:local data:4byte +lbl_8011D8F0 = .rodata:0x8011D8F0; // type:object size:0x10 scope:local data:4byte +lbl_8011D900 = .rodata:0x8011D900; // type:object size:0x10 scope:local data:4byte +lbl_8011D910 = .rodata:0x8011D910; // type:object size:0x20 scope:local data:byte +lbl_8011D930 = .rodata:0x8011D930; // type:object size:0x10 data:4byte +lbl_8011D940 = .rodata:0x8011D940; // type:object size:0x24 scope:local data:4byte +lbl_8011D964 = .rodata:0x8011D964; // type:object size:0xC scope:local data:4byte +lbl_8011D970 = .rodata:0x8011D970; // type:object size:0x20 scope:local data:4byte +lbl_8011D990 = .rodata:0x8011D990; // type:object size:0x7C scope:local data:4byte +lbl_8011DA0C = .rodata:0x8011DA0C; // type:object size:0x24 scope:local data:4byte +lbl_8011DA30 = .rodata:0x8011DA30; // type:object size:0x10 scope:local data:4byte +lbl_8011DA40 = .rodata:0x8011DA40; // type:object size:0x38 data:4byte +lbl_8011DA78 = .rodata:0x8011DA78; // type:object size:0x38 data:4byte +lbl_8011DAB0 = .rodata:0x8011DAB0; // type:object size:0x20 data:4byte +lbl_8011DAD0 = .rodata:0x8011DAD0; // type:object size:0x10 data:4byte +lbl_8011DAE0 = .rodata:0x8011DAE0; // type:object size:0x90 data:4byte +lbl_8011DB70 = .rodata:0x8011DB70; // type:object size:0x20 data:4byte +lbl_8011DB90 = .rodata:0x8011DB90; // type:object size:0x20 data:4byte +lbl_8011DBB0 = .rodata:0x8011DBB0; // type:object size:0x20 +lbl_8011DBD0 = .rodata:0x8011DBD0; // type:object size:0x20 +lbl_8011DBF0 = .rodata:0x8011DBF0; // type:object size:0x10 +lbl_8011DC00 = .rodata:0x8011DC00; // type:object size:0x20 data:4byte +lbl_8011DC20 = .rodata:0x8011DC20; // type:object size:0x24 +lbl_8011DC44 = .rodata:0x8011DC44; // type:object size:0x4C +lbl_8011DC90 = .rodata:0x8011DC90; // type:object size:0x68 data:4byte +lbl_8011DCF8 = .rodata:0x8011DCF8; // type:object size:0x38 data:4byte +lbl_8011DD30 = .rodata:0x8011DD30; // type:object size:0x3C data:4byte +lbl_8011DD6C = .rodata:0x8011DD6C; // type:object size:0x14 data:2byte +lbl_8011DD80 = .rodata:0x8011DD80; // type:object size:0x20 data:4byte +lbl_8011DDA0 = .rodata:0x8011DDA0; // type:object size:0x20 data:4byte +lbl_8011DDC0 = .rodata:0x8011DDC0; // type:object size:0x20 data:4byte +lbl_8011DDE0 = .rodata:0x8011DDE0; // type:object size:0x20 data:4byte +lbl_8011DE00 = .rodata:0x8011DE00; // type:object size:0xC data:4byte +lbl_8011DE0C = .rodata:0x8011DE0C; // type:object size:0xC data:4byte +lbl_8011DE18 = .rodata:0x8011DE18; // type:object size:0xC data:4byte +lbl_8011DE24 = .rodata:0x8011DE24; // type:object size:0xC data:4byte +lbl_8011DE30 = .rodata:0x8011DE30; // type:object size:0x18 +lbl_8011DE48 = .rodata:0x8011DE48; // type:object size:0x70 data:4byte +lbl_8011DEB8 = .rodata:0x8011DEB8; // type:object size:0xC data:byte +lbl_8011DEC4 = .rodata:0x8011DEC4; // type:object size:0x1C +lbl_8011DEE0 = .rodata:0x8011DEE0; // type:object size:0x24 data:4byte +lbl_8011DF04 = .rodata:0x8011DF04; // type:object size:0x20 data:4byte +lbl_8011DF24 = .rodata:0x8011DF24; // type:object size:0x2C data:4byte +lbl_8011DF50 = .rodata:0x8011DF50; // type:object size:0x10 data:4byte +lbl_8011DF60 = .rodata:0x8011DF60; // type:object size:0x28 data:4byte +lbl_8011DF88 = .rodata:0x8011DF88; // type:object size:0x28 data:4byte +lbl_8011DFB0 = .rodata:0x8011DFB0; // type:object size:0x20 data:4byte +lbl_8011DFD0 = .rodata:0x8011DFD0; // type:object size:0x20 data:4byte +lbl_8011DFF0 = .rodata:0x8011DFF0; // type:object size:0x20 data:4byte +lbl_8011E010 = .rodata:0x8011E010; // type:object size:0x10 data:4byte +lbl_8011E020 = .rodata:0x8011E020; // type:object size:0x90 data:byte +lbl_8011E0B0 = .rodata:0x8011E0B0; // type:object size:0x10 +lbl_8011E0C0 = .rodata:0x8011E0C0; // type:object size:0x10 +lbl_8011E0D0 = .rodata:0x8011E0D0; // type:object size:0x18 data:double +lbl_8011E0E8 = .rodata:0x8011E0E8; // type:object size:0x54 +lbl_8011E13C = .rodata:0x8011E13C; // type:object size:0x14 +lbl_8011E150 = .rodata:0x8011E150; // type:object size:0x10 +lbl_8011E160 = .rodata:0x8011E160; // type:object size:0x20 +lbl_8011E180 = .rodata:0x8011E180; // type:object size:0x38 +lbl_8011E1B8 = .rodata:0x8011E1B8; // type:object size:0x40 +lbl_8011E1F8 = .rodata:0x8011E1F8; // type:object size:0x18 data:4byte +lbl_8011E210 = .rodata:0x8011E210; // type:object size:0xE0 +@stringBase0 = .rodata:0x8011E2F0; // type:object size:0x25 scope:local data:string_table +lbl_8011E318 = .rodata:0x8011E318; // type:object size:0x10 +lbl_8011E328 = .rodata:0x8011E328; // type:object size:0x30 data:double +lbl_8011E358 = .rodata:0x8011E358; // type:object size:0x108 +lbl_8011E460 = .rodata:0x8011E460; // type:object size:0x80 +lbl_8011E4E0 = .rodata:0x8011E4E0; // type:object size:0x10 +lbl_8011E4F0 = .rodata:0x8011E4F0; // type:object size:0x40 data:double +lbl_8011E530 = .rodata:0x8011E530; // type:object size:0x68 data:double +lbl_8011E598 = .rodata:0x8011E598; // type:object size:0x98 +@62 = .rodata:0x8011E630; // type:object size:0x1B scope:local data:string +lbl_8011E650 = .rodata:0x8011E650; // type:object size:0x20 +lbl_8011E670 = .rodata:0x8011E670; // type:object size:0x10 data:4byte +lbl_8011E680 = .rodata:0x8011E680; // type:object size:0x28 data:4byte +lbl_8011E6A8 = .rodata:0x8011E6A8; // type:object size:0x28 data:4byte +lbl_8011E6D0 = .rodata:0x8011E6D0; // type:object size:0x28 data:4byte +@154 = .rodata:0x8011E6F8; // type:object size:0x21 scope:local data:string +@155 = .rodata:0x8011E71C; // type:object size:0x24 scope:local data:string +lbl_8011E740 = .rodata:0x8011E740; // type:object size:0x40 +lbl_8011E780 = .rodata:0x8011E780; // type:object size:0x18 +lbl_8011E798 = .rodata:0x8011E798; // type:object size:0x88 +lbl_8011E820 = .rodata:0x8011E820; // type:object size:0x88 data:byte +lbl_8011E8A8 = .rodata:0x8011E8A8; // type:object size:0x100 +lbl_8011E9C0 = .data:0x8011E9C0; // type:object size:0x10 scope:local data:string +chanTbl = .data:0x8011E9D0; // type:object size:0x10 scope:local +correctDiskID = .data:0x8011E9E0; // type:object size:0x124 scope:local +jumptable_8011EB04 = .data:0x8011EB04; // type:object size:0x34 scope:local +lbl_8011EB38 = .data:0x8011EB38; // type:object size:0x11 scope:local data:string +lbl_8011EB49 = .data:0x8011EB49; // type:object size:0x11 scope:local data:string +lbl_8011EB5A = .data:0x8011EB5A; // type:object size:0x10 scope:local data:string +lbl_8011EB6A = .data:0x8011EB6A; // type:object size:0x10 scope:local data:string +lbl_8011EB7A = .data:0x8011EB7A; // type:object size:0x14 scope:local data:string +lbl_8011EB8E = .data:0x8011EB8E; // type:object size:0x11 scope:local data:string +lbl_8011EB9F = .data:0x8011EB9F; // type:object size:0x10 scope:local data:string +lbl_8011EBAF = .data:0x8011EBAF; // type:object size:0xF scope:local data:string +lbl_8011EBBE = .data:0x8011EBBE; // type:object size:0x10 scope:local data:string +lbl_8011EBCE = .data:0x8011EBCE; // type:object size:0x13 scope:local data:string +lbl_8011EBE1 = .data:0x8011EBE1; // type:object size:0xF scope:local data:string +lbl_8011EBF0 = .data:0x8011EBF0; // type:object size:0x13 scope:local data:string +lbl_8011EC03 = .data:0x8011EC03; // type:object size:0x13 scope:local data:string +lbl_8011EC16 = .data:0x8011EC16; // type:object size:0x12 scope:local data:string +lbl_8011EC28 = .data:0x8011EC28; // type:object size:0x10 scope:local data:string +lbl_8011EC38 = .data:0x8011EC38; // type:object size:0x14 scope:local data:string +lbl_8011EC4C = .data:0x8011EC4C; // type:object size:0x14 scope:local data:string +lbl_8011EC60 = .data:0x8011EC60; // type:object size:0x13 scope:local data:string +lbl_8011EC73 = .data:0x8011EC73; // type:object size:0x10 scope:local data:string +lbl_8011EC83 = .data:0x8011EC83; // type:object size:0x11 scope:local data:string +lbl_8011EC94 = .data:0x8011EC94; // type:object size:0xE scope:local data:string +lbl_8011ECA2 = .data:0x8011ECA2; // type:object size:0x12 scope:local data:string +lbl_8011ECB4 = .data:0x8011ECB4; // type:object size:0x11 scope:local data:string +lbl_8011ECC5 = .data:0x8011ECC5; // type:object size:0xF scope:local data:string +lbl_8011ECD4 = .data:0x8011ECD4; // type:object size:0x13 scope:local data:string +lbl_8011ECE7 = .data:0x8011ECE7; // type:object size:0x13 scope:local data:string +lbl_8011ECFA = .data:0x8011ECFA; // type:object size:0x12 scope:local data:string +lbl_8011ED0C = .data:0x8011ED0C; // type:object size:0xE scope:local data:string +lbl_8011ED1A = .data:0x8011ED1A; // type:object size:0xE scope:local data:string +lbl_8011ED28 = .data:0x8011ED28; // type:object size:0xE scope:local data:string +lbl_8011ED36 = .data:0x8011ED36; // type:object size:0xE scope:local data:string +lbl_8011ED44 = .data:0x8011ED44; // type:object size:0xE scope:local data:string +lbl_8011ED52 = .data:0x8011ED52; // type:object size:0xE scope:local data:string +lbl_8011ED60 = .data:0x8011ED60; // type:object size:0xE scope:local data:string +lbl_8011ED6E = .data:0x8011ED6E; // type:object size:0xE scope:local data:string +lbl_8011ED7C = .data:0x8011ED7C; // type:object size:0xE scope:local data:string +lbl_8011ED8A = .data:0x8011ED8A; // type:object size:0xE scope:local data:string +lbl_8011ED98 = .data:0x8011ED98; // type:object size:0xE scope:local data:string +lbl_8011EDA6 = .data:0x8011EDA6; // type:object size:0xE scope:local data:string +lbl_8011EDB4 = .data:0x8011EDB4; // type:object size:0xE scope:local data:string +lbl_8011EDC2 = .data:0x8011EDC2; // type:object size:0xE scope:local data:string +lbl_8011EDD0 = .data:0x8011EDD0; // type:object size:0xE scope:local data:string +lbl_8011EDDE = .data:0x8011EDDE; // type:object size:0xE scope:local data:string +lbl_8011EDEC = .data:0x8011EDEC; // type:object size:0xE scope:local data:string +lbl_8011EDFA = .data:0x8011EDFA; // type:object size:0xE scope:local data:string +lbl_8011EE08 = .data:0x8011EE08; // type:object size:0xE scope:local data:string +lbl_8011EE16 = .data:0x8011EE16; // type:object size:0xE scope:local data:string +lbl_8011EE24 = .data:0x8011EE24; // type:object size:0xE scope:local data:string +lbl_8011EE32 = .data:0x8011EE32; // type:object size:0xE scope:local data:string +lbl_8011EE40 = .data:0x8011EE40; // type:object size:0xE scope:local data:string +lbl_8011EE4E = .data:0x8011EE4E; // type:object size:0xE scope:local data:string +lbl_8011EE5C = .data:0x8011EE5C; // type:object size:0xE scope:local data:string +lbl_8011EE6A = .data:0x8011EE6A; // type:object size:0xE scope:local data:string +lbl_8011EE78 = .data:0x8011EE78; // type:object size:0xE scope:local data:string +lbl_8011EE86 = .data:0x8011EE86; // type:object size:0xE scope:local data:string +lbl_8011EE94 = .data:0x8011EE94; // type:object size:0xE scope:local data:string +lbl_8011EEA2 = .data:0x8011EEA2; // type:object size:0xE scope:local data:string +lbl_8011EEB0 = .data:0x8011EEB0; // type:object size:0xE scope:local data:string +lbl_8011EEBE = .data:0x8011EEBE; // type:object size:0xE scope:local data:string +lbl_8011EECC = .data:0x8011EECC; // type:object size:0xE scope:local data:string +lbl_8011EEDA = .data:0x8011EEDA; // type:object size:0xE scope:local data:string +lbl_8011EEE8 = .data:0x8011EEE8; // type:object size:0xE scope:local data:string +lbl_8011EEF6 = .data:0x8011EEF6; // type:object size:0xE scope:local data:string +lbl_8011EF04 = .data:0x8011EF04; // type:object size:0xE scope:local data:string +lbl_8011EF12 = .data:0x8011EF12; // type:object size:0xE scope:local data:string +lbl_8011EF20 = .data:0x8011EF20; // type:object size:0xE scope:local data:string +lbl_8011EF2E = .data:0x8011EF2E; // type:object size:0xE scope:local data:string +lbl_8011EF3C = .data:0x8011EF3C; // type:object size:0xE scope:local data:string +lbl_8011EF4A = .data:0x8011EF4A; // type:object size:0xE scope:local data:string +lbl_8011EF58 = .data:0x8011EF58; // type:object size:0xE scope:local data:string +lbl_8011EF66 = .data:0x8011EF66; // type:object size:0xE scope:local data:string +lbl_8011EF74 = .data:0x8011EF74; // type:object size:0xE scope:local data:string +lbl_8011EF82 = .data:0x8011EF82; // type:object size:0xE scope:local data:string +lbl_8011EF90 = .data:0x8011EF90; // type:object size:0xE scope:local data:string +lbl_8011EF9E = .data:0x8011EF9E; // type:object size:0xE scope:local data:string +lbl_8011EFAC = .data:0x8011EFAC; // type:object size:0xE scope:local data:string +lbl_8011EFBA = .data:0x8011EFBA; // type:object size:0xE scope:local data:string +lbl_8011EFC8 = .data:0x8011EFC8; // type:object size:0xE scope:local data:string +lbl_8011EFD6 = .data:0x8011EFD6; // type:object size:0xE scope:local data:string +lbl_8011EFE4 = .data:0x8011EFE4; // type:object size:0xE scope:local data:string +lbl_8011EFF2 = .data:0x8011EFF2; // type:object size:0xE scope:local data:string +lbl_8011F000 = .data:0x8011F000; // type:object size:0xE scope:local data:string +lbl_8011F00E = .data:0x8011F00E; // type:object size:0xE scope:local data:string +lbl_8011F01C = .data:0x8011F01C; // type:object size:0xE scope:local data:string +lbl_8011F02A = .data:0x8011F02A; // type:object size:0xE scope:local data:string +lbl_8011F038 = .data:0x8011F038; // type:object size:0xE scope:local data:string +lbl_8011F046 = .data:0x8011F046; // type:object size:0xE scope:local data:string +lbl_8011F054 = .data:0x8011F054; // type:object size:0xE scope:local data:string +lbl_8011F062 = .data:0x8011F062; // type:object size:0xE scope:local data:string +lbl_8011F070 = .data:0x8011F070; // type:object size:0xE scope:local data:string +lbl_8011F07E = .data:0x8011F07E; // type:object size:0xE scope:local data:string +lbl_8011F08C = .data:0x8011F08C; // type:object size:0xE scope:local data:string +lbl_8011F09A = .data:0x8011F09A; // type:object size:0xF scope:local data:string +lbl_8011F0A9 = .data:0x8011F0A9; // type:object size:0x13 scope:local data:string +lbl_8011F0BC = .data:0x8011F0BC; // type:object size:0x13 scope:local data:string +lbl_8011F0CF = .data:0x8011F0CF; // type:object size:0x12 scope:local data:string +lbl_8011F0E1 = .data:0x8011F0E1; // type:object size:0xE scope:local data:string +lbl_8011F0EF = .data:0x8011F0EF; // type:object size:0x11 scope:local data:string +lbl_8011F100 = .data:0x8011F100; // type:object size:0x10 scope:local data:string +lbl_8011F110 = .data:0x8011F110; // type:object size:0x11 scope:local data:string +lbl_8011F121 = .data:0x8011F121; // type:object size:0xE scope:local data:string +lbl_8011F12F = .data:0x8011F12F; // type:object size:0x10 scope:local data:string +lbl_8011F13F = .data:0x8011F13F; // type:object size:0x11 scope:local data:string +lbl_8011F150 = .data:0x8011F150; // type:object size:0x11 scope:local data:string +lbl_8011F161 = .data:0x8011F161; // type:object size:0x11 scope:local data:string +lbl_8011F172 = .data:0x8011F172; // type:object size:0x10 scope:local data:string +lbl_8011F182 = .data:0x8011F182; // type:object size:0xF scope:local data:string +lbl_8011F191 = .data:0x8011F191; // type:object size:0x13 scope:local data:string +lbl_8011F1A4 = .data:0x8011F1A4; // type:object size:0x13 scope:local data:string +lbl_8011F1B7 = .data:0x8011F1B7; // type:object size:0x12 scope:local data:string +lbl_8011F1C9 = .data:0x8011F1C9; // type:object size:0x11 scope:local data:string +lbl_8011F1DA = .data:0x8011F1DA; // type:object size:0x10 scope:local data:string +lbl_8011F1EA = .data:0x8011F1EA; // type:object size:0xD scope:local data:string +lbl_8011F1F7 = .data:0x8011F1F7; // type:object size:0x11 scope:local data:string +lbl_8011F208 = .data:0x8011F208; // type:object size:0xF scope:local data:string +lbl_8011F217 = .data:0x8011F217; // type:object size:0xF scope:local data:string +lbl_8011F226 = .data:0x8011F226; // type:object size:0xF scope:local data:string +lbl_8011F235 = .data:0x8011F235; // type:object size:0xD scope:local data:string +lbl_8011F242 = .data:0x8011F242; // type:object size:0xD scope:local data:string +lbl_8011F24F = .data:0x8011F24F; // type:object size:0xD scope:local data:string +lbl_8011F25C = .data:0x8011F25C; // type:object size:0xD scope:local data:string +lbl_8011F269 = .data:0x8011F269; // type:object size:0xD scope:local data:string +lbl_8011F276 = .data:0x8011F276; // type:object size:0xD scope:local data:string +lbl_8011F283 = .data:0x8011F283; // type:object size:0xD scope:local data:string +lbl_8011F290 = .data:0x8011F290; // type:object size:0xD scope:local data:string +lbl_8011F29D = .data:0x8011F29D; // type:object size:0xD scope:local data:string +lbl_8011F2AA = .data:0x8011F2AA; // type:object size:0x11 scope:local data:string +lbl_8011F2BB = .data:0x8011F2BB; // type:object size:0x15 scope:local data:string +lbl_8011F2D0 = .data:0x8011F2D0; // type:object size:0x15 scope:local data:string +lbl_8011F2E5 = .data:0x8011F2E5; // type:object size:0x14 scope:local data:string +lbl_8011F2F9 = .data:0x8011F2F9; // type:object size:0xF scope:local data:string +lbl_8011F308 = .data:0x8011F308; // type:object size:0x13 scope:local data:string +lbl_8011F31B = .data:0x8011F31B; // type:object size:0x13 scope:local data:string +lbl_8011F32E = .data:0x8011F32E; // type:object size:0x12 scope:local data:string +lbl_8011F340 = .data:0x8011F340; // type:object size:0xD scope:local data:string +lbl_8011F34D = .data:0x8011F34D; // type:object size:0xF scope:local data:string +lbl_8011F35C = .data:0x8011F35C; // type:object size:0x13 scope:local data:string +lbl_8011F36F = .data:0x8011F36F; // type:object size:0x13 scope:local data:string +lbl_8011F382 = .data:0x8011F382; // type:object size:0x12 scope:local data:string +lbl_8011F394 = .data:0x8011F394; // type:object size:0x10 scope:local +DataDirStat = .data:0x8011F3A4; // type:object size:0x468 scope:local data:4byte +lbl_8011F80C = .data:0x8011F80C; // type:object size:0x1D scope:local data:string +lbl_8011F829 = .data:0x8011F829; // type:object size:0x1F scope:local data:string +lbl_8011F848 = .data:0x8011F848; // type:object size:0x3C scope:local +lbl_8011F884 = .data:0x8011F884; // type:object size:0x1A data:string +lbl_8011F89E = .data:0x8011F89E; // type:object size:0x122 +lbl_8011F9C0 = .data:0x8011F9C0; // type:object size:0x20 scope:local +ank8x8_4b = .data:0x8011F9E0; // type:object size:0x2000 align:32 +lbl_801219E0 = .data:0x801219E0; // type:object size:0x150 scope:local +HeapSizeTbl = .data:0x80121B30; // type:object size:0x78 scope:local +lbl_80121BA8 = .data:0x80121BA8; // type:object size:0x50 scope:local +lbl_80121BF8 = .data:0x80121BF8; // type:object size:0x128 scope:local +fcoltbl = .data:0x80121D20; // type:object size:0x40 scope:local align:32 +lbl_80121D60 = .data:0x80121D60; // type:object size:0x1F scope:local data:string +lbl_80121D7F = .data:0x80121D7F; // type:object size:0x31 scope:local +lbl_80121DB0 = .data:0x80121DB0; // type:object size:0x12 scope:local +lbl_80121DC2 = .data:0x80121DC2; // type:object size:0x10E scope:local +jumptable_80121ED0 = .data:0x80121ED0; // type:object size:0x2C scope:local +jumptable_80121F00 = .data:0x80121F00; // type:object size:0x28 scope:local +jumptable_80121F28 = .data:0x80121F28; // type:object size:0x2C scope:local +lbl_80121F54 = .data:0x80121F54; // type:object size:0x1C scope:local +texMtxTbl = .data:0x80121F70; // type:object size:0xC data:byte +jumptable_80121F7C = .data:0x80121F7C; // type:object size:0x28 scope:local +lbl_80121FA4 = .data:0x80121FA4; // type:object size:0x18 scope:local data:string +jumptable_80121FBC = .data:0x80121FBC; // type:object size:0x28 scope:local +jumptable_80121FE4 = .data:0x80121FE4; // type:object size:0x28 scope:local +refMtx = .data:0x8012200C; // type:object size:0x30 scope:local +kColorSelTbl = .data:0x8012203C; // type:object size:0x30 scope:local +kColorTbl = .data:0x8012206C; // type:object size:0x10 scope:local +kColorSelTbl2 = .data:0x8012207C; // type:object size:0x10 scope:local +kColorSelATbl = .data:0x8012208C; // type:object size:0x10 scope:local +lbl_8012209C = .data:0x8012209C; // type:object size:0x14 scope:local +jumptable_801220B0 = .data:0x801220B0; // type:object size:0x30 scope:local +jumptable_801220E0 = .data:0x801220E0; // type:object size:0x28 scope:local +jumptable_80122108 = .data:0x80122108; // type:object size:0x28 scope:local +lbl_80122130 = .data:0x80122130; // type:object size:0x19 scope:local data:string +lbl_80122149 = .data:0x80122149; // type:object size:0xA scope:local data:string +lbl_80122153 = .data:0x80122153; // type:object size:0x2D scope:local +refMapData0 = .data:0x80122180; // type:object size:0x1240 align:32 noreloc +refMapData1 = .data:0x801233C0; // type:object size:0x1100 align:32 noreloc +refMapData2 = .data:0x801244C0; // type:object size:0x2080 align:32 noreloc +refMapData3 = .data:0x80126540; // type:object size:0x2080 align:32 noreloc +refMapData4 = .data:0x801285C0; // type:object size:0x2080 align:32 noreloc +toonMapData = .data:0x8012A640; // type:object size:0x880 align:32 noreloc +toonMapData2 = .data:0x8012AEC0; // type:object size:0x1080 align:32 noreloc +hiliteData = .data:0x8012BF40; // type:object size:0x480 align:32 noreloc +hiliteData2 = .data:0x8012C3C0; // type:object size:0x480 align:32 noreloc +hiliteData3 = .data:0x8012C840; // type:object size:0x480 align:32 noreloc +hiliteData4 = .data:0x8012CCC0; // type:object size:0x480 align:32 noreloc +lbl_8012D140 = .data:0x8012D140; // type:object size:0x1B scope:local data:string +lbl_8012D15B = .data:0x8012D15B; // type:object size:0x16 scope:local data:string +lbl_8012D171 = .data:0x8012D171; // type:object size:0x21 scope:local data:string +lbl_8012D192 = .data:0x8012D192; // type:object size:0x26 scope:local +defCamera = .data:0x8012D1B8; // type:object size:0x58 data:4byte +lbl_8012D210 = .data:0x8012D210; // type:object size:0x28 scope:local +lbl_8012D238 = .data:0x8012D238; // type:object size:0x1C scope:local data:string +lbl_8012D254 = .data:0x8012D254; // type:object size:0x1C scope:local +jumptable_8012D270 = .data:0x8012D270; // type:object size:0x2C scope:local +jumptable_8012D29C = .data:0x8012D29C; // type:object size:0x68 scope:local +jumptable_8012D304 = .data:0x8012D304; // type:object size:0xF0 scope:local +jumptable_8012D3F4 = .data:0x8012D3F4; // type:object size:0x20 scope:local +lbl_8012D418 = .data:0x8012D418; // type:object size:0x15 scope:local data:string +lbl_8012D42D = .data:0x8012D42D; // type:object size:0x1F scope:local data:string +lbl_8012D44C = .data:0x8012D44C; // type:object size:0x18 scope:local +basePos = .data:0x8012D464; // type:object size:0x30 scope:local +baseST = .data:0x8012D494; // type:object size:0x20 scope:local +jitterTbl = .data:0x8012D4B4; // type:object size:0x24 scope:local +jumptable_8012D4D8 = .data:0x8012D4D8; // type:object size:0x1C scope:local +lbl_8012D4F8 = .data:0x8012D4F8; // type:object size:0xCA scope:local +lbl_8012D5C2 = .data:0x8012D5C2; // type:object size:0x1C scope:local data:string +lbl_8012D5DE = .data:0x8012D5DE; // type:object size:0x1C scope:local data:string +lbl_8012D5FA = .data:0x8012D5FA; // type:object size:0x1D scope:local data:string +lbl_8012D617 = .data:0x8012D617; // type:object size:0x18 scope:local data:string +lbl_8012D62F = .data:0x8012D62F; // type:object size:0xC scope:local data:string +lbl_8012D63B = .data:0x8012D63B; // type:object size:0x45 scope:local +lbl_8012D680 = .data:0x8012D680; // type:object size:0x45 scope:local +lbl_8012D6C5 = .data:0x8012D6C5; // type:object size:0x19 scope:local data:string +lbl_8012D6DE = .data:0x8012D6DE; // type:object size:0x17 scope:local data:string +lbl_8012D6F5 = .data:0x8012D6F5; // type:object size:0x1B3 scope:local +XFB_Colors = .data:0x8012D8A8; // type:object size:0xF scope:local data:byte +Ascii8x8_1bpp = .data:0x8012D8B7; // type:object size:0x800 scope:local align:1 +lbl_8012E0B7 = .data:0x8012E0B7; // type:object size:0x19 scope:local +lbl_8012E0D0 = .data:0x8012E0D0; // type:object size:0x21A scope:local +lbl_8012E2EA = .data:0x8012E2EA; // type:object size:0xB scope:local data:string +lbl_8012E2F5 = .data:0x8012E2F5; // type:object size:0x273 scope:local +lbl_8012E568 = .data:0x8012E568; // type:object size:0x12 scope:local data:string +lbl_8012E57A = .data:0x8012E57A; // type:object size:0xD6 scope:local +sndGrpTable = .data:0x8012E650; // type:object size:0x5B0 +lbl_8012EC00 = .data:0x8012EC00; // type:object size:0x94 scope:local +lbl_8012EC94 = .data:0x8012EC94; // type:object size:0x11 scope:local data:string +lbl_8012ECA5 = .data:0x8012ECA5; // type:object size:0x3A scope:local +lbl_8012ECDF = .data:0x8012ECDF; // type:object size:0x31 scope:local +seqInfoTbl = .data:0x8012ED10; // type:object size:0x1DC scope:local +seqType2SprTbl = .data:0x8012EEEC; // type:object size:0x18 scope:local +mgSeqTypeTbl = .data:0x8012EF04; // type:object size:0x12 scope:local data:2byte +lbl_8012F336 = .data:0x8012EF16; // type:object size:0x53 scope:local data:string +lbl_8012F389 = .data:0x8012EF69; // type:object size:0x9 scope:local data:string +lbl_8012F392 = .data:0x8012EF72; // type:object size:0x9 scope:local data:string +seqFontAlphaTbl = .data:0x8012EF7B; // type:object size:0x35 scope:local data:string +seqFontKanaTbl = .data:0x8012EFB0; // type:object size:0x52 scope:local data:string +seqFontNumTbl = .data:0x8012F002; // type:object size:0xB scope:local data:string +letterBufTbl = .data:0x8012F010; // type:object size:0x14 scope:local +wordMgTbl = .data:0x8012F024; // type:object size:0x18 scope:local +letterOfs$1005 = .data:0x8012F03C; // type:object size:0x40 scope:local data:float +letterOfs$1482 = .data:0x8012F07C; // type:object size:0x1C scope:local data:2byte +letterOfs$1856 = .data:0x8012F098; // type:object size:0x38 scope:local data:float +@1986 = .data:0x8012F0D0; // type:object size:0x9 scope:local data:string +@1988 = .data:0x8012F0D9; // type:object size:0xB scope:local data:string +winCharNameTbl = .data:0x8012F0E4; // type:object size:0x78 scope:local data:string_table +@1996 = .data:0x8012F15C; // type:object size:0xA scope:local data:string +winWordTbl = .data:0x8012F168; // type:object size:0x18 scope:local +winPosOfs = .data:0x8012F180; // type:object size:0x50 scope:local +practiceTbl = .data:0x8012F1D0; // type:object size:0xAC scope:local +yPosTbl$2429 = .data:0x8012F27C; // type:object size:0xC scope:local +seqStartFXTbl = .data:0x8012F288; // type:object size:0xEC scope:local +lbl_8012F378 = .data:0x8012F378; // type:object size:0x15 scope:local data:string +lbl_8012F38D = .data:0x8012F38D; // type:object size:0x10 scope:local data:string +lbl_8012F39D = .data:0x8012F39D; // type:object size:0x13 scope:local data:string +lbl_8012F3B0 = .data:0x8012F3B0; // type:object size:0x10 scope:local data:string +lbl_8012F3C0 = .data:0x8012F3C0; // type:object size:0x10 scope:local data:string +lbl_8012F3D0 = .data:0x8012F3D0; // type:object size:0x10 scope:local data:string +lbl_8012F3E0 = .data:0x8012F3E0; // type:object size:0x10 scope:local data:string +lbl_8012F3F0 = .data:0x8012F3F0; // type:object size:0x10 scope:local data:string +lbl_8012F400 = .data:0x8012F400; // type:object size:0x10 scope:local data:string +lbl_8012F410 = .data:0x8012F410; // type:object size:0x10 scope:local data:string +lbl_8012F420 = .data:0x8012F420; // type:object size:0x10 scope:local data:string +lbl_8012F430 = .data:0x8012F430; // type:object size:0x10 scope:local data:string +lbl_8012F440 = .data:0x8012F440; // type:object size:0x10 scope:local data:string +lbl_8012F450 = .data:0x8012F450; // type:object size:0x10 scope:local data:string +lbl_8012F460 = .data:0x8012F460; // type:object size:0x10 scope:local data:string +lbl_8012F470 = .data:0x8012F470; // type:object size:0x10 scope:local data:string +lbl_8012F480 = .data:0x8012F480; // type:object size:0x10 scope:local data:string +lbl_8012F490 = .data:0x8012F490; // type:object size:0x10 scope:local data:string +lbl_8012F4A0 = .data:0x8012F4A0; // type:object size:0x10 scope:local data:string +lbl_8012F4B0 = .data:0x8012F4B0; // type:object size:0x10 scope:local data:string +lbl_8012F4C0 = .data:0x8012F4C0; // type:object size:0x10 scope:local data:string +lbl_8012F4D0 = .data:0x8012F4D0; // type:object size:0x10 scope:local data:string +lbl_8012F4E0 = .data:0x8012F4E0; // type:object size:0x10 scope:local data:string +lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0x10 scope:local data:string +lbl_8012F500 = .data:0x8012F500; // type:object size:0x10 scope:local data:string +lbl_8012F510 = .data:0x8012F510; // type:object size:0x10 scope:local data:string +lbl_8012F520 = .data:0x8012F520; // type:object size:0x10 scope:local data:string +lbl_8012F530 = .data:0x8012F530; // type:object size:0x10 scope:local data:string +lbl_8012F540 = .data:0x8012F540; // type:object size:0x10 scope:local data:string +lbl_8012F550 = .data:0x8012F550; // type:object size:0x10 scope:local data:string +lbl_8012F560 = .data:0x8012F560; // type:object size:0x10 scope:local data:string +lbl_8012F570 = .data:0x8012F570; // type:object size:0x10 scope:local data:string +lbl_8012F580 = .data:0x8012F580; // type:object size:0x10 scope:local data:string +lbl_8012F590 = .data:0x8012F590; // type:object size:0x10 scope:local data:string +lbl_8012F5A0 = .data:0x8012F5A0; // type:object size:0x10 scope:local data:string +lbl_8012F5B0 = .data:0x8012F5B0; // type:object size:0x10 scope:local data:string +lbl_8012F5C0 = .data:0x8012F5C0; // type:object size:0x10 scope:local data:string +lbl_8012F5D0 = .data:0x8012F5D0; // type:object size:0x10 scope:local data:string +lbl_8012F5E0 = .data:0x8012F5E0; // type:object size:0x10 scope:local data:string +lbl_8012F5F0 = .data:0x8012F5F0; // type:object size:0x10 scope:local data:string +lbl_8012F600 = .data:0x8012F600; // type:object size:0x10 scope:local data:string +lbl_8012F610 = .data:0x8012F610; // type:object size:0x10 scope:local data:string +lbl_8012F620 = .data:0x8012F620; // type:object size:0x10 scope:local data:string +lbl_8012F630 = .data:0x8012F630; // type:object size:0x10 scope:local data:string +lbl_8012F640 = .data:0x8012F640; // type:object size:0x10 scope:local data:string +lbl_8012F650 = .data:0x8012F650; // type:object size:0x10 scope:local data:string +lbl_8012F660 = .data:0x8012F660; // type:object size:0x10 scope:local data:string +lbl_8012F670 = .data:0x8012F670; // type:object size:0x10 scope:local data:string +lbl_8012F680 = .data:0x8012F680; // type:object size:0x10 scope:local data:string +lbl_8012F690 = .data:0x8012F690; // type:object size:0x10 scope:local data:string +lbl_8012F6A0 = .data:0x8012F6A0; // type:object size:0x10 scope:local data:string +lbl_8012F6B0 = .data:0x8012F6B0; // type:object size:0x10 scope:local data:string +lbl_8012F6C0 = .data:0x8012F6C0; // type:object size:0x10 scope:local data:string +lbl_8012F6D0 = .data:0x8012F6D0; // type:object size:0x10 scope:local data:string +lbl_8012F6E0 = .data:0x8012F6E0; // type:object size:0x10 scope:local data:string +lbl_8012F6F0 = .data:0x8012F6F0; // type:object size:0x10 scope:local data:string +lbl_8012F700 = .data:0x8012F700; // type:object size:0x10 scope:local data:string +lbl_8012F710 = .data:0x8012F710; // type:object size:0x10 scope:local data:string +lbl_8012F720 = .data:0x8012F720; // type:object size:0x10 scope:local data:string +lbl_8012F730 = .data:0x8012F730; // type:object size:0x10 scope:local data:string +lbl_8012F740 = .data:0x8012F740; // type:object size:0x10 scope:local data:string +lbl_8012F750 = .data:0x8012F750; // type:object size:0x10 scope:local data:string +lbl_8012F760 = .data:0x8012F760; // type:object size:0x10 scope:local data:string +lbl_8012F770 = .data:0x8012F770; // type:object size:0x10 scope:local data:string +lbl_8012F780 = .data:0x8012F780; // type:object size:0x10 scope:local data:string +lbl_8012F790 = .data:0x8012F790; // type:object size:0x10 scope:local data:string +lbl_8012F7A0 = .data:0x8012F7A0; // type:object size:0x10 scope:local data:string +lbl_8012F7B0 = .data:0x8012F7B0; // type:object size:0x10 scope:local data:string +lbl_8012F7C0 = .data:0x8012F7C0; // type:object size:0x10 scope:local data:string +lbl_8012F7D0 = .data:0x8012F7D0; // type:object size:0x10 scope:local data:string +lbl_8012F7E0 = .data:0x8012F7E0; // type:object size:0x10 scope:local data:string +lbl_8012F7F0 = .data:0x8012F7F0; // type:object size:0x12 scope:local data:string +lbl_8012F802 = .data:0x8012F802; // type:object size:0x15 scope:local data:string +lbl_8012F817 = .data:0x8012F817; // type:object size:0x13 scope:local data:string +lbl_8012F82A = .data:0x8012F82A; // type:object size:0x11 scope:local data:string +lbl_8012F83B = .data:0x8012F83B; // type:object size:0x10 scope:local data:string +lbl_8012F84B = .data:0x8012F84B; // type:object size:0x12 scope:local data:string +lbl_8012F85D = .data:0x8012F85D; // type:object size:0x13 scope:local data:string +lbl_8012F870 = .data:0x8012F870; // type:object size:0x13 scope:local data:string +lbl_8012F883 = .data:0x8012F883; // type:object size:0x13 scope:local data:string +lbl_8012F896 = .data:0x8012F896; // type:object size:0x12 scope:local data:string +lbl_8012F8A8 = .data:0x8012F8A8; // type:object size:0xF scope:local data:string +lbl_8012F8B7 = .data:0x8012F8B7; // type:object size:0xF scope:local data:string +lbl_8012F8C6 = .data:0x8012F8C6; // type:object size:0x10 scope:local data:string +lbl_8012F8D6 = .data:0x8012F8D6; // type:object size:0x12 scope:local data:string +lbl_8012F8E8 = .data:0x8012F8E8; // type:object size:0xF scope:local data:string +lbl_8012F8F7 = .data:0x8012F8F7; // type:object size:0x13 scope:local data:string +lbl_8012F90A = .data:0x8012F90A; // type:object size:0x11 scope:local data:string +lbl_8012F91B = .data:0x8012F91B; // type:object size:0x15 scope:local data:string +lbl_8012F930 = .data:0x8012F930; // type:object size:0xF scope:local data:string +lbl_8012F93F = .data:0x8012F93F; // type:object size:0xF scope:local data:string +lbl_8012F94E = .data:0x8012F94E; // type:object size:0xF scope:local data:string +lbl_8012F95D = .data:0x8012F95D; // type:object size:0xF scope:local data:string +lbl_8012F96C = .data:0x8012F96C; // type:object size:0xF scope:local data:string +lbl_8012F97B = .data:0x8012F97B; // type:object size:0xF scope:local data:string +lbl_8012F98A = .data:0x8012F98A; // type:object size:0xF scope:local data:string +lbl_8012F999 = .data:0x8012F999; // type:object size:0xF scope:local data:string +lbl_8012F9A8 = .data:0x8012F9A8; // type:object size:0xF scope:local data:string +lbl_8012F9B7 = .data:0x8012F9B7; // type:object size:0x11 scope:local +_ovltbl = .data:0x8012F9C8; // type:object size:0x320 +lbl_80130100 = .data:0x8012FCE8; // type:object size:0x20 +fadeInFunc = .data:0x8012FD08; // type:object size:0xC +fadeOutFunc = .data:0x8012FD14; // type:object size:0xC +spcFontTbl = .data:0x8012FD20; // type:object size:0x170 scope:local +charWETbl = .data:0x8012FE90; // type:object size:0x130 +charWJTbl = .data:0x8012FFC0; // type:object size:0x140 +charColPal = .data:0x80130100; // type:object size:0x3C scope:local +frameFileTbl = .data:0x8013013C; // type:object size:0x10 scope:local +@257 = .data:0x8013014C; // type:object size:0xE scope:local data:string +@258 = .data:0x8013015A; // type:object size:0xF scope:local data:string +@259 = .data:0x80130169; // type:object size:0x10 scope:local data:string +@260 = .data:0x80130179; // type:object size:0x11 scope:local data:string +mesDataTbl = .data:0x8013018C; // type:object size:0x10 scope:local +winVoiceTbl = .data:0x8013019C; // type:object size:0x54 scope:local +@1076 = .data:0x801301F0; // type:object size:0x13 scope:local data:string +@1077 = .data:0x80130203; // type:object size:0x18 scope:local data:string +winPortraitTbl = .data:0x8013021C; // type:object size:0x4C scope:local +lbl_80130268 = .data:0x80130268; // type:object size:0x26 scope:local data:string +lbl_8013028E = .data:0x8013028E; // type:object size:0x2A scope:local +lbl_801302B8 = .data:0x801302B8; // type:object size:0x19 scope:local data:string +lbl_801302D1 = .data:0x801302D1; // type:object size:0x14 scope:local data:string +lbl_801302E5 = .data:0x801302E5; // type:object size:0x93 scope:local +lbl_80130378 = .data:0x80130378; // type:object size:0x30 scope:local +effectDataTbl = .data:0x801303A8; // type:object size:0x60 scope:local +charDirTbl = .data:0x80130408; // type:object size:0x60 scope:local +effectDustParam = .data:0x80130468; // type:object size:0x38 scope:local +effectDotParam = .data:0x801304A0; // type:object size:0x38 scope:local +effectStarParam = .data:0x801304D8; // type:object size:0x38 scope:local +effectWarnParam = .data:0x80130510; // type:object size:0x38 scope:local +effectSmokeParam = .data:0x80130548; // type:object size:0x38 scope:local +lbl_801309A0 = .data:0x80130580; // type:object size:0x20 scope:local +lbl_801309C0 = .data:0x801305A0; // type:object size:0x20 scope:local +lbl_801309E0 = .data:0x801305C0; // type:object size:0x10 scope:local +jumptable_801305D0 = .data:0x801305D0; // type:object size:0x1E8 scope:local +voiceParam = .data:0x801307B8; // type:object size:0x40 scope:local +lbl_801307F8 = .data:0x801307F8; // type:object size:0xE scope:local data:string +lbl_80130806 = .data:0x80130806; // type:object size:0xE scope:local data:string +lbl_80130814 = .data:0x80130814; // type:object size:0xE scope:local data:string +lbl_80130822 = .data:0x80130822; // type:object size:0xD scope:local data:string +lbl_8013082F = .data:0x8013082F; // type:object size:0xD scope:local data:string +lbl_8013083C = .data:0x8013083C; // type:object size:0xB scope:local data:string +lbl_80130847 = .data:0x80130847; // type:object size:0xF scope:local data:string +lbl_80130856 = .data:0x80130856; // type:object size:0xF scope:local data:string +lbl_80130865 = .data:0x80130865; // type:object size:0xF scope:local data:string +lbl_80130874 = .data:0x80130874; // type:object size:0xF scope:local data:string +lbl_80130883 = .data:0x80130883; // type:object size:0xF scope:local data:string +lbl_80130892 = .data:0x80130892; // type:object size:0xF scope:local data:string +lbl_801308A1 = .data:0x801308A1; // type:object size:0x9 scope:local data:string +lbl_801308AA = .data:0x801308AA; // type:object size:0xD scope:local data:string +lbl_801308B7 = .data:0x801308B7; // type:object size:0x17 scope:local data:string +lbl_801308CE = .data:0x801308CE; // type:object size:0x17 scope:local data:string +lbl_801308E5 = .data:0x801308E5; // type:object size:0xE scope:local data:string +lbl_801308F3 = .data:0x801308F3; // type:object size:0xE scope:local data:string +lbl_80130901 = .data:0x80130901; // type:object size:0xD scope:local data:string +lbl_8013090E = .data:0x8013090E; // type:object size:0xE scope:local data:string +lbl_8013091C = .data:0x8013091C; // type:object size:0xE scope:local data:string +lbl_8013092A = .data:0x8013092A; // type:object size:0xF scope:local data:string +lbl_80130939 = .data:0x80130939; // type:object size:0xF scope:local data:string +lbl_80130948 = .data:0x80130948; // type:object size:0x18 scope:local data:string +lbl_80130960 = .data:0x80130960; // type:object size:0x18 scope:local data:string +lbl_80130978 = .data:0x80130978; // type:object size:0xE scope:local data:string +lbl_80130986 = .data:0x80130986; // type:object size:0x18 scope:local data:string +lbl_8013099E = .data:0x8013099E; // type:object size:0x1A scope:local +charTexNameTbl = .data:0x801309B8; // type:object size:0x100 +lbl_80130AB8 = .data:0x80130AB8; // type:object size:0xD scope:local data:string +lbl_80130AC5 = .data:0x80130AC5; // type:object size:0xD scope:local data:string +lbl_80130AD2 = .data:0x80130AD2; // type:object size:0xE scope:local data:string +lbl_80130AE0 = .data:0x80130AE0; // type:object size:0xE scope:local data:string +lbl_80130AEE = .data:0x80130AEE; // type:object size:0x10 scope:local data:string +hookNameTbl = .data:0x80130B00; // type:object size:0xA0 scope:local +modelParticleParam = .data:0x80130BA0; // type:object size:0x38 scope:local +coinParticleParam = .data:0x80130BD8; // type:object size:0x38 scope:local +lbl_80131030 = .data:0x80130C10; // type:object size:0x38 scope:local +lbl_80131068 = .data:0x80130C48; // type:object size:0x38 scope:local +@1294 = .data:0x80130C80; // type:object size:0x19 scope:local data:string +lbl_801310BC = .data:0x80130C9C; // type:object size:0x38 scope:local +lbl_801310F4 = .data:0x80130CD4; // type:object size:0x38 scope:local +@1315 = .data:0x80130D0C; // type:object size:0x1A scope:local data:string +lbl_80130D26 = .data:0x80130D26; // type:object size:0x12 scope:local data:string +lbl_80130D38 = .data:0x80130D38; // type:object size:0x12 scope:local data:string +VolumeTable = .data:0x80130DC8; // type:object size:0x100 scope:local +lbl_80130EC8 = .data:0x80130EC8; // type:object size:0x4D scope:local +lbl_80130F15 = .data:0x80130F15; // type:object size:0x1B scope:local +mgInfoTbl = .data:0x80130F30; // type:object size:0xE00 data:2byte +commentTbl = .data:0x80131D30; // type:object size:0x40 scope:local data:byte +sjisNumTbl = .data:0x80131D70; // type:object size:0x14 scope:local data:byte +lbl_80131D84 = .data:0x80131D84; // type:object size:0xC scope:local data:string +lbl_80131D90 = .data:0x80131D90; // type:object size:0xC scope:local data:string +lbl_80131D9C = .data:0x80131D9C; // type:object size:0xC scope:local data:string +SaveFileNameTbl = .data:0x80131DA8; // type:object size:0xC +jumptable_80131DB4 = .data:0x80131DB4; // type:object size:0x34 scope:local +SR_PreRstChk = .data:0x80131E00; // type:object size:0x10 scope:local +padding = .data:0x80131E10; // type:object size:0x10 scope:local +coveropen_jp = .data:0x80131E20; // type:object size:0x13A0 noreloc +fatalerror_jp = .data:0x801331C0; // type:object size:0x13A0 noreloc +loading_jp = .data:0x80134560; // type:object size:0x13A0 noreloc +nodisc_jp = .data:0x80135900; // type:object size:0x13A0 noreloc +retryerror_jp = .data:0x80136CA0; // type:object size:0x13A0 noreloc +wrongdisc_jp = .data:0x80138040; // type:object size:0x1384 noreloc +jumptable_801393C4 = .data:0x801393C4; // type:object size:0x34 scope:local +bmpMes$327 = .data:0x801393F8; // type:object size:0x18 scope:local +@391 = .data:0x80139410; // type:object size:0x13 scope:local data:string +@392 = .data:0x80139423; // type:object size:0x12 scope:local data:string +camViewTbl = .data:0x80139438; // type:object size:0x24 scope:local +jumptable_8013945C = .data:0x8013945C; // type:object size:0x24 scope:local +confettiLightTbl = .data:0x80139480; // type:object size:0x48 scope:local +last5GfxSprTbl = .data:0x801394C8; // type:object size:0xC scope:local +last5GfxPosTbl = .data:0x801394D4; // type:object size:0x30 scope:local +tauntActiveFXTbl = .data:0x80139504; // type:object size:0x10 scope:local +tauntFXTbl = .data:0x80139514; // type:object size:0x20 scope:local +diceJumpObj = .data:0x80139538; // type:object size:0x10 scope:local +motDoneF = .data:0x80139548; // type:object size:0x10 scope:local +bowserSuitMot = .data:0x80139558; // type:object size:0xA scope:local data:2byte +lbl_80139562 = .data:0x80139562; // type:object size:0x17 scope:local data:string +lbl_80139579 = .data:0x80139579; // type:object size:0x17 scope:local data:string +lbl_80139590 = .data:0x80139590; // type:object size:0xE scope:local data:string +lbl_8013959E = .data:0x8013959E; // type:object size:0xE scope:local data:string +lbl_801395AC = .data:0x801395AC; // type:object size:0x18 scope:local data:string +lbl_801395C4 = .data:0x801395C4; // type:object size:0x18 scope:local data:string +eyeMatTbl = .data:0x801395DC; // type:object size:0x40 scope:local +lbl_8013997C = .data:0x8013961C; // type:object size:0x20 +boardMotTbl = .data:0x8013963C; // type:object size:0x20 scope:local +boardMotRevTbl = .data:0x8013965C; // type:object size:0x20 scope:local +bowserSuitCharMdlTbl = .data:0x8013967C; // type:object size:0x20 scope:local +bowserSuitMotTbl = .data:0x8013969C; // type:object size:0x14 scope:local +sparkMotTbl = .data:0x801396B0; // type:object size:0x20 scope:local +boardSparkSfxTbl = .data:0x801396D0; // type:object size:0x20 scope:local +boardSparkSfxTblAlt = .data:0x801396F0; // type:object size:0x20 scope:local +megaSquishObj = .data:0x80139710; // type:object size:0x10 scope:local +megaSquishSfxTbl = .data:0x80139720; // type:object size:0x20 scope:local +lbl_80139740 = .data:0x80139740; // type:object size:0x24 +lbl_80139764 = .data:0x80139764; // type:object size:0x24 +lbl_80139788 = .data:0x80139788; // type:object size:0x18 +lbl_801397A0 = .data:0x801397A0; // type:object size:0x60 +lbl_80139800 = .data:0x80139800; // type:object size:0x38 +lbl_80139838 = .data:0x80139838; // type:object size:0x30 +lbl_80139868 = .data:0x80139868; // type:object size:0xB8 +lbl_80139920 = .data:0x80139920; // type:object size:0x24 +lbl_80139944 = .data:0x80139944; // type:object size:0x24 +lbl_80139968 = .data:0x80139968; // type:object size:0xC +lbl_80139974 = .data:0x80139974; // type:object size:0xC +jumptable_80139980 = .data:0x80139980; // type:object size:0x28 scope:local +lbl_801399A8 = .data:0x801399A8; // type:object size:0x24 +lbl_801399CC = .data:0x801399CC; // type:object size:0x10 +lbl_801399DC = .data:0x801399DC; // type:object size:0x6C +lbl_80139A48 = .data:0x80139A48; // type:object size:0xB0 +lbl_80139AF8 = .data:0x80139AF8; // type:object size:0x30 data:float +lbl_80139B28 = .data:0x80139B28; // type:object size:0x1A8 +lbl_80139CD0 = .data:0x80139CD0; // type:object size:0xDA +lbl_80139DAA = .data:0x80139DAA; // type:object size:0x13 +lbl_80139DBD = .data:0x80139DBD; // type:object size:0x23 +jumptable_80139DE0 = .data:0x80139DE0; // type:object size:0x24 scope:local +lbl_80139E04 = .data:0x80139E04; // type:object size:0x30 +lbl_80139E34 = .data:0x80139E34; // type:object size:0xC +lbl_80139E40 = .data:0x80139E40; // type:object size:0xC data:4byte +lbl_80139E4C = .data:0x80139E4C; // type:object size:0x20 +lbl_80139E6C = .data:0x80139E6C; // type:object size:0x24 +lbl_80139E90 = .data:0x80139E90; // type:object size:0x10 +lbl_80139EA0 = .data:0x80139EA0; // type:object size:0x28 +jumptable_80139EC8 = .data:0x80139EC8; // type:object size:0x1C scope:local +lbl_80139EE8 = .data:0x80139EE8; // type:object size:0x58 +lbl_80139F40 = .data:0x80139F40; // type:object size:0x10 +lbl_80139F50 = .data:0x80139F50; // type:object size:0x20 +lbl_80139F70 = .data:0x80139F70; // type:object size:0x48 +lbl_80139FB8 = .data:0x80139FB8; // type:object size:0x50 +lbl_8013A008 = .data:0x8013A008; // type:object size:0xC data:4byte +lbl_8013A014 = .data:0x8013A014; // type:object size:0xC data:4byte +lbl_8013A020 = .data:0x8013A020; // type:object size:0xC +lbl_8013A02C = .data:0x8013A02C; // type:object size:0x50 +lbl_8013A07C = .data:0x8013A07C; // type:object size:0x2C +lbl_8013A0A8 = .data:0x8013A0A8; // type:object size:0xC4 data:byte +lbl_8013A16C = .data:0x8013A16C; // type:object size:0x20 data:float +lbl_8013A18C = .data:0x8013A18C; // type:object size:0x10 +lbl_8013A19C = .data:0x8013A19C; // type:object size:0x88 +lbl_8013A224 = .data:0x8013A224; // type:object size:0x30 +lbl_8013A254 = .data:0x8013A254; // type:object size:0x54 +lbl_8013A2A8 = .data:0x8013A2A8; // type:object size:0x18 +lbl_8013A2C0 = .data:0x8013A2C0; // type:object size:0x38 +lbl_8013A2F8 = .data:0x8013A2F8; // type:object size:0x38 +lbl_8013A330 = .data:0x8013A330; // type:object size:0x70 +lbl_8013A3A0 = .data:0x8013A3A0; // type:object size:0x13 data:string +lbl_8013A3B3 = .data:0x8013A3B3; // type:object size:0x13 data:string +lbl_8013A3C6 = .data:0x8013A3C6; // type:object size:0x13 data:string +lbl_8013A3D9 = .data:0x8013A3D9; // type:object size:0x13 data:string +lbl_8013A3EC = .data:0x8013A3EC; // type:object size:0x13 data:string +lbl_8013A3FF = .data:0x8013A3FF; // type:object size:0x13 data:string +lbl_8013A412 = .data:0x8013A412; // type:object size:0x13 data:string +lbl_8013A425 = .data:0x8013A425; // type:object size:0x63 +lbl_8013A488 = .data:0x8013A488; // type:object size:0x40 +lbl_8013A4C8 = .data:0x8013A4C8; // type:object size:0x10 +lbl_8013A4D8 = .data:0x8013A4D8; // type:object size:0x1D8 +lbl_8013A6B0 = .data:0x8013A6B0; // type:object size:0x20 +jumptable_8013A6D0 = .data:0x8013A6D0; // type:object size:0x1C scope:local +lbl_8013A6EC = .data:0x8013A6EC; // type:object size:0x14 +lbl_8013A700 = .data:0x8013A700; // type:object size:0x18 +lbl_8013A718 = .data:0x8013A718; // type:object size:0x20 +lbl_8013A738 = .data:0x8013A738; // type:object size:0x18 +jumptable_8013A750 = .data:0x8013A750; // type:object size:0x24 scope:local +lbl_8013A774 = .data:0x8013A774; // type:object size:0x3C +lbl_8013A7B0 = .data:0x8013A7B0; // type:object size:0x18 +lbl_8013A7C8 = .data:0x8013A7C8; // type:object size:0xC0 +lbl_8013A888 = .data:0x8013A888; // type:object size:0x80 +lbl_8013A908 = .data:0x8013A908; // type:object size:0x18 +lbl_8013A920 = .data:0x8013A920; // type:object size:0xC data:string +lbl_8013A92C = .data:0x8013A92C; // type:object size:0x18 +jumptable_8013A944 = .data:0x8013A944; // type:object size:0x20 scope:local +lbl_8013A964 = .data:0x8013A964; // type:object size:0x24 +lbl_8013A988 = .data:0x8013A988; // type:object size:0x18 +lbl_8013A9A0 = .data:0x8013A9A0; // type:object size:0x34 +lbl_8013A9D4 = .data:0x8013A9D4; // type:object size:0x30 +lbl_8013AA04 = .data:0x8013AA04; // type:object size:0x30 +lbl_8013AA34 = .data:0x8013AA34; // type:object size:0x30 +lbl_8013AA64 = .data:0x8013AA64; // type:object size:0x24 +jumptable_8013AA88 = .data:0x8013AA88; // type:object size:0x20 scope:local +lbl_8013AAD8 = .data:0x8013AAD8; // type:object size:0x90 +lbl_8013AB68 = .data:0x8013AB68; // type:object size:0x30 +lbl_8013AB98 = .data:0x8013AB98; // type:object size:0xC +lbl_8013ABA4 = .data:0x8013ABA4; // type:object size:0x6C +lbl_8013AC10 = .data:0x8013AC10; // type:object size:0x10 data:4byte +lbl_8013AC20 = .data:0x8013AC20; // type:object size:0xC4 +lbl_8013ACE4 = .data:0x8013ACE4; // type:object size:0x24 +jumptable_8013AD08 = .data:0x8013AD08; // type:object size:0x1C scope:local +lbl_8013AD24 = .data:0x8013AD24; // type:object size:0x30 +jumptable_8013AD54 = .data:0x8013AD54; // type:object size:0x24 scope:local +lbl_8013AD78 = .data:0x8013AD78; // type:object size:0x120 +lbl_8013AE98 = .data:0x8013AE98; // type:object size:0x24 +lbl_8013AEBC = .data:0x8013AEBC; // type:object size:0x28 +lbl_8013AEE4 = .data:0x8013AEE4; // type:object size:0x1AC +lbl_8013B090 = .data:0x8013B090; // type:object size:0x10 data:2byte +lbl_8013B0A0 = .data:0x8013B0A0; // type:object size:0x40 data:float +lbl_8013B0E0 = .data:0x8013B0E0; // type:object size:0x74 +jumptable_8013B154 = .data:0x8013B154; // type:object size:0x20 scope:local +jumptable_8013B174 = .data:0x8013B174; // type:object size:0x20 scope:local +jumptable_8013B194 = .data:0x8013B194; // type:object size:0x20 scope:local +lbl_8013B1B8 = .data:0x8013B1B8; // type:object size:0x24 data:string +lbl_8013B1DC = .data:0x8013B1DC; // type:object size:0x24 data:string +@84 = .data:0x8013B200; // type:object size:0x1E scope:local data:string +lbl_8013B3C0 = .data:0x8013B3C0; // type:object size:0x398 +DSPInitCode = .data:0x8013B758; // type:object size:0x80 scope:local +@69 = .data:0x8013B7D8; // type:object size:0x29 scope:local data:string +lbl_8013BA08 = .data:0x8013BA08; // type:object size:0x1B4 +@74 = .data:0x8013BBBC; // type:object size:0x23 scope:local data:string +@10 = .data:0x8013BBE0; // type:object size:0x16 scope:local data:string +@43 = .data:0x8013BEBC; // type:object size:0x40 scope:local +lbl_8013BF00 = .data:0x8013BF00; // type:object size:0x30 data:4byte +lbl_8013BF30 = .data:0x8013BF30; // type:object size:0x28 +lbl_8013BF58 = .data:0x8013BF58; // type:object size:0x28 +ResetFunctionInfo = .data:0x8013BF80; // type:object size:0x10 scope:local +lbl_8013BF90 = .data:0x8013BF90; // type:object size:0x78 +lbl_8013C008 = .data:0x8013C008; // type:object size:0x30 +lbl_8013C038 = .data:0x8013C038; // type:object size:0x30 +lbl_8013C068 = .data:0x8013C068; // type:object size:0x18 data:string +lbl_8013C080 = .data:0x8013C080; // type:object size:0xC8 data:string +lbl_8013C148 = .data:0x8013C148; // type:object size:0x38 +lbl_8013C180 = .data:0x8013C180; // type:object size:0x34 data:string +lbl_8013C1B4 = .data:0x8013C1B4; // type:object size:0x34 +@13 = .data:0x8013C1E8; // type:object size:0x15 scope:local data:string +@293 = .data:0x8013C234; // type:object size:0x20 scope:local +jumptable_8013C254 = .data:0x8013C254; // type:object size:0x40 scope:local +jumptable_8013C294 = .data:0x8013C294; // type:object size:0x34 scope:local +jumptable_8013C2C8 = .data:0x8013C2C8; // type:object size:0x34 scope:local +lbl_8013C300 = .data:0x8013C300; // type:object size:0x48 data:4byte +@36 = .data:0x8013C348; // type:object size:0x1A scope:local data:string +lbl_8013C3B8 = .data:0x8013C3B8; // type:object size:0x164 +jumptable_8013C51C = .data:0x8013C51C; // type:object size:0x58 scope:local +lbl_8013C680 = .data:0x8013C680; // type:object size:0xC00 +lbl_8013D280 = .data:0x8013D280; // type:object size:0xC data:string +lbl_8013D28C = .data:0x8013D28C; // type:object size:0x28 +jumptable_8013D2B4 = .data:0x8013D2B4; // type:object size:0x28 scope:local +jumptable_8013D338 = .data:0x8013D338; // type:object size:0x28 scope:local +jumptable_8013D360 = .data:0x8013D360; // type:object size:0x28 scope:local +jumptable_8013D388 = .data:0x8013D388; // type:object size:0x28 scope:local +jumptable_8013D3B0 = .data:0x8013D3B0; // type:object size:0x28 scope:local +lbl_8013D3D8 = .data:0x8013D3D8; // type:object size:0x10 +lbl_8013D3E8 = .data:0x8013D3E8; // type:object size:0x38 +lbl_8013D420 = .data:0x8013D420; // type:object size:0x140 +jumptable_8013D560 = .data:0x8013D560; // type:object size:0x68 scope:local +jumptable_8013D5C8 = .data:0x8013D5C8; // type:object size:0x44 scope:local +jumptable_8013D60C = .data:0x8013D60C; // type:object size:0x1C scope:local +jumptable_8013D628 = .data:0x8013D628; // type:object size:0x54 scope:local +GXNtsc480IntDf = .data:0x8013D680; // type:object size:0x3C +GXNtsc480Prog = .data:0x8013D6BC; // type:object size:0x3C +GXMpal480IntDf = .data:0x8013D6F8; // type:object size:0x3C +GXPal528IntDf = .data:0x8013D734; // type:object size:0x3C +GXEurgb60Hz480IntDf = .data:0x8013D770; // type:object size:0x40 +jumptable_8013D7B0 = .data:0x8013D7B0; // type:object size:0x1C scope:local +jumptable_8013D7D0 = .data:0x8013D7D0; // type:object size:0xF4 scope:local +jumptable_8013D8C4 = .data:0x8013D8C4; // type:object size:0xF4 scope:local +jumptable_8013D9B8 = .data:0x8013D9B8; // type:object size:0x3C scope:local +lbl_8013D9F8 = .data:0x8013D9F8; // type:object size:0x28 +lbl_8013DA20 = .data:0x8013DA20; // type:object size:0x20 +jumptable_8013DA40 = .data:0x8013DA40; // type:object size:0x5C scope:local +jumptable_8013DA9C = .data:0x8013DA9C; // type:object size:0x90 scope:local +jumptable_8013DB2C = .data:0x8013DB2C; // type:object size:0x5C scope:local +lbl_8013DB88 = .data:0x8013DB88; // type:object size:0x18 +lbl_8013DBA0 = .data:0x8013DBA0; // type:object size:0x160 +lbl_8013DD00 = .data:0x8013DD00; // type:object size:0x20 +lbl_8013DD20 = .data:0x8013DD20; // type:object size:0x20 +Si = .data:0x8013DD40; // type:object size:0x14 scope:local data:4byte +Type = .data:0x8013DD54; // type:object size:0x10 scope:local +XYNTSC = .data:0x8013DE10; // type:object size:0x30 scope:local +lbl_8013DEA8 = .data:0x8013DEA8; // type:object size:0x10 +jumptable_8013DEB8 = .data:0x8013DEB8; // type:object size:0x44 scope:local +jumptable_8013DEFC = .data:0x8013DEFC; // type:object size:0x44 scope:local +jumptable_8013DF40 = .data:0x8013DF40; // type:object size:0x44 scope:local +lbl_8013DF84 = .data:0x8013DF84; // type:object size:0xC +lbl_8013DF90 = .data:0x8013DF90; // type:object size:0x10 +__files = .data:0x8013DFA0; // type:object size:0x140 scope:global +jumptable_8013E0E0 = .data:0x8013E0E0; // type:object size:0x124 scope:local +lbl_8013E208 = .data:0x8013E208; // type:object size:0x100 +lbl_8013E308 = .data:0x8013E308; // type:object size:0x100 +@1249 = .data:0x8013E408; // type:object size:0x84 scope:local +jumptable_8013E48C = .data:0x8013E48C; // type:object size:0x84 scope:local +jumptable_8013E510 = .data:0x8013E510; // type:object size:0xE0 scope:local +jumptable_8013E5F0 = .data:0x8013E5F0; // type:object size:0x44 scope:local +lbl_8013E638 = .data:0x8013E638; // type:object size:0x88 +jumptable_8013E6C0 = .data:0x8013E6C0; // type:object size:0x1C scope:local +jumptable_8013E6DC = .data:0x8013E6DC; // type:object size:0x1C scope:local +gTRKRestoreFlags = .data:0x8013E6F8; // type:object size:0x9 scope:global data:byte +gTRKExceptionStatus = .data:0x8013E704; // type:object size:0x10 scope:local data:4byte +lbl_8013E714 = .data:0x8013E714; // type:object size:0x14 data:4byte +lbl_8013E728 = .data:0x8013E728; // type:object size:0x40 data:4byte +gDBCommTable = .data:0x8013E768; // type:object size:0x1C scope:global data:4byte +jumptable_8013E788 = .data:0x8013E788; // type:object size:0x50 scope:local +lbl_8013E7D8 = .data:0x8013E7D8; // type:object size:0x1C +lbl_8013E7F4 = .data:0x8013E7F4; // type:object size:0x204 +lbl_8013E9F8 = .data:0x8013E9F8; // type:object size:0x20 +lbl_8013EA18 = .data:0x8013EA18; // type:object size:0x10 +lbl_8013EA28 = .data:0x8013EA28; // type:object size:0x20 +lbl_8013EA48 = .data:0x8013EA48; // type:object size:0x10 +jumptable_8013EA58 = .data:0x8013EA58; // type:object size:0x1C8 scope:local +lbl_8013EC20 = .data:0x8013EC20; // type:object size:0x200 +lbl_8013EE20 = .data:0x8013EE20; // type:object size:0x200 +lbl_8013F020 = .data:0x8013F020; // type:object size:0x184 +lbl_8013F1A4 = .data:0x8013F1A4; // type:object size:0x400 +lbl_8013F5A4 = .data:0x8013F5A4; // type:object size:0x204 +lbl_8013F7A8 = .data:0x8013F7A8; // type:object size:0x18 +lbl_8013F7C0 = .data:0x8013F7C0; // type:object size:0x228 +lbl_8013F9E8 = .data:0x8013F9E8; // type:object size:0x10 +lbl_8013F9F8 = .data:0x8013F9F8; // type:object size:0x10 +jumptable_8013FA08 = .data:0x8013FA08; // type:object size:0x24 scope:local +jumptable_8013FA2C = .data:0x8013FA2C; // type:object size:0x24 scope:local +jumptable_8013FA50 = .data:0x8013FA50; // type:object size:0x24 scope:local +lbl_8013FA78 = .data:0x8013FA78; // type:object size:0x808 +lbl_80140280 = .data:0x80140280; // type:object size:0x19E0 +lbl_80141C60 = .data:0x80141C60; // type:object size:0x10 +lbl_80141C70 = .data:0x80141C70; // type:object size:0x20 +lbl_80141C90 = .data:0x80141C90; // type:object size:0x800 +padStatErrOld = .bss:0x801424A0; // type:object size:0x10 scope:local +rumbleData = .bss:0x801424B0; // type:object size:0x20 scope:local +ReadDataStat = .bss:0x801424E0; // type:object size:0x2E00 scope:local align:32 data:4byte +TextBuffer = .bss:0x801452E0; // type:object size:0x400 +rmodeobj = .bss:0x801456E0; // type:object size:0x40 scope:local +HeapTbl = .bss:0x80145720; // type:object size:0x18 scope:local +strline = .bss:0x80145738; // type:object size:0x6800 scope:local +pfStrBuf = .bss:0x8014BF38; // type:object size:0x100 scope:local data:byte +processjmpbuf = .bss:0x8014C038; // type:object size:0xF8 scope:local align:8 +HuSprData = .bss:0x8014C130; // type:object size:0x9600 +HuSprGrpData = .bss:0x80155730; // type:object size:0x5400 data:2byte +HuSprOrder = .bss:0x8015AB30; // type:object size:0x1800 scope:local +bmpNoCC = .bss:0x8015C330; // type:object size:0x20 scope:local +HuSprLayerDrawNo = .bss:0x8015C350; // type:object size:0x10 scope:local +Model = .bss:0x8015C360; // type:object size:0x80 +head = .bss:0x8015C3E0; // type:object size:0xB0 +rgba = .bss:0x8015C490; // type:object size:0x190 +lbl_8015C620 = .bss:0x8015C620; // type:object size:0x300 scope:local data:byte +DrawObjData = .bss:0x8015C920; // type:object size:0x9000 scope:local +BmpPtrBak = .bss:0x80165920; // type:object size:0x20 scope:local data:4byte +MTXBuf = .bss:0x80165940; // type:object size:0x1200 scope:local +scaleBuf = .bss:0x80166B40; // type:object size:0x480 scope:local data:4byte +texCol = .bss:0x80166FC0; // type:object size:0x40 scope:local data:byte +hiliteMtx = .bss:0x80167000; // type:object size:0x30 scope:local +DrawObjNum = .bss:0x80167030; // type:object size:0x400 scope:local +NBTB = .bss:0x80167430; // type:object size:0xC scope:local data:float +NBTT = .bss:0x8016743C; // type:object size:0xC scope:local data:float +PGMaxPos = .bss:0x80167448; // type:object size:0xC data:float +PGMinPos = .bss:0x80167454; // type:object size:0xC data:float +Hu3DData = .bss:0x80167460; // type:object size:0x24800 data:byte +Hu3DCamera = .bss:0x8018BC60; // type:object size:0x580 data:float +layerNum = .bss:0x8018C1E0; // type:object size:0x10 scope:local data:2byte +layerHook = .bss:0x8018C1F0; // type:object size:0x20 scope:local +reflectAnim = .bss:0x8018C210; // type:object size:0x14 data:4byte +hiliteAnim = .bss:0x8018C224; // type:object size:0x10 data:4byte +Hu3DProjection = .bss:0x8018C234; // type:object size:0x260 data:byte +Hu3DShadowData = .bss:0x8018C494; // type:object size:0x98 data:byte +FogData = .bss:0x8018C52C; // type:object size:0x10 data:4byte +Hu3DCameraMtx = .bss:0x8018C53C; // type:object size:0x30 +Hu3DCameraMtxXPose = .bss:0x8018C56C; // type:object size:0x30 +Hu3DGlobalLight = .bss:0x8018C59C; // type:object size:0x220 data:2byte +Hu3DLocalLight = .bss:0x8018C7BC; // type:object size:0x880 data:2byte +Hu3DMotion = .bss:0x8018D070; // type:object size:0x800 data:2byte +Hu3DTexAnimData = .bss:0x8018D870; // type:object size:0x1400 data:2byte +Hu3DTexScrData = .bss:0x8018EC70; // type:object size:0x6C0 data:2byte +parManProc = .bss:0x8018F330; // type:object size:0x100 scope:local +perf = .bss:0x8018F430; // type:object size:0x370 scope:local +Ssw = .bss:0x8018F7A0; // type:object size:0x38 scope:local +omovlhis = .bss:0x8018F7D8; // type:object size:0xC0 scope:local +XFB_Geometry = .bss:0x8018F898; // type:object size:0x18 scope:local +GWPlayerCfg = .bss:0x8018F8B0; // type:object size:0x28 +GWPlayer = .bss:0x8018F8D8; // type:object size:0xC0 data:byte +GWSystem = .bss:0x8018F998; // type:object size:0xDC data:byte +GWGameStat = .bss:0x8018FA78; // type:object size:0x118 +GWGameStatDefault = .bss:0x8018FB90; // type:object size:0x118 +CRot = .bss:0x8018FCA8; // type:object size:0xC data:float +Center = .bss:0x8018FCB4; // type:object size:0xC data:float +CRotM = .bss:0x8018FCC0; // type:object size:0xC0 +CenterM = .bss:0x8018FD80; // type:object size:0xC0 +CZoomM = .bss:0x8018FE40; // type:object size:0x40 +omDLLinfoTbl = .bss:0x8018FE80; // type:object size:0x50 +sndFXBuf = .bss:0x8018FED0; // type:object size:0x200 scope:local +charVoiceGroupStat = .bss:0x801900D0; // type:object size:0x20 +seqWorkData = .bss:0x801900F0; // type:object size:0x400 scope:local data:4byte +winnerNameW = .bss:0x801904F0; // type:object size:0x10 scope:local data:2byte +esprite = .bss:0x80190500; // type:object size:0x600 data:2byte +espanim = .bss:0x80190B00; // type:object size:0x1200 data:4byte +lbl_80192060 = .bss:0x80191D00; // type:object size:0x100 +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 +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 +ARQueBuf = .bss:0x801968A0; // type:object size:0x280 scope:local +preLoadBuf = .bss:0x80196B20; // type:object size:0x40 scope:local align:32 +charInstance = .bss:0x80196B60; // type:object size:0x640 scope:local +effectMdl = .bss:0x801971A0; // type:object size:0x10 scope:local data:2byte +particleData = .bss:0x801971B0; // type:object size:0x20 scope:local +itemHookProcess = .bss:0x801971D0; // type:object size:0x80 scope:local +lbl_801975B0 = .bss:0x80197250; // type:object size:0x10 scope:local +lbl_801975C0 = .bss:0x80197260; // type:object size:0x90 scope:local +MapObject = .bss:0x801972F0; // type:object size:0x40 +MapMT = .bss:0x80197330; // type:object size:0x30 +MapMTR = .bss:0x80197360; // type:object size:0x30 +MTRAdd = .bss:0x80197390; // type:object size:0xC scope:local data:float +FieldVec = .bss:0x8019739C; // type:object size:0xC scope:local data:float +ColisionIdx = .bss:0x801973A8; // type:object size:0x78 +HitFaceVec = .bss:0x80197420; // type:object size:0x180 +OldXYZ = .bss:0x801975A0; // type:object size:0xC scope:local +HitFace = .bss:0x801975AC; // type:object size:0x180 +CharObject = .bss:0x8019772C; // type:object size:0x30 +SimpleControl = .bss:0x80197760; // type:object size:0x1A0 +SoundBuffer = .bss:0x80197900; // type:object size:0x500 scope:local +WorkBuffer = .bss:0x80197E00; // type:object size:0x40 scope:local +THPFileName = .bss:0x80197E40; // type:object size:0x40 scope:local +mgGameStatBackup = .bss:0x80197E80; // type:object size:0x118 +mgIndexList = .bss:0x80197F98; // type:object size:0x100 +mgTicTacToeGrid = .bss:0x80198098; // type:object size:0x12 +_Sys_Flag = .bss:0x801980B0; // type:object size:0x10 scope:local +curFileInfo = .bss:0x801980C0; // type:object size:0x14 +saveBuf = .bss:0x801980E0; // type:object size:0x4000 +ToeMessageQueue = .bss:0x8019C0E0; // type:object size:0x20 scope:local +padStat$238 = .bss:0x8019C100; // type:object size:0x30 scope:local +ToeMessageArray = .bss:0x8019C130; // type:object size:0x40 scope:local +ToeThread = .bss:0x8019C170; // type:object size:0x310 scope:local +ToeThreadStack = .bss:0x8019C480; // type:object size:0x1000 scope:local +boardCamera = .bss:0x8019D480; // type:object size:0xC4 data:byte +cameraBackup = .bss:0x8019D544; // type:object size:0xC4 scope:local +preTurnHook = .bss:0x8019D608; // type:object size:0x10 scope:local +postTurnHook = .bss:0x8019D618; // type:object size:0x10 scope:local +playerMatCopy = .bss:0x8019D628; // type:object size:0x10 scope:local +lbl_8019D638 = .bss:0x8019D638; // type:object size:0x20 +lbl_8019D658 = .bss:0x8019D658; // type:object size:0x40 +lbl_8019D698 = .bss:0x8019D698; // type:object size:0xC data:float +lbl_8019D6A4 = .bss:0x8019D6A4; // type:object size:0xC data:4byte +lbl_8019D6B0 = .bss:0x8019D6B0; // type:object size:0x7000 data:float +lbl_801A46B0 = .bss:0x801A46B0; // type:object size:0x50 +lbl_801A4700 = .bss:0x801A4700; // type:object size:0x14 data:4byte +lbl_801A4714 = .bss:0x801A4714; // type:object size:0x1C +lbl_801A4730 = .bss:0x801A4730; // type:object size:0xC data:2byte +lbl_801A473C = .bss:0x801A473C; // type:object size:0xC +lbl_801A4748 = .bss:0x801A4748; // type:object size:0x18 data:2byte +lbl_801A4760 = .bss:0x801A4760; // type:object size:0x10 +lbl_801A4770 = .bss:0x801A4770; // type:object size:0x10 data:4byte +lbl_801A4780 = .bss:0x801A4780; // type:object size:0x10 +lbl_801A4790 = .bss:0x801A4790; // type:object size:0x18 +lbl_801A47A8 = .bss:0x801A47A8; // type:object size:0x30 +lbl_801A47D8 = .bss:0x801A47D8; // type:object size:0x48 +lbl_801A4820 = .bss:0x801A4820; // type:object size:0x28 +lbl_801A4848 = .bss:0x801A4848; // type:object size:0xC data:4byte +lbl_801A4854 = .bss:0x801A4854; // type:object size:0x34 data:float +lbl_801A4888 = .bss:0x801A4888; // type:object size:0x30 +lbl_801A48B8 = .bss:0x801A48B8; // type:object size:0x18 +lbl_801A48D0 = .bss:0x801A48D0; // type:object size:0x10 data:2byte +lbl_801A48E0 = .bss:0x801A48E0; // type:object size:0xC data:4byte +lbl_801A48EC = .bss:0x801A48EC; // type:object size:0xC data:float +lbl_801A48F8 = .bss:0x801A48F8; // type:object size:0x20 data:2byte +lbl_801A4918 = .bss:0x801A4918; // type:object size:0x40 data:2byte +lbl_801A4958 = .bss:0x801A4958; // type:object size:0x10 +lbl_801A4968 = .bss:0x801A4968; // type:object size:0x10 data:2byte +lbl_801A4978 = .bss:0x801A4978; // type:object size:0xC data:float +lbl_801A4984 = .bss:0x801A4984; // type:object size:0xC data:float +lbl_801A4990 = .bss:0x801A4990; // type:object size:0xC data:float +lbl_801A499C = .bss:0x801A499C; // type:object size:0xC data:float +lbl_801A49A8 = .bss:0x801A49A8; // type:object size:0xC +lbl_801A49B4 = .bss:0x801A49B4; // type:object size:0x10 data:2byte +lbl_801A49C4 = .bss:0x801A49C4; // type:object size:0x14 data:4byte +lbl_801A49D8 = .bss:0x801A49D8; // type:object size:0x20 +lbl_801A49F8 = .bss:0x801A49F8; // type:object size:0x10 data:float +lbl_801A4A08 = .bss:0x801A4A08; // type:object size:0x500 data:byte +lbl_801A4F08 = .bss:0x801A4F08; // type:object size:0x80 +boardTutorialData = .bss:0x801A4F88; // type:object size:0x18 data:4byte +DriveInfo = .bss:0x801A4FA0; // type:object size:0x20 scope:local +__OSErrorTable = .bss:0x801A4FF0; // type:object size:0x40 scope:global +lbl_801A5040 = .bss:0x801A5040; // type:object size:0x20 +Scb = .bss:0x801A5060; // type:object size:0x54 scope:local data:4byte +RunQueue = .bss:0x801A50B8; // type:object size:0x100 scope:local data:4byte +CommandList = .bss:0x801A5AA0; // type:object size:0x3C scope:local data:4byte +AlarmForTimeout = .bss:0x801A5B08; // type:object size:0x28 scope:local +tmpBuffer = .bss:0x801A5B80; // type:object size:0x80 scope:local +DummyCommandBlock = .bss:0x801A5C00; // type:object size:0x30 scope:local +WaitingQueue = .bss:0x801A5C58; // type:object size:0x20 scope:local data:4byte +bb2Buf = .bss:0x801A5C78; // type:object size:0x3F scope:local +block$16 = .bss:0x801A5CB8; // type:object size:0x30 scope:local +lbl_801A5CE8 = .bss:0x801A5CE8; // type:object size:0x78 data:2byte +lbl_801A5D60 = .bss:0x801A5D60; // type:object size:0x78 +lbl_801A5DD8 = .bss:0x801A5DD8; // type:object size:0x58 data:2byte +lbl_801A5E30 = .bss:0x801A5E30; // type:object size:0x20 +lbl_801A5E50 = .bss:0x801A5E50; // type:object size:0x10 +lbl_801A5E60 = .bss:0x801A5E60; // type:object size:0x40 +gxData = .bss:0x801A5EA0; // type:object size:0x4F8 scope:local +lbl_801A6418 = .bss:0x801A6418; // type:object size:0x520 data:4byte +lbl_801A6938 = .bss:0x801A6938; // type:object size:0x220 data:4byte +lbl_801A6B58 = .bss:0x801A6B58; // type:object size:0x20 +Ecb = .bss:0x801A6B78; // type:object size:0xC0 scope:local data:4byte +Packet = .bss:0x801A6C38; // type:object size:0x80 scope:local data:4byte +lbl_801A6CB8 = .bss:0x801A6CB8; // type:object size:0xA0 +TypeTime = .bss:0x801A6D58; // type:object size:0x20 scope:local +lbl_801A6D78 = .bss:0x801A6D78; // type:object size:0x20 +lbl_801A6D98 = .bss:0x801A6D98; // type:object size:0x40 +lbl_801A6DD8 = .bss:0x801A6DD8; // type:object size:0x68 data:4byte +lbl_801A6E40 = .bss:0x801A6E40; // type:object size:0x118 +lbl_801A6F58 = .bss:0x801A6F58; // type:object size:0x18 data:4byte +fragmentinfo = .bss:0x801A6F70; // type:object size:0xC scope:local data:4byte +__atexit_funcs = .bss:0x801A6F80; // type:object size:0x100 scope:local +lbl_801A7080 = .bss:0x801A7080; // type:object size:0x38 data:4byte +lbl_801A70B8 = .bss:0x801A70B8; // type:object size:0x100 +lbl_801A71B8 = .bss:0x801A71B8; // type:object size:0x100 +lbl_801A72B8 = .bss:0x801A72B8; // type:object size:0x100 +lbl_801A73B8 = .bss:0x801A73B8; // type:object size:0x18 +lbl_801A73D0 = .bss:0x801A73D0; // type:object size:0x28 +gTRKBigEndian = .bss:0x801A73F8; // type:object size:0x4 scope:global data:4byte +lbl_801A7400 = .bss:0x801A7400; // type:object size:0x19B0 +gTRKInputPendingPtr = .bss:0x801A8DB0; // type:object size:0x4 scope:global data:4byte +lbl_801A8DB4 = .bss:0x801A8DB4; // type:object size:0x14 data:4byte +lbl_801A8DC8 = .bss:0x801A8DC8; // type:object size:0x8 data:4byte +lbl_801A8DD0 = .bss:0x801A8DD0; // type:object size:0x8 data:4byte +TRK_saved_exceptionID = .bss:0x801A8DD8; // type:object size:0x2 scope:local data:2byte +gTRKState = .bss:0x801A8DDC; // type:object size:0xA4 scope:global data:4byte +gTRKCPUState = .bss:0x801A8E80; // type:object size:0x430 scope:global +gTRKSaveState = .bss:0x801A92B0; // type:object size:0x94 scope:global data:4byte +lbl_801A9344 = .bss:0x801A9344; // type:object size:0x14 +lbl_801A9358 = .bss:0x801A9358; // type:object size:0x8 data:4byte +TRK_mainError = .bss:0x801A9360; // type:object size:0x4 scope:local data:4byte +lbl_801A9368 = .bss:0x801A9368; // type:object size:0x111C data:4byte +lbl_801AA484 = .bss:0x801AA484; // type:object size:0x110C +lbl_801AB590 = .bss:0x801AB590; // type:object size:0x8 data:byte +lbl_801AB598 = .bss:0x801AB598; // type:object size:0x1400 data:4byte +lbl_801AC998 = .bss:0x801AC998; // type:object size:0xC340 +lbl_801B8CD8 = .bss:0x801B8CD8; // type:object size:0x100 data:2byte +lbl_801B8DD8 = .bss:0x801B8DD8; // type:object size:0x240 +lbl_801B9018 = .bss:0x801B9018; // type:object size:0x214 data:4byte +lbl_801B922C = .bss:0x801B922C; // type:object size:0x600 data:float +lbl_801B982C = .bss:0x801B982C; // type:object size:0x40 data:byte +lbl_801B986C = .bss:0x801B986C; // type:object size:0x180 +lbl_801B99EC = .bss:0x801B99EC; // type:object size:0x20 data:4byte +lbl_801B9A0C = .bss:0x801B9A0C; // type:object size:0x20 data:4byte +lbl_801B9A2C = .bss:0x801B9A2C; // type:object size:0x20 data:4byte +lbl_801B9A4C = .bss:0x801B9A4C; // type:object size:0x20 data:4byte +lbl_801B9A6C = .bss:0x801B9A6C; // type:object size:0x10 data:byte +lbl_801B9A7C = .bss:0x801B9A7C; // type:object size:0x40 data:4byte +lbl_801B9ABC = .bss:0x801B9ABC; // type:object size:0x480 +lbl_801B9F3C = .bss:0x801B9F3C; // type:object size:0x484 +lbl_801BA3C0 = .bss:0x801BA3C0; // type:object size:0x697 +lbl_801BAA57 = .bss:0x801BAA57; // type:object size:0x1269 +lbl_801BBCC0 = .bss:0x801BBCC0; // type:object size:0x800 +lbl_801BC4C0 = .bss:0x801BC4C0; // type:object size:0xC00 +lbl_801BD0C0 = .bss:0x801BD0C0; // type:object size:0x32C0 +lbl_801C0380 = .bss:0x801C0380; // type:object size:0x7 +lbl_801C0387 = .bss:0x801C0387; // type:object size:0x379 +lbl_801C0700 = .bss:0x801C0700; // type:object size:0x800 +lbl_801C0F00 = .bss:0x801C0F00; // type:object size:0x1C0 +lbl_801C10C0 = .bss:0x801C10C0; // type:object size:0x600 data:4byte +lbl_801C16C0 = .bss:0x801C16C0; // type:object size:0x400 data:2byte +lbl_801C1AC0 = .bss:0x801C1AC0; // type:object size:0x800 data:2byte +lbl_801C22C0 = .bss:0x801C22C0; // type:object size:0x4000 +lbl_801C62C0 = .bss:0x801C62C0; // type:object size:0x20 data:2byte +lbl_801C62E0 = .bss:0x801C62E0; // type:object size:0xC +lbl_801C62EC = .bss:0x801C62EC; // type:object size:0xC data:2byte +lbl_801C62F8 = .bss:0x801C62F8; // type:object size:0x20 data:4byte +lbl_801C6318 = .bss:0x801C6318; // type:object size:0xF00 data:4byte +lbl_801C7218 = .bss:0x801C7218; // type:object size:0x40 data:byte +lbl_801C7258 = .bss:0x801C7258; // type:object size:0x80 data:byte +lbl_801C72D8 = .bss:0x801C72D8; // type:object size:0x950 data:byte +lbl_801C7C28 = .bss:0x801C7C28; // type:object size:0x3D7 +lbl_801C7FFF = .bss:0x801C7FFF; // type:object size:0x229 +lbl_801C8228 = .bss:0x801C8228; // type:object size:0x5E0 data:4byte +lbl_801C8808 = .bss:0x801C8808; // type:object size:0x100 data:4byte +lbl_801C8908 = .bss:0x801C8908; // type:object size:0x50 +lbl_801C8958 = .bss:0x801C8958; // type:object size:0x400 data:4byte +lbl_801C8D58 = .bss:0x801C8D58; // type:object size:0x300 +lbl_801C9058 = .bss:0x801C9058; // type:object size:0x700 +lbl_801C9758 = .bss:0x801C9758; // type:object size:0x200 data:4byte +lbl_801C9958 = .bss:0x801C9958; // type:object size:0x4300 +lbl_801CDC58 = .bss:0x801CDC58; // type:object size:0x80 +lbl_801CDCD8 = .bss:0x801CDCD8; // type:object size:0x2180 +lbl_801CFE58 = .bss:0x801CFE58; // type:object size:0x40 +lbl_801CFE98 = .bss:0x801CFE98; // type:object size:0x80 +lbl_801CFF18 = .bss:0x801CFF18; // type:object size:0x40 +lbl_801CFF58 = .bss:0x801CFF58; // type:object size:0x284 +lbl_801D01DC = .bss:0x801D01DC; // type:object size:0x284 +lbl_801D0460 = .bss:0x801D0460; // type:object size:0x400 data:4byte +lbl_801D0860 = .bss:0x801D0860; // type:object size:0x60 +lbl_801D08C0 = .bss:0x801D08C0; // type:object size:0x2000 +lbl_801D28C0 = .bss:0x801D28C0; // type:object size:0x500 data:4byte +lbl_801D2DC0 = .bss:0x801D2DC0; // type:object size:0x30 data:4byte +lbl_801D2DF0 = .bss:0x801D2DF0; // type:object size:0x10 data:4byte +lbl_801D2E00 = .bss:0x801D2E00; // type:object size:0x178 data:2byte +lbl_801D2F78 = .bss:0x801D2F78; // type:object size:0xE8 data:4byte +lbl_801D3060 = .bss:0x801D3060; // type:object size:0x60 data:4byte +lbl_801D30C0 = .sdata:0x801D30C0; // type:object size:0x5 scope:local data:string +lbl_801D30C5 = .sdata:0x801D30C5; // type:object size:0x7 scope:local +rnd_seed = .sdata:0x801D30CC; // type:object size:0x4 data:4byte +lbl_801D30D0 = .sdata:0x801D30D0; // type:object size:0x6 scope:local data:string +lbl_801D30D6 = .sdata:0x801D30D6; // type:object size:0x2 scope:local data:string +lbl_801D30D8 = .sdata:0x801D30D8; // type:object size:0x7 scope:local data:string +lbl_801D30DF = .sdata:0x801D30DF; // type:object size:0x9 scope:local +FirstFrame = .sdata:0x801D30E8; // type:object size:0x4 data:4byte +lbl_801D30EC = .sdata:0x801D30EC; // type:object size:0x7 scope:local data:string +lbl_801D30F3 = .sdata:0x801D30F3; // type:object size:0xD scope:local +lbl_801D3100 = .sdata:0x801D3100; // type:object size:0x2 scope:local data:string +lbl_801D3102 = .sdata:0x801D3102; // type:object size:0xE scope:local +oneceF = .sdata:0x801D3110; // type:object size:0x2 scope:local data:2byte +firstTev = .sdata:0x801D3112; // type:object size:0x4 scope:local +secondTev = .sdata:0x801D3116; // type:object size:0x4 scope:local +lbl_801D311A = .sdata:0x801D311A; // type:object size:0xE scope:local +lbl_801D3128 = .sdata:0x801D3128; // type:object size:0x4 scope:local data:string +lbl_801D312C = .sdata:0x801D312C; // type:object size:0xC scope:local +omSysPauseEnableFlag = .sdata:0x801D3138; // type:object size:0x1 data:byte +omprevovl = .sdata:0x801D313C; // type:object size:0x4 data:4byte +titleMes = .sdata:0x801D3140; // type:object size:0x4 scope:local data:4byte +lbl_801D3144 = .sdata:0x801D3144; // type:object size:0xC scope:local +lbl_801D3150 = .sdata:0x801D3150; // type:object size:0x1 scope:local +lbl_801D3151 = .sdata:0x801D3151; // type:object size:0x7 scope:local +mgSeqOvlPrev = .sdata:0x801D3158; // type:object size:0x4 data:4byte +wordStartE = .sdata:0x801D315C; // type:object size:0x7 scope:local data:string +seqPunctTbl = .sdata:0x801D3163; // type:object size:0x3 scope:local data:byte +wordStartJ = .sdata:0x801D3166; // type:object size:0x6 scope:local +wordFinishJ = .sdata:0x801D316C; // type:object size:0x8 scope:local +wordDrawJ = .sdata:0x801D3174; // type:object size:0x6 scope:local +wordFinishE = .sdata:0x801D317A; // type:object size:0x8 scope:local data:string +wordDrawE = .sdata:0x801D3182; // type:object size:0x6 scope:local data:string +@1961 = .sdata:0x801D3188; // type:object size:0x4 scope:local data:string +@1962 = .sdata:0x801D318C; // type:object size:0x6 scope:local data:string +@1963 = .sdata:0x801D3192; // type:object size:0x6 scope:local +@1964 = .sdata:0x801D3198; // type:object size:0x6 scope:local data:string +@1965 = .sdata:0x801D319E; // type:object size:0x5 scope:local +@1966 = .sdata:0x801D31A3; // type:object size:0x6 scope:local data:string +@1967 = .sdata:0x801D31A9; // type:object size:0x5 scope:local +@1968 = .sdata:0x801D31AE; // type:object size:0x6 scope:local data:string +@1969 = .sdata:0x801D31B4; // type:object size:0x4 scope:local +@1970 = .sdata:0x801D31B8; // type:object size:0x6 scope:local data:string +@1971 = .sdata:0x801D31BE; // type:object size:0x6 scope:local +@1972 = .sdata:0x801D31C4; // type:object size:0x3 scope:local data:string +@1973 = .sdata:0x801D31C7; // type:object size:0x7 scope:local +@1974 = .sdata:0x801D31CE; // type:object size:0x6 scope:local data:string +@1975 = .sdata:0x801D31D4; // type:object size:0x7 scope:local +@1976 = .sdata:0x801D31DB; // type:object size:0x8 scope:local data:string +@1977 = .sdata:0x801D31E3; // type:object size:0x5 scope:local +@1978 = .sdata:0x801D31E8; // type:object size:0x7 scope:local data:string +@1979 = .sdata:0x801D31EF; // type:object size:0x6 scope:local +@1980 = .sdata:0x801D31F5; // type:object size:0x5 scope:local data:string +@1981 = .sdata:0x801D31FA; // type:object size:0x5 scope:local +@1982 = .sdata:0x801D31FF; // type:object size:0x6 scope:local data:string +@1983 = .sdata:0x801D3205; // type:object size:0x4 scope:local +@1984 = .sdata:0x801D3209; // type:object size:0x8 scope:local data:string +@1985 = .sdata:0x801D3211; // type:object size:0x5 scope:local +@1986 = .sdata:0x801D3216; // type:object size:0x7 scope:local +@1987 = .sdata:0x801D321D; // type:object size:0x6 scope:local +@1988 = .sdata:0x801D3223; // type:object size:0x7 scope:local data:string +@1989 = .sdata:0x801D322A; // type:object size:0x3 scope:local +@1990 = .sdata:0x801D322D; // type:object size:0x5 scope:local data:string +@1991 = .sdata:0x801D3232; // type:object size:0x6 scope:local +@1992 = .sdata:0x801D3238; // type:object size:0x5 scope:local data:string +@1993 = .sdata:0x801D323D; // type:object size:0x7 scope:local +@1994 = .sdata:0x801D3244; // type:object size:0x6 scope:local +@1995 = .sdata:0x801D324A; // type:object size:0x6 scope:local data:string +pauseStr$2283 = .sdata:0x801D3250; // type:object size:0x8 scope:local +lbl_801D35C0 = .sdata:0x801D3258; // type:object size:0x8 +lbl_801D35C8 = .sdata:0x801D3260; // type:object size:0x8 +lbl_801D35D0 = .sdata:0x801D3268; // type:object size:0x8 +lbl_801D35D8 = .sdata:0x801D3270; // type:object size:0x8 +colorN$226 = .sdata:0x801D3278; // type:object size:0x4 scope:local data:byte +colorN$271 = .sdata:0x801D327C; // type:object size:0x4 scope:local data:byte +winPrio = .sdata:0x801D3280; // type:object size:0x2 scope:local data:2byte +lbl_801D3288 = .sdata:0x801D3288; // type:object size:0x8 scope:local +lbl_801D3290 = .sdata:0x801D3290; // type:object size:0x8 scope:local +lbl_801D3298 = .sdata:0x801D3298; // type:object size:0x8 scope:local +lbl_801D32A0 = .sdata:0x801D32A0; // type:object size:0x8 scope:local +lbl_801D32A8 = .sdata:0x801D32A8; // type:object size:0x8 scope:local +lbl_801D32B0 = .sdata:0x801D32B0; // type:object size:0x1 scope:local +lbl_801D32B1 = .sdata:0x801D32B1; // type:object size:0x5 scope:local data:string +lbl_801D32B6 = .sdata:0x801D32B6; // type:object size:0x5 scope:local data:string +lbl_801D32BB = .sdata:0x801D32BB; // type:object size:0x8 scope:local data:string +lbl_801D32C3 = .sdata:0x801D32C3; // type:object size:0x6 scope:local data:string +lbl_801D32C9 = .sdata:0x801D32C9; // type:object size:0x7 scope:local +lbl_801D32D0 = .sdata:0x801D32D0; // type:object size:0x8 scope:local +SaveEnableF = .sdata:0x801D32D8; // type:object size:0x4 data:4byte +@228 = .sdata:0x801D32DC; // type:object size:0x2 scope:local data:string +@229 = .sdata:0x801D32DE; // type:object size:0x2 scope:local data:string +SlotNameTbl = .sdata:0x801D32E0; // type:object size:0x8 scope:local +lbl_801D32E8 = .sdata:0x801D32E8; // type:object size:0x3 scope:local +lbl_801D32EB = .sdata:0x801D32EB; // type:object size:0x4 scope:local +slotIconMesTbl = .sdata:0x801D32F0; // type:object size:0x8 scope:local +sjisSpace = .sdata:0x801D32F8; // type:object size:0x3 scope:local data:byte +saveMessWin = .sdata:0x801D32FC; // type:object size:0x4 scope:local data:4byte +SR_PushTime = .sdata:0x801D3300; // type:object size:0x8 scope:local data:2byte +SR_ResetPad = .sdata:0x801D3308; // type:object size:0x1 scope:local data:byte +Xfb = .sdata:0x801D330C; // type:object size:0x8 scope:local data:4byte +nextOvl = .sdata:0x801D3318; // type:object size:0x4 scope:local data:4byte +lbl_801D331C = .sdata:0x801D331C; // type:object size:0x4 scope:local data:byte +lbl_801D3320 = .sdata:0x801D3320; // type:object size:0x6 scope:local data:string +suitMdl = .sdata:0x801D3328; // type:object size:0x2 scope:local data:2byte +suitPlayerMdl = .sdata:0x801D332A; // type:object size:0x2 scope:local data:2byte +suitCurrMot = .sdata:0x801D332C; // type:object size:0x2 scope:local data:2byte +lbl_801D332E = .sdata:0x801D332E; // type:object size:0x5 scope:local data:string +lbl_801D3333 = .sdata:0x801D3333; // type:object size:0x5 scope:local data:string +lbl_801D3338 = .sdata:0x801D3338; // type:object size:0x6 scope:local data:string +lbl_801D333E = .sdata:0x801D333E; // type:object size:0x6 scope:local data:string +lbl_801D3344 = .sdata:0x801D3344; // type:object size:0x6 scope:local data:string +lbl_801D334A = .sdata:0x801D334A; // type:object size:0x6 scope:local data:string +lbl_801D3350 = .sdata:0x801D3350; // type:object size:0x6 scope:local data:string +lbl_801D3356 = .sdata:0x801D3356; // type:object size:0x6 scope:local data:string +lbl_801D335C = .sdata:0x801D335C; // type:object size:0x6 scope:local data:string +lbl_801D3362 = .sdata:0x801D3362; // type:object size:0x6 scope:local data:string +lbl_801D3368 = .sdata:0x801D3368; // type:object size:0x6 scope:local data:string +lbl_801D336E = .sdata:0x801D336E; // type:object size:0x6 scope:local data:string +lbl_801D3374 = .sdata:0x801D3374; // type:object size:0x6 scope:local data:string +lbl_801D337A = .sdata:0x801D337A; // type:object size:0xE scope:local +lbl_801D3388 = .sdata:0x801D3388; // type:object size:0x8 data:2byte +lbl_801D3390 = .sdata:0x801D3390; // type:object size:0x8 data:4byte +lbl_801D3398 = .sdata:0x801D3398; // type:object size:0x8 data:byte +lbl_801D33A0 = .sdata:0x801D33A0; // type:object size:0x2 data:2byte +lbl_801D33A2 = .sdata:0x801D33A2; // type:object size:0x6 data:2byte +lbl_801D33A8 = .sdata:0x801D33A8; // type:object size:0x2 data:2byte +lbl_801D33AA = .sdata:0x801D33AA; // type:object size:0x6 data:2byte +lbl_801D33B0 = .sdata:0x801D33B0; // type:object size:0x2 data:2byte +lbl_801D33B2 = .sdata:0x801D33B2; // type:object size:0x1 data:byte +lbl_801D33B4 = .sdata:0x801D33B4; // type:object size:0x8 +lbl_801D33BC = .sdata:0x801D33BC; // type:object size:0x2 data:2byte +lbl_801D33BE = .sdata:0x801D33BE; // type:object size:0x6 data:2byte +lbl_801D33C4 = .sdata:0x801D33C4; // type:object size:0x1 data:byte +lbl_801D33C5 = .sdata:0x801D33C5; // type:object size:0xB +lbl_801D33D0 = .sdata:0x801D33D0; // type:object size:0x2 data:2byte +lbl_801D33D2 = .sdata:0x801D33D2; // type:object size:0x8 data:2byte +lbl_801D33DA = .sdata:0x801D33DA; // type:object size:0x2 data:2byte +lbl_801D33DC = .sdata:0x801D33DC; // type:object size:0x2 data:2byte +lbl_801D33DE = .sdata:0x801D33DE; // type:object size:0x2 data:2byte +lbl_801D33E2 = .sdata:0x801D33E2; // type:object size:0x2 data:2byte +lbl_801D33E4 = .sdata:0x801D33E4; // type:object size:0x8 +lbl_801D33EC = .sdata:0x801D33EC; // type:object size:0x2 data:2byte +lbl_801D33EE = .sdata:0x801D33EE; // type:object size:0x2 data:2byte +lbl_801D33F0 = .sdata:0x801D33F0; // type:object size:0x2 data:2byte +lbl_801D33F2 = .sdata:0x801D33F2; // type:object size:0x2 data:2byte +lbl_801D33F4 = .sdata:0x801D33F4; // type:object size:0x4 +lbl_801D33F8 = .sdata:0x801D33F8; // type:object size:0x8 +lbl_801D3400 = .sdata:0x801D3400; // type:object size:0x1 data:byte +lbl_801D3402 = .sdata:0x801D3402; // type:object size:0x2 data:2byte +lbl_801D3404 = .sdata:0x801D3404; // type:object size:0x4 data:4byte +lbl_801D3408 = .sdata:0x801D3408; // type:object size:0x8 +lbl_801D3410 = .sdata:0x801D3410; // type:object size:0x8 data:2byte +lbl_801D3418 = .sdata:0x801D3418; // type:object size:0x2 data:2byte +lbl_801D341A = .sdata:0x801D341A; // type:object size:0x6 data:2byte +lbl_801D3420 = .sdata:0x801D3420; // type:object size:0x6 +lbl_801D3426 = .sdata:0x801D3426; // type:object size:0x6 +lbl_801D342C = .sdata:0x801D342C; // type:object size:0x2 data:2byte +lbl_801D342E = .sdata:0x801D342E; // type:object size:0xA +lbl_801D3438 = .sdata:0x801D3438; // type:object size:0x2 data:2byte +lbl_801D343A = .sdata:0x801D343A; // type:object size:0x6 data:2byte +lbl_801D3440 = .sdata:0x801D3440; // type:object size:0x2 data:2byte +lbl_801D3442 = .sdata:0x801D3442; // type:object size:0x6 data:2byte +lbl_801D3448 = .sdata:0x801D3448; // type:object size:0x8 +lbl_801D3450 = .sdata:0x801D3450; // type:object size:0x8 +lbl_801D3458 = .sdata:0x801D3458; // type:object size:0x2 data:2byte +lbl_801D345A = .sdata:0x801D345A; // type:object size:0x2 data:2byte +lbl_801D345C = .sdata:0x801D345C; // type:object size:0x2 data:2byte +lbl_801D345E = .sdata:0x801D345E; // type:object size:0x2 data:2byte +lbl_801D3460 = .sdata:0x801D3460; // type:object size:0x3 data:string +lbl_801D3463 = .sdata:0x801D3463; // type:object size:0xD +lbl_801D3470 = .sdata:0x801D3470; // type:object size:0x8 +lbl_801D3478 = .sdata:0x801D3478; // type:object size:0x8 +lbl_801D3480 = .sdata:0x801D3480; // type:object size:0x8 +lbl_801D3488 = .sdata:0x801D3488; // type:object size:0x8 +lbl_801D3490 = .sdata:0x801D3490; // type:object size:0x1 data:byte +lbl_801D3491 = .sdata:0x801D3491; // type:object size:0x7 data:byte +lbl_801D3498 = .sdata:0x801D3498; // type:object size:0x2 data:2byte +lbl_801D349A = .sdata:0x801D349A; // type:object size:0x2 data:2byte +lbl_801D349C = .sdata:0x801D349C; // type:object size:0x2 data:2byte +lbl_801D349E = .sdata:0x801D349E; // type:object size:0x2 data:2byte +lbl_801D34A0 = .sdata:0x801D34A0; // type:object size:0x2 data:2byte +lbl_801D34A2 = .sdata:0x801D34A2; // type:object size:0x2 data:2byte +lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0x6 data:2byte +lbl_801D34AA = .sdata:0x801D34AA; // type:object size:0x7 data:string +lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7 data:string +lbl_801D34B8 = .sdata:0x801D34B8; // type:object size:0x7 data:string +lbl_801D34BF = .sdata:0x801D34BF; // type:object size:0x7 data:string +lbl_801D34C6 = .sdata:0x801D34C6; // type:object size:0x7 data:string +lbl_801D34CD = .sdata:0x801D34CD; // type:object size:0x6 data:string +lbl_801D34D3 = .sdata:0x801D34D3; // type:object size:0x7 data:string +lbl_801D34DA = .sdata:0x801D34DA; // type:object size:0x6 data:string +lbl_801D34E0 = .sdata:0x801D34E0; // type:object size:0x8 +lbl_801D34E8 = .sdata:0x801D34E8; // type:object size:0x2 data:2byte +lbl_801D34EA = .sdata:0x801D34EA; // type:object size:0x2 data:2byte +lbl_801D34EC = .sdata:0x801D34EC; // type:object size:0x2 data:2byte +lbl_801D34EE = .sdata:0x801D34EE; // type:object size:0x2 data:2byte +lbl_801D34F0 = .sdata:0x801D34F0; // type:object size:0x4 data:4byte +lbl_801D34F4 = .sdata:0x801D34F4; // type:object size:0x4 +lbl_801D34F8 = .sdata:0x801D34F8; // type:object size:0x2 data:2byte +lbl_801D34FA = .sdata:0x801D34FA; // type:object size:0x2 data:2byte +lbl_801D34FC = .sdata:0x801D34FC; // type:object size:0x2 data:2byte +lbl_801D34FE = .sdata:0x801D34FE; // type:object size:0x2 data:2byte +lbl_801D3500 = .sdata:0x801D3500; // type:object size:0x4 data:4byte +lbl_801D3504 = .sdata:0x801D3504; // type:object size:0x6 data:string +lbl_801D350A = .sdata:0x801D350A; // type:object size:0x7 data:string +lbl_801D3511 = .sdata:0x801D3511; // type:object size:0x7 data:string +lbl_801D3518 = .sdata:0x801D3518; // type:object size:0x7 data:string +lbl_801D351F = .sdata:0x801D351F; // type:object size:0x5 data:string +lbl_801D3524 = .sdata:0x801D3524; // type:object size:0x6 data:string +lbl_801D352A = .sdata:0x801D352A; // type:object size:0x6 data:string +lbl_801D3530 = .sdata:0x801D3530; // type:object size:0x6 data:string +lbl_801D3536 = .sdata:0x801D3536; // type:object size:0x4 data:string +lbl_801D353A = .sdata:0x801D353A; // type:object size:0x5 data:string +lbl_801D353F = .sdata:0x801D353F; // type:object size:0x5 data:string +lbl_801D3544 = .sdata:0x801D3544; // type:object size:0xC +pausePad = .sdata:0x801D3550; // type:object size:0x1 scope:local data:byte +pauseSprGrp = .sdata:0x801D3552; // type:object size:0x2 scope:local data:2byte +padConfigSprGrp = .sdata:0x801D3554; // type:object size:0x2 scope:local data:2byte +pauseCursorPos = .sdata:0x801D3556; // type:object size:0x2 scope:local data:2byte +settingsControlWin = .sdata:0x801D3558; // type:object size:0x2 scope:local data:2byte +controlWin = .sdata:0x801D355A; // type:object size:0x2 scope:local data:2byte +quitWin = .sdata:0x801D355C; // type:object size:0x2 scope:local data:2byte +settingsWin = .sdata:0x801D355E; // type:object size:0x2 scope:local data:2byte +__OSCurrHeap = .sdata:0x801D3560; // type:object size:0x8 data:4byte +__OSArenaLo = .sdata:0x801D3568; // type:object size:0x4 scope:local data:4byte +@32 = .sdata:0x801D3570; // type:object size:0x2 scope:local data:string +lbl_801D3578 = .sdata:0x801D3578; // type:object size:0x8 data:2byte +lbl_801D3580 = .sdata:0x801D3580; // type:object size:0x8 +lbl_801D3588 = .sdata:0x801D3588; // type:object size:0x8 data:4byte +lbl_801D3590 = .sdata:0x801D3590; // type:object size:0x8 data:string +autoInvalidation = .sdata:0x801D3598; // type:object size:0x4 scope:local data:4byte +@35 = .sdata:0x801D35A0; // type:object size:0x2 scope:local data:string +@40 = .sdata:0x801D35A4; // type:object size:0x4 scope:local data:string +@41 = .sdata:0x801D35A8; // type:object size:0x3 scope:local data:string +lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x8 data:string +lbl_801D35B8 = .sdata:0x801D35B8; // type:object size:0x8 data:byte +lbl_801D35C0_2 = .sdata:0x801D35C0; // type:object size:0x4 data:4byte +lbl_801D35C4 = .sdata:0x801D35C4; // type:object size:0x4 data:4byte +lbl_801D35C8_2 = .sdata:0x801D35C8; // type:object size:0x4 data:4byte +lbl_801D35CC = .sdata:0x801D35CC; // type:object size:0x4 data:4byte +lbl_801D35D0_2 = .sdata:0x801D35D0; // type:object size:0x4 data:4byte +lbl_801D35D4 = .sdata:0x801D35D4; // type:object size:0x4 +lbl_801D35D8_2 = .sdata:0x801D35D8; // type:object size:0x8 +gx = .sdata:0x801D35E0; // type:object size:0x4 scope:global data:4byte +lbl_801D35E8 = .sdata:0x801D35E8; // type:object size:0x4 +lbl_801D35EC = .sdata:0x801D35EC; // type:object size:0x4 +lbl_801D35F0 = .sdata:0x801D35F0; // type:object size:0x8 +lbl_801D35F8 = .sdata:0x801D35F8; // type:object size:0x8 +lbl_801D3600 = .sdata:0x801D3600; // type:object size:0x8 +lbl_801D3608 = .sdata:0x801D3608; // type:object size:0x8 +lbl_801D3610 = .sdata:0x801D3610; // type:object size:0x8 +lbl_801D3618 = .sdata:0x801D3618; // type:object size:0x8 +lbl_801D3620 = .sdata:0x801D3620; // type:object size:0x8 +lbl_801D3628 = .sdata:0x801D3628; // type:object size:0x8 +lbl_801D3630 = .sdata:0x801D3630; // type:object size:0x8 +lbl_801D3638 = .sdata:0x801D3638; // type:object size:0x8 data:4byte +lbl_801D3640 = .sdata:0x801D3640; // type:object size:0x8 data:2byte +lbl_801D3648 = .sdata:0x801D3648; // type:object size:0x8 +lbl_801D3650 = .sdata:0x801D3650; // type:object size:0x4 data:4byte +lbl_801D3654 = .sdata:0x801D3654; // type:object size:0x4 data:4byte +fragmentID = .sdata:0x801D3658; // type:object size:0x4 scope:local data:4byte +lbl_801D3660 = .sdata:0x801D3660; // type:object size:0x8 +lbl_801D3668 = .sdata:0x801D3668; // type:object size:0x8 +@wstringBase0 = .sdata:0x801D3670; // type:object size:0x2 scope:local +lbl_801D3678 = .sdata:0x801D3678; // type:object size:0x4 data:float +lbl_801D367C = .sdata:0x801D367C; // type:object size:0x4 data:float +lbl_801D3680 = .sdata:0x801D3680; // type:object size:0x8 data:4byte +lbl_801D3688 = .sdata:0x801D3688; // type:object size:0x8 +lbl_801D3690 = .sdata:0x801D3690; // type:object size:0x8 +lbl_801D3698 = .sdata:0x801D3698; // type:object size:0x8 data:2byte +lbl_801D36A0 = .sdata:0x801D36A0; // type:object size:0x1 data:byte +SystemInitF = .sbss:0x801D36C0; // type:object size:0x4 data:4byte +HuDvdErrWait = .sbss:0x801D36C4; // type:object size:0x4 data:4byte +fi_req = .sbss:0x801D36C8; // type:object size:0x4 scope:local +rf_req = .sbss:0x801D36CC; // type:object size:0x4 scope:local +pe_req = .sbss:0x801D36D0; // type:object size:0x4 scope:local +vi_req = .sbss:0x801D36D4; // type:object size:0x4 scope:local +io_req = .sbss:0x801D36D8; // type:object size:0x4 scope:local +dsp_req = .sbss:0x801D36DC; // type:object size:0x4 scope:local +cpu_wr_req = .sbss:0x801D36E0; // type:object size:0x4 scope:local +cpu_rd_req = .sbss:0x801D36E4; // type:object size:0x4 scope:local +tc_req = .sbss:0x801D36E8; // type:object size:0x4 scope:local +cp_req = .sbss:0x801D36EC; // type:object size:0x4 scope:local +total_copy_clks = .sbss:0x801D36F0; // type:object size:0x4 scope:local +clr_pixels_in = .sbss:0x801D36F4; // type:object size:0x4 scope:local +bot_pixels_out = .sbss:0x801D36F8; // type:object size:0x4 scope:local +bot_pixels_in = .sbss:0x801D36FC; // type:object size:0x4 scope:local +top_pixels_out = .sbss:0x801D3700; // type:object size:0x4 scope:local +top_pixels_in = .sbss:0x801D3704; // type:object size:0x4 scope:local +vstall = .sbss:0x801D3708; // type:object size:0x4 scope:local +vmiss = .sbss:0x801D370C; // type:object size:0x4 scope:local +vcheck = .sbss:0x801D3710; // type:object size:0x4 scope:local +GlobalCounter = .sbss:0x801D3714; // type:object size:0x4 data:4byte +VCounter = .sbss:0x801D3718; // type:object size:0x4 data:4byte +RumbleBit = .sbss:0x801D371C; // type:object size:0x4 scope:local data:4byte +_PadErr = .sbss:0x801D3720; // type:object size:0x4 scope:local +_PadDStkRepOld = .sbss:0x801D3724; // type:object size:0x4 scope:local +_PadDStkRepCnt = .sbss:0x801D3728; // type:object size:0x4 scope:local +_PadDStkRep = .sbss:0x801D372C; // type:object size:0x4 scope:local +_PadDStk = .sbss:0x801D3730; // type:object size:0x4 scope:local +_PadTrigR = .sbss:0x801D3734; // type:object size:0x4 scope:local +_PadTrigL = .sbss:0x801D3738; // type:object size:0x4 scope:local +_PadSubStkY = .sbss:0x801D373C; // type:object size:0x4 scope:local +_PadSubStkX = .sbss:0x801D3740; // type:object size:0x4 scope:local +_PadStkY = .sbss:0x801D3744; // type:object size:0x4 scope:local +_PadStkX = .sbss:0x801D3748; // type:object size:0x4 scope:local +_PadRepCnt = .sbss:0x801D374C; // type:object size:0x8 scope:local +_PadBtnDown = .sbss:0x801D3754; // type:object size:0x8 +_PadBtn = .sbss:0x801D375C; // type:object size:0x8 +HuPadErr = .sbss:0x801D3764; // type:object size:0x4 +HuPadDStkRep = .sbss:0x801D3768; // type:object size:0x4 +HuPadDStk = .sbss:0x801D376C; // type:object size:0x4 +HuPadTrigR = .sbss:0x801D3770; // type:object size:0x4 +HuPadTrigL = .sbss:0x801D3774; // type:object size:0x4 +HuPadSubStkY = .sbss:0x801D3778; // type:object size:0x4 +HuPadSubStkX = .sbss:0x801D377C; // type:object size:0x4 +HuPadStkY = .sbss:0x801D3780; // type:object size:0x4 +HuPadStkX = .sbss:0x801D3784; // type:object size:0x4 +HuPadBtnRep = .sbss:0x801D3788; // type:object size:0x8 +HuPadBtnDown = .sbss:0x801D3790; // type:object size:0x8 data:2byte +HuPadBtn = .sbss:0x801D3798; // type:object size:0x8 +beforeDvdStatus = .sbss:0x801D37A0; // type:object size:0x4 scope:local data:4byte +CallBackStatus = .sbss:0x801D37A4; // type:object size:0x4 scope:local data:4byte +shortAccessSleep = .sbss:0x801D37A8; // type:object size:0x4 scope:local data:4byte +DataDirMax = .sbss:0x801D37AC; // type:object size:0x4 scope:local data:4byte +DirDataSize = .sbss:0x801D37B0; // type:object size:0x4 data:4byte +DemoStatEnable = .sbss:0x801D37B8; // type:object size:0x4 scope:local data:4byte +worstVcount = .sbss:0x801D37BC; // type:object size:0x4 data:4byte +minimumVcountf = .sbss:0x801D37C0; // type:object size:0x4 data:float +minimumVcount = .sbss:0x801D37C4; // type:object size:0x4 data:4byte +DemoCurrentBuffer = .sbss:0x801D37C8; // type:object size:0x4 data:4byte +DemoFrameBuffer2 = .sbss:0x801D37CC; // type:object size:0x4 data:4byte +DemoFrameBuffer1 = .sbss:0x801D37D0; // type:object size:0x4 scope:local data:4byte +DefaultFifoObj = .sbss:0x801D37D4; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x801D37D8; // type:object size:0x4 data:4byte +currentHeapHandle = .sbss:0x801D37DC; // type:object size:0x4 data:4byte +RenderMode = .sbss:0x801D37E0; // type:object size:0x8 data:4byte +saftyFrameF = .sbss:0x801D37E8; // type:object size:0x4 data:4byte +strlinecnt = .sbss:0x801D37EC; // type:object size:0x2 data:2byte +empstrline = .sbss:0x801D37EE; // type:object size:0x2 data:2byte +fontcolor = .sbss:0x801D37F0; // type:object size:0x8 data:4byte +procfunc = .sbss:0x801D37F8; // type:object size:0x4 data:4byte +processcnt = .sbss:0x801D37FC; // type:object size:0x2 scope:local data:2byte +processcur = .sbss:0x801D3800; // type:object size:0x4 scope:local data:4byte +processtop = .sbss:0x801D3804; // type:object size:0x4 scope:local data:4byte +HuSprPauseF = .sbss:0x801D3808; // type:object size:0x4 scope:local data:4byte +HuSprOrderNo = .sbss:0x801D380C; // type:object size:0x2 scope:local data:2byte +HuSprOrderNum = .sbss:0x801D380E; // type:object size:0x2 scope:local data:2byte +bmpCCIdx = .sbss:0x801D3810; // type:object size:0x8 scope:local data:2byte +MaterialTop = .sbss:0x801D3818; // type:object size:0x4 data:4byte +AttributeTop = .sbss:0x801D381C; // type:object size:0x4 data:4byte +ClusterTop = .sbss:0x801D3820; // type:object size:0x4 data:4byte +vtxtop = .sbss:0x801D3824; // type:object size:0x4 data:4byte +objtop = .sbss:0x801D3828; // type:object size:0x4 data:4byte +NSymIndex = .sbss:0x801D382C; // type:object size:0x4 data:4byte +DicStringTable = .sbss:0x801D3830; // type:object size:0x4 data:4byte +StringTable = .sbss:0x801D3834; // type:object size:0x4 data:4byte +fileptr = .sbss:0x801D3838; // type:object size:0x4 data:4byte +NormalDataTop = .sbss:0x801D383C; // type:object size:0x4 scope:local data:4byte +VertexDataTop = .sbss:0x801D3840; // type:object size:0x4 scope:local data:4byte +MotionModel = .sbss:0x801D3844; // type:object size:0x4 scope:local data:4byte +MotionOnly = .sbss:0x801D3848; // type:object size:0x8 scope:local data:4byte +CancelTRXF = .sbss:0x801D3850; // type:object size:0x4 scope:local data:4byte +TL32F = .sbss:0x801D3854; // type:object size:0x4 scope:local data:4byte +PGName = .sbss:0x801D3858; // type:object size:0x4 scope:local data:4byte +PGFinishF = .sbss:0x801D385C; // type:object size:0x4 scope:local data:4byte +polySize = .sbss:0x801D3860; // type:object size:0x2 scope:local data:2byte +curModelID = .sbss:0x801D3864; // type:object size:0x4 scope:local data:4byte +mallocNo = .sbss:0x801D3868; // type:object size:0x4 scope:local data:4byte +totalSize = .sbss:0x801D386C; // type:object size:0x4 scope:local data:4byte +DLTotalNum = .sbss:0x801D3870; // type:object size:0x4 scope:local data:4byte +faceNumBuf = .sbss:0x801D3874; // type:object size:0x4 scope:local data:4byte +faceCnt = .sbss:0x801D3878; // type:object size:0x2 scope:local data:2byte +quadCnt = .sbss:0x801D387A; // type:object size:0x2 scope:local data:2byte +triCnt = .sbss:0x801D387C; // type:object size:0x2 scope:local data:2byte +matChgCnt = .sbss:0x801D387E; // type:object size:0x2 scope:local data:2byte +DLFirstF = .sbss:0x801D3880; // type:object size:0x4 scope:local data:4byte +modelObjNum = .sbss:0x801D3884; // type:object size:0x2 data:2byte +modelMeshNum = .sbss:0x801D3886; // type:object size:0x2 data:2byte +totalTexCacheCnted = .sbss:0x801D3888; // type:object size:0x4 data:4byte +totalTexCacheCnt = .sbss:0x801D388C; // type:object size:0x4 data:4byte +totalTexCnted = .sbss:0x801D3890; // type:object size:0x4 data:4byte +totalTexCnt = .sbss:0x801D3894; // type:object size:0x4 data:4byte +totalMatCnted = .sbss:0x801D3898; // type:object size:0x4 data:4byte +totalMatCnt = .sbss:0x801D389C; // type:object size:0x4 data:4byte +totalPolyCnted = .sbss:0x801D38A0; // type:object size:0x4 data:4byte +totalPolyCnt = .sbss:0x801D38A4; // type:object size:0x4 data:4byte +hookIdx = .sbss:0x801D38A8; // type:object size:0x2 scope:local data:2byte +kColorIdx = .sbss:0x801D38AC; // type:object size:0x4 scope:local data:4byte +kColor = .sbss:0x801D38B0; // type:object size:0x4 scope:local data:byte +projectionMapNo = .sbss:0x801D38B4; // type:object size:0x2 scope:local data:2byte +toonMapNo = .sbss:0x801D38B6; // type:object size:0x2 scope:local data:2byte +shadowMapNo = .sbss:0x801D38B8; // type:object size:0x2 scope:local data:2byte +attachMotionF = .sbss:0x801D38BC; // type:object size:0x4 scope:local data:4byte +vtxModeBak = .sbss:0x801D38C0; // type:object size:0x2 scope:local data:2byte +hiliteMapNo = .sbss:0x801D38C2; // type:object size:0x2 scope:local data:2byte +reflectionMapNo = .sbss:0x801D38C4; // type:object size:0x2 scope:local data:2byte +Hu3DObjInfoP = .sbss:0x801D38C8; // type:object size:0x4 scope:local data:4byte +DrawObjIdx = .sbss:0x801D38CC; // type:object size:0x2 scope:local data:2byte +lightBit = .sbss:0x801D38CE; // type:object size:0x2 scope:local data:2byte +drawCnt = .sbss:0x801D38D0; // type:object size:0x4 scope:local data:4byte +DrawData = .sbss:0x801D38D4; // type:object size:0x4 scope:local data:4byte +DLBufStartP = .sbss:0x801D38D8; // type:object size:0x4 scope:local data:4byte +DLBufP = .sbss:0x801D38DC; // type:object size:0x4 scope:local data:4byte +shadingBak = .sbss:0x801D38E0; // type:object size:0x4 scope:local data:4byte +polyTypeBak = .sbss:0x801D38E4; // type:object size:0x1 scope:local data:byte +materialBak = .sbss:0x801D38E8; // type:object size:0x4 scope:local data:4byte +MTXIdx = .sbss:0x801D38EC; // type:object size:0x2 data:2byte +modelKillAllF = .sbss:0x801D38F0; // type:object size:0x4 data:4byte +NoSyncF = .sbss:0x801D38F4; // type:object size:0x2 scope:local data:2byte +Hu3DCameraExistF = .sbss:0x801D38F6; // type:object size:0x2 data:2byte +Hu3DPauseF = .sbss:0x801D38F8; // type:object size:0x2 data:2byte +Hu3DMallocNo = .sbss:0x801D38FC; // type:object size:0x4 data:4byte +Hu3DCameraBit = .sbss:0x801D3900; // type:object size:0x2 data:2byte +Hu3DCameraNo = .sbss:0x801D3902; // type:object size:0x2 data:2byte +Hu3DProjectionNum = .sbss:0x801D3904; // type:object size:0x2 data:2byte +shadowModelDrawF = .sbss:0x801D3908; // type:object size:0x4 data:4byte +Hu3DShadowF = .sbss:0x801D390C; // type:object size:0x4 data:4byte +Hu3DShadowCamBit = .sbss:0x801D3910; // type:object size:0x2 data:2byte +toonAnim = .sbss:0x801D3914; // type:object size:0x4 data:4byte +reflectMapNo = .sbss:0x801D3918; // type:object size:0x2 data:2byte +BGColor = .sbss:0x801D391A; // type:object size:0x4 data:byte +bitMapPtr = .sbss:0x801D3920; // type:object size:0x4 scope:local data:4byte +metf = .sbss:0x801D3928; // type:object size:0x1 scope:local data:byte +tokenEndF = .sbss:0x801D392A; // type:object size:0x2 scope:local data:2byte +total_copy_clks = .sbss:0x801D392C; // type:object size:0x4 scope:local data:4byte +clr_pixels_in = .sbss:0x801D3930; // type:object size:0x4 scope:local +bot_pixels_out = .sbss:0x801D3934; // type:object size:0x4 +bot_pixels_in = .sbss:0x801D3938; // type:object size:0x4 +top_pixels_out = .sbss:0x801D393C; // type:object size:0x4 +top_pixels_in = .sbss:0x801D3940; // type:object size:0x4 +fi_req = .sbss:0x801D3944; // type:object size:0x4 +rf_req = .sbss:0x801D3948; // type:object size:0x4 +pe_req = .sbss:0x801D394C; // type:object size:0x4 +vi_req = .sbss:0x801D3950; // type:object size:0x4 +io_req = .sbss:0x801D3954; // type:object size:0x4 +dsp_req = .sbss:0x801D3958; // type:object size:0x4 +cpu_wr_req = .sbss:0x801D395C; // type:object size:0x4 +cpu_rd_req = .sbss:0x801D3960; // type:object size:0x4 +tc_req = .sbss:0x801D3964; // type:object size:0x4 +cp_req = .sbss:0x801D3968; // type:object size:0x4 +vstall = .sbss:0x801D396C; // type:object size:0x4 +vmiss = .sbss:0x801D3970; // type:object size:0x4 +vcheck = .sbss:0x801D3974; // type:object size:0x4 +met1 = .sbss:0x801D3978; // type:object size:0x4 +met0 = .sbss:0x801D397C; // type:object size:0x4 +omdispinfo = .sbss:0x801D3980; // type:object size:0x2 data:2byte +omSysExitReq = .sbss:0x801D3982; // type:object size:0x2 data:2byte +omUPauseFlag = .sbss:0x801D3984; // type:object size:0x1 data:byte +omnextovlstat = .sbss:0x801D3988; // type:object size:0x4 scope:local data:4byte +omovlstat = .sbss:0x801D398C; // type:object size:0x4 data:4byte +omnextovlevtno = .sbss:0x801D3990; // type:object size:0x4 data:4byte +omovlevtno = .sbss:0x801D3994; // type:object size:0x4 data:4byte +omovlhisidx = .sbss:0x801D3998; // type:object size:0x4 data:4byte +omcurdll = .sbss:0x801D399C; // type:object size:0x4 data:4byte +omcurovl = .sbss:0x801D39A0; // type:object size:0x4 data:4byte +omnextovl = .sbss:0x801D39A4; // type:object size:0x4 data:4byte +omwatchproc = .sbss:0x801D39A8; // type:object size:0x4 data:4byte +omDBGSysKeyObj = .sbss:0x801D39AC; // type:object size:0x4 data:4byte +y_start = .sbss:0x801D39B0; // type:object size:0x4 scope:local data:4byte +x_start = .sbss:0x801D39B4; // type:object size:0x4 scope:local data:4byte +Draw_Color = .sbss:0x801D39B8; // type:object size:0x3 scope:local data:byte +XFB_putc = .sbss:0x801D39BC; // type:object size:0x4 scope:local data:4byte +omDBGMenuButton = .sbss:0x801D39C0; // type:object size:0x2 +CZoom = .sbss:0x801D39C4; // type:object size:0x4 data:float +omDLLFileList = .sbss:0x801D39C8; // type:object size:0x8 data:4byte +frand_seed = .sbss:0x801D39D0; // type:object size:0x8 scope:local data:4byte +fadeStat = .sbss:0x801D39D8; // type:object size:0x1 data:byte +musicOffF = .sbss:0x801D39DC; // type:object size:0x4 data:4byte +Snd3DDistOffset = .sbss:0x801D39E0; // type:object size:0x4 data:float +Snd3DSpeedOffset = .sbss:0x801D39E4; // type:object size:0x4 data:float +Snd3DStartDisOffset = .sbss:0x801D39E8; // type:object size:0x4 data:float +Snd3DFrontSurDisOffset = .sbss:0x801D39EC; // type:object size:0x4 data:float +Snd3DBackSurDisOffset = .sbss:0x801D39F0; // type:object size:0x4 data:float +HuAuxBVol = .sbss:0x801D39F4; // type:object size:0x1 scope:local data:byte +HuAuxAVol = .sbss:0x801D39F5; // type:object size:0x1 scope:local data:byte +auxBNoBak = .sbss:0x801D39F8; // type:object size:0x4 scope:local data:4byte +auxANoBak = .sbss:0x801D39FC; // type:object size:0x4 scope:local data:4byte +sndGroupBak = .sbss:0x801D3A00; // type:object size:0x2 scope:local data:2byte +Hu3DAudVol = .sbss:0x801D3A02; // type:object size:0x6 scope:local data:2byte +Meshno = .sbss:0x801D3A08; // type:object size:0x4 scope:local data:4byte +Meshcnt = .sbss:0x801D3A0C; // type:object size:0x4 scope:local data:4byte +normtop = .sbss:0x801D3A10; // type:object size:0x4 scope:local data:4byte +normenv = .sbss:0x801D3A14; // type:object size:0x4 scope:local data:4byte +vtxenv = .sbss:0x801D3A18; // type:object size:0x4 scope:local data:4byte +CurHsf = .sbss:0x801D3A1C; // type:object size:0x4 scope:local data:4byte +objtop = .sbss:0x801D3A20; // type:object size:0x4 scope:local data:4byte +nMesh = .sbss:0x801D3A24; // type:object size:0x4 scope:local data:4byte +nObj = .sbss:0x801D3A28; // type:object size:0x4 scope:local data:4byte +MtxTop = .sbss:0x801D3A2C; // type:object size:0x4 data:4byte +Vertextop = .sbss:0x801D3A30; // type:object size:0x4 data:4byte +seqLanguage = .sbss:0x801D3A38; // type:object size:0x4 scope:local data:4byte +pauseProcess = .sbss:0x801D3A3C; // type:object size:0x4 scope:local data:4byte +pauseActiveF = .sbss:0x801D3A40; // type:object size:0x4 scope:local data:4byte +pauseExitF = .sbss:0x801D3A44; // type:object size:0x4 scope:local data:4byte +pauseWaitF = .sbss:0x801D3A48; // type:object size:0x4 scope:local data:4byte +seqRecordVal = .sbss:0x801D3A4C; // type:object size:0x4 scope:local data:4byte +seqPauseF = .sbss:0x801D3A50; // type:object size:0x2 scope:local data:2byte +seqSpeed = .sbss:0x801D3A52; // type:object size:0x2 scope:local data:2byte +lbl_801D3A54 = .sbss:0x801D3A54; // type:object size:0x1 data:byte +seqDoneF = .sbss:0x801D3A55; // type:object size:0x1 scope:local data:byte +seqTimer = .sbss:0x801D3A56; // type:object size:0x2 scope:local data:2byte +gid = .sbss:0x801D3A58; // type:object size:0x2 scope:local data:2byte +lbl_801D3DA0 = .sbss:0x801D3A60; // type:object size:0x8 +wipeFadeInF = .sbss:0x801D3A68; // type:object size:0x4 data:4byte +fontAnim = .sbss:0x801D3A70; // type:object size:0x4 data:4byte +LanguageNo = .sbss:0x801D3A74; // type:object size:0x1 scope:local data:byte +comKeyIdx = .sbss:0x801D3A76; // type:object size:0x2 scope:local data:2byte +comKeyIdxNow = .sbss:0x801D3A78; // type:object size:0x2 scope:local data:2byte +mesCharCnt = .sbss:0x801D3A7A; // type:object size:0x2 scope:local data:2byte +cancelCRF = .sbss:0x801D3A7C; // type:object size:0x4 scope:local data:4byte +fontWidthP = .sbss:0x801D3A80; // type:object size:0x4 scope:local data:4byte +winAMemP = .sbss:0x801D3A84; // type:object size:0x4 scope:local data:4byte +winInsertF = .sbss:0x801D3A88; // type:object size:0x1 scope:local data:byte +winTabSize = .sbss:0x801D3A89; // type:object size:0x1 scope:local data:byte +mesWInsert = .sbss:0x801D3A8A; // type:object size:0x8 scope:local +winMaxHeight = .sbss:0x801D3A92; // type:object size:0x2 scope:local data:2byte +winMaxWidth = .sbss:0x801D3A94; // type:object size:0x2 scope:local data:2byte +messDataNo = .sbss:0x801D3A98; // type:object size:0x4 scope:local data:4byte +messDataPtr = .sbss:0x801D3A9C; // type:object size:0x4 data:4byte +winProc = .sbss:0x801D3AA0; // type:object size:0x4 scope:local data:4byte +cardAnimB = .sbss:0x801D3AA4; // type:object size:0x4 scope:local data:4byte +cardAnimA = .sbss:0x801D3AA8; // type:object size:0x4 scope:local data:4byte +cursorAnim = .sbss:0x801D3AAC; // type:object size:0x4 scope:local data:4byte +iconAnim = .sbss:0x801D3AB0; // type:object size:0x4 scope:local data:4byte +UnMountCnt = .sbss:0x801D3AB8; // type:object size:0x1 data:byte +cardWork = .sbss:0x801D3ABC; // type:object size:0x4 scope:local data:4byte +arqIdx = .sbss:0x801D3AC0; // type:object size:0x2 scope:local data:2byte +arqCnt = .sbss:0x801D3AC4; // type:object size:0x4 scope:local data:4byte +ARBase = .sbss:0x801D3AC8; // type:object size:0x4 scope:local data:4byte +effectAMemP = .sbss:0x801D3AD0; // type:object size:0x4 scope:local data:4byte +skipAnimUpdate = .sbss:0x801D3AD4; // type:object size:0x4 scope:local data:4byte +ColisionCount = .sbss:0x801D3AD8; // type:object size:0x4 data:4byte +topvtx = .sbss:0x801D3ADC; // type:object size:0x4 scope:local data:4byte +AttrHsf = .sbss:0x801D3AE0; // type:object size:0x4 scope:local data:4byte +HitFaceCount = .sbss:0x801D3AE4; // type:object size:0x4 data:4byte +nChar = .sbss:0x801D3AE8; // type:object size:0x4 +nMap = .sbss:0x801D3AEC; // type:object size:0x4 data:4byte +AddZ = .sbss:0x801D3AF0; // type:object size:0x4 data:float +AddX = .sbss:0x801D3AF4; // type:object size:0x4 data:float +Initialized = .sbss:0x801D3AF8; // type:object size:0x4 scope:local data:4byte +OldAIDCallback = .sbss:0x801D3AFC; // type:object size:0x4 scope:local data:4byte +AudioSystem = .sbss:0x801D3B00; // type:object size:0x4 scope:local data:4byte +bufIdx = .sbss:0x801D3B04; // type:object size:0x4 scope:local data:4byte +CurAudioBuffer = .sbss:0x801D3B08; // type:object size:0x4 scope:local data:4byte +LastAudioBuffer = .sbss:0x801D3B0C; // type:object size:0x4 scope:local data:4byte +SoundBufferIndex = .sbss:0x801D3B10; // type:object size:0x4 scope:local data:4byte +THPProc = .sbss:0x801D3B18; // type:object size:0x4 data:4byte +THPStart = .sbss:0x801D3B1C; // type:object size:0x2 scope:local data:2byte +THPFrame = .sbss:0x801D3B20; // type:object size:0x4 scope:local data:4byte +THPStat = .sbss:0x801D3B24; // type:object size:0x2 scope:local data:2byte +THPLoopF = .sbss:0x801D3B26; // type:object size:0x2 scope:local data:2byte +decodeThread = .sbss:0x801D3B28; // type:object size:0x4 scope:local data:4byte +decodeStackP = .sbss:0x801D3B2C; // type:object size:0x4 scope:local data:4byte +decodeRate = .sbss:0x801D3B30; // type:object size:0x4 scope:local data:4byte +audioTrack = .sbss:0x801D3B34; // type:object size:0x8 scope:local data:4byte +mgBoardHostEnableF = .sbss:0x801D3B40; // type:object size:0x1 +mgInstExitEnableF = .sbss:0x801D3B44; // type:object size:0x4 +mgPracticeEnableF = .sbss:0x801D3B48; // type:object size:0x4 data:4byte +mgQuitExtraF = .sbss:0x801D3B4C; // type:object size:0x4 data:4byte +mgRecordExtra = .sbss:0x801D3B50; // type:object size:0x4 +lbl_801D3E94 = .sbss:0x801D3B54; // type:object size:0x1 +mgBattleStarMax = .sbss:0x801D3B56; // type:object size:0x2 +mgBattleStar = .sbss:0x801D3B58; // type:object size:0x8 +mgTypeCurr = .sbss:0x801D3B60; // type:object size:0x2 +curSlotNo = .sbss:0x801D3B68; // type:object size:0x2 data:2byte +curBoxNo = .sbss:0x801D3B6A; // type:object size:0x1 data:byte +saveExecF = .sbss:0x801D3B6C; // type:object size:0x4 +SLSerialNo = .sbss:0x801D3B70; // type:object size:0x8 data:4byte +H_ResetReady = .sbss:0x801D3B78; // type:object size:0x4 scope:local data:4byte +SR_RestartChk = .sbss:0x801D3B7C; // type:object size:0x4 scope:local data:4byte +SR_ExecReset = .sbss:0x801D3B80; // type:object size:0x4 data:4byte +trychkBusyWait = .sbss:0x801D3B84; // type:object size:0x4 scope:local data:4byte +XfbProg = .sbss:0x801D3B88; // type:object size:0x4 scope:local data:4byte +XfbH = .sbss:0x801D3B8C; // type:object size:0x2 scope:local data:2byte +XfbW = .sbss:0x801D3B8E; // type:object size:0x2 scope:local data:2byte +boardMainProc = .sbss:0x801D3B90; // type:object size:0x4 data:4byte +boardObjMan = .sbss:0x801D3B94; // type:object size:0x4 data:4byte +cameraObj = .sbss:0x801D3B98; // type:object size:0x4 scope:local data:4byte +tauntObj = .sbss:0x801D3B9C; // type:object size:0x4 scope:local data:4byte +cameraUseBackup = .sbss:0x801D3BA0; // type:object size:0x4 scope:local data:4byte +createFunc = .sbss:0x801D3BA4; // type:object size:0x4 scope:local data:4byte +destroyFunc = .sbss:0x801D3BA8; // type:object size:0x4 scope:local data:4byte +boardLightSetHook = .sbss:0x801D3BAC; // type:object size:0x4 data:4byte +boardLightResetHook = .sbss:0x801D3BB0; // type:object size:0x4 data:4byte +boardTurnFunc = .sbss:0x801D3BB4; // type:object size:0x4 data:4byte +boardStarGiveHook = .sbss:0x801D3BB8; // type:object size:0x4 data:4byte +boardStarShowNextHook = .sbss:0x801D3BBC; // type:object size:0x4 data:4byte +boardBowserHook = .sbss:0x801D3BC0; // type:object size:0x4 data:4byte +boardTurnStartFunc = .sbss:0x801D3BC4; // type:object size:0x4 data:4byte +filterObj = .sbss:0x801D3BC8; // type:object size:0x4 scope:local data:4byte +confettiObj = .sbss:0x801D3BCC; // type:object size:0x4 scope:local data:4byte +last5GfxObj = .sbss:0x801D3BD0; // type:object size:0x4 scope:local data:4byte +boardRandSeed = .sbss:0x801D3BD4; // type:object size:0x4 data:4byte +boardMainObj = .sbss:0x801D3BD8; // type:object size:0x4 data:4byte +megaDoubleDiceF = .sbss:0x801D3BE0; // type:object size:0x4 scope:local data:4byte +bowserSuitObj = .sbss:0x801D3BE4; // type:object size:0x4 scope:local data:4byte +junctionMask = .sbss:0x801D3BE8; // type:object size:0x4 scope:local data:4byte +junctionObj = .sbss:0x801D3BEC; // type:object size:0x4 scope:local data:4byte +rollObj = .sbss:0x801D3BF0; // type:object size:0x4 scope:local data:4byte +moveAwayObj = .sbss:0x801D3BF4; // type:object size:0x4 scope:local data:4byte +junctionArrowRot = .sbss:0x801D3BF8; // type:object size:0x8 scope:local +moveAwayPlayer = .sbss:0x801D3C00; // type:object size:0x4 scope:local data:byte +itemPrev = .sbss:0x801D3C04; // type:object size:0x1 scope:local data:byte +playerMot = .sbss:0x801D3C06; // type:object size:0x8 scope:local +boardPlayerMdl = .sbss:0x801D3C0E; // type:object size:0xA +lbl_801D3C18 = .sbss:0x801D3C18; // type:object size:0x4 data:4byte +lbl_801D3C1C = .sbss:0x801D3C1C; // type:object size:0x4 data:4byte +lbl_801D3C20 = .sbss:0x801D3C20; // type:object size:0x8 data:2byte +lbl_801D3C28 = .sbss:0x801D3C28; // type:object size:0x4 data:4byte +lbl_801D3C2C = .sbss:0x801D3C2C; // type:object size:0x4 data:4byte +lbl_801D3C30 = .sbss:0x801D3C30; // type:object size:0x8 data:float +lbl_801D3C38 = .sbss:0x801D3C38; // type:object size:0x4 data:4byte +lbl_801D3C3C = .sbss:0x801D3C3C; // type:object size:0x4 data:4byte +lbl_801D3C40 = .sbss:0x801D3C40; // type:object size:0x2 data:2byte +lbl_801D3C42 = .sbss:0x801D3C42; // type:object size:0x2 data:2byte +lbl_801D3C44 = .sbss:0x801D3C44; // type:object size:0x2 data:2byte +lbl_801D3C46 = .sbss:0x801D3C46; // type:object size:0x1 data:byte +lbl_801D3C47 = .sbss:0x801D3C47; // type:object size:0x1 data:byte +lbl_801D3C48 = .sbss:0x801D3C48; // type:object size:0x1 data:byte +lbl_801D3C49 = .sbss:0x801D3C49; // type:object size:0x1 data:byte +lbl_801D3C4A = .sbss:0x801D3C4A; // type:object size:0x1 data:byte +lbl_801D3C4B = .sbss:0x801D3C4B; // type:object size:0x1 data:byte +lbl_801D3C4C = .sbss:0x801D3C4C; // type:object size:0x1 data:byte +lbl_801D3C50 = .sbss:0x801D3C50; // type:object size:0x8 +lbl_801D3C58 = .sbss:0x801D3C58; // type:object size:0x4 data:4byte +lbl_801D3C5C = .sbss:0x801D3C5C; // type:object size:0x1 data:byte +lbl_801D3C60 = .sbss:0x801D3C60; // type:object size:0x4 data:4byte +lbl_801D3C64 = .sbss:0x801D3C64; // type:object size:0x2 data:2byte +lbl_801D3C66 = .sbss:0x801D3C66; // type:object size:0x1 data:byte +lbl_801D3C67 = .sbss:0x801D3C67; // type:object size:0x1 data:byte +lbl_801D3C68 = .sbss:0x801D3C68; // type:object size:0x1 data:byte +lbl_801D3C69 = .sbss:0x801D3C69; // type:object size:0x7 data:byte +lbl_801D3C70 = .sbss:0x801D3C70; // type:object size:0x2 data:2byte +lbl_801D3C74 = .sbss:0x801D3C74; // type:object size:0x4 data:4byte +lbl_801D3C78 = .sbss:0x801D3C78; // type:object size:0x4 data:4byte +lbl_801D3C7C = .sbss:0x801D3C7C; // type:object size:0x4 data:4byte +lbl_801D3C80 = .sbss:0x801D3C80; // type:object size:0x4 data:4byte +lbl_801D3C84 = .sbss:0x801D3C84; // type:object size:0x8 data:2byte +lbl_801D3C8C = .sbss:0x801D3C8C; // type:object size:0x4 data:4byte +lbl_801D3C90 = .sbss:0x801D3C90; // type:object size:0x4 data:4byte +lbl_801D3C94 = .sbss:0x801D3C94; // type:object size:0x4 data:4byte +lbl_801D3C98 = .sbss:0x801D3C98; // type:object size:0x4 data:4byte +lbl_801D3C9C = .sbss:0x801D3C9C; // type:object size:0x8 data:4byte +lbl_801D3CA4 = .sbss:0x801D3CA4; // type:object size:0x2 data:2byte +lbl_801D3CA8 = .sbss:0x801D3CA8; // type:object size:0x4 data:4byte +lbl_801D3CAC = .sbss:0x801D3CAC; // type:object size:0x4 data:4byte +lbl_801D3CB0 = .sbss:0x801D3CB0; // type:object size:0x4 data:4byte +lbl_801D3CB4 = .sbss:0x801D3CB4; // type:object size:0x4 data:4byte +lbl_801D3CB8 = .sbss:0x801D3CB8; // type:object size:0x4 data:4byte +lbl_801D3CBC = .sbss:0x801D3CBC; // type:object size:0x2 data:2byte +lbl_801D3CBE = .sbss:0x801D3CBE; // type:object size:0x1 data:byte +lbl_801D3CC0 = .sbss:0x801D3CC0; // type:object size:0x4 data:4byte +lbl_801D3CC4 = .sbss:0x801D3CC4; // type:object size:0x4 +lbl_801D3CC8 = .sbss:0x801D3CC8; // type:object size:0x4 data:4byte +lbl_801D3CCC = .sbss:0x801D3CCC; // type:object size:0x4 data:4byte +lbl_801D3CD0 = .sbss:0x801D3CD0; // type:object size:0x4 data:4byte +lbl_801D3CD4 = .sbss:0x801D3CD4; // type:object size:0x4 data:4byte +lbl_801D3CD8 = .sbss:0x801D3CD8; // type:object size:0x1 data:byte +lbl_801D3CD9 = .sbss:0x801D3CD9; // type:object size:0x1 data:byte +lbl_801D3CDA = .sbss:0x801D3CDA; // type:object size:0x1 data:byte +lbl_801D3CDB = .sbss:0x801D3CDB; // type:object size:0x1 data:byte +lbl_801D3CDC = .sbss:0x801D3CDC; // type:object size:0x1 data:byte +lbl_801D3CDE = .sbss:0x801D3CDE; // type:object size:0x2 data:2byte +lbl_801D3CE0 = .sbss:0x801D3CE0; // type:object size:0x8 data:4byte +lbl_801D3CE8 = .sbss:0x801D3CE8; // type:object size:0x4 data:4byte +lbl_801D3CEC = .sbss:0x801D3CEC; // type:object size:0x4 data:float +lbl_801D3CF0 = .sbss:0x801D3CF0; // type:object size:0x4 data:float +lbl_801D3CF4 = .sbss:0x801D3CF4; // type:object size:0x2 data:2byte +lbl_801D3CF6 = .sbss:0x801D3CF6; // type:object size:0x1 data:byte +lbl_801D3CF7 = .sbss:0x801D3CF7; // type:object size:0x1 data:byte +lbl_801D3CF8 = .sbss:0x801D3CF8; // type:object size:0x8 data:byte +lbl_801D3D00 = .sbss:0x801D3D00; // type:object size:0x4 data:4byte +lbl_801D3D04 = .sbss:0x801D3D04; // type:object size:0x2 data:2byte +lbl_801D3D08 = .sbss:0x801D3D08; // type:object size:0x4 data:float +lbl_801D3D0C = .sbss:0x801D3D0C; // type:object size:0x2 data:2byte +lbl_801D3D10 = .sbss:0x801D3D10; // type:object size:0x4 data:float +lbl_801D3D14 = .sbss:0x801D3D14; // type:object size:0x2 data:2byte +lbl_801D3D16 = .sbss:0x801D3D16; // type:object size:0x2 data:2byte +lbl_801D3D18 = .sbss:0x801D3D18; // type:object size:0x8 data:byte +lbl_801D3D20 = .sbss:0x801D3D20; // type:object size:0x4 data:4byte +lbl_801D3D24 = .sbss:0x801D3D24; // type:object size:0x4 data:4byte +lbl_801D3D28 = .sbss:0x801D3D28; // type:object size:0x1 data:byte +lbl_801D3D29 = .sbss:0x801D3D29; // type:object size:0x7 data:byte +lbl_801D3D30 = .sbss:0x801D3D30; // type:object size:0x4 data:4byte +lbl_801D3D34 = .sbss:0x801D3D34; // type:object size:0x4 data:4byte +lbl_801D3D38 = .sbss:0x801D3D38; // type:object size:0x4 data:4byte +lbl_801D3D3C = .sbss:0x801D3D3C; // type:object size:0x2 data:2byte +lbl_801D3D40 = .sbss:0x801D3D40; // type:object size:0x4 data:4byte +lbl_801D3D44 = .sbss:0x801D3D44; // type:object size:0x2 data:2byte +lbl_801D3D48 = .sbss:0x801D3D48; // type:object size:0x4 data:4byte +lbl_801D3D4C = .sbss:0x801D3D4C; // type:object size:0x1 data:byte +lbl_801D3D4D = .sbss:0x801D3D4D; // type:object size:0xB +lbl_801D3D58 = .sbss:0x801D3D58; // type:object size:0x4 data:4byte +lbl_801D3D5C = .sbss:0x801D3D5C; // type:object size:0x1 data:byte +lbl_801D3D5D = .sbss:0x801D3D5D; // type:object size:0x1 data:byte +lbl_801D3D5E = .sbss:0x801D3D5E; // type:object size:0x1 data:byte +lbl_801D3D5F = .sbss:0x801D3D5F; // type:object size:0x1 data:byte +lbl_801D3D60 = .sbss:0x801D3D60; // type:object size:0x1 data:byte +lbl_801D3D61 = .sbss:0x801D3D61; // type:object size:0x1 data:byte +lbl_801D3D62 = .sbss:0x801D3D62; // type:object size:0x6 data:byte +lbl_801D3D68 = .sbss:0x801D3D68; // type:object size:0x4 data:4byte +lbl_801D3D6C = .sbss:0x801D3D6C; // type:object size:0x4 data:4byte +lbl_801D3D70 = .sbss:0x801D3D70; // type:object size:0x4 data:4byte +lbl_801D3D74 = .sbss:0x801D3D74; // type:object size:0x4 data:4byte +lbl_801D3D78 = .sbss:0x801D3D78; // type:object size:0x4 data:4byte +lbl_801D3D7C = .sbss:0x801D3D7C; // type:object size:0x4 data:4byte +lbl_801D3D80 = .sbss:0x801D3D80; // type:object size:0x4 data:float +lbl_801D3D84 = .sbss:0x801D3D84; // type:object size:0x6 +lbl_801D3D8A = .sbss:0x801D3D8A; // type:object size:0x1 data:byte +lbl_801D3D8B = .sbss:0x801D3D8B; // type:object size:0x1 data:byte +lbl_801D3D8C = .sbss:0x801D3D8C; // type:object size:0x1 data:byte +lbl_801D3D8E = .sbss:0x801D3D8E; // type:object size:0x6 data:2byte +lbl_801D3D94_2 = .sbss:0x801D3D94; // type:object size:0x4 data:4byte +lbl_801D3D98 = .sbss:0x801D3D98; // type:object size:0x1 data:byte +lbl_801D3D99 = .sbss:0x801D3D99; // type:object size:0x1 data:byte +lbl_801D3D9A = .sbss:0x801D3D9A; // type:object size:0x1 data:byte +lbl_801D3D9B = .sbss:0x801D3D9B; // type:object size:0x1 data:byte +lbl_801D3D9C = .sbss:0x801D3D9C; // type:object size:0x1 data:byte +lbl_801D3DA0_2 = .sbss:0x801D3DA0; // type:object size:0x4 data:4byte +lbl_801D3DA4 = .sbss:0x801D3DA4; // type:object size:0x4 data:4byte +lbl_801D3DA8 = .sbss:0x801D3DA8; // type:object size:0x4 data:float +lbl_801D3DAC = .sbss:0x801D3DAC; // type:object size:0x4 data:float +lbl_801D3DB0 = .sbss:0x801D3DB0; // type:object size:0x8 data:float +lbl_801D3DB8 = .sbss:0x801D3DB8; // type:object size:0x4 data:4byte +lbl_801D3DBC = .sbss:0x801D3DBC; // type:object size:0x8 data:2byte +lbl_801D3DC4 = .sbss:0x801D3DC4; // type:object size:0x4 data:4byte +lbl_801D3DC8 = .sbss:0x801D3DC8; // type:object size:0x4 data:float +lbl_801D3DCC = .sbss:0x801D3DCC; // type:object size:0x8 +lbl_801D3DD4 = .sbss:0x801D3DD4; // type:object size:0x4 data:float +lbl_801D3DD8 = .sbss:0x801D3DD8; // type:object size:0x2 data:2byte +lbl_801D3DDC = .sbss:0x801D3DDC; // type:object size:0x8 data:4byte +lbl_801D3DE4 = .sbss:0x801D3DE4; // type:object size:0x8 data:4byte +lbl_801D3DEC = .sbss:0x801D3DEC; // type:object size:0x2 data:2byte +lbl_801D3DEE = .sbss:0x801D3DEE; // type:object size:0x1 data:byte +lbl_801D3DEF = .sbss:0x801D3DEF; // type:object size:0x1 data:byte +lbl_801D3DF0 = .sbss:0x801D3DF0; // type:object size:0x8 +lbl_801D3DF8 = .sbss:0x801D3DF8; // type:object size:0x4 data:4byte +lbl_801D3DFC = .sbss:0x801D3DFC; // type:object size:0x4 data:4byte +lbl_801D3E00 = .sbss:0x801D3E00; // type:object size:0x4 data:4byte +lbl_801D3E04 = .sbss:0x801D3E04; // type:object size:0x4 data:4byte +lbl_801D3E08 = .sbss:0x801D3E08; // type:object size:0x4 data:4byte +lbl_801D3E0C = .sbss:0x801D3E0C; // type:object size:0x4 data:4byte +lbl_801D3E10 = .sbss:0x801D3E10; // type:object size:0x8 +lbl_801D3E18 = .sbss:0x801D3E18; // type:object size:0x8 +lbl_801D3E20 = .sbss:0x801D3E20; // type:object size:0x4 data:4byte +lbl_801D3E24 = .sbss:0x801D3E24; // type:object size:0x2 data:2byte +lbl_801D3E26 = .sbss:0x801D3E26; // type:object size:0x8 data:2byte +lbl_801D3E2E = .sbss:0x801D3E2E; // type:object size:0x2 data:2byte +lbl_801D3E30 = .sbss:0x801D3E30; // type:object size:0x1 data:byte +lbl_801D3E31 = .sbss:0x801D3E31; // type:object size:0x7 data:byte +lbl_801D3E38 = .sbss:0x801D3E38; // type:object size:0x4 data:4byte +lbl_801D3E3C = .sbss:0x801D3E3C; // type:object size:0x4 data:4byte +lbl_801D3E40 = .sbss:0x801D3E40; // type:object size:0x4 data:4byte +lbl_801D3E44 = .sbss:0x801D3E44; // type:object size:0x4 data:float +lbl_801D3E48 = .sbss:0x801D3E48; // type:object size:0x4 data:float +lbl_801D3E4C = .sbss:0x801D3E4C; // type:object size:0x8 +lbl_801D3E54 = .sbss:0x801D3E54; // type:object size:0x1 data:byte +lbl_801D3E56 = .sbss:0x801D3E56; // type:object size:0x1 data:byte +lbl_801D3E58 = .sbss:0x801D3E58; // type:object size:0x2 data:2byte +lbl_801D3E5A = .sbss:0x801D3E5A; // type:object size:0x1 data:byte +lbl_801D3E5B = .sbss:0x801D3E5B; // type:object size:0x1 data:byte +lbl_801D3E5C = .sbss:0x801D3E5C; // type:object size:0x1 data:byte +lbl_801D3E60 = .sbss:0x801D3E60; // type:object size:0x4 data:4byte +lbl_801D3E64 = .sbss:0x801D3E64; // type:object size:0x4 data:4byte +lbl_801D3E68 = .sbss:0x801D3E68; // type:object size:0x1 data:byte +lbl_801D3E69 = .sbss:0x801D3E69; // type:object size:0x1 data:byte +lbl_801D3E6A = .sbss:0x801D3E6A; // type:object size:0x1 data:byte +lbl_801D3E6B = .sbss:0x801D3E6B; // type:object size:0x1 data:byte +lbl_801D3E6C = .sbss:0x801D3E6C; // type:object size:0x1 data:byte +lbl_801D3E6D = .sbss:0x801D3E6D; // type:object size:0x1 data:byte +lbl_801D3E70 = .sbss:0x801D3E70; // type:object size:0x4 data:4byte +lbl_801D3E74 = .sbss:0x801D3E74; // type:object size:0x4 data:4byte +lbl_801D3E78 = .sbss:0x801D3E78; // type:object size:0x4 data:4byte +lbl_801D3E7C = .sbss:0x801D3E7C; // type:object size:0x4 data:4byte +lbl_801D3E80 = .sbss:0x801D3E80; // type:object size:0x4 data:4byte +lbl_801D3E84 = .sbss:0x801D3E84; // type:object size:0x4 data:4byte +lbl_801D3E88 = .sbss:0x801D3E88; // type:object size:0x4 data:4byte +lbl_801D3E8C = .sbss:0x801D3E8C; // type:object size:0x4 data:4byte +lbl_801D3E90 = .sbss:0x801D3E90; // type:object size:0x3 +lbl_801D3E93 = .sbss:0x801D3E93; // type:object size:0x3 +lbl_801D3E96 = .sbss:0x801D3E96; // type:object size:0x1 data:byte +lbl_801D3E97 = .sbss:0x801D3E97; // type:object size:0x1 data:byte +lbl_801D3E98 = .sbss:0x801D3E98; // type:object size:0x1 data:byte +lbl_801D3E9C = .sbss:0x801D3E9C; // type:object size:0x4 data:4byte +lbl_801D3EA0 = .sbss:0x801D3EA0; // type:object size:0x1 data:byte +lbl_801D3EA1 = .sbss:0x801D3EA1; // type:object size:0x1 data:byte +lbl_801D3EA2 = .sbss:0x801D3EA2; // type:object size:0x6 data:byte +lbl_801D3EA8 = .sbss:0x801D3EA8; // type:object size:0x4 data:4byte +lbl_801D3EAC = .sbss:0x801D3EAC; // type:object size:0x4 data:4byte +lbl_801D3EB0 = .sbss:0x801D3EB0; // type:object size:0x1 data:byte +lbl_801D3EB1 = .sbss:0x801D3EB1; // type:object size:0x1 data:byte +lbl_801D3EB2 = .sbss:0x801D3EB2; // type:object size:0x1 data:byte +lbl_801D3EB4 = .sbss:0x801D3EB4; // type:object size:0x4 +lbl_801D3EB8 = .sbss:0x801D3EB8; // type:object size:0x6 +lbl_801D3EBE = .sbss:0x801D3EBE; // type:object size:0x6 +lbl_801D3EC4 = .sbss:0x801D3EC4; // type:object size:0x1 data:byte +lbl_801D3EC5 = .sbss:0x801D3EC5; // type:object size:0x1 data:byte +lbl_801D3EC6 = .sbss:0x801D3EC6; // type:object size:0x1 data:byte +lbl_801D3EC7 = .sbss:0x801D3EC7; // type:object size:0x1 data:byte +lbl_801D3EC8 = .sbss:0x801D3EC8; // type:object size:0x2 data:2byte +lbl_801D3ECC = .sbss:0x801D3ECC; // type:object size:0x4 data:float +lbl_801D3ED0 = .sbss:0x801D3ED0; // type:object size:0x4 data:4byte +lbl_801D3ED4 = .sbss:0x801D3ED4; // type:object size:0x1 data:byte +lbl_801D3ED8 = .sbss:0x801D3ED8; // type:object size:0x4 data:4byte +lbl_801D3EDC = .sbss:0x801D3EDC; // type:object size:0x8 +lbl_801D3EE4 = .sbss:0x801D3EE4; // type:object size:0x4 data:4byte +lbl_801D3EE8 = .sbss:0x801D3EE8; // type:object size:0x1 data:byte +lbl_801D3EE9 = .sbss:0x801D3EE9; // type:object size:0x1 data:byte +lbl_801D3EEA = .sbss:0x801D3EEA; // type:object size:0x6 data:byte +lbl_801D3EF0 = .sbss:0x801D3EF0; // type:object size:0x4 data:4byte +lbl_801D3EF4 = .sbss:0x801D3EF4; // type:object size:0x4 +lbl_801D3EF8 = .sbss:0x801D3EF8; // type:object size:0x4 +lbl_801D3EFC = .sbss:0x801D3EFC; // type:object size:0x2 data:2byte +lbl_801D3EFE = .sbss:0x801D3EFE; // type:object size:0x2 data:2byte +lbl_801D3F00 = .sbss:0x801D3F00; // type:object size:0x4 data:4byte +lbl_801D3F04 = .sbss:0x801D3F04; // type:object size:0x4 data:4byte +lbl_801D3F08 = .sbss:0x801D3F08; // type:object size:0x4 data:4byte +lbl_801D3F0C = .sbss:0x801D3F0C; // type:object size:0x4 data:4byte +lbl_801D3F10 = .sbss:0x801D3F10; // type:object size:0x4 data:4byte +lbl_801D3F14 = .sbss:0x801D3F14; // type:object size:0x4 data:4byte +lbl_801D3F18 = .sbss:0x801D3F18; // type:object size:0x2 data:2byte +lbl_801D3F1A = .sbss:0x801D3F1A; // type:object size:0x2 data:2byte +lbl_801D3F1C = .sbss:0x801D3F1C; // type:object size:0x1 data:byte +lbl_801D3F1D = .sbss:0x801D3F1D; // type:object size:0x1 data:byte +lbl_801D3F1E = .sbss:0x801D3F1E; // type:object size:0x1 data:byte +lbl_801D3F20 = .sbss:0x801D3F20; // type:object size:0x4 data:4byte +lbl_801D3F24 = .sbss:0x801D3F24; // type:object size:0x4 data:4byte +lbl_801D3F28 = .sbss:0x801D3F28; // type:object size:0x4 data:4byte +lbl_801D3F2C = .sbss:0x801D3F2C; // type:object size:0x8 +lbl_801D3F34 = .sbss:0x801D3F34; // type:object size:0x1 data:byte +lbl_801D3F36 = .sbss:0x801D3F36; // type:object size:0x2 data:2byte +lbl_801D3F38 = .sbss:0x801D3F38; // type:object size:0x1 data:byte +lbl_801D3F39 = .sbss:0x801D3F39; // type:object size:0x1 data:byte +lbl_801D3F3A = .sbss:0x801D3F3A; // type:object size:0x6 data:byte +lbl_801D3F40 = .sbss:0x801D3F40; // type:object size:0x2 data:2byte +lbl_801D3F42 = .sbss:0x801D3F42; // type:object size:0x6 data:2byte +lbl_801D3F48 = .sbss:0x801D3F48; // type:object size:0x4 data:4byte +lbl_801D3F4C = .sbss:0x801D3F4C; // type:object size:0x4 data:4byte +lbl_801D3F50 = .sbss:0x801D3F50; // type:object size:0x4 data:4byte +lbl_801D3F54 = .sbss:0x801D3F54; // type:object size:0x4 data:4byte +lbl_801D3F58 = .sbss:0x801D3F58; // type:object size:0x4 data:4byte +boardTutorialF = .sbss:0x801D3F5C; // type:object size:0x1 data:byte +lbl_801D3F5E = .sbss:0x801D3F5E; // type:object size:0x2 data:2byte +lbl_801D3F60 = .sbss:0x801D3F60; // type:object size:0x1 data:byte +lbl_801D3F61 = .sbss:0x801D3F61; // type:object size:0x1 data:byte +lbl_801D3F62 = .sbss:0x801D3F62; // type:object size:0x1 data:byte +lbl_801D3F64 = .sbss:0x801D3F64; // type:object size:0x4 data:4byte +boardTutorialDirInputTime = .sbss:0x801D3F68; // type:object size:0x2 data:2byte +boardTutorialDirInputY = .sbss:0x801D3F6A; // type:object size:0x1 data:byte +boardTutorialDirInputX = .sbss:0x801D3F6B; // type:object size:0x1 data:byte +lbl_801D3F6C = .sbss:0x801D3F6C; // type:object size:0x4 data:4byte +BootInfo = .sbss:0x801D3F70; // type:object size:0x4 scope:local data:4byte +BI2DebugFlag = .sbss:0x801D3F74; // type:object size:0x4 scope:local data:4byte +BI2DebugFlagHolder = .sbss:0x801D3F78; // type:object size:0x4 scope:local data:4byte +__OSIsGcam = .sbss:0x801D3F7C; // type:object size:0x4 scope:global data:4byte +AreWeInitialized = .sbss:0x801D3F80; // type:object size:0x4 scope:local data:4byte +OSExceptionTable = .sbss:0x801D3F84; // type:object size:0x4 scope:local data:4byte +__OSSavedRegionEnd = .sbss:0x801D3F88; // type:object size:0x4 scope:global data:4byte +__OSSavedRegionStart = .sbss:0x801D3F8C; // type:object size:0x4 scope:global data:4byte +__OSInIPL = .sbss:0x801D3F90; // type:object size:0x4 scope:global data:4byte +__OSStartTime = .sbss:0x801D3F98; // type:object size:0x8 scope:global data:4byte +AlarmQueue = .sbss:0x801D3FA0; // type:object size:0x8 scope:local data:4byte +lbl_801D3FA8 = .sbss:0x801D3FA8; // type:object size:0x4 data:4byte +lbl_801D3FAC = .sbss:0x801D3FAC; // type:object size:0x4 data:4byte +lbl_801D3FB0 = .sbss:0x801D3FB0; // type:object size:0x4 data:4byte +lbl_801D3FB4 = .sbss:0x801D3FB4; // type:object size:0x4 data:4byte +__OSArenaHi = .sbss:0x801D3FB8; // type:object size:0x4 scope:local data:4byte +InterruptHandlerTable = .sbss:0x801D3FC0; // type:object size:0x4 scope:local data:4byte +__OSLastInterruptSrr0 = .sbss:0x801D3FC4; // type:object size:0x4 scope:global data:4byte +__OSLastInterrupt = .sbss:0x801D3FC8; // type:object size:0x2 scope:global data:2byte +__OSLastInterruptTime = .sbss:0x801D3FD0; // type:object size:0x8 scope:global data:4byte +lbl_801D3FD8 = .sbss:0x801D3FD8; // type:object size:0x4 data:4byte +lbl_801D3FDC = .sbss:0x801D3FDC; // type:object size:0x4 data:4byte +lbl_801D3FE0 = .sbss:0x801D3FE0; // type:object size:0x8 data:4byte +ResetFunctionQueue = .sbss:0x801D3FE8; // type:object size:0x8 scope:local data:4byte +lbl_801D3FF0 = .sbss:0x801D3FF0; // type:object size:0x4 data:4byte +lbl_801D3FF4 = .sbss:0x801D3FF4; // type:object size:0x4 data:4byte +lbl_801D3FF8 = .sbss:0x801D3FF8; // type:object size:0x8 data:4byte +lbl_801D4000 = .sbss:0x801D4000; // type:object size:0x4 data:4byte +lbl_801D4004 = .sbss:0x801D4004; // type:object size:0x4 data:4byte +lbl_801D4008 = .sbss:0x801D4008; // type:object size:0x4 data:4byte +lbl_801D400C = .sbss:0x801D400C; // type:object size:0x4 data:4byte +RunQueueBits = .sbss:0x801D4010; // type:object size:0x4 scope:local data:4byte +RunQueueHint = .sbss:0x801D4014; // type:object size:0x4 scope:local data:4byte +Reschedule = .sbss:0x801D4018; // type:object size:0x4 scope:local data:4byte +__DBInterface = .sbss:0x801D4020; // type:object size:0x4 scope:global data:4byte +DBVerbose = .sbss:0x801D4024; // type:object size:0x4 scope:global data:4byte +StopAtNextInt = .sbss:0x801D4028; // type:object size:0x4 scope:local data:4byte +lbl_801D402C = .sbss:0x801D402C; // type:object size:0x4 data:4byte +Callback = .sbss:0x801D4030; // type:object size:0x4 scope:local data:4byte +lbl_801D4034 = .sbss:0x801D4034; // type:object size:0x4 data:4byte +LastResetEnd = .sbss:0x801D4038; // type:object size:0x8 scope:local data:4byte +ResetOccurred = .sbss:0x801D4040; // type:object size:0x4 scope:local data:4byte +WaitingCoverClose = .sbss:0x801D4044; // type:object size:0x4 scope:local data:4byte +lbl_801D4048 = .sbss:0x801D4048; // type:object size:0x4 data:4byte +WorkAroundType = .sbss:0x801D404C; // type:object size:0x4 scope:local data:4byte +WorkAroundSeekLocation = .sbss:0x801D4050; // type:object size:0x4 scope:local data:4byte +lbl_801D4058 = .sbss:0x801D4058; // type:object size:0x4 data:4byte +lbl_801D405C = .sbss:0x801D405C; // type:object size:0x4 data:4byte +lbl_801D4060 = .sbss:0x801D4060; // type:object size:0x4 data:4byte +lbl_801D4064 = .sbss:0x801D4064; // type:object size:0x4 data:4byte +lbl_801D4068 = .sbss:0x801D4068; // type:object size:0x4 data:4byte +NextCommandNumber = .sbss:0x801D406C; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x801D4070; // type:object size:0x4 scope:local data:4byte +FstStart = .sbss:0x801D4074; // type:object size:0x4 scope:local data:4byte +FstStringStart = .sbss:0x801D4078; // type:object size:0x4 scope:local data:4byte +MaxEntryNum = .sbss:0x801D407C; // type:object size:0x4 scope:local data:4byte +lbl_801D4080 = .sbss:0x801D4080; // type:object size:0x4 data:4byte +__DVDLongFileNameFlag = .sbss:0x801D4084; // type:object size:0x4 scope:global data:4byte +__DVDThreadQueue = .sbss:0x801D4088; // type:object size:0x8 scope:global +executing = .sbss:0x801D4090; // type:object size:0x4 scope:local data:4byte +currID = .sbss:0x801D4094; // type:object size:0x4 scope:local data:4byte +bootInfo = .sbss:0x801D4098; // type:object size:0x4 scope:local data:4byte +PauseFlag = .sbss:0x801D409C; // type:object size:0x4 scope:local data:4byte +PausingFlag = .sbss:0x801D40A0; // type:object size:0x4 scope:local data:4byte +lbl_801D40A4 = .sbss:0x801D40A4; // type:object size:0x4 data:4byte +FatalErrorFlag = .sbss:0x801D40A8; // type:object size:0x4 scope:local data:4byte +CurrCommand = .sbss:0x801D40AC; // type:object size:0x4 scope:local data:4byte +lbl_801D40B0 = .sbss:0x801D40B0; // type:object size:0x4 data:4byte +lbl_801D40B4 = .sbss:0x801D40B4; // type:object size:0x4 data:4byte +ResumeFromHere = .sbss:0x801D40B8; // type:object size:0x4 scope:local data:4byte +CancelLastError = .sbss:0x801D40BC; // type:object size:0x4 scope:local data:4byte +lbl_801D40C0 = .sbss:0x801D40C0; // type:object size:0x4 data:4byte +lbl_801D40C4 = .sbss:0x801D40C4; // type:object size:0x4 data:4byte +ResetRequired = .sbss:0x801D40C8; // type:object size:0x4 scope:local data:4byte +FirstTimeInBootrom = .sbss:0x801D40CC; // type:object size:0x4 scope:local data:4byte +DVDInitialized = .sbss:0x801D40D0; // type:object size:0x4 scope:local data:4byte +lbl_801D40D4 = .sbss:0x801D40D4; // type:object size:0x4 data:4byte +lbl_801D40D8 = .sbss:0x801D40D8; // type:object size:0x4 data:4byte +bb2 = .sbss:0x801D40DC; // type:object size:0x4 scope:local data:4byte +idTmp = .sbss:0x801D40E0; // type:object size:0x4 scope:local data:4byte +lbl_801D40E8 = .sbss:0x801D40E8; // type:object size:0x4 data:4byte +lbl_801D40EC = .sbss:0x801D40EC; // type:object size:0x4 data:4byte +lbl_801D40F0 = .sbss:0x801D40F0; // type:object size:0x8 +lbl_801D40F8 = .sbss:0x801D40F8; // type:object size:0x4 data:4byte +lbl_801D40FC = .sbss:0x801D40FC; // type:object size:0x4 data:4byte +lbl_801D4100 = .sbss:0x801D4100; // type:object size:0x4 data:4byte +lbl_801D4104 = .sbss:0x801D4104; // type:object size:0x2 data:2byte +lbl_801D4106 = .sbss:0x801D4106; // type:object size:0x2 data:2byte +lbl_801D4108 = .sbss:0x801D4108; // type:object size:0x8 data:4byte +lbl_801D4110 = .sbss:0x801D4110; // type:object size:0x4 data:4byte +lbl_801D4114 = .sbss:0x801D4114; // type:object size:0x4 data:4byte +lbl_801D4118 = .sbss:0x801D4118; // type:object size:0x8 data:4byte +lbl_801D4120 = .sbss:0x801D4120; // type:object size:0x4 data:4byte +lbl_801D4124 = .sbss:0x801D4124; // type:object size:0x4 data:4byte +lbl_801D4128 = .sbss:0x801D4128; // type:object size:0x4 data:4byte +CurrTvMode = .sbss:0x801D412C; // type:object size:0x4 scope:local data:4byte +lbl_801D4130 = .sbss:0x801D4130; // type:object size:0x4 data:4byte +lbl_801D4134 = .sbss:0x801D4134; // type:object size:0x4 data:4byte +lbl_801D4138 = .sbss:0x801D4138; // type:object size:0x8 data:4byte +lbl_801D4140 = .sbss:0x801D4140; // type:object size:0x8 data:4byte +lbl_801D4148 = .sbss:0x801D4148; // type:object size:0x4 data:4byte +lbl_801D414C = .sbss:0x801D414C; // type:object size:0x4 data:4byte +lbl_801D4150 = .sbss:0x801D4150; // type:object size:0x4 data:4byte +lbl_801D4154 = .sbss:0x801D4154; // type:object size:0x4 data:4byte +lbl_801D4158 = .sbss:0x801D4158; // type:object size:0x4 data:4byte +lbl_801D415C = .sbss:0x801D415C; // type:object size:0x4 data:4byte +lbl_801D4160 = .sbss:0x801D4160; // type:object size:0x4 data:4byte +lbl_801D4164 = .sbss:0x801D4164; // type:object size:0x4 data:4byte +lbl_801D4168 = .sbss:0x801D4168; // type:object size:0x4 data:4byte +lbl_801D416C = .sbss:0x801D416C; // type:object size:0x4 data:4byte +lbl_801D4170 = .sbss:0x801D4170; // type:object size:0x4 data:4byte +lbl_801D4174 = .sbss:0x801D4174; // type:object size:0x4 data:4byte +lbl_801D4178 = .sbss:0x801D4178; // type:object size:0x4 data:4byte +lbl_801D417C = .sbss:0x801D417C; // type:object size:0x4 data:4byte +lbl_801D4180 = .sbss:0x801D4180; // type:object size:0x4 data:4byte +lbl_801D4184 = .sbss:0x801D4184; // type:object size:0x4 data:4byte +lbl_801D4188 = .sbss:0x801D4188; // type:object size:0x4 data:4byte +lbl_801D418C = .sbss:0x801D418C; // type:object size:0x4 data:4byte +lbl_801D4190 = .sbss:0x801D4190; // type:object size:0x4 data:4byte +lbl_801D4194 = .sbss:0x801D4194; // type:object size:0x4 data:4byte +lbl_801D4198 = .sbss:0x801D4198; // type:object size:0x4 data:4byte +lbl_801D419C = .sbss:0x801D419C; // type:object size:0x4 data:4byte +lbl_801D41A0 = .sbss:0x801D41A0; // type:object size:0x4 data:4byte +lbl_801D41A4 = .sbss:0x801D41A4; // type:object size:0x4 data:4byte +lbl_801D41A8 = .sbss:0x801D41A8; // type:object size:0x4 data:4byte +lbl_801D41AC = .sbss:0x801D41AC; // type:object size:0x4 data:4byte +lbl_801D41B0 = .sbss:0x801D41B0; // type:object size:0x4 data:4byte +lbl_801D41B4 = .sbss:0x801D41B4; // type:object size:0x4 data:4byte +lbl_801D41B8 = .sbss:0x801D41B8; // type:object size:0x4 data:4byte +lbl_801D41BC = .sbss:0x801D41BC; // type:object size:0x4 data:4byte +lbl_801D41C0 = .sbss:0x801D41C0; // type:object size:0x4 data:4byte +lbl_801D41C4 = .sbss:0x801D41C4; // type:object size:0x4 data:4byte +lbl_801D41C8 = .sbss:0x801D41C8; // type:object size:0x4 data:4byte +__PADSpec = .sbss:0x801D41CC; // type:object size:0x4 scope:global data:4byte +lbl_801D41D0 = .sbss:0x801D41D0; // type:object size:0x4 data:4byte +lbl_801D41D4 = .sbss:0x801D41D4; // type:object size:0x4 data:4byte +lbl_801D41D8 = .sbss:0x801D41D8; // type:object size:0x4 data:4byte +lbl_801D41DC = .sbss:0x801D41DC; // type:object size:0x4 data:4byte +lbl_801D41E0 = .sbss:0x801D41E0; // type:object size:0x8 data:4byte +lbl_801D41E8 = .sbss:0x801D41E8; // type:object size:0x4 data:4byte +lbl_801D41EC = .sbss:0x801D41EC; // type:object size:0x4 data:4byte +lbl_801D41F0 = .sbss:0x801D41F0; // type:object size:0x4 data:4byte +lbl_801D41F4 = .sbss:0x801D41F4; // type:object size:0x4 data:4byte +lbl_801D41F8 = .sbss:0x801D41F8; // type:object size:0x4 data:4byte +lbl_801D41FC = .sbss:0x801D41FC; // type:object size:0x4 data:4byte +lbl_801D4200 = .sbss:0x801D4200; // type:object size:0x4 data:4byte +lbl_801D4204 = .sbss:0x801D4204; // type:object size:0x4 data:4byte +lbl_801D4208 = .sbss:0x801D4208; // type:object size:0x4 data:4byte +lbl_801D420C = .sbss:0x801D420C; // type:object size:0x4 data:4byte +lbl_801D4210 = .sbss:0x801D4210; // type:object size:0x4 data:4byte +lbl_801D4214 = .sbss:0x801D4214; // type:object size:0x4 data:4byte +lbl_801D4218 = .sbss:0x801D4218; // type:object size:0x4 data:4byte +lbl_801D421C = .sbss:0x801D421C; // type:object size:0x4 data:4byte +lbl_801D4220 = .sbss:0x801D4220; // type:object size:0x4 data:4byte +lbl_801D4224 = .sbss:0x801D4224; // type:object size:0x4 data:4byte +lbl_801D4228 = .sbss:0x801D4228; // type:object size:0x4 data:4byte +lbl_801D422C = .sbss:0x801D422C; // type:object size:0x4 data:4byte +lbl_801D4230 = .sbss:0x801D4230; // type:object size:0x4 data:4byte +lbl_801D4234 = .sbss:0x801D4234; // type:object size:0x4 data:4byte +lbl_801D4238 = .sbss:0x801D4238; // type:object size:0x4 data:4byte +lbl_801D423C = .sbss:0x801D423C; // type:object size:0x4 data:4byte +lbl_801D4240 = .sbss:0x801D4240; // type:object size:0x4 data:4byte +lbl_801D4244 = .sbss:0x801D4244; // type:object size:0x4 data:4byte +lbl_801D4248 = .sbss:0x801D4248; // type:object size:0x4 data:4byte +lbl_801D424C = .sbss:0x801D424C; // type:object size:0x4 data:4byte +lbl_801D4250 = .sbss:0x801D4250; // type:object size:0x4 data:4byte +lbl_801D4254 = .sbss:0x801D4254; // type:object size:0x4 data:4byte +lbl_801D4258 = .sbss:0x801D4258; // type:object size:0x8 data:4byte +lbl_801D4260 = .sbss:0x801D4260; // type:object size:0x4 data:4byte +lbl_801D4264 = .sbss:0x801D4264; // type:object size:0x4 data:4byte +lbl_801D4268 = .sbss:0x801D4268; // type:object size:0x4 data:4byte +lbl_801D426C = .sbss:0x801D426C; // type:object size:0x4 data:4byte +lbl_801D4270 = .sbss:0x801D4270; // type:object size:0x4 data:4byte +lbl_801D4274 = .sbss:0x801D4274; // type:object size:0x4 data:4byte +__piReg = .sbss:0x801D4278; // type:object size:0x4 scope:global data:4byte +__cpReg = .sbss:0x801D427C; // type:object size:0x4 scope:global data:4byte +__peReg = .sbss:0x801D4280; // type:object size:0x4 scope:global data:4byte +__memReg = .sbss:0x801D4284; // type:object size:0x4 scope:global data:4byte +lbl_801D4288 = .sbss:0x801D4288; // type:object size:0x4 data:4byte +lbl_801D428C = .sbss:0x801D428C; // type:object size:0x4 data:4byte +lbl_801D4290 = .sbss:0x801D4290; // type:object size:0x4 data:4byte +lbl_801D4294 = .sbss:0x801D4294; // type:object size:0x1 data:byte +lbl_801D4298 = .sbss:0x801D4298; // type:object size:0x4 data:4byte +lbl_801D429C = .sbss:0x801D429C; // type:object size:0x4 data:4byte +lbl_801D42A0 = .sbss:0x801D42A0; // type:object size:0x8 data:4byte +lbl_801D42A8 = .sbss:0x801D42A8; // type:object size:0x4 data:4byte +lbl_801D42AC = .sbss:0x801D42AC; // type:object size:0x4 data:4byte +lbl_801D42B0 = .sbss:0x801D42B0; // type:object size:0x1 data:byte +lbl_801D42B4 = .sbss:0x801D42B4; // type:object size:0xC +lbl_801D42C0 = .sbss:0x801D42C0; // type:object size:0x8 data:4byte +lbl_801D42C8 = .sbss:0x801D42C8; // type:object size:0x4 data:4byte +lbl_801D42CC = .sbss:0x801D42CC; // type:object size:0x4 data:4byte +lbl_801D42D0 = .sbss:0x801D42D0; // type:object size:0x4 data:4byte +lbl_801D42D4 = .sbss:0x801D42D4; // type:object size:0x4 data:4byte +lbl_801D42D8 = .sbss:0x801D42D8; // type:object size:0x4 +cmdTypeAndStatus$371 = .sbss:0x801D42DC; // type:object size:0x4 scope:local +lbl_801D42E0 = .sbss:0x801D42E0; // type:object size:0x8 data:4byte +SamplingRate = .sbss:0x801D42E8; // type:object size:0x4 scope:local data:4byte +lbl_801D4300 = .sbss:0x801D4300; // type:object size:0x20 data:4byte +lbl_801D4320 = .sbss:0x801D4320; // type:object size:0x20 data:4byte +lbl_801D4340 = .sbss:0x801D4340; // type:object size:0x20 data:4byte +lbl_801D4360 = .sbss:0x801D4360; // type:object size:0x20 data:4byte +lbl_801D4380 = .sbss:0x801D4380; // type:object size:0x20 data:4byte +lbl_801D43A0 = .sbss:0x801D43A0; // type:object size:0x4 data:4byte +lbl_801D43A4 = .sbss:0x801D43A4; // type:object size:0x4 data:4byte +lbl_801D43A8 = .sbss:0x801D43A8; // type:object size:0x4 data:4byte +lbl_801D43AC = .sbss:0x801D43AC; // type:object size:0x14 data:4byte +lbl_801D43C0 = .sbss:0x801D43C0; // type:object size:0x20 data:4byte +lbl_801D43E0 = .sbss:0x801D43E0; // type:object size:0x20 data:4byte +lbl_801D4400 = .sbss:0x801D4400; // type:object size:0x4 data:4byte +lbl_801D4404 = .sbss:0x801D4404; // type:object size:0x4 data:4byte +lbl_801D4408 = .sbss:0x801D4408; // type:object size:0x4 data:4byte +lbl_801D440C = .sbss:0x801D440C; // type:object size:0x4 data:4byte +lbl_801D4410 = .sbss:0x801D4410; // type:object size:0x4 data:4byte +lbl_801D4414 = .sbss:0x801D4414; // type:object size:0x4 data:4byte +__global_destructor_chain = .sbss:0x801D4418; // type:object size:0x4 scope:global data:4byte +__aborting = .sbss:0x801D4420; // type:object size:0x4 scope:global data:4byte +__atexit_curr_func = .sbss:0x801D4424; // type:object size:0x4 scope:local data:4byte +__stdio_exit = .sbss:0x801D4428; // type:object size:0x4 scope:global data:4byte +__console_exit = .sbss:0x801D442C; // type:object size:0x4 scope:global data:4byte +lbl_801D4430 = .sbss:0x801D4430; // type:object size:0x8 data:byte +lbl_801D4438 = .sbss:0x801D4438; // type:object size:0x8 data:4byte +lbl_801D4440 = .sbss:0x801D4440; // type:object size:0x8 data:4byte +lbl_801D4448 = .sbss:0x801D4448; // type:object size:0x4 data:4byte +lbl_801D444C = .sbss:0x801D444C; // type:object size:0x1 data:byte +lbl_801D4450 = .sbss:0x801D4450; // type:object size:0x4 data:4byte +lbl_801D4454 = .sbss:0x801D4454; // type:object size:0x4 data:4byte +lbl_801D4458 = .sbss:0x801D4458; // type:object size:0x4 data:4byte +lbl_801D445C = .sbss:0x801D445C; // type:object size:0x4 data:4byte +lbl_801D4460 = .sbss:0x801D4460; // type:object size:0x4 data:4byte +lbl_801D4464 = .sbss:0x801D4464; // type:object size:0x4 data:4byte +lbl_801D4468 = .sbss:0x801D4468; // type:object size:0x1 data:byte +lbl_801D4469 = .sbss:0x801D4469; // type:object size:0x1 data:byte +lbl_801D446C = .sbss:0x801D446C; // type:object size:0x8 data:byte +lbl_801D4474 = .sbss:0x801D4474; // type:object size:0x8 data:byte +lbl_801D447C = .sbss:0x801D447C; // type:object size:0x8 data:byte +lbl_801D4484 = .sbss:0x801D4484; // type:object size:0x8 data:byte +lbl_801D448C = .sbss:0x801D448C; // type:object size:0x4 data:4byte +lbl_801D4490 = .sbss:0x801D4490; // type:object size:0x4 data:4byte +lbl_801D4494 = .sbss:0x801D4494; // type:object size:0x4 data:4byte +lbl_801D4498 = .sbss:0x801D4498; // type:object size:0x4 data:4byte +lbl_801D449C = .sbss:0x801D449C; // type:object size:0x4 data:4byte +lbl_801D44A0 = .sbss:0x801D44A0; // type:object size:0x8 data:byte +lbl_801D44A8 = .sbss:0x801D44A8; // type:object size:0x4 data:4byte +lbl_801D44AC = .sbss:0x801D44AC; // type:object size:0x4 data:4byte +lbl_801D44B0 = .sbss:0x801D44B0; // type:object size:0x4 data:4byte +lbl_801D44B4 = .sbss:0x801D44B4; // type:object size:0x1 data:byte +lbl_801D44B5 = .sbss:0x801D44B5; // type:object size:0x1 data:byte +lbl_801D44B8 = .sbss:0x801D44B8; // type:object size:0x4 data:4byte +lbl_801D44BC = .sbss:0x801D44BC; // type:object size:0x4 data:4byte +lbl_801D44C0 = .sbss:0x801D44C0; // type:object size:0x8 +lbl_801D44C8 = .sbss:0x801D44C8; // type:object size:0x4 data:4byte +lbl_801D44CC = .sbss:0x801D44CC; // type:object size:0x8 +lbl_801D44D4 = .sbss:0x801D44D4; // type:object size:0x4 data:4byte +lbl_801D44D8 = .sbss:0x801D44D8; // type:object size:0x4 data:4byte +lbl_801D44DC = .sbss:0x801D44DC; // type:object size:0x4 data:4byte +lbl_801D44E0 = .sbss:0x801D44E0; // type:object size:0x8 +lbl_801D44E8 = .sbss:0x801D44E8; // type:object size:0x4 data:4byte +lbl_801D44EC = .sbss:0x801D44EC; // type:object size:0x4 data:4byte +lbl_801D44F0 = .sbss:0x801D44F0; // type:object size:0x2 data:2byte +lbl_801D44F2 = .sbss:0x801D44F2; // type:object size:0x2 data:2byte +lbl_801D44F4 = .sbss:0x801D44F4; // type:object size:0x2 data:2byte +lbl_801D44F6 = .sbss:0x801D44F6; // type:object size:0x2 data:2byte +lbl_801D44F8 = .sbss:0x801D44F8; // type:object size:0x2 data:2byte +lbl_801D44FA = .sbss:0x801D44FA; // type:object size:0x6 data:2byte +lbl_801D4500 = .sbss:0x801D4500; // type:object size:0x8 data:4byte +lbl_801D4508 = .sbss:0x801D4508; // type:object size:0x4 data:4byte +lbl_801D450C = .sbss:0x801D450C; // type:object size:0x4 data:4byte +lbl_801D4510 = .sbss:0x801D4510; // type:object size:0x4 data:4byte +lbl_801D4514 = .sbss:0x801D4514; // type:object size:0x4 data:4byte +lbl_801D4518 = .sbss:0x801D4518; // type:object size:0x8 data:byte +lbl_801D4520 = .sbss:0x801D4520; // type:object size:0x4 data:4byte +lbl_801D4524 = .sbss:0x801D4524; // type:object size:0x4 data:4byte +lbl_801D4528 = .sbss:0x801D4528; // type:object size:0x4 data:4byte +lbl_801D452C = .sbss:0x801D452C; // type:object size:0x2 data:2byte +lbl_801D452E = .sbss:0x801D452E; // type:object size:0x1 data:byte +lbl_801D452F = .sbss:0x801D452F; // type:object size:0x1 data:byte +lbl_801D4530 = .sbss:0x801D4530; // type:object size:0x1 data:byte +lbl_801D4531 = .sbss:0x801D4531; // type:object size:0x7 data:byte +lbl_801D4538 = .sbss:0x801D4538; // type:object size:0x8 data:2byte +lbl_801D4540 = .sbss:0x801D4540; // type:object size:0x4 data:4byte +lbl_801D4544 = .sbss:0x801D4544; // type:object size:0x4 data:4byte +lbl_801D4548 = .sbss:0x801D4548; // type:object size:0x4 data:4byte +lbl_801D454C = .sbss:0x801D454C; // type:object size:0x2 data:2byte +lbl_801D4550 = .sbss:0x801D4550; // type:object size:0x4 data:4byte +lbl_801D4554 = .sbss:0x801D4554; // type:object size:0x4 data:4byte +lbl_801D4558 = .sbss:0x801D4558; // type:object size:0x4 data:4byte +lbl_801D455C = .sbss:0x801D455C; // type:object size:0x2 data:2byte +lbl_801D4560 = .sbss:0x801D4560; // type:object size:0x4 data:4byte +lbl_801D4564 = .sbss:0x801D4564; // type:object size:0x4 data:4byte +lbl_801D4568 = .sbss:0x801D4568; // type:object size:0x4 data:4byte +lbl_801D456C = .sbss:0x801D456C; // type:object size:0x4 data:4byte +lbl_801D4570 = .sbss:0x801D4570; // type:object size:0x4 data:4byte +lbl_801D4574 = .sbss:0x801D4574; // type:object size:0x4 data:4byte +lbl_801D4578 = .sbss:0x801D4578; // type:object size:0x8 data:4byte +lbl_801D4580 = .sbss:0x801D4580; // type:object size:0x1 data:byte +lbl_801D4581 = .sbss:0x801D4581; // type:object size:0x1 data:byte +lbl_801D4582 = .sbss:0x801D4582; // type:object size:0x1 data:byte +lbl_801D4583 = .sbss:0x801D4583; // type:object size:0x1 data:byte +lbl_801D4584 = .sbss:0x801D4584; // type:object size:0x1 data:byte +lbl_801D4585 = .sbss:0x801D4585; // type:object size:0x1 data:byte +lbl_801D4588 = .sbss:0x801D4588; // type:object size:0x4 data:4byte +lbl_801D458C = .sbss:0x801D458C; // type:object size:0x4 data:4byte +lbl_801D4590 = .sbss:0x801D4590; // type:object size:0x4 data:4byte +lbl_801D4594 = .sbss:0x801D4594; // type:object size:0x4 data:4byte +lbl_801D4598 = .sbss:0x801D4598; // type:object size:0x4 data:4byte +lbl_801D459C = .sbss:0x801D459C; // type:object size:0x1 data:byte +lbl_801D45A0 = .sbss:0x801D45A0; // type:object size:0x1 data:byte +lbl_801D45A4 = .sbss:0x801D45A4; // type:object size:0x4 data:4byte +lbl_801D45A8 = .sbss:0x801D45A8; // type:object size:0x4 data:4byte +lbl_801D45AC = .sbss:0x801D45AC; // type:object size:0x1 data:byte +lbl_801D45AD = .sbss:0x801D45AD; // type:object size:0x1 data:byte +lbl_801D45AE = .sbss:0x801D45AE; // type:object size:0x1 data:byte +lbl_801D45AF = .sbss:0x801D45AF; // type:object size:0x1 data:byte +lbl_801D45B0 = .sbss:0x801D45B0; // type:object size:0x4 data:4byte +lbl_801D45B4 = .sbss:0x801D45B4; // type:object size:0x4 data:4byte +lbl_801D45B8 = .sbss:0x801D45B8; // type:object size:0x4 data:4byte +lbl_801D45BC = .sbss:0x801D45BC; // type:object size:0x4 data:4byte +lbl_801D45C0 = .sbss:0x801D45C0; // type:object size:0x4 data:4byte +lbl_801D45C4 = .sbss:0x801D45C4; // type:object size:0x4 data:4byte +lbl_801D45C8 = .sbss:0x801D45C8; // type:object size:0x4 data:4byte +lbl_801D45CC = .sbss:0x801D45CC; // type:object size:0x4 data:4byte +lbl_801D45D0 = .sbss:0x801D45D0; // type:object size:0x4 data:4byte +lbl_801D45D4 = .sbss:0x801D45D4; // type:object size:0x2 data:2byte +lbl_801D45D8 = .sbss:0x801D45D8; // type:object size:0x4 data:4byte +lbl_801D45DC = .sbss:0x801D45DC; // type:object size:0x4 data:4byte +lbl_801D45E0 = .sbss:0x801D45E0; // type:object size:0x4 data:4byte +lbl_801D45E4 = .sbss:0x801D45E4; // type:object size:0x4 data:4byte +lbl_801D45E8 = .sbss:0x801D45E8; // type:object size:0x4 data:4byte +lbl_801D45EC = .sbss:0x801D45EC; // type:object size:0x4 data:4byte +lbl_801D45F0 = .sbss:0x801D45F0; // type:object size:0x1 data:byte +lbl_801D45F4 = .sbss:0x801D45F4; // type:object size:0x4 data:4byte +lbl_801D45F8 = .sbss:0x801D45F8; // type:object size:0x4 data:4byte +lbl_801D45FC = .sbss:0x801D45FC; // type:object size:0x4 data:4byte +lbl_801D4600 = .sbss:0x801D4600; // type:object size:0x4 data:4byte +lbl_801D4604 = .sbss:0x801D4604; // type:object size:0x4 data:4byte +lbl_801D4608 = .sbss:0x801D4608; // type:object size:0x4 data:4byte +lbl_801D460C = .sbss:0x801D460C; // type:object size:0x1 data:byte +lbl_801D4620 = .sdata2:0x801D4620; // type:object size:0x8 scope:local data:double +lbl_801D4628 = .sdata2:0x801D4628; // type:object size:0x4 scope:local data:float +lbl_801D462C = .sdata2:0x801D462C; // type:object size:0x4 scope:local data:float +lbl_801D4630 = .sdata2:0x801D4630; // type:object size:0x8 scope:local data:double +lbl_801D4638 = .sdata2:0x801D4638; // type:object size:0x4 scope:local data:float +lbl_801D463C = .sdata2:0x801D463C; // type:object size:0x4 scope:local data:float +lbl_801D4640 = .sdata2:0x801D4640; // type:object size:0x4 scope:local data:float +lbl_801D4644 = .sdata2:0x801D4644; // type:object size:0x4 scope:local data:float +lbl_801D4648 = .sdata2:0x801D4648; // type:object size:0x4 scope:local data:float +lbl_801D464C = .sdata2:0x801D464C; // type:object size:0x4 scope:local data:float +lbl_801D4650 = .sdata2:0x801D4650; // type:object size:0x4 scope:local data:float +lbl_801D4654 = .sdata2:0x801D4654; // type:object size:0x4 scope:local data:float +lbl_801D4658 = .sdata2:0x801D4658; // type:object size:0x4 scope:local data:float +lbl_801D4660 = .sdata2:0x801D4660; // type:object size:0x8 scope:local data:double +lbl_801D4668 = .sdata2:0x801D4668; // type:object size:0x8 scope:local data:double +lbl_801D4670 = .sdata2:0x801D4670; // type:object size:0x4 scope:local data:float +lbl_801D4674 = .sdata2:0x801D4674; // type:object size:0x4 scope:local data:float +lbl_801D4678 = .sdata2:0x801D4678; // type:object size:0x4 scope:local data:float +lbl_801D467C = .sdata2:0x801D467C; // type:object size:0x4 scope:local data:float +lbl_801D4680 = .sdata2:0x801D4680; // type:object size:0x8 scope:local data:float +lbl_801D4688 = .sdata2:0x801D4688; // type:object size:0x4 scope:local data:float +lbl_801D468C = .sdata2:0x801D468C; // type:object size:0x4 scope:local data:float +lbl_801D4690 = .sdata2:0x801D4690; // type:object size:0x4 scope:local data:float +lbl_801D4698 = .sdata2:0x801D4698; // type:object size:0x8 scope:local data:double +lbl_801D46A0 = .sdata2:0x801D46A0; // type:object size:0x8 scope:local data:double +lbl_801D46A8 = .sdata2:0x801D46A8; // type:object size:0x8 scope:local data:float +lbl_801D46B0 = .sdata2:0x801D46B0; // type:object size:0x4 scope:local data:float +lbl_801D46B4 = .sdata2:0x801D46B4; // type:object size:0x4 scope:local data:float +lbl_801D46B8 = .sdata2:0x801D46B8; // type:object size:0x4 scope:local data:float +lbl_801D46BC = .sdata2:0x801D46BC; // type:object size:0x4 scope:local data:float +lbl_801D46C0 = .sdata2:0x801D46C0; // type:object size:0x4 scope:local data:float +lbl_801D46C4 = .sdata2:0x801D46C4; // type:object size:0x4 scope:local data:float +lbl_801D46C8 = .sdata2:0x801D46C8; // type:object size:0x4 scope:local data:float +lbl_801D46D0 = .sdata2:0x801D46D0; // type:object size:0x8 scope:local data:double +lbl_801D46D8 = .sdata2:0x801D46D8; // type:object size:0x8 scope:local data:double +lbl_801D46E0 = .sdata2:0x801D46E0; // type:object size:0x8 scope:local data:double +lbl_801D46E8 = .sdata2:0x801D46E8; // type:object size:0x4 scope:local data:float +lbl_801D46EC = .sdata2:0x801D46EC; // type:object size:0x4 scope:local data:float +lbl_801D46F0 = .sdata2:0x801D46F0; // type:object size:0x4 scope:local data:float +lbl_801D46F4 = .sdata2:0x801D46F4; // type:object size:0x4 scope:local data:float +lbl_801D46F8 = .sdata2:0x801D46F8; // type:object size:0x8 scope:local data:double +lbl_801D4700 = .sdata2:0x801D4700; // type:object size:0x8 scope:local data:double +lbl_801D4708 = .sdata2:0x801D4708; // type:object size:0x8 scope:local data:double +lbl_801D4710 = .sdata2:0x801D4710; // type:object size:0x8 scope:local data:double +lbl_801D4718 = .sdata2:0x801D4718; // type:object size:0x4 scope:local data:float +lbl_801D4720 = .sdata2:0x801D4720; // type:object size:0x8 scope:local data:double +lbl_801D4728 = .sdata2:0x801D4728; // type:object size:0x4 scope:local data:float +lbl_801D472C = .sdata2:0x801D472C; // type:object size:0x4 scope:local data:float +lbl_801D4730 = .sdata2:0x801D4730; // type:object size:0x4 scope:local data:float +lbl_801D4734 = .sdata2:0x801D4734; // type:object size:0x4 scope:local data:float +lbl_801D4738 = .sdata2:0x801D4738; // type:object size:0x8 scope:local data:double +lbl_801D4740 = .sdata2:0x801D4740; // type:object size:0x4 scope:local data:float +lbl_801D4744 = .sdata2:0x801D4744; // type:object size:0x4 scope:local data:float +lbl_801D4748 = .sdata2:0x801D4748; // type:object size:0x4 scope:local data:float +lbl_801D474C = .sdata2:0x801D474C; // type:object size:0x4 scope:local data:float +lbl_801D4750 = .sdata2:0x801D4750; // type:object size:0x8 scope:local data:double +lbl_801D4758 = .sdata2:0x801D4758; // type:object size:0x4 scope:local data:float +lbl_801D4760 = .sdata2:0x801D4760; // type:object size:0x8 scope:local data:double +lbl_801D4768 = .sdata2:0x801D4768; // type:object size:0x4 scope:local data:float +lbl_801D476C = .sdata2:0x801D476C; // type:object size:0x4 scope:local data:float +lbl_801D4770 = .sdata2:0x801D4770; // type:object size:0x4 scope:local data:float +lbl_801D4774 = .sdata2:0x801D4774; // type:object size:0x4 scope:local data:float +lbl_801D4778 = .sdata2:0x801D4778; // type:object size:0x4 scope:local data:float +lbl_801D4780 = .sdata2:0x801D4780; // type:object size:0x8 scope:local data:double +lbl_801D4788 = .sdata2:0x801D4788; // type:object size:0x8 scope:local data:double +lbl_801D4790 = .sdata2:0x801D4790; // type:object size:0x8 scope:local data:double +lbl_801D4798 = .sdata2:0x801D4798; // type:object size:0x8 scope:local data:double +lbl_801D47A0 = .sdata2:0x801D47A0; // type:object size:0x4 scope:local data:float +lbl_801D47A4 = .sdata2:0x801D47A4; // type:object size:0x4 scope:local data:float +lbl_801D47A8 = .sdata2:0x801D47A8; // type:object size:0x4 scope:local data:float +lbl_801D47AC = .sdata2:0x801D47AC; // type:object size:0x4 scope:local data:float +lbl_801D47B0 = .sdata2:0x801D47B0; // type:object size:0x4 scope:local data:float +lbl_801D47B4 = .sdata2:0x801D47B4; // type:object size:0x4 scope:local data:float +lbl_801D47B8 = .sdata2:0x801D47B8; // type:object size:0x4 scope:local data:float +lbl_801D47BC = .sdata2:0x801D47BC; // type:object size:0x4 scope:local data:float +lbl_801D47C0 = .sdata2:0x801D47C0; // type:object size:0x8 scope:local data:double +lbl_801D47C8 = .sdata2:0x801D47C8; // type:object size:0x8 scope:local data:float +lbl_801D47D0 = .sdata2:0x801D47D0; // type:object size:0x4 scope:local data:float +lbl_801D47D4 = .sdata2:0x801D47D4; // type:object size:0x4 scope:local data:float +lbl_801D47D8 = .sdata2:0x801D47D8; // type:object size:0x8 scope:local data:double +lbl_801D47E0 = .sdata2:0x801D47E0; // type:object size:0x8 scope:local data:double +lbl_801D47E8 = .sdata2:0x801D47E8; // type:object size:0x4 scope:local data:float +lbl_801D47EC = .sdata2:0x801D47EC; // type:object size:0x4 scope:local data:float +lbl_801D47F0 = .sdata2:0x801D47F0; // type:object size:0x4 scope:local data:float +lbl_801D47F8 = .sdata2:0x801D47F8; // type:object size:0x8 scope:local data:double +lbl_801D4800 = .sdata2:0x801D4800; // type:object size:0x8 scope:local data:double +lbl_801D4808 = .sdata2:0x801D4808; // type:object size:0x8 scope:local data:double +lbl_801D4810 = .sdata2:0x801D4810; // type:object size:0x4 scope:local data:float +lbl_801D4814 = .sdata2:0x801D4814; // type:object size:0x4 scope:local data:float +lbl_801D4818 = .sdata2:0x801D4818; // type:object size:0x8 scope:local data:float +lbl_801D4820 = .sdata2:0x801D4820; // type:object size:0x4 scope:local data:float +lbl_801D4824 = .sdata2:0x801D4824; // type:object size:0x4 scope:local data:float +lbl_801D4828 = .sdata2:0x801D4828; // type:object size:0x8 scope:local data:double +lbl_801D4830 = .sdata2:0x801D4830; // type:object size:0x4 scope:local data:float +lbl_801D4834 = .sdata2:0x801D4834; // type:object size:0x4 scope:local data:float +lbl_801D4838 = .sdata2:0x801D4838; // type:object size:0x4 scope:local data:float +lbl_801D483C = .sdata2:0x801D483C; // type:object size:0x4 scope:local data:float +lbl_801D4840 = .sdata2:0x801D4840; // type:object size:0x8 scope:local data:double +lbl_801D4848 = .sdata2:0x801D4848; // type:object size:0x4 scope:local data:float +lbl_801D4850 = .sdata2:0x801D4850; // type:object size:0x8 scope:local data:double +lbl_801D4858 = .sdata2:0x801D4858; // type:object size:0x8 scope:local data:double +lbl_801D4860 = .sdata2:0x801D4860; // type:object size:0x8 scope:local data:double +lbl_801D4868 = .sdata2:0x801D4868; // type:object size:0x4 scope:local data:float +lbl_801D4870 = .sdata2:0x801D4870; // type:object size:0x8 scope:local data:double +lbl_801D4878 = .sdata2:0x801D4878; // type:object size:0x8 scope:local data:double +lbl_801D4880 = .sdata2:0x801D4880; // type:object size:0x4 scope:local data:float +lbl_801D4888 = .sdata2:0x801D4888; // type:object size:0x8 scope:local data:double +lbl_801D4890 = .sdata2:0x801D4890; // type:object size:0x8 scope:local data:double +lbl_801D4898 = .sdata2:0x801D4898; // type:object size:0x8 scope:local data:double +lbl_801D48A0 = .sdata2:0x801D48A0; // type:object size:0x8 scope:local data:double +lbl_801D48A8 = .sdata2:0x801D48A8; // type:object size:0x4 scope:local data:float +lbl_801D48AC = .sdata2:0x801D48AC; // type:object size:0x4 scope:local data:float +lbl_801D48B0 = .sdata2:0x801D48B0; // type:object size:0x4 scope:local data:float +lbl_801D48B4 = .sdata2:0x801D48B4; // type:object size:0x4 scope:local data:float +lbl_801D48B8 = .sdata2:0x801D48B8; // type:object size:0x8 scope:local data:double +lbl_801D48C0 = .sdata2:0x801D48C0; // type:object size:0x4 scope:local data:float +lbl_801D48C8 = .sdata2:0x801D48C8; // type:object size:0x8 scope:local data:double +lbl_801D48D0 = .sdata2:0x801D48D0; // type:object size:0x8 scope:local data:double +lbl_801D48D8 = .sdata2:0x801D48D8; // type:object size:0x4 scope:local data:float +lbl_801D48E0 = .sdata2:0x801D48E0; // type:object size:0x8 scope:local data:double +lbl_801D48E8 = .sdata2:0x801D48E8; // type:object size:0x4 scope:local data:float +lbl_801D48EC = .sdata2:0x801D48EC; // type:object size:0x4 scope:local data:float +lbl_801D48F0 = .sdata2:0x801D48F0; // type:object size:0x4 scope:local data:float +lbl_801D48F4 = .sdata2:0x801D48F4; // type:object size:0x4 scope:local data:float +lbl_801D48F8 = .sdata2:0x801D48F8; // type:object size:0x8 scope:local data:double +lbl_801D4900 = .sdata2:0x801D4900; // type:object size:0x8 scope:local data:double +lbl_801D4908 = .sdata2:0x801D4908; // type:object size:0x4 scope:local data:float +lbl_801D490C = .sdata2:0x801D490C; // type:object size:0x4 scope:local data:float +lbl_801D4910 = .sdata2:0x801D4910; // type:object size:0x8 scope:local data:double +lbl_801D4918 = .sdata2:0x801D4918; // type:object size:0x4 scope:local data:float +lbl_801D491C = .sdata2:0x801D491C; // type:object size:0x4 scope:local data:float +lbl_801D4920 = .sdata2:0x801D4920; // type:object size:0x4 scope:local data:float +lbl_801D4924 = .sdata2:0x801D4924; // type:object size:0x4 scope:local data:float +lbl_801D4928 = .sdata2:0x801D4928; // type:object size:0x8 scope:local data:double +lbl_801D4930 = .sdata2:0x801D4930; // type:object size:0x8 scope:local data:double +lbl_801D4938 = .sdata2:0x801D4938; // type:object size:0x4 scope:local data:float +lbl_801D493C = .sdata2:0x801D493C; // type:object size:0x4 scope:local data:float +lbl_801D4940 = .sdata2:0x801D4940; // type:object size:0x4 scope:local data:float +lbl_801D4944 = .sdata2:0x801D4944; // type:object size:0x4 scope:local data:float +lbl_801D4948 = .sdata2:0x801D4948; // type:object size:0x4 scope:local data:float +lbl_801D494C = .sdata2:0x801D494C; // type:object size:0x4 scope:local data:float +lbl_801D4950 = .sdata2:0x801D4950; // type:object size:0x4 scope:local data:float +lbl_801D4954 = .sdata2:0x801D4954; // type:object size:0x4 scope:local data:float +lbl_801D4958 = .sdata2:0x801D4958; // type:object size:0x4 scope:local data:float +lbl_801D4960 = .sdata2:0x801D4960; // type:object size:0x8 data:double +lbl_801D4968 = .sdata2:0x801D4968; // type:object size:0x8 data:double +lbl_801D4970 = .sdata2:0x801D4970; // type:object size:0x4 scope:local data:float +lbl_801D4978 = .sdata2:0x801D4978; // type:object size:0x8 scope:local data:double +lbl_801D4980 = .sdata2:0x801D4980; // type:object size:0x8 scope:local data:double +lbl_801D4988 = .sdata2:0x801D4988; // type:object size:0x8 scope:local data:double +lbl_801D4990 = .sdata2:0x801D4990; // type:object size:0x4 scope:local data:float +lbl_801D4994 = .sdata2:0x801D4994; // type:object size:0x4 scope:local data:float +lbl_801D4998 = .sdata2:0x801D4998; // type:object size:0x4 scope:local data:float +lbl_801D49A0 = .sdata2:0x801D49A0; // type:object size:0x8 scope:local data:double +lbl_801D49A8 = .sdata2:0x801D49A8; // type:object size:0x4 scope:local data:float +lbl_801D49AC = .sdata2:0x801D49AC; // type:object size:0x4 scope:local data:float +lbl_801D49B0 = .sdata2:0x801D49B0; // type:object size:0x8 scope:local data:double +lbl_801D49B8 = .sdata2:0x801D49B8; // type:object size:0x8 scope:local data:double +lbl_801D49C0 = .sdata2:0x801D49C0; // type:object size:0x8 scope:local data:double +lbl_801D49C8 = .sdata2:0x801D49C8; // type:object size:0x8 scope:local data:double +lbl_801D49D0 = .sdata2:0x801D49D0; // type:object size:0x8 scope:local data:double +lbl_801D49D8 = .sdata2:0x801D49D8; // type:object size:0x8 scope:local data:double +lbl_801D49E0 = .sdata2:0x801D49E0; // type:object size:0x4 scope:local data:float +lbl_801D49E4 = .sdata2:0x801D49E4; // type:object size:0x4 scope:local data:float +lbl_801D49E8 = .sdata2:0x801D49E8; // type:object size:0x8 scope:local data:double +lbl_801D49F0 = .sdata2:0x801D49F0; // type:object size:0x4 scope:local data:float +lbl_801D49F4 = .sdata2:0x801D49F4; // type:object size:0x4 scope:local data:float +lbl_801D49F8 = .sdata2:0x801D49F8; // type:object size:0x4 scope:local data:float +lbl_801D49FC = .sdata2:0x801D49FC; // type:object size:0x4 scope:local data:float +lbl_801D4A00 = .sdata2:0x801D4A00; // type:object size:0x4 scope:local data:float +lbl_801D4A04 = .sdata2:0x801D4A04; // type:object size:0x4 scope:local data:float +lbl_801D4A08 = .sdata2:0x801D4A08; // type:object size:0x4 scope:local data:float +lbl_801D4A0C = .sdata2:0x801D4A0C; // type:object size:0x4 scope:local data:float +lbl_801D4A10 = .sdata2:0x801D4A10; // type:object size:0x4 scope:local data:float +lbl_801D4A14 = .sdata2:0x801D4A14; // type:object size:0x4 scope:local data:float +lbl_801D4A18 = .sdata2:0x801D4A18; // type:object size:0x4 scope:local data:float +lbl_801D4A1C = .sdata2:0x801D4A1C; // type:object size:0x4 scope:local data:float +lbl_801D4A20 = .sdata2:0x801D4A20; // type:object size:0x4 scope:local data:float +lbl_801D4A24 = .sdata2:0x801D4A24; // type:object size:0x4 scope:local data:float +lbl_801D4A28 = .sdata2:0x801D4A28; // type:object size:0x4 scope:local data:float +lbl_801D4A2C = .sdata2:0x801D4A2C; // type:object size:0x4 scope:local data:float +lbl_801D4A30 = .sdata2:0x801D4A30; // type:object size:0x4 scope:local data:float +lbl_801D4A34 = .sdata2:0x801D4A34; // type:object size:0x4 scope:local data:float +lbl_801D4A38 = .sdata2:0x801D4A38; // type:object size:0x8 scope:local data:double +lbl_801D4A40 = .sdata2:0x801D4A40; // type:object size:0x4 scope:local data:float +lbl_801D4A44 = .sdata2:0x801D4A44; // type:object size:0x4 scope:local data:float +lbl_801D4A48 = .sdata2:0x801D4A48; // type:object size:0x8 scope:local data:double +lbl_801D4A50 = .sdata2:0x801D4A50; // type:object size:0x8 scope:local data:double +lbl_801D4A58 = .sdata2:0x801D4A58; // type:object size:0x4 scope:local data:float +lbl_801D4A5C = .sdata2:0x801D4A5C; // type:object size:0x4 scope:local data:float +lbl_801D4A60 = .sdata2:0x801D4A60; // type:object size:0x8 scope:local data:double +lbl_801D4A68 = .sdata2:0x801D4A68; // type:object size:0x4 scope:local data:float +lbl_801D4A6C = .sdata2:0x801D4A6C; // type:object size:0x4 scope:local data:float +lbl_801D4A70 = .sdata2:0x801D4A70; // type:object size:0x4 scope:local data:float +lbl_801D4A74 = .sdata2:0x801D4A74; // type:object size:0x4 scope:local data:float +lbl_801D4A78 = .sdata2:0x801D4A78; // type:object size:0x4 scope:local data:float +lbl_801D4A80 = .sdata2:0x801D4A80; // type:object size:0x8 scope:local data:double +lbl_801D4A88 = .sdata2:0x801D4A88; // type:object size:0x4 scope:local data:float +lbl_801D4A90 = .sdata2:0x801D4A90; // type:object size:0x8 scope:local data:double +lbl_801D4A98 = .sdata2:0x801D4A98; // type:object size:0x4 scope:local data:float +lbl_801D4A9C = .sdata2:0x801D4A9C; // type:object size:0x4 scope:local data:float +lbl_801D4AA0 = .sdata2:0x801D4AA0; // type:object size:0x4 scope:local data:float +lbl_801D4AA4 = .sdata2:0x801D4AA4; // type:object size:0x4 scope:local data:float +lbl_801D4AA8 = .sdata2:0x801D4AA8; // type:object size:0x8 scope:local data:double +lbl_801D4AB0 = .sdata2:0x801D4AB0; // type:object size:0x4 scope:local data:float +lbl_801D4AB8 = .sdata2:0x801D4AB8; // type:object size:0x8 scope:local data:double +lbl_801D4AC0 = .sdata2:0x801D4AC0; // type:object size:0x8 scope:local data:double +lbl_801D4AC8 = .sdata2:0x801D4AC8; // type:object size:0x8 scope:local data:double +lbl_801D4AD0 = .sdata2:0x801D4AD0; // type:object size:0x4 scope:local data:float +lbl_801D4AD8 = .sdata2:0x801D4AD8; // type:object size:0x8 scope:local data:double +lbl_801D4AE0 = .sdata2:0x801D4AE0; // type:object size:0x4 scope:local data:float +lbl_801D4AE4 = .sdata2:0x801D4AE4; // type:object size:0x4 scope:local data:float +lbl_801D4AE8 = .sdata2:0x801D4AE8; // type:object size:0x4 scope:local data:float +lbl_801D4AEC = .sdata2:0x801D4AEC; // type:object size:0x4 scope:local data:float +lbl_801D4AF0 = .sdata2:0x801D4AF0; // type:object size:0x4 scope:local data:float +lbl_801D4AF4 = .sdata2:0x801D4AF4; // type:object size:0x4 scope:local data:float +lbl_801D4AF8 = .sdata2:0x801D4AF8; // type:object size:0x4 scope:local data:float +lbl_801D4AFC = .sdata2:0x801D4AFC; // type:object size:0x4 scope:local data:float +lbl_801D4B00 = .sdata2:0x801D4B00; // type:object size:0x8 scope:local data:double +lbl_801D4B08 = .sdata2:0x801D4B08; // type:object size:0x8 scope:local data:double +lbl_801D4B10 = .sdata2:0x801D4B10; // type:object size:0x8 scope:local data:double +lbl_801D4B18 = .sdata2:0x801D4B18; // type:object size:0x2 scope:local data:2byte +lbl_801D4B1A = .sdata2:0x801D4B1A; // type:object size:0x2 scope:local data:2byte +lbl_801D4B1C = .sdata2:0x801D4B1C; // type:object size:0x2 scope:local data:2byte +lbl_801D4B20 = .sdata2:0x801D4B20; // type:object size:0x4 scope:local data:float +lbl_801D4B24 = .sdata2:0x801D4B24; // type:object size:0x4 scope:local data:float +lbl_801D4B28 = .sdata2:0x801D4B28; // type:object size:0x4 scope:local data:float +lbl_801D4B2C = .sdata2:0x801D4B2C; // type:object size:0x4 scope:local data:float +lbl_801D4B30 = .sdata2:0x801D4B30; // type:object size:0x4 scope:local data:float +lbl_801D4B34 = .sdata2:0x801D4B34; // type:object size:0x4 scope:local data:float +lbl_801D4B38 = .sdata2:0x801D4B38; // type:object size:0x4 scope:local data:float +lbl_801D4B3C = .sdata2:0x801D4B3C; // type:object size:0x4 scope:local data:float +lbl_801D4B40 = .sdata2:0x801D4B40; // type:object size:0x4 scope:local data:float +lbl_801D4B44 = .sdata2:0x801D4B44; // type:object size:0x4 scope:local data:float +lbl_801D4B48 = .sdata2:0x801D4B48; // type:object size:0x8 scope:local data:double +lbl_801D4B50 = .sdata2:0x801D4B50; // type:object size:0x8 scope:local data:double +lbl_801D4B58 = .sdata2:0x801D4B58; // type:object size:0x4 scope:local data:float +lbl_801D4B5C = .sdata2:0x801D4B5C; // type:object size:0x4 scope:local data:float +lbl_801D4B60 = .sdata2:0x801D4B60; // type:object size:0x4 scope:local data:float +lbl_801D4B68 = .sdata2:0x801D4B68; // type:object size:0x8 scope:local data:double +lbl_801D4B70 = .sdata2:0x801D4B70; // type:object size:0x8 scope:local data:double +lbl_801D4B78 = .sdata2:0x801D4B78; // type:object size:0x4 scope:local data:float +lbl_801D4B7C = .sdata2:0x801D4B7C; // type:object size:0x4 scope:local data:float +lbl_801D4B80 = .sdata2:0x801D4B80; // type:object size:0x8 scope:local data:double +lbl_801D4B88 = .sdata2:0x801D4B88; // type:object size:0x4 scope:local data:float +lbl_801D4B8C = .sdata2:0x801D4B8C; // type:object size:0x4 scope:local data:float +lbl_801D4B90 = .sdata2:0x801D4B90; // type:object size:0x8 scope:local data:double +lbl_801D4B98 = .sdata2:0x801D4B98; // type:object size:0x4 scope:local data:float +lbl_801D4BA0 = .sdata2:0x801D4BA0; // type:object size:0x8 scope:local data:double +lbl_801D4BA8 = .sdata2:0x801D4BA8; // type:object size:0x4 scope:local data:float +lbl_801D4BAC = .sdata2:0x801D4BAC; // type:object size:0x4 scope:local data:float +lbl_801D4BB0 = .sdata2:0x801D4BB0; // type:object size:0x4 scope:local data:float +lbl_801D4BB4 = .sdata2:0x801D4BB4; // type:object size:0x4 scope:local data:float +lbl_801D4BB8 = .sdata2:0x801D4BB8; // type:object size:0x8 scope:local data:double +lbl_801D4BC0 = .sdata2:0x801D4BC0; // type:object size:0x4 scope:local data:float +lbl_801D4BC4 = .sdata2:0x801D4BC4; // type:object size:0x4 scope:local data:float +lbl_801D4BC8 = .sdata2:0x801D4BC8; // type:object size:0x4 scope:local data:float +lbl_801D4BCC = .sdata2:0x801D4BCC; // type:object size:0x4 scope:local data:float +lbl_801D4BD0 = .sdata2:0x801D4BD0; // type:object size:0x4 scope:local data:float +lbl_801D4BD8 = .sdata2:0x801D4BD8; // type:object size:0x8 scope:local data:double +lbl_801D4BE0 = .sdata2:0x801D4BE0; // type:object size:0x4 scope:local data:float +lbl_801D4BE4 = .sdata2:0x801D4BE4; // type:object size:0x4 scope:local data:float +lbl_801D4BE8 = .sdata2:0x801D4BE8; // type:object size:0x4 scope:local data:float +lbl_801D4BEC = .sdata2:0x801D4BEC; // type:object size:0x4 scope:local data:float +lbl_801D4BF0 = .sdata2:0x801D4BF0; // type:object size:0x4 scope:local data:float +lbl_801D4BF4 = .sdata2:0x801D4BF4; // type:object size:0x4 scope:local data:float +lbl_801D4BF8 = .sdata2:0x801D4BF8; // type:object size:0x8 scope:local data:double +lbl_801D4C00 = .sdata2:0x801D4C00; // type:object size:0x4 scope:local data:float +lbl_801D4C08 = .sdata2:0x801D4C08; // type:object size:0x8 scope:local data:double +lbl_801D4C10 = .sdata2:0x801D4C10; // type:object size:0x4 scope:local data:float +lbl_801D4C18 = .sdata2:0x801D4C18; // type:object size:0x8 scope:local data:double +lbl_801D4C20 = .sdata2:0x801D4C20; // type:object size:0x4 scope:local data:float +lbl_801D4C24 = .sdata2:0x801D4C24; // type:object size:0x4 scope:local data:float +lbl_801D4C28 = .sdata2:0x801D4C28; // type:object size:0x4 scope:local data:float +lbl_801D4C30 = .sdata2:0x801D4C30; // type:object size:0x8 scope:local data:double +lbl_801D4C38 = .sdata2:0x801D4C38; // type:object size:0x8 scope:local data:double +lbl_801D4C40 = .sdata2:0x801D4C40; // type:object size:0x8 scope:local data:double +lbl_801D4C48 = .sdata2:0x801D4C48; // type:object size:0x4 scope:local data:float +lbl_801D4C50 = .sdata2:0x801D4C50; // type:object size:0x8 scope:local data:double +lbl_801D4C58 = .sdata2:0x801D4C58; // type:object size:0x8 scope:local data:double +lbl_801D4C60 = .sdata2:0x801D4C60; // type:object size:0x8 scope:local data:double +lbl_801D4C68 = .sdata2:0x801D4C68; // type:object size:0x8 scope:local data:double +lbl_801D4C70 = .sdata2:0x801D4C70; // type:object size:0x8 scope:local data:double +lbl_801D4C78 = .sdata2:0x801D4C78; // type:object size:0x8 scope:local data:double +lbl_801D4C80 = .sdata2:0x801D4C80; // type:object size:0x8 scope:local data:double +lbl_801D4C88 = .sdata2:0x801D4C88; // type:object size:0x8 scope:local data:double +lbl_801D4C90 = .sdata2:0x801D4C90; // type:object size:0x8 scope:local data:double +lbl_801D4C98 = .sdata2:0x801D4C98; // type:object size:0x4 scope:local data:float +lbl_801D4C9C = .sdata2:0x801D4C9C; // type:object size:0x4 scope:local data:float +lbl_801D4CA0 = .sdata2:0x801D4CA0; // type:object size:0x4 scope:local data:float +lbl_801D4CA4 = .sdata2:0x801D4CA4; // type:object size:0x4 scope:local data:float +lbl_801D4CA8 = .sdata2:0x801D4CA8; // type:object size:0x8 scope:local data:double +lbl_801D4CB0 = .sdata2:0x801D4CB0; // type:object size:0x4 scope:local data:float +lbl_801D4CB8 = .sdata2:0x801D4CB8; // type:object size:0x8 scope:local data:double +lbl_801D4CC0 = .sdata2:0x801D4CC0; // type:object size:0x8 scope:local data:double +lbl_801D4CC8 = .sdata2:0x801D4CC8; // type:object size:0x4 scope:local data:float +lbl_801D4CCC = .sdata2:0x801D4CCC; // type:object size:0x4 scope:local data:float +lbl_801D4CD0 = .sdata2:0x801D4CD0; // type:object size:0x8 scope:local data:double +lbl_801D4CD8 = .sdata2:0x801D4CD8; // type:object size:0x4 scope:local data:float +lbl_801D4CDC = .sdata2:0x801D4CDC; // type:object size:0x4 scope:local data:float +lbl_801D4CE0 = .sdata2:0x801D4CE0; // type:object size:0x4 scope:local data:float +lbl_801D4CE4 = .sdata2:0x801D4CE4; // type:object size:0x4 scope:local data:float +lbl_801D4CE8 = .sdata2:0x801D4CE8; // type:object size:0x4 scope:local data:float +lbl_801D4CEC = .sdata2:0x801D4CEC; // type:object size:0x4 scope:local data:float +lbl_801D4CF0 = .sdata2:0x801D4CF0; // type:object size:0x8 scope:local data:double +lbl_801D4CF8 = .sdata2:0x801D4CF8; // type:object size:0x4 scope:local data:float +lbl_801D4D00 = .sdata2:0x801D4D00; // type:object size:0x8 scope:local data:double +lbl_801D4D08 = .sdata2:0x801D4D08; // type:object size:0x8 scope:local data:double +lbl_801D4D10 = .sdata2:0x801D4D10; // type:object size:0x4 scope:local data:float +lbl_801D4D18 = .sdata2:0x801D4D18; // type:object size:0x8 scope:local data:double +lbl_801D4D20 = .sdata2:0x801D4D20; // type:object size:0x4 scope:local data:float +lbl_801D4D24 = .sdata2:0x801D4D24; // type:object size:0x4 scope:local data:float +lbl_801D4D28 = .sdata2:0x801D4D28; // type:object size:0x8 scope:local data:double +lbl_801D4D30 = .sdata2:0x801D4D30; // type:object size:0x8 scope:local data:double +lbl_801D4D38 = .sdata2:0x801D4D38; // type:object size:0x4 scope:local data:float +lbl_801D4D3C = .sdata2:0x801D4D3C; // type:object size:0x4 scope:local data:float +lbl_801D4D40 = .sdata2:0x801D4D40; // type:object size:0x4 scope:local data:float +lbl_801D4D48 = .sdata2:0x801D4D48; // type:object size:0x8 scope:local data:double +lbl_801D4D50 = .sdata2:0x801D4D50; // type:object size:0x4 scope:local data:float +lbl_801D4D54 = .sdata2:0x801D4D54; // type:object size:0x4 scope:local data:float +lbl_801D4D58 = .sdata2:0x801D4D58; // type:object size:0x4 scope:local data:float +lbl_801D4D5C = .sdata2:0x801D4D5C; // type:object size:0x4 scope:local data:float +lbl_801D4D60 = .sdata2:0x801D4D60; // type:object size:0x8 scope:local data:double +lbl_801D4D68 = .sdata2:0x801D4D68; // type:object size:0x4 scope:local data:float +lbl_801D4D70 = .sdata2:0x801D4D70; // type:object size:0x8 scope:local data:double +lbl_801D4D78 = .sdata2:0x801D4D78; // type:object size:0x4 scope:local data:float +lbl_801D4D80 = .sdata2:0x801D4D80; // type:object size:0x8 scope:local data:double +lbl_801D4D88 = .sdata2:0x801D4D88; // type:object size:0x8 scope:local data:float +lbl_801D4D90 = .sdata2:0x801D4D90; // type:object size:0x4 scope:local data:float +lbl_801D4D94 = .sdata2:0x801D4D94; // type:object size:0x4 scope:local data:float +lbl_801D4D98 = .sdata2:0x801D4D98; // type:object size:0x4 scope:local data:float +lbl_801D4D9C = .sdata2:0x801D4D9C; // type:object size:0x4 scope:local data:float +lbl_801D4DA0 = .sdata2:0x801D4DA0; // type:object size:0x8 scope:local data:double +lbl_801D4DA8 = .sdata2:0x801D4DA8; // type:object size:0x8 scope:local data:double +lbl_801D4DB0 = .sdata2:0x801D4DB0; // type:object size:0x8 scope:local data:double +lbl_801D4DB8 = .sdata2:0x801D4DB8; // type:object size:0x4 scope:local data:float +lbl_801D4DC0 = .sdata2:0x801D4DC0; // type:object size:0x8 scope:local data:double +lbl_801D4DC8 = .sdata2:0x801D4DC8; // type:object size:0x2 scope:local data:2byte +lbl_801D4DCA = .sdata2:0x801D4DCA; // type:object size:0x2 scope:local data:2byte +lbl_801D4DCC = .sdata2:0x801D4DCC; // type:object size:0x2 scope:local data:2byte +lbl_801D4DCE = .sdata2:0x801D4DCE; // type:object size:0x2 scope:local data:2byte +lbl_801D4DD0 = .sdata2:0x801D4DD0; // type:object size:0x1 scope:local data:byte +lbl_801D4DD1 = .sdata2:0x801D4DD1; // type:object size:0x1 scope:local data:byte +lbl_801D4DD2 = .sdata2:0x801D4DD2; // type:object size:0x1 scope:local data:byte +lbl_801D4DD3 = .sdata2:0x801D4DD3; // type:object size:0x1 scope:local data:byte +lbl_801D4DD4 = .sdata2:0x801D4DD4; // type:object size:0x1 scope:local data:byte +lbl_801D4DD5 = .sdata2:0x801D4DD5; // type:object size:0x1 scope:local data:byte +lbl_801D4DD6 = .sdata2:0x801D4DD6; // type:object size:0x1 scope:local data:byte +lbl_801D4DD7 = .sdata2:0x801D4DD7; // type:object size:0x1 scope:local data:byte +lbl_801D4DD8 = .sdata2:0x801D4DD8; // type:object size:0x1 scope:local data:byte +lbl_801D4DD9 = .sdata2:0x801D4DD9; // type:object size:0x1 scope:local data:byte +lbl_801D4DDA = .sdata2:0x801D4DDA; // type:object size:0x1 scope:local data:byte +lbl_801D4DDB = .sdata2:0x801D4DDB; // type:object size:0x1 scope:local data:byte +lbl_801D4DDC = .sdata2:0x801D4DDC; // type:object size:0x4 scope:local data:float +lbl_801D4DE0 = .sdata2:0x801D4DE0; // type:object size:0x4 scope:local data:float +lbl_801D4DE4 = .sdata2:0x801D4DE4; // type:object size:0x1 scope:local data:byte +lbl_801D4DE5 = .sdata2:0x801D4DE5; // type:object size:0x1 scope:local data:byte +lbl_801D4DE6 = .sdata2:0x801D4DE6; // type:object size:0x1 scope:local data:byte +lbl_801D4DE7 = .sdata2:0x801D4DE7; // type:object size:0x1 scope:local data:byte +lbl_801D4DE8 = .sdata2:0x801D4DE8; // type:object size:0x4 scope:local data:float +lbl_801D4DEC = .sdata2:0x801D4DEC; // type:object size:0x4 scope:local data:float +lbl_801D4DF0 = .sdata2:0x801D4DF0; // type:object size:0x8 scope:local data:float +@293 = .sdata2:0x801D4DF8; // type:object size:0x4 scope:local data:float +@294 = .sdata2:0x801D4DFC; // type:object size:0x4 scope:local data:float +@295 = .sdata2:0x801D4E00; // type:object size:0x4 scope:local data:float +lbl_801D4E08 = .sdata2:0x801D4E08; // type:object size:0x4 scope:local data:float +lbl_801D4E0C = .sdata2:0x801D4E0C; // type:object size:0x4 scope:local data:float +lbl_801D4E10 = .sdata2:0x801D4E10; // type:object size:0x4 scope:local data:float +lbl_801D4E14 = .sdata2:0x801D4E14; // type:object size:0x4 scope:local data:float +lbl_801D4E18 = .sdata2:0x801D4E18; // type:object size:0x4 scope:local data:float +lbl_801D4E1C = .sdata2:0x801D4E1C; // type:object size:0x4 scope:local data:float +lbl_801D4E20 = .sdata2:0x801D4E20; // type:object size:0x8 scope:local data:double +lbl_801D4E28 = .sdata2:0x801D4E28; // type:object size:0x8 scope:local data:double +lbl_801D4E30 = .sdata2:0x801D4E30; // type:object size:0x4 scope:local data:float +lbl_801D4E34 = .sdata2:0x801D4E34; // type:object size:0x4 scope:local data:float +lbl_801D4E38 = .sdata2:0x801D4E38; // type:object size:0x8 scope:local data:double +lbl_801D4E40 = .sdata2:0x801D4E40; // type:object size:0x8 scope:local data:double +lbl_801D4E48 = .sdata2:0x801D4E48; // type:object size:0x4 scope:local data:float +lbl_801D4E4C = .sdata2:0x801D4E4C; // type:object size:0x4 scope:local data:float +lbl_801D4E50 = .sdata2:0x801D4E50; // type:object size:0x4 scope:local data:float +lbl_801D4E54 = .sdata2:0x801D4E54; // type:object size:0x4 scope:local data:float +lbl_801D4E58 = .sdata2:0x801D4E58; // type:object size:0x4 scope:local data:float +lbl_801D4E5C = .sdata2:0x801D4E5C; // type:object size:0x4 scope:local data:float +lbl_801D4E60 = .sdata2:0x801D4E60; // type:object size:0x8 scope:local data:double +lbl_801D4E68 = .sdata2:0x801D4E68; // type:object size:0x4 scope:local data:float +lbl_801D4E6C = .sdata2:0x801D4E6C; // type:object size:0x4 scope:local data:float +lbl_801D4E70 = .sdata2:0x801D4E70; // type:object size:0x8 scope:local data:double +lbl_801D4E78 = .sdata2:0x801D4E78; // type:object size:0x4 scope:local data:float +lbl_801D4E7C = .sdata2:0x801D4E7C; // type:object size:0x4 scope:local data:float +lbl_801D4E80 = .sdata2:0x801D4E80; // type:object size:0x4 scope:local data:float +lbl_801D4E84 = .sdata2:0x801D4E84; // type:object size:0x4 scope:local data:float +lbl_801D4E88 = .sdata2:0x801D4E88; // type:object size:0x4 scope:local data:float +lbl_801D4E8C = .sdata2:0x801D4E8C; // type:object size:0x4 scope:local data:float +lbl_801D4E90 = .sdata2:0x801D4E90; // type:object size:0x4 scope:local data:float +lbl_801D4E94 = .sdata2:0x801D4E94; // type:object size:0x4 scope:local data:float +lbl_801D4E98 = .sdata2:0x801D4E98; // type:object size:0x4 scope:local data:float +lbl_801D4E9C = .sdata2:0x801D4E9C; // type:object size:0x4 scope:local data:float +lbl_801D4EA0 = .sdata2:0x801D4EA0; // type:object size:0x4 scope:local data:float +lbl_801D4EA4 = .sdata2:0x801D4EA4; // type:object size:0x4 scope:local data:float +lbl_801D4EA8 = .sdata2:0x801D4EA8; // type:object size:0x4 scope:local data:float +lbl_801D4EAC = .sdata2:0x801D4EAC; // type:object size:0x4 scope:local data:float +lbl_801D4EB0 = .sdata2:0x801D4EB0; // type:object size:0x4 scope:local data:float +lbl_801D4EB4 = .sdata2:0x801D4EB4; // type:object size:0x4 scope:local data:float +lbl_801D4EB8 = .sdata2:0x801D4EB8; // type:object size:0x4 scope:local data:float +lbl_801D4EBC = .sdata2:0x801D4EBC; // type:object size:0x4 scope:local data:float +lbl_801D4EC0 = .sdata2:0x801D4EC0; // type:object size:0x4 scope:local data:float +lbl_801D4EC4 = .sdata2:0x801D4EC4; // type:object size:0x4 scope:local data:float +lbl_801D4EC8 = .sdata2:0x801D4EC8; // type:object size:0x4 scope:local data:float +lbl_801D4ECC = .sdata2:0x801D4ECC; // type:object size:0x4 scope:local data:float +lbl_801D4ED0 = .sdata2:0x801D4ED0; // type:object size:0x4 scope:local data:float +lbl_801D4ED8 = .sdata2:0x801D4ED8; // type:object size:0x8 scope:local data:double +lbl_801D4EE0 = .sdata2:0x801D4EE0; // type:object size:0x8 scope:local data:double +lbl_801D4EE8 = .sdata2:0x801D4EE8; // type:object size:0x4 scope:local data:float +lbl_801D4EF0 = .sdata2:0x801D4EF0; // type:object size:0x8 scope:local data:double +lbl_801D4EF8 = .sdata2:0x801D4EF8; // type:object size:0x4 scope:local data:float +lbl_801D4F00 = .sdata2:0x801D4F00; // type:object size:0x8 scope:local data:double +lbl_801D4F08 = .sdata2:0x801D4F08; // type:object size:0x4 scope:local data:float +lbl_801D4F0C = .sdata2:0x801D4F0C; // type:object size:0x4 scope:local data:float +lbl_801D4F10 = .sdata2:0x801D4F10; // type:object size:0x4 scope:local data:float +lbl_801D4F14 = .sdata2:0x801D4F14; // type:object size:0x4 scope:local data:float +lbl_801D4F18 = .sdata2:0x801D4F18; // type:object size:0x8 scope:local data:double +lbl_801D4F20 = .sdata2:0x801D4F20; // type:object size:0x8 scope:local data:double +lbl_801D4F28 = .sdata2:0x801D4F28; // type:object size:0x4 scope:local data:float +lbl_801D4F2C = .sdata2:0x801D4F2C; // type:object size:0x4 scope:local data:float +lbl_801D4F30 = .sdata2:0x801D4F30; // type:object size:0x4 scope:local data:float +lbl_801D4F34 = .sdata2:0x801D4F34; // type:object size:0x4 scope:local data:float +lbl_801D4F38 = .sdata2:0x801D4F38; // type:object size:0x4 scope:local data:float +lbl_801D4F3C = .sdata2:0x801D4F3C; // type:object size:0x4 scope:local data:float +lbl_801D4F40 = .sdata2:0x801D4F40; // type:object size:0x4 scope:local data:float +lbl_801D4F44 = .sdata2:0x801D4F44; // type:object size:0x4 scope:local data:float +lbl_801D4F48 = .sdata2:0x801D4F48; // type:object size:0x4 scope:local data:float +lbl_801D4F4C = .sdata2:0x801D4F4C; // type:object size:0x4 scope:local data:float +lbl_801D4F50 = .sdata2:0x801D4F50; // type:object size:0x4 scope:local data:float +lbl_801D4F54 = .sdata2:0x801D4F54; // type:object size:0x4 scope:local data:float +lbl_801D4F58 = .sdata2:0x801D4F58; // type:object size:0x4 scope:local data:float +lbl_801D4F5C = .sdata2:0x801D4F5C; // type:object size:0x4 scope:local data:float +lbl_801D4F60 = .sdata2:0x801D4F60; // type:object size:0x4 scope:local data:4byte +lbl_801D4F64 = .sdata2:0x801D4F64; // type:object size:0x4 scope:local data:4byte +lbl_801D4F68 = .sdata2:0x801D4F68; // type:object size:0x4 scope:local data:float +lbl_801D4F6C = .sdata2:0x801D4F6C; // type:object size:0x4 scope:local data:float +lbl_801D4F70 = .sdata2:0x801D4F70; // type:object size:0x4 scope:local data:float +lbl_801D4F74 = .sdata2:0x801D4F74; // type:object size:0x4 scope:local data:float +lbl_801D4F78 = .sdata2:0x801D4F78; // type:object size:0x4 scope:local data:float +lbl_801D4F7C = .sdata2:0x801D4F7C; // type:object size:0x4 scope:local data:float +lbl_801D4F80 = .sdata2:0x801D4F80; // type:object size:0x4 scope:local data:float +lbl_801D4F84 = .sdata2:0x801D4F84; // type:object size:0x4 scope:local data:float +lbl_801D4F88 = .sdata2:0x801D4F88; // type:object size:0x4 scope:local data:float +lbl_801D4F8C = .sdata2:0x801D4F8C; // type:object size:0x2 scope:local data:2byte +lbl_801D4F8E = .sdata2:0x801D4F8E; // type:object size:0x2 data:2byte +lbl_801D4F90 = .sdata2:0x801D4F90; // type:object size:0x2 data:2byte +lbl_801D4F92 = .sdata2:0x801D4F92; // type:object size:0x2 data:2byte +lbl_801D4F94 = .sdata2:0x801D4F94; // type:object size:0x1 data:byte +lbl_801D4F95 = .sdata2:0x801D4F95; // type:object size:0x1 data:byte +lbl_801D4F96 = .sdata2:0x801D4F96; // type:object size:0x1 data:byte +lbl_801D4F97 = .sdata2:0x801D4F97; // type:object size:0x1 data:byte +lbl_801D4F98 = .sdata2:0x801D4F98; // type:object size:0x1 data:byte +lbl_801D4F99 = .sdata2:0x801D4F99; // type:object size:0x1 data:byte +lbl_801D4F9A = .sdata2:0x801D4F9A; // type:object size:0x1 data:byte +lbl_801D4F9B = .sdata2:0x801D4F9B; // type:object size:0x1 data:byte +lbl_801D4F9C = .sdata2:0x801D4F9C; // type:object size:0x4 data:float +lbl_801D4FA0 = .sdata2:0x801D4FA0; // type:object size:0x4 data:float +lbl_801D4FA4 = .sdata2:0x801D4FA4; // type:object size:0x4 data:float +lbl_801D4FA8 = .sdata2:0x801D4FA8; // type:object size:0x4 data:float +lbl_801D4FAC = .sdata2:0x801D4FAC; // type:object size:0x4 data:float +lbl_801D4FB0 = .sdata2:0x801D4FB0; // type:object size:0x4 data:float +lbl_801D4FB8 = .sdata2:0x801D4FB8; // type:object size:0x8 data:double +lbl_801D4FC0 = .sdata2:0x801D4FC0; // type:object size:0x4 data:float +lbl_801D4FC4 = .sdata2:0x801D4FC4; // type:object size:0x4 data:float +lbl_801D4FC8 = .sdata2:0x801D4FC8; // type:object size:0x4 data:float +lbl_801D4FCC = .sdata2:0x801D4FCC; // type:object size:0x4 data:float +lbl_801D4FD0 = .sdata2:0x801D4FD0; // type:object size:0x8 data:float +lbl_801D4FD8 = .sdata2:0x801D4FD8; // type:object size:0x4 +lbl_801D4FDC = .sdata2:0x801D4FDC; // type:object size:0x4 data:float +lbl_801D4FE0 = .sdata2:0x801D4FE0; // type:object size:0x4 data:float +lbl_801D4FE8 = .sdata2:0x801D4FE8; // type:object size:0x8 data:double +lbl_801D4FF0 = .sdata2:0x801D4FF0; // type:object size:0x8 data:double +lbl_801D4FF8 = .sdata2:0x801D4FF8; // type:object size:0x8 data:double +lbl_801D5000 = .sdata2:0x801D5000; // type:object size:0x4 data:float +lbl_801D5004 = .sdata2:0x801D5004; // type:object size:0x4 data:float +lbl_801D5008 = .sdata2:0x801D5008; // type:object size:0x8 data:float +lbl_801D5010 = .sdata2:0x801D5010; // type:object size:0x4 data:float +lbl_801D5014 = .sdata2:0x801D5014; // type:object size:0x4 data:float +lbl_801D5018 = .sdata2:0x801D5018; // type:object size:0x4 data:float +lbl_801D5020 = .sdata2:0x801D5020; // type:object size:0x8 data:double +lbl_801D5028 = .sdata2:0x801D5028; // type:object size:0x8 data:double +lbl_801D5030 = .sdata2:0x801D5030; // type:object size:0x4 data:float +lbl_801D5034 = .sdata2:0x801D5034; // type:object size:0x4 data:float +lbl_801D5038 = .sdata2:0x801D5038; // type:object size:0x4 data:float +lbl_801D503C = .sdata2:0x801D503C; // type:object size:0x4 data:float +lbl_801D5040 = .sdata2:0x801D5040; // type:object size:0x4 data:float +lbl_801D5044 = .sdata2:0x801D5044; // type:object size:0x4 data:float +lbl_801D5048 = .sdata2:0x801D5048; // type:object size:0x4 data:float +lbl_801D504C = .sdata2:0x801D504C; // type:object size:0x4 data:float +lbl_801D5050 = .sdata2:0x801D5050; // type:object size:0x4 data:float +lbl_801D5054 = .sdata2:0x801D5054; // type:object size:0x4 data:float +lbl_801D5058 = .sdata2:0x801D5058; // type:object size:0x4 data:float +lbl_801D505C = .sdata2:0x801D505C; // type:object size:0x4 data:float +lbl_801D5060 = .sdata2:0x801D5060; // type:object size:0x4 data:float +lbl_801D5068 = .sdata2:0x801D5068; // type:object size:0x8 data:double +lbl_801D5070 = .sdata2:0x801D5070; // type:object size:0x4 data:float +lbl_801D5074 = .sdata2:0x801D5074; // type:object size:0x4 data:float +lbl_801D5078 = .sdata2:0x801D5078; // type:object size:0x8 data:float +lbl_801D5080 = .sdata2:0x801D5080; // type:object size:0x1 data:byte +lbl_801D5081 = .sdata2:0x801D5081; // type:object size:0x1 data:byte +lbl_801D5082 = .sdata2:0x801D5082; // type:object size:0x1 data:byte +lbl_801D5083 = .sdata2:0x801D5083; // type:object size:0x1 data:byte +lbl_801D5084 = .sdata2:0x801D5084; // type:object size:0x1 data:byte +lbl_801D5085 = .sdata2:0x801D5085; // type:object size:0x1 data:byte +lbl_801D5086 = .sdata2:0x801D5086; // type:object size:0x1 data:byte +lbl_801D5087 = .sdata2:0x801D5087; // type:object size:0x1 data:byte +lbl_801D5088 = .sdata2:0x801D5088; // type:object size:0x4 data:float +lbl_801D508C = .sdata2:0x801D508C; // type:object size:0x4 data:float +lbl_801D5090 = .sdata2:0x801D5090; // type:object size:0x8 data:double +lbl_801D5098 = .sdata2:0x801D5098; // type:object size:0x8 data:double +lbl_801D50A0 = .sdata2:0x801D50A0; // type:object size:0x8 data:double +lbl_801D50A8 = .sdata2:0x801D50A8; // type:object size:0x4 data:float +lbl_801D50B0 = .sdata2:0x801D50B0; // type:object size:0x8 data:double +lbl_801D50B8 = .sdata2:0x801D50B8; // type:object size:0x4 data:float +lbl_801D50BC = .sdata2:0x801D50BC; // type:object size:0x4 data:float +lbl_801D50C0 = .sdata2:0x801D50C0; // type:object size:0x4 data:float +lbl_801D50C4 = .sdata2:0x801D50C4; // type:object size:0x4 data:float +lbl_801D50C8 = .sdata2:0x801D50C8; // type:object size:0x4 data:float +lbl_801D50CC = .sdata2:0x801D50CC; // type:object size:0x4 data:float +lbl_801D50D0 = .sdata2:0x801D50D0; // type:object size:0x4 data:float +lbl_801D50D4 = .sdata2:0x801D50D4; // type:object size:0x1 data:byte +lbl_801D50D5 = .sdata2:0x801D50D5; // type:object size:0x1 data:byte +lbl_801D50D6 = .sdata2:0x801D50D6; // type:object size:0x1 data:byte +lbl_801D50D7 = .sdata2:0x801D50D7; // type:object size:0x1 data:byte +lbl_801D50D8 = .sdata2:0x801D50D8; // type:object size:0x4 data:float +lbl_801D50DC = .sdata2:0x801D50DC; // type:object size:0x4 data:float +lbl_801D50E0 = .sdata2:0x801D50E0; // type:object size:0x4 data:float +lbl_801D50E4 = .sdata2:0x801D50E4; // type:object size:0x4 data:float +lbl_801D50E8 = .sdata2:0x801D50E8; // type:object size:0x4 data:float +lbl_801D50EC = .sdata2:0x801D50EC; // type:object size:0x4 data:float +lbl_801D50F0 = .sdata2:0x801D50F0; // type:object size:0x4 data:float +lbl_801D50F4 = .sdata2:0x801D50F4; // type:object size:0x4 data:float +lbl_801D50F8 = .sdata2:0x801D50F8; // type:object size:0x4 data:float +lbl_801D50FC = .sdata2:0x801D50FC; // type:object size:0x4 data:float +lbl_801D5100 = .sdata2:0x801D5100; // type:object size:0x4 data:4byte +lbl_801D5104 = .sdata2:0x801D5104; // type:object size:0x4 data:4byte +lbl_801D5108 = .sdata2:0x801D5108; // type:object size:0x4 data:float +lbl_801D5110 = .sdata2:0x801D5110; // type:object size:0x8 data:double +lbl_801D5118 = .sdata2:0x801D5118; // type:object size:0x8 data:double +lbl_801D5120 = .sdata2:0x801D5120; // type:object size:0x4 data:float +lbl_801D5124 = .sdata2:0x801D5124; // type:object size:0x4 data:float +lbl_801D5128 = .sdata2:0x801D5128; // type:object size:0x4 data:float +lbl_801D512C = .sdata2:0x801D512C; // type:object size:0x4 data:float +lbl_801D5130 = .sdata2:0x801D5130; // type:object size:0x4 data:float +lbl_801D5134 = .sdata2:0x801D5134; // type:object size:0x4 data:float +lbl_801D5138 = .sdata2:0x801D5138; // type:object size:0x4 data:float +lbl_801D513C = .sdata2:0x801D513C; // type:object size:0x4 data:float +lbl_801D5140 = .sdata2:0x801D5140; // type:object size:0x4 data:float +lbl_801D5144 = .sdata2:0x801D5144; // type:object size:0x4 data:float +lbl_801D5148 = .sdata2:0x801D5148; // type:object size:0x4 data:float +lbl_801D514C = .sdata2:0x801D514C; // type:object size:0x4 data:float +lbl_801D5150 = .sdata2:0x801D5150; // type:object size:0x4 data:float +lbl_801D5154 = .sdata2:0x801D5154; // type:object size:0x4 data:float +lbl_801D5158 = .sdata2:0x801D5158; // type:object size:0x4 data:float +lbl_801D515C = .sdata2:0x801D515C; // type:object size:0x4 data:float +lbl_801D5160 = .sdata2:0x801D5160; // type:object size:0x4 data:float +lbl_801D5168 = .sdata2:0x801D5168; // type:object size:0x8 data:double +lbl_801D5170 = .sdata2:0x801D5170; // type:object size:0x4 data:float +lbl_801D5174 = .sdata2:0x801D5174; // type:object size:0x4 data:float +lbl_801D5178 = .sdata2:0x801D5178; // type:object size:0x4 data:float +lbl_801D517C = .sdata2:0x801D517C; // type:object size:0x4 data:float +lbl_801D5180 = .sdata2:0x801D5180; // type:object size:0x4 data:float +lbl_801D5184 = .sdata2:0x801D5184; // type:object size:0x4 data:float +lbl_801D5188 = .sdata2:0x801D5188; // type:object size:0x4 data:float +lbl_801D518C = .sdata2:0x801D518C; // type:object size:0x4 data:float +lbl_801D5190 = .sdata2:0x801D5190; // type:object size:0x4 data:float +lbl_801D5194 = .sdata2:0x801D5194; // type:object size:0x4 data:float +lbl_801D5198 = .sdata2:0x801D5198; // type:object size:0x4 data:float +lbl_801D519C = .sdata2:0x801D519C; // type:object size:0x4 data:float +lbl_801D51A0 = .sdata2:0x801D51A0; // type:object size:0x4 data:float +lbl_801D51A8 = .sdata2:0x801D51A8; // type:object size:0x8 data:double +lbl_801D51B0 = .sdata2:0x801D51B0; // type:object size:0x4 data:float +lbl_801D51B4 = .sdata2:0x801D51B4; // type:object size:0x4 data:float +lbl_801D51B8 = .sdata2:0x801D51B8; // type:object size:0x4 data:float +lbl_801D51C0 = .sdata2:0x801D51C0; // type:object size:0x8 data:double +lbl_801D51C8 = .sdata2:0x801D51C8; // type:object size:0x8 data:float +lbl_801D51D0 = .sdata2:0x801D51D0; // type:object size:0x4 data:float +lbl_801D51D4 = .sdata2:0x801D51D4; // type:object size:0x4 data:4byte +lbl_801D51D8 = .sdata2:0x801D51D8; // type:object size:0x4 data:4byte +lbl_801D51DC = .sdata2:0x801D51DC; // type:object size:0x4 data:float +lbl_801D51E0 = .sdata2:0x801D51E0; // type:object size:0x4 data:float +lbl_801D51E8 = .sdata2:0x801D51E8; // type:object size:0x8 data:double +lbl_801D51F0 = .sdata2:0x801D51F0; // type:object size:0x8 data:double +lbl_801D51F8 = .sdata2:0x801D51F8; // type:object size:0x4 data:float +lbl_801D51FC = .sdata2:0x801D51FC; // type:object size:0x4 data:float +lbl_801D5200 = .sdata2:0x801D5200; // type:object size:0x4 data:float +lbl_801D5204 = .sdata2:0x801D5204; // type:object size:0x4 data:float +lbl_801D5208 = .sdata2:0x801D5208; // type:object size:0x8 data:double +lbl_801D5210 = .sdata2:0x801D5210; // type:object size:0x4 data:float +lbl_801D5214 = .sdata2:0x801D5214; // type:object size:0x4 data:float +lbl_801D5218 = .sdata2:0x801D5218; // type:object size:0x4 data:float +lbl_801D521C = .sdata2:0x801D521C; // type:object size:0x4 data:float +lbl_801D5220 = .sdata2:0x801D5220; // type:object size:0x4 data:float +lbl_801D5224 = .sdata2:0x801D5224; // type:object size:0x4 data:float +lbl_801D5228 = .sdata2:0x801D5228; // type:object size:0x4 data:float +lbl_801D522C = .sdata2:0x801D522C; // type:object size:0x4 data:float +lbl_801D5230 = .sdata2:0x801D5230; // type:object size:0x4 data:float +lbl_801D5234 = .sdata2:0x801D5234; // type:object size:0x4 data:float +lbl_801D5238 = .sdata2:0x801D5238; // type:object size:0x4 data:float +lbl_801D523C = .sdata2:0x801D523C; // type:object size:0x4 data:float +lbl_801D5240 = .sdata2:0x801D5240; // type:object size:0x4 data:float +lbl_801D5244 = .sdata2:0x801D5244; // type:object size:0x4 data:4byte +lbl_801D5248 = .sdata2:0x801D5248; // type:object size:0x4 data:4byte +lbl_801D524C = .sdata2:0x801D524C; // type:object size:0x2 data:2byte +lbl_801D524E = .sdata2:0x801D524E; // type:object size:0x2 data:2byte +lbl_801D5250 = .sdata2:0x801D5250; // type:object size:0x2 data:2byte +lbl_801D5252 = .sdata2:0x801D5252; // type:object size:0x2 data:2byte +lbl_801D5254 = .sdata2:0x801D5254; // type:object size:0x4 data:float +lbl_801D5258 = .sdata2:0x801D5258; // type:object size:0x4 data:float +lbl_801D525C = .sdata2:0x801D525C; // type:object size:0x4 data:float +lbl_801D5260 = .sdata2:0x801D5260; // type:object size:0x4 data:float +lbl_801D5264 = .sdata2:0x801D5264; // type:object size:0x4 data:float +lbl_801D5268 = .sdata2:0x801D5268; // type:object size:0x4 data:float +lbl_801D526C = .sdata2:0x801D526C; // type:object size:0x4 data:float +lbl_801D5270 = .sdata2:0x801D5270; // type:object size:0x4 data:float +lbl_801D5274 = .sdata2:0x801D5274; // type:object size:0x4 data:float +lbl_801D5278 = .sdata2:0x801D5278; // type:object size:0x4 data:float +lbl_801D527C = .sdata2:0x801D527C; // type:object size:0x4 data:float +lbl_801D5280 = .sdata2:0x801D5280; // type:object size:0x4 data:float +lbl_801D5284 = .sdata2:0x801D5284; // type:object size:0x4 data:float +lbl_801D5288 = .sdata2:0x801D5288; // type:object size:0x4 data:float +lbl_801D528C = .sdata2:0x801D528C; // type:object size:0x4 data:float +lbl_801D5290 = .sdata2:0x801D5290; // type:object size:0x4 data:float +lbl_801D5294 = .sdata2:0x801D5294; // type:object size:0x4 data:float +lbl_801D5298 = .sdata2:0x801D5298; // type:object size:0x4 data:float +lbl_801D529C = .sdata2:0x801D529C; // type:object size:0x4 data:float +lbl_801D52A0 = .sdata2:0x801D52A0; // type:object size:0x4 data:float +lbl_801D52A4 = .sdata2:0x801D52A4; // type:object size:0x4 data:float +lbl_801D52A8 = .sdata2:0x801D52A8; // type:object size:0x4 data:float +lbl_801D52AC = .sdata2:0x801D52AC; // type:object size:0x4 data:float +lbl_801D52B0 = .sdata2:0x801D52B0; // type:object size:0x4 data:float +lbl_801D52B4 = .sdata2:0x801D52B4; // type:object size:0x4 data:float +lbl_801D52B8 = .sdata2:0x801D52B8; // type:object size:0x4 data:float +lbl_801D52BC = .sdata2:0x801D52BC; // type:object size:0x4 data:float +lbl_801D52C0 = .sdata2:0x801D52C0; // type:object size:0x4 data:float +lbl_801D52C4 = .sdata2:0x801D52C4; // type:object size:0x4 data:float +lbl_801D52C8 = .sdata2:0x801D52C8; // type:object size:0x4 data:float +lbl_801D52CC = .sdata2:0x801D52CC; // type:object size:0x4 data:float +lbl_801D52D0 = .sdata2:0x801D52D0; // type:object size:0x4 data:float +lbl_801D52D4 = .sdata2:0x801D52D4; // type:object size:0x4 data:float +lbl_801D52D8 = .sdata2:0x801D52D8; // type:object size:0x4 data:float +lbl_801D52DC = .sdata2:0x801D52DC; // type:object size:0x4 data:float +lbl_801D52E0 = .sdata2:0x801D52E0; // type:object size:0x4 data:float +lbl_801D52E4 = .sdata2:0x801D52E4; // type:object size:0x4 data:float +lbl_801D52E8 = .sdata2:0x801D52E8; // type:object size:0x8 data:double +lbl_801D52F0 = .sdata2:0x801D52F0; // type:object size:0x8 data:double +lbl_801D52F8 = .sdata2:0x801D52F8; // type:object size:0x4 data:float +lbl_801D52FC = .sdata2:0x801D52FC; // type:object size:0x4 data:float +lbl_801D5300 = .sdata2:0x801D5300; // type:object size:0x4 data:float +lbl_801D5304 = .sdata2:0x801D5304; // type:object size:0x4 data:float +lbl_801D5308 = .sdata2:0x801D5308; // type:object size:0x4 data:float +lbl_801D530C = .sdata2:0x801D530C; // type:object size:0x4 data:float +lbl_801D5310 = .sdata2:0x801D5310; // type:object size:0x4 data:float +lbl_801D5314 = .sdata2:0x801D5314; // type:object size:0x4 data:float +lbl_801D5318 = .sdata2:0x801D5318; // type:object size:0x4 data:float +lbl_801D531C = .sdata2:0x801D531C; // type:object size:0x4 data:float +lbl_801D5320 = .sdata2:0x801D5320; // type:object size:0x4 data:float +lbl_801D5324 = .sdata2:0x801D5324; // type:object size:0x4 data:float +lbl_801D5328 = .sdata2:0x801D5328; // type:object size:0x8 data:double +lbl_801D5330 = .sdata2:0x801D5330; // type:object size:0x4 data:4byte +lbl_801D5334 = .sdata2:0x801D5334; // type:object size:0x4 data:4byte +lbl_801D5338 = .sdata2:0x801D5338; // type:object size:0x1 data:byte +lbl_801D5339 = .sdata2:0x801D5339; // type:object size:0x1 data:byte +lbl_801D533C = .sdata2:0x801D533C; // type:object size:0x4 data:float +lbl_801D5340 = .sdata2:0x801D5340; // type:object size:0x4 data:float +lbl_801D5344 = .sdata2:0x801D5344; // type:object size:0x4 data:float +lbl_801D5348 = .sdata2:0x801D5348; // type:object size:0x4 data:float +lbl_801D534C = .sdata2:0x801D534C; // type:object size:0x4 data:float +lbl_801D5350 = .sdata2:0x801D5350; // type:object size:0x4 data:float +lbl_801D5354 = .sdata2:0x801D5354; // type:object size:0x4 data:float +lbl_801D5358 = .sdata2:0x801D5358; // type:object size:0x8 data:float +lbl_801D5360 = .sdata2:0x801D5360; // type:object size:0x4 data:float +lbl_801D5364 = .sdata2:0x801D5364; // type:object size:0x4 data:float +lbl_801D5368 = .sdata2:0x801D5368; // type:object size:0x4 data:float +lbl_801D536C = .sdata2:0x801D536C; // type:object size:0x4 data:float +lbl_801D5370 = .sdata2:0x801D5370; // type:object size:0x8 +lbl_801D5378 = .sdata2:0x801D5378; // type:object size:0x4 data:float +lbl_801D537C = .sdata2:0x801D537C; // type:object size:0x4 data:float +lbl_801D5380 = .sdata2:0x801D5380; // type:object size:0x4 data:float +lbl_801D5388 = .sdata2:0x801D5388; // type:object size:0x8 data:double +lbl_801D5390 = .sdata2:0x801D5390; // type:object size:0x8 data:double +lbl_801D5398 = .sdata2:0x801D5398; // type:object size:0x4 data:float +lbl_801D539C = .sdata2:0x801D539C; // type:object size:0x4 data:float +lbl_801D53A0 = .sdata2:0x801D53A0; // type:object size:0x4 data:float +lbl_801D53A8 = .sdata2:0x801D53A8; // type:object size:0x8 data:double +lbl_801D53B0 = .sdata2:0x801D53B0; // type:object size:0x4 data:float +lbl_801D53B4 = .sdata2:0x801D53B4; // type:object size:0x4 data:float +lbl_801D53B8 = .sdata2:0x801D53B8; // type:object size:0x4 data:float +lbl_801D53BC = .sdata2:0x801D53BC; // type:object size:0x4 data:float +lbl_801D53C0 = .sdata2:0x801D53C0; // type:object size:0x4 data:float +lbl_801D53C4 = .sdata2:0x801D53C4; // type:object size:0x4 data:float +lbl_801D53C8 = .sdata2:0x801D53C8; // type:object size:0x4 data:float +lbl_801D53CC = .sdata2:0x801D53CC; // type:object size:0x4 data:float +lbl_801D53D0 = .sdata2:0x801D53D0; // type:object size:0x8 data:double +lbl_801D53D8 = .sdata2:0x801D53D8; // type:object size:0x8 data:double +lbl_801D53E0 = .sdata2:0x801D53E0; // type:object size:0x4 data:float +lbl_801D53E8 = .sdata2:0x801D53E8; // type:object size:0x8 data:double +lbl_801D53F0 = .sdata2:0x801D53F0; // type:object size:0x4 data:float +lbl_801D53F4 = .sdata2:0x801D53F4; // type:object size:0x4 data:float +lbl_801D53F8 = .sdata2:0x801D53F8; // type:object size:0x4 data:float +lbl_801D53FC = .sdata2:0x801D53FC; // type:object size:0x4 data:float +lbl_801D5400 = .sdata2:0x801D5400; // type:object size:0x4 data:float +lbl_801D5404 = .sdata2:0x801D5404; // type:object size:0x4 data:float +lbl_801D5408 = .sdata2:0x801D5408; // type:object size:0x4 data:float +lbl_801D540C = .sdata2:0x801D540C; // type:object size:0x4 data:float +lbl_801D5410 = .sdata2:0x801D5410; // type:object size:0x4 data:float +lbl_801D5414 = .sdata2:0x801D5414; // type:object size:0x4 data:float +lbl_801D5418 = .sdata2:0x801D5418; // type:object size:0x4 data:float +lbl_801D541C = .sdata2:0x801D541C; // type:object size:0x4 data:float +lbl_801D5420 = .sdata2:0x801D5420; // type:object size:0x4 data:float +lbl_801D5428 = .sdata2:0x801D5428; // type:object size:0x8 data:double +lbl_801D5430 = .sdata2:0x801D5430; // type:object size:0x8 data:double +lbl_801D5438 = .sdata2:0x801D5438; // type:object size:0x8 data:float +lbl_801D5440 = .sdata2:0x801D5440; // type:object size:0x4 data:float +lbl_801D5444 = .sdata2:0x801D5444; // type:object size:0x4 data:float +lbl_801D5448 = .sdata2:0x801D5448; // type:object size:0x4 data:float +lbl_801D544C = .sdata2:0x801D544C; // type:object size:0x4 data:float +lbl_801D5450 = .sdata2:0x801D5450; // type:object size:0x4 data:float +lbl_801D5454 = .sdata2:0x801D5454; // type:object size:0x4 data:float +lbl_801D5458 = .sdata2:0x801D5458; // type:object size:0x4 data:float +lbl_801D545C = .sdata2:0x801D545C; // type:object size:0x4 data:float +lbl_801D5460 = .sdata2:0x801D5460; // type:object size:0x4 data:float +lbl_801D5464 = .sdata2:0x801D5464; // type:object size:0x4 data:float +lbl_801D5468 = .sdata2:0x801D5468; // type:object size:0x4 data:float +lbl_801D546C = .sdata2:0x801D546C; // type:object size:0x4 data:float +lbl_801D5470 = .sdata2:0x801D5470; // type:object size:0x4 data:float +lbl_801D5474 = .sdata2:0x801D5474; // type:object size:0x4 data:float +lbl_801D5478 = .sdata2:0x801D5478; // type:object size:0x4 data:float +lbl_801D547C = .sdata2:0x801D547C; // type:object size:0x4 data:float +lbl_801D5480 = .sdata2:0x801D5480; // type:object size:0x8 data:double +lbl_801D5488 = .sdata2:0x801D5488; // type:object size:0x4 data:float +lbl_801D548C = .sdata2:0x801D548C; // type:object size:0x4 data:float +lbl_801D5490 = .sdata2:0x801D5490; // type:object size:0x4 data:float +lbl_801D5494 = .sdata2:0x801D5494; // type:object size:0x4 data:float +lbl_801D5498 = .sdata2:0x801D5498; // type:object size:0x4 data:float +lbl_801D549C = .sdata2:0x801D549C; // type:object size:0x4 data:float +lbl_801D54A0 = .sdata2:0x801D54A0; // type:object size:0x4 data:float +lbl_801D54A4 = .sdata2:0x801D54A4; // type:object size:0x4 data:float +lbl_801D54A8 = .sdata2:0x801D54A8; // type:object size:0x8 data:double +lbl_801D54B0 = .sdata2:0x801D54B0; // type:object size:0x8 data:double +lbl_801D54B8 = .sdata2:0x801D54B8; // type:object size:0x4 data:float +lbl_801D54C0 = .sdata2:0x801D54C0; // type:object size:0x8 data:double +lbl_801D54C8 = .sdata2:0x801D54C8; // type:object size:0x8 data:float +lbl_801D54D0 = .sdata2:0x801D54D0; // type:object size:0x8 +lbl_801D54D8 = .sdata2:0x801D54D8; // type:object size:0x4 data:float +lbl_801D54DC = .sdata2:0x801D54DC; // type:object size:0x4 data:float +lbl_801D54E0 = .sdata2:0x801D54E0; // type:object size:0x4 data:float +lbl_801D54E4 = .sdata2:0x801D54E4; // type:object size:0x4 data:float +lbl_801D54E8 = .sdata2:0x801D54E8; // type:object size:0x4 data:float +lbl_801D54EC = .sdata2:0x801D54EC; // type:object size:0x4 data:float +lbl_801D54F0 = .sdata2:0x801D54F0; // type:object size:0x8 data:double +lbl_801D54F8 = .sdata2:0x801D54F8; // type:object size:0x8 data:double +lbl_801D5500 = .sdata2:0x801D5500; // type:object size:0x8 data:double +lbl_801D5508 = .sdata2:0x801D5508; // type:object size:0x4 data:float +lbl_801D550C = .sdata2:0x801D550C; // type:object size:0x4 data:float +lbl_801D5510 = .sdata2:0x801D5510; // type:object size:0x4 data:float +lbl_801D5514 = .sdata2:0x801D5514; // type:object size:0x4 data:4byte +lbl_801D5518 = .sdata2:0x801D5518; // type:object size:0x4 data:4byte +lbl_801D551C = .sdata2:0x801D551C; // type:object size:0x4 data:float +lbl_801D5520 = .sdata2:0x801D5520; // type:object size:0x4 data:float +lbl_801D5524 = .sdata2:0x801D5524; // type:object size:0x4 data:float +lbl_801D5528 = .sdata2:0x801D5528; // type:object size:0x4 data:float +lbl_801D552C = .sdata2:0x801D552C; // type:object size:0x4 data:4byte +lbl_801D5530 = .sdata2:0x801D5530; // type:object size:0x4 data:4byte +lbl_801D5534 = .sdata2:0x801D5534; // type:object size:0x4 data:float +lbl_801D5538 = .sdata2:0x801D5538; // type:object size:0x4 data:float +lbl_801D553C = .sdata2:0x801D553C; // type:object size:0x4 data:float +lbl_801D5540 = .sdata2:0x801D5540; // type:object size:0x4 data:float +lbl_801D5544 = .sdata2:0x801D5544; // type:object size:0x4 data:float +lbl_801D5548 = .sdata2:0x801D5548; // type:object size:0x8 data:double +lbl_801D5550 = .sdata2:0x801D5550; // type:object size:0x4 data:float +lbl_801D5558 = .sdata2:0x801D5558; // type:object size:0x8 data:double +lbl_801D5560 = .sdata2:0x801D5560; // type:object size:0x8 data:double +lbl_801D5568 = .sdata2:0x801D5568; // type:object size:0x8 data:double +lbl_801D5570 = .sdata2:0x801D5570; // type:object size:0x4 data:float +lbl_801D5574 = .sdata2:0x801D5574; // type:object size:0x4 data:float +lbl_801D5578 = .sdata2:0x801D5578; // type:object size:0x4 data:float +lbl_801D557C = .sdata2:0x801D557C; // type:object size:0x4 data:float +lbl_801D5580 = .sdata2:0x801D5580; // type:object size:0x4 data:float +lbl_801D5584 = .sdata2:0x801D5584; // type:object size:0x4 data:float +lbl_801D5588 = .sdata2:0x801D5588; // type:object size:0x4 data:float +lbl_801D558C = .sdata2:0x801D558C; // type:object size:0x4 data:float +lbl_801D5590 = .sdata2:0x801D5590; // type:object size:0x4 data:float +lbl_801D5594 = .sdata2:0x801D5594; // type:object size:0x4 data:float +lbl_801D5598 = .sdata2:0x801D5598; // type:object size:0x4 data:float +lbl_801D55A0 = .sdata2:0x801D55A0; // type:object size:0x8 data:double +lbl_801D55A8 = .sdata2:0x801D55A8; // type:object size:0x4 data:float +lbl_801D55AC = .sdata2:0x801D55AC; // type:object size:0x4 data:float +lbl_801D55B0 = .sdata2:0x801D55B0; // type:object size:0x4 data:float +lbl_801D55B4 = .sdata2:0x801D55B4; // type:object size:0x4 data:float +lbl_801D55B8 = .sdata2:0x801D55B8; // type:object size:0x4 data:float +lbl_801D55BC = .sdata2:0x801D55BC; // type:object size:0x4 data:float +lbl_801D55C0 = .sdata2:0x801D55C0; // type:object size:0x4 data:float +lbl_801D55C4 = .sdata2:0x801D55C4; // type:object size:0x4 data:float +lbl_801D55C8 = .sdata2:0x801D55C8; // type:object size:0x4 data:float +lbl_801D55CC = .sdata2:0x801D55CC; // type:object size:0x4 data:float +lbl_801D55D0 = .sdata2:0x801D55D0; // type:object size:0x4 data:float +lbl_801D55D4 = .sdata2:0x801D55D4; // type:object size:0x4 data:float +lbl_801D55D8 = .sdata2:0x801D55D8; // type:object size:0x4 data:float +lbl_801D55DC = .sdata2:0x801D55DC; // type:object size:0x4 data:float +lbl_801D55E0 = .sdata2:0x801D55E0; // type:object size:0x4 data:float +lbl_801D55E4 = .sdata2:0x801D55E4; // type:object size:0x4 data:float +lbl_801D55E8 = .sdata2:0x801D55E8; // type:object size:0x4 data:float +lbl_801D55EC = .sdata2:0x801D55EC; // type:object size:0x4 data:float +lbl_801D55F0 = .sdata2:0x801D55F0; // type:object size:0x8 data:float +lbl_801D55F8 = .sdata2:0x801D55F8; // type:object size:0x4 data:float +lbl_801D55FC = .sdata2:0x801D55FC; // type:object size:0x4 data:float +lbl_801D5600 = .sdata2:0x801D5600; // type:object size:0x4 data:float +lbl_801D5604 = .sdata2:0x801D5604; // type:object size:0x4 data:float +lbl_801D5608 = .sdata2:0x801D5608; // type:object size:0x4 data:float +lbl_801D560C = .sdata2:0x801D560C; // type:object size:0x4 data:float +lbl_801D5610 = .sdata2:0x801D5610; // type:object size:0x4 data:float +lbl_801D5614 = .sdata2:0x801D5614; // type:object size:0x4 data:float +lbl_801D5618 = .sdata2:0x801D5618; // type:object size:0x4 data:float +lbl_801D561C = .sdata2:0x801D561C; // type:object size:0x4 data:float +lbl_801D5620 = .sdata2:0x801D5620; // type:object size:0x4 data:float +lbl_801D5624 = .sdata2:0x801D5624; // type:object size:0x4 data:float +lbl_801D5628 = .sdata2:0x801D5628; // type:object size:0x8 data:double +lbl_801D5630 = .sdata2:0x801D5630; // type:object size:0x8 data:double +lbl_801D5638 = .sdata2:0x801D5638; // type:object size:0x4 data:float +lbl_801D5640 = .sdata2:0x801D5640; // type:object size:0x8 data:double +lbl_801D5648 = .sdata2:0x801D5648; // type:object size:0x8 data:double +lbl_801D5650 = .sdata2:0x801D5650; // type:object size:0x8 data:double +lbl_801D5658 = .sdata2:0x801D5658; // type:object size:0x4 data:float +lbl_801D5660 = .sdata2:0x801D5660; // type:object size:0x8 data:double +lbl_801D5668 = .sdata2:0x801D5668; // type:object size:0x4 data:float +lbl_801D566C = .sdata2:0x801D566C; // type:object size:0x4 data:float +lbl_801D5670 = .sdata2:0x801D5670; // type:object size:0x4 data:float +lbl_801D5674 = .sdata2:0x801D5674; // type:object size:0x4 data:float +lbl_801D5678 = .sdata2:0x801D5678; // type:object size:0x4 data:float +lbl_801D567C = .sdata2:0x801D567C; // type:object size:0x4 data:float +lbl_801D5680 = .sdata2:0x801D5680; // type:object size:0x4 data:float +lbl_801D5684 = .sdata2:0x801D5684; // type:object size:0x4 data:float +lbl_801D5688 = .sdata2:0x801D5688; // type:object size:0x4 data:float +lbl_801D568C = .sdata2:0x801D568C; // type:object size:0x4 data:float +lbl_801D5690 = .sdata2:0x801D5690; // type:object size:0x4 data:float +lbl_801D5694 = .sdata2:0x801D5694; // type:object size:0x4 data:float +lbl_801D5698 = .sdata2:0x801D5698; // type:object size:0x8 data:float +lbl_801D56A0 = .sdata2:0x801D56A0; // type:object size:0x4 data:float +lbl_801D56A4 = .sdata2:0x801D56A4; // type:object size:0x4 data:float +lbl_801D56A8 = .sdata2:0x801D56A8; // type:object size:0x4 data:float +lbl_801D56AC = .sdata2:0x801D56AC; // type:object size:0x4 data:float +lbl_801D56B0 = .sdata2:0x801D56B0; // type:object size:0x4 data:float +lbl_801D56B4 = .sdata2:0x801D56B4; // type:object size:0x4 data:float +lbl_801D56B8 = .sdata2:0x801D56B8; // type:object size:0x4 data:float +lbl_801D56BC = .sdata2:0x801D56BC; // type:object size:0x4 data:float +lbl_801D56C0 = .sdata2:0x801D56C0; // type:object size:0x4 data:float +lbl_801D56C8 = .sdata2:0x801D56C8; // type:object size:0x8 data:double +lbl_801D56D0 = .sdata2:0x801D56D0; // type:object size:0x8 data:double +lbl_801D56D8 = .sdata2:0x801D56D8; // type:object size:0x8 data:double +lbl_801D56E0 = .sdata2:0x801D56E0; // type:object size:0x4 data:float +lbl_801D56E4 = .sdata2:0x801D56E4; // type:object size:0x4 data:float +lbl_801D56E8 = .sdata2:0x801D56E8; // type:object size:0x4 data:float +lbl_801D56EC = .sdata2:0x801D56EC; // type:object size:0x4 data:float +lbl_801D56F0 = .sdata2:0x801D56F0; // type:object size:0x8 data:double +lbl_801D56F8 = .sdata2:0x801D56F8; // type:object size:0x8 data:double +lbl_801D5700 = .sdata2:0x801D5700; // type:object size:0x4 data:float +lbl_801D5704 = .sdata2:0x801D5704; // type:object size:0x4 data:float +lbl_801D5708 = .sdata2:0x801D5708; // type:object size:0x4 data:float +lbl_801D570C = .sdata2:0x801D570C; // type:object size:0x4 data:float +lbl_801D5710 = .sdata2:0x801D5710; // type:object size:0x4 data:float +lbl_801D5714 = .sdata2:0x801D5714; // type:object size:0x4 data:float +lbl_801D5718 = .sdata2:0x801D5718; // type:object size:0x4 data:float +lbl_801D5720 = .sdata2:0x801D5720; // type:object size:0x8 data:double +lbl_801D5728 = .sdata2:0x801D5728; // type:object size:0x4 data:float +lbl_801D572C = .sdata2:0x801D572C; // type:object size:0x4 data:float +lbl_801D5730 = .sdata2:0x801D5730; // type:object size:0x4 data:float +lbl_801D5734 = .sdata2:0x801D5734; // type:object size:0x4 data:float +lbl_801D5738 = .sdata2:0x801D5738; // type:object size:0x4 data:float +lbl_801D573C = .sdata2:0x801D573C; // type:object size:0x4 data:float +lbl_801D5740 = .sdata2:0x801D5740; // type:object size:0x4 data:float +lbl_801D5744 = .sdata2:0x801D5744; // type:object size:0x4 data:float +lbl_801D5748 = .sdata2:0x801D5748; // type:object size:0x4 data:float +lbl_801D574C = .sdata2:0x801D574C; // type:object size:0x4 data:float +lbl_801D5750 = .sdata2:0x801D5750; // type:object size:0x4 data:float +lbl_801D5754 = .sdata2:0x801D5754; // type:object size:0x4 data:float +lbl_801D5758 = .sdata2:0x801D5758; // type:object size:0x4 data:float +lbl_801D575C = .sdata2:0x801D575C; // type:object size:0x4 data:float +lbl_801D5760 = .sdata2:0x801D5760; // type:object size:0x8 data:float +lbl_801D5768 = .sdata2:0x801D5768; // type:object size:0x4 data:float +lbl_801D576C = .sdata2:0x801D576C; // type:object size:0x4 data:float +lbl_801D5770 = .sdata2:0x801D5770; // type:object size:0x4 data:float +lbl_801D5774 = .sdata2:0x801D5774; // type:object size:0x4 data:float +lbl_801D5778 = .sdata2:0x801D5778; // type:object size:0x4 data:float +lbl_801D577C = .sdata2:0x801D577C; // type:object size:0x4 data:float +lbl_801D5780 = .sdata2:0x801D5780; // type:object size:0x4 data:float +lbl_801D5784 = .sdata2:0x801D5784; // type:object size:0x4 data:float +lbl_801D5788 = .sdata2:0x801D5788; // type:object size:0x4 data:float +lbl_801D578C = .sdata2:0x801D578C; // type:object size:0x4 data:float +lbl_801D5790 = .sdata2:0x801D5790; // type:object size:0x4 data:float +lbl_801D5794 = .sdata2:0x801D5794; // type:object size:0x4 data:float +lbl_801D5798 = .sdata2:0x801D5798; // type:object size:0x8 data:double +lbl_801D57A0 = .sdata2:0x801D57A0; // type:object size:0x8 data:double +lbl_801D57A8 = .sdata2:0x801D57A8; // type:object size:0x8 data:double +lbl_801D57B0 = .sdata2:0x801D57B0; // type:object size:0x4 data:float +lbl_801D57B4 = .sdata2:0x801D57B4; // type:object size:0x4 data:float +lbl_801D57B8 = .sdata2:0x801D57B8; // type:object size:0x4 data:float +lbl_801D57BC = .sdata2:0x801D57BC; // type:object size:0x4 data:float +lbl_801D57C0 = .sdata2:0x801D57C0; // type:object size:0x4 data:float +lbl_801D57C4 = .sdata2:0x801D57C4; // type:object size:0x4 data:float +lbl_801D57C8 = .sdata2:0x801D57C8; // type:object size:0x4 data:float +lbl_801D57D0 = .sdata2:0x801D57D0; // type:object size:0x8 data:double +lbl_801D57D8 = .sdata2:0x801D57D8; // type:object size:0x8 data:double +lbl_801D57E0 = .sdata2:0x801D57E0; // type:object size:0x8 data:double +lbl_801D57E8 = .sdata2:0x801D57E8; // type:object size:0x4 data:float +lbl_801D57EC = .sdata2:0x801D57EC; // type:object size:0x4 data:float +lbl_801D57F0 = .sdata2:0x801D57F0; // type:object size:0x4 data:float +lbl_801D57F4 = .sdata2:0x801D57F4; // type:object size:0x4 data:float +lbl_801D57F8 = .sdata2:0x801D57F8; // type:object size:0x4 data:float +lbl_801D57FC = .sdata2:0x801D57FC; // type:object size:0x4 data:float +lbl_801D5800 = .sdata2:0x801D5800; // type:object size:0x4 data:float +lbl_801D5804 = .sdata2:0x801D5804; // type:object size:0x4 data:float +lbl_801D5808 = .sdata2:0x801D5808; // type:object size:0x4 data:float +lbl_801D580C = .sdata2:0x801D580C; // type:object size:0x4 data:float +lbl_801D5810 = .sdata2:0x801D5810; // type:object size:0x8 data:double +lbl_801D5818 = .sdata2:0x801D5818; // type:object size:0x4 data:float +lbl_801D581C = .sdata2:0x801D581C; // type:object size:0x4 data:float +lbl_801D5820 = .sdata2:0x801D5820; // type:object size:0x4 data:float +lbl_801D5824 = .sdata2:0x801D5824; // type:object size:0x4 data:float +lbl_801D5828 = .sdata2:0x801D5828; // type:object size:0x4 data:float +lbl_801D582C = .sdata2:0x801D582C; // type:object size:0x4 data:float +lbl_801D5830 = .sdata2:0x801D5830; // type:object size:0x4 data:float +lbl_801D5834 = .sdata2:0x801D5834; // type:object size:0x4 data:float +lbl_801D5838 = .sdata2:0x801D5838; // type:object size:0x4 data:float +lbl_801D583C = .sdata2:0x801D583C; // type:object size:0x4 data:float +lbl_801D5840 = .sdata2:0x801D5840; // type:object size:0x4 data:float +lbl_801D5844 = .sdata2:0x801D5844; // type:object size:0x4 data:float +lbl_801D5848 = .sdata2:0x801D5848; // type:object size:0x4 data:float +lbl_801D584C = .sdata2:0x801D584C; // type:object size:0x4 data:float +lbl_801D5850 = .sdata2:0x801D5850; // type:object size:0x4 data:float +lbl_801D5854 = .sdata2:0x801D5854; // type:object size:0x4 data:float +lbl_801D5858 = .sdata2:0x801D5858; // type:object size:0x4 data:float +lbl_801D585C = .sdata2:0x801D585C; // type:object size:0x4 data:float +lbl_801D5860 = .sdata2:0x801D5860; // type:object size:0x4 data:float +lbl_801D5864 = .sdata2:0x801D5864; // type:object size:0x4 data:float +lbl_801D5868 = .sdata2:0x801D5868; // type:object size:0x4 data:float +lbl_801D586C = .sdata2:0x801D586C; // type:object size:0x4 data:float +lbl_801D5870 = .sdata2:0x801D5870; // type:object size:0x4 data:float +lbl_801D5874 = .sdata2:0x801D5874; // type:object size:0x4 data:float +lbl_801D5878 = .sdata2:0x801D5878; // type:object size:0x8 data:double +lbl_801D5880 = .sdata2:0x801D5880; // type:object size:0x8 data:double +lbl_801D5888 = .sdata2:0x801D5888; // type:object size:0x4 data:float +lbl_801D588C = .sdata2:0x801D588C; // type:object size:0x4 data:float +lbl_801D5890 = .sdata2:0x801D5890; // type:object size:0x4 data:float +lbl_801D5894 = .sdata2:0x801D5894; // type:object size:0x4 data:float +lbl_801D5898 = .sdata2:0x801D5898; // type:object size:0x4 data:float +lbl_801D58A0 = .sdata2:0x801D58A0; // type:object size:0x8 data:double +lbl_801D58A8 = .sdata2:0x801D58A8; // type:object size:0x4 data:float +lbl_801D58AC = .sdata2:0x801D58AC; // type:object size:0x4 data:float +lbl_801D58B0 = .sdata2:0x801D58B0; // type:object size:0x4 data:float +lbl_801D58B4 = .sdata2:0x801D58B4; // type:object size:0x4 data:float +lbl_801D58B8 = .sdata2:0x801D58B8; // type:object size:0x4 data:float +lbl_801D58BC = .sdata2:0x801D58BC; // type:object size:0x4 data:float +lbl_801D58C0 = .sdata2:0x801D58C0; // type:object size:0x4 data:float +lbl_801D58C4 = .sdata2:0x801D58C4; // type:object size:0x4 data:float +lbl_801D58C8 = .sdata2:0x801D58C8; // type:object size:0x4 data:float +lbl_801D58CC = .sdata2:0x801D58CC; // type:object size:0x4 data:float +lbl_801D58D0 = .sdata2:0x801D58D0; // type:object size:0x4 data:float +lbl_801D58D8 = .sdata2:0x801D58D8; // type:object size:0x8 data:double +lbl_801D58E0 = .sdata2:0x801D58E0; // type:object size:0x4 data:float +lbl_801D58E4 = .sdata2:0x801D58E4; // type:object size:0x4 data:float +lbl_801D58E8 = .sdata2:0x801D58E8; // type:object size:0x4 data:float +lbl_801D58EC = .sdata2:0x801D58EC; // type:object size:0x4 data:float +lbl_801D58F0 = .sdata2:0x801D58F0; // type:object size:0x4 data:float +lbl_801D58F4 = .sdata2:0x801D58F4; // type:object size:0x4 data:float +lbl_801D58F8 = .sdata2:0x801D58F8; // type:object size:0x4 data:float +lbl_801D58FC = .sdata2:0x801D58FC; // type:object size:0x4 data:float +lbl_801D5900 = .sdata2:0x801D5900; // type:object size:0x4 data:float +lbl_801D5904 = .sdata2:0x801D5904; // type:object size:0x4 data:float +lbl_801D5908 = .sdata2:0x801D5908; // type:object size:0x4 data:float +lbl_801D590C = .sdata2:0x801D590C; // type:object size:0x4 data:float +lbl_801D5910 = .sdata2:0x801D5910; // type:object size:0x4 data:float +lbl_801D5914 = .sdata2:0x801D5914; // type:object size:0x4 data:float +lbl_801D5918 = .sdata2:0x801D5918; // type:object size:0x4 data:float +lbl_801D591C = .sdata2:0x801D591C; // type:object size:0x4 data:float +lbl_801D5920 = .sdata2:0x801D5920; // type:object size:0x4 data:float +lbl_801D5924 = .sdata2:0x801D5924; // type:object size:0x4 data:float +lbl_801D5928 = .sdata2:0x801D5928; // type:object size:0x4 data:float +lbl_801D5930 = .sdata2:0x801D5930; // type:object size:0x8 data:double +lbl_801D5938 = .sdata2:0x801D5938; // type:object size:0x4 data:float +lbl_801D5940 = .sdata2:0x801D5940; // type:object size:0x8 data:double +lbl_801D5948 = .sdata2:0x801D5948; // type:object size:0x4 data:float +lbl_801D594C = .sdata2:0x801D594C; // type:object size:0x4 data:float +lbl_801D5950 = .sdata2:0x801D5950; // type:object size:0x4 data:float +lbl_801D5954 = .sdata2:0x801D5954; // type:object size:0x4 data:float +lbl_801D5958 = .sdata2:0x801D5958; // type:object size:0x4 data:float +lbl_801D5960 = .sdata2:0x801D5960; // type:object size:0x8 data:double +lbl_801D5968 = .sdata2:0x801D5968; // type:object size:0x4 data:float +lbl_801D596C = .sdata2:0x801D596C; // type:object size:0x4 data:float +lbl_801D5970 = .sdata2:0x801D5970; // type:object size:0x4 data:float +lbl_801D5974 = .sdata2:0x801D5974; // type:object size:0x4 data:float +lbl_801D5978 = .sdata2:0x801D5978; // type:object size:0x4 data:float +lbl_801D597C = .sdata2:0x801D597C; // type:object size:0x4 data:float +lbl_801D5980 = .sdata2:0x801D5980; // type:object size:0x4 data:float +lbl_801D5984 = .sdata2:0x801D5984; // type:object size:0x4 data:float +lbl_801D5988 = .sdata2:0x801D5988; // type:object size:0x4 data:float +lbl_801D598C = .sdata2:0x801D598C; // type:object size:0x4 data:float +lbl_801D5990 = .sdata2:0x801D5990; // type:object size:0x4 data:float +lbl_801D5994 = .sdata2:0x801D5994; // type:object size:0x4 data:float +lbl_801D5998 = .sdata2:0x801D5998; // type:object size:0x1 data:byte +lbl_801D5999 = .sdata2:0x801D5999; // type:object size:0x1 data:byte +lbl_801D599A = .sdata2:0x801D599A; // type:object size:0x1 data:byte +lbl_801D599B = .sdata2:0x801D599B; // type:object size:0x1 data:byte +lbl_801D599C = .sdata2:0x801D599C; // type:object size:0x4 data:float +lbl_801D59A0 = .sdata2:0x801D59A0; // type:object size:0x4 data:float +lbl_801D59A4 = .sdata2:0x801D59A4; // type:object size:0x4 data:float +lbl_801D59A8 = .sdata2:0x801D59A8; // type:object size:0x4 data:float +lbl_801D59AC = .sdata2:0x801D59AC; // type:object size:0x4 data:float +lbl_801D59B0 = .sdata2:0x801D59B0; // type:object size:0x8 data:double +lbl_801D59B8 = .sdata2:0x801D59B8; // type:object size:0x8 data:double +lbl_801D59C0 = .sdata2:0x801D59C0; // type:object size:0x4 data:float +lbl_801D59C4 = .sdata2:0x801D59C4; // type:object size:0x4 data:float +lbl_801D59C8 = .sdata2:0x801D59C8; // type:object size:0x4 data:float +lbl_801D59CC = .sdata2:0x801D59CC; // type:object size:0x4 data:float +lbl_801D59D0 = .sdata2:0x801D59D0; // type:object size:0x4 data:float +lbl_801D59D4 = .sdata2:0x801D59D4; // type:object size:0x4 data:float +lbl_801D59D8 = .sdata2:0x801D59D8; // type:object size:0x8 data:double +lbl_801D59E0 = .sdata2:0x801D59E0; // type:object size:0x4 data:float +lbl_801D59E4 = .sdata2:0x801D59E4; // type:object size:0x4 data:float +lbl_801D59E8 = .sdata2:0x801D59E8; // type:object size:0x8 data:double +lbl_801D59F0 = .sdata2:0x801D59F0; // type:object size:0x8 data:float +lbl_801D59F8 = .sdata2:0x801D59F8; // type:object size:0x4 data:float +lbl_801D59FC = .sdata2:0x801D59FC; // type:object size:0x4 data:float +lbl_801D5A00 = .sdata2:0x801D5A00; // type:object size:0x4 data:float +lbl_801D5A04 = .sdata2:0x801D5A04; // type:object size:0x4 data:float +lbl_801D5A08 = .sdata2:0x801D5A08; // type:object size:0x4 data:float +lbl_801D5A0C = .sdata2:0x801D5A0C; // type:object size:0x4 data:float +lbl_801D5A10 = .sdata2:0x801D5A10; // type:object size:0x4 data:float +lbl_801D5A14 = .sdata2:0x801D5A14; // type:object size:0x4 data:float +lbl_801D5A18 = .sdata2:0x801D5A18; // type:object size:0x4 data:float +lbl_801D5A1C = .sdata2:0x801D5A1C; // type:object size:0x4 data:float +lbl_801D5A20 = .sdata2:0x801D5A20; // type:object size:0x2 data:2byte +lbl_801D5A22 = .sdata2:0x801D5A22; // type:object size:0x2 data:2byte +lbl_801D5A24 = .sdata2:0x801D5A24; // type:object size:0x2 data:2byte +lbl_801D5A28 = .sdata2:0x801D5A28; // type:object size:0x4 data:float +lbl_801D5A2C = .sdata2:0x801D5A2C; // type:object size:0x4 data:float +lbl_801D5A30 = .sdata2:0x801D5A30; // type:object size:0x4 data:float +lbl_801D5A34 = .sdata2:0x801D5A34; // type:object size:0x4 data:float +lbl_801D5A38 = .sdata2:0x801D5A38; // type:object size:0x4 data:float +lbl_801D5A3C = .sdata2:0x801D5A3C; // type:object size:0x4 data:float +lbl_801D5A40 = .sdata2:0x801D5A40; // type:object size:0x4 data:float +lbl_801D5A44 = .sdata2:0x801D5A44; // type:object size:0x4 data:float +lbl_801D5A48 = .sdata2:0x801D5A48; // type:object size:0x8 data:double +lbl_801D5A50 = .sdata2:0x801D5A50; // type:object size:0x8 data:double +lbl_801D5A58 = .sdata2:0x801D5A58; // type:object size:0x8 data:double +lbl_801D5A60 = .sdata2:0x801D5A60; // type:object size:0x4 data:float +lbl_801D5A64 = .sdata2:0x801D5A64; // type:object size:0x4 data:float +lbl_801D5A68 = .sdata2:0x801D5A68; // type:object size:0x4 data:float +lbl_801D5A6C = .sdata2:0x801D5A6C; // type:object size:0x4 data:float +lbl_801D5A70 = .sdata2:0x801D5A70; // type:object size:0x4 data:float +lbl_801D5A74 = .sdata2:0x801D5A74; // type:object size:0x4 data:float +lbl_801D5A78 = .sdata2:0x801D5A78; // type:object size:0x4 data:float +lbl_801D5A7C = .sdata2:0x801D5A7C; // type:object size:0x4 data:float +lbl_801D5A80 = .sdata2:0x801D5A80; // type:object size:0x4 data:float +lbl_801D5A88 = .sdata2:0x801D5A88; // type:object size:0x8 data:double +lbl_801D5A90 = .sdata2:0x801D5A90; // type:object size:0x1 data:byte +lbl_801D5A91 = .sdata2:0x801D5A91; // type:object size:0x1 data:byte +lbl_801D5A92 = .sdata2:0x801D5A92; // type:object size:0x1 data:byte +lbl_801D5A94 = .sdata2:0x801D5A94; // type:object size:0x4 data:float +lbl_801D5A98 = .sdata2:0x801D5A98; // type:object size:0x8 data:double +lbl_801D5AA0 = .sdata2:0x801D5AA0; // type:object size:0x8 data:float +lbl_801D5AA8 = .sdata2:0x801D5AA8; // type:object size:0x8 +lbl_801D5AB0 = .sdata2:0x801D5AB0; // type:object size:0x4 data:float +lbl_801D5AB4 = .sdata2:0x801D5AB4; // type:object size:0x4 data:float +lbl_801D5AB8 = .sdata2:0x801D5AB8; // type:object size:0x4 data:float +lbl_801D5ABC = .sdata2:0x801D5ABC; // type:object size:0x4 data:float +lbl_801D5AC0 = .sdata2:0x801D5AC0; // type:object size:0x4 data:float +lbl_801D5AC4 = .sdata2:0x801D5AC4; // type:object size:0x4 data:float +lbl_801D5AC8 = .sdata2:0x801D5AC8; // type:object size:0x4 data:float +lbl_801D5ACC = .sdata2:0x801D5ACC; // type:object size:0x4 data:float +lbl_801D5AD0 = .sdata2:0x801D5AD0; // type:object size:0x4 data:float +lbl_801D5AD4 = .sdata2:0x801D5AD4; // type:object size:0x4 data:float +lbl_801D5AD8 = .sdata2:0x801D5AD8; // type:object size:0x4 data:float +lbl_801D5ADC = .sdata2:0x801D5ADC; // type:object size:0x4 data:float +lbl_801D5AE0 = .sdata2:0x801D5AE0; // type:object size:0x4 data:float +lbl_801D5AE4 = .sdata2:0x801D5AE4; // type:object size:0x4 data:float +lbl_801D5AE8 = .sdata2:0x801D5AE8; // type:object size:0x4 data:float +lbl_801D5AEC = .sdata2:0x801D5AEC; // type:object size:0x4 data:float +lbl_801D5AF0 = .sdata2:0x801D5AF0; // type:object size:0x4 data:float +lbl_801D5AF4 = .sdata2:0x801D5AF4; // type:object size:0x4 data:float +lbl_801D5AF8 = .sdata2:0x801D5AF8; // type:object size:0x4 data:float +lbl_801D5AFC = .sdata2:0x801D5AFC; // type:object size:0x4 data:float +lbl_801D5B00 = .sdata2:0x801D5B00; // type:object size:0x4 data:float +lbl_801D5B08 = .sdata2:0x801D5B08; // type:object size:0x8 data:double +lbl_801D5B10 = .sdata2:0x801D5B10; // type:object size:0x8 data:double +lbl_801D5B18 = .sdata2:0x801D5B18; // type:object size:0x4 data:float +lbl_801D5B1C = .sdata2:0x801D5B1C; // type:object size:0x4 data:float +lbl_801D5B20 = .sdata2:0x801D5B20; // type:object size:0x4 data:float +lbl_801D5B24 = .sdata2:0x801D5B24; // type:object size:0x4 data:float +lbl_801D5B28 = .sdata2:0x801D5B28; // type:object size:0x4 data:float +lbl_801D5B2C = .sdata2:0x801D5B2C; // type:object size:0x4 data:float +lbl_801D5B30 = .sdata2:0x801D5B30; // type:object size:0x4 data:float +lbl_801D5B34 = .sdata2:0x801D5B34; // type:object size:0x4 data:float +lbl_801D5B38 = .sdata2:0x801D5B38; // type:object size:0x8 data:double +lbl_801D5B40 = .sdata2:0x801D5B40; // type:object size:0x4 data:float +lbl_801D5B48 = .sdata2:0x801D5B48; // type:object size:0x8 data:double +lbl_801D5B50 = .sdata2:0x801D5B50; // type:object size:0x4 data:float +lbl_801D5B54 = .sdata2:0x801D5B54; // type:object size:0x4 data:float +lbl_801D5B58 = .sdata2:0x801D5B58; // type:object size:0x1 data:byte +lbl_801D5B59 = .sdata2:0x801D5B59; // type:object size:0x1 data:byte +lbl_801D5B5A = .sdata2:0x801D5B5A; // type:object size:0x1 data:byte +lbl_801D5B5B = .sdata2:0x801D5B5B; // type:object size:0x1 data:byte +lbl_801D5B5C = .sdata2:0x801D5B5C; // type:object size:0x1 data:byte +lbl_801D5B60 = .sdata2:0x801D5B60; // type:object size:0x4 data:float +lbl_801D5B64 = .sdata2:0x801D5B64; // type:object size:0x4 data:float +lbl_801D5B68 = .sdata2:0x801D5B68; // type:object size:0x4 data:float +lbl_801D5B6C = .sdata2:0x801D5B6C; // type:object size:0x4 data:float +lbl_801D5B70 = .sdata2:0x801D5B70; // type:object size:0x4 data:float +lbl_801D5B74 = .sdata2:0x801D5B74; // type:object size:0x4 data:float +lbl_801D5B78 = .sdata2:0x801D5B78; // type:object size:0x4 data:float +lbl_801D5B7C = .sdata2:0x801D5B7C; // type:object size:0x4 data:float +lbl_801D5B80 = .sdata2:0x801D5B80; // type:object size:0x4 data:float +lbl_801D5B84 = .sdata2:0x801D5B84; // type:object size:0x4 data:float +lbl_801D5B88 = .sdata2:0x801D5B88; // type:object size:0x4 data:float +lbl_801D5B8C = .sdata2:0x801D5B8C; // type:object size:0x4 data:float +lbl_801D5B90 = .sdata2:0x801D5B90; // type:object size:0x4 data:float +lbl_801D5B94 = .sdata2:0x801D5B94; // type:object size:0x4 data:float +lbl_801D5B98 = .sdata2:0x801D5B98; // type:object size:0x8 data:double +lbl_801D5BA0 = .sdata2:0x801D5BA0; // type:object size:0x8 data:double +lbl_801D5BA8 = .sdata2:0x801D5BA8; // type:object size:0x4 data:float +lbl_801D5BB0 = .sdata2:0x801D5BB0; // type:object size:0x8 data:double +lbl_801D5BB8 = .sdata2:0x801D5BB8; // type:object size:0x8 data:double +lbl_801D5BC0 = .sdata2:0x801D5BC0; // type:object size:0x8 data:double +lbl_801D5BC8 = .sdata2:0x801D5BC8; // type:object size:0x8 data:double +lbl_801D5BD0 = .sdata2:0x801D5BD0; // type:object size:0x4 data:float +lbl_801D5BD8 = .sdata2:0x801D5BD8; // type:object size:0x8 data:double +lbl_801D5BE0 = .sdata2:0x801D5BE0; // type:object size:0x4 data:float +lbl_801D5BE4 = .sdata2:0x801D5BE4; // type:object size:0x4 data:float +lbl_801D5BE8 = .sdata2:0x801D5BE8; // type:object size:0x4 data:float +lbl_801D5BF0 = .sdata2:0x801D5BF0; // type:object size:0x8 data:double +lbl_801D5BF8 = .sdata2:0x801D5BF8; // type:object size:0x8 data:double +lbl_801D5C00 = .sdata2:0x801D5C00; // type:object size:0x4 data:float +lbl_801D5C08 = .sdata2:0x801D5C08; // type:object size:0x8 data:double +lbl_801D5C10 = .sdata2:0x801D5C10; // type:object size:0x4 data:float +lbl_801D5C14 = .sdata2:0x801D5C14; // type:object size:0x4 data:float +lbl_801D5C18 = .sdata2:0x801D5C18; // type:object size:0x4 data:float +lbl_801D5C1C = .sdata2:0x801D5C1C; // type:object size:0x4 data:float +lbl_801D5C20 = .sdata2:0x801D5C20; // type:object size:0x8 data:double +lbl_801D5C28 = .sdata2:0x801D5C28; // type:object size:0x8 data:double +lbl_801D5C30 = .sdata2:0x801D5C30; // type:object size:0x4 data:float +lbl_801D5C34 = .sdata2:0x801D5C34; // type:object size:0x4 data:float +lbl_801D5C38 = .sdata2:0x801D5C38; // type:object size:0x4 data:float +lbl_801D5C40 = .sdata2:0x801D5C40; // type:object size:0x8 data:double +lbl_801D5C48 = .sdata2:0x801D5C48; // type:object size:0x4 data:float +lbl_801D5C4C = .sdata2:0x801D5C4C; // type:object size:0x4 data:float +lbl_801D5C50 = .sdata2:0x801D5C50; // type:object size:0x4 data:float +lbl_801D5C54 = .sdata2:0x801D5C54; // type:object size:0x4 data:float +lbl_801D5C58 = .sdata2:0x801D5C58; // type:object size:0x8 data:double +lbl_801D5C60 = .sdata2:0x801D5C60; // type:object size:0x4 data:float +lbl_801D5C64 = .sdata2:0x801D5C64; // type:object size:0x4 data:float +lbl_801D5C68 = .sdata2:0x801D5C68; // type:object size:0x4 data:float +lbl_801D5C6C = .sdata2:0x801D5C6C; // type:object size:0x4 data:float +lbl_801D5C70 = .sdata2:0x801D5C70; // type:object size:0x4 data:float +lbl_801D5C74 = .sdata2:0x801D5C74; // type:object size:0x4 data:float +lbl_801D5C78 = .sdata2:0x801D5C78; // type:object size:0x4 data:float +lbl_801D5C7C = .sdata2:0x801D5C7C; // type:object size:0x4 data:float +lbl_801D5C80 = .sdata2:0x801D5C80; // type:object size:0x4 data:float +lbl_801D5C84 = .sdata2:0x801D5C84; // type:object size:0x4 data:float +lbl_801D5C88 = .sdata2:0x801D5C88; // type:object size:0x4 data:float +lbl_801D5C8C = .sdata2:0x801D5C8C; // type:object size:0x1 data:byte +lbl_801D5C8D = .sdata2:0x801D5C8D; // type:object size:0x1 data:byte +lbl_801D5C90 = .sdata2:0x801D5C90; // type:object size:0x4 data:float +lbl_801D5C98 = .sdata2:0x801D5C98; // type:object size:0x8 data:double +lbl_801D5CA0 = .sdata2:0x801D5CA0; // type:object size:0x8 data:double +lbl_801D5CA8 = .sdata2:0x801D5CA8; // type:object size:0x8 data:double +lbl_801D5CB0 = .sdata2:0x801D5CB0; // type:object size:0x8 data:double +lbl_801D5CB8 = .sdata2:0x801D5CB8; // type:object size:0x4 data:float +lbl_801D5CBC = .sdata2:0x801D5CBC; // type:object size:0x4 data:float +lbl_801D5CC0 = .sdata2:0x801D5CC0; // type:object size:0x8 data:double +lbl_801D5CC8 = .sdata2:0x801D5CC8; // type:object size:0x4 data:float +lbl_801D5CCC = .sdata2:0x801D5CCC; // type:object size:0x4 data:float +lbl_801D5CD0 = .sdata2:0x801D5CD0; // type:object size:0x8 data:double +lbl_801D5CD8 = .sdata2:0x801D5CD8; // type:object size:0x4 data:float +lbl_801D5CDC = .sdata2:0x801D5CDC; // type:object size:0x2 data:2byte +lbl_801D5CDE = .sdata2:0x801D5CDE; // type:object size:0x2 data:2byte +lbl_801D5CE0 = .sdata2:0x801D5CE0; // type:object size:0x2 data:2byte +lbl_801D5CE4 = .sdata2:0x801D5CE4; // type:object size:0x4 data:float +lbl_801D5CE8 = .sdata2:0x801D5CE8; // type:object size:0x4 data:float +lbl_801D5CEC = .sdata2:0x801D5CEC; // type:object size:0x4 data:float +lbl_801D5CF0 = .sdata2:0x801D5CF0; // type:object size:0x2 data:2byte +lbl_801D5CF2 = .sdata2:0x801D5CF2; // type:object size:0x2 data:2byte +lbl_801D5CF4 = .sdata2:0x801D5CF4; // type:object size:0x2 data:2byte +lbl_801D5CF8 = .sdata2:0x801D5CF8; // type:object size:0x4 data:float +lbl_801D5CFC = .sdata2:0x801D5CFC; // type:object size:0x4 data:float +lbl_801D5D00 = .sdata2:0x801D5D00; // type:object size:0x4 data:float +lbl_801D5D04 = .sdata2:0x801D5D04; // type:object size:0x4 data:float +lbl_801D5D08 = .sdata2:0x801D5D08; // type:object size:0x4 data:float +lbl_801D5D0C = .sdata2:0x801D5D0C; // type:object size:0x4 data:float +lbl_801D5D10 = .sdata2:0x801D5D10; // type:object size:0x4 data:float +lbl_801D5D18 = .sdata2:0x801D5D18; // type:object size:0x8 data:double +lbl_801D5D20 = .sdata2:0x801D5D20; // type:object size:0x4 data:float +lbl_801D5D24 = .sdata2:0x801D5D24; // type:object size:0x4 data:float +lbl_801D5D28 = .sdata2:0x801D5D28; // type:object size:0x4 data:float +lbl_801D5D2C = .sdata2:0x801D5D2C; // type:object size:0x4 data:float +lbl_801D5D30 = .sdata2:0x801D5D30; // type:object size:0x4 data:float +lbl_801D5D34 = .sdata2:0x801D5D34; // type:object size:0x4 data:float +lbl_801D5D38 = .sdata2:0x801D5D38; // type:object size:0x4 data:float +lbl_801D5D40 = .sdata2:0x801D5D40; // type:object size:0x8 data:double +lbl_801D5D48 = .sdata2:0x801D5D48; // type:object size:0x8 data:double +lbl_801D5D50 = .sdata2:0x801D5D50; // type:object size:0x8 data:double +lbl_801D5D58 = .sdata2:0x801D5D58; // type:object size:0x4 data:float +lbl_801D5D5C = .sdata2:0x801D5D5C; // type:object size:0x4 data:float +lbl_801D5D60 = .sdata2:0x801D5D60; // type:object size:0x4 data:float +lbl_801D5D64 = .sdata2:0x801D5D64; // type:object size:0x4 data:float +lbl_801D5D68 = .sdata2:0x801D5D68; // type:object size:0x4 data:float +lbl_801D5D6C = .sdata2:0x801D5D6C; // type:object size:0x4 data:float +lbl_801D5D70 = .sdata2:0x801D5D70; // type:object size:0x4 data:float +lbl_801D5D74 = .sdata2:0x801D5D74; // type:object size:0x4 data:float +lbl_801D5D78 = .sdata2:0x801D5D78; // type:object size:0x4 data:float +lbl_801D5D7C = .sdata2:0x801D5D7C; // type:object size:0x4 data:float +lbl_801D5D80 = .sdata2:0x801D5D80; // type:object size:0x4 data:float +lbl_801D5D84 = .sdata2:0x801D5D84; // type:object size:0x4 data:float +lbl_801D5D88 = .sdata2:0x801D5D88; // type:object size:0x4 data:float +lbl_801D5D8C = .sdata2:0x801D5D8C; // type:object size:0x4 data:float +lbl_801D5D90 = .sdata2:0x801D5D90; // type:object size:0x4 data:float +lbl_801D5D94 = .sdata2:0x801D5D94; // type:object size:0x4 data:float +lbl_801D5D98 = .sdata2:0x801D5D98; // type:object size:0x4 data:float +lbl_801D5D9C = .sdata2:0x801D5D9C; // type:object size:0x4 data:float +lbl_801D5DA0 = .sdata2:0x801D5DA0; // type:object size:0x4 data:float +lbl_801D5DA4 = .sdata2:0x801D5DA4; // type:object size:0x4 data:float +lbl_801D5DA8 = .sdata2:0x801D5DA8; // type:object size:0x8 data:double +lbl_801D5DB0 = .sdata2:0x801D5DB0; // type:object size:0x8 data:double +lbl_801D5DB8 = .sdata2:0x801D5DB8; // type:object size:0x4 data:float +lbl_801D5DC0 = .sdata2:0x801D5DC0; // type:object size:0x8 data:double +lbl_801D5DC8 = .sdata2:0x801D5DC8; // type:object size:0x8 data:double +lbl_801D5DD0 = .sdata2:0x801D5DD0; // type:object size:0x4 data:float +lbl_801D5DD4 = .sdata2:0x801D5DD4; // type:object size:0x4 data:float +lbl_801D5DD8 = .sdata2:0x801D5DD8; // type:object size:0x4 data:float +lbl_801D5DDC = .sdata2:0x801D5DDC; // type:object size:0x4 data:float +lbl_801D5DE0 = .sdata2:0x801D5DE0; // type:object size:0x4 data:float +lbl_801D5DE4 = .sdata2:0x801D5DE4; // type:object size:0x4 data:float +lbl_801D5DE8 = .sdata2:0x801D5DE8; // type:object size:0x4 data:float +lbl_801D5DEC = .sdata2:0x801D5DEC; // type:object size:0x4 data:float +lbl_801D5DF0 = .sdata2:0x801D5DF0; // type:object size:0x4 data:float +lbl_801D5DF4 = .sdata2:0x801D5DF4; // type:object size:0x4 data:float +lbl_801D5DF8 = .sdata2:0x801D5DF8; // type:object size:0x4 data:float +lbl_801D5DFC = .sdata2:0x801D5DFC; // type:object size:0x4 data:float +lbl_801D5E00 = .sdata2:0x801D5E00; // type:object size:0x4 data:float +lbl_801D5E04 = .sdata2:0x801D5E04; // type:object size:0x4 data:float +lbl_801D5E08 = .sdata2:0x801D5E08; // type:object size:0x4 data:float +lbl_801D5E0C = .sdata2:0x801D5E0C; // type:object size:0x4 data:float +lbl_801D5E10 = .sdata2:0x801D5E10; // type:object size:0x4 data:float +lbl_801D5E14 = .sdata2:0x801D5E14; // type:object size:0x4 data:float +lbl_801D5E18 = .sdata2:0x801D5E18; // type:object size:0x4 data:float +lbl_801D5E20 = .sdata2:0x801D5E20; // type:object size:0x8 data:double +lbl_801D5E28 = .sdata2:0x801D5E28; // type:object size:0x8 data:double +lbl_801D5E30 = .sdata2:0x801D5E30; // type:object size:0x8 data:double +lbl_801D5E38 = .sdata2:0x801D5E38; // type:object size:0x8 data:double +lbl_801D5E40 = .sdata2:0x801D5E40; // type:object size:0x4 data:float +lbl_801D5E44 = .sdata2:0x801D5E44; // type:object size:0x4 data:float +lbl_801D5E48 = .sdata2:0x801D5E48; // type:object size:0x4 data:float +lbl_801D5E4C = .sdata2:0x801D5E4C; // type:object size:0x4 data:float +lbl_801D5E50 = .sdata2:0x801D5E50; // type:object size:0x4 data:float +lbl_801D5E54 = .sdata2:0x801D5E54; // type:object size:0x4 data:float +lbl_801D5E58 = .sdata2:0x801D5E58; // type:object size:0x4 data:float +lbl_801D5E5C = .sdata2:0x801D5E5C; // type:object size:0x4 data:float +lbl_801D5E60 = .sdata2:0x801D5E60; // type:object size:0x4 data:float +lbl_801D5E64 = .sdata2:0x801D5E64; // type:object size:0x4 data:float +lbl_801D5E68 = .sdata2:0x801D5E68; // type:object size:0x4 data:float +lbl_801D5E6C = .sdata2:0x801D5E6C; // type:object size:0x4 data:float +lbl_801D5E70 = .sdata2:0x801D5E70; // type:object size:0x4 data:float +lbl_801D5E74 = .sdata2:0x801D5E74; // type:object size:0x4 data:float +lbl_801D5E78 = .sdata2:0x801D5E78; // type:object size:0x4 data:float +lbl_801D5E7C = .sdata2:0x801D5E7C; // type:object size:0x4 data:float +lbl_801D5E80 = .sdata2:0x801D5E80; // type:object size:0x4 data:float +lbl_801D5E84 = .sdata2:0x801D5E84; // type:object size:0x4 data:float +lbl_801D5E88 = .sdata2:0x801D5E88; // type:object size:0x4 data:float +lbl_801D5E8C = .sdata2:0x801D5E8C; // type:object size:0x4 data:float +lbl_801D5E90 = .sdata2:0x801D5E90; // type:object size:0x4 data:float +lbl_801D5E94 = .sdata2:0x801D5E94; // type:object size:0x4 data:float +lbl_801D5E98 = .sdata2:0x801D5E98; // type:object size:0x8 data:double +lbl_801D5EA0 = .sdata2:0x801D5EA0; // type:object size:0x8 data:double +lbl_801D5EA8 = .sdata2:0x801D5EA8; // type:object size:0x4 data:float +lbl_801D5EAC = .sdata2:0x801D5EAC; // type:object size:0x4 data:float +lbl_801D5EB0 = .sdata2:0x801D5EB0; // type:object size:0x8 data:double +lbl_801D5EB8 = .sdata2:0x801D5EB8; // type:object size:0x4 data:float +lbl_801D5EBC = .sdata2:0x801D5EBC; // type:object size:0x4 data:float +lbl_801D5EC0 = .sdata2:0x801D5EC0; // type:object size:0x4 data:float +lbl_801D5EC4 = .sdata2:0x801D5EC4; // type:object size:0x4 data:float +lbl_801D5EC8 = .sdata2:0x801D5EC8; // type:object size:0x4 data:float +lbl_801D5ECC = .sdata2:0x801D5ECC; // type:object size:0x4 data:float +lbl_801D5ED0 = .sdata2:0x801D5ED0; // type:object size:0x4 data:float +lbl_801D5ED4 = .sdata2:0x801D5ED4; // type:object size:0x4 data:float +lbl_801D5ED8 = .sdata2:0x801D5ED8; // type:object size:0x4 data:float +lbl_801D5EDC = .sdata2:0x801D5EDC; // type:object size:0x4 data:float +lbl_801D5EE0 = .sdata2:0x801D5EE0; // type:object size:0x4 data:float +lbl_801D5EE4 = .sdata2:0x801D5EE4; // type:object size:0x4 data:float +lbl_801D5EE8 = .sdata2:0x801D5EE8; // type:object size:0x4 data:float +lbl_801D5EEC = .sdata2:0x801D5EEC; // type:object size:0x4 data:float +lbl_801D5EF0 = .sdata2:0x801D5EF0; // type:object size:0x4 data:float +lbl_801D5EF4 = .sdata2:0x801D5EF4; // type:object size:0x4 data:float +lbl_801D5EF8 = .sdata2:0x801D5EF8; // type:object size:0x4 data:float +lbl_801D5EFC = .sdata2:0x801D5EFC; // type:object size:0x4 data:float +lbl_801D5F00 = .sdata2:0x801D5F00; // type:object size:0x4 data:float +lbl_801D5F04 = .sdata2:0x801D5F04; // type:object size:0x4 data:float +lbl_801D5F08 = .sdata2:0x801D5F08; // type:object size:0x4 data:float +lbl_801D5F10 = .sdata2:0x801D5F10; // type:object size:0x8 data:double +lbl_801D5F18 = .sdata2:0x801D5F18; // type:object size:0x8 data:double +lbl_801D5F20 = .sdata2:0x801D5F20; // type:object size:0x8 data:double +lbl_801D5F28 = .sdata2:0x801D5F28; // type:object size:0x8 data:double +lbl_801D5F30 = .sdata2:0x801D5F30; // type:object size:0x4 data:float +lbl_801D5F34 = .sdata2:0x801D5F34; // type:object size:0x4 data:float +lbl_801D5F38 = .sdata2:0x801D5F38; // type:object size:0x4 data:float +lbl_801D5F3C = .sdata2:0x801D5F3C; // type:object size:0x4 data:float +lbl_801D5F40 = .sdata2:0x801D5F40; // type:object size:0x4 data:float +lbl_801D5F44 = .sdata2:0x801D5F44; // type:object size:0x4 data:float +lbl_801D5F48 = .sdata2:0x801D5F48; // type:object size:0x4 data:float +lbl_801D5F4C = .sdata2:0x801D5F4C; // type:object size:0x4 data:float +lbl_801D5F50 = .sdata2:0x801D5F50; // type:object size:0x4 data:float +lbl_801D5F54 = .sdata2:0x801D5F54; // type:object size:0x1 data:byte +lbl_801D5F55 = .sdata2:0x801D5F55; // type:object size:0x1 data:byte +lbl_801D5F56 = .sdata2:0x801D5F56; // type:object size:0x1 data:byte +lbl_801D5F57 = .sdata2:0x801D5F57; // type:object size:0x1 data:byte +lbl_801D5F58 = .sdata2:0x801D5F58; // type:object size:0x8 data:float +lbl_801D5F60 = .sdata2:0x801D5F60; // type:object size:0x4 data:float +lbl_801D5F64 = .sdata2:0x801D5F64; // type:object size:0x4 data:float +lbl_801D5F68 = .sdata2:0x801D5F68; // type:object size:0x4 data:float +lbl_801D5F6C = .sdata2:0x801D5F6C; // type:object size:0x4 data:float +lbl_801D5F70 = .sdata2:0x801D5F70; // type:object size:0x4 data:float +lbl_801D5F74 = .sdata2:0x801D5F74; // type:object size:0x4 data:float +lbl_801D5F78 = .sdata2:0x801D5F78; // type:object size:0x4 data:float +lbl_801D5F7C = .sdata2:0x801D5F7C; // type:object size:0x4 data:float +lbl_801D5F80 = .sdata2:0x801D5F80; // type:object size:0x4 data:float +lbl_801D5F84 = .sdata2:0x801D5F84; // type:object size:0x4 data:float +lbl_801D5F88 = .sdata2:0x801D5F88; // type:object size:0x4 data:float +lbl_801D5F8C = .sdata2:0x801D5F8C; // type:object size:0x4 data:float +lbl_801D5F90 = .sdata2:0x801D5F90; // type:object size:0x4 data:float +lbl_801D5F94 = .sdata2:0x801D5F94; // type:object size:0x4 data:float +lbl_801D5F98 = .sdata2:0x801D5F98; // type:object size:0x4 data:float +lbl_801D5F9C = .sdata2:0x801D5F9C; // type:object size:0x4 data:float +lbl_801D5FA0 = .sdata2:0x801D5FA0; // type:object size:0x4 data:float +lbl_801D5FA4 = .sdata2:0x801D5FA4; // type:object size:0x4 data:float +lbl_801D5FA8 = .sdata2:0x801D5FA8; // type:object size:0x4 data:float +lbl_801D5FAC = .sdata2:0x801D5FAC; // type:object size:0x4 data:float +lbl_801D5FB0 = .sdata2:0x801D5FB0; // type:object size:0x4 data:float +lbl_801D5FB4 = .sdata2:0x801D5FB4; // type:object size:0x4 data:float +lbl_801D5FB8 = .sdata2:0x801D5FB8; // type:object size:0x4 data:float +lbl_801D5FBC = .sdata2:0x801D5FBC; // type:object size:0x4 data:float +lbl_801D5FC0 = .sdata2:0x801D5FC0; // type:object size:0x4 data:float +lbl_801D5FC4 = .sdata2:0x801D5FC4; // type:object size:0x4 data:float +lbl_801D5FC8 = .sdata2:0x801D5FC8; // type:object size:0x4 data:float +lbl_801D5FCC = .sdata2:0x801D5FCC; // type:object size:0x4 data:float +lbl_801D5FD0 = .sdata2:0x801D5FD0; // type:object size:0x4 data:float +lbl_801D5FD4 = .sdata2:0x801D5FD4; // type:object size:0x4 data:float +lbl_801D5FD8 = .sdata2:0x801D5FD8; // type:object size:0x4 data:float +lbl_801D5FDC = .sdata2:0x801D5FDC; // type:object size:0x4 data:float +lbl_801D5FE0 = .sdata2:0x801D5FE0; // type:object size:0x4 data:float +lbl_801D5FE4 = .sdata2:0x801D5FE4; // type:object size:0x4 data:float +lbl_801D5FE8 = .sdata2:0x801D5FE8; // type:object size:0x4 data:float +lbl_801D5FEC = .sdata2:0x801D5FEC; // type:object size:0x4 data:float +lbl_801D5FF0 = .sdata2:0x801D5FF0; // type:object size:0x4 data:float +lbl_801D5FF4 = .sdata2:0x801D5FF4; // type:object size:0x4 data:float +lbl_801D5FF8 = .sdata2:0x801D5FF8; // type:object size:0x4 data:float +lbl_801D5FFC = .sdata2:0x801D5FFC; // type:object size:0x4 data:float +lbl_801D6000 = .sdata2:0x801D6000; // type:object size:0x4 data:float +lbl_801D6004 = .sdata2:0x801D6004; // type:object size:0x4 data:float +lbl_801D6008 = .sdata2:0x801D6008; // type:object size:0x8 data:double +lbl_801D6010 = .sdata2:0x801D6010; // type:object size:0x8 data:float +lbl_801D6018 = .sdata2:0x801D6018; // type:object size:0x4 data:float +lbl_801D601C = .sdata2:0x801D601C; // type:object size:0x4 data:float +lbl_801D6020 = .sdata2:0x801D6020; // type:object size:0x4 data:float +lbl_801D6024 = .sdata2:0x801D6024; // type:object size:0x4 data:float +lbl_801D6028 = .sdata2:0x801D6028; // type:object size:0x8 data:float +lbl_801D6030 = .sdata2:0x801D6030; // type:object size:0x4 data:float +lbl_801D6034 = .sdata2:0x801D6034; // type:object size:0x4 data:float +lbl_801D6038 = .sdata2:0x801D6038; // type:object size:0x4 data:float +lbl_801D603C = .sdata2:0x801D603C; // type:object size:0x4 data:float +lbl_801D6040 = .sdata2:0x801D6040; // type:object size:0x4 data:float +lbl_801D6044 = .sdata2:0x801D6044; // type:object size:0x4 data:float +lbl_801D6048 = .sdata2:0x801D6048; // type:object size:0x4 data:float +lbl_801D604C = .sdata2:0x801D604C; // type:object size:0x4 data:float +lbl_801D6050 = .sdata2:0x801D6050; // type:object size:0x4 data:float +lbl_801D6054 = .sdata2:0x801D6054; // type:object size:0x4 data:float +lbl_801D6058 = .sdata2:0x801D6058; // type:object size:0x4 data:float +lbl_801D605C = .sdata2:0x801D605C; // type:object size:0x4 data:float +lbl_801D6060 = .sdata2:0x801D6060; // type:object size:0x8 data:double +lbl_801D6068 = .sdata2:0x801D6068; // type:object size:0x8 data:double +lbl_801D6070 = .sdata2:0x801D6070; // type:object size:0x4 data:float +lbl_801D6074 = .sdata2:0x801D6074; // type:object size:0x4 data:float +lbl_801D6078 = .sdata2:0x801D6078; // type:object size:0x4 data:float +lbl_801D607C = .sdata2:0x801D607C; // type:object size:0x4 data:float +lbl_801D6080 = .sdata2:0x801D6080; // type:object size:0x4 data:float +lbl_801D6084 = .sdata2:0x801D6084; // type:object size:0x4 data:float +lbl_801D6088 = .sdata2:0x801D6088; // type:object size:0x8 data:double +lbl_801D6090 = .sdata2:0x801D6090; // type:object size:0x8 data:double +lbl_801D6098 = .sdata2:0x801D6098; // type:object size:0x8 data:float +lbl_801D60A0 = .sdata2:0x801D60A0; // type:object size:0x4 data:float +lbl_801D60A8 = .sdata2:0x801D60A8; // type:object size:0x8 data:double +lbl_801D60B0 = .sdata2:0x801D60B0; // type:object size:0x4 data:4byte +lbl_801D60B4 = .sdata2:0x801D60B4; // type:object size:0x4 data:4byte +lbl_801D60B8 = .sdata2:0x801D60B8; // type:object size:0x4 data:4byte +lbl_801D60BC = .sdata2:0x801D60BC; // type:object size:0x4 data:float +lbl_801D60C0 = .sdata2:0x801D60C0; // type:object size:0x4 data:float +lbl_801D60C4 = .sdata2:0x801D60C4; // type:object size:0x4 data:float +lbl_801D60C8 = .sdata2:0x801D60C8; // type:object size:0x8 data:double +lbl_801D60D0 = .sdata2:0x801D60D0; // type:object size:0x8 data:float +lbl_801D60D8 = .sdata2:0x801D60D8; // type:object size:0x4 data:float +lbl_801D60DC = .sdata2:0x801D60DC; // type:object size:0x4 data:float +lbl_801D60E0 = .sdata2:0x801D60E0; // type:object size:0x4 data:float +lbl_801D60E4 = .sdata2:0x801D60E4; // type:object size:0x4 data:float +lbl_801D60E8 = .sdata2:0x801D60E8; // type:object size:0x4 data:float +lbl_801D60EC = .sdata2:0x801D60EC; // type:object size:0x4 data:float +lbl_801D60F0 = .sdata2:0x801D60F0; // type:object size:0x4 data:float +lbl_801D60F4 = .sdata2:0x801D60F4; // type:object size:0x4 data:float +lbl_801D60F8 = .sdata2:0x801D60F8; // type:object size:0x4 data:float +lbl_801D60FC = .sdata2:0x801D60FC; // type:object size:0x4 data:float +lbl_801D6100 = .sdata2:0x801D6100; // type:object size:0x4 data:float +lbl_801D6104 = .sdata2:0x801D6104; // type:object size:0x4 data:float +lbl_801D6108 = .sdata2:0x801D6108; // type:object size:0x4 data:float +lbl_801D6110 = .sdata2:0x801D6110; // type:object size:0x8 data:double +lbl_801D6118 = .sdata2:0x801D6118; // type:object size:0x8 data:double +lbl_801D6120 = .sdata2:0x801D6120; // type:object size:0x8 data:float +lbl_801D6128 = .sdata2:0x801D6128; // type:object size:0x4 data:float +lbl_801D6130 = .sdata2:0x801D6130; // type:object size:0x8 data:double +lbl_801D6138 = .sdata2:0x801D6138; // type:object size:0x4 data:float +lbl_801D613C = .sdata2:0x801D613C; // type:object size:0x4 data:float +lbl_801D6140 = .sdata2:0x801D6140; // type:object size:0x4 data:float +lbl_801D6144 = .sdata2:0x801D6144; // type:object size:0x4 data:float +lbl_801D6148 = .sdata2:0x801D6148; // type:object size:0x4 data:float +lbl_801D614C = .sdata2:0x801D614C; // type:object size:0x4 data:float +lbl_801D6150 = .sdata2:0x801D6150; // type:object size:0x4 data:float +lbl_801D6154 = .sdata2:0x801D6154; // type:object size:0x4 data:float +lbl_801D6158 = .sdata2:0x801D6158; // type:object size:0x4 data:float +lbl_801D6160 = .sdata2:0x801D6160; // type:object size:0x8 data:double +lbl_801D6168 = .sdata2:0x801D6168; // type:object size:0x4 data:float +lbl_801D616C = .sdata2:0x801D616C; // type:object size:0x4 data:float +lbl_801D6170 = .sdata2:0x801D6170; // type:object size:0x8 data:double +lbl_801D6178 = .sdata2:0x801D6178; // type:object size:0x4 data:float +lbl_801D6180 = .sdata2:0x801D6180; // type:object size:0x8 data:double +lbl_801D6188 = .sdata2:0x801D6188; // type:object size:0x4 data:float +lbl_801D6190 = .sdata2:0x801D6190; // type:object size:0x8 data:double +lbl_801D6198 = .sdata2:0x801D6198; // type:object size:0x4 data:float +lbl_801D619C = .sdata2:0x801D619C; // type:object size:0x4 data:float +lbl_801D61A0 = .sdata2:0x801D61A0; // type:object size:0x4 data:float +lbl_801D61A8 = .sdata2:0x801D61A8; // type:object size:0x8 data:double +lbl_801D61B0 = .sdata2:0x801D61B0; // type:object size:0x4 data:float +lbl_801D61B4 = .sdata2:0x801D61B4; // type:object size:0x4 data:float +lbl_801D61B8 = .sdata2:0x801D61B8; // type:object size:0x8 data:double +lbl_801D61C0 = .sdata2:0x801D61C0; // type:object size:0x4 data:float +lbl_801D61C4 = .sdata2:0x801D61C4; // type:object size:0x4 data:float +lbl_801D61C8 = .sdata2:0x801D61C8; // type:object size:0x4 data:float +lbl_801D61CC = .sdata2:0x801D61CC; // type:object size:0x4 data:float +lbl_801D61D0 = .sdata2:0x801D61D0; // type:object size:0x4 data:float +lbl_801D61D8 = .sdata2:0x801D61D8; // type:object size:0x8 data:double +lbl_801D61E0 = .sdata2:0x801D61E0; // type:object size:0x4 data:4byte +lbl_801D61E8 = .sdata2:0x801D61E8; // type:object size:0x8 data:double +lbl_801D61F0 = .sdata2:0x801D61F0; // type:object size:0x8 data:double +lbl_801D61F8 = .sdata2:0x801D61F8; // type:object size:0x8 data:double +lbl_801D6200 = .sdata2:0x801D6200; // type:object size:0x8 data:double +lbl_801D6208 = .sdata2:0x801D6208; // type:object size:0x8 data:double +lbl_801D6210 = .sdata2:0x801D6210; // type:object size:0x8 data:double +lbl_801D6218 = .sdata2:0x801D6218; // type:object size:0x8 data:double +lbl_801D6220 = .sdata2:0x801D6220; // type:object size:0x8 data:double +lbl_801D6228 = .sdata2:0x801D6228; // type:object size:0x8 data:double +lbl_801D6230 = .sdata2:0x801D6230; // type:object size:0x8 data:double +lbl_801D6238 = .sdata2:0x801D6238; // type:object size:0x8 data:double +lbl_801D6240 = .sdata2:0x801D6240; // type:object size:0x8 data:double +lbl_801D6248 = .sdata2:0x801D6248; // type:object size:0x8 data:double +lbl_801D6250 = .sdata2:0x801D6250; // type:object size:0x8 data:double +lbl_801D6258 = .sdata2:0x801D6258; // type:object size:0x8 data:double +lbl_801D6260 = .sdata2:0x801D6260; // type:object size:0x8 data:double +lbl_801D6268 = .sdata2:0x801D6268; // type:object size:0x8 data:double +lbl_801D6270 = .sdata2:0x801D6270; // type:object size:0x8 data:double +lbl_801D6278 = .sdata2:0x801D6278; // type:object size:0x8 data:double +lbl_801D6280 = .sdata2:0x801D6280; // type:object size:0x8 data:double +lbl_801D6288 = .sdata2:0x801D6288; // type:object size:0x8 data:double +lbl_801D6290 = .sdata2:0x801D6290; // type:object size:0x8 data:double +lbl_801D6298 = .sdata2:0x801D6298; // type:object size:0x8 data:double +lbl_801D62A0 = .sdata2:0x801D62A0; // type:object size:0x8 data:double +lbl_801D62A8 = .sdata2:0x801D62A8; // type:object size:0x8 data:double +lbl_801D62B0 = .sdata2:0x801D62B0; // type:object size:0x8 data:double +lbl_801D62B8 = .sdata2:0x801D62B8; // type:object size:0x8 data:double +lbl_801D62C0 = .sdata2:0x801D62C0; // type:object size:0x8 data:double +lbl_801D62C8 = .sdata2:0x801D62C8; // type:object size:0x8 data:double +lbl_801D62D0 = .sdata2:0x801D62D0; // type:object size:0x8 data:double +lbl_801D62D8 = .sdata2:0x801D62D8; // type:object size:0x8 data:double +lbl_801D62E0 = .sdata2:0x801D62E0; // type:object size:0x8 data:double +lbl_801D62E8 = .sdata2:0x801D62E8; // type:object size:0x8 data:double +lbl_801D62F0 = .sdata2:0x801D62F0; // type:object size:0x8 data:double +lbl_801D62F8 = .sdata2:0x801D62F8; // type:object size:0x8 data:double +lbl_801D6300 = .sdata2:0x801D6300; // type:object size:0x8 data:double +lbl_801D6308 = .sdata2:0x801D6308; // type:object size:0x8 data:double +lbl_801D6310 = .sdata2:0x801D6310; // type:object size:0x8 data:double +lbl_801D6318 = .sdata2:0x801D6318; // type:object size:0x8 data:double +lbl_801D6320 = .sdata2:0x801D6320; // type:object size:0x8 data:double +lbl_801D6328 = .sdata2:0x801D6328; // type:object size:0x8 data:double +lbl_801D6330 = .sdata2:0x801D6330; // type:object size:0x8 data:double +lbl_801D6338 = .sdata2:0x801D6338; // type:object size:0x8 data:double +lbl_801D6340 = .sdata2:0x801D6340; // type:object size:0x8 data:double +lbl_801D6348 = .sdata2:0x801D6348; // type:object size:0x8 data:double +lbl_801D6350 = .sdata2:0x801D6350; // type:object size:0x8 data:double +lbl_801D6358 = .sdata2:0x801D6358; // type:object size:0x8 data:double +lbl_801D6360 = .sdata2:0x801D6360; // type:object size:0x8 data:double +lbl_801D6368 = .sdata2:0x801D6368; // type:object size:0x8 data:double +lbl_801D6370 = .sdata2:0x801D6370; // type:object size:0x8 data:double +lbl_801D6378 = .sdata2:0x801D6378; // type:object size:0x8 data:double +lbl_801D6380 = .sdata2:0x801D6380; // type:object size:0x8 data:double +lbl_801D6388 = .sdata2:0x801D6388; // type:object size:0x8 data:double +lbl_801D6390 = .sdata2:0x801D6390; // type:object size:0x8 data:double +lbl_801D6398 = .sdata2:0x801D6398; // type:object size:0x8 data:double +lbl_801D63A0 = .sdata2:0x801D63A0; // type:object size:0x8 data:double +lbl_801D63A8 = .sdata2:0x801D63A8; // type:object size:0x8 data:double +lbl_801D63B0 = .sdata2:0x801D63B0; // type:object size:0x8 data:double +lbl_801D63B8 = .sdata2:0x801D63B8; // type:object size:0x8 data:double +lbl_801D63C0 = .sdata2:0x801D63C0; // type:object size:0x8 data:double +lbl_801D63C8 = .sdata2:0x801D63C8; // type:object size:0x8 data:double +lbl_801D63D0 = .sdata2:0x801D63D0; // type:object size:0x8 data:double +lbl_801D63D8 = .sdata2:0x801D63D8; // type:object size:0x8 data:double +lbl_801D63E0 = .sdata2:0x801D63E0; // type:object size:0x8 data:double +lbl_801D63E8 = .sdata2:0x801D63E8; // type:object size:0x8 data:double +lbl_801D63F0 = .sdata2:0x801D63F0; // type:object size:0x8 data:double +lbl_801D63F8 = .sdata2:0x801D63F8; // type:object size:0x8 data:double +lbl_801D6400 = .sdata2:0x801D6400; // type:object size:0x8 data:double +lbl_801D6408 = .sdata2:0x801D6408; // type:object size:0x8 data:double +lbl_801D6410 = .sdata2:0x801D6410; // type:object size:0x8 data:double +lbl_801D6418 = .sdata2:0x801D6418; // type:object size:0x8 data:double +lbl_801D6420 = .sdata2:0x801D6420; // type:object size:0x8 data:double +lbl_801D6428 = .sdata2:0x801D6428; // type:object size:0x8 data:double +lbl_801D6430 = .sdata2:0x801D6430; // type:object size:0x8 data:double +lbl_801D6438 = .sdata2:0x801D6438; // type:object size:0x8 data:double +lbl_801D6440 = .sdata2:0x801D6440; // type:object size:0x8 data:double +lbl_801D6448 = .sdata2:0x801D6448; // type:object size:0x8 data:double +lbl_801D6450 = .sdata2:0x801D6450; // type:object size:0x8 data:double +lbl_801D6458 = .sdata2:0x801D6458; // type:object size:0x8 data:double +lbl_801D6460 = .sdata2:0x801D6460; // type:object size:0x8 data:double +lbl_801D6468 = .sdata2:0x801D6468; // type:object size:0x8 data:double +lbl_801D6470 = .sdata2:0x801D6470; // type:object size:0x8 data:double +lbl_801D6478 = .sdata2:0x801D6478; // type:object size:0x8 data:double +lbl_801D6480 = .sdata2:0x801D6480; // type:object size:0x8 data:double +lbl_801D6488 = .sdata2:0x801D6488; // type:object size:0x8 data:double +lbl_801D6490 = .sdata2:0x801D6490; // type:object size:0x8 data:double +lbl_801D6498 = .sdata2:0x801D6498; // type:object size:0x8 data:double +lbl_801D64A0 = .sdata2:0x801D64A0; // type:object size:0x8 data:double +lbl_801D64A8 = .sdata2:0x801D64A8; // type:object size:0x8 data:double +lbl_801D64B0 = .sdata2:0x801D64B0; // type:object size:0x8 data:double +lbl_801D64B8 = .sdata2:0x801D64B8; // type:object size:0x8 data:double +lbl_801D64C0 = .sdata2:0x801D64C0; // type:object size:0x8 data:double +lbl_801D64C8 = .sdata2:0x801D64C8; // type:object size:0x8 data:double +lbl_801D64D0 = .sdata2:0x801D64D0; // type:object size:0x8 data:double +lbl_801D64D8 = .sdata2:0x801D64D8; // type:object size:0x8 data:double +lbl_801D64E0 = .sdata2:0x801D64E0; // type:object size:0x8 data:double +lbl_801D64E8 = .sdata2:0x801D64E8; // type:object size:0x8 data:double +lbl_801D64F0 = .sdata2:0x801D64F0; // type:object size:0x8 data:double +lbl_801D64F8 = .sdata2:0x801D64F8; // type:object size:0x8 data:double +lbl_801D6500 = .sdata2:0x801D6500; // type:object size:0x8 data:double +lbl_801D6508 = .sdata2:0x801D6508; // type:object size:0x8 data:double +lbl_801D6510 = .sdata2:0x801D6510; // type:object size:0x8 data:double +lbl_801D6518 = .sdata2:0x801D6518; // type:object size:0x8 data:double +lbl_801D6520 = .sdata2:0x801D6520; // type:object size:0x8 data:double +lbl_801D6528 = .sdata2:0x801D6528; // type:object size:0x8 data:double +lbl_801D6530 = .sdata2:0x801D6530; // type:object size:0x8 data:double +lbl_801D6538 = .sdata2:0x801D6538; // type:object size:0x8 data:double +lbl_801D6540 = .sdata2:0x801D6540; // type:object size:0x8 data:double +lbl_801D6548 = .sdata2:0x801D6548; // type:object size:0x8 data:double +lbl_801D6550 = .sdata2:0x801D6550; // type:object size:0x8 data:double +lbl_801D6558 = .sdata2:0x801D6558; // type:object size:0x8 data:double +lbl_801D6560 = .sdata2:0x801D6560; // type:object size:0x8 data:double +lbl_801D6568 = .sdata2:0x801D6568; // type:object size:0x8 data:double +lbl_801D6570 = .sdata2:0x801D6570; // type:object size:0x8 data:double +lbl_801D6578 = .sdata2:0x801D6578; // type:object size:0x8 data:double +lbl_801D6580 = .sdata2:0x801D6580; // type:object size:0x8 data:double +lbl_801D6588 = .sdata2:0x801D6588; // type:object size:0x8 data:double +lbl_801D6590 = .sdata2:0x801D6590; // type:object size:0x8 data:double +lbl_801D6598 = .sdata2:0x801D6598; // type:object size:0x8 data:double +lbl_801D65A0 = .sdata2:0x801D65A0; // type:object size:0x8 data:double +lbl_801D65A8 = .sdata2:0x801D65A8; // type:object size:0x8 data:double +lbl_801D65B0 = .sdata2:0x801D65B0; // type:object size:0x8 data:double +lbl_801D65B8 = .sdata2:0x801D65B8; // type:object size:0x8 data:double +lbl_801D65C0 = .sdata2:0x801D65C0; // type:object size:0x8 data:double +lbl_801D65C8 = .sdata2:0x801D65C8; // type:object size:0x8 data:double +lbl_801D65D0 = .sdata2:0x801D65D0; // type:object size:0x8 data:double +lbl_801D65D8 = .sdata2:0x801D65D8; // type:object size:0x8 data:double +lbl_801D65E0 = .sdata2:0x801D65E0; // type:object size:0x8 data:double +lbl_801D65E8 = .sdata2:0x801D65E8; // type:object size:0x8 data:double +lbl_801D65F0 = .sdata2:0x801D65F0; // type:object size:0x8 data:double +lbl_801D65F8 = .sdata2:0x801D65F8; // type:object size:0x8 data:double +lbl_801D6600 = .sdata2:0x801D6600; // type:object size:0x8 data:double +lbl_801D6608 = .sdata2:0x801D6608; // type:object size:0x8 data:double +lbl_801D6610 = .sdata2:0x801D6610; // type:object size:0x8 data:double +lbl_801D6618 = .sdata2:0x801D6618; // type:object size:0x8 data:double +lbl_801D6620 = .sdata2:0x801D6620; // type:object size:0x8 data:double +lbl_801D6628 = .sdata2:0x801D6628; // type:object size:0x8 data:double +lbl_801D6630 = .sdata2:0x801D6630; // type:object size:0x8 data:double +lbl_801D6638 = .sdata2:0x801D6638; // type:object size:0x8 data:double +lbl_801D6640 = .sdata2:0x801D6640; // type:object size:0x8 data:double +lbl_801D6648 = .sdata2:0x801D6648; // type:object size:0x8 data:double +lbl_801D6650 = .sdata2:0x801D6650; // type:object size:0x4 data:float +lbl_801D6654 = .sdata2:0x801D6654; // type:object size:0x4 data:float +lbl_801D6658 = .sdata2:0x801D6658; // type:object size:0x4 data:float +lbl_801D6660 = .sdata2:0x801D6660; // type:object size:0x8 data:double +lbl_801D6668 = .sdata2:0x801D6668; // type:object size:0x8 data:double +lbl_801D6670 = .sdata2:0x801D6670; // type:object size:0x4 data:float +lbl_801D6674 = .sdata2:0x801D6674; // type:object size:0x4 data:float +lbl_801D6678 = .sdata2:0x801D6678; // type:object size:0x4 data:float +lbl_801D667C = .sdata2:0x801D667C; // type:object size:0x4 data:float +lbl_801D6680 = .sdata2:0x801D6680; // type:object size:0x4 data:float +lbl_801D6684 = .sdata2:0x801D6684; // type:object size:0x4 data:float +lbl_801D6688 = .sdata2:0x801D6688; // type:object size:0x4 data:float +lbl_801D668C = .sdata2:0x801D668C; // type:object size:0x4 data:float +lbl_801D6690 = .sdata2:0x801D6690; // type:object size:0x4 data:float +lbl_801D6698 = .sdata2:0x801D6698; // type:object size:0x8 data:double +lbl_801D66A0 = .sdata2:0x801D66A0; // type:object size:0x8 data:double +lbl_801D66A8 = .sdata2:0x801D66A8; // type:object size:0x4 data:float +lbl_801D66AC = .sdata2:0x801D66AC; // type:object size:0x4 data:float +lbl_801D66B0 = .sdata2:0x801D66B0; // type:object size:0x4 data:float +lbl_801D66B8 = .sdata2:0x801D66B8; // type:object size:0x8 data:double +lbl_801D66C0 = .sdata2:0x801D66C0; // type:object size:0x8 data:float +lbl_801D66C8 = .sdata2:0x801D66C8; // type:object size:0x4 data:float +lbl_801D66CC = .sdata2:0x801D66CC; // type:object size:0x4 data:float +lbl_801D66D0 = .sdata2:0x801D66D0; // type:object size:0x4 data:float +lbl_801D66D8 = .sdata2:0x801D66D8; // type:object size:0x8 data:double +lbl_801D66E0 = .sdata2:0x801D66E0; // type:object size:0x8 data:double +lbl_801D66E8 = .sdata2:0x801D66E8; // type:object size:0x4 data:float +lbl_801D66EC = .sdata2:0x801D66EC; // type:object size:0x4 data:float +lbl_801D66F0 = .sdata2:0x801D66F0; // type:object size:0x4 data:float +lbl_801D66F8 = .sdata2:0x801D66F8; // type:object size:0x8 data:double +lbl_801D6700 = .sdata2:0x801D6700; // type:object size:0x4 data:float +lbl_801D6708 = .sdata2:0x801D6708; // type:object size:0x8 data:double +lbl_801D6710 = .sdata2:0x801D6710; // type:object size:0x4 data:float +lbl_801D6714 = .sdata2:0x801D6714; // type:object size:0x4 data:float +lbl_801D6718 = .sdata2:0x801D6718; // type:object size:0x8 data:double +lbl_801D6720 = .sdata2:0x801D6720; // type:object size:0x4 data:float +lbl_801D6728 = .sdata2:0x801D6728; // type:object size:0x8 data:double +lbl_801D6730 = .sdata2:0x801D6730; // type:object size:0x4 data:float +lbl_801D6734 = .sdata2:0x801D6734; // type:object size:0x4 data:float +lbl_801D6738 = .sdata2:0x801D6738; // type:object size:0x4 data:float +lbl_801D6740 = .sdata2:0x801D6740; // type:object size:0x8 data:double +lbl_801D6748 = .sdata2:0x801D6748; // type:object size:0x4 data:float +lbl_801D6750 = .sdata2:0x801D6750; // type:object size:0x8 data:double +lbl_801D6758 = .sdata2:0x801D6758; // type:object size:0x4 data:float +lbl_801D675C = .sdata2:0x801D675C; // type:object size:0x4 data:float +lbl_801D6760 = .sdata2:0x801D6760; // type:object size:0x8 data:float +lbl_801D6768 = .sdata2:0x801D6768; // type:object size:0x4 data:float +lbl_801D6770 = .sdata2:0x801D6770; // type:object size:0x8 data:double +lbl_801D6778 = .sdata2:0x801D6778; // type:object size:0x4 data:float +lbl_801D677C = .sdata2:0x801D677C; // type:object size:0x4 data:float +lbl_801D6780 = .sdata2:0x801D6780; // type:object size:0x8 data:double +lbl_801D6788 = .sdata2:0x801D6788; // type:object size:0x4 data:float +lbl_801D678C = .sdata2:0x801D678C; // type:object size:0x4 data:float +lbl_801D6790 = .sdata2:0x801D6790; // type:object size:0x8 data:double +lbl_801D6798 = .sdata2:0x801D6798; // type:object size:0x4 data:float +lbl_801D679C = .sdata2:0x801D679C; // type:object size:0x4 data:float +lbl_801D67A0 = .sdata2:0x801D67A0; // type:object size:0x4 data:float +lbl_801D67A4 = .sdata2:0x801D67A4; // type:object size:0x4 data:float +lbl_801D67A8 = .sdata2:0x801D67A8; // type:object size:0x4 data:float +lbl_801D67AC = .sdata2:0x801D67AC; // type:object size:0x4 data:float +lbl_801D67B0 = .sdata2:0x801D67B0; // type:object size:0x8 data:float +lbl_801D67B8 = .sdata2:0x801D67B8; // type:object size:0x4 data:float +lbl_801D67C0 = .sdata2:0x801D67C0; // type:object size:0x8 data:double +lbl_801D67C8 = .sdata2:0x801D67C8; // type:object size:0x8 data:double +lbl_801D67D0 = .sdata2:0x801D67D0; // type:object size:0x8 data:float +lbl_801D67D8 = .sdata2:0x801D67D8; // type:object size:0x4 data:float +lbl_801D67DC = .sdata2:0x801D67DC; // type:object size:0x4 data:float +lbl_801D67E0 = .sdata2:0x801D67E0; // type:object size:0x4 data:float +lbl_801D67E8 = .sdata2:0x801D67E8; // type:object size:0x8 data:double +lbl_801D67F0 = .sdata2:0x801D67F0; // type:object size:0x4 data:float +lbl_801D67F4 = .sdata2:0x801D67F4; // type:object size:0x4 data:float +lbl_801D67F8 = .sdata2:0x801D67F8; // type:object size:0x4 data:float +lbl_801D67FC = .sdata2:0x801D67FC; // type:object size:0x4 data:float +lbl_801D6800 = .sdata2:0x801D6800; // type:object size:0x4 data:float +lbl_801D6804 = .sdata2:0x801D6804; // type:object size:0x4 data:float +lbl_801D6808 = .sdata2:0x801D6808; // type:object size:0x8 data:double +lbl_801D6810 = .sdata2:0x801D6810; // type:object size:0x4 data:float +lbl_801D6814 = .sdata2:0x801D6814; // type:object size:0x4 data:float +lbl_801D6818 = .sdata2:0x801D6818; // type:object size:0x8 data:double +lbl_801D6820 = .sdata2:0x801D6820; // type:object size:0x4 data:float +lbl_801D6824 = .sdata2:0x801D6824; // type:object size:0x4 data:float +lbl_801D6828 = .sdata2:0x801D6828; // type:object size:0x8 data:double +lbl_801D6830 = .sdata2:0x801D6830; // type:object size:0x4 data:float +lbl_801D6834 = .sdata2:0x801D6834; // type:object size:0x4 data:float +lbl_801D6838 = .sdata2:0x801D6838; // type:object size:0x4 data:float +lbl_801D683C = .sdata2:0x801D683C; // type:object size:0x4 data:float +lbl_801D6840 = .sdata2:0x801D6840; // type:object size:0x4 data:float +lbl_801D6844 = .sdata2:0x801D6844; // type:object size:0x4 data:float +lbl_801D6848 = .sdata2:0x801D6848; // type:object size:0x8 data:double +lbl_801D6850 = .sdata2:0x801D6850; // type:object size:0x4 data:float +lbl_801D6854 = .sdata2:0x801D6854; // type:object size:0x4 data:float +lbl_801D6858 = .sdata2:0x801D6858; // type:object size:0x8 data:double +lbl_801D6860 = .sdata2:0x801D6860; // type:object size:0x8 data:double +lbl_801D6868 = .sdata2:0x801D6868; // type:object size:0x4 data:float +lbl_801D686C = .sdata2:0x801D686C; // type:object size:0x4 data:float +lbl_801D6870 = .sdata2:0x801D6870; // type:object size:0x4 data:float +lbl_801D6878 = .sdata2:0x801D6878; // type:object size:0x8 data:double +lbl_801D6880 = .sdata2:0x801D6880; // type:object size:0x4 data:4byte +lbl_801D6884 = .sdata2:0x801D6884; // type:object size:0x4 data:4byte +lbl_801D6888 = .sdata2:0x801D6888; // type:object size:0x4 data:float +lbl_801D688C = .sdata2:0x801D688C; // type:object size:0x4 data:float +lbl_801D6890 = .sdata2:0x801D6890; // type:object size:0x4 data:float +lbl_801D6894 = .sdata2:0x801D6894; // type:object size:0x4 data:float +lbl_801D6898 = .sdata2:0x801D6898; // type:object size:0x8 data:double +lbl_801D68A0 = .sbss2:0x801D68A0; // type:object size:0x4 scope:local data:byte +lbl_801D68A4 = .sbss2:0x801D68A4; // type:object size:0x4 scope:local data:byte diff --git a/config/GMPP01_00/build.sha1 b/config/GMPP01_00/build.sha1 new file mode 100644 index 00000000..3cccde01 --- /dev/null +++ b/config/GMPP01_00/build.sha1 @@ -0,0 +1,100 @@ +65ef91650e9201047f50a3c39c7693a21fff2b29 build/GMPP01_00/main.dol +7101a759bcd45edee5bbc00a36d347c1f787c2a1 build/GMPP01_00/_minigameDll/_minigameDll.rel +b60fe8dd6faa20663224d64651b80c25b9b202ef build/GMPP01_00/bootDll/bootDll.rel +eef3ac50923ab2f20d588ef10ae15f3bc739f2b8 build/GMPP01_00/instDll/instDll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_00/m302Dll/m302Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_00/m303Dll/m303Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_00/m330Dll/m330Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_00/m333Dll/m333Dll.rel +cd3532af828e8217924296c4cadbd31ddd915a05 build/GMPP01_00/m402Dll/m402Dll.rel +b2e3cdd9167c579e02c6ecc5643b6aadcc5b6a99 build/GMPP01_00/m403Dll/m403Dll.rel +56c825a1e0bbe33e3a0e1e70396c21af9b575243 build/GMPP01_00/m404Dll/m404Dll.rel +cc76ded0a41aea632fd9b3c5e37fe6d847107d91 build/GMPP01_00/m405Dll/m405Dll.rel +5c2aee9c8f10dc763c9ff763874f3a4b58880f02 build/GMPP01_00/m406Dll/m406Dll.rel +7133701b7c28a66f9d24ab64081e472d458dad51 build/GMPP01_00/m407dll/m407dll.rel +6f2552516b8e151ccbed99ee6730ca2cb2e0fd49 build/GMPP01_00/m408Dll/m408Dll.rel +71a91946651b40cc217b08d293f23fbf01c7407a build/GMPP01_00/m409Dll/m409Dll.rel +e938c2f354224a6a5a7b015f9abae596298788ee build/GMPP01_00/m410Dll/m410Dll.rel +e29bae44753c7ce8e5213881b10d6b27c02c4f7a build/GMPP01_00/m411Dll/m411Dll.rel +23da1cff677f992bb76dcbf4a9f9061542b4be7f build/GMPP01_00/m412Dll/m412Dll.rel +6ed381e5b4d75eeab2c3ded39473a482f61ee32d build/GMPP01_00/m413Dll/m413Dll.rel +902f32cc75ac0030c7c531dbeefda055bc8d7f27 build/GMPP01_00/m414Dll/m414Dll.rel +7063ae505540bafebf802128d8d2f394b7f6f921 build/GMPP01_00/m415Dll/m415Dll.rel +2979d5f934b9099116fbd943a91d6a3bb56e6ec0 build/GMPP01_00/m416Dll/m416Dll.rel +b20482a2af7c839456fe7580dcbd92ca9984ec71 build/GMPP01_00/m417Dll/m417Dll.rel +762f56820668c74cdcde436a08419bdb59a35a89 build/GMPP01_00/m418Dll/m418Dll.rel +5fba3dfcfca6ef78eb46833f665019bca641063e build/GMPP01_00/m419Dll/m419Dll.rel +bb514277a33821093fd2acfae2cb86531b317d17 build/GMPP01_00/m420dll/m420dll.rel +216ba8bbc8905f33370ae651d478f6bd56c17b27 build/GMPP01_00/m421Dll/m421Dll.rel +6c152ddb5f518c9c6444030dfc30ab53ef931b40 build/GMPP01_00/m422Dll/m422Dll.rel +db80fcb993ce09d808de29d2488f2b1ab2afc8cd build/GMPP01_00/m423Dll/m423Dll.rel +827da0897edcc2706a3623722430d4e70512c653 build/GMPP01_00/m424Dll/m424Dll.rel +26eb36bfc9106af2462a0d7e013f5321dbaecdd1 build/GMPP01_00/m425Dll/m425Dll.rel +04b649fb6eb248e506cf15fdcfbed3e915a80682 build/GMPP01_00/m426Dll/m426Dll.rel +810a1c91f794897862ac9b6a4e076a70c6b0238a build/GMPP01_00/m427Dll/m427Dll.rel +888af662a228e349ea6a0c60e19de74f8fa47914 build/GMPP01_00/m428Dll/m428Dll.rel +88b2330f175d1346a71f67491dcf9eff62d2d2d1 build/GMPP01_00/m429Dll/m429Dll.rel +e611007dd71ab515de65e9a6879f0508193fd58a build/GMPP01_00/m430Dll/m430Dll.rel +6a2b097a6d57c36bff5aaeb8c9ea2f01df7407ad build/GMPP01_00/m431Dll/m431Dll.rel +17b6a0c65c7cb759fc460fe7b8eed3dd7dc7184d build/GMPP01_00/m432Dll/m432Dll.rel +ce90f494ced6f2611603c247bdc733a458b5a523 build/GMPP01_00/m433Dll/m433Dll.rel +100fe402942821dc8e5753f3cada5e2bf5ab6214 build/GMPP01_00/m434Dll/m434Dll.rel +4936db381fa068395cff28c0d635c5ec7cc7218f build/GMPP01_00/m435Dll/m435Dll.rel +ba1c3bdc5f250996a5c873791347ce4c20b38692 build/GMPP01_00/m436Dll/m436Dll.rel +7273786a2995182baf9a85148c5974097999fe8e build/GMPP01_00/m437Dll/m437Dll.rel +d7c4bdf1729695a7348f8a36de2911db7aa24abb build/GMPP01_00/m438Dll/m438Dll.rel +4d5a719b49edb55e0b0b52c0d81b31c14d197d20 build/GMPP01_00/m439Dll/m439Dll.rel +469b18886221ae8a5b90f3e85b01ce6a01befb0b build/GMPP01_00/m440Dll/m440Dll.rel +7d6e99b67d2dde25d3fc75ac314c2a69be34137e build/GMPP01_00/m441Dll/m441Dll.rel +63af3c4f33fd362f17aa1be9f764d0549f92598d build/GMPP01_00/m442Dll/m442Dll.rel +5118a0bab1877455eae9002c3cc561d3360fd792 build/GMPP01_00/m443Dll/m443Dll.rel +4939f755142efe362f67898358fff1cdeffe508e build/GMPP01_00/m444dll/m444dll.rel +02f7c52aa6fd4b21a5700615aeaee9ef59e6b9f3 build/GMPP01_00/m445Dll/m445Dll.rel +2ab71adae47a3d9632dcf45cf18ca0b1fc33d157 build/GMPP01_00/m446dll/m446dll.rel +0640357fe4d0148dac4bc382c8231410e24fe951 build/GMPP01_00/m447dll/m447dll.rel +78bcdd8d1fdb810784fca4d5bbec92c63e2e6b54 build/GMPP01_00/m448Dll/m448Dll.rel +fcf6e4b0089e19ffddf01a119c8c515a4acc943a build/GMPP01_00/m449Dll/m449Dll.rel +ebcf95781e8078813ed041dd0a869ae2e413679b build/GMPP01_00/m450Dll/m450Dll.rel +aa16b743f7b64f22abfd8bb93646883cc73bd7e0 build/GMPP01_00/m451Dll/m451Dll.rel +f6fd7a6537e56c535d02ac4a48c9008605f93ea1 build/GMPP01_00/m453Dll/m453Dll.rel +cc3431f55b523d474a952f3a0e927fac6b5402ab build/GMPP01_00/m455Dll/m455Dll.rel +09797251306bbd0f6fd712d6f832128ca8c58690 build/GMPP01_00/m456Dll/m456Dll.rel +8a992a09077fd5e1f6ca3e717547792938a519c1 build/GMPP01_00/m457Dll/m457Dll.rel +5dea2127d51d621b30d78b22cfa32327797e6e0b build/GMPP01_00/m458Dll/m458Dll.rel +e96dafe5949909cb7cc839174aa38e8e6661a63b build/GMPP01_00/m459dll/m459dll.rel +ea1e0bda22675840d39c74117e2a11ffe45f8dd4 build/GMPP01_00/m460Dll/m460Dll.rel +8d515f3b92a786df53bb88291b5cfc4bc59a3c8d build/GMPP01_00/m461Dll/m461Dll.rel +f02ba47e4459d9b0de174c5619a4efe61942962d build/GMPP01_00/m462Dll/m462Dll.rel +352ad6d84ded6cf28b9ff2f9e5da8812ac9164db build/GMPP01_00/m463Dll/m463Dll.rel +4705ada9d259a81ab2815fee3516f6217d848dd9 build/GMPP01_00/mentDll/mentDll.rel +b966ce340e98dbda624ff80f96c78d51ff1ed687 build/GMPP01_00/messDll/messDll.rel +7a3fed787df2d1bc942efd56a160eaf59605b94f build/GMPP01_00/mgmodedll/mgmodedll.rel +1e5bf1777b1470fcead2174c25b291b8f0513284 build/GMPP01_00/modeltestDll/modeltestDll.rel +d958038528a774801a4f5a0aee9e7aaae4bd94ce build/GMPP01_00/modeseldll/modeseldll.rel +a3e1e06937703f98191f4080e092bf06c4f449b3 build/GMPP01_00/mpexDll/mpexDll.rel +86ff8288bb92472376d02cade1d3c9603b613c57 build/GMPP01_00/msetupDll/msetupDll.rel +ea9878a7af1787c0789d29bf812e1d9972c2ff20 build/GMPP01_00/mstory2Dll/mstory2Dll.rel +58decb3dba8e167bd2c238a55339888469a07381 build/GMPP01_00/mstory3Dll/mstory3Dll.rel +a8eee3981f4965412490cb9eef76aaa798957db1 build/GMPP01_00/mstory4Dll/mstory4Dll.rel +0fd54549734531303fb5471690cee96709833114 build/GMPP01_00/mstoryDll/mstoryDll.rel +45619d95e61d9296f25d94d7c6756f397fb89bee build/GMPP01_00/nisDll/nisDll.rel +1304967e3aa58a46492d4c736a7c86cf8a3b2e11 build/GMPP01_00/option/option.rel +7845814c6be2546930cfd8e0b9dec263fc1a959f build/GMPP01_00/present/present.rel +d9bd10433d1e2a6c0c4d9f942b766d743f99deec build/GMPP01_00/resultDll/resultDll.rel +c13262cf14f00e1d70bd65d20bbf988479816ca7 build/GMPP01_00/safDll/safDll.rel +51f53e1398c86c5a22251a457e3af86339b4b11f build/GMPP01_00/selmenuDll/selmenuDll.rel +af869e37d004f687fab2ff6897d75d6c15e31a00 build/GMPP01_00/staffDll/staffDll.rel +21de7aff7d39f8e130b4ef7602b8de85e51cf3e5 build/GMPP01_00/subchrselDll/subchrselDll.rel +70ee81af67a4f55de2fef65823583d22312f09be build/GMPP01_00/w01Dll/w01Dll.rel +33b5663ece821df4dbc50870e00de0e22e099efd build/GMPP01_00/w02Dll/w02Dll.rel +97aa16f847cdf2d6fd014f06df14c55f5f02024d build/GMPP01_00/w03Dll/w03Dll.rel +135cf03d803b9d8d39721b2a96769909aa719ee6 build/GMPP01_00/w04Dll/w04Dll.rel +e6d07092b69cc3b0514d9c12e3f5949edeb25f5f build/GMPP01_00/w05Dll/w05Dll.rel +0d5445461f58fac4c043c75bed7237b7f4045188 build/GMPP01_00/w06Dll/w06Dll.rel +5678fedd4a0490aeb9703328e959fdedea7da117 build/GMPP01_00/w10Dll/w10Dll.rel +58ae9e311cc8bd0291921480f423e2ad4774e1a2 build/GMPP01_00/w20Dll/w20Dll.rel +8ea052be8c7585a1ab152682a0698b631c5b566f build/GMPP01_00/w21Dll/w21Dll.rel +8987f11fafd11f69161ca275967afe9c8b4e7b20 build/GMPP01_00/ztardll/ztardll.rel +d59c60b0149a85782fa98d1a4da6cc768a09b473 build/GMPP01_00/E3setupDLL/E3setupDLL.rel +eba8a17e8b263bc9cd601b1aea7e698a8785416a build/GMPP01_00/m300Dll/m300Dll.rel +c457a4a45ebae776331484ba94f5798041a77a57 build/GMPP01_00/m401Dll/m401Dll.rel diff --git a/config/GMPP01_00/config.yml b/config/GMPP01_00/config.yml new file mode 100644 index 00000000..997b2d75 --- /dev/null +++ b/config/GMPP01_00/config.yml @@ -0,0 +1,660 @@ +object_base: orig/GMPP01_00 +object: sys/main.dol +hash: 65ef91650e9201047f50a3c39c7693a21fff2b29 +symbols: config/GMPP01_00/symbols.txt +splits: config/GMPP01_00/splits.txt +quick_analysis: true # Faster re-runs after initial analysis +mw_comment_version: 10 # GC 2.6 linker +force_active: [__register_global_object, lbl_801D40D0] +detect_objects: true +detect_strings: true +fill_gaps: true +modules: +- object: files/dll/_minigameDll.rel + hash: 7101a759bcd45edee5bbc00a36d347c1f787c2a1 + symbols: config/GMPP01_00/rels/_minigameDll/symbols.txt + splits: config/GMPP01_00/rels/_minigameDll/splits.txt + links: [] +- object: files/dll/bootDll.rel + hash: b60fe8dd6faa20663224d64651b80c25b9b202ef + symbols: config/GMPP01_00/rels/bootDll/symbols.txt + splits: config/GMPP01_00/rels/bootDll/splits.txt + links: [] + extract: + - symbol: nintendoData + binary: nintendoData.bin + header: nintendoData.inc +- object: files/dll/instDll.rel + hash: eef3ac50923ab2f20d588ef10ae15f3bc739f2b8 + symbols: config/GMPP01_00/rels/instDll/symbols.txt + splits: config/GMPP01_00/rels/instDll/splits.txt + links: [] +- object: files/dll/m302Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m302Dll/symbols.txt + splits: config/GMPP01_00/rels/m302Dll/splits.txt + links: [] +- object: files/dll/m303Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m303Dll/symbols.txt + splits: config/GMPP01_00/rels/m303Dll/splits.txt + links: [] +- object: files/dll/m330Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m330Dll/symbols.txt + splits: config/GMPP01_00/rels/m330Dll/splits.txt + links: [] +- object: files/dll/m333Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m333Dll/symbols.txt + splits: config/GMPP01_00/rels/m333Dll/splits.txt + links: [] +- object: files/dll/m402Dll.rel + hash: cd3532af828e8217924296c4cadbd31ddd915a05 + symbols: config/GMPP01_00/rels/m402Dll/symbols.txt + splits: config/GMPP01_00/rels/m402Dll/splits.txt + links: [] +- object: files/dll/m403Dll.rel + hash: b2e3cdd9167c579e02c6ecc5643b6aadcc5b6a99 + symbols: config/GMPP01_00/rels/m403Dll/symbols.txt + splits: config/GMPP01_00/rels/m403Dll/splits.txt + links: [] +- object: files/dll/m404Dll.rel + hash: 56c825a1e0bbe33e3a0e1e70396c21af9b575243 + symbols: config/GMPP01_00/rels/m404Dll/symbols.txt + splits: config/GMPP01_00/rels/m404Dll/splits.txt + links: [] +- object: files/dll/m405Dll.rel + hash: cc76ded0a41aea632fd9b3c5e37fe6d847107d91 + symbols: config/GMPP01_00/rels/m405Dll/symbols.txt + splits: config/GMPP01_00/rels/m405Dll/splits.txt + links: [] +- object: files/dll/m406Dll.rel + hash: 5c2aee9c8f10dc763c9ff763874f3a4b58880f02 + symbols: config/GMPP01_00/rels/m406Dll/symbols.txt + splits: config/GMPP01_00/rels/m406Dll/splits.txt + links: [] +- object: files/dll/m407dll.rel + hash: 7133701b7c28a66f9d24ab64081e472d458dad51 + symbols: config/GMPP01_00/rels/m407dll/symbols.txt + splits: config/GMPP01_00/rels/m407dll/splits.txt + links: [] +- object: files/dll/m408Dll.rel + hash: 6f2552516b8e151ccbed99ee6730ca2cb2e0fd49 + symbols: config/GMPP01_00/rels/m408Dll/symbols.txt + splits: config/GMPP01_00/rels/m408Dll/splits.txt + links: [] +- object: files/dll/m409Dll.rel + hash: 71a91946651b40cc217b08d293f23fbf01c7407a + symbols: config/GMPP01_00/rels/m409Dll/symbols.txt + splits: config/GMPP01_00/rels/m409Dll/splits.txt + links: [] +- object: files/dll/m410Dll.rel + hash: e938c2f354224a6a5a7b015f9abae596298788ee + symbols: config/GMPP01_00/rels/m410Dll/symbols.txt + splits: config/GMPP01_00/rels/m410Dll/splits.txt + links: [] +- object: files/dll/m411Dll.rel + hash: e29bae44753c7ce8e5213881b10d6b27c02c4f7a + symbols: config/GMPP01_00/rels/m411Dll/symbols.txt + splits: config/GMPP01_00/rels/m411Dll/splits.txt + links: [] +- object: files/dll/m412Dll.rel + hash: 23da1cff677f992bb76dcbf4a9f9061542b4be7f + symbols: config/GMPP01_00/rels/m412Dll/symbols.txt + splits: config/GMPP01_00/rels/m412Dll/splits.txt + links: [] +- object: files/dll/m413Dll.rel + hash: 6ed381e5b4d75eeab2c3ded39473a482f61ee32d + symbols: config/GMPP01_00/rels/m413Dll/symbols.txt + splits: config/GMPP01_00/rels/m413Dll/splits.txt + links: [] +- object: files/dll/m414Dll.rel + hash: 902f32cc75ac0030c7c531dbeefda055bc8d7f27 + symbols: config/GMPP01_00/rels/m414Dll/symbols.txt + splits: config/GMPP01_00/rels/m414Dll/splits.txt + links: [] +- object: files/dll/m415Dll.rel + hash: 7063ae505540bafebf802128d8d2f394b7f6f921 + symbols: config/GMPP01_00/rels/m415Dll/symbols.txt + splits: config/GMPP01_00/rels/m415Dll/splits.txt + links: [] +- object: files/dll/m416Dll.rel + hash: 2979d5f934b9099116fbd943a91d6a3bb56e6ec0 + symbols: config/GMPP01_00/rels/m416Dll/symbols.txt + splits: config/GMPP01_00/rels/m416Dll/splits.txt + links: [] +- object: files/dll/m417Dll.rel + hash: b20482a2af7c839456fe7580dcbd92ca9984ec71 + symbols: config/GMPP01_00/rels/m417Dll/symbols.txt + splits: config/GMPP01_00/rels/m417Dll/splits.txt + links: [] +- object: files/dll/m418Dll.rel + hash: 762f56820668c74cdcde436a08419bdb59a35a89 + symbols: config/GMPP01_00/rels/m418Dll/symbols.txt + splits: config/GMPP01_00/rels/m418Dll/splits.txt + links: [] +- object: files/dll/m419Dll.rel + hash: 5fba3dfcfca6ef78eb46833f665019bca641063e + symbols: config/GMPP01_00/rels/m419Dll/symbols.txt + splits: config/GMPP01_00/rels/m419Dll/splits.txt + links: [] +- object: files/dll/m420dll.rel + hash: bb514277a33821093fd2acfae2cb86531b317d17 + symbols: config/GMPP01_00/rels/m420dll/symbols.txt + splits: config/GMPP01_00/rels/m420dll/splits.txt + links: [] +- object: files/dll/m421Dll.rel + hash: 216ba8bbc8905f33370ae651d478f6bd56c17b27 + symbols: config/GMPP01_00/rels/m421Dll/symbols.txt + splits: config/GMPP01_00/rels/m421Dll/splits.txt + links: [] +- object: files/dll/m422Dll.rel + hash: 6c152ddb5f518c9c6444030dfc30ab53ef931b40 + symbols: config/GMPP01_00/rels/m422Dll/symbols.txt + splits: config/GMPP01_00/rels/m422Dll/splits.txt + links: [] +- object: files/dll/m423Dll.rel + hash: db80fcb993ce09d808de29d2488f2b1ab2afc8cd + symbols: config/GMPP01_00/rels/m423Dll/symbols.txt + splits: config/GMPP01_00/rels/m423Dll/splits.txt + links: [] +- object: files/dll/m424Dll.rel + hash: 827da0897edcc2706a3623722430d4e70512c653 + symbols: config/GMPP01_00/rels/m424Dll/symbols.txt + splits: config/GMPP01_00/rels/m424Dll/splits.txt + links: [] +- object: files/dll/m425Dll.rel + hash: 26eb36bfc9106af2462a0d7e013f5321dbaecdd1 + symbols: config/GMPP01_00/rels/m425Dll/symbols.txt + splits: config/GMPP01_00/rels/m425Dll/splits.txt + links: [] +- object: files/dll/m426Dll.rel + hash: 04b649fb6eb248e506cf15fdcfbed3e915a80682 + symbols: config/GMPP01_00/rels/m426Dll/symbols.txt + splits: config/GMPP01_00/rels/m426Dll/splits.txt + links: [] +- object: files/dll/m427Dll.rel + hash: 810a1c91f794897862ac9b6a4e076a70c6b0238a + symbols: config/GMPP01_00/rels/m427Dll/symbols.txt + splits: config/GMPP01_00/rels/m427Dll/splits.txt + links: [] +- object: files/dll/m428Dll.rel + hash: 888af662a228e349ea6a0c60e19de74f8fa47914 + symbols: config/GMPP01_00/rels/m428Dll/symbols.txt + splits: config/GMPP01_00/rels/m428Dll/splits.txt + links: [] +- object: files/dll/m429Dll.rel + hash: 88b2330f175d1346a71f67491dcf9eff62d2d2d1 + symbols: config/GMPP01_00/rels/m429Dll/symbols.txt + splits: config/GMPP01_00/rels/m429Dll/splits.txt + links: [] +- object: files/dll/m430Dll.rel + hash: e611007dd71ab515de65e9a6879f0508193fd58a + symbols: config/GMPP01_00/rels/m430Dll/symbols.txt + splits: config/GMPP01_00/rels/m430Dll/splits.txt + links: [] +- object: files/dll/m431Dll.rel + hash: 6a2b097a6d57c36bff5aaeb8c9ea2f01df7407ad + symbols: config/GMPP01_00/rels/m431Dll/symbols.txt + splits: config/GMPP01_00/rels/m431Dll/splits.txt + links: [] +- object: files/dll/m432Dll.rel + hash: 17b6a0c65c7cb759fc460fe7b8eed3dd7dc7184d + symbols: config/GMPP01_00/rels/m432Dll/symbols.txt + splits: config/GMPP01_00/rels/m432Dll/splits.txt + links: [] +- object: files/dll/m433Dll.rel + hash: ce90f494ced6f2611603c247bdc733a458b5a523 + symbols: config/GMPP01_00/rels/m433Dll/symbols.txt + splits: config/GMPP01_00/rels/m433Dll/splits.txt + links: [] +- object: files/dll/m434Dll.rel + hash: 100fe402942821dc8e5753f3cada5e2bf5ab6214 + symbols: config/GMPP01_00/rels/m434Dll/symbols.txt + splits: config/GMPP01_00/rels/m434Dll/splits.txt + links: [] +- object: files/dll/m435Dll.rel + hash: 4936db381fa068395cff28c0d635c5ec7cc7218f + symbols: config/GMPP01_00/rels/m435Dll/symbols.txt + splits: config/GMPP01_00/rels/m435Dll/splits.txt + links: [] +- object: files/dll/m436Dll.rel + hash: ba1c3bdc5f250996a5c873791347ce4c20b38692 + symbols: config/GMPP01_00/rels/m436Dll/symbols.txt + splits: config/GMPP01_00/rels/m436Dll/splits.txt + links: [] +- object: files/dll/m437Dll.rel + hash: 7273786a2995182baf9a85148c5974097999fe8e + symbols: config/GMPP01_00/rels/m437Dll/symbols.txt + splits: config/GMPP01_00/rels/m437Dll/splits.txt + links: [] +- object: files/dll/m438Dll.rel + hash: d7c4bdf1729695a7348f8a36de2911db7aa24abb + symbols: config/GMPP01_00/rels/m438Dll/symbols.txt + splits: config/GMPP01_00/rels/m438Dll/splits.txt + links: [] +- object: files/dll/m439Dll.rel + hash: 4d5a719b49edb55e0b0b52c0d81b31c14d197d20 + symbols: config/GMPP01_00/rels/m439Dll/symbols.txt + splits: config/GMPP01_00/rels/m439Dll/splits.txt + links: [] +- object: files/dll/m440Dll.rel + hash: 469b18886221ae8a5b90f3e85b01ce6a01befb0b + symbols: config/GMPP01_00/rels/m440Dll/symbols.txt + splits: config/GMPP01_00/rels/m440Dll/splits.txt + links: [] +- object: files/dll/m441Dll.rel + hash: 7d6e99b67d2dde25d3fc75ac314c2a69be34137e + symbols: config/GMPP01_00/rels/m441Dll/symbols.txt + splits: config/GMPP01_00/rels/m441Dll/splits.txt + links: [] +- object: files/dll/m442Dll.rel + hash: 63af3c4f33fd362f17aa1be9f764d0549f92598d + symbols: config/GMPP01_00/rels/m442Dll/symbols.txt + splits: config/GMPP01_00/rels/m442Dll/splits.txt + links: [] +- object: files/dll/m443Dll.rel + hash: 5118a0bab1877455eae9002c3cc561d3360fd792 + symbols: config/GMPP01_00/rels/m443Dll/symbols.txt + splits: config/GMPP01_00/rels/m443Dll/splits.txt + links: [] +- object: files/dll/m444dll.rel + hash: 4939f755142efe362f67898358fff1cdeffe508e + symbols: config/GMPP01_00/rels/m444dll/symbols.txt + splits: config/GMPP01_00/rels/m444dll/splits.txt + links: [] +- object: files/dll/m445Dll.rel + hash: 02f7c52aa6fd4b21a5700615aeaee9ef59e6b9f3 + symbols: config/GMPP01_00/rels/m445Dll/symbols.txt + splits: config/GMPP01_00/rels/m445Dll/splits.txt + links: [] +- object: files/dll/m446dll.rel + hash: 2ab71adae47a3d9632dcf45cf18ca0b1fc33d157 + symbols: config/GMPP01_00/rels/m446dll/symbols.txt + splits: config/GMPP01_00/rels/m446dll/splits.txt + links: [] +- object: files/dll/m447dll.rel + hash: 0640357fe4d0148dac4bc382c8231410e24fe951 + symbols: config/GMPP01_00/rels/m447dll/symbols.txt + splits: config/GMPP01_00/rels/m447dll/splits.txt + links: [] +- object: files/dll/m448Dll.rel + hash: 78bcdd8d1fdb810784fca4d5bbec92c63e2e6b54 + symbols: config/GMPP01_00/rels/m448Dll/symbols.txt + splits: config/GMPP01_00/rels/m448Dll/splits.txt + links: [] +- object: files/dll/m449Dll.rel + hash: fcf6e4b0089e19ffddf01a119c8c515a4acc943a + symbols: config/GMPP01_00/rels/m449Dll/symbols.txt + splits: config/GMPP01_00/rels/m449Dll/splits.txt + links: [] +- object: files/dll/m450Dll.rel + hash: ebcf95781e8078813ed041dd0a869ae2e413679b + symbols: config/GMPP01_00/rels/m450Dll/symbols.txt + splits: config/GMPP01_00/rels/m450Dll/splits.txt + links: [] +- object: files/dll/m451Dll.rel + hash: aa16b743f7b64f22abfd8bb93646883cc73bd7e0 + symbols: config/GMPP01_00/rels/m451Dll/symbols.txt + splits: config/GMPP01_00/rels/m451Dll/splits.txt + links: [] +- object: files/dll/m453Dll.rel + hash: f6fd7a6537e56c535d02ac4a48c9008605f93ea1 + symbols: config/GMPP01_00/rels/m453Dll/symbols.txt + splits: config/GMPP01_00/rels/m453Dll/splits.txt + links: [] +- object: files/dll/m455Dll.rel + hash: cc3431f55b523d474a952f3a0e927fac6b5402ab + symbols: config/GMPP01_00/rels/m455Dll/symbols.txt + splits: config/GMPP01_00/rels/m455Dll/splits.txt + links: [] +- object: files/dll/m456Dll.rel + hash: 09797251306bbd0f6fd712d6f832128ca8c58690 + symbols: config/GMPP01_00/rels/m456Dll/symbols.txt + splits: config/GMPP01_00/rels/m456Dll/splits.txt + links: [] +- object: files/dll/m457Dll.rel + hash: 8a992a09077fd5e1f6ca3e717547792938a519c1 + symbols: config/GMPP01_00/rels/m457Dll/symbols.txt + splits: config/GMPP01_00/rels/m457Dll/splits.txt + links: [] +- object: files/dll/m458Dll.rel + hash: 5dea2127d51d621b30d78b22cfa32327797e6e0b + symbols: config/GMPP01_00/rels/m458Dll/symbols.txt + splits: config/GMPP01_00/rels/m458Dll/splits.txt + links: [] +- object: files/dll/m459dll.rel + hash: e96dafe5949909cb7cc839174aa38e8e6661a63b + symbols: config/GMPP01_00/rels/m459dll/symbols.txt + splits: config/GMPP01_00/rels/m459dll/splits.txt + links: [] +- object: files/dll/m460Dll.rel + hash: ea1e0bda22675840d39c74117e2a11ffe45f8dd4 + symbols: config/GMPP01_00/rels/m460Dll/symbols.txt + splits: config/GMPP01_00/rels/m460Dll/splits.txt + links: [] +- object: files/dll/m461Dll.rel + hash: 8d515f3b92a786df53bb88291b5cfc4bc59a3c8d + symbols: config/GMPP01_00/rels/m461Dll/symbols.txt + splits: config/GMPP01_00/rels/m461Dll/splits.txt + links: [] +- object: files/dll/m462Dll.rel + hash: f02ba47e4459d9b0de174c5619a4efe61942962d + symbols: config/GMPP01_00/rels/m462Dll/symbols.txt + splits: config/GMPP01_00/rels/m462Dll/splits.txt + links: [] +- object: files/dll/m463Dll.rel + hash: 352ad6d84ded6cf28b9ff2f9e5da8812ac9164db + symbols: config/GMPP01_00/rels/m463Dll/symbols.txt + splits: config/GMPP01_00/rels/m463Dll/splits.txt + links: [] +- object: files/dll/mentDll.rel + hash: 4705ada9d259a81ab2815fee3516f6217d848dd9 + symbols: config/GMPP01_00/rels/mentDll/symbols.txt + splits: config/GMPP01_00/rels/mentDll/splits.txt + links: [] +- object: files/dll/messDll.rel + hash: b966ce340e98dbda624ff80f96c78d51ff1ed687 + symbols: config/GMPP01_00/rels/messDll/symbols.txt + splits: config/GMPP01_00/rels/messDll/splits.txt + links: [] +- object: files/dll/mgmodedll.rel + hash: 7a3fed787df2d1bc942efd56a160eaf59605b94f + symbols: config/GMPP01_00/rels/mgmodedll/symbols.txt + splits: config/GMPP01_00/rels/mgmodedll/splits.txt + links: [] +- object: files/dll/modeltestDll.rel + hash: 1e5bf1777b1470fcead2174c25b291b8f0513284 + symbols: config/GMPP01_00/rels/modeltestDll/symbols.txt + splits: config/GMPP01_00/rels/modeltestDll/splits.txt + links: [] +- object: files/dll/modeseldll.rel + hash: d958038528a774801a4f5a0aee9e7aaae4bd94ce + symbols: config/GMPP01_00/rels/modeseldll/symbols.txt + splits: config/GMPP01_00/rels/modeseldll/splits.txt + links: [] +- object: files/dll/mpexDll.rel + hash: a3e1e06937703f98191f4080e092bf06c4f449b3 + symbols: config/GMPP01_00/rels/mpexDll/symbols.txt + splits: config/GMPP01_00/rels/mpexDll/splits.txt + links: [] +- object: files/dll/msetupDll.rel + hash: 86ff8288bb92472376d02cade1d3c9603b613c57 + symbols: config/GMPP01_00/rels/msetupDll/symbols.txt + splits: config/GMPP01_00/rels/msetupDll/splits.txt + links: [] +- object: files/dll/mstory2Dll.rel + hash: ea9878a7af1787c0789d29bf812e1d9972c2ff20 + symbols: config/GMPP01_00/rels/mstory2Dll/symbols.txt + splits: config/GMPP01_00/rels/mstory2Dll/splits.txt + links: [] +- object: files/dll/mstory3Dll.rel + hash: 58decb3dba8e167bd2c238a55339888469a07381 + symbols: config/GMPP01_00/rels/mstory3Dll/symbols.txt + splits: config/GMPP01_00/rels/mstory3Dll/splits.txt + links: [] +- object: files/dll/mstory4Dll.rel + hash: a8eee3981f4965412490cb9eef76aaa798957db1 + symbols: config/GMPP01_00/rels/mstory4Dll/symbols.txt + splits: config/GMPP01_00/rels/mstory4Dll/splits.txt + links: [] +- object: files/dll/mstoryDll.rel + hash: 0fd54549734531303fb5471690cee96709833114 + symbols: config/GMPP01_00/rels/mstoryDll/symbols.txt + splits: config/GMPP01_00/rels/mstoryDll/splits.txt + links: [] +- object: files/dll/nisDll.rel + hash: 45619d95e61d9296f25d94d7c6756f397fb89bee + symbols: config/GMPP01_00/rels/nisDll/symbols.txt + splits: config/GMPP01_00/rels/nisDll/splits.txt + links: [] +- object: files/dll/option.rel + hash: 1304967e3aa58a46492d4c736a7c86cf8a3b2e11 + symbols: config/GMPP01_00/rels/option/symbols.txt + splits: config/GMPP01_00/rels/option/splits.txt + links: [] +- object: files/dll/present.rel + hash: 7845814c6be2546930cfd8e0b9dec263fc1a959f + symbols: config/GMPP01_00/rels/present/symbols.txt + splits: config/GMPP01_00/rels/present/splits.txt + links: [] +- object: files/dll/resultDll.rel + hash: d9bd10433d1e2a6c0c4d9f942b766d743f99deec + symbols: config/GMPP01_00/rels/resultDll/symbols.txt + splits: config/GMPP01_00/rels/resultDll/splits.txt + links: [] +- object: files/dll/safDll.rel + hash: c13262cf14f00e1d70bd65d20bbf988479816ca7 + symbols: config/GMPP01_00/rels/safDll/symbols.txt + splits: config/GMPP01_00/rels/safDll/splits.txt + links: [] +- object: files/dll/selmenuDll.rel + hash: 51f53e1398c86c5a22251a457e3af86339b4b11f + symbols: config/GMPP01_00/rels/selmenuDll/symbols.txt + splits: config/GMPP01_00/rels/selmenuDll/splits.txt + links: [] +- object: files/dll/staffDll.rel + hash: af869e37d004f687fab2ff6897d75d6c15e31a00 + symbols: config/GMPP01_00/rels/staffDll/symbols.txt + splits: config/GMPP01_00/rels/staffDll/splits.txt + links: [] +- object: files/dll/subchrselDll.rel + hash: 21de7aff7d39f8e130b4ef7602b8de85e51cf3e5 + symbols: config/GMPP01_00/rels/subchrselDll/symbols.txt + splits: config/GMPP01_00/rels/subchrselDll/splits.txt + links: [] +- object: files/dll/w01Dll.rel + hash: 70ee81af67a4f55de2fef65823583d22312f09be + symbols: config/GMPP01_00/rels/w01Dll/symbols.txt + splits: config/GMPP01_00/rels/w01Dll/splits.txt + links: [] +- object: files/dll/w02Dll.rel + hash: 33b5663ece821df4dbc50870e00de0e22e099efd + symbols: config/GMPP01_00/rels/w02Dll/symbols.txt + splits: config/GMPP01_00/rels/w02Dll/splits.txt + links: [] +- object: files/dll/w03Dll.rel + hash: 97aa16f847cdf2d6fd014f06df14c55f5f02024d + symbols: config/GMPP01_00/rels/w03Dll/symbols.txt + splits: config/GMPP01_00/rels/w03Dll/splits.txt + links: [] +- object: files/dll/w04Dll.rel + hash: 135cf03d803b9d8d39721b2a96769909aa719ee6 + symbols: config/GMPP01_00/rels/w04Dll/symbols.txt + splits: config/GMPP01_00/rels/w04Dll/splits.txt + links: [] +- object: files/dll/w05Dll.rel + hash: e6d07092b69cc3b0514d9c12e3f5949edeb25f5f + symbols: config/GMPP01_00/rels/w05Dll/symbols.txt + splits: config/GMPP01_00/rels/w05Dll/splits.txt + links: [] +- object: files/dll/w06Dll.rel + hash: 0d5445461f58fac4c043c75bed7237b7f4045188 + symbols: config/GMPP01_00/rels/w06Dll/symbols.txt + splits: config/GMPP01_00/rels/w06Dll/splits.txt + links: [] +- object: files/dll/w10Dll.rel + hash: 5678fedd4a0490aeb9703328e959fdedea7da117 + symbols: config/GMPE01_00/rels/w10Dll/symbols.txt + splits: config/GMPE01_00/rels/w10Dll/splits.txt + links: [] +- object: files/dll/w20Dll.rel + hash: 58ae9e311cc8bd0291921480f423e2ad4774e1a2 + symbols: config/GMPP01_00/rels/w20Dll/symbols.txt + splits: config/GMPP01_00/rels/w20Dll/splits.txt + links: [] +- object: files/dll/w21Dll.rel + hash: 8ea052be8c7585a1ab152682a0698b631c5b566f + symbols: config/GMPE01_00/rels/w21Dll/symbols.txt + splits: config/GMPE01_00/rels/w21Dll/splits.txt + links: [] +- object: files/dll/ztardll.rel + hash: 8987f11fafd11f69161ca275967afe9c8b4e7b20 + symbols: config/GMPP01_00/rels/ztardll/symbols.txt + splits: config/GMPP01_00/rels/ztardll/splits.txt + links: [] +- object: files/dll/E3setupDLL.rel + hash: d59c60b0149a85782fa98d1a4da6cc768a09b473 + symbols: config/GMPP01_00/rels/E3setupDLL/symbols.txt + splits: config/GMPP01_00/rels/E3setupDLL/splits.txt + links: [_minigameDll] +- object: files/dll/m300Dll.rel + hash: eba8a17e8b263bc9cd601b1aea7e698a8785416a + symbols: config/GMPP01_00/rels/m300Dll/symbols.txt + splits: config/GMPP01_00/rels/m300Dll/splits.txt + links: [_minigameDll] +- object: files/dll/m401Dll.rel + hash: c457a4a45ebae776331484ba94f5798041a77a57 + symbols: config/GMPP01_00/rels/m401Dll/symbols.txt + splits: config/GMPP01_00/rels/m401Dll/splits.txt + links: [_minigameDll] + +extract: +- symbol: ank8x8_4b + binary: ank8x8_4b.bin + header: ank8x8_4b.inc +- symbol: refMapData0 + binary: refMapData0.anm + header: refMapData0.inc +- symbol: refMapData1 + binary: refMapData1.anm + header: refMapData1.inc +- symbol: refMapData2 + binary: refMapData2.anm + header: refMapData2.inc +- symbol: refMapData3 + binary: refMapData3.anm + header: refMapData3.inc +- symbol: refMapData4 + binary: refMapData4.anm + header: refMapData4.inc +- symbol: toonMapData + binary: toonMapData.anm + header: toonMapData.inc +- symbol: toonMapData2 + binary: toonMapData2.anm + header: toonMapData2.inc +- symbol: hiliteData + binary: hiliteData.anm + header: hiliteData.inc +- symbol: hiliteData2 + binary: hiliteData2.anm + header: hiliteData2.inc +- symbol: hiliteData3 + binary: hiliteData3.anm + header: hiliteData3.inc +- symbol: hiliteData4 + binary: hiliteData4.anm + header: hiliteData4.inc +- symbol: Ascii8x8_1bpp + binary: Ascii8x8_1bpp.bin + header: Ascii8x8_1bpp.inc +- symbol: coveropen_en + binary: coveropen_en.bin + header: coveropen_en.inc +- symbol: fatalerror_en + binary: fatalerror_en.bin + header: fatalerror_en.inc +- symbol: loading_en + binary: loading_en.bin + header: loading_en.inc +- symbol: nodisc_en + binary: nodisc_en.bin + header: nodisc_en.inc +- symbol: retryerror_en + binary: retryerror_en.bin + header: retryerror_en.inc +- symbol: wrongdisc_en + binary: wrongdisc_en.bin + header: wrongdisc_en.inc +- symbol: coveropen_en + binary: coveropen_en.bin + header: coveropen_en.inc +- symbol: fatalerror_en + binary: fatalerror_en.bin + header: fatalerror_en.inc +- symbol: loading_en + binary: loading_en.bin + header: loading_en.inc +- symbol: nodisc_en + binary: nodisc_en.bin + header: nodisc_en.inc +- symbol: retryerror_en + binary: retryerror_en.bin + header: retryerror_en.inc +- symbol: wrongdisc_en + binary: wrongdisc_en.bin + header: wrongdisc_en.inc +- symbol: coveropen_fr + binary: coveropen_fr.bin + header: coveropen_fr.inc +- symbol: fatalerror_fr + binary: fatalerror_fr.bin + header: fatalerror_fr.inc +- symbol: loading_fr + binary: loading_fr.bin + header: loading_fr.inc +- symbol: nodisc_fr + binary: nodisc_fr.bin + header: nodisc_fr.inc +- symbol: retryerror_fr + binary: retryerror_fr.bin + header: retryerror_fr.inc +- symbol: wrongdisc_fr + binary: wrongdisc_fr.bin + header: wrongdisc_fr.inc +- symbol: coveropen_ge + binary: coveropen_ge.bin + header: coveropen_ge.inc +- symbol: fatalerror_ge + binary: fatalerror_ge.bin + header: fatalerror_ge.inc +- symbol: loading_ge + binary: loading_ge.bin + header: loading_ge.inc +- symbol: nodisc_ge + binary: nodisc_ge.bin + header: nodisc_ge.inc +- symbol: retryerror_ge + binary: retryerror_ge.bin + header: retryerror_ge.inc +- symbol: wrongdisc_ge + binary: wrongdisc_ge.bin + header: wrongdisc_ge.inc +- symbol: coveropen_it + binary: coveropen_it.bin + header: coveropen_it.inc +- symbol: fatalerror_it + binary: fatalerror_it.bin + header: fatalerror_it.inc +- symbol: loading_it + binary: loading_it.bin + header: loading_it.inc +- symbol: nodisc_it + binary: nodisc_it.bin + header: nodisc_it.inc +- symbol: retryerror_it + binary: retryerror_it.bin + header: retryerror_it.inc +- symbol: wrongdisc_it + binary: wrongdisc_it.bin + header: wrongdisc_it.inc +- symbol: coveropen_sp + binary: coveropen_sp.bin + header: coveropen_sp.inc +- symbol: fatalerror_sp + binary: fatalerror_sp.bin + header: fatalerror_sp.inc +- symbol: loading_sp + binary: loading_sp.bin + header: loading_sp.inc +- symbol: nodisc_sp + binary: nodisc_sp.bin + header: nodisc_sp.inc +- symbol: retryerror_sp + binary: retryerror_sp.bin + header: retryerror_sp.inc +- symbol: wrongdisc_sp + binary: wrongdisc_sp.bin + header: wrongdisc_sp.inc diff --git a/config/GMPP01_00/rels/E3setupDLL/splits.txt b/config/GMPP01_00/rels/E3setupDLL/splits.txt new file mode 100644 index 00000000..d5a4c674 --- /dev/null +++ b/config/GMPP01_00/rels/E3setupDLL/splits.txt @@ -0,0 +1,22 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/E3setupDLL/mgselect.c: + .text start:0x00000000 end:0x0000133C + .rodata start:0x00000000 end:0x00000088 + .data start:0x00000000 end:0x00000250 + .bss start:0x00000000 end:0x00000028 + +REL/executor.c: + .text start:0x0000133C end:0x000013DC + +REL/E3setupDLL/main.c: + .text start:0x000013DC end:0x00005850 + .rodata start:0x00000088 end:0x00000130 + .data start:0x00000250 end:0x000004D0 + .bss start:0x00000028 end:0x000000F8 diff --git a/config/GMPP01_00/rels/E3setupDLL/symbols.txt b/config/GMPP01_00/rels/E3setupDLL/symbols.txt new file mode 100644 index 00000000..4089dcf6 --- /dev/null +++ b/config/GMPP01_00/rels/E3setupDLL/symbols.txt @@ -0,0 +1,205 @@ +E3MGSelectInit = .text:0x00000000; // type:function size:0x324 +StartMGSelect = .text:0x00000324; // type:function size:0x9C scope:local +UpdatePad = .text:0x000003C0; // type:function size:0xA0 scope:local +UpdateMGSelect = .text:0x00000460; // type:function size:0x584 scope:local +CreateMGSelect = .text:0x000009E4; // type:function size:0x528 scope:local +UpdateMGPic = .text:0x00000F0C; // type:function size:0x80 scope:local +CreateMGPic = .text:0x00000F8C; // type:function size:0x1AC scope:local +UpdateMGInterface = .text:0x00001138; // type:function size:0x14 scope:local +CreateMGInterface = .text:0x0000114C; // type:function size:0x1F0 scope:local +_prolog = .text:0x0000133C; // type:function size:0x54 scope:global +_epilog = .text:0x00001390; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000013DC; // type:function size:0x108 +E3MainInit = .text:0x000014E4; // type:function size:0x514 +E3LightInit = .text:0x000019F8; // type:function size:0x1AC +GetStickX = .text:0x00001BA4; // type:function size:0x7C scope:local +GetStickY = .text:0x00001C20; // type:function size:0x84 scope:local +GetBtn = .text:0x00001CA4; // type:function size:0x90 scope:local +GetBtnDown = .text:0x00001D34; // type:function size:0x24 scope:local +E3PadUpdate = .text:0x00001D58; // type:function size:0xFC +E3PadRead = .text:0x00001E54; // type:function size:0x1C0 +MotionMaxTimeGet = .text:0x00002014; // type:function size:0x78 +MotionShiftTimeGet = .text:0x0000208C; // type:function size:0x2C +InitMenuControl = .text:0x000020B8; // type:function size:0xA4 scope:local +UpdateMenuControl = .text:0x0000215C; // type:function size:0x400 scope:local +UpdateOvlWatch = .text:0x0000255C; // type:function size:0x124 scope:local +E3OvlWatchInit = .text:0x00002680; // type:function size:0x74 +UpdatePlayerCnt = .text:0x000026F4; // type:function size:0x344 scope:local +InitPlayerCnt = .text:0x00002A38; // type:function size:0x59C scope:local +UpdateCharSelCursor = .text:0x00002FD4; // type:function size:0x208 scope:local +UpdateCharSelPlayerCursor = .text:0x000031DC; // type:function size:0x37C scope:local +UpdateCharSelComCursor = .text:0x00003558; // type:function size:0x3B4 scope:local +CheckCharSel = .text:0x0000390C; // type:function size:0xAC scope:local +UpdateCharSel = .text:0x000039B8; // type:function size:0x2B8 scope:local +InitCharSel = .text:0x00003C70; // type:function size:0x534 scope:local +UpdateRumbleCfg = .text:0x000041A4; // type:function size:0x2DC scope:local +InitRumbleCfg = .text:0x00004480; // type:function size:0x520 scope:local +UpdateModeSel = .text:0x000049A0; // type:function size:0x59C scope:local +InitModeSel = .text:0x00004F3C; // type:function size:0x4E8 scope:local +E3BGUpdate = .text:0x00005424; // type:function size:0x100 scope:local +E3BGCreate = .text:0x00005524; // type:function size:0x184 +InitCamera = .text:0x000056A8; // type:function size:0x7C scope:local +UpdateCamera = .text:0x00005724; // type:function size:0x12C scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_2_rodata_0 = .rodata:0x00000000; // type:object size:0x10 +lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_2_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:float +lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_2_data_0 = .data:0x00000000; // type:object size:0x24 data:float +lbl_2_data_24 = .data:0x00000024; // type:object size:0x11 scope:local data:string +lbl_2_data_36 = .data:0x00000036; // type:object size:0x8 +mgOvlTbl = .data:0x0000003E; // type:object size:0x1A scope:local +mgIdTbl = .data:0x00000058; // type:object size:0x1C scope:local +mgNameTbl = .data:0x00000074; // type:object size:0x34 scope:local +lbl_2_data_A8 = .data:0x000000A8; // type:object size:0x21 data:string +lbl_2_data_C9 = .data:0x000000C9; // type:object size:0x16 data:string +lbl_2_data_DF = .data:0x000000DF; // type:object size:0x16 data:string +lbl_2_data_F5 = .data:0x000000F5; // type:object size:0x16 data:string +lbl_2_data_10B = .data:0x0000010B; // type:object size:0xD data:string +lbl_2_data_118 = .data:0x00000118; // type:object size:0x16 data:string +lbl_2_data_12E = .data:0x0000012E; // type:object size:0xD data:string +lbl_2_data_13B = .data:0x0000013B; // type:object size:0x16 data:string +lbl_2_data_151 = .data:0x00000151; // type:object size:0x16 data:string +lbl_2_data_167 = .data:0x00000167; // type:object size:0x16 data:string +lbl_2_data_17D = .data:0x0000017D; // type:object size:0x16 data:string +lbl_2_data_193 = .data:0x00000193; // type:object size:0x16 data:string +lbl_2_data_1A9 = .data:0x000001A9; // type:object size:0x16 data:string +mgNameTestTbl = .data:0x000001C0; // type:object size:0x34 scope:local +cursorYOfsTbl = .data:0x000001F4; // type:object size:0x14 scope:local data:float +mgPicTbl = .data:0x00000208; // type:object size:0x34 scope:local +startText = .data:0x0000023C; // type:object size:0x10 scope:local data:string +shadowPos = .data:0x00000250; // type:object size:0xC scope:local +shadowTarget = .data:0x0000025C; // type:object size:0xC scope:local +shadowUp = .data:0x00000268; // type:object size:0xC scope:local +lbl_2_data_274 = .data:0x00000274; // type:object size:0x60 data:float +playerCntTbl = .data:0x000002D4; // type:object size:0x8 scope:local +charTbl = .data:0x000002DC; // type:object size:0x10 scope:local +charSfxTbl = .data:0x000002EC; // type:object size:0x20 scope:local +lbl_2_data_30C = .data:0x0000030C; // type:object size:0x12 scope:local +lbl_2_data_31E = .data:0x0000031E; // type:object size:0x8 +playerCntMessTbl = .data:0x00000328; // type:object size:0x10 scope:local +charPosTbl = .data:0x00000338; // type:object size:0x40 scope:local data:float +charComSfxTbl = .data:0x00000378; // type:object size:0x20 scope:local +lbl_2_data_398 = .data:0x00000398; // type:object size:0xF scope:local data:string +charSpriteTbl = .data:0x000003A8; // type:object size:0x20 scope:local +cursorSpriteTbl = .data:0x000003C8; // type:object size:0x14 scope:local +hiliteSprTbl = .data:0x000003DC; // type:object size:0x14 scope:local +rumbleMess = .data:0x000003F0; // type:object size:0x8 scope:local +modeSelCursorPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local +boardSelCursorPosTbl = .data:0x00000408; // type:object size:0x10 scope:local +camViewTbl = .data:0x00000418; // type:object size:0x60 scope:local data:float +lbl_2_data_478 = .data:0x00000478; // type:object size:0x24 data:float +lbl_2_data_49C = .data:0x0000049C; // type:object size:0x24 data:float +lbl_2_data_4C0 = .data:0x000004C0; // type:object size:0x10 +lbl_2_bss_0 = .bss:0x00000000; // type:object size:0xA data:2byte +lbl_2_bss_A = .bss:0x0000000A; // type:object size:0x2 data:2byte +lbl_2_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_2_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte +lbl_2_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_2_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +mgPicObj = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +mgSelectObj = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +mgInterfaceObj = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +mgDefault = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte +repBtn = .bss:0x00000028; // type:object size:0x2 scope:local data:2byte +lbl_2_bss_2A = .bss:0x0000002A; // type:object size:0xA data:2byte +lbl_2_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte +lbl_2_bss_36 = .bss:0x00000036; // type:object size:0x2 data:2byte +lbl_2_bss_38 = .bss:0x00000038; // type:object size:0x2 data:2byte +lbl_2_bss_3A = .bss:0x0000003A; // type:object size:0x2 data:2byte +lbl_2_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_2_bss_40 = .bss:0x00000040; // type:object size:0x2 data:2byte +lbl_2_bss_44 = .bss:0x00000044; // type:object size:0x4 data:float +lbl_2_bss_48 = .bss:0x00000048; // type:object size:0xC data:float +lbl_2_bss_54 = .bss:0x00000054; // type:object size:0xC data:float +lbl_2_bss_60 = .bss:0x00000060; // type:object size:0x2 data:2byte +lbl_2_bss_62 = .bss:0x00000062; // type:object size:0x8 +lightE3 = .bss:0x0000006A; // type:object size:0x2 scope:local data:2byte +lbl_2_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:2byte +e3BGObj = .bss:0x00000070; // type:object size:0x4 data:4byte +configModeObj = .bss:0x00000074; // type:object size:0x10 scope:local data:4byte +lbl_2_bss_84 = .bss:0x00000084; // type:object size:0x8 data:4byte +cameraObj = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte +e3OvlWatchObj = .bss:0x00000090; // type:object size:0x4 data:4byte +e3ViewObj = .bss:0x00000094; // type:object size:0x4 data:4byte +e3MenuMainObj = .bss:0x00000098; // type:object size:0x4 data:4byte +e3CameraFov = .bss:0x0000009C; // type:object size:0x4 data:float +needCharKill = .bss:0x000000A0; // type:object size:0x4 scope:local data:4byte +e3ExitMode = .bss:0x000000A4; // type:object size:0x4 data:4byte +e3NextEvent = .bss:0x000000A8; // type:object size:0x4 data:4byte +e3NextOvl = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_2_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +e3ExitEnableF = .bss:0x000000B4; // type:object size:0x4 data:4byte +e3EvtNo = .bss:0x000000B8; // type:object size:0x4 scope:local data:4byte +e3ConfigPlayerCnt = .bss:0x000000BC; // type:object size:0x2 data:2byte +e3PadCtrl = .bss:0x000000BE; // type:object size:0x2 data:2byte +e3PadData = .bss:0x000000C0; // type:object size:0x20 +configE3 = .bss:0x000000E0; // type:object size:0x18 scope:local data:2byte diff --git a/config/GMPP01_00/rels/_minigameDll/splits.txt b/config/GMPP01_00/rels/_minigameDll/splits.txt new file mode 100644 index 00000000..7a4d7e18 --- /dev/null +++ b/config/GMPP01_00/rels/_minigameDll/splits.txt @@ -0,0 +1,14 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/_minigameDLL/_minigameDLL.c: + .text start:0x000000A0 end:0x000000F0 + .rodata start:0x00000000 end:0x00000010 + .data start:0x00000000 end:0x00000014 diff --git a/config/GMPP01_00/rels/_minigameDll/symbols.txt b/config/GMPP01_00/rels/_minigameDll/symbols.txt new file mode 100644 index 00000000..032e2444 --- /dev/null +++ b/config/GMPP01_00/rels/_minigameDll/symbols.txt @@ -0,0 +1,7 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x2C +fn_1_CC = .text:0x000000CC; // type:function size:0x24 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x14 data:string diff --git a/config/GMPP01_00/rels/bootDll/splits.txt b/config/GMPP01_00/rels/bootDll/splits.txt new file mode 100644 index 00000000..593d873d --- /dev/null +++ b/config/GMPP01_00/rels/bootDll/splits.txt @@ -0,0 +1,21 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/bootDll/main.c: + .text start:0x000000A0 end:0x00002AE0 + .rodata start:0x00000000 end:0x000000F8 + .data start:0x00000000 end:0x00003120 + .bss start:0x00000000 end:0x00000060 + +REL/bootDll/language.c: + .text start:0x00002AE0 end:0x00003D9C + .rodata start:0x000000F8 end:0x000001A0 + .data start:0x00003120 end:0x00003156 diff --git a/config/GMPP01_00/rels/bootDll/symbols.txt b/config/GMPP01_00/rels/bootDll/symbols.txt new file mode 100644 index 00000000..fa5f8812 --- /dev/null +++ b/config/GMPP01_00/rels/bootDll/symbols.txt @@ -0,0 +1,110 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x204 +BootExec = .text:0x000002A4; // type:function size:0x8B4 +UpdateDemoMess = .text:0x00000B58; // type:function size:0xC8 scope:local +DebugCamOutView = .text:0x00000C20; // type:function size:0x3B4 +DebugCamUpdate = .text:0x00000FD4; // type:function size:0xB88 +BootTitleCreate = .text:0x00001B5C; // type:function size:0x460 +BootTitleExec = .text:0x00001FBC; // type:function size:0xAA0 +NintendoDataDecode = .text:0x00002A5C; // type:function size:0x84 +LanguageMenuExec = .text:0x00002AE0; // type:function size:0x10C8 +LanguageBootGet = .text:0x00003BA8; // type:function size:0x1F4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 data:string +lbl_1_data_24 = .data:0x00000024; // type:object size:0x14 data:string +demoMessTimeTbl = .data:0x00000038; // type:object size:0x18 scope:local data:2byte +debugCamTbl = .data:0x00000050; // type:object size:0x4 scope:local +lbl_1_data_54 = .data:0x00000054; // type:object size:0x1A data:string +lbl_1_data_6E = .data:0x0000006E; // type:object size:0x13 data:string +lbl_1_data_81 = .data:0x00000081; // type:object size:0x1F +nintendoData = .data:0x000000A0; // type:object size:0x307D align:32 +flagFileTbl = .data:0x00003120; // type:object size:0x14 scope:local +lbl_1_data_3134 = .data:0x00003134; // type:object size:0x5 data:string +lbl_1_data_3139 = .data:0x00003139; // type:object size:0xD data:string +lbl_1_data_3146 = .data:0x00003146; // type:object size:0x10 data:string +debugCamOnF = .bss:0x00000000; // type:object size:0x4 data:4byte +initLanguageF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4 = .bss:0x00000008; // type:object size:0x2 +bootGrpId = .bss:0x0000000A; // type:object size:0x2 scope:local data:2byte +titleMdlId = .bss:0x0000000C; // type:object size:0x6 scope:local data:2byte +demoWinId = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_10 = .bss:0x00000014; // type:object size:0xC data:float +debugCamZoom = .bss:0x00000020; // type:object size:0x8 data:float +debugCamPos = .bss:0x00000028; // type:object size:0x18 data:float +debugCamRot = .bss:0x00000040; // type:object size:0x18 data:float +objman = .bss:0x00000058; // type:object size:0x4 data:4byte +debugOutView = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPP01_00/rels/instDll/splits.txt b/config/GMPP01_00/rels/instDll/splits.txt new file mode 100644 index 00000000..83d6ff27 --- /dev/null +++ b/config/GMPP01_00/rels/instDll/splits.txt @@ -0,0 +1,21 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/instDll/main.c: + .text start:0x000000A0 end:0x00005EA4 + .rodata start:0x00000000 end:0x00000208 + .data start:0x00000000 end:0x00000150 + .bss start:0x00000000 end:0x00000064 + +REL/instDll/font.c: + .text start:0x00005EA4 end:0x0000629C + .rodata start:0x00000208 end:0x00000210 + .data start:0x00000150 end:0x00000610 diff --git a/config/GMPP01_00/rels/instDll/symbols.txt b/config/GMPP01_00/rels/instDll/symbols.txt new file mode 100644 index 00000000..da39c5b5 --- /dev/null +++ b/config/GMPP01_00/rels/instDll/symbols.txt @@ -0,0 +1,149 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x8F4 +InstMain = .text:0x00000994; // type:function size:0xE50 scope:local +InstPlayerMain = .text:0x000017E4; // type:function size:0xA28 scope:local +InstHostMain = .text:0x0000220C; // type:function size:0x5F8 scope:local +InstWinMain = .text:0x00002804; // type:function size:0x79C scope:local +InstNameMain = .text:0x00002FA0; // type:function size:0x11D4 scope:local +CameraOutView = .text:0x00004174; // type:function size:0x3B4 scope:local +CameraDebug = .text:0x00004528; // type:function size:0xB88 scope:local +InstPicDraw = .text:0x000050B0; // type:function size:0xAB4 scope:local +ShadowDraw = .text:0x00005B64; // type:function size:0x340 scope:local +FontCreate = .text:0x00005EA4; // type:function size:0x3F8 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +instMode = .data:0x00000000; // type:object size:0x2 scope:local data:2byte +lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 scope:local data:string +instGrpTbl = .data:0x00000026; // type:object size:0x20 scope:local +instPlayerNumTbl = .data:0x00000046; // type:object size:0x8 scope:local +instBoxFile = .data:0x00000050; // type:object size:0x20 scope:local +instBackFile = .data:0x00000070; // type:object size:0x20 scope:local +lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 scope:local data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local data:string +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 scope:local data:string +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string +playerPosNameTbl = .data:0x000000B0; // type:object size:0x10 scope:local +playerDelayTbl = .data:0x000000C0; // type:object size:0x4 scope:local +hostFileTbl = .data:0x000000C4; // type:object size:0x48 scope:local +hostSeTbl = .data:0x0000010C; // type:object size:0x18 scope:local +instNamePosTbl = .data:0x00000124; // type:object size:0x20 scope:local data:float +cameraMask$858 = .data:0x00000144; // type:object size:0x4 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0x4 scope:local +instPicRadius = .data:0x0000014C; // type:object size:0x4 scope:local data:float +FontCharFile = .data:0x00000150; // type:object size:0x4C0 scope:local +debugCamOnF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +instBusyF = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte +instPage = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte +LanguageNo = .bss:0x00000008; // type:object size:0x1 scope:local data:byte +instFov = .bss:0x0000000C; // type:object size:0x4 scope:local data:float +instMesOfs = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte +instHostNo = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte +instMgNo = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte +instPicAnim = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +instBoxMdlId = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +cameraZoom = .bss:0x00000020; // type:object size:0x8 data:float +cameraPos = .bss:0x00000028; // type:object size:0x18 data:float +cameraRot = .bss:0x00000040; // type:object size:0x18 data:float +objman = .bss:0x00000058; // type:object size:0x4 data:4byte +outViewObj = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPP01_00/rels/m300Dll/splits.txt b/config/GMPP01_00/rels/m300Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPP01_00/rels/m300Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPP01_00/rels/m300Dll/symbols.txt b/config/GMPP01_00/rels/m300Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPP01_00/rels/m300Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPP01_00/rels/m302Dll/splits.txt b/config/GMPP01_00/rels/m302Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPP01_00/rels/m302Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPP01_00/rels/m302Dll/symbols.txt b/config/GMPP01_00/rels/m302Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPP01_00/rels/m302Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPP01_00/rels/m303Dll/splits.txt b/config/GMPP01_00/rels/m303Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPP01_00/rels/m303Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPP01_00/rels/m303Dll/symbols.txt b/config/GMPP01_00/rels/m303Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPP01_00/rels/m303Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPP01_00/rels/m330Dll/splits.txt b/config/GMPP01_00/rels/m330Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPP01_00/rels/m330Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPP01_00/rels/m330Dll/symbols.txt b/config/GMPP01_00/rels/m330Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPP01_00/rels/m330Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPP01_00/rels/m333Dll/splits.txt b/config/GMPP01_00/rels/m333Dll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPP01_00/rels/m333Dll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPP01_00/rels/m333Dll/symbols.txt b/config/GMPP01_00/rels/m333Dll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPP01_00/rels/m333Dll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPP01_00/rels/m401Dll/splits.txt b/config/GMPP01_00/rels/m401Dll/splits.txt new file mode 100644 index 00000000..d7d2d541 --- /dev/null +++ b/config/GMPP01_00/rels/m401Dll/splits.txt @@ -0,0 +1,22 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m401Dll/main.c: + .text start:0x000000A0 end:0x00010244 + .rodata start:0x00000000 end:0x00000450 + .data start:0x00000000 end:0x00000478 + .bss start:0x00000000 end:0x00000120 + +REL/m401Dll/main_ex.c: + .text start:0x00010244 end:0x00014E18 + .rodata start:0x00000450 end:0x000005E8 + .data start:0x00000478 end:0x00000498 + .bss start:0x00000120 end:0x00000254 diff --git a/config/GMPP01_00/rels/m401Dll/symbols.txt b/config/GMPP01_00/rels/m401Dll/symbols.txt new file mode 100644 index 00000000..bab1a956 --- /dev/null +++ b/config/GMPP01_00/rels/m401Dll/symbols.txt @@ -0,0 +1,522 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x66C +fn_2_70C = .text:0x0000070C; // type:function size:0x304 +fn_2_A10 = .text:0x00000A10; // type:function size:0x88 +fn_2_A98 = .text:0x00000A98; // type:function size:0x54 +fn_2_AEC = .text:0x00000AEC; // type:function size:0x130 +fn_2_C1C = .text:0x00000C1C; // type:function size:0x5B4 +fn_2_11D0 = .text:0x000011D0; // type:function size:0x3F4 +fn_2_15C4 = .text:0x000015C4; // type:function size:0xD8 +fn_2_169C = .text:0x0000169C; // type:function size:0x1BC +fn_2_1858 = .text:0x00001858; // type:function size:0x1E0 +fn_2_1A38 = .text:0x00001A38; // type:function size:0x148 +fn_2_1B80 = .text:0x00001B80; // type:function size:0x170 +fn_2_1CF0 = .text:0x00001CF0; // type:function size:0xF8 +fn_2_1DE8 = .text:0x00001DE8; // type:function size:0x2C8 +fn_2_20B0 = .text:0x000020B0; // type:function size:0x148 +fn_2_21F8 = .text:0x000021F8; // type:function size:0x4E8 +fn_2_26E0 = .text:0x000026E0; // type:function size:0x5DC +fn_2_2CBC = .text:0x00002CBC; // type:function size:0xA8 +fn_2_2D64 = .text:0x00002D64; // type:function size:0x68 +fn_2_2DCC = .text:0x00002DCC; // type:function size:0x54 +fn_2_2E20 = .text:0x00002E20; // type:function size:0xB0 +fn_2_2ED0 = .text:0x00002ED0; // type:function size:0xCC +fn_2_2F9C = .text:0x00002F9C; // type:function size:0x4 +fn_2_2FA0 = .text:0x00002FA0; // type:function size:0x4 +fn_2_2FA4 = .text:0x00002FA4; // type:function size:0x410 +fn_2_33B4 = .text:0x000033B4; // type:function size:0x104 +fn_2_34B8 = .text:0x000034B8; // type:function size:0x380 +fn_2_3838 = .text:0x00003838; // type:function size:0x2EC +fn_2_3B24 = .text:0x00003B24; // type:function size:0x404 +fn_2_3F28 = .text:0x00003F28; // type:function size:0x978 +fn_2_48A0 = .text:0x000048A0; // type:function size:0x1420 +fn_2_5CC0 = .text:0x00005CC0; // type:function size:0x93C +fn_2_65FC = .text:0x000065FC; // type:function size:0x4F8 +fn_2_6AF4 = .text:0x00006AF4; // type:function size:0x50 +fn_2_6B44 = .text:0x00006B44; // type:function size:0x150 +fn_2_6C94 = .text:0x00006C94; // type:function size:0x9AC +fn_2_7640 = .text:0x00007640; // type:function size:0x6C +fn_2_76AC = .text:0x000076AC; // type:function size:0x280 +fn_2_792C = .text:0x0000792C; // type:function size:0x310 +fn_2_7C3C = .text:0x00007C3C; // type:function size:0x78 +fn_2_7CB4 = .text:0x00007CB4; // type:function size:0x1B8 +fn_2_7E6C = .text:0x00007E6C; // type:function size:0x70 +fn_2_7EDC = .text:0x00007EDC; // type:function size:0x574 +fn_2_8450 = .text:0x00008450; // type:function size:0x2EC +fn_2_873C = .text:0x0000873C; // type:function size:0x12C +fn_2_8868 = .text:0x00008868; // type:function size:0x100 +fn_2_8968 = .text:0x00008968; // type:function size:0x1F0 +fn_2_8B58 = .text:0x00008B58; // type:function size:0x100 +fn_2_8C58 = .text:0x00008C58; // type:function size:0x21C +fn_2_8E74 = .text:0x00008E74; // type:function size:0x338 +fn_2_91AC = .text:0x000091AC; // type:function size:0xEC +fn_2_9298 = .text:0x00009298; // type:function size:0x34C +fn_2_95E4 = .text:0x000095E4; // type:function size:0x150 +fn_2_9734 = .text:0x00009734; // type:function size:0x68 +fn_2_979C = .text:0x0000979C; // type:function size:0xF0 +fn_2_988C = .text:0x0000988C; // type:function size:0x118 +fn_2_99A4 = .text:0x000099A4; // type:function size:0x1EC +fn_2_9B90 = .text:0x00009B90; // type:function size:0x170 +fn_2_9D00 = .text:0x00009D00; // type:function size:0x128 +fn_2_9E28 = .text:0x00009E28; // type:function size:0x288 +fn_2_A0B0 = .text:0x0000A0B0; // type:function size:0x268 +fn_2_A318 = .text:0x0000A318; // type:function size:0x58C +fn_2_A8A4 = .text:0x0000A8A4; // type:function size:0x70 +fn_2_A914 = .text:0x0000A914; // type:function size:0x2C +fn_2_A940 = .text:0x0000A940; // type:function size:0x2EC +fn_2_AC2C = .text:0x0000AC2C; // type:function size:0x1164 +fn_2_BD90 = .text:0x0000BD90; // type:function size:0x3A0 +fn_2_C130 = .text:0x0000C130; // type:function size:0x5B0 +fn_2_C6E0 = .text:0x0000C6E0; // type:function size:0x164 +fn_2_C844 = .text:0x0000C844; // type:function size:0x270 +fn_2_CAB4 = .text:0x0000CAB4; // type:function size:0x5D8 +fn_2_D08C = .text:0x0000D08C; // type:function size:0xF8 +fn_2_D184 = .text:0x0000D184; // type:function size:0x268 +fn_2_D3EC = .text:0x0000D3EC; // type:function size:0x4E4 +fn_2_D8D0 = .text:0x0000D8D0; // type:function size:0x300 +fn_2_DBD0 = .text:0x0000DBD0; // type:function size:0x250 +fn_2_DE20 = .text:0x0000DE20; // type:function size:0xA0 +fn_2_DEC0 = .text:0x0000DEC0; // type:function size:0x390 +fn_2_E250 = .text:0x0000E250; // type:function size:0x118 +fn_2_E368 = .text:0x0000E368; // type:function size:0xBC +fn_2_E424 = .text:0x0000E424; // type:function size:0x24C +fn_2_E670 = .text:0x0000E670; // type:function size:0x30 +fn_2_E6A0 = .text:0x0000E6A0; // type:function size:0x20 +fn_2_E6C0 = .text:0x0000E6C0; // type:function size:0x2C +fn_2_E6EC = .text:0x0000E6EC; // type:function size:0x1090 +fn_2_F77C = .text:0x0000F77C; // type:function size:0x4C8 +fn_2_FC44 = .text:0x0000FC44; // type:function size:0x358 +fn_2_FF9C = .text:0x0000FF9C; // type:function size:0x2A8 +fn_2_10244 = .text:0x00010244; // type:function size:0x1DC +fn_2_10420 = .text:0x00010420; // type:function size:0x2F4 +fn_2_10714 = .text:0x00010714; // type:function size:0x8C +fn_2_107A0 = .text:0x000107A0; // type:function size:0x12C +fn_2_108CC = .text:0x000108CC; // type:function size:0xB8 +fn_2_10984 = .text:0x00010984; // type:function size:0x88 +fn_2_10A0C = .text:0x00010A0C; // type:function size:0x80 +fn_2_10A8C = .text:0x00010A8C; // type:function size:0x924 +fn_2_113B0 = .text:0x000113B0; // type:function size:0x504 +fn_2_118B4 = .text:0x000118B4; // type:function size:0x1B8 +fn_2_11A6C = .text:0x00011A6C; // type:function size:0x110 +fn_2_11B7C = .text:0x00011B7C; // type:function size:0xB8 +fn_2_11C34 = .text:0x00011C34; // type:function size:0x110 +fn_2_11D44 = .text:0x00011D44; // type:function size:0x104 +fn_2_11E48 = .text:0x00011E48; // type:function size:0xB8 +fn_2_11F00 = .text:0x00011F00; // type:function size:0xB8 +fn_2_11FB8 = .text:0x00011FB8; // type:function size:0x444 +fn_2_123FC = .text:0x000123FC; // type:function size:0x2D0 +fn_2_126CC = .text:0x000126CC; // type:function size:0x2C +fn_2_126F8 = .text:0x000126F8; // type:function size:0x43C +fn_2_12B34 = .text:0x00012B34; // type:function size:0x4EC +fn_2_13020 = .text:0x00013020; // type:function size:0x4F0 +fn_2_13510 = .text:0x00013510; // type:function size:0x670 +fn_2_13B80 = .text:0x00013B80; // type:function size:0x634 +fn_2_141B4 = .text:0x000141B4; // type:function size:0x120 +fn_2_142D4 = .text:0x000142D4; // type:function size:0x4 +fn_2_142D8 = .text:0x000142D8; // type:function size:0x36C +fn_2_14644 = .text:0x00014644; // type:function size:0xF8 +fn_2_1473C = .text:0x0001473C; // type:function size:0x7C +fn_2_147B8 = .text:0x000147B8; // type:function size:0x660 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_2_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_2_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_2_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_2_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_2_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_2_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_2_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_2_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_2_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_2_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_2_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_2_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_2_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_2_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_2_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_2_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_2_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_2_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_2_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_2_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_2_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1DC = .rodata:0x000001DC; // type:object size:0x10 scope:local data:4byte +lbl_2_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_2_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_2_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_2_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_2_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_2_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_2_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_2_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_2_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_2_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_2_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_2_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_2_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_2_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_2_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_2_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_2_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_2_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_2_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_2_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_2_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_2_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_2_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_2_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_2_rodata_290 = .rodata:0x00000290; // type:object size:0x40 scope:local data:2byte +lbl_2_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:2byte +lbl_2_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:2byte +lbl_2_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:2byte +lbl_2_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_2_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_2_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_2_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_2_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_2_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_2_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_2_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_2_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_2_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_2_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_2_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_2_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_2_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_2_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_2_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_2_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_2_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_2_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_2_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_2_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_2_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_2_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_2_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_2_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_2_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_2_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_2_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_2_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_2_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_2_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_2_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_2_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_2_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_2_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_2_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_2_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_2_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_2_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_2_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_2_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_2_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_2_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_2_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_2_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_2_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_2_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_2_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_2_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_2_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_2_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_2_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_2_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_2_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_2_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_2_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_2_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_2_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_2_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_2_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_2_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_2_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_2_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_2_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_2_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_2_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_2_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double +lbl_2_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_2_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:double +lbl_2_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_2_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_2_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_2_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_2_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_2_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_2_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_2_rodata_590 = .rodata:0x00000590; // type:object size:0x8 scope:local data:double +lbl_2_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_2_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_2_data_0 = .data:0x00000000; // type:object size:0x4 data:float +lbl_2_data_4 = .data:0x00000004; // type:object size:0x10 +lbl_2_data_14 = .data:0x00000014; // type:object size:0xC +lbl_2_data_20 = .data:0x00000020; // type:object size:0xC +lbl_2_data_2C = .data:0x0000002C; // type:object size:0x4 +lbl_2_data_30 = .data:0x00000030; // type:object size:0xC data:float +lbl_2_data_3C = .data:0x0000003C; // type:object size:0xC +lbl_2_data_48 = .data:0x00000048; // type:object size:0xC data:float +lbl_2_data_54 = .data:0x00000054; // type:object size:0x1B scope:local data:string +lbl_2_data_6F = .data:0x0000006F; // type:object size:0x11 +lbl_2_data_80 = .data:0x00000080; // type:object size:0x20 +lbl_2_data_A0 = .data:0x000000A0; // type:object size:0x14 +lbl_2_data_B4 = .data:0x000000B4; // type:object size:0x18 +lbl_2_data_CC = .data:0x000000CC; // type:object size:0x28 +lbl_2_data_F4 = .data:0x000000F4; // type:object size:0x9 scope:local data:string +lbl_2_data_FD = .data:0x000000FD; // type:object size:0x9 scope:local data:string +lbl_2_data_106 = .data:0x00000106; // type:object size:0x9 scope:local data:string +lbl_2_data_10F = .data:0x0000010F; // type:object size:0x9 scope:local data:string +lbl_2_data_118 = .data:0x00000118; // type:object size:0xC +lbl_2_data_124 = .data:0x00000124; // type:object size:0x34 data:4byte +lbl_2_data_158 = .data:0x00000158; // type:object size:0x140 +lbl_2_data_298 = .data:0x00000298; // type:object size:0x30 +lbl_2_data_2C8 = .data:0x000002C8; // type:object size:0x30 +jumptable_2_data_2F8 = .data:0x000002F8; // type:object size:0x30 scope:local +lbl_2_data_32C = .data:0x0000032C; // type:object size:0x8 +lbl_2_data_334 = .data:0x00000334; // type:object size:0xF0 +lbl_2_data_424 = .data:0x00000424; // type:object size:0x8 +lbl_2_data_42C = .data:0x0000042C; // type:object size:0x28 +lbl_2_data_454 = .data:0x00000454; // type:object size:0xC scope:local data:string +lbl_2_data_460 = .data:0x00000460; // type:object size:0xC +lbl_2_data_46C = .data:0x0000046C; // type:object size:0x5 scope:local data:string +lbl_2_data_471 = .data:0x00000471; // type:object size:0x7 +jumptable_2_data_478 = .data:0x00000478; // type:object size:0x20 scope:local +lbl_2_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_2_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_2_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_2_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte +lbl_2_bss_10 = .bss:0x00000010; // type:object size:0x4 data:float +lbl_2_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_2_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_2_bss_1A = .bss:0x0000001A; // type:object size:0x2 data:2byte +lbl_2_bss_1C = .bss:0x0000001C; // type:object size:0x10 data:4byte +lbl_2_bss_2C = .bss:0x0000002C; // type:object size:0xC data:float +lbl_2_bss_38 = .bss:0x00000038; // type:object size:0xC data:float +lbl_2_bss_44 = .bss:0x00000044; // type:object size:0xC data:float +lbl_2_bss_50 = .bss:0x00000050; // type:object size:0x4 data:float +lbl_2_bss_54 = .bss:0x00000054; // type:object size:0xC data:4byte +lbl_2_bss_60 = .bss:0x00000060; // type:object size:0xC data:float +lbl_2_bss_6C = .bss:0x0000006C; // type:object size:0xC data:float +lbl_2_bss_78 = .bss:0x00000078; // type:object size:0xC data:float +lbl_2_bss_84 = .bss:0x00000084; // type:object size:0x4 data:float +lbl_2_bss_88 = .bss:0x00000088; // type:object size:0x4 data:float +lbl_2_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_2_bss_90 = .bss:0x00000090; // type:object size:0x14 data:4byte +lbl_2_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_2_bss_A8 = .bss:0x000000A8; // type:object size:0x2 data:2byte +lbl_2_bss_AA = .bss:0x000000AA; // type:object size:0x8 data:2byte +lbl_2_bss_B2 = .bss:0x000000B2; // type:object size:0x8 data:2byte +lbl_2_bss_BA = .bss:0x000000BA; // type:object size:0x2 data:2byte +lbl_2_bss_BE = .bss:0x000000BE; // type:object size:0x2 data:2byte +lbl_2_bss_C0 = .bss:0x000000C0; // type:object size:0x2 data:2byte +lbl_2_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_2_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_2_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_2_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_2_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte +lbl_2_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_2_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte +lbl_2_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte +lbl_2_bss_E4 = .bss:0x000000E4; // type:object size:0x10 +lbl_2_bss_F4 = .bss:0x000000F4; // type:object size:0x4 data:4byte +lbl_2_bss_F8 = .bss:0x000000F8; // type:object size:0x4 data:4byte +lbl_2_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_2_bss_100 = .bss:0x00000100; // type:object size:0x8 data:4byte +lbl_2_bss_108 = .bss:0x00000108; // type:object size:0x4 data:4byte +lbl_2_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte +lbl_2_bss_110 = .bss:0x00000110; // type:object size:0x4 data:4byte +lbl_2_bss_114 = .bss:0x00000114; // type:object size:0x4 data:4byte +lbl_2_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte +lbl_2_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte +lbl_2_bss_120 = .bss:0x00000120; // type:object size:0x2 data:2byte +lbl_2_bss_124 = .bss:0x00000124; // type:object size:0x4 data:float +lbl_2_bss_128 = .bss:0x00000128; // type:object size:0x4 data:float +lbl_2_bss_12C = .bss:0x0000012C; // type:object size:0x8 data:float +lbl_2_bss_134 = .bss:0x00000134; // type:object size:0x2 data:2byte +lbl_2_bss_136 = .bss:0x00000136; // type:object size:0x8 +lbl_2_bss_13E = .bss:0x0000013E; // type:object size:0xE2 +lbl_2_bss_220 = .bss:0x00000220; // type:object size:0x18 data:4byte +lbl_2_bss_238 = .bss:0x00000238; // type:object size:0x4 data:4byte +lbl_2_bss_23C = .bss:0x0000023C; // type:object size:0x4 data:4byte +lbl_2_bss_240 = .bss:0x00000240; // type:object size:0x4 data:4byte +lbl_2_bss_244 = .bss:0x00000244; // type:object size:0x4 data:4byte +lbl_2_bss_248 = .bss:0x00000248; // type:object size:0x4 data:4byte +lbl_2_bss_24C = .bss:0x0000024C; // type:object size:0x4 data:4byte +lbl_2_bss_250 = .bss:0x00000250; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m402Dll/splits.txt b/config/GMPP01_00/rels/m402Dll/splits.txt new file mode 100644 index 00000000..61b6a88d --- /dev/null +++ b/config/GMPP01_00/rels/m402Dll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m402Dll/main.c: + .text start:0x00000000 end:0x00009B6C + .rodata start:0x00000000 end:0x00000194 + .data start:0x00000000 end:0x000004C6 + .bss start:0x00000000 end:0x00000210 diff --git a/config/GMPP01_00/rels/m402Dll/symbols.txt b/config/GMPP01_00/rels/m402Dll/symbols.txt new file mode 100644 index 00000000..d31e3908 --- /dev/null +++ b/config/GMPP01_00/rels/m402Dll/symbols.txt @@ -0,0 +1,206 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 scope:local +fn_1_24 = .text:0x00000024; // type:function size:0x88 scope:local +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 scope:local +fn_1_150 = .text:0x00000150; // type:function size:0x24 scope:local +fn_1_174 = .text:0x00000174; // type:function size:0x164 scope:local +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C scope:local +fn_1_414 = .text:0x00000414; // type:function size:0x58 scope:local +fn_1_46C = .text:0x0000046C; // type:function size:0x114 scope:local +fn_1_580 = .text:0x00000580; // type:function size:0x204 scope:local +fn_1_798 = .text:0x00000784; // type:function size:0x240 scope:local +fn_1_9EC = .text:0x000009C4; // type:function size:0x54 scope:local +fn_1_A40 = .text:0x00000A18; // type:function size:0x10C scope:local +fn_1_B4C = .text:0x00000B24; // type:function size:0x680 scope:local +fn_1_11F4 = .text:0x000011A4; // type:function size:0x15C scope:local +fn_1_1350 = .text:0x00001300; // type:function size:0x8C scope:local +fn_1_13DC = .text:0x0000138C; // type:function size:0x334 scope:local +fn_1_1710 = .text:0x000016C0; // type:function size:0x350 scope:local +fn_1_1A60 = .text:0x00001A10; // type:function size:0x2B8 scope:local +fn_1_1D18 = .text:0x00001CC8; // type:function size:0x58 scope:local +fn_1_1D70 = .text:0x00001D20; // type:function size:0xB0 scope:local +fn_1_1E20 = .text:0x00001DD0; // type:function size:0x104 scope:local +fn_1_1F24 = .text:0x00001ED4; // type:function size:0x34 scope:local +fn_1_1F58 = .text:0x00001F08; // type:function size:0x6C scope:local +fn_1_1FC4 = .text:0x00001F74; // type:function size:0x3F0 scope:local +_prolog = .text:0x00002364; // type:function size:0x54 scope:global +_epilog = .text:0x000023B8; // type:function size:0x4C scope:global +fn_1_2454 = .text:0x00002404; // type:function size:0x2F0 scope:local +fn_1_2744 = .text:0x000026F4; // type:function size:0x64 scope:local +fn_1_27A8 = .text:0x00002758; // type:function size:0xD8 scope:local +fn_1_2880 = .text:0x00002830; // type:function size:0xF0 scope:local +fn_1_2970 = .text:0x00002920; // type:function size:0x1C0 scope:local +fn_1_2B30 = .text:0x00002AE0; // type:function size:0x28C scope:local +fn_1_2DBC = .text:0x00002D6C; // type:function size:0x380 scope:local +fn_1_313C = .text:0x000030EC; // type:function size:0xC8 scope:local +fn_1_3204 = .text:0x000031B4; // type:function size:0xF8C scope:local +fn_1_4190 = .text:0x00004140; // type:function size:0xF4 scope:local +fn_1_4284 = .text:0x00004234; // type:function size:0x154 scope:local +fn_1_43D8 = .text:0x00004388; // type:function size:0x1FF0 scope:local +fn_1_63C8 = .text:0x00006378; // type:function size:0x490 scope:local +fn_1_6858 = .text:0x00006808; // type:function size:0x4 scope:local +fn_1_685C = .text:0x0000680C; // type:function size:0x258 scope:local +fn_1_6AB4 = .text:0x00006A64; // type:function size:0x3B0 scope:local +fn_1_6E64 = .text:0x00006E14; // type:function size:0x1BC scope:local +fn_1_7020 = .text:0x00006FD0; // type:function size:0xC4 scope:local +fn_1_70E4 = .text:0x00007094; // type:function size:0x86C scope:local +fn_1_7950 = .text:0x00007900; // type:function size:0x19C scope:local +fn_1_7AEC = .text:0x00007A9C; // type:function size:0x25C scope:local +fn_1_7D48 = .text:0x00007CF8; // type:function size:0x4 scope:local +fn_1_7D4C = .text:0x00007CFC; // type:function size:0x134 scope:local +fn_1_7E80 = .text:0x00007E30; // type:function size:0x4 scope:local +fn_1_7E84 = .text:0x00007E34; // type:function size:0x1C4 scope:local +fn_1_8048 = .text:0x00007FF8; // type:function size:0x1D0 scope:local +fn_1_8218 = .text:0x000081C8; // type:function size:0xE38 scope:local +fn_1_9058 = .text:0x00009000; // type:function size:0x1EC scope:local +ObjectSetup = .text:0x000091EC; // type:function size:0x8B0 +fn_1_9AF4 = .text:0x00009A9C; // type:function size:0xD0 scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 scope:local +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC scope:local data:4byte +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC scope:local +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC scope:local data:4byte +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC scope:local +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC scope:local +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x14 scope:local +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC scope:local +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC scope:local +lbl_1_data_78 = .data:0x00000078; // type:object size:0x160 scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x10 scope:local +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC scope:local +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x8 scope:local +lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 scope:local +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1C scope:local +lbl_1_data_234 = .data:0x00000234; // type:object size:0x190 scope:local +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x14 scope:local +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x1A scope:local data:string +lbl_1_data_3F2 = .data:0x000003F2; // type:object size:0x9 scope:local data:string +lbl_1_data_3FB = .data:0x000003FB; // type:object size:0x6 scope:local data:string +lbl_1_data_401 = .data:0x00000401; // type:object size:0x10 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x1F scope:local +jumptable_1_data_430 = .data:0x00000430; // type:object size:0x40 scope:local +lbl_1_data_470 = .data:0x00000470; // type:object size:0x17 scope:local data:string +lbl_1_data_487 = .data:0x00000487; // type:object size:0x1B scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x24 scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xE scope:local +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 scope:local data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x100 scope:local +lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x40 scope:local data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1AA = .bss:0x000001AA; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1EC = .bss:0x000001EC; // type:object size:0x18 scope:local data:4byte +lbl_1_bss_204 = .bss:0x00000204; // type:object size:0xC scope:local data:4byte diff --git a/config/GMPP01_00/rels/m403Dll/splits.txt b/config/GMPP01_00/rels/m403Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m403Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m403Dll/symbols.txt b/config/GMPP01_00/rels/m403Dll/symbols.txt new file mode 100644 index 00000000..33bec762 --- /dev/null +++ b/config/GMPP01_00/rels/m403Dll/symbols.txt @@ -0,0 +1,259 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x384 +fn_1_424 = .text:0x00000424; // type:function size:0x20 +fn_1_444 = .text:0x00000444; // type:function size:0x3E8 +fn_1_82C = .text:0x0000082C; // type:function size:0x9E8 +fn_1_1214 = .text:0x00001214; // type:function size:0x60 +fn_1_1274 = .text:0x00001274; // type:function size:0x1EC +fn_1_1460 = .text:0x00001460; // type:function size:0x288 +fn_1_16E8 = .text:0x000016E8; // type:function size:0x104 +fn_1_17EC = .text:0x000017EC; // type:function size:0x274 +fn_1_1A60 = .text:0x00001A60; // type:function size:0xA0 +fn_1_1B00 = .text:0x00001B00; // type:function size:0x2B8 +fn_1_1DB8 = .text:0x00001DB8; // type:function size:0x28 +fn_1_1DE0 = .text:0x00001DE0; // type:function size:0x388 +fn_1_2168 = .text:0x00002168; // type:function size:0x14C +fn_1_22B4 = .text:0x000022B4; // type:function size:0x2F4 +fn_1_25A8 = .text:0x000025A8; // type:function size:0xA44 +fn_1_2FEC = .text:0x00002FEC; // type:function size:0x824 +fn_1_3810 = .text:0x00003810; // type:function size:0x94 +fn_1_38A4 = .text:0x000038A4; // type:function size:0x2EC +fn_1_3B90 = .text:0x00003B90; // type:function size:0x1EC +fn_1_3D7C = .text:0x00003D7C; // type:function size:0xE0 +fn_1_3E5C = .text:0x00003E5C; // type:function size:0x1C0 +fn_1_401C = .text:0x0000401C; // type:function size:0x9C +fn_1_40B8 = .text:0x000040B8; // type:function size:0x480 +fn_1_4538 = .text:0x00004538; // type:function size:0x54 +fn_1_458C = .text:0x0000458C; // type:function size:0x168 +fn_1_46F4 = .text:0x000046F4; // type:function size:0x120 +fn_1_4814 = .text:0x00004814; // type:function size:0x30C +fn_1_4B20 = .text:0x00004B20; // type:function size:0x78 +fn_1_4B98 = .text:0x00004B98; // type:function size:0x11C +fn_1_4CB4 = .text:0x00004CB4; // type:function size:0x78 +fn_1_4D2C = .text:0x00004D2C; // type:function size:0x2D8 +fn_1_5004 = .text:0x00005004; // type:function size:0x2B8 +fn_1_52BC = .text:0x000052BC; // type:function size:0x154 +fn_1_5410 = .text:0x00005410; // type:function size:0x3E0 +fn_1_57F0 = .text:0x000057F0; // type:function size:0x214 +fn_1_5A04 = .text:0x00005A04; // type:function size:0x198 +fn_1_5B9C = .text:0x00005B9C; // type:function size:0xD8 +fn_1_5C74 = .text:0x00005C74; // type:function size:0xBC +fn_1_5D30 = .text:0x00005D30; // type:function size:0x33C +fn_1_606C = .text:0x0000606C; // type:function size:0x4B0 +fn_1_651C = .text:0x0000651C; // type:function size:0x260 +fn_1_677C = .text:0x0000677C; // type:function size:0x20 +fn_1_679C = .text:0x0000679C; // type:function size:0x84 +fn_1_6820 = .text:0x00006820; // type:function size:0x4 +fn_1_6824 = .text:0x00006824; // type:function size:0x16C +fn_1_6990 = .text:0x00006990; // type:function size:0x318 +fn_1_6CA8 = .text:0x00006CA8; // type:function size:0x240 +fn_1_6EE8 = .text:0x00006EE8; // type:function size:0x110 +fn_1_6FF8 = .text:0x00006FF8; // type:function size:0x400 +fn_1_73F8 = .text:0x000073F8; // type:function size:0x5B4 +fn_1_79AC = .text:0x000079AC; // type:function size:0xFC +fn_1_7AA8 = .text:0x00007AA8; // type:function size:0x88 +fn_1_7B30 = .text:0x00007B30; // type:function size:0xB4 +fn_1_7BE4 = .text:0x00007BE4; // type:function size:0x4C +fn_1_7C30 = .text:0x00007C30; // type:function size:0x10 +fn_1_7C40 = .text:0x00007C40; // type:function size:0x20 +fn_1_7C60 = .text:0x00007C60; // type:function size:0x10 +fn_1_7C70 = .text:0x00007C70; // type:function size:0xA4 +fn_1_7D14 = .text:0x00007D14; // type:function size:0x274 +fn_1_7F88 = .text:0x00007F88; // type:function size:0x15C +fn_1_80E4 = .text:0x000080E4; // type:function size:0x180 +fn_1_8264 = .text:0x00008264; // type:function size:0x10 +fn_1_8274 = .text:0x00008274; // type:function size:0x10 +fn_1_8284 = .text:0x00008284; // type:function size:0x5C +fn_1_82E0 = .text:0x000082E0; // type:function size:0x1A0 +fn_1_8480 = .text:0x00008480; // type:function size:0x200 +fn_1_8680 = .text:0x00008680; // type:function size:0x30 +fn_1_86B0 = .text:0x000086B0; // type:function size:0x8CC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x9 data:byte +lbl_1_rodata_AD = .rodata:0x000000AD; // type:object size:0xB data:byte +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0xC +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x28 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x20 +jumptable_1_data_8C = .data:0x0000008C; // type:object size:0x1C scope:local +jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x20 +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 +lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte +lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 +lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 +lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 +lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 +lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 +lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 +lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 +lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 +lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 +lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC data:4byte +lbl_1_data_ADC = .data:0x00000ADC; // type:object size:0xC data:4byte +lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x14 data:4byte +lbl_1_data_AFC = .data:0x00000AFC; // type:object size:0x18 +lbl_1_data_B14 = .data:0x00000B14; // type:object size:0x18 +lbl_1_data_B2C = .data:0x00000B2C; // type:object size:0x48 +lbl_1_data_B74 = .data:0x00000B74; // type:object size:0x30 +lbl_1_data_BA4 = .data:0x00000BA4; // type:object size:0x18 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0xC data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 data:2byte +lbl_1_bss_2A = .bss:0x0000002A; // type:object size:0x2 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x2 data:2byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x18 +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:float +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x14 +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m404Dll/splits.txt b/config/GMPP01_00/rels/m404Dll/splits.txt new file mode 100644 index 00000000..a69fcd5d --- /dev/null +++ b/config/GMPP01_00/rels/m404Dll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m404Dll/main.c: + .text start:0x000000A0 end:0x00006C88 + .rodata start:0x00000000 end:0x00000148 + .data start:0x00000000 end:0x00000A0C + .bss start:0x00000000 end:0x0000005C diff --git a/config/GMPP01_00/rels/m404Dll/symbols.txt b/config/GMPP01_00/rels/m404Dll/symbols.txt new file mode 100644 index 00000000..9a309233 --- /dev/null +++ b/config/GMPP01_00/rels/m404Dll/symbols.txt @@ -0,0 +1,155 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x2DC +fn_1_37C = .text:0x0000037C; // type:function size:0x10 +fn_1_38C = .text:0x0000038C; // type:function size:0x10 +fn_1_39C = .text:0x0000039C; // type:function size:0x64 +fn_1_400 = .text:0x00000400; // type:function size:0x384 +fn_1_784 = .text:0x00000784; // type:function size:0x5C +fn_1_7E0 = .text:0x000007E0; // type:function size:0x2BC +fn_1_A9C = .text:0x00000A9C; // type:function size:0x234 +fn_1_CD0 = .text:0x00000CD0; // type:function size:0x30 +fn_1_D00 = .text:0x00000D00; // type:function size:0xEC +fn_1_DEC = .text:0x00000DEC; // type:function size:0x5C +fn_1_E48 = .text:0x00000E48; // type:function size:0x8C +fn_1_ED4 = .text:0x00000ED4; // type:function size:0x9C +fn_1_F70 = .text:0x00000F70; // type:function size:0x1F0 +fn_1_1160 = .text:0x00001160; // type:function size:0x1E4 +fn_1_1344 = .text:0x00001344; // type:function size:0x7B8 +fn_1_1AFC = .text:0x00001AFC; // type:function size:0x184 +fn_1_1C80 = .text:0x00001C80; // type:function size:0xA8 +fn_1_1D28 = .text:0x00001D28; // type:function size:0xD0 +fn_1_1DF8 = .text:0x00001DF8; // type:function size:0x38C +fn_1_2184 = .text:0x00002184; // type:function size:0xD38 +fn_1_2EBC = .text:0x00002EBC; // type:function size:0xB7C +fn_1_3A38 = .text:0x00003A38; // type:function size:0x3F4 +fn_1_3E2C = .text:0x00003E2C; // type:function size:0x104 +fn_1_3F30 = .text:0x00003F30; // type:function size:0x52C +fn_1_445C = .text:0x0000445C; // type:function size:0x44 +fn_1_44A0 = .text:0x000044A0; // type:function size:0x7DC +fn_1_4C7C = .text:0x00004C7C; // type:function size:0x2D0 +fn_1_4F4C = .text:0x00004F4C; // type:function size:0x32C +fn_1_5278 = .text:0x00005278; // type:function size:0x2C4 +fn_1_553C = .text:0x0000553C; // type:function size:0x5C +fn_1_5598 = .text:0x00005598; // type:function size:0x58 +fn_1_55F0 = .text:0x000055F0; // type:function size:0x4 +fn_1_55F4 = .text:0x000055F4; // type:function size:0x1AC +fn_1_57A0 = .text:0x000057A0; // type:function size:0x4 +fn_1_57A4 = .text:0x000057A4; // type:function size:0x140 +fn_1_58E4 = .text:0x000058E4; // type:function size:0x480 +fn_1_5D64 = .text:0x00005D64; // type:function size:0x110 +fn_1_5E74 = .text:0x00005E74; // type:function size:0x208 +fn_1_607C = .text:0x0000607C; // type:function size:0x1CC +fn_1_6248 = .text:0x00006248; // type:function size:0x1F8 +fn_1_6440 = .text:0x00006440; // type:function size:0x4C +fn_1_648C = .text:0x0000648C; // type:function size:0x250 +fn_1_66DC = .text:0x000066DC; // type:function size:0x5AC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x20 scope:local data:byte +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x248 +lbl_1_data_248 = .data:0x00000248; // type:object size:0x260 +lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0x290 +lbl_1_data_738 = .data:0x00000738; // type:object size:0x38 data:float +lbl_1_data_770 = .data:0x00000770; // type:object size:0xC data:float +lbl_1_data_77C = .data:0x0000077C; // type:object size:0xC data:float +lbl_1_data_788 = .data:0x00000788; // type:object size:0x4 +lbl_1_data_78C = .data:0x0000078C; // type:object size:0xC +lbl_1_data_798 = .data:0x00000798; // type:object size:0xC +lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x23 scope:local data:string +lbl_1_data_7C8 = .data:0x000007C8; // type:object size:0x4 data:4byte +jumptable_1_data_7CC = .data:0x000007CC; // type:object size:0x28 scope:local +lbl_1_data_7F4 = .data:0x000007F4; // type:object size:0x1C scope:local data:string +lbl_1_data_810 = .data:0x00000810; // type:object size:0xC +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x20 +lbl_1_data_86C = .data:0x0000086C; // type:object size:0x20 +lbl_1_data_88C = .data:0x0000088C; // type:object size:0x4 data:4byte +lbl_1_data_890 = .data:0x00000890; // type:object size:0x28 +lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x20 +lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x10 +lbl_1_data_8E8 = .data:0x000008E8; // type:object size:0xC +lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x8 data:wstring +lbl_1_data_8FC = .data:0x000008FC; // type:object size:0x18 +lbl_1_data_914 = .data:0x00000914; // type:object size:0x19 scope:local data:string +lbl_1_data_930 = .data:0x00000930; // type:object size:0x20 +lbl_1_data_950 = .data:0x00000950; // type:object size:0x20 +lbl_1_data_970 = .data:0x00000970; // type:object size:0x7 scope:local data:string +lbl_1_data_977 = .data:0x00000977; // type:object size:0x7 scope:local data:string +lbl_1_data_97E = .data:0x0000097E; // type:object size:0x7 scope:local data:string +lbl_1_data_985 = .data:0x00000985; // type:object size:0x7 scope:local data:string +lbl_1_data_98C = .data:0x0000098C; // type:object size:0x10 +lbl_1_data_99C = .data:0x0000099C; // type:object size:0x10 +lbl_1_data_9AC = .data:0x000009AC; // type:object size:0x30 +lbl_1_data_9DC = .data:0x000009DC; // type:object size:0x18 data:4byte +lbl_1_data_9F4 = .data:0x000009F4; // type:object size:0x18 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0xC data:float +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x10 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x10 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m405Dll/splits.txt b/config/GMPP01_00/rels/m405Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m405Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m405Dll/symbols.txt b/config/GMPP01_00/rels/m405Dll/symbols.txt new file mode 100644 index 00000000..0dccfd63 --- /dev/null +++ b/config/GMPP01_00/rels/m405Dll/symbols.txt @@ -0,0 +1,256 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x204 +fn_1_784 = .text:0x00000784; // type:function size:0x240 +fn_1_9C4 = .text:0x000009C4; // type:function size:0x54 +fn_1_A18 = .text:0x00000A18; // type:function size:0x10C +fn_1_B24 = .text:0x00000B24; // type:function size:0x680 +fn_1_11A4 = .text:0x000011A4; // type:function size:0x15C +fn_1_1300 = .text:0x00001300; // type:function size:0x8C +fn_1_138C = .text:0x0000138C; // type:function size:0x334 +fn_1_16C0 = .text:0x000016C0; // type:function size:0x350 +fn_1_1A10 = .text:0x00001A10; // type:function size:0x2B8 +fn_1_1CC8 = .text:0x00001CC8; // type:function size:0x58 +fn_1_1D20 = .text:0x00001D20; // type:function size:0xB0 +fn_1_1DD0 = .text:0x00001DD0; // type:function size:0x104 +fn_1_1ED4 = .text:0x00001ED4; // type:function size:0x34 +fn_1_1F08 = .text:0x00001F08; // type:function size:0x6C +fn_1_1F74 = .text:0x00001F74; // type:function size:0x3F0 +fn_1_2364 = .text:0x00002364; // type:function size:0xCC +fn_1_2430 = .text:0x00002430; // type:function size:0x88 +fn_1_24B8 = .text:0x000024B8; // type:function size:0x20C +fn_1_26C4 = .text:0x000026C4; // type:function size:0xF8 +fn_1_27BC = .text:0x000027BC; // type:function size:0x2A0 +fn_1_2A5C = .text:0x00002A5C; // type:function size:0xCF8 +fn_1_3754 = .text:0x00003754; // type:function size:0x778 +fn_1_3ECC = .text:0x00003ECC; // type:function size:0x24 +fn_1_3EF0 = .text:0x00003EF0; // type:function size:0xE4 +fn_1_3FD4 = .text:0x00003FD4; // type:function size:0x6DC +fn_1_46B0 = .text:0x000046B0; // type:function size:0x828 +fn_1_4ED8 = .text:0x00004ED8; // type:function size:0x4DC +fn_1_53B4 = .text:0x000053B4; // type:function size:0x12C +fn_1_54E0 = .text:0x000054E0; // type:function size:0x4C +fn_1_552C = .text:0x0000552C; // type:function size:0xE8 +fn_1_5614 = .text:0x00005614; // type:function size:0xF8 +_prolog = .text:0x0000570C; // type:function size:0x54 scope:global +_epilog = .text:0x00005760; // type:function size:0x4C scope:global +fn_1_57AC = .text:0x000057AC; // type:function size:0xA4 +fn_1_5850 = .text:0x00005850; // type:function size:0x288 +fn_1_5AD8 = .text:0x00005AD8; // type:function size:0x214 +fn_1_5CEC = .text:0x00005CEC; // type:function size:0x90 +fn_1_5D7C = .text:0x00005D7C; // type:function size:0x274 +fn_1_5FF0 = .text:0x00005FF0; // type:function size:0x57C +fn_1_656C = .text:0x0000656C; // type:function size:0x26C +fn_1_67D8 = .text:0x000067D8; // type:function size:0xA4 +fn_1_687C = .text:0x0000687C; // type:function size:0x330 +fn_1_6BAC = .text:0x00006BAC; // type:function size:0xD90 +fn_1_793C = .text:0x0000793C; // type:function size:0x828 +fn_1_8164 = .text:0x00008164; // type:function size:0x93C +fn_1_8AA0 = .text:0x00008AA0; // type:function size:0x798 +fn_1_9238 = .text:0x00009238; // type:function size:0x1A50 +fn_1_AC88 = .text:0x0000AC88; // type:function size:0x3CC +fn_1_B054 = .text:0x0000B054; // type:function size:0x4EC +fn_1_B540 = .text:0x0000B540; // type:function size:0x16C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x1 data:byte +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1 data:byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x1 data:byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0x30 data:2byte +lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x48 +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x1 data:byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x14 +lbl_1_data_100 = .data:0x00000100; // type:object size:0xC +lbl_1_data_10C = .data:0x0000010C; // type:object size:0xC data:4byte +lbl_1_data_118 = .data:0x00000118; // type:object size:0xC data:4byte +lbl_1_data_124 = .data:0x00000124; // type:object size:0xC data:4byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0xC data:4byte +lbl_1_data_13C = .data:0x0000013C; // type:object size:0xC data:4byte +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC data:4byte +lbl_1_data_154 = .data:0x00000154; // type:object size:0xC +lbl_1_data_160 = .data:0x00000160; // type:object size:0xC +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 +lbl_1_data_170 = .data:0x00000170; // type:object size:0xC +lbl_1_data_17C = .data:0x0000017C; // type:object size:0xC +lbl_1_data_188 = .data:0x00000188; // type:object size:0x100 +lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x20 +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x10 +lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0x50 +lbl_1_data_310 = .data:0x00000310; // type:object size:0x18 data:4byte +lbl_1_data_328 = .data:0x00000328; // type:object size:0x14 +lbl_1_data_33C = .data:0x0000033C; // type:object size:0xA +lbl_1_data_346 = .data:0x00000346; // type:object size:0xA +lbl_1_data_350 = .data:0x00000350; // type:object size:0x8 +lbl_1_data_358 = .data:0x00000358; // type:object size:0x8 +lbl_1_data_360 = .data:0x00000360; // type:object size:0x8 +lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 +lbl_1_data_370 = .data:0x00000370; // type:object size:0x50 +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x50 +lbl_1_data_410 = .data:0x00000410; // type:object size:0xC data:string +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x16 data:string +lbl_1_data_432 = .data:0x00000432; // type:object size:0x1D data:string +lbl_1_data_44F = .data:0x0000044F; // type:object size:0x1D +jumptable_1_data_46C = .data:0x0000046C; // type:object size:0x24 scope:local +lbl_1_data_490 = .data:0x00000490; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x18 data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x18 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x18 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x18 data:float +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:float +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:float +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:float +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x2 data:2byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x2 data:2byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x8 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x1 data:byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x500 data:float +lbl_1_bss_5AC = .bss:0x000005AC; // type:object size:0x2C data:4byte +lbl_1_bss_5D8 = .bss:0x000005D8; // type:object size:0x4 data:4byte +lbl_1_bss_5DC = .bss:0x000005DC; // type:object size:0x4 data:4byte +lbl_1_bss_5E0 = .bss:0x000005E0; // type:object size:0x4 data:4byte +lbl_1_bss_5E4 = .bss:0x000005E4; // type:object size:0x4 data:4byte +lbl_1_bss_5E8 = .bss:0x000005E8; // type:object size:0x100 +lbl_1_bss_6E8 = .bss:0x000006E8; // type:object size:0x40 data:4byte +lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x4 data:float +lbl_1_bss_72C = .bss:0x0000072C; // type:object size:0x4 data:4byte +lbl_1_bss_730 = .bss:0x00000730; // type:object size:0x4 data:4byte +lbl_1_bss_734 = .bss:0x00000734; // type:object size:0x2 data:2byte +lbl_1_bss_736 = .bss:0x00000736; // type:object size:0x2 data:2byte +lbl_1_bss_738 = .bss:0x00000738; // type:object size:0x4 data:4byte +lbl_1_bss_73C = .bss:0x0000073C; // type:object size:0x4 data:4byte +lbl_1_bss_740 = .bss:0x00000740; // type:object size:0x4 data:4byte +lbl_1_bss_744 = .bss:0x00000744; // type:object size:0xC data:float +lbl_1_bss_750 = .bss:0x00000750; // type:object size:0xC data:4byte +lbl_1_bss_75C = .bss:0x0000075C; // type:object size:0xC data:float +lbl_1_bss_768 = .bss:0x00000768; // type:object size:0xC data:4byte +lbl_1_bss_774 = .bss:0x00000774; // type:object size:0x4 data:4byte +lbl_1_bss_778 = .bss:0x00000778; // type:object size:0x18 data:4byte +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0xC data:4byte diff --git a/config/GMPP01_00/rels/m406Dll/splits.txt b/config/GMPP01_00/rels/m406Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m406Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m406Dll/symbols.txt b/config/GMPP01_00/rels/m406Dll/symbols.txt new file mode 100644 index 00000000..6be5c2a5 --- /dev/null +++ b/config/GMPP01_00/rels/m406Dll/symbols.txt @@ -0,0 +1,438 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x318 +fn_1_3B8 = .text:0x000003B8; // type:function size:0x54 +fn_1_40C = .text:0x0000040C; // type:function size:0xD00 +fn_1_110C = .text:0x0000110C; // type:function size:0x5C +fn_1_1168 = .text:0x00001168; // type:function size:0xC4 +fn_1_122C = .text:0x0000122C; // type:function size:0x10 +fn_1_123C = .text:0x0000123C; // type:function size:0x38 +fn_1_1274 = .text:0x00001274; // type:function size:0x10 +fn_1_1284 = .text:0x00001284; // type:function size:0x38 +fn_1_12BC = .text:0x000012BC; // type:function size:0x84 +fn_1_1340 = .text:0x00001340; // type:function size:0x1DC +fn_1_151C = .text:0x0000151C; // type:function size:0x4 +fn_1_1520 = .text:0x00001520; // type:function size:0x4 +fn_1_1524 = .text:0x00001524; // type:function size:0xAC +fn_1_15D0 = .text:0x000015D0; // type:function size:0x26C +fn_1_183C = .text:0x0000183C; // type:function size:0x35C +fn_1_1B98 = .text:0x00001B98; // type:function size:0x10 +fn_1_1BA8 = .text:0x00001BA8; // type:function size:0x118 +fn_1_1CC0 = .text:0x00001CC0; // type:function size:0x250 +fn_1_1F10 = .text:0x00001F10; // type:function size:0x3F8 +fn_1_2308 = .text:0x00002308; // type:function size:0x624 +fn_1_292C = .text:0x0000292C; // type:function size:0x2C0 +fn_1_2BEC = .text:0x00002BEC; // type:function size:0x38 +fn_1_2C24 = .text:0x00002C24; // type:function size:0x440 +fn_1_3064 = .text:0x00003064; // type:function size:0xF4 +fn_1_3158 = .text:0x00003158; // type:function size:0xF2C +fn_1_4084 = .text:0x00004084; // type:function size:0x4E4 +fn_1_4568 = .text:0x00004568; // type:function size:0x54 +fn_1_45BC = .text:0x000045BC; // type:function size:0x3A8 +fn_1_4964 = .text:0x00004964; // type:function size:0x1810 +fn_1_6174 = .text:0x00006174; // type:function size:0x190 +fn_1_6304 = .text:0x00006304; // type:function size:0x1F4 +fn_1_64F8 = .text:0x000064F8; // type:function size:0x1FC +fn_1_66F4 = .text:0x000066F4; // type:function size:0xD8 +fn_1_67CC = .text:0x000067CC; // type:function size:0x1A0 +fn_1_696C = .text:0x0000696C; // type:function size:0x54 +fn_1_69C0 = .text:0x000069C0; // type:function size:0x84 +fn_1_6A44 = .text:0x00006A44; // type:function size:0x118 +fn_1_6B5C = .text:0x00006B5C; // type:function size:0x58 +fn_1_6BB4 = .text:0x00006BB4; // type:function size:0x370 +fn_1_6F24 = .text:0x00006F24; // type:function size:0xD8 +fn_1_6FFC = .text:0x00006FFC; // type:function size:0x180 +fn_1_717C = .text:0x0000717C; // type:function size:0x48 +fn_1_71C4 = .text:0x000071C4; // type:function size:0x134 +fn_1_72F8 = .text:0x000072F8; // type:function size:0x3B0 +fn_1_76A8 = .text:0x000076A8; // type:function size:0x70 +fn_1_7718 = .text:0x00007718; // type:function size:0xD8 +fn_1_77F0 = .text:0x000077F0; // type:function size:0x1C0 +fn_1_79B0 = .text:0x000079B0; // type:function size:0x48 +fn_1_79F8 = .text:0x000079F8; // type:function size:0x134 +fn_1_7B2C = .text:0x00007B2C; // type:function size:0x70 +fn_1_7B9C = .text:0x00007B9C; // type:function size:0xB0 +fn_1_7C4C = .text:0x00007C4C; // type:function size:0x160 +fn_1_7DAC = .text:0x00007DAC; // type:function size:0x4 +fn_1_7DB0 = .text:0x00007DB0; // type:function size:0x120 +fn_1_7ED0 = .text:0x00007ED0; // type:function size:0xB0 +fn_1_7F80 = .text:0x00007F80; // type:function size:0x180 +fn_1_8100 = .text:0x00008100; // type:function size:0x4 +fn_1_8104 = .text:0x00008104; // type:function size:0x140 +fn_1_8244 = .text:0x00008244; // type:function size:0x84 +fn_1_82C8 = .text:0x000082C8; // type:function size:0xCD0 +fn_1_8F98 = .text:0x00008F98; // type:function size:0x248 +fn_1_91E0 = .text:0x000091E0; // type:function size:0x2DC +fn_1_94BC = .text:0x000094BC; // type:function size:0x4 +fn_1_94C0 = .text:0x000094C0; // type:function size:0xAB8 +fn_1_9F78 = .text:0x00009F78; // type:function size:0x300 +fn_1_A278 = .text:0x0000A278; // type:function size:0x50 +fn_1_A2C8 = .text:0x0000A2C8; // type:function size:0xAEC +fn_1_ADB4 = .text:0x0000ADB4; // type:function size:0x350 +fn_1_B104 = .text:0x0000B104; // type:function size:0xDC +fn_1_B1E0 = .text:0x0000B1E0; // type:function size:0x7C +fn_1_B25C = .text:0x0000B25C; // type:function size:0x1C0 +fn_1_B41C = .text:0x0000B41C; // type:function size:0x54 +fn_1_B470 = .text:0x0000B470; // type:function size:0x4 +fn_1_B474 = .text:0x0000B474; // type:function size:0x488 +fn_1_B8FC = .text:0x0000B8FC; // type:function size:0x31C +fn_1_BC18 = .text:0x0000BC18; // type:function size:0x8DC +fn_1_C4F4 = .text:0x0000C4F4; // type:function size:0x378 +fn_1_C86C = .text:0x0000C86C; // type:function size:0x4C8 +fn_1_CD34 = .text:0x0000CD34; // type:function size:0xA4 +fn_1_CDD8 = .text:0x0000CDD8; // type:function size:0x14C +fn_1_CF24 = .text:0x0000CF24; // type:function size:0x74 +fn_1_CF98 = .text:0x0000CF98; // type:function size:0xD4 +fn_1_D06C = .text:0x0000D06C; // type:function size:0xD0 +fn_1_D13C = .text:0x0000D13C; // type:function size:0x34C +fn_1_D488 = .text:0x0000D488; // type:function size:0x90 +fn_1_D518 = .text:0x0000D518; // type:function size:0xB4 +fn_1_D5CC = .text:0x0000D5CC; // type:function size:0x90 +fn_1_D65C = .text:0x0000D65C; // type:function size:0x254 +fn_1_D8B0 = .text:0x0000D8B0; // type:function size:0x5C +fn_1_D90C = .text:0x0000D90C; // type:function size:0x490 +fn_1_DD9C = .text:0x0000DD9C; // type:function size:0xE4 +fn_1_DE80 = .text:0x0000DE80; // type:function size:0x3B4 +fn_1_E234 = .text:0x0000E234; // type:function size:0xF80 +fn_1_F1B4 = .text:0x0000F1B4; // type:function size:0x500 +fn_1_F6B4 = .text:0x0000F6B4; // type:function size:0x3BC +fn_1_FA70 = .text:0x0000FA70; // type:function size:0xC0C +fn_1_1067C = .text:0x0001067C; // type:function size:0xE8 +fn_1_10764 = .text:0x00010764; // type:function size:0x9E4 +fn_1_11148 = .text:0x00011148; // type:function size:0x448 +fn_1_11590 = .text:0x00011590; // type:function size:0x31C +fn_1_118AC = .text:0x000118AC; // type:function size:0x228 +fn_1_11AD4 = .text:0x00011AD4; // type:function size:0x5E0 +fn_1_120B4 = .text:0x000120B4; // type:function size:0x1D0 +fn_1_12284 = .text:0x00012284; // type:function size:0xDC +fn_1_12360 = .text:0x00012360; // type:function size:0x4EC +fn_1_1284C = .text:0x0001284C; // type:function size:0x5C +fn_1_128A8 = .text:0x000128A8; // type:function size:0x22C +fn_1_12AD4 = .text:0x00012AD4; // type:function size:0xD4 +fn_1_12BA8 = .text:0x00012BA8; // type:function size:0x48 +fn_1_12BF0 = .text:0x00012BF0; // type:function size:0x38 +fn_1_12C28 = .text:0x00012C28; // type:function size:0x8C +fn_1_12CB4 = .text:0x00012CB4; // type:function size:0xAE4 +fn_1_13798 = .text:0x00013798; // type:function size:0x4 +fn_1_1379C = .text:0x0001379C; // type:function size:0x3DC +fn_1_13B78 = .text:0x00013B78; // type:function size:0x6C +fn_1_13BE4 = .text:0x00013BE4; // type:function size:0x11C +fn_1_13D00 = .text:0x00013D00; // type:function size:0x7E4 +fn_1_144E4 = .text:0x000144E4; // type:function size:0x330 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8C data:float +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x24 +jumptable_1_data_B0 = .data:0x000000B0; // type:object size:0x40 scope:local +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x348 +lbl_1_data_438 = .data:0x00000438; // type:object size:0x348 +lbl_1_data_780 = .data:0x00000780; // type:object size:0x24 data:float +lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x2 data:2byte +lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0x1C +lbl_1_data_7C4 = .data:0x000007C4; // type:object size:0x1C +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x18 +lbl_1_data_7F8 = .data:0x000007F8; // type:object size:0xC +lbl_1_data_804 = .data:0x00000804; // type:object size:0xC +lbl_1_data_810 = .data:0x00000810; // type:object size:0x4 +lbl_1_data_814 = .data:0x00000814; // type:object size:0xC +lbl_1_data_820 = .data:0x00000820; // type:object size:0xC +lbl_1_data_82C = .data:0x0000082C; // type:object size:0xC +lbl_1_data_838 = .data:0x00000838; // type:object size:0xC +lbl_1_data_844 = .data:0x00000844; // type:object size:0xC +lbl_1_data_850 = .data:0x00000850; // type:object size:0x20 +lbl_1_data_870 = .data:0x00000870; // type:object size:0x1F scope:local data:string +lbl_1_data_88F = .data:0x0000088F; // type:object size:0x1 data:byte +lbl_1_data_893 = .data:0x00000893; // type:object size:0x1 data:byte +lbl_1_data_897 = .data:0x00000897; // type:object size:0x1 data:byte +lbl_1_data_89B = .data:0x0000089B; // type:object size:0x1 data:byte +lbl_1_data_89F = .data:0x0000089F; // type:object size:0x5 data:byte +lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x10 +lbl_1_data_8B4 = .data:0x000008B4; // type:object size:0x10 +lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0xC +lbl_1_data_8D0 = .data:0x000008D0; // type:object size:0xC +lbl_1_data_8DC = .data:0x000008DC; // type:object size:0x4 +lbl_1_data_8E0 = .data:0x000008E0; // type:object size:0x30 +lbl_1_data_910 = .data:0x00000910; // type:object size:0x20 +lbl_1_data_930 = .data:0x00000930; // type:object size:0x30 +lbl_1_data_960 = .data:0x00000960; // type:object size:0x348 +lbl_1_data_CA8 = .data:0x00000CA8; // type:object size:0x348 +lbl_1_data_FF0 = .data:0x00000FF0; // type:object size:0x10 +lbl_1_data_1000 = .data:0x00001000; // type:object size:0x19 scope:local data:string +lbl_1_data_1019 = .data:0x00001019; // type:object size:0x19 scope:local data:string +lbl_1_data_1032 = .data:0x00001032; // type:object size:0x1A scope:local data:string +lbl_1_data_104C = .data:0x0000104C; // type:object size:0x1C +lbl_1_data_1068 = .data:0x00001068; // type:object size:0x10 +lbl_1_data_1078 = .data:0x00001078; // type:object size:0x28 +lbl_1_data_10A0 = .data:0x000010A0; // type:object size:0x80 +lbl_1_data_1120 = .data:0x00001120; // type:object size:0x20 +lbl_1_data_1140 = .data:0x00001140; // type:object size:0x8 +lbl_1_data_1148 = .data:0x00001148; // type:object size:0x1C scope:local data:string +lbl_1_data_1164 = .data:0x00001164; // type:object size:0x90 +lbl_1_data_11F4 = .data:0x000011F4; // type:object size:0x4 data:4byte +lbl_1_data_11F8 = .data:0x000011F8; // type:object size:0x20 +lbl_1_data_1218 = .data:0x00001218; // type:object size:0x18 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0xC data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x50 +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x8 data:4byte +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x18 data:float +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x8 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:float +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0xC0 +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x4 data:4byte +lbl_1_bss_1C8 = .bss:0x000001C8; // type:object size:0x4 data:4byte +lbl_1_bss_1CC = .bss:0x000001CC; // type:object size:0x4 data:4byte +lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC +lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0xC +lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0xC +lbl_1_bss_1F4 = .bss:0x000001F4; // type:object size:0x2 data:2byte +lbl_1_bss_1F6 = .bss:0x000001F6; // type:object size:0x2 data:2byte +lbl_1_bss_1F8 = .bss:0x000001F8; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m407dll/splits.txt b/config/GMPP01_00/rels/m407dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m407dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m407dll/symbols.txt b/config/GMPP01_00/rels/m407dll/symbols.txt new file mode 100644 index 00000000..51e3c09c --- /dev/null +++ b/config/GMPP01_00/rels/m407dll/symbols.txt @@ -0,0 +1,271 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x54 +fn_1_F4 = .text:0x000000F4; // type:function size:0xA0 +fn_1_194 = .text:0x00000194; // type:function size:0x50 +fn_1_1E4 = .text:0x000001E4; // type:function size:0x54 +fn_1_238 = .text:0x00000238; // type:function size:0x54 +fn_1_28C = .text:0x0000028C; // type:function size:0x54 +fn_1_2E0 = .text:0x000002E0; // type:function size:0x54 +fn_1_334 = .text:0x00000334; // type:function size:0x54 +fn_1_388 = .text:0x00000388; // type:function size:0x3C +fn_1_3C4 = .text:0x000003C4; // type:function size:0x40 +fn_1_404 = .text:0x00000404; // type:function size:0xBC +fn_1_4C0 = .text:0x000004C0; // type:function size:0x48 +fn_1_508 = .text:0x00000508; // type:function size:0x34 +fn_1_53C = .text:0x0000053C; // type:function size:0x2C +fn_1_568 = .text:0x00000568; // type:function size:0xC0 +fn_1_628 = .text:0x00000628; // type:function size:0x24 +fn_1_64C = .text:0x0000064C; // type:function size:0x350 +fn_1_99C = .text:0x0000099C; // type:function size:0x80 +fn_1_A1C = .text:0x00000A1C; // type:function size:0x6C +fn_1_A88 = .text:0x00000A88; // type:function size:0x4 +fn_1_A8C = .text:0x00000A8C; // type:function size:0x1CC +fn_1_C58 = .text:0x00000C58; // type:function size:0x9C +fn_1_CF4 = .text:0x00000CF4; // type:function size:0xC0 +fn_1_DB4 = .text:0x00000DB4; // type:function size:0x1D8 +fn_1_F8C = .text:0x00000F8C; // type:function size:0xE8 +fn_1_1074 = .text:0x00001074; // type:function size:0x158 +fn_1_11CC = .text:0x000011CC; // type:function size:0x218 +fn_1_13E4 = .text:0x000013E4; // type:function size:0x7C +fn_1_1460 = .text:0x00001460; // type:function size:0x90 +fn_1_14F0 = .text:0x000014F0; // type:function size:0xE8 +fn_1_15D8 = .text:0x000015D8; // type:function size:0x54 +fn_1_162C = .text:0x0000162C; // type:function size:0x460 +fn_1_1A8C = .text:0x00001A8C; // type:function size:0x90 +fn_1_1B1C = .text:0x00001B1C; // type:function size:0x18C +fn_1_1CA8 = .text:0x00001CA8; // type:function size:0x4 +fn_1_1CAC = .text:0x00001CAC; // type:function size:0x28 +fn_1_1CD4 = .text:0x00001CD4; // type:function size:0x34 +fn_1_1D08 = .text:0x00001D08; // type:function size:0x28 +fn_1_1D30 = .text:0x00001D30; // type:function size:0x34 +fn_1_1D64 = .text:0x00001D64; // type:function size:0x10 +fn_1_1D74 = .text:0x00001D74; // type:function size:0x14 +fn_1_1D88 = .text:0x00001D88; // type:function size:0x28 +fn_1_1DB0 = .text:0x00001DB0; // type:function size:0x16C +fn_1_1F1C = .text:0x00001F1C; // type:function size:0x108 +fn_1_2024 = .text:0x00002024; // type:function size:0x330 +fn_1_2354 = .text:0x00002354; // type:function size:0x19C +fn_1_24F0 = .text:0x000024F0; // type:function size:0x74 +fn_1_2564 = .text:0x00002564; // type:function size:0x5C +fn_1_25C0 = .text:0x000025C0; // type:function size:0x10C +fn_1_26CC = .text:0x000026CC; // type:function size:0xA4 +fn_1_2770 = .text:0x00002770; // type:function size:0x110 +fn_1_2880 = .text:0x00002880; // type:function size:0x38 +fn_1_28B8 = .text:0x000028B8; // type:function size:0x1C +fn_1_28D4 = .text:0x000028D4; // type:function size:0x10 +fn_1_28E4 = .text:0x000028E4; // type:function size:0x28 +fn_1_290C = .text:0x0000290C; // type:function size:0x24 +fn_1_2930 = .text:0x00002930; // type:function size:0x24C +fn_1_2B7C = .text:0x00002B7C; // type:function size:0x67C +fn_1_31F8 = .text:0x000031F8; // type:function size:0x168 +fn_1_3360 = .text:0x00003360; // type:function size:0x4 +fn_1_3364 = .text:0x00003364; // type:function size:0x140 +fn_1_34A4 = .text:0x000034A4; // type:function size:0x22C +fn_1_36D0 = .text:0x000036D0; // type:function size:0xE0 +fn_1_37B0 = .text:0x000037B0; // type:function size:0x318 +fn_1_3AC8 = .text:0x00003AC8; // type:function size:0xA0 +fn_1_3B68 = .text:0x00003B68; // type:function size:0x50 +fn_1_3BB8 = .text:0x00003BB8; // type:function size:0x170 +fn_1_3D28 = .text:0x00003D28; // type:function size:0x24 +fn_1_3D4C = .text:0x00003D4C; // type:function size:0xE8 +fn_1_3E34 = .text:0x00003E34; // type:function size:0x148 +fn_1_3F7C = .text:0x00003F7C; // type:function size:0x74 +fn_1_3FF0 = .text:0x00003FF0; // type:function size:0x4 +fn_1_3FF4 = .text:0x00003FF4; // type:function size:0x100 +fn_1_40F4 = .text:0x000040F4; // type:function size:0xD8 +fn_1_41CC = .text:0x000041CC; // type:function size:0x328 +fn_1_44F4 = .text:0x000044F4; // type:function size:0x50 +fn_1_4544 = .text:0x00004544; // type:function size:0x118 +fn_1_465C = .text:0x0000465C; // type:function size:0x24 +fn_1_4680 = .text:0x00004680; // type:function size:0x6C +fn_1_46EC = .text:0x000046EC; // type:function size:0x11C +fn_1_4808 = .text:0x00004808; // type:function size:0x50 +fn_1_4858 = .text:0x00004858; // type:function size:0x4 +fn_1_485C = .text:0x0000485C; // type:function size:0x124 +fn_1_4980 = .text:0x00004980; // type:function size:0x1FC +fn_1_4B7C = .text:0x00004B7C; // type:function size:0xC0 +fn_1_4C3C = .text:0x00004C3C; // type:function size:0x30 +fn_1_4C6C = .text:0x00004C6C; // type:function size:0xA0 +fn_1_4D0C = .text:0x00004D0C; // type:function size:0x48 +fn_1_4D54 = .text:0x00004D54; // type:function size:0x138 +fn_1_4E8C = .text:0x00004E8C; // type:function size:0x11C +fn_1_4FA8 = .text:0x00004FA8; // type:function size:0x134 +fn_1_50DC = .text:0x000050DC; // type:function size:0xFC +fn_1_51D8 = .text:0x000051D8; // type:function size:0xC8 +fn_1_52A0 = .text:0x000052A0; // type:function size:0x10C +fn_1_53AC = .text:0x000053AC; // type:function size:0x1BC +fn_1_5568 = .text:0x00005568; // type:function size:0xBC +fn_1_5624 = .text:0x00005624; // type:function size:0x1D4 +fn_1_57F8 = .text:0x000057F8; // type:function size:0x27C +fn_1_5A74 = .text:0x00005A74; // type:function size:0x130 +fn_1_5BA4 = .text:0x00005BA4; // type:function size:0xAC +fn_1_5C50 = .text:0x00005C50; // type:function size:0x270 +fn_1_5EC0 = .text:0x00005EC0; // type:function size:0x74 +fn_1_5F34 = .text:0x00005F34; // type:function size:0x50 +fn_1_5F84 = .text:0x00005F84; // type:function size:0x24 +fn_1_5FA8 = .text:0x00005FA8; // type:function size:0x30 +fn_1_5FD8 = .text:0x00005FD8; // type:function size:0x1BC +fn_1_6194 = .text:0x00006194; // type:function size:0x78 +fn_1_620C = .text:0x0000620C; // type:function size:0x88 +fn_1_6294 = .text:0x00006294; // type:function size:0x164 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x20 +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x100 +lbl_1_data_100 = .data:0x00000100; // type:object size:0x20 +lbl_1_data_120 = .data:0x00000120; // type:object size:0x1C +lbl_1_data_13C = .data:0x0000013C; // type:object size:0x20 +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 +lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 +lbl_1_data_18C = .data:0x0000018C; // type:object size:0xC +lbl_1_data_198 = .data:0x00000198; // type:object size:0x34 data:4byte +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x30 +lbl_1_data_1FC = .data:0x000001FC; // type:object size:0xC data:float +lbl_1_data_208 = .data:0x00000208; // type:object size:0xC +lbl_1_data_214 = .data:0x00000214; // type:object size:0x4 +lbl_1_data_218 = .data:0x00000218; // type:object size:0x10 +lbl_1_data_228 = .data:0x00000228; // type:object size:0x10 data:4byte +lbl_1_data_238 = .data:0x00000238; // type:object size:0x20 data:4byte +lbl_1_data_258 = .data:0x00000258; // type:object size:0x14 +lbl_1_data_26C = .data:0x0000026C; // type:object size:0xC +lbl_1_data_278 = .data:0x00000278; // type:object size:0x10 +lbl_1_data_288 = .data:0x00000288; // type:object size:0x14 +lbl_1_data_29C = .data:0x0000029C; // type:object size:0xC +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x34 +lbl_1_data_2DC = .data:0x000002DC; // type:object size:0x10 +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xC +lbl_1_data_2F8 = .data:0x000002F8; // type:object size:0xC +lbl_1_data_304 = .data:0x00000304; // type:object size:0x4 +lbl_1_data_308 = .data:0x00000308; // type:object size:0xC +lbl_1_data_314 = .data:0x00000314; // type:object size:0xC +lbl_1_data_320 = .data:0x00000320; // type:object size:0x4 +lbl_1_data_324 = .data:0x00000324; // type:object size:0xC +lbl_1_data_330 = .data:0x00000330; // type:object size:0xC +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 +lbl_1_data_340 = .data:0x00000340; // type:object size:0xC +lbl_1_data_34C = .data:0x0000034C; // type:object size:0xC +lbl_1_data_358 = .data:0x00000358; // type:object size:0x8 +lbl_1_data_360 = .data:0x00000360; // type:object size:0xC +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x8 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x2 data:2byte +lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x2A +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte +lbl_1_bss_66 = .bss:0x00000066; // type:object size:0x2 data:2byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x1E30 data:2byte +lbl_1_bss_1E98 = .bss:0x00001E98; // type:object size:0xF18 +lbl_1_bss_2DB0 = .bss:0x00002DB0; // type:object size:0xA10 +lbl_1_bss_37C0 = .bss:0x000037C0; // type:object size:0x8 data:4byte +lbl_1_bss_37C8 = .bss:0x000037C8; // type:object size:0x10 +lbl_1_bss_37D8 = .bss:0x000037D8; // type:object size:0x8 data:4byte +lbl_1_bss_37E0 = .bss:0x000037E0; // type:object size:0x190 +lbl_1_bss_3970 = .bss:0x00003970; // type:object size:0x8 data:4byte +lbl_1_bss_3978 = .bss:0x00003978; // type:object size:0x2 data:2byte +lbl_1_bss_397C = .bss:0x0000397C; // type:object size:0x4 data:4byte +lbl_1_bss_3980 = .bss:0x00003980; // type:object size:0x8 data:4byte +lbl_1_bss_3988 = .bss:0x00003988; // type:object size:0x4 data:4byte +lbl_1_bss_398C = .bss:0x0000398C; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m408Dll/splits.txt b/config/GMPP01_00/rels/m408Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m408Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m408Dll/symbols.txt b/config/GMPP01_00/rels/m408Dll/symbols.txt new file mode 100644 index 00000000..650a8242 --- /dev/null +++ b/config/GMPP01_00/rels/m408Dll/symbols.txt @@ -0,0 +1,548 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x47C +fn_1_51C = .text:0x0000051C; // type:function size:0x50 +fn_1_56C = .text:0x0000056C; // type:function size:0x438 +fn_1_9A4 = .text:0x000009A4; // type:function size:0x4C +fn_1_9F0 = .text:0x000009F0; // type:function size:0x50 +fn_1_A40 = .text:0x00000A40; // type:function size:0x298 +fn_1_CD8 = .text:0x00000CD8; // type:function size:0x220 +fn_1_EF8 = .text:0x00000EF8; // type:function size:0x3A8 +fn_1_12A0 = .text:0x000012A0; // type:function size:0x1EC +fn_1_148C = .text:0x0000148C; // type:function size:0x434 +fn_1_18C0 = .text:0x000018C0; // type:function size:0x80 +fn_1_1940 = .text:0x00001940; // type:function size:0x120 +fn_1_1A60 = .text:0x00001A60; // type:function size:0x98 +fn_1_1AF8 = .text:0x00001AF8; // type:function size:0xF0 +fn_1_1BE8 = .text:0x00001BE8; // type:function size:0x26C +fn_1_1E54 = .text:0x00001E54; // type:function size:0x68 +fn_1_1EBC = .text:0x00001EBC; // type:function size:0x718 +fn_1_25D4 = .text:0x000025D4; // type:function size:0x110 +fn_1_26E4 = .text:0x000026E4; // type:function size:0x8C8 +fn_1_2FAC = .text:0x00002FAC; // type:function size:0x924 +fn_1_38D0 = .text:0x000038D0; // type:function size:0x5B0 +fn_1_3E80 = .text:0x00003E80; // type:function size:0xBD8 +fn_1_4A58 = .text:0x00004A58; // type:function size:0x640 +fn_1_5098 = .text:0x00005098; // type:function size:0x44C +fn_1_54E4 = .text:0x000054E4; // type:function size:0x1A0 +fn_1_5684 = .text:0x00005684; // type:function size:0x41C +fn_1_5AA0 = .text:0x00005AA0; // type:function size:0x14 +fn_1_5AB4 = .text:0x00005AB4; // type:function size:0x318 +fn_1_5DCC = .text:0x00005DCC; // type:function size:0x430 +fn_1_61FC = .text:0x000061FC; // type:function size:0x344 +fn_1_6540 = .text:0x00006540; // type:function size:0x284 +fn_1_67C4 = .text:0x000067C4; // type:function size:0xA4 +fn_1_6868 = .text:0x00006868; // type:function size:0x10 +fn_1_6878 = .text:0x00006878; // type:function size:0x10 +fn_1_6888 = .text:0x00006888; // type:function size:0x10 +fn_1_6898 = .text:0x00006898; // type:function size:0x4 +fn_1_689C = .text:0x0000689C; // type:function size:0x8 +fn_1_68A4 = .text:0x000068A4; // type:function size:0x4 +fn_1_68A8 = .text:0x000068A8; // type:function size:0x1C +fn_1_68C4 = .text:0x000068C4; // type:function size:0x364 +fn_1_6C28 = .text:0x00006C28; // type:function size:0x324 +fn_1_6F4C = .text:0x00006F4C; // type:function size:0x66C +fn_1_75B8 = .text:0x000075B8; // type:function size:0x260 +fn_1_7818 = .text:0x00007818; // type:function size:0xC0 +fn_1_78D8 = .text:0x000078D8; // type:function size:0x748 +fn_1_8020 = .text:0x00008020; // type:function size:0x15C +fn_1_817C = .text:0x0000817C; // type:function size:0x348 +fn_1_84C4 = .text:0x000084C4; // type:function size:0x378 +fn_1_883C = .text:0x0000883C; // type:function size:0x11C +fn_1_8958 = .text:0x00008958; // type:function size:0xC8 +fn_1_8A20 = .text:0x00008A20; // type:function size:0x58C +fn_1_8FAC = .text:0x00008FAC; // type:function size:0x568 +fn_1_9514 = .text:0x00009514; // type:function size:0x25C +fn_1_9770 = .text:0x00009770; // type:function size:0x258 +fn_1_99C8 = .text:0x000099C8; // type:function size:0x96C +fn_1_A334 = .text:0x0000A334; // type:function size:0x48 +fn_1_A37C = .text:0x0000A37C; // type:function size:0x16C +fn_1_A4E8 = .text:0x0000A4E8; // type:function size:0x3AC +fn_1_A894 = .text:0x0000A894; // type:function size:0x760 +fn_1_AFF4 = .text:0x0000AFF4; // type:function size:0x70C +fn_1_B700 = .text:0x0000B700; // type:function size:0x494 +fn_1_BB94 = .text:0x0000BB94; // type:function size:0x24C +fn_1_BDE0 = .text:0x0000BDE0; // type:function size:0x5E0 +fn_1_C3C0 = .text:0x0000C3C0; // type:function size:0x7C +fn_1_C43C = .text:0x0000C43C; // type:function size:0x10 +fn_1_C44C = .text:0x0000C44C; // type:function size:0x98 +fn_1_C4E4 = .text:0x0000C4E4; // type:function size:0x4C +fn_1_C530 = .text:0x0000C530; // type:function size:0x7E4 +fn_1_CD14 = .text:0x0000CD14; // type:function size:0x154 +fn_1_CE68 = .text:0x0000CE68; // type:function size:0x84 +fn_1_CEEC = .text:0x0000CEEC; // type:function size:0x118 +fn_1_D004 = .text:0x0000D004; // type:function size:0x6EC +fn_1_D6F0 = .text:0x0000D6F0; // type:function size:0x288 +fn_1_D978 = .text:0x0000D978; // type:function size:0xF4 +fn_1_DA6C = .text:0x0000DA6C; // type:function size:0x564 +fn_1_DFD0 = .text:0x0000DFD0; // type:function size:0x340 +fn_1_E310 = .text:0x0000E310; // type:function size:0x6A4 +fn_1_E9B4 = .text:0x0000E9B4; // type:function size:0x544 +fn_1_EEF8 = .text:0x0000EEF8; // type:function size:0x174 +fn_1_F06C = .text:0x0000F06C; // type:function size:0x444 +fn_1_F4B0 = .text:0x0000F4B0; // type:function size:0xB4 +fn_1_F564 = .text:0x0000F564; // type:function size:0x33C +fn_1_F8A0 = .text:0x0000F8A0; // type:function size:0x2F8 +fn_1_FB98 = .text:0x0000FB98; // type:function size:0x8EC +fn_1_10484 = .text:0x00010484; // type:function size:0x3AC +fn_1_10830 = .text:0x00010830; // type:function size:0x330 +fn_1_10B60 = .text:0x00010B60; // type:function size:0xB10 +fn_1_11670 = .text:0x00011670; // type:function size:0x54 +fn_1_116C4 = .text:0x000116C4; // type:function size:0xBC +fn_1_11780 = .text:0x00011780; // type:function size:0x150 +fn_1_118D0 = .text:0x000118D0; // type:function size:0x90 +fn_1_11960 = .text:0x00011960; // type:function size:0x4DC +fn_1_11E3C = .text:0x00011E3C; // type:function size:0x518 +fn_1_12354 = .text:0x00012354; // type:function size:0x74 +fn_1_123C8 = .text:0x000123C8; // type:function size:0x2A8 +fn_1_12670 = .text:0x00012670; // type:function size:0x4 +fn_1_12674 = .text:0x00012674; // type:function size:0x12C +fn_1_127A0 = .text:0x000127A0; // type:function size:0x4CC +fn_1_12C6C = .text:0x00012C6C; // type:function size:0x3F0 +fn_1_1305C = .text:0x0001305C; // type:function size:0x47C +fn_1_134D8 = .text:0x000134D8; // type:function size:0x348 +fn_1_13820 = .text:0x00013820; // type:function size:0x568 +fn_1_13D88 = .text:0x00013D88; // type:function size:0x2E4 +fn_1_1406C = .text:0x0001406C; // type:function size:0x464 +fn_1_144D0 = .text:0x000144D0; // type:function size:0x8E4 +fn_1_14DB4 = .text:0x00014DB4; // type:function size:0x3F0 +fn_1_151A4 = .text:0x000151A4; // type:function size:0x43C +fn_1_155E0 = .text:0x000155E0; // type:function size:0x38 +fn_1_15618 = .text:0x00015618; // type:function size:0x40 +fn_1_15658 = .text:0x00015658; // type:function size:0x4F8 +fn_1_15B50 = .text:0x00015B50; // type:function size:0x7C +fn_1_15BCC = .text:0x00015BCC; // type:function size:0xD8 +fn_1_15CA4 = .text:0x00015CA4; // type:function size:0xC0 +fn_1_15D64 = .text:0x00015D64; // type:function size:0x568 +fn_1_162CC = .text:0x000162CC; // type:function size:0xFC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC data:4byte +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x30 data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x10 data:4byte +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x20 data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x38 data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x48 +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x10 data:4byte +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x10 data:4byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x28 data:2byte +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x10 data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x10 data:4byte +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 data:double +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 data:double +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x8 data:double +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 data:double +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x8 data:double +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 data:double +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 data:double +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x8 data:double +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 data:float +lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float +lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 data:float +lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float +lbl_1_rodata_68C = .rodata:0x0000068C; // type:object size:0x4 data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x4 data:float +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x8 data:double +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 data:double +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 data:float +lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0x4 data:float +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x4 data:float +lbl_1_rodata_6BC = .rodata:0x000006BC; // type:object size:0x4 data:float +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 data:float +lbl_1_rodata_6C4 = .rodata:0x000006C4; // type:object size:0x4 data:float +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 data:float +lbl_1_rodata_6D4 = .rodata:0x000006D4; // type:object size:0x4 data:float +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x8 data:double +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x8 data:double +lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 data:float +lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 data:double +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x8 data:double +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 data:float +lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float +lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 data:float +lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 data:float +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float +lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x8 data:double +lbl_1_rodata_740 = .rodata:0x00000740; // type:object size:0x4 data:float +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x8 data:double +lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 data:float +lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 data:float +lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 data:float +lbl_1_rodata_75C = .rodata:0x0000075C; // type:object size:0x4 data:float +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x4 data:float +lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0x4 data:float +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 data:float +lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x4 data:float +lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0x4 data:float +lbl_1_rodata_774 = .rodata:0x00000774; // type:object size:0x4 data:float +lbl_1_rodata_778 = .rodata:0x00000778; // type:object size:0x8 data:double +lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 data:float +lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x4 data:float +lbl_1_rodata_78C = .rodata:0x0000078C; // type:object size:0x4 data:float +lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x4 data:float +lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 data:float +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 data:float +lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 data:float +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 data:float +lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 data:float +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_rodata_7AC = .rodata:0x000007AC; // type:object size:0x4 data:float +lbl_1_rodata_7B0 = .rodata:0x000007B0; // type:object size:0x4 data:float +lbl_1_rodata_7B4 = .rodata:0x000007B4; // type:object size:0x4 data:float +lbl_1_rodata_7B8 = .rodata:0x000007B8; // type:object size:0x8 data:double +lbl_1_rodata_7C0 = .rodata:0x000007C0; // type:object size:0x4 data:float +lbl_1_rodata_7C4 = .rodata:0x000007C4; // type:object size:0x4 data:float +lbl_1_rodata_7C8 = .rodata:0x000007C8; // type:object size:0x4 data:float +lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x8 data:double +lbl_1_rodata_7D8 = .rodata:0x000007D8; // type:object size:0x8 data:double +lbl_1_rodata_7E0 = .rodata:0x000007E0; // type:object size:0x4 data:float +lbl_1_rodata_7E4 = .rodata:0x000007E4; // type:object size:0x4 data:float +lbl_1_rodata_7E8 = .rodata:0x000007E8; // type:object size:0x4 data:float +lbl_1_rodata_7EC = .rodata:0x000007EC; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0xC +lbl_1_data_2C = .data:0x0000002C; // type:object size:0xC +lbl_1_data_38 = .data:0x00000038; // type:object size:0x20 +lbl_1_data_58 = .data:0x00000058; // type:object size:0xC +lbl_1_data_64 = .data:0x00000064; // type:object size:0xC +lbl_1_data_70 = .data:0x00000070; // type:object size:0xC +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x7 data:string +lbl_1_data_83 = .data:0x00000083; // type:object size:0x7 data:string +lbl_1_data_8A = .data:0x0000008A; // type:object size:0x7 data:string +lbl_1_data_91 = .data:0x00000091; // type:object size:0x7 data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x28 +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x20 +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x1C +lbl_1_data_104 = .data:0x00000104; // type:object size:0x40 +lbl_1_data_144 = .data:0x00000144; // type:object size:0x58 +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x4 data:4byte +lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x24 +lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x24 +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x24 +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x2E8 +lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x10 +lbl_1_data_504 = .data:0x00000504; // type:object size:0x4 +lbl_1_data_508 = .data:0x00000508; // type:object size:0xC +lbl_1_data_514 = .data:0x00000514; // type:object size:0xC +lbl_1_data_520 = .data:0x00000520; // type:object size:0x30 +jumptable_1_data_550 = .data:0x00000550; // type:object size:0x24 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x14 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:float +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x2 data:2byte +lbl_1_bss_62 = .bss:0x00000062; // type:object size:0x2 data:2byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte +lbl_1_bss_66 = .bss:0x00000066; // type:object size:0x6 data:2byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x8 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0xC +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0xC +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x50 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0xC data:float +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0xC data:float +lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x8 data:4byte +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x2 data:2byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x8 data:4byte +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x8 data:4byte +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x4 data:4byte +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte +lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x4 data:4byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x4 data:4byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x4 data:4byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x2 data:2byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x1C data:4byte +lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x4 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0xC00 +lbl_1_bss_D6C = .bss:0x00000D6C; // type:object size:0x30 +lbl_1_bss_D9C = .bss:0x00000D9C; // type:object size:0x4 data:4byte +lbl_1_bss_DA0 = .bss:0x00000DA0; // type:object size:0x4 data:4byte +lbl_1_bss_DA4 = .bss:0x00000DA4; // type:object size:0x6800 data:float +lbl_1_bss_75A4 = .bss:0x000075A4; // type:object size:0x4 data:4byte +lbl_1_bss_75A8 = .bss:0x000075A8; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m409Dll/splits.txt b/config/GMPP01_00/rels/m409Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m409Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m409Dll/symbols.txt b/config/GMPP01_00/rels/m409Dll/symbols.txt new file mode 100644 index 00000000..54b3dcb3 --- /dev/null +++ b/config/GMPP01_00/rels/m409Dll/symbols.txt @@ -0,0 +1,332 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x394 +fn_1_434 = .text:0x00000434; // type:function size:0x78 +fn_1_4AC = .text:0x000004AC; // type:function size:0x78 +fn_1_524 = .text:0x00000524; // type:function size:0x65C +fn_1_B80 = .text:0x00000B80; // type:function size:0x25C +fn_1_DDC = .text:0x00000DDC; // type:function size:0x194 +fn_1_F70 = .text:0x00000F70; // type:function size:0x178 +fn_1_10E8 = .text:0x000010E8; // type:function size:0xA8C +fn_1_1B74 = .text:0x00001B74; // type:function size:0x524 +fn_1_2098 = .text:0x00002098; // type:function size:0x354 +fn_1_23EC = .text:0x000023EC; // type:function size:0x28 +fn_1_2414 = .text:0x00002414; // type:function size:0x40 +fn_1_2454 = .text:0x00002454; // type:function size:0x30 +fn_1_2484 = .text:0x00002484; // type:function size:0x948 +fn_1_2DCC = .text:0x00002DCC; // type:function size:0xA74 +fn_1_3840 = .text:0x00003840; // type:function size:0x148 +fn_1_3988 = .text:0x00003988; // type:function size:0x150 +fn_1_3AD8 = .text:0x00003AD8; // type:function size:0x5CC +fn_1_40A4 = .text:0x000040A4; // type:function size:0x7C +fn_1_4120 = .text:0x00004120; // type:function size:0x5C +fn_1_417C = .text:0x0000417C; // type:function size:0x374 +fn_1_44F0 = .text:0x000044F0; // type:function size:0xB0C +fn_1_4FFC = .text:0x00004FFC; // type:function size:0x40C +fn_1_5408 = .text:0x00005408; // type:function size:0x1D8 +fn_1_55E0 = .text:0x000055E0; // type:function size:0x1FC +fn_1_57DC = .text:0x000057DC; // type:function size:0x104 +fn_1_58E0 = .text:0x000058E0; // type:function size:0x138 +fn_1_5A18 = .text:0x00005A18; // type:function size:0x544 +fn_1_5F5C = .text:0x00005F5C; // type:function size:0x60 +fn_1_5FBC = .text:0x00005FBC; // type:function size:0x38 +fn_1_5FF4 = .text:0x00005FF4; // type:function size:0x38 +fn_1_602C = .text:0x0000602C; // type:function size:0x5DC +fn_1_6608 = .text:0x00006608; // type:function size:0xCC +fn_1_66D4 = .text:0x000066D4; // type:function size:0xA4 +fn_1_6778 = .text:0x00006778; // type:function size:0x68 +fn_1_67E0 = .text:0x000067E0; // type:function size:0x120 +fn_1_6900 = .text:0x00006900; // type:function size:0x28 +fn_1_6928 = .text:0x00006928; // type:function size:0xA1C +fn_1_7344 = .text:0x00007344; // type:function size:0xCA4 +fn_1_7FE8 = .text:0x00007FE8; // type:function size:0x850 +fn_1_8838 = .text:0x00008838; // type:function size:0x4D0 +fn_1_8D08 = .text:0x00008D08; // type:function size:0x64 +fn_1_8D6C = .text:0x00008D6C; // type:function size:0x454 +fn_1_91C0 = .text:0x000091C0; // type:function size:0x46C +fn_1_962C = .text:0x0000962C; // type:function size:0xF58 +fn_1_A584 = .text:0x0000A584; // type:function size:0x43C +fn_1_A9C0 = .text:0x0000A9C0; // type:function size:0x1F4 +fn_1_ABB4 = .text:0x0000ABB4; // type:function size:0x54 +fn_1_AC08 = .text:0x0000AC08; // type:function size:0x138 +fn_1_AD40 = .text:0x0000AD40; // type:function size:0x154 +fn_1_AE94 = .text:0x0000AE94; // type:function size:0x78 +fn_1_AF0C = .text:0x0000AF0C; // type:function size:0x11C +fn_1_B028 = .text:0x0000B028; // type:function size:0x78 +fn_1_B0A0 = .text:0x0000B0A0; // type:function size:0x2D8 +fn_1_B378 = .text:0x0000B378; // type:function size:0x198 +fn_1_B510 = .text:0x0000B510; // type:function size:0xD8 +fn_1_B5E8 = .text:0x0000B5E8; // type:function size:0xBC +fn_1_B6A4 = .text:0x0000B6A4; // type:function size:0x33C +fn_1_B9E0 = .text:0x0000B9E0; // type:function size:0x4B0 +fn_1_BE90 = .text:0x0000BE90; // type:function size:0xA8 +fn_1_BF38 = .text:0x0000BF38; // type:function size:0x50 +fn_1_BF88 = .text:0x0000BF88; // type:function size:0x138 +fn_1_C0C0 = .text:0x0000C0C0; // type:function size:0xA4 +fn_1_C164 = .text:0x0000C164; // type:function size:0xA34 +fn_1_CB98 = .text:0x0000CB98; // type:function size:0x118 +fn_1_CCB0 = .text:0x0000CCB0; // type:function size:0x1C +fn_1_CCCC = .text:0x0000CCCC; // type:function size:0x2C +fn_1_CCF8 = .text:0x0000CCF8; // type:function size:0x184 +fn_1_CE7C = .text:0x0000CE7C; // type:function size:0xA0 +fn_1_CF1C = .text:0x0000CF1C; // type:function size:0xA8 +fn_1_CFC4 = .text:0x0000CFC4; // type:function size:0x8C +fn_1_D050 = .text:0x0000D050; // type:function size:0x98 +fn_1_D0E8 = .text:0x0000D0E8; // type:function size:0x348 +fn_1_D430 = .text:0x0000D430; // type:function size:0x618 +fn_1_DA48 = .text:0x0000DA48; // type:function size:0x370 +fn_1_DDB8 = .text:0x0000DDB8; // type:function size:0x13C +fn_1_DEF4 = .text:0x0000DEF4; // type:function size:0x2C +fn_1_DF20 = .text:0x0000DF20; // type:function size:0x308 +fn_1_E228 = .text:0x0000E228; // type:function size:0x80 +fn_1_E2A8 = .text:0x0000E2A8; // type:function size:0x520 +fn_1_E7C8 = .text:0x0000E7C8; // type:function size:0x50 +fn_1_E818 = .text:0x0000E818; // type:function size:0x44 +fn_1_E85C = .text:0x0000E85C; // type:function size:0x70 +fn_1_E8CC = .text:0x0000E8CC; // type:function size:0x74 +fn_1_E940 = .text:0x0000E940; // type:function size:0x5C +fn_1_E99C = .text:0x0000E99C; // type:function size:0x88 +fn_1_EA24 = .text:0x0000EA24; // type:function size:0x8C +fn_1_EAB0 = .text:0x0000EAB0; // type:function size:0x44 +fn_1_EAF4 = .text:0x0000EAF4; // type:function size:0x70 +fn_1_EB64 = .text:0x0000EB64; // type:function size:0x74 +fn_1_EBD8 = .text:0x0000EBD8; // type:function size:0x44 +fn_1_EC1C = .text:0x0000EC1C; // type:function size:0x70 +fn_1_EC8C = .text:0x0000EC8C; // type:function size:0x74 +fn_1_ED00 = .text:0x0000ED00; // type:function size:0x44 +fn_1_ED44 = .text:0x0000ED44; // type:function size:0x70 +fn_1_EDB4 = .text:0x0000EDB4; // type:function size:0x70 +fn_1_EE24 = .text:0x0000EE24; // type:function size:0x44 +fn_1_EE68 = .text:0x0000EE68; // type:function size:0x70 +fn_1_EED8 = .text:0x0000EED8; // type:function size:0x70 +fn_1_EF48 = .text:0x0000EF48; // type:function size:0x5C +fn_1_EFA4 = .text:0x0000EFA4; // type:function size:0x80 +fn_1_F024 = .text:0x0000F024; // type:function size:0x74 +fn_1_F098 = .text:0x0000F098; // type:function size:0x78 +fn_1_F110 = .text:0x0000F110; // type:function size:0x6C +fn_1_F17C = .text:0x0000F17C; // type:function size:0x78 +fn_1_F1F4 = .text:0x0000F1F4; // type:function size:0x98 +fn_1_F28C = .text:0x0000F28C; // type:function size:0x6C +fn_1_F2F8 = .text:0x0000F2F8; // type:function size:0x78 +fn_1_F370 = .text:0x0000F370; // type:function size:0x98 +fn_1_F408 = .text:0x0000F408; // type:function size:0x70 +fn_1_F478 = .text:0x0000F478; // type:function size:0x78 +fn_1_F4F0 = .text:0x0000F4F0; // type:function size:0x98 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x100 +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x10 scope:local data:byte +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0x10 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x70 data:float +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4 data:4byte +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x9 data:string +lbl_1_data_CD = .data:0x000000CD; // type:object size:0x9 data:string +lbl_1_data_D6 = .data:0x000000D6; // type:object size:0x3 data:string +lbl_1_data_D9 = .data:0x000000D9; // type:object size:0x10 data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x26 data:string +lbl_1_data_10F = .data:0x0000010F; // type:object size:0x2D +lbl_1_data_13C = .data:0x0000013C; // type:object size:0x1C +lbl_1_data_158 = .data:0x00000158; // type:object size:0x20 +lbl_1_data_178 = .data:0x00000178; // type:object size:0x40 +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x14 +jumptable_1_data_1CC = .data:0x000001CC; // type:object size:0x20 scope:local +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x4 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x1 data:byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte +lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x1 data:byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:float +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x1 data:byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:float +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x1 data:byte +lbl_1_bss_21 = .bss:0x00000021; // type:object size:0x1 data:byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x9C data:2byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 data:2byte +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x8 data:4byte +lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x14 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x2 data:2byte +lbl_1_bss_106 = .bss:0x00000106; // type:object size:0x2 data:2byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x2 data:2byte +lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x280 data:float +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x10 +lbl_1_bss_39C = .bss:0x0000039C; // type:object size:0x4 data:4byte +lbl_1_bss_3A0 = .bss:0x000003A0; // type:object size:0x10 diff --git a/config/GMPP01_00/rels/m410Dll/splits.txt b/config/GMPP01_00/rels/m410Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m410Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m410Dll/symbols.txt b/config/GMPP01_00/rels/m410Dll/symbols.txt new file mode 100644 index 00000000..8d84a25d --- /dev/null +++ b/config/GMPP01_00/rels/m410Dll/symbols.txt @@ -0,0 +1,316 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x444 +fn_1_4E4 = .text:0x000004E4; // type:function size:0xC4 +fn_1_5A8 = .text:0x000005A8; // type:function size:0x94 +fn_1_63C = .text:0x0000063C; // type:function size:0x16C +fn_1_7A8 = .text:0x000007A8; // type:function size:0x314 +fn_1_ABC = .text:0x00000ABC; // type:function size:0x330 +fn_1_DEC = .text:0x00000DEC; // type:function size:0x204 +fn_1_FF0 = .text:0x00000FF0; // type:function size:0x3AC +fn_1_139C = .text:0x0000139C; // type:function size:0x2AC +fn_1_1648 = .text:0x00001648; // type:function size:0x380 +fn_1_19C8 = .text:0x000019C8; // type:function size:0xB4 +fn_1_1A7C = .text:0x00001A7C; // type:function size:0x6F0 +fn_1_216C = .text:0x0000216C; // type:function size:0x1C +fn_1_2188 = .text:0x00002188; // type:function size:0x664 +fn_1_27EC = .text:0x000027EC; // type:function size:0x18 +fn_1_2804 = .text:0x00002804; // type:function size:0x18 +fn_1_281C = .text:0x0000281C; // type:function size:0x18 +fn_1_2834 = .text:0x00002834; // type:function size:0x18 +fn_1_284C = .text:0x0000284C; // type:function size:0x18 +fn_1_2864 = .text:0x00002864; // type:function size:0x18 +fn_1_287C = .text:0x0000287C; // type:function size:0x30 +fn_1_28AC = .text:0x000028AC; // type:function size:0x30 +fn_1_28DC = .text:0x000028DC; // type:function size:0x38 +fn_1_2914 = .text:0x00002914; // type:function size:0x348 +fn_1_2C5C = .text:0x00002C5C; // type:function size:0x378 +fn_1_2FD4 = .text:0x00002FD4; // type:function size:0x11C +fn_1_30F0 = .text:0x000030F0; // type:function size:0xB4 +fn_1_31A4 = .text:0x000031A4; // type:function size:0x54 +fn_1_31F8 = .text:0x000031F8; // type:function size:0x4 +fn_1_31FC = .text:0x000031FC; // type:function size:0x154 +fn_1_3350 = .text:0x00003350; // type:function size:0x58 +fn_1_33A8 = .text:0x000033A8; // type:function size:0xDC +fn_1_3484 = .text:0x00003484; // type:function size:0x3C +fn_1_34C0 = .text:0x000034C0; // type:function size:0x154 +fn_1_3614 = .text:0x00003614; // type:function size:0x5CC +fn_1_3BE0 = .text:0x00003BE0; // type:function size:0xCF8 +fn_1_48D8 = .text:0x000048D8; // type:function size:0x32C +fn_1_4C04 = .text:0x00004C04; // type:function size:0x3E8 +fn_1_4FEC = .text:0x00004FEC; // type:function size:0x5DC +fn_1_55C8 = .text:0x000055C8; // type:function size:0x3C4 +fn_1_598C = .text:0x0000598C; // type:function size:0x168 +fn_1_5AF4 = .text:0x00005AF4; // type:function size:0x1AC +fn_1_5CA0 = .text:0x00005CA0; // type:function size:0x23C +fn_1_5EDC = .text:0x00005EDC; // type:function size:0x300 +fn_1_61DC = .text:0x000061DC; // type:function size:0x188 +fn_1_6364 = .text:0x00006364; // type:function size:0x354 +fn_1_66B8 = .text:0x000066B8; // type:function size:0x11C +fn_1_67D4 = .text:0x000067D4; // type:function size:0x194 +fn_1_6968 = .text:0x00006968; // type:function size:0x41C +fn_1_6D84 = .text:0x00006D84; // type:function size:0x30 +fn_1_6DB4 = .text:0x00006DB4; // type:function size:0x384 +fn_1_7138 = .text:0x00007138; // type:function size:0x32C +fn_1_7464 = .text:0x00007464; // type:function size:0x30 +fn_1_7494 = .text:0x00007494; // type:function size:0x8C +fn_1_7520 = .text:0x00007520; // type:function size:0x80 +fn_1_75A0 = .text:0x000075A0; // type:function size:0x114 +fn_1_76B4 = .text:0x000076B4; // type:function size:0xEC +fn_1_77A0 = .text:0x000077A0; // type:function size:0x44 +fn_1_77E4 = .text:0x000077E4; // type:function size:0x10 +fn_1_77F4 = .text:0x000077F4; // type:function size:0x48 +fn_1_783C = .text:0x0000783C; // type:function size:0x48 +fn_1_7884 = .text:0x00007884; // type:function size:0x170 +fn_1_79F4 = .text:0x000079F4; // type:function size:0xCC +fn_1_7AC0 = .text:0x00007AC0; // type:function size:0x36C +fn_1_7E2C = .text:0x00007E2C; // type:function size:0x23C +fn_1_8068 = .text:0x00008068; // type:function size:0x34 +fn_1_809C = .text:0x0000809C; // type:function size:0x374 +fn_1_8410 = .text:0x00008410; // type:function size:0x264 +fn_1_8674 = .text:0x00008674; // type:function size:0x260 +fn_1_88D4 = .text:0x000088D4; // type:function size:0x138 +fn_1_8A0C = .text:0x00008A0C; // type:function size:0xAC +fn_1_8AB8 = .text:0x00008AB8; // type:function size:0x584 +fn_1_903C = .text:0x0000903C; // type:function size:0x6B4 +fn_1_96F0 = .text:0x000096F0; // type:function size:0x39C +fn_1_9A8C = .text:0x00009A8C; // type:function size:0x1F4 +fn_1_9C80 = .text:0x00009C80; // type:function size:0x188 +fn_1_9E08 = .text:0x00009E08; // type:function size:0xF0 +fn_1_9EF8 = .text:0x00009EF8; // type:function size:0x74 +fn_1_9F6C = .text:0x00009F6C; // type:function size:0x134 +fn_1_A0A0 = .text:0x0000A0A0; // type:function size:0x31C +fn_1_A3BC = .text:0x0000A3BC; // type:function size:0x468 +fn_1_A824 = .text:0x0000A824; // type:function size:0x17C +fn_1_A9A0 = .text:0x0000A9A0; // type:function size:0x79C +fn_1_B13C = .text:0x0000B13C; // type:function size:0x644 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x10 data:4byte +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x10 data:4byte +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x20 data:4byte +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x1 data:byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x3C +lbl_1_data_88 = .data:0x00000088; // type:object size:0x3C +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x14 +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x2 data:2byte +lbl_1_data_DC = .data:0x000000DC; // type:object size:0x20 +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x8 +lbl_1_data_104 = .data:0x00000104; // type:object size:0xC +lbl_1_data_110 = .data:0x00000110; // type:object size:0x4 data:4byte +lbl_1_data_114 = .data:0x00000114; // type:object size:0x1C +lbl_1_data_130 = .data:0x00000130; // type:object size:0x10 +lbl_1_data_140 = .data:0x00000140; // type:object size:0x20 +lbl_1_data_160 = .data:0x00000160; // type:object size:0xC +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x20 +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x28 +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xA0 +lbl_1_data_274 = .data:0x00000274; // type:object size:0x20 +lbl_1_data_294 = .data:0x00000294; // type:object size:0x20 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x6 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:float +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:float +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:float +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x10 +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m411Dll/splits.txt b/config/GMPP01_00/rels/m411Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m411Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m411Dll/symbols.txt b/config/GMPP01_00/rels/m411Dll/symbols.txt new file mode 100644 index 00000000..a4cd3909 --- /dev/null +++ b/config/GMPP01_00/rels/m411Dll/symbols.txt @@ -0,0 +1,278 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0xDE0 +fn_1_E80 = .text:0x00000E80; // type:function size:0x10C +fn_1_F8C = .text:0x00000F8C; // type:function size:0xE8 +fn_1_1074 = .text:0x00001074; // type:function size:0x424 +fn_1_1498 = .text:0x00001498; // type:function size:0x88 +fn_1_1520 = .text:0x00001520; // type:function size:0x72C +fn_1_1C4C = .text:0x00001C4C; // type:function size:0x47C +fn_1_20C8 = .text:0x000020C8; // type:function size:0x508 +fn_1_25D0 = .text:0x000025D0; // type:function size:0xEE0 +fn_1_34B0 = .text:0x000034B0; // type:function size:0x5B0 +fn_1_3A60 = .text:0x00003A60; // type:function size:0x3C +fn_1_3A9C = .text:0x00003A9C; // type:function size:0x3C +fn_1_3AD8 = .text:0x00003AD8; // type:function size:0x3C +fn_1_3B14 = .text:0x00003B14; // type:function size:0x3C +fn_1_3B50 = .text:0x00003B50; // type:function size:0x3E4 +fn_1_3F34 = .text:0x00003F34; // type:function size:0x2E4 +fn_1_4218 = .text:0x00004218; // type:function size:0x23C +fn_1_4454 = .text:0x00004454; // type:function size:0x514 +fn_1_4968 = .text:0x00004968; // type:function size:0x248 +fn_1_4BB0 = .text:0x00004BB0; // type:function size:0x2DC +fn_1_4E8C = .text:0x00004E8C; // type:function size:0x1F0 +fn_1_507C = .text:0x0000507C; // type:function size:0x308 +fn_1_5384 = .text:0x00005384; // type:function size:0xC8 +fn_1_544C = .text:0x0000544C; // type:function size:0x108 +fn_1_5554 = .text:0x00005554; // type:function size:0x368 +fn_1_58BC = .text:0x000058BC; // type:function size:0x54 +fn_1_5910 = .text:0x00005910; // type:function size:0x448 +fn_1_5D58 = .text:0x00005D58; // type:function size:0xB8 +fn_1_5E10 = .text:0x00005E10; // type:function size:0xC0 +fn_1_5ED0 = .text:0x00005ED0; // type:function size:0x6C +fn_1_5F3C = .text:0x00005F3C; // type:function size:0x4EC +fn_1_6428 = .text:0x00006428; // type:function size:0x3F8 +fn_1_6820 = .text:0x00006820; // type:function size:0x21C +fn_1_6A3C = .text:0x00006A3C; // type:function size:0x2B8 +fn_1_6CF4 = .text:0x00006CF4; // type:function size:0xE4 +fn_1_6DD8 = .text:0x00006DD8; // type:function size:0xC4 +fn_1_6E9C = .text:0x00006E9C; // type:function size:0xAC +fn_1_6F48 = .text:0x00006F48; // type:function size:0x680 +fn_1_75C8 = .text:0x000075C8; // type:function size:0xB8 +fn_1_7680 = .text:0x00007680; // type:function size:0xB8 +fn_1_7738 = .text:0x00007738; // type:function size:0x1348 +fn_1_8A80 = .text:0x00008A80; // type:function size:0x33C +fn_1_8DBC = .text:0x00008DBC; // type:function size:0x6D4 +fn_1_9490 = .text:0x00009490; // type:function size:0x730 +fn_1_9BC0 = .text:0x00009BC0; // type:function size:0x444 +fn_1_A004 = .text:0x0000A004; // type:function size:0x78 +fn_1_A07C = .text:0x0000A07C; // type:function size:0xA4 +fn_1_A120 = .text:0x0000A120; // type:function size:0x394 +fn_1_A4B4 = .text:0x0000A4B4; // type:function size:0x2D4 +fn_1_A788 = .text:0x0000A788; // type:function size:0x528 +fn_1_ACB0 = .text:0x0000ACB0; // type:function size:0xA8 +fn_1_AD58 = .text:0x0000AD58; // type:function size:0xB48 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC +lbl_1_data_78 = .data:0x00000078; // type:object size:0xE data:string +lbl_1_data_86 = .data:0x00000086; // type:object size:0xE data:string +lbl_1_data_94 = .data:0x00000094; // type:object size:0xE data:string +lbl_1_data_A2 = .data:0x000000A2; // type:object size:0xE data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0xE data:string +lbl_1_data_BE = .data:0x000000BE; // type:object size:0xE data:string +lbl_1_data_CC = .data:0x000000CC; // type:object size:0xE data:string +lbl_1_data_DA = .data:0x000000DA; // type:object size:0xE data:string +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0xE data:string +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0xE data:string +lbl_1_data_104 = .data:0x00000104; // type:object size:0xE data:string +lbl_1_data_112 = .data:0x00000112; // type:object size:0xE data:string +lbl_1_data_120 = .data:0x00000120; // type:object size:0xE data:string +lbl_1_data_12E = .data:0x0000012E; // type:object size:0xE data:string +lbl_1_data_13C = .data:0x0000013C; // type:object size:0xE data:string +lbl_1_data_14A = .data:0x0000014A; // type:object size:0xE data:string +lbl_1_data_158 = .data:0x00000158; // type:object size:0xE data:string +lbl_1_data_166 = .data:0x00000166; // type:object size:0xE data:string +lbl_1_data_174 = .data:0x00000174; // type:object size:0xE data:string +lbl_1_data_182 = .data:0x00000182; // type:object size:0xE data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0xE data:string +lbl_1_data_19E = .data:0x0000019E; // type:object size:0xE data:string +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0xE data:string +lbl_1_data_1BA = .data:0x000001BA; // type:object size:0xE data:string +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x78 +lbl_1_data_240 = .data:0x00000240; // type:object size:0x20 +lbl_1_data_260 = .data:0x00000260; // type:object size:0x20 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x24 +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x20 +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0xC +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x14 +lbl_1_data_2E4 = .data:0x000002E4; // type:object size:0xB data:string +lbl_1_data_2EF = .data:0x000002EF; // type:object size:0xB data:string +lbl_1_data_2FA = .data:0x000002FA; // type:object size:0x8 data:string +lbl_1_data_302 = .data:0x00000302; // type:object size:0xA +lbl_1_data_30C = .data:0x0000030C; // type:object size:0x10 +lbl_1_data_31C = .data:0x0000031C; // type:object size:0xC data:string +lbl_1_data_328 = .data:0x00000328; // type:object size:0x7 data:string +lbl_1_data_32F = .data:0x0000032F; // type:object size:0x7 data:string +lbl_1_data_336 = .data:0x00000336; // type:object size:0x7 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x60 data:float +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x60 data:float +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x60 data:float +lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x10 +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte +lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x33C data:float +lbl_1_bss_474 = .bss:0x00000474; // type:object size:0x9B0 +lbl_1_bss_E24 = .bss:0x00000E24; // type:object size:0x4 data:float +lbl_1_bss_E28 = .bss:0x00000E28; // type:object size:0x4 data:4byte +lbl_1_bss_E2C = .bss:0x00000E2C; // type:object size:0xC data:4byte +lbl_1_bss_E38 = .bss:0x00000E38; // type:object size:0x4 data:4byte +lbl_1_bss_E3C = .bss:0x00000E3C; // type:object size:0x4 data:4byte +lbl_1_bss_E40 = .bss:0x00000E40; // type:object size:0x4 data:4byte +lbl_1_bss_E44 = .bss:0x00000E44; // type:object size:0x28 data:4byte +lbl_1_bss_E6C = .bss:0x00000E6C; // type:object size:0x28 data:4byte +lbl_1_bss_E94 = .bss:0x00000E94; // type:object size:0x4 data:4byte +lbl_1_bss_E98 = .bss:0x00000E98; // type:object size:0x4 data:4byte +lbl_1_bss_E9C = .bss:0x00000E9C; // type:object size:0x2 data:2byte +lbl_1_bss_E9E = .bss:0x00000E9E; // type:object size:0x2 data:2byte +lbl_1_bss_EA0 = .bss:0x00000EA0; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m412Dll/splits.txt b/config/GMPP01_00/rels/m412Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m412Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m412Dll/symbols.txt b/config/GMPP01_00/rels/m412Dll/symbols.txt new file mode 100644 index 00000000..577e6f3e --- /dev/null +++ b/config/GMPP01_00/rels/m412Dll/symbols.txt @@ -0,0 +1,190 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x64C +fn_1_6EC = .text:0x000006EC; // type:function size:0x50 +fn_1_73C = .text:0x0000073C; // type:function size:0x80 +fn_1_7BC = .text:0x000007BC; // type:function size:0xD8 +fn_1_894 = .text:0x00000894; // type:function size:0x4 +fn_1_898 = .text:0x00000898; // type:function size:0x24 +fn_1_8BC = .text:0x000008BC; // type:function size:0x144C +fn_1_1D08 = .text:0x00001D08; // type:function size:0x80 +fn_1_1D88 = .text:0x00001D88; // type:function size:0x34 +fn_1_1DBC = .text:0x00001DBC; // type:function size:0x258 +fn_1_2014 = .text:0x00002014; // type:function size:0x50 +fn_1_2064 = .text:0x00002064; // type:function size:0x6A4 +fn_1_2708 = .text:0x00002708; // type:function size:0xBC +fn_1_27C4 = .text:0x000027C4; // type:function size:0x258 +fn_1_2A1C = .text:0x00002A1C; // type:function size:0xF2C +fn_1_3948 = .text:0x00003948; // type:function size:0x128C +fn_1_4BD4 = .text:0x00004BD4; // type:function size:0xB8 +fn_1_4C8C = .text:0x00004C8C; // type:function size:0x1BC +fn_1_4E48 = .text:0x00004E48; // type:function size:0x404 +fn_1_524C = .text:0x0000524C; // type:function size:0xC0 +fn_1_530C = .text:0x0000530C; // type:function size:0x6C +fn_1_5378 = .text:0x00005378; // type:function size:0x6C +fn_1_53E4 = .text:0x000053E4; // type:function size:0x228 +fn_1_560C = .text:0x0000560C; // type:function size:0x21C +fn_1_5828 = .text:0x00005828; // type:function size:0xD5C +fn_1_6584 = .text:0x00006584; // type:function size:0x104 +fn_1_6688 = .text:0x00006688; // type:function size:0x17C +fn_1_6804 = .text:0x00006804; // type:function size:0x144C +fn_1_7C50 = .text:0x00007C50; // type:function size:0x23BC +fn_1_A00C = .text:0x0000A00C; // type:function size:0x5FC +fn_1_A608 = .text:0x0000A608; // type:function size:0x470 +fn_1_AA78 = .text:0x0000AA78; // type:function size:0x340 +fn_1_ADB8 = .text:0x0000ADB8; // type:function size:0x374 +fn_1_B12C = .text:0x0000B12C; // type:function size:0x24 +fn_1_B150 = .text:0x0000B150; // type:function size:0x60 +fn_1_B1B0 = .text:0x0000B1B0; // type:function size:0x498 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x20 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x20 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x18 +lbl_1_data_78 = .data:0x00000078; // type:object size:0x54 data:float +lbl_1_data_CC = .data:0x000000CC; // type:object size:0x14 data:string +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x14 data:string +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x14 data:string +lbl_1_data_108 = .data:0x00000108; // type:object size:0x14 data:string +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x14 data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 data:string +lbl_1_data_144 = .data:0x00000144; // type:object size:0x14 data:string +lbl_1_data_158 = .data:0x00000158; // type:object size:0x14 data:string +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x14 data:string +lbl_1_data_180 = .data:0x00000180; // type:object size:0x14 data:string +lbl_1_data_194 = .data:0x00000194; // type:object size:0x14 data:string +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x14 data:string +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x14 data:string +lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x14 data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x14 data:string +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x14 data:string +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x14 data:string +lbl_1_data_220 = .data:0x00000220; // type:object size:0x14 data:string +lbl_1_data_234 = .data:0x00000234; // type:object size:0x14 data:string +lbl_1_data_248 = .data:0x00000248; // type:object size:0x14 data:string +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x14 data:string +lbl_1_data_270 = .data:0x00000270; // type:object size:0x14 data:string +lbl_1_data_284 = .data:0x00000284; // type:object size:0x14 data:string +lbl_1_data_298 = .data:0x00000298; // type:object size:0x5C +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0xC data:string +lbl_1_data_300 = .data:0x00000300; // type:object size:0x7 data:string +lbl_1_data_307 = .data:0x00000307; // type:object size:0x9 +lbl_1_data_310 = .data:0x00000310; // type:object size:0x30 +lbl_1_data_340 = .data:0x00000340; // type:object size:0x8 +lbl_1_data_348 = .data:0x00000348; // type:object size:0x18 +lbl_1_data_360 = .data:0x00000360; // type:object size:0x9 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x10 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x114 +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x114 +lbl_1_bss_250 = .bss:0x00000250; // type:object size:0xC data:float +lbl_1_bss_25C = .bss:0x0000025C; // type:object size:0xC data:float +lbl_1_bss_268 = .bss:0x00000268; // type:object size:0xC data:float +lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x4 data:4byte +lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x80 +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x44 data:2byte +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x198 +lbl_1_bss_4D4 = .bss:0x000004D4; // type:object size:0x2A0 +lbl_1_bss_774 = .bss:0x00000774; // type:object size:0x4 data:float +lbl_1_bss_778 = .bss:0x00000778; // type:object size:0x4 data:float +lbl_1_bss_77C = .bss:0x0000077C; // type:object size:0x4 data:float +lbl_1_bss_780 = .bss:0x00000780; // type:object size:0x10 data:4byte +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x2 data:2byte +lbl_1_bss_79C = .bss:0x0000079C; // type:object size:0x2 data:2byte +lbl_1_bss_79E = .bss:0x0000079E; // type:object size:0x2 data:2byte +lbl_1_bss_7A0 = .bss:0x000007A0; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m413Dll/splits.txt b/config/GMPP01_00/rels/m413Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m413Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m413Dll/symbols.txt b/config/GMPP01_00/rels/m413Dll/symbols.txt new file mode 100644 index 00000000..a3598af6 --- /dev/null +++ b/config/GMPP01_00/rels/m413Dll/symbols.txt @@ -0,0 +1,211 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x2EC +fn_1_38C = .text:0x0000038C; // type:function size:0x134 +fn_1_4C0 = .text:0x000004C0; // type:function size:0xBC +fn_1_57C = .text:0x0000057C; // type:function size:0x154 +fn_1_6D0 = .text:0x000006D0; // type:function size:0x128 +fn_1_7F8 = .text:0x000007F8; // type:function size:0x6C8 +fn_1_EC0 = .text:0x00000EC0; // type:function size:0x1F8 +fn_1_10B8 = .text:0x000010B8; // type:function size:0x90C +fn_1_19C4 = .text:0x000019C4; // type:function size:0x4 +fn_1_19C8 = .text:0x000019C8; // type:function size:0x38DC +fn_1_52A4 = .text:0x000052A4; // type:function size:0x3824 +fn_1_8AC8 = .text:0x00008AC8; // type:function size:0x148 +fn_1_8C10 = .text:0x00008C10; // type:function size:0x192C +fn_1_A53C = .text:0x0000A53C; // type:function size:0x1188 +fn_1_B6C4 = .text:0x0000B6C4; // type:function size:0x101C +fn_1_C6E0 = .text:0x0000C6E0; // type:function size:0x4D4 +fn_1_CBB4 = .text:0x0000CBB4; // type:function size:0x78C +fn_1_D340 = .text:0x0000D340; // type:function size:0x60 +fn_1_D3A0 = .text:0x0000D3A0; // type:function size:0x360 +fn_1_D700 = .text:0x0000D700; // type:function size:0x64 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xCC +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:4byte +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x19 data:byte +lbl_1_rodata_201 = .rodata:0x00000201; // type:object size:0x1F data:byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC data:4byte +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x30 data:4byte +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x10 data:4byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x10 data:4byte +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0xC data:4byte +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0xC data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 data:4byte +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x428 +lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0xC data:4byte +lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0xC data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0x4 data:float +lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 data:float +lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x8 data:double +lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x8 data:double +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x8 data:double +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x8 data:double +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_rodata_7AC = .rodata:0x000007AC; // type:object size:0x10 data:4byte +lbl_1_rodata_7BC = .rodata:0x000007BC; // type:object size:0x14 data:4byte +lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x60 +lbl_1_rodata_830 = .rodata:0x00000830; // type:object size:0x8 data:double +lbl_1_rodata_838 = .rodata:0x00000838; // type:object size:0x8 data:double +lbl_1_rodata_840 = .rodata:0x00000840; // type:object size:0x4 data:float +lbl_1_rodata_848 = .rodata:0x00000848; // type:object size:0x8 data:double +lbl_1_rodata_850 = .rodata:0x00000850; // type:object size:0x4 data:float +lbl_1_rodata_858 = .rodata:0x00000858; // type:object size:0x8 data:double +lbl_1_rodata_860 = .rodata:0x00000860; // type:object size:0x8 data:double +lbl_1_rodata_868 = .rodata:0x00000868; // type:object size:0x8 data:double +lbl_1_rodata_870 = .rodata:0x00000870; // type:object size:0x8 data:double +lbl_1_rodata_878 = .rodata:0x00000878; // type:object size:0x4 data:float +lbl_1_rodata_87C = .rodata:0x0000087C; // type:object size:0x4 data:float +lbl_1_rodata_880 = .rodata:0x00000880; // type:object size:0x4 data:float +lbl_1_rodata_884 = .rodata:0x00000884; // type:object size:0x4 data:float +lbl_1_rodata_888 = .rodata:0x00000888; // type:object size:0x4 data:float +lbl_1_rodata_88C = .rodata:0x0000088C; // type:object size:0x4 data:float +lbl_1_rodata_890 = .rodata:0x00000890; // type:object size:0x1C data:4byte +lbl_1_rodata_8AC = .rodata:0x000008AC; // type:object size:0x4 data:float +lbl_1_rodata_8B0 = .rodata:0x000008B0; // type:object size:0x8 data:double +lbl_1_rodata_8B8 = .rodata:0x000008B8; // type:object size:0x4 data:float +lbl_1_rodata_8BC = .rodata:0x000008BC; // type:object size:0x4 data:float +lbl_1_rodata_8C0 = .rodata:0x000008C0; // type:object size:0x4 data:float +lbl_1_rodata_8C4 = .rodata:0x000008C4; // type:object size:0x4 data:float +lbl_1_rodata_8C8 = .rodata:0x000008C8; // type:object size:0x8 data:double +lbl_1_rodata_8D0 = .rodata:0x000008D0; // type:object size:0x4 data:float +lbl_1_rodata_8D8 = .rodata:0x000008D8; // type:object size:0x8 data:double +lbl_1_rodata_8E0 = .rodata:0x000008E0; // type:object size:0x4 data:float +lbl_1_rodata_8E4 = .rodata:0x000008E4; // type:object size:0x4 data:float +lbl_1_rodata_8E8 = .rodata:0x000008E8; // type:object size:0x4 data:float +lbl_1_rodata_8EC = .rodata:0x000008EC; // type:object size:0x4 data:float +lbl_1_rodata_8F0 = .rodata:0x000008F0; // type:object size:0x4 data:float +lbl_1_rodata_8F4 = .rodata:0x000008F4; // type:object size:0x4 data:float +lbl_1_rodata_8F8 = .rodata:0x000008F8; // type:object size:0x4 data:float +lbl_1_rodata_8FC = .rodata:0x000008FC; // type:object size:0x4 data:float +lbl_1_rodata_900 = .rodata:0x00000900; // type:object size:0x8 data:double +lbl_1_rodata_908 = .rodata:0x00000908; // type:object size:0x8 data:double +lbl_1_rodata_910 = .rodata:0x00000910; // type:object size:0x4 data:float +lbl_1_rodata_914 = .rodata:0x00000914; // type:object size:0x4 data:float +lbl_1_rodata_918 = .rodata:0x00000918; // type:object size:0xC data:byte +lbl_1_rodata_924 = .rodata:0x00000924; // type:object size:0x18 data:4byte +lbl_1_rodata_93C = .rodata:0x0000093C; // type:object size:0x8 data:byte +lbl_1_rodata_944 = .rodata:0x00000944; // type:object size:0x10 data:4byte +lbl_1_rodata_954 = .rodata:0x00000954; // type:object size:0x1 data:byte +lbl_1_rodata_958 = .rodata:0x00000958; // type:object size:0x10 data:4byte +lbl_1_rodata_968 = .rodata:0x00000968; // type:object size:0x10 data:4byte +lbl_1_rodata_978 = .rodata:0x00000978; // type:object size:0x8 data:double +lbl_1_rodata_980 = .rodata:0x00000980; // type:object size:0x4 data:float +lbl_1_rodata_984 = .rodata:0x00000984; // type:object size:0x4 data:float +lbl_1_rodata_988 = .rodata:0x00000988; // type:object size:0x4 data:float +lbl_1_rodata_98C = .rodata:0x0000098C; // type:object size:0x4 data:float +lbl_1_rodata_990 = .rodata:0x00000990; // type:object size:0x8 data:double +lbl_1_rodata_998 = .rodata:0x00000998; // type:object size:0x4 data:float +lbl_1_rodata_99C = .rodata:0x0000099C; // type:object size:0x4 data:float +lbl_1_rodata_9A0 = .rodata:0x000009A0; // type:object size:0x8 data:double +lbl_1_rodata_9A8 = .rodata:0x000009A8; // type:object size:0x8 data:double +lbl_1_rodata_9B0 = .rodata:0x000009B0; // type:object size:0x10 data:4byte +lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 data:float +lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 data:float +lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 data:float +lbl_1_rodata_9CC = .rodata:0x000009CC; // type:object size:0xC data:4byte +lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0xC data:4byte +lbl_1_rodata_9E4 = .rodata:0x000009E4; // type:object size:0xC data:4byte +lbl_1_rodata_9F0 = .rodata:0x000009F0; // type:object size:0xC data:4byte +lbl_1_rodata_9FC = .rodata:0x000009FC; // type:object size:0xC data:4byte +lbl_1_rodata_A08 = .rodata:0x00000A08; // type:object size:0xC data:4byte +lbl_1_rodata_A14 = .rodata:0x00000A14; // type:object size:0xC data:4byte +lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x1 data:byte +lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 data:float +lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 data:float +lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 data:float +lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 data:float +lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4 data:4byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0x8 data:4byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x2C data:4byte +lbl_1_data_38 = .data:0x00000038; // type:object size:0x9 data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x19 data:string +lbl_1_data_5A = .data:0x0000005A; // type:object size:0x1B data:string +lbl_1_data_75 = .data:0x00000075; // type:object size:0x10 data:string +lbl_1_data_85 = .data:0x00000085; // type:object size:0x10 data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0x10 data:string +lbl_1_data_A5 = .data:0x000000A5; // type:object size:0x10 data:string +lbl_1_data_B5 = .data:0x000000B5; // type:object size:0x11 data:string +lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x11 data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x12 data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x12 data:string +lbl_1_data_FB = .data:0x000000FB; // type:object size:0x12 data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0xF data:string +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x8 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x70 +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x18 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x28 +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x2580 +lbl_1_bss_2680 = .bss:0x00002680; // type:object size:0x4 data:4byte +lbl_1_bss_2684 = .bss:0x00002684; // type:object size:0x3E8 +lbl_1_bss_2A6C = .bss:0x00002A6C; // type:object size:0x4E18 +lbl_1_bss_7884 = .bss:0x00007884; // type:object size:0x30 diff --git a/config/GMPP01_00/rels/m414Dll/splits.txt b/config/GMPP01_00/rels/m414Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m414Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m414Dll/symbols.txt b/config/GMPP01_00/rels/m414Dll/symbols.txt new file mode 100644 index 00000000..b04c8e01 --- /dev/null +++ b/config/GMPP01_00/rels/m414Dll/symbols.txt @@ -0,0 +1,183 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x87C +fn_1_91C = .text:0x0000091C; // type:function size:0x268 +fn_1_B84 = .text:0x00000B84; // type:function size:0x154 +fn_1_CD8 = .text:0x00000CD8; // type:function size:0x7C +fn_1_D54 = .text:0x00000D54; // type:function size:0x634 +fn_1_1388 = .text:0x00001388; // type:function size:0x3C +fn_1_13C4 = .text:0x000013C4; // type:function size:0x3C +fn_1_1400 = .text:0x00001400; // type:function size:0x3C +fn_1_143C = .text:0x0000143C; // type:function size:0x3C +fn_1_1478 = .text:0x00001478; // type:function size:0x214 +fn_1_168C = .text:0x0000168C; // type:function size:0x3C +fn_1_16C8 = .text:0x000016C8; // type:function size:0x3C +fn_1_1704 = .text:0x00001704; // type:function size:0x3C +fn_1_1740 = .text:0x00001740; // type:function size:0x3C +fn_1_177C = .text:0x0000177C; // type:function size:0x3DC +fn_1_1B58 = .text:0x00001B58; // type:function size:0x3C +fn_1_1B94 = .text:0x00001B94; // type:function size:0x3C +fn_1_1BD0 = .text:0x00001BD0; // type:function size:0x3C +fn_1_1C0C = .text:0x00001C0C; // type:function size:0x3C +fn_1_1C48 = .text:0x00001C48; // type:function size:0x1BC +fn_1_1E04 = .text:0x00001E04; // type:function size:0x1B78 +fn_1_397C = .text:0x0000397C; // type:function size:0xDC +fn_1_3A58 = .text:0x00003A58; // type:function size:0xDC +fn_1_3B34 = .text:0x00003B34; // type:function size:0x214 +fn_1_3D48 = .text:0x00003D48; // type:function size:0x184 +fn_1_3ECC = .text:0x00003ECC; // type:function size:0x3E0 +fn_1_42AC = .text:0x000042AC; // type:function size:0x958 +fn_1_4C04 = .text:0x00004C04; // type:function size:0x70 +fn_1_4C74 = .text:0x00004C74; // type:function size:0x19C +fn_1_4E10 = .text:0x00004E10; // type:function size:0x744 +fn_1_5554 = .text:0x00005554; // type:function size:0xD0 +fn_1_5624 = .text:0x00005624; // type:function size:0xD8 +fn_1_56FC = .text:0x000056FC; // type:function size:0x84 +fn_1_5780 = .text:0x00005780; // type:function size:0x2BC +fn_1_5A3C = .text:0x00005A3C; // type:function size:0x4AC +fn_1_5EE8 = .text:0x00005EE8; // type:function size:0x24C +fn_1_6134 = .text:0x00006134; // type:function size:0x418 +fn_1_654C = .text:0x0000654C; // type:function size:0x90 +fn_1_65DC = .text:0x000065DC; // type:function size:0x68 +fn_1_6644 = .text:0x00006644; // type:function size:0x10B0 +fn_1_76F4 = .text:0x000076F4; // type:function size:0x2B4 +fn_1_79A8 = .text:0x000079A8; // type:function size:0x620 +fn_1_7FC8 = .text:0x00007FC8; // type:function size:0x90C +fn_1_88D4 = .text:0x000088D4; // type:function size:0x78 +fn_1_894C = .text:0x0000894C; // type:function size:0xC4 +fn_1_8A10 = .text:0x00008A10; // type:function size:0x60 +fn_1_8A70 = .text:0x00008A70; // type:function size:0x450 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0x10 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x20 +lbl_1_data_50 = .data:0x00000050; // type:object size:0x18 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18 +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x10 +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x10 +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x60 +lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 data:string +lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x3C +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x3C +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x3C +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x10 +lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x820 data:2byte +lbl_1_bss_910 = .bss:0x00000910; // type:object size:0x10 data:float +lbl_1_bss_920 = .bss:0x00000920; // type:object size:0x10 data:float +lbl_1_bss_930 = .bss:0x00000930; // type:object size:0x8 data:4byte +lbl_1_bss_938 = .bss:0x00000938; // type:object size:0x40 +lbl_1_bss_978 = .bss:0x00000978; // type:object size:0x4 data:4byte +lbl_1_bss_97C = .bss:0x0000097C; // type:object size:0x10 +lbl_1_bss_98C = .bss:0x0000098C; // type:object size:0x4 data:4byte +lbl_1_bss_990 = .bss:0x00000990; // type:object size:0x80 +lbl_1_bss_A10 = .bss:0x00000A10; // type:object size:0x2 data:2byte +lbl_1_bss_A12 = .bss:0x00000A12; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m415Dll/splits.txt b/config/GMPP01_00/rels/m415Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m415Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m415Dll/symbols.txt b/config/GMPP01_00/rels/m415Dll/symbols.txt new file mode 100644 index 00000000..f68c9a44 --- /dev/null +++ b/config/GMPP01_00/rels/m415Dll/symbols.txt @@ -0,0 +1,234 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x39C +fn_1_43C = .text:0x0000043C; // type:function size:0x74 +fn_1_4B0 = .text:0x000004B0; // type:function size:0x328 +fn_1_7D8 = .text:0x000007D8; // type:function size:0xCE0 +fn_1_14B8 = .text:0x000014B8; // type:function size:0x64 +fn_1_151C = .text:0x0000151C; // type:function size:0xAC +fn_1_15C8 = .text:0x000015C8; // type:function size:0x390 +fn_1_1958 = .text:0x00001958; // type:function size:0x100 +fn_1_1A58 = .text:0x00001A58; // type:function size:0x10B8 +fn_1_2B10 = .text:0x00002B10; // type:function size:0xFC +fn_1_2C0C = .text:0x00002C0C; // type:function size:0x274 +fn_1_2E80 = .text:0x00002E80; // type:function size:0xA0 +fn_1_2F20 = .text:0x00002F20; // type:function size:0x2B8 +fn_1_31D8 = .text:0x000031D8; // type:function size:0x28 +fn_1_3200 = .text:0x00003200; // type:function size:0x438 +fn_1_3638 = .text:0x00003638; // type:function size:0x124 +fn_1_375C = .text:0x0000375C; // type:function size:0x3E0 +fn_1_3B3C = .text:0x00003B3C; // type:function size:0xB1C +fn_1_4658 = .text:0x00004658; // type:function size:0x14C0 +fn_1_5B18 = .text:0x00005B18; // type:function size:0x490 +fn_1_5FA8 = .text:0x00005FA8; // type:function size:0x354 +fn_1_62FC = .text:0x000062FC; // type:function size:0x64 +fn_1_6360 = .text:0x00006360; // type:function size:0x40 +fn_1_63A0 = .text:0x000063A0; // type:function size:0xA0 +fn_1_6440 = .text:0x00006440; // type:function size:0x94 +fn_1_64D4 = .text:0x000064D4; // type:function size:0xA8 +fn_1_657C = .text:0x0000657C; // type:function size:0x108 +fn_1_6684 = .text:0x00006684; // type:function size:0x20 +fn_1_66A4 = .text:0x000066A4; // type:function size:0xF0 +fn_1_6794 = .text:0x00006794; // type:function size:0x54 +fn_1_67E8 = .text:0x000067E8; // type:function size:0x168 +fn_1_6950 = .text:0x00006950; // type:function size:0x120 +fn_1_6A70 = .text:0x00006A70; // type:function size:0x30C +fn_1_6D7C = .text:0x00006D7C; // type:function size:0x78 +fn_1_6DF4 = .text:0x00006DF4; // type:function size:0x11C +fn_1_6F10 = .text:0x00006F10; // type:function size:0x78 +fn_1_6F88 = .text:0x00006F88; // type:function size:0x2D8 +fn_1_7260 = .text:0x00007260; // type:function size:0x2B8 +fn_1_7518 = .text:0x00007518; // type:function size:0x154 +fn_1_766C = .text:0x0000766C; // type:function size:0x3E0 +fn_1_7A4C = .text:0x00007A4C; // type:function size:0x214 +fn_1_7C60 = .text:0x00007C60; // type:function size:0x198 +fn_1_7DF8 = .text:0x00007DF8; // type:function size:0xD8 +fn_1_7ED0 = .text:0x00007ED0; // type:function size:0xBC +fn_1_7F8C = .text:0x00007F8C; // type:function size:0x33C +fn_1_82C8 = .text:0x000082C8; // type:function size:0x4B0 +fn_1_8778 = .text:0x00008778; // type:function size:0x138 +fn_1_88B0 = .text:0x000088B0; // type:function size:0xD08 +fn_1_95B8 = .text:0x000095B8; // type:function size:0x12C +fn_1_96E4 = .text:0x000096E4; // type:function size:0x1C +fn_1_9700 = .text:0x00009700; // type:function size:0x2C +fn_1_972C = .text:0x0000972C; // type:function size:0x1C +fn_1_9748 = .text:0x00009748; // type:function size:0x184 +fn_1_98CC = .text:0x000098CC; // type:function size:0xA0 +fn_1_996C = .text:0x0000996C; // type:function size:0xA8 +fn_1_9A14 = .text:0x00009A14; // type:function size:0x8C +fn_1_9AA0 = .text:0x00009AA0; // type:function size:0x98 +fn_1_9B38 = .text:0x00009B38; // type:function size:0x288 +fn_1_9DC0 = .text:0x00009DC0; // type:function size:0x508 +fn_1_A2C8 = .text:0x0000A2C8; // type:function size:0x530 +fn_1_A7F8 = .text:0x0000A7F8; // type:function size:0x120 +fn_1_A918 = .text:0x0000A918; // type:function size:0x2C +fn_1_A944 = .text:0x0000A944; // type:function size:0x3A8 +fn_1_ACEC = .text:0x0000ACEC; // type:function size:0x254 +fn_1_AF40 = .text:0x0000AF40; // type:function size:0x80 +fn_1_AFC0 = .text:0x0000AFC0; // type:function size:0x70 +fn_1_B030 = .text:0x0000B030; // type:function size:0x80 +fn_1_B0B0 = .text:0x0000B0B0; // type:function size:0x57C +fn_1_B62C = .text:0x0000B62C; // type:function size:0x230 +fn_1_B85C = .text:0x0000B85C; // type:function size:0x6C +fn_1_B8C8 = .text:0x0000B8C8; // type:function size:0x70 +fn_1_B938 = .text:0x0000B938; // type:function size:0x74 +fn_1_B9AC = .text:0x0000B9AC; // type:function size:0x84 +fn_1_BA30 = .text:0x0000BA30; // type:function size:0x88 +fn_1_BAB8 = .text:0x0000BAB8; // type:function size:0x8C +fn_1_BB44 = .text:0x0000BB44; // type:function size:0x6C +fn_1_BBB0 = .text:0x0000BBB0; // type:function size:0x70 +fn_1_BC20 = .text:0x0000BC20; // type:function size:0x74 +fn_1_BC94 = .text:0x0000BC94; // type:function size:0x6C +fn_1_BD00 = .text:0x0000BD00; // type:function size:0x70 +fn_1_BD70 = .text:0x0000BD70; // type:function size:0x74 +fn_1_BDE4 = .text:0x0000BDE4; // type:function size:0x44 +fn_1_BE28 = .text:0x0000BE28; // type:function size:0x70 +fn_1_BE98 = .text:0x0000BE98; // type:function size:0x70 +fn_1_BF08 = .text:0x0000BF08; // type:function size:0x44 +fn_1_BF4C = .text:0x0000BF4C; // type:function size:0x70 +fn_1_BFBC = .text:0x0000BFBC; // type:function size:0x70 +fn_1_C02C = .text:0x0000C02C; // type:function size:0x5C +fn_1_C088 = .text:0x0000C088; // type:function size:0x80 +fn_1_C108 = .text:0x0000C108; // type:function size:0x74 +fn_1_C17C = .text:0x0000C17C; // type:function size:0x78 +fn_1_C1F4 = .text:0x0000C1F4; // type:function size:0x68 +fn_1_C25C = .text:0x0000C25C; // type:function size:0x6C +fn_1_C2C8 = .text:0x0000C2C8; // type:function size:0x68 +fn_1_C330 = .text:0x0000C330; // type:function size:0x6C +fn_1_C39C = .text:0x0000C39C; // type:function size:0x6C +fn_1_C408 = .text:0x0000C408; // type:function size:0x78 +fn_1_C480 = .text:0x0000C480; // type:function size:0x98 +fn_1_C518 = .text:0x0000C518; // type:function size:0x6C +fn_1_C584 = .text:0x0000C584; // type:function size:0x78 +fn_1_C5FC = .text:0x0000C5FC; // type:function size:0x98 +fn_1_C694 = .text:0x0000C694; // type:function size:0x70 +fn_1_C704 = .text:0x0000C704; // type:function size:0x78 +fn_1_C77C = .text:0x0000C77C; // type:function size:0x98 +fn_1_C814 = .text:0x0000C814; // type:function size:0x40 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x10 data:byte +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x20 data:byte +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x20 data:byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x10 data:byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x10 data:byte +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC +lbl_1_data_40 = .data:0x00000040; // type:object size:0x24 +lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte +lbl_1_data_68 = .data:0x00000068; // type:object size:0x7 data:string +lbl_1_data_6F = .data:0x0000006F; // type:object size:0x6 data:string +lbl_1_data_75 = .data:0x00000075; // type:object size:0xB +lbl_1_data_80 = .data:0x00000080; // type:object size:0x28 +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x30 +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x8 data:string +jumptable_1_data_E0 = .data:0x000000E0; // type:object size:0x28 scope:local +lbl_1_data_108 = .data:0x00000108; // type:object size:0x8 data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x30 +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x200 +lbl_1_bss_234 = .bss:0x00000234; // type:object size:0x100 +lbl_1_bss_334 = .bss:0x00000334; // type:object size:0x4 data:4byte +lbl_1_bss_338 = .bss:0x00000338; // type:object size:0x2 data:2byte +lbl_1_bss_33A = .bss:0x0000033A; // type:object size:0x8 data:2byte +lbl_1_bss_342 = .bss:0x00000342; // type:object size:0x2 data:2byte +lbl_1_bss_344 = .bss:0x00000344; // type:object size:0x2 data:2byte +lbl_1_bss_346 = .bss:0x00000346; // type:object size:0x2 data:2byte +lbl_1_bss_348 = .bss:0x00000348; // type:object size:0x2 data:2byte +lbl_1_bss_34A = .bss:0x0000034A; // type:object size:0x2 data:2byte +lbl_1_bss_34C = .bss:0x0000034C; // type:object size:0x10 +lbl_1_bss_35C = .bss:0x0000035C; // type:object size:0x4 data:4byte +lbl_1_bss_360 = .bss:0x00000360; // type:object size:0x4 data:4byte +lbl_1_bss_364 = .bss:0x00000364; // type:object size:0x4 data:4byte +lbl_1_bss_368 = .bss:0x00000368; // type:object size:0x4 data:4byte +lbl_1_bss_36C = .bss:0x0000036C; // type:object size:0x44 data:4byte diff --git a/config/GMPP01_00/rels/m416Dll/splits.txt b/config/GMPP01_00/rels/m416Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m416Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m416Dll/symbols.txt b/config/GMPP01_00/rels/m416Dll/symbols.txt new file mode 100644 index 00000000..8a25d373 --- /dev/null +++ b/config/GMPP01_00/rels/m416Dll/symbols.txt @@ -0,0 +1,209 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3B8 +fn_1_458 = .text:0x00000458; // type:function size:0xA4 +fn_1_4FC = .text:0x000004FC; // type:function size:0xCEC +fn_1_11E8 = .text:0x000011E8; // type:function size:0x58 +fn_1_1240 = .text:0x00001240; // type:function size:0x10 +fn_1_1250 = .text:0x00001250; // type:function size:0x10 +fn_1_1260 = .text:0x00001260; // type:function size:0x220 +fn_1_1480 = .text:0x00001480; // type:function size:0x68 +fn_1_14E8 = .text:0x000014E8; // type:function size:0x84 +fn_1_156C = .text:0x0000156C; // type:function size:0x3F8 +fn_1_1964 = .text:0x00001964; // type:function size:0x178 +fn_1_1ADC = .text:0x00001ADC; // type:function size:0x1A4 +fn_1_1C80 = .text:0x00001C80; // type:function size:0x104 +fn_1_1D84 = .text:0x00001D84; // type:function size:0xBAC +fn_1_2930 = .text:0x00002930; // type:function size:0xAC +fn_1_29DC = .text:0x000029DC; // type:function size:0x4C8 +fn_1_2EA4 = .text:0x00002EA4; // type:function size:0x778 +fn_1_361C = .text:0x0000361C; // type:function size:0x280 +fn_1_389C = .text:0x0000389C; // type:function size:0x54 +fn_1_38F0 = .text:0x000038F0; // type:function size:0x10D4 +fn_1_49C4 = .text:0x000049C4; // type:function size:0x640 +fn_1_5004 = .text:0x00005004; // type:function size:0x54 +fn_1_5058 = .text:0x00005058; // type:function size:0x264 +fn_1_52BC = .text:0x000052BC; // type:function size:0x274 +fn_1_5530 = .text:0x00005530; // type:function size:0x704 +fn_1_5C34 = .text:0x00005C34; // type:function size:0xE4 +fn_1_5D18 = .text:0x00005D18; // type:function size:0x60 +fn_1_5D78 = .text:0x00005D78; // type:function size:0x3C4 +fn_1_613C = .text:0x0000613C; // type:function size:0x504 +fn_1_6640 = .text:0x00006640; // type:function size:0x4A8 +fn_1_6AE8 = .text:0x00006AE8; // type:function size:0x304 +fn_1_6DEC = .text:0x00006DEC; // type:function size:0x70 +fn_1_6E5C = .text:0x00006E5C; // type:function size:0x240 +fn_1_709C = .text:0x0000709C; // type:function size:0x250 +fn_1_72EC = .text:0x000072EC; // type:function size:0x6E4 +fn_1_79D0 = .text:0x000079D0; // type:function size:0x84 +fn_1_7A54 = .text:0x00007A54; // type:function size:0x20 +fn_1_7A74 = .text:0x00007A74; // type:function size:0x300 +fn_1_7D74 = .text:0x00007D74; // type:function size:0x1BC +fn_1_7F30 = .text:0x00007F30; // type:function size:0x484 +fn_1_83B4 = .text:0x000083B4; // type:function size:0x550 +fn_1_8904 = .text:0x00008904; // type:function size:0xB8 +fn_1_89BC = .text:0x000089BC; // type:function size:0x4E4 +fn_1_8EA0 = .text:0x00008EA0; // type:function size:0x14 +fn_1_8EB4 = .text:0x00008EB4; // type:function size:0xAC +fn_1_8F60 = .text:0x00008F60; // type:function size:0x90 +fn_1_8FF0 = .text:0x00008FF0; // type:function size:0x4 +fn_1_8FF4 = .text:0x00008FF4; // type:function size:0x34 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x1 data:byte +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float +lbl_1_data_38 = .data:0x00000038; // type:object size:0x1 data:byte +lbl_1_data_3C = .data:0x0000003C; // type:object size:0x1 data:byte +lbl_1_data_40 = .data:0x00000040; // type:object size:0x24 +lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte +jumptable_1_data_68 = .data:0x00000068; // type:object size:0x2C scope:local +lbl_1_data_94 = .data:0x00000094; // type:object size:0x1C data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x40 +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x1C +lbl_1_data_10C = .data:0x0000010C; // type:object size:0x48 +lbl_1_data_154 = .data:0x00000154; // type:object size:0x24 +lbl_1_data_178 = .data:0x00000178; // type:object size:0x8 +lbl_1_data_180 = .data:0x00000180; // type:object size:0x18 +lbl_1_data_198 = .data:0x00000198; // type:object size:0x30 +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x20 +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC data:4byte +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x24 +lbl_1_data_218 = .data:0x00000218; // type:object size:0x48 +lbl_1_data_260 = .data:0x00000260; // type:object size:0x8 data:float +lbl_1_data_268 = .data:0x00000268; // type:object size:0x1 data:byte +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x60 data:float +lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x18 +lbl_1_data_2E4 = .data:0x000002E4; // type:object size:0x8 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x10 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x900 +lbl_1_bss_914 = .bss:0x00000914; // type:object size:0x4 data:4byte +lbl_1_bss_918 = .bss:0x00000918; // type:object size:0x2 data:2byte +lbl_1_bss_91A = .bss:0x0000091A; // type:object size:0x6 data:2byte +lbl_1_bss_920 = .bss:0x00000920; // type:object size:0x4 data:float +lbl_1_bss_924 = .bss:0x00000924; // type:object size:0x2 data:2byte +lbl_1_bss_926 = .bss:0x00000926; // type:object size:0x2 data:2byte +lbl_1_bss_928 = .bss:0x00000928; // type:object size:0x2 data:2byte +lbl_1_bss_92A = .bss:0x0000092A; // type:object size:0x2 data:2byte +lbl_1_bss_92E = .bss:0x0000092E; // type:object size:0x2 data:2byte +lbl_1_bss_930 = .bss:0x00000930; // type:object size:0x20 data:4byte +lbl_1_bss_950 = .bss:0x00000950; // type:object size:0x4 data:4byte +lbl_1_bss_954 = .bss:0x00000954; // type:object size:0x4 data:4byte +lbl_1_bss_958 = .bss:0x00000958; // type:object size:0x4 data:4byte +lbl_1_bss_95C = .bss:0x0000095C; // type:object size:0x2 data:2byte +lbl_1_bss_960 = .bss:0x00000960; // type:object size:0x8 data:4byte +lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x800 data:2byte +lbl_1_bss_1168 = .bss:0x00001168; // type:object size:0x2 data:2byte +lbl_1_bss_116C = .bss:0x0000116C; // type:object size:0x8 data:float +lbl_1_bss_1174 = .bss:0x00001174; // type:object size:0x8 +lbl_1_bss_117C = .bss:0x0000117C; // type:object size:0x4 data:float +lbl_1_bss_1180 = .bss:0x00001180; // type:object size:0x4 data:4byte +lbl_1_bss_1184 = .bss:0x00001184; // type:object size:0x4 data:4byte +lbl_1_bss_1188 = .bss:0x00001188; // type:object size:0x4 data:4byte +lbl_1_bss_118C = .bss:0x0000118C; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m417Dll/splits.txt b/config/GMPP01_00/rels/m417Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m417Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m417Dll/symbols.txt b/config/GMPP01_00/rels/m417Dll/symbols.txt new file mode 100644 index 00000000..f539c02c --- /dev/null +++ b/config/GMPP01_00/rels/m417Dll/symbols.txt @@ -0,0 +1,361 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x438 +fn_1_4D8 = .text:0x000004D8; // type:function size:0xD8 +fn_1_5B0 = .text:0x000005B0; // type:function size:0x250 +fn_1_800 = .text:0x00000800; // type:function size:0x190 +fn_1_990 = .text:0x00000990; // type:function size:0x518 +fn_1_EA8 = .text:0x00000EA8; // type:function size:0x534 +fn_1_13DC = .text:0x000013DC; // type:function size:0x3E4 +fn_1_17C0 = .text:0x000017C0; // type:function size:0x4E8 +fn_1_1CA8 = .text:0x00001CA8; // type:function size:0x4B0 +fn_1_2158 = .text:0x00002158; // type:function size:0x570 +fn_1_26C8 = .text:0x000026C8; // type:function size:0x18 +fn_1_26E0 = .text:0x000026E0; // type:function size:0x18 +fn_1_26F8 = .text:0x000026F8; // type:function size:0x18 +fn_1_2710 = .text:0x00002710; // type:function size:0x18 +fn_1_2728 = .text:0x00002728; // type:function size:0x18 +fn_1_2740 = .text:0x00002740; // type:function size:0x30 +fn_1_2770 = .text:0x00002770; // type:function size:0x30 +fn_1_27A0 = .text:0x000027A0; // type:function size:0x30 +fn_1_27D0 = .text:0x000027D0; // type:function size:0x38 +fn_1_2808 = .text:0x00002808; // type:function size:0x40 +fn_1_2848 = .text:0x00002848; // type:function size:0x348 +fn_1_2B90 = .text:0x00002B90; // type:function size:0x378 +fn_1_2F08 = .text:0x00002F08; // type:function size:0x11C +fn_1_3024 = .text:0x00003024; // type:function size:0xB4 +fn_1_30D8 = .text:0x000030D8; // type:function size:0x34 +fn_1_310C = .text:0x0000310C; // type:function size:0x168 +fn_1_3274 = .text:0x00003274; // type:function size:0x140 +fn_1_33B4 = .text:0x000033B4; // type:function size:0x4C +fn_1_3400 = .text:0x00003400; // type:function size:0x134 +fn_1_3534 = .text:0x00003534; // type:function size:0x40 +fn_1_3574 = .text:0x00003574; // type:function size:0x22C +fn_1_37A0 = .text:0x000037A0; // type:function size:0x37C +fn_1_3B1C = .text:0x00003B1C; // type:function size:0xA8 +fn_1_3BC4 = .text:0x00003BC4; // type:function size:0x190 +fn_1_3D54 = .text:0x00003D54; // type:function size:0x4 +fn_1_3D58 = .text:0x00003D58; // type:function size:0xE70 +fn_1_4BC8 = .text:0x00004BC8; // type:function size:0x29C +fn_1_4E64 = .text:0x00004E64; // type:function size:0x94C +fn_1_57B0 = .text:0x000057B0; // type:function size:0x68C +fn_1_5E3C = .text:0x00005E3C; // type:function size:0x210 +fn_1_604C = .text:0x0000604C; // type:function size:0xAB8 +fn_1_6B04 = .text:0x00006B04; // type:function size:0x5C +fn_1_6B60 = .text:0x00006B60; // type:function size:0x34 +fn_1_6B94 = .text:0x00006B94; // type:function size:0x1D0 +fn_1_6D64 = .text:0x00006D64; // type:function size:0x7AC +fn_1_7510 = .text:0x00007510; // type:function size:0xAC +fn_1_75BC = .text:0x000075BC; // type:function size:0x34 +fn_1_75F0 = .text:0x000075F0; // type:function size:0x10 +fn_1_7600 = .text:0x00007600; // type:function size:0x24 +fn_1_7624 = .text:0x00007624; // type:function size:0x298 +fn_1_78BC = .text:0x000078BC; // type:function size:0xAC +fn_1_7968 = .text:0x00007968; // type:function size:0xC0 +fn_1_7A28 = .text:0x00007A28; // type:function size:0xC +fn_1_7A34 = .text:0x00007A34; // type:function size:0x234 +fn_1_7C68 = .text:0x00007C68; // type:function size:0x24 +fn_1_7C8C = .text:0x00007C8C; // type:function size:0x670 +fn_1_82FC = .text:0x000082FC; // type:function size:0x3EC +fn_1_86E8 = .text:0x000086E8; // type:function size:0x424 +fn_1_8B0C = .text:0x00008B0C; // type:function size:0x224 +fn_1_8D30 = .text:0x00008D30; // type:function size:0x114 +fn_1_8E44 = .text:0x00008E44; // type:function size:0x39C +fn_1_91E0 = .text:0x000091E0; // type:function size:0xB8 +fn_1_9298 = .text:0x00009298; // type:function size:0x784 +fn_1_9A1C = .text:0x00009A1C; // type:function size:0x1F8 +fn_1_9C14 = .text:0x00009C14; // type:function size:0x3EC +fn_1_A000 = .text:0x0000A000; // type:function size:0xD34 +fn_1_AD34 = .text:0x0000AD34; // type:function size:0xA0 +fn_1_ADD4 = .text:0x0000ADD4; // type:function size:0x4FC +fn_1_B2D0 = .text:0x0000B2D0; // type:function size:0x5E0 +fn_1_B8B0 = .text:0x0000B8B0; // type:function size:0x1A4 +fn_1_BA54 = .text:0x0000BA54; // type:function size:0x74 +fn_1_BAC8 = .text:0x0000BAC8; // type:function size:0x1E8 +fn_1_BCB0 = .text:0x0000BCB0; // type:function size:0x3C +fn_1_BCEC = .text:0x0000BCEC; // type:function size:0xF0 +fn_1_BDDC = .text:0x0000BDDC; // type:function size:0x214 +fn_1_BFF0 = .text:0x0000BFF0; // type:function size:0xA0 +fn_1_C090 = .text:0x0000C090; // type:function size:0x3E4 +fn_1_C474 = .text:0x0000C474; // type:function size:0x224 +fn_1_C698 = .text:0x0000C698; // type:function size:0x134 +fn_1_C7CC = .text:0x0000C7CC; // type:function size:0xF0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 scope:local data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 scope:local data:double +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:double +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:double +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0x10 data:float +lbl_1_data_50 = .data:0x00000050; // type:object size:0x40 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x84 +lbl_1_data_114 = .data:0x00000114; // type:object size:0xDC +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x38 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x2 data:2byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x110 data:float +lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x700 data:4byte +lbl_1_bss_878 = .bss:0x00000878; // type:object size:0x8 data:4byte +lbl_1_bss_880 = .bss:0x00000880; // type:object size:0x4 data:4byte +lbl_1_bss_884 = .bss:0x00000884; // type:object size:0x4 data:4byte +lbl_1_bss_888 = .bss:0x00000888; // type:object size:0x10 +lbl_1_bss_898 = .bss:0x00000898; // type:object size:0x10 data:4byte +lbl_1_bss_8A8 = .bss:0x000008A8; // type:object size:0x4 data:4byte +lbl_1_bss_8AC = .bss:0x000008AC; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m418Dll/splits.txt b/config/GMPP01_00/rels/m418Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m418Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m418Dll/symbols.txt b/config/GMPP01_00/rels/m418Dll/symbols.txt new file mode 100644 index 00000000..e44b8b6a --- /dev/null +++ b/config/GMPP01_00/rels/m418Dll/symbols.txt @@ -0,0 +1,304 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x74 +fn_1_74 = .text:0x00000074; // type:function size:0xE4 +fn_1_158 = .text:0x00000158; // type:function size:0x28 +fn_1_180 = .text:0x00000180; // type:function size:0xC8 +fn_1_248 = .text:0x00000248; // type:function size:0x20 +fn_1_268 = .text:0x00000268; // type:function size:0x298 +fn_1_500 = .text:0x00000500; // type:function size:0x118 +fn_1_618 = .text:0x00000618; // type:function size:0xC4 +fn_1_6DC = .text:0x000006DC; // type:function size:0x38 +fn_1_714 = .text:0x00000714; // type:function size:0x34 +fn_1_748 = .text:0x00000748; // type:function size:0x38 +fn_1_780 = .text:0x00000780; // type:function size:0x1C8 +fn_1_948 = .text:0x00000948; // type:function size:0x48 +fn_1_990 = .text:0x00000990; // type:function size:0x110 +fn_1_AA0 = .text:0x00000AA0; // type:function size:0xA4 +fn_1_B44 = .text:0x00000B44; // type:function size:0x328 +fn_1_E6C = .text:0x00000E6C; // type:function size:0x67C +fn_1_14E8 = .text:0x000014E8; // type:function size:0x3BC +fn_1_18A4 = .text:0x000018A4; // type:function size:0x50 +fn_1_18F4 = .text:0x000018F4; // type:function size:0x7B4 +fn_1_20A8 = .text:0x000020A8; // type:function size:0xC8 +fn_1_2170 = .text:0x00002170; // type:function size:0x71C +fn_1_288C = .text:0x0000288C; // type:function size:0x10C +fn_1_2998 = .text:0x00002998; // type:function size:0x224 +fn_1_2BBC = .text:0x00002BBC; // type:function size:0x48 +fn_1_2C04 = .text:0x00002C04; // type:function size:0x448 +fn_1_304C = .text:0x0000304C; // type:function size:0xE4 +fn_1_3130 = .text:0x00003130; // type:function size:0x108 +fn_1_3238 = .text:0x00003238; // type:function size:0x1C8 +fn_1_3400 = .text:0x00003400; // type:function size:0x3C +fn_1_343C = .text:0x0000343C; // type:function size:0xA6C +fn_1_3EA8 = .text:0x00003EA8; // type:function size:0x814 +fn_1_46BC = .text:0x000046BC; // type:function size:0x5C0 +fn_1_4C7C = .text:0x00004C7C; // type:function size:0x2DC +fn_1_4F58 = .text:0x00004F58; // type:function size:0x3F8 +fn_1_5350 = .text:0x00005350; // type:function size:0xE4 +fn_1_5434 = .text:0x00005434; // type:function size:0x150 +fn_1_5584 = .text:0x00005584; // type:function size:0x120 +fn_1_56A4 = .text:0x000056A4; // type:function size:0xBC +fn_1_5760 = .text:0x00005760; // type:function size:0x7C +fn_1_57DC = .text:0x000057DC; // type:function size:0x18C +fn_1_5968 = .text:0x00005968; // type:function size:0xFC +fn_1_5A64 = .text:0x00005A64; // type:function size:0x2BC +fn_1_5D20 = .text:0x00005D20; // type:function size:0x30 +fn_1_5D50 = .text:0x00005D50; // type:function size:0x98 +fn_1_5DE8 = .text:0x00005DE8; // type:function size:0x248 +fn_1_6030 = .text:0x00006030; // type:function size:0x2DC +fn_1_630C = .text:0x0000630C; // type:function size:0xE4 +fn_1_63F0 = .text:0x000063F0; // type:function size:0x118 +fn_1_6508 = .text:0x00006508; // type:function size:0x108 +fn_1_6610 = .text:0x00006610; // type:function size:0x128 +fn_1_6738 = .text:0x00006738; // type:function size:0xC8 +fn_1_6800 = .text:0x00006800; // type:function size:0x10C +fn_1_690C = .text:0x0000690C; // type:function size:0x4B8 +fn_1_6DC4 = .text:0x00006DC4; // type:function size:0xA0 +fn_1_6E64 = .text:0x00006E64; // type:function size:0x48 +fn_1_6EAC = .text:0x00006EAC; // type:function size:0x84 +fn_1_6F30 = .text:0x00006F30; // type:function size:0x35C +fn_1_728C = .text:0x0000728C; // type:function size:0x4 +fn_1_7290 = .text:0x00007290; // type:function size:0x2D8 +fn_1_7568 = .text:0x00007568; // type:function size:0x74 +fn_1_75DC = .text:0x000075DC; // type:function size:0x214 +fn_1_77F0 = .text:0x000077F0; // type:function size:0x68 +fn_1_7858 = .text:0x00007858; // type:function size:0x208 +fn_1_7A60 = .text:0x00007A60; // type:function size:0x100 +fn_1_7B60 = .text:0x00007B60; // type:function size:0x218 +fn_1_7D78 = .text:0x00007D78; // type:function size:0xA4 +fn_1_7E1C = .text:0x00007E1C; // type:function size:0xF8 +fn_1_7F14 = .text:0x00007F14; // type:function size:0xB8 +fn_1_7FCC = .text:0x00007FCC; // type:function size:0x1CC +fn_1_8198 = .text:0x00008198; // type:function size:0x4 +fn_1_819C = .text:0x0000819C; // type:function size:0x2DC +fn_1_8478 = .text:0x00008478; // type:function size:0x30 +fn_1_84A8 = .text:0x000084A8; // type:function size:0x98 +fn_1_8540 = .text:0x00008540; // type:function size:0x120 +fn_1_8660 = .text:0x00008660; // type:function size:0xC0 +fn_1_8720 = .text:0x00008720; // type:function size:0xA8 +fn_1_87C8 = .text:0x000087C8; // type:function size:0xBC +fn_1_8884 = .text:0x00008884; // type:function size:0x28 +fn_1_88AC = .text:0x000088AC; // type:function size:0xFC +fn_1_89A8 = .text:0x000089A8; // type:function size:0x164 +fn_1_8B0C = .text:0x00008B0C; // type:function size:0x170 +fn_1_8C7C = .text:0x00008C7C; // type:function size:0xEC +fn_1_8D68 = .text:0x00008D68; // type:function size:0x204 +fn_1_8F6C = .text:0x00008F6C; // type:function size:0x120 +fn_1_908C = .text:0x0000908C; // type:function size:0x48 +fn_1_90D4 = .text:0x000090D4; // type:function size:0x64 +fn_1_9138 = .text:0x00009138; // type:function size:0xA4 +fn_1_91DC = .text:0x000091DC; // type:function size:0x108 +fn_1_92E4 = .text:0x000092E4; // type:function size:0x48 +fn_1_932C = .text:0x0000932C; // type:function size:0x30 +fn_1_935C = .text:0x0000935C; // type:function size:0x98 +fn_1_93F4 = .text:0x000093F4; // type:function size:0x130 +fn_1_9524 = .text:0x00009524; // type:function size:0x60 +fn_1_9584 = .text:0x00009584; // type:function size:0x618 +fn_1_9B9C = .text:0x00009B9C; // type:function size:0x3F0 +fn_1_9F8C = .text:0x00009F8C; // type:function size:0x1BC +_prolog = .text:0x0000A148; // type:function size:0x54 scope:global +_epilog = .text:0x0000A19C; // type:function size:0x4C scope:global +fn_1_A1E8 = .text:0x0000A1E8; // type:function size:0x398 +fn_1_A580 = .text:0x0000A580; // type:function size:0x398 +fn_1_A918 = .text:0x0000A918; // type:function size:0x20 +fn_1_A938 = .text:0x0000A938; // type:function size:0x28 +fn_1_A960 = .text:0x0000A960; // type:function size:0xC8 +fn_1_AA28 = .text:0x0000AA28; // type:function size:0xBC +fn_1_AAE4 = .text:0x0000AAE4; // type:function size:0xD8 +fn_1_ABBC = .text:0x0000ABBC; // type:function size:0x150 +fn_1_AD0C = .text:0x0000AD0C; // type:function size:0x178 +fn_1_AE84 = .text:0x0000AE84; // type:function size:0x50 +fn_1_AED4 = .text:0x0000AED4; // type:function size:0x5C +fn_1_AF30 = .text:0x0000AF30; // type:function size:0x88 +fn_1_AFB8 = .text:0x0000AFB8; // type:function size:0x74 +fn_1_B02C = .text:0x0000B02C; // type:function size:0x94 +fn_1_B0C0 = .text:0x0000B0C0; // type:function size:0x3C +fn_1_B0FC = .text:0x0000B0FC; // type:function size:0x318 +fn_1_B414 = .text:0x0000B414; // type:function size:0x3C +fn_1_B450 = .text:0x0000B450; // type:function size:0x4C +fn_1_B49C = .text:0x0000B49C; // type:function size:0x26C +fn_1_B708 = .text:0x0000B708; // type:function size:0x26C +fn_1_B974 = .text:0x0000B974; // type:function size:0x27C +fn_1_BBF0 = .text:0x0000BBF0; // type:function size:0x2B4 +fn_1_BEA4 = .text:0x0000BEA4; // type:function size:0x46C +fn_1_C310 = .text:0x0000C310; // type:function size:0x454 +fn_1_C764 = .text:0x0000C764; // type:function size:0x48C +fn_1_CBF0 = .text:0x0000CBF0; // type:function size:0x658 +fn_1_D248 = .text:0x0000D248; // type:function size:0x4C4 +fn_1_D70C = .text:0x0000D70C; // type:function size:0x4FC +fn_1_DC08 = .text:0x0000DC08; // type:function size:0x6C8 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0xC data:4byte +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0xC data:4byte +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0xC data:4byte +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC data:4byte +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0xC data:4byte +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0xC data:4byte +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x10 data:4byte +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:4byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC data:4byte +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0xC data:4byte +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0xC data:4byte +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0xC data:4byte +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0xC data:4byte +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0xC data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0xC data:4byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0xC data:4byte +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0xC data:4byte +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0xC data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0xC data:4byte +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0xC data:4byte +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0xC data:4byte +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 data:4byte +lbl_1_data_8 = .data:0x00000008; // type:object size:0x4 data:4byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x12 scope:local data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x13 scope:local data:string +lbl_1_data_31 = .data:0x00000031; // type:object size:0x10 scope:local data:string +lbl_1_data_41 = .data:0x00000041; // type:object size:0x10 scope:local data:string +lbl_1_data_51 = .data:0x00000051; // type:object size:0x10 scope:local data:string +lbl_1_data_61 = .data:0x00000061; // type:object size:0x10 scope:local data:string +lbl_1_data_71 = .data:0x00000071; // type:object size:0xD scope:local data:string +lbl_1_data_7E = .data:0x0000007E; // type:object size:0xE scope:local data:string +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x6C scope:local data:4byte +jumptable_1_data_F8 = .data:0x000000F8; // type:object size:0x88 scope:local +lbl_1_data_180 = .data:0x00000180; // type:object size:0x12 scope:local data:string +lbl_1_data_192 = .data:0x00000192; // type:object size:0x15 scope:local data:string +lbl_1_data_1A7 = .data:0x000001A7; // type:object size:0x19 scope:local data:string +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x20 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x60 +lbl_1_data_240 = .data:0x00000240; // type:object size:0x24 +lbl_1_data_264 = .data:0x00000264; // type:object size:0x30 +lbl_1_data_294 = .data:0x00000294; // type:object size:0x24 +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x60 +lbl_1_data_318 = .data:0x00000318; // type:object size:0x30 +lbl_1_data_348 = .data:0x00000348; // type:object size:0x84 +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x30 +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x48 +lbl_1_data_444 = .data:0x00000444; // type:object size:0x60 +jumptable_1_data_4A4 = .data:0x000004A4; // type:object size:0x28 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x18 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x18 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x18 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0xB4 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x54 data:4byte +lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x70 +lbl_1_bss_1E0 = .bss:0x000001E0; // type:object size:0x14 data:4byte +lbl_1_bss_1F4 = .bss:0x000001F4; // type:object size:0x4C data:4byte +lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x2C data:4byte +lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x180 +lbl_1_bss_3EC = .bss:0x000003EC; // type:object size:0x44 data:4byte diff --git a/config/GMPP01_00/rels/m419Dll/splits.txt b/config/GMPP01_00/rels/m419Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m419Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m419Dll/symbols.txt b/config/GMPP01_00/rels/m419Dll/symbols.txt new file mode 100644 index 00000000..cf313005 --- /dev/null +++ b/config/GMPP01_00/rels/m419Dll/symbols.txt @@ -0,0 +1,184 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x400 +fn_1_4A0 = .text:0x000004A0; // type:function size:0xDC +fn_1_57C = .text:0x0000057C; // type:function size:0x2CC +fn_1_848 = .text:0x00000848; // type:function size:0x288 +fn_1_AD0 = .text:0x00000AD0; // type:function size:0x488 +fn_1_F58 = .text:0x00000F58; // type:function size:0x102C +fn_1_1F84 = .text:0x00001F84; // type:function size:0x128 +fn_1_20AC = .text:0x000020AC; // type:function size:0x128 +fn_1_21D4 = .text:0x000021D4; // type:function size:0x80 +fn_1_2254 = .text:0x00002254; // type:function size:0x4F0 +fn_1_2744 = .text:0x00002744; // type:function size:0x498 +fn_1_2BDC = .text:0x00002BDC; // type:function size:0x220 +fn_1_2DFC = .text:0x00002DFC; // type:function size:0x4FC +fn_1_32F8 = .text:0x000032F8; // type:function size:0x154 +fn_1_344C = .text:0x0000344C; // type:function size:0x1398 +fn_1_47E4 = .text:0x000047E4; // type:function size:0x33C +fn_1_4B20 = .text:0x00004B20; // type:function size:0x334 +fn_1_4E54 = .text:0x00004E54; // type:function size:0xB8 +fn_1_4F0C = .text:0x00004F0C; // type:function size:0xC0 +fn_1_4FCC = .text:0x00004FCC; // type:function size:0x6C +fn_1_5038 = .text:0x00005038; // type:function size:0x6C +fn_1_50A4 = .text:0x000050A4; // type:function size:0x244 +fn_1_52E8 = .text:0x000052E8; // type:function size:0x570 +fn_1_5858 = .text:0x00005858; // type:function size:0x104 +fn_1_595C = .text:0x0000595C; // type:function size:0x17C +fn_1_5AD8 = .text:0x00005AD8; // type:function size:0x45C +fn_1_5F34 = .text:0x00005F34; // type:function size:0x358 +fn_1_628C = .text:0x0000628C; // type:function size:0x334 +fn_1_65C0 = .text:0x000065C0; // type:function size:0x1E0 +fn_1_67A0 = .text:0x000067A0; // type:function size:0x564 +fn_1_6D04 = .text:0x00006D04; // type:function size:0x198 +fn_1_6E9C = .text:0x00006E9C; // type:function size:0xA18 +fn_1_78B4 = .text:0x000078B4; // type:function size:0x223C +fn_1_9AF0 = .text:0x00009AF0; // type:function size:0x130C +fn_1_ADFC = .text:0x0000ADFC; // type:function size:0x258 +fn_1_B054 = .text:0x0000B054; // type:function size:0x2E78 +fn_1_DECC = .text:0x0000DECC; // type:function size:0x70 +fn_1_DF3C = .text:0x0000DF3C; // type:function size:0x5C +fn_1_DF98 = .text:0x0000DF98; // type:function size:0x17A4 +fn_1_F73C = .text:0x0000F73C; // type:function size:0x280 +fn_1_F9BC = .text:0x0000F9BC; // type:function size:0x89C +fn_1_10258 = .text:0x00010258; // type:function size:0x248 +fn_1_104A0 = .text:0x000104A0; // type:function size:0x60 +fn_1_10500 = .text:0x00010500; // type:function size:0x3D8 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x2C +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x10 +lbl_1_data_5C = .data:0x0000005C; // type:object size:0x60 +lbl_1_data_BC = .data:0x000000BC; // type:object size:0xB data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x60 +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x1 data:byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x20 +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x20 +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0xC data:float +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0xC data:float +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0xC data:float +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0xB8 data:4byte +lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x10 +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x58 data:2byte +lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x18 data:2byte +lbl_1_bss_200 = .bss:0x00000200; // type:object size:0x380 +lbl_1_bss_580 = .bss:0x00000580; // type:object size:0x4 data:4byte +lbl_1_bss_584 = .bss:0x00000584; // type:object size:0x10 data:4byte +lbl_1_bss_594 = .bss:0x00000594; // type:object size:0x10 +lbl_1_bss_5A4 = .bss:0x000005A4; // type:object size:0x4 data:4byte +lbl_1_bss_5A8 = .bss:0x000005A8; // type:object size:0x4 data:4byte +lbl_1_bss_5AC = .bss:0x000005AC; // type:object size:0x4 data:4byte +lbl_1_bss_5B0 = .bss:0x000005B0; // type:object size:0x4 data:4byte +lbl_1_bss_5B4 = .bss:0x000005B4; // type:object size:0x4 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x2 data:2byte +lbl_1_bss_5BA = .bss:0x000005BA; // type:object size:0x2 data:2byte +lbl_1_bss_5BC = .bss:0x000005BC; // type:object size:0x2 data:2byte +lbl_1_bss_5BE = .bss:0x000005BE; // type:object size:0x2 data:2byte +lbl_1_bss_5C2 = .bss:0x000005C2; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m420dll/splits.txt b/config/GMPP01_00/rels/m420dll/splits.txt new file mode 100644 index 00000000..08f811fa --- /dev/null +++ b/config/GMPP01_00/rels/m420dll/splits.txt @@ -0,0 +1,36 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m420dll/main.c: + .text start:0x000000A0 end:0x00000D80 + .rodata start:0x00000000 end:0x00000098 + .bss start:0x00000000 end:0x00000030 + +REL/m420dll/camera.c: + .text start:0x00000D80 end:0x00001B74 + .rodata start:0x00000098 end:0x000000F8 + .data start:0x00000000 end:0x00000050 + .bss start:0x00000030 end:0x000000B0 + +REL/m420dll/player.c: + .text start:0x00001B74 end:0x0000494C + .rodata start:0x000000F8 end:0x00000360 + .data start:0x00000050 end:0x00000138 + +REL/m420dll/map.c: + .text start:0x0000494C end:0x0000891C + .rodata start:0x00000360 end:0x00000570 + .data start:0x00000138 end:0x00000171 + .bss start:0x000000B0 end:0x00000A48 + +REL/m420dll/rand.c: + .text start:0x0000891C end:0x00008960 + .bss start:0x00000A48 end:0x00000A4C diff --git a/config/GMPP01_00/rels/m420dll/symbols.txt b/config/GMPP01_00/rels/m420dll/symbols.txt new file mode 100644 index 00000000..95aa9732 --- /dev/null +++ b/config/GMPP01_00/rels/m420dll/symbols.txt @@ -0,0 +1,252 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x78 +fn_1_118 = .text:0x00000118; // type:function size:0x80 +fn_1_198 = .text:0x00000198; // type:function size:0x23C +fn_1_3D4 = .text:0x000003D4; // type:function size:0x68 +fn_1_43C = .text:0x0000043C; // type:function size:0x8C0 +fn_1_D14 = .text:0x00000CFC; // type:function size:0x84 +fn_1_D98 = .text:0x00000D80; // type:function size:0x1B0 +fn_1_F48 = .text:0x00000F30; // type:function size:0x2C +fn_1_F74 = .text:0x00000F5C; // type:function size:0xBC +fn_1_1030 = .text:0x00001018; // type:function size:0xBC +fn_1_10EC = .text:0x000010D4; // type:function size:0x98 +fn_1_1184 = .text:0x0000116C; // type:function size:0x718 +fn_1_189C = .text:0x00001884; // type:function size:0x214 +fn_1_1AB0 = .text:0x00001A98; // type:function size:0xDC +fn_1_1B8C = .text:0x00001B74; // type:function size:0x288 +fn_1_1E14 = .text:0x00001DFC; // type:function size:0x50 +fn_1_1E64 = .text:0x00001E4C; // type:function size:0xB0 +fn_1_1F14 = .text:0x00001EFC; // type:function size:0x40 +fn_1_1F54 = .text:0x00001F3C; // type:function size:0x40 +fn_1_1F94 = .text:0x00001F7C; // type:function size:0x78 +fn_1_200C = .text:0x00001FF4; // type:function size:0xE0 +fn_1_20EC = .text:0x000020D4; // type:function size:0x30 +fn_1_211C = .text:0x00002104; // type:function size:0x58 +fn_1_2174 = .text:0x0000215C; // type:function size:0x54 +fn_1_21C8 = .text:0x000021B0; // type:function size:0x98 +fn_1_2260 = .text:0x00002248; // type:function size:0x6C +fn_1_22CC = .text:0x000022B4; // type:function size:0x4A0 +fn_1_276C = .text:0x00002754; // type:function size:0x574 +fn_1_2CE0 = .text:0x00002CC8; // type:function size:0x9C +fn_1_2D7C = .text:0x00002D64; // type:function size:0x12C +fn_1_2EA8 = .text:0x00002E90; // type:function size:0x1F0 +fn_1_3098 = .text:0x00003080; // type:function size:0x1D4 +fn_1_326C = .text:0x00003254; // type:function size:0x1E4 +fn_1_3450 = .text:0x00003438; // type:function size:0x5C +fn_1_34AC = .text:0x00003494; // type:function size:0xB0 +fn_1_355C = .text:0x00003544; // type:function size:0x188 +fn_1_36E4 = .text:0x000036CC; // type:function size:0x68 +fn_1_374C = .text:0x00003734; // type:function size:0x40 +fn_1_378C = .text:0x00003774; // type:function size:0xC8 +fn_1_3854 = .text:0x0000383C; // type:function size:0x11C +fn_1_3970 = .text:0x00003958; // type:function size:0x624 +fn_1_3F94 = .text:0x00003F7C; // type:function size:0x300 +fn_1_4294 = .text:0x0000427C; // type:function size:0x2E0 +fn_1_4574 = .text:0x0000455C; // type:function size:0x1F8 +fn_1_476C = .text:0x00004754; // type:function size:0x1F8 +fn_1_4964 = .text:0x0000494C; // type:function size:0x1008 +fn_1_596C = .text:0x00005954; // type:function size:0x88 +fn_1_59F4 = .text:0x000059DC; // type:function size:0x88 +fn_1_5A7C = .text:0x00005A64; // type:function size:0x2C +fn_1_5AA8 = .text:0x00005A90; // type:function size:0x1E4 +fn_1_5C8C = .text:0x00005C74; // type:function size:0x464 +fn_1_60F0 = .text:0x000060D8; // type:function size:0x178 +fn_1_6268 = .text:0x00006250; // type:function size:0x104 +fn_1_636C = .text:0x00006354; // type:function size:0x80 +fn_1_63EC = .text:0x000063D4; // type:function size:0x120 +fn_1_650C = .text:0x000064F4; // type:function size:0x48 +fn_1_6554 = .text:0x0000653C; // type:function size:0x10C +fn_1_6660 = .text:0x00006648; // type:function size:0x10 +fn_1_6670 = .text:0x00006658; // type:function size:0x2C +fn_1_669C = .text:0x00006684; // type:function size:0x8C +fn_1_6728 = .text:0x00006710; // type:function size:0x7C +fn_1_67A4 = .text:0x0000678C; // type:function size:0x44 +fn_1_67E8 = .text:0x000067D0; // type:function size:0x28 +fn_1_6810 = .text:0x000067F8; // type:function size:0x10 +fn_1_6820 = .text:0x00006808; // type:function size:0x64 +fn_1_6884 = .text:0x0000686C; // type:function size:0xCC +fn_1_6950 = .text:0x00006938; // type:function size:0x3BC +fn_1_6D0C = .text:0x00006CF4; // type:function size:0x50 +fn_1_6D5C = .text:0x00006D44; // type:function size:0x94 +fn_1_6DF0 = .text:0x00006DD8; // type:function size:0x440 +fn_1_7230 = .text:0x00007218; // type:function size:0x98 +fn_1_72C8 = .text:0x000072B0; // type:function size:0x98 +fn_1_7360 = .text:0x00007348; // type:function size:0x98 +fn_1_73F8 = .text:0x000073E0; // type:function size:0x100 +fn_1_74F8 = .text:0x000074E0; // type:function size:0x20C +fn_1_7704 = .text:0x000076EC; // type:function size:0x720 +fn_1_7E24 = .text:0x00007E0C; // type:function size:0x41C +fn_1_8240 = .text:0x00008228; // type:function size:0x1D4 +fn_1_8414 = .text:0x000083FC; // type:function size:0x520 +fn_1_8934 = .text:0x0000891C; // type:function size:0x10 +fn_1_8944 = .text:0x0000892C; // type:function size:0x34 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x54 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x160 scope:local +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x60 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x10 scope:local +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x1C scope:local +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x6C scope:local +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0xC scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0xC scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x30 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x30 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E scope:local data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x1E scope:local data:string +lbl_1_data_3C = .data:0x0000003C; // type:object size:0x10 scope:local data:string +lbl_1_data_50 = .data:0x00000050; // type:object size:0x80 +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x1B scope:local data:string +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x30 +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0x1 +lbl_1_data_138 = .data:0x00000138; // type:object size:0x1C +lbl_1_data_154 = .data:0x00000154; // type:object size:0x10 data:4byte +lbl_1_data_164 = .data:0x00000164; // type:object size:0xD scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x10 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:float +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x1C data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x1C data:float +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x1C data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x80 data:float +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x8AC data:4byte +lbl_1_bss_9EC = .bss:0x000009EC; // type:object size:0x2 data:2byte +lbl_1_bss_9F0 = .bss:0x000009F0; // type:object size:0x38 data:2byte +lbl_1_bss_A28 = .bss:0x00000A28; // type:object size:0x4 data:4byte +lbl_1_bss_A2C = .bss:0x00000A2C; // type:object size:0x10 data:4byte +lbl_1_bss_A3C = .bss:0x00000A3C; // type:object size:0x4 data:4byte +lbl_1_bss_A40 = .bss:0x00000A40; // type:object size:0x4 data:4byte +lbl_1_bss_A48 = .bss:0x00000A48; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m421Dll/splits.txt b/config/GMPP01_00/rels/m421Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m421Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m421Dll/symbols.txt b/config/GMPP01_00/rels/m421Dll/symbols.txt new file mode 100644 index 00000000..30da45c8 --- /dev/null +++ b/config/GMPP01_00/rels/m421Dll/symbols.txt @@ -0,0 +1,269 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x400 +fn_1_4A0 = .text:0x000004A0; // type:function size:0xD8 +fn_1_578 = .text:0x00000578; // type:function size:0x20C +fn_1_784 = .text:0x00000784; // type:function size:0x134 +fn_1_8B8 = .text:0x000008B8; // type:function size:0x404 +fn_1_CBC = .text:0x00000CBC; // type:function size:0x430 +fn_1_10EC = .text:0x000010EC; // type:function size:0x340 +fn_1_142C = .text:0x0000142C; // type:function size:0x424 +fn_1_1850 = .text:0x00001850; // type:function size:0x440 +fn_1_1C90 = .text:0x00001C90; // type:function size:0x4AC +fn_1_213C = .text:0x0000213C; // type:function size:0x70 +fn_1_21AC = .text:0x000021AC; // type:function size:0x87C +fn_1_2A28 = .text:0x00002A28; // type:function size:0x190 +fn_1_2BB8 = .text:0x00002BB8; // type:function size:0x468 +fn_1_3020 = .text:0x00003020; // type:function size:0xB0 +fn_1_30D0 = .text:0x000030D0; // type:function size:0x264 +fn_1_3334 = .text:0x00003334; // type:function size:0x28 +fn_1_335C = .text:0x0000335C; // type:function size:0x5A0 +fn_1_38FC = .text:0x000038FC; // type:function size:0x254 +fn_1_3B50 = .text:0x00003B50; // type:function size:0x14 +fn_1_3B64 = .text:0x00003B64; // type:function size:0x14 +fn_1_3B78 = .text:0x00003B78; // type:function size:0x9C +fn_1_3C14 = .text:0x00003C14; // type:function size:0x9C +fn_1_3CB0 = .text:0x00003CB0; // type:function size:0x68 +fn_1_3D18 = .text:0x00003D18; // type:function size:0x6C +fn_1_3D84 = .text:0x00003D84; // type:function size:0x98 +fn_1_3E1C = .text:0x00003E1C; // type:function size:0x18 +fn_1_3E34 = .text:0x00003E34; // type:function size:0x18 +fn_1_3E4C = .text:0x00003E4C; // type:function size:0x18 +fn_1_3E64 = .text:0x00003E64; // type:function size:0x18 +fn_1_3E7C = .text:0x00003E7C; // type:function size:0x7C +fn_1_3EF8 = .text:0x00003EF8; // type:function size:0x30 +fn_1_3F28 = .text:0x00003F28; // type:function size:0x40 +fn_1_3F68 = .text:0x00003F68; // type:function size:0x30 +fn_1_3F98 = .text:0x00003F98; // type:function size:0x30 +fn_1_3FC8 = .text:0x00003FC8; // type:function size:0x30 +fn_1_3FF8 = .text:0x00003FF8; // type:function size:0x38 +fn_1_4030 = .text:0x00004030; // type:function size:0x208 +fn_1_4238 = .text:0x00004238; // type:function size:0x240 +fn_1_4478 = .text:0x00004478; // type:function size:0x11C +fn_1_4594 = .text:0x00004594; // type:function size:0xB4 +fn_1_4648 = .text:0x00004648; // type:function size:0x268 +fn_1_48B0 = .text:0x000048B0; // type:function size:0x24 +fn_1_48D4 = .text:0x000048D4; // type:function size:0x62C +fn_1_4F00 = .text:0x00004F00; // type:function size:0x160 +fn_1_5060 = .text:0x00005060; // type:function size:0x368 +fn_1_53C8 = .text:0x000053C8; // type:function size:0x3C4 +fn_1_578C = .text:0x0000578C; // type:function size:0x410 +fn_1_5B9C = .text:0x00005B9C; // type:function size:0x5E8 +fn_1_6184 = .text:0x00006184; // type:function size:0x27C +fn_1_6400 = .text:0x00006400; // type:function size:0x2B4 +fn_1_66B4 = .text:0x000066B4; // type:function size:0xB8 +fn_1_676C = .text:0x0000676C; // type:function size:0x5DC +fn_1_6D48 = .text:0x00006D48; // type:function size:0x730 +fn_1_7478 = .text:0x00007478; // type:function size:0x1F8 +fn_1_7670 = .text:0x00007670; // type:function size:0x430 +fn_1_7AA0 = .text:0x00007AA0; // type:function size:0x418 +fn_1_7EB8 = .text:0x00007EB8; // type:function size:0x208 +fn_1_80C0 = .text:0x000080C0; // type:function size:0x87C +fn_1_893C = .text:0x0000893C; // type:function size:0xB38 +fn_1_9474 = .text:0x00009474; // type:function size:0xF8 +fn_1_956C = .text:0x0000956C; // type:function size:0x2C0 +fn_1_982C = .text:0x0000982C; // type:function size:0x18C +fn_1_99B8 = .text:0x000099B8; // type:function size:0x74 +fn_1_9A2C = .text:0x00009A2C; // type:function size:0x1D0 +fn_1_9BFC = .text:0x00009BFC; // type:function size:0x3C +fn_1_9C38 = .text:0x00009C38; // type:function size:0x198 +fn_1_9DD0 = .text:0x00009DD0; // type:function size:0x758 +fn_1_A528 = .text:0x0000A528; // type:function size:0x640 +fn_1_AB68 = .text:0x0000AB68; // type:function size:0x4 +fn_1_AB6C = .text:0x0000AB6C; // type:function size:0x70 +fn_1_ABDC = .text:0x0000ABDC; // type:function size:0x580 +fn_1_B15C = .text:0x0000B15C; // type:function size:0x60 +fn_1_B1BC = .text:0x0000B1BC; // type:function size:0x4 +fn_1_B1C0 = .text:0x0000B1C0; // type:function size:0x1D8 +fn_1_B398 = .text:0x0000B398; // type:function size:0x4 +fn_1_B39C = .text:0x0000B39C; // type:function size:0x40 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC data:4byte +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x50 +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x14 data:4byte +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x10 data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x10 data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x10 data:4byte +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x30 data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x30 data:4byte +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xC data:4byte +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x24 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 +lbl_1_data_94 = .data:0x00000094; // type:object size:0xC +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x1 data:byte +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x1A data:string +lbl_1_data_BE = .data:0x000000BE; // type:object size:0x1A +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x2C +lbl_1_data_104 = .data:0x00000104; // type:object size:0x60 +lbl_1_data_164 = .data:0x00000164; // type:object size:0x20 +lbl_1_data_184 = .data:0x00000184; // type:object size:0x20 +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x18 +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x78 +lbl_1_data_234 = .data:0x00000234; // type:object size:0x30 +lbl_1_data_264 = .data:0x00000264; // type:object size:0x30 +lbl_1_data_294 = .data:0x00000294; // type:object size:0x18 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0xC +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0xC +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0xC +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0xC +lbl_1_data_2DC = .data:0x000002DC; // type:object size:0xC +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0xC +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x6 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m422Dll/splits.txt b/config/GMPP01_00/rels/m422Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m422Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m422Dll/symbols.txt b/config/GMPP01_00/rels/m422Dll/symbols.txt new file mode 100644 index 00000000..118c4a8d --- /dev/null +++ b/config/GMPP01_00/rels/m422Dll/symbols.txt @@ -0,0 +1,249 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x25C +fn_1_2FC = .text:0x000002FC; // type:function size:0x31C0 +fn_1_34BC = .text:0x000034BC; // type:function size:0x6B8 +fn_1_3B74 = .text:0x00003B74; // type:function size:0x4E60 +fn_1_89D4 = .text:0x000089D4; // type:function size:0xA28 +fn_1_93FC = .text:0x000093FC; // type:function size:0x4F0 +fn_1_98EC = .text:0x000098EC; // type:function size:0x134C +fn_1_AC38 = .text:0x0000AC38; // type:function size:0x3B8 +fn_1_AFF0 = .text:0x0000AFF0; // type:function size:0x54 +fn_1_B044 = .text:0x0000B044; // type:function size:0x428 +fn_1_B46C = .text:0x0000B46C; // type:function size:0xAC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x30 +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x30 +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x30 +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x30 +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x30 +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x30 +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x1C data:4byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x1C data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0xC data:4byte +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC data:4byte +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0xC data:4byte +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0xC data:4byte +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x20 data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x60 +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:4byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x60 +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x30 data:4byte +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x34 data:4byte +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 data:double +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x8 data:double +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 data:double +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 data:double +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 data:double +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float +lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x2C data:4byte +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 data:double +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 data:double +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x28 data:4byte +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x20 data:4byte +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:4byte +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:4byte +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:4byte +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x40 data:4byte +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x40 data:4byte +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x4 data:float +lbl_1_rodata_74C = .rodata:0x0000074C; // type:object size:0x4 data:float +lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 data:float +lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 data:float +lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 data:float +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x8 data:double +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 data:float +lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x10 data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0xC data:4byte +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0xC data:4byte +lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x1 data:byte +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 data:float +lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 data:float +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 data:float +lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 data:float +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x40 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x20 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x20 +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x7 +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x9 +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x1680 data:float +lbl_1_data_1770 = .data:0x00001770; // type:object size:0xF data:string +lbl_1_data_177F = .data:0x0000177F; // type:object size:0x10 data:string +lbl_1_data_178F = .data:0x0000178F; // type:object size:0x10 data:string +lbl_1_data_179F = .data:0x0000179F; // type:object size:0xF data:string +lbl_1_data_17AE = .data:0x000017AE; // type:object size:0x10 data:string +lbl_1_data_17BE = .data:0x000017BE; // type:object size:0x10 data:string +lbl_1_data_17CE = .data:0x000017CE; // type:object size:0xF data:string +lbl_1_data_17DD = .data:0x000017DD; // type:object size:0x11 data:string +lbl_1_data_17EE = .data:0x000017EE; // type:object size:0x11 data:string +lbl_1_data_17FF = .data:0x000017FF; // type:object size:0x12 data:string +lbl_1_data_1811 = .data:0x00001811; // type:object size:0x5 data:string +lbl_1_data_1816 = .data:0x00001816; // type:object size:0x12 +lbl_1_data_1828 = .data:0x00001828; // type:object size:0x50 +lbl_1_data_1878 = .data:0x00001878; // type:object size:0x2C +lbl_1_data_18A4 = .data:0x000018A4; // type:object size:0x8 data:4byte +lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x4 data:4byte +lbl_1_data_18B0 = .data:0x000018B0; // type:object size:0x4 data:4byte +lbl_1_data_18B4 = .data:0x000018B4; // type:object size:0x40 +lbl_1_data_18F4 = .data:0x000018F4; // type:object size:0xC data:4byte +lbl_1_data_1900 = .data:0x00001900; // type:object size:0x4 data:4byte +lbl_1_data_1904 = .data:0x00001904; // type:object size:0x1B data:string +lbl_1_data_191F = .data:0x0000191F; // type:object size:0x19 data:string +lbl_1_data_1938 = .data:0x00001938; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x8 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x10 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0xB0 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0xC0 diff --git a/config/GMPP01_00/rels/m423Dll/splits.txt b/config/GMPP01_00/rels/m423Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m423Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m423Dll/symbols.txt b/config/GMPP01_00/rels/m423Dll/symbols.txt new file mode 100644 index 00000000..7087bc41 --- /dev/null +++ b/config/GMPP01_00/rels/m423Dll/symbols.txt @@ -0,0 +1,367 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x278 +fn_1_318 = .text:0x00000318; // type:function size:0x98 +fn_1_3B0 = .text:0x000003B0; // type:function size:0xA44 +fn_1_DF4 = .text:0x00000DF4; // type:function size:0x64 +fn_1_E58 = .text:0x00000E58; // type:function size:0xA0 +fn_1_EF8 = .text:0x00000EF8; // type:function size:0x10 +fn_1_F08 = .text:0x00000F08; // type:function size:0x50 +fn_1_F58 = .text:0x00000F58; // type:function size:0x244 +fn_1_119C = .text:0x0000119C; // type:function size:0x34 +fn_1_11D0 = .text:0x000011D0; // type:function size:0x60 +fn_1_1230 = .text:0x00001230; // type:function size:0x68 +fn_1_1298 = .text:0x00001298; // type:function size:0x100 +fn_1_1398 = .text:0x00001398; // type:function size:0xA4 +fn_1_143C = .text:0x0000143C; // type:function size:0x5C +fn_1_1498 = .text:0x00001498; // type:function size:0x45C +fn_1_18F4 = .text:0x000018F4; // type:function size:0x260 +fn_1_1B54 = .text:0x00001B54; // type:function size:0x400 +fn_1_1F54 = .text:0x00001F54; // type:function size:0x334 +fn_1_2288 = .text:0x00002288; // type:function size:0x394 +fn_1_261C = .text:0x0000261C; // type:function size:0x394 +fn_1_29B0 = .text:0x000029B0; // type:function size:0x4 +fn_1_29B4 = .text:0x000029B4; // type:function size:0x24C +fn_1_2C00 = .text:0x00002C00; // type:function size:0x8D0 +fn_1_34D0 = .text:0x000034D0; // type:function size:0x50 +fn_1_3520 = .text:0x00003520; // type:function size:0x370 +fn_1_3890 = .text:0x00003890; // type:function size:0x1C0 +fn_1_3A50 = .text:0x00003A50; // type:function size:0xC +fn_1_3A5C = .text:0x00003A5C; // type:function size:0x28 +fn_1_3A84 = .text:0x00003A84; // type:function size:0x170 +fn_1_3BF4 = .text:0x00003BF4; // type:function size:0x3E4 +fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x798 +fn_1_4770 = .text:0x00004770; // type:function size:0x1628 +fn_1_5D98 = .text:0x00005D98; // type:function size:0x1B6C +fn_1_7904 = .text:0x00007904; // type:function size:0xC +fn_1_7910 = .text:0x00007910; // type:function size:0x4C +fn_1_795C = .text:0x0000795C; // type:function size:0x100 +fn_1_7A5C = .text:0x00007A5C; // type:function size:0x18C +fn_1_7BE8 = .text:0x00007BE8; // type:function size:0xA0 +fn_1_7C88 = .text:0x00007C88; // type:function size:0x780 +fn_1_8408 = .text:0x00008408; // type:function size:0x70 +fn_1_8478 = .text:0x00008478; // type:function size:0x97C +fn_1_8DF4 = .text:0x00008DF4; // type:function size:0x910 +fn_1_9704 = .text:0x00009704; // type:function size:0x50 +fn_1_9754 = .text:0x00009754; // type:function size:0x28C +fn_1_99E0 = .text:0x000099E0; // type:function size:0x1100 +fn_1_AAE0 = .text:0x0000AAE0; // type:function size:0xC +fn_1_AAEC = .text:0x0000AAEC; // type:function size:0x28 +fn_1_AB14 = .text:0x0000AB14; // type:function size:0x238 +fn_1_AD4C = .text:0x0000AD4C; // type:function size:0x74 +fn_1_ADC0 = .text:0x0000ADC0; // type:function size:0x1E4 +fn_1_AFA4 = .text:0x0000AFA4; // type:function size:0x84 +fn_1_B028 = .text:0x0000B028; // type:function size:0x254 +fn_1_B27C = .text:0x0000B27C; // type:function size:0x68 +fn_1_B2E4 = .text:0x0000B2E4; // type:function size:0x160 +fn_1_B444 = .text:0x0000B444; // type:function size:0x12C +fn_1_B570 = .text:0x0000B570; // type:function size:0x8A8 +fn_1_BE18 = .text:0x0000BE18; // type:function size:0x7C0 +fn_1_C5D8 = .text:0x0000C5D8; // type:function size:0x1498 +fn_1_DA70 = .text:0x0000DA70; // type:function size:0x108 +fn_1_DB78 = .text:0x0000DB78; // type:function size:0x190 +fn_1_DD08 = .text:0x0000DD08; // type:function size:0x5C +fn_1_DD64 = .text:0x0000DD64; // type:function size:0x14C +fn_1_DEB0 = .text:0x0000DEB0; // type:function size:0x44C +fn_1_E2FC = .text:0x0000E2FC; // type:function size:0xD4 +fn_1_E3D0 = .text:0x0000E3D0; // type:function size:0xA0 +fn_1_E470 = .text:0x0000E470; // type:function size:0x4 +fn_1_E474 = .text:0x0000E474; // type:function size:0x12C +fn_1_E5A0 = .text:0x0000E5A0; // type:function size:0x8C +fn_1_E62C = .text:0x0000E62C; // type:function size:0x120 +fn_1_E74C = .text:0x0000E74C; // type:function size:0x6C +fn_1_E7B8 = .text:0x0000E7B8; // type:function size:0x8CC +fn_1_F084 = .text:0x0000F084; // type:function size:0x630 +fn_1_F6B4 = .text:0x0000F6B4; // type:function size:0x11C +fn_1_F7D0 = .text:0x0000F7D0; // type:function size:0x50 +fn_1_F820 = .text:0x0000F820; // type:function size:0x360 +fn_1_FB80 = .text:0x0000FB80; // type:function size:0x4D0 +fn_1_10050 = .text:0x00010050; // type:function size:0x88 +fn_1_100D8 = .text:0x000100D8; // type:function size:0x90 +fn_1_10168 = .text:0x00010168; // type:function size:0xB4 +fn_1_1021C = .text:0x0001021C; // type:function size:0x3A4 +fn_1_105C0 = .text:0x000105C0; // type:function size:0xAC +fn_1_1066C = .text:0x0001066C; // type:function size:0x4 +fn_1_10670 = .text:0x00010670; // type:function size:0x10 +fn_1_10680 = .text:0x00010680; // type:function size:0x198 +fn_1_10818 = .text:0x00010818; // type:function size:0x4F0 +fn_1_10D08 = .text:0x00010D08; // type:function size:0x440 +fn_1_11148 = .text:0x00011148; // type:function size:0x10C +fn_1_11254 = .text:0x00011254; // type:function size:0x4B0 +fn_1_11704 = .text:0x00011704; // type:function size:0x33C +fn_1_11A40 = .text:0x00011A40; // type:function size:0x8DC +fn_1_1231C = .text:0x0001231C; // type:function size:0x118 +fn_1_12434 = .text:0x00012434; // type:function size:0x250 +fn_1_12684 = .text:0x00012684; // type:function size:0x3F8 +fn_1_12A7C = .text:0x00012A7C; // type:function size:0xB4 +fn_1_12B30 = .text:0x00012B30; // type:function size:0x27C +fn_1_12DAC = .text:0x00012DAC; // type:function size:0x100 +fn_1_12EAC = .text:0x00012EAC; // type:function size:0xFC +fn_1_12FA8 = .text:0x00012FA8; // type:function size:0x4E4 +fn_1_1348C = .text:0x0001348C; // type:function size:0x330 +fn_1_137BC = .text:0x000137BC; // type:function size:0x148 +fn_1_13904 = .text:0x00013904; // type:function size:0x78C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x1 data:byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float +lbl_1_data_38 = .data:0x00000038; // type:object size:0x118 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 data:float +lbl_1_data_180 = .data:0x00000180; // type:object size:0x30 data:float +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x24 +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0xC +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0xC +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xC +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC +lbl_1_data_228 = .data:0x00000228; // type:object size:0xC +lbl_1_data_234 = .data:0x00000234; // type:object size:0x4 +lbl_1_data_238 = .data:0x00000238; // type:object size:0x18 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x18 +jumptable_1_data_268 = .data:0x00000268; // type:object size:0x30 scope:local +lbl_1_data_298 = .data:0x00000298; // type:object size:0x1 data:byte +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x30 +lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x20 +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x20 +lbl_1_data_30C = .data:0x0000030C; // type:object size:0x4 +lbl_1_data_310 = .data:0x00000310; // type:object size:0x1 data:byte +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 data:4byte +lbl_1_data_334 = .data:0x00000334; // type:object size:0x30 +lbl_1_data_364 = .data:0x00000364; // type:object size:0x24 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x1 data:byte +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1F data:string +lbl_1_data_3AB = .data:0x000003AB; // type:object size:0x1 data:byte +lbl_1_data_3AF = .data:0x000003AF; // type:object size:0x1 data:byte +lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x5 data:byte +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0xF0 +lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0x54 +lbl_1_data_4FC = .data:0x000004FC; // type:object size:0xC +lbl_1_data_508 = .data:0x00000508; // type:object size:0x18 +lbl_1_data_520 = .data:0x00000520; // type:object size:0x6 +lbl_1_data_526 = .data:0x00000526; // type:object size:0x6 +lbl_1_data_52C = .data:0x0000052C; // type:object size:0x8 +lbl_1_data_534 = .data:0x00000534; // type:object size:0x40 +lbl_1_data_574 = .data:0x00000574; // type:object size:0xC +lbl_1_data_580 = .data:0x00000580; // type:object size:0x58 +lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x10 +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0xC data:4byte +lbl_1_data_5F4 = .data:0x000005F4; // type:object size:0x1 data:byte +lbl_1_data_5F8 = .data:0x000005F8; // type:object size:0x1 data:byte +jumptable_1_data_5FC = .data:0x000005FC; // type:object size:0x34 scope:local +lbl_1_data_630 = .data:0x00000630; // type:object size:0x1 data:byte +jumptable_1_data_634 = .data:0x00000634; // type:object size:0x34 scope:local +lbl_1_data_668 = .data:0x00000668; // type:object size:0x10 +lbl_1_data_678 = .data:0x00000678; // type:object size:0x10 +lbl_1_data_688 = .data:0x00000688; // type:object size:0x20 +lbl_1_data_6A8 = .data:0x000006A8; // type:object size:0x20 data:4byte +lbl_1_data_6C8 = .data:0x000006C8; // type:object size:0x10 +lbl_1_data_6D8 = .data:0x000006D8; // type:object size:0x20 +lbl_1_data_6F8 = .data:0x000006F8; // type:object size:0x20 +lbl_1_data_718 = .data:0x00000718; // type:object size:0x20 +lbl_1_data_738 = .data:0x00000738; // type:object size:0x20 +lbl_1_data_758 = .data:0x00000758; // type:object size:0x1 data:byte +lbl_1_data_75C = .data:0x0000075C; // type:object size:0x48 +jumptable_1_data_7A4 = .data:0x000007A4; // type:object size:0x20 scope:local +lbl_1_data_7C4 = .data:0x000007C4; // type:object size:0x18 +jumptable_1_data_7DC = .data:0x000007DC; // type:object size:0x20 scope:local +lbl_1_data_7FC = .data:0x000007FC; // type:object size:0x20 +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x20 +lbl_1_data_83C = .data:0x0000083C; // type:object size:0x8 +lbl_1_data_844 = .data:0x00000844; // type:object size:0x60 +lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x20 +lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0x30 +lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x20 +lbl_1_data_914 = .data:0x00000914; // type:object size:0x6 data:byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x3C data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x3C data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0xC data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x10 +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x10 data:4byte +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x10 data:4byte +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x8 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:4byte +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:4byte +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m424Dll/splits.txt b/config/GMPP01_00/rels/m424Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m424Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m424Dll/symbols.txt b/config/GMPP01_00/rels/m424Dll/symbols.txt new file mode 100644 index 00000000..73453dab --- /dev/null +++ b/config/GMPP01_00/rels/m424Dll/symbols.txt @@ -0,0 +1,314 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x1C4 +fn_1_264 = .text:0x00000264; // type:function size:0x1B8 +fn_1_41C = .text:0x0000041C; // type:function size:0xAB8 +fn_1_ED4 = .text:0x00000ED4; // type:function size:0x60 +fn_1_F34 = .text:0x00000F34; // type:function size:0xA0 +fn_1_FD4 = .text:0x00000FD4; // type:function size:0x10 +fn_1_FE4 = .text:0x00000FE4; // type:function size:0x1FC +fn_1_11E0 = .text:0x000011E0; // type:function size:0x4 +fn_1_11E4 = .text:0x000011E4; // type:function size:0x4 +fn_1_11E8 = .text:0x000011E8; // type:function size:0x10 +fn_1_11F8 = .text:0x000011F8; // type:function size:0x154 +fn_1_134C = .text:0x0000134C; // type:function size:0x118 +fn_1_1464 = .text:0x00001464; // type:function size:0x250 +fn_1_16B4 = .text:0x000016B4; // type:function size:0x3F8 +fn_1_1AAC = .text:0x00001AAC; // type:function size:0xD4 +fn_1_1B80 = .text:0x00001B80; // type:function size:0x2C +fn_1_1BAC = .text:0x00001BAC; // type:function size:0x264 +fn_1_1E10 = .text:0x00001E10; // type:function size:0x314 +fn_1_2124 = .text:0x00002124; // type:function size:0xC +fn_1_2130 = .text:0x00002130; // type:function size:0x74 +fn_1_21A4 = .text:0x000021A4; // type:function size:0x70 +fn_1_2214 = .text:0x00002214; // type:function size:0x218 +fn_1_242C = .text:0x0000242C; // type:function size:0xF4 +fn_1_2520 = .text:0x00002520; // type:function size:0x94 +fn_1_25B4 = .text:0x000025B4; // type:function size:0xB0 +fn_1_2664 = .text:0x00002664; // type:function size:0xB0 +fn_1_2714 = .text:0x00002714; // type:function size:0x160 +fn_1_2874 = .text:0x00002874; // type:function size:0x20 +fn_1_2894 = .text:0x00002894; // type:function size:0x598 +fn_1_2E2C = .text:0x00002E2C; // type:function size:0x4 +fn_1_2E30 = .text:0x00002E30; // type:function size:0x384 +fn_1_31B4 = .text:0x000031B4; // type:function size:0x63C +fn_1_37F0 = .text:0x000037F0; // type:function size:0xA24 +fn_1_4214 = .text:0x00004214; // type:function size:0x478 +fn_1_468C = .text:0x0000468C; // type:function size:0x4 +fn_1_4690 = .text:0x00004690; // type:function size:0x234 +fn_1_48C4 = .text:0x000048C4; // type:function size:0x1C0 +fn_1_4A84 = .text:0x00004A84; // type:function size:0x588 +fn_1_500C = .text:0x0000500C; // type:function size:0x1020 +fn_1_602C = .text:0x0000602C; // type:function size:0x40 +fn_1_606C = .text:0x0000606C; // type:function size:0xA0 +fn_1_610C = .text:0x0000610C; // type:function size:0x94 +fn_1_61A0 = .text:0x000061A0; // type:function size:0x84 +fn_1_6224 = .text:0x00006224; // type:function size:0x4C +fn_1_6270 = .text:0x00006270; // type:function size:0x54 +fn_1_62C4 = .text:0x000062C4; // type:function size:0x13C +fn_1_6400 = .text:0x00006400; // type:function size:0x168 +fn_1_6568 = .text:0x00006568; // type:function size:0x120 +fn_1_6688 = .text:0x00006688; // type:function size:0x39C +fn_1_6A24 = .text:0x00006A24; // type:function size:0x2E0 +fn_1_6D04 = .text:0x00006D04; // type:function size:0x38C +fn_1_7090 = .text:0x00007090; // type:function size:0x384 +fn_1_7414 = .text:0x00007414; // type:function size:0x3A4 +fn_1_77B8 = .text:0x000077B8; // type:function size:0x238 +fn_1_79F0 = .text:0x000079F0; // type:function size:0x2A4 +fn_1_7C94 = .text:0x00007C94; // type:function size:0x130 +fn_1_7DC4 = .text:0x00007DC4; // type:function size:0x198 +fn_1_7F5C = .text:0x00007F5C; // type:function size:0xD8 +fn_1_8034 = .text:0x00008034; // type:function size:0xBC +fn_1_80F0 = .text:0x000080F0; // type:function size:0x33C +fn_1_842C = .text:0x0000842C; // type:function size:0x4B0 +fn_1_88DC = .text:0x000088DC; // type:function size:0x3C +fn_1_8918 = .text:0x00008918; // type:function size:0x2C +fn_1_8944 = .text:0x00008944; // type:function size:0x2C +fn_1_8970 = .text:0x00008970; // type:function size:0x2C +fn_1_899C = .text:0x0000899C; // type:function size:0x2C +fn_1_89C8 = .text:0x000089C8; // type:function size:0x2C +fn_1_89F4 = .text:0x000089F4; // type:function size:0x2C +fn_1_8A20 = .text:0x00008A20; // type:function size:0x7C +fn_1_8A9C = .text:0x00008A9C; // type:function size:0x1D0 +fn_1_8C6C = .text:0x00008C6C; // type:function size:0x404 +fn_1_9070 = .text:0x00009070; // type:function size:0x374 +fn_1_93E4 = .text:0x000093E4; // type:function size:0xB4 +fn_1_9498 = .text:0x00009498; // type:function size:0x2C +fn_1_94C4 = .text:0x000094C4; // type:function size:0x594 +fn_1_9A58 = .text:0x00009A58; // type:function size:0x13F4 +fn_1_AE4C = .text:0x0000AE4C; // type:function size:0xC +fn_1_AE58 = .text:0x0000AE58; // type:function size:0x938 +fn_1_B790 = .text:0x0000B790; // type:function size:0x68 +fn_1_B7F8 = .text:0x0000B7F8; // type:function size:0x84 +fn_1_B87C = .text:0x0000B87C; // type:function size:0x24 +fn_1_B8A0 = .text:0x0000B8A0; // type:function size:0x78 +fn_1_B918 = .text:0x0000B918; // type:function size:0x78 +fn_1_B990 = .text:0x0000B990; // type:function size:0x44 +fn_1_B9D4 = .text:0x0000B9D4; // type:function size:0x830 +fn_1_C204 = .text:0x0000C204; // type:function size:0xD0 +fn_1_C2D4 = .text:0x0000C2D4; // type:function size:0x324 +fn_1_C5F8 = .text:0x0000C5F8; // type:function size:0x250 +fn_1_C848 = .text:0x0000C848; // type:function size:0x24 +fn_1_C86C = .text:0x0000C86C; // type:function size:0x124 +fn_1_C990 = .text:0x0000C990; // type:function size:0x4D8 +fn_1_CE68 = .text:0x0000CE68; // type:function size:0x8C +fn_1_CEF4 = .text:0x0000CEF4; // type:function size:0x80 +fn_1_CF74 = .text:0x0000CF74; // type:function size:0x90 +fn_1_D004 = .text:0x0000D004; // type:function size:0x64 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0xC data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC +lbl_1_data_78 = .data:0x00000078; // type:object size:0x24 +lbl_1_data_9C = .data:0x0000009C; // type:object size:0xC +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xC +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4 +jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x28 scope:local +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC +lbl_1_data_EC = .data:0x000000EC; // type:object size:0xC +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0xC +lbl_1_data_104 = .data:0x00000104; // type:object size:0x4C +lbl_1_data_150 = .data:0x00000150; // type:object size:0x5C +jumptable_1_data_1AC = .data:0x000001AC; // type:object size:0x2C scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x8 data:4byte +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x30 data:float +lbl_1_data_210 = .data:0x00000210; // type:object size:0xC data:float +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC0 +lbl_1_data_2DC = .data:0x000002DC; // type:object size:0xC +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x24 +lbl_1_data_30C = .data:0x0000030C; // type:object size:0xC data:4byte +lbl_1_data_318 = .data:0x00000318; // type:object size:0x6 data:string +lbl_1_data_31E = .data:0x0000031E; // type:object size:0x6 data:string +lbl_1_data_324 = .data:0x00000324; // type:object size:0x8 +jumptable_1_data_32C = .data:0x0000032C; // type:object size:0x40 scope:local +lbl_1_data_36C = .data:0x0000036C; // type:object size:0x20 +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x20 +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x19 data:string +lbl_1_data_3C5 = .data:0x000003C5; // type:object size:0x5 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x8 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x534 data:4byte +lbl_1_bss_594 = .bss:0x00000594; // type:object size:0x18 +lbl_1_bss_5AC = .bss:0x000005AC; // type:object size:0x10 data:4byte +lbl_1_bss_5BC = .bss:0x000005BC; // type:object size:0x84 +lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x80 data:4byte +lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 data:4byte +lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x4 data:4byte +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:4byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0xC data:4byte +lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte +lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m425Dll/splits.txt b/config/GMPP01_00/rels/m425Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m425Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m425Dll/symbols.txt b/config/GMPP01_00/rels/m425Dll/symbols.txt new file mode 100644 index 00000000..4e26a147 --- /dev/null +++ b/config/GMPP01_00/rels/m425Dll/symbols.txt @@ -0,0 +1,300 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3C0 +fn_1_460 = .text:0x00000460; // type:function size:0x20 +fn_1_480 = .text:0x00000480; // type:function size:0x464 +fn_1_8E4 = .text:0x000008E4; // type:function size:0x65C +fn_1_F40 = .text:0x00000F40; // type:function size:0x60 +fn_1_FA0 = .text:0x00000FA0; // type:function size:0x524 +fn_1_14C4 = .text:0x000014C4; // type:function size:0x120 +fn_1_15E4 = .text:0x000015E4; // type:function size:0xC4 +fn_1_16A8 = .text:0x000016A8; // type:function size:0x490 +fn_1_1B38 = .text:0x00001B38; // type:function size:0xC44 +fn_1_277C = .text:0x0000277C; // type:function size:0xEC +fn_1_2868 = .text:0x00002868; // type:function size:0x224 +fn_1_2A8C = .text:0x00002A8C; // type:function size:0x98 +fn_1_2B24 = .text:0x00002B24; // type:function size:0x34C +fn_1_2E70 = .text:0x00002E70; // type:function size:0x568 +fn_1_33D8 = .text:0x000033D8; // type:function size:0x384 +fn_1_375C = .text:0x0000375C; // type:function size:0x76C +fn_1_3EC8 = .text:0x00003EC8; // type:function size:0xB0 +fn_1_3F78 = .text:0x00003F78; // type:function size:0xB08 +fn_1_4A80 = .text:0x00004A80; // type:function size:0x5BC +fn_1_503C = .text:0x0000503C; // type:function size:0x524 +fn_1_5560 = .text:0x00005560; // type:function size:0xA0 +fn_1_5600 = .text:0x00005600; // type:function size:0xA8 +fn_1_56A8 = .text:0x000056A8; // type:function size:0x8C +fn_1_5734 = .text:0x00005734; // type:function size:0x98 +fn_1_57CC = .text:0x000057CC; // type:function size:0x44C +fn_1_5C18 = .text:0x00005C18; // type:function size:0x8B4 +fn_1_64CC = .text:0x000064CC; // type:function size:0x54 +fn_1_6520 = .text:0x00006520; // type:function size:0x78 +fn_1_6598 = .text:0x00006598; // type:function size:0x11C +fn_1_66B4 = .text:0x000066B4; // type:function size:0x78 +fn_1_672C = .text:0x0000672C; // type:function size:0x2D8 +fn_1_6A04 = .text:0x00006A04; // type:function size:0x1CC +fn_1_6BD0 = .text:0x00006BD0; // type:function size:0x30 +fn_1_6C00 = .text:0x00006C00; // type:function size:0xC8 +fn_1_6CC8 = .text:0x00006CC8; // type:function size:0x12C +fn_1_6DF4 = .text:0x00006DF4; // type:function size:0xC8 +fn_1_6EBC = .text:0x00006EBC; // type:function size:0x69D8 +fn_1_D894 = .text:0x0000D894; // type:function size:0x10 +fn_1_D8A4 = .text:0x0000D8A4; // type:function size:0x10 +fn_1_D8B4 = .text:0x0000D8B4; // type:function size:0x10 +fn_1_D8C4 = .text:0x0000D8C4; // type:function size:0x10 +fn_1_D8D4 = .text:0x0000D8D4; // type:function size:0xCC +fn_1_D9A0 = .text:0x0000D9A0; // type:function size:0x19C +fn_1_DB3C = .text:0x0000DB3C; // type:function size:0x2F8 +fn_1_DE34 = .text:0x0000DE34; // type:function size:0x3D4 +fn_1_E208 = .text:0x0000E208; // type:function size:0x704 +fn_1_E90C = .text:0x0000E90C; // type:function size:0x18B0 +fn_1_101BC = .text:0x000101BC; // type:function size:0x828 +fn_1_109E4 = .text:0x000109E4; // type:function size:0x318 +fn_1_10CFC = .text:0x00010CFC; // type:function size:0x60 +fn_1_10D5C = .text:0x00010D5C; // type:function size:0x60 +fn_1_10DBC = .text:0x00010DBC; // type:function size:0x88 +fn_1_10E44 = .text:0x00010E44; // type:function size:0xBC +fn_1_10F00 = .text:0x00010F00; // type:function size:0x38C +fn_1_1128C = .text:0x0001128C; // type:function size:0x78 +fn_1_11304 = .text:0x00011304; // type:function size:0x11C +fn_1_11420 = .text:0x00011420; // type:function size:0x3C +fn_1_1145C = .text:0x0001145C; // type:function size:0x180 +fn_1_115DC = .text:0x000115DC; // type:function size:0x110 +fn_1_116EC = .text:0x000116EC; // type:function size:0x390 +fn_1_11A7C = .text:0x00011A7C; // type:function size:0x46C +fn_1_11EE8 = .text:0x00011EE8; // type:function size:0x7B4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 data:4byte +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC0 +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x10 data:4byte +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x10 data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x20 data:4byte +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0xC +lbl_1_data_10 = .data:0x00000010; // type:object size:0x30 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x4 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x28 +lbl_1_data_94 = .data:0x00000094; // type:object size:0x30 +jumptable_1_data_C4 = .data:0x000000C4; // type:object size:0x28 scope:local +jumptable_1_data_EC = .data:0x000000EC; // type:object size:0x28 scope:local +lbl_1_data_114 = .data:0x00000114; // type:object size:0x4 data:4byte +lbl_1_data_118 = .data:0x00000118; // type:object size:0x18 +lbl_1_data_130 = .data:0x00000130; // type:object size:0x20 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 +lbl_1_data_168 = .data:0x00000168; // type:object size:0x1 data:byte +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x30 +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x30 +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x20 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x630 +lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x2 data:2byte +lbl_1_bss_642 = .bss:0x00000642; // type:object size:0x2 data:2byte +lbl_1_bss_644 = .bss:0x00000644; // type:object size:0x2 data:2byte +lbl_1_bss_646 = .bss:0x00000646; // type:object size:0x2 data:2byte +lbl_1_bss_648 = .bss:0x00000648; // type:object size:0x2 data:2byte +lbl_1_bss_64C = .bss:0x0000064C; // type:object size:0x10 +lbl_1_bss_65C = .bss:0x0000065C; // type:object size:0x4 data:4byte +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x4 data:4byte +lbl_1_bss_664 = .bss:0x00000664; // type:object size:0x4 data:4byte +lbl_1_bss_668 = .bss:0x00000668; // type:object size:0x8 data:4byte +lbl_1_bss_670 = .bss:0x00000670; // type:object size:0xC data:float +lbl_1_bss_67C = .bss:0x0000067C; // type:object size:0xC data:float +lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x40 +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x1 data:byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0x4 data:4byte +lbl_1_bss_6D0 = .bss:0x000006D0; // type:object size:0x1 data:byte +lbl_1_bss_6D4 = .bss:0x000006D4; // type:object size:0x4 data:4byte +lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte +lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte +lbl_1_bss_6E0 = .bss:0x000006E0; // type:object size:0x4 data:4byte +lbl_1_bss_6E4 = .bss:0x000006E4; // type:object size:0x4 data:4byte +lbl_1_bss_6E8 = .bss:0x000006E8; // type:object size:0x4 data:4byte +lbl_1_bss_6EC = .bss:0x000006EC; // type:object size:0x4 data:4byte +lbl_1_bss_6F0 = .bss:0x000006F0; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m426Dll/splits.txt b/config/GMPP01_00/rels/m426Dll/splits.txt new file mode 100644 index 00000000..a7a72393 --- /dev/null +++ b/config/GMPP01_00/rels/m426Dll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m426Dll/main.c: + .text start:0x000000A0 end:0x00009AC4 + .rodata start:0x00000000 end:0x000001DC + .data start:0x00000000 end:0x00000368 + .bss start:0x00000000 end:0x0000009C diff --git a/config/GMPP01_00/rels/m426Dll/symbols.txt b/config/GMPP01_00/rels/m426Dll/symbols.txt new file mode 100644 index 00000000..81681170 --- /dev/null +++ b/config/GMPP01_00/rels/m426Dll/symbols.txt @@ -0,0 +1,225 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x16C +fn_1_20C = .text:0x0000020C; // type:function size:0x124 +fn_1_330 = .text:0x00000330; // type:function size:0xA80 +fn_1_DB8 = .text:0x00000DB0; // type:function size:0x60 +fn_1_E18 = .text:0x00000E10; // type:function size:0xA0 +fn_1_EB8 = .text:0x00000EB0; // type:function size:0x14C +fn_1_1004 = .text:0x00000FFC; // type:function size:0x178 +fn_1_117C = .text:0x00001174; // type:function size:0x70 +fn_1_11EC = .text:0x000011E4; // type:function size:0x70 +fn_1_125C = .text:0x00001254; // type:function size:0x49C +fn_1_16F8 = .text:0x000016F0; // type:function size:0x13F4 +fn_1_2AC8 = .text:0x00002AE4; // type:function size:0x14 +fn_1_2ADC = .text:0x00002AF8; // type:function size:0x98 +fn_1_2B74 = .text:0x00002B90; // type:function size:0x368 +fn_1_2EDC = .text:0x00002EF8; // type:function size:0x80 +fn_1_2F5C = .text:0x00002F78; // type:function size:0x6F8 +fn_1_3654 = .text:0x00003670; // type:function size:0x70 +fn_1_36C4 = .text:0x000036E0; // type:function size:0x50 +fn_1_3714 = .text:0x00003730; // type:function size:0x7E8 +fn_1_3EFC = .text:0x00003F18; // type:function size:0x700 +fn_1_45FC = .text:0x00004618; // type:function size:0x48 +fn_1_4644 = .text:0x00004660; // type:function size:0x60 +fn_1_46A4 = .text:0x000046C0; // type:function size:0x94 +fn_1_4738 = .text:0x00004754; // type:function size:0x15C +fn_1_4894 = .text:0x000048B0; // type:function size:0x5C +fn_1_48F0 = .text:0x0000490C; // type:function size:0x178 +fn_1_4A68 = .text:0x00004A84; // type:function size:0x8C +fn_1_4AF4 = .text:0x00004B10; // type:function size:0x3D0 +fn_1_4EC4 = .text:0x00004EE0; // type:function size:0x50 +fn_1_4F14 = .text:0x00004F30; // type:function size:0x220 +fn_1_5134 = .text:0x00005150; // type:function size:0xA20 +fn_1_5B34 = .text:0x00005B70; // type:function size:0x14 +fn_1_5B48 = .text:0x00005B84; // type:function size:0x40 +fn_1_5B88 = .text:0x00005BC4; // type:function size:0xE4 +fn_1_5C6C = .text:0x00005CA8; // type:function size:0xD0 +fn_1_5D3C = .text:0x00005D78; // type:function size:0x130 +fn_1_5E6C = .text:0x00005EA8; // type:function size:0x50 +fn_1_5EBC = .text:0x00005EF8; // type:function size:0x14C +fn_1_6008 = .text:0x00006044; // type:function size:0x178 +fn_1_6180 = .text:0x000061BC; // type:function size:0x60 +fn_1_61E0 = .text:0x0000621C; // type:function size:0x68 +fn_1_6248 = .text:0x00006284; // type:function size:0xC8 +fn_1_6310 = .text:0x0000634C; // type:function size:0xA8 +fn_1_63B8 = .text:0x000063F4; // type:function size:0x1DC +fn_1_6594 = .text:0x000065D0; // type:function size:0x50 +fn_1_65E4 = .text:0x00006620; // type:function size:0x120 +fn_1_6704 = .text:0x00006740; // type:function size:0x118 +fn_1_681C = .text:0x00006858; // type:function size:0x28 +fn_1_6844 = .text:0x00006880; // type:function size:0x44 +fn_1_6888 = .text:0x000068C4; // type:function size:0x15C +fn_1_69E4 = .text:0x00006A20; // type:function size:0x50 +fn_1_6A34 = .text:0x00006A70; // type:function size:0x38C +fn_1_6DC0 = .text:0x00006DFC; // type:function size:0x410 +fn_1_71D0 = .text:0x0000720C; // type:function size:0xA8 +fn_1_7278 = .text:0x000072B4; // type:function size:0xB0 +fn_1_7328 = .text:0x00007364; // type:function size:0xB4 +fn_1_73DC = .text:0x00007418; // type:function size:0x1B0 +fn_1_758C = .text:0x000075C8; // type:function size:0x20 +fn_1_75AC = .text:0x000075E8; // type:function size:0x4 +fn_1_75B0 = .text:0x000075EC; // type:function size:0xC +fn_1_75BC = .text:0x000075F8; // type:function size:0x38 +fn_1_75F4 = .text:0x00007630; // type:function size:0x118 +fn_1_770C = .text:0x00007748; // type:function size:0x250 +fn_1_795C = .text:0x00007998; // type:function size:0x46C +fn_1_7DC8 = .text:0x00007E04; // type:function size:0x314 +fn_1_80DC = .text:0x00008118; // type:function size:0x7D8 +fn_1_88B4 = .text:0x000088F0; // type:function size:0x55C +fn_1_8E10 = .text:0x00008E4C; // type:function size:0x38 +fn_1_8E48 = .text:0x00008E84; // type:function size:0x2E8 +fn_1_9130 = .text:0x0000916C; // type:function size:0x100 +fn_1_9230 = .text:0x0000926C; // type:function size:0x314 +fn_1_9544 = .text:0x00009580; // type:function size:0x1D8 +fn_1_971C = .text:0x00009758; // type:function size:0x7C +fn_1_9798 = .text:0x000097D4; // type:function size:0x54 +fn_1_97EC = .text:0x00009828; // type:function size:0x7C +fn_1_9868 = .text:0x000098A4; // type:function size:0x7C +fn_1_98E4 = .text:0x00009920; // type:function size:0x78 +fn_1_995C = .text:0x00009998; // type:function size:0x12C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x1 scope:local data:byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x30 +lbl_1_data_30 = .data:0x00000030; // type:object size:0xC +lbl_1_data_3C = .data:0x0000003C; // type:object size:0xC +lbl_1_data_48 = .data:0x00000048; // type:object size:0x1 data:byte +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x54 data:float +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC +lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0xC +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x24 scope:local data:string +jumptable_1_data_E8 = .data:0x000000E8; // type:object size:0x24 scope:local +lbl_1_data_10C = .data:0x0000010C; // type:object size:0x4 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x60 data:4byte +lbl_1_data_170 = .data:0x00000170; // type:object size:0x60 +lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x8 +jumptable_1_data_1D8 = .data:0x000001D8; // type:object size:0x28 scope:local +lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 +lbl_1_data_218 = .data:0x00000218; // type:object size:0x8 +lbl_1_data_220 = .data:0x00000220; // type:object size:0xC +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x30 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x20 +lbl_1_data_27C = .data:0x0000027C; // type:object size:0x30 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x10 +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x20 +jumptable_1_data_2DC = .data:0x000002DC; // type:object size:0x1C scope:local +jumptable_1_data_2F8 = .data:0x000002F8; // type:object size:0x1C scope:local +jumptable_1_data_314 = .data:0x00000314; // type:object size:0x1C scope:local +jumptable_1_data_330 = .data:0x00000330; // type:object size:0x1C scope:local +jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x1C scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x1 data:byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x10 +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x8 +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m427Dll/splits.txt b/config/GMPP01_00/rels/m427Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m427Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m427Dll/symbols.txt b/config/GMPP01_00/rels/m427Dll/symbols.txt new file mode 100644 index 00000000..2ca9cb3f --- /dev/null +++ b/config/GMPP01_00/rels/m427Dll/symbols.txt @@ -0,0 +1,439 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x1FC +fn_1_29C = .text:0x0000029C; // type:function size:0x64 +fn_1_300 = .text:0x00000300; // type:function size:0x1360 +fn_1_1660 = .text:0x00001660; // type:function size:0x60 +fn_1_16C0 = .text:0x000016C0; // type:function size:0xC4 +fn_1_1784 = .text:0x00001784; // type:function size:0x10 +fn_1_1794 = .text:0x00001794; // type:function size:0xCC +fn_1_1860 = .text:0x00001860; // type:function size:0x20 +fn_1_1880 = .text:0x00001880; // type:function size:0xD0 +fn_1_1950 = .text:0x00001950; // type:function size:0x5E0 +fn_1_1F30 = .text:0x00001F30; // type:function size:0x254 +fn_1_2184 = .text:0x00002184; // type:function size:0x60 +fn_1_21E4 = .text:0x000021E4; // type:function size:0x144 +fn_1_2328 = .text:0x00002328; // type:function size:0x1E4 +fn_1_250C = .text:0x0000250C; // type:function size:0x1E4 +fn_1_26F0 = .text:0x000026F0; // type:function size:0x28 +fn_1_2718 = .text:0x00002718; // type:function size:0x64 +fn_1_277C = .text:0x0000277C; // type:function size:0x390 +fn_1_2B0C = .text:0x00002B0C; // type:function size:0x4 +fn_1_2B10 = .text:0x00002B10; // type:function size:0x4 +fn_1_2B14 = .text:0x00002B14; // type:function size:0x1C0 +fn_1_2CD4 = .text:0x00002CD4; // type:function size:0x1F8 +fn_1_2ECC = .text:0x00002ECC; // type:function size:0x8C +fn_1_2F58 = .text:0x00002F58; // type:function size:0x1F8 +fn_1_3150 = .text:0x00003150; // type:function size:0x188 +fn_1_32D8 = .text:0x000032D8; // type:function size:0x8 +fn_1_32E0 = .text:0x000032E0; // type:function size:0x438 +fn_1_3718 = .text:0x00003718; // type:function size:0x35C +fn_1_3A74 = .text:0x00003A74; // type:function size:0x98 +fn_1_3B0C = .text:0x00003B0C; // type:function size:0x29C +fn_1_3DA8 = .text:0x00003DA8; // type:function size:0x9C +fn_1_3E44 = .text:0x00003E44; // type:function size:0x3C0 +fn_1_4204 = .text:0x00004204; // type:function size:0x2DC +fn_1_44E0 = .text:0x000044E0; // type:function size:0x7C +fn_1_455C = .text:0x0000455C; // type:function size:0x37C +fn_1_48D8 = .text:0x000048D8; // type:function size:0x490 +fn_1_4D68 = .text:0x00004D68; // type:function size:0x324 +fn_1_508C = .text:0x0000508C; // type:function size:0x6C +fn_1_50F8 = .text:0x000050F8; // type:function size:0x480 +fn_1_5578 = .text:0x00005578; // type:function size:0xC00 +fn_1_6178 = .text:0x00006178; // type:function size:0x5D4 +fn_1_674C = .text:0x0000674C; // type:function size:0xB84 +fn_1_72D0 = .text:0x000072D0; // type:function size:0xD8 +fn_1_73A8 = .text:0x000073A8; // type:function size:0x590 +fn_1_7938 = .text:0x00007938; // type:function size:0x2E8 +fn_1_7C20 = .text:0x00007C20; // type:function size:0x22C +fn_1_7E4C = .text:0x00007E4C; // type:function size:0xD8 +fn_1_7F24 = .text:0x00007F24; // type:function size:0x69C +fn_1_85C0 = .text:0x000085C0; // type:function size:0x194 +fn_1_8754 = .text:0x00008754; // type:function size:0x6B4 +fn_1_8E08 = .text:0x00008E08; // type:function size:0x174 +fn_1_8F7C = .text:0x00008F7C; // type:function size:0x250 +fn_1_91CC = .text:0x000091CC; // type:function size:0x60 +fn_1_922C = .text:0x0000922C; // type:function size:0xD8 +fn_1_9304 = .text:0x00009304; // type:function size:0xD4 +fn_1_93D8 = .text:0x000093D8; // type:function size:0xD0 +fn_1_94A8 = .text:0x000094A8; // type:function size:0x12C +fn_1_95D4 = .text:0x000095D4; // type:function size:0x370 +fn_1_9944 = .text:0x00009944; // type:function size:0x44 +fn_1_9988 = .text:0x00009988; // type:function size:0x48 +fn_1_99D0 = .text:0x000099D0; // type:function size:0x48 +fn_1_9A18 = .text:0x00009A18; // type:function size:0x74 +fn_1_9A8C = .text:0x00009A8C; // type:function size:0x74 +fn_1_9B00 = .text:0x00009B00; // type:function size:0x74 +fn_1_9B74 = .text:0x00009B74; // type:function size:0x5C0 +fn_1_A134 = .text:0x0000A134; // type:function size:0xAC +fn_1_A1E0 = .text:0x0000A1E0; // type:function size:0x604 +fn_1_A7E4 = .text:0x0000A7E4; // type:function size:0x680 +fn_1_AE64 = .text:0x0000AE64; // type:function size:0x31C +fn_1_B180 = .text:0x0000B180; // type:function size:0x238 +fn_1_B3B8 = .text:0x0000B3B8; // type:function size:0x960 +fn_1_BD18 = .text:0x0000BD18; // type:function size:0x428 +fn_1_C140 = .text:0x0000C140; // type:function size:0xAC +fn_1_C1EC = .text:0x0000C1EC; // type:function size:0xAC +fn_1_C298 = .text:0x0000C298; // type:function size:0x10 +fn_1_C2A8 = .text:0x0000C2A8; // type:function size:0xC +fn_1_C2B4 = .text:0x0000C2B4; // type:function size:0xD8 +fn_1_C38C = .text:0x0000C38C; // type:function size:0x7C +fn_1_C408 = .text:0x0000C408; // type:function size:0x10C +fn_1_C514 = .text:0x0000C514; // type:function size:0x164 +fn_1_C678 = .text:0x0000C678; // type:function size:0xE0 +fn_1_C758 = .text:0x0000C758; // type:function size:0xAC0 +fn_1_D218 = .text:0x0000D218; // type:function size:0x204 +fn_1_D41C = .text:0x0000D41C; // type:function size:0xCC +fn_1_D4E8 = .text:0x0000D4E8; // type:function size:0x140 +fn_1_D628 = .text:0x0000D628; // type:function size:0x544 +fn_1_DB6C = .text:0x0000DB6C; // type:function size:0x60 +fn_1_DBCC = .text:0x0000DBCC; // type:function size:0x2C +fn_1_DBF8 = .text:0x0000DBF8; // type:function size:0x58 +fn_1_DC50 = .text:0x0000DC50; // type:function size:0x38 +fn_1_DC88 = .text:0x0000DC88; // type:function size:0x38 +fn_1_DCC0 = .text:0x0000DCC0; // type:function size:0x5DC +fn_1_E29C = .text:0x0000E29C; // type:function size:0xCC +fn_1_E368 = .text:0x0000E368; // type:function size:0xA4 +fn_1_E40C = .text:0x0000E40C; // type:function size:0x68 +fn_1_E474 = .text:0x0000E474; // type:function size:0x504 +fn_1_E978 = .text:0x0000E978; // type:function size:0x2C8 +fn_1_EC40 = .text:0x0000EC40; // type:function size:0x20 +fn_1_EC60 = .text:0x0000EC60; // type:function size:0x20 +fn_1_EC80 = .text:0x0000EC80; // type:function size:0x44C +fn_1_F0CC = .text:0x0000F0CC; // type:function size:0x1750 +fn_1_1081C = .text:0x0001081C; // type:function size:0x75C +fn_1_10F78 = .text:0x00010F78; // type:function size:0x5C +fn_1_10FD4 = .text:0x00010FD4; // type:function size:0x100 +fn_1_110D4 = .text:0x000110D4; // type:function size:0xD8 +fn_1_111AC = .text:0x000111AC; // type:function size:0xD8 +fn_1_11284 = .text:0x00011284; // type:function size:0x158 +fn_1_113DC = .text:0x000113DC; // type:function size:0x4C +fn_1_11428 = .text:0x00011428; // type:function size:0x178 +fn_1_115A0 = .text:0x000115A0; // type:function size:0x40C +fn_1_119AC = .text:0x000119AC; // type:function size:0xB4 +fn_1_11A60 = .text:0x00011A60; // type:function size:0x464 +fn_1_11EC4 = .text:0x00011EC4; // type:function size:0x63C +fn_1_12500 = .text:0x00012500; // type:function size:0x4 +fn_1_12504 = .text:0x00012504; // type:function size:0x68 +fn_1_1256C = .text:0x0001256C; // type:function size:0x588 +fn_1_12AF4 = .text:0x00012AF4; // type:function size:0x141C +fn_1_13F10 = .text:0x00013F10; // type:function size:0x94 +fn_1_13FA4 = .text:0x00013FA4; // type:function size:0x4 +fn_1_13FA8 = .text:0x00013FA8; // type:function size:0x14FC +fn_1_154A4 = .text:0x000154A4; // type:function size:0x4 +fn_1_154A8 = .text:0x000154A8; // type:function size:0x124 +fn_1_155CC = .text:0x000155CC; // type:function size:0x134 +fn_1_15700 = .text:0x00015700; // type:function size:0x1C4 +fn_1_158C4 = .text:0x000158C4; // type:function size:0x218 +fn_1_15ADC = .text:0x00015ADC; // type:function size:0x420 +fn_1_15EFC = .text:0x00015EFC; // type:function size:0xC0 +fn_1_15FBC = .text:0x00015FBC; // type:function size:0xAC +fn_1_16068 = .text:0x00016068; // type:function size:0x58 +fn_1_160C0 = .text:0x000160C0; // type:function size:0x18C +fn_1_1624C = .text:0x0001624C; // type:function size:0x334 +fn_1_16580 = .text:0x00016580; // type:function size:0x118 +fn_1_16698 = .text:0x00016698; // type:function size:0x250 +fn_1_168E8 = .text:0x000168E8; // type:function size:0x3F8 +fn_1_16CE0 = .text:0x00016CE0; // type:function size:0x148 +fn_1_16E28 = .text:0x00016E28; // type:function size:0xBC +fn_1_16EE4 = .text:0x00016EE4; // type:function size:0x150 +fn_1_17034 = .text:0x00017034; // type:function size:0x1F0 +fn_1_17224 = .text:0x00017224; // type:function size:0x4 +fn_1_17228 = .text:0x00017228; // type:function size:0xB4 +fn_1_172DC = .text:0x000172DC; // type:function size:0x140 +fn_1_1741C = .text:0x0001741C; // type:function size:0xA4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_136 = .rodata:0x00000136; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_142 = .rodata:0x00000142; // type:object size:0x1A scope:local data:2byte +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_38A = .rodata:0x0000038A; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 scope:local data:double +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:float +lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 +jumptable_1_data_94 = .data:0x00000094; // type:object size:0x3C scope:local +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x8 +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x4 +lbl_1_data_DC = .data:0x000000DC; // type:object size:0x4 +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC data:2byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x8 +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x4 data:float +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x4 data:float +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x30 +lbl_1_data_12C = .data:0x0000012C; // type:object size:0x8 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x10 +lbl_1_data_144 = .data:0x00000144; // type:object size:0x90 data:float +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0x8 +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x8 +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x4 +lbl_1_data_1F0 = .data:0x000001F0; // type:object size:0x13 data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0x10 data:string +lbl_1_data_213 = .data:0x00000213; // type:object size:0x26 data:string +lbl_1_data_239 = .data:0x00000239; // type:object size:0x27 +lbl_1_data_260 = .data:0x00000260; // type:object size:0x15C +lbl_1_data_3BC = .data:0x000003BC; // type:object size:0x178 +lbl_1_data_534 = .data:0x00000534; // type:object size:0x18 +lbl_1_data_54C = .data:0x0000054C; // type:object size:0x18 data:float +lbl_1_data_564 = .data:0x00000564; // type:object size:0xC data:float +lbl_1_data_570 = .data:0x00000570; // type:object size:0xC data:float +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x4 +lbl_1_data_580 = .data:0x00000580; // type:object size:0x10 +lbl_1_data_590 = .data:0x00000590; // type:object size:0x1C +lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x1C +lbl_1_data_5C8 = .data:0x000005C8; // type:object size:0x8 +lbl_1_data_5D0 = .data:0x000005D0; // type:object size:0x8 +jumptable_1_data_5D8 = .data:0x000005D8; // type:object size:0x20 scope:local +lbl_1_data_5F8 = .data:0x000005F8; // type:object size:0x8 +lbl_1_data_600 = .data:0x00000600; // type:object size:0x8 +lbl_1_data_608 = .data:0x00000608; // type:object size:0x10 +lbl_1_data_618 = .data:0x00000618; // type:object size:0x10 +jumptable_1_data_628 = .data:0x00000628; // type:object size:0x20 scope:local +lbl_1_data_648 = .data:0x00000648; // type:object size:0x4 +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1 data:byte +lbl_1_data_650 = .data:0x00000650; // type:object size:0x4 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x40 +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x8 +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x1 data:byte +lbl_1_bss_91 = .bss:0x00000091; // type:object size:0x1 data:byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:float +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4C data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x4 data:4byte +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x4 +lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x4 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x4 data:4byte +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x60 data:2byte +lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x3F0 data:byte +lbl_1_bss_548 = .bss:0x00000548; // type:object size:0x8 data:4byte +lbl_1_bss_550 = .bss:0x00000550; // type:object size:0x4 data:4byte +lbl_1_bss_554 = .bss:0x00000554; // type:object size:0x4 data:4byte +lbl_1_bss_558 = .bss:0x00000558; // type:object size:0x4 data:4byte +lbl_1_bss_55C = .bss:0x0000055C; // type:object size:0x10 +lbl_1_bss_56C = .bss:0x0000056C; // type:object size:0x8 +lbl_1_bss_574 = .bss:0x00000574; // type:object size:0x4 data:4byte +lbl_1_bss_578 = .bss:0x00000578; // type:object size:0x4 data:4byte +lbl_1_bss_57C = .bss:0x0000057C; // type:object size:0x4 data:4byte +lbl_1_bss_580 = .bss:0x00000580; // type:object size:0x4 data:4byte +lbl_1_bss_584 = .bss:0x00000584; // type:object size:0x4 data:4byte +lbl_1_bss_588 = .bss:0x00000588; // type:object size:0x4 data:4byte +lbl_1_bss_58C = .bss:0x0000058C; // type:object size:0x4 data:4byte +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0x4 data:4byte +lbl_1_bss_594 = .bss:0x00000594; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m428Dll/splits.txt b/config/GMPP01_00/rels/m428Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m428Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m428Dll/symbols.txt b/config/GMPP01_00/rels/m428Dll/symbols.txt new file mode 100644 index 00000000..dff9c748 --- /dev/null +++ b/config/GMPP01_00/rels/m428Dll/symbols.txt @@ -0,0 +1,410 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x218 +fn_1_2B8 = .text:0x000002B8; // type:function size:0x1C0 +fn_1_478 = .text:0x00000478; // type:function size:0x21A0 +fn_1_2618 = .text:0x00002618; // type:function size:0x50 +fn_1_2668 = .text:0x00002668; // type:function size:0xC4 +fn_1_272C = .text:0x0000272C; // type:function size:0x10 +fn_1_273C = .text:0x0000273C; // type:function size:0x2F8 +fn_1_2A34 = .text:0x00002A34; // type:function size:0x4 +fn_1_2A38 = .text:0x00002A38; // type:function size:0x4 +fn_1_2A3C = .text:0x00002A3C; // type:function size:0x10 +fn_1_2A4C = .text:0x00002A4C; // type:function size:0xCC +fn_1_2B18 = .text:0x00002B18; // type:function size:0x1C4 +fn_1_2CDC = .text:0x00002CDC; // type:function size:0x19C +fn_1_2E78 = .text:0x00002E78; // type:function size:0xD38 +fn_1_3BB0 = .text:0x00003BB0; // type:function size:0x540 +fn_1_40F0 = .text:0x000040F0; // type:function size:0xCC +fn_1_41BC = .text:0x000041BC; // type:function size:0xF4 +fn_1_42B0 = .text:0x000042B0; // type:function size:0xC0 +fn_1_4370 = .text:0x00004370; // type:function size:0xA4 +fn_1_4414 = .text:0x00004414; // type:function size:0x268 +fn_1_467C = .text:0x0000467C; // type:function size:0x20 +fn_1_469C = .text:0x0000469C; // type:function size:0x10C +fn_1_47A8 = .text:0x000047A8; // type:function size:0x420 +fn_1_4BC8 = .text:0x00004BC8; // type:function size:0x2C8 +fn_1_4E90 = .text:0x00004E90; // type:function size:0x34 +fn_1_4EC4 = .text:0x00004EC4; // type:function size:0x8C +fn_1_4F50 = .text:0x00004F50; // type:function size:0x2DC +fn_1_522C = .text:0x0000522C; // type:function size:0xF8 +fn_1_5324 = .text:0x00005324; // type:function size:0x4 +fn_1_5328 = .text:0x00005328; // type:function size:0x94 +fn_1_53BC = .text:0x000053BC; // type:function size:0x1E8 +fn_1_55A4 = .text:0x000055A4; // type:function size:0x12C +fn_1_56D0 = .text:0x000056D0; // type:function size:0x648 +fn_1_5D18 = .text:0x00005D18; // type:function size:0x5B4 +fn_1_62CC = .text:0x000062CC; // type:function size:0xF2C +fn_1_71F8 = .text:0x000071F8; // type:function size:0xE8 +fn_1_72E0 = .text:0x000072E0; // type:function size:0x40 +fn_1_7320 = .text:0x00007320; // type:function size:0xC8 +fn_1_73E8 = .text:0x000073E8; // type:function size:0x94 +fn_1_747C = .text:0x0000747C; // type:function size:0x84 +fn_1_7500 = .text:0x00007500; // type:function size:0x4C +fn_1_754C = .text:0x0000754C; // type:function size:0x54 +fn_1_75A0 = .text:0x000075A0; // type:function size:0x13C +fn_1_76DC = .text:0x000076DC; // type:function size:0x168 +fn_1_7844 = .text:0x00007844; // type:function size:0x120 +fn_1_7964 = .text:0x00007964; // type:function size:0x39C +fn_1_7D00 = .text:0x00007D00; // type:function size:0x2E0 +fn_1_7FE0 = .text:0x00007FE0; // type:function size:0x198 +fn_1_8178 = .text:0x00008178; // type:function size:0xD8 +fn_1_8250 = .text:0x00008250; // type:function size:0xBC +fn_1_830C = .text:0x0000830C; // type:function size:0x33C +fn_1_8648 = .text:0x00008648; // type:function size:0x4B0 +fn_1_8AF8 = .text:0x00008AF8; // type:function size:0x78 +fn_1_8B70 = .text:0x00008B70; // type:function size:0x11C +fn_1_8C8C = .text:0x00008C8C; // type:function size:0x78 +fn_1_8D04 = .text:0x00008D04; // type:function size:0x2D8 +fn_1_8FDC = .text:0x00008FDC; // type:function size:0x2B8 +fn_1_9294 = .text:0x00009294; // type:function size:0x154 +fn_1_93E8 = .text:0x000093E8; // type:function size:0x3E0 +fn_1_97C8 = .text:0x000097C8; // type:function size:0x214 +fn_1_99DC = .text:0x000099DC; // type:function size:0xA0 +fn_1_9A7C = .text:0x00009A7C; // type:function size:0xAC +fn_1_9B28 = .text:0x00009B28; // type:function size:0x30C +fn_1_9E34 = .text:0x00009E34; // type:function size:0xC0 +fn_1_9EF4 = .text:0x00009EF4; // type:function size:0x60 +fn_1_9F54 = .text:0x00009F54; // type:function size:0x54 +fn_1_9FA8 = .text:0x00009FA8; // type:function size:0x154 +fn_1_A0FC = .text:0x0000A0FC; // type:function size:0x58 +fn_1_A154 = .text:0x0000A154; // type:function size:0x3C0 +fn_1_A514 = .text:0x0000A514; // type:function size:0xF0C +fn_1_B420 = .text:0x0000B420; // type:function size:0x68 +fn_1_B488 = .text:0x0000B488; // type:function size:0x794 +fn_1_BC1C = .text:0x0000BC1C; // type:function size:0x2A40 +fn_1_E65C = .text:0x0000E65C; // type:function size:0xC +fn_1_E668 = .text:0x0000E668; // type:function size:0xA78 +fn_1_F0E0 = .text:0x0000F0E0; // type:function size:0x208 +fn_1_F2E8 = .text:0x0000F2E8; // type:function size:0xCC +fn_1_F3B4 = .text:0x0000F3B4; // type:function size:0x68 +fn_1_F41C = .text:0x0000F41C; // type:function size:0x58 +fn_1_F474 = .text:0x0000F474; // type:function size:0x40 +fn_1_F4B4 = .text:0x0000F4B4; // type:function size:0x18 +fn_1_F4CC = .text:0x0000F4CC; // type:function size:0x48 +fn_1_F514 = .text:0x0000F514; // type:function size:0x34 +fn_1_F548 = .text:0x0000F548; // type:function size:0x50 +fn_1_F598 = .text:0x0000F598; // type:function size:0x354 +fn_1_F8EC = .text:0x0000F8EC; // type:function size:0x300 +fn_1_FBEC = .text:0x0000FBEC; // type:function size:0x30C +fn_1_FEF8 = .text:0x0000FEF8; // type:function size:0x410 +fn_1_10308 = .text:0x00010308; // type:function size:0x288 +fn_1_10590 = .text:0x00010590; // type:function size:0x60 +fn_1_105F0 = .text:0x000105F0; // type:function size:0x58 +fn_1_10648 = .text:0x00010648; // type:function size:0xC0 +fn_1_10708 = .text:0x00010708; // type:function size:0xE0 +fn_1_107E8 = .text:0x000107E8; // type:function size:0x300 +fn_1_10AE8 = .text:0x00010AE8; // type:function size:0x58C +fn_1_11074 = .text:0x00011074; // type:function size:0x5E4 +fn_1_11658 = .text:0x00011658; // type:function size:0xCC +fn_1_11724 = .text:0x00011724; // type:function size:0x90 +fn_1_117B4 = .text:0x000117B4; // type:function size:0x44 +fn_1_117F8 = .text:0x000117F8; // type:function size:0x110 +fn_1_11908 = .text:0x00011908; // type:function size:0x88 +fn_1_11990 = .text:0x00011990; // type:function size:0x130 +fn_1_11AC0 = .text:0x00011AC0; // type:function size:0x1C0 +fn_1_11C80 = .text:0x00011C80; // type:function size:0x6C +fn_1_11CEC = .text:0x00011CEC; // type:function size:0x158 +fn_1_11E44 = .text:0x00011E44; // type:function size:0x470 +fn_1_122B4 = .text:0x000122B4; // type:function size:0x118 +fn_1_123CC = .text:0x000123CC; // type:function size:0x250 +fn_1_1261C = .text:0x0001261C; // type:function size:0x3F8 +fn_1_12A14 = .text:0x00012A14; // type:function size:0x78 +fn_1_12A8C = .text:0x00012A8C; // type:function size:0x78 +fn_1_12B04 = .text:0x00012B04; // type:function size:0x230 +fn_1_12D34 = .text:0x00012D34; // type:function size:0x4B0 +fn_1_131E4 = .text:0x000131E4; // type:function size:0x33C +fn_1_13520 = .text:0x00013520; // type:function size:0x8DC +fn_1_13DFC = .text:0x00013DFC; // type:function size:0x78 +fn_1_13E74 = .text:0x00013E74; // type:function size:0xB4 +fn_1_13F28 = .text:0x00013F28; // type:function size:0x8C +fn_1_13FB4 = .text:0x00013FB4; // type:function size:0x134 +fn_1_140E8 = .text:0x000140E8; // type:function size:0x4D8 +fn_1_145C0 = .text:0x000145C0; // type:function size:0x98 +fn_1_14658 = .text:0x00014658; // type:function size:0x98 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x8 scope:local data:double +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC +lbl_1_data_78 = .data:0x00000078; // type:object size:0x24 +lbl_1_data_9C = .data:0x0000009C; // type:object size:0xC +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xC +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4 +jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x48 data:byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x14 +lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 data:float +lbl_1_data_180 = .data:0x00000180; // type:object size:0x30 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2A0 +lbl_1_data_450 = .data:0x00000450; // type:object size:0x30 +lbl_1_data_480 = .data:0x00000480; // type:object size:0x30 +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0x50 data:float +lbl_1_data_500 = .data:0x00000500; // type:object size:0x60 +lbl_1_data_560 = .data:0x00000560; // type:object size:0x80 +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0x60 +lbl_1_data_640 = .data:0x00000640; // type:object size:0x10 +lbl_1_data_650 = .data:0x00000650; // type:object size:0x1 data:byte +lbl_1_data_654 = .data:0x00000654; // type:object size:0x1 data:byte +lbl_1_data_658 = .data:0x00000658; // type:object size:0x14 +jumptable_1_data_66C = .data:0x0000066C; // type:object size:0x28 scope:local +lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x4 +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x2 data:2byte +lbl_1_data_6A4 = .data:0x000006A4; // type:object size:0x30 +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x20 +lbl_1_data_6F4 = .data:0x000006F4; // type:object size:0x19 data:string +lbl_1_data_70D = .data:0x0000070D; // type:object size:0x5 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x10 data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x10 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x8 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 data:2byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:2byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x8 data:float +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x8 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x8 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x8 +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x80 +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x4 data:4byte +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte +lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x4 data:4byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x4 data:4byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x80 +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x80 +lbl_1_bss_244 = .bss:0x00000244; // type:object size:0x60 +lbl_1_bss_2A4 = .bss:0x000002A4; // type:object size:0x8 data:4byte +lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x4 data:4byte +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 data:4byte +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0x4 data:4byte +lbl_1_bss_2B8 = .bss:0x000002B8; // type:object size:0x4 data:4byte +lbl_1_bss_2BC = .bss:0x000002BC; // type:object size:0x4 data:4byte +lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0x10 +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x8 +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m429Dll/splits.txt b/config/GMPP01_00/rels/m429Dll/splits.txt new file mode 100644 index 00000000..eddadec6 --- /dev/null +++ b/config/GMPP01_00/rels/m429Dll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m429Dll/main.c: + .text start:0x00000000 end:0x0000EA18 + .rodata start:0x00000000 end:0x00000198 + .data start:0x00000000 end:0x00001510 + .bss start:0x00000000 end:0x00000364 diff --git a/config/GMPP01_00/rels/m429Dll/symbols.txt b/config/GMPP01_00/rels/m429Dll/symbols.txt new file mode 100644 index 00000000..5ec24090 --- /dev/null +++ b/config/GMPP01_00/rels/m429Dll/symbols.txt @@ -0,0 +1,318 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x204 +fn_1_798 = .text:0x00000784; // type:function size:0x240 +fn_1_9EC = .text:0x000009C4; // type:function size:0x54 +fn_1_A40 = .text:0x00000A18; // type:function size:0x10C +fn_1_B4C = .text:0x00000B24; // type:function size:0x680 +fn_1_11F4 = .text:0x000011A4; // type:function size:0x15C +fn_1_1350 = .text:0x00001300; // type:function size:0x8C +fn_1_13DC = .text:0x0000138C; // type:function size:0x334 +fn_1_1710 = .text:0x000016C0; // type:function size:0x350 +fn_1_1A60 = .text:0x00001A10; // type:function size:0x2B8 +fn_1_1D18 = .text:0x00001CC8; // type:function size:0x58 +fn_1_1D70 = .text:0x00001D20; // type:function size:0xB0 +fn_1_1E20 = .text:0x00001DD0; // type:function size:0x104 +fn_1_1F24 = .text:0x00001ED4; // type:function size:0x34 +fn_1_1F58 = .text:0x00001F08; // type:function size:0x6C +fn_1_1FC4 = .text:0x00001F74; // type:function size:0x3F0 +fn_1_23B4 = .text:0x00002364; // type:function size:0x260 +fn_1_2614 = .text:0x000025C4; // type:function size:0x70 +fn_1_2684 = .text:0x00002634; // type:function size:0x2CC +fn_1_2950 = .text:0x00002900; // type:function size:0x290 +fn_1_2BE0 = .text:0x00002B90; // type:function size:0x234 +fn_1_2E14 = .text:0x00002DC4; // type:function size:0xD8 +fn_1_2EEC = .text:0x00002E9C; // type:function size:0x2BC +fn_1_31A8 = .text:0x00003158; // type:function size:0x4 +fn_1_31AC = .text:0x0000315C; // type:function size:0xD8 +fn_1_3284 = .text:0x00003234; // type:function size:0x174 +fn_1_33F8 = .text:0x000033A8; // type:function size:0x304 +fn_1_36FC = .text:0x000036AC; // type:function size:0x170 +fn_1_386C = .text:0x0000381C; // type:function size:0x560 +fn_1_3DCC = .text:0x00003D7C; // type:function size:0x254 +_prolog = .text:0x00003FD0; // type:function size:0x54 scope:global +_epilog = .text:0x00004024; // type:function size:0x4C scope:global +fn_1_40C0 = .text:0x00004070; // type:function size:0x164 +fn_1_4224 = .text:0x000041D4; // type:function size:0xBCC +fn_1_4DF0 = .text:0x00004DA0; // type:function size:0x60 +fn_1_4E50 = .text:0x00004E00; // type:function size:0x25C +fn_1_50AC = .text:0x0000505C; // type:function size:0x410 +fn_1_54BC = .text:0x0000546C; // type:function size:0x380 +fn_1_583C = .text:0x000057EC; // type:function size:0x120 +fn_1_595C = .text:0x0000590C; // type:function size:0x380 +fn_1_5CDC = .text:0x00005C8C; // type:function size:0x268 +fn_1_5F44 = .text:0x00005EF4; // type:function size:0x1154 +fn_1_7098 = .text:0x00007048; // type:function size:0x158 +fn_1_71F0 = .text:0x000071A0; // type:function size:0xB48 +fn_1_7D38 = .text:0x00007CE8; // type:function size:0x1230 +fn_1_8F68 = .text:0x00008F18; // type:function size:0xA84 +fn_1_99EC = .text:0x0000999C; // type:function size:0x4 +fn_1_99F0 = .text:0x000099A0; // type:function size:0x1BC +fn_1_9BAC = .text:0x00009B5C; // type:function size:0x340 +fn_1_9EEC = .text:0x00009E9C; // type:function size:0x1BC +fn_1_A0A8 = .text:0x0000A058; // type:function size:0x70 +fn_1_A118 = .text:0x0000A0C8; // type:function size:0x470 +fn_1_A588 = .text:0x0000A538; // type:function size:0x22C +fn_1_A7B4 = .text:0x0000A764; // type:function size:0x5C0 +fn_1_AD74 = .text:0x0000AD24; // type:function size:0x2A8 +fn_1_B01C = .text:0x0000AFCC; // type:function size:0x738 +fn_1_B754 = .text:0x0000B704; // type:function size:0x18C +fn_1_B8E0 = .text:0x0000B890; // type:function size:0x1D00 +fn_1_D5E8 = .text:0x0000D590; // type:function size:0x6B4 +ObjectSetup = .text:0x0000DC44; // type:function size:0xCD0 +fn_1_E96C = .text:0x0000E914; // type:function size:0x104 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0xD scope:local data:string +lbl_1_data_1D = .data:0x0000001D; // type:object size:0xE scope:local data:string +lbl_1_data_2B = .data:0x0000002B; // type:object size:0xE scope:local data:string +lbl_1_data_39 = .data:0x00000039; // type:object size:0xE scope:local data:string +lbl_1_data_47 = .data:0x00000047; // type:object size:0xD scope:local data:string +lbl_1_data_54 = .data:0x00000054; // type:object size:0xD scope:local data:string +lbl_1_data_61 = .data:0x00000061; // type:object size:0xE scope:local data:string +lbl_1_data_6F = .data:0x0000006F; // type:object size:0xE scope:local data:string +lbl_1_data_7D = .data:0x0000007D; // type:object size:0xE scope:local data:string +lbl_1_data_8B = .data:0x0000008B; // type:object size:0xD scope:local data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0xE scope:local data:string +lbl_1_data_A6 = .data:0x000000A6; // type:object size:0xE scope:local data:string +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0xE scope:local data:string +lbl_1_data_C2 = .data:0x000000C2; // type:object size:0xD scope:local data:string +lbl_1_data_CF = .data:0x000000CF; // type:object size:0xD scope:local data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xD scope:local data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0xD scope:local data:string +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0xE scope:local data:string +lbl_1_data_104 = .data:0x00000104; // type:object size:0xE scope:local data:string +lbl_1_data_112 = .data:0x00000112; // type:object size:0xE scope:local data:string +lbl_1_data_120 = .data:0x00000120; // type:object size:0xE scope:local data:string +lbl_1_data_12E = .data:0x0000012E; // type:object size:0xE scope:local data:string +lbl_1_data_13C = .data:0x0000013C; // type:object size:0xE scope:local data:string +lbl_1_data_14A = .data:0x0000014A; // type:object size:0xE scope:local data:string +lbl_1_data_158 = .data:0x00000158; // type:object size:0xE scope:local data:string +lbl_1_data_166 = .data:0x00000166; // type:object size:0xE scope:local data:string +lbl_1_data_174 = .data:0x00000174; // type:object size:0xE scope:local data:string +lbl_1_data_182 = .data:0x00000182; // type:object size:0xE scope:local data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0xE scope:local data:string +lbl_1_data_19E = .data:0x0000019E; // type:object size:0xE scope:local data:string +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0xE scope:local data:string +lbl_1_data_1BA = .data:0x000001BA; // type:object size:0xE scope:local data:string +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0xE scope:local data:string +lbl_1_data_1D6 = .data:0x000001D6; // type:object size:0xE scope:local data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xE scope:local data:string +lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xE scope:local data:string +lbl_1_data_200 = .data:0x00000200; // type:object size:0xE scope:local data:string +lbl_1_data_20E = .data:0x0000020E; // type:object size:0xE scope:local data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xE scope:local data:string +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x57C +lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0xD scope:local data:string +lbl_1_data_7B5 = .data:0x000007B5; // type:object size:0xD scope:local data:string +lbl_1_data_7C2 = .data:0x000007C2; // type:object size:0xD scope:local data:string +lbl_1_data_7CF = .data:0x000007CF; // type:object size:0xE scope:local data:string +lbl_1_data_7DD = .data:0x000007DD; // type:object size:0xE scope:local data:string +lbl_1_data_7EB = .data:0x000007EB; // type:object size:0xE scope:local data:string +lbl_1_data_7F9 = .data:0x000007F9; // type:object size:0xE scope:local data:string +lbl_1_data_807 = .data:0x00000807; // type:object size:0xD scope:local data:string +lbl_1_data_814 = .data:0x00000814; // type:object size:0xD scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0xD scope:local data:string +lbl_1_data_82E = .data:0x0000082E; // type:object size:0xE scope:local data:string +lbl_1_data_83C = .data:0x0000083C; // type:object size:0xE scope:local data:string +lbl_1_data_84A = .data:0x0000084A; // type:object size:0xD scope:local data:string +lbl_1_data_857 = .data:0x00000857; // type:object size:0xD scope:local data:string +lbl_1_data_864 = .data:0x00000864; // type:object size:0xD scope:local data:string +lbl_1_data_871 = .data:0x00000871; // type:object size:0xE scope:local data:string +lbl_1_data_87F = .data:0x0000087F; // type:object size:0xE scope:local data:string +lbl_1_data_88D = .data:0x0000088D; // type:object size:0xE scope:local data:string +lbl_1_data_89B = .data:0x0000089B; // type:object size:0xE scope:local data:string +lbl_1_data_8A9 = .data:0x000008A9; // type:object size:0xE scope:local data:string +lbl_1_data_8B7 = .data:0x000008B7; // type:object size:0xE scope:local data:string +lbl_1_data_8C5 = .data:0x000008C5; // type:object size:0xE scope:local data:string +lbl_1_data_8D3 = .data:0x000008D3; // type:object size:0xE scope:local data:string +lbl_1_data_8E1 = .data:0x000008E1; // type:object size:0xE scope:local data:string +lbl_1_data_8EF = .data:0x000008EF; // type:object size:0xE scope:local data:string +lbl_1_data_8FD = .data:0x000008FD; // type:object size:0xE scope:local data:string +lbl_1_data_90B = .data:0x0000090B; // type:object size:0xE scope:local data:string +lbl_1_data_919 = .data:0x00000919; // type:object size:0xE scope:local data:string +lbl_1_data_927 = .data:0x00000927; // type:object size:0xE scope:local data:string +lbl_1_data_935 = .data:0x00000935; // type:object size:0xE scope:local data:string +lbl_1_data_943 = .data:0x00000943; // type:object size:0xE scope:local data:string +lbl_1_data_951 = .data:0x00000951; // type:object size:0xE scope:local data:string +lbl_1_data_95F = .data:0x0000095F; // type:object size:0xE scope:local data:string +lbl_1_data_96D = .data:0x0000096D; // type:object size:0xE scope:local data:string +lbl_1_data_97B = .data:0x0000097B; // type:object size:0xE scope:local data:string +lbl_1_data_989 = .data:0x00000989; // type:object size:0xE scope:local data:string +lbl_1_data_997 = .data:0x00000997; // type:object size:0xE scope:local data:string +lbl_1_data_9A5 = .data:0x000009A5; // type:object size:0xE scope:local data:string +lbl_1_data_9B3 = .data:0x000009B3; // type:object size:0xE scope:local data:string +lbl_1_data_9C1 = .data:0x000009C1; // type:object size:0xE scope:local data:string +lbl_1_data_9CF = .data:0x000009CF; // type:object size:0xE scope:local data:string +lbl_1_data_9DD = .data:0x000009DD; // type:object size:0xF scope:local +lbl_1_data_9EC = .data:0x000009EC; // type:object size:0x5E8 +lbl_1_data_FD4 = .data:0x00000FD4; // type:object size:0xC +lbl_1_data_FE0 = .data:0x00000FE0; // type:object size:0xC +lbl_1_data_FEC = .data:0x00000FEC; // type:object size:0x10 +lbl_1_data_FFC = .data:0x00000FFC; // type:object size:0x40 +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x40 data:float +lbl_1_data_107C = .data:0x0000107C; // type:object size:0x40 +lbl_1_data_10BC = .data:0x000010BC; // type:object size:0x40 +lbl_1_data_10FC = .data:0x000010FC; // type:object size:0x20 +lbl_1_data_111C = .data:0x0000111C; // type:object size:0xC +lbl_1_data_1128 = .data:0x00001128; // type:object size:0xC +lbl_1_data_1134 = .data:0x00001134; // type:object size:0x4 +lbl_1_data_1138 = .data:0x00001138; // type:object size:0xC +lbl_1_data_1144 = .data:0x00001144; // type:object size:0xC +lbl_1_data_1150 = .data:0x00001150; // type:object size:0x140 +lbl_1_data_1290 = .data:0x00001290; // type:object size:0x20 +lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x20 +lbl_1_data_12D0 = .data:0x000012D0; // type:object size:0x10 +lbl_1_data_12E0 = .data:0x000012E0; // type:object size:0x30 +lbl_1_data_1310 = .data:0x00001310; // type:object size:0x10 +lbl_1_data_1320 = .data:0x00001320; // type:object size:0x10 +lbl_1_data_1330 = .data:0x00001330; // type:object size:0x10 +lbl_1_data_1340 = .data:0x00001340; // type:object size:0x48 +lbl_1_data_1388 = .data:0x00001388; // type:object size:0x20 +lbl_1_data_13A8 = .data:0x000013A8; // type:object size:0x10 +lbl_1_data_13B8 = .data:0x000013B8; // type:object size:0x10 +lbl_1_data_13C8 = .data:0x000013C8; // type:object size:0x10 +lbl_1_data_13D8 = .data:0x000013D8; // type:object size:0x10 +lbl_1_data_13E8 = .data:0x000013E8; // type:object size:0x50 +lbl_1_data_1438 = .data:0x00001438; // type:object size:0x21 scope:local data:string +lbl_1_data_1459 = .data:0x00001459; // type:object size:0x1F scope:local +jumptable_1_data_1478 = .data:0x00001478; // type:object size:0x24 scope:local +lbl_1_data_149C = .data:0x0000149C; // type:object size:0x1B scope:local data:string +jumptable_1_data_14B8 = .data:0x000014B8; // type:object size:0x34 scope:local +lbl_1_data_14EC = .data:0x000014EC; // type:object size:0x24 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0xA data:2byte +lbl_1_bss_1A = .bss:0x0000001A; // type:object size:0x2 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x30 +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x30 +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x30 +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x30 +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x18 data:float +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:float +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:float +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:float +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:float +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:float +lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x4 data:float +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:float +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:float +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x60 +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x4 data:4byte +lbl_1_bss_198 = .bss:0x00000198; // type:object size:0x4 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 data:4byte +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x4 data:4byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x100 +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x40 data:4byte +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0x4 data:float +lbl_1_bss_2F4 = .bss:0x000002F4; // type:object size:0x4 data:4byte +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x4 data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0x2 data:2byte +lbl_1_bss_2FE = .bss:0x000002FE; // type:object size:0x2 data:2byte +lbl_1_bss_300 = .bss:0x00000300; // type:object size:0x4 data:4byte +lbl_1_bss_304 = .bss:0x00000304; // type:object size:0x4 data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0xC data:float +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0xC data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0xC data:float +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0xC data:4byte +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x4 data:4byte +lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x18 data:4byte +lbl_1_bss_358 = .bss:0x00000358; // type:object size:0xC data:4byte diff --git a/config/GMPP01_00/rels/m430Dll/splits.txt b/config/GMPP01_00/rels/m430Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m430Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m430Dll/symbols.txt b/config/GMPP01_00/rels/m430Dll/symbols.txt new file mode 100644 index 00000000..e3b8f841 --- /dev/null +++ b/config/GMPP01_00/rels/m430Dll/symbols.txt @@ -0,0 +1,490 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x630 +fn_1_6D0 = .text:0x000006D0; // type:function size:0xC4 +fn_1_794 = .text:0x00000794; // type:function size:0x334 +fn_1_AC8 = .text:0x00000AC8; // type:function size:0x144 +fn_1_C0C = .text:0x00000C0C; // type:function size:0x564 +fn_1_1170 = .text:0x00001170; // type:function size:0x590 +fn_1_1700 = .text:0x00001700; // type:function size:0x478 +fn_1_1B78 = .text:0x00001B78; // type:function size:0x6E0 +fn_1_2258 = .text:0x00002258; // type:function size:0x52C +fn_1_2784 = .text:0x00002784; // type:function size:0x638 +fn_1_2DBC = .text:0x00002DBC; // type:function size:0x138 +fn_1_2EF4 = .text:0x00002EF4; // type:function size:0x81C +fn_1_3710 = .text:0x00003710; // type:function size:0xCC +fn_1_37DC = .text:0x000037DC; // type:function size:0x8C8 +fn_1_40A4 = .text:0x000040A4; // type:function size:0x10 +fn_1_40B4 = .text:0x000040B4; // type:function size:0x18 +fn_1_40CC = .text:0x000040CC; // type:function size:0x18 +fn_1_40E4 = .text:0x000040E4; // type:function size:0x18 +fn_1_40FC = .text:0x000040FC; // type:function size:0x18 +fn_1_4114 = .text:0x00004114; // type:function size:0x18 +fn_1_412C = .text:0x0000412C; // type:function size:0x18 +fn_1_4144 = .text:0x00004144; // type:function size:0x30 +fn_1_4174 = .text:0x00004174; // type:function size:0x30 +fn_1_41A4 = .text:0x000041A4; // type:function size:0xC0 +fn_1_4264 = .text:0x00004264; // type:function size:0x348 +fn_1_45AC = .text:0x000045AC; // type:function size:0x378 +fn_1_4924 = .text:0x00004924; // type:function size:0x11C +fn_1_4A40 = .text:0x00004A40; // type:function size:0xB4 +fn_1_4AF4 = .text:0x00004AF4; // type:function size:0x1C8 +fn_1_4CBC = .text:0x00004CBC; // type:function size:0x6C +fn_1_4D28 = .text:0x00004D28; // type:function size:0x1144 +fn_1_5E6C = .text:0x00005E6C; // type:function size:0x388 +fn_1_61F4 = .text:0x000061F4; // type:function size:0x3C0 +fn_1_65B4 = .text:0x000065B4; // type:function size:0x214 +fn_1_67C8 = .text:0x000067C8; // type:function size:0x674 +fn_1_6E3C = .text:0x00006E3C; // type:function size:0x2E4 +fn_1_7120 = .text:0x00007120; // type:function size:0x280 +fn_1_73A0 = .text:0x000073A0; // type:function size:0x3AC +fn_1_774C = .text:0x0000774C; // type:function size:0x170 +fn_1_78BC = .text:0x000078BC; // type:function size:0x464 +fn_1_7D20 = .text:0x00007D20; // type:function size:0x200 +fn_1_7F20 = .text:0x00007F20; // type:function size:0x110 +fn_1_8030 = .text:0x00008030; // type:function size:0x40 +fn_1_8070 = .text:0x00008070; // type:function size:0x40 +fn_1_80B0 = .text:0x000080B0; // type:function size:0x228 +fn_1_82D8 = .text:0x000082D8; // type:function size:0x90 +fn_1_8368 = .text:0x00008368; // type:function size:0x3C0 +fn_1_8728 = .text:0x00008728; // type:function size:0x4A8 +fn_1_8BD0 = .text:0x00008BD0; // type:function size:0x184 +fn_1_8D54 = .text:0x00008D54; // type:function size:0x95C +fn_1_96B0 = .text:0x000096B0; // type:function size:0x654 +fn_1_9D04 = .text:0x00009D04; // type:function size:0x718 +fn_1_A41C = .text:0x0000A41C; // type:function size:0x7F0 +fn_1_AC0C = .text:0x0000AC0C; // type:function size:0xEC +fn_1_ACF8 = .text:0x0000ACF8; // type:function size:0x80 +fn_1_AD78 = .text:0x0000AD78; // type:function size:0x1DC +fn_1_AF54 = .text:0x0000AF54; // type:function size:0x4B4 +fn_1_B408 = .text:0x0000B408; // type:function size:0x1DC +fn_1_B5E4 = .text:0x0000B5E4; // type:function size:0x5E4 +fn_1_BBC8 = .text:0x0000BBC8; // type:function size:0x34 +fn_1_BBFC = .text:0x0000BBFC; // type:function size:0x10 +fn_1_BC0C = .text:0x0000BC0C; // type:function size:0x2C +fn_1_BC38 = .text:0x0000BC38; // type:function size:0x260 +fn_1_BE98 = .text:0x0000BE98; // type:function size:0x1E8 +fn_1_C080 = .text:0x0000C080; // type:function size:0x34 +fn_1_C0B4 = .text:0x0000C0B4; // type:function size:0x1A4 +fn_1_C258 = .text:0x0000C258; // type:function size:0x858 +fn_1_CAB0 = .text:0x0000CAB0; // type:function size:0x894 +fn_1_D344 = .text:0x0000D344; // type:function size:0x558 +fn_1_D89C = .text:0x0000D89C; // type:function size:0x10D4 +fn_1_E970 = .text:0x0000E970; // type:function size:0x7DC +fn_1_F14C = .text:0x0000F14C; // type:function size:0x554 +fn_1_F6A0 = .text:0x0000F6A0; // type:function size:0x74 +fn_1_F714 = .text:0x0000F714; // type:function size:0x5FC +fn_1_FD10 = .text:0x0000FD10; // type:function size:0x404 +fn_1_10114 = .text:0x00010114; // type:function size:0x29C +fn_1_103B0 = .text:0x000103B0; // type:function size:0x200 +fn_1_105B0 = .text:0x000105B0; // type:function size:0x4 +fn_1_105B4 = .text:0x000105B4; // type:function size:0x4C +fn_1_10600 = .text:0x00010600; // type:function size:0x2C +fn_1_1062C = .text:0x0001062C; // type:function size:0x64 +fn_1_10690 = .text:0x00010690; // type:function size:0x32C +fn_1_109BC = .text:0x000109BC; // type:function size:0x240 +fn_1_10BFC = .text:0x00010BFC; // type:function size:0x194 +fn_1_10D90 = .text:0x00010D90; // type:function size:0x204 +fn_1_10F94 = .text:0x00010F94; // type:function size:0x4 +fn_1_10F98 = .text:0x00010F98; // type:function size:0x184 +fn_1_1111C = .text:0x0001111C; // type:function size:0x114 +fn_1_11230 = .text:0x00011230; // type:function size:0x158 +fn_1_11388 = .text:0x00011388; // type:function size:0x98 +fn_1_11420 = .text:0x00011420; // type:function size:0x144 +fn_1_11564 = .text:0x00011564; // type:function size:0x154 +fn_1_116B8 = .text:0x000116B8; // type:function size:0x4 +fn_1_116BC = .text:0x000116BC; // type:function size:0x15C +fn_1_11818 = .text:0x00011818; // type:function size:0x278 +fn_1_11A90 = .text:0x00011A90; // type:function size:0x148 +fn_1_11BD8 = .text:0x00011BD8; // type:function size:0x30 +fn_1_11C08 = .text:0x00011C08; // type:function size:0x88 +fn_1_11C90 = .text:0x00011C90; // type:function size:0x154 +fn_1_11DE4 = .text:0x00011DE4; // type:function size:0x1F0 +fn_1_11FD4 = .text:0x00011FD4; // type:function size:0x30 +fn_1_12004 = .text:0x00012004; // type:function size:0x5C0 +fn_1_125C4 = .text:0x000125C4; // type:function size:0x74 +fn_1_12638 = .text:0x00012638; // type:function size:0x408 +fn_1_12A40 = .text:0x00012A40; // type:function size:0x3A8 +fn_1_12DE8 = .text:0x00012DE8; // type:function size:0x7C +fn_1_12E64 = .text:0x00012E64; // type:function size:0xB8 +fn_1_12F1C = .text:0x00012F1C; // type:function size:0x78 +fn_1_12F94 = .text:0x00012F94; // type:function size:0x11C +fn_1_130B0 = .text:0x000130B0; // type:function size:0x118 +fn_1_131C8 = .text:0x000131C8; // type:function size:0x250 +fn_1_13418 = .text:0x00013418; // type:function size:0x38 +fn_1_13450 = .text:0x00013450; // type:function size:0xB4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x10 data:4byte +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x10 data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x10 data:4byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x10 data:4byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x18 data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:4byte +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0xC data:4byte +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0xC data:4byte +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0xC data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC data:4byte +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x18 data:4byte +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x30 data:4byte +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x18 data:4byte +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x8 data:4byte +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x8 data:4byte +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x20 data:4byte +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x14 data:4byte +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x10 data:4byte +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x10 data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x1 data:byte +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x1 data:byte +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x1 data:byte +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x1 data:byte +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x1 data:byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x1 data:byte +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x1 data:byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x1 data:byte +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:4byte +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:4byte +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 data:double +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:double +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x8 data:double +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x8 data:double +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 data:double +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x8 data:double +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x8 data:double +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x8 data:double +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 data:double +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:double +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:double +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:double +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x4 data:float +lbl_1_rodata_6CC = .rodata:0x000006CC; // type:object size:0x4 data:float +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0x10 data:float +lbl_1_data_50 = .data:0x00000050; // type:object size:0x7 data:string +lbl_1_data_57 = .data:0x00000057; // type:object size:0x9 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x18 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x60 +lbl_1_data_120 = .data:0x00000120; // type:object size:0x48 +lbl_1_data_168 = .data:0x00000168; // type:object size:0x8 +lbl_1_data_170 = .data:0x00000170; // type:object size:0x38 +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x20 +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x14 +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x1C +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x60 +lbl_1_data_258 = .data:0x00000258; // type:object size:0x20 +lbl_1_data_278 = .data:0x00000278; // type:object size:0x8 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x8 +lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x8 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x54 +lbl_1_data_300 = .data:0x00000300; // type:object size:0x8 data:4byte +lbl_1_data_308 = .data:0x00000308; // type:object size:0x4 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte +lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x2 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x6 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:float +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:float +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0xE0 data:4byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x4 data:4byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x4 data:4byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x8 data:4byte +lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x4 data:4byte +lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x4 data:4byte +lbl_1_bss_160 = .bss:0x00000160; // type:object size:0x4 data:4byte +lbl_1_bss_164 = .bss:0x00000164; // type:object size:0x4 data:4byte +lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x4 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x4 data:4byte +lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x4 data:4byte +lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte +lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte +lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m431Dll/splits.txt b/config/GMPP01_00/rels/m431Dll/splits.txt new file mode 100644 index 00000000..ad48912a --- /dev/null +++ b/config/GMPP01_00/rels/m431Dll/splits.txt @@ -0,0 +1,22 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m431Dll/main.c: + .text start:0x000000A0 end:0x00007AB8 + .rodata start:0x00000000 end:0x00000180 + .data start:0x00000000 end:0x000001D0 + .bss start:0x00000000 end:0x00000098 + +REL/m431Dll/object.c: + .text start:0x00007AB8 end:0x0000B57C + .rodata start:0x00000180 end:0x0000022C + .data start:0x000001D0 end:0x0000026C + .bss start:0x00000098 end:0x0000067C diff --git a/config/GMPP01_00/rels/m431Dll/symbols.txt b/config/GMPP01_00/rels/m431Dll/symbols.txt new file mode 100644 index 00000000..a67c25d3 --- /dev/null +++ b/config/GMPP01_00/rels/m431Dll/symbols.txt @@ -0,0 +1,253 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x384 +fn_1_424 = .text:0x00000424; // type:function size:0x78 +fn_1_49C = .text:0x0000049C; // type:function size:0xE0 +fn_1_57C = .text:0x0000057C; // type:function size:0x234 +fn_1_7B0 = .text:0x000007B0; // type:function size:0x294 +fn_1_A44 = .text:0x00000A44; // type:function size:0x660 +fn_1_10A4 = .text:0x000010A4; // type:function size:0x364 +fn_1_140C = .text:0x00001408; // type:function size:0x228 +fn_1_1634 = .text:0x00001630; // type:function size:0x40C +fn_1_1A40 = .text:0x00001A3C; // type:function size:0x5C0 +fn_1_2000 = .text:0x00001FFC; // type:function size:0x50 +fn_1_2050 = .text:0x0000204C; // type:function size:0x40 +fn_1_2090 = .text:0x0000208C; // type:function size:0x40 +fn_1_20D0 = .text:0x000020CC; // type:function size:0x40 +fn_1_2110 = .text:0x0000210C; // type:function size:0x9A0 +fn_1_2AB0 = .text:0x00002AAC; // type:function size:0x10 +fn_1_2AC0 = .text:0x00002ABC; // type:function size:0x1D4 +fn_1_2C94 = .text:0x00002C90; // type:function size:0x44C +fn_1_30E0 = .text:0x000030DC; // type:function size:0x460 +fn_1_3540 = .text:0x0000353C; // type:function size:0x83C +fn_1_3D7C = .text:0x00003D78; // type:function size:0x254 +fn_1_3FD0 = .text:0x00003FCC; // type:function size:0x58 +fn_1_4028 = .text:0x00004024; // type:function size:0x6FC +fn_1_4724 = .text:0x00004720; // type:function size:0x14 +fn_1_4738 = .text:0x00004734; // type:function size:0x60 +fn_1_4798 = .text:0x00004794; // type:function size:0x138 +fn_1_48D0 = .text:0x000048CC; // type:function size:0xBC +fn_1_498C = .text:0x00004988; // type:function size:0x188 +fn_1_4B14 = .text:0x00004B10; // type:function size:0x1C8 +fn_1_4CDC = .text:0x00004CD8; // type:function size:0x70 +fn_1_4D4C = .text:0x00004D48; // type:function size:0xE4 +fn_1_4E30 = .text:0x00004E2C; // type:function size:0x4A8 +fn_1_52D8 = .text:0x000052D4; // type:function size:0x1A8 +fn_1_5480 = .text:0x0000547C; // type:function size:0xA4 +fn_1_5524 = .text:0x00005520; // type:function size:0x148 +fn_1_566C = .text:0x00005668; // type:function size:0x9C +fn_1_5708 = .text:0x00005704; // type:function size:0x468 +fn_1_5B70 = .text:0x00005B6C; // type:function size:0x4C0 +fn_1_6030 = .text:0x0000602C; // type:function size:0x154 +fn_1_6184 = .text:0x00006180; // type:function size:0x380 +fn_1_6504 = .text:0x00006500; // type:function size:0xC8 +fn_1_65CC = .text:0x000065C8; // type:function size:0x10 +fn_1_65DC = .text:0x000065D8; // type:function size:0x5C +fn_1_6638 = .text:0x00006634; // type:function size:0xA4 +fn_1_66DC = .text:0x000066D8; // type:function size:0xE4 +fn_1_67C0 = .text:0x000067BC; // type:function size:0x374 +fn_1_6B34 = .text:0x00006B30; // type:function size:0x140 +fn_1_6C74 = .text:0x00006C70; // type:function size:0x544 +fn_1_71B8 = .text:0x000071B4; // type:function size:0x60 +fn_1_7218 = .text:0x00007214; // type:function size:0x2C +fn_1_7244 = .text:0x00007240; // type:function size:0x38 +fn_1_727C = .text:0x00007278; // type:function size:0x38 +fn_1_72B4 = .text:0x000072B0; // type:function size:0x570 +fn_1_7824 = .text:0x00007820; // type:function size:0xCC +fn_1_78F0 = .text:0x000078EC; // type:function size:0xA4 +fn_1_7994 = .text:0x00007990; // type:function size:0x68 +fn_1_79FC = .text:0x000079F8; // type:function size:0x7C +fn_1_7A78 = .text:0x00007A74; // type:function size:0x44 +fn_1_7ABC = .text:0x00007AB8; // type:function size:0x4FC +fn_1_7FB8 = .text:0x00007FB4; // type:function size:0x4BC +fn_1_8474 = .text:0x00008470; // type:function size:0x118 +fn_1_858C = .text:0x00008588; // type:function size:0x204 +fn_1_8790 = .text:0x0000878C; // type:function size:0x344 +fn_1_8AD4 = .text:0x00008AD0; // type:function size:0x1EC +fn_1_8CC0 = .text:0x00008CBC; // type:function size:0x6CC +fn_1_938C = .text:0x00009388; // type:function size:0xB4 +fn_1_9440 = .text:0x0000943C; // type:function size:0x494 +fn_1_98D4 = .text:0x000098D0; // type:function size:0x130 +fn_1_9A04 = .text:0x00009A00; // type:function size:0x278 +fn_1_9C5C = .text:0x00009C78; // type:function size:0x49C +fn_1_A0F8 = .text:0x0000A114; // type:function size:0x360 +fn_1_A450 = .text:0x0000A474; // type:function size:0x380 +fn_1_A7D0 = .text:0x0000A7F4; // type:function size:0x134 +fn_1_A904 = .text:0x0000A928; // type:function size:0x13C +fn_1_AA40 = .text:0x0000AA64; // type:function size:0xB0 +fn_1_AAF0 = .text:0x0000AB14; // type:function size:0xB0 +fn_1_ABA0 = .text:0x0000ABC4; // type:function size:0x20 +fn_1_ABC0 = .text:0x0000ABE4; // type:function size:0x30 +fn_1_ABF0 = .text:0x0000AC14; // type:function size:0x90 +fn_1_AC80 = .text:0x0000ACA4; // type:function size:0x108 +fn_1_AD88 = .text:0x0000ADAC; // type:function size:0x7C +fn_1_AE04 = .text:0x0000AE28; // type:function size:0x2E4 +fn_1_B0E8 = .text:0x0000B10C; // type:function size:0x48 +fn_1_B130 = .text:0x0000B154; // type:function size:0x20 +fn_1_B150 = .text:0x0000B174; // type:function size:0x1C +fn_1_B16C = .text:0x0000B190; // type:function size:0x20 +fn_1_B18C = .text:0x0000B1B0; // type:function size:0x1F8 +fn_1_B384 = .text:0x0000B3A8; // type:function size:0x80 +fn_1_B404 = .text:0x0000B428; // type:function size:0x90 +fn_1_B494 = .text:0x0000B4B8; // type:function size:0x64 +fn_1_B4F8 = .text:0x0000B51C; // type:function size:0x38 +fn_1_B530 = .text:0x0000B554; // type:function size:0x28 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:2byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x70 data:float +lbl_1_data_BC = .data:0x000000BC; // type:object size:0xC +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x8 data:4byte +jumptable_1_data_D0 = .data:0x000000D0; // type:object size:0x44 scope:local +lbl_1_data_114 = .data:0x00000114; // type:object size:0x10 +lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x14 +lbl_1_data_148 = .data:0x00000148; // type:object size:0x14 +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x6 scope:local data:string +lbl_1_data_162 = .data:0x00000162; // type:object size:0x2 data:2byte +lbl_1_data_164 = .data:0x00000164; // type:object size:0x4 data:4byte +lbl_1_data_168 = .data:0x00000168; // type:object size:0xC data:float +lbl_1_data_174 = .data:0x00000174; // type:object size:0x10 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x26 scope:local data:string +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x24 scope:local data:string +lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x4 data:float +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0x20 data:float +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x20 +lbl_1_data_214 = .data:0x00000214; // type:object size:0x19 scope:local data:string +lbl_1_data_230 = .data:0x00000230; // type:object size:0x20 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x10 scope:local +lbl_1_data_260 = .data:0x00000260; // type:object size:0x8 +lbl_1_data_268 = .data:0x00000268; // type:object size:0x4 data:2byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte +lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x2 data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x1 data:byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x1 data:byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:float +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x28 +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x38 data:2byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x1 data:byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x10 +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x80 data:4byte +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4F0 data:2byte +lbl_1_bss_61C = .bss:0x0000061C; // type:object size:0x10 +lbl_1_bss_62C = .bss:0x0000062C; // type:object size:0x50 data:float diff --git a/config/GMPP01_00/rels/m432Dll/splits.txt b/config/GMPP01_00/rels/m432Dll/splits.txt new file mode 100644 index 00000000..ff3ccc71 --- /dev/null +++ b/config/GMPP01_00/rels/m432Dll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m432Dll/main.c: + .text start:0x00000000 end:0x000160D8 + .rodata start:0x00000000 end:0x00000234 + .data start:0x00000000 end:0x000019F8 + .bss start:0x00000000 end:0x000005DC diff --git a/config/GMPP01_00/rels/m432Dll/symbols.txt b/config/GMPP01_00/rels/m432Dll/symbols.txt new file mode 100644 index 00000000..ea91fc89 --- /dev/null +++ b/config/GMPP01_00/rels/m432Dll/symbols.txt @@ -0,0 +1,360 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x204 +fn_1_798 = .text:0x00000784; // type:function size:0x240 +fn_1_9EC = .text:0x000009C4; // type:function size:0x54 +fn_1_A40 = .text:0x00000A18; // type:function size:0x10C +fn_1_B4C = .text:0x00000B24; // type:function size:0x680 +fn_1_11F4 = .text:0x000011A4; // type:function size:0x15C +fn_1_1350 = .text:0x00001300; // type:function size:0x8C +fn_1_13DC = .text:0x0000138C; // type:function size:0x334 +fn_1_1710 = .text:0x000016C0; // type:function size:0x350 +fn_1_1A60 = .text:0x00001A10; // type:function size:0x2B8 +fn_1_1D18 = .text:0x00001CC8; // type:function size:0x58 +fn_1_1D70 = .text:0x00001D20; // type:function size:0xB0 +fn_1_1E20 = .text:0x00001DD0; // type:function size:0x104 +fn_1_1F24 = .text:0x00001ED4; // type:function size:0x34 +fn_1_1F58 = .text:0x00001F08; // type:function size:0x6C +fn_1_1FC4 = .text:0x00001F74; // type:function size:0x3F0 +fn_1_23B4 = .text:0x00002364; // type:function size:0x64 +fn_1_2418 = .text:0x000023C8; // type:function size:0xE0 +fn_1_24F8 = .text:0x000024A8; // type:function size:0x32C +fn_1_2824 = .text:0x000027D4; // type:function size:0x3AC +fn_1_2BD0 = .text:0x00002B80; // type:function size:0x30 +fn_1_2C00 = .text:0x00002BB0; // type:function size:0x1C +fn_1_2C1C = .text:0x00002BCC; // type:function size:0x18C +fn_1_2DA8 = .text:0x00002D58; // type:function size:0x8 +fn_1_2DB0 = .text:0x00002D60; // type:function size:0x8 +fn_1_2DB8 = .text:0x00002D68; // type:function size:0x8 +fn_1_2DC0 = .text:0x00002D70; // type:function size:0x8 +fn_1_2DC8 = .text:0x00002D78; // type:function size:0xC +fn_1_2DD4 = .text:0x00002D84; // type:function size:0x60 +fn_1_2E34 = .text:0x00002DE4; // type:function size:0xB90 +fn_1_39C4 = .text:0x00003974; // type:function size:0x31C +fn_1_3CE0 = .text:0x00003C90; // type:function size:0xD8 +fn_1_3DB8 = .text:0x00003D68; // type:function size:0x114 +fn_1_3ECC = .text:0x00003E7C; // type:function size:0xB8 +fn_1_3F84 = .text:0x00003F34; // type:function size:0xA0 +fn_1_4024 = .text:0x00003FD4; // type:function size:0x9C +fn_1_40C0 = .text:0x00004070; // type:function size:0xE18 +fn_1_4ED8 = .text:0x00004E88; // type:function size:0x250 +fn_1_5128 = .text:0x000050D8; // type:function size:0x10 +fn_1_5138 = .text:0x000050E8; // type:function size:0x10 +fn_1_5148 = .text:0x000050F8; // type:function size:0x60 +fn_1_51A8 = .text:0x00005158; // type:function size:0x60 +fn_1_5208 = .text:0x000051B8; // type:function size:0xB0 +fn_1_52B8 = .text:0x00005268; // type:function size:0xAC +fn_1_5364 = .text:0x00005314; // type:function size:0x408 +fn_1_576C = .text:0x0000571C; // type:function size:0xDC +fn_1_5848 = .text:0x000057F8; // type:function size:0x364 +fn_1_5BAC = .text:0x00005B5C; // type:function size:0x380 +fn_1_5F2C = .text:0x00005EDC; // type:function size:0x310 +fn_1_623C = .text:0x000061EC; // type:function size:0xAF8 +fn_1_6D34 = .text:0x00006CE4; // type:function size:0x1F4 +fn_1_6F28 = .text:0x00006ED8; // type:function size:0xCF4 +fn_1_7C1C = .text:0x00007BCC; // type:function size:0x924 +fn_1_8540 = .text:0x000084F0; // type:function size:0x6C +fn_1_85AC = .text:0x0000855C; // type:function size:0x70 +fn_1_861C = .text:0x000085CC; // type:function size:0x1F8 +fn_1_8814 = .text:0x000087C4; // type:function size:0x200 +fn_1_8A14 = .text:0x000089C4; // type:function size:0x2A0 +fn_1_8CB4 = .text:0x00008C64; // type:function size:0x288 +fn_1_8F3C = .text:0x00008EEC; // type:function size:0x130 +fn_1_906C = .text:0x0000901C; // type:function size:0x350 +fn_1_93BC = .text:0x0000936C; // type:function size:0x15B8 +fn_1_A974 = .text:0x0000A924; // type:function size:0x8C +fn_1_AA00 = .text:0x0000A9B0; // type:function size:0x1C +fn_1_AA1C = .text:0x0000A9CC; // type:function size:0x2AC +fn_1_ACC8 = .text:0x0000AC78; // type:function size:0x260 +fn_1_AF28 = .text:0x0000AED8; // type:function size:0x26C +_prolog = .text:0x0000B144; // type:function size:0x54 scope:global +_epilog = .text:0x0000B198; // type:function size:0x4C scope:global +fn_1_B234 = .text:0x0000B1E4; // type:function size:0x224 +fn_1_B458 = .text:0x0000B408; // type:function size:0xC0 +fn_1_B518 = .text:0x0000B4C8; // type:function size:0x2CC +fn_1_B7E4 = .text:0x0000B794; // type:function size:0x190 +fn_1_B974 = .text:0x0000B924; // type:function size:0x134 +fn_1_BAA8 = .text:0x0000BA58; // type:function size:0x460 +fn_1_BF08 = .text:0x0000BEB8; // type:function size:0x94 +fn_1_BF9C = .text:0x0000BF4C; // type:function size:0x3A0 +fn_1_C33C = .text:0x0000C2EC; // type:function size:0x3E8 +fn_1_C724 = .text:0x0000C6D4; // type:function size:0x9BC +fn_1_D0E0 = .text:0x0000D090; // type:function size:0x90C +fn_1_D9EC = .text:0x0000D99C; // type:function size:0x9C8 +fn_1_E3B4 = .text:0x0000E364; // type:function size:0x630 +fn_1_E9E4 = .text:0x0000E994; // type:function size:0x298 +fn_1_EC7C = .text:0x0000EC2C; // type:function size:0x90 +fn_1_ED0C = .text:0x0000ECBC; // type:function size:0x1544 +fn_1_10250 = .text:0x00010200; // type:function size:0xA7C +fn_1_10CCC = .text:0x00010C7C; // type:function size:0x724 +fn_1_113F0 = .text:0x000113A0; // type:function size:0x4 +fn_1_113F4 = .text:0x000113A4; // type:function size:0x140C +fn_1_12800 = .text:0x000127B0; // type:function size:0x4 +fn_1_12804 = .text:0x000127B4; // type:function size:0xC4 +fn_1_128C8 = .text:0x00012878; // type:function size:0x4D0 +fn_1_12EA8 = .text:0x00012D48; // type:function size:0x300 +fn_1_131A8 = .text:0x00013048; // type:function size:0x2150 +fn_1_15320 = .text:0x00015198; // type:function size:0x9C +ObjectSetup = .text:0x00015234; // type:function size:0xDA0 +fn_1_1615C = .text:0x00015FD4; // type:function size:0x104 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 +lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x20 data:float +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0xC +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0xC +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x4 +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0xC +lbl_1_data_FC = .data:0x000000FC; // type:object size:0xC +lbl_1_data_108 = .data:0x00000108; // type:object size:0x160 +lbl_1_data_268 = .data:0x00000268; // type:object size:0x20 +lbl_1_data_288 = .data:0x00000288; // type:object size:0x24 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x24 +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x24 +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x24 +lbl_1_data_318 = .data:0x00000318; // type:object size:0x3C +lbl_1_data_354 = .data:0x00000354; // type:object size:0x18 +lbl_1_data_36C = .data:0x0000036C; // type:object size:0x18 +lbl_1_data_384 = .data:0x00000384; // type:object size:0xB scope:local data:string +lbl_1_data_38F = .data:0x0000038F; // type:object size:0xB scope:local data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0xB scope:local data:string +lbl_1_data_3A5 = .data:0x000003A5; // type:object size:0xB scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0xB scope:local data:string +lbl_1_data_3BB = .data:0x000003BB; // type:object size:0xB scope:local data:string +lbl_1_data_3C6 = .data:0x000003C6; // type:object size:0xB scope:local data:string +lbl_1_data_3D1 = .data:0x000003D1; // type:object size:0xB scope:local data:string +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x20 +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0xB scope:local data:string +lbl_1_data_407 = .data:0x00000407; // type:object size:0xB scope:local data:string +lbl_1_data_412 = .data:0x00000412; // type:object size:0xB scope:local data:string +lbl_1_data_41D = .data:0x0000041D; // type:object size:0xB scope:local data:string +lbl_1_data_428 = .data:0x00000428; // type:object size:0xB scope:local data:string +lbl_1_data_433 = .data:0x00000433; // type:object size:0xB scope:local data:string +lbl_1_data_440 = .data:0x00000440; // type:object size:0x18 data:4byte +lbl_1_data_458 = .data:0x00000458; // type:object size:0xB scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0xB scope:local data:string +lbl_1_data_46E = .data:0x0000046E; // type:object size:0xB scope:local data:string +lbl_1_data_479 = .data:0x00000479; // type:object size:0xB scope:local data:string +lbl_1_data_484 = .data:0x00000484; // type:object size:0xB scope:local data:string +lbl_1_data_48F = .data:0x0000048F; // type:object size:0xB scope:local data:string +lbl_1_data_49A = .data:0x0000049A; // type:object size:0xB scope:local data:string +lbl_1_data_4A5 = .data:0x000004A5; // type:object size:0xB scope:local data:string +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0xB scope:local data:string +lbl_1_data_4BB = .data:0x000004BB; // type:object size:0xB scope:local data:string +lbl_1_data_4C8 = .data:0x000004C8; // type:object size:0x28 data:4byte +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x14 data:byte +lbl_1_data_504 = .data:0x00000504; // type:object size:0x24 data:byte +lbl_1_data_528 = .data:0x00000528; // type:object size:0x8 +lbl_1_data_530 = .data:0x00000530; // type:object size:0xB scope:local data:string +lbl_1_data_53B = .data:0x0000053B; // type:object size:0xB scope:local data:string +lbl_1_data_546 = .data:0x00000546; // type:object size:0xB scope:local data:string +lbl_1_data_551 = .data:0x00000551; // type:object size:0xB scope:local data:string +lbl_1_data_55C = .data:0x0000055C; // type:object size:0xB scope:local data:string +lbl_1_data_567 = .data:0x00000567; // type:object size:0xB scope:local data:string +lbl_1_data_572 = .data:0x00000572; // type:object size:0xB scope:local data:string +lbl_1_data_57D = .data:0x0000057D; // type:object size:0xB scope:local data:string +lbl_1_data_588 = .data:0x00000588; // type:object size:0xB scope:local data:string +lbl_1_data_593 = .data:0x00000593; // type:object size:0xB scope:local data:string +lbl_1_data_59E = .data:0x0000059E; // type:object size:0xB scope:local data:string +lbl_1_data_5A9 = .data:0x000005A9; // type:object size:0xB scope:local data:string +lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0xB scope:local data:string +lbl_1_data_5BF = .data:0x000005BF; // type:object size:0xB scope:local data:string +lbl_1_data_5CA = .data:0x000005CA; // type:object size:0xB scope:local data:string +lbl_1_data_5D5 = .data:0x000005D5; // type:object size:0xB scope:local data:string +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0xB scope:local data:string +lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x8B8 +lbl_1_data_EA4 = .data:0x00000EA4; // type:object size:0xB scope:local data:string +lbl_1_data_EAF = .data:0x00000EAF; // type:object size:0xB scope:local data:string +lbl_1_data_EBA = .data:0x00000EBA; // type:object size:0xB scope:local data:string +lbl_1_data_EC5 = .data:0x00000EC5; // type:object size:0xB scope:local data:string +lbl_1_data_ED0 = .data:0x00000ED0; // type:object size:0xB scope:local data:string +lbl_1_data_EDC = .data:0x00000EDC; // type:object size:0x8B8 +lbl_1_data_1794 = .data:0x00001794; // type:object size:0x20 +lbl_1_data_17B4 = .data:0x000017B4; // type:object size:0x20 +lbl_1_data_17D4 = .data:0x000017D4; // type:object size:0x20 data:float +lbl_1_data_17F4 = .data:0x000017F4; // type:object size:0x20 +lbl_1_data_1814 = .data:0x00001814; // type:object size:0x50 +lbl_1_data_1864 = .data:0x00001864; // type:object size:0x11 scope:local data:string +lbl_1_data_1875 = .data:0x00001875; // type:object size:0x11 scope:local data:string +lbl_1_data_1886 = .data:0x00001886; // type:object size:0x11 scope:local data:string +lbl_1_data_1897 = .data:0x00001897; // type:object size:0x18 scope:local data:string +lbl_1_data_18AF = .data:0x000018AF; // type:object size:0xB scope:local data:string +lbl_1_data_18BA = .data:0x000018BA; // type:object size:0x18 scope:local data:string +lbl_1_data_18D2 = .data:0x000018D2; // type:object size:0xC scope:local data:string +lbl_1_data_18DE = .data:0x000018DE; // type:object size:0x6 scope:local data:string +lbl_1_data_18E4 = .data:0x000018E4; // type:object size:0x21 scope:local data:string +lbl_1_data_1905 = .data:0x00001905; // type:object size:0x1D scope:local data:string +jumptable_1_data_1924 = .data:0x00001924; // type:object size:0x1C scope:local +jumptable_1_data_1940 = .data:0x00001940; // type:object size:0x44 scope:local +lbl_1_data_1984 = .data:0x00001984; // type:object size:0xB scope:local data:string +lbl_1_data_198F = .data:0x0000198F; // type:object size:0x1B scope:local data:string +jumptable_1_data_19AC = .data:0x000019AC; // type:object size:0x28 scope:local +lbl_1_data_19D4 = .data:0x000019D4; // type:object size:0x24 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x3F0 data:float +lbl_1_bss_3F0 = .bss:0x000003F0; // type:object size:0x4 data:float +lbl_1_bss_3F4 = .bss:0x000003F4; // type:object size:0x4 data:4byte +lbl_1_bss_3F8 = .bss:0x000003F8; // type:object size:0x4 data:4byte +lbl_1_bss_3FC = .bss:0x000003FC; // type:object size:0x4 data:4byte +lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x2 data:2byte +lbl_1_bss_402 = .bss:0x00000402; // type:object size:0x2 data:2byte +lbl_1_bss_404 = .bss:0x00000404; // type:object size:0x2 data:2byte +lbl_1_bss_408 = .bss:0x00000408; // type:object size:0x4 data:4byte +lbl_1_bss_40C = .bss:0x0000040C; // type:object size:0x4 data:4byte +lbl_1_bss_410 = .bss:0x00000410; // type:object size:0x4 data:4byte +lbl_1_bss_414 = .bss:0x00000414; // type:object size:0x4 data:4byte +lbl_1_bss_418 = .bss:0x00000418; // type:object size:0x4 data:4byte +lbl_1_bss_41C = .bss:0x0000041C; // type:object size:0x4 data:4byte +lbl_1_bss_420 = .bss:0x00000420; // type:object size:0x4 data:float +lbl_1_bss_424 = .bss:0x00000424; // type:object size:0x4 data:4byte +lbl_1_bss_428 = .bss:0x00000428; // type:object size:0x100 +lbl_1_bss_528 = .bss:0x00000528; // type:object size:0x40 data:4byte +lbl_1_bss_568 = .bss:0x00000568; // type:object size:0x4 data:float +lbl_1_bss_56C = .bss:0x0000056C; // type:object size:0x4 data:4byte +lbl_1_bss_570 = .bss:0x00000570; // type:object size:0x4 data:4byte +lbl_1_bss_574 = .bss:0x00000574; // type:object size:0x2 data:2byte +lbl_1_bss_576 = .bss:0x00000576; // type:object size:0x2 data:2byte +lbl_1_bss_578 = .bss:0x00000578; // type:object size:0x4 data:4byte +lbl_1_bss_57C = .bss:0x0000057C; // type:object size:0x4 data:4byte +lbl_1_bss_580 = .bss:0x00000580; // type:object size:0x4 data:4byte +lbl_1_bss_584 = .bss:0x00000584; // type:object size:0xC data:float +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0xC data:4byte +lbl_1_bss_59C = .bss:0x0000059C; // type:object size:0xC data:float +lbl_1_bss_5A8 = .bss:0x000005A8; // type:object size:0xC data:4byte +lbl_1_bss_5B4 = .bss:0x000005B4; // type:object size:0x4 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x18 data:4byte +lbl_1_bss_5D0 = .bss:0x000005D0; // type:object size:0xC data:4byte diff --git a/config/GMPP01_00/rels/m433Dll/splits.txt b/config/GMPP01_00/rels/m433Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m433Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m433Dll/symbols.txt b/config/GMPP01_00/rels/m433Dll/symbols.txt new file mode 100644 index 00000000..4b4ddd22 --- /dev/null +++ b/config/GMPP01_00/rels/m433Dll/symbols.txt @@ -0,0 +1,465 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x420 +fn_1_4C0 = .text:0x000004C0; // type:function size:0xC4 +fn_1_584 = .text:0x00000584; // type:function size:0x94 +fn_1_618 = .text:0x00000618; // type:function size:0x180 +fn_1_798 = .text:0x00000798; // type:function size:0x33C +fn_1_AD4 = .text:0x00000AD4; // type:function size:0x358 +fn_1_E2C = .text:0x00000E2C; // type:function size:0x214 +fn_1_1040 = .text:0x00001040; // type:function size:0x3BC +fn_1_13FC = .text:0x000013FC; // type:function size:0x2D4 +fn_1_16D0 = .text:0x000016D0; // type:function size:0x36C +fn_1_1A3C = .text:0x00001A3C; // type:function size:0xC +fn_1_1A48 = .text:0x00001A48; // type:function size:0x6F4 +fn_1_213C = .text:0x0000213C; // type:function size:0x18 +fn_1_2154 = .text:0x00002154; // type:function size:0x18 +fn_1_216C = .text:0x0000216C; // type:function size:0x18 +fn_1_2184 = .text:0x00002184; // type:function size:0x18 +fn_1_219C = .text:0x0000219C; // type:function size:0x30 +fn_1_21CC = .text:0x000021CC; // type:function size:0x18 +fn_1_21E4 = .text:0x000021E4; // type:function size:0x30 +fn_1_2214 = .text:0x00002214; // type:function size:0x30 +fn_1_2244 = .text:0x00002244; // type:function size:0x38 +fn_1_227C = .text:0x0000227C; // type:function size:0x208 +fn_1_2484 = .text:0x00002484; // type:function size:0x240 +fn_1_26C4 = .text:0x000026C4; // type:function size:0x11C +fn_1_27E0 = .text:0x000027E0; // type:function size:0xB4 +fn_1_2894 = .text:0x00002894; // type:function size:0xF0 +fn_1_2984 = .text:0x00002984; // type:function size:0x20 +fn_1_29A4 = .text:0x000029A4; // type:function size:0x120 +fn_1_2AC4 = .text:0x00002AC4; // type:function size:0x21C +fn_1_2CE0 = .text:0x00002CE0; // type:function size:0x5EC +fn_1_32CC = .text:0x000032CC; // type:function size:0x6E0 +fn_1_39AC = .text:0x000039AC; // type:function size:0x270 +fn_1_3C1C = .text:0x00003C1C; // type:function size:0x240 +fn_1_3E5C = .text:0x00003E5C; // type:function size:0xB8 +fn_1_3F14 = .text:0x00003F14; // type:function size:0xB80 +fn_1_4A94 = .text:0x00004A94; // type:function size:0x10C +fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x334 +fn_1_4ED4 = .text:0x00004ED4; // type:function size:0xEC +fn_1_4FC0 = .text:0x00004FC0; // type:function size:0x28 +fn_1_4FE8 = .text:0x00004FE8; // type:function size:0x80 +fn_1_5068 = .text:0x00005068; // type:function size:0x40 +fn_1_50A8 = .text:0x000050A8; // type:function size:0xA0 +fn_1_5148 = .text:0x00005148; // type:function size:0x94 +fn_1_51DC = .text:0x000051DC; // type:function size:0x84 +fn_1_5260 = .text:0x00005260; // type:function size:0x54 +fn_1_52B4 = .text:0x000052B4; // type:function size:0x168 +fn_1_541C = .text:0x0000541C; // type:function size:0x120 +fn_1_553C = .text:0x0000553C; // type:function size:0x39C +fn_1_58D8 = .text:0x000058D8; // type:function size:0x2C +fn_1_5904 = .text:0x00005904; // type:function size:0x270 +fn_1_5B74 = .text:0x00005B74; // type:function size:0x24 +fn_1_5B98 = .text:0x00005B98; // type:function size:0x4D8 +fn_1_6070 = .text:0x00006070; // type:function size:0x50 +fn_1_60C0 = .text:0x000060C0; // type:function size:0x76C +fn_1_682C = .text:0x0000682C; // type:function size:0xA00 +fn_1_722C = .text:0x0000722C; // type:function size:0x2A8 +fn_1_74D4 = .text:0x000074D4; // type:function size:0xF34 +fn_1_8408 = .text:0x00008408; // type:function size:0x334 +fn_1_873C = .text:0x0000873C; // type:function size:0x1FC +fn_1_8938 = .text:0x00008938; // type:function size:0x298 +fn_1_8BD0 = .text:0x00008BD0; // type:function size:0x3B0 +fn_1_8F80 = .text:0x00008F80; // type:function size:0x708 +fn_1_9688 = .text:0x00009688; // type:function size:0xF90 +fn_1_A618 = .text:0x0000A618; // type:function size:0x570 +fn_1_AB88 = .text:0x0000AB88; // type:function size:0x624 +fn_1_B1AC = .text:0x0000B1AC; // type:function size:0x340 +fn_1_B4EC = .text:0x0000B4EC; // type:function size:0x20C +fn_1_B6F8 = .text:0x0000B6F8; // type:function size:0xCC +fn_1_B7C4 = .text:0x0000B7C4; // type:function size:0x8C +fn_1_B850 = .text:0x0000B850; // type:function size:0x2A8 +fn_1_BAF8 = .text:0x0000BAF8; // type:function size:0x268 +fn_1_BD60 = .text:0x0000BD60; // type:function size:0x4F8 +fn_1_C258 = .text:0x0000C258; // type:function size:0x46C +fn_1_C6C4 = .text:0x0000C6C4; // type:function size:0x4 +fn_1_C6C8 = .text:0x0000C6C8; // type:function size:0x51C +fn_1_CBE4 = .text:0x0000CBE4; // type:function size:0x220 +fn_1_CE04 = .text:0x0000CE04; // type:function size:0x3C8 +fn_1_D1CC = .text:0x0000D1CC; // type:function size:0x1B8 +fn_1_D384 = .text:0x0000D384; // type:function size:0x1A8 +fn_1_D52C = .text:0x0000D52C; // type:function size:0x1C8 +fn_1_D6F4 = .text:0x0000D6F4; // type:function size:0x1E0 +fn_1_D8D4 = .text:0x0000D8D4; // type:function size:0x4E8 +fn_1_DDBC = .text:0x0000DDBC; // type:function size:0xB8 +fn_1_DE74 = .text:0x0000DE74; // type:function size:0x11C +fn_1_DF90 = .text:0x0000DF90; // type:function size:0xA0 +fn_1_E030 = .text:0x0000E030; // type:function size:0x138 +fn_1_E168 = .text:0x0000E168; // type:function size:0x4A4 +fn_1_E60C = .text:0x0000E60C; // type:function size:0x4CC +fn_1_EAD8 = .text:0x0000EAD8; // type:function size:0x158 +fn_1_EC30 = .text:0x0000EC30; // type:function size:0x118 +fn_1_ED48 = .text:0x0000ED48; // type:function size:0x1168 +fn_1_FEB0 = .text:0x0000FEB0; // type:function size:0x28 +fn_1_FED8 = .text:0x0000FED8; // type:function size:0x2A4 +fn_1_1017C = .text:0x0001017C; // type:function size:0x130 +fn_1_102AC = .text:0x000102AC; // type:function size:0x3B4 +fn_1_10660 = .text:0x00010660; // type:function size:0xF8 +fn_1_10758 = .text:0x00010758; // type:function size:0x34 +fn_1_1078C = .text:0x0001078C; // type:function size:0x70 +fn_1_107FC = .text:0x000107FC; // type:function size:0x98 +fn_1_10894 = .text:0x00010894; // type:function size:0x30 +fn_1_108C4 = .text:0x000108C4; // type:function size:0x4C +fn_1_10910 = .text:0x00010910; // type:function size:0x3C +fn_1_1094C = .text:0x0001094C; // type:function size:0x28 +fn_1_10974 = .text:0x00010974; // type:function size:0x1F8 +fn_1_10B6C = .text:0x00010B6C; // type:function size:0x204 +fn_1_10D70 = .text:0x00010D70; // type:function size:0x180 +fn_1_10EF0 = .text:0x00010EF0; // type:function size:0x28 +fn_1_10F18 = .text:0x00010F18; // type:function size:0x34 +fn_1_10F4C = .text:0x00010F4C; // type:function size:0x38 +fn_1_10F84 = .text:0x00010F84; // type:function size:0x34 +fn_1_10FB8 = .text:0x00010FB8; // type:function size:0x38 +fn_1_10FF0 = .text:0x00010FF0; // type:function size:0x38 +fn_1_11028 = .text:0x00011028; // type:function size:0x28 +fn_1_11050 = .text:0x00011050; // type:function size:0x5C +fn_1_110AC = .text:0x000110AC; // type:function size:0x38 +fn_1_110E4 = .text:0x000110E4; // type:function size:0x98 +fn_1_1117C = .text:0x0001117C; // type:function size:0x1B0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0xC0 +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 scope:local data:double +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 scope:local data:float +lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 scope:local data:float +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 scope:local data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 scope:local data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 scope:local data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 scope:local data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 scope:local data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 scope:local data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 scope:local data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 scope:local data:float +lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 scope:local data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 scope:local data:float +lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 scope:local data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0xC data:float +lbl_1_data_58 = .data:0x00000058; // type:object size:0x50 data:float +jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C data:4byte +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x38 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x38 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x30 +lbl_1_data_180 = .data:0x00000180; // type:object size:0x44 +lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x44 +lbl_1_data_208 = .data:0x00000208; // type:object size:0x44 +lbl_1_data_24C = .data:0x0000024C; // type:object size:0x1A4 +lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x38 +lbl_1_data_428 = .data:0x00000428; // type:object size:0x9 data:string +lbl_1_data_431 = .data:0x00000431; // type:object size:0x9 data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0xB data:string +lbl_1_data_445 = .data:0x00000445; // type:object size:0xB data:string +lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 +lbl_1_data_468 = .data:0x00000468; // type:object size:0x24 +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x48 +lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C +lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 +lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 data:string +lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 data:string +lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 data:string +lbl_1_data_590 = .data:0x00000590; // type:object size:0x15 data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x15 data:string +lbl_1_data_5BA = .data:0x000005BA; // type:object size:0x18 data:string +lbl_1_data_5D2 = .data:0x000005D2; // type:object size:0x18 data:string +lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 data:string +lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 data:string +lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 data:string +lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 data:string +lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 +jumptable_1_data_654 = .data:0x00000654; // type:object size:0x20 scope:local +lbl_1_data_674 = .data:0x00000674; // type:object size:0xC +lbl_1_data_680 = .data:0x00000680; // type:object size:0x8 +lbl_1_data_688 = .data:0x00000688; // type:object size:0x28 +lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 +lbl_1_data_6C0 = .data:0x000006C0; // type:object size:0xB0 data:4byte +lbl_1_data_770 = .data:0x00000770; // type:object size:0x24 +lbl_1_data_794 = .data:0x00000794; // type:object size:0x6C +lbl_1_data_800 = .data:0x00000800; // type:object size:0x24 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xA data:2byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0xC data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x6F0 +lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x80 +lbl_1_bss_7A8 = .bss:0x000007A8; // type:object size:0x4 data:4byte +lbl_1_bss_7AC = .bss:0x000007AC; // type:object size:0x4 data:4byte +lbl_1_bss_7B0 = .bss:0x000007B0; // type:object size:0x8 data:4byte +lbl_1_bss_7B8 = .bss:0x000007B8; // type:object size:0x10 +lbl_1_bss_7C8 = .bss:0x000007C8; // type:object size:0x4 data:4byte +lbl_1_bss_7CC = .bss:0x000007CC; // type:object size:0x4 data:4byte +lbl_1_bss_7D0 = .bss:0x000007D0; // type:object size:0x14 diff --git a/config/GMPP01_00/rels/m434Dll/splits.txt b/config/GMPP01_00/rels/m434Dll/splits.txt new file mode 100644 index 00000000..f4ed5551 --- /dev/null +++ b/config/GMPP01_00/rels/m434Dll/splits.txt @@ -0,0 +1,34 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m434Dll/main.c: + .text start:0x000000A0 end:0x00001DB0 + .rodata start:0x00000000 end:0x000000B8 + .data start:0x00000000 end:0x00000100 + .bss start:0x00000000 end:0x000003D8 + +REL/m434Dll/map.c: + .text start:0x00001DB0 end:0x00004854 + .rodata start:0x000000B8 end:0x000001A8 + .data start:0x00000100 end:0x00000180 + .bss start:0x000003D8 end:0x00005870 + +REL/m434Dll/player.c: + .text start:0x00004854 end:0x00006860 + .rodata start:0x000001A8 end:0x000002C8 + .data start:0x00000180 end:0x000002C0 + .bss start:0x00005870 end:0x00005880 + +REL/m434Dll/fish.c: + .text start:0x00006860 end:0x0000918C + .rodata start:0x000002C8 end:0x000004C8 + .data start:0x000002C0 end:0x000002C8 + .bss start:0x00005880 end:0x00007884 diff --git a/config/GMPP01_00/rels/m434Dll/symbols.txt b/config/GMPP01_00/rels/m434Dll/symbols.txt new file mode 100644 index 00000000..c3cfd4b9 --- /dev/null +++ b/config/GMPP01_00/rels/m434Dll/symbols.txt @@ -0,0 +1,347 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x45C +fn_1_4FC = .text:0x000004FC; // type:function size:0x5C +fn_1_558 = .text:0x00000558; // type:function size:0x70C +fn_1_C64 = .text:0x00000C64; // type:function size:0x64 +fn_1_CC8 = .text:0x00000CC8; // type:function size:0x17C +fn_1_E44 = .text:0x00000E44; // type:function size:0x278 +fn_1_10BC = .text:0x000010BC; // type:function size:0x38 +fn_1_10F4 = .text:0x000010F4; // type:function size:0x10 +fn_1_1104 = .text:0x00001104; // type:function size:0x4C +fn_1_1150 = .text:0x00001150; // type:function size:0x320 +fn_1_1470 = .text:0x00001470; // type:function size:0x1C8 +fn_1_1638 = .text:0x00001638; // type:function size:0x4C +fn_1_1684 = .text:0x00001684; // type:function size:0x30 +fn_1_16B4 = .text:0x000016B4; // type:function size:0x24 +fn_1_16D8 = .text:0x000016D8; // type:function size:0xB0 +fn_1_1788 = .text:0x00001788; // type:function size:0xB0 +fn_1_1838 = .text:0x00001838; // type:function size:0x118 +fn_1_1950 = .text:0x00001950; // type:function size:0xB0 +fn_1_1A00 = .text:0x00001A00; // type:function size:0x10 +fn_1_1A10 = .text:0x00001A10; // type:function size:0x234 +fn_1_1C44 = .text:0x00001C44; // type:function size:0x44 +fn_1_1C88 = .text:0x00001C88; // type:function size:0x30 +fn_1_1CB8 = .text:0x00001CB8; // type:function size:0x8C +fn_1_1D44 = .text:0x00001D44; // type:function size:0x10 +fn_1_1D54 = .text:0x00001D54; // type:function size:0x10 +fn_1_1D64 = .text:0x00001D64; // type:function size:0x10 +fn_1_1D74 = .text:0x00001D74; // type:function size:0x18 +fn_1_1D8C = .text:0x00001D8C; // type:function size:0x10 +fn_1_1D9C = .text:0x00001D9C; // type:function size:0x14 +fn_1_1DB0 = .text:0x00001DB0; // type:function size:0x94 +fn_1_1E44 = .text:0x00001E44; // type:function size:0x20 +fn_1_1E64 = .text:0x00001E64; // type:function size:0x7A4 +fn_1_2608 = .text:0x00002608; // type:function size:0x9C +fn_1_26A4 = .text:0x000026A4; // type:function size:0x24C +fn_1_28F0 = .text:0x000028F0; // type:function size:0x88 +fn_1_2978 = .text:0x00002978; // type:function size:0x68C +fn_1_3004 = .text:0x00003004; // type:function size:0x124 +fn_1_3128 = .text:0x00003128; // type:function size:0x1B4 +fn_1_32DC = .text:0x000032DC; // type:function size:0xC8 +fn_1_33A4 = .text:0x000033A4; // type:function size:0xF8 +fn_1_349C = .text:0x0000349C; // type:function size:0xF8 +fn_1_3594 = .text:0x00003594; // type:function size:0x734 +fn_1_3CC8 = .text:0x00003CC8; // type:function size:0x6E4 +fn_1_43AC = .text:0x000043AC; // type:function size:0x90 +fn_1_443C = .text:0x0000443C; // type:function size:0x3B0 +fn_1_47EC = .text:0x000047EC; // type:function size:0x68 +fn_1_4854 = .text:0x00004854; // type:function size:0x110 +fn_1_4964 = .text:0x00004964; // type:function size:0x24 +fn_1_4988 = .text:0x00004988; // type:function size:0x46C +fn_1_4DF4 = .text:0x00004DF4; // type:function size:0x5C +fn_1_4E50 = .text:0x00004E50; // type:function size:0xC60 +fn_1_5AB0 = .text:0x00005AB0; // type:function size:0x13C +fn_1_5BEC = .text:0x00005BEC; // type:function size:0xAC +fn_1_5C98 = .text:0x00005C98; // type:function size:0x414 +fn_1_60AC = .text:0x000060AC; // type:function size:0x19C +fn_1_6248 = .text:0x00006248; // type:function size:0x74 +fn_1_62BC = .text:0x000062BC; // type:function size:0x1E0 +fn_1_649C = .text:0x0000649C; // type:function size:0x24 +fn_1_64C0 = .text:0x000064C0; // type:function size:0x1D0 +fn_1_6690 = .text:0x00006690; // type:function size:0x11C +fn_1_67AC = .text:0x000067AC; // type:function size:0xB4 +fn_1_6860 = .text:0x00006860; // type:function size:0x224 +fn_1_6A84 = .text:0x00006A84; // type:function size:0x4 +fn_1_6A88 = .text:0x00006A88; // type:function size:0x2F4 +fn_1_6D7C = .text:0x00006D7C; // type:function size:0x3C +fn_1_6DB8 = .text:0x00006DB8; // type:function size:0x4 +fn_1_6DBC = .text:0x00006DBC; // type:function size:0x1034 +fn_1_7DF0 = .text:0x00007DF0; // type:function size:0x464 +fn_1_8254 = .text:0x00008254; // type:function size:0x174 +fn_1_83C8 = .text:0x000083C8; // type:function size:0x108 +fn_1_84D0 = .text:0x000084D0; // type:function size:0xF4 +fn_1_85C4 = .text:0x000085C4; // type:function size:0x2C0 +fn_1_8884 = .text:0x00008884; // type:function size:0x268 +fn_1_8AEC = .text:0x00008AEC; // type:function size:0x6C +fn_1_8B58 = .text:0x00008B58; // type:function size:0xBC +fn_1_8C14 = .text:0x00008C14; // type:function size:0x164 +fn_1_8D78 = .text:0x00008D78; // type:function size:0xB4 +fn_1_8E2C = .text:0x00008E2C; // type:function size:0x110 +fn_1_8F3C = .text:0x00008F3C; // type:function size:0x64 +fn_1_8FA0 = .text:0x00008FA0; // type:function size:0x1EC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x8 scope:local data:double +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x48 scope:local +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x48 scope:local +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x48 scope:local +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x48 scope:local +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC data:float +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC data:float +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x23 scope:local data:string +lbl_1_data_70 = .data:0x00000070; // type:object size:0x4 data:4byte +lbl_1_data_74 = .data:0x00000074; // type:object size:0x12 scope:local data:string +lbl_1_data_86 = .data:0x00000086; // type:object size:0x1C scope:local data:string +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x8 +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0xC +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x30 data:float +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x10 data:float +lbl_1_data_100 = .data:0x00000100; // type:object size:0x32 +lbl_1_data_132 = .data:0x00000132; // type:object size:0x2 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x5 scope:local data:string +lbl_1_data_139 = .data:0x00000139; // type:object size:0x4 data:byte +lbl_1_data_140 = .data:0x00000140; // type:object size:0x18 +lbl_1_data_158 = .data:0x00000158; // type:object size:0x18 +lbl_1_data_170 = .data:0x00000170; // type:object size:0x4 +lbl_1_data_174 = .data:0x00000174; // type:object size:0x4 data:byte +lbl_1_data_178 = .data:0x00000178; // type:object size:0x4 data:byte +lbl_1_data_17C = .data:0x0000017C; // type:object size:0x4 data:byte +lbl_1_data_180 = .data:0x00000180; // type:object size:0x10 scope:local +lbl_1_data_190 = .data:0x00000190; // type:object size:0x20 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0xB scope:local data:string +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x20 +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x18 +lbl_1_data_1FC = .data:0x000001FC; // type:object size:0x28 +lbl_1_data_224 = .data:0x00000224; // type:object size:0x90 +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 scope:local data:string +lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 scope:local data:string +lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 scope:local data:string +lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0x8 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x380 +lbl_1_bss_39C = .bss:0x0000039C; // type:object size:0x4 data:4byte +lbl_1_bss_3A0 = .bss:0x000003A0; // type:object size:0x8 +lbl_1_bss_3A8 = .bss:0x000003A8; // type:object size:0x2 data:2byte +lbl_1_bss_3AA = .bss:0x000003AA; // type:object size:0x2 data:2byte +lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x4 data:2byte +lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x2 data:2byte +lbl_1_bss_3B2 = .bss:0x000003B2; // type:object size:0x6 data:2byte +lbl_1_bss_3B8 = .bss:0x000003B8; // type:object size:0x4 data:4byte +lbl_1_bss_3BC = .bss:0x000003BC; // type:object size:0x4 data:4byte +lbl_1_bss_3C0 = .bss:0x000003C0; // type:object size:0x2 data:2byte +lbl_1_bss_3C2 = .bss:0x000003C2; // type:object size:0x2 data:2byte +lbl_1_bss_3C4 = .bss:0x000003C4; // type:object size:0x4 data:4byte +lbl_1_bss_3C8 = .bss:0x000003C8; // type:object size:0x4 data:4byte +lbl_1_bss_3CC = .bss:0x000003CC; // type:object size:0x4 data:4byte +lbl_1_bss_3D0 = .bss:0x000003D0; // type:object size:0x4 data:4byte +lbl_1_bss_3D4 = .bss:0x000003D4; // type:object size:0x4 data:4byte +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x18 data:4byte +lbl_1_bss_3F0 = .bss:0x000003F0; // type:object size:0x50 data:4byte +lbl_1_bss_440 = .bss:0x00000440; // type:object size:0x8 data:4byte +lbl_1_bss_448 = .bss:0x00000448; // type:object size:0x8 data:4byte +lbl_1_bss_450 = .bss:0x00000450; // type:object size:0x8 data:4byte +lbl_1_bss_458 = .bss:0x00000458; // type:object size:0x4 data:4byte +lbl_1_bss_45C = .bss:0x0000045C; // type:object size:0x4 data:4byte +lbl_1_bss_460 = .bss:0x00000460; // type:object size:0x4 data:4byte +lbl_1_bss_464 = .bss:0x00000464; // type:object size:0x2000 data:float +lbl_1_bss_2464 = .bss:0x00002464; // type:object size:0x4 data:4byte +lbl_1_bss_2468 = .bss:0x00002468; // type:object size:0x400 data:2byte +lbl_1_bss_2868 = .bss:0x00002868; // type:object size:0x3000 data:float +lbl_1_bss_5868 = .bss:0x00005868; // type:object size:0x4 data:4byte +lbl_1_bss_5870 = .bss:0x00005870; // type:object size:0x10 +lbl_1_bss_5880 = .bss:0x00005880; // type:object size:0x800 +lbl_1_bss_6080 = .bss:0x00006080; // type:object size:0x400 +lbl_1_bss_6480 = .bss:0x00006480; // type:object size:0x1000 +lbl_1_bss_7480 = .bss:0x00007480; // type:object size:0x400 data:4byte +lbl_1_bss_7880 = .bss:0x00007880; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m435Dll/splits.txt b/config/GMPP01_00/rels/m435Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m435Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m435Dll/symbols.txt b/config/GMPP01_00/rels/m435Dll/symbols.txt new file mode 100644 index 00000000..38995f87 --- /dev/null +++ b/config/GMPP01_00/rels/m435Dll/symbols.txt @@ -0,0 +1,471 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x1A8 +fn_1_1A8 = .text:0x000001A8; // type:function size:0x88 +fn_1_230 = .text:0x00000230; // type:function size:0x68 +fn_1_298 = .text:0x00000298; // type:function size:0x6C +fn_1_304 = .text:0x00000304; // type:function size:0x130 +fn_1_434 = .text:0x00000434; // type:function size:0x3E4 +fn_1_818 = .text:0x00000818; // type:function size:0x8C +fn_1_8A4 = .text:0x000008A4; // type:function size:0x20 +fn_1_8C4 = .text:0x000008C4; // type:function size:0x20 +fn_1_8E4 = .text:0x000008E4; // type:function size:0x48 +fn_1_92C = .text:0x0000092C; // type:function size:0x6B0 +fn_1_FDC = .text:0x00000FDC; // type:function size:0x134 +fn_1_1110 = .text:0x00001110; // type:function size:0xC4 +fn_1_11D4 = .text:0x000011D4; // type:function size:0x644 +fn_1_1818 = .text:0x00001818; // type:function size:0x24 +fn_1_183C = .text:0x0000183C; // type:function size:0x458 +fn_1_1C94 = .text:0x00001C94; // type:function size:0x1EC +fn_1_1E80 = .text:0x00001E80; // type:function size:0x1EC +fn_1_206C = .text:0x0000206C; // type:function size:0x458 +fn_1_24C4 = .text:0x000024C4; // type:function size:0x68 +fn_1_252C = .text:0x0000252C; // type:function size:0x68 +fn_1_2594 = .text:0x00002594; // type:function size:0xE8 +fn_1_267C = .text:0x0000267C; // type:function size:0x11C +fn_1_2798 = .text:0x00002798; // type:function size:0x84 +fn_1_281C = .text:0x0000281C; // type:function size:0x70 +fn_1_288C = .text:0x0000288C; // type:function size:0x38 +fn_1_28C4 = .text:0x000028C4; // type:function size:0x24 +fn_1_28E8 = .text:0x000028E8; // type:function size:0x38 +fn_1_2920 = .text:0x00002920; // type:function size:0x1C8 +fn_1_2AE8 = .text:0x00002AE8; // type:function size:0x64 +fn_1_2B4C = .text:0x00002B4C; // type:function size:0xA8 +fn_1_2BF4 = .text:0x00002BF4; // type:function size:0x20 +fn_1_2C14 = .text:0x00002C14; // type:function size:0x5A0 +fn_1_31B4 = .text:0x000031B4; // type:function size:0xCC +fn_1_3280 = .text:0x00003280; // type:function size:0x2D0 +fn_1_3550 = .text:0x00003550; // type:function size:0x59C +fn_1_3AEC = .text:0x00003AEC; // type:function size:0x20 +fn_1_3B0C = .text:0x00003B0C; // type:function size:0x370 +fn_1_3E7C = .text:0x00003E7C; // type:function size:0x20 +fn_1_3E9C = .text:0x00003E9C; // type:function size:0x260 +fn_1_40FC = .text:0x000040FC; // type:function size:0x2C +fn_1_4128 = .text:0x00004128; // type:function size:0x5A8 +fn_1_46D0 = .text:0x000046D0; // type:function size:0x22C +fn_1_48FC = .text:0x000048FC; // type:function size:0x3E8 +fn_1_4CE4 = .text:0x00004CE4; // type:function size:0x11C +fn_1_4E00 = .text:0x00004E00; // type:function size:0x1AC +fn_1_4FAC = .text:0x00004FAC; // type:function size:0x484 +fn_1_5430 = .text:0x00005430; // type:function size:0x1C8 +fn_1_55F8 = .text:0x000055F8; // type:function size:0x44 +fn_1_563C = .text:0x0000563C; // type:function size:0x1C18 +fn_1_7254 = .text:0x00007254; // type:function size:0x48 +fn_1_729C = .text:0x0000729C; // type:function size:0x384 +fn_1_7620 = .text:0x00007620; // type:function size:0x374 +fn_1_7994 = .text:0x00007994; // type:function size:0x24 +fn_1_79B8 = .text:0x000079B8; // type:function size:0xB8 +fn_1_7A70 = .text:0x00007A70; // type:function size:0xCC +fn_1_7B3C = .text:0x00007B3C; // type:function size:0x1E4 +fn_1_7D20 = .text:0x00007D20; // type:function size:0x28 +fn_1_7D48 = .text:0x00007D48; // type:function size:0x24 +fn_1_7D6C = .text:0x00007D6C; // type:function size:0x160 +fn_1_7ECC = .text:0x00007ECC; // type:function size:0x37C +fn_1_8248 = .text:0x00008248; // type:function size:0x24 +fn_1_826C = .text:0x0000826C; // type:function size:0x2D0 +fn_1_853C = .text:0x0000853C; // type:function size:0x4C +fn_1_8588 = .text:0x00008588; // type:function size:0x1A4 +fn_1_872C = .text:0x0000872C; // type:function size:0x17C +fn_1_88A8 = .text:0x000088A8; // type:function size:0x598 +fn_1_8E40 = .text:0x00008E40; // type:function size:0x28 +fn_1_8E68 = .text:0x00008E68; // type:function size:0x58 +fn_1_8EC0 = .text:0x00008EC0; // type:function size:0x2C +fn_1_8EEC = .text:0x00008EEC; // type:function size:0x40 +fn_1_8F2C = .text:0x00008F2C; // type:function size:0x18 +fn_1_8F44 = .text:0x00008F44; // type:function size:0x150 +fn_1_9094 = .text:0x00009094; // type:function size:0x6CC +fn_1_9760 = .text:0x00009760; // type:function size:0x28 +fn_1_9788 = .text:0x00009788; // type:function size:0x94 +fn_1_981C = .text:0x0000981C; // type:function size:0x28 +fn_1_9844 = .text:0x00009844; // type:function size:0x380 +fn_1_9BC4 = .text:0x00009BC4; // type:function size:0x3C +fn_1_9C00 = .text:0x00009C00; // type:function size:0x180 +fn_1_9D80 = .text:0x00009D80; // type:function size:0x1F4 +fn_1_9F74 = .text:0x00009F74; // type:function size:0x1CC +fn_1_A140 = .text:0x0000A140; // type:function size:0x370 +fn_1_A4B0 = .text:0x0000A4B0; // type:function size:0x28 +fn_1_A4D8 = .text:0x0000A4D8; // type:function size:0x190 +fn_1_A668 = .text:0x0000A668; // type:function size:0x64 +fn_1_A6CC = .text:0x0000A6CC; // type:function size:0x1F0 +fn_1_A8BC = .text:0x0000A8BC; // type:function size:0x338 +fn_1_ABF4 = .text:0x0000ABF4; // type:function size:0x160 +fn_1_AD54 = .text:0x0000AD54; // type:function size:0x498 +fn_1_B1EC = .text:0x0000B1EC; // type:function size:0x634 +fn_1_B820 = .text:0x0000B820; // type:function size:0x128 +fn_1_B948 = .text:0x0000B948; // type:function size:0x298 +fn_1_BBE0 = .text:0x0000BBE0; // type:function size:0xB0 +fn_1_BC90 = .text:0x0000BC90; // type:function size:0xD8 +fn_1_BD68 = .text:0x0000BD68; // type:function size:0xB0 +fn_1_BE18 = .text:0x0000BE18; // type:function size:0xB0 +fn_1_BEC8 = .text:0x0000BEC8; // type:function size:0xB0 +fn_1_BF78 = .text:0x0000BF78; // type:function size:0xE4 +fn_1_C05C = .text:0x0000C05C; // type:function size:0xD8 +fn_1_C134 = .text:0x0000C134; // type:function size:0xD8 +fn_1_C20C = .text:0x0000C20C; // type:function size:0xD8 +fn_1_C2E4 = .text:0x0000C2E4; // type:function size:0xD8 +fn_1_C3BC = .text:0x0000C3BC; // type:function size:0xD8 +fn_1_C494 = .text:0x0000C494; // type:function size:0xB0 +fn_1_C544 = .text:0x0000C544; // type:function size:0xB0 +fn_1_C5F4 = .text:0x0000C5F4; // type:function size:0x168 +fn_1_C75C = .text:0x0000C75C; // type:function size:0x558 +fn_1_CCB4 = .text:0x0000CCB4; // type:function size:0x3A0 +fn_1_D054 = .text:0x0000D054; // type:function size:0x43C +fn_1_D490 = .text:0x0000D490; // type:function size:0x424 +fn_1_D8B4 = .text:0x0000D8B4; // type:function size:0x8D4 +fn_1_E188 = .text:0x0000E188; // type:function size:0x4E0 +fn_1_E668 = .text:0x0000E668; // type:function size:0x3E4 +fn_1_EA4C = .text:0x0000EA4C; // type:function size:0x340 +fn_1_ED8C = .text:0x0000ED8C; // type:function size:0x448 +fn_1_F1D4 = .text:0x0000F1D4; // type:function size:0x4 +fn_1_F1D8 = .text:0x0000F1D8; // type:function size:0x18C +fn_1_F364 = .text:0x0000F364; // type:function size:0x3C +fn_1_F3A0 = .text:0x0000F3A0; // type:function size:0x5C +fn_1_F3FC = .text:0x0000F3FC; // type:function size:0x78 +fn_1_F474 = .text:0x0000F474; // type:function size:0x5C +fn_1_F4D0 = .text:0x0000F4D0; // type:function size:0x5C +fn_1_F52C = .text:0x0000F52C; // type:function size:0x48 +fn_1_F574 = .text:0x0000F574; // type:function size:0x3C +fn_1_F5B0 = .text:0x0000F5B0; // type:function size:0x80 +fn_1_F630 = .text:0x0000F630; // type:function size:0x64 +fn_1_F694 = .text:0x0000F694; // type:function size:0x5C +fn_1_F6F0 = .text:0x0000F6F0; // type:function size:0x70 +fn_1_F760 = .text:0x0000F760; // type:function size:0x48 +fn_1_F7A8 = .text:0x0000F7A8; // type:function size:0xA8 +fn_1_F850 = .text:0x0000F850; // type:function size:0x44 +fn_1_F894 = .text:0x0000F894; // type:function size:0x5C +fn_1_F8F0 = .text:0x0000F8F0; // type:function size:0x5C +fn_1_F94C = .text:0x0000F94C; // type:function size:0x4 +fn_1_F950 = .text:0x0000F950; // type:function size:0x48 +fn_1_F998 = .text:0x0000F998; // type:function size:0x4C +fn_1_F9E4 = .text:0x0000F9E4; // type:function size:0x5C +fn_1_FA40 = .text:0x0000FA40; // type:function size:0x108 +fn_1_FB48 = .text:0x0000FB48; // type:function size:0x5C +fn_1_FBA4 = .text:0x0000FBA4; // type:function size:0xB0 +fn_1_FC54 = .text:0x0000FC54; // type:function size:0x208 +fn_1_FE5C = .text:0x0000FE5C; // type:function size:0x30 +fn_1_FE8C = .text:0x0000FE8C; // type:function size:0x98 +fn_1_FF24 = .text:0x0000FF24; // type:function size:0x808 +fn_1_1072C = .text:0x0001072C; // type:function size:0x28 +fn_1_10754 = .text:0x00010754; // type:function size:0xD8 +fn_1_1082C = .text:0x0001082C; // type:function size:0xD8 +fn_1_10904 = .text:0x00010904; // type:function size:0x108 +fn_1_10A0C = .text:0x00010A0C; // type:function size:0x408 +fn_1_10E14 = .text:0x00010E14; // type:function size:0x404 +fn_1_11218 = .text:0x00011218; // type:function size:0x488 +fn_1_116A0 = .text:0x000116A0; // type:function size:0x45C +fn_1_11AFC = .text:0x00011AFC; // type:function size:0x478 +fn_1_11F74 = .text:0x00011F74; // type:function size:0x4 +fn_1_11F78 = .text:0x00011F78; // type:function size:0x48 +fn_1_11FC0 = .text:0x00011FC0; // type:function size:0x9C +fn_1_1205C = .text:0x0001205C; // type:function size:0x1AC +fn_1_12208 = .text:0x00012208; // type:function size:0x50 +fn_1_12258 = .text:0x00012258; // type:function size:0x48 +fn_1_122A0 = .text:0x000122A0; // type:function size:0x38 +fn_1_122D8 = .text:0x000122D8; // type:function size:0x134 +fn_1_1240C = .text:0x0001240C; // type:function size:0x2C +fn_1_12438 = .text:0x00012438; // type:function size:0x134 +fn_1_1256C = .text:0x0001256C; // type:function size:0x48 +fn_1_125B4 = .text:0x000125B4; // type:function size:0x48 +fn_1_125FC = .text:0x000125FC; // type:function size:0xF0 +fn_1_126EC = .text:0x000126EC; // type:function size:0xC0 +fn_1_127AC = .text:0x000127AC; // type:function size:0x5C +fn_1_12808 = .text:0x00012808; // type:function size:0x48 +fn_1_12850 = .text:0x00012850; // type:function size:0x100 +fn_1_12950 = .text:0x00012950; // type:function size:0x1F8 +fn_1_12B48 = .text:0x00012B48; // type:function size:0x3C +fn_1_12B84 = .text:0x00012B84; // type:function size:0x5C +fn_1_12BE0 = .text:0x00012BE0; // type:function size:0x3C +fn_1_12C1C = .text:0x00012C1C; // type:function size:0x5C +fn_1_12C78 = .text:0x00012C78; // type:function size:0x3C +fn_1_12CB4 = .text:0x00012CB4; // type:function size:0x5C +fn_1_12D10 = .text:0x00012D10; // type:function size:0x230 +fn_1_12F40 = .text:0x00012F40; // type:function size:0xF4 +fn_1_13034 = .text:0x00013034; // type:function size:0x4C +fn_1_13080 = .text:0x00013080; // type:function size:0x128 +fn_1_131A8 = .text:0x000131A8; // type:function size:0x40 +fn_1_131E8 = .text:0x000131E8; // type:function size:0x98 +fn_1_13280 = .text:0x00013280; // type:function size:0xB0 +fn_1_13330 = .text:0x00013330; // type:function size:0xAC +fn_1_133DC = .text:0x000133DC; // type:function size:0x30 +fn_1_1340C = .text:0x0001340C; // type:function size:0x98 +fn_1_134A4 = .text:0x000134A4; // type:function size:0xF4 +fn_1_13598 = .text:0x00013598; // type:function size:0x60 +fn_1_135F8 = .text:0x000135F8; // type:function size:0xD84 +fn_1_1437C = .text:0x0001437C; // type:function size:0x3DC +fn_1_14758 = .text:0x00014758; // type:function size:0x254 +_prolog = .text:0x000149AC; // type:function size:0x54 scope:global +_epilog = .text:0x00014A00; // type:function size:0x4C scope:global +fn_1_14A4C = .text:0x00014A4C; // type:function size:0x40C +fn_1_14E58 = .text:0x00014E58; // type:function size:0x40C +fn_1_15264 = .text:0x00015264; // type:function size:0x28 +fn_1_1528C = .text:0x0001528C; // type:function size:0x40 +fn_1_152CC = .text:0x000152CC; // type:function size:0xC8 +fn_1_15394 = .text:0x00015394; // type:function size:0xD8 +fn_1_1546C = .text:0x0001546C; // type:function size:0x50 +fn_1_154BC = .text:0x000154BC; // type:function size:0x5C +fn_1_15518 = .text:0x00015518; // type:function size:0x88 +fn_1_155A0 = .text:0x000155A0; // type:function size:0x74 +fn_1_15614 = .text:0x00015614; // type:function size:0x54 +fn_1_15668 = .text:0x00015668; // type:function size:0x3C +fn_1_156A4 = .text:0x000156A4; // type:function size:0x110 +fn_1_157B4 = .text:0x000157B4; // type:function size:0x178 +fn_1_1592C = .text:0x0001592C; // type:function size:0x1C8 +fn_1_15AF4 = .text:0x00015AF4; // type:function size:0x318 +fn_1_15E0C = .text:0x00015E0C; // type:function size:0x3C +fn_1_15E48 = .text:0x00015E48; // type:function size:0x4C +fn_1_15E94 = .text:0x00015E94; // type:function size:0x314 +fn_1_161A8 = .text:0x000161A8; // type:function size:0x314 +fn_1_164BC = .text:0x000164BC; // type:function size:0x27C +fn_1_16738 = .text:0x00016738; // type:function size:0x2B4 +fn_1_169EC = .text:0x000169EC; // type:function size:0x530 +fn_1_16F1C = .text:0x00016F1C; // type:function size:0x454 +fn_1_17370 = .text:0x00017370; // type:function size:0x48C +fn_1_177FC = .text:0x000177FC; // type:function size:0x71C +fn_1_17F18 = .text:0x00017F18; // type:function size:0x4C4 +fn_1_183DC = .text:0x000183DC; // type:function size:0x4FC +fn_1_188D8 = .text:0x000188D8; // type:function size:0x78C +fn_1_19064 = .text:0x00019064; // type:function size:0x4C4 +fn_1_19528 = .text:0x00019528; // type:function size:0x60 +fn_1_19588 = .text:0x00019588; // type:function size:0x64 +fn_1_195EC = .text:0x000195EC; // type:function size:0x64 +fn_1_19650 = .text:0x00019650; // type:function size:0x23C +fn_1_1988C = .text:0x0001988C; // type:function size:0x64 +fn_1_198F0 = .text:0x000198F0; // type:function size:0x68 +fn_1_19958 = .text:0x00019958; // type:function size:0x8 +fn_1_19960 = .text:0x00019960; // type:function size:0xC +fn_1_1996C = .text:0x0001996C; // type:function size:0x8 +fn_1_19974 = .text:0x00019974; // type:function size:0x344 +fn_1_19CB8 = .text:0x00019CB8; // type:function size:0x190 +fn_1_19E48 = .text:0x00019E48; // type:function size:0x4EC +fn_1_1A334 = .text:0x0001A334; // type:function size:0x110 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x48 +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x20 data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x30 data:4byte +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x30 data:4byte +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x30 data:4byte +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x8 data:4byte +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x8 data:4byte +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x8 data:4byte +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x8 data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x24 data:4byte +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:4byte +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x24 data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x8 data:4byte +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x8 data:4byte +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:4byte +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:4byte +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x8 data:4byte +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x8 data:4byte +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x10 data:4byte +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x8 data:4byte +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x8 data:4byte +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x8 data:4byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x8 data:4byte +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x30 data:4byte +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x64 data:4byte +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 data:double +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x10 data:string +lbl_1_data_70 = .data:0x00000070; // type:object size:0x10 data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0x10 data:string +lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 data:string +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 data:string +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x10 data:string +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x10 data:string +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x20 +lbl_1_data_100 = .data:0x00000100; // type:object size:0x40 +lbl_1_data_140 = .data:0x00000140; // type:object size:0xA0 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x4 data:4byte +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x4 data:4byte +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x4 data:4byte +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x1B data:string +lbl_1_data_207 = .data:0x00000207; // type:object size:0x22 data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x1A data:string +lbl_1_data_243 = .data:0x00000243; // type:object size:0x1A data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0xF +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x4 data:4byte +jumptable_1_data_270 = .data:0x00000270; // type:object size:0x54 scope:local +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x4 data:float +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x13 data:string +lbl_1_data_2DB = .data:0x000002DB; // type:object size:0x11 +jumptable_1_data_2EC = .data:0x000002EC; // type:object size:0x24 scope:local +jumptable_1_data_310 = .data:0x00000310; // type:object size:0x2C scope:local +lbl_1_data_33C = .data:0x0000033C; // type:object size:0xE data:string +lbl_1_data_34A = .data:0x0000034A; // type:object size:0x12 data:string +lbl_1_data_35C = .data:0x0000035C; // type:object size:0x14 +jumptable_1_data_370 = .data:0x00000370; // type:object size:0x30 scope:local +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0xA8 +jumptable_1_data_448 = .data:0x00000448; // type:object size:0x1C scope:local +lbl_1_data_464 = .data:0x00000464; // type:object size:0x4 +lbl_1_data_468 = .data:0x00000468; // type:object size:0xB4 +lbl_1_data_51C = .data:0x0000051C; // type:object size:0x18 +jumptable_1_data_534 = .data:0x00000534; // type:object size:0x28 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x8 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x30 +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x18 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x18 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0xA8 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x160 +lbl_1_bss_2A4 = .bss:0x000002A4; // type:object size:0x978 data:4byte +lbl_1_bss_C1C = .bss:0x00000C1C; // type:object size:0x14 data:4byte +lbl_1_bss_C30 = .bss:0x00000C30; // type:object size:0x1B4 data:4byte +lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x24 data:4byte +lbl_1_bss_E08 = .bss:0x00000E08; // type:object size:0x80 data:4byte +lbl_1_bss_E88 = .bss:0x00000E88; // type:object size:0x4060 data:4byte +lbl_1_bss_4EE8 = .bss:0x00004EE8; // type:object size:0x20 data:4byte +lbl_1_bss_4F08 = .bss:0x00004F08; // type:object size:0x8 data:4byte +lbl_1_bss_4F10 = .bss:0x00004F10; // type:object size:0x38 data:4byte diff --git a/config/GMPP01_00/rels/m436Dll/splits.txt b/config/GMPP01_00/rels/m436Dll/splits.txt new file mode 100644 index 00000000..a76a23ab --- /dev/null +++ b/config/GMPP01_00/rels/m436Dll/splits.txt @@ -0,0 +1,17 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m436Dll/main.c: + .text start:0x00000000 end:0x000110F4 + .rodata start:0x00000000 end:0x00000350 + .data start:0x00000000 end:0x0000036C + .bss start:0x00000000 end:0x000004B4 + +REL/m436Dll/sequence.c: + .text start:0x000110F4 end:0x000154A8 + .rodata start:0x00000350 end:0x000003B8 diff --git a/config/GMPP01_00/rels/m436Dll/symbols.txt b/config/GMPP01_00/rels/m436Dll/symbols.txt new file mode 100644 index 00000000..35ef65e7 --- /dev/null +++ b/config/GMPP01_00/rels/m436Dll/symbols.txt @@ -0,0 +1,352 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x1A8 +fn_1_1A8 = .text:0x000001A8; // type:function size:0x88 +fn_1_230 = .text:0x00000230; // type:function size:0x3E4 +fn_1_614 = .text:0x00000614; // type:function size:0x68 +fn_1_67C = .text:0x0000067C; // type:function size:0x6C +fn_1_6E8 = .text:0x000006E8; // type:function size:0x130 +fn_1_818 = .text:0x00000818; // type:function size:0x8C +fn_1_8A4 = .text:0x000008A4; // type:function size:0x20 +fn_1_8C4 = .text:0x000008C4; // type:function size:0x6A8 +fn_1_F6C = .text:0x00000F6C; // type:function size:0x118 +fn_1_1084 = .text:0x00001084; // type:function size:0xC4 +fn_1_1148 = .text:0x00001148; // type:function size:0x644 +fn_1_178C = .text:0x0000178C; // type:function size:0x24 +fn_1_17B0 = .text:0x000017B0; // type:function size:0x458 +fn_1_1C08 = .text:0x00001C08; // type:function size:0x458 +fn_1_2060 = .text:0x00002060; // type:function size:0x1D0 +fn_1_2230 = .text:0x00002230; // type:function size:0x1D0 +fn_1_2400 = .text:0x00002400; // type:function size:0x68 +fn_1_2468 = .text:0x00002468; // type:function size:0x68 +fn_1_24D0 = .text:0x000024D0; // type:function size:0xE8 +fn_1_25B8 = .text:0x000025B8; // type:function size:0x11C +fn_1_26D4 = .text:0x000026D4; // type:function size:0x70 +fn_1_2744 = .text:0x00002744; // type:function size:0x84 +fn_1_27C8 = .text:0x000027C8; // type:function size:0x38 +fn_1_2800 = .text:0x00002800; // type:function size:0x24 +fn_1_2824 = .text:0x00002824; // type:function size:0x38 +fn_1_285C = .text:0x0000285C; // type:function size:0x1C8 +fn_1_2A2C = .text:0x00002A24; // type:function size:0x64 +fn_1_2A90 = .text:0x00002A88; // type:function size:0x304 +fn_1_2D94 = .text:0x00002D8C; // type:function size:0x28C +fn_1_3020 = .text:0x00003018; // type:function size:0x68 +fn_1_3088 = .text:0x00003080; // type:function size:0x174 +fn_1_31FC = .text:0x000031F4; // type:function size:0x7B8 +fn_1_39B4 = .text:0x000039AC; // type:function size:0x23C +fn_1_3BF0 = .text:0x00003BE8; // type:function size:0x61C +fn_1_420C = .text:0x00004204; // type:function size:0xF8 +fn_1_4304 = .text:0x000042FC; // type:function size:0x290 +fn_1_4594 = .text:0x0000458C; // type:function size:0x318 +fn_1_48AC = .text:0x000048A4; // type:function size:0x150 +fn_1_49FC = .text:0x000049F4; // type:function size:0xB8 +fn_1_4AB4 = .text:0x00004AAC; // type:function size:0x68 +fn_1_4B1C = .text:0x00004B14; // type:function size:0x38C +fn_1_4EA8 = .text:0x00004EA0; // type:function size:0x108 +fn_1_4FB0 = .text:0x00004FA8; // type:function size:0x3DC +fn_1_538C = .text:0x00005384; // type:function size:0x28 +fn_1_53B4 = .text:0x000053AC; // type:function size:0x60 +fn_1_5414 = .text:0x0000540C; // type:function size:0x3C +fn_1_5450 = .text:0x00005448; // type:function size:0x50 +fn_1_54A0 = .text:0x00005498; // type:function size:0x168 +fn_1_5608 = .text:0x00005600; // type:function size:0x6C8 +fn_1_5CD0 = .text:0x00005CC8; // type:function size:0x390 +fn_1_6060 = .text:0x00006058; // type:function size:0x264 +fn_1_62C4 = .text:0x000062BC; // type:function size:0x624 +fn_1_68E8 = .text:0x000068E0; // type:function size:0x5C +fn_1_6944 = .text:0x0000693C; // type:function size:0x298 +fn_1_6BDC = .text:0x00006BD4; // type:function size:0xB0 +fn_1_6C8C = .text:0x00006C84; // type:function size:0xD8 +fn_1_6D64 = .text:0x00006D5C; // type:function size:0xB0 +fn_1_6E14 = .text:0x00006E0C; // type:function size:0xB0 +fn_1_6EC4 = .text:0x00006EBC; // type:function size:0xB0 +fn_1_6F74 = .text:0x00006F6C; // type:function size:0xD8 +fn_1_704C = .text:0x00007044; // type:function size:0xB0 +fn_1_70FC = .text:0x000070F4; // type:function size:0xB0 +fn_1_71AC = .text:0x000071A4; // type:function size:0x120 +fn_1_72CC = .text:0x000072C4; // type:function size:0x524 +fn_1_77F0 = .text:0x000077E8; // type:function size:0x368 +fn_1_7B58 = .text:0x00007B50; // type:function size:0x3C4 +fn_1_7F1C = .text:0x00007F14; // type:function size:0x268C +fn_1_A5A8 = .text:0x0000A5A0; // type:function size:0xE2C +fn_1_B3D4 = .text:0x0000B3CC; // type:function size:0x40C +fn_1_B7E0 = .text:0x0000B7D8; // type:function size:0x4 +fn_1_B7E4 = .text:0x0000B7DC; // type:function size:0x184 +fn_1_B968 = .text:0x0000B960; // type:function size:0x4C +fn_1_B9B4 = .text:0x0000B9AC; // type:function size:0x5C +fn_1_BA10 = .text:0x0000BA08; // type:function size:0x94 +fn_1_BAA4 = .text:0x0000BA9C; // type:function size:0x100 +fn_1_BBA4 = .text:0x0000BB9C; // type:function size:0x50 +fn_1_BBF4 = .text:0x0000BBEC; // type:function size:0x48 +fn_1_BC3C = .text:0x0000BC34; // type:function size:0x3C +fn_1_BC78 = .text:0x0000BC70; // type:function size:0x80 +fn_1_BCF8 = .text:0x0000BCF0; // type:function size:0x74 +fn_1_BD6C = .text:0x0000BD64; // type:function size:0xB0 +fn_1_BE1C = .text:0x0000BE14; // type:function size:0x50 +fn_1_BE6C = .text:0x0000BE64; // type:function size:0x48 +fn_1_BEB4 = .text:0x0000BEAC; // type:function size:0x4C +fn_1_BF00 = .text:0x0000BEF8; // type:function size:0xC8 +fn_1_BFC8 = .text:0x0000BFC0; // type:function size:0x30 +fn_1_BFF8 = .text:0x0000BFF0; // type:function size:0x98 +fn_1_C090 = .text:0x0000C088; // type:function size:0x458 +fn_1_C4E8 = .text:0x0000C4E0; // type:function size:0xFC +fn_1_C5E4 = .text:0x0000C5DC; // type:function size:0xB0 +fn_1_C694 = .text:0x0000C68C; // type:function size:0xD8 +fn_1_C76C = .text:0x0000C764; // type:function size:0xD8 +fn_1_C844 = .text:0x0000C83C; // type:function size:0xC8 +fn_1_C90C = .text:0x0000C904; // type:function size:0x398 +fn_1_CCA4 = .text:0x0000CC9C; // type:function size:0x374 +fn_1_D018 = .text:0x0000D010; // type:function size:0x32C +fn_1_D344 = .text:0x0000D33C; // type:function size:0xD4 +fn_1_D418 = .text:0x0000D410; // type:function size:0x2A8 +fn_1_D6C0 = .text:0x0000D6B8; // type:function size:0x24 +fn_1_D6E4 = .text:0x0000D6DC; // type:function size:0x37C +fn_1_DA60 = .text:0x0000DA58; // type:function size:0xA0 +fn_1_DB00 = .text:0x0000DAF8; // type:function size:0x2BC +fn_1_DDBC = .text:0x0000DDB4; // type:function size:0xF4 +fn_1_DEB0 = .text:0x0000DEA8; // type:function size:0x200 +fn_1_E0B0 = .text:0x0000E0A8; // type:function size:0x94 +fn_1_E144 = .text:0x0000E13C; // type:function size:0x248 +fn_1_E38C = .text:0x0000E384; // type:function size:0x140 +fn_1_E4CC = .text:0x0000E4C4; // type:function size:0xA0 +fn_1_E56C = .text:0x0000E564; // type:function size:0xBC +fn_1_E628 = .text:0x0000E620; // type:function size:0x58 +fn_1_E680 = .text:0x0000E678; // type:function size:0x90 +fn_1_E710 = .text:0x0000E708; // type:function size:0x220 +fn_1_E930 = .text:0x0000E928; // type:function size:0xD4 +fn_1_EA04 = .text:0x0000E9FC; // type:function size:0x348 +fn_1_ED4C = .text:0x0000ED44; // type:function size:0xC4 +fn_1_EE10 = .text:0x0000EE08; // type:function size:0x5F4 +fn_1_F404 = .text:0x0000F3FC; // type:function size:0xEC +fn_1_F4F0 = .text:0x0000F4E8; // type:function size:0x48 +fn_1_F538 = .text:0x0000F530; // type:function size:0x30 +fn_1_F568 = .text:0x0000F560; // type:function size:0x98 +fn_1_F600 = .text:0x0000F5F8; // type:function size:0xB0 +fn_1_F6B0 = .text:0x0000F6A8; // type:function size:0xAC +fn_1_F75C = .text:0x0000F754; // type:function size:0x30 +fn_1_F78C = .text:0x0000F784; // type:function size:0x98 +fn_1_F824 = .text:0x0000F81C; // type:function size:0x100 +fn_1_F924 = .text:0x0000F91C; // type:function size:0x60 +fn_1_F984 = .text:0x0000F97C; // type:function size:0x8E8 +fn_1_1026C = .text:0x00010264; // type:function size:0x404 +fn_1_10670 = .text:0x00010668; // type:function size:0x1CC +_prolog = .text:0x00010834; // type:function size:0x54 scope:global +_epilog = .text:0x00010888; // type:function size:0x4C scope:global +fn_1_108DC = .text:0x000108D4; // type:function size:0x410 +ObjectSetup = .text:0x00010CE4; // type:function size:0x410 +fn_1_110FC = .text:0x000110F4; // type:function size:0x40 +fn_1_1113C = .text:0x00011134; // type:function size:0x28 +fn_1_11164 = .text:0x0001115C; // type:function size:0xC8 +fn_1_1122C = .text:0x00011224; // type:function size:0xC8 +fn_1_112F4 = .text:0x000112EC; // type:function size:0xD8 +fn_1_113CC = .text:0x000113C4; // type:function size:0x33C +fn_1_11708 = .text:0x00011700; // type:function size:0x110 +fn_1_11818 = .text:0x00011810; // type:function size:0x178 +fn_1_11990 = .text:0x00011988; // type:function size:0x188 +fn_1_11B18 = .text:0x00011B10; // type:function size:0x1B0 +fn_1_11CC8 = .text:0x00011CC0; // type:function size:0x50 +fn_1_11D18 = .text:0x00011D10; // type:function size:0x5C +fn_1_11D74 = .text:0x00011D6C; // type:function size:0x88 +fn_1_11DFC = .text:0x00011DF4; // type:function size:0x74 +fn_1_11E70 = .text:0x00011E68; // type:function size:0x94 +fn_1_11F04 = .text:0x00011EFC; // type:function size:0x3C +fn_1_11F40 = .text:0x00011F38; // type:function size:0x318 +fn_1_12258 = .text:0x00012250; // type:function size:0x3C +fn_1_12294 = .text:0x0001228C; // type:function size:0x4C +fn_1_122E0 = .text:0x000122D8; // type:function size:0x314 +fn_1_125F4 = .text:0x000125EC; // type:function size:0x314 +fn_1_12908 = .text:0x00012900; // type:function size:0x27C +fn_1_12B84 = .text:0x00012B7C; // type:function size:0x2B4 +fn_1_12E38 = .text:0x00012E30; // type:function size:0x530 +fn_1_13368 = .text:0x00013360; // type:function size:0x454 +fn_1_137BC = .text:0x000137B4; // type:function size:0x48C +fn_1_13C48 = .text:0x00013C40; // type:function size:0x71C +fn_1_14364 = .text:0x0001435C; // type:function size:0x4C4 +fn_1_14828 = .text:0x00014820; // type:function size:0x4FC +fn_1_14D24 = .text:0x00014D1C; // type:function size:0x78C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x30 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x30 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x20 +lbl_1_data_40 = .data:0x00000040; // type:object size:0xA0 +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x4 data:4byte +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x4 data:4byte +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:4byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x1B scope:local data:string +lbl_1_data_107 = .data:0x00000107; // type:object size:0x22 scope:local data:string +lbl_1_data_129 = .data:0x00000129; // type:object size:0x1A scope:local data:string +lbl_1_data_143 = .data:0x00000143; // type:object size:0x1A scope:local data:string +lbl_1_data_15D = .data:0x0000015D; // type:object size:0xE scope:local data:string +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 data:4byte +lbl_1_data_170 = .data:0x00000170; // type:object size:0x12 scope:local data:string +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x12 scope:local data:string +jumptable_1_data_1B8 = .data:0x000001B8; // type:object size:0x30 scope:local +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x6C +lbl_1_data_254 = .data:0x00000254; // type:object size:0xC data:float +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x12 scope:local data:string +lbl_1_data_27E = .data:0x0000027E; // type:object size:0x12 scope:local data:string +lbl_1_data_290 = .data:0x00000290; // type:object size:0x9C +lbl_1_data_32C = .data:0x0000032C; // type:object size:0x18 +jumptable_1_data_344 = .data:0x00000344; // type:object size:0x28 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x18 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x30 data:float +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x30 data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x18 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x18 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0xA8 data:4byte +lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x28 data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x14 data:4byte +lbl_1_bss_1BC = .bss:0x000001BC; // type:object size:0x64 data:4byte +lbl_1_bss_220 = .bss:0x00000220; // type:object size:0x14 data:4byte +lbl_1_bss_234 = .bss:0x00000234; // type:object size:0xF8 data:4byte +lbl_1_bss_32C = .bss:0x0000032C; // type:object size:0x78 data:4byte +lbl_1_bss_3A4 = .bss:0x000003A4; // type:object size:0x8 data:4byte +lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x38 data:4byte +lbl_1_bss_3E4 = .bss:0x000003E4; // type:object size:0xC0 +lbl_1_bss_4A4 = .bss:0x000004A4; // type:object size:0x10 data:4byte diff --git a/config/GMPP01_00/rels/m437Dll/splits.txt b/config/GMPP01_00/rels/m437Dll/splits.txt new file mode 100644 index 00000000..9337d9d2 --- /dev/null +++ b/config/GMPP01_00/rels/m437Dll/splits.txt @@ -0,0 +1,18 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m437Dll/main.c: + .text start:0x00000000 end:0x00011340 + .rodata start:0x00000000 end:0x000005D0 + .data start:0x00000000 end:0x00000350 + .bss start:0x00000000 end:0x000009A8 + +REL/m437Dll/sequence.c: + .text start:0x00011340 end:0x00016794 + .rodata start:0x000005D0 end:0x00000640 + .data start:0x00000350 end:0x00000430 diff --git a/config/GMPP01_00/rels/m437Dll/symbols.txt b/config/GMPP01_00/rels/m437Dll/symbols.txt new file mode 100644 index 00000000..fac6c7f3 --- /dev/null +++ b/config/GMPP01_00/rels/m437Dll/symbols.txt @@ -0,0 +1,411 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x1A8 +fn_1_1A8 = .text:0x000001A8; // type:function size:0x88 +fn_1_230 = .text:0x00000230; // type:function size:0x68 +fn_1_298 = .text:0x00000298; // type:function size:0x6C +fn_1_304 = .text:0x00000304; // type:function size:0x130 +fn_1_434 = .text:0x00000434; // type:function size:0x8C +fn_1_4C0 = .text:0x000004C0; // type:function size:0x3E4 +fn_1_8A4 = .text:0x000008A4; // type:function size:0x20 +fn_1_8C4 = .text:0x000008C4; // type:function size:0x20 +fn_1_8E4 = .text:0x000008E4; // type:function size:0x6A8 +fn_1_F8C = .text:0x00000F8C; // type:function size:0x134 +fn_1_10C0 = .text:0x000010C0; // type:function size:0xC4 +fn_1_1184 = .text:0x00001184; // type:function size:0x38 +fn_1_11BC = .text:0x000011BC; // type:function size:0x24 +fn_1_11E0 = .text:0x000011E0; // type:function size:0x38 +fn_1_1218 = .text:0x00001218; // type:function size:0x1C8 +fn_1_13E8 = .text:0x000013E0; // type:function size:0x64 +fn_1_144C = .text:0x00001444; // type:function size:0x644 +fn_1_1A90 = .text:0x00001A88; // type:function size:0x24 +fn_1_1AB4 = .text:0x00001AAC; // type:function size:0x458 +fn_1_1F0C = .text:0x00001F04; // type:function size:0x1EC +fn_1_20F8 = .text:0x000020F0; // type:function size:0x1EC +fn_1_22E4 = .text:0x000022DC; // type:function size:0x458 +fn_1_273C = .text:0x00002734; // type:function size:0x68 +fn_1_27A4 = .text:0x0000279C; // type:function size:0x68 +fn_1_280C = .text:0x00002804; // type:function size:0xE8 +fn_1_28F4 = .text:0x000028EC; // type:function size:0x11C +fn_1_2A10 = .text:0x00002A08; // type:function size:0x84 +fn_1_2A94 = .text:0x00002A8C; // type:function size:0x70 +fn_1_2B04 = .text:0x00002AFC; // type:function size:0xA8 +fn_1_2BAC = .text:0x00002BA4; // type:function size:0x10 +fn_1_2BBC = .text:0x00002BB4; // type:function size:0x5D8 +fn_1_3194 = .text:0x0000318C; // type:function size:0xCC +fn_1_3260 = .text:0x00003258; // type:function size:0x1B0 +fn_1_3410 = .text:0x00003408; // type:function size:0x284 +fn_1_3694 = .text:0x0000368C; // type:function size:0x20 +fn_1_36B4 = .text:0x000036AC; // type:function size:0x120 +fn_1_37D4 = .text:0x000037CC; // type:function size:0x14 +fn_1_37E8 = .text:0x000037E0; // type:function size:0x1A8 +fn_1_3990 = .text:0x00003988; // type:function size:0x34 +fn_1_39C4 = .text:0x000039BC; // type:function size:0x20 +fn_1_39E4 = .text:0x000039DC; // type:function size:0x16C +fn_1_3B50 = .text:0x00003B48; // type:function size:0x14 +fn_1_3B64 = .text:0x00003B5C; // type:function size:0x154 +fn_1_3CB8 = .text:0x00003CB0; // type:function size:0x88 +fn_1_3D40 = .text:0x00003D38; // type:function size:0x204 +fn_1_3F44 = .text:0x00003F3C; // type:function size:0x5F4 +fn_1_4538 = .text:0x00004530; // type:function size:0x188 +fn_1_46C0 = .text:0x000046B8; // type:function size:0x268 +fn_1_4928 = .text:0x00004920; // type:function size:0x10 +fn_1_4938 = .text:0x00004930; // type:function size:0x1C0 +fn_1_4AF8 = .text:0x00004AF0; // type:function size:0xB4 +fn_1_4BAC = .text:0x00004BA4; // type:function size:0x94 +fn_1_4C40 = .text:0x00004C38; // type:function size:0x1C0 +fn_1_4E00 = .text:0x00004DF8; // type:function size:0xE0 +fn_1_4EE0 = .text:0x00004ED8; // type:function size:0x268 +fn_1_5148 = .text:0x00005140; // type:function size:0x94 +fn_1_51DC = .text:0x000051D4; // type:function size:0x94 +fn_1_5270 = .text:0x00005268; // type:function size:0x94 +fn_1_5304 = .text:0x000052FC; // type:function size:0x28 +fn_1_532C = .text:0x00005324; // type:function size:0x32C +fn_1_5658 = .text:0x00005650; // type:function size:0x32C +fn_1_5984 = .text:0x0000597C; // type:function size:0x154 +fn_1_5AD8 = .text:0x00005AD0; // type:function size:0x4E4 +fn_1_5FBC = .text:0x00005FB4; // type:function size:0x150 +fn_1_610C = .text:0x00006104; // type:function size:0x28 +fn_1_6134 = .text:0x0000612C; // type:function size:0x64 +fn_1_6198 = .text:0x00006190; // type:function size:0x68 +fn_1_6200 = .text:0x000061F8; // type:function size:0x380 +fn_1_6580 = .text:0x00006578; // type:function size:0x60 +fn_1_65E0 = .text:0x000065D8; // type:function size:0xB18 +fn_1_70F8 = .text:0x000070F0; // type:function size:0x3C +fn_1_7134 = .text:0x0000712C; // type:function size:0x198 +fn_1_72CC = .text:0x000072C4; // type:function size:0x1E4 +fn_1_74B0 = .text:0x000074A8; // type:function size:0x1C8 +fn_1_7678 = .text:0x00007670; // type:function size:0x368 +fn_1_79E0 = .text:0x000079D8; // type:function size:0x34 +fn_1_7A14 = .text:0x00007A0C; // type:function size:0x8CC +fn_1_82E0 = .text:0x000082D8; // type:function size:0x28 +fn_1_8308 = .text:0x00008300; // type:function size:0x1BC +fn_1_84C4 = .text:0x000084BC; // type:function size:0x1C0 +fn_1_8684 = .text:0x0000867C; // type:function size:0xB0 +fn_1_8734 = .text:0x0000872C; // type:function size:0xF0 +fn_1_8824 = .text:0x0000881C; // type:function size:0xB0 +fn_1_88D4 = .text:0x000088CC; // type:function size:0xB0 +fn_1_8984 = .text:0x0000897C; // type:function size:0xB0 +fn_1_8A34 = .text:0x00008A2C; // type:function size:0xF0 +fn_1_8B24 = .text:0x00008B1C; // type:function size:0xB0 +fn_1_8BD4 = .text:0x00008BCC; // type:function size:0xB0 +fn_1_8C84 = .text:0x00008C7C; // type:function size:0x120 +fn_1_8DA4 = .text:0x00008D9C; // type:function size:0x57C +fn_1_9320 = .text:0x00009318; // type:function size:0x3B8 +fn_1_96D8 = .text:0x000096D0; // type:function size:0x454 +fn_1_9B2C = .text:0x00009B24; // type:function size:0x474 +fn_1_9FA0 = .text:0x00009F98; // type:function size:0x4A0 +fn_1_A440 = .text:0x0000A438; // type:function size:0x420 +fn_1_A860 = .text:0x0000A858; // type:function size:0x4 +fn_1_A864 = .text:0x0000A85C; // type:function size:0x184 +fn_1_A9E8 = .text:0x0000A9E0; // type:function size:0x3C +fn_1_AA24 = .text:0x0000AA1C; // type:function size:0x5C +fn_1_AA80 = .text:0x0000AA78; // type:function size:0x3C +fn_1_AABC = .text:0x0000AAB4; // type:function size:0x5C +fn_1_AB18 = .text:0x0000AB10; // type:function size:0x50 +fn_1_AB68 = .text:0x0000AB60; // type:function size:0x48 +fn_1_ABB0 = .text:0x0000ABA8; // type:function size:0x3C +fn_1_ABEC = .text:0x0000ABE4; // type:function size:0x84 +fn_1_AC70 = .text:0x0000AC68; // type:function size:0x5C +fn_1_ACCC = .text:0x0000ACC4; // type:function size:0x5C +fn_1_AD28 = .text:0x0000AD20; // type:function size:0x70 +fn_1_AD98 = .text:0x0000AD90; // type:function size:0x48 +fn_1_ADE0 = .text:0x0000ADD8; // type:function size:0x3C +fn_1_AE1C = .text:0x0000AE14; // type:function size:0x5C +fn_1_AE78 = .text:0x0000AE70; // type:function size:0xD4 +fn_1_AF4C = .text:0x0000AF44; // type:function size:0x248 +fn_1_B194 = .text:0x0000B18C; // type:function size:0x30 +fn_1_B1C4 = .text:0x0000B1BC; // type:function size:0x8C +fn_1_B250 = .text:0x0000B248; // type:function size:0x20 +fn_1_B270 = .text:0x0000B268; // type:function size:0x180 +fn_1_B3F0 = .text:0x0000B3E8; // type:function size:0x104 +fn_1_B4F4 = .text:0x0000B4EC; // type:function size:0x2EC +fn_1_B7E0 = .text:0x0000B7D8; // type:function size:0xF0 +fn_1_B8D0 = .text:0x0000B8C8; // type:function size:0x348 +fn_1_BC18 = .text:0x0000BC10; // type:function size:0xB0 +fn_1_BCC8 = .text:0x0000BCC0; // type:function size:0xF0 +fn_1_BDB8 = .text:0x0000BDB0; // type:function size:0xC8 +fn_1_BE80 = .text:0x0000BE78; // type:function size:0x3C8 +fn_1_C248 = .text:0x0000C240; // type:function size:0x3C8 +fn_1_C610 = .text:0x0000C608; // type:function size:0x3B4 +fn_1_C9C4 = .text:0x0000C9BC; // type:function size:0x35C +fn_1_CD20 = .text:0x0000CD18; // type:function size:0x31C +fn_1_D03C = .text:0x0000D034; // type:function size:0x384 +fn_1_D3C0 = .text:0x0000D3B8; // type:function size:0x394 +fn_1_D754 = .text:0x0000D74C; // type:function size:0x1DC +fn_1_D930 = .text:0x0000D928; // type:function size:0x3BC +fn_1_DCEC = .text:0x0000DCE4; // type:function size:0x1D8 +fn_1_DEC4 = .text:0x0000DEBC; // type:function size:0x3E4 +fn_1_E2A8 = .text:0x0000E2A0; // type:function size:0x2F0 +fn_1_E598 = .text:0x0000E590; // type:function size:0x9C +fn_1_E634 = .text:0x0000E62C; // type:function size:0x310 +fn_1_E944 = .text:0x0000E93C; // type:function size:0x5C +fn_1_E9A0 = .text:0x0000E998; // type:function size:0x104 +fn_1_EAA4 = .text:0x0000EA9C; // type:function size:0x94 +fn_1_EB38 = .text:0x0000EB30; // type:function size:0xD8 +fn_1_EC10 = .text:0x0000EC08; // type:function size:0x1C4 +fn_1_EDD4 = .text:0x0000EDCC; // type:function size:0xCC +fn_1_EEA0 = .text:0x0000EE98; // type:function size:0x12C +fn_1_EFCC = .text:0x0000EFC4; // type:function size:0xEC +fn_1_F0B8 = .text:0x0000F0B0; // type:function size:0x40 +fn_1_F0F8 = .text:0x0000F0F0; // type:function size:0x4C +fn_1_F144 = .text:0x0000F13C; // type:function size:0x48 +fn_1_F18C = .text:0x0000F184; // type:function size:0x108 +fn_1_F294 = .text:0x0000F28C; // type:function size:0x144 +fn_1_F3D8 = .text:0x0000F3D0; // type:function size:0xBC +fn_1_F494 = .text:0x0000F48C; // type:function size:0x40 +fn_1_F4D4 = .text:0x0000F4CC; // type:function size:0x30 +fn_1_F504 = .text:0x0000F4FC; // type:function size:0x8C +fn_1_F590 = .text:0x0000F588; // type:function size:0xB0 +fn_1_F640 = .text:0x0000F638; // type:function size:0xAC +fn_1_F6EC = .text:0x0000F6E4; // type:function size:0x30 +fn_1_F71C = .text:0x0000F714; // type:function size:0x8C +fn_1_F7A8 = .text:0x0000F7A0; // type:function size:0xF4 +fn_1_F89C = .text:0x0000F894; // type:function size:0x10 +fn_1_F8AC = .text:0x0000F8A4; // type:function size:0xB90 +fn_1_1043C = .text:0x00010434; // type:function size:0x468 +fn_1_108A4 = .text:0x0001089C; // type:function size:0x1EC +_prolog = .text:0x00010A88; // type:function size:0x54 scope:global +_epilog = .text:0x00010ADC; // type:function size:0x4C scope:global +fn_1_10B30 = .text:0x00010B28; // type:function size:0x40C +ObjectSetup = .text:0x00010F34; // type:function size:0x40C +fn_1_11348 = .text:0x00011340; // type:function size:0x28 +fn_1_11370 = .text:0x00011368; // type:function size:0x40 +fn_1_113B0 = .text:0x000113A8; // type:function size:0xC8 +fn_1_11478 = .text:0x00011470; // type:function size:0xC8 +fn_1_11540 = .text:0x00011538; // type:function size:0xD8 +fn_1_11618 = .text:0x00011610; // type:function size:0x50 +fn_1_11668 = .text:0x00011660; // type:function size:0x5C +fn_1_116C4 = .text:0x000116BC; // type:function size:0x88 +fn_1_1174C = .text:0x00011744; // type:function size:0x74 +fn_1_117C0 = .text:0x000117B8; // type:function size:0x94 +fn_1_11854 = .text:0x0001184C; // type:function size:0x3C +fn_1_11890 = .text:0x00011888; // type:function size:0x110 +fn_1_119A0 = .text:0x00011998; // type:function size:0x178 +fn_1_11B18 = .text:0x00011B10; // type:function size:0x1C8 +fn_1_11CE0 = .text:0x00011CD8; // type:function size:0x7B4 +fn_1_12494 = .text:0x0001248C; // type:function size:0x4C4 +fn_1_12958 = .text:0x00012950; // type:function size:0x60 +fn_1_129B8 = .text:0x000129B0; // type:function size:0x64 +fn_1_12A1C = .text:0x00012A14; // type:function size:0x64 +fn_1_12A80 = .text:0x00012A78; // type:function size:0x3C +fn_1_12ABC = .text:0x00012AB4; // type:function size:0x44 +fn_1_12B00 = .text:0x00012AF8; // type:function size:0x314 +fn_1_12E14 = .text:0x00012E0C; // type:function size:0x314 +fn_1_13128 = .text:0x00013120; // type:function size:0x27C +fn_1_133A4 = .text:0x0001339C; // type:function size:0x2B4 +fn_1_13658 = .text:0x00013650; // type:function size:0x530 +fn_1_13B88 = .text:0x00013B80; // type:function size:0x454 +fn_1_13FDC = .text:0x00013FD4; // type:function size:0x48C +fn_1_14468 = .text:0x00014460; // type:function size:0x71C +fn_1_14B84 = .text:0x00014B7C; // type:function size:0x4C4 +fn_1_15048 = .text:0x00015040; // type:function size:0x4FC +fn_1_15544 = .text:0x0001553C; // type:function size:0x78C +fn_1_15CD0 = .text:0x00015CC8; // type:function size:0x6C +fn_1_15D3C = .text:0x00015D34; // type:function size:0x68 +fn_1_15DA4 = .text:0x00015D9C; // type:function size:0x10 +fn_1_15DB4 = .text:0x00015DAC; // type:function size:0xC +fn_1_15DC0 = .text:0x00015DB8; // type:function size:0x8 +fn_1_15DC8 = .text:0x00015DC0; // type:function size:0x48 +fn_1_15E10 = .text:0x00015E08; // type:function size:0x344 +fn_1_16154 = .text:0x0001614C; // type:function size:0x190 +fn_1_162E4 = .text:0x000162DC; // type:function size:0x64 +fn_1_16348 = .text:0x00016340; // type:function size:0x4 +fn_1_1634C = .text:0x00016344; // type:function size:0x164 +fn_1_164B0 = .text:0x000164A8; // type:function size:0x15C +fn_1_1660C = .text:0x00016604; // type:function size:0x190 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x48 scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x78 scope:local +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x78 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC8 scope:local +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x78 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x30 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x30 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x30 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x30 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x18 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 scope:local data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xA0 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x1B scope:local data:string +lbl_1_data_C7 = .data:0x000000C7; // type:object size:0x22 scope:local data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x1A scope:local data:string +lbl_1_data_103 = .data:0x00000103; // type:object size:0x1A scope:local data:string +lbl_1_data_11D = .data:0x0000011D; // type:object size:0xE scope:local data:string +lbl_1_data_12C = .data:0x0000012C; // type:object size:0x4 data:4byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x16 scope:local data:string +lbl_1_data_146 = .data:0x00000146; // type:object size:0x13 scope:local data:string +lbl_1_data_159 = .data:0x00000159; // type:object size:0xE scope:local data:string +lbl_1_data_167 = .data:0x00000167; // type:object size:0xE scope:local data:string +lbl_1_data_175 = .data:0x00000175; // type:object size:0x12 scope:local data:string +lbl_1_data_188 = .data:0x00000188; // type:object size:0x4 data:float +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x14 scope:local data:string +jumptable_1_data_1A0 = .data:0x000001A0; // type:object size:0x20 scope:local +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x12 scope:local data:string +jumptable_1_data_1D4 = .data:0x000001D4; // type:object size:0x30 scope:local +lbl_1_data_204 = .data:0x00000204; // type:object size:0x78 +lbl_1_data_27C = .data:0x0000027C; // type:object size:0x90 +lbl_1_data_30C = .data:0x0000030C; // type:object size:0x18 +jumptable_1_data_324 = .data:0x00000324; // type:object size:0x2C scope:local +lbl_1_data_350 = .data:0x00000350; // type:object size:0x10 scope:local data:string +lbl_1_data_360 = .data:0x00000360; // type:object size:0x10 scope:local data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0x10 scope:local data:string +lbl_1_data_380 = .data:0x00000380; // type:object size:0x10 scope:local data:string +lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x10 scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x10 scope:local data:string +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x10 scope:local data:string +lbl_1_data_3D0 = .data:0x000003D0; // type:object size:0x20 +lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x40 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x18 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x18 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x18 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0xE4 data:4byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:float +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x4 data:float +lbl_1_bss_154 = .bss:0x00000154; // type:object size:0x4 data:float +lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x4 data:float +lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x4 data:float +lbl_1_bss_160 = .bss:0x00000160; // type:object size:0x7C data:4byte +lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0x4E0 data:4byte +lbl_1_bss_6BC = .bss:0x000006BC; // type:object size:0x218 data:4byte +lbl_1_bss_8D4 = .bss:0x000008D4; // type:object size:0x28 data:4byte +lbl_1_bss_8FC = .bss:0x000008FC; // type:object size:0x24 data:4byte +lbl_1_bss_920 = .bss:0x00000920; // type:object size:0x24 data:4byte +lbl_1_bss_944 = .bss:0x00000944; // type:object size:0x24 data:4byte +lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x40 data:4byte diff --git a/config/GMPP01_00/rels/m438Dll/splits.txt b/config/GMPP01_00/rels/m438Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m438Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m438Dll/symbols.txt b/config/GMPP01_00/rels/m438Dll/symbols.txt new file mode 100644 index 00000000..6097d75e --- /dev/null +++ b/config/GMPP01_00/rels/m438Dll/symbols.txt @@ -0,0 +1,458 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x43C +fn_1_4DC = .text:0x000004DC; // type:function size:0x20 +fn_1_4FC = .text:0x000004FC; // type:function size:0x478 +fn_1_974 = .text:0x00000974; // type:function size:0x7F4 +fn_1_1168 = .text:0x00001168; // type:function size:0x90 +fn_1_11F8 = .text:0x000011F8; // type:function size:0x19C +fn_1_1394 = .text:0x00001394; // type:function size:0x9C0 +fn_1_1D54 = .text:0x00001D54; // type:function size:0x1AC +fn_1_1F00 = .text:0x00001F00; // type:function size:0x164 +fn_1_2064 = .text:0x00002064; // type:function size:0x4F4 +fn_1_2558 = .text:0x00002558; // type:function size:0xA0 +fn_1_25F8 = .text:0x000025F8; // type:function size:0x2B8 +fn_1_28B0 = .text:0x000028B0; // type:function size:0x28 +fn_1_28D8 = .text:0x000028D8; // type:function size:0x80 +fn_1_2958 = .text:0x00002958; // type:function size:0x3EC +fn_1_2D44 = .text:0x00002D44; // type:function size:0xFC +fn_1_2E40 = .text:0x00002E40; // type:function size:0x770 +fn_1_35B0 = .text:0x000035B0; // type:function size:0x4 +fn_1_35B4 = .text:0x000035B4; // type:function size:0xDB4 +fn_1_4368 = .text:0x00004368; // type:function size:0x3B0 +fn_1_4718 = .text:0x00004718; // type:function size:0x260 +fn_1_4978 = .text:0x00004978; // type:function size:0x5CC +fn_1_4F44 = .text:0x00004F44; // type:function size:0xDFC +fn_1_5D40 = .text:0x00005D40; // type:function size:0x570 +fn_1_62B0 = .text:0x000062B0; // type:function size:0xF4 +fn_1_63A4 = .text:0x000063A4; // type:function size:0x68C +fn_1_6A30 = .text:0x00006A30; // type:function size:0x8C4 +fn_1_72F4 = .text:0x000072F4; // type:function size:0x558 +fn_1_784C = .text:0x0000784C; // type:function size:0x300 +fn_1_7B4C = .text:0x00007B4C; // type:function size:0x64 +fn_1_7BB0 = .text:0x00007BB0; // type:function size:0x40 +fn_1_7BF0 = .text:0x00007BF0; // type:function size:0xA0 +fn_1_7C90 = .text:0x00007C90; // type:function size:0x94 +fn_1_7D24 = .text:0x00007D24; // type:function size:0x84 +fn_1_7DA8 = .text:0x00007DA8; // type:function size:0x24 +fn_1_7DCC = .text:0x00007DCC; // type:function size:0x104 +fn_1_7ED0 = .text:0x00007ED0; // type:function size:0x168 +fn_1_8038 = .text:0x00008038; // type:function size:0x120 +fn_1_8158 = .text:0x00008158; // type:function size:0x39C +fn_1_84F4 = .text:0x000084F4; // type:function size:0x250 +fn_1_8744 = .text:0x00008744; // type:function size:0x78 +fn_1_87BC = .text:0x000087BC; // type:function size:0x11C +fn_1_88D8 = .text:0x000088D8; // type:function size:0x78 +fn_1_8950 = .text:0x00008950; // type:function size:0x2D8 +fn_1_8C28 = .text:0x00008C28; // type:function size:0x2B8 +fn_1_8EE0 = .text:0x00008EE0; // type:function size:0x154 +fn_1_9034 = .text:0x00009034; // type:function size:0x3E0 +fn_1_9414 = .text:0x00009414; // type:function size:0x214 +fn_1_9628 = .text:0x00009628; // type:function size:0x198 +fn_1_97C0 = .text:0x000097C0; // type:function size:0xD8 +fn_1_9898 = .text:0x00009898; // type:function size:0xBC +fn_1_9954 = .text:0x00009954; // type:function size:0x33C +fn_1_9C90 = .text:0x00009C90; // type:function size:0x4B0 +fn_1_A140 = .text:0x0000A140; // type:function size:0x4C0 +fn_1_A600 = .text:0x0000A600; // type:function size:0x7C +fn_1_A67C = .text:0x0000A67C; // type:function size:0x4 +fn_1_A680 = .text:0x0000A680; // type:function size:0x270 +fn_1_A8F0 = .text:0x0000A8F0; // type:function size:0x51C +fn_1_AE0C = .text:0x0000AE0C; // type:function size:0x628 +fn_1_B434 = .text:0x0000B434; // type:function size:0x98 +fn_1_B4CC = .text:0x0000B4CC; // type:function size:0x70 +fn_1_B53C = .text:0x0000B53C; // type:function size:0x4 +fn_1_B540 = .text:0x0000B540; // type:function size:0x9D4 +fn_1_BF14 = .text:0x0000BF14; // type:function size:0x844 +fn_1_C758 = .text:0x0000C758; // type:function size:0x184 +fn_1_C8DC = .text:0x0000C8DC; // type:function size:0x1C8 +fn_1_CAA4 = .text:0x0000CAA4; // type:function size:0x94C +fn_1_D3F0 = .text:0x0000D3F0; // type:function size:0x180 +fn_1_D570 = .text:0x0000D570; // type:function size:0x4E8 +fn_1_DA58 = .text:0x0000DA58; // type:function size:0x43C +fn_1_DE94 = .text:0x0000DE94; // type:function size:0xD0 +fn_1_DF64 = .text:0x0000DF64; // type:function size:0xC4 +fn_1_E028 = .text:0x0000E028; // type:function size:0x454 +fn_1_E47C = .text:0x0000E47C; // type:function size:0x11C +fn_1_E598 = .text:0x0000E598; // type:function size:0xB4 +fn_1_E64C = .text:0x0000E64C; // type:function size:0x138 +fn_1_E784 = .text:0x0000E784; // type:function size:0xDA8 +fn_1_F52C = .text:0x0000F52C; // type:function size:0x12C +fn_1_F658 = .text:0x0000F658; // type:function size:0x1C +fn_1_F674 = .text:0x0000F674; // type:function size:0x2C +fn_1_F6A0 = .text:0x0000F6A0; // type:function size:0x1C +fn_1_F6BC = .text:0x0000F6BC; // type:function size:0x184 +fn_1_F840 = .text:0x0000F840; // type:function size:0xA0 +fn_1_F8E0 = .text:0x0000F8E0; // type:function size:0xA8 +fn_1_F988 = .text:0x0000F988; // type:function size:0x8C +fn_1_FA14 = .text:0x0000FA14; // type:function size:0x98 +fn_1_FAAC = .text:0x0000FAAC; // type:function size:0x288 +fn_1_FD34 = .text:0x0000FD34; // type:function size:0x518 +fn_1_1024C = .text:0x0001024C; // type:function size:0x564 +fn_1_107B0 = .text:0x000107B0; // type:function size:0x128 +fn_1_108D8 = .text:0x000108D8; // type:function size:0x2C +fn_1_10904 = .text:0x00010904; // type:function size:0x3A8 +fn_1_10CAC = .text:0x00010CAC; // type:function size:0x254 +fn_1_10F00 = .text:0x00010F00; // type:function size:0x80 +fn_1_10F80 = .text:0x00010F80; // type:function size:0x8C +fn_1_1100C = .text:0x0001100C; // type:function size:0x9C +fn_1_110A8 = .text:0x000110A8; // type:function size:0x5A4 +fn_1_1164C = .text:0x0001164C; // type:function size:0x238 +fn_1_11884 = .text:0x00011884; // type:function size:0x6C +fn_1_118F0 = .text:0x000118F0; // type:function size:0x70 +fn_1_11960 = .text:0x00011960; // type:function size:0x74 +fn_1_119D4 = .text:0x000119D4; // type:function size:0x84 +fn_1_11A58 = .text:0x00011A58; // type:function size:0x88 +fn_1_11AE0 = .text:0x00011AE0; // type:function size:0x8C +fn_1_11B6C = .text:0x00011B6C; // type:function size:0x70 +fn_1_11BDC = .text:0x00011BDC; // type:function size:0x74 +fn_1_11C50 = .text:0x00011C50; // type:function size:0x6C +fn_1_11CBC = .text:0x00011CBC; // type:function size:0x70 +fn_1_11D2C = .text:0x00011D2C; // type:function size:0x74 +fn_1_11DA0 = .text:0x00011DA0; // type:function size:0x6C +fn_1_11E0C = .text:0x00011E0C; // type:function size:0x70 +fn_1_11E7C = .text:0x00011E7C; // type:function size:0x74 +fn_1_11EF0 = .text:0x00011EF0; // type:function size:0x6C +fn_1_11F5C = .text:0x00011F5C; // type:function size:0x70 +fn_1_11FCC = .text:0x00011FCC; // type:function size:0x74 +fn_1_12040 = .text:0x00012040; // type:function size:0x44 +fn_1_12084 = .text:0x00012084; // type:function size:0x70 +fn_1_120F4 = .text:0x000120F4; // type:function size:0x74 +fn_1_12168 = .text:0x00012168; // type:function size:0x44 +fn_1_121AC = .text:0x000121AC; // type:function size:0x70 +fn_1_1221C = .text:0x0001221C; // type:function size:0x74 +fn_1_12290 = .text:0x00012290; // type:function size:0x5C +fn_1_122EC = .text:0x000122EC; // type:function size:0x80 +fn_1_1236C = .text:0x0001236C; // type:function size:0x74 +fn_1_123E0 = .text:0x000123E0; // type:function size:0x78 +fn_1_12458 = .text:0x00012458; // type:function size:0x68 +fn_1_124C0 = .text:0x000124C0; // type:function size:0x6C +fn_1_1252C = .text:0x0001252C; // type:function size:0x68 +fn_1_12594 = .text:0x00012594; // type:function size:0x6C +fn_1_12600 = .text:0x00012600; // type:function size:0x68 +fn_1_12668 = .text:0x00012668; // type:function size:0x6C +fn_1_126D4 = .text:0x000126D4; // type:function size:0x6C +fn_1_12740 = .text:0x00012740; // type:function size:0x78 +fn_1_127B8 = .text:0x000127B8; // type:function size:0x98 +fn_1_12850 = .text:0x00012850; // type:function size:0x6C +fn_1_128BC = .text:0x000128BC; // type:function size:0x78 +fn_1_12934 = .text:0x00012934; // type:function size:0x98 +fn_1_129CC = .text:0x000129CC; // type:function size:0x70 +fn_1_12A3C = .text:0x00012A3C; // type:function size:0x78 +fn_1_12AB4 = .text:0x00012AB4; // type:function size:0x98 +fn_1_12B4C = .text:0x00012B4C; // type:function size:0x40 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x8 scope:local data:double +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x10 scope:local data:byte +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC +lbl_1_data_40 = .data:0x00000040; // type:object size:0x24 +lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte +lbl_1_data_68 = .data:0x00000068; // type:object size:0x420 +lbl_1_data_488 = .data:0x00000488; // type:object size:0x2C +lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x30 +jumptable_1_data_4E4 = .data:0x000004E4; // type:object size:0x2C scope:local +lbl_1_data_514 = .data:0x00000514; // type:object size:0xC +lbl_1_data_520 = .data:0x00000520; // type:object size:0x64 +lbl_1_data_584 = .data:0x00000584; // type:object size:0x64 +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x24 +lbl_1_data_60C = .data:0x0000060C; // type:object size:0x6C +lbl_1_data_678 = .data:0x00000678; // type:object size:0x24 +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x6C +lbl_1_data_708 = .data:0x00000708; // type:object size:0x24 +lbl_1_data_72C = .data:0x0000072C; // type:object size:0x24 +lbl_1_data_750 = .data:0x00000750; // type:object size:0x7 data:string +lbl_1_data_757 = .data:0x00000757; // type:object size:0x7 data:string +lbl_1_data_75E = .data:0x0000075E; // type:object size:0x7 data:string +lbl_1_data_765 = .data:0x00000765; // type:object size:0x7 data:string +lbl_1_data_76C = .data:0x0000076C; // type:object size:0x7 data:string +lbl_1_data_773 = .data:0x00000773; // type:object size:0x7 data:string +lbl_1_data_77A = .data:0x0000077A; // type:object size:0x7 data:string +lbl_1_data_781 = .data:0x00000781; // type:object size:0x7 data:string +lbl_1_data_788 = .data:0x00000788; // type:object size:0x7 data:string +lbl_1_data_78F = .data:0x0000078F; // type:object size:0x8 data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x8 data:string +lbl_1_data_79F = .data:0x0000079F; // type:object size:0x8 data:string +lbl_1_data_7A7 = .data:0x000007A7; // type:object size:0x8 data:string +lbl_1_data_7AF = .data:0x000007AF; // type:object size:0x8 data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x8 data:string +lbl_1_data_7BF = .data:0x000007BF; // type:object size:0x8 data:string +lbl_1_data_7C7 = .data:0x000007C7; // type:object size:0x8 data:string +lbl_1_data_7CF = .data:0x000007CF; // type:object size:0x8 data:string +lbl_1_data_7D7 = .data:0x000007D7; // type:object size:0x8 data:string +lbl_1_data_7DF = .data:0x000007DF; // type:object size:0x8 data:string +lbl_1_data_7E7 = .data:0x000007E7; // type:object size:0x8 data:string +lbl_1_data_7EF = .data:0x000007EF; // type:object size:0x8 data:string +lbl_1_data_7F7 = .data:0x000007F7; // type:object size:0x8 data:string +lbl_1_data_7FF = .data:0x000007FF; // type:object size:0x8 data:string +lbl_1_data_807 = .data:0x00000807; // type:object size:0x8 data:string +lbl_1_data_80F = .data:0x0000080F; // type:object size:0x8 data:string +lbl_1_data_817 = .data:0x00000817; // type:object size:0x8 data:string +lbl_1_data_81F = .data:0x0000081F; // type:object size:0x8 data:string +lbl_1_data_827 = .data:0x00000827; // type:object size:0x8 data:string +lbl_1_data_82F = .data:0x0000082F; // type:object size:0x8 data:string +lbl_1_data_837 = .data:0x00000837; // type:object size:0x8 data:string +lbl_1_data_83F = .data:0x0000083F; // type:object size:0x9 +lbl_1_data_848 = .data:0x00000848; // type:object size:0x80 +lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x9 data:string +lbl_1_data_8D1 = .data:0x000008D1; // type:object size:0x7 data:string +lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x60 +lbl_1_data_938 = .data:0x00000938; // type:object size:0xB data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x288 +lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 data:4byte +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x900 data:float +lbl_1_bss_B98 = .bss:0x00000B98; // type:object size:0xC data:4byte +lbl_1_bss_BA4 = .bss:0x00000BA4; // type:object size:0x200 +lbl_1_bss_DA4 = .bss:0x00000DA4; // type:object size:0x4 data:4byte +lbl_1_bss_DA8 = .bss:0x00000DA8; // type:object size:0x2 data:2byte +lbl_1_bss_DAA = .bss:0x00000DAA; // type:object size:0x8 data:2byte +lbl_1_bss_DB2 = .bss:0x00000DB2; // type:object size:0x2 data:2byte +lbl_1_bss_DB4 = .bss:0x00000DB4; // type:object size:0x2 data:2byte +lbl_1_bss_DB6 = .bss:0x00000DB6; // type:object size:0x2 data:2byte +lbl_1_bss_DB8 = .bss:0x00000DB8; // type:object size:0x2 data:2byte +lbl_1_bss_DBA = .bss:0x00000DBA; // type:object size:0x2 data:2byte +lbl_1_bss_DBC = .bss:0x00000DBC; // type:object size:0x4 data:4byte +lbl_1_bss_DC0 = .bss:0x00000DC0; // type:object size:0x4 data:4byte +lbl_1_bss_DC4 = .bss:0x00000DC4; // type:object size:0x10 +lbl_1_bss_DD4 = .bss:0x00000DD4; // type:object size:0x4 data:4byte +lbl_1_bss_DD8 = .bss:0x00000DD8; // type:object size:0x4 data:4byte +lbl_1_bss_DDC = .bss:0x00000DDC; // type:object size:0x4 data:4byte +lbl_1_bss_DE0 = .bss:0x00000DE0; // type:object size:0x4 data:4byte +lbl_1_bss_DE4 = .bss:0x00000DE4; // type:object size:0x48 data:4byte +lbl_1_bss_E2C = .bss:0x00000E2C; // type:object size:0x4 data:4byte +lbl_1_bss_E30 = .bss:0x00000E30; // type:object size:0x4 data:4byte +lbl_1_bss_E34 = .bss:0x00000E34; // type:object size:0x258 data:4byte +lbl_1_bss_108C = .bss:0x0000108C; // type:object size:0x18 data:4byte diff --git a/config/GMPP01_00/rels/m439Dll/splits.txt b/config/GMPP01_00/rels/m439Dll/splits.txt new file mode 100644 index 00000000..55b19f1f --- /dev/null +++ b/config/GMPP01_00/rels/m439Dll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m439Dll/main.c: + .text start:0x000000A0 end:0x0000818C + .rodata start:0x00000000 end:0x00000200 + .data start:0x00000000 end:0x000078F0 + .bss start:0x00000000 end:0x00000174 diff --git a/config/GMPP01_00/rels/m439Dll/symbols.txt b/config/GMPP01_00/rels/m439Dll/symbols.txt new file mode 100644 index 00000000..a4c18c94 --- /dev/null +++ b/config/GMPP01_00/rels/m439Dll/symbols.txt @@ -0,0 +1,327 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x2C4 +fn_1_364 = .text:0x00000364; // type:function size:0x10 +fn_1_374 = .text:0x00000374; // type:function size:0x10 +fn_1_384 = .text:0x00000384; // type:function size:0x84 +fn_1_408 = .text:0x00000408; // type:function size:0x5B4 +fn_1_9BC = .text:0x000009BC; // type:function size:0x5C +fn_1_A18 = .text:0x00000A18; // type:function size:0x108 +fn_1_B20 = .text:0x00000B20; // type:function size:0x5C +fn_1_B7C = .text:0x00000B7C; // type:function size:0x84 +fn_1_C00 = .text:0x00000C00; // type:function size:0x10C +fn_1_D0C = .text:0x00000D0C; // type:function size:0x318 +fn_1_1024 = .text:0x00001024; // type:function size:0x104 +fn_1_1128 = .text:0x00001128; // type:function size:0x588 +fn_1_16B0 = .text:0x000016B0; // type:function size:0x5A4 +fn_1_1C54 = .text:0x00001C54; // type:function size:0x2E8 +fn_1_1F3C = .text:0x00001F3C; // type:function size:0x248 +fn_1_2184 = .text:0x00002184; // type:function size:0xB8 +fn_1_223C = .text:0x0000223C; // type:function size:0x978 +fn_1_2BB4 = .text:0x00002BB4; // type:function size:0xD0 +fn_1_2C84 = .text:0x00002C84; // type:function size:0xF98 +fn_1_3C1C = .text:0x00003C1C; // type:function size:0x90C +fn_1_4528 = .text:0x00004528; // type:function size:0x450 +fn_1_4978 = .text:0x00004978; // type:function size:0x50 +fn_1_49C8 = .text:0x000049C8; // type:function size:0x84 +fn_1_4A4C = .text:0x00004A4C; // type:function size:0x5C +fn_1_4AA8 = .text:0x00004AA8; // type:function size:0x218 +fn_1_4CC0 = .text:0x00004CC0; // type:function size:0x294 +fn_1_4F54 = .text:0x00004F54; // type:function size:0xC48 +fn_1_5B9C = .text:0x00005B9C; // type:function size:0x4 +fn_1_5BA0 = .text:0x00005BA0; // type:function size:0x10C +fn_1_5CAC = .text:0x00005CAC; // type:function size:0x4 +fn_1_5CB0 = .text:0x00005CB0; // type:function size:0x3B8 +fn_1_6068 = .text:0x00006068; // type:function size:0xB8 +fn_1_6120 = .text:0x00006120; // type:function size:0x1C0 +fn_1_62E0 = .text:0x000062E0; // type:function size:0x48 +fn_1_6328 = .text:0x00006328; // type:function size:0x1F8 +fn_1_6520 = .text:0x00006520; // type:function size:0xFC +fn_1_661C = .text:0x0000661C; // type:function size:0xA0 +fn_1_66BC = .text:0x000066BC; // type:function size:0xF8 +fn_1_67B4 = .text:0x000067B4; // type:function size:0x454 +fn_1_6C08 = .text:0x00006C08; // type:function size:0xC8 +fn_1_6CD0 = .text:0x00006CD0; // type:function size:0x11C +fn_1_6DEC = .text:0x00006DEC; // type:function size:0x3A4 +fn_1_7190 = .text:0x00007190; // type:function size:0x5C +fn_1_71EC = .text:0x000071EC; // type:function size:0x208 +fn_1_73F4 = .text:0x000073F4; // type:function size:0x184 +fn_1_7578 = .text:0x00007578; // type:function size:0x26C +fn_1_77E4 = .text:0x000077E4; // type:function size:0x9A8 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x50 scope:local +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x18 +lbl_1_data_18 = .data:0x00000018; // type:object size:0x18 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x8 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x84 +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x84 +lbl_1_data_140 = .data:0x00000140; // type:object size:0x2C +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x90 +lbl_1_data_1FC = .data:0x000001FC; // type:object size:0x90 +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x30 +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0xA8 +lbl_1_data_364 = .data:0x00000364; // type:object size:0xA8 +lbl_1_data_40C = .data:0x0000040C; // type:object size:0x38 +lbl_1_data_444 = .data:0x00000444; // type:object size:0xB4 +lbl_1_data_4F8 = .data:0x000004F8; // type:object size:0xB4 +lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x3C +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x18 +lbl_1_data_600 = .data:0x00000600; // type:object size:0x18 +lbl_1_data_618 = .data:0x00000618; // type:object size:0x8 +lbl_1_data_620 = .data:0x00000620; // type:object size:0xA8 +lbl_1_data_6C8 = .data:0x000006C8; // type:object size:0xA8 +lbl_1_data_770 = .data:0x00000770; // type:object size:0x38 +lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0xD8 +lbl_1_data_880 = .data:0x00000880; // type:object size:0xD8 +lbl_1_data_958 = .data:0x00000958; // type:object size:0x48 +lbl_1_data_9A0 = .data:0x000009A0; // type:object size:0xC0 +lbl_1_data_A60 = .data:0x00000A60; // type:object size:0xC0 +lbl_1_data_B20 = .data:0x00000B20; // type:object size:0x40 +lbl_1_data_B60 = .data:0x00000B60; // type:object size:0xC0 +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xC0 +lbl_1_data_CE0 = .data:0x00000CE0; // type:object size:0x40 +lbl_1_data_D20 = .data:0x00000D20; // type:object size:0xA8 +lbl_1_data_DC8 = .data:0x00000DC8; // type:object size:0xA8 +lbl_1_data_E70 = .data:0x00000E70; // type:object size:0x38 +lbl_1_data_EA8 = .data:0x00000EA8; // type:object size:0x9C +lbl_1_data_F44 = .data:0x00000F44; // type:object size:0x9C +lbl_1_data_FE0 = .data:0x00000FE0; // type:object size:0x34 +lbl_1_data_1014 = .data:0x00001014; // type:object size:0x60 +lbl_1_data_1074 = .data:0x00001074; // type:object size:0x18 data:2byte +lbl_1_data_108C = .data:0x0000108C; // type:object size:0x30 data:float +lbl_1_data_10BC = .data:0x000010BC; // type:object size:0x204 data:float +lbl_1_data_12C0 = .data:0x000012C0; // type:object size:0x204 data:float +lbl_1_data_14C4 = .data:0x000014C4; // type:object size:0x204 data:float +lbl_1_data_16C8 = .data:0x000016C8; // type:object size:0xC +lbl_1_data_16D4 = .data:0x000016D4; // type:object size:0x4 data:4byte +lbl_1_data_16D8 = .data:0x000016D8; // type:object size:0x1D4 data:float +lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x1D4 data:float +lbl_1_data_1A80 = .data:0x00001A80; // type:object size:0x1D4 data:float +lbl_1_data_1C54 = .data:0x00001C54; // type:object size:0x120 data:float +lbl_1_data_1D74 = .data:0x00001D74; // type:object size:0x120 data:float +lbl_1_data_1E94 = .data:0x00001E94; // type:object size:0x120 data:float +lbl_1_data_1FB4 = .data:0x00001FB4; // type:object size:0xF0 data:float +lbl_1_data_20A4 = .data:0x000020A4; // type:object size:0xF0 data:float +lbl_1_data_2194 = .data:0x00002194; // type:object size:0xF0 data:float +lbl_1_data_2284 = .data:0x00002284; // type:object size:0x24 +lbl_1_data_22A8 = .data:0x000022A8; // type:object size:0xC data:4byte +lbl_1_data_22B4 = .data:0x000022B4; // type:object size:0x174 data:float +lbl_1_data_2428 = .data:0x00002428; // type:object size:0x174 data:float +lbl_1_data_259C = .data:0x0000259C; // type:object size:0x174 data:float +lbl_1_data_2710 = .data:0x00002710; // type:object size:0x144 data:float +lbl_1_data_2854 = .data:0x00002854; // type:object size:0x144 data:float +lbl_1_data_2998 = .data:0x00002998; // type:object size:0x144 data:float +lbl_1_data_2ADC = .data:0x00002ADC; // type:object size:0x1A4 data:float +lbl_1_data_2C80 = .data:0x00002C80; // type:object size:0x1A4 data:float +lbl_1_data_2E24 = .data:0x00002E24; // type:object size:0x1A4 data:float +lbl_1_data_2FC8 = .data:0x00002FC8; // type:object size:0x24 +lbl_1_data_2FEC = .data:0x00002FEC; // type:object size:0xC data:4byte +lbl_1_data_2FF8 = .data:0x00002FF8; // type:object size:0x294 data:float +lbl_1_data_328C = .data:0x0000328C; // type:object size:0x294 data:float +lbl_1_data_3520 = .data:0x00003520; // type:object size:0x294 data:float +lbl_1_data_37B4 = .data:0x000037B4; // type:object size:0xC +lbl_1_data_37C0 = .data:0x000037C0; // type:object size:0x4 data:4byte +lbl_1_data_37C4 = .data:0x000037C4; // type:object size:0x198 data:float +lbl_1_data_395C = .data:0x0000395C; // type:object size:0x198 data:float +lbl_1_data_3AF4 = .data:0x00003AF4; // type:object size:0x198 data:float +lbl_1_data_3C8C = .data:0x00003C8C; // type:object size:0x198 data:float +lbl_1_data_3E24 = .data:0x00003E24; // type:object size:0x198 data:float +lbl_1_data_3FBC = .data:0x00003FBC; // type:object size:0x198 data:float +lbl_1_data_4154 = .data:0x00004154; // type:object size:0x18 +lbl_1_data_416C = .data:0x0000416C; // type:object size:0x8 data:4byte +lbl_1_data_4174 = .data:0x00004174; // type:object size:0x210 data:float +lbl_1_data_4384 = .data:0x00004384; // type:object size:0x210 data:float +lbl_1_data_4594 = .data:0x00004594; // type:object size:0x210 data:float +lbl_1_data_47A4 = .data:0x000047A4; // type:object size:0x210 data:float +lbl_1_data_49B4 = .data:0x000049B4; // type:object size:0x210 data:float +lbl_1_data_4BC4 = .data:0x00004BC4; // type:object size:0x210 data:float +lbl_1_data_4DD4 = .data:0x00004DD4; // type:object size:0x18 +lbl_1_data_4DEC = .data:0x00004DEC; // type:object size:0x8 data:4byte +lbl_1_data_4DF4 = .data:0x00004DF4; // type:object size:0x1D4 data:float +lbl_1_data_4FC8 = .data:0x00004FC8; // type:object size:0x1D4 data:float +lbl_1_data_519C = .data:0x0000519C; // type:object size:0x1D4 data:float +lbl_1_data_5370 = .data:0x00005370; // type:object size:0x1D4 data:float +lbl_1_data_5544 = .data:0x00005544; // type:object size:0x1D4 data:float +lbl_1_data_5718 = .data:0x00005718; // type:object size:0x1D4 data:float +lbl_1_data_58EC = .data:0x000058EC; // type:object size:0x18 +lbl_1_data_5904 = .data:0x00005904; // type:object size:0x8 data:4byte +lbl_1_data_590C = .data:0x0000590C; // type:object size:0x18C data:float +lbl_1_data_5A98 = .data:0x00005A98; // type:object size:0x18C data:float +lbl_1_data_5C24 = .data:0x00005C24; // type:object size:0x18C data:float +lbl_1_data_5DB0 = .data:0x00005DB0; // type:object size:0x168 data:float +lbl_1_data_5F18 = .data:0x00005F18; // type:object size:0x168 data:float +lbl_1_data_6080 = .data:0x00006080; // type:object size:0x168 data:float +lbl_1_data_61E8 = .data:0x000061E8; // type:object size:0x18 +lbl_1_data_6200 = .data:0x00006200; // type:object size:0x8 data:4byte +lbl_1_data_6208 = .data:0x00006208; // type:object size:0x174 data:float +lbl_1_data_637C = .data:0x0000637C; // type:object size:0x174 data:float +lbl_1_data_64F0 = .data:0x000064F0; // type:object size:0x174 data:float +lbl_1_data_6664 = .data:0x00006664; // type:object size:0x15C data:float +lbl_1_data_67C0 = .data:0x000067C0; // type:object size:0x15C data:float +lbl_1_data_691C = .data:0x0000691C; // type:object size:0x15C data:float +lbl_1_data_6A78 = .data:0x00006A78; // type:object size:0x18 +lbl_1_data_6A90 = .data:0x00006A90; // type:object size:0x8 data:4byte +lbl_1_data_6A98 = .data:0x00006A98; // type:object size:0x18C data:float +lbl_1_data_6C24 = .data:0x00006C24; // type:object size:0x18C data:float +lbl_1_data_6DB0 = .data:0x00006DB0; // type:object size:0x18C data:float +lbl_1_data_6F3C = .data:0x00006F3C; // type:object size:0x174 data:float +lbl_1_data_70B0 = .data:0x000070B0; // type:object size:0x174 data:float +lbl_1_data_7224 = .data:0x00007224; // type:object size:0x174 data:float +lbl_1_data_7398 = .data:0x00007398; // type:object size:0x18 +lbl_1_data_73B0 = .data:0x000073B0; // type:object size:0x8 data:4byte +lbl_1_data_73B8 = .data:0x000073B8; // type:object size:0x14 data:4byte +lbl_1_data_73CC = .data:0x000073CC; // type:object size:0x28 +lbl_1_data_73F4 = .data:0x000073F4; // type:object size:0x28 +lbl_1_data_741C = .data:0x0000741C; // type:object size:0x70 data:float +lbl_1_data_748C = .data:0x0000748C; // type:object size:0x140 +lbl_1_data_75CC = .data:0x000075CC; // type:object size:0x14 data:float +lbl_1_data_75E0 = .data:0x000075E0; // type:object size:0x10 data:4byte +lbl_1_data_75F0 = .data:0x000075F0; // type:object size:0xC data:float +lbl_1_data_75FC = .data:0x000075FC; // type:object size:0xC data:float +lbl_1_data_7608 = .data:0x00007608; // type:object size:0x4 +lbl_1_data_760C = .data:0x0000760C; // type:object size:0xC data:float +lbl_1_data_7618 = .data:0x00007618; // type:object size:0xC data:float +lbl_1_data_7624 = .data:0x00007624; // type:object size:0x23 scope:local data:string +lbl_1_data_7648 = .data:0x00007648; // type:object size:0x4 data:4byte +lbl_1_data_764C = .data:0x0000764C; // type:object size:0x4 data:4byte +jumptable_1_data_7650 = .data:0x00007650; // type:object size:0x28 scope:local +lbl_1_data_7678 = .data:0x00007678; // type:object size:0x1C scope:local data:string +lbl_1_data_7694 = .data:0x00007694; // type:object size:0x1C +lbl_1_data_76B0 = .data:0x000076B0; // type:object size:0x58 data:float +lbl_1_data_7708 = .data:0x00007708; // type:object size:0x30 data:float +lbl_1_data_7738 = .data:0x00007738; // type:object size:0x3C data:2byte +lbl_1_data_7774 = .data:0x00007774; // type:object size:0x20 data:4byte +lbl_1_data_7794 = .data:0x00007794; // type:object size:0x4 +lbl_1_data_7798 = .data:0x00007798; // type:object size:0x4 data:4byte +lbl_1_data_779C = .data:0x0000779C; // type:object size:0x4 data:4byte +lbl_1_data_77A0 = .data:0x000077A0; // type:object size:0x28 +lbl_1_data_77C8 = .data:0x000077C8; // type:object size:0x70 data:float +lbl_1_data_7838 = .data:0x00007838; // type:object size:0x1C data:2byte +lbl_1_data_7854 = .data:0x00007854; // type:object size:0x6 scope:local data:string +lbl_1_data_785A = .data:0x0000785A; // type:object size:0x6 scope:local data:string +lbl_1_data_7860 = .data:0x00007860; // type:object size:0x8 scope:local data:string +lbl_1_data_7868 = .data:0x00007868; // type:object size:0x6 scope:local data:string +lbl_1_data_786E = .data:0x0000786E; // type:object size:0x8 scope:local data:string +lbl_1_data_7876 = .data:0x00007876; // type:object size:0x6 scope:local data:string +lbl_1_data_787C = .data:0x0000787C; // type:object size:0x6 scope:local data:string +lbl_1_data_7882 = .data:0x00007882; // type:object size:0x6 scope:local data:string +lbl_1_data_7888 = .data:0x00007888; // type:object size:0x6 scope:local data:string +lbl_1_data_788E = .data:0x0000788E; // type:object size:0x6 scope:local data:string +lbl_1_data_7894 = .data:0x00007894; // type:object size:0x6 scope:local data:string +lbl_1_data_789A = .data:0x0000789A; // type:object size:0x6 scope:local data:string +lbl_1_data_78A0 = .data:0x000078A0; // type:object size:0x20 +lbl_1_data_78C0 = .data:0x000078C0; // type:object size:0x30 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x20 +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x2 data:2byte +lbl_1_bss_32 = .bss:0x00000032; // type:object size:0x2 data:2byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0xC data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x90 +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x24 +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x24 +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0xC +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:4byte +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x2 data:2byte +lbl_1_bss_12E = .bss:0x0000012E; // type:object size:0x2 data:2byte +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x2 data:2byte +lbl_1_bss_132 = .bss:0x00000132; // type:object size:0x8 data:2byte +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x2 data:2byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x2 data:2byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x4 data:4byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x4 data:4byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x10 data:4byte +lbl_1_bss_160 = .bss:0x00000160; // type:object size:0x4 data:4byte +lbl_1_bss_164 = .bss:0x00000164; // type:object size:0x4 data:4byte +lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x4 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x4 data:4byte +lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m440Dll/splits.txt b/config/GMPP01_00/rels/m440Dll/splits.txt new file mode 100644 index 00000000..a5cd08ba --- /dev/null +++ b/config/GMPP01_00/rels/m440Dll/splits.txt @@ -0,0 +1,22 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m440Dll/main.c: + .text start:0x000000A0 end:0x0000AE04 + .rodata start:0x00000000 end:0x00000190 + .data start:0x00000000 end:0x000001D8 + .bss start:0x00000000 end:0x00000070 + +REL/m440Dll/object.c: + .text start:0x0000AE04 end:0x0000F4F0 + .rodata start:0x00000190 end:0x000002B8 + .data start:0x000001D8 end:0x00000254 + .bss start:0x00000070 end:0x000000D0 diff --git a/config/GMPP01_00/rels/m440Dll/symbols.txt b/config/GMPP01_00/rels/m440Dll/symbols.txt new file mode 100644 index 00000000..c1d0231e --- /dev/null +++ b/config/GMPP01_00/rels/m440Dll/symbols.txt @@ -0,0 +1,295 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x324 +fn_1_3C4 = .text:0x000003C4; // type:function size:0x70 +fn_1_434 = .text:0x00000434; // type:function size:0x70 +fn_1_4A4 = .text:0x000004A4; // type:function size:0x224 +fn_1_6C8 = .text:0x000006C8; // type:function size:0x228 +fn_1_8F0 = .text:0x000008F0; // type:function size:0x1F0 +fn_1_AE0 = .text:0x00000AE0; // type:function size:0x330 +fn_1_E14 = .text:0x00000E10; // type:function size:0x324 +fn_1_1138 = .text:0x00001134; // type:function size:0x5A0 +fn_1_16D8 = .text:0x000016D4; // type:function size:0x30 +fn_1_1708 = .text:0x00001704; // type:function size:0x60 +fn_1_1768 = .text:0x00001764; // type:function size:0x64 +fn_1_17CC = .text:0x000017C8; // type:function size:0x28 +fn_1_17F4 = .text:0x000017F0; // type:function size:0x28 +fn_1_181C = .text:0x00001818; // type:function size:0x74 +fn_1_1890 = .text:0x0000188C; // type:function size:0x50 +fn_1_18E0 = .text:0x000018DC; // type:function size:0x74 +fn_1_1954 = .text:0x00001950; // type:function size:0x5C +fn_1_19B0 = .text:0x000019AC; // type:function size:0x2FC +fn_1_1CAC = .text:0x00001CA8; // type:function size:0xA8 +fn_1_1D54 = .text:0x00001D50; // type:function size:0x4EC +fn_1_2240 = .text:0x0000223C; // type:function size:0x1A4 +fn_1_23E4 = .text:0x000023E0; // type:function size:0x44 +fn_1_2428 = .text:0x00002424; // type:function size:0x48 +fn_1_2470 = .text:0x0000246C; // type:function size:0x604 +fn_1_2A74 = .text:0x00002A70; // type:function size:0x40 +fn_1_2AB4 = .text:0x00002AB0; // type:function size:0x50 +fn_1_2B04 = .text:0x00002B00; // type:function size:0x1A4 +fn_1_2CA8 = .text:0x00002CA4; // type:function size:0x80 +fn_1_2D28 = .text:0x00002D24; // type:function size:0x6AC +fn_1_33D4 = .text:0x000033D0; // type:function size:0xA04 +fn_1_3DD8 = .text:0x00003DD4; // type:function size:0x780 +fn_1_4558 = .text:0x00004554; // type:function size:0x64 +fn_1_45BC = .text:0x000045B8; // type:function size:0xA4 +fn_1_4660 = .text:0x0000465C; // type:function size:0x80 +fn_1_46E0 = .text:0x000046DC; // type:function size:0x340 +fn_1_4A20 = .text:0x00004A1C; // type:function size:0x124 +fn_1_4B44 = .text:0x00004B40; // type:function size:0x2BC +fn_1_4E00 = .text:0x00004DFC; // type:function size:0x2C +fn_1_4E2C = .text:0x00004E28; // type:function size:0x28 +fn_1_4E54 = .text:0x00004E50; // type:function size:0x54 +fn_1_4EA8 = .text:0x00004EA4; // type:function size:0x44 +fn_1_4EEC = .text:0x00004EE8; // type:function size:0x48 +fn_1_4F34 = .text:0x00004F30; // type:function size:0xDC +fn_1_5010 = .text:0x0000500C; // type:function size:0x7A4 +fn_1_57B4 = .text:0x000057B0; // type:function size:0x478 +fn_1_5C2C = .text:0x00005C28; // type:function size:0x928 +fn_1_6554 = .text:0x00006550; // type:function size:0x604 +fn_1_6B58 = .text:0x00006B54; // type:function size:0x6A4 +fn_1_71FC = .text:0x000071F8; // type:function size:0x738 +fn_1_7934 = .text:0x00007930; // type:function size:0x42C +fn_1_7D60 = .text:0x00007D5C; // type:function size:0x30C +fn_1_806C = .text:0x00008068; // type:function size:0x404 +fn_1_8470 = .text:0x0000846C; // type:function size:0x654 +fn_1_8AC4 = .text:0x00008AC0; // type:function size:0x258 +fn_1_8D1C = .text:0x00008D18; // type:function size:0x488 +fn_1_91A4 = .text:0x000091A0; // type:function size:0xD8 +fn_1_927C = .text:0x00009278; // type:function size:0xC8 +fn_1_9344 = .text:0x00009340; // type:function size:0x7C +fn_1_93C0 = .text:0x000093BC; // type:function size:0x10 +fn_1_93D0 = .text:0x000093CC; // type:function size:0x5C +fn_1_942C = .text:0x00009428; // type:function size:0x140 +fn_1_956C = .text:0x00009568; // type:function size:0x544 +fn_1_9AB0 = .text:0x00009AAC; // type:function size:0x60 +fn_1_9B10 = .text:0x00009B0C; // type:function size:0x2C +fn_1_9B3C = .text:0x00009B38; // type:function size:0x58 +fn_1_9B94 = .text:0x00009B90; // type:function size:0x38 +fn_1_9BCC = .text:0x00009BC8; // type:function size:0x38 +fn_1_9C04 = .text:0x00009C00; // type:function size:0x5B4 +fn_1_A1B8 = .text:0x0000A1B4; // type:function size:0xCC +fn_1_A284 = .text:0x0000A280; // type:function size:0xA4 +fn_1_A328 = .text:0x0000A324; // type:function size:0x68 +fn_1_A390 = .text:0x0000A38C; // type:function size:0x704 +fn_1_AA94 = .text:0x0000AA90; // type:function size:0x374 +fn_1_AE08 = .text:0x0000AE04; // type:function size:0xDC +fn_1_AEE4 = .text:0x0000AEE0; // type:function size:0x298 +fn_1_B17C = .text:0x0000B178; // type:function size:0x4 +fn_1_B180 = .text:0x0000B17C; // type:function size:0x224 +fn_1_B3A4 = .text:0x0000B3A0; // type:function size:0x4E0 +fn_1_B884 = .text:0x0000B880; // type:function size:0x950 +fn_1_C1D4 = .text:0x0000C1D0; // type:function size:0x770 +fn_1_C944 = .text:0x0000C940; // type:function size:0x668 +fn_1_CFAC = .text:0x0000CFA8; // type:function size:0x2A0 +fn_1_D24C = .text:0x0000D248; // type:function size:0x100 +fn_1_D34C = .text:0x0000D348; // type:function size:0x4AC +fn_1_D7F8 = .text:0x0000D7F4; // type:function size:0x83C +fn_1_E034 = .text:0x0000E030; // type:function size:0x858 +fn_1_E8AC = .text:0x0000E888; // type:function size:0x4DC +fn_1_ED88 = .text:0x0000ED64; // type:function size:0xF0 +fn_1_EE78 = .text:0x0000EE54; // type:function size:0xD8 +fn_1_EF50 = .text:0x0000EF2C; // type:function size:0x1AC +fn_1_F0FC = .text:0x0000F0D8; // type:function size:0x6C +fn_1_F168 = .text:0x0000F144; // type:function size:0xC0 +fn_1_F228 = .text:0x0000F204; // type:function size:0x298 +fn_1_F4C0 = .text:0x0000F49C; // type:function size:0x14 +fn_1_F4D4 = .text:0x0000F4B0; // type:function size:0x28 +fn_1_F4FC = .text:0x0000F4D8; // type:function size:0x18 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x14 +lbl_1_data_14 = .data:0x00000014; // type:object size:0xC +lbl_1_data_20 = .data:0x00000020; // type:object size:0xC data:float +lbl_1_data_2C = .data:0x0000002C; // type:object size:0xC data:float +lbl_1_data_38 = .data:0x00000038; // type:object size:0xC +lbl_1_data_44 = .data:0x00000044; // type:object size:0x10 +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC data:float +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC data:float +lbl_1_data_78 = .data:0x00000078; // type:object size:0x54 data:float +lbl_1_data_CC = .data:0x000000CC; // type:object size:0x18 scope:local +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x4 data:2byte +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:2byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x4 data:2byte +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x4 data:2byte +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x10 +lbl_1_data_104 = .data:0x00000104; // type:object size:0x4 data:2byte +lbl_1_data_108 = .data:0x00000108; // type:object size:0x4 data:2byte +lbl_1_data_10C = .data:0x0000010C; // type:object size:0x12 +lbl_1_data_11E = .data:0x0000011E; // type:object size:0x13 scope:local data:string +lbl_1_data_131 = .data:0x00000131; // type:object size:0x17 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x1 scope:local +lbl_1_data_149 = .data:0x00000149; // type:object size:0x19 scope:local data:string +lbl_1_data_162 = .data:0x00000162; // type:object size:0x1C scope:local data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x10 scope:local data:string +lbl_1_data_18E = .data:0x0000018E; // type:object size:0x26 scope:local data:string +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 scope:local data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte +lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x40 +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x10 +jumptable_1_data_22C = .data:0x0000022C; // type:object size:0x24 scope:local +lbl_1_data_250 = .data:0x00000250; // type:object size:0x4 data:float +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +lbl_1_bss_1 = .bss:0x00000001; // type:object size:0x1 data:byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x1 data:byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte +lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x1 data:byte +lbl_1_bss_B = .bss:0x0000000B; // type:object size:0x1 data:byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x1 data:byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x14 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x30 +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x2 data:2byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x2 data:2byte +lbl_1_bss_72 = .bss:0x00000072; // type:object size:0x1 data:byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x2 data:2byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0xC data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:float +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x30 data:float +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x8 +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x10 diff --git a/config/GMPP01_00/rels/m441Dll/splits.txt b/config/GMPP01_00/rels/m441Dll/splits.txt new file mode 100644 index 00000000..b67999c6 --- /dev/null +++ b/config/GMPP01_00/rels/m441Dll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m441Dll/main.c: + .text start:0x00000000 end:0x0000AABC + .rodata start:0x00000000 end:0x000001EC + .data start:0x00000000 end:0x000005CC + .bss start:0x00000000 end:0x00000204 diff --git a/config/GMPP01_00/rels/m441Dll/symbols.txt b/config/GMPP01_00/rels/m441Dll/symbols.txt new file mode 100644 index 00000000..ccaec68e --- /dev/null +++ b/config/GMPP01_00/rels/m441Dll/symbols.txt @@ -0,0 +1,225 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x204 +fn_1_798 = .text:0x00000784; // type:function size:0x240 +fn_1_9EC = .text:0x000009C4; // type:function size:0x54 +fn_1_A40 = .text:0x00000A18; // type:function size:0x10C +fn_1_B4C = .text:0x00000B24; // type:function size:0x680 +fn_1_11F4 = .text:0x000011A4; // type:function size:0x15C +fn_1_1350 = .text:0x00001300; // type:function size:0x8C +fn_1_13DC = .text:0x0000138C; // type:function size:0x334 +fn_1_1710 = .text:0x000016C0; // type:function size:0x350 +fn_1_1A60 = .text:0x00001A10; // type:function size:0x2B8 +fn_1_1D18 = .text:0x00001CC8; // type:function size:0x58 +fn_1_1D70 = .text:0x00001D20; // type:function size:0xB0 +fn_1_1E20 = .text:0x00001DD0; // type:function size:0x104 +fn_1_1F24 = .text:0x00001ED4; // type:function size:0x34 +fn_1_1F58 = .text:0x00001F08; // type:function size:0x6C +fn_1_1FC4 = .text:0x00001F74; // type:function size:0x3F0 +_prolog = .text:0x00002364; // type:function size:0x54 scope:global +_epilog = .text:0x000023B8; // type:function size:0x4C scope:global +fn_1_2454 = .text:0x00002404; // type:function size:0x2E8 +fn_1_273C = .text:0x000026EC; // type:function size:0x1C8 +fn_1_2904 = .text:0x000028B4; // type:function size:0x2D0 +fn_1_2BD4 = .text:0x00002B84; // type:function size:0x830 +fn_1_3404 = .text:0x000033B4; // type:function size:0x700 +fn_1_3B04 = .text:0x00003AB4; // type:function size:0xFC +fn_1_3C00 = .text:0x00003BB0; // type:function size:0x4A8 +fn_1_40A8 = .text:0x00004058; // type:function size:0x1340 +fn_1_53E8 = .text:0x00005398; // type:function size:0x744 +fn_1_5B2C = .text:0x00005ADC; // type:function size:0xD8 +fn_1_5C04 = .text:0x00005BB4; // type:function size:0x1538 +fn_1_713C = .text:0x000070EC; // type:function size:0x3B8 +fn_1_74F4 = .text:0x000074A4; // type:function size:0x464 +fn_1_7958 = .text:0x00007908; // type:function size:0xD4 +fn_1_7A2C = .text:0x000079DC; // type:function size:0x610 +fn_1_803C = .text:0x00007FEC; // type:function size:0x4DC +fn_1_8518 = .text:0x000084C8; // type:function size:0x414 +fn_1_892C = .text:0x000088DC; // type:function size:0x174 +fn_1_8AA0 = .text:0x00008A50; // type:function size:0x2B8 +fn_1_8D58 = .text:0x00008D08; // type:function size:0x11D8 +fn_1_9F40 = .text:0x00009EE0; // type:function size:0x570 +ObjectSetup = .text:0x0000A450; // type:function size:0x59C +fn_1_AA4C = .text:0x0000A9EC; // type:function size:0xD0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC data:4byte +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:4byte +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0xC data:float +lbl_1_data_58 = .data:0x00000058; // type:object size:0xC data:float +lbl_1_data_64 = .data:0x00000064; // type:object size:0xC data:float +lbl_1_data_70 = .data:0x00000070; // type:object size:0xC data:float +lbl_1_data_7C = .data:0x0000007C; // type:object size:0xC data:float +lbl_1_data_88 = .data:0x00000088; // type:object size:0xC data:float +lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 +lbl_1_data_98 = .data:0x00000098; // type:object size:0xC data:float +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0xC data:float +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x200 +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x8 +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0xC +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x10 +lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x40 data:float +lbl_1_data_314 = .data:0x00000314; // type:object size:0xC +lbl_1_data_320 = .data:0x00000320; // type:object size:0x6 +lbl_1_data_326 = .data:0x00000326; // type:object size:0x6 +lbl_1_data_32C = .data:0x0000032C; // type:object size:0x24 data:float +lbl_1_data_350 = .data:0x00000350; // type:object size:0x18 data:float +lbl_1_data_368 = .data:0x00000368; // type:object size:0x4 +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC data:float +lbl_1_data_378 = .data:0x00000378; // type:object size:0xC data:float +lbl_1_data_384 = .data:0x00000384; // type:object size:0xC data:float +lbl_1_data_390 = .data:0x00000390; // type:object size:0xC data:float +lbl_1_data_39C = .data:0x0000039C; // type:object size:0x50 +lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x50 +lbl_1_data_43C = .data:0x0000043C; // type:object size:0x50 +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x50 +lbl_1_data_4DC = .data:0x000004DC; // type:object size:0x18 scope:local data:string +lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x9 scope:local data:string +lbl_1_data_4FD = .data:0x000004FD; // type:object size:0x6 scope:local data:string +lbl_1_data_503 = .data:0x00000503; // type:object size:0x1D scope:local data:string +jumptable_1_data_520 = .data:0x00000520; // type:object size:0x40 scope:local +lbl_1_data_560 = .data:0x00000560; // type:object size:0x8 scope:local data:string +lbl_1_data_568 = .data:0x00000568; // type:object size:0x1B scope:local data:string +jumptable_1_data_584 = .data:0x00000584; // type:object size:0x24 scope:local +lbl_1_data_5A8 = .data:0x000005A8; // type:object size:0x24 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x6 +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x6 +lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x2 data:2byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x100 +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x40 data:4byte +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:float +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x4 data:4byte +lbl_1_bss_198 = .bss:0x00000198; // type:object size:0x4 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x2 data:2byte +lbl_1_bss_19E = .bss:0x0000019E; // type:object size:0x2 data:2byte +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x4 data:4byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0xC data:4byte +lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0xC data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0xC data:4byte +lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC data:4byte +lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0x4 data:4byte +lbl_1_bss_1E0 = .bss:0x000001E0; // type:object size:0x18 data:4byte +lbl_1_bss_1F8 = .bss:0x000001F8; // type:object size:0xC data:4byte diff --git a/config/GMPP01_00/rels/m442Dll/splits.txt b/config/GMPP01_00/rels/m442Dll/splits.txt new file mode 100644 index 00000000..87722ecf --- /dev/null +++ b/config/GMPP01_00/rels/m442Dll/splits.txt @@ -0,0 +1,22 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m442Dll/main.c: + .text start:0x000000A0 end:0x000091B8 + .rodata start:0x00000000 end:0x000001D0 + .data start:0x00000000 end:0x00000268 + .bss start:0x00000000 end:0x00011F48 + +REL/m442Dll/score.c: + .text start:0x000091B8 end:0x0000997C + .rodata start:0x000001D0 end:0x00000200 + .data start:0x00000268 end:0x00000274 + .bss start:0x00011F48 end:0x00011F58 diff --git a/config/GMPP01_00/rels/m442Dll/symbols.txt b/config/GMPP01_00/rels/m442Dll/symbols.txt new file mode 100644 index 00000000..c50572e9 --- /dev/null +++ b/config/GMPP01_00/rels/m442Dll/symbols.txt @@ -0,0 +1,234 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x2D4 +fn_1_374 = .text:0x00000374; // type:function size:0x10 +fn_1_384 = .text:0x00000384; // type:function size:0x10 +fn_1_394 = .text:0x00000394; // type:function size:0xB4 +fn_1_448 = .text:0x00000448; // type:function size:0x5E8 +fn_1_A30 = .text:0x00000A30; // type:function size:0x60 +fn_1_A90 = .text:0x00000A90; // type:function size:0x31C +fn_1_D9C = .text:0x00000DAC; // type:function size:0x68 +fn_1_E04 = .text:0x00000E14; // type:function size:0x84 +fn_1_E88 = .text:0x00000E98; // type:function size:0x380 +fn_1_1200 = .text:0x00001218; // type:function size:0x30 +fn_1_1230 = .text:0x00001248; // type:function size:0xDE0 +fn_1_2010 = .text:0x00002028; // type:function size:0x244 +fn_1_2254 = .text:0x0000226C; // type:function size:0xF9C +fn_1_31FC = .text:0x00003208; // type:function size:0x3B0 +fn_1_35AC = .text:0x000035B8; // type:function size:0xAC +fn_1_3658 = .text:0x00003664; // type:function size:0x160 +fn_1_37B8 = .text:0x000037C4; // type:function size:0x150 +fn_1_3908 = .text:0x00003914; // type:function size:0x1DC +fn_1_3AE4 = .text:0x00003AF0; // type:function size:0x13C +fn_1_3C20 = .text:0x00003C2C; // type:function size:0x74 +fn_1_3C94 = .text:0x00003CA0; // type:function size:0x180 +fn_1_3E14 = .text:0x00003E20; // type:function size:0x50 +fn_1_3E64 = .text:0x00003E70; // type:function size:0x58 +fn_1_3EBC = .text:0x00003EC8; // type:function size:0x4 +fn_1_3EC0 = .text:0x00003ECC; // type:function size:0x4A4 +fn_1_4364 = .text:0x00004370; // type:function size:0x4 +fn_1_4368 = .text:0x00004374; // type:function size:0xDC +fn_1_4444 = .text:0x00004450; // type:function size:0x418 +fn_1_485C = .text:0x00004868; // type:function size:0xC6C +fn_1_54C8 = .text:0x000054D4; // type:function size:0x450 +fn_1_5918 = .text:0x00005924; // type:function size:0xA8 +fn_1_59C0 = .text:0x000059CC; // type:function size:0x88 +fn_1_5A48 = .text:0x00005A54; // type:function size:0x494 +fn_1_5EDC = .text:0x00005EE8; // type:function size:0x5D8 +fn_1_64B4 = .text:0x000064C0; // type:function size:0x700 +fn_1_6BB4 = .text:0x00006BC0; // type:function size:0x114 +fn_1_6CC8 = .text:0x00006CD4; // type:function size:0x5C +fn_1_6D24 = .text:0x00006D30; // type:function size:0x5A0 +fn_1_72C4 = .text:0x000072D0; // type:function size:0x318 +fn_1_75DC = .text:0x000075E8; // type:function size:0x158 +fn_1_7734 = .text:0x00007740; // type:function size:0x114 +fn_1_7848 = .text:0x00007854; // type:function size:0x48 +fn_1_7890 = .text:0x0000789C; // type:function size:0x3FC +fn_1_7C8C = .text:0x00007C98; // type:function size:0x230 +fn_1_7EBC = .text:0x00007EC8; // type:function size:0x664 +fn_1_8520 = .text:0x0000852C; // type:function size:0xC8 +fn_1_85E8 = .text:0x000085F4; // type:function size:0x104 +fn_1_86EC = .text:0x000086F8; // type:function size:0x4C +fn_1_8738 = .text:0x00008744; // type:function size:0x250 +fn_1_8988 = .text:0x00008994; // type:function size:0x764 +fn_1_90EC = .text:0x000090F8; // type:function size:0x10 +fn_1_90FC = .text:0x00009108; // type:function size:0xB0 +fn_1_91AC = .text:0x000091B8; // type:function size:0x28C +fn_1_9438 = .text:0x00009444; // type:function size:0x74 +fn_1_94AC = .text:0x000094B8; // type:function size:0x50 +fn_1_94FC = .text:0x00009508; // type:function size:0x24 +fn_1_9520 = .text:0x0000952C; // type:function size:0x30 +fn_1_9550 = .text:0x0000955C; // type:function size:0x1BC +fn_1_970C = .text:0x00009718; // type:function size:0x78 +fn_1_9784 = .text:0x00009790; // type:function size:0x88 +fn_1_980C = .text:0x00009818; // type:function size:0x164 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC data:float +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC data:float +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x4 data:byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0xC data:float +lbl_1_data_7C = .data:0x0000007C; // type:object size:0xC data:float +lbl_1_data_88 = .data:0x00000088; // type:object size:0x23 scope:local data:string +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x4 data:4byte +jumptable_1_data_B0 = .data:0x000000B0; // type:object size:0x30 scope:local +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x1C scope:local data:string +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x1C data:4byte +lbl_1_data_118 = .data:0x00000118; // type:object size:0x8 data:4byte +lbl_1_data_120 = .data:0x00000120; // type:object size:0x30 data:float +lbl_1_data_150 = .data:0x00000150; // type:object size:0x19 scope:local data:string +lbl_1_data_16A = .data:0x0000016A; // type:object size:0x20 data:2byte +lbl_1_data_18A = .data:0x0000018A; // type:object size:0x14 data:2byte +lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0xC data:4byte +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0xC scope:local data:string +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x4 data:byte +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4 data:byte +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x30 data:float +lbl_1_data_1F0 = .data:0x000001F0; // type:object size:0x4 data:byte +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x18 data:float +lbl_1_data_20C = .data:0x0000020C; // type:object size:0xC data:byte +lbl_1_data_218 = .data:0x00000218; // type:object size:0x4 data:byte +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x20 data:2byte +lbl_1_data_23C = .data:0x0000023C; // type:object size:0xC data:4byte +lbl_1_data_248 = .data:0x00000248; // type:object size:0x8 data:2byte +lbl_1_data_250 = .data:0x00000250; // type:object size:0x8 data:float +lbl_1_data_258 = .data:0x00000258; // type:object size:0x10 +lbl_1_data_268 = .data:0x00000268; // type:object size:0xC +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0xC data:float +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x3C data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0xC000 data:2byte +lbl_1_bss_C05C = .bss:0x0000C05C; // type:object size:0x28 data:2byte +lbl_1_bss_C084 = .bss:0x0000C084; // type:object size:0x974 +lbl_1_bss_C9F8 = .bss:0x0000C9F8; // type:object size:0x5000 data:4byte +lbl_1_bss_119F8 = .bss:0x000119F8; // type:object size:0x4 data:4byte +lbl_1_bss_119FC = .bss:0x000119FC; // type:object size:0x271 +lbl_1_bss_11C6D = .bss:0x00011C6D; // type:object size:0x271 +lbl_1_bss_11EE0 = .bss:0x00011EE0; // type:object size:0x4 data:4byte +lbl_1_bss_11EE4 = .bss:0x00011EE4; // type:object size:0x4 data:4byte +lbl_1_bss_11EE8 = .bss:0x00011EE8; // type:object size:0x2 data:2byte +lbl_1_bss_11EEC = .bss:0x00011EEC; // type:object size:0x10 data:2byte +lbl_1_bss_11EFC = .bss:0x00011EFC; // type:object size:0x4 data:4byte +lbl_1_bss_11F00 = .bss:0x00011F00; // type:object size:0x4 data:4byte +lbl_1_bss_11F04 = .bss:0x00011F04; // type:object size:0xC data:4byte +lbl_1_bss_11F10 = .bss:0x00011F10; // type:object size:0x4 data:4byte +lbl_1_bss_11F14 = .bss:0x00011F14; // type:object size:0x2 data:2byte +lbl_1_bss_11F16 = .bss:0x00011F16; // type:object size:0x2 data:2byte +lbl_1_bss_11F18 = .bss:0x00011F18; // type:object size:0x2 data:2byte +lbl_1_bss_11F1A = .bss:0x00011F1A; // type:object size:0x2 data:2byte +lbl_1_bss_11F1C = .bss:0x00011F1C; // type:object size:0x2 data:2byte +lbl_1_bss_11F1E = .bss:0x00011F1E; // type:object size:0x2 data:2byte +lbl_1_bss_11F20 = .bss:0x00011F20; // type:object size:0x4 data:4byte +lbl_1_bss_11F24 = .bss:0x00011F24; // type:object size:0x4 data:4byte +lbl_1_bss_11F28 = .bss:0x00011F28; // type:object size:0x4 data:4byte +lbl_1_bss_11F2C = .bss:0x00011F2C; // type:object size:0x4 data:4byte +lbl_1_bss_11F30 = .bss:0x00011F30; // type:object size:0x4 data:4byte +lbl_1_bss_11F34 = .bss:0x00011F34; // type:object size:0x4 data:4byte +lbl_1_bss_11F38 = .bss:0x00011F38; // type:object size:0x4 data:4byte +lbl_1_bss_11F3C = .bss:0x00011F3C; // type:object size:0x4 data:4byte +lbl_1_bss_11F40 = .bss:0x00011F40; // type:object size:0x4 data:4byte +lbl_1_bss_11F44 = .bss:0x00011F44; // type:object size:0x4 data:4byte +lbl_1_bss_11F48 = .bss:0x00011F48; // type:object size:0x4 data:4byte +lbl_1_bss_11F4C = .bss:0x00011F4C; // type:object size:0x4 data:4byte +lbl_1_bss_11F50 = .bss:0x00011F50; // type:object size:0x4 data:4byte +lbl_1_bss_11F54 = .bss:0x00011F54; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m443Dll/splits.txt b/config/GMPP01_00/rels/m443Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m443Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m443Dll/symbols.txt b/config/GMPP01_00/rels/m443Dll/symbols.txt new file mode 100644 index 00000000..77c929a5 --- /dev/null +++ b/config/GMPP01_00/rels/m443Dll/symbols.txt @@ -0,0 +1,326 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x380 +fn_1_420 = .text:0x00000420; // type:function size:0xC4 +fn_1_4E4 = .text:0x000004E4; // type:function size:0xA0 +fn_1_584 = .text:0x00000584; // type:function size:0x14C +fn_1_6D0 = .text:0x000006D0; // type:function size:0x2E0 +fn_1_9B0 = .text:0x000009B0; // type:function size:0x330 +fn_1_CE0 = .text:0x00000CE0; // type:function size:0x1EC +fn_1_ECC = .text:0x00000ECC; // type:function size:0x3C8 +fn_1_1294 = .text:0x00001294; // type:function size:0x544 +fn_1_17D8 = .text:0x000017D8; // type:function size:0x4C0 +fn_1_1C98 = .text:0x00001C98; // type:function size:0xF4 +fn_1_1D8C = .text:0x00001D8C; // type:function size:0x704 +fn_1_2490 = .text:0x00002490; // type:function size:0x114 +fn_1_25A4 = .text:0x000025A4; // type:function size:0x834 +fn_1_2DD8 = .text:0x00002DD8; // type:function size:0x17C +fn_1_2F54 = .text:0x00002F54; // type:function size:0x36C +fn_1_32C0 = .text:0x000032C0; // type:function size:0xB0 +fn_1_3370 = .text:0x00003370; // type:function size:0x3A0 +fn_1_3710 = .text:0x00003710; // type:function size:0x60 +fn_1_3770 = .text:0x00003770; // type:function size:0x608 +fn_1_3D78 = .text:0x00003D78; // type:function size:0x270 +fn_1_3FE8 = .text:0x00003FE8; // type:function size:0x14 +fn_1_3FFC = .text:0x00003FFC; // type:function size:0x14 +fn_1_4010 = .text:0x00004010; // type:function size:0x9C +fn_1_40AC = .text:0x000040AC; // type:function size:0x9C +fn_1_4148 = .text:0x00004148; // type:function size:0x68 +fn_1_41B0 = .text:0x000041B0; // type:function size:0x6C +fn_1_421C = .text:0x0000421C; // type:function size:0x98 +fn_1_42B4 = .text:0x000042B4; // type:function size:0x18 +fn_1_42CC = .text:0x000042CC; // type:function size:0x18 +fn_1_42E4 = .text:0x000042E4; // type:function size:0x18 +fn_1_42FC = .text:0x000042FC; // type:function size:0x18 +fn_1_4314 = .text:0x00004314; // type:function size:0x54 +fn_1_4368 = .text:0x00004368; // type:function size:0x44 +fn_1_43AC = .text:0x000043AC; // type:function size:0x30 +fn_1_43DC = .text:0x000043DC; // type:function size:0x30 +fn_1_440C = .text:0x0000440C; // type:function size:0x38 +fn_1_4444 = .text:0x00004444; // type:function size:0x208 +fn_1_464C = .text:0x0000464C; // type:function size:0x240 +fn_1_488C = .text:0x0000488C; // type:function size:0x11C +fn_1_49A8 = .text:0x000049A8; // type:function size:0xB4 +fn_1_4A5C = .text:0x00004A5C; // type:function size:0x54 +fn_1_4AB0 = .text:0x00004AB0; // type:function size:0x4 +fn_1_4AB4 = .text:0x00004AB4; // type:function size:0x260 +fn_1_4D14 = .text:0x00004D14; // type:function size:0x730 +fn_1_5444 = .text:0x00005444; // type:function size:0x218 +fn_1_565C = .text:0x0000565C; // type:function size:0x24 +fn_1_5680 = .text:0x00005680; // type:function size:0x554 +fn_1_5BD4 = .text:0x00005BD4; // type:function size:0x884 +fn_1_6458 = .text:0x00006458; // type:function size:0x21C +fn_1_6674 = .text:0x00006674; // type:function size:0xDC +fn_1_6750 = .text:0x00006750; // type:function size:0x264 +fn_1_69B4 = .text:0x000069B4; // type:function size:0x1DC +fn_1_6B90 = .text:0x00006B90; // type:function size:0x218 +fn_1_6DA8 = .text:0x00006DA8; // type:function size:0x388 +fn_1_7130 = .text:0x00007130; // type:function size:0x210 +fn_1_7340 = .text:0x00007340; // type:function size:0xDF8 +fn_1_8138 = .text:0x00008138; // type:function size:0x18C +fn_1_82C4 = .text:0x000082C4; // type:function size:0x74 +fn_1_8338 = .text:0x00008338; // type:function size:0x1D0 +fn_1_8508 = .text:0x00008508; // type:function size:0x178 +fn_1_8680 = .text:0x00008680; // type:function size:0x2D8 +fn_1_8958 = .text:0x00008958; // type:function size:0x38 +fn_1_8990 = .text:0x00008990; // type:function size:0x138 +fn_1_8AC8 = .text:0x00008AC8; // type:function size:0x1A0 +fn_1_8C68 = .text:0x00008C68; // type:function size:0x24 +fn_1_8C8C = .text:0x00008C8C; // type:function size:0x74 +fn_1_8D00 = .text:0x00008D00; // type:function size:0x74 +fn_1_8D74 = .text:0x00008D74; // type:function size:0x18 +fn_1_8D8C = .text:0x00008D8C; // type:function size:0x54 +fn_1_8DE0 = .text:0x00008DE0; // type:function size:0x54 +fn_1_8E34 = .text:0x00008E34; // type:function size:0x1C8 +fn_1_8FFC = .text:0x00008FFC; // type:function size:0x5A8 +fn_1_95A4 = .text:0x000095A4; // type:function size:0x94 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x50 +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x34 scope:local data:4byte +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x14 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x48 +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x18 +lbl_1_data_108 = .data:0x00000108; // type:object size:0x80 +lbl_1_data_188 = .data:0x00000188; // type:object size:0x80 +lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A data:string +lbl_1_data_226 = .data:0x00000226; // type:object size:0x1A +lbl_1_data_240 = .data:0x00000240; // type:object size:0x18 +lbl_1_data_258 = .data:0x00000258; // type:object size:0x2C +lbl_1_data_284 = .data:0x00000284; // type:object size:0x40 +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x10 +lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x50 +lbl_1_data_324 = .data:0x00000324; // type:object size:0x10 +lbl_1_data_334 = .data:0x00000334; // type:object size:0x10 +lbl_1_data_344 = .data:0x00000344; // type:object size:0x10 +lbl_1_data_354 = .data:0x00000354; // type:object size:0x10 +lbl_1_data_364 = .data:0x00000364; // type:object size:0x30 +lbl_1_data_394 = .data:0x00000394; // type:object size:0x30 +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x30 +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x5 data:string +lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x7 data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x7 data:string +lbl_1_data_407 = .data:0x00000407; // type:object size:0x9 +lbl_1_data_410 = .data:0x00000410; // type:object size:0x58 +lbl_1_data_468 = .data:0x00000468; // type:object size:0x20 +lbl_1_data_488 = .data:0x00000488; // type:object size:0x58 +lbl_1_data_4E0 = .data:0x000004E0; // type:object size:0x10 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x3C data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x2 data:2byte +lbl_1_bss_56 = .bss:0x00000056; // type:object size:0x2 data:2byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x2 data:2byte +lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x2 data:2byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x8 data:2byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x18 +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x10 diff --git a/config/GMPP01_00/rels/m444dll/splits.txt b/config/GMPP01_00/rels/m444dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m444dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m444dll/symbols.txt b/config/GMPP01_00/rels/m444dll/symbols.txt new file mode 100644 index 00000000..df37999d --- /dev/null +++ b/config/GMPP01_00/rels/m444dll/symbols.txt @@ -0,0 +1,320 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3D0 +fn_1_470 = .text:0x00000470; // type:function size:0x3788 +fn_1_3BF8 = .text:0x00003BF8; // type:function size:0x1270 +fn_1_4E68 = .text:0x00004E68; // type:function size:0x7C4 +fn_1_562C = .text:0x0000562C; // type:function size:0x1C4 +fn_1_57F0 = .text:0x000057F0; // type:function size:0x6F4 +fn_1_5EE4 = .text:0x00005EE4; // type:function size:0x6F4 +fn_1_65D8 = .text:0x000065D8; // type:function size:0x824 +fn_1_6DFC = .text:0x00006DFC; // type:function size:0xBC +fn_1_6EB8 = .text:0x00006EB8; // type:function size:0xA0 +fn_1_6F58 = .text:0x00006F58; // type:function size:0x3B4 +fn_1_730C = .text:0x0000730C; // type:function size:0xC2C +fn_1_7F38 = .text:0x00007F38; // type:function size:0x2C4 +fn_1_81FC = .text:0x000081FC; // type:function size:0x90 +fn_1_828C = .text:0x0000828C; // type:function size:0xEC +fn_1_8378 = .text:0x00008378; // type:function size:0x128 +fn_1_84A0 = .text:0x000084A0; // type:function size:0x1F8 +fn_1_8698 = .text:0x00008698; // type:function size:0x7B4 +fn_1_8E4C = .text:0x00008E4C; // type:function size:0x648 +fn_1_9494 = .text:0x00009494; // type:function size:0x894 +fn_1_9D28 = .text:0x00009D28; // type:function size:0x3B4 +fn_1_A0DC = .text:0x0000A0DC; // type:function size:0xB70 +fn_1_AC4C = .text:0x0000AC4C; // type:function size:0x618 +fn_1_B264 = .text:0x0000B264; // type:function size:0x102C +fn_1_C290 = .text:0x0000C290; // type:function size:0x528 +fn_1_C7B8 = .text:0x0000C7B8; // type:function size:0x2F4 +fn_1_CAAC = .text:0x0000CAAC; // type:function size:0x140 +fn_1_CBEC = .text:0x0000CBEC; // type:function size:0x298 +fn_1_CE84 = .text:0x0000CE84; // type:function size:0x194 +fn_1_D018 = .text:0x0000D018; // type:function size:0x244 +fn_1_D25C = .text:0x0000D25C; // type:function size:0x3A8 +fn_1_D604 = .text:0x0000D604; // type:function size:0x290 +fn_1_D894 = .text:0x0000D894; // type:function size:0x138 +fn_1_D9CC = .text:0x0000D9CC; // type:function size:0x78 +fn_1_DA44 = .text:0x0000DA44; // type:function size:0x2C +fn_1_DA70 = .text:0x0000DA70; // type:function size:0x42C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0xC data:4byte +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x118 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x28 +lbl_1_data_140 = .data:0x00000140; // type:object size:0x54 data:float +lbl_1_data_194 = .data:0x00000194; // type:object size:0x20 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA data:string +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA data:string +lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0xD data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xD data:string +lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD data:string +lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0xB data:string +lbl_1_data_240 = .data:0x00000240; // type:object size:0x4 +lbl_1_data_244 = .data:0x00000244; // type:object size:0xA data:string +lbl_1_data_24E = .data:0x0000024E; // type:object size:0xA +lbl_1_data_258 = .data:0x00000258; // type:object size:0xC +lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C +lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0xA +lbl_1_data_2D2 = .data:0x000002D2; // type:object size:0xD data:string +lbl_1_data_2DF = .data:0x000002DF; // type:object size:0xD data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xD data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0xD data:string +lbl_1_data_306 = .data:0x00000306; // type:object size:0xD data:string +lbl_1_data_313 = .data:0x00000313; // type:object size:0xD data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0xD data:string +lbl_1_data_32D = .data:0x0000032D; // type:object size:0xD data:string +lbl_1_data_33A = .data:0x0000033A; // type:object size:0xD data:string +lbl_1_data_347 = .data:0x00000347; // type:object size:0xD data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0xD data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0xD data:string +lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD data:string +jumptable_1_data_388 = .data:0x00000388; // type:object size:0x1C scope:local +lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x8 +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x30 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x24 +lbl_1_data_400 = .data:0x00000400; // type:object size:0x54 +lbl_1_data_454 = .data:0x00000454; // type:object size:0xC +lbl_1_data_460 = .data:0x00000460; // type:object size:0x10 data:string +lbl_1_data_470 = .data:0x00000470; // type:object size:0x127C +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x140 data:2byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x140 data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x8 data:float +lbl_1_bss_290 = .bss:0x00000290; // type:object size:0x18 data:4byte +lbl_1_bss_2A8 = .bss:0x000002A8; // type:object size:0x18 data:float +lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0x10 data:2byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x2 data:2byte +lbl_1_bss_2D2 = .bss:0x000002D2; // type:object size:0x2 data:2byte +lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x2 data:2byte +lbl_1_bss_2D6 = .bss:0x000002D6; // type:object size:0x2 data:2byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x2 data:2byte +lbl_1_bss_2DA = .bss:0x000002DA; // type:object size:0x2 data:2byte +lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x2 data:2byte +lbl_1_bss_2E0 = .bss:0x000002E0; // type:object size:0x4 data:float +lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0xC data:float +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0xC data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0x4 data:4byte +lbl_1_bss_310 = .bss:0x00000310; // type:object size:0x1 data:byte +lbl_1_bss_312 = .bss:0x00000312; // type:object size:0x2 data:2byte +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0xC data:float +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x8 data:2byte +lbl_1_bss_328 = .bss:0x00000328; // type:object size:0x24 data:float +lbl_1_bss_34C = .bss:0x0000034C; // type:object size:0x24 data:float +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0x400 +lbl_1_bss_770 = .bss:0x00000770; // type:object size:0xC data:float +lbl_1_bss_77C = .bss:0x0000077C; // type:object size:0xC data:float +lbl_1_bss_788 = .bss:0x00000788; // type:object size:0xC +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x90 +lbl_1_bss_824 = .bss:0x00000824; // type:object size:0x3C +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x24 +lbl_1_bss_884 = .bss:0x00000884; // type:object size:0x1000 +lbl_1_bss_1884 = .bss:0x00001884; // type:object size:0x2 data:2byte +lbl_1_bss_1888 = .bss:0x00001888; // type:object size:0xC data:float +lbl_1_bss_1894 = .bss:0x00001894; // type:object size:0xC data:float +lbl_1_bss_18A0 = .bss:0x000018A0; // type:object size:0x14 +lbl_1_bss_18B4 = .bss:0x000018B4; // type:object size:0x3C +lbl_1_bss_18F0 = .bss:0x000018F0; // type:object size:0xC000 +lbl_1_bss_D8F0 = .bss:0x0000D8F0; // type:object size:0xC000 +lbl_1_bss_198F0 = .bss:0x000198F0; // type:object size:0x1A +lbl_1_bss_1990A = .bss:0x0001990A; // type:object size:0x2 data:2byte +lbl_1_bss_1990E = .bss:0x0001990E; // type:object size:0xB4 data:2byte +lbl_1_bss_199C2 = .bss:0x000199C2; // type:object size:0xB4 data:2byte diff --git a/config/GMPP01_00/rels/m445Dll/splits.txt b/config/GMPP01_00/rels/m445Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m445Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m445Dll/symbols.txt b/config/GMPP01_00/rels/m445Dll/symbols.txt new file mode 100644 index 00000000..d8326fcd --- /dev/null +++ b/config/GMPP01_00/rels/m445Dll/symbols.txt @@ -0,0 +1,173 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x418 +fn_1_4B8 = .text:0x000004B8; // type:function size:0x54 +fn_1_50C = .text:0x0000050C; // type:function size:0x4 +fn_1_510 = .text:0x00000510; // type:function size:0x10 +fn_1_520 = .text:0x00000520; // type:function size:0x30 +fn_1_550 = .text:0x00000550; // type:function size:0x1308 +fn_1_1858 = .text:0x00001858; // type:function size:0x80 +fn_1_18D8 = .text:0x000018D8; // type:function size:0x5C +fn_1_1934 = .text:0x00001934; // type:function size:0x34 +fn_1_1968 = .text:0x00001968; // type:function size:0x168 +fn_1_1AD0 = .text:0x00001AD0; // type:function size:0x3C +fn_1_1B0C = .text:0x00001B0C; // type:function size:0x154 +fn_1_1C60 = .text:0x00001C60; // type:function size:0xF88 +fn_1_2BE8 = .text:0x00002BE8; // type:function size:0xB8 +fn_1_2CA0 = .text:0x00002CA0; // type:function size:0x1BC +fn_1_2E5C = .text:0x00002E5C; // type:function size:0xD0 +fn_1_2F2C = .text:0x00002F2C; // type:function size:0xD8 +fn_1_3004 = .text:0x00003004; // type:function size:0x84 +fn_1_3088 = .text:0x00003088; // type:function size:0x80 +fn_1_3108 = .text:0x00003108; // type:function size:0x220 +fn_1_3328 = .text:0x00003328; // type:function size:0x214 +fn_1_353C = .text:0x0000353C; // type:function size:0xD58 +fn_1_4294 = .text:0x00004294; // type:function size:0x104 +fn_1_4398 = .text:0x00004398; // type:function size:0x22C +fn_1_45C4 = .text:0x000045C4; // type:function size:0xFAC +fn_1_5570 = .text:0x00005570; // type:function size:0x74 +fn_1_55E4 = .text:0x000055E4; // type:function size:0x74 +fn_1_5658 = .text:0x00005658; // type:function size:0x9C +fn_1_56F4 = .text:0x000056F4; // type:function size:0xB68 +fn_1_625C = .text:0x0000625C; // type:function size:0x1D58 +fn_1_7FB4 = .text:0x00007FB4; // type:function size:0x360 +fn_1_8314 = .text:0x00008314; // type:function size:0x618 +fn_1_892C = .text:0x0000892C; // type:function size:0x80 +fn_1_89AC = .text:0x000089AC; // type:function size:0x60 +fn_1_8A0C = .text:0x00008A0C; // type:function size:0x334 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x40 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x20 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x18 +lbl_1_data_78 = .data:0x00000078; // type:object size:0x18 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x40 +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x40 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x40 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x12 data:string +lbl_1_data_162 = .data:0x00000162; // type:object size:0x12 data:string +lbl_1_data_174 = .data:0x00000174; // type:object size:0x13 data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x13 data:string +lbl_1_data_19A = .data:0x0000019A; // type:object size:0x14 data:string +lbl_1_data_1AE = .data:0x000001AE; // type:object size:0x14 data:string +lbl_1_data_1C2 = .data:0x000001C2; // type:object size:0x10 data:string +lbl_1_data_1D2 = .data:0x000001D2; // type:object size:0x10 data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0x13 data:string +lbl_1_data_1F5 = .data:0x000001F5; // type:object size:0xF data:string +lbl_1_data_204 = .data:0x00000204; // type:object size:0xE data:string +lbl_1_data_212 = .data:0x00000212; // type:object size:0xE +lbl_1_data_220 = .data:0x00000220; // type:object size:0x40 +lbl_1_data_260 = .data:0x00000260; // type:object size:0x20 +lbl_1_data_280 = .data:0x00000280; // type:object size:0xF data:string +lbl_1_data_28F = .data:0x0000028F; // type:object size:0xB data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0xC data:float +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0xC data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x28 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x230 +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x300 data:2byte +lbl_1_bss_588 = .bss:0x00000588; // type:object size:0x13C data:4byte +lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x4 data:4byte +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:4byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0xC data:4byte +lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte +lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte +lbl_1_bss_6E0 = .bss:0x000006E0; // type:object size:0x2 data:2byte +lbl_1_bss_6E2 = .bss:0x000006E2; // type:object size:0x2 data:2byte +lbl_1_bss_6E6 = .bss:0x000006E6; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m446dll/splits.txt b/config/GMPP01_00/rels/m446dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m446dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m446dll/symbols.txt b/config/GMPP01_00/rels/m446dll/symbols.txt new file mode 100644 index 00000000..ddaa394d --- /dev/null +++ b/config/GMPP01_00/rels/m446dll/symbols.txt @@ -0,0 +1,305 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x9C +fn_1_13C = .text:0x0000013C; // type:function size:0x168 +fn_1_2A4 = .text:0x000002A4; // type:function size:0x158 +fn_1_3FC = .text:0x000003FC; // type:function size:0xB8 +fn_1_4B4 = .text:0x000004B4; // type:function size:0x88 +fn_1_53C = .text:0x0000053C; // type:function size:0x41C +fn_1_958 = .text:0x00000958; // type:function size:0x220 +fn_1_B78 = .text:0x00000B78; // type:function size:0x94 +fn_1_C0C = .text:0x00000C0C; // type:function size:0x94 +fn_1_CA0 = .text:0x00000CA0; // type:function size:0xB30 +fn_1_17D0 = .text:0x000017D0; // type:function size:0x40 +fn_1_1810 = .text:0x00001810; // type:function size:0x38 +fn_1_1848 = .text:0x00001848; // type:function size:0x3C +fn_1_1884 = .text:0x00001884; // type:function size:0x3C +fn_1_18C0 = .text:0x000018C0; // type:function size:0x84 +fn_1_1944 = .text:0x00001944; // type:function size:0x64 +fn_1_19A8 = .text:0x000019A8; // type:function size:0x290 +fn_1_1C38 = .text:0x00001C38; // type:function size:0x94 +fn_1_1CCC = .text:0x00001CCC; // type:function size:0x38 +fn_1_1D04 = .text:0x00001D04; // type:function size:0x3C +fn_1_1D40 = .text:0x00001D40; // type:function size:0x3C +fn_1_1D7C = .text:0x00001D7C; // type:function size:0x34 +fn_1_1DB0 = .text:0x00001DB0; // type:function size:0x10 +fn_1_1DC0 = .text:0x00001DC0; // type:function size:0x8 +fn_1_1DC8 = .text:0x00001DC8; // type:function size:0x68 +fn_1_1E30 = .text:0x00001E30; // type:function size:0x28 +fn_1_1E58 = .text:0x00001E58; // type:function size:0x44 +fn_1_1E9C = .text:0x00001E9C; // type:function size:0x3C +fn_1_1ED8 = .text:0x00001ED8; // type:function size:0x34 +fn_1_1F0C = .text:0x00001F0C; // type:function size:0x4C +fn_1_1F58 = .text:0x00001F58; // type:function size:0x3C +fn_1_1F94 = .text:0x00001F94; // type:function size:0x3C +fn_1_1FD0 = .text:0x00001FD0; // type:function size:0x68 +fn_1_2038 = .text:0x00002038; // type:function size:0x18 +fn_1_2050 = .text:0x00002050; // type:function size:0x58 +fn_1_20A8 = .text:0x000020A8; // type:function size:0x338 +fn_1_23E0 = .text:0x000023E0; // type:function size:0x27C +fn_1_265C = .text:0x0000265C; // type:function size:0xA4 +fn_1_2700 = .text:0x00002700; // type:function size:0x68 +fn_1_2768 = .text:0x00002768; // type:function size:0x68 +fn_1_27D0 = .text:0x000027D0; // type:function size:0x94 +fn_1_2864 = .text:0x00002864; // type:function size:0x98 +fn_1_28FC = .text:0x000028FC; // type:function size:0x8C +fn_1_2988 = .text:0x00002988; // type:function size:0x68 +fn_1_29F0 = .text:0x000029F0; // type:function size:0x3C +fn_1_2A2C = .text:0x00002A2C; // type:function size:0x3C +fn_1_2A68 = .text:0x00002A68; // type:function size:0x14 +fn_1_2A7C = .text:0x00002A7C; // type:function size:0x2EC +fn_1_2D68 = .text:0x00002D68; // type:function size:0x14 +fn_1_2D7C = .text:0x00002D7C; // type:function size:0x118 +fn_1_2E94 = .text:0x00002E94; // type:function size:0xA4 +fn_1_2F38 = .text:0x00002F38; // type:function size:0x100 +fn_1_3038 = .text:0x00003038; // type:function size:0x11C +fn_1_3154 = .text:0x00003154; // type:function size:0x58 +fn_1_31AC = .text:0x000031AC; // type:function size:0x2C8 +fn_1_3474 = .text:0x00003474; // type:function size:0x260 +fn_1_36D4 = .text:0x000036D4; // type:function size:0x154 +fn_1_3828 = .text:0x00003828; // type:function size:0x5C +fn_1_3884 = .text:0x00003884; // type:function size:0x30 +fn_1_38B4 = .text:0x000038B4; // type:function size:0x10 +fn_1_38C4 = .text:0x000038C4; // type:function size:0x34 +fn_1_38F8 = .text:0x000038F8; // type:function size:0x18 +fn_1_3910 = .text:0x00003910; // type:function size:0x58 +fn_1_3968 = .text:0x00003968; // type:function size:0x3C +fn_1_39A4 = .text:0x000039A4; // type:function size:0x17C +fn_1_3B20 = .text:0x00003B20; // type:function size:0xA4 +fn_1_3BC4 = .text:0x00003BC4; // type:function size:0x2C4 +fn_1_3E88 = .text:0x00003E88; // type:function size:0x11C +fn_1_3FA4 = .text:0x00003FA4; // type:function size:0x30 +fn_1_3FD4 = .text:0x00003FD4; // type:function size:0x88 +fn_1_405C = .text:0x0000405C; // type:function size:0x624 +fn_1_4680 = .text:0x00004680; // type:function size:0x24 +fn_1_46A4 = .text:0x000046A4; // type:function size:0x50 +fn_1_46F4 = .text:0x000046F4; // type:function size:0x78 +fn_1_476C = .text:0x0000476C; // type:function size:0x74 +fn_1_47E0 = .text:0x000047E0; // type:function size:0x18 +fn_1_47F8 = .text:0x000047F8; // type:function size:0x58 +fn_1_4850 = .text:0x00004850; // type:function size:0x284 +fn_1_4AD4 = .text:0x00004AD4; // type:function size:0x59C +fn_1_5070 = .text:0x00005070; // type:function size:0x11C +fn_1_518C = .text:0x0000518C; // type:function size:0x34C +fn_1_54D8 = .text:0x000054D8; // type:function size:0x144 +fn_1_561C = .text:0x0000561C; // type:function size:0x30 +fn_1_564C = .text:0x0000564C; // type:function size:0x4BC +fn_1_5B08 = .text:0x00005B08; // type:function size:0x14 +fn_1_5B1C = .text:0x00005B1C; // type:function size:0xC8 +fn_1_5BE4 = .text:0x00005BE4; // type:function size:0x14 +fn_1_5BF8 = .text:0x00005BF8; // type:function size:0xC8 +fn_1_5CC0 = .text:0x00005CC0; // type:function size:0x14 +fn_1_5CD4 = .text:0x00005CD4; // type:function size:0x154 +fn_1_5E28 = .text:0x00005E28; // type:function size:0x220 +fn_1_6048 = .text:0x00006048; // type:function size:0x1F0 +fn_1_6238 = .text:0x00006238; // type:function size:0x8C +fn_1_62C4 = .text:0x000062C4; // type:function size:0x8C +fn_1_6350 = .text:0x00006350; // type:function size:0x140 +fn_1_6490 = .text:0x00006490; // type:function size:0xBC +fn_1_654C = .text:0x0000654C; // type:function size:0xA8 +fn_1_65F4 = .text:0x000065F4; // type:function size:0x158 +fn_1_674C = .text:0x0000674C; // type:function size:0x160 +fn_1_68AC = .text:0x000068AC; // type:function size:0x4 +fn_1_68B0 = .text:0x000068B0; // type:function size:0x5C4 +fn_1_6E74 = .text:0x00006E74; // type:function size:0x24 +fn_1_6E98 = .text:0x00006E98; // type:function size:0x24 +fn_1_6EBC = .text:0x00006EBC; // type:function size:0x10 +fn_1_6ECC = .text:0x00006ECC; // type:function size:0x194 +fn_1_7060 = .text:0x00007060; // type:function size:0x10 +fn_1_7070 = .text:0x00007070; // type:function size:0x244 +fn_1_72B4 = .text:0x000072B4; // type:function size:0x18 +fn_1_72CC = .text:0x000072CC; // type:function size:0x58 +fn_1_7324 = .text:0x00007324; // type:function size:0x1A4 +fn_1_74C8 = .text:0x000074C8; // type:function size:0x1F4 +fn_1_76BC = .text:0x000076BC; // type:function size:0xE0 +fn_1_779C = .text:0x0000779C; // type:function size:0xBC +fn_1_7858 = .text:0x00007858; // type:function size:0x84 +fn_1_78DC = .text:0x000078DC; // type:function size:0x94 +fn_1_7970 = .text:0x00007970; // type:function size:0x9C +fn_1_7A0C = .text:0x00007A0C; // type:function size:0x7C +fn_1_7A88 = .text:0x00007A88; // type:function size:0x13C +fn_1_7BC4 = .text:0x00007BC4; // type:function size:0x18 +fn_1_7BDC = .text:0x00007BDC; // type:function size:0x58 +fn_1_7C34 = .text:0x00007C34; // type:function size:0x460 +fn_1_8094 = .text:0x00008094; // type:function size:0x330 +fn_1_83C4 = .text:0x000083C4; // type:function size:0xBC +fn_1_8480 = .text:0x00008480; // type:function size:0x80 +fn_1_8500 = .text:0x00008500; // type:function size:0xE0 +fn_1_85E0 = .text:0x000085E0; // type:function size:0xC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x30 data:4byte +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x14 +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x14 +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x28 +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x18 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0x4 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x18 +lbl_1_data_50 = .data:0x00000050; // type:object size:0x18 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x8 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x10 +lbl_1_data_80 = .data:0x00000080; // type:object size:0x20 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x14 +jumptable_1_data_B4 = .data:0x000000B4; // type:object size:0x30 scope:local +jumptable_1_data_E4 = .data:0x000000E4; // type:object size:0x68 scope:local +lbl_1_data_150 = .data:0x00000150; // type:object size:0xC +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x20 +jumptable_1_data_17C = .data:0x0000017C; // type:object size:0x2C scope:local +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x1F data:string +lbl_1_data_1C7 = .data:0x000001C7; // type:object size:0x21 +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x1E data:string +lbl_1_data_206 = .data:0x00000206; // type:object size:0x22 +lbl_1_data_228 = .data:0x00000228; // type:object size:0x24 +lbl_1_data_24C = .data:0x0000024C; // type:object size:0x90 +lbl_1_data_2DC = .data:0x000002DC; // type:object size:0x14 +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x1F data:string +lbl_1_data_30F = .data:0x0000030F; // type:object size:0x1F data:string +lbl_1_data_32E = .data:0x0000032E; // type:object size:0x22 +jumptable_1_data_350 = .data:0x00000350; // type:object size:0x1C scope:local +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1E data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0x1E data:string +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x10 +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 +lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x24 +lbl_1_data_410 = .data:0x00000410; // type:object size:0x14 +lbl_1_data_424 = .data:0x00000424; // type:object size:0x3C +lbl_1_data_460 = .data:0x00000460; // type:object size:0x54 data:byte +lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x24 +lbl_1_data_4D8 = .data:0x000004D8; // type:object size:0x1E data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x8 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:float +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0xC data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0xC data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:float +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0xC data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0xC data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:float +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0xC data:float +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0xC data:float +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x8 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m447dll/splits.txt b/config/GMPP01_00/rels/m447dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m447dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m447dll/symbols.txt b/config/GMPP01_00/rels/m447dll/symbols.txt new file mode 100644 index 00000000..e191dd83 --- /dev/null +++ b/config/GMPP01_00/rels/m447dll/symbols.txt @@ -0,0 +1,309 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x8C +fn_1_12C = .text:0x0000012C; // type:function size:0x8C +fn_1_1B8 = .text:0x000001B8; // type:function size:0x284 +fn_1_43C = .text:0x0000043C; // type:function size:0x54 +fn_1_490 = .text:0x00000490; // type:function size:0x10 +fn_1_4A0 = .text:0x000004A0; // type:function size:0x10 +fn_1_4B0 = .text:0x000004B0; // type:function size:0x94 +fn_1_544 = .text:0x00000544; // type:function size:0x264 +fn_1_7A8 = .text:0x000007A8; // type:function size:0x3B4 +fn_1_B5C = .text:0x00000B5C; // type:function size:0x3CC +fn_1_F28 = .text:0x00000F28; // type:function size:0x134 +fn_1_105C = .text:0x0000105C; // type:function size:0x32C +fn_1_1388 = .text:0x00001388; // type:function size:0x88 +fn_1_1410 = .text:0x00001410; // type:function size:0x68 +fn_1_1478 = .text:0x00001478; // type:function size:0x2D0 +fn_1_1748 = .text:0x00001748; // type:function size:0xDC +fn_1_1824 = .text:0x00001824; // type:function size:0x54 +fn_1_1878 = .text:0x00001878; // type:function size:0x278 +fn_1_1AF0 = .text:0x00001AF0; // type:function size:0xFC +fn_1_1BEC = .text:0x00001BEC; // type:function size:0xE8 +fn_1_1CD4 = .text:0x00001CD4; // type:function size:0x54 +fn_1_1D28 = .text:0x00001D28; // type:function size:0x5C +fn_1_1D84 = .text:0x00001D84; // type:function size:0xE0 +fn_1_1E64 = .text:0x00001E64; // type:function size:0x40 +fn_1_1EA4 = .text:0x00001EA4; // type:function size:0x10 +fn_1_1EB4 = .text:0x00001EB4; // type:function size:0x14 +fn_1_1EC8 = .text:0x00001EC8; // type:function size:0x2C +fn_1_1EF4 = .text:0x00001EF4; // type:function size:0x9C +fn_1_1F90 = .text:0x00001F90; // type:function size:0x50 +fn_1_1FE0 = .text:0x00001FE0; // type:function size:0x8 +fn_1_1FE8 = .text:0x00001FE8; // type:function size:0x170 +fn_1_2158 = .text:0x00002158; // type:function size:0x1B8 +fn_1_2310 = .text:0x00002310; // type:function size:0x50 +fn_1_2360 = .text:0x00002360; // type:function size:0x124 +fn_1_2484 = .text:0x00002484; // type:function size:0x4 +fn_1_2488 = .text:0x00002488; // type:function size:0x150 +fn_1_25D8 = .text:0x000025D8; // type:function size:0x11C +fn_1_26F4 = .text:0x000026F4; // type:function size:0x33C +fn_1_2A30 = .text:0x00002A30; // type:function size:0x2CC +fn_1_2CFC = .text:0x00002CFC; // type:function size:0xA4 +fn_1_2DA0 = .text:0x00002DA0; // type:function size:0x384 +fn_1_3124 = .text:0x00003124; // type:function size:0x1B0 +fn_1_32D4 = .text:0x000032D4; // type:function size:0x2C +fn_1_3300 = .text:0x00003300; // type:function size:0xBC +fn_1_33BC = .text:0x000033BC; // type:function size:0xBC +fn_1_3478 = .text:0x00003478; // type:function size:0x98 +fn_1_3510 = .text:0x00003510; // type:function size:0x24 +fn_1_3534 = .text:0x00003534; // type:function size:0x24 +fn_1_3558 = .text:0x00003558; // type:function size:0x718 +fn_1_3C70 = .text:0x00003C70; // type:function size:0x22C +fn_1_3E9C = .text:0x00003E9C; // type:function size:0xDC +fn_1_3F78 = .text:0x00003F78; // type:function size:0x40 +fn_1_3FB8 = .text:0x00003FB8; // type:function size:0x33C +fn_1_42F4 = .text:0x000042F4; // type:function size:0xCC +fn_1_43C0 = .text:0x000043C0; // type:function size:0x10 +fn_1_43D0 = .text:0x000043D0; // type:function size:0x1C +fn_1_43EC = .text:0x000043EC; // type:function size:0x4C +fn_1_4438 = .text:0x00004438; // type:function size:0x6C +fn_1_44A4 = .text:0x000044A4; // type:function size:0xE0 +fn_1_4584 = .text:0x00004584; // type:function size:0xA8 +fn_1_462C = .text:0x0000462C; // type:function size:0x48 +fn_1_4674 = .text:0x00004674; // type:function size:0x8C +fn_1_4700 = .text:0x00004700; // type:function size:0x54 +fn_1_4754 = .text:0x00004754; // type:function size:0x4 +fn_1_4758 = .text:0x00004758; // type:function size:0x520 +fn_1_4C78 = .text:0x00004C78; // type:function size:0x2F8 +fn_1_4F70 = .text:0x00004F70; // type:function size:0x104 +fn_1_5074 = .text:0x00005074; // type:function size:0x218 +fn_1_528C = .text:0x0000528C; // type:function size:0x288 +fn_1_5514 = .text:0x00005514; // type:function size:0x240 +fn_1_5754 = .text:0x00005754; // type:function size:0x278 +fn_1_59CC = .text:0x000059CC; // type:function size:0x118 +fn_1_5AE4 = .text:0x00005AE4; // type:function size:0xE0 +fn_1_5BC4 = .text:0x00005BC4; // type:function size:0xA8 +fn_1_5C6C = .text:0x00005C6C; // type:function size:0xAA4 +fn_1_6710 = .text:0x00006710; // type:function size:0x9A0 +fn_1_70B0 = .text:0x000070B0; // type:function size:0xC0 +fn_1_7170 = .text:0x00007170; // type:function size:0x80 +fn_1_71F0 = .text:0x000071F0; // type:function size:0xAC +fn_1_729C = .text:0x0000729C; // type:function size:0x3E0 +fn_1_767C = .text:0x0000767C; // type:function size:0x220 +fn_1_789C = .text:0x0000789C; // type:function size:0xDC +fn_1_7978 = .text:0x00007978; // type:function size:0xB0 +fn_1_7A28 = .text:0x00007A28; // type:function size:0x38 +fn_1_7A60 = .text:0x00007A60; // type:function size:0x38 +fn_1_7A98 = .text:0x00007A98; // type:function size:0xB0 +fn_1_7B48 = .text:0x00007B48; // type:function size:0x240 +fn_1_7D88 = .text:0x00007D88; // type:function size:0x1D0 +fn_1_7F58 = .text:0x00007F58; // type:function size:0x158 +fn_1_80B0 = .text:0x000080B0; // type:function size:0x6E0 +fn_1_8790 = .text:0x00008790; // type:function size:0x220 +fn_1_89B0 = .text:0x000089B0; // type:function size:0x43C +fn_1_8DEC = .text:0x00008DEC; // type:function size:0x184 +fn_1_8F70 = .text:0x00008F70; // type:function size:0x78 +fn_1_8FE8 = .text:0x00008FE8; // type:function size:0x10 +fn_1_8FF8 = .text:0x00008FF8; // type:function size:0xF8 +fn_1_90F0 = .text:0x000090F0; // type:function size:0x10 +fn_1_9100 = .text:0x00009100; // type:function size:0x4C +fn_1_914C = .text:0x0000914C; // type:function size:0x1C8 +fn_1_9314 = .text:0x00009314; // type:function size:0x54 +fn_1_9368 = .text:0x00009368; // type:function size:0x1C4 +fn_1_952C = .text:0x0000952C; // type:function size:0x4 +fn_1_9530 = .text:0x00009530; // type:function size:0x21C +fn_1_974C = .text:0x0000974C; // type:function size:0x1C4 +fn_1_9910 = .text:0x00009910; // type:function size:0x2B0 +fn_1_9BC0 = .text:0x00009BC0; // type:function size:0x120 +fn_1_9CE0 = .text:0x00009CE0; // type:function size:0x200 +fn_1_9EE0 = .text:0x00009EE0; // type:function size:0x54 +fn_1_9F34 = .text:0x00009F34; // type:function size:0x2F0 +fn_1_A224 = .text:0x0000A224; // type:function size:0x10 +fn_1_A234 = .text:0x0000A234; // type:function size:0x34 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x64 +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x18 +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x18 data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x58 +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x3C +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x1 data:byte +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x144 +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x24 +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x60 +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x14 +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x20 +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x60 +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 data:double +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x50 +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x50 +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 data:float +lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 data:float +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 data:float +lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0x4 data:float +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:double +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 data:float +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 data:float +lbl_1_rodata_6D4 = .rodata:0x000006D4; // type:object size:0x4 data:float +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x8 data:double +lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 data:float +lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 data:double +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 data:double +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 data:double +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x1 data:byte +lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 data:float +lbl_1_rodata_73C = .rodata:0x0000073C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1C +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x14 +jumptable_1_data_30 = .data:0x00000030; // type:object size:0x28 scope:local +jumptable_1_data_58 = .data:0x00000058; // type:object size:0x28 scope:local +jumptable_1_data_80 = .data:0x00000080; // type:object size:0x20 scope:local +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA8 +lbl_1_data_148 = .data:0x00000148; // type:object size:0x18 +lbl_1_data_160 = .data:0x00000160; // type:object size:0x1E data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x1E data:string +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x14 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x1C +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x2C +jumptable_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 scope:local +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x40 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x1C +lbl_1_data_278 = .data:0x00000278; // type:object size:0x1C +lbl_1_data_294 = .data:0x00000294; // type:object size:0x18 +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x37 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:float +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x1C data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1C data:float +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x1C data:float +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x8 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x8 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x14 +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m448Dll/splits.txt b/config/GMPP01_00/rels/m448Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m448Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m448Dll/symbols.txt b/config/GMPP01_00/rels/m448Dll/symbols.txt new file mode 100644 index 00000000..0ffb9d58 --- /dev/null +++ b/config/GMPP01_00/rels/m448Dll/symbols.txt @@ -0,0 +1,200 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x2EC +fn_1_38C = .text:0x0000038C; // type:function size:0xEC +fn_1_478 = .text:0x00000478; // type:function size:0x84 +fn_1_4FC = .text:0x000004FC; // type:function size:0xE3C +fn_1_1338 = .text:0x00001338; // type:function size:0x2FDC +fn_1_4314 = .text:0x00004314; // type:function size:0x2A94 +fn_1_6DA8 = .text:0x00006DA8; // type:function size:0x3E4 +fn_1_718C = .text:0x0000718C; // type:function size:0xC70 +fn_1_7DFC = .text:0x00007DFC; // type:function size:0x3FC +fn_1_81F8 = .text:0x000081F8; // type:function size:0xC10 +fn_1_8E08 = .text:0x00008E08; // type:function size:0x738 +fn_1_9540 = .text:0x00009540; // type:function size:0x154 +fn_1_9694 = .text:0x00009694; // type:function size:0x4A4 +fn_1_9B38 = .text:0x00009B38; // type:function size:0x120 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x14 data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x14 data:4byte +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x14 data:4byte +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x14 data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x14 data:4byte +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x10 data:4byte +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x10 data:4byte +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0xC data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x54 +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x10 data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:4byte +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x50 +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x50 +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x50 +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x24 data:4byte +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x34 data:4byte +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x24 data:4byte +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x50 +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x50 +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x18 data:4byte +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x18 data:4byte +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x8 data:4byte +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x28 data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x28 data:4byte +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0xC data:4byte +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0xC data:4byte +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x1 data:byte +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float +lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x28 +lbl_1_data_28 = .data:0x00000028; // type:object size:0x28 +lbl_1_data_50 = .data:0x00000050; // type:object size:0x2C +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x2C +lbl_1_data_A8 = .data:0x000000A8; // type:object size:0xB data:byte +lbl_1_data_B3 = .data:0x000000B3; // type:object size:0xD +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x2C +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x2C data:4byte +lbl_1_data_118 = .data:0x00000118; // type:object size:0x58 +lbl_1_data_170 = .data:0x00000170; // type:object size:0x8 data:4byte +lbl_1_data_178 = .data:0x00000178; // type:object size:0x20 +lbl_1_data_198 = .data:0x00000198; // type:object size:0x2 data:2byte +lbl_1_data_19A = .data:0x0000019A; // type:object size:0x2 data:2byte +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x2 data:2byte +lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x8 data:4byte +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x8 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x8 +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x20 +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x10 data:float +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x9 data:string +lbl_1_data_1F5 = .data:0x000001F5; // type:object size:0x1B +jumptable_1_data_210 = .data:0x00000210; // type:object size:0x2C scope:local +jumptable_1_data_23C = .data:0x0000023C; // type:object size:0x20 scope:local +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x4 data:4byte +lbl_1_data_260 = .data:0x00000260; // type:object size:0x4 data:float +lbl_1_data_264 = .data:0x00000264; // type:object size:0x4 data:float +lbl_1_data_268 = .data:0x00000268; // type:object size:0x4 data:float +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x4 data:float +jumptable_1_data_270 = .data:0x00000270; // type:object size:0x24 scope:local +jumptable_1_data_294 = .data:0x00000294; // type:object size:0x20 scope:local +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x20 +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x8 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0xD0 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x2D0 data:4byte diff --git a/config/GMPP01_00/rels/m449Dll/splits.txt b/config/GMPP01_00/rels/m449Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m449Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m449Dll/symbols.txt b/config/GMPP01_00/rels/m449Dll/symbols.txt new file mode 100644 index 00000000..acf85bcc --- /dev/null +++ b/config/GMPP01_00/rels/m449Dll/symbols.txt @@ -0,0 +1,209 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x358 +fn_1_3F8 = .text:0x000003F8; // type:function size:0x360 +fn_1_758 = .text:0x00000758; // type:function size:0x5EB8 +fn_1_6610 = .text:0x00006610; // type:function size:0x8 +fn_1_6618 = .text:0x00006618; // type:function size:0x2C +fn_1_6644 = .text:0x00006644; // type:function size:0x140 +fn_1_6784 = .text:0x00006784; // type:function size:0xCC +fn_1_6850 = .text:0x00006850; // type:function size:0x958 +fn_1_71A8 = .text:0x000071A8; // type:function size:0x39C +fn_1_7544 = .text:0x00007544; // type:function size:0x988 +fn_1_7ECC = .text:0x00007ECC; // type:function size:0xC8 +fn_1_7F94 = .text:0x00007F94; // type:function size:0x5A4 +fn_1_8538 = .text:0x00008538; // type:function size:0xFC0 +fn_1_94F8 = .text:0x000094F8; // type:function size:0xE0 +fn_1_95D8 = .text:0x000095D8; // type:function size:0x460 +fn_1_9A38 = .text:0x00009A38; // type:function size:0x9C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC0 +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC0 +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC0 +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x20 data:4byte +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x60 +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x18 data:4byte +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x34 data:4byte +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x20 data:4byte +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:4byte +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x48 +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x48 +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0xC data:4byte +lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0xC data:4byte +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x1 data:byte +lbl_1_rodata_70C = .rodata:0x0000070C; // type:object size:0x4 data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 data:float +lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float +lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 data:float +lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 data:float +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x48 +lbl_1_data_48 = .data:0x00000048; // type:object size:0x48 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x38 +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x50 +lbl_1_data_138 = .data:0x00000138; // type:object size:0x50 +lbl_1_data_188 = .data:0x00000188; // type:object size:0x50 +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x50 +lbl_1_data_228 = .data:0x00000228; // type:object size:0x2 data:2byte +lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x4 data:4byte +lbl_1_data_230 = .data:0x00000230; // type:object size:0xC data:4byte +lbl_1_data_23C = .data:0x0000023C; // type:object size:0x28 data:4byte +lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 +lbl_1_data_284 = .data:0x00000284; // type:object size:0x4 data:4byte +lbl_1_data_288 = .data:0x00000288; // type:object size:0x4 data:float +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x4 data:float +lbl_1_data_290 = .data:0x00000290; // type:object size:0x4 data:float +lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:float +jumptable_1_data_298 = .data:0x00000298; // type:object size:0x1C scope:local +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x90 data:4byte diff --git a/config/GMPP01_00/rels/m450Dll/splits.txt b/config/GMPP01_00/rels/m450Dll/splits.txt new file mode 100644 index 00000000..eecefe9b --- /dev/null +++ b/config/GMPP01_00/rels/m450Dll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/m450Dll/main.c: + .text start:0x00000000 end:0x00029968 + .rodata start:0x00000000 end:0x00000398 + .data start:0x00000000 end:0x000017C4 + .bss start:0x00000000 end:0x00000364 diff --git a/config/GMPP01_00/rels/m450Dll/symbols.txt b/config/GMPP01_00/rels/m450Dll/symbols.txt new file mode 100644 index 00000000..feaece31 --- /dev/null +++ b/config/GMPP01_00/rels/m450Dll/symbols.txt @@ -0,0 +1,563 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x204 +fn_1_798 = .text:0x00000784; // type:function size:0x240 +fn_1_9EC = .text:0x000009C4; // type:function size:0x54 +fn_1_A40 = .text:0x00000A18; // type:function size:0x10C +fn_1_B4C = .text:0x00000B24; // type:function size:0x680 +fn_1_11F4 = .text:0x000011A4; // type:function size:0x15C +fn_1_1350 = .text:0x00001300; // type:function size:0x8C +fn_1_13DC = .text:0x0000138C; // type:function size:0x334 +fn_1_1710 = .text:0x000016C0; // type:function size:0x350 +fn_1_1A60 = .text:0x00001A10; // type:function size:0x2B8 +fn_1_1D18 = .text:0x00001CC8; // type:function size:0x58 +fn_1_1D70 = .text:0x00001D20; // type:function size:0xB0 +fn_1_1E20 = .text:0x00001DD0; // type:function size:0x104 +fn_1_1F24 = .text:0x00001ED4; // type:function size:0x34 +fn_1_1F58 = .text:0x00001F08; // type:function size:0x6C +fn_1_1FC4 = .text:0x00001F74; // type:function size:0x3F0 +fn_1_23B4 = .text:0x00002364; // type:function size:0x64 +fn_1_2418 = .text:0x000023C8; // type:function size:0xE0 +fn_1_24F8 = .text:0x000024A8; // type:function size:0x32C +fn_1_2824 = .text:0x000027D4; // type:function size:0x3AC +fn_1_2BD0 = .text:0x00002B80; // type:function size:0x30 +fn_1_2C00 = .text:0x00002BB0; // type:function size:0x1C +fn_1_2C1C = .text:0x00002BCC; // type:function size:0x18C +fn_1_2DA8 = .text:0x00002D58; // type:function size:0x8 +fn_1_2DB0 = .text:0x00002D60; // type:function size:0x8 +fn_1_2DB8 = .text:0x00002D68; // type:function size:0x8 +fn_1_2DC0 = .text:0x00002D70; // type:function size:0x8 +fn_1_2DC8 = .text:0x00002D78; // type:function size:0xC +fn_1_2DD4 = .text:0x00002D84; // type:function size:0x60 +fn_1_2E34 = .text:0x00002DE4; // type:function size:0xB90 +fn_1_39C4 = .text:0x00003974; // type:function size:0x31C +fn_1_3CE0 = .text:0x00003C90; // type:function size:0xD8 +fn_1_3DB8 = .text:0x00003D68; // type:function size:0x114 +fn_1_3ECC = .text:0x00003E7C; // type:function size:0xB8 +fn_1_3F84 = .text:0x00003F34; // type:function size:0xA0 +fn_1_4024 = .text:0x00003FD4; // type:function size:0x9C +fn_1_40C0 = .text:0x00004070; // type:function size:0xE18 +fn_1_4ED8 = .text:0x00004E88; // type:function size:0x250 +fn_1_5128 = .text:0x000050D8; // type:function size:0x10 +fn_1_5138 = .text:0x000050E8; // type:function size:0x10 +fn_1_5148 = .text:0x000050F8; // type:function size:0x400 +fn_1_5548 = .text:0x000054F8; // type:function size:0x7C +fn_1_55C4 = .text:0x00005574; // type:function size:0x5C +fn_1_5620 = .text:0x000055D0; // type:function size:0xA4 +fn_1_56C4 = .text:0x00005674; // type:function size:0x748 +fn_1_5E0C = .text:0x00005DBC; // type:function size:0xCC +fn_1_5ED8 = .text:0x00005E88; // type:function size:0x658 +fn_1_6530 = .text:0x000064E0; // type:function size:0x108 +fn_1_6638 = .text:0x000065E8; // type:function size:0x38 +fn_1_6670 = .text:0x00006620; // type:function size:0x30 +fn_1_66A0 = .text:0x00006650; // type:function size:0x3C +fn_1_66DC = .text:0x0000668C; // type:function size:0xBC +fn_1_6798 = .text:0x00006748; // type:function size:0x260 +fn_1_69F8 = .text:0x000069A8; // type:function size:0xD0 +fn_1_6AC8 = .text:0x00006A78; // type:function size:0xC8 +fn_1_6B90 = .text:0x00006B40; // type:function size:0xD8 +fn_1_6C68 = .text:0x00006C18; // type:function size:0x48 +fn_1_6CB0 = .text:0x00006C60; // type:function size:0x7C +fn_1_6D2C = .text:0x00006CDC; // type:function size:0x3C +fn_1_6D68 = .text:0x00006D18; // type:function size:0x70 +fn_1_6DD8 = .text:0x00006D88; // type:function size:0x714 +fn_1_74EC = .text:0x0000749C; // type:function size:0x6A4 +fn_1_7B90 = .text:0x00007B40; // type:function size:0x84 +fn_1_7C14 = .text:0x00007BC4; // type:function size:0x84 +fn_1_7C98 = .text:0x00007C48; // type:function size:0xA8 +fn_1_7D40 = .text:0x00007CF0; // type:function size:0x3E0 +fn_1_8120 = .text:0x000080D0; // type:function size:0x3E0 +fn_1_8500 = .text:0x000084B0; // type:function size:0x6DC +fn_1_8BDC = .text:0x00008B8C; // type:function size:0x498 +fn_1_9074 = .text:0x00009024; // type:function size:0x64C +fn_1_96C0 = .text:0x00009670; // type:function size:0x164 +fn_1_9824 = .text:0x000097D4; // type:function size:0x380 +fn_1_9BA4 = .text:0x00009B54; // type:function size:0x3A8 +fn_1_9F4C = .text:0x00009EFC; // type:function size:0x478 +fn_1_A3C4 = .text:0x0000A374; // type:function size:0xAC +fn_1_A470 = .text:0x0000A420; // type:function size:0x190 +fn_1_A600 = .text:0x0000A5B0; // type:function size:0x1CC +fn_1_A7CC = .text:0x0000A77C; // type:function size:0x5C +fn_1_A828 = .text:0x0000A7D8; // type:function size:0x140 +fn_1_A968 = .text:0x0000A918; // type:function size:0x148 +fn_1_AAB0 = .text:0x0000AA60; // type:function size:0xD8 +fn_1_AB88 = .text:0x0000AB38; // type:function size:0x48 +fn_1_ABD0 = .text:0x0000AB80; // type:function size:0x188 +fn_1_AD58 = .text:0x0000AD08; // type:function size:0x2E98 +fn_1_DBF0 = .text:0x0000DBA0; // type:function size:0x4F8 +fn_1_E0E8 = .text:0x0000E098; // type:function size:0x90 +fn_1_E178 = .text:0x0000E128; // type:function size:0x30 +fn_1_E1A8 = .text:0x0000E158; // type:function size:0x114 +fn_1_E2BC = .text:0x0000E26C; // type:function size:0x10C +fn_1_E3C8 = .text:0x0000E378; // type:function size:0xB0 +fn_1_E478 = .text:0x0000E428; // type:function size:0x18C +fn_1_E604 = .text:0x0000E5B4; // type:function size:0x314 +fn_1_E918 = .text:0x0000E8C8; // type:function size:0x138 +fn_1_EA50 = .text:0x0000EA00; // type:function size:0x11C +fn_1_EB6C = .text:0x0000EB1C; // type:function size:0x1E0 +fn_1_ED4C = .text:0x0000ECFC; // type:function size:0x3010 +fn_1_11D5C = .text:0x00011D0C; // type:function size:0x4D8 +fn_1_12234 = .text:0x000121E4; // type:function size:0x30C +fn_1_12540 = .text:0x000124F0; // type:function size:0x80 +fn_1_125C0 = .text:0x00012570; // type:function size:0xC8 +fn_1_12688 = .text:0x00012638; // type:function size:0x294 +fn_1_1291C = .text:0x000128CC; // type:function size:0x100 +fn_1_12A1C = .text:0x000129CC; // type:function size:0x164 +fn_1_12B80 = .text:0x00012B30; // type:function size:0x1F8 +fn_1_12D78 = .text:0x00012D28; // type:function size:0x4 +fn_1_12D7C = .text:0x00012D2C; // type:function size:0xE0 +fn_1_12E5C = .text:0x00012E0C; // type:function size:0x248 +fn_1_130A4 = .text:0x00013054; // type:function size:0xD0 +fn_1_13174 = .text:0x00013124; // type:function size:0x3EC +fn_1_13560 = .text:0x00013510; // type:function size:0x1B4 +fn_1_13714 = .text:0x000136C4; // type:function size:0x29C +fn_1_139B0 = .text:0x00013960; // type:function size:0x19C +fn_1_13B4C = .text:0x00013AFC; // type:function size:0xC +fn_1_13B58 = .text:0x00013B08; // type:function size:0x38 +fn_1_13B90 = .text:0x00013B40; // type:function size:0x34 +fn_1_13BC4 = .text:0x00013B74; // type:function size:0x364 +fn_1_13F28 = .text:0x00013ED8; // type:function size:0x988 +fn_1_148B0 = .text:0x00014860; // type:function size:0x110 +fn_1_149C0 = .text:0x00014970; // type:function size:0xF8 +fn_1_14AB8 = .text:0x00014A68; // type:function size:0x110 +fn_1_14BC8 = .text:0x00014B78; // type:function size:0x60 +fn_1_14C28 = .text:0x00014BD8; // type:function size:0xC0 +fn_1_14CE8 = .text:0x00014C98; // type:function size:0x620 +fn_1_15308 = .text:0x000152B8; // type:function size:0x840 +fn_1_15B48 = .text:0x00015AF8; // type:function size:0x64 +fn_1_15BAC = .text:0x00015B5C; // type:function size:0x500 +fn_1_160AC = .text:0x0001605C; // type:function size:0x1D4 +fn_1_16280 = .text:0x00016230; // type:function size:0x94 +fn_1_16314 = .text:0x000162C4; // type:function size:0x64 +fn_1_16378 = .text:0x00016328; // type:function size:0x598 +fn_1_16910 = .text:0x000168C0; // type:function size:0x2B4 +fn_1_16BC4 = .text:0x00016B74; // type:function size:0x130 +fn_1_16CF4 = .text:0x00016CA4; // type:function size:0x4D0 +fn_1_171C4 = .text:0x00017174; // type:function size:0x19C +fn_1_17360 = .text:0x00017310; // type:function size:0x114 +fn_1_17474 = .text:0x00017424; // type:function size:0x4FC +fn_1_17970 = .text:0x00017920; // type:function size:0x24C +fn_1_17BBC = .text:0x00017B6C; // type:function size:0x868 +fn_1_18424 = .text:0x000183D4; // type:function size:0x284 +fn_1_186A8 = .text:0x00018658; // type:function size:0x888 +fn_1_18F30 = .text:0x00018EE0; // type:function size:0x37C +fn_1_192AC = .text:0x0001925C; // type:function size:0xE4 +fn_1_19390 = .text:0x00019340; // type:function size:0xC0 +fn_1_19450 = .text:0x00019400; // type:function size:0x1FC +fn_1_1964C = .text:0x000195FC; // type:function size:0x14C +fn_1_19798 = .text:0x00019748; // type:function size:0x278 +fn_1_19A10 = .text:0x000199C0; // type:function size:0x208 +fn_1_19C18 = .text:0x00019BC8; // type:function size:0xC8 +fn_1_19CE0 = .text:0x00019C90; // type:function size:0x334 +fn_1_1A014 = .text:0x00019FC4; // type:function size:0x4C +fn_1_1A060 = .text:0x0001A010; // type:function size:0x1BC +fn_1_1A21C = .text:0x0001A1CC; // type:function size:0x1D4 +fn_1_1A3F0 = .text:0x0001A3A0; // type:function size:0x284 +_prolog = .text:0x0001A624; // type:function size:0x54 scope:global +_epilog = .text:0x0001A678; // type:function size:0x4C scope:global +fn_1_1A714 = .text:0x0001A6C4; // type:function size:0x22C +fn_1_1A940 = .text:0x0001A8F0; // type:function size:0x784 +fn_1_1B0C4 = .text:0x0001B074; // type:function size:0x94 +fn_1_1B158 = .text:0x0001B108; // type:function size:0x154 +fn_1_1B2AC = .text:0x0001B25C; // type:function size:0x21C +fn_1_1B4C8 = .text:0x0001B478; // type:function size:0x48 +fn_1_1B510 = .text:0x0001B4C0; // type:function size:0x134 +fn_1_1B644 = .text:0x0001B5F4; // type:function size:0x1EC +fn_1_1B830 = .text:0x0001B7E0; // type:function size:0x830 +fn_1_1C060 = .text:0x0001C010; // type:function size:0x274 +fn_1_1C2D4 = .text:0x0001C284; // type:function size:0xC8 +fn_1_1C39C = .text:0x0001C34C; // type:function size:0x98 +fn_1_1C434 = .text:0x0001C3E4; // type:function size:0x2B0 +fn_1_1C6E4 = .text:0x0001C694; // type:function size:0x98 +fn_1_1C77C = .text:0x0001C72C; // type:function size:0x11C +fn_1_1C898 = .text:0x0001C848; // type:function size:0x18B8 +fn_1_1E150 = .text:0x0001E100; // type:function size:0x1F6C +fn_1_200BC = .text:0x0002006C; // type:function size:0xB4 +fn_1_20170 = .text:0x00020120; // type:function size:0x31C0 +fn_1_23330 = .text:0x000232E0; // type:function size:0x440 +fn_1_23770 = .text:0x00023720; // type:function size:0x530 +fn_1_23CA0 = .text:0x00023C50; // type:function size:0x980 +fn_1_24620 = .text:0x000245D0; // type:function size:0x4A08 +ObjectSetup = .text:0x00028FD8; // type:function size:0x8C0 +fn_1_298EC = .text:0x00029898; // type:function size:0xD0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x58 scope:local +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x58 scope:local +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 +lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0xC data:byte +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x8 +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4C +lbl_1_data_100 = .data:0x00000100; // type:object size:0x14 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x3C data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x3C data:4byte +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 data:4byte +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x20 data:4byte +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x10 data:4byte +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x28 data:float +lbl_1_data_204 = .data:0x00000204; // type:object size:0x30 data:float +lbl_1_data_234 = .data:0x00000234; // type:object size:0x20 data:float +lbl_1_data_254 = .data:0x00000254; // type:object size:0x14 data:float +lbl_1_data_268 = .data:0x00000268; // type:object size:0x14 data:float +lbl_1_data_27C = .data:0x0000027C; // type:object size:0x14 data:float +lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x12 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x13 scope:local data:string +lbl_1_data_2C9 = .data:0x000002C9; // type:object size:0x14 scope:local data:string +lbl_1_data_2DD = .data:0x000002DD; // type:object size:0x1C scope:local data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0x12 scope:local data:string +lbl_1_data_30B = .data:0x0000030B; // type:object size:0xE scope:local data:string +jumptable_1_data_31C = .data:0x0000031C; // type:object size:0x60 scope:local +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x12 scope:local data:string +lbl_1_data_38E = .data:0x0000038E; // type:object size:0x12 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x13 scope:local data:string +lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x14 scope:local data:string +lbl_1_data_3C7 = .data:0x000003C7; // type:object size:0x14 scope:local data:string +lbl_1_data_3DB = .data:0x000003DB; // type:object size:0x13 scope:local data:string +lbl_1_data_3EE = .data:0x000003EE; // type:object size:0x1C scope:local data:string +jumptable_1_data_40C = .data:0x0000040C; // type:object size:0x44 scope:local +lbl_1_data_450 = .data:0x00000450; // type:object size:0x12 scope:local data:string +lbl_1_data_464 = .data:0x00000464; // type:object size:0xC data:4byte +lbl_1_data_470 = .data:0x00000470; // type:object size:0xC +lbl_1_data_47C = .data:0x0000047C; // type:object size:0xC data:4byte +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC data:4byte +lbl_1_data_494 = .data:0x00000494; // type:object size:0xC data:4byte +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xC data:float +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0xC data:4byte +lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0xC data:4byte +lbl_1_data_4C4 = .data:0x000004C4; // type:object size:0xC data:4byte +lbl_1_data_4D0 = .data:0x000004D0; // type:object size:0xC data:4byte +lbl_1_data_4DC = .data:0x000004DC; // type:object size:0xC data:4byte +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0xC +lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0xC +lbl_1_data_500 = .data:0x00000500; // type:object size:0x4 +lbl_1_data_504 = .data:0x00000504; // type:object size:0xC +lbl_1_data_510 = .data:0x00000510; // type:object size:0xC +lbl_1_data_51C = .data:0x0000051C; // type:object size:0x30 +lbl_1_data_54C = .data:0x0000054C; // type:object size:0x10 scope:local data:string +lbl_1_data_55C = .data:0x0000055C; // type:object size:0x10 scope:local data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 scope:local data:string +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x10 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x10 scope:local data:string +lbl_1_data_59C = .data:0x0000059C; // type:object size:0x10 scope:local data:string +lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x10 scope:local data:string +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x10 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x80 +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x2E0 +lbl_1_data_92C = .data:0x0000092C; // type:object size:0x20 +lbl_1_data_94C = .data:0x0000094C; // type:object size:0xA0 data:float +lbl_1_data_9EC = .data:0x000009EC; // type:object size:0x20 +lbl_1_data_A0C = .data:0x00000A0C; // type:object size:0x38 data:4byte +lbl_1_data_A44 = .data:0x00000A44; // type:object size:0x13 scope:local data:string +lbl_1_data_A57 = .data:0x00000A57; // type:object size:0x13 scope:local data:string +lbl_1_data_A6A = .data:0x00000A6A; // type:object size:0x13 scope:local data:string +lbl_1_data_A80 = .data:0x00000A80; // type:object size:0x18C +lbl_1_data_C0C = .data:0x00000C0C; // type:object size:0x13 scope:local data:string +lbl_1_data_C1F = .data:0x00000C1F; // type:object size:0x13 scope:local data:string +lbl_1_data_C32 = .data:0x00000C32; // type:object size:0x13 scope:local data:string +lbl_1_data_C45 = .data:0x00000C45; // type:object size:0x13 scope:local data:string +lbl_1_data_C58 = .data:0x00000C58; // type:object size:0x1B8 +lbl_1_data_E10 = .data:0x00000E10; // type:object size:0x11 scope:local data:string +lbl_1_data_E21 = .data:0x00000E21; // type:object size:0x11 scope:local data:string +lbl_1_data_E32 = .data:0x00000E32; // type:object size:0x11 scope:local data:string +lbl_1_data_E43 = .data:0x00000E43; // type:object size:0x11 scope:local data:string +lbl_1_data_E54 = .data:0x00000E54; // type:object size:0x11 scope:local data:string +lbl_1_data_E68 = .data:0x00000E68; // type:object size:0x14 +lbl_1_data_E7C = .data:0x00000E7C; // type:object size:0x84 +lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x5C +lbl_1_data_F5C = .data:0x00000F5C; // type:object size:0x10 +lbl_1_data_F6C = .data:0x00000F6C; // type:object size:0x18 +lbl_1_data_F84 = .data:0x00000F84; // type:object size:0x14 data:float +lbl_1_data_F98 = .data:0x00000F98; // type:object size:0x14 data:float +lbl_1_data_FAC = .data:0x00000FAC; // type:object size:0x18 +lbl_1_data_FC4 = .data:0x00000FC4; // type:object size:0x14 +lbl_1_data_FD8 = .data:0x00000FD8; // type:object size:0x14 +lbl_1_data_FEC = .data:0x00000FEC; // type:object size:0x14 +lbl_1_data_1000 = .data:0x00001000; // type:object size:0x14 +lbl_1_data_1014 = .data:0x00001014; // type:object size:0x28 +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x28 +lbl_1_data_1064 = .data:0x00001064; // type:object size:0x28 +lbl_1_data_108C = .data:0x0000108C; // type:object size:0x28 +lbl_1_data_10B4 = .data:0x000010B4; // type:object size:0x28 +lbl_1_data_10DC = .data:0x000010DC; // type:object size:0x28 +lbl_1_data_1104 = .data:0x00001104; // type:object size:0x28 +lbl_1_data_112C = .data:0x0000112C; // type:object size:0x28 +lbl_1_data_1154 = .data:0x00001154; // type:object size:0x28 +lbl_1_data_117C = .data:0x0000117C; // type:object size:0x28 +lbl_1_data_11A4 = .data:0x000011A4; // type:object size:0x28 +lbl_1_data_11CC = .data:0x000011CC; // type:object size:0x28 +lbl_1_data_11F4 = .data:0x000011F4; // type:object size:0x10 +lbl_1_data_1204 = .data:0x00001204; // type:object size:0xC +lbl_1_data_1210 = .data:0x00001210; // type:object size:0xC +lbl_1_data_121C = .data:0x0000121C; // type:object size:0xC +lbl_1_data_1228 = .data:0x00001228; // type:object size:0xC +lbl_1_data_1234 = .data:0x00001234; // type:object size:0x20 +lbl_1_data_1254 = .data:0x00001254; // type:object size:0x13 scope:local data:string +lbl_1_data_1267 = .data:0x00001267; // type:object size:0x13 scope:local data:string +lbl_1_data_127A = .data:0x0000127A; // type:object size:0x13 scope:local data:string +lbl_1_data_128D = .data:0x0000128D; // type:object size:0x13 scope:local data:string +lbl_1_data_12A0 = .data:0x000012A0; // type:object size:0x10 +lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x13 scope:local data:string +lbl_1_data_12C3 = .data:0x000012C3; // type:object size:0x13 scope:local data:string +lbl_1_data_12D6 = .data:0x000012D6; // type:object size:0x13 scope:local data:string +lbl_1_data_12E9 = .data:0x000012E9; // type:object size:0x13 scope:local data:string +lbl_1_data_12FC = .data:0x000012FC; // type:object size:0x13 scope:local data:string +lbl_1_data_130F = .data:0x0000130F; // type:object size:0x13 scope:local data:string +lbl_1_data_1322 = .data:0x00001322; // type:object size:0x13 scope:local data:string +lbl_1_data_1335 = .data:0x00001335; // type:object size:0x13 scope:local data:string +lbl_1_data_1348 = .data:0x00001348; // type:object size:0x13 scope:local data:string +lbl_1_data_135C = .data:0x0000135C; // type:object size:0x24 +lbl_1_data_1380 = .data:0x00001380; // type:object size:0x38 data:4byte +lbl_1_data_13B8 = .data:0x000013B8; // type:object size:0x38 data:4byte +lbl_1_data_13F0 = .data:0x000013F0; // type:object size:0x13 scope:local data:string +lbl_1_data_1403 = .data:0x00001403; // type:object size:0x13 scope:local data:string +lbl_1_data_1416 = .data:0x00001416; // type:object size:0x13 scope:local data:string +lbl_1_data_1429 = .data:0x00001429; // type:object size:0x13 scope:local data:string +lbl_1_data_143C = .data:0x0000143C; // type:object size:0x13 scope:local data:string +lbl_1_data_1450 = .data:0x00001450; // type:object size:0xB4 +lbl_1_data_1504 = .data:0x00001504; // type:object size:0x50 +lbl_1_data_1554 = .data:0x00001554; // type:object size:0x13 scope:local data:string +lbl_1_data_1567 = .data:0x00001567; // type:object size:0x13 scope:local data:string +lbl_1_data_157A = .data:0x0000157A; // type:object size:0x13 scope:local data:string +lbl_1_data_158D = .data:0x0000158D; // type:object size:0x13 scope:local data:string +lbl_1_data_15A0 = .data:0x000015A0; // type:object size:0x13 scope:local data:string +lbl_1_data_15B3 = .data:0x000015B3; // type:object size:0x12 scope:local data:string +lbl_1_data_15C5 = .data:0x000015C5; // type:object size:0x25 scope:local data:string +lbl_1_data_15EA = .data:0x000015EA; // type:object size:0x22 scope:local data:string +lbl_1_data_160C = .data:0x0000160C; // type:object size:0x9 scope:local data:string +lbl_1_data_1615 = .data:0x00001615; // type:object size:0xA scope:local data:string +lbl_1_data_161F = .data:0x0000161F; // type:object size:0xE scope:local data:string +lbl_1_data_162D = .data:0x0000162D; // type:object size:0x6 scope:local data:string +lbl_1_data_1633 = .data:0x00001633; // type:object size:0x1D scope:local data:string +jumptable_1_data_1650 = .data:0x00001650; // type:object size:0x70 scope:local +lbl_1_data_16C0 = .data:0x000016C0; // type:object size:0x1B scope:local data:string +jumptable_1_data_16DC = .data:0x000016DC; // type:object size:0xC4 scope:local +lbl_1_data_17A0 = .data:0x000017A0; // type:object size:0x24 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:2byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x18 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x3C data:float +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x30 +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0xC data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:float +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0xC data:float +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x8 +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x4 +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0xC data:4byte +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x4 data:4byte +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x4 data:4byte +lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:4byte +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:4byte +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:4byte +lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x4 data:float +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:float +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:float +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x4 data:4byte +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte +lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x4 data:4byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x4 data:4byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x5C data:4byte +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x4 data:float +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x100 +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x40 data:4byte +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0x4 data:float +lbl_1_bss_2F4 = .bss:0x000002F4; // type:object size:0x4 data:4byte +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x4 data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0x2 data:2byte +lbl_1_bss_2FE = .bss:0x000002FE; // type:object size:0x2 data:2byte +lbl_1_bss_300 = .bss:0x00000300; // type:object size:0x4 data:4byte +lbl_1_bss_304 = .bss:0x00000304; // type:object size:0x4 data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0xC data:4byte +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0xC data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0xC data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0xC data:4byte +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x4 data:4byte +lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x18 data:4byte +lbl_1_bss_358 = .bss:0x00000358; // type:object size:0xC data:4byte diff --git a/config/GMPP01_00/rels/m451Dll/splits.txt b/config/GMPP01_00/rels/m451Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m451Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m451Dll/symbols.txt b/config/GMPP01_00/rels/m451Dll/symbols.txt new file mode 100644 index 00000000..27c352fc --- /dev/null +++ b/config/GMPP01_00/rels/m451Dll/symbols.txt @@ -0,0 +1,216 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x71C +fn_1_7BC = .text:0x000007BC; // type:function size:0x9C +fn_1_858 = .text:0x00000858; // type:function size:0xC0 +fn_1_918 = .text:0x00000918; // type:function size:0x214 +fn_1_B2C = .text:0x00000B2C; // type:function size:0x1038 +fn_1_1B64 = .text:0x00001B64; // type:function size:0x598 +fn_1_20FC = .text:0x000020FC; // type:function size:0xB8 +fn_1_21B4 = .text:0x000021B4; // type:function size:0xC0 +fn_1_2274 = .text:0x00002274; // type:function size:0x6C +fn_1_22E0 = .text:0x000022E0; // type:function size:0x35C +fn_1_263C = .text:0x0000263C; // type:function size:0x3F8 +fn_1_2A34 = .text:0x00002A34; // type:function size:0x21C +fn_1_2C50 = .text:0x00002C50; // type:function size:0x2B8 +fn_1_2F08 = .text:0x00002F08; // type:function size:0xE4 +fn_1_2FEC = .text:0x00002FEC; // type:function size:0xC4 +fn_1_30B0 = .text:0x000030B0; // type:function size:0xA4 +fn_1_3154 = .text:0x00003154; // type:function size:0x670 +fn_1_37C4 = .text:0x000037C4; // type:function size:0xFA4 +fn_1_4768 = .text:0x00004768; // type:function size:0xFC +fn_1_4864 = .text:0x00004864; // type:function size:0x60 +fn_1_48C4 = .text:0x000048C4; // type:function size:0x8F0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC +lbl_1_data_78 = .data:0x00000078; // type:object size:0xC +lbl_1_data_84 = .data:0x00000084; // type:object size:0xB scope:local data:string +lbl_1_data_8F = .data:0x0000008F; // type:object size:0xB scope:local data:string +lbl_1_data_9A = .data:0x0000009A; // type:object size:0xB scope:local data:string +lbl_1_data_A5 = .data:0x000000A5; // type:object size:0xB scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0xB scope:local data:string +lbl_1_data_BB = .data:0x000000BB; // type:object size:0xB scope:local data:string +lbl_1_data_C6 = .data:0x000000C6; // type:object size:0xB scope:local data:string +lbl_1_data_D1 = .data:0x000000D1; // type:object size:0xB scope:local data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xB scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0xB scope:local data:string +lbl_1_data_F2 = .data:0x000000F2; // type:object size:0xB scope:local data:string +lbl_1_data_FD = .data:0x000000FD; // type:object size:0xB scope:local data:string +lbl_1_data_108 = .data:0x00000108; // type:object size:0xB scope:local data:string +lbl_1_data_113 = .data:0x00000113; // type:object size:0xB scope:local data:string +lbl_1_data_11E = .data:0x0000011E; // type:object size:0xB scope:local data:string +lbl_1_data_129 = .data:0x00000129; // type:object size:0xB scope:local data:string +lbl_1_data_134 = .data:0x00000134; // type:object size:0xB scope:local data:string +lbl_1_data_13F = .data:0x0000013F; // type:object size:0xB scope:local data:string +lbl_1_data_14A = .data:0x0000014A; // type:object size:0xB scope:local data:string +lbl_1_data_155 = .data:0x00000155; // type:object size:0xB scope:local data:string +lbl_1_data_160 = .data:0x00000160; // type:object size:0xB scope:local data:string +lbl_1_data_16B = .data:0x0000016B; // type:object size:0xB scope:local data:string +lbl_1_data_176 = .data:0x00000176; // type:object size:0xB scope:local data:string +lbl_1_data_181 = .data:0x00000181; // type:object size:0xB scope:local data:string +lbl_1_data_18C = .data:0x0000018C; // type:object size:0xB scope:local data:string +lbl_1_data_197 = .data:0x00000197; // type:object size:0xB scope:local data:string +lbl_1_data_1A2 = .data:0x000001A2; // type:object size:0xB scope:local data:string +lbl_1_data_1AD = .data:0x000001AD; // type:object size:0xB scope:local data:string +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0xB scope:local data:string +lbl_1_data_1C3 = .data:0x000001C3; // type:object size:0xB scope:local data:string +lbl_1_data_1CE = .data:0x000001CE; // type:object size:0xB scope:local data:string +lbl_1_data_1D9 = .data:0x000001D9; // type:object size:0xB scope:local data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xB scope:local data:string +lbl_1_data_1EF = .data:0x000001EF; // type:object size:0xB scope:local data:string +lbl_1_data_1FA = .data:0x000001FA; // type:object size:0xB scope:local data:string +lbl_1_data_205 = .data:0x00000205; // type:object size:0xB scope:local data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xB scope:local data:string +lbl_1_data_21B = .data:0x0000021B; // type:object size:0xB scope:local data:string +lbl_1_data_226 = .data:0x00000226; // type:object size:0xB scope:local data:string +lbl_1_data_231 = .data:0x00000231; // type:object size:0xB scope:local data:string +lbl_1_data_23C = .data:0x0000023C; // type:object size:0xB scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0xB scope:local data:string +lbl_1_data_252 = .data:0x00000252; // type:object size:0xB scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0xB scope:local data:string +lbl_1_data_268 = .data:0x00000268; // type:object size:0xB scope:local data:string +lbl_1_data_273 = .data:0x00000273; // type:object size:0xB scope:local data:string +lbl_1_data_27E = .data:0x0000027E; // type:object size:0xB scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0xB scope:local data:string +lbl_1_data_294 = .data:0x00000294; // type:object size:0xB scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0xB scope:local data:string +lbl_1_data_2AA = .data:0x000002AA; // type:object size:0xB scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0xB scope:local data:string +lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0xB scope:local data:string +lbl_1_data_2CB = .data:0x000002CB; // type:object size:0xB scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0xB scope:local data:string +lbl_1_data_2E1 = .data:0x000002E1; // type:object size:0xB scope:local data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xB scope:local data:string +lbl_1_data_2F7 = .data:0x000002F7; // type:object size:0xB scope:local data:string +lbl_1_data_302 = .data:0x00000302; // type:object size:0xB scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0xB scope:local data:string +lbl_1_data_318 = .data:0x00000318; // type:object size:0xB scope:local data:string +lbl_1_data_323 = .data:0x00000323; // type:object size:0xB scope:local data:string +lbl_1_data_32E = .data:0x0000032E; // type:object size:0xB scope:local data:string +lbl_1_data_339 = .data:0x00000339; // type:object size:0xB scope:local data:string +lbl_1_data_344 = .data:0x00000344; // type:object size:0xB scope:local data:string +lbl_1_data_34F = .data:0x0000034F; // type:object size:0xB scope:local data:string +lbl_1_data_35A = .data:0x0000035A; // type:object size:0xB scope:local data:string +lbl_1_data_365 = .data:0x00000365; // type:object size:0xB scope:local data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0xB scope:local data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xB scope:local data:string +lbl_1_data_386 = .data:0x00000386; // type:object size:0xB scope:local data:string +lbl_1_data_391 = .data:0x00000391; // type:object size:0xB scope:local data:string +lbl_1_data_39C = .data:0x0000039C; // type:object size:0xB scope:local data:string +lbl_1_data_3A7 = .data:0x000003A7; // type:object size:0xB scope:local data:string +lbl_1_data_3B2 = .data:0x000003B2; // type:object size:0xB scope:local data:string +lbl_1_data_3BD = .data:0x000003BD; // type:object size:0xB scope:local data:string +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xB scope:local data:string +lbl_1_data_3D3 = .data:0x000003D3; // type:object size:0xB scope:local data:string +lbl_1_data_3DE = .data:0x000003DE; // type:object size:0xB scope:local data:string +lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0xB scope:local data:string +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0xB scope:local data:string +lbl_1_data_3FF = .data:0x000003FF; // type:object size:0xB scope:local data:string +lbl_1_data_40A = .data:0x0000040A; // type:object size:0xB scope:local data:string +lbl_1_data_415 = .data:0x00000415; // type:object size:0xB scope:local data:string +lbl_1_data_420 = .data:0x00000420; // type:object size:0xB scope:local data:string +lbl_1_data_42B = .data:0x0000042B; // type:object size:0xB scope:local data:string +lbl_1_data_436 = .data:0x00000436; // type:object size:0xB scope:local data:string +lbl_1_data_441 = .data:0x00000441; // type:object size:0xB scope:local data:string +lbl_1_data_44C = .data:0x0000044C; // type:object size:0xB scope:local data:string +lbl_1_data_457 = .data:0x00000457; // type:object size:0xD +lbl_1_data_464 = .data:0x00000464; // type:object size:0x264 +lbl_1_data_6C8 = .data:0x000006C8; // type:object size:0xC +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x78 data:float +lbl_1_data_74C = .data:0x0000074C; // type:object size:0xC +lbl_1_data_758 = .data:0x00000758; // type:object size:0xC +lbl_1_data_764 = .data:0x00000764; // type:object size:0xC scope:local data:string +lbl_1_data_770 = .data:0x00000770; // type:object size:0xC scope:local data:string +lbl_1_data_77C = .data:0x0000077C; // type:object size:0x7 scope:local data:string +lbl_1_data_783 = .data:0x00000783; // type:object size:0x8 scope:local data:string +lbl_1_data_78B = .data:0x0000078B; // type:object size:0x8 scope:local data:string +lbl_1_data_793 = .data:0x00000793; // type:object size:0x8 scope:local data:string +lbl_1_data_79B = .data:0x0000079B; // type:object size:0xB scope:local data:string +lbl_1_data_7A6 = .data:0x000007A6; // type:object size:0xF scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x340 data:4byte +lbl_1_bss_348 = .bss:0x00000348; // type:object size:0x810 data:float +lbl_1_bss_B58 = .bss:0x00000B58; // type:object size:0x4 data:4byte +lbl_1_bss_B5C = .bss:0x00000B5C; // type:object size:0x4 data:4byte +lbl_1_bss_B60 = .bss:0x00000B60; // type:object size:0x4 data:4byte +lbl_1_bss_B64 = .bss:0x00000B64; // type:object size:0xA0 data:4byte +lbl_1_bss_C04 = .bss:0x00000C04; // type:object size:0xA0 data:4byte +lbl_1_bss_CA4 = .bss:0x00000CA4; // type:object size:0x4 data:4byte +lbl_1_bss_CA8 = .bss:0x00000CA8; // type:object size:0x6 +lbl_1_bss_CAE = .bss:0x00000CAE; // type:object size:0x6 data:2byte +lbl_1_bss_CB4 = .bss:0x00000CB4; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m453Dll/splits.txt b/config/GMPP01_00/rels/m453Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m453Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m453Dll/symbols.txt b/config/GMPP01_00/rels/m453Dll/symbols.txt new file mode 100644 index 00000000..5473789f --- /dev/null +++ b/config/GMPP01_00/rels/m453Dll/symbols.txt @@ -0,0 +1,282 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3A0 +fn_1_440 = .text:0x00000440; // type:function size:0x20 +fn_1_460 = .text:0x00000460; // type:function size:0x3E8 +fn_1_848 = .text:0x00000848; // type:function size:0x7B4 +fn_1_FFC = .text:0x00000FFC; // type:function size:0x60 +fn_1_105C = .text:0x0000105C; // type:function size:0x1EC +fn_1_1248 = .text:0x00001248; // type:function size:0x2C0 +fn_1_1508 = .text:0x00001508; // type:function size:0x104 +fn_1_160C = .text:0x0000160C; // type:function size:0x274 +fn_1_1880 = .text:0x00001880; // type:function size:0xA0 +fn_1_1920 = .text:0x00001920; // type:function size:0x2B8 +fn_1_1BD8 = .text:0x00001BD8; // type:function size:0x28 +fn_1_1C00 = .text:0x00001C00; // type:function size:0x3B0 +fn_1_1FB0 = .text:0x00001FB0; // type:function size:0x14C +fn_1_20FC = .text:0x000020FC; // type:function size:0x2F4 +fn_1_23F0 = .text:0x000023F0; // type:function size:0xA44 +fn_1_2E34 = .text:0x00002E34; // type:function size:0x824 +fn_1_3658 = .text:0x00003658; // type:function size:0x94 +fn_1_36EC = .text:0x000036EC; // type:function size:0x2EC +fn_1_39D8 = .text:0x000039D8; // type:function size:0x1EC +fn_1_3BC4 = .text:0x00003BC4; // type:function size:0xE0 +fn_1_3CA4 = .text:0x00003CA4; // type:function size:0x208 +fn_1_3EAC = .text:0x00003EAC; // type:function size:0x9C +fn_1_3F48 = .text:0x00003F48; // type:function size:0x480 +fn_1_43C8 = .text:0x000043C8; // type:function size:0x54 +fn_1_441C = .text:0x0000441C; // type:function size:0x168 +fn_1_4584 = .text:0x00004584; // type:function size:0x120 +fn_1_46A4 = .text:0x000046A4; // type:function size:0x30C +fn_1_49B0 = .text:0x000049B0; // type:function size:0x78 +fn_1_4A28 = .text:0x00004A28; // type:function size:0x11C +fn_1_4B44 = .text:0x00004B44; // type:function size:0x78 +fn_1_4BBC = .text:0x00004BBC; // type:function size:0x2D8 +fn_1_4E94 = .text:0x00004E94; // type:function size:0x2B8 +fn_1_514C = .text:0x0000514C; // type:function size:0x154 +fn_1_52A0 = .text:0x000052A0; // type:function size:0x3E0 +fn_1_5680 = .text:0x00005680; // type:function size:0x214 +fn_1_5894 = .text:0x00005894; // type:function size:0x198 +fn_1_5A2C = .text:0x00005A2C; // type:function size:0xD8 +fn_1_5B04 = .text:0x00005B04; // type:function size:0xBC +fn_1_5BC0 = .text:0x00005BC0; // type:function size:0x33C +fn_1_5EFC = .text:0x00005EFC; // type:function size:0x4B0 +fn_1_63AC = .text:0x000063AC; // type:function size:0x10 +fn_1_63BC = .text:0x000063BC; // type:function size:0x9C +fn_1_6458 = .text:0x00006458; // type:function size:0xA0 +fn_1_64F8 = .text:0x000064F8; // type:function size:0x260 +fn_1_6758 = .text:0x00006758; // type:function size:0x20 +fn_1_6778 = .text:0x00006778; // type:function size:0x84 +fn_1_67FC = .text:0x000067FC; // type:function size:0x4 +fn_1_6800 = .text:0x00006800; // type:function size:0x16C +fn_1_696C = .text:0x0000696C; // type:function size:0x318 +fn_1_6C84 = .text:0x00006C84; // type:function size:0x240 +fn_1_6EC4 = .text:0x00006EC4; // type:function size:0x110 +fn_1_6FD4 = .text:0x00006FD4; // type:function size:0x400 +fn_1_73D4 = .text:0x000073D4; // type:function size:0x5B4 +fn_1_7988 = .text:0x00007988; // type:function size:0xFC +fn_1_7A84 = .text:0x00007A84; // type:function size:0x88 +fn_1_7B0C = .text:0x00007B0C; // type:function size:0xB4 +fn_1_7BC0 = .text:0x00007BC0; // type:function size:0x4C +fn_1_7C0C = .text:0x00007C0C; // type:function size:0x10 +fn_1_7C1C = .text:0x00007C1C; // type:function size:0x20 +fn_1_7C3C = .text:0x00007C3C; // type:function size:0x10 +fn_1_7C4C = .text:0x00007C4C; // type:function size:0xA4 +fn_1_7CF0 = .text:0x00007CF0; // type:function size:0x274 +fn_1_7F64 = .text:0x00007F64; // type:function size:0x15C +fn_1_80C0 = .text:0x000080C0; // type:function size:0x180 +fn_1_8240 = .text:0x00008240; // type:function size:0x10 +fn_1_8250 = .text:0x00008250; // type:function size:0x10 +fn_1_8260 = .text:0x00008260; // type:function size:0x5C +fn_1_82BC = .text:0x000082BC; // type:function size:0x1A0 +fn_1_845C = .text:0x0000845C; // type:function size:0x200 +fn_1_865C = .text:0x0000865C; // type:function size:0x30 +fn_1_868C = .text:0x0000868C; // type:function size:0x8CC +fn_1_8F58 = .text:0x00008F58; // type:function size:0x290 +fn_1_91E8 = .text:0x000091E8; // type:function size:0x74 +fn_1_925C = .text:0x0000925C; // type:function size:0x50 +fn_1_92AC = .text:0x000092AC; // type:function size:0x24 +fn_1_92D0 = .text:0x000092D0; // type:function size:0x30 +fn_1_9300 = .text:0x00009300; // type:function size:0x11C +fn_1_941C = .text:0x0000941C; // type:function size:0x78 +fn_1_9494 = .text:0x00009494; // type:function size:0x8C +fn_1_9520 = .text:0x00009520; // type:function size:0x164 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x9 data:byte +lbl_1_rodata_91 = .rodata:0x00000091; // type:object size:0xB data:byte +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0xC +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x28 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 data:4byte +jumptable_1_data_8C = .data:0x0000008C; // type:object size:0x1C scope:local +jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x20 +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 +lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte +lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 +lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 +lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 +lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 +lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 +lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 +lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 +lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 +lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 +lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC data:4byte +lbl_1_data_ADC = .data:0x00000ADC; // type:object size:0xC data:4byte +lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x14 data:4byte +lbl_1_data_AFC = .data:0x00000AFC; // type:object size:0x18 +lbl_1_data_B14 = .data:0x00000B14; // type:object size:0x18 +lbl_1_data_B2C = .data:0x00000B2C; // type:object size:0x48 +lbl_1_data_B74 = .data:0x00000B74; // type:object size:0x30 +lbl_1_data_BA4 = .data:0x00000BA4; // type:object size:0x1C +lbl_1_data_BC0 = .data:0x00000BC0; // type:object size:0xC +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x6 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte +lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x14 data:2byte +lbl_1_bss_32 = .bss:0x00000032; // type:object size:0x2 data:2byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte +lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x2 data:2byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x2 data:2byte +lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x2 data:2byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x10 +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x18 +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:float +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x14 +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m455Dll/splits.txt b/config/GMPP01_00/rels/m455Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m455Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m455Dll/symbols.txt b/config/GMPP01_00/rels/m455Dll/symbols.txt new file mode 100644 index 00000000..c63b35b3 --- /dev/null +++ b/config/GMPP01_00/rels/m455Dll/symbols.txt @@ -0,0 +1,293 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x270 +fn_1_310 = .text:0x00000310; // type:function size:0x10 +fn_1_320 = .text:0x00000320; // type:function size:0x10 +fn_1_330 = .text:0x00000330; // type:function size:0x148 +fn_1_478 = .text:0x00000478; // type:function size:0x6C0 +fn_1_B38 = .text:0x00000B38; // type:function size:0x5C +fn_1_B94 = .text:0x00000B94; // type:function size:0xA4 +fn_1_C38 = .text:0x00000C38; // type:function size:0x68 +fn_1_CA0 = .text:0x00000CA0; // type:function size:0x84 +fn_1_D24 = .text:0x00000D24; // type:function size:0x6F4 +fn_1_1418 = .text:0x00001418; // type:function size:0x44 +fn_1_145C = .text:0x0000145C; // type:function size:0xBCC +fn_1_2028 = .text:0x00002028; // type:function size:0x50 +fn_1_2078 = .text:0x00002078; // type:function size:0x330 +fn_1_23A8 = .text:0x000023A8; // type:function size:0x104 +fn_1_24AC = .text:0x000024AC; // type:function size:0x5C +fn_1_2508 = .text:0x00002508; // type:function size:0x208 +fn_1_2710 = .text:0x00002710; // type:function size:0xA8 +fn_1_27B8 = .text:0x000027B8; // type:function size:0x2F0 +fn_1_2AA8 = .text:0x00002AA8; // type:function size:0x64 +fn_1_2B0C = .text:0x00002B0C; // type:function size:0x250 +fn_1_2D5C = .text:0x00002D5C; // type:function size:0x4D0 +fn_1_322C = .text:0x0000322C; // type:function size:0xB0 +fn_1_32DC = .text:0x000032DC; // type:function size:0x148 +fn_1_3424 = .text:0x00003424; // type:function size:0x70 +fn_1_3494 = .text:0x00003494; // type:function size:0x960 +fn_1_3DF4 = .text:0x00003DF4; // type:function size:0x328 +fn_1_411C = .text:0x0000411C; // type:function size:0x7C +fn_1_4198 = .text:0x00004198; // type:function size:0x82C +fn_1_49C4 = .text:0x000049C4; // type:function size:0x68 +fn_1_4A2C = .text:0x00004A2C; // type:function size:0x108 +fn_1_4B34 = .text:0x00004B34; // type:function size:0x348 +fn_1_4E7C = .text:0x00004E7C; // type:function size:0xB3C +fn_1_59B8 = .text:0x000059B8; // type:function size:0x6E8 +fn_1_60A0 = .text:0x000060A0; // type:function size:0xBC +fn_1_615C = .text:0x0000615C; // type:function size:0x450 +fn_1_65AC = .text:0x000065AC; // type:function size:0x104 +fn_1_66B0 = .text:0x000066B0; // type:function size:0x1E4 +fn_1_6894 = .text:0x00006894; // type:function size:0x4C +fn_1_68E0 = .text:0x000068E0; // type:function size:0x4C +fn_1_692C = .text:0x0000692C; // type:function size:0x158 +fn_1_6A84 = .text:0x00006A84; // type:function size:0x1F4 +fn_1_6C78 = .text:0x00006C78; // type:function size:0x50 +fn_1_6CC8 = .text:0x00006CC8; // type:function size:0x5D0 +fn_1_7298 = .text:0x00007298; // type:function size:0xE8 +fn_1_7380 = .text:0x00007380; // type:function size:0xC8 +fn_1_7448 = .text:0x00007448; // type:function size:0x4 +fn_1_744C = .text:0x0000744C; // type:function size:0x18C +fn_1_75D8 = .text:0x000075D8; // type:function size:0xF0 +fn_1_76C8 = .text:0x000076C8; // type:function size:0x2C4 +fn_1_798C = .text:0x0000798C; // type:function size:0x54 +fn_1_79E0 = .text:0x000079E0; // type:function size:0x2B0 +fn_1_7C90 = .text:0x00007C90; // type:function size:0x408 +fn_1_8098 = .text:0x00008098; // type:function size:0x444 +fn_1_84DC = .text:0x000084DC; // type:function size:0x4 +fn_1_84E0 = .text:0x000084E0; // type:function size:0x100 +fn_1_85E0 = .text:0x000085E0; // type:function size:0x104 +fn_1_86E4 = .text:0x000086E4; // type:function size:0x2A0 +fn_1_8984 = .text:0x00008984; // type:function size:0x474 +fn_1_8DF8 = .text:0x00008DF8; // type:function size:0x11C +fn_1_8F14 = .text:0x00008F14; // type:function size:0x2BC +fn_1_91D0 = .text:0x000091D0; // type:function size:0x50 +fn_1_9220 = .text:0x00009220; // type:function size:0xB44 +fn_1_9D64 = .text:0x00009D64; // type:function size:0x104 +fn_1_9E68 = .text:0x00009E68; // type:function size:0x118 +fn_1_9F80 = .text:0x00009F80; // type:function size:0x250 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float +lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float +lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float +lbl_1_data_50 = .data:0x00000050; // type:object size:0x4 +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x2 data:2byte +lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 data:4byte +lbl_1_data_98 = .data:0x00000098; // type:object size:0x4 data:4byte +jumptable_1_data_9C = .data:0x0000009C; // type:object size:0x28 scope:local +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x1C data:string +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x28 +lbl_1_data_108 = .data:0x00000108; // type:object size:0x30 +lbl_1_data_138 = .data:0x00000138; // type:object size:0x1C +lbl_1_data_154 = .data:0x00000154; // type:object size:0x10 +lbl_1_data_164 = .data:0x00000164; // type:object size:0xC +lbl_1_data_170 = .data:0x00000170; // type:object size:0x1 data:byte +lbl_1_data_174 = .data:0x00000174; // type:object size:0x5 data:string +lbl_1_data_179 = .data:0x00000179; // type:object size:0xB data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 data:float +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x4C +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30 +lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x50 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x7 data:string +lbl_1_data_263 = .data:0x00000263; // type:object size:0x7 data:string +lbl_1_data_26A = .data:0x0000026A; // type:object size:0x1 data:byte +lbl_1_data_26E = .data:0x0000026E; // type:object size:0x1 data:byte +lbl_1_data_272 = .data:0x00000272; // type:object size:0x6 data:byte +lbl_1_data_278 = .data:0x00000278; // type:object size:0x30 +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x138 +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x68 +lbl_1_data_448 = .data:0x00000448; // type:object size:0xD0 +lbl_1_data_518 = .data:0x00000518; // type:object size:0xD0 +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x18 +lbl_1_data_600 = .data:0x00000600; // type:object size:0x1 data:byte +lbl_1_data_604 = .data:0x00000604; // type:object size:0x6C +lbl_1_data_670 = .data:0x00000670; // type:object size:0x24 +lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 data:byte +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x1 data:byte +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10 +lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_1A = .bss:0x0000001A; // type:object size:0x2 data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x8 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 data:2byte +lbl_1_bss_2A = .bss:0x0000002A; // type:object size:0x2 data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m456Dll/splits.txt b/config/GMPP01_00/rels/m456Dll/splits.txt new file mode 100644 index 00000000..ba1c0109 --- /dev/null +++ b/config/GMPP01_00/rels/m456Dll/splits.txt @@ -0,0 +1,22 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m456Dll/main.c: + .text start:0x000000A0 end:0x00002EB0 + .rodata start:0x00000000 end:0x000000F0 + .data start:0x00000000 end:0x000002E8 + .bss start:0x00000000 end:0x00000090 + +REL/m456Dll/stage.c: + .text start:0x00002EB0 end:0x00009D74 + .rodata start:0x000000F0 end:0x00000330 + .data start:0x000002E8 end:0x000007D0 + .bss start:0x00000090 end:0x000000BC diff --git a/config/GMPP01_00/rels/m456Dll/symbols.txt b/config/GMPP01_00/rels/m456Dll/symbols.txt new file mode 100644 index 00000000..b5353f63 --- /dev/null +++ b/config/GMPP01_00/rels/m456Dll/symbols.txt @@ -0,0 +1,285 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x300 +fn_1_3A0 = .text:0x000003A0; // type:function size:0x10 +fn_1_3B0 = .text:0x000003B0; // type:function size:0x10 +fn_1_3C0 = .text:0x000003C0; // type:function size:0xD8 +fn_1_498 = .text:0x00000498; // type:function size:0x74C +fn_1_BE4 = .text:0x00000BE4; // type:function size:0x5C +fn_1_C40 = .text:0x00000C40; // type:function size:0x84 +fn_1_CC4 = .text:0x00000CC4; // type:function size:0x68 +fn_1_D2C = .text:0x00000D2C; // type:function size:0x220 +fn_1_F4C = .text:0x00000F4C; // type:function size:0x84 +fn_1_FD0 = .text:0x00000FD0; // type:function size:0x2B8 +fn_1_1288 = .text:0x00001288; // type:function size:0xD8 +fn_1_1304 = .text:0x00001360; // type:function size:0xD9C +fn_1_2040 = .text:0x000020FC; // type:function size:0x50 +fn_1_2090 = .text:0x0000214C; // type:function size:0x104 +fn_1_2194 = .text:0x00002250; // type:function size:0x64 +fn_1_21F8 = .text:0x000022B4; // type:function size:0x250 +fn_1_2448 = .text:0x00002504; // type:function size:0x4D0 +fn_1_2918 = .text:0x000029D4; // type:function size:0x1AC +fn_1_2AC4 = .text:0x00002B80; // type:function size:0x330 +fn_1_2DF4 = .text:0x00002EB0; // type:function size:0x148 +fn_1_2F3C = .text:0x00002FF8; // type:function size:0x70 +fn_1_2FAC = .text:0x00003068; // type:function size:0x960 +fn_1_390C = .text:0x000039C8; // type:function size:0x328 +fn_1_3C34 = .text:0x00003CF0; // type:function size:0x7C +fn_1_3CB0 = .text:0x00003D6C; // type:function size:0x82C +fn_1_44DC = .text:0x00004598; // type:function size:0x68 +fn_1_4544 = .text:0x00004600; // type:function size:0x108 +fn_1_464C = .text:0x00004708; // type:function size:0x348 +fn_1_4994 = .text:0x00004A50; // type:function size:0xB3C +fn_1_54D0 = .text:0x0000558C; // type:function size:0x6E8 +fn_1_5BB8 = .text:0x00005C74; // type:function size:0xBC +fn_1_5C74 = .text:0x00005D30; // type:function size:0x450 +fn_1_60C4 = .text:0x00006180; // type:function size:0x104 +fn_1_61C8 = .text:0x00006284; // type:function size:0x1E4 +fn_1_63AC = .text:0x00006468; // type:function size:0x4C +fn_1_63F8 = .text:0x000064B4; // type:function size:0x4C +fn_1_6444 = .text:0x00006500; // type:function size:0x158 +fn_1_659C = .text:0x00006658; // type:function size:0x1F4 +fn_1_6790 = .text:0x0000684C; // type:function size:0x50 +fn_1_67E0 = .text:0x0000689C; // type:function size:0x5D0 +fn_1_6DB0 = .text:0x00006E6C; // type:function size:0xE8 +fn_1_6E98 = .text:0x00006F54; // type:function size:0xC8 +fn_1_6F60 = .text:0x0000701C; // type:function size:0x4 +fn_1_6F64 = .text:0x00007020; // type:function size:0x18C +fn_1_70F0 = .text:0x000071AC; // type:function size:0xF0 +fn_1_71E0 = .text:0x0000729C; // type:function size:0x2C4 +fn_1_74A4 = .text:0x00007560; // type:function size:0x54 +fn_1_74F8 = .text:0x000075B4; // type:function size:0x2B0 +fn_1_7778 = .text:0x00007864; // type:function size:0x3D8 +fn_1_7B50 = .text:0x00007C3C; // type:function size:0x444 +fn_1_7F74 = .text:0x00008080; // type:function size:0x4 +fn_1_7F78 = .text:0x00008084; // type:function size:0x100 +fn_1_8078 = .text:0x00008184; // type:function size:0x104 +fn_1_817C = .text:0x00008288; // type:function size:0x2A0 +fn_1_841C = .text:0x00008528; // type:function size:0x474 +fn_1_8890 = .text:0x0000899C; // type:function size:0x11C +fn_1_89AC = .text:0x00008AB8; // type:function size:0x2BC +fn_1_8C68 = .text:0x00008D74; // type:function size:0x50 +fn_1_8CB8 = .text:0x00008DC4; // type:function size:0xB44 +fn_1_97FC = .text:0x00009908; // type:function size:0x104 +fn_1_9900 = .text:0x00009A0C; // type:function size:0x118 +fn_1_9A18 = .text:0x00009B24; // type:function size:0x250 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float +lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float +lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float +lbl_1_data_50 = .data:0x00000050; // type:object size:0x4 +lbl_1_data_54 = .data:0x00000054; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 scope:local +lbl_1_data_90 = .data:0x00000090; // type:object size:0x4 data:4byte +lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 data:4byte +jumptable_1_data_98 = .data:0x00000098; // type:object size:0x30 scope:local +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x1C scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x50 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x30 +lbl_1_data_164 = .data:0x00000164; // type:object size:0x20 +lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 +jumptable_1_data_188 = .data:0x00000188; // type:object size:0x20 scope:local +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x8 data:float +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x80 +lbl_1_data_230 = .data:0x00000230; // type:object size:0xB8 +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x30 +lbl_1_data_318 = .data:0x00000318; // type:object size:0x4 data:byte +lbl_1_data_31C = .data:0x0000031C; // type:object size:0x50 +lbl_1_data_36C = .data:0x0000036C; // type:object size:0x7 scope:local data:string +lbl_1_data_373 = .data:0x00000373; // type:object size:0x7 scope:local data:string +lbl_1_data_37A = .data:0x0000037A; // type:object size:0x4 data:byte +lbl_1_data_37E = .data:0x0000037E; // type:object size:0x4 data:byte +lbl_1_data_382 = .data:0x00000382; // type:object size:0x4 data:byte +lbl_1_data_388 = .data:0x00000388; // type:object size:0x30 +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x138 +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x68 +lbl_1_data_558 = .data:0x00000558; // type:object size:0xD0 +lbl_1_data_628 = .data:0x00000628; // type:object size:0xD0 +lbl_1_data_6F8 = .data:0x000006F8; // type:object size:0x18 +lbl_1_data_710 = .data:0x00000710; // type:object size:0x4 data:byte +lbl_1_data_714 = .data:0x00000714; // type:object size:0x6C +lbl_1_data_780 = .data:0x00000780; // type:object size:0x24 +lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x4 data:byte +lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0x4 data:byte +lbl_1_data_7AC = .data:0x000007AC; // type:object size:0x4 data:byte +lbl_1_data_7B0 = .data:0x000007B0; // type:object size:0x10 +lbl_1_data_7C0 = .data:0x000007C0; // type:object size:0x10 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x40 data:2byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x2 data:2byte +lbl_1_bss_62 = .bss:0x00000062; // type:object size:0x2 data:2byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x10 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x10 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m457Dll/splits.txt b/config/GMPP01_00/rels/m457Dll/splits.txt new file mode 100644 index 00000000..fe59c2cc --- /dev/null +++ b/config/GMPP01_00/rels/m457Dll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/m457Dll/main.c: + .text start:0x000000A0 end:0x00007C04 + .rodata start:0x00000000 end:0x00000568 + .data start:0x00000000 end:0x000003E7 + .bss start:0x00000000 end:0x000000C8 diff --git a/config/GMPP01_00/rels/m457Dll/symbols.txt b/config/GMPP01_00/rels/m457Dll/symbols.txt new file mode 100644 index 00000000..0b08cedf --- /dev/null +++ b/config/GMPP01_00/rels/m457Dll/symbols.txt @@ -0,0 +1,177 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +CameraPrintDebug = .text:0x000000A0; // type:function size:0x3CC scope:local +M457PlayerExec = .text:0x0000046C; // type:function size:0x2858 scope:local +M457GameExec = .text:0x00002CC4; // type:function size:0x2654 scope:local +WrestleMesMain = .text:0x00005318; // type:function size:0x220 scope:local +ShoveMesMain = .text:0x00005538; // type:function size:0x510 scope:local +M457Main = .text:0x00005A48; // type:function size:0xB34 scope:local +M457GameSetup = .text:0x0000657C; // type:function size:0xAB8 scope:local +M457PlayerSetup = .text:0x00007034; // type:function size:0x5F4 scope:local +M457Setup = .text:0x00007628; // type:function size:0xC0 scope:local +ObjectSetup = .text:0x000076E8; // type:function size:0x480 +M457Exit = .text:0x00007B68; // type:function size:0x9C scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x64 scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x90 +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x5C +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x5C +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C scope:local data:4byte +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC scope:local +lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local +lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local +sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 scope:local data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 scope:local data:2byte +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 scope:local data:4byte +windSeNo = .data:0x000002AC; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 scope:local data:2byte +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string +lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string +jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local +jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 scope:local data:4byte +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 scope:local data:float +jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local +jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local +lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string +lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string +lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +m457MesEndF = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +againstBrowserF = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lightId = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +objman = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +gameState = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte +gameObj = .bss:0x00000064; // type:object size:0x4 scope:local data:4byte +playerObj = .bss:0x00000068; // type:object size:0x8 scope:local data:4byte +omViewObj = .bss:0x00000070; // type:object size:0x4 scope:local data:4byte +mainObj = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 scope:local data:4byte diff --git a/config/GMPP01_00/rels/m458Dll/splits.txt b/config/GMPP01_00/rels/m458Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m458Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m458Dll/symbols.txt b/config/GMPP01_00/rels/m458Dll/symbols.txt new file mode 100644 index 00000000..cdc7fc9a --- /dev/null +++ b/config/GMPP01_00/rels/m458Dll/symbols.txt @@ -0,0 +1,176 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x428 +fn_1_4C8 = .text:0x000004C8; // type:function size:0x3044 +fn_1_350C = .text:0x0000350C; // type:function size:0x16DC +fn_1_4BE8 = .text:0x00004BE8; // type:function size:0x15C +fn_1_4D44 = .text:0x00004D44; // type:function size:0x2D0 +fn_1_5014 = .text:0x00005014; // type:function size:0x9C8 +fn_1_59DC = .text:0x000059DC; // type:function size:0x938 +fn_1_6314 = .text:0x00006314; // type:function size:0x548 +fn_1_685C = .text:0x0000685C; // type:function size:0xC0 +fn_1_691C = .text:0x0000691C; // type:function size:0x480 +fn_1_6D9C = .text:0x00006D9C; // type:function size:0xD0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x94 +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x50 +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x70 +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 +lbl_1_data_8 = .data:0x00000008; // type:object size:0x8 data:4byte +lbl_1_data_10 = .data:0x00000010; // type:object size:0x28 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x28 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x28 +lbl_1_data_88 = .data:0x00000088; // type:object size:0xA +lbl_1_data_92 = .data:0x00000092; // type:object size:0xA +lbl_1_data_9C = .data:0x0000009C; // type:object size:0x28 +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x28 +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x28 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x18 data:float +lbl_1_data_12C = .data:0x0000012C; // type:object size:0x2 data:2byte +lbl_1_data_12E = .data:0x0000012E; // type:object size:0x2 data:2byte +lbl_1_data_130 = .data:0x00000130; // type:object size:0x4 data:4byte +lbl_1_data_134 = .data:0x00000134; // type:object size:0x4 data:4byte +lbl_1_data_138 = .data:0x00000138; // type:object size:0x24 data:2byte +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x4 data:4byte +lbl_1_data_160 = .data:0x00000160; // type:object size:0x9 data:string +lbl_1_data_169 = .data:0x00000169; // type:object size:0x3 data:string +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 data:4byte +jumptable_1_data_170 = .data:0x00000170; // type:object size:0x30 scope:local +lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x4 data:4byte +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x4 data:float +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x4 data:float +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x4 data:float +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x4 data:string +jumptable_1_data_1B4 = .data:0x000001B4; // type:object size:0x34 scope:local +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x2C +lbl_1_data_214 = .data:0x00000214; // type:object size:0x8 data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x19 data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x8 data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x50 +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x8 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x8 data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x1C0 data:4byte +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x90 diff --git a/config/GMPP01_00/rels/m459dll/splits.txt b/config/GMPP01_00/rels/m459dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m459dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m459dll/symbols.txt b/config/GMPP01_00/rels/m459dll/symbols.txt new file mode 100644 index 00000000..ebcacb12 --- /dev/null +++ b/config/GMPP01_00/rels/m459dll/symbols.txt @@ -0,0 +1,169 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x138 +fn_1_1D8 = .text:0x000001D8; // type:function size:0x468 +fn_1_640 = .text:0x00000640; // type:function size:0xFC +fn_1_73C = .text:0x0000073C; // type:function size:0x73C +fn_1_E78 = .text:0x00000E78; // type:function size:0x364 +fn_1_11DC = .text:0x000011DC; // type:function size:0x28 +fn_1_1204 = .text:0x00001204; // type:function size:0x28 +fn_1_122C = .text:0x0000122C; // type:function size:0x200 +fn_1_142C = .text:0x0000142C; // type:function size:0x8C +fn_1_14B8 = .text:0x000014B8; // type:function size:0x2C0 +fn_1_1778 = .text:0x00001778; // type:function size:0x124 +fn_1_189C = .text:0x0000189C; // type:function size:0x118 +fn_1_19B4 = .text:0x000019B4; // type:function size:0x4C +fn_1_1A00 = .text:0x00001A00; // type:function size:0x5DC +fn_1_1FDC = .text:0x00001FDC; // type:function size:0x68 +fn_1_2044 = .text:0x00002044; // type:function size:0x168 +fn_1_21AC = .text:0x000021AC; // type:function size:0x200 +fn_1_23AC = .text:0x000023AC; // type:function size:0x21C +fn_1_25C8 = .text:0x000025C8; // type:function size:0x200 +fn_1_27C8 = .text:0x000027C8; // type:function size:0x168 +fn_1_2930 = .text:0x00002930; // type:function size:0x1F4 +fn_1_2B24 = .text:0x00002B24; // type:function size:0x3F4 +fn_1_2F18 = .text:0x00002F18; // type:function size:0xEC +fn_1_3004 = .text:0x00003004; // type:function size:0x388 +fn_1_338C = .text:0x0000338C; // type:function size:0x374 +fn_1_3700 = .text:0x00003700; // type:function size:0xA60 +fn_1_4160 = .text:0x00004160; // type:function size:0xB0 +fn_1_4210 = .text:0x00004210; // type:function size:0x104 +fn_1_4314 = .text:0x00004314; // type:function size:0x21C +fn_1_4530 = .text:0x00004530; // type:function size:0xBC +fn_1_45EC = .text:0x000045EC; // type:function size:0x178 +fn_1_4764 = .text:0x00004764; // type:function size:0x80 +fn_1_47E4 = .text:0x000047E4; // type:function size:0x6C +fn_1_4850 = .text:0x00004850; // type:function size:0x94 +fn_1_48E4 = .text:0x000048E4; // type:function size:0x190 +fn_1_4A74 = .text:0x00004A74; // type:function size:0xF4 +fn_1_4B68 = .text:0x00004B68; // type:function size:0xB4 +fn_1_4C1C = .text:0x00004C1C; // type:function size:0xB4 +fn_1_4CD0 = .text:0x00004CD0; // type:function size:0x178 +fn_1_4E48 = .text:0x00004E48; // type:function size:0x10 +fn_1_4E58 = .text:0x00004E58; // type:function size:0x20 +fn_1_4E78 = .text:0x00004E78; // type:function size:0x14 +fn_1_4E8C = .text:0x00004E8C; // type:function size:0x14 +fn_1_4EA0 = .text:0x00004EA0; // type:function size:0xE0 +fn_1_4F80 = .text:0x00004F80; // type:function size:0x20 +fn_1_4FA0 = .text:0x00004FA0; // type:function size:0x1C +fn_1_4FBC = .text:0x00004FBC; // type:function size:0x310 +fn_1_52CC = .text:0x000052CC; // type:function size:0x18 +fn_1_52E4 = .text:0x000052E4; // type:function size:0x10 +fn_1_52F4 = .text:0x000052F4; // type:function size:0x10 +fn_1_5304 = .text:0x00005304; // type:function size:0x4C +fn_1_5350 = .text:0x00005350; // type:function size:0x134 +fn_1_5484 = .text:0x00005484; // type:function size:0xDC +fn_1_5560 = .text:0x00005560; // type:function size:0x44 +fn_1_55A4 = .text:0x000055A4; // type:function size:0x4C8 +fn_1_5A6C = .text:0x00005A6C; // type:function size:0x3C4 +fn_1_5E30 = .text:0x00005E30; // type:function size:0x70 +fn_1_5EA0 = .text:0x00005EA0; // type:function size:0x94 +fn_1_5F34 = .text:0x00005F34; // type:function size:0x44 +fn_1_5F78 = .text:0x00005F78; // type:function size:0x214 +fn_1_618C = .text:0x0000618C; // type:function size:0x2C0 +fn_1_644C = .text:0x0000644C; // type:function size:0x128 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 scope:local +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x78 scope:local +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x18 scope:local +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:wstring +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x20 scope:local +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x20 scope:local +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x19C scope:local +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x8 scope:local +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x14 scope:local +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x14 scope:local +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x14 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x14 scope:local +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x48 scope:local +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B data:string +lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1D +jumptable_1_data_38 = .data:0x00000038; // type:object size:0x38 scope:local +lbl_1_data_70 = .data:0x00000070; // type:object size:0x1C +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x1 data:byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x30 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x18 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0xC data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0xC data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x50 +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x550 data:4byte +lbl_1_bss_61C = .bss:0x0000061C; // type:object size:0x7C data:float +lbl_1_bss_698 = .bss:0x00000698; // type:object size:0x4C data:4byte +lbl_1_bss_6E4 = .bss:0x000006E4; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m460Dll/splits.txt b/config/GMPP01_00/rels/m460Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m460Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m460Dll/symbols.txt b/config/GMPP01_00/rels/m460Dll/symbols.txt new file mode 100644 index 00000000..a52ca026 --- /dev/null +++ b/config/GMPP01_00/rels/m460Dll/symbols.txt @@ -0,0 +1,298 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x428 +fn_1_4C8 = .text:0x000004C8; // type:function size:0x128 +fn_1_5F0 = .text:0x000005F0; // type:function size:0x20C +fn_1_7FC = .text:0x000007FC; // type:function size:0x14C +fn_1_948 = .text:0x00000948; // type:function size:0x434 +fn_1_D7C = .text:0x00000D7C; // type:function size:0x470 +fn_1_11EC = .text:0x000011EC; // type:function size:0x35C +fn_1_1548 = .text:0x00001548; // type:function size:0x434 +fn_1_197C = .text:0x0000197C; // type:function size:0x6A0 +fn_1_201C = .text:0x0000201C; // type:function size:0x4D8 +fn_1_24F4 = .text:0x000024F4; // type:function size:0x70 +fn_1_2564 = .text:0x00002564; // type:function size:0x800 +fn_1_2D64 = .text:0x00002D64; // type:function size:0xC +fn_1_2D70 = .text:0x00002D70; // type:function size:0x55C +fn_1_32CC = .text:0x000032CC; // type:function size:0xB0 +fn_1_337C = .text:0x0000337C; // type:function size:0x274 +fn_1_35F0 = .text:0x000035F0; // type:function size:0x28 +fn_1_3618 = .text:0x00003618; // type:function size:0x5A8 +fn_1_3BC0 = .text:0x00003BC0; // type:function size:0x2A8 +fn_1_3E68 = .text:0x00003E68; // type:function size:0x14 +fn_1_3E7C = .text:0x00003E7C; // type:function size:0x14 +fn_1_3E90 = .text:0x00003E90; // type:function size:0x9C +fn_1_3F2C = .text:0x00003F2C; // type:function size:0x9C +fn_1_3FC8 = .text:0x00003FC8; // type:function size:0x68 +fn_1_4030 = .text:0x00004030; // type:function size:0x6C +fn_1_409C = .text:0x0000409C; // type:function size:0x98 +fn_1_4134 = .text:0x00004134; // type:function size:0x18 +fn_1_414C = .text:0x0000414C; // type:function size:0x18 +fn_1_4164 = .text:0x00004164; // type:function size:0x18 +fn_1_417C = .text:0x0000417C; // type:function size:0x18 +fn_1_4194 = .text:0x00004194; // type:function size:0x8 +fn_1_419C = .text:0x0000419C; // type:function size:0x18 +fn_1_41B4 = .text:0x000041B4; // type:function size:0x40 +fn_1_41F4 = .text:0x000041F4; // type:function size:0x30 +fn_1_4224 = .text:0x00004224; // type:function size:0x30 +fn_1_4254 = .text:0x00004254; // type:function size:0x30 +fn_1_4284 = .text:0x00004284; // type:function size:0x38 +fn_1_42BC = .text:0x000042BC; // type:function size:0x34 +fn_1_42F0 = .text:0x000042F0; // type:function size:0x18 +fn_1_4308 = .text:0x00004308; // type:function size:0x1C +fn_1_4324 = .text:0x00004324; // type:function size:0x18 +fn_1_433C = .text:0x0000433C; // type:function size:0x1C +fn_1_4358 = .text:0x00004358; // type:function size:0x18 +fn_1_4370 = .text:0x00004370; // type:function size:0x18 +fn_1_4388 = .text:0x00004388; // type:function size:0x208 +fn_1_4590 = .text:0x00004590; // type:function size:0x240 +fn_1_47D0 = .text:0x000047D0; // type:function size:0x11C +fn_1_48EC = .text:0x000048EC; // type:function size:0xB4 +fn_1_49A0 = .text:0x000049A0; // type:function size:0x244 +fn_1_4BE4 = .text:0x00004BE4; // type:function size:0x24 +fn_1_4C08 = .text:0x00004C08; // type:function size:0x364 +fn_1_4F6C = .text:0x00004F6C; // type:function size:0x1FC +fn_1_5168 = .text:0x00005168; // type:function size:0x484 +fn_1_55EC = .text:0x000055EC; // type:function size:0x1EC +fn_1_57D8 = .text:0x000057D8; // type:function size:0xF0 +fn_1_58C8 = .text:0x000058C8; // type:function size:0x14C +fn_1_5A14 = .text:0x00005A14; // type:function size:0x274 +fn_1_5C88 = .text:0x00005C88; // type:function size:0x58 +fn_1_5CE0 = .text:0x00005CE0; // type:function size:0x18C +fn_1_5E6C = .text:0x00005E6C; // type:function size:0x74 +fn_1_5EE0 = .text:0x00005EE0; // type:function size:0x1D0 +fn_1_60B0 = .text:0x000060B0; // type:function size:0x144 +fn_1_61F4 = .text:0x000061F4; // type:function size:0x5C0 +fn_1_67B4 = .text:0x000067B4; // type:function size:0x60 +fn_1_6814 = .text:0x00006814; // type:function size:0x4 +fn_1_6818 = .text:0x00006818; // type:function size:0x3E8 +fn_1_6C00 = .text:0x00006C00; // type:function size:0x7F8 +fn_1_73F8 = .text:0x000073F8; // type:function size:0x2CC +fn_1_76C4 = .text:0x000076C4; // type:function size:0x60 +fn_1_7724 = .text:0x00007724; // type:function size:0x6C +fn_1_7790 = .text:0x00007790; // type:function size:0x404 +fn_1_7B94 = .text:0x00007B94; // type:function size:0x214 +fn_1_7DA8 = .text:0x00007DA8; // type:function size:0xDF8 +fn_1_8BA0 = .text:0x00008BA0; // type:function size:0xD8 +fn_1_8C78 = .text:0x00008C78; // type:function size:0x34 +fn_1_8CAC = .text:0x00008CAC; // type:function size:0x28C +fn_1_8F38 = .text:0x00008F38; // type:function size:0x74 +fn_1_8FAC = .text:0x00008FAC; // type:function size:0x50 +fn_1_8FFC = .text:0x00008FFC; // type:function size:0x24 +fn_1_9020 = .text:0x00009020; // type:function size:0x30 +fn_1_9050 = .text:0x00009050; // type:function size:0x11C +fn_1_916C = .text:0x0000916C; // type:function size:0x78 +fn_1_91E4 = .text:0x000091E4; // type:function size:0x8C +fn_1_9270 = .text:0x00009270; // type:function size:0x164 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x50 +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xC +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x24 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x24 +lbl_1_data_94 = .data:0x00000094; // type:object size:0xC +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC +lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x1 data:byte +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x1A data:string +lbl_1_data_D6 = .data:0x000000D6; // type:object size:0x1A +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x20 +lbl_1_data_110 = .data:0x00000110; // type:object size:0xA0 +jumptable_1_data_1B0 = .data:0x000001B0; // type:object size:0x24 scope:local +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0x14 +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x100 +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x40 +lbl_1_data_328 = .data:0x00000328; // type:object size:0xC +lbl_1_data_334 = .data:0x00000334; // type:object size:0xC +lbl_1_data_340 = .data:0x00000340; // type:object size:0xC +lbl_1_data_34C = .data:0x0000034C; // type:object size:0x8 +lbl_1_data_354 = .data:0x00000354; // type:object size:0x8 +lbl_1_data_35C = .data:0x0000035C; // type:object size:0x7 data:string +lbl_1_data_363 = .data:0x00000363; // type:object size:0x9 +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC +lbl_1_data_378 = .data:0x00000378; // type:object size:0x8 data:byte +lbl_1_data_380 = .data:0x00000380; // type:object size:0xC +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte +lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_1A = .bss:0x0000001A; // type:object size:0x6 data:2byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x8 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x8 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x8 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m461Dll/splits.txt b/config/GMPP01_00/rels/m461Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m461Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m461Dll/symbols.txt b/config/GMPP01_00/rels/m461Dll/symbols.txt new file mode 100644 index 00000000..f3be51a3 --- /dev/null +++ b/config/GMPP01_00/rels/m461Dll/symbols.txt @@ -0,0 +1,223 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x24 +fn_1_24 = .text:0x00000024; // type:function size:0x88 +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 +fn_1_150 = .text:0x00000150; // type:function size:0x24 +fn_1_174 = .text:0x00000174; // type:function size:0x164 +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C +fn_1_414 = .text:0x00000414; // type:function size:0x58 +fn_1_46C = .text:0x0000046C; // type:function size:0x114 +fn_1_580 = .text:0x00000580; // type:function size:0x204 +fn_1_784 = .text:0x00000784; // type:function size:0x240 +fn_1_9C4 = .text:0x000009C4; // type:function size:0x54 +fn_1_A18 = .text:0x00000A18; // type:function size:0x10C +fn_1_B24 = .text:0x00000B24; // type:function size:0x680 +fn_1_11A4 = .text:0x000011A4; // type:function size:0x15C +fn_1_1300 = .text:0x00001300; // type:function size:0x8C +fn_1_138C = .text:0x0000138C; // type:function size:0x334 +fn_1_16C0 = .text:0x000016C0; // type:function size:0x350 +fn_1_1A10 = .text:0x00001A10; // type:function size:0x2B8 +fn_1_1CC8 = .text:0x00001CC8; // type:function size:0x58 +fn_1_1D20 = .text:0x00001D20; // type:function size:0xB0 +fn_1_1DD0 = .text:0x00001DD0; // type:function size:0x104 +fn_1_1ED4 = .text:0x00001ED4; // type:function size:0x34 +fn_1_1F08 = .text:0x00001F08; // type:function size:0x6C +fn_1_1F74 = .text:0x00001F74; // type:function size:0x3F0 +fn_1_2364 = .text:0x00002364; // type:function size:0x64 +fn_1_23C8 = .text:0x000023C8; // type:function size:0xE0 +fn_1_24A8 = .text:0x000024A8; // type:function size:0x32C +fn_1_27D4 = .text:0x000027D4; // type:function size:0x3AC +fn_1_2B80 = .text:0x00002B80; // type:function size:0x30 +fn_1_2BB0 = .text:0x00002BB0; // type:function size:0x1C +fn_1_2BCC = .text:0x00002BCC; // type:function size:0x18C +fn_1_2D58 = .text:0x00002D58; // type:function size:0x8 +fn_1_2D60 = .text:0x00002D60; // type:function size:0x8 +fn_1_2D68 = .text:0x00002D68; // type:function size:0x8 +fn_1_2D70 = .text:0x00002D70; // type:function size:0x8 +fn_1_2D78 = .text:0x00002D78; // type:function size:0xC +fn_1_2D84 = .text:0x00002D84; // type:function size:0x60 +fn_1_2DE4 = .text:0x00002DE4; // type:function size:0xB90 +fn_1_3974 = .text:0x00003974; // type:function size:0x2B0 +fn_1_3C24 = .text:0x00003C24; // type:function size:0xD8 +fn_1_3CFC = .text:0x00003CFC; // type:function size:0x114 +fn_1_3E10 = .text:0x00003E10; // type:function size:0xB8 +fn_1_3EC8 = .text:0x00003EC8; // type:function size:0xA0 +fn_1_3F68 = .text:0x00003F68; // type:function size:0x9C +fn_1_4004 = .text:0x00004004; // type:function size:0xDC8 +fn_1_4DCC = .text:0x00004DCC; // type:function size:0x250 +fn_1_501C = .text:0x0000501C; // type:function size:0x10 +fn_1_502C = .text:0x0000502C; // type:function size:0x10 +_prolog = .text:0x0000503C; // type:function size:0x54 scope:global +_epilog = .text:0x00005090; // type:function size:0x4C scope:global +fn_1_50DC = .text:0x000050DC; // type:function size:0x308 +fn_1_53E4 = .text:0x000053E4; // type:function size:0xF0 +fn_1_54D4 = .text:0x000054D4; // type:function size:0x36C +fn_1_5840 = .text:0x00005840; // type:function size:0x1E8 +fn_1_5A28 = .text:0x00005A28; // type:function size:0x178 +fn_1_5BA0 = .text:0x00005BA0; // type:function size:0xE0C +fn_1_69AC = .text:0x000069AC; // type:function size:0x928 +fn_1_72D4 = .text:0x000072D4; // type:function size:0x288 +fn_1_755C = .text:0x0000755C; // type:function size:0x11C +fn_1_7678 = .text:0x00007678; // type:function size:0x40C +fn_1_7A84 = .text:0x00007A84; // type:function size:0x1230 +fn_1_8CB4 = .text:0x00008CB4; // type:function size:0x45C +fn_1_9110 = .text:0x00009110; // type:function size:0x408 +fn_1_9518 = .text:0x00009518; // type:function size:0x1B8 +fn_1_96D0 = .text:0x000096D0; // type:function size:0x130 +fn_1_9800 = .text:0x00009800; // type:function size:0x450 +fn_1_9C50 = .text:0x00009C50; // type:function size:0x248 +fn_1_9E98 = .text:0x00009E98; // type:function size:0xEE8 +fn_1_AD80 = .text:0x0000AD80; // type:function size:0x458 +fn_1_B1D8 = .text:0x0000B1D8; // type:function size:0x7F8 +fn_1_B9D0 = .text:0x0000B9D0; // type:function size:0xF14 +fn_1_C8E4 = .text:0x0000C8E4; // type:function size:0x240 +fn_1_CB24 = .text:0x0000CB24; // type:function size:0xB5C +fn_1_D680 = .text:0x0000D680; // type:function size:0xD0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 +lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 +lbl_1_data_80 = .data:0x00000080; // type:object size:0x20 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC data:4byte +lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0xC data:4byte +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0xC data:4byte +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0xC +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xC data:4byte +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0xC +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0xC +lbl_1_data_100 = .data:0x00000100; // type:object size:0x4 +lbl_1_data_104 = .data:0x00000104; // type:object size:0xC +lbl_1_data_110 = .data:0x00000110; // type:object size:0xC +lbl_1_data_11C = .data:0x0000011C; // type:object size:0xC +lbl_1_data_128 = .data:0x00000128; // type:object size:0xA0 +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0xC +lbl_1_data_1D4 = .data:0x000001D4; // type:object size:0x10 +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xC +lbl_1_data_1F0 = .data:0x000001F0; // type:object size:0x50 data:float +lbl_1_data_240 = .data:0x00000240; // type:object size:0x24 +lbl_1_data_264 = .data:0x00000264; // type:object size:0xC data:4byte +lbl_1_data_270 = .data:0x00000270; // type:object size:0x80 +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x30 +lbl_1_data_320 = .data:0x00000320; // type:object size:0x23 data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 data:string +lbl_1_data_34C = .data:0x0000034C; // type:object size:0x6 data:string +lbl_1_data_352 = .data:0x00000352; // type:object size:0x1D data:string +lbl_1_data_36F = .data:0x0000036F; // type:object size:0x1D data:string +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1C +jumptable_1_data_3A8 = .data:0x000003A8; // type:object size:0x20 scope:local +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:float +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x10 +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x10 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x50 +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x100 +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x40 data:4byte +lbl_1_bss_1EC = .bss:0x000001EC; // type:object size:0x4 data:float +lbl_1_bss_1F0 = .bss:0x000001F0; // type:object size:0x4 data:4byte +lbl_1_bss_1F4 = .bss:0x000001F4; // type:object size:0x4 data:4byte +lbl_1_bss_1F8 = .bss:0x000001F8; // type:object size:0x2 data:2byte +lbl_1_bss_1FA = .bss:0x000001FA; // type:object size:0x2 data:2byte +lbl_1_bss_1FC = .bss:0x000001FC; // type:object size:0x4 data:4byte +lbl_1_bss_200 = .bss:0x00000200; // type:object size:0x4 data:4byte +lbl_1_bss_204 = .bss:0x00000204; // type:object size:0x4 data:4byte +lbl_1_bss_208 = .bss:0x00000208; // type:object size:0xC data:4byte +lbl_1_bss_214 = .bss:0x00000214; // type:object size:0xC data:4byte +lbl_1_bss_220 = .bss:0x00000220; // type:object size:0xC data:4byte +lbl_1_bss_22C = .bss:0x0000022C; // type:object size:0xC data:4byte +lbl_1_bss_238 = .bss:0x00000238; // type:object size:0x4 data:4byte +lbl_1_bss_23C = .bss:0x0000023C; // type:object size:0x18 data:4byte +lbl_1_bss_254 = .bss:0x00000254; // type:object size:0xC data:4byte diff --git a/config/GMPP01_00/rels/m462Dll/splits.txt b/config/GMPP01_00/rels/m462Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m462Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m462Dll/symbols.txt b/config/GMPP01_00/rels/m462Dll/symbols.txt new file mode 100644 index 00000000..8b39ae68 --- /dev/null +++ b/config/GMPP01_00/rels/m462Dll/symbols.txt @@ -0,0 +1,144 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x400 +fn_1_4A0 = .text:0x000004A0; // type:function size:0x1014 +fn_1_14B4 = .text:0x000014B4; // type:function size:0x80 +fn_1_1534 = .text:0x00001534; // type:function size:0x80 +fn_1_15B4 = .text:0x000015B4; // type:function size:0x80 +fn_1_1634 = .text:0x00001634; // type:function size:0xC4 +fn_1_16F8 = .text:0x000016F8; // type:function size:0x54 +fn_1_174C = .text:0x0000174C; // type:function size:0x54 +fn_1_17A0 = .text:0x000017A0; // type:function size:0xE0 +fn_1_1880 = .text:0x00001880; // type:function size:0x354 +fn_1_1BD4 = .text:0x00001BD4; // type:function size:0x23C +fn_1_1E10 = .text:0x00001E10; // type:function size:0x11CC +fn_1_2FDC = .text:0x00002FDC; // type:function size:0x14FC +fn_1_44D8 = .text:0x000044D8; // type:function size:0x16C +fn_1_4644 = .text:0x00004644; // type:function size:0x580 +fn_1_4BC4 = .text:0x00004BC4; // type:function size:0x894 +fn_1_5458 = .text:0x00005458; // type:function size:0x4F0 +fn_1_5948 = .text:0x00005948; // type:function size:0x498 +fn_1_5DE0 = .text:0x00005DE0; // type:function size:0x498 +fn_1_6278 = .text:0x00006278; // type:function size:0x74 +fn_1_62EC = .text:0x000062EC; // type:function size:0x7C +fn_1_6368 = .text:0x00006368; // type:function size:0x48 +fn_1_63B0 = .text:0x000063B0; // type:function size:0x48 +fn_1_63F8 = .text:0x000063F8; // type:function size:0x1D4 +fn_1_65CC = .text:0x000065CC; // type:function size:0x220 +fn_1_67EC = .text:0x000067EC; // type:function size:0x104 +fn_1_68F0 = .text:0x000068F0; // type:function size:0x70 +fn_1_6960 = .text:0x00006960; // type:function size:0x5C +fn_1_69BC = .text:0x000069BC; // type:function size:0x137C +fn_1_7D38 = .text:0x00007D38; // type:function size:0x4 +fn_1_7D3C = .text:0x00007D3C; // type:function size:0x60 +fn_1_7D9C = .text:0x00007D9C; // type:function size:0x3B4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 +lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x60 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x30 data:float +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x3C +lbl_1_data_FC = .data:0x000000FC; // type:object size:0x14 data:float +lbl_1_data_110 = .data:0x00000110; // type:object size:0xB data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x48 data:float +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x2D0 +lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x98 data:float +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x4 data:4byte +lbl_1_bss_3DC = .bss:0x000003DC; // type:object size:0x4 data:4byte +lbl_1_bss_3E0 = .bss:0x000003E0; // type:object size:0x4 data:4byte +lbl_1_bss_3E4 = .bss:0x000003E4; // type:object size:0x4 data:4byte +lbl_1_bss_3E8 = .bss:0x000003E8; // type:object size:0x2 data:2byte +lbl_1_bss_3EA = .bss:0x000003EA; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/m463Dll/splits.txt b/config/GMPP01_00/rels/m463Dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/m463Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/m463Dll/symbols.txt b/config/GMPP01_00/rels/m463Dll/symbols.txt new file mode 100644 index 00000000..96b91d06 --- /dev/null +++ b/config/GMPP01_00/rels/m463Dll/symbols.txt @@ -0,0 +1,164 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x428 +fn_1_4C8 = .text:0x000004C8; // type:function size:0x2D9C +fn_1_3264 = .text:0x00003264; // type:function size:0x1210 +fn_1_4474 = .text:0x00004474; // type:function size:0x184 +fn_1_45F8 = .text:0x000045F8; // type:function size:0xDA4 +fn_1_539C = .text:0x0000539C; // type:function size:0x4B0 +fn_1_584C = .text:0x0000584C; // type:function size:0x854 +fn_1_60A0 = .text:0x000060A0; // type:function size:0x98 +fn_1_6138 = .text:0x00006138; // type:function size:0x460 +fn_1_6598 = .text:0x00006598; // type:function size:0x11C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x94 +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x50 +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x70 +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 +lbl_1_data_24 = .data:0x00000024; // type:object size:0x24 +lbl_1_data_48 = .data:0x00000048; // type:object size:0x24 +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 +lbl_1_data_90 = .data:0x00000090; // type:object size:0x24 +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 +lbl_1_data_BD = .data:0x000000BD; // type:object size:0xB +lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x24 +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x24 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x24 +lbl_1_data_134 = .data:0x00000134; // type:object size:0x18 data:float +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x2 data:2byte +lbl_1_data_14E = .data:0x0000014E; // type:object size:0x2 data:2byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x4 data:4byte +lbl_1_data_154 = .data:0x00000154; // type:object size:0x24 data:4byte +lbl_1_data_178 = .data:0x00000178; // type:object size:0x9 data:string +lbl_1_data_181 = .data:0x00000181; // type:object size:0x3 data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 data:4byte +jumptable_1_data_188 = .data:0x00000188; // type:object size:0x1C scope:local +lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x10 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x4 data:4byte +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x4 data:float +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4 data:float +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x4 data:float +jumptable_1_data_1C4 = .data:0x000001C4; // type:object size:0x20 scope:local +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x2C +lbl_1_data_210 = .data:0x00000210; // type:object size:0x19 data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x24 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x8 data:2byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x8 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x2D0 +lbl_1_bss_32C = .bss:0x0000032C; // type:object size:0x4 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x24 data:4byte +lbl_1_bss_354 = .bss:0x00000354; // type:object size:0x4 data:4byte +lbl_1_bss_358 = .bss:0x00000358; // type:object size:0x4 data:4byte +lbl_1_bss_35C = .bss:0x0000035C; // type:object size:0x1C0 data:4byte +lbl_1_bss_51C = .bss:0x0000051C; // type:object size:0x90 diff --git a/config/GMPP01_00/rels/mentDll/splits.txt b/config/GMPP01_00/rels/mentDll/splits.txt new file mode 100644 index 00000000..6f4f419c --- /dev/null +++ b/config/GMPP01_00/rels/mentDll/splits.txt @@ -0,0 +1,19 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mentDll/common.c: + .text start:0x00000000 end:0x0000658C + .rodata start:0x00000000 end:0x000000E8 + .data start:0x00000000 end:0x000000D8 + .bss start:0x00000000 end:0x00000008 + +REL/mentDll/main.c: + .text start:0x0000658C end:0x000238C4 + .rodata start:0x000000E8 end:0x00000520 + .data start:0x000000D8 end:0x000006D0 + .bss start:0x00000008 end:0x000036C4 diff --git a/config/GMPP01_00/rels/mentDll/symbols.txt b/config/GMPP01_00/rels/mentDll/symbols.txt new file mode 100644 index 00000000..a6cdecf3 --- /dev/null +++ b/config/GMPP01_00/rels/mentDll/symbols.txt @@ -0,0 +1,441 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +_prolog = .text:0x000000A4; // type:function size:0x54 scope:global +_epilog = .text:0x000000F8; // type:function size:0x4C scope:global +fn_1_144 = .text:0x00000144; // type:function size:0xC8 +fn_1_20C = .text:0x0000020C; // type:function size:0x28 +fn_1_234 = .text:0x00000234; // type:function size:0x20 +fn_1_254 = .text:0x00000254; // type:function size:0xD8 +fn_1_32C = .text:0x0000032C; // type:function size:0xC8 +fn_1_3F4 = .text:0x000003F4; // type:function size:0xBC +fn_1_4B0 = .text:0x000004B0; // type:function size:0x28 +fn_1_4D8 = .text:0x000004D8; // type:function size:0x20 +fn_1_4F8 = .text:0x000004F8; // type:function size:0x14 +fn_1_50C = .text:0x0000050C; // type:function size:0xDC +fn_1_5E8 = .text:0x000005E8; // type:function size:0xE8 +fn_1_6D0 = .text:0x000006D0; // type:function size:0x24 +fn_1_6F4 = .text:0x000006F4; // type:function size:0xA48 +fn_1_113C = .text:0x0000113C; // type:function size:0x2F8 +fn_1_1434 = .text:0x00001434; // type:function size:0x218 +fn_1_164C = .text:0x0000164C; // type:function size:0x60 +fn_1_16AC = .text:0x000016AC; // type:function size:0x68 +fn_1_1714 = .text:0x00001714; // type:function size:0x90 +fn_1_17A4 = .text:0x000017A4; // type:function size:0x134 +fn_1_18D8 = .text:0x000018D8; // type:function size:0x50 +fn_1_1928 = .text:0x00001928; // type:function size:0x40 +fn_1_1968 = .text:0x00001968; // type:function size:0xF4 +fn_1_1A5C = .text:0x00001A5C; // type:function size:0x37C +fn_1_1DD8 = .text:0x00001DD8; // type:function size:0x37C +fn_1_2154 = .text:0x00002154; // type:function size:0x1C4 +fn_1_2318 = .text:0x00002318; // type:function size:0x54 +fn_1_236C = .text:0x0000236C; // type:function size:0x3E4 +fn_1_2750 = .text:0x00002750; // type:function size:0xB8 +fn_1_2808 = .text:0x00002808; // type:function size:0x3C +fn_1_2844 = .text:0x00002844; // type:function size:0x120 +fn_1_2964 = .text:0x00002964; // type:function size:0x3C +fn_1_29A0 = .text:0x000029A0; // type:function size:0x44 +fn_1_29E4 = .text:0x000029E4; // type:function size:0x26C +fn_1_2C50 = .text:0x00002C50; // type:function size:0x26C +fn_1_2EBC = .text:0x00002EBC; // type:function size:0x27C +fn_1_3138 = .text:0x00003138; // type:function size:0x2B4 +fn_1_33EC = .text:0x000033EC; // type:function size:0x46C +fn_1_3858 = .text:0x00003858; // type:function size:0x454 +fn_1_3CAC = .text:0x00003CAC; // type:function size:0x48C +fn_1_4138 = .text:0x00004138; // type:function size:0x658 +fn_1_4790 = .text:0x00004790; // type:function size:0x4C4 +fn_1_4C54 = .text:0x00004C54; // type:function size:0x4FC +fn_1_5150 = .text:0x00005150; // type:function size:0x6C8 +fn_1_5818 = .text:0x00005818; // type:function size:0x188 +fn_1_59A0 = .text:0x000059A0; // type:function size:0x1B0 +fn_1_5B50 = .text:0x00005B50; // type:function size:0xB8 +fn_1_5C08 = .text:0x00005C08; // type:function size:0xD4 +fn_1_5CDC = .text:0x00005CDC; // type:function size:0x5C +fn_1_5D38 = .text:0x00005D38; // type:function size:0x7FC +fn_1_6534 = .text:0x00006534; // type:function size:0x58 +fn_1_658C = .text:0x0000658C; // type:function size:0x6C0 +fn_1_6C4C = .text:0x00006C4C; // type:function size:0x4D8 +fn_1_7124 = .text:0x00007124; // type:function size:0xF4 +fn_1_7218 = .text:0x00007218; // type:function size:0xEC +fn_1_7304 = .text:0x00007304; // type:function size:0x380 +fn_1_7684 = .text:0x00007684; // type:function size:0x13C +fn_1_77C0 = .text:0x000077C0; // type:function size:0x98 +fn_1_7858 = .text:0x00007858; // type:function size:0xA8 +fn_1_7900 = .text:0x00007900; // type:function size:0x114 +fn_1_7A14 = .text:0x00007A14; // type:function size:0x794 +fn_1_81A8 = .text:0x000081A8; // type:function size:0x30 +fn_1_81D8 = .text:0x000081D8; // type:function size:0x18 +fn_1_81F0 = .text:0x000081F0; // type:function size:0x5C +fn_1_824C = .text:0x0000824C; // type:function size:0x180 +fn_1_83CC = .text:0x000083CC; // type:function size:0x1FC +fn_1_85C8 = .text:0x000085C8; // type:function size:0x2DC +fn_1_88A4 = .text:0x000088A4; // type:function size:0x29C +fn_1_8B40 = .text:0x00008B40; // type:function size:0x28 +fn_1_8B68 = .text:0x00008B68; // type:function size:0x3DC +fn_1_8F44 = .text:0x00008F44; // type:function size:0x54 +fn_1_8F98 = .text:0x00008F98; // type:function size:0x20 +fn_1_8FB8 = .text:0x00008FB8; // type:function size:0x314 +fn_1_92CC = .text:0x000092CC; // type:function size:0x618 +fn_1_98E4 = .text:0x000098E4; // type:function size:0xC8 +fn_1_99AC = .text:0x000099AC; // type:function size:0x20 +fn_1_99CC = .text:0x000099CC; // type:function size:0x6D8 +fn_1_A0A4 = .text:0x0000A0A4; // type:function size:0x20 +fn_1_A0C4 = .text:0x0000A0C4; // type:function size:0x2D8 +fn_1_A39C = .text:0x0000A39C; // type:function size:0x20 +fn_1_A3BC = .text:0x0000A3BC; // type:function size:0x5D4 +fn_1_A990 = .text:0x0000A990; // type:function size:0x20 +fn_1_A9B0 = .text:0x0000A9B0; // type:function size:0x3C8 +fn_1_AD78 = .text:0x0000AD78; // type:function size:0x30C +fn_1_B084 = .text:0x0000B084; // type:function size:0x5D0 +fn_1_B654 = .text:0x0000B654; // type:function size:0xB20 +fn_1_C174 = .text:0x0000C174; // type:function size:0x1E0 +fn_1_C354 = .text:0x0000C354; // type:function size:0xEC +fn_1_C440 = .text:0x0000C440; // type:function size:0x78 +fn_1_C4B8 = .text:0x0000C4B8; // type:function size:0x62C +fn_1_CAE4 = .text:0x0000CAE4; // type:function size:0x288 +fn_1_CD6C = .text:0x0000CD6C; // type:function size:0x20 +fn_1_CD8C = .text:0x0000CD8C; // type:function size:0x200 +fn_1_CF8C = .text:0x0000CF8C; // type:function size:0x384 +fn_1_D310 = .text:0x0000D310; // type:function size:0x20 +fn_1_D330 = .text:0x0000D330; // type:function size:0x20 +fn_1_D350 = .text:0x0000D350; // type:function size:0x2E4 +fn_1_D634 = .text:0x0000D634; // type:function size:0x82C +fn_1_DE60 = .text:0x0000DE60; // type:function size:0x17C +fn_1_DFDC = .text:0x0000DFDC; // type:function size:0x268 +fn_1_E244 = .text:0x0000E244; // type:function size:0x70 +fn_1_E2B4 = .text:0x0000E2B4; // type:function size:0x148 +fn_1_E3FC = .text:0x0000E3FC; // type:function size:0x90 +fn_1_E48C = .text:0x0000E48C; // type:function size:0x1C8 +fn_1_E654 = .text:0x0000E654; // type:function size:0xC8 +fn_1_E71C = .text:0x0000E71C; // type:function size:0x158 +fn_1_E874 = .text:0x0000E874; // type:function size:0xFC8 +fn_1_F83C = .text:0x0000F83C; // type:function size:0x670 +fn_1_FEAC = .text:0x0000FEAC; // type:function size:0x388 +fn_1_10234 = .text:0x00010234; // type:function size:0x308 +fn_1_1053C = .text:0x0001053C; // type:function size:0x7C +fn_1_105B8 = .text:0x000105B8; // type:function size:0x39C +fn_1_10954 = .text:0x00010954; // type:function size:0x308 +fn_1_10C5C = .text:0x00010C5C; // type:function size:0x7C +fn_1_10CD8 = .text:0x00010CD8; // type:function size:0x39C +fn_1_11074 = .text:0x00011074; // type:function size:0x2F4 +fn_1_11368 = .text:0x00011368; // type:function size:0x138 +fn_1_114A0 = .text:0x000114A0; // type:function size:0x74 +fn_1_11514 = .text:0x00011514; // type:function size:0x1E0 +fn_1_116F4 = .text:0x000116F4; // type:function size:0x158 +fn_1_1184C = .text:0x0001184C; // type:function size:0xBC +fn_1_11908 = .text:0x00011908; // type:function size:0x1C8 +fn_1_11AD0 = .text:0x00011AD0; // type:function size:0x2D4 +fn_1_11DA4 = .text:0x00011DA4; // type:function size:0x434 +fn_1_121D8 = .text:0x000121D8; // type:function size:0x624 +fn_1_127FC = .text:0x000127FC; // type:function size:0x210 +fn_1_12A0C = .text:0x00012A0C; // type:function size:0x434 +fn_1_12E40 = .text:0x00012E40; // type:function size:0x508 +fn_1_13348 = .text:0x00013348; // type:function size:0x160 +fn_1_134A8 = .text:0x000134A8; // type:function size:0x1E4 +fn_1_1368C = .text:0x0001368C; // type:function size:0x64 +fn_1_136F0 = .text:0x000136F0; // type:function size:0xB4 +fn_1_137A4 = .text:0x000137A4; // type:function size:0x1CC +fn_1_13970 = .text:0x00013970; // type:function size:0x3F0 +fn_1_13D60 = .text:0x00013D60; // type:function size:0x8C +fn_1_13DEC = .text:0x00013DEC; // type:function size:0xF0 +fn_1_13EDC = .text:0x00013EDC; // type:function size:0x8C +fn_1_13F68 = .text:0x00013F68; // type:function size:0xF0 +fn_1_14058 = .text:0x00014058; // type:function size:0xF0 +fn_1_14148 = .text:0x00014148; // type:function size:0xF0 +fn_1_14238 = .text:0x00014238; // type:function size:0xF0 +fn_1_14328 = .text:0x00014328; // type:function size:0xF0 +fn_1_14418 = .text:0x00014418; // type:function size:0x2B8 +fn_1_146D0 = .text:0x000146D0; // type:function size:0xF0 +fn_1_147C0 = .text:0x000147C0; // type:function size:0xF0 +fn_1_148B0 = .text:0x000148B0; // type:function size:0xF0 +fn_1_149A0 = .text:0x000149A0; // type:function size:0x8C +fn_1_14A2C = .text:0x00014A2C; // type:function size:0x8C +fn_1_14AB8 = .text:0x00014AB8; // type:function size:0xF0 +fn_1_14BA8 = .text:0x00014BA8; // type:function size:0x138 +fn_1_14CE0 = .text:0x00014CE0; // type:function size:0x3B8 +fn_1_15098 = .text:0x00015098; // type:function size:0x120 +fn_1_151B8 = .text:0x000151B8; // type:function size:0x798 +fn_1_15950 = .text:0x00015950; // type:function size:0x364 +fn_1_15CB4 = .text:0x00015CB4; // type:function size:0x5EC +fn_1_162A0 = .text:0x000162A0; // type:function size:0x1EC +fn_1_1648C = .text:0x0001648C; // type:function size:0x6DC +fn_1_16B68 = .text:0x00016B68; // type:function size:0x894 +fn_1_173FC = .text:0x000173FC; // type:function size:0x518 +fn_1_17914 = .text:0x00017914; // type:function size:0xC8 +fn_1_179DC = .text:0x000179DC; // type:function size:0x2EC +fn_1_17CC8 = .text:0x00017CC8; // type:function size:0x454 +fn_1_1811C = .text:0x0001811C; // type:function size:0x3F0 +fn_1_1850C = .text:0x0001850C; // type:function size:0x220 +fn_1_1872C = .text:0x0001872C; // type:function size:0x5C +fn_1_18788 = .text:0x00018788; // type:function size:0x2CC +fn_1_18A54 = .text:0x00018A54; // type:function size:0x378 +fn_1_18DCC = .text:0x00018DCC; // type:function size:0x1A8 +fn_1_18F74 = .text:0x00018F74; // type:function size:0x174 +fn_1_190E8 = .text:0x000190E8; // type:function size:0xB38 +fn_1_19C98 = .text:0x00019C20; // type:function size:0x1D98 +fn_1_1BB2C = .text:0x0001B9B8; // type:function size:0xA28 +fn_1_1C554 = .text:0x0001C3E0; // type:function size:0x120 +fn_1_1C674 = .text:0x0001C500; // type:function size:0xE0 +fn_1_1C754 = .text:0x0001C5E0; // type:function size:0x23C +fn_1_1C990 = .text:0x0001C81C; // type:function size:0x238 +fn_1_1CBC8 = .text:0x0001CA54; // type:function size:0x3A0 +fn_1_1CF68 = .text:0x0001CDF4; // type:function size:0x594 +fn_1_1D4FC = .text:0x0001D388; // type:function size:0x9DC +fn_1_1DED8 = .text:0x0001DD64; // type:function size:0x70 +fn_1_1DF48 = .text:0x0001DDD4; // type:function size:0x70 +fn_1_1DFB8 = .text:0x0001DE44; // type:function size:0x1FC +fn_1_1E1B4 = .text:0x0001E040; // type:function size:0x250 +fn_1_1E404 = .text:0x0001E290; // type:function size:0x4A0 +fn_1_1E8A4 = .text:0x0001E730; // type:function size:0xD4C +fn_1_1F5F0 = .text:0x0001F47C; // type:function size:0xC8 +fn_1_1F6B8 = .text:0x0001F544; // type:function size:0x1B0 +fn_1_1F868 = .text:0x0001F6F4; // type:function size:0x1CC +fn_1_1FA34 = .text:0x0001F8C0; // type:function size:0x220 +fn_1_1FC54 = .text:0x0001FAE0; // type:function size:0x1B4 +fn_1_1FE08 = .text:0x0001FC94; // type:function size:0x144 +fn_1_1FF4C = .text:0x0001FDD8; // type:function size:0x610 +fn_1_2055C = .text:0x000203E8; // type:function size:0x260 +fn_1_207BC = .text:0x00020648; // type:function size:0x138 +fn_1_208F4 = .text:0x00020780; // type:function size:0x130 +fn_1_20A24 = .text:0x000208B0; // type:function size:0x130 +fn_1_20B54 = .text:0x000209E0; // type:function size:0x5E0 +fn_1_21134 = .text:0x00020FC0; // type:function size:0x5F0 +fn_1_21724 = .text:0x000215B0; // type:function size:0xED0 +fn_1_225F4 = .text:0x00022480; // type:function size:0xE38 +fn_1_2342C = .text:0x000232B8; // type:function size:0x60C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x90 scope:local +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x4 data:4byte +lbl_1_data_74 = .data:0x00000074; // type:object size:0x22 scope:local data:string +lbl_1_data_96 = .data:0x00000096; // type:object size:0x1A scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1A scope:local data:string +lbl_1_data_CA = .data:0x000000CA; // type:object size:0xE scope:local data:string +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x48 data:float +lbl_1_data_120 = .data:0x00000120; // type:object size:0x18 +jumptable_1_data_138 = .data:0x00000138; // type:object size:0x30 scope:local +lbl_1_data_168 = .data:0x00000168; // type:object size:0x16 scope:local data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x15 scope:local data:string +lbl_1_data_193 = .data:0x00000193; // type:object size:0x17 scope:local data:string +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x16 scope:local data:string +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x17 scope:local data:string +lbl_1_data_1D7 = .data:0x000001D7; // type:object size:0x16 scope:local data:string +lbl_1_data_1ED = .data:0x000001ED; // type:object size:0x17 scope:local data:string +lbl_1_data_204 = .data:0x00000204; // type:object size:0x16 scope:local data:string +lbl_1_data_21A = .data:0x0000021A; // type:object size:0xF scope:local data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x1C scope:local data:string +lbl_1_data_245 = .data:0x00000245; // type:object size:0x1D scope:local data:string +lbl_1_data_262 = .data:0x00000262; // type:object size:0x14 scope:local data:string +lbl_1_data_276 = .data:0x00000276; // type:object size:0x15 scope:local data:string +lbl_1_data_28B = .data:0x0000028B; // type:object size:0x14 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x15 scope:local +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3C +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 scope:local data:string +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 scope:local data:string +lbl_1_data_334 = .data:0x00000334; // type:object size:0x2A scope:local data:string +lbl_1_data_35E = .data:0x0000035E; // type:object size:0x3 scope:local data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0x1B scope:local data:string +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1A scope:local data:string +lbl_1_data_396 = .data:0x00000396; // type:object size:0x29 scope:local data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x2A scope:local data:string +lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0x2A scope:local data:string +lbl_1_data_413 = .data:0x00000413; // type:object size:0x2B scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x29 scope:local data:string +lbl_1_data_467 = .data:0x00000467; // type:object size:0x2B scope:local data:string +lbl_1_data_492 = .data:0x00000492; // type:object size:0x20 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x22 scope:local +jumptable_1_data_4D4 = .data:0x000004D4; // type:object size:0x54 scope:local +lbl_1_data_528 = .data:0x00000528; // type:object size:0x1B scope:local data:string +lbl_1_data_543 = .data:0x00000543; // type:object size:0x1A scope:local data:string +lbl_1_data_55D = .data:0x0000055D; // type:object size:0xF scope:local data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 scope:local data:string +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x40 +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x20 +lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x64 data:float +lbl_1_data_640 = .data:0x00000640; // type:object size:0x50 data:4byte +lbl_1_data_690 = .data:0x00000690; // type:object size:0x40 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x10 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x40 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x20 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x15E0 +lbl_1_bss_16C4 = .bss:0x000016C4; // type:object size:0x1A40 +lbl_1_bss_3104 = .bss:0x00003104; // type:object size:0x4 data:4byte +lbl_1_bss_3108 = .bss:0x00003108; // type:object size:0xC data:4byte +lbl_1_bss_3114 = .bss:0x00003114; // type:object size:0x240 data:4byte +lbl_1_bss_3354 = .bss:0x00003354; // type:object size:0x58 data:4byte +lbl_1_bss_33AC = .bss:0x000033AC; // type:object size:0x210 data:4byte +lbl_1_bss_35BC = .bss:0x000035BC; // type:object size:0xB0 data:4byte +lbl_1_bss_366C = .bss:0x0000366C; // type:object size:0x58 data:4byte diff --git a/config/GMPP01_00/rels/messDll/splits.txt b/config/GMPP01_00/rels/messDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/messDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/messDll/symbols.txt b/config/GMPP01_00/rels/messDll/symbols.txt new file mode 100644 index 00000000..2c96428e --- /dev/null +++ b/config/GMPP01_00/rels/messDll/symbols.txt @@ -0,0 +1,113 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x22C +fn_1_2CC = .text:0x000002CC; // type:function size:0x44 +fn_1_310 = .text:0x00000310; // type:function size:0xB88 +fn_1_E98 = .text:0x00000E98; // type:function size:0x2EC +fn_1_1184 = .text:0x00001184; // type:function size:0x158 +fn_1_12DC = .text:0x000012DC; // type:function size:0x310 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 data:string +lbl_1_data_22 = .data:0x00000022; // type:object size:0x16 data:string +lbl_1_data_38 = .data:0x00000038; // type:object size:0x11 data:string +lbl_1_data_49 = .data:0x00000049; // type:object size:0xD data:string +lbl_1_data_56 = .data:0x00000056; // type:object size:0xD data:string +lbl_1_data_63 = .data:0x00000063; // type:object size:0xB data:string +lbl_1_data_6E = .data:0x0000006E; // type:object size:0xF data:string +lbl_1_data_7D = .data:0x0000007D; // type:object size:0xE data:string +lbl_1_data_8B = .data:0x0000008B; // type:object size:0xE data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0xD data:string +lbl_1_data_A6 = .data:0x000000A6; // type:object size:0x9 data:string +lbl_1_data_AF = .data:0x000000AF; // type:object size:0xE data:string +lbl_1_data_BD = .data:0x000000BD; // type:object size:0xF data:string +lbl_1_data_CC = .data:0x000000CC; // type:object size:0xB data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x12 data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0xA data:string +lbl_1_data_F3 = .data:0x000000F3; // type:object size:0xD data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0xB data:string +lbl_1_data_10B = .data:0x0000010B; // type:object size:0xF data:string +lbl_1_data_11A = .data:0x0000011A; // type:object size:0x9 data:string +lbl_1_data_123 = .data:0x00000123; // type:object size:0xF data:string +lbl_1_data_132 = .data:0x00000132; // type:object size:0x13 data:string +lbl_1_data_145 = .data:0x00000145; // type:object size:0xF data:string +lbl_1_data_154 = .data:0x00000154; // type:object size:0xF data:string +lbl_1_data_163 = .data:0x00000163; // type:object size:0x12 data:string +lbl_1_data_175 = .data:0x00000175; // type:object size:0xB data:string +lbl_1_data_180 = .data:0x00000180; // type:object size:0xD data:string +lbl_1_data_18D = .data:0x0000018D; // type:object size:0xF data:string +lbl_1_data_19C = .data:0x0000019C; // type:object size:0xA data:string +lbl_1_data_1A6 = .data:0x000001A6; // type:object size:0xC data:string +lbl_1_data_1B2 = .data:0x000001B2; // type:object size:0xD data:string +lbl_1_data_1BF = .data:0x000001BF; // type:object size:0xF data:string +lbl_1_data_1CE = .data:0x000001CE; // type:object size:0x11 data:string +lbl_1_data_1DF = .data:0x000001DF; // type:object size:0xF data:string +lbl_1_data_1EE = .data:0x000001EE; // type:object size:0xC data:string +lbl_1_data_1FA = .data:0x000001FA; // type:object size:0xC data:string +lbl_1_data_206 = .data:0x00000206; // type:object size:0x8 data:string +lbl_1_data_20E = .data:0x0000020E; // type:object size:0x11 data:string +lbl_1_data_21F = .data:0x0000021F; // type:object size:0x11 data:string +lbl_1_data_230 = .data:0x00000230; // type:object size:0x12 data:string +lbl_1_data_242 = .data:0x00000242; // type:object size:0xF data:string +lbl_1_data_251 = .data:0x00000251; // type:object size:0xC data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0xB data:string +lbl_1_data_268 = .data:0x00000268; // type:object size:0xB data:string +lbl_1_data_273 = .data:0x00000273; // type:object size:0xB data:string +lbl_1_data_27E = .data:0x0000027E; // type:object size:0xB data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0xB data:string +lbl_1_data_294 = .data:0x00000294; // type:object size:0xD data:string +lbl_1_data_2A1 = .data:0x000002A1; // type:object size:0x11 data:string +lbl_1_data_2B2 = .data:0x000002B2; // type:object size:0xF data:string +lbl_1_data_2C1 = .data:0x000002C1; // type:object size:0xC data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x11 data:string +lbl_1_data_2DE = .data:0x000002DE; // type:object size:0xF data:string +lbl_1_data_2ED = .data:0x000002ED; // type:object size:0xF data:string +lbl_1_data_2FC = .data:0x000002FC; // type:object size:0xF data:string +lbl_1_data_30B = .data:0x0000030B; // type:object size:0x11 data:string +lbl_1_data_31C = .data:0x0000031C; // type:object size:0x10 +lbl_1_data_32C = .data:0x0000032C; // type:object size:0xE4 +lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 data:string +lbl_1_data_418 = .data:0x00000418; // type:object size:0x8 data:string +lbl_1_data_420 = .data:0x00000420; // type:object size:0x7 data:string +lbl_1_data_427 = .data:0x00000427; // type:object size:0x6 data:string +lbl_1_data_42D = .data:0x0000042D; // type:object size:0xB +lbl_1_data_438 = .data:0x00000438; // type:object size:0x14 data:4byte +lbl_1_data_44C = .data:0x0000044C; // type:object size:0x2 data:2byte +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x6 +lbl_1_data_454 = .data:0x00000454; // type:object size:0x5 data:string +lbl_1_data_459 = .data:0x00000459; // type:object size:0x4 data:string +lbl_1_data_45D = .data:0x0000045D; // type:object size:0x4 data:string +lbl_1_data_461 = .data:0x00000461; // type:object size:0x4 data:string +lbl_1_data_465 = .data:0x00000465; // type:object size:0x4 data:string +lbl_1_data_469 = .data:0x00000469; // type:object size:0x4 data:string +lbl_1_data_46D = .data:0x0000046D; // type:object size:0x4 data:string +lbl_1_data_471 = .data:0x00000471; // type:object size:0x4 data:string +lbl_1_data_475 = .data:0x00000475; // type:object size:0x7 +lbl_1_data_47C = .data:0x0000047C; // type:object size:0x20 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x24 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/mgmodedll/splits.txt b/config/GMPP01_00/rels/mgmodedll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/mgmodedll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/mgmodedll/symbols.txt b/config/GMPP01_00/rels/mgmodedll/symbols.txt new file mode 100644 index 00000000..780a9b7f --- /dev/null +++ b/config/GMPP01_00/rels/mgmodedll/symbols.txt @@ -0,0 +1,584 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3C4 +fn_1_464 = .text:0x00000464; // type:function size:0x294 +fn_1_6F8 = .text:0x000006F8; // type:function size:0x6F8 +fn_1_DF0 = .text:0x00000DF0; // type:function size:0xD1C +fn_1_1B0C = .text:0x00001B0C; // type:function size:0x6B8 +fn_1_21C4 = .text:0x000021C4; // type:function size:0x77C +fn_1_2940 = .text:0x00002940; // type:function size:0x810 +fn_1_3150 = .text:0x00003150; // type:function size:0x788 +fn_1_38D8 = .text:0x000038D8; // type:function size:0x738 +fn_1_4010 = .text:0x00004010; // type:function size:0x86C +fn_1_487C = .text:0x0000487C; // type:function size:0x260 +fn_1_4ADC = .text:0x00004ADC; // type:function size:0x800 +fn_1_52DC = .text:0x000052DC; // type:function size:0x220 +fn_1_54FC = .text:0x000054FC; // type:function size:0xCC +fn_1_55C8 = .text:0x000055C8; // type:function size:0x3B4 +fn_1_597C = .text:0x0000597C; // type:function size:0xC78 +fn_1_65F4 = .text:0x000065F4; // type:function size:0xC4 +fn_1_66B8 = .text:0x000066B8; // type:function size:0x2C4 +fn_1_697C = .text:0x0000697C; // type:function size:0x90 +fn_1_6A0C = .text:0x00006A0C; // type:function size:0xEC +fn_1_6AF8 = .text:0x00006AF8; // type:function size:0x128 +fn_1_6C20 = .text:0x00006C20; // type:function size:0x110 +fn_1_6D30 = .text:0x00006D30; // type:function size:0x31FC +fn_1_9F2C = .text:0x00009F2C; // type:function size:0x120 +fn_1_A04C = .text:0x0000A04C; // type:function size:0x400 +fn_1_A44C = .text:0x0000A44C; // type:function size:0x2C0 +fn_1_A70C = .text:0x0000A70C; // type:function size:0x84 +fn_1_A790 = .text:0x0000A790; // type:function size:0x604 +fn_1_AD94 = .text:0x0000AD94; // type:function size:0xF4 +fn_1_AE88 = .text:0x0000AE88; // type:function size:0x80 +fn_1_AF08 = .text:0x0000AF08; // type:function size:0xB0 +fn_1_AFB8 = .text:0x0000AFB8; // type:function size:0x6D8 +fn_1_B690 = .text:0x0000B690; // type:function size:0x1C8 +fn_1_B858 = .text:0x0000B858; // type:function size:0x248 +fn_1_BAA0 = .text:0x0000BAA0; // type:function size:0x16C +fn_1_BC0C = .text:0x0000BC0C; // type:function size:0x47C +fn_1_C088 = .text:0x0000C088; // type:function size:0x128 +fn_1_C1B0 = .text:0x0000C1B0; // type:function size:0x1808 +fn_1_D9B8 = .text:0x0000D9B8; // type:function size:0x56C +fn_1_DF24 = .text:0x0000DF24; // type:function size:0x17C +fn_1_E0A0 = .text:0x0000E0A0; // type:function size:0x74 +fn_1_E114 = .text:0x0000E114; // type:function size:0x6F8 +fn_1_E80C = .text:0x0000E80C; // type:function size:0x18F8 +fn_1_10104 = .text:0x00010104; // type:function size:0x608 +fn_1_1070C = .text:0x0001070C; // type:function size:0xD38 +fn_1_11444 = .text:0x00011444; // type:function size:0xBCC +fn_1_12010 = .text:0x00012010; // type:function size:0x3C4 +fn_1_123D4 = .text:0x000123D4; // type:function size:0x938 +fn_1_12D0C = .text:0x00012D0C; // type:function size:0x88 +fn_1_12D94 = .text:0x00012D94; // type:function size:0x82C +fn_1_135C0 = .text:0x000135C0; // type:function size:0x18E4 +fn_1_14EA4 = .text:0x00014EA4; // type:function size:0x119C +fn_1_16040 = .text:0x00016040; // type:function size:0x5A0 +fn_1_165E0 = .text:0x000165E0; // type:function size:0x6F8 +fn_1_16CD8 = .text:0x00016CD8; // type:function size:0xF2C +fn_1_17C04 = .text:0x00017C04; // type:function size:0x184 +fn_1_17D88 = .text:0x00017D88; // type:function size:0x1218 +fn_1_18FA0 = .text:0x00018FA0; // type:function size:0x220 +fn_1_191C0 = .text:0x000191C0; // type:function size:0x4B0 +fn_1_19670 = .text:0x00019670; // type:function size:0x568 +fn_1_19BD8 = .text:0x00019BD8; // type:function size:0x15C +fn_1_19D34 = .text:0x00019D34; // type:function size:0x174 +fn_1_19EA8 = .text:0x00019EA8; // type:function size:0x194 +fn_1_1A03C = .text:0x0001A03C; // type:function size:0xC8 +fn_1_1A104 = .text:0x0001A104; // type:function size:0x608 +fn_1_1A70C = .text:0x0001A70C; // type:function size:0x13C +fn_1_1A848 = .text:0x0001A848; // type:function size:0x248 +fn_1_1AA90 = .text:0x0001AA90; // type:function size:0x140 +fn_1_1ABD0 = .text:0x0001ABD0; // type:function size:0x130 +fn_1_1AD00 = .text:0x0001AD00; // type:function size:0x130 +fn_1_1AE30 = .text:0x0001AE30; // type:function size:0x5D8 +fn_1_1B408 = .text:0x0001B408; // type:function size:0xA8C +fn_1_1BE94 = .text:0x0001BE94; // type:function size:0x1E0 +fn_1_1C074 = .text:0x0001C074; // type:function size:0x1D0 +fn_1_1C244 = .text:0x0001C244; // type:function size:0xAB0 +fn_1_1CCF4 = .text:0x0001CCF4; // type:function size:0x364 +fn_1_1D058 = .text:0x0001D058; // type:function size:0x5EC +fn_1_1D644 = .text:0x0001D644; // type:function size:0x1EC +fn_1_1D830 = .text:0x0001D830; // type:function size:0x6EC +fn_1_1DF1C = .text:0x0001DF1C; // type:function size:0x894 +fn_1_1E7B0 = .text:0x0001E7B0; // type:function size:0x518 +fn_1_1ECC8 = .text:0x0001ECC8; // type:function size:0xD8 +fn_1_1EDA0 = .text:0x0001EDA0; // type:function size:0x138 +fn_1_1EED8 = .text:0x0001EED8; // type:function size:0x138 +fn_1_1F010 = .text:0x0001F010; // type:function size:0x4D4 +fn_1_1F4E4 = .text:0x0001F4E4; // type:function size:0x790 +fn_1_1FC74 = .text:0x0001FC74; // type:function size:0x188 +fn_1_1FDFC = .text:0x0001FDFC; // type:function size:0xAE4 +fn_1_208E0 = .text:0x000208E0; // type:function size:0x248 +fn_1_20B28 = .text:0x00020B28; // type:function size:0x514 +fn_1_2103C = .text:0x0002103C; // type:function size:0x150 +fn_1_2118C = .text:0x0002118C; // type:function size:0x1E0 +fn_1_2136C = .text:0x0002136C; // type:function size:0x2F0 +fn_1_2165C = .text:0x0002165C; // type:function size:0x830 +fn_1_21E8C = .text:0x00021E8C; // type:function size:0x5F8 +fn_1_22484 = .text:0x00022484; // type:function size:0x4AC +fn_1_22930 = .text:0x00022930; // type:function size:0x4F0 +fn_1_22E20 = .text:0x00022E20; // type:function size:0x5E8 +fn_1_23408 = .text:0x00023408; // type:function size:0xEF4 +fn_1_242FC = .text:0x000242FC; // type:function size:0x28 +fn_1_24324 = .text:0x00024324; // type:function size:0x20 +fn_1_24344 = .text:0x00024344; // type:function size:0xD8 +fn_1_2441C = .text:0x0002441C; // type:function size:0xC8 +fn_1_244E4 = .text:0x000244E4; // type:function size:0xBC +fn_1_245A0 = .text:0x000245A0; // type:function size:0x28 +fn_1_245C8 = .text:0x000245C8; // type:function size:0x20 +fn_1_245E8 = .text:0x000245E8; // type:function size:0x14 +fn_1_245FC = .text:0x000245FC; // type:function size:0xDC +fn_1_246D8 = .text:0x000246D8; // type:function size:0xE8 +fn_1_247C0 = .text:0x000247C0; // type:function size:0x24 +fn_1_247E4 = .text:0x000247E4; // type:function size:0xA48 +fn_1_2522C = .text:0x0002522C; // type:function size:0x2F8 +fn_1_25524 = .text:0x00025524; // type:function size:0x218 +fn_1_2573C = .text:0x0002573C; // type:function size:0x60 +fn_1_2579C = .text:0x0002579C; // type:function size:0x68 +fn_1_25804 = .text:0x00025804; // type:function size:0x90 +fn_1_25894 = .text:0x00025894; // type:function size:0x134 +fn_1_259C8 = .text:0x000259C8; // type:function size:0x48 +fn_1_25A10 = .text:0x00025A10; // type:function size:0x40 +fn_1_25A50 = .text:0x00025A50; // type:function size:0xF4 +fn_1_25B44 = .text:0x00025B44; // type:function size:0x37C +fn_1_25EC0 = .text:0x00025EC0; // type:function size:0x1CC +fn_1_2608C = .text:0x0002608C; // type:function size:0x54 +fn_1_260E0 = .text:0x000260E0; // type:function size:0x13C +fn_1_2621C = .text:0x0002621C; // type:function size:0x78C +fn_1_269A8 = .text:0x000269A8; // type:function size:0x58 +fn_1_26A00 = .text:0x00026A00; // type:function size:0x290 +fn_1_26C90 = .text:0x00026C90; // type:function size:0x138 +fn_1_26DC8 = .text:0x00026DC8; // type:function size:0x78 +fn_1_26E40 = .text:0x00026E40; // type:function size:0x2C +fn_1_26E6C = .text:0x00026E6C; // type:function size:0x42C +fn_1_27298 = .text:0x00027298; // type:function size:0x134 +fn_1_273CC = .text:0x000273CC; // type:function size:0x264 +fn_1_27630 = .text:0x00027630; // type:function size:0x424 +fn_1_27A54 = .text:0x00027A54; // type:function size:0x1C0 +fn_1_27C14 = .text:0x00027C14; // type:function size:0x210 +fn_1_27E24 = .text:0x00027E24; // type:function size:0xE4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 scope:local data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 scope:local data:double +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 scope:local data:double +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 scope:local data:double +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 scope:local data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:double +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:double +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 scope:local data:double +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 scope:local data:float +lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 scope:local data:float +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 scope:local data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 scope:local data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 scope:local data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 scope:local data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 scope:local data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 scope:local data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 scope:local data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 scope:local data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 scope:local data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x8 scope:local data:double +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 scope:local data:float +lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 scope:local data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x8 scope:local data:double +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 scope:local data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6CC = .rodata:0x000006CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F4 = .rodata:0x000006F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x4 scope:local data:float +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x8 scope:local data:double +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 scope:local data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 scope:local data:double +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 scope:local data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 scope:local data:float +lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 scope:local data:float +lbl_1_rodata_740 = .rodata:0x00000740; // type:object size:0x8 scope:local data:double +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x8 scope:local data:double +lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 scope:local data:float +lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x8 scope:local data:double +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x4 scope:local data:float +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x8 scope:local data:double +lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0x8 scope:local data:double +lbl_1_rodata_778 = .rodata:0x00000778; // type:object size:0x4 scope:local data:float +lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x8 scope:local data:double +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78C = .rodata:0x0000078C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1C +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x24 +lbl_1_data_40 = .data:0x00000040; // type:object size:0x30 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x16 data:string +lbl_1_data_86 = .data:0x00000086; // type:object size:0x6 +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x10 +lbl_1_data_9C = .data:0x0000009C; // type:object size:0x4 +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA data:string +lbl_1_data_AA = .data:0x000000AA; // type:object size:0x6 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x2 data:2byte +lbl_1_data_B2 = .data:0x000000B2; // type:object size:0xE +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x10 +lbl_1_data_D0 = .data:0x000000D0; // type:object size:0x10 +lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x6 +lbl_1_data_E6 = .data:0x000000E6; // type:object size:0xA +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x20 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x10 +mgRecordIdxTbl = .data:0x00000120; // type:object size:0x10 +lbl_1_data_130 = .data:0x00000130; // type:object size:0x28 +lbl_1_data_158 = .data:0x00000158; // type:object size:0x2 data:2byte +lbl_1_data_15A = .data:0x0000015A; // type:object size:0x8 +lbl_1_data_162 = .data:0x00000162; // type:object size:0x16 +lbl_1_data_178 = .data:0x00000178; // type:object size:0x2 data:2byte +lbl_1_data_17A = .data:0x0000017A; // type:object size:0x32 +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x10 +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x10 +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0xA data:string +lbl_1_data_1D6 = .data:0x000001D6; // type:object size:0xE data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x10 +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x24 data:string +lbl_1_data_218 = .data:0x00000218; // type:object size:0x26 data:string +lbl_1_data_23E = .data:0x0000023E; // type:object size:0x27 data:string +lbl_1_data_265 = .data:0x00000265; // type:object size:0x1C data:string +lbl_1_data_281 = .data:0x00000281; // type:object size:0x1B data:string +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x1C data:string +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x1D data:string +lbl_1_data_2D5 = .data:0x000002D5; // type:object size:0xC data:string +lbl_1_data_2E1 = .data:0x000002E1; // type:object size:0x1A data:string +lbl_1_data_2FB = .data:0x000002FB; // type:object size:0x1A data:string +lbl_1_data_315 = .data:0x00000315; // type:object size:0x27 +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x40 data:4byte +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x60 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x18 data:4byte +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x64 +lbl_1_data_458 = .data:0x00000458; // type:object size:0x40 +lbl_1_data_498 = .data:0x00000498; // type:object size:0x8 data:4byte +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x2D8 +lbl_1_data_778 = .data:0x00000778; // type:object size:0x258 +lbl_1_data_9D0 = .data:0x000009D0; // type:object size:0x20 +lbl_1_data_9F0 = .data:0x000009F0; // type:object size:0x20 +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x2 data:2byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +mgModeEvtNo = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x264 data:4byte +lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x8 data:float +lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x18 data:4byte +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x18 data:4byte +lbl_1_bss_2A4 = .bss:0x000002A4; // type:object size:0x2 data:2byte +lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0xA data:2byte +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 data:float +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xC data:4byte +lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0xC data:4byte +lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x2 data:2byte +lbl_1_bss_2CE = .bss:0x000002CE; // type:object size:0x2 data:2byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x8 data:4byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x4 data:4byte +lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x6 +lbl_1_bss_2E2 = .bss:0x000002E2; // type:object size:0x2 data:2byte +lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0x2 data:2byte +lbl_1_bss_2E6 = .bss:0x000002E6; // type:object size:0x2 data:2byte +lbl_1_bss_2E8 = .bss:0x000002E8; // type:object size:0x4 data:float +lbl_1_bss_2EC = .bss:0x000002EC; // type:object size:0x2 data:2byte +lbl_1_bss_2EE = .bss:0x000002EE; // type:object size:0x2 data:2byte +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0x2 data:2byte +lbl_1_bss_2F4 = .bss:0x000002F4; // type:object size:0x18 +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0x2 data:2byte +lbl_1_bss_30E = .bss:0x0000030E; // type:object size:0x8 +lbl_1_bss_316 = .bss:0x00000316; // type:object size:0x2 data:2byte +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x28 data:2byte +lbl_1_bss_340 = .bss:0x00000340; // type:object size:0x8 +lbl_1_bss_348 = .bss:0x00000348; // type:object size:0x2 data:2byte +lbl_1_bss_34A = .bss:0x0000034A; // type:object size:0x8 data:2byte +lbl_1_bss_352 = .bss:0x00000352; // type:object size:0x1E +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0xC scope:local +lbl_1_bss_37C = .bss:0x0000037C; // type:object size:0xC scope:local +lbl_1_bss_388 = .bss:0x00000388; // type:object size:0x2 data:2byte +lbl_1_bss_38A = .bss:0x0000038A; // type:object size:0x2 data:2byte +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x8 +lbl_1_bss_394 = .bss:0x00000394; // type:object size:0x2 data:2byte +lbl_1_bss_396 = .bss:0x00000396; // type:object size:0xA +lbl_1_bss_3A0 = .bss:0x000003A0; // type:object size:0x4 data:4byte +lbl_1_bss_3A4 = .bss:0x000003A4; // type:object size:0x2 data:2byte +lbl_1_bss_3A8 = .bss:0x000003A8; // type:object size:0x2 data:2byte +lbl_1_bss_3AA = .bss:0x000003AA; // type:object size:0x2 data:2byte +lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x2 data:2byte +lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x2 data:2byte +lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x2 data:2byte +lbl_1_bss_3B8 = .bss:0x000003B8; // type:object size:0x8 data:2byte +lbl_1_bss_3C0 = .bss:0x000003C0; // type:object size:0x4 data:4byte +lbl_1_bss_3C4 = .bss:0x000003C4; // type:object size:0x4 data:4byte +lbl_1_bss_3C8 = .bss:0x000003C8; // type:object size:0x4 data:4byte +lbl_1_bss_3CC = .bss:0x000003CC; // type:object size:0x1A40 +lbl_1_bss_1E0C = .bss:0x00001E0C; // type:object size:0x4 data:4byte +lbl_1_bss_1E10 = .bss:0x00001E10; // type:object size:0x240 data:4byte +lbl_1_bss_2050 = .bss:0x00002050; // type:object size:0x5A +lbl_1_bss_20AA = .bss:0x000020AA; // type:object size:0x2 data:2byte +lbl_1_bss_20AC = .bss:0x000020AC; // type:object size:0x14 data:2byte +lbl_1_bss_20C0 = .bss:0x000020C0; // type:object size:0x578 +lbl_1_bss_2638 = .bss:0x00002638; // type:object size:0x14 data:2byte +lbl_1_bss_264C = .bss:0x0000264C; // type:object size:0x578 +lbl_1_bss_2BC4 = .bss:0x00002BC4; // type:object size:0x50 +lbl_1_bss_2C14 = .bss:0x00002C14; // type:object size:0x8 +lbl_1_bss_2C1C = .bss:0x00002C1C; // type:object size:0x8 +lbl_1_bss_2C24 = .bss:0x00002C24; // type:object size:0x8 +lbl_1_bss_2C2C = .bss:0x00002C2C; // type:object size:0x3A data:2byte +lbl_1_bss_2C66 = .bss:0x00002C66; // type:object size:0x1A data:2byte +lbl_1_bss_2C80 = .bss:0x00002C80; // type:object size:0x1A data:2byte diff --git a/config/GMPP01_00/rels/modeltestDll/splits.txt b/config/GMPP01_00/rels/modeltestDll/splits.txt new file mode 100644 index 00000000..9ff3fae5 --- /dev/null +++ b/config/GMPP01_00/rels/modeltestDll/splits.txt @@ -0,0 +1,28 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/modeltestDll/main.c: + .text start:0x000000A0 end:0x000034B0 + .rodata start:0x00000000 end:0x00000130 + .data start:0x00000000 end:0x00000358 + .bss start:0x00000000 end:0x000009A8 + +REL/modeltestDll/modeltest00.c: + .text start:0x000034B0 end:0x00004AC8 + .rodata start:0x00000130 end:0x000001C8 + .data start:0x00000358 end:0x00000388 + .bss start:0x000009A8 end:0x00000A00 + +REL/modeltestDll/modeltest01.c: + .text start:0x00004AC8 end:0x000086B8 + .rodata start:0x000001C8 end:0x00000290 + .data start:0x00000388 end:0x000007AE + .bss start:0x00000A00 end:0x00000AC8 diff --git a/config/GMPP01_00/rels/modeltestDll/symbols.txt b/config/GMPP01_00/rels/modeltestDll/symbols.txt new file mode 100644 index 00000000..460a17bf --- /dev/null +++ b/config/GMPP01_00/rels/modeltestDll/symbols.txt @@ -0,0 +1,230 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x1FC +fn_1_29C = .text:0x0000029C; // type:function size:0xC9C +fn_1_F38 = .text:0x00000F38; // type:function size:0x64 +fn_1_F9C = .text:0x00000F9C; // type:function size:0x1158 +fn_1_20F4 = .text:0x000020F4; // type:function size:0x804 +fn_1_28F8 = .text:0x000028F8; // type:function size:0x204 +fn_1_2AFC = .text:0x00002AFC; // type:function size:0x6C +fn_1_2B68 = .text:0x00002B68; // type:function size:0x948 +fn_1_34B0 = .text:0x000034B0; // type:function size:0x32C +fn_1_37DC = .text:0x000037DC; // type:function size:0xBC0 +fn_1_439C = .text:0x0000439C; // type:function size:0x354 +fn_1_46F0 = .text:0x000046F0; // type:function size:0x3D8 +fn_1_4AC8 = .text:0x00004AC8; // type:function size:0x330 +fn_1_4DF8 = .text:0x00004DF8; // type:function size:0xC68 +fn_1_5A60 = .text:0x00005A60; // type:function size:0x348 +fn_1_5DA8 = .text:0x00005DA8; // type:function size:0xC20 +fn_1_69C8 = .text:0x000069C8; // type:function size:0x118 +fn_1_6AE0 = .text:0x00006AE0; // type:function size:0x166C +fn_1_814C = .text:0x0000814C; // type:function size:0x17C +fn_1_82C8 = .text:0x000082C8; // type:function size:0xEC +fn_1_83B4 = .text:0x000083B4; // type:function size:0x304 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0xC data:4byte +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0xC data:4byte +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x10 data:2byte +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0xC data:4byte +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0xC data:4byte +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0xC data:4byte +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0xC data:4byte +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0xC data:4byte +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 data:4byte +lbl_1_data_20 = .data:0x00000020; // type:object size:0x28 data:string +lbl_1_data_48 = .data:0x00000048; // type:object size:0x9 data:string +lbl_1_data_51 = .data:0x00000051; // type:object size:0x9 data:string +lbl_1_data_5A = .data:0x0000005A; // type:object size:0x9 data:string +lbl_1_data_63 = .data:0x00000063; // type:object size:0x9 data:string +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x9 data:string +lbl_1_data_75 = .data:0x00000075; // type:object size:0x9 data:string +lbl_1_data_7E = .data:0x0000007E; // type:object size:0x9 data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x9 data:string +lbl_1_data_90 = .data:0x00000090; // type:object size:0x9 data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x9 data:string +lbl_1_data_A2 = .data:0x000000A2; // type:object size:0x9 data:string +lbl_1_data_AB = .data:0x000000AB; // type:object size:0x9 data:string +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 data:string +lbl_1_data_BD = .data:0x000000BD; // type:object size:0x9 data:string +lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x9 data:string +lbl_1_data_CF = .data:0x000000CF; // type:object size:0x9 data:string +lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x40 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x50 data:float +lbl_1_data_168 = .data:0x00000168; // type:object size:0xA0 +lbl_1_data_208 = .data:0x00000208; // type:object size:0x50 +lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x1A data:string +lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x16 +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x10 data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x4 data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x2C data:string +lbl_1_data_318 = .data:0x00000318; // type:object size:0x40 +lbl_1_data_358 = .data:0x00000358; // type:object size:0x8 +lbl_1_data_360 = .data:0x00000360; // type:object size:0x28 data:string +lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x58 +lbl_1_data_408 = .data:0x00000408; // type:object size:0x58 +lbl_1_data_460 = .data:0x00000460; // type:object size:0x58 +lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x58 +lbl_1_data_510 = .data:0x00000510; // type:object size:0x58 +lbl_1_data_568 = .data:0x00000568; // type:object size:0x58 +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x58 +lbl_1_data_618 = .data:0x00000618; // type:object size:0x58 +lbl_1_data_670 = .data:0x00000670; // type:object size:0x20 +lbl_1_data_690 = .data:0x00000690; // type:object size:0x10 data:string +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0xD data:string +lbl_1_data_6AD = .data:0x000006AD; // type:object size:0xD data:string +lbl_1_data_6BA = .data:0x000006BA; // type:object size:0xD data:string +lbl_1_data_6C7 = .data:0x000006C7; // type:object size:0xB data:string +lbl_1_data_6D2 = .data:0x000006D2; // type:object size:0x8 data:string +lbl_1_data_6DA = .data:0x000006DA; // type:object size:0xF data:string +lbl_1_data_6E9 = .data:0x000006E9; // type:object size:0xB +lbl_1_data_6F4 = .data:0x000006F4; // type:object size:0x60 +lbl_1_data_754 = .data:0x00000754; // type:object size:0x4 data:4byte +lbl_1_data_758 = .data:0x00000758; // type:object size:0x12 +lbl_1_data_76A = .data:0x0000076A; // type:object size:0x2E +lbl_1_data_798 = .data:0x00000798; // type:object size:0x14 +lbl_1_data_7AC = .data:0x000007AC; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x1 data:byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x10 data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x414 +lbl_1_bss_454 = .bss:0x00000454; // type:object size:0x4 data:4byte +lbl_1_bss_458 = .bss:0x00000458; // type:object size:0x2 data:2byte +lbl_1_bss_45A = .bss:0x0000045A; // type:object size:0x6 data:2byte +lbl_1_bss_460 = .bss:0x00000460; // type:object size:0x204 data:2byte +lbl_1_bss_664 = .bss:0x00000664; // type:object size:0x200 data:2byte +lbl_1_bss_864 = .bss:0x00000864; // type:object size:0x20 +lbl_1_bss_884 = .bss:0x00000884; // type:object size:0x2 data:2byte +lbl_1_bss_888 = .bss:0x00000888; // type:object size:0x2 data:2byte +lbl_1_bss_88A = .bss:0x0000088A; // type:object size:0x100 +lbl_1_bss_98A = .bss:0x0000098A; // type:object size:0x10 data:2byte +lbl_1_bss_99A = .bss:0x0000099A; // type:object size:0x2 data:2byte +lbl_1_bss_99C = .bss:0x0000099C; // type:object size:0x2 data:2byte +lbl_1_bss_9A0 = .bss:0x000009A0; // type:object size:0x4 data:4byte +lbl_1_bss_9A4 = .bss:0x000009A4; // type:object size:0x4 data:4byte +lbl_1_bss_9A8 = .bss:0x000009A8; // type:object size:0x4 data:4byte +lbl_1_bss_9AC = .bss:0x000009AC; // type:object size:0x40 +lbl_1_bss_9EC = .bss:0x000009EC; // type:object size:0x8 +lbl_1_bss_9F4 = .bss:0x000009F4; // type:object size:0x4 data:4byte +lbl_1_bss_9F8 = .bss:0x000009F8; // type:object size:0x8 data:4byte +lbl_1_bss_A00 = .bss:0x00000A00; // type:object size:0x4 data:4byte +lbl_1_bss_A04 = .bss:0x00000A04; // type:object size:0x4 data:4byte +lbl_1_bss_A08 = .bss:0x00000A08; // type:object size:0x2 data:2byte +lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x8 data:float +lbl_1_bss_A14 = .bss:0x00000A14; // type:object size:0x4 data:4byte +lbl_1_bss_A18 = .bss:0x00000A18; // type:object size:0xA4 data:float +lbl_1_bss_ABC = .bss:0x00000ABC; // type:object size:0x4 data:4byte +lbl_1_bss_AC0 = .bss:0x00000AC0; // type:object size:0x8 data:4byte diff --git a/config/GMPP01_00/rels/modeseldll/splits.txt b/config/GMPP01_00/rels/modeseldll/splits.txt new file mode 100644 index 00000000..8dd4d423 --- /dev/null +++ b/config/GMPP01_00/rels/modeseldll/splits.txt @@ -0,0 +1,34 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/modeseldll/main.c: + .text start:0x000000A0 end:0x00002528 + .rodata start:0x00000000 end:0x000000B8 + .data start:0x00000000 end:0x00000080 + .bss start:0x00000000 end:0x00000080 + +REL/modeseldll/modesel.c: + .text start:0x00002528 end:0x00003874 + .rodata start:0x000000B8 end:0x000001B0 + .data start:0x00000080 end:0x00000100 + .bss start:0x00000080 end:0x00000088 + +REL/modeseldll/filesel.c: + .text start:0x00003874 end:0x0000BFDC + .rodata start:0x000001B0 end:0x00000318 + .data start:0x00000100 end:0x00000428 + .bss start:0x00000088 end:0x00000150 + +REL/modeseldll/datalist.c: + .text start:0x0000BFDC end:0x0000C438 + .rodata start:0x00000318 end:0x00000328 + .data start:0x00000428 end:0x00000A2C + .bss start:0x00000150 end:0x000001CA diff --git a/config/GMPP01_00/rels/modeseldll/symbols.txt b/config/GMPP01_00/rels/modeseldll/symbols.txt new file mode 100644 index 00000000..fb5fd9a4 --- /dev/null +++ b/config/GMPP01_00/rels/modeseldll/symbols.txt @@ -0,0 +1,270 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x374 +fn_1_414 = .text:0x00000414; // type:function size:0x678 +fn_1_A8C = .text:0x00000A8C; // type:function size:0xFC +fn_1_B88 = .text:0x00000B88; // type:function size:0x9C +fn_1_C24 = .text:0x00000C24; // type:function size:0x3B4 +fn_1_FD8 = .text:0x00000FD8; // type:function size:0xC2C +fn_1_1C04 = .text:0x00001C04; // type:function size:0x2C4 +fn_1_1EC8 = .text:0x00001EC8; // type:function size:0x90 +fn_1_1F58 = .text:0x00001F58; // type:function size:0x4A8 +fn_1_2400 = .text:0x00002400; // type:function size:0x128 +fn_1_2528 = .text:0x00002528; // type:function size:0x11D8 +fn_1_3700 = .text:0x00003700; // type:function size:0x174 +fn_1_3874 = .text:0x00003874; // type:function size:0x2DC +fn_1_3B50 = .text:0x00003B50; // type:function size:0x1B80 +fn_1_56D0 = .text:0x000056D0; // type:function size:0x19C +fn_1_586C = .text:0x0000586C; // type:function size:0x88 +fn_1_58F4 = .text:0x000058F4; // type:function size:0x35C +fn_1_5C50 = .text:0x00005C50; // type:function size:0x8C +fn_1_5CDC = .text:0x00005CDC; // type:function size:0xF8 +fn_1_5DD4 = .text:0x00005DD4; // type:function size:0x484 +fn_1_6258 = .text:0x00006258; // type:function size:0x1188 +fn_1_73E0 = .text:0x000073E0; // type:function size:0x34C +fn_1_772C = .text:0x0000772C; // type:function size:0x8C +fn_1_77B8 = .text:0x000077B8; // type:function size:0x4C0 +fn_1_7C78 = .text:0x00007C78; // type:function size:0x5B8 +fn_1_8230 = .text:0x00008230; // type:function size:0x288 +fn_1_84B8 = .text:0x000084B8; // type:function size:0x18C +fn_1_8644 = .text:0x00008644; // type:function size:0x6F0 +fn_1_8D34 = .text:0x00008D34; // type:function size:0x11E4 +fn_1_9F18 = .text:0x00009F18; // type:function size:0x38 +fn_1_9F50 = .text:0x00009F50; // type:function size:0xA74 +fn_1_A9C4 = .text:0x0000A9C4; // type:function size:0x1F8 +fn_1_ABBC = .text:0x0000ABBC; // type:function size:0xE14 +fn_1_B9D0 = .text:0x0000B9D0; // type:function size:0x154 +fn_1_BB24 = .text:0x0000BB24; // type:function size:0x60 +fn_1_BB84 = .text:0x0000BB84; // type:function size:0x458 +fn_1_BFDC = .text:0x0000BFDC; // type:function size:0x290 +fn_1_C26C = .text:0x0000C26C; // type:function size:0x154 +fn_1_C3C0 = .text:0x0000C3C0; // type:function size:0x78 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:byte +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 +lbl_1_data_38 = .data:0x00000038; // type:object size:0x22 data:string +lbl_1_data_5A = .data:0x0000005A; // type:object size:0x14 data:string +lbl_1_data_6E = .data:0x0000006E; // type:object size:0x4 +lbl_1_data_72 = .data:0x00000072; // type:object size:0xA data:string +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x4 data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0xC +lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18 +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x18 +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x18 +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x14 data:string +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x9 data:string +lbl_1_data_F1 = .data:0x000000F1; // type:object size:0xF +lbl_1_data_100 = .data:0x00000100; // type:object size:0x11C data:2byte +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x48 data:4byte +lbl_1_data_264 = .data:0x00000264; // type:object size:0x3 +lbl_1_data_267 = .data:0x00000267; // type:object size:0xD +lbl_1_data_274 = .data:0x00000274; // type:object size:0x2 data:string +lbl_1_data_276 = .data:0x00000276; // type:object size:0x2 data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0x8 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:string +lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:string +lbl_1_data_284 = .data:0x00000284; // type:object size:0x4 +lbl_1_data_288 = .data:0x00000288; // type:object size:0xC +lbl_1_data_294 = .data:0x00000294; // type:object size:0x19 data:string +lbl_1_data_2AD = .data:0x000002AD; // type:object size:0x23 data:string +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x1B data:string +lbl_1_data_2EB = .data:0x000002EB; // type:object size:0x19 data:string +lbl_1_data_304 = .data:0x00000304; // type:object size:0x19 data:string +lbl_1_data_31D = .data:0x0000031D; // type:object size:0x20 data:string +lbl_1_data_33D = .data:0x0000033D; // type:object size:0x1B data:string +lbl_1_data_358 = .data:0x00000358; // type:object size:0x1B data:string +lbl_1_data_373 = .data:0x00000373; // type:object size:0x22 data:string +lbl_1_data_395 = .data:0x00000395; // type:object size:0x5 data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0x15 data:string +lbl_1_data_3AF = .data:0x000003AF; // type:object size:0x15 data:string +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x1F data:string +lbl_1_data_3E3 = .data:0x000003E3; // type:object size:0x10 data:string +lbl_1_data_3F3 = .data:0x000003F3; // type:object size:0xD data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x16 +lbl_1_data_416 = .data:0x00000416; // type:object size:0x6 data:string +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x2 data:2byte +lbl_1_data_41E = .data:0x0000041E; // type:object size:0xA +lbl_1_data_428 = .data:0x00000428; // type:object size:0x514 +lbl_1_data_93C = .data:0x0000093C; // type:object size:0xF0 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x18 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x30 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0xC data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0xC data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x8 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x2 data:2byte +lbl_1_bss_82 = .bss:0x00000082; // type:object size:0x6 data:2byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x2 data:2byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:float +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x2 data:2byte +lbl_1_bss_92 = .bss:0x00000092; // type:object size:0x6 +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x6 +lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x6 +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x8 +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0xC +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0xC +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0xC +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x18 +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x6 +lbl_1_bss_EE = .bss:0x000000EE; // type:object size:0x6 +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x4 data:4byte +lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x4 data:4byte +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x4 data:4byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x8 data:float +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x8 data:float +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x6 +lbl_1_bss_116 = .bss:0x00000116; // type:object size:0x6 +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x2 data:2byte +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0xC data:4byte +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x8 data:4byte +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x6 +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x6 +lbl_1_bss_146 = .bss:0x00000146; // type:object size:0x2 data:2byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x2 data:2byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:4byte +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x2 +lbl_1_bss_152 = .bss:0x00000152; // type:object size:0x18 data:2byte +lbl_1_bss_16A = .bss:0x0000016A; // type:object size:0x30 data:2byte +lbl_1_bss_19A = .bss:0x0000019A; // type:object size:0x30 data:2byte diff --git a/config/GMPP01_00/rels/mpexDll/splits.txt b/config/GMPP01_00/rels/mpexDll/splits.txt new file mode 100644 index 00000000..8980a70d --- /dev/null +++ b/config/GMPP01_00/rels/mpexDll/splits.txt @@ -0,0 +1,33 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/mpexDll/main.c: + .text start:0x000000A0 end:0x00003044 + .rodata start:0x00000000 end:0x000000A0 + .data start:0x00000000 end:0x00000240 + .bss start:0x00000000 end:0x000000A8 + +REL/mpexDll/mpex.c: + .text start:0x00003044 end:0x000125C4 + .rodata start:0x000000A0 end:0x00000538 + .data start:0x00000240 end:0x00000510 + .bss start:0x000000A8 end:0x00000440 + +REL/mpexDll/charsel.c: + .text start:0x000125C4 end:0x0001CAF8 + .rodata start:0x00000538 end:0x00000610 + .data start:0x00000510 end:0x00000780 + .bss start:0x00000440 end:0x000006AD + +REL/mpexDll/mgname.c: + .text start:0x0001CAF8 end:0x0001D014 + .rodata start:0x00000610 end:0x00000620 + .data start:0x00000780 end:0x00000C40 diff --git a/config/GMPP01_00/rels/mpexDll/symbols.txt b/config/GMPP01_00/rels/mpexDll/symbols.txt new file mode 100644 index 00000000..caa7e094 --- /dev/null +++ b/config/GMPP01_00/rels/mpexDll/symbols.txt @@ -0,0 +1,475 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0xE8 +fn_1_188 = .text:0x00000188; // type:function size:0x38 +fn_1_1C0 = .text:0x000001C0; // type:function size:0x70 +ObjectSetup = .text:0x00000230; // type:function size:0x68 +fn_1_298 = .text:0x00000298; // type:function size:0xDC +fn_1_374 = .text:0x00000374; // type:function size:0xC4 +fn_1_438 = .text:0x00000438; // type:function size:0x3E4 +fn_1_81C = .text:0x0000081C; // type:function size:0xB8 +fn_1_8D4 = .text:0x000008D4; // type:function size:0x3C +fn_1_910 = .text:0x00000910; // type:function size:0x124 +fn_1_A34 = .text:0x00000A34; // type:function size:0x3C +fn_1_A70 = .text:0x00000A70; // type:function size:0x44 +fn_1_AB4 = .text:0x00000AB4; // type:function size:0x1D0 +fn_1_C84 = .text:0x00000C84; // type:function size:0x1C4 +fn_1_E48 = .text:0x00000E48; // type:function size:0x200 +fn_1_1048 = .text:0x00001048; // type:function size:0x238 +fn_1_1280 = .text:0x00001280; // type:function size:0x39C +fn_1_161C = .text:0x0000161C; // type:function size:0x200 +fn_1_181C = .text:0x0000181C; // type:function size:0x238 +fn_1_1A54 = .text:0x00001A54; // type:function size:0x39C +fn_1_1DF0 = .text:0x00001DF0; // type:function size:0x200 +fn_1_1FF0 = .text:0x00001FF0; // type:function size:0x238 +fn_1_2228 = .text:0x00002228; // type:function size:0x39C +fn_1_25C4 = .text:0x000025C4; // type:function size:0x178 +fn_1_273C = .text:0x0000273C; // type:function size:0x1A0 +fn_1_28DC = .text:0x000028DC; // type:function size:0x4 +fn_1_28E0 = .text:0x000028E0; // type:function size:0x764 +fn_1_3044 = .text:0x00003044; // type:function size:0x294 +fn_1_32D8 = .text:0x000032D8; // type:function size:0xAC +fn_1_3384 = .text:0x00003384; // type:function size:0x74 +fn_1_33F8 = .text:0x000033F8; // type:function size:0x110 +fn_1_3508 = .text:0x00003508; // type:function size:0x19C +fn_1_36A4 = .text:0x000036A4; // type:function size:0xB4 +fn_1_3758 = .text:0x00003758; // type:function size:0x224 +fn_1_397C = .text:0x0000397C; // type:function size:0x78 +fn_1_39F4 = .text:0x000039F4; // type:function size:0x104 +fn_1_3AF8 = .text:0x00003AF8; // type:function size:0x51C +fn_1_4014 = .text:0x00004014; // type:function size:0x98 +fn_1_40AC = .text:0x000040AC; // type:function size:0x98 +fn_1_4144 = .text:0x00004144; // type:function size:0x40 +fn_1_4184 = .text:0x00004184; // type:function size:0x2C8 +fn_1_444C = .text:0x0000444C; // type:function size:0xC8 +fn_1_4514 = .text:0x00004514; // type:function size:0x21C +fn_1_4730 = .text:0x00004730; // type:function size:0x40 +fn_1_4770 = .text:0x00004770; // type:function size:0x2E8 +fn_1_4A58 = .text:0x00004A58; // type:function size:0xE4 +fn_1_4B3C = .text:0x00004B3C; // type:function size:0x3C +fn_1_4B78 = .text:0x00004B78; // type:function size:0xF4 +fn_1_4C6C = .text:0x00004C6C; // type:function size:0x18C +fn_1_4DF8 = .text:0x00004DF8; // type:function size:0x18C +fn_1_4F84 = .text:0x00004F84; // type:function size:0x2B4 +fn_1_5238 = .text:0x00005238; // type:function size:0x2F8 +fn_1_5530 = .text:0x00005530; // type:function size:0x188 +fn_1_56B8 = .text:0x000056B8; // type:function size:0x128 +fn_1_57E0 = .text:0x000057E0; // type:function size:0x3C +fn_1_581C = .text:0x0000581C; // type:function size:0x140 +fn_1_595C = .text:0x0000595C; // type:function size:0x19C +fn_1_5AF8 = .text:0x00005AF8; // type:function size:0x124 +fn_1_5C1C = .text:0x00005C1C; // type:function size:0x124 +fn_1_5D40 = .text:0x00005D40; // type:function size:0x1E88 +fn_1_7BC8 = .text:0x00007BC8; // type:function size:0x1B8 +fn_1_7D80 = .text:0x00007D80; // type:function size:0x244 +fn_1_7FC4 = .text:0x00007FC4; // type:function size:0x1A8 +fn_1_816C = .text:0x0000816C; // type:function size:0x1B4 +fn_1_8320 = .text:0x00008320; // type:function size:0x2A4 +fn_1_85C4 = .text:0x000085C4; // type:function size:0x194 +fn_1_8758 = .text:0x00008758; // type:function size:0x194 +fn_1_88EC = .text:0x000088EC; // type:function size:0xD8 +fn_1_89C4 = .text:0x000089C4; // type:function size:0x118 +fn_1_8ADC = .text:0x00008ADC; // type:function size:0x540 +fn_1_901C = .text:0x0000901C; // type:function size:0x414 +fn_1_9430 = .text:0x00009430; // type:function size:0x284 +fn_1_96B4 = .text:0x000096B4; // type:function size:0x8C +fn_1_9740 = .text:0x00009740; // type:function size:0x150 +fn_1_9890 = .text:0x00009890; // type:function size:0x78 +fn_1_9908 = .text:0x00009908; // type:function size:0x80 +fn_1_9988 = .text:0x00009988; // type:function size:0x33C +fn_1_9CC4 = .text:0x00009CC4; // type:function size:0x98 +fn_1_9D5C = .text:0x00009D5C; // type:function size:0x1A4 +fn_1_9F00 = .text:0x00009F00; // type:function size:0x1D4 +fn_1_A0D4 = .text:0x0000A0D4; // type:function size:0x1C8 +fn_1_A29C = .text:0x0000A29C; // type:function size:0xF8 +fn_1_A394 = .text:0x0000A394; // type:function size:0x264 +fn_1_A5F8 = .text:0x0000A5F8; // type:function size:0x72C +fn_1_AD24 = .text:0x0000AD24; // type:function size:0x2D0 +fn_1_AFF4 = .text:0x0000AFF4; // type:function size:0x20C +fn_1_B200 = .text:0x0000B200; // type:function size:0x38 +fn_1_B238 = .text:0x0000B238; // type:function size:0x9C +fn_1_B2D4 = .text:0x0000B2D4; // type:function size:0x510 +fn_1_B7E4 = .text:0x0000B7E4; // type:function size:0x7C +fn_1_B860 = .text:0x0000B860; // type:function size:0x138 +fn_1_B998 = .text:0x0000B998; // type:function size:0x18C +fn_1_BB24 = .text:0x0000BB24; // type:function size:0xE4 +fn_1_BC08 = .text:0x0000BC08; // type:function size:0xC0 +fn_1_BCC8 = .text:0x0000BCC8; // type:function size:0x38 +fn_1_BD00 = .text:0x0000BD00; // type:function size:0x68 +fn_1_BD68 = .text:0x0000BD68; // type:function size:0x2F4 +fn_1_C05C = .text:0x0000C05C; // type:function size:0x70 +fn_1_C0CC = .text:0x0000C0CC; // type:function size:0x3F8 +fn_1_C4C4 = .text:0x0000C4C4; // type:function size:0x70 +fn_1_C534 = .text:0x0000C534; // type:function size:0x31C +fn_1_C850 = .text:0x0000C850; // type:function size:0x38 +fn_1_C888 = .text:0x0000C888; // type:function size:0x200 +fn_1_CA88 = .text:0x0000CA88; // type:function size:0x420 +fn_1_CEA8 = .text:0x0000CEA8; // type:function size:0x49C +fn_1_D344 = .text:0x0000D344; // type:function size:0xBC +fn_1_D400 = .text:0x0000D400; // type:function size:0x244 +fn_1_D644 = .text:0x0000D644; // type:function size:0x524 +fn_1_DB68 = .text:0x0000DB68; // type:function size:0x5A4 +fn_1_E10C = .text:0x0000E10C; // type:function size:0x210 +fn_1_E31C = .text:0x0000E31C; // type:function size:0x1E4 +fn_1_E500 = .text:0x0000E500; // type:function size:0x5A4 +fn_1_EAA4 = .text:0x0000EAA4; // type:function size:0x25C +fn_1_ED00 = .text:0x0000ED00; // type:function size:0x348 +fn_1_F048 = .text:0x0000F048; // type:function size:0x34C +fn_1_F394 = .text:0x0000F394; // type:function size:0x70 +fn_1_F404 = .text:0x0000F404; // type:function size:0x2B4 +fn_1_F6B8 = .text:0x0000F6B8; // type:function size:0x174 +fn_1_F82C = .text:0x0000F82C; // type:function size:0x4FC +fn_1_FD28 = .text:0x0000FD28; // type:function size:0x3BC +fn_1_100E4 = .text:0x000100E4; // type:function size:0xCC +fn_1_101B0 = .text:0x000101B0; // type:function size:0x40 +fn_1_101F0 = .text:0x000101F0; // type:function size:0x1F4 +fn_1_103E4 = .text:0x000103E4; // type:function size:0x390 +fn_1_10774 = .text:0x00010774; // type:function size:0x70 +fn_1_107E4 = .text:0x000107E4; // type:function size:0x260 +fn_1_10A44 = .text:0x00010A44; // type:function size:0x174 +fn_1_10BB8 = .text:0x00010BB8; // type:function size:0x4C8 +fn_1_11080 = .text:0x00011080; // type:function size:0x3DC +fn_1_1145C = .text:0x0001145C; // type:function size:0xCC +fn_1_11528 = .text:0x00011528; // type:function size:0x40 +fn_1_11568 = .text:0x00011568; // type:function size:0x1F4 +fn_1_1175C = .text:0x0001175C; // type:function size:0x15C +fn_1_118B8 = .text:0x000118B8; // type:function size:0x54 +fn_1_1190C = .text:0x0001190C; // type:function size:0x5C +fn_1_11968 = .text:0x00011968; // type:function size:0x5C +fn_1_119C4 = .text:0x000119C4; // type:function size:0x3EC +fn_1_11DB0 = .text:0x00011DB0; // type:function size:0x198 +fn_1_11F48 = .text:0x00011F48; // type:function size:0x228 +fn_1_12170 = .text:0x00012170; // type:function size:0x3E4 +fn_1_12554 = .text:0x00012554; // type:function size:0x70 +fn_1_125C4 = .text:0x000125C4; // type:function size:0xA0 +fn_1_12664 = .text:0x00012664; // type:function size:0x224 +fn_1_12888 = .text:0x00012888; // type:function size:0x2DC +fn_1_12B64 = .text:0x00012B64; // type:function size:0x2C +fn_1_12B90 = .text:0x00012B90; // type:function size:0x518 +fn_1_130A8 = .text:0x000130A8; // type:function size:0x2C +fn_1_130D4 = .text:0x000130D4; // type:function size:0x28 +fn_1_130FC = .text:0x000130FC; // type:function size:0x274 +fn_1_13370 = .text:0x00013370; // type:function size:0x2C +fn_1_1339C = .text:0x0001339C; // type:function size:0x2C +fn_1_133C8 = .text:0x000133C8; // type:function size:0x24 +fn_1_133EC = .text:0x000133EC; // type:function size:0x2BC +fn_1_136A8 = .text:0x000136A8; // type:function size:0x500 +fn_1_13BA8 = .text:0x00013BA8; // type:function size:0x480 +fn_1_14028 = .text:0x00014028; // type:function size:0x80C +fn_1_14834 = .text:0x00014834; // type:function size:0x28 +fn_1_1485C = .text:0x0001485C; // type:function size:0x28 +fn_1_14884 = .text:0x00014884; // type:function size:0x21C +fn_1_14AA0 = .text:0x00014AA0; // type:function size:0x194 +fn_1_14C34 = .text:0x00014C34; // type:function size:0x198 +fn_1_14DCC = .text:0x00014DCC; // type:function size:0x9C +fn_1_14E68 = .text:0x00014E68; // type:function size:0x2D8 +fn_1_15140 = .text:0x00015140; // type:function size:0x2DC +fn_1_1541C = .text:0x0001541C; // type:function size:0x1E0 +fn_1_155FC = .text:0x000155FC; // type:function size:0xF0 +fn_1_156EC = .text:0x000156EC; // type:function size:0x50 +fn_1_1573C = .text:0x0001573C; // type:function size:0x584 +fn_1_15CC0 = .text:0x00015CC0; // type:function size:0x5D8 +fn_1_16298 = .text:0x00016298; // type:function size:0x2E0 +fn_1_16578 = .text:0x00016578; // type:function size:0x274 +fn_1_167EC = .text:0x000167EC; // type:function size:0x7C +fn_1_16868 = .text:0x00016868; // type:function size:0x44C +fn_1_16CB4 = .text:0x00016CB4; // type:function size:0x434 +fn_1_170E8 = .text:0x000170E8; // type:function size:0x204 +fn_1_172EC = .text:0x000172EC; // type:function size:0x790 +fn_1_17A7C = .text:0x00017A7C; // type:function size:0xB0C +fn_1_18588 = .text:0x00018588; // type:function size:0x720 +fn_1_18CA8 = .text:0x00018CA8; // type:function size:0x9C +fn_1_18D44 = .text:0x00018D44; // type:function size:0xCCC +fn_1_19A10 = .text:0x00019A10; // type:function size:0x924 +fn_1_1A334 = .text:0x0001A334; // type:function size:0x1E8 +fn_1_1A51C = .text:0x0001A51C; // type:function size:0x958 +fn_1_1AE74 = .text:0x0001AE74; // type:function size:0x7C +fn_1_1AEF0 = .text:0x0001AEF0; // type:function size:0x164 +fn_1_1B054 = .text:0x0001B054; // type:function size:0x1B8 +fn_1_1B20C = .text:0x0001B20C; // type:function size:0xA4 +fn_1_1B2B0 = .text:0x0001B2B0; // type:function size:0xF4 +fn_1_1B3A4 = .text:0x0001B3A4; // type:function size:0x80 +fn_1_1B424 = .text:0x0001B424; // type:function size:0x80 +fn_1_1B4A4 = .text:0x0001B4A4; // type:function size:0x28 +fn_1_1B4CC = .text:0x0001B4CC; // type:function size:0x20 +fn_1_1B4EC = .text:0x0001B4EC; // type:function size:0xD8 +fn_1_1B5C4 = .text:0x0001B5C4; // type:function size:0xC8 +fn_1_1B68C = .text:0x0001B68C; // type:function size:0xBC +fn_1_1B748 = .text:0x0001B748; // type:function size:0x40 +fn_1_1B788 = .text:0x0001B788; // type:function size:0x24 +fn_1_1B7AC = .text:0x0001B7AC; // type:function size:0x1C0 +fn_1_1B96C = .text:0x0001B96C; // type:function size:0x84 +fn_1_1B9F0 = .text:0x0001B9F0; // type:function size:0xD4 +fn_1_1BAC4 = .text:0x0001BAC4; // type:function size:0x58 +fn_1_1BB1C = .text:0x0001BB1C; // type:function size:0x15C +fn_1_1BC78 = .text:0x0001BC78; // type:function size:0x21C +fn_1_1BE94 = .text:0x0001BE94; // type:function size:0x204 +fn_1_1C098 = .text:0x0001C098; // type:function size:0x54 +fn_1_1C0EC = .text:0x0001C0EC; // type:function size:0x304 +fn_1_1C3F0 = .text:0x0001C3F0; // type:function size:0x304 +fn_1_1C6F4 = .text:0x0001C6F4; // type:function size:0x340 +fn_1_1CA34 = .text:0x0001CA34; // type:function size:0xC4 +fn_1_1CB80 = .text:0x0001CAF8; // type:function size:0x3B0 +fn_1_1D02C = .text:0x0001CEA8; // type:function size:0x16C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0xC data:4byte +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0xC data:4byte +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x78 +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0xC data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC data:4byte +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC data:4byte +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:4byte +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xB4 +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x6C +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x2C data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0xB0 +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0xC data:4byte +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x18 data:4byte +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC data:4byte +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 data:double +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x38 data:4byte +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4F data:string +lbl_1_data_4F = .data:0x0000004F; // type:object size:0x50 data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0x50 data:string +lbl_1_data_EF = .data:0x000000EF; // type:object size:0x4E data:string +lbl_1_data_13D = .data:0x0000013D; // type:object size:0x50 data:string +lbl_1_data_18D = .data:0x0000018D; // type:object size:0x4F data:string +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 data:string +lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A data:string +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1A data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0xE scope:local data:string +lbl_1_data_240 = .data:0x00000240; // type:object size:0x54 data:float +lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:4byte +lbl_1_data_298 = .data:0x00000298; // type:object size:0x4 data:4byte +lbl_1_data_29C = .data:0x0000029C; // type:object size:0x18 +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x10 data:4byte +lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x4 data:4byte +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x3 data:string +lbl_1_data_2CB = .data:0x000002CB; // type:object size:0x5 data:string +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x19 data:string +lbl_1_data_2E9 = .data:0x000002E9; // type:object size:0x12 data:string +lbl_1_data_2FB = .data:0x000002FB; // type:object size:0x29 +lbl_1_data_324 = .data:0x00000324; // type:object size:0x4 data:4byte +lbl_1_data_328 = .data:0x00000328; // type:object size:0x4 data:4byte +lbl_1_data_32C = .data:0x0000032C; // type:object size:0xC data:4byte +lbl_1_data_338 = .data:0x00000338; // type:object size:0x2B data:string +lbl_1_data_363 = .data:0x00000363; // type:object size:0x28 data:string +lbl_1_data_38B = .data:0x0000038B; // type:object size:0x4 data:string +lbl_1_data_38F = .data:0x0000038F; // type:object size:0x5 +jumptable_1_data_394 = .data:0x00000394; // type:object size:0x2C scope:local +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x3C data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x16 data:string +lbl_1_data_412 = .data:0x00000412; // type:object size:0x1A data:string +lbl_1_data_42C = .data:0x0000042C; // type:object size:0x1A data:string +lbl_1_data_446 = .data:0x00000446; // type:object size:0x1A data:string +lbl_1_data_460 = .data:0x00000460; // type:object size:0x17 data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x16 data:string +lbl_1_data_48D = .data:0x0000048D; // type:object size:0x16 data:string +lbl_1_data_4A3 = .data:0x000004A3; // type:object size:0x19 data:string +lbl_1_data_4BC = .data:0x000004BC; // type:object size:0x16 data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x3E +lbl_1_data_510 = .data:0x00000510; // type:object size:0x3C data:string +lbl_1_data_54C = .data:0x0000054C; // type:object size:0x19 data:string +lbl_1_data_565 = .data:0x00000565; // type:object size:0x1A data:string +lbl_1_data_57F = .data:0x0000057F; // type:object size:0x3D +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x20 data:4byte +lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x40 data:4byte +lbl_1_data_61C = .data:0x0000061C; // type:object size:0x70 +lbl_1_data_68C = .data:0x0000068C; // type:object size:0x90 data:4byte +lbl_1_data_71C = .data:0x0000071C; // type:object size:0x20 +lbl_1_data_73C = .data:0x0000073C; // type:object size:0x8 data:4byte +lbl_1_data_744 = .data:0x00000744; // type:object size:0x10 +lbl_1_data_754 = .data:0x00000754; // type:object size:0x20 +lbl_1_data_774 = .data:0x00000774; // type:object size:0x4 data:4byte +lbl_1_data_778 = .data:0x00000778; // type:object size:0x8 data:4byte +fontDataTbl = .data:0x00000780; // type:object size:0x4C0 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x64 data:4byte +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:float +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:4byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x18 +lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x8 +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x8 +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x8 +lbl_1_bss_FC = .bss:0x000000FC; // type:object size:0x8 +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x4 data:4byte +lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x8 +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x8 +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x10 +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x50 +lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x2C data:4byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 data:4byte +lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 data:4byte +lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0x120 data:4byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0xD8 data:4byte +lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x48 data:4byte +lbl_1_bss_3F8 = .bss:0x000003F8; // type:object size:0x48 data:4byte +lbl_1_bss_440 = .bss:0x00000440; // type:object size:0x4 data:4byte +lbl_1_bss_444 = .bss:0x00000444; // type:object size:0x4 data:4byte +lbl_1_bss_448 = .bss:0x00000448; // type:object size:0x14 data:4byte +lbl_1_bss_45C = .bss:0x0000045C; // type:object size:0x180 data:4byte +lbl_1_bss_5DC = .bss:0x000005DC; // type:object size:0x60 data:4byte +lbl_1_bss_63C = .bss:0x0000063C; // type:object size:0x70 data:4byte +lbl_1_bss_6AC = .bss:0x000006AC; // type:object size:0x1 data:byte diff --git a/config/GMPP01_00/rels/msetupDll/splits.txt b/config/GMPP01_00/rels/msetupDll/splits.txt new file mode 100644 index 00000000..e787a0ee --- /dev/null +++ b/config/GMPP01_00/rels/msetupDll/splits.txt @@ -0,0 +1,3 @@ +Sections: + .ctors type:rodata align:4 + .dtors type:rodata align:4 diff --git a/config/GMPP01_00/rels/msetupDll/symbols.txt b/config/GMPP01_00/rels/msetupDll/symbols.txt new file mode 100644 index 00000000..120e2d17 --- /dev/null +++ b/config/GMPP01_00/rels/msetupDll/symbols.txt @@ -0,0 +1,2 @@ +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global diff --git a/config/GMPP01_00/rels/mstory2Dll/splits.txt b/config/GMPP01_00/rels/mstory2Dll/splits.txt new file mode 100644 index 00000000..cb297417 --- /dev/null +++ b/config/GMPP01_00/rels/mstory2Dll/splits.txt @@ -0,0 +1,54 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B5A4 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B5A4 end:0x0001B9A0 + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPP01_00/rels/mstory2Dll/symbols.txt b/config/GMPP01_00/rels/mstory2Dll/symbols.txt new file mode 100644 index 00000000..331d554e --- /dev/null +++ b/config/GMPP01_00/rels/mstory2Dll/symbols.txt @@ -0,0 +1,709 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2A0 +_prolog = .text:0x00000344; // type:function size:0x54 scope:global +_epilog = .text:0x00000398; // type:function size:0x4C scope:global +fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 +fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 +fn_1_864 = .text:0x00000864; // type:function size:0x28 +fn_1_88C = .text:0x0000088C; // type:function size:0x20 +fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 +fn_1_984 = .text:0x00000984; // type:function size:0xC8 +fn_1_A4C = .text:0x00000A4C; // type:function size:0xBC +fn_1_B08 = .text:0x00000B08; // type:function size:0xBC +fn_1_BC4 = .text:0x00000BC4; // type:function size:0x4 +fn_1_BC8 = .text:0x00000BC8; // type:function size:0x20 +fn_1_BE8 = .text:0x00000BE8; // type:function size:0x28 +fn_1_C10 = .text:0x00000C10; // type:function size:0x20 +fn_1_C30 = .text:0x00000C30; // type:function size:0x24 +fn_1_C54 = .text:0x00000C54; // type:function size:0x4 +fn_1_C58 = .text:0x00000C58; // type:function size:0xA48 +fn_1_16A0 = .text:0x000016A0; // type:function size:0x1BC +fn_1_185C = .text:0x0000185C; // type:function size:0x1D8 +fn_1_1A34 = .text:0x00001A34; // type:function size:0x60 +fn_1_1A94 = .text:0x00001A94; // type:function size:0x68 +fn_1_1AFC = .text:0x00001AFC; // type:function size:0xAC +fn_1_1BA8 = .text:0x00001BA8; // type:function size:0xBC +fn_1_1C64 = .text:0x00001C64; // type:function size:0xB4 +fn_1_1D18 = .text:0x00001D18; // type:function size:0x34 +fn_1_1D4C = .text:0x00001D4C; // type:function size:0x40 +fn_1_1D8C = .text:0x00001D8C; // type:function size:0x70 +fn_1_1DFC = .text:0x00001DFC; // type:function size:0x188 +fn_1_1F84 = .text:0x00001F84; // type:function size:0x2E0 +fn_1_2264 = .text:0x00002264; // type:function size:0x90 +fn_1_22F4 = .text:0x000022F4; // type:function size:0x48 +fn_1_233C = .text:0x0000233C; // type:function size:0x54 +fn_1_2390 = .text:0x00002390; // type:function size:0x3C0 +fn_1_2750 = .text:0x00002750; // type:function size:0x10 +fn_1_2760 = .text:0x00002760; // type:function size:0x10 +fn_1_2770 = .text:0x00002770; // type:function size:0xB8 +fn_1_2828 = .text:0x00002828; // type:function size:0x120 +fn_1_2948 = .text:0x00002948; // type:function size:0x3B8 +fn_1_2D00 = .text:0x00002D00; // type:function size:0x7F4 +fn_1_34F4 = .text:0x000034F4; // type:function size:0x88 +fn_1_357C = .text:0x0000357C; // type:function size:0x94 +fn_1_3610 = .text:0x00003610; // type:function size:0x58 +fn_1_3668 = .text:0x00003668; // type:function size:0xEC +fn_1_3754 = .text:0x00003754; // type:function size:0xC4 +fn_1_3818 = .text:0x00003818; // type:function size:0x3C +fn_1_3854 = .text:0x00003854; // type:function size:0x44 +fn_1_3898 = .text:0x00003898; // type:function size:0x26C +fn_1_3B04 = .text:0x00003B04; // type:function size:0x26C +fn_1_3D70 = .text:0x00003D70; // type:function size:0x27C +fn_1_3FEC = .text:0x00003FEC; // type:function size:0x2B4 +fn_1_42A0 = .text:0x000042A0; // type:function size:0x46C +fn_1_470C = .text:0x0000470C; // type:function size:0x454 +fn_1_4B60 = .text:0x00004B60; // type:function size:0x48C +fn_1_4FEC = .text:0x00004FEC; // type:function size:0x658 +fn_1_5644 = .text:0x00005644; // type:function size:0x4C4 +fn_1_5B08 = .text:0x00005B08; // type:function size:0x4FC +fn_1_6004 = .text:0x00006004; // type:function size:0x6C8 +fn_1_66CC = .text:0x000066CC; // type:function size:0x38 +fn_1_6704 = .text:0x00006704; // type:function size:0xD4 +fn_1_67D8 = .text:0x000067D8; // type:function size:0x198 +fn_1_6970 = .text:0x00006970; // type:function size:0x34 +fn_1_69A4 = .text:0x000069A4; // type:function size:0x40 +fn_1_69E4 = .text:0x000069E4; // type:function size:0xAC +fn_1_6A90 = .text:0x00006A90; // type:function size:0x2E8 +fn_1_6D78 = .text:0x00006D78; // type:function size:0x44 +fn_1_6DBC = .text:0x00006DBC; // type:function size:0x1F4 +fn_1_6FB0 = .text:0x00006FB0; // type:function size:0xB4 +fn_1_7064 = .text:0x00007064; // type:function size:0x178 +fn_1_71DC = .text:0x000071DC; // type:function size:0x68 +fn_1_7244 = .text:0x00007244; // type:function size:0x140 +fn_1_7384 = .text:0x00007384; // type:function size:0xA2C +fn_1_7DB0 = .text:0x00007DB0; // type:function size:0x1A4 +fn_1_7F54 = .text:0x00007F54; // type:function size:0x118 +fn_1_806C = .text:0x0000806C; // type:function size:0x8C +fn_1_80F8 = .text:0x000080F8; // type:function size:0x488 +fn_1_8580 = .text:0x00008580; // type:function size:0x5C +fn_1_85DC = .text:0x000085DC; // type:function size:0x1F8 +fn_1_87D4 = .text:0x000087D4; // type:function size:0x2E8 +fn_1_8ABC = .text:0x00008ABC; // type:function size:0x578 +fn_1_9034 = .text:0x00009034; // type:function size:0x164 +fn_1_9198 = .text:0x00009198; // type:function size:0x124 +fn_1_92BC = .text:0x000092BC; // type:function size:0x4AC +fn_1_9768 = .text:0x00009768; // type:function size:0xB4 +fn_1_981C = .text:0x0000981C; // type:function size:0x138 +fn_1_9954 = .text:0x00009954; // type:function size:0xBC +fn_1_9A10 = .text:0x00009A10; // type:function size:0x1C4 +fn_1_9BD4 = .text:0x00009BD4; // type:function size:0xE4 +fn_1_9CB8 = .text:0x00009CB8; // type:function size:0x214 +fn_1_9ECC = .text:0x00009ECC; // type:function size:0x110 +fn_1_9FDC = .text:0x00009FDC; // type:function size:0x2AC +fn_1_A288 = .text:0x0000A288; // type:function size:0x220 +fn_1_A4A8 = .text:0x0000A4A8; // type:function size:0xE4 +fn_1_A58C = .text:0x0000A58C; // type:function size:0x2BC +fn_1_A848 = .text:0x0000A848; // type:function size:0x2C8 +fn_1_AB10 = .text:0x0000AB10; // type:function size:0x2A0 +fn_1_ADB0 = .text:0x0000ADB0; // type:function size:0xAC +fn_1_AE5C = .text:0x0000AE5C; // type:function size:0x364 +fn_1_B1C0 = .text:0x0000B1C0; // type:function size:0x8C +fn_1_B24C = .text:0x0000B24C; // type:function size:0x130 +fn_1_B37C = .text:0x0000B37C; // type:function size:0x68 +fn_1_B3E4 = .text:0x0000B3E4; // type:function size:0x134 +fn_1_B518 = .text:0x0000B518; // type:function size:0x8C +fn_1_B5A4 = .text:0x0000B5A4; // type:function size:0x3E0 +fn_1_B984 = .text:0x0000B984; // type:function size:0x5C +fn_1_B9E0 = .text:0x0000B9E0; // type:function size:0xB0 +fn_1_BA90 = .text:0x0000BA90; // type:function size:0x360 +fn_1_BDF0 = .text:0x0000BDF0; // type:function size:0x158 +fn_1_BF48 = .text:0x0000BF48; // type:function size:0x328 +fn_1_C270 = .text:0x0000C270; // type:function size:0x250 +fn_1_C4C0 = .text:0x0000C4C0; // type:function size:0xB4 +fn_1_C574 = .text:0x0000C574; // type:function size:0x228 +fn_1_C79C = .text:0x0000C79C; // type:function size:0xBC +fn_1_C858 = .text:0x0000C858; // type:function size:0x2B4 +fn_1_CB0C = .text:0x0000CB0C; // type:function size:0x1C0 +fn_1_CCCC = .text:0x0000CCCC; // type:function size:0xAC +fn_1_CD78 = .text:0x0000CD78; // type:function size:0x2B8 +fn_1_D030 = .text:0x0000D030; // type:function size:0x1F4 +fn_1_D224 = .text:0x0000D224; // type:function size:0xAC +fn_1_D2D0 = .text:0x0000D2D0; // type:function size:0xC4 +fn_1_D394 = .text:0x0000D394; // type:function size:0xE4 +fn_1_D478 = .text:0x0000D478; // type:function size:0x2EC +fn_1_D764 = .text:0x0000D764; // type:function size:0x134 +fn_1_D898 = .text:0x0000D898; // type:function size:0x2C0 +fn_1_DB58 = .text:0x0000DB58; // type:function size:0xFC +fn_1_DC54 = .text:0x0000DC54; // type:function size:0x170 +fn_1_DDC4 = .text:0x0000DDC4; // type:function size:0x3F4 +fn_1_E1B8 = .text:0x0000E1B8; // type:function size:0x8C +fn_1_E244 = .text:0x0000E244; // type:function size:0xF0 +fn_1_E334 = .text:0x0000E334; // type:function size:0x23C +fn_1_E570 = .text:0x0000E570; // type:function size:0xC8 +fn_1_E638 = .text:0x0000E638; // type:function size:0x2B4 +fn_1_E8EC = .text:0x0000E8EC; // type:function size:0x140 +fn_1_EA2C = .text:0x0000EA2C; // type:function size:0x134 +fn_1_EB60 = .text:0x0000EB60; // type:function size:0x8C +fn_1_EBEC = .text:0x0000EBEC; // type:function size:0x3E0 +fn_1_EFCC = .text:0x0000EFCC; // type:function size:0x5C +fn_1_F028 = .text:0x0000F028; // type:function size:0x128 +fn_1_F150 = .text:0x0000F150; // type:function size:0xDC +fn_1_F22C = .text:0x0000F22C; // type:function size:0xD0 +fn_1_F2FC = .text:0x0000F2FC; // type:function size:0xD4 +fn_1_F3D0 = .text:0x0000F3D0; // type:function size:0x468 +fn_1_F838 = .text:0x0000F838; // type:function size:0x4 +fn_1_F83C = .text:0x0000F83C; // type:function size:0x78 +fn_1_F8B4 = .text:0x0000F8B4; // type:function size:0x548 +fn_1_FDFC = .text:0x0000FDFC; // type:function size:0xB4 +fn_1_FEB0 = .text:0x0000FEB0; // type:function size:0x228 +fn_1_100D8 = .text:0x000100D8; // type:function size:0xBC +fn_1_10194 = .text:0x00010194; // type:function size:0x2B4 +fn_1_10448 = .text:0x00010448; // type:function size:0x1BC +fn_1_10604 = .text:0x00010604; // type:function size:0xAC +fn_1_106B0 = .text:0x000106B0; // type:function size:0x29C +fn_1_1094C = .text:0x0001094C; // type:function size:0x2B4 +fn_1_10C00 = .text:0x00010C00; // type:function size:0x1F4 +fn_1_10DF4 = .text:0x00010DF4; // type:function size:0xAC +fn_1_10EA0 = .text:0x00010EA0; // type:function size:0xE4 +fn_1_10F84 = .text:0x00010F84; // type:function size:0xC4 +fn_1_11048 = .text:0x00011048; // type:function size:0xE4 +fn_1_1112C = .text:0x0001112C; // type:function size:0x2EC +fn_1_11418 = .text:0x00011418; // type:function size:0x134 +fn_1_1154C = .text:0x0001154C; // type:function size:0x2EC +fn_1_11838 = .text:0x00011838; // type:function size:0xFC +fn_1_11934 = .text:0x00011934; // type:function size:0x164 +fn_1_11A98 = .text:0x00011A98; // type:function size:0x118 +fn_1_11BB0 = .text:0x00011BB0; // type:function size:0x420 +fn_1_11FD0 = .text:0x00011FD0; // type:function size:0x8C +fn_1_1205C = .text:0x0001205C; // type:function size:0x130 +fn_1_1218C = .text:0x0001218C; // type:function size:0x23C +fn_1_123C8 = .text:0x000123C8; // type:function size:0x1A4 +fn_1_1256C = .text:0x0001256C; // type:function size:0x124 +fn_1_12690 = .text:0x00012690; // type:function size:0x8C +fn_1_1271C = .text:0x0001271C; // type:function size:0x3AC +fn_1_12AC8 = .text:0x00012AC8; // type:function size:0x48 +fn_1_12B10 = .text:0x00012B10; // type:function size:0x2C4 +fn_1_12DD4 = .text:0x00012DD4; // type:function size:0x37C +fn_1_13150 = .text:0x00013150; // type:function size:0x70 +fn_1_131C0 = .text:0x000131C0; // type:function size:0xA4 +fn_1_13264 = .text:0x00013264; // type:function size:0x5C4 +fn_1_13828 = .text:0x00013828; // type:function size:0xA4 +fn_1_138CC = .text:0x000138CC; // type:function size:0x14C +fn_1_13A18 = .text:0x00013A18; // type:function size:0x1A0 +fn_1_13BB8 = .text:0x00013BB8; // type:function size:0xB4 +fn_1_13C6C = .text:0x00013C6C; // type:function size:0x348 +fn_1_13FB4 = .text:0x00013FB4; // type:function size:0xEC +fn_1_140A0 = .text:0x000140A0; // type:function size:0xCC +fn_1_1416C = .text:0x0001416C; // type:function size:0x330 +fn_1_1449C = .text:0x0001449C; // type:function size:0x3CC +fn_1_14868 = .text:0x00014868; // type:function size:0x234 +fn_1_14A9C = .text:0x00014A9C; // type:function size:0xAC +fn_1_14B48 = .text:0x00014B48; // type:function size:0xF8 +fn_1_14C40 = .text:0x00014C40; // type:function size:0x32C +fn_1_14F6C = .text:0x00014F6C; // type:function size:0x1C8 +fn_1_15134 = .text:0x00015134; // type:function size:0xAC +fn_1_151E0 = .text:0x000151E0; // type:function size:0xE4 +fn_1_152C4 = .text:0x000152C4; // type:function size:0xE4 +fn_1_153A8 = .text:0x000153A8; // type:function size:0x2C0 +fn_1_15668 = .text:0x00015668; // type:function size:0xE4 +fn_1_1574C = .text:0x0001574C; // type:function size:0x1F8 +fn_1_15944 = .text:0x00015944; // type:function size:0xAC +fn_1_159F0 = .text:0x000159F0; // type:function size:0x2EC +fn_1_15CDC = .text:0x00015CDC; // type:function size:0x8C +fn_1_15D68 = .text:0x00015D68; // type:function size:0xF0 +fn_1_15E58 = .text:0x00015E58; // type:function size:0x118 +fn_1_15F70 = .text:0x00015F70; // type:function size:0xF0 +fn_1_16060 = .text:0x00016060; // type:function size:0x118 +fn_1_16178 = .text:0x00016178; // type:function size:0x8C +fn_1_16204 = .text:0x00016204; // type:function size:0x3AC +fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C +fn_1_1660C = .text:0x0001660C; // type:function size:0x110 +fn_1_1671C = .text:0x0001671C; // type:function size:0x194 +fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 +fn_1_16984 = .text:0x00016984; // type:function size:0x50 +fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 +fn_1_169D8 = .text:0x000169D8; // type:function size:0xF4 +fn_1_16ACC = .text:0x00016ACC; // type:function size:0x4F4 +fn_1_16FC0 = .text:0x00016FC0; // type:function size:0xB4 +fn_1_17074 = .text:0x00017074; // type:function size:0x208 +fn_1_1727C = .text:0x0001727C; // type:function size:0xBC +fn_1_17338 = .text:0x00017338; // type:function size:0x294 +fn_1_175CC = .text:0x000175CC; // type:function size:0x180 +fn_1_1774C = .text:0x0001774C; // type:function size:0xAC +fn_1_177F8 = .text:0x000177F8; // type:function size:0x278 +fn_1_17A70 = .text:0x00017A70; // type:function size:0x128 +fn_1_17B98 = .text:0x00017B98; // type:function size:0xAC +fn_1_17C44 = .text:0x00017C44; // type:function size:0x220 +fn_1_17E64 = .text:0x00017E64; // type:function size:0xE4 +fn_1_17F48 = .text:0x00017F48; // type:function size:0x190 +fn_1_180D8 = .text:0x000180D8; // type:function size:0xAC +fn_1_18184 = .text:0x00018184; // type:function size:0x284 +fn_1_18408 = .text:0x00018408; // type:function size:0x8C +fn_1_18494 = .text:0x00018494; // type:function size:0x23C +fn_1_186D0 = .text:0x000186D0; // type:function size:0x220 +fn_1_188F0 = .text:0x000188F0; // type:function size:0x144 +fn_1_18A34 = .text:0x00018A34; // type:function size:0x8C +fn_1_18AC0 = .text:0x00018AC0; // type:function size:0x3BC +fn_1_18E7C = .text:0x00018E7C; // type:function size:0x48 +fn_1_18EC4 = .text:0x00018EC4; // type:function size:0x274 +fn_1_19138 = .text:0x00019138; // type:function size:0x1FC +fn_1_19334 = .text:0x00019334; // type:function size:0x6B0 +fn_1_199A0 = .text:0x000199E4; // type:function size:0x248 +fn_1_19BE8 = .text:0x00019C2C; // type:function size:0x84 +fn_1_19C6C = .text:0x00019CB0; // type:function size:0x2A8 +fn_1_19F14 = .text:0x00019F58; // type:function size:0xB4 +fn_1_19FC8 = .text:0x0001A00C; // type:function size:0x198 +fn_1_1A160 = .text:0x0001A1A4; // type:function size:0x208 +fn_1_1A368 = .text:0x0001A3AC; // type:function size:0x1D0 +fn_1_1A538 = .text:0x0001A57C; // type:function size:0x40 +fn_1_1A578 = .text:0x0001A5BC; // type:function size:0x254 +fn_1_1A7CC = .text:0x0001A810; // type:function size:0x204 +fn_1_1A9D0 = .text:0x0001AA14; // type:function size:0xE4 +fn_1_1AAB4 = .text:0x0001AAF8; // type:function size:0x288 +fn_1_1AD3C = .text:0x0001AD80; // type:function size:0xE4 +fn_1_1AE20 = .text:0x0001AE64; // type:function size:0x1B4 +fn_1_1AFD4 = .text:0x0001B018; // type:function size:0x110 +fn_1_1B0E4 = .text:0x0001B128; // type:function size:0x234 +fn_1_1B318 = .text:0x0001B35C; // type:function size:0x8C +fn_1_1B3A4 = .text:0x0001B3E8; // type:function size:0x8C +fn_1_1B430 = .text:0x0001B474; // type:function size:0x130 +fn_1_1B560 = .text:0x0001B5A4; // type:function size:0xEC +fn_1_1B64C = .text:0x0001B690; // type:function size:0x224 +fn_1_1B870 = .text:0x0001B8B4; // type:function size:0x9C +fn_1_1B90C = .text:0x0001B950; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local +lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string +jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local +jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local +lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 +lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 scope:local +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string +lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 +lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 +lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 +lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte +lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB scope:local +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 scope:local +lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 +lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte +lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte +lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string +lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x40 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x28 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x28 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x28 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x28 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x28 data:4byte +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x104 data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x4 data:4byte +lbl_1_bss_29C = .bss:0x0000029C; // type:object size:0xA0 +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x28 data:4byte +lbl_1_bss_364 = .bss:0x00000364; // type:object size:0x28 data:4byte +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x28 data:4byte +lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x28 data:4byte +lbl_1_bss_3DC = .bss:0x000003DC; // type:object size:0x104 data:4byte +lbl_1_bss_4E0 = .bss:0x000004E0; // type:object size:0x4 data:4byte +lbl_1_bss_4E4 = .bss:0x000004E4; // type:object size:0x4 data:4byte +lbl_1_bss_4E8 = .bss:0x000004E8; // type:object size:0x60 data:4byte +lbl_1_bss_548 = .bss:0x00000548; // type:object size:0xA0 +lbl_1_bss_5E8 = .bss:0x000005E8; // type:object size:0x28 data:4byte +lbl_1_bss_610 = .bss:0x00000610; // type:object size:0x28 data:4byte +lbl_1_bss_638 = .bss:0x00000638; // type:object size:0x28 data:4byte +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x28 data:4byte +lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x108 data:float +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x28 data:4byte +lbl_1_bss_7C0 = .bss:0x000007C0; // type:object size:0x28 data:4byte +lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x28 data:4byte +lbl_1_bss_810 = .bss:0x00000810; // type:object size:0x28 data:4byte +lbl_1_bss_838 = .bss:0x00000838; // type:object size:0x28 data:4byte +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x108 data:4byte +lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x4 data:4byte +lbl_1_bss_96C = .bss:0x0000096C; // type:object size:0x28 data:4byte +lbl_1_bss_994 = .bss:0x00000994; // type:object size:0x28 data:4byte +lbl_1_bss_9BC = .bss:0x000009BC; // type:object size:0x28 data:4byte +lbl_1_bss_9E4 = .bss:0x000009E4; // type:object size:0x28 data:4byte +lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x28 data:4byte +lbl_1_bss_A34 = .bss:0x00000A34; // type:object size:0x104 data:4byte +lbl_1_bss_B38 = .bss:0x00000B38; // type:object size:0x4 data:4byte +lbl_1_bss_B3C = .bss:0x00000B3C; // type:object size:0x4 data:4byte +lbl_1_bss_B40 = .bss:0x00000B40; // type:object size:0x4 data:4byte +lbl_1_bss_B44 = .bss:0x00000B44; // type:object size:0x28 data:4byte +lbl_1_bss_B6C = .bss:0x00000B6C; // type:object size:0x28 data:4byte +lbl_1_bss_B94 = .bss:0x00000B94; // type:object size:0x28 data:4byte +lbl_1_bss_BBC = .bss:0x00000BBC; // type:object size:0x28 data:4byte +lbl_1_bss_BE4 = .bss:0x00000BE4; // type:object size:0x28 data:4byte +lbl_1_bss_C0C = .bss:0x00000C0C; // type:object size:0x104 data:float +lbl_1_bss_D10 = .bss:0x00000D10; // type:object size:0x4 data:4byte +lbl_1_bss_D14 = .bss:0x00000D14; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/mstory3Dll/splits.txt b/config/GMPP01_00/rels/mstory3Dll/splits.txt new file mode 100644 index 00000000..6d23734f --- /dev/null +++ b/config/GMPP01_00/rels/mstory3Dll/splits.txt @@ -0,0 +1,31 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory3Dll/main.c: + .text start:0x00000000 end:0x00006E34 + .rodata start:0x00000000 end:0x00000110 + .data start:0x00000000 end:0x00000130 + .bss start:0x00000000 end:0x00000058 + +REL/mstory3Dll/result_seq.c: + .text start:0x00006E34 end:0x000157F0 + .rodata start:0x00000110 end:0x00000418 + .data start:0x00000130 end:0x000007E0 + .bss start:0x00000058 end:0x000018D0 + +REL/mstory3Dll/result.c: + .text start:0x000157F0 end:0x0001DED8 + .rodata start:0x00000418 end:0x000005D0 + .data start:0x000007E0 end:0x00000A90 + .bss start:0x000018D0 end:0x00001CE8 + +REL/mstory3Dll/win_effect.c: + .text start:0x0001DED8 end:0x0001F100 + .rodata start:0x000005D0 end:0x00000644 + .data start:0x00000A90 end:0x00000AAB + .bss start:0x00001CE8 end:0x00001D50 diff --git a/config/GMPP01_00/rels/mstory3Dll/symbols.txt b/config/GMPP01_00/rels/mstory3Dll/symbols.txt new file mode 100644 index 00000000..4863cac3 --- /dev/null +++ b/config/GMPP01_00/rels/mstory3Dll/symbols.txt @@ -0,0 +1,550 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2C8 +_prolog = .text:0x0000036C; // type:function size:0x54 scope:global +_epilog = .text:0x000003C0; // type:function size:0x4C scope:global +fn_1_40C = .text:0x0000040C; // type:function size:0xE4 +ObjectSetup = .text:0x000004F0; // type:function size:0xE4 +fn_1_5D4 = .text:0x000005D4; // type:function size:0x28 +fn_1_5FC = .text:0x000005FC; // type:function size:0x20 +fn_1_61C = .text:0x0000061C; // type:function size:0xD8 +fn_1_6F4 = .text:0x000006F4; // type:function size:0xC8 +fn_1_7BC = .text:0x000007BC; // type:function size:0xBC +fn_1_878 = .text:0x00000878; // type:function size:0xBC +fn_1_934 = .text:0x00000934; // type:function size:0x4 +fn_1_938 = .text:0x00000938; // type:function size:0x20 +fn_1_958 = .text:0x00000958; // type:function size:0x28 +fn_1_980 = .text:0x00000980; // type:function size:0x20 +fn_1_9A0 = .text:0x000009A0; // type:function size:0x24 +fn_1_9C4 = .text:0x000009C4; // type:function size:0x20 +fn_1_9E4 = .text:0x000009E4; // type:function size:0xA48 +fn_1_142C = .text:0x0000142C; // type:function size:0x1F8 +fn_1_1624 = .text:0x00001624; // type:function size:0x210 +fn_1_1834 = .text:0x00001834; // type:function size:0x1F0 +fn_1_1A24 = .text:0x00001A24; // type:function size:0x2C +fn_1_1A50 = .text:0x00001A50; // type:function size:0x60 +fn_1_1AB0 = .text:0x00001AB0; // type:function size:0x68 +fn_1_1B18 = .text:0x00001B18; // type:function size:0xAC +fn_1_1BC4 = .text:0x00001BC4; // type:function size:0xC4 +fn_1_1C88 = .text:0x00001C88; // type:function size:0xBC +fn_1_1D44 = .text:0x00001D44; // type:function size:0x34 +fn_1_1D78 = .text:0x00001D78; // type:function size:0x40 +fn_1_1DB8 = .text:0x00001DB8; // type:function size:0x70 +fn_1_1E28 = .text:0x00001E28; // type:function size:0x178 +fn_1_1FA0 = .text:0x00001FA0; // type:function size:0x2E0 +fn_1_2280 = .text:0x00002280; // type:function size:0x90 +fn_1_2310 = .text:0x00002310; // type:function size:0xC8 +fn_1_23D8 = .text:0x000023D8; // type:function size:0x48 +fn_1_2420 = .text:0x00002420; // type:function size:0x54 +fn_1_2474 = .text:0x00002474; // type:function size:0x3C0 +fn_1_2834 = .text:0x00002834; // type:function size:0x10 +fn_1_2844 = .text:0x00002844; // type:function size:0x10 +fn_1_2854 = .text:0x00002854; // type:function size:0xB8 +fn_1_290C = .text:0x0000290C; // type:function size:0x120 +fn_1_2A2C = .text:0x00002A2C; // type:function size:0x3A8 +fn_1_2DD4 = .text:0x00002DD4; // type:function size:0x7F4 +fn_1_35C8 = .text:0x000035C8; // type:function size:0x88 +fn_1_3650 = .text:0x00003650; // type:function size:0x94 +fn_1_36E4 = .text:0x000036E4; // type:function size:0x58 +fn_1_373C = .text:0x0000373C; // type:function size:0x8C +fn_1_37C8 = .text:0x000037C8; // type:function size:0xEC +fn_1_38B4 = .text:0x000038B4; // type:function size:0xC4 +fn_1_3978 = .text:0x00003978; // type:function size:0x3C +fn_1_39B4 = .text:0x000039B4; // type:function size:0x44 +fn_1_39F8 = .text:0x000039F8; // type:function size:0x26C +fn_1_3C64 = .text:0x00003C64; // type:function size:0x26C +fn_1_3ED0 = .text:0x00003ED0; // type:function size:0x27C +fn_1_414C = .text:0x0000414C; // type:function size:0x2B4 +fn_1_4400 = .text:0x00004400; // type:function size:0x46C +fn_1_486C = .text:0x0000486C; // type:function size:0x454 +fn_1_4CC0 = .text:0x00004CC0; // type:function size:0x48C +fn_1_514C = .text:0x0000514C; // type:function size:0x658 +fn_1_57A4 = .text:0x000057A4; // type:function size:0x4C4 +fn_1_5C68 = .text:0x00005C68; // type:function size:0x4FC +fn_1_6164 = .text:0x00006164; // type:function size:0x6C8 +fn_1_682C = .text:0x0000682C; // type:function size:0xC4 +fn_1_68F0 = .text:0x000068F0; // type:function size:0x188 +fn_1_6A78 = .text:0x00006A78; // type:function size:0x34 +fn_1_6AAC = .text:0x00006AAC; // type:function size:0x40 +fn_1_6AEC = .text:0x00006AEC; // type:function size:0xAC +fn_1_6B98 = .text:0x00006B98; // type:function size:0x1E8 +fn_1_6D80 = .text:0x00006D80; // type:function size:0xB4 +fn_1_6E34 = .text:0x00006E34; // type:function size:0x1D0 +fn_1_7004 = .text:0x00007004; // type:function size:0x394 +fn_1_7398 = .text:0x00007398; // type:function size:0x640 +fn_1_79D8 = .text:0x000079D8; // type:function size:0x4B0 +fn_1_7E88 = .text:0x00007E88; // type:function size:0x2C4 +fn_1_814C = .text:0x0000814C; // type:function size:0x118 +fn_1_8264 = .text:0x00008264; // type:function size:0x7C +fn_1_82E0 = .text:0x000082E0; // type:function size:0x8C +fn_1_836C = .text:0x0000836C; // type:function size:0xF0 +fn_1_845C = .text:0x0000845C; // type:function size:0x2FC +fn_1_8758 = .text:0x00008758; // type:function size:0x100 +fn_1_8858 = .text:0x00008858; // type:function size:0xF0 +fn_1_8948 = .text:0x00008948; // type:function size:0xF0 +fn_1_8A38 = .text:0x00008A38; // type:function size:0xF0 +fn_1_8B28 = .text:0x00008B28; // type:function size:0xF0 +fn_1_8C18 = .text:0x00008C18; // type:function size:0x7C +fn_1_8C94 = .text:0x00008C94; // type:function size:0x4AC +fn_1_9140 = .text:0x00009140; // type:function size:0x88 +fn_1_91C8 = .text:0x000091C8; // type:function size:0x58 +fn_1_9220 = .text:0x00009220; // type:function size:0x1B0 +fn_1_93D0 = .text:0x000093D0; // type:function size:0xB8 +fn_1_9488 = .text:0x00009488; // type:function size:0x228 +fn_1_96B0 = .text:0x000096B0; // type:function size:0xB8 +fn_1_9768 = .text:0x00009768; // type:function size:0x228 +fn_1_9990 = .text:0x00009990; // type:function size:0x78 +fn_1_9A08 = .text:0x00009A08; // type:function size:0x5C +fn_1_9A64 = .text:0x00009A64; // type:function size:0x8B0 +fn_1_A314 = .text:0x0000A314; // type:function size:0x1DC +fn_1_A4F0 = .text:0x0000A4F0; // type:function size:0x6BC +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0xAC4 +fn_1_B670 = .text:0x0000B670; // type:function size:0x118 +fn_1_B788 = .text:0x0000B788; // type:function size:0x6D4 +fn_1_BE5C = .text:0x0000BE5C; // type:function size:0x104 +fn_1_BF60 = .text:0x0000BF60; // type:function size:0x100 +fn_1_C060 = .text:0x0000C060; // type:function size:0xE0C +fn_1_CE6C = .text:0x0000CE6C; // type:function size:0x620 +fn_1_D48C = .text:0x0000D48C; // type:function size:0xAC +fn_1_D538 = .text:0x0000D538; // type:function size:0x1E0 +fn_1_D718 = .text:0x0000D718; // type:function size:0xC0 +fn_1_D7D8 = .text:0x0000D7D8; // type:function size:0x390 +fn_1_DB68 = .text:0x0000DB68; // type:function size:0x5F8 +fn_1_E160 = .text:0x0000E160; // type:function size:0x1BD0 +fn_1_FD30 = .text:0x0000FD30; // type:function size:0x150 +fn_1_FE80 = .text:0x0000FE80; // type:function size:0xFC +fn_1_FF7C = .text:0x0000FF7C; // type:function size:0x3F0 +fn_1_1036C = .text:0x0001036C; // type:function size:0xA08 +fn_1_10D74 = .text:0x00010D74; // type:function size:0xA20 +fn_1_11794 = .text:0x00011794; // type:function size:0xA0 +fn_1_11834 = .text:0x00011834; // type:function size:0xBA4 +fn_1_123D8 = .text:0x000123D8; // type:function size:0x44 +fn_1_1241C = .text:0x0001241C; // type:function size:0x4 +fn_1_12420 = .text:0x00012420; // type:function size:0x678 +fn_1_12A98 = .text:0x00012A98; // type:function size:0x170 +fn_1_12C08 = .text:0x00012C08; // type:function size:0x1A4 +fn_1_12DAC = .text:0x00012DAC; // type:function size:0x2FC +fn_1_130A8 = .text:0x000130A8; // type:function size:0xD4 +fn_1_1317C = .text:0x0001317C; // type:function size:0x130 +fn_1_132AC = .text:0x000132AC; // type:function size:0x65C +fn_1_13908 = .text:0x00013908; // type:function size:0x130 +fn_1_13A38 = .text:0x00013A38; // type:function size:0x4 +fn_1_13A3C = .text:0x00013A3C; // type:function size:0x23C +fn_1_13C78 = .text:0x00013C78; // type:function size:0xC0 +fn_1_13D38 = .text:0x00013D38; // type:function size:0x60 +fn_1_13D98 = .text:0x00013D98; // type:function size:0x308 +fn_1_140A0 = .text:0x000140A0; // type:function size:0x38C +fn_1_1442C = .text:0x0001442C; // type:function size:0x140 +fn_1_1456C = .text:0x0001456C; // type:function size:0x118 +fn_1_14684 = .text:0x00014684; // type:function size:0x7C +fn_1_14700 = .text:0x00014700; // type:function size:0x48 +fn_1_14748 = .text:0x00014748; // type:function size:0x724 +fn_1_14E6C = .text:0x00014E6C; // type:function size:0x114 +fn_1_14F80 = .text:0x00014F80; // type:function size:0x54 +fn_1_14FD4 = .text:0x00014FD4; // type:function size:0x31C +fn_1_152F0 = .text:0x000152F0; // type:function size:0x160 +fn_1_15450 = .text:0x00015450; // type:function size:0x3A0 +fn_1_157F0 = .text:0x000157F0; // type:function size:0x1B4 +fn_1_159A4 = .text:0x000159A4; // type:function size:0x268 +fn_1_15C0C = .text:0x00015C0C; // type:function size:0xFC +fn_1_15D08 = .text:0x00015D08; // type:function size:0xC0 +fn_1_15DC8 = .text:0x00015DC8; // type:function size:0x3F0 +fn_1_161B8 = .text:0x000161B8; // type:function size:0x3BC +fn_1_16574 = .text:0x00016574; // type:function size:0x54 +fn_1_165C8 = .text:0x000165C8; // type:function size:0x35C +fn_1_16924 = .text:0x00016924; // type:function size:0x1B0 +fn_1_16AD4 = .text:0x00016AD4; // type:function size:0x400 +fn_1_16ED4 = .text:0x00016ED4; // type:function size:0x258 +fn_1_1712C = .text:0x0001712C; // type:function size:0x160 +fn_1_1728C = .text:0x0001728C; // type:function size:0x1F8 +fn_1_17484 = .text:0x00017484; // type:function size:0xEC +fn_1_17570 = .text:0x00017570; // type:function size:0x850 +fn_1_17DC0 = .text:0x00017DC0; // type:function size:0x2C0 +fn_1_18080 = .text:0x00018080; // type:function size:0x9C +fn_1_1811C = .text:0x0001811C; // type:function size:0x218 +fn_1_18334 = .text:0x00018334; // type:function size:0x1B4 +fn_1_184E8 = .text:0x000184E8; // type:function size:0x70 +fn_1_18558 = .text:0x00018558; // type:function size:0x110 +fn_1_18668 = .text:0x00018668; // type:function size:0x694 +fn_1_18CFC = .text:0x00018CFC; // type:function size:0x29C +fn_1_18F98 = .text:0x00018F98; // type:function size:0x1AC +fn_1_19144 = .text:0x00019144; // type:function size:0xD0 +fn_1_19214 = .text:0x00019214; // type:function size:0x28C +fn_1_194A0 = .text:0x000194A0; // type:function size:0xF0 +fn_1_19590 = .text:0x00019590; // type:function size:0x224 +fn_1_197B4 = .text:0x000197B4; // type:function size:0x854 +fn_1_1A008 = .text:0x0001A008; // type:function size:0x1EF4 +fn_1_1BEFC = .text:0x0001BEFC; // type:function size:0x3F8 +fn_1_1C2F4 = .text:0x0001C2F4; // type:function size:0x16C +fn_1_1C460 = .text:0x0001C460; // type:function size:0xD4 +fn_1_1C534 = .text:0x0001C534; // type:function size:0x3E0 +fn_1_1C914 = .text:0x0001C914; // type:function size:0x184 +fn_1_1CA98 = .text:0x0001CA98; // type:function size:0xE4 +fn_1_1CB7C = .text:0x0001CB7C; // type:function size:0xE0 +fn_1_1CC5C = .text:0x0001CC5C; // type:function size:0x104 +fn_1_1CD60 = .text:0x0001CD60; // type:function size:0x90 +fn_1_1CDF0 = .text:0x0001CDF0; // type:function size:0x334 +fn_1_1D124 = .text:0x0001D124; // type:function size:0x518 +fn_1_1D63C = .text:0x0001D63C; // type:function size:0x140 +fn_1_1D77C = .text:0x0001D77C; // type:function size:0x150 +fn_1_1D8CC = .text:0x0001D8CC; // type:function size:0x98 +fn_1_1D964 = .text:0x0001D964; // type:function size:0x100 +fn_1_1DA64 = .text:0x0001DA64; // type:function size:0x48 +fn_1_1DAAC = .text:0x0001DAAC; // type:function size:0x3A0 +fn_1_1DE4C = .text:0x0001DE4C; // type:function size:0x8C +fn_1_1DED8 = .text:0x0001DED8; // type:function size:0x21C +fn_1_1E0F4 = .text:0x0001E0F4; // type:function size:0x14 +fn_1_1E108 = .text:0x0001E108; // type:function size:0x10 +fn_1_1E118 = .text:0x0001E118; // type:function size:0x14 +fn_1_1E12C = .text:0x0001E12C; // type:function size:0x10 +fn_1_1E13C = .text:0x0001E13C; // type:function size:0x41C +fn_1_1E558 = .text:0x0001E558; // type:function size:0x2C8 +fn_1_1E820 = .text:0x0001E820; // type:function size:0x8E0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 scope:local data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0xD scope:local data:string +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 scope:local data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A scope:local data:string +lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A scope:local data:string +lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE scope:local data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float +lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 +lbl_1_data_200 = .data:0x00000200; // type:object size:0x50 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 scope:local data:string +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 scope:local data:string +lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 scope:local data:string +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 scope:local data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 scope:local data:string +lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D scope:local data:string +lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C scope:local data:string +lbl_1_data_364 = .data:0x00000364; // type:object size:0x4 data:4byte +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC data:float +lbl_1_data_378 = .data:0x00000378; // type:object size:0xF scope:local data:string +lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 scope:local data:string +jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 scope:local data:string +lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 scope:local data:string +lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 scope:local data:string +lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 scope:local data:string +lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 scope:local data:string +lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 scope:local data:string +lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 scope:local data:string +lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x10 scope:local data:string +lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 +lbl_1_data_78C = .data:0x0000078C; // type:object size:0x50 +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 scope:local data:string +lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 scope:local data:string +lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 scope:local data:string +lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 scope:local data:string +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 scope:local data:string +lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 scope:local data:string +lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 scope:local data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF scope:local data:string +lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C scope:local data:string +lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D scope:local data:string +lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 scope:local data:string +lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 scope:local data:string +lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 scope:local data:string +lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 scope:local data:string +lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 scope:local data:string +lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A scope:local data:string +lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A scope:local data:string +lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x19 scope:local data:string +lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 scope:local data:string +lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:float +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:float +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:float +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:float +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:float +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x1340 +lbl_1_bss_1408 = .bss:0x00001408; // type:object size:0x18 +lbl_1_bss_1420 = .bss:0x00001420; // type:object size:0x4 data:4byte +lbl_1_bss_1424 = .bss:0x00001424; // type:object size:0x4 data:float +lbl_1_bss_1428 = .bss:0x00001428; // type:object size:0x10 data:4byte +lbl_1_bss_1438 = .bss:0x00001438; // type:object size:0x10 +lbl_1_bss_1448 = .bss:0x00001448; // type:object size:0x10 data:4byte +lbl_1_bss_1458 = .bss:0x00001458; // type:object size:0x10 data:4byte +lbl_1_bss_1468 = .bss:0x00001468; // type:object size:0x28 data:4byte +lbl_1_bss_1490 = .bss:0x00001490; // type:object size:0xA0 data:4byte +lbl_1_bss_1530 = .bss:0x00001530; // type:object size:0x28 data:4byte +lbl_1_bss_1558 = .bss:0x00001558; // type:object size:0x28 data:4byte +lbl_1_bss_1580 = .bss:0x00001580; // type:object size:0x350 data:4byte +lbl_1_bss_18D0 = .bss:0x000018D0; // type:object size:0x4 data:4byte +lbl_1_bss_18D4 = .bss:0x000018D4; // type:object size:0x4 data:4byte +lbl_1_bss_18D8 = .bss:0x000018D8; // type:object size:0xC data:4byte +lbl_1_bss_18E4 = .bss:0x000018E4; // type:object size:0x8 data:4byte +lbl_1_bss_18EC = .bss:0x000018EC; // type:object size:0x8 data:4byte +lbl_1_bss_18F4 = .bss:0x000018F4; // type:object size:0xA0 +lbl_1_bss_1994 = .bss:0x00001994; // type:object size:0x28 data:4byte +lbl_1_bss_19BC = .bss:0x000019BC; // type:object size:0x28 data:4byte +lbl_1_bss_19E4 = .bss:0x000019E4; // type:object size:0x28 data:4byte +lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2D8 data:float +lbl_1_bss_1CE8 = .bss:0x00001CE8; // type:object size:0x2 data:2byte +lbl_1_bss_1CEC = .bss:0x00001CEC; // type:object size:0x4 data:4byte +lbl_1_bss_1CF0 = .bss:0x00001CF0; // type:object size:0x4 data:4byte +lbl_1_bss_1CF4 = .bss:0x00001CF4; // type:object size:0x4 data:4byte +lbl_1_bss_1CF8 = .bss:0x00001CF8; // type:object size:0x58 data:2byte diff --git a/config/GMPP01_00/rels/mstory4Dll/splits.txt b/config/GMPP01_00/rels/mstory4Dll/splits.txt new file mode 100644 index 00000000..20264b16 --- /dev/null +++ b/config/GMPP01_00/rels/mstory4Dll/splits.txt @@ -0,0 +1,13 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory4Dll/main.c: + .text start:0x00000000 end:0x00001738 + .rodata start:0x00000000 end:0x00000048 + .data start:0x00000000 end:0x00000722 + .bss start:0x00000000 end:0x00000014 diff --git a/config/GMPP01_00/rels/mstory4Dll/symbols.txt b/config/GMPP01_00/rels/mstory4Dll/symbols.txt new file mode 100644 index 00000000..e98f616c --- /dev/null +++ b/config/GMPP01_00/rels/mstory4Dll/symbols.txt @@ -0,0 +1,67 @@ +fn_1_0 = .text:0x00000000; // type:function size:0xEC +fn_1_EC = .text:0x000000EC; // type:function size:0xE68 +_prolog = .text:0x00000F54; // type:function size:0x54 scope:global +_epilog = .text:0x00000FA8; // type:function size:0x4C scope:global +fn_1_FF4 = .text:0x00000FF4; // type:function size:0xB8 +fn_1_10AC = .text:0x000010AC; // type:function size:0x68C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x1 data:byte +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x1C data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x1 data:byte +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x3C0 +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0xF data:string +lbl_1_data_3CF = .data:0x000003CF; // type:object size:0x14 data:string +lbl_1_data_3E3 = .data:0x000003E3; // type:object size:0x15 data:string +lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x11 data:string +lbl_1_data_409 = .data:0x00000409; // type:object size:0x12 data:string +lbl_1_data_41B = .data:0x0000041B; // type:object size:0x15 +lbl_1_data_430 = .data:0x00000430; // type:object size:0x18 +lbl_1_data_448 = .data:0x00000448; // type:object size:0x20 data:string +lbl_1_data_468 = .data:0x00000468; // type:object size:0x24 data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x23 data:string +lbl_1_data_4AF = .data:0x000004AF; // type:object size:0x27 data:string +lbl_1_data_4D6 = .data:0x000004D6; // type:object size:0x26 data:string +lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x29 data:string +lbl_1_data_525 = .data:0x00000525; // type:object size:0x1B +lbl_1_data_540 = .data:0x00000540; // type:object size:0x1C +lbl_1_data_55C = .data:0x0000055C; // type:object size:0x8 data:string +lbl_1_data_564 = .data:0x00000564; // type:object size:0x7 data:string +lbl_1_data_56B = .data:0x0000056B; // type:object size:0x6 data:string +lbl_1_data_571 = .data:0x00000571; // type:object size:0xB +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x10 +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x1C data:4byte +lbl_1_data_5A8 = .data:0x000005A8; // type:object size:0x1C +lbl_1_data_5C4 = .data:0x000005C4; // type:object size:0x7 data:string +lbl_1_data_5CB = .data:0x000005CB; // type:object size:0x33 data:string +lbl_1_data_5FE = .data:0x000005FE; // type:object size:0x3 data:string +lbl_1_data_601 = .data:0x00000601; // type:object size:0x9 data:string +lbl_1_data_60A = .data:0x0000060A; // type:object size:0x12 +jumptable_1_data_61C = .data:0x0000061C; // type:object size:0x1C scope:local +lbl_1_data_638 = .data:0x00000638; // type:object size:0x6 data:string +lbl_1_data_63E = .data:0x0000063E; // type:object size:0x6 data:string +lbl_1_data_644 = .data:0x00000644; // type:object size:0x6 data:string +lbl_1_data_64A = .data:0x0000064A; // type:object size:0x6 data:string +lbl_1_data_650 = .data:0x00000650; // type:object size:0x6 data:string +lbl_1_data_656 = .data:0x00000656; // type:object size:0x7 data:string +lbl_1_data_65D = .data:0x0000065D; // type:object size:0x6 data:string +lbl_1_data_663 = .data:0x00000663; // type:object size:0x9 +lbl_1_data_66C = .data:0x0000066C; // type:object size:0x20 +lbl_1_data_68C = .data:0x0000068C; // type:object size:0x16 data:string +lbl_1_data_6A2 = .data:0x000006A2; // type:object size:0x11 data:string +lbl_1_data_6B3 = .data:0x000006B3; // type:object size:0x10 data:string +lbl_1_data_6C3 = .data:0x000006C3; // type:object size:0xD data:string +lbl_1_data_6D0 = .data:0x000006D0; // type:object size:0x10 data:string +lbl_1_data_6E0 = .data:0x000006E0; // type:object size:0xD data:string +lbl_1_data_6ED = .data:0x000006ED; // type:object size:0x1B data:string +lbl_1_data_708 = .data:0x00000708; // type:object size:0x1A data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/mstoryDll/splits.txt b/config/GMPP01_00/rels/mstoryDll/splits.txt new file mode 100644 index 00000000..14c897fa --- /dev/null +++ b/config/GMPP01_00/rels/mstoryDll/splits.txt @@ -0,0 +1,43 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141A0 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPP01_00/rels/mstoryDll/symbols.txt b/config/GMPP01_00/rels/mstoryDll/symbols.txt new file mode 100644 index 00000000..0956831b --- /dev/null +++ b/config/GMPP01_00/rels/mstoryDll/symbols.txt @@ -0,0 +1,500 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x344 +_prolog = .text:0x000003E8; // type:function size:0x54 scope:global +_epilog = .text:0x0000043C; // type:function size:0x4C scope:global +fn_1_488 = .text:0x00000488; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 +fn_1_828 = .text:0x00000828; // type:function size:0x28 +fn_1_850 = .text:0x00000850; // type:function size:0x20 +fn_1_870 = .text:0x00000870; // type:function size:0xD8 +fn_1_948 = .text:0x00000948; // type:function size:0xC8 +fn_1_A10 = .text:0x00000A10; // type:function size:0xBC +fn_1_ACC = .text:0x00000ACC; // type:function size:0xBC +fn_1_B88 = .text:0x00000B88; // type:function size:0x4 +fn_1_B8C = .text:0x00000B8C; // type:function size:0x20 +fn_1_BAC = .text:0x00000BAC; // type:function size:0x28 +fn_1_BD4 = .text:0x00000BD4; // type:function size:0x20 +fn_1_BF4 = .text:0x00000BF4; // type:function size:0x24 +fn_1_C18 = .text:0x00000C18; // type:function size:0x20 +fn_1_C38 = .text:0x00000C38; // type:function size:0xA48 +fn_1_1680 = .text:0x00001680; // type:function size:0x1B4 +fn_1_1834 = .text:0x00001834; // type:function size:0x1D0 +fn_1_1A04 = .text:0x00001A04; // type:function size:0x60 +fn_1_1A64 = .text:0x00001A64; // type:function size:0x68 +fn_1_1ACC = .text:0x00001ACC; // type:function size:0xAC +fn_1_1B78 = .text:0x00001B78; // type:function size:0xBC +fn_1_1C34 = .text:0x00001C34; // type:function size:0xB4 +fn_1_1CE8 = .text:0x00001CE8; // type:function size:0x34 +fn_1_1D1C = .text:0x00001D1C; // type:function size:0x40 +fn_1_1D5C = .text:0x00001D5C; // type:function size:0x70 +fn_1_1DCC = .text:0x00001DCC; // type:function size:0x178 +fn_1_1F44 = .text:0x00001F44; // type:function size:0x2E0 +fn_1_2224 = .text:0x00002224; // type:function size:0x90 +fn_1_22B4 = .text:0x000022B4; // type:function size:0x48 +fn_1_22FC = .text:0x000022FC; // type:function size:0x54 +fn_1_2350 = .text:0x00002350; // type:function size:0x3C0 +fn_1_2710 = .text:0x00002710; // type:function size:0x10 +fn_1_2720 = .text:0x00002720; // type:function size:0x10 +fn_1_2730 = .text:0x00002730; // type:function size:0xB8 +fn_1_27E8 = .text:0x000027E8; // type:function size:0x120 +fn_1_2908 = .text:0x00002908; // type:function size:0x3A8 +fn_1_2CB0 = .text:0x00002CB0; // type:function size:0x7F4 +fn_1_34A4 = .text:0x000034A4; // type:function size:0x88 +fn_1_352C = .text:0x0000352C; // type:function size:0x94 +fn_1_35C0 = .text:0x000035C0; // type:function size:0x58 +fn_1_3618 = .text:0x00003618; // type:function size:0xEC +fn_1_3704 = .text:0x00003704; // type:function size:0xC4 +fn_1_37C8 = .text:0x000037C8; // type:function size:0x3C +fn_1_3804 = .text:0x00003804; // type:function size:0x44 +fn_1_3848 = .text:0x00003848; // type:function size:0x274 +fn_1_3ABC = .text:0x00003ABC; // type:function size:0x26C +fn_1_3D28 = .text:0x00003D28; // type:function size:0x22C +fn_1_3F54 = .text:0x00003F54; // type:function size:0x27C +fn_1_41D0 = .text:0x000041D0; // type:function size:0x2B4 +fn_1_4484 = .text:0x00004484; // type:function size:0x46C +fn_1_48F0 = .text:0x000048F0; // type:function size:0x454 +fn_1_4D44 = .text:0x00004D44; // type:function size:0x48C +fn_1_51D0 = .text:0x000051D0; // type:function size:0x658 +fn_1_5828 = .text:0x00005828; // type:function size:0x4C4 +fn_1_5CEC = .text:0x00005CEC; // type:function size:0x4FC +fn_1_61E8 = .text:0x000061E8; // type:function size:0x6C8 +fn_1_68B0 = .text:0x000068B0; // type:function size:0xC4 +fn_1_6974 = .text:0x00006974; // type:function size:0x188 +fn_1_6AFC = .text:0x00006AFC; // type:function size:0x34 +fn_1_6B30 = .text:0x00006B30; // type:function size:0x40 +fn_1_6B70 = .text:0x00006B70; // type:function size:0xAC +fn_1_6C1C = .text:0x00006C1C; // type:function size:0x1E8 +fn_1_6E04 = .text:0x00006E04; // type:function size:0xB4 +fn_1_6EB8 = .text:0x00006EB8; // type:function size:0x170 +fn_1_7028 = .text:0x00007028; // type:function size:0x68 +fn_1_7090 = .text:0x00007090; // type:function size:0xA4 +fn_1_7134 = .text:0x00007134; // type:function size:0x1E8 +fn_1_731C = .text:0x0000731C; // type:function size:0x69C +fn_1_79B8 = .text:0x000079B8; // type:function size:0x128 +fn_1_7AE0 = .text:0x00007AE0; // type:function size:0x390 +fn_1_7E70 = .text:0x00007E70; // type:function size:0x5C +fn_1_7ECC = .text:0x00007ECC; // type:function size:0x1C4 +fn_1_8090 = .text:0x00008090; // type:function size:0x320 +fn_1_83B0 = .text:0x000083B0; // type:function size:0x58 +fn_1_8408 = .text:0x00008408; // type:function size:0x3D4 +fn_1_87DC = .text:0x000087DC; // type:function size:0x268 +fn_1_8A44 = .text:0x00008A44; // type:function size:0x9C +fn_1_8AE0 = .text:0x00008AE0; // type:function size:0x2E0 +fn_1_8DC0 = .text:0x00008DC0; // type:function size:0xAC +fn_1_8E6C = .text:0x00008E6C; // type:function size:0xFC +fn_1_8F68 = .text:0x00008F68; // type:function size:0x36C +fn_1_92D4 = .text:0x000092D4; // type:function size:0x134 +fn_1_9408 = .text:0x00009408; // type:function size:0x310 +fn_1_9718 = .text:0x00009718; // type:function size:0x18C +fn_1_98A4 = .text:0x000098A4; // type:function size:0x88 +fn_1_992C = .text:0x0000992C; // type:function size:0x3DC +fn_1_9D08 = .text:0x00009D08; // type:function size:0x300 +fn_1_A008 = .text:0x0000A008; // type:function size:0xE4 +fn_1_A0EC = .text:0x0000A0EC; // type:function size:0x38C +fn_1_A478 = .text:0x0000A478; // type:function size:0x8C +fn_1_A504 = .text:0x0000A504; // type:function size:0xF0 +fn_1_A5F4 = .text:0x0000A5F4; // type:function size:0x23C +fn_1_A830 = .text:0x0000A830; // type:function size:0xC8 +fn_1_A8F8 = .text:0x0000A8F8; // type:function size:0x2B4 +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0x150 +fn_1_ACFC = .text:0x0000ACFC; // type:function size:0x134 +fn_1_AE30 = .text:0x0000AE30; // type:function size:0x8C +fn_1_AEBC = .text:0x0000AEBC; // type:function size:0x374 +fn_1_B230 = .text:0x0000B230; // type:function size:0x5C +fn_1_B28C = .text:0x0000B28C; // type:function size:0x214 +fn_1_B4A0 = .text:0x0000B4A0; // type:function size:0xE8 +fn_1_B588 = .text:0x0000B588; // type:function size:0xE8 +fn_1_B670 = .text:0x0000B670; // type:function size:0x11C +fn_1_B78C = .text:0x0000B78C; // type:function size:0x13C +fn_1_B8C8 = .text:0x0000B8C8; // type:function size:0x4 +fn_1_B8CC = .text:0x0000B8CC; // type:function size:0x104 +fn_1_B9D0 = .text:0x0000B9D0; // type:function size:0x208 +fn_1_BBD8 = .text:0x0000BBD8; // type:function size:0x788 +fn_1_C360 = .text:0x0000C360; // type:function size:0xB4 +fn_1_C414 = .text:0x0000C414; // type:function size:0x2F4 +fn_1_C708 = .text:0x0000C708; // type:function size:0xBC +fn_1_C7C4 = .text:0x0000C7C4; // type:function size:0x384 +fn_1_CB48 = .text:0x0000CB48; // type:function size:0x300 +fn_1_CE48 = .text:0x0000CE48; // type:function size:0xAC +fn_1_CEF4 = .text:0x0000CEF4; // type:function size:0xE4 +fn_1_CFD8 = .text:0x0000CFD8; // type:function size:0xC4 +fn_1_D09C = .text:0x0000D09C; // type:function size:0xE4 +fn_1_D180 = .text:0x0000D180; // type:function size:0x3FC +fn_1_D57C = .text:0x0000D57C; // type:function size:0x134 +fn_1_D6B0 = .text:0x0000D6B0; // type:function size:0x2F8 +fn_1_D9A8 = .text:0x0000D9A8; // type:function size:0xFC +fn_1_DAA4 = .text:0x0000DAA4; // type:function size:0x164 +fn_1_DC08 = .text:0x0000DC08; // type:function size:0x118 +fn_1_DD20 = .text:0x0000DD20; // type:function size:0xE4 +fn_1_DE04 = .text:0x0000DE04; // type:function size:0x424 +fn_1_E228 = .text:0x0000E228; // type:function size:0x8C +fn_1_E2B4 = .text:0x0000E2B4; // type:function size:0x130 +fn_1_E3E4 = .text:0x0000E3E4; // type:function size:0x23C +fn_1_E620 = .text:0x0000E620; // type:function size:0xF0 +fn_1_E710 = .text:0x0000E710; // type:function size:0x118 +fn_1_E828 = .text:0x0000E828; // type:function size:0x8C +fn_1_E8B4 = .text:0x0000E8B4; // type:function size:0x34C +fn_1_EC00 = .text:0x0000EC00; // type:function size:0x5C +fn_1_EC5C = .text:0x0000EC5C; // type:function size:0x384 +fn_1_EFE0 = .text:0x0000EFE0; // type:function size:0x70 +fn_1_F050 = .text:0x0000F050; // type:function size:0x14C +fn_1_F19C = .text:0x0000F19C; // type:function size:0x5E4 +fn_1_F780 = .text:0x0000F780; // type:function size:0xEC +fn_1_F86C = .text:0x0000F86C; // type:function size:0xA4 +fn_1_F910 = .text:0x0000F910; // type:function size:0x1D4 +fn_1_FAE4 = .text:0x0000FAE4; // type:function size:0x238 +fn_1_FD1C = .text:0x0000FD1C; // type:function size:0xB4 +fn_1_FDD0 = .text:0x0000FDD0; // type:function size:0x4C8 +fn_1_10298 = .text:0x00010298; // type:function size:0xEC +fn_1_10384 = .text:0x00010384; // type:function size:0xCC +fn_1_10450 = .text:0x00010450; // type:function size:0xFC +fn_1_1054C = .text:0x0001054C; // type:function size:0xAC +fn_1_105F8 = .text:0x000105F8; // type:function size:0x300 +fn_1_108F8 = .text:0x000108F8; // type:function size:0x374 +fn_1_10C6C = .text:0x00010C6C; // type:function size:0xE4 +fn_1_10D50 = .text:0x00010D50; // type:function size:0x1D4 +fn_1_10F24 = .text:0x00010F24; // type:function size:0xAC +fn_1_10FD0 = .text:0x00010FD0; // type:function size:0x2D0 +fn_1_112A0 = .text:0x000112A0; // type:function size:0x8C +fn_1_1132C = .text:0x0001132C; // type:function size:0xF0 +fn_1_1141C = .text:0x0001141C; // type:function size:0x118 +fn_1_11534 = .text:0x00011534; // type:function size:0xF0 +fn_1_11624 = .text:0x00011624; // type:function size:0x10C +fn_1_11730 = .text:0x00011730; // type:function size:0x35C +fn_1_11A8C = .text:0x00011A8C; // type:function size:0x5C +fn_1_11AE8 = .text:0x00011AE8; // type:function size:0x184 +fn_1_11C6C = .text:0x00011C6C; // type:function size:0x16C +fn_1_11DD8 = .text:0x00011DD8; // type:function size:0xEC +fn_1_11EC4 = .text:0x00011EC4; // type:function size:0x64 +fn_1_11F28 = .text:0x00011F28; // type:function size:0x4 +fn_1_11F2C = .text:0x00011F2C; // type:function size:0x144 +fn_1_12070 = .text:0x00012070; // type:function size:0x5C0 +fn_1_12630 = .text:0x00012630; // type:function size:0xB4 +fn_1_126E4 = .text:0x000126E4; // type:function size:0x234 +fn_1_12918 = .text:0x00012918; // type:function size:0xBC +fn_1_129D4 = .text:0x000129D4; // type:function size:0x2C0 +fn_1_12C94 = .text:0x00012C94; // type:function size:0xE4 +fn_1_12D78 = .text:0x00012D78; // type:function size:0x1A8 +fn_1_12F20 = .text:0x00012F20; // type:function size:0x88 +fn_1_12FA8 = .text:0x00012FA8; // type:function size:0x118 +fn_1_130C0 = .text:0x000130C0; // type:function size:0x22C +fn_1_132EC = .text:0x000132EC; // type:function size:0x284 +fn_1_13570 = .text:0x00013570; // type:function size:0x310 +fn_1_13880 = .text:0x00013880; // type:function size:0x8C +fn_1_1390C = .text:0x0001390C; // type:function size:0x23C +fn_1_13B48 = .text:0x00013B48; // type:function size:0xEC +fn_1_13C34 = .text:0x00013C34; // type:function size:0x1F8 +fn_1_13E2C = .text:0x00013E2C; // type:function size:0x324 +fn_1_14150 = .text:0x00014150; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 +lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C +lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 +lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 +lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 +lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB +lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 +lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x28 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x28 data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x104 data:4byte +lbl_1_bss_2C8 = .bss:0x000002C8; // type:object size:0x4 data:4byte +lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x4 data:4byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x60 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x8 data:4byte +lbl_1_bss_338 = .bss:0x00000338; // type:object size:0xA0 +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x28 data:4byte +lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x28 data:4byte +lbl_1_bss_428 = .bss:0x00000428; // type:object size:0x28 data:4byte +lbl_1_bss_450 = .bss:0x00000450; // type:object size:0x108 data:float +lbl_1_bss_558 = .bss:0x00000558; // type:object size:0x4 data:4byte +lbl_1_bss_55C = .bss:0x0000055C; // type:object size:0x4 data:4byte +lbl_1_bss_560 = .bss:0x00000560; // type:object size:0x8 data:4byte +lbl_1_bss_568 = .bss:0x00000568; // type:object size:0x28 data:4byte +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0x28 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x28 data:4byte +lbl_1_bss_5E0 = .bss:0x000005E0; // type:object size:0x28 data:4byte +lbl_1_bss_608 = .bss:0x00000608; // type:object size:0x108 data:4byte +lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 data:4byte +lbl_1_bss_714 = .bss:0x00000714; // type:object size:0x28 data:4byte +lbl_1_bss_73C = .bss:0x0000073C; // type:object size:0x28 data:4byte +lbl_1_bss_764 = .bss:0x00000764; // type:object size:0x28 data:4byte +lbl_1_bss_78C = .bss:0x0000078C; // type:object size:0x28 data:4byte +lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x104 data:4byte +lbl_1_bss_8B8 = .bss:0x000008B8; // type:object size:0x4 data:4byte +lbl_1_bss_8BC = .bss:0x000008BC; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/nisDll/splits.txt b/config/GMPP01_00/rels/nisDll/splits.txt new file mode 100644 index 00000000..2e500fe0 --- /dev/null +++ b/config/GMPP01_00/rels/nisDll/splits.txt @@ -0,0 +1,5 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 diff --git a/config/GMPP01_00/rels/nisDll/symbols.txt b/config/GMPP01_00/rels/nisDll/symbols.txt new file mode 100644 index 00000000..1143328c --- /dev/null +++ b/config/GMPP01_00/rels/nisDll/symbols.txt @@ -0,0 +1,6 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x68 +fn_1_68 = .text:0x00000068; // type:function size:0x2C +_prolog = .text:0x00000094; // type:function size:0x9C scope:global +_epilog = .text:0x00000130; // type:function size:0x4C scope:global +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPP01_00/rels/option/splits.txt b/config/GMPP01_00/rels/option/splits.txt new file mode 100644 index 00000000..0b7d9789 --- /dev/null +++ b/config/GMPP01_00/rels/option/splits.txt @@ -0,0 +1,61 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/option/scene.c: + .text start:0x000000A0 end:0x000007F8 + .rodata start:0x00000000 end:0x00000028 + .bss start:0x00000000 end:0x00000010 + +REL/option/camera.c: + .text start:0x000007F8 end:0x000015A4 + .rodata start:0x00000028 end:0x000000A8 + .data start:0x00000000 end:0x00000068 + .bss start:0x00000010 end:0x00000018 + +REL/option/room.c: + .text start:0x000015A4 end:0x000021F8 + .rodata start:0x000000A8 end:0x000000E0 + .data start:0x00000068 end:0x00000098 + .bss start:0x00000018 end:0x00000020 + +REL/option/guide.c: + .text start:0x000021F8 end:0x00002E04 + .rodata start:0x000000E0 end:0x00000160 + .data start:0x00000098 end:0x000000A0 + .bss start:0x00000020 end:0x00000028 + +REL/option/state.c: + .text start:0x00002E04 end:0x00003158 + .rodata start:0x00000160 end:0x00000170 + .data start:0x000000A0 end:0x00000108 + .bss start:0x00000028 end:0x00000030 + +REL/option/rumble.c: + .text start:0x00003158 end:0x00004028 + .rodata start:0x00000170 end:0x000001A8 + .data start:0x00000108 end:0x00000118 + .bss start:0x00000030 end:0x00000038 + +REL/option/sound.c: + .text start:0x00004028 end:0x000080E4 + .rodata start:0x000001A8 end:0x000013C0 + .data start:0x00000118 end:0x00000210 + .bss start:0x00000038 end:0x00000040 + +REL/option/record.c: + .text start:0x000080E4 end:0x0000A3E8 + .rodata start:0x000013C0 end:0x000019C8 + .data start:0x00000210 end:0x00000254 + .bss start:0x00000040 end:0x00000044 + +REL/option/window.c: + .text start:0x0000A3E8 end:0x0000A948 + .rodata start:0x000019C8 end:0x000019E8 diff --git a/config/GMPP01_00/rels/option/symbols.txt b/config/GMPP01_00/rels/option/symbols.txt new file mode 100644 index 00000000..16625f3c --- /dev/null +++ b/config/GMPP01_00/rels/option/symbols.txt @@ -0,0 +1,381 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0xC0 +OptionFadeSprite = .text:0x00000160; // type:function size:0x110 +FadeSprite = .text:0x00000270; // type:function size:0xE4 scope:local +OptionFadeModel = .text:0x00000354; // type:function size:0x114 scope:local +FadeModel = .text:0x00000468; // type:function size:0xE8 scope:local +OptionPadCheck = .text:0x00000550; // type:function size:0x34 +OptionPadDStkRepCheck = .text:0x00000584; // type:function size:0x34 +OptionPadDStkCheck = .text:0x000005B8; // type:function size:0x34 +SceneMain = .text:0x000005EC; // type:function size:0xFC scope:local +KillScene = .text:0x000006E8; // type:function size:0x110 scope:local +OptionCameraCreate = .text:0x000007F8; // type:function size:0x244 +OptionCameraKill = .text:0x00000A3C; // type:function size:0x30 +OptionCameraTargetSet = .text:0x00000A6C; // type:function size:0x84 +OptionCameraFocusSet = .text:0x00000AF0; // type:function size:0x84 +OptionCameraViewSet = .text:0x00000B74; // type:function size:0x84 +OptionCameraZoomGet = .text:0x00000BF8; // type:function size:0x30 +OptionCameraRotGet = .text:0x00000C28; // type:function size:0x30 +OptionCameraPosGet = .text:0x00000C58; // type:function size:0x30 +OptionCameraTargetGet = .text:0x00000C88; // type:function size:0x30 +OptionCameraDoneCheck = .text:0x00000CB8; // type:function size:0x8C +ExecCameraObj = .text:0x00000D44; // type:function size:0x28 scope:local +ExecCamera = .text:0x00000D6C; // type:function size:0x578 scope:local +CameraExecDebug = .text:0x000012E4; // type:function size:0x200 scope:local +CameraPrintDebug = .text:0x000014E4; // type:function size:0xC0 scope:local +OptionRoomCreate = .text:0x000015A4; // type:function size:0x1F4 +OptionRoomKill = .text:0x00001798; // type:function size:0xAC +MoveOption = .text:0x00001844; // type:function size:0x1E8 scope:local +OptionRoomExecModeSet = .text:0x00001A2C; // type:function size:0x44 +OptionRoomExecModeGet = .text:0x00001A70; // type:function size:0x1C +ExecRoom = .text:0x00001A8C; // type:function size:0x5FC scope:local +CreateRoomBG = .text:0x00002088; // type:function size:0x88 scope:local +KillRoomBG = .text:0x00002110; // type:function size:0x34 scope:local +CreateArrow = .text:0x00002144; // type:function size:0x80 scope:local +KillArrow = .text:0x000021C4; // type:function size:0x34 scope:local +OptionGuideCreate = .text:0x000021F8; // type:function size:0x224 +OptionGuideKill = .text:0x0000241C; // type:function size:0x8C +SetExecMode = .text:0x000024A8; // type:function size:0x44 scope:local +GetExecMode = .text:0x000024EC; // type:function size:0x1C scope:local +OptionGuideWalkExec = .text:0x00002508; // type:function size:0xA4 +ExecGuide = .text:0x000025AC; // type:function size:0x46C scope:local +UpdateGuide = .text:0x00002A18; // type:function size:0x2E8 scope:local +LerpAngle = .text:0x00002D00; // type:function size:0x104 scope:local +OptionStateCreate = .text:0x00002E04; // type:function size:0x148 +OptionStateKill = .text:0x00002F4C; // type:function size:0x64 +ExecState = .text:0x00002FB0; // type:function size:0x1A8 scope:local +OptionRumbleCreate = .text:0x00003158; // type:function size:0xD4 +OptionRumbleKill = .text:0x0000322C; // type:function size:0x64 +OptionRumbleExecModeSet = .text:0x00003290; // type:function size:0x44 +OptionRumbleExecModeGet = .text:0x000032D4; // type:function size:0x1C +ExecRumble = .text:0x000032F0; // type:function size:0x4BC scope:local +CreateHand = .text:0x000037AC; // type:function size:0xBC scope:local +KillHand = .text:0x00003868; // type:function size:0x54 scope:local +CreateSystem = .text:0x000038BC; // type:function size:0xD0 scope:local +KillSystem = .text:0x0000398C; // type:function size:0x54 scope:local +StartSystemMotion = .text:0x000039E0; // type:function size:0x128 scope:local +CreatePad = .text:0x00003B08; // type:function size:0x84 scope:local +KillPad = .text:0x00003B8C; // type:function size:0x54 scope:local +ShakePad = .text:0x00003BE0; // type:function size:0x8C scope:local +CreatePadFilter = .text:0x00003C6C; // type:function size:0x94 scope:local +KillPadFilter = .text:0x00003D00; // type:function size:0x54 scope:local +OptionRumbleMotionShowStart = .text:0x00003D54; // type:function size:0xC8 +OptionRumbleMotionHideStart = .text:0x00003E1C; // type:function size:0xB4 +OptionRumbleMotionCheck = .text:0x00003ED0; // type:function size:0x58 +CreateHiliteOn = .text:0x00003F28; // type:function size:0xAC scope:local +KillHiliteOn = .text:0x00003FD4; // type:function size:0x54 scope:local +OptionSoundCreate = .text:0x00004028; // type:function size:0x2B4 +OptionSoundKill = .text:0x000042DC; // type:function size:0xAC +OptionSoundExecModeSet = .text:0x00004388; // type:function size:0x44 +OptionSoundExecModeGet = .text:0x000043CC; // type:function size:0x1C +ExecZoom = .text:0x000043E8; // type:function size:0x270 scope:local +ExecOptionSel = .text:0x00004658; // type:function size:0x424 scope:local +ExecOutputMode = .text:0x00004A7C; // type:function size:0x3D4 scope:local +ExecMusic = .text:0x00004E50; // type:function size:0x93C scope:local +ExecVoice = .text:0x0000578C; // type:function size:0x8B8 scope:local +LightSetCurr = .text:0x00006044; // type:function size:0xF8 scope:local +LightSetNone = .text:0x0000613C; // type:function size:0x64 scope:local +CreateHand = .text:0x000061A0; // type:function size:0xFC scope:local +KillHand = .text:0x0000629C; // type:function size:0x54 scope:local +CreateOutputModeHand = .text:0x000062F0; // type:function size:0xFC scope:local +KillOutputModeHand = .text:0x000063EC; // type:function size:0x54 scope:local +CreateSystem = .text:0x00006440; // type:function size:0x94 scope:local +KillSystem = .text:0x000064D4; // type:function size:0x54 scope:local +CreateLightObj = .text:0x00006528; // type:function size:0x118 scope:local +KillLightObj = .text:0x00006640; // type:function size:0x54 scope:local +LightDispOff = .text:0x00006694; // type:function size:0x38 scope:local +LightDispOn = .text:0x000066CC; // type:function size:0x38 scope:local +CreateSpr = .text:0x00006704; // type:function size:0xC4 scope:local +KillSpr = .text:0x000067C8; // type:function size:0x60 scope:local +OptionSelDisp = .text:0x00006828; // type:function size:0x1E4 scope:local +OptionSelHide = .text:0x00006A0C; // type:function size:0x74 scope:local +OutputModeDisp = .text:0x00006A80; // type:function size:0x1DC scope:local +OutputModeHide = .text:0x00006C5C; // type:function size:0x74 scope:local +MusicPageDisp = .text:0x00006CD0; // type:function size:0x1D4 scope:local +MusicPageHide = .text:0x00006EA4; // type:function size:0xA4 scope:local +VoicePageDisp = .text:0x00006F48; // type:function size:0x1D4 scope:local +VoicePageHide = .text:0x0000711C; // type:function size:0xA4 scope:local +CreateNoteObj = .text:0x000071C0; // type:function size:0xE8 scope:local +KillNote = .text:0x000072A8; // type:function size:0x68 scope:local +HandleNote = .text:0x00007310; // type:function size:0x400 scope:local +CreateNote = .text:0x00007710; // type:function size:0x190 scope:local +CreateNoteSpawner = .text:0x000078A0; // type:function size:0x60 scope:local +KillNoteSpawner = .text:0x00007900; // type:function size:0x3C scope:local +ExecNoteSpawner = .text:0x0000793C; // type:function size:0x5C4 scope:local +PlaySound = .text:0x00007F00; // type:function size:0x148 scope:local +FadeSound = .text:0x00008048; // type:function size:0x9C scope:local +OptionRecordCreate = .text:0x000080E4; // type:function size:0x178 +OptionRecordKill = .text:0x0000825C; // type:function size:0x54 +OptionRecordExecModeSet = .text:0x000082B0; // type:function size:0x44 +OptionRecordExecModeGet = .text:0x000082F4; // type:function size:0x1C +ExecRecord = .text:0x00008310; // type:function size:0x778 scope:local +CreateSystem = .text:0x00008A88; // type:function size:0xD0 scope:local +KillSystem = .text:0x00008B58; // type:function size:0x54 scope:local +StartSystemMotion = .text:0x00008BAC; // type:function size:0xD8 scope:local +CreateHand = .text:0x00008C84; // type:function size:0xFC scope:local +KillHand = .text:0x00008D80; // type:function size:0x54 scope:local +CreateSpr = .text:0x00008DD4; // type:function size:0xC4 scope:local +KillSpr = .text:0x00008E98; // type:function size:0x60 scope:local +GetDigit = .text:0x00008EF8; // type:function size:0x40 scope:local +ShowBoard = .text:0x00008F38; // type:function size:0x72C scope:local +HideBoard = .text:0x00009664; // type:function size:0x9C scope:local +ShowTotal = .text:0x00009700; // type:function size:0x344 scope:local +HideTotal = .text:0x00009A44; // type:function size:0x7C scope:local +ShowMG = .text:0x00009AC0; // type:function size:0x88C scope:local +HideMG = .text:0x0000A34C; // type:function size:0x9C scope:local +OptionWinCreate = .text:0x0000A3E8; // type:function size:0x260 +OptionWinKill = .text:0x0000A648; // type:function size:0x40 +OptionWinAnimIn = .text:0x0000A688; // type:function size:0x18 +OptionWinAnimOut = .text:0x0000A6A0; // type:function size:0x18 +OptionWinMesSet = .text:0x0000A6B8; // type:function size:0x54 +OptionWinInsertMesSet = .text:0x0000A70C; // type:function size:0x40 +OptionWinPosSet = .text:0x0000A74C; // type:function size:0x40 +OptionWinDispOn = .text:0x0000A78C; // type:function size:0x38 +OptionWinDispOff = .text:0x0000A7C4; // type:function size:0x38 +OptionWinMesWait = .text:0x0000A7FC; // type:function size:0x20 +OptionWinChoiceSet = .text:0x0000A81C; // type:function size:0x24 +ExecWindow = .text:0x0000A840; // type:function size:0x108 scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +_half$localstatic3$sqrtf = .rodata:0x00000000; // type:object size:0x8 scope:weak data:double +_three$localstatic4$sqrtf = .rodata:0x00000008; // type:object size:0x8 scope:weak data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +guideAngleTbl = .rodata:0x000000BC; // type:object size:0xC scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local +guideMotTbl = .rodata:0x000000E0; // type:object size:0xC scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:float +musigPageNameTbl = .rodata:0x000001A8; // type:object size:0x38 scope:local +musicTbl = .rodata:0x000001E0; // type:object size:0x8C0 scope:local +voiceCharNameTbl = .rodata:0x00000AA0; // type:object size:0x30 scope:local +lbl_1_rodata_AD0 = .rodata:0x00000AD0; // type:object size:0x780 scope:local +lbl_1_rodata_1250 = .rodata:0x00001250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1254 = .rodata:0x00001254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1258 = .rodata:0x00001258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_125C = .rodata:0x0000125C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1260 = .rodata:0x00001260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1264 = .rodata:0x00001264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1268 = .rodata:0x00001268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1270 = .rodata:0x00001270; // type:object size:0x8 scope:local data:double +outputModeTbl = .rodata:0x00001278; // type:object size:0x8 scope:local +soundModeTbl = .rodata:0x00001280; // type:object size:0x8 scope:local +soundModeNameTbl = .rodata:0x00001288; // type:object size:0x8 scope:local +lbl_1_rodata_1290 = .rodata:0x00001290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1294 = .rodata:0x00001294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1298 = .rodata:0x00001298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_129C = .rodata:0x0000129C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12A0 = .rodata:0x000012A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12A4 = .rodata:0x000012A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12A8 = .rodata:0x000012A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12AC = .rodata:0x000012AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12B0 = .rodata:0x000012B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12B4 = .rodata:0x000012B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12B8 = .rodata:0x000012B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12BC = .rodata:0x000012BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C0 = .rodata:0x000012C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C4 = .rodata:0x000012C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C8 = .rodata:0x000012C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12CC = .rodata:0x000012CC; // type:object size:0x4 scope:local data:float +lightPosTbl = .rodata:0x000012D0; // type:object size:0x24 scope:local +lbl_1_rodata_12F4 = .rodata:0x000012F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12F8 = .rodata:0x000012F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12FC = .rodata:0x000012FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1300 = .rodata:0x00001300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1304 = .rodata:0x00001304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1308 = .rodata:0x00001308; // type:object size:0x1C scope:local +lbl_1_rodata_1324 = .rodata:0x00001324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1328 = .rodata:0x00001328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_132C = .rodata:0x0000132C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1330 = .rodata:0x00001330; // type:object size:0x14 scope:local +lbl_1_rodata_1344 = .rodata:0x00001344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1348 = .rodata:0x00001348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134C = .rodata:0x0000134C; // type:object size:0x4 scope:local +lbl_1_rodata_1350 = .rodata:0x00001350; // type:object size:0x8 scope:local +lbl_1_rodata_1358 = .rodata:0x00001358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1360 = .rodata:0x00001360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1368 = .rodata:0x00001368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_136C = .rodata:0x0000136C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1370 = .rodata:0x00001370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1378 = .rodata:0x00001378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1380 = .rodata:0x00001380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1384 = .rodata:0x00001384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1388 = .rodata:0x00001388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1390 = .rodata:0x00001390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1394 = .rodata:0x00001394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1398 = .rodata:0x00001398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_139C = .rodata:0x0000139C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13A0 = .rodata:0x000013A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_13A8 = .rodata:0x000013A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_13B0 = .rodata:0x000013B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13B4 = .rodata:0x000013B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13B8 = .rodata:0x000013B8; // type:object size:0x8 scope:local data:float +mgRecordIdxTbl = .rodata:0x000013C0; // type:object size:0x18 scope:local +lbl_1_rodata_13D8 = .rodata:0x000013D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13DC = .rodata:0x000013DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13E0 = .rodata:0x000013E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13E4 = .rodata:0x000013E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13E8 = .rodata:0x000013E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13EC = .rodata:0x000013EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13F0 = .rodata:0x000013F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13F4 = .rodata:0x000013F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13F8 = .rodata:0x000013F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1400 = .rodata:0x00001400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1408 = .rodata:0x00001408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140C = .rodata:0x0000140C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1410 = .rodata:0x00001410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1414 = .rodata:0x00001414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1418 = .rodata:0x00001418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1420 = .rodata:0x00001420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1428 = .rodata:0x00001428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_142C = .rodata:0x0000142C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1430 = .rodata:0x00001430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1434 = .rodata:0x00001434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1438 = .rodata:0x00001438; // type:object size:0x4 scope:local data:float +sprTbl = .rodata:0x0000143C; // type:object size:0x264 scope:local +lbl_1_rodata_16A0 = .rodata:0x000016A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16A4 = .rodata:0x000016A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16A8 = .rodata:0x000016A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16AC = .rodata:0x000016AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16B0 = .rodata:0x000016B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16B4 = .rodata:0x000016B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16B8 = .rodata:0x000016B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16BC = .rodata:0x000016BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C0 = .rodata:0x000016C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C4 = .rodata:0x000016C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C8 = .rodata:0x000016C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16CC = .rodata:0x000016CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16D0 = .rodata:0x000016D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16D4 = .rodata:0x000016D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16D8 = .rodata:0x000016D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16DC = .rodata:0x000016DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16E0 = .rodata:0x000016E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16E4 = .rodata:0x000016E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16E8 = .rodata:0x000016E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16EC = .rodata:0x000016EC; // type:object size:0x4 scope:local data:float +boardSprHideTbl = .rodata:0x000016F0; // type:object size:0xD4 scope:local +lbl_1_rodata_17C4 = .rodata:0x000017C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C8 = .rodata:0x000017C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17CC = .rodata:0x000017CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17D0 = .rodata:0x000017D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17D4 = .rodata:0x000017D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17D8 = .rodata:0x000017D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17DC = .rodata:0x000017DC; // type:object size:0x4 scope:local data:float +totalSprHideTbl = .rodata:0x000017E0; // type:object size:0x84 scope:local +mgTbl = .rodata:0x00001864; // type:object size:0x48 scope:local +lbl_1_rodata_18AC = .rodata:0x000018AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18B0 = .rodata:0x000018B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18B4 = .rodata:0x000018B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18B8 = .rodata:0x000018B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18BC = .rodata:0x000018BC; // type:object size:0x4 scope:local data:float +mgSprHideTbl = .rodata:0x000018C0; // type:object size:0x108 scope:local +lbl_1_rodata_19C8 = .rodata:0x000019C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19CC = .rodata:0x000019CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19D0 = .rodata:0x000019D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19D4 = .rodata:0x000019D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19D8 = .rodata:0x000019D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19DC = .rodata:0x000019DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19E0 = .rodata:0x000019E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19E4 = .rodata:0x000019E4; // type:object size:0x4 scope:local data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x1B scope:local data:string +lbl_1_data_37 = .data:0x00000037; // type:object size:0x1B scope:local data:string +lbl_1_data_52 = .data:0x00000052; // type:object size:0x16 scope:local data:string +execModeTbl = .data:0x00000068; // type:object size:0x8 scope:local data:4byte +jumptable_1_data_70 = .data:0x00000070; // type:object size:0x24 scope:local +execModeTbl = .data:0x00000098; // type:object size:0x8 scope:local data:4byte +lightTbl = .data:0x000000A0; // type:object size:0x1C scope:local +shadowPosTbl = .data:0x000000BC; // type:object size:0x24 scope:local +jumptable_1_data_E0 = .data:0x000000E0; // type:object size:0x24 scope:local +execModeTbl = .data:0x00000108; // type:object size:0x8 scope:local data:4byte +lbl_1_data_110 = .data:0x00000110; // type:object size:0x8 scope:local +musicPageOn = .data:0x00000118; // type:object size:0x38 scope:local data:4byte +execModeTbl = .data:0x00000150; // type:object size:0x18 scope:local data:4byte +choiceMess = .data:0x00000168; // type:object size:0xC scope:local +jumptable_1_data_174 = .data:0x00000174; // type:object size:0x24 scope:local +jumptable_1_data_198 = .data:0x00000198; // type:object size:0x24 scope:local +spriteDataTbl = .data:0x000001BC; // type:object size:0x4C scope:local +noteMdlTbl = .data:0x00000208; // type:object size:0x8 scope:local +execModeTbl = .data:0x00000210; // type:object size:0x8 scope:local data:4byte +jumptable_1_data_218 = .data:0x00000218; // type:object size:0x1C scope:local +jumptable_1_data_234 = .data:0x00000234; // type:object size:0x20 scope:local +rumbleF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +scene = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +optionObjMan = .bss:0x00000008; // type:object size:0x8 data:4byte +optionCamera = .bss:0x00000010; // type:object size:0x8 data:4byte +optionRoom = .bss:0x00000018; // type:object size:0x8 data:4byte +optionGuide = .bss:0x00000020; // type:object size:0x8 data:4byte +optionState = .bss:0x00000028; // type:object size:0x8 data:4byte +optionRumble = .bss:0x00000030; // type:object size:0x8 data:4byte +optionSound = .bss:0x00000038; // type:object size:0x8 data:4byte +optionRecord = .bss:0x00000040; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/present/splits.txt b/config/GMPP01_00/rels/present/splits.txt new file mode 100644 index 00000000..3c65c150 --- /dev/null +++ b/config/GMPP01_00/rels/present/splits.txt @@ -0,0 +1,36 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/present/init.c: + .text start:0x000000A0 end:0x000006B4 + .rodata start:0x00000000 end:0x00000020 + .bss start:0x00000000 end:0x00000020 + +REL/present/camera.c: + .text start:0x000006B4 end:0x00001458 + .rodata start:0x00000020 end:0x000000A0 + .data start:0x00000000 end:0x00000050 + +REL/present/present.c: + .text start:0x00001458 end:0x000039A8 + .rodata start:0x000000A0 end:0x00000BB0 + .data start:0x00000050 end:0x000000F0 + +REL/present/main.c: + .text start:0x000039A8 end:0x000042F4 + .rodata start:0x00000BB0 end:0x00000BD8 + .data start:0x000000F0 end:0x000001A0 + .bss start:0x00000020 end:0x00000024 + +REL/present/common.c: + .text start:0x000042F4 end:0x00004DF0 + .rodata start:0x00000BD8 end:0x00000C50 + .data start:0x000001A0 end:0x000001AC diff --git a/config/GMPP01_00/rels/present/symbols.txt b/config/GMPP01_00/rels/present/symbols.txt new file mode 100644 index 00000000..332b6bce --- /dev/null +++ b/config/GMPP01_00/rels/present/symbols.txt @@ -0,0 +1,193 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0xA4 +PresentFadeSprite = .text:0x00000144; // type:function size:0x110 +FadeSprite = .text:0x00000254; // type:function size:0xE0 scope:local +FadeSpriteWithMultiplier = .text:0x00000334; // type:function size:0x128 +FadeModel = .text:0x0000045C; // type:function size:0xF4 scope:local +PresentPadCheck = .text:0x00000550; // type:function size:0x34 +PresentPadDStkRepCheck = .text:0x00000584; // type:function size:0x34 +PresentPadDStkCheck = .text:0x000005B8; // type:function size:0x34 +SceneMain = .text:0x000005EC; // type:function size:0xC8 scope:local +PresentCameraCreate = .text:0x000006B4; // type:function size:0x23C +PresentCameraKill = .text:0x000008F0; // type:function size:0x30 +PresentCameraTargetSet = .text:0x00000920; // type:function size:0x84 +PresentCameraFocusSet = .text:0x000009A4; // type:function size:0x84 +PresentCameraViewSet = .text:0x00000A28; // type:function size:0x84 +PresentCameraZoomGet = .text:0x00000AAC; // type:function size:0x30 +PresentCameraRotGet = .text:0x00000ADC; // type:function size:0x30 +PresentCameraPosGet = .text:0x00000B0C; // type:function size:0x30 +PresentCameraTargetGet = .text:0x00000B3C; // type:function size:0x30 +PresentCameraDoneCheck = .text:0x00000B6C; // type:function size:0x8C +ExecCameraObj = .text:0x00000BF8; // type:function size:0x28 scope:local +ExecCamera = .text:0x00000C20; // type:function size:0x578 scope:local +CameraExecDebug = .text:0x00001198; // type:function size:0x200 scope:local +CameraPrintDebug = .text:0x00001398; // type:function size:0xC0 scope:local +PresentCreate = .text:0x00001458; // type:function size:0x32C +PresentKill = .text:0x00001784; // type:function size:0x88 +PresentExecModeSet = .text:0x0000180C; // type:function size:0x44 +PresentExecModeGet = .text:0x00001850; // type:function size:0x1C +PresentSelectedIDSet = .text:0x0000186C; // type:function size:0xBC +ExecSelectRoom = .text:0x00001928; // type:function size:0x680 scope:local +ChangeRoom = .text:0x00001FA8; // type:function size:0x140 scope:local +ExecSelectPresent = .text:0x000020E8; // type:function size:0x5A4 scope:local +GetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local +SetCameraRot = .text:0x00002708; // type:function size:0x6C scope:local +RotateCamera = .text:0x00002774; // type:function size:0x17C scope:local +CameraRotationDoneCheck = .text:0x000028F0; // type:function size:0x34 scope:local +ShowHidePresents = .text:0x00002924; // type:function size:0x260 scope:local +PresentUnlocked = .text:0x00002B84; // type:function size:0x48 scope:local +UnlockedPresents = .text:0x00002BCC; // type:function size:0x90 scope:local +MoveCursor = .text:0x00002C5C; // type:function size:0x738 scope:local +TotalPresentsInRoom = .text:0x00003394; // type:function size:0x18 scope:local +ExecPresentGet = .text:0x000033AC; // type:function size:0x590 scope:local +fn_1_393C = .text:0x0000393C; // type:function size:0x6C scope:local +PresentStateCreate = .text:0x000039A8; // type:function size:0x170 +PresentStateKill = .text:0x00003B18; // type:function size:0x74 +ExecPresentView = .text:0x00003B8C; // type:function size:0x22C scope:local +ExecPresentGet = .text:0x00003DB8; // type:function size:0xEC scope:local +PresentWinCreate = .text:0x00003EA4; // type:function size:0x19C +PresentWinKill = .text:0x00004040; // type:function size:0x40 +PresentWinAnimIn = .text:0x00004080; // type:function size:0x18 +PresentWinAnimOut = .text:0x00004098; // type:function size:0x18 +PresentWinMesSet = .text:0x000040B0; // type:function size:0x54 +PresentWinInsertMesSet = .text:0x00004104; // type:function size:0x40 +PresentWinPosSet = .text:0x00004144; // type:function size:0x40 +PresentWinDispOn = .text:0x00004184; // type:function size:0xC +PresentWinDispOff = .text:0x00004190; // type:function size:0xC +PresentWinMesWait = .text:0x0000419C; // type:function size:0x20 +PresentWinChoiceSet = .text:0x000041BC; // type:function size:0x24 +ExecWindow = .text:0x000041E0; // type:function size:0x114 scope:local +PresentGuideCreate = .text:0x000042F4; // type:function size:0x240 +PresentGuideKill = .text:0x00004534; // type:function size:0x8C +PresentGuideExecModeSet = .text:0x000045C0; // type:function size:0x44 +PresentGuideExecModeGet = .text:0x00004604; // type:function size:0x1C +ExecGuideEnter = .text:0x00004620; // type:function size:0x260 scope:local +ExecGuideLeave = .text:0x00004880; // type:function size:0x184 scope:local +UpdateGuide = .text:0x00004A04; // type:function size:0x2E8 scope:local +LerpAngle = .text:0x00004CEC; // type:function size:0x104 scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +presentMdlTbl = .rodata:0x000000A0; // type:object size:0x218 scope:local +roomTbl = .rodata:0x000002B8; // type:object size:0x708 scope:local +lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9D0 = .rodata:0x000009D0; // type:object size:0x8 scope:local data:float +roomIdxTbl = .rodata:0x000009D8; // type:object size:0x20 scope:local +roomMessTbl = .rodata:0x000009F8; // type:object size:0x28 scope:local +lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A38 = .rodata:0x00000A38; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A3C = .rodata:0x00000A3C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A40 = .rodata:0x00000A40; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A44 = .rodata:0x00000A44; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A48 = .rodata:0x00000A48; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A50 = .rodata:0x00000A50; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A58 = .rodata:0x00000A58; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A60 = .rodata:0x00000A60; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A68 = .rodata:0x00000A68; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A70 = .rodata:0x00000A70; // type:object size:0x4 scope:local data:float +roomPresentOffsetTbl = .rodata:0x00000A74; // type:object size:0x28 scope:local +lbl_1_rodata_A9C = .rodata:0x00000A9C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AA4 = .rodata:0x00000AA4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AA8 = .rodata:0x00000AA8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AAC = .rodata:0x00000AAC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AB0 = .rodata:0x00000AB0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AB8 = .rodata:0x00000AB8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_AC0 = .rodata:0x00000AC0; // type:object size:0x8 scope:local data:double +totalPresentCntTbl = .rodata:0x00000AC8; // type:object size:0x28 scope:local +presentItemIdxTbl = .rodata:0x00000AF0; // type:object size:0x28 scope:local +lbl_1_rodata_B18 = .rodata:0x00000B18; // type:object size:0x28 scope:local +constellationIdxTbl = .rodata:0x00000B40; // type:object size:0x28 scope:local +roofIdxTbl = .rodata:0x00000B68; // type:object size:0x28 scope:local +lbl_1_rodata_B90 = .rodata:0x00000B90; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B94 = .rodata:0x00000B94; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B98 = .rodata:0x00000B98; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B9C = .rodata:0x00000B9C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BA0 = .rodata:0x00000BA0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BA4 = .rodata:0x00000BA4; // type:object size:0x8 scope:local +lbl_1_rodata_BB0 = .rodata:0x00000BB0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BB4 = .rodata:0x00000BB4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BB8 = .rodata:0x00000BB8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BBC = .rodata:0x00000BBC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC0 = .rodata:0x00000BC0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC4 = .rodata:0x00000BC4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC8 = .rodata:0x00000BC8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BCC = .rodata:0x00000BCC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BD0 = .rodata:0x00000BD0; // type:object size:0x4 scope:local data:float +guideMotTbl = .rodata:0x00000BD8; // type:object size:0xC scope:local +lbl_1_rodata_BE4 = .rodata:0x00000BE4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BE8 = .rodata:0x00000BE8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BEC = .rodata:0x00000BEC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BF0 = .rodata:0x00000BF0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BF4 = .rodata:0x00000BF4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BF8 = .rodata:0x00000BF8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C00 = .rodata:0x00000C00; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C08 = .rodata:0x00000C08; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C10 = .rodata:0x00000C10; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C14 = .rodata:0x00000C14; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C18 = .rodata:0x00000C18; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C1C = .rodata:0x00000C1C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C20 = .rodata:0x00000C20; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C28 = .rodata:0x00000C28; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C30 = .rodata:0x00000C30; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C34 = .rodata:0x00000C34; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C38 = .rodata:0x00000C38; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C40 = .rodata:0x00000C40; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C48 = .rodata:0x00000C48; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4C = .rodata:0x00000C4C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B scope:local data:string +lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1B scope:local data:string +lbl_1_data_36 = .data:0x00000036; // type:object size:0x16 scope:local data:string +lightTbl = .data:0x00000050; // type:object size:0x1C scope:local data:4byte +execModeTbl = .data:0x0000006C; // type:object size:0x10 scope:local data:4byte +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x7 scope:local data:string +roomIdxTbl2 = .data:0x00000084; // type:object size:0x20 +jumptable_1_data_A4 = .data:0x000000A4; // type:object size:0x2C scope:local +jumptable_1_data_D0 = .data:0x000000D0; // type:object size:0x1C scope:local +shadowPosTbl = .data:0x000000F0; // type:object size:0x24 scope:local data:float +lbl_1_data_114 = .data:0x00000114; // type:object size:0x2A scope:local data:string +lbl_1_data_13E = .data:0x0000013E; // type:object size:0x2B scope:local data:string +jumptable_1_data_16C = .data:0x0000016C; // type:object size:0x34 scope:local +execModeTbl = .data:0x000001A0; // type:object size:0xC scope:local data:4byte +scene = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +presentObjMan = .bss:0x00000004; // type:object size:0x4 data:4byte +presentCamera = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +present = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +presentState = .bss:0x00000018; // type:object size:0x4 data:4byte +presentGuide = .bss:0x00000020; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/resultDll/splits.txt b/config/GMPP01_00/rels/resultDll/splits.txt new file mode 100644 index 00000000..a2f15b2b --- /dev/null +++ b/config/GMPP01_00/rels/resultDll/splits.txt @@ -0,0 +1,27 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/resultDll/main.c: + .text start:0x000000A0 end:0x00006490 + .rodata start:0x00000000 end:0x00000160 + .data start:0x00000000 end:0x000004E8 + .bss start:0x00000000 end:0x00000190 + +REL/resultDll/battle.c: + .text start:0x00006490 end:0x00008FF8 + .rodata start:0x00000160 end:0x00000220 + .data start:0x000004E8 end:0x00000918 + .bss start:0x00000190 end:0x00001A18 + +REL/resultDll/datalist.c: + .text start:0x00008FF8 end:0x0000942C + .rodata start:0x00000220 end:0x00000230 + .bss start:0x00001A18 end:0x00001ADC diff --git a/config/GMPP01_00/rels/resultDll/symbols.txt b/config/GMPP01_00/rels/resultDll/symbols.txt new file mode 100644 index 00000000..db16ef1b --- /dev/null +++ b/config/GMPP01_00/rels/resultDll/symbols.txt @@ -0,0 +1,210 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x438 +ResultMain = .text:0x000004D8; // type:function size:0x3B0 scope:local +ResultIdle = .text:0x00000888; // type:function size:0x2F0 scope:local +ResultCreate = .text:0x00000B78; // type:function size:0x13D4 scope:local +ResultStatAdd = .text:0x00001F4C; // type:function size:0xB90 scope:local +ResultOrderApply = .text:0x00002ADC; // type:function size:0x1074 scope:local +ResultSprNumSet = .text:0x00003B50; // type:function size:0x15C scope:local +ResultCoinAddNumSet = .text:0x00003CAC; // type:function size:0x15C scope:local +ResultOrderSet = .text:0x00003E08; // type:function size:0x1D0 scope:local +ResultBoardDataRead = .text:0x00003FD8; // type:function size:0x104 +ResultCoinAdd = .text:0x000040DC; // type:function size:0x160 +ResultCoinNumGet = .text:0x0000423C; // type:function size:0x3E0 +SaveExec = .text:0x0000461C; // type:function size:0x1E0 scope:local +ResultTeamExec = .text:0x000047FC; // type:function size:0x1084 scope:local +CameraDebug = .text:0x00005880; // type:function size:0xC10 +ResultBattleMain = .text:0x00006490; // type:function size:0x2D0 +ResultBattleIdle = .text:0x00006760; // type:function size:0xC4 scope:local +ResultBattleCreate = .text:0x00006824; // type:function size:0xD20 scope:local +ResultBattleStatAdd = .text:0x00007544; // type:function size:0xA54 scope:local +ResultBattleCoinAddShow = .text:0x00007F98; // type:function size:0x3A0 scope:local +ResultBattleCoinAddNumSet = .text:0x00008338; // type:function size:0x14C scope:local +ResultBattleOrderSet = .text:0x00008484; // type:function size:0x1D4 scope:local +CoinEffectInit = .text:0x00008658; // type:function size:0x84 scope:local +CoinEffectAdd = .text:0x000086DC; // type:function size:0x2BC scope:local +CoinEffectMain = .text:0x00008998; // type:function size:0x320 scope:local +ResultShadowDraw = .text:0x00008CB8; // type:function size:0x340 scope:local +StageModelCreate = .text:0x00008FF8; // type:function size:0x284 +StageSpriteCreate = .text:0x0000927C; // type:function size:0x138 +StageSpriteKill = .text:0x000093B4; // type:function size:0x78 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +resultModel = .data:0x00000000; // type:object size:0x2A4 scope:local +resultSprite = .data:0x000002A4; // type:object size:0xDC scope:local data:4byte +rankNewGrpId = .data:0x00000380; // type:object size:0x2 scope:local data:2byte +lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string +resultBackFile = .data:0x000003A8; // type:object size:0x18 scope:local +resultLetterFile = .data:0x000003C0; // type:object size:0x18 scope:local +resultStatPosTbl = .data:0x000003D8; // type:object size:0x20 scope:local +resultRankPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local +resultCharPosTbl = .data:0x00000408; // type:object size:0x30 scope:local +resultCoinAddPosTbl = .data:0x00000438; // type:object size:0x10 scope:local +lbl_1_data_448 = .data:0x00000448; // type:object size:0x5 scope:local data:string +resultBoardDirTbl = .data:0x00000450; // type:object size:0x18 scope:local +resultCharMdlTbl = .data:0x00000468; // type:object size:0x20 scope:local +resultTeamCharPosTbl = .data:0x00000488; // type:object size:0x30 scope:local +lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string +lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string +resultBattleModel = .data:0x000004E8; // type:object size:0x270 scope:local +resultBattleSprite = .data:0x00000758; // type:object size:0x28 scope:local +resultBattleEffParMan = .data:0x00000780; // type:object size:0x50 scope:local +resultStatPosTbl = .data:0x000007D0; // type:object size:0x20 scope:local +playerPosTbl = .data:0x000007F0; // type:object size:0x30 scope:local +lbl_1_data_820 = .data:0x00000820; // type:object size:0x10 +bomheiCubeMdlTbl = .data:0x00000830; // type:object size:0x10 scope:local +coinEffectYOfs = .data:0x00000840; // type:object size:0x20 scope:local +coinAddYOfs = .data:0x00000860; // type:object size:0x20 scope:local +coinBlankYOfs = .data:0x00000880; // type:object size:0x20 scope:local +coinNumXOfs = .data:0x000008A0; // type:object size:0x6 scope:local data:2byte +lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:string +lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:string +cameraShakeOfs = .data:0x000008B8; // type:object size:0x60 scope:local +resultReorderF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +resultSkipF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +resultTeamOrder = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte +resultCharCubeMdlId = .bss:0x0000000A; // type:object size:0x8 scope:local +resultCoinAddSprId = .bss:0x00000012; // type:object size:0x28 scope:local +resultCoinAddGrpId = .bss:0x0000003A; // type:object size:0x8 scope:local +resultRank = .bss:0x00000042; // type:object size:0x8 scope:local +resultOrder = .bss:0x0000004A; // type:object size:0x8 scope:local +resultRankGrpId = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte +resultPlayerCubeMdlId = .bss:0x00000054; // type:object size:0x8 scope:local +resultCubeMdlId = .bss:0x0000005C; // type:object size:0x40 scope:local +resultCrownGrpId = .bss:0x0000009C; // type:object size:0x2 scope:local data:2byte +resultNumSprId = .bss:0x0000009E; // type:object size:0x30 scope:local +resultNumGrpId = .bss:0x000000CE; // type:object size:0x10 scope:local +resultCrownAnim = .bss:0x000000E0; // type:object size:0x4 scope:local data:4byte +resultCharAnim = .bss:0x000000E4; // type:object size:0x60 scope:local +resultRankAnim = .bss:0x00000144; // type:object size:0x14 scope:local +statShadowMdlId = .bss:0x00000158; // type:object size:0x10 scope:local +charShadowMdlId = .bss:0x00000168; // type:object size:0x8 scope:local +teamResultGrpId = .bss:0x00000170; // type:object size:0x2 scope:local data:2byte +resultBonusPlayer = .bss:0x00000172; // type:object size:0x2 data:2byte +resultFastF = .bss:0x00000174; // type:object size:0x4 data:4byte +resultReadEndF = .bss:0x00000178; // type:object size:0x4 data:4byte +resultMgNo = .bss:0x0000017C; // type:object size:0x2 data:2byte +objman = .bss:0x00000180; // type:object size:0x4 data:4byte +outViewObj = .bss:0x00000184; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte +resultBattleSkipF = .bss:0x00000190; // type:object size:0x4 scope:local data:4byte +coinEffectData = .bss:0x00000194; // type:object size:0x1680 scope:local +resultBattleEffParManId = .bss:0x00001814; // type:object size:0x8 scope:local +lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC +coinEffectMdlId = .bss:0x00001828; // type:object size:0x168 scope:local data:2byte +resultBattleCharMot = .bss:0x00001990; // type:object size:0x20 scope:local +resultBattleCharMdl = .bss:0x000019B0; // type:object size:0x8 scope:local +coinNumSprId = .bss:0x000019B8; // type:object size:0x28 scope:local +coinNumGrpId = .bss:0x000019E0; // type:object size:0x8 scope:local +resultBattleRank = .bss:0x000019E8; // type:object size:0x8 scope:local +resultBattleOrder = .bss:0x000019F0; // type:object size:0x8 scope:local +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 diff --git a/config/GMPP01_00/rels/safDll/splits.txt b/config/GMPP01_00/rels/safDll/splits.txt new file mode 100644 index 00000000..43792488 --- /dev/null +++ b/config/GMPP01_00/rels/safDll/splits.txt @@ -0,0 +1,12 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/safDll/main.c: + .text start:0x00000000 end:0x000003AC + .rodata start:0x00000000 end:0x00000024 + .data start:0x00000000 end:0x00000039 diff --git a/config/GMPP01_00/rels/safDll/symbols.txt b/config/GMPP01_00/rels/safDll/symbols.txt new file mode 100644 index 00000000..6a012c0c --- /dev/null +++ b/config/GMPP01_00/rels/safDll/symbols.txt @@ -0,0 +1,14 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4 +safMarioEyeDim = .text:0x00000004; // type:function size:0x284 +safSaveTest = .text:0x00000288; // type:function size:0x124 +_ctors = .ctors:0x00000000; // type:label scope:global +_dtors = .dtors:0x00000000; // type:label scope:global +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4 +lbl_1_data_4 = .data:0x00000004; // type:object size:0xE scope:local data:string +lbl_1_data_12 = .data:0x00000012; // type:object size:0xB scope:local data:string +lbl_1_data_1D = .data:0x0000001D; // type:object size:0xE scope:local data:string +lbl_1_data_2B = .data:0x0000002B; // type:object size:0xE scope:local data:string diff --git a/config/GMPP01_00/rels/selmenuDll/splits.txt b/config/GMPP01_00/rels/selmenuDll/splits.txt new file mode 100644 index 00000000..39e27b1f --- /dev/null +++ b/config/GMPP01_00/rels/selmenuDll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/selmenuDll/main.c: + .text start:0x000000A0 end:0x00005198 + .rodata start:0x00000000 end:0x00000084 + .data start:0x00000000 end:0x00000B3F + .bss start:0x00000000 end:0x00000098 diff --git a/config/GMPP01_00/rels/selmenuDll/symbols.txt b/config/GMPP01_00/rels/selmenuDll/symbols.txt new file mode 100644 index 00000000..199e2ba8 --- /dev/null +++ b/config/GMPP01_00/rels/selmenuDll/symbols.txt @@ -0,0 +1,204 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x4B8 +CopyPlayerCfg = .text:0x00000558; // type:function size:0x60 scope:local +CalcBtns = .text:0x000005B8; // type:function size:0x324 scope:local +DrawPage = .text:0x000008DC; // type:function size:0x170 scope:local +MoveSMPage = .text:0x00000A4C; // type:function size:0x180 scope:local +MoveSMCursor = .text:0x00000BCC; // type:function size:0x88 scope:local +SMInit = .text:0x00000C54; // type:function size:0x474 scope:local +SMUpdate = .text:0x000010C8; // type:function size:0xA78 scope:local +SMGroupGen = .text:0x00001B40; // type:function size:0x334 scope:local +SMChangeChar = .text:0x00001E74; // type:function size:0x110 scope:local +SMCharKill = .text:0x00001F84; // type:function size:0x50 scope:local +CharRandomize = .text:0x00001FD4; // type:function size:0x10C scope:local +SMCharInit = .text:0x000020E0; // type:function size:0x1F8 scope:local +SMCharUpdate = .text:0x000022D8; // type:function size:0xD6C scope:local +SMExit = .text:0x00003044; // type:function size:0x2FC scope:local +SMPlayerCfgDraw = .text:0x00003340; // type:function size:0x804 scope:local +SMPlayerCfgInit = .text:0x00003B44; // type:function size:0x40 scope:local +SMPlayerCfgUpdate = .text:0x00003B84; // type:function size:0x968 scope:local +SMRand8Tick = .text:0x000044EC; // type:function size:0x20 scope:local +fn_1_450C = .text:0x0000450C; // type:function size:0x4 +SMSound3DInit = .text:0x00004510; // type:function size:0x64 scope:local +SMSound3DUpdate = .text:0x00004574; // type:function size:0x854 scope:local +SMSound3DDraw = .text:0x00004DC8; // type:function size:0x3D0 scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x8 scope:local data:4byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x6 scope:local data:string +lbl_1_data_6 = .data:0x00000006; // type:object size:0x6 scope:local data:string +lbl_1_data_C = .data:0x0000000C; // type:object size:0x6 scope:local data:string +lbl_1_data_12 = .data:0x00000012; // type:object size:0x6 scope:local data:string +lbl_1_data_18 = .data:0x00000018; // type:object size:0x6 scope:local data:string +lbl_1_data_1E = .data:0x0000001E; // type:object size:0x7 scope:local data:string +lbl_1_data_25 = .data:0x00000025; // type:object size:0x6 scope:local data:string +lbl_1_data_2B = .data:0x0000002B; // type:object size:0x8 scope:local data:string +smCharTbl = .data:0x00000034; // type:object size:0x20 scope:local +lbl_1_data_54 = .data:0x00000054; // type:object size:0x14 scope:local data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x16 scope:local data:string +lbl_1_data_7E = .data:0x0000007E; // type:object size:0x11 scope:local data:string +lbl_1_data_8F = .data:0x0000008F; // type:object size:0x12 scope:local data:string +lbl_1_data_A1 = .data:0x000000A1; // type:object size:0x10 scope:local data:string +lbl_1_data_B1 = .data:0x000000B1; // type:object size:0xD scope:local data:string +lbl_1_data_BE = .data:0x000000BE; // type:object size:0x11 scope:local data:string +lbl_1_data_CF = .data:0x000000CF; // type:object size:0xD scope:local data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xE scope:local data:string +lbl_1_data_EA = .data:0x000000EA; // type:object size:0x16 scope:local data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0x13 scope:local data:string +lbl_1_data_113 = .data:0x00000113; // type:object size:0xF scope:local data:string +lbl_1_data_122 = .data:0x00000122; // type:object size:0x14 scope:local data:string +lbl_1_data_136 = .data:0x00000136; // type:object size:0x11 scope:local data:string +lbl_1_data_147 = .data:0x00000147; // type:object size:0x13 scope:local data:string +lbl_1_data_15A = .data:0x0000015A; // type:object size:0x10 scope:local data:string +lbl_1_data_16A = .data:0x0000016A; // type:object size:0x11 scope:local data:string +lbl_1_data_17B = .data:0x0000017B; // type:object size:0x15 scope:local data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0x17 scope:local data:string +lbl_1_data_1A7 = .data:0x000001A7; // type:object size:0x11 scope:local data:string +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0x10 scope:local data:string +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x10 scope:local data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x12 scope:local data:string +lbl_1_data_1EA = .data:0x000001EA; // type:object size:0x10 scope:local data:string +lbl_1_data_1FA = .data:0x000001FA; // type:object size:0xF scope:local data:string +lbl_1_data_209 = .data:0x00000209; // type:object size:0x15 scope:local data:string +lbl_1_data_21E = .data:0x0000021E; // type:object size:0xE scope:local data:string +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x13 scope:local data:string +lbl_1_data_23F = .data:0x0000023F; // type:object size:0x14 scope:local data:string +lbl_1_data_253 = .data:0x00000253; // type:object size:0x13 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x11 scope:local data:string +lbl_1_data_277 = .data:0x00000277; // type:object size:0x11 scope:local data:string +lbl_1_data_288 = .data:0x00000288; // type:object size:0x11 scope:local data:string +lbl_1_data_299 = .data:0x00000299; // type:object size:0x10 scope:local data:string +lbl_1_data_2A9 = .data:0x000002A9; // type:object size:0x10 scope:local data:string +lbl_1_data_2B9 = .data:0x000002B9; // type:object size:0x1B scope:local data:string +lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x11 scope:local data:string +lbl_1_data_2E5 = .data:0x000002E5; // type:object size:0x1D scope:local data:string +lbl_1_data_302 = .data:0x00000302; // type:object size:0x17 scope:local data:string +lbl_1_data_319 = .data:0x00000319; // type:object size:0x16 scope:local data:string +lbl_1_data_32F = .data:0x0000032F; // type:object size:0x15 scope:local data:string +lbl_1_data_344 = .data:0x00000344; // type:object size:0x13 scope:local data:string +lbl_1_data_357 = .data:0x00000357; // type:object size:0xE scope:local data:string +lbl_1_data_365 = .data:0x00000365; // type:object size:0x14 scope:local data:string +lbl_1_data_379 = .data:0x00000379; // type:object size:0x13 scope:local data:string +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x12 scope:local data:string +lbl_1_data_39E = .data:0x0000039E; // type:object size:0xD scope:local data:string +lbl_1_data_3AB = .data:0x000003AB; // type:object size:0xD scope:local data:string +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x17 scope:local data:string +lbl_1_data_3CF = .data:0x000003CF; // type:object size:0xE scope:local data:string +lbl_1_data_3DD = .data:0x000003DD; // type:object size:0xB scope:local data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x11 scope:local data:string +lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x11 scope:local data:string +lbl_1_data_40A = .data:0x0000040A; // type:object size:0xA scope:local data:string +lbl_1_data_414 = .data:0x00000414; // type:object size:0x13 scope:local data:string +lbl_1_data_427 = .data:0x00000427; // type:object size:0xD scope:local data:string +lbl_1_data_434 = .data:0x00000434; // type:object size:0x5 scope:local data:string +lbl_1_data_439 = .data:0x00000439; // type:object size:0x15 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x5 scope:local data:string +lbl_1_data_453 = .data:0x00000453; // type:object size:0xF scope:local data:string +lbl_1_data_462 = .data:0x00000462; // type:object size:0xE scope:local data:string +lbl_1_data_470 = .data:0x00000470; // type:object size:0xE scope:local data:string +lbl_1_data_47E = .data:0x0000047E; // type:object size:0xE scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0xE scope:local data:string +lbl_1_data_49A = .data:0x0000049A; // type:object size:0xE scope:local data:string +lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0xE scope:local data:string +lbl_1_data_4B6 = .data:0x000004B6; // type:object size:0xE scope:local data:string +lbl_1_data_4C4 = .data:0x000004C4; // type:object size:0xE scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0xA scope:local data:string +lbl_1_data_4DC = .data:0x000004DC; // type:object size:0xF scope:local data:string +smMenuTbl = .data:0x000004EC; // type:object size:0x348 scope:local +cameraMaskTbl = .data:0x00000834; // type:object size:0x10 scope:local +lbl_1_data_844 = .data:0x00000844; // type:object size:0x18 scope:local +lbl_1_data_85C = .data:0x0000085C; // type:object size:0x12 scope:local data:string +lbl_1_data_86E = .data:0x0000086E; // type:object size:0x12 scope:local data:string +lbl_1_data_880 = .data:0x00000880; // type:object size:0x12 scope:local data:string +lbl_1_data_892 = .data:0x00000892; // type:object size:0x12 scope:local data:string +lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x12 scope:local data:string +lbl_1_data_8B6 = .data:0x000008B6; // type:object size:0x12 scope:local data:string +lbl_1_data_8C8 = .data:0x000008C8; // type:object size:0x11 scope:local data:string +lbl_1_data_8D9 = .data:0x000008D9; // type:object size:0x1 scope:local +dvdMusTbl = .data:0x000008DC; // type:object size:0x20 scope:local +smSelectPosExit = .data:0x000008FC; // type:object size:0x2 scope:local data:2byte +keyDStkAllPrev = .data:0x000008FE; // type:object size:0x8 scope:local +lbl_1_data_906 = .data:0x00000906; // type:object size:0xF scope:local data:string +funcId$244 = .data:0x00000918; // type:object size:0x4 scope:local data:4byte +lbl_1_data_91C = .data:0x0000091C; // type:object size:0x12 scope:local data:string +lbl_1_data_92E = .data:0x0000092E; // type:object size:0x24 scope:local data:string +lbl_1_data_952 = .data:0x00000952; // type:object size:0xB scope:local data:string +lbl_1_data_95D = .data:0x0000095D; // type:object size:0x3 scope:local data:string +lbl_1_data_960 = .data:0x00000960; // type:object size:0xD scope:local data:string +charMdlTbl = .data:0x00000970; // type:object size:0x20 scope:local +charMdlMotTbl = .data:0x00000990; // type:object size:0x20 scope:local +lbl_1_data_9B0 = .data:0x000009B0; // type:object size:0xD scope:local data:string +lbl_1_data_9BD = .data:0x000009BD; // type:object size:0x5 scope:local +lbl_1_data_9C2 = .data:0x000009C2; // type:object size:0x5 scope:local +lbl_1_data_9C7 = .data:0x000009C7; // type:object size:0x6 scope:local +lbl_1_data_9CD = .data:0x000009CD; // type:object size:0x9 scope:local data:string +lbl_1_data_9D6 = .data:0x000009D6; // type:object size:0xA scope:local data:string +lbl_1_data_9E0 = .data:0x000009E0; // type:object size:0xA scope:local data:string +lbl_1_data_9EA = .data:0x000009EA; // type:object size:0x9 scope:local data:string +lbl_1_data_9F3 = .data:0x000009F3; // type:object size:0x9 scope:local data:string +lbl_1_data_9FC = .data:0x000009FC; // type:object size:0x9 scope:local data:string +padCfgStrTbl = .data:0x00000A08; // type:object size:0x14 scope:local data:4byte +lbl_1_data_A1C = .data:0x00000A1C; // type:object size:0x6 scope:local data:string +lbl_1_data_A22 = .data:0x00000A22; // type:object size:0x4 scope:local data:string +lbl_1_data_A26 = .data:0x00000A26; // type:object size:0x5 scope:local data:string +lbl_1_data_A2B = .data:0x00000A2B; // type:object size:0x7 scope:local data:string +lbl_1_data_A32 = .data:0x00000A32; // type:object size:0x5 scope:local data:string +lbl_1_data_A37 = .data:0x00000A37; // type:object size:0x9 scope:local data:string +jumptable_1_data_A40 = .data:0x00000A40; // type:object size:0x20 scope:local +jumptable_1_data_A60 = .data:0x00000A60; // type:object size:0x20 scope:local +lbl_1_data_A80 = .data:0x00000A80; // type:object size:0x4 scope:local data:string +lbl_1_data_A84 = .data:0x00000A84; // type:object size:0x4 scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x10 scope:local data:string +lbl_1_data_A98 = .data:0x00000A98; // type:object size:0x15 scope:local data:string +lbl_1_data_AAD = .data:0x00000AAD; // type:object size:0x15 scope:local data:string +lbl_1_data_AC2 = .data:0x00000AC2; // type:object size:0x15 scope:local data:string +lbl_1_data_AD7 = .data:0x00000AD7; // type:object size:0x15 scope:local data:string +lbl_1_data_AEC = .data:0x00000AEC; // type:object size:0x15 scope:local data:string +lbl_1_data_B01 = .data:0x00000B01; // type:object size:0x15 scope:local data:string +lbl_1_data_B16 = .data:0x00000B16; // type:object size:0x15 scope:local data:string +lbl_1_data_B2B = .data:0x00000B2B; // type:object size:0x14 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte +smSound3DPos = .bss:0x00000002; // type:object size:0x2 scope:local data:2byte +emiCompVal = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte +emiCompDataNo = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte +playerCfgOptionPos = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte +playerCfgPlayerPos = .bss:0x0000000A; // type:object size:0x2 scope:local data:2byte +playerCfgSelF = .bss:0x0000000C; // type:object size:0x2 scope:local data:2byte +charSelProhibitF = .bss:0x0000000E; // type:object size:0x10 scope:local +playerDoneF = .bss:0x0000001E; // type:object size:0x8 scope:local +charModelID = .bss:0x00000026; // type:object size:0x10 scope:local +keyDStkAllDown = .bss:0x00000036; // type:object size:0x8 scope:local +keyDStkAll = .bss:0x0000003E; // type:object size:0x8 scope:local +btnDownAll = .bss:0x00000046; // type:object size:0x8 scope:local +keyDStkDown = .bss:0x0000004E; // type:object size:0x2 scope:local data:2byte +keyDStk = .bss:0x00000050; // type:object size:0x2 scope:local data:2byte +btnDown = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte +smSelectPos = .bss:0x00000054; // type:object size:0x2 scope:local data:2byte +smPlayerCfg = .bss:0x00000056; // type:object size:0x28 scope:local data:2byte +outViewObj = .bss:0x00000080; // type:object size:0x4 scope:local data:4byte +smMainObj = .bss:0x00000084; // type:object size:0x4 scope:local data:4byte +smSelectPosBackup = .bss:0x00000088; // type:object size:0xE scope:local +smPage = .bss:0x00000096; // type:object size:0x2 scope:local data:2byte diff --git a/config/GMPP01_00/rels/staffDll/splits.txt b/config/GMPP01_00/rels/staffDll/splits.txt new file mode 100644 index 00000000..c7a221dd --- /dev/null +++ b/config/GMPP01_00/rels/staffDll/splits.txt @@ -0,0 +1,16 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/staffDll/main.c: + .text start:0x000000A0 end:0x000012F8 + .rodata start:0x00000000 end:0x00000098 + .data start:0x00000000 end:0x00001328 + .bss start:0x00000000 end:0x0000004A diff --git a/config/GMPP01_00/rels/staffDll/symbols.txt b/config/GMPP01_00/rels/staffDll/symbols.txt new file mode 100644 index 00000000..82c981fb --- /dev/null +++ b/config/GMPP01_00/rels/staffDll/symbols.txt @@ -0,0 +1,55 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x218 +ExitProc = .text:0x000002B8; // type:function size:0x60 scope:local +CreateStaff = .text:0x00000318; // type:function size:0x444 scope:local +MoveStaff = .text:0x0000075C; // type:function size:0x3AC scope:local +HidePicture = .text:0x00000B08; // type:function size:0x12C scope:local +ShowPicture = .text:0x00000C34; // type:function size:0x1C4 scope:local +MainProc = .text:0x00000DF8; // type:function size:0x500 scope:local +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +staffData = .data:0x00000000; // type:object size:0x1308 scope:local +staffLogoPosTbl = .data:0x00001308; // type:object size:0xC scope:local data:float +lbl_1_data_1314 = .data:0x00001314; // type:object size:0x14 data:string +multiViewObj = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +currImg = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +staffSide = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte +thpCoverGroup = .bss:0x0000000C; // type:object size:0x2 scope:local data:2byte +thpGroup = .bss:0x0000000E; // type:object size:0x2 scope:local data:2byte +staffLogoGroup = .bss:0x00000010; // type:object size:0x6 scope:local data:2byte +imgGroup = .bss:0x00000016; // type:object size:0x34 scope:local data:2byte diff --git a/config/GMPP01_00/rels/subchrselDll/splits.txt b/config/GMPP01_00/rels/subchrselDll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_00/rels/subchrselDll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_00/rels/subchrselDll/symbols.txt b/config/GMPP01_00/rels/subchrselDll/symbols.txt new file mode 100644 index 00000000..22a9a485 --- /dev/null +++ b/config/GMPP01_00/rels/subchrselDll/symbols.txt @@ -0,0 +1,33 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x6C +fn_1_10C = .text:0x0000010C; // type:function size:0x58 +fn_1_164 = .text:0x00000164; // type:function size:0x654 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x8 data:string +lbl_1_data_8 = .data:0x00000008; // type:object size:0x8 data:string +lbl_1_data_10 = .data:0x00000010; // type:object size:0x8 data:string +lbl_1_data_18 = .data:0x00000018; // type:object size:0x8 data:string +lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 +lbl_1_data_30 = .data:0x00000030; // type:object size:0x6 data:string +lbl_1_data_36 = .data:0x00000036; // type:object size:0x6 data:string +lbl_1_data_3C = .data:0x0000003C; // type:object size:0x6 data:string +lbl_1_data_42 = .data:0x00000042; // type:object size:0x6 data:string +lbl_1_data_48 = .data:0x00000048; // type:object size:0x6 data:string +lbl_1_data_4E = .data:0x0000004E; // type:object size:0x7 data:string +lbl_1_data_55 = .data:0x00000055; // type:object size:0x6 data:string +lbl_1_data_5B = .data:0x0000005B; // type:object size:0x9 +lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 +lbl_1_data_84 = .data:0x00000084; // type:object size:0x1 +lbl_1_data_85 = .data:0x00000085; // type:object size:0x6 data:string +lbl_1_data_8B = .data:0x0000008B; // type:object size:0x8 data:string +lbl_1_data_93 = .data:0x00000093; // type:object size:0x7 data:string +lbl_1_data_9A = .data:0x0000009A; // type:object size:0x7 data:string +lbl_1_data_A1 = .data:0x000000A1; // type:object size:0x6 data:string +lbl_1_data_A7 = .data:0x000000A7; // type:object size:0x9 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1C +lbl_1_data_CC = .data:0x000000CC; // type:object size:0x15 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/config/GMPP01_00/rels/w01Dll/splits.txt b/config/GMPP01_00/rels/w01Dll/splits.txt new file mode 100644 index 00000000..8e0a4285 --- /dev/null +++ b/config/GMPP01_00/rels/w01Dll/splits.txt @@ -0,0 +1,29 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w01Dll/main.c: + .text start:0x000000E0 end:0x00009DD8 + .rodata start:0x00000010 end:0x00000198 + .data start:0x00000000 end:0x00000658 + .bss start:0x00000000 end:0x00000708 + +REL/w01Dll/mg_coin.c: + .text start:0x00009DD8 end:0x0000D740 + .rodata start:0x00000198 end:0x000002C8 + .data start:0x00000658 end:0x00000F08 + .bss start:0x00000708 end:0x000007A0 + +REL/w01Dll/mg_item.c: + .text start:0x0000D740 end:0x000119F0 + .rodata start:0x000002C8 end:0x000003C4 + .data start:0x00000F08 end:0x00000FAC + .bss start:0x000007A0 end:0x0000081C diff --git a/config/GMPP01_00/rels/w01Dll/symbols.txt b/config/GMPP01_00/rels/w01Dll/symbols.txt new file mode 100644 index 00000000..2fa2c70d --- /dev/null +++ b/config/GMPP01_00/rels/w01Dll/symbols.txt @@ -0,0 +1,469 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x4BC +BoardDestroy = .text:0x0000059C; // type:function size:0x194 +fn_1_730 = .text:0x00000730; // type:function size:0x44 +fn_1_774 = .text:0x00000774; // type:function size:0x4 +fn_1_778 = .text:0x00000778; // type:function size:0x9C +fn_1_814 = .text:0x00000814; // type:function size:0x1D4 +fn_1_9E8 = .text:0x000009E8; // type:function size:0x318 +fn_1_D00 = .text:0x00000D00; // type:function size:0x4 +fn_1_D04 = .text:0x00000D04; // type:function size:0x550 +fn_1_1254 = .text:0x00001254; // type:function size:0x38 +fn_1_128C = .text:0x0000128C; // type:function size:0x80 +fn_1_130C = .text:0x0000130C; // type:function size:0x270 +fn_1_157C = .text:0x0000157C; // type:function size:0xF4 +fn_1_1670 = .text:0x00001670; // type:function size:0x90 +fn_1_1700 = .text:0x00001700; // type:function size:0x290 +fn_1_1990 = .text:0x00001990; // type:function size:0x148 +fn_1_1AD8 = .text:0x00001AD8; // type:function size:0x64 +fn_1_1B3C = .text:0x00001B3C; // type:function size:0x3A8 +fn_1_1EE4 = .text:0x00001EE4; // type:function size:0x48 +fn_1_1F2C = .text:0x00001F2C; // type:function size:0x78 +fn_1_1FA4 = .text:0x00001FA4; // type:function size:0x580 +fn_1_2524 = .text:0x00002524; // type:function size:0x248 +fn_1_276C = .text:0x0000276C; // type:function size:0x7AC +fn_1_2F18 = .text:0x00002F18; // type:function size:0x438 +fn_1_3350 = .text:0x00003350; // type:function size:0x1C4 +fn_1_3514 = .text:0x00003514; // type:function size:0xA0 +fn_1_35B4 = .text:0x000035B4; // type:function size:0x70 +fn_1_3624 = .text:0x00003624; // type:function size:0xFD0 +fn_1_45F4 = .text:0x000045F4; // type:function size:0x180 +fn_1_4774 = .text:0x00004774; // type:function size:0xF0 +fn_1_4864 = .text:0x00004864; // type:function size:0x50 +fn_1_48B4 = .text:0x000048B4; // type:function size:0x560 +fn_1_4E14 = .text:0x00004E14; // type:function size:0x194 +fn_1_4FA8 = .text:0x00004FA8; // type:function size:0x30 +fn_1_4FD8 = .text:0x00004FD8; // type:function size:0xFC +fn_1_50D4 = .text:0x000050D4; // type:function size:0x2E4 +fn_1_53B8 = .text:0x000053B8; // type:function size:0x84 +fn_1_543C = .text:0x0000543C; // type:function size:0x258 +fn_1_5694 = .text:0x00005694; // type:function size:0x1D8 +fn_1_586C = .text:0x0000586C; // type:function size:0xC0 +fn_1_592C = .text:0x0000592C; // type:function size:0x200 +fn_1_5B2C = .text:0x00005B2C; // type:function size:0x14 +fn_1_5B40 = .text:0x00005B40; // type:function size:0x190 +fn_1_5CD0 = .text:0x00005CD0; // type:function size:0x38 +fn_1_5D08 = .text:0x00005D08; // type:function size:0x390 +fn_1_6098 = .text:0x00006098; // type:function size:0xFC +fn_1_6194 = .text:0x00006194; // type:function size:0x25C +fn_1_63F0 = .text:0x000063F0; // type:function size:0x624 +fn_1_6A14 = .text:0x00006A14; // type:function size:0x1AC +fn_1_6BC0 = .text:0x00006BC0; // type:function size:0x3F4 +fn_1_6FB4 = .text:0x00006FB4; // type:function size:0x574 +fn_1_7528 = .text:0x00007528; // type:function size:0x2C4 +fn_1_77EC = .text:0x000077EC; // type:function size:0xA8 +fn_1_7894 = .text:0x00007894; // type:function size:0x1D0 +fn_1_7A64 = .text:0x00007A64; // type:function size:0xAC8 +fn_1_852C = .text:0x0000852C; // type:function size:0x280 +fn_1_87AC = .text:0x000087AC; // type:function size:0x34 +fn_1_87E0 = .text:0x000087E0; // type:function size:0x1A8 +fn_1_8988 = .text:0x00008988; // type:function size:0xC8 +fn_1_8A50 = .text:0x00008A50; // type:function size:0x11C +fn_1_8B6C = .text:0x00008B6C; // type:function size:0x270 +fn_1_8DDC = .text:0x00008DDC; // type:function size:0x3B0 +fn_1_918C = .text:0x0000918C; // type:function size:0xF0 +fn_1_927C = .text:0x0000927C; // type:function size:0xB0 +fn_1_932C = .text:0x0000932C; // type:function size:0x17C +fn_1_94A8 = .text:0x000094A8; // type:function size:0x14C +fn_1_95F4 = .text:0x000095F4; // type:function size:0x200 +fn_1_97F4 = .text:0x000097F4; // type:function size:0xF8 +fn_1_98EC = .text:0x000098EC; // type:function size:0x34 +fn_1_9920 = .text:0x00009920; // type:function size:0x104 +fn_1_9A24 = .text:0x00009A24; // type:function size:0x198 +fn_1_9BBC = .text:0x00009BBC; // type:function size:0x144 +fn_1_9D00 = .text:0x00009D00; // type:function size:0xD8 +fn_1_9DD8 = .text:0x00009DD8; // type:function size:0x6E0 +fn_1_A4B8 = .text:0x0000A4B8; // type:function size:0x9C +fn_1_A554 = .text:0x0000A554; // type:function size:0xA8 +fn_1_A5FC = .text:0x0000A5FC; // type:function size:0xE4 +fn_1_A6E0 = .text:0x0000A6E0; // type:function size:0x938 +fn_1_B018 = .text:0x0000B018; // type:function size:0x70 +fn_1_B088 = .text:0x0000B088; // type:function size:0x144 +fn_1_B1CC = .text:0x0000B1CC; // type:function size:0x1EC +fn_1_B3B8 = .text:0x0000B3B8; // type:function size:0xC0 +fn_1_B478 = .text:0x0000B478; // type:function size:0x680 +fn_1_BAF8 = .text:0x0000BAF8; // type:function size:0x1E4 +fn_1_BCDC = .text:0x0000BCDC; // type:function size:0x224 +fn_1_BF00 = .text:0x0000BF00; // type:function size:0x68 +fn_1_BF68 = .text:0x0000BF68; // type:function size:0x98 +fn_1_C000 = .text:0x0000C000; // type:function size:0xFC +fn_1_C0FC = .text:0x0000C0FC; // type:function size:0x160 +fn_1_C25C = .text:0x0000C25C; // type:function size:0x5E8 +fn_1_C844 = .text:0x0000C844; // type:function size:0x50 +fn_1_C894 = .text:0x0000C894; // type:function size:0xB8 +fn_1_C94C = .text:0x0000C94C; // type:function size:0x4C +fn_1_C998 = .text:0x0000C998; // type:function size:0x1AC +fn_1_CB44 = .text:0x0000CB44; // type:function size:0x380 +fn_1_CEC4 = .text:0x0000CEC4; // type:function size:0x170 +fn_1_D034 = .text:0x0000D034; // type:function size:0x48 +fn_1_D07C = .text:0x0000D07C; // type:function size:0x98 +fn_1_D114 = .text:0x0000D114; // type:function size:0x62C +fn_1_D740 = .text:0x0000D740; // type:function size:0x644 +fn_1_DD84 = .text:0x0000DD84; // type:function size:0x110 +fn_1_DE94 = .text:0x0000DE94; // type:function size:0x26C +fn_1_E100 = .text:0x0000E100; // type:function size:0x54 +fn_1_E154 = .text:0x0000E154; // type:function size:0x164 +fn_1_E2B8 = .text:0x0000E2B8; // type:function size:0x194 +fn_1_E44C = .text:0x0000E44C; // type:function size:0x4C8 +fn_1_E914 = .text:0x0000E914; // type:function size:0x3C0 +fn_1_ECD4 = .text:0x0000ECD4; // type:function size:0x1CC +fn_1_EEA0 = .text:0x0000EEA0; // type:function size:0x38 +fn_1_EED8 = .text:0x0000EED8; // type:function size:0x1C4 +fn_1_F09C = .text:0x0000F09C; // type:function size:0x2AC +fn_1_F348 = .text:0x0000F348; // type:function size:0xB0 +fn_1_F3F8 = .text:0x0000F3F8; // type:function size:0x2F0 +fn_1_F6E8 = .text:0x0000F6E8; // type:function size:0x1A8 +fn_1_F890 = .text:0x0000F890; // type:function size:0x18C +fn_1_FA1C = .text:0x0000FA1C; // type:function size:0xA0 +fn_1_FABC = .text:0x0000FABC; // type:function size:0x9C +fn_1_FB58 = .text:0x0000FB58; // type:function size:0xE4 +fn_1_FC3C = .text:0x0000FC3C; // type:function size:0xB0 +fn_1_FCEC = .text:0x0000FCEC; // type:function size:0x50 +fn_1_FD3C = .text:0x0000FD3C; // type:function size:0x108 +fn_1_FE44 = .text:0x0000FE44; // type:function size:0x8C +fn_1_FED0 = .text:0x0000FED0; // type:function size:0x14C +fn_1_1001C = .text:0x0001001C; // type:function size:0x19C +fn_1_101B8 = .text:0x000101B8; // type:function size:0x4AC +fn_1_10664 = .text:0x00010664; // type:function size:0x1BC +fn_1_10820 = .text:0x00010820; // type:function size:0x2C8 +fn_1_10AE8 = .text:0x00010AE8; // type:function size:0xC8 +fn_1_10BB0 = .text:0x00010BB0; // type:function size:0x140 +fn_1_10CF0 = .text:0x00010CF0; // type:function size:0x1C8 +fn_1_10EB8 = .text:0x00010EB8; // type:function size:0x1AC +fn_1_11064 = .text:0x00011064; // type:function size:0x420 +fn_1_11484 = .text:0x00011484; // type:function size:0x56C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x2 scope:local data:2byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x2 scope:local data:2byte +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x528 +lbl_1_data_528 = .data:0x00000528; // type:object size:0x2 data:2byte +lbl_1_data_52A = .data:0x0000052A; // type:object size:0x2 data:2byte +lbl_1_data_52C = .data:0x0000052C; // type:object size:0x2 data:2byte +lbl_1_data_52E = .data:0x0000052E; // type:object size:0x2 data:2byte +lbl_1_data_530 = .data:0x00000530; // type:object size:0x2 data:2byte +lbl_1_data_534 = .data:0x00000534; // type:object size:0x8 +lbl_1_data_53C = .data:0x0000053C; // type:object size:0x8 +lbl_1_data_544 = .data:0x00000544; // type:object size:0x14 data:string +lbl_1_data_558 = .data:0x00000558; // type:object size:0x14 data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x14 +lbl_1_data_580 = .data:0x00000580; // type:object size:0x2 data:2byte +lbl_1_data_582 = .data:0x00000582; // type:object size:0x12 +lbl_1_data_594 = .data:0x00000594; // type:object size:0x40 +lbl_1_data_5D4 = .data:0x000005D4; // type:object size:0x4 data:4byte +lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x4 data:4byte +lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x10 +lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x7 data:string +lbl_1_data_5F3 = .data:0x000005F3; // type:object size:0x7 data:string +lbl_1_data_5FA = .data:0x000005FA; // type:object size:0xA +lbl_1_data_604 = .data:0x00000604; // type:object size:0xC +lbl_1_data_610 = .data:0x00000610; // type:object size:0x10 +lbl_1_data_620 = .data:0x00000620; // type:object size:0x5 data:string +lbl_1_data_625 = .data:0x00000625; // type:object size:0x5 data:string +lbl_1_data_62A = .data:0x0000062A; // type:object size:0x5 data:string +lbl_1_data_62F = .data:0x0000062F; // type:object size:0x4 data:string +lbl_1_data_633 = .data:0x00000633; // type:object size:0x1 data:byte +lbl_1_data_634 = .data:0x00000634; // type:object size:0x24 +lbl_1_data_658 = .data:0x00000658; // type:object size:0x24 +lbl_1_data_67C = .data:0x0000067C; // type:object size:0x14 +lbl_1_data_690 = .data:0x00000690; // type:object size:0x2D0 +lbl_1_data_960 = .data:0x00000960; // type:object size:0x2D0 +lbl_1_data_C30 = .data:0x00000C30; // type:object size:0x2D0 +lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x8 +lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x38 +lbl_1_data_F40 = .data:0x00000F40; // type:object size:0x20 +lbl_1_data_F60 = .data:0x00000F60; // type:object size:0x20 +lbl_1_data_F80 = .data:0x00000F80; // type:object size:0x7 data:string +lbl_1_data_F87 = .data:0x00000F87; // type:object size:0x5 data:string +lbl_1_data_F8C = .data:0x00000F8C; // type:object size:0x5 data:string +lbl_1_data_F91 = .data:0x00000F91; // type:object size:0x5 data:string +lbl_1_data_F96 = .data:0x00000F96; // type:object size:0x6 +lbl_1_data_F9C = .data:0x00000F9C; // type:object size:0x10 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 data:byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x1 data:byte +lbl_1_bss_29 = .bss:0x00000029; // type:object size:0x1 data:byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x5A0 +lbl_1_bss_5CC = .bss:0x000005CC; // type:object size:0x2 data:2byte +lbl_1_bss_5D0 = .bss:0x000005D0; // type:object size:0x30 +lbl_1_bss_600 = .bss:0x00000600; // type:object size:0x18 +lbl_1_bss_618 = .bss:0x00000618; // type:object size:0xC data:4byte +lbl_1_bss_624 = .bss:0x00000624; // type:object size:0xC data:float +lbl_1_bss_630 = .bss:0x00000630; // type:object size:0xC data:4byte +lbl_1_bss_63C = .bss:0x0000063C; // type:object size:0x4 data:float +lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x4 data:float +lbl_1_bss_644 = .bss:0x00000644; // type:object size:0x4 data:float +lbl_1_bss_648 = .bss:0x00000648; // type:object size:0xC data:4byte +lbl_1_bss_654 = .bss:0x00000654; // type:object size:0xC data:float +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0xC data:float +lbl_1_bss_66C = .bss:0x0000066C; // type:object size:0x4 data:float +lbl_1_bss_670 = .bss:0x00000670; // type:object size:0x4 data:float +lbl_1_bss_674 = .bss:0x00000674; // type:object size:0x4 data:float +lbl_1_bss_678 = .bss:0x00000678; // type:object size:0x30 +lbl_1_bss_6A8 = .bss:0x000006A8; // type:object size:0x4 data:float +lbl_1_bss_6AC = .bss:0x000006AC; // type:object size:0x2 data:2byte +lbl_1_bss_6AE = .bss:0x000006AE; // type:object size:0x2 data:2byte +lbl_1_bss_6B0 = .bss:0x000006B0; // type:object size:0x1 data:byte +lbl_1_bss_6B1 = .bss:0x000006B1; // type:object size:0x1 data:byte +lbl_1_bss_6B2 = .bss:0x000006B2; // type:object size:0x1 data:byte +lbl_1_bss_6B3 = .bss:0x000006B3; // type:object size:0x1 data:byte +lbl_1_bss_6B4 = .bss:0x000006B4; // type:object size:0x1 data:byte +lbl_1_bss_6B6 = .bss:0x000006B6; // type:object size:0xA data:2byte +lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 data:4byte +lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x44 data:2byte +lbl_1_bss_708 = .bss:0x00000708; // type:object size:0x2 data:2byte +lbl_1_bss_70C = .bss:0x0000070C; // type:object size:0x4 data:4byte +lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 data:4byte +lbl_1_bss_714 = .bss:0x00000714; // type:object size:0xC +lbl_1_bss_720 = .bss:0x00000720; // type:object size:0x4 data:4byte +lbl_1_bss_724 = .bss:0x00000724; // type:object size:0x4 data:4byte +lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x2 data:2byte +lbl_1_bss_72A = .bss:0x0000072A; // type:object size:0x2 data:2byte +lbl_1_bss_72C = .bss:0x0000072C; // type:object size:0x4 data:4byte +lbl_1_bss_730 = .bss:0x00000730; // type:object size:0x4 data:4byte +lbl_1_bss_734 = .bss:0x00000734; // type:object size:0x4 data:4byte +lbl_1_bss_738 = .bss:0x00000738; // type:object size:0xC data:float +lbl_1_bss_744 = .bss:0x00000744; // type:object size:0x2 data:2byte +lbl_1_bss_748 = .bss:0x00000748; // type:object size:0x4 data:4byte +lbl_1_bss_74C = .bss:0x0000074C; // type:object size:0x4 data:4byte +lbl_1_bss_750 = .bss:0x00000750; // type:object size:0x2 data:2byte +lbl_1_bss_754 = .bss:0x00000754; // type:object size:0x4 data:float +lbl_1_bss_758 = .bss:0x00000758; // type:object size:0x4 data:4byte +lbl_1_bss_75C = .bss:0x0000075C; // type:object size:0x4 data:4byte +lbl_1_bss_760 = .bss:0x00000760; // type:object size:0x28 +lbl_1_bss_788 = .bss:0x00000788; // type:object size:0x2 data:2byte +lbl_1_bss_78A = .bss:0x0000078A; // type:object size:0x6 data:2byte +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x6 data:2byte +lbl_1_bss_796 = .bss:0x00000796; // type:object size:0x2 data:2byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x4 data:4byte +lbl_1_bss_79C = .bss:0x0000079C; // type:object size:0x4 data:4byte +lbl_1_bss_7A0 = .bss:0x000007A0; // type:object size:0x4 data:4byte +lbl_1_bss_7A4 = .bss:0x000007A4; // type:object size:0x4 data:4byte +lbl_1_bss_7A8 = .bss:0x000007A8; // type:object size:0x2 data:2byte +lbl_1_bss_7AA = .bss:0x000007AA; // type:object size:0x2 data:2byte +lbl_1_bss_7AC = .bss:0x000007AC; // type:object size:0x8 data:4byte +lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x2 data:2byte +lbl_1_bss_7B8 = .bss:0x000007B8; // type:object size:0x4 data:4byte +lbl_1_bss_7BC = .bss:0x000007BC; // type:object size:0x8 data:4byte +lbl_1_bss_7C4 = .bss:0x000007C4; // type:object size:0xC data:float +lbl_1_bss_7D0 = .bss:0x000007D0; // type:object size:0x2 data:2byte +lbl_1_bss_7D2 = .bss:0x000007D2; // type:object size:0x2 data:2byte +lbl_1_bss_7D4 = .bss:0x000007D4; // type:object size:0x2 data:2byte +lbl_1_bss_7D6 = .bss:0x000007D6; // type:object size:0x2 data:2byte +lbl_1_bss_7D8 = .bss:0x000007D8; // type:object size:0xC data:4byte +lbl_1_bss_7E4 = .bss:0x000007E4; // type:object size:0x4 data:4byte +lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x4 data:float +lbl_1_bss_7EC = .bss:0x000007EC; // type:object size:0x4 data:float +lbl_1_bss_7F0 = .bss:0x000007F0; // type:object size:0x4 data:4byte +lbl_1_bss_7F4 = .bss:0x000007F4; // type:object size:0x4 data:4byte +lbl_1_bss_7F8 = .bss:0x000007F8; // type:object size:0x4 data:4byte +lbl_1_bss_7FC = .bss:0x000007FC; // type:object size:0x10 data:4byte +lbl_1_bss_80C = .bss:0x0000080C; // type:object size:0xC data:float +lbl_1_bss_818 = .bss:0x00000818; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/w02Dll/splits.txt b/config/GMPP01_00/rels/w02Dll/splits.txt new file mode 100644 index 00000000..a94f9206 --- /dev/null +++ b/config/GMPP01_00/rels/w02Dll/splits.txt @@ -0,0 +1,52 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w02Dll/main.c: + .text start:0x000000E0 end:0x00001254 + .rodata start:0x00000010 end:0x00000038 + .data start:0x00000000 end:0x000002A8 + .bss start:0x00000000 end:0x00000050 + +REL/w02Dll/gendice.c: + .text start:0x00001254 end:0x00002D04 + .rodata start:0x00000038 end:0x00000108 + .data start:0x000002A8 end:0x00000360 + +REL/w02Dll/gamble.c: + .text start:0x00002D04 end:0x000039F4 + .rodata start:0x00000108 end:0x00000178 + .data start:0x00000360 end:0x00000378 + .bss start:0x00000050 end:0x00000058 + +REL/w02Dll/mg_coin.c: + .text start:0x000039F4 end:0x00005CF8 + .rodata start:0x00000178 end:0x00000218 + .data start:0x00000378 end:0x00000428 + .bss start:0x00000058 end:0x000000C8 + +REL/w02Dll/mg_item.c: + .text start:0x00005CF8 end:0x00009250 + .rodata start:0x00000218 end:0x000002F8 + .data start:0x00000428 end:0x00000490 + .bss start:0x000000C8 end:0x000001A0 + +REL/w02Dll/shuffleboard.c: + .text start:0x00009250 end:0x0000BC1C + .rodata start:0x000002F8 end:0x00000410 + .data start:0x00000490 end:0x000004D0 + .bss start:0x000001A0 end:0x00000380 + +REL/w02Dll/roulette.c: + .text start:0x0000BC1C end:0x0000E4D4 + .rodata start:0x00000410 end:0x00000538 + .data start:0x000004D0 end:0x00000524 + .bss start:0x00000380 end:0x00000390 diff --git a/config/GMPP01_00/rels/w02Dll/symbols.txt b/config/GMPP01_00/rels/w02Dll/symbols.txt new file mode 100644 index 00000000..326cbb5f --- /dev/null +++ b/config/GMPP01_00/rels/w02Dll/symbols.txt @@ -0,0 +1,457 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x4F4 +BoardDestroy = .text:0x000005D4; // type:function size:0x158 +fn_1_72C = .text:0x0000072C; // type:function size:0x44 +fn_1_770 = .text:0x00000770; // type:function size:0x4 +fn_1_774 = .text:0x00000774; // type:function size:0x8C +fn_1_800 = .text:0x00000800; // type:function size:0x12C +fn_1_92C = .text:0x0000092C; // type:function size:0x24 +fn_1_950 = .text:0x00000950; // type:function size:0x4 +fn_1_954 = .text:0x00000954; // type:function size:0x3C +fn_1_990 = .text:0x00000990; // type:function size:0x2C0 +fn_1_C50 = .text:0x00000C50; // type:function size:0x420 +fn_1_1070 = .text:0x00001070; // type:function size:0x38 +fn_1_10A8 = .text:0x000010A8; // type:function size:0x80 +fn_1_1128 = .text:0x00001128; // type:function size:0xF4 +fn_1_121C = .text:0x0000121C; // type:function size:0x38 +fn_1_1254 = .text:0x00001254; // type:function size:0x17C +fn_1_13D0 = .text:0x000013D0; // type:function size:0x148 +fn_1_1518 = .text:0x00001518; // type:function size:0x5C +fn_1_1574 = .text:0x00001574; // type:function size:0x220 +fn_1_1794 = .text:0x00001794; // type:function size:0x60 +fn_1_17F4 = .text:0x000017F4; // type:function size:0x5C +fn_1_1850 = .text:0x00001850; // type:function size:0x744 +fn_1_1F94 = .text:0x00001F94; // type:function size:0x9C +fn_1_2030 = .text:0x00002030; // type:function size:0xD0 +fn_1_2100 = .text:0x00002100; // type:function size:0x120 +fn_1_2220 = .text:0x00002220; // type:function size:0x9C +fn_1_22BC = .text:0x000022BC; // type:function size:0x80 +fn_1_233C = .text:0x0000233C; // type:function size:0x78 +fn_1_23B4 = .text:0x000023B4; // type:function size:0x48 +fn_1_23FC = .text:0x000023FC; // type:function size:0x1D4 +fn_1_25D0 = .text:0x000025D0; // type:function size:0xC4 +fn_1_2694 = .text:0x00002694; // type:function size:0x98 +fn_1_272C = .text:0x0000272C; // type:function size:0x104 +fn_1_2830 = .text:0x00002830; // type:function size:0x3B4 +fn_1_2BE4 = .text:0x00002BE4; // type:function size:0x120 +fn_1_2D04 = .text:0x00002D04; // type:function size:0xC34 +fn_1_3938 = .text:0x00003938; // type:function size:0x14 +fn_1_394C = .text:0x0000394C; // type:function size:0xA8 +fn_1_39F4 = .text:0x000039F4; // type:function size:0x200 +fn_1_3BF4 = .text:0x00003BF4; // type:function size:0x318 +fn_1_3F0C = .text:0x00003F0C; // type:function size:0x58 +fn_1_3F64 = .text:0x00003F64; // type:function size:0x30 +fn_1_3F94 = .text:0x00003F94; // type:function size:0xBC +fn_1_4050 = .text:0x00004050; // type:function size:0xB0 +fn_1_4100 = .text:0x00004100; // type:function size:0xB8 +fn_1_41B8 = .text:0x000041B8; // type:function size:0x1C0 +fn_1_4378 = .text:0x00004378; // type:function size:0x320 +fn_1_4698 = .text:0x00004698; // type:function size:0x50 +fn_1_46E8 = .text:0x000046E8; // type:function size:0xA34 +fn_1_511C = .text:0x0000511C; // type:function size:0x98 +fn_1_51B4 = .text:0x000051B4; // type:function size:0xDC +fn_1_5290 = .text:0x00005290; // type:function size:0x128 +fn_1_53B8 = .text:0x000053B8; // type:function size:0x27C +fn_1_5634 = .text:0x00005634; // type:function size:0x234 +fn_1_5868 = .text:0x00005868; // type:function size:0x258 +fn_1_5AC0 = .text:0x00005AC0; // type:function size:0x1C4 +fn_1_5C84 = .text:0x00005C84; // type:function size:0x74 +fn_1_5CF8 = .text:0x00005CF8; // type:function size:0x30 +fn_1_5D28 = .text:0x00005D28; // type:function size:0x1E0 +fn_1_5F08 = .text:0x00005F08; // type:function size:0x58 +fn_1_5F60 = .text:0x00005F60; // type:function size:0x30 +fn_1_5F90 = .text:0x00005F90; // type:function size:0x9C +fn_1_602C = .text:0x0000602C; // type:function size:0x40 +fn_1_606C = .text:0x0000606C; // type:function size:0x100 +fn_1_616C = .text:0x0000616C; // type:function size:0xDC +fn_1_6248 = .text:0x00006248; // type:function size:0x868 +fn_1_6AB0 = .text:0x00006AB0; // type:function size:0x1F4 +fn_1_6CA4 = .text:0x00006CA4; // type:function size:0x60 +fn_1_6D04 = .text:0x00006D04; // type:function size:0x130 +fn_1_6E34 = .text:0x00006E34; // type:function size:0x74 +fn_1_6EA8 = .text:0x00006EA8; // type:function size:0x43C +fn_1_72E4 = .text:0x000072E4; // type:function size:0x48 +fn_1_732C = .text:0x0000732C; // type:function size:0x2C +fn_1_7358 = .text:0x00007358; // type:function size:0x70 +fn_1_73C8 = .text:0x000073C8; // type:function size:0x11C +fn_1_74E4 = .text:0x000074E4; // type:function size:0x26C +fn_1_7750 = .text:0x00007750; // type:function size:0xC8 +fn_1_7818 = .text:0x00007818; // type:function size:0x80 +fn_1_7898 = .text:0x00007898; // type:function size:0x124 +fn_1_79BC = .text:0x000079BC; // type:function size:0x888 +fn_1_8244 = .text:0x00008244; // type:function size:0x32C +fn_1_8570 = .text:0x00008570; // type:function size:0x8C +fn_1_85FC = .text:0x000085FC; // type:function size:0x7B0 +fn_1_8DAC = .text:0x00008DAC; // type:function size:0x8C +fn_1_8E38 = .text:0x00008E38; // type:function size:0x418 +fn_1_9250 = .text:0x00009250; // type:function size:0x178 +fn_1_93C8 = .text:0x000093C8; // type:function size:0xE4 +fn_1_94AC = .text:0x000094AC; // type:function size:0x14 +fn_1_94C0 = .text:0x000094C0; // type:function size:0x418 +fn_1_98D8 = .text:0x000098D8; // type:function size:0x5EC +fn_1_9EC4 = .text:0x00009EC4; // type:function size:0x694 +fn_1_A558 = .text:0x0000A558; // type:function size:0x390 +fn_1_A8E8 = .text:0x0000A8E8; // type:function size:0xB68 +fn_1_B450 = .text:0x0000B450; // type:function size:0x458 +fn_1_B8A8 = .text:0x0000B8A8; // type:function size:0x288 +fn_1_BB30 = .text:0x0000BB30; // type:function size:0xEC +fn_1_BC1C = .text:0x0000BC1C; // type:function size:0xE0 +fn_1_BCFC = .text:0x0000BCFC; // type:function size:0x178 +fn_1_BE74 = .text:0x0000BE74; // type:function size:0x14 +fn_1_BE88 = .text:0x0000BE88; // type:function size:0x280 +fn_1_C108 = .text:0x0000C108; // type:function size:0xBFC +fn_1_CD04 = .text:0x0000CD04; // type:function size:0x6A8 +fn_1_D3AC = .text:0x0000D3AC; // type:function size:0x518 +fn_1_D8C4 = .text:0x0000D8C4; // type:function size:0x684 +fn_1_DF48 = .text:0x0000DF48; // type:function size:0x364 +fn_1_E2AC = .text:0x0000E2AC; // type:function size:0x64 +fn_1_E310 = .text:0x0000E310; // type:function size:0x10C +fn_1_E41C = .text:0x0000E41C; // type:function size:0xB8 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:byte +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 scope:local data:double +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x280 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:2byte +lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:2byte +lbl_1_data_284 = .data:0x00000284; // type:object size:0x2 data:2byte +lbl_1_data_286 = .data:0x00000286; // type:object size:0x2 data:2byte +lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x18 +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x12 data:string +lbl_1_data_2BA = .data:0x000002BA; // type:object size:0xE data:string +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x10 data:string +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x50 +lbl_1_data_328 = .data:0x00000328; // type:object size:0x1D data:string +lbl_1_data_345 = .data:0x00000345; // type:object size:0x1B data:string +lbl_1_data_360 = .data:0x00000360; // type:object size:0x11 data:string +lbl_1_data_371 = .data:0x00000371; // type:object size:0x7 +lbl_1_data_378 = .data:0x00000378; // type:object size:0x24 +lbl_1_data_39C = .data:0x0000039C; // type:object size:0x24 +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x24 +lbl_1_data_3E4 = .data:0x000003E4; // type:object size:0x20 +lbl_1_data_404 = .data:0x00000404; // type:object size:0x20 +lbl_1_data_424 = .data:0x00000424; // type:object size:0x4 +lbl_1_data_428 = .data:0x00000428; // type:object size:0x38 +lbl_1_data_460 = .data:0x00000460; // type:object size:0x5 data:string +lbl_1_data_465 = .data:0x00000465; // type:object size:0x6 data:string +lbl_1_data_46B = .data:0x0000046B; // type:object size:0x9 +lbl_1_data_474 = .data:0x00000474; // type:object size:0xC +lbl_1_data_480 = .data:0x00000480; // type:object size:0x10 +lbl_1_data_490 = .data:0x00000490; // type:object size:0x20 +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0x20 +lbl_1_data_4D0 = .data:0x000004D0; // type:object size:0x40 +lbl_1_data_510 = .data:0x00000510; // type:object size:0x14 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0xC +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0xC +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte +lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x20 data:2byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x28 data:2byte +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x2 data:2byte +lbl_1_bss_86 = .bss:0x00000086; // type:object size:0xE data:2byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0xC data:4byte +lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x2 data:2byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0xC +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x6 +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x6 +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0xC +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x24 +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0x4 data:4byte +lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:float +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x4 data:float +lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x24 +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x24 +lbl_1_bss_160 = .bss:0x00000160; // type:object size:0x24 data:float +lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x6 data:2byte +lbl_1_bss_18A = .bss:0x0000018A; // type:object size:0x6 data:2byte +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x6 data:2byte +lbl_1_bss_196 = .bss:0x00000196; // type:object size:0x2 data:2byte +lbl_1_bss_198 = .bss:0x00000198; // type:object size:0x8 data:2byte +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0xC data:float +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x2 data:2byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0xC data:float +lbl_1_bss_1BC = .bss:0x000001BC; // type:object size:0x4 data:float +lbl_1_bss_1C0 = .bss:0x000001C0; // type:object size:0x2 data:2byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x20 +lbl_1_bss_1E4 = .bss:0x000001E4; // type:object size:0xB4 +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0xB4 data:float +lbl_1_bss_34C = .bss:0x0000034C; // type:object size:0x1E +lbl_1_bss_36A = .bss:0x0000036A; // type:object size:0x2 data:2byte +lbl_1_bss_36C = .bss:0x0000036C; // type:object size:0x2 data:2byte +lbl_1_bss_36E = .bss:0x0000036E; // type:object size:0x2 data:2byte +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0x2 data:2byte +lbl_1_bss_374 = .bss:0x00000374; // type:object size:0x4 data:4byte +lbl_1_bss_378 = .bss:0x00000378; // type:object size:0x8 data:4byte +lbl_1_bss_380 = .bss:0x00000380; // type:object size:0x4 data:float +lbl_1_bss_384 = .bss:0x00000384; // type:object size:0x4 data:4byte +lbl_1_bss_388 = .bss:0x00000388; // type:object size:0x2 data:2byte +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/w03Dll/splits.txt b/config/GMPP01_00/rels/w03Dll/splits.txt new file mode 100644 index 00000000..2ba2bee3 --- /dev/null +++ b/config/GMPP01_00/rels/w03Dll/splits.txt @@ -0,0 +1,53 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w03Dll/main.c: + .text start:0x000000E0 end:0x000012C8 + .rodata start:0x00000010 end:0x00000038 + .data start:0x00000000 end:0x00000280 + .bss start:0x00000000 end:0x00000028 + +REL/w03Dll/statue.c: + .text start:0x000012C8 end:0x00003058 + .rodata start:0x00000038 end:0x000000D8 + .data start:0x00000280 end:0x00000310 + .bss start:0x00000028 end:0x00000070 + +REL/w03Dll/condor.c: + .text start:0x00003058 end:0x000063F4 + .rodata start:0x000000D8 end:0x00000218 + .data start:0x00000310 end:0x00000368 + .bss start:0x00000070 end:0x00000120 + +REL/w03Dll/river.c: + .text start:0x000063F4 end:0x0000785C + .rodata start:0x00000218 end:0x000002A8 + .data start:0x00000368 end:0x00000410 + .bss start:0x00000120 end:0x00000138 + +REL/w03Dll/smoke.c: + .text start:0x0000785C end:0x00007ABC + .rodata start:0x000002A8 end:0x000002B0 + .data start:0x00000410 end:0x00000450 + .bss start:0x00000138 end:0x00000140 + +REL/w03Dll/mg_coin.c: + .text start:0x00007ABC end:0x00009A7C + .rodata start:0x000002B0 end:0x00000360 + .data start:0x00000450 end:0x000004D8 + .bss start:0x00000140 end:0x00000180 + +REL/w03Dll/mg_item.c: + .text start:0x00009A7C end:0x0000C248 + .rodata start:0x00000360 end:0x00000418 + .data start:0x000004D8 end:0x0000054C + .bss start:0x00000180 end:0x00000197 diff --git a/config/GMPP01_00/rels/w03Dll/symbols.txt b/config/GMPP01_00/rels/w03Dll/symbols.txt new file mode 100644 index 00000000..40d6b23e --- /dev/null +++ b/config/GMPP01_00/rels/w03Dll/symbols.txt @@ -0,0 +1,443 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x660 +BoardDestroy = .text:0x00000740; // type:function size:0x144 +fn_1_884 = .text:0x00000884; // type:function size:0x6C +fn_1_8F0 = .text:0x000008F0; // type:function size:0x20 +fn_1_910 = .text:0x00000910; // type:function size:0x164 +fn_1_A74 = .text:0x00000A74; // type:function size:0x84 +fn_1_AF8 = .text:0x00000AF8; // type:function size:0x64 +fn_1_B5C = .text:0x00000B5C; // type:function size:0x198 +fn_1_CF4 = .text:0x00000CF4; // type:function size:0xF8 +fn_1_DEC = .text:0x00000DEC; // type:function size:0x2C4 +fn_1_10B0 = .text:0x000010B0; // type:function size:0x34 +fn_1_10E4 = .text:0x000010E4; // type:function size:0x1E4 +fn_1_12C8 = .text:0x000012C8; // type:function size:0x90 +fn_1_1358 = .text:0x00001358; // type:function size:0x1D4 +fn_1_152C = .text:0x0000152C; // type:function size:0xBC +fn_1_15E8 = .text:0x000015E8; // type:function size:0x68 +fn_1_1650 = .text:0x00001650; // type:function size:0x38C +fn_1_19DC = .text:0x000019DC; // type:function size:0x340 +fn_1_1D1C = .text:0x00001D1C; // type:function size:0x1B8 +fn_1_1ED4 = .text:0x00001ED4; // type:function size:0x20C +fn_1_20E0 = .text:0x000020E0; // type:function size:0x600 +fn_1_26E0 = .text:0x000026E0; // type:function size:0x138 +fn_1_2818 = .text:0x00002818; // type:function size:0x118 +fn_1_2930 = .text:0x00002930; // type:function size:0x110 +fn_1_2A40 = .text:0x00002A40; // type:function size:0x80 +fn_1_2AC0 = .text:0x00002AC0; // type:function size:0x84 +fn_1_2B44 = .text:0x00002B44; // type:function size:0x514 +fn_1_3058 = .text:0x00003058; // type:function size:0x44 +fn_1_309C = .text:0x0000309C; // type:function size:0xA0 +fn_1_313C = .text:0x0000313C; // type:function size:0xDC +fn_1_3218 = .text:0x00003218; // type:function size:0xEC +fn_1_3304 = .text:0x00003304; // type:function size:0x174 +fn_1_3478 = .text:0x00003478; // type:function size:0x39C +fn_1_3814 = .text:0x00003814; // type:function size:0x154 +fn_1_3968 = .text:0x00003968; // type:function size:0x520 +fn_1_3E88 = .text:0x00003E88; // type:function size:0xD4 +fn_1_3F5C = .text:0x00003F5C; // type:function size:0x3F8 +fn_1_4354 = .text:0x00004354; // type:function size:0xD0 +fn_1_4424 = .text:0x00004424; // type:function size:0x4C8 +fn_1_48EC = .text:0x000048EC; // type:function size:0x1B0 +fn_1_4A9C = .text:0x00004A9C; // type:function size:0x20 +fn_1_4ABC = .text:0x00004ABC; // type:function size:0x250 +fn_1_4D0C = .text:0x00004D0C; // type:function size:0x54 +fn_1_4D60 = .text:0x00004D60; // type:function size:0x1C4 +fn_1_4F24 = .text:0x00004F24; // type:function size:0x1B0 +fn_1_50D4 = .text:0x000050D4; // type:function size:0x764 +fn_1_5838 = .text:0x00005838; // type:function size:0x290 +fn_1_5AC8 = .text:0x00005AC8; // type:function size:0x194 +fn_1_5C5C = .text:0x00005C5C; // type:function size:0x3D0 +fn_1_602C = .text:0x0000602C; // type:function size:0x178 +fn_1_61A4 = .text:0x000061A4; // type:function size:0xF8 +fn_1_629C = .text:0x0000629C; // type:function size:0x34 +fn_1_62D0 = .text:0x000062D0; // type:function size:0x2C +fn_1_62FC = .text:0x000062FC; // type:function size:0xF8 +fn_1_63F4 = .text:0x000063F4; // type:function size:0xA0 +fn_1_6494 = .text:0x00006494; // type:function size:0x204 +fn_1_6698 = .text:0x00006698; // type:function size:0xC4 +fn_1_675C = .text:0x0000675C; // type:function size:0x9C +fn_1_67F8 = .text:0x000067F8; // type:function size:0x8C +fn_1_6884 = .text:0x00006884; // type:function size:0x14 +fn_1_6898 = .text:0x00006898; // type:function size:0x300 +fn_1_6B98 = .text:0x00006B98; // type:function size:0x404 +fn_1_6F9C = .text:0x00006F9C; // type:function size:0x3C0 +fn_1_735C = .text:0x0000735C; // type:function size:0x320 +fn_1_767C = .text:0x0000767C; // type:function size:0x168 +fn_1_77E4 = .text:0x000077E4; // type:function size:0x78 +fn_1_785C = .text:0x0000785C; // type:function size:0x184 +fn_1_79E0 = .text:0x000079E0; // type:function size:0xDC +fn_1_7ABC = .text:0x00007ABC; // type:function size:0x9C +fn_1_7B58 = .text:0x00007B58; // type:function size:0x50 +fn_1_7BA8 = .text:0x00007BA8; // type:function size:0x90 +fn_1_7C38 = .text:0x00007C38; // type:function size:0x60 +fn_1_7C98 = .text:0x00007C98; // type:function size:0x80 +fn_1_7D18 = .text:0x00007D18; // type:function size:0x428 +fn_1_8140 = .text:0x00008140; // type:function size:0xA0 +fn_1_81E0 = .text:0x000081E0; // type:function size:0x254 +fn_1_8434 = .text:0x00008434; // type:function size:0x74 +fn_1_84A8 = .text:0x000084A8; // type:function size:0x88 +fn_1_8530 = .text:0x00008530; // type:function size:0x168 +fn_1_8698 = .text:0x00008698; // type:function size:0x570 +fn_1_8C08 = .text:0x00008C08; // type:function size:0x23C +fn_1_8E44 = .text:0x00008E44; // type:function size:0x200 +fn_1_9044 = .text:0x00009044; // type:function size:0x174 +fn_1_91B8 = .text:0x000091B8; // type:function size:0x78 +fn_1_9230 = .text:0x00009230; // type:function size:0x154 +fn_1_9384 = .text:0x00009384; // type:function size:0xF0 +fn_1_9474 = .text:0x00009474; // type:function size:0x144 +fn_1_95B8 = .text:0x000095B8; // type:function size:0x240 +fn_1_97F8 = .text:0x000097F8; // type:function size:0x224 +fn_1_9A1C = .text:0x00009A1C; // type:function size:0x60 +fn_1_9A7C = .text:0x00009A7C; // type:function size:0x20 +fn_1_9A9C = .text:0x00009A9C; // type:function size:0x4 +fn_1_9AA0 = .text:0x00009AA0; // type:function size:0x90 +fn_1_9B30 = .text:0x00009B30; // type:function size:0x15C +fn_1_9C8C = .text:0x00009C8C; // type:function size:0x68 +fn_1_9CF4 = .text:0x00009CF4; // type:function size:0x284 +fn_1_9F78 = .text:0x00009F78; // type:function size:0x6C +fn_1_9FE4 = .text:0x00009FE4; // type:function size:0x468 +fn_1_A44C = .text:0x0000A44C; // type:function size:0x194 +fn_1_A5E0 = .text:0x0000A5E0; // type:function size:0xD0 +fn_1_A6B0 = .text:0x0000A6B0; // type:function size:0xF0 +fn_1_A7A0 = .text:0x0000A7A0; // type:function size:0x10C +fn_1_A8AC = .text:0x0000A8AC; // type:function size:0xE8 +fn_1_A994 = .text:0x0000A994; // type:function size:0x184 +fn_1_AB18 = .text:0x0000AB18; // type:function size:0xB8 +fn_1_ABD0 = .text:0x0000ABD0; // type:function size:0x108 +fn_1_ACD8 = .text:0x0000ACD8; // type:function size:0x148 +fn_1_AE20 = .text:0x0000AE20; // type:function size:0x2C +fn_1_AE4C = .text:0x0000AE4C; // type:function size:0xD8 +fn_1_AF24 = .text:0x0000AF24; // type:function size:0x180 +fn_1_B0A4 = .text:0x0000B0A4; // type:function size:0x2AC +fn_1_B350 = .text:0x0000B350; // type:function size:0x15C +fn_1_B4AC = .text:0x0000B4AC; // type:function size:0x1DC +fn_1_B688 = .text:0x0000B688; // type:function size:0xC0 +fn_1_B748 = .text:0x0000B748; // type:function size:0x1A0 +fn_1_B8E8 = .text:0x0000B8E8; // type:function size:0x260 +fn_1_BB48 = .text:0x0000BB48; // type:function size:0x2C +fn_1_BB74 = .text:0x0000BB74; // type:function size:0x50 +fn_1_BBC4 = .text:0x0000BBC4; // type:function size:0x34 +fn_1_BBF8 = .text:0x0000BBF8; // type:function size:0x84 +fn_1_BC7C = .text:0x0000BC7C; // type:function size:0x130 +fn_1_BDAC = .text:0x0000BDAC; // type:function size:0x84 +fn_1_BE30 = .text:0x0000BE30; // type:function size:0x418 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_BE = .rodata:0x000000BE; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_C2 = .rodata:0x000000C2; // type:object size:0x6 scope:local data:byte +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E0 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x2 data:2byte +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0x2 data:2byte +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x2 data:2byte +lbl_1_data_1E6 = .data:0x000001E6; // type:object size:0x2 data:2byte +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0x2 data:2byte +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0x20 data:float +lbl_1_data_20C = .data:0x0000020C; // type:object size:0x8 +lbl_1_data_214 = .data:0x00000214; // type:object size:0x8 +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x10 +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x30 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x10 +lbl_1_data_26C = .data:0x0000026C; // type:object size:0x14 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:2byte +lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:2byte +lbl_1_data_284 = .data:0x00000284; // type:object size:0x2 data:2byte +lbl_1_data_286 = .data:0x00000286; // type:object size:0x2 data:2byte +lbl_1_data_288 = .data:0x00000288; // type:object size:0x4 data:4byte +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x4 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x20 +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x20 +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x20 +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x20 +lbl_1_data_310 = .data:0x00000310; // type:object size:0x2 data:2byte +lbl_1_data_312 = .data:0x00000312; // type:object size:0x2 data:2byte +lbl_1_data_314 = .data:0x00000314; // type:object size:0x2 data:2byte +lbl_1_data_316 = .data:0x00000316; // type:object size:0x2 data:2byte +lbl_1_data_318 = .data:0x00000318; // type:object size:0x18 +lbl_1_data_330 = .data:0x00000330; // type:object size:0xD data:string +lbl_1_data_33D = .data:0x0000033D; // type:object size:0x6 data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 +lbl_1_data_34C = .data:0x0000034C; // type:object size:0x8 +lbl_1_data_354 = .data:0x00000354; // type:object size:0x8 +lbl_1_data_35C = .data:0x0000035C; // type:object size:0xC +lbl_1_data_368 = .data:0x00000368; // type:object size:0x20 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x2 data:2byte +lbl_1_data_38A = .data:0x0000038A; // type:object size:0x2 data:2byte +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x2 data:2byte +lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0xB data:string +lbl_1_data_3AB = .data:0x000003AB; // type:object size:0x6 data:string +lbl_1_data_3B1 = .data:0x000003B1; // type:object size:0x7 +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x48 +lbl_1_data_400 = .data:0x00000400; // type:object size:0x3 data:string +lbl_1_data_403 = .data:0x00000403; // type:object size:0xD +lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 data:string +lbl_1_data_418 = .data:0x00000418; // type:object size:0x8 data:string +lbl_1_data_420 = .data:0x00000420; // type:object size:0x8 data:string +lbl_1_data_428 = .data:0x00000428; // type:object size:0x8 data:string +lbl_1_data_430 = .data:0x00000430; // type:object size:0x8 data:string +lbl_1_data_438 = .data:0x00000438; // type:object size:0x18 +lbl_1_data_450 = .data:0x00000450; // type:object size:0x4 data:4byte +lbl_1_data_454 = .data:0x00000454; // type:object size:0x2 data:2byte +lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte +lbl_1_data_458 = .data:0x00000458; // type:object size:0x2 data:2byte +lbl_1_data_45C = .data:0x0000045C; // type:object size:0xC +lbl_1_data_468 = .data:0x00000468; // type:object size:0x8 +lbl_1_data_470 = .data:0x00000470; // type:object size:0x20 +lbl_1_data_490 = .data:0x00000490; // type:object size:0x20 +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0x1 data:byte +lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x14 +lbl_1_data_4C8 = .data:0x000004C8; // type:object size:0x6 +lbl_1_data_4CE = .data:0x000004CE; // type:object size:0xA +lbl_1_data_4D8 = .data:0x000004D8; // type:object size:0x2 data:2byte +lbl_1_data_4DA = .data:0x000004DA; // type:object size:0x2 data:2byte +lbl_1_data_4DC = .data:0x000004DC; // type:object size:0x2 data:2byte +lbl_1_data_4E0 = .data:0x000004E0; // type:object size:0x4 data:4byte +lbl_1_data_4E4 = .data:0x000004E4; // type:object size:0x2 data:2byte +lbl_1_data_4E6 = .data:0x000004E6; // type:object size:0xE +lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x5 data:string +lbl_1_data_4F9 = .data:0x000004F9; // type:object size:0x6 data:string +lbl_1_data_4FF = .data:0x000004FF; // type:object size:0x9 +lbl_1_data_508 = .data:0x00000508; // type:object size:0xC +lbl_1_data_514 = .data:0x00000514; // type:object size:0x38 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x1C data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x1 data:byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0xC +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x20 +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x2 data:2byte +lbl_1_bss_6A = .bss:0x0000006A; // type:object size:0x2 data:2byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x2 data:2byte +lbl_1_bss_6E = .bss:0x0000006E; // type:object size:0x1 data:byte +lbl_1_bss_6F = .bss:0x0000006F; // type:object size:0x1 data:byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x1 data:byte +lbl_1_bss_7D = .bss:0x0000007D; // type:object size:0x1 data:byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0xA0 +lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:4byte +lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x4 data:4byte +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x2 data:2byte +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:4byte +lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x8 +lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x8 data:4byte +lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x4 data:4byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x4 data:4byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x1 data:byte +lbl_1_bss_14E = .bss:0x0000014E; // type:object size:0x2 data:2byte +lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x30 +lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte +lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte +lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte +lbl_1_bss_18C = .bss:0x0000018C; // type:object size:0x1 data:byte +lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x3 diff --git a/config/GMPP01_00/rels/w04Dll/splits.txt b/config/GMPP01_00/rels/w04Dll/splits.txt new file mode 100644 index 00000000..afc4b596 --- /dev/null +++ b/config/GMPP01_00/rels/w04Dll/splits.txt @@ -0,0 +1,47 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w04Dll/main.c: + .text start:0x000000E0 end:0x000012FC + .rodata start:0x00000010 end:0x00000040 + .data start:0x00000000 end:0x00000298 + .bss start:0x00000000 end:0x00000038 + +REL/w04Dll/bridge.c: + .text start:0x000012FC end:0x000020EC + .rodata start:0x00000040 end:0x00000098 + .data start:0x00000298 end:0x000002D0 + .bss start:0x00000038 end:0x00000048 + +REL/w04Dll/boo_event.c: + .text start:0x000020EC end:0x00006024 + .rodata start:0x00000098 end:0x00000180 + .data start:0x000002D0 end:0x000003A8 + .bss start:0x00000048 end:0x00000100 + +REL/w04Dll/big_boo.c: + .text start:0x00006024 end:0x0000A0DC + .rodata start:0x00000180 end:0x000002C0 + .data start:0x000003A8 end:0x000004F0 + .bss start:0x00000100 end:0x00000288 + +REL/w04Dll/mg_item.c: + .text start:0x0000A0DC end:0x0000C784 + .rodata start:0x000002C0 end:0x000003A0 + .data start:0x000004F0 end:0x00000588 + .bss start:0x00000288 end:0x000002B0 + +REL/w04Dll/mg_coin.c: + .text start:0x0000C784 end:0x0000E9F0 + .rodata start:0x000003A0 end:0x0000042C + .data start:0x00000588 end:0x0000063F + .bss start:0x000002B0 end:0x00000328 diff --git a/config/GMPP01_00/rels/w04Dll/symbols.txt b/config/GMPP01_00/rels/w04Dll/symbols.txt new file mode 100644 index 00000000..75137666 --- /dev/null +++ b/config/GMPP01_00/rels/w04Dll/symbols.txt @@ -0,0 +1,452 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x514 +BoardDestroy = .text:0x000005F4; // type:function size:0x15C +fn_1_750 = .text:0x00000750; // type:function size:0x44 +fn_1_794 = .text:0x00000794; // type:function size:0x4 +fn_1_798 = .text:0x00000798; // type:function size:0x64 +fn_1_7FC = .text:0x000007FC; // type:function size:0x134 +fn_1_930 = .text:0x00000930; // type:function size:0x24 +fn_1_954 = .text:0x00000954; // type:function size:0x4 +fn_1_958 = .text:0x00000958; // type:function size:0x3A0 +fn_1_CF8 = .text:0x00000CF8; // type:function size:0x38 +fn_1_D30 = .text:0x00000D30; // type:function size:0x80 +fn_1_DB0 = .text:0x00000DB0; // type:function size:0x28C +fn_1_103C = .text:0x0000103C; // type:function size:0xF4 +fn_1_1130 = .text:0x00001130; // type:function size:0x1CC +fn_1_12FC = .text:0x000012FC; // type:function size:0x2CC +fn_1_15C8 = .text:0x000015C8; // type:function size:0x50 +fn_1_1618 = .text:0x00001618; // type:function size:0x19C +fn_1_17B4 = .text:0x000017B4; // type:function size:0x168 +fn_1_191C = .text:0x0000191C; // type:function size:0x27C +fn_1_1B98 = .text:0x00001B98; // type:function size:0x94 +fn_1_1C2C = .text:0x00001C2C; // type:function size:0x234 +fn_1_1E60 = .text:0x00001E60; // type:function size:0x1A8 +fn_1_2008 = .text:0x00002008; // type:function size:0x3C +fn_1_2044 = .text:0x00002044; // type:function size:0x14 +fn_1_2058 = .text:0x00002058; // type:function size:0x94 +fn_1_20EC = .text:0x000020EC; // type:function size:0x7D0 +fn_1_28BC = .text:0x000028BC; // type:function size:0x2D0 +fn_1_2B8C = .text:0x00002B8C; // type:function size:0x84 +fn_1_2C10 = .text:0x00002C10; // type:function size:0x250 +fn_1_2E60 = .text:0x00002E60; // type:function size:0x88 +fn_1_2EE8 = .text:0x00002EE8; // type:function size:0x6C +fn_1_2F54 = .text:0x00002F54; // type:function size:0x68 +fn_1_2FBC = .text:0x00002FBC; // type:function size:0x20 +fn_1_2FDC = .text:0x00002FDC; // type:function size:0xC8 +fn_1_30A4 = .text:0x000030A4; // type:function size:0x834 +fn_1_38D8 = .text:0x000038D8; // type:function size:0x3C4 +fn_1_3C9C = .text:0x00003C9C; // type:function size:0x90C +fn_1_45A8 = .text:0x000045A8; // type:function size:0x88 +fn_1_4630 = .text:0x00004630; // type:function size:0x50 +fn_1_4680 = .text:0x00004680; // type:function size:0x1C8 +fn_1_4848 = .text:0x00004848; // type:function size:0x7D0 +fn_1_5018 = .text:0x00005018; // type:function size:0x288 +fn_1_52A0 = .text:0x000052A0; // type:function size:0x300 +fn_1_55A0 = .text:0x000055A0; // type:function size:0x14 +fn_1_55B4 = .text:0x000055B4; // type:function size:0x94 +fn_1_5648 = .text:0x00005648; // type:function size:0x1E0 +fn_1_5828 = .text:0x00005828; // type:function size:0x7C +fn_1_58A4 = .text:0x000058A4; // type:function size:0xDC +fn_1_5980 = .text:0x00005980; // type:function size:0x44 +fn_1_59C4 = .text:0x000059C4; // type:function size:0x68 +fn_1_5A2C = .text:0x00005A2C; // type:function size:0x5F8 +fn_1_6024 = .text:0x00006024; // type:function size:0x28C +fn_1_62B0 = .text:0x000062B0; // type:function size:0x628 +fn_1_68D8 = .text:0x000068D8; // type:function size:0x420 +fn_1_6CF8 = .text:0x00006CF8; // type:function size:0x608 +fn_1_7300 = .text:0x00007300; // type:function size:0x27C +fn_1_757C = .text:0x0000757C; // type:function size:0x5C +fn_1_75D8 = .text:0x000075D8; // type:function size:0x2B0 +fn_1_7888 = .text:0x00007888; // type:function size:0x11D8 +fn_1_8A60 = .text:0x00008A60; // type:function size:0xE24 +fn_1_9884 = .text:0x00009884; // type:function size:0x294 +fn_1_9B18 = .text:0x00009B18; // type:function size:0xA8 +fn_1_9BC0 = .text:0x00009BC0; // type:function size:0x3C +fn_1_9BFC = .text:0x00009BFC; // type:function size:0x290 +fn_1_9E8C = .text:0x00009E8C; // type:function size:0x14 +fn_1_9EBC = .text:0x00009EA0; // type:function size:0x94 +fn_1_9F34 = .text:0x00009F34; // type:function size:0x124 +fn_1_A058 = .text:0x0000A058; // type:function size:0x84 +fn_1_A0F8 = .text:0x0000A0DC; // type:function size:0xF8 +fn_1_A1F0 = .text:0x0000A1D4; // type:function size:0x52C +fn_1_A700 = .text:0x0000A700; // type:function size:0xCC +fn_1_A7CC = .text:0x0000A7CC; // type:function size:0x1294 +fn_1_BA7C = .text:0x0000BA60; // type:function size:0x84 +fn_1_BB00 = .text:0x0000BAE4; // type:function size:0x7BC +fn_1_C2BC = .text:0x0000C2A0; // type:function size:0xCC +fn_1_C36C = .text:0x0000C36C; // type:function size:0x418 +fn_1_C7A0 = .text:0x0000C784; // type:function size:0x34 +fn_1_C7D4 = .text:0x0000C7B8; // type:function size:0x7B8 +fn_1_CF70 = .text:0x0000CF70; // type:function size:0x120 +fn_1_D090 = .text:0x0000D090; // type:function size:0x30 +fn_1_D0C0 = .text:0x0000D0C0; // type:function size:0x98 +fn_1_D158 = .text:0x0000D158; // type:function size:0xBC +fn_1_D214 = .text:0x0000D214; // type:function size:0x74 +fn_1_D288 = .text:0x0000D288; // type:function size:0x2B0 +fn_1_D538 = .text:0x0000D538; // type:function size:0x154 +fn_1_D68C = .text:0x0000D68C; // type:function size:0x64 +fn_1_D6F0 = .text:0x0000D6F0; // type:function size:0x64 +fn_1_D754 = .text:0x0000D754; // type:function size:0x894 +fn_1_DFE8 = .text:0x0000DFE8; // type:function size:0x140 +fn_1_E128 = .text:0x0000E128; // type:function size:0x48 +fn_1_E170 = .text:0x0000E170; // type:function size:0x1E8 +fn_1_E358 = .text:0x0000E358; // type:function size:0x14C +fn_1_E4A4 = .text:0x0000E4A4; // type:function size:0x1EC +fn_1_E690 = .text:0x0000E690; // type:function size:0x1D4 +fn_1_E864 = .text:0x0000E864; // type:function size:0x18C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x280 +lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:2byte +lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:2byte +lbl_1_data_284 = .data:0x00000284; // type:object size:0x2 data:2byte +lbl_1_data_286 = .data:0x00000286; // type:object size:0x2 data:2byte +lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x8 +lbl_1_data_298 = .data:0x00000298; // type:object size:0x8 +lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0xC +lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x24 +lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x20 +lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 +lbl_1_data_334 = .data:0x00000334; // type:object size:0x5 data:string +lbl_1_data_339 = .data:0x00000339; // type:object size:0x5 data:string +lbl_1_data_33E = .data:0x0000033E; // type:object size:0x5 data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0x5 data:string +lbl_1_data_348 = .data:0x00000348; // type:object size:0x10 +lbl_1_data_358 = .data:0x00000358; // type:object size:0x10 +lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0x12 data:string +lbl_1_data_382 = .data:0x00000382; // type:object size:0x11 data:string +lbl_1_data_393 = .data:0x00000393; // type:object size:0x15 +lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x8 data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x9 data:string +lbl_1_data_3B9 = .data:0x000003B9; // type:object size:0x6 data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x5 data:string +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x8 +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x14 data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x14 +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x20 +lbl_1_data_414 = .data:0x00000414; // type:object size:0x10 +lbl_1_data_424 = .data:0x00000424; // type:object size:0x30 data:2byte +lbl_1_data_454 = .data:0x00000454; // type:object size:0xB data:string +lbl_1_data_45F = .data:0x0000045F; // type:object size:0x2 data:string +lbl_1_data_461 = .data:0x00000461; // type:object size:0xC data:string +lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B +lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 data:string +lbl_1_data_48B = .data:0x0000048B; // type:object size:0x11 +lbl_1_data_49C = .data:0x0000049C; // type:object size:0x54 +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x6 data:string +lbl_1_data_4F6 = .data:0x000004F6; // type:object size:0x6 data:string +lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x6 data:string +lbl_1_data_502 = .data:0x00000502; // type:object size:0x8 data:string +lbl_1_data_50A = .data:0x0000050A; // type:object size:0x8 data:string +lbl_1_data_512 = .data:0x00000512; // type:object size:0xA +lbl_1_data_51C = .data:0x0000051C; // type:object size:0x18 data:4byte +lbl_1_data_534 = .data:0x00000534; // type:object size:0xC +lbl_1_data_540 = .data:0x00000540; // type:object size:0x48 +lbl_1_data_588 = .data:0x00000588; // type:object size:0x4 data:4byte +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x5 data:string +lbl_1_data_591 = .data:0x00000591; // type:object size:0x5 data:string +lbl_1_data_596 = .data:0x00000596; // type:object size:0x5 data:string +lbl_1_data_59B = .data:0x0000059B; // type:object size:0x5 data:string +lbl_1_data_5A0 = .data:0x000005A0; // type:object size:0x5 data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x5 data:string +lbl_1_data_5AA = .data:0x000005AA; // type:object size:0x5 data:string +lbl_1_data_5AF = .data:0x000005AF; // type:object size:0x5 data:string +lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0x8 +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x24 data:4byte +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0x10 +lbl_1_data_5F0 = .data:0x000005F0; // type:object size:0x20 +lbl_1_data_610 = .data:0x00000610; // type:object size:0xE data:string +lbl_1_data_61E = .data:0x0000061E; // type:object size:0xE data:string +lbl_1_data_62C = .data:0x0000062C; // type:object size:0x10 +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x3 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x24 data:2byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 data:2byte +lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x18 +lbl_1_bss_6A = .bss:0x0000006A; // type:object size:0x2 data:2byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x2 data:2byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x2 data:2byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x30 +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x2 data:2byte +lbl_1_bss_B2 = .bss:0x000000B2; // type:object size:0x8 +lbl_1_bss_BA = .bss:0x000000BA; // type:object size:0x8 data:2byte +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x2 data:2byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x10 +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x10 +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x10 +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x6 data:2byte +lbl_1_bss_FA = .bss:0x000000FA; // type:object size:0x6 data:2byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x20 +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x2 data:2byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0xD4 data:2byte +lbl_1_bss_210 = .bss:0x00000210; // type:object size:0x30 +lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x30 +lbl_1_bss_270 = .bss:0x00000270; // type:object size:0x2 data:2byte +lbl_1_bss_272 = .bss:0x00000272; // type:object size:0x2 data:2byte +lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x2 data:2byte +lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x4 data:4byte +lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 data:2byte +lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 data:2byte +lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 data:2byte +lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x6 data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 data:4byte +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x8 data:4byte +lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x6 +lbl_1_bss_29E = .bss:0x0000029E; // type:object size:0x8 +lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0x6 +lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x2 data:2byte +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 data:4byte +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xE +lbl_1_bss_2C2 = .bss:0x000002C2; // type:object size:0xE +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x28 data:2byte +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x2 data:2byte +lbl_1_bss_2FA = .bss:0x000002FA; // type:object size:0x2 data:2byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0xC data:float +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0x2 data:2byte +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x4 data:4byte +lbl_1_bss_31C = .bss:0x0000031C; // type:object size:0x4 data:4byte +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x4 data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0x2 data:2byte +lbl_1_bss_326 = .bss:0x00000326; // type:object size:0x2 data:2byte diff --git a/config/GMPP01_00/rels/w05Dll/splits.txt b/config/GMPP01_00/rels/w05Dll/splits.txt new file mode 100644 index 00000000..fc4cdcea --- /dev/null +++ b/config/GMPP01_00/rels/w05Dll/splits.txt @@ -0,0 +1,47 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w05Dll/main.c: + .text start:0x000000E0 end:0x000013D4 + .rodata start:0x00000010 end:0x00000048 + .data start:0x00000000 end:0x00000150 + .bss start:0x00000000 end:0x00000028 + +REL/w05Dll/hotel.c: + .text start:0x000013D4 end:0x00002B40 + .rodata start:0x00000048 end:0x00000090 + .data start:0x00000150 end:0x000001A8 + .bss start:0x00000028 end:0x00000030 + +REL/w05Dll/monkey.c: + .text start:0x00002B40 end:0x00003F74 + .rodata start:0x00000090 end:0x000000F8 + .data start:0x000001A8 end:0x00000200 + .bss start:0x00000030 end:0x00000058 + +REL/w05Dll/dolphin.c: + .text start:0x00003F74 end:0x00006B28 + .rodata start:0x000000F8 end:0x000001A8 + .data start:0x00000200 end:0x00000310 + .bss start:0x00000058 end:0x00000078 + +REL/w05Dll/mg_item.c: + .text start:0x00006B28 end:0x00009680 + .rodata start:0x000001A8 end:0x00000268 + .data start:0x00000310 end:0x00000450 + .bss start:0x00000078 end:0x000000B8 + +REL/w05Dll/mg_coin.c: + .text start:0x00009680 end:0x0000B644 + .rodata start:0x00000268 end:0x00000300 + .data start:0x00000450 end:0x000004C7 + .bss start:0x000000B8 end:0x00000108 diff --git a/config/GMPP01_00/rels/w05Dll/symbols.txt b/config/GMPP01_00/rels/w05Dll/symbols.txt new file mode 100644 index 00000000..faed8cbe --- /dev/null +++ b/config/GMPP01_00/rels/w05Dll/symbols.txt @@ -0,0 +1,356 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x4D8 +BoardDestroy = .text:0x000005B8; // type:function size:0x18C +fn_1_744 = .text:0x00000744; // type:function size:0x44 +fn_1_788 = .text:0x00000788; // type:function size:0x4 +fn_1_78C = .text:0x0000078C; // type:function size:0xA0 +fn_1_82C = .text:0x0000082C; // type:function size:0x100 +fn_1_92C = .text:0x0000092C; // type:function size:0x24 +fn_1_950 = .text:0x00000950; // type:function size:0x4 +fn_1_954 = .text:0x00000954; // type:function size:0x3F8 +fn_1_D4C = .text:0x00000D4C; // type:function size:0x38 +fn_1_D84 = .text:0x00000D84; // type:function size:0x80 +fn_1_E04 = .text:0x00000E04; // type:function size:0x3C +fn_1_E40 = .text:0x00000E40; // type:function size:0x2D4 +fn_1_1114 = .text:0x00001114; // type:function size:0xF4 +fn_1_1208 = .text:0x00001208; // type:function size:0x1CC +fn_1_13D4 = .text:0x000013D4; // type:function size:0xFC +fn_1_14D0 = .text:0x000014D0; // type:function size:0x2C +fn_1_14FC = .text:0x000014FC; // type:function size:0x60 +fn_1_155C = .text:0x0000155C; // type:function size:0x8E8 +fn_1_1E44 = .text:0x00001E44; // type:function size:0xCFC +fn_1_2B40 = .text:0x00002B40; // type:function size:0x13C +fn_1_2C7C = .text:0x00002C7C; // type:function size:0x3C8 +fn_1_3044 = .text:0x00003044; // type:function size:0x3EC +fn_1_3430 = .text:0x00003430; // type:function size:0xE4 +fn_1_3514 = .text:0x00003514; // type:function size:0x874 +fn_1_3D88 = .text:0x00003D88; // type:function size:0x104 +fn_1_3E8C = .text:0x00003E8C; // type:function size:0xE8 +fn_1_3F74 = .text:0x00003F74; // type:function size:0x64 +fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x5C +fn_1_4034 = .text:0x00004034; // type:function size:0xE80 +fn_1_4EB4 = .text:0x00004EB4; // type:function size:0x794 +fn_1_5648 = .text:0x00005648; // type:function size:0x14C +fn_1_5794 = .text:0x00005794; // type:function size:0xB18 +fn_1_62AC = .text:0x000062AC; // type:function size:0x210 +fn_1_64BC = .text:0x000064BC; // type:function size:0x12C +fn_1_65E8 = .text:0x000065E8; // type:function size:0x88 +fn_1_6670 = .text:0x00006670; // type:function size:0x50 +fn_1_66C0 = .text:0x000066C0; // type:function size:0x254 +fn_1_6914 = .text:0x00006914; // type:function size:0x214 +fn_1_6B28 = .text:0x00006B28; // type:function size:0x54 +fn_1_6B7C = .text:0x00006B7C; // type:function size:0x708 +fn_1_7284 = .text:0x00007284; // type:function size:0x60 +fn_1_72E4 = .text:0x000072E4; // type:function size:0x30 +fn_1_7314 = .text:0x00007314; // type:function size:0xAC +fn_1_73C0 = .text:0x000073C0; // type:function size:0x40 +fn_1_7400 = .text:0x00007400; // type:function size:0xD0 +fn_1_74D0 = .text:0x000074D0; // type:function size:0x2E0 +fn_1_77B0 = .text:0x000077B0; // type:function size:0xF0 +fn_1_78A0 = .text:0x000078A0; // type:function size:0x88 +fn_1_7928 = .text:0x00007928; // type:function size:0x74 +fn_1_799C = .text:0x0000799C; // type:function size:0x4B0 +fn_1_7E4C = .text:0x00007E4C; // type:function size:0x48 +fn_1_7E94 = .text:0x00007E94; // type:function size:0x70 +fn_1_7F04 = .text:0x00007F04; // type:function size:0x1D4 +fn_1_80D8 = .text:0x000080D8; // type:function size:0x338 +fn_1_8410 = .text:0x00008410; // type:function size:0xFC +fn_1_850C = .text:0x0000850C; // type:function size:0x15C +fn_1_8668 = .text:0x00008668; // type:function size:0x130 +fn_1_8798 = .text:0x00008798; // type:function size:0xEC +fn_1_8884 = .text:0x00008884; // type:function size:0x34 +fn_1_88B8 = .text:0x000088B8; // type:function size:0xB4 +fn_1_896C = .text:0x0000896C; // type:function size:0x870 +fn_1_91DC = .text:0x000091DC; // type:function size:0x8C +fn_1_9268 = .text:0x00009268; // type:function size:0x418 +fn_1_9680 = .text:0x00009680; // type:function size:0x34 +fn_1_96B4 = .text:0x000096B4; // type:function size:0xAC +fn_1_9760 = .text:0x00009760; // type:function size:0x4C +fn_1_97AC = .text:0x000097AC; // type:function size:0x2BC +fn_1_9A68 = .text:0x00009A68; // type:function size:0x58 +fn_1_9AC0 = .text:0x00009AC0; // type:function size:0x30 +fn_1_9AF0 = .text:0x00009AF0; // type:function size:0x84 +fn_1_9B74 = .text:0x00009B74; // type:function size:0xB0 +fn_1_9C24 = .text:0x00009C24; // type:function size:0x74 +fn_1_9C98 = .text:0x00009C98; // type:function size:0x74 +fn_1_9D0C = .text:0x00009D0C; // type:function size:0x218 +fn_1_9F24 = .text:0x00009F24; // type:function size:0x300 +fn_1_A224 = .text:0x0000A224; // type:function size:0x2D4 +fn_1_A4F8 = .text:0x0000A4F8; // type:function size:0xB8 +fn_1_A5B0 = .text:0x0000A5B0; // type:function size:0x3E0 +fn_1_A990 = .text:0x0000A990; // type:function size:0x194 +fn_1_AB24 = .text:0x0000AB24; // type:function size:0x6F0 +fn_1_B214 = .text:0x0000B214; // type:function size:0x9C +fn_1_B2B0 = .text:0x0000B2B0; // type:function size:0x114 +fn_1_B3C4 = .text:0x0000B3C4; // type:function size:0x280 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:4byte +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_data_0 = .data:0x00000000; // type:object size:0x118 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x2 data:2byte +lbl_1_data_11A = .data:0x0000011A; // type:object size:0x2 data:2byte +lbl_1_data_11C = .data:0x0000011C; // type:object size:0x2 data:2byte +lbl_1_data_11E = .data:0x0000011E; // type:object size:0x2 data:2byte +lbl_1_data_120 = .data:0x00000120; // type:object size:0x2 data:2byte +lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 +lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 +lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 +lbl_1_data_150 = .data:0x00000150; // type:object size:0x14 +lbl_1_data_164 = .data:0x00000164; // type:object size:0x2 data:2byte +lbl_1_data_166 = .data:0x00000166; // type:object size:0xA +lbl_1_data_170 = .data:0x00000170; // type:object size:0x10 +lbl_1_data_180 = .data:0x00000180; // type:object size:0x4 data:4byte +lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 +lbl_1_data_188 = .data:0x00000188; // type:object size:0x10 +lbl_1_data_198 = .data:0x00000198; // type:object size:0x8 +lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x8 data:string +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0xC +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x7 data:string +lbl_1_data_1BB = .data:0x000001BB; // type:object size:0x9 +lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x8 data:4byte +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0xC +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x8 data:string +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x8 data:string +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xA data:string +lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xE +lbl_1_data_200 = .data:0x00000200; // type:object size:0x8 data:string +lbl_1_data_208 = .data:0x00000208; // type:object size:0x8 data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0x6 data:string +lbl_1_data_216 = .data:0x00000216; // type:object size:0x6 data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x7 data:string +lbl_1_data_223 = .data:0x00000223; // type:object size:0x9 +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x18 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x18 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x48 +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x48 +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x8 +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x1C +lbl_1_data_310 = .data:0x00000310; // type:object size:0x8 +lbl_1_data_318 = .data:0x00000318; // type:object size:0x7 data:string +lbl_1_data_31F = .data:0x0000031F; // type:object size:0x7 data:string +lbl_1_data_326 = .data:0x00000326; // type:object size:0xA +lbl_1_data_330 = .data:0x00000330; // type:object size:0xC +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x7 data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0xD data:string +lbl_1_data_350 = .data:0x00000350; // type:object size:0xF0 +lbl_1_data_440 = .data:0x00000440; // type:object size:0x10 +lbl_1_data_450 = .data:0x00000450; // type:object size:0x6 data:string +lbl_1_data_456 = .data:0x00000456; // type:object size:0x7 data:string +lbl_1_data_45D = .data:0x0000045D; // type:object size:0x7 data:string +lbl_1_data_464 = .data:0x00000464; // type:object size:0xC +lbl_1_data_470 = .data:0x00000470; // type:object size:0xC +lbl_1_data_47C = .data:0x0000047C; // type:object size:0xC +lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 data:string +lbl_1_data_48B = .data:0x0000048B; // type:object size:0x4 data:string +lbl_1_data_48F = .data:0x0000048F; // type:object size:0x5 +lbl_1_data_494 = .data:0x00000494; // type:object size:0xC +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xD data:string +lbl_1_data_4AD = .data:0x000004AD; // type:object size:0x5 data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x6 +lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0xC +lbl_1_data_4C4 = .data:0x000004C4; // type:object size:0x3 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x14 data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x8 data:2byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0xC data:float +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x2 data:2byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte +lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x2 data:2byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x2 data:2byte +lbl_1_bss_4E = .bss:0x0000004E; // type:object size:0xA data:2byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0xC +lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x6 +lbl_1_bss_72 = .bss:0x00000072; // type:object size:0x6 data:2byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0xC +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte +lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x2 data:2byte +lbl_1_bss_A2 = .bss:0x000000A2; // type:object size:0x2 data:2byte +lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x6 +lbl_1_bss_AA = .bss:0x000000AA; // type:object size:0x6 +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x6 +lbl_1_bss_B6 = .bss:0x000000B6; // type:object size:0x2 data:2byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x2 data:2byte +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x2 data:2byte +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x2 data:2byte +lbl_1_bss_C6 = .bss:0x000000C6; // type:object size:0x2 data:2byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x2 data:2byte +lbl_1_bss_D6 = .bss:0x000000D6; // type:object size:0x28 data:2byte +lbl_1_bss_FE = .bss:0x000000FE; // type:object size:0x2 data:2byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x2 data:2byte +lbl_1_bss_102 = .bss:0x00000102; // type:object size:0x6 data:2byte diff --git a/config/GMPP01_00/rels/w06Dll/splits.txt b/config/GMPP01_00/rels/w06Dll/splits.txt new file mode 100644 index 00000000..eee27cef --- /dev/null +++ b/config/GMPP01_00/rels/w06Dll/splits.txt @@ -0,0 +1,47 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w06Dll/main.c: + .text start:0x000000E0 end:0x00000D70 + .rodata start:0x00000010 end:0x00000040 + .data start:0x00000000 end:0x000001A8 + .bss start:0x00000000 end:0x00000018 + +REL/w06Dll/mg_item.c: + .text start:0x00000D70 end:0x00004878 + .rodata start:0x00000040 end:0x000000F0 + .data start:0x000001A8 end:0x000001D8 + .bss start:0x00000018 end:0x00000048 + +REL/w06Dll/mg_coin.c: + .text start:0x00004878 end:0x00006EF0 + .rodata start:0x000000F0 end:0x000001B0 + .data start:0x000001D8 end:0x00000208 + .bss start:0x00000048 end:0x00000090 + +REL/w06Dll/fire.c: + .text start:0x00006EF0 end:0x00007BD0 + .rodata start:0x000001B0 end:0x000001E8 + .data start:0x00000208 end:0x00000418 + .bss start:0x00000090 end:0x000000C8 + +REL/w06Dll/bridge.c: + .text start:0x00007BD0 end:0x00008F40 + .rodata start:0x000001E8 end:0x00000228 + .data start:0x00000418 end:0x00000498 + .bss start:0x000000C8 end:0x000000E8 + +REL/w06Dll/bowser.c: + .text start:0x00008F40 end:0x0000D0C4 + .rodata start:0x00000228 end:0x000002D8 + .data start:0x00000498 end:0x00000541 + .bss start:0x000000E8 end:0x000000F5 diff --git a/config/GMPP01_00/rels/w06Dll/symbols.txt b/config/GMPP01_00/rels/w06Dll/symbols.txt new file mode 100644 index 00000000..aad0e22c --- /dev/null +++ b/config/GMPP01_00/rels/w06Dll/symbols.txt @@ -0,0 +1,373 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x4C4 +BoardDestroy = .text:0x000005A4; // type:function size:0x18C +fn_1_730 = .text:0x00000730; // type:function size:0x6C scope:local +fn_1_79C = .text:0x0000079C; // type:function size:0x20 scope:local +fn_1_7BC = .text:0x000007BC; // type:function size:0x144 scope:local +fn_1_900 = .text:0x00000900; // type:function size:0x84 scope:local +fn_1_984 = .text:0x00000984; // type:function size:0x3C scope:local +fn_1_9C0 = .text:0x000009C0; // type:function size:0x168 scope:local +fn_1_B28 = .text:0x00000B28; // type:function size:0x34 scope:local +fn_1_B5C = .text:0x00000B5C; // type:function size:0x214 scope:local +fn_1_D70 = .text:0x00000D70; // type:function size:0x1FC +fn_1_F6C = .text:0x00000F6C; // type:function size:0xE8 +fn_1_1054 = .text:0x00001054; // type:function size:0x90 +fn_1_10E4 = .text:0x000010E4; // type:function size:0x64 scope:local +fn_1_1148 = .text:0x00001148; // type:function size:0x68 scope:local +fn_1_11B0 = .text:0x000011B0; // type:function size:0xF0 scope:local +fn_1_12A0 = .text:0x000012A0; // type:function size:0x32C scope:local +fn_1_15CC = .text:0x000015CC; // type:function size:0x614 scope:local +fn_1_1BE0 = .text:0x00001BE0; // type:function size:0xD0 scope:local +fn_1_1CB0 = .text:0x00001CB0; // type:function size:0xAC scope:local +fn_1_1D5C = .text:0x00001D5C; // type:function size:0xD4 scope:local +fn_1_1E30 = .text:0x00001E30; // type:function size:0xD8 scope:local +fn_1_1F08 = .text:0x00001F08; // type:function size:0x140 scope:local +fn_1_2048 = .text:0x00002048; // type:function size:0x84 scope:local +fn_1_20CC = .text:0x000020CC; // type:function size:0xA8 scope:local +fn_1_2174 = .text:0x00002174; // type:function size:0x58 scope:local +fn_1_21CC = .text:0x000021CC; // type:function size:0x54 scope:local +fn_1_2220 = .text:0x00002220; // type:function size:0x21C scope:local +fn_1_243C = .text:0x0000243C; // type:function size:0x5E0 scope:local +fn_1_2A1C = .text:0x00002A1C; // type:function size:0x144 scope:local +fn_1_2B60 = .text:0x00002B60; // type:function size:0xB8 scope:local +fn_1_2C18 = .text:0x00002C18; // type:function size:0x178 scope:local +fn_1_2D90 = .text:0x00002D90; // type:function size:0x40 scope:local +fn_1_2DD0 = .text:0x00002DD0; // type:function size:0x48 scope:local +fn_1_2E18 = .text:0x00002E18; // type:function size:0xDC scope:local +fn_1_2EF4 = .text:0x00002EF4; // type:function size:0x57C scope:local +fn_1_3470 = .text:0x00003470; // type:function size:0xF0 scope:local +fn_1_3560 = .text:0x00003560; // type:function size:0x5C scope:local +fn_1_35BC = .text:0x000035BC; // type:function size:0x48 scope:local +fn_1_3604 = .text:0x00003604; // type:function size:0x94 scope:local +fn_1_3698 = .text:0x00003698; // type:function size:0x2DC scope:local +fn_1_3974 = .text:0x00003974; // type:function size:0x6FC scope:local +fn_1_4070 = .text:0x00004070; // type:function size:0xB4 scope:local +fn_1_4124 = .text:0x00004124; // type:function size:0x70 scope:local +fn_1_4194 = .text:0x00004194; // type:function size:0x118 scope:local +fn_1_42AC = .text:0x000042AC; // type:function size:0x130 scope:local +fn_1_43DC = .text:0x000043DC; // type:function size:0x84 scope:local +fn_1_4460 = .text:0x00004460; // type:function size:0x418 scope:local +fn_1_4878 = .text:0x00004878; // type:function size:0x198 +fn_1_4A10 = .text:0x00004A10; // type:function size:0x50 +fn_1_4A60 = .text:0x00004A60; // type:function size:0xA0 +fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0 scope:local +fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58 scope:local +fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0 scope:local +fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4 scope:local +fn_1_519C = .text:0x0000519C; // type:function size:0x204 scope:local +fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0 scope:local +fn_1_5490 = .text:0x00005490; // type:function size:0x23C scope:local +fn_1_56CC = .text:0x000056CC; // type:function size:0x110 scope:local +fn_1_57DC = .text:0x000057DC; // type:function size:0xA0 scope:local +fn_1_587C = .text:0x0000587C; // type:function size:0x80 scope:local +fn_1_58FC = .text:0x000058FC; // type:function size:0x6C scope:local +fn_1_5968 = .text:0x00005968; // type:function size:0x68 scope:local +fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C scope:local +fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48 scope:local +fn_1_5B54 = .text:0x00005B54; // type:function size:0x190 scope:local +fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8 scope:local +fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40 scope:local +fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C scope:local +fn_1_5F58 = .text:0x00005F58; // type:function size:0x114 scope:local +fn_1_606C = .text:0x0000606C; // type:function size:0x9A0 scope:local +fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240 scope:local +fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244 scope:local +fn_1_6E90 = .text:0x00006E90; // type:function size:0x60 scope:local +fn_1_6EF0 = .text:0x00006EF0; // type:function size:0x90 +fn_1_6F80 = .text:0x00006F80; // type:function size:0x290 scope:local +fn_1_7210 = .text:0x00007210; // type:function size:0x94 scope:local +fn_1_72A4 = .text:0x000072A4; // type:function size:0x28 scope:local +fn_1_72CC = .text:0x000072CC; // type:function size:0x120 scope:local +fn_1_73EC = .text:0x000073EC; // type:function size:0xD0 scope:local +fn_1_74BC = .text:0x000074BC; // type:function size:0xB8 scope:local +fn_1_7574 = .text:0x00007574; // type:function size:0x120 scope:local +fn_1_7674 = .text:0x00007694; // type:function size:0xEC scope:local +fn_1_7760 = .text:0x00007780; // type:function size:0x1E4 scope:local +fn_1_7944 = .text:0x00007964; // type:function size:0x26C scope:local +fn_1_7BB0 = .text:0x00007BD0; // type:function size:0x38C +fn_1_7F3C = .text:0x00007F5C; // type:function size:0x68 +fn_1_7FA4 = .text:0x00007FC4; // type:function size:0x2C0 +fn_1_8264 = .text:0x00008284; // type:function size:0xBC +fn_1_8320 = .text:0x00008340; // type:function size:0x100 scope:local +fn_1_8420 = .text:0x00008440; // type:function size:0x70 scope:local +fn_1_8490 = .text:0x000084B0; // type:function size:0x5C8 scope:local +fn_1_8A58 = .text:0x00008A78; // type:function size:0x4C8 scope:local +fn_1_8F20 = .text:0x00008F40; // type:function size:0x2B8 +fn_1_91D8 = .text:0x000091F8; // type:function size:0xBC +fn_1_9294 = .text:0x000092B4; // type:function size:0x44 +fn_1_92D8 = .text:0x000092F8; // type:function size:0xF0 +fn_1_93C8 = .text:0x000093E8; // type:function size:0x10C scope:local +fn_1_94D4 = .text:0x000094F4; // type:function size:0xD8 scope:local +fn_1_95AC = .text:0x000095CC; // type:function size:0x8B0 scope:local +fn_1_9E5C = .text:0x00009E7C; // type:function size:0x5AC scope:local +fn_1_A408 = .text:0x0000A428; // type:function size:0x744 scope:local +fn_1_AB4C = .text:0x0000AB6C; // type:function size:0x730 scope:local +fn_1_B27C = .text:0x0000B29C; // type:function size:0x424 scope:local +fn_1_B6A0 = .text:0x0000B6C0; // type:function size:0x240 scope:local +fn_1_B8E0 = .text:0x0000B900; // type:function size:0x230 scope:local +fn_1_BB10 = .text:0x0000BB30; // type:function size:0x1F8 scope:local +fn_1_BD08 = .text:0x0000BD28; // type:function size:0x3C scope:local +fn_1_BD44 = .text:0x0000BD64; // type:function size:0x48 scope:local +fn_1_BD8C = .text:0x0000BDAC; // type:function size:0x37C scope:local +fn_1_C108 = .text:0x0000C128; // type:function size:0x1AC +fn_1_C2B4 = .text:0x0000C2D4; // type:function size:0x158 +fn_1_C40C = .text:0x0000C42C; // type:function size:0x5B0 scope:local +fn_1_C9BC = .text:0x0000C9DC; // type:function size:0xD0 scope:local +fn_1_CA8C = .text:0x0000CAAC; // type:function size:0x40 scope:local +fn_1_CACC = .text:0x0000CAEC; // type:function size:0x1C4 scope:local +fn_1_CC90 = .text:0x0000CCB0; // type:function size:0x7C +fn_1_CD0C = .text:0x0000CD2C; // type:function size:0x398 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5 scope:local +lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7 scope:local +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0 scope:local +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8 scope:local +lbl_1_data_100 = .data:0x00000100; // type:object size:0x8 scope:local +lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0 scope:local +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x1 scope:local data:byte +lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3 scope:local +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC scope:local +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 scope:local data:string +lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0x13 scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6 scope:local +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x24 scope:local +lbl_1_data_208 = .data:0x00000208; // type:object size:0x20 scope:local +lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 scope:local data:byte +lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 scope:local data:2byte +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x2 scope:local data:2byte +lbl_1_data_230 = .data:0x00000230; // type:object size:0x38 scope:local +lbl_1_data_268 = .data:0x00000268; // type:object size:0x5 scope:local data:string +lbl_1_data_26D = .data:0x0000026D; // type:object size:0xE scope:local +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x4 scope:local +lbl_1_data_27F = .data:0x0000027F; // type:object size:0x8 scope:local +lbl_1_data_287 = .data:0x00000287; // type:object size:0x12 scope:local data:string +lbl_1_data_299 = .data:0x00000299; // type:object size:0x11 scope:local data:string +lbl_1_data_2AA = .data:0x000002AA; // type:object size:0x18 scope:local data:string +lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x17 scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x16 scope:local data:string +lbl_1_data_2EF = .data:0x000002EF; // type:object size:0x10 scope:local data:string +lbl_1_data_2FF = .data:0x000002FF; // type:object size:0x10 scope:local data:string +lbl_1_data_30F = .data:0x0000030F; // type:object size:0x11 scope:local data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0x15 scope:local data:string +lbl_1_data_335 = .data:0x00000335; // type:object size:0x15 scope:local data:string +lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 scope:local data:string +lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 scope:local data:string +lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 scope:local data:string +lbl_1_data_380 = .data:0x00000380; // type:object size:0x98 scope:local +lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 scope:local data:2byte +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18 scope:local +lbl_1_data_434 = .data:0x00000434; // type:object size:0x18 scope:local +lbl_1_data_44C = .data:0x0000044C; // type:object size:0xC scope:local +lbl_1_data_458 = .data:0x00000458; // type:object size:0x20 scope:local +lbl_1_data_478 = .data:0x00000478; // type:object size:0x20 scope:local +lbl_1_data_498 = .data:0x00000498; // type:object size:0x2 scope:local data:2byte +lbl_1_data_49A = .data:0x0000049A; // type:object size:0x2 scope:local data:2byte +lbl_1_data_49C = .data:0x0000049C; // type:object size:0x2 scope:local data:2byte +lbl_1_data_49E = .data:0x0000049E; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4A4 = .data:0x000004A4; // type:object size:0x8 scope:local +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x20 scope:local +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x20 scope:local +lbl_1_data_4EC = .data:0x000004EC; // type:object size:0x24 scope:local +lbl_1_data_510 = .data:0x00000510; // type:object size:0x20 scope:local +lbl_1_data_530 = .data:0x00000530; // type:object size:0x6 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0xB scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x1 scope:local data:byte +lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 scope:local data:byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6 scope:local +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC scope:local data:2byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 scope:local data:byte +lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 scope:local data:byte +lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 scope:local data:byte +lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31 scope:local +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x28 scope:local data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x4 scope:local +lbl_1_bss_C6 = .bss:0x000000C6; // type:object size:0x1 scope:local data:byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x6 scope:local +lbl_1_bss_D6 = .bss:0x000000D6; // type:object size:0xC scope:local +lbl_1_bss_E2 = .bss:0x000000E2; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_E6 = .bss:0x000000E6; // type:object size:0x1 scope:local data:byte +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x1 scope:local data:byte diff --git a/config/GMPP01_00/rels/w20Dll/splits.txt b/config/GMPP01_00/rels/w20Dll/splits.txt new file mode 100644 index 00000000..9df8ed45 --- /dev/null +++ b/config/GMPP01_00/rels/w20Dll/splits.txt @@ -0,0 +1,17 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + .rodata start:0x00000000 end:0x00000010 + +REL/w20Dll/main.c: + .text start:0x000000E0 end:0x00000678 + .rodata start:0x00000010 end:0x00000030 + .data start:0x00000000 end:0x00000034 + .bss start:0x00000000 end:0x0000000E diff --git a/config/GMPP01_00/rels/w20Dll/symbols.txt b/config/GMPP01_00/rels/w20Dll/symbols.txt new file mode 100644 index 00000000..0e84011e --- /dev/null +++ b/config/GMPP01_00/rels/w20Dll/symbols.txt @@ -0,0 +1,33 @@ +ObjectSetup = .text:0x00000000; // type:function size:0x30 scope:local +_prolog = .text:0x00000030; // type:function size:0x64 scope:global +_epilog = .text:0x00000094; // type:function size:0x4C scope:global +BoardCreate = .text:0x000000E0; // type:function size:0x2B0 +BoardDestroy = .text:0x00000390; // type:function size:0xBC +fn_1_44C = .text:0x0000044C; // type:function size:0x44 +fn_1_490 = .text:0x00000490; // type:function size:0x4 +fn_1_494 = .text:0x00000494; // type:function size:0x4 +fn_1_498 = .text:0x00000498; // type:function size:0x8 +fn_1_4A0 = .text:0x000004A0; // type:function size:0x4 +fn_1_4A4 = .text:0x000004A4; // type:function size:0x4 +fn_1_4A8 = .text:0x000004A8; // type:function size:0x4 +fn_1_4AC = .text:0x000004AC; // type:function size:0x1CC +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte +lbl_1_data_2 = .data:0x00000002; // type:object size:0x2 data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0x2 data:2byte +lbl_1_data_6 = .data:0x00000006; // type:object size:0x2 data:2byte +lbl_1_data_8 = .data:0x00000008; // type:object size:0x2 data:2byte +lbl_1_data_A = .data:0x0000000A; // type:object size:0x2 data:2byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x20 data:4byte +unkMotTbl = .data:0x0000002C; // type:object size:0x8 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 diff --git a/config/GMPP01_00/rels/ztardll/splits.txt b/config/GMPP01_00/rels/ztardll/splits.txt new file mode 100644 index 00000000..403b2201 --- /dev/null +++ b/config/GMPP01_00/rels/ztardll/splits.txt @@ -0,0 +1,27 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + +REL/ztardll/main.c: + .text start:0x000000A0 end:0x0000789C + .rodata start:0x00000000 end:0x000001C0 + .data start:0x00000000 end:0x000000B0 + .bss start:0x00000000 end:0x00000070 + +REL/ztardll/font.c: + .text start:0x0000789C end:0x00007C40 + .rodata start:0x000001C0 end:0x000001C8 + .data start:0x000000B0 end:0x00000570 + +REL/ztardll/select.c: + .text start:0x00007C40 end:0x000123AC + .rodata start:0x000001C8 end:0x000002A0 + .data start:0x00000570 end:0x0000081C + .bss start:0x00000070 end:0x000002D8 diff --git a/config/GMPP01_00/rels/ztardll/symbols.txt b/config/GMPP01_00/rels/ztardll/symbols.txt new file mode 100644 index 00000000..3ccb8483 --- /dev/null +++ b/config/GMPP01_00/rels/ztardll/symbols.txt @@ -0,0 +1,259 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +ObjectSetup = .text:0x000000A0; // type:function size:0x384 +fn_1_424 = .text:0x00000424; // type:function size:0x1350 +fn_1_1774 = .text:0x00001774; // type:function size:0x57C +fn_1_1CF0 = .text:0x00001CF0; // type:function size:0xB0 +fn_1_1DA0 = .text:0x00001DA0; // type:function size:0x5B0 +fn_1_2350 = .text:0x00002350; // type:function size:0x1060 +fn_1_33B0 = .text:0x000033B0; // type:function size:0xD34 +fn_1_40E4 = .text:0x000040E4; // type:function size:0x290 +fn_1_4374 = .text:0x00004374; // type:function size:0x5D4 +fn_1_4948 = .text:0x00004948; // type:function size:0x874 +fn_1_51BC = .text:0x000051BC; // type:function size:0x194 +fn_1_524C = .text:0x00005350; // type:function size:0x14BC +fn_1_66F8 = .text:0x0000680C; // type:function size:0x140 +fn_1_6804 = .text:0x0000694C; // type:function size:0xC10 +fn_1_7414 = .text:0x0000755C; // type:function size:0x340 +fn_1_7754 = .text:0x0000789C; // type:function size:0x3A4 +fn_1_7C00 = .text:0x00007C40; // type:function size:0x16C +fn_1_7D6C = .text:0x00007DAC; // type:function size:0xA0 +fn_1_7E0C = .text:0x00007E4C; // type:function size:0x224 +fn_1_8030 = .text:0x00008070; // type:function size:0x2DC +fn_1_830C = .text:0x0000834C; // type:function size:0x2C +fn_1_8338 = .text:0x00008378; // type:function size:0x518 +fn_1_8850 = .text:0x00008890; // type:function size:0x2C +fn_1_887C = .text:0x000088BC; // type:function size:0x28 +fn_1_88A4 = .text:0x000088E4; // type:function size:0x274 +fn_1_8B18 = .text:0x00008B58; // type:function size:0x2C +fn_1_8B44 = .text:0x00008B84; // type:function size:0x2C +fn_1_8B70 = .text:0x00008BB0; // type:function size:0x24 +fn_1_8B94 = .text:0x00008BD4; // type:function size:0x2BC +fn_1_8E50 = .text:0x00008E90; // type:function size:0x500 +fn_1_9350 = .text:0x00009390; // type:function size:0x480 +fn_1_97D0 = .text:0x00009810; // type:function size:0x80C +fn_1_9FDC = .text:0x0000A01C; // type:function size:0x28 +fn_1_A004 = .text:0x0000A044; // type:function size:0x28 +fn_1_A02C = .text:0x0000A06C; // type:function size:0x21C +fn_1_A248 = .text:0x0000A288; // type:function size:0x194 +fn_1_A3DC = .text:0x0000A41C; // type:function size:0x198 +fn_1_A574 = .text:0x0000A5B4; // type:function size:0x9C +fn_1_A610 = .text:0x0000A650; // type:function size:0x2D8 +fn_1_A8E8 = .text:0x0000A928; // type:function size:0x2DC +fn_1_ABC4 = .text:0x0000AC04; // type:function size:0x1E0 +fn_1_ADA4 = .text:0x0000ADE4; // type:function size:0xF0 +fn_1_AE94 = .text:0x0000AED4; // type:function size:0x50 +fn_1_AEE4 = .text:0x0000AF24; // type:function size:0x584 +fn_1_B468 = .text:0x0000B4A8; // type:function size:0x5D8 +fn_1_BA40 = .text:0x0000BA80; // type:function size:0x33C +fn_1_BD7C = .text:0x0000BDBC; // type:function size:0x274 +fn_1_BFF0 = .text:0x0000C030; // type:function size:0x7C +fn_1_C06C = .text:0x0000C0AC; // type:function size:0x44C +fn_1_C4B8 = .text:0x0000C4F8; // type:function size:0x434 +fn_1_C8EC = .text:0x0000C92C; // type:function size:0x204 +fn_1_CAF0 = .text:0x0000CB30; // type:function size:0x790 +fn_1_D280 = .text:0x0000D2C0; // type:function size:0xB0C +fn_1_DD8C = .text:0x0000DDCC; // type:function size:0x720 +fn_1_E4AC = .text:0x0000E4EC; // type:function size:0x9C +fn_1_E548 = .text:0x0000E588; // type:function size:0xCCC +fn_1_F214 = .text:0x0000F254; // type:function size:0x924 +fn_1_FB38 = .text:0x0000FB78; // type:function size:0x258 +fn_1_FD90 = .text:0x0000FDD0; // type:function size:0x958 +fn_1_106E8 = .text:0x00010728; // type:function size:0x7C +fn_1_10764 = .text:0x000107A4; // type:function size:0x164 +fn_1_108C8 = .text:0x00010908; // type:function size:0x1B8 +fn_1_10A80 = .text:0x00010AC0; // type:function size:0xA4 +fn_1_10B24 = .text:0x00010B64; // type:function size:0xF4 +fn_1_10C18 = .text:0x00010C58; // type:function size:0x80 +fn_1_10C98 = .text:0x00010CD8; // type:function size:0x80 +fn_1_10D18 = .text:0x00010D58; // type:function size:0x28 +fn_1_10D40 = .text:0x00010D80; // type:function size:0x20 +fn_1_10D60 = .text:0x00010DA0; // type:function size:0xD8 +fn_1_10E38 = .text:0x00010E78; // type:function size:0xC8 +fn_1_10F00 = .text:0x00010F40; // type:function size:0xBC +fn_1_10FBC = .text:0x00010FFC; // type:function size:0x40 +fn_1_10FFC = .text:0x0001103C; // type:function size:0x24 +fn_1_11020 = .text:0x00011060; // type:function size:0x1C0 +fn_1_111E0 = .text:0x00011220; // type:function size:0x84 +fn_1_11264 = .text:0x000112A4; // type:function size:0xD4 +fn_1_11338 = .text:0x00011378; // type:function size:0x58 +fn_1_11390 = .text:0x000113D0; // type:function size:0x15C +fn_1_114EC = .text:0x0001152C; // type:function size:0x21C +fn_1_11708 = .text:0x00011748; // type:function size:0x204 +fn_1_1190C = .text:0x0001194C; // type:function size:0x54 +fn_1_11960 = .text:0x000119A0; // type:function size:0x304 +fn_1_11C64 = .text:0x00011CA4; // type:function size:0x304 +fn_1_11F68 = .text:0x00011FA8; // type:function size:0x340 +fn_1_122A8 = .text:0x000122E8; // type:function size:0xC4 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x38 scope:local data:4byte +lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 scope:local data:string +lbl_1_data_22 = .data:0x00000022; // type:object size:0xA +lbl_1_data_2C = .data:0x0000002C; // type:object size:0x18 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x6 +lbl_1_data_4A = .data:0x0000004A; // type:object size:0xC +lbl_1_data_56 = .data:0x00000056; // type:object size:0xE data:wstring +lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 +lbl_1_data_84 = .data:0x00000084; // type:object size:0x10 +lbl_1_data_94 = .data:0x00000094; // type:object size:0xC +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA scope:local data:string +lbl_1_data_AA = .data:0x000000AA; // type:object size:0x6 scope:local +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x4C0 +lbl_1_data_3C8 = .data:0x00000570; // type:object size:0x20 +lbl_1_data_3E8 = .data:0x00000590; // type:object size:0x20 +lbl_1_data_5B0 = .data:0x000005B0; // type:object size:0x3C scope:local data:string +lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x19 scope:local data:string +lbl_1_data_605 = .data:0x00000605; // type:object size:0x1A scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x3D scope:local +lbl_1_data_4B4 = .data:0x0000065C; // type:object size:0x20 data:4byte +lbl_1_data_4D4 = .data:0x0000067C; // type:object size:0x40 data:4byte +lbl_1_data_514 = .data:0x000006BC; // type:object size:0x70 +lbl_1_data_584 = .data:0x0000072C; // type:object size:0x90 data:4byte +lbl_1_data_614 = .data:0x000007BC; // type:object size:0x20 +lbl_1_data_634 = .data:0x000007DC; // type:object size:0x8 data:4byte +lbl_1_data_63C = .data:0x000007E4; // type:object size:0x10 +lbl_1_data_64C = .data:0x000007F4; // type:object size:0x20 +lbl_1_data_66C = .data:0x00000814; // type:object size:0x4 data:4byte +lbl_1_data_670 = .data:0x00000818; // type:object size:0x4 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x28 data:2byte +lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x8 data:2byte +lbl_1_bss_3E = .bss:0x0000003E; // type:object size:0x2 data:2byte +lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x2 data:2byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x2 data:2byte +lbl_1_bss_46 = .bss:0x00000046; // type:object size:0x2 data:2byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte +lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x2 data:2byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x2 data:2byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 data:2byte +lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x2 data:2byte +lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x2 data:2byte +lbl_1_bss_5E = .bss:0x0000005E; // type:object size:0x2 data:2byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x8 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x14 data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x180 data:4byte +lbl_1_bss_20C = .bss:0x0000020C; // type:object size:0x60 data:4byte +lbl_1_bss_26C = .bss:0x0000026C; // type:object size:0x6C data:4byte diff --git a/config/GMPP01_00/splits.txt b/config/GMPP01_00/splits.txt new file mode 100644 index 00000000..e1da1fa4 --- /dev/null +++ b/config/GMPP01_00/splits.txt @@ -0,0 +1,654 @@ +Sections: + .init type:code align:4 + extab type:rodata align:32 + extabindex type:rodata align:32 + .text type:code align:8 + .ctors type:rodata align:4 + .dtors type:rodata align:32 + .rodata type:rodata align:32 + .data type:data align:32 + .bss type:bss align:32 + .sdata type:data align:4 + .sbss type:bss align:32 + .sdata2 type:rodata align:32 + .sbss2 type:bss align:32 + +game/main.c: + .text start:0x800057C0 end:0x80005A64 + .data start:0x8011EC00 end:0x8011EC10 + .sdata start:0x801F07C0 end:0x801F07D0 + .sbss start:0x801F0DC0 end:0x801F0E18 + .sdata2 start:0x801F1D20 end:0x801F1D28 + +game/pad.c: + .text start:0x80005A64 end:0x80006480 + .data start:0x8011EC10 end:0x8011EC20 + .bss start:0x8015FBA0 end:0x8015FBE0 + .sbss start:0x801F0E18 end:0x801F0EA0 + +game/dvd.c: + .text start:0x80006480 end:0x80006E40 + .data start:0x8011EC20 end:0x8011ED78 + .sdata start:0x801F07D0 end:0x801F07D8 + .sbss start:0x801F0EA0 end:0x801F0EA8 + +game/data.c: + .text start:0x80006E40 end:0x80009408 + .data start:0x8011ED78 end:0x8011FC00 + .bss start:0x8015FBE0 end:0x801629E0 + .sdata start:0x801F07D8 end:0x801F07E8 + .sbss start:0x801F0EA8 end:0x801F0EB8 + +game/decode.c: + .text start:0x80009408 end:0x80009B04 + .data start:0x8011FC00 end:0x8011FC20 + .bss start:0x801629E0 end:0x80162DE0 + +game/font.c: + .data start:0x8011FC20 end:0x80121C20 + +game/init.c: + .text start:0x80009B04 end:0x8000A46C + .data start:0x80121C20 end:0x80121D70 + .bss start:0x80162DE0 end:0x80162E20 + .sdata start:0x801F07E8 end:0x801F0800 + .sbss start:0x801F0EB8 end:0x801F0EE8 + .sdata2 start:0x801F1D28 end:0x801F1D38 + +game/jmp.c: + .text start:0x8000A46C end:0x8000A560 + +game/malloc.c: + .text start:0x8000A560 end:0x8000A940 + .data start:0x80121D70 end:0x80121DE8 + .bss start:0x80162E20 end:0x80162E38 + +game/memory.c: + .text start:0x8000A940 end:0x8000AEF8 + .data start:0x80121DE8 end:0x80121F60 + +game/printfunc.c: + .text start:0x8000AEF8 end:0x8000C4AC + .data start:0x80121F60 end:0x80121FA0 + .bss start:0x80162E38 end:0x80169738 + .sbss start:0x801F0EE8 end:0x801F0EF8 + .sdata2 start:0x801F1D38 end:0x801F1D88 + +game/process.c: + .text start:0x8000C4AC end:0x8000D350 + .data start:0x80121FA0 end:0x80121FF0 + .bss start:0x80169738 end:0x80169830 + .sbss start:0x801F0EF8 end:0x801F0F08 + +game/sprman.c: + .text start:0x8000D350 end:0x8000F6A8 + .rodata start:0x8011DB20 end:0x8011DB30 + .data start:0x80121FF0 end:0x80122110 + .bss start:0x80169830 end:0x80179A30 + .sdata start:0x801F0800 end:0x801F0810 + .sbss start:0x801F0F08 end:0x801F0F10 + .sdata2 start:0x801F1D88 end:0x801F1DB0 + +game/sprput.c: + .text start:0x8000F6A8 end:0x80010B38 + .rodata start:0x8011DB30 end:0x8011DB40 + .data start:0x80122110 end:0x80122140 + .bss start:0x80179A30 end:0x80179A60 + .sbss start:0x801F0F10 end:0x801F0F18 + .sdata2 start:0x801F1DB0 end:0x801F1DE8 + +game/hsfload.c: + .text start:0x80010B38 end:0x80014020 + .data start:0x80122140 end:0x801221B0 + .bss start:0x80179A60 end:0x8017A020 + .sbss start:0x801F0F18 end:0x801F0F50 + +game/hsfdraw.c: + .text start:0x80014020 end:0x8001F9B4 + .rodata start:0x8011DB40 end:0x8011DB50 + .data start:0x801221B0 end:0x801223C0 + .bss start:0x8017A020 end:0x80184B60 + .sdata start:0x801F0810 end:0x801F0828 + .sbss start:0x801F0F50 end:0x801F0FF0 + .sdata2 start:0x801F1DE8 end:0x801F1E70 + +game/hsfman.c: + .text start:0x8001F9B4 end:0x800250F0 + .data start:0x801223C0 end:0x8012D478 + .bss start:0x80184B60 end:0x801AA770 + .sbss start:0x801F0FF0 end:0x801F1020 + .sdata2 start:0x801F1E70 end:0x801F1ED0 + .sbss2 start:0x801F3FC0 end:0x801F3FC8 + +game/hsfmotion.c: + .text start:0x800250F0 end:0x80028B0C + .data start:0x8012D478 end:0x8012D658 + .bss start:0x801AA770 end:0x801AAF70 + .sbss start:0x801F1020 end:0x801F1028 + .sdata2 start:0x801F1ED0 end:0x801F1F20 + +game/hsfanim.c: + .text start:0x80028B0C end:0x8002CB7C + .data start:0x8012D658 end:0x8012D718 + .bss start:0x801AAF70 end:0x801ACB30 + .sdata2 start:0x801F1F20 end:0x801F1FA8 + +game/hsfex.c: + .text start:0x8002CB7C end:0x8002E754 + .data start:0x8012D718 end:0x8012D738 + .sdata2 start:0x801F1FA8 end:0x801F2038 + +game/perf.c: + .text start:0x8002E754 end:0x8002EBE0 + .bss start:0x801ACB30 end:0x801ACED8 + .sdata start:0x801F0828 end:0x801F0838 + .sbss start:0x801F1028 end:0x801F1080 + +game/objmain.c: + .text start:0x8002EBE0 end:0x8002FF54 + .data start:0x8012D738 end:0x8012DAE8 + .bss start:0x801ACED8 end:0x801ACF98 + .sdata start:0x801F0838 end:0x801F0840 + .sbss start:0x801F1080 end:0x801F10B0 + .sdata2 start:0x801F2038 end:0x801F2060 + +game/fault.c: + .text start:0x8002FF54 end:0x800308C0 + .data start:0x8012DAE8 end:0x8012E310 + .bss start:0x801ACF98 end:0x801ACFB0 + .sdata start:0x801F0840 end:0x801F0850 + .sbss start:0x801F10B0 end:0x801F10C0 + +game/gamework.c: + .text start:0x800308C0 end:0x800315D4 + .rodata start:0x8011DB50 end:0x8011DB70 + .bss start:0x801ACFB0 end:0x801AD3A8 + .sdata start:0x801F0850 end:0x801F0858 + +game/objsysobj.c: + .text start:0x800315D4 end:0x80031DCC + .bss start:0x801AD3A8 end:0x801AD580 + .sbss start:0x801F10C0 end:0x801F10C8 + .sdata2 start:0x801F2060 end:0x801F2070 + +game/objdll.c: + .text start:0x80031DCC end:0x8003260C + .data start:0x8012E310 end:0x8012E7A8 + .bss start:0x801AD580 end:0x801AD5D0 + .sbss start:0x801F10C8 end:0x801F10D0 + +game/frand.c: + .text start:0x8003260C end:0x80032848 + .sbss start:0x801F10D0 end:0x801F10D8 + .sdata2 start:0x801F2070 end:0x801F2080 + +game/audio.c: + .text start:0x80032848 end:0x80033F08 + .data start:0x8012E7A8 end:0x8012EF50 + .bss start:0x801AD5D0 end:0x801AD7F0 + .sdata start:0x801F0858 end:0x801F0860 + .sbss start:0x801F10D8 end:0x801F1108 + .sdata2 start:0x801F2080 end:0x801F2090 + +game/EnvelopeExec.c: + .text start:0x80033F08 end:0x800353C8 + .sbss start:0x801F1108 end:0x801F1138 + .sdata2 start:0x801F2090 end:0x801F20A8 + +game/minigame_seq.c: + .text start:0x800353C8 end:0x8003F6E0 + .data start:0x8012EF50 end:0x8012F5B0 + .bss start:0x801AD7F0 end:0x801ADC00 + .sdata start:0x801F0860 end:0x801F0968 + .sbss start:0x801F1138 end:0x801F1158 + .sdata2 start:0x801F20A8 end:0x801F2268 + +game/ovllist.c: + .data start:0x8012F5B0 end:0x8012FF20 + +game/esprite.c: + .text start:0x8003F6E0 end:0x8003FD90 + .bss start:0x801ADC00 end:0x801AF400 + .sbss start:0x801F1158 end:0x801F1160 + +game/code_8003FF68.c: + .text start:0x8003FD90 end:0x80040328 + .data start:0x8012FF20 end:0x8012FF40 + .bss start:0x801AF400 end:0x801AF700 + .sdata start:0x801F0968 end:0x801F0988 + .sbss start:0x801F1160 end:0x801F1168 + .sdata2 start:0x801F2268 end:0x801F2280 + +game/ClusterExec.c: + .text start:0x80040328 end:0x80040B88 + .sdata2 start:0x801F2280 end:0x801F2290 + +game/ShapeExec.c: + .text start:0x80040B88 end:0x80040F98 + .sdata2 start:0x801F2290 end:0x801F22A0 + +game/wipe.c: + .text start:0x80040F98 end:0x80041ED4 + .data start:0x8012FF40 end:0x8012FF60 + .bss start:0x801AF700 end:0x801AF760 + .sdata start:0x801F0988 end:0x801F0990 + .sbss start:0x801F1168 end:0x801F1170 + .sdata2 start:0x801F22A0 end:0x801F22C8 + +game/window.c: + .text start:0x80041ED4 end:0x80048110 + .data start:0x8012FF60 end:0x80130550 + .bss start:0x801AF760 end:0x801B3B80 + .sdata start:0x801F0990 end:0x801F0998 + .sbss start:0x801F1170 end:0x801F11B0 + .sdata2 start:0x801F22C8 end:0x801F2358 + +game/messdata.c: + .text start:0x80048110 end:0x800481F8 + +game/card.c: + .text start:0x800481F8 end:0x800487FC + .data start:0x80130550 end:0x801305A0 + .sbss start:0x801F11B0 end:0x801F11B8 + +game/armem.c: + .text start:0x800487FC end:0x80049668 + .data start:0x801305A0 end:0x80130690 + .bss start:0x801B3B80 end:0x801B4260 + .sbss start:0x801F11B8 end:0x801F11C8 + +game/chrman.c: + .text start:0x80049668 end:0x800509D4 + .data start:0x80130690 end:0x801310B0 + .bss start:0x801B4260 end:0x801B49F0 + .sdata start:0x801F0998 end:0x801F09E0 + .sbss start:0x801F11C8 end:0x801F11D0 + .sdata2 start:0x801F2358 end:0x801F2490 + +game/mapspace.c: + .text start:0x800509D4 end:0x80054778 + .bss start:0x801B49F0 end:0x801B4E60 + .sbss start:0x801F11D0 end:0x801F11F0 + .sdata2 start:0x801F2490 end:0x801F24C0 + +game/THPSimple.c: + .text start:0x80054778 end:0x8005687C + .data start:0x801310B0 end:0x801311B0 + .bss start:0x801B4E60 end:0x801B5540 + .sdata start:0x801F09E0 end:0x801F09E8 + .sbss start:0x801F11F0 end:0x801F1210 + .sdata2 start:0x801F24C0 end:0x801F24C8 + +game/THPDraw.c: + .text start:0x8005687C end:0x800571D4 + .sdata2 start:0x801F24C8 end:0x801F24E0 + +game/thpmain.c: + .text start:0x800571D4 end:0x80057B9C + .rodata start:0x8011DB70 end:0x8011DB80 + .data start:0x801311B0 end:0x80131218 + .bss start:0x801B5540 end:0x801B5580 + .sbss start:0x801F1210 end:0x801F1238 + .sdata2 start:0x801F24E0 end:0x801F24F8 + +game/objsub.c: + .text start:0x80057B9C end:0x80057D88 + .data start:0x80131218 end:0x80132018 + .bss start:0x801B5580 end:0x801B57B0 + .sbss start:0x801F1238 end:0x801F1260 + +game/flag.c: + .text start:0x80057D88 end:0x80057FA0 + .bss start:0x801B57B0 end:0x801B57C0 + +game/saveload.c: + .text start:0x80057FA0 end:0x8005A40C + .data start:0x80132018 end:0x801320C0 + .bss start:0x801B57C0 end:0x801B97E0 + .sdata start:0x801F09E8 end:0x801F0A00 + .sbss start:0x801F1260 end:0x801F1270 + .sdata2 start:0x801F24F8 end:0x801F2508 + +game/sreset.c: + .text start:0x8005A40C end:0x8005AEF0 + .data start:0x801320C0 end:0x80156B20 + .bss start:0x801B97E0 end:0x801BAB80 + .sdata start:0x801F0A00 end:0x801F0A18 + .sbss start:0x801F1270 end:0x801F1288 + +game/board/main.c: + .text start:0x8005AEF0 end:0x80061D78 + .rodata start:0x8011DB80 end:0x8011DBB0 + .data start:0x80156B20 end:0x80156C20 + .bss start:0x801BAB80 end:0x801BAD08 + .sdata start:0x801F0A18 end:0x801F0A28 + .sbss start:0x801F1288 end:0x801F12D8 + .sdata2 start:0x801F2508 end:0x801F25B8 + +game/board/player.c: + .text start:0x80061D78 end:0x8006D0BC + .rodata start:0x8011DBB0 end:0x8011DC80 + .data start:0x80156C20 end:0x80156E28 + .bss start:0x801BAD08 end:0x801BAD38 + .sdata start:0x801F0A28 end:0x801F0A88 + .sbss start:0x801F12D8 end:0x801F1310 + .sdata2 start:0x801F25B8 end:0x801F26C0 + +game/board/model.c: + .text start:0x8006D0BC end:0x8006FB30 + .sbss start:0x801F1310 end:0x801F1320 + .sdata2 start:0x801F26C0 end:0x801F26D8 + +game/board/window.c: + .text start:0x8006FB30 end:0x80070B30 + .rodata start:0x8011DC80 end:0x8011DCF0 + .data start:0x80156E28 end:0x80156E70 + .bss start:0x801BAD38 end:0x801BAD98 + .sdata start:0x801F0A88 end:0x801F0A90 + .sbss start:0x801F1320 end:0x801F1348 + .sdata2 start:0x801F26D8 end:0x801F26E8 + +game/board/audio.c: + .text start:0x80070B30 end:0x8007103C + .data start:0x80156E70 end:0x80156E88 + .sdata start:0x801F0A90 end:0x801F0A98 + .sbss start:0x801F1348 end:0x801F1350 + +game/board/com.c: + .text start:0x8007103C end:0x80072750 + .data start:0x80156E88 end:0x80156F50 + .sdata start:0x801F0A98 end:0x801F0AA0 + .sdata2 start:0x801F26E8 end:0x801F2710 + +game/board/view.c: + .text start:0x80072750 end:0x80073DD0 + .rodata start:0x8011DCF0 end:0x8011DD10 + .data start:0x80156F50 end:0x80157050 + .bss start:0x801BAD98 end:0x801BADB0 + .sdata start:0x801F0AA0 end:0x801F0AA8 + .sbss start:0x801F1350 end:0x801F1368 + .sdata2 start:0x801F2710 end:0x801F2780 + +game/board/space.c: + .text start:0x80073DD0 end:0x80077888 + .data start:0x80157050 end:0x80157090 + .bss start:0x801BADB0 end:0x801C1E00 + .sdata start:0x801F0AA8 end:0x801F0AB0 + .sbss start:0x801F1368 end:0x801F13A0 + .sdata2 start:0x801F2780 end:0x801F2800 + +game/board/shop.c: + .text start:0x80077888 end:0x8007A6B4 + .data start:0x80157090 end:0x80157210 + .bss start:0x801C1E00 end:0x801C1E30 + .sdata start:0x801F0AB0 end:0x801F0AD0 + .sbss start:0x801F13A0 end:0x801F13C0 + .sdata2 start:0x801F2800 end:0x801F28D8 + +game/board/lottery.c: + .text start:0x8007A6B4 end:0x8007F9C8 + .rodata start:0x8011DD10 end:0x8011DE40 + .data start:0x80157210 end:0x80157578 + .bss start:0x801C1E30 end:0x801C1E60 + .sdata start:0x801F0AD0 end:0x801F0AF0 + .sbss start:0x801F13C0 end:0x801F13E0 + .sdata2 start:0x801F28D8 end:0x801F2A68 + +game/board/basic_space.c: + .text start:0x8007F9C8 end:0x80080BCC + .data start:0x80157578 end:0x801575B0 + .sdata2 start:0x801F2A68 end:0x801F2AF8 + +game/board/warp.c: + .text start:0x80080BCC end:0x80081544 + .rodata start:0x8011DE40 end:0x8011DE60 + .data start:0x801575B0 end:0x801575D0 + .bss start:0x801C1E60 end:0x801C1E70 + .sdata start:0x801F0AF0 end:0x801F0B00 + .sbss start:0x801F13E0 end:0x801F13F8 + .sdata2 start:0x801F2AF8 end:0x801F2B48 + +game/board/char_wheel.c: + .text start:0x80081544 end:0x80082B3C + .data start:0x801575D0 end:0x80157638 + .sdata start:0x801F0B00 end:0x801F0B08 + .sbss start:0x801F13F8 end:0x801F1418 + .sdata2 start:0x801F2B48 end:0x801F2BD8 + +game/board/mushroom.c: + .text start:0x80082B3C end:0x80083D88 + .sdata start:0x801F0B08 end:0x801F0B18 + .sbss start:0x801F1418 end:0x801F1428 + .sdata2 start:0x801F2BD8 end:0x801F2C60 + +game/board/star.c: + .text start:0x80083D88 end:0x80085B74 + .rodata start:0x8011DE60 end:0x8011DED0 + .data start:0x80157638 end:0x801576F0 + .bss start:0x801C1E70 end:0x801C1E80 + .sdata start:0x801F0B18 end:0x801F0B20 + .sbss start:0x801F1428 end:0x801F1440 + .sdata2 start:0x801F2C60 end:0x801F2D00 + +game/board/roll.c: + .text start:0x80085B74 end:0x800882B4 + .rodata start:0x8011DED0 end:0x8011DF38 + .data start:0x801576F0 end:0x80157790 + .bss start:0x801C1E80 end:0x801C1E90 + .sdata start:0x801F0B20 end:0x801F0B38 + .sbss start:0x801F1440 end:0x801F1460 + .sdata2 start:0x801F2D00 end:0x801F2DB0 + +game/board/ui.c: + .text start:0x800882B4 end:0x8008DE88 + .rodata start:0x8011DF38 end:0x8011E020 + .data start:0x80157790 end:0x80157990 + .bss start:0x801C1E90 end:0x801C1F20 + .sdata start:0x801F0B38 end:0x801F0B40 + .sbss start:0x801F1460 end:0x801F1498 + .sdata2 start:0x801F2DB0 end:0x801F2E70 + +game/board/block.c: + .text start:0x8008DE88 end:0x8008ED48 + .rodata start:0x8011E020 end:0x8011E040 + .data start:0x80157990 end:0x801579A8 + .bss start:0x801C1F20 end:0x801C1F48 + .sdata start:0x801F0B40 end:0x801F0B48 + .sbss start:0x801F1498 end:0x801F14B0 + .sdata2 start:0x801F2E70 end:0x801F2EC8 + +game/board/item.c: + .text start:0x8008ED48 end:0x800974CC + .rodata start:0x8011E040 end:0x8011E058 + .data start:0x801579A8 end:0x80157D98 + .bss start:0x801C1F48 end:0x801C1F88 + .sdata start:0x801F0B48 end:0x801F0B58 + .sbss start:0x801F14B0 end:0x801F14F0 + .sdata2 start:0x801F2EC8 end:0x801F3100 + +game/board/bowser.c: + .text start:0x800974CC end:0x8009B3F4 + .rodata start:0x8011E058 end:0x8011E120 + .data start:0x80157D98 end:0x80157DE8 + .bss start:0x801C1F88 end:0x801C1FD0 + .sdata start:0x801F0B58 end:0x801F0B70 + .sbss start:0x801F14F0 end:0x801F1530 + .sdata2 start:0x801F3100 end:0x801F31B0 + +game/board/battle.c: + .text start:0x8009B3F4 end:0x8009D068 + .rodata start:0x8011E120 end:0x8011E1A0 + .data start:0x80157DE8 end:0x80157E98 + .bss start:0x801C1FD0 end:0x801C1FE0 + .sdata start:0x801F0B70 end:0x801F0B78 + .sbss start:0x801F1530 end:0x801F1558 + .sdata2 start:0x801F31B0 end:0x801F3258 + +game/board/fortune.c: + .text start:0x8009D068 end:0x8009DEF0 + .rodata start:0x8011E1A0 end:0x8011E1C8 + .data start:0x80157E98 end:0x80157EB0 + .bss start:0x801C1FE0 end:0x801C1FF8 + .sdata start:0x801F0B78 end:0x801F0B80 + .sbss start:0x801F1558 end:0x801F1568 + .sdata2 start:0x801F3258 end:0x801F3268 + +game/board/boo.c: + .text start:0x8009DEF0 end:0x800A1954 + .data start:0x80157EB0 end:0x80158088 + .sdata start:0x801F0B80 end:0x801F0B90 + .sbss start:0x801F1568 end:0x801F15A0 + .sdata2 start:0x801F3268 end:0x801F3378 + +game/board/mg_setup.c: + .text start:0x800A1954 end:0x800A4E8C + .rodata start:0x8011E1C8 end:0x8011E1F0 + .data start:0x80158088 end:0x801581C0 + .bss start:0x801C1FF8 end:0x801C2068 + .sdata start:0x801F0B90 end:0x801F0B98 + .sbss start:0x801F15A0 end:0x801F15D0 + .sdata2 start:0x801F3378 end:0x801F3450 + +game/board/boo_house.c: + .text start:0x800A4E8C end:0x800A6E04 + .data start:0x801581C0 end:0x801582F8 + .bss start:0x801C2068 end:0x801C2078 + .sdata start:0x801F0B98 end:0x801F0BE8 + .sbss start:0x801F15D0 end:0x801F15E8 + .sdata2 start:0x801F3450 end:0x801F3498 + +game/board/start.c: + .text start:0x800A6E04 end:0x800A9628 + .rodata start:0x8011E1F0 end:0x8011E210 + .data start:0x801582F8 end:0x80158460 + .bss start:0x801C2078 end:0x801C2090 + .sdata start:0x801F0BE8 end:0x801F0BF8 + .sbss start:0x801F15E8 end:0x801F15F8 + .sdata2 start:0x801F3498 end:0x801F3568 + +game/board/last5.c: + .text start:0x800A9628 end:0x800ADAA4 + .rodata start:0x8011E210 end:0x8011E250 + .data start:0x80158460 end:0x80158778 + .bss start:0x801C2090 end:0x801C20D8 + .sdata start:0x801F0BF8 end:0x801F0C50 + .sbss start:0x801F15F8 end:0x801F1618 + .sdata2 start:0x801F3568 end:0x801F3668 + +game/board/pause.c: + .text start:0x800ADAA4 end:0x800B1894 + .data start:0x80158778 end:0x801588A0 + .bss start:0x801C20D8 end:0x801C2108 + .sdata start:0x801F0C50 end:0x801F0C60 + .sbss start:0x801F1618 end:0x801F1638 + .sdata2 start:0x801F3668 end:0x801F3720 + +game/board/com_path.c: + .text start:0x800B1894 end:0x800B3DF8 + .bss start:0x801C2108 end:0x801C2688 + .sbss start:0x801F1638 end:0x801F1640 + +game/board/tutorial.c: + .text start:0x800B3DF8 end:0x800B4214 + .data start:0x801588A0 end:0x801588E8 + .bss start:0x801C2688 end:0x801C26A0 + .sbss start:0x801F1640 end:0x801F1668 + +dolphin/os/__start.c: + .init start:0x80003100 end:0x80003354 + +dolphin/PPCArch.c: + .text start:0x800B4214 end:0x800B42BC + +dolphin/os/OS.c: + .text start:0x800B42BC end:0x800B4C18 + .data start:0x801588E8 end:0x80158AA8 + .bss start:0x801C26A0 end:0x801C26F0 + .sbss start:0x801F1668 end:0x801F1698 + +musyx/runtime/seq.c: + .text start:0x800F26B0 end:0x800F6620 + +musyx/runtime/synth.c: + .text start:0x800F6620 end:0x800F997C + +musyx/runtime/seq_api.c: + .text start:0x800F997C end:0x800F9BFC + +musyx/runtime/snd_synthapi.c: + .text start:0x800F9BFC end:0x800FA37C + +musyx/runtime/stream.c: + .text start:0x800FA37C end:0x800FDEE8 + +musyx/runtime/synthdata.c: + .text start:0x800FDEE8 end:0x800FFC78 + +musyx/runtime/synthmacros.c: + .text start:0x800FFC78 end:0x801049D0 + +musyx/runtime/synthvoice.c: + .text start:0x801049D0 end:0x80106460 + +musyx/runtime/synth_ac.c: + .text start:0x80106460 end:0x80106580 + +musyx/runtime/synth_adsr.c: + .text start:0x80106580 end:0x80106D40 + +musyx/runtime/synth_vsamples.c: + .text start:0x80106D40 end:0x801074C8 + +musyx/runtime/s_data.c: + .text start:0x801074C8 end:0x80108020 + +musyx/runtime/hw_dspctrl.c: + .text start:0x80108020 end:0x8010B434 + +musyx/runtime/hw_volconv.c: + .text start:0x8010B434 end:0x8010BB24 + +musyx/runtime/snd3d.c: + .text start:0x8010BB24 end:0x8010DEF4 + +musyx/runtime/snd_init.c: + .text start:0x8010DEF4 end:0x8010E048 + +musyx/runtime/snd_math.c: + .text start:0x8010E048 end:0x8010E408 + +musyx/runtime/snd_midictrl.c: + .text start:0x8010E408 end:0x801100DC + +musyx/runtime/snd_service.c: + .text start:0x801100DC end:0x80110288 + +musyx/runtime/hardware.c: + .text start:0x80110288 end:0x8011128C + +musyx/runtime/hw_aramdma.c: + .text start:0x8011128C end:0x80111F00 + +musyx/runtime/hw_dolphin.c: + .text start:0x80111F00 end:0x801123F8 + +musyx/runtime/hw_memory.c: + .text start:0x801123F8 end:0x8011244C + +musyx/runtime/CheapReverb/creverb_fx.c: + .text start:0x8011244C end:0x80112508 + +musyx/runtime/CheapReverb/creverb.c: + .text start:0x80112508 end:0x80112DC4 + +musyx/runtime/StdReverb/reverb_fx.c: + .text start:0x80112DC4 end:0x80112E84 + +musyx/runtime/StdReverb/reverb.c: + .text start:0x80112E84 end:0x80113BC8 + +musyx/runtime/Delay/delay_fx.c: + .text start:0x80113BC8 end:0x80113F74 + +musyx/runtime/Chorus/chorus_fx.c: + .text start:0x80113F74 end:0x801147DC diff --git a/config/GMPP01_00/symbols.txt b/config/GMPP01_00/symbols.txt new file mode 100644 index 00000000..acf35410 --- /dev/null +++ b/config/GMPP01_00/symbols.txt @@ -0,0 +1,8670 @@ +__check_pad3 = .init:0x80003100; // type:function size:0x40 scope:local +__start = .init:0x80003140; // type:function size:0x138 scope:weak +__init_registers = .init:0x80003278; // type:function size:0x1C scope:local +__init_data = .init:0x80003294; // type:function size:0xC0 scope:local +__init_hardware = .init:0x80003354; // type:function size:0x20 scope:global +__flush_cache = .init:0x80003374; // type:function size:0x34 scope:global +memset = .init:0x800033A8; // type:function size:0x30 scope:global +__fill_mem = .init:0x800033D8; // type:function size:0xB8 scope:global +memcpy = .init:0x80003490; // type:function size:0x50 scope:global +TRK_memset = .init:0x800034E0; // type:function size:0x30 +TRK_memcpy = .init:0x80003510; // type:function size:0x24 +gTRKInterruptVectorTable = .init:0x80003534; // type:label scope:global +lbl_8000387C = .init:0x8000387C; // type:label +lbl_800038E0 = .init:0x800038E0; // type:label +__TRK_reset = .init:0x80005468; // type:function size:0x104 +gTRKInterruptVectorTableEnd = .init:0x80005468; // type:label scope:global +_rom_copy_info = .init:0x8000556C; // type:object size:0x84 scope:global data:4byte +_bss_init_info = .init:0x800055F0; // type:object size:0x20 scope:global data:4byte +@etb_80005620 = extab:0x80005620; // type:object size:0x28 scope:local hidden +@etb_80005648 = extab:0x80005648; // type:object size:0x8 scope:local hidden +@etb_80005650 = extab:0x80005650; // type:object size:0x8 scope:local hidden +@etb_80005658 = extab:0x80005658; // type:object size:0x8 scope:local hidden +@etb_80005660 = extab:0x80005660; // type:object size:0x8 scope:local hidden +@etb_80005668 = extab:0x80005668; // type:object size:0x8 scope:local hidden +@etb_80005670 = extab:0x80005670; // type:object size:0x8 scope:local hidden +@etb_80005678 = extab:0x80005678; // type:object size:0x14 scope:local hidden +@etb_8000568C = extab:0x8000568C; // type:object size:0x2C scope:local hidden +@etb_800056B8 = extab:0x800056B8; // type:object size:0x8 scope:local hidden +@etb_800056C0 = extab:0x800056C0; // type:object size:0x14 scope:local hidden +@etb_800056D4 = extab:0x800056D4; // type:object size:0x8 scope:local hidden +@etb_800056DC = extab:0x800056DC; // type:object size:0x8 scope:local hidden +@eti_80005700 = extabindex:0x80005700; // type:object size:0xC scope:local hidden +@eti_8000570C = extabindex:0x8000570C; // type:object size:0xC scope:local hidden +@eti_80005718 = extabindex:0x80005718; // type:object size:0xC scope:local hidden +@eti_80005724 = extabindex:0x80005724; // type:object size:0xC scope:local hidden +@eti_80005730 = extabindex:0x80005730; // type:object size:0xC scope:local hidden +@eti_8000573C = extabindex:0x8000573C; // type:object size:0xC scope:local hidden +@eti_80005748 = extabindex:0x80005748; // type:object size:0xC scope:local hidden +@eti_80005754 = extabindex:0x80005754; // type:object size:0xC scope:local hidden +@eti_80005760 = extabindex:0x80005760; // type:object size:0xC scope:local hidden +@eti_8000576C = extabindex:0x8000576C; // type:object size:0xC scope:local hidden +@eti_80005778 = extabindex:0x80005778; // type:object size:0xC scope:local hidden +@eti_80005784 = extabindex:0x80005784; // type:object size:0xC scope:local hidden +@eti_80005790 = extabindex:0x80005790; // type:object size:0xC scope:local hidden +_eti_init_info = extabindex:0x8000579C; // type:object size:0x20 scope:global +main = .text:0x800057C0; // type:function size:0x234 scope:global +HuSysVWaitSet = .text:0x800059F4; // type:function size:0x38 +HuSysVWaitGet = .text:0x80005A2C; // type:function size:0xC +rand8 = .text:0x80005A38; // type:function size:0x2C +HuPadInit = .text:0x80005A64; // type:function size:0xF0 +HuPadRead = .text:0x80005B54; // type:function size:0x168 +PadReadVSync = .text:0x80005CBC; // type:function size:0x440 scope:local +PadADConv = .text:0x800060FC; // type:function size:0x234 scope:local +HuPadRumbleSet = .text:0x80006330; // type:function size:0x54 +HuPadRumbleStop = .text:0x80006384; // type:function size:0x70 +HuPadRumbleAllStop = .text:0x800063F4; // type:function size:0x70 +HuPadStatGet = .text:0x80006464; // type:function size:0x14 +HuPadRumbleGet = .text:0x80006478; // type:function size:0x8 +HuDVDReadAsyncCallBack = .text:0x80006480; // type:function size:0xC scope:local +HuDvdDataRead = .text:0x8000648C; // type:function size:0x16C +HuDvdDataReadMulti = .text:0x800065F8; // type:function size:0x1B4 +HuDvdDataReadDirect = .text:0x800067AC; // type:function size:0x170 +HuDvdDataFastRead = .text:0x8000691C; // type:function size:0x16C +HuDvdDataFastReadNum = .text:0x80006A88; // type:function size:0x174 +HuDvdDataFastReadAsync = .text:0x80006BFC; // type:function size:0x150 +HuDvdDataClose = .text:0x80006D4C; // type:function size:0x38 +HuDvdErrorWatch = .text:0x80006D84; // type:function size:0xBC +HuDataInit = .text:0x80006E40; // type:function size:0xD0 +HuDataReadChk = .text:0x80006F10; // type:function size:0x74 +HuDataGetStatus = .text:0x80006F84; // type:function size:0x64 +HuDataGetDirPtr = .text:0x80006FE8; // type:function size:0xB8 +HuDataDirRead = .text:0x800070A0; // type:function size:0x224 +HuDataDirSet = .text:0x800072C4; // type:function size:0x188 +HuDataDirReadAsyncCallBack = .text:0x8000744C; // type:function size:0xC8 +HuDataDirReadAsync = .text:0x80007514; // type:function size:0x1A8 +HuDataDirReadNumAsync = .text:0x800076BC; // type:function size:0x1A8 +HuDataGetAsyncStat = .text:0x80007864; // type:function size:0x60 +HuDataRead = .text:0x800078C4; // type:function size:0x344 +HuDataReadNum = .text:0x80007C08; // type:function size:0x3A0 +HuDataSelHeapRead = .text:0x80007FA8; // type:function size:0x3C4 +HuDataSelHeapReadNum = .text:0x8000836C; // type:function size:0x428 +HuDataReadMulti = .text:0x80008794; // type:function size:0x30 +HuDataReadMultiSub = .text:0x800087C4; // type:function size:0x3FC +HuDataGetSize = .text:0x80008BC0; // type:function size:0x104 +HuDataClose = .text:0x80008CC4; // type:function size:0x38 +HuDataCloseMulti = .text:0x80008CFC; // type:function size:0x7C +HuDataDirClose = .text:0x80008D78; // type:function size:0xD4 +HuDataDirCloseNum = .text:0x80008E4C; // type:function size:0x130 +HuDataReadNumHeapShortForce = .text:0x80008F7C; // type:function size:0x48C +HuDecodeSlide = .text:0x80009408; // type:function size:0x200 +HuDecodeFslide = .text:0x80009608; // type:function size:0x1D8 +HuDecodeData = .text:0x800097E0; // type:function size:0x324 +HuSysInit = .text:0x80009B04; // type:function size:0x10C +InitRenderMode = .text:0x80009C10; // type:function size:0xD0 scope:local +InitGX = .text:0x80009CE0; // type:function size:0x148 scope:local +InitMem = .text:0x80009E28; // type:function size:0x184 scope:local +InitVI = .text:0x80009FAC; // type:function size:0x54 scope:local +HuSysBeforeRender = .text:0x8000A000; // type:function size:0xE4 +HuSysDoneRender = .text:0x8000A0E4; // type:function size:0xC8 +SwapBuffers = .text:0x8000A1AC; // type:function size:0x6C scope:local +LoadMemInfo = .text:0x8000A218; // type:function size:0x254 scope:local +gcsetjmp = .text:0x8000A46C; // type:function size:0x74 +gclongjmp = .text:0x8000A4E0; // type:function size:0x80 +HuMemInitAll = .text:0x8000A560; // type:function size:0x12C +HuMemInit = .text:0x8000A68C; // type:function size:0x30 +HuMemDCFlushAll = .text:0x8000A6BC; // type:function size:0x2C +HuMemDCFlush = .text:0x8000A6E8; // type:function size:0x54 +HuMemDirectMalloc = .text:0x8000A73C; // type:function size:0x64 +HuMemDirectMallocNum = .text:0x8000A7A0; // type:function size:0x6C +HuMemDirectFree = .text:0x8000A80C; // type:function size:0x38 +HuMemDirectFreeNum = .text:0x8000A844; // type:function size:0x54 +HuMemUsedMallocSizeGet = .text:0x8000A898; // type:function size:0x3C +HuMemUsedMallocBlockGet = .text:0x8000A8D4; // type:function size:0x3C +HuMemHeapSizeGet = .text:0x8000A910; // type:function size:0x18 +HuMemHeapPtrGet = .text:0x8000A928; // type:function size:0x18 +HuMemHeapInit = .text:0x8000A940; // type:function size:0x4C +HuMemMemoryAllocNum = .text:0x8000A98C; // type:function size:0x40 +HuMemMemoryAlloc = .text:0x8000A9CC; // type:function size:0x3C +HuMemMemoryAlloc2 = .text:0x8000AA08; // type:function size:0x108 scope:local +HuMemMemoryFreeNum = .text:0x8000AB10; // type:function size:0x7C +HuMemMemoryFree = .text:0x8000AB8C; // type:function size:0x12C +HuMemUsedMemorySizeGet = .text:0x8000ACB8; // type:function size:0x48 +HuMemUsedMemoryBlockGet = .text:0x8000AD00; // type:function size:0x44 +HuMemMemoryAllocSizeGet = .text:0x8000AD44; // type:function size:0xC +HuMemHeapDump = .text:0x8000AD50; // type:function size:0x158 +HuMemMemorySizeGet = .text:0x8000AEA8; // type:function size:0x50 +pfInit = .text:0x8000AEF8; // type:function size:0x64 +pfClsScr = .text:0x8000AF5C; // type:function size:0xA0 +print8 = .text:0x8000AFFC; // type:function size:0x15C +printWin = .text:0x8000B158; // type:function size:0xAC +pfDrawFonts = .text:0x8000B204; // type:function size:0xEE8 +WireDraw = .text:0x8000C0EC; // type:function size:0x3C0 scope:local +HuPrcInit = .text:0x8000C4AC; // type:function size:0x14 +HuPrcCreate = .text:0x8000C4C0; // type:function size:0x1E8 +HuPrcChildLink = .text:0x8000C6A8; // type:function size:0x68 +HuPrcChildUnlink = .text:0x8000C710; // type:function size:0x58 +HuPrcChildCreate = .text:0x8000C768; // type:function size:0x27C +HuPrcChildWatch = .text:0x8000C9E4; // type:function size:0x60 +HuPrcCurrentGet = .text:0x8000CA44; // type:function size:0x8 +SetKillStatusProcess = .text:0x8000CA4C; // type:function size:0x50 scope:local +HuPrcKill = .text:0x8000CA9C; // type:function size:0xD4 +HuPrcChildKill = .text:0x8000CB70; // type:function size:0x2A4 +HuPrcEnd = .text:0x8000CE14; // type:function size:0x100 +HuPrcSleep = .text:0x8000CF14; // type:function size:0x80 +HuPrcVSleep = .text:0x8000CF94; // type:function size:0x54 +HuPrcWakeup = .text:0x8000CFE8; // type:function size:0xC +HuPrcDestructorSet2 = .text:0x8000CFF4; // type:function size:0x8 +HuPrcDestructorSet = .text:0x8000CFFC; // type:function size:0x28 +HuPrcCall = .text:0x8000D024; // type:function size:0x184 +HuPrcMemAlloc = .text:0x8000D1A8; // type:function size:0x4C +HuPrcMemFree = .text:0x8000D1F4; // type:function size:0x30 +HuPrcSetStat = .text:0x8000D224; // type:function size:0x10 +HuPrcResetStat = .text:0x8000D234; // type:function size:0x14 +HuPrcAllPause = .text:0x8000D248; // type:function size:0x84 +HuPrcAllUPause = .text:0x8000D2CC; // type:function size:0x84 +HuSprInit = .text:0x8000D350; // type:function size:0xA0 +HuSprClose = .text:0x8000D3F0; // type:function size:0xB0 +HuSprExec = .text:0x8000D4A0; // type:function size:0x64 +HuSprBegin = .text:0x8000D504; // type:function size:0x188 +HuSprOrderEntry = .text:0x8000D68C; // type:function size:0x14C +HuSprCall = .text:0x8000D7D8; // type:function size:0xF4 +HuSprFinish = .text:0x8000D8CC; // type:function size:0x458 +HuSprPauseSet = .text:0x8000DD24; // type:function size:0x8 +HuSprAnimRead = .text:0x8000DD2C; // type:function size:0x114 +HuSprAnimLock = .text:0x8000DE40; // type:function size:0x10 +HuSprCreate = .text:0x8000DE50; // type:function size:0x128 +HuSprFuncCreate = .text:0x8000DF78; // type:function size:0x188 +HuSprGrpCreate = .text:0x8000E100; // type:function size:0xF4 +HuSprGrpCopy = .text:0x8000E1F4; // type:function size:0x334 +HuSprGrpMemberSet = .text:0x8000E528; // type:function size:0x8C +HuSprGrpMemberKill = .text:0x8000E5B4; // type:function size:0xAC +HuSprGrpKill = .text:0x8000E660; // type:function size:0x9C +HuSprKill = .text:0x8000E6FC; // type:function size:0x84 +HuSprAnimKill = .text:0x8000E780; // type:function size:0x90 +HuSprAttrSet = .text:0x8000E810; // type:function size:0xAC +HuSprAttrReset = .text:0x8000E8BC; // type:function size:0xAC +HuSprPosSet = .text:0x8000E968; // type:function size:0x60 +HuSprZRotSet = .text:0x8000E9C8; // type:function size:0x5C +HuSprScaleSet = .text:0x8000EA24; // type:function size:0x60 +HuSprTPLvlSet = .text:0x8000EA84; // type:function size:0x64 +HuSprColorSet = .text:0x8000EAE8; // type:function size:0x64 +HuSprSpeedSet = .text:0x8000EB4C; // type:function size:0x4C +HuSprBankSet = .text:0x8000EB98; // type:function size:0xF0 +HuSprGrpPosSet = .text:0x8000EC88; // type:function size:0x9C +HuSprGrpCenterSet = .text:0x8000ED24; // type:function size:0x9C +HuSprGrpZRotSet = .text:0x8000EDC0; // type:function size:0x98 +HuSprGrpScaleSet = .text:0x8000EE58; // type:function size:0x9C +HuSprGrpTPLvlSet = .text:0x8000EEF4; // type:function size:0xC0 +HuSprGrpDrawNoSet = .text:0x8000EFB4; // type:function size:0x8C +HuSprDrawNoSet = .text:0x8000F040; // type:function size:0x50 +HuSprPriSet = .text:0x8000F090; // type:function size:0x4C +HuSprGrpScissorSet = .text:0x8000F0DC; // type:function size:0xAC +HuSprScissorSet = .text:0x8000F188; // type:function size:0x58 +HuSprAnimMake = .text:0x8000F1E0; // type:function size:0x1FC +HuSprBGSet = .text:0x8000F3DC; // type:function size:0x68 +HuSprSprBGSet = .text:0x8000F444; // type:function size:0x50 +AnimDebug = .text:0x8000F494; // type:function size:0x214 +HuSprDispInit = .text:0x8000F6A8; // type:function size:0x158 +HuSprDisp = .text:0x8000F800; // type:function size:0xECC +HuSprTexLoad = .text:0x800106CC; // type:function size:0x29C +HuSprExecLayerSet = .text:0x80010968; // type:function size:0x58 +HuSprLayerHook = .text:0x800109C0; // type:function size:0x178 scope:local +LoadHSF = .text:0x80010B38; // type:function size:0xB0 +ClusterAdjustObject = .text:0x80010BE8; // type:function size:0xA0 +FileLoad = .text:0x80010C88; // type:function size:0xC8 scope:local +SetHsfModel = .text:0x80010D50; // type:function size:0x284 scope:local +SetName = .text:0x80010FD4; // type:function size:0x38 +MaterialLoad = .text:0x8001100C; // type:function size:0x210 scope:local +AttributeLoad = .text:0x8001121C; // type:function size:0xF8 scope:local +SceneLoad = .text:0x80011314; // type:function size:0x80 scope:local +ColorLoad = .text:0x80011394; // type:function size:0x130 scope:local +VertexLoad = .text:0x800114C4; // type:function size:0x1C0 scope:local +NormalLoad = .text:0x80011684; // type:function size:0x128 scope:local +STLoad = .text:0x800117AC; // type:function size:0x1A8 scope:local +FaceLoad = .text:0x80011954; // type:function size:0x190 scope:local +DispObject = .text:0x80011AE4; // type:function size:0x7A8 scope:local +ObjectLoad = .text:0x8001228C; // type:function size:0x15C scope:local +CenvLoad = .text:0x800123E8; // type:function size:0x464 scope:local +SkeletonLoad = .text:0x8001284C; // type:function size:0x198 scope:local +PartLoad = .text:0x800129E4; // type:function size:0x12C scope:local +ClusterLoad = .text:0x80012B10; // type:function size:0x1E8 scope:local +ShapeLoad = .text:0x80012CF8; // type:function size:0x168 scope:local +MapAttrLoad = .text:0x80012E60; // type:function size:0xD0 scope:local +BitmapLoad = .text:0x80012F30; // type:function size:0x174 scope:local +PaletteLoad = .text:0x800130A4; // type:function size:0x16C scope:local +MakeObjectName = .text:0x80013210; // type:function size:0xE8 +CmpObjectName = .text:0x800132F8; // type:function size:0x38 +MotionLoad = .text:0x80013330; // type:function size:0x938 scope:local +MatrixLoad = .text:0x80013C68; // type:function size:0x80 scope:local +SearchObjectSetName = .text:0x80013CE8; // type:function size:0x94 scope:local +SearchVertexPtr = .text:0x80013D7C; // type:function size:0x44 scope:local +SearchNormalPtr = .text:0x80013DC0; // type:function size:0x44 scope:local +SearchStPtr = .text:0x80013E04; // type:function size:0x44 scope:local +SearchColorPtr = .text:0x80013E48; // type:function size:0x44 scope:local +SearchFacePtr = .text:0x80013E8C; // type:function size:0x44 scope:local +SearchCenvPtr = .text:0x80013ED0; // type:function size:0x44 scope:local +SearchPartPtr = .text:0x80013F14; // type:function size:0x44 scope:local +SearchPalettePtr = .text:0x80013F58; // type:function size:0x3C scope:local +SearchBitmapPtr = .text:0x80013F94; // type:function size:0x44 scope:local +GetString = .text:0x80013FD8; // type:function size:0x24 scope:local +GetMotionString = .text:0x80013FFC; // type:function size:0x24 scope:local +Hu3DDrawPreInit = .text:0x80014020; // type:function size:0xC +Hu3DDraw = .text:0x8001402C; // type:function size:0x1A0 +objCall = .text:0x800141CC; // type:function size:0xEC scope:local +objMesh = .text:0x800142B8; // type:function size:0x86C scope:local +ObjCullCheck = .text:0x80014B24; // type:function size:0x4C0 +FaceDraw = .text:0x80014FE4; // type:function size:0x10DC scope:local +SetTevStageNoTex = .text:0x800160C0; // type:function size:0x8E8 scope:local +SetTevStageTex = .text:0x800169A8; // type:function size:0x2588 scope:local +SetKColor = .text:0x80018F30; // type:function size:0x164 scope:local +SetKColorRGB = .text:0x80019094; // type:function size:0x180 scope:local +FlushKColor = .text:0x80019214; // type:function size:0xB0 scope:local +SetReflect = .text:0x800192C4; // type:function size:0x280 scope:local +SetProjection = .text:0x80019544; // type:function size:0x29C scope:local +SetShadowTex = .text:0x800197E0; // type:function size:0x8C scope:local +SetShadow = .text:0x8001986C; // type:function size:0xCC scope:local +FaceDrawShadow = .text:0x80019938; // type:function size:0x5E4 scope:local +LoadTexture = .text:0x80019F1C; // type:function size:0x75C scope:local +objNull = .text:0x8001A678; // type:function size:0x248 scope:local +objRoot = .text:0x8001A8C0; // type:function size:0x198 scope:local +objJoint = .text:0x8001AA58; // type:function size:0x248 scope:local +objMap = .text:0x8001ACA0; // type:function size:0x17C scope:local +objReplica = .text:0x8001AE1C; // type:function size:0x1B4 scope:local +Hu3DDrawPost = .text:0x8001AFD0; // type:function size:0xB00 +ObjDraw = .text:0x8001BAD0; // type:function size:0x6D0 scope:local +MakeDisplayList = .text:0x8001C1A0; // type:function size:0xBC +MDObjCall = .text:0x8001C25C; // type:function size:0x438 scope:local +MDObjMesh = .text:0x8001C694; // type:function size:0x2A8 scope:local +ObjConstantMake = .text:0x8001C93C; // type:function size:0x68 +MDFaceDraw = .text:0x8001C9A4; // type:function size:0xD08 scope:local +MakeCalcNBT = .text:0x8001D6AC; // type:function size:0x3A8 scope:local +MakeNBT = .text:0x8001DA54; // type:function size:0x2C4 scope:local +MDFaceCnt = .text:0x8001DD18; // type:function size:0x2C8 scope:local +mtxTransCat = .text:0x8001DFE0; // type:function size:0x4C +mtxRotCat = .text:0x8001E02C; // type:function size:0xF4 +mtxRot = .text:0x8001E120; // type:function size:0xF0 +mtxScaleCat = .text:0x8001E210; // type:function size:0x70 +HmfInverseMtxF3X3 = .text:0x8001E280; // type:function size:0x1E0 +SetDefLight = .text:0x8001E460; // type:function size:0x190 +Hu3DModelObjPosGet = .text:0x8001E5F0; // type:function size:0x90 +Hu3DModelObjMtxGet = .text:0x8001E680; // type:function size:0x318 +PGObjCall = .text:0x8001E998; // type:function size:0x80 +PGObjCalc = .text:0x8001EA18; // type:function size:0x7B0 +PGObjReplica = .text:0x8001F1C8; // type:function size:0x574 +Hu3DObjDuplicate = .text:0x8001F73C; // type:function size:0x158 +Hu3DModelObjDrawInit = .text:0x8001F894; // type:function size:0x90 +Hu3DModelObjDraw = .text:0x8001F924; // type:function size:0x90 +Hu3DInit = .text:0x8001F9B4; // type:function size:0x220 +Hu3DPreProc = .text:0x8001FBD4; // type:function size:0xD8 +Hu3DExec = .text:0x8001FCAC; // type:function size:0x688 +Hu3DAllKill = .text:0x80020334; // type:function size:0x158 +Hu3DBGColorSet = .text:0x8002048C; // type:function size:0x18 +Hu3DLayerHookSet = .text:0x800204A4; // type:function size:0x1C +Hu3DPauseSet = .text:0x800204C0; // type:function size:0xC +Hu3DNoSyncSet = .text:0x800204CC; // type:function size:0xC +Hu3DModelCreate = .text:0x800204D8; // type:function size:0x330 +Hu3DModelLink = .text:0x80020808; // type:function size:0x2E8 +Hu3DHookFuncCreate = .text:0x80020AF0; // type:function size:0x1C8 +Hu3DModelKill = .text:0x80020CB8; // type:function size:0x34C +Hu3DModelAllKill = .text:0x80021004; // type:function size:0xD0 +Hu3DModelPosSet = .text:0x800210D4; // type:function size:0x34 +Hu3DModelPosSetV = .text:0x80021108; // type:function size:0x40 +Hu3DModelRotSet = .text:0x80021148; // type:function size:0x34 +Hu3DModelRotSetV = .text:0x8002117C; // type:function size:0x40 +Hu3DModelScaleSet = .text:0x800211BC; // type:function size:0x34 +Hu3DModelScaleSetV = .text:0x800211F0; // type:function size:0x40 +Hu3DModelAttrSet = .text:0x80021230; // type:function size:0x54 +Hu3DModelAttrReset = .text:0x80021284; // type:function size:0x50 +Hu3DModelAttrGet = .text:0x800212D4; // type:function size:0x2C +Hu3DModelMotionAttrGet = .text:0x80021300; // type:function size:0x2C +Hu3DModelClusterAttrSet = .text:0x8002132C; // type:function size:0x44 +Hu3DModelClusterAttrReset = .text:0x80021370; // type:function size:0x44 +Hu3DModelCameraSet = .text:0x800213B4; // type:function size:0x2C +Hu3DModelLayerSet = .text:0x800213E0; // type:function size:0x6C +Hu3DModelObjPtrGet = .text:0x8002144C; // type:function size:0xD8 +Hu3DModelTPLvlSet = .text:0x80021524; // type:function size:0xF8 +Hu3DModelHiliteMapSet = .text:0x8002161C; // type:function size:0x98 +Hu3DModelShadowSet = .text:0x800216B4; // type:function size:0xB0 +Hu3DModelShadowReset = .text:0x80021764; // type:function size:0xA0 +Hu3DModelShadowDispOn = .text:0x80021804; // type:function size:0x34 +Hu3DModelShadowDispOff = .text:0x80021838; // type:function size:0x34 +Hu3DModelShadowMapSet = .text:0x8002186C; // type:function size:0x88 +Hu3DModelShadowMapObjSet = .text:0x800218F4; // type:function size:0xBC +Hu3DModelAmbSet = .text:0x800219B0; // type:function size:0x34 +Hu3DModelHookSet = .text:0x800219E4; // type:function size:0xEC +Hu3DModelHookReset = .text:0x80021AD0; // type:function size:0xB4 +Hu3DModelHookObjReset = .text:0x80021B84; // type:function size:0xF0 +Hu3DModelProjectionSet = .text:0x80021C74; // type:function size:0x44 +Hu3DModelProjectionReset = .text:0x80021CB8; // type:function size:0x44 +Hu3DModelHiliteTypeSet = .text:0x80021CFC; // type:function size:0xBC +Hu3DModelReflectTypeSet = .text:0x80021DB8; // type:function size:0x30 +Hu3DCameraCreate = .text:0x80021DE8; // type:function size:0x134 +Hu3DCameraPerspectiveSet = .text:0x80021F1C; // type:function size:0x80 +Hu3DCameraViewportSet = .text:0x80021F9C; // type:function size:0x88 +Hu3DCameraScissorSet = .text:0x80022024; // type:function size:0x90 +Hu3DCameraPosSet = .text:0x800220B4; // type:function size:0x98 +Hu3DCameraPosSetV = .text:0x8002214C; // type:function size:0xB8 +Hu3DCameraKill = .text:0x80022204; // type:function size:0x78 +Hu3DCameraAllKill = .text:0x8002227C; // type:function size:0xD0 +Hu3DCameraSet = .text:0x8002234C; // type:function size:0xDC +Hu3DModelCameraInfoSet = .text:0x80022428; // type:function size:0x3C0 +Hu3DModelCameraCreate = .text:0x800227E8; // type:function size:0x88 +Hu3DCameraMotionOn = .text:0x80022870; // type:function size:0x58 +Hu3DCameraMotionStart = .text:0x800228C8; // type:function size:0xD4 +Hu3DCameraMotionOff = .text:0x8002299C; // type:function size:0x34 +Hu3DLighInit = .text:0x800229D0; // type:function size:0x74 +Hu3DGLightCreate = .text:0x80022A44; // type:function size:0xA0 +Hu3DGLightCreateV = .text:0x80022AE4; // type:function size:0x104 +Hu3DLLightCreate = .text:0x80022BE8; // type:function size:0xA8 +Hu3DLLightCreateV = .text:0x80022C90; // type:function size:0x17C +Hu3DGLightSpotSet = .text:0x80022E0C; // type:function size:0x44 +Hu3DLLightSpotSet = .text:0x80022E50; // type:function size:0x6C +Hu3DGLightInfinitytSet = .text:0x80022EBC; // type:function size:0x48 +Hu3DLLightInfinitytSet = .text:0x80022F04; // type:function size:0x70 +Hu3DGLightPointSet = .text:0x80022F74; // type:function size:0x58 +Hu3DLLightPointSet = .text:0x80022FCC; // type:function size:0x80 +Hu3DGLightKill = .text:0x8002304C; // type:function size:0x20 +Hu3DLLightKill = .text:0x8002306C; // type:function size:0xBC +Hu3DLightAllKill = .text:0x80023128; // type:function size:0x68 +Hu3DGLightColorSet = .text:0x80023190; // type:function size:0x38 +Hu3DLLightColorSet = .text:0x800231C8; // type:function size:0x60 +Hu3DGLightPosSetV = .text:0x80023228; // type:function size:0x70 +Hu3DLLightPosSetV = .text:0x80023298; // type:function size:0x9C +Hu3DGLightPosSet = .text:0x80023334; // type:function size:0x90 +Hu3DLLightPosSet = .text:0x800233C4; // type:function size:0xBC +Hu3DGLightPosAimSetV = .text:0x80023480; // type:function size:0x80 +Hu3DLLightPosAimSetV = .text:0x80023500; // type:function size:0xAC +Hu3DGLightPosAimSet = .text:0x800235AC; // type:function size:0xC4 +Hu3DLLightPosAimSet = .text:0x80023670; // type:function size:0xF0 +Hu3DGLightStaticSet = .text:0x80023760; // type:function size:0x54 +Hu3DLLightStaticSet = .text:0x800237B4; // type:function size:0x7C +Hu3DModelLightInfoSet = .text:0x80023830; // type:function size:0x4D0 +Hu3DLightSet = .text:0x80023D00; // type:function size:0x130 +lightSet = .text:0x80023E30; // type:function size:0x254 scope:local +Hu3DReflectMapSet = .text:0x80024084; // type:function size:0x68 +Hu3DReflectNoSet = .text:0x800240EC; // type:function size:0x8 +Hu3DFogSet = .text:0x800240F4; // type:function size:0x60 +Hu3DFogClear = .text:0x80024154; // type:function size:0x74 +Hu3DShadowCreate = .text:0x800241C8; // type:function size:0x188 +Hu3DShadowPosSet = .text:0x80024350; // type:function size:0x64 +Hu3DShadowTPLvlSet = .text:0x800243B4; // type:function size:0x2C +Hu3DShadowSizeSet = .text:0x800243E0; // type:function size:0x78 +Hu3DShadowExec = .text:0x80024458; // type:function size:0x860 +Hu3DProjectionCreate = .text:0x80024CB8; // type:function size:0x130 +Hu3DProjectionKill = .text:0x80024DE8; // type:function size:0x60 +Hu3DProjectionPosSet = .text:0x80024E48; // type:function size:0x88 +Hu3DProjectionTPLvlSet = .text:0x80024ED0; // type:function size:0x38 +Hu3DMipMapSet = .text:0x80024F08; // type:function size:0x1E8 +Hu3DMotionInit = .text:0x800250F0; // type:function size:0x48 +Hu3DMotionCreate = .text:0x80025138; // type:function size:0xA4 +Hu3DMotionModelCreate = .text:0x800251DC; // type:function size:0xC4 +Hu3DMotionKill = .text:0x800252A0; // type:function size:0x114 +Hu3DMotionAllKill = .text:0x800253B4; // type:function size:0x11C +Hu3DMotionSet = .text:0x800254D0; // type:function size:0xBC +Hu3DMotionOverlaySet = .text:0x8002558C; // type:function size:0x54 +Hu3DMotionOverlayReset = .text:0x800255E0; // type:function size:0x20 +Hu3DMotionOverlayTimeGet = .text:0x80025600; // type:function size:0x1C +Hu3DMotionOverlayTimeSet = .text:0x8002561C; // type:function size:0x1C +Hu3DMotionOverlaySpeedSet = .text:0x80025638; // type:function size:0x1C +Hu3DMotionShiftSet = .text:0x80025654; // type:function size:0x1F4 +Hu3DMotionShapeSet = .text:0x80025848; // type:function size:0xBC +Hu3DMotionShapeIDGet = .text:0x80025904; // type:function size:0x1C +Hu3DMotionShapeSpeedSet = .text:0x80025920; // type:function size:0x2C +Hu3DMotionShapeTimeSet = .text:0x8002594C; // type:function size:0x1C +Hu3DMotionShapeMaxTimeGet = .text:0x80025968; // type:function size:0x44 +Hu3DMotionShapeStartEndSet = .text:0x800259AC; // type:function size:0x30 +Hu3DMotionClusterSet = .text:0x800259DC; // type:function size:0x114 +Hu3DMotionClusterNoSet = .text:0x80025AF0; // type:function size:0xD0 +Hu3DMotionShapeReset = .text:0x80025BC0; // type:function size:0x20 +Hu3DMotionClusterReset = .text:0x80025BE0; // type:function size:0xC8 +Hu3DMotionIDGet = .text:0x80025CA8; // type:function size:0x2C +Hu3DMotionShiftIDGet = .text:0x80025CD4; // type:function size:0x2C +Hu3DMotionTimeSet = .text:0x80025D00; // type:function size:0xF4 +Hu3DMotionTimeGet = .text:0x80025DF4; // type:function size:0x2C +Hu3DMotionShiftTimeGet = .text:0x80025E20; // type:function size:0x2C +Hu3DMotionMaxTimeGet = .text:0x80025E4C; // type:function size:0xA8 +Hu3DMotionShiftMaxTimeGet = .text:0x80025EF4; // type:function size:0xA8 +Hu3DMotionShiftStartEndSet = .text:0x80025F9C; // type:function size:0x30 +Hu3DMotionMotionMaxTimeGet = .text:0x80025FCC; // type:function size:0x8C +Hu3DMotionStartEndSet = .text:0x80026058; // type:function size:0x30 +Hu3DMotionEndCheck = .text:0x80026088; // type:function size:0x170 +Hu3DMotionSpeedSet = .text:0x800261F8; // type:function size:0x2C +Hu3DMotionShiftSpeedSet = .text:0x80026224; // type:function size:0x2C +Hu3DMotionNoMotSet = .text:0x80026250; // type:function size:0x114 +Hu3DMotionNoMotReset = .text:0x80026364; // type:function size:0x5C +Hu3DMotionForceSet = .text:0x800263C0; // type:function size:0x108 +Hu3DMotionNext = .text:0x800264C8; // type:function size:0x798 +Hu3DMotionExec = .text:0x80026C60; // type:function size:0x534 +Hu3DCameraMotionExec = .text:0x80027194; // type:function size:0xC0 +Hu3DSubMotionExec = .text:0x80027254; // type:function size:0x2A8 +GetObjTRXPtr = .text:0x800274FC; // type:function size:0x14C scope:weak +SetObjMatMotion = .text:0x80027648; // type:function size:0x208 +SetObjAttrMotion = .text:0x80027850; // type:function size:0x218 +SetObjCameraMotion = .text:0x80027A68; // type:function size:0x558 +SetObjLightMotion = .text:0x80027FC0; // type:function size:0x1D8 +GetCurve = .text:0x80028198; // type:function size:0xD8 +GetConstant = .text:0x80028270; // type:function size:0x70 +GetLinear = .text:0x800282E0; // type:function size:0x110 +GetBezier = .text:0x800283F0; // type:function size:0x200 scope:weak +GetBitMap = .text:0x800285F0; // type:function size:0x64 +Hu3DJointMotion = .text:0x80028654; // type:function size:0xCC +JointModel_Motion = .text:0x80028720; // type:function size:0x124 +Hu3DMotionCalc = .text:0x80028844; // type:function size:0x19C +SearchObjectIndex = .text:0x800289E0; // type:function size:0x90 scope:local +SearchAttributeIndex = .text:0x80028A70; // type:function size:0x9C scope:local +Hu3DAnimInit = .text:0x80028B0C; // type:function size:0x7C +Hu3DAnimCreate = .text:0x80028B88; // type:function size:0x1D0 +Hu3DAnimLink = .text:0x80028D58; // type:function size:0x1C4 +Hu3DAnimKill = .text:0x80028F1C; // type:function size:0x104 +Hu3DAnimModelKill = .text:0x80029020; // type:function size:0x13C +Hu3DAnimAllKill = .text:0x8002915C; // type:function size:0x134 +Hu3DAnimAttrSet = .text:0x80029290; // type:function size:0x34 +Hu3DAnimAttrReset = .text:0x800292C4; // type:function size:0x38 +Hu3DAnimSpeedSet = .text:0x800292FC; // type:function size:0x2C +Hu3DAnimBankSet = .text:0x80029328; // type:function size:0x48 +Hu3DAnmNoSet = .text:0x80029370; // type:function size:0x38 +Hu3DAnimSet = .text:0x800293A8; // type:function size:0x240 +Hu3DAnimExec = .text:0x800295E8; // type:function size:0x474 +Hu3DTexScrollCreate = .text:0x80029A5C; // type:function size:0x1AC +Hu3DTexScrollKill = .text:0x80029C08; // type:function size:0xE0 +Hu3DTexScrollAllKill = .text:0x80029CE8; // type:function size:0x10C +Hu3DTexScrollPosSet = .text:0x80029DF4; // type:function size:0x44 +Hu3DTexScrollPosMoveSet = .text:0x80029E38; // type:function size:0xA4 +Hu3DTexScrollRotSet = .text:0x80029EDC; // type:function size:0x3C +Hu3DTexScrollRotMoveSet = .text:0x80029F18; // type:function size:0x5C +Hu3DTexScrollPauseDisableSet = .text:0x80029F74; // type:function size:0x54 +Hu3DParticleCreate = .text:0x80029FC8; // type:function size:0x348 +Hu3DParticleScaleSet = .text:0x8002A310; // type:function size:0x6C +Hu3DParticleZRotSet = .text:0x8002A37C; // type:function size:0x6C +Hu3DParticleColSet = .text:0x8002A3E8; // type:function size:0x74 +Hu3DParticleTPLvlSet = .text:0x8002A45C; // type:function size:0x80 +Hu3DParticleBlendModeSet = .text:0x8002A4DC; // type:function size:0x38 +Hu3DParticleHookSet = .text:0x8002A514; // type:function size:0x38 +Hu3DParticleAttrSet = .text:0x8002A54C; // type:function size:0x40 +Hu3DParticleAttrReset = .text:0x8002A58C; // type:function size:0x44 +Hu3DParticleCntSet = .text:0x8002A5D0; // type:function size:0x3C +Hu3DParticleAnimModeSet = .text:0x8002A60C; // type:function size:0x60 +particleFunc = .text:0x8002A66C; // type:function size:0xAD4 scope:local +Hu3DParManInit = .text:0x8002B140; // type:function size:0x48 +Hu3DParManCreate = .text:0x8002B188; // type:function size:0x1D4 +Hu3DParManLink = .text:0x8002B35C; // type:function size:0x17C +Hu3DParManKill = .text:0x8002B4D8; // type:function size:0x190 +Hu3DParManAllKill = .text:0x8002B668; // type:function size:0x1C4 +Hu3DParManPtrGet = .text:0x8002B82C; // type:function size:0x20 +Hu3DParManPosSet = .text:0x8002B84C; // type:function size:0x3C +Hu3DParManVecSet = .text:0x8002B888; // type:function size:0x3C +Hu3DParManRotSet = .text:0x8002B8C4; // type:function size:0x7C +Hu3DParManAttrSet = .text:0x8002B940; // type:function size:0x40 +Hu3DParManAttrReset = .text:0x8002B980; // type:function size:0x40 +Hu3DParManModelIDGet = .text:0x8002B9C0; // type:function size:0x34 +Hu3DParManTimeLimitSet = .text:0x8002B9F4; // type:function size:0x38 +Hu3DParManVacumeSet = .text:0x8002BA2C; // type:function size:0x74 +Hu3DParManColorSet = .text:0x8002BAA0; // type:function size:0x68 +ParManFunc = .text:0x8002BB08; // type:function size:0xBC0 scope:local +ParManHook = .text:0x8002C6C8; // type:function size:0x4B4 scope:local +CamMotionEx2 = .text:0x8002CB7C; // type:function size:0xAC +CamMotionEx = .text:0x8002CC28; // type:function size:0xA14 +SetObjCamMotion = .text:0x8002D63C; // type:function size:0x244 scope:local +InterpolateBMLine = .text:0x8002D880; // type:function size:0x40C +Hu3D2Dto3D = .text:0x8002DC8C; // type:function size:0x1D4 +Hu3D3Dto2D = .text:0x8002DE60; // type:function size:0x1D0 +Hu3DMtxTransGet = .text:0x8002E030; // type:function size:0x1C +Hu3DMtxRotGet = .text:0x8002E04C; // type:function size:0x540 +Hu3DMtxScaleGet = .text:0x8002E58C; // type:function size:0x1C8 +HuPerfInit = .text:0x8002E754; // type:function size:0x94 +HuPerfCreate = .text:0x8002E7E8; // type:function size:0x130 +HuPerfZero = .text:0x8002E918; // type:function size:0x40 +HuPerfBegin = .text:0x8002E958; // type:function size:0x7C +HuPerfEnd = .text:0x8002E9D4; // type:function size:0xA0 +DSCallbackFunc = .text:0x8002EA74; // type:function size:0x16C +omMasterInit = .text:0x8002EBE0; // type:function size:0x90 +omWatchOverlayProc = .text:0x8002EC70; // type:function size:0x170 scope:local +omOvlCallEx = .text:0x8002EDE0; // type:function size:0xE8 +omOvlGotoEx = .text:0x8002EEC8; // type:function size:0x60 +omOvlReturnEx = .text:0x8002EF28; // type:function size:0xF4 +omOvlKill = .text:0x8002F01C; // type:function size:0xB8 +omOvlHisChg = .text:0x8002F0D4; // type:function size:0xA0 +omOvlHisGet = .text:0x8002F174; // type:function size:0x78 +omInitObjMan = .text:0x8002F1EC; // type:function size:0x220 +omDestroyObjMan = .text:0x8002F40C; // type:function size:0x50 +omAddObjEx = .text:0x8002F45C; // type:function size:0x1DC +omInsertObj = .text:0x8002F638; // type:function size:0xF8 +omAddMember = .text:0x8002F730; // type:function size:0x84 +omDelObjEx = .text:0x8002F7B4; // type:function size:0x190 +omDelMember = .text:0x8002F944; // type:function size:0x88 +omMakeGroupEx = .text:0x8002F9CC; // type:function size:0xFC +omGetGroupMemberListEx = .text:0x8002FAC8; // type:function size:0x2C +omSetStatBit = .text:0x8002FAF4; // type:function size:0x10 +omResetStatBit = .text:0x8002FB04; // type:function size:0x14 +omSetTra = .text:0x8002FB18; // type:function size:0x10 +omSetRot = .text:0x8002FB28; // type:function size:0x10 +omSetSca = .text:0x8002FB38; // type:function size:0x10 +omMain = .text:0x8002FB48; // type:function size:0x2F8 +omAllPause = .text:0x8002FE40; // type:function size:0xE0 +omPauseChk = .text:0x8002FF20; // type:function size:0x2C +omCurrentOvlGet = .text:0x8002FF4C; // type:function size:0x8 +OSPanic = .text:0x8002FF54; // type:function size:0x150 +HuFaultInitXfbDirectDraw = .text:0x800300A4; // type:function size:0x118 +HuFaultSetXfbAddress = .text:0x800301BC; // type:function size:0x34 +XFB_WriteBackCache = .text:0x800301F0; // type:function size:0x98 scope:local +XFB_CR = .text:0x80030288; // type:function size:0x50 scope:local +XFB_puts = .text:0x800302D8; // type:function size:0xF4 scope:local +XFB_putcS = .text:0x800303CC; // type:function size:0x150 scope:local +XFB_putcProgressive = .text:0x8003051C; // type:function size:0x1F0 scope:local +XFB_putcInterlace = .text:0x8003070C; // type:function size:0x1B4 scope:local +GWInit = .text:0x800308C0; // type:function size:0x158 +GWGameStatReset = .text:0x80030A18; // type:function size:0x31C +GWMessDelayGet = .text:0x80030D34; // type:function size:0x4C +GWMGRecordSet = .text:0x80030D80; // type:function size:0x54 +GWMGRecordGet = .text:0x80030DD4; // type:function size:0x18 +GWCharColorGet = .text:0x80030DEC; // type:function size:0x140 +GWBoardPlayCountSet = .text:0x80030F2C; // type:function size:0x24 +GWBoardPlayCountAdd = .text:0x80030F50; // type:function size:0x38 +GWBoardPlayCountGet = .text:0x80030F88; // type:function size:0x14 +GWBoardMaxStarsSet = .text:0x80030F9C; // type:function size:0x1C +GWBoardMaxStarsGet = .text:0x80030FB8; // type:function size:0x18 +GWBoardMaxCoinsSet = .text:0x80030FD0; // type:function size:0x1C +GWBoardMaxCoinsGet = .text:0x80030FEC; // type:function size:0x18 +GWBoardWinCountInc = .text:0x80031004; // type:function size:0x5C +GWBoardWinCountGet = .text:0x80031060; // type:function size:0x1C +GWBoardWinCountSet = .text:0x8003107C; // type:function size:0x20 +GWMGAvailGet = .text:0x8003109C; // type:function size:0x6C +GWMGAvailSet = .text:0x80031108; // type:function size:0x5C +GWMGCustomGet = .text:0x80031164; // type:function size:0x6C +GWMGCustomSet = .text:0x800311D0; // type:function size:0x5C +GWMGCustomReset = .text:0x8003122C; // type:function size:0x60 +GWCoinsGet = .text:0x8003128C; // type:function size:0x18 +GWCoinsSet = .text:0x800312A4; // type:function size:0xB0 +GWCoinsAdd = .text:0x80031354; // type:function size:0xD0 +GWStarsSet = .text:0x80031424; // type:function size:0x6C +GWStarsAdd = .text:0x80031490; // type:function size:0x94 +GWStarsGet = .text:0x80031524; // type:function size:0x18 +GWTotalStarsSet = .text:0x8003153C; // type:function size:0x34 +GWTotalStarsAdd = .text:0x80031570; // type:function size:0x54 +GWTotalStarsGet = .text:0x800315C4; // type:function size:0x10 +omOutView = .text:0x800315D4; // type:function size:0x238 +omOutViewMulti = .text:0x8003180C; // type:function size:0x2C4 +omSystemKeyCheckSetup = .text:0x80031AD0; // type:function size:0x74 +omSystemKeyCheck = .text:0x80031B44; // type:function size:0x230 +omSysPauseEnable = .text:0x80031D74; // type:function size:0x8 +omSysPauseCtrl = .text:0x80031D7C; // type:function size:0x50 +omDLLDBGOut = .text:0x80031DCC; // type:function size:0x2C +omDLLInit = .text:0x80031DF8; // type:function size:0x6C +omDLLStart = .text:0x80031E64; // type:function size:0x154 +omDLLNumEnd = .text:0x80031FB8; // type:function size:0xB4 +omDLLEnd = .text:0x8003206C; // type:function size:0x13C +omDLLLink = .text:0x800321A8; // type:function size:0x138 +omDLLUnlink = .text:0x800322E0; // type:function size:0xB4 +omDLLSearch = .text:0x80032394; // type:function size:0xC8 +omDLLInfoDump = .text:0x8003245C; // type:function size:0xD0 +omDLLHeaderDump = .text:0x8003252C; // type:function size:0xE0 +frand = .text:0x8003260C; // type:function size:0xAC +frandf = .text:0x800326B8; // type:function size:0xD8 +frandmod = .text:0x80032790; // type:function size:0xB8 +HuAudInit = .text:0x80032848; // type:function size:0x170 +HuAudStreamPlay = .text:0x800329B8; // type:function size:0x8 +HuAudStreamVolSet = .text:0x800329C0; // type:function size:0x3C +HuAudStreamPauseOn = .text:0x800329FC; // type:function size:0x24 +HuAudStreamPauseOff = .text:0x80032A20; // type:function size:0x24 +HuAudStreamFadeOut = .text:0x80032A44; // type:function size:0x4 +HuAudAllStop = .text:0x80032A48; // type:function size:0x28 +HuAudFadeOut = .text:0x80032A70; // type:function size:0x3C +HuAudFXPlay = .text:0x80032AAC; // type:function size:0x80 +HuAudFXPlayVol = .text:0x80032B2C; // type:function size:0x48 +HuAudFXPlayVolPan = .text:0x80032B74; // type:function size:0x68 +HuAudFXStop = .text:0x80032BDC; // type:function size:0x2C +HuAudFXAllStop = .text:0x80032C08; // type:function size:0x28 +HuAudFXFadeOut = .text:0x80032C30; // type:function size:0x30 +HuAudFXPanning = .text:0x80032C60; // type:function size:0x50 +HuAudFXListnerSet = .text:0x80032CB0; // type:function size:0xA4 +HuAudFXListnerSetEX = .text:0x80032D54; // type:function size:0x134 +HuAudFXListnerUpdate = .text:0x80032E88; // type:function size:0x3C +HuAudFXEmiterPlay = .text:0x80032EC4; // type:function size:0x6C +HuAudFXEmiterUpDate = .text:0x80032F30; // type:function size:0x64 +HuAudFXListnerKill = .text:0x80032F94; // type:function size:0x20 +HuAudFXPauseAll = .text:0x80032FB4; // type:function size:0x2C +HuAudFXStatusGet = .text:0x80032FE0; // type:function size:0x28 +HuAudFXPitchSet = .text:0x80033008; // type:function size:0x54 +HuAudFXVolSet = .text:0x8003305C; // type:function size:0x58 +HuAudSeqPlay = .text:0x800330B4; // type:function size:0x5C +HuAudSeqStop = .text:0x80033110; // type:function size:0x48 +HuAudSeqFadeOut = .text:0x80033158; // type:function size:0x3C +HuAudSeqAllFadeOut = .text:0x80033194; // type:function size:0x5C +HuAudSeqAllStop = .text:0x800331F0; // type:function size:0x28 +HuAudSeqPauseAll = .text:0x80033218; // type:function size:0x2C +HuAudSeqPause = .text:0x80033244; // type:function size:0x54 +HuAudSeqMidiCtrlGet = .text:0x80033298; // type:function size:0x60 +HuAudSStreamPlay = .text:0x800332F8; // type:function size:0x64 +HuAudSStreamStop = .text:0x8003335C; // type:function size:0x38 +HuAudSStreamFadeOut = .text:0x80033394; // type:function size:0x3C +HuAudSStreamAllFadeOut = .text:0x800333D0; // type:function size:0x28 +HuAudSStreamAllStop = .text:0x800333F8; // type:function size:0x24 +HuAudSStreamStatGet = .text:0x8003341C; // type:function size:0x28 +HuAudDllSndGrpSet = .text:0x80033444; // type:function size:0x104 +HuAudSndGrpSetSet = .text:0x80033548; // type:function size:0x1A4 +HuAudSndGrpSet = .text:0x800336EC; // type:function size:0x60 +HuAudSndCommonGrpSet = .text:0x8003374C; // type:function size:0x154 +HuAudAUXSet = .text:0x800338A0; // type:function size:0x58 +HuAudAUXVolSet = .text:0x800338F8; // type:function size:0xC +HuAudVoiceInit = .text:0x80033904; // type:function size:0x298 +HuAudPlayerVoicePlay = .text:0x80033B9C; // type:function size:0x50 +HuAudPlayerVoicePlayPos = .text:0x80033BEC; // type:function size:0x58 +HuAudPlayerVoicePlayEntry = .text:0x80033C44; // type:function size:0x50 +HuAudCharVoicePlay = .text:0x80033C94; // type:function size:0xAC +HuAudCharVoicePlayPos = .text:0x80033D40; // type:function size:0xD0 +HuAudCharVoicePlayEntry = .text:0x80033E10; // type:function size:0x90 +HuSePlay = .text:0x80033EA0; // type:function size:0x68 scope:local +InitEnvelope = .text:0x80033F08; // type:function size:0x1A4 +SetEnvelopMtx = .text:0x800340AC; // type:function size:0x23C scope:local +EnvelopeProc = .text:0x800342E8; // type:function size:0x80 +InitVtxParm = .text:0x80034368; // type:function size:0x50 +SetEnvelopMain = .text:0x800343B8; // type:function size:0x158 scope:local +SetEnvelop = .text:0x80034510; // type:function size:0x9F0 scope:local +SetMtx = .text:0x80034F00; // type:function size:0x334 scope:local +SetRevMtx = .text:0x80035234; // type:function size:0x11C scope:local +SearchSklenton = .text:0x80035350; // type:function size:0x78 scope:local +MGSeqInit = .text:0x800353C8; // type:function size:0xBC +MGSeqMain = .text:0x80035484; // type:function size:0x188 +CreateSeq = .text:0x8003560C; // type:function size:0x1A4 scope:local +MGSeqCreate = .text:0x800357B0; // type:function size:0x100 +MGSeqStatGet = .text:0x800358B0; // type:function size:0x88 +MGSeqPosSet = .text:0x80035938; // type:function size:0x4C +MGSeqParamSet = .text:0x80035984; // type:function size:0x4C +MGSeqKill = .text:0x800359D0; // type:function size:0x58 +MGSeqKillAll = .text:0x80035A28; // type:function size:0x3C +MGSeqDoneCheck = .text:0x80035A64; // type:function size:0xA4 +MGSeqStub = .text:0x80035B08; // type:function size:0x4 +MGSeqSprKill = .text:0x80035B0C; // type:function size:0x8C +MGSeqInitTimer = .text:0x80035B98; // type:function size:0x2F0 +MGSeqUpdateTimer = .text:0x80035E88; // type:function size:0x69C +MGSeqInitType2 = .text:0x80036524; // type:function size:0x3D8 +MGSeqUpdateType2 = .text:0x800368FC; // type:function size:0x2F8 +fn_80036BC8 = .text:0x80036BF4; // type:function size:0x188 +SeqMakeWord = .text:0x80036D7C; // type:function size:0x1D0 scope:local +SeqLoadFontChar = .text:0x80036F4C; // type:function size:0x26C scope:local +MGSeqInitMGBasic = .text:0x800371B8; // type:function size:0x194 +MGSeqUpdateMGBasic = .text:0x8003734C; // type:function size:0x9D0 +MGSeqInitMGCommon = .text:0x80037D1C; // type:function size:0x2A4 +MGSeqUpdateMGBattle = .text:0x80037FC0; // type:function size:0xDA4 +MGSeqUpdateMG1vs3 = .text:0x80038D64; // type:function size:0xDA4 +MGSeqUpdateMGStory = .text:0x80039B08; // type:function size:0xBB8 +MGSeqUpdateMG2vs2 = .text:0x8003A6C0; // type:function size:0xAB4 +MGSeqInitFlip = .text:0x8003B174; // type:function size:0x3C4 +MGSeqUpdateFlip = .text:0x8003B538; // type:function size:0x91C +MGSeqUpdateMGBowser = .text:0x8003BE54; // type:function size:0xC84 +MGSeqInitDraw = .text:0x8003CAD8; // type:function size:0xDC +MGSeqUpdateDraw = .text:0x8003CBB4; // type:function size:0x3DC +MGSeqInitWin = .text:0x8003CF90; // type:function size:0x6D0 +MGSeqUpdateWin = .text:0x8003D660; // type:function size:0x708 +MGSeqInitRecord = .text:0x8003DD68; // type:function size:0x764 +MGSeqUpdateRecord = .text:0x8003E4CC; // type:function size:0x304 +MGSeqPauseInit = .text:0x8003E7D0; // type:function size:0x6C +PauseProc = .text:0x8003E83C; // type:function size:0x94C scope:local +MGSeqPauseKill = .text:0x8003F188; // type:function size:0xC +MGSeqPauseEnableCtrl = .text:0x8003F194; // type:function size:0x40 +MGSeqPracticeInit = .text:0x8003F1D4; // type:function size:0xDC +PracticeProc = .text:0x8003F2B0; // type:function size:0x234 scope:local +SeqPlayStartFX = .text:0x8003F4E4; // type:function size:0xD4 scope:local +MGSeqPracticeExitCheck = .text:0x8003F5B8; // type:function size:0x128 +espInit = .text:0x8003F6E0; // type:function size:0xA0 +espEntry = .text:0x8003F780; // type:function size:0x1B0 +espKill = .text:0x8003F930; // type:function size:0x98 +espGrpIDGet = .text:0x8003F9C8; // type:function size:0x8 +espDispOn = .text:0x8003F9D0; // type:function size:0x44 +espDispOff = .text:0x8003FA14; // type:function size:0x44 +espAttrSet = .text:0x8003FA58; // type:function size:0x48 +espAttrReset = .text:0x8003FAA0; // type:function size:0x48 +espPosSet = .text:0x8003FAE8; // type:function size:0x50 +espScaleSet = .text:0x8003FB38; // type:function size:0x50 +espZRotSet = .text:0x8003FB88; // type:function size:0x48 +espTPLvlSet = .text:0x8003FBD0; // type:function size:0x48 +espColorSet = .text:0x8003FC18; // type:function size:0x58 +espSpeedSet = .text:0x8003FC70; // type:function size:0x48 +espBankSet = .text:0x8003FCB8; // type:function size:0x48 +espDrawNoSet = .text:0x8003FD00; // type:function size:0x48 +espPriSet = .text:0x8003FD48; // type:function size:0x48 +fn_8003FF68 = .text:0x8003FD90; // type:function size:0x268 +fn_800401D0 = .text:0x8003FFF8; // type:function size:0x12C +fn_800402FC = .text:0x80040124; // type:function size:0x78 +fn_80040374 = .text:0x8004019C; // type:function size:0x98 +fn_8004040C = .text:0x80040234; // type:function size:0xF4 +GetClusterCurve = .text:0x80040328; // type:function size:0xA8 +GetClusterWeightCurve = .text:0x800403D0; // type:function size:0xA8 +SetClusterMain = .text:0x80040478; // type:function size:0x3A0 scope:local +ClusterProc = .text:0x80040818; // type:function size:0x160 +ClusterMotionExec = .text:0x80040978; // type:function size:0x210 +SetShapeMain = .text:0x80040B88; // type:function size:0x36C scope:local +ShapeProc = .text:0x80040EF4; // type:function size:0xA4 +WipeInit = .text:0x80040F98; // type:function size:0xB4 +WipeExecAlways = .text:0x8004104C; // type:function size:0x288 +WipeCreate = .text:0x800412D4; // type:function size:0x12C +WipeColorSet = .text:0x80041400; // type:function size:0x58 +WipeStatGet = .text:0x80041458; // type:function size:0x10 +WipeDummyFade = .text:0x80041468; // type:function size:0x8 scope:local +WipeNormalFade = .text:0x80041470; // type:function size:0xFC scope:local +WipeColorFill = .text:0x8004156C; // type:function size:0x31C scope:local +WipeCrossFade = .text:0x80041888; // type:function size:0x184 scope:local +WipeFrameStill = .text:0x80041A0C; // type:function size:0x4C8 scope:local +HuWindowInit = .text:0x80041ED4; // type:function size:0x74 +HuWinInit = .text:0x80041F48; // type:function size:0x214 +HuWinCreate = .text:0x8004215C; // type:function size:0x544 +HuWinKill = .text:0x800426A0; // type:function size:0xA4 +HuWinAllKill = .text:0x80042744; // type:function size:0x1AC +MesDispFunc = .text:0x800428F0; // type:function size:0x7C4 scope:local +winBGMake = .text:0x800430B4; // type:function size:0x480 scope:local +HuWinProc = .text:0x80043534; // type:function size:0xF4 scope:local +HuWinDrawMes = .text:0x80043628; // type:function size:0xF60 scope:local +HuWinCR = .text:0x80044588; // type:function size:0x54 +_HuWinHomeClear = .text:0x800445DC; // type:function size:0x90 +HuWinHomeClear = .text:0x8004466C; // type:function size:0xA4 +HuWinKeyWaitEntry = .text:0x80044710; // type:function size:0x88 +HuWinKeyWait = .text:0x80044798; // type:function size:0x10C scope:local +HuWinSpcFontEntry = .text:0x800448A4; // type:function size:0x1A4 scope:local +HuWinSpcFontClear = .text:0x80044A48; // type:function size:0x80 scope:local +HuWinChoice = .text:0x80044AC8; // type:function size:0xA9C scope:local +HuWinActivePadGet = .text:0x80045564; // type:function size:0x68 +HuWinActiveKeyGetX = .text:0x800455CC; // type:function size:0xE8 +HuWinPosSet = .text:0x800456B4; // type:function size:0x6C +HuWinScaleSet = .text:0x80045720; // type:function size:0x6C +HuWinZRotSet = .text:0x8004578C; // type:function size:0x58 +HuWinCenterPosSet = .text:0x800457E4; // type:function size:0xAC +HuWinDrawNoSet = .text:0x80045890; // type:function size:0x4C +HuWinScissorSet = .text:0x800458DC; // type:function size:0x64 +HuWinPriSet = .text:0x80045940; // type:function size:0xB8 +HuWinAttrSet = .text:0x800459F8; // type:function size:0x34 +HuWinAttrReset = .text:0x80045A2C; // type:function size:0x34 +HuWinStatGet = .text:0x80045A60; // type:function size:0x2C +HuWinMesColSet = .text:0x80045A8C; // type:function size:0x3C +HuWinMesPalSet = .text:0x80045AC8; // type:function size:0x58 +HuWinBGTPLvlSet = .text:0x80045B20; // type:function size:0x50 +HuWinBGColSet = .text:0x80045B70; // type:function size:0x60 +HuWinMesSpeedSet = .text:0x80045BD0; // type:function size:0x2C +HuWinMesRead = .text:0x80045BFC; // type:function size:0xA4 +HuWinMesSet = .text:0x80045CA0; // type:function size:0x398 +HuWinInsertMesSet = .text:0x80046038; // type:function size:0xD8 +HuWinChoiceGet = .text:0x80046110; // type:function size:0x27C +HuWinChoiceNumGet = .text:0x8004638C; // type:function size:0x2C +HuWinChoiceDisable = .text:0x800463B8; // type:function size:0x38 +HuWinChoiceNowGet = .text:0x800463F0; // type:function size:0x40 +HuWinMesWait = .text:0x80046430; // type:function size:0x50 +HuWinAnimSet = .text:0x80046480; // type:function size:0x8C +HuWinSprSet = .text:0x8004650C; // type:function size:0xF0 +HuWinSprPosSet = .text:0x800465FC; // type:function size:0x88 +HuWinSprPriSet = .text:0x80046684; // type:function size:0x6C +HuWinSprIDGet = .text:0x800466F0; // type:function size:0x38 +HuWinSprKill = .text:0x80046728; // type:function size:0x68 +HuWinDispOff = .text:0x80046790; // type:function size:0x90 +HuWinDispOn = .text:0x80046820; // type:function size:0x90 +HuWinComKeyWait = .text:0x800468B0; // type:function size:0xC0 +HuWinComKeySet = .text:0x80046970; // type:function size:0x44 +_HuWinComKeySet = .text:0x800469B4; // type:function size:0x98 +HuWinComKeyGet = .text:0x80046A4C; // type:function size:0x1D4 +HuWinComKeyReset = .text:0x80046C20; // type:function size:0x10 +HuWinMesMaxSizeGet = .text:0x80046C30; // type:function size:0x17C +HuWinInsertMesSizeGet = .text:0x80046DAC; // type:function size:0x60 +HuWinMesSizeCancelCRSet = .text:0x80046E0C; // type:function size:0x8 +HuWinMesMaxSizeBetGet = .text:0x80046E14; // type:function size:0x120 +GetMesMaxSizeSub = .text:0x80046F34; // type:function size:0x2C0 scope:local +GetMesMaxSizeSub2 = .text:0x800471F4; // type:function size:0x1CC scope:local +HuWinKeyWaitNumGet = .text:0x800473C0; // type:function size:0x88 +HuWinPushKeySet = .text:0x80047448; // type:function size:0x2C +HuWinDisablePlayerSet = .text:0x80047474; // type:function size:0x34 +HuWinDisablePlayerReset = .text:0x800474A8; // type:function size:0x38 +HuWinExCreate = .text:0x800474E0; // type:function size:0x4C +HuWinExCreateStyled = .text:0x8004752C; // type:function size:0x228 +HuWinExAnimIn = .text:0x80047754; // type:function size:0x3B0 +HuWinExAnimOut = .text:0x80047B04; // type:function size:0x304 +HuWinExCleanup = .text:0x80047E08; // type:function size:0xA4 +HuWinExAnimPopIn = .text:0x80047EAC; // type:function size:0x264 +MessData_MesPtrGet = .text:0x80048110; // type:function size:0xE8 +HuCardInit = .text:0x800481F8; // type:function size:0x34 +HuCardCheck = .text:0x8004822C; // type:function size:0xC4 +HuCardSlotCheck = .text:0x800482F0; // type:function size:0x58 +HuCardMount = .text:0x80048348; // type:function size:0xEC +HuCardUnMount = .text:0x80048434; // type:function size:0x28 +HuCardFormat = .text:0x8004845C; // type:function size:0x50 +MountCallBack = .text:0x800484AC; // type:function size:0x1C scope:local +HuCardOpen = .text:0x800484C8; // type:function size:0x70 +HuCardRead = .text:0x80048538; // type:function size:0x68 +HuCardCreate = .text:0x800485A0; // type:function size:0x100 +HuCardClose = .text:0x800486A0; // type:function size:0x38 +HuCardWrite = .text:0x800486D8; // type:function size:0x50 +HuCardDelete = .text:0x80048728; // type:function size:0x40 +HuCardSectorSizeGet = .text:0x80048768; // type:function size:0x4C +HuCardFreeSpaceGet = .text:0x800487B4; // type:function size:0x48 +HuARInit = .text:0x800487FC; // type:function size:0x148 +HuARMalloc = .text:0x80048944; // type:function size:0x16C +HuARFree = .text:0x80048AB0; // type:function size:0x16C +HuAMemDump = .text:0x80048C1C; // type:function size:0xA8 +HuAR_DVDtoARAM = .text:0x80048CC4; // type:function size:0x160 +ArqCallBack = .text:0x80048E24; // type:function size:0x10 scope:local +HuAR_MRAMtoARAM = .text:0x80048E34; // type:function size:0x2C +HuAR_MRAMtoARAM2 = .text:0x80048E60; // type:function size:0x140 +HuAR_ARAMtoMRAM = .text:0x80048FA0; // type:function size:0x2C +HuAR_ARAMtoMRAMNum = .text:0x80048FCC; // type:function size:0x1F0 +ArqCallBackAM = .text:0x800491BC; // type:function size:0x44 scope:local +HuARDMACheck = .text:0x80049200; // type:function size:0x8 +HuARDirCheck = .text:0x80049208; // type:function size:0x58 +HuARDirFree = .text:0x80049260; // type:function size:0x68 +HuAR_ARAMtoMRAMFileRead = .text:0x800492C8; // type:function size:0x390 +ArqCallBackAMFileRead = .text:0x80049658; // type:function size:0x10 scope:local +CharManInit = .text:0x80049668; // type:function size:0x134 +CharAMemPtrGet = .text:0x8004979C; // type:function size:0x1C +CharARAMOpen = .text:0x800497B8; // type:function size:0x98 +CharARAMClose = .text:0x80049850; // type:function size:0x58 +CharKill = .text:0x800498A8; // type:function size:0x428 +CharKillAll = .text:0x80049CD0; // type:function size:0x3C +CharModelCreate = .text:0x80049D0C; // type:function size:0x180 +UpdateChar = .text:0x80049E8C; // type:function size:0x20C scope:local +UpdateCharAnim = .text:0x8004A098; // type:function size:0x173C scope:local +PlayCharVoice = .text:0x8004B7D4; // type:function size:0xB0 scope:local +InitEffect = .text:0x8004B884; // type:function size:0x254 scope:local +CreateEffectDust = .text:0x8004BAD8; // type:function size:0xB0 scope:local +CreateEffectSmoke = .text:0x8004BB88; // type:function size:0xB0 scope:local +CreateEffectDot = .text:0x8004BC38; // type:function size:0xB0 scope:local +CreateEffectStar = .text:0x8004BCE8; // type:function size:0xB0 scope:local +CreateEffectWarn = .text:0x8004BD98; // type:function size:0xB0 scope:local +CreateEffectBird = .text:0x8004BE48; // type:function size:0xB0 scope:local +CreateEffect = .text:0x8004BEF8; // type:function size:0x1CC scope:local +UpdateEffect = .text:0x8004C0C4; // type:function size:0x4A0 scope:local +RotateEffect = .text:0x8004C564; // type:function size:0x1E8 +PlayEffectSound = .text:0x8004C74C; // type:function size:0x344 +CharModelMotionCreate = .text:0x8004CA90; // type:function size:0x1D0 +CharModelMotionIndexSet = .text:0x8004CC60; // type:function size:0x88 +CharModelMotionKill = .text:0x8004CCE8; // type:function size:0x9C +CharModelMotionDataClose = .text:0x8004CD84; // type:function size:0x2B8 +CharModelDataClose = .text:0x8004D03C; // type:function size:0x430 +CharModelKill = .text:0x8004D46C; // type:function size:0x244 +CharModelMotionSet = .text:0x8004D6B0; // type:function size:0x7C +CharModelTexAnimSet = .text:0x8004D72C; // type:function size:0x17C +CharModelTexNameGet = .text:0x8004D8A8; // type:function size:0x7C +CharModelHookNameGet = .text:0x8004D924; // type:function size:0x7C +CharModelMotionTimeSet = .text:0x8004D9A0; // type:function size:0x4C +CharModelMotionTimeGet = .text:0x8004D9EC; // type:function size:0x44 +CharModelMotionMaxTimeGet = .text:0x8004DA30; // type:function size:0x44 +CharModelMotionEndCheck = .text:0x8004DA74; // type:function size:0x44 +CharModelMotionShiftIDGet = .text:0x8004DAB8; // type:function size:0x44 +CharModelMotionShiftSet = .text:0x8004DAFC; // type:function size:0x84 +CharModelMotionShiftTimeGet = .text:0x8004DB80; // type:function size:0x44 +CharModelMotionSpeedSet = .text:0x8004DBC4; // type:function size:0x4C +CharModelLayerSetAll = .text:0x8004DC10; // type:function size:0x80 +CharModelItemHookCreate = .text:0x8004DC90; // type:function size:0x1D4 +UpdateItemHook = .text:0x8004DE64; // type:function size:0x484 scope:local +CharModelEffectCreate = .text:0x8004E2E8; // type:function size:0x3FC +OrbitEffect = .text:0x8004E6E4; // type:function size:0x168 scope:local +CharModelCoinEffectCreate = .text:0x8004E84C; // type:function size:0x1A0 +fn_8004EC74 = .text:0x8004E9EC; // type:function size:0x130 +fn_8004EDA4 = .text:0x8004EB1C; // type:function size:0x2B4 +fn_8004F058 = .text:0x8004EDD0; // type:function size:0xE4 +fn_8004F13C = .text:0x8004EEB4; // type:function size:0x2B4 +CharModelLayerSetAll2 = .text:0x8004F168; // type:function size:0x80 +CharModelVoiceEnableSet = .text:0x8004F1E8; // type:function size:0xBC +fn_8004F52C = .text:0x8004F2A4; // type:function size:0x4C +CharModelEffectEnableSet = .text:0x8004F2F0; // type:function size:0xB0 +CharModelEffectNpcInit = .text:0x8004F3A0; // type:function size:0x2CC +CharModelEffectNpcInitSilent = .text:0x8004F66C; // type:function size:0x2CC +UpdateNpcEffect = .text:0x8004F938; // type:function size:0xF80 scope:local +CharModelStepTypeSet = .text:0x800508B8; // type:function size:0x30 +PlayStepFX = .text:0x800508E8; // type:function size:0xEC scope:local +MapWall = .text:0x800509D4; // type:function size:0x1B8 +MapWallCheck = .text:0x80050B8C; // type:function size:0x110 +MapPos = .text:0x80050C9C; // type:function size:0x2A8 +PolygonRangeCheck = .text:0x80050F44; // type:function size:0x38C scope:local +DefIfnnerMapCircle = .text:0x800512D0; // type:function size:0x470 scope:local +CalcPPLength = .text:0x80051740; // type:function size:0x5D4 scope:local +MapIflnnerCalc = .text:0x80051D14; // type:function size:0xF4 scope:local +MapCalcPoint = .text:0x80051E08; // type:function size:0x388 scope:local +AreaCheck = .text:0x80052190; // type:function size:0x148 scope:local +MapIflnnerTriangle = .text:0x800522D8; // type:function size:0x518 scope:local +MapIflnnerQuadrangle = .text:0x800527F0; // type:function size:0x994 scope:local +GetPolygonCircleMtx = .text:0x80053184; // type:function size:0xC28 scope:local +PrecalcPntToTriangle = .text:0x80053DAC; // type:function size:0x43C scope:local +Hitcheck_Triangle_with_Sphere = .text:0x800541E8; // type:function size:0x100 +Hitcheck_Quadrangle_with_Sphere = .text:0x800542E8; // type:function size:0x19C +DefSetHitFace = .text:0x80054484; // type:function size:0x4C scope:local +AppendAddXZ = .text:0x800544D0; // type:function size:0x184 +CharRotInv = .text:0x80054654; // type:function size:0x124 +THPSimpleInit = .text:0x80054778; // type:function size:0x124 +THPSimpleQuit = .text:0x8005489C; // type:function size:0x54 +THPSimpleOpen = .text:0x800548F0; // type:function size:0x408 +THPSimpleClose = .text:0x80054CF8; // type:function size:0xC0 +THPSimpleCalcNeedMemory = .text:0x80054DB8; // type:function size:0x184 +THPSimpleSetBuffer = .text:0x80054F3C; // type:function size:0x240 +__THPSimpleDVDCallback = .text:0x8005517C; // type:function size:0x2A4 scope:local +THPSimplePreLoad = .text:0x80055420; // type:function size:0x2A4 +THPSimpleAudioStart = .text:0x800556C4; // type:function size:0x14 +THPSimpleAudioStop = .text:0x800556D8; // type:function size:0x14 +THPSimpleLoadStop = .text:0x800556EC; // type:function size:0x1B8 +THPSimpleDecode = .text:0x800558A4; // type:function size:0x47C +VideoDecode = .text:0x80055D20; // type:function size:0xD8 scope:local +THPSimpleDrawCurrentFrame = .text:0x80055DF8; // type:function size:0x104 +MixAudio = .text:0x80055EFC; // type:function size:0x5F8 scope:local +THPSimpleGetVideoInfo = .text:0x800564F4; // type:function size:0x58 +THPSimpleGetTotalFrame = .text:0x8005654C; // type:function size:0x2C +THPAudioMixCallback = .text:0x80056578; // type:function size:0x188 scope:local +THPSimpleSetVolume = .text:0x80056700; // type:function size:0x17C +THPGXRestore = .text:0x8005687C; // type:function size:0x130 +THPGXYuv2RgbSetup = .text:0x800569AC; // type:function size:0x5A0 +THPGXYuv2RgbDraw = .text:0x80056F4C; // type:function size:0x288 +HuTHPSprCreateVol = .text:0x800571D4; // type:function size:0x108 +HuTHPSprCreate = .text:0x800572DC; // type:function size:0x110 +HuTHP3DCreateVol = .text:0x800573EC; // type:function size:0xF8 +HuTHP3DCreate = .text:0x800574E4; // type:function size:0x100 +HuTHPStop = .text:0x800575E4; // type:function size:0xC +HuTHPClose = .text:0x800575F0; // type:function size:0xC +HuTHPRestart = .text:0x800575FC; // type:function size:0xC +HuTHPEndCheck = .text:0x80057608; // type:function size:0x54 +HuTHPFrameGet = .text:0x8005765C; // type:function size:0x8 +HuTHPTotalFrameGet = .text:0x80057664; // type:function size:0x20 +HuTHPSetVolume = .text:0x80057684; // type:function size:0x30 +THPTestProc = .text:0x800576B4; // type:function size:0x27C scope:local +THPViewFunc = .text:0x80057930; // type:function size:0xA4 scope:local +THPViewSprFunc = .text:0x800579D4; // type:function size:0x17C scope:local +THPDecodeFunc = .text:0x80057B50; // type:function size:0x4C scope:local +omMgIndexGet = .text:0x80057B9C; // type:function size:0x5C +omGameSysInit = .text:0x80057BF8; // type:function size:0xF4 +omVibrate = .text:0x80057CEC; // type:function size:0x9C +_CheckFlag = .text:0x80057D88; // type:function size:0xA0 +_SetFlag = .text:0x80057E28; // type:function size:0xA4 +_ClearFlag = .text:0x80057ECC; // type:function size:0xA4 +_InitFlag = .text:0x80057F70; // type:function size:0x30 +SLFileOpen = .text:0x80057FA0; // type:function size:0x140 +SLFileCreate = .text:0x800580E0; // type:function size:0x280 +SLFileWrite = .text:0x80058360; // type:function size:0x10C +SLFileRead = .text:0x8005846C; // type:function size:0x84 +SLFileClose = .text:0x800584F0; // type:function size:0x4C +SLCurSlotNoSet = .text:0x8005853C; // type:function size:0x8 +SLCurBoxNoSet = .text:0x80058544; // type:function size:0xC +SLSaveFlagSet = .text:0x80058550; // type:function size:0x40 +SLSaveFlagGet = .text:0x80058590; // type:function size:0x8 +SLSaveDataMake = .text:0x80058598; // type:function size:0x154 +SLSaveDataInfoSet = .text:0x800586EC; // type:function size:0x218 +SLCommonSet = .text:0x80058904; // type:function size:0x254 +SLSaveBoard = .text:0x80058B58; // type:function size:0x8C +SLSaveBoardStory = .text:0x80058BE4; // type:function size:0x8C +SLSave = .text:0x80058C70; // type:function size:0x370 +SLCreateSaveWin = .text:0x80058FE0; // type:function size:0xDC scope:local +SLKillSaveWin = .text:0x800590BC; // type:function size:0x48 scope:local +SLLoad = .text:0x80059104; // type:function size:0x110 +SLLoadGameStat = .text:0x80059214; // type:function size:0x38 +SLLoadBoard = .text:0x8005924C; // type:function size:0x1A0 +SLLoadBoardStory = .text:0x800593EC; // type:function size:0x184 +SLSerialNoGet = .text:0x80059570; // type:function size:0x28 +SLSerialNoCheck = .text:0x80059598; // type:function size:0xA0 +SLCheckSumCheck = .text:0x80059638; // type:function size:0x60 +SLCheckSumGet = .text:0x80059698; // type:function size:0x54 +SLCheckSumSet = .text:0x800596EC; // type:function size:0x90 +SLStatSet = .text:0x8005977C; // type:function size:0x1D4 +SLCardMount = .text:0x80059950; // type:function size:0x12C +SLFormat = .text:0x80059A7C; // type:function size:0x594 +SLMessOut = .text:0x8005A010; // type:function size:0x3FC +HuSoftResetButtonCheck = .text:0x8005A40C; // type:function size:0x50 +HuDvdErrDispIntFunc = .text:0x8005A45C; // type:function size:0x28 +HuDvdErrDispInit = .text:0x8005A484; // type:function size:0x208 +ToeThreadFunc = .text:0x8005A68C; // type:function size:0xD8 scope:local +ToeDispCheck = .text:0x8005A764; // type:function size:0x128 scope:local +_HuDvdErrDispXFB = .text:0x8005A88C; // type:function size:0x348 scope:local +HuRestartSystem = .text:0x8005ABD4; // type:function size:0xDC +HuSoftResetCheck = .text:0x8005ACB0; // type:function size:0xFC scope:local +HuSoftResetCountCheck = .text:0x8005ADAC; // type:function size:0xCC scope:local +HuSoftResetPostProc = .text:0x8005AE78; // type:function size:0x78 scope:local +BoardObjectSetup = .text:0x8005AEF0; // type:function size:0x2E0 +InitBoardFunc = .text:0x8005B1D0; // type:function size:0x64 scope:local +ExecBoardFunc = .text:0x8005B234; // type:function size:0x9C scope:local +KillBoardFunc = .text:0x8005B2D0; // type:function size:0xCC scope:local +BoardKill = .text:0x8005B39C; // type:function size:0xAC +BoardIsKill = .text:0x8005B448; // type:function size:0x48 +BoardPauseDisableSet = .text:0x8005B490; // type:function size:0x74 +BoardPauseDisableGet = .text:0x8005B504; // type:function size:0x48 +BoardSaveInit = .text:0x8005B54C; // type:function size:0x524 +BoardStoryConfigSet = .text:0x8005BA70; // type:function size:0x160 +BoardPartyConfigSet = .text:0x8005BBD0; // type:function size:0x160 +DestroyMainFunc = .text:0x8005BD30; // type:function size:0xC scope:local +MainFunc = .text:0x8005BD3C; // type:function size:0x7D0 scope:local +BoardTurnNext = .text:0x8005C50C; // type:function size:0x8C +ExecTurnStart = .text:0x8005C598; // type:function size:0x28C scope:local +BoardNextOvlSet = .text:0x8005C824; // type:function size:0xC4 +BoardStartCheck = .text:0x8005C8E8; // type:function size:0x8C +CreateBoard = .text:0x8005C974; // type:function size:0x424 scope:local +DestroyBoard = .text:0x8005CD98; // type:function size:0x128 scope:local +BoardLightHookSet = .text:0x8005CEC0; // type:function size:0xC +BoardLightSetExec = .text:0x8005CECC; // type:function size:0x44 +BoardLightResetExec = .text:0x8005CF10; // type:function size:0x50 +BoardCameraBackup = .text:0x8005CF60; // type:function size:0x3C +BoardCameraRestore = .text:0x8005CF9C; // type:function size:0x48 +BoardCameraScissorSet = .text:0x8005CFE4; // type:function size:0x54 +BoardCameraViewSet = .text:0x8005D038; // type:function size:0x2AC +BoardCameraPosGet = .text:0x8005D2E4; // type:function size:0x48 +BoardCameraTargetGet = .text:0x8005D32C; // type:function size:0x48 +BoardCameraRotGet = .text:0x8005D374; // type:function size:0x48 +BoardCameraZoomGet = .text:0x8005D3BC; // type:function size:0x20 +BoardCameraDirGet = .text:0x8005D3DC; // type:function size:0xA8 +BoardCameraPointDirGet = .text:0x8005D484; // type:function size:0xBC +BoardCameraMaskSet = .text:0x8005D540; // type:function size:0x28 +BoardCameraMoveSet = .text:0x8005D568; // type:function size:0x50 +BoardCameraOffsetSet = .text:0x8005D5B8; // type:function size:0x30 +BoardCameraTargetPlayerSet = .text:0x8005D5E8; // type:function size:0xB4 +BoardCameraTargetModelSet = .text:0x8005D69C; // type:function size:0x40 +BoardCameraTargetSpaceSet = .text:0x8005D6DC; // type:function size:0x44 +BoardCameraPosCalcFuncSet = .text:0x8005D720; // type:function size:0x28 +BoardCameraQuakeSet = .text:0x8005D748; // type:function size:0x3C +BoardCameraQuakeReset = .text:0x8005D784; // type:function size:0x3C +BoardCameraTargetSet = .text:0x8005D7C0; // type:function size:0x28 +BoardCameraPosSet = .text:0x8005D7E8; // type:function size:0x28 +BoardCameraXRotZoomSet = .text:0x8005D810; // type:function size:0x24 +BoardCameraZoomSet = .text:0x8005D834; // type:function size:0x20 +BoardCameraRotSet = .text:0x8005D854; // type:function size:0x24 +BoardCameraNearFarSet = .text:0x8005D878; // type:function size:0x24 +BoardCameraNearFarGet = .text:0x8005D89C; // type:function size:0x3C +BoardCameraMotionStart = .text:0x8005D8D8; // type:function size:0x48 +BoardCameraMotionStartEx = .text:0x8005D920; // type:function size:0x230 +BoardCameraFovSet = .text:0x8005DB50; // type:function size:0x20 +BoardCameraCullCheck = .text:0x8005DB70; // type:function size:0x2BC +BoardCameraMotionIsDone = .text:0x8005DE2C; // type:function size:0x48 +BoardCameraMotionWait = .text:0x8005DE74; // type:function size:0x58 +BoardCameraInit = .text:0x8005DECC; // type:function size:0x24C +UpdateCamera = .text:0x8005E118; // type:function size:0x350 scope:local +CalcCameraTarget = .text:0x8005E468; // type:function size:0xE4 scope:local +CalcCameraPos = .text:0x8005E54C; // type:function size:0x764 scope:local +BoardMGDoneFlagSet = .text:0x8005ECB0; // type:function size:0x48 +BoardMGDoneFlagGet = .text:0x8005ECF8; // type:function size:0x48 +BoardMGExit = .text:0x8005ED40; // type:function size:0x170 +KillBoardMG = .text:0x8005EEB0; // type:function size:0x60 scope:local +ExecBoardMG = .text:0x8005EF10; // type:function size:0xC4 scope:local +BoardMGCreate = .text:0x8005EFD4; // type:function size:0x74 +BoardEventFlagSet = .text:0x8005F048; // type:function size:0x28 +BoardEventFlagReset = .text:0x8005F070; // type:function size:0x28 +BoardEventFlagGet = .text:0x8005F098; // type:function size:0x48 +BoardMTXCalcLookAt = .text:0x8005F0E0; // type:function size:0x10C +BoardArcSin = .text:0x8005F1EC; // type:function size:0x330 +BoardArcCos = .text:0x8005F51C; // type:function size:0x390 +BoardRandInit = .text:0x8005F8AC; // type:function size:0x24 +BoardRand = .text:0x8005F8D0; // type:function size:0x24 +BoardRandMod = .text:0x8005F8F4; // type:function size:0x50 +BoardRandFloat = .text:0x8005F944; // type:function size:0x58 +BoardVecDistXZCalc = .text:0x8005F99C; // type:function size:0x134 +BoardVecMaxDistXZCheck = .text:0x8005FAD0; // type:function size:0x15C +BoardDAngleCalcVec = .text:0x8005FC2C; // type:function size:0x7C +BoardDAngleCalc = .text:0x8005FCA8; // type:function size:0x34 +BoardDAngleCalcRange = .text:0x8005FCDC; // type:function size:0x1C0 +BoardVecMinDistCheck = .text:0x8005FE9C; // type:function size:0x6C +BoardFilterFadeOut = .text:0x8005FF08; // type:function size:0xD4 +BoardFilterFadeInit = .text:0x8005FFDC; // type:function size:0x174 +BoardFilterFadePauseCheck = .text:0x80060150; // type:function size:0x5C +BoardFilterFadeCheck = .text:0x800601AC; // type:function size:0x34 +UpdateFilter = .text:0x800601E0; // type:function size:0x178 scope:local +DrawFilter = .text:0x80060358; // type:function size:0x350 scope:local +BoardConfettiCreate = .text:0x800606A8; // type:function size:0x164 +BoardConfettiKill = .text:0x8006080C; // type:function size:0x24 +BoardConfettiStop = .text:0x80060830; // type:function size:0x88 +UpdateConfetti = .text:0x800608B8; // type:function size:0xB8 scope:local +SpawnConfetti = .text:0x80060970; // type:function size:0x564 scope:local +MoveConfetti = .text:0x80060ED4; // type:function size:0x14C scope:local +DrawConfetti = .text:0x80061020; // type:function size:0x254 scope:local +BoardLast5GfxInit = .text:0x80061274; // type:function size:0x2B4 +UpdateLast5Gfx = .text:0x80061528; // type:function size:0x2AC scope:local +BoardLast5GfxShowSet = .text:0x800617D4; // type:function size:0xAC +BoardTauntInit = .text:0x80061880; // type:function size:0x80 +BoardTauntKill = .text:0x80061900; // type:function size:0x54 +TauntUpdate = .text:0x80061954; // type:function size:0x3A4 scope:local +BoardDataDirReadAsync = .text:0x80061CF8; // type:function size:0x38 +BoardDataAsyncWait = .text:0x80061D30; // type:function size:0x48 +BoardItemPrevGet = .text:0x80061D78; // type:function size:0xC +BoardItemPrevSet = .text:0x80061D84; // type:function size:0xC +BoardPlayerGetCharMess = .text:0x80061D90; // type:function size:0x78 +BoardPlayerGetCharName = .text:0x80061E08; // type:function size:0x78 +BoardPlayerIsAllCom = .text:0x80061E80; // type:function size:0x80 +BoardPlayerInit = .text:0x80061F00; // type:function size:0x16C +BoardPlayerModelInit = .text:0x8006206C; // type:function size:0x588 +BoardPlayerModelKill = .text:0x800625F4; // type:function size:0xFC +BoardPlayerLayerSet = .text:0x800626F0; // type:function size:0x84 +BoardPlayerCameraSet = .text:0x80062774; // type:function size:0x80 +fn_80062A40 = .text:0x800627F4; // type:function size:0x80 +BoardPlayerExistCheck = .text:0x80062874; // type:function size:0xB4 +BoardPlayerItemAdd = .text:0x80062928; // type:function size:0xB0 +BoardPlayerItemRemove = .text:0x800629D8; // type:function size:0xB4 +BoardPlayerItemFind = .text:0x80062A8C; // type:function size:0x58 +BoardPlayerItemCount = .text:0x80062AE4; // type:function size:0x60 +BoardPlayerCornerPosSet = .text:0x80062B44; // type:function size:0x40 +BoardPlayerCornerPosGet = .text:0x80062B84; // type:function size:0xC4 +BoardPlayerAmbSet = .text:0x80062C48; // type:function size:0x90 +BoardPlayerMtxSet = .text:0x80062CD8; // type:function size:0x80 +BoardPlayerPosSetV = .text:0x80062D58; // type:function size:0x9C +BoardPlayerPosSet = .text:0x80062DF4; // type:function size:0xCC +BoardPlayerPosGet = .text:0x80062EC0; // type:function size:0x80 +BoardPlayerRotSetV = .text:0x80062F40; // type:function size:0x9C +BoardPlayerRotSet = .text:0x80062FDC; // type:function size:0xCC +BoardPlayerRotGet = .text:0x800630A8; // type:function size:0x80 +BoardPlayerRotYSet = .text:0x80063128; // type:function size:0xD4 +BoardPlayerRotYGet = .text:0x800631FC; // type:function size:0xA8 +BoardPlayerScaleSetV = .text:0x800632A4; // type:function size:0x80 +BoardPlayerScaleSet = .text:0x80063324; // type:function size:0x90 +BoardPlayerScaleGet = .text:0x800633B4; // type:function size:0x80 +BoardPlayerCurrMotionGet = .text:0x80063434; // type:function size:0x44 +BoardPlayerVoiceEnableSet = .text:0x80063478; // type:function size:0x88 +BoardPlayerMotionCreate = .text:0x80063500; // type:function size:0x80 +BoardPlayerMotionKill = .text:0x80063580; // type:function size:0x80 +BoardPlayerMotionEndCheck = .text:0x80063600; // type:function size:0x78 +BoardPlayerMotionEndWait = .text:0x80063678; // type:function size:0x88 +BoardPlayerMotionStart = .text:0x80063700; // type:function size:0xD0 +BoardPlayerMotionShiftSet = .text:0x800637D0; // type:function size:0xE0 +BoardPlayerMotionSpeedSet = .text:0x800638B0; // type:function size:0x80 +BoardPlayerMotionTimeSet = .text:0x80063930; // type:function size:0x80 +BoardPlayerMotionTimeGet = .text:0x800639B0; // type:function size:0x78 +BoardPlayerMotionMaxTimeGet = .text:0x80063A28; // type:function size:0x78 +BoardPlayerMotionStartEndSet = .text:0x80063AA0; // type:function size:0xA0 +BoardPlayerModelAttrSet = .text:0x80063B40; // type:function size:0x80 +BoardPlayerModelAttrReset = .text:0x80063BC0; // type:function size:0x80 +BoardPlayerCoinsSet = .text:0x80063C40; // type:function size:0x34 +BoardPlayerCoinsGet = .text:0x80063C74; // type:function size:0x2C +BoardPlayerCoinsAdd = .text:0x80063CA0; // type:function size:0x9C +BoardPlayerStarsAdd = .text:0x80063D3C; // type:function size:0x48 +BoardPlayerSizeSet = .text:0x80063D84; // type:function size:0x16C +BoardPlayerSizeGet = .text:0x80063EF0; // type:function size:0x40 +BoardPlayerSameTeamFind = .text:0x80063F30; // type:function size:0x7C +BoardPlayerTeamFind = .text:0x80063FAC; // type:function size:0x7C +BoardPlayerRankCalc = .text:0x80064028; // type:function size:0xC4 +BoardPlayerPreTurnHookSet = .text:0x800640EC; // type:function size:0x18 +BoardPlayerPostTurnHookSet = .text:0x80064104; // type:function size:0x18 +BoardPlayerTurnExec = .text:0x8006411C; // type:function size:0x15C +BoardPlayerTurnRollExec = .text:0x80064278; // type:function size:0x160 +BoardPlayerTurnMoveExec = .text:0x800643D8; // type:function size:0x420 +BoardPlayerPostTurnHookExec = .text:0x800647F8; // type:function size:0x80 +BoardPlayerSizeRestore = .text:0x80064878; // type:function size:0x18C +BoardPlayerZoomRestore = .text:0x80064A04; // type:function size:0x134 +BoardJunctionMaskSet = .text:0x80064B38; // type:function size:0x10 +BoardJunctionMaskReset = .text:0x80064B48; // type:function size:0x10 +BoardJunctionMaskZero = .text:0x80064B58; // type:function size:0xC +InitJunction = .text:0x80064B64; // type:function size:0x634 scope:local +UpdateJunctionGfx = .text:0x80065198; // type:function size:0x1A0 scope:local +StopJunctionPlayer = .text:0x80065338; // type:function size:0x70 scope:local +RestoreJunction = .text:0x800653A8; // type:function size:0x180 scope:local +GetDefaultDirection = .text:0x80065528; // type:function size:0x114 scope:local +DoDebugMove = .text:0x8006563C; // type:function size:0x8E8 scope:local +ExecJunction = .text:0x80065F24; // type:function size:0xBF8 scope:local +BoardPlayerMoveTo = .text:0x80066B1C; // type:function size:0xBC +BoardPlayerMoveBetween = .text:0x80066BD8; // type:function size:0x90 +BoardPlayerMoveToAsync = .text:0x80066C68; // type:function size:0x90 +BoardPlayerPosLerpStart = .text:0x80066CF8; // type:function size:0x430 +PlayerPosLerpFunc = .text:0x80067128; // type:function size:0x218 scope:local +BoardPlayerDiceJumpStart = .text:0x80067340; // type:function size:0x1D4 +BoardPlayerDiceJumpCheck = .text:0x80067514; // type:function size:0x54 +DiceJumpFunc = .text:0x80067568; // type:function size:0x3E4 scope:local +BoardPlayerIdleSet = .text:0x8006794C; // type:function size:0xF8 +BoardPlayerMotBlendSet = .text:0x80067A44; // type:function size:0x5A0 +ExecMotBlend = .text:0x80067FE4; // type:function size:0x51C scope:local +BoardPlayerMotBlendCheck = .text:0x80068500; // type:function size:0x2C +BoardRollCreate = .text:0x8006852C; // type:function size:0x138 +BoardRollUpdateSet = .text:0x80068664; // type:function size:0x38 +BoardRollDispSet = .text:0x8006869C; // type:function size:0x10C +UpdateRollSprite = .text:0x800687A8; // type:function size:0x194 scope:local +UpdateRoll = .text:0x8006893C; // type:function size:0x278 scope:local +BoardPlayerBtnDownWait = .text:0x80068BB4; // type:function size:0x6C +BoardPlayerAutoSizeSet = .text:0x80068C20; // type:function size:0x9C +BoardPlayerAutoSizeGet = .text:0x80068CBC; // type:function size:0x40 +BoardPlayerMoveAwayIsDone = .text:0x80068CFC; // type:function size:0x1C +BoardPlayerMoveAwayStart = .text:0x80068D18; // type:function size:0x224 +BoardPlayerMoveAwayStartCurr = .text:0x80068F3C; // type:function size:0x40 +MoveAwayObjFunc = .text:0x80068F7C; // type:function size:0x100 scope:local +BoardBowserSuitInit = .text:0x8006907C; // type:function size:0x1A4 +BoardBowserSuitKill = .text:0x80069220; // type:function size:0x128 +BoardBowserSuitModelGet = .text:0x80069348; // type:function size:0x8 +BoardBowserSuitPlayerModelGet = .text:0x80069350; // type:function size:0x8 +BoardBowserSuitMotionCreate = .text:0x80069358; // type:function size:0x74 +BoardBowserSuitMotionSetWait = .text:0x800693CC; // type:function size:0x54 +BoardBowserSuitMotionSetWalk = .text:0x80069420; // type:function size:0x4C +BoardBowserSuitMotionSetWin = .text:0x8006946C; // type:function size:0x44 +BoardBowserSuitMotionSetJump = .text:0x800694B0; // type:function size:0x44 +BoardBowserSuitPlayerModelKill = .text:0x800694F4; // type:function size:0x44 +UpdateBowserSuit = .text:0x80069538; // type:function size:0x1F0 scope:local +BoardPlayerSparkSet = .text:0x80069728; // type:function size:0x5C +DoSparkSpace = .text:0x80069784; // type:function size:0x1294 scope:local +RemoveSparkSpace = .text:0x8006AA18; // type:function size:0xA0 scope:local +SetPlayerSizeAuto = .text:0x8006AAB8; // type:function size:0x24C scope:local +BoardMegaDoubleDiceCheck = .text:0x8006AD04; // type:function size:0x8 +BoardPlayerResizeAnimExec = .text:0x8006AD0C; // type:function size:0x38C +MegaSquishFunc = .text:0x8006B098; // type:function size:0x950 scope:local +MegaPlayerPassFunc = .text:0x8006B9E8; // type:function size:0x980 scope:local +MegaExecJump = .text:0x8006C368; // type:function size:0xA48 scope:local +BoardPlayerCopyEyeMat = .text:0x8006CDB0; // type:function size:0x24C +BoardPlayerCopyMat = .text:0x8006CFFC; // type:function size:0xC0 +BoardModelInit = .text:0x8006D0BC; // type:function size:0xF0 +BoardModelKillAll = .text:0x8006D1AC; // type:function size:0xA0 +ModelMgrFunc = .text:0x8006D24C; // type:function size:0x70 scope:local +BoardModelDummyUpdate = .text:0x8006D2BC; // type:function size:0x4 +BoardModelVisibilityUpdate = .text:0x8006D2C0; // type:function size:0xCC +BoardModelHideSetAll = .text:0x8006D38C; // type:function size:0x90 +BoardModelAmbSetAll = .text:0x8006D41C; // type:function size:0x70 +BoardModelCameraSetAll = .text:0x8006D48C; // type:function size:0x7C +CreateInstance = .text:0x8006D508; // type:function size:0x250 scope:local +BoardModelCreate = .text:0x8006D758; // type:function size:0x40 +BoardModelCreateCharacter = .text:0x8006D798; // type:function size:0x44 +BoardModelCreateParam = .text:0x8006D7DC; // type:function size:0x168 +BoardModelKill = .text:0x8006D944; // type:function size:0x44 +BoardModelIDGet = .text:0x8006D988; // type:function size:0x48 +fn_8006DC1C = .text:0x8006D9D0; // type:function size:0x60 +BoardModelPassSet = .text:0x8006DA30; // type:function size:0x74 +BoardModelAmbSet = .text:0x8006DAA4; // type:function size:0x68 +BoardModelExistCheck = .text:0x8006DB0C; // type:function size:0x48 +BoardModelExistDupe = .text:0x8006DB54; // type:function size:0x48 +fn_8006DDE8 = .text:0x8006DB9C; // type:function size:0x70 +BoardModelMotionCreate = .text:0x8006DC0C; // type:function size:0x140 +BoardModelMotionKill = .text:0x8006DD4C; // type:function size:0x118 +BoardModelMotionStartEndSet = .text:0x8006DE64; // type:function size:0xE8 +BoardModelMotionUpdateSet = .text:0x8006DF4C; // type:function size:0x7C +BoardModelVoiceEnableSet = .text:0x8006DFC8; // type:function size:0xA4 +BoardModelMotionStart = .text:0x8006E06C; // type:function size:0x174 +BoardModelMotionShiftIDGet = .text:0x8006E1E0; // type:function size:0x50 +BoardModelMotionShiftSet = .text:0x8006E230; // type:function size:0x148 +BoardModelAttrSet = .text:0x8006E378; // type:function size:0x58 +BoardModelAttrReset = .text:0x8006E3D0; // type:function size:0x58 +BoardModelMotionTimeSet = .text:0x8006E428; // type:function size:0x84 +BoardModelMotionTimeGet = .text:0x8006E4AC; // type:function size:0x94 +BoardModelMotionMaxTimeGet = .text:0x8006E540; // type:function size:0x88 +BoardModelMotionSpeedGet = .text:0x8006E5C8; // type:function size:0x64 +BoardModelMotionSpeedSet = .text:0x8006E62C; // type:function size:0xA4 +BoardModelMotionEndCheck = .text:0x8006E6D0; // type:function size:0x80 +BoardModelMotionShapeSet = .text:0x8006E750; // type:function size:0x100 +BoardModelMotionShapeTimeGet = .text:0x8006E850; // type:function size:0x7C +BoardModelMotionShapeMaxTimeGet = .text:0x8006E8CC; // type:function size:0xBC +BoardModelMotionShapeSpeedSet = .text:0x8006E988; // type:function size:0x88 +BoardModelMotionShapeSpeedGet = .text:0x8006EA10; // type:function size:0x64 +BoardModelMotionShapeEndCheck = .text:0x8006EA74; // type:function size:0x14C +BoardModelMotionShapeStartEndSet = .text:0x8006EBC0; // type:function size:0x100 +BoardModelAlphaSet = .text:0x8006ECC0; // type:function size:0xB0 +BoardModelMtxSet = .text:0x8006ED70; // type:function size:0x8C +BoardModelMtxGet = .text:0x8006EDFC; // type:function size:0x8C +BoardModelRotYSet = .text:0x8006EE88; // type:function size:0x54 +BoardModelRotYGet = .text:0x8006EEDC; // type:function size:0x30 +BoardModelPosSetV = .text:0x8006EF0C; // type:function size:0x50 +BoardModelPosSet = .text:0x8006EF5C; // type:function size:0x78 +BoardModelRotSetV = .text:0x8006EFD4; // type:function size:0x50 +BoardModelRotSet = .text:0x8006F024; // type:function size:0x78 +BoardModelScaleSetV = .text:0x8006F09C; // type:function size:0x50 +BoardModelScaleSet = .text:0x8006F0EC; // type:function size:0x78 +BoardModelPosGet = .text:0x8006F164; // type:function size:0x74 +BoardModelRotGet = .text:0x8006F1D8; // type:function size:0x74 +BoardModelScaleGet = .text:0x8006F24C; // type:function size:0x74 +BoardModelVisibilitySet = .text:0x8006F2C0; // type:function size:0x60 +BoardModelVisibilityGet = .text:0x8006F320; // type:function size:0x4C +BoardModelCameraSet = .text:0x8006F36C; // type:function size:0x64 +BoardModelLayerSet = .text:0x8006F3D0; // type:function size:0x64 +BoardModelLayerGet = .text:0x8006F434; // type:function size:0x48 +BoardModelLayerSetAll = .text:0x8006F47C; // type:function size:0x74 +BoardModelHookSet = .text:0x8006F4F0; // type:function size:0xC4 +BoardModelHookReset = .text:0x8006F5B4; // type:function size:0x50 +BoardModelHookObjReset = .text:0x8006F604; // type:function size:0x58 +SearchBoardModel = .text:0x8006F65C; // type:function size:0x9C scope:local +KillBoardModel = .text:0x8006F6F8; // type:function size:0x178 scope:local +CreateBoardModel = .text:0x8006F870; // type:function size:0x194 scope:local +CreateBoardModelMotion = .text:0x8006FA04; // type:function size:0x12C scope:local +BoardWinInit = .text:0x8006FB30; // type:function size:0x24 +BoardWinUnusedArraySet = .text:0x8006FB54; // type:function size:0x34 +BoardWinKillAll = .text:0x8006FB88; // type:function size:0x24 +BoardWinDestroy = .text:0x8006FBAC; // type:function size:0x6C +ExecBoardWindow = .text:0x8006FC18; // type:function size:0x534 scope:local +BoardWinChoiceGet = .text:0x8007014C; // type:function size:0xC +BoardWinPause = .text:0x80070158; // type:function size:0xC +BoardWinCreateChoice = .text:0x80070164; // type:function size:0x1A0 +BoardWinCreate = .text:0x80070304; // type:function size:0x1A0 +BoardWinInsertMesSet = .text:0x800704A4; // type:function size:0x18 +BoardWinWait = .text:0x800704BC; // type:function size:0x50 +BoardWinKill = .text:0x8007050C; // type:function size:0x38 +BoardWinAttrSet = .text:0x80070544; // type:function size:0x48 +BoardWinAttrReset = .text:0x8007058C; // type:function size:0x48 +BoardWinChoiceDisable = .text:0x800705D4; // type:function size:0x1C +BoardWinKeyWait = .text:0x800705F0; // type:function size:0xC +BoardWinSpeedGet = .text:0x800705FC; // type:function size:0x64 +BoardWinSpeedSet = .text:0x80070660; // type:function size:0x50 +BoardWinChoiceNowGet = .text:0x800706B0; // type:function size:0x38 +BoardWinPriSet = .text:0x800706E8; // type:function size:0x44 +BoardWinChoiceNowGet2 = .text:0x8007072C; // type:function size:0x38 +BoardWinPortraitGet = .text:0x80070764; // type:function size:0x38 +BoardWinPortraitGetStar = .text:0x8007079C; // type:function size:0x38 +BoardWinPlayerSet = .text:0x800707D4; // type:function size:0x138 +BoardWinStartComKeySet = .text:0x8007090C; // type:function size:0x214 +BoardWinComKeyFuncSet = .text:0x80070B20; // type:function size:0x8 +BoardWinIDGet = .text:0x80070B28; // type:function size:0x8 +BoardMusStartBoard = .text:0x80070B30; // type:function size:0x68 +BoardMusStart = .text:0x80070B98; // type:function size:0xD0 +BoardAudSeqFadeOutFast = .text:0x80070C68; // type:function size:0x2C +BoardAudSeqFadeOut = .text:0x80070C94; // type:function size:0x60 +BoardMusLoudSet = .text:0x80070CF4; // type:function size:0x5C +BoardMusVolPanSet = .text:0x80070D50; // type:function size:0x90 +BoardAudSeqPause = .text:0x80070DE0; // type:function size:0x94 +BoardMusStatusGet = .text:0x80070E74; // type:function size:0x54 +BoardAudSeqClear = .text:0x80070EC8; // type:function size:0x50 +BoardAudSeqFadeOutAll = .text:0x80070F18; // type:function size:0x74 +BoardAudFXPlay = .text:0x80070F8C; // type:function size:0x78 +BoardAudFXStop = .text:0x80071004; // type:function size:0x38 +ExecComKeyLeft = .text:0x8007103C; // type:function size:0x38 scope:local +BoardComKeySetLeft = .text:0x80071074; // type:function size:0x28 +ExecComKeyRight = .text:0x8007109C; // type:function size:0x38 scope:local +BoardComKeySetRight = .text:0x800710D4; // type:function size:0x28 +ExecComKeyUp = .text:0x800710FC; // type:function size:0x38 scope:local +BoardComKeySetUp = .text:0x80071134; // type:function size:0x28 +ExecComKeyDown = .text:0x8007115C; // type:function size:0x38 scope:local +BoardComKeySetDown = .text:0x80071194; // type:function size:0x28 +ExecComKey = .text:0x800711BC; // type:function size:0xE8 scope:local +BoardComPreferItemGet = .text:0x800712A4; // type:function size:0x100 +BoardComPreferItemCheck = .text:0x800713A4; // type:function size:0x120 +BoardComItemWeightGet = .text:0x800714C4; // type:function size:0x74 +BoardComUseItemSlotGet = .text:0x80071538; // type:function size:0xD0 +BoardComUseItemSet = .text:0x80071608; // type:function size:0x6C +BoardComUseItemCheck = .text:0x80071674; // type:function size:0x68 +ChooseUseItem = .text:0x800716DC; // type:function size:0x16C scope:local +CheckMiniUse = .text:0x80071848; // type:function size:0x220 scope:local +CheckMegaUse = .text:0x80071A68; // type:function size:0x248 scope:local +CheckSparkUse = .text:0x80071CB0; // type:function size:0x158 scope:local +CheckBoardChangeUse = .text:0x80071E08; // type:function size:0x314 scope:local +CheckSwapUse = .text:0x8007211C; // type:function size:0x198 scope:local +CheckBooUse = .text:0x800722B4; // type:function size:0x7C scope:local +CheckLampUse = .text:0x80072330; // type:function size:0x74 scope:local +BoardComJunctionInputGet = .text:0x800723A4; // type:function size:0x304 +BoardComFarPlayerFind = .text:0x800726A8; // type:function size:0xA8 +BoardViewOverheadExec = .text:0x80072750; // type:function size:0x134 +BoardViewFocusGetPos = .text:0x80072884; // type:function size:0x3C +BoardViewFocusSet = .text:0x800728C0; // type:function size:0xF0 +BoardViewMoveStart = .text:0x800729B0; // type:function size:0x128 +BoardViewMoveCheck = .text:0x80072AD8; // type:function size:0x34 +BoardViewMoveEnd = .text:0x80072B0C; // type:function size:0xC +BoardViewWait = .text:0x80072B18; // type:function size:0x3C +BoardViewMapExec = .text:0x80072B54; // type:function size:0xC8 +ExecMapView = .text:0x80072C1C; // type:function size:0x398 scope:local +ExecStarView = .text:0x80072FB4; // type:function size:0x170 scope:local +ExecOverheadView = .text:0x80073124; // type:function size:0x158 scope:local +DestroyView = .text:0x8007327C; // type:function size:0x80 scope:local +SetTargetView = .text:0x800732FC; // type:function size:0x178 scope:local +DestroyFocus = .text:0x80073474; // type:function size:0x4C scope:local +CreateButtonWin = .text:0x800734C0; // type:function size:0x110 scope:local +DestroyButtonWin = .text:0x800735D0; // type:function size:0x38 scope:local +InitOverheadView = .text:0x80073608; // type:function size:0x374 scope:local +DestroyOverheadView = .text:0x8007397C; // type:function size:0x24 scope:local +UpdateOverheadView = .text:0x800739A0; // type:function size:0x400 scope:local +WaitOverheadView = .text:0x80073DA0; // type:function size:0x30 scope:local +BoardSpaceWalkEventFuncSet = .text:0x80073DD0; // type:function size:0x8 +BoardSpaceWalkMiniEventFuncSet = .text:0x80073DD8; // type:function size:0x8 +BoardSpaceLandEventFuncSet = .text:0x80073DE0; // type:function size:0x8 +BoardSpaceWalkEventExec = .text:0x80073DE8; // type:function size:0x48 +BoardSpaceWalkMiniEventExec = .text:0x80073E30; // type:function size:0x60 +BoardSpaceCountGet = .text:0x80073E90; // type:function size:0x10 +BoardSpaceGet = .text:0x80073EA0; // type:function size:0x44 +BoardSpaceAttrSet = .text:0x80073EE4; // type:function size:0x18 +BoardSpaceAttrReset = .text:0x80073EFC; // type:function size:0x18 +BoardSpaceFlagGet = .text:0x80073F14; // type:function size:0x48 +BoardSpaceTypeGet = .text:0x80073F5C; // type:function size:0x48 +BoardSpaceTypeSet = .text:0x80073FA4; // type:function size:0x48 +BoardSpacePosGet = .text:0x80073FEC; // type:function size:0x8C +BoardSpaceCornerPosGet = .text:0x80074078; // type:function size:0x2C8 +BoardSpaceRotGet = .text:0x80074340; // type:function size:0x8C +BoardSpaceFlagSearch = .text:0x800743CC; // type:function size:0xA0 +BoardSpaceFlagPosGet = .text:0x8007446C; // type:function size:0x134 +BoardSpaceLinkFlagSearch = .text:0x800745A0; // type:function size:0x134 +BoardSpaceLinkTypeListGet = .text:0x800746D4; // type:function size:0x148 +BoardSpaceLinkTargetListGet = .text:0x8007481C; // type:function size:0x104 +BoardSpaceLinkTypeSearch = .text:0x80074920; // type:function size:0x110 +BoardSpaceLinkTransformGet = .text:0x80074A30; // type:function size:0x1FC +BoardSpaceHostSet = .text:0x80074C2C; // type:function size:0x1BC +BoardSpaceStarSetIndex = .text:0x80074DE8; // type:function size:0x4AC +BoardSpaceStarGetNext = .text:0x80075294; // type:function size:0x344 +BoardSpaceStarGetRandom = .text:0x800755D8; // type:function size:0x9C +BoardSpaceStarMove = .text:0x80075674; // type:function size:0xF0 +BoardSpaceStarGet = .text:0x80075764; // type:function size:0x1C +BoardSpaceStarGetCurr = .text:0x80075780; // type:function size:0x3C +BoardSpaceStarCheck = .text:0x800757BC; // type:function size:0x110 +BoardSpaceLandExec = .text:0x800758CC; // type:function size:0x474 +BoardSpaceWalkExec = .text:0x80075D40; // type:function size:0x2A4 +BoardSpaceBlockExec = .text:0x80075FE4; // type:function size:0x180 +ExecPipeSpace = .text:0x80076164; // type:function size:0x268 scope:local +BoardSpaceTypeForce = .text:0x800763CC; // type:function size:0x5C +BoardSpaceHide = .text:0x80076428; // type:function size:0x48 +DrawSpaces = .text:0x80076470; // type:function size:0x9E8 scope:local +BoardSpaceRead = .text:0x80076E58; // type:function size:0x174 +BoardSpaceCameraSet = .text:0x80076FCC; // type:function size:0x2C +BoardSpaceBlockPosSet = .text:0x80076FF8; // type:function size:0xD0 +BoardSpaceInit = .text:0x800770C8; // type:function size:0x750 +BoardSpaceDestroy = .text:0x80077818; // type:function size:0x70 +BoardShopHostSet = .text:0x80077888; // type:function size:0x8 +BoardShopHostGet = .text:0x80077890; // type:function size:0x8 +BoardShopInit = .text:0x80077898; // type:function size:0xD4 +BoardShopKill = .text:0x8007796C; // type:function size:0xA0 +BoardShopExec = .text:0x80077A0C; // type:function size:0x9C +ExecShop = .text:0x80077AA8; // type:function size:0x800 scope:local +DestroyShop = .text:0x800782A8; // type:function size:0xD4 scope:local +PopupShop = .text:0x8007837C; // type:function size:0x1B4 scope:local +CloseShop = .text:0x80078530; // type:function size:0xBC scope:local +CreateShopWin = .text:0x800785EC; // type:function size:0x13C scope:local +UpdateShopWin = .text:0x80078728; // type:function size:0x314 scope:local +SetShopWinItem = .text:0x80078A3C; // type:function size:0x168 scope:local +PauseShopWin = .text:0x80078BA4; // type:function size:0x2C scope:local +StartItemGive = .text:0x80078BD0; // type:function size:0x18C scope:local +ExecItemGive = .text:0x80078D5C; // type:function size:0x168 scope:local +MoveItemGive = .text:0x80078EC4; // type:function size:0x34C scope:local +ShrinkItemGive = .text:0x80079210; // type:function size:0x144 scope:local +WaitItemGive = .text:0x80079354; // type:function size:0x6C scope:local +GetShopItems = .text:0x800793C0; // type:function size:0x280 scope:local +GetDefaultShopItems = .text:0x80079640; // type:function size:0xA0 scope:local +SortShopItems = .text:0x800796E0; // type:function size:0x14C scope:local +DecideComEnter = .text:0x8007982C; // type:function size:0x1C8 scope:local +DecideComBuy = .text:0x800799F4; // type:function size:0x60 scope:local +GetComItemChoice = .text:0x80079A54; // type:function size:0x158 scope:local +WaitItemChoice = .text:0x80079BAC; // type:function size:0x30 scope:local +CreateShopItemChoice = .text:0x80079BDC; // type:function size:0x238 scope:local +GetShopItemChoice = .text:0x80079E14; // type:function size:0xC scope:local +GetShopItemWinChoice = .text:0x80079E20; // type:function size:0x38 scope:local +MoveShopItemChoice = .text:0x80079E58; // type:function size:0x24C scope:local +UpdateShopItemChoice = .text:0x8007A0A4; // type:function size:0x104 scope:local +GetShopItemChoiceInput = .text:0x8007A1A8; // type:function size:0x30 scope:local +BoardShopTutorialExec = .text:0x8007A1D8; // type:function size:0x4DC +BoardLotteryHostSet = .text:0x8007A6B4; // type:function size:0x8 +BoardLotteryHostGet = .text:0x8007A6BC; // type:function size:0x8 +BoardLotteryExec = .text:0x8007A6C4; // type:function size:0x8C +BoardLotteryInit = .text:0x8007A750; // type:function size:0x16C +CreateModel = .text:0x8007A8BC; // type:function size:0x3B4 scope:local +KillModel = .text:0x8007AC70; // type:function size:0x1FC scope:local +BoardLotteryKill = .text:0x8007AE6C; // type:function size:0x64 +DestroyLottery = .text:0x8007AED0; // type:function size:0xB0 scope:local +ExecLottery = .text:0x8007AF80; // type:function size:0x798 scope:local +DoMiniJumpUp = .text:0x8007B718; // type:function size:0x20C scope:local +DoMiniJumpDown = .text:0x8007B924; // type:function size:0x1BC scope:local +PayEnterFee = .text:0x8007BAE0; // type:function size:0xF0 scope:local +ShowTicket = .text:0x8007BBD0; // type:function size:0x3C8 scope:local +SetupTicket = .text:0x8007BF98; // type:function size:0x140 scope:local +ExecBallGame = .text:0x8007C0D8; // type:function size:0x914 scope:local +SetBallPrize = .text:0x8007C9EC; // type:function size:0xC8 scope:local +ExecBallPrize = .text:0x8007CAB4; // type:function size:0x27C scope:local +ExecScratchTicket = .text:0x8007CD30; // type:function size:0x30C scope:local +ExecScratch = .text:0x8007D03C; // type:function size:0x3AC scope:local +KillScratch = .text:0x8007D3E8; // type:function size:0x6C scope:local +ExecScratchSpr = .text:0x8007D454; // type:function size:0x21C scope:local +HideScratchSpr = .text:0x8007D670; // type:function size:0x68 scope:local +InitScratchSpr = .text:0x8007D6D8; // type:function size:0x288 scope:local +ExecScratchPick = .text:0x8007D960; // type:function size:0x3DC scope:local +InitScratchPick = .text:0x8007DD3C; // type:function size:0x14C scope:local +InitTicketPrizes = .text:0x8007DE88; // type:function size:0xD0 scope:local +ExecTicketFocus = .text:0x8007DF58; // type:function size:0x160 scope:local +ScratchTicketCheckDone = .text:0x8007E0B8; // type:function size:0xA8 scope:local +TicketGetPixel = .text:0x8007E160; // type:function size:0x84 scope:local +TicketUpdate = .text:0x8007E1E4; // type:function size:0x6B0 scope:local +ExecCoinPrize = .text:0x8007E894; // type:function size:0x440 scope:local +ExecItemPrize = .text:0x8007ECD4; // type:function size:0x338 scope:local +KillCoin = .text:0x8007F00C; // type:function size:0x68 scope:local +ExecPrize = .text:0x8007F074; // type:function size:0x4C0 scope:local +ExecLose = .text:0x8007F534; // type:function size:0xA4 scope:local +CreateLotteryWin = .text:0x8007F5D8; // type:function size:0xFC scope:local +KillLotteryWin = .text:0x8007F6D4; // type:function size:0x38 scope:local +BoardLotteryTutorialExec = .text:0x8007F70C; // type:function size:0x2BC +BoardLandBlueExec = .text:0x8007F9C8; // type:function size:0x184 +BoardLandRedExec = .text:0x8007FB4C; // type:function size:0x19C +BoardCoinChgCreate = .text:0x8007FCE8; // type:function size:0x1E8 +BoardCoinChgExist = .text:0x8007FED0; // type:function size:0x6C +BoardCoinChgHide = .text:0x8007FF3C; // type:function size:0x60 +CreateCoinChg = .text:0x8007FF9C; // type:function size:0x23C scope:local +UpdateCoinChg = .text:0x800801D8; // type:function size:0x198 scope:local +CoinChgAppear = .text:0x80080370; // type:function size:0x1B8 scope:local +CoinChgSeparate = .text:0x80080528; // type:function size:0x29C scope:local +CoinChgShow = .text:0x800807C4; // type:function size:0x1A8 scope:local +CoinChgDisappear = .text:0x8008096C; // type:function size:0x260 scope:local +BoardWarpExec = .text:0x80080BCC; // type:function size:0xA4 +WarpProcess = .text:0x80080C70; // type:function size:0x250 scope:local +WarpKill = .text:0x80080EC0; // type:function size:0x5C scope:local +WarpInit = .text:0x80080F1C; // type:function size:0x118 scope:local +WarpLaunch = .text:0x80081034; // type:function size:0xBC scope:local +WarpStartImpact = .text:0x800810F0; // type:function size:0x1B0 scope:local +WarpFall = .text:0x800812A0; // type:function size:0xA4 scope:local +WarpImpact = .text:0x80081344; // type:function size:0x200 scope:local +BoardCharWheelInit = .text:0x80081544; // type:function size:0x11C +BoardCharWheelCheck = .text:0x80081660; // type:function size:0x34 +BoardCharWheelWait = .text:0x80081694; // type:function size:0x50 +BoardCharWheelResultGet = .text:0x800816E4; // type:function size:0x18 +BoardCharWheelSpeedSet = .text:0x800816FC; // type:function size:0x1C +ExecCharWheel = .text:0x80081718; // type:function size:0x118 scope:local +InitCharWheel = .text:0x80081830; // type:function size:0x754 scope:local +UpdateCharWheel = .text:0x80081F84; // type:function size:0x320 scope:local +StopCharWheel = .text:0x800822A4; // type:function size:0x164 scope:local +GrowCharWheel = .text:0x80082408; // type:function size:0x12C scope:local +ShrinkCharWheel = .text:0x80082534; // type:function size:0x10C scope:local +KillCharWheelSpr = .text:0x80082640; // type:function size:0x38 scope:local +SetCharWheelChars = .text:0x80082678; // type:function size:0xBC scope:local +GetInput = .text:0x80082734; // type:function size:0x224 scope:local +BoardCharWheelTargetSet = .text:0x80082958; // type:function size:0x10 +GetComDelay = .text:0x80082968; // type:function size:0x148 scope:local +GetComInput = .text:0x80082AB0; // type:function size:0x8C scope:local +BoardMushroomExec = .text:0x80082B3C; // type:function size:0xA4 +MushroomMain = .text:0x80082BE0; // type:function size:0x38C scope:local +KillMushroom = .text:0x80082F6C; // type:function size:0x58 scope:local +BoxMain = .text:0x80082FC4; // type:function size:0x118 scope:local +ShowBox = .text:0x800830DC; // type:function size:0x114 scope:local +ExitBox = .text:0x800831F0; // type:function size:0x160 scope:local +HideBox = .text:0x80083350; // type:function size:0x68 scope:local +CenterBox = .text:0x800833B8; // type:function size:0xD4 scope:local +InitBox = .text:0x8008348C; // type:function size:0x2EC scope:local +MarkKillBox = .text:0x80083778; // type:function size:0x64 scope:local +SetBoxHide = .text:0x800837DC; // type:function size:0x34 scope:local +SetBoxCenter = .text:0x80083810; // type:function size:0x54 scope:local +SetBoxShow = .text:0x80083864; // type:function size:0x34 scope:local +WaitBoxOpen = .text:0x80083898; // type:function size:0x5C scope:local +WaitBoxCenter = .text:0x800838F4; // type:function size:0x58 scope:local +CheckBox = .text:0x8008394C; // type:function size:0x60 scope:local +DoItemGive = .text:0x800839AC; // type:function size:0x240 scope:local +StartItemGive = .text:0x80083BEC; // type:function size:0xD4 scope:local +KillItemMdl = .text:0x80083CC0; // type:function size:0x38 scope:local +ShowItemMdl = .text:0x80083CF8; // type:function size:0x48 scope:local +WaitItemGive = .text:0x80083D40; // type:function size:0x48 scope:local +BoardStarHostSet = .text:0x80083D88; // type:function size:0xA8 +BoardStarHostMdlGet = .text:0x80083E30; // type:function size:0x8 +BoardStarExec = .text:0x80083E38; // type:function size:0xCC +ExecStar = .text:0x80083F04; // type:function size:0x8F4 scope:local +DestroyStar = .text:0x800847F8; // type:function size:0x84 scope:local +GiveStarMain = .text:0x8008487C; // type:function size:0x160 scope:local +UpdateStarAngle = .text:0x800849DC; // type:function size:0x144 scope:local +InitGiveStar = .text:0x80084B20; // type:function size:0x10C scope:local +MoveGiveStar = .text:0x80084C2C; // type:function size:0x180 scope:local +ShrinkGiveStar = .text:0x80084DAC; // type:function size:0x204 scope:local +StopGiveStar = .text:0x80084FB0; // type:function size:0x38 scope:local +InitGiveStarEffect = .text:0x80084FE8; // type:function size:0xB4 scope:local +KillGiveStarEffect = .text:0x8008509C; // type:function size:0x40 scope:local +BoardStarGive = .text:0x800850DC; // type:function size:0x31C +BoardStarShowNext = .text:0x800853F8; // type:function size:0x628 +ShowNextUpdate = .text:0x80085A20; // type:function size:0x130 scope:local +HideNextHost = .text:0x80085B50; // type:function size:0x24 scope:local +BoardRollExec = .text:0x80085B74; // type:function size:0x1EC +RollWinCreate = .text:0x80085D60; // type:function size:0x21C scope:local +BoardRollKill = .text:0x80085F7C; // type:function size:0x38 +BoardRollUPauseSet = .text:0x80085FB4; // type:function size:0x84 +BoardRollWinDispSet = .text:0x80086038; // type:function size:0x4C +RollMain = .text:0x80086084; // type:function size:0x314 scope:local +DiceCreate = .text:0x80086398; // type:function size:0x280 scope:local +DoInput = .text:0x80086618; // type:function size:0x1C8 scope:local +DiceWaitFull = .text:0x800867E0; // type:function size:0x60 scope:local +DiceSetHit = .text:0x80086840; // type:function size:0x130 scope:local +RollDestroy = .text:0x80086970; // type:function size:0x60 scope:local +DiceMain = .text:0x800869D0; // type:function size:0x7E4 scope:local +DicePause = .text:0x800871B4; // type:function size:0x40 scope:local +DicePauseAll = .text:0x800871F4; // type:function size:0x90 scope:local +BoardDiceEffectCreate = .text:0x80087284; // type:function size:0xE0 +DiceHideEffect = .text:0x80087364; // type:function size:0x84 scope:local +BoardDicePauseAll = .text:0x800873E8; // type:function size:0x94 +BoardDiceDoneCheck = .text:0x8008747C; // type:function size:0x8C +BoardDiceStop = .text:0x80087508; // type:function size:0x58 +BoardDiceVisibleSet = .text:0x80087560; // type:function size:0xC0 +BoardDiceValueSet = .text:0x80087620; // type:function size:0x200 +DiceDigitMain = .text:0x80087820; // type:function size:0xAC scope:local +DiceDigitKill = .text:0x800878CC; // type:function size:0x68 scope:local +DiceKill = .text:0x80087934; // type:function size:0xB4 scope:local +DiceDigitMove = .text:0x800879E8; // type:function size:0x390 scope:local +DiceDigitRotate = .text:0x80087D78; // type:function size:0x110 scope:local +SameRollExec = .text:0x80087E88; // type:function size:0x248 scope:local +GetBtnRoll = .text:0x800880D0; // type:function size:0x110 scope:local +GetComBtnRoll = .text:0x800881E0; // type:function size:0x88 scope:local +BoardRollTutorialSet = .text:0x80088268; // type:function size:0x4C +BoardItemModelGet = .text:0x800882B4; // type:function size:0x90 +BoardItemNameGet = .text:0x80088344; // type:function size:0x98 +BoardStatusStopCheck = .text:0x800883DC; // type:function size:0x48 +BoardStatusVisibleGet = .text:0x80088424; // type:function size:0x1C +BoardStatusShowSetAll = .text:0x80088440; // type:function size:0x48 +BoardStatusItemSet = .text:0x80088488; // type:function size:0xFC +BoardStatusShowSetForce = .text:0x80088584; // type:function size:0x24 +BoardStatusGraySet = .text:0x800885A8; // type:function size:0x134 +BoardStatusShowSet = .text:0x800886DC; // type:function size:0x138 +BoardStatusItemHideSet = .text:0x80088814; // type:function size:0x50 +BoardStatusTargetPosSet = .text:0x80088864; // type:function size:0x44 +BoardStatusPosGet = .text:0x800888A8; // type:function size:0x34 +BoardStatusPosSet = .text:0x800888DC; // type:function size:0x6C +BoardStatusHammerCreate = .text:0x80088948; // type:function size:0x158 +BoardStatusHammerShowSet = .text:0x80088AA0; // type:function size:0x94 +BoardStatusHammerKill = .text:0x80088B34; // type:function size:0x6C +BoardStatusKill = .text:0x80088BA0; // type:function size:0x90 +BoardStatusCreate = .text:0x80088C30; // type:function size:0x20C +KillAllBoardStatus = .text:0x80088E3C; // type:function size:0x98 scope:local +CreateBoardStatusSprite = .text:0x80088ED4; // type:function size:0x36C scope:local +BoardSpriteCreate = .text:0x80089240; // type:function size:0x8C +UpdateBoardStatus = .text:0x800892CC; // type:function size:0x210 scope:local +BoardStatusProc = .text:0x800894DC; // type:function size:0x40 scope:local +MoveBoardStatus = .text:0x8008951C; // type:function size:0x180 scope:local +BoardSpriteDigitUpdate = .text:0x8008969C; // type:function size:0x140 +UpdateStatusItem = .text:0x800897DC; // type:function size:0xB8 scope:local +BoardPickerCreate = .text:0x80089894; // type:function size:0x29C +BoardPickerBackFlagSet = .text:0x80089B30; // type:function size:0x74 +BoardPickerDoneCheck = .text:0x80089BA4; // type:function size:0x1C +BoardPickerPosGet = .text:0x80089BC0; // type:function size:0x48 +BoardPickerChoiceGet = .text:0x80089C08; // type:function size:0xC +UpdatePicker = .text:0x80089C14; // type:function size:0xFC scope:local +UpdatePickerInput = .text:0x80089D10; // type:function size:0x15C scope:local +MovePicker = .text:0x80089E6C; // type:function size:0x110 scope:local +UpdateComPickerButton = .text:0x80089F7C; // type:function size:0x30 scope:local +CheckPickerButton = .text:0x80089FAC; // type:function size:0x19C scope:local +BoardYourTurnExec = .text:0x8008A148; // type:function size:0x1E4 +UpdateYourTurn = .text:0x8008A32C; // type:function size:0xD4 scope:local +GrowYourTurn = .text:0x8008A400; // type:function size:0xD8 scope:local +WaitYourTurn = .text:0x8008A4D8; // type:function size:0xEC scope:local +ShrinkYourTurn = .text:0x8008A5C4; // type:function size:0xC8 scope:local +BoardItemUseExec = .text:0x8008A68C; // type:function size:0x80 +ItemUseTeamProc = .text:0x8008A70C; // type:function size:0x4A8 scope:local +ItemUseProc = .text:0x8008ABB4; // type:function size:0x370 scope:local +FinishItemUse = .text:0x8008AF24; // type:function size:0x174 scope:local +DestroyItemUse = .text:0x8008B098; // type:function size:0x78 scope:local +BoardMakeRandomItem = .text:0x8008B110; // type:function size:0x74 +TeamItemPosSet = .text:0x8008B184; // type:function size:0xE8 scope:local +ExecItemPick = .text:0x8008B26C; // type:function size:0x650 scope:local +UpdateItemPick = .text:0x8008B8BC; // type:function size:0x3AC scope:local +MakeItemPickSpace = .text:0x8008BC68; // type:function size:0x420 scope:local +SetItemUIStatus = .text:0x8008C088; // type:function size:0x248 scope:local +BoardItemGetDestPos = .text:0x8008C2D0; // type:function size:0xA8 +ItemGetPos = .text:0x8008C378; // type:function size:0x104 scope:local +BoardItemStatusKill = .text:0x8008C47C; // type:function size:0x400 +UpdateItemPickGfx = .text:0x8008C87C; // type:function size:0x388 scope:local +UpdateItemPickup = .text:0x8008CC04; // type:function size:0x674 scope:local +CheckItemWindow = .text:0x8008D278; // type:function size:0x50 scope:local +HideItemWindow = .text:0x8008D2C8; // type:function size:0x38 scope:local +CreateItemWindow = .text:0x8008D300; // type:function size:0x5A4 scope:local +CheckItemWindowSlide = .text:0x8008D8A4; // type:function size:0x58 scope:local +KillItemWindow = .text:0x8008D8FC; // type:function size:0x38 scope:local +SetItemWindowCurr = .text:0x8008D934; // type:function size:0xA4 scope:local +UpdateItemWindow = .text:0x8008D9D8; // type:function size:0x350 scope:local +CreatePickerWindow = .text:0x8008DD28; // type:function size:0x11C scope:local +KillPickerWindow = .text:0x8008DE44; // type:function size:0x44 scope:local +BoardBlockExec = .text:0x8008DE88; // type:function size:0x84 +BlockProc = .text:0x8008DF0C; // type:function size:0x358 scope:local +DestroyBlock = .text:0x8008E264; // type:function size:0x54 scope:local +CreateBlockObj = .text:0x8008E2B8; // type:function size:0x1F4 scope:local +ExecBlockObj = .text:0x8008E4AC; // type:function size:0x12C scope:local +DestroyBlockObj = .text:0x8008E5D8; // type:function size:0x38 scope:local +SpawnBlock = .text:0x8008E610; // type:function size:0x120 scope:local +HitBlock = .text:0x8008E730; // type:function size:0xCC scope:local +OpenBlock = .text:0x8008E7FC; // type:function size:0x140 scope:local +SetBlockOpen = .text:0x8008E93C; // type:function size:0x2C scope:local +SetBlockStop = .text:0x8008E968; // type:function size:0x2C scope:local +WaitBlockHit = .text:0x8008E994; // type:function size:0x48 scope:local +CreateCoinMdl = .text:0x8008E9DC; // type:function size:0x94 scope:local +KillCoinMdl = .text:0x8008EA70; // type:function size:0x9C scope:local +PopupCoin = .text:0x8008EB0C; // type:function size:0x10C scope:local +PopupCoinExec = .text:0x8008EC18; // type:function size:0x130 scope:local +BoardItemStart = .text:0x8008ED48; // type:function size:0x74 +BoardItemDoneCheck = .text:0x8008EDBC; // type:function size:0x1C +BoardItemPlayerRestore = .text:0x8008EDD8; // type:function size:0x6C +ItemProcess = .text:0x8008EE44; // type:function size:0x64 scope:local +RestoreProcess = .text:0x8008EEA8; // type:function size:0x64 scope:local +ItemDestroy = .text:0x8008EF0C; // type:function size:0xC scope:local +RestoreDestroy = .text:0x8008EF18; // type:function size:0xC scope:local +ItemSizeShowAnim = .text:0x8008EF24; // type:function size:0x180 scope:local +ItemRotProc = .text:0x8008F0A4; // type:function size:0x1BC scope:local +ItemShowProc = .text:0x8008F260; // type:function size:0x220 scope:local +ItemGetTarget = .text:0x8008F480; // type:function size:0x374 scope:local +ItemSizeSet = .text:0x8008F7F4; // type:function size:0x204 scope:local +ExecItemMini = .text:0x8008F9F8; // type:function size:0xA4 scope:local +ExecItemMega = .text:0x8008FA9C; // type:function size:0xA4 scope:local +ExecItemMiniSuper = .text:0x8008FB40; // type:function size:0xA4 scope:local +ExecItemMegaSuper = .text:0x8008FBE4; // type:function size:0xA4 scope:local +ExecItemHammer = .text:0x8008FC88; // type:function size:0x584 scope:local +ExecItemPipe = .text:0x8009020C; // type:function size:0xD34 scope:local +ExecItemSwap = .text:0x80090F40; // type:function size:0xEBC scope:local +ExecItemSpark = .text:0x80091DFC; // type:function size:0x4FC scope:local +ExecItemLight = .text:0x800922F8; // type:function size:0xC8 scope:local +ExecItemWhistle = .text:0x800923C0; // type:function size:0xE3C scope:local +ExecItemBowser = .text:0x800931FC; // type:function size:0x3D4 scope:local +ExecItemBooBall = .text:0x800935D0; // type:function size:0x1370 scope:local +LampParticleUpdate = .text:0x80094940; // type:function size:0x488 scope:local +GenieParticleUpdate = .text:0x80094DC8; // type:function size:0x388 scope:local +GenieCameraProc = .text:0x80095150; // type:function size:0xB0 scope:local +GenieCameraCalc = .text:0x80095200; // type:function size:0x7A4 scope:local +GenieSceneExec = .text:0x800959A4; // type:function size:0x9D8 scope:local +ExecItemGenie = .text:0x8009637C; // type:function size:0x628 scope:local +BoardItemBagItemSet = .text:0x800969A4; // type:function size:0x3C +ExecItemBagJump = .text:0x800969E0; // type:function size:0x13C scope:local +ExecItemBagShow = .text:0x80096B1C; // type:function size:0xDC scope:local +ExecItemBag = .text:0x80096BF8; // type:function size:0x584 scope:local +RestoreItemNull = .text:0x8009717C; // type:function size:0x1C scope:local +RestoreItemMini = .text:0x80097198; // type:function size:0x2C scope:local +RestoreItemMega = .text:0x800971C4; // type:function size:0x2C scope:local +RestoreItemMiniSuper = .text:0x800971F0; // type:function size:0x2C scope:local +RestoreItemMegaSuper = .text:0x8009721C; // type:function size:0x2C scope:local +RestoreItemBowser = .text:0x80097248; // type:function size:0x284 scope:local +BoardBowserExec = .text:0x800974CC; // type:function size:0x144 +ExecBowser = .text:0x80097610; // type:function size:0x28C scope:local +ExecBowserMain = .text:0x8009789C; // type:function size:0x208 scope:local +ExecMGReturn = .text:0x80097AA4; // type:function size:0x1DC scope:local +DestroyBowser = .text:0x80097C80; // type:function size:0x30 scope:local +SquishPlayers = .text:0x80097CB0; // type:function size:0x148 scope:local +ExecBowserSpecial = .text:0x80097DF8; // type:function size:0x1B4 scope:local +ExecBowserGame = .text:0x80097FAC; // type:function size:0x250 scope:local +DoMGReturnEffect = .text:0x800981FC; // type:function size:0x220 scope:local +ExecBowserShuffle = .text:0x8009841C; // type:function size:0x2B0 scope:local +ExecBowserRevo = .text:0x800986CC; // type:function size:0x160 scope:local +ExecBowserSuit = .text:0x8009882C; // type:function size:0xB8 scope:local +CheckSuitGive = .text:0x800988E4; // type:function size:0x1C scope:local +StartSuitGive = .text:0x80098900; // type:function size:0x148 scope:local +SuitGiveMain = .text:0x80098A48; // type:function size:0x210 scope:local +CreateBowserObj = .text:0x80098C58; // type:function size:0x228 scope:local +ExecBowserObj = .text:0x80098E80; // type:function size:0x230 scope:local +ExecBowserFall = .text:0x800990B0; // type:function size:0x270 scope:local +ExecBowserLaugh = .text:0x80099320; // type:function size:0x58 scope:local +ExecBowserFire = .text:0x80099378; // type:function size:0x44 scope:local +ExecBowserJump = .text:0x800993BC; // type:function size:0x150 scope:local +ExecBowserPowerUp = .text:0x8009950C; // type:function size:0x128 scope:local +SetBowserState = .text:0x80099634; // type:function size:0x34 scope:local +CheckBowserIdle = .text:0x80099668; // type:function size:0x5C scope:local +CreateMiniBowser = .text:0x800996C4; // type:function size:0xD4 scope:local +CheckMiniBowser = .text:0x80099798; // type:function size:0x1C scope:local +ExecMiniBowser = .text:0x800997B4; // type:function size:0x18C scope:local +CreateBowserEvent = .text:0x80099940; // type:function size:0x1E8 scope:local +CheckBowserEvent = .text:0x80099B28; // type:function size:0x38 scope:local +StopBowserEvent = .text:0x80099B60; // type:function size:0x24 scope:local +ExecBowserEvent = .text:0x80099B84; // type:function size:0xEC scope:local +ShowBowserEvent = .text:0x80099C70; // type:function size:0x1C8 scope:local +HideBowserEvent = .text:0x80099E38; // type:function size:0x108 scope:local +ConfigBowserEvent = .text:0x80099F40; // type:function size:0x160 scope:local +CreatePlayerMot = .text:0x8009A0A0; // type:function size:0x1AC scope:local +KillPlayerMot = .text:0x8009A24C; // type:function size:0xB8 scope:local +InitBowserFire = .text:0x8009A304; // type:function size:0x90 scope:local +BowserFireHook = .text:0x8009A394; // type:function size:0x160 scope:local +SpawnBowserFire = .text:0x8009A4F4; // type:function size:0xE4 scope:local +CheckBowserFire = .text:0x8009A5D8; // type:function size:0xCC scope:local +KillBowserFire = .text:0x8009A6A4; // type:function size:0x40 scope:local +ExecMiniBowserEvent = .text:0x8009A6E4; // type:function size:0x188 scope:local +MiniBowserTake = .text:0x8009A86C; // type:function size:0x2C4 scope:local +MiniBowserTakeAll = .text:0x8009AB30; // type:function size:0x2B8 scope:local +MiniBowserBalloonStop = .text:0x8009ADE8; // type:function size:0x24 scope:local +GetMiniBowserBalloonState = .text:0x8009AE0C; // type:function size:0xC scope:local +SetMiniBowserBalloonState = .text:0x8009AE18; // type:function size:0x10 scope:local +CreateMiniBowserBalloon = .text:0x8009AE28; // type:function size:0x14C scope:local +ExecMiniBowserBalloon = .text:0x8009AF74; // type:function size:0x120 scope:local +MiniBowserBalloonHover = .text:0x8009B094; // type:function size:0xB4 scope:local +MiniBowserBalloonFall = .text:0x8009B148; // type:function size:0x88 scope:local +MiniBowserBalloonRaise = .text:0x8009B1D0; // type:function size:0x80 scope:local +SetMiniBowserMotion = .text:0x8009B250; // type:function size:0xD8 scope:local +SetMiniBowserMotionPause = .text:0x8009B328; // type:function size:0x6C scope:local +WaitMiniBowserMotion = .text:0x8009B394; // type:function size:0x60 scope:local +BoardBattleExec = .text:0x8009B3F4; // type:function size:0x124 +DestroyBattle = .text:0x8009B518; // type:function size:0x2C scope:local +ExecBattle = .text:0x8009B544; // type:function size:0x708 scope:local +TakeCoins = .text:0x8009BC4C; // type:function size:0x1D4 scope:local +InitExplode = .text:0x8009BE20; // type:function size:0x1FC scope:local +CheckExplode = .text:0x8009C01C; // type:function size:0x24 scope:local +UpdateExplode = .text:0x8009C040; // type:function size:0x2D0 scope:local +CreateBattleMain = .text:0x8009C310; // type:function size:0x1E8 scope:local +UpdateBattleMain = .text:0x8009C4F8; // type:function size:0x1A0 scope:local +DescendBattleBomb = .text:0x8009C698; // type:function size:0x64 scope:local +EndBattle = .text:0x8009C6FC; // type:function size:0x88 scope:local +ShowBattleGame = .text:0x8009C784; // type:function size:0x124 scope:local +RaiseBattleGame = .text:0x8009C8A8; // type:function size:0x8C scope:local +UpdateBattleCoin = .text:0x8009C934; // type:function size:0x260 scope:local +ShowBattleCoin = .text:0x8009CB94; // type:function size:0x128 scope:local +InitBattleGameSpr = .text:0x8009CCBC; // type:function size:0x12C scope:local +HideBattleSpr = .text:0x8009CDE8; // type:function size:0x58 scope:local +VibratePad = .text:0x8009CE40; // type:function size:0x64 scope:local +StopBattleBomb = .text:0x8009CEA4; // type:function size:0x24 scope:local +GetBattleBombState = .text:0x8009CEC8; // type:function size:0x10 scope:local +SetBattleBombState = .text:0x8009CED8; // type:function size:0x34 scope:local +SetBattleCoinValue = .text:0x8009CF0C; // type:function size:0x15C scope:local +BoardFortuneExec = .text:0x8009D068; // type:function size:0x124 +FortuneExec = .text:0x8009D18C; // type:function size:0x74 scope:local +DestroyFortune = .text:0x8009D200; // type:function size:0xC scope:local +FortuneMain = .text:0x8009D20C; // type:function size:0x340 scope:local +FortunePostMG = .text:0x8009D54C; // type:function size:0xF8 scope:local +CreateFortunePlatform = .text:0x8009D644; // type:function size:0x160 scope:local +CameraCalcFortune = .text:0x8009D7A4; // type:function size:0x5C scope:local +ExecFortunePlatform = .text:0x8009D800; // type:function size:0x198 scope:local +ExecComFortuneWin = .text:0x8009D998; // type:function size:0x18C scope:local +ConfigComFortune = .text:0x8009DB24; // type:function size:0x20C scope:local +ComFortuneAddStar = .text:0x8009DD30; // type:function size:0x78 scope:local +ComFortuneAddCoin = .text:0x8009DDA8; // type:function size:0x78 scope:local +ComFortuneSwapCoin = .text:0x8009DE20; // type:function size:0x68 scope:local +ComFortuneSwapStar = .text:0x8009DE88; // type:function size:0x68 scope:local +BoardBooCreate = .text:0x8009DEF0; // type:function size:0x11C +BoardBooKill = .text:0x8009E00C; // type:function size:0x2C +BoardBooStealTypeSet = .text:0x8009E038; // type:function size:0x2A8 +ComSetupStealPlayer = .text:0x8009E2E0; // type:function size:0x1D4 scope:local +ComSetStealPlayerInput = .text:0x8009E4B4; // type:function size:0xE8 scope:local +BoardBooStealMain = .text:0x8009E59C; // type:function size:0x280 +ExecCoinSteal = .text:0x8009E81C; // type:function size:0xC0 scope:local +ExecStarSteal = .text:0x8009E8DC; // type:function size:0xA8 scope:local +ExecLightSteal = .text:0x8009E984; // type:function size:0x94 scope:local +SetBooMode = .text:0x8009EA18; // type:function size:0x10 scope:local +CreateBallMdl = .text:0x8009EA28; // type:function size:0xBC scope:local +CreateBallView = .text:0x8009EAE4; // type:function size:0x1D4 scope:local +SetBallView = .text:0x8009ECB8; // type:function size:0xAC scope:local +SetBallActive = .text:0x8009ED64; // type:function size:0x28 scope:local +CheckBallKill = .text:0x8009ED8C; // type:function size:0x4C scope:local +BallMain = .text:0x8009EDD8; // type:function size:0x300 scope:local +BallRenderHook = .text:0x8009F0D8; // type:function size:0x4A0 scope:local +ExecBoo = .text:0x8009F578; // type:function size:0x9C scope:local +UpdateBallCamera = .text:0x8009F614; // type:function size:0x1DC scope:local +CreateBallPlayer = .text:0x8009F7F0; // type:function size:0x358 scope:local +GetBallPlayerState = .text:0x8009FB48; // type:function size:0x24 scope:local +SetBallPlayerState = .text:0x8009FB6C; // type:function size:0x2C scope:local +ExecBallPlayer = .text:0x8009FB98; // type:function size:0x214 scope:local +BallPlayerZoomOut = .text:0x8009FDAC; // type:function size:0x15C scope:local +BallPlayerScare = .text:0x8009FF08; // type:function size:0x110 scope:local +BallPlayerTurn = .text:0x800A0018; // type:function size:0x68 scope:local +BallPlayerPunch = .text:0x800A0080; // type:function size:0x1E0 scope:local +BallPlayerUseLight = .text:0x800A0260; // type:function size:0x10C scope:local +BallPlayerCatch = .text:0x800A036C; // type:function size:0x190 scope:local +BallBooCreate = .text:0x800A04FC; // type:function size:0x328 scope:local +SetBallBooState = .text:0x800A0824; // type:function size:0x170 scope:local +GetBallBooState = .text:0x800A0994; // type:function size:0x24 scope:local +ExecBallBoo = .text:0x800A09B8; // type:function size:0x128 scope:local +BallBooSpawn = .text:0x800A0AE0; // type:function size:0x54 scope:local +BallBooChase = .text:0x800A0B34; // type:function size:0x104 scope:local +BallBooBattle = .text:0x800A0C38; // type:function size:0x218 scope:local +BallBooAttack = .text:0x800A0E50; // type:function size:0xF4 scope:local +BallBooFlash = .text:0x800A0F44; // type:function size:0x178 scope:local +TakeBallCoin = .text:0x800A10BC; // type:function size:0x1B0 scope:local +ExecTakeBallCoin = .text:0x800A126C; // type:function size:0xDC scope:local +TakeBallCoinPosSet = .text:0x800A1348; // type:function size:0x9C scope:local +CheckBallCoinDone = .text:0x800A13E4; // type:function size:0x68 scope:local +TakeBallStar = .text:0x800A144C; // type:function size:0x168 scope:local +ExecTakeBallStar = .text:0x800A15B4; // type:function size:0x184 scope:local +CheckTakeBallStarDone = .text:0x800A1738; // type:function size:0x1C scope:local +BoardBooStealValueGet = .text:0x800A1754; // type:function size:0x30 +BoardBooStealLightCheck = .text:0x800A1784; // type:function size:0x20 +UpdatePlayerCoins = .text:0x800A17A4; // type:function size:0x1B0 scope:local +BoardMGSetupExec = .text:0x800A1954; // type:function size:0x60 +DestroyMGSetup = .text:0x800A19B4; // type:function size:0x1C scope:local +ExecMGSetup = .text:0x800A19D0; // type:function size:0x6FC scope:local +DetermineMGList = .text:0x800A20CC; // type:function size:0x3B0 scope:local +SetupStatusLayout = .text:0x800A247C; // type:function size:0x3A8 scope:local +GetMGType = .text:0x800A2824; // type:function size:0x388 scope:local +GetMGTypeTeam = .text:0x800A2BAC; // type:function size:0x3A4 scope:local +CreateMGSetup = .text:0x800A2F50; // type:function size:0x194 scope:local +UpdateMGSetup = .text:0x800A30E4; // type:function size:0x198 scope:local +CenterStatus = .text:0x800A327C; // type:function size:0x174 scope:local +SeparateStatus = .text:0x800A33F0; // type:function size:0x200 scope:local +PopupVS = .text:0x800A35F0; // type:function size:0x20C scope:local +FallMGType = .text:0x800A37FC; // type:function size:0x1C8 scope:local +LuckyMGFall = .text:0x800A39C4; // type:function size:0x204 scope:local +HideLuckyValue = .text:0x800A3BC8; // type:function size:0xA8 scope:local +UpdateLuckyValue = .text:0x800A3C70; // type:function size:0x430 scope:local +UpdateMGList = .text:0x800A40A0; // type:function size:0x8FC scope:local +BoardMGSetupPlayClear = .text:0x800A499C; // type:function size:0x74 +BoardMGSetupPlaySearch = .text:0x800A4A10; // type:function size:0xC8 +BoardMGSetupPlayPush = .text:0x800A4AD8; // type:function size:0xD0 +BoardMGSetupTutorialExec = .text:0x800A4BA8; // type:function size:0x2E4 +BoardBooHouseHostSet = .text:0x800A4E8C; // type:function size:0x8 +BoardBooHouseHostGet = .text:0x800A4E94; // type:function size:0x8 +BoardBooHouseCreate = .text:0x800A4E9C; // type:function size:0xB4 +BoardBooHouseKill = .text:0x800A4F50; // type:function size:0x50 +BoardBooHouseExec = .text:0x800A4FA0; // type:function size:0x94 +ExecBooHouse = .text:0x800A5034; // type:function size:0x538 scope:local +DestroyBooHouse = .text:0x800A556C; // type:function size:0xF0 scope:local +PickComStealType = .text:0x800A565C; // type:function size:0xFC scope:local +OpenBooHouse = .text:0x800A5758; // type:function size:0x3A0 scope:local +CloseBooHouse = .text:0x800A5AF8; // type:function size:0x124 scope:local +CreateBooHouseModel = .text:0x800A5C1C; // type:function size:0xB0 scope:local +KillBooHouseModel = .text:0x800A5CCC; // type:function size:0xD4 scope:local +ExecNullSteal = .text:0x800A5DA0; // type:function size:0x68 scope:local +ExecStarSteal = .text:0x800A5E08; // type:function size:0x2AC scope:local +ExecCoinSteal = .text:0x800A60B4; // type:function size:0x2AC scope:local +ApplySteal = .text:0x800A6360; // type:function size:0x188 scope:local +ApplyCoinSteal = .text:0x800A64E8; // type:function size:0x16C scope:local +ApplyStarSteal = .text:0x800A6654; // type:function size:0x164 scope:local +ApplyBooLight = .text:0x800A67B8; // type:function size:0x70 scope:local +SetBooBallPos = .text:0x800A6828; // type:function size:0x60 scope:local +BoardBooComUseCheck = .text:0x800A6888; // type:function size:0x1A8 +BoardBooHouseTutorialExec = .text:0x800A6A30; // type:function size:0x3D4 +BoardStartExec = .text:0x800A6E04; // type:function size:0x64 +DestroyStart = .text:0x800A6E68; // type:function size:0x84 scope:local +ExecStart = .text:0x800A6EEC; // type:function size:0x400 scope:local +ShowLogo = .text:0x800A72EC; // type:function size:0x2FC scope:local +FocusStart = .text:0x800A75E8; // type:function size:0x17C scope:local +CreatePlayerStart = .text:0x800A7764; // type:function size:0x2D8 scope:local +ExecPlayerStart = .text:0x800A7A3C; // type:function size:0x188 scope:local +PlayerFall = .text:0x800A7BC4; // type:function size:0x1C8 scope:local +PlayerWaitSpeak = .text:0x800A7D8C; // type:function size:0xEC scope:local +PlayerDiceFall = .text:0x800A7E78; // type:function size:0x1A8 scope:local +PlayerDiceRoll = .text:0x800A8020; // type:function size:0x454 scope:local +PlayerDiceNumShow = .text:0x800A8474; // type:function size:0xD8 scope:local +PlayerDiceNumHide = .text:0x800A854C; // type:function size:0x250 scope:local +SetPlayerStartState = .text:0x800A879C; // type:function size:0xC8 scope:local +GetPlayerStartState = .text:0x800A8864; // type:function size:0x3C scope:local +ExecStartRoll = .text:0x800A88A0; // type:function size:0x6D4 scope:local +InitCamera = .text:0x800A8F74; // type:function size:0x318 scope:local +InitHost = .text:0x800A928C; // type:function size:0xA4 scope:local +CreateTapWin = .text:0x800A9330; // type:function size:0xDC scope:local +OrderPlayers = .text:0x800A940C; // type:function size:0x21C scope:local +BoardLast5Exec = .text:0x800A9628; // type:function size:0x84 +DestroyLast5 = .text:0x800A96AC; // type:function size:0x30 scope:local +ExecLast5 = .text:0x800A96DC; // type:function size:0x1D4 scope:local +CreateLast5 = .text:0x800A98B0; // type:function size:0x184 scope:local +KillLast5 = .text:0x800A9A34; // type:function size:0x48 scope:local +InitHost = .text:0x800A9A7C; // type:function size:0x10C scope:local +KillHost = .text:0x800A9B88; // type:function size:0xA4 scope:local +Last5Main = .text:0x800A9C2C; // type:function size:0xCC0 scope:local +CheckJump = .text:0x800AA8EC; // type:function size:0xA4 scope:local +CreateLotteryDrawWheel = .text:0x800AA990; // type:function size:0x1FC scope:local +CreateLotteryDraw = .text:0x800AAB8C; // type:function size:0xD4 scope:local +UpdateLotteryDraw = .text:0x800AAC60; // type:function size:0x170 scope:local +SetLotteryDrawState = .text:0x800AADD0; // type:function size:0x88 scope:local +GetLotteryDrawState = .text:0x800AAE58; // type:function size:0x20 scope:local +KillLotteryDrawWheel = .text:0x800AAE78; // type:function size:0x24 scope:local +UpdateLotteryDrawWheel = .text:0x800AAE9C; // type:function size:0x2D0 scope:local +SetLotteryDrawWheelState = .text:0x800AB16C; // type:function size:0x1D8 scope:local +ExecLotteryDraw = .text:0x800AB344; // type:function size:0x950 scope:local +KillLotteryTicket = .text:0x800ABC94; // type:function size:0x4C scope:local +InitLotteryTicket = .text:0x800ABCE0; // type:function size:0x488 scope:local +UpdateLotteryTicket = .text:0x800AC168; // type:function size:0x2A4 scope:local +SetLotteryTicketState = .text:0x800AC40C; // type:function size:0x1C0 scope:local +GetLotteryTicketPlayer = .text:0x800AC5CC; // type:function size:0x7C scope:local +CheckLotteryTicket = .text:0x800AC648; // type:function size:0x78 scope:local +UpdateLotteryTicketMatch = .text:0x800AC6C0; // type:function size:0xB0 scope:local +StartHostMove = .text:0x800AC770; // type:function size:0x1CC scope:local +ExecHostMove = .text:0x800AC93C; // type:function size:0x228 scope:local +CheckHostMove = .text:0x800ACB64; // type:function size:0x1C scope:local +CreateStopWin = .text:0x800ACB80; // type:function size:0xC0 scope:local +CreateLast5Roulette = .text:0x800ACC40; // type:function size:0x180 scope:local +UpdateLast5Roulette = .text:0x800ACDC0; // type:function size:0x2B0 scope:local +SetLast5RouletteFade = .text:0x800AD070; // type:function size:0x44 scope:local +SetLast5RouletteState = .text:0x800AD0B4; // type:function size:0x38 scope:local +GetLast5RouletteState = .text:0x800AD0EC; // type:function size:0x38 scope:local +GetLast5RouletteResult = .text:0x800AD124; // type:function size:0x44 scope:local +CreateTeamResult = .text:0x800AD168; // type:function size:0x2B4 scope:local +CreateTeamResultWork = .text:0x800AD41C; // type:function size:0x340 scope:local +SetTeamResultTarget = .text:0x800AD75C; // type:function size:0x58 scope:local +GetTeamResultTarget = .text:0x800AD7B4; // type:function size:0x58 scope:local +KillTeamResult = .text:0x800AD80C; // type:function size:0x38 scope:local +UpdateTeamResult = .text:0x800AD844; // type:function size:0x260 scope:local +BoardPauseStart = .text:0x800ADAA4; // type:function size:0x88 +PauseExit = .text:0x800ADB2C; // type:function size:0x3C0 scope:local +PauseProcess = .text:0x800ADEEC; // type:function size:0x108 scope:local +CreatePauseScreen = .text:0x800ADFF4; // type:function size:0xABC scope:local +DeletePauseScreen = .text:0x800AEAB0; // type:function size:0x168 scope:local +SetBoxVisible = .text:0x800AEC18; // type:function size:0x58 scope:local +PauseConfigObjFunc = .text:0x800AEC70; // type:function size:0x4F4 scope:local +UpdatePauseText = .text:0x800AF164; // type:function size:0x310 scope:local +InitPauseQuit = .text:0x800AF474; // type:function size:0x264 scope:local +PauseQuitProcess = .text:0x800AF6D8; // type:function size:0x110 scope:local +DeletePauseQuit = .text:0x800AF7E8; // type:function size:0x48 scope:local +UpdatePadConfig = .text:0x800AF830; // type:function size:0xD4 scope:local +CreatePadConfig = .text:0x800AF904; // type:function size:0x1CC scope:local +ScrollInPadConfig = .text:0x800AFAD0; // type:function size:0x178 scope:local +CursorMovePadConfig = .text:0x800AFC48; // type:function size:0x238 scope:local +ChangeDiffPadConfig = .text:0x800AFE80; // type:function size:0x3B0 scope:local +ScrollOutPadConfig = .text:0x800B0230; // type:function size:0x154 scope:local +UpdatePauseBox = .text:0x800B0384; // type:function size:0x390 scope:local +UpdatePauseBoxExt = .text:0x800B0714; // type:function size:0x3E4 scope:local +ExecPauseConfig = .text:0x800B0AF8; // type:function size:0x240 scope:local +CreatePauseControlWin = .text:0x800B0D38; // type:function size:0x210 scope:local +DeletePauseControlWin = .text:0x800B0F48; // type:function size:0x70 scope:local +WaitPauseInput = .text:0x800B0FB8; // type:function size:0x1B8 scope:local +ShowPauseConfig = .text:0x800B1170; // type:function size:0x12C scope:local +CreatePadConfigSprite = .text:0x800B129C; // type:function size:0x1A4 scope:local +ShowPadConfigSprite = .text:0x800B1440; // type:function size:0x10C scope:local +PauseCreateNumber = .text:0x800B154C; // type:function size:0xDC scope:local +BoardPauseActiveCheck = .text:0x800B1628; // type:function size:0x34 +BoardPauseReqCheck = .text:0x800B165C; // type:function size:0x12C +CheckPort = .text:0x800B1788; // type:function size:0x4C scope:local +RotateBox = .text:0x800B17D4; // type:function size:0xC0 scope:local +SearchPathNodeSpace = .text:0x800B1894; // type:function size:0x60 scope:local +InitPathNode = .text:0x800B18F4; // type:function size:0x180 scope:local +FindChildNode = .text:0x800B1A74; // type:function size:0xE4 scope:local +GetNumValidLinks = .text:0x800B1B58; // type:function size:0xB4 scope:local +AddValidLinks = .text:0x800B1C0C; // type:function size:0xD0 scope:local +CheckPathSpace = .text:0x800B1CDC; // type:function size:0x30 scope:local +FindValidLink = .text:0x800B1D0C; // type:function size:0xAC scope:local +CheckEndSpace = .text:0x800B1DB8; // type:function size:0xF0 scope:local +BoardComPathShortcutLenGet = .text:0x800B1EA8; // type:function size:0x74C +BoardComPathBestGet = .text:0x800B25F4; // type:function size:0x3E4 +BoardComPathLenGet = .text:0x800B29D8; // type:function size:0x65C +CheckPath = .text:0x800B3034; // type:function size:0x488 scope:local +BoardComPathBestGetFlag = .text:0x800B34BC; // type:function size:0x45C +CheckPathFlag = .text:0x800B3918; // type:function size:0x4E0 scope:local +TutorialProcFunc = .text:0x800B3DF8; // type:function size:0x34 scope:local +BoardTutorialInit = .text:0x800B3E2C; // type:function size:0x80 +BoardTutorialKill = .text:0x800B3EAC; // type:function size:0x4C +BoardTutorialHookSet = .text:0x800B3EF8; // type:function size:0x8 +BoardTutorialHookExec = .text:0x800B3F00; // type:function size:0x44 +BoardTutorialPlayerInit = .text:0x800B3F44; // type:function size:0x78 +BoardTutorialWorkSave = .text:0x800B3FBC; // type:function size:0x10C +BoardTutorialWorkRestore = .text:0x800B40C8; // type:function size:0xBC +BoardTutorialDirInputSet = .text:0x800B4184; // type:function size:0x10 +BoardTutorialBlockSetPos = .text:0x800B4194; // type:function size:0x40 +BoardTutorialItemSet = .text:0x800B41D4; // type:function size:0x8 +BoardTutorialHostSet = .text:0x800B41DC; // type:function size:0x8 +BoardTutorialHostHide = .text:0x800B41E4; // type:function size:0x30 +PPCMfmsr = .text:0x800B4214; // type:function size:0x8 scope:global +PPCMtmsr = .text:0x800B421C; // type:function size:0x8 scope:global +PPCMfhid0 = .text:0x800B4224; // type:function size:0x8 scope:global +PPCMthid0 = .text:0x800B422C; // type:function size:0x8 +PPCMfl2cr = .text:0x800B4234; // type:function size:0x8 scope:global +PPCMtl2cr = .text:0x800B423C; // type:function size:0x8 scope:global +PPCMtdec = .text:0x800B4244; // type:function size:0x8 scope:weak +PPCSync = .text:0x800B424C; // type:function size:0x8 +PPCHalt = .text:0x800B4254; // type:function size:0x14 scope:weak +PPCMfhid2 = .text:0x800B4268; // type:function size:0x8 scope:global +PPCMthid2 = .text:0x800B4270; // type:function size:0x8 scope:global +PPCMfwpar = .text:0x800B4278; // type:function size:0xC +PPCMtwpar = .text:0x800B4284; // type:function size:0x8 scope:global +PPCDisableSpeculation = .text:0x800B428C; // type:function size:0x28 scope:global +PPCSetFpNonIEEEMode = .text:0x800B42B4; // type:function size:0x8 scope:global +OSGetConsoleType = .text:0x800B42BC; // type:function size:0x28 scope:global +ClearArena = .text:0x800B42E4; // type:function size:0x128 scope:local +InquiryCallback = .text:0x800B440C; // type:function size:0x3C scope:local +OSInit = .text:0x800B4448; // type:function size:0x3B8 scope:global +OSExceptionInit = .text:0x800B4800; // type:function size:0x280 scope:local +__OSDBINTSTART = .text:0x800B4A80; // type:label scope:global +__OSDBIntegrator = .text:0x800B4A80; // type:function size:0x24 scope:local +__OSDBINTEND = .text:0x800B4AA4; // type:label scope:global +__OSDBJump = .text:0x800B4AA4; // type:function size:0x4 scope:local +__OSDBJUMPEND = .text:0x800B4AA8; // type:label scope:global +__OSSetExceptionHandler = .text:0x800B4AA8; // type:function size:0x1C scope:global +__OSGetExceptionHandler = .text:0x800B4AC4; // type:function size:0x14 scope:global +__OSEVStart = .text:0x800B4AD8; // type:label scope:global +OSExceptionVector = .text:0x800B4AD8; // type:function size:0x9C scope:local +__DBVECTOR = .text:0x800B4B30; // type:label scope:global data:4byte +__OSEVSetNumber = .text:0x800B4B40; // type:label scope:global data:4byte +__OSEVEnd = .text:0x800B4B70; // type:label scope:global +OSDefaultExceptionHandler = .text:0x800B4B74; // type:function size:0x58 scope:global +__OSPSInit = .text:0x800B4BCC; // type:function size:0x38 scope:global +__OSGetDIConfig = .text:0x800B4C04; // type:function size:0x14 +OSInitAlarm = .text:0x800B4C18; // type:function size:0x4C scope:global +OSCreateAlarm = .text:0x800B4C64; // type:function size:0xC scope:global +InsertAlarm = .text:0x800B4C70; // type:function size:0x250 scope:local +OSSetAlarm = .text:0x800B4EC0; // type:function size:0x68 scope:global +fn_800B4F28 = .text:0x800B4F28; // type:function size:0x11C +DecrementerExceptionCallback = .text:0x800B5044; // type:function size:0x230 scope:local +DecrementerExceptionHandler = .text:0x800B5274; // type:function size:0x50 scope:local +fn_800B52C4 = .text:0x800B52C4; // type:function size:0xAC +OSAllocFromHeap = .text:0x800B5370; // type:function size:0xFC +OSAllocFixed = .text:0x800B546C; // type:function size:0x284 +OSFreeToHeap = .text:0x800B56F0; // type:function size:0x7C +OSSetCurrentHeap = .text:0x800B576C; // type:function size:0x10 +OSInitAlloc = .text:0x800B577C; // type:function size:0x70 +OSCreateHeap = .text:0x800B57EC; // type:function size:0x6C +OSCheckHeap = .text:0x800B5858; // type:function size:0x360 +OSDumpHeap = .text:0x800B5BB8; // type:function size:0x104 +OSGetArenaHi = .text:0x800B5CBC; // type:function size:0x8 scope:global +OSGetArenaLo = .text:0x800B5CC4; // type:function size:0x8 scope:global +OSSetArenaHi = .text:0x800B5CCC; // type:function size:0x8 scope:global +OSSetArenaLo = .text:0x800B5CD4; // type:function size:0x8 scope:global +__OSInitAudioSystem = .text:0x800B5CDC; // type:function size:0x1BC scope:global +__OSStopAudioSystem = .text:0x800B5E98; // type:function size:0xD8 scope:global +DCEnable = .text:0x800B5F70; // type:function size:0x14 scope:global +DCInvalidateRange = .text:0x800B5F84; // type:function size:0x30 scope:global +DCFlushRange = .text:0x800B5FB4; // type:function size:0x34 scope:global +DCStoreRange = .text:0x800B5FE8; // type:function size:0x34 +DCFlushRangeNoSync = .text:0x800B601C; // type:function size:0x30 scope:global +DCStoreRangeNoSync = .text:0x800B604C; // type:function size:0x30 +DCZeroRange = .text:0x800B607C; // type:function size:0x30 +ICInvalidateRange = .text:0x800B60AC; // type:function size:0x38 scope:global +ICFlashInvalidate = .text:0x800B60E4; // type:function size:0x10 scope:global +ICEnable = .text:0x800B60F4; // type:function size:0x14 scope:global +fn_800B6108 = .text:0x800B6108; // type:function size:0xCC +LCEnable = .text:0x800B61D4; // type:function size:0x38 +LCDisable = .text:0x800B620C; // type:function size:0x28 scope:global +LCStoreBlocks = .text:0x800B6234; // type:function size:0x24 +LCStoreData = .text:0x800B6258; // type:function size:0xAC +LCQueueWait = .text:0x800B6304; // type:function size:0x18 +L2GlobalInvalidate = .text:0x800B631C; // type:function size:0x98 scope:global +DMAErrorHandler = .text:0x800B63B4; // type:function size:0x160 scope:global +__OSCacheInit = .text:0x800B6514; // type:function size:0xF4 scope:global +__OSLoadFPUContext = .text:0x800B6608; // type:function size:0x124 scope:local +__OSSaveFPUContext = .text:0x800B672C; // type:function size:0x128 scope:local +OSSetCurrentContext = .text:0x800B6854; // type:function size:0x5C scope:global +fn_800B68B0 = .text:0x800B68B0; // type:function size:0xC +fn_800B68BC = .text:0x800B68BC; // type:function size:0x80 +OSLoadContext = .text:0x800B693C; // type:function size:0xD8 scope:global +OSClearContext = .text:0x800B6A14; // type:function size:0x24 scope:global +fn_800B6A38 = .text:0x800B6A38; // type:function size:0xBC +OSDumpContext = .text:0x800B6AF4; // type:function size:0x2A8 scope:global +OSSwitchFPUContext = .text:0x800B6D9C; // type:function size:0x84 scope:local +__OSContextInit = .text:0x800B6E20; // type:function size:0x48 scope:global +OSReport = .text:0x800B6E68; // type:function size:0x80 scope:global +OSSetErrorHandler = .text:0x800B6EE8; // type:function size:0x1C scope:global +__OSUnhandledException = .text:0x800B6F04; // type:function size:0x200 scope:global +fn_800B7104 = .text:0x800B7104; // type:function size:0x58 +OSDisableInterrupts = .text:0x800B715C; // type:function size:0x14 scope:global +OSEnableInterrupts = .text:0x800B7170; // type:function size:0x14 scope:global +OSRestoreInterrupts = .text:0x800B7184; // type:function size:0x24 scope:global +__OSSetInterruptHandler = .text:0x800B71A8; // type:function size:0x1C scope:global +fn_800B71C4 = .text:0x800B71C4; // type:function size:0x14 +__OSInterruptInit = .text:0x800B71D8; // type:function size:0x74 scope:global +fn_800B724C = .text:0x800B724C; // type:function size:0x2D8 +__OSMaskInterrupts = .text:0x800B7524; // type:function size:0x88 scope:global +__OSUnmaskInterrupts = .text:0x800B75AC; // type:function size:0x88 scope:global +fn_800B7634 = .text:0x800B7634; // type:function size:0x344 +ExternalInterruptHandler = .text:0x800B7978; // type:function size:0x50 scope:local +OSNotifyLink = .text:0x800B79C8; // type:function size:0x4 +OSNotifyUnlink = .text:0x800B79CC; // type:function size:0x4 +fn_800B79D0 = .text:0x800B79D0; // type:function size:0x274 +OSLink = .text:0x800B7C44; // type:function size:0x250 +fn_800B7E94 = .text:0x800B7E94; // type:function size:0x20C +OSUnlink = .text:0x800B80A0; // type:function size:0x94 +__OSModuleInit = .text:0x800B8134; // type:function size:0x18 scope:global +OSInitMessageQueue = .text:0x800B814C; // type:function size:0x60 +OSGetPhysicalMemSize = .text:0x800B81AC; // type:function size:0xC +OSGetConsoleSimulatedMemSize = .text:0x800B81B8; // type:function size:0xC +fn_800B81C4 = .text:0x800B81C4; // type:function size:0x3C +MEMIntrruptHandler = .text:0x800B8200; // type:function size:0x6C scope:local +Config24MB = .text:0x800B826C; // type:function size:0x80 scope:local +Config48MB = .text:0x800B82EC; // type:function size:0x80 scope:local +RealMode = .text:0x800B836C; // type:function size:0x18 scope:local +__OSInitMemoryProtection = .text:0x800B8384; // type:function size:0x120 scope:global +fn_800B84A4 = .text:0x800B84A4; // type:function size:0x70 +fn_800B8514 = .text:0x800B8514; // type:function size:0x2C +fn_800B8540 = .text:0x800B8540; // type:function size:0x14 +fn_800B8554 = .text:0x800B8554; // type:function size:0xC +__OSReboot = .text:0x800B8560; // type:function size:0x1C0 scope:global +OSRegisterResetFunction = .text:0x800B8720; // type:function size:0x84 scope:global +Reset = .text:0x800B87A4; // type:function size:0x70 scope:local +__OSDoHotReset = .text:0x800B8814; // type:function size:0x48 +OSResetSystem = .text:0x800B885C; // type:function size:0x278 scope:global +OSGetResetCode = .text:0x800B8AD4; // type:function size:0x30 scope:global +__OSResetSWInterruptHandler = .text:0x800B8B04; // type:function size:0xF4 scope:global +OSGetResetButtonState = .text:0x800B8BF8; // type:function size:0x298 +fn_800B8E90 = .text:0x800B8E90; // type:function size:0x60 +fn_800B8EF0 = .text:0x800B8EF0; // type:function size:0x118 +__OSInitSram = .text:0x800B9008; // type:function size:0x134 scope:global +__OSLockSram = .text:0x800B913C; // type:function size:0x5C scope:global +__OSLockSramEx = .text:0x800B9198; // type:function size:0x5C scope:global +fn_800B91F4 = .text:0x800B91F4; // type:function size:0x308 +__OSUnlockSram = .text:0x800B94FC; // type:function size:0x24 scope:global +__OSUnlockSramEx = .text:0x800B9520; // type:function size:0x24 scope:global +__OSSyncSram = .text:0x800B9544; // type:function size:0x10 scope:global +OSGetSoundMode = .text:0x800B9554; // type:function size:0x80 +OSSetSoundMode = .text:0x800B95D4; // type:function size:0xA4 +OSGetProgressiveMode = .text:0x800B9678; // type:function size:0x70 +OSSetProgressiveMode = .text:0x800B96E8; // type:function size:0xA4 +OSGetLanguage = .text:0x800B978C; // type:function size:0x6C +OSGetWirelessID = .text:0x800B97F8; // type:function size:0x84 +OSSetWirelessID = .text:0x800B987C; // type:function size:0xAC +OSInitStopwatch = .text:0x800B9928; // type:function size:0x2C +OSStartStopwatch = .text:0x800B9954; // type:function size:0x3C +OSStopStopwatch = .text:0x800B9990; // type:function size:0xCC +OSCheckStopwatch = .text:0x800B9A5C; // type:function size:0x70 +OSResetStopwatch = .text:0x800B9ACC; // type:function size:0x28 +OSDumpStopwatch = .text:0x800B9AF4; // type:function size:0x1A4 +__OSSystemCallVectorStart = .text:0x800B9C98; // type:label scope:global +fn_800B9C98 = .text:0x800B9C98; // type:function size:0x20 +__OSSystemCallVectorEnd = .text:0x800B9CB4; // type:label scope:global +__OSInitSystemCall = .text:0x800B9CB8; // type:function size:0x64 scope:global +__OSThreadInit = .text:0x800B9D1C; // type:function size:0x128 scope:global +OSInitThreadQueue = .text:0x800B9E44; // type:function size:0x10 scope:global +OSGetCurrentThread = .text:0x800B9E54; // type:function size:0xC +OSDisableScheduler = .text:0x800B9E60; // type:function size:0x40 scope:global +OSEnableScheduler = .text:0x800B9EA0; // type:function size:0x40 scope:global +fn_800B9EE0 = .text:0x800B9EE0; // type:function size:0x68 +__OSGetEffectivePriority = .text:0x800B9F48; // type:function size:0x3C +fn_800B9F84 = .text:0x800B9F84; // type:function size:0x1C0 +SelectThread = .text:0x800BA144; // type:function size:0x200 scope:local +__OSReschedule = .text:0x800BA344; // type:function size:0x30 scope:global +OSYieldThread = .text:0x800BA374; // type:function size:0x3C +OSCreateThread = .text:0x800BA3B0; // type:function size:0x120 +OSExitThread = .text:0x800BA4D0; // type:function size:0xE4 +OSCancelThread = .text:0x800BA5B4; // type:function size:0x1BC scope:global +OSResumeThread = .text:0x800BA770; // type:function size:0x288 +OSSuspendThread = .text:0x800BA9F8; // type:function size:0x170 +OSSleepThread = .text:0x800BAB68; // type:function size:0xEC +OSWakeupThread = .text:0x800BAC54; // type:function size:0x104 +OSSetIdleFunction = .text:0x800BAD58; // type:function size:0x90 +OSGetTime = .text:0x800BADE8; // type:function size:0x18 scope:global +OSGetTick = .text:0x800BAE00; // type:function size:0x8 scope:global +__OSGetSystemTime = .text:0x800BAE08; // type:function size:0x64 scope:global +fn_800BAE6C = .text:0x800BAE6C; // type:function size:0x19C +OSTicksToCalendarTime = .text:0x800BB008; // type:function size:0x204 +__init_user = .text:0x800BB20C; // type:function size:0x20 scope:global +__init_cpp = .text:0x800BB22C; // type:function size:0x54 scope:local +_ExitProcess = .text:0x800BB280; // type:function size:0x20 scope:global +DBInit = .text:0x800BB2A0; // type:function size:0x28 scope:global +fn_800BB2C8 = .text:0x800BB2C8; // type:function size:0x48 +__DBExceptionDestination = .text:0x800BB310; // type:function size:0x10 scope:global +__DBIsExceptionMarked = .text:0x800BB320; // type:function size:0x1C scope:global +DBPrintf = .text:0x800BB33C; // type:function size:0x50 scope:global +PSMTXIdentity = .text:0x800BB38C; // type:function size:0x2C +PSMTXCopy = .text:0x800BB3B8; // type:function size:0x34 +PSMTXConcat = .text:0x800BB3EC; // type:function size:0xCC +PSMTXTranspose = .text:0x800BB4B8; // type:function size:0x50 +PSMTXInverse = .text:0x800BB508; // type:function size:0xF8 +PSMTXInvXpose = .text:0x800BB600; // type:function size:0xC8 +PSMTXRotRad = .text:0x800BB6C8; // type:function size:0x70 +PSMTXRotTrig = .text:0x800BB738; // type:function size:0xA8 +PSMTXRotAxisRad = .text:0x800BB7E0; // type:function size:0x104 +PSMTXTrans = .text:0x800BB8E4; // type:function size:0x34 +PSMTXScale = .text:0x800BB918; // type:function size:0x28 +PSMTXQuat = .text:0x800BB940; // type:function size:0xA4 +C_MTXLookAt = .text:0x800BB9E4; // type:function size:0x18C +C_MTXLightPerspective = .text:0x800BBB70; // type:function size:0xCC +PSMTXMultVec = .text:0x800BBC3C; // type:function size:0x54 +PSMTXMultVecArray = .text:0x800BBC90; // type:function size:0x8C +PSMTXMultVecSR = .text:0x800BBD1C; // type:function size:0x54 +C_MTXPerspective = .text:0x800BBD70; // type:function size:0xD0 +C_MTXOrtho = .text:0x800BBE40; // type:function size:0x98 +PSVECAdd = .text:0x800BBED8; // type:function size:0x24 +PSVECSubtract = .text:0x800BBEFC; // type:function size:0x24 +PSVECScale = .text:0x800BBF20; // type:function size:0x1C +PSVECNormalize = .text:0x800BBF3C; // type:function size:0x44 +PSVECSquareMag = .text:0x800BBF80; // type:function size:0x18 +PSVECMag = .text:0x800BBF98; // type:function size:0x3C +PSVECDotProduct = .text:0x800BBFD4; // type:function size:0x20 +PSVECCrossProduct = .text:0x800BBFF4; // type:function size:0x3C +C_VECHalfAngle = .text:0x800BC030; // type:function size:0xD8 +C_VECReflect = .text:0x800BC108; // type:function size:0xD4 +PSVECSquareDistance = .text:0x800BC1DC; // type:function size:0x28 +PSVECDistance = .text:0x800BC204; // type:function size:0x4C +C_QUATAdd = .text:0x800BC250; // type:function size:0x44 +PSQUATAdd = .text:0x800BC294; // type:function size:0x24 +PSQUATMultiply = .text:0x800BC2B8; // type:function size:0x5C +PSQUATNormalize = .text:0x800BC314; // type:function size:0x54 +PSQUATInverse = .text:0x800BC368; // type:function size:0x50 +C_QUATRotAxisRad = .text:0x800BC3B8; // type:function size:0x8C +C_QUATMtx = .text:0x800BC444; // type:function size:0x258 +C_QUATSlerp = .text:0x800BC69C; // type:function size:0x174 +PSMTXReorder = .text:0x800BC810; // type:function size:0x4C +PSMTXROMultVecArray = .text:0x800BC85C; // type:function size:0x118 +__DVDInitWA = .text:0x800BC974; // type:function size:0x40 scope:global +__DVDInterruptHandler = .text:0x800BC9B4; // type:function size:0x2F4 scope:global +fn_800BCCA8 = .text:0x800BCCA8; // type:function size:0x84 +AlarmHandlerForTimeout = .text:0x800BCD2C; // type:function size:0x70 scope:local +fn_800BCD9C = .text:0x800BCD9C; // type:function size:0x110 +fn_800BCEAC = .text:0x800BCEAC; // type:function size:0x80 +fn_800BCF2C = .text:0x800BCF2C; // type:function size:0x298 +fn_800BD1C4 = .text:0x800BD1C4; // type:function size:0x94 +DVDLowWaitCoverClose = .text:0x800BD258; // type:function size:0x2C scope:global +fn_800BD284 = .text:0x800BD284; // type:function size:0xA4 +DVDLowStopMotor = .text:0x800BD328; // type:function size:0x8C scope:global +fn_800BD3B4 = .text:0x800BD3B4; // type:function size:0x8C +fn_800BD440 = .text:0x800BD440; // type:function size:0x9C +fn_800BD4DC = .text:0x800BD4DC; // type:function size:0x98 +fn_800BD574 = .text:0x800BD574; // type:function size:0x8C +fn_800BD600 = .text:0x800BD600; // type:function size:0x9C +DVDLowReset = .text:0x800BD69C; // type:function size:0xBC scope:global +fn_800BD758 = .text:0x800BD758; // type:function size:0x14 +fn_800BD76C = .text:0x800BD76C; // type:function size:0x18 +__DVDLowSetWAType = .text:0x800BD784; // type:function size:0x44 scope:global +__DVDFSInit = .text:0x800BD7C8; // type:function size:0x38 scope:global +DVDConvertPathToEntrynum = .text:0x800BD800; // type:function size:0x2F4 +DVDFastOpen = .text:0x800BDAF4; // type:function size:0x74 +DVDOpen = .text:0x800BDB68; // type:function size:0xC8 +DVDClose = .text:0x800BDC30; // type:function size:0x24 +fn_800BDC54 = .text:0x800BDC54; // type:function size:0x160 +DVDGetCurrentDir = .text:0x800BDDB4; // type:function size:0xC4 +DVDReadAsyncPrio = .text:0x800BDE78; // type:function size:0xC0 +fn_800BDF38 = .text:0x800BDF38; // type:function size:0x30 +DVDReadPrio = .text:0x800BDF68; // type:function size:0x118 +fn_800BE080 = .text:0x800BE080; // type:function size:0x24 +DVDInit = .text:0x800BE0A4; // type:function size:0xFC scope:global +fn_800BE1A0 = .text:0x800BE1A0; // type:function size:0x54 +fn_800BE1F4 = .text:0x800BE1F4; // type:function size:0x80 +cbForStateError = .text:0x800BE274; // type:function size:0xA8 scope:local +fn_800BE31C = .text:0x800BE31C; // type:function size:0x9C +fn_800BE3B8 = .text:0x800BE3B8; // type:function size:0x28 +fn_800BE3E0 = .text:0x800BE3E0; // type:function size:0xB4 +fn_800BE494 = .text:0x800BE494; // type:function size:0x294 +fn_800BE728 = .text:0x800BE728; // type:function size:0x68 +fn_800BE790 = .text:0x800BE790; // type:function size:0x98 +fn_800BE828 = .text:0x800BE828; // type:function size:0x28 +fn_800BE850 = .text:0x800BE850; // type:function size:0x158 +fn_800BE9A8 = .text:0x800BE9A8; // type:function size:0xE4 +fn_800BEA8C = .text:0x800BEA8C; // type:function size:0x34 +fn_800BEAC0 = .text:0x800BEAC0; // type:function size:0x38 +fn_800BEAF8 = .text:0x800BEAF8; // type:function size:0x114 +fn_800BEC0C = .text:0x800BEC0C; // type:function size:0xA4 +fn_800BECB0 = .text:0x800BECB0; // type:function size:0xFC +AlarmHandler = .text:0x800BEDAC; // type:function size:0x44 scope:local +fn_800BEDF0 = .text:0x800BEDF0; // type:function size:0xCC +fn_800BEEBC = .text:0x800BEEBC; // type:function size:0x30 +fn_800BEEEC = .text:0x800BEEEC; // type:function size:0x70 +fn_800BEF5C = .text:0x800BEF5C; // type:function size:0x28 +cbForStateMotorStopped = .text:0x800BEF84; // type:function size:0xE4 scope:local +stateReady = .text:0x800BF068; // type:function size:0x248 scope:local +stateBusy = .text:0x800BF2B0; // type:function size:0x2C0 scope:local +fn_800BF570 = .text:0x800BF570; // type:function size:0x5D4 +fn_800BFB44 = .text:0x800BFB44; // type:function size:0xDC +fn_800BFC20 = .text:0x800BFC20; // type:function size:0xD0 +DVDReadDiskID = .text:0x800BFCF0; // type:function size:0xD4 scope:global +DVDInquiryAsync = .text:0x800BFDC4; // type:function size:0xD0 scope:global +DVDReset = .text:0x800BFE94; // type:function size:0x44 scope:global +DVDGetCommandBlockStatus = .text:0x800BFED8; // type:function size:0x4C +DVDGetDriveStatus = .text:0x800BFF24; // type:function size:0xAC scope:global +DVDSetAutoInvalidation = .text:0x800BFFD0; // type:function size:0x10 +DVDCancelAsync = .text:0x800BFFE0; // type:function size:0x270 +DVDCancel = .text:0x800C0250; // type:function size:0xAC +fn_800C02FC = .text:0x800C02FC; // type:function size:0x24 +DVDGetCurrentDiskID = .text:0x800C0320; // type:function size:0x8 +DVDCheckDisk = .text:0x800C0328; // type:function size:0xE4 +__DVDPrepareResetAsync = .text:0x800C040C; // type:function size:0x11C +__DVDClearWaitingQueue = .text:0x800C0528; // type:function size:0x38 scope:global +__DVDPushWaitingQueue = .text:0x800C0560; // type:function size:0x68 scope:global +__DVDPopWaitingQueue = .text:0x800C05C8; // type:function size:0xA0 scope:global +__DVDCheckWaitingQueue = .text:0x800C0668; // type:function size:0x58 scope:global +__DVDDequeueWaitingQueue = .text:0x800C06C0; // type:function size:0x60 +ErrorCode2Num = .text:0x800C0720; // type:function size:0x11C scope:local +__DVDStoreErrorCode = .text:0x800C083C; // type:function size:0x7C scope:global +cb = .text:0x800C08B8; // type:function size:0xD8 scope:local +__fstLoad = .text:0x800C0990; // type:function size:0x168 scope:global +fn_800C0AF8 = .text:0x800C0AF8; // type:function size:0x228 +VISetPreRetraceCallback = .text:0x800C0D20; // type:function size:0x44 +VISetPostRetraceCallback = .text:0x800C0D64; // type:function size:0x44 +fn_800C0DA8 = .text:0x800C0DA8; // type:function size:0x90 +__VIInit = .text:0x800C0E38; // type:function size:0x1F8 +VIInit = .text:0x800C1030; // type:function size:0x478 +VIWaitForRetrace = .text:0x800C14A8; // type:function size:0x54 +fn_800C14FC = .text:0x800C14FC; // type:function size:0x2D4 +fn_800C17D0 = .text:0x800C17D0; // type:function size:0x1A0 +VIConfigure = .text:0x800C1970; // type:function size:0x79C +VIFlush = .text:0x800C210C; // type:function size:0x11C +VISetNextFrameBuffer = .text:0x800C2228; // type:function size:0x6C +VISetBlack = .text:0x800C2294; // type:function size:0x7C +VIGetRetraceCount = .text:0x800C2310; // type:function size:0x8 +fn_800C2318 = .text:0x800C2318; // type:function size:0x68 +VIGetNextField = .text:0x800C2380; // type:function size:0xA8 +VIGetCurrentLine = .text:0x800C2428; // type:function size:0x98 +VIGetTvFormat = .text:0x800C24C0; // type:function size:0x7C scope:global +VIGetDTVStatus = .text:0x800C253C; // type:function size:0x3C +DEMOGetRenderModeObj = .text:0x800C2578; // type:function size:0x8 +DEMOInitCaption = .text:0x800C2580; // type:function size:0x228 +DEMOPuts = .text:0x800C27A8; // type:function size:0x310 +DEMOPrintf = .text:0x800C2AB8; // type:function size:0xC4 +DEMOWriteStats = .text:0x800C2B7C; // type:function size:0x394 +DEMOUpdateStats = .text:0x800C2F10; // type:function size:0x58 +DEMOPrintStats = .text:0x800C2F68; // type:function size:0x96C +fn_800C38D4 = .text:0x800C38D4; // type:function size:0x130 +PADClamp = .text:0x800C3A04; // type:function size:0x108 +fn_800C3B0C = .text:0x800C3B0C; // type:function size:0x1A4 +fn_800C3CB0 = .text:0x800C3CB0; // type:function size:0xC4 +fn_800C3D74 = .text:0x800C3D74; // type:function size:0xC0 +fn_800C3E34 = .text:0x800C3E34; // type:function size:0xD8 +fn_800C3F0C = .text:0x800C3F0C; // type:function size:0x32C +fn_800C4238 = .text:0x800C4238; // type:function size:0x134 +PADReset = .text:0x800C436C; // type:function size:0x100 +PADRecalibrate = .text:0x800C446C; // type:function size:0x104 +PADInit = .text:0x800C4570; // type:function size:0x210 +PADRead = .text:0x800C4780; // type:function size:0x3AC +PADControlMotor = .text:0x800C4B2C; // type:function size:0xA4 +PADSetSpec = .text:0x800C4BD0; // type:function size:0x60 +fn_800C4C30 = .text:0x800C4C30; // type:function size:0x174 +fn_800C4DA4 = .text:0x800C4DA4; // type:function size:0x174 +fn_800C4F18 = .text:0x800C4F18; // type:function size:0x3F8 +fn_800C5310 = .text:0x800C5310; // type:function size:0x194 +fn_800C54A4 = .text:0x800C54A4; // type:function size:0x60 +PADSetSamplingCallback = .text:0x800C5504; // type:function size:0x54 +__PADDisableRecalibration = .text:0x800C5558; // type:function size:0x7C scope:global +AIRegisterDMACallback = .text:0x800C55D4; // type:function size:0x44 +AIInitDMA = .text:0x800C5618; // type:function size:0x88 +AIStartDMA = .text:0x800C56A0; // type:function size:0x18 +AIStopDMA = .text:0x800C56B8; // type:function size:0x18 +AIGetDMAStartAddr = .text:0x800C56D0; // type:function size:0x1C +AISetStreamPlayState = .text:0x800C56EC; // type:function size:0xD8 +AIGetStreamPlayState = .text:0x800C57C4; // type:function size:0x10 +AISetDSPSampleRate = .text:0x800C57D4; // type:function size:0xE0 +AIGetDSPSampleRate = .text:0x800C58B4; // type:function size:0x14 +fn_800C58C8 = .text:0x800C58C8; // type:function size:0xD4 +AIGetStreamSampleRate = .text:0x800C599C; // type:function size:0x10 +AISetStreamVolLeft = .text:0x800C59AC; // type:function size:0x1C +AIGetStreamVolLeft = .text:0x800C59C8; // type:function size:0x10 +AISetStreamVolRight = .text:0x800C59D8; // type:function size:0x1C +AIGetStreamVolRight = .text:0x800C59F4; // type:function size:0x10 +AIInit = .text:0x800C5A04; // type:function size:0x164 +fn_800C5B68 = .text:0x800C5B68; // type:function size:0x7C +fn_800C5BE4 = .text:0x800C5BE4; // type:function size:0x90 +fn_800C5C74 = .text:0x800C5C74; // type:function size:0x58 +fn_800C5CCC = .text:0x800C5CCC; // type:function size:0x1E4 +fn_800C5EB0 = .text:0x800C5EB0; // type:function size:0x44 +fn_800C5EF4 = .text:0x800C5EF4; // type:function size:0x3C +fn_800C5F30 = .text:0x800C5F30; // type:function size:0xF0 +fn_800C6020 = .text:0x800C6020; // type:function size:0x68 +fn_800C6088 = .text:0x800C6088; // type:function size:0x74 +ARCheckInit = .text:0x800C60FC; // type:function size:0x8 +ARInit = .text:0x800C6104; // type:function size:0xBC +fn_800C61C0 = .text:0x800C61C0; // type:function size:0x4 +fn_800C61C4 = .text:0x800C61C4; // type:function size:0x8 +ARGetSize = .text:0x800C61CC; // type:function size:0x8 +fn_800C61D4 = .text:0x800C61D4; // type:function size:0x78 +fn_800C624C = .text:0x800C624C; // type:function size:0x914 +fn_800C6B60 = .text:0x800C6B60; // type:function size:0x100 +fn_800C6C60 = .text:0x800C6C60; // type:function size:0x4 +fn_800C6C64 = .text:0x800C6C64; // type:function size:0xCC +ARQInit = .text:0x800C6D30; // type:function size:0x68 +ARQPostRequest = .text:0x800C6D98; // type:function size:0x15C +fn_800C6EF4 = .text:0x800C6EF4; // type:function size:0x10 +fn_800C6F04 = .text:0x800C6F04; // type:function size:0x10 +fn_800C6F14 = .text:0x800C6F14; // type:function size:0x18 +fn_800C6F2C = .text:0x800C6F2C; // type:function size:0x14 +fn_800C6F40 = .text:0x800C6F40; // type:function size:0xB8 +fn_800C6FF8 = .text:0x800C6FF8; // type:function size:0x48 +fn_800C7040 = .text:0x800C7040; // type:function size:0x40 +fn_800C7080 = .text:0x800C7080; // type:function size:0x10 +fn_800C7090 = .text:0x800C7090; // type:function size:0x70 +fn_800C7100 = .text:0x800C7100; // type:function size:0x50 +fn_800C7150 = .text:0x800C7150; // type:function size:0x424 +fn_800C7574 = .text:0x800C7574; // type:function size:0x1A0 +fn_800C7714 = .text:0x800C7714; // type:function size:0x18C +fn_800C78A0 = .text:0x800C78A0; // type:function size:0xA0 +fn_800C7940 = .text:0x800C7940; // type:function size:0x94 +fn_800C79D4 = .text:0x800C79D4; // type:function size:0x7C +fn_800C7A50 = .text:0x800C7A50; // type:function size:0x24 +GXInit = .text:0x800C7A74; // type:function size:0x7CC scope:global +__GXInitGX = .text:0x800C8240; // type:function size:0x884 scope:global +fn_800C8AC4 = .text:0x800C8AC4; // type:function size:0x13C +GXInitFifoBase = .text:0x800C8C00; // type:function size:0x6C scope:global +fn_800C8C6C = .text:0x800C8C6C; // type:function size:0x70 +fn_800C8CDC = .text:0x800C8CDC; // type:function size:0xC +GXSetCPUFifo = .text:0x800C8CE8; // type:function size:0x110 scope:global +GXSetGPFifo = .text:0x800C8DF8; // type:function size:0x178 scope:global +fn_800C8F70 = .text:0x800C8F70; // type:function size:0x20 +fn_800C8F90 = .text:0x800C8F90; // type:function size:0xDC +__GXFifoInit = .text:0x800C906C; // type:function size:0x4C scope:global +fn_800C90B8 = .text:0x800C90B8; // type:function size:0x28 +fn_800C90E0 = .text:0x800C90E0; // type:function size:0x24 +fn_800C9104 = .text:0x800C9104; // type:function size:0x44 +fn_800C9148 = .text:0x800C9148; // type:function size:0x4C +fn_800C9194 = .text:0x800C9194; // type:function size:0x4C +fn_800C91E0 = .text:0x800C91E0; // type:function size:0xFC +GXGetCPUFifo = .text:0x800C92DC; // type:function size:0x8 +GXGetGPFifo = .text:0x800C92E4; // type:function size:0x8 +__GXXfVtxSpecs = .text:0x800C92EC; // type:function size:0x158 +GXSetVtxDesc = .text:0x800C9444; // type:function size:0x360 +__GXSetVCD = .text:0x800C97A4; // type:function size:0x54 +__GXCalculateVLim = .text:0x800C97F8; // type:function size:0x124 +GXClearVtxDesc = .text:0x800C991C; // type:function size:0x4C +GXSetVtxAttrFmt = .text:0x800C9968; // type:function size:0x35C +__GXSetVAT = .text:0x800C9CC4; // type:function size:0x9C +GXSetArray = .text:0x800C9D60; // type:function size:0x8C +GXInvalidateVtxCache = .text:0x800C9DEC; // type:function size:0x10 +GXSetTexCoordGen2 = .text:0x800C9DFC; // type:function size:0x2D0 +GXSetNumTexGens = .text:0x800CA0CC; // type:function size:0x48 +GXSetMisc = .text:0x800CA114; // type:function size:0x78 scope:global +GXFlush = .text:0x800CA18C; // type:function size:0x5C +GXResetWriteGatherPipe = .text:0x800CA1E8; // type:function size:0x34 +__GXAbortWaitPECopyDone = .text:0x800CA21C; // type:function size:0xCC +GXSetDrawSync = .text:0x800CA2E8; // type:function size:0xB8 +GXSetDrawDone = .text:0x800CA3A0; // type:function size:0x98 +GXWaitDrawDone = .text:0x800CA438; // type:function size:0x4C +GXDrawDone = .text:0x800CA484; // type:function size:0x80 +GXPixModeSync = .text:0x800CA504; // type:function size:0x24 +GXPokeAlphaMode = .text:0x800CA528; // type:function size:0x14 +GXPokeAlphaRead = .text:0x800CA53C; // type:function size:0x14 +GXPokeAlphaUpdate = .text:0x800CA550; // type:function size:0x1C +GXPokeBlendMode = .text:0x800CA56C; // type:function size:0x88 +GXPokeColorUpdate = .text:0x800CA5F4; // type:function size:0x1C +GXPokeDstAlpha = .text:0x800CA610; // type:function size:0x14 +GXPokeDither = .text:0x800CA624; // type:function size:0x1C +GXPokeZMode = .text:0x800CA640; // type:function size:0x28 +GXSetDrawSyncCallback = .text:0x800CA668; // type:function size:0x44 +GXTokenInterruptHandler = .text:0x800CA6AC; // type:function size:0x88 +GXFinishInterruptHandler = .text:0x800CA734; // type:function size:0x84 +__GXPEInit = .text:0x800CA7B8; // type:function size:0x80 scope:global +__GXSetDirtyState = .text:0x800CA838; // type:function size:0xA0 +GXBegin = .text:0x800CA8D8; // type:function size:0xF0 +__GXSendFlushPrim = .text:0x800CA9C8; // type:function size:0x88 +GXSetLineWidth = .text:0x800CAA50; // type:function size:0x58 +GXSetPointSize = .text:0x800CAAA8; // type:function size:0x54 +GXEnableTexOffsets = .text:0x800CAAFC; // type:function size:0x64 +GXSetCullMode = .text:0x800CAB60; // type:function size:0x50 +GXSetCoPlanar = .text:0x800CABB0; // type:function size:0x44 +__GXSetGenMode = .text:0x800CABF4; // type:function size:0x24 +GXAdjustForOverscan = .text:0x800CAC18; // type:function size:0x120 +GXSetDispCopySrc = .text:0x800CAD38; // type:function size:0xC0 +GXSetTexCopySrc = .text:0x800CADF8; // type:function size:0xC0 +GXSetDispCopyDst = .text:0x800CAEB8; // type:function size:0x44 +GXSetTexCopyDst = .text:0x800CAEFC; // type:function size:0x170 +GXSetDispCopyFrame2Field = .text:0x800CB06C; // type:function size:0x2C +GXSetCopyClamp = .text:0x800CB098; // type:function size:0x7C +GXGetYScaleFactor = .text:0x800CB114; // type:function size:0x238 +GXSetDispCopyYScale = .text:0x800CB34C; // type:function size:0xD4 +GXSetCopyClear = .text:0x800CB420; // type:function size:0x68 +GXSetCopyFilter = .text:0x800CB488; // type:function size:0x228 +GXSetDispCopyGamma = .text:0x800CB6B0; // type:function size:0x1C +GXCopyDisp = .text:0x800CB6CC; // type:function size:0x170 +GXCopyTex = .text:0x800CB83C; // type:function size:0x190 +GXClearBoundingBox = .text:0x800CB9CC; // type:function size:0x38 +GXInitLightAttn = .text:0x800CBA04; // type:function size:0x1C +GXInitLightAttnK = .text:0x800CBA20; // type:function size:0x10 +GXInitLightSpot = .text:0x800CBA30; // type:function size:0x180 +GXInitLightDistAttn = .text:0x800CBBB0; // type:function size:0xD0 +GXInitLightPos = .text:0x800CBC80; // type:function size:0x10 +GXInitLightDir = .text:0x800CBC90; // type:function size:0x1C +GXInitSpecularDir = .text:0x800CBCAC; // type:function size:0xD4 +GXInitLightColor = .text:0x800CBD80; // type:function size:0x28 +GXLoadLightObjImm = .text:0x800CBDA8; // type:function size:0x148 +GXSetChanAmbColor = .text:0x800CBEF0; // type:function size:0x168 +GXSetChanMatColor = .text:0x800CC058; // type:function size:0x168 +GXSetNumChans = .text:0x800CC1C0; // type:function size:0x4C +GXSetChanCtrl = .text:0x800CC20C; // type:function size:0x1E4 +GXGetTexBufferSize = .text:0x800CC3F0; // type:function size:0x15C +__GetImageTileCount = .text:0x800CC54C; // type:function size:0xC8 +GXInitTexObj = .text:0x800CC614; // type:function size:0x274 +GXInitTexObjCI = .text:0x800CC888; // type:function size:0x48 +GXInitTexObjLOD = .text:0x800CC8D0; // type:function size:0x194 +GXGetTexObjFmt = .text:0x800CCA64; // type:function size:0x8 +GXLoadTexObjPreLoaded = .text:0x800CCA6C; // type:function size:0x1A8 +GXLoadTexObj = .text:0x800CCC14; // type:function size:0x54 +GXInitTlutObj = .text:0x800CCC68; // type:function size:0x48 +GXLoadTlut = .text:0x800CCCB0; // type:function size:0x9C +GXInitTexCacheRegion = .text:0x800CCD4C; // type:function size:0x120 scope:global +GXInitTlutRegion = .text:0x800CCE6C; // type:function size:0x48 scope:global +GXInvalidateTexAll = .text:0x800CCEB4; // type:function size:0x48 +GXSetTexRegionCallback = .text:0x800CCEFC; // type:function size:0x14 +GXSetTlutRegionCallback = .text:0x800CCF10; // type:function size:0x14 +GXSetTexCoordScaleManually = .text:0x800CCF24; // type:function size:0x9C +fn_800CCFC0 = .text:0x800CCFC0; // type:function size:0xCC +__GXSetSUTexRegs = .text:0x800CD08C; // type:function size:0x17C +__GXSetTmemConfig = .text:0x800CD208; // type:function size:0x240 scope:global +GXSetTevIndirect = .text:0x800CD448; // type:function size:0x9C +GXSetIndTexMtx = .text:0x800CD4E4; // type:function size:0x160 +GXSetIndTexCoordScale = .text:0x800CD644; // type:function size:0x1D4 +GXSetIndTexOrder = .text:0x800CD818; // type:function size:0x138 +GXSetNumIndStages = .text:0x800CD950; // type:function size:0x2C +GXSetTevDirect = .text:0x800CD97C; // type:function size:0x48 +GXSetTevIndWarp = .text:0x800CD9C4; // type:function size:0x64 +GXSetTevIndTile = .text:0x800CDA28; // type:function size:0x1AC +__GXUpdateBPMask = .text:0x800CDBD4; // type:function size:0xCC +__GXFlushTextureState = .text:0x800CDCA0; // type:function size:0x24 scope:global +GXSetTevOp = .text:0x800CDCC4; // type:function size:0x1A4 +GXSetTevColorIn = .text:0x800CDE68; // type:function size:0x80 +GXSetTevAlphaIn = .text:0x800CDEE8; // type:function size:0x84 +GXSetTevColorOp = .text:0x800CDF6C; // type:function size:0xC0 +GXSetTevAlphaOp = .text:0x800CE02C; // type:function size:0xC0 +GXSetTevColor = .text:0x800CE0EC; // type:function size:0x74 +GXSetTevColorS10 = .text:0x800CE160; // type:function size:0x74 +GXSetTevKColor = .text:0x800CE1D4; // type:function size:0x74 +GXSetTevKColorSel = .text:0x800CE248; // type:function size:0x6C +GXSetTevKAlphaSel = .text:0x800CE2B4; // type:function size:0x6C +GXSetTevSwapMode = .text:0x800CE320; // type:function size:0x58 +GXSetTevSwapModeTable = .text:0x800CE378; // type:function size:0xA0 +GXSetAlphaCompare = .text:0x800CE418; // type:function size:0x50 +GXSetZTexture = .text:0x800CE468; // type:function size:0x84 +GXSetTevOrder = .text:0x800CE4EC; // type:function size:0x1DC +GXSetNumTevStages = .text:0x800CE6C8; // type:function size:0x34 +GXSetFog = .text:0x800CE6FC; // type:function size:0x1B0 +GXSetFogRangeAdj = .text:0x800CE8AC; // type:function size:0x100 +GXSetBlendMode = .text:0x800CE9AC; // type:function size:0x104 +GXSetColorUpdate = .text:0x800CEAB0; // type:function size:0x40 +GXSetAlphaUpdate = .text:0x800CEAF0; // type:function size:0x40 +GXSetZMode = .text:0x800CEB30; // type:function size:0x78 +GXSetZCompLoc = .text:0x800CEBA8; // type:function size:0x40 +GXSetPixelFmt = .text:0x800CEBE8; // type:function size:0x110 +GXSetDither = .text:0x800CECF8; // type:function size:0x40 +GXSetDstAlpha = .text:0x800CED38; // type:function size:0x54 +GXSetFieldMask = .text:0x800CED8C; // type:function size:0x38 +GXSetFieldMode = .text:0x800CEDC4; // type:function size:0x80 +__GXSetRange = .text:0x800CEE44; // type:function size:0x4 +GXBeginDisplayList = .text:0x800CEE48; // type:function size:0xC8 +GXEndDisplayList = .text:0x800CEF10; // type:function size:0xD4 +GXCallDisplayList = .text:0x800CEFE4; // type:function size:0x70 +GXProject = .text:0x800CF054; // type:function size:0x174 +GXSetProjection = .text:0x800CF1C8; // type:function size:0xD4 +GXGetProjectionv = .text:0x800CF29C; // type:function size:0x78 +fn_800CF314 = .text:0x800CF314; // type:function size:0x34 +fn_800CF348 = .text:0x800CF348; // type:function size:0x34 +fn_800CF37C = .text:0x800CF37C; // type:function size:0x24 +GXLoadPosMtxImm = .text:0x800CF3A0; // type:function size:0x3C +GXLoadNrmMtxImm = .text:0x800CF3DC; // type:function size:0x40 +GXSetCurrentMtx = .text:0x800CF41C; // type:function size:0x3C +GXLoadTexMtxImm = .text:0x800CF458; // type:function size:0x84 +GXSetViewportJitter = .text:0x800CF4DC; // type:function size:0x11C +GXSetViewport = .text:0x800CF5F8; // type:function size:0x24 +GXGetViewportv = .text:0x800CF61C; // type:function size:0x4C +GXSetScissor = .text:0x800CF668; // type:function size:0xB0 +GXSetScissorBoxOffset = .text:0x800CF718; // type:function size:0x44 +GXSetClipMode = .text:0x800CF75C; // type:function size:0x28 +__GXSetMatrixIndex = .text:0x800CF784; // type:function size:0x84 +GXSetGPMetric = .text:0x800CF808; // type:function size:0x898 +GXReadGPMetric = .text:0x800D00A0; // type:function size:0x1A8 +GXClearGPMetric = .text:0x800D0248; // type:function size:0x10 +GXReadGP0Metric = .text:0x800D0258; // type:function size:0x2C +GXReadGP1Metric = .text:0x800D0284; // type:function size:0x2C +GXReadMemMetric = .text:0x800D02B0; // type:function size:0x214 +GXClearMemMetric = .text:0x800D04C4; // type:function size:0xA8 +GXReadPixMetric = .text:0x800D056C; // type:function size:0x138 +GXClearPixMetric = .text:0x800D06A4; // type:function size:0x30 +GXSetVCacheMetric = .text:0x800D06D4; // type:function size:0x50 +GXReadVCacheMetric = .text:0x800D0724; // type:function size:0x94 +GXClearVCacheMetric = .text:0x800D07B8; // type:function size:0x1C +fn_800D07D4 = .text:0x800D07D4; // type:function size:0x4 +fn_800D07D8 = .text:0x800D07D8; // type:function size:0x34 +fn_800D080C = .text:0x800D080C; // type:function size:0xD8 +fn_800D08E4 = .text:0x800D08E4; // type:function size:0x118 +fn_800D09FC = .text:0x800D09FC; // type:function size:0xA8 +fn_800D0AA4 = .text:0x800D0AA4; // type:function size:0x84 +fn_800D0B28 = .text:0x800D0B28; // type:function size:0xC0 +fn_800D0BE8 = .text:0x800D0BE8; // type:function size:0xF0 +fn_800D0CD8 = .text:0x800D0CD8; // type:function size:0xAC +fn_800D0D84 = .text:0x800D0D84; // type:function size:0xA4 +fn_800D0E28 = .text:0x800D0E28; // type:function size:0x22C +fn_800D1054 = .text:0x800D1054; // type:function size:0x110 +__CARDStart = .text:0x800D1164; // type:function size:0x1B4 +__CARDReadSegment = .text:0x800D1318; // type:function size:0x134 +__CARDWritePage = .text:0x800D144C; // type:function size:0x11C +__CARDEraseSector = .text:0x800D1568; // type:function size:0xE0 +CARDInit = .text:0x800D1648; // type:function size:0x9C +__CARDSetDiskID = .text:0x800D16E4; // type:function size:0x38 +__CARDGetControlBlock = .text:0x800D171C; // type:function size:0xB8 +__CARDPutControlBlock = .text:0x800D17D4; // type:function size:0x64 +CARDFreeBlocks = .text:0x800D1838; // type:function size:0x150 +CARDGetSectorSize = .text:0x800D1988; // type:function size:0x84 +__CARDSync = .text:0x800D1A0C; // type:function size:0x98 +fn_800D1AA4 = .text:0x800D1AA4; // type:function size:0x50 +fn_800D1AF4 = .text:0x800D1AF4; // type:function size:0x16C +fn_800D1C60 = .text:0x800D1C60; // type:function size:0x144 +fn_800D1DA4 = .text:0x800D1DA4; // type:function size:0xC4 +__CARDUnlock = .text:0x800D1E68; // type:function size:0xB58 +fn_800D29C0 = .text:0x800D29C0; // type:function size:0x70 +fn_800D2A30 = .text:0x800D2A30; // type:function size:0x324 +fn_800D2D54 = .text:0x800D2D54; // type:function size:0xDC +__CARDRead = .text:0x800D2E30; // type:function size:0x64 +fn_800D2E94 = .text:0x800D2E94; // type:function size:0xDC +__CARDWrite = .text:0x800D2F70; // type:function size:0x64 +__CARDGetFatBlock = .text:0x800D2FD4; // type:function size:0x8 +fn_800D2FDC = .text:0x800D2FDC; // type:function size:0xD4 +fn_800D30B0 = .text:0x800D30B0; // type:function size:0xC8 +__CARDAllocBlock = .text:0x800D3178; // type:function size:0x118 +__CARDFreeBlock = .text:0x800D3290; // type:function size:0x9C +__CARDUpdateFatBlock = .text:0x800D332C; // type:function size:0xAC +__CARDGetDirBlock = .text:0x800D33D8; // type:function size:0x8 +fn_800D33E0 = .text:0x800D33E0; // type:function size:0xD0 +fn_800D34B0 = .text:0x800D34B0; // type:function size:0xC8 +__CARDUpdateDir = .text:0x800D3578; // type:function size:0xC4 +__CARDCheckSum = .text:0x800D363C; // type:function size:0x1B0 +fn_800D37EC = .text:0x800D37EC; // type:function size:0x284 +fn_800D3A70 = .text:0x800D3A70; // type:function size:0x240 +fn_800D3CB0 = .text:0x800D3CB0; // type:function size:0x284 +__CARDVerify = .text:0x800D3F34; // type:function size:0x8C +CARDCheckExAsync = .text:0x800D3FC0; // type:function size:0x590 +CARDCheck = .text:0x800D4550; // type:function size:0x54 +fn_800D45A4 = .text:0x800D45A4; // type:function size:0xCC +CARDProbeEx = .text:0x800D4670; // type:function size:0x17C +fn_800D47EC = .text:0x800D47EC; // type:function size:0x410 +__CARDMountCallback = .text:0x800D4BFC; // type:function size:0x138 +CARDMountAsync = .text:0x800D4D34; // type:function size:0x1A0 +CARDMount = .text:0x800D4ED4; // type:function size:0x48 +fn_800D4F1C = .text:0x800D4F1C; // type:function size:0x9C +CARDUnmount = .text:0x800D4FB8; // type:function size:0xAC +fn_800D5064 = .text:0x800D5064; // type:function size:0x144 +__CARDFormatRegionAsync = .text:0x800D51A8; // type:function size:0x658 +CARDFormat = .text:0x800D5800; // type:function size:0x54 +__CARDCompareFileName = .text:0x800D5854; // type:function size:0x68 +__CARDAccess = .text:0x800D58BC; // type:function size:0x98 +__CARDIsPublic = .text:0x800D5954; // type:function size:0x30 +__CARDGetFileNo = .text:0x800D5984; // type:function size:0x150 +CARDOpen = .text:0x800D5AD4; // type:function size:0x178 +CARDClose = .text:0x800D5C4C; // type:function size:0x54 +__CARDIsOpened = .text:0x800D5CA0; // type:function size:0x8 +fn_800D5CA8 = .text:0x800D5CA8; // type:function size:0x130 +CARDCreateAsync = .text:0x800D5DD8; // type:function size:0x220 +CARDCreate = .text:0x800D5FF8; // type:function size:0x48 +__CARDSeek = .text:0x800D6040; // type:function size:0x1B8 +fn_800D61F8 = .text:0x800D61F8; // type:function size:0x130 +CARDReadAsync = .text:0x800D6328; // type:function size:0x148 +CARDRead = .text:0x800D6470; // type:function size:0x48 +fn_800D64B8 = .text:0x800D64B8; // type:function size:0x170 +fn_800D6628 = .text:0x800D6628; // type:function size:0xB0 +CARDWriteAsync = .text:0x800D66D8; // type:function size:0x114 +CARDWrite = .text:0x800D67EC; // type:function size:0x48 +fn_800D6834 = .text:0x800D6834; // type:function size:0xA4 +CARDDeleteAsync = .text:0x800D68D8; // type:function size:0x110 +CARDDelete = .text:0x800D69E8; // type:function size:0x48 +fn_800D6A30 = .text:0x800D6A30; // type:function size:0x1F8 +CARDGetStatus = .text:0x800D6C28; // type:function size:0x12C +CARDSetStatusAsync = .text:0x800D6D54; // type:function size:0x174 +CARDSetStatus = .text:0x800D6EC8; // type:function size:0x48 +CARDGetSerialNo = .text:0x800D6F10; // type:function size:0xC4 +fn_800D6FD4 = .text:0x800D6FD4; // type:function size:0xF4 +EXIImm = .text:0x800D70C8; // type:function size:0x25C scope:global +fn_800D7324 = .text:0x800D7324; // type:function size:0xA0 +EXIDma = .text:0x800D73C4; // type:function size:0xEC scope:global +EXISync = .text:0x800D74B0; // type:function size:0x238 scope:global +fn_800D76E8 = .text:0x800D76E8; // type:function size:0x48 +fn_800D7730 = .text:0x800D7730; // type:function size:0x7C +__EXIProbe = .text:0x800D77AC; // type:function size:0x174 scope:local +fn_800D7920 = .text:0x800D7920; // type:function size:0x80 +fn_800D79A0 = .text:0x800D79A0; // type:function size:0xB4 +fn_800D7A54 = .text:0x800D7A54; // type:function size:0x10C +fn_800D7B60 = .text:0x800D7B60; // type:function size:0xBC +EXISelect = .text:0x800D7C1C; // type:function size:0x12C scope:global +EXIDeselect = .text:0x800D7D48; // type:function size:0x110 scope:global +EXIIntrruptHandler = .text:0x800D7E58; // type:function size:0xC8 scope:local +TCIntrruptHandler = .text:0x800D7F20; // type:function size:0x218 scope:local +EXTIntrruptHandler = .text:0x800D8138; // type:function size:0xD0 scope:local +EXIInit = .text:0x800D8208; // type:function size:0x114 scope:global +EXILock = .text:0x800D831C; // type:function size:0xF4 scope:global +EXIUnlock = .text:0x800D8410; // type:function size:0xDC scope:global +fn_800D84EC = .text:0x800D84EC; // type:function size:0x18 +fn_800D8504 = .text:0x800D8504; // type:function size:0x28 +fn_800D852C = .text:0x800D852C; // type:function size:0x37C +fn_800D88A8 = .text:0x800D88A8; // type:function size:0x70 +fn_800D8918 = .text:0x800D8918; // type:function size:0x200 +fn_800D8B18 = .text:0x800D8B18; // type:function size:0x20 +fn_800D8B38 = .text:0x800D8B38; // type:function size:0x3C +fn_800D8B74 = .text:0x800D8B74; // type:function size:0x2FC +SIInterruptHandler = .text:0x800D8E70; // type:function size:0x344 scope:local +fn_800D91B4 = .text:0x800D91B4; // type:function size:0x98 +fn_800D924C = .text:0x800D924C; // type:function size:0xCC +fn_800D9318 = .text:0x800D9318; // type:function size:0xF4 +SIInit = .text:0x800D940C; // type:function size:0xA4 scope:global +fn_800D94B0 = .text:0x800D94B0; // type:function size:0x20C +fn_800D96BC = .text:0x800D96BC; // type:function size:0x7C +fn_800D9738 = .text:0x800D9738; // type:function size:0x14 +fn_800D974C = .text:0x800D974C; // type:function size:0x10 +SISetXY = .text:0x800D975C; // type:function size:0x6C scope:global +fn_800D97C8 = .text:0x800D97C8; // type:function size:0x9C +fn_800D9864 = .text:0x800D9864; // type:function size:0x6C +fn_800D98D0 = .text:0x800D98D0; // type:function size:0xD4 +fn_800D99A4 = .text:0x800D99A4; // type:function size:0xC4 +fn_800D9A68 = .text:0x800D9A68; // type:function size:0x8C +SITransfer = .text:0x800D9AF4; // type:function size:0x16C scope:global +GetTypeCallback = .text:0x800D9C60; // type:function size:0x298 scope:local +SIGetType = .text:0x800D9EF8; // type:function size:0x1C4 scope:global +fn_800DA0BC = .text:0x800DA0BC; // type:function size:0x13C +SISetSamplingRate = .text:0x800DA1F8; // type:function size:0xE4 scope:global +SIRefreshSamplingRate = .text:0x800DA2DC; // type:function size:0x24 +THPVideoDecode = .text:0x800DA300; // type:function size:0x244 +fn_800DA544 = .text:0x800DA544; // type:function size:0x44 +fn_800DA588 = .text:0x800DA588; // type:function size:0x13C +fn_800DA6C4 = .text:0x800DA6C4; // type:function size:0x11C +fn_800DA7E0 = .text:0x800DA7E0; // type:function size:0x3BC +fn_800DAB9C = .text:0x800DAB9C; // type:function size:0x1E0 +fn_800DAD7C = .text:0x800DAD7C; // type:function size:0xF0 +fn_800DAE6C = .text:0x800DAE6C; // type:function size:0x68 +fn_800DAED4 = .text:0x800DAED4; // type:function size:0x1BC +fn_800DB090 = .text:0x800DB090; // type:function size:0x54 +fn_800DB0E4 = .text:0x800DB0E4; // type:function size:0x24C +fn_800DB330 = .text:0x800DB330; // type:function size:0x10C +fn_800DB43C = .text:0x800DB43C; // type:function size:0x1A88 +fn_800DCEC4 = .text:0x800DCEC4; // type:function size:0x1A8C +fn_800DE950 = .text:0x800DE950; // type:function size:0x1AAC +fn_800E03FC = .text:0x800E03FC; // type:function size:0x67C +fn_800E0A78 = .text:0x800E0A78; // type:function size:0x6A8 +fn_800E1120 = .text:0x800E1120; // type:function size:0x6A8 +THPInit = .text:0x800E17C8; // type:function size:0x78 +THPAudioDecode = .text:0x800E1840; // type:function size:0x464 +fn_800E1CA4 = .text:0x800E1CA4; // type:function size:0x90 +fn_800E1D34 = .text:0x800E1D34; // type:function size:0x3C +__va_arg = .text:0x800E1D70; // type:function size:0xC8 scope:global +__destroy_global_chain = .text:0x800E1E38; // type:function size:0x48 scope:global +__register_global_object = .text:0x800E1E80; // type:function size:0x18 scope:global +fn_800E1E98 = .text:0x800E1E98; // type:function size:0x4C +fn_800E1EE4 = .text:0x800E1EE4; // type:function size:0x48 +fn_800E1F2C = .text:0x800E1F2C; // type:function size:0xC +fn_800E1F38 = .text:0x800E1F38; // type:function size:0x22C +fn_800E2164 = .text:0x800E2164; // type:function size:0x28 +fn_800E218C = .text:0x800E218C; // type:function size:0x28 +fn_800E21B4 = .text:0x800E21B4; // type:function size:0x28 +fn_800E21DC = .text:0x800E21DC; // type:function size:0x20 +__cvt_fp2unsigned = .text:0x800E21FC; // type:function size:0x5C +__save_fpr = .text:0x800E2258; // type:function size:0x4C scope:global +_savefpr_14 = .text:0x800E2258; // type:label scope:global +_savefpr_15 = .text:0x800E225C; // type:label scope:global +_savefpr_16 = .text:0x800E2260; // type:label scope:global +_savefpr_17 = .text:0x800E2264; // type:label scope:global +_savefpr_18 = .text:0x800E2268; // type:label scope:global +_savefpr_19 = .text:0x800E226C; // type:label scope:global +_savefpr_20 = .text:0x800E2270; // type:label scope:global +_savefpr_21 = .text:0x800E2274; // type:label scope:global +_savefpr_22 = .text:0x800E2278; // type:label scope:global +_savefpr_23 = .text:0x800E227C; // type:label scope:global +_savefpr_24 = .text:0x800E2280; // type:label scope:global +_savefpr_25 = .text:0x800E2284; // type:label scope:global +_savefpr_26 = .text:0x800E2288; // type:label scope:global +_savefpr_27 = .text:0x800E228C; // type:label scope:global +_savefpr_28 = .text:0x800E2290; // type:label scope:global +_savefpr_29 = .text:0x800E2294; // type:label scope:global +_savefpr_30 = .text:0x800E2298; // type:label scope:global +_savefpr_31 = .text:0x800E229C; // type:label scope:global +__restore_fpr = .text:0x800E22A4; // type:function size:0x4C scope:global +_restfpr_14 = .text:0x800E22A4; // type:label scope:global +_restfpr_15 = .text:0x800E22A8; // type:label scope:global +_restfpr_16 = .text:0x800E22AC; // type:label scope:global +_restfpr_17 = .text:0x800E22B0; // type:label scope:global +_restfpr_18 = .text:0x800E22B4; // type:label scope:global +_restfpr_19 = .text:0x800E22B8; // type:label scope:global +_restfpr_20 = .text:0x800E22BC; // type:label scope:global +_restfpr_21 = .text:0x800E22C0; // type:label scope:global +_restfpr_22 = .text:0x800E22C4; // type:label scope:global +_restfpr_23 = .text:0x800E22C8; // type:label scope:global +_restfpr_24 = .text:0x800E22CC; // type:label scope:global +_restfpr_25 = .text:0x800E22D0; // type:label scope:global +_restfpr_26 = .text:0x800E22D4; // type:label scope:global +_restfpr_27 = .text:0x800E22D8; // type:label scope:global +_restfpr_28 = .text:0x800E22DC; // type:label scope:global +_restfpr_29 = .text:0x800E22E0; // type:label scope:global +_restfpr_30 = .text:0x800E22E4; // type:label scope:global +_restfpr_31 = .text:0x800E22E8; // type:label scope:global +__save_gpr = .text:0x800E22F0; // type:function size:0x4C scope:global +_savegpr_14 = .text:0x800E22F0; // type:label scope:global +_savegpr_15 = .text:0x800E22F4; // type:label scope:global +_savegpr_16 = .text:0x800E22F8; // type:label scope:global +_savegpr_17 = .text:0x800E22FC; // type:label scope:global +_savegpr_18 = .text:0x800E2300; // type:label scope:global +_savegpr_19 = .text:0x800E2304; // type:label scope:global +_savegpr_20 = .text:0x800E2308; // type:label scope:global +_savegpr_21 = .text:0x800E230C; // type:label scope:global +_savegpr_22 = .text:0x800E2310; // type:label scope:global +_savegpr_23 = .text:0x800E2314; // type:label scope:global +_savegpr_24 = .text:0x800E2318; // type:label scope:global +_savegpr_25 = .text:0x800E231C; // type:label scope:global +_savegpr_26 = .text:0x800E2320; // type:label scope:global +_savegpr_27 = .text:0x800E2324; // type:label scope:global +_savegpr_28 = .text:0x800E2328; // type:label scope:global +_savegpr_29 = .text:0x800E232C; // type:label scope:global +_savegpr_30 = .text:0x800E2330; // type:label scope:global +_savegpr_31 = .text:0x800E2334; // type:label scope:global +__restore_gpr = .text:0x800E233C; // type:function size:0x4C scope:global +_restgpr_14 = .text:0x800E233C; // type:label scope:global +_restgpr_15 = .text:0x800E2340; // type:label scope:global +_restgpr_16 = .text:0x800E2344; // type:label scope:global +_restgpr_17 = .text:0x800E2348; // type:label scope:global +_restgpr_18 = .text:0x800E234C; // type:label scope:global +_restgpr_19 = .text:0x800E2350; // type:label scope:global +_restgpr_20 = .text:0x800E2354; // type:label scope:global +_restgpr_21 = .text:0x800E2358; // type:label scope:global +_restgpr_22 = .text:0x800E235C; // type:label scope:global +_restgpr_23 = .text:0x800E2360; // type:label scope:global +_restgpr_24 = .text:0x800E2364; // type:label scope:global +_restgpr_25 = .text:0x800E2368; // type:label scope:global +_restgpr_26 = .text:0x800E236C; // type:label scope:global +_restgpr_27 = .text:0x800E2370; // type:label scope:global +_restgpr_28 = .text:0x800E2374; // type:label scope:global +_restgpr_29 = .text:0x800E2378; // type:label scope:global +_restgpr_30 = .text:0x800E237C; // type:label scope:global +_restgpr_31 = .text:0x800E2380; // type:label scope:global +__div2u = .text:0x800E2388; // type:function size:0xEC scope:global +__div2i = .text:0x800E2474; // type:function size:0x138 +__mod2u = .text:0x800E25AC; // type:function size:0xE4 scope:global +__mod2i = .text:0x800E2690; // type:function size:0x10C +__shl2i = .text:0x800E279C; // type:function size:0x24 +__shr2u = .text:0x800E27C0; // type:function size:0x24 +__shr2i = .text:0x800E27E4; // type:function size:0x28 +__cvt_dbl_usll = .text:0x800E280C; // type:function size:0xCC +GetR2__Fv = .text:0x800E28D8; // type:function size:0x8 scope:local +__fini_cpp_exceptions = .text:0x800E28E0; // type:function size:0x34 scope:global +__init_cpp_exceptions = .text:0x800E2914; // type:function size:0x40 scope:global +fn_800E2954 = .text:0x800E2954; // type:function size:0x104 +fn_800E2A58 = .text:0x800E2A58; // type:function size:0x144 +fn_800E2B9C = .text:0x800E2B9C; // type:function size:0x44 +fn_800E2BE0 = .text:0x800E2BE0; // type:function size:0x410 +fn_800E2FF0 = .text:0x800E2FF0; // type:function size:0x1B4 +fn_800E31A4 = .text:0x800E31A4; // type:function size:0x5C +fn_800E3200 = .text:0x800E3200; // type:function size:0x50C +fn_800E370C = .text:0x800E370C; // type:function size:0x248 +fn_800E3954 = .text:0x800E3954; // type:function size:0x1C0 +fn_800E3B14 = .text:0x800E3B14; // type:function size:0x204 +__unregister_fragment = .text:0x800E3D18; // type:function size:0x34 scope:global +__register_fragment = .text:0x800E3D4C; // type:function size:0x34 scope:global +fn_800E3D80 = .text:0x800E3D80; // type:function size:0xC +fn_800E3D8C = .text:0x800E3D8C; // type:function size:0xB8 +exit = .text:0x800E3E44; // type:function size:0xCC scope:global +fn_800E3F10 = .text:0x800E3F10; // type:function size:0x88 +fn_800E3F98 = .text:0x800E3F98; // type:function size:0x134 +fn_800E40CC = .text:0x800E40CC; // type:function size:0x1FC +fn_800E42C8 = .text:0x800E42C8; // type:function size:0xBC +fn_800E4384 = .text:0x800E4384; // type:function size:0x17C +fn_800E4500 = .text:0x800E4500; // type:function size:0x70 +__close_all = .text:0x800E4570; // type:function size:0x98 scope:global +fn_800E4608 = .text:0x800E4608; // type:function size:0x1A4 +fn_800E47AC = .text:0x800E47AC; // type:function size:0x23C +fn_800E49E8 = .text:0x800E49E8; // type:function size:0x340 +fn_800E4D28 = .text:0x800E4D28; // type:function size:0xEC +fn_800E4E14 = .text:0x800E4E14; // type:function size:0x28C +fn_800E50A0 = .text:0x800E50A0; // type:function size:0x110 +fn_800E51B0 = .text:0x800E51B0; // type:function size:0x70 +abs = .text:0x800E5220; // type:function size:0x10 +__flush_buffer = .text:0x800E5230; // type:function size:0xC4 scope:global +__prep_buffer = .text:0x800E52F4; // type:function size:0x34 scope:global +tolower = .text:0x800E5328; // type:function size:0x24 +isalpha = .text:0x800E534C; // type:function size:0x18 +__fwrite = .text:0x800E5364; // type:function size:0x30C scope:global +fwrite = .text:0x800E5670; // type:function size:0x20 scope:global +fflush = .text:0x800E5690; // type:function size:0x138 +fclose = .text:0x800E57C8; // type:function size:0xC0 +fseek = .text:0x800E5888; // type:function size:0x20 scope:global +_fseek = .text:0x800E58A8; // type:function size:0x23C +ftell = .text:0x800E5AE4; // type:function size:0x70 +wcstombs = .text:0x800E5B54; // type:function size:0xA0 scope:global +fn_800E5BF4 = .text:0x800E5BF4; // type:function size:0xA4 +memcmp = .text:0x800E5C98; // type:function size:0x4C +__memrchr = .text:0x800E5CE4; // type:function size:0x2C scope:global +memchr = .text:0x800E5D10; // type:function size:0x2C scope:global +memmove = .text:0x800E5D3C; // type:function size:0xCC +__copy_longs_rev_unaligned = .text:0x800E5E08; // type:function size:0xB0 +__copy_longs_unaligned = .text:0x800E5EB8; // type:function size:0xC4 +__copy_longs_rev_aligned = .text:0x800E5F7C; // type:function size:0xAC +__copy_longs_aligned = .text:0x800E6028; // type:function size:0xC0 +__stdio_atexit = .text:0x800E60E8; // type:function size:0x10 scope:global +sprintf = .text:0x800E60F8; // type:function size:0xE0 +vsprintf = .text:0x800E61D8; // type:function size:0x78 +vsnprintf = .text:0x800E6250; // type:function size:0x74 +vprintf = .text:0x800E62C4; // type:function size:0x7C scope:global +printf = .text:0x800E6340; // type:function size:0xCC +__StringWrite = .text:0x800E640C; // type:function size:0x6C +__FileWrite = .text:0x800E6478; // type:function size:0x58 scope:global +__pformatter = .text:0x800E64D0; // type:function size:0x774 scope:local +float2str = .text:0x800E6C44; // type:function size:0x6EC scope:local +fn_800E7330 = .text:0x800E7330; // type:function size:0x12C +double2hex = .text:0x800E745C; // type:function size:0x338 scope:local +longlong2str = .text:0x800E7794; // type:function size:0x2DC scope:local +long2str = .text:0x800E7A70; // type:function size:0x220 scope:local +parse_format = .text:0x800E7C90; // type:function size:0x504 scope:local +raise = .text:0x800E8194; // type:function size:0xB0 +strchr = .text:0x800E8244; // type:function size:0x30 scope:global +strncmp = .text:0x800E8274; // type:function size:0x40 +strcmp = .text:0x800E82B4; // type:function size:0x128 +strcat = .text:0x800E83DC; // type:function size:0x44 +strcpy = .text:0x800E8420; // type:function size:0xB8 +strlen = .text:0x800E84D8; // type:function size:0x1C scope:global +__close_console = .text:0x800E84F4; // type:function size:0x8 +__write_console = .text:0x800E84FC; // type:function size:0xC4 +fwide = .text:0x800E85C0; // type:function size:0x88 scope:global +__ieee754_acos = .text:0x800E8648; // type:function size:0x310 +__ieee754_asin = .text:0x800E8958; // type:function size:0x264 +__ieee754_atan2 = .text:0x800E8BBC; // type:function size:0x290 +__ieee754_fmod = .text:0x800E8E4C; // type:function size:0x33C +__ieee754_pow = .text:0x800E9188; // type:function size:0x88C +__ieee754_rem_pio2 = .text:0x800E9A14; // type:function size:0x3A0 +__kernel_cos = .text:0x800E9DB4; // type:function size:0xF4 +__kernel_rem_pio2 = .text:0x800E9EA8; // type:function size:0xE54 +__kernel_sin = .text:0x800EACFC; // type:function size:0xA0 +__kernel_tan = .text:0x800EAD9C; // type:function size:0x214 +atan = .text:0x800EAFB0; // type:function size:0x200 +copysign = .text:0x800EB1B0; // type:function size:0x28 +cos = .text:0x800EB1D8; // type:function size:0xD4 +floor = .text:0x800EB2AC; // type:function size:0x148 +frexp = .text:0x800EB3F4; // type:function size:0x8C +ldexp = .text:0x800EB480; // type:function size:0x1C4 +modf = .text:0x800EB644; // type:function size:0xFC +sin = .text:0x800EB740; // type:function size:0xD8 +tan = .text:0x800EB818; // type:function size:0x78 +acos = .text:0x800EB890; // type:function size:0x20 +asin = .text:0x800EB8B0; // type:function size:0x20 +atan2 = .text:0x800EB8D0; // type:function size:0x20 +fmod = .text:0x800EB8F0; // type:function size:0x20 +pow = .text:0x800EB910; // type:function size:0x20 +tanf = .text:0x800EB930; // type:function size:0x24 scope:weak +sinf = .text:0x800EB954; // type:function size:0x24 scope:weak +cosf = .text:0x800EB978; // type:function size:0x24 scope:weak +atan2f = .text:0x800EB99C; // type:function size:0x24 scope:weak +acosf = .text:0x800EB9C0; // type:function size:0x24 scope:weak +TRKNubMainLoop = .text:0x800EB9E4; // type:function size:0xF8 scope:global +TRKDestructEvent = .text:0x800EBADC; // type:function size:0x24 scope:global +fn_800EBB00 = .text:0x800EBB00; // type:function size:0x18 +fn_800EBB18 = .text:0x800EBB18; // type:function size:0xE0 +TRKGetNextEvent = .text:0x800EBBF8; // type:function size:0xB4 scope:global +TRKInitializeEventQueue = .text:0x800EBCAC; // type:function size:0x58 scope:global +TRKNubWelcome = .text:0x800EBD04; // type:function size:0x28 scope:global +TRKTerminateNub = .text:0x800EBD2C; // type:function size:0x24 scope:global +TRKInitializeNub = .text:0x800EBD50; // type:function size:0x134 scope:global +fn_800EBE84 = .text:0x800EBE84; // type:function size:0x1DC +fn_800EC060 = .text:0x800EC060; // type:function size:0xF0 +fn_800EC150 = .text:0x800EC150; // type:function size:0x98 +fn_800EC1E8 = .text:0x800EC1E8; // type:function size:0xE8 +fn_800EC2D0 = .text:0x800EC2D0; // type:function size:0xC8 +fn_800EC398 = .text:0x800EC398; // type:function size:0xB8 +fn_800EC450 = .text:0x800EC450; // type:function size:0x80 +fn_800EC4D0 = .text:0x800EC4D0; // type:function size:0xA8 +fn_800EC578 = .text:0x800EC578; // type:function size:0x68 +fn_800EC5E0 = .text:0x800EC5E0; // type:function size:0x88 +fn_800EC668 = .text:0x800EC668; // type:function size:0x64 +fn_800EC6CC = .text:0x800EC6CC; // type:function size:0x54 +fn_800EC720 = .text:0x800EC720; // type:function size:0x8C +fn_800EC7AC = .text:0x800EC7AC; // type:function size:0xA4 +fn_800EC850 = .text:0x800EC850; // type:function size:0x30 +fn_800EC880 = .text:0x800EC880; // type:function size:0x40 +fn_800EC8C0 = .text:0x800EC8C0; // type:function size:0x64 +TRKGetBuffer = .text:0x800EC924; // type:function size:0x2C scope:global +fn_800EC950 = .text:0x800EC950; // type:function size:0xC8 +TRKInitializeMessageBuffers = .text:0x800ECA18; // type:function size:0x74 scope:global +fn_800ECA8C = .text:0x800ECA8C; // type:function size:0x8 +TRKInitializeSerialHandler = .text:0x800ECA94; // type:function size:0x24 scope:global +fn_800ECAB8 = .text:0x800ECAB8; // type:function size:0x50 +TRKGetInput = .text:0x800ECB08; // type:function size:0x98 scope:global +fn_800ECBA0 = .text:0x800ECBA0; // type:function size:0x2B8 +usr_put_initialize = .text:0x800ECE58; // type:function size:0x4 scope:global +fn_800ECE5C = .text:0x800ECE5C; // type:function size:0x88 +TRKDispatchMessage = .text:0x800ECEE4; // type:function size:0x84 scope:global +TRKInitializeDispatcher = .text:0x800ECF68; // type:function size:0x18 scope:global +fn_800ECF80 = .text:0x800ECF80; // type:function size:0x1A4 +fn_800ED124 = .text:0x800ED124; // type:function size:0x100 +fn_800ED224 = .text:0x800ED224; // type:function size:0x530 +fn_800ED754 = .text:0x800ED754; // type:function size:0x154 +fn_800ED8A8 = .text:0x800ED8A8; // type:function size:0x2F8 +fn_800EDBA0 = .text:0x800EDBA0; // type:function size:0x3C8 +fn_800EDF68 = .text:0x800EDF68; // type:function size:0x3CC +fn_800EE334 = .text:0x800EE334; // type:function size:0x420 +fn_800EE754 = .text:0x800EE754; // type:function size:0x410 +fn_800EEB64 = .text:0x800EEB64; // type:function size:0x398 +fn_800EEEFC = .text:0x800EEEFC; // type:function size:0x230 +fn_800EF12C = .text:0x800EF12C; // type:function size:0x2D8 +fn_800EF404 = .text:0x800EF404; // type:function size:0xB8 +fn_800EF4BC = .text:0x800EF4BC; // type:function size:0xE4 +fn_800EF5A0 = .text:0x800EF5A0; // type:function size:0xBC +fn_800EF65C = .text:0x800EF65C; // type:function size:0xB0 +fn_800EF70C = .text:0x800EF70C; // type:function size:0xB8 +fn_800EF7C4 = .text:0x800EF7C4; // type:function size:0xC +fn_800EF7D0 = .text:0x800EF7D0; // type:function size:0x10 +fn_800EF7E0 = .text:0x800EF7E0; // type:function size:0x190 +fn_800EF970 = .text:0x800EF970; // type:function size:0x120 +fn_800EFA90 = .text:0x800EFA90; // type:function size:0x1A8 +fn_800EFC38 = .text:0x800EFC38; // type:function size:0x1A4 +fn_800EFDDC = .text:0x800EFDDC; // type:function size:0x2C4 +fn_800F00A0 = .text:0x800F00A0; // type:function size:0x8 +fn_800F00A8 = .text:0x800F00A8; // type:function size:0x8 +fn_800F00B0 = .text:0x800F00B0; // type:function size:0x8 +fn_800F00B8 = .text:0x800F00B8; // type:function size:0xD8 +fn_800F0190 = .text:0x800F0190; // type:function size:0x38 +fn_800F01C8 = .text:0x800F01C8; // type:function size:0xBC +fn_800F0284 = .text:0x800F0284; // type:function size:0x8 +fn_800F028C = .text:0x800F028C; // type:function size:0x8 +fn_800F0294 = .text:0x800F0294; // type:function size:0x3C +TRKInterruptHandler = .text:0x800F02D0; // type:function size:0x194 scope:global +TRKExceptionHandler = .text:0x800F0464; // type:function size:0x9C scope:global +TRKSwapAndGo = .text:0x800F0500; // type:function size:0xC4 scope:global +TRKInterruptHandlerEnableInterrupts = .text:0x800F05C4; // type:function size:0x54 scope:global +TRKTargetSetInputPendingPtr = .text:0x800F0618; // type:function size:0x10 scope:global +fn_800F0628 = .text:0x800F0628; // type:function size:0x21C +fn_800F0844 = .text:0x800F0844; // type:function size:0x18 +TRKTargetSetStopped = .text:0x800F085C; // type:function size:0x10 scope:global +TRKTargetStopped = .text:0x800F086C; // type:function size:0x10 scope:global +fn_800F087C = .text:0x800F087C; // type:function size:0x3C +TRKTargetSupportRequest = .text:0x800F08B8; // type:function size:0x208 scope:global +fn_800F0AC0 = .text:0x800F0AC0; // type:function size:0x10 +fn_800F0AD0 = .text:0x800F0AD0; // type:function size:0x7C +fn_800F0B4C = .text:0x800F0B4C; // type:function size:0x6C +fn_800F0BB8 = .text:0x800F0BB8; // type:function size:0xAC +fn_800F0C64 = .text:0x800F0C64; // type:function size:0x124 +TRKTargetInterrupt = .text:0x800F0D88; // type:function size:0x15C scope:global +TRKPostInterruptEvent = .text:0x800F0EE4; // type:function size:0xC0 scope:global +fn_800F0FA4 = .text:0x800F0FA4; // type:function size:0x60 +fn_800F1004 = .text:0x800F1004; // type:function size:0xA4 +fn_800F10A8 = .text:0x800F10A8; // type:function size:0x24 +fn_800F10CC = .text:0x800F10CC; // type:function size:0x438 +fn_800F1504 = .text:0x800F1504; // type:function size:0x170 +fn_800F1674 = .text:0x800F1674; // type:function size:0x13C +fn_800F17B0 = .text:0x800F17B0; // type:function size:0xF4 +fn_800F18A4 = .text:0x800F18A4; // type:function size:0x14C +fn_800F19F0 = .text:0x800F19F0; // type:function size:0x124 +fn_800F1B20 = .text:0x800F1B20; // type:function size:0x8 +fn_800F1B28 = .text:0x800F1B28; // type:function size:0x8 +fn_800F1B30 = .text:0x800F1B30; // type:function size:0x8 +fn_800F1B38 = .text:0x800F1B38; // type:function size:0x8 +InitMetroTRK = .text:0x800F1B40; // type:function size:0x94 scope:global +TRKInitializeTarget = .text:0x800F1BD4; // type:function size:0x4C scope:global +fn_800F1C20 = .text:0x800F1C20; // type:function size:0x40 +EnableMetroTRKInterrupts = .text:0x800F1C60; // type:function size:0x20 scope:global +TRKSaveExtended1Block = .text:0x800F1C80; // type:function size:0x1B8 scope:global +TRKRestoreExtended1Block = .text:0x800F1E38; // type:function size:0x1B8 scope:global +fn_800F1FF0 = .text:0x800F1FF0; // type:function size:0x8 +TRK_main = .text:0x800F1FF8; // type:function size:0x44 scope:global +TRKLoadContext = .text:0x800F203C; // type:function size:0x88 scope:global +TRKUARTInterruptHandler = .text:0x800F20C4; // type:function size:0x4 scope:global +TRK_board_display = .text:0x800F20C8; // type:function size:0x24 scope:global +UnreserveEXI2Port = .text:0x800F20EC; // type:function size:0x30 scope:global +ReserveEXI2Port = .text:0x800F211C; // type:function size:0x30 scope:global +fn_800F214C = .text:0x800F214C; // type:function size:0xF0 +fn_800F223C = .text:0x800F223C; // type:function size:0x28 +fn_800F2264 = .text:0x800F2264; // type:function size:0xE0 +fn_800F2344 = .text:0x800F2344; // type:function size:0x30 +TRKInitializeIntDrivenUART = .text:0x800F2374; // type:function size:0x3C scope:global +InitMetroTRKCommTable = .text:0x800F23B0; // type:function size:0x100 scope:global +TRKEXICallBack = .text:0x800F24B0; // type:function size:0x38 scope:global +TRKTargetContinue = .text:0x800F24E8; // type:function size:0x34 scope:global +fn_800F251C = .text:0x800F251C; // type:function size:0x10 +fn_800F252C = .text:0x800F252C; // type:function size:0xC +fn_800F2538 = .text:0x800F2538; // type:function size:0xBC +fn_800F25F4 = .text:0x800F25F4; // type:function size:0xBC +seqGetPrivateId = .text:0x800F26B0; // type:function size:0x68 +seqStartPlay = .text:0x800F2718; // type:function size:0xAC4 +StartPause = .text:0x800F31DC; // type:function size:0x64 +seqPause = .text:0x800F3240; // type:function size:0x27C +seqStop = .text:0x800F34BC; // type:function size:0x2B0 +seqKillInstancesByGroupID = .text:0x800F376C; // type:function size:0x90 +seqSpeed = .text:0x800F37FC; // type:function size:0xE4 +seqContinue = .text:0x800F38E0; // type:function size:0x108 +seqMute = .text:0x800F39E8; // type:function size:0xBC +seqVolume = .text:0x800F3AA4; // type:function size:0x1CC +seqCrossFade = .text:0x800F3C70; // type:function size:0xB58 +GenerateNextTrackEvent = .text:0x800F47C8; // type:function size:0x218 +HandleEvent = .text:0x800F49E0; // type:function size:0xA94 +InitTrackEvents = .text:0x800F5474; // type:function size:0x174 +HandleTrackEvents = .text:0x800F55E8; // type:function size:0x49C +seqHandle = .text:0x800F5A84; // type:function size:0x9F4 +seqInit = .text:0x800F6478; // type:function size:0x1A8 +synthSetBpm = .text:0x800F6620; // type:function size:0x44 +synthGetTicksPerSecond = .text:0x800F6664; // type:function size:0x34 +synthInitPortamento = .text:0x800F6698; // type:function size:0x78 +do_voice_portamento = .text:0x800F6710; // type:function size:0x2A0 +StartLayer = .text:0x800F69B0; // type:function size:0x3C0 +StartKeymap = .text:0x800F6D70; // type:function size:0x25C +synthStartSound = .text:0x800F6FCC; // type:function size:0x45C +LowPrecisionHandler = .text:0x800F7428; // type:function size:0x744 +ZeroOffsetHandler = .text:0x800F7B6C; // type:function size:0x6FC +synthAddJob = .text:0x800F8268; // type:function size:0x150 +synthStartSynthJobHandling = .text:0x800F83B8; // type:function size:0x64 +synthForceLowPrecisionUpdate = .text:0x800F841C; // type:function size:0x44 +synthKeyStateUpdate = .text:0x800F8460; // type:function size:0x28 +synthHandle = .text:0x800F8488; // type:function size:0x510 +synthFXGetMaxVoices = .text:0x800F8998; // type:function size:0x34 +synthFXStart = .text:0x800F89CC; // type:function size:0xC8 +synthFXSetCtrl = .text:0x800F8A94; // type:function size:0xE4 +synthFXSetCtrl14 = .text:0x800F8B78; // type:function size:0xE4 +synthFXCloneMidiSetup = .text:0x800F8C5C; // type:function size:0x84 +synthSendKeyOff = .text:0x800F8CE0; // type:function size:0x88 +synthVolume = .text:0x800F8D68; // type:function size:0x530 +synthIsFadeOutActive = .text:0x800F9298; // type:function size:0x54 +synthSetMusicVolumeType = .text:0x800F92EC; // type:function size:0x28 +synthHWMessageHandler = .text:0x800F9314; // type:function size:0xD0 +synthInit = .text:0x800F93E4; // type:function size:0x574 +synthExit = .text:0x800F9958; // type:function size:0x24 +sndSeqGetValid = .text:0x800F997C; // type:function size:0x30 +sndSeqPause = .text:0x800F99AC; // type:function size:0x38 +sndSeqStop = .text:0x800F99E4; // type:function size:0x38 +sndSeqSpeed = .text:0x800F9A1C; // type:function size:0x48 +sndSeqContinue = .text:0x800F9A64; // type:function size:0x38 +sndSeqMute = .text:0x800F9A9C; // type:function size:0x58 +sndSeqVolume = .text:0x800F9AF4; // type:function size:0x68 +sndSeqGetMidiCtrl = .text:0x800F9B5C; // type:function size:0x84 +seqGetMIDIPriority = .text:0x800F9BE0; // type:function size:0x1C +sndFXCtrl = .text:0x800F9BFC; // type:function size:0x60 +sndFXCtrl14 = .text:0x800F9C5C; // type:function size:0x60 +sndFXKeyOff = .text:0x800F9CBC; // type:function size:0x40 +sndFXStartParaInfo = .text:0x800F9CFC; // type:function size:0xE0 +sndFXCheck = .text:0x800F9DDC; // type:function size:0x40 +sndSendMessage = .text:0x800F9E1C; // type:function size:0x50 +sndVolume = .text:0x800F9E6C; // type:function size:0x60 +sndMasterVolume = .text:0x800F9ECC; // type:function size:0x94 +sndOutputMode = .text:0x800F9F60; // type:function size:0xEC +sndSetAuxProcessingCallbacks = .text:0x800FA04C; // type:function size:0x158 +synthActivateStudio = .text:0x800FA1A4; // type:function size:0xA8 +synthDeactivateStudio = .text:0x800FA24C; // type:function size:0xF0 +synthAddStudioInput = .text:0x800FA33C; // type:function size:0x20 +synthRemoveStudioInput = .text:0x800FA35C; // type:function size:0x20 +streamInit = .text:0x800FA37C; // type:function size:0xBC +SetHWMix = .text:0x800FA438; // type:function size:0x8C +streamHandle = .text:0x800FA4C4; // type:function size:0x8AC +streamCorrectLoops = .text:0x800FAD70; // type:function size:0x4 +streamKill = .text:0x800FAD74; // type:function size:0x84 +GetPrivateIndex = .text:0x800FADF8; // type:function size:0x160 +sndStreamARAMUpdate = .text:0x800FAF58; // type:function size:0x2C4 +CheckOutputMode = .text:0x800FB21C; // type:function size:0x34 +SetupVolumeAndPan = .text:0x800FB250; // type:function size:0x44 +streamOutputModeChanged = .text:0x800FB294; // type:function size:0x130 +sndStreamAllocEx = .text:0x800FB3C4; // type:function size:0x458 +sndStreamAllocLength = .text:0x800FB81C; // type:function size:0x44 +sndStreamADPCMParameter = .text:0x800FB860; // type:function size:0x6E8 +sndStreamMixParameterEx = .text:0x800FBF48; // type:function size:0x560 +sndStreamFrq = .text:0x800FC4A8; // type:function size:0x654 +sndStreamFree = .text:0x800FCAFC; // type:function size:0x6B8 +sndStreamActivate = .text:0x800FD1B4; // type:function size:0x634 +sndStreamDeactivate = .text:0x800FD7E8; // type:function size:0x700 +dataInsertKeymap = .text:0x800FDEE8; // type:function size:0x1F0 +dataRemoveKeymap = .text:0x800FE0D8; // type:function size:0x17C +dataInsertLayer = .text:0x800FE254; // type:function size:0x248 +dataRemoveLayer = .text:0x800FE49C; // type:function size:0x1C4 +dataInsertCurve = .text:0x800FE660; // type:function size:0x204 +dataRemoveCurve = .text:0x800FE864; // type:function size:0x17C +dataInsertSDir = .text:0x800FE9E0; // type:function size:0x188 +dataRemoveSDir = .text:0x800FEB68; // type:function size:0x2C8 +dataAddSampleReference = .text:0x800FEE30; // type:function size:0xD8 +dataRemoveSampleReference = .text:0x800FEF08; // type:function size:0x98 +dataInsertFX = .text:0x800FEFA0; // type:function size:0x11C +dataRemoveFX = .text:0x800FF0BC; // type:function size:0x15C +dataInsertMacro = .text:0x800FF218; // type:function size:0x304 +dataRemoveMacro = .text:0x800FF51C; // type:function size:0x284 +maccmp = .text:0x800FF7A0; // type:function size:0x10 +dataGetMacro = .text:0x800FF7B0; // type:function size:0x8C +smpcmp = .text:0x800FF83C; // type:function size:0x10 +dataGetSample = .text:0x800FF84C; // type:function size:0x128 +curvecmp = .text:0x800FF974; // type:function size:0x10 +dataGetCurve = .text:0x800FF984; // type:function size:0x5C +dataGetKeymap = .text:0x800FF9E0; // type:function size:0x5C +layercmp = .text:0x800FFA3C; // type:function size:0x10 +dataGetLayer = .text:0x800FFA4C; // type:function size:0x7C +fxcmp = .text:0x800FFAC8; // type:function size:0x10 +dataGetFX = .text:0x800FFAD8; // type:function size:0x9C +dataInit = .text:0x800FFB74; // type:function size:0xE4 +dataExit = .text:0x800FFC58; // type:function size:0x20 +mcmdWait = .text:0x800FFC78; // type:function size:0x2F0 +mcmdGosub = .text:0x800FFF68; // type:function size:0xD0 +mcmdLoop = .text:0x80100038; // type:function size:0x154 +mcmdPlayMacro = .text:0x8010018C; // type:function size:0x18C +mcmdAddKey = .text:0x80100318; // type:function size:0xD8 +mcmdStartSample = .text:0x801003F0; // type:function size:0x1FC +mcmdVibrato = .text:0x801005EC; // type:function size:0x17C +DoSetPitch = .text:0x80100768; // type:function size:0x1A0 +mcmdSetADSR = .text:0x80100908; // type:function size:0x258 +mcmdSetADSRFromCtrl = .text:0x80100B60; // type:function size:0x12C +mcmdSetPitchADSR = .text:0x80100C8C; // type:function size:0x27C +mcmdSetPanning = .text:0x80100F08; // type:function size:0x9C +mcmdSetSurroundPanning = .text:0x80100FA4; // type:function size:0x9C +mcmdScaleVolume = .text:0x80101040; // type:function size:0x134 +mcmdEnvelope = .text:0x80101174; // type:function size:0x130 +mcmdFadeIn = .text:0x801012A4; // type:function size:0x13C +mcmdRandomKey = .text:0x801013E0; // type:function size:0x19C +mcmdVolumeSelect = .text:0x8010157C; // type:function size:0x104 +mcmdPanningSelect = .text:0x80101680; // type:function size:0x104 +mcmdPitchWheelSelect = .text:0x80101784; // type:function size:0x104 +mcmdModWheelSelect = .text:0x80101888; // type:function size:0x104 +mcmdPedalSelect = .text:0x8010198C; // type:function size:0x104 +mcmdPortamentoSelect = .text:0x80101A90; // type:function size:0x104 +mcmdReverbSelect = .text:0x80101B94; // type:function size:0x104 +mcmdPreAuxASelect = .text:0x80101C98; // type:function size:0x104 +mcmdPreAuxBSelect = .text:0x80101D9C; // type:function size:0x104 +mcmdPostAuxBSelect = .text:0x80101EA0; // type:function size:0x104 +mcmdSurroundPanningSelect = .text:0x80101FA4; // type:function size:0x104 +mcmdDopplerSelect = .text:0x801020A8; // type:function size:0x104 +mcmdTremoloSelect = .text:0x801021AC; // type:function size:0x104 +mcmdAuxAFXSelect = .text:0x801022B0; // type:function size:0x17C +mcmdAuxBFXSelect = .text:0x8010242C; // type:function size:0x17C +mcmdPortamento = .text:0x801025A8; // type:function size:0x164 +varGet = .text:0x8010270C; // type:function size:0x68 +mcmdVarCalculation = .text:0x80102774; // type:function size:0x220 +mcmdIfVarCompare = .text:0x80102994; // type:function size:0x14C +macPostMessage = .text:0x80102AE0; // type:function size:0xBC +mcmdSendMessage = .text:0x80102B9C; // type:function size:0x244 +mcmdGetVID = .text:0x80102DE0; // type:function size:0x80 +mcmdSetKeyGroup = .text:0x80102E60; // type:function size:0xDC +macHandleActive = .text:0x80102F3C; // type:function size:0xF58 +macHandle = .text:0x80103E94; // type:function size:0x150 +macSampleEndNotify = .text:0x80103FE4; // type:function size:0xAC +macSetExternalKeyoff = .text:0x80104090; // type:function size:0xF0 +macSetPedalState = .text:0x80104180; // type:function size:0x108 +TimeQueueAdd = .text:0x80104288; // type:function size:0xA4 +macMakeActive = .text:0x8010432C; // type:function size:0x108 +macMakeInactive = .text:0x80104434; // type:function size:0xFC +macStart = .text:0x80104530; // type:function size:0x438 +macInit = .text:0x80104968; // type:function size:0x68 +vidInit = .text:0x801049D0; // type:function size:0xE0 +vidRemoveVoiceReferences = .text:0x80104AB0; // type:function size:0x350 +vidMakeRoot = .text:0x80104E00; // type:function size:0x14 +vidMakeNew = .text:0x80104E14; // type:function size:0x104 +vidGetInternalId = .text:0x80104F18; // type:function size:0x50 +voiceSetPriority = .text:0x80104F68; // type:function size:0x24C +voiceAllocate = .text:0x801051B4; // type:function size:0x460 +voiceFree = .text:0x80105614; // type:function size:0x1C4 +synthInitAllocationAids = .text:0x801057D8; // type:function size:0x2A0 +voiceBlock = .text:0x80105A78; // type:function size:0xFC +voiceUnblock = .text:0x80105B74; // type:function size:0x218 +voiceKill = .text:0x80105D8C; // type:function size:0x234 +voiceKillSound = .text:0x80105FC0; // type:function size:0xC4 +synthKillVoicesByMacroReferences = .text:0x80106084; // type:function size:0x15C +voiceIsLastStarted = .text:0x801061E0; // type:function size:0x74 +voiceSetLastStarted = .text:0x80106254; // type:function size:0x54 +voiceResetLastStarted = .text:0x801062A8; // type:function size:0x74 +voiceInitLastStarted = .text:0x8010631C; // type:function size:0x144 +sndPitchUpOne = .text:0x80106460; // type:function size:0x3C +sndGetPitch = .text:0x8010649C; // type:function size:0xE4 +adsrConvertTimeCents = .text:0x80106580; // type:function size:0x58 +salChangeADSRState = .text:0x801065D8; // type:function size:0x26C +adsrSetup = .text:0x80106844; // type:function size:0x28 +adsrStartRelease = .text:0x8010686C; // type:function size:0x150 +adsrRelease = .text:0x801069BC; // type:function size:0x168 +adsrHandle = .text:0x80106B24; // type:function size:0x198 +adsrHandleLowPrecision = .text:0x80106CBC; // type:function size:0x84 +vsInit = .text:0x80106D40; // type:function size:0xBC +vsSampleStartNotify = .text:0x80106DFC; // type:function size:0x248 +vsSampleEndNotify = .text:0x80107044; // type:function size:0xA8 +vsUpdateBuffer = .text:0x801070EC; // type:function size:0x1F8 +vsSampleUpdates = .text:0x801072E4; // type:function size:0x1E4 +dataInitStack = .text:0x801074C8; // type:function size:0xC +InsertData = .text:0x801074D4; // type:function size:0x27C +sndPushGroup = .text:0x80107750; // type:function size:0x32C +sndPopGroup = .text:0x80107A7C; // type:function size:0x33C +seqPlaySong = .text:0x80107DB8; // type:function size:0x14C +sndSeqPlayEx = .text:0x80107F04; // type:function size:0x11C +salInitDspCtrl = .text:0x80108020; // type:function size:0x3B4 +salInitHRTFBuffer = .text:0x801083D4; // type:function size:0x38 +salExitDspCtrl = .text:0x8010840C; // type:function size:0xE0 +salActivateStudio = .text:0x801084EC; // type:function size:0x150 +salDeactivateStudio = .text:0x8010863C; // type:function size:0x20 +salCheckVolErrorAndResetDelta = .text:0x8010865C; // type:function size:0xF4 +sal_setup_dspvol = .text:0x80108750; // type:function size:0x48 +sal_update_hostplayinfo = .text:0x80108798; // type:function size:0x74 +DoDepopFade = .text:0x8010880C; // type:function size:0xAC +HandleDepopVoice = .text:0x801088B8; // type:function size:0x2DC +SortVoices = .text:0x80108B94; // type:function size:0x258 +salBuildCommandList = .text:0x80108DEC; // type:function size:0x21B8 +salSynthSendMessage = .text:0x8010AFA4; // type:function size:0x44 +salActivateVoice = .text:0x8010AFE8; // type:function size:0xA0 +salDeactivateVoice = .text:0x8010B088; // type:function size:0x60 +salReconnectVoice = .text:0x8010B0E8; // type:function size:0xC8 +salAddStudioInput = .text:0x8010B1B0; // type:function size:0xA8 +salRemoveStudioInput = .text:0x8010B258; // type:function size:0x84 +salHandleAuxProcessing = .text:0x8010B2DC; // type:function size:0x158 +salCalcVolume = .text:0x8010B434; // type:function size:0x6F0 +CheckRoomStatus = .text:0x8010BB24; // type:function size:0x4B4 +CalcEmitter = .text:0x8010BFD8; // type:function size:0x51C +sndUpdateEmitter = .text:0x8010C4F4; // type:function size:0x130 +sndCheckEmitter = .text:0x8010C624; // type:function size:0x20 +AddEmitter = .text:0x8010C644; // type:function size:0x3F8 +sndAddEmitterParaEx = .text:0x8010CA3C; // type:function size:0x50 +sndRemoveEmitter = .text:0x8010CA8C; // type:function size:0xA8 +sndEmitterVoiceID = .text:0x8010CB34; // type:function size:0x5C +s3dKillEmitterByFXID = .text:0x8010CB90; // type:function size:0xFC +sndUpdateListener = .text:0x8010CC8C; // type:function size:0x204 +sndAddListenerEx = .text:0x8010CE90; // type:function size:0x230 +sndRemoveListener = .text:0x8010D0C0; // type:function size:0xD0 +AddStartingEmitter = .text:0x8010D190; // type:function size:0x14C +StartContinousEmitters = .text:0x8010D2DC; // type:function size:0x3B0 +s3dHandle = .text:0x8010D68C; // type:function size:0x82C +s3dInit = .text:0x8010DEB8; // type:function size:0x38 +s3dExit = .text:0x8010DEF0; // type:function size:0x4 +sndInit = .text:0x8010DEF4; // type:function size:0x118 +sndQuit = .text:0x8010E00C; // type:function size:0x34 +sndIsInstalled = .text:0x8010E040; // type:function size:0x8 +salApplyMatrix = .text:0x8010E048; // type:function size:0xAC +salNormalizeVector = .text:0x8010E0F4; // type:function size:0xB4 +salCrossProduct = .text:0x8010E1A8; // type:function size:0x64 +salInvertMatrix = .text:0x8010E20C; // type:function size:0x1FC +inpSetGlobalMIDIDirtyFlag = .text:0x8010E408; // type:function size:0x24 +inpSetMidiCtrl = .text:0x8010E42C; // type:function size:0x608 +inpSetMidiCtrl14 = .text:0x8010EA34; // type:function size:0x124 +inpResetMidiCtrl = .text:0x8010EB58; // type:function size:0xF0 +inpGetMidiCtrl = .text:0x8010EC48; // type:function size:0x2C4 +inpGetChannelDefaults = .text:0x8010EF0C; // type:function size:0x34 +inpResetChannelDefaults = .text:0x8010EF40; // type:function size:0x3C +inpAddCtrl = .text:0x8010EF7C; // type:function size:0x98 +inpFXCopyCtrl = .text:0x8010F014; // type:function size:0x114 +inpSetMidiLastNote = .text:0x8010F128; // type:function size:0x3C +inpGetMidiLastNote = .text:0x8010F164; // type:function size:0x3C +_GetInputValue = .text:0x8010F1A0; // type:function size:0x4A0 +inpGetVolume = .text:0x8010F640; // type:function size:0x48 +inpGetPanning = .text:0x8010F688; // type:function size:0x48 +inpGetSurPanning = .text:0x8010F6D0; // type:function size:0x48 +inpGetPitchBend = .text:0x8010F718; // type:function size:0x48 +inpGetDoppler = .text:0x8010F760; // type:function size:0x48 +inpGetModulation = .text:0x8010F7A8; // type:function size:0x48 +inpGetPedal = .text:0x8010F7F0; // type:function size:0x48 +inpGetPreAuxA = .text:0x8010F838; // type:function size:0x48 +inpGetReverb = .text:0x8010F880; // type:function size:0x48 +inpGetPreAuxB = .text:0x8010F8C8; // type:function size:0x48 +inpGetPostAuxB = .text:0x8010F910; // type:function size:0x48 +inpGetTremolo = .text:0x8010F958; // type:function size:0x48 +inpGetAuxA = .text:0x8010F9A0; // type:function size:0xB4 +inpGetAuxB = .text:0x8010FA54; // type:function size:0xB4 +inpInit = .text:0x8010FB08; // type:function size:0x284 +inpTranslateExCtrl = .text:0x8010FD8C; // type:function size:0x70 +inpGetExCtrl = .text:0x8010FDFC; // type:function size:0xFC +inpSetExCtrl = .text:0x8010FEF8; // type:function size:0x1E4 +sndRand = .text:0x801100DC; // type:function size:0x1C +sndSin = .text:0x801100F8; // type:function size:0x8C +sndBSearch = .text:0x80110184; // type:function size:0xA4 +sndConvertMs = .text:0x80110228; // type:function size:0x10 +sndConvertTicks = .text:0x80110238; // type:function size:0x48 +sndConvert2Ms = .text:0x80110280; // type:function size:0x8 +snd_handle_irq = .text:0x80110288; // type:function size:0x154 +hwInit = .text:0x801103DC; // type:function size:0xB8 +hwExit = .text:0x80110494; // type:function size:0x34 +hwSetTimeOffset = .text:0x801104C8; // type:function size:0x8 +hwGetTimeOffset = .text:0x801104D0; // type:function size:0x8 +hwIsActive = .text:0x801104D8; // type:function size:0x20 +hwSetMesgCallback = .text:0x801104F8; // type:function size:0x8 +hwSetPriority = .text:0x80110500; // type:function size:0x14 +hwInitSamplePlayback = .text:0x80110514; // type:function size:0x1B4 +hwBreak = .text:0x801106C8; // type:function size:0x50 +hwSetADSR = .text:0x80110718; // type:function size:0x1AC +hwSetVirtualSampleLoopBuffer = .text:0x801108C4; // type:function size:0x20 +hwGetVirtualSampleState = .text:0x801108E4; // type:function size:0x14 +hwGetSampleType = .text:0x801108F8; // type:function size:0x14 +hwGetSampleID = .text:0x8011090C; // type:function size:0x14 +hwSetStreamLoopPS = .text:0x80110920; // type:function size:0x14 +hwStart = .text:0x80110934; // type:function size:0x3C +hwKeyOff = .text:0x80110970; // type:function size:0x28 +hwSetPitch = .text:0x80110998; // type:function size:0x78 +hwSetSRCType = .text:0x80110A10; // type:function size:0x2C +hwSetPolyPhaseFilter = .text:0x80110A3C; // type:function size:0x2C +hwSetITDMode = .text:0x80110A68; // type:function size:0x5C +hwSetVolume = .text:0x80110AC4; // type:function size:0x2C0 +hwOff = .text:0x80110D84; // type:function size:0x2C +hwSetAUXProcessingCallbacks = .text:0x80110DB0; // type:function size:0x28 +hwActivateStudio = .text:0x80110DD8; // type:function size:0x20 +hwDeactivateStudio = .text:0x80110DF8; // type:function size:0x20 +hwAddInput = .text:0x80110E18; // type:function size:0x34 +hwRemoveInput = .text:0x80110E4C; // type:function size:0x34 +hwChangeStudio = .text:0x80110E80; // type:function size:0x2C +hwGetPos = .text:0x80110EAC; // type:function size:0xA4 +hwFlushStream = .text:0x80110F50; // type:function size:0x90 +hwInitStream = .text:0x80110FE0; // type:function size:0x20 +hwExitStream = .text:0x80111000; // type:function size:0x20 +hwGetStreamPlayBuffer = .text:0x80111020; // type:function size:0x24 +hwTransAddr = .text:0x80111044; // type:function size:0x4 +hwFrq2Pitch = .text:0x80111048; // type:function size:0x5C +hwInitSampleMem = .text:0x801110A4; // type:function size:0x24 +hwExitSampleMem = .text:0x801110C8; // type:function size:0x20 +hwSaveSample = .text:0x801110E8; // type:function size:0x94 +hwRemoveSample = .text:0x8011117C; // type:function size:0x84 +hwSyncSampleMem = .text:0x80111200; // type:function size:0x20 +hwFrameDone = .text:0x80111220; // type:function size:0x4 +sndSetHooks = .text:0x80111224; // type:function size:0x14 +hwDisableHRTF = .text:0x80111238; // type:function size:0xC +hwGetVirtualSampleID = .text:0x80111244; // type:function size:0x28 +hwVoiceInStartup = .text:0x8011126C; // type:function size:0x20 +aramQueueCallback = .text:0x8011128C; // type:function size:0xA0 +aramUploadData = .text:0x8011132C; // type:function size:0x1DC +aramSyncTransferQueue = .text:0x80111508; // type:function size:0x18 +aramInit = .text:0x80111520; // type:function size:0x2EC +aramExit = .text:0x8011180C; // type:function size:0x4 +aramGetZeroBuffer = .text:0x80111810; // type:function size:0x20 +aramStoreData = .text:0x80111830; // type:function size:0x3BC +aramRemoveData = .text:0x80111BEC; // type:function size:0x18 +InitStreamBuffers = .text:0x80111C04; // type:function size:0xC4 +aramAllocateStreamBuffer = .text:0x80111CC8; // type:function size:0x108 +aramGetStreamBufferAddress = .text:0x80111DD0; // type:function size:0x38 +aramFreeStreamBuffer = .text:0x80111E08; // type:function size:0xF8 +salCallback = .text:0x80111F00; // type:function size:0xA8 +dspInitCallback = .text:0x80111FA8; // type:function size:0x10 +dspResumeCallback = .text:0x80111FB8; // type:function size:0x64 +salInitAi = .text:0x8011201C; // type:function size:0xC8 +salStartAi = .text:0x801120E4; // type:function size:0x20 +salExitAi = .text:0x80112104; // type:function size:0x34 +salAiGetDest = .text:0x80112138; // type:function size:0x30 +salInitDsp = .text:0x80112168; // type:function size:0xBC +salExitDsp = .text:0x80112224; // type:function size:0x34 +salCtrlDsp = .text:0x80112258; // type:function size:0x74 +salGetStartDelay = .text:0x801122CC; // type:function size:0x4C +hwInitIrq = .text:0x80112318; // type:function size:0x2C +hwExitIrq = .text:0x80112344; // type:function size:0x4 +hwEnableIrq = .text:0x80112348; // type:function size:0x38 +hwDisableIrq = .text:0x80112380; // type:function size:0x38 +hwIRQEnterCritical = .text:0x801123B8; // type:function size:0x20 +hwIRQLeaveCritical = .text:0x801123D8; // type:function size:0x20 +salMalloc = .text:0x801123F8; // type:function size:0x28 +salFree = .text:0x80112420; // type:function size:0x2C +sndAuxCallbackReverbSTD = .text:0x8011244C; // type:function size:0x5C +sndAuxCallbackPrepareReverbSTD = .text:0x801124A8; // type:function size:0x3C +sndAuxCallbackShutdownReverbSTD = .text:0x801124E4; // type:function size:0x24 +ReverbSTDCreate = .text:0x80112508; // type:function size:0x428 +fn_80112930 = .text:0x80112930; // type:function size:0x3B4 +ReverbSTDCallback = .text:0x80112CE4; // type:function size:0x24 +ReverbSTDFree = .text:0x80112D08; // type:function size:0xBC +sndAuxCallbackReverbHI = .text:0x80112DC4; // type:function size:0x5C +sndAuxCallbackPrepareReverbHI = .text:0x80112E20; // type:function size:0x40 +sndAuxCallbackShutdownReverbHI = .text:0x80112E60; // type:function size:0x24 +ReverbHICreate = .text:0x80112E84; // type:function size:0x50C +DoCrossTalk = .text:0x80113390; // type:function size:0x190 +HandleReverb = .text:0x80113520; // type:function size:0x50C +ReverbHICallback = .text:0x80113A2C; // type:function size:0xE0 +ReverbHIFree = .text:0x80113B0C; // type:function size:0xBC +sndAuxCallbackDelay = .text:0x80113BC8; // type:function size:0x168 +sndAuxCallbackUpdateSettingsDelay = .text:0x80113D30; // type:function size:0x1D0 +sndAuxCallbackPrepareDelay = .text:0x80113F00; // type:function size:0x28 +sndAuxCallbackShutdownDelay = .text:0x80113F28; // type:function size:0x4C +do_src1 = .text:0x80113F74; // type:function size:0x198 +do_src2 = .text:0x8011410C; // type:function size:0x1EC +sndAuxCallbackChorus = .text:0x801142F8; // type:function size:0x2BC +sndAuxCallbackPrepareChorus = .text:0x801145B4; // type:function size:0x200 +sndAuxCallbackShutdownChorus = .text:0x801147B4; // type:function size:0x28 +DBClose = .text:0x801147DC; // type:function size:0x4 scope:global +DBOpen = .text:0x801147E0; // type:function size:0x4 scope:global +DBWrite = .text:0x801147E4; // type:function size:0x260 scope:global +DBRead = .text:0x80114A44; // type:function size:0x8C scope:global +DBQueryData = .text:0x80114AD0; // type:function size:0x9C scope:global +DBInitInterrupts = .text:0x80114B6C; // type:function size:0x54 scope:global +DBInitComm = .text:0x80114BC0; // type:function size:0x78 scope:global +fn_80114C38 = .text:0x80114C38; // type:function size:0x40 +fn_80114C78 = .text:0x80114C78; // type:function size:0x3C +fn_80114CB4 = .text:0x80114CB4; // type:function size:0xAC +fn_80114D60 = .text:0x80114D60; // type:function size:0xDC +fn_80114E3C = .text:0x80114E3C; // type:function size:0xDC +fn_80114F18 = .text:0x80114F18; // type:function size:0xAC +fn_80114FC4 = .text:0x80114FC4; // type:function size:0x298 +EXI2_Init = .text:0x8011525C; // type:function size:0x4 scope:global +EXI2_EnableInterrupts = .text:0x80115260; // type:function size:0x4 scope:global +EXI2_Poll = .text:0x80115264; // type:function size:0x8 scope:global +EXI2_ReadN = .text:0x8011526C; // type:function size:0x8 scope:global +EXI2_WriteN = .text:0x80115274; // type:function size:0x8 scope:global +EXI2_Reserve = .text:0x8011527C; // type:function size:0x4 scope:global +EXI2_Unreserve = .text:0x80115280; // type:function size:0x4 scope:global +AMC_IsStub = .text:0x80115284; // type:function size:0x8 scope:global +Hu_IsStub = .text:0x8011528C; // type:function size:0x8 scope:weak +HuSetVecF = .text:0x80115294; // type:function size:0x10 +HuSubVecF = .text:0x801152A4; // type:function size:0x34 +fn_801152D8 = .text:0x801152D8; // type:function size:0x6C +fn_80115344 = .text:0x80115344; // type:function size:0x27C +fn_801155C0 = .text:0x801155C0; // type:function size:0x15C +fn_8011571C = .text:0x8011571C; // type:function size:0xB4 +fn_801157D0 = .text:0x801157D0; // type:function size:0x31C +fn_80115AEC = .text:0x80115AEC; // type:function size:0x48 +fn_80115B34 = .text:0x80115B34; // type:function size:0x48 +fn_80115B7C = .text:0x80115B7C; // type:function size:0x68 +fn_80115BE4 = .text:0x80115BE4; // type:function size:0xD8 +fn_80115CBC = .text:0x80115CBC; // type:function size:0xFC +msmSysRegularProc = .text:0x80115DB8; // type:function size:0x4 +msmSysGetOutputMode = .text:0x80115DBC; // type:function size:0x14 +msmSysSetOutputMode = .text:0x80115DD0; // type:function size:0xD8 +msmSysSetAux = .text:0x80115EA8; // type:function size:0x114 +msmSysGetSampSize = .text:0x80115FBC; // type:function size:0x28 +msmSysDelGroupAll = .text:0x80115FE4; // type:function size:0x140 +msmSysDelGroupBase = .text:0x80116124; // type:function size:0x28C +msmSysLoadGroupBase = .text:0x801163B0; // type:function size:0x298 +msmSysLoadGroupSet = .text:0x80116648; // type:function size:0x3F0 +fn_80116A38 = .text:0x80116A38; // type:function size:0x3B4 +msmSysLoadGroup = .text:0x80116DEC; // type:function size:0x278 +msmSysCheckInit = .text:0x80117064; // type:function size:0x20 +msmSysInit = .text:0x80117084; // type:function size:0x474 +fn_801174F8 = .text:0x801174F8; // type:function size:0xC8 +fn_801175C0 = .text:0x801175C0; // type:function size:0x104 +fn_801176C4 = .text:0x801176C4; // type:function size:0x64 +fn_80117728 = .text:0x80117728; // type:function size:0x30 +fn_80117758 = .text:0x80117758; // type:function size:0x34 +fn_8011778C = .text:0x8011778C; // type:function size:0x2C +fn_801177B8 = .text:0x801177B8; // type:function size:0x60 +fn_80117818 = .text:0x80117818; // type:function size:0x154 +fn_8011796C = .text:0x8011796C; // type:function size:0x174 +fn_80117AE0 = .text:0x80117AE0; // type:function size:0x1BC +msmMusFdoutEnd = .text:0x80117C9C; // type:function size:0x4 +msmMusPeriodicProc = .text:0x80117CA0; // type:function size:0x1CC +msmMusGetMidiCtrl = .text:0x80117E6C; // type:function size:0x9C +msmMusGetNumPlay = .text:0x80117F08; // type:function size:0x38 +msmMusGetStatus = .text:0x80117F40; // type:function size:0x3C +msmMusSetMasterVolume = .text:0x80117F7C; // type:function size:0x30 +msmMusSetParam = .text:0x80117FAC; // type:function size:0x16C +msmMusPauseAll = .text:0x80118118; // type:function size:0x88 +msmMusPause = .text:0x801181A0; // type:function size:0x74 +msmMusStopAll = .text:0x80118214; // type:function size:0x134 +msmMusStop = .text:0x80118348; // type:function size:0xCC +msmMusPlay = .text:0x80118414; // type:function size:0x328 +msmMusInit = .text:0x8011873C; // type:function size:0x174 +fn_801188B0 = .text:0x801188B0; // type:function size:0x250 +fn_80118B00 = .text:0x80118B00; // type:function size:0x184 +msmSePeriodicProc = .text:0x80118C84; // type:function size:0x270 +msmSeGetIndexPtr = .text:0x80118EF4; // type:function size:0x30 +msmSeDelListener = .text:0x80118F24; // type:function size:0x4C +msmSeUpdataListener = .text:0x80118F70; // type:function size:0xD8 +msmSeSetListener = .text:0x80119048; // type:function size:0x13C +msmSeGetEntryID = .text:0x80119184; // type:function size:0x74 +msmSeGetNumPlay = .text:0x801191F8; // type:function size:0x38 +msmSeGetStatus = .text:0x80119230; // type:function size:0x60 +msmSeSetMasterVolume = .text:0x80119290; // type:function size:0x30 +msmSeSetParam = .text:0x801192C0; // type:function size:0x320 +msmSePauseAll = .text:0x801195E0; // type:function size:0x80 +msmSeStopAll = .text:0x80119660; // type:function size:0x168 +msmSeStop = .text:0x801197C8; // type:function size:0xFC +msmSePlay = .text:0x801198C4; // type:function size:0x480 +msmSeInit = .text:0x80119D44; // type:function size:0x130 +msmStreamGetStatus = .text:0x80119E74; // type:function size:0xC8 +msmStreamSetMasterVolume = .text:0x80119F3C; // type:function size:0x118 +msmStreamStopAll = .text:0x8011A054; // type:function size:0xE0 +msmStreamStop = .text:0x8011A134; // type:function size:0x204 +msmStreamPlay = .text:0x8011A338; // type:function size:0x88 +msmStreamPeriodicProc = .text:0x8011A3C0; // type:function size:0x8C +msmStreamSetOutputMode = .text:0x8011A44C; // type:function size:0x114 +msmStreamAmemFree = .text:0x8011A560; // type:function size:0x68 +msmStreamAmemAlloc = .text:0x8011A5C8; // type:function size:0x10C +msmStreamInit = .text:0x8011A6D4; // type:function size:0x2A8 +msmStreamPauseOff = .text:0x8011A97C; // type:function size:0x2B8 +msmStreamPauseOn = .text:0x8011AC34; // type:function size:0x1AC +fn_8011ADE0 = .text:0x8011ADE0; // type:function size:0x2E8 +fn_8011B0C8 = .text:0x8011B0C8; // type:function size:0x33C +fn_8011B404 = .text:0x8011B404; // type:function size:0x13C +fn_8011B540 = .text:0x8011B540; // type:function size:0xE0 +fn_8011B620 = .text:0x8011B620; // type:function size:0x448 +fn_8011BA68 = .text:0x8011BA68; // type:function size:0x2DC +fn_8011BD44 = .text:0x8011BD44; // type:function size:0xD0 +fn_8011BE14 = .text:0x8011BE14; // type:function size:0x320 +fn_8011C134 = .text:0x8011C134; // type:function size:0x4A8 +fn_8011C5DC = .text:0x8011C5DC; // type:function size:0x188 +fn_8011C764 = .text:0x8011C764; // type:function size:0x17C +fn_8011C8E0 = .text:0x8011C8E0; // type:function size:0x214 +fn_8011CAF4 = .text:0x8011CAF4; // type:function size:0x4 +fn_8011CAF8 = .text:0x8011CAF8; // type:function size:0x4 +fn_8011CAFC = .text:0x8011CAFC; // type:function size:0x4 +fn_8011CB00 = .text:0x8011CB00; // type:function size:0x4 +fn_8011CB04 = .text:0x8011CB04; // type:function size:0x4 +fn_8011CB08 = .text:0x8011CB08; // type:function size:0x4 +fn_8011CB0C = .text:0x8011CB0C; // type:function size:0x4 +fn_8011CB10 = .text:0x8011CB10; // type:function size:0x4 +fn_8011CB14 = .text:0x8011CB14; // type:function size:0x4 +fn_8011CB18 = .text:0x8011CB18; // type:function size:0x4 +fn_8011CB1C = .text:0x8011CB1C; // type:function size:0x4 +fn_8011CB20 = .text:0x8011CB20; // type:function size:0x4 +fn_8011CB24 = .text:0x8011CB24; // type:function size:0x4 +fn_8011CB28 = .text:0x8011CB28; // type:function size:0x4 +fn_8011CB2C = .text:0x8011CB2C; // type:function size:0x4 +fn_8011CB30 = .text:0x8011CB30; // type:function size:0x4 +fn_8011CB34 = .text:0x8011CB34; // type:function size:0x4 +fn_8011CB38 = .text:0x8011CB38; // type:function size:0x4 +fn_8011CB3C = .text:0x8011CB3C; // type:function size:0x4 +fn_8011CB40 = .text:0x8011CB40; // type:function size:0x4 +fn_8011CB44 = .text:0x8011CB44; // type:function size:0x4 +fn_8011CB48 = .text:0x8011CB48; // type:function size:0x4 +fn_8011CB4C = .text:0x8011CB4C; // type:function size:0x4 +fn_8011CB50 = .text:0x8011CB50; // type:function size:0x4 +fn_8011CB54 = .text:0x8011CB54; // type:function size:0x4 +fn_8011CB58 = .text:0x8011CB58; // type:function size:0x4 +fn_8011CB5C = .text:0x8011CB5C; // type:function size:0x4 +fn_8011CB60 = .text:0x8011CB60; // type:function size:0x4 +fn_8011CB64 = .text:0x8011CB64; // type:function size:0x4 +fn_8011CB68 = .text:0x8011CB68; // type:function size:0x4 +fn_8011CB6C = .text:0x8011CB6C; // type:function size:0x4 +fn_8011CB70 = .text:0x8011CB70; // type:function size:0x4 +fn_8011CB74 = .text:0x8011CB74; // type:function size:0x4 +fn_8011CB78 = .text:0x8011CB78; // type:function size:0x4 +fn_8011CB7C = .text:0x8011CB7C; // type:function size:0x4 +fn_8011CB80 = .text:0x8011CB80; // type:function size:0x4 +fn_8011CB84 = .text:0x8011CB84; // type:function size:0x4 +fn_8011CB88 = .text:0x8011CB88; // type:function size:0x4 +fn_8011CB8C = .text:0x8011CB8C; // type:function size:0x4 +fn_8011CB90 = .text:0x8011CB90; // type:function size:0x4 +fn_8011CB94 = .text:0x8011CB94; // type:function size:0x4 +fn_8011CB98 = .text:0x8011CB98; // type:function size:0x4 +fn_8011CB9C = .text:0x8011CB9C; // type:function size:0x4 +fn_8011CBA0 = .text:0x8011CBA0; // type:function size:0x4 +fn_8011CBA4 = .text:0x8011CBA4; // type:function size:0x4 +fn_8011CBA8 = .text:0x8011CBA8; // type:function size:0x4 +fn_8011CBAC = .text:0x8011CBAC; // type:function size:0x4 +fn_8011CBB0 = .text:0x8011CBB0; // type:function size:0x4 +fn_8011CBB4 = .text:0x8011CBB4; // type:function size:0x4 +fn_8011CBB8 = .text:0x8011CBB8; // type:function size:0x4 +fn_8011CBBC = .text:0x8011CBBC; // type:function size:0x4 +fn_8011CBC0 = .text:0x8011CBC0; // type:function size:0x4 +fn_8011CBC4 = .text:0x8011CBC4; // type:function size:0x4 +fn_8011CBC8 = .text:0x8011CBC8; // type:function size:0x4 +fn_8011CBCC = .text:0x8011CBCC; // type:function size:0x4 +fn_8011CBD0 = .text:0x8011CBD0; // type:function size:0x4 +fn_8011CBD4 = .text:0x8011CBD4; // type:function size:0x4 +fn_8011CBD8 = .text:0x8011CBD8; // type:function size:0x4 +fn_8011CBDC = .text:0x8011CBDC; // type:function size:0x4 +fn_8011CBE0 = .text:0x8011CBE0; // type:function size:0x4 +fn_8011CBE4 = .text:0x8011CBE4; // type:function size:0x4 +fn_8011CBE8 = .text:0x8011CBE8; // type:function size:0x4 +fn_8011CBEC = .text:0x8011CBEC; // type:function size:0x4 +fn_8011CBF0 = .text:0x8011CBF0; // type:function size:0x4 +fn_8011CBF4 = .text:0x8011CBF4; // type:function size:0x4 +fn_8011CBF8 = .text:0x8011CBF8; // type:function size:0x4 +fn_8011CBFC = .text:0x8011CBFC; // type:function size:0x4 +fn_8011CC00 = .text:0x8011CC00; // type:function size:0x4 +fn_8011CC04 = .text:0x8011CC04; // type:function size:0x4 +fn_8011CC08 = .text:0x8011CC08; // type:function size:0x4 +fn_8011CC0C = .text:0x8011CC0C; // type:function size:0x4 +fn_8011CC10 = .text:0x8011CC10; // type:function size:0x4 +fn_8011CC14 = .text:0x8011CC14; // type:function size:0x4 +fn_8011CC18 = .text:0x8011CC18; // type:function size:0x4 +fn_8011CC1C = .text:0x8011CC1C; // type:function size:0x4 +fn_8011CC20 = .text:0x8011CC20; // type:function size:0x4 +fn_8011CC24 = .text:0x8011CC24; // type:function size:0x4 +fn_8011CC28 = .text:0x8011CC28; // type:function size:0x4 +fn_8011CC2C = .text:0x8011CC2C; // type:function size:0x4 +fn_8011CC30 = .text:0x8011CC30; // type:function size:0x4 +fn_8011CC34 = .text:0x8011CC34; // type:function size:0x4 +fn_8011CC38 = .text:0x8011CC38; // type:function size:0x4 +fn_8011CC3C = .text:0x8011CC3C; // type:function size:0x4 +fn_8011CC40 = .text:0x8011CC40; // type:function size:0x4 +fn_8011CC44 = .text:0x8011CC44; // type:function size:0x4 +fn_8011CC48 = .text:0x8011CC48; // type:function size:0x4 +fn_8011CC4C = .text:0x8011CC4C; // type:function size:0x4 +fn_8011CC50 = .text:0x8011CC50; // type:function size:0x4 +fn_8011CC54 = .text:0x8011CC54; // type:function size:0x4 +fn_8011CC58 = .text:0x8011CC58; // type:function size:0x4 +fn_8011CC5C = .text:0x8011CC5C; // type:function size:0x4 +fn_8011CC60 = .text:0x8011CC60; // type:function size:0x4 +fn_8011CC64 = .text:0x8011CC64; // type:function size:0x4 +fn_8011CC68 = .text:0x8011CC68; // type:function size:0x4 +fn_8011CC6C = .text:0x8011CC6C; // type:function size:0x4 +fn_8011CC70 = .text:0x8011CC70; // type:function size:0x4 +fn_8011CC74 = .text:0x8011CC74; // type:function size:0x4 +fn_8011CC78 = .text:0x8011CC78; // type:function size:0x4 +fn_8011CC7C = .text:0x8011CC7C; // type:function size:0x4 +fn_8011CC80 = .text:0x8011CC80; // type:function size:0x4 +fn_8011CC84 = .text:0x8011CC84; // type:function size:0x4 +fn_8011CC88 = .text:0x8011CC88; // type:function size:0x4 +fn_8011CC8C = .text:0x8011CC8C; // type:function size:0x4 +fn_8011CC90 = .text:0x8011CC90; // type:function size:0x4 +fn_8011CC94 = .text:0x8011CC94; // type:function size:0x4 +fn_8011CC98 = .text:0x8011CC98; // type:function size:0x4 +fn_8011CC9C = .text:0x8011CC9C; // type:function size:0x4 +fn_8011CCA0 = .text:0x8011CCA0; // type:function size:0x4 +fn_8011CCA4 = .text:0x8011CCA4; // type:function size:0x4 +fn_8011CCA8 = .text:0x8011CCA8; // type:function size:0x4 +fn_8011CCAC = .text:0x8011CCAC; // type:function size:0x4 +fn_8011CCB0 = .text:0x8011CCB0; // type:function size:0x4 +fn_8011CCB4 = .text:0x8011CCB4; // type:function size:0x4 +fn_8011CCB8 = .text:0x8011CCB8; // type:function size:0x4 +fn_8011CCBC = .text:0x8011CCBC; // type:function size:0x4 +fn_8011CCC0 = .text:0x8011CCC0; // type:function size:0x4 +fn_8011CCC4 = .text:0x8011CCC4; // type:function size:0x4 +fn_8011CCC8 = .text:0x8011CCC8; // type:function size:0x4 +fn_8011CCCC = .text:0x8011CCCC; // type:function size:0x4 +fn_8011CCD0 = .text:0x8011CCD0; // type:function size:0x4 +fn_8011CCD4 = .text:0x8011CCD4; // type:function size:0x4 +fn_8011CCD8 = .text:0x8011CCD8; // type:function size:0x4 +fn_8011CCDC = .text:0x8011CCDC; // type:function size:0x4 +fn_8011CCE0 = .text:0x8011CCE0; // type:function size:0x4 +fn_8011CCE4 = .text:0x8011CCE4; // type:function size:0x4 +fn_8011CCE8 = .text:0x8011CCE8; // type:function size:0x4 +fn_8011CCEC = .text:0x8011CCEC; // type:function size:0x4 +fn_8011CCF0 = .text:0x8011CCF0; // type:function size:0x4 +fn_8011CCF4 = .text:0x8011CCF4; // type:function size:0x4 +fn_8011CCF8 = .text:0x8011CCF8; // type:function size:0x4 +fn_8011CCFC = .text:0x8011CCFC; // type:function size:0x4 +fn_8011CD00 = .text:0x8011CD00; // type:function size:0x4 +fn_8011CD04 = .text:0x8011CD04; // type:function size:0x4 +fn_8011CD08 = .text:0x8011CD08; // type:function size:0x4 +fn_8011CD0C = .text:0x8011CD0C; // type:function size:0x4 +fn_8011CD10 = .text:0x8011CD10; // type:function size:0x4 +fn_8011CD14 = .text:0x8011CD14; // type:function size:0x4 +fn_8011CD18 = .text:0x8011CD18; // type:function size:0x4 +fn_8011CD1C = .text:0x8011CD1C; // type:function size:0x4 +fn_8011CD20 = .text:0x8011CD20; // type:function size:0x4 +fn_8011CD24 = .text:0x8011CD24; // type:function size:0x4 +fn_8011CD28 = .text:0x8011CD28; // type:function size:0x4 +fn_8011CD2C = .text:0x8011CD2C; // type:function size:0x4 +fn_8011CD30 = .text:0x8011CD30; // type:function size:0x4 +fn_8011CD34 = .text:0x8011CD34; // type:function size:0x4 +fn_8011CD38 = .text:0x8011CD38; // type:function size:0x4 +fn_8011CD3C = .text:0x8011CD3C; // type:function size:0x4 +fn_8011CD40 = .text:0x8011CD40; // type:function size:0x4 +fn_8011CD44 = .text:0x8011CD44; // type:function size:0x4 +fn_8011CD48 = .text:0x8011CD48; // type:function size:0x4 +fn_8011CD4C = .text:0x8011CD4C; // type:function size:0x4 +fn_8011CD50 = .text:0x8011CD50; // type:function size:0x4 +fn_8011CD54 = .text:0x8011CD54; // type:function size:0x4 +fn_8011CD58 = .text:0x8011CD58; // type:function size:0x4 +fn_8011CD5C = .text:0x8011CD5C; // type:function size:0x4 +fn_8011CD60 = .text:0x8011CD60; // type:function size:0x4 +fn_8011CD64 = .text:0x8011CD64; // type:function size:0x4 +fn_8011CD68 = .text:0x8011CD68; // type:function size:0x4 +fn_8011CD6C = .text:0x8011CD6C; // type:function size:0x4 +fn_8011CD70 = .text:0x8011CD70; // type:function size:0x4 +fn_8011CD74 = .text:0x8011CD74; // type:function size:0x4 +fn_8011CD78 = .text:0x8011CD78; // type:function size:0x4 +fn_8011CD7C = .text:0x8011CD7C; // type:function size:0x4 +fn_8011CD80 = .text:0x8011CD80; // type:function size:0x4 +fn_8011CD84 = .text:0x8011CD84; // type:function size:0x4 +fn_8011CD88 = .text:0x8011CD88; // type:function size:0x4 +fn_8011CD8C = .text:0x8011CD8C; // type:function size:0x4 +fn_8011CD90 = .text:0x8011CD90; // type:function size:0x4 +fn_8011CD94 = .text:0x8011CD94; // type:function size:0x4 +fn_8011CD98 = .text:0x8011CD98; // type:function size:0x4 +fn_8011CD9C = .text:0x8011CD9C; // type:function size:0x4 +fn_8011CDA0 = .text:0x8011CDA0; // type:function size:0x4 +fn_8011CDA4 = .text:0x8011CDA4; // type:function size:0x4 +fn_8011CDA8 = .text:0x8011CDA8; // type:function size:0x4 +fn_8011CDAC = .text:0x8011CDAC; // type:function size:0x4 +fn_8011CDB0 = .text:0x8011CDB0; // type:function size:0x4 +fn_8011CDB4 = .text:0x8011CDB4; // type:function size:0x4 +fn_8011CDB8 = .text:0x8011CDB8; // type:function size:0x4 +fn_8011CDBC = .text:0x8011CDBC; // type:function size:0x4 +fn_8011CDC0 = .text:0x8011CDC0; // type:function size:0x4 +fn_8011CDC4 = .text:0x8011CDC4; // type:function size:0x4 +fn_8011CDC8 = .text:0x8011CDC8; // type:function size:0x4 +fn_8011CDCC = .text:0x8011CDCC; // type:function size:0x4 +fn_8011CDD0 = .text:0x8011CDD0; // type:function size:0x4 +fn_8011CDD4 = .text:0x8011CDD4; // type:function size:0x4 +fn_8011CDD8 = .text:0x8011CDD8; // type:function size:0x4 +fn_8011CDDC = .text:0x8011CDDC; // type:function size:0x4 +fn_8011CDE0 = .text:0x8011CDE0; // type:function size:0x4 +fn_8011CDE4 = .text:0x8011CDE4; // type:function size:0x4 +fn_8011CDE8 = .text:0x8011CDE8; // type:function size:0x4 +fn_8011CDEC = .text:0x8011CDEC; // type:function size:0x4 +fn_8011CDF0 = .text:0x8011CDF0; // type:function size:0x4 +fn_8011CDF4 = .text:0x8011CDF4; // type:function size:0x4 +fn_8011CDF8 = .text:0x8011CDF8; // type:function size:0x4 +fn_8011CDFC = .text:0x8011CDFC; // type:function size:0x4 +fn_8011CE00 = .text:0x8011CE00; // type:function size:0x4 +fn_8011CE04 = .text:0x8011CE04; // type:function size:0x4 +fn_8011CE08 = .text:0x8011CE08; // type:function size:0x4 +fn_8011CE0C = .text:0x8011CE0C; // type:function size:0x4 +fn_8011CE10 = .text:0x8011CE10; // type:function size:0x4 +fn_8011CE14 = .text:0x8011CE14; // type:function size:0x4 +fn_8011CE18 = .text:0x8011CE18; // type:function size:0x4 +fn_8011CE1C = .text:0x8011CE1C; // type:function size:0x4 +fn_8011CE20 = .text:0x8011CE20; // type:function size:0x4 +fn_8011CE24 = .text:0x8011CE24; // type:function size:0x4 +fn_8011CE28 = .text:0x8011CE28; // type:function size:0x4 +fn_8011CE2C = .text:0x8011CE2C; // type:function size:0x4 +fn_8011CE30 = .text:0x8011CE30; // type:function size:0x4 +fn_8011CE34 = .text:0x8011CE34; // type:function size:0x4 +fn_8011CE38 = .text:0x8011CE38; // type:function size:0x4 +fn_8011CE3C = .text:0x8011CE3C; // type:function size:0x4 +fn_8011CE40 = .text:0x8011CE40; // type:function size:0x4 +fn_8011CE44 = .text:0x8011CE44; // type:function size:0x4 +fn_8011CE48 = .text:0x8011CE48; // type:function size:0x4 +fn_8011CE4C = .text:0x8011CE4C; // type:function size:0x4 +fn_8011CE50 = .text:0x8011CE50; // type:function size:0x4 +fn_8011CE54 = .text:0x8011CE54; // type:function size:0x4 +fn_8011CE58 = .text:0x8011CE58; // type:function size:0x4 +fn_8011CE5C = .text:0x8011CE5C; // type:function size:0x4 +fn_8011CE60 = .text:0x8011CE60; // type:function size:0x4 +fn_8011CE64 = .text:0x8011CE64; // type:function size:0x4 +fn_8011CE68 = .text:0x8011CE68; // type:function size:0x4 +fn_8011CE6C = .text:0x8011CE6C; // type:function size:0x4 +fn_8011CE70 = .text:0x8011CE70; // type:function size:0x4 +fn_8011CE74 = .text:0x8011CE74; // type:function size:0x4 +fn_8011CE78 = .text:0x8011CE78; // type:function size:0x4 +fn_8011CE7C = .text:0x8011CE7C; // type:function size:0x4 +fn_8011CE80 = .text:0x8011CE80; // type:function size:0x4 +fn_8011CE84 = .text:0x8011CE84; // type:function size:0x4 +fn_8011CE88 = .text:0x8011CE88; // type:function size:0x4 +fn_8011CE8C = .text:0x8011CE8C; // type:function size:0x4 +fn_8011CE90 = .text:0x8011CE90; // type:function size:0x4 +fn_8011CE94 = .text:0x8011CE94; // type:function size:0x4 +fn_8011CE98 = .text:0x8011CE98; // type:function size:0x4 +fn_8011CE9C = .text:0x8011CE9C; // type:function size:0x4 +fn_8011CEA0 = .text:0x8011CEA0; // type:function size:0x4 +fn_8011CEA4 = .text:0x8011CEA4; // type:function size:0x4 +fn_8011CEA8 = .text:0x8011CEA8; // type:function size:0x4 +fn_8011CEAC = .text:0x8011CEAC; // type:function size:0x4 +fn_8011CEB0 = .text:0x8011CEB0; // type:function size:0x4 +fn_8011CEB4 = .text:0x8011CEB4; // type:function size:0x4 +fn_8011CEB8 = .text:0x8011CEB8; // type:function size:0x4 +fn_8011CEBC = .text:0x8011CEBC; // type:function size:0x4 +fn_8011CEC0 = .text:0x8011CEC0; // type:function size:0x4 +fn_8011CEC4 = .text:0x8011CEC4; // type:function size:0x4 +fn_8011CEC8 = .text:0x8011CEC8; // type:function size:0x4 +fn_8011CECC = .text:0x8011CECC; // type:function size:0x4 +fn_8011CED0 = .text:0x8011CED0; // type:function size:0x4 +fn_8011CED4 = .text:0x8011CED4; // type:function size:0x4 +fn_8011CED8 = .text:0x8011CED8; // type:function size:0x4 +fn_8011CEDC = .text:0x8011CEDC; // type:function size:0x4 +fn_8011CEE0 = .text:0x8011CEE0; // type:function size:0x4 +fn_8011CEE4 = .text:0x8011CEE4; // type:function size:0x4 +fn_8011CEE8 = .text:0x8011CEE8; // type:function size:0x4 +fn_8011CEEC = .text:0x8011CEEC; // type:function size:0x4 +fn_8011CEF0 = .text:0x8011CEF0; // type:function size:0x4 +fn_8011CEF4 = .text:0x8011CEF4; // type:function size:0x4 +fn_8011CEF8 = .text:0x8011CEF8; // type:function size:0x4 +fn_8011CEFC = .text:0x8011CEFC; // type:function size:0x4 +fn_8011CF00 = .text:0x8011CF00; // type:function size:0x4 +fn_8011CF04 = .text:0x8011CF04; // type:function size:0x4 +fn_8011CF08 = .text:0x8011CF08; // type:function size:0x4 +fn_8011CF0C = .text:0x8011CF0C; // type:function size:0x4 +fn_8011CF10 = .text:0x8011CF10; // type:function size:0x4 +fn_8011CF14 = .text:0x8011CF14; // type:function size:0x4 +fn_8011CF18 = .text:0x8011CF18; // type:function size:0x4 +fn_8011CF1C = .text:0x8011CF1C; // type:function size:0x4 +fn_8011CF20 = .text:0x8011CF20; // type:function size:0x4 +fn_8011CF24 = .text:0x8011CF24; // type:function size:0x4 +fn_8011CF28 = .text:0x8011CF28; // type:function size:0x4 +fn_8011CF2C = .text:0x8011CF2C; // type:function size:0x4 +fn_8011CF30 = .text:0x8011CF30; // type:function size:0x4 +fn_8011CF34 = .text:0x8011CF34; // type:function size:0x4 +fn_8011CF38 = .text:0x8011CF38; // type:function size:0x4 +fn_8011CF3C = .text:0x8011CF3C; // type:function size:0x4 +fn_8011CF40 = .text:0x8011CF40; // type:function size:0x4 +fn_8011CF44 = .text:0x8011CF44; // type:function size:0x4 +fn_8011CF48 = .text:0x8011CF48; // type:function size:0x4 +fn_8011CF4C = .text:0x8011CF4C; // type:function size:0x4 +fn_8011CF50 = .text:0x8011CF50; // type:function size:0x4 +fn_8011CF54 = .text:0x8011CF54; // type:function size:0x4 +fn_8011CF58 = .text:0x8011CF58; // type:function size:0x4 +fn_8011CF5C = .text:0x8011CF5C; // type:function size:0x4 +fn_8011CF60 = .text:0x8011CF60; // type:function size:0x4 +fn_8011CF64 = .text:0x8011CF64; // type:function size:0x4 +fn_8011CF68 = .text:0x8011CF68; // type:function size:0x4 +fn_8011CF6C = .text:0x8011CF6C; // type:function size:0x4 +fn_8011CF70 = .text:0x8011CF70; // type:function size:0x4 +fn_8011CF74 = .text:0x8011CF74; // type:function size:0x4 +fn_8011CF78 = .text:0x8011CF78; // type:function size:0x4 +fn_8011CF7C = .text:0x8011CF7C; // type:function size:0x4 +fn_8011CF80 = .text:0x8011CF80; // type:function size:0x4 +fn_8011CF84 = .text:0x8011CF84; // type:function size:0x4 +fn_8011CF88 = .text:0x8011CF88; // type:function size:0x4 +fn_8011CF8C = .text:0x8011CF8C; // type:function size:0x4 +fn_8011CF90 = .text:0x8011CF90; // type:function size:0x4 +fn_8011CF94 = .text:0x8011CF94; // type:function size:0x4 +fn_8011CF98 = .text:0x8011CF98; // type:function size:0x4 +fn_8011CF9C = .text:0x8011CF9C; // type:function size:0x4 +fn_8011CFA0 = .text:0x8011CFA0; // type:function size:0x4 +fn_8011CFA4 = .text:0x8011CFA4; // type:function size:0x4 +fn_8011CFA8 = .text:0x8011CFA8; // type:function size:0x4 +fn_8011CFAC = .text:0x8011CFAC; // type:function size:0x4 +fn_8011CFB0 = .text:0x8011CFB0; // type:function size:0x4 +fn_8011CFB4 = .text:0x8011CFB4; // type:function size:0x4 +fn_8011CFB8 = .text:0x8011CFB8; // type:function size:0x4 +fn_8011CFBC = .text:0x8011CFBC; // type:function size:0x4 +fn_8011CFC0 = .text:0x8011CFC0; // type:function size:0x4 +fn_8011CFC4 = .text:0x8011CFC4; // type:function size:0x4 +fn_8011CFC8 = .text:0x8011CFC8; // type:function size:0x4 +fn_8011CFCC = .text:0x8011CFCC; // type:function size:0x4 +fn_8011CFD0 = .text:0x8011CFD0; // type:function size:0x4 +fn_8011CFD4 = .text:0x8011CFD4; // type:function size:0x4 +fn_8011CFD8 = .text:0x8011CFD8; // type:function size:0x4 +fn_8011CFDC = .text:0x8011CFDC; // type:function size:0x4 +fn_8011CFE0 = .text:0x8011CFE0; // type:function size:0x4 +fn_8011CFE4 = .text:0x8011CFE4; // type:function size:0x4 +fn_8011CFE8 = .text:0x8011CFE8; // type:function size:0x4 +fn_8011CFEC = .text:0x8011CFEC; // type:function size:0x4 +fn_8011CFF0 = .text:0x8011CFF0; // type:function size:0x4 +fn_8011CFF4 = .text:0x8011CFF4; // type:function size:0x4 +fn_8011CFF8 = .text:0x8011CFF8; // type:function size:0x4 +fn_8011CFFC = .text:0x8011CFFC; // type:function size:0x4 +fn_8011D000 = .text:0x8011D000; // type:function size:0x4 +fn_8011D004 = .text:0x8011D004; // type:function size:0x4 +fn_8011D008 = .text:0x8011D008; // type:function size:0x4 +fn_8011D00C = .text:0x8011D00C; // type:function size:0x4 +fn_8011D010 = .text:0x8011D010; // type:function size:0x4 +fn_8011D014 = .text:0x8011D014; // type:function size:0x4 +fn_8011D018 = .text:0x8011D018; // type:function size:0x4 +fn_8011D01C = .text:0x8011D01C; // type:function size:0x4 +fn_8011D020 = .text:0x8011D020; // type:function size:0x4 +fn_8011D024 = .text:0x8011D024; // type:function size:0x4 +fn_8011D028 = .text:0x8011D028; // type:function size:0x4 +fn_8011D02C = .text:0x8011D02C; // type:function size:0x4 +fn_8011D030 = .text:0x8011D030; // type:function size:0x4 +fn_8011D034 = .text:0x8011D034; // type:function size:0x4 +fn_8011D038 = .text:0x8011D038; // type:function size:0x4 +fn_8011D03C = .text:0x8011D03C; // type:function size:0x4 +fn_8011D040 = .text:0x8011D040; // type:function size:0x4 +fn_8011D044 = .text:0x8011D044; // type:function size:0x4 +fn_8011D048 = .text:0x8011D048; // type:function size:0x4 +fn_8011D04C = .text:0x8011D04C; // type:function size:0x4 +fn_8011D050 = .text:0x8011D050; // type:function size:0x4 +fn_8011D054 = .text:0x8011D054; // type:function size:0x4 +fn_8011D058 = .text:0x8011D058; // type:function size:0x4 +fn_8011D05C = .text:0x8011D05C; // type:function size:0x4 +fn_8011D060 = .text:0x8011D060; // type:function size:0x4 +fn_8011D064 = .text:0x8011D064; // type:function size:0x4 +fn_8011D068 = .text:0x8011D068; // type:function size:0x4 +fn_8011D06C = .text:0x8011D06C; // type:function size:0x4 +fn_8011D070 = .text:0x8011D070; // type:function size:0x4 +fn_8011D074 = .text:0x8011D074; // type:function size:0x4 +fn_8011D078 = .text:0x8011D078; // type:function size:0x4 +fn_8011D07C = .text:0x8011D07C; // type:function size:0x4 +fn_8011D080 = .text:0x8011D080; // type:function size:0x4 +fn_8011D084 = .text:0x8011D084; // type:function size:0x4 +fn_8011D088 = .text:0x8011D088; // type:function size:0x4 +fn_8011D08C = .text:0x8011D08C; // type:function size:0x4 +fn_8011D090 = .text:0x8011D090; // type:function size:0x4 +fn_8011D094 = .text:0x8011D094; // type:function size:0x4 +fn_8011D098 = .text:0x8011D098; // type:function size:0x4 +fn_8011D09C = .text:0x8011D09C; // type:function size:0x4 +fn_8011D0A0 = .text:0x8011D0A0; // type:function size:0x4 +fn_8011D0A4 = .text:0x8011D0A4; // type:function size:0x4 +fn_8011D0A8 = .text:0x8011D0A8; // type:function size:0x4 +fn_8011D0AC = .text:0x8011D0AC; // type:function size:0x4 +fn_8011D0B0 = .text:0x8011D0B0; // type:function size:0x4 +fn_8011D0B4 = .text:0x8011D0B4; // type:function size:0x4 +fn_8011D0B8 = .text:0x8011D0B8; // type:function size:0x4 +fn_8011D0BC = .text:0x8011D0BC; // type:function size:0x4 +fn_8011D0C0 = .text:0x8011D0C0; // type:function size:0x4 +fn_8011D0C4 = .text:0x8011D0C4; // type:function size:0x4 +fn_8011D0C8 = .text:0x8011D0C8; // type:function size:0x4 +fn_8011D0CC = .text:0x8011D0CC; // type:function size:0x4 +fn_8011D0D0 = .text:0x8011D0D0; // type:function size:0x4 +fn_8011D0D4 = .text:0x8011D0D4; // type:function size:0x4 +fn_8011D0D8 = .text:0x8011D0D8; // type:function size:0x4 +fn_8011D0DC = .text:0x8011D0DC; // type:function size:0x4 +fn_8011D0E0 = .text:0x8011D0E0; // type:function size:0x4 +fn_8011D0E4 = .text:0x8011D0E4; // type:function size:0x4 +fn_8011D0E8 = .text:0x8011D0E8; // type:function size:0x4 +fn_8011D0EC = .text:0x8011D0EC; // type:function size:0x4 +fn_8011D0F0 = .text:0x8011D0F0; // type:function size:0x4 +fn_8011D0F4 = .text:0x8011D0F4; // type:function size:0x4 +fn_8011D0F8 = .text:0x8011D0F8; // type:function size:0x4 +fn_8011D0FC = .text:0x8011D0FC; // type:function size:0x4 +fn_8011D100 = .text:0x8011D100; // type:function size:0x4 +fn_8011D104 = .text:0x8011D104; // type:function size:0x4 +fn_8011D108 = .text:0x8011D108; // type:function size:0x4 +fn_8011D10C = .text:0x8011D10C; // type:function size:0x4 +fn_8011D110 = .text:0x8011D110; // type:function size:0x4 +fn_8011D114 = .text:0x8011D114; // type:function size:0x4 +fn_8011D118 = .text:0x8011D118; // type:function size:0x4 +fn_8011D11C = .text:0x8011D11C; // type:function size:0x4 +fn_8011D120 = .text:0x8011D120; // type:function size:0x4 +fn_8011D124 = .text:0x8011D124; // type:function size:0x4 +fn_8011D128 = .text:0x8011D128; // type:function size:0x4 +fn_8011D12C = .text:0x8011D12C; // type:function size:0x4 +fn_8011D130 = .text:0x8011D130; // type:function size:0x4 +fn_8011D134 = .text:0x8011D134; // type:function size:0x4 +fn_8011D138 = .text:0x8011D138; // type:function size:0x4 +fn_8011D13C = .text:0x8011D13C; // type:function size:0x4 +fn_8011D140 = .text:0x8011D140; // type:function size:0x4 +fn_8011D144 = .text:0x8011D144; // type:function size:0x4 +fn_8011D148 = .text:0x8011D148; // type:function size:0x4 +fn_8011D14C = .text:0x8011D14C; // type:function size:0x4 +fn_8011D150 = .text:0x8011D150; // type:function size:0x4 +fn_8011D154 = .text:0x8011D154; // type:function size:0x4 +fn_8011D158 = .text:0x8011D158; // type:function size:0x4 +fn_8011D15C = .text:0x8011D15C; // type:function size:0x4 +fn_8011D160 = .text:0x8011D160; // type:function size:0x4 +fn_8011D164 = .text:0x8011D164; // type:function size:0x4 +fn_8011D168 = .text:0x8011D168; // type:function size:0x4 +fn_8011D16C = .text:0x8011D16C; // type:function size:0x4 +fn_8011D170 = .text:0x8011D170; // type:function size:0x4 +fn_8011D174 = .text:0x8011D174; // type:function size:0x4 +fn_8011D178 = .text:0x8011D178; // type:function size:0x4 +fn_8011D17C = .text:0x8011D17C; // type:function size:0x4 +fn_8011D180 = .text:0x8011D180; // type:function size:0x4 +fn_8011D184 = .text:0x8011D184; // type:function size:0x4 +fn_8011D188 = .text:0x8011D188; // type:function size:0x4 +fn_8011D18C = .text:0x8011D18C; // type:function size:0x4 +fn_8011D190 = .text:0x8011D190; // type:function size:0x4 +fn_8011D194 = .text:0x8011D194; // type:function size:0x4 +fn_8011D198 = .text:0x8011D198; // type:function size:0x4 +fn_8011D19C = .text:0x8011D19C; // type:function size:0x4 +fn_8011D1A0 = .text:0x8011D1A0; // type:function size:0x4 +fn_8011D1A4 = .text:0x8011D1A4; // type:function size:0x4 +fn_8011D1A8 = .text:0x8011D1A8; // type:function size:0x4 +fn_8011D1AC = .text:0x8011D1AC; // type:function size:0x4 +fn_8011D1B0 = .text:0x8011D1B0; // type:function size:0x4 +fn_8011D1B4 = .text:0x8011D1B4; // type:function size:0x4 +fn_8011D1B8 = .text:0x8011D1B8; // type:function size:0x4 +fn_8011D1BC = .text:0x8011D1BC; // type:function size:0x4 +fn_8011D1C0 = .text:0x8011D1C0; // type:function size:0x4 +fn_8011D1C4 = .text:0x8011D1C4; // type:function size:0x4 +fn_8011D1C8 = .text:0x8011D1C8; // type:function size:0x4 +fn_8011D1CC = .text:0x8011D1CC; // type:function size:0x4 +fn_8011D1D0 = .text:0x8011D1D0; // type:function size:0x4 +fn_8011D1D4 = .text:0x8011D1D4; // type:function size:0x4 +fn_8011D1D8 = .text:0x8011D1D8; // type:function size:0x4 +fn_8011D1DC = .text:0x8011D1DC; // type:function size:0x4 +fn_8011D1E0 = .text:0x8011D1E0; // type:function size:0x4 +fn_8011D1E4 = .text:0x8011D1E4; // type:function size:0x4 +fn_8011D1E8 = .text:0x8011D1E8; // type:function size:0x4 +fn_8011D1EC = .text:0x8011D1EC; // type:function size:0x4 +fn_8011D1F0 = .text:0x8011D1F0; // type:function size:0x4 +fn_8011D1F4 = .text:0x8011D1F4; // type:function size:0x4 +fn_8011D1F8 = .text:0x8011D1F8; // type:function size:0x4 +fn_8011D1FC = .text:0x8011D1FC; // type:function size:0x4 +fn_8011D200 = .text:0x8011D200; // type:function size:0x4 +fn_8011D204 = .text:0x8011D204; // type:function size:0x4 +fn_8011D208 = .text:0x8011D208; // type:function size:0x4 +fn_8011D20C = .text:0x8011D20C; // type:function size:0x4 +fn_8011D210 = .text:0x8011D210; // type:function size:0x4 +fn_8011D214 = .text:0x8011D214; // type:function size:0x4 +fn_8011D218 = .text:0x8011D218; // type:function size:0x4 +fn_8011D21C = .text:0x8011D21C; // type:function size:0x4 +fn_8011D220 = .text:0x8011D220; // type:function size:0x4 +fn_8011D224 = .text:0x8011D224; // type:function size:0x4 +fn_8011D228 = .text:0x8011D228; // type:function size:0x4 +fn_8011D22C = .text:0x8011D22C; // type:function size:0x4 +fn_8011D230 = .text:0x8011D230; // type:function size:0x4 +fn_8011D234 = .text:0x8011D234; // type:function size:0x4 +fn_8011D238 = .text:0x8011D238; // type:function size:0x4 +fn_8011D23C = .text:0x8011D23C; // type:function size:0x4 +fn_8011D240 = .text:0x8011D240; // type:function size:0x4 +fn_8011D244 = .text:0x8011D244; // type:function size:0x4 +fn_8011D248 = .text:0x8011D248; // type:function size:0x4 +fn_8011D24C = .text:0x8011D24C; // type:function size:0x4 +fn_8011D250 = .text:0x8011D250; // type:function size:0x4 +fn_8011D254 = .text:0x8011D254; // type:function size:0x4 +fn_8011D258 = .text:0x8011D258; // type:function size:0x4 +fn_8011D25C = .text:0x8011D25C; // type:function size:0x4 +fn_8011D260 = .text:0x8011D260; // type:function size:0x4 +fn_8011D264 = .text:0x8011D264; // type:function size:0x4 +fn_8011D268 = .text:0x8011D268; // type:function size:0x4 +fn_8011D26C = .text:0x8011D26C; // type:function size:0x4 +fn_8011D270 = .text:0x8011D270; // type:function size:0x4 +fn_8011D274 = .text:0x8011D274; // type:function size:0x4 +fn_8011D278 = .text:0x8011D278; // type:function size:0x4 +fn_8011D27C = .text:0x8011D27C; // type:function size:0x4 +fn_8011D280 = .text:0x8011D280; // type:function size:0x4 +fn_8011D284 = .text:0x8011D284; // type:function size:0x4 +fn_8011D288 = .text:0x8011D288; // type:function size:0x4 +fn_8011D28C = .text:0x8011D28C; // type:function size:0x4 +fn_8011D290 = .text:0x8011D290; // type:function size:0x4 +fn_8011D294 = .text:0x8011D294; // type:function size:0x4 +fn_8011D298 = .text:0x8011D298; // type:function size:0x4 +fn_8011D29C = .text:0x8011D29C; // type:function size:0x4 +fn_8011D2A0 = .text:0x8011D2A0; // type:function size:0x4 +fn_8011D2A4 = .text:0x8011D2A4; // type:function size:0x4 +fn_8011D2A8 = .text:0x8011D2A8; // type:function size:0x4 +fn_8011D2AC = .text:0x8011D2AC; // type:function size:0x4 +fn_8011D2B0 = .text:0x8011D2B0; // type:function size:0x4 +fn_8011D2B4 = .text:0x8011D2B4; // type:function size:0x4 +fn_8011D2B8 = .text:0x8011D2B8; // type:function size:0x4 +fn_8011D2BC = .text:0x8011D2BC; // type:function size:0x4 +fn_8011D2C0 = .text:0x8011D2C0; // type:function size:0x4 +fn_8011D2C4 = .text:0x8011D2C4; // type:function size:0x4 +fn_8011D2C8 = .text:0x8011D2C8; // type:function size:0x4 +fn_8011D2CC = .text:0x8011D2CC; // type:function size:0x4 +fn_8011D2D0 = .text:0x8011D2D0; // type:function size:0x4 +fn_8011D2D4 = .text:0x8011D2D4; // type:function size:0x4 +fn_8011D2D8 = .text:0x8011D2D8; // type:function size:0x4 +fn_8011D2DC = .text:0x8011D2DC; // type:function size:0x4 +fn_8011D2E0 = .text:0x8011D2E0; // type:function size:0x4 +fn_8011D2E4 = .text:0x8011D2E4; // type:function size:0x4 +fn_8011D2E8 = .text:0x8011D2E8; // type:function size:0x4 +fn_8011D2EC = .text:0x8011D2EC; // type:function size:0x4 +fn_8011D2F0 = .text:0x8011D2F0; // type:function size:0x4 +fn_8011D2F4 = .text:0x8011D2F4; // type:function size:0x4 +fn_8011D2F8 = .text:0x8011D2F8; // type:function size:0x4 +fn_8011D2FC = .text:0x8011D2FC; // type:function size:0x4 +fn_8011D300 = .text:0x8011D300; // type:function size:0x4 +fn_8011D304 = .text:0x8011D304; // type:function size:0x4 +fn_8011D308 = .text:0x8011D308; // type:function size:0x4 +fn_8011D30C = .text:0x8011D30C; // type:function size:0x4 +fn_8011D310 = .text:0x8011D310; // type:function size:0x4 +fn_8011D314 = .text:0x8011D314; // type:function size:0x4 +fn_8011D318 = .text:0x8011D318; // type:function size:0x4 +fn_8011D31C = .text:0x8011D31C; // type:function size:0x4 +fn_8011D320 = .text:0x8011D320; // type:function size:0x4 +fn_8011D324 = .text:0x8011D324; // type:function size:0x4 +fn_8011D328 = .text:0x8011D328; // type:function size:0x4 +fn_8011D32C = .text:0x8011D32C; // type:function size:0x4 +fn_8011D330 = .text:0x8011D330; // type:function size:0x4 +fn_8011D334 = .text:0x8011D334; // type:function size:0x4 +fn_8011D338 = .text:0x8011D338; // type:function size:0x4 +fn_8011D33C = .text:0x8011D33C; // type:function size:0x4 +fn_8011D340 = .text:0x8011D340; // type:function size:0x4 +fn_8011D344 = .text:0x8011D344; // type:function size:0x4 +fn_8011D348 = .text:0x8011D348; // type:function size:0x4 +fn_8011D34C = .text:0x8011D34C; // type:function size:0x4 +fn_8011D350 = .text:0x8011D350; // type:function size:0x4 +fn_8011D354 = .text:0x8011D354; // type:function size:0x4 +fn_8011D358 = .text:0x8011D358; // type:function size:0x4 +fn_8011D35C = .text:0x8011D35C; // type:function size:0x4 +fn_8011D360 = .text:0x8011D360; // type:function size:0x4 +fn_8011D364 = .text:0x8011D364; // type:function size:0x4 +fn_8011D368 = .text:0x8011D368; // type:function size:0x4 +fn_8011D36C = .text:0x8011D36C; // type:function size:0x4 +fn_8011D370 = .text:0x8011D370; // type:function size:0x4 +fn_8011D374 = .text:0x8011D374; // type:function size:0x4 +fn_8011D378 = .text:0x8011D378; // type:function size:0x4 +fn_8011D37C = .text:0x8011D37C; // type:function size:0x4 +fn_8011D380 = .text:0x8011D380; // type:function size:0x4 +fn_8011D384 = .text:0x8011D384; // type:function size:0x4 +fn_8011D388 = .text:0x8011D388; // type:function size:0x4 +fn_8011D38C = .text:0x8011D38C; // type:function size:0x4 +fn_8011D390 = .text:0x8011D390; // type:function size:0x4 +fn_8011D394 = .text:0x8011D394; // type:function size:0x4 +fn_8011D398 = .text:0x8011D398; // type:function size:0x4 +fn_8011D39C = .text:0x8011D39C; // type:function size:0x4 +fn_8011D3A0 = .text:0x8011D3A0; // type:function size:0x4 +fn_8011D3A4 = .text:0x8011D3A4; // type:function size:0x4 +fn_8011D3A8 = .text:0x8011D3A8; // type:function size:0x4 +fn_8011D3AC = .text:0x8011D3AC; // type:function size:0x4 +fn_8011D3B0 = .text:0x8011D3B0; // type:function size:0x4 +fn_8011D3B4 = .text:0x8011D3B4; // type:function size:0x4 +fn_8011D3B8 = .text:0x8011D3B8; // type:function size:0x4 +fn_8011D3BC = .text:0x8011D3BC; // type:function size:0x4 +fn_8011D3C0 = .text:0x8011D3C0; // type:function size:0x4 +fn_8011D3C4 = .text:0x8011D3C4; // type:function size:0x4 +fn_8011D3C8 = .text:0x8011D3C8; // type:function size:0x4 +fn_8011D3CC = .text:0x8011D3CC; // type:function size:0x4 +fn_8011D3D0 = .text:0x8011D3D0; // type:function size:0x4 +fn_8011D3D4 = .text:0x8011D3D4; // type:function size:0x4 +fn_8011D3D8 = .text:0x8011D3D8; // type:function size:0x4 +fn_8011D3DC = .text:0x8011D3DC; // type:function size:0x4 +fn_8011D3E0 = .text:0x8011D3E0; // type:function size:0x4 +fn_8011D3E4 = .text:0x8011D3E4; // type:function size:0x4 +fn_8011D3E8 = .text:0x8011D3E8; // type:function size:0x4 +fn_8011D3EC = .text:0x8011D3EC; // type:function size:0x4 +fn_8011D3F0 = .text:0x8011D3F0; // type:function size:0x4 +fn_8011D3F4 = .text:0x8011D3F4; // type:function size:0x4 +fn_8011D3F8 = .text:0x8011D3F8; // type:function size:0x4 +fn_8011D3FC = .text:0x8011D3FC; // type:function size:0x4 +fn_8011D400 = .text:0x8011D400; // type:function size:0x4 +fn_8011D404 = .text:0x8011D404; // type:function size:0x4 +fn_8011D408 = .text:0x8011D408; // type:function size:0x4 +fn_8011D40C = .text:0x8011D40C; // type:function size:0x4 +fn_8011D410 = .text:0x8011D410; // type:function size:0x4 +fn_8011D414 = .text:0x8011D414; // type:function size:0x4 +fn_8011D418 = .text:0x8011D418; // type:function size:0x4 +fn_8011D41C = .text:0x8011D41C; // type:function size:0x4 +fn_8011D420 = .text:0x8011D420; // type:function size:0x4 +fn_8011D424 = .text:0x8011D424; // type:function size:0x4 +fn_8011D428 = .text:0x8011D428; // type:function size:0x4 +fn_8011D42C = .text:0x8011D42C; // type:function size:0x4 +fn_8011D430 = .text:0x8011D430; // type:function size:0x4 +fn_8011D434 = .text:0x8011D434; // type:function size:0x4 +fn_8011D438 = .text:0x8011D438; // type:function size:0x4 +fn_8011D43C = .text:0x8011D43C; // type:function size:0x4 +fn_8011D440 = .text:0x8011D440; // type:function size:0x4 +fn_8011D444 = .text:0x8011D444; // type:function size:0x4 +fn_8011D448 = .text:0x8011D448; // type:function size:0x4 +fn_8011D44C = .text:0x8011D44C; // type:function size:0x4 +fn_8011D450 = .text:0x8011D450; // type:function size:0x4 +fn_8011D454 = .text:0x8011D454; // type:function size:0x4 +fn_8011D458 = .text:0x8011D458; // type:function size:0x4 +fn_8011D45C = .text:0x8011D45C; // type:function size:0x4 +fn_8011D460 = .text:0x8011D460; // type:function size:0x4 +fn_8011D464 = .text:0x8011D464; // type:function size:0x4 +fn_8011D468 = .text:0x8011D468; // type:function size:0x4 +fn_8011D46C = .text:0x8011D46C; // type:function size:0x4 +fn_8011D470 = .text:0x8011D470; // type:function size:0x4 +fn_8011D474 = .text:0x8011D474; // type:function size:0x4 +fn_8011D478 = .text:0x8011D478; // type:function size:0x4 +fn_8011D47C = .text:0x8011D47C; // type:function size:0x4 +fn_8011D480 = .text:0x8011D480; // type:function size:0x4 +fn_8011D484 = .text:0x8011D484; // type:function size:0x4 +fn_8011D488 = .text:0x8011D488; // type:function size:0x4 +fn_8011D48C = .text:0x8011D48C; // type:function size:0x4 +fn_8011D490 = .text:0x8011D490; // type:function size:0x4 +fn_8011D494 = .text:0x8011D494; // type:function size:0x4 +fn_8011D498 = .text:0x8011D498; // type:function size:0x4 +fn_8011D49C = .text:0x8011D49C; // type:function size:0x4 +fn_8011D4A0 = .text:0x8011D4A0; // type:function size:0x4 +fn_8011D4A4 = .text:0x8011D4A4; // type:function size:0x4 +fn_8011D4A8 = .text:0x8011D4A8; // type:function size:0x4 +fn_8011D4AC = .text:0x8011D4AC; // type:function size:0x4 +fn_8011D4B0 = .text:0x8011D4B0; // type:function size:0x4 +fn_8011D4B4 = .text:0x8011D4B4; // type:function size:0x4 +fn_8011D4B8 = .text:0x8011D4B8; // type:function size:0x4 +fn_8011D4BC = .text:0x8011D4BC; // type:function size:0x4 +fn_8011D4C0 = .text:0x8011D4C0; // type:function size:0x4 +fn_8011D4C4 = .text:0x8011D4C4; // type:function size:0x4 +fn_8011D4C8 = .text:0x8011D4C8; // type:function size:0x4 +fn_8011D4CC = .text:0x8011D4CC; // type:function size:0x4 +fn_8011D4D0 = .text:0x8011D4D0; // type:function size:0x4 +fn_8011D4D4 = .text:0x8011D4D4; // type:function size:0x4 +fn_8011D4D8 = .text:0x8011D4D8; // type:function size:0x4 +fn_8011D4DC = .text:0x8011D4DC; // type:function size:0x4 +fn_8011D4E0 = .text:0x8011D4E0; // type:function size:0x4 +fn_8011D4E4 = .text:0x8011D4E4; // type:function size:0x4 +fn_8011D4E8 = .text:0x8011D4E8; // type:function size:0x4 +fn_8011D4EC = .text:0x8011D4EC; // type:function size:0x4 +fn_8011D4F0 = .text:0x8011D4F0; // type:function size:0x4 +fn_8011D4F4 = .text:0x8011D4F4; // type:function size:0x4 +fn_8011D4F8 = .text:0x8011D4F8; // type:function size:0x4 +fn_8011D4FC = .text:0x8011D4FC; // type:function size:0x4 +fn_8011D500 = .text:0x8011D500; // type:function size:0x4 +fn_8011D504 = .text:0x8011D504; // type:function size:0x4 +fn_8011D508 = .text:0x8011D508; // type:function size:0x4 +fn_8011D50C = .text:0x8011D50C; // type:function size:0x4 +fn_8011D510 = .text:0x8011D510; // type:function size:0x4 +fn_8011D514 = .text:0x8011D514; // type:function size:0x4 +fn_8011D518 = .text:0x8011D518; // type:function size:0x4 +fn_8011D51C = .text:0x8011D51C; // type:function size:0x4 +fn_8011D520 = .text:0x8011D520; // type:function size:0x4 +fn_8011D524 = .text:0x8011D524; // type:function size:0x4 +fn_8011D528 = .text:0x8011D528; // type:function size:0x4 +fn_8011D52C = .text:0x8011D52C; // type:function size:0x4 +fn_8011D530 = .text:0x8011D530; // type:function size:0x4 +fn_8011D534 = .text:0x8011D534; // type:function size:0x4 +fn_8011D538 = .text:0x8011D538; // type:function size:0x4 +fn_8011D53C = .text:0x8011D53C; // type:function size:0x4 +fn_8011D540 = .text:0x8011D540; // type:function size:0x4 +fn_8011D544 = .text:0x8011D544; // type:function size:0x4 +fn_8011D548 = .text:0x8011D548; // type:function size:0x4 +fn_8011D54C = .text:0x8011D54C; // type:function size:0x4 +fn_8011D550 = .text:0x8011D550; // type:function size:0x4 +fn_8011D554 = .text:0x8011D554; // type:function size:0x4 +fn_8011D558 = .text:0x8011D558; // type:function size:0x4 +fn_8011D55C = .text:0x8011D55C; // type:function size:0x4 +fn_8011D560 = .text:0x8011D560; // type:function size:0x4 +fn_8011D564 = .text:0x8011D564; // type:function size:0x4 +fn_8011D568 = .text:0x8011D568; // type:function size:0x4 +fn_8011D56C = .text:0x8011D56C; // type:function size:0x4 +fn_8011D570 = .text:0x8011D570; // type:function size:0x4 +fn_8011D574 = .text:0x8011D574; // type:function size:0x4 +fn_8011D578 = .text:0x8011D578; // type:function size:0x4 +fn_8011D57C = .text:0x8011D57C; // type:function size:0x4 +fn_8011D580 = .text:0x8011D580; // type:function size:0x4 +fn_8011D584 = .text:0x8011D584; // type:function size:0x4 +fn_8011D588 = .text:0x8011D588; // type:function size:0x4 +fn_8011D58C = .text:0x8011D58C; // type:function size:0x4 +fn_8011D590 = .text:0x8011D590; // type:function size:0x4 +fn_8011D594 = .text:0x8011D594; // type:function size:0x4 +fn_8011D598 = .text:0x8011D598; // type:function size:0x4 +fn_8011D59C = .text:0x8011D59C; // type:function size:0x4 +fn_8011D5A0 = .text:0x8011D5A0; // type:function size:0x4 +fn_8011D5A4 = .text:0x8011D5A4; // type:function size:0x4 +fn_8011D5A8 = .text:0x8011D5A8; // type:function size:0x4 +fn_8011D5AC = .text:0x8011D5AC; // type:function size:0x4 +fn_8011D5B0 = .text:0x8011D5B0; // type:function size:0x4 +fn_8011D5B4 = .text:0x8011D5B4; // type:function size:0x4 +fn_8011D5B8 = .text:0x8011D5B8; // type:function size:0x4 +fn_8011D5BC = .text:0x8011D5BC; // type:function size:0x4 +fn_8011D5C0 = .text:0x8011D5C0; // type:function size:0x4 +fn_8011D5C4 = .text:0x8011D5C4; // type:function size:0x4 +fn_8011D5C8 = .text:0x8011D5C8; // type:function size:0x4 +fn_8011D5CC = .text:0x8011D5CC; // type:function size:0x4 +fn_8011D5D0 = .text:0x8011D5D0; // type:function size:0x4 +fn_8011D5D4 = .text:0x8011D5D4; // type:function size:0x4 +fn_8011D5D8 = .text:0x8011D5D8; // type:function size:0x4 +fn_8011D5DC = .text:0x8011D5DC; // type:function size:0x4 +fn_8011D5E0 = .text:0x8011D5E0; // type:function size:0x4 +fn_8011D5E4 = .text:0x8011D5E4; // type:function size:0x4 +fn_8011D5E8 = .text:0x8011D5E8; // type:function size:0x4 +fn_8011D5EC = .text:0x8011D5EC; // type:function size:0x4 +fn_8011D5F0 = .text:0x8011D5F0; // type:function size:0x4 +fn_8011D5F4 = .text:0x8011D5F4; // type:function size:0x4 +fn_8011D5F8 = .text:0x8011D5F8; // type:function size:0x4 +fn_8011D5FC = .text:0x8011D5FC; // type:function size:0x4 +fn_8011D600 = .text:0x8011D600; // type:function size:0x4 +fn_8011D604 = .text:0x8011D604; // type:function size:0x4 +fn_8011D608 = .text:0x8011D608; // type:function size:0x4 +fn_8011D60C = .text:0x8011D60C; // type:function size:0x4 +fn_8011D610 = .text:0x8011D610; // type:function size:0x4 +fn_8011D614 = .text:0x8011D614; // type:function size:0x4 +fn_8011D618 = .text:0x8011D618; // type:function size:0x4 +fn_8011D61C = .text:0x8011D61C; // type:function size:0x4 +fn_8011D620 = .text:0x8011D620; // type:function size:0x4 +fn_8011D624 = .text:0x8011D624; // type:function size:0x4 +fn_8011D628 = .text:0x8011D628; // type:function size:0x4 +fn_8011D62C = .text:0x8011D62C; // type:function size:0x4 +fn_8011D630 = .text:0x8011D630; // type:function size:0x4 +fn_8011D634 = .text:0x8011D634; // type:function size:0x4 +fn_8011D638 = .text:0x8011D638; // type:function size:0x4 +fn_8011D63C = .text:0x8011D63C; // type:function size:0x4 +fn_8011D640 = .text:0x8011D640; // type:function size:0x4 +fn_8011D644 = .text:0x8011D644; // type:function size:0x4 +fn_8011D648 = .text:0x8011D648; // type:function size:0x4 +fn_8011D64C = .text:0x8011D64C; // type:function size:0x4 +fn_8011D650 = .text:0x8011D650; // type:function size:0x4 +fn_8011D654 = .text:0x8011D654; // type:function size:0x4 +fn_8011D658 = .text:0x8011D658; // type:function size:0x4 +fn_8011D65C = .text:0x8011D65C; // type:function size:0x4 +fn_8011D660 = .text:0x8011D660; // type:function size:0x4 +fn_8011D664 = .text:0x8011D664; // type:function size:0x4 +fn_8011D668 = .text:0x8011D668; // type:function size:0x4 +fn_8011D66C = .text:0x8011D66C; // type:function size:0x4 +fn_8011D670 = .text:0x8011D670; // type:function size:0x4 +fn_8011D674 = .text:0x8011D674; // type:function size:0x4 +fn_8011D678 = .text:0x8011D678; // type:function size:0x4 +fn_8011D67C = .text:0x8011D67C; // type:function size:0x4 +fn_8011D680 = .text:0x8011D680; // type:function size:0x4 +fn_8011D684 = .text:0x8011D684; // type:function size:0x4 +fn_8011D688 = .text:0x8011D688; // type:function size:0x4 +fn_8011D68C = .text:0x8011D68C; // type:function size:0x4 +fn_8011D690 = .text:0x8011D690; // type:function size:0x4 +fn_8011D694 = .text:0x8011D694; // type:function size:0x4 +fn_8011D698 = .text:0x8011D698; // type:function size:0x4 +fn_8011D69C = .text:0x8011D69C; // type:function size:0x4 +fn_8011D6A0 = .text:0x8011D6A0; // type:function size:0x4 +fn_8011D6A4 = .text:0x8011D6A4; // type:function size:0x4 +fn_8011D6A8 = .text:0x8011D6A8; // type:function size:0x4 +fn_8011D6AC = .text:0x8011D6AC; // type:function size:0x4 +fn_8011D6B0 = .text:0x8011D6B0; // type:function size:0x4 +fn_8011D6B4 = .text:0x8011D6B4; // type:function size:0x4 +fn_8011D6B8 = .text:0x8011D6B8; // type:function size:0x4 +fn_8011D6BC = .text:0x8011D6BC; // type:function size:0x4 +fn_8011D6C0 = .text:0x8011D6C0; // type:function size:0x4 +fn_8011D6C4 = .text:0x8011D6C4; // type:function size:0x4 +fn_8011D6C8 = .text:0x8011D6C8; // type:function size:0x4 +fn_8011D6CC = .text:0x8011D6CC; // type:function size:0x4 +fn_8011D6D0 = .text:0x8011D6D0; // type:function size:0x4 +fn_8011D6D4 = .text:0x8011D6D4; // type:function size:0x4 +fn_8011D6D8 = .text:0x8011D6D8; // type:function size:0x4 +fn_8011D6DC = .text:0x8011D6DC; // type:function size:0x4 +fn_8011D6E0 = .text:0x8011D6E0; // type:function size:0x4 +fn_8011D6E4 = .text:0x8011D6E4; // type:function size:0x4 +fn_8011D6E8 = .text:0x8011D6E8; // type:function size:0x4 +fn_8011D6EC = .text:0x8011D6EC; // type:function size:0x4 +fn_8011D6F0 = .text:0x8011D6F0; // type:function size:0x4 +fn_8011D6F4 = .text:0x8011D6F4; // type:function size:0x4 +fn_8011D6F8 = .text:0x8011D6F8; // type:function size:0x4 +fn_8011D6FC = .text:0x8011D6FC; // type:function size:0x4 +fn_8011D700 = .text:0x8011D700; // type:function size:0x4 +fn_8011D704 = .text:0x8011D704; // type:function size:0x4 +fn_8011D708 = .text:0x8011D708; // type:function size:0x4 +fn_8011D70C = .text:0x8011D70C; // type:function size:0x4 +fn_8011D710 = .text:0x8011D710; // type:function size:0x4 +fn_8011D714 = .text:0x8011D714; // type:function size:0x4 +fn_8011D718 = .text:0x8011D718; // type:function size:0x4 +fn_8011D71C = .text:0x8011D71C; // type:function size:0x4 +fn_8011D720 = .text:0x8011D720; // type:function size:0x4 +fn_8011D724 = .text:0x8011D724; // type:function size:0x4 +fn_8011D728 = .text:0x8011D728; // type:function size:0x4 +fn_8011D72C = .text:0x8011D72C; // type:function size:0x4 +fn_8011D730 = .text:0x8011D730; // type:function size:0x4 +fn_8011D734 = .text:0x8011D734; // type:function size:0x4 +fn_8011D738 = .text:0x8011D738; // type:function size:0x4 +fn_8011D73C = .text:0x8011D73C; // type:function size:0x4 +fn_8011D740 = .text:0x8011D740; // type:function size:0x4 +fn_8011D744 = .text:0x8011D744; // type:function size:0x4 +fn_8011D748 = .text:0x8011D748; // type:function size:0x4 +fn_8011D74C = .text:0x8011D74C; // type:function size:0x4 +fn_8011D750 = .text:0x8011D750; // type:function size:0x4 +fn_8011D754 = .text:0x8011D754; // type:function size:0x4 +fn_8011D758 = .text:0x8011D758; // type:function size:0x4 +fn_8011D75C = .text:0x8011D75C; // type:function size:0x4 +fn_8011D760 = .text:0x8011D760; // type:function size:0x4 +fn_8011D764 = .text:0x8011D764; // type:function size:0x4 +fn_8011D768 = .text:0x8011D768; // type:function size:0x4 +fn_8011D76C = .text:0x8011D76C; // type:function size:0x4 +fn_8011D770 = .text:0x8011D770; // type:function size:0x4 +fn_8011D774 = .text:0x8011D774; // type:function size:0x4 +fn_8011D778 = .text:0x8011D778; // type:function size:0x4 +fn_8011D77C = .text:0x8011D77C; // type:function size:0x4 +fn_8011D780 = .text:0x8011D780; // type:function size:0x4 +fn_8011D784 = .text:0x8011D784; // type:function size:0x4 +fn_8011D788 = .text:0x8011D788; // type:function size:0x4 +fn_8011D78C = .text:0x8011D78C; // type:function size:0x4 +fn_8011D790 = .text:0x8011D790; // type:function size:0x4 +fn_8011D794 = .text:0x8011D794; // type:function size:0x4 +fn_8011D798 = .text:0x8011D798; // type:function size:0x4 +fn_8011D79C = .text:0x8011D79C; // type:function size:0x4 +fn_8011D7A0 = .text:0x8011D7A0; // type:function size:0x4 +fn_8011D7A4 = .text:0x8011D7A4; // type:function size:0x4 +fn_8011D7A8 = .text:0x8011D7A8; // type:function size:0x4 +fn_8011D7AC = .text:0x8011D7AC; // type:function size:0x4 +fn_8011D7B0 = .text:0x8011D7B0; // type:function size:0x4 +fn_8011D7B4 = .text:0x8011D7B4; // type:function size:0x4 +fn_8011D7B8 = .text:0x8011D7B8; // type:function size:0x4 +fn_8011D7BC = .text:0x8011D7BC; // type:function size:0x4 +fn_8011D7C0 = .text:0x8011D7C0; // type:function size:0x4 +fn_8011D7C4 = .text:0x8011D7C4; // type:function size:0x4 +fn_8011D7C8 = .text:0x8011D7C8; // type:function size:0x4 +fn_8011D7CC = .text:0x8011D7CC; // type:function size:0x4 +fn_8011D7D0 = .text:0x8011D7D0; // type:function size:0x4 +fn_8011D7D4 = .text:0x8011D7D4; // type:function size:0x4 +fn_8011D7D8 = .text:0x8011D7D8; // type:function size:0x4 +fn_8011D7DC = .text:0x8011D7DC; // type:function size:0x4 +fn_8011D7E0 = .text:0x8011D7E0; // type:function size:0x4 +fn_8011D7E4 = .text:0x8011D7E4; // type:function size:0x4 +fn_8011D7E8 = .text:0x8011D7E8; // type:function size:0x4 +fn_8011D7EC = .text:0x8011D7EC; // type:function size:0x4 +fn_8011D7F0 = .text:0x8011D7F0; // type:function size:0x4 +fn_8011D7F4 = .text:0x8011D7F4; // type:function size:0x4 +fn_8011D7F8 = .text:0x8011D7F8; // type:function size:0x4 +fn_8011D7FC = .text:0x8011D7FC; // type:function size:0x4 +fn_8011D800 = .text:0x8011D800; // type:function size:0x4 +fn_8011D804 = .text:0x8011D804; // type:function size:0x4 +fn_8011D808 = .text:0x8011D808; // type:function size:0x4 +fn_8011D80C = .text:0x8011D80C; // type:function size:0x4 +fn_8011D810 = .text:0x8011D810; // type:function size:0x4 +fn_8011D814 = .text:0x8011D814; // type:function size:0x4 +fn_8011D818 = .text:0x8011D818; // type:function size:0x4 +fn_8011D81C = .text:0x8011D81C; // type:function size:0x4 +fn_8011D820 = .text:0x8011D820; // type:function size:0x4 +fn_8011D824 = .text:0x8011D824; // type:function size:0x4 +fn_8011D828 = .text:0x8011D828; // type:function size:0x4 +fn_8011D82C = .text:0x8011D82C; // type:function size:0x4 +fn_8011D830 = .text:0x8011D830; // type:function size:0x4 +fn_8011D834 = .text:0x8011D834; // type:function size:0x4 +fn_8011D838 = .text:0x8011D838; // type:function size:0x4 +fn_8011D83C = .text:0x8011D83C; // type:function size:0x4 +fn_8011D840 = .text:0x8011D840; // type:function size:0x4 +fn_8011D844 = .text:0x8011D844; // type:function size:0x4 +fn_8011D848 = .text:0x8011D848; // type:function size:0x4 +fn_8011D84C = .text:0x8011D84C; // type:function size:0x4 +fn_8011D850 = .text:0x8011D850; // type:function size:0x4 +fn_8011D854 = .text:0x8011D854; // type:function size:0x4 +fn_8011D858 = .text:0x8011D858; // type:function size:0x4 +fn_8011D85C = .text:0x8011D85C; // type:function size:0x4 +fn_8011D860 = .text:0x8011D860; // type:function size:0x4 +fn_8011D864 = .text:0x8011D864; // type:function size:0x4 +fn_8011D868 = .text:0x8011D868; // type:function size:0x4 +fn_8011D86C = .text:0x8011D86C; // type:function size:0x4 +fn_8011D870 = .text:0x8011D870; // type:function size:0x4 +fn_8011D874 = .text:0x8011D874; // type:function size:0x4 +fn_8011D878 = .text:0x8011D878; // type:function size:0x4 +fn_8011D87C = .text:0x8011D87C; // type:function size:0x4 +fn_8011D880 = .text:0x8011D880; // type:function size:0x4 +fn_8011D884 = .text:0x8011D884; // type:function size:0x4 +fn_8011D888 = .text:0x8011D888; // type:function size:0x4 +fn_8011D88C = .text:0x8011D88C; // type:function size:0x4 +fn_8011D890 = .text:0x8011D890; // type:function size:0x4 +fn_8011D894 = .text:0x8011D894; // type:function size:0x4 +fn_8011D898 = .text:0x8011D898; // type:function size:0x4 +fn_8011D89C = .text:0x8011D89C; // type:function size:0x4 +fn_8011D8A0 = .text:0x8011D8A0; // type:function size:0x4 +fn_8011D8A4 = .text:0x8011D8A4; // type:function size:0x4 +fn_8011D8A8 = .text:0x8011D8A8; // type:function size:0x4 +fn_8011D8AC = .text:0x8011D8AC; // type:function size:0x4 +fn_8011D8B0 = .text:0x8011D8B0; // type:function size:0x4 +fn_8011D8B4 = .text:0x8011D8B4; // type:function size:0x4 +fn_8011D8B8 = .text:0x8011D8B8; // type:function size:0x4 +fn_8011D8BC = .text:0x8011D8BC; // type:function size:0x4 +fn_8011D8C0 = .text:0x8011D8C0; // type:function size:0x4 +fn_8011D8C4 = .text:0x8011D8C4; // type:function size:0x4 +fn_8011D8C8 = .text:0x8011D8C8; // type:function size:0x4 +fn_8011D8CC = .text:0x8011D8CC; // type:function size:0x4 +fn_8011D8D0 = .text:0x8011D8D0; // type:function size:0x4 +fn_8011D8D4 = .text:0x8011D8D4; // type:function size:0x4 +fn_8011D8D8 = .text:0x8011D8D8; // type:function size:0x4 +fn_8011D8DC = .text:0x8011D8DC; // type:function size:0x4 +fn_8011D8E0 = .text:0x8011D8E0; // type:function size:0x4 +fn_8011D8E4 = .text:0x8011D8E4; // type:function size:0x4 +fn_8011D8E8 = .text:0x8011D8E8; // type:function size:0x4 +fn_8011D8EC = .text:0x8011D8EC; // type:function size:0x4 +fn_8011D8F0 = .text:0x8011D8F0; // type:function size:0x4 +fn_8011D8F4 = .text:0x8011D8F4; // type:function size:0x4 +fn_8011D8F8 = .text:0x8011D8F8; // type:function size:0x4 +fn_8011D8FC = .text:0x8011D8FC; // type:function size:0x4 +fn_8011D900 = .text:0x8011D900; // type:function size:0x4 +fn_8011D904 = .text:0x8011D904; // type:function size:0x4 +fn_8011D908 = .text:0x8011D908; // type:function size:0x4 +fn_8011D90C = .text:0x8011D90C; // type:function size:0x4 +fn_8011D910 = .text:0x8011D910; // type:function size:0x4 +fn_8011D914 = .text:0x8011D914; // type:function size:0x4 +fn_8011D918 = .text:0x8011D918; // type:function size:0x4 +fn_8011D91C = .text:0x8011D91C; // type:function size:0x4 +fn_8011D920 = .text:0x8011D920; // type:function size:0x4 +fn_8011D924 = .text:0x8011D924; // type:function size:0x4 +fn_8011D928 = .text:0x8011D928; // type:function size:0x4 +fn_8011D92C = .text:0x8011D92C; // type:function size:0x4 +fn_8011D930 = .text:0x8011D930; // type:function size:0x4 +fn_8011D934 = .text:0x8011D934; // type:function size:0x4 +fn_8011D938 = .text:0x8011D938; // type:function size:0x4 +fn_8011D93C = .text:0x8011D93C; // type:function size:0x4 +fn_8011D940 = .text:0x8011D940; // type:function size:0x4 +fn_8011D944 = .text:0x8011D944; // type:function size:0x4 +fn_8011D948 = .text:0x8011D948; // type:function size:0x4 +fn_8011D94C = .text:0x8011D94C; // type:function size:0x4 +fn_8011D950 = .text:0x8011D950; // type:function size:0x4 +fn_8011D954 = .text:0x8011D954; // type:function size:0x4 +fn_8011D958 = .text:0x8011D958; // type:function size:0x4 +fn_8011D95C = .text:0x8011D95C; // type:function size:0x4 +fn_8011D960 = .text:0x8011D960; // type:function size:0x4 +fn_8011D964 = .text:0x8011D964; // type:function size:0x4 +fn_8011D968 = .text:0x8011D968; // type:function size:0x4 +fn_8011D96C = .text:0x8011D96C; // type:function size:0x4 +fn_8011D970 = .text:0x8011D970; // type:function size:0x4 +fn_8011D974 = .text:0x8011D974; // type:function size:0x4 +fn_8011D978 = .text:0x8011D978; // type:function size:0x4 +fn_8011D97C = .text:0x8011D97C; // type:function size:0x4 +fn_8011D980 = .text:0x8011D980; // type:function size:0x4 +fn_8011D984 = .text:0x8011D984; // type:function size:0x4 +fn_8011D988 = .text:0x8011D988; // type:function size:0x4 +fn_8011D98C = .text:0x8011D98C; // type:function size:0x4 +fn_8011D990 = .text:0x8011D990; // type:function size:0x4 +fn_8011D994 = .text:0x8011D994; // type:function size:0x4 +fn_8011D998 = .text:0x8011D998; // type:function size:0x4 +fn_8011D99C = .text:0x8011D99C; // type:function size:0x4 +fn_8011D9A0 = .text:0x8011D9A0; // type:function size:0x4 +fn_8011D9A4 = .text:0x8011D9A4; // type:function size:0x4 +fn_8011D9A8 = .text:0x8011D9A8; // type:function size:0x4 +fn_8011D9AC = .text:0x8011D9AC; // type:function size:0x4 +fn_8011D9B0 = .text:0x8011D9B0; // type:function size:0x4 +fn_8011D9B4 = .text:0x8011D9B4; // type:function size:0x4 +fn_8011D9B8 = .text:0x8011D9B8; // type:function size:0x4 +fn_8011D9BC = .text:0x8011D9BC; // type:function size:0x4 +fn_8011D9C0 = .text:0x8011D9C0; // type:function size:0x4 +fn_8011D9C4 = .text:0x8011D9C4; // type:function size:0x4 +fn_8011D9C8 = .text:0x8011D9C8; // type:function size:0x4 +fn_8011D9CC = .text:0x8011D9CC; // type:function size:0x4 +fn_8011D9D0 = .text:0x8011D9D0; // type:function size:0x4 +fn_8011D9D4 = .text:0x8011D9D4; // type:function size:0x4 +fn_8011D9D8 = .text:0x8011D9D8; // type:function size:0x4 +fn_8011D9DC = .text:0x8011D9DC; // type:function size:0x4 +fn_8011D9E0 = .text:0x8011D9E0; // type:function size:0x4 +fn_8011D9E4 = .text:0x8011D9E4; // type:function size:0x4 +fn_8011D9E8 = .text:0x8011D9E8; // type:function size:0x4 +fn_8011D9EC = .text:0x8011D9EC; // type:function size:0x4 +fn_8011D9F0 = .text:0x8011D9F0; // type:function size:0x4 +fn_8011D9F4 = .text:0x8011D9F4; // type:function size:0x4 +fn_8011D9F8 = .text:0x8011D9F8; // type:function size:0x4 +fn_8011D9FC = .text:0x8011D9FC; // type:function size:0x4 +fn_8011DA00 = .text:0x8011DA00; // type:function size:0x4 +fn_8011DA04 = .text:0x8011DA04; // type:function size:0x4 +fn_8011DA08 = .text:0x8011DA08; // type:function size:0x4 +fn_8011DA0C = .text:0x8011DA0C; // type:function size:0x4 +fn_8011DA10 = .text:0x8011DA10; // type:function size:0x4 +fn_8011DA14 = .text:0x8011DA14; // type:function size:0x4 +fn_8011DA18 = .text:0x8011DA18; // type:function size:0x4 +fn_8011DA1C = .text:0x8011DA1C; // type:function size:0x4 +fn_8011DA20 = .text:0x8011DA20; // type:function size:0x4 +fn_8011DA24 = .text:0x8011DA24; // type:function size:0x4 +fn_8011DA28 = .text:0x8011DA28; // type:function size:0x4 +fn_8011DA2C = .text:0x8011DA2C; // type:function size:0x4 +fn_8011DA30 = .text:0x8011DA30; // type:function size:0x4 +fn_8011DA34 = .text:0x8011DA34; // type:function size:0x4 +fn_8011DA38 = .text:0x8011DA38; // type:function size:0x4 +fn_8011DA3C = .text:0x8011DA3C; // type:function size:0x4 +fn_8011DA40 = .text:0x8011DA40; // type:function size:0x4 +fn_8011DA44 = .text:0x8011DA44; // type:function size:0x4 +fn_8011DA48 = .text:0x8011DA48; // type:function size:0x4 +fn_8011DA4C = .text:0x8011DA4C; // type:function size:0x4 +fn_8011DA50 = .text:0x8011DA50; // type:function size:0x4 +fn_8011DA54 = .text:0x8011DA54; // type:function size:0x4 +fn_8011DA58 = .text:0x8011DA58; // type:function size:0x4 +fn_8011DA5C = .text:0x8011DA5C; // type:function size:0x4 +fn_8011DA60 = .text:0x8011DA60; // type:function size:0x4 +fn_8011DA64 = .text:0x8011DA64; // type:function size:0x4 +fn_8011DA68 = .text:0x8011DA68; // type:function size:0x4 +fn_8011DA6C = .text:0x8011DA6C; // type:function size:0x4 +fn_8011DA70 = .text:0x8011DA70; // type:function size:0x4 +fn_8011DA74 = .text:0x8011DA74; // type:function size:0x4 +fn_8011DA78 = .text:0x8011DA78; // type:function size:0x4 +fn_8011DA7C = .text:0x8011DA7C; // type:function size:0x4 +fn_8011DA80 = .text:0x8011DA80; // type:function size:0x4 +fn_8011DA84 = .text:0x8011DA84; // type:function size:0x4 +fn_8011DA88 = .text:0x8011DA88; // type:function size:0x4 +fn_8011DA8C = .text:0x8011DA8C; // type:function size:0x4 +fn_8011DA90 = .text:0x8011DA90; // type:function size:0x4 +fn_8011DA94 = .text:0x8011DA94; // type:function size:0x4 +fn_8011DA98 = .text:0x8011DA98; // type:function size:0x4 +fn_8011DA9C = .text:0x8011DA9C; // type:function size:0x4 +fn_8011DAA0 = .text:0x8011DAA0; // type:function size:0x4 +fn_8011DAA4 = .text:0x8011DAA4; // type:function size:0x4 +fn_8011DAA8 = .text:0x8011DAA8; // type:function size:0x4 +fn_8011DAAC = .text:0x8011DAAC; // type:function size:0x4 +fn_8011DAB0 = .text:0x8011DAB0; // type:function size:0x4 +fn_8011DAB4 = .text:0x8011DAB4; // type:function size:0x4 +fn_8011DAB8 = .text:0x8011DAB8; // type:function size:0x4 +fn_8011DABC = .text:0x8011DABC; // type:function size:0x4 +fn_8011DAC0 = .text:0x8011DAC0; // type:function size:0x4 +fn_8011DAC4 = .text:0x8011DAC4; // type:function size:0x4 +fn_8011DAC8 = .text:0x8011DAC8; // type:function size:0x4 +fn_8011DACC = .text:0x8011DACC; // type:function size:0x4 +fn_8011DAD0 = .text:0x8011DAD0; // type:function size:0x4 +fn_8011DAD4 = .text:0x8011DAD4; // type:function size:0x4 +fn_8011DAD8 = .text:0x8011DAD8; // type:function size:0x4 +fn_8011DADC = .text:0x8011DADC; // type:function size:0x4 +_ctors = .ctors:0x8011DAE0; // type:label scope:global data:4byte +__init_cpp_exceptions_reference = .ctors:0x8011DAE0; // type:object size:0x4 scope:global +_dtors = .dtors:0x8011DB00; // type:label scope:global data:4byte +__destroy_global_chain_reference = .dtors:0x8011DB00; // type:object size:0x4 scope:global +__fini_cpp_exceptions_reference = .dtors:0x8011DB04; // type:object size:0x4 scope:global +lbl_8011DB20 = .rodata:0x8011DB20; // type:object size:0x10 data:4byte +lbl_8011DB30 = .rodata:0x8011DB30; // type:object size:0x10 data:4byte +lbl_8011DB40 = .rodata:0x8011DB40; // type:object size:0x10 data:4byte +lbl_8011DB50 = .rodata:0x8011DB50; // type:object size:0x20 scope:local data:byte +lbl_8011DB70 = .rodata:0x8011DB70; // type:object size:0x10 data:4byte +lbl_8011DB80 = .rodata:0x8011DB80; // type:object size:0x24 data:4byte +lbl_8011DBA4 = .rodata:0x8011DBA4; // type:object size:0xC data:4byte +lbl_8011DBB0 = .rodata:0x8011DBB0; // type:object size:0x20 data:4byte +lbl_8011DBD0 = .rodata:0x8011DBD0; // type:object size:0x7C data:4byte +lbl_8011DC4C = .rodata:0x8011DC4C; // type:object size:0x24 data:4byte +lbl_8011DC70 = .rodata:0x8011DC70; // type:object size:0x10 data:4byte +lbl_8011DC80 = .rodata:0x8011DC80; // type:object size:0x38 data:4byte +lbl_8011DCB8 = .rodata:0x8011DCB8; // type:object size:0x38 data:4byte +lbl_8011DCF0 = .rodata:0x8011DCF0; // type:object size:0x20 data:4byte +lbl_8011DD10 = .rodata:0x8011DD10; // type:object size:0x10 data:4byte +lbl_8011DD20 = .rodata:0x8011DD20; // type:object size:0x90 data:4byte +lbl_8011DDB0 = .rodata:0x8011DDB0; // type:object size:0x20 data:4byte +lbl_8011DDD0 = .rodata:0x8011DDD0; // type:object size:0x20 data:4byte +pickSpr = .rodata:0x8011DDF0; // type:object size:0x20 scope:local +handMdl = .rodata:0x8011DE10; // type:object size:0x20 scope:local +ticketSpr = .rodata:0x8011DE30; // type:object size:0x10 scope:local +lbl_8011DE40 = .rodata:0x8011DE40; // type:object size:0x20 data:4byte +starMesTbl1 = .rodata:0x8011DE60; // type:object size:0x24 scope:local +starMesTbl2 = .rodata:0x8011DE84; // type:object size:0x48 scope:local +lbl_8011DED0 = .rodata:0x8011DED0; // type:object size:0x68 data:4byte +lbl_8011DF38 = .rodata:0x8011DF38; // type:object size:0x38 data:4byte +lbl_8011DF70 = .rodata:0x8011DF70; // type:object size:0x3C data:4byte +lbl_8011DFAC = .rodata:0x8011DFAC; // type:object size:0x14 data:2byte +lbl_8011DFC0 = .rodata:0x8011DFC0; // type:object size:0x20 data:4byte +lbl_8011DFE0 = .rodata:0x8011DFE0; // type:object size:0x20 data:4byte +lbl_8011E000 = .rodata:0x8011E000; // type:object size:0x20 data:4byte +lbl_8011E020 = .rodata:0x8011E020; // type:object size:0x20 data:4byte +lbl_8011E040 = .rodata:0x8011E040; // type:object size:0xC data:4byte +lbl_8011E04C = .rodata:0x8011E04C; // type:object size:0xC data:4byte +lbl_8011E058 = .rodata:0x8011E058; // type:object size:0xC data:4byte +lbl_8011E064 = .rodata:0x8011E064; // type:object size:0xC data:4byte +bowserMotTbl = .rodata:0x8011E070; // type:object size:0x18 scope:local +lbl_8011E088 = .rodata:0x8011E088; // type:object size:0x70 data:4byte +lbl_8011E0F8 = .rodata:0x8011E0F8; // type:object size:0xC data:byte +miniBowserMotTbl = .rodata:0x8011E104; // type:object size:0x1C scope:local +lbl_8011E120 = .rodata:0x8011E120; // type:object size:0x24 data:4byte +lbl_8011E144 = .rodata:0x8011E144; // type:object size:0x20 data:4byte +lbl_8011E164 = .rodata:0x8011E164; // type:object size:0x2C data:4byte +lbl_8011E190 = .rodata:0x8011E190; // type:object size:0x10 data:4byte +lbl_8011E1A0 = .rodata:0x8011E1A0; // type:object size:0x28 data:4byte +lbl_8011E1C8 = .rodata:0x8011E1C8; // type:object size:0x28 data:4byte +lbl_8011E1F0 = .rodata:0x8011E1F0; // type:object size:0x20 data:4byte +lbl_8011E210 = .rodata:0x8011E210; // type:object size:0x20 data:4byte +lbl_8011E230 = .rodata:0x8011E230; // type:object size:0x20 data:4byte +lbl_8011E250 = .rodata:0x8011E250; // type:object size:0x10 data:4byte +lbl_8011E260 = .rodata:0x8011E260; // type:object size:0x90 data:byte +lbl_8011E2F0 = .rodata:0x8011E2F0; // type:object size:0x10 +lbl_8011E300 = .rodata:0x8011E300; // type:object size:0x10 +lbl_8011E310 = .rodata:0x8011E310; // type:object size:0x18 data:double +lbl_8011E328 = .rodata:0x8011E328; // type:object size:0x54 +lbl_8011E37C = .rodata:0x8011E37C; // type:object size:0x14 +lbl_8011E390 = .rodata:0x8011E390; // type:object size:0x10 +lbl_8011E3A0 = .rodata:0x8011E3A0; // type:object size:0x20 +lbl_8011E3C0 = .rodata:0x8011E3C0; // type:object size:0x38 +lbl_8011E3F8 = .rodata:0x8011E3F8; // type:object size:0x40 +lbl_8011E438 = .rodata:0x8011E438; // type:object size:0x18 data:4byte +lbl_8011E450 = .rodata:0x8011E450; // type:object size:0xE0 +@stringBase0 = .rodata:0x8011E530; // type:object size:0x25 scope:local data:string_table +lbl_8011E558 = .rodata:0x8011E558; // type:object size:0x10 +lbl_8011E568 = .rodata:0x8011E568; // type:object size:0x30 data:double +lbl_8011E598 = .rodata:0x8011E598; // type:object size:0x108 +lbl_8011E6A0 = .rodata:0x8011E6A0; // type:object size:0x80 +lbl_8011E720 = .rodata:0x8011E720; // type:object size:0x10 +lbl_8011E730 = .rodata:0x8011E730; // type:object size:0x40 data:double +lbl_8011E770 = .rodata:0x8011E770; // type:object size:0x68 data:double +lbl_8011E7D8 = .rodata:0x8011E7D8; // type:object size:0x98 +@62 = .rodata:0x8011E870; // type:object size:0x1B scope:local data:string +lbl_8011E890 = .rodata:0x8011E890; // type:object size:0x20 +lbl_8011E8B0 = .rodata:0x8011E8B0; // type:object size:0x10 data:4byte +lbl_8011E8C0 = .rodata:0x8011E8C0; // type:object size:0x28 data:4byte +lbl_8011E8E8 = .rodata:0x8011E8E8; // type:object size:0x28 data:4byte +lbl_8011E910 = .rodata:0x8011E910; // type:object size:0x28 data:4byte +@154 = .rodata:0x8011E938; // type:object size:0x21 scope:local data:string +@155 = .rodata:0x8011E95C; // type:object size:0x24 scope:local data:string +lbl_8011E980 = .rodata:0x8011E980; // type:object size:0x40 +lbl_8011E9C0 = .rodata:0x8011E9C0; // type:object size:0x18 +lbl_8011E9D8 = .rodata:0x8011E9D8; // type:object size:0x88 +lbl_8011EA60 = .rodata:0x8011EA60; // type:object size:0x88 data:byte +lbl_8011EAE8 = .rodata:0x8011EAE8; // type:object size:0x100 +lbl_8011EC00 = .data:0x8011EC00; // type:object size:0x10 data:string +chanTbl = .data:0x8011EC10; // type:object size:0x10 scope:local +lbl_8011EC20 = .data:0x8011EC20; // type:object size:0x124 +jumptable_8011ED44 = .data:0x8011ED44; // type:object size:0x34 scope:local +lbl_8011ED78 = .data:0x8011ED78; // type:object size:0x11 data:string +lbl_8011ED89 = .data:0x8011ED89; // type:object size:0x11 data:string +lbl_8011ED9A = .data:0x8011ED9A; // type:object size:0x10 data:string +lbl_8011EDAA = .data:0x8011EDAA; // type:object size:0x10 data:string +lbl_8011EDBA = .data:0x8011EDBA; // type:object size:0x14 data:string +lbl_8011EDCE = .data:0x8011EDCE; // type:object size:0x11 data:string +lbl_8011EDDF = .data:0x8011EDDF; // type:object size:0x10 data:string +lbl_8011EDEF = .data:0x8011EDEF; // type:object size:0xF data:string +lbl_8011EDFE = .data:0x8011EDFE; // type:object size:0x10 data:string +lbl_8011EE0E = .data:0x8011EE0E; // type:object size:0x13 data:string +lbl_8011EE21 = .data:0x8011EE21; // type:object size:0xF data:string +lbl_8011EE30 = .data:0x8011EE30; // type:object size:0x13 data:string +lbl_8011EE43 = .data:0x8011EE43; // type:object size:0x13 data:string +lbl_8011EE56 = .data:0x8011EE56; // type:object size:0x12 data:string +lbl_8011EE68 = .data:0x8011EE68; // type:object size:0x10 data:string +lbl_8011EE78 = .data:0x8011EE78; // type:object size:0x14 data:string +lbl_8011EE8C = .data:0x8011EE8C; // type:object size:0x14 data:string +lbl_8011EEA0 = .data:0x8011EEA0; // type:object size:0x13 data:string +lbl_8011EEB3 = .data:0x8011EEB3; // type:object size:0x10 data:string +lbl_8011EEC3 = .data:0x8011EEC3; // type:object size:0x11 data:string +lbl_8011EED4 = .data:0x8011EED4; // type:object size:0xE data:string +lbl_8011EEE2 = .data:0x8011EEE2; // type:object size:0x12 data:string +lbl_8011EEF4 = .data:0x8011EEF4; // type:object size:0x11 data:string +lbl_8011EF05 = .data:0x8011EF05; // type:object size:0xF data:string +lbl_8011EF14 = .data:0x8011EF14; // type:object size:0x13 data:string +lbl_8011EF27 = .data:0x8011EF27; // type:object size:0x13 data:string +lbl_8011EF3A = .data:0x8011EF3A; // type:object size:0x12 data:string +lbl_8011EF4C = .data:0x8011EF4C; // type:object size:0xE data:string +lbl_8011EF5A = .data:0x8011EF5A; // type:object size:0xE data:string +lbl_8011EF68 = .data:0x8011EF68; // type:object size:0xE data:string +lbl_8011EF76 = .data:0x8011EF76; // type:object size:0xE data:string +lbl_8011EF84 = .data:0x8011EF84; // type:object size:0xE data:string +lbl_8011EF92 = .data:0x8011EF92; // type:object size:0xE data:string +lbl_8011EFA0 = .data:0x8011EFA0; // type:object size:0xE data:string +lbl_8011EFAE = .data:0x8011EFAE; // type:object size:0xE data:string +lbl_8011EFBC = .data:0x8011EFBC; // type:object size:0xE data:string +lbl_8011EFCA = .data:0x8011EFCA; // type:object size:0xE data:string +lbl_8011EFD8 = .data:0x8011EFD8; // type:object size:0xE data:string +lbl_8011EFE6 = .data:0x8011EFE6; // type:object size:0xE data:string +lbl_8011EFF4 = .data:0x8011EFF4; // type:object size:0xE data:string +lbl_8011F002 = .data:0x8011F002; // type:object size:0xE data:string +lbl_8011F010 = .data:0x8011F010; // type:object size:0xE data:string +lbl_8011F01E = .data:0x8011F01E; // type:object size:0xE data:string +lbl_8011F02C = .data:0x8011F02C; // type:object size:0xE data:string +lbl_8011F03A = .data:0x8011F03A; // type:object size:0xE data:string +lbl_8011F048 = .data:0x8011F048; // type:object size:0xE data:string +lbl_8011F056 = .data:0x8011F056; // type:object size:0xE data:string +lbl_8011F064 = .data:0x8011F064; // type:object size:0xE data:string +lbl_8011F072 = .data:0x8011F072; // type:object size:0xE data:string +lbl_8011F080 = .data:0x8011F080; // type:object size:0xE data:string +lbl_8011F08E = .data:0x8011F08E; // type:object size:0xE data:string +lbl_8011F09C = .data:0x8011F09C; // type:object size:0xE data:string +lbl_8011F0AA = .data:0x8011F0AA; // type:object size:0xE data:string +lbl_8011F0B8 = .data:0x8011F0B8; // type:object size:0xE data:string +lbl_8011F0C6 = .data:0x8011F0C6; // type:object size:0xE data:string +lbl_8011F0D4 = .data:0x8011F0D4; // type:object size:0xE data:string +lbl_8011F0E2 = .data:0x8011F0E2; // type:object size:0xE data:string +lbl_8011F0F0 = .data:0x8011F0F0; // type:object size:0xE data:string +lbl_8011F0FE = .data:0x8011F0FE; // type:object size:0xE data:string +lbl_8011F10C = .data:0x8011F10C; // type:object size:0xE data:string +lbl_8011F11A = .data:0x8011F11A; // type:object size:0xE data:string +lbl_8011F128 = .data:0x8011F128; // type:object size:0xE data:string +lbl_8011F136 = .data:0x8011F136; // type:object size:0xE data:string +lbl_8011F144 = .data:0x8011F144; // type:object size:0xE data:string +lbl_8011F152 = .data:0x8011F152; // type:object size:0xE data:string +lbl_8011F160 = .data:0x8011F160; // type:object size:0xE data:string +lbl_8011F16E = .data:0x8011F16E; // type:object size:0xE data:string +lbl_8011F17C = .data:0x8011F17C; // type:object size:0xE data:string +lbl_8011F18A = .data:0x8011F18A; // type:object size:0xE data:string +lbl_8011F198 = .data:0x8011F198; // type:object size:0xE data:string +lbl_8011F1A6 = .data:0x8011F1A6; // type:object size:0xE data:string +lbl_8011F1B4 = .data:0x8011F1B4; // type:object size:0xE data:string +lbl_8011F1C2 = .data:0x8011F1C2; // type:object size:0xE data:string +lbl_8011F1D0 = .data:0x8011F1D0; // type:object size:0xE data:string +lbl_8011F1DE = .data:0x8011F1DE; // type:object size:0xE data:string +lbl_8011F1EC = .data:0x8011F1EC; // type:object size:0xE data:string +lbl_8011F1FA = .data:0x8011F1FA; // type:object size:0xE data:string +lbl_8011F208 = .data:0x8011F208; // type:object size:0xE data:string +lbl_8011F216 = .data:0x8011F216; // type:object size:0xE data:string +lbl_8011F224 = .data:0x8011F224; // type:object size:0xE data:string +lbl_8011F232 = .data:0x8011F232; // type:object size:0xE data:string +lbl_8011F240 = .data:0x8011F240; // type:object size:0xE data:string +lbl_8011F24E = .data:0x8011F24E; // type:object size:0xE data:string +lbl_8011F25C = .data:0x8011F25C; // type:object size:0xE data:string +lbl_8011F26A = .data:0x8011F26A; // type:object size:0xE data:string +lbl_8011F278 = .data:0x8011F278; // type:object size:0xE data:string +lbl_8011F286 = .data:0x8011F286; // type:object size:0xE data:string +lbl_8011F294 = .data:0x8011F294; // type:object size:0xE data:string +lbl_8011F2A2 = .data:0x8011F2A2; // type:object size:0xE data:string +lbl_8011F2B0 = .data:0x8011F2B0; // type:object size:0xE data:string +lbl_8011F2BE = .data:0x8011F2BE; // type:object size:0xE data:string +lbl_8011F2CC = .data:0x8011F2CC; // type:object size:0xE data:string +lbl_8011F2DA = .data:0x8011F2DA; // type:object size:0xF data:string +lbl_8011F2E9 = .data:0x8011F2E9; // type:object size:0x13 data:string +lbl_8011F2FC = .data:0x8011F2FC; // type:object size:0x13 data:string +lbl_8011F30F = .data:0x8011F30F; // type:object size:0x12 data:string +lbl_8011F321 = .data:0x8011F321; // type:object size:0xE data:string +lbl_8011F32F = .data:0x8011F32F; // type:object size:0x11 data:string +lbl_8011F340 = .data:0x8011F340; // type:object size:0x10 data:string +lbl_8011F350 = .data:0x8011F350; // type:object size:0x11 data:string +lbl_8011F361 = .data:0x8011F361; // type:object size:0xE data:string +lbl_8011F36F = .data:0x8011F36F; // type:object size:0x10 data:string +lbl_8011F37F = .data:0x8011F37F; // type:object size:0x11 data:string +lbl_8011F390 = .data:0x8011F390; // type:object size:0x11 data:string +lbl_8011F3A1 = .data:0x8011F3A1; // type:object size:0x11 data:string +lbl_8011F3B2 = .data:0x8011F3B2; // type:object size:0x10 data:string +lbl_8011F3C2 = .data:0x8011F3C2; // type:object size:0xF data:string +lbl_8011F3D1 = .data:0x8011F3D1; // type:object size:0x13 data:string +lbl_8011F3E4 = .data:0x8011F3E4; // type:object size:0x13 data:string +lbl_8011F3F7 = .data:0x8011F3F7; // type:object size:0x12 data:string +lbl_8011F409 = .data:0x8011F409; // type:object size:0x11 data:string +lbl_8011F41A = .data:0x8011F41A; // type:object size:0x10 data:string +lbl_8011F42A = .data:0x8011F42A; // type:object size:0xD data:string +lbl_8011F437 = .data:0x8011F437; // type:object size:0x11 data:string +lbl_8011F448 = .data:0x8011F448; // type:object size:0xF data:string +lbl_8011F457 = .data:0x8011F457; // type:object size:0xF data:string +lbl_8011F466 = .data:0x8011F466; // type:object size:0xF data:string +lbl_8011F475 = .data:0x8011F475; // type:object size:0xD data:string +lbl_8011F482 = .data:0x8011F482; // type:object size:0xD data:string +lbl_8011F48F = .data:0x8011F48F; // type:object size:0xD data:string +lbl_8011F49C = .data:0x8011F49C; // type:object size:0xD data:string +lbl_8011F4A9 = .data:0x8011F4A9; // type:object size:0xD data:string +lbl_8011F4B6 = .data:0x8011F4B6; // type:object size:0xD data:string +lbl_8011F4C3 = .data:0x8011F4C3; // type:object size:0xD data:string +lbl_8011F4D0 = .data:0x8011F4D0; // type:object size:0xD data:string +lbl_8011F4DD = .data:0x8011F4DD; // type:object size:0xD data:string +lbl_8011F4EA = .data:0x8011F4EA; // type:object size:0x11 data:string +lbl_8011F4FB = .data:0x8011F4FB; // type:object size:0x15 data:string +lbl_8011F510 = .data:0x8011F510; // type:object size:0x15 data:string +lbl_8011F525 = .data:0x8011F525; // type:object size:0x14 data:string +lbl_8011F539 = .data:0x8011F539; // type:object size:0xF data:string +lbl_8011F548 = .data:0x8011F548; // type:object size:0x13 data:string +lbl_8011F55B = .data:0x8011F55B; // type:object size:0x13 data:string +lbl_8011F56E = .data:0x8011F56E; // type:object size:0x12 data:string +lbl_8011F580 = .data:0x8011F580; // type:object size:0xD data:string +lbl_8011F58D = .data:0x8011F58D; // type:object size:0xF data:string +lbl_8011F59C = .data:0x8011F59C; // type:object size:0x13 data:string +lbl_8011F5AF = .data:0x8011F5AF; // type:object size:0x13 data:string +lbl_8011F5C2 = .data:0x8011F5C2; // type:object size:0x12 data:string +lbl_8011F5D4 = .data:0x8011F5D4; // type:object size:0xE data:string +DataDirStat = .data:0x8011F5E4; // type:object size:0x468 scope:local data:4byte +lbl_8011FA4C = .data:0x8011FA4C; // type:object size:0x1D data:string +lbl_8011FA69 = .data:0x8011FA69; // type:object size:0x1F data:string +lbl_8011FA88 = .data:0x8011FA88; // type:object size:0x3C +lbl_8011FAC4 = .data:0x8011FAC4; // type:object size:0x1A data:string +lbl_8011FADE = .data:0x8011FADE; // type:object size:0x122 +lbl_8011FC00 = .data:0x8011FC00; // type:object size:0x20 +ank8x8_4b = .data:0x8011FC20; // type:object size:0x2000 align:32 +lbl_80121C20 = .data:0x80121C20; // type:object size:0x150 +HeapSizeTbl = .data:0x80121D70; // type:object size:0x78 scope:local +lbl_80121DE8 = .data:0x80121DE8; // type:object size:0x50 +lbl_80121E38 = .data:0x80121E38; // type:object size:0x128 +fcoltbl = .data:0x80121F60; // type:object size:0x40 scope:local align:32 +lbl_80121FA0 = .data:0x80121FA0; // type:object size:0x1F data:string +lbl_80121FBF = .data:0x80121FBF; // type:object size:0x31 +lbl_80121FF0 = .data:0x80121FF0; // type:object size:0x12 +bitSizeTbl = .data:0x80122002; // type:object size:0x16 scope:local +lbl_80122018 = .data:0x80122018; // type:object size:0xF8 +jumptable_80122110 = .data:0x80122110; // type:object size:0x2C scope:local +jumptable_80122140 = .data:0x80122140; // type:object size:0x28 scope:local +jumptable_80122168 = .data:0x80122168; // type:object size:0x2C scope:local +lbl_80122194 = .data:0x80122194; // type:object size:0x18 data:string +texMtxTbl = .data:0x801221B0; // type:object size:0xC data:byte +jumptable_801221BC = .data:0x801221BC; // type:object size:0x28 scope:local +lbl_801221E4 = .data:0x801221E4; // type:object size:0x18 data:string +jumptable_801221FC = .data:0x801221FC; // type:object size:0x28 scope:local +jumptable_80122224 = .data:0x80122224; // type:object size:0x28 scope:local +refMtx = .data:0x8012224C; // type:object size:0x30 scope:local +kColorSelTbl = .data:0x8012227C; // type:object size:0x30 scope:local +kColorTbl = .data:0x801222AC; // type:object size:0x10 scope:local +kColorSelTbl2 = .data:0x801222BC; // type:object size:0x10 scope:local +kColorSelATbl = .data:0x801222CC; // type:object size:0x10 scope:local +lbl_801222DC = .data:0x801222DC; // type:object size:0x14 +jumptable_801222F0 = .data:0x801222F0; // type:object size:0x30 scope:local +jumptable_80122320 = .data:0x80122320; // type:object size:0x28 scope:local +jumptable_80122348 = .data:0x80122348; // type:object size:0x28 scope:local +lbl_80122370 = .data:0x80122370; // type:object size:0x19 data:string +lbl_80122389 = .data:0x80122389; // type:object size:0xA data:string +lbl_80122393 = .data:0x80122393; // type:object size:0x2D +refMapData0 = .data:0x801223C0; // type:object size:0x1240 align:32 noreloc +refMapData1 = .data:0x80123600; // type:object size:0x1100 align:32 noreloc +refMapData2 = .data:0x80124700; // type:object size:0x2080 align:32 noreloc +refMapData3 = .data:0x80126780; // type:object size:0x2080 align:32 noreloc +refMapData4 = .data:0x80128800; // type:object size:0x2080 align:32 noreloc +toonMapData = .data:0x8012A880; // type:object size:0x880 align:32 noreloc +toonMapData2 = .data:0x8012B100; // type:object size:0x1080 align:32 noreloc +hiliteData = .data:0x8012C180; // type:object size:0x480 align:32 noreloc +hiliteData2 = .data:0x8012C600; // type:object size:0x480 align:32 noreloc +hiliteData3 = .data:0x8012CA80; // type:object size:0x480 align:32 noreloc +hiliteData4 = .data:0x8012CF00; // type:object size:0x480 align:32 noreloc +lbl_8012D380 = .data:0x8012D380; // type:object size:0x1B data:string +lbl_8012D39B = .data:0x8012D39B; // type:object size:0x16 data:string +lbl_8012D3B1 = .data:0x8012D3B1; // type:object size:0x21 data:string +lbl_8012D3D2 = .data:0x8012D3D2; // type:object size:0x26 +defCamera = .data:0x8012D3F8; // type:object size:0x58 data:4byte +lbl_8012D450 = .data:0x8012D450; // type:object size:0x28 +lbl_8012D478 = .data:0x8012D478; // type:object size:0x1C data:string +lbl_8012D494 = .data:0x8012D494; // type:object size:0x1C +jumptable_8012D4B0 = .data:0x8012D4B0; // type:object size:0x2C scope:local +jumptable_8012D4DC = .data:0x8012D4DC; // type:object size:0x68 scope:local +jumptable_8012D544 = .data:0x8012D544; // type:object size:0xF0 scope:local +jumptable_8012D634 = .data:0x8012D634; // type:object size:0x20 scope:local +lbl_8012D658 = .data:0x8012D658; // type:object size:0x15 data:string +lbl_8012D66D = .data:0x8012D66D; // type:object size:0x1F data:string +lbl_8012D68C = .data:0x8012D68C; // type:object size:0x18 +basePos = .data:0x8012D6A4; // type:object size:0x30 scope:local +baseST = .data:0x8012D6D4; // type:object size:0x20 scope:local +jitterTbl = .data:0x8012D6F4; // type:object size:0x24 scope:local +jumptable_8012D718 = .data:0x8012D718; // type:object size:0x1C scope:local +lbl_8012D738 = .data:0x8012D738; // type:object size:0xCA +lbl_8012D802 = .data:0x8012D802; // type:object size:0x1C data:string +lbl_8012D81E = .data:0x8012D81E; // type:object size:0x1C data:string +lbl_8012D83A = .data:0x8012D83A; // type:object size:0x1D data:string +lbl_8012D857 = .data:0x8012D857; // type:object size:0x18 data:string +lbl_8012D86F = .data:0x8012D86F; // type:object size:0xC data:string +lbl_8012D87B = .data:0x8012D87B; // type:object size:0x45 +lbl_8012D8C0 = .data:0x8012D8C0; // type:object size:0x45 +lbl_8012D905 = .data:0x8012D905; // type:object size:0x19 data:string +lbl_8012D91E = .data:0x8012D91E; // type:object size:0x17 data:string +lbl_8012D935 = .data:0x8012D935; // type:object size:0x1B3 +XFB_Colors = .data:0x8012DAE8; // type:object size:0xF scope:local data:byte +Ascii8x8_1bpp = .data:0x8012DAF7; // type:object size:0x800 scope:local align:1 +lbl_8012E2F7 = .data:0x8012E2F7; // type:object size:0x19 +lbl_8012E310 = .data:0x8012E310; // type:object size:0x21A +lbl_8012E52A = .data:0x8012E52A; // type:object size:0xB data:string +lbl_8012E535 = .data:0x8012E535; // type:object size:0x273 +lbl_8012E7A8 = .data:0x8012E7A8; // type:object size:0x12 data:string +lbl_8012E7BA = .data:0x8012E7BA; // type:object size:0xD6 +sndGrpTable = .data:0x8012E890; // type:object size:0x5B0 +lbl_8012EE40 = .data:0x8012EE40; // type:object size:0x94 +lbl_8012EED4 = .data:0x8012EED4; // type:object size:0x11 data:string +lbl_8012EEE5 = .data:0x8012EEE5; // type:object size:0x3A +lbl_8012EF1F = .data:0x8012EF1F; // type:object size:0x31 +seqInfoTbl = .data:0x8012EF50; // type:object size:0x1DC scope:local +seqType2SprTbl = .data:0x8012F12C; // type:object size:0x18 scope:local +mgSeqTypeTbl = .data:0x8012F144; // type:object size:0x12 scope:local +lbl_8012F156 = .data:0x8012F156; // type:object size:0x53 scope:local data:string +lbl_8012F1A2 = .data:0x8012F1A9; // type:object size:0x9 scope:local data:string +lbl_8012F1B2 = .data:0x8012F1B2; // type:object size:0x9 scope:local data:string +seqFontAlphaTbl = .data:0x8012F1BB; // type:object size:0x35 scope:local data:string +seqFontKanaTbl = .data:0x8012F1F0; // type:object size:0x52 scope:local +seqFontNumTbl = .data:0x8012F242; // type:object size:0xB scope:local data:string +letterBufTbl = .data:0x8012F250; // type:object size:0x14 scope:local +wordMgTbl = .data:0x8012F264; // type:object size:0x18 scope:local +letterOfs$1002 = .data:0x8012F27C; // type:object size:0x40 scope:local +letterOfs$1479 = .data:0x8012F2BC; // type:object size:0x1C scope:local +letterOfs$1853 = .data:0x8012F2D8; // type:object size:0x38 scope:local +lbl_8012F310 = .data:0x8012F310; // type:object size:0xC scope:local data:string +winCharNameTbl = .data:0x8012F31C; // type:object size:0x78 scope:local +lbl_8012F394 = .data:0x8012F394; // type:object size:0xC scope:local +winWordTbl = .data:0x8012F3A0; // type:object size:0x18 scope:local +winPosOfs = .data:0x8012F3B8; // type:object size:0x50 scope:local +practiceTbl = .data:0x8012F408; // type:object size:0xAC scope:local +yPosTbl$2458 = .data:0x8012F4B4; // type:object size:0xC scope:local +seqStartFXTbl = .data:0x8012F4C0; // type:object size:0xEC scope:local +lbl_8012F5B0 = .data:0x8012F5B0; // type:object size:0x15 data:string +lbl_8012F5C5 = .data:0x8012F5C5; // type:object size:0x10 data:string +lbl_8012F5D5 = .data:0x8012F5D5; // type:object size:0x13 data:string +lbl_8012F5E8 = .data:0x8012F5E8; // type:object size:0x10 data:string +lbl_8012F5F8 = .data:0x8012F5F8; // type:object size:0x10 data:string +lbl_8012F608 = .data:0x8012F608; // type:object size:0x10 data:string +lbl_8012F618 = .data:0x8012F618; // type:object size:0x10 data:string +lbl_8012F628 = .data:0x8012F628; // type:object size:0x10 data:string +lbl_8012F638 = .data:0x8012F638; // type:object size:0x10 data:string +lbl_8012F648 = .data:0x8012F648; // type:object size:0x10 data:string +lbl_8012F658 = .data:0x8012F658; // type:object size:0x10 data:string +lbl_8012F668 = .data:0x8012F668; // type:object size:0x10 data:string +lbl_8012F678 = .data:0x8012F678; // type:object size:0x10 data:string +lbl_8012F688 = .data:0x8012F688; // type:object size:0x10 data:string +lbl_8012F698 = .data:0x8012F698; // type:object size:0x10 data:string +lbl_8012F6A8 = .data:0x8012F6A8; // type:object size:0x10 data:string +lbl_8012F6B8 = .data:0x8012F6B8; // type:object size:0x10 data:string +lbl_8012F6C8 = .data:0x8012F6C8; // type:object size:0x10 data:string +lbl_8012F6D8 = .data:0x8012F6D8; // type:object size:0x10 data:string +lbl_8012F6E8 = .data:0x8012F6E8; // type:object size:0x10 data:string +lbl_8012F6F8 = .data:0x8012F6F8; // type:object size:0x10 data:string +lbl_8012F708 = .data:0x8012F708; // type:object size:0x10 data:string +lbl_8012F718 = .data:0x8012F718; // type:object size:0x10 data:string +lbl_8012F728 = .data:0x8012F728; // type:object size:0x10 data:string +lbl_8012F738 = .data:0x8012F738; // type:object size:0x10 data:string +lbl_8012F748 = .data:0x8012F748; // type:object size:0x10 data:string +lbl_8012F758 = .data:0x8012F758; // type:object size:0x10 data:string +lbl_8012F768 = .data:0x8012F768; // type:object size:0x10 data:string +lbl_8012F778 = .data:0x8012F778; // type:object size:0x10 data:string +lbl_8012F788 = .data:0x8012F788; // type:object size:0x10 data:string +lbl_8012F798 = .data:0x8012F798; // type:object size:0x10 data:string +lbl_8012F7A8 = .data:0x8012F7A8; // type:object size:0x10 data:string +lbl_8012F7B8 = .data:0x8012F7B8; // type:object size:0x10 data:string +lbl_8012F7C8 = .data:0x8012F7C8; // type:object size:0x10 data:string +lbl_8012F7D8 = .data:0x8012F7D8; // type:object size:0x10 data:string +lbl_8012F7E8 = .data:0x8012F7E8; // type:object size:0x10 data:string +lbl_8012F7F8 = .data:0x8012F7F8; // type:object size:0x10 data:string +lbl_8012F808 = .data:0x8012F808; // type:object size:0x10 data:string +lbl_8012F818 = .data:0x8012F818; // type:object size:0x10 data:string +lbl_8012F828 = .data:0x8012F828; // type:object size:0x10 data:string +lbl_8012F838 = .data:0x8012F838; // type:object size:0x10 data:string +lbl_8012F848 = .data:0x8012F848; // type:object size:0x10 data:string +lbl_8012F858 = .data:0x8012F858; // type:object size:0x10 data:string +lbl_8012F868 = .data:0x8012F868; // type:object size:0x10 data:string +lbl_8012F878 = .data:0x8012F878; // type:object size:0x10 data:string +lbl_8012F888 = .data:0x8012F888; // type:object size:0x10 data:string +lbl_8012F898 = .data:0x8012F898; // type:object size:0x10 data:string +lbl_8012F8A8 = .data:0x8012F8A8; // type:object size:0x10 data:string +lbl_8012F8B8 = .data:0x8012F8B8; // type:object size:0x10 data:string +lbl_8012F8C8 = .data:0x8012F8C8; // type:object size:0x10 data:string +lbl_8012F8D8 = .data:0x8012F8D8; // type:object size:0x10 data:string +lbl_8012F8E8 = .data:0x8012F8E8; // type:object size:0x10 data:string +lbl_8012F8F8 = .data:0x8012F8F8; // type:object size:0x10 data:string +lbl_8012F908 = .data:0x8012F908; // type:object size:0x10 data:string +lbl_8012F918 = .data:0x8012F918; // type:object size:0x10 data:string +lbl_8012F928 = .data:0x8012F928; // type:object size:0x10 data:string +lbl_8012F938 = .data:0x8012F938; // type:object size:0x10 data:string +lbl_8012F948 = .data:0x8012F948; // type:object size:0x10 data:string +lbl_8012F958 = .data:0x8012F958; // type:object size:0x10 data:string +lbl_8012F968 = .data:0x8012F968; // type:object size:0x10 data:string +lbl_8012F978 = .data:0x8012F978; // type:object size:0x10 data:string +lbl_8012F988 = .data:0x8012F988; // type:object size:0x10 data:string +lbl_8012F998 = .data:0x8012F998; // type:object size:0x10 data:string +lbl_8012F9A8 = .data:0x8012F9A8; // type:object size:0x10 data:string +lbl_8012F9B8 = .data:0x8012F9B8; // type:object size:0x10 data:string +lbl_8012F9C8 = .data:0x8012F9C8; // type:object size:0x10 data:string +lbl_8012F9D8 = .data:0x8012F9D8; // type:object size:0x10 data:string +lbl_8012F9E8 = .data:0x8012F9E8; // type:object size:0x10 data:string +lbl_8012F9F8 = .data:0x8012F9F8; // type:object size:0x10 data:string +lbl_8012FA08 = .data:0x8012FA08; // type:object size:0x10 data:string +lbl_8012FA18 = .data:0x8012FA18; // type:object size:0x10 data:string +lbl_8012FA28 = .data:0x8012FA28; // type:object size:0x10 data:string +lbl_8012FA38 = .data:0x8012FA38; // type:object size:0x12 data:string +lbl_8012FA4A = .data:0x8012FA4A; // type:object size:0x15 data:string +lbl_8012FA5F = .data:0x8012FA5F; // type:object size:0x13 data:string +lbl_8012FA72 = .data:0x8012FA72; // type:object size:0x10 data:string +lbl_8012FA82 = .data:0x8012FA82; // type:object size:0x12 data:string +lbl_8012FA94 = .data:0x8012FA94; // type:object size:0x13 data:string +lbl_8012FAA7 = .data:0x8012FAA7; // type:object size:0x13 data:string +lbl_8012FABA = .data:0x8012FABA; // type:object size:0x13 data:string +lbl_8012FACD = .data:0x8012FACD; // type:object size:0x12 data:string +lbl_8012FADF = .data:0x8012FADF; // type:object size:0xF data:string +lbl_8012FAEE = .data:0x8012FAEE; // type:object size:0xF data:string +lbl_8012FAFD = .data:0x8012FAFD; // type:object size:0x10 data:string +lbl_8012FB0D = .data:0x8012FB0D; // type:object size:0x12 data:string +lbl_8012FB1F = .data:0x8012FB1F; // type:object size:0xF data:string +lbl_8012FB2E = .data:0x8012FB2E; // type:object size:0x13 data:string +lbl_8012FB41 = .data:0x8012FB41; // type:object size:0x11 data:string +lbl_8012FB52 = .data:0x8012FB52; // type:object size:0x15 data:string +lbl_8012FB67 = .data:0x8012FB67; // type:object size:0xF data:string +lbl_8012FB76 = .data:0x8012FB76; // type:object size:0xF data:string +lbl_8012FB85 = .data:0x8012FB85; // type:object size:0xF data:string +lbl_8012FB94 = .data:0x8012FB94; // type:object size:0xF data:string +lbl_8012FBA3 = .data:0x8012FBA3; // type:object size:0xF data:string +lbl_8012FBB2 = .data:0x8012FBB2; // type:object size:0xF data:string +lbl_8012FBC1 = .data:0x8012FBC1; // type:object size:0xF data:string +lbl_8012FBD0 = .data:0x8012FBD0; // type:object size:0xF data:string +lbl_8012FBDF = .data:0x8012FBDF; // type:object size:0xF data:string +lbl_8012FBEE = .data:0x8012FBEE; // type:object size:0x12 +_ovltbl = .data:0x8012FC00; // type:object size:0x320 +lbl_8012FF20 = .data:0x8012FF20; // type:object size:0x20 +fadeInFunc = .data:0x8012FF40; // type:object size:0xC scope:local +fadeOutFunc = .data:0x8012FF4C; // type:object size:0xC scope:local +spcFontTbl = .data:0x8012FF60; // type:object size:0x170 scope:local +charWETbl = .data:0x801300D0; // type:object size:0x130 +charWJTbl = .data:0x80130200; // type:object size:0x140 +charColPal = .data:0x80130340; // type:object size:0x3C scope:local align:32 +frameFileTbl = .data:0x8013037C; // type:object size:0x10 scope:local +lbl_8013038C = .data:0x8013038C; // type:object size:0xE data:string +lbl_8013039A = .data:0x8013039A; // type:object size:0xF data:string +lbl_801303A9 = .data:0x801303A9; // type:object size:0x10 data:string +lbl_801303B9 = .data:0x801303B9; // type:object size:0x11 data:string +lbl_801303CA = .data:0x801303CA; // type:object size:0x10 data:string +lbl_801303DA = .data:0x801303DA; // type:object size:0x11 data:string +lbl_801303EB = .data:0x801303EB; // type:object size:0x10 data:string +lbl_801303FB = .data:0x801303FB; // type:object size:0x11 data:string +lbl_8013040C = .data:0x8013040C; // type:object size:0x10 data:string +lbl_8013041C = .data:0x8013041C; // type:object size:0x11 data:string +lbl_8013042D = .data:0x8013042D; // type:object size:0x10 data:string +lbl_8013043D = .data:0x8013043D; // type:object size:0x13 +mesDataTbl = .data:0x80130450; // type:object size:0x30 scope:local +winVoiceTbl = .data:0x80130480; // type:object size:0x54 scope:local +lbl_801304D4 = .data:0x801304D4; // type:object size:0x13 data:string +lbl_801304E7 = .data:0x801304E7; // type:object size:0x19 +winPortraitTbl = .data:0x80130500; // type:object size:0x50 scope:local +lbl_80130550 = .data:0x80130550; // type:object size:0x26 data:string +lbl_80130576 = .data:0x80130576; // type:object size:0x2A +lbl_801305A0 = .data:0x801305A0; // type:object size:0x19 data:string +lbl_801305B9 = .data:0x801305B9; // type:object size:0x14 data:string +lbl_801305CD = .data:0x801305CD; // type:object size:0x93 +lbl_80130660 = .data:0x80130660; // type:object size:0x30 +effectDataTbl = .data:0x80130690; // type:object size:0x60 scope:local +charDirTbl = .data:0x801306F0; // type:object size:0x60 scope:local +effectDustParam = .data:0x80130750; // type:object size:0x38 scope:local +effectDotParam = .data:0x80130788; // type:object size:0x38 scope:local +effectStarParam = .data:0x801307C0; // type:object size:0x38 scope:local +effectWarnParam = .data:0x801307F8; // type:object size:0x38 scope:local +effectSmokeParam = .data:0x80130830; // type:object size:0x38 scope:local +lbl_801309A0 = .data:0x80130868; // type:object size:0x20 scope:local +lbl_801309C0 = .data:0x80130888; // type:object size:0x20 scope:local +lbl_801309E0 = .data:0x801308A8; // type:object size:0x10 scope:local +jumptable_801308B8 = .data:0x801308B8; // type:object size:0x1E8 scope:local +voiceParam = .data:0x80130AA0; // type:object size:0x40 scope:local +lbl_80130AE0 = .data:0x80130AE0; // type:object size:0xE data:string +lbl_80130AEE = .data:0x80130AEE; // type:object size:0xE data:string +lbl_80130AFC = .data:0x80130AFC; // type:object size:0xE data:string +lbl_80130B0A = .data:0x80130B0A; // type:object size:0xD data:string +lbl_80130B17 = .data:0x80130B17; // type:object size:0xD data:string +lbl_80130B24 = .data:0x80130B24; // type:object size:0xB data:string +lbl_80130B2F = .data:0x80130B2F; // type:object size:0xF data:string +lbl_80130B3E = .data:0x80130B3E; // type:object size:0xF data:string +lbl_80130B4D = .data:0x80130B4D; // type:object size:0xF data:string +lbl_80130B5C = .data:0x80130B5C; // type:object size:0xF data:string +lbl_80130B6B = .data:0x80130B6B; // type:object size:0xF data:string +lbl_80130B7A = .data:0x80130B7A; // type:object size:0xF data:string +lbl_80130B89 = .data:0x80130B89; // type:object size:0x9 data:string +lbl_80130B92 = .data:0x80130B92; // type:object size:0xD data:string +lbl_80130B9F = .data:0x80130B9F; // type:object size:0x17 data:string +lbl_80130BB6 = .data:0x80130BB6; // type:object size:0x17 data:string +lbl_80130BCD = .data:0x80130BCD; // type:object size:0xE data:string +lbl_80130BDB = .data:0x80130BDB; // type:object size:0xE data:string +lbl_80130BE9 = .data:0x80130BE9; // type:object size:0xD data:string +lbl_80130BF6 = .data:0x80130BF6; // type:object size:0xE data:string +lbl_80130C04 = .data:0x80130C04; // type:object size:0xE data:string +lbl_80130C12 = .data:0x80130C12; // type:object size:0xF data:string +lbl_80130C21 = .data:0x80130C21; // type:object size:0xF data:string +lbl_80130C30 = .data:0x80130C30; // type:object size:0x18 data:string +lbl_80130C48 = .data:0x80130C48; // type:object size:0x18 data:string +lbl_80130C60 = .data:0x80130C60; // type:object size:0xE data:string +lbl_80130C6E = .data:0x80130C6E; // type:object size:0x18 data:string +lbl_80130C86 = .data:0x80130C86; // type:object size:0x1A +charTexNameTbl = .data:0x80130CA0; // type:object size:0x100 +lbl_80130DA0 = .data:0x80130DA0; // type:object size:0xD data:string +lbl_80130DAD = .data:0x80130DAD; // type:object size:0xD data:string +lbl_80130DBA = .data:0x80130DBA; // type:object size:0xE data:string +lbl_80130DC8 = .data:0x80130DC8; // type:object size:0xE data:string +lbl_80130DD6 = .data:0x80130DD6; // type:object size:0x12 +hookNameTbl = .data:0x80130DE8; // type:object size:0xA0 scope:local +modelParticleParam = .data:0x80130E88; // type:object size:0x38 scope:local +coinParticleParam = .data:0x80130EC0; // type:object size:0x38 +lbl_80130EF8 = .data:0x80130EF8; // type:object size:0x38 scope:local +lbl_80130F30 = .data:0x80130F30; // type:object size:0x38 scope:local +lbl_80130F68 = .data:0x80130F68; // type:object size:0x1C +lbl_80130F84 = .data:0x80130F84; // type:object size:0x38 +lbl_80130FBC = .data:0x80130FBC; // type:object size:0x38 +lbl_80130FF4 = .data:0x80130FF4; // type:object size:0xBC +VolumeTable = .data:0x801310B0; // type:object size:0x100 scope:local +lbl_801311B0 = .data:0x801311B0; // type:object size:0x4D +lbl_801311FD = .data:0x801311FD; // type:object size:0x1B +mgInfoTbl = .data:0x80131218; // type:object size:0xE00 data:2byte +commentTbl = .data:0x80132018; // type:object size:0x40 scope:local +lbl_80132058 = .data:0x80132058; // type:object size:0xC data:string +lbl_80132064 = .data:0x80132064; // type:object size:0xC data:string +lbl_80132070 = .data:0x80132070; // type:object size:0xC data:string +SaveFileNameTbl = .data:0x8013207C; // type:object size:0xC +jumptable_80132088 = .data:0x80132088; // type:object size:0x34 scope:local +SR_PreRstChk = .data:0x801320C0; // type:object size:0x10 scope:local +coveropen_en = .data:0x801320D0; // type:object size:0x1384 noreloc +fatalerror_en = .data:0x80133454; // type:object size:0x1384 noreloc +loading_en = .data:0x801347D8; // type:object size:0x1384 noreloc +nodisc_en = .data:0x80135B5C; // type:object size:0x1384 noreloc +retryerror_en = .data:0x80136EE0; // type:object size:0x1384 noreloc +wrongdisc_en = .data:0x80138264; // type:object size:0x1384 noreloc +coveropen_fr = .data:0x801395E8; // type:object size:0x1384 noreloc +fatalerror_fr = .data:0x8013A96C; // type:object size:0x1384 noreloc +loading_fr = .data:0x8013BCF0; // type:object size:0x1384 noreloc +nodisc_fr = .data:0x8013D074; // type:object size:0x1384 noreloc +retryerror_fr = .data:0x8013E3F8; // type:object size:0x1384 noreloc +wrongdisc_fr = .data:0x8013F77C; // type:object size:0x1384 noreloc +coveropen_ge = .data:0x80140B00; // type:object size:0x1384 noreloc +fatalerror_ge = .data:0x80141E84; // type:object size:0x1384 noreloc +loading_ge = .data:0x80143208; // type:object size:0x1384 noreloc +nodisc_ge = .data:0x8014458C; // type:object size:0x1384 noreloc +retryerror_ge = .data:0x80145910; // type:object size:0x1384 noreloc +wrongdisc_ge = .data:0x80146C94; // type:object size:0x1384 noreloc +coveropen_it = .data:0x80148018; // type:object size:0x1384 noreloc +fatalerror_it = .data:0x8014939C; // type:object size:0x1384 noreloc +loading_it = .data:0x8014A720; // type:object size:0x1384 noreloc +nodisc_it = .data:0x8014BAA4; // type:object size:0x1384 noreloc +retryerror_it = .data:0x8014CE28; // type:object size:0x1384 noreloc +wrongdisc_it = .data:0x8014E1AC; // type:object size:0x1384 noreloc +coveropen_sp = .data:0x8014F530; // type:object size:0x1384 noreloc +fatalerror_sp = .data:0x801508B4; // type:object size:0x1384 noreloc +loading_sp = .data:0x80151C38; // type:object size:0x1384 noreloc +nodisc_sp = .data:0x80152FBC; // type:object size:0x1384 noreloc +retryerror_sp = .data:0x80154340; // type:object size:0x1384 noreloc +wrongdisc_sp = .data:0x801556C4; // type:object size:0x1384 noreloc +jumptable_80156A48 = .data:0x80156A48; // type:object size:0x34 scope:local +bmpMes$493 = .data:0x80156A7C; // type:object size:0x78 scope:local +lbl_80156AF4 = .data:0x80156AF4; // type:object size:0x13 data:string +lbl_80156B07 = .data:0x80156B07; // type:object size:0x12 data:string +camViewTbl = .data:0x80156B20; // type:object size:0x24 scope:local +jumptable_80156B44 = .data:0x80156B44; // type:object size:0x24 scope:local +confettiLightTbl = .data:0x80156B68; // type:object size:0x48 scope:local +last5GfxSprTbl = .data:0x80156BB0; // type:object size:0xC scope:local +last5GfxPosTbl = .data:0x80156BBC; // type:object size:0x30 scope:local +tauntActiveFXTbl = .data:0x80156BEC; // type:object size:0x10 scope:local +tauntFXTbl = .data:0x80156BFC; // type:object size:0x20 scope:local +diceJumpObj = .data:0x80156C20; // type:object size:0x10 scope:local +motDoneF = .data:0x80156C30; // type:object size:0x10 scope:local +bowserSuitMot = .data:0x80156C40; // type:object size:0xA scope:local data:2byte +lbl_80156C4A = .data:0x80156C4A; // type:object size:0x17 data:string +lbl_80156C61 = .data:0x80156C61; // type:object size:0x17 data:string +lbl_80156C78 = .data:0x80156C78; // type:object size:0xE data:string +lbl_80156C86 = .data:0x80156C86; // type:object size:0xE data:string +lbl_80156C94 = .data:0x80156C94; // type:object size:0x18 data:string +lbl_80156CAC = .data:0x80156CAC; // type:object size:0x18 data:string +eyeMatTbl = .data:0x80156CC4; // type:object size:0x40 scope:local +lbl_80156D04 = .data:0x80156D04; // type:object size:0x20 +boardMotTbl = .data:0x80156D24; // type:object size:0x20 scope:local +boardMotRevTbl = .data:0x80156D44; // type:object size:0x20 scope:local +bowserSuitCharMdlTbl = .data:0x80156D64; // type:object size:0x20 scope:local +bowserSuitMotTbl = .data:0x80156D84; // type:object size:0x14 scope:local +sparkMotTbl = .data:0x80156D98; // type:object size:0x20 scope:local +boardSparkSfxTbl = .data:0x80156DB8; // type:object size:0x20 scope:local +boardSparkSfxTblAlt = .data:0x80156DD8; // type:object size:0x20 scope:local +megaSquishObj = .data:0x80156DF8; // type:object size:0x10 scope:local +megaSquishSfxTbl = .data:0x80156E08; // type:object size:0x20 scope:local +PortraitTbl = .data:0x80156E28; // type:object size:0x24 scope:local +StarPortraitTbl = .data:0x80156E4C; // type:object size:0x24 scope:local +boardMusTbl = .data:0x80156E70; // type:object size:0x18 scope:local +comItemPreferTbl = .data:0x80156E88; // type:object size:0x60 scope:local +comItemUseCheckFuncTbl = .data:0x80156EE8; // type:object size:0x38 scope:local +comJunctionDirTbl = .data:0x80156F20; // type:object size:0x30 scope:local +overhead2DPos = .data:0x80156F50; // type:object size:0x28 scope:local +mapViewMinZ = .data:0x80156F78; // type:object size:0x24 scope:local +mapViewMaxZ = .data:0x80156F9C; // type:object size:0x24 scope:local +mapViewMinX = .data:0x80156FC0; // type:object size:0x24 scope:local +mapViewMaxX = .data:0x80156FE4; // type:object size:0x24 scope:local +overheadCamZoom = .data:0x80157008; // type:object size:0x24 scope:local +overheadCamPosZ = .data:0x8015702C; // type:object size:0x24 scope:local +spaceImgIdx = .data:0x80157050; // type:object size:0xC scope:local +spaceHiliteImgIdx = .data:0x8015705C; // type:object size:0xC scope:local +jumptable_80157068 = .data:0x80157068; // type:object size:0x28 scope:local +hostMessTbl = .data:0x80157090; // type:object size:0x24 scope:local +itemPriceTbl = .data:0x801570B4; // type:object size:0x10 scope:local +shopMotTbl = .data:0x801570C4; // type:object size:0x6C scope:local +lbl_80157130 = .data:0x80157130; // type:object size:0xA data:string +itemPrioTbl = .data:0x8015713A; // type:object size:0x8C scope:local +rankItemGroupTbl = .data:0x801571C6; // type:object size:0x18 scope:local +cursorPosTbl = .data:0x801571E0; // type:object size:0x30 scope:local data:float +comInputDraw1 = .data:0x80157210; // type:object size:0xEE scope:local +comInputDraw2 = .data:0x801572FE; // type:object size:0xBA scope:local +comInputBall = .data:0x801573B8; // type:object size:0xCE scope:local +lbl_80157486 = .data:0x80157486; // type:object size:0xC scope:local data:string +lbl_80157492 = .data:0x80157492; // type:object size:0x13 +lbl_801574A5 = .data:0x801574A5; // type:object size:0x23 +jumptable_801574C8 = .data:0x801574C8; // type:object size:0x24 scope:local +ticketObj = .data:0x801574EC; // type:object size:0x30 scope:local +ticketPrize = .data:0x8015751C; // type:object size:0xC scope:local +handLastPos = .data:0x80157528; // type:object size:0xC scope:local data:4byte +loseSoundTbl = .data:0x80157534; // type:object size:0x20 scope:local +loseMotTbl = .data:0x80157554; // type:object size:0x24 scope:local +coinChgObj = .data:0x80157578; // type:object size:0x10 scope:local +coinDigitMdl = .data:0x80157588; // type:object size:0x28 scope:local +jumptable_801575B0 = .data:0x801575B0; // type:object size:0x1C scope:local +wheelSprTbl = .data:0x801575D0; // type:object size:0x28 scope:local +wheelSprPrio = .data:0x801575F8; // type:object size:0xE scope:local +wheelCharIconTbl = .data:0x80157608; // type:object size:0x20 scope:local +lbl_80157628 = .data:0x80157628; // type:object size:0x10 +boardStarSndTbl = .data:0x80157638; // type:object size:0x20 +hostMotTbl = .data:0x80157658; // type:object size:0x48 scope:local +starEffParam = .data:0x801576A0; // type:object size:0x50 scope:local noreloc +diceObj = .data:0x801576F0; // type:object size:0xC scope:local data:4byte +diceDigitObj = .data:0x801576FC; // type:object size:0xC scope:local data:4byte +diceSndStatus = .data:0x80157708; // type:object size:0xC scope:local +diceEffParam = .data:0x80157714; // type:object size:0x50 scope:local +diceDigitMdlTbl = .data:0x80157764; // type:object size:0x28 scope:local +uiStatus = .data:0x80157790; // type:object size:0x70 scope:local data:byte +statusSprTbl = .data:0x80157800; // type:object size:0x2C scope:local data:byte +statusSprPrioTbl = .data:0x8015782C; // type:object size:0x18 scope:local data:byte +statusHideOfsTbl = .data:0x80157844; // type:object size:0x10 scope:local data:byte +statusPosTbl = .data:0x80157854; // type:object size:0x20 scope:local data:float +statusColTbl = .data:0x80157874; // type:object size:0x10 scope:local +statusSprPosTbl = .data:0x80157884; // type:object size:0x88 scope:local +statusItemPosTbl = .data:0x8015790C; // type:object size:0x30 scope:local +itemMdlTbl = .data:0x8015793C; // type:object size:0x38 scope:local +teamItemStatusPosTbl = .data:0x80157974; // type:object size:0x18 scope:local +coinMdl = .data:0x80157990; // type:object size:0x14 scope:local +itemFuncTbl = .data:0x801579A8; // type:object size:0x38 scope:local +itemRestoreFuncTbl = .data:0x801579E0; // type:object size:0x38 scope:local +itemMdlTbl = .data:0x80157A18; // type:object size:0x38 scope:local +forceMoveSfxTbl = .data:0x80157A50; // type:object size:0x18 scope:local +callMotTbl = .data:0x80157A68; // type:object size:0x20 scope:local +lbl_80157A88 = .data:0x80157A88; // type:object size:0x13 data:string +lbl_80157A9B = .data:0x80157A9B; // type:object size:0x13 data:string +lbl_80157AAE = .data:0x80157AAE; // type:object size:0x13 data:string +lbl_80157AC1 = .data:0x80157AC1; // type:object size:0x13 data:string +lbl_80157AD4 = .data:0x80157AD4; // type:object size:0x13 data:string +lbl_80157AE7 = .data:0x80157AE7; // type:object size:0x13 data:string +lbl_80157AFA = .data:0x80157AFA; // type:object size:0x13 data:string +lbl_80157B0D = .data:0x80157B0D; // type:object size:0x13 data:string +callHookTbl = .data:0x80157B20; // type:object size:0x20 scope:local +callAttackMotTbl = .data:0x80157B40; // type:object size:0x18 scope:local +callAttackMotTbl2 = .data:0x80157B58; // type:object size:0x18 scope:local +suitMotTbl = .data:0x80157B70; // type:object size:0x40 scope:local +lbl_80157BB0 = .data:0x80157BB0; // type:object size:0x10 +booMotTbl = .data:0x80157BC0; // type:object size:0xC scope:local +shadowPos = .data:0x80157BCC; // type:object size:0xC scope:local +shadowTarget = .data:0x80157BD8; // type:object size:0xC scope:local +shadowUp = .data:0x80157BE4; // type:object size:0xC scope:local +armUpMotTbl = .data:0x80157BF0; // type:object size:0x20 scope:local +scareMotTbl = .data:0x80157C10; // type:object size:0x20 scope:local +impactMotTbl = .data:0x80157C30; // type:object size:0x20 scope:local +cameraDataTbl = .data:0x80157C50; // type:object size:0x134 scope:local +genieMotTbl = .data:0x80157D84; // type:object size:0x10 scope:local +scareFXTbl = .data:0x80157D98; // type:object size:0x20 scope:local +jumptable_80157DB8 = .data:0x80157DB8; // type:object size:0x1C scope:local +lbl_80157DD4 = .data:0x80157DD4; // type:object size:0x14 +battleCursorPosTbl = .data:0x80157DE8; // type:object size:0x18 scope:local +bombFXTbl = .data:0x80157E00; // type:object size:0x20 scope:local +battleSprPrioTbl = .data:0x80157E20; // type:object size:0x16 scope:local +jumptable_80157E38 = .data:0x80157E38; // type:object size:0x24 scope:local +battleChanceTbl = .data:0x80157E5C; // type:object size:0x3C scope:local +comPrizeMessTbl = .data:0x80157E98; // type:object size:0x18 scope:local +booPlayerMotTbl = .data:0x80157EB0; // type:object size:0xC0 scope:local +booSfxTbl = .data:0x80157F70; // type:object size:0x80 scope:local +hostMess = .data:0x80157FF0; // type:object size:0x18 scope:local +lbl_80158008 = .data:0x80158008; // type:object size:0xC data:string +ballBooMdl = .data:0x80158014; // type:object size:0x18 scope:local +jumptable_8015802C = .data:0x8015802C; // type:object size:0x20 scope:local +stealSuccessTbl = .data:0x8015804C; // type:object size:0x24 scope:local +stealTbl = .data:0x80158070; // type:object size:0x12 scope:local +mgSetupSprTbl = .data:0x80158088; // type:object size:0x34 scope:local +statusLayout4P = .data:0x801580BC; // type:object size:0x30 scope:local +statusLayout1Vs3 = .data:0x801580EC; // type:object size:0x30 scope:local +statusLayout2Vs2 = .data:0x8015811C; // type:object size:0x30 scope:local +luckyMessTbl = .data:0x8015814C; // type:object size:0x24 scope:local +jumptable_80158170 = .data:0x80158170; // type:object size:0x20 scope:local +cursorYTbl = .data:0x80158190; // type:object size:0x10 scope:local +hiliteYTbl = .data:0x801581A0; // type:object size:0x10 scope:local +hiliteColTbl = .data:0x801581B0; // type:object size:0xC scope:local +hostMesTbl = .data:0x801581C0; // type:object size:0x90 scope:local +houseMdlTbl = .data:0x80158250; // type:object size:0x30 scope:local +booMotTbl = .data:0x80158280; // type:object size:0xC scope:local +hostMotTbl = .data:0x8015828C; // type:object size:0x6C scope:local +playerStartObj = .data:0x801582F8; // type:object size:0x10 scope:local data:4byte +hitFX = .data:0x80158308; // type:object size:0x10 scope:local +startMesTbl = .data:0x80158318; // type:object size:0xB4 scope:local +logoSprTbl = .data:0x801583CC; // type:object size:0x24 scope:local +jumptable_801583F0 = .data:0x801583F0; // type:object size:0x1C scope:local +digitMdlTbl = .data:0x8015840C; // type:object size:0x24 scope:local +playerOrderMesTbl = .data:0x80158430; // type:object size:0xC scope:local +jumptable_8015843C = .data:0x8015843C; // type:object size:0x24 scope:local +hostMotTbl = .data:0x80158460; // type:object size:0x120 scope:local +messBaseTbl = .data:0x80158580; // type:object size:0x24 scope:local +playerOfsTbl = .data:0x801585A4; // type:object size:0x18 scope:local +plateObjNameTbl = .data:0x801585BC; // type:object size:0x10 scope:local +hiliteObjNameTbl = .data:0x801585CC; // type:object size:0x10 scope:local +faceObjNameTbl = .data:0x801585DC; // type:object size:0x10 scope:local +resultRankFX12Tbl = .data:0x801585EC; // type:object size:0x20 scope:local +resultRankFX3Tbl = .data:0x8015860C; // type:object size:0x20 scope:local +resultRankFX4Tbl = .data:0x8015862C; // type:object size:0x20 scope:local +impactFXTbl = .data:0x8015864C; // type:object size:0x20 scope:local +lotteryWheelMdlTbl = .data:0x8015866C; // type:object size:0x20 scope:local +teamSprPrioTbl = .data:0x8015868C; // type:object size:0x1E scope:local +teamSprTbl = .data:0x801586AC; // type:object size:0x34 scope:local +teamSprPosTbl = .data:0x801586E0; // type:object size:0x78 scope:local +teamCharSprTbl = .data:0x80158758; // type:object size:0x20 scope:local +boxModelID = .data:0x80158778; // type:object size:0x10 scope:local data:2byte +boxPosTbl = .data:0x80158788; // type:object size:0x40 scope:local data:float +padConfigPosTbl = .data:0x801587C8; // type:object size:0x20 scope:local +boardLogoTbl = .data:0x801587E8; // type:object size:0x24 scope:local +turnDigitPosTbl = .data:0x8015880C; // type:object size:0x10 scope:local +boxMdlTbl = .data:0x8015881C; // type:object size:0x20 scope:local +jumptable_8015883C = .data:0x8015883C; // type:object size:0x20 scope:local +jumptable_8015885C = .data:0x8015885C; // type:object size:0x20 scope:local +jumptable_8015887C = .data:0x8015887C; // type:object size:0x20 scope:local +lbl_801588A0 = .data:0x801588A0; // type:object size:0x24 data:string +lbl_801588C4 = .data:0x801588C4; // type:object size:0x24 data:string +@84 = .data:0x801588E8; // type:object size:0x1E scope:local data:string +__OSExceptionLocations = .data:0x801589D0; // type:object size:0x3C scope:local +lbl_80158AA8 = .data:0x80158AA8; // type:object size:0x398 +DSPInitCode = .data:0x80158E40; // type:object size:0x80 scope:local +@69 = .data:0x80158EC0; // type:object size:0x29 scope:local data:string +lbl_801590F0 = .data:0x801590F0; // type:object size:0x1B4 +@74 = .data:0x801592A4; // type:object size:0x23 scope:local data:string +@10 = .data:0x801592C8; // type:object size:0x16 scope:local data:string +@43 = .data:0x801595A4; // type:object size:0x40 scope:local +lbl_801595E8 = .data:0x801595E8; // type:object size:0x30 data:4byte +lbl_80159618 = .data:0x80159618; // type:object size:0x28 +lbl_80159640 = .data:0x80159640; // type:object size:0x28 +ResetFunctionInfo = .data:0x80159668; // type:object size:0x10 scope:local +lbl_80159678 = .data:0x80159678; // type:object size:0x78 +lbl_801596F0 = .data:0x801596F0; // type:object size:0x30 +lbl_80159720 = .data:0x80159720; // type:object size:0x30 +lbl_80159750 = .data:0x80159750; // type:object size:0x18 data:string +lbl_80159768 = .data:0x80159768; // type:object size:0xC8 data:string +lbl_80159830 = .data:0x80159830; // type:object size:0x38 +lbl_80159868 = .data:0x80159868; // type:object size:0x34 data:string +lbl_8015989C = .data:0x8015989C; // type:object size:0x34 +@13 = .data:0x801598D0; // type:object size:0x15 scope:local data:string +@293 = .data:0x8015991C; // type:object size:0x20 scope:local +jumptable_8015993C = .data:0x8015993C; // type:object size:0x40 scope:local +jumptable_8015997C = .data:0x8015997C; // type:object size:0x34 scope:local +jumptable_801599B0 = .data:0x801599B0; // type:object size:0x34 scope:local +lbl_801599E8 = .data:0x801599E8; // type:object size:0x48 data:4byte +@36 = .data:0x80159A30; // type:object size:0x1A scope:local data:string +lbl_80159AA0 = .data:0x80159AA0; // type:object size:0x164 +jumptable_80159C04 = .data:0x80159C04; // type:object size:0x58 scope:local +lbl_80159D80 = .data:0x80159D80; // type:object size:0xC00 +lbl_8015A980 = .data:0x8015A980; // type:object size:0xC data:string +lbl_8015A98C = .data:0x8015A98C; // type:object size:0x28 +jumptable_8015A9B4 = .data:0x8015A9B4; // type:object size:0x28 scope:local +jumptable_8015AA38 = .data:0x8015AA38; // type:object size:0x28 scope:local +jumptable_8015AA60 = .data:0x8015AA60; // type:object size:0x28 scope:local +jumptable_8015AA88 = .data:0x8015AA88; // type:object size:0x28 scope:local +jumptable_8015AAB0 = .data:0x8015AAB0; // type:object size:0x28 scope:local +lbl_8015AAD8 = .data:0x8015AAD8; // type:object size:0x10 +lbl_8015AAE8 = .data:0x8015AAE8; // type:object size:0x38 +lbl_8015AB20 = .data:0x8015AB20; // type:object size:0x140 +jumptable_8015AC60 = .data:0x8015AC60; // type:object size:0x68 scope:local +jumptable_8015ACC8 = .data:0x8015ACC8; // type:object size:0x44 scope:local +jumptable_8015AD0C = .data:0x8015AD0C; // type:object size:0x1C scope:local +jumptable_8015AD28 = .data:0x8015AD28; // type:object size:0x54 scope:local +GXNtsc480IntDf = .data:0x8015AD80; // type:object size:0x3C +GXNtsc480Prog = .data:0x8015ADBC; // type:object size:0x3C +GXMpal480IntDf = .data:0x8015ADF8; // type:object size:0x3C +GXPal528IntDf = .data:0x8015AE34; // type:object size:0x3C +GXEurgb60Hz480IntDf = .data:0x8015AE70; // type:object size:0x3C +jumptable_8015AEB0 = .data:0x8015AEB0; // type:object size:0x1C scope:local +jumptable_8015AED0 = .data:0x8015AED0; // type:object size:0xF4 scope:local +jumptable_8015AFC4 = .data:0x8015AFC4; // type:object size:0xF4 scope:local +jumptable_8015B0B8 = .data:0x8015B0B8; // type:object size:0x3C scope:local +lbl_8015B0F8 = .data:0x8015B0F8; // type:object size:0x28 +lbl_8015B120 = .data:0x8015B120; // type:object size:0x20 +jumptable_8015B140 = .data:0x8015B140; // type:object size:0x5C scope:local +jumptable_8015B19C = .data:0x8015B19C; // type:object size:0x90 scope:local +jumptable_8015B22C = .data:0x8015B22C; // type:object size:0x5C scope:local +lbl_8015B288 = .data:0x8015B288; // type:object size:0x18 +lbl_8015B2A0 = .data:0x8015B2A0; // type:object size:0x160 +lbl_8015B400 = .data:0x8015B400; // type:object size:0x20 +lbl_8015B420 = .data:0x8015B420; // type:object size:0x20 +Si = .data:0x8015B440; // type:object size:0x14 scope:local data:4byte +Type = .data:0x8015B454; // type:object size:0x10 scope:local +XYNTSC = .data:0x8015B510; // type:object size:0x30 scope:local +lbl_8015B5A8 = .data:0x8015B5A8; // type:object size:0x10 +jumptable_8015B5B8 = .data:0x8015B5B8; // type:object size:0x44 scope:local +jumptable_8015B5FC = .data:0x8015B5FC; // type:object size:0x44 scope:local +jumptable_8015B640 = .data:0x8015B640; // type:object size:0x44 scope:local +lbl_8015B684 = .data:0x8015B684; // type:object size:0xC +lbl_8015B690 = .data:0x8015B690; // type:object size:0x10 +__files = .data:0x8015B6A0; // type:object size:0x140 scope:global +jumptable_8015B7E0 = .data:0x8015B7E0; // type:object size:0x124 scope:local +lbl_8015B908 = .data:0x8015B908; // type:object size:0x100 +lbl_8015BA08 = .data:0x8015BA08; // type:object size:0x100 +@1249 = .data:0x8015BB08; // type:object size:0x84 scope:local +jumptable_8015BB8C = .data:0x8015BB8C; // type:object size:0x84 scope:local +jumptable_8015BC10 = .data:0x8015BC10; // type:object size:0xE0 scope:local +jumptable_8015BCF0 = .data:0x8015BCF0; // type:object size:0x44 scope:local +lbl_8015BD38 = .data:0x8015BD38; // type:object size:0x88 +jumptable_8015BDC0 = .data:0x8015BDC0; // type:object size:0x1C scope:local +jumptable_8015BDDC = .data:0x8015BDDC; // type:object size:0x1C scope:local +gTRKRestoreFlags = .data:0x8015BDF8; // type:object size:0x9 scope:global data:byte +gTRKExceptionStatus = .data:0x8015BE04; // type:object size:0x10 scope:local data:4byte +lbl_8015BE14 = .data:0x8015BE14; // type:object size:0x14 data:4byte +lbl_8015BE28 = .data:0x8015BE28; // type:object size:0x40 data:4byte +gDBCommTable = .data:0x8015BE68; // type:object size:0x1C scope:global data:4byte +jumptable_8015BE88 = .data:0x8015BE88; // type:object size:0x50 scope:local +lbl_8015BED8 = .data:0x8015BED8; // type:object size:0x1C +lbl_8015BEF4 = .data:0x8015BEF4; // type:object size:0x204 +lbl_8015C0F8 = .data:0x8015C0F8; // type:object size:0x20 +lbl_8015C118 = .data:0x8015C118; // type:object size:0x10 +lbl_8015C128 = .data:0x8015C128; // type:object size:0x20 +lbl_8015C148 = .data:0x8015C148; // type:object size:0x10 +jumptable_8015C158 = .data:0x8015C158; // type:object size:0x1C8 scope:local +lbl_8015C320 = .data:0x8015C320; // type:object size:0x200 +lbl_8015C520 = .data:0x8015C520; // type:object size:0x200 +lbl_8015C720 = .data:0x8015C720; // type:object size:0x184 +lbl_8015C8A4 = .data:0x8015C8A4; // type:object size:0x400 +lbl_8015CCA4 = .data:0x8015CCA4; // type:object size:0x204 +lbl_8015CEA8 = .data:0x8015CEA8; // type:object size:0x18 +lbl_8015CEC0 = .data:0x8015CEC0; // type:object size:0x228 +lbl_8015D0E8 = .data:0x8015D0E8; // type:object size:0x10 +lbl_8015D0F8 = .data:0x8015D0F8; // type:object size:0x10 +jumptable_8015D108 = .data:0x8015D108; // type:object size:0x24 scope:local +jumptable_8015D12C = .data:0x8015D12C; // type:object size:0x24 scope:local +jumptable_8015D150 = .data:0x8015D150; // type:object size:0x24 scope:local +lbl_8015D178 = .data:0x8015D178; // type:object size:0x808 +lbl_8015D980 = .data:0x8015D980; // type:object size:0x19E0 +lbl_8015F360 = .data:0x8015F360; // type:object size:0x10 +lbl_8015F370 = .data:0x8015F370; // type:object size:0x20 +lbl_8015F390 = .data:0x8015F390; // type:object size:0x800 +padStatErrOld = .bss:0x8015FBA0; // type:object size:0x10 scope:local +rumbleData = .bss:0x8015FBB0; // type:object size:0x20 scope:local +ReadDataStat = .bss:0x8015FBE0; // type:object size:0x2E00 scope:local align:32 data:4byte +textBuffer = .bss:0x801629E0; // type:object size:0x400 +rmodeobj = .bss:0x80162DE0; // type:object size:0x40 scope:local +HeapTbl = .bss:0x80162E20; // type:object size:0x14 scope:local +strline = .bss:0x80162E38; // type:object size:0x6800 scope:local +pfStrBuf = .bss:0x80169638; // type:object size:0x100 scope:local data:byte +processjmpbuf = .bss:0x80169738; // type:object size:0xF8 scope:local align:8 +HuSprData = .bss:0x80169830; // type:object size:0x9600 +HuSprGrpData = .bss:0x80172E30; // type:object size:0x5400 data:2byte +HuSprOrder = .bss:0x80178230; // type:object size:0x1800 +bmpNoCC = .bss:0x80179A30; // type:object size:0x20 scope:local +HuSprLayerDrawNo = .bss:0x80179A50; // type:object size:0x10 scope:local +Model = .bss:0x80179A60; // type:object size:0x80 +head = .bss:0x80179AE0; // type:object size:0xB0 +rgba = .bss:0x80179B90; // type:object size:0x190 +buf$648 = .bss:0x80179D20; // type:object size:0x300 scope:local data:byte +DrawObjData = .bss:0x8017A020; // type:object size:0x9000 scope:local +BmpPtrBak = .bss:0x80183020; // type:object size:0x20 scope:local data:4byte +MTXBuf = .bss:0x80183040; // type:object size:0x1200 scope:local +scaleBuf = .bss:0x80184240; // type:object size:0x480 scope:local data:4byte +texCol = .bss:0x801846C0; // type:object size:0x40 scope:local data:byte +hiliteMtx = .bss:0x80184700; // type:object size:0x30 scope:local +DrawObjNum = .bss:0x80184730; // type:object size:0x400 scope:local +NBTB = .bss:0x80184B30; // type:object size:0xC scope:local data:float +NBTT = .bss:0x80184B3C; // type:object size:0xC scope:local data:float +PGMaxPos = .bss:0x80184B48; // type:object size:0xC data:float +PGMinPos = .bss:0x80184B54; // type:object size:0xC data:float +Hu3DData = .bss:0x80184B60; // type:object size:0x24800 data:byte +Hu3DCamera = .bss:0x801A9360; // type:object size:0x580 data:float +layerNum = .bss:0x801A98E0; // type:object size:0x10 scope:local data:2byte +layerHook = .bss:0x801A98F0; // type:object size:0x20 scope:local +reflectAnim = .bss:0x801A9910; // type:object size:0x14 data:4byte +hiliteAnim = .bss:0x801A9924; // type:object size:0x10 data:4byte +Hu3DProjection = .bss:0x801A9934; // type:object size:0x260 data:byte +Hu3DShadowData = .bss:0x801A9B94; // type:object size:0x98 data:byte +FogData = .bss:0x801A9C2C; // type:object size:0x10 data:4byte +Hu3DCameraMtx = .bss:0x801A9C3C; // type:object size:0x30 +Hu3DCameraMtxXPose = .bss:0x801A9C6C; // type:object size:0x30 +Hu3DGlobalLight = .bss:0x801A9C9C; // type:object size:0x220 data:2byte +Hu3DLocalLight = .bss:0x801A9EBC; // type:object size:0x880 data:2byte +lbl_8018D39C = .bss:0x801AA73C; // type:object size:0x30 data:2byte +Hu3DMotion = .bss:0x801AA770; // type:object size:0x800 data:2byte +Hu3DTexAnimData = .bss:0x801AAF70; // type:object size:0x1400 data:2byte +Hu3DTexScrData = .bss:0x801AC370; // type:object size:0x6C0 data:2byte +parManProc = .bss:0x801ACA30; // type:object size:0x100 scope:local +perf = .bss:0x801ACB30; // type:object size:0x370 scope:local +Ssw = .bss:0x801ACEA0; // type:object size:0x38 scope:local +omovlhis = .bss:0x801ACED8; // type:object size:0xC0 scope:local +XFB_Geometry = .bss:0x801ACF98; // type:object size:0x18 scope:local +GWPlayerCfg = .bss:0x801ACFB0; // type:object size:0x28 +GWPlayer = .bss:0x801ACFD8; // type:object size:0xC0 data:byte +GWSystem = .bss:0x801AD098; // type:object size:0xDC data:byte +GWGameStat = .bss:0x801AD178; // type:object size:0x118 +GWGameStatDefault = .bss:0x801AD290; // type:object size:0x118 +CRot = .bss:0x801AD3A8; // type:object size:0xC data:float +Center = .bss:0x801AD3B4; // type:object size:0xC data:float +CRotM = .bss:0x801AD3C0; // type:object size:0xC0 +CenterM = .bss:0x801AD480; // type:object size:0xC0 +CZoomM = .bss:0x801AD540; // type:object size:0x40 +omDLLinfoTbl = .bss:0x801AD580; // type:object size:0x50 +sndFXBuf = .bss:0x801AD5D0; // type:object size:0x200 scope:local +charVoiceGroupStat = .bss:0x801AD7D0; // type:object size:0x20 +seqWorkData = .bss:0x801AD7F0; // type:object size:0x400 scope:local data:4byte +winnerNameW = .bss:0x801ADBF0; // type:object size:0x10 scope:local data:2byte +esprite = .bss:0x801ADC00; // type:object size:0x600 data:2byte +espanim = .bss:0x801AE200; // type:object size:0x1200 data:4byte +lbl_80192060 = .bss:0x801AF400; // type:object size:0x100 +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 +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 +arqReq = .bss:0x801B3F80; // type:object size:0x20 scope:local +ARQueBuf = .bss:0x801B3FA0; // type:object size:0x280 scope:local +preLoadBuf = .bss:0x801B4220; // type:object size:0x40 scope:local +charInstance = .bss:0x801B4260; // type:object size:0x640 scope:local +effectMdl = .bss:0x801B48A0; // type:object size:0x10 scope:local data:2byte +particleData = .bss:0x801B48B0; // type:object size:0x20 scope:local +itemHookProcess = .bss:0x801B48D0; // type:object size:0x80 scope:local +lbl_801975B0 = .bss:0x801B4950; // type:object size:0x10 scope:local +lbl_801975C0 = .bss:0x801B4960; // type:object size:0x90 scope:local +MapObject = .bss:0x801B49F0; // type:object size:0x40 +MapMT = .bss:0x801B4A30; // type:object size:0x30 +MapMTR = .bss:0x801B4A60; // type:object size:0x30 +MTRAdd = .bss:0x801B4A90; // type:object size:0xC scope:local data:float +FieldVec = .bss:0x801B4A9C; // type:object size:0xC scope:local data:float +ColisionIdx = .bss:0x801B4AA8; // type:object size:0x78 +HitFaceVec = .bss:0x801B4B20; // type:object size:0x180 +OldXYZ = .bss:0x801B4CA0; // type:object size:0xC scope:local +HitFace = .bss:0x801B4CAC; // type:object size:0x180 +CharObject = .bss:0x801B4E2C; // type:object size:0x30 +SimpleControl = .bss:0x801B4E60; // type:object size:0x1A0 +SoundBuffer = .bss:0x801B5000; // type:object size:0x500 scope:local align:32 +WorkBuffer = .bss:0x801B5500; // type:object size:0x40 scope:local align:32 +THPFileName = .bss:0x801B5540; // type:object size:0x40 scope:local +mgGameStatBackup = .bss:0x801B5580; // type:object size:0x118 +mgIndexList = .bss:0x801B5698; // type:object size:0x100 +mgTicTacToeGrid = .bss:0x801B5798; // type:object size:0x12 +_Sys_Flag = .bss:0x801B57B0; // type:object size:0x10 scope:local +curFileInfo = .bss:0x801B57C0; // type:object size:0x20 +saveBuf = .bss:0x801B57E0; // type:object size:0x4000 +ToeMessageQueue = .bss:0x801B97E0; // type:object size:0x20 scope:local +padStat$377 = .bss:0x801B9800; // type:object size:0x30 scope:local +ToeMessageArray = .bss:0x801B9830; // type:object size:0x40 scope:local +ToeThread = .bss:0x801B9870; // type:object size:0x310 scope:local align:8 +ToeThreadStack = .bss:0x801B9B80; // type:object size:0x1000 scope:local +boardCamera = .bss:0x801BAB80; // type:object size:0xC4 data:byte +cameraBackup = .bss:0x801BAC44; // type:object size:0xC4 scope:local +preTurnHook = .bss:0x801BAD08; // type:object size:0x10 scope:local +postTurnHook = .bss:0x801BAD18; // type:object size:0x10 scope:local +playerMatCopy = .bss:0x801BAD28; // type:object size:0x10 scope:local +winInsertMesTbl = .bss:0x801BAD38; // type:object size:0x20 scope:local +choiceDisableTbl = .bss:0x801BAD58; // type:object size:0x40 scope:local +focusPos = .bss:0x801BAD98; // type:object size:0xC scope:local data:float +focusPosTarget = .bss:0x801BADA4; // type:object size:0xC scope:local data:4byte +spaceData = .bss:0x801BADB0; // type:object size:0x7000 scope:local data:4byte +boardSpaceStarTbl = .bss:0x801C1DB0; // type:object size:0x10 +spaceTex = .bss:0x801C1DC0; // type:object size:0x20 scope:local +spaceHiliteTex = .bss:0x801C1DE0; // type:object size:0x20 scope:local +activeItemTbl = .bss:0x801C1E00; // type:object size:0x14 scope:local data:4byte +choiceEnableTbl = .bss:0x801C1E14; // type:object size:0x18 scope:local +lbl_801C1E30 = .bss:0x801C1E30; // type:object size:0xC data:2byte +lbl_801C1E3C = .bss:0x801C1E3C; // type:object size:0xC +lbl_801C1E48 = .bss:0x801C1E48; // type:object size:0x18 data:2byte +warpPos = .bss:0x801C1E60; // type:object size:0xC scope:local +starCharPos = .bss:0x801C1E70; // type:object size:0xC scope:local data:4byte +tutorialRoll = .bss:0x801C1E80; // type:object size:0xC scope:local +itemMdlId = .bss:0x801C1E90; // type:object size:0x18 scope:local +pickerPos = .bss:0x801C1EA8; // type:object size:0x30 scope:local +itemPosTemp = .bss:0x801C1ED8; // type:object size:0x48 scope:local +coinF = .bss:0x801C1F20; // type:object size:0x28 scope:local +booBallPos = .bss:0x801C1F48; // type:object size:0xC scope:local data:4byte +booBallScale = .bss:0x801C1F54; // type:object size:0xC scope:local data:float +booCamPos = .bss:0x801C1F60; // type:object size:0xC scope:local data:float +booCamTarget = .bss:0x801C1F6C; // type:object size:0xC scope:local data:float +booCamUp = .bss:0x801C1F78; // type:object size:0xC scope:local data:float +playerPosTemp = .bss:0x801C1F88; // type:object size:0x30 scope:local +bowserEvent = .bss:0x801C1FB8; // type:object size:0x16 scope:local +battleMGList = .bss:0x801C1FD0; // type:object size:0x10 scope:local data:2byte +camPosFortune = .bss:0x801C1FE0; // type:object size:0xC scope:local data:4byte +camTargetFortune = .bss:0x801C1FEC; // type:object size:0xC scope:local data:float +activeMG = .bss:0x801C1FF8; // type:object size:0x20 scope:local data:2byte +mgListAll = .bss:0x801C2018; // type:object size:0x40 scope:local data:2byte +mgPlay4P = .bss:0x801C2058; // type:object size:0x10 scope:local +houseMdl = .bss:0x801C2068; // type:object size:0xC scope:local data:2byte +spacePos = .bss:0x801C2078; // type:object size:0xC scope:local data:float +camStartFocusPos = .bss:0x801C2084; // type:object size:0xC scope:local data:float +spacePos = .bss:0x801C2090; // type:object size:0xC scope:local data:float +focusPos = .bss:0x801C209C; // type:object size:0xC scope:local data:float +hostPos = .bss:0x801C20A8; // type:object size:0xC scope:local +hostMot = .bss:0x801C20B4; // type:object size:0x10 scope:local data:2byte +lotteryTicketObj = .bss:0x801C20C4; // type:object size:0x10 scope:local data:4byte +boxRot = .bss:0x801C20D8; // type:object size:0x20 scope:local +padBoxPos = .bss:0x801C20F8; // type:object size:0xC scope:local data:float +pathNodeData = .bss:0x801C2108; // type:object size:0x500 scope:local data:byte +candidateNodes = .bss:0x801C2608; // type:object size:0x40 scope:local +startPathSpaceSearch = .bss:0x801C2648; // type:object size:0x20 scope:local +startPathSpace = .bss:0x801C2668; // type:object size:0x20 scope:local +boardTutorialData = .bss:0x801C2688; // type:object size:0x10 data:4byte +DriveInfo = .bss:0x801C26A0; // type:object size:0x20 scope:local align:32 +DriveBlock = .bss:0x801C26C0; // type:object size:0x30 scope:local +__OSErrorTable = .bss:0x801C26F0; // type:object size:0x40 scope:global +lbl_801C2740 = .bss:0x801C2740; // type:object size:0x20 +Scb = .bss:0x801C2760; // type:object size:0x54 scope:local data:4byte +RunQueue = .bss:0x801C27B8; // type:object size:0x100 scope:local data:4byte +lbl_801C3079 = .bss:0x801C3079; // type:object size:0x6A +lbl_801C30E3 = .bss:0x801C30E3; // type:object size:0xBD +CommandList = .bss:0x801C31A0; // type:object size:0x3C scope:local data:4byte +AlarmForTimeout = .bss:0x801C3208; // type:object size:0x28 scope:local +tmpBuffer = .bss:0x801C3280; // type:object size:0x80 scope:local +DummyCommandBlock = .bss:0x801C3300; // type:object size:0x30 scope:local +WaitingQueue = .bss:0x801C3358; // type:object size:0x20 scope:local data:4byte +bb2Buf = .bss:0x801C3378; // type:object size:0x3F scope:local +block$16 = .bss:0x801C33B8; // type:object size:0x30 scope:local +lbl_801C33E8 = .bss:0x801C33E8; // type:object size:0x78 data:2byte +lbl_801C3460 = .bss:0x801C3460; // type:object size:0x78 +lbl_801C34D8 = .bss:0x801C34D8; // type:object size:0x58 data:2byte +lbl_801C3530 = .bss:0x801C3530; // type:object size:0x20 +lbl_801C3550 = .bss:0x801C3550; // type:object size:0x10 +lbl_801C3560 = .bss:0x801C3560; // type:object size:0x40 +gxData = .bss:0x801C35A0; // type:object size:0x4F8 scope:local +lbl_801C3B18 = .bss:0x801C3B18; // type:object size:0x520 data:4byte +lbl_801C4038 = .bss:0x801C4038; // type:object size:0x220 data:4byte +lbl_801C4258 = .bss:0x801C4258; // type:object size:0x20 +Ecb = .bss:0x801C4278; // type:object size:0xC0 scope:local data:4byte +Packet = .bss:0x801C4338; // type:object size:0x80 scope:local data:4byte +lbl_801C43B8 = .bss:0x801C43B8; // type:object size:0xA0 +TypeTime = .bss:0x801C4458; // type:object size:0x20 scope:local +lbl_801C4478 = .bss:0x801C4478; // type:object size:0x20 +lbl_801C4498 = .bss:0x801C4498; // type:object size:0x40 +lbl_801C44D8 = .bss:0x801C44D8; // type:object size:0x68 data:4byte +lbl_801C4540 = .bss:0x801C4540; // type:object size:0x118 +lbl_801C4658 = .bss:0x801C4658; // type:object size:0x18 data:4byte +fragmentinfo = .bss:0x801C4670; // type:object size:0xC scope:local data:4byte +__atexit_funcs = .bss:0x801C4680; // type:object size:0x100 scope:local +lbl_801C4780 = .bss:0x801C4780; // type:object size:0x38 data:4byte +lbl_801C47B8 = .bss:0x801C47B8; // type:object size:0x100 +lbl_801C48B8 = .bss:0x801C48B8; // type:object size:0x100 +lbl_801C49B8 = .bss:0x801C49B8; // type:object size:0x100 +lbl_801C4AB8 = .bss:0x801C4AB8; // type:object size:0x18 +lbl_801C4AD0 = .bss:0x801C4AD0; // type:object size:0x28 +gTRKBigEndian = .bss:0x801C4AF8; // type:object size:0x4 scope:global data:4byte +lbl_801C4B00 = .bss:0x801C4B00; // type:object size:0x19B0 +gTRKInputPendingPtr = .bss:0x801C64B0; // type:object size:0x4 scope:global data:4byte +lbl_801C64B4 = .bss:0x801C64B4; // type:object size:0x14 data:4byte +lbl_801C64C8 = .bss:0x801C64C8; // type:object size:0x8 data:4byte +lbl_801C64D0 = .bss:0x801C64D0; // type:object size:0x8 data:4byte +TRK_saved_exceptionID = .bss:0x801C64D8; // type:object size:0x2 scope:local data:2byte +gTRKState = .bss:0x801C64DC; // type:object size:0xA4 scope:global data:4byte +gTRKCPUState = .bss:0x801C6580; // type:object size:0x430 scope:global +gTRKSaveState = .bss:0x801C69B0; // type:object size:0x94 scope:global data:4byte +lbl_801C6A44 = .bss:0x801C6A44; // type:object size:0x14 +lbl_801C6A58 = .bss:0x801C6A58; // type:object size:0x8 data:4byte +TRK_mainError = .bss:0x801C6A60; // type:object size:0x4 scope:local data:4byte +lbl_801C6A68 = .bss:0x801C6A68; // type:object size:0x758 data:4byte +lbl_801C71C0 = .bss:0x801C71C0; // type:object size:0x7 +lbl_801C71C7 = .bss:0x801C71C7; // type:object size:0x547 +lbl_801C770E = .bss:0x801C770E; // type:object size:0x476 +lbl_801C7B84 = .bss:0x801C7B84; // type:object size:0x110C +lbl_801C8C90 = .bss:0x801C8C90; // type:object size:0x8 data:byte +lbl_801C8C98 = .bss:0x801C8C98; // type:object size:0x1400 data:4byte +lbl_801CA098 = .bss:0x801CA098; // type:object size:0x3F85 +lbl_801CE01D = .bss:0x801CE01D; // type:object size:0x300 +lbl_801CE31D = .bss:0x801CE31D; // type:object size:0x64 +lbl_801CE381 = .bss:0x801CE381; // type:object size:0xE3F +lbl_801CF1C0 = .bss:0x801CF1C0; // type:object size:0x6BC +lbl_801CF87C = .bss:0x801CF87C; // type:object size:0x480 +lbl_801CFCFC = .bss:0x801CFCFC; // type:object size:0x66DC +lbl_801D63D8 = .bss:0x801D63D8; // type:object size:0x100 data:2byte +lbl_801D64D8 = .bss:0x801D64D8; // type:object size:0x240 +lbl_801D6718 = .bss:0x801D6718; // type:object size:0x214 data:4byte +lbl_801D692C = .bss:0x801D692C; // type:object size:0x600 data:float +lbl_801D6F2C = .bss:0x801D6F2C; // type:object size:0x40 data:byte +lbl_801D6F6C = .bss:0x801D6F6C; // type:object size:0x180 +lbl_801D70EC = .bss:0x801D70EC; // type:object size:0x20 data:4byte +lbl_801D710C = .bss:0x801D710C; // type:object size:0x20 data:4byte +lbl_801D712C = .bss:0x801D712C; // type:object size:0x20 data:4byte +lbl_801D714C = .bss:0x801D714C; // type:object size:0x20 data:4byte +lbl_801D716C = .bss:0x801D716C; // type:object size:0x10 data:byte +lbl_801D717C = .bss:0x801D717C; // type:object size:0x40 data:4byte +lbl_801D71BC = .bss:0x801D71BC; // type:object size:0x480 +lbl_801D763C = .bss:0x801D763C; // type:object size:0x484 +lbl_801D7AC0 = .bss:0x801D7AC0; // type:object size:0x1900 data:4byte +lbl_801D93C0 = .bss:0x801D93C0; // type:object size:0x800 +lbl_801D9BC0 = .bss:0x801D9BC0; // type:object size:0xC00 +lbl_801DA7C0 = .bss:0x801DA7C0; // type:object size:0x184E +lbl_801DC00E = .bss:0x801DC00E; // type:object size:0x1 +lbl_801DC00F = .bss:0x801DC00F; // type:object size:0x6F4 +lbl_801DC703 = .bss:0x801DC703; // type:object size:0x1C84 +lbl_801DE387 = .bss:0x801DE387; // type:object size:0x439 +lbl_801DE7C0 = .bss:0x801DE7C0; // type:object size:0x600 data:4byte +lbl_801DEDC0 = .bss:0x801DEDC0; // type:object size:0x400 data:2byte +lbl_801DF1C0 = .bss:0x801DF1C0; // type:object size:0x800 data:2byte +lbl_801DF9C0 = .bss:0x801DF9C0; // type:object size:0x22B0 +lbl_801E1C70 = .bss:0x801E1C70; // type:object size:0x1D50 +lbl_801E39C0 = .bss:0x801E39C0; // type:object size:0x20 data:2byte +lbl_801E39E0 = .bss:0x801E39E0; // type:object size:0xC +lbl_801E39EC = .bss:0x801E39EC; // type:object size:0xC data:2byte +lbl_801E39F8 = .bss:0x801E39F8; // type:object size:0x20 data:4byte +lbl_801E3A18 = .bss:0x801E3A18; // type:object size:0xF00 data:4byte +lbl_801E4918 = .bss:0x801E4918; // type:object size:0x40 data:byte +lbl_801E4958 = .bss:0x801E4958; // type:object size:0x80 data:byte +lbl_801E49D8 = .bss:0x801E49D8; // type:object size:0x950 data:byte +lbl_801E5328 = .bss:0x801E5328; // type:object size:0x600 data:4byte +lbl_801E5928 = .bss:0x801E5928; // type:object size:0x5E0 data:4byte +lbl_801E5F08 = .bss:0x801E5F08; // type:object size:0x100 data:4byte +lbl_801E6008 = .bss:0x801E6008; // type:object size:0x50 +lbl_801E6058 = .bss:0x801E6058; // type:object size:0x400 data:4byte +lbl_801E6458 = .bss:0x801E6458; // type:object size:0x300 +lbl_801E6758 = .bss:0x801E6758; // type:object size:0x700 +lbl_801E6E58 = .bss:0x801E6E58; // type:object size:0x200 data:4byte +lbl_801E7058 = .bss:0x801E7058; // type:object size:0x8B +lbl_801E70E3 = .bss:0x801E70E3; // type:object size:0x16 +lbl_801E70F9 = .bss:0x801E70F9; // type:object size:0x740 +lbl_801E7839 = .bss:0x801E7839; // type:object size:0xAA +lbl_801E78E3 = .bss:0x801E78E3; // type:object size:0x3A75 +lbl_801EB358 = .bss:0x801EB358; // type:object size:0x80 +lbl_801EB3D8 = .bss:0x801EB3D8; // type:object size:0x2180 +lbl_801ED558 = .bss:0x801ED558; // type:object size:0x40 +lbl_801ED598 = .bss:0x801ED598; // type:object size:0x80 +lbl_801ED618 = .bss:0x801ED618; // type:object size:0x40 +lbl_801ED658 = .bss:0x801ED658; // type:object size:0x284 +lbl_801ED8DC = .bss:0x801ED8DC; // type:object size:0x284 +lbl_801EDB60 = .bss:0x801EDB60; // type:object size:0x400 data:4byte +lbl_801EDF60 = .bss:0x801EDF60; // type:object size:0x60 +lbl_801EDFC0 = .bss:0x801EDFC0; // type:object size:0x2000 +lbl_801EFFC0 = .bss:0x801EFFC0; // type:object size:0x500 data:4byte +lbl_801F04C0 = .bss:0x801F04C0; // type:object size:0x30 data:4byte +lbl_801F04F0 = .bss:0x801F04F0; // type:object size:0x10 data:4byte +lbl_801F0500 = .bss:0x801F0500; // type:object size:0x178 data:2byte +lbl_801F0678 = .bss:0x801F0678; // type:object size:0xE8 data:4byte +lbl_801F0760 = .bss:0x801F0760; // type:object size:0x60 data:4byte +lbl_801F07C0 = .sdata:0x801F07C0; // type:object size:0x5 data:string +lbl_801F07C5 = .sdata:0x801F07C5; // type:object size:0x7 +rnd_seed = .sdata:0x801F07CC; // type:object size:0x4 data:4byte +lbl_801F07D0 = .sdata:0x801F07D0; // type:object size:0x6 data:string +lbl_801F07D6 = .sdata:0x801F07D6; // type:object size:0x2 data:string +lbl_801F07D8 = .sdata:0x801F07D8; // type:object size:0x7 data:string +lbl_801F07DF = .sdata:0x801F07DF; // type:object size:0x2 data:string +FirstFrame = .sdata:0x801F07E8; // type:object size:0x4 scope:local data:4byte +lbl_801F07EC = .sdata:0x801F07EC; // type:object size:0x7 data:string +lbl_801F07F3 = .sdata:0x801F07F3; // type:object size:0x4 data:string +lbl_801F07F7 = .sdata:0x801F07F7; // type:object size:0x9 +lbl_801F0800 = .sdata:0x801F0800; // type:object size:0x2 data:string +lbl_801F0802 = .sdata:0x801F0802; // type:object size:0x8 data:string +oneceF = .sdata:0x801F0810; // type:object size:0x2 scope:local data:2byte +firstTev = .sdata:0x801F0812; // type:object size:0x4 scope:local +secondTev = .sdata:0x801F0816; // type:object size:0x4 scope:local +lbl_801F081A = .sdata:0x801F081A; // type:object size:0x7 scope:local data:string +lbl_801F0828 = .sdata:0x801F0828; // type:object size:0x4 data:string +lbl_801F082C = .sdata:0x801F082C; // type:object size:0x5 data:string +omSysPauseEnableFlag = .sdata:0x801F0838; // type:object size:0x1 data:byte +omprevovl = .sdata:0x801F083C; // type:object size:0x4 data:4byte +titleMes$442 = .sdata:0x801F0840; // type:object size:0x4 scope:local data:4byte +lbl_801F0844 = .sdata:0x801F0844; // type:object size:0xC +GwLanguage = .sdata:0x801F0850; // type:object size:0x2 data:2byte +GwLanguageSave = .sdata:0x801F0852; // type:object size:0x2 +lbl_801F0858 = .sdata:0x801F0858; // type:object size:0x1 +lbl_801F0859 = .sdata:0x801F0859; // type:object size:0x7 +mgSeqOvlPrev = .sdata:0x801F0860; // type:object size:0x4 data:4byte +wordStartE = .sdata:0x801F0864; // type:object size:0x7 scope:local data:string +seqPunctTbl = .sdata:0x801F086B; // type:object size:0x3 scope:local data:byte +wordStartJ = .sdata:0x801F086E; // type:object size:0x6 scope:local +wordFinishJ = .sdata:0x801F0874; // type:object size:0x8 scope:local +wordDrawJ = .sdata:0x801F087C; // type:object size:0x6 scope:local +wordFinishE = .sdata:0x801F0882; // type:object size:0x8 scope:local data:string +wordDrawE = .sdata:0x801F088A; // type:object size:0x6 scope:local data:string +lbl_801F0890 = .sdata:0x801F0890; // type:object size:0x4 scope:local +lbl_801F0894 = .sdata:0x801F0894; // type:object size:0x6 scope:local data:string +lbl_801F089A = .sdata:0x801F089A; // type:object size:0x6 scope:local +lbl_801F08A0 = .sdata:0x801F08A0; // type:object size:0x6 scope:local data:string +lbl_801F08A6 = .sdata:0x801F08A6; // type:object size:0x5 scope:local +lbl_801F08AB = .sdata:0x801F08AB; // type:object size:0x6 scope:local data:string +lbl_801F08B1 = .sdata:0x801F08B1; // type:object size:0x5 scope:local +lbl_801F08B6 = .sdata:0x801F08B6; // type:object size:0x6 scope:local data:string +lbl_801F08BC = .sdata:0x801F08BC; // type:object size:0x4 scope:local +lbl_801F08C0 = .sdata:0x801F08C0; // type:object size:0x6 scope:local data:string +lbl_801F08C6 = .sdata:0x801F08C6; // type:object size:0x6 scope:local +lbl_801F08CC = .sdata:0x801F08CC; // type:object size:0x5 scope:local data:string +lbl_801F08D1 = .sdata:0x801F08D1; // type:object size:0x7 scope:local +lbl_801F08D8 = .sdata:0x801F08D8; // type:object size:0x6 scope:local data:string +lbl_801F08DE = .sdata:0x801F08DE; // type:object size:0x7 scope:local +lbl_801F08E5 = .sdata:0x801F08E5; // type:object size:0x8 scope:local data:string +lbl_801F08ED = .sdata:0x801F08ED; // type:object size:0x5 scope:local +lbl_801F08F2 = .sdata:0x801F08F2; // type:object size:0x7 scope:local data:string +lbl_801F08F9 = .sdata:0x801F08F9; // type:object size:0x6 scope:local +lbl_801F08FF = .sdata:0x801F08FF; // type:object size:0x5 scope:local data:string +lbl_801F0904 = .sdata:0x801F0904; // type:object size:0x5 scope:local +lbl_801F0909 = .sdata:0x801F0909; // type:object size:0x8 scope:local data:string +lbl_801F0911 = .sdata:0x801F0911; // type:object size:0x4 scope:local +lbl_801F0915 = .sdata:0x801F0915; // type:object size:0x4 scope:local data:string +lbl_801F0919 = .sdata:0x801F0919; // type:object size:0x5 scope:local +lbl_801F091E = .sdata:0x801F091E; // type:object size:0x6 scope:local data:string +lbl_801F0924 = .sdata:0x801F0924; // type:object size:0x7 scope:local +lbl_801F092B = .sdata:0x801F092B; // type:object size:0x6 scope:local +lbl_801F0931 = .sdata:0x801F0931; // type:object size:0x7 scope:local data:string +lbl_801F0938 = .sdata:0x801F0938; // type:object size:0x3 scope:local +lbl_801F093B = .sdata:0x801F093B; // type:object size:0x5 scope:local data:string +lbl_801F0940 = .sdata:0x801F0940; // type:object size:0x6 scope:local +lbl_801F0946 = .sdata:0x801F0946; // type:object size:0x5 scope:local data:string +lbl_801F094B = .sdata:0x801F094B; // type:object size:0x7 scope:local +lbl_801F0952 = .sdata:0x801F0952; // type:object size:0x6 scope:local +lbl_801F0958 = .sdata:0x801F0958; // type:object size:0x8 scope:local +pauseStr = .sdata:0x801F0960; // type:object size:0x8 scope:local +lbl_801F0968 = .sdata:0x801F0968; // type:object size:0x8 scope:local +lbl_801F0970 = .sdata:0x801F0970; // type:object size:0x8 +lbl_801F0978 = .sdata:0x801F0978; // type:object size:0x8 +lbl_801F0980 = .sdata:0x801F0980; // type:object size:0x8 +colorN$226 = .sdata:0x801F0988; // type:object size:0x4 scope:local data:byte +colorN$271 = .sdata:0x801F098C; // type:object size:0x4 scope:local data:byte +winPrio = .sdata:0x801F0990; // type:object size:0x2 scope:local data:2byte +lbl_801F0998 = .sdata:0x801F0998; // type:object size:0x8 +lbl_801F09A0 = .sdata:0x801F09A0; // type:object size:0x8 +lbl_801F09A8 = .sdata:0x801F09A8; // type:object size:0x8 +lbl_801F09B0 = .sdata:0x801F09B0; // type:object size:0x8 +lbl_801F09B8 = .sdata:0x801F09B8; // type:object size:0x8 +lbl_801F09C0 = .sdata:0x801F09C0; // type:object size:0x1 +lbl_801F09C1 = .sdata:0x801F09C1; // type:object size:0x5 data:string +lbl_801F09C6 = .sdata:0x801F09C6; // type:object size:0x5 data:string +lbl_801F09CB = .sdata:0x801F09CB; // type:object size:0x8 data:string +lbl_801F09D3 = .sdata:0x801F09D3; // type:object size:0x6 data:string +lbl_801F09D9 = .sdata:0x801F09D9; // type:object size:0x7 +lbl_801F09E0 = .sdata:0x801F09E0; // type:object size:0x8 +SaveEnableF = .sdata:0x801F09E8; // type:object size:0x4 data:4byte +lbl_801F09EC = .sdata:0x801F09EC; // type:object size:0x2 data:string +lbl_801F09EE = .sdata:0x801F09EE; // type:object size:0x2 data:string +SlotNameTbl = .sdata:0x801F09F0; // type:object size:0x8 scope:local +saveMessWin = .sdata:0x801F09F8; // type:object size:0x4 data:4byte +SR_PushTime = .sdata:0x801F0A00; // type:object size:0x8 scope:local data:2byte +SR_ResetPad = .sdata:0x801F0A08; // type:object size:0x1 scope:local data:byte +Xfb = .sdata:0x801F0A0C; // type:object size:0x8 scope:local data:4byte +nextOvl = .sdata:0x801F0A18; // type:object size:0x4 scope:local data:4byte +colorN$1400 = .sdata:0x801F0A1C; // type:object size:0x4 scope:local data:byte +lbl_801F0A20 = .sdata:0x801F0A20; // type:object size:0x8 +suitMdl = .sdata:0x801F0A28; // type:object size:0x2 scope:local data:2byte +suitPlayerMdl = .sdata:0x801F0A2A; // type:object size:0x2 scope:local data:2byte +suitCurrMot = .sdata:0x801F0A2C; // type:object size:0x2 scope:local data:2byte +lbl_801F0A2E = .sdata:0x801F0A2E; // type:object size:0x5 data:string +lbl_801F0A33 = .sdata:0x801F0A33; // type:object size:0x5 data:string +lbl_801F0A38 = .sdata:0x801F0A38; // type:object size:0x6 data:string +lbl_801F0A3E = .sdata:0x801F0A3E; // type:object size:0x6 data:string +lbl_801F0A44 = .sdata:0x801F0A44; // type:object size:0x6 data:string +lbl_801F0A4A = .sdata:0x801F0A4A; // type:object size:0x6 data:string +lbl_801F0A50 = .sdata:0x801F0A50; // type:object size:0x6 data:string +lbl_801F0A56 = .sdata:0x801F0A56; // type:object size:0x6 data:string +lbl_801F0A5C = .sdata:0x801F0A5C; // type:object size:0x6 data:string +lbl_801F0A62 = .sdata:0x801F0A62; // type:object size:0x6 data:string +lbl_801F0A68 = .sdata:0x801F0A68; // type:object size:0x6 data:string +lbl_801F0A6E = .sdata:0x801F0A6E; // type:object size:0x6 data:string +lbl_801F0A74 = .sdata:0x801F0A74; // type:object size:0x6 data:string +lbl_801F0A7A = .sdata:0x801F0A7A; // type:object size:0xE +windowID = .sdata:0x801F0A88; // type:object size:0x2 scope:local data:2byte +boardFX = .sdata:0x801F0A90; // type:object size:0x4 scope:local data:4byte +itemUse = .sdata:0x801F0A98; // type:object size:0x1 scope:local data:byte +buttonWin = .sdata:0x801F0AA0; // type:object size:0x2 scope:local data:2byte +focusMdl = .sdata:0x801F0AA2; // type:object size:0x2 scope:local data:2byte +spaceDrawMdl = .sdata:0x801F0AA8; // type:object size:0x2 scope:local data:2byte +starPlatMdl = .sdata:0x801F0AAA; // type:object size:0x2 scope:local data:2byte +itemMdl = .sdata:0x801F0AB0; // type:object size:0x2 scope:local data:2byte +itemChoice = .sdata:0x801F0AB2; // type:object size:0x1 scope:local data:byte +shopMdlParam = .sdata:0x801F0AB4; // type:object size:0x8 scope:local +hostMdl = .sdata:0x801F0ABC; // type:object size:0x2 scope:local data:2byte +shopMot = .sdata:0x801F0ABE; // type:object size:0x6 scope:local data:2byte +itemCurChoice = .sdata:0x801F0AC4; // type:object size:0x1 scope:local data:byte +defaultItemTbl = .sdata:0x801F0AC5; // type:object size:0x5 scope:local +hostMdl = .sdata:0x801F0AD0; // type:object size:0x2 scope:local data:2byte +lotteryMot = .sdata:0x801F0AD2; // type:object size:0x8 scope:local data:2byte +lotterySpr = .sdata:0x801F0ADA; // type:object size:0x2 scope:local data:2byte +lotteryInstWin = .sdata:0x801F0ADC; // type:object size:0x2 scope:local data:2byte +gripMdl = .sdata:0x801F0ADE; // type:object size:0x4 scope:local data:2byte +turnMot = .sdata:0x801F0AE2; // type:object size:0x2 scope:local data:2byte +ballMdl = .sdata:0x801F0AE4; // type:object size:0x8 scope:local +loseMot = .sdata:0x801F0AEC; // type:object size:0x2 scope:local data:2byte +ticketSprGrp = .sdata:0x801F0AEE; // type:object size:0x2 data:2byte +warpSpringMdl = .sdata:0x801F0AF0; // type:object size:0x2 scope:local data:2byte +warpImpactMdl = .sdata:0x801F0AF2; // type:object size:0x2 scope:local data:2byte +warpImpactPlayer = .sdata:0x801F0AF4; // type:object size:0x4 scope:local +lbl_801F0AF8 = .sdata:0x801F0AF8; // type:object size:0x8 +wheelPos = .sdata:0x801F0B00; // type:object size:0x1 scope:local data:byte +wheelSprGrp = .sdata:0x801F0B02; // type:object size:0x2 scope:local data:2byte +wheelFXStat = .sdata:0x801F0B04; // type:object size:0x4 scope:local data:4byte +boxObj = .sdata:0x801F0B08; // type:object size:0x8 scope:local +itemMdl = .sdata:0x801F0B10; // type:object size:0x2 scope:local data:2byte +starParman = .sdata:0x801F0B18; // type:object size:0x2 scope:local data:2byte +hostMdl = .sdata:0x801F0B1A; // type:object size:0x2 scope:local data:2byte +diceMdl = .sdata:0x801F0B20; // type:object size:0x6 scope:local +diceEff = .sdata:0x801F0B26; // type:object size:0x6 scope:local +rollWin = .sdata:0x801F0B2C; // type:object size:0x2 scope:local data:2byte +lbl_801F0B2E = .sdata:0x801F0B2E; // type:object size:0x3 data:string +itemPickupMdlId = .sdata:0x801F0B38; // type:object size:0x2 scope:local data:2byte +yourTurnSprGrp = .sdata:0x801F0B3A; // type:object size:0x2 scope:local data:2byte +jumpMot = .sdata:0x801F0B40; // type:object size:0x2 scope:local data:2byte +starMdl = .sdata:0x801F0B42; // type:object size:0x2 scope:local data:2byte +itemMotTbl = .sdata:0x801F0B48; // type:object size:0x8 scope:local +lbl_801F0B50 = .sdata:0x801F0B50; // type:object size:0x8 +jumpMot = .sdata:0x801F0B58; // type:object size:0x2 scope:local data:2byte +scareMot = .sdata:0x801F0B5A; // type:object size:0x2 scope:local data:2byte +suitItemMdl = .sdata:0x801F0B5C; // type:object size:0x2 scope:local data:2byte +bowserMdl = .sdata:0x801F0B5E; // type:object size:0x2 scope:local data:2byte +lbl_801F0B60 = .sdata:0x801F0B60; // type:object size:0x3 data:string +lbl_801F0B63 = .sdata:0x801F0B63; // type:object size:0x8 data:string +lbl_801F0B70 = .sdata:0x801F0B70; // type:object size:0x8 +lbl_801F0B78 = .sdata:0x801F0B78; // type:object size:0x8 +ballMdlTbl = .sdata:0x801F0B80; // type:object size:0x8 scope:local +lbl_801F0B88 = .sdata:0x801F0B88; // type:object size:0x8 +luckyValue = .sdata:0x801F0B90; // type:object size:0x1 scope:local data:byte +cursorPos = .sdata:0x801F0B91; // type:object size:0x1 scope:local data:byte +houseShowMot = .sdata:0x801F0B98; // type:object size:0x2 scope:local data:2byte +houseHideMot = .sdata:0x801F0B9A; // type:object size:0x2 scope:local data:2byte +ballMdl = .sdata:0x801F0B9C; // type:object size:0x2 scope:local data:2byte +booMdl = .sdata:0x801F0B9E; // type:object size:0x2 scope:local data:2byte +smokeMdl = .sdata:0x801F0BA0; // type:object size:0x2 scope:local data:2byte +hostMdl = .sdata:0x801F0BA2; // type:object size:0x2 scope:local data:2byte +hostMot = .sdata:0x801F0BA4; // type:object size:0x6 scope:local data:2byte +lbl_801F0BAA = .sdata:0x801F0BAA; // type:object size:0x7 data:string +lbl_801F0BB1 = .sdata:0x801F0BB1; // type:object size:0x7 data:string +lbl_801F0BB8 = .sdata:0x801F0BB8; // type:object size:0x7 data:string +lbl_801F0BBF = .sdata:0x801F0BBF; // type:object size:0x7 data:string +lbl_801F0BC6 = .sdata:0x801F0BC6; // type:object size:0x7 data:string +lbl_801F0BCD = .sdata:0x801F0BCD; // type:object size:0x6 data:string +lbl_801F0BD3 = .sdata:0x801F0BD3; // type:object size:0x7 data:string +lbl_801F0BDA = .sdata:0x801F0BDA; // type:object size:0x6 data:string +lbl_801F0BE0 = .sdata:0x801F0BE0; // type:object size:0x3 data:string +logoSprGrp = .sdata:0x801F0BE8; // type:object size:0x2 scope:local data:2byte +logoSpr = .sdata:0x801F0BEA; // type:object size:0x2 scope:local data:2byte +camFocus = .sdata:0x801F0BEC; // type:object size:0x2 scope:local data:2byte +tapWin = .sdata:0x801F0BEE; // type:object size:0x2 scope:local data:2byte +streamStatus = .sdata:0x801F0BF0; // type:object size:0x4 scope:local data:4byte +tutorialRollTbl = .sdata:0x801F0BF4; // type:object size:0x4 scope:local +stopWin = .sdata:0x801F0BF8; // type:object size:0x2 scope:local data:2byte +wheelMdl = .sdata:0x801F0BFA; // type:object size:0x2 scope:local data:2byte +lbl_801D3854 = .sdata:0x801F0BFC; // type:object size:0x2 data:2byte +focusMdl = .sdata:0x801F0BFE; // type:object size:0x2 scope:local data:2byte +messBase = .sdata:0x801F0C00; // type:object size:0x4 scope:local data:4byte +lbl_801F0C04 = .sdata:0x801F0C04; // type:object size:0x6 data:string +lbl_801F0C0A = .sdata:0x801F0C0A; // type:object size:0x7 data:string +lbl_801F0C11 = .sdata:0x801F0C11; // type:object size:0x7 data:string +lbl_801F0C18 = .sdata:0x801F0C18; // type:object size:0x7 data:string +lbl_801F0C1F = .sdata:0x801F0C1F; // type:object size:0x5 data:string +lbl_801F0C24 = .sdata:0x801F0C24; // type:object size:0x6 data:string +lbl_801F0C2A = .sdata:0x801F0C2A; // type:object size:0x6 data:string +lbl_801F0C30 = .sdata:0x801F0C30; // type:object size:0x6 data:string +lbl_801F0C36 = .sdata:0x801F0C36; // type:object size:0x4 data:string +lbl_801F0C3A = .sdata:0x801F0C3A; // type:object size:0x5 data:string +lbl_801F0C3F = .sdata:0x801F0C3F; // type:object size:0x5 data:string +lbl_801F0C44 = .sdata:0x801F0C44; // type:object size:0xC +pausePad = .sdata:0x801F0C50; // type:object size:0x1 scope:local data:byte +pauseSprGrp = .sdata:0x801F0C52; // type:object size:0x2 scope:local data:2byte +padConfigSprGrp = .sdata:0x801F0C54; // type:object size:0x2 scope:local data:2byte +pauseCursorPos = .sdata:0x801F0C56; // type:object size:0x2 scope:local data:2byte +settingsControlWin = .sdata:0x801F0C58; // type:object size:0x2 scope:local data:2byte +controlWin = .sdata:0x801F0C5A; // type:object size:0x2 scope:local data:2byte +quitWin = .sdata:0x801F0C5C; // type:object size:0x2 scope:local data:2byte +settingsWin = .sdata:0x801F0C5E; // type:object size:0x2 scope:local data:2byte +__OSCurrHeap = .sdata:0x801F0C60; // type:object size:0x8 data:4byte +__OSArenaLo = .sdata:0x801F0C68; // type:object size:0x4 scope:local data:4byte +@32 = .sdata:0x801F0C70; // type:object size:0x2 scope:local data:string +lbl_801F0C78 = .sdata:0x801F0C78; // type:object size:0x8 data:2byte +lbl_801F0C80 = .sdata:0x801F0C80; // type:object size:0x8 +lbl_801F0C88 = .sdata:0x801F0C88; // type:object size:0x8 data:4byte +lbl_801F0C90 = .sdata:0x801F0C90; // type:object size:0x8 data:string +autoInvalidation = .sdata:0x801F0C98; // type:object size:0x4 scope:local data:4byte +@35 = .sdata:0x801F0CA0; // type:object size:0x2 scope:local data:string +@40 = .sdata:0x801F0CA4; // type:object size:0x4 scope:local data:string +@41 = .sdata:0x801F0CA8; // type:object size:0x3 scope:local data:string +lbl_801F0CB0 = .sdata:0x801F0CB0; // type:object size:0x8 data:string +lbl_801F0CB8 = .sdata:0x801F0CB8; // type:object size:0x8 data:byte +lbl_801F0CC0 = .sdata:0x801F0CC0; // type:object size:0x4 data:4byte +lbl_801F0CC4 = .sdata:0x801F0CC4; // type:object size:0x4 data:4byte +lbl_801F0CC8 = .sdata:0x801F0CC8; // type:object size:0x4 data:4byte +lbl_801F0CCC = .sdata:0x801F0CCC; // type:object size:0x4 data:4byte +lbl_801F0CD0 = .sdata:0x801F0CD0; // type:object size:0x4 data:4byte +lbl_801F0CD4 = .sdata:0x801F0CD4; // type:object size:0x4 +lbl_801F0CD8 = .sdata:0x801F0CD8; // type:object size:0x8 +gx = .sdata:0x801F0CE0; // type:object size:0x4 scope:global data:4byte +lbl_801F0CE8 = .sdata:0x801F0CE8; // type:object size:0x4 +lbl_801F0CEC = .sdata:0x801F0CEC; // type:object size:0x4 +lbl_801F0CF0 = .sdata:0x801F0CF0; // type:object size:0x8 +lbl_801F0CF8 = .sdata:0x801F0CF8; // type:object size:0x8 +lbl_801F0D00 = .sdata:0x801F0D00; // type:object size:0x8 +lbl_801F0D08 = .sdata:0x801F0D08; // type:object size:0x8 +lbl_801F0D10 = .sdata:0x801F0D10; // type:object size:0x8 +lbl_801F0D18 = .sdata:0x801F0D18; // type:object size:0x8 +lbl_801F0D20 = .sdata:0x801F0D20; // type:object size:0x8 +lbl_801F0D28 = .sdata:0x801F0D28; // type:object size:0x8 +lbl_801F0D30 = .sdata:0x801F0D30; // type:object size:0x8 +lbl_801F0D38 = .sdata:0x801F0D38; // type:object size:0x8 data:4byte +lbl_801F0D40 = .sdata:0x801F0D40; // type:object size:0x8 data:2byte +lbl_801F0D48 = .sdata:0x801F0D48; // type:object size:0x8 +lbl_801F0D50 = .sdata:0x801F0D50; // type:object size:0x4 data:4byte +lbl_801F0D54 = .sdata:0x801F0D54; // type:object size:0x4 data:4byte +fragmentID = .sdata:0x801F0D58; // type:object size:0x4 scope:local data:4byte +lbl_801F0D60 = .sdata:0x801F0D60; // type:object size:0x8 +lbl_801F0D68 = .sdata:0x801F0D68; // type:object size:0x8 +@wstringBase0 = .sdata:0x801F0D70; // type:object size:0x2 scope:local +lbl_801F0D78 = .sdata:0x801F0D78; // type:object size:0x4 data:float +lbl_801F0D7C = .sdata:0x801F0D7C; // type:object size:0x4 data:float +lbl_801F0D80 = .sdata:0x801F0D80; // type:object size:0x8 data:4byte +lbl_801F0D88 = .sdata:0x801F0D88; // type:object size:0x8 +lbl_801F0D90 = .sdata:0x801F0D90; // type:object size:0x8 +lbl_801F0D98 = .sdata:0x801F0D98; // type:object size:0x8 data:2byte +lbl_801F0DA0 = .sdata:0x801F0DA0; // type:object size:0x1 data:byte +SystemInitF = .sbss:0x801F0DC0; // type:object size:0x4 data:4byte +HuDvdErrWait = .sbss:0x801F0DC4; // type:object size:0x4 data:4byte +fi_req = .sbss:0x801F0DC8; // type:object size:0x4 scope:local +rf_req = .sbss:0x801F0DCC; // type:object size:0x4 scope:local +pe_req = .sbss:0x801F0DD0; // type:object size:0x4 scope:local +vi_req = .sbss:0x801F0DD4; // type:object size:0x4 scope:local +io_req = .sbss:0x801F0DD8; // type:object size:0x4 scope:local +dsp_req = .sbss:0x801F0DDC; // type:object size:0x4 scope:local +cpu_wr_req = .sbss:0x801F0DE0; // type:object size:0x4 scope:local +cpu_rd_req = .sbss:0x801F0DE4; // type:object size:0x4 scope:local +tc_req = .sbss:0x801F0DE8; // type:object size:0x4 scope:local +cp_req = .sbss:0x801F0DEC; // type:object size:0x4 scope:local +total_copy_clks = .sbss:0x801F0DF0; // type:object size:0x4 scope:local +clr_pixels_in = .sbss:0x801F0DF4; // type:object size:0x4 scope:local +bot_pixels_out = .sbss:0x801F0DF8; // type:object size:0x4 scope:local +bot_pixels_in = .sbss:0x801F0DFC; // type:object size:0x4 scope:local +top_pixels_out = .sbss:0x801F0E00; // type:object size:0x4 scope:local +top_pixels_in = .sbss:0x801F0E04; // type:object size:0x4 scope:local +vstall = .sbss:0x801F0E08; // type:object size:0x4 scope:local +vmiss = .sbss:0x801F0E0C; // type:object size:0x4 scope:local +vcheck = .sbss:0x801F0E10; // type:object size:0x4 scope:local +GlobalCounter = .sbss:0x801F0E14; // type:object size:0x4 data:4byte +VCounter = .sbss:0x801F0E18; // type:object size:0x4 data:4byte +RumbleBit = .sbss:0x801F0E1C; // type:object size:0x4 scope:local data:4byte +_PadErr = .sbss:0x801F0E20; // type:object size:0x4 scope:local +_PadDStkRepOld = .sbss:0x801F0E24; // type:object size:0x4 scope:local +_PadDStkRepCnt = .sbss:0x801F0E28; // type:object size:0x4 scope:local +_PadDStkRep = .sbss:0x801F0E2C; // type:object size:0x4 scope:local +_PadDStk = .sbss:0x801F0E30; // type:object size:0x4 scope:local +_PadTrigR = .sbss:0x801F0E34; // type:object size:0x4 scope:local +_PadTrigL = .sbss:0x801F0E38; // type:object size:0x4 scope:local +_PadSubStkY = .sbss:0x801F0E3C; // type:object size:0x4 scope:local +_PadSubStkX = .sbss:0x801F0E40; // type:object size:0x4 scope:local +_PadStkY = .sbss:0x801F0E44; // type:object size:0x4 scope:local +_PadStkX = .sbss:0x801F0E48; // type:object size:0x4 scope:local +_PadRepCnt = .sbss:0x801F0E4C; // type:object size:0x8 scope:local +_PadBtnDown = .sbss:0x801F0E54; // type:object size:0x8 +_PadBtn = .sbss:0x801F0E5C; // type:object size:0x8 +HuPadErr = .sbss:0x801F0E64; // type:object size:0x4 +HuPadDStkRep = .sbss:0x801F0E68; // type:object size:0x4 +HuPadDStk = .sbss:0x801F0E6C; // type:object size:0x4 +HuPadTrigR = .sbss:0x801F0E70; // type:object size:0x4 +HuPadTrigL = .sbss:0x801F0E74; // type:object size:0x4 +HuPadSubStkY = .sbss:0x801F0E78; // type:object size:0x4 +HuPadSubStkX = .sbss:0x801F0E7C; // type:object size:0x4 +HuPadStkY = .sbss:0x801F0E80; // type:object size:0x4 +HuPadStkX = .sbss:0x801F0E84; // type:object size:0x4 +HuPadBtnRep = .sbss:0x801F0E88; // type:object size:0x8 +HuPadBtnDown = .sbss:0x801F0E90; // type:object size:0x8 data:2byte +HuPadBtn = .sbss:0x801F0E98; // type:object size:0x8 +beforeDvdStatus = .sbss:0x801F0EA0; // type:object size:0x4 scope:local data:4byte +CallBackStatus = .sbss:0x801F0EA4; // type:object size:0x4 scope:local data:4byte +shortAccessSleep = .sbss:0x801F0EA8; // type:object size:0x4 scope:local data:4byte +DataDirMax = .sbss:0x801F0EAC; // type:object size:0x4 scope:local data:4byte +DirDataSize = .sbss:0x801F0EB0; // type:object size:0x8 data:4byte +DemoStatEnable = .sbss:0x801F0EB8; // type:object size:0x4 scope:local data:4byte +worstVcount = .sbss:0x801F0EBC; // type:object size:0x4 data:4byte +minimumVcountf = .sbss:0x801F0EC0; // type:object size:0x4 data:float +minimumVcount = .sbss:0x801F0EC4; // type:object size:0x4 data:4byte +DemoCurrentBuffer = .sbss:0x801F0EC8; // type:object size:0x4 data:4byte +DemoFrameBuffer2 = .sbss:0x801F0ECC; // type:object size:0x4 data:4byte +DemoFrameBuffer1 = .sbss:0x801F0ED0; // type:object size:0x4 data:4byte +DefaultFifoObj = .sbss:0x801F0ED4; // type:object size:0x4 scope:local data:4byte +DefaultFifo = .sbss:0x801F0ED8; // type:object size:0x4 scope:local data:4byte +currentHeapHandle = .sbss:0x801F0EDC; // type:object size:0x4 data:4byte +RenderMode = .sbss:0x801F0EE0; // type:object size:0x8 data:4byte +saftyFrameF = .sbss:0x801F0EE8; // type:object size:0x4 data:4byte +strlinecnt = .sbss:0x801F0EEC; // type:object size:0x2 data:2byte +empstrline = .sbss:0x801F0EEE; // type:object size:0x2 data:2byte +fontcolor = .sbss:0x801F0EF0; // type:object size:0x8 data:4byte +procfunc = .sbss:0x801F0EF8; // type:object size:0x4 data:4byte +processcnt = .sbss:0x801F0EFC; // type:object size:0x2 scope:local data:2byte +processcur = .sbss:0x801F0F00; // type:object size:0x4 scope:local data:4byte +processtop = .sbss:0x801F0F04; // type:object size:0x4 scope:local data:4byte +HuSprPauseF = .sbss:0x801F0F08; // type:object size:0x4 scope:local data:4byte +HuSprOrderNo = .sbss:0x801F0F0C; // type:object size:0x2 scope:local data:2byte +HuSprOrderNum = .sbss:0x801F0F0E; // type:object size:0x2 scope:local data:2byte +bmpCCIdx = .sbss:0x801F0F10; // type:object size:0x8 scope:local data:2byte +MaterialTop = .sbss:0x801F0F18; // type:object size:0x4 data:4byte +AttributeTop = .sbss:0x801F0F1C; // type:object size:0x4 data:4byte +ClusterTop = .sbss:0x801F0F20; // type:object size:0x4 data:4byte +vtxtop = .sbss:0x801F0F24; // type:object size:0x4 data:4byte +objtop = .sbss:0x801F0F28; // type:object size:0x4 data:4byte +NSymIndex = .sbss:0x801F0F2C; // type:object size:0x4 data:4byte +DicStringTable = .sbss:0x801F0F30; // type:object size:0x4 data:4byte +StringTable = .sbss:0x801F0F34; // type:object size:0x4 data:4byte +fileptr = .sbss:0x801F0F38; // type:object size:0x4 data:4byte +NormalDataTop = .sbss:0x801F0F3C; // type:object size:0x4 scope:local data:4byte +VertexDataTop = .sbss:0x801F0F40; // type:object size:0x4 scope:local data:4byte +MotionModel = .sbss:0x801F0F44; // type:object size:0x4 scope:local data:4byte +MotionOnly = .sbss:0x801F0F48; // type:object size:0x8 scope:local data:4byte +CancelTRXF = .sbss:0x801F0F50; // type:object size:0x4 scope:local data:4byte +TL32F = .sbss:0x801F0F54; // type:object size:0x4 scope:local data:4byte +PGName = .sbss:0x801F0F58; // type:object size:0x4 scope:local data:4byte +PGFinishF = .sbss:0x801F0F5C; // type:object size:0x4 scope:local data:4byte +polySize = .sbss:0x801F0F60; // type:object size:0x2 scope:local data:2byte +curModelID = .sbss:0x801F0F64; // type:object size:0x4 scope:local data:4byte +mallocNo = .sbss:0x801F0F68; // type:object size:0x4 scope:local data:4byte +totalSize = .sbss:0x801F0F6C; // type:object size:0x4 scope:local data:4byte +DLTotalNum = .sbss:0x801F0F70; // type:object size:0x4 scope:local data:4byte +faceNumBuf = .sbss:0x801F0F74; // type:object size:0x4 scope:local data:4byte +faceCnt = .sbss:0x801F0F78; // type:object size:0x2 scope:local data:2byte +quadCnt = .sbss:0x801F0F7A; // type:object size:0x2 scope:local data:2byte +triCnt = .sbss:0x801F0F7C; // type:object size:0x2 scope:local data:2byte +matChgCnt = .sbss:0x801F0F7E; // type:object size:0x2 scope:local data:2byte +DLFirstF = .sbss:0x801F0F80; // type:object size:0x4 scope:local data:4byte +modelObjNum = .sbss:0x801F0F84; // type:object size:0x2 data:2byte +modelMeshNum = .sbss:0x801F0F86; // type:object size:0x2 data:2byte +totalTexCacheCnted = .sbss:0x801F0F88; // type:object size:0x4 data:4byte +totalTexCacheCnt = .sbss:0x801F0F8C; // type:object size:0x4 data:4byte +totalTexCnted = .sbss:0x801F0F90; // type:object size:0x4 data:4byte +totalTexCnt = .sbss:0x801F0F94; // type:object size:0x4 data:4byte +totalMatCnted = .sbss:0x801F0F98; // type:object size:0x4 data:4byte +totalMatCnt = .sbss:0x801F0F9C; // type:object size:0x4 data:4byte +totalPolyCnted = .sbss:0x801F0FA0; // type:object size:0x4 data:4byte +totalPolyCnt = .sbss:0x801F0FA4; // type:object size:0x4 data:4byte +hookIdx = .sbss:0x801F0FA8; // type:object size:0x2 scope:local data:2byte +kColorIdx = .sbss:0x801F0FAC; // type:object size:0x4 scope:local data:4byte +kColor = .sbss:0x801F0FB0; // type:object size:0x4 scope:local data:byte +projectionMapNo = .sbss:0x801F0FB4; // type:object size:0x2 data:2byte +toonMapNo = .sbss:0x801F0FB6; // type:object size:0x2 scope:local data:2byte +shadowMapNo = .sbss:0x801F0FB8; // type:object size:0x2 scope:local data:2byte +attachMotionF = .sbss:0x801F0FBC; // type:object size:0x4 scope:local data:4byte +vtxModeBak = .sbss:0x801F0FC0; // type:object size:0x2 scope:local data:2byte +hiliteMapNo = .sbss:0x801F0FC2; // type:object size:0x2 scope:local data:2byte +reflectionMapNo = .sbss:0x801F0FC4; // type:object size:0x2 scope:local data:2byte +Hu3DObjInfoP = .sbss:0x801F0FC8; // type:object size:0x4 scope:local data:4byte +DrawObjIdx = .sbss:0x801F0FCC; // type:object size:0x2 scope:local data:2byte +lightBit = .sbss:0x801F0FCE; // type:object size:0x2 scope:local data:2byte +drawCnt = .sbss:0x801F0FD0; // type:object size:0x4 scope:local data:4byte +DrawData = .sbss:0x801F0FD4; // type:object size:0x4 scope:local data:4byte +DLBufStartP = .sbss:0x801F0FD8; // type:object size:0x4 scope:local data:4byte +DLBufP = .sbss:0x801F0FDC; // type:object size:0x4 scope:local data:4byte +shadingBak = .sbss:0x801F0FE0; // type:object size:0x4 scope:local data:4byte +polyTypeBak = .sbss:0x801F0FE4; // type:object size:0x1 scope:local data:byte +materialBak = .sbss:0x801F0FE8; // type:object size:0x4 scope:local data:4byte +MTXIdx = .sbss:0x801F0FEC; // type:object size:0x2 data:2byte +modelKillAllF = .sbss:0x801F0FF0; // type:object size:0x4 data:4byte +NoSyncF = .sbss:0x801F0FF4; // type:object size:0x2 scope:local data:2byte +Hu3DCameraExistF = .sbss:0x801F0FF6; // type:object size:0x2 data:2byte +Hu3DPauseF = .sbss:0x801F0FF8; // type:object size:0x2 data:2byte +Hu3DMallocNo = .sbss:0x801F0FFC; // type:object size:0x4 data:4byte +Hu3DCameraBit = .sbss:0x801F1000; // type:object size:0x2 data:2byte +Hu3DCameraNo = .sbss:0x801F1002; // type:object size:0x2 data:2byte +Hu3DProjectionNum = .sbss:0x801F1004; // type:object size:0x2 data:2byte +shadowModelDrawF = .sbss:0x801F1008; // type:object size:0x4 data:4byte +Hu3DShadowF = .sbss:0x801F100C; // type:object size:0x4 data:4byte +Hu3DShadowCamBit = .sbss:0x801F1010; // type:object size:0x2 data:2byte +toonAnim = .sbss:0x801F1014; // type:object size:0x4 data:4byte +reflectMapNo = .sbss:0x801F1018; // type:object size:0x2 data:2byte +BGColor = .sbss:0x801F101A; // type:object size:0x4 data:byte +bitMapPtr = .sbss:0x801F1020; // type:object size:0x4 scope:local data:4byte +metf = .sbss:0x801F1028; // type:object size:0x1 scope:local data:byte +tokenEndF = .sbss:0x801F102A; // type:object size:0x2 scope:local data:2byte +total_copy_clks = .sbss:0x801F102C; // type:object size:0x4 scope:local data:4byte +clr_pixels_in = .sbss:0x801F1030; // type:object size:0x4 scope:local +bot_pixels_out = .sbss:0x801F1034; // type:object size:0x4 scope:local +bot_pixels_in = .sbss:0x801F1038; // type:object size:0x4 scope:local +top_pixels_out = .sbss:0x801F103C; // type:object size:0x4 scope:local +top_pixels_in = .sbss:0x801F1040; // type:object size:0x4 scope:local +fi_req = .sbss:0x801F1044; // type:object size:0x4 scope:local +rf_req = .sbss:0x801F1048; // type:object size:0x4 scope:local +pe_req = .sbss:0x801F104C; // type:object size:0x4 scope:local +vi_req = .sbss:0x801F1050; // type:object size:0x4 scope:local +io_req = .sbss:0x801F1054; // type:object size:0x4 scope:local +dsp_req = .sbss:0x801F1058; // type:object size:0x4 scope:local +cpu_wr_req = .sbss:0x801F105C; // type:object size:0x4 scope:local +cpu_rd_req = .sbss:0x801F1060; // type:object size:0x4 scope:local +tc_req = .sbss:0x801F1064; // type:object size:0x4 scope:local +cp_req = .sbss:0x801F1068; // type:object size:0x4 scope:local +vstall = .sbss:0x801F106C; // type:object size:0x4 scope:local +vmiss = .sbss:0x801F1070; // type:object size:0x4 scope:local +vcheck = .sbss:0x801F1074; // type:object size:0x4 scope:local +met1 = .sbss:0x801F1078; // type:object size:0x4 scope:local +met0 = .sbss:0x801F107C; // type:object size:0x4 scope:local +omdispinfo = .sbss:0x801F1080; // type:object size:0x2 data:2byte +omSysExitReq = .sbss:0x801F1082; // type:object size:0x2 data:2byte +omUPauseFlag = .sbss:0x801F1084; // type:object size:0x1 data:byte +omnextovlstat = .sbss:0x801F1088; // type:object size:0x4 scope:local data:4byte +omovlstat = .sbss:0x801F108C; // type:object size:0x4 data:4byte +omnextovlevtno = .sbss:0x801F1090; // type:object size:0x4 scope:local data:4byte +omovlevtno = .sbss:0x801F1094; // type:object size:0x4 data:4byte +omovlhisidx = .sbss:0x801F1098; // type:object size:0x4 data:4byte +omcurdll = .sbss:0x801F109C; // type:object size:0x4 data:4byte +omcurovl = .sbss:0x801F10A0; // type:object size:0x4 data:4byte +omnextovl = .sbss:0x801F10A4; // type:object size:0x4 scope:local data:4byte +omwatchproc = .sbss:0x801F10A8; // type:object size:0x4 scope:local data:4byte +omDBGSysKeyObj = .sbss:0x801F10AC; // type:object size:0x4 data:4byte +y_start = .sbss:0x801F10B0; // type:object size:0x4 scope:local data:4byte +x_start = .sbss:0x801F10B4; // type:object size:0x4 scope:local data:4byte +Draw_Color = .sbss:0x801F10B8; // type:object size:0x3 scope:local data:byte +XFB_putc = .sbss:0x801F10BC; // type:object size:0x4 scope:local data:4byte +omDBGMenuButton = .sbss:0x801F10C0; // type:object size:0x2 +CZoom = .sbss:0x801F10C4; // type:object size:0x4 data:float +omDLLFileList = .sbss:0x801F10C8; // type:object size:0x8 scope:local data:4byte +frand_seed = .sbss:0x801F10D0; // type:object size:0x8 scope:local data:4byte +fadeStat = .sbss:0x801F10D8; // type:object size:0x1 data:byte +musicOffF = .sbss:0x801F10DC; // type:object size:0x4 data:4byte +Snd3DDistOffset = .sbss:0x801F10E0; // type:object size:0x4 data:float +Snd3DSpeedOffset = .sbss:0x801F10E4; // type:object size:0x4 data:float +Snd3DStartDisOffset = .sbss:0x801F10E8; // type:object size:0x4 data:float +Snd3DFrontSurDisOffset = .sbss:0x801F10EC; // type:object size:0x4 data:float +Snd3DBackSurDisOffset = .sbss:0x801F10F0; // type:object size:0x4 data:float +HuAuxBVol = .sbss:0x801F10F4; // type:object size:0x1 scope:local data:byte +HuAuxAVol = .sbss:0x801F10F5; // type:object size:0x1 scope:local data:byte +auxBNoBak = .sbss:0x801F10F8; // type:object size:0x4 scope:local data:4byte +auxANoBak = .sbss:0x801F10FC; // type:object size:0x4 scope:local data:4byte +sndGroupBak = .sbss:0x801F1100; // type:object size:0x2 scope:local data:2byte +Hu3DAudVol = .sbss:0x801F1102; // type:object size:0x2 scope:local data:2byte +Meshno = .sbss:0x801F1108; // type:object size:0x4 scope:local data:4byte +Meshcnt = .sbss:0x801F110C; // type:object size:0x4 scope:local data:4byte +normtop = .sbss:0x801F1110; // type:object size:0x4 scope:local data:4byte +normenv = .sbss:0x801F1114; // type:object size:0x4 scope:local data:4byte +vtxenv = .sbss:0x801F1118; // type:object size:0x4 scope:local data:4byte +CurHsf = .sbss:0x801F111C; // type:object size:0x4 scope:local data:4byte +objtop = .sbss:0x801F1120; // type:object size:0x4 scope:local data:4byte +nMesh = .sbss:0x801F1124; // type:object size:0x4 scope:local data:4byte +nObj = .sbss:0x801F1128; // type:object size:0x4 scope:local data:4byte +MtxTop = .sbss:0x801F112C; // type:object size:0x4 scope:local data:4byte +Vertextop = .sbss:0x801F1130; // type:object size:0x4 data:4byte +seqLanguage = .sbss:0x801F1138; // type:object size:0x4 scope:local data:4byte +pauseProcess = .sbss:0x801F113C; // type:object size:0x4 scope:local data:4byte +pauseActiveF = .sbss:0x801F1140; // type:object size:0x4 scope:local data:4byte +pauseExitF = .sbss:0x801F1144; // type:object size:0x4 scope:local data:4byte +pauseWaitF = .sbss:0x801F1148; // type:object size:0x4 scope:local data:4byte +seqRecordVal = .sbss:0x801F114C; // type:object size:0x4 scope:local data:4byte +seqPauseF = .sbss:0x801F1150; // type:object size:0x2 scope:local data:2byte +seqSpeed = .sbss:0x801F1152; // type:object size:0x2 scope:local data:2byte +lbl_801F1154 = .sbss:0x801F1154; // type:object size:0x1 data:byte +seqDoneF = .sbss:0x801F1155; // type:object size:0x1 scope:local data:byte +seqTimer = .sbss:0x801F1156; // type:object size:0x2 scope:local data:2byte +gid = .sbss:0x801F1158; // type:object size:0x2 scope:local data:2byte +lbl_801D3DA0 = .sbss:0x801F1160; // type:object size:0x8 +wipeFadeInF = .sbss:0x801F1168; // type:object size:0x8 data:4byte +fontAnim = .sbss:0x801F1170; // type:object size:0x4 data:4byte +LanguageNo = .sbss:0x801F1174; // type:object size:0x1 scope:local data:byte +comKeyIdx = .sbss:0x801F1176; // type:object size:0x2 scope:local data:2byte +comKeyIdxNow = .sbss:0x801F1178; // type:object size:0x2 scope:local data:2byte +mesCharCnt = .sbss:0x801F117A; // type:object size:0x2 scope:local data:2byte +cancelCRF = .sbss:0x801F117C; // type:object size:0x4 scope:local data:4byte +fontWidthP = .sbss:0x801F1180; // type:object size:0x4 scope:local data:4byte +winAMemP = .sbss:0x801F1184; // type:object size:0x4 scope:local data:4byte +winInsertF = .sbss:0x801F1188; // type:object size:0x1 scope:local data:byte +winTabSize = .sbss:0x801F1189; // type:object size:0x1 scope:local data:byte +winMaxHeight = .sbss:0x801F118A; // type:object size:0x2 scope:local data:2byte +winMaxWidth = .sbss:0x801F118C; // type:object size:0x2 scope:local data:2byte +messDataNo = .sbss:0x801F1190; // type:object size:0x4 scope:local data:4byte +messDataPtr = .sbss:0x801F1194; // type:object size:0x4 data:4byte +winProc = .sbss:0x801F1198; // type:object size:0x4 scope:local data:4byte +cardAnimB = .sbss:0x801F119C; // type:object size:0x4 scope:local data:4byte +cardAnimA = .sbss:0x801F11A0; // type:object size:0x4 scope:local data:4byte +cursorAnim = .sbss:0x801F11A4; // type:object size:0x4 scope:local data:4byte +iconAnim = .sbss:0x801F11A8; // type:object size:0x8 scope:local data:4byte +UnMountCnt = .sbss:0x801F11B0; // type:object size:0x1 data:byte +cardWork = .sbss:0x801F11B4; // type:object size:0x4 scope:local data:4byte +arqIdx = .sbss:0x801F11B8; // type:object size:0x2 scope:local data:2byte +arqCnt = .sbss:0x801F11BC; // type:object size:0x4 scope:local data:4byte +ARBase = .sbss:0x801F11C0; // type:object size:0x8 scope:local data:4byte +effectAMemP = .sbss:0x801F11C8; // type:object size:0x4 scope:local data:4byte +skipAnimUpdate = .sbss:0x801F11CC; // type:object size:0x4 scope:local data:4byte +CollisionCount = .sbss:0x801F11D0; // type:object size:0x4 data:4byte +topvtx = .sbss:0x801F11D4; // type:object size:0x4 scope:local data:4byte +AttrHsf = .sbss:0x801F11D8; // type:object size:0x4 scope:local data:4byte +HitFaceCount = .sbss:0x801F11DC; // type:object size:0x4 data:4byte +nChar = .sbss:0x801F11E0; // type:object size:0x4 +nMap = .sbss:0x801F11E4; // type:object size:0x4 data:4byte +AddZ = .sbss:0x801F11E8; // type:object size:0x4 data:float +AddX = .sbss:0x801F11EC; // type:object size:0x4 data:float +Initialized = .sbss:0x801F11F0; // type:object size:0x4 scope:local data:4byte +OldAIDCallback = .sbss:0x801F11F4; // type:object size:0x4 scope:local data:4byte +AudioSystem = .sbss:0x801F11F8; // type:object size:0x4 scope:local data:4byte +bufIdx = .sbss:0x801F11FC; // type:object size:0x4 scope:local data:4byte +CurAudioBuffer = .sbss:0x801F1200; // type:object size:0x4 scope:local data:4byte +LastAudioBuffer = .sbss:0x801F1204; // type:object size:0x4 scope:local data:4byte +SoundBufferIndex = .sbss:0x801F1208; // type:object size:0x4 scope:local data:4byte +THPProc = .sbss:0x801F1210; // type:object size:0x4 data:4byte +THPStart = .sbss:0x801F1214; // type:object size:0x2 scope:local data:2byte +THPFrame = .sbss:0x801F1218; // type:object size:0x4 scope:local data:4byte +THPStat = .sbss:0x801F121C; // type:object size:0x2 scope:local data:2byte +THPLoopF = .sbss:0x801F121E; // type:object size:0x2 scope:local data:2byte +decodeThread = .sbss:0x801F1220; // type:object size:0x4 scope:local data:4byte +decodeStackP = .sbss:0x801F1224; // type:object size:0x4 scope:local data:4byte +decodeRate = .sbss:0x801F1228; // type:object size:0x4 scope:local data:4byte +audioTrack = .sbss:0x801F122C; // type:object size:0x8 scope:local data:4byte +mgBoardHostEnableF = .sbss:0x801F1238; // type:object size:0x4 +mgInstExitEnableF = .sbss:0x801F123C; // type:object size:0x4 +mgPracticeEnableF = .sbss:0x801F1240; // type:object size:0x4 data:4byte +mgQuitExtraF = .sbss:0x801F1244; // type:object size:0x4 data:4byte +mgRecordExtra = .sbss:0x801F1248; // type:object size:0x4 +lbl_801D3E94 = .sbss:0x801F124C; // type:object size:0x2 +mgBattleStarMax = .sbss:0x801F124E; // type:object size:0x2 +mgBattleStar = .sbss:0x801F1250; // type:object size:0x8 +mgTypeCurr = .sbss:0x801F1258; // type:object size:0x2 +curSlotNo = .sbss:0x801F1260; // type:object size:0x2 data:2byte +curBoxNo = .sbss:0x801F1262; // type:object size:0x1 data:byte +saveExecF = .sbss:0x801F1264; // type:object size:0x4 +SLSerialNo = .sbss:0x801F1268; // type:object size:0x8 data:4byte +H_ResetReady = .sbss:0x801F1270; // type:object size:0x4 scope:local data:4byte +SR_RestartChk = .sbss:0x801F1274; // type:object size:0x4 scope:local data:4byte +SR_ExecReset = .sbss:0x801F1278; // type:object size:0x4 data:4byte +trychkBusyWait = .sbss:0x801F127C; // type:object size:0x4 scope:local data:4byte +XfbProg = .sbss:0x801F1280; // type:object size:0x4 scope:local data:4byte +XfbH = .sbss:0x801F1284; // type:object size:0x2 scope:local data:2byte +XfbW = .sbss:0x801F1286; // type:object size:0x2 scope:local data:2byte +boardMainProc = .sbss:0x801F1288; // type:object size:0x4 data:4byte +boardObjMan = .sbss:0x801F128C; // type:object size:0x4 data:4byte +cameraObj = .sbss:0x801F1290; // type:object size:0x4 scope:local data:4byte +tauntObj = .sbss:0x801F1294; // type:object size:0x4 scope:local data:4byte +cameraUseBackup = .sbss:0x801F1298; // type:object size:0x4 scope:local data:4byte +createFunc = .sbss:0x801F129C; // type:object size:0x4 scope:local data:4byte +destroyFunc = .sbss:0x801F12A0; // type:object size:0x4 scope:local data:4byte +boardLightSetHook = .sbss:0x801F12A4; // type:object size:0x4 data:4byte +boardLightResetHook = .sbss:0x801F12A8; // type:object size:0x4 data:4byte +boardTurnFunc = .sbss:0x801F12AC; // type:object size:0x4 data:4byte +boardStarGiveHook = .sbss:0x801F12B0; // type:object size:0x4 data:4byte +boardStarShowNextHook = .sbss:0x801F12B4; // type:object size:0x4 data:4byte +boardBowserHook = .sbss:0x801F12B8; // type:object size:0x4 data:4byte +boardTurnStartFunc = .sbss:0x801F12BC; // type:object size:0x4 data:4byte +filterObj = .sbss:0x801F12C0; // type:object size:0x4 scope:local data:4byte +confettiObj = .sbss:0x801F12C4; // type:object size:0x4 scope:local data:4byte +last5GfxObj = .sbss:0x801F12C8; // type:object size:0x4 scope:local data:4byte +boardRandSeed = .sbss:0x801F12CC; // type:object size:0x4 data:4byte +boardMainObj = .sbss:0x801F12D0; // type:object size:0x8 data:4byte +megaDoubleDiceF = .sbss:0x801F12D8; // type:object size:0x4 scope:local data:4byte +bowserSuitObj = .sbss:0x801F12DC; // type:object size:0x4 scope:local data:4byte +junctionMask = .sbss:0x801F12E0; // type:object size:0x4 scope:local data:4byte +junctionObj = .sbss:0x801F12E4; // type:object size:0x4 scope:local data:4byte +rollObj = .sbss:0x801F12E8; // type:object size:0x4 scope:local data:4byte +moveAwayObj = .sbss:0x801F12EC; // type:object size:0x4 scope:local data:4byte +junctionArrowRot = .sbss:0x801F12F0; // type:object size:0x8 scope:local +moveAwayPlayer = .sbss:0x801F12F8; // type:object size:0x4 scope:local data:byte +itemPrev = .sbss:0x801F12FC; // type:object size:0x1 scope:local data:byte +playerMot = .sbss:0x801F12FE; // type:object size:0x8 scope:local +boardPlayerMdl = .sbss:0x801F1306; // type:object size:0x8 +modelDataList = .sbss:0x801F1310; // type:object size:0x4 scope:local data:4byte +modelMgrObj = .sbss:0x801F1314; // type:object size:0x4 scope:local data:4byte +modelDataNum = .sbss:0x801F1318; // type:object size:0x2 scope:local data:2byte +winProc = .sbss:0x801F1320; // type:object size:0x4 scope:local data:4byte +comKeyFunc = .sbss:0x801F1324; // type:object size:0x4 scope:local data:4byte +lbl_801D3F70 = .sbss:0x801F1328; // type:object size:0x8 scope:local data:float +winAttr = .sbss:0x801F1330; // type:object size:0x4 scope:local data:4byte +winMess = .sbss:0x801F1334; // type:object size:0x4 scope:local data:4byte +defaultChoice = .sbss:0x801F1338; // type:object size:0x2 scope:local data:2byte +messSpeed = .sbss:0x801F133A; // type:object size:0x2 scope:local data:2byte +winPrio = .sbss:0x801F133C; // type:object size:0x2 scope:local data:2byte +winWait = .sbss:0x801F133E; // type:object size:0x1 scope:local data:byte +winPause = .sbss:0x801F133F; // type:object size:0x1 scope:local data:byte +disablePlayer = .sbss:0x801F1340; // type:object size:0x1 scope:local data:byte +winPosIdx = .sbss:0x801F1341; // type:object size:0x1 scope:local data:byte +winPortrait = .sbss:0x801F1342; // type:object size:0x1 scope:local data:byte +autoPickF = .sbss:0x801F1343; // type:object size:0x1 scope:local data:byte +winChoice = .sbss:0x801F1344; // type:object size:0x1 scope:local data:byte +boardSeq = .sbss:0x801F1348; // type:object size:0x8 scope:local +viewProc = .sbss:0x801F1350; // type:object size:0x4 scope:local data:4byte +pauseDisableF = .sbss:0x801F1354; // type:object size:0x1 scope:local data:byte +overheadObj = .sbss:0x801F1358; // type:object size:0x4 scope:local data:4byte +focusTimer = .sbss:0x801F135C; // type:object size:0x2 scope:local data:2byte +focusDestroyF = .sbss:0x801F135E; // type:object size:0x1 scope:local data:byte +viewMoveF = .sbss:0x801F135F; // type:object size:0x1 scope:local data:byte +viewPlayer = .sbss:0x801F1360; // type:object size:0x1 scope:local data:byte +viewControls = .sbss:0x801F1361; // type:object size:0x1 scope:local data:byte +spaceDrawF = .sbss:0x801F1368; // type:object size:0x2 scope:local data:2byte +spaceDrawCnt = .sbss:0x801F136C; // type:object size:0x4 scope:local data:4byte +walkEventFunc = .sbss:0x801F1370; // type:object size:0x4 scope:local data:4byte +walkMiniEventFunc = .sbss:0x801F1374; // type:object size:0x4 scope:local data:4byte +landEventFunc = .sbss:0x801F1378; // type:object size:0x4 scope:local data:4byte +lbl_801D3FC4 = .sbss:0x801F137C; // type:object size:0x8 data:2byte +spaceHiliteTexFmt = .sbss:0x801F1384; // type:object size:0x4 scope:local data:4byte +spaceTexFmt = .sbss:0x801F1388; // type:object size:0x4 scope:local data:4byte +spaceHiliteTexData = .sbss:0x801F138C; // type:object size:0x4 scope:local data:4byte +spaceTexData = .sbss:0x801F1390; // type:object size:0x4 scope:local data:4byte +spaceAttr = .sbss:0x801F1394; // type:object size:0x8 scope:local data:4byte +spaceCnt = .sbss:0x801F139C; // type:object size:0x4 scope:local data:2byte +shopProc = .sbss:0x801F13A0; // type:object size:0x4 scope:local data:4byte +shopWinObj = .sbss:0x801F13A4; // type:object size:0x4 scope:local data:4byte +itemGiveObj = .sbss:0x801F13A8; // type:object size:0x4 scope:local data:4byte +itemChoiceObj = .sbss:0x801F13AC; // type:object size:0x4 scope:local data:4byte +comF = .sbss:0x801F13B0; // type:object size:0x4 scope:local data:4byte +angleVal = .sbss:0x801F13B4; // type:object size:0x2 scope:local data:2byte +shopPlayer = .sbss:0x801F13B6; // type:object size:0x1 scope:local data:byte +shopMdlPtr = .sbss:0x801F13B8; // type:object size:0x4 scope:local data:4byte +shopMdlIdx = .sbss:0x801F13BC; // type:object size:0x4 scope:local +lotteryProc = .sbss:0x801F13C0; // type:object size:0x4 scope:local data:4byte +comInputDrawP = .sbss:0x801F13C4; // type:object size:0x4 scope:local data:4byte +lotteryTicketPickObj = .sbss:0x801F13C8; // type:object size:0x4 scope:local data:4byte +handUpdateF = .sbss:0x801F13CC; // type:object size:0x4 scope:local data:4byte +comInputPos = .sbss:0x801F13D0; // type:object size:0x1 scope:local data:byte +comLotteryWinType = .sbss:0x801F13D1; // type:object size:0x1 scope:local data:byte +comLotteryType = .sbss:0x801F13D2; // type:object size:0x1 scope:local data:byte +lbl_801D401B = .sbss:0x801F13D3; // type:object size:0x1 scope:local data:byte +currPrize = .sbss:0x801F13D4; // type:object size:0x1 scope:local data:byte +lotterySpace = .sbss:0x801F13D6; // type:object size:0x2 scope:local data:2byte +lotteryMessBase = .sbss:0x801F13D8; // type:object size:0x4 scope:local data:4byte +warpProcess = .sbss:0x801F13E0; // type:object size:0x4 scope:local data:4byte +warpYVel = .sbss:0x801F13E4; // type:object size:0x4 scope:local data:float +warpYFloor = .sbss:0x801F13E8; // type:object size:0x4 scope:local data:float +warpSpace = .sbss:0x801F13EC; // type:object size:0x2 scope:local data:2byte +warpImpactCnt = .sbss:0x801F13EE; // type:object size:0x1 scope:local data:byte +warpTarget = .sbss:0x801F13EF; // type:object size:0x1 scope:local data:byte +warpState = .sbss:0x801F13F0; // type:object size:0x1 scope:local data:byte +charWheelObj = .sbss:0x801F13F8; // type:object size:0x4 scope:local data:4byte +targetF = .sbss:0x801F13FC; // type:object size:0x2 scope:local data:2byte +angleOfs = .sbss:0x801F1400; // type:object size:0x4 scope:local data:float +targetVal = .sbss:0x801F1404; // type:object size:0x2 scope:local data:2byte +wheelSpeed = .sbss:0x801F1408; // type:object size:0x4 scope:local data:float +wheelTimer = .sbss:0x801F140C; // type:object size:0x2 scope:local data:2byte +comDelay = .sbss:0x801F140E; // type:object size:0x2 scope:local data:2byte +wheelChars = .sbss:0x801F1410; // type:object size:0x4 scope:local data:byte +mushroomProc = .sbss:0x801F1418; // type:object size:0x4 scope:local data:4byte +itemGiveObj = .sbss:0x801F141C; // type:object size:0x4 scope:local data:4byte +pickerChoice = .sbss:0x801F1420; // type:object size:0x1 scope:local data:byte +itemResult = .sbss:0x801F1421; // type:object size:0x1 scope:local data:byte +starProc = .sbss:0x801F1428; // type:object size:0x4 scope:local data:4byte +giveStarObj = .sbss:0x801F142C; // type:object size:0x4 scope:local data:4byte +starEffAnim = .sbss:0x801F1430; // type:object size:0x4 scope:local data:4byte +starDoneF = .sbss:0x801F1434; // type:object size:0x2 scope:local data:2byte +showNextObj = .sbss:0x801F1438; // type:object size:0x4 scope:local data:4byte +hostMot = .sbss:0x801F143C; // type:object size:0x4 scope:local data:2byte +rollProc = .sbss:0x801F1440; // type:object size:0x4 scope:local data:4byte +tutorialRollF = .sbss:0x801F1444; // type:object size:0x1 scope:local data:byte +sameRollCoinStr = .sbss:0x801F1445; // type:object size:0x8 scope:local +lbl_801D4098 = .sbss:0x801F1450; // type:object size:0x4 data:4byte +diceSize = .sbss:0x801F1454; // type:object size:0x1 scope:local data:byte +destMode = .sbss:0x801F1455; // type:object size:0x1 scope:local data:byte +maxRoll = .sbss:0x801F1456; // type:object size:0x1 scope:local data:byte +inputTimer = .sbss:0x801F1457; // type:object size:0x1 scope:local data:byte +numDice = .sbss:0x801F1458; // type:object size:0x1 scope:local data:byte +rollPlayer = .sbss:0x801F1459; // type:object size:0x1 scope:local data:byte +diceValue = .sbss:0x801F145A; // type:object size:0x3 scope:local data:byte +statusProc = .sbss:0x801F1460; // type:object size:0x4 scope:local data:4byte +itemWindowObj = .sbss:0x801F1464; // type:object size:0x4 scope:local data:4byte +pickerObj = .sbss:0x801F1468; // type:object size:0x4 scope:local data:4byte +yourTurnObj = .sbss:0x801F146C; // type:object size:0x4 scope:local data:4byte +itemUseProc = .sbss:0x801F1470; // type:object size:0x4 scope:local data:4byte +itemPickObj = .sbss:0x801F1474; // type:object size:0x4 scope:local data:4byte +itemPickupPos = .sbss:0x801F1478; // type:object size:0x4 scope:local data:float +itemRandTbl = .sbss:0x801F147C; // type:object size:0x6 scope:local +teamItemPlayer = .sbss:0x801F1482; // type:object size:0x1 scope:local data:byte +itemUsed = .sbss:0x801F1483; // type:object size:0x1 scope:local data:byte +itemPlayer = .sbss:0x801F1484; // type:object size:0x1 scope:local data:byte +yourTurnSpr = .sbss:0x801F1486; // type:object size:0x2 scope:local data:2byte +lbl_801D40D0 = .sbss:0x801F1488; // type:object size:0x4 data:2byte +pickerBackF = .sbss:0x801F148C; // type:object size:0x4 scope:local data:4byte +pickerChoiceDefault = .sbss:0x801F1490; // type:object size:0x1 scope:local data:byte +pickerChoice = .sbss:0x801F1491; // type:object size:0x1 scope:local data:byte +boardItemUser = .sbss:0x801F1492; // type:object size:0x1 data:byte +itemTeamF = .sbss:0x801F1493; // type:object size:0x1 scope:local data:byte +itemTeam = .sbss:0x801F1494; // type:object size:0x1 scope:local data:byte +blockProc = .sbss:0x801F1498; // type:object size:0x4 scope:local data:4byte +blockObj = .sbss:0x801F149C; // type:object size:0x4 scope:local data:4byte +rotY = .sbss:0x801F14A0; // type:object size:0x4 scope:local data:float +scaleAngle = .sbss:0x801F14A4; // type:object size:0x4 scope:local data:float +rotMax = .sbss:0x801F14A8; // type:object size:0x4 scope:local data:float +itemProc = .sbss:0x801F14B0; // type:object size:0x4 scope:local data:4byte +geniePlayerMot = .sbss:0x801F14B4; // type:object size:0x6 scope:local data:2byte +genieParticleAnim = .sbss:0x801F14BC; // type:object size:0x4 scope:local data:4byte +genieFov = .sbss:0x801F14C0; // type:object size:0x4 scope:local data:float +booCoinStr = .sbss:0x801F14C4; // type:object size:0x8 scope:local +booBallAlpha = .sbss:0x801F14CC; // type:object size:0x4 scope:local data:float +booBallMdl = .sbss:0x801F14D0; // type:object size:0x2 scope:local data:2byte +suitCommonMot = .sbss:0x801F14D4; // type:object size:0x8 scope:local data:4byte +suitMot = .sbss:0x801F14DC; // type:object size:0x8 scope:local data:4byte +suitMdl = .sbss:0x801F14E4; // type:object size:0x2 scope:local data:2byte +currItem = .sbss:0x801F14E6; // type:object size:0x1 scope:local data:byte +currItemRestore = .sbss:0x801F14E7; // type:object size:0x1 scope:local data:byte +itemBagItems = .sbss:0x801F14E8; // type:object size:0x6 scope:local +bowserProc = .sbss:0x801F14F0; // type:object size:0x4 scope:local data:4byte +bowserObj = .sbss:0x801F14F4; // type:object size:0x4 scope:local data:4byte +miniBowserObj = .sbss:0x801F14F8; // type:object size:0x4 scope:local data:4byte +bowserEventObj = .sbss:0x801F14FC; // type:object size:0x4 scope:local data:4byte +miniBowserBalloonObj = .sbss:0x801F1500; // type:object size:0x4 scope:local data:4byte +suitGiveObj = .sbss:0x801F1504; // type:object size:0x4 scope:local data:4byte +coinStealStr = .sbss:0x801F1508; // type:object size:0x8 scope:local +coinStealStrAll = .sbss:0x801F1510; // type:object size:0x8 scope:local +fireAnim = .sbss:0x801F1518; // type:object size:0x4 scope:local data:4byte +fireParMan = .sbss:0x801F151C; // type:object size:0x2 scope:local data:2byte +playerMot = .sbss:0x801F151E; // type:object size:0x8 scope:local data:2byte +eventSpace = .sbss:0x801F1526; // type:object size:0x2 scope:local data:2byte +eventType = .sbss:0x801F1528; // type:object size:0x1 scope:local data:byte +eventPlayer = .sbss:0x801F1529; // type:object size:0x1 scope:local data:byte +battleProc = .sbss:0x801F1530; // type:object size:0x4 scope:local data:4byte +battleObj = .sbss:0x801F1534; // type:object size:0x4 scope:local data:4byte +explodeObj = .sbss:0x801F1538; // type:object size:0x4 scope:local data:4byte +battleCoinPosF = .sbss:0x801F153C; // type:object size:0x4 scope:local data:float +battleCoinSpeed = .sbss:0x801F1540; // type:object size:0x4 scope:local data:float +totalCoinStr = .sbss:0x801F1544; // type:object size:0x8 scope:local +battleMGIdx = .sbss:0x801F154C; // type:object size:0x2 scope:local data:byte +battleCoinIdx = .sbss:0x801F154E; // type:object size:0x1 scope:local data:byte +currSpace = .sbss:0x801F1550; // type:object size:0x2 scope:local data:2byte +mgChoice = .sbss:0x801F1552; // type:object size:0x1 scope:local data:byte +coinTakeMax = .sbss:0x801F1553; // type:object size:0x1 scope:local data:byte +currPlayer = .sbss:0x801F1554; // type:object size:0x1 scope:local data:byte +fortuneProc = .sbss:0x801F1558; // type:object size:0x4 scope:local data:4byte +fortunePlatformObj = .sbss:0x801F155C; // type:object size:0x4 scope:local data:4byte +comStar = .sbss:0x801F1560; // type:object size:0x1 scope:local data:byte +comCoin = .sbss:0x801F1561; // type:object size:0x1 scope:local data:byte +comPrize = .sbss:0x801F1562; // type:object size:0x1 scope:local data:byte +comPlayer1 = .sbss:0x801F1563; // type:object size:0x1 scope:local data:byte +comPlayer2 = .sbss:0x801F1564; // type:object size:0x1 scope:local data:byte +currPlayer = .sbss:0x801F1565; // type:object size:0x1 scope:local data:byte +booEventObj = .sbss:0x801F1568; // type:object size:0x4 scope:local data:4byte +ballObj = .sbss:0x801F156C; // type:object size:0x4 scope:local data:4byte +ballCameraObj = .sbss:0x801F1570; // type:object size:0x4 scope:local data:4byte +ballBooObj = .sbss:0x801F1574; // type:object size:0x4 scope:local data:4byte +ballPlayerObj = .sbss:0x801F1578; // type:object size:0x4 scope:local data:4byte +ballTakeCoinObj = .sbss:0x801F157C; // type:object size:0x4 scope:local data:4byte +attackTimer = .sbss:0x801F1580; // type:object size:0x4 scope:local data:4byte +battleTimer = .sbss:0x801F1584; // type:object size:0x4 scope:local data:4byte +starChoiceEnable = .sbss:0x801F1588; // type:object size:0x3 scope:local +stealAvail = .sbss:0x801F158B; // type:object size:0x3 scope:local +punchCount = .sbss:0x801F158E; // type:object size:0x1 scope:local data:byte +stealSuccess = .sbss:0x801F158F; // type:object size:0x1 scope:local data:byte +stealValue = .sbss:0x801F1590; // type:object size:0x1 scope:local data:byte +booKillF = .sbss:0x801F1594; // type:object size:0x4 scope:local data:4byte +stealType = .sbss:0x801F1598; // type:object size:0x1 scope:local data:byte +stealTarget = .sbss:0x801F1599; // type:object size:0x1 scope:local data:byte +lbl_801D41E2 = .sbss:0x801F159A; // type:object size:0x1 data:byte +mgSetupProc = .sbss:0x801F15A0; // type:object size:0x4 scope:local data:4byte +mgSetupObj = .sbss:0x801F15A4; // type:object size:0x4 scope:local data:4byte +hiliteShowF = .sbss:0x801F15A8; // type:object size:0x1 scope:local data:byte +hiliteBlinkLen = .sbss:0x801F15A9; // type:object size:0x1 scope:local data:byte +hiliteTimer = .sbss:0x801F15AA; // type:object size:0x1 scope:local data:byte +mgPlayBattle = .sbss:0x801F15AC; // type:object size:0x4 scope:local +mgPlay2Vs2 = .sbss:0x801F15B0; // type:object size:0x6 scope:local +mgPlay1Vs3 = .sbss:0x801F15B6; // type:object size:0x6 scope:local +mgPlayBattleLen = .sbss:0x801F15BC; // type:object size:0x1 scope:local data:byte +mgPlay2Vs2Len = .sbss:0x801F15BD; // type:object size:0x1 scope:local data:byte +mgPlay1Vs3Len = .sbss:0x801F15BE; // type:object size:0x1 scope:local data:byte +mgPlay4PLen = .sbss:0x801F15BF; // type:object size:0x1 scope:local data:byte +mgNext = .sbss:0x801F15C0; // type:object size:0x2 scope:local data:2byte +hilitePos = .sbss:0x801F15C4; // type:object size:0x4 scope:local data:float +luckyF = .sbss:0x801F15C8; // type:object size:0x4 scope:local data:4byte +mgType = .sbss:0x801F15CC; // type:object size:0x1 scope:local data:byte +houseProc = .sbss:0x801F15D0; // type:object size:0x4 scope:local data:4byte +stealAmountStr = .sbss:0x801F15D4; // type:object size:0x8 scope:local +comCoinStealTarget = .sbss:0x801F15DC; // type:object size:0x4 scope:local data:4byte +comStarStealTarget = .sbss:0x801F15E0; // type:object size:0x1 scope:local data:byte +stealTarget = .sbss:0x801F15E1; // type:object size:0x1 scope:local data:byte +currPlayer = .sbss:0x801F15E2; // type:object size:0x1 scope:local data:byte +startProc = .sbss:0x801F15E8; // type:object size:0x4 scope:local data:4byte +playerOrderOld = .sbss:0x801F15EC; // type:object size:0x4 scope:local +playerOrderNew = .sbss:0x801F15F0; // type:object size:0x4 scope:local +startSpace = .sbss:0x801F15F4; // type:object size:0x2 scope:local data:2byte +hostMdl = .sbss:0x801F15F6; // type:object size:0x2 scope:local data:2byte +lotteryDrawWheelObj = .sbss:0x801F15F8; // type:object size:0x4 scope:local data:4byte +lotteryDrawObj = .sbss:0x801F15FC; // type:object size:0x4 scope:local data:4byte +hostMoveObj = .sbss:0x801F1600; // type:object size:0x4 scope:local data:4byte +teamResultObj = .sbss:0x801F1604; // type:object size:0x4 scope:local data:4byte +last5Proc = .sbss:0x801F1608; // type:object size:0x4 scope:local data:4byte +last5RouletteObj = .sbss:0x801F160C; // type:object size:0x4 scope:local data:4byte +hostMdl = .sbss:0x801F1610; // type:object size:0x2 scope:local data:2byte +last5Space = .sbss:0x801F1612; // type:object size:0x2 scope:local data:2byte +last5Player = .sbss:0x801F1614; // type:object size:0x1 scope:local data:byte +numTickets = .sbss:0x801F1615; // type:object size:0x1 scope:local data:byte +currTicket = .sbss:0x801F1616; // type:object size:0x1 scope:local data:byte +mainProcess = .sbss:0x801F1618; // type:object size:0x4 scope:local data:4byte +quitProcess = .sbss:0x801F161C; // type:object size:0x4 scope:local data:4byte +configObj = .sbss:0x801F1620; // type:object size:0x4 scope:local data:4byte +boxState = .sbss:0x801F1624; // type:object size:0x8 scope:local +cursorPos = .sbss:0x801F162C; // type:object size:0x1 scope:local data:byte +hostMdl = .sbss:0x801F162E; // type:object size:0x2 scope:local data:2byte +hostOldLayer = .sbss:0x801F1630; // type:object size:0x1 scope:local data:byte +mainScreenF = .sbss:0x801F1631; // type:object size:0x1 scope:local data:byte +pauseQuitF = .sbss:0x801F1632; // type:object size:0x1 scope:local data:byte +childNodeCnt = .sbss:0x801F1638; // type:object size:0x2 scope:local data:2byte +numCandidates = .sbss:0x801F163A; // type:object size:0x2 scope:local data:2byte +gameStatCopy = .sbss:0x801F1640; // type:object size:0x4 scope:local data:4byte +systemCopy = .sbss:0x801F1644; // type:object size:0x4 scope:local data:4byte +playerCopy = .sbss:0x801F1648; // type:object size:0x4 scope:local data:4byte +playerCfgCopy = .sbss:0x801F164C; // type:object size:0x4 scope:local data:4byte +tutorialProcess = .sbss:0x801F1650; // type:object size:0x4 scope:local data:4byte +boardTutorialF = .sbss:0x801F1654; // type:object size:0x1 data:byte +hostMdl = .sbss:0x801F1656; // type:object size:0x2 scope:local data:2byte +boardTutorialUseItem = .sbss:0x801F1658; // type:object size:0x1 data:byte +boardTutorialBlockF = .sbss:0x801F1659; // type:object size:0x1 data:byte +boardTutorialBlockItem = .sbss:0x801F165A; // type:object size:0x1 data:byte +boardTutorialBlockPos = .sbss:0x801F165C; // type:object size:0x4 data:4byte +boardTutorialDirInputTime = .sbss:0x801F1660; // type:object size:0x2 data:2byte +boardTutorialDirInputY = .sbss:0x801F1662; // type:object size:0x1 data:byte +boardTutorialDirInputX = .sbss:0x801F1663; // type:object size:0x1 data:byte +tutorialHook = .sbss:0x801F1664; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x801F1668; // type:object size:0x4 scope:local data:4byte +BI2DebugFlag = .sbss:0x801F166C; // type:object size:0x4 scope:local data:4byte +BI2DebugFlagHolder = .sbss:0x801F1670; // type:object size:0x4 scope:local data:4byte +__OSIsGcam = .sbss:0x801F1674; // type:object size:0x4 scope:global data:4byte +AreWeInitialized = .sbss:0x801F1678; // type:object size:0x4 scope:local data:4byte +OSExceptionTable = .sbss:0x801F167C; // type:object size:0x4 scope:local data:4byte +__OSSavedRegionEnd = .sbss:0x801F1680; // type:object size:0x4 scope:global data:4byte +__OSSavedRegionStart = .sbss:0x801F1684; // type:object size:0x4 scope:global data:4byte +__OSInIPL = .sbss:0x801F1688; // type:object size:0x4 scope:global data:4byte +__OSStartTime = .sbss:0x801F1690; // type:object size:0x8 scope:global data:4byte +AlarmQueue = .sbss:0x801F1698; // type:object size:0x8 scope:local data:4byte +lbl_801F16A0 = .sbss:0x801F16A0; // type:object size:0x4 data:4byte +lbl_801F16A4 = .sbss:0x801F16A4; // type:object size:0x4 data:4byte +lbl_801F16A8 = .sbss:0x801F16A8; // type:object size:0x4 data:4byte +lbl_801F16AC = .sbss:0x801F16AC; // type:object size:0x4 data:4byte +__OSArenaHi = .sbss:0x801F16B0; // type:object size:0x4 scope:local data:4byte +InterruptHandlerTable = .sbss:0x801F16B8; // type:object size:0x4 scope:local data:4byte +__OSLastInterruptSrr0 = .sbss:0x801F16BC; // type:object size:0x4 scope:global data:4byte +__OSLastInterrupt = .sbss:0x801F16C0; // type:object size:0x2 scope:global data:2byte +__OSLastInterruptTime = .sbss:0x801F16C8; // type:object size:0x8 scope:global data:4byte +lbl_801F16D0 = .sbss:0x801F16D0; // type:object size:0x4 data:4byte +lbl_801F16D4 = .sbss:0x801F16D4; // type:object size:0x4 data:4byte +lbl_801F16D8 = .sbss:0x801F16D8; // type:object size:0x8 data:4byte +ResetFunctionQueue = .sbss:0x801F16E0; // type:object size:0x8 scope:local data:4byte +lbl_801F16E8 = .sbss:0x801F16E8; // type:object size:0x4 data:4byte +lbl_801F16EC = .sbss:0x801F16EC; // type:object size:0x4 data:4byte +lbl_801F16F0 = .sbss:0x801F16F0; // type:object size:0x8 data:4byte +lbl_801F16F8 = .sbss:0x801F16F8; // type:object size:0x4 data:4byte +lbl_801F16FC = .sbss:0x801F16FC; // type:object size:0x4 data:4byte +lbl_801F1700 = .sbss:0x801F1700; // type:object size:0x4 data:4byte +lbl_801F1704 = .sbss:0x801F1704; // type:object size:0x4 data:4byte +RunQueueBits = .sbss:0x801F1708; // type:object size:0x4 scope:local data:4byte +RunQueueHint = .sbss:0x801F170C; // type:object size:0x4 scope:local data:4byte +Reschedule = .sbss:0x801F1710; // type:object size:0x4 scope:local data:4byte +__DBInterface = .sbss:0x801F1718; // type:object size:0x4 scope:global data:4byte +DBVerbose = .sbss:0x801F171C; // type:object size:0x4 scope:global data:4byte +StopAtNextInt = .sbss:0x801F1720; // type:object size:0x4 scope:local data:4byte +lbl_801F1724 = .sbss:0x801F1724; // type:object size:0x4 data:4byte +Callback = .sbss:0x801F1728; // type:object size:0x4 scope:local data:4byte +lbl_801F172C = .sbss:0x801F172C; // type:object size:0x4 data:4byte +LastResetEnd = .sbss:0x801F1730; // type:object size:0x8 scope:local data:4byte +ResetOccurred = .sbss:0x801F1738; // type:object size:0x4 scope:local data:4byte +WaitingCoverClose = .sbss:0x801F173C; // type:object size:0x4 scope:local data:4byte +lbl_801F1740 = .sbss:0x801F1740; // type:object size:0x4 data:4byte +WorkAroundType = .sbss:0x801F1744; // type:object size:0x4 scope:local data:4byte +WorkAroundSeekLocation = .sbss:0x801F1748; // type:object size:0x4 scope:local data:4byte +lbl_801F1750 = .sbss:0x801F1750; // type:object size:0x4 data:4byte +lbl_801F1754 = .sbss:0x801F1754; // type:object size:0x4 data:4byte +lbl_801F1758 = .sbss:0x801F1758; // type:object size:0x4 data:4byte +lbl_801F175C = .sbss:0x801F175C; // type:object size:0x4 data:4byte +lbl_801F1760 = .sbss:0x801F1760; // type:object size:0x4 data:4byte +NextCommandNumber = .sbss:0x801F1764; // type:object size:0x4 scope:local data:4byte +BootInfo = .sbss:0x801F1768; // type:object size:0x4 scope:local data:4byte +FstStart = .sbss:0x801F176C; // type:object size:0x4 scope:local data:4byte +FstStringStart = .sbss:0x801F1770; // type:object size:0x4 scope:local data:4byte +MaxEntryNum = .sbss:0x801F1774; // type:object size:0x4 scope:local data:4byte +lbl_801F1778 = .sbss:0x801F1778; // type:object size:0x4 data:4byte +__DVDLongFileNameFlag = .sbss:0x801F177C; // type:object size:0x4 scope:global data:4byte +__DVDThreadQueue = .sbss:0x801F1780; // type:object size:0x8 scope:global +executing = .sbss:0x801F1788; // type:object size:0x4 scope:local data:4byte +currID = .sbss:0x801F178C; // type:object size:0x4 scope:local data:4byte +bootInfo = .sbss:0x801F1790; // type:object size:0x4 scope:local data:4byte +PauseFlag = .sbss:0x801F1794; // type:object size:0x4 scope:local data:4byte +PausingFlag = .sbss:0x801F1798; // type:object size:0x4 scope:local data:4byte +lbl_801F179C = .sbss:0x801F179C; // type:object size:0x4 data:4byte +FatalErrorFlag = .sbss:0x801F17A0; // type:object size:0x4 scope:local data:4byte +CurrCommand = .sbss:0x801F17A4; // type:object size:0x4 scope:local data:4byte +lbl_801F17A8 = .sbss:0x801F17A8; // type:object size:0x4 data:4byte +lbl_801F17AC = .sbss:0x801F17AC; // type:object size:0x4 data:4byte +ResumeFromHere = .sbss:0x801F17B0; // type:object size:0x4 scope:local data:4byte +CancelLastError = .sbss:0x801F17B4; // type:object size:0x4 scope:local data:4byte +lbl_801F17B8 = .sbss:0x801F17B8; // type:object size:0x4 data:4byte +lbl_801F17BC = .sbss:0x801F17BC; // type:object size:0x4 data:4byte +ResetRequired = .sbss:0x801F17C0; // type:object size:0x4 scope:local data:4byte +FirstTimeInBootrom = .sbss:0x801F17C4; // type:object size:0x4 scope:local data:4byte +DVDInitialized = .sbss:0x801F17C8; // type:object size:0x4 scope:local data:4byte +lbl_801F17CC = .sbss:0x801F17CC; // type:object size:0x4 data:4byte +lbl_801F17D0 = .sbss:0x801F17D0; // type:object size:0x4 data:4byte +bb2 = .sbss:0x801F17D4; // type:object size:0x4 scope:local data:4byte +idTmp = .sbss:0x801F17D8; // type:object size:0x4 scope:local data:4byte +lbl_801F17E0 = .sbss:0x801F17E0; // type:object size:0x4 data:4byte +lbl_801F17E4 = .sbss:0x801F17E4; // type:object size:0x4 data:4byte +lbl_801F17E8 = .sbss:0x801F17E8; // type:object size:0x8 +lbl_801F17F0 = .sbss:0x801F17F0; // type:object size:0x4 data:4byte +lbl_801F17F4 = .sbss:0x801F17F4; // type:object size:0x4 data:4byte +lbl_801F17F8 = .sbss:0x801F17F8; // type:object size:0x4 data:4byte +lbl_801F17FC = .sbss:0x801F17FC; // type:object size:0x2 data:2byte +lbl_801F17FE = .sbss:0x801F17FE; // type:object size:0x2 data:2byte +lbl_801F1800 = .sbss:0x801F1800; // type:object size:0x8 data:4byte +lbl_801F1808 = .sbss:0x801F1808; // type:object size:0x4 data:4byte +lbl_801F180C = .sbss:0x801F180C; // type:object size:0x4 data:4byte +lbl_801F1810 = .sbss:0x801F1810; // type:object size:0x8 data:4byte +lbl_801F1818 = .sbss:0x801F1818; // type:object size:0x4 data:4byte +lbl_801F181C = .sbss:0x801F181C; // type:object size:0x4 data:4byte +lbl_801F1820 = .sbss:0x801F1820; // type:object size:0x4 data:4byte +CurrTvMode = .sbss:0x801F1824; // type:object size:0x4 scope:local data:4byte +lbl_801F1828 = .sbss:0x801F1828; // type:object size:0x4 data:4byte +lbl_801F182C = .sbss:0x801F182C; // type:object size:0x4 data:4byte +lbl_801F1830 = .sbss:0x801F1830; // type:object size:0x8 data:4byte +lbl_801F1838 = .sbss:0x801F1838; // type:object size:0x8 data:4byte +lbl_801F1840 = .sbss:0x801F1840; // type:object size:0x4 data:4byte +lbl_801F1844 = .sbss:0x801F1844; // type:object size:0x4 data:4byte +lbl_801F1848 = .sbss:0x801F1848; // type:object size:0x4 data:4byte +lbl_801F184C = .sbss:0x801F184C; // type:object size:0x4 data:4byte +lbl_801F1850 = .sbss:0x801F1850; // type:object size:0x4 data:4byte +lbl_801F1854 = .sbss:0x801F1854; // type:object size:0x4 data:4byte +lbl_801F1858 = .sbss:0x801F1858; // type:object size:0x4 data:4byte +lbl_801F185C = .sbss:0x801F185C; // type:object size:0x4 data:4byte +lbl_801F1860 = .sbss:0x801F1860; // type:object size:0x4 data:4byte +lbl_801F1864 = .sbss:0x801F1864; // type:object size:0x4 data:4byte +lbl_801F1868 = .sbss:0x801F1868; // type:object size:0x4 data:4byte +lbl_801F186C = .sbss:0x801F186C; // type:object size:0x4 data:4byte +lbl_801F1870 = .sbss:0x801F1870; // type:object size:0x4 data:4byte +lbl_801F1874 = .sbss:0x801F1874; // type:object size:0x4 data:4byte +lbl_801F1878 = .sbss:0x801F1878; // type:object size:0x4 data:4byte +lbl_801F187C = .sbss:0x801F187C; // type:object size:0x4 data:4byte +lbl_801F1880 = .sbss:0x801F1880; // type:object size:0x4 data:4byte +lbl_801F1884 = .sbss:0x801F1884; // type:object size:0x4 data:4byte +lbl_801F1888 = .sbss:0x801F1888; // type:object size:0x4 data:4byte +lbl_801F188C = .sbss:0x801F188C; // type:object size:0x4 data:4byte +lbl_801F1890 = .sbss:0x801F1890; // type:object size:0x4 data:4byte +lbl_801F1894 = .sbss:0x801F1894; // type:object size:0x4 data:4byte +lbl_801F1898 = .sbss:0x801F1898; // type:object size:0x4 data:4byte +lbl_801F189C = .sbss:0x801F189C; // type:object size:0x4 data:4byte +lbl_801F18A0 = .sbss:0x801F18A0; // type:object size:0x4 data:4byte +lbl_801F18A4 = .sbss:0x801F18A4; // type:object size:0x4 data:4byte +lbl_801F18A8 = .sbss:0x801F18A8; // type:object size:0x4 data:4byte +lbl_801F18AC = .sbss:0x801F18AC; // type:object size:0x4 data:4byte +lbl_801F18B0 = .sbss:0x801F18B0; // type:object size:0x4 data:4byte +lbl_801F18B4 = .sbss:0x801F18B4; // type:object size:0x4 data:4byte +lbl_801F18B8 = .sbss:0x801F18B8; // type:object size:0x4 data:4byte +lbl_801F18BC = .sbss:0x801F18BC; // type:object size:0x4 data:4byte +lbl_801F18C0 = .sbss:0x801F18C0; // type:object size:0x4 data:4byte +__PADSpec = .sbss:0x801F18C4; // type:object size:0x4 scope:global data:4byte +lbl_801F18C8 = .sbss:0x801F18C8; // type:object size:0x4 data:4byte +lbl_801F18CC = .sbss:0x801F18CC; // type:object size:0x4 data:4byte +lbl_801F18D0 = .sbss:0x801F18D0; // type:object size:0x4 data:4byte +lbl_801F18D4 = .sbss:0x801F18D4; // type:object size:0x4 data:4byte +lbl_801F18D8 = .sbss:0x801F18D8; // type:object size:0x8 data:4byte +lbl_801F18E0 = .sbss:0x801F18E0; // type:object size:0x4 data:4byte +lbl_801F18E4 = .sbss:0x801F18E4; // type:object size:0x4 data:4byte +lbl_801F18E8 = .sbss:0x801F18E8; // type:object size:0x4 data:4byte +lbl_801F18EC = .sbss:0x801F18EC; // type:object size:0x4 data:4byte +lbl_801F18F0 = .sbss:0x801F18F0; // type:object size:0x4 data:4byte +lbl_801F18F4 = .sbss:0x801F18F4; // type:object size:0x4 data:4byte +lbl_801F18F8 = .sbss:0x801F18F8; // type:object size:0x4 data:4byte +lbl_801F18FC = .sbss:0x801F18FC; // type:object size:0x4 data:4byte +lbl_801F1900 = .sbss:0x801F1900; // type:object size:0x4 data:4byte +lbl_801F1904 = .sbss:0x801F1904; // type:object size:0x4 data:4byte +lbl_801F1908 = .sbss:0x801F1908; // type:object size:0x4 data:4byte +lbl_801F190C = .sbss:0x801F190C; // type:object size:0x4 data:4byte +lbl_801F1910 = .sbss:0x801F1910; // type:object size:0x4 data:4byte +lbl_801F1914 = .sbss:0x801F1914; // type:object size:0x4 data:4byte +lbl_801F1918 = .sbss:0x801F1918; // type:object size:0x4 data:4byte +lbl_801F191C = .sbss:0x801F191C; // type:object size:0x4 data:4byte +lbl_801F1920 = .sbss:0x801F1920; // type:object size:0x4 data:4byte +lbl_801F1924 = .sbss:0x801F1924; // type:object size:0x4 data:4byte +lbl_801F1928 = .sbss:0x801F1928; // type:object size:0x4 data:4byte +lbl_801F192C = .sbss:0x801F192C; // type:object size:0x4 data:4byte +lbl_801F1930 = .sbss:0x801F1930; // type:object size:0x4 data:4byte +lbl_801F1934 = .sbss:0x801F1934; // type:object size:0x4 data:4byte +lbl_801F1938 = .sbss:0x801F1938; // type:object size:0x4 data:4byte +lbl_801F193C = .sbss:0x801F193C; // type:object size:0x4 data:4byte +lbl_801F1940 = .sbss:0x801F1940; // type:object size:0x4 data:4byte +lbl_801F1944 = .sbss:0x801F1944; // type:object size:0x4 data:4byte +lbl_801F1948 = .sbss:0x801F1948; // type:object size:0x4 data:4byte +lbl_801F194C = .sbss:0x801F194C; // type:object size:0x4 data:4byte +lbl_801F1950 = .sbss:0x801F1950; // type:object size:0x8 data:4byte +lbl_801F1958 = .sbss:0x801F1958; // type:object size:0x4 data:4byte +lbl_801F195C = .sbss:0x801F195C; // type:object size:0x4 data:4byte +lbl_801F1960 = .sbss:0x801F1960; // type:object size:0x4 data:4byte +lbl_801F1964 = .sbss:0x801F1964; // type:object size:0x4 data:4byte +lbl_801F1968 = .sbss:0x801F1968; // type:object size:0x4 data:4byte +lbl_801F196C = .sbss:0x801F196C; // type:object size:0x4 data:4byte +__piReg = .sbss:0x801F1970; // type:object size:0x4 scope:global data:4byte +__cpReg = .sbss:0x801F1974; // type:object size:0x4 scope:global data:4byte +__peReg = .sbss:0x801F1978; // type:object size:0x4 scope:global data:4byte +__memReg = .sbss:0x801F197C; // type:object size:0x4 scope:global data:4byte +lbl_801F1980 = .sbss:0x801F1980; // type:object size:0x4 data:4byte +lbl_801F1984 = .sbss:0x801F1984; // type:object size:0x4 data:4byte +lbl_801F1988 = .sbss:0x801F1988; // type:object size:0x4 data:4byte +lbl_801F198C = .sbss:0x801F198C; // type:object size:0x1 data:byte +lbl_801F1990 = .sbss:0x801F1990; // type:object size:0x4 data:4byte +lbl_801F1994 = .sbss:0x801F1994; // type:object size:0x4 data:4byte +lbl_801F1998 = .sbss:0x801F1998; // type:object size:0x8 data:4byte +lbl_801F19A0 = .sbss:0x801F19A0; // type:object size:0x4 data:4byte +lbl_801F19A4 = .sbss:0x801F19A4; // type:object size:0x4 data:4byte +lbl_801F19A8 = .sbss:0x801F19A8; // type:object size:0x1 data:byte +lbl_801F19AC = .sbss:0x801F19AC; // type:object size:0xC +lbl_801F19B8 = .sbss:0x801F19B8; // type:object size:0x8 data:4byte +lbl_801F19C0 = .sbss:0x801F19C0; // type:object size:0x4 data:4byte +lbl_801F19C4 = .sbss:0x801F19C4; // type:object size:0x4 data:4byte +lbl_801F19C8 = .sbss:0x801F19C8; // type:object size:0x4 data:4byte +lbl_801F19CC = .sbss:0x801F19CC; // type:object size:0x4 data:4byte +lbl_801F19D0 = .sbss:0x801F19D0; // type:object size:0x4 +cmdTypeAndStatus$371 = .sbss:0x801F19D4; // type:object size:0x4 scope:local +lbl_801F19D8 = .sbss:0x801F19D8; // type:object size:0x8 data:4byte +SamplingRate = .sbss:0x801F19E0; // type:object size:0x4 scope:local data:4byte +lbl_801F1A00 = .sbss:0x801F1A00; // type:object size:0x20 data:4byte +lbl_801F1A20 = .sbss:0x801F1A20; // type:object size:0x20 data:4byte +lbl_801F1A40 = .sbss:0x801F1A40; // type:object size:0x20 data:4byte +lbl_801F1A60 = .sbss:0x801F1A60; // type:object size:0x20 data:4byte +lbl_801F1A80 = .sbss:0x801F1A80; // type:object size:0x20 data:4byte +lbl_801F1AA0 = .sbss:0x801F1AA0; // type:object size:0x4 data:4byte +lbl_801F1AA4 = .sbss:0x801F1AA4; // type:object size:0x4 data:4byte +lbl_801F1AA8 = .sbss:0x801F1AA8; // type:object size:0x4 data:4byte +lbl_801F1AAC = .sbss:0x801F1AAC; // type:object size:0x14 data:4byte +lbl_801F1AC0 = .sbss:0x801F1AC0; // type:object size:0x20 data:4byte +lbl_801F1AE0 = .sbss:0x801F1AE0; // type:object size:0x20 data:4byte +lbl_801F1B00 = .sbss:0x801F1B00; // type:object size:0x4 data:4byte +lbl_801F1B04 = .sbss:0x801F1B04; // type:object size:0x4 data:4byte +lbl_801F1B08 = .sbss:0x801F1B08; // type:object size:0x4 data:4byte +lbl_801F1B0C = .sbss:0x801F1B0C; // type:object size:0x4 data:4byte +lbl_801F1B10 = .sbss:0x801F1B10; // type:object size:0x4 data:4byte +lbl_801F1B14 = .sbss:0x801F1B14; // type:object size:0x4 data:4byte +__global_destructor_chain = .sbss:0x801F1B18; // type:object size:0x4 scope:global data:4byte +__aborting = .sbss:0x801F1B20; // type:object size:0x4 scope:global data:4byte +__atexit_curr_func = .sbss:0x801F1B24; // type:object size:0x4 scope:local data:4byte +__stdio_exit = .sbss:0x801F1B28; // type:object size:0x4 scope:global data:4byte +__console_exit = .sbss:0x801F1B2C; // type:object size:0x4 scope:global data:4byte +lbl_801F1B30 = .sbss:0x801F1B30; // type:object size:0x8 data:byte +lbl_801F1B38 = .sbss:0x801F1B38; // type:object size:0x8 data:4byte +lbl_801F1B40 = .sbss:0x801F1B40; // type:object size:0x8 data:4byte +lbl_801F1B48 = .sbss:0x801F1B48; // type:object size:0x4 data:4byte +lbl_801F1B4C = .sbss:0x801F1B4C; // type:object size:0x1 data:byte +lbl_801F1B50 = .sbss:0x801F1B50; // type:object size:0x4 data:4byte +lbl_801F1B54 = .sbss:0x801F1B54; // type:object size:0x4 data:4byte +lbl_801F1B58 = .sbss:0x801F1B58; // type:object size:0x4 data:4byte +lbl_801F1B5C = .sbss:0x801F1B5C; // type:object size:0x4 data:4byte +lbl_801F1B60 = .sbss:0x801F1B60; // type:object size:0x4 data:4byte +lbl_801F1B64 = .sbss:0x801F1B64; // type:object size:0x4 data:4byte +lbl_801F1B68 = .sbss:0x801F1B68; // type:object size:0x1 data:byte +lbl_801F1B69 = .sbss:0x801F1B69; // type:object size:0x1 data:byte +lbl_801F1B6C = .sbss:0x801F1B6C; // type:object size:0x8 data:byte +lbl_801F1B74 = .sbss:0x801F1B74; // type:object size:0x8 data:byte +lbl_801F1B7C = .sbss:0x801F1B7C; // type:object size:0x8 data:byte +lbl_801F1B84 = .sbss:0x801F1B84; // type:object size:0x8 data:byte +lbl_801F1B8C = .sbss:0x801F1B8C; // type:object size:0x4 data:4byte +lbl_801F1B90 = .sbss:0x801F1B90; // type:object size:0x4 data:4byte +lbl_801F1B94 = .sbss:0x801F1B94; // type:object size:0x4 data:4byte +lbl_801F1B98 = .sbss:0x801F1B98; // type:object size:0x4 data:4byte +lbl_801F1B9C = .sbss:0x801F1B9C; // type:object size:0x4 data:4byte +lbl_801F1BA0 = .sbss:0x801F1BA0; // type:object size:0x8 data:byte +lbl_801F1BA8 = .sbss:0x801F1BA8; // type:object size:0x4 data:4byte +lbl_801F1BAC = .sbss:0x801F1BAC; // type:object size:0x4 data:4byte +lbl_801F1BB0 = .sbss:0x801F1BB0; // type:object size:0x4 data:4byte +lbl_801F1BB4 = .sbss:0x801F1BB4; // type:object size:0x1 data:byte +lbl_801F1BB5 = .sbss:0x801F1BB5; // type:object size:0x1 data:byte +lbl_801F1BB8 = .sbss:0x801F1BB8; // type:object size:0x4 data:4byte +lbl_801F1BBC = .sbss:0x801F1BBC; // type:object size:0x4 data:4byte +lbl_801F1BC0 = .sbss:0x801F1BC0; // type:object size:0x8 +lbl_801F1BC8 = .sbss:0x801F1BC8; // type:object size:0x4 data:4byte +lbl_801F1BCC = .sbss:0x801F1BCC; // type:object size:0x8 +lbl_801F1BD4 = .sbss:0x801F1BD4; // type:object size:0x4 data:4byte +lbl_801F1BD8 = .sbss:0x801F1BD8; // type:object size:0x4 data:4byte +lbl_801F1BDC = .sbss:0x801F1BDC; // type:object size:0x4 data:4byte +lbl_801F1BE0 = .sbss:0x801F1BE0; // type:object size:0x8 +lbl_801F1BE8 = .sbss:0x801F1BE8; // type:object size:0x4 data:4byte +lbl_801F1BEC = .sbss:0x801F1BEC; // type:object size:0x4 data:4byte +lbl_801F1BF0 = .sbss:0x801F1BF0; // type:object size:0x2 data:2byte +lbl_801F1BF2 = .sbss:0x801F1BF2; // type:object size:0x2 data:2byte +lbl_801F1BF4 = .sbss:0x801F1BF4; // type:object size:0x2 data:2byte +lbl_801F1BF6 = .sbss:0x801F1BF6; // type:object size:0x2 data:2byte +lbl_801F1BF8 = .sbss:0x801F1BF8; // type:object size:0x2 data:2byte +lbl_801F1BFA = .sbss:0x801F1BFA; // type:object size:0x6 data:2byte +lbl_801F1C00 = .sbss:0x801F1C00; // type:object size:0x8 data:4byte +lbl_801F1C08 = .sbss:0x801F1C08; // type:object size:0x4 data:4byte +lbl_801F1C0C = .sbss:0x801F1C0C; // type:object size:0x4 data:4byte +lbl_801F1C10 = .sbss:0x801F1C10; // type:object size:0x4 data:4byte +lbl_801F1C14 = .sbss:0x801F1C14; // type:object size:0x4 data:4byte +lbl_801F1C18 = .sbss:0x801F1C18; // type:object size:0x8 data:byte +lbl_801F1C20 = .sbss:0x801F1C20; // type:object size:0x4 data:4byte +lbl_801F1C24 = .sbss:0x801F1C24; // type:object size:0x4 data:4byte +lbl_801F1C28 = .sbss:0x801F1C28; // type:object size:0x4 data:4byte +lbl_801F1C2C = .sbss:0x801F1C2C; // type:object size:0x2 data:2byte +lbl_801F1C2E = .sbss:0x801F1C2E; // type:object size:0x1 data:byte +lbl_801F1C2F = .sbss:0x801F1C2F; // type:object size:0x1 data:byte +lbl_801F1C30 = .sbss:0x801F1C30; // type:object size:0x1 data:byte +lbl_801F1C31 = .sbss:0x801F1C31; // type:object size:0x7 data:byte +lbl_801F1C38 = .sbss:0x801F1C38; // type:object size:0x8 data:2byte +lbl_801F1C40 = .sbss:0x801F1C40; // type:object size:0x4 data:4byte +lbl_801F1C44 = .sbss:0x801F1C44; // type:object size:0x4 data:4byte +lbl_801F1C48 = .sbss:0x801F1C48; // type:object size:0x4 data:4byte +lbl_801F1C4C = .sbss:0x801F1C4C; // type:object size:0x2 data:2byte +lbl_801F1C50 = .sbss:0x801F1C50; // type:object size:0x4 data:4byte +lbl_801F1C54 = .sbss:0x801F1C54; // type:object size:0x4 data:4byte +lbl_801F1C58 = .sbss:0x801F1C58; // type:object size:0x4 data:4byte +lbl_801F1C5C = .sbss:0x801F1C5C; // type:object size:0x2 data:2byte +lbl_801F1C60 = .sbss:0x801F1C60; // type:object size:0x4 data:4byte +lbl_801F1C64 = .sbss:0x801F1C64; // type:object size:0x4 data:4byte +lbl_801F1C68 = .sbss:0x801F1C68; // type:object size:0x4 data:4byte +lbl_801F1C6C = .sbss:0x801F1C6C; // type:object size:0x4 data:4byte +lbl_801F1C70 = .sbss:0x801F1C70; // type:object size:0x3 +lbl_801F1C73 = .sbss:0x801F1C73; // type:object size:0x1 +lbl_801F1C74 = .sbss:0x801F1C74; // type:object size:0x4 data:4byte +lbl_801F1C78 = .sbss:0x801F1C78; // type:object size:0x8 data:4byte +lbl_801F1C80 = .sbss:0x801F1C80; // type:object size:0x1 data:byte +lbl_801F1C81 = .sbss:0x801F1C81; // type:object size:0x1 data:byte +lbl_801F1C82 = .sbss:0x801F1C82; // type:object size:0x1 data:byte +lbl_801F1C83 = .sbss:0x801F1C83; // type:object size:0x1 data:byte +lbl_801F1C84 = .sbss:0x801F1C84; // type:object size:0x1 data:byte +lbl_801F1C85 = .sbss:0x801F1C85; // type:object size:0x1 data:byte +lbl_801F1C88 = .sbss:0x801F1C88; // type:object size:0x4 data:4byte +lbl_801F1C8C = .sbss:0x801F1C8C; // type:object size:0x4 data:4byte +lbl_801F1C90 = .sbss:0x801F1C90; // type:object size:0x4 data:4byte +lbl_801F1C94 = .sbss:0x801F1C94; // type:object size:0x4 data:4byte +lbl_801F1C98 = .sbss:0x801F1C98; // type:object size:0x4 data:4byte +lbl_801F1C9C = .sbss:0x801F1C9C; // type:object size:0x1 data:byte +lbl_801F1CA0 = .sbss:0x801F1CA0; // type:object size:0x1 data:byte +lbl_801F1CA4 = .sbss:0x801F1CA4; // type:object size:0x4 data:4byte +lbl_801F1CA8 = .sbss:0x801F1CA8; // type:object size:0x4 data:4byte +lbl_801F1CAC = .sbss:0x801F1CAC; // type:object size:0x1 data:byte +lbl_801F1CAD = .sbss:0x801F1CAD; // type:object size:0x1 data:byte +lbl_801F1CAE = .sbss:0x801F1CAE; // type:object size:0x1 data:byte +lbl_801F1CAF = .sbss:0x801F1CAF; // type:object size:0x1 data:byte +lbl_801F1CB0 = .sbss:0x801F1CB0; // type:object size:0x4 data:4byte +lbl_801F1CB4 = .sbss:0x801F1CB4; // type:object size:0x4 data:4byte +lbl_801F1CB8 = .sbss:0x801F1CB8; // type:object size:0x4 data:4byte +lbl_801F1CBC = .sbss:0x801F1CBC; // type:object size:0x4 data:4byte +lbl_801F1CC0 = .sbss:0x801F1CC0; // type:object size:0x4 data:4byte +lbl_801F1CC4 = .sbss:0x801F1CC4; // type:object size:0x4 data:4byte +lbl_801F1CC8 = .sbss:0x801F1CC8; // type:object size:0x4 data:4byte +lbl_801F1CCC = .sbss:0x801F1CCC; // type:object size:0x4 data:4byte +lbl_801F1CD0 = .sbss:0x801F1CD0; // type:object size:0x4 data:4byte +lbl_801F1CD4 = .sbss:0x801F1CD4; // type:object size:0x2 data:2byte +lbl_801F1CD8 = .sbss:0x801F1CD8; // type:object size:0x4 data:4byte +lbl_801F1CDC = .sbss:0x801F1CDC; // type:object size:0x4 data:4byte +lbl_801F1CE0 = .sbss:0x801F1CE0; // type:object size:0x4 data:4byte +lbl_801F1CE4 = .sbss:0x801F1CE4; // type:object size:0x4 data:4byte +lbl_801F1CE8 = .sbss:0x801F1CE8; // type:object size:0x4 data:4byte +lbl_801F1CEC = .sbss:0x801F1CEC; // type:object size:0x4 data:4byte +lbl_801F1CF0 = .sbss:0x801F1CF0; // type:object size:0x1 data:byte +lbl_801F1CF4 = .sbss:0x801F1CF4; // type:object size:0x4 data:4byte +lbl_801F1CF8 = .sbss:0x801F1CF8; // type:object size:0x4 data:4byte +lbl_801F1CFC = .sbss:0x801F1CFC; // type:object size:0x4 data:4byte +lbl_801F1D00 = .sbss:0x801F1D00; // type:object size:0x4 data:4byte +lbl_801F1D04 = .sbss:0x801F1D04; // type:object size:0x4 data:4byte +lbl_801F1D08 = .sbss:0x801F1D08; // type:object size:0x4 data:4byte +lbl_801F1D0C = .sbss:0x801F1D0C; // type:object size:0x1 data:byte +lbl_801F1D20 = .sdata2:0x801F1D20; // type:object size:0x8 data:double +lbl_801F1D28 = .sdata2:0x801F1D28; // type:object size:0x4 data:float +lbl_801F1D2C = .sdata2:0x801F1D2C; // type:object size:0x4 data:float +lbl_801F1D30 = .sdata2:0x801F1D30; // type:object size:0x8 data:double +lbl_801F1D38 = .sdata2:0x801F1D38; // type:object size:0x4 data:float +lbl_801F1D3C = .sdata2:0x801F1D3C; // type:object size:0x4 data:float +lbl_801F1D40 = .sdata2:0x801F1D40; // type:object size:0x4 data:float +lbl_801F1D44 = .sdata2:0x801F1D44; // type:object size:0x4 data:float +lbl_801F1D48 = .sdata2:0x801F1D48; // type:object size:0x4 data:float +lbl_801F1D4C = .sdata2:0x801F1D4C; // type:object size:0x4 data:float +lbl_801F1D50 = .sdata2:0x801F1D50; // type:object size:0x4 data:float +lbl_801F1D54 = .sdata2:0x801F1D54; // type:object size:0x4 data:float +lbl_801F1D58 = .sdata2:0x801F1D58; // type:object size:0x4 data:float +lbl_801F1D60 = .sdata2:0x801F1D60; // type:object size:0x8 data:double +lbl_801F1D68 = .sdata2:0x801F1D68; // type:object size:0x8 data:double +lbl_801F1D70 = .sdata2:0x801F1D70; // type:object size:0x4 data:float +lbl_801F1D74 = .sdata2:0x801F1D74; // type:object size:0x4 data:float +lbl_801F1D78 = .sdata2:0x801F1D78; // type:object size:0x4 data:float +lbl_801F1D7C = .sdata2:0x801F1D7C; // type:object size:0x4 data:float +lbl_801F1D80 = .sdata2:0x801F1D80; // type:object size:0x8 data:float +lbl_801F1D88 = .sdata2:0x801F1D88; // type:object size:0x4 data:float +lbl_801F1D8C = .sdata2:0x801F1D8C; // type:object size:0x4 data:float +lbl_801F1D90 = .sdata2:0x801F1D90; // type:object size:0x4 data:float +lbl_801F1D98 = .sdata2:0x801F1D98; // type:object size:0x8 data:double +lbl_801F1DA0 = .sdata2:0x801F1DA0; // type:object size:0x8 data:double +lbl_801F1DA8 = .sdata2:0x801F1DA8; // type:object size:0x8 data:float +lbl_801F1DB0 = .sdata2:0x801F1DB0; // type:object size:0x4 data:float +lbl_801F1DB4 = .sdata2:0x801F1DB4; // type:object size:0x4 data:float +lbl_801F1DB8 = .sdata2:0x801F1DB8; // type:object size:0x4 data:float +lbl_801F1DBC = .sdata2:0x801F1DBC; // type:object size:0x4 data:float +lbl_801F1DC0 = .sdata2:0x801F1DC0; // type:object size:0x4 data:float +lbl_801F1DC4 = .sdata2:0x801F1DC4; // type:object size:0x4 data:float +lbl_801F1DC8 = .sdata2:0x801F1DC8; // type:object size:0x4 data:float +lbl_801F1DD0 = .sdata2:0x801F1DD0; // type:object size:0x8 data:double +lbl_801F1DD8 = .sdata2:0x801F1DD8; // type:object size:0x8 data:double +lbl_801F1DE0 = .sdata2:0x801F1DE0; // type:object size:0x8 data:double +lbl_801F1DE8 = .sdata2:0x801F1DE8; // type:object size:0x4 data:float +lbl_801F1DEC = .sdata2:0x801F1DEC; // type:object size:0x4 data:float +lbl_801F1DF0 = .sdata2:0x801F1DF0; // type:object size:0x4 data:float +lbl_801F1DF4 = .sdata2:0x801F1DF4; // type:object size:0x4 data:float +lbl_801F1DF8 = .sdata2:0x801F1DF8; // type:object size:0x8 data:double +lbl_801F1E00 = .sdata2:0x801F1E00; // type:object size:0x8 data:double +lbl_801F1E08 = .sdata2:0x801F1E08; // type:object size:0x8 data:double +lbl_801F1E10 = .sdata2:0x801F1E10; // type:object size:0x8 data:double +lbl_801F1E18 = .sdata2:0x801F1E18; // type:object size:0x4 data:float +lbl_801F1E20 = .sdata2:0x801F1E20; // type:object size:0x8 data:double +lbl_801F1E28 = .sdata2:0x801F1E28; // type:object size:0x4 data:float +lbl_801F1E2C = .sdata2:0x801F1E2C; // type:object size:0x4 data:float +lbl_801F1E30 = .sdata2:0x801F1E30; // type:object size:0x4 data:float +lbl_801F1E34 = .sdata2:0x801F1E34; // type:object size:0x4 data:float +lbl_801F1E38 = .sdata2:0x801F1E38; // type:object size:0x8 data:double +lbl_801F1E40 = .sdata2:0x801F1E40; // type:object size:0x4 data:float +lbl_801F1E44 = .sdata2:0x801F1E44; // type:object size:0x4 data:float +lbl_801F1E48 = .sdata2:0x801F1E48; // type:object size:0x4 data:float +lbl_801F1E4C = .sdata2:0x801F1E4C; // type:object size:0x4 data:float +lbl_801F1E50 = .sdata2:0x801F1E50; // type:object size:0x8 data:double +lbl_801F1E58 = .sdata2:0x801F1E58; // type:object size:0x4 data:float +lbl_801F1E60 = .sdata2:0x801F1E60; // type:object size:0x8 data:double +lbl_801F1E68 = .sdata2:0x801F1E68; // type:object size:0x4 data:float +lbl_801F1E6C = .sdata2:0x801F1E6C; // type:object size:0x4 data:float +lbl_801F1E70 = .sdata2:0x801F1E70; // type:object size:0x4 data:float +lbl_801F1E74 = .sdata2:0x801F1E74; // type:object size:0x4 data:float +lbl_801F1E78 = .sdata2:0x801F1E78; // type:object size:0x4 data:float +lbl_801F1E80 = .sdata2:0x801F1E80; // type:object size:0x8 data:double +lbl_801F1E88 = .sdata2:0x801F1E88; // type:object size:0x8 data:double +lbl_801F1E90 = .sdata2:0x801F1E90; // type:object size:0x8 data:double +lbl_801F1E98 = .sdata2:0x801F1E98; // type:object size:0x8 data:double +lbl_801F1EA0 = .sdata2:0x801F1EA0; // type:object size:0x4 data:float +lbl_801F1EA4 = .sdata2:0x801F1EA4; // type:object size:0x4 data:float +lbl_801F1EA8 = .sdata2:0x801F1EA8; // type:object size:0x4 data:float +lbl_801F1EAC = .sdata2:0x801F1EAC; // type:object size:0x4 data:float +lbl_801F1EB0 = .sdata2:0x801F1EB0; // type:object size:0x4 data:float +lbl_801F1EB4 = .sdata2:0x801F1EB4; // type:object size:0x4 data:float +lbl_801F1EB8 = .sdata2:0x801F1EB8; // type:object size:0x4 data:float +lbl_801F1EBC = .sdata2:0x801F1EBC; // type:object size:0x4 data:float +lbl_801F1EC0 = .sdata2:0x801F1EC0; // type:object size:0x8 data:double +lbl_801F1EC8 = .sdata2:0x801F1EC8; // type:object size:0x8 data:float +lbl_801F1ED0 = .sdata2:0x801F1ED0; // type:object size:0x4 data:float +lbl_801F1ED4 = .sdata2:0x801F1ED4; // type:object size:0x4 data:float +lbl_801F1ED8 = .sdata2:0x801F1ED8; // type:object size:0x8 data:double +lbl_801F1EE0 = .sdata2:0x801F1EE0; // type:object size:0x8 data:double +lbl_801F1EE8 = .sdata2:0x801F1EE8; // type:object size:0x4 data:float +lbl_801F1EEC = .sdata2:0x801F1EEC; // type:object size:0x4 data:float +lbl_801F1EF0 = .sdata2:0x801F1EF0; // type:object size:0x4 data:float +lbl_801F1EF8 = .sdata2:0x801F1EF8; // type:object size:0x8 data:double +lbl_801F1F00 = .sdata2:0x801F1F00; // type:object size:0x8 data:double +lbl_801F1F08 = .sdata2:0x801F1F08; // type:object size:0x8 data:double +lbl_801F1F10 = .sdata2:0x801F1F10; // type:object size:0x4 data:float +lbl_801F1F14 = .sdata2:0x801F1F14; // type:object size:0x4 data:float +lbl_801F1F18 = .sdata2:0x801F1F18; // type:object size:0x8 data:float +lbl_801F1F20 = .sdata2:0x801F1F20; // type:object size:0x4 data:float +lbl_801F1F24 = .sdata2:0x801F1F24; // type:object size:0x4 data:float +lbl_801F1F28 = .sdata2:0x801F1F28; // type:object size:0x8 data:double +lbl_801F1F30 = .sdata2:0x801F1F30; // type:object size:0x4 data:float +lbl_801F1F34 = .sdata2:0x801F1F34; // type:object size:0x4 data:float +lbl_801F1F38 = .sdata2:0x801F1F38; // type:object size:0x4 data:float +lbl_801F1F3C = .sdata2:0x801F1F3C; // type:object size:0x4 data:float +lbl_801F1F40 = .sdata2:0x801F1F40; // type:object size:0x8 data:double +lbl_801F1F48 = .sdata2:0x801F1F48; // type:object size:0x4 data:float +lbl_801F1F50 = .sdata2:0x801F1F50; // type:object size:0x8 data:double +lbl_801F1F58 = .sdata2:0x801F1F58; // type:object size:0x8 data:double +lbl_801F1F60 = .sdata2:0x801F1F60; // type:object size:0x8 data:double +lbl_801F1F68 = .sdata2:0x801F1F68; // type:object size:0x4 data:float +lbl_801F1F70 = .sdata2:0x801F1F70; // type:object size:0x8 data:double +lbl_801F1F78 = .sdata2:0x801F1F78; // type:object size:0x8 data:double +lbl_801F1F80 = .sdata2:0x801F1F80; // type:object size:0x4 data:float +lbl_801F1F88 = .sdata2:0x801F1F88; // type:object size:0x8 data:double +lbl_801F1F90 = .sdata2:0x801F1F90; // type:object size:0x8 data:double +lbl_801F1F98 = .sdata2:0x801F1F98; // type:object size:0x8 data:double +lbl_801F1FA0 = .sdata2:0x801F1FA0; // type:object size:0x8 data:double +lbl_801F1FA8 = .sdata2:0x801F1FA8; // type:object size:0x4 data:float +lbl_801F1FAC = .sdata2:0x801F1FAC; // type:object size:0x4 data:float +lbl_801F1FB0 = .sdata2:0x801F1FB0; // type:object size:0x4 data:float +lbl_801F1FB4 = .sdata2:0x801F1FB4; // type:object size:0x4 data:float +lbl_801F1FB8 = .sdata2:0x801F1FB8; // type:object size:0x8 data:double +lbl_801F1FC0 = .sdata2:0x801F1FC0; // type:object size:0x4 data:float +lbl_801F1FC8 = .sdata2:0x801F1FC8; // type:object size:0x8 data:double +lbl_801F1FD0 = .sdata2:0x801F1FD0; // type:object size:0x8 data:double +lbl_801F1FD8 = .sdata2:0x801F1FD8; // type:object size:0x4 data:float +lbl_801F1FE0 = .sdata2:0x801F1FE0; // type:object size:0x8 data:double +lbl_801F1FE8 = .sdata2:0x801F1FE8; // type:object size:0x4 data:float +lbl_801F1FEC = .sdata2:0x801F1FEC; // type:object size:0x4 data:float +lbl_801F1FF0 = .sdata2:0x801F1FF0; // type:object size:0x4 data:float +lbl_801F1FF4 = .sdata2:0x801F1FF4; // type:object size:0x4 data:float +lbl_801F1FF8 = .sdata2:0x801F1FF8; // type:object size:0x8 data:double +lbl_801F2000 = .sdata2:0x801F2000; // type:object size:0x8 data:double +lbl_801F2008 = .sdata2:0x801F2008; // type:object size:0x4 data:float +lbl_801F200C = .sdata2:0x801F200C; // type:object size:0x4 data:float +lbl_801F2010 = .sdata2:0x801F2010; // type:object size:0x8 data:double +lbl_801F2018 = .sdata2:0x801F2018; // type:object size:0x4 data:float +lbl_801F201C = .sdata2:0x801F201C; // type:object size:0x4 data:float +lbl_801F2020 = .sdata2:0x801F2020; // type:object size:0x4 data:float +lbl_801F2024 = .sdata2:0x801F2024; // type:object size:0x4 data:float +lbl_801F2028 = .sdata2:0x801F2028; // type:object size:0x8 data:double +lbl_801F2030 = .sdata2:0x801F2030; // type:object size:0x8 data:double +lbl_801F2038 = .sdata2:0x801F2038; // type:object size:0x4 data:float +lbl_801F203C = .sdata2:0x801F203C; // type:object size:0x4 data:float +lbl_801F2040 = .sdata2:0x801F2040; // type:object size:0x4 data:float +lbl_801F2044 = .sdata2:0x801F2044; // type:object size:0x4 data:float +lbl_801F2048 = .sdata2:0x801F2048; // type:object size:0x4 data:float +lbl_801F204C = .sdata2:0x801F204C; // type:object size:0x4 data:float +lbl_801F2050 = .sdata2:0x801F2050; // type:object size:0x4 data:float +lbl_801F2054 = .sdata2:0x801F2054; // type:object size:0x4 data:float +lbl_801F2058 = .sdata2:0x801F2058; // type:object size:0x4 data:float +lbl_801F2060 = .sdata2:0x801F2060; // type:object size:0x8 data:double +lbl_801F2068 = .sdata2:0x801F2068; // type:object size:0x8 data:double +lbl_801F2070 = .sdata2:0x801F2070; // type:object size:0x4 data:float +lbl_801F2078 = .sdata2:0x801F2078; // type:object size:0x8 data:double +lbl_801F2080 = .sdata2:0x801F2080; // type:object size:0x8 data:double +lbl_801F2088 = .sdata2:0x801F2088; // type:object size:0x8 data:double +lbl_801F2090 = .sdata2:0x801F2090; // type:object size:0x4 data:float +lbl_801F2094 = .sdata2:0x801F2094; // type:object size:0x4 data:float +lbl_801F2098 = .sdata2:0x801F2098; // type:object size:0x4 data:float +lbl_801F20A0 = .sdata2:0x801F20A0; // type:object size:0x8 data:double +lbl_801F20A8 = .sdata2:0x801F20A8; // type:object size:0x4 scope:local data:float +lbl_801F20AC = .sdata2:0x801F20AC; // type:object size:0x4 scope:local data:float +lbl_801F20B0 = .sdata2:0x801F20B0; // type:object size:0x4 scope:local data:float +lbl_801F20B8 = .sdata2:0x801F20B8; // type:object size:0x8 scope:local data:double +lbl_801F20C0 = .sdata2:0x801F20C0; // type:object size:0x8 scope:local data:double +lbl_801F20C8 = .sdata2:0x801F20C8; // type:object size:0x8 scope:local data:double +lbl_801F20D0 = .sdata2:0x801F20D0; // type:object size:0x8 scope:local data:double +lbl_801F20D8 = .sdata2:0x801F20D8; // type:object size:0x8 scope:local data:double +lbl_801F20E0 = .sdata2:0x801F20E0; // type:object size:0x8 scope:local data:double +lbl_801F20E8 = .sdata2:0x801F20E8; // type:object size:0x4 scope:local data:float +lbl_801F20EC = .sdata2:0x801F20EC; // type:object size:0x4 scope:local data:float +lbl_801F20F0 = .sdata2:0x801F20F0; // type:object size:0x8 scope:local data:double +lbl_801F20F8 = .sdata2:0x801F20F8; // type:object size:0x4 scope:local data:float +lbl_801F20FC = .sdata2:0x801F20FC; // type:object size:0x4 scope:local data:float +lbl_801F2100 = .sdata2:0x801F2100; // type:object size:0x4 scope:local data:float +lbl_801F2104 = .sdata2:0x801F2104; // type:object size:0x4 scope:local data:float +lbl_801F2108 = .sdata2:0x801F2108; // type:object size:0x4 scope:local data:float +lbl_801F210C = .sdata2:0x801F210C; // type:object size:0x4 scope:local data:float +lbl_801F2110 = .sdata2:0x801F2110; // type:object size:0x4 scope:local data:float +lbl_801F2114 = .sdata2:0x801F2114; // type:object size:0x4 scope:local data:float +lbl_801F2118 = .sdata2:0x801F2118; // type:object size:0x4 scope:local data:float +lbl_801F211C = .sdata2:0x801F211C; // type:object size:0x4 scope:local data:float +lbl_801F2120 = .sdata2:0x801F2120; // type:object size:0x4 scope:local data:float +lbl_801F2124 = .sdata2:0x801F2124; // type:object size:0x4 scope:local data:float +lbl_801F2128 = .sdata2:0x801F2128; // type:object size:0x4 scope:local data:float +lbl_801F212C = .sdata2:0x801F212C; // type:object size:0x4 scope:local data:float +lbl_801F2130 = .sdata2:0x801F2130; // type:object size:0x4 scope:local data:float +lbl_801F2134 = .sdata2:0x801F2134; // type:object size:0x4 scope:local data:float +lbl_801F2138 = .sdata2:0x801F2138; // type:object size:0x4 scope:local data:float +lbl_801F213C = .sdata2:0x801F213C; // type:object size:0x4 scope:local data:float +lbl_801F2140 = .sdata2:0x801F2140; // type:object size:0x8 scope:local data:double +lbl_801F2148 = .sdata2:0x801F2148; // type:object size:0x4 scope:local data:float +lbl_801F214C = .sdata2:0x801F214C; // type:object size:0x4 scope:local data:float +lbl_801F2150 = .sdata2:0x801F2150; // type:object size:0x8 scope:local data:double +lbl_801F2158 = .sdata2:0x801F2158; // type:object size:0x8 scope:local data:double +lbl_801F2160 = .sdata2:0x801F2160; // type:object size:0x4 scope:local data:float +lbl_801F2164 = .sdata2:0x801F2164; // type:object size:0x4 scope:local data:float +lbl_801F2168 = .sdata2:0x801F2168; // type:object size:0x8 scope:local data:double +lbl_801F2170 = .sdata2:0x801F2170; // type:object size:0x4 scope:local data:float +lbl_801F2174 = .sdata2:0x801F2174; // type:object size:0x4 scope:local data:float +lbl_801F2178 = .sdata2:0x801F2178; // type:object size:0x4 scope:local data:float +lbl_801F217C = .sdata2:0x801F217C; // type:object size:0x4 scope:local data:float +lbl_801F2180 = .sdata2:0x801F2180; // type:object size:0x4 scope:local data:float +lbl_801F2188 = .sdata2:0x801F2188; // type:object size:0x8 scope:local data:double +lbl_801F2190 = .sdata2:0x801F2190; // type:object size:0x4 scope:local data:float +lbl_801F2198 = .sdata2:0x801F2198; // type:object size:0x8 scope:local data:double +lbl_801F21A0 = .sdata2:0x801F21A0; // type:object size:0x4 scope:local data:float +lbl_801F21A4 = .sdata2:0x801F21A4; // type:object size:0x4 scope:local data:float +lbl_801F21A8 = .sdata2:0x801F21A8; // type:object size:0x4 scope:local data:float +lbl_801F21AC = .sdata2:0x801F21AC; // type:object size:0x4 scope:local data:float +lbl_801F21B0 = .sdata2:0x801F21B0; // type:object size:0x8 scope:local data:double +lbl_801F21B8 = .sdata2:0x801F21B8; // type:object size:0x4 scope:local data:float +lbl_801F21C0 = .sdata2:0x801F21C0; // type:object size:0x8 scope:local data:double +lbl_801F21C8 = .sdata2:0x801F21C8; // type:object size:0x8 scope:local data:double +lbl_801F21D0 = .sdata2:0x801F21D0; // type:object size:0x8 scope:local data:double +lbl_801F21D8 = .sdata2:0x801F21D8; // type:object size:0x4 scope:local data:float +lbl_801F21E0 = .sdata2:0x801F21E0; // type:object size:0x8 scope:local data:double +lbl_801F21E8 = .sdata2:0x801F21E8; // type:object size:0x4 scope:local data:float +lbl_801F21EC = .sdata2:0x801F21EC; // type:object size:0x4 scope:local data:float +lbl_801F21F0 = .sdata2:0x801F21F0; // type:object size:0x4 scope:local data:float +lbl_801F21F4 = .sdata2:0x801F21F4; // type:object size:0x4 scope:local data:float +lbl_801F21F8 = .sdata2:0x801F21F8; // type:object size:0x4 scope:local data:float +lbl_801F21FC = .sdata2:0x801F21FC; // type:object size:0x4 scope:local data:float +lbl_801F2200 = .sdata2:0x801F2200; // type:object size:0x4 scope:local data:float +lbl_801F2208 = .sdata2:0x801F2208; // type:object size:0x8 scope:local data:double +lbl_801F2210 = .sdata2:0x801F2210; // type:object size:0x8 scope:local data:double +lbl_801F2218 = .sdata2:0x801F2218; // type:object size:0x8 scope:local data:double +lbl_801F2220 = .sdata2:0x801F2220; // type:object size:0x2 scope:local data:2byte +lbl_801F2222 = .sdata2:0x801F2222; // type:object size:0x2 scope:local data:2byte +lbl_801F2224 = .sdata2:0x801F2224; // type:object size:0x2 scope:local data:2byte +lbl_801F2228 = .sdata2:0x801F2228; // type:object size:0x4 scope:local data:float +lbl_801F222C = .sdata2:0x801F222C; // type:object size:0x4 scope:local data:float +lbl_801F2230 = .sdata2:0x801F2230; // type:object size:0x4 scope:local data:float +lbl_801F2234 = .sdata2:0x801F2234; // type:object size:0x4 scope:local data:float +lbl_801F2238 = .sdata2:0x801F2238; // type:object size:0x4 scope:local data:float +lbl_801F223C = .sdata2:0x801F223C; // type:object size:0x4 scope:local data:float +lbl_801F2240 = .sdata2:0x801F2240; // type:object size:0x4 scope:local data:float +lbl_801F2244 = .sdata2:0x801F2244; // type:object size:0x4 scope:local data:float +lbl_801F2248 = .sdata2:0x801F2248; // type:object size:0x4 scope:local data:float +lbl_801F224C = .sdata2:0x801F224C; // type:object size:0x4 scope:local data:float +lbl_801F2250 = .sdata2:0x801F2250; // type:object size:0x8 scope:local data:double +lbl_801F2258 = .sdata2:0x801F2258; // type:object size:0x8 scope:local data:double +lbl_801F2260 = .sdata2:0x801F2260; // type:object size:0x4 scope:local data:float +lbl_801F2264 = .sdata2:0x801F2264; // type:object size:0x4 scope:local data:float +lbl_801F2268 = .sdata2:0x801F2268; // type:object size:0x4 data:float +lbl_801F2270 = .sdata2:0x801F2270; // type:object size:0x8 data:double +lbl_801F2278 = .sdata2:0x801F2278; // type:object size:0x8 data:double +lbl_801F2280 = .sdata2:0x801F2280; // type:object size:0x4 data:float +lbl_801F2284 = .sdata2:0x801F2284; // type:object size:0x4 data:float +lbl_801F2288 = .sdata2:0x801F2288; // type:object size:0x8 data:double +lbl_801F2290 = .sdata2:0x801F2290; // type:object size:0x4 data:float +lbl_801F2294 = .sdata2:0x801F2294; // type:object size:0x4 data:float +lbl_801F2298 = .sdata2:0x801F2298; // type:object size:0x8 data:double +lbl_801F22A0 = .sdata2:0x801F22A0; // type:object size:0x4 data:float +lbl_801F22A8 = .sdata2:0x801F22A8; // type:object size:0x8 data:double +lbl_801F22B0 = .sdata2:0x801F22B0; // type:object size:0x4 data:float +lbl_801F22B4 = .sdata2:0x801F22B4; // type:object size:0x4 data:float +lbl_801F22B8 = .sdata2:0x801F22B8; // type:object size:0x4 data:float +lbl_801F22BC = .sdata2:0x801F22BC; // type:object size:0x4 data:float +lbl_801F22C0 = .sdata2:0x801F22C0; // type:object size:0x8 data:double +lbl_801F22C8 = .sdata2:0x801F22C8; // type:object size:0x4 data:float +lbl_801F22CC = .sdata2:0x801F22CC; // type:object size:0x4 data:float +lbl_801F22D0 = .sdata2:0x801F22D0; // type:object size:0x4 data:float +lbl_801F22D4 = .sdata2:0x801F22D4; // type:object size:0x4 data:float +lbl_801F22D8 = .sdata2:0x801F22D8; // type:object size:0x4 data:float +lbl_801F22E0 = .sdata2:0x801F22E0; // type:object size:0x8 data:double +lbl_801F22E8 = .sdata2:0x801F22E8; // type:object size:0x4 data:float +lbl_801F22EC = .sdata2:0x801F22EC; // type:object size:0x4 data:float +lbl_801F22F0 = .sdata2:0x801F22F0; // type:object size:0x4 data:float +lbl_801F22F4 = .sdata2:0x801F22F4; // type:object size:0x4 data:float +lbl_801F22F8 = .sdata2:0x801F22F8; // type:object size:0x4 data:float +lbl_801F22FC = .sdata2:0x801F22FC; // type:object size:0x4 data:float +lbl_801F2300 = .sdata2:0x801F2300; // type:object size:0x4 data:float +lbl_801F2308 = .sdata2:0x801F2308; // type:object size:0x8 data:double +lbl_801F2310 = .sdata2:0x801F2310; // type:object size:0x4 data:float +lbl_801F2318 = .sdata2:0x801F2318; // type:object size:0x8 data:double +lbl_801F2320 = .sdata2:0x801F2320; // type:object size:0x4 data:float +lbl_801F2324 = .sdata2:0x801F2324; // type:object size:0x4 data:float +lbl_801F2328 = .sdata2:0x801F2328; // type:object size:0x4 data:float +lbl_801F2330 = .sdata2:0x801F2330; // type:object size:0x8 data:double +lbl_801F2338 = .sdata2:0x801F2338; // type:object size:0x8 data:double +lbl_801F2340 = .sdata2:0x801F2340; // type:object size:0x8 data:double +lbl_801F2348 = .sdata2:0x801F2348; // type:object size:0x4 data:float +lbl_801F2350 = .sdata2:0x801F2350; // type:object size:0x8 data:double +lbl_801F2358 = .sdata2:0x801F2358; // type:object size:0x8 data:double +lbl_801F2360 = .sdata2:0x801F2360; // type:object size:0x8 data:double +lbl_801F2368 = .sdata2:0x801F2368; // type:object size:0x8 data:double +lbl_801F2370 = .sdata2:0x801F2370; // type:object size:0x8 data:double +lbl_801F2378 = .sdata2:0x801F2378; // type:object size:0x8 data:double +lbl_801F2380 = .sdata2:0x801F2380; // type:object size:0x8 data:double +lbl_801F2388 = .sdata2:0x801F2388; // type:object size:0x8 data:double +lbl_801F2390 = .sdata2:0x801F2390; // type:object size:0x8 data:double +lbl_801F2398 = .sdata2:0x801F2398; // type:object size:0x4 data:float +lbl_801F239C = .sdata2:0x801F239C; // type:object size:0x4 data:float +lbl_801F23A0 = .sdata2:0x801F23A0; // type:object size:0x4 data:float +lbl_801F23A4 = .sdata2:0x801F23A4; // type:object size:0x4 data:float +lbl_801F23A8 = .sdata2:0x801F23A8; // type:object size:0x8 data:double +lbl_801F23B0 = .sdata2:0x801F23B0; // type:object size:0x4 data:float +lbl_801F23B8 = .sdata2:0x801F23B8; // type:object size:0x8 data:double +lbl_801F23C0 = .sdata2:0x801F23C0; // type:object size:0x8 data:double +lbl_801F23C8 = .sdata2:0x801F23C8; // type:object size:0x4 data:float +lbl_801F23CC = .sdata2:0x801F23CC; // type:object size:0x4 data:float +lbl_801F23D0 = .sdata2:0x801F23D0; // type:object size:0x8 data:double +lbl_801F23D8 = .sdata2:0x801F23D8; // type:object size:0x4 data:float +lbl_801F23DC = .sdata2:0x801F23DC; // type:object size:0x4 data:float +lbl_801F23E0 = .sdata2:0x801F23E0; // type:object size:0x4 data:float +lbl_801F23E4 = .sdata2:0x801F23E4; // type:object size:0x4 data:float +lbl_801F23E8 = .sdata2:0x801F23E8; // type:object size:0x4 data:float +lbl_801F23EC = .sdata2:0x801F23EC; // type:object size:0x4 data:float +lbl_801F23F0 = .sdata2:0x801F23F0; // type:object size:0x8 data:double +lbl_801F23F8 = .sdata2:0x801F23F8; // type:object size:0x4 data:float +lbl_801F2400 = .sdata2:0x801F2400; // type:object size:0x8 data:double +lbl_801F2408 = .sdata2:0x801F2408; // type:object size:0x8 data:double +lbl_801F2410 = .sdata2:0x801F2410; // type:object size:0x4 data:float +lbl_801F2418 = .sdata2:0x801F2418; // type:object size:0x8 data:double +lbl_801F2420 = .sdata2:0x801F2420; // type:object size:0x4 data:float +lbl_801F2424 = .sdata2:0x801F2424; // type:object size:0x4 data:float +lbl_801F2428 = .sdata2:0x801F2428; // type:object size:0x8 data:double +lbl_801F2430 = .sdata2:0x801F2430; // type:object size:0x8 data:double +lbl_801F2438 = .sdata2:0x801F2438; // type:object size:0x4 data:float +lbl_801F243C = .sdata2:0x801F243C; // type:object size:0x4 data:float +lbl_801F2440 = .sdata2:0x801F2440; // type:object size:0x4 data:float +lbl_801F2448 = .sdata2:0x801F2448; // type:object size:0x8 data:double +lbl_801F2450 = .sdata2:0x801F2450; // type:object size:0x4 data:float +lbl_801F2454 = .sdata2:0x801F2454; // type:object size:0x4 data:float +lbl_801F2458 = .sdata2:0x801F2458; // type:object size:0x4 data:float +lbl_801F245C = .sdata2:0x801F245C; // type:object size:0x4 data:float +lbl_801F2460 = .sdata2:0x801F2460; // type:object size:0x8 data:double +lbl_801F2468 = .sdata2:0x801F2468; // type:object size:0x4 data:float +lbl_801F2470 = .sdata2:0x801F2470; // type:object size:0x8 data:double +lbl_801F2478 = .sdata2:0x801F2478; // type:object size:0x4 data:float +lbl_801F2480 = .sdata2:0x801F2480; // type:object size:0x8 data:double +lbl_801F2488 = .sdata2:0x801F2488; // type:object size:0x8 data:float +lbl_801F2490 = .sdata2:0x801F2490; // type:object size:0x4 data:float +lbl_801F2494 = .sdata2:0x801F2494; // type:object size:0x4 data:float +lbl_801F2498 = .sdata2:0x801F2498; // type:object size:0x4 data:float +lbl_801F249C = .sdata2:0x801F249C; // type:object size:0x4 data:float +lbl_801F24A0 = .sdata2:0x801F24A0; // type:object size:0x8 data:double +lbl_801F24A8 = .sdata2:0x801F24A8; // type:object size:0x8 data:double +lbl_801F24B0 = .sdata2:0x801F24B0; // type:object size:0x8 data:double +lbl_801F24B8 = .sdata2:0x801F24B8; // type:object size:0x4 data:float +lbl_801F24C0 = .sdata2:0x801F24C0; // type:object size:0x8 data:double +lbl_801F24C8 = .sdata2:0x801F24C8; // type:object size:0x2 data:2byte +lbl_801F24CA = .sdata2:0x801F24CA; // type:object size:0x2 data:2byte +lbl_801F24CC = .sdata2:0x801F24CC; // type:object size:0x2 data:2byte +lbl_801F24CE = .sdata2:0x801F24CE; // type:object size:0x2 data:2byte +lbl_801F24D0 = .sdata2:0x801F24D0; // type:object size:0x1 data:byte +lbl_801F24D1 = .sdata2:0x801F24D1; // type:object size:0x1 data:byte +lbl_801F24D2 = .sdata2:0x801F24D2; // type:object size:0x1 data:byte +lbl_801F24D3 = .sdata2:0x801F24D3; // type:object size:0x1 data:byte +lbl_801F24D4 = .sdata2:0x801F24D4; // type:object size:0x1 data:byte +lbl_801F24D5 = .sdata2:0x801F24D5; // type:object size:0x1 data:byte +lbl_801F24D6 = .sdata2:0x801F24D6; // type:object size:0x1 data:byte +lbl_801F24D7 = .sdata2:0x801F24D7; // type:object size:0x1 data:byte +lbl_801F24D8 = .sdata2:0x801F24D8; // type:object size:0x1 data:byte +lbl_801F24D9 = .sdata2:0x801F24D9; // type:object size:0x1 data:byte +lbl_801F24DA = .sdata2:0x801F24DA; // type:object size:0x1 data:byte +lbl_801F24DB = .sdata2:0x801F24DB; // type:object size:0x1 data:byte +lbl_801F24DC = .sdata2:0x801F24DC; // type:object size:0x4 data:float +lbl_801F24E0 = .sdata2:0x801F24E0; // type:object size:0x4 data:float +lbl_801F24E4 = .sdata2:0x801F24E4; // type:object size:0x1 data:byte +lbl_801F24E5 = .sdata2:0x801F24E5; // type:object size:0x1 data:byte +lbl_801F24E6 = .sdata2:0x801F24E6; // type:object size:0x1 data:byte +lbl_801F24E7 = .sdata2:0x801F24E7; // type:object size:0x1 data:byte +lbl_801F24E8 = .sdata2:0x801F24E8; // type:object size:0x4 data:float +lbl_801F24EC = .sdata2:0x801F24EC; // type:object size:0x4 data:float +lbl_801F24F0 = .sdata2:0x801F24F0; // type:object size:0x8 data:float +lbl_801F24F8 = .sdata2:0x801F24F8; // type:object size:0x4 data:float +lbl_801F24FC = .sdata2:0x801F24FC; // type:object size:0x4 data:float +lbl_801F2500 = .sdata2:0x801F2500; // type:object size:0x8 data:float +lbl_801F2508 = .sdata2:0x801F2508; // type:object size:0x4 data:float +lbl_801F250C = .sdata2:0x801F250C; // type:object size:0x4 data:float +lbl_801F2510 = .sdata2:0x801F2510; // type:object size:0x4 data:float +lbl_801F2514 = .sdata2:0x801F2514; // type:object size:0x4 data:float +lbl_801F2518 = .sdata2:0x801F2518; // type:object size:0x4 data:float +lbl_801F251C = .sdata2:0x801F251C; // type:object size:0x4 data:float +lbl_801F2520 = .sdata2:0x801F2520; // type:object size:0x8 data:double +lbl_801F2528 = .sdata2:0x801F2528; // type:object size:0x8 data:double +lbl_801F2530 = .sdata2:0x801F2530; // type:object size:0x4 data:float +lbl_801F2534 = .sdata2:0x801F2534; // type:object size:0x4 data:float +lbl_801F2538 = .sdata2:0x801F2538; // type:object size:0x8 data:double +lbl_801F2540 = .sdata2:0x801F2540; // type:object size:0x8 data:double +lbl_801F2548 = .sdata2:0x801F2548; // type:object size:0x4 data:float +lbl_801F254C = .sdata2:0x801F254C; // type:object size:0x4 data:float +lbl_801F2550 = .sdata2:0x801F2550; // type:object size:0x4 data:float +lbl_801F2554 = .sdata2:0x801F2554; // type:object size:0x4 data:float +lbl_801F2558 = .sdata2:0x801F2558; // type:object size:0x4 data:float +lbl_801F255C = .sdata2:0x801F255C; // type:object size:0x4 data:float +lbl_801F2560 = .sdata2:0x801F2560; // type:object size:0x8 data:double +lbl_801F2568 = .sdata2:0x801F2568; // type:object size:0x4 data:float +lbl_801F256C = .sdata2:0x801F256C; // type:object size:0x4 data:float +lbl_801F2570 = .sdata2:0x801F2570; // type:object size:0x8 data:double +lbl_801F2578 = .sdata2:0x801F2578; // type:object size:0x4 data:float +lbl_801F257C = .sdata2:0x801F257C; // type:object size:0x4 data:float +lbl_801F2580 = .sdata2:0x801F2580; // type:object size:0x4 data:float +lbl_801F2584 = .sdata2:0x801F2584; // type:object size:0x4 data:float +lbl_801F2588 = .sdata2:0x801F2588; // type:object size:0x4 data:float +lbl_801F258C = .sdata2:0x801F258C; // type:object size:0x4 data:float +lbl_801F2590 = .sdata2:0x801F2590; // type:object size:0x4 data:float +lbl_801F2594 = .sdata2:0x801F2594; // type:object size:0x4 data:float +lbl_801F2598 = .sdata2:0x801F2598; // type:object size:0x4 data:float +lbl_801F259C = .sdata2:0x801F259C; // type:object size:0x4 data:float +lbl_801F25A0 = .sdata2:0x801F25A0; // type:object size:0x4 data:float +lbl_801F25A4 = .sdata2:0x801F25A4; // type:object size:0x4 data:float +lbl_801F25A8 = .sdata2:0x801F25A8; // type:object size:0x4 data:float +lbl_801F25AC = .sdata2:0x801F25AC; // type:object size:0x4 data:float +lbl_801F25B0 = .sdata2:0x801F25B0; // type:object size:0x4 data:float +lbl_801F25B4 = .sdata2:0x801F25B4; // type:object size:0x4 data:float +lbl_801F25B8 = .sdata2:0x801F25B8; // type:object size:0x4 data:float +lbl_801F25BC = .sdata2:0x801F25BC; // type:object size:0x4 data:float +lbl_801F25C0 = .sdata2:0x801F25C0; // type:object size:0x4 data:float +lbl_801F25C4 = .sdata2:0x801F25C4; // type:object size:0x4 data:float +lbl_801F25C8 = .sdata2:0x801F25C8; // type:object size:0x4 data:float +lbl_801F25CC = .sdata2:0x801F25CC; // type:object size:0x4 data:float +lbl_801F25D0 = .sdata2:0x801F25D0; // type:object size:0x4 data:float +lbl_801F25D8 = .sdata2:0x801F25D8; // type:object size:0x8 data:double +lbl_801F25E0 = .sdata2:0x801F25E0; // type:object size:0x8 data:double +lbl_801F25E8 = .sdata2:0x801F25E8; // type:object size:0x4 data:float +lbl_801F25F0 = .sdata2:0x801F25F0; // type:object size:0x8 data:double +lbl_801F25F8 = .sdata2:0x801F25F8; // type:object size:0x4 data:float +lbl_801F2600 = .sdata2:0x801F2600; // type:object size:0x8 data:double +lbl_801F2608 = .sdata2:0x801F2608; // type:object size:0x4 data:float +lbl_801F260C = .sdata2:0x801F260C; // type:object size:0x4 data:float +lbl_801F2610 = .sdata2:0x801F2610; // type:object size:0x4 data:float +lbl_801F2614 = .sdata2:0x801F2614; // type:object size:0x4 data:float +lbl_801F2618 = .sdata2:0x801F2618; // type:object size:0x8 data:double +lbl_801F2620 = .sdata2:0x801F2620; // type:object size:0x8 data:double +lbl_801F2628 = .sdata2:0x801F2628; // type:object size:0x4 data:float +lbl_801F262C = .sdata2:0x801F262C; // type:object size:0x4 data:float +lbl_801F2630 = .sdata2:0x801F2630; // type:object size:0x4 data:float +lbl_801F2634 = .sdata2:0x801F2634; // type:object size:0x4 data:float +lbl_801F2638 = .sdata2:0x801F2638; // type:object size:0x4 data:float +lbl_801F263C = .sdata2:0x801F263C; // type:object size:0x4 data:float +lbl_801F2640 = .sdata2:0x801F2640; // type:object size:0x4 data:float +lbl_801F2644 = .sdata2:0x801F2644; // type:object size:0x4 data:float +lbl_801F2648 = .sdata2:0x801F2648; // type:object size:0x4 data:float +lbl_801F264C = .sdata2:0x801F264C; // type:object size:0x4 data:float +lbl_801F2650 = .sdata2:0x801F2650; // type:object size:0x4 data:float +lbl_801F2654 = .sdata2:0x801F2654; // type:object size:0x4 data:float +lbl_801F2658 = .sdata2:0x801F2658; // type:object size:0x4 data:float +lbl_801F265C = .sdata2:0x801F265C; // type:object size:0x4 data:float +lbl_801F2660 = .sdata2:0x801F2660; // type:object size:0x4 data:4byte +lbl_801F2664 = .sdata2:0x801F2664; // type:object size:0x4 data:4byte +lbl_801F2668 = .sdata2:0x801F2668; // type:object size:0x4 data:float +lbl_801F266C = .sdata2:0x801F266C; // type:object size:0x4 data:float +lbl_801F2670 = .sdata2:0x801F2670; // type:object size:0x4 data:float +lbl_801F2674 = .sdata2:0x801F2674; // type:object size:0x4 data:float +lbl_801F2678 = .sdata2:0x801F2678; // type:object size:0x4 data:float +lbl_801F267C = .sdata2:0x801F267C; // type:object size:0x4 data:float +lbl_801F2680 = .sdata2:0x801F2680; // type:object size:0x4 data:float +lbl_801F2684 = .sdata2:0x801F2684; // type:object size:0x4 data:float +lbl_801F2688 = .sdata2:0x801F2688; // type:object size:0x4 data:float +lbl_801F268C = .sdata2:0x801F268C; // type:object size:0x2 data:2byte +lbl_801F268E = .sdata2:0x801F268E; // type:object size:0x2 data:2byte +lbl_801F2690 = .sdata2:0x801F2690; // type:object size:0x2 data:2byte +lbl_801F2692 = .sdata2:0x801F2692; // type:object size:0x2 data:2byte +lbl_801F2694 = .sdata2:0x801F2694; // type:object size:0x1 data:byte +lbl_801F2695 = .sdata2:0x801F2695; // type:object size:0x1 data:byte +lbl_801F2696 = .sdata2:0x801F2696; // type:object size:0x1 data:byte +lbl_801F2697 = .sdata2:0x801F2697; // type:object size:0x1 data:byte +lbl_801F2698 = .sdata2:0x801F2698; // type:object size:0x1 data:byte +lbl_801F2699 = .sdata2:0x801F2699; // type:object size:0x1 data:byte +lbl_801F269A = .sdata2:0x801F269A; // type:object size:0x1 data:byte +lbl_801F269B = .sdata2:0x801F269B; // type:object size:0x1 data:byte +lbl_801F269C = .sdata2:0x801F269C; // type:object size:0x4 data:float +lbl_801F26A0 = .sdata2:0x801F26A0; // type:object size:0x4 data:float +lbl_801F26A4 = .sdata2:0x801F26A4; // type:object size:0x4 data:float +lbl_801F26A8 = .sdata2:0x801F26A8; // type:object size:0x4 data:float +lbl_801F26AC = .sdata2:0x801F26AC; // type:object size:0x4 data:float +lbl_801F26B0 = .sdata2:0x801F26B0; // type:object size:0x4 data:float +lbl_801F26B8 = .sdata2:0x801F26B8; // type:object size:0x8 data:double +lbl_801F26C0 = .sdata2:0x801F26C0; // type:object size:0x4 data:float +lbl_801F26C4 = .sdata2:0x801F26C4; // type:object size:0x4 data:float +lbl_801F26C8 = .sdata2:0x801F26C8; // type:object size:0x4 data:float +lbl_801F26CC = .sdata2:0x801F26CC; // type:object size:0x4 data:float +lbl_801F26D0 = .sdata2:0x801F26D0; // type:object size:0x8 data:float +winSpeedTbl = .sdata2:0x801F26D8; // type:object size:0x4 scope:local +lbl_801F26DC = .sdata2:0x801F26DC; // type:object size:0x4 data:float +lbl_801F26E0 = .sdata2:0x801F26E0; // type:object size:0x4 data:float +lbl_801F26E4 = .sdata2:0x801F26E4; // type:object size:0x4 data:float +lbl_801F26E8 = .sdata2:0x801F26E8; // type:object size:0x8 data:double +lbl_801F26F0 = .sdata2:0x801F26F0; // type:object size:0x8 data:double +lbl_801F26F8 = .sdata2:0x801F26F8; // type:object size:0x8 data:double +lbl_801F2700 = .sdata2:0x801F2700; // type:object size:0x4 data:float +lbl_801F2704 = .sdata2:0x801F2704; // type:object size:0x4 data:float +lbl_801F2708 = .sdata2:0x801F2708; // type:object size:0x8 data:float +lbl_801F2710 = .sdata2:0x801F2710; // type:object size:0x4 data:float +lbl_801F2714 = .sdata2:0x801F2714; // type:object size:0x4 data:float +lbl_801F2718 = .sdata2:0x801F2718; // type:object size:0x4 data:float +lbl_801F2720 = .sdata2:0x801F2720; // type:object size:0x8 data:double +lbl_801F2728 = .sdata2:0x801F2728; // type:object size:0x8 data:double +lbl_801F2730 = .sdata2:0x801F2730; // type:object size:0x4 data:float +lbl_801F2734 = .sdata2:0x801F2734; // type:object size:0x4 data:float +lbl_801F2738 = .sdata2:0x801F2738; // type:object size:0x4 data:float +lbl_801F273C = .sdata2:0x801F273C; // type:object size:0x4 data:float +lbl_801F2740 = .sdata2:0x801F2740; // type:object size:0x4 data:float +lbl_801F2744 = .sdata2:0x801F2744; // type:object size:0x4 data:float +lbl_801F2748 = .sdata2:0x801F2748; // type:object size:0x4 data:float +lbl_801F274C = .sdata2:0x801F274C; // type:object size:0x4 data:float +lbl_801F2750 = .sdata2:0x801F2750; // type:object size:0x4 data:float +lbl_801F2754 = .sdata2:0x801F2754; // type:object size:0x4 data:float +lbl_801F2758 = .sdata2:0x801F2758; // type:object size:0x4 data:float +lbl_801F275C = .sdata2:0x801F275C; // type:object size:0x4 data:float +lbl_801F2760 = .sdata2:0x801F2760; // type:object size:0x4 data:float +lbl_801F2764 = .sdata2:0x801F2764; // type:object size:0x4 data:float +lbl_801F2768 = .sdata2:0x801F2768; // type:object size:0x4 data:float +lbl_801F2770 = .sdata2:0x801F2770; // type:object size:0x8 data:double +lbl_801F2778 = .sdata2:0x801F2778; // type:object size:0x4 data:float +lbl_801F277C = .sdata2:0x801F277C; // type:object size:0x4 data:float +lbl_801F2780 = .sdata2:0x801F2780; // type:object size:0x1 data:byte +lbl_801F2781 = .sdata2:0x801F2781; // type:object size:0x1 data:byte +lbl_801F2782 = .sdata2:0x801F2782; // type:object size:0x1 data:byte +lbl_801F2783 = .sdata2:0x801F2783; // type:object size:0x1 data:byte +lbl_801F2784 = .sdata2:0x801F2784; // type:object size:0x1 data:byte +lbl_801F2785 = .sdata2:0x801F2785; // type:object size:0x1 data:byte +lbl_801F2786 = .sdata2:0x801F2786; // type:object size:0x1 data:byte +lbl_801F2787 = .sdata2:0x801F2787; // type:object size:0x1 data:byte +lbl_801F2788 = .sdata2:0x801F2788; // type:object size:0x4 data:float +lbl_801F278C = .sdata2:0x801F278C; // type:object size:0x4 data:float +lbl_801F2790 = .sdata2:0x801F2790; // type:object size:0x8 data:double +lbl_801F2798 = .sdata2:0x801F2798; // type:object size:0x8 data:double +lbl_801F27A0 = .sdata2:0x801F27A0; // type:object size:0x8 data:double +lbl_801F27A8 = .sdata2:0x801F27A8; // type:object size:0x4 data:float +lbl_801F27B0 = .sdata2:0x801F27B0; // type:object size:0x8 data:double +lbl_801F27B8 = .sdata2:0x801F27B8; // type:object size:0x4 data:float +lbl_801F27BC = .sdata2:0x801F27BC; // type:object size:0x4 data:float +lbl_801F27C0 = .sdata2:0x801F27C0; // type:object size:0x4 data:float +lbl_801F27C4 = .sdata2:0x801F27C4; // type:object size:0x4 data:float +lbl_801F27C8 = .sdata2:0x801F27C8; // type:object size:0x4 data:float +lbl_801F27CC = .sdata2:0x801F27CC; // type:object size:0x4 data:float +lbl_801F27D0 = .sdata2:0x801F27D0; // type:object size:0x4 data:float +lbl_801F27D4 = .sdata2:0x801F27D4; // type:object size:0x1 data:byte +lbl_801F27D5 = .sdata2:0x801F27D5; // type:object size:0x1 data:byte +lbl_801F27D6 = .sdata2:0x801F27D6; // type:object size:0x1 data:byte +lbl_801F27D7 = .sdata2:0x801F27D7; // type:object size:0x1 data:byte +lbl_801F27D8 = .sdata2:0x801F27D8; // type:object size:0x4 data:float +lbl_801F27DC = .sdata2:0x801F27DC; // type:object size:0x4 data:float +lbl_801F27E0 = .sdata2:0x801F27E0; // type:object size:0x4 data:float +lbl_801F27E4 = .sdata2:0x801F27E4; // type:object size:0x4 data:float +lbl_801F27E8 = .sdata2:0x801F27E8; // type:object size:0x4 data:float +lbl_801F27EC = .sdata2:0x801F27EC; // type:object size:0x4 data:float +lbl_801F27F0 = .sdata2:0x801F27F0; // type:object size:0x4 data:float +lbl_801F27F4 = .sdata2:0x801F27F4; // type:object size:0x4 data:float +lbl_801F27F8 = .sdata2:0x801F27F8; // type:object size:0x4 data:float +lbl_801F27FC = .sdata2:0x801F27FC; // type:object size:0x4 data:float +lbl_801F2800 = .sdata2:0x801F2800; // type:object size:0x4 data:4byte +lbl_801F2804 = .sdata2:0x801F2804; // type:object size:0x4 data:4byte +lbl_801F2808 = .sdata2:0x801F2808; // type:object size:0x4 data:float +lbl_801F2810 = .sdata2:0x801F2810; // type:object size:0x8 data:double +lbl_801F2818 = .sdata2:0x801F2818; // type:object size:0x8 data:double +lbl_801F2820 = .sdata2:0x801F2820; // type:object size:0x4 data:float +lbl_801F2824 = .sdata2:0x801F2824; // type:object size:0x4 data:float +lbl_801F2828 = .sdata2:0x801F2828; // type:object size:0x4 data:float +lbl_801F282C = .sdata2:0x801F282C; // type:object size:0x4 data:float +lbl_801F2830 = .sdata2:0x801F2830; // type:object size:0x4 data:float +lbl_801F2834 = .sdata2:0x801F2834; // type:object size:0x4 data:float +lbl_801F2838 = .sdata2:0x801F2838; // type:object size:0x4 data:float +lbl_801F283C = .sdata2:0x801F283C; // type:object size:0x4 data:float +lbl_801F2840 = .sdata2:0x801F2840; // type:object size:0x4 data:float +lbl_801F2844 = .sdata2:0x801F2844; // type:object size:0x4 data:float +lbl_801F2848 = .sdata2:0x801F2848; // type:object size:0x4 data:float +lbl_801F284C = .sdata2:0x801F284C; // type:object size:0x4 data:float +lbl_801F2850 = .sdata2:0x801F2850; // type:object size:0x4 data:float +lbl_801F2854 = .sdata2:0x801F2854; // type:object size:0x4 data:float +lbl_801F2858 = .sdata2:0x801F2858; // type:object size:0x4 data:float +lbl_801F285C = .sdata2:0x801F285C; // type:object size:0x4 data:float +lbl_801F2860 = .sdata2:0x801F2860; // type:object size:0x4 data:float +lbl_801F2868 = .sdata2:0x801F2868; // type:object size:0x8 data:double +lbl_801F2870 = .sdata2:0x801F2870; // type:object size:0x4 data:float +lbl_801F2874 = .sdata2:0x801F2874; // type:object size:0x4 data:float +lbl_801F2878 = .sdata2:0x801F2878; // type:object size:0x4 data:float +lbl_801F287C = .sdata2:0x801F287C; // type:object size:0x4 data:float +lbl_801F2880 = .sdata2:0x801F2880; // type:object size:0x4 data:float +lbl_801F2884 = .sdata2:0x801F2884; // type:object size:0x4 data:float +lbl_801F2888 = .sdata2:0x801F2888; // type:object size:0x4 data:float +lbl_801F288C = .sdata2:0x801F288C; // type:object size:0x4 data:float +lbl_801F2890 = .sdata2:0x801F2890; // type:object size:0x4 data:float +lbl_801F2894 = .sdata2:0x801F2894; // type:object size:0x4 data:float +lbl_801F2898 = .sdata2:0x801F2898; // type:object size:0x4 data:float +lbl_801F289C = .sdata2:0x801F289C; // type:object size:0x4 data:float +lbl_801F28A0 = .sdata2:0x801F28A0; // type:object size:0x4 data:float +lbl_801F28A8 = .sdata2:0x801F28A8; // type:object size:0x8 data:double +lbl_801F28B0 = .sdata2:0x801F28B0; // type:object size:0x4 data:float +lbl_801F28B4 = .sdata2:0x801F28B4; // type:object size:0x4 data:float +lbl_801F28B8 = .sdata2:0x801F28B8; // type:object size:0x4 data:float +lbl_801F28C0 = .sdata2:0x801F28C0; // type:object size:0x8 data:double +lbl_801F28C8 = .sdata2:0x801F28C8; // type:object size:0x4 data:float +lbl_801F28CC = .sdata2:0x801F28CC; // type:object size:0x4 data:float +lbl_801F28D0 = .sdata2:0x801F28D0; // type:object size:0x8 data:float +lbl_801F28D8 = .sdata2:0x801F28D8; // type:object size:0x4 data:float +lbl_801F28DC = .sdata2:0x801F28DC; // type:object size:0x4 data:4byte +lbl_801F28E0 = .sdata2:0x801F28E0; // type:object size:0x4 data:4byte +lbl_801F28E4 = .sdata2:0x801F28E4; // type:object size:0x4 data:float +lbl_801F28E8 = .sdata2:0x801F28E8; // type:object size:0x4 data:float +lbl_801F28F0 = .sdata2:0x801F28F0; // type:object size:0x8 data:double +lbl_801F28F8 = .sdata2:0x801F28F8; // type:object size:0x8 data:double +lbl_801F2900 = .sdata2:0x801F2900; // type:object size:0x4 data:float +lbl_801F2904 = .sdata2:0x801F2904; // type:object size:0x4 data:float +lbl_801F2908 = .sdata2:0x801F2908; // type:object size:0x4 data:float +lbl_801F290C = .sdata2:0x801F290C; // type:object size:0x4 data:float +lbl_801F2910 = .sdata2:0x801F2910; // type:object size:0x8 data:double +lbl_801F2918 = .sdata2:0x801F2918; // type:object size:0x4 data:float +lbl_801F291C = .sdata2:0x801F291C; // type:object size:0x4 data:float +lbl_801F2920 = .sdata2:0x801F2920; // type:object size:0x4 data:float +lbl_801F2924 = .sdata2:0x801F2924; // type:object size:0x4 data:float +lbl_801F2928 = .sdata2:0x801F2928; // type:object size:0x4 data:float +lbl_801F292C = .sdata2:0x801F292C; // type:object size:0x4 data:float +lbl_801F2930 = .sdata2:0x801F2930; // type:object size:0x4 data:float +lbl_801F2934 = .sdata2:0x801F2934; // type:object size:0x4 data:float +lbl_801F2938 = .sdata2:0x801F2938; // type:object size:0x4 data:float +lbl_801F293C = .sdata2:0x801F293C; // type:object size:0x4 data:float +lbl_801F2940 = .sdata2:0x801F2940; // type:object size:0x4 data:float +lbl_801F2944 = .sdata2:0x801F2944; // type:object size:0x4 data:float +lbl_801F2948 = .sdata2:0x801F2948; // type:object size:0x4 data:float +lbl_801F294C = .sdata2:0x801F294C; // type:object size:0x4 data:4byte +lbl_801F2950 = .sdata2:0x801F2950; // type:object size:0x4 data:4byte +lbl_801F2954 = .sdata2:0x801F2954; // type:object size:0x2 data:2byte +lbl_801F2956 = .sdata2:0x801F2956; // type:object size:0x2 data:2byte +lbl_801F2958 = .sdata2:0x801F2958; // type:object size:0x2 data:2byte +lbl_801F295A = .sdata2:0x801F295A; // type:object size:0x2 data:2byte +lbl_801F295C = .sdata2:0x801F295C; // type:object size:0x4 data:float +lbl_801F2960 = .sdata2:0x801F2960; // type:object size:0x4 data:float +lbl_801F2964 = .sdata2:0x801F2964; // type:object size:0x4 data:float +lbl_801F2968 = .sdata2:0x801F2968; // type:object size:0x4 data:float +lbl_801F296C = .sdata2:0x801F296C; // type:object size:0x4 data:float +lbl_801F2970 = .sdata2:0x801F2970; // type:object size:0x4 data:float +lbl_801F2974 = .sdata2:0x801F2974; // type:object size:0x4 data:float +lbl_801F2978 = .sdata2:0x801F2978; // type:object size:0x4 data:float +lbl_801F297C = .sdata2:0x801F297C; // type:object size:0x4 data:float +lbl_801F2980 = .sdata2:0x801F2980; // type:object size:0x4 data:float +lbl_801F2984 = .sdata2:0x801F2984; // type:object size:0x4 data:float +lbl_801F2988 = .sdata2:0x801F2988; // type:object size:0x4 data:float +lbl_801F298C = .sdata2:0x801F298C; // type:object size:0x4 data:float +lbl_801F2990 = .sdata2:0x801F2990; // type:object size:0x4 data:float +lbl_801F2994 = .sdata2:0x801F2994; // type:object size:0x4 data:float +lbl_801F2998 = .sdata2:0x801F2998; // type:object size:0x4 data:float +lbl_801F299C = .sdata2:0x801F299C; // type:object size:0x4 data:float +lbl_801F29A0 = .sdata2:0x801F29A0; // type:object size:0x4 data:float +lbl_801F29A4 = .sdata2:0x801F29A4; // type:object size:0x4 data:float +lbl_801F29A8 = .sdata2:0x801F29A8; // type:object size:0x4 data:float +lbl_801F29AC = .sdata2:0x801F29AC; // type:object size:0x4 data:float +lbl_801F29B0 = .sdata2:0x801F29B0; // type:object size:0x4 data:float +lbl_801F29B4 = .sdata2:0x801F29B4; // type:object size:0x4 data:float +lbl_801F29B8 = .sdata2:0x801F29B8; // type:object size:0x4 data:float +lbl_801F29BC = .sdata2:0x801F29BC; // type:object size:0x4 data:float +lbl_801F29C0 = .sdata2:0x801F29C0; // type:object size:0x4 data:float +lbl_801F29C4 = .sdata2:0x801F29C4; // type:object size:0x4 data:float +lbl_801F29C8 = .sdata2:0x801F29C8; // type:object size:0x4 data:float +lbl_801F29CC = .sdata2:0x801F29CC; // type:object size:0x4 data:float +lbl_801F29D0 = .sdata2:0x801F29D0; // type:object size:0x4 data:float +lbl_801F29D4 = .sdata2:0x801F29D4; // type:object size:0x4 data:float +lbl_801F29D8 = .sdata2:0x801F29D8; // type:object size:0x4 data:float +lbl_801F29DC = .sdata2:0x801F29DC; // type:object size:0x4 data:float +lbl_801F29E0 = .sdata2:0x801F29E0; // type:object size:0x4 data:float +lbl_801F29E4 = .sdata2:0x801F29E4; // type:object size:0x4 data:float +lbl_801F29E8 = .sdata2:0x801F29E8; // type:object size:0x4 data:float +lbl_801F29EC = .sdata2:0x801F29EC; // type:object size:0x4 data:float +lbl_801F29F0 = .sdata2:0x801F29F0; // type:object size:0x8 data:double +lbl_801F29F8 = .sdata2:0x801F29F8; // type:object size:0x8 data:double +lbl_801F2A00 = .sdata2:0x801F2A00; // type:object size:0x4 data:float +lbl_801F2A04 = .sdata2:0x801F2A04; // type:object size:0x4 data:float +lbl_801F2A08 = .sdata2:0x801F2A08; // type:object size:0x4 data:float +lbl_801F2A0C = .sdata2:0x801F2A0C; // type:object size:0x4 data:float +lbl_801F2A10 = .sdata2:0x801F2A10; // type:object size:0x4 data:float +lbl_801F2A14 = .sdata2:0x801F2A14; // type:object size:0x4 data:float +lbl_801F2A18 = .sdata2:0x801F2A18; // type:object size:0x4 data:float +lbl_801F2A1C = .sdata2:0x801F2A1C; // type:object size:0x4 data:float +lbl_801F2A20 = .sdata2:0x801F2A20; // type:object size:0x4 data:float +lbl_801F2A24 = .sdata2:0x801F2A24; // type:object size:0x4 data:float +lbl_801F2A28 = .sdata2:0x801F2A28; // type:object size:0x4 data:float +lbl_801F2A2C = .sdata2:0x801F2A2C; // type:object size:0x4 data:float +lbl_801F2A30 = .sdata2:0x801F2A30; // type:object size:0x8 data:double +lbl_801F2A38 = .sdata2:0x801F2A38; // type:object size:0x4 data:4byte +lbl_801F2A3C = .sdata2:0x801F2A3C; // type:object size:0x4 data:4byte +lbl_801F2A40 = .sdata2:0x801F2A40; // type:object size:0x1 data:byte +lbl_801F2A41 = .sdata2:0x801F2A41; // type:object size:0x1 data:byte +lbl_801F2A44 = .sdata2:0x801F2A44; // type:object size:0x4 data:float +lbl_801F2A48 = .sdata2:0x801F2A48; // type:object size:0x4 data:float +lbl_801F2A4C = .sdata2:0x801F2A4C; // type:object size:0x4 data:float +lbl_801F2A50 = .sdata2:0x801F2A50; // type:object size:0x4 data:float +lbl_801F2A54 = .sdata2:0x801F2A54; // type:object size:0x4 data:float +lbl_801F2A58 = .sdata2:0x801F2A58; // type:object size:0x4 data:float +lbl_801F2A5C = .sdata2:0x801F2A5C; // type:object size:0x4 data:float +lbl_801F2A60 = .sdata2:0x801F2A60; // type:object size:0x8 data:float +lbl_801F2A68 = .sdata2:0x801F2A68; // type:object size:0x4 data:float +lbl_801F2A6C = .sdata2:0x801F2A6C; // type:object size:0x4 data:float +lbl_801F2A70 = .sdata2:0x801F2A70; // type:object size:0x4 data:float +lbl_801F2A74 = .sdata2:0x801F2A74; // type:object size:0x4 data:float +coinSignMdl = .sdata2:0x801F2A78; // type:object size:0x8 scope:local +lbl_801F2A80 = .sdata2:0x801F2A80; // type:object size:0x4 data:float +lbl_801F2A84 = .sdata2:0x801F2A84; // type:object size:0x4 data:float +lbl_801F2A88 = .sdata2:0x801F2A88; // type:object size:0x4 data:float +lbl_801F2A90 = .sdata2:0x801F2A90; // type:object size:0x8 data:double +lbl_801F2A98 = .sdata2:0x801F2A98; // type:object size:0x8 data:double +lbl_801F2AA0 = .sdata2:0x801F2AA0; // type:object size:0x4 data:float +lbl_801F2AA4 = .sdata2:0x801F2AA4; // type:object size:0x4 data:float +lbl_801F2AA8 = .sdata2:0x801F2AA8; // type:object size:0x4 data:float +lbl_801F2AB0 = .sdata2:0x801F2AB0; // type:object size:0x8 data:double +lbl_801F2AB8 = .sdata2:0x801F2AB8; // type:object size:0x4 data:float +lbl_801F2ABC = .sdata2:0x801F2ABC; // type:object size:0x4 data:float +lbl_801F2AC0 = .sdata2:0x801F2AC0; // type:object size:0x4 data:float +lbl_801F2AC4 = .sdata2:0x801F2AC4; // type:object size:0x4 data:float +lbl_801F2AC8 = .sdata2:0x801F2AC8; // type:object size:0x4 data:float +lbl_801F2ACC = .sdata2:0x801F2ACC; // type:object size:0x4 data:float +lbl_801F2AD0 = .sdata2:0x801F2AD0; // type:object size:0x4 data:float +lbl_801F2AD4 = .sdata2:0x801F2AD4; // type:object size:0x4 data:float +lbl_801F2AD8 = .sdata2:0x801F2AD8; // type:object size:0x8 data:double +lbl_801F2AE0 = .sdata2:0x801F2AE0; // type:object size:0x8 data:double +lbl_801F2AE8 = .sdata2:0x801F2AE8; // type:object size:0x4 data:float +lbl_801F2AF0 = .sdata2:0x801F2AF0; // type:object size:0x8 data:double +lbl_801F2AF8 = .sdata2:0x801F2AF8; // type:object size:0x4 data:float +lbl_801F2AFC = .sdata2:0x801F2AFC; // type:object size:0x4 data:float +lbl_801F2B00 = .sdata2:0x801F2B00; // type:object size:0x4 data:float +lbl_801F2B04 = .sdata2:0x801F2B04; // type:object size:0x4 data:float +lbl_801F2B08 = .sdata2:0x801F2B08; // type:object size:0x4 data:float +lbl_801F2B0C = .sdata2:0x801F2B0C; // type:object size:0x4 data:float +lbl_801F2B10 = .sdata2:0x801F2B10; // type:object size:0x4 data:float +lbl_801F2B14 = .sdata2:0x801F2B14; // type:object size:0x4 data:float +lbl_801F2B18 = .sdata2:0x801F2B18; // type:object size:0x4 data:float +lbl_801F2B1C = .sdata2:0x801F2B1C; // type:object size:0x4 data:float +lbl_801F2B20 = .sdata2:0x801F2B20; // type:object size:0x4 data:float +lbl_801F2B24 = .sdata2:0x801F2B24; // type:object size:0x4 data:float +lbl_801F2B28 = .sdata2:0x801F2B28; // type:object size:0x4 data:float +lbl_801F2B30 = .sdata2:0x801F2B30; // type:object size:0x8 data:double +lbl_801F2B38 = .sdata2:0x801F2B38; // type:object size:0x8 data:double +lbl_801F2B40 = .sdata2:0x801F2B40; // type:object size:0x8 data:float +lbl_801F2B48 = .sdata2:0x801F2B48; // type:object size:0x4 data:float +lbl_801F2B4C = .sdata2:0x801F2B4C; // type:object size:0x4 data:float +lbl_801F2B50 = .sdata2:0x801F2B50; // type:object size:0x4 data:float +lbl_801F2B54 = .sdata2:0x801F2B54; // type:object size:0x4 data:float +lbl_801F2B58 = .sdata2:0x801F2B58; // type:object size:0x4 data:float +lbl_801F2B5C = .sdata2:0x801F2B5C; // type:object size:0x4 data:float +lbl_801F2B60 = .sdata2:0x801F2B60; // type:object size:0x4 data:float +lbl_801F2B64 = .sdata2:0x801F2B64; // type:object size:0x4 data:float +lbl_801F2B68 = .sdata2:0x801F2B68; // type:object size:0x4 data:float +lbl_801F2B6C = .sdata2:0x801F2B6C; // type:object size:0x4 data:float +lbl_801F2B70 = .sdata2:0x801F2B70; // type:object size:0x4 data:float +lbl_801F2B74 = .sdata2:0x801F2B74; // type:object size:0x4 data:float +lbl_801F2B78 = .sdata2:0x801F2B78; // type:object size:0x4 data:float +lbl_801F2B7C = .sdata2:0x801F2B7C; // type:object size:0x4 data:float +lbl_801F2B80 = .sdata2:0x801F2B80; // type:object size:0x4 data:float +lbl_801F2B84 = .sdata2:0x801F2B84; // type:object size:0x4 data:float +lbl_801F2B88 = .sdata2:0x801F2B88; // type:object size:0x8 data:double +lbl_801F2B90 = .sdata2:0x801F2B90; // type:object size:0x4 data:float +lbl_801F2B94 = .sdata2:0x801F2B94; // type:object size:0x4 data:float +lbl_801F2B98 = .sdata2:0x801F2B98; // type:object size:0x4 data:float +lbl_801F2B9C = .sdata2:0x801F2B9C; // type:object size:0x4 data:float +lbl_801F2BA0 = .sdata2:0x801F2BA0; // type:object size:0x4 data:float +lbl_801F2BA4 = .sdata2:0x801F2BA4; // type:object size:0x4 data:float +lbl_801F2BA8 = .sdata2:0x801F2BA8; // type:object size:0x4 data:float +lbl_801F2BAC = .sdata2:0x801F2BAC; // type:object size:0x4 data:float +lbl_801F2BB0 = .sdata2:0x801F2BB0; // type:object size:0x8 data:double +lbl_801F2BB8 = .sdata2:0x801F2BB8; // type:object size:0x8 data:double +lbl_801F2BC0 = .sdata2:0x801F2BC0; // type:object size:0x4 data:float +lbl_801F2BC8 = .sdata2:0x801F2BC8; // type:object size:0x8 data:double +lbl_801F2BD0 = .sdata2:0x801F2BD0; // type:object size:0x8 data:float +boxOfs = .sdata2:0x801F2BD8; // type:object size:0x8 scope:local +lbl_801F2BE0 = .sdata2:0x801F2BE0; // type:object size:0x4 data:float +lbl_801F2BE4 = .sdata2:0x801F2BE4; // type:object size:0x4 data:float +lbl_801F2BE8 = .sdata2:0x801F2BE8; // type:object size:0x4 data:float +lbl_801F2BEC = .sdata2:0x801F2BEC; // type:object size:0x4 data:float +lbl_801F2BF0 = .sdata2:0x801F2BF0; // type:object size:0x4 data:float +lbl_801F2BF4 = .sdata2:0x801F2BF4; // type:object size:0x4 data:float +lbl_801F2BF8 = .sdata2:0x801F2BF8; // type:object size:0x8 data:double +lbl_801F2C00 = .sdata2:0x801F2C00; // type:object size:0x8 data:double +lbl_801F2C08 = .sdata2:0x801F2C08; // type:object size:0x8 data:double +lbl_801F2C10 = .sdata2:0x801F2C10; // type:object size:0x4 data:float +lbl_801F2C14 = .sdata2:0x801F2C14; // type:object size:0x4 data:float +lbl_801F2C18 = .sdata2:0x801F2C18; // type:object size:0x4 data:float +lbl_801F2C1C = .sdata2:0x801F2C1C; // type:object size:0x4 data:4byte +lbl_801F2C20 = .sdata2:0x801F2C20; // type:object size:0x4 data:4byte +lbl_801F2C24 = .sdata2:0x801F2C24; // type:object size:0x4 data:float +lbl_801F2C28 = .sdata2:0x801F2C28; // type:object size:0x4 data:float +lbl_801F2C2C = .sdata2:0x801F2C2C; // type:object size:0x4 data:float +lbl_801F2C30 = .sdata2:0x801F2C30; // type:object size:0x4 data:float +lbl_801F2C34 = .sdata2:0x801F2C34; // type:object size:0x4 data:4byte +lbl_801F2C38 = .sdata2:0x801F2C38; // type:object size:0x4 data:4byte +lbl_801F2C3C = .sdata2:0x801F2C3C; // type:object size:0x4 data:float +lbl_801F2C40 = .sdata2:0x801F2C40; // type:object size:0x4 data:float +lbl_801F2C44 = .sdata2:0x801F2C44; // type:object size:0x4 data:float +lbl_801F2C48 = .sdata2:0x801F2C48; // type:object size:0x4 data:float +lbl_801F2C4C = .sdata2:0x801F2C4C; // type:object size:0x4 data:float +lbl_801F2C50 = .sdata2:0x801F2C50; // type:object size:0x8 data:double +lbl_801F2C58 = .sdata2:0x801F2C58; // type:object size:0x4 data:float +lbl_801F2C60 = .sdata2:0x801F2C60; // type:object size:0x8 data:double +lbl_801F2C68 = .sdata2:0x801F2C68; // type:object size:0x8 data:double +lbl_801F2C70 = .sdata2:0x801F2C70; // type:object size:0x8 data:double +lbl_801F2C78 = .sdata2:0x801F2C78; // type:object size:0x4 data:float +lbl_801F2C7C = .sdata2:0x801F2C7C; // type:object size:0x4 data:float +lbl_801F2C80 = .sdata2:0x801F2C80; // type:object size:0x4 data:float +lbl_801F2C84 = .sdata2:0x801F2C84; // type:object size:0x4 data:float +lbl_801F2C88 = .sdata2:0x801F2C88; // type:object size:0x4 data:float +lbl_801F2C8C = .sdata2:0x801F2C8C; // type:object size:0x4 data:float +lbl_801F2C90 = .sdata2:0x801F2C90; // type:object size:0x4 data:float +lbl_801F2C94 = .sdata2:0x801F2C94; // type:object size:0x4 data:float +lbl_801F2C98 = .sdata2:0x801F2C98; // type:object size:0x4 data:float +lbl_801F2C9C = .sdata2:0x801F2C9C; // type:object size:0x4 data:float +lbl_801F2CA0 = .sdata2:0x801F2CA0; // type:object size:0x4 data:float +lbl_801F2CA8 = .sdata2:0x801F2CA8; // type:object size:0x8 data:double +lbl_801F2CB0 = .sdata2:0x801F2CB0; // type:object size:0x4 data:float +lbl_801F2CB4 = .sdata2:0x801F2CB4; // type:object size:0x4 data:float +lbl_801F2CB8 = .sdata2:0x801F2CB8; // type:object size:0x4 data:float +lbl_801F2CBC = .sdata2:0x801F2CBC; // type:object size:0x4 data:float +lbl_801F2CC0 = .sdata2:0x801F2CC0; // type:object size:0x4 data:float +lbl_801F2CC4 = .sdata2:0x801F2CC4; // type:object size:0x4 data:float +lbl_801F2CC8 = .sdata2:0x801F2CC8; // type:object size:0x4 data:float +lbl_801F2CCC = .sdata2:0x801F2CCC; // type:object size:0x4 data:float +lbl_801F2CD0 = .sdata2:0x801F2CD0; // type:object size:0x4 data:float +lbl_801F2CD4 = .sdata2:0x801F2CD4; // type:object size:0x4 data:float +lbl_801F2CD8 = .sdata2:0x801F2CD8; // type:object size:0x4 data:float +lbl_801F2CDC = .sdata2:0x801F2CDC; // type:object size:0x4 data:float +lbl_801F2CE0 = .sdata2:0x801F2CE0; // type:object size:0x4 data:float +lbl_801F2CE4 = .sdata2:0x801F2CE4; // type:object size:0x4 data:float +lbl_801F2CE8 = .sdata2:0x801F2CE8; // type:object size:0x4 data:float +lbl_801F2CEC = .sdata2:0x801F2CEC; // type:object size:0x4 data:float +lbl_801F2CF0 = .sdata2:0x801F2CF0; // type:object size:0x4 data:float +lbl_801F2CF4 = .sdata2:0x801F2CF4; // type:object size:0x4 data:float +lbl_801F2CF8 = .sdata2:0x801F2CF8; // type:object size:0x8 data:float +lbl_801F2D00 = .sdata2:0x801F2D00; // type:object size:0x4 data:float +lbl_801F2D04 = .sdata2:0x801F2D04; // type:object size:0x4 data:float +lbl_801F2D08 = .sdata2:0x801F2D08; // type:object size:0x4 data:float +lbl_801F2D0C = .sdata2:0x801F2D0C; // type:object size:0x4 data:float +lbl_801F2D10 = .sdata2:0x801F2D10; // type:object size:0x4 data:float +lbl_801F2D14 = .sdata2:0x801F2D14; // type:object size:0x4 data:float +lbl_801F2D18 = .sdata2:0x801F2D18; // type:object size:0x4 data:float +lbl_801F2D1C = .sdata2:0x801F2D1C; // type:object size:0x4 data:float +lbl_801F2D20 = .sdata2:0x801F2D20; // type:object size:0x4 data:float +lbl_801F2D24 = .sdata2:0x801F2D24; // type:object size:0x4 data:float +lbl_801F2D28 = .sdata2:0x801F2D28; // type:object size:0x4 data:float +lbl_801F2D2C = .sdata2:0x801F2D2C; // type:object size:0x4 data:float +lbl_801F2D30 = .sdata2:0x801F2D30; // type:object size:0x4 data:float +lbl_801F2D34 = .sdata2:0x801F2D34; // type:object size:0x4 data:float +lbl_801F2D38 = .sdata2:0x801F2D38; // type:object size:0x8 data:double +lbl_801F2D40 = .sdata2:0x801F2D40; // type:object size:0x8 data:double +lbl_801F2D48 = .sdata2:0x801F2D48; // type:object size:0x4 data:float +lbl_801F2D50 = .sdata2:0x801F2D50; // type:object size:0x8 data:double +lbl_801F2D58 = .sdata2:0x801F2D58; // type:object size:0x8 data:double +lbl_801F2D60 = .sdata2:0x801F2D60; // type:object size:0x8 data:double +lbl_801F2D68 = .sdata2:0x801F2D68; // type:object size:0x4 data:float +lbl_801F2D70 = .sdata2:0x801F2D70; // type:object size:0x8 data:double +lbl_801F2D78 = .sdata2:0x801F2D78; // type:object size:0x4 data:float +lbl_801F2D7C = .sdata2:0x801F2D7C; // type:object size:0x4 data:float +lbl_801F2D80 = .sdata2:0x801F2D80; // type:object size:0x4 data:float +lbl_801F2D84 = .sdata2:0x801F2D84; // type:object size:0x4 data:float +lbl_801F2D88 = .sdata2:0x801F2D88; // type:object size:0x4 data:float +lbl_801F2D8C = .sdata2:0x801F2D8C; // type:object size:0x4 data:float +lbl_801F2D90 = .sdata2:0x801F2D90; // type:object size:0x4 data:float +lbl_801F2D94 = .sdata2:0x801F2D94; // type:object size:0x4 data:float +lbl_801F2D98 = .sdata2:0x801F2D98; // type:object size:0x4 data:float +lbl_801F2D9C = .sdata2:0x801F2D9C; // type:object size:0x4 data:float +lbl_801F2DA0 = .sdata2:0x801F2DA0; // type:object size:0x4 data:float +lbl_801F2DA4 = .sdata2:0x801F2DA4; // type:object size:0x4 data:float +lbl_801F2DA8 = .sdata2:0x801F2DA8; // type:object size:0x8 data:float +lbl_801F2DB0 = .sdata2:0x801F2DB0; // type:object size:0x4 data:float +lbl_801F2DB4 = .sdata2:0x801F2DB4; // type:object size:0x4 data:float +lbl_801F2DB8 = .sdata2:0x801F2DB8; // type:object size:0x4 data:float +lbl_801F2DBC = .sdata2:0x801F2DBC; // type:object size:0x4 data:float +lbl_801F2DC0 = .sdata2:0x801F2DC0; // type:object size:0x4 data:float +lbl_801F2DC4 = .sdata2:0x801F2DC4; // type:object size:0x4 data:float +lbl_801F2DC8 = .sdata2:0x801F2DC8; // type:object size:0x4 data:float +lbl_801F2DCC = .sdata2:0x801F2DCC; // type:object size:0x4 data:float +lbl_801F2DD0 = .sdata2:0x801F2DD0; // type:object size:0x4 data:float +lbl_801F2DD8 = .sdata2:0x801F2DD8; // type:object size:0x8 data:double +lbl_801F2DE0 = .sdata2:0x801F2DE0; // type:object size:0x8 data:double +lbl_801F2DE8 = .sdata2:0x801F2DE8; // type:object size:0x8 data:double +lbl_801F2DF0 = .sdata2:0x801F2DF0; // type:object size:0x4 data:float +lbl_801F2DF4 = .sdata2:0x801F2DF4; // type:object size:0x4 data:float +lbl_801F2DF8 = .sdata2:0x801F2DF8; // type:object size:0x4 data:float +lbl_801F2DFC = .sdata2:0x801F2DFC; // type:object size:0x4 data:float +lbl_801F2E00 = .sdata2:0x801F2E00; // type:object size:0x8 data:double +lbl_801F2E08 = .sdata2:0x801F2E08; // type:object size:0x8 data:double +lbl_801F2E10 = .sdata2:0x801F2E10; // type:object size:0x4 data:float +lbl_801F2E14 = .sdata2:0x801F2E14; // type:object size:0x4 data:float +lbl_801F2E18 = .sdata2:0x801F2E18; // type:object size:0x4 data:float +lbl_801F2E1C = .sdata2:0x801F2E1C; // type:object size:0x4 data:float +lbl_801F2E20 = .sdata2:0x801F2E20; // type:object size:0x4 data:float +lbl_801F2E24 = .sdata2:0x801F2E24; // type:object size:0x4 data:float +lbl_801F2E28 = .sdata2:0x801F2E28; // type:object size:0x4 data:float +lbl_801F2E30 = .sdata2:0x801F2E30; // type:object size:0x8 data:double +lbl_801F2E38 = .sdata2:0x801F2E38; // type:object size:0x4 data:float +lbl_801F2E3C = .sdata2:0x801F2E3C; // type:object size:0x4 data:float +lbl_801F2E40 = .sdata2:0x801F2E40; // type:object size:0x4 data:float +lbl_801F2E44 = .sdata2:0x801F2E44; // type:object size:0x4 data:float +lbl_801F2E48 = .sdata2:0x801F2E48; // type:object size:0x4 data:float +lbl_801F2E4C = .sdata2:0x801F2E4C; // type:object size:0x4 data:float +lbl_801F2E50 = .sdata2:0x801F2E50; // type:object size:0x4 data:float +lbl_801F2E54 = .sdata2:0x801F2E54; // type:object size:0x4 data:float +lbl_801F2E58 = .sdata2:0x801F2E58; // type:object size:0x4 data:float +lbl_801F2E5C = .sdata2:0x801F2E5C; // type:object size:0x4 data:float +lbl_801F2E60 = .sdata2:0x801F2E60; // type:object size:0x4 data:float +lbl_801F2E64 = .sdata2:0x801F2E64; // type:object size:0x4 data:float +lbl_801F2E68 = .sdata2:0x801F2E68; // type:object size:0x4 data:float +lbl_801F2E6C = .sdata2:0x801F2E6C; // type:object size:0x4 data:float +lbl_801F2E70 = .sdata2:0x801F2E70; // type:object size:0x4 data:float +lbl_801F2E74 = .sdata2:0x801F2E74; // type:object size:0x4 data:float +lbl_801F2E78 = .sdata2:0x801F2E78; // type:object size:0x4 data:float +lbl_801F2E7C = .sdata2:0x801F2E7C; // type:object size:0x4 data:float +lbl_801F2E80 = .sdata2:0x801F2E80; // type:object size:0x4 data:float +lbl_801F2E84 = .sdata2:0x801F2E84; // type:object size:0x4 data:float +lbl_801F2E88 = .sdata2:0x801F2E88; // type:object size:0x4 data:float +lbl_801F2E8C = .sdata2:0x801F2E8C; // type:object size:0x4 data:float +lbl_801F2E90 = .sdata2:0x801F2E90; // type:object size:0x4 data:float +lbl_801F2E94 = .sdata2:0x801F2E94; // type:object size:0x4 data:float +lbl_801F2E98 = .sdata2:0x801F2E98; // type:object size:0x4 data:float +lbl_801F2E9C = .sdata2:0x801F2E9C; // type:object size:0x4 data:float +lbl_801F2EA0 = .sdata2:0x801F2EA0; // type:object size:0x8 data:double +lbl_801F2EA8 = .sdata2:0x801F2EA8; // type:object size:0x8 data:double +lbl_801F2EB0 = .sdata2:0x801F2EB0; // type:object size:0x8 data:double +lbl_801F2EB8 = .sdata2:0x801F2EB8; // type:object size:0x4 data:float +lbl_801F2EBC = .sdata2:0x801F2EBC; // type:object size:0x4 data:float +lbl_801F2EC0 = .sdata2:0x801F2EC0; // type:object size:0x4 data:float +lbl_801F2EC4 = .sdata2:0x801F2EC4; // type:object size:0x4 data:float +lbl_801F2EC8 = .sdata2:0x801F2EC8; // type:object size:0x4 data:float +lbl_801F2ECC = .sdata2:0x801F2ECC; // type:object size:0x4 data:float +lbl_801F2ED0 = .sdata2:0x801F2ED0; // type:object size:0x4 data:float +lbl_801F2ED8 = .sdata2:0x801F2ED8; // type:object size:0x8 data:double +lbl_801F2EE0 = .sdata2:0x801F2EE0; // type:object size:0x8 data:double +lbl_801F2EE8 = .sdata2:0x801F2EE8; // type:object size:0x8 data:double +lbl_801F2EF0 = .sdata2:0x801F2EF0; // type:object size:0x4 data:float +lbl_801F2EF4 = .sdata2:0x801F2EF4; // type:object size:0x4 data:float +lbl_801F2EF8 = .sdata2:0x801F2EF8; // type:object size:0x4 data:float +lbl_801F2EFC = .sdata2:0x801F2EFC; // type:object size:0x4 data:float +lbl_801F2F00 = .sdata2:0x801F2F00; // type:object size:0x4 data:float +lbl_801F2F04 = .sdata2:0x801F2F04; // type:object size:0x4 data:float +lbl_801F2F08 = .sdata2:0x801F2F08; // type:object size:0x4 data:float +lbl_801F2F0C = .sdata2:0x801F2F0C; // type:object size:0x4 data:float +lbl_801F2F10 = .sdata2:0x801F2F10; // type:object size:0x4 data:float +lbl_801F2F14 = .sdata2:0x801F2F14; // type:object size:0x4 data:float +lbl_801F2F18 = .sdata2:0x801F2F18; // type:object size:0x8 data:double +lbl_801F2F20 = .sdata2:0x801F2F20; // type:object size:0x4 data:float +lbl_801F2F24 = .sdata2:0x801F2F24; // type:object size:0x4 data:float +lbl_801F2F28 = .sdata2:0x801F2F28; // type:object size:0x4 data:float +lbl_801F2F2C = .sdata2:0x801F2F2C; // type:object size:0x4 data:float +lbl_801F2F30 = .sdata2:0x801F2F30; // type:object size:0x4 data:float +lbl_801F2F34 = .sdata2:0x801F2F34; // type:object size:0x4 data:float +lbl_801F2F38 = .sdata2:0x801F2F38; // type:object size:0x4 data:float +lbl_801F2F3C = .sdata2:0x801F2F3C; // type:object size:0x4 data:float +lbl_801F2F40 = .sdata2:0x801F2F40; // type:object size:0x4 data:float +lbl_801F2F44 = .sdata2:0x801F2F44; // type:object size:0x4 data:float +lbl_801F2F48 = .sdata2:0x801F2F48; // type:object size:0x4 data:float +lbl_801F2F4C = .sdata2:0x801F2F4C; // type:object size:0x4 data:float +lbl_801F2F50 = .sdata2:0x801F2F50; // type:object size:0x4 data:float +lbl_801F2F54 = .sdata2:0x801F2F54; // type:object size:0x4 data:float +lbl_801F2F58 = .sdata2:0x801F2F58; // type:object size:0x4 data:float +lbl_801F2F5C = .sdata2:0x801F2F5C; // type:object size:0x4 data:float +lbl_801F2F60 = .sdata2:0x801F2F60; // type:object size:0x4 data:float +lbl_801F2F64 = .sdata2:0x801F2F64; // type:object size:0x4 data:float +lbl_801F2F68 = .sdata2:0x801F2F68; // type:object size:0x4 data:float +lbl_801F2F6C = .sdata2:0x801F2F6C; // type:object size:0x4 data:float +lbl_801F2F70 = .sdata2:0x801F2F70; // type:object size:0x4 data:float +lbl_801F2F74 = .sdata2:0x801F2F74; // type:object size:0x4 data:float +lbl_801F2F78 = .sdata2:0x801F2F78; // type:object size:0x4 data:float +lbl_801F2F7C = .sdata2:0x801F2F7C; // type:object size:0x4 data:float +lbl_801F2F80 = .sdata2:0x801F2F80; // type:object size:0x8 data:double +lbl_801F2F88 = .sdata2:0x801F2F88; // type:object size:0x8 data:double +lbl_801F2F90 = .sdata2:0x801F2F90; // type:object size:0x4 data:float +lbl_801F2F94 = .sdata2:0x801F2F94; // type:object size:0x4 data:float +lbl_801F2F98 = .sdata2:0x801F2F98; // type:object size:0x4 data:float +lbl_801F2F9C = .sdata2:0x801F2F9C; // type:object size:0x4 data:float +lbl_801F2FA0 = .sdata2:0x801F2FA0; // type:object size:0x4 data:float +lbl_801F2FA8 = .sdata2:0x801F2FA8; // type:object size:0x8 data:double +lbl_801F2FB0 = .sdata2:0x801F2FB0; // type:object size:0x4 data:float +lbl_801F2FB4 = .sdata2:0x801F2FB4; // type:object size:0x4 data:float +lbl_801F2FB8 = .sdata2:0x801F2FB8; // type:object size:0x4 data:float +lbl_801F2FBC = .sdata2:0x801F2FBC; // type:object size:0x4 data:float +lbl_801F2FC0 = .sdata2:0x801F2FC0; // type:object size:0x4 data:float +lbl_801F2FC4 = .sdata2:0x801F2FC4; // type:object size:0x4 data:float +lbl_801F2FC8 = .sdata2:0x801F2FC8; // type:object size:0x4 data:float +lbl_801F2FCC = .sdata2:0x801F2FCC; // type:object size:0x4 data:float +lbl_801F2FD0 = .sdata2:0x801F2FD0; // type:object size:0x4 data:float +lbl_801F2FD4 = .sdata2:0x801F2FD4; // type:object size:0x4 data:float +lbl_801F2FD8 = .sdata2:0x801F2FD8; // type:object size:0x4 data:float +lbl_801F2FE0 = .sdata2:0x801F2FE0; // type:object size:0x8 data:double +lbl_801F2FE8 = .sdata2:0x801F2FE8; // type:object size:0x4 data:float +lbl_801F2FEC = .sdata2:0x801F2FEC; // type:object size:0x4 data:float +lbl_801F2FF0 = .sdata2:0x801F2FF0; // type:object size:0x4 data:float +lbl_801F2FF4 = .sdata2:0x801F2FF4; // type:object size:0x4 data:float +lbl_801F2FF8 = .sdata2:0x801F2FF8; // type:object size:0x4 data:float +lbl_801F2FFC = .sdata2:0x801F2FFC; // type:object size:0x4 data:float +lbl_801F3000 = .sdata2:0x801F3000; // type:object size:0x4 data:float +lbl_801F3004 = .sdata2:0x801F3004; // type:object size:0x4 data:float +lbl_801F3008 = .sdata2:0x801F3008; // type:object size:0x4 data:float +lbl_801F300C = .sdata2:0x801F300C; // type:object size:0x4 data:float +lbl_801F3010 = .sdata2:0x801F3010; // type:object size:0x4 data:float +lbl_801F3014 = .sdata2:0x801F3014; // type:object size:0x4 data:float +lbl_801F3018 = .sdata2:0x801F3018; // type:object size:0x4 data:float +lbl_801F301C = .sdata2:0x801F301C; // type:object size:0x4 data:float +lbl_801F3020 = .sdata2:0x801F3020; // type:object size:0x4 data:float +lbl_801F3024 = .sdata2:0x801F3024; // type:object size:0x4 data:float +lbl_801F3028 = .sdata2:0x801F3028; // type:object size:0x4 data:float +lbl_801F302C = .sdata2:0x801F302C; // type:object size:0x4 data:float +lbl_801F3030 = .sdata2:0x801F3030; // type:object size:0x4 data:float +lbl_801F3038 = .sdata2:0x801F3038; // type:object size:0x8 data:double +lbl_801F3040 = .sdata2:0x801F3040; // type:object size:0x4 data:float +lbl_801F3048 = .sdata2:0x801F3048; // type:object size:0x8 data:double +lbl_801F3050 = .sdata2:0x801F3050; // type:object size:0x4 data:float +lbl_801F3054 = .sdata2:0x801F3054; // type:object size:0x4 data:float +lbl_801F3058 = .sdata2:0x801F3058; // type:object size:0x4 data:float +lbl_801F305C = .sdata2:0x801F305C; // type:object size:0x4 data:float +lbl_801F3060 = .sdata2:0x801F3060; // type:object size:0x4 data:float +lbl_801F3068 = .sdata2:0x801F3068; // type:object size:0x8 data:double +lbl_801F3070 = .sdata2:0x801F3070; // type:object size:0x4 data:float +lbl_801F3074 = .sdata2:0x801F3074; // type:object size:0x4 data:float +lbl_801F3078 = .sdata2:0x801F3078; // type:object size:0x4 data:float +lbl_801F307C = .sdata2:0x801F307C; // type:object size:0x4 data:float +lbl_801F3080 = .sdata2:0x801F3080; // type:object size:0x4 data:float +lbl_801F3084 = .sdata2:0x801F3084; // type:object size:0x4 data:float +lbl_801F3088 = .sdata2:0x801F3088; // type:object size:0x4 data:float +lbl_801F308C = .sdata2:0x801F308C; // type:object size:0x4 data:float +lbl_801F3090 = .sdata2:0x801F3090; // type:object size:0x4 data:float +lbl_801F3094 = .sdata2:0x801F3094; // type:object size:0x4 data:float +lbl_801F3098 = .sdata2:0x801F3098; // type:object size:0x4 data:float +lbl_801F309C = .sdata2:0x801F309C; // type:object size:0x4 data:float +lbl_801F30A0 = .sdata2:0x801F30A0; // type:object size:0x1 data:byte +lbl_801F30A1 = .sdata2:0x801F30A1; // type:object size:0x1 data:byte +lbl_801F30A2 = .sdata2:0x801F30A2; // type:object size:0x1 data:byte +lbl_801F30A3 = .sdata2:0x801F30A3; // type:object size:0x1 data:byte +lbl_801F30A4 = .sdata2:0x801F30A4; // type:object size:0x4 data:float +lbl_801F30A8 = .sdata2:0x801F30A8; // type:object size:0x4 data:float +lbl_801F30AC = .sdata2:0x801F30AC; // type:object size:0x4 data:float +lbl_801F30B0 = .sdata2:0x801F30B0; // type:object size:0x4 data:float +lbl_801F30B4 = .sdata2:0x801F30B4; // type:object size:0x4 data:float +lbl_801F30B8 = .sdata2:0x801F30B8; // type:object size:0x8 data:double +lbl_801F30C0 = .sdata2:0x801F30C0; // type:object size:0x8 data:double +lbl_801F30C8 = .sdata2:0x801F30C8; // type:object size:0x4 data:float +lbl_801F30CC = .sdata2:0x801F30CC; // type:object size:0x4 data:float +lbl_801F30D0 = .sdata2:0x801F30D0; // type:object size:0x4 data:float +lbl_801F30D4 = .sdata2:0x801F30D4; // type:object size:0x4 data:float +lbl_801F30D8 = .sdata2:0x801F30D8; // type:object size:0x4 data:float +lbl_801F30DC = .sdata2:0x801F30DC; // type:object size:0x4 data:float +lbl_801F30E0 = .sdata2:0x801F30E0; // type:object size:0x8 data:double +lbl_801F30E8 = .sdata2:0x801F30E8; // type:object size:0x4 data:float +lbl_801F30EC = .sdata2:0x801F30EC; // type:object size:0x4 data:float +lbl_801F30F0 = .sdata2:0x801F30F0; // type:object size:0x8 data:double +lbl_801F30F8 = .sdata2:0x801F30F8; // type:object size:0x8 data:float +lbl_801F3100 = .sdata2:0x801F3100; // type:object size:0x4 data:float +lbl_801F3104 = .sdata2:0x801F3104; // type:object size:0x4 data:float +lbl_801F3108 = .sdata2:0x801F3108; // type:object size:0x4 data:float +lbl_801F310C = .sdata2:0x801F310C; // type:object size:0x4 data:float +lbl_801F3110 = .sdata2:0x801F3110; // type:object size:0x4 data:float +lbl_801F3114 = .sdata2:0x801F3114; // type:object size:0x4 data:float +lbl_801F3118 = .sdata2:0x801F3118; // type:object size:0x4 data:float +lbl_801F311C = .sdata2:0x801F311C; // type:object size:0x4 data:float +lbl_801F3120 = .sdata2:0x801F3120; // type:object size:0x4 data:float +lbl_801F3124 = .sdata2:0x801F3124; // type:object size:0x4 data:float +lbl_801F3128 = .sdata2:0x801F3128; // type:object size:0x2 data:2byte +lbl_801F312A = .sdata2:0x801F312A; // type:object size:0x2 data:2byte +lbl_801F312C = .sdata2:0x801F312C; // type:object size:0x2 data:2byte +lbl_801F3130 = .sdata2:0x801F3130; // type:object size:0x4 data:float +lbl_801F3134 = .sdata2:0x801F3134; // type:object size:0x4 data:float +lbl_801F3138 = .sdata2:0x801F3138; // type:object size:0x4 data:float +lbl_801F313C = .sdata2:0x801F313C; // type:object size:0x4 data:float +lbl_801F3140 = .sdata2:0x801F3140; // type:object size:0x4 data:float +lbl_801F3144 = .sdata2:0x801F3144; // type:object size:0x4 data:float +lbl_801F3148 = .sdata2:0x801F3148; // type:object size:0x4 data:float +lbl_801F314C = .sdata2:0x801F314C; // type:object size:0x4 data:float +lbl_801F3150 = .sdata2:0x801F3150; // type:object size:0x8 data:double +lbl_801F3158 = .sdata2:0x801F3158; // type:object size:0x8 data:double +lbl_801F3160 = .sdata2:0x801F3160; // type:object size:0x8 data:double +lbl_801F3168 = .sdata2:0x801F3168; // type:object size:0x4 data:float +lbl_801F316C = .sdata2:0x801F316C; // type:object size:0x4 data:float +lbl_801F3170 = .sdata2:0x801F3170; // type:object size:0x4 data:float +lbl_801F3174 = .sdata2:0x801F3174; // type:object size:0x4 data:float +lbl_801F3178 = .sdata2:0x801F3178; // type:object size:0x4 data:float +lbl_801F317C = .sdata2:0x801F317C; // type:object size:0x4 data:float +lbl_801F3180 = .sdata2:0x801F3180; // type:object size:0x4 data:float +lbl_801F3184 = .sdata2:0x801F3184; // type:object size:0x4 data:float +lbl_801F3188 = .sdata2:0x801F3188; // type:object size:0x4 data:float +lbl_801F3190 = .sdata2:0x801F3190; // type:object size:0x8 data:double +lbl_801F3198 = .sdata2:0x801F3198; // type:object size:0x1 data:byte +lbl_801F3199 = .sdata2:0x801F3199; // type:object size:0x1 data:byte +lbl_801F319A = .sdata2:0x801F319A; // type:object size:0x1 data:byte +lbl_801F319C = .sdata2:0x801F319C; // type:object size:0x4 data:float +lbl_801F31A0 = .sdata2:0x801F31A0; // type:object size:0x8 data:double +lbl_801F31A8 = .sdata2:0x801F31A8; // type:object size:0x8 data:float +battleCoinTbl = .sdata2:0x801F31B0; // type:object size:0x5 scope:local +lbl_801F31B8 = .sdata2:0x801F31B8; // type:object size:0x4 data:float +lbl_801F31BC = .sdata2:0x801F31BC; // type:object size:0x4 data:float +lbl_801F31C0 = .sdata2:0x801F31C0; // type:object size:0x4 data:float +lbl_801F31C4 = .sdata2:0x801F31C4; // type:object size:0x4 data:float +lbl_801F31C8 = .sdata2:0x801F31C8; // type:object size:0x4 data:float +lbl_801F31CC = .sdata2:0x801F31CC; // type:object size:0x4 data:float +lbl_801F31D0 = .sdata2:0x801F31D0; // type:object size:0x4 data:float +lbl_801F31D4 = .sdata2:0x801F31D4; // type:object size:0x4 data:float +lbl_801F31D8 = .sdata2:0x801F31D8; // type:object size:0x4 data:float +lbl_801F31DC = .sdata2:0x801F31DC; // type:object size:0x4 data:float +lbl_801F31E0 = .sdata2:0x801F31E0; // type:object size:0x4 data:float +lbl_801F31E4 = .sdata2:0x801F31E4; // type:object size:0x4 data:float +lbl_801F31E8 = .sdata2:0x801F31E8; // type:object size:0x4 data:float +lbl_801F31EC = .sdata2:0x801F31EC; // type:object size:0x4 data:float +lbl_801F31F0 = .sdata2:0x801F31F0; // type:object size:0x4 data:float +lbl_801F31F4 = .sdata2:0x801F31F4; // type:object size:0x4 data:float +lbl_801F31F8 = .sdata2:0x801F31F8; // type:object size:0x4 data:float +lbl_801F31FC = .sdata2:0x801F31FC; // type:object size:0x4 data:float +lbl_801F3200 = .sdata2:0x801F3200; // type:object size:0x4 data:float +lbl_801F3204 = .sdata2:0x801F3204; // type:object size:0x4 data:float +lbl_801F3208 = .sdata2:0x801F3208; // type:object size:0x4 data:float +lbl_801F3210 = .sdata2:0x801F3210; // type:object size:0x8 data:double +lbl_801F3218 = .sdata2:0x801F3218; // type:object size:0x8 data:double +lbl_801F3220 = .sdata2:0x801F3220; // type:object size:0x4 data:float +lbl_801F3224 = .sdata2:0x801F3224; // type:object size:0x4 data:float +lbl_801F3228 = .sdata2:0x801F3228; // type:object size:0x4 data:float +lbl_801F322C = .sdata2:0x801F322C; // type:object size:0x4 data:float +lbl_801F3230 = .sdata2:0x801F3230; // type:object size:0x4 data:float +lbl_801F3234 = .sdata2:0x801F3234; // type:object size:0x4 data:float +lbl_801F3238 = .sdata2:0x801F3238; // type:object size:0x4 data:float +lbl_801F323C = .sdata2:0x801F323C; // type:object size:0x4 data:float +lbl_801F3240 = .sdata2:0x801F3240; // type:object size:0x8 data:double +lbl_801F3248 = .sdata2:0x801F3248; // type:object size:0x4 data:float +lbl_801F3250 = .sdata2:0x801F3250; // type:object size:0x8 data:double +lbl_801F3258 = .sdata2:0x801F3258; // type:object size:0x4 data:float +lbl_801F325C = .sdata2:0x801F325C; // type:object size:0x4 data:float +lbl_801F3260 = .sdata2:0x801F3260; // type:object size:0x1 data:byte +lbl_801F3261 = .sdata2:0x801F3261; // type:object size:0x1 data:byte +lbl_801F3262 = .sdata2:0x801F3262; // type:object size:0x1 data:byte +lbl_801F3263 = .sdata2:0x801F3263; // type:object size:0x1 data:byte +lbl_801F3264 = .sdata2:0x801F3264; // type:object size:0x1 data:byte +lbl_801F3268 = .sdata2:0x801F3268; // type:object size:0x4 data:float +lbl_801F326C = .sdata2:0x801F326C; // type:object size:0x4 data:float +lbl_801F3270 = .sdata2:0x801F3270; // type:object size:0x4 data:float +lbl_801F3274 = .sdata2:0x801F3274; // type:object size:0x4 data:float +lbl_801F3278 = .sdata2:0x801F3278; // type:object size:0x4 data:float +lbl_801F327C = .sdata2:0x801F327C; // type:object size:0x4 data:float +lbl_801F3280 = .sdata2:0x801F3280; // type:object size:0x4 data:float +lbl_801F3284 = .sdata2:0x801F3284; // type:object size:0x4 data:float +lbl_801F3288 = .sdata2:0x801F3288; // type:object size:0x4 data:float +lbl_801F328C = .sdata2:0x801F328C; // type:object size:0x4 data:float +lbl_801F3290 = .sdata2:0x801F3290; // type:object size:0x4 data:float +lbl_801F3294 = .sdata2:0x801F3294; // type:object size:0x4 data:float +lbl_801F3298 = .sdata2:0x801F3298; // type:object size:0x4 data:float +lbl_801F329C = .sdata2:0x801F329C; // type:object size:0x4 data:float +lbl_801F32A0 = .sdata2:0x801F32A0; // type:object size:0x8 data:double +lbl_801F32A8 = .sdata2:0x801F32A8; // type:object size:0x8 data:double +lbl_801F32B0 = .sdata2:0x801F32B0; // type:object size:0x4 data:float +lbl_801F32B8 = .sdata2:0x801F32B8; // type:object size:0x8 data:double +lbl_801F32C0 = .sdata2:0x801F32C0; // type:object size:0x8 data:double +lbl_801F32C8 = .sdata2:0x801F32C8; // type:object size:0x8 data:double +lbl_801F32D0 = .sdata2:0x801F32D0; // type:object size:0x8 data:double +lbl_801F32D8 = .sdata2:0x801F32D8; // type:object size:0x4 data:float +lbl_801F32E0 = .sdata2:0x801F32E0; // type:object size:0x8 data:double +lbl_801F32E8 = .sdata2:0x801F32E8; // type:object size:0x4 data:float +lbl_801F32EC = .sdata2:0x801F32EC; // type:object size:0x4 data:float +lbl_801F32F0 = .sdata2:0x801F32F0; // type:object size:0x4 data:float +lbl_801F32F8 = .sdata2:0x801F32F8; // type:object size:0x8 data:double +lbl_801F3300 = .sdata2:0x801F3300; // type:object size:0x8 data:double +lbl_801F3308 = .sdata2:0x801F3308; // type:object size:0x4 data:float +lbl_801F3310 = .sdata2:0x801F3310; // type:object size:0x8 data:double +lbl_801F3318 = .sdata2:0x801F3318; // type:object size:0x4 data:float +lbl_801F331C = .sdata2:0x801F331C; // type:object size:0x4 data:float +lbl_801F3320 = .sdata2:0x801F3320; // type:object size:0x4 data:float +lbl_801F3324 = .sdata2:0x801F3324; // type:object size:0x4 data:float +lbl_801F3328 = .sdata2:0x801F3328; // type:object size:0x8 data:double +lbl_801F3330 = .sdata2:0x801F3330; // type:object size:0x8 data:double +lbl_801F3338 = .sdata2:0x801F3338; // type:object size:0x4 data:float +lbl_801F333C = .sdata2:0x801F333C; // type:object size:0x4 data:float +lbl_801F3340 = .sdata2:0x801F3340; // type:object size:0x4 data:float +lbl_801F3348 = .sdata2:0x801F3348; // type:object size:0x8 data:double +lbl_801F3350 = .sdata2:0x801F3350; // type:object size:0x4 data:float +lbl_801F3354 = .sdata2:0x801F3354; // type:object size:0x4 data:float +lbl_801F3358 = .sdata2:0x801F3358; // type:object size:0x4 data:float +lbl_801F335C = .sdata2:0x801F335C; // type:object size:0x4 data:float +lbl_801F3360 = .sdata2:0x801F3360; // type:object size:0x8 data:double +lbl_801F3368 = .sdata2:0x801F3368; // type:object size:0x4 data:float +lbl_801F336C = .sdata2:0x801F336C; // type:object size:0x4 data:float +lbl_801F3370 = .sdata2:0x801F3370; // type:object size:0x4 data:float +lbl_801F3374 = .sdata2:0x801F3374; // type:object size:0x4 data:float +lbl_801F3378 = .sdata2:0x801F3378; // type:object size:0x4 data:float +lbl_801F337C = .sdata2:0x801F337C; // type:object size:0x4 data:float +lbl_801F3380 = .sdata2:0x801F3380; // type:object size:0x4 data:float +lbl_801F3384 = .sdata2:0x801F3384; // type:object size:0x4 data:float +lbl_801F3388 = .sdata2:0x801F3388; // type:object size:0x4 data:float +lbl_801F338C = .sdata2:0x801F338C; // type:object size:0x4 data:float +lbl_801F3390 = .sdata2:0x801F3390; // type:object size:0x4 data:float +lbl_801F3394 = .sdata2:0x801F3394; // type:object size:0x1 data:byte +lbl_801F3395 = .sdata2:0x801F3395; // type:object size:0x1 data:byte +lbl_801F3398 = .sdata2:0x801F3398; // type:object size:0x4 data:float +lbl_801F33A0 = .sdata2:0x801F33A0; // type:object size:0x8 data:double +lbl_801F33A8 = .sdata2:0x801F33A8; // type:object size:0x8 data:double +lbl_801F33B0 = .sdata2:0x801F33B0; // type:object size:0x8 data:double +lbl_801F33B8 = .sdata2:0x801F33B8; // type:object size:0x8 data:double +lbl_801F33C0 = .sdata2:0x801F33C0; // type:object size:0x4 data:float +lbl_801F33C4 = .sdata2:0x801F33C4; // type:object size:0x4 data:float +lbl_801F33C8 = .sdata2:0x801F33C8; // type:object size:0x8 data:double +lbl_801F33D0 = .sdata2:0x801F33D0; // type:object size:0x4 data:float +lbl_801F33D4 = .sdata2:0x801F33D4; // type:object size:0x4 data:float +lbl_801F33D8 = .sdata2:0x801F33D8; // type:object size:0x8 data:double +lbl_801F33E0 = .sdata2:0x801F33E0; // type:object size:0x4 data:float +lbl_801F33E4 = .sdata2:0x801F33E4; // type:object size:0x2 data:2byte +lbl_801F33E6 = .sdata2:0x801F33E6; // type:object size:0x2 data:2byte +lbl_801F33E8 = .sdata2:0x801F33E8; // type:object size:0x2 data:2byte +lbl_801F33EC = .sdata2:0x801F33EC; // type:object size:0x4 data:float +lbl_801F33F0 = .sdata2:0x801F33F0; // type:object size:0x4 data:float +lbl_801F33F4 = .sdata2:0x801F33F4; // type:object size:0x4 data:float +lbl_801F33F8 = .sdata2:0x801F33F8; // type:object size:0x2 data:2byte +lbl_801F33FA = .sdata2:0x801F33FA; // type:object size:0x2 data:2byte +lbl_801F33FC = .sdata2:0x801F33FC; // type:object size:0x2 data:2byte +lbl_801F3400 = .sdata2:0x801F3400; // type:object size:0x4 data:float +lbl_801F3404 = .sdata2:0x801F3404; // type:object size:0x4 data:float +lbl_801F3408 = .sdata2:0x801F3408; // type:object size:0x4 data:float +lbl_801F340C = .sdata2:0x801F340C; // type:object size:0x4 data:float +lbl_801F3410 = .sdata2:0x801F3410; // type:object size:0x4 data:float +lbl_801F3414 = .sdata2:0x801F3414; // type:object size:0x4 data:float +lbl_801F3418 = .sdata2:0x801F3418; // type:object size:0x4 data:float +lbl_801F3420 = .sdata2:0x801F3420; // type:object size:0x8 data:double +lbl_801F3428 = .sdata2:0x801F3428; // type:object size:0x4 data:float +lbl_801F342C = .sdata2:0x801F342C; // type:object size:0x4 data:float +lbl_801F3430 = .sdata2:0x801F3430; // type:object size:0x4 data:float +lbl_801F3434 = .sdata2:0x801F3434; // type:object size:0x4 data:float +lbl_801F3438 = .sdata2:0x801F3438; // type:object size:0x4 data:float +lbl_801F343C = .sdata2:0x801F343C; // type:object size:0x4 data:float +lbl_801F3440 = .sdata2:0x801F3440; // type:object size:0x4 data:float +lbl_801F3448 = .sdata2:0x801F3448; // type:object size:0x8 data:double +lbl_801F3450 = .sdata2:0x801F3450; // type:object size:0x8 data:double +lbl_801F3458 = .sdata2:0x801F3458; // type:object size:0x8 data:double +lbl_801F3460 = .sdata2:0x801F3460; // type:object size:0x4 data:float +lbl_801F3464 = .sdata2:0x801F3464; // type:object size:0x4 data:float +lbl_801F3468 = .sdata2:0x801F3468; // type:object size:0x4 data:float +lbl_801F346C = .sdata2:0x801F346C; // type:object size:0x4 data:float +lbl_801F3470 = .sdata2:0x801F3470; // type:object size:0x4 data:float +lbl_801F3474 = .sdata2:0x801F3474; // type:object size:0x4 data:float +lbl_801F3478 = .sdata2:0x801F3478; // type:object size:0x4 data:float +lbl_801F347C = .sdata2:0x801F347C; // type:object size:0x4 data:float +lbl_801F3480 = .sdata2:0x801F3480; // type:object size:0x4 data:float +lbl_801F3484 = .sdata2:0x801F3484; // type:object size:0x4 data:float +lbl_801F3488 = .sdata2:0x801F3488; // type:object size:0x4 data:float +lbl_801F348C = .sdata2:0x801F348C; // type:object size:0x4 data:float +lbl_801F3490 = .sdata2:0x801F3490; // type:object size:0x4 data:float +lbl_801F3494 = .sdata2:0x801F3494; // type:object size:0x4 data:float +lbl_801F3498 = .sdata2:0x801F3498; // type:object size:0x4 data:float +lbl_801F349C = .sdata2:0x801F349C; // type:object size:0x4 data:float +lbl_801F34A0 = .sdata2:0x801F34A0; // type:object size:0x4 data:float +lbl_801F34A4 = .sdata2:0x801F34A4; // type:object size:0x4 data:float +lbl_801F34A8 = .sdata2:0x801F34A8; // type:object size:0x4 data:float +lbl_801F34AC = .sdata2:0x801F34AC; // type:object size:0x4 data:float +lbl_801F34B0 = .sdata2:0x801F34B0; // type:object size:0x8 data:double +lbl_801F34B8 = .sdata2:0x801F34B8; // type:object size:0x8 data:double +lbl_801F34C0 = .sdata2:0x801F34C0; // type:object size:0x4 data:float +lbl_801F34C8 = .sdata2:0x801F34C8; // type:object size:0x8 data:double +lbl_801F34D0 = .sdata2:0x801F34D0; // type:object size:0x8 data:double +lbl_801F34D8 = .sdata2:0x801F34D8; // type:object size:0x4 data:float +lbl_801F34DC = .sdata2:0x801F34DC; // type:object size:0x4 data:float +lbl_801F34E0 = .sdata2:0x801F34E0; // type:object size:0x4 data:float +lbl_801F34E4 = .sdata2:0x801F34E4; // type:object size:0x4 data:float +lbl_801F34E8 = .sdata2:0x801F34E8; // type:object size:0x4 data:float +lbl_801F34EC = .sdata2:0x801F34EC; // type:object size:0x4 data:float +lbl_801F34F0 = .sdata2:0x801F34F0; // type:object size:0x4 data:float +lbl_801F34F4 = .sdata2:0x801F34F4; // type:object size:0x4 data:float +lbl_801F34F8 = .sdata2:0x801F34F8; // type:object size:0x4 data:float +lbl_801F34FC = .sdata2:0x801F34FC; // type:object size:0x4 data:float +lbl_801F3500 = .sdata2:0x801F3500; // type:object size:0x4 data:float +lbl_801F3504 = .sdata2:0x801F3504; // type:object size:0x4 data:float +lbl_801F3508 = .sdata2:0x801F3508; // type:object size:0x4 data:float +lbl_801F350C = .sdata2:0x801F350C; // type:object size:0x4 data:float +lbl_801F3510 = .sdata2:0x801F3510; // type:object size:0x4 data:float +lbl_801F3514 = .sdata2:0x801F3514; // type:object size:0x4 data:float +lbl_801F3518 = .sdata2:0x801F3518; // type:object size:0x4 data:float +lbl_801F351C = .sdata2:0x801F351C; // type:object size:0x4 data:float +lbl_801F3520 = .sdata2:0x801F3520; // type:object size:0x4 data:float +lbl_801F3528 = .sdata2:0x801F3528; // type:object size:0x8 data:double +lbl_801F3530 = .sdata2:0x801F3530; // type:object size:0x8 data:double +lbl_801F3538 = .sdata2:0x801F3538; // type:object size:0x8 data:double +lbl_801F3540 = .sdata2:0x801F3540; // type:object size:0x8 data:double +lbl_801F3548 = .sdata2:0x801F3548; // type:object size:0x4 data:float +lbl_801F354C = .sdata2:0x801F354C; // type:object size:0x4 data:float +lbl_801F3550 = .sdata2:0x801F3550; // type:object size:0x4 data:float +lbl_801F3554 = .sdata2:0x801F3554; // type:object size:0x4 data:float +lbl_801F3558 = .sdata2:0x801F3558; // type:object size:0x4 data:float +lbl_801F355C = .sdata2:0x801F355C; // type:object size:0x4 data:float +lbl_801F3560 = .sdata2:0x801F3560; // type:object size:0x4 data:float +lbl_801F3564 = .sdata2:0x801F3564; // type:object size:0x4 data:float +lbl_801F3568 = .sdata2:0x801F3568; // type:object size:0x4 data:float +lbl_801F356C = .sdata2:0x801F356C; // type:object size:0x4 data:float +lbl_801F3570 = .sdata2:0x801F3570; // type:object size:0x4 data:float +lbl_801F3574 = .sdata2:0x801F3574; // type:object size:0x4 data:float +lbl_801F3578 = .sdata2:0x801F3578; // type:object size:0x4 data:float +lbl_801F357C = .sdata2:0x801F357C; // type:object size:0x4 data:float +lbl_801F3580 = .sdata2:0x801F3580; // type:object size:0x4 data:float +lbl_801F3584 = .sdata2:0x801F3584; // type:object size:0x4 data:float +lbl_801F3588 = .sdata2:0x801F3588; // type:object size:0x4 data:float +lbl_801F358C = .sdata2:0x801F358C; // type:object size:0x4 data:float +lbl_801F3590 = .sdata2:0x801F3590; // type:object size:0x4 data:float +lbl_801F3594 = .sdata2:0x801F3594; // type:object size:0x4 data:float +lbl_801F3598 = .sdata2:0x801F3598; // type:object size:0x4 data:float +lbl_801F359C = .sdata2:0x801F359C; // type:object size:0x4 data:float +lbl_801F35A0 = .sdata2:0x801F35A0; // type:object size:0x8 data:double +lbl_801F35A8 = .sdata2:0x801F35A8; // type:object size:0x8 data:double +lbl_801F35B0 = .sdata2:0x801F35B0; // type:object size:0x4 data:float +lbl_801F35B4 = .sdata2:0x801F35B4; // type:object size:0x4 data:float +lbl_801F35B8 = .sdata2:0x801F35B8; // type:object size:0x8 data:double +lbl_801F35C0 = .sdata2:0x801F35C0; // type:object size:0x4 data:float +lbl_801F35C4 = .sdata2:0x801F35C4; // type:object size:0x4 data:float +lbl_801F35C8 = .sdata2:0x801F35C8; // type:object size:0x4 data:float +lbl_801F35CC = .sdata2:0x801F35CC; // type:object size:0x4 data:float +lbl_801F35D0 = .sdata2:0x801F35D0; // type:object size:0x4 data:float +lbl_801F35D4 = .sdata2:0x801F35D4; // type:object size:0x4 data:float +lbl_801F35D8 = .sdata2:0x801F35D8; // type:object size:0x4 data:float +lbl_801F35DC = .sdata2:0x801F35DC; // type:object size:0x4 data:float +lbl_801F35E0 = .sdata2:0x801F35E0; // type:object size:0x4 data:float +lbl_801F35E4 = .sdata2:0x801F35E4; // type:object size:0x4 data:float +lbl_801F35E8 = .sdata2:0x801F35E8; // type:object size:0x4 data:float +lbl_801F35EC = .sdata2:0x801F35EC; // type:object size:0x4 data:float +lbl_801F35F0 = .sdata2:0x801F35F0; // type:object size:0x4 data:float +lbl_801F35F4 = .sdata2:0x801F35F4; // type:object size:0x4 data:float +lbl_801F35F8 = .sdata2:0x801F35F8; // type:object size:0x4 data:float +lbl_801F35FC = .sdata2:0x801F35FC; // type:object size:0x4 data:float +lbl_801F3600 = .sdata2:0x801F3600; // type:object size:0x4 data:float +lbl_801F3604 = .sdata2:0x801F3604; // type:object size:0x4 data:float +lbl_801F3608 = .sdata2:0x801F3608; // type:object size:0x4 data:float +lbl_801F360C = .sdata2:0x801F360C; // type:object size:0x4 data:float +lbl_801F3610 = .sdata2:0x801F3610; // type:object size:0x4 data:float +lbl_801F3618 = .sdata2:0x801F3618; // type:object size:0x8 data:double +lbl_801F3620 = .sdata2:0x801F3620; // type:object size:0x8 data:double +lbl_801F3628 = .sdata2:0x801F3628; // type:object size:0x8 data:double +lbl_801F3630 = .sdata2:0x801F3630; // type:object size:0x8 data:double +lbl_801F3638 = .sdata2:0x801F3638; // type:object size:0x4 data:float +lbl_801F363C = .sdata2:0x801F363C; // type:object size:0x4 data:float +lbl_801F3640 = .sdata2:0x801F3640; // type:object size:0x4 data:float +lbl_801F3644 = .sdata2:0x801F3644; // type:object size:0x4 data:float +lbl_801F3648 = .sdata2:0x801F3648; // type:object size:0x4 data:float +lbl_801F364C = .sdata2:0x801F364C; // type:object size:0x4 data:float +lbl_801F3650 = .sdata2:0x801F3650; // type:object size:0x4 data:float +lbl_801F3654 = .sdata2:0x801F3654; // type:object size:0x4 data:float +lbl_801F3658 = .sdata2:0x801F3658; // type:object size:0x4 data:float +lbl_801F365C = .sdata2:0x801F365C; // type:object size:0x1 data:byte +lbl_801F365D = .sdata2:0x801F365D; // type:object size:0x1 data:byte +lbl_801F365E = .sdata2:0x801F365E; // type:object size:0x1 data:byte +lbl_801F365F = .sdata2:0x801F365F; // type:object size:0x1 data:byte +lbl_801F3660 = .sdata2:0x801F3660; // type:object size:0x8 data:float +lbl_801F3668 = .sdata2:0x801F3668; // type:object size:0x4 data:float +lbl_801F366C = .sdata2:0x801F366C; // type:object size:0x4 data:float +lbl_801F3670 = .sdata2:0x801F3670; // type:object size:0x4 data:float +lbl_801F3674 = .sdata2:0x801F3674; // type:object size:0x4 data:float +lbl_801F3678 = .sdata2:0x801F3678; // type:object size:0x4 data:float +lbl_801F367C = .sdata2:0x801F367C; // type:object size:0x4 data:float +lbl_801F3680 = .sdata2:0x801F3680; // type:object size:0x4 data:float +lbl_801F3684 = .sdata2:0x801F3684; // type:object size:0x4 data:float +lbl_801F3688 = .sdata2:0x801F3688; // type:object size:0x4 data:float +lbl_801F368C = .sdata2:0x801F368C; // type:object size:0x4 data:float +lbl_801F3690 = .sdata2:0x801F3690; // type:object size:0x4 data:float +lbl_801F3694 = .sdata2:0x801F3694; // type:object size:0x4 data:float +lbl_801F3698 = .sdata2:0x801F3698; // type:object size:0x4 data:float +lbl_801F369C = .sdata2:0x801F369C; // type:object size:0x4 data:float +lbl_801F36A0 = .sdata2:0x801F36A0; // type:object size:0x4 data:float +lbl_801F36A4 = .sdata2:0x801F36A4; // type:object size:0x4 data:float +lbl_801F36A8 = .sdata2:0x801F36A8; // type:object size:0x4 data:float +lbl_801F36AC = .sdata2:0x801F36AC; // type:object size:0x4 data:float +lbl_801F36B0 = .sdata2:0x801F36B0; // type:object size:0x4 data:float +lbl_801F36B4 = .sdata2:0x801F36B4; // type:object size:0x4 data:float +lbl_801F36B8 = .sdata2:0x801F36B8; // type:object size:0x4 data:float +lbl_801F36BC = .sdata2:0x801F36BC; // type:object size:0x4 data:float +lbl_801F36C0 = .sdata2:0x801F36C0; // type:object size:0x4 data:float +lbl_801F36C4 = .sdata2:0x801F36C4; // type:object size:0x4 data:float +lbl_801F36C8 = .sdata2:0x801F36C8; // type:object size:0x4 data:float +lbl_801F36CC = .sdata2:0x801F36CC; // type:object size:0x4 data:float +lbl_801F36D0 = .sdata2:0x801F36D0; // type:object size:0x4 data:float +lbl_801F36D4 = .sdata2:0x801F36D4; // type:object size:0x4 data:float +lbl_801F36D8 = .sdata2:0x801F36D8; // type:object size:0x4 data:float +lbl_801F36DC = .sdata2:0x801F36DC; // type:object size:0x4 data:float +lbl_801F36E0 = .sdata2:0x801F36E0; // type:object size:0x4 data:float +lbl_801F36E4 = .sdata2:0x801F36E4; // type:object size:0x4 data:float +lbl_801F36E8 = .sdata2:0x801F36E8; // type:object size:0x4 data:float +lbl_801F36EC = .sdata2:0x801F36EC; // type:object size:0x4 data:float +lbl_801F36F0 = .sdata2:0x801F36F0; // type:object size:0x4 data:float +lbl_801F36F4 = .sdata2:0x801F36F4; // type:object size:0x4 data:float +lbl_801F36F8 = .sdata2:0x801F36F8; // type:object size:0x4 data:float +lbl_801F36FC = .sdata2:0x801F36FC; // type:object size:0x4 data:float +lbl_801F3700 = .sdata2:0x801F3700; // type:object size:0x4 data:float +lbl_801F3704 = .sdata2:0x801F3704; // type:object size:0x4 data:float +lbl_801F3708 = .sdata2:0x801F3708; // type:object size:0x4 data:float +lbl_801F370C = .sdata2:0x801F370C; // type:object size:0x4 data:float +lbl_801F3710 = .sdata2:0x801F3710; // type:object size:0x8 data:double +lbl_801F3718 = .sdata2:0x801F3718; // type:object size:0x8 data:float +lbl_801F3720 = .sdata2:0x801F3720; // type:object size:0x4 data:float +lbl_801F3724 = .sdata2:0x801F3724; // type:object size:0x4 data:float +lbl_801F3728 = .sdata2:0x801F3728; // type:object size:0x4 data:float +lbl_801F372C = .sdata2:0x801F372C; // type:object size:0x4 data:float +lbl_801F3730 = .sdata2:0x801F3730; // type:object size:0x8 data:float +lbl_801F3738 = .sdata2:0x801F3738; // type:object size:0x4 data:float +lbl_801F373C = .sdata2:0x801F373C; // type:object size:0x4 data:float +lbl_801F3740 = .sdata2:0x801F3740; // type:object size:0x4 data:float +lbl_801F3744 = .sdata2:0x801F3744; // type:object size:0x4 data:float +lbl_801F3748 = .sdata2:0x801F3748; // type:object size:0x4 data:float +lbl_801F374C = .sdata2:0x801F374C; // type:object size:0x4 data:float +lbl_801F3750 = .sdata2:0x801F3750; // type:object size:0x4 data:float +lbl_801F3754 = .sdata2:0x801F3754; // type:object size:0x4 data:float +lbl_801F3758 = .sdata2:0x801F3758; // type:object size:0x4 data:float +lbl_801F375C = .sdata2:0x801F375C; // type:object size:0x4 data:float +lbl_801F3760 = .sdata2:0x801F3760; // type:object size:0x4 data:float +lbl_801F3764 = .sdata2:0x801F3764; // type:object size:0x4 data:float +lbl_801F3768 = .sdata2:0x801F3768; // type:object size:0x8 data:double +lbl_801F3770 = .sdata2:0x801F3770; // type:object size:0x8 data:double +lbl_801F3778 = .sdata2:0x801F3778; // type:object size:0x4 data:float +lbl_801F377C = .sdata2:0x801F377C; // type:object size:0x4 data:float +lbl_801F3780 = .sdata2:0x801F3780; // type:object size:0x4 data:float +lbl_801F3784 = .sdata2:0x801F3784; // type:object size:0x4 data:float +lbl_801F3788 = .sdata2:0x801F3788; // type:object size:0x4 data:float +lbl_801F378C = .sdata2:0x801F378C; // type:object size:0x4 data:float +lbl_801F3790 = .sdata2:0x801F3790; // type:object size:0x8 data:double +lbl_801F3798 = .sdata2:0x801F3798; // type:object size:0x8 data:double +lbl_801F37A0 = .sdata2:0x801F37A0; // type:object size:0x8 data:float +lbl_801F37A8 = .sdata2:0x801F37A8; // type:object size:0x4 data:float +lbl_801F37B0 = .sdata2:0x801F37B0; // type:object size:0x8 data:double +lbl_801F37B8 = .sdata2:0x801F37B8; // type:object size:0x4 data:4byte +lbl_801F37BC = .sdata2:0x801F37BC; // type:object size:0x4 data:4byte +lbl_801F37C0 = .sdata2:0x801F37C0; // type:object size:0x4 data:4byte +lbl_801F37C4 = .sdata2:0x801F37C4; // type:object size:0x4 data:float +lbl_801F37C8 = .sdata2:0x801F37C8; // type:object size:0x4 data:float +lbl_801F37CC = .sdata2:0x801F37CC; // type:object size:0x4 data:float +lbl_801F37D0 = .sdata2:0x801F37D0; // type:object size:0x8 data:double +lbl_801F37D8 = .sdata2:0x801F37D8; // type:object size:0x4 data:float +lbl_801F37E0 = .sdata2:0x801F37E0; // type:object size:0x8 data:double +lbl_801F37E8 = .sdata2:0x801F37E8; // type:object size:0x4 data:float +lbl_801F37EC = .sdata2:0x801F37EC; // type:object size:0x4 data:float +lbl_801F37F0 = .sdata2:0x801F37F0; // type:object size:0x4 data:float +lbl_801F37F4 = .sdata2:0x801F37F4; // type:object size:0x4 data:float +lbl_801F37F8 = .sdata2:0x801F37F8; // type:object size:0x4 data:float +lbl_801F37FC = .sdata2:0x801F37FC; // type:object size:0x4 data:float +lbl_801F3800 = .sdata2:0x801F3800; // type:object size:0x4 data:float +lbl_801F3804 = .sdata2:0x801F3804; // type:object size:0x4 data:float +lbl_801F3808 = .sdata2:0x801F3808; // type:object size:0x4 data:float +lbl_801F380C = .sdata2:0x801F380C; // type:object size:0x4 data:float +lbl_801F3810 = .sdata2:0x801F3810; // type:object size:0x4 data:float +lbl_801F3814 = .sdata2:0x801F3814; // type:object size:0x4 data:float +lbl_801F3818 = .sdata2:0x801F3818; // type:object size:0x4 data:float +lbl_801F3820 = .sdata2:0x801F3820; // type:object size:0x8 data:double +lbl_801F3828 = .sdata2:0x801F3828; // type:object size:0x8 data:double +lbl_801F3830 = .sdata2:0x801F3830; // type:object size:0x8 data:float +lbl_801F3838 = .sdata2:0x801F3838; // type:object size:0x4 data:float +lbl_801F3840 = .sdata2:0x801F3840; // type:object size:0x8 data:double +lbl_801F3848 = .sdata2:0x801F3848; // type:object size:0x4 data:float +lbl_801F384C = .sdata2:0x801F384C; // type:object size:0x4 data:float +lbl_801F3850 = .sdata2:0x801F3850; // type:object size:0x4 data:float +lbl_801F3854 = .sdata2:0x801F3854; // type:object size:0x4 data:float +lbl_801F3858 = .sdata2:0x801F3858; // type:object size:0x4 data:float +lbl_801F385C = .sdata2:0x801F385C; // type:object size:0x4 data:float +lbl_801F3860 = .sdata2:0x801F3860; // type:object size:0x4 data:float +lbl_801F3864 = .sdata2:0x801F3864; // type:object size:0x4 data:float +lbl_801F3868 = .sdata2:0x801F3868; // type:object size:0x4 data:float +lbl_801F3870 = .sdata2:0x801F3870; // type:object size:0x8 data:double +lbl_801F3878 = .sdata2:0x801F3878; // type:object size:0x4 data:float +lbl_801F387C = .sdata2:0x801F387C; // type:object size:0x4 data:float +lbl_801F3880 = .sdata2:0x801F3880; // type:object size:0x8 data:double +lbl_801F3888 = .sdata2:0x801F3888; // type:object size:0x4 data:float +lbl_801F3890 = .sdata2:0x801F3890; // type:object size:0x8 data:double +lbl_801F3898 = .sdata2:0x801F3898; // type:object size:0x4 data:float +lbl_801F38A0 = .sdata2:0x801F38A0; // type:object size:0x8 data:double +lbl_801F38A8 = .sdata2:0x801F38A8; // type:object size:0x4 data:float +lbl_801F38AC = .sdata2:0x801F38AC; // type:object size:0x4 data:float +lbl_801F38B0 = .sdata2:0x801F38B0; // type:object size:0x4 data:float +lbl_801F38B8 = .sdata2:0x801F38B8; // type:object size:0x8 data:double +lbl_801F38C0 = .sdata2:0x801F38C0; // type:object size:0x4 data:float +lbl_801F38C4 = .sdata2:0x801F38C4; // type:object size:0x4 data:float +lbl_801F38C8 = .sdata2:0x801F38C8; // type:object size:0x8 data:double +lbl_801F38D0 = .sdata2:0x801F38D0; // type:object size:0x4 data:float +lbl_801F38D4 = .sdata2:0x801F38D4; // type:object size:0x4 data:float +lbl_801F38D8 = .sdata2:0x801F38D8; // type:object size:0x4 data:float +lbl_801F38DC = .sdata2:0x801F38DC; // type:object size:0x4 data:float +lbl_801F38E0 = .sdata2:0x801F38E0; // type:object size:0x4 data:float +lbl_801F38E8 = .sdata2:0x801F38E8; // type:object size:0x8 data:double +lbl_801F38F0 = .sdata2:0x801F38F0; // type:object size:0x4 data:4byte +lbl_801F38F8 = .sdata2:0x801F38F8; // type:object size:0x8 data:double +lbl_801F3900 = .sdata2:0x801F3900; // type:object size:0x8 data:double +lbl_801F3908 = .sdata2:0x801F3908; // type:object size:0x8 data:double +lbl_801F3910 = .sdata2:0x801F3910; // type:object size:0x8 data:double +lbl_801F3918 = .sdata2:0x801F3918; // type:object size:0x8 data:double +lbl_801F3920 = .sdata2:0x801F3920; // type:object size:0x8 data:double +lbl_801F3928 = .sdata2:0x801F3928; // type:object size:0x8 data:double +lbl_801F3930 = .sdata2:0x801F3930; // type:object size:0x8 data:double +lbl_801F3938 = .sdata2:0x801F3938; // type:object size:0x8 data:double +lbl_801F3940 = .sdata2:0x801F3940; // type:object size:0x8 data:double +lbl_801F3948 = .sdata2:0x801F3948; // type:object size:0x8 data:double +lbl_801F3950 = .sdata2:0x801F3950; // type:object size:0x8 data:double +lbl_801F3958 = .sdata2:0x801F3958; // type:object size:0x8 data:double +lbl_801F3960 = .sdata2:0x801F3960; // type:object size:0x8 data:double +lbl_801F3968 = .sdata2:0x801F3968; // type:object size:0x8 data:double +lbl_801F3970 = .sdata2:0x801F3970; // type:object size:0x8 data:double +lbl_801F3978 = .sdata2:0x801F3978; // type:object size:0x8 data:double +lbl_801F3980 = .sdata2:0x801F3980; // type:object size:0x8 data:double +lbl_801F3988 = .sdata2:0x801F3988; // type:object size:0x8 data:double +lbl_801F3990 = .sdata2:0x801F3990; // type:object size:0x8 data:double +lbl_801F3998 = .sdata2:0x801F3998; // type:object size:0x8 data:double +lbl_801F39A0 = .sdata2:0x801F39A0; // type:object size:0x8 data:double +lbl_801F39A8 = .sdata2:0x801F39A8; // type:object size:0x8 data:double +lbl_801F39B0 = .sdata2:0x801F39B0; // type:object size:0x8 data:double +lbl_801F39B8 = .sdata2:0x801F39B8; // type:object size:0x8 data:double +lbl_801F39C0 = .sdata2:0x801F39C0; // type:object size:0x8 data:double +lbl_801F39C8 = .sdata2:0x801F39C8; // type:object size:0x8 data:double +lbl_801F39D0 = .sdata2:0x801F39D0; // type:object size:0x8 data:double +lbl_801F39D8 = .sdata2:0x801F39D8; // type:object size:0x8 data:double +lbl_801F39E0 = .sdata2:0x801F39E0; // type:object size:0x8 data:double +lbl_801F39E8 = .sdata2:0x801F39E8; // type:object size:0x8 data:double +lbl_801F39F0 = .sdata2:0x801F39F0; // type:object size:0x8 data:double +lbl_801F39F8 = .sdata2:0x801F39F8; // type:object size:0x8 data:double +lbl_801F3A00 = .sdata2:0x801F3A00; // type:object size:0x8 data:double +lbl_801F3A08 = .sdata2:0x801F3A08; // type:object size:0x8 data:double +lbl_801F3A10 = .sdata2:0x801F3A10; // type:object size:0x8 data:double +lbl_801F3A18 = .sdata2:0x801F3A18; // type:object size:0x8 data:double +lbl_801F3A20 = .sdata2:0x801F3A20; // type:object size:0x8 data:double +lbl_801F3A28 = .sdata2:0x801F3A28; // type:object size:0x8 data:double +lbl_801F3A30 = .sdata2:0x801F3A30; // type:object size:0x8 data:double +lbl_801F3A38 = .sdata2:0x801F3A38; // type:object size:0x8 data:double +lbl_801F3A40 = .sdata2:0x801F3A40; // type:object size:0x8 data:double +lbl_801F3A48 = .sdata2:0x801F3A48; // type:object size:0x8 data:double +lbl_801F3A50 = .sdata2:0x801F3A50; // type:object size:0x8 data:double +lbl_801F3A58 = .sdata2:0x801F3A58; // type:object size:0x8 data:double +lbl_801F3A60 = .sdata2:0x801F3A60; // type:object size:0x8 data:double +lbl_801F3A68 = .sdata2:0x801F3A68; // type:object size:0x8 data:double +lbl_801F3A70 = .sdata2:0x801F3A70; // type:object size:0x8 data:double +lbl_801F3A78 = .sdata2:0x801F3A78; // type:object size:0x8 data:double +lbl_801F3A80 = .sdata2:0x801F3A80; // type:object size:0x8 data:double +lbl_801F3A88 = .sdata2:0x801F3A88; // type:object size:0x8 data:double +lbl_801F3A90 = .sdata2:0x801F3A90; // type:object size:0x8 data:double +lbl_801F3A98 = .sdata2:0x801F3A98; // type:object size:0x8 data:double +lbl_801F3AA0 = .sdata2:0x801F3AA0; // type:object size:0x8 data:double +lbl_801F3AA8 = .sdata2:0x801F3AA8; // type:object size:0x8 data:double +lbl_801F3AB0 = .sdata2:0x801F3AB0; // type:object size:0x8 data:double +lbl_801F3AB8 = .sdata2:0x801F3AB8; // type:object size:0x8 data:double +lbl_801F3AC0 = .sdata2:0x801F3AC0; // type:object size:0x8 data:double +lbl_801F3AC8 = .sdata2:0x801F3AC8; // type:object size:0x8 data:double +lbl_801F3AD0 = .sdata2:0x801F3AD0; // type:object size:0x8 data:double +lbl_801F3AD8 = .sdata2:0x801F3AD8; // type:object size:0x8 data:double +lbl_801F3AE0 = .sdata2:0x801F3AE0; // type:object size:0x8 data:double +lbl_801F3AE8 = .sdata2:0x801F3AE8; // type:object size:0x8 data:double +lbl_801F3AF0 = .sdata2:0x801F3AF0; // type:object size:0x8 data:double +lbl_801F3AF8 = .sdata2:0x801F3AF8; // type:object size:0x8 data:double +lbl_801F3B00 = .sdata2:0x801F3B00; // type:object size:0x8 data:double +lbl_801F3B08 = .sdata2:0x801F3B08; // type:object size:0x8 data:double +lbl_801F3B10 = .sdata2:0x801F3B10; // type:object size:0x8 data:double +lbl_801F3B18 = .sdata2:0x801F3B18; // type:object size:0x8 data:double +lbl_801F3B20 = .sdata2:0x801F3B20; // type:object size:0x8 data:double +lbl_801F3B28 = .sdata2:0x801F3B28; // type:object size:0x8 data:double +lbl_801F3B30 = .sdata2:0x801F3B30; // type:object size:0x8 data:double +lbl_801F3B38 = .sdata2:0x801F3B38; // type:object size:0x8 data:double +lbl_801F3B40 = .sdata2:0x801F3B40; // type:object size:0x8 data:double +lbl_801F3B48 = .sdata2:0x801F3B48; // type:object size:0x8 data:double +lbl_801F3B50 = .sdata2:0x801F3B50; // type:object size:0x8 data:double +lbl_801F3B58 = .sdata2:0x801F3B58; // type:object size:0x8 data:double +lbl_801F3B60 = .sdata2:0x801F3B60; // type:object size:0x8 data:double +lbl_801F3B68 = .sdata2:0x801F3B68; // type:object size:0x8 data:double +lbl_801F3B70 = .sdata2:0x801F3B70; // type:object size:0x8 data:double +lbl_801F3B78 = .sdata2:0x801F3B78; // type:object size:0x8 data:double +lbl_801F3B80 = .sdata2:0x801F3B80; // type:object size:0x8 data:double +lbl_801F3B88 = .sdata2:0x801F3B88; // type:object size:0x8 data:double +lbl_801F3B90 = .sdata2:0x801F3B90; // type:object size:0x8 data:double +lbl_801F3B98 = .sdata2:0x801F3B98; // type:object size:0x8 data:double +lbl_801F3BA0 = .sdata2:0x801F3BA0; // type:object size:0x8 data:double +lbl_801F3BA8 = .sdata2:0x801F3BA8; // type:object size:0x8 data:double +lbl_801F3BB0 = .sdata2:0x801F3BB0; // type:object size:0x8 data:double +lbl_801F3BB8 = .sdata2:0x801F3BB8; // type:object size:0x8 data:double +lbl_801F3BC0 = .sdata2:0x801F3BC0; // type:object size:0x8 data:double +lbl_801F3BC8 = .sdata2:0x801F3BC8; // type:object size:0x8 data:double +lbl_801F3BD0 = .sdata2:0x801F3BD0; // type:object size:0x8 data:double +lbl_801F3BD8 = .sdata2:0x801F3BD8; // type:object size:0x8 data:double +lbl_801F3BE0 = .sdata2:0x801F3BE0; // type:object size:0x8 data:double +lbl_801F3BE8 = .sdata2:0x801F3BE8; // type:object size:0x8 data:double +lbl_801F3BF0 = .sdata2:0x801F3BF0; // type:object size:0x8 data:double +lbl_801F3BF8 = .sdata2:0x801F3BF8; // type:object size:0x8 data:double +lbl_801F3C00 = .sdata2:0x801F3C00; // type:object size:0x8 data:double +lbl_801F3C08 = .sdata2:0x801F3C08; // type:object size:0x8 data:double +lbl_801F3C10 = .sdata2:0x801F3C10; // type:object size:0x8 data:double +lbl_801F3C18 = .sdata2:0x801F3C18; // type:object size:0x8 data:double +lbl_801F3C20 = .sdata2:0x801F3C20; // type:object size:0x8 data:double +lbl_801F3C28 = .sdata2:0x801F3C28; // type:object size:0x8 data:double +lbl_801F3C30 = .sdata2:0x801F3C30; // type:object size:0x8 data:double +lbl_801F3C38 = .sdata2:0x801F3C38; // type:object size:0x8 data:double +lbl_801F3C40 = .sdata2:0x801F3C40; // type:object size:0x8 data:double +lbl_801F3C48 = .sdata2:0x801F3C48; // type:object size:0x8 data:double +lbl_801F3C50 = .sdata2:0x801F3C50; // type:object size:0x8 data:double +lbl_801F3C58 = .sdata2:0x801F3C58; // type:object size:0x8 data:double +lbl_801F3C60 = .sdata2:0x801F3C60; // type:object size:0x8 data:double +lbl_801F3C68 = .sdata2:0x801F3C68; // type:object size:0x8 data:double +lbl_801F3C70 = .sdata2:0x801F3C70; // type:object size:0x8 data:double +lbl_801F3C78 = .sdata2:0x801F3C78; // type:object size:0x8 data:double +lbl_801F3C80 = .sdata2:0x801F3C80; // type:object size:0x8 data:double +lbl_801F3C88 = .sdata2:0x801F3C88; // type:object size:0x8 data:double +lbl_801F3C90 = .sdata2:0x801F3C90; // type:object size:0x8 data:double +lbl_801F3C98 = .sdata2:0x801F3C98; // type:object size:0x8 data:double +lbl_801F3CA0 = .sdata2:0x801F3CA0; // type:object size:0x8 data:double +lbl_801F3CA8 = .sdata2:0x801F3CA8; // type:object size:0x8 data:double +lbl_801F3CB0 = .sdata2:0x801F3CB0; // type:object size:0x8 data:double +lbl_801F3CB8 = .sdata2:0x801F3CB8; // type:object size:0x8 data:double +lbl_801F3CC0 = .sdata2:0x801F3CC0; // type:object size:0x8 data:double +lbl_801F3CC8 = .sdata2:0x801F3CC8; // type:object size:0x8 data:double +lbl_801F3CD0 = .sdata2:0x801F3CD0; // type:object size:0x8 data:double +lbl_801F3CD8 = .sdata2:0x801F3CD8; // type:object size:0x8 data:double +lbl_801F3CE0 = .sdata2:0x801F3CE0; // type:object size:0x8 data:double +lbl_801F3CE8 = .sdata2:0x801F3CE8; // type:object size:0x8 data:double +lbl_801F3CF0 = .sdata2:0x801F3CF0; // type:object size:0x8 data:double +lbl_801F3CF8 = .sdata2:0x801F3CF8; // type:object size:0x8 data:double +lbl_801F3D00 = .sdata2:0x801F3D00; // type:object size:0x8 data:double +lbl_801F3D08 = .sdata2:0x801F3D08; // type:object size:0x8 data:double +lbl_801F3D10 = .sdata2:0x801F3D10; // type:object size:0x8 data:double +lbl_801F3D18 = .sdata2:0x801F3D18; // type:object size:0x8 data:double +lbl_801F3D20 = .sdata2:0x801F3D20; // type:object size:0x8 data:double +lbl_801F3D28 = .sdata2:0x801F3D28; // type:object size:0x8 data:double +lbl_801F3D30 = .sdata2:0x801F3D30; // type:object size:0x8 data:double +lbl_801F3D38 = .sdata2:0x801F3D38; // type:object size:0x8 data:double +lbl_801F3D40 = .sdata2:0x801F3D40; // type:object size:0x8 data:double +lbl_801F3D48 = .sdata2:0x801F3D48; // type:object size:0x8 data:double +lbl_801F3D50 = .sdata2:0x801F3D50; // type:object size:0x8 data:double +lbl_801F3D58 = .sdata2:0x801F3D58; // type:object size:0x8 data:double +lbl_801F3D60 = .sdata2:0x801F3D60; // type:object size:0x4 data:float +lbl_801F3D64 = .sdata2:0x801F3D64; // type:object size:0x4 data:float +lbl_801F3D68 = .sdata2:0x801F3D68; // type:object size:0x4 data:float +lbl_801F3D70 = .sdata2:0x801F3D70; // type:object size:0x8 data:double +lbl_801F3D78 = .sdata2:0x801F3D78; // type:object size:0x8 data:double +lbl_801F3D80 = .sdata2:0x801F3D80; // type:object size:0x4 data:float +lbl_801F3D84 = .sdata2:0x801F3D84; // type:object size:0x4 data:float +lbl_801F3D88 = .sdata2:0x801F3D88; // type:object size:0x4 data:float +lbl_801F3D8C = .sdata2:0x801F3D8C; // type:object size:0x4 data:float +lbl_801F3D90 = .sdata2:0x801F3D90; // type:object size:0x4 data:float +lbl_801F3D94 = .sdata2:0x801F3D94; // type:object size:0x4 data:float +lbl_801F3D98 = .sdata2:0x801F3D98; // type:object size:0x4 data:float +lbl_801F3D9C = .sdata2:0x801F3D9C; // type:object size:0x4 data:float +lbl_801F3DA0 = .sdata2:0x801F3DA0; // type:object size:0x4 data:float +lbl_801F3DA8 = .sdata2:0x801F3DA8; // type:object size:0x8 data:double +lbl_801F3DB0 = .sdata2:0x801F3DB0; // type:object size:0x8 data:double +lbl_801F3DB8 = .sdata2:0x801F3DB8; // type:object size:0x4 data:float +lbl_801F3DBC = .sdata2:0x801F3DBC; // type:object size:0x4 data:float +lbl_801F3DC0 = .sdata2:0x801F3DC0; // type:object size:0x4 data:float +lbl_801F3DC8 = .sdata2:0x801F3DC8; // type:object size:0x8 data:double +lbl_801F3DD0 = .sdata2:0x801F3DD0; // type:object size:0x8 data:float +lbl_801F3DD8 = .sdata2:0x801F3DD8; // type:object size:0x4 data:float +lbl_801F3DDC = .sdata2:0x801F3DDC; // type:object size:0x4 data:float +lbl_801F3DE0 = .sdata2:0x801F3DE0; // type:object size:0x4 data:float +lbl_801F3DE8 = .sdata2:0x801F3DE8; // type:object size:0x8 data:double +lbl_801F3DF0 = .sdata2:0x801F3DF0; // type:object size:0x8 data:double +lbl_801F3DF8 = .sdata2:0x801F3DF8; // type:object size:0x4 data:float +lbl_801F3DFC = .sdata2:0x801F3DFC; // type:object size:0x4 data:float +lbl_801F3E00 = .sdata2:0x801F3E00; // type:object size:0x4 data:float +lbl_801F3E08 = .sdata2:0x801F3E08; // type:object size:0x8 data:double +lbl_801F3E10 = .sdata2:0x801F3E10; // type:object size:0x4 data:float +lbl_801F3E18 = .sdata2:0x801F3E18; // type:object size:0x8 data:double +lbl_801F3E20 = .sdata2:0x801F3E20; // type:object size:0x4 data:float +lbl_801F3E24 = .sdata2:0x801F3E24; // type:object size:0x4 data:float +lbl_801F3E28 = .sdata2:0x801F3E28; // type:object size:0x8 data:double +lbl_801F3E30 = .sdata2:0x801F3E30; // type:object size:0x4 data:float +lbl_801F3E38 = .sdata2:0x801F3E38; // type:object size:0x8 data:double +lbl_801F3E40 = .sdata2:0x801F3E40; // type:object size:0x4 data:float +lbl_801F3E44 = .sdata2:0x801F3E44; // type:object size:0x4 data:float +lbl_801F3E48 = .sdata2:0x801F3E48; // type:object size:0x4 data:float +lbl_801F3E50 = .sdata2:0x801F3E50; // type:object size:0x8 data:double +lbl_801F3E58 = .sdata2:0x801F3E58; // type:object size:0x4 data:float +lbl_801F3E60 = .sdata2:0x801F3E60; // type:object size:0x8 data:double +lbl_801F3E68 = .sdata2:0x801F3E68; // type:object size:0x4 data:float +lbl_801F3E6C = .sdata2:0x801F3E6C; // type:object size:0x4 data:float +lbl_801F3E70 = .sdata2:0x801F3E70; // type:object size:0x8 data:float +lbl_801F3E78 = .sdata2:0x801F3E78; // type:object size:0x4 data:float +lbl_801F3E80 = .sdata2:0x801F3E80; // type:object size:0x8 data:double +lbl_801F3E88 = .sdata2:0x801F3E88; // type:object size:0x4 data:float +lbl_801F3E8C = .sdata2:0x801F3E8C; // type:object size:0x4 data:float +lbl_801F3E90 = .sdata2:0x801F3E90; // type:object size:0x8 data:double +lbl_801F3E98 = .sdata2:0x801F3E98; // type:object size:0x4 data:float +lbl_801F3E9C = .sdata2:0x801F3E9C; // type:object size:0x4 data:float +lbl_801F3EA0 = .sdata2:0x801F3EA0; // type:object size:0x8 data:double +lbl_801F3EA8 = .sdata2:0x801F3EA8; // type:object size:0x4 data:float +lbl_801F3EAC = .sdata2:0x801F3EAC; // type:object size:0x4 data:float +lbl_801F3EB0 = .sdata2:0x801F3EB0; // type:object size:0x4 data:float +lbl_801F3EB4 = .sdata2:0x801F3EB4; // type:object size:0x4 data:float +lbl_801F3EB8 = .sdata2:0x801F3EB8; // type:object size:0x4 data:float +lbl_801F3EBC = .sdata2:0x801F3EBC; // type:object size:0x4 data:float +lbl_801F3EC0 = .sdata2:0x801F3EC0; // type:object size:0x8 data:float +lbl_801F3EC8 = .sdata2:0x801F3EC8; // type:object size:0x4 data:float +lbl_801F3ED0 = .sdata2:0x801F3ED0; // type:object size:0x8 data:double +lbl_801F3ED8 = .sdata2:0x801F3ED8; // type:object size:0x8 data:double +lbl_801F3EE0 = .sdata2:0x801F3EE0; // type:object size:0x8 data:float +lbl_801F3EE8 = .sdata2:0x801F3EE8; // type:object size:0x4 data:float +lbl_801F3EEC = .sdata2:0x801F3EEC; // type:object size:0x4 data:float +lbl_801F3EF0 = .sdata2:0x801F3EF0; // type:object size:0x4 data:float +lbl_801F3EF8 = .sdata2:0x801F3EF8; // type:object size:0x8 data:double +lbl_801F3F00 = .sdata2:0x801F3F00; // type:object size:0x4 data:float +lbl_801F3F04 = .sdata2:0x801F3F04; // type:object size:0x4 data:float +lbl_801F3F08 = .sdata2:0x801F3F08; // type:object size:0x4 data:float +lbl_801F3F0C = .sdata2:0x801F3F0C; // type:object size:0x4 data:float +lbl_801F3F10 = .sdata2:0x801F3F10; // type:object size:0x4 data:float +lbl_801F3F14 = .sdata2:0x801F3F14; // type:object size:0x4 data:float +lbl_801F3F18 = .sdata2:0x801F3F18; // type:object size:0x8 data:double +lbl_801F3F20 = .sdata2:0x801F3F20; // type:object size:0x4 data:float +lbl_801F3F24 = .sdata2:0x801F3F24; // type:object size:0x4 data:float +lbl_801F3F28 = .sdata2:0x801F3F28; // type:object size:0x8 data:double +lbl_801F3F30 = .sdata2:0x801F3F30; // type:object size:0x4 data:float +lbl_801F3F34 = .sdata2:0x801F3F34; // type:object size:0x4 data:float +lbl_801F3F38 = .sdata2:0x801F3F38; // type:object size:0x8 data:double +lbl_801F3F40 = .sdata2:0x801F3F40; // type:object size:0x4 data:float +lbl_801F3F44 = .sdata2:0x801F3F44; // type:object size:0x4 data:float +lbl_801F3F48 = .sdata2:0x801F3F48; // type:object size:0x4 data:float +lbl_801F3F4C = .sdata2:0x801F3F4C; // type:object size:0x4 data:float +lbl_801F3F50 = .sdata2:0x801F3F50; // type:object size:0x4 data:float +lbl_801F3F54 = .sdata2:0x801F3F54; // type:object size:0x4 data:float +lbl_801F3F58 = .sdata2:0x801F3F58; // type:object size:0x8 data:double +lbl_801F3F60 = .sdata2:0x801F3F60; // type:object size:0x4 data:float +lbl_801F3F64 = .sdata2:0x801F3F64; // type:object size:0x4 data:float +lbl_801F3F68 = .sdata2:0x801F3F68; // type:object size:0x8 data:double +lbl_801F3F70 = .sdata2:0x801F3F70; // type:object size:0x8 data:double +lbl_801F3F78 = .sdata2:0x801F3F78; // type:object size:0x4 data:float +lbl_801F3F7C = .sdata2:0x801F3F7C; // type:object size:0x4 data:float +lbl_801F3F80 = .sdata2:0x801F3F80; // type:object size:0x4 data:float +lbl_801F3F88 = .sdata2:0x801F3F88; // type:object size:0x8 data:double +lbl_801F3F90 = .sdata2:0x801F3F90; // type:object size:0x4 data:4byte +lbl_801F3F94 = .sdata2:0x801F3F94; // type:object size:0x4 data:4byte +lbl_801F3F98 = .sdata2:0x801F3F98; // type:object size:0x4 data:float +lbl_801F3F9C = .sdata2:0x801F3F9C; // type:object size:0x4 data:float +lbl_801F3FA0 = .sdata2:0x801F3FA0; // type:object size:0x4 data:float +lbl_801F3FA4 = .sdata2:0x801F3FA4; // type:object size:0x4 data:float +lbl_801F3FA8 = .sdata2:0x801F3FA8; // type:object size:0x8 data:double +lbl_801F3FC0 = .sbss2:0x801F3FC0; // type:object size:0x1 data:byte +lbl_801F3FC1 = .sbss2:0x801F3FC1; // type:object size:0x1 data:byte +lbl_801F3FC2 = .sbss2:0x801F3FC2; // type:object size:0x1 data:byte +lbl_801F3FC3 = .sbss2:0x801F3FC3; // type:object size:0x1 data:byte +lbl_801F3FC4 = .sbss2:0x801F3FC4; // type:object size:0x1 data:byte +lbl_801F3FC5 = .sbss2:0x801F3FC5; // type:object size:0x1 data:byte +lbl_801F3FC6 = .sbss2:0x801F3FC6; // type:object size:0x1 data:byte +lbl_801F3FC7 = .sbss2:0x801F3FC7; // type:object size:0x1 data:byte diff --git a/config/GMPP01_02/build.sha1 b/config/GMPP01_02/build.sha1 new file mode 100644 index 00000000..fcf1ec59 --- /dev/null +++ b/config/GMPP01_02/build.sha1 @@ -0,0 +1,100 @@ +65ef91650e9201047f50a3c39c7693a21fff2b29 build/GMPP01_02/main.dol +7101a759bcd45edee5bbc00a36d347c1f787c2a1 build/GMPP01_02/_minigameDll/_minigameDll.rel +b60fe8dd6faa20663224d64651b80c25b9b202ef build/GMPP01_02/bootDll/bootDll.rel +eef3ac50923ab2f20d588ef10ae15f3bc739f2b8 build/GMPP01_02/instDll/instDll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_02/m302Dll/m302Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_02/m303Dll/m303Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_02/m330Dll/m330Dll.rel +f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 build/GMPP01_02/m333Dll/m333Dll.rel +cd3532af828e8217924296c4cadbd31ddd915a05 build/GMPP01_02/m402Dll/m402Dll.rel +b2e3cdd9167c579e02c6ecc5643b6aadcc5b6a99 build/GMPP01_02/m403Dll/m403Dll.rel +56c825a1e0bbe33e3a0e1e70396c21af9b575243 build/GMPP01_02/m404Dll/m404Dll.rel +cc76ded0a41aea632fd9b3c5e37fe6d847107d91 build/GMPP01_02/m405Dll/m405Dll.rel +5c2aee9c8f10dc763c9ff763874f3a4b58880f02 build/GMPP01_02/m406Dll/m406Dll.rel +7133701b7c28a66f9d24ab64081e472d458dad51 build/GMPP01_02/m407dll/m407dll.rel +6f2552516b8e151ccbed99ee6730ca2cb2e0fd49 build/GMPP01_02/m408Dll/m408Dll.rel +71a91946651b40cc217b08d293f23fbf01c7407a build/GMPP01_02/m409Dll/m409Dll.rel +e938c2f354224a6a5a7b015f9abae596298788ee build/GMPP01_02/m410Dll/m410Dll.rel +e29bae44753c7ce8e5213881b10d6b27c02c4f7a build/GMPP01_02/m411Dll/m411Dll.rel +23da1cff677f992bb76dcbf4a9f9061542b4be7f build/GMPP01_02/m412Dll/m412Dll.rel +6ed381e5b4d75eeab2c3ded39473a482f61ee32d build/GMPP01_02/m413Dll/m413Dll.rel +902f32cc75ac0030c7c531dbeefda055bc8d7f27 build/GMPP01_02/m414Dll/m414Dll.rel +7063ae505540bafebf802128d8d2f394b7f6f921 build/GMPP01_02/m415Dll/m415Dll.rel +2979d5f934b9099116fbd943a91d6a3bb56e6ec0 build/GMPP01_02/m416Dll/m416Dll.rel +b20482a2af7c839456fe7580dcbd92ca9984ec71 build/GMPP01_02/m417Dll/m417Dll.rel +762f56820668c74cdcde436a08419bdb59a35a89 build/GMPP01_02/m418Dll/m418Dll.rel +5fba3dfcfca6ef78eb46833f665019bca641063e build/GMPP01_02/m419Dll/m419Dll.rel +bb514277a33821093fd2acfae2cb86531b317d17 build/GMPP01_02/m420dll/m420dll.rel +216ba8bbc8905f33370ae651d478f6bd56c17b27 build/GMPP01_02/m421Dll/m421Dll.rel +6c152ddb5f518c9c6444030dfc30ab53ef931b40 build/GMPP01_02/m422Dll/m422Dll.rel +db80fcb993ce09d808de29d2488f2b1ab2afc8cd build/GMPP01_02/m423Dll/m423Dll.rel +827da0897edcc2706a3623722430d4e70512c653 build/GMPP01_02/m424Dll/m424Dll.rel +26eb36bfc9106af2462a0d7e013f5321dbaecdd1 build/GMPP01_02/m425Dll/m425Dll.rel +04b649fb6eb248e506cf15fdcfbed3e915a80682 build/GMPP01_02/m426Dll/m426Dll.rel +810a1c91f794897862ac9b6a4e076a70c6b0238a build/GMPP01_02/m427Dll/m427Dll.rel +888af662a228e349ea6a0c60e19de74f8fa47914 build/GMPP01_02/m428Dll/m428Dll.rel +88b2330f175d1346a71f67491dcf9eff62d2d2d1 build/GMPP01_02/m429Dll/m429Dll.rel +e611007dd71ab515de65e9a6879f0508193fd58a build/GMPP01_02/m430Dll/m430Dll.rel +6a2b097a6d57c36bff5aaeb8c9ea2f01df7407ad build/GMPP01_02/m431Dll/m431Dll.rel +17b6a0c65c7cb759fc460fe7b8eed3dd7dc7184d build/GMPP01_02/m432Dll/m432Dll.rel +ce90f494ced6f2611603c247bdc733a458b5a523 build/GMPP01_02/m433Dll/m433Dll.rel +100fe402942821dc8e5753f3cada5e2bf5ab6214 build/GMPP01_02/m434Dll/m434Dll.rel +4936db381fa068395cff28c0d635c5ec7cc7218f build/GMPP01_02/m435Dll/m435Dll.rel +ba1c3bdc5f250996a5c873791347ce4c20b38692 build/GMPP01_02/m436Dll/m436Dll.rel +7273786a2995182baf9a85148c5974097999fe8e build/GMPP01_02/m437Dll/m437Dll.rel +d7c4bdf1729695a7348f8a36de2911db7aa24abb build/GMPP01_02/m438Dll/m438Dll.rel +4d5a719b49edb55e0b0b52c0d81b31c14d197d20 build/GMPP01_02/m439Dll/m439Dll.rel +469b18886221ae8a5b90f3e85b01ce6a01befb0b build/GMPP01_02/m440Dll/m440Dll.rel +7d6e99b67d2dde25d3fc75ac314c2a69be34137e build/GMPP01_02/m441Dll/m441Dll.rel +63af3c4f33fd362f17aa1be9f764d0549f92598d build/GMPP01_02/m442Dll/m442Dll.rel +5118a0bab1877455eae9002c3cc561d3360fd792 build/GMPP01_02/m443Dll/m443Dll.rel +a344672428b1e3a1d4bc3ce935472af529a6dd18 build/GMPP01_02/m444dll/m444dll.rel +02f7c52aa6fd4b21a5700615aeaee9ef59e6b9f3 build/GMPP01_02/m445Dll/m445Dll.rel +2ab71adae47a3d9632dcf45cf18ca0b1fc33d157 build/GMPP01_02/m446dll/m446dll.rel +0640357fe4d0148dac4bc382c8231410e24fe951 build/GMPP01_02/m447dll/m447dll.rel +78bcdd8d1fdb810784fca4d5bbec92c63e2e6b54 build/GMPP01_02/m448Dll/m448Dll.rel +fcf6e4b0089e19ffddf01a119c8c515a4acc943a build/GMPP01_02/m449Dll/m449Dll.rel +ebcf95781e8078813ed041dd0a869ae2e413679b build/GMPP01_02/m450Dll/m450Dll.rel +aa16b743f7b64f22abfd8bb93646883cc73bd7e0 build/GMPP01_02/m451Dll/m451Dll.rel +f6fd7a6537e56c535d02ac4a48c9008605f93ea1 build/GMPP01_02/m453Dll/m453Dll.rel +cc3431f55b523d474a952f3a0e927fac6b5402ab build/GMPP01_02/m455Dll/m455Dll.rel +09797251306bbd0f6fd712d6f832128ca8c58690 build/GMPP01_02/m456Dll/m456Dll.rel +8a992a09077fd5e1f6ca3e717547792938a519c1 build/GMPP01_02/m457Dll/m457Dll.rel +5dea2127d51d621b30d78b22cfa32327797e6e0b build/GMPP01_02/m458Dll/m458Dll.rel +e96dafe5949909cb7cc839174aa38e8e6661a63b build/GMPP01_02/m459dll/m459dll.rel +ea1e0bda22675840d39c74117e2a11ffe45f8dd4 build/GMPP01_02/m460Dll/m460Dll.rel +8d515f3b92a786df53bb88291b5cfc4bc59a3c8d build/GMPP01_02/m461Dll/m461Dll.rel +f02ba47e4459d9b0de174c5619a4efe61942962d build/GMPP01_02/m462Dll/m462Dll.rel +352ad6d84ded6cf28b9ff2f9e5da8812ac9164db build/GMPP01_02/m463Dll/m463Dll.rel +4705ada9d259a81ab2815fee3516f6217d848dd9 build/GMPP01_02/mentDll/mentDll.rel +b966ce340e98dbda624ff80f96c78d51ff1ed687 build/GMPP01_02/messDll/messDll.rel +7a3fed787df2d1bc942efd56a160eaf59605b94f build/GMPP01_02/mgmodedll/mgmodedll.rel +1e5bf1777b1470fcead2174c25b291b8f0513284 build/GMPP01_02/modeltestDll/modeltestDll.rel +d958038528a774801a4f5a0aee9e7aaae4bd94ce build/GMPP01_02/modeseldll/modeseldll.rel +a3e1e06937703f98191f4080e092bf06c4f449b3 build/GMPP01_02/mpexDll/mpexDll.rel +86ff8288bb92472376d02cade1d3c9603b613c57 build/GMPP01_02/msetupDll/msetupDll.rel +24b3e03e35f5bd395ef80a14babae724b7414190 build/GMPP01_02/mstory2Dll/mstory2Dll.rel +ccac71c67e5171a02b4a086df4d2daad81455466 build/GMPP01_02/mstory3Dll/mstory3Dll.rel +a8eee3981f4965412490cb9eef76aaa798957db1 build/GMPP01_02/mstory4Dll/mstory4Dll.rel +4ef3463c5dc60771468c6ab033dda1391c39d689 build/GMPP01_02/mstoryDll/mstoryDll.rel +45619d95e61d9296f25d94d7c6756f397fb89bee build/GMPP01_02/nisDll/nisDll.rel +1304967e3aa58a46492d4c736a7c86cf8a3b2e11 build/GMPP01_02/option/option.rel +7845814c6be2546930cfd8e0b9dec263fc1a959f build/GMPP01_02/present/present.rel +d9bd10433d1e2a6c0c4d9f942b766d743f99deec build/GMPP01_02/resultDll/resultDll.rel +c13262cf14f00e1d70bd65d20bbf988479816ca7 build/GMPP01_02/safDll/safDll.rel +51f53e1398c86c5a22251a457e3af86339b4b11f build/GMPP01_02/selmenuDll/selmenuDll.rel +af869e37d004f687fab2ff6897d75d6c15e31a00 build/GMPP01_02/staffDll/staffDll.rel +21de7aff7d39f8e130b4ef7602b8de85e51cf3e5 build/GMPP01_02/subchrselDll/subchrselDll.rel +70ee81af67a4f55de2fef65823583d22312f09be build/GMPP01_02/w01Dll/w01Dll.rel +33b5663ece821df4dbc50870e00de0e22e099efd build/GMPP01_02/w02Dll/w02Dll.rel +97aa16f847cdf2d6fd014f06df14c55f5f02024d build/GMPP01_02/w03Dll/w03Dll.rel +135cf03d803b9d8d39721b2a96769909aa719ee6 build/GMPP01_02/w04Dll/w04Dll.rel +e6d07092b69cc3b0514d9c12e3f5949edeb25f5f build/GMPP01_02/w05Dll/w05Dll.rel +0d5445461f58fac4c043c75bed7237b7f4045188 build/GMPP01_02/w06Dll/w06Dll.rel +5678fedd4a0490aeb9703328e959fdedea7da117 build/GMPP01_02/w10Dll/w10Dll.rel +58ae9e311cc8bd0291921480f423e2ad4774e1a2 build/GMPP01_02/w20Dll/w20Dll.rel +8ea052be8c7585a1ab152682a0698b631c5b566f build/GMPP01_02/w21Dll/w21Dll.rel +8987f11fafd11f69161ca275967afe9c8b4e7b20 build/GMPP01_02/ztardll/ztardll.rel +d59c60b0149a85782fa98d1a4da6cc768a09b473 build/GMPP01_02/E3setupDLL/E3setupDLL.rel +eba8a17e8b263bc9cd601b1aea7e698a8785416a build/GMPP01_02/m300Dll/m300Dll.rel +c457a4a45ebae776331484ba94f5798041a77a57 build/GMPP01_02/m401Dll/m401Dll.rel diff --git a/config/GMPP01_02/config.yml b/config/GMPP01_02/config.yml new file mode 100644 index 00000000..fa72e0a2 --- /dev/null +++ b/config/GMPP01_02/config.yml @@ -0,0 +1,643 @@ +object_base: orig/GMPP01_02 +object: sys/main.dol +hash: 65ef91650e9201047f50a3c39c7693a21fff2b29 +symbols: config/GMPP01_00/symbols.txt +splits: config/GMPP01_00/splits.txt +quick_analysis: true # Faster re-runs after initial analysis +mw_comment_version: 10 # GC 2.6 linker +force_active: [__register_global_object, lbl_801D40D0] + +detect_objects: true +detect_strings: true +fill_gaps: true +modules: +- object: files/dll/_minigameDll.rel + hash: 7101a759bcd45edee5bbc00a36d347c1f787c2a1 + symbols: config/GMPP01_00/rels/_minigameDll/symbols.txt + splits: config/GMPP01_00/rels/_minigameDll/splits.txt + links: [] +- object: files/dll/bootDll.rel + hash: b60fe8dd6faa20663224d64651b80c25b9b202ef + symbols: config/GMPP01_00/rels/bootDll/symbols.txt + splits: config/GMPP01_00/rels/bootDll/splits.txt + links: [] + extract: + - symbol: nintendoData + binary: nintendoData.bin + header: nintendoData.inc +- object: files/dll/instDll.rel + hash: eef3ac50923ab2f20d588ef10ae15f3bc739f2b8 + symbols: config/GMPP01_00/rels/instDll/symbols.txt + splits: config/GMPP01_00/rels/instDll/splits.txt + links: [] +- object: files/dll/m302Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m302Dll/symbols.txt + splits: config/GMPP01_00/rels/m302Dll/splits.txt + links: [] +- object: files/dll/m303Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m303Dll/symbols.txt + splits: config/GMPP01_00/rels/m303Dll/splits.txt + links: [] +- object: files/dll/m330Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m330Dll/symbols.txt + splits: config/GMPP01_00/rels/m330Dll/splits.txt + links: [] +- object: files/dll/m333Dll.rel + hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9 + symbols: config/GMPP01_00/rels/m333Dll/symbols.txt + splits: config/GMPP01_00/rels/m333Dll/splits.txt + links: [] +- object: files/dll/m402Dll.rel + hash: cd3532af828e8217924296c4cadbd31ddd915a05 + symbols: config/GMPP01_00/rels/m402Dll/symbols.txt + splits: config/GMPP01_00/rels/m402Dll/splits.txt + links: [] +- object: files/dll/m403Dll.rel + hash: b2e3cdd9167c579e02c6ecc5643b6aadcc5b6a99 + symbols: config/GMPP01_00/rels/m403Dll/symbols.txt + splits: config/GMPP01_00/rels/m403Dll/splits.txt + links: [] +- object: files/dll/m404Dll.rel + hash: 56c825a1e0bbe33e3a0e1e70396c21af9b575243 + symbols: config/GMPP01_00/rels/m404Dll/symbols.txt + splits: config/GMPP01_00/rels/m404Dll/splits.txt + links: [] +- object: files/dll/m405Dll.rel + hash: cc76ded0a41aea632fd9b3c5e37fe6d847107d91 + symbols: config/GMPP01_00/rels/m405Dll/symbols.txt + splits: config/GMPP01_00/rels/m405Dll/splits.txt + links: [] +- object: files/dll/m406Dll.rel + hash: 5c2aee9c8f10dc763c9ff763874f3a4b58880f02 + symbols: config/GMPP01_00/rels/m406Dll/symbols.txt + splits: config/GMPP01_00/rels/m406Dll/splits.txt + links: [] +- object: files/dll/m407dll.rel + hash: 7133701b7c28a66f9d24ab64081e472d458dad51 + symbols: config/GMPP01_00/rels/m407dll/symbols.txt + splits: config/GMPP01_00/rels/m407dll/splits.txt + links: [] +- object: files/dll/m408Dll.rel + hash: 6f2552516b8e151ccbed99ee6730ca2cb2e0fd49 + symbols: config/GMPP01_00/rels/m408Dll/symbols.txt + splits: config/GMPP01_00/rels/m408Dll/splits.txt + links: [] +- object: files/dll/m409Dll.rel + hash: 71a91946651b40cc217b08d293f23fbf01c7407a + symbols: config/GMPP01_00/rels/m409Dll/symbols.txt + splits: config/GMPP01_00/rels/m409Dll/splits.txt + links: [] +- object: files/dll/m410Dll.rel + hash: e938c2f354224a6a5a7b015f9abae596298788ee + symbols: config/GMPP01_00/rels/m410Dll/symbols.txt + splits: config/GMPP01_00/rels/m410Dll/splits.txt + links: [] +- object: files/dll/m411Dll.rel + hash: e29bae44753c7ce8e5213881b10d6b27c02c4f7a + symbols: config/GMPP01_00/rels/m411Dll/symbols.txt + splits: config/GMPP01_00/rels/m411Dll/splits.txt + links: [] +- object: files/dll/m412Dll.rel + hash: 23da1cff677f992bb76dcbf4a9f9061542b4be7f + symbols: config/GMPP01_00/rels/m412Dll/symbols.txt + splits: config/GMPP01_00/rels/m412Dll/splits.txt + links: [] +- object: files/dll/m413Dll.rel + hash: 6ed381e5b4d75eeab2c3ded39473a482f61ee32d + symbols: config/GMPP01_00/rels/m413Dll/symbols.txt + splits: config/GMPP01_00/rels/m413Dll/splits.txt + links: [] +- object: files/dll/m414Dll.rel + hash: 902f32cc75ac0030c7c531dbeefda055bc8d7f27 + symbols: config/GMPP01_00/rels/m414Dll/symbols.txt + splits: config/GMPP01_00/rels/m414Dll/splits.txt + links: [] +- object: files/dll/m415Dll.rel + hash: 7063ae505540bafebf802128d8d2f394b7f6f921 + symbols: config/GMPP01_00/rels/m415Dll/symbols.txt + splits: config/GMPP01_00/rels/m415Dll/splits.txt + links: [] +- object: files/dll/m416Dll.rel + hash: 2979d5f934b9099116fbd943a91d6a3bb56e6ec0 + symbols: config/GMPP01_00/rels/m416Dll/symbols.txt + splits: config/GMPP01_00/rels/m416Dll/splits.txt + links: [] +- object: files/dll/m417Dll.rel + hash: b20482a2af7c839456fe7580dcbd92ca9984ec71 + symbols: config/GMPP01_00/rels/m417Dll/symbols.txt + splits: config/GMPP01_00/rels/m417Dll/splits.txt + links: [] +- object: files/dll/m418Dll.rel + hash: 762f56820668c74cdcde436a08419bdb59a35a89 + symbols: config/GMPP01_00/rels/m418Dll/symbols.txt + splits: config/GMPP01_00/rels/m418Dll/splits.txt + links: [] +- object: files/dll/m419Dll.rel + hash: 5fba3dfcfca6ef78eb46833f665019bca641063e + symbols: config/GMPP01_00/rels/m419Dll/symbols.txt + splits: config/GMPP01_00/rels/m419Dll/splits.txt + links: [] +- object: files/dll/m420dll.rel + hash: bb514277a33821093fd2acfae2cb86531b317d17 + symbols: config/GMPP01_00/rels/m420dll/symbols.txt + splits: config/GMPP01_00/rels/m420dll/splits.txt + links: [] +- object: files/dll/m421Dll.rel + hash: 216ba8bbc8905f33370ae651d478f6bd56c17b27 + symbols: config/GMPP01_00/rels/m421Dll/symbols.txt + splits: config/GMPP01_00/rels/m421Dll/splits.txt + links: [] +- object: files/dll/m422Dll.rel + hash: 6c152ddb5f518c9c6444030dfc30ab53ef931b40 + symbols: config/GMPP01_00/rels/m422Dll/symbols.txt + splits: config/GMPP01_00/rels/m422Dll/splits.txt + links: [] +- object: files/dll/m423Dll.rel + hash: db80fcb993ce09d808de29d2488f2b1ab2afc8cd + symbols: config/GMPP01_00/rels/m423Dll/symbols.txt + splits: config/GMPP01_00/rels/m423Dll/splits.txt + links: [] +- object: files/dll/m424Dll.rel + hash: 827da0897edcc2706a3623722430d4e70512c653 + symbols: config/GMPP01_00/rels/m424Dll/symbols.txt + splits: config/GMPP01_00/rels/m424Dll/splits.txt + links: [] +- object: files/dll/m425Dll.rel + hash: 26eb36bfc9106af2462a0d7e013f5321dbaecdd1 + symbols: config/GMPP01_00/rels/m425Dll/symbols.txt + splits: config/GMPP01_00/rels/m425Dll/splits.txt + links: [] +- object: files/dll/m426Dll.rel + hash: 04b649fb6eb248e506cf15fdcfbed3e915a80682 + symbols: config/GMPP01_00/rels/m426Dll/symbols.txt + splits: config/GMPP01_00/rels/m426Dll/splits.txt + links: [] +- object: files/dll/m427Dll.rel + hash: 810a1c91f794897862ac9b6a4e076a70c6b0238a + symbols: config/GMPP01_00/rels/m427Dll/symbols.txt + splits: config/GMPP01_00/rels/m427Dll/splits.txt + links: [] +- object: files/dll/m428Dll.rel + hash: 888af662a228e349ea6a0c60e19de74f8fa47914 + symbols: config/GMPP01_00/rels/m428Dll/symbols.txt + splits: config/GMPP01_00/rels/m428Dll/splits.txt + links: [] +- object: files/dll/m429Dll.rel + hash: 88b2330f175d1346a71f67491dcf9eff62d2d2d1 + symbols: config/GMPP01_00/rels/m429Dll/symbols.txt + splits: config/GMPP01_00/rels/m429Dll/splits.txt + links: [] +- object: files/dll/m430Dll.rel + hash: e611007dd71ab515de65e9a6879f0508193fd58a + symbols: config/GMPP01_00/rels/m430Dll/symbols.txt + splits: config/GMPP01_00/rels/m430Dll/splits.txt + links: [] +- object: files/dll/m431Dll.rel + hash: 6a2b097a6d57c36bff5aaeb8c9ea2f01df7407ad + symbols: config/GMPP01_00/rels/m431Dll/symbols.txt + splits: config/GMPP01_00/rels/m431Dll/splits.txt + links: [] +- object: files/dll/m432Dll.rel + hash: 17b6a0c65c7cb759fc460fe7b8eed3dd7dc7184d + symbols: config/GMPP01_00/rels/m432Dll/symbols.txt + splits: config/GMPP01_00/rels/m432Dll/splits.txt + links: [] +- object: files/dll/m433Dll.rel + hash: ce90f494ced6f2611603c247bdc733a458b5a523 + symbols: config/GMPP01_00/rels/m433Dll/symbols.txt + splits: config/GMPP01_00/rels/m433Dll/splits.txt + links: [] +- object: files/dll/m434Dll.rel + hash: 100fe402942821dc8e5753f3cada5e2bf5ab6214 + symbols: config/GMPP01_00/rels/m434Dll/symbols.txt + splits: config/GMPP01_00/rels/m434Dll/splits.txt + links: [] +- object: files/dll/m435Dll.rel + hash: 4936db381fa068395cff28c0d635c5ec7cc7218f + symbols: config/GMPP01_00/rels/m435Dll/symbols.txt + splits: config/GMPP01_00/rels/m435Dll/splits.txt + links: [] +- object: files/dll/m436Dll.rel + hash: ba1c3bdc5f250996a5c873791347ce4c20b38692 + symbols: config/GMPP01_00/rels/m436Dll/symbols.txt + splits: config/GMPP01_00/rels/m436Dll/splits.txt + links: [] +- object: files/dll/m437Dll.rel + hash: 7273786a2995182baf9a85148c5974097999fe8e + symbols: config/GMPP01_00/rels/m437Dll/symbols.txt + splits: config/GMPP01_00/rels/m437Dll/splits.txt + links: [] +- object: files/dll/m438Dll.rel + hash: d7c4bdf1729695a7348f8a36de2911db7aa24abb + symbols: config/GMPP01_00/rels/m438Dll/symbols.txt + splits: config/GMPP01_00/rels/m438Dll/splits.txt + links: [] +- object: files/dll/m439Dll.rel + hash: 4d5a719b49edb55e0b0b52c0d81b31c14d197d20 + symbols: config/GMPP01_00/rels/m439Dll/symbols.txt + splits: config/GMPP01_00/rels/m439Dll/splits.txt + links: [] +- object: files/dll/m440Dll.rel + hash: 469b18886221ae8a5b90f3e85b01ce6a01befb0b + symbols: config/GMPP01_00/rels/m440Dll/symbols.txt + splits: config/GMPP01_00/rels/m440Dll/splits.txt + links: [] +- object: files/dll/m441Dll.rel + hash: 7d6e99b67d2dde25d3fc75ac314c2a69be34137e + symbols: config/GMPP01_00/rels/m441Dll/symbols.txt + splits: config/GMPP01_00/rels/m441Dll/splits.txt + links: [] +- object: files/dll/m442Dll.rel + hash: 63af3c4f33fd362f17aa1be9f764d0549f92598d + symbols: config/GMPP01_00/rels/m442Dll/symbols.txt + splits: config/GMPP01_00/rels/m442Dll/splits.txt + links: [] +- object: files/dll/m443Dll.rel + hash: 5118a0bab1877455eae9002c3cc561d3360fd792 + symbols: config/GMPP01_00/rels/m443Dll/symbols.txt + splits: config/GMPP01_00/rels/m443Dll/splits.txt + links: [] +- object: files/dll/m444dll.rel + hash: a344672428b1e3a1d4bc3ce935472af529a6dd18 + symbols: config/GMPP01_02/rels/m444dll/symbols.txt + splits: config/GMPP01_02/rels/m444dll/splits.txt + links: [] +- object: files/dll/m445Dll.rel + hash: 02f7c52aa6fd4b21a5700615aeaee9ef59e6b9f3 + symbols: config/GMPP01_00/rels/m445Dll/symbols.txt + splits: config/GMPP01_00/rels/m445Dll/splits.txt + links: [] +- object: files/dll/m446dll.rel + hash: 2ab71adae47a3d9632dcf45cf18ca0b1fc33d157 + symbols: config/GMPP01_00/rels/m446dll/symbols.txt + splits: config/GMPP01_00/rels/m446dll/splits.txt + links: [] +- object: files/dll/m447dll.rel + hash: 0640357fe4d0148dac4bc382c8231410e24fe951 + symbols: config/GMPP01_00/rels/m447dll/symbols.txt + splits: config/GMPP01_00/rels/m447dll/splits.txt + links: [] +- object: files/dll/m448Dll.rel + hash: 78bcdd8d1fdb810784fca4d5bbec92c63e2e6b54 + symbols: config/GMPP01_00/rels/m448Dll/symbols.txt + splits: config/GMPP01_00/rels/m448Dll/splits.txt + links: [] +- object: files/dll/m449Dll.rel + hash: fcf6e4b0089e19ffddf01a119c8c515a4acc943a + symbols: config/GMPP01_00/rels/m449Dll/symbols.txt + splits: config/GMPP01_00/rels/m449Dll/splits.txt + links: [] +- object: files/dll/m450Dll.rel + hash: ebcf95781e8078813ed041dd0a869ae2e413679b + symbols: config/GMPP01_00/rels/m450Dll/symbols.txt + splits: config/GMPP01_00/rels/m450Dll/splits.txt + links: [] +- object: files/dll/m451Dll.rel + hash: aa16b743f7b64f22abfd8bb93646883cc73bd7e0 + symbols: config/GMPP01_00/rels/m451Dll/symbols.txt + splits: config/GMPP01_00/rels/m451Dll/splits.txt + links: [] +- object: files/dll/m453Dll.rel + hash: f6fd7a6537e56c535d02ac4a48c9008605f93ea1 + symbols: config/GMPP01_00/rels/m453Dll/symbols.txt + splits: config/GMPP01_00/rels/m453Dll/splits.txt + links: [] +- object: files/dll/m455Dll.rel + hash: cc3431f55b523d474a952f3a0e927fac6b5402ab + symbols: config/GMPP01_00/rels/m455Dll/symbols.txt + splits: config/GMPP01_00/rels/m455Dll/splits.txt + links: [] +- object: files/dll/m456Dll.rel + hash: 09797251306bbd0f6fd712d6f832128ca8c58690 + symbols: config/GMPP01_00/rels/m456Dll/symbols.txt + splits: config/GMPP01_00/rels/m456Dll/splits.txt + links: [] +- object: files/dll/m457Dll.rel + hash: 8a992a09077fd5e1f6ca3e717547792938a519c1 + symbols: config/GMPP01_00/rels/m457Dll/symbols.txt + splits: config/GMPP01_00/rels/m457Dll/splits.txt + links: [] +- object: files/dll/m458Dll.rel + hash: 5dea2127d51d621b30d78b22cfa32327797e6e0b + symbols: config/GMPP01_00/rels/m458Dll/symbols.txt + splits: config/GMPP01_00/rels/m458Dll/splits.txt + links: [] +- object: files/dll/m459dll.rel + hash: e96dafe5949909cb7cc839174aa38e8e6661a63b + symbols: config/GMPP01_00/rels/m459dll/symbols.txt + splits: config/GMPP01_00/rels/m459dll/splits.txt + links: [] +- object: files/dll/m460Dll.rel + hash: ea1e0bda22675840d39c74117e2a11ffe45f8dd4 + symbols: config/GMPP01_00/rels/m460Dll/symbols.txt + splits: config/GMPP01_00/rels/m460Dll/splits.txt + links: [] +- object: files/dll/m461Dll.rel + hash: 8d515f3b92a786df53bb88291b5cfc4bc59a3c8d + symbols: config/GMPP01_00/rels/m461Dll/symbols.txt + splits: config/GMPP01_00/rels/m461Dll/splits.txt + links: [] +- object: files/dll/m462Dll.rel + hash: f02ba47e4459d9b0de174c5619a4efe61942962d + symbols: config/GMPP01_00/rels/m462Dll/symbols.txt + splits: config/GMPP01_00/rels/m462Dll/splits.txt + links: [] +- object: files/dll/m463Dll.rel + hash: 352ad6d84ded6cf28b9ff2f9e5da8812ac9164db + symbols: config/GMPP01_00/rels/m463Dll/symbols.txt + splits: config/GMPP01_00/rels/m463Dll/splits.txt + links: [] +- object: files/dll/mentDll.rel + hash: 4705ada9d259a81ab2815fee3516f6217d848dd9 + symbols: config/GMPP01_00/rels/mentDll/symbols.txt + splits: config/GMPP01_00/rels/mentDll/splits.txt + links: [] +- object: files/dll/messDll.rel + hash: b966ce340e98dbda624ff80f96c78d51ff1ed687 + symbols: config/GMPP01_00/rels/messDll/symbols.txt + splits: config/GMPP01_00/rels/messDll/splits.txt + links: [] +- object: files/dll/mgmodedll.rel + hash: 7a3fed787df2d1bc942efd56a160eaf59605b94f + symbols: config/GMPP01_00/rels/mgmodedll/symbols.txt + splits: config/GMPP01_00/rels/mgmodedll/splits.txt + links: [] +- object: files/dll/modeltestDll.rel + hash: 1e5bf1777b1470fcead2174c25b291b8f0513284 + symbols: config/GMPP01_00/rels/modeltestDll/symbols.txt + splits: config/GMPP01_00/rels/modeltestDll/splits.txt + links: [] +- object: files/dll/modeseldll.rel + hash: d958038528a774801a4f5a0aee9e7aaae4bd94ce + symbols: config/GMPP01_00/rels/modeseldll/symbols.txt + splits: config/GMPP01_00/rels/modeseldll/splits.txt + links: [] +- object: files/dll/mpexDll.rel + hash: a3e1e06937703f98191f4080e092bf06c4f449b3 + symbols: config/GMPP01_00/rels/mpexDll/symbols.txt + splits: config/GMPP01_00/rels/mpexDll/splits.txt + links: [] +- object: files/dll/msetupDll.rel + hash: 86ff8288bb92472376d02cade1d3c9603b613c57 + symbols: config/GMPP01_00/rels/msetupDll/symbols.txt + splits: config/GMPP01_00/rels/msetupDll/splits.txt + links: [] +- object: files/dll/mstory2Dll.rel + hash: 24b3e03e35f5bd395ef80a14babae724b7414190 + symbols: config/GMPP01_02/rels/mstory2Dll/symbols.txt + splits: config/GMPP01_02/rels/mstory2Dll/splits.txt + links: [] +- object: files/dll/mstory3Dll.rel + hash: ccac71c67e5171a02b4a086df4d2daad81455466 + symbols: config/GMPP01_02/rels/mstory3Dll/symbols.txt + splits: config/GMPP01_02/rels/mstory3Dll/splits.txt + links: [] +- object: files/dll/mstory4Dll.rel + hash: a8eee3981f4965412490cb9eef76aaa798957db1 + symbols: config/GMPP01_00/rels/mstory4Dll/symbols.txt + splits: config/GMPP01_00/rels/mstory4Dll/splits.txt + links: [] +- object: files/dll/mstoryDll.rel + hash: 4ef3463c5dc60771468c6ab033dda1391c39d689 + symbols: config/GMPP01_02/rels/mstoryDll/symbols.txt + splits: config/GMPP01_02/rels/mstoryDll/splits.txt + links: [] +- object: files/dll/nisDll.rel + hash: 45619d95e61d9296f25d94d7c6756f397fb89bee + symbols: config/GMPP01_00/rels/nisDll/symbols.txt + splits: config/GMPP01_00/rels/nisDll/splits.txt + links: [] +- object: files/dll/option.rel + hash: 1304967e3aa58a46492d4c736a7c86cf8a3b2e11 + symbols: config/GMPP01_00/rels/option/symbols.txt + splits: config/GMPP01_00/rels/option/splits.txt + links: [] +- object: files/dll/present.rel + hash: 7845814c6be2546930cfd8e0b9dec263fc1a959f + symbols: config/GMPP01_00/rels/present/symbols.txt + splits: config/GMPP01_00/rels/present/splits.txt + links: [] +- object: files/dll/resultDll.rel + hash: d9bd10433d1e2a6c0c4d9f942b766d743f99deec + symbols: config/GMPP01_00/rels/resultDll/symbols.txt + splits: config/GMPP01_00/rels/resultDll/splits.txt + links: [] +- object: files/dll/safDll.rel + hash: c13262cf14f00e1d70bd65d20bbf988479816ca7 + symbols: config/GMPP01_00/rels/safDll/symbols.txt + splits: config/GMPP01_00/rels/safDll/splits.txt + links: [] +- object: files/dll/selmenuDll.rel + hash: 51f53e1398c86c5a22251a457e3af86339b4b11f + symbols: config/GMPP01_00/rels/selmenuDll/symbols.txt + splits: config/GMPP01_00/rels/selmenuDll/splits.txt + links: [] +- object: files/dll/staffDll.rel + hash: af869e37d004f687fab2ff6897d75d6c15e31a00 + symbols: config/GMPP01_00/rels/staffDll/symbols.txt + splits: config/GMPP01_00/rels/staffDll/splits.txt + links: [] +- object: files/dll/subchrselDll.rel + hash: 21de7aff7d39f8e130b4ef7602b8de85e51cf3e5 + symbols: config/GMPP01_00/rels/subchrselDll/symbols.txt + splits: config/GMPP01_00/rels/subchrselDll/splits.txt + links: [] +- object: files/dll/w01Dll.rel + hash: 70ee81af67a4f55de2fef65823583d22312f09be + symbols: config/GMPP01_00/rels/w01Dll/symbols.txt + splits: config/GMPP01_00/rels/w01Dll/splits.txt + links: [] +- object: files/dll/w02Dll.rel + hash: 33b5663ece821df4dbc50870e00de0e22e099efd + symbols: config/GMPP01_00/rels/w02Dll/symbols.txt + splits: config/GMPP01_00/rels/w02Dll/splits.txt + links: [] +- object: files/dll/w03Dll.rel + hash: 97aa16f847cdf2d6fd014f06df14c55f5f02024d + symbols: config/GMPP01_00/rels/w03Dll/symbols.txt + splits: config/GMPP01_00/rels/w03Dll/splits.txt + links: [] +- object: files/dll/w04Dll.rel + hash: 135cf03d803b9d8d39721b2a96769909aa719ee6 + symbols: config/GMPP01_00/rels/w04Dll/symbols.txt + splits: config/GMPP01_00/rels/w04Dll/splits.txt + links: [] +- object: files/dll/w05Dll.rel + hash: e6d07092b69cc3b0514d9c12e3f5949edeb25f5f + symbols: config/GMPP01_00/rels/w05Dll/symbols.txt + splits: config/GMPP01_00/rels/w05Dll/splits.txt + links: [] +- object: files/dll/w06Dll.rel + hash: 0d5445461f58fac4c043c75bed7237b7f4045188 + symbols: config/GMPP01_00/rels/w06Dll/symbols.txt + splits: config/GMPP01_00/rels/w06Dll/splits.txt + links: [] +- object: files/dll/w10Dll.rel + hash: 5678fedd4a0490aeb9703328e959fdedea7da117 + symbols: config/GMPE01_00/rels/w10Dll/symbols.txt + splits: config/GMPE01_00/rels/w10Dll/splits.txt + links: [] +- object: files/dll/w20Dll.rel + hash: 58ae9e311cc8bd0291921480f423e2ad4774e1a2 + symbols: config/GMPP01_00/rels/w20Dll/symbols.txt + splits: config/GMPP01_00/rels/w20Dll/splits.txt + links: [] +- object: files/dll/w21Dll.rel + hash: 8ea052be8c7585a1ab152682a0698b631c5b566f + symbols: config/GMPE01_00/rels/w21Dll/symbols.txt + splits: config/GMPE01_00/rels/w21Dll/splits.txt + links: [] +- object: files/dll/ztardll.rel + hash: 8987f11fafd11f69161ca275967afe9c8b4e7b20 + symbols: config/GMPP01_00/rels/ztardll/symbols.txt + splits: config/GMPP01_00/rels/ztardll/splits.txt + links: [] +- object: files/dll/E3setupDLL.rel + hash: d59c60b0149a85782fa98d1a4da6cc768a09b473 + symbols: config/GMPP01_00/rels/E3setupDLL/symbols.txt + splits: config/GMPP01_00/rels/E3setupDLL/splits.txt + links: [_minigameDll] +- object: files/dll/m300Dll.rel + hash: eba8a17e8b263bc9cd601b1aea7e698a8785416a + symbols: config/GMPP01_00/rels/m300Dll/symbols.txt + splits: config/GMPP01_00/rels/m300Dll/splits.txt + links: [_minigameDll] +- object: files/dll/m401Dll.rel + hash: c457a4a45ebae776331484ba94f5798041a77a57 + symbols: config/GMPP01_00/rels/m401Dll/symbols.txt + splits: config/GMPP01_00/rels/m401Dll/splits.txt + links: [_minigameDll] + +extract: +- symbol: ank8x8_4b + binary: ank8x8_4b.bin + header: ank8x8_4b.inc +- symbol: refMapData0 + binary: refMapData0.anm + header: refMapData0.inc +- symbol: refMapData1 + binary: refMapData1.anm + header: refMapData1.inc +- symbol: refMapData2 + binary: refMapData2.anm + header: refMapData2.inc +- symbol: refMapData3 + binary: refMapData3.anm + header: refMapData3.inc +- symbol: refMapData4 + binary: refMapData4.anm + header: refMapData4.inc +- symbol: toonMapData + binary: toonMapData.anm + header: toonMapData.inc +- symbol: toonMapData2 + binary: toonMapData2.anm + header: toonMapData2.inc +- symbol: hiliteData + binary: hiliteData.anm + header: hiliteData.inc +- symbol: hiliteData2 + binary: hiliteData2.anm + header: hiliteData2.inc +- symbol: hiliteData3 + binary: hiliteData3.anm + header: hiliteData3.inc +- symbol: hiliteData4 + binary: hiliteData4.anm + header: hiliteData4.inc +- symbol: Ascii8x8_1bpp + binary: Ascii8x8_1bpp.bin + header: Ascii8x8_1bpp.inc +- symbol: coveropen_en + binary: coveropen_en.bin + header: coveropen_en.inc +- symbol: fatalerror_en + binary: fatalerror_en.bin + header: fatalerror_en.inc +- symbol: loading_en + binary: loading_en.bin + header: loading_en.inc +- symbol: nodisc_en + binary: nodisc_en.bin + header: nodisc_en.inc +- symbol: retryerror_en + binary: retryerror_en.bin + header: retryerror_en.inc +- symbol: wrongdisc_en + binary: wrongdisc_en.bin + header: wrongdisc_en.inc +- symbol: coveropen_fr + binary: coveropen_fr.bin + header: coveropen_fr.inc +- symbol: fatalerror_fr + binary: fatalerror_fr.bin + header: fatalerror_fr.inc +- symbol: loading_fr + binary: loading_fr.bin + header: loading_fr.inc +- symbol: nodisc_fr + binary: nodisc_fr.bin + header: nodisc_fr.inc +- symbol: retryerror_fr + binary: retryerror_fr.bin + header: retryerror_fr.inc +- symbol: wrongdisc_fr + binary: wrongdisc_fr.bin + header: wrongdisc_fr.inc +- symbol: coveropen_ge + binary: coveropen_ge.bin + header: coveropen_ge.inc +- symbol: fatalerror_ge + binary: fatalerror_ge.bin + header: fatalerror_ge.inc +- symbol: loading_ge + binary: loading_ge.bin + header: loading_ge.inc +- symbol: nodisc_ge + binary: nodisc_ge.bin + header: nodisc_ge.inc +- symbol: retryerror_ge + binary: retryerror_ge.bin + header: retryerror_ge.inc +- symbol: wrongdisc_ge + binary: wrongdisc_ge.bin + header: wrongdisc_ge.inc +- symbol: coveropen_it + binary: coveropen_it.bin + header: coveropen_it.inc +- symbol: fatalerror_it + binary: fatalerror_it.bin + header: fatalerror_it.inc +- symbol: loading_it + binary: loading_it.bin + header: loading_it.inc +- symbol: nodisc_it + binary: nodisc_it.bin + header: nodisc_it.inc +- symbol: retryerror_it + binary: retryerror_it.bin + header: retryerror_it.inc +- symbol: wrongdisc_it + binary: wrongdisc_it.bin + header: wrongdisc_it.inc +- symbol: coveropen_sp + binary: coveropen_sp.bin + header: coveropen_sp.inc +- symbol: fatalerror_sp + binary: fatalerror_sp.bin + header: fatalerror_sp.inc +- symbol: loading_sp + binary: loading_sp.bin + header: loading_sp.inc +- symbol: nodisc_sp + binary: nodisc_sp.bin + header: nodisc_sp.inc +- symbol: retryerror_sp + binary: retryerror_sp.bin + header: retryerror_sp.inc +- symbol: wrongdisc_sp + binary: wrongdisc_sp.bin + header: wrongdisc_sp.inc diff --git a/config/GMPP01_02/rels/m444dll/splits.txt b/config/GMPP01_02/rels/m444dll/splits.txt new file mode 100644 index 00000000..531cd645 --- /dev/null +++ b/config/GMPP01_02/rels/m444dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_02/rels/m444dll/symbols.txt b/config/GMPP01_02/rels/m444dll/symbols.txt new file mode 100644 index 00000000..45016f3f --- /dev/null +++ b/config/GMPP01_02/rels/m444dll/symbols.txt @@ -0,0 +1,321 @@ +_prolog = .text:0x00000000; // type:function size:0x54 scope:global +_epilog = .text:0x00000054; // type:function size:0x4C scope:global +fn_1_A0 = .text:0x000000A0; // type:function size:0x3D0 +fn_1_470 = .text:0x00000470; // type:function size:0x3788 +fn_1_3BF8 = .text:0x00003BF8; // type:function size:0x1270 +fn_1_4E68 = .text:0x00004E68; // type:function size:0x7C4 +fn_1_562C = .text:0x0000562C; // type:function size:0x1C4 +fn_1_57F0 = .text:0x000057F0; // type:function size:0x6F4 +fn_1_5EE4 = .text:0x00005EE4; // type:function size:0x6F4 +fn_1_65D8 = .text:0x000065D8; // type:function size:0x824 +fn_1_6DFC = .text:0x00006DFC; // type:function size:0xBC +fn_1_6EB8 = .text:0x00006EB8; // type:function size:0xA0 +fn_1_6F58 = .text:0x00006F58; // type:function size:0x3B4 +fn_1_730C = .text:0x0000730C; // type:function size:0xC2C +fn_1_7F38 = .text:0x00007F38; // type:function size:0x2C4 +fn_1_81FC = .text:0x000081FC; // type:function size:0x90 +fn_1_828C = .text:0x0000828C; // type:function size:0xEC +fn_1_8378 = .text:0x00008378; // type:function size:0x128 +fn_1_84A0 = .text:0x000084A0; // type:function size:0x1F8 +fn_1_8698 = .text:0x00008698; // type:function size:0x7B4 +fn_1_8E4C = .text:0x00008E4C; // type:function size:0x648 +fn_1_9494 = .text:0x00009494; // type:function size:0x894 +fn_1_9D28 = .text:0x00009D28; // type:function size:0x3B4 +fn_1_A0DC = .text:0x0000A0DC; // type:function size:0xB70 +fn_1_AC4C = .text:0x0000AC4C; // type:function size:0x618 +fn_1_B264 = .text:0x0000B264; // type:function size:0x1108 +fn_1_C36C = .text:0x0000C36C; // type:function size:0x528 +fn_1_C894 = .text:0x0000C894; // type:function size:0x2F4 +fn_1_CB88 = .text:0x0000CB88; // type:function size:0x140 +fn_1_CCC8 = .text:0x0000CCC8; // type:function size:0x298 +fn_1_CF60 = .text:0x0000CF60; // type:function size:0x194 +fn_1_D0F4 = .text:0x0000D0F4; // type:function size:0x244 +fn_1_D338 = .text:0x0000D338; // type:function size:0x3A8 +fn_1_D6E0 = .text:0x0000D6E0; // type:function size:0x290 +fn_1_D970 = .text:0x0000D970; // type:function size:0x138 +fn_1_DAA8 = .text:0x0000DAA8; // type:function size:0x78 +fn_1_DB20 = .text:0x0000DB20; // type:function size:0x2C +fn_1_DB4C = .text:0x0000DB4C; // type:function size:0x42C +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0xC data:4byte +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 data:double +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x118 +lbl_1_data_118 = .data:0x00000118; // type:object size:0x28 +lbl_1_data_140 = .data:0x00000140; // type:object size:0x54 data:float +lbl_1_data_194 = .data:0x00000194; // type:object size:0x20 +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA data:string +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA data:string +lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0xD data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xD data:string +lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD data:string +lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0xB data:string +lbl_1_data_240 = .data:0x00000240; // type:object size:0x4 +lbl_1_data_244 = .data:0x00000244; // type:object size:0xA data:string +lbl_1_data_24E = .data:0x0000024E; // type:object size:0xA +lbl_1_data_258 = .data:0x00000258; // type:object size:0xC +lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C +lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 +lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0xA +lbl_1_data_2D2 = .data:0x000002D2; // type:object size:0xD data:string +lbl_1_data_2DF = .data:0x000002DF; // type:object size:0xD data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xD data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0xD data:string +lbl_1_data_306 = .data:0x00000306; // type:object size:0xD data:string +lbl_1_data_313 = .data:0x00000313; // type:object size:0xD data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0xD data:string +lbl_1_data_32D = .data:0x0000032D; // type:object size:0xD data:string +lbl_1_data_33A = .data:0x0000033A; // type:object size:0xD data:string +lbl_1_data_347 = .data:0x00000347; // type:object size:0xD data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0xD data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0xD data:string +lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD data:string +jumptable_1_data_388 = .data:0x00000388; // type:object size:0x1C scope:local +lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x8 +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x30 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x24 +lbl_1_data_400 = .data:0x00000400; // type:object size:0x54 +lbl_1_data_454 = .data:0x00000454; // type:object size:0xC +lbl_1_data_460 = .data:0x00000460; // type:object size:0x10 data:string +lbl_1_data_470 = .data:0x00000470; // type:object size:0x127C +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x140 data:2byte +lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x140 data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x8 data:float +lbl_1_bss_290 = .bss:0x00000290; // type:object size:0x18 data:4byte +lbl_1_bss_2A8 = .bss:0x000002A8; // type:object size:0x18 data:float +lbl_1_bss_2C0 = .bss:0x000002C0; // type:object size:0x10 data:2byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x2 data:2byte +lbl_1_bss_2D2 = .bss:0x000002D2; // type:object size:0x2 data:2byte +lbl_1_bss_2D4 = .bss:0x000002D4; // type:object size:0x2 data:2byte +lbl_1_bss_2D6 = .bss:0x000002D6; // type:object size:0x2 data:2byte +lbl_1_bss_2D8 = .bss:0x000002D8; // type:object size:0x2 data:2byte +lbl_1_bss_2DA = .bss:0x000002DA; // type:object size:0x2 data:2byte +lbl_1_bss_2DC = .bss:0x000002DC; // type:object size:0x2 data:2byte +lbl_1_bss_2E0 = .bss:0x000002E0; // type:object size:0x4 data:float +lbl_1_bss_2E4 = .bss:0x000002E4; // type:object size:0xC data:float +lbl_1_bss_2F0 = .bss:0x000002F0; // type:object size:0xC data:4byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC data:4byte +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0x4 data:4byte +lbl_1_bss_30C = .bss:0x0000030C; // type:object size:0x4 data:4byte +lbl_1_bss_310 = .bss:0x00000310; // type:object size:0x1 data:byte +lbl_1_bss_312 = .bss:0x00000312; // type:object size:0x2 data:2byte +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0xC data:float +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x8 data:2byte +lbl_1_bss_328 = .bss:0x00000328; // type:object size:0x24 data:float +lbl_1_bss_34C = .bss:0x0000034C; // type:object size:0x24 data:float +lbl_1_bss_370 = .bss:0x00000370; // type:object size:0x400 +lbl_1_bss_770 = .bss:0x00000770; // type:object size:0xC data:float +lbl_1_bss_77C = .bss:0x0000077C; // type:object size:0xC data:float +lbl_1_bss_788 = .bss:0x00000788; // type:object size:0xC +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x90 +lbl_1_bss_824 = .bss:0x00000824; // type:object size:0x3C +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x24 +lbl_1_bss_884 = .bss:0x00000884; // type:object size:0x1000 +lbl_1_bss_1884 = .bss:0x00001884; // type:object size:0x2 data:2byte +lbl_1_bss_1888 = .bss:0x00001888; // type:object size:0xC data:float +lbl_1_bss_1894 = .bss:0x00001894; // type:object size:0xC data:float +lbl_1_bss_18A0 = .bss:0x000018A0; // type:object size:0x14 +lbl_1_bss_18B4 = .bss:0x000018B4; // type:object size:0x3C +lbl_1_bss_18F0 = .bss:0x000018F0; // type:object size:0xC000 +lbl_1_bss_D8F0 = .bss:0x0000D8F0; // type:object size:0xC000 +lbl_1_bss_198F0 = .bss:0x000198F0; // type:object size:0x1A +lbl_1_bss_1990A = .bss:0x0001990A; // type:object size:0x2 data:2byte +lbl_1_bss_1990E = .bss:0x0001990E; // type:object size:0xB4 data:2byte +lbl_1_bss_199C2 = .bss:0x000199C2; // type:object size:0xB4 data:2byte diff --git a/config/GMPP01_02/rels/mstory2Dll/splits.txt b/config/GMPP01_02/rels/mstory2Dll/splits.txt new file mode 100644 index 00000000..4359ae61 --- /dev/null +++ b/config/GMPP01_02/rels/mstory2Dll/splits.txt @@ -0,0 +1,54 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B5A4 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B5A4 end:0x0001B9B8 + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPP01_02/rels/mstory2Dll/symbols.txt b/config/GMPP01_02/rels/mstory2Dll/symbols.txt new file mode 100644 index 00000000..7c85e645 --- /dev/null +++ b/config/GMPP01_02/rels/mstory2Dll/symbols.txt @@ -0,0 +1,709 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2A0 +_prolog = .text:0x00000344; // type:function size:0x54 scope:global +_epilog = .text:0x00000398; // type:function size:0x4C scope:global +fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 +fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 +fn_1_864 = .text:0x00000864; // type:function size:0x28 +fn_1_88C = .text:0x0000088C; // type:function size:0x20 +fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 +fn_1_984 = .text:0x00000984; // type:function size:0xC8 +fn_1_A4C = .text:0x00000A4C; // type:function size:0xBC +fn_1_B08 = .text:0x00000B08; // type:function size:0xBC +fn_1_BC4 = .text:0x00000BC4; // type:function size:0x4 +fn_1_BC8 = .text:0x00000BC8; // type:function size:0x20 +fn_1_BE8 = .text:0x00000BE8; // type:function size:0x28 +fn_1_C10 = .text:0x00000C10; // type:function size:0x20 +fn_1_C30 = .text:0x00000C30; // type:function size:0x24 +fn_1_C54 = .text:0x00000C54; // type:function size:0x4 +fn_1_C58 = .text:0x00000C58; // type:function size:0xA48 +fn_1_16A0 = .text:0x000016A0; // type:function size:0x1BC +fn_1_185C = .text:0x0000185C; // type:function size:0x1D8 +fn_1_1A34 = .text:0x00001A34; // type:function size:0x60 +fn_1_1A94 = .text:0x00001A94; // type:function size:0x68 +fn_1_1AFC = .text:0x00001AFC; // type:function size:0xAC +fn_1_1BA8 = .text:0x00001BA8; // type:function size:0xBC +fn_1_1C64 = .text:0x00001C64; // type:function size:0xB4 +fn_1_1D18 = .text:0x00001D18; // type:function size:0x34 +fn_1_1D4C = .text:0x00001D4C; // type:function size:0x40 +fn_1_1D8C = .text:0x00001D8C; // type:function size:0x70 +fn_1_1DFC = .text:0x00001DFC; // type:function size:0x188 +fn_1_1F84 = .text:0x00001F84; // type:function size:0x2E0 +fn_1_2264 = .text:0x00002264; // type:function size:0x90 +fn_1_22F4 = .text:0x000022F4; // type:function size:0x48 +fn_1_233C = .text:0x0000233C; // type:function size:0x54 +fn_1_2390 = .text:0x00002390; // type:function size:0x3C0 +fn_1_2750 = .text:0x00002750; // type:function size:0x10 +fn_1_2760 = .text:0x00002760; // type:function size:0x10 +fn_1_2770 = .text:0x00002770; // type:function size:0xB8 +fn_1_2828 = .text:0x00002828; // type:function size:0x120 +fn_1_2948 = .text:0x00002948; // type:function size:0x3B8 +fn_1_2D00 = .text:0x00002D00; // type:function size:0x7F4 +fn_1_34F4 = .text:0x000034F4; // type:function size:0x88 +fn_1_357C = .text:0x0000357C; // type:function size:0x94 +fn_1_3610 = .text:0x00003610; // type:function size:0x58 +fn_1_3668 = .text:0x00003668; // type:function size:0xEC +fn_1_3754 = .text:0x00003754; // type:function size:0xC4 +fn_1_3818 = .text:0x00003818; // type:function size:0x3C +fn_1_3854 = .text:0x00003854; // type:function size:0x44 +fn_1_3898 = .text:0x00003898; // type:function size:0x26C +fn_1_3B04 = .text:0x00003B04; // type:function size:0x26C +fn_1_3D70 = .text:0x00003D70; // type:function size:0x27C +fn_1_3FEC = .text:0x00003FEC; // type:function size:0x2B4 +fn_1_42A0 = .text:0x000042A0; // type:function size:0x46C +fn_1_470C = .text:0x0000470C; // type:function size:0x454 +fn_1_4B60 = .text:0x00004B60; // type:function size:0x48C +fn_1_4FEC = .text:0x00004FEC; // type:function size:0x658 +fn_1_5644 = .text:0x00005644; // type:function size:0x4C4 +fn_1_5B08 = .text:0x00005B08; // type:function size:0x4FC +fn_1_6004 = .text:0x00006004; // type:function size:0x6C8 +fn_1_66CC = .text:0x000066CC; // type:function size:0x38 +fn_1_6704 = .text:0x00006704; // type:function size:0xD4 +fn_1_67D8 = .text:0x000067D8; // type:function size:0x198 +fn_1_6970 = .text:0x00006970; // type:function size:0x34 +fn_1_69A4 = .text:0x000069A4; // type:function size:0x40 +fn_1_69E4 = .text:0x000069E4; // type:function size:0xAC +fn_1_6A90 = .text:0x00006A90; // type:function size:0x2E8 +fn_1_6D78 = .text:0x00006D78; // type:function size:0x44 +fn_1_6DBC = .text:0x00006DBC; // type:function size:0x1F4 +fn_1_6FB0 = .text:0x00006FB0; // type:function size:0xB4 +fn_1_7064 = .text:0x00007064; // type:function size:0x178 +fn_1_71DC = .text:0x000071DC; // type:function size:0x68 +fn_1_7244 = .text:0x00007244; // type:function size:0x140 +fn_1_7384 = .text:0x00007384; // type:function size:0xA2C +fn_1_7DB0 = .text:0x00007DB0; // type:function size:0x1A4 +fn_1_7F54 = .text:0x00007F54; // type:function size:0x118 +fn_1_806C = .text:0x0000806C; // type:function size:0x8C +fn_1_80F8 = .text:0x000080F8; // type:function size:0x488 +fn_1_8580 = .text:0x00008580; // type:function size:0x5C +fn_1_85DC = .text:0x000085DC; // type:function size:0x1F8 +fn_1_87D4 = .text:0x000087D4; // type:function size:0x2E8 +fn_1_8ABC = .text:0x00008ABC; // type:function size:0x578 +fn_1_9034 = .text:0x00009034; // type:function size:0x164 +fn_1_9198 = .text:0x00009198; // type:function size:0x124 +fn_1_92BC = .text:0x000092BC; // type:function size:0x4AC +fn_1_9768 = .text:0x00009768; // type:function size:0xB4 +fn_1_981C = .text:0x0000981C; // type:function size:0x138 +fn_1_9954 = .text:0x00009954; // type:function size:0xBC +fn_1_9A10 = .text:0x00009A10; // type:function size:0x1C4 +fn_1_9BD4 = .text:0x00009BD4; // type:function size:0xE4 +fn_1_9CB8 = .text:0x00009CB8; // type:function size:0x214 +fn_1_9ECC = .text:0x00009ECC; // type:function size:0x110 +fn_1_9FDC = .text:0x00009FDC; // type:function size:0x2AC +fn_1_A288 = .text:0x0000A288; // type:function size:0x220 +fn_1_A4A8 = .text:0x0000A4A8; // type:function size:0xE4 +fn_1_A58C = .text:0x0000A58C; // type:function size:0x2BC +fn_1_A848 = .text:0x0000A848; // type:function size:0x2C8 +fn_1_AB10 = .text:0x0000AB10; // type:function size:0x2A0 +fn_1_ADB0 = .text:0x0000ADB0; // type:function size:0xAC +fn_1_AE5C = .text:0x0000AE5C; // type:function size:0x364 +fn_1_B1C0 = .text:0x0000B1C0; // type:function size:0x8C +fn_1_B24C = .text:0x0000B24C; // type:function size:0x130 +fn_1_B37C = .text:0x0000B37C; // type:function size:0x68 +fn_1_B3E4 = .text:0x0000B3E4; // type:function size:0x134 +fn_1_B518 = .text:0x0000B518; // type:function size:0x8C +fn_1_B5A4 = .text:0x0000B5A4; // type:function size:0x3E0 +fn_1_B984 = .text:0x0000B984; // type:function size:0x5C +fn_1_B9E0 = .text:0x0000B9E0; // type:function size:0xB0 +fn_1_BA90 = .text:0x0000BA90; // type:function size:0x360 +fn_1_BDF0 = .text:0x0000BDF0; // type:function size:0x158 +fn_1_BF48 = .text:0x0000BF48; // type:function size:0x328 +fn_1_C270 = .text:0x0000C270; // type:function size:0x250 +fn_1_C4C0 = .text:0x0000C4C0; // type:function size:0xB4 +fn_1_C574 = .text:0x0000C574; // type:function size:0x228 +fn_1_C79C = .text:0x0000C79C; // type:function size:0xBC +fn_1_C858 = .text:0x0000C858; // type:function size:0x2B4 +fn_1_CB0C = .text:0x0000CB0C; // type:function size:0x1C0 +fn_1_CCCC = .text:0x0000CCCC; // type:function size:0xAC +fn_1_CD78 = .text:0x0000CD78; // type:function size:0x2B8 +fn_1_D030 = .text:0x0000D030; // type:function size:0x1F4 +fn_1_D224 = .text:0x0000D224; // type:function size:0xAC +fn_1_D2D0 = .text:0x0000D2D0; // type:function size:0xC4 +fn_1_D394 = .text:0x0000D394; // type:function size:0xE4 +fn_1_D478 = .text:0x0000D478; // type:function size:0x2EC +fn_1_D764 = .text:0x0000D764; // type:function size:0x134 +fn_1_D898 = .text:0x0000D898; // type:function size:0x2C0 +fn_1_DB58 = .text:0x0000DB58; // type:function size:0xFC +fn_1_DC54 = .text:0x0000DC54; // type:function size:0x170 +fn_1_DDC4 = .text:0x0000DDC4; // type:function size:0x3F4 +fn_1_E1B8 = .text:0x0000E1B8; // type:function size:0x8C +fn_1_E244 = .text:0x0000E244; // type:function size:0xF0 +fn_1_E334 = .text:0x0000E334; // type:function size:0x23C +fn_1_E570 = .text:0x0000E570; // type:function size:0xC8 +fn_1_E638 = .text:0x0000E638; // type:function size:0x2B4 +fn_1_E8EC = .text:0x0000E8EC; // type:function size:0x140 +fn_1_EA2C = .text:0x0000EA2C; // type:function size:0x134 +fn_1_EB60 = .text:0x0000EB60; // type:function size:0x8C +fn_1_EBEC = .text:0x0000EBEC; // type:function size:0x3E0 +fn_1_EFCC = .text:0x0000EFCC; // type:function size:0x5C +fn_1_F028 = .text:0x0000F028; // type:function size:0x128 +fn_1_F150 = .text:0x0000F150; // type:function size:0xDC +fn_1_F22C = .text:0x0000F22C; // type:function size:0xD0 +fn_1_F2FC = .text:0x0000F2FC; // type:function size:0xD4 +fn_1_F3D0 = .text:0x0000F3D0; // type:function size:0x468 +fn_1_F838 = .text:0x0000F838; // type:function size:0x4 +fn_1_F83C = .text:0x0000F83C; // type:function size:0x78 +fn_1_F8B4 = .text:0x0000F8B4; // type:function size:0x548 +fn_1_FDFC = .text:0x0000FDFC; // type:function size:0xB4 +fn_1_FEB0 = .text:0x0000FEB0; // type:function size:0x228 +fn_1_100D8 = .text:0x000100D8; // type:function size:0xBC +fn_1_10194 = .text:0x00010194; // type:function size:0x2B4 +fn_1_10448 = .text:0x00010448; // type:function size:0x1BC +fn_1_10604 = .text:0x00010604; // type:function size:0xAC +fn_1_106B0 = .text:0x000106B0; // type:function size:0x29C +fn_1_1094C = .text:0x0001094C; // type:function size:0x2B4 +fn_1_10C00 = .text:0x00010C00; // type:function size:0x1F4 +fn_1_10DF4 = .text:0x00010DF4; // type:function size:0xAC +fn_1_10EA0 = .text:0x00010EA0; // type:function size:0xE4 +fn_1_10F84 = .text:0x00010F84; // type:function size:0xC4 +fn_1_11048 = .text:0x00011048; // type:function size:0xE4 +fn_1_1112C = .text:0x0001112C; // type:function size:0x2EC +fn_1_11418 = .text:0x00011418; // type:function size:0x134 +fn_1_1154C = .text:0x0001154C; // type:function size:0x2EC +fn_1_11838 = .text:0x00011838; // type:function size:0xFC +fn_1_11934 = .text:0x00011934; // type:function size:0x164 +fn_1_11A98 = .text:0x00011A98; // type:function size:0x118 +fn_1_11BB0 = .text:0x00011BB0; // type:function size:0x420 +fn_1_11FD0 = .text:0x00011FD0; // type:function size:0x8C +fn_1_1205C = .text:0x0001205C; // type:function size:0x130 +fn_1_1218C = .text:0x0001218C; // type:function size:0x23C +fn_1_123C8 = .text:0x000123C8; // type:function size:0x1A4 +fn_1_1256C = .text:0x0001256C; // type:function size:0x124 +fn_1_12690 = .text:0x00012690; // type:function size:0x8C +fn_1_1271C = .text:0x0001271C; // type:function size:0x3AC +fn_1_12AC8 = .text:0x00012AC8; // type:function size:0x48 +fn_1_12B10 = .text:0x00012B10; // type:function size:0x2C4 +fn_1_12DD4 = .text:0x00012DD4; // type:function size:0x37C +fn_1_13150 = .text:0x00013150; // type:function size:0x70 +fn_1_131C0 = .text:0x000131C0; // type:function size:0xA4 +fn_1_13264 = .text:0x00013264; // type:function size:0x5C4 +fn_1_13828 = .text:0x00013828; // type:function size:0xA4 +fn_1_138CC = .text:0x000138CC; // type:function size:0x14C +fn_1_13A18 = .text:0x00013A18; // type:function size:0x1A0 +fn_1_13BB8 = .text:0x00013BB8; // type:function size:0xB4 +fn_1_13C6C = .text:0x00013C6C; // type:function size:0x348 +fn_1_13FB4 = .text:0x00013FB4; // type:function size:0xEC +fn_1_140A0 = .text:0x000140A0; // type:function size:0xCC +fn_1_1416C = .text:0x0001416C; // type:function size:0x330 +fn_1_1449C = .text:0x0001449C; // type:function size:0x3CC +fn_1_14868 = .text:0x00014868; // type:function size:0x234 +fn_1_14A9C = .text:0x00014A9C; // type:function size:0xAC +fn_1_14B48 = .text:0x00014B48; // type:function size:0xF8 +fn_1_14C40 = .text:0x00014C40; // type:function size:0x32C +fn_1_14F6C = .text:0x00014F6C; // type:function size:0x1C8 +fn_1_15134 = .text:0x00015134; // type:function size:0xAC +fn_1_151E0 = .text:0x000151E0; // type:function size:0xE4 +fn_1_152C4 = .text:0x000152C4; // type:function size:0xE4 +fn_1_153A8 = .text:0x000153A8; // type:function size:0x2C0 +fn_1_15668 = .text:0x00015668; // type:function size:0xE4 +fn_1_1574C = .text:0x0001574C; // type:function size:0x1F8 +fn_1_15944 = .text:0x00015944; // type:function size:0xAC +fn_1_159F0 = .text:0x000159F0; // type:function size:0x2EC +fn_1_15CDC = .text:0x00015CDC; // type:function size:0x8C +fn_1_15D68 = .text:0x00015D68; // type:function size:0xF0 +fn_1_15E58 = .text:0x00015E58; // type:function size:0x118 +fn_1_15F70 = .text:0x00015F70; // type:function size:0xF0 +fn_1_16060 = .text:0x00016060; // type:function size:0x118 +fn_1_16178 = .text:0x00016178; // type:function size:0x8C +fn_1_16204 = .text:0x00016204; // type:function size:0x3AC +fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C +fn_1_1661C = .text:0x0001660C; // type:function size:0x110 +fn_1_1670C = .text:0x0001671C; // type:function size:0x194 +fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 +fn_1_16984 = .text:0x00016984; // type:function size:0x50 +fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 +fn_1_169D8 = .text:0x000169D8; // type:function size:0xF4 +fn_1_16ACC = .text:0x00016ACC; // type:function size:0x4F4 +fn_1_16FC0 = .text:0x00016FC0; // type:function size:0xB4 +fn_1_17074 = .text:0x00017074; // type:function size:0x208 +fn_1_1727C = .text:0x0001727C; // type:function size:0xBC +fn_1_17338 = .text:0x00017338; // type:function size:0x294 +fn_1_175CC = .text:0x000175CC; // type:function size:0x180 +fn_1_1774C = .text:0x0001774C; // type:function size:0xAC +fn_1_177F8 = .text:0x000177F8; // type:function size:0x278 +fn_1_17A70 = .text:0x00017A70; // type:function size:0x128 +fn_1_17B98 = .text:0x00017B98; // type:function size:0xAC +fn_1_17C44 = .text:0x00017C44; // type:function size:0x220 +fn_1_17E64 = .text:0x00017E64; // type:function size:0xE4 +fn_1_17F48 = .text:0x00017F48; // type:function size:0x190 +fn_1_180D8 = .text:0x000180D8; // type:function size:0xAC +fn_1_18184 = .text:0x00018184; // type:function size:0x284 +fn_1_18408 = .text:0x00018408; // type:function size:0x8C +fn_1_18494 = .text:0x00018494; // type:function size:0x23C +fn_1_186D0 = .text:0x000186D0; // type:function size:0x220 +fn_1_188F0 = .text:0x000188F0; // type:function size:0x144 +fn_1_18A34 = .text:0x00018A34; // type:function size:0x8C +fn_1_18AC0 = .text:0x00018AC0; // type:function size:0x3BC +fn_1_18E7C = .text:0x00018E7C; // type:function size:0x48 +fn_1_18EC4 = .text:0x00018EC4; // type:function size:0x274 +fn_1_19138 = .text:0x00019138; // type:function size:0x1FC +fn_1_19334 = .text:0x00019334; // type:function size:0x6B0 +fn_1_199A0 = .text:0x000199E4; // type:function size:0x248 +fn_1_19BE8 = .text:0x00019C2C; // type:function size:0x84 +fn_1_19C6C = .text:0x00019CB0; // type:function size:0x2A8 +fn_1_19F14 = .text:0x00019F58; // type:function size:0xB4 +fn_1_19FC8 = .text:0x0001A00C; // type:function size:0x198 +fn_1_1A160 = .text:0x0001A1A4; // type:function size:0x208 +fn_1_1A368 = .text:0x0001A3AC; // type:function size:0x1D0 +fn_1_1A538 = .text:0x0001A57C; // type:function size:0x40 +fn_1_1A578 = .text:0x0001A5BC; // type:function size:0x254 +fn_1_1A7CC = .text:0x0001A810; // type:function size:0x204 +fn_1_1A9D0 = .text:0x0001AA14; // type:function size:0xE4 +fn_1_1AAB4 = .text:0x0001AAF8; // type:function size:0x288 +fn_1_1AD3C = .text:0x0001AD80; // type:function size:0xE4 +fn_1_1AE20 = .text:0x0001AE64; // type:function size:0x1B4 +fn_1_1AFD4 = .text:0x0001B018; // type:function size:0x110 +fn_1_1B0E4 = .text:0x0001B128; // type:function size:0x234 +fn_1_1B318 = .text:0x0001B35C; // type:function size:0x8C +fn_1_1B3A4 = .text:0x0001B3E8; // type:function size:0x8C +fn_1_1B430 = .text:0x0001B474; // type:function size:0x130 +fn_1_1B560 = .text:0x0001B5A4; // type:function size:0xEC +fn_1_1B64C = .text:0x0001B690; // type:function size:0x23C +fn_1_1B870 = .text:0x0001B8CC; // type:function size:0x9C +fn_1_1B90C = .text:0x0001B968; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local +lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string +jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local +jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local +lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 +lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 +lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 scope:local +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string +lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 +lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 +lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 +lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte +lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB scope:local +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 scope:local +lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 +lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte +lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte +lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string +lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x40 data:4byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x28 data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x28 data:4byte +lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x28 data:4byte +lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x28 data:4byte +lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0x28 data:4byte +lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x104 data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x4 data:4byte +lbl_1_bss_29C = .bss:0x0000029C; // type:object size:0xA0 +lbl_1_bss_33C = .bss:0x0000033C; // type:object size:0x28 data:4byte +lbl_1_bss_364 = .bss:0x00000364; // type:object size:0x28 data:4byte +lbl_1_bss_38C = .bss:0x0000038C; // type:object size:0x28 data:4byte +lbl_1_bss_3B4 = .bss:0x000003B4; // type:object size:0x28 data:4byte +lbl_1_bss_3DC = .bss:0x000003DC; // type:object size:0x104 data:4byte +lbl_1_bss_4E0 = .bss:0x000004E0; // type:object size:0x4 data:4byte +lbl_1_bss_4E4 = .bss:0x000004E4; // type:object size:0x4 data:4byte +lbl_1_bss_4E8 = .bss:0x000004E8; // type:object size:0x60 data:4byte +lbl_1_bss_548 = .bss:0x00000548; // type:object size:0xA0 +lbl_1_bss_5E8 = .bss:0x000005E8; // type:object size:0x28 data:4byte +lbl_1_bss_610 = .bss:0x00000610; // type:object size:0x28 data:4byte +lbl_1_bss_638 = .bss:0x00000638; // type:object size:0x28 data:4byte +lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x28 data:4byte +lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x108 data:float +lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte +lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte +lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x28 data:4byte +lbl_1_bss_7C0 = .bss:0x000007C0; // type:object size:0x28 data:4byte +lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x28 data:4byte +lbl_1_bss_810 = .bss:0x00000810; // type:object size:0x28 data:4byte +lbl_1_bss_838 = .bss:0x00000838; // type:object size:0x28 data:4byte +lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x108 data:4byte +lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x4 data:4byte +lbl_1_bss_96C = .bss:0x0000096C; // type:object size:0x28 data:4byte +lbl_1_bss_994 = .bss:0x00000994; // type:object size:0x28 data:4byte +lbl_1_bss_9BC = .bss:0x000009BC; // type:object size:0x28 data:4byte +lbl_1_bss_9E4 = .bss:0x000009E4; // type:object size:0x28 data:4byte +lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x28 data:4byte +lbl_1_bss_A34 = .bss:0x00000A34; // type:object size:0x104 data:4byte +lbl_1_bss_B38 = .bss:0x00000B38; // type:object size:0x4 data:4byte +lbl_1_bss_B3C = .bss:0x00000B3C; // type:object size:0x4 data:4byte +lbl_1_bss_B40 = .bss:0x00000B40; // type:object size:0x4 data:4byte +lbl_1_bss_B44 = .bss:0x00000B44; // type:object size:0x28 data:4byte +lbl_1_bss_B6C = .bss:0x00000B6C; // type:object size:0x28 data:4byte +lbl_1_bss_B94 = .bss:0x00000B94; // type:object size:0x28 data:4byte +lbl_1_bss_BBC = .bss:0x00000BBC; // type:object size:0x28 data:4byte +lbl_1_bss_BE4 = .bss:0x00000BE4; // type:object size:0x28 data:4byte +lbl_1_bss_C0C = .bss:0x00000C0C; // type:object size:0x104 data:float +lbl_1_bss_D10 = .bss:0x00000D10; // type:object size:0x4 data:4byte +lbl_1_bss_D14 = .bss:0x00000D14; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_02/rels/mstory3Dll/splits.txt b/config/GMPP01_02/rels/mstory3Dll/splits.txt new file mode 100644 index 00000000..5251d4d5 --- /dev/null +++ b/config/GMPP01_02/rels/mstory3Dll/splits.txt @@ -0,0 +1,31 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstory3Dll/main.c: + .text start:0x00000000 end:0x00006E34 + .rodata start:0x00000000 end:0x00000110 + .data start:0x00000000 end:0x00000130 + .bss start:0x00000000 end:0x00000058 + +REL/mstory3Dll/result_seq.c: + .text start:0x00006E34 end:0x000157F0 + .rodata start:0x00000110 end:0x00000418 + .data start:0x00000130 end:0x000007E0 + .bss start:0x00000058 end:0x000018D0 + +REL/mstory3Dll/result.c: + .text start:0x000157F0 end:0x0001DEF0 + .rodata start:0x00000418 end:0x000005D0 + .data start:0x000007E0 end:0x00000A90 + .bss start:0x000018D0 end:0x00001CE8 + +REL/mstory3Dll/win_effect.c: + .text start:0x0001DEF0 end:0x0001F118 + .rodata start:0x000005D0 end:0x00000644 + .data start:0x00000A90 end:0x00000AAB + .bss start:0x00001CE8 end:0x00001D50 diff --git a/config/GMPP01_02/rels/mstory3Dll/symbols.txt b/config/GMPP01_02/rels/mstory3Dll/symbols.txt new file mode 100644 index 00000000..3113f967 --- /dev/null +++ b/config/GMPP01_02/rels/mstory3Dll/symbols.txt @@ -0,0 +1,550 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x2C8 +_prolog = .text:0x0000036C; // type:function size:0x54 scope:global +_epilog = .text:0x000003C0; // type:function size:0x4C scope:global +fn_1_40C = .text:0x0000040C; // type:function size:0xE4 +ObjectSetup = .text:0x000004F0; // type:function size:0xE4 +fn_1_5D4 = .text:0x000005D4; // type:function size:0x28 +fn_1_5FC = .text:0x000005FC; // type:function size:0x20 +fn_1_61C = .text:0x0000061C; // type:function size:0xD8 +fn_1_6F4 = .text:0x000006F4; // type:function size:0xC8 +fn_1_7BC = .text:0x000007BC; // type:function size:0xBC +fn_1_878 = .text:0x00000878; // type:function size:0xBC +fn_1_934 = .text:0x00000934; // type:function size:0x4 +fn_1_938 = .text:0x00000938; // type:function size:0x20 +fn_1_958 = .text:0x00000958; // type:function size:0x28 +fn_1_980 = .text:0x00000980; // type:function size:0x20 +fn_1_9A0 = .text:0x000009A0; // type:function size:0x24 +fn_1_9C4 = .text:0x000009C4; // type:function size:0x20 +fn_1_9E4 = .text:0x000009E4; // type:function size:0xA48 +fn_1_142C = .text:0x0000142C; // type:function size:0x1F8 +fn_1_1624 = .text:0x00001624; // type:function size:0x210 +fn_1_1834 = .text:0x00001834; // type:function size:0x1F0 +fn_1_1A24 = .text:0x00001A24; // type:function size:0x2C +fn_1_1A50 = .text:0x00001A50; // type:function size:0x60 +fn_1_1AB0 = .text:0x00001AB0; // type:function size:0x68 +fn_1_1B18 = .text:0x00001B18; // type:function size:0xAC +fn_1_1BC4 = .text:0x00001BC4; // type:function size:0xC4 +fn_1_1C88 = .text:0x00001C88; // type:function size:0xBC +fn_1_1D44 = .text:0x00001D44; // type:function size:0x34 +fn_1_1D78 = .text:0x00001D78; // type:function size:0x40 +fn_1_1DB8 = .text:0x00001DB8; // type:function size:0x70 +fn_1_1E28 = .text:0x00001E28; // type:function size:0x178 +fn_1_1FA0 = .text:0x00001FA0; // type:function size:0x2E0 +fn_1_2280 = .text:0x00002280; // type:function size:0x90 +fn_1_2310 = .text:0x00002310; // type:function size:0xC8 +fn_1_23D8 = .text:0x000023D8; // type:function size:0x48 +fn_1_2420 = .text:0x00002420; // type:function size:0x54 +fn_1_2474 = .text:0x00002474; // type:function size:0x3C0 +fn_1_2834 = .text:0x00002834; // type:function size:0x10 +fn_1_2844 = .text:0x00002844; // type:function size:0x10 +fn_1_2854 = .text:0x00002854; // type:function size:0xB8 +fn_1_290C = .text:0x0000290C; // type:function size:0x120 +fn_1_2A2C = .text:0x00002A2C; // type:function size:0x3A8 +fn_1_2DD4 = .text:0x00002DD4; // type:function size:0x7F4 +fn_1_35C8 = .text:0x000035C8; // type:function size:0x88 +fn_1_3650 = .text:0x00003650; // type:function size:0x94 +fn_1_36E4 = .text:0x000036E4; // type:function size:0x58 +fn_1_373C = .text:0x0000373C; // type:function size:0x8C +fn_1_37C8 = .text:0x000037C8; // type:function size:0xEC +fn_1_38B4 = .text:0x000038B4; // type:function size:0xC4 +fn_1_3978 = .text:0x00003978; // type:function size:0x3C +fn_1_39B4 = .text:0x000039B4; // type:function size:0x44 +fn_1_39F8 = .text:0x000039F8; // type:function size:0x26C +fn_1_3C64 = .text:0x00003C64; // type:function size:0x26C +fn_1_3ED0 = .text:0x00003ED0; // type:function size:0x27C +fn_1_414C = .text:0x0000414C; // type:function size:0x2B4 +fn_1_4400 = .text:0x00004400; // type:function size:0x46C +fn_1_486C = .text:0x0000486C; // type:function size:0x454 +fn_1_4CC0 = .text:0x00004CC0; // type:function size:0x48C +fn_1_514C = .text:0x0000514C; // type:function size:0x658 +fn_1_57A4 = .text:0x000057A4; // type:function size:0x4C4 +fn_1_5C68 = .text:0x00005C68; // type:function size:0x4FC +fn_1_6164 = .text:0x00006164; // type:function size:0x6C8 +fn_1_682C = .text:0x0000682C; // type:function size:0xC4 +fn_1_68F0 = .text:0x000068F0; // type:function size:0x188 +fn_1_6A78 = .text:0x00006A78; // type:function size:0x34 +fn_1_6AAC = .text:0x00006AAC; // type:function size:0x40 +fn_1_6AEC = .text:0x00006AEC; // type:function size:0xAC +fn_1_6B98 = .text:0x00006B98; // type:function size:0x1E8 +fn_1_6D80 = .text:0x00006D80; // type:function size:0xB4 +fn_1_6E34 = .text:0x00006E34; // type:function size:0x1D0 +fn_1_7004 = .text:0x00007004; // type:function size:0x394 +fn_1_7398 = .text:0x00007398; // type:function size:0x640 +fn_1_79D8 = .text:0x000079D8; // type:function size:0x4B0 +fn_1_7E88 = .text:0x00007E88; // type:function size:0x2C4 +fn_1_814C = .text:0x0000814C; // type:function size:0x118 +fn_1_8264 = .text:0x00008264; // type:function size:0x7C +fn_1_82E0 = .text:0x000082E0; // type:function size:0x8C +fn_1_836C = .text:0x0000836C; // type:function size:0xF0 +fn_1_845C = .text:0x0000845C; // type:function size:0x2FC +fn_1_8758 = .text:0x00008758; // type:function size:0x100 +fn_1_8858 = .text:0x00008858; // type:function size:0xF0 +fn_1_8948 = .text:0x00008948; // type:function size:0xF0 +fn_1_8A38 = .text:0x00008A38; // type:function size:0xF0 +fn_1_8B28 = .text:0x00008B28; // type:function size:0xF0 +fn_1_8C18 = .text:0x00008C18; // type:function size:0x7C +fn_1_8C94 = .text:0x00008C94; // type:function size:0x4AC +fn_1_9140 = .text:0x00009140; // type:function size:0x88 +fn_1_91C8 = .text:0x000091C8; // type:function size:0x58 +fn_1_9220 = .text:0x00009220; // type:function size:0x1B0 +fn_1_93D0 = .text:0x000093D0; // type:function size:0xB8 +fn_1_9488 = .text:0x00009488; // type:function size:0x228 +fn_1_96B0 = .text:0x000096B0; // type:function size:0xB8 +fn_1_9768 = .text:0x00009768; // type:function size:0x228 +fn_1_9990 = .text:0x00009990; // type:function size:0x78 +fn_1_9A08 = .text:0x00009A08; // type:function size:0x5C +fn_1_9A64 = .text:0x00009A64; // type:function size:0x8B0 +fn_1_A314 = .text:0x0000A314; // type:function size:0x1DC +fn_1_A4F0 = .text:0x0000A4F0; // type:function size:0x6BC +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0xAC4 +fn_1_B670 = .text:0x0000B670; // type:function size:0x118 +fn_1_B788 = .text:0x0000B788; // type:function size:0x6D4 +fn_1_BE5C = .text:0x0000BE5C; // type:function size:0x104 +fn_1_BF60 = .text:0x0000BF60; // type:function size:0x100 +fn_1_C060 = .text:0x0000C060; // type:function size:0xE0C +fn_1_CE6C = .text:0x0000CE6C; // type:function size:0x620 +fn_1_D48C = .text:0x0000D48C; // type:function size:0xAC +fn_1_D538 = .text:0x0000D538; // type:function size:0x1E0 +fn_1_D718 = .text:0x0000D718; // type:function size:0xC0 +fn_1_D7D8 = .text:0x0000D7D8; // type:function size:0x390 +fn_1_DB68 = .text:0x0000DB68; // type:function size:0x5F8 +fn_1_E160 = .text:0x0000E160; // type:function size:0x1BD0 +fn_1_FD30 = .text:0x0000FD30; // type:function size:0x150 +fn_1_FE80 = .text:0x0000FE80; // type:function size:0xFC +fn_1_FF7C = .text:0x0000FF7C; // type:function size:0x3F0 +fn_1_1036C = .text:0x0001036C; // type:function size:0xA08 +fn_1_10D74 = .text:0x00010D74; // type:function size:0xA20 +fn_1_11794 = .text:0x00011794; // type:function size:0xA0 +fn_1_11834 = .text:0x00011834; // type:function size:0xBA4 +fn_1_123D8 = .text:0x000123D8; // type:function size:0x44 +fn_1_1241C = .text:0x0001241C; // type:function size:0x4 +fn_1_12420 = .text:0x00012420; // type:function size:0x678 +fn_1_12A98 = .text:0x00012A98; // type:function size:0x170 +fn_1_12C08 = .text:0x00012C08; // type:function size:0x1A4 +fn_1_12DAC = .text:0x00012DAC; // type:function size:0x2FC +fn_1_130A8 = .text:0x000130A8; // type:function size:0xD4 +fn_1_1317C = .text:0x0001317C; // type:function size:0x130 +fn_1_132AC = .text:0x000132AC; // type:function size:0x65C +fn_1_13908 = .text:0x00013908; // type:function size:0x130 +fn_1_13A38 = .text:0x00013A38; // type:function size:0x4 +fn_1_13A3C = .text:0x00013A3C; // type:function size:0x23C +fn_1_13C78 = .text:0x00013C78; // type:function size:0xC0 +fn_1_13D38 = .text:0x00013D38; // type:function size:0x60 +fn_1_13D98 = .text:0x00013D98; // type:function size:0x308 +fn_1_140A0 = .text:0x000140A0; // type:function size:0x38C +fn_1_1442C = .text:0x0001442C; // type:function size:0x140 +fn_1_1456C = .text:0x0001456C; // type:function size:0x118 +fn_1_14684 = .text:0x00014684; // type:function size:0x7C +fn_1_14700 = .text:0x00014700; // type:function size:0x48 +fn_1_14748 = .text:0x00014748; // type:function size:0x724 +fn_1_14E6C = .text:0x00014E6C; // type:function size:0x114 +fn_1_14F80 = .text:0x00014F80; // type:function size:0x54 +fn_1_14FD4 = .text:0x00014FD4; // type:function size:0x31C +fn_1_152F0 = .text:0x000152F0; // type:function size:0x160 +fn_1_15450 = .text:0x00015450; // type:function size:0x3A0 +fn_1_157F0 = .text:0x000157F0; // type:function size:0x1B4 +fn_1_159A4 = .text:0x000159A4; // type:function size:0x268 +fn_1_15C0C = .text:0x00015C0C; // type:function size:0xFC +fn_1_15D08 = .text:0x00015D08; // type:function size:0xC0 +fn_1_15DC8 = .text:0x00015DC8; // type:function size:0x3F0 +fn_1_161B8 = .text:0x000161B8; // type:function size:0x3BC +fn_1_16574 = .text:0x00016574; // type:function size:0x54 +fn_1_165C8 = .text:0x000165C8; // type:function size:0x35C +fn_1_16924 = .text:0x00016924; // type:function size:0x1B0 +fn_1_16AD4 = .text:0x00016AD4; // type:function size:0x400 +fn_1_16ED4 = .text:0x00016ED4; // type:function size:0x258 +fn_1_1712C = .text:0x0001712C; // type:function size:0x160 +fn_1_1728C = .text:0x0001728C; // type:function size:0x210 +fn_1_17484 = .text:0x0001749C; // type:function size:0xEC +fn_1_17570 = .text:0x00017588; // type:function size:0x850 +fn_1_17DC0 = .text:0x00017DD8; // type:function size:0x2C0 +fn_1_18080 = .text:0x00018098; // type:function size:0x9C +fn_1_1811C = .text:0x00018134; // type:function size:0x218 +fn_1_18334 = .text:0x0001834C; // type:function size:0x1B4 +fn_1_184E8 = .text:0x00018500; // type:function size:0x70 +fn_1_18558 = .text:0x00018570; // type:function size:0x110 +fn_1_18668 = .text:0x00018680; // type:function size:0x694 +fn_1_18CFC = .text:0x00018D14; // type:function size:0x29C +fn_1_18F98 = .text:0x00018FB0; // type:function size:0x1AC +fn_1_19144 = .text:0x0001915C; // type:function size:0xD0 +fn_1_19214 = .text:0x0001922C; // type:function size:0x28C +fn_1_194A0 = .text:0x000194B8; // type:function size:0xF0 +fn_1_19590 = .text:0x000195A8; // type:function size:0x224 +fn_1_197B4 = .text:0x000197CC; // type:function size:0x854 +fn_1_1A008 = .text:0x0001A020; // type:function size:0x1EF4 +fn_1_1BEFC = .text:0x0001BF14; // type:function size:0x3F8 +fn_1_1C2F4 = .text:0x0001C30C; // type:function size:0x16C +fn_1_1C460 = .text:0x0001C478; // type:function size:0xD4 +fn_1_1C534 = .text:0x0001C54C; // type:function size:0x3E0 +fn_1_1C914 = .text:0x0001C92C; // type:function size:0x184 +fn_1_1CA98 = .text:0x0001CAB0; // type:function size:0xE4 +fn_1_1CB7C = .text:0x0001CB94; // type:function size:0xE0 +fn_1_1CC5C = .text:0x0001CC74; // type:function size:0x104 +fn_1_1CD60 = .text:0x0001CD78; // type:function size:0x90 +fn_1_1CDF0 = .text:0x0001CE08; // type:function size:0x334 +fn_1_1D124 = .text:0x0001D13C; // type:function size:0x518 +fn_1_1D63C = .text:0x0001D654; // type:function size:0x140 +fn_1_1D77C = .text:0x0001D794; // type:function size:0x150 +fn_1_1D8CC = .text:0x0001D8E4; // type:function size:0x98 +fn_1_1D964 = .text:0x0001D97C; // type:function size:0x100 +fn_1_1DA64 = .text:0x0001DA7C; // type:function size:0x48 +fn_1_1DAAC = .text:0x0001DAC4; // type:function size:0x3A0 +fn_1_1DE4C = .text:0x0001DE64; // type:function size:0x8C +fn_1_1DED8 = .text:0x0001DEF0; // type:function size:0x21C +fn_1_1E0F4 = .text:0x0001E10C; // type:function size:0x14 +fn_1_1E108 = .text:0x0001E120; // type:function size:0x10 +fn_1_1E118 = .text:0x0001E130; // type:function size:0x14 +fn_1_1E12C = .text:0x0001E144; // type:function size:0x10 +fn_1_1E13C = .text:0x0001E154; // type:function size:0x41C +fn_1_1E558 = .text:0x0001E570; // type:function size:0x2C8 +fn_1_1E820 = .text:0x0001E838; // type:function size:0x8E0 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 scope:local data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 +lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0xD scope:local data:string +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 scope:local data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A scope:local data:string +lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A scope:local data:string +lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE scope:local data:string +lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float +lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 +lbl_1_data_200 = .data:0x00000200; // type:object size:0x50 +lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 scope:local data:string +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 scope:local data:string +lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 scope:local data:string +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 scope:local data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 scope:local data:string +lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D scope:local data:string +lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C scope:local data:string +lbl_1_data_364 = .data:0x00000364; // type:object size:0x8 data:4byte +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC +lbl_1_data_378 = .data:0x00000378; // type:object size:0xF scope:local data:string +lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 scope:local data:string +jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 scope:local data:string +lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 scope:local data:string +lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 scope:local data:string +lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 scope:local data:string +lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 scope:local data:string +lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 scope:local data:string +lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 scope:local data:string +lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x12 scope:local +lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 +lbl_1_data_78C = .data:0x0000078C; // type:object size:0x5 +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 scope:local data:string +lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 scope:local data:string +lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 scope:local data:string +lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 scope:local data:string +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 scope:local data:string +lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 scope:local data:string +lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 scope:local data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF scope:local data:string +lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C scope:local data:string +lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D scope:local data:string +lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 scope:local data:string +lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 scope:local data:string +lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 scope:local data:string +lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 scope:local data:string +lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 scope:local data:string +lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A scope:local data:string +lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A scope:local data:string +lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x1B scope:local +lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 scope:local data:string +lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:float +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:float +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:float +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x4 data:float +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x4 data:float +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x1340 +lbl_1_bss_1408 = .bss:0x00001408; // type:object size:0x18 +lbl_1_bss_1420 = .bss:0x00001420; // type:object size:0x4 data:4byte +lbl_1_bss_1424 = .bss:0x00001424; // type:object size:0x4 data:float +lbl_1_bss_1428 = .bss:0x00001428; // type:object size:0x10 data:4byte +lbl_1_bss_1438 = .bss:0x00001438; // type:object size:0x10 +lbl_1_bss_1448 = .bss:0x00001448; // type:object size:0x10 data:4byte +lbl_1_bss_1458 = .bss:0x00001458; // type:object size:0x10 data:4byte +lbl_1_bss_1468 = .bss:0x00001468; // type:object size:0x28 data:4byte +lbl_1_bss_1490 = .bss:0x00001490; // type:object size:0xA0 data:4byte +lbl_1_bss_1530 = .bss:0x00001530; // type:object size:0x28 data:4byte +lbl_1_bss_1558 = .bss:0x00001558; // type:object size:0x28 data:4byte +lbl_1_bss_1580 = .bss:0x00001580; // type:object size:0x350 data:4byte +lbl_1_bss_18D0 = .bss:0x000018D0; // type:object size:0x4 data:4byte +lbl_1_bss_18D4 = .bss:0x000018D4; // type:object size:0x4 data:4byte +lbl_1_bss_18D8 = .bss:0x000018D8; // type:object size:0xC data:4byte +lbl_1_bss_18E4 = .bss:0x000018E4; // type:object size:0x8 data:4byte +lbl_1_bss_18EC = .bss:0x000018EC; // type:object size:0x8 data:4byte +lbl_1_bss_18F4 = .bss:0x000018F4; // type:object size:0xA0 +lbl_1_bss_1994 = .bss:0x00001994; // type:object size:0x28 data:4byte +lbl_1_bss_19BC = .bss:0x000019BC; // type:object size:0x28 data:4byte +lbl_1_bss_19E4 = .bss:0x000019E4; // type:object size:0x28 data:4byte +lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2DC data:float +lbl_1_bss_1CE8 = .bss:0x00001CE8; // type:object size:0x2 data:2byte +lbl_1_bss_1CEC = .bss:0x00001CEC; // type:object size:0x4 data:4byte +lbl_1_bss_1CF0 = .bss:0x00001CF0; // type:object size:0x4 data:4byte +lbl_1_bss_1CF4 = .bss:0x00001CF4; // type:object size:0x4 data:4byte +lbl_1_bss_1CF8 = .bss:0x00001CF8; // type:object size:0x58 data:2byte diff --git a/config/GMPP01_02/rels/mstoryDll/splits.txt b/config/GMPP01_02/rels/mstoryDll/splits.txt new file mode 100644 index 00000000..7378f74e --- /dev/null +++ b/config/GMPP01_02/rels/mstoryDll/splits.txt @@ -0,0 +1,43 @@ +Sections: + .text type:code align:4 + .ctors type:rodata align:4 + .dtors type:rodata align:4 + .rodata type:rodata align:8 + .data type:data align:8 + .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141B8 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPP01_02/rels/mstoryDll/symbols.txt b/config/GMPP01_02/rels/mstoryDll/symbols.txt new file mode 100644 index 00000000..d7aca560 --- /dev/null +++ b/config/GMPP01_02/rels/mstoryDll/symbols.txt @@ -0,0 +1,500 @@ +fn_1_0 = .text:0x00000000; // type:function size:0x4C +fn_1_4C = .text:0x0000004C; // type:function size:0x58 +fn_1_A4 = .text:0x000000A4; // type:function size:0x344 +_prolog = .text:0x000003E8; // type:function size:0x54 scope:global +_epilog = .text:0x0000043C; // type:function size:0x4C scope:global +fn_1_488 = .text:0x00000488; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 +fn_1_828 = .text:0x00000828; // type:function size:0x28 +fn_1_850 = .text:0x00000850; // type:function size:0x20 +fn_1_870 = .text:0x00000870; // type:function size:0xD8 +fn_1_948 = .text:0x00000948; // type:function size:0xC8 +fn_1_A10 = .text:0x00000A10; // type:function size:0xBC +fn_1_ACC = .text:0x00000ACC; // type:function size:0xBC +fn_1_B88 = .text:0x00000B88; // type:function size:0x4 +fn_1_B8C = .text:0x00000B8C; // type:function size:0x20 +fn_1_BAC = .text:0x00000BAC; // type:function size:0x28 +fn_1_BD4 = .text:0x00000BD4; // type:function size:0x20 +fn_1_BF4 = .text:0x00000BF4; // type:function size:0x24 +fn_1_C18 = .text:0x00000C18; // type:function size:0x20 +fn_1_C38 = .text:0x00000C38; // type:function size:0xA48 +fn_1_1680 = .text:0x00001680; // type:function size:0x1B4 +fn_1_1834 = .text:0x00001834; // type:function size:0x1D0 +fn_1_1A04 = .text:0x00001A04; // type:function size:0x60 +fn_1_1A64 = .text:0x00001A64; // type:function size:0x68 +fn_1_1ACC = .text:0x00001ACC; // type:function size:0xAC +fn_1_1B78 = .text:0x00001B78; // type:function size:0xBC +fn_1_1C34 = .text:0x00001C34; // type:function size:0xB4 +fn_1_1CE8 = .text:0x00001CE8; // type:function size:0x34 +fn_1_1D1C = .text:0x00001D1C; // type:function size:0x40 +fn_1_1D5C = .text:0x00001D5C; // type:function size:0x70 +fn_1_1DCC = .text:0x00001DCC; // type:function size:0x178 +fn_1_1F44 = .text:0x00001F44; // type:function size:0x2E0 +fn_1_2224 = .text:0x00002224; // type:function size:0x90 +fn_1_22B4 = .text:0x000022B4; // type:function size:0x48 +fn_1_22FC = .text:0x000022FC; // type:function size:0x54 +fn_1_2350 = .text:0x00002350; // type:function size:0x3C0 +fn_1_2710 = .text:0x00002710; // type:function size:0x10 +fn_1_2720 = .text:0x00002720; // type:function size:0x10 +fn_1_2730 = .text:0x00002730; // type:function size:0xB8 +fn_1_27E8 = .text:0x000027E8; // type:function size:0x120 +fn_1_2908 = .text:0x00002908; // type:function size:0x3A8 +fn_1_2CB0 = .text:0x00002CB0; // type:function size:0x7F4 +fn_1_34A4 = .text:0x000034A4; // type:function size:0x88 +fn_1_352C = .text:0x0000352C; // type:function size:0x94 +fn_1_35C0 = .text:0x000035C0; // type:function size:0x58 +fn_1_3618 = .text:0x00003618; // type:function size:0xEC +fn_1_3704 = .text:0x00003704; // type:function size:0xC4 +fn_1_37C8 = .text:0x000037C8; // type:function size:0x3C +fn_1_3804 = .text:0x00003804; // type:function size:0x44 +fn_1_3848 = .text:0x00003848; // type:function size:0x274 +fn_1_3ABC = .text:0x00003ABC; // type:function size:0x26C +fn_1_3D28 = .text:0x00003D28; // type:function size:0x22C +fn_1_3F54 = .text:0x00003F54; // type:function size:0x27C +fn_1_41D0 = .text:0x000041D0; // type:function size:0x2B4 +fn_1_4484 = .text:0x00004484; // type:function size:0x46C +fn_1_48F0 = .text:0x000048F0; // type:function size:0x454 +fn_1_4D44 = .text:0x00004D44; // type:function size:0x48C +fn_1_51D0 = .text:0x000051D0; // type:function size:0x658 +fn_1_5828 = .text:0x00005828; // type:function size:0x4C4 +fn_1_5CEC = .text:0x00005CEC; // type:function size:0x4FC +fn_1_61E8 = .text:0x000061E8; // type:function size:0x6C8 +fn_1_68B0 = .text:0x000068B0; // type:function size:0xC4 +fn_1_6974 = .text:0x00006974; // type:function size:0x188 +fn_1_6AFC = .text:0x00006AFC; // type:function size:0x34 +fn_1_6B30 = .text:0x00006B30; // type:function size:0x40 +fn_1_6B70 = .text:0x00006B70; // type:function size:0xAC +fn_1_6C1C = .text:0x00006C1C; // type:function size:0x1E8 +fn_1_6E04 = .text:0x00006E04; // type:function size:0xB4 +fn_1_6EB8 = .text:0x00006EB8; // type:function size:0x170 +fn_1_7028 = .text:0x00007028; // type:function size:0x68 +fn_1_7090 = .text:0x00007090; // type:function size:0xA4 +fn_1_7134 = .text:0x00007134; // type:function size:0x1E8 +fn_1_731C = .text:0x0000731C; // type:function size:0x69C +fn_1_79B8 = .text:0x000079B8; // type:function size:0x128 +fn_1_7AE0 = .text:0x00007AE0; // type:function size:0x390 +fn_1_7E70 = .text:0x00007E70; // type:function size:0x5C +fn_1_7ECC = .text:0x00007ECC; // type:function size:0x1C4 +fn_1_8090 = .text:0x00008090; // type:function size:0x320 +fn_1_83B0 = .text:0x000083B0; // type:function size:0x58 +fn_1_8408 = .text:0x00008408; // type:function size:0x3D4 +fn_1_87DC = .text:0x000087DC; // type:function size:0x268 +fn_1_8A44 = .text:0x00008A44; // type:function size:0x9C +fn_1_8AE0 = .text:0x00008AE0; // type:function size:0x2E0 +fn_1_8DC0 = .text:0x00008DC0; // type:function size:0xAC +fn_1_8E6C = .text:0x00008E6C; // type:function size:0xFC +fn_1_8F68 = .text:0x00008F68; // type:function size:0x36C +fn_1_92D4 = .text:0x000092D4; // type:function size:0x134 +fn_1_9408 = .text:0x00009408; // type:function size:0x310 +fn_1_9718 = .text:0x00009718; // type:function size:0x18C +fn_1_98A4 = .text:0x000098A4; // type:function size:0x88 +fn_1_992C = .text:0x0000992C; // type:function size:0x3DC +fn_1_9D08 = .text:0x00009D08; // type:function size:0x300 +fn_1_A008 = .text:0x0000A008; // type:function size:0xE4 +fn_1_A0EC = .text:0x0000A0EC; // type:function size:0x38C +fn_1_A478 = .text:0x0000A478; // type:function size:0x8C +fn_1_A504 = .text:0x0000A504; // type:function size:0xF0 +fn_1_A5F4 = .text:0x0000A5F4; // type:function size:0x23C +fn_1_A830 = .text:0x0000A830; // type:function size:0xC8 +fn_1_A8F8 = .text:0x0000A8F8; // type:function size:0x2B4 +fn_1_ABAC = .text:0x0000ABAC; // type:function size:0x150 +fn_1_ACFC = .text:0x0000ACFC; // type:function size:0x134 +fn_1_AE30 = .text:0x0000AE30; // type:function size:0x8C +fn_1_AEBC = .text:0x0000AEBC; // type:function size:0x374 +fn_1_B230 = .text:0x0000B230; // type:function size:0x5C +fn_1_B28C = .text:0x0000B28C; // type:function size:0x214 +fn_1_B4A0 = .text:0x0000B4A0; // type:function size:0xE8 +fn_1_B588 = .text:0x0000B588; // type:function size:0xE8 +fn_1_B670 = .text:0x0000B670; // type:function size:0x11C +fn_1_B78C = .text:0x0000B78C; // type:function size:0x13C +fn_1_B8C8 = .text:0x0000B8C8; // type:function size:0x4 +fn_1_B8CC = .text:0x0000B8CC; // type:function size:0x104 +fn_1_B9D0 = .text:0x0000B9D0; // type:function size:0x208 +fn_1_BBD8 = .text:0x0000BBD8; // type:function size:0x788 +fn_1_C360 = .text:0x0000C360; // type:function size:0xB4 +fn_1_C414 = .text:0x0000C414; // type:function size:0x2F4 +fn_1_C708 = .text:0x0000C708; // type:function size:0xBC +fn_1_C7C4 = .text:0x0000C7C4; // type:function size:0x384 +fn_1_CB48 = .text:0x0000CB48; // type:function size:0x300 +fn_1_CE48 = .text:0x0000CE48; // type:function size:0xAC +fn_1_CEF4 = .text:0x0000CEF4; // type:function size:0xE4 +fn_1_CFD8 = .text:0x0000CFD8; // type:function size:0xC4 +fn_1_D09C = .text:0x0000D09C; // type:function size:0xE4 +fn_1_D180 = .text:0x0000D180; // type:function size:0x3FC +fn_1_D57C = .text:0x0000D57C; // type:function size:0x134 +fn_1_D6B0 = .text:0x0000D6B0; // type:function size:0x2F8 +fn_1_D9A8 = .text:0x0000D9A8; // type:function size:0xFC +fn_1_DAA4 = .text:0x0000DAA4; // type:function size:0x164 +fn_1_DC08 = .text:0x0000DC08; // type:function size:0x118 +fn_1_DD20 = .text:0x0000DD20; // type:function size:0xE4 +fn_1_DE04 = .text:0x0000DE04; // type:function size:0x424 +fn_1_E228 = .text:0x0000E228; // type:function size:0x8C +fn_1_E2B4 = .text:0x0000E2B4; // type:function size:0x130 +fn_1_E3E4 = .text:0x0000E3E4; // type:function size:0x23C +fn_1_E620 = .text:0x0000E620; // type:function size:0xF0 +fn_1_E710 = .text:0x0000E710; // type:function size:0x118 +fn_1_E828 = .text:0x0000E828; // type:function size:0x8C +fn_1_E8B4 = .text:0x0000E8B4; // type:function size:0x34C +fn_1_EC00 = .text:0x0000EC00; // type:function size:0x5C +fn_1_EC5C = .text:0x0000EC5C; // type:function size:0x384 +fn_1_EFE0 = .text:0x0000EFE0; // type:function size:0x70 +fn_1_F050 = .text:0x0000F050; // type:function size:0x14C +fn_1_F19C = .text:0x0000F19C; // type:function size:0x5E4 +fn_1_F780 = .text:0x0000F780; // type:function size:0xEC +fn_1_F86C = .text:0x0000F86C; // type:function size:0xA4 +fn_1_F910 = .text:0x0000F910; // type:function size:0x1D4 +fn_1_FAE4 = .text:0x0000FAE4; // type:function size:0x238 +fn_1_FD1C = .text:0x0000FD1C; // type:function size:0xB4 +fn_1_FDD0 = .text:0x0000FDD0; // type:function size:0x4C8 +fn_1_10298 = .text:0x00010298; // type:function size:0xEC +fn_1_10384 = .text:0x00010384; // type:function size:0xCC +fn_1_10450 = .text:0x00010450; // type:function size:0xFC +fn_1_1054C = .text:0x0001054C; // type:function size:0xAC +fn_1_105F8 = .text:0x000105F8; // type:function size:0x300 +fn_1_108F8 = .text:0x000108F8; // type:function size:0x374 +fn_1_10C6C = .text:0x00010C6C; // type:function size:0xE4 +fn_1_10D50 = .text:0x00010D50; // type:function size:0x1D4 +fn_1_10F24 = .text:0x00010F24; // type:function size:0xAC +fn_1_10FD0 = .text:0x00010FD0; // type:function size:0x2D0 +fn_1_112A0 = .text:0x000112A0; // type:function size:0x8C +fn_1_1132C = .text:0x0001132C; // type:function size:0xF0 +fn_1_1141C = .text:0x0001141C; // type:function size:0x118 +fn_1_11534 = .text:0x00011534; // type:function size:0xF0 +fn_1_11624 = .text:0x00011624; // type:function size:0x10C +fn_1_11730 = .text:0x00011730; // type:function size:0x35C +fn_1_11A8C = .text:0x00011A8C; // type:function size:0x5C +fn_1_11AE8 = .text:0x00011AE8; // type:function size:0x184 +fn_1_11C6C = .text:0x00011C6C; // type:function size:0x16C +fn_1_11DD8 = .text:0x00011DD8; // type:function size:0xEC +fn_1_11EC4 = .text:0x00011EC4; // type:function size:0x64 +fn_1_11F28 = .text:0x00011F28; // type:function size:0x4 +fn_1_11F2C = .text:0x00011F2C; // type:function size:0x144 +fn_1_12070 = .text:0x00012070; // type:function size:0x5C0 +fn_1_12630 = .text:0x00012630; // type:function size:0xB4 +fn_1_126E4 = .text:0x000126E4; // type:function size:0x234 +fn_1_12918 = .text:0x00012918; // type:function size:0xBC +fn_1_129D4 = .text:0x000129D4; // type:function size:0x2C0 +fn_1_12C94 = .text:0x00012C94; // type:function size:0xE4 +fn_1_12D78 = .text:0x00012D78; // type:function size:0x1A8 +fn_1_12F20 = .text:0x00012F20; // type:function size:0x88 +fn_1_12FA8 = .text:0x00012FA8; // type:function size:0x118 +fn_1_130C0 = .text:0x000130C0; // type:function size:0x22C +fn_1_132EC = .text:0x000132EC; // type:function size:0x284 +fn_1_13570 = .text:0x00013570; // type:function size:0x310 +fn_1_13880 = .text:0x00013880; // type:function size:0x8C +fn_1_1390C = .text:0x0001390C; // type:function size:0x23C +fn_1_13B48 = .text:0x00013B48; // type:function size:0xEC +fn_1_13C34 = .text:0x00013C34; // type:function size:0x210 +fn_1_13E2C = .text:0x00013E44; // type:function size:0x324 +fn_1_14150 = .text:0x00014168; // type:function size:0x50 +_ctors = .ctors:0x00000000; // type:label scope:global data:4byte +_dtors = .dtors:0x00000000; // type:label scope:global data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 +lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 +lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C +lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 +lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 +lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 +lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB +lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C data:4byte +lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte +lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 +lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x28 data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x28 data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0x104 data:4byte +lbl_1_bss_2C8 = .bss:0x000002C8; // type:object size:0x4 data:4byte +lbl_1_bss_2CC = .bss:0x000002CC; // type:object size:0x4 data:4byte +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x60 data:4byte +lbl_1_bss_330 = .bss:0x00000330; // type:object size:0x8 data:4byte +lbl_1_bss_338 = .bss:0x00000338; // type:object size:0xA0 +lbl_1_bss_3D8 = .bss:0x000003D8; // type:object size:0x28 data:4byte +lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x28 data:4byte +lbl_1_bss_428 = .bss:0x00000428; // type:object size:0x28 data:4byte +lbl_1_bss_450 = .bss:0x00000450; // type:object size:0x108 data:float +lbl_1_bss_558 = .bss:0x00000558; // type:object size:0x4 data:4byte +lbl_1_bss_55C = .bss:0x0000055C; // type:object size:0x4 data:4byte +lbl_1_bss_560 = .bss:0x00000560; // type:object size:0x8 data:4byte +lbl_1_bss_568 = .bss:0x00000568; // type:object size:0x28 data:4byte +lbl_1_bss_590 = .bss:0x00000590; // type:object size:0x28 data:4byte +lbl_1_bss_5B8 = .bss:0x000005B8; // type:object size:0x28 data:4byte +lbl_1_bss_5E0 = .bss:0x000005E0; // type:object size:0x28 data:4byte +lbl_1_bss_608 = .bss:0x00000608; // type:object size:0x108 data:4byte +lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 data:4byte +lbl_1_bss_714 = .bss:0x00000714; // type:object size:0x28 data:4byte +lbl_1_bss_73C = .bss:0x0000073C; // type:object size:0x28 data:4byte +lbl_1_bss_764 = .bss:0x00000764; // type:object size:0x28 data:4byte +lbl_1_bss_78C = .bss:0x0000078C; // type:object size:0x28 data:4byte +lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x104 data:4byte +lbl_1_bss_8B8 = .bss:0x000008B8; // type:object size:0x4 data:4byte +lbl_1_bss_8BC = .bss:0x000008BC; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_02/rels/w04Dll/splits.txt b/config/GMPP01_02/rels/w04Dll/splits.txt new file mode 100644 index 00000000..c1698acd --- /dev/null +++ b/config/GMPP01_02/rels/w04Dll/splits.txt @@ -0,0 +1,7 @@ +Sections: + .text type:code align:4 + .section2 type:data align:8 + .section3 type:data align:4 + .section4 type:data align:8 + .section5 type:data align:8 + .bss type:bss align:8 diff --git a/config/GMPP01_02/rels/w04Dll/symbols.txt b/config/GMPP01_02/rels/w04Dll/symbols.txt new file mode 100644 index 00000000..cc5cf0ab --- /dev/null +++ b/config/GMPP01_02/rels/w04Dll/symbols.txt @@ -0,0 +1,399 @@ +_prolog = .text:0x00000030; // type:function scope:global +_epilog = .text:0x00000094; // type:function scope:global +lbl_1_text_E0 = .text:0x000000E0; // type:label +lbl_1_text_5F4 = .text:0x000005F4; // type:label +lbl_1_text_750 = .text:0x00000750; // type:label +lbl_1_text_794 = .text:0x00000794; // type:label +lbl_1_text_798 = .text:0x00000798; // type:label +lbl_1_text_7FC = .text:0x000007FC; // type:label +lbl_1_text_958 = .text:0x00000958; // type:label +lbl_1_text_CF8 = .text:0x00000CF8; // type:label +lbl_1_text_103C = .text:0x0000103C; // type:label +lbl_1_text_1618 = .text:0x00001618; // type:label +lbl_1_text_1E60 = .text:0x00001E60; // type:label +lbl_1_text_2008 = .text:0x00002008; // type:label +lbl_1_text_2044 = .text:0x00002044; // type:label +lbl_1_text_20EC = .text:0x000020EC; // type:label +lbl_1_text_2FDC = .text:0x00002FDC; // type:label +lbl_1_text_30A4 = .text:0x000030A4; // type:label +lbl_1_text_38D8 = .text:0x000038D8; // type:label +lbl_1_text_45A8 = .text:0x000045A8; // type:label +lbl_1_text_4630 = .text:0x00004630; // type:label +lbl_1_text_4848 = .text:0x00004848; // type:label +lbl_1_text_55A0 = .text:0x000055A0; // type:label +lbl_1_text_59C4 = .text:0x000059C4; // type:label +lbl_1_text_5A2C = .text:0x00005A2C; // type:label +lbl_1_text_62B0 = .text:0x000062B0; // type:label +lbl_1_text_757C = .text:0x0000757C; // type:label +lbl_1_text_75D8 = .text:0x000075D8; // type:label +lbl_1_text_9BC0 = .text:0x00009BC0; // type:label +lbl_1_text_9E8C = .text:0x00009E8C; // type:label +lbl_1_text_A700 = .text:0x0000A700; // type:label +lbl_1_text_C36C = .text:0x0000C36C; // type:label +lbl_1_text_CF70 = .text:0x0000CF70; // type:label +lbl_1_text_D158 = .text:0x0000D158; // type:label +lbl_1_text_D214 = .text:0x0000D214; // type:label +lbl_1_text_D288 = .text:0x0000D288; // type:label +lbl_1_text_D538 = .text:0x0000D538; // type:label +lbl_1_text_D68C = .text:0x0000D68C; // type:label +lbl_1_text_D6F0 = .text:0x0000D6F0; // type:label +lbl_1_text_D754 = .text:0x0000D754; // type:label +lbl_1_text_DFE8 = .text:0x0000DFE8; // type:label +lbl_1_text_E128 = .text:0x0000E128; // type:label +lbl_1_text_E170 = .text:0x0000E170; // type:label +lbl_1_text_E358 = .text:0x0000E358; // type:label +lbl_1_text_E4A4 = .text:0x0000E4A4; // type:label +lbl_1_text_E690 = .text:0x0000E690; // type:label +lbl_1_section2_0 = .section2:0x00000000; // type:object size:0x4 +lbl_1_section3_0 = .section3:0x00000000; // type:object size:0x4 +lbl_1_section4_10 = .section4:0x00000010; // type:object size:0x4 +lbl_1_section4_14 = .section4:0x00000014; // type:object size:0x4 +lbl_1_section4_18 = .section4:0x00000018; // type:object size:0x4 +lbl_1_section4_1C = .section4:0x0000001C; // type:object size:0x4 +lbl_1_section4_20 = .section4:0x00000020; // type:object size:0x4 +lbl_1_section4_24 = .section4:0x00000024; // type:object size:0x4 +lbl_1_section4_28 = .section4:0x00000028; // type:object size:0x4 +lbl_1_section4_2C = .section4:0x0000002C; // type:object size:0x4 +lbl_1_section4_30 = .section4:0x00000030; // type:object size:0x8 +lbl_1_section4_38 = .section4:0x00000038; // type:object size:0x4 +lbl_1_section4_3C = .section4:0x0000003C; // type:object size:0x4 +lbl_1_section4_40 = .section4:0x00000040; // type:object size:0x4 +lbl_1_section4_44 = .section4:0x00000044; // type:object size:0x4 +lbl_1_section4_48 = .section4:0x00000048; // type:object size:0x4 +lbl_1_section4_4C = .section4:0x0000004C; // type:object size:0x4 +lbl_1_section4_50 = .section4:0x00000050; // type:object size:0x4 +lbl_1_section4_54 = .section4:0x00000054; // type:object size:0x4 +lbl_1_section4_58 = .section4:0x00000058; // type:object size:0x8 +lbl_1_section4_60 = .section4:0x00000060; // type:object size:0x8 +lbl_1_section4_68 = .section4:0x00000068; // type:object size:0x4 +lbl_1_section4_6C = .section4:0x0000006C; // type:object size:0x4 +lbl_1_section4_70 = .section4:0x00000070; // type:object size:0x4 +lbl_1_section4_74 = .section4:0x00000074; // type:object size:0x4 +lbl_1_section4_78 = .section4:0x00000078; // type:object size:0x4 +lbl_1_section4_7C = .section4:0x0000007C; // type:object size:0x4 +lbl_1_section4_80 = .section4:0x00000080; // type:object size:0x8 +lbl_1_section4_88 = .section4:0x00000088; // type:object size:0x8 +lbl_1_section4_90 = .section4:0x00000090; // type:object size:0x8 +lbl_1_section4_98 = .section4:0x00000098; // type:object size:0x4 +lbl_1_section4_9C = .section4:0x0000009C; // type:object size:0x4 +lbl_1_section4_A0 = .section4:0x000000A0; // type:object size:0x8 +lbl_1_section4_A8 = .section4:0x000000A8; // type:object size:0x8 +lbl_1_section4_B0 = .section4:0x000000B0; // type:object size:0x8 +lbl_1_section4_B8 = .section4:0x000000B8; // type:object size:0x4 +lbl_1_section4_BC = .section4:0x000000BC; // type:object size:0x4 +lbl_1_section4_C0 = .section4:0x000000C0; // type:object size:0x4 +lbl_1_section4_C4 = .section4:0x000000C4; // type:object size:0x4 +lbl_1_section4_C8 = .section4:0x000000C8; // type:object size:0x4 +lbl_1_section4_CC = .section4:0x000000CC; // type:object size:0x4 +lbl_1_section4_D0 = .section4:0x000000D0; // type:object size:0x4 +lbl_1_section4_D4 = .section4:0x000000D4; // type:object size:0x4 +lbl_1_section4_D8 = .section4:0x000000D8; // type:object size:0x8 +lbl_1_section4_E0 = .section4:0x000000E0; // type:object size:0x8 +lbl_1_section4_E8 = .section4:0x000000E8; // type:object size:0x8 +lbl_1_section4_F0 = .section4:0x000000F0; // type:object size:0x4 +lbl_1_section4_F4 = .section4:0x000000F4; // type:object size:0x4 +lbl_1_section4_F8 = .section4:0x000000F8; // type:object size:0x4 +lbl_1_section4_FC = .section4:0x000000FC; // type:object size:0x4 +lbl_1_section4_100 = .section4:0x00000100; // type:object size:0x4 +lbl_1_section4_104 = .section4:0x00000104; // type:object size:0x4 +lbl_1_section4_108 = .section4:0x00000108; // type:object size:0x4 +lbl_1_section4_10C = .section4:0x0000010C; // type:object size:0x4 +lbl_1_section4_110 = .section4:0x00000110; // type:object size:0x4 +lbl_1_section4_114 = .section4:0x00000114; // type:object size:0x4 +lbl_1_section4_118 = .section4:0x00000118; // type:object size:0x4 +lbl_1_section4_11C = .section4:0x0000011C; // type:object size:0x4 +lbl_1_section4_120 = .section4:0x00000120; // type:object size:0x8 +lbl_1_section4_128 = .section4:0x00000128; // type:object size:0x8 +lbl_1_section4_130 = .section4:0x00000130; // type:object size:0x4 +lbl_1_section4_134 = .section4:0x00000134; // type:object size:0x4 +lbl_1_section4_138 = .section4:0x00000138; // type:object size:0x4 +lbl_1_section4_13C = .section4:0x0000013C; // type:object size:0x4 +lbl_1_section4_140 = .section4:0x00000140; // type:object size:0x8 +lbl_1_section4_148 = .section4:0x00000148; // type:object size:0x8 +lbl_1_section4_150 = .section4:0x00000150; // type:object size:0x4 +lbl_1_section4_154 = .section4:0x00000154; // type:object size:0x4 +lbl_1_section4_158 = .section4:0x00000158; // type:object size:0x4 +lbl_1_section4_15C = .section4:0x0000015C; // type:object size:0x4 +lbl_1_section4_160 = .section4:0x00000160; // type:object size:0x4 +lbl_1_section4_164 = .section4:0x00000164; // type:object size:0x4 +lbl_1_section4_168 = .section4:0x00000168; // type:object size:0x4 +lbl_1_section4_16C = .section4:0x0000016C; // type:object size:0x4 +lbl_1_section4_170 = .section4:0x00000170; // type:object size:0x4 +lbl_1_section4_174 = .section4:0x00000174; // type:object size:0x4 +lbl_1_section4_178 = .section4:0x00000178; // type:object size:0x4 +lbl_1_section4_17C = .section4:0x0000017C; // type:object size:0x4 +lbl_1_section4_180 = .section4:0x00000180; // type:object size:0x4 +lbl_1_section4_184 = .section4:0x00000184; // type:object size:0x4 +lbl_1_section4_188 = .section4:0x00000188; // type:object size:0x4 +lbl_1_section4_18C = .section4:0x0000018C; // type:object size:0x4 +lbl_1_section4_190 = .section4:0x00000190; // type:object size:0x4 +lbl_1_section4_194 = .section4:0x00000194; // type:object size:0x4 +lbl_1_section4_198 = .section4:0x00000198; // type:object size:0x8 +lbl_1_section4_1A0 = .section4:0x000001A0; // type:object size:0x4 +lbl_1_section4_1A4 = .section4:0x000001A4; // type:object size:0x4 +lbl_1_section4_1A8 = .section4:0x000001A8; // type:object size:0x4 +lbl_1_section4_1AC = .section4:0x000001AC; // type:object size:0x4 +lbl_1_section4_1B0 = .section4:0x000001B0; // type:object size:0x4 +lbl_1_section4_1B4 = .section4:0x000001B4; // type:object size:0x4 +lbl_1_section4_1B8 = .section4:0x000001B8; // type:object size:0x4 +lbl_1_section4_1BC = .section4:0x000001BC; // type:object size:0x4 +lbl_1_section4_1C0 = .section4:0x000001C0; // type:object size:0x4 +lbl_1_section4_1C4 = .section4:0x000001C4; // type:object size:0x4 +lbl_1_section4_1C8 = .section4:0x000001C8; // type:object size:0x4 +lbl_1_section4_1CC = .section4:0x000001CC; // type:object size:0x4 +lbl_1_section4_1D0 = .section4:0x000001D0; // type:object size:0x4 +lbl_1_section4_1D4 = .section4:0x000001D4; // type:object size:0x4 +lbl_1_section4_1D8 = .section4:0x000001D8; // type:object size:0x4 +lbl_1_section4_1DC = .section4:0x000001DC; // type:object size:0x4 +lbl_1_section4_1E0 = .section4:0x000001E0; // type:object size:0x4 +lbl_1_section4_1E4 = .section4:0x000001E4; // type:object size:0x4 +lbl_1_section4_1E8 = .section4:0x000001E8; // type:object size:0x4 +lbl_1_section4_1EC = .section4:0x000001EC; // type:object size:0x4 +lbl_1_section4_1F0 = .section4:0x000001F0; // type:object size:0x8 +lbl_1_section4_1F8 = .section4:0x000001F8; // type:object size:0x8 +lbl_1_section4_200 = .section4:0x00000200; // type:object size:0x4 +lbl_1_section4_204 = .section4:0x00000204; // type:object size:0x4 data:string +lbl_1_section4_208 = .section4:0x00000208; // type:object size:0x8 +lbl_1_section4_210 = .section4:0x00000210; // type:object size:0x8 +lbl_1_section4_218 = .section4:0x00000218; // type:object size:0x8 +lbl_1_section4_220 = .section4:0x00000220; // type:object size:0x4 +lbl_1_section4_224 = .section4:0x00000224; // type:object size:0x4 +lbl_1_section4_228 = .section4:0x00000228; // type:object size:0x4 +lbl_1_section4_22C = .section4:0x0000022C; // type:object size:0xC +lbl_1_section4_238 = .section4:0x00000238; // type:object size:0x4 +lbl_1_section4_23C = .section4:0x0000023C; // type:object size:0x4 +lbl_1_section4_240 = .section4:0x00000240; // type:object size:0x8 +lbl_1_section4_248 = .section4:0x00000248; // type:object size:0x8 +lbl_1_section4_250 = .section4:0x00000250; // type:object size:0x4 +lbl_1_section4_254 = .section4:0x00000254; // type:object size:0x4 +lbl_1_section4_258 = .section4:0x00000258; // type:object size:0x4 +lbl_1_section4_25C = .section4:0x0000025C; // type:object size:0x4 +lbl_1_section4_260 = .section4:0x00000260; // type:object size:0x4 +lbl_1_section4_264 = .section4:0x00000264; // type:object size:0x4 +lbl_1_section4_268 = .section4:0x00000268; // type:object size:0x4 +lbl_1_section4_26C = .section4:0x0000026C; // type:object size:0x4 +lbl_1_section4_270 = .section4:0x00000270; // type:object size:0x4 +lbl_1_section4_274 = .section4:0x00000274; // type:object size:0x4 +lbl_1_section4_278 = .section4:0x00000278; // type:object size:0x4 +lbl_1_section4_27C = .section4:0x0000027C; // type:object size:0x4 +lbl_1_section4_280 = .section4:0x00000280; // type:object size:0x4 +lbl_1_section4_284 = .section4:0x00000284; // type:object size:0xC +lbl_1_section4_290 = .section4:0x00000290; // type:object size:0x4 +lbl_1_section4_294 = .section4:0x00000294; // type:object size:0x4 +lbl_1_section4_298 = .section4:0x00000298; // type:object size:0x4 +lbl_1_section4_29C = .section4:0x0000029C; // type:object size:0x4 +lbl_1_section4_2A0 = .section4:0x000002A0; // type:object size:0x4 +lbl_1_section4_2A4 = .section4:0x000002A4; // type:object size:0x4 +lbl_1_section4_2A8 = .section4:0x000002A8; // type:object size:0x4 +lbl_1_section4_2AC = .section4:0x000002AC; // type:object size:0x4 +lbl_1_section4_2B0 = .section4:0x000002B0; // type:object size:0x4 +lbl_1_section4_2B4 = .section4:0x000002B4; // type:object size:0x4 +lbl_1_section4_2B8 = .section4:0x000002B8; // type:object size:0x8 +lbl_1_section4_2C0 = .section4:0x000002C0; // type:object size:0x4 +lbl_1_section4_2C4 = .section4:0x000002C4; // type:object size:0x4 +lbl_1_section4_2C8 = .section4:0x000002C8; // type:object size:0x4 +lbl_1_section4_2CC = .section4:0x000002CC; // type:object size:0x4 +lbl_1_section4_2D0 = .section4:0x000002D0; // type:object size:0x4 +lbl_1_section4_2D4 = .section4:0x000002D4; // type:object size:0x4 +lbl_1_section4_2D8 = .section4:0x000002D8; // type:object size:0x4 +lbl_1_section4_2DC = .section4:0x000002DC; // type:object size:0x4 +lbl_1_section4_2E0 = .section4:0x000002E0; // type:object size:0x4 +lbl_1_section4_2E4 = .section4:0x000002E4; // type:object size:0x4 +lbl_1_section4_2E8 = .section4:0x000002E8; // type:object size:0x8 +lbl_1_section4_2F0 = .section4:0x000002F0; // type:object size:0x8 +lbl_1_section4_2F8 = .section4:0x000002F8; // type:object size:0x8 +lbl_1_section4_300 = .section4:0x00000300; // type:object size:0x4 +lbl_1_section4_304 = .section4:0x00000304; // type:object size:0x4 +lbl_1_section4_308 = .section4:0x00000308; // type:object size:0x8 +lbl_1_section4_310 = .section4:0x00000310; // type:object size:0x8 +lbl_1_section4_318 = .section4:0x00000318; // type:object size:0x8 +lbl_1_section4_320 = .section4:0x00000320; // type:object size:0x4 +lbl_1_section4_324 = .section4:0x00000324; // type:object size:0x4 +lbl_1_section4_328 = .section4:0x00000328; // type:object size:0x4 +lbl_1_section4_32C = .section4:0x0000032C; // type:object size:0x4 +lbl_1_section4_330 = .section4:0x00000330; // type:object size:0x4 +lbl_1_section4_334 = .section4:0x00000334; // type:object size:0x4 +lbl_1_section4_338 = .section4:0x00000338; // type:object size:0x4 +lbl_1_section4_33C = .section4:0x0000033C; // type:object size:0x4 +lbl_1_section4_340 = .section4:0x00000340; // type:object size:0x4 +lbl_1_section4_344 = .section4:0x00000344; // type:object size:0x4 +lbl_1_section4_348 = .section4:0x00000348; // type:object size:0x4 +lbl_1_section4_34C = .section4:0x0000034C; // type:object size:0x4 +lbl_1_section4_350 = .section4:0x00000350; // type:object size:0x8 +lbl_1_section4_358 = .section4:0x00000358; // type:object size:0x8 +lbl_1_section4_360 = .section4:0x00000360; // type:object size:0x4 +lbl_1_section4_364 = .section4:0x00000364; // type:object size:0x4 +lbl_1_section4_368 = .section4:0x00000368; // type:object size:0x4 +lbl_1_section4_36C = .section4:0x0000036C; // type:object size:0x4 +lbl_1_section4_370 = .section4:0x00000370; // type:object size:0x8 +lbl_1_section4_378 = .section4:0x00000378; // type:object size:0x8 +lbl_1_section4_380 = .section4:0x00000380; // type:object size:0x4 +lbl_1_section4_384 = .section4:0x00000384; // type:object size:0x4 +lbl_1_section4_388 = .section4:0x00000388; // type:object size:0x4 +lbl_1_section4_38C = .section4:0x0000038C; // type:object size:0x4 +lbl_1_section4_390 = .section4:0x00000390; // type:object size:0x4 +lbl_1_section4_394 = .section4:0x00000394; // type:object size:0x4 +lbl_1_section4_398 = .section4:0x00000398; // type:object size:0x8 +lbl_1_section4_3A0 = .section4:0x000003A0; // type:object size:0x4 +lbl_1_section4_3A4 = .section4:0x000003A4; // type:object size:0x4 +lbl_1_section4_3A8 = .section4:0x000003A8; // type:object size:0x4 +lbl_1_section4_3AC = .section4:0x000003AC; // type:object size:0x4 +lbl_1_section4_3B0 = .section4:0x000003B0; // type:object size:0x4 +lbl_1_section4_3B4 = .section4:0x000003B4; // type:object size:0x4 +lbl_1_section4_3B8 = .section4:0x000003B8; // type:object size:0x4 +lbl_1_section4_3BC = .section4:0x000003BC; // type:object size:0x4 +lbl_1_section4_3C0 = .section4:0x000003C0; // type:object size:0x4 +lbl_1_section4_3C4 = .section4:0x000003C4; // type:object size:0x4 +lbl_1_section4_3C8 = .section4:0x000003C8; // type:object size:0x4 +lbl_1_section4_3CC = .section4:0x000003CC; // type:object size:0x4 +lbl_1_section4_3D0 = .section4:0x000003D0; // type:object size:0x8 +lbl_1_section4_3D8 = .section4:0x000003D8; // type:object size:0x4 +lbl_1_section4_3DC = .section4:0x000003DC; // type:object size:0x4 +lbl_1_section4_3E0 = .section4:0x000003E0; // type:object size:0x4 +lbl_1_section4_3E4 = .section4:0x000003E4; // type:object size:0x4 +lbl_1_section4_3E8 = .section4:0x000003E8; // type:object size:0x4 +lbl_1_section4_3EC = .section4:0x000003EC; // type:object size:0x4 +lbl_1_section4_3F0 = .section4:0x000003F0; // type:object size:0x4 +lbl_1_section4_3F4 = .section4:0x000003F4; // type:object size:0x4 +lbl_1_section4_3F8 = .section4:0x000003F8; // type:object size:0x4 +lbl_1_section4_3FC = .section4:0x000003FC; // type:object size:0x4 +lbl_1_section4_400 = .section4:0x00000400; // type:object size:0x4 +lbl_1_section4_404 = .section4:0x00000404; // type:object size:0x4 +lbl_1_section4_408 = .section4:0x00000408; // type:object size:0x8 +lbl_1_section4_410 = .section4:0x00000410; // type:object size:0x8 +lbl_1_section4_418 = .section4:0x00000418; // type:object size:0x4 +lbl_1_section4_41C = .section4:0x0000041C; // type:object size:0x4 +lbl_1_section4_420 = .section4:0x00000420; // type:object size:0x4 +lbl_1_section4_424 = .section4:0x00000424; // type:object size:0x4 +lbl_1_section5_0 = .section5:0x00000000; // type:object size:0x280 +lbl_1_section5_280 = .section5:0x00000280; // type:object size:0x2 +lbl_1_section5_282 = .section5:0x00000282; // type:object size:0x2 +lbl_1_section5_284 = .section5:0x00000284; // type:object size:0x2 +lbl_1_section5_286 = .section5:0x00000286; // type:object size:0x2 +lbl_1_section5_288 = .section5:0x00000288; // type:object size:0x8 +lbl_1_section5_290 = .section5:0x00000290; // type:object size:0x8 +lbl_1_section5_298 = .section5:0x00000298; // type:object size:0x8 +lbl_1_section5_2A0 = .section5:0x000002A0; // type:object size:0xC +lbl_1_section5_2AC = .section5:0x000002AC; // type:object size:0x24 +lbl_1_section5_2D0 = .section5:0x000002D0; // type:object size:0x20 +lbl_1_section5_2F0 = .section5:0x000002F0; // type:object size:0x4 +lbl_1_section5_2F4 = .section5:0x000002F4; // type:object size:0x20 +lbl_1_section5_314 = .section5:0x00000314; // type:object size:0x20 +lbl_1_section5_334 = .section5:0x00000334; // type:object size:0x5 data:string +lbl_1_section5_339 = .section5:0x00000339; // type:object size:0x5 data:string +lbl_1_section5_33E = .section5:0x0000033E; // type:object size:0x5 data:string +lbl_1_section5_343 = .section5:0x00000343; // type:object size:0x5 data:string +lbl_1_section5_348 = .section5:0x00000348; // type:object size:0x10 +lbl_1_section5_358 = .section5:0x00000358; // type:object size:0x10 +lbl_1_section5_368 = .section5:0x00000368; // type:object size:0x8 data:string +lbl_1_section5_370 = .section5:0x00000370; // type:object size:0x12 data:string +lbl_1_section5_382 = .section5:0x00000382; // type:object size:0x11 data:string +lbl_1_section5_393 = .section5:0x00000393; // type:object size:0x15 +lbl_1_section5_3A8 = .section5:0x000003A8; // type:object size:0x8 data:string +lbl_1_section5_3B0 = .section5:0x000003B0; // type:object size:0x9 data:string +lbl_1_section5_3B9 = .section5:0x000003B9; // type:object size:0x6 data:string +lbl_1_section5_3BF = .section5:0x000003BF; // type:object size:0x5 data:string +lbl_1_section5_3C4 = .section5:0x000003C4; // type:object size:0x8 +lbl_1_section5_3CC = .section5:0x000003CC; // type:object size:0x14 +lbl_1_section5_3E0 = .section5:0x000003E0; // type:object size:0x14 +lbl_1_section5_3F4 = .section5:0x000003F4; // type:object size:0x20 +lbl_1_section5_414 = .section5:0x00000414; // type:object size:0x10 +lbl_1_section5_424 = .section5:0x00000424; // type:object size:0x30 +lbl_1_section5_454 = .section5:0x00000454; // type:object size:0xB data:string +lbl_1_section5_45F = .section5:0x0000045F; // type:object size:0x2 data:string +lbl_1_section5_461 = .section5:0x00000461; // type:object size:0xC data:string +lbl_1_section5_46D = .section5:0x0000046D; // type:object size:0x1B +lbl_1_section5_488 = .section5:0x00000488; // type:object size:0x3 data:string +lbl_1_section5_48B = .section5:0x0000048B; // type:object size:0x11 +lbl_1_section5_49C = .section5:0x0000049C; // type:object size:0x54 +lbl_1_section5_4F0 = .section5:0x000004F0; // type:object size:0x6 data:string +lbl_1_section5_4F6 = .section5:0x000004F6; // type:object size:0x6 data:string +lbl_1_section5_4FC = .section5:0x000004FC; // type:object size:0x6 data:string +lbl_1_section5_502 = .section5:0x00000502; // type:object size:0x8 data:string +lbl_1_section5_50A = .section5:0x0000050A; // type:object size:0x8 data:string +lbl_1_section5_512 = .section5:0x00000512; // type:object size:0xA +lbl_1_section5_51C = .section5:0x0000051C; // type:object size:0x18 +lbl_1_section5_534 = .section5:0x00000534; // type:object size:0xC +lbl_1_section5_540 = .section5:0x00000540; // type:object size:0x48 +lbl_1_section5_588 = .section5:0x00000588; // type:object size:0x4 +lbl_1_section5_58C = .section5:0x0000058C; // type:object size:0x5 data:string +lbl_1_section5_591 = .section5:0x00000591; // type:object size:0x5 data:string +lbl_1_section5_596 = .section5:0x00000596; // type:object size:0x5 data:string +lbl_1_section5_59B = .section5:0x0000059B; // type:object size:0x5 data:string +lbl_1_section5_5A0 = .section5:0x000005A0; // type:object size:0x5 data:string +lbl_1_section5_5A5 = .section5:0x000005A5; // type:object size:0x5 data:string +lbl_1_section5_5AA = .section5:0x000005AA; // type:object size:0x5 data:string +lbl_1_section5_5AF = .section5:0x000005AF; // type:object size:0x5 data:string +lbl_1_section5_5B4 = .section5:0x000005B4; // type:object size:0x8 +lbl_1_section5_5BC = .section5:0x000005BC; // type:object size:0x24 +lbl_1_section5_5E0 = .section5:0x000005E0; // type:object size:0x10 +lbl_1_section5_5F0 = .section5:0x000005F0; // type:object size:0x20 +lbl_1_section5_610 = .section5:0x00000610; // type:object size:0xE data:string +lbl_1_section5_61E = .section5:0x0000061E; // type:object size:0xE data:string +lbl_1_section5_62C = .section5:0x0000062C; // type:object size:0x10 +lbl_1_section5_63C = .section5:0x0000063C; // type:object size:0x3 data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x24 +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x2 +lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x18 +lbl_1_bss_6A = .bss:0x0000006A; // type:object size:0x2 +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x30 +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x2 +lbl_1_bss_B2 = .bss:0x000000B2; // type:object size:0x8 +lbl_1_bss_BA = .bss:0x000000BA; // type:object size:0x8 +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x2 +lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x10 +lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x10 +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x10 +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x6 +lbl_1_bss_FA = .bss:0x000000FA; // type:object size:0x6 +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x20 +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x2 +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0xD4 +lbl_1_bss_210 = .bss:0x00000210; // type:object size:0x30 +lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x30 +lbl_1_bss_270 = .bss:0x00000270; // type:object size:0x2 +lbl_1_bss_272 = .bss:0x00000272; // type:object size:0x2 +lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x4 +lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x4 +lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 +lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 +lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 +lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x6 +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x8 +lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x6 +lbl_1_bss_29E = .bss:0x0000029E; // type:object size:0x8 +lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0x6 +lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x4 +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xE +lbl_1_bss_2C2 = .bss:0x000002C2; // type:object size:0xE +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x28 +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x2 +lbl_1_bss_2FA = .bss:0x000002FA; // type:object size:0x2 +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0xC +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0x4 +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x4 +lbl_1_bss_31C = .bss:0x0000031C; // type:object size:0x4 +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x4 +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0x2 +lbl_1_bss_326 = .bss:0x00000326; // type:object size:0x2 diff --git a/configure.py b/configure.py index 08d6561b..3721f4c9 100644 --- a/configure.py +++ b/configure.py @@ -12,12 +12,14 @@ # Append --help to see available options. ### -import sys import argparse - +import sys from pathlib import Path +from typing import Any, Dict, List + from tools.project import ( Object, + ProgressCategory, ProjectConfig, calculate_progress, generate_build, @@ -28,29 +30,31 @@ from tools.project import ( DEFAULT_VERSION = 0 VERSIONS = [ "GMPE01_00", # USA 1.0 + "GMPE01_01", # USA 1.1 + "GMPP01_00", # PAL 1.0 + "GMPP01_02", # PAL 1.2 + "GMPJ01_00", # Japan 1.0 ] -if len(VERSIONS) > 1: - versions_str = ", ".join(VERSIONS[:-1]) + f" or {VERSIONS[-1]}" -else: - versions_str = VERSIONS[0] - parser = argparse.ArgumentParser() parser.add_argument( "mode", + choices=["configure", "progress"], default="configure", - help="configure or progress (default: configure)", + help="script mode (default: configure)", nargs="?", ) parser.add_argument( + "-v", "--version", - dest="version", + choices=VERSIONS, + type=str.upper, default=VERSIONS[DEFAULT_VERSION], - help=f"version to build ({versions_str})", + help="version to build", ) parser.add_argument( "--build-dir", - dest="build_dir", + metavar="DIR", type=Path, default=Path("build"), help="base build directory (default: build)", @@ -63,31 +67,24 @@ parser.add_argument( ) parser.add_argument( "--compilers", - dest="compilers", + metavar="DIR", type=Path, help="path to compilers (optional)", ) parser.add_argument( "--map", - dest="map", action="store_true", help="generate map file(s)", ) -parser.add_argument( - "--no-asm", - action="store_true", - help="don't incorporate .s files from asm directory", -) parser.add_argument( "--debug", - dest="debug", action="store_true", help="build with debug info (non-matching)", ) if not is_windows(): parser.add_argument( "--wrapper", - dest="wrapper", + metavar="BINARY", type=Path, help="path to wibo or wine (optional)", ) @@ -97,15 +94,20 @@ parser.add_argument( type=Path, help="path to decomp-toolkit binary or source (optional)", ) +parser.add_argument( + "--objdiff", + metavar="BINARY | DIR", + type=Path, + help="path to objdiff-cli binary or source (optional)", +) parser.add_argument( "--sjiswrap", - dest="sjiswrap", + metavar="EXE", type=Path, help="path to sjiswrap.exe (optional)", ) parser.add_argument( "--verbose", - dest="verbose", action="store_true", help="print verbose output", ) @@ -115,33 +117,40 @@ parser.add_argument( action="store_true", help="builds equivalent (but non-matching) or modded objects", ) +parser.add_argument( + "--no-progress", + dest="progress", + action="store_false", + help="disable progress calculation", +) args = parser.parse_args() config = ProjectConfig() -config.version = args.version.upper() -if config.version not in VERSIONS: - sys.exit(f"Invalid version '{config.version}', expected {versions_str}") +config.version = str(args.version) version_num = VERSIONS.index(config.version) # Apply arguments config.build_dir = args.build_dir config.dtk_path = args.dtk +config.objdiff_path = args.objdiff config.binutils_path = args.binutils config.compilers_path = args.compilers -config.debug = args.debug config.generate_map = args.map config.non_matching = args.non_matching config.sjiswrap_path = args.sjiswrap +config.progress = args.progress if not is_windows(): config.wrapper = args.wrapper -if args.no_asm: +# Don't build asm unless we're --non-matching +if not config.non_matching: config.asm_dir = None # Tool versions config.binutils_tag = "2.42-1" -config.compilers_tag = "20231018" -config.dtk_tag = "v0.7.4" -config.sjiswrap_tag = "v1.1.1" +config.compilers_tag = "20240706" +config.dtk_tag = "v1.1.4" +config.objdiff_tag = "v2.3.3" +config.sjiswrap_tag = "v1.2.0" config.wibo_tag = "0.6.11" # Project @@ -158,6 +167,10 @@ config.ldflags = [ "-fp hardware", "-nodefaults", ] +if args.debug: + config.ldflags.append("-g") +if args.map: + config.ldflags.append("-mapunused") # Base flags, common to most GC/Wii games. # Generally leave untouched, with overrides added below. @@ -186,8 +199,11 @@ cflags_base = [ "-DMUSY_TARGET=MUSY_TARGET_DOLPHIN", ] +if config.non_matching: + cflags_base.append("-DNON_MATCHING") + # Debug flags -if config.debug: +if args.debug: cflags_base.extend(["-sym on", "-DDEBUG=1"]) else: cflags_base.append("-DNDEBUG=1") @@ -196,14 +212,25 @@ else: cflags_runtime = [ *cflags_base, "-use_lmw_stmw on", - "-str reuse,pool,readonly", + "-str reuse,readonly", "-common off", "-inline auto,deferred", ] +# Dolphin library flags +cflags_dolphin = [ + *cflags_base, + "-fp_contract off", +] + +cflags_thp = [ + *cflags_base, +] + # Metrowerks library flags cflags_msl = [ *cflags_base, + "-char signed", "-use_lmw_stmw on", "-str reuse,pool,readonly", "-common off", @@ -214,16 +241,18 @@ cflags_msl = [ cflags_trk = [ *cflags_base, "-use_lmw_stmw on", - "-str reuse,pool,readonly", + "-str reuse,readonly", "-common off", "-sdata 0", "-sdata2 0", "-inline auto,deferred", + "-enum min", + "-sdatathreshold 0" ] cflags_odemuexi = [ *cflags_base, - "-inline auto,deferred", + "-inline deferred" ] cflags_amcstub = [ @@ -250,6 +279,24 @@ cflags_musyx = [ "-str reuse,pool,readonly", "-fp_contract off", "-DMUSY_TARGET=MUSY_TARGET_DOLPHIN", + "-sym on" +] + +cflags_musyx_debug = [ + "-proc gecko", + "-fp hard", + "-nodefaults", + "-nosyspath", + "-i include", + "-i extern/musyx/include", + "-i libc", + "-g", + "-sym on", + "-D_DEBUG=1", + "-fp hard", + "-enum int", + "-Cpp_exceptions off", + "-DMUSY_TARGET=MUSY_TARGET_DOLPHIN", ] # REL flags @@ -294,8 +341,18 @@ config.rel_empty_file = "REL/empty.c" def DolphinLib(lib_name, objects): return { "lib": lib_name, - "mw_version": "GC/2.6", - "cflags": cflags_base, + "mw_version": "GC/1.2.5n", + "cflags": cflags_dolphin, + "host": False, + "objects": objects, + } + + +def DolphinLibUnpatched(lib_name, objects): + return { + "lib": lib_name, + "mw_version": "GC/1.2.5", + "cflags": cflags_dolphin, "host": False, "objects": objects, } @@ -329,8 +386,15 @@ def Rel(lib_name, objects): } -Matching = True -NonMatching = False +Matching = True # Object matches and should be linked +NonMatching = False # Object does not match and should not be linked +Equivalent = config.non_matching # Object should be linked when configured with --non-matching + + +# Object is only matching for specific versions +def MatchingFor(*versions): + return config.version in versions + config.warn_missing_config = True config.warn_missing_source = False @@ -356,7 +420,7 @@ config.libs = [ Object(Matching, "game/sprman.c"), Object(Matching, "game/sprput.c"), Object(Matching, "game/hsfload.c"), - Object(NonMatching, "game/hsfdraw.c"), + Object(Equivalent, "game/hsfdraw.c"), Object(Matching, "game/hsfman.c"), Object(Matching, "game/hsfmotion.c"), Object(Matching, "game/hsfanim.c"), @@ -389,353 +453,356 @@ config.libs = [ Object(Matching, "game/objsub.c"), Object(Matching, "game/flag.c"), Object(Matching, "game/saveload.c"), - Object(Matching, "game/sreset.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/sreset.c"), Object(Matching, "game/board/main.c"), Object(Matching, "game/board/player.c"), - Object(Matching, "game/board/model.c"), - Object(Matching, "game/board/window.c"), - Object(Matching, "game/board/audio.c"), - Object(Matching, "game/board/com.c"), - Object(Matching, "game/board/view.c"), - Object(Matching, "game/board/space.c"), - Object(Matching, "game/board/shop.c"), - Object(Matching, "game/board/lottery.c"), - Object(Matching, "game/board/basic_space.c"), - Object(Matching, "game/board/warp.c"), - Object(Matching, "game/board/char_wheel.c"), - Object(Matching, "game/board/mushroom.c"), - Object(Matching, "game/board/star.c"), - Object(Matching, "game/board/roll.c"), - Object(Matching, "game/board/ui.c"), - Object(Matching, "game/board/block.c"), - Object(Matching, "game/board/item.c"), - Object(Matching, "game/board/bowser.c"), - Object(Matching, "game/board/battle.c"), - Object(Matching, "game/board/fortune.c"), - Object(Matching, "game/board/boo.c"), - Object(Matching, "game/board/mg_setup.c"), - Object(Matching, "game/board/boo_house.c"), - Object(Matching, "game/board/start.c"), - Object(Matching, "game/board/last5.c"), - Object(Matching, "game/board/pause.c"), - Object(Matching, "game/board/com_path.c"), - Object(Matching, "game/board/tutorial.c"), - Object(Matching, "game/kerent.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/model.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/window.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/audio.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/com.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/view.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/space.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/shop.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/lottery.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/basic_space.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/warp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/char_wheel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/mushroom.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/star.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/roll.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/ui.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/block.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/item.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/bowser.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/battle.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/fortune.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/boo.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/mg_setup.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/boo_house.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/start.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/last5.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/pause.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/com_path.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "game/board/tutorial.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "game/kerent.c"), ], }, DolphinLib( "base", [ - Object(NonMatching, "dolphin/PPCArch.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/PPCArch.c"), ], ), DolphinLib( "os", [ - Object(NonMatching, "dolphin/os/OS.c"), - Object(NonMatching, "dolphin/os/OSAlarm.c"), - Object(NonMatching, "dolphin/os/OSAlloc.c"), - Object(NonMatching, "dolphin/os/OSArena.c"), - Object(NonMatching, "dolphin/os/OSAudioSystem.c"), - Object(NonMatching, "dolphin/os/OSCache.c"), - Object(NonMatching, "dolphin/os/OSContext.c"), - Object(NonMatching, "dolphin/os/OSError.c"), - Object(NonMatching, "dolphin/os/OSFont.c"), - Object(NonMatching, "dolphin/os/OSInterrupt.c"), - Object(NonMatching, "dolphin/os/OSLink.c"), - Object(NonMatching, "dolphin/os/OSMessage.c"), - Object(NonMatching, "dolphin/os/OSMemory.c"), - Object(NonMatching, "dolphin/os/OSMutex.c"), - Object(NonMatching, "dolphin/os/OSReboot.c"), - Object(NonMatching, "dolphin/os/OSReset.c"), - Object(NonMatching, "dolphin/os/OSResetSW.c"), - Object(NonMatching, "dolphin/os/OSRtc.c"), - Object(NonMatching, "dolphin/os/OSStopwatch.c"), - Object(NonMatching, "dolphin/os/OSSync.c"), - Object(NonMatching, "dolphin/os/OSThread.c"), - Object(NonMatching, "dolphin/os/OSTime.c"), - Object(NonMatching, "dolphin/os/__start.c"), - Object(NonMatching, "dolphin/os/__ppc_eabi_init.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "dolphin/os/OS.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSAlarm.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSAlloc.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSArena.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSAudioSystem.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSCache.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSContext.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSError.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSFont.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSInterrupt.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSLink.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSMessage.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSMemory.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSMutex.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSReboot.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSReset.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSResetSW.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSRtc.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSStopwatch.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSSync.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSThread.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/OSTime.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "dolphin/os/__start.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/os/__ppc_eabi_init.c"), ], ), DolphinLib( "db", [ - Object(NonMatching, "dolphin/db.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/db.c"), ], ), - DolphinLib( + DolphinLibUnpatched( "mtx", [ - Object(NonMatching, "dolphin/mtx/mtx.c"), - Object(NonMatching, "dolphin/mtx/mtxvec.c"), - Object(NonMatching, "dolphin/mtx/mtx44.c"), - Object(NonMatching, "dolphin/mtx/vec.c"), - Object(NonMatching, "dolphin/mtx/quat.c"), - Object(NonMatching, "dolphin/mtx/psmtx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/mtx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/mtxvec.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/mtx44.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/vec.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/quat.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/psmtx.c"), ], ), DolphinLib( "dvd", [ - Object(NonMatching, "dolphin/dvd/dvdlow.c"), - Object(NonMatching, "dolphin/dvd/dvdfs.c"), - Object(NonMatching, "dolphin/dvd/dvd.c"), - Object(NonMatching, "dolphin/dvd/dvdqueue.c"), - Object(NonMatching, "dolphin/dvd/dvderror.c"), - Object(NonMatching, "dolphin/dvd/fstload.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dvd/dvdlow.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dvd/dvdfs.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dvd/dvd.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dvd/dvdqueue.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dvd/dvderror.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dvd/fstload.c"), ], ), DolphinLib( "vi", [ - Object(NonMatching, "dolphin/vi.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/vi.c"), ], ), DolphinLib( "demo", [ - Object(NonMatching, "dolphin/demo/DEMOInit.c"), - Object(NonMatching, "dolphin/demo/DEMOFont.c"), - Object(NonMatching, "dolphin/demo/DEMOPuts.c"), - Object(NonMatching, "dolphin/demo/DEMOStats.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/demo/DEMOInit.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/demo/DEMOFont.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/demo/DEMOPuts.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/demo/DEMOStats.c"), ], ), DolphinLib( "pad", [ - Object(NonMatching, "dolphin/pad/Padclamp.c"), - Object(NonMatching, "dolphin/pad/Pad.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/pad/Padclamp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/pad/Pad.c"), ], ), DolphinLib( "ai", [ - Object(NonMatching, "dolphin/ai.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/ai.c"), ], ), DolphinLib( "ar", [ - Object(NonMatching, "dolphin/ar/ar.c"), - Object(NonMatching, "dolphin/ar/arq.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/ar/ar.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/ar/arq.c"), ], ), DolphinLib( "dsp", [ - Object(NonMatching, "dolphin/dsp/dsp.c"), - Object(NonMatching, "dolphin/dsp/dsp_debug.c"), - Object(NonMatching, "dolphin/dsp/dsp_task.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dsp/dsp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dsp/dsp_debug.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/dsp/dsp_task.c"), ], ), DolphinLib( "gx", [ - Object(NonMatching, "dolphin/gx/GXInit.c"), - Object(NonMatching, "dolphin/gx/GXFifo.c"), - Object(NonMatching, "dolphin/gx/GXAttr.c"), - Object(NonMatching, "dolphin/gx/GXMisc.c"), - Object(NonMatching, "dolphin/gx/GXGeometry.c"), - Object(NonMatching, "dolphin/gx/GXFrameBuf.c"), - Object(NonMatching, "dolphin/gx/GXLight.c"), - Object(NonMatching, "dolphin/gx/GXTexture.c"), - Object(NonMatching, "dolphin/gx/GXBump.c"), - Object(NonMatching, "dolphin/gx/GXTev.c"), - Object(NonMatching, "dolphin/gx/GXPixel.c"), - Object(NonMatching, "dolphin/gx/GXStubs.c"), - Object(NonMatching, "dolphin/gx/GXDisplayList.c"), - Object(NonMatching, "dolphin/gx/GXTransform.c"), - Object(NonMatching, "dolphin/gx/GXPerf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXInit.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXFifo.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXAttr.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXMisc.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXGeometry.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXFrameBuf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXLight.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXTexture.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXBump.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXTev.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXPixel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXStubs.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXDisplayList.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXTransform.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXPerf.c"), ], ), DolphinLib( "card", [ - Object(NonMatching, "dolphin/card/CARDBios.c"), - Object(NonMatching, "dolphin/card/CARDUnlock.c"), - Object(NonMatching, "dolphin/card/CARDRdwr.c"), - Object(NonMatching, "dolphin/card/CARDBlock.c"), - Object(NonMatching, "dolphin/card/CARDDir.c"), - Object(NonMatching, "dolphin/card/CARDCheck.c"), - Object(NonMatching, "dolphin/card/CARDMount.c"), - Object(NonMatching, "dolphin/card/CARDFormat.c"), - Object(NonMatching, "dolphin/card/CARDOpen.c"), - Object(NonMatching, "dolphin/card/CARDCreate.c"), - Object(NonMatching, "dolphin/card/CARDRead.c"), - Object(NonMatching, "dolphin/card/CARDWrite.c"), - Object(NonMatching, "dolphin/card/CARDDelete.c"), - Object(NonMatching, "dolphin/card/CARDStat.c"), - Object(NonMatching, "dolphin/card/CARDNet.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDBios.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDUnlock.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDRdwr.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDBlock.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDDir.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDCheck.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDMount.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDFormat.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDOpen.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDCreate.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDRead.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDWrite.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDDelete.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDStat.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/card/CARDNet.c"), ], ), DolphinLib( "exi", [ - Object(NonMatching, "dolphin/exi/EXIBios.c"), - Object(NonMatching, "dolphin/exi/EXIUart.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/exi/EXIBios.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/exi/EXIUart.c"), ], ), DolphinLib( "si", [ - Object(NonMatching, "dolphin/si/SIBios.c"), - Object(NonMatching, "dolphin/si/SISamplingRate.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/si/SIBios.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/si/SISamplingRate.c"), ], ), - DolphinLib( - "thp", - [ - Object(NonMatching, "dolphin/thp/THPDec.c"), - Object(NonMatching, "dolphin/thp/THPAudio.c"), + { + "lib": "thp", + "mw_version": "GC/1.2.5", + "cflags": cflags_thp, + "host": False, + "objects": [ + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/thp/THPDec.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/thp/THPAudio.c"), ], - ), + }, { "lib": "Runtime.PPCEABI.H", "mw_version": config.linker_version, "cflags": cflags_runtime, "host": False, "objects": [ - Object(NonMatching, "Runtime.PPCEABI.H/__va_arg.c"), - Object(Matching, "Runtime.PPCEABI.H/global_destructor_chain.c"), - Object(NonMatching, "Runtime.PPCEABI.H/__mem.c"), - Object(NonMatching, "Runtime.PPCEABI.H/New.cp"), - Object(NonMatching, "Runtime.PPCEABI.H/NewMore.cp"), - Object(NonMatching, "Runtime.PPCEABI.H/NMWException.cp"), - Object(NonMatching, "Runtime.PPCEABI.H/runtime.c"), - Object(Matching, "Runtime.PPCEABI.H/__init_cpp_exceptions.cpp"), - Object(NonMatching, "Runtime.PPCEABI.H/Gecko_ExceptionPPC.cp"), - Object(NonMatching, "Runtime.PPCEABI.H/GCN_mem_alloc.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/__va_arg.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/global_destructor_chain.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/__mem.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/New.cp", extra_cflags=["-Cpp_exceptions on"]), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/NewMore.cp", extra_cflags=["-Cpp_exceptions on", "-RTTI on"]), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/NMWException.cpp", extra_cflags=["-Cpp_exceptions on"]), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/runtime.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/__init_cpp_exceptions.cpp"), + Object(NonMatching, "Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp", extra_cflags=["-Cpp_exceptions on", "-RTTI on"]), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "Runtime.PPCEABI.H/GCN_mem_alloc.c"), ], }, { "lib": "MSL_C.PPCEABI.bare.H", - "mw_version": config.linker_version, + "mw_version": "GC/1.3", "cflags": cflags_msl, "host": False, "objects": [ - Object(NonMatching, "MSL_C.PPCEABI.bare.H/abort_exit.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/alloc.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/errno.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/ansi_files.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/ansi_fp.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/arith.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/buffer_io.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/ctype.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/direct_io.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/file_io.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/FILE_POS.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/mbstring.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/mem.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/mem_funcs.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/misc_io.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/printf.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/float.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/signal.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/string.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/uart_console_io.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/wchar_io.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/e_acos.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/e_asin.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/e_atan2.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/e_fmod.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/e_pow.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/e_rem_pio2.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/k_cos.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/k_rem_pio2.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/k_sin.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/k_tan.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_atan.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_copysign.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_cos.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_floor.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_frexp.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_ldexp.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_modf.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_sin.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_tan.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_acos.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_asin.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_atan2.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_fmod.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_pow.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/math_ppc.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/abort_exit.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/alloc.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/errno.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/ansi_files.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/ansi_fp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/arith.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/buffer_io.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/ctype.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/direct_io.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/file_io.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/FILE_POS.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/mbstring.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/mem.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/mem_funcs.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/misc_io.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/printf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/float.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/signal.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/string.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/uart_console_io.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/wchar_io.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/e_acos.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/e_asin.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/e_atan2.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/e_fmod.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/e_pow.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/e_rem_pio2.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/k_cos.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/k_rem_pio2.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/k_sin.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/k_tan.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_atan.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_copysign.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_cos.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_floor.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_frexp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_ldexp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_modf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_sin.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_tan.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/w_acos.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/w_asin.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/w_atan2.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/w_fmod.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/w_pow.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/math_ppc.c"), ], }, { "lib": "TRK_MINNOW_DOLPHIN", - "mw_version": config.linker_version, + "mw_version": "GC/1.3", "cflags": cflags_trk, "host": False, "objects": [ - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mainloop.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/nubevent.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/nubinit.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/msg.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/msgbuf.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/serpoll.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/usrput.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/dispatch.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/msghndlr.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/support.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mutex_TRK.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/notify.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/flush_cache.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mem_TRK.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/targimpl.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/targsupp.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/__exception.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/main_TRK.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/targcont.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/target_options.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mslsupp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mainloop.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubevent.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubinit.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msg.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msgbuf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/serpoll.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/usr_put.c", mw_version="GC/1.3.2"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/dispatch.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msghndlr.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/support.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mutex_TRK.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/notify.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/flush_cache.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mem_TRK.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targimpl.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targsupp.s"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/__exception.s"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/dolphin_trk.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/main_TRK.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targcont.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/target_options.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mslsupp.c"), ], }, MusyX( objects={ - Object(Matching, "musyx/runtime/seq.c"), - Object(Matching, "musyx/runtime/synth.c"), - Object(Matching, "musyx/runtime/seq_api.c"), - Object(Matching, "musyx/runtime/snd_synthapi.c"), - Object(NonMatching, "musyx/runtime/stream.c"), - Object(Matching, "musyx/runtime/synthdata.c"), - Object(NonMatching, "musyx/runtime/synthmacros.c"), - Object(Matching, "musyx/runtime/synthvoice.c"), - Object(Matching, "musyx/runtime/synth_ac.c"), - Object(Matching, "musyx/runtime/synth_dbtab.c"), - Object(Matching, "musyx/runtime/synth_adsr.c"), - Object(NonMatching, "musyx/runtime/synth_vsamples.c"), - Object(Matching, "musyx/runtime/s_data.c"), - Object(NonMatching, "musyx/runtime/hw_dspctrl.c"), - Object(Matching, "musyx/runtime/hw_volconv.c"), - Object(Matching, "musyx/runtime/snd3d.c"), - Object(Matching, "musyx/runtime/snd_init.c"), - Object(Matching, "musyx/runtime/snd_math.c"), - Object(NonMatching, "musyx/runtime/snd_midictrl.c"), - Object(Matching, "musyx/runtime/snd_service.c"), - Object(Matching, "musyx/runtime/hardware.c"), - Object(Matching, "musyx/runtime/dsp_import.c"), - Object(Matching, "musyx/runtime/hw_aramdma.c"), - Object(Matching, "musyx/runtime/hw_dolphin.c"), - Object(Matching, "musyx/runtime/hw_memory.c"), - Object(Matching, "musyx/runtime/CheapReverb/creverb_fx.c"), - Object(Matching, "musyx/runtime/CheapReverb/creverb.c"), - Object(Matching, "musyx/runtime/StdReverb/reverb_fx.c"), - Object(Matching, "musyx/runtime/StdReverb/reverb.c"), - Object(Matching, "musyx/runtime/Delay/delay_fx.c"), - Object(Matching, "musyx/runtime/Chorus/chorus_fx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/seq.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synth.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/seq_api.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/snd_synthapi.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/stream.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synthdata.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synthmacros.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synthvoice.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synth_ac.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synth_dbtab.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synth_adsr.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/synth_vsamples.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/s_data.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/hw_dspctrl.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/hw_volconv.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/snd3d.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/snd_init.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/snd_math.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/snd_midictrl.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/snd_service.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/hardware.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/dsp_import.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/hw_aramdma.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/hw_dolphin.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/hw_memory.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/CheapReverb/creverb_fx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/CheapReverb/creverb.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/StdReverb/reverb_fx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/StdReverb/reverb.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/Delay/delay_fx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "musyx/runtime/Chorus/chorus_fx.c"), } ), { "lib": "OdemuExi2", - "mw_version": config.linker_version, + "mw_version": "GC/1.2.5" if version_num == 0 else "GC/1.2.5n", "cflags": cflags_odemuexi, "host": False, "objects": [ - Object(NonMatching, "OdemuExi2/DebuggerDriver.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "OdemuExi2/DebuggerDriver.c"), ], }, { @@ -744,7 +811,7 @@ config.libs = [ "cflags": cflags_amcstub, "host": False, "objects": [ - Object(NonMatching, "amcstubs/AmcExi2Stubs.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "amcstubs/AmcExi2Stubs.c"), ], }, { @@ -753,7 +820,7 @@ config.libs = [ "cflags": cflags_odenotstub, "host": False, "objects": [ - Object(NonMatching, "odenotstub/odenotstub.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "odenotstub/odenotstub.c"), ], }, { @@ -762,22 +829,22 @@ config.libs = [ "cflags": cflags_libhu, "host": False, "objects": [ - Object(NonMatching, "libhu/setvf.c"), - Object(NonMatching, "libhu/subvf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "libhu/setvf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "libhu/subvf.c"), ], }, { "lib": "msm", - "mw_version": "GC/1.2.5n", + "mw_version": "GC/1.2.5", "cflags": cflags_msm, "host": False, "objects": [ - Object(NonMatching, "msm/msmsys.c"), - Object(Matching, "msm/msmmem.c"), - Object(Matching, "msm/msmfio.c"), - Object(NonMatching, "msm/msmmus.c"), - Object(NonMatching, "msm/msmse.c"), - Object(NonMatching, "msm/msmstream.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmsys.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmmem.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmfio.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmmus.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmse.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmstream.c"), ], }, { @@ -788,45 +855,41 @@ config.libs = [ "objects": [ Object(Matching, "REL/executor.c"), Object(Matching, "REL/empty.c"), # Must be marked as matching + Object(Matching, "REL/board_executor.c"), ], }, Rel( "_minigameDLL", objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/_minigameDLL/_minigameDLL.c"), }, ), Rel( "bootDll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/bootDll/main.c"), - Object(Matching, "REL/bootDll/nintendo_data.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/bootDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/bootDll/language.c"), }, ), Rel( "E3setupDLL", objects={ Object(Matching, "REL/E3setupDLL/mgselect.c"), - Object(Matching, "REL/executor.c"), Object(Matching, "REL/E3setupDLL/main.c"), }, ), Rel( "instDll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/instDll/main.c"), - Object(NonMatching, "REL/instDll/font.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/instDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/instDll/font.c"), }, ), Rel( "m401Dll", # Manta Rings objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m401Dll/main.c"), - Object(NonMatching, "REL/m401Dll/main_ex.c"), + Object(Matching, "REL/m401Dll/main_ex.c"), }, ), Rel( @@ -838,218 +901,195 @@ config.libs = [ Rel( "m403Dll", # Booksquirm objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m403Dll/main.c"), - Object(Matching, "REL/m403Dll/scene.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m403Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m403Dll/scene.c"), }, ), Rel( "m404Dll", # Trace Race objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m404Dll/main.c"), }, ), Rel( "m405Dll", # Mario Medley objects={ - Object(Matching, "REL/m405Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m405Dll/main.c"), }, ), Rel( "m406Dll", # Avalanche! objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m406Dll/main.c"), - Object(Matching, "REL/m406Dll/map.c"), - Object(Matching, "REL/m406Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m406Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m406Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m406Dll/player.c"), }, ), Rel( "m407dll", # Domination objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m407dll/player.c"), - Object(Matching, "REL/m407dll/map.c"), - Object(Matching, "REL/m407dll/camera.c"), - Object(Matching, "REL/m407dll/whomp.c"), - Object(Matching, "REL/m407dll/whomp_score.c"), - Object(Matching, "REL/m407dll/effect.c"), - Object(Matching, "REL/m407dll/main.c"), - Object(Matching, "REL/m407dll/score.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/camera.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/whomp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/whomp_score.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/effect.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m407dll/score.c"), }, ), Rel( "m408Dll", # Paratrooper Plunge objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m408Dll/main.c"), - Object(Matching, "REL/m408Dll/camera.c"), - Object(Matching, "REL/m408Dll/stage.c"), - Object(Matching, "REL/m408Dll/object.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m408Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m408Dll/camera.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m408Dll/stage.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m408Dll/object.c"), }, ), Rel( "m409Dll", # Toad's Quick Draw objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m409Dll/main.c"), - Object(Matching, "REL/m409Dll/player.c"), - Object(Matching, "REL/m409Dll/cursor.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m409Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m409Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m409Dll/cursor.c"), }, ), Rel( "m410Dll", # Three Throw objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m410Dll/main.c"), - Object(Matching, "REL/m410Dll/stage.c"), - Object(Matching, "REL/m410Dll/game.c"), - Object(Matching, "REL/m410Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m410Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m410Dll/stage.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m410Dll/game.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m410Dll/player.c"), }, ), Rel( "m411Dll", # Photo Finish objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m411Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m411Dll/main.c"), }, ), Rel( "m412Dll", # Mr. Blizzard's Brigade objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m412Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m412Dll/main.c"), }, ), Rel( "m413Dll", # Bob-omb Breakers objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m413Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m413Dll/main.c"), }, ), Rel( "m414Dll", # Long Claw of the Law objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m414Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m414Dll/main.c"), }, ), Rel( "m415Dll", # Stamp Out! objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m415Dll/main.c"), - Object(NonMatching, "REL/m415Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m415Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m415Dll/map.c"), }, ), Rel( "m416Dll", # Candlelight Flight objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m416Dll/main.c"), - Object(Matching, "REL/m416Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m416Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m416Dll/map.c"), }, ), Rel( "m417Dll", # Makin' Waves objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m417Dll/main.c"), - Object(Matching, "REL/m417Dll/water.c"), - Object(Matching, "REL/m417Dll/player.c"), - Object(Matching, "REL/m417Dll/sequence.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m417Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m417Dll/water.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m417Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m417Dll/sequence.c"), }, ), Rel( "m418Dll", # Hide and Go BOOM! objects={ - Object(NonMatching, "REL/m418Dll/main.c"), - Object(NonMatching, "REL/m418Dll/sequence.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m418Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m418Dll/sequence.c"), }, ), Rel( "m419Dll", # Tree Stomp objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m419Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m419Dll/main.c"), }, ), Rel( "m420dll", # Fish n' Drips objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m420dll/main.c"), - Object(NonMatching, "REL/m420dll/player.c"), - Object(NonMatching, "REL/m420dll/map.c"), - Object(NonMatching, "REL/m420dll/rand.c"), + Object(Matching, "REL/m420dll/main.c"), + Object(Matching, "REL/m420dll/camera.c"), + Object(Matching, "REL/m420dll/player.c"), + Object(Matching, "REL/m420dll/map.c"), + Object(Matching, "REL/m420dll/rand.c"), }, ), Rel( "m421Dll", # Hop or Pop objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m421Dll/main.c"), - Object(NonMatching, "REL/m421Dll/player.c"), - Object(NonMatching, "REL/m421Dll/map.c"), + Object(Matching, "REL/m421Dll/main.c"), + Object(Matching, "REL/m421Dll/player.c"), + Object(Matching, "REL/m421Dll/map.c"), }, ), Rel( "m422Dll", # Money Belts objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m422Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m422Dll/main.c"), }, ), Rel( "m423Dll", # GOOOOOOOAL!! objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m423Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m423Dll/main.c"), }, ), Rel( "m424Dll", # Blame it on the Crane objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m424Dll/main.c"), - Object(NonMatching, "REL/m424Dll/map.c"), - Object(NonMatching, "REL/m424Dll/ball.c"), - Object(NonMatching, "REL/m424Dll/claw.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/ball.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/claw.c"), }, ), Rel( "m425Dll", # The Great Deflate objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m425Dll/main.c"), - Object(NonMatching, "REL/m425Dll/thwomp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m425Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m425Dll/thwomp.c"), }, ), Rel( "m426Dll", # Revers-a-Bomb objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m426Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/m426Dll/main.c"), }, ), Rel( "m427Dll", # Right Oar Left? objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m427Dll/main.c"), - Object(NonMatching, "REL/m427Dll/map.c"), - Object(NonMatching, "REL/m427Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m427Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m427Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m427Dll/player.c"), }, ), Rel( "m428Dll", # Cliffhangers objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m428Dll/main.c"), - Object(NonMatching, "REL/m428Dll/map.c"), - Object(NonMatching, "REL/m428Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m428Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m428Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m428Dll/player.c"), }, ), Rel( @@ -1061,16 +1101,14 @@ config.libs = [ Rel( "m430Dll", # Pair-a-sailing objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m430Dll/main.c"), - Object(NonMatching, "REL/m430Dll/water.c"), - Object(NonMatching, "REL/m430Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/water.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/player.c"), }, ), Rel( "m431Dll", # Order Up objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m431Dll/main.c"), Object(Matching, "REL/m431Dll/object.c"), }, @@ -1078,69 +1116,64 @@ config.libs = [ Rel( "m432Dll", # Dungeon Duos objects={ - Object(NonMatching, "REL/m432Dll/main.c"), + Object(Matching, "REL/m432Dll/main.c"), }, ), Rel( "m433Dll", # Beach Volley Folly objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m433Dll/main.c"), - Object(NonMatching, "REL/m433Dll/map.c"), - Object(NonMatching, "REL/m433Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/player.c"), }, ), Rel( "m434Dll", # Cheep Cheep Sweep objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m434Dll/main.c"), Object(Matching, "REL/m434Dll/map.c"), - Object(NonMatching, "REL/m434Dll/player.c"), + Object(Matching, "REL/m434Dll/player.c"), Object(Matching, "REL/m434Dll/fish.c"), }, ), Rel( "m435Dll", # Darts of Doom objects={ - Object(NonMatching, "REL/m435Dll/main.c"), - Object(NonMatching, "REL/m435Dll/sequence.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m435Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m435Dll/sequence.c"), }, ), Rel( "m436Dll", # Fruits of Doom objects={ - Object(NonMatching, "REL/m436Dll/main.c"), - Object(NonMatching, "REL/m436Dll/sequence.c"), + Object(Matching, "REL/m436Dll/main.c"), + Object(Matching, "REL/m436Dll/sequence.c"), }, ), Rel( "m437Dll", # Balloon of Doom objects={ - Object(NonMatching, "REL/m437Dll/main.c"), - Object(NonMatching, "REL/m437Dll/sequence.c"), + Object(Matching, "REL/m437Dll/main.c"), + Object(Matching, "REL/m437Dll/sequence.c"), }, ), Rel( "m438Dll", # Chain Chomp Fever objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m438Dll/main.c"), - Object(NonMatching, "REL/m438Dll/map.c"), - Object(NonMatching, "REL/m438Dll/fire.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m438Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m438Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m438Dll/fire.c"), }, ), Rel( "m439Dll", # Paths of Peril objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m439Dll/main.c"), }, ), Rel( "m440Dll", # Bowser's Bigger Blast objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m440Dll/main.c"), Object(Matching, "REL/m440Dll/object.c"), }, @@ -1154,197 +1187,177 @@ config.libs = [ Rel( "m442Dll", # Barrel Baron objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/m442Dll/main.c"), - Object(Matching, "REL/m442Dll/score.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m442Dll/score.c"), }, ), Rel( "m443Dll", # Mario Speedwagons objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m443Dll/main.c"), - Object(NonMatching, "REL/m443Dll/map.c"), - Object(NonMatching, "REL/m443Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m443Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m443Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m443Dll/player.c"), }, ), Rel( "m444dll", # Reversal of Fortune objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m444dll/main.c"), - Object(Matching, "REL/m444dll/pinball.c"), - Object(Matching, "REL/m444dll/datalist.c"), - Object(NonMatching, "REL/m444dll/shadow.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m444dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m444dll/pinball.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m444dll/datalist.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m444dll/shadow.c"), }, ), Rel( "m445Dll", # Bowser Bop objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m445Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m445Dll/main.c"), }, ), Rel( "m446dll", # Mystic Match 'Em objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/m446Dll/main.c"), - Object(Matching, "REL/m446Dll/card.c"), - Object(Matching, "REL/m446Dll/deck.c"), - Object(Matching, "REL/m446Dll/table.c"), - Object(Matching, "REL/m446Dll/player.c"), - Object(Matching, "REL/m446Dll/camera.c"), - Object(Matching, "REL/m446Dll/cursor.c"), - Object(Matching, "REL/m446Dll/stage.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/card.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/deck.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/table.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/camera.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/cursor.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m446Dll/stage.c"), }, ), Rel( "m447dll", # Archaeologuess objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m447dll/main.c"), - Object(NonMatching, "REL/m447dll/stage.c"), - Object(NonMatching, "REL/m447dll/camera.c"), - Object(NonMatching, "REL/m447dll/player.c"), - Object(NonMatching, "REL/m447dll/player_col.c"), - Object(NonMatching, "REL/m447dll/block.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m447dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m447dll/stage.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m447dll/camera.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m447dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m447dll/player_col.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m447dll/block.c"), }, ), Rel( "m448Dll", # Goomba's Chip Flip objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m448Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m448Dll/main.c"), }, ), Rel( "m449Dll", # Kareening Koopa objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m449Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m449Dll/main.c"), }, ), Rel( "m450Dll", # The Final Battle! objects={ - Object(NonMatching, "REL/m450Dll/main.c"), + Object(Matching, "REL/m450Dll/main.c"), }, ), Rel( "m451Dll", # Jigsaw Jitters objects={ - Object(Matching, "REL/m451Dll/m451.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m451Dll/m451.c"), }, ), Rel( "m453Dll", # Challenge Booksquirm objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m453Dll/main.c"), - Object(NonMatching, "REL/m453Dll/map.c"), - Object(NonMatching, "REL/m453Dll/score.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m453Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m453Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m453Dll/score.c"), }, ), Rel( "m455Dll", # Rumble Fishing objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m455Dll/main.c"), - Object(NonMatching, "REL/m455Dll/stage.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m455Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m455Dll/stage.c"), }, ), Rel( "m456Dll", # Take a Breather objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m456Dll/main.c"), - Object(NonMatching, "REL/m456Dll/stage.c"), + Object(Matching, "REL/m456Dll/main.c"), + Object(Matching, "REL/m456Dll/stage.c"), }, ), Rel( "m457Dll", # Bowser Wrestling objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m457Dll/main.c"), + Object(Matching, "REL/m457Dll/main.c"), }, ), Rel( "m458Dll", # Panels of Doom objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m458Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m458Dll/main.c"), }, ), Rel( "m459dll", # Mushroom Medic objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m459dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m459dll/main.c"), }, ), Rel( "m460Dll", # Doors of Doom objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m460Dll/main.c"), - Object(NonMatching, "REL/m460Dll/player.c"), - Object(NonMatching, "REL/m460Dll/map.c"), - Object(NonMatching, "REL/m460Dll/score.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m460Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m460Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m460Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m460Dll/score.c"), }, ), Rel( "m461Dll", # Bob-omb X-ing objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m461Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/m461Dll/main.c"), }, ), Rel( "m462Dll", # Goomba Stomp objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m462Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m462Dll/main.c"), }, ), Rel( "m463Dll", # Panel Panic 9 Player objects={ - Object(NonMatching, "REL/m463Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m463Dll/main.c"), }, ), Rel( "mentDll", objects={ - Object(NonMatching, "REL/mentDll/common.c"), - Object(NonMatching, "REL/mentDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/mentDll/common.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/mentDll/main.c"), }, ), Rel( "messDll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/messDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/messDll/main.c"), }, ), Rel( "mgmodedll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/mgmodedll/mgmode.c"), - Object(NonMatching, "REL/mgmodedll/free_play.c"), - Object(NonMatching, "REL/mgmodedll/record.c"), - Object(NonMatching, "REL/mgmodedll/battle.c"), - Object(NonMatching, "REL/mgmodedll/tictactoe.c"), - Object(NonMatching, "REL/mgmodedll/main.c"), - Object(Matching, "REL/mgmodedll/datalist.c"), - Object(Matching, "REL/mgmodedll/minigame.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/mgmode.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/free_play.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/record.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/battle.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/tictactoe.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/datalist.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/mgmodedll/minigame.c"), }, ), Rel( "modeltestDll", objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/modeltestDll/main.c"), Object(Matching, "REL/modeltestDll/modeltest00.c"), Object(Matching, "REL/modeltestDll/modeltest01.c"), @@ -1353,80 +1366,83 @@ config.libs = [ Rel( "modeseldll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/modeseldll/main.c"), - Object(NonMatching, "REL/modeseldll/modesel.c"), - Object(Matching, "REL/modeseldll/filesel.c"), - Object(Matching, "REL/modeseldll/datalist.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/modesel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/filesel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/modeseldll/datalist.c"), }, ), Rel( "mpexDll", objects={ - Object(NonMatching, "REL/mpexDll/main.c"), - Object(NonMatching, "REL/mpexDll/mpex.c"), - Object(NonMatching, "REL/mpexDll/charsel.c"), - Object(NonMatching, "REL/mpexDll/mgname.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/mpexDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/mpexDll/mpex.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/mpexDll/charsel.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/mpexDll/mgname.c"), }, ), Rel( "mstory2Dll", objects={ - Object(NonMatching, "REL/mstory2Dll/main.c"), - Object(NonMatching, "REL/mstory2Dll/board_entrance.c"), - Object(NonMatching, "REL/mstory2Dll/board_clear.c"), - Object(NonMatching, "REL/mstory2Dll/board_miss.c"), - Object(NonMatching, "REL/mstory2Dll/mg_clear.c"), - Object(NonMatching, "REL/mstory2Dll/mg_miss.c"), - Object(NonMatching, "REL/mstory2Dll/ending.c"), - Object(NonMatching, "REL/mstory2Dll/save.c"), + Object(Matching, "REL/mstory2Dll/main.c"), + Object(Matching, "REL/mstory2Dll/board_entrance.c"), + Object(Matching, "REL/mstory2Dll/board_clear.c"), + Object(Matching, "REL/mstory2Dll/board_miss.c"), + Object(Matching, "REL/mstory2Dll/mg_clear.c"), + Object(Matching, "REL/mstory2Dll/mg_miss.c"), + Object(Matching, "REL/mstory2Dll/ending.c"), + Object(Matching, "REL/mstory2Dll/save.c"), }, ), Rel( "mstory3Dll", objects={ - Object(NonMatching, "REL/mstory3Dll/main.c"), - Object(NonMatching, "REL/mstory3Dll/result_seq.c"), - Object(NonMatching, "REL/mstory3Dll/result.c"), - Object(NonMatching, "REL/mstory3Dll/win_effect.c"), + Object(Matching, "REL/mstory3Dll/main.c"), + Object(Matching, "REL/mstory3Dll/result_seq.c"), + Object(Matching, "REL/mstory3Dll/result.c"), + Object(Matching, "REL/mstory3Dll/win_effect.c"), }, ), Rel( "mstory4Dll", objects={ - Object(Matching, "REL/mstory4Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/mstory4Dll/main.c"), }, ), Rel( "mstoryDll", objects={ - Object(NonMatching, "REL/mstoryDll/main.c"), - Object(NonMatching, "REL/mstoryDll/board_clear.c"), - Object(NonMatching, "REL/mstoryDll/board_miss.c"), - Object(NonMatching, "REL/mstoryDll/mg_clear.c"), - Object(NonMatching, "REL/mstoryDll/mg_miss.c"), - Object(NonMatching, "REL/mstoryDll/save.c"), + Object(Matching, "REL/mstoryDll/main.c"), + Object(Matching, "REL/mstoryDll/board_clear.c"), + Object(Matching, "REL/mstoryDll/board_miss.c"), + Object(Matching, "REL/mstoryDll/mg_clear.c"), + Object(Matching, "REL/mstoryDll/mg_miss.c"), + Object(Matching, "REL/mstoryDll/save.c"), + }, + ), + Rel( + "nisDll", + objects={ + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/nisDll/main.c") }, ), Rel( "option", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/option/scene.c"), - Object(Matching, "REL/option/camera.c"), - Object(Matching, "REL/option/room.c"), - Object(Matching, "REL/option/guide.c"), - Object(Matching, "REL/option/state.c"), - Object(Matching, "REL/option/rumble.c"), - Object(Matching, "REL/option/sound.c"), - Object(Matching, "REL/option/record.c"), - Object(Matching, "REL/option/window.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/scene.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/camera.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/room.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/guide.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/state.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/rumble.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/sound.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/record.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/option/window.c"), }, ), Rel( "present", objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/present/init.c"), Object(Matching, "REL/present/camera.c"), Object(Matching, "REL/present/present.c"), @@ -1437,7 +1453,6 @@ config.libs = [ Rel( "resultDll", objects={ - Object(Matching, "REL/executor.c"), Object(Matching, "REL/resultDll/main.c"), Object(Matching, "REL/resultDll/battle.c"), Object(Matching, "REL/resultDll/datalist.c"), @@ -1446,34 +1461,30 @@ config.libs = [ Rel( "safDll", objects={ - Object(Matching, "REL/safDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/safDll/main.c"), }, ), Rel( "selmenuDll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/selmenuDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/selmenuDll/main.c"), }, ), Rel( "staffDll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/staffDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPP01_00", "GMPP01_02"), "REL/staffDll/main.c"), }, ), Rel( "subchrselDll", objects={ - Object(Matching, "REL/executor.c"), - Object(Matching, "REL/subchrselDll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/subchrselDll/main.c"), }, ), Rel( "w01Dll", # Toad's Midway Madness objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w01Dll/main.c"), Object(Matching, "REL/w01Dll/mg_coin.c"), Object(Matching, "REL/w01Dll/mg_item.c"), @@ -1482,7 +1493,6 @@ config.libs = [ Rel( "w02Dll", # Goomba's Greedy Gala objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w02Dll/main.c"), Object(Matching, "REL/w02Dll/gendice.c"), Object(Matching, "REL/w02Dll/gamble.c"), @@ -1495,7 +1505,6 @@ config.libs = [ Rel( "w03Dll", # Shy Guy's Jungle Jam objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w03Dll/main.c"), Object(Matching, "REL/w03Dll/statue.c"), Object(Matching, "REL/w03Dll/condor.c"), @@ -1508,7 +1517,6 @@ config.libs = [ Rel( "w04Dll", # Boo's Haunted Bash objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w04Dll/main.c"), Object(Matching, "REL/w04Dll/bridge.c"), Object(Matching, "REL/w04Dll/boo_event.c"), @@ -1520,7 +1528,6 @@ config.libs = [ Rel( "w05Dll", # Koopa's Seaside Soiree objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w05Dll/main.c"), Object(Matching, "REL/w05Dll/hotel.c"), Object(Matching, "REL/w05Dll/monkey.c"), @@ -1532,7 +1539,6 @@ config.libs = [ Rel( "w06Dll", # Bowser's Gnarly Party objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w06Dll/main.c"), Object(Matching, "REL/w06Dll/mg_item.c"), Object(Matching, "REL/w06Dll/mg_coin.c"), @@ -1544,7 +1550,6 @@ config.libs = [ Rel( "w10Dll", # Tutorial board objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w10Dll/main.c"), Object(Matching, "REL/w10Dll/host.c"), Object(Matching, "REL/w10Dll/scene.c"), @@ -1554,34 +1559,34 @@ config.libs = [ Rel( "w20Dll", # Mega Board Mayhem objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w20Dll/main.c"), }, ), Rel( "w21Dll", # Mini Board Mad Dash objects={ - Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w21Dll/main.c"), }, ), Rel( "ztardll", objects={ - Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/ztardll/main.c"), - Object(NonMatching, "REL/ztardll/font.c"), - Object(NonMatching, "REL/ztardll/select.c"), + Object(Matching, "REL/ztardll/main.c"), + Object(Matching, "REL/ztardll/font.c"), + Object(Matching, "REL/ztardll/select.c"), }, ), ] +# Optional extra categories for progress tracking +config.progress_categories = [] +config.progress_each_module = args.verbose + if args.mode == "configure": # Write build.ninja and objdiff.json generate_build(config) elif args.mode == "progress": # Print progress and write progress.json - config.progress_each_module = args.verbose calculate_progress(config) else: sys.exit("Unknown mode: " + args.mode) diff --git a/extern/musyx b/extern/musyx index ddfad60c..a170f2ef 160000 --- a/extern/musyx +++ b/extern/musyx @@ -1 +1 @@ -Subproject commit ddfad60c3e4fede55479c744a1c70081e0d6cd12 +Subproject commit a170f2ef4a3f51edb89bc792dff79d55b2c42a89 diff --git a/include/OdemuExi2/odemuexi/DebuggerDriver.h b/include/OdemuExi2/odemuexi/DebuggerDriver.h new file mode 100644 index 00000000..71a27ed3 --- /dev/null +++ b/include/OdemuExi2/odemuexi/DebuggerDriver.h @@ -0,0 +1,24 @@ +#ifndef ODEMUEXI_DEBUGGER_DRIVER_H +#define ODEMUEXI_DEBUGGER_DRIVER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int Hu_IsStub(); + +void DBInitComm(volatile u8** param_1, __OSInterruptHandler param_2); +void DBInitInterrupts(void); +u32 DBQueryData(void); +int DBRead(void* data, u32 size); +int DBWrite(const void* data, u32 size); +void DBOpen(void); +void DBClose(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/MetroTRK/trk.h b/include/PowerPC_EABI_Support/MetroTRK/trk.h new file mode 100644 index 00000000..f7fa1c09 --- /dev/null +++ b/include/PowerPC_EABI_Support/MetroTRK/trk.h @@ -0,0 +1,384 @@ +#ifndef __METROTRK_TRK_H__ +#define __METROTRK_TRK_H__ + +#include "dolphin/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//////////// TRK ENUMS ///////////// +// Hardware types. +typedef enum { + HARDWARE_AMC_DDH = 0, + HARDWARE_GDEV = 1, + HARDWARE_BBA = 2 +} HardwareType; + +// DS Error returns. +enum { + DS_NoError = 0x0, + DS_StepError = 0x1, + DS_ParameterError = 0x2, + + DS_EventQueueFull = 0x100, + + DS_NoMessageBufferAvailable = 0x300, + DS_MessageBufferOverflow = 0x301, + DS_MessageBufferReadError = 0x302, + + DS_DispatchError = 0x500, + + DS_InvalidMemory = 0x700, + DS_InvalidRegister = 0x701, + DS_CWDSException = 0x702, + DS_UnsupportedError = 0x703, + DS_InvalidProcessID = 0x704, + DS_InvalidThreadID = 0x705, + DS_OSError = 0x706, + + DS_Error800 = 0x800 +}; + +typedef int DSError; + +// Where to read/write. +typedef enum { + DS_Stdin = 0, + DS_Stdout = 1, + DS_Stderr = 2 +} DSFileHandle; + +// IO returns. +typedef enum { + DS_IONoError = 0, + DS_IOError = 1, + DS_IOEOF = 2 +} DSIOResult; + +// Message command IDs +typedef enum { + DSMSG_Ping = 0x0, + DSMSG_Connect = 0x1, + DSMSG_Disconnect = 0x2, + DSMSG_Reset = 0x3, + DSMSG_Versions = 0x4, + DSMSG_SupportMask = 0x5, + DSMSG_Override = 0x7, + + DSMSG_ReadMemory = 0x10, + DSMSG_WriteMemory = 0x11, + DSMSG_ReadRegisters = 0x12, + DSMSG_WriteRegisters = 0x13, + DSMSG_SetOption = 0x17, + DSMSG_Continue = 0x18, + DSMSG_Step = 0x19, + DSMSG_Stop = 0x1A, + + DSMSG_ReplyACK = 0x80, + + DSMSG_NotifyStopped = 0x90, + DSMSG_NotifyException = 0x91, + + DSMSG_WriteFile = 0xD0, + DSMSG_ReadFile = 0xD1, + DSMSG_OpenFile = 0xD2, + DSMSG_CloseFile = 0xD3, + DSMSG_PositionFile = 0xD4, + + DSMSG_ReplyNAK = 0xFF +} MessageCommandID; + +// Register commands. +typedef enum { + DSREG_Default = 0, + DSREG_FP = 1, + DSREG_Extended1 = 2, + DSREG_Extended2 = 3 +} DSMessageRegisterOptions; + +// Step commands. +typedef enum { + DSSTEP_IntoCount = 0x0, + DSSTEP_IntoRange = 0x1, + DSSTEP_OverCount = 0x10, + DSSTEP_OverRange = 0x11 +} DSMessageStepOptions; + +typedef enum { + DSREPLY_NoError = 0x0, + DSREPLY_Error = 0x1, + DSREPLY_PacketSizeError = 0x2, + DSREPLY_CWDSError = 0x3, + DSREPLY_EscapeError = 0x4, + DSREPLY_BadFCS = 0x5, + DSREPLY_Overflow = 0x6, + DSREPLY_SequenceMissing = 0x7, + + DSREPLY_UnsupportedCommandError = 0x10, + DSREPLY_ParameterError = 0x11, + DSREPLY_UnsupportedOptionError = 0x12, + DSREPLY_InvalidMemoryRange = 0x13, + DSREPLY_InvalidRegisterRange = 0x14, + DSREPLY_CWDSException = 0x15, + DSREPLY_NotStopped = 0x16, + DSREPLY_BreakpointsFull = 0x17, + DSREPLY_BreakpointConflict = 0x18, + + DSREPLY_OSError = 0x20, + DSREPLY_InvalidProcessID = 0x21, + DSREPLY_InvalidThreadID = 0x22, + DSREPLY_DebugSecurityError = 0x23 +} DSReplyError; + +typedef enum { + DSRECV_Wait = 0, + DSRECV_Found = 1, + DSRECV_InFrame = 2, + DSRECV_FrameOverflow = 3 +} ReceiverState; + +typedef enum { + DSMSGMEMORY_Segmented = 0x01, /* non-flat addr space */ + DSMSGMEMORY_Extended = 0x02, /* > 32-bit data addr */ + DSMSGMEMORY_Protected = 0x04, /* non-user memory */ + DSMSGMEMORY_Userview = 0x08, /* breakpoints are invisible */ + DSMSGMEMORY_Space_program = 0x00, + DSMSGMEMORY_Space_data = 0x40, + DSMSGMEMORY_Space_io = 0x80 +}; + +typedef enum { + NUBEVENT_Null = 0, + NUBEVENT_Shutdown = 1, + NUBEVENT_Request = 2, + NUBEVENT_Breakpoint = 3, + NUBEVENT_Exception = 4, + NUBEVENT_Support = 5 +} NubEventType; + +typedef enum { + VALIDMEM_Readable = 0, + VALIDMEM_Writeable = 1 +} ValidMemoryOptions; + +typedef enum { + MEMACCESS_UserMemory = 0, + MEMACCESS_DebuggerMemory = 1 +} MemoryAccessOptions; + +typedef int UARTError; + +typedef enum { + UART_NoError = 0, + UART_UnknownBaudRate = 1, + UART_ConfigurationError = 2, + UART_BufferOverflow = 3, // specified buffer was too small + UART_NoData = 4 // no data available from polling +} UARTErrorOptions; + +typedef enum { + kBaudHWSet = -1, // use HW settings such as DIP switches + kBaud300 = 300, // valid baud rates + kBaud600 = 600, + kBaud1200 = 1200, + kBaud1800 = 1800, + kBaud2000 = 2000, + kBaud2400 = 2400, + kBaud3600 = 3600, + kBaud4800 = 4800, + kBaud7200 = 7200, + kBaud9600 = 9600, + kBaud19200 = 19200, + kBaud38400 = 38400, + kBaud57600 = 57600, + kBaud115200 = 115200, + kBaud230400 = 230400 +} UARTBaudRate; + +//////////////////////////////////// + +typedef int MessageBufferID; + +#define TRKMSGBUF_SIZE (0x800 + 0x80) + +typedef struct TRKBuffer { + /* 0x00 */ u32 mutex; + /* 0x04 */ BOOL isInUse; + /* 0x08 */ u32 length; + /* 0x0C */ u32 position; + /* 0x10 */ u8 data[TRKMSGBUF_SIZE]; +} TRKBuffer; + +typedef struct TRKFramingState { + MessageBufferID msgBufID; // _00 + TRKBuffer* buffer; // _04 + ReceiverState receiveState; // _08 + BOOL isEscape; // _0C + u8 fcsType; // _10 +} TRKFramingState; + +typedef struct TRKState_PPC { + u32 GPR[32]; // 0x0 + u32 LR; // 0x80 + u32 CTR; // 0x84 + u32 XER; // 0x88 + u32 MSR; // 0x8c + u32 DAR; // 0x90 + u32 DSISR; // 0x94 + BOOL stopped; // 0x98 + BOOL inputActivated; // 0x9c + u8* inputPendingPtr; // 0xA0 +} TRKState_PPC; + +typedef struct CommandReply { + u32 _00; // _00 + union { + u8 b; + MessageCommandID m; + } commandID; // _04, use MessageCommandID enum + union { + u8 b; + DSReplyError r; + } replyError; // _08, use DSReplyError enum - should be enum type? check + // size. + u32 _0C; // _0C + u8 _10[0x30]; // _10, unknown +} CommandReply; + +typedef struct ProcessorRestoreFlags_PPC { + u8 TBR; + u8 DEC; + u8 linker_padding[0x9 - 0x2]; +} ProcessorRestoreFlags_PPC; + +void TRKSaveExtended1Block(); + +void SetUseSerialIO(u8); +u8 GetUseSerialIO(void); + +#define SPR_XER 1 +#define SPR_LR 8 +#define SPR_CTR 9 +#define SPR_DSISR 18 +#define SPR_DAR 19 +#define SPR_DEC 22 +#define SPR_SDR1 25 +#define SPR_SRR0 26 +#define SPR_SRR1 27 +#define SPR_SPRG0 272 +#define SPR_SPRG1 273 +#define SPR_SPRG2 274 +#define SPR_SPRG3 275 +#define SPR_EAR 282 +#define SPR_TBL 284 +#define SPR_TBU 285 +#define SPR_PVR 287 +#define SPR_IBAT0U 528 +#define SPR_IBAT0L 529 +#define SPR_IBAT1U 530 +#define SPR_IBAT1L 531 +#define SPR_IBAT2U 532 +#define SPR_IBAT2L 533 +#define SPR_IBAT3U 534 +#define SPR_IBAT3L 535 +#define SPR_IBAT4U 560 +#define SPR_IBAT4L 561 +#define SPR_IBAT5U 562 +#define SPR_IBAT5L 563 +#define SPR_IBAT6U 564 +#define SPR_IBAT6L 565 +#define SPR_IBAT7U 566 +#define SPR_IBAT7L 567 +#define SPR_DBAT0U 536 +#define SPR_DBAT0L 537 +#define SPR_DBAT1U 538 +#define SPR_DBAT1L 539 +#define SPR_DBAT2U 540 +#define SPR_DBAT2L 541 +#define SPR_DBAT3U 542 +#define SPR_DBAT3L 543 +#define SPR_DBAT4U 568 +#define SPR_DBAT4L 569 +#define SPR_DBAT5U 570 +#define SPR_DBAT5L 571 +#define SPR_DBAT6U 572 +#define SPR_DBAT6L 573 +#define SPR_DBAT7U 574 +#define SPR_DBAT7L 575 +#define SPR_GQR0 912 +#define SPR_GQR1 913 +#define SPR_GQR2 914 +#define SPR_GQR3 915 +#define SPR_GQR4 916 +#define SPR_GQR5 917 +#define SPR_GQR6 918 +#define SPR_GQR7 919 +#define SPR_HID2 920 +#define SPR_WPAR 921 +#define SPR_DMA_U 922 +#define SPR_DMA_L 923 +#define SPR_UMMCR0 936 +#define SPR_UPMC1 937 +#define SPR_UPMC2 938 +#define SPR_USIA 939 +#define SPR_UMMCR1 940 +#define SPR_UPMC3 941 +#define SPR_UPMC4 942 +#define SPR_USDA 943 +#define SPR_MMCR0 952 +#define SPR_PMC1 953 +#define SPR_PMC2 954 +#define SPR_SIA 955 +#define SPR_MMCR1 956 +#define SPR_PMC3 957 +#define SPR_PMC4 958 +#define SPR_SDA 959 +#define SPR_HID0 1008 +#define SPR_HID1 1009 +#define SPR_IABR 1010 +#define SPR_HID4 1011 +#define SPR_DABR 1013 +#define SPR_L2CR 1017 +#define SPR_ICTC 1019 +#define SPR_THRM1 1020 +#define SPR_THRM2 1021 +#define SPR_FPECR 1022 + +// PPC exceptions +// 0x000 is reserved +#define PPC_SystemReset 0x100 +#define PPC_MachineCheck 0x200 +#define PPC_DataStorage 0x300 +#define PPC_InstructionStorage 0x400 +#define PPC_ExternalInterrupt 0x500 +#define PPC_Alignment 0x600 +#define PPC_Program 0x700 +#define PPC_FloatingPointUnavaiable 0x800 +#define PPC_Decrementer 0x900 +// 0xA00-0xB00 are reserved +#define PPC_SystemCall 0xC00 +#define PPC_Trace 0xD00 +#define PPC_FloatingPointAssist 0xE00 // unimplemented in 750CL +#define PPC_PerformanceMonitor 0xF00 // Dolphin/Broadway specific +// 0x1000-0x1200 are unimplemented in 750CL +#define PPC_InstructionAddressBreakpoint 0x1300 // Dolphin/Broadway specific +// 0x1400-0x2F00 are reserved, but TRK uses some +#define PPC_SystemManagementInterrupt 0x1400 +// 0x1500-0x1600 are unimplemented in 750CL +#define PPC_ThermalManagementInterrupt 0x1700 +#define PPC_1800Exception 0x1800 +#define PPC_1900Exception 0x1900 +#define PPC_1A00Exception 0x1A00 +#define PPC_1B00Exception 0x1B00 +#define PPC_1C00Exception 0x1C00 // Data breakpoint? +#define PPC_1D00Exception 0x1D00 // Instruction breakpoint? +#define PPC_1E00Exception 0x1E00 // Peripheral breakpoint? +#define PPC_1F00Exception 0x1F00 // Non maskable development port? +#define PPC_2000Exception 0x2000 + +#ifdef __cplusplus +} +#endif + +#endif /* __METROTRK_TRK_H__ */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h new file mode 100644 index 00000000..046471d5 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h @@ -0,0 +1,18 @@ +#ifndef _MSL_COMMON_FILE_POS_H +#define _MSL_COMMON_FILE_POS_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fseek(FILE* file, unsigned long offset, int mode); +int _fseek(FILE* file, fpos_t offset, int mode); +long ftell(FILE* file); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_FILE_POS_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h new file mode 100644 index 00000000..7c62fe70 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h @@ -0,0 +1,17 @@ +#ifndef _MSL_COMMON_ABORT_EXIT_H +#define _MSL_COMMON_ABORT_EXIT_H + +#ifdef __cplusplus +extern "C" { +#endif + +void exit(int status); +void abort(void); + +extern void (*__stdio_exit)(void); + +#ifdef __cplusplus +}; +#endif + +#endif /* _MSL_COMMON_ABORT_EXIT_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h new file mode 100644 index 00000000..6b08d6f9 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h @@ -0,0 +1,16 @@ +#ifndef _MSL_COMMON_ALLOC_H +#define _MSL_COMMON_ALLOC_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void free(void* ptr); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_ALLOC_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h new file mode 100644 index 00000000..2e0e8010 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h @@ -0,0 +1,129 @@ +#ifndef _MSL_COMMON_ANSI_FILES_H +#define _MSL_COMMON_ANSI_FILES_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +typedef unsigned long __file_handle; +typedef unsigned long fpos_t; +#ifndef __cplusplus +typedef unsigned short wchar_t; +#endif + +#define set_error(file) \ + do { \ + (file)->file_state.error = 1; \ + (file)->buffer_length = 0; \ + } while (0) + +enum __file_kinds { + __closed_file, + __disk_file, + __console_file, + __string_file, + __unavailable_file +}; + +enum __file_orientation { + /* 0x0 */ UNORIENTED, + /* 0x1 */ CHAR_ORIENTED, + /* 0x2 */ WIDE_ORIENTED +}; + +typedef struct _file_modes { + unsigned int open_mode : 2; + unsigned int io_mode : 3; + unsigned int buffer_mode : 2; + unsigned int file_kind : 3; + unsigned int file_orientation : 2; + unsigned int binary_io : 1; +} file_modes; + +enum __io_modes { + __read = 1, + __write = 2, + __read_write = 3, + __append = 4 +}; + +enum __io_states { + __neutral, + __writing, + __reading, + __rereading +}; + +enum __io_results { + __no_io_error, + __io_error, + __io_EOF +}; + +typedef struct _file_states { + unsigned int io_state : 3; + unsigned int free_buffer : 1; + unsigned char eof; + unsigned char error; +} file_states; + +typedef void (*__idle_proc)(void); +typedef int (*__pos_proc)(__file_handle file, fpos_t* position, int mode, + __idle_proc idle_proc); +typedef int (*__io_proc)(__file_handle file, unsigned char* buff, size_t* count, + __idle_proc idle_proc); +typedef int (*__close_proc)(__file_handle file); + +typedef struct _FILE { + __file_handle handle; + file_modes file_mode; + file_states file_state; + + unsigned char is_dynamically_allocated; + char char_buffer; + char char_buffer_overflow; + char ungetc_buffer[2]; + wchar_t ungetc_wide_buffer[2]; + + unsigned long position; + unsigned char* buffer; + unsigned long buffer_size; + unsigned char* buffer_ptr; + unsigned long buffer_length; + unsigned long buffer_alignment; + unsigned long save_buffer_length; + unsigned long buffer_position; + + __pos_proc position_fn; + __io_proc read_fn; + __io_proc write_fn; + __close_proc close_fn; + __idle_proc idle_fn; + struct _FILE* next_file_struct; +} FILE; + +#define _IONBF 0 +#define _IOLBF 1 +#define _IOFBF 2 + +extern FILE __files[]; +extern int __close_console(__file_handle file); +extern int __write_console(__file_handle file, unsigned char* buf, + size_t* count, __idle_proc idle_fn); +extern int __read_console(__file_handle file, unsigned char* buf, size_t* count, + __idle_proc idle_fn); + +unsigned int __flush_all(void); +void __close_all(void); + +#ifdef __cplusplus +}; +#endif + +#endif /* _MSL_COMMON_ANSI_FILES_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h new file mode 100644 index 00000000..a7a5cc67 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h @@ -0,0 +1,27 @@ +#ifndef _MSL_COMMON_ANSI_FP_H +#define _MSL_COMMON_ANSI_FP_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" + +#define SIGDIGLEN 36 + +typedef struct decimal { + char sign; + char unk1; + short exp; + struct { + unsigned char length; + unsigned char text[36]; + unsigned char unk41; + } sig; +} decimal; + +typedef struct decform { + char style; + char unk1; + short digits; +} decform; + +void __num2dec(const decform* form, double x, decimal* d); + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h new file mode 100644 index 00000000..317dfa0d --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h @@ -0,0 +1,19 @@ +#ifndef _MSL_COMMON_ARITH_H +#define _MSL_COMMON_ARITH_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int quot; /* quotient */ + int rem; /* remainder */ +} div_t; + +div_t div(int numerator, int denominator); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_ARITH_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h new file mode 100644 index 00000000..85ad160a --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h @@ -0,0 +1,11 @@ +#ifndef _MSL_COMMON_BUFFER_IO_H +#define _MSL_COMMON_BUFFER_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +enum { __align_buffer, __dont_align_buffer }; + +void __prep_buffer(FILE* file); +int __flush_buffer(FILE* file, size_t* bytes_flushed); + +#endif /* _MSL_COMMON_BUFFER_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h new file mode 100644 index 00000000..e3733cf7 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h @@ -0,0 +1,17 @@ +#ifndef _MSL_COMMON_CHAR_IO_H +#define _MSL_COMMON_CHAR_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fputs(const char* str, FILE* stream); +int __put_char(int c, FILE* stream); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_CHAR_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h new file mode 100644 index 00000000..e4456725 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h @@ -0,0 +1,30 @@ +#ifndef _MSL_COMMON_CRITICAL_REGIONS_H +#define _MSL_COMMON_CRITICAL_REGIONS_H + +#ifdef __cplusplus +extern "C" { +#endif + +enum critical_regions { + atexit_funcs_access, + malloc_pool_access, + stdin_access, + stdout_access, + stderr_access, + files_access, + console_status_access, + signal_funcs_access, + thread_access, + num_critical_regions +}; + +void __init_critical_regions(void); +void __kill_critical_regions(void); +void __begin_critical_region(int region); +void __end_critical_region(int region); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h new file mode 100644 index 00000000..d6a1b29d --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h @@ -0,0 +1,76 @@ +#ifndef _MSL_COMMON_CTYPE_H +#define _MSL_COMMON_CTYPE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define EOF -1L + +extern unsigned char __ctype_map[]; +extern unsigned char __lower_map[]; +extern unsigned char __upper_map[]; + +#define __control_char 0x01 +#define __motion_char 0x02 +#define __space_char 0x04 +#define __punctuation 0x08 +#define __digit 0x10 +#define __hex_digit 0x20 +#define __lower_case 0x40 +#define __upper_case 0x80 + +#define __letter (__lower_case | __upper_case) +#define __alphanumeric (__letter | __digit) +#define __graphic (__alphanumeric | __punctuation) +#define __printable (__graphic | __space_char) +#define __whitespace (__motion_char | __space_char) +#define __control (__motion_char | __control_char) +#define __zero_fill(c) ((int)(unsigned char)(c)) + +int tolower(int c); +int toupper(int c); + +inline int _isalpha(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __letter); +} +inline int isdigit(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __digit); +} +inline int isspace(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __whitespace); +} +inline int isupper(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __upper_case); +} +inline int isxdigit(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __hex_digit); +} + +inline int _tolower(int c) +{ + return (c == -1 ? -1 : (int)__lower_map[(unsigned char)c]); +} + +#ifdef __cplusplus +}; + +namespace std { +inline int tolower(int c) +{ + return (c == -1 ? -1 : (int)__lower_map[(unsigned char)c]); +} +inline int toupper(int c) +{ + return (c == -1 ? -1 : (int)__upper_map[(unsigned char)c]); +} +}; // namespace std + +#endif + +#endif /* _MSL_COMMON_CTYPE_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h new file mode 100644 index 00000000..7e838551 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h @@ -0,0 +1,17 @@ +#ifndef _MSL_COMMON_DIRECT_IO_H +#define _MSL_COMMON_DIRECT_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +size_t __fwrite(const void* buffer, size_t size, size_t count, FILE* stream); +size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_DIRECT_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h new file mode 100644 index 00000000..269d896d --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h @@ -0,0 +1,20 @@ +#ifndef MSL_COMMON_SRC_ERRNO_H +#define MSL_COMMON_SRC_ERRNO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ENOERR 0 +#define EDOM 33 +#define ERANGE 34 +#define EFPOS 40 +#define ESIGPARM 36 + +extern int errno; + +#ifdef __cplusplus +} +#endif + +#endif /* MSL_COMMON_SRC_ERRNO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h new file mode 100644 index 00000000..4d8e8b62 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h @@ -0,0 +1,15 @@ +#ifndef _MSL_COMMON_EXTRAS_H +#define _MSL_COMMON_EXTRAS_H + +#ifdef __cplusplus +extern "C" { +#endif + +int strnicmp(const char* str1, const char* str2, int n); +int stricmp(const char* str1, const char* str2); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_EXTRAS_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h new file mode 100644 index 00000000..a06e7cef --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h @@ -0,0 +1,18 @@ +#ifndef _MSL_COMMON_FILE_IO_H +#define _MSL_COMMON_FILE_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int __msl_strnicmp(const char* str1, const char* str2, int n); +int fflush(FILE* file); +int fclose(FILE* file); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_FILE_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h new file mode 100644 index 00000000..14d34342 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h @@ -0,0 +1,92 @@ +#ifndef _MSL_COMMON_FLOAT_H +#define _MSL_COMMON_FLOAT_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#define FP_SNAN 0 +#define FP_QNAN 1 +#define FP_INFINITE 2 +#define FP_ZERO 3 +#define FP_NORMAL 4 +#define FP_SUBNORMAL 5 + +#define FP_NAN FP_QNAN + +#define fpclassify(x) \ + ((sizeof(x) == sizeof(float)) ? __fpclassifyf(x) : __fpclassifyd(x)) +#define signbit(x) \ + ((sizeof(x) == sizeof(float)) ? __signbitf(x) : __signbitd(x)) +#define isfinite(x) ((fpclassify(x) > 2)) +#define isnan(x) ((fpclassify(x) == FP_NAN)) +#define isinf(x) ((fpclassify(x) == FP_INFINITE)) + +#define __signbitf(x) ((int)(__HI(x) & 0x80000000)) + +// TODO: OK? +#define __signbitd(x) ((int)(__HI(x) & 0x80000000)) + +extern unsigned long __float_nan[]; +extern unsigned long __float_huge[]; +extern unsigned long __float_max[]; +extern unsigned long __float_epsilon[]; + +inline int __fpclassifyf(float __value) +{ + unsigned long integer = *(unsigned long*)&__value; + + switch (integer & 0x7f800000) { + case 0x7f800000: + if ((integer & 0x7fffff) != 0) { + return FP_QNAN; + } + return FP_INFINITE; + + case 0: + if ((integer & 0x7fffff) != 0) { + return FP_SUBNORMAL; + } + return FP_ZERO; + } + + return FP_NORMAL; +} + +inline int __fpclassifyd(double __value) +{ + switch (__HI(__value) & 0x7ff00000) { + case 0x7ff00000: { + if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff)) + return FP_QNAN; + else + return FP_INFINITE; + break; + } + case 0: { + if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff)) + return FP_SUBNORMAL; + else + return FP_ZERO; + break; + } + } + return FP_NORMAL; +} + +#define FLT_MANT_DIG 24 +#define FLT_DIG 6 +#define FLT_MIN_EXP (-125) +#define FLT_MIN_10_EXP (-37) +#define FLT_MAX_EXP 128 +#define FLT_MAX_10_EXP 38 + +#define FLT_MAX 3.40282346638528860e+38f +#define FLT_EPSILON 1.1920928955078125e-07f + +#define DBL_MANT_DIG 53 +#define DBL_DIG 15 +#define DBL_MIN_EXP (-1021) +#define DBL_MIN_10_EXP (-308) +#define DBL_MAX_EXP 1024 +#define DBL_MAX_10_EXP 308 + +#endif /* _MSL_COMMON_FLOAT_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h new file mode 100644 index 00000000..2b8b756f --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h @@ -0,0 +1,93 @@ +#ifndef _STD_LIMITS_H +#define _STD_LIMITS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-0x7F - 1) +#define SCHAR_MAX 0x7F +#define UCHAR_MAX 0xFF + +#define CHAR_MIN 0 +#define CHAR_MAX SCHAR_MAX + +#define SHRT_MIN (-0x7FFF - 1) +#define SHRT_MAX 0x7FFF +#define USHRT_MAX 0xFFFF + +#define INT_MIN (-0x7FFFFFFF - 1) +#define INT_MAX 0x7FFFFFFF +#define UINT_MAX 0xFFFFFFFF + +#define LONG_MIN (-0x7FFFFFFFL - 1) +#define LONG_MAX 0x7FFFFFFFL +#define ULONG_MAX 0xFFFFFFFFUL + +#define LLONG_MIN (-0x7FFFFFFFFFFFFFFFLL - 1) +#define LLONG_MAX 0x7FFFFFFFFFFFFFFFLL +#define ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL + +#ifdef __cplusplus +} + +namespace std { +template class numeric_limits { +public: + inline static T min(); + inline static T max(); +}; + +template <> class numeric_limits { +public: + inline static char min() { return -0x80; } + inline static char max() { return 0x7F; } +}; + +template <> class numeric_limits { +public: + inline static short min() { return -0x8000; } + inline static short max() { return 0x7FFF; } +}; + +template <> class numeric_limits { +public: + inline static int min() { return -0x80000000; } + inline static int max() { return 0x7FFFFFFF; } +}; + +template <> class numeric_limits { +public: + inline static long min() { return -0x80000000; } + inline static long max() { return 0x7FFFFFFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned char min() { return 0x0; } + inline static unsigned char max() { return 0xFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned short min() { return 0x0; } + inline static unsigned short max() { return 0xFFFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned int min() { return 0x0; } + inline static unsigned int max() { return 0xFFFFFFFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned long min() { return 0x0; } + inline static unsigned long max() { return 0xFFFFFFFF; } +}; + +} // namespace std +#endif +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h new file mode 100644 index 00000000..e99949cc --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h @@ -0,0 +1,106 @@ +#ifndef MSL_MATH_H_ +#define MSL_MATH_H_ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" + +#define NAN (*(float*)__float_nan) +#define HUGE_VALF (*(float*)__float_huge) + +#define M_PI 3.14159265358979323846f +#define M_SQRT3 1.73205f + +#define DEG_TO_RAD(degrees) (degrees * (M_PI / 180.0f)) +#define RAD_TO_DEG(radians) \ + (radians \ + * (180.0f / M_PI + 0.000005f)) // the 0.000005f is probably a fakematch + +#ifdef __cplusplus +extern "C" { +#endif + +int abs(int); +double acos(double); +float acosf(float); +double asin(double); +double atan(double); +double atan2(double, double); +double ceil(double); +double copysign(double, double); +double cos(double); +float cosf(float); +double exp(double); + +extern double __fabs(double); +extern float __fabsf(float); +inline double fabs(double f) { return __fabs(f); } + +double __frsqrte(double); +float __fres(float); + +double floor(double); +double fmod(double, double); + +double frexp(double, int*); +double ldexp(double, int); +double modf(double, double*); +double pow(double, double); +double sin(double); +float sinf(float); +double tan(double); +float tanf(float); + +extern inline double sqrt(double x) +{ + if (x > 0.0) { + double guess = __frsqrte(x); /* returns an approximation to */ + guess + = .5 * guess * (3.0 - guess * guess * x); /* now have 8 sig bits */ + guess + = .5 * guess * (3.0 - guess * guess * x); /* now have 16 sig bits */ + guess + = .5 * guess * (3.0 - guess * guess * x); /* now have 32 sig bits */ + guess = .5 * guess + * (3.0 - guess * guess * x); /* now have > 53 sig bits */ + return x * guess; + } else if (x == 0) + return 0; + else if (x) + return NAN; + + return HUGE_VALF; +} + +#ifdef __cplusplus +}; + +namespace std { +inline float fabsf(float f) { return fabs(f); } +inline float abs(float f) { return fabsf(f); } +inline float fmodf(float x, float y) { return fmod(x, y); } +inline float atan2f(float y, float x) { return (float)atan2(y, x); } +inline float sinf(float x) { return sin(x); } +inline float cosf(float x) { return cos(x); } +inline float tanf(float x) { return tan(x); } + +extern inline float sqrtf(float x) +{ + const double _half = .5; + const double _three = 3.0; + volatile float y; + if (x > 0.0f) { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half * guess + * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess + * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess + * (_three - guess * guess * x); // now have 32 sig bits + y = (float)(x * guess); + return y; + } + return x; +} +}; // namespace std +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math_ppc.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math_ppc.h new file mode 100644 index 00000000..325c4527 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math_ppc.h @@ -0,0 +1,5 @@ +double acos(double x); +double tan(double); +double sin(double); +double cos(double); +double atan2(double); diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h new file mode 100644 index 00000000..2aa9f4ea --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h @@ -0,0 +1,16 @@ +#ifndef _MSL_COMMON_MBSTRING_H +#define _MSL_COMMON_MBSTRING_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" + +#ifdef __cplusplus +extern "C" { +#endif + +size_t wcstombs(char* dst, const wchar_t* src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_MBSTRING_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h new file mode 100644 index 00000000..0e245466 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h @@ -0,0 +1,19 @@ +#ifndef _MSL_COMMON_MEM_FUNCS_H +#define _MSL_COMMON_MEM_FUNCS_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n); +void __copy_longs_unaligned(void* dst, const void* src, size_t n); +void __copy_longs_rev_aligned(void* dst, const void* src, size_t n); +void __copy_longs_aligned(void* dst, const void* src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_MEM_FUNCS_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h new file mode 100644 index 00000000..715f282a --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h @@ -0,0 +1,14 @@ +#ifndef _MSL_COMMON_MISC_IO_H +#define _MSL_COMMON_MISC_IO_H + +#ifdef __cplusplus +extern "C" { +#endif + +void __stdio_atexit(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_MISC_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h new file mode 100644 index 00000000..e716867f --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h @@ -0,0 +1,22 @@ +#ifndef _MSL_COMMON_PRINTF_H +#define _MSL_COMMON_PRINTF_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" +#include "stdarg.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fprintf(FILE* stream, const char* format, ...); +int printf(const char* format, ...); +int sprintf(char* s, const char* format, ...); +int snprintf(char* s, size_t n, const char* format, ...); +int vsnprintf(char* s, size_t n, const char* format, va_list arg); +int vprintf(const char* format, va_list arg); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_PRINTF_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h new file mode 100644 index 00000000..c6451e34 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h @@ -0,0 +1,43 @@ +#ifndef _MSL_COMMON_SCANF_H +#define _MSL_COMMON_SCANF_H + +#include "stddef.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum __ReadProcActions { __GetAChar, __UngetAChar, __TestForError }; + +enum __WReadProcActions { __GetAwChar, __UngetAwChar, __TestForwcsError }; + +typedef struct { + char* CharStr; + size_t MaxCharCount; + size_t CharsWritten; +} __OutStrCtrl; + +typedef struct { + char* NextChar; + int NullCharDetected; +} __InStrCtrl; + +typedef struct { + wchar_t* wCharStr; + size_t MaxCharCount; + size_t CharsWritten; +} __wOutStrCtrl; + +typedef struct { + wchar_t* wNextChar; + int wNullCharDetected; +} __wInStrCtrl; + +int __StringRead(void* str, int ch, int behavior); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_SCANF_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h new file mode 100644 index 00000000..58fc22ab --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h @@ -0,0 +1,16 @@ +#ifndef _MSL_COMMON_SIGNAL_H +#define _MSL_COMMON_SIGNAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*__signal_func_ptr)(int); + +int raise(int sig); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_SIGNAL_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h new file mode 100644 index 00000000..01097a0c --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h @@ -0,0 +1,13 @@ +#ifndef MSL_STDIO_H_ +#define MSL_STDIO_H_ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h" // IWYU pragma: export +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h" // IWYU pragma: export +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h" // IWYU pragma: export +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h" // IWYU pragma: export + +#define stdin (&__files[0]) +#define stdout (&__files[1]) +#define stderr (&__files[2]) + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h new file mode 100644 index 00000000..9df0be5b --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h @@ -0,0 +1,9 @@ +#ifndef MSL_STDLIB_H_ +#define MSL_STDLIB_H_ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h" + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h new file mode 100644 index 00000000..843ee863 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h @@ -0,0 +1,18 @@ +#ifndef _MSL_COMMON_STRTOUL_H +#define _MSL_COMMON_STRTOUL_H + +#ifdef __cplusplus +extern "C" { +#endif + +long strtol(const char* str, char** end, int base); +unsigned long strtoul(const char* str, char** end, int base); +unsigned long __strtoul(int base, int max_width, + int (*ReadProc)(void*, int, int), void* ReadProcArg, + int* chars_scanned, int* negative, int* overflow); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_STRTOUL_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h new file mode 100644 index 00000000..90153f95 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h @@ -0,0 +1,12 @@ +#ifndef _MSL_COMMON_WCHAR_IO_H +#define _MSL_COMMON_WCHAR_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifndef __cplusplus +typedef unsigned short wchar_t; +#endif + +int fwide(FILE* file, int mode); + +#endif /* _MSL_COMMON_WCHAR_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h new file mode 100644 index 00000000..1eef34b4 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h @@ -0,0 +1,234 @@ +#ifndef _FDLIBM_H +#define _FDLIBM_H + +/* @(#)fdlibm.h 1.5 04/04/22 */ +/** + * ==================================================== + * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#ifdef __cplusplus +extern "C" { +#endif // ifdef __cplusplus + +/* Sometimes it's necessary to define __LITTLE_ENDIAN explicitly + but these catch some common cases. */ + +#if defined(i386) || defined(i486) || defined(intel) || defined(x86) \ + || defined(i86pc) || defined(__alpha) || defined(__osf__) +#define __LITTLE_ENDIAN +#endif + +#ifdef __LITTLE_ENDIAN +#define __HI(x) *(1 + (int*)&x) +#define __LO(x) *(int*)&x +#define __HIp(x) *(1 + (int*)x) +#define __LOp(x) *(int*)x +#else +#define __HI(x) *(int*)&x +#define __LO(x) *(1 + (int*)&x) +#define __HIp(x) *(int*)x +#define __LOp(x) *(1 + (int*)x) +#endif + +// NOTE: should be enabled according to w_atan2.c +#define _IEEE_LIBM + +// TODO: should __STDC__ actually be defined? +// #ifdef __STDC__ +#define __P(p) p +// #else +// #define __P(p) () +// #endif + +/** + * ANSI/POSIX + */ + +extern int signgam; + +#define MAXFLOAT ((f32)3.40282346638528860e+38) + +enum fdversion { fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix }; + +#define _LIB_VERSION_TYPE enum fdversion +#define _LIB_VERSION _fdlib_version + +/* if global variable _LIB_VERSION is not desirable, one may + * change the following to be a constant by: + * #define _LIB_VERSION_TYPE const enum version + * In that case, after one initializes the value _LIB_VERSION (see + * s_lib_version.c) during compile time, it cannot be modified + * in the middle of a program + */ +extern _LIB_VERSION_TYPE _LIB_VERSION; + +#define _IEEE_ fdlibm_ieee +#define _SVID_ fdlibm_svid +#define _XOPEN_ fdlibm_xopen +#define _POSIX_ fdlibm_posix + +struct exception { + int type; + char* name; + double arg1; + double arg2; + double retval; +}; + +#define HUGE MAXFLOAT + +/** + * set X_TLOSS = pi*2**52, which is possibly defined in + * (one may replace the following line by "#include ") + */ + +#define X_TLOSS 1.41484755040568800000e+16 + +#define DOMAIN 1 +#define SING 2 +#define OVERFLOW 3 +#define UNDERFLOW 4 +#define TLOSS 5 +#define PLOSS 6 + +/** + * ANSI/POSIX + */ +extern double acos __P((double)); +extern double asin __P((double)); +extern double atan __P((double)); +extern double atan2 __P((double, double)); +extern double cos __P((double)); +extern double sin __P((double)); +extern double tan __P((double)); + +extern double cosh __P((double)); +extern double sinh __P((double)); +extern double tanh __P((double)); + +extern double exp __P((double)); +extern double frexp __P((double, int*)); +extern double ldexp __P((double, int)); +extern double scalbn __P((double, int)); +extern double log __P((double)); +extern double log10 __P((double)); +extern double modf __P((double, double*)); + +extern double pow __P((double, double)); +extern double sqrt __P((double)); + +extern double ceil __P((double)); +extern double fabs __P((double)); +// NOTE: I have no idea how they got it to mangle like this +static inline double fabs__Fd(double v) { return __fabs(v); } +extern double floor __P((double)); +extern double fmod __P((double, double)); + +extern double erf __P((double)); +extern double erfc __P((double)); +extern double gamma __P((double)); +extern double hypot __P((double, double)); +extern int isnan __P((double)); +extern int finite __P((double)); +extern double j0 __P((double)); +extern double j1 __P((double)); +extern double jn __P((int, double)); +extern double lgamma __P((double)); +extern double y0 __P((double)); +extern double y1 __P((double)); +extern double yn __P((int, double)); + +extern double acosh __P((double)); +extern double asinh __P((double)); +extern double atanh __P((double)); +extern double cbrt __P((double)); +extern double logb __P((double)); +extern double nextafter __P((double, double)); +extern double remainder __P((double, double)); +#ifdef _SCALB_INT +extern double scalb __P((double, int)); +#else +extern double scalb __P((double, double)); +#endif + +extern int matherr __P((struct exception*)); + +/** + * IEEE Test Vector + */ +extern double significand __P((double)); + +/** + * Functions callable from C, intended to support IEEE arithmetic. + */ +extern double copysign __P((double, double)); +extern int ilogb __P((double)); +extern double rint __P((double)); +extern double scalbn __P((double, int)); + +/** + * BSD math library entry points + */ +extern double expm1 __P((double)); +extern double log1p __P((double)); + +/** + * Reentrant version of gamma & lgamma; passes signgam back by reference + * as the second argument; user must allocate space for signgam. + */ +#ifdef _REENTRANT +extern double gamma_r __P((double, int*)); +extern double lgamma_r __P((double, int*)); +#endif /* _REENTRANT */ + +/* ieee style elementary functions */ +extern double __ieee754_sqrt __P((double)); +extern double __ieee754_acos __P((double)); +extern double __ieee754_acosh __P((double)); +extern double __ieee754_log __P((double)); +extern double __ieee754_atanh __P((double)); +extern double __ieee754_asin __P((double)); +extern double __ieee754_atan2 __P((double, double)); +extern double __ieee754_exp __P((double)); +extern double __ieee754_cosh __P((double)); +extern double __ieee754_fmod __P((double, double)); +extern double __ieee754_pow __P((double, double)); +extern double __ieee754_lgamma_r __P((double, int*)); +extern double __ieee754_gamma_r __P((double, int*)); +extern double __ieee754_lgamma __P((double)); +extern double __ieee754_gamma __P((double)); +extern double __ieee754_log10 __P((double)); +extern double __ieee754_sinh __P((double)); +extern double __ieee754_hypot __P((double, double)); +extern double __ieee754_j0 __P((double)); +extern double __ieee754_j1 __P((double)); +extern double __ieee754_y0 __P((double)); +extern double __ieee754_y1 __P((double)); +extern double __ieee754_jn __P((int, double)); +extern double __ieee754_yn __P((int, double)); +extern double __ieee754_remainder __P((double, double)); +extern int __ieee754_rem_pio2 __P((double, double*)); +#ifdef _SCALB_INT +extern double __ieee754_scalb __P((double, int)); +#else +extern double __ieee754_scalb __P((double, double)); +#endif + +/* fdlibm kernel function */ +extern double __kernel_standard __P((double, double, int)); +extern double __kernel_sin __P((double, double, int)); +extern double __kernel_cos __P((double, double)); +extern double __kernel_tan __P((double, double, int)); +extern int __kernel_rem_pio2 __P((double*, double*, int, int, int, const int*)); + +#ifdef __cplusplus +}; +#endif // ifdef __cplusplus + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/Gecko_ExceptionPPC.h b/include/PowerPC_EABI_Support/Runtime/Gecko_ExceptionPPC.h new file mode 100755 index 00000000..a864ea0d --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/Gecko_ExceptionPPC.h @@ -0,0 +1,231 @@ +#ifndef _RUNTIME_GECKO_EXCEPTIONPPC_H +#define _RUNTIME_GECKO_EXCEPTIONPPC_H + +#include + +typedef u8 exaction_type; + +#define EXACTION_ENDBIT 0x80 +#define EXACTION_MASK 0x7F + +// EXAction structs + +#define EXACTION_ENDOFLIST 0 +#define EXACTION_BRANCH 1 + +typedef struct ex_branch { + exaction_type action; + u8 unused; + u16 target; +} ex_branch; + +#define EXACTION_DESTROYLOCAL 2 + +typedef struct ex_destroylocal { + exaction_type action; + u8 unused; + s16 local; + void* dtor; +} ex_destroylocal; + +#define EXACTION_DESTROYLOCALCOND 3 + +typedef struct ex_destroylocalcond { + exaction_type action; + u8 dlc_field; + s16 cond; + s16 local; + void* dtor; +} ex_destroylocalcond; + +#define ex_destroylocalcond_MakeField(regcond) (((regcond) << 7)) +#define ex_destroylocalcond_GetRegCond(field) ((field) >> 7) + +#define EXACTION_DESTROYLOCALPOINTER 4 + +typedef struct ex_destroylocalpointer { + exaction_type action; + u8 dlp_field; + s16 pointer; + void* dtor; +} ex_destroylocalpointer; + +#define ex_destroylocalpointer_MakeField(regpointer) (((regpointer) << 7)) +#define ex_destroylocalpointer_GetRegPointer(field) ((field) >> 7) + +#define EXACTION_DESTROYLOCALARRAY 5 + +typedef struct ex_destroylocalarray { + exaction_type action; + u8 unused; + s16 localarray; + u16 elements; + u16 element_size; + void* dtor; +} ex_destroylocalarray; + +#define EXACTION_DESTROYBASE 6 +#define EXACTION_DESTROYMEMBER 7 + +typedef struct ex_destroymember { + exaction_type action; + u8 dm_field; + s16 objectptr; + s32 offset; + void* dtor; +} ex_destroymember; + +#define ex_destroymember_MakeField(regpointer) (((regpointer) << 7)) +#define ex_destroymember_GetRegPointer(field) ((field) >> 7) + +#define EXACTION_DESTROYMEMBERCOND 8 + +typedef struct ex_destroymembercond { + exaction_type action; + u8 dmc_field; + s16 cond; + s16 objectptr; + s32 offset; + void* dtor; +} ex_destroymembercond; + +#define ex_destroymembercond_MakeField(regcond, regpointer) (((regcond) << 7) | (((regpointer)&0x1) << 6)) +#define ex_destroymembercond_GetRegCond(field) ((field) >> 7) +#define ex_destroymembercond_GetRegPointer(field) (((field) >> 6) & 0x1) + +#define EXACTION_DESTROYMEMBERARRAY 9 + +typedef struct ex_destroymemberarray { + exaction_type action; + u8 dma_field; + s16 objectptr; + s32 offset; + s32 elements; + s32 element_size; + void* dtor; +} ex_destroymemberarray; + +#define ex_destroymemberarray_MakeField(regpointer) (((regpointer) << 7)) +#define ex_destroymemberarray_GetRegPointer(field) ((field) >> 7) + +#define EXACTION_DELETEPOINTER 10 + +typedef struct ex_deletepointer { + exaction_type action; + u8 dp_field; + s16 objectptr; + void* deletefunc; +} ex_deletepointer; + +#define ex_deletepointer_MakeField(regpointer) (((regpointer) << 7)) +#define ex_deletepointer_GetRegPointer(field) ((field) >> 7) + +#define EXACTION_DELETEPOINTERCOND 11 + +typedef struct ex_deletepointercond { + exaction_type action; + u8 dpc_field; + s16 cond; + s16 objectptr; + void* deletefunc; +} ex_deletepointercond; + +#define ex_deletepointercond_MakeField(regcond, regpointer) (((regcond) << 7) | (((regpointer)&0x1) << 6)) +#define ex_deletepointercond_GetRegCond(field) ((field) >> 7) +#define ex_deletepointercond_GetRegPointer(field) (((field) >> 6) & 0x1) + +#define EXACTION_CATCHBLOCK 12 + +typedef struct ex_catchblock { + exaction_type action; + u8 unused; + char* catch_type; + u16 catch_pcoffset; + s16 cinfo_ref; +} ex_catchblock; + +#define EXACTION_ACTIVECATCHBLOCK 13 + +typedef struct ex_activecatchblock { + exaction_type action; + u8 unused; + s16 cinfo_ref; +} ex_activecatchblock; + +#define EXACTION_TERMINATE 14 + +typedef struct ex_terminate { + exaction_type action; + u8 unused; +} ex_terminate; + +#define EXACTION_SPECIFICATION 15 + +typedef struct ex_specification { + exaction_type action; + u8 unused; + u16 specs; + s32 pcoffset; + s32 cinfo_ref; + char* spec[]; +} ex_specification; + +#define EXACTION_CATCHBLOCK_32 16 + +typedef struct ex_catchblock_32 { + exaction_type action; + u8 unused; + char* catch_type; + s32 catch_pcoffset; + s32 cinfo_ref; +} ex_catchblock_32; + +// Other structs + +typedef struct ExceptionRangeSmall { + u16 start; + u16 end; + u16 action; +} ExceptionRangeSmall; + +typedef struct ExceptionTableSmall { + u16 et_field; + ExceptionRangeSmall ranges[0]; +} ExceptionTableSmall; + +typedef struct ExceptionRangeLarge { + u32 start; + u16 size; + u16 action; +} ExceptionRangeLarge; + +typedef struct ExceptionTableLarge { + u16 et_field; + u16 et_field2; + ExceptionRangeLarge ranges[]; +} ExceptionTableLarge; + +#define ET_MakeField(savedGPRs, savedFPRs, savedCR, hasframeptr, isLarge) \ + (((savedGPRs) << 11) | ((savedFPRs & 0x1f) << 6) | ((savedCR & 0x1) << 5) | ((hasframeptr & 0x1) << 4) | ((isLarge & 1) << 3)) + +#define ET_GetSavedGPRs(field) ((field) >> 11) +#define ET_GetSavedFPRs(field) (((field) >> 6) & 0x1f) +#define ET_GetSavedCR(field) (((field) >> 5) & 0x1) +#define ET_GetHasFramePtr(field) (((field) >> 4) & 0x1) +#define ET_IsLargeTable(field) (((field) >> 3) & 0x1) +#define ET_ClearLargeBit(field) ((field) & ~(1 << 3)) +#define ET_SetLargeBit(field) ((field) | (1 << 3)) + +#define ET_HasElfVector(field) (((field) >> 1) & 0x1) + +typedef struct ExceptionTableIndex { + u32 functionoffset; + u32 eti_field; + u32 exceptionoffset; +} ExceptionTableIndex; + +#define ETI_MakeField(direct, fsize) ((((s32)(direct)) << 31) | ((fsize)&0x7fffffff)) +#define ETI_GetDirectStore(field) ((field) >> 31) +#define ETI_GetFunctionSize(field) ((field)&0x7fffffff) + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h b/include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h new file mode 100644 index 00000000..8d78b551 --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h @@ -0,0 +1,44 @@ +#ifndef _RUNTIME_MWCPLUSLIB_H +#define _RUNTIME_MWCPLUSLIB_H + +#include "stddef.h" + +#define CTORARG_TYPE int +#define CTORARG_PARTIAL (0) +#define CTORARG_COMPLETE (1) + +#define CTORCALL_COMPLETE(ctor, objptr) \ + (((void (*)(void*, CTORARG_TYPE))ctor)(objptr, CTORARG_COMPLETE)) + +#define DTORARG_TYPE int + +#define DTORCALL_COMPLETE(dtor, objptr) \ + (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, -1)) +#define DTORCALL_PARTIAL(dtor, objptr) \ + (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, 0)) + +typedef void* ConstructorDestructor; + +#ifdef __cplusplus +extern "C" { +#endif + +extern void* __copy(char* to, char* from, size_t size); + +extern void __construct_array(void* ptr, ConstructorDestructor ctor, + ConstructorDestructor dtor, size_t size, + size_t n); +extern void __destroy_arr(void* block, ConstructorDestructor* dtor, size_t size, + size_t n); +extern void* __construct_new_array(void* block, ConstructorDestructor ctor, + ConstructorDestructor dtor_arg, size_t size, + size_t n); +extern void __destroy_new_array(void* block, ConstructorDestructor dtor); +extern void __destroy_new_array2(); +extern void __destroy_new_array3(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/NMWException.h b/include/PowerPC_EABI_Support/Runtime/NMWException.h new file mode 100644 index 00000000..aba83f4d --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/NMWException.h @@ -0,0 +1,45 @@ +#ifndef _NMWEXCEPTION +#define _NMWEXCEPTION + +#include "types.h" +#include "PowerPC_EABI_Support/Runtime/exception.h" +#include "PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef s16 vbase_ctor_arg_type; +typedef char local_cond_type; + +typedef struct CatchInfo { + void* location; + void* typeinfo; + void* dtor; + void* sublocation; + s32 pointercopy; + void* stacktop; +} CatchInfo; + +typedef struct DestructorChain { + struct DestructorChain* next; + void* destructor; + void* object; +} DestructorChain; + +extern void* __register_global_object(void* object, void* destructor, void* registration); +extern void __destroy_global_chain(void); + +extern void __end__catch(CatchInfo* catchinfo); +extern void __throw(char* throwtype, void* location, void* dtor); +extern char __throw_catch_compare(const char* throwtype, const char* catchtype, s32* offset_result); +extern void __unexpected(CatchInfo* catchinfo); + +extern int __register_fragment(struct __eti_init_info* info, char* TOC); +extern void __unregister_fragment(int fragmentID); + +#ifdef __cplusplus +} +#endif + +#endif // _NMWEXCEPTION diff --git a/include/PowerPC_EABI_Support/Runtime/New.h b/include/PowerPC_EABI_Support/Runtime/New.h new file mode 100644 index 00000000..1ae725b4 --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/New.h @@ -0,0 +1 @@ +void operator delete(void* arg0); diff --git a/include/PowerPC_EABI_Support/Runtime/__mem.h b/include/PowerPC_EABI_Support/Runtime/__mem.h new file mode 100644 index 00000000..0a885b8f --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/__mem.h @@ -0,0 +1,17 @@ +#ifndef _RUNTIME_MEM_H +#define _RUNTIME_MEM_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +__declspec(section ".init") void* memcpy(void* dest, const void* src, size_t n); +__declspec(section ".init") void* memset(void* dest, int val, size_t count); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h b/include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h new file mode 100644 index 00000000..a2fa3d63 --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h @@ -0,0 +1,72 @@ +#ifndef __PPC_EABI_LINKER +#define __PPC_EABI_LINKER + +__declspec(section ".init") extern char _stack_addr[]; +__declspec(section ".init") extern char _stack_end[]; +__declspec(section ".init") extern char _heap_addr[]; +__declspec(section ".init") extern char _heap_end[]; +__declspec(section ".init") extern const char _fextabindex_rom[]; +__declspec(section ".init") extern char _fextabindex[]; +__declspec(section ".init") extern char _eextabindex[]; + +__declspec(section ".init") extern char _SDA_BASE_[]; + +__declspec(section ".init") extern char _SDA2_BASE_[]; + +typedef struct __rom_copy_info { + char* rom; + char* addr; + unsigned int size; +} __rom_copy_info; + +__declspec(section ".init") extern __rom_copy_info _rom_copy_info[]; + +typedef struct __bss_init_info { + char* addr; + unsigned int size; +} __bss_init_info; + +__declspec(section ".init") extern __bss_init_info _bss_init_info[]; + +typedef struct __eti_init_info { + void* eti_start; + void* eti_end; + void* code_start; + unsigned long code_size; +} __eti_init_info; + +__declspec(section ".init") extern __eti_init_info _eti_init_info[]; +__declspec(section ".init") extern const char _f_init_rom[]; +__declspec(section ".init") extern char _f_init[]; +__declspec(section ".init") extern char _e_init[]; +__declspec(section ".init") extern const char _f_text_rom[]; +__declspec(section ".init") extern char _f_text[]; +__declspec(section ".init") extern char _e_text[]; +__declspec(section ".init") extern const char _f_rodata_rom[]; +__declspec(section ".init") extern char _f_rodata[]; +__declspec(section ".init") extern char _e_rodata[]; +__declspec(section ".init") extern const char _fextab_rom[]; +__declspec(section ".init") extern char _fextab[]; +__declspec(section ".init") extern char _eextab[]; +__declspec(section ".init") extern const char _f_data_rom[]; +__declspec(section ".init") extern char _f_data[]; +__declspec(section ".init") extern char _e_data[]; +__declspec(section ".init") extern char _f_bss[]; +__declspec(section ".init") extern char _e_bss[]; +__declspec(section ".init") extern const char _f_sdata_rom[]; +__declspec(section ".init") extern char _f_sdata[]; +__declspec(section ".init") extern char _e_sdata[]; +__declspec(section ".init") extern char _f_sbss[]; +__declspec(section ".init") extern char _e_sbss[]; +__declspec(section ".init") extern const char _f_sdata2_rom[]; +__declspec(section ".init") extern char _f_sdata2[]; +__declspec(section ".init") extern char _e_sdata2[]; +__declspec(section ".init") extern char _f_sbss2[]; +__declspec(section ".init") extern char _e_sbss2[]; +__declspec(section ".init") extern const char _f_PPC_EMB_sdata0_rom[]; +__declspec(section ".init") extern char _f_PPC_EMB_sdata0[]; +__declspec(section ".init") extern char _e_PPC_EMB_sdata0[]; +__declspec(section ".init") extern char _f_PPC_EMB_sbss0[]; +__declspec(section ".init") extern char _e_PPC_EMB_sbss0[]; + +#endif // __PPC_EABI_LINKER diff --git a/include/PowerPC_EABI_Support/Runtime/exception.h b/include/PowerPC_EABI_Support/Runtime/exception.h new file mode 100755 index 00000000..2530b3de --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/exception.h @@ -0,0 +1,38 @@ +#ifndef _EXCEPTION +#define _EXCEPTION + +namespace std { +class exception { +public: + exception() { } + virtual ~exception() { } + virtual const char* what() const { return "exception"; } +}; + +class bad_exception : public exception { +public: + bad_exception() { } + virtual ~bad_exception() { } + virtual const char* what() const { return "bad_exception"; } +}; + +typedef void (*unexpected_handler)(); +unexpected_handler set_unexpected(unexpected_handler handler); +void unexpected(); + +typedef void (*terminate_handler)(); +terminate_handler set_terminate(terminate_handler handler); +void terminate(); + +} // namespace std + +using std::bad_exception; +using std::exception; +using std::set_terminate; +using std::set_unexpected; +using std::terminate; +using std::terminate_handler; +using std::unexpected; +using std::unexpected_handler; + +#endif diff --git a/include/REL/instDll.h b/include/REL/instDll.h new file mode 100644 index 00000000..adf1fe5c --- /dev/null +++ b/include/REL/instDll.h @@ -0,0 +1,8 @@ +#ifndef INSTDLL_H +#define INSTDLL_H + +#include "game/minigame_seq.h" + +s32 FontCreate(SeqWork *work, char *mess, s16 jp_flag); + +#endif diff --git a/include/REL/m407dll.h b/include/REL/m407dll.h new file mode 100644 index 00000000..e007469c --- /dev/null +++ b/include/REL/m407dll.h @@ -0,0 +1,55 @@ +#ifndef M407DLL_H +#define M407DLL_H + +#include "game/object.h" + +typedef void (*VoidFuncs)(void); +typedef void (*ObjFuncs)(omObjData *); + +void fn_1_F4(Process *arg0); +void fn_1_194(void); +void fn_1_1E4(void); +void fn_1_238(void); +void fn_1_28C(void); +void fn_1_2E0(void); +void fn_1_334(void); +void fn_1_388(u8, s32); +void fn_1_3C4(u8); +void fn_1_404(void); +s32 fn_1_508(u8); +s32 fn_1_53C(u8); +void fn_1_568(s16, s16, s16); + +void fn_1_14F0(Process *arg0, s32 arg1); +void fn_1_15D8(void); + +void fn_1_1B1C(Process *arg0); +void fn_1_1CA8(void); +void fn_1_1CAC(float, float, float); +void fn_1_1CD4(float *arg0, float *arg1, float *arg2); +s32 fn_1_1D88(void); +void fn_1_1DB0(Vec *arg0, Vec *arg1, float *arg2, s32 arg3, s32 arg4); + +void fn_1_2354(Process *arg0); +void fn_1_2564(void); +void fn_1_25C0(void); +s32 fn_1_2880(void); +#ifndef __MWERKS__ +s16 fn_1_28B8(u8 arg0); +s16 fn_1_28D4(void); +#endif + +void fn_1_3AC8(Process *arg0); +void fn_1_3B68(void); + +void fn_1_41CC(Process *arg0); +void fn_1_44F4(void); + +void fn_1_4980(Process *arg0); +void fn_1_4C6C(omObjData *obj); + +void fn_1_5C5C(Process *arg0, s16 arg1); +void fn_1_5ECC(void); +void fn_1_5F40(s32 arg0); + +#endif diff --git a/include/REL/m409Dll.h b/include/REL/m409Dll.h index d79dee5c..1f7519b4 100644 --- a/include/REL/m409Dll.h +++ b/include/REL/m409Dll.h @@ -1,16 +1,20 @@ +#ifndef M409DLL_H +#define M409DLL_H + #include "dolphin.h" -#include "game/object.h" #include "game/animdata.h" #include "game/hsfanim.h" +#include "game/object.h" + extern s32 rand8(void); // types -typedef void (*m409Func6)(ModelData*, struct _unkStruct6*, Mtx); -typedef void (*m409PlayerFunc8)(struct _unkStruct8*); +typedef void (*m409Func6)(ModelData *, struct _unkStruct6 *, Mtx); +typedef void (*m409PlayerFunc8)(struct _unkStruct8 *); typedef struct _unkStruct { - f32 zoom; + float zoom; Vec center; Vec rot; } unkStruct; @@ -24,14 +28,14 @@ typedef struct _unkStruct3 { s8 unk0; s8 unk1; s16 unk2; - struct _unkStruct4* unk4; + struct _unkStruct4 *unk4; s16 unk8; s16 unkA; s16 unkC; s16 unkE; s16 unk10; s16 unk12; - f32 unk14; + float unk14; } unkStruct3; typedef struct _unkStruct4 { @@ -46,26 +50,26 @@ typedef struct _unkStruct4 { s16 unkA; s16 unkC; s16 unkE; - f32 unk10; + float unk10; s16 unk14; s16 unk16; - f32 unk18; - f32 unk1C; - struct _unkStruct4* unk20; + float unk18; + float unk1C; + struct _unkStruct4 *unk20; } unkStruct4; // sizeof 0x24 typedef struct _unkStruct5 { Vec unk0; Vec unkC; - f32 unk18; - f32 unk1C; - f32 unk20; - f32 unk24; + float unk18; + float unk1C; + float unk20; + float unk24; s16 unk28; s16 unk2A; s16 unk2C; s16 unk2E; - f32 unk30; + float unk30; Vec unk34; Vec unk40; s16 unk4C; @@ -78,20 +82,20 @@ typedef struct _unkStruct6 { u32 unk4; u8 unk8; m409Func6 unkC; - AnimData* unk10; + AnimData *unk10; s16 unk14; - unkStruct5* unk18; - Vec* unk1C; - HsfVector2f* unk20; - GXColor* unk24; - void* unk28; + unkStruct5 *unk18; + Vec *unk1C; + HsfVector2f *unk20; + GXColor *unk24; + void *unk28; Vec unk2C; Vec unk38; Vec unk44; Vec unk50; - HsfVector2f* unk5C; - f32 unk60; - f32 unk64; + HsfVector2f *unk5C; + float unk60; + float unk64; } unkStruct6; // sizeof 0x68 typedef struct _unkStruct7 { @@ -144,22 +148,22 @@ typedef struct _unkStruct8Sub { u8 unk32; u32 unk34; s16 unk38; - void* unk3C; - void* unk40; - void* unk44; - Vec* unk48; + void *unk3C; + void *unk40; + void *unk44; + Vec *unk48; GXColor unk4C; GXColor unk50; - struct _unkStruct12* unk54; + struct _unkStruct12 *unk54; Vec unk58; Vec unk64; union { s16 unk70[0x10]; struct { s16 unk70s; - f32 unk74; - f32 unk78; - f32 unk7C; + float unk74; + float unk78; + float unk7C; }; }; } unkStruct8Sub; // sizeof 0x90 @@ -174,9 +178,9 @@ typedef struct _unkStruct8 { Vec unk18; Vec unk24; m409PlayerFunc8 unk30; - s16* unk34; + s16 *unk34; char unk38[0x4]; - unkStruct8Sub* unk3C; + unkStruct8Sub *unk3C; char unk40[0x8]; Vec unk48; Vec unk54; @@ -184,7 +188,7 @@ typedef struct _unkStruct8 { } unkStruct8; // sizeof 0xA0 typedef struct _unkStruct9Sub { - AnimData* unk0; + AnimData *unk0; s16 unk4; s16 unk6; u32 unk8; @@ -194,10 +198,10 @@ typedef struct _unkStruct9Sub { u8 unk4C; s16 unk4E; s16 unk50; - f32 unk54; - f32 unk58; - f32 unk5C; - f32 unk60; + float unk54; + float unk58; + float unk5C; + float unk60; } unkStruct9Sub; // sizeof 0x64 typedef struct _unkStruct9 { @@ -207,8 +211,8 @@ typedef struct _unkStruct9 { s16 unk6; s16 unk8; s16 unkA; - unkStruct9Sub* unkC; - unkStruct8* unk10; + unkStruct9Sub *unkC; + unkStruct8 *unk10; } unkStruct9; // sizeof 0x14 typedef struct _unkStruct10 { @@ -218,7 +222,7 @@ typedef struct _unkStruct10 { u8 unk3; u8 unk4; char unk5[0x3]; - f32 unk8; + float unk8; Vec unkC; Vec unk18; Vec unk24; @@ -226,7 +230,7 @@ typedef struct _unkStruct10 { Vec unk3C; s8 unk48; char unk49[0x3]; - f32 unk4C; + float unk4C; } unkStruct10; // sizeof 0x50 typedef struct unkStruct11 { @@ -240,176 +244,128 @@ typedef struct _unkStruct12 { s8 unk0; s8 unk1; s16 unk2; - HsfVector2f* unk4; + HsfVector2f *unk4; u8 unk8; s16 unkA; - f32 unkC; - f32 unk10; + float unkC; + float unk10; } unkStruct12; // bss -// player.c -extern omObjData* lbl_1_bss_3A0[4]; -extern omObjData* lbl_1_bss_39C; -extern s32 lbl_1_bss_38C[4]; -extern unkStruct10 lbl_1_bss_10C[8]; -extern s16 lbl_1_bss_108; -extern s16 lbl_1_bss_106; -extern s16 lbl_1_bss_104; extern unkStruct9 lbl_1_bss_F0; -// main.c -extern Process* lbl_1_bss_E8; -extern s16 lbl_1_bss_E4; -extern omObjData* lbl_1_bss_E0; -extern omObjData* lbl_1_bss_DC; -extern Vec lbl_1_bss_D0; -extern unkStruct4 lbl_1_bss_40[4]; -extern s32 lbl_1_bss_3C; -extern unkStruct3 lbl_1_bss_24; -extern s8 lbl_1_bss_21; -extern u8 lbl_1_bss_20; -extern f32 lbl_1_bss_1C; -extern f32 lbl_1_bss_18; -extern s16 lbl_1_bss_16; -extern s8 lbl_1_bss_14; -extern f32 lbl_1_bss_10; -extern f32 lbl_1_bss_C; -extern s8 lbl_1_bss_A; -extern s16 lbl_1_bss_8; -extern s8 lbl_1_bss_6; -extern s16 lbl_1_bss_4; -extern s16 lbl_1_bss_2; -extern s8 lbl_1_bss_0; - -// data -// main.c -extern Vec lbl_1_data_0; -extern Vec lbl_1_data_C; -extern unkStruct2 lbl_1_data_18; -extern Vec lbl_1_data_28; -extern Vec lbl_1_data_34; -extern Vec lbl_1_data_40; -extern unkStruct lbl_1_data_4C[4]; -extern u32 lbl_1_data_BC; -extern s32 lbl_1_data_C0; -// player.c -extern u32 lbl_1_data_138; // unk -extern s32 lbl_1_data_13C[7]; -extern GXColor lbl_1_data_158[8]; -extern HsfVector2f lbl_1_data_178[4]; -extern GXColor lbl_1_data_198[8]; -extern u32 lbl_1_data_1EC; // prototypes -extern void ModuleProlog(void); -extern void fn_1_434(omObjData* object); -extern void fn_1_4DC(omObjData* object); -extern s8 fn_1_524(void); -extern s8 fn_1_B80(void); -extern void fn_1_DDC(omObjData* object); -extern void fn_1_F70(omObjData* object); -extern s8 fn_1_10E8(omObjData* object); -extern s8 fn_1_1B74(omObjData* object); -extern void fn_1_2098(omObjData* object); -extern void fn_1_23EC(s16); -extern void fn_1_2414(u16, u16); -extern u16 fn_1_2454(u16); -extern void fn_1_2484(omObjData* object); -extern void fn_1_2DCC(omObjData* object); -extern void fn_1_3840(void); -extern void fn_1_3988(unkStruct4*, s16, s16); -extern s32 fn_1_3AD8(s32, f32, f32, f32, f32, f32, f32); -extern void fn_1_40A4(Mtx, Mtx); -extern f32 fn_1_4120(f32, f32, f32, f32); -extern void fn_1_417C(void); -extern void fn_1_44F0(s16, f32, f32, f32, s8, s16); -extern void fn_1_4FFC(s16, f32, f32, f32, s16); -extern void fn_1_5408(ModelData*, unkStruct6*, Mtx); -extern void fn_1_55E0(ModelData*, unkStruct6*, Mtx); -extern void fn_1_57DC(ModelData*, unkStruct6*, Mtx); -extern unkStruct5* fn_1_58E0(s16, Vec*, Vec*, f32, GXColor*); -extern s16 fn_1_5A18(AnimData*, s16, f32, s16, s16); -extern void fn_1_5F5C(s16); -extern void fn_1_5FBC(s16, m409Func6); -extern void fn_1_5FF4(s16, u8); -extern void fn_1_602C(ModelData*, Mtx); -extern void fn_1_6608(HsfVector2f*, s16, s16, f32, f32); -extern void fn_1_66D4(HsfVector2f*, HsfVector2f*, s16, f32, f32); -extern void fn_1_6778(Vec*, Vec*, Vec*, s16); +void ObjectSetup(void); +void fn_1_434(omObjData *object); +void fn_1_4DC(omObjData *object); +s8 fn_1_524(void); +s8 fn_1_B80(void); +void fn_1_DDC(omObjData *object); +void fn_1_F70(omObjData *object); +s8 fn_1_10E8(omObjData *object); +s8 fn_1_1B74(omObjData *object); +void fn_1_2098(omObjData *object); +void fn_1_23EC(s16); +void fn_1_2414(u16, u16); +u16 fn_1_2454(u16); +void fn_1_2484(omObjData *object); +void fn_1_2DCC(omObjData *object); +void fn_1_3840(void); +void fn_1_3988(unkStruct4 *, s16, s16); +s32 fn_1_3AD8(s32, float, float, float, float, float, float); +void fn_1_40A4(Mtx, Mtx); +float fn_1_4120(float, float, float, float); +void fn_1_417C(void); +void fn_1_44F0(s16, float, float, float, s8, s16); +void fn_1_4FFC(s16, float, float, float, s16); +void fn_1_5408(ModelData *, unkStruct6 *, Mtx); +void fn_1_55E0(ModelData *, unkStruct6 *, Mtx); +void fn_1_57DC(ModelData *, unkStruct6 *, Mtx); +unkStruct5 *fn_1_58E0(s16, Vec *, Vec *, float, GXColor *); +s16 fn_1_5A18(AnimData *, s16, float, s16, s16); +void fn_1_5F5C(s16); +void fn_1_5FBC(s16, m409Func6); +void fn_1_5FF4(s16, u8); +void fn_1_602C(ModelData *, Mtx); +void fn_1_6608(HsfVector2f *, s16, s16, float, float); +void fn_1_66D4(HsfVector2f *, HsfVector2f *, s16, float, float); +void fn_1_6778(Vec *, Vec *, Vec *, s16); // player.c -extern void fn_1_67E0(Process*); -extern void fn_1_6900(void); -extern void fn_1_6928(omObjData*); -extern void fn_1_7344(omObjData*); -extern void fn_1_7FE8(omObjData*); -extern void fn_1_8838(unkStruct8*); -extern s8 fn_1_8D08(u8); -extern void fn_1_8D6C(unkStruct8*); -extern void fn_1_91C0(omObjData*); -extern void fn_1_962C(omObjData*); -extern s32 fn_1_A584(unkStruct10*); -extern s8 fn_1_A9C0(Vec*, f32*); -extern s32 fn_1_ABB4(void); -extern void fn_1_AC08(s32*, s32); -extern f32 fn_1_AD40(f32, f32, f32); -extern f32 fn_1_AE94(f32, f32, f32, f32); -extern void fn_1_AF0C(f32*, f32*, f32*, f32*, f32); -extern f32 fn_1_B028(f32, f32, f32, f32); -extern void fn_1_B0A0(f32*, f32*, f32*, f32*, f32); -extern f32 fn_1_B378(Vec*); -extern f32 fn_1_B6A4(Vec*, Vec*, Vec*); -extern f32 fn_1_B9E0(Vec*, Vec*, Vec*, Vec*, Vec*); -extern f32 fn_1_BF38(s16); +void fn_1_67E0(Process *); +void fn_1_6900(void); +void fn_1_6928(omObjData *); +void fn_1_7344(omObjData *); +void fn_1_7FE8(omObjData *); +void fn_1_8838(unkStruct8 *); +s8 fn_1_8D08(u8); +void fn_1_8D6C(unkStruct8 *); +void fn_1_91C0(omObjData *); +void fn_1_962C(omObjData *); +s32 fn_1_A584(unkStruct10 *); +s8 fn_1_A9C0(Vec *, float *); +s32 fn_1_ABB4(void); +void fn_1_AC08(s32 *, s32); +float fn_1_AD40(float, float, float); +float fn_1_AE94(float, float, float, float); +void fn_1_AF0C(float *, float *, float *, float *, float); +float fn_1_B028(float, float, float, float); +void fn_1_B0A0(float *, float *, float *, float *, float); +float fn_1_B378(Vec *); +float fn_1_B6A4(Vec *, Vec *, Vec *); +float fn_1_B9E0(Vec *, Vec *, Vec *, Vec *, Vec *); +float fn_1_BF38(s16); // cursor.c -extern void fn_1_BF88(s16, s16); -extern void fn_1_C0C0(void); -extern void fn_1_C164(unkStruct8*); -extern void fn_1_CB98(ModelData* model, Mtx matrix); -extern unkStruct8* fn_1_CCB0(s16 idx); -extern unkStruct8Sub* fn_1_CCCC(s16, s16); -extern void fn_1_CCF8(unkStruct11**, s16, f32, f32); -extern void fn_1_CE7C(Vec**, s16, Vec*); -extern void fn_1_CF1C(GXColor**, s16, GXColor*); -extern void fn_1_CFC4(Vec**, s16, Vec*); -extern void fn_1_D050(HsfVector2f**, s16, HsfVector2f*); -extern void fn_1_D0E8(unkStruct8Sub*); -extern void fn_1_D430(unkStruct8*); -extern s16 fn_1_DA48(u8, u8); -extern void fn_1_DDB8(s16); -extern void fn_1_DEF4(s16, s16, u8); -extern s16 fn_1_DF20(u32, s16, s16); -extern void fn_1_E228(s16); -extern s32 fn_1_E2A8(s16, u8, u32, s16, s16); -extern s32 fn_1_E7C8(s16, u8, u32); -extern void fn_1_E818(s16, f32, f32, f32); -extern void fn_1_E85C(s16, s16, f32, f32, f32); -extern void fn_1_E8CC(s16, f32, f32, f32); -extern void fn_1_E940(s16, f32, f32, f32); -extern void fn_1_E99C(s16, s16, f32, f32, f32); -extern void fn_1_E940(s16, f32, f32, f32); -extern void fn_1_EA24(s16, f32, f32, f32); -extern void fn_1_EAB0(s16, f32, f32, f32); -extern void fn_1_EAF4(s16, s16, f32, f32, f32); -extern void fn_1_EB64(s16, f32, f32, f32); -extern void fn_1_EBD8(s16, f32, f32, f32); -extern void fn_1_EC1C(s16, s16, f32, f32, f32); -extern void fn_1_EC8C(s16, f32, f32, f32); -extern void fn_1_ED00(s16, s32); -extern void fn_1_ED44(s16, s16, s32); -extern void fn_1_EDB4(s16, s32); -extern void fn_1_EE24(s16, u32); -extern void fn_1_EE68(s16, s16, u32); -extern void fn_1_EED8(s16, u32); -extern s32 fn_1_EF48(s16, s32); -extern s32 fn_1_EFA4(s16, s16, s32); -extern void fn_1_F024(s16, s16, u8, u8, u8, u8); -extern void fn_1_F098(s16, u8, u8, u8, u8); -extern void fn_1_F110(s16, s16, u8); -extern void fn_1_F17C(s16, s16, u8, u8); -extern void fn_1_F1F4(s16, u8); -extern void fn_1_F28C(s16, s16, f32); -extern void fn_1_F2F8(s16, s16, u8, f32); -extern void fn_1_F370(s16, f32); -extern void fn_1_F408(s16, s16, u8); -extern void fn_1_F478(s16, s16, u8, u8); -extern void fn_1_F4F0(s16, u8); \ No newline at end of file +void fn_1_BF88(s16, s16); +void fn_1_C0C0(void); +void fn_1_C164(unkStruct8 *); +void fn_1_CB98(ModelData *model, Mtx matrix); +unkStruct8 *fn_1_CCB0(s16 idx); +unkStruct8Sub *fn_1_CCCC(s16, s16); +void fn_1_CCF8(unkStruct11 **, s16, float, float); +void fn_1_CE7C(Vec **, s16, Vec *); +void fn_1_CF1C(GXColor **, s16, GXColor *); +void fn_1_CFC4(Vec **, s16, Vec *); +void fn_1_D050(HsfVector2f **, s16, HsfVector2f *); +void fn_1_D0E8(unkStruct8Sub *); +void fn_1_D430(unkStruct8 *); +s16 fn_1_DA48(u8, u8); +void fn_1_DDB8(s16); +void fn_1_DEF4(s16, s16, u8); +s16 fn_1_DF20(u32, s16, s16); +void fn_1_E228(s16); +s32 fn_1_E2A8(s16, u8, u32, s16, s16); +s32 fn_1_E7C8(s16, u8, u32); +void fn_1_E818(s16, float, float, float); +void fn_1_E85C(s16, s16, float, float, float); +void fn_1_E8CC(s16, float, float, float); +void fn_1_E940(s16, float, float, float); +void fn_1_E99C(s16, s16, float, float, float); +void fn_1_E940(s16, float, float, float); +void fn_1_EA24(s16, float, float, float); +void fn_1_EAB0(s16, float, float, float); +void fn_1_EAF4(s16, s16, float, float, float); +void fn_1_EB64(s16, float, float, float); +void fn_1_EBD8(s16, float, float, float); +void fn_1_EC1C(s16, s16, float, float, float); +void fn_1_EC8C(s16, float, float, float); +void fn_1_ED00(s16, s32); +void fn_1_ED44(s16, s16, s32); +void fn_1_EDB4(s16, s32); +void fn_1_EE24(s16, u32); +void fn_1_EE68(s16, s16, u32); +void fn_1_EED8(s16, u32); +s32 fn_1_EF48(s16, s32); +s32 fn_1_EFA4(s16, s16, s32); +void fn_1_F024(s16, s16, u8, u8, u8, u8); +void fn_1_F098(s16, u8, u8, u8, u8); +void fn_1_F110(s16, s16, u8); +void fn_1_F17C(s16, s16, u8, u8); +void fn_1_F1F4(s16, u8); +void fn_1_F28C(s16, s16, float); +void fn_1_F2F8(s16, s16, u8, float); +void fn_1_F370(s16, float); +void fn_1_F408(s16, s16, u8); +void fn_1_F478(s16, s16, u8, u8); +void fn_1_F4F0(s16, u8); + +#endif diff --git a/include/REL/m412Dll.h b/include/REL/m412Dll.h new file mode 100644 index 00000000..c91edb68 --- /dev/null +++ b/include/REL/m412Dll.h @@ -0,0 +1,121 @@ +#ifndef M412DLL_H +#define M412DLL_H + +#include "dolphin.h" + +#include "game/hsfman.h" +#include "game/object.h" + + +// types +typedef struct _unkStruct { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + Vec unk10; + HsfVector2f unk1C; + Vec unk24; + float unk30; +} unkStruct; + +typedef struct _unkStruct2 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC[5]; + s16 unk16[5]; + s16 unk20; + s32 unk24; + s32 unk28; + Vec unk2C; + Vec unk38; +} unkStruct2; // sizeof 0x44 + +typedef struct _unkStruct3 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC[6]; + s16 unk18[6]; + s32 unk24; + s32 unk28; + s32 unk2C; + s32 unk30; + char unk34[0x4]; + s32 unk38; + s32 unk3C; + Vec unk40; + HsfVector2f unk4C; + Vec unk54; + Vec unk60; + float unk6C; + char unk70[0xC]; + Vec unk7C; + s8 unk88; + s8 unk89; + s8 unk8A; + s8 unk8B; + u16 unk8C; + u16 unk8E; + HsfVector2f unk90; + float unk98; + s32 unk9C; + s32 unkA0; + s32 unkA4; +} unkStruct3; // sizeof 0xA8 + +typedef struct _unkStruct4 { + s32 unk0; + s32 unk4; + s32 unk8; + Vec unkC; +} unkStruct4; + +// prototypes +void ObjectSetup(void); +void *fn_1_6EC(float, float, float, s32); +void fn_1_73C(void); +void fn_1_7BC(void); +void fn_1_894(omObjData *object); +void fn_1_898(omObjData *object); +void fn_1_8BC(void); +float fn_1_1D08(float); +void fn_1_1D88(void); +void fn_1_1DBC(void); +void fn_1_2014(void); +void fn_1_2064(void); +s32 fn_1_2708(void); +float fn_1_27C4(s32, float, float); +void fn_1_2A1C(void); +void fn_1_3950(void); +s8 fn_1_4BE4(s32, s32); +void fn_1_4C9C(Vec *, float, float); +s8 fn_1_4E58(s32, s32); +u8 fn_1_525C(s32, s32); +u16 fn_1_531C(s32); +u16 fn_1_5388(s32); +s32 fn_1_53F4(unkStruct3 *, float, float, float); +s32 fn_1_561C(unkStruct3 *, s32 *); +void fn_1_5838(unkStruct3 *); +float fn_1_6594(float, float, float); +float fn_1_6698(float, float, unkStruct3 *); +void fn_1_6814(unkStruct3 *); +void fn_1_7C60(void); +void fn_1_A01C(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_A618(ModelData *model, ParticleData *particle, Mtx matrix); +//... +void fn_1_AA88(ModelData *model, ParticleData *particle, Mtx matrix); // * +void fn_1_B160(void); // * +void fn_1_B1C0(void); // * + +#endif diff --git a/include/REL/m415Dll.h b/include/REL/m415Dll.h new file mode 100644 index 00000000..0be73a76 --- /dev/null +++ b/include/REL/m415Dll.h @@ -0,0 +1,278 @@ +#include "dolphin.h" + +#include "game/hsfman.h" +#include "game/object.h" + +extern u8 texMtxTbl[]; + +#define FABS(x) ((x < 0.0f) ? -(x) : (x)) + +// types +typedef struct _unkType2 { + char unk[0x10]; +} unkType2; + +typedef struct _unkType { + unkType2 unk[0x10]; +} unkType; + +typedef struct _unkType3 { + Vec unk[4]; +} unkType3; + +typedef struct _unkStruct { + s16 unk0[3]; + s16 unk6; + s16 unk8; +} unkStruct; // sizeof 0xC + +typedef struct _unkStruct2 { + char unk[0xE]; + s8 unkE; +} unkStruct2; + +typedef struct _unkStruct3 { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + char unk8[0x2]; + u8 unkA; + u8 unkB; + u8 unkC; + u8 unkD; + u8 unkE; + u8 unkF; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + s16 unk18; + s16 unk1A; + float unk1C; + float unk20; + float unk24; + float unk28; + Vec unk2C; + Vec unk38; + Vec unk44; + Vec unk50; + u8 unk5C; + u8 unk5D; + union { + s32 *unk60; + struct { + s16 unk60s; + s16 unk62s; + }; + }; + s16 unk64; + s16 unk66; + s16 unk68; + Vec unk6C; +} unkStruct3; + +typedef struct _unkStruct4 { + u8 unk0; + Vec unk4; + Vec unk10; + Vec unk1C; + Vec unk28; + Vec unk34; + Vec unk40; + Vec unk4C; + Vec unk58; + Vec unk64[3]; + Vec unk88[3]; + Vec unkAC[3]; + Vec unkD0[3]; + float unkF4[3]; + float unk100[3]; + float unk10C[3]; + float unk118[3]; + float unk124[3]; + float unk130; + float unk134; + float unk138; + float unk13C; + float unk140; + float unk144; + float unk148; +} unkStruct4; + +typedef struct _unkSubStruct4 { + s8 unk0; + s8 unk1; + char unk2[0x2]; + HsfVector2f unk4[4]; + u8 unk24; + char unk25[0x3]; + float unk28; + float unk2C; +} unkSubStruct4; + +// taken from m438 +typedef struct _unkSubStruct { + Vec unk0; + Vec unkC; + Vec unk18; + char unk24[0xC]; + u8 unk30; + u8 unk31; + u8 unk32; + u8 unk33; + u32 unk34; + s16 unk38; + void *unk3C; + Vec *unk40; + GXColor *unk44; + Vec *unk48; + GXColor unk4C; + GXColor unk50; + unkSubStruct4 *unk54; + u8 unk58; + char unk59[0x3]; + Vec unk5C; + Vec unk68; + s16 unk74[2]; + s16 *unk78; + s16 *unk7C; + char unk80[0x14]; +} unkSubStruct; /* size = 0x94 */ + +typedef void (*unkSubStruct2Func)(struct _unkSubStruct2 *); + +typedef struct _unkSubStruct2 { + s16 unk0; + s16 unk2; + u8 unk4; + u32 unk8; + Vec unkC; + Vec unk18; + Vec unk24; + void (*unk30)(struct _unkSubStruct2 *); + s16 *unk34; + s16 unk38; + char unk3A[2]; + unkSubStruct *unk3C; + char unk40[0x8]; + s16 unk48; + char *unk4C; + Vec *unk50; + GXColor *unk54; + Vec *unk58; + unkSubStruct4 *unk5C; + u8 unk60; + char unk61[0x3]; + Vec unk64; + Vec unk70; + union { + s16 unk7C[0x20]; + struct { + s16 unk7Cs; + s16 unk7Es; + float unk80; + float unk84; + float unk88; + float unk8C; + float unk90; + char unk94[0x28]; + }; + }; +} unkSubStruct2; /* size = 0xBC */ + +typedef struct _unkSubStruct3 { + AnimData *unk0; + s16 unk4; + s16 unk6; + u32 unk8; + Vec unkC; + Mtx unk18; + GXColor unk48; + u8 unk4C; + u8 unk4D; + s16 unk4E; + s16 unk50; + char unk52[0x2]; + float unk54; + float unk58; + float unk5C; + float unk60; +} unkSubStruct3; /* size = 0x64 */ + +typedef struct _unkStruct5 { + Mtx unk0; + s16 unk30; + s16 unk32; + s16 unk34; + s16 unk36; + s16 unk38; + s16 unk3A; + unkSubStruct3 *unk3C; + unkSubStruct2 *unk40; +} unkStruct5; /* size = */ + +typedef struct _unkStruct6 { + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; +} unkStruct6; + +// bss +extern unkStruct5 lbl_1_bss_36C; + +// prototypes +// main.c +void fn_1_43C(omObjData *object); +void fn_1_4B0(omObjData *object); +void fn_1_7D8(omObjData *object); +void fn_1_14C0(omObjData *object); +void fn_1_15D0(omObjData *object); +void fn_1_1960(omObjData *object); +void fn_1_2B18(omObjData *object); +void fn_1_2C14(omObjData *object); +void fn_1_2E88(float, Vec *, Vec *, float); +void fn_1_3208(omObjData *object); +void fn_1_3640(omObjData *object); +void fn_1_3764(omObjData *object); +void fn_1_3B44(omObjData *object); +void fn_1_4660(omObjData *object); +void fn_1_5B20(unkSubStruct2 *); +void fn_1_6304(omObjData *object); +void fn_1_6368(void); +void *fn_1_63A8(s32); +void fn_1_64DC(void); +AnimBmpData *fn_1_668C(s16); +s16 fn_1_66AC(void); +s32 fn_1_679C(void); +float fn_1_67F0(float, float, float); +void fn_1_6A78(Mtx, Vec *); +void fn_1_7268(float *, float *, float *, s32); +float fn_1_7520(float, float *, float *, float *, s32); +void fn_1_7674(float *, Vec *, Vec *, s32); +void fn_1_7A54(float, Vec *, float *, Vec *, Vec *, s32); +// map.c +void fn_1_95C0(ModelData *, Mtx); +AnimData **fn_1_9734(s16); +void fn_1_9DC8(unkSubStruct2 *); +s16 fn_1_A2D0(u8, u8); +void fn_1_A800(s16); +s16 fn_1_A94C(u32, s16, s16); +void fn_1_ACF4(s16, s16, s16, s16, s16, s16); +void fn_1_AF48(s16); +u8 fn_1_AFC8(s16, u8, s32, s16, s16); +s32 fn_1_B0B8(s16, u8, s16); +void fn_1_B864(s16, float, float, float); +void fn_1_BB4C(s16, float, float, float); +void fn_1_BC9C(s16, float, float, float); +void fn_1_BD08(s16, s16, float, float, float); +void fn_1_C264(s16, u8); +void fn_1_C2D0(s16, s16, u8); +void fn_1_C410(s16, s16, u8, u8); +void fn_1_C58C(s16, s16, u8, float); +void fn_1_C81C(s16, u8); diff --git a/include/REL/m418Dll.h b/include/REL/m418Dll.h new file mode 100644 index 00000000..3ef089ba --- /dev/null +++ b/include/REL/m418Dll.h @@ -0,0 +1,58 @@ +#ifndef M418DLL_H +#define M418DLL_H + +#include "dolphin.h" + +#include "ext_math.h" +#include "game/hsfmotion.h" +#include "game/object.h" + +typedef void (*M418DllFunc)(void); +typedef s32 (*M418DllRetFunc)(void); +typedef void (*M418DllInFunc)(s32); +typedef s32 (*M418DllInRetFunc)(s32); + +typedef struct M418DllUnkStruct { + M418DllFunc unk0; + Vec center; + Vec unk10; // sequence center + Vec rot; + Vec unk28; // sequence rot + float zoom; + float unk38; // sequence zoom + float unk3C[3]; + float unk48; +} M418DllUnkStruct; // sizeof 0x4C + +typedef struct M418DllUnkStruct8 { + M418DllInFunc unk0; + M418DllInRetFunc unk4; + s32 unk8; +} M418DllUnkStruct8; // sizeof 0x24 + +typedef struct M418DllUnkStruct7 { + s32 unk0; + M418DllUnkStruct8 *unk4; + s32 unk8; + s32 unkC; + M418DllFunc unk10; + M418DllRetFunc unk14; +} M418DllUnkStruct7; // sizeof 0x18 + +float fn_1_A920(float, float, float); +float fn_1_A940(float, float, float, float); +float fn_1_AA30(float, float, float, float); +void fn_1_ABC4(omObjData *, s32, s32, s32, s32); +void fn_1_AD14(omObjData *, s32, s32, s32, s32); +void fn_1_AEDC(M418DllUnkStruct7 *, M418DllUnkStruct8 *); +s32 fn_1_AF38(M418DllUnkStruct7 *); +s32 fn_1_B034(M418DllUnkStruct7 *, s32); +s32 fn_1_B0C8(M418DllUnkStruct7 *, s32); +void fn_1_B104(M418DllUnkStruct *, Vec, Vec); +void fn_1_B41C(M418DllUnkStruct *); +void fn_1_B458(M418DllUnkStruct *); +void fn_1_BEAC(M418DllUnkStruct *, M418DllUnkStruct *, float, float, float); +void fn_1_CBF8(M418DllUnkStruct *, M418DllUnkStruct *, float, float, float); +void fn_1_DC10(M418DllUnkStruct *, M418DllUnkStruct *, float, float, float); + +#endif diff --git a/include/REL/m420dll.h b/include/REL/m420dll.h new file mode 100644 index 00000000..9d3dce97 --- /dev/null +++ b/include/REL/m420dll.h @@ -0,0 +1,68 @@ +#ifndef M420DLL_H +#define M420DLL_H + +#include "game/object.h" + +typedef struct M420DllUnkStruct { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ float unk_18; +} M420DllUnkStruct; /* size = 0x1C */ // same as in m447dll/camera.c + +typedef struct M420DllPlayerStruct { + /* 0x00 */ struct { + s8 unk_00_field0 : 1; + s8 unk_00_field1 : 1; + s8 unk_00_field2 : 1; + }; + /* 0x04 */ s32 unk_04; + /* 0x08 */ u8 unk_08; + /* 0x0A */ s16 unk_0A; + /* 0x0C */ u8 unk_0C; + /* 0x10 */ Vec unk_10; + /* 0x1C */ Vec unk_1C; + /* 0x28 */ Vec unk_28; + /* 0x34 */ Vec unk_34; + /* 0x40 */ Process *unk_40; + /* 0x44 */ char unk44[4]; + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s16 unk_50; + /* 0x52 */ char unk52[6]; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C[0xA]; + /* 0x84 */ s32 unk_84[0xA]; + /* 0xAC */ s16 unk_AC; + /* 0xAE */ s16 unk_AE[0xB]; + /* 0xC4 */ s16 unk_C4[0xA]; + /* 0xD8 */ s16 unk_D8; + /* 0xDC */ float unk_DC; + /* 0xE0 */ float unk_E0; + /* 0xE4 */ s32 unk_E4; + /* 0xE8 */ struct M420DllPlayerStruct *unk_E8; +} M420DllPlayerStruct; /* size = 0xEC */ + +void fn_1_1184(void); + +s32 fn_1_4964(void); +void fn_1_596C(void); +s32 fn_1_59F4(s32); +s32 fn_1_5AA8(s32 arg0, float arg1); +s32 fn_1_60F0(void); +void fn_1_6268(void); +void fn_1_636C(void); +void fn_1_63EC(void); +void fn_1_6554(void); +s16 fn_1_6660(void); +void fn_1_669C(s32 arg0); +void fn_1_6728(void); +s32 fn_1_67E8(s32); +s32 fn_1_6810(void); +void fn_1_8934(void); +s32 fn_1_8944(void); +M420DllPlayerStruct *fn_1_1B8C(s32, s32); +void fn_1_1E14(M420DllPlayerStruct *); + +extern Process *lbl_1_bss_4; + +#endif diff --git a/include/REL/m421Dll.h b/include/REL/m421Dll.h new file mode 100644 index 00000000..9f2ff4a9 --- /dev/null +++ b/include/REL/m421Dll.h @@ -0,0 +1,62 @@ +#ifndef M421DLL_H +#define M421DLL_H + +#include "game/object.h" + +typedef struct UnkM421DllStruct { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; +} UnkM421DllStruct; + +typedef struct M421DllCameraStruct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + float unk_10; + float unk_14; + float unk_18; + Vec unk_1C; + Vec unk_28; + float unk_34; + s32 unk_38; + s32 unk_3C; + float unk_40; + UnkM421DllStruct unk_44; + float unk_54; + float unk_58; + float unk_5C; + float unk_60; + float unk_64; + float unk_68; + char unk6C[0x18]; + float unk_84; + char unk88[0x4]; + float unk_8C; + float unk_90; + u32 unk_94; + char unk98[0xC]; +} M421DllCameraStruct; /* size = 0xA4 */ // same as M443DllCameraStruct and M460 + +M421DllCameraStruct *fn_1_3C14(s32 arg0); +u32 fn_1_3E34(void); +u32 fn_1_3E4C(void); +u32 fn_1_3E64(void); +s32 fn_1_3E7C(s32 arg0); +s32 fn_1_3EF8(s32 arg0); +void fn_1_3F28(s32 arg0, s32 arg1, s32 arg2); +void fn_1_3F68(s32 arg0); +void fn_1_3F98(s32 arg0); +void fn_1_3FC8(s32 arg0); +s32 fn_1_3FF8(void); +float fn_1_4478(float arg8, float arg9, float argA); + +void fn_1_4648(Process *process); +void fn_1_48B0(void); +void fn_1_B15C(Process *process); +void fn_1_B1BC(void); +void fn_1_B39C(void); + +#endif diff --git a/include/REL/m424Dll.h b/include/REL/m424Dll.h new file mode 100644 index 00000000..ac79d774 --- /dev/null +++ b/include/REL/m424Dll.h @@ -0,0 +1,50 @@ +#include "dolphin.h" + +#include "game/object.h" + +typedef struct _M424DllMainStruct { + Vec rot; + Vec center; + float zoom; +} M424DllMainStruct; // sizeof 1C + +typedef struct _M424DllBallStruct2 { + omObjData *unk0; + u8 unk4; + u8 unk5; + u8 unk6; + u16 unk8; + u16 unkA; + Mtx unkC; + Vec unk3C; + Vec unk48; + Vec unk54; + Vec unk60; + Vec unk6C; + Vec unk78; + Vec unk84; + u8 unk90; + u8 unk91; +} M424DllBallStruct2; // sizeof 0x94 + +extern M424DllBallStruct2 lbl_1_bss_60[9]; +extern u8 lbl_1_bss_58; +extern s16 lbl_1_bss_24[4]; + +float fn_1_1358(float, float); +float fn_1_1470(float, float, float); +omObjData *fn_1_1AB8(Process *); +void fn_1_1B8C(void); +float fn_1_213C(void); +void fn_1_252C(float, s32); +void fn_1_2670(s32, s32); +void fn_1_2720(Process *); +void fn_1_2880(void); +Vec *fn_1_8A00(u8); +s32 fn_1_8A2C(void); +omObjData *fn_1_93F0(Process *); +void fn_1_94A4(void); +s32 fn_1_B804(void); +s32 fn_1_B888(void); +s32 fn_1_B8AC(void); +s32 fn_1_B924(void); diff --git a/include/REL/m425Dll.h b/include/REL/m425Dll.h new file mode 100644 index 00000000..413e47c3 --- /dev/null +++ b/include/REL/m425Dll.h @@ -0,0 +1,15 @@ +#ifndef M425DLL_H +#define M425DLL_H + +#include "game/object.h" + +omObjData *fn_1_6A0C(Process *process, s32 arg1); +void fn_1_6C08(void); +void fn_1_6CD0(s32 arg0, Vec *arg1); +s32 fn_1_109EC(s32 arg0, s32 arg1, Vec *arg2, Vec *arg3, Vec *arg4, s32 arg5); +float fn_1_10CF4(s32 arg0); +void fn_1_10DB4(s32 arg0); +void fn_1_10E3C(s32 arg0); +float fn_1_10EF8(s32 arg0, s32 arg1, float arg8, float arg9); + +#endif diff --git a/include/REL/m427Dll.h b/include/REL/m427Dll.h new file mode 100644 index 00000000..7c84b7a1 --- /dev/null +++ b/include/REL/m427Dll.h @@ -0,0 +1,35 @@ +#include "dolphin.h" +#include "game/object.h" + +typedef struct M427DllStruct { + s32 unk0; + s32 unk4; +} M427DllStruct; + +s32 fn_1_1788(void); +void fn_1_1798(s32 arg0, float arg8); +s32 fn_1_1884(void); +s32 fn_1_32EC(void); + +void fn_1_32F4(Process *arg0); +void fn_1_3B20(s8 arg0, s16 arg1); +void fn_1_3A88(void); +void fn_1_91E0(s16 arg0, float arg8, float arg9, float argA, float argB); +float fn_1_AE78(s16 arg0, float arg8, float arg9); +void fn_1_E98C(Process *); +void fn_1_EC54(void); +s32 fn_1_10FE8(s32 arg0, s32 *arg1); +void fn_1_110E8(s32, s32 *); +void fn_1_111C0(s32, s32 *); +void fn_1_11298(float); +s32 fn_1_113F0(s32); +float fn_1_168FC(float, float, float); + +s32 fn_1_15F10(Vec arg0, Vec arg1, s32 arg2, s32 arg3, s32 arg4); +s32 fn_1_15FD0(Vec arg0, float arg8, s32 arg1, s32 arg2, s32 arg3); + +extern s32 lbl_1_bss_580; +extern Vec *lbl_1_bss_558; +extern Vec *lbl_1_bss_554; +extern Vec *lbl_1_bss_550; +extern M427DllStruct lbl_1_bss_0[8]; diff --git a/include/REL/m428Dll.h b/include/REL/m428Dll.h new file mode 100644 index 00000000..567c3f99 --- /dev/null +++ b/include/REL/m428Dll.h @@ -0,0 +1,34 @@ +#ifndef M428DLL_H +#define M428DLL_H + +#include "game/object.h" + +s32 fn_1_26E0(void); +void fn_1_4170(s16 arg0, s32 arg1); + +void fn_1_4324(s32 arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_1_43C8(Process *arg0); +void fn_1_4630(void); +u8 fn_1_9990(Vec *arg0); +void fn_1_9A30(u8 arg0, float arg8, Vec *arg1, Vec *arg2, float arg9); +void fn_1_9ADC(u8 arg0); +void fn_1_9DE8(u8 arg0, float arg8, s8 arg1); +void fn_1_9EA8(u8 arg0); + +omObjData *fn_1_9F5C(Process *process); +void fn_1_A0B0(void); +s32 fn_1_F354(void); +s32 fn_1_F3BC(s32 arg0); +void fn_1_F414(s32 arg0); +void fn_1_F454(s32 arg0, s32 arg1); +void fn_1_F46C(s32 arg0, s32 arg1); +void fn_1_F4B4(s32 arg0, s32 arg1, float arg8); +s32 fn_1_F4E8(s32 arg0); +void fn_1_116C4(s32 arg0, s32 arg1); +void fn_1_11754(s32 arg0, float arg8); +void fn_1_11798(s32 arg0); + +extern s16 lbl_1_bss_50[4]; +extern s32 lbl_1_bss_18; + +#endif diff --git a/include/REL/m430Dll.h b/include/REL/m430Dll.h new file mode 100644 index 00000000..e1a47014 --- /dev/null +++ b/include/REL/m430Dll.h @@ -0,0 +1,26 @@ +#ifndef M430DLL_H +#define M430DLL_H + +#include "game/object.h" + +s32 fn_1_4030(void); +u32 fn_1_4058(void); +u32 fn_1_4070(void); +u32 fn_1_4088(void); +void fn_1_40D0(s32 arg0); +void fn_1_4100(s32 arg0); +float fn_1_4130(void); +float fn_1_48B0(float arg8, float arg9, float argA); + +void fn_1_4A80(Process *process); +void fn_1_4C48(void); +float fn_1_7FBC(s32 arg0); +void fn_1_7FFC(s32 arg0, float arg8); +void fn_1_AEE0(s32 arg0, Vec *arg1, float arg8, float arg9); +void fn_1_B570(s32 arg0, Vec *arg1, float arg8, float arg9, Vec *arg2); +void fn_1_BB98(u32 arg0); + +void fn_1_BBC4(Process *process); +void fn_1_C00C(void); + +#endif diff --git a/include/REL/m431Dll.h b/include/REL/m431Dll.h index 78bcb746..c4286562 100644 --- a/include/REL/m431Dll.h +++ b/include/REL/m431Dll.h @@ -3,113 +3,116 @@ #include "game/object.h" -#define rand16() ((rand8() << 8)|(rand8())) - +#define rand16() ((rand8() << 8) | (rand8())) typedef struct bss_12C_inner { - Vec unk0; - float unkC; - s8 unk10; + Vec unk0; + float unkC; + s8 unk10; } Bss12CInner; typedef struct bss_12c_struct { - s16 unk0[2]; - s16 unk4; - s16 unk6; - s16 unk8; - Vec unkC; - float unk18; - Bss12CInner unk1C[10]; - float unkE4[10][2]; - s16 unk134[2]; - s16 unk138[2]; + s16 unk0[2]; + s16 unk4; + s16 unk6; + s16 unk8; + Vec unkC; + float unk18; + Bss12CInner unk1C[10]; + float unkE4[10][2]; + s16 unk134[2]; + s16 unk138[2]; } Bss12CStruct; typedef struct bss_61C_work { - u32 unk0; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; - s16 unkC; - float unk10; - struct bss_61C_work *unk14; - Vec unk18; - Vec unk24; - float unk30; - omObjFunc unk34; - s16 unk38; - s16 unk3A; - u32 unk3C; - s16 unk40; - s16 unk42; - Vec unk44; - s16 unk50; - s8 unk52; - u32 unk54; - s16 unk58; - s16 unk5A; - s16 unk5C; - s16 unk5E[8]; - s16 unk6E; - s16 unk70; - s16 unk72; - u32 unk74; - s16 unk78; - s16 unk7A; - s16 unk7C; - s16 unk7E; - s16 unk80; - s16 unk82; - s16 unk84; - s16 unk86; - float unk88; - Vec unk8C; - float unk98; - Vec unk9C; - float unkA8; - s32 unkAC; - s16 unkB0; - s16 unkB2; - s8 unkB4; - s8 unkB5; + u32 unk0; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + float unk10; + struct bss_61C_work *unk14; + Vec unk18; + Vec unk24; + float unk30; + omObjFunc unk34; + s16 unk38; + s16 unk3A; +#if VERSION_PAL + s16 unk3C_pal; + s16 unk3E_pal; +#endif + u32 unk3C; + s16 unk40; + s16 unk42; + Vec unk44; + s16 unk50; + s8 unk52; + u32 unk54; + s16 unk58; + s16 unk5A; + s16 unk5C; + s16 unk5E[8]; + s16 unk6E; + s16 unk70; + s16 unk72; + u32 unk74; + s16 unk78; + s16 unk7A; + s16 unk7C; + s16 unk7E; + s16 unk80; + s16 unk82; + s16 unk84; + s16 unk86; + float unk88; + Vec unk8C; + float unk98; + Vec unk9C; + float unkA8; + s32 unkAC; + s16 unkB0; + s16 unkB2; + s8 unkB4; + s8 unkB5; } Bss61CWork; typedef void (*unkHook72B4Data18)(struct unk_72B4_data_18 *); typedef void (*unkHook72B4)(ModelData *, struct work_72B4 *, Mtx); typedef struct unk_72B4_data_18 { - Vec unk0; - Vec unkC; - char unk18[16]; - s16 unk28; - s16 unk2A; - s16 unk2C; - unkHook72B4Data18 unk30; - s16 unk34; - float unk38; - Vec unk3C; - Vec unk48; - s16 unk54; - s8 unk56; + Vec unk0; + Vec unkC; + char unk18[16]; + s16 unk28; + s16 unk2A; + s16 unk2C; + unkHook72B4Data18 unk30; + s16 unk34; + float unk38; + Vec unk3C; + Vec unk48; + s16 unk54; + s8 unk56; } Unk72B4Data18; typedef struct work_72B4 { - s16 unk0; - u32 unk4; - u8 unk8; - unkHook72B4 unkC; - AnimData *unk10; - s16 unk14; - Unk72B4Data18 *unk18; - Vec *unk1C; - HsfVector2f *unk20; - GXColor *unk24; - void *unk28; - Vec unk2C[4]; - HsfVector2f *unk5C; - float unk60; - float unk64; + s16 unk0; + u32 unk4; + u8 unk8; + unkHook72B4 unkC; + AnimData *unk10; + s16 unk14; + Unk72B4Data18 *unk18; + Vec *unk1C; + HsfVector2f *unk20; + GXColor *unk24; + void *unk28; + Vec unk2C[4]; + HsfVector2f *unk5C; + float unk60; + float unk64; } Work72B4; extern s32 lbl_1_bss_4; diff --git a/include/REL/m432data.h b/include/REL/m432data.h new file mode 100644 index 00000000..a9b72135 --- /dev/null +++ b/include/REL/m432data.h @@ -0,0 +1,1236 @@ +#ifndef M432DATA_H +#define M432DATA_H + +#include "datadir_enum.h" +#include "dolphin.h" +#include "game/hsfanim.h" +#include "version.h" + +typedef struct UnkM432DllBss0SubStruct { + char *unk_00; + char *unk_04; + s32 unk_08; + u32 unk_0C[2]; + u32 unk_14; + float unk_18; + float unk_1C; + Vec unk_20; + Vec unk_2C; + float unk_38; + float unk_3C; + s16 unk_40; + s32 unk_44; +} UnkM432DllBss0SubStruct; /* size = 0x48 */ + +typedef struct UnkM432DllData1794Struct { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + s32 unk_18; + s32 unk_1C; +} UnkM432DllData1794Struct; /* size = 0x20 */ + +s32 lbl_1_data_A0[2] = { 1, 2 }; +float lbl_1_data_A8[8] = { 0.0f, 0.0f, 318.0f, 480.0f, 322.0f, 0.0f, 318.0f, 480.0f }; +Vec lbl_1_data_C8 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_D4 = { 0.0f, 3000.0f, 1000.0f }; +Vec lbl_1_data_E0 = { 0.0f, -3.0f, -1.0f }; +GXColor lbl_1_data_EC = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_F0 = { 0.0f, 5000.0f, 100.0f }; +Vec lbl_1_data_FC = { 0.0f, 0.0f, 0.0f }; + +s32 lbl_1_data_108[8][0xB] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x73), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x74), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x38), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x73), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x74), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x38), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x73), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x74), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x38), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x73), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x74), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x38), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x73), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x74), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x38), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x73), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x74), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x38), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x73), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x74), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x38), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x73), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x74), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x38), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x72), + }, +}; + +s32 lbl_1_data_268[8] = { 0, 1, 2, 3, 4, -1, -1, -1 }; + +s32 lbl_1_data_288[9] = { + DATA_MAKE_NUM(DATADIR_M432, 0x1F), + DATA_MAKE_NUM(DATADIR_M432, 0x20), + DATA_MAKE_NUM(DATADIR_M432, 0x21), + DATA_MAKE_NUM(DATADIR_M432, 0x22), + DATA_MAKE_NUM(DATADIR_M432, 0x23), + DATA_MAKE_NUM(DATADIR_M432, 0x24), + DATA_MAKE_NUM(DATADIR_M432, 0x25), + DATA_MAKE_NUM(DATADIR_M432, 0x26), + DATA_MAKE_NUM(DATADIR_M432, 0x27), +}; + +s32 lbl_1_data_2AC[9] = { 0, 8, -0x10, 4, 0, -4, -1, 0, 0 }; +s32 lbl_1_data_2D0[9] = { 0, 8, -0x10, 8, 0, -4, -1, 0, 0 }; +s32 lbl_1_data_2F4[9] = { 0, 8, -0x10, 7, 0, -4, -1, 0, 0 }; +s32 lbl_1_data_318[0xF] = { 1, 0, -0x10, 5, -0x18, -5, 2, 0, -5, 6, 0x18, -5, -1, 0, 0 }; +Vec lbl_1_data_354[2] = { { -1200.0f, 0.0f, 0.0f }, { -400.0f, 0.0f, 0.0f } }; +Vec lbl_1_data_36C[2] = { { 400.0f, 0.0f, 0.0f }, { 1200.0f, 0.0f, 0.0f } }; + +char *lbl_1_data_3DC[8] = { + "m432_00-o0", + "m432_00-o1", + "m432_00-o2", + "m432_00-o3", + "m432_00-o4", + "m432_00-o5", + "m432_00-o6", + "m432_00-o7", +}; + +char *lbl_1_data_440[6] = { + "m432_00-p0", + "m432_00-p1", + "m432_00-p2", + "m432_00-p3", + "m432_00-p4", + "m432_00-q0", +}; + +char *lbl_1_data_4C8[0xA] = { + "m432_00-r0", + "m432_00-r1", + "m432_00-r2", + "m432_00-r5", + "m432_00-r4", + "m432_00-r3", + "m432_00-r6", + "m432_00-r7", + "m432_00-r8", + "m432_00-s0", +}; + +u8 lbl_1_data_4F0[0x14] = { + 0, + 0, + 0, + 1, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0, + 0, + 0, + 3, +}; + +u8 lbl_1_data_504[0x24] = { + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 5, + 0, + 0, + 0, + 8, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 7, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, +}; + +s32 lbl_1_data_528[2] = { DATA_MAKE_NUM(DATADIR_M432, 0x05), DATA_MAKE_NUM(DATADIR_M432, 0x06) }; + +UnkM432DllBss0SubStruct lbl_1_data_5EC[0x1F] = { + { + "m432_00-i0", + NULL, + -1, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b0", + "m432_00-a0", + 4, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a1", + NULL, + 5, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b2", + "m432_00-a2", + 6, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a3", + NULL, + 7, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c0", + NULL, + 0x10, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x400, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c1", + NULL, + 0x11, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x400, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d0", + NULL, + 0x14, + { DATA_MAKE_NUM(DATADIR_M432, 0x10), DATA_MAKE_NUM(DATADIR_M432, 0x11) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c2", + NULL, + 0x12, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x200, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c3", + NULL, + 0x13, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x200, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d1", + NULL, + 0x15, + { DATA_MAKE_NUM(DATADIR_M432, 0x12), DATA_MAKE_NUM(DATADIR_M432, 0x13) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p0", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p1", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p2", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p3", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p4", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-q0", + NULL, + -1, + { 0, 0 }, + 8, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r0", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r1", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r2", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r5", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r4", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r3", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 5.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r6", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 6.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r7", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 7.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r8", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 8.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-s0", + NULL, + -1, + { 0, 0 }, + 0x10, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-e0", + NULL, + 8, + { DATA_MAKE_NUM(DATADIR_M432, 0x14), DATA_MAKE_NUM(DATADIR_M432, 0x15) }, + 0x800, + 180.0f, + 120.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-j0", + NULL, + 9, + { DATA_MAKE_NUM(DATADIR_M432, 0x18), DATA_MAKE_NUM(DATADIR_M432, 0x19) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-h0", + NULL, + 0x16, + { DATA_MAKE_NUM(DATADIR_M432, 0x16), DATA_MAKE_NUM(DATADIR_M432, 0x17) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-t0", + NULL, + 0x17, + { DATA_MAKE_NUM(DATADIR_M432, 0x1C), DATA_MAKE_NUM(DATADIR_M432, 0x1D) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, +}; + +UnkM432DllBss0SubStruct lbl_1_data_EDC[0x1F] = { + { + "m432_00-i1", + NULL, + -1, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a0", + NULL, + 0xA, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b1", + "m432_00-a1", + 0xB, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a2", + NULL, + 0xC, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b3", + "m432_00-a3", + 0xD, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c0", + NULL, + 0x10, + { 0, 0 }, + 0x400, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c1", + NULL, + 0x11, + { 0, 0 }, + 0x400, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d0", + NULL, + 0x14, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c2", + NULL, + 0x12, + { 0, 0 }, + 0x200, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c3", + NULL, + 0x13, + { 0, 0 }, + 0x200, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d1", + NULL, + 0x15, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p0", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p1", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p2", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p3", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p4", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-q0", + NULL, + -1, + { 0, 0 }, + 8, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r0", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r1", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r2", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r5", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r4", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r3", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 5.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r6", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 6.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r7", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 7.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r8", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 8.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-s0", + NULL, + -1, + { 0, 0 }, + 0x10, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-e1", + NULL, + 0xE, + { DATA_MAKE_NUM(DATADIR_M432, 0x14), DATA_MAKE_NUM(DATADIR_M432, 0x15) }, + 0x800, + 180.0f, + 120.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-k0", + NULL, + 0xF, + { DATA_MAKE_NUM(DATADIR_M432, 0x1A), DATA_MAKE_NUM(DATADIR_M432, 0x1B) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-h0", + NULL, + 0x16, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-t0", + NULL, + 0x17, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, +}; + +UnkM432DllData1794Struct lbl_1_data_1794 = { 105.0f * REFRESH_RATE, 0.7f, 10.0f, 0.4f, 1.0f, 0, 2, 6 }; +UnkM432DllData1794Struct lbl_1_data_17B4 = { 95.0f * REFRESH_RATE, 0.8f, 8.0f, 0.6f, 1.0f, 0, 4, 5 }; +UnkM432DllData1794Struct lbl_1_data_17D4 = { 85.0f * REFRESH_RATE, 0.9f, 6.0f, 0.8f, 1.0f, 0, 6, 4 }; +UnkM432DllData1794Struct lbl_1_data_17F4 = { 75.0f * REFRESH_RATE, 1.0f, 4.0f, 1.0f, 1.0f, 0, 8, 3 }; +HsfanimStruct00 lbl_1_data_1814 = { + 0x1E, + { 0, 0 }, + 1.0f, + 50.0f, + 360.0f, + { 0.0f, 0.1f, 0.0f }, + 1.0f, + 1.0f, + 30.0f, + 1.1f, + 4, + { + { 0xF0, 0xD0, 0xB0, 0xFF }, + { 0xE0, 0xC0, 0xA0, 0xFF }, + { 0xD0, 0xB0, 0x90, 0xFF }, + { 0xC0, 0xA0, 0x80, 0xFF }, + }, + { + { 0xF0, 0xD0, 0xB0, 0 }, + { 0xE0, 0xC0, 0xA0, 0 }, + { 0xD0, 0xB0, 0x90, 0 }, + { 0xC0, 0xA0, 0x80, 0 }, + }, +}; + +#endif diff --git a/include/REL/m433Dll.h b/include/REL/m433Dll.h new file mode 100644 index 00000000..fc0407db --- /dev/null +++ b/include/REL/m433Dll.h @@ -0,0 +1,43 @@ +#ifndef M430DLL_H +#define M430DLL_H + +#include "game/object.h" + +typedef struct M433DllWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + s32 unk_18; + u32 unk_1C; + u32 unk_20; + s32 unk_24; + u32 unk_28; + s32 unk_2C[2]; + u32 unk_34; + s32 unk_38; + s32 unk_3C; +} M433DllWork; /* size = 0x40 */ + +void fn_1_584(omObjData *object); +void fn_1_618(omObjData *object); +u32 fn_1_216C(void); +u32 fn_1_2184(void); +void fn_1_219C(s32 arg0, s32 arg1, s32 arg2); +void fn_1_21E4(s32 arg0); +void fn_1_2214(s32 arg0); +s32 fn_1_2244(void); +float fn_1_26C4(float arg8, float arg9, float argA); + +void fn_1_2894(Process *process); +void fn_1_2984(void); +omObjFunc fn_1_29A4(Process *process, omObjData *object); +void fn_1_58D8(s32); + +void fn_1_5904(Process *process); +void fn_1_5B74(void); +s32 fn_1_10FA4(s32 arg0); + +#endif diff --git a/include/REL/m435Dll.h b/include/REL/m435Dll.h new file mode 100755 index 00000000..102610b2 --- /dev/null +++ b/include/REL/m435Dll.h @@ -0,0 +1,86 @@ +#include "game/object.h" + +#include "dolphin.h" + +// For future reference: m435 has many functions and structs in common with m436 and m437. + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ s32 (*unk04)(void); + /* 0x08 */ s32 unk08; +} StructData3A0; // Size 0xC + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ StructData3A0* unk0C; + /* 0x10 */ void (*unk10)(void); + /* 0x14 */ s32 (*unk14)(void); +} StructBss84; // Size 0x18 + +typedef struct { + /* 0x00 */ char unk00[4]; + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ void (*unk08)(void); + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ s32 unk48[7]; + /* 0x64 */ float unk64[7]; +} StructBssE08; // Size 0x80 + +typedef struct { + /* 0x000 */ omObjData* unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ char unk0C[4]; + /* 0x010 */ char unk10[1024]; // Actual char array (unsure about length) + /* 0x410 */ s32 unk410; + /* 0x414 */ s32 unk414[20]; + /* 0x464 */ s32 unk464; + /* 0x468 */ s32 unk468; + /* 0x46C */ s32 unk46C; + /* 0x470 */ float unk470; + /* 0x474 */ float unk474; + /* 0x478 */ float unk478; + /* 0x47C */ float unk47C; +} StructFn19894; // Size 0x480 + +float fn_1_1526C(float arg0, float arg1, float arg2, float arg3); +float fn_1_15294(float arg0, float arg1, float arg2); +float fn_1_152D4(float arg0, float arg1, float arg2, float arg3); +float fn_1_1539C(float arg0, float arg1, float arg2, float arg3); +void fn_1_154C4(StructBss84* arg0, StructData3A0* arg1); +s32 fn_1_15520(StructBss84* arg0); +void fn_1_1561C(StructBss84* arg0, s32 arg1); +s32 fn_1_15670(StructBss84* arg0, s32 arg1); +s32 fn_1_156AC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_157BC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_15934(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_15E50(StructBssE08* arg0); +void fn_1_161B0(StructBssE08* arg0, float arg1); +void fn_1_169F4(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3, float arg4); +void fn_1_17804(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3, float arg4); +void fn_1_188E0(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3, float arg4); +void fn_1_19530(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_195F4(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_19658(omObjData* arg0, s32 arg1, float arg2, s32 arg3); +void fn_1_19894(StructFn19894* arg0, s32 arg1); +void fn_1_198F8(StructFn19894* arg0, s32 arg1); +void fn_1_19960(StructFn19894* arg0, s32 arg1); +void fn_1_19968(StructFn19894* arg0, s32 arg1); +void fn_1_19974(StructFn19894* arg0, s32 arg1); +void fn_1_1A33C(Process* arg0, StructFn19894* arg1, s32 arg2, char* arg3, s32 arg4, s32 arg5); diff --git a/include/REL/m436Dll.h b/include/REL/m436Dll.h new file mode 100755 index 00000000..6f2d6aa4 --- /dev/null +++ b/include/REL/m436Dll.h @@ -0,0 +1,65 @@ +#ifndef M436DLL_H +#define M436DLL_H + +#include "game/object.h" + +#include "dolphin.h" + +// For future reference: m436 has many functions and structs in common with m437. + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ s32 (*unk04)(void); + /* 0x08 */ s32 unk08; +} StructData1E8; // Size 0xC + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ StructData1E8* unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ void (*unk10)(void); + /* 0x14 */ s32 (*unk14)(void); +} StructBssC0; // Size 0x18 + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40[7]; + /* 0x5C */ float unk5C[7]; +} StructBss32C; // Size 0x78 + +float fn_1_110FC(float arg0, float arg1, float arg2); +float fn_1_1113C(float arg0, float arg1, float arg2, float arg3); +float fn_1_11164(float arg0, float arg1, float arg2, float arg3); +float fn_1_1122C(float arg0, float arg1, float arg2, float arg3); +float fn_1_112F4(float arg0, float arg1, float arg2, float arg3); +void fn_1_113CC(omObjData* arg0, s32 arg1, omObjData* arg2, s32 arg3); +s32 fn_1_11708(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_11818(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_11990(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_11B18(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_11D18(StructBssC0* arg0, StructData1E8* arg1); +s32 fn_1_11D74(StructBssC0* arg0); +s32 fn_1_11E70(StructBssC0* arg0, s32 arg1); +s32 fn_1_11F04(StructBssC0* arg0, s32 arg1); +void fn_1_12294(StructBss32C* arg0); +void fn_1_125F4(StructBss32C* arg0, float arg1); +void fn_1_13C48(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3, float arg4); +void fn_1_14D24(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3, float arg4); + +#endif diff --git a/include/REL/m437Dll.h b/include/REL/m437Dll.h new file mode 100755 index 00000000..7dd1f328 --- /dev/null +++ b/include/REL/m437Dll.h @@ -0,0 +1,78 @@ +#ifndef M437DLL_H +#define M437DLL_H + +#include "game/object.h" + +#include "dolphin.h" + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ s32 (*unk04)(void); + /* 0x08 */ s32 unk08; +} StructData204; // Size 0xC + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ StructData204* unk04; + /* 0x08 */ void (*unk08)(void); + /* 0x0C */ s32 (*unk0C)(void); + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; +} StructBss50; // Size 0x18 + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44[7]; + /* 0x60 */ float unk60[7]; +} StructBss160; // Size 0x7C + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ char unk04[128]; + /* 0x84 */ s32 unk84; + /* 0x88 */ s32 unk88; + /* 0x8C */ s32 unk8C; + /* 0x90 */ s32 unk90; + /* 0x94 */ s32 unk94[20]; + /* 0xE4 */ omObjData* unkE4; +} StructFn15CD0; // Size 0xE8 + +float fn_1_11348(float arg0, float arg1, float arg2, float arg3); +float fn_1_11370(float arg0, float arg1, float arg2); +float fn_1_113B0(float arg0, float arg1, float arg2, float arg3); +float fn_1_11478(float arg0, float arg1, float arg2, float arg3); +float fn_1_11540(float arg0, float arg1, float arg2, float arg3); +void fn_1_11668(StructBss50* arg0, StructData204* arg1); +s32 fn_1_116C4(StructBss50* arg0); +s32 fn_1_117C0(StructBss50* arg0, s32 arg1); +s32 fn_1_11854(StructBss50* arg0, s32 arg1); +s32 fn_1_11890(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_119A0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_11B18(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 fn_1_11CE0(omObjData* arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6); +void fn_1_12ABC(StructBss160* arg0); +void fn_1_12E14(StructBss160* arg0, float arg1); +void fn_1_13658(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4); +void fn_1_15544(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4); +void fn_1_15CD0(StructFn15CD0* arg0, s32 arg1); +void fn_1_15DC8(StructFn15CD0* arg0); +void fn_1_164B0(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3); +void fn_1_1660C(Process* arg0, StructFn15CD0* arg1, s32 arg2, s32 arg3); + +#endif diff --git a/include/REL/m438Dll.h b/include/REL/m438Dll.h index 798483ee..828dd494 100644 --- a/include/REL/m438Dll.h +++ b/include/REL/m438Dll.h @@ -1,8 +1,158 @@ #ifndef M438DLL_H #define M438DLL_H +#include "game/animdata.h" +#include "game/hsfformat.h" #include "game/object.h" +typedef struct M438MainWork4 { + u8 unk_00; + char unk01[0x3]; + s32 unk_04; + float unk_08; + float unk_0C; + Vec unk_10; + Vec unk_1C; + Vec unk_28; + Vec unk_34; + char unk40[0xC]; +} M438MainWork4; /* size = 0x4C */ + +typedef struct M438UnkSubStruct { + s8 unk_00; + s8 unk_01; + char unk02[0x2]; + float unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + u8 unk_24; + float unk_28; + float unk_2C; +} M438UnkSubStruct; + +typedef struct M438UnkStruct { + Vec unk_00; + Vec unk_0C; + Vec unk_18; + Vec unk_24; + u8 unk_30; + u8 unk_31; + u8 unk_32; + u8 unk_33; + u8 unk_34; + u32 unk_38; + s16 unk_3C; + void *unk_40; + Vec *unk_44; + GXColor *unk_48; + Vec *unk_4C; + GXColor unk_50; + GXColor unk_54; + M438UnkSubStruct *unk_58; + u8 unk_5C; + char unk5D[0x3]; + Vec unk_60; + Vec unk_6C; + s16 unk_78[0x10]; +} M438UnkStruct; /* size = 0x98 */ + +typedef struct M438FireStruct { + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; +} M438FireStruct; // sizeof 0x30 + +typedef struct M438FireStruct2 { + GXColor unk0; + GXColor unk4; + GXColor unk8; + GXColor unkC; +} M438FireStruct2; // sizeof 0x10 + +typedef struct M438FireStruct3 { + HsfVector2f unk0; + HsfVector2f unk8; + HsfVector2f unk10; + HsfVector2f unk18; +} M438FireStruct3; // sizeof 0x20 + +typedef struct M438UnkStruct2 { + s16 unk_00; + s16 unk_02; + u8 unk_04; + u32 unk_08; + Vec unk_0C; + Vec unk_18; + Vec unk_24; + void (*unk_30)(struct M438UnkStruct2 *); + s16 *unk_34; + char unk_38[0x4]; + M438UnkStruct *unk_3C; + char unk40[0x8]; + s16 unk_48; + void *unk_4C; + Vec *unk_50; + GXColor *unk_54; + Vec *unk_58; + M438UnkSubStruct *unk_5C; + u8 unk_60; + char unk61[0x3]; + Vec unk_64; + Vec unk_70; + union { + s16 unk_7Ca[0x20]; + struct { + s16 unk_7C; + s16 unk_7E; + float unk_80; + float unk_84; + float unk_88; + float unk_8C; + float unk_90; + char unk94[0x28]; + }; + }; +} M438UnkStruct2; /* size = 0xBC */ + +typedef struct M438UnkStruct3 { + AnimData *unk_00; + s16 unk_04; + s16 unk_06; + u32 unk_08; + Vec unk_0C; + Mtx unk_18; + GXColor unk_48; + u8 unk_4C; + u8 unk_4D; + s16 unk_4E; + s16 unk_50; + char unk52[0x2]; + float unk_54; + float unk_58; + float unk_5C; + float unk_60; +} M438UnkStruct3; /* size = 0x64 */ + +typedef struct M438StructBssDE4 { + Mtx unk_00; + s16 unk_30; + s16 unk_32; + s16 unk_34; + s16 unk_36; + s16 unk_38; + s16 unk_3A; + M438UnkStruct3 *unk_3C; + M438UnkStruct2 *unk_40; +} M438StructBssDE4; /* size = */ + +extern M438StructBssDE4 lbl_1_bss_DE4; + void fn_1_B4D8(Process *arg0); void fn_1_B548(); s32 fn_1_DA64(float arg8); @@ -11,11 +161,11 @@ float fn_1_E488(float arg8, float arg9, float argA); float fn_1_E5A4(float arg8, float arg9); void fn_1_E658(s16 arg0, s16 arg1); -s16 fn_1_10258(s32 arg0, s32 arg1); +s16 fn_1_10258(u8 arg0, u8 arg1); void fn_1_107BC(s16 arg0); -void fn_1_108E4(s16 arg0, s32 arg1, s32 arg2); +void fn_1_108E4(s16 arg0, s16 arg1, u8 arg2); s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2); -s8 fn_1_11018(s16 arg0, u8 arg1, u32 arg2); +u8 fn_1_11018(s16 arg0, u8 arg1, u32 arg2); void fn_1_11658(void); void fn_1_11890(s16 arg0, float arg8, float arg9, float argA); void fn_1_118FC(s16 arg0, s16 arg1, float arg8, float arg9, float argA); @@ -26,11 +176,11 @@ void fn_1_11F68(s16 arg0, s16 arg1, float arg8, float arg9, float argA); void fn_1_1204C(s16 arg0, s32 arg1); void fn_1_12090(s16 arg0, s16 arg1, s32 arg2); void fn_1_12100(s16 arg0, s32 arg1); -void fn_1_12174(s16 arg0, s32 arg1); -void fn_1_12378(s16 arg0, s16 arg1, s8 arg2, s8 arg3, s8 arg4, u8 arg5); -void fn_1_124CC(s16 arg0, s8 arg1); -void fn_1_12538(s16 arg0, s16 arg1, s8 arg2); -void fn_1_1274C(s16 arg0, s16 arg1, u8 arg2, s8 arg3); +void fn_1_12174(s16 arg0, u32 arg1); +void fn_1_12378(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5); +void fn_1_124CC(s16 arg0, u8 arg1); +void fn_1_12538(s16 arg0, s16 arg1, u8 arg2); +void fn_1_1274C(s16 arg0, s16 arg1, u8 arg2, u8 arg3); void fn_1_128C8(s16 arg0, s16 arg1, u8 arg2, float arg8); #endif diff --git a/include/REL/m440Dll.h b/include/REL/m440Dll.h index 1a64053e..d7d2c5b8 100644 --- a/include/REL/m440Dll.h +++ b/include/REL/m440Dll.h @@ -1,16 +1,21 @@ +#ifndef M440DLL_H +#define M440DLL_H + #include "dolphin/types.h" #include "game/hsfman.h" +#include "version.h" + #include "game/object.h" extern s32 rand8(void); ////// TYPES ////// -typedef void (*m440Func5)(ModelData*, struct _unkStruct5*, Mtx); -typedef void (*m440Func6)(struct _unkStruct6*); -typedef void (*m440Func14)(struct _unkStruct14*); +typedef void (*m440Func5)(ModelData *, struct _unkStruct5 *, Mtx); +typedef void (*m440Func6)(struct _unkStruct6 *); +typedef void (*m440Func14)(struct _unkStruct14 *); typedef struct _unkStruct { - f32 zoom; + float zoom; Vec center; Vec rot; } unkStruct; @@ -25,37 +30,37 @@ typedef struct _unkStruct2 { char unk10[0xC]; s16 unk1C; char unk20[0x4]; - f32 unk24; + float unk24; char unk28[0x4]; s16 unk2C; s16 unk2E; - f32 unk30; + float unk30; } unkStruct2; typedef struct _unkStruct3 { char unk0[0x34]; - f32 unk34; + float unk34; char unk38[0x8]; - f32 unk40; + float unk40; } unkStruct3; typedef struct _unkStruct4 { Vec unk0; char unkC[0xC]; - f32 unk18; - f32 unk1C; + float unk18; + float unk1C; char unk20[0x4]; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; + float unk24; + float unk28; + float unk2C; + float unk30; s16 unk34; s16 unk36; char unk38[0x4]; s32 unk3C; s16 unk40; s16 unk42; - f32 unk44; + float unk44; Vec unk48; Vec unk54; s16 unk60; @@ -68,20 +73,20 @@ typedef struct _unkStruct5 { u32 unk4; u8 unk8; m440Func5 unkC; - AnimData* unk10; + AnimData *unk10; s16 unk14; - unkStruct4* unk18; - Vec* unk1C; - HsfVector2f* unk20; - GXColor* unk24; - void* unk28; + unkStruct4 *unk18; + Vec *unk1C; + HsfVector2f *unk20; + GXColor *unk24; + void *unk28; Vec unk2C; Vec unk38; Vec unk44; Vec unk50; - HsfVector2f* unk5C; - f32 unk60; - f32 unk64; + HsfVector2f *unk5C; + float unk60; + float unk64; } unkStruct5; typedef struct _unkStruct6 { @@ -90,16 +95,16 @@ typedef struct _unkStruct6 { s16 unk4; s16 unk6; u32 unk8; - Vec* unkC; - Vec* unk10; - Vec* unk14; - Vec* unk18; - HsfVector2f* unk1C; + Vec *unkC; + Vec *unk10; + Vec *unk14; + Vec *unk18; + HsfVector2f *unk1C; s32 unk20; - struct _unkStruct8* unk24; - HsfMaterial* unk28; - HsfAttribute* unk2C; - void* unk30; + struct _unkStruct8 *unk24; + HsfMaterial *unk28; + HsfAttribute *unk2C; + void *unk30; u32 unk34; m440Func6 unk38; s16 unk3C; @@ -124,7 +129,7 @@ typedef struct _unkStruct8 { s16 unk1E; unkStruct11 unk20[3]; char unk38[0x30]; - f32 unk68[5]; + float unk68[5]; Vec unk7C; Vec unk88; Vec unk94; @@ -139,7 +144,7 @@ typedef struct _unkStruct10 { s16 unk2; unkStruct11 unk4[3]; u32 unk1C; - unkStruct11* unk20; + unkStruct11 *unk20; char unk24[0xC]; } unkStruct10; // sizeof 0x30 @@ -149,41 +154,41 @@ typedef struct _unkStruct12 { u8 unkB[3]; u8 unkE[3]; char unk12[0x2]; - f32 unk14; + float unk14; char unk18[0x4]; - f32 unk1C; + float unk1C; char unk20[0x10]; u32 unk30; u32 unk34; - s32* unk38; + s32 *unk38; } unkStruct12; typedef struct _unkStruct13 { char unk0[0xA]; u8 unkA; char unkB[0x15]; - f32 unk20; + float unk20; char unk24[0x40]; u32 unk64; u32 unk68; char unk6C[0x14]; - struct _unkStruct15* unk80; + struct _unkStruct15 *unk80; } unkStruct13; // sizeof 0x84 typedef struct _unkStruct14 { s16 unk0; s16 unk2; char unk4[0x8]; - void* unkC; + void *unkC; char unk10[0x4]; - void* unk14; - unkStruct4* unk18; - void* unk1C; + void *unk14; + unkStruct4 *unk18; + void *unk1C; char unk20[0x4]; - GXColor* unk24; - unkStruct12* unk28; - unkStruct13* unk2C; - void* unk30; + GXColor *unk24; + unkStruct12 *unk28; + unkStruct13 *unk2C; + void *unk30; u32 unk34; m440Func14 unk38; s16 unk3C; @@ -197,9 +202,9 @@ typedef struct _unkStruct15 { s16 unkC; s16 unkE; char unk10[0x4]; - void* unk14; + void *unk14; char unk18[0x4]; - void* unk1C; + void *unk1C; } unkStruct15; // object.c @@ -221,176 +226,136 @@ typedef struct _unkObjStruct { Vec unk3C; u8 unk48; s16 unk4A; - f32 unk4C; + float unk4C; s16 unk50; s16 unk52; s16 unk54; s16 unk56; s16 unk58; s16 unk5A; - f32 unk5C; + float unk5C; s16 unk60; s16 unk62; char unk64[0x4]; - f32 unk68; - f32 unk6C; - f32 unk70; + float unk68; + float unk6C; + float unk70; } unkObjStruct; +#if VERSION_NTSC +#define REFRESH_RATE_F 60.0f +#else +#define REFRESH_RATE_F 49.998f +#endif ////// BSS ////// -// object.c -extern omObjData* lbl_1_bss_C0[4]; -extern s16 lbl_1_bss_B8[4]; -extern Vec lbl_1_bss_88[4]; -extern f32 lbl_1_bss_84; -extern Vec lbl_1_bss_78; -extern s16 lbl_1_bss_74; -extern u8 lbl_1_bss_72; -extern s16 lbl_1_bss_70; -// main.c -extern omObjData* lbl_1_bss_6C; -extern omObjData* lbl_1_bss_68; -extern unkStruct6* lbl_1_bss_64; -extern s16 lbl_1_bss_60; -extern Mtx lbl_1_bss_30; -extern s16 lbl_1_bss_2C; -extern void* lbl_1_bss_28; -extern u32 lbl_1_bss_24; -extern s16 lbl_1_bss_10[10]; -extern s16 lbl_1_bss_E; -extern u8 lbl_1_bss_C; -extern u8 lbl_1_bss_B; -extern u8 lbl_1_bss_A; -extern s16 lbl_1_bss_8; -extern s16 lbl_1_bss_6; -extern s16 lbl_1_bss_4; -extern s8 lbl_1_bss_2; -extern s8 lbl_1_bss_1; -extern s8 lbl_1_bss_0; +extern omObjData *lbl_1_bss_C0[4]; ////// DATA ////// // main.c -extern f32 lbl_1_data_0[5]; +extern float lbl_1_data_0[5]; extern s16 lbl_1_data_14[6]; -extern Vec lbl_1_data_20; -extern Vec lbl_1_data_2C; -extern Vec lbl_1_data_38; -extern unkStruct7 lbl_1_data_44; -extern Vec lbl_1_data_54; -extern Vec lbl_1_data_60; -extern Vec lbl_1_data_6C; -extern unkStruct lbl_1_data_78[3]; -extern s16 lbl_1_data_E4[2]; -extern s16 lbl_1_data_E8[2]; -extern s16 lbl_1_data_EC[2]; -extern s16 lbl_1_data_F0[2]; -extern s32 lbl_1_data_F4[4]; -extern s16 lbl_1_data_104[2]; -extern s16 lbl_1_data_108[2]; // object.c extern s16 lbl_1_data_1D8; -extern s16 lbl_1_data_1DA; -extern u32 lbl_1_data_1DC[8][2]; -extern f32 lbl_1_data_21C[4]; -extern f32 lbl_1_data_250; ////// FUNCTIONS ////// // main.c -extern void ObjectSetup(void); -extern void fn_1_3C4(omObjData* object); -extern void fn_1_434(omObjData* object); -extern s32 fn_1_4A4(void); -extern s32 fn_1_6C8(void); -extern void fn_1_8F0(omObjData* object); -extern void fn_1_AE0(omObjData* object); -extern u8 fn_1_E14(omObjData* object); -extern u8 fn_1_1138(omObjData* object); -extern void fn_1_16D8(void); -extern void fn_1_1708(void); -extern void fn_1_1768(void); -extern s16 fn_1_17CC(void); -extern s16 fn_1_17F4(void); -extern void fn_1_181C(void); -extern u8 fn_1_1890(void); -extern void fn_1_18E0(void); -extern u8 fn_1_1954(void); -extern void fn_1_19B0(void); -extern void fn_1_1CAC(void); -extern void fn_1_2240(ModelData* data, unkStruct5*, Mtx); -extern u16 fn_1_23E4(u16); -extern void fn_1_2428(u16, u16); -extern void fn_1_2470(omObjData* object); -extern void fn_1_2A74(omObjData* object); -extern void fn_1_2AB4(omObjData* object); -extern void fn_1_2B04(omObjData* object); -extern void fn_1_2CA8(omObjData* object); -extern void fn_1_2D28(omObjData* object); -extern void fn_1_33D4(omObjData* object); -extern void fn_1_3DD8(omObjData* object); -extern void fn_1_4558(omObjData* object); -extern void fn_1_45BC(omObjData* object); -extern void fn_1_4660(omObjData* object); -extern void fn_1_46E0(omObjData* object); -extern void fn_1_4A20(omObjData* object); -extern void fn_1_4B44(omObjData* object); -extern void fn_1_4E00(s16, f32); -extern s16 fn_1_4E2C(void); -extern s16 fn_1_4E54(s16); -extern u16 fn_1_4EA8(u16); -extern void fn_1_4EEC(u16, u16); -extern void fn_1_4F34(unkStruct6*); -extern void fn_1_5010(unkStruct6*, Vec*, f32); -extern void fn_1_57B4(unkStruct6*); -extern void fn_1_5C2C(s16, HsfObject*, unkStruct6*, u16); -extern void fn_1_6554(unkStruct6*, HsfObject*); -extern void fn_1_6B58(unkStruct6*, HsfObject*); -extern void fn_1_71FC(unkStruct6*, Vec*, s16, Vec); -extern void fn_1_7934(unkStruct6*, unkStruct8*, Vec*); -extern void fn_1_7D60(unkStruct15*, unkStruct13*, s16); -extern void fn_1_806C(ModelData*, Mtx); -extern void fn_1_8470(unkStruct12*, unkStruct13*); -extern void fn_1_8AC4(Mtx); -extern void fn_1_8D1C(void); -extern void fn_1_91A4(Vec*, Vec*, Vec*, f32[5]); -extern f32 fn_1_927C(f32, f32, f32); -extern void fn_1_9344(Mtx, Mtx); -extern f32 fn_1_93C0(f32, f32, f32); -extern f32 fn_1_93D0(f32, f32, f32, f32); -extern unkStruct4* fn_1_942C(s16, Vec*, Vec*, f32, GXColor*); -extern s16 fn_1_956C(AnimData*, s16, f32, s16, s16); -extern void fn_1_9AB0(s16); -extern unkStruct5* fn_1_9B10(s16); -extern unkStruct4* fn_1_9B3C(s16, s16); -extern void fn_1_9B94(s16, m440Func5); -extern void fn_1_9BCC(s16, u8); -extern void fn_1_9C04(ModelData*, Mtx); -extern void fn_1_A1B8(HsfVector2f*, s16, s16, f32, f32); -extern void fn_1_A284(HsfVector2f*, HsfVector2f*, s16, f32, f32); -extern void fn_1_A328(Vec*, Vec*, Vec*, s16); -void fn_1_A390(ModelData*, Mtx); -extern void fn_1_AA94(void); +void ObjectSetup(void); +void fn_1_3C4(omObjData *object); +void fn_1_434(omObjData *object); +s32 fn_1_4A4(void); +s32 fn_1_6C8(void); +void fn_1_8F0(omObjData *object); +void fn_1_AE0(omObjData *object); +u8 fn_1_E14(omObjData *object); +u8 fn_1_1138(omObjData *object); +void fn_1_16D8(void); +void fn_1_1708(void); +void fn_1_1768(void); +s16 fn_1_17CC(void); +s16 fn_1_17F4(void); +void fn_1_181C(void); +u8 fn_1_1890(void); +void fn_1_18E0(void); +u8 fn_1_1954(void); +void fn_1_19B0(void); +void fn_1_1CAC(void); +void fn_1_2240(ModelData *data, unkStruct5 *, Mtx); +u16 fn_1_23E4(u16); +void fn_1_2428(u16, u16); +void fn_1_2470(omObjData *object); +void fn_1_2A74(omObjData *object); +void fn_1_2AB4(omObjData *object); +void fn_1_2B04(omObjData *object); +void fn_1_2CA8(omObjData *object); +void fn_1_2D28(omObjData *object); +void fn_1_33D4(omObjData *object); +void fn_1_3DD8(omObjData *object); +void fn_1_4558(omObjData *object); +void fn_1_45BC(omObjData *object); +void fn_1_4660(omObjData *object); +void fn_1_46E0(omObjData *object); +void fn_1_4A20(omObjData *object); +void fn_1_4B44(omObjData *object); +void fn_1_4E00(s16, float); +s16 fn_1_4E2C(void); +s16 fn_1_4E54(s16); +u16 fn_1_4EA8(u16); +void fn_1_4EEC(u16, u16); +void fn_1_4F34(unkStruct6 *); +void fn_1_5010(unkStruct6 *, Vec *, float); +void fn_1_57B4(unkStruct6 *); +void fn_1_5C2C(s16, HsfObject *, unkStruct6 *, u16); +void fn_1_6554(unkStruct6 *, HsfObject *); +void fn_1_6B58(unkStruct6 *, HsfObject *); +void fn_1_71FC(unkStruct6 *, Vec *, s16, Vec); +void fn_1_7934(unkStruct6 *, unkStruct8 *, Vec *); +void fn_1_7D60(unkStruct15 *, unkStruct13 *, s16); +void fn_1_806C(ModelData *, Mtx); +void fn_1_8470(unkStruct12 *, unkStruct13 *); +void fn_1_8AC4(Mtx); +void fn_1_8D1C(void); +void fn_1_91A4(Vec *, Vec *, Vec *, float[5]); +float fn_1_927C(float, float, float); +void fn_1_9344(Mtx, Mtx); +float fn_1_93C0(float, float, float); +float fn_1_93D0(float, float, float, float); +unkStruct4 *fn_1_942C(s16, Vec *, Vec *, float, GXColor *); +s16 fn_1_956C(AnimData *, s16, float, s16, s16); +void fn_1_9AB0(s16); +unkStruct5 *fn_1_9B10(s16); +unkStruct4 *fn_1_9B3C(s16, s16); +void fn_1_9B94(s16, m440Func5); +void fn_1_9BCC(s16, u8); +void fn_1_9C04(ModelData *, Mtx); +void fn_1_A1B8(HsfVector2f *, s16, s16, float, float); +void fn_1_A284(HsfVector2f *, HsfVector2f *, s16, float, float); +void fn_1_A328(Vec *, Vec *, Vec *, s16); +void fn_1_A390(ModelData *, Mtx); +void fn_1_AA94(void); // object.c -extern void fn_1_AE08(Process*); -extern void fn_1_AEE4(omObjData*); -extern void fn_1_B17C(omObjData*); -extern void fn_1_B180(omObjData*); -extern void fn_1_B3A4(omObjData*); -extern void fn_1_B884(omObjData*, unkObjStruct*); -extern void fn_1_C1D4(omObjData*, unkObjStruct*); -extern void fn_1_C944(omObjData*, unkObjStruct*); -extern s16 fn_1_CFAC(unkObjStruct*, u8); -extern void fn_1_D24C(unkObjStruct*, f32, f32); -extern void fn_1_D34C(omObjData*, unkObjStruct*); -extern void fn_1_D7F8(omObjData*, unkObjStruct*); -extern void fn_1_E034(omObjData*, unkObjStruct*); -extern u8 fn_1_E8AC(omObjData*, unkObjStruct*); -extern s32 fn_1_ED88(omObjData*, s16, u32); -extern void fn_1_EE78(void); -extern void fn_1_EF50(void); -extern s16 fn_1_F0FC(void); -extern void fn_1_F168(void); -extern void fn_1_F228(void); -extern u16 fn_1_F4C0(unkObjStruct*, u16); -extern void fn_1_F4D4(unkObjStruct*, u16, u16); -extern s32 fn_1_F4FC(s32); +void fn_1_AE08(Process *); +void fn_1_AEE4(omObjData *); +void fn_1_B17C(omObjData *); +void fn_1_B180(omObjData *); +void fn_1_B3A4(omObjData *); +void fn_1_B884(omObjData *, unkObjStruct *); +void fn_1_C1D4(omObjData *, unkObjStruct *); +void fn_1_C944(omObjData *, unkObjStruct *); +s16 fn_1_CFAC(unkObjStruct *, u8); +void fn_1_D24C(unkObjStruct *, float, float); +void fn_1_D34C(omObjData *, unkObjStruct *); +void fn_1_D7F8(omObjData *, unkObjStruct *); +void fn_1_E034(omObjData *, unkObjStruct *); +u8 fn_1_E8AC(omObjData *, unkObjStruct *); +s32 fn_1_ED88(omObjData *, s16, u32); +void fn_1_EE78(void); +void fn_1_EF50(void); +s16 fn_1_F0FC(void); +void fn_1_F168(void); +void fn_1_F228(void); +u16 fn_1_F4C0(unkObjStruct *, u16); +void fn_1_F4D4(unkObjStruct *, u16, u16); +s32 fn_1_F4FC(s32); + +#endif diff --git a/include/REL/m443Dll.h b/include/REL/m443Dll.h new file mode 100644 index 00000000..ba09dc8a --- /dev/null +++ b/include/REL/m443Dll.h @@ -0,0 +1,55 @@ +#ifndef M443DLL_H +#define M443DLL_H + +#include "game/object.h" + +typedef struct M443DllCameraStruct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + float unk_10; + float unk_14; + float unk_18; + Vec unk_1C; + Vec unk_28; + float unk_34; + s32 unk_38; + s32 unk_3C; + float unk_40; + float unk_44; + float unk_48; + float unk_4C; + float unk_50; + Vec unk_54; + char unk_60[0xC]; + float unk_6C; + float unk_70; + char unk74[0x4]; + float unk_78; + float unk_7C; + float unk_80; + char unk84[0x1C]; + u32 unk_A0; +} M443DllCameraStruct; /* size = 0xA4 */ + +void fn_1_3FE8(u32 arg0); +u32 fn_1_3FFC(void); +M443DllCameraStruct *fn_1_40AC(s32 arg0); +M443DllCameraStruct *fn_1_4148(u32 arg0); +M443DllCameraStruct *fn_1_41B0(u32 arg0); +void fn_1_421C(s32 arg0, s32 arg1); +u32 fn_1_42CC(void); +u32 fn_1_42E4(void); +u32 fn_1_42FC(void); +void fn_1_4314(s32 arg0, float arg8); +s32 fn_1_4368(s32 arg0); +void fn_1_43AC(s32 arg0); +void fn_1_43DC(s32 arg0); +float fn_1_488C(float arg8, float arg9, float argA); +void fn_1_4A5C(Process *arg0); +void fn_1_4AB0(void); +void fn_1_5444(Process *arg0); +void fn_1_565C(void); + +#endif diff --git a/include/REL/m444dll.h b/include/REL/m444dll.h index b0165d19..ba2894c5 100644 --- a/include/REL/m444dll.h +++ b/include/REL/m444dll.h @@ -41,6 +41,7 @@ void fn_1_C214(void); void fn_1_D1E0(s16 model); void fn_1_D558(DataListModel *model_list); +void fn_1_D588(DataListModel *model_list); void fn_1_D818(DataListSprite *sprite_list); void fn_1_D950(void); void fn_1_D9C8(void); @@ -70,4 +71,4 @@ extern float lbl_1_bss_288[2]; extern DataListModel lbl_1_data_470[]; -#endif \ No newline at end of file +#endif diff --git a/include/REL/m446Dll.h b/include/REL/m446Dll.h index ed3e8df3..bdbdadb2 100644 --- a/include/REL/m446Dll.h +++ b/include/REL/m446Dll.h @@ -1,7 +1,11 @@ +#ifndef M446DLL_H +#define M446DLL_H + #include "dolphin/types.h" -#include "game/process.h" #include "game/object.h" +#include "game/process.h" + ////// TYPES ////// typedef struct _unkStruct { @@ -14,26 +18,26 @@ typedef struct _unkStruct { s32 unk14; s32 unk18; s32 unk1C; - struct _unkStruct6* unk20; - struct _unkStruct9* unk24; - struct _unkStruct5* unk28; - struct _unkStruct8* unk2C[2]; - struct _unkStruct4* unk34; - struct _unkStruct4* unk38[23]; + struct _unkStruct6 *unk20; + struct _unkStruct9 *unk24; + struct _unkStruct5 *unk28; + struct _unkStruct8 *unk2C[2]; + struct _unkStruct4 *unk34; + struct _unkStruct4 *unk38[23]; s32 unk94; - Process* unk98; + Process *unk98; } unkStruct; typedef struct _unkStruct2 { - void** unk0; + void **unk0; s32 unk4; s32 unk8; } unkStruct2; typedef struct _unkStruct3 { - void* unk0; - struct _unkStruct3* unk4; - struct _unkStruct3* unk8; + void *unk0; + struct _unkStruct3 *unk4; + struct _unkStruct3 *unk8; } unkStruct3; typedef struct _unkStruct4 { @@ -49,9 +53,9 @@ typedef struct _unkStruct4 { Vec unk34; Vec unk40; Vec unk4C; - f32 unk58; - f32 unk5C; - f32 unk60; + float unk58; + float unk5C; + float unk60; s32 unk64; s32 unk68; s32 unk6C; @@ -59,24 +63,24 @@ typedef struct _unkStruct4 { s32 unk74; s32 unk78; s32 unk7C; - f32 unk80; - f32 unk84; - f32 unk88; - f32 unk8C; - f32 unk90; - f32 unk94; + float unk80; + float unk84; + float unk88; + float unk8C; + float unk90; + float unk94; } unkStruct4; typedef struct _unkStruct5 { - unkStruct2* unk0; + unkStruct2 *unk0; Vec unk4; } unkStruct5; typedef struct _unkStruct6 { - struct _unkStruct7* unk0; + struct _unkStruct7 *unk0; s16 unk4; s16 unk6; - unkStruct4* unk8[21]; + unkStruct4 *unk8[21]; s32 unk5C; s32 unk60; s32 unk64; @@ -97,16 +101,16 @@ typedef struct _unkStruct7 { Vec unk20; Vec unk2C; Vec unk38; - f32 unk44; + float unk44; u8 unk48; - f32 unk4C; - f32 unk50; + float unk4C; + float unk50; } unkStruct7; typedef struct _unkStruct8 { s32 unk0; - unkStruct6* unk4; - unkStruct7* unk8; + unkStruct6 *unk4; + unkStruct7 *unk8; s32 unkC; s32 unk10; s32 unk14; @@ -115,13 +119,13 @@ typedef struct _unkStruct8 { s32 unk20; s32 unk24; s32 unk28; - unkStruct4* unk2C[3]; + unkStruct4 *unk2C[3]; s32 unk38; s16 unk3C[2]; s16 unk40[4]; Vec unk48; Vec unk54; - f32 unk60; + float unk60; u8 unk64; u8 unk65; u8 unk66; @@ -138,10 +142,10 @@ typedef struct _unkStruct8 { Vec unk9C; Vec unkA8; s32 unkB4; - f32 unkB8; - f32 unkBC; - f32 unkC0; - f32 unkC4; + float unkB8; + float unkBC; + float unkC0; + float unkC4; s32 unkC8; } unkStruct8; @@ -149,8 +153,8 @@ typedef struct _unkStruct9 { s16 unk0[5]; s16 unkA[2]; s16 unkE; - f32 unk10; - f32 unk14; + float unk10; + float unk14; s32 unk18; s32 unk1C; s32 unk20; @@ -166,201 +170,141 @@ typedef struct _unkStruct10 { } unkStruct10; typedef void (*m446Func)(s32); -typedef void (*m446Func1)(unkStruct*); -typedef void (*m446Func4)(unkStruct4*); -typedef void (*m446Func8)(unkStruct8*); - -////// BSS ////// -// stage.c -extern unkStruct3* lbl_1_bss_A0; -// cursor.c -extern unkStruct3* lbl_1_bss_98; -// camera.c -extern Vec lbl_1_bss_8C; -extern Vec lbl_1_bss_80; -extern f32 lbl_1_bss_7C; -extern Vec lbl_1_bss_70; -extern Vec lbl_1_bss_64; -extern f32 lbl_1_bss_60; -extern Vec lbl_1_bss_54; -extern Vec lbl_1_bss_48; -extern f32 lbl_1_bss_44; -extern f32 lbl_1_bss_40; -extern f32 lbl_1_bss_3C; -extern s32 lbl_1_bss_38; -// player.c -extern unkStruct3* lbl_1_bss_30; -// table.c -extern unkStruct3* lbl_1_bss_28; -// deck.c -extern u32 lbl_1_bss_20; -// card.c -extern unkStruct3* lbl_1_bss_18; -// main.c -extern s32 lbl_1_bss_14; -extern s32 lbl_1_bss_10; -extern Process* lbl_1_bss_C; -extern omObjData* lbl_1_bss_8; -extern s32 lbl_1_bss_4; -extern unkStruct* lbl_1_bss_0; - -////// DATA ////// -// main.c -extern Vec lbl_1_data_0; -extern Vec lbl_1_data_C; -extern f32 lbl_1_data_18; -extern Vec lbl_1_data_1C; -extern Vec lbl_1_data_28; -extern f32 lbl_1_data_34; -extern Vec lbl_1_data_38[2]; -extern Vec lbl_1_data_50[2]; -extern f32 lbl_1_data_68[2]; -extern s32 lbl_1_data_70[2][2]; -extern m446Func1 lbl_1_data_A0[5]; -// card.c -extern m446Func4 lbl_1_data_150[3]; -// player.c -extern s32 lbl_1_data_228[9]; -extern s32 lbl_1_data_24C[9][4]; -extern m446Func8 lbl_1_data_2DC[5]; -// camera.c -extern Vec lbl_1_data_370; -// cursor.c -extern s32 lbl_1_data_3C8[9]; -// stage.c -extern unkStruct10 lbl_1_data_460[3]; -extern Vec lbl_1_data_424[5]; -extern Vec lbl_1_data_4B4[3]; +typedef void (*m446Func1)(unkStruct *); +typedef void (*m446Func4)(unkStruct4 *); +typedef void (*m446Func8)(unkStruct8 *); ////// PROTOTYPES ////// // main.c -extern void ObjectSetup(void); -extern void fn_1_13C(omObjData*); -extern unkStruct* m446FlowCreate(void); -extern void fn_1_3FC(unkStruct*); -extern void fn_1_4B4(unkStruct*); -extern void fn_1_53C(unkStruct*); -extern void fn_1_958(unkStruct*); -extern void fn_1_B78(unkStruct*); -extern void fn_1_C0C(unkStruct*); -extern void fn_1_CA0(unkStruct*); -extern s32 fn_1_17FC(unkStruct*); -extern void fn_1_183C(unkStruct*); -extern void fn_1_1874(unkStruct*); -extern void fn_1_18B0(unkStruct*); -extern void fn_1_19D4(void); +void ObjectSetup(void); +void fn_1_13C(omObjData *); +unkStruct *m446FlowCreate(void); +void fn_1_3FC(unkStruct *); +void fn_1_4B4(unkStruct *); +void fn_1_53C(unkStruct *); +void fn_1_958(unkStruct *); +void fn_1_B78(unkStruct *); +void fn_1_C0C(unkStruct *); +void fn_1_CA0(unkStruct *); +s32 fn_1_17FC(unkStruct *); +void fn_1_183C(unkStruct *); +void fn_1_1874(unkStruct *); +void fn_1_18B0(unkStruct *); +void fn_1_19D4(void); // card.c -extern unkStruct2* fn_1_1C64(s32); -extern void fn_1_1CF8(unkStruct2*); -extern s32 fn_1_1D30(unkStruct2*, void*); -extern s32 fn_1_1D6C(unkStruct2*, unkStruct4**); -extern s32 fn_1_1DA8(unkStruct2*, void**); -extern BOOL fn_1_1DDC(unkStruct2*); -extern s32 fn_1_1DEC(unkStruct2*); -extern unkStruct3* fn_1_1DF4(void*); -extern void fn_1_1E5C(unkStruct3*); -extern void fn_1_1E84(unkStruct3**); -extern void fn_1_1EC8(unkStruct3*, unkStruct3*); -extern void fn_1_1F04(unkStruct3*); -extern void fn_1_1F38(u8*, u8*, s32); -extern void fn_1_1F84(u8*, s8, s32); -extern void fn_1_1FC0(u8*, s32); -extern s32 fn_1_1FFC(s8*, s8*, s32); -extern s32 fn_1_2064(void); -extern void fn_1_207C(void); -extern void fn_1_20D4(void); -extern unkStruct4* m446CardCreate(s32); -extern void fn_1_2688(unkStruct4*); -extern void fn_1_272C(unkStruct4*); -extern void fn_1_2794(unkStruct4*); -extern void fn_1_27FC(unkStruct4*, Vec*, s32); -extern void fn_1_2890(unkStruct4*, Vec*, s32, s32); -extern void fn_1_2928(unkStruct4*, Vec*, s32); -extern void fn_1_29B4(unkStruct4*, f32, s32); -extern void fn_1_2A1C(unkStruct4*); -extern void fn_1_2A58(unkStruct4*); -extern void fn_1_2A94(unkStruct4*); -extern void fn_1_2AA8(unkStruct4*); -extern void fn_1_2D94(unkStruct4*); -extern void fn_1_2DA8(unkStruct4*); -extern void fn_1_2EC0(unkStruct4*, s32); -extern void fn_1_2F64(unkStruct4*); +unkStruct2 *fn_1_1C64(s32); +void fn_1_1CF8(unkStruct2 *); +s32 fn_1_1D30(unkStruct2 *, void *); +s32 fn_1_1D6C(unkStruct2 *, unkStruct4 **); +s32 fn_1_1DA8(unkStruct2 *, void **); +BOOL fn_1_1DDC(unkStruct2 *); +s32 fn_1_1DEC(unkStruct2 *); +unkStruct3 *fn_1_1DF4(void *); +void fn_1_1E5C(unkStruct3 *); +void fn_1_1E84(unkStruct3 **); +void fn_1_1EC8(unkStruct3 *, unkStruct3 *); +void fn_1_1F04(unkStruct3 *); +void fn_1_1F38(u8 *, u8 *, s32); +void fn_1_1F84(u8 *, s8, s32); +void fn_1_1FC0(u8 *, s32); +s32 fn_1_1FFC(s8 *, s8 *, s32); +s32 fn_1_2064(void); +void fn_1_207C(void); +void fn_1_20D4(void); +unkStruct4 *m446CardCreate(s32); +void fn_1_2688(unkStruct4 *); +void fn_1_272C(unkStruct4 *); +void fn_1_2794(unkStruct4 *); +void fn_1_27FC(unkStruct4 *, Vec *, s32); +void fn_1_2890(unkStruct4 *, Vec *, s32, s32); +void fn_1_2928(unkStruct4 *, Vec *, s32); +void fn_1_29B4(unkStruct4 *, float, s32); +void fn_1_2A1C(unkStruct4 *); +void fn_1_2A58(unkStruct4 *); +void fn_1_2A94(unkStruct4 *); +void fn_1_2AA8(unkStruct4 *); +void fn_1_2D94(unkStruct4 *); +void fn_1_2DA8(unkStruct4 *); +void fn_1_2EC0(unkStruct4 *, s32); +void fn_1_2F64(unkStruct4 *); // deck.c -extern unkStruct5* fn_1_3064(void); -extern void fn_1_3180(unkStruct2**); -extern void fn_1_31D8(unkStruct2**, unkStruct4**, s32*, s32); -extern void fn_1_34A0(unkStruct5*, unkStruct4**, s32, s32); -extern s32 m446DeckPushCard(unkStruct5*, unkStruct4*, s32); -extern s32 m446DeckPopCard(unkStruct2**, unkStruct4**); -extern void fn_1_38B0(unkStruct2**); -extern s32 fn_1_38F0(void); +unkStruct5 *fn_1_3064(void); +void fn_1_3180(unkStruct2 **); +void fn_1_31D8(unkStruct2 **, unkStruct4 **, s32 *, s32); +void fn_1_34A0(unkStruct5 *, unkStruct4 **, s32, s32); +s32 m446DeckPushCard(unkStruct5 *, unkStruct4 *, s32); +s32 m446DeckPopCard(unkStruct2 **, unkStruct4 **); +void fn_1_38B0(unkStruct2 **); +s32 fn_1_38F0(void); // table.c -extern s32 fn_1_3924(void); -extern void fn_1_393C(void); -extern void fn_1_3994(void); -extern unkStruct6* fn_1_39D0(void); -extern void fn_1_3B4C(unkStruct6*); -extern s32 fn_1_3BF0(unkStruct6*, unkStruct4*, s32); -extern s32 fn_1_3EB4(unkStruct6*, unkStruct4*, s32); -extern s32 fn_1_3FD0(unkStruct6*, s32, unkStruct4**); -extern void fn_1_4000(unkStruct6*, s32); -extern s32 fn_1_4088(unkStruct6*, u8, u8, s32, unkStruct4**, s32); -extern void fn_1_46AC(unkStruct6*); -extern void fn_1_46D0(unkStruct6*); -extern s32 fn_1_4720(unkStruct6*, s32); -extern void fn_1_4798(unkStruct6*); +s32 fn_1_3924(void); +void fn_1_393C(void); +void fn_1_3994(void); +unkStruct6 *fn_1_39D0(void); +void fn_1_3B4C(unkStruct6 *); +s32 fn_1_3BF0(unkStruct6 *, unkStruct4 *, s32); +s32 fn_1_3EB4(unkStruct6 *, unkStruct4 *, s32); +s32 fn_1_3FD0(unkStruct6 *, s32, unkStruct4 **); +void fn_1_4000(unkStruct6 *, s32); +s32 fn_1_4088(unkStruct6 *, u8, u8, s32, unkStruct4 **, s32); +void fn_1_46AC(unkStruct6 *); +void fn_1_46D0(unkStruct6 *); +s32 fn_1_4720(unkStruct6 *, s32); +void fn_1_4798(unkStruct6 *); // player.c -extern s32 fn_1_480C(void); -extern void fn_1_4824(void); -extern void fn_1_487C(void); -extern unkStruct8* m446PlayerCreate(s32, unkStruct6*); -extern void fn_1_509C(unkStruct8*); -extern s32 m446PlayerAppendCard(unkStruct8*, unkStruct4*, s32); -extern s32 m446PlayerRemoveCard(unkStruct8*, unkStruct4*, s32); -extern s32 fn_1_5648(unkStruct8*, s32, unkStruct4**); -extern s32 fn_1_5678(unkStruct8*, unkStruct4**, s32); -extern void fn_1_5B34(unkStruct8*); -extern void fn_1_5B48(unkStruct8*); -extern void fn_1_5C10(unkStruct8*); -extern void fn_1_5C24(unkStruct8*); -extern void fn_1_5CEC(unkStruct8*); -extern void fn_1_5D00(unkStruct8*); -extern void fn_1_5E54(unkStruct8*, s32); -extern void fn_1_6074(unkStruct8*); -extern void fn_1_6264(unkStruct8*, Vec*, s32); -extern void fn_1_62F0(unkStruct8*, Vec*, s32); -extern void fn_1_637C(unkStruct8*, s32); -extern void fn_1_64BC(unkStruct8*, s32, s32); -extern void fn_1_6578(unkStruct8*); -extern void fn_1_6620(unkStruct8*); +s32 fn_1_480C(void); +void fn_1_4824(void); +void fn_1_487C(void); +unkStruct8 *m446PlayerCreate(s32, unkStruct6 *); +void fn_1_509C(unkStruct8 *); +s32 m446PlayerAppendCard(unkStruct8 *, unkStruct4 *, s32); +s32 m446PlayerRemoveCard(unkStruct8 *, unkStruct4 *, s32); +s32 fn_1_5648(unkStruct8 *, s32, unkStruct4 **); +s32 fn_1_5678(unkStruct8 *, unkStruct4 **, s32); +void fn_1_5B34(unkStruct8 *); +void fn_1_5B48(unkStruct8 *); +void fn_1_5C10(unkStruct8 *); +void fn_1_5C24(unkStruct8 *); +void fn_1_5CEC(unkStruct8 *); +void fn_1_5D00(unkStruct8 *); +void fn_1_5E54(unkStruct8 *, s32); +void fn_1_6074(unkStruct8 *); +void fn_1_6264(unkStruct8 *, Vec *, s32); +void fn_1_62F0(unkStruct8 *, Vec *, s32); +void fn_1_637C(unkStruct8 *, s32); +void fn_1_64BC(unkStruct8 *, s32, s32); +void fn_1_6578(unkStruct8 *); +void fn_1_6620(unkStruct8 *); // camera.c -extern s32 fn_1_6778(void); -extern void fn_1_68D8(void); -extern void fn_1_68DC(void); -extern void fn_1_6EA0(Vec*); -extern void fn_1_6EC4(Vec*); -extern void fn_1_6EE8(f32); -extern void fn_1_6EF8(Vec*, Vec*, f32*, s32); -extern s32 fn_1_708C(void); -extern void fn_1_709C(void); +s32 fn_1_6778(void); +void fn_1_68D8(void); +void fn_1_68DC(void); +void fn_1_6EA0(Vec *); +void fn_1_6EC4(Vec *); +void fn_1_6EE8(float); +void fn_1_6EF8(Vec *, Vec *, float *, s32); +s32 fn_1_708C(void); +void fn_1_709C(void); // cursor.c -extern s32 fn_1_72E0(void); -extern void fn_1_72F8(void); -extern void fn_1_7350(void); -extern unkStruct7* m446CursorCreate(s32); -extern void fn_1_76E8(unkStruct7*); -extern void fn_1_77C8(unkStruct7*, u8); -extern void fn_1_7884(unkStruct7*); -extern void fn_1_7908(unkStruct7*, Vec*, s32); -extern void fn_1_799C(unkStruct7*); -extern void fn_1_7A38(unkStruct7*); -extern void fn_1_7AB4(unkStruct7*); +s32 fn_1_72E0(void); +void fn_1_72F8(void); +void fn_1_7350(void); +unkStruct7 *m446CursorCreate(s32); +void fn_1_76E8(unkStruct7 *); +void fn_1_77C8(unkStruct7 *, u8); +void fn_1_7884(unkStruct7 *); +void fn_1_7908(unkStruct7 *, Vec *, s32); +void fn_1_799C(unkStruct7 *); +void fn_1_7A38(unkStruct7 *); +void fn_1_7AB4(unkStruct7 *); // stage.c -extern s32 fn_1_7BF0(void); -extern void fn_1_7C08(void); -extern void fn_1_7C60(void); -extern unkStruct9* m446StageCreate(void); -extern void fn_1_83F0(unkStruct9*); -extern void fn_1_84AC(unkStruct9*); -extern void fn_1_852C(unkStruct9*); -extern void fn_1_860C(unkStruct9*); +s32 fn_1_7BF0(void); +void fn_1_7C08(void); +void fn_1_7C60(void); +unkStruct9 *m446StageCreate(void); +void fn_1_83F0(unkStruct9 *); +void fn_1_84AC(unkStruct9 *); +void fn_1_852C(unkStruct9 *); +void fn_1_860C(unkStruct9 *); + +#endif diff --git a/include/REL/m447dll.h b/include/REL/m447dll.h new file mode 100755 index 00000000..ad069429 --- /dev/null +++ b/include/REL/m447dll.h @@ -0,0 +1,158 @@ +#ifndef M447DLL_H +#define M447DLL_H + +#include "game/animdata.h" +#include "game/process.h" + +typedef struct { + /* 0x00 */ Process* unk00; + /* 0x04 */ Process* unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s16 unk30; + /* 0x32 */ s16 unk32; + /* 0x34 */ s16 unk34[25]; + /* 0x66 */ char unk66[0xA]; + /* 0x70 */ s32 unk70; +} UnkM447Struct_00; // Size 0x74 + +typedef struct { + /* 0x00 */ s16 unk00[22]; + /* 0x2C */ s16 unk2C[6]; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ AnimData* unk50; + /* 0x54 */ s32 unk54[5]; + /* 0x68 */ s32 unk68[5]; + /* 0x7C */ Process* unk7C; +} UnkM447Struct_06; // Size 0x80 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ Vec unk10; + /* 0x1C */ Vec unk1C; + /* 0x28 */ Vec unk28; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ float unk50; + /* 0x54 */ float unk54; + /* 0x58 */ s16 unk58[23]; + /* 0x86 */ char unk86[2]; + /* 0x88 */ float unk88; + /* 0x8C */ float unk8C; + /* 0x90 */ float unk90; + /* 0x94 */ float unk94; + /* 0x98 */ float unk98; + /* 0x9C */ float unk9C; + /* 0xA0 */ AnimData* unkA0; + /* 0xA4 */ Process* unkA4; + /* 0xA8 */ Vec unkA8; + /* 0xB4 */ float unkB4; + /* 0xB8 */ float unkB8; + /* 0xBC */ float unkBC; + /* 0xC0 */ float unkC0; + /* 0xC4 */ float unkC4; + /* 0xC8 */ float unkC8; +} UnkM447Struct_01; // Size 0xCC + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ char unk02[2]; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ u8 unk18; + /* 0x19 */ u8 unk19; + /* 0x1A */ u8 unk1A; + /* 0x1B */ u8 unk1B; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s16 unk20; + /* 0x22 */ char unk22[2]; + /* 0x24 */ s32 unk24; + /* 0x28 */ Vec unk28; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ float unk50; + /* 0x54 */ char unk54[0xC]; + /* 0x60 */ s32 unk60; + /* 0x64 */ s32 unk64; + /* 0x68 */ s16 unk68; + /* 0x6A */ s16 unk6A[9]; + /* 0x7C */ s16 unk7C[2]; + /* 0x80 */ char unk80[0x24]; + /* 0xA4 */ s32 unkA4; + /* 0xA8 */ UnkM447Struct_01* unkA8; + /* 0xAC */ Process* unkAC; + /* 0xB0 */ Process* unkB0; + /* 0xB4 */ Process* unkB4; +} UnkM447Struct_04; // Size 0xB8 + +UnkM447Struct_06* fn_1_1D90(void); +void fn_1_1E70(UnkM447Struct_06* arg0); +void fn_1_1EB0(UnkM447Struct_06* arg0, s32 arg1); +BOOL fn_1_1EC0(UnkM447Struct_06* arg0); +void fn_1_1ED4(s32 arg0, Vec* arg1); +void fn_1_1F00(UnkM447Struct_06* arg0, s32 arg1); +s32 fn_1_1F9C(UnkM447Struct_06* arg0); +void fn_1_1FEC(UnkM447Struct_06* arg0, s32 arg1); + +s32 fn_1_3130(void); +void fn_1_32E0(void); +void fn_1_330C(const Vec* arg0, s32 arg1); +void fn_1_33C8(const Vec* arg0, s32 arg1); +void fn_1_3484(float arg0, s32 arg1); +void fn_1_351C(Vec* arg0); +void fn_1_3540(Vec* arg0); + +void fn_1_3F84(void); +UnkM447Struct_04* fn_1_3FC4(s32 arg0); +void fn_1_43CC(UnkM447Struct_04* arg0, s32 arg1); +void fn_1_7A6C(UnkM447Struct_04* arg0); +void fn_1_7AA4(UnkM447Struct_04* arg0, s32 arg1, s32 arg2); + +void fn_1_7B54(Vec* arg0, Vec* arg1, s32 arg2, float arg3); +s32 fn_1_80BC(float* arg0, float* arg1, float* arg2); +s32 fn_1_879C(float* arg0, float* arg1, s32 arg2, s32 arg3); + +UnkM447Struct_01* fn_1_8DF8(void); +void fn_1_8FF4(UnkM447Struct_01* arg0, s32 arg1); +void fn_1_9004(UnkM447Struct_01* arg0, s32 arg1, s32 arg2); +void fn_1_90FC(s32 arg0); +void fn_1_A230(s32 arg0); +s32 fn_1_A240(void); + +extern UnkM447Struct_06* lbl_1_bss_10; +extern UnkM447Struct_00* lbl_1_bss_8; +extern Process* lbl_1_bss_4; +extern UnkM447Struct_04* lbl_1_bss_98[2]; +extern const float lbl_1_rodata_648[20]; +extern UnkM447Struct_01* lbl_1_bss_A4[5]; + +#endif diff --git a/include/REL/m453Dll.h b/include/REL/m453Dll.h new file mode 100644 index 00000000..661b2e99 --- /dev/null +++ b/include/REL/m453Dll.h @@ -0,0 +1,22 @@ +#ifndef M453DLL_H +#define M453DLL_H + +#include "game/object.h" + +s32 fn_1_639C(void); +void fn_1_64E8(Process *arg0); +void fn_1_6748(void); +void fn_1_7C0C(float arg8); +void fn_1_7C2C(s32 arg0); +void fn_1_7C3C(void); +float fn_1_7F54(float arg8, float arg9); +float fn_1_80B0(Vec *arg0, float arg8); +s32 fn_1_8240(void); +s32 fn_1_82AC(Vec *arg0); +s32 fn_1_844C(Vec *arg0); +void fn_1_864C(s32 arg0); +s32 fn_1_867C(Vec *arg0, Vec *arg1); +void fn_1_8F48(Process *arg0, s16 arg1); +void fn_1_924C(s32 arg0); + +#endif diff --git a/include/REL/m455Dll.h b/include/REL/m455Dll.h new file mode 100644 index 00000000..af47ff3c --- /dev/null +++ b/include/REL/m455Dll.h @@ -0,0 +1,12 @@ +#ifndef M455DLL_H +#define M455DLL_H + +#include "game/object.h" + +void fn_1_32C4(Process *objman); +void fn_1_340C(void); +s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3); +float fn_1_687C(void); +s32 fn_1_6CB0(Vec *arg0, float arg1); + +#endif diff --git a/include/REL/m456Dll.h b/include/REL/m456Dll.h new file mode 100644 index 00000000..3b566223 --- /dev/null +++ b/include/REL/m456Dll.h @@ -0,0 +1,14 @@ +#ifndef M456DLL_H +#define M456DLL_H + +#include "game/object.h" + +void fn_1_2DF4(Process *objman); +void fn_1_2F3C(void); +s32 fn_1_61C8(Vec *arg0, float arg1, float arg2, s32 arg3); +float fn_1_63AC(void); +s32 fn_1_67E0(Vec *arg0, float arg1); +s32 fn_1_74F8(Vec *pos, float scale); +void fn_1_7F78(void); + +#endif diff --git a/include/REL/m460Dll.h b/include/REL/m460Dll.h new file mode 100644 index 00000000..40ca863d --- /dev/null +++ b/include/REL/m460Dll.h @@ -0,0 +1,64 @@ +#ifndef M460DLL_H +#define M460DLL_H + +#include "game/object.h" + +typedef struct UnkM460DllStruct { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; +} UnkM460DllStruct; + +typedef struct M460DllCameraStruct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + float unk_10; + float unk_14; + float unk_18; + Vec unk_1C; + Vec unk_28; + float unk_34; + s32 unk_38; + s32 unk_3C; + float unk_40; + UnkM460DllStruct unk_44; + char unk54[0x30]; + float unk_84; + char unk88[0x4]; + float unk_8C; + float unk_90; + s32 unk_94; + char unk98[0xC]; +} M460DllCameraStruct; /* size = 0xA4 */ // same as M443DllCameraStruct + +void fn_1_3E68(u32 arg0); +M460DllCameraStruct *fn_1_3E90(s32 arg0); +M460DllCameraStruct *fn_1_3F2C(s32 arg0); +u32 fn_1_414C(void); +u32 fn_1_4164(void); +s32 fn_1_419C(void); +void fn_1_41B4(s32 arg0, s32 arg1, s32 arg2); +void fn_1_41F4(s32 arg0); +void fn_1_4224(s32 arg0); +void fn_1_42BC(u32 arg0); +s32 fn_1_42F0(void); +void fn_1_4308(void); +s32 fn_1_4324(void); +void fn_1_433C(void); +s32 fn_1_4358(void); +u32 fn_1_4370(void); +float fn_1_47D0(float arg8, float arg9, float argA); + +void fn_1_49A0(Process *process); +void fn_1_4BE4(void); +void fn_1_67B4(Process *process); +void fn_1_6814(void); +void fn_1_8BA0(float arg8); +void fn_1_8CAC(Process *process, s16 arg1); +void fn_1_8F38(void); +void fn_1_8FAC(s32 arg0); + +#endif diff --git a/include/REL/mentDll.h b/include/REL/mentDll.h new file mode 100644 index 00000000..fe6e9e49 --- /dev/null +++ b/include/REL/mentDll.h @@ -0,0 +1,51 @@ +#ifndef MENTDLL_H +#define MENTDLL_H + +#include "game/object.h" +extern s32 lbl_1_data_0[][4]; + +// the prev and current struct member might be vice versa +typedef struct MentDllUnkBss64Struct { + /* 0x00 */ void (*func)(void); + /* 0x04 */ void (*func2)(float arg9); + /* 0x08 */ Vec center; + /* 0x14 */ Vec prevCenter; + /* 0x20 */ Vec rot; + /* 0x2C */ Vec prevRot; + /* 0x38 */ float zoom; + /* 0x3C */ float prevZoom; + /* 0x40 */ s32 unk_40; +} MentDllUnkBss64Struct; /* size = 0x44 */ +extern MentDllUnkBss64Struct lbl_1_bss_64; + +float fn_1_20C(float arg8, float arg9, float argA, float argB); +float fn_1_234(float arg8, float arg9, float argA); +float fn_1_254(float arg8, float arg9, float argA, float argB); +float fn_1_32C(float arg8, float arg9, float argA, float argB); +float fn_1_3F4(float arg8, float arg9, float argA, float argB); +void fn_1_4B0(s32 arg0); +void fn_1_4D8(void); +void fn_1_50C(void); +void fn_1_5E8(s32 arg0); +void fn_1_6D0(void); +s32 fn_1_1434(s32 arg0, s32 arg1, s32 arg2); +void fn_1_16AC(s32 arg0); +void fn_1_1968(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_1A5C(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_1DD8(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_2154(s32 arg0); +void fn_1_2318(s32 arg0); +void fn_1_2808(void (*arg0)(void)); +void fn_1_2844(Process *arg0, void (*arg1)(void)); +void fn_1_29A0(MentDllUnkBss64Struct *arg0); +void fn_1_4138(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, float arg8, float arg9, float argA); +void fn_1_5150(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, float arg8, float arg9, float argA); +void fn_1_5818(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_59A0(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_5C08(omObjData *arg0); +void fn_1_5CDC(omObjData *arg0, s32 arg1, s32 arg2); +void fn_1_5D38(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4); +void fn_1_6534(s32, s32, float, float); +void fn_1_658C(Process *arg0); + +#endif diff --git a/include/REL/mgmodedll.h b/include/REL/mgmodedll.h index 31959a41..fdfe352e 100644 --- a/include/REL/mgmodedll.h +++ b/include/REL/mgmodedll.h @@ -7,65 +7,87 @@ #include "game/object.h" #include "game/objsub.h" +#include "game/pad.h" #include "game/sprite.h" #include "game/window.h" -#include "game/pad.h" typedef struct datalist_model { - s32 datanum; - u32 attr; - s16 type; - s16 link; - s16 mot_link; - Vec pos; - Vec rot; - Vec scale; -} DataListModel; + s32 datanum; + u32 attr; + s16 type; + s16 link; + s16 mot_link; + Vec pos; + Vec rot; + Vec scale; +} DataListModel; // Size 0x34 typedef struct datalist_sprite { - u32 datanum; - s16 attr; - s16 prio; - float x; - float y; - GXColor color; -} DataListSprite; + u32 datanum; + s16 attr; + s16 prio; + float x; + float y; + GXColor color; +} DataListSprite; // Size 0x14 typedef struct struct_bss8_24 { - u8 unk0[0x5C]; - s32 unk5C; - s32 unk60; - s32 unk64; - s32 unk68; - s32 unk6C; - u8 unk70[0x20]; -} StructBss8_24; + omObjData *unk0; + void (*unk4)(omObjData *, ...); + u8 unk8[0x50]; + s32 unk58; + s32 unk5C; + s32 unk60; + s32 unk64; + s32 unk68; + s32 unk6C; + s32 unk70[4]; + s32 unk80[4]; +} StructBss8_24; // Size 0x90 typedef struct struct_bss8 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s32 unk20; - StructBss8_24 unk24[4]; -} StructBss8; + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + StructBss8_24 unk24[4]; +} StructBss8; // Size 0x264 extern s16 lbl_1_bss_2C80[13]; extern s16 lbl_1_bss_2C66[13]; extern s16 lbl_1_bss_2C2C[29]; +extern s16 lbl_1_bss_2C24[4]; +extern s16 lbl_1_bss_2C1C[4]; +extern s16 lbl_1_bss_2C14[4]; +extern s16 lbl_1_bss_2BC4[4][10]; + +extern s16 lbl_1_bss_264C[10][70]; +extern s16 lbl_1_bss_2638[10]; extern s16 lbl_1_bss_20C0[10][70]; extern s16 lbl_1_bss_20AC[10]; +extern s16 lbl_1_bss_20AA; + +extern Process *objman; + +extern s16 lbl_1_bss_2E4; + +extern s16 lbl_1_bss_2A6; +extern s16 lbl_1_bss_2A4; + extern StructBss8 lbl_1_bss_8; +extern s16 mgModeEvtNo; extern s16 lbl_1_data_A2[]; extern DataListModel lbl_1_data_490[]; extern DataListSprite lbl_1_data_768[]; s32 fn_1_6D28(void); +s32 fn_1_C0C8(s32 arg0); void fn_1_D8D0(void); s32 fn_1_E72C(void); s32 fn_1_13418(void); @@ -75,17 +97,19 @@ void fn_1_18DF8(Process *arg0, StructBss8 *arg1); void fn_1_19018(void); s32 fn_1_194C8(s32 arg0); -void fn_1_25584(s16 arg0); s32 fn_1_2530C(s32 arg0, s32 arg1, s32 arg2); -void fn_1_25838(s16 arg0, u32 arg1, s32 arg2, s32 arg3); -s32 fn_1_2592C(u32 arg0, s32 arg1, s32 arg2); -s32 fn_1_25CA8(u32 arg0); -void fn_1_25E74(s16 arg0); +void fn_1_25584(s32 arg0); +void fn_1_25838(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_2592C(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_25CA8(s32 arg0); +void fn_1_25E74(s32 arg0); void fn_1_267E8(DataListModel *model_list); void fn_1_26A78(DataListSprite *sprite_list); void fn_1_26C28(void); - +void fn_1_27080(void); +s16 fn_1_271B4(s16 mgNo, s16 x, s16 y); +void fn_1_27418(void); void fn_1_279FC(s32 coinSkipF); -#endif \ No newline at end of file +#endif diff --git a/include/REL/modeltestDll.h b/include/REL/modeltestDll.h index d0b4ccc3..d4afecc4 100644 --- a/include/REL/modeltestDll.h +++ b/include/REL/modeltestDll.h @@ -2,46 +2,45 @@ #define REL_MODELTEST_H #include "game/hsfdraw.h" -#include "game/objsub.h" #include "game/object.h" +#include "game/objsub.h" + +#include "ext_math.h" // -------------------------------------------------------------------------- // #define US_PER_60TH_SEC (1000000.0f / 60.0f) #define US_TO_60TH_SEC(us) ((us) / US_PER_60TH_SEC) -#define FB_SIZE(width, height) width * height * 2 -#define ABS(x) ((x) < 0 ? -(x) : (x)) +#define FB_SIZE(width, height) width *height * 2 // -------------------------------------------------------------------------- // -typedef struct -{ +typedef struct { s16 unk0[7]; } HuUnkF9C2; -typedef struct -{ - Point3d pos; // 0000 - Point3d rot; // 000C - Point3d scale; // 0018 +typedef struct { + Vec pos; // 0000 + Vec rot; // 000C + Vec scale; // 0018 s32 unk24; s32 unk28; s32 unk2C; - HsfObject * obj; // 0030 + HsfObject *obj; // 0030 } HuObjUnk; -extern Point3d CRot; -extern Point3d Center; -extern f32 CZoom; +extern Vec CRot; +extern Vec Center; +extern float CZoom; void fn_1_29C(); -void fn_1_28F8(Point3d * arg0, Point3d * arg1); -void fn_1_37DC(omObjData*); -void fn_1_439C(omObjData*); +void fn_1_28F8(Vec *arg0, Vec *arg1); +void fn_1_37DC(omObjData *); +void fn_1_439C(omObjData *); void fn_1_46F0(); -typedef void (omObjFunc2)(struct om_obj_data *); +typedef void(omObjFunc2)(struct om_obj_data *); omObjFunc2 fn_1_F9C; #endif -// -------------------------------------------------------------------------- // \ No newline at end of file +// -------------------------------------------------------------------------- // diff --git a/include/REL/modeseldll.h b/include/REL/modeseldll.h index db80185b..4100ea20 100644 --- a/include/REL/modeseldll.h +++ b/include/REL/modeseldll.h @@ -27,6 +27,8 @@ typedef struct datalist_sprite { GXColor color; } DataListSprite; +// void fn_1_1EC0(s16 view); + s32 fn_1_2490(void); s32 fn_1_37DC(void); @@ -42,4 +44,4 @@ extern s16 lbl_1_data_100; extern DataListModel lbl_1_data_428[]; extern DataListSprite lbl_1_data_93C[]; -#endif \ No newline at end of file +#endif diff --git a/include/REL/mpexDll.h b/include/REL/mpexDll.h new file mode 100644 index 00000000..58c6910d --- /dev/null +++ b/include/REL/mpexDll.h @@ -0,0 +1,51 @@ +#ifndef MPEXDLL_H +#define MPEXDLL_H + +#include "game/object.h" + +typedef void (*MpexDllUnkFunc)(void); + +typedef struct MpexDllUnkStruct { + /* 0x00 */ MpexDllUnkFunc unk_00; + /* 0x04 */ void *unk_04; // func, unknown args + /* 0x08 */ Vec unk_08; + /* 0x14 */ Vec unk_14; + /* 0x20 */ Vec unk_20; + /* 0x2C */ Vec unk_2C; + /* 0x38 */ float unk_38; + /* 0x3C */ float unk_3C; + /* 0x40 */ s32 unk_40; +} MpexDllUnkStruct; /* size = 0x44 */ + +void fn_1_374(void); +void fn_1_298(void); +void fn_1_910(MpexDllUnkFunc arg0); +void fn_1_25C4(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_28E0(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4); +Process *fn_1_3044(Process *arg0); + +void fn_1_1264C(Process *arg0); +s32 fn_1_140B0(s32 arg0, s32 arg1); +void fn_1_148BC(s32 arg0); +void fn_1_148E4(s32 arg0); +void fn_1_1A5A4(s32 arg0); +float fn_1_1B714(float arg8, float arg9, float argA, float argB); +void fn_1_1B810(void); +void fn_1_1B834(void); +void fn_1_1B9F4(void); +void fn_1_1BA78(u32 arg0, s32 arg1, s32 arg2); +void fn_1_1BB4C(u32 arg0, s32 arg1); +s32 fn_1_1BBA4(s32 arg0); +void fn_1_1BD00(u32 arg0, s32 arg1); +void fn_1_1BF1C(u32 arg0); +void fn_1_1C120(void); + +void fn_1_1B7D0(s32 arg0); + +s32 fn_1_1D02C(s32 arg0); + +extern u8 lbl_1_bss_6AC; +extern s32 lbl_1_bss_63C[0x1C]; +extern MpexDllUnkStruct lbl_1_bss_64; + +#endif diff --git a/include/REL/mstory2Dll.h b/include/REL/mstory2Dll.h new file mode 100644 index 00000000..7998a490 --- /dev/null +++ b/include/REL/mstory2Dll.h @@ -0,0 +1,114 @@ +#ifndef MSTORY2DLL_H +#define MSTORY2DLL_H + +#include "game/object.h" +#include "game/process.h" + +#include "dolphin/types.h" + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ Vec unk08; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss24; // Size 0x44 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ char unk1C[0x18]; +} StructFn357C; // Size 0x34 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ void (*unk04)(omObjData*, ...); + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ char unk10[0x18]; +} StructBss16C; // Size 0x28 + +// main.c +float fn_1_864(float arg0, float arg1, float arg2, float arg3); +float fn_1_88C(float arg0, float arg1, float arg2); +float fn_1_8AC(float arg0, float arg1, float arg2, float arg3); +float fn_1_984(float arg0, float arg1, float arg2, float arg3); +float fn_1_A4C(float arg0, float arg1, float arg2, float arg3); +float fn_1_B08(float arg0, float arg1, float arg2, float arg3); +void fn_1_BC8(void); +void fn_1_BE8(s32 arg0); +void fn_1_C30(void); +s32 fn_1_185C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_1A94(s32 arg0); +void fn_1_1AFC(s32 arg0, s32 arg1); +BOOL fn_1_1BA8(s32 arg0, s32 arg1); +BOOL fn_1_1C64(s32 arg0); +void fn_1_1D18(s32 arg0, s32 arg1); +void fn_1_1D4C(s32 arg0, s32 arg1, s32 arg2); +void fn_1_1DFC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_2264(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2750(void (*arg0)(void)); +void fn_1_2828(Process* arg0, void (*arg1)(void)); +void fn_1_2948(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_2D00(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_357C(StructFn357C* arg0, s32 arg1); +void fn_1_42A0(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4); +s32 fn_1_3668(s32 arg0); +void fn_1_3754(void); +void fn_1_3854(StructBss24* arg0); +void fn_1_3B04(StructBss24* arg0, float arg1); +void fn_1_4FEC(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4); +void fn_1_6004(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4); +int fn_1_66CC(int modelId); + +void fn_1_6704(omObjData* arg0); +void fn_1_67D8(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_6A90(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_6D78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_6DBC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_7064(s32 arg0, s32 arg1); +void fn_1_71DC(s32 arg0); +void fn_1_7244(s16 modelId, char *objName, u32 constAttr, float ofs); +void fn_1_7384(int modelId, int charNo, float ofs, s32 maxTime, BOOL flag); + +// board_clear.c +void fn_1_7F54(Process* arg0, s32 arg1); + +// board_clear.c +void fn_1_B3E4(Process* arg0, s32 arg1); + +// board_miss.c +void fn_1_EA2C(Process* arg0, s32 arg1); + +// mg_clear.c +void fn_1_1256C(Process* arg0, s32 arg1); + +// mg_miss.c +void fn_1_16060(Process* arg0, s32 arg1); + +// ending.c +void fn_1_188F0(Process* arg0, s32 arg1); + +// ending.c +void fn_1_1B90C(Process* arg0); + +extern s32 lbl_1_bss_88[16]; +extern s32 lbl_1_bss_78[4]; +extern s32 lbl_1_bss_68[]; +extern StructBss24 lbl_1_bss_24; +extern s32 lbl_1_data_0[][4]; + +#endif diff --git a/include/REL/mstory3Dll.h b/include/REL/mstory3Dll.h new file mode 100755 index 00000000..8ca3ed77 --- /dev/null +++ b/include/REL/mstory3Dll.h @@ -0,0 +1,99 @@ +#ifndef MSTORY3DLL_H +#define MSTORY3DLL_H + +#include "game/object.h" +#include "game/process.h" + +#include "dolphin.h" + +// For future reference: seems to be identical to StructFn352C in mstoryDll. +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ char unk30[4]; +} StructFn352C; // Size 0x34 + +// For future reference: seems to be identical to StructBss4 in mstoryDll. +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ Vec unk08; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss4; // Size 0x44 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ void (*unk04)(omObjData*, ...); + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ char unk20[8]; +} StructBss1530; // Size 0x28 + +// main.c +float fn_1_5D4(float arg8, float arg9, float argA, float argB); +float fn_1_5FC(float arg8, float arg9, float argA); +float fn_1_61C(float arg0, float arg1, float arg2, float arg3); +float fn_1_6F4(float arg0, float arg1, float arg2, float arg3); +float fn_1_7BC(float arg0, float arg1, float arg2, float arg3); +float fn_1_878(float arg0, float arg1, float arg2, float arg3); +void fn_1_938(void); +void fn_1_958(s32 arg0); +void fn_1_9A0(void); +void fn_1_9C4(void); +s32 fn_1_1624(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 fn_1_1834(u32 arg0, s32 arg1); +void fn_1_1A24(s32 arg0); +void fn_1_1AB0(s32 arg0); +void fn_1_1B18(s32 arg0, s32 arg1); +void fn_1_1D44(s32 arg0, s32 arg1); +void fn_1_1E28(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_2280(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2310(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2420(s32 arg0, s32 arg1); +void fn_1_2834(void (*arg0)(void)); +void fn_1_290C(Process* arg0, void (*arg1)(void)); +void fn_1_2DD4(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_35C8(s16 arg0); +void fn_1_3650(StructFn352C* arg0, s32 arg1); +s32 fn_1_36E4(void); +s32 fn_1_373C(void); +s32 fn_1_37C8(s32 arg0); +void fn_1_38B4(void); +void fn_1_39B4(StructBss4* arg0); +void fn_1_4400(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); +void fn_1_4CC0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3); +void fn_1_514C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); + +// result_seq.c +void fn_1_6E34(Process* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); + +// result.c +void fn_1_157F0(Process* arg0, s32 arg1, s32 arg2, s32 arg3); + +extern StructBss4 lbl_1_bss_4; +extern s32 lbl_1_data_0[][4]; + +#endif diff --git a/include/REL/mstoryDll.h b/include/REL/mstoryDll.h new file mode 100755 index 00000000..b948d6ff --- /dev/null +++ b/include/REL/mstoryDll.h @@ -0,0 +1,96 @@ +#ifndef MSTORYDLL_H +#define MSTORYDLL_H + +#include "game/object.h" +#include "game/process.h" + +#include "dolphin/types.h" + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ Vec unk08; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss4; // Size 0x44 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ char unk1C[0x18]; +} StructFn352C; // Size 0x34 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ void (*unk04)(omObjData*, ...); + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ char unk10[0x18]; +} StructBss19C; // Size 0x28 + +// main.c +float fn_1_828(float arg0, float arg1, float arg2, float arg3); +float fn_1_870(float arg0, float arg1, float arg2, float arg3); +float fn_1_948(float arg0, float arg1, float arg2, float arg3); +float fn_1_ACC(float arg0, float arg1, float arg2, float arg3); +void fn_1_B8C(void); +void fn_1_BAC(s32 arg0); +void fn_1_BF4(void); +s32 fn_1_1834(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_1A64(s32 arg0); +void fn_1_1ACC(s32 arg0, s32 arg1); +BOOL fn_1_1B78(s32 arg0, s32 arg1); +BOOL fn_1_1C34(s32 arg0); +void fn_1_1CE8(s32 arg0, s32 arg1); +void fn_1_1D1C(s32 arg0, s32 arg1, s32 arg2); +void fn_1_1DCC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_2224(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2710(void (*arg0)(void)); +void fn_1_27E8(Process* arg0, void (*arg1)(void)); +void fn_1_2908(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_2CB0(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_352C(StructFn352C* arg0, s32 arg1); +s32 fn_1_3618(s32 arg0); +void fn_1_3704(void); +void fn_1_3804(StructBss4* arg0); +void fn_1_3ABC(StructBss4* arg0, float arg1); +void fn_1_51D0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); +void fn_1_61E8(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); +void fn_1_6C1C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_6EB8(s32 arg0, s32 arg1); +void fn_1_7028(s32 arg0); + +// board_clear.c +void fn_1_79B8(Process* arg0, s32 arg1, s32 arg2); + +// board_miss.c +void fn_1_ACFC(Process* arg0, s32 arg1, s32 arg2); + +// mg_clear.c +void fn_1_E710(Process* arg0, s32 arg1, s32 arg2); + +// mg_miss.c +void fn_1_11624(Process* arg0, s32 arg1, s32 arg2); + +// save.c +void fn_1_14150(Process* arg0); + +extern s32 lbl_1_bss_68; +extern s32 lbl_1_bss_58[]; +extern StructBss4 lbl_1_bss_4; +extern s32 lbl_1_data_0[][4]; + +#endif diff --git a/include/REL/option.h b/include/REL/option.h index 3052b323..a4004a17 100755 --- a/include/REL/option.h +++ b/include/REL/option.h @@ -9,7 +9,7 @@ typedef struct { /* 0x00 */ Process *process; /* 0x04 */ s16 window; /* 0x08 */ s32 id; - /* 0x0C */ s32 visible; + /* 0x0C */ BOOL visible; /* 0x10 */ BOOL messWaitSignal; /* 0x14 */ BOOL choiceSignal; /* 0x18 */ u32 messToBeSet; diff --git a/include/REL/present.h b/include/REL/present.h index 12706b86..8b7eb6d6 100644 --- a/include/REL/present.h +++ b/include/REL/present.h @@ -2,165 +2,59 @@ #define PRESENT_H #include "game/object.h" -// #include "REL/option.h" // this causes problems because of the extern bsses -typedef struct UnkWindowDataStruct { +typedef struct PresentWindow { /* 0x00 */ Process *process; /* 0x04 */ s16 window; - /* 0x06 */ char unk06[2]; - /* 0x08 */ s32 unk08; - /* 0x0C */ s32 unk0C; - /* 0x10 */ s32 unk10; - /* 0x14 */ s32 unk14; - /* 0x18 */ u32 unk18; + /* 0x08 */ s32 id; + /* 0x0C */ BOOL visible; + /* 0x10 */ s32 messWaitSignal; + /* 0x14 */ s32 choiceSignal; + /* 0x18 */ u32 messToBeSet; /* 0x1C */ s32 choice; - /* 0x20 */ s32 unk_20; -} UnkWindowDataStruct; // this already exists in option.h + /* 0x20 */ s32 state; +} PresentWindow; /* size 0x24 */ // this already exists in option.h -typedef struct UnkPresentStruct { - /* 0x00 */ UnkWindowDataStruct *unk_00; - /* 0x04 */ s32 unk_04; -} UnkPresentStruct; +#define PRESENT_GUIDE_MODE_NONE 0 +#define PRESENT_GUIDE_MODE_ENTER 1 +#define PRESENT_GUIDE_MODE_LEAVE 2 -typedef struct UnkPresentStruct2 { - /* 0x00 */ s32 unk_00; - /* 0x04 */ s32 unk_04; - /* 0x08 */ s32 unk_08; - /* 0x0C */ s32 unk_0C; - /* 0x10 */ omObjData *unk_10[134]; - /* 0x228 */ UnkWindowDataStruct *unk_228; - /* 0x22C */ UnkWindowDataStruct *unk_22C; - /* 0x230 */ s16 sprite; - /* 0x234 */ s32 unk_234; - /* 0x238 */ s32 unk_238; - /* 0x23C */ float unk_23C; - /* 0x240 */ float unk_240; - /* 0x244 */ float unk_244; - /* 0x248 */ float unk_248; - /* 0x24C */ float unk_24C; - /* 0x250 */ float unk_250; - /* 0x254 */ float unk_254; - /* 0x258 */ float unk_258; - /* 0x25C */ float unk_25C; - /* 0x260 */ float unk_260; - /* 0x264 */ float unk_264; - /* 0x268 */ float unk_268; - /* 0x26C */ float unk_26C; - /* 0x270 */ s32 unk_270[60]; -} UnkPresentStruct2; +#define PRESENT_MODE_NONE 0 +#define PRESENT_MODE_SELECT_ROOM 1 +#define PRESENT_MODE_SELECT_PRESENT 2 +#define PRESENT_MODE_GET 3 -typedef struct UnkPresentStruct3 { - /* 0x00 */ Vec unk_00; - /* 0x0C */ Vec unk_0C; - /* 0x18 */ GXColor unk_18; -} UnkPresentStruct3; +extern omObjData *present; +extern omObjData *presentCamera; +extern Process *presentObjMan; -typedef struct UnkPresentStruct4 { - /* 0x00 */ Vec unk_00; - /* 0x0C */ Vec unk_0C; - /* 0x18 */ Vec unk_18; -} UnkPresentStruct4; - -typedef struct UnkPresentStruct5 { - /* 0x00 */ s32 unk_00; - /* 0x04 */ s16 unk_04; - /* 0x08 */ float x; - /* 0x0C */ float y; - /* 0x10 */ float z; - /* 0x14 */ float unk_14; - /* 0x18 */ s32 unk18[2]; - /* 0x20 */ float unk_20; - /* 0x24 */ float unk_24; - /* 0x28 */ float unk_28; - /* 0x2C */ float unk_2C; - /* 0x30 */ float unk_30; - /* 0x34 */ float unk_34; - /* 0x38 */ float unk_38; - /* 0x3C */ s32 unk3C[3]; - /* 0x48 */ float unk_48; - /* 0x4C */ float unk_4C; - /* 0x50 */ s32 unk_50; - /* 0x54 */ s32 unk_54; -} UnkPresentStruct5; - -typedef struct UnkPresentStruct6 { - /* 0x00 */ s16 unk_00; - /* 0x04 */ float unk_04; - /* 0x08 */ float unk_08; -} UnkPresentStruct6; // looks like a struct in option/scene.c - -typedef struct UnkPresentStruct6Weird { - /* 0x00 */ s16 unk_00; - /* 0x04 */ float unk_04; - /* 0x08 */ float unk_08; - /* 0x0C */ float unk_0C; -} UnkPresentStruct6Weird; // looks like a struct in option/scene.c - -typedef struct UnkPresentCameraStruct { - /* 0x00 */ Vec pos; - /* 0x0C */ Vec target; - /* 0x18 */ Vec up; - /* 0x24 */ float unk_24; - /* 0x28 */ float unk_28; - /* 0x2C */ Vec unk_2C; - /* 0x38 */ Vec unk_38; - /* 0x44 */ float unk44; - /* 0x48 */ float unk48; - /* 0x4C */ float unk4C; - /* 0x50 */ float unk_50; - /* 0x54 */ float unk_54; - /* 0x58 */ Vec unk_58; - /* 0x64 */ Vec unk_64; - /* 0x70 */ float unk70; - /* 0x74 */ float unk74; - /* 0x78 */ float unk78; - /* 0x7C */ float unk_7C; - /* 0x80 */ float unk_80; - /* 0x84 */ float unk_84; - /* 0x88 */ float unk_88; - /* 0x8C */ float unk_8C; - /* 0x90 */ float unk_90; - /* 0x94 */ float unk_94; - /* 0x98 */ float unk_98; -} UnkPresentCameraStruct; - -typedef struct UnkPresentNestedInnerStruct { - /* 0x00 */ s32 unk_00; - /* 0x04 */ s32 unk_04; - /* 0x08 */ s32 unk08; - /* 0x0C */ s32 unk_0C; -} UnkPresentNestedInnerStruct; - -typedef struct UnkPresentNestedOuterStruct { - /* 0x00 */ s32 unk00; - /* 0x04 */ UnkPresentNestedInnerStruct unk_04[11]; -} UnkPresentNestedOuterStruct; - -typedef struct UnkPresentStruct7 { - /* 0x00 */ s32 unk_00; - /* 0x04 */ float unk_04; -} UnkPresentStruct7; - -extern omObjData *lbl_1_bss_10; -extern omObjData *lbl_1_bss_8; -extern Process *lbl_1_bss_4; - -void fn_1_144(s16 arg0, s32 arg1, s32 arg2); -void fn_1_334(s16 arg0, s32 arg1, float arg8, s32 arg2); -omObjData *fn_1_6B4(); -void fn_1_920(omObjData *object, float arg8, float arg9, float argA, s32 arg1); -void fn_1_9A4(omObjData *object, float arg8, float arg9, float argA, s32 arg1); -void fn_1_BF8(omObjData *object); -omObjData *fn_1_1458(void); -void fn_1_180C(omObjData *object, s32 arg1); -s32 fn_1_1850(omObjData *object); -omObjData *fn_1_39A8(void); -UnkWindowDataStruct *fn_1_3EA4(s32 arg0); -void fn_1_4080(UnkWindowDataStruct *windowData); -void fn_1_4098(UnkWindowDataStruct *windowData); -void fn_1_40B0(UnkWindowDataStruct *windowData, u32 mess); -omObjData *fn_1_42F4(void); -void fn_1_45C0(omObjData *arg0, s32 arg1); -s32 fn_1_4604(omObjData *object); +void PresentFadeSprite(s16 sprite, BOOL inF, s32 duration); +void FadeSpriteWithMultiplier(s16 model, BOOL inF, float tpMultiplier, s32 duration); +BOOL PresentPadCheck(u16 btn); +BOOL PresentPadDStkRepCheck(u16 dir); +BOOL PresentPadDStkCheck(u16 dir); +omObjData *PresentCameraCreate(); +void PresentCameraKill(omObjData *object); +void PresentCameraTargetSet(omObjData *object, float x, float y, float z, s32 duration); +void PresentCameraFocusSet(omObjData *object, float x, float y, float z, s32 duration); +s32 PresentCameraDoneCheck(omObjData *object); +omObjData *PresentCreate(void); +void PresentKill(omObjData *object); +void PresentExecModeSet(omObjData *object, s32 execMode); +s32 PresentExecModeGet(omObjData *object); +void PresentSelectedIDSet(omObjData *object, s32 id); +void PresentStateKill(omObjData *object); +omObjData *PresentStateCreate(void); +PresentWindow *PresentWinCreate(s32 id); +void PresentWinKill(PresentWindow *work); +void PresentWinAnimIn(PresentWindow *work); +void PresentWinAnimOut(PresentWindow *work); +void PresentWinMesSet(PresentWindow *work, u32 mess); +void PresentWinInsertMesSet(PresentWindow *work, u32 mess, s16 index); +void PresentWinMesWait(PresentWindow *work); +omObjData *PresentGuideCreate(void); +void PresentGuideKill(omObjData *object); +void PresentGuideExecModeSet(omObjData *object, s32 execMode); +s32 PresentGuideExecModeGet(omObjData *object); #endif diff --git a/include/REL/resultdll.h b/include/REL/resultdll.h index afaf5df3..240731b4 100644 --- a/include/REL/resultdll.h +++ b/include/REL/resultdll.h @@ -7,7 +7,7 @@ #include "game/sprite.h" -typedef struct datalist_model { +typedef struct StageModel_s { s32 datanum; u32 attr; s16 type; @@ -16,33 +16,33 @@ typedef struct datalist_model { Vec pos; Vec rot; Vec scale; -} DataListModel; +} StageModel; -typedef struct datalist_sprite { +typedef struct StageSprite_s { u32 datanum; s16 attr; s16 prio; float x; float y; GXColor color; -} DataListSprite; +} StageSprite; -void fn_1_3FD8(void); -void fn_1_40DC(void); -void fn_1_423C(s16 *data); +void ResultBoardDataRead(void); +void ResultCoinAdd(void); +void ResultCoinNumGet(s16 *coinNum); -void fn_1_6490(void); +void ResultBattleMain(void); -void fn_1_8FF8(DataListModel *model_list); -void fn_1_927C(DataListSprite *sprite_list); -void fn_1_93B4(void); +void StageModelCreate(StageModel *model_list); +void StageSpriteCreate(StageSprite *sprite_list); +void StageSpriteKill(void); -extern s16 lbl_1_bss_1A9C[32]; -extern s16 lbl_1_bss_1A5C[32]; -extern s16 lbl_1_bss_1A1A[33]; +extern s16 stageMdlId[32]; +extern s16 stageMotId[32]; +extern s16 stageSprId[33]; extern s16 lbl_1_bss_1A18; -extern s32 lbl_1_bss_178; -extern s32 lbl_1_bss_174; -extern s16 lbl_1_bss_172; +extern s32 resultReadEndF; +extern s32 resultFastF; +extern s16 resultBonusPlayer; #endif \ No newline at end of file diff --git a/include/REL/w01Dll.h b/include/REL/w01Dll.h index f3e1e5d6..c8c44f3b 100755 --- a/include/REL/w01Dll.h +++ b/include/REL/w01Dll.h @@ -4,24 +4,56 @@ #include "dolphin/types.h" enum { + MAPOBJ_COASTER, + MAPOBJ_COASTER_RAIL, + MAPOBJ_HOST1, + MAPOBJ_HOST2, + MAPOBJ_HOST3, + MAPOBJ_HOST4, + MAPOBJ_SPACEAMIDA, + MAPOBJ_SPACEAMIDA_MAP1, + MAPOBJ_SPACEAMIDA_MAP2, + MAPOBJ_SPACEAMIDA_MAP3, + MAPOBJ_SPACEAMIDA_ROCKET1, + MAPOBJ_SPACEAMIDA_ROCKET2, + MAPOBJ_SPACEAMIDA_ROCKET3, + MAPOBJ_SPACEAMIDA_LIGHTEFF, + MAPOBJ_SPACEAMIDA_LAMP1, + MAPOBJ_SPACEAMIDA_LAMP2, + MAPOBJ_ROUNDITEM, + MAPOBJ_ROUNDITEM_UMA, + MAPOBJ_ROUNDITEM_BORDER, + MAPOBJ_ROUNDITEM_ITEM, + MAPOBJ_ROUNDITEM_ITEM_LIGHT, + MAPOBJ_ROUNDITEM_ITEM_UP, + MAPOBJ_ROUNDITEM_ITEM_DENSYOKU, + MAPOBJ_CUPR_DISH, + MAPOBJ_CUPR1, + MAPOBJ_CUPR2, + MAPOBJ_CUPR3, + MAPOBJ_CUPR_ARROW, + MAPOBJ_CUPL_DISH, + MAPOBJ_CUPL1, + MAPOBJ_CUPL2, + MAPOBJ_CUPL3, + MAPOBJ_CUPL_ARROW, MAPOBJ_MAX = 33 }; typedef struct { /* 0x00 */ struct { - u8 unk00_field0 : 1; + u8 hostSide : 1; }; - /* 0x01 */ s8 unk01[2]; -} UnkBoardDataStruct; // Size unknown + /* 0x01 */ s8 cupDir[2]; +} W01BoardWork; -extern void fn_1_9D00(s32 arg0); -extern void fn_1_9DD8(void); +extern void SpaceAmidaExec(void); -extern void fn_1_D740(s16 *arg0); -extern void fn_1_DD84(void); -extern void fn_1_DE94(void); +extern void RoundItemInit(s16 *itemTbl); +extern void RoundItemKill(void); +extern void RoundItemEventStart(void); -extern s16 lbl_1_bss_6C4[MAPOBJ_MAX]; -extern UnkBoardDataStruct *lbl_1_bss_0; +extern s16 mapObjMdlId[MAPOBJ_MAX]; +extern W01BoardWork *boardWork; #endif diff --git a/include/REL/w02Dll.h b/include/REL/w02Dll.h index b62d4a44..1a59411f 100644 --- a/include/REL/w02Dll.h +++ b/include/REL/w02Dll.h @@ -1,50 +1,48 @@ #ifndef W02DLL #define W02DLL -#include "math.h" #include "dolphin.h" -#include "game/process.h" -#include "game/gamework_data.h" -#include "game/board/model.h" -#include "game/board/space.h" #include "game/board/main.h" -#include "game/board/player.h" -#include "game/board/window.h" #include "game/board/map_object.h" - +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" +#include "game/board/window.h" +#include "game/gamework_data.h" +#include "game/process.h" +#include "math.h" /* STRUCTS*/ typedef struct m02_dice { - /* 0x00 */ s16 unk00; - /* 0x02 */ s16 unk02; - /* 0x04 */ s32 unk04; - /* 0x08 */ s32 *unk08; - /* 0x0C */ Vec unk0C; - /* 0x18 */ s16 unk18; - /* 0x1A */ s16 unk1A; - /* 0x1C */ u16 unk1C[3]; - /* 0x22 */ s16 unk22; - /* 0x24 */ f32 unk24; - /* 0x28 */ s16 unk28; - /* 0x2A */ u8 unk2A[0x2]; - /* 0x2C */ Process *unk2C; - /* 0x30 */ s16 unk30[3]; - /* 0x36 */ s16 unk36[3]; - /* 0x3C */ omObjData *unk3C[3]; - /* 0x48 */ s16 unk48[3]; - /* 0x4E */ u8 unk4E[0x2]; - /* 0x50 */ omObjData *unk50[3]; - /* 0x5C */ u8 unk5C[0x08]; - /* 0x64 */ Vec unk64[2]; - /* 0x7C */ Vec unk7C; - /* 0x88 */ s32 unk88[3]; - /* 0x94 */ s16 unk94; - /* 0x96 */ s16 unk96; - /* 0x98 */ f32 unk98; - /* 0x9C */ s16 unk9C; + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 *unk08; + /* 0x0C */ Vec unk0C; + /* 0x18 */ s16 unk18; + /* 0x1A */ s16 unk1A; + /* 0x1C */ u16 unk1C[3]; + /* 0x22 */ s16 unk22; + /* 0x24 */ float unk24; + /* 0x28 */ s16 unk28; + /* 0x2A */ u8 unk2A[0x2]; + /* 0x2C */ Process *unk2C; + /* 0x30 */ s16 unk30[3]; + /* 0x36 */ s16 unk36[3]; + /* 0x3C */ omObjData *unk3C[3]; + /* 0x48 */ s16 unk48[3]; + /* 0x4E */ u8 unk4E[0x2]; + /* 0x50 */ omObjData *unk50[3]; + /* 0x5C */ u8 unk5C[0x08]; + /* 0x64 */ Vec unk64[2]; + /* 0x7C */ Vec unk7C; + /* 0x88 */ s32 unk88[3]; + /* 0x94 */ s16 unk94; + /* 0x96 */ s16 unk96; + /* 0x98 */ float unk98; + /* 0x9C */ s16 unk9C; } m02GenDice; - extern s16 lbl_1_bss_2E; extern s16 lbl_1_bss_2C; extern Vec lbl_1_bss_20; @@ -58,12 +56,12 @@ extern void fn_1_72C(); extern s32 fn_1_774(); extern s32 fn_1_800(); extern void fn_1_92C(); -extern s32 fn_1_1128(); +extern s32 fn_1_1128(); extern void fn_1_121C(u32); -void fn_1_1254(m02GenDice* arg0); -void fn_1_1518(m02GenDice* arg0); -s32 fn_1_17F4(m02GenDice* arg0); +void fn_1_1254(m02GenDice *arg0); +void fn_1_1518(m02GenDice *arg0); +s32 fn_1_17F4(m02GenDice *arg0); // roulette.c extern void fn_1_D3AC(); @@ -75,15 +73,15 @@ extern void fn_1_3BF4(); extern void fn_1_39F4(); extern void fn_1_5CF8(); extern void fn_1_5D28(); -extern void fn_1_5F90(); +extern void fn_1_5F90(); extern void fn_1_79BC(s16 *arg0); extern void fn_1_8244(u16 arg0); extern s32 fn_1_9250(); extern void fn_1_93C8(u32 arg0); extern void fn_1_BC1C(); -extern s32 fn_1_BE88(); -extern s32 fn_1_C108(s32); -extern void fn_1_CD04(s32); +extern s32 fn_1_BE88(); +extern s32 fn_1_C108(s32); +extern void fn_1_CD04(s32); void fn_1_E41C(void); -#endif //W02DLL \ No newline at end of file +#endif // W02DLL diff --git a/include/REL/w03Dll.h b/include/REL/w03Dll.h index 36e741d7..a7163c63 100644 --- a/include/REL/w03Dll.h +++ b/include/REL/w03Dll.h @@ -1,3 +1,6 @@ +#ifndef REL_W03_H +#define REL_W03_H + #include "game/gamework_data.h" #include "dolphin.h" #include "REL/executor.h" @@ -5,8 +8,6 @@ #include "game/window.h" #include "game/object.h" -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) - enum { MAPOBJ_MAX = 12 }; @@ -27,3 +28,5 @@ typedef struct w03State { extern w03State* lbl_1_bss_0; extern s16 lbl_1_bss_C[MAPOBJ_MAX]; + +#endif diff --git a/include/REL/w05Dll.h b/include/REL/w05Dll.h index a326cb65..2b5599fb 100644 --- a/include/REL/w05Dll.h +++ b/include/REL/w05Dll.h @@ -1,3 +1,6 @@ +#ifndef REL_W05_H +#define REL_W05_H + #include "dolphin/types.h" #include "game/board/main.h" @@ -48,7 +51,7 @@ void fn_1_D84(void); void fn_1_E04(void); void fn_1_E40(void); s32 fn_1_1114(void); -s32 fn_1_1208(s16, f32, f32); +s32 fn_1_1208(s16, float, float); void fn_1_13D4(void); void fn_1_14D0(void); @@ -67,64 +70,64 @@ void fn_1_3E8C(void); void fn_1_3F74(void); void fn_1_3FD8(void); void fn_1_4034(s32); -void fn_1_4EB4(s32, s32, Vec*); +void fn_1_4EB4(s32, s32, Vec *); void fn_1_5648(void); -void fn_1_5794(s32, s32, Vec*); +void fn_1_5794(s32, s32, Vec *); void fn_1_6670(void); -omObjData* fn_1_66C0(u32, Vec*); -void fn_1_6914(omObjData*); -void fn_1_62AC(s32, Vec*); +omObjData *fn_1_66C0(u32, Vec *); +void fn_1_6914(omObjData *); +void fn_1_62AC(s32, Vec *); void fn_1_64BC(void); void fn_1_65E8(void); void fn_1_6670(void); -omObjData* fn_1_66C0(u32, Vec*); -void fn_1_6914(omObjData*); +omObjData *fn_1_66C0(u32, Vec *); +void fn_1_6914(omObjData *); void fn_1_6B28(void); void fn_1_6B7C(void); -void fn_1_7284(omObjData*); +void fn_1_7284(omObjData *); void fn_1_72E4(void); void fn_1_7314(void); void fn_1_73C0(void); void fn_1_74D0(s16[3]); void fn_1_77B0(void); -void fn_1_78A0(omObjData*); -void fn_1_7928(omObjData*); +void fn_1_78A0(omObjData *); +void fn_1_7928(omObjData *); void fn_1_799C(void); -void fn_1_7E4C(omObjData*); -void fn_1_7E94(dataCopy*); -void fn_1_7F04(omObjData*); -void fn_1_80D8(omObjData*); -void fn_1_8410(omObjData*); -void fn_1_850C(omObjData*); -void fn_1_8668(omObjData*); -void fn_1_8798(dataCopy*, s32*, s32*, s32*); -void* fn_1_8884(void); +void fn_1_7E4C(omObjData *); +void fn_1_7E94(dataCopy *); +void fn_1_7F04(omObjData *); +void fn_1_80D8(omObjData *); +void fn_1_8410(omObjData *); +void fn_1_850C(omObjData *); +void fn_1_8668(omObjData *); +void fn_1_8798(dataCopy *, s32 *, s32 *, s32 *); +void *fn_1_8884(void); void fn_1_88B8(void); void fn_1_896C(void); void fn_1_91DC(void); -void fn_1_9268(ModelData*, ParticleData*, f32[3][4]); +void fn_1_9268(ModelData *, ParticleData *, float[3][4]); void fn_1_9680(void); void fn_1_96B4(void); void fn_1_9760(void); void fn_1_97AC(void); -void fn_1_9A68(omObjData*); +void fn_1_9A68(omObjData *); void fn_1_9AC0(void); void fn_1_9AF0(void); void fn_1_9B74(void); -void fn_1_9C24(omObjData*); -void fn_1_9C98(dataCopy2*); -void fn_1_9D0C(omObjData*); -void fn_1_9F24(omObjData*); -void fn_1_A224(omObjData*); -void fn_1_A4F8(omObjData*); -void fn_1_A5B0(omObjData*); -void fn_1_A990(omObjData*); +void fn_1_9C24(omObjData *); +void fn_1_9C98(dataCopy2 *); +void fn_1_9D0C(omObjData *); +void fn_1_9F24(omObjData *); +void fn_1_A224(omObjData *); +void fn_1_A4F8(omObjData *); +void fn_1_A5B0(omObjData *); +void fn_1_A990(omObjData *); void fn_1_AB24(void); -void fn_1_B214(omObjData*); -void fn_1_B2B0(omObjData*, u16*, s16*); -void fn_1_B3C4(omObjData*); +void fn_1_B214(omObjData *); +void fn_1_B2B0(omObjData *, u16 *, s16 *); +void fn_1_B3C4(omObjData *); // data extern BoardMapObject lbl_1_data_0[7]; @@ -161,7 +164,7 @@ extern char *lbl_1_data_330[3]; extern s32 lbl_1_data_350[14]; extern s32 lbl_1_data_350[14]; extern s16 lbl_1_data_388[92]; -extern f32 lbl_1_data_440[3]; +extern float lbl_1_data_440[3]; extern char *lbl_1_data_464[3]; extern s32 lbl_1_data_470[3]; @@ -176,9 +179,9 @@ extern s16 lbl_1_bss_100; extern s16 lbl_1_bss_FE; extern s16 lbl_1_bss_D6[20]; extern s16 lbl_1_bss_D4; -extern omObjData* lbl_1_bss_D0; -extern omObjData* lbl_1_bss_CC; -extern omObjData* lbl_1_bss_C8; +extern omObjData *lbl_1_bss_D0; +extern omObjData *lbl_1_bss_CC; +extern omObjData *lbl_1_bss_C8; extern s16 lbl_1_bss_C6; extern s16 lbl_1_bss_C4; extern s16 lbl_1_bss_C2; @@ -193,13 +196,13 @@ extern s16 lbl_1_bss_A4[3]; extern s16 lbl_1_bss_A2; extern s16 lbl_1_bss_9E[2]; extern s16 lbl_1_bss_9C; -extern Process* lbl_1_bss_98; -extern omObjData* lbl_1_bss_94; -extern omObjData* lbl_1_bss_90; -extern omObjData* lbl_1_bss_8C; +extern Process *lbl_1_bss_98; +extern omObjData *lbl_1_bss_94; +extern omObjData *lbl_1_bss_90; +extern omObjData *lbl_1_bss_8C; extern s32 lbl_1_bss_88; extern s32 lbl_1_bss_7C[3]; -extern AnimData* lbl_1_bss_78; +extern AnimData *lbl_1_bss_78; extern s16 lbl_1_bss_72[2]; extern s16 lbl_1_bss_6C[3]; @@ -218,7 +221,9 @@ extern s16 lbl_1_bss_30[4]; extern s16 lbl_1_bss_28; extern s16 lbl_1_bss_14[7]; -extern s32* lbl_1_bss_10; +extern s32 *lbl_1_bss_10; extern s16 lbl_1_bss_8[4]; -extern Process* lbl_1_bss_4; -extern bitcopy* lbl_1_bss_0; +extern Process *lbl_1_bss_4; +extern bitcopy *lbl_1_bss_0; + +#endif diff --git a/include/REL/w10Dll.h b/include/REL/w10Dll.h index f5144a93..a1446748 100644 --- a/include/REL/w10Dll.h +++ b/include/REL/w10Dll.h @@ -1,3 +1,6 @@ +#ifndef REL_W10_H +#define REL_W10_H + #include "game/gamework_data.h" #include "dolphin.h" #include "REL/executor.h" @@ -6,7 +9,7 @@ enum { MAPOBJ_MELON = 0, - MAPOBJ_MAX, + MAPOBJ_MAX }; typedef struct w10_board_work { @@ -86,4 +89,6 @@ extern s16 tutorialExitWin; extern s16 boardStarHostMdl; extern s16 boardShopHostMdl; extern s16 boardLotteryHostMdl; -extern s16 boardBooHouseHostMdl; \ No newline at end of file +extern s16 boardBooHouseHostMdl; + +#endif diff --git a/include/REL/ztardll.h b/include/REL/ztardll.h new file mode 100644 index 00000000..0d7327ec --- /dev/null +++ b/include/REL/ztardll.h @@ -0,0 +1,21 @@ +#ifndef ZTARDLL_H +#define ZTARDLL_H + +#include "game/minigame_seq.h" + +#include "dolphin/types.h" + +s32 fn_1_7754(SeqWork *arg0, char *mess); +void fn_1_7C00(void); +void fn_1_7D6C(Process *arg0); +s32 fn_1_97D0(s32 arg0, s32 arg1); +void fn_1_11020(void); +void fn_1_111E0(void); +void fn_1_11264(s32 arg0, s32 arg1, s32 arg2); +void fn_1_11338(u32 arg0, s32 arg1); +s32 fn_1_11390(s32 arg0); +void fn_1_114EC(u32 arg0, s32 arg1); +void fn_1_11708(u32 arg0); +void fn_1_1190C(void); + +#endif diff --git a/include/Runtime.PPCEABI.H/__va_arg.h b/include/Runtime.PPCEABI.H/__va_arg.h new file mode 100644 index 00000000..22975640 --- /dev/null +++ b/include/Runtime.PPCEABI.H/__va_arg.h @@ -0,0 +1,40 @@ +#ifndef __VA_ARG_H +#define __VA_ARG_H + +#include "dolphin/types.h" + +typedef struct __va_list_struct { + char gpr; + char fpr; + char reserved[2]; + char* input_arg_area; + char* reg_save_area; +} _va_list_struct; + +typedef _va_list_struct __va_list[1]; + +#ifdef __cplusplus +extern "C" void* __va_arg(_va_list_struct*, int); +#else +void* __va_arg(_va_list_struct*, int); +#endif + +#ifndef __MWERKS__ +#define __builtin_va_info(...) +#define _var_arg_typeof(...) +#endif + +// from defined-string in mwcceppc.exe: +// __builtin_va_info: initialize the __va_list_struct +// _var_arg_typeof: convert type to integer for __va_arg +#define __va_start(list, fmt) __builtin_va_info(&list) +#define __va_arg(list, type) (*((type*)__va_arg(list, _var_arg_typeof(type)))) +#define va_start __va_start +#define va_arg __va_arg +#define va_end __va_end +#define va_list __va_list +#define __va_end(list) ((void)0) + +#define __va_copy(a, b) (*(a) = *(b)) + +#endif /* __VA_ARG_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h new file mode 100644 index 00000000..0861cde2 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h @@ -0,0 +1,35 @@ +#ifndef METROTRK_PORTABLE_DISPATCH_H +#define METROTRK_PORTABLE_DISPATCH_H + +#include "dolphin/types.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define TRK_DISPATCH_CMD_CONNECT 1 /* Connect to the console */ +#define TRK_DISPATCH_CMD_DISCONNECT 2 /* Disconnect from the console */ +#define TRK_DISPATCH_CMD_RESET 3 /* Reset the debugger */ +#define TRK_DISPATCH_CMD_GETVERSION 4 /* Get debugger version */ +#define TRK_DISPATCH_CMD_GETSUPPORTMASK 5 /* Get Support Mask */ +#define TRK_DISPATCH_CMD_OVERRIDE 7 /* Override? */ +#define TRK_DISPATCH_CMD_READMEM 16 /* Reading from memory */ +#define TRK_DISPATCH_CMD_WRITEMEM 17 /* Writing to memory */ +#define TRK_DISPATCH_CMD_READREGS 18 /* Read a register value */ +#define TRK_DISPATCH_CMD_WRITEREGS 19 /* Set a register */ +#define TRK_DISPATCH_CMD_SETOPTION 23 /* Set an option? */ +#define TRK_DISPATCH_CMD_CONTINUE 24 /* Continue debugging */ +#define TRK_DISPATCH_CMD_STEP 25 /* Step through an instruction */ +#define TRK_DISPATCH_CMD_STOP 26 /* Stop the debugger */ + +typedef struct TRKBuffer TRKBuffer; + +DSError TRKInitializeDispatcher(); +BOOL TRKDispatchMessage(TRKBuffer* buffer); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_DISPATCH_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h new file mode 100644 index 00000000..9ff3a2da --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h @@ -0,0 +1,16 @@ +#ifndef METROTRK_PORTABLE_MAIN_TRK_H +#define METROTRK_PORTABLE_MAIN_TRK_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRK_main(void); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MAIN_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h new file mode 100644 index 00000000..606a4437 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h @@ -0,0 +1,14 @@ +#ifndef METROTRK_PORTABLE_MAINLOOP_H +#define METROTRK_PORTABLE_MAINLOOP_H + +#ifdef __cplusplus +extern "C" { +#endif + +void TRKNubMainLoop(void); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MAINLOOP_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h new file mode 100644 index 00000000..aeef9c7d --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h @@ -0,0 +1,17 @@ +#ifndef METROTRK_PORTABLE_MEM_TRK_H +#define METROTRK_PORTABLE_MEM_TRK_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void* TRK_memset(void* dst, int val, size_t n); +void* TRK_memcpy(void* dst, const void* src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MEM_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h new file mode 100644 index 00000000..2dc2dff8 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h @@ -0,0 +1,24 @@ +#ifndef METROTRK_PORTABLE_MSG_H +#define METROTRK_PORTABLE_MSG_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "dolphin/types.h" + +typedef struct _TRK_Msg { + u8 _00[8]; + u32 m_msgLength; + u32 _0C; + u8 m_msg[4]; // TODO: unknown array length +} TRK_Msg; + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKMessageSend(TRK_Msg* msg); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MSG_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h new file mode 100644 index 00000000..f16fe261 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h @@ -0,0 +1,50 @@ +#ifndef METROTRK_PORTABLE_MSGBUF_H +#define METROTRK_PORTABLE_MSGBUF_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKInitializeMessageBuffers(void); + +DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos); +void* TRKGetBuffer(int); +void TRKResetBuffer(TRKBuffer* msg, u8 keepData); +void* TRKGetBuffer(int idx); +void TRKReleaseBuffer(int idx); +DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg); + +DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length); +DSError TRKAppendBuffer1_ui8(TRKBuffer* buffer, const u8 data); +inline DSError TRKAppendBuffer1_ui8(TRKBuffer* buffer, const u8 data) +{ + if (buffer->position >= TRKMSGBUF_SIZE) { + return DS_MessageBufferOverflow; + } + + buffer->data[buffer->position++] = data; + buffer->length++; + return DS_NoError; +} +DSError TRKAppendBuffer1_ui16(TRKBuffer* buffer, const u16 data); +DSError TRKAppendBuffer1_ui32(TRKBuffer* buffer, const u32 data); +DSError TRKAppendBuffer1_ui64(TRKBuffer* buffer, const u64 data); +DSError TRKAppendBuffer_ui8(TRKBuffer* buffer, const u8* data, int count); +DSError TRKAppendBuffer_ui32(TRKBuffer* buffer, const u32* data, int count); + +DSError TRKReadBuffer1_ui8(TRKBuffer* buffer, u8* data); +DSError TRKReadBuffer1_ui16(TRKBuffer* buffer, u16* data); +DSError TRKReadBuffer1_ui32(TRKBuffer* buffer, u32* data); +DSError TRKReadBuffer1_ui64(TRKBuffer* buffer, u64* data); +DSError TRKReadBuffer_ui8(TRKBuffer* buffer, u8* data, int count); +DSError TRKReadBuffer_ui32(TRKBuffer* buffer, u32* data, int count); +DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MSGBUF_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h new file mode 100644 index 00000000..aa8abff5 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h @@ -0,0 +1,31 @@ +#ifndef METROTRK_PORTABLE_MSGHNDLR_H +#define METROTRK_PORTABLE_MSGHNDLR_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +void SetTRKConnected(BOOL); +BOOL GetTRKConnected(void); +DSError TRKDoUnsupported(TRKBuffer*); +DSError TRKDoSetOption(TRKBuffer*); +DSError TRKDoStop(TRKBuffer*); +DSError TRKDoStep(TRKBuffer*); +DSError TRKDoContinue(TRKBuffer*); +DSError TRKDoWriteRegisters(TRKBuffer*); +DSError TRKDoReadRegisters(TRKBuffer*); +DSError TRKDoFlushCache(TRKBuffer*); +DSError TRKDoWriteMemory(TRKBuffer*); +DSError TRKDoReadMemory(TRKBuffer*); +DSError TRKDoSupportMask(TRKBuffer*); +DSError TRKDoVersions(TRKBuffer*); +DSError TRKDoSupportMask(TRKBuffer*); +DSError TRKDoCPUType(TRKBuffer*); +DSError TRKDoOverride(TRKBuffer*); +DSError TRKDoReset(TRKBuffer*); +DSError TRKDoDisconnect(TRKBuffer*); +DSError TRKDoConnect(TRKBuffer*); +DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID, + DSReplyError replyError); + +void OutputData(void* data, int length); + +#endif /* METROTRK_PORTABLE_MSGHNDLR_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h new file mode 100644 index 00000000..7297cf18 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h @@ -0,0 +1,10 @@ +#ifndef METROTRK_PORTABLE_MUTEX_TRK_H +#define METROTRK_PORTABLE_MUTEX_TRK_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +DSError TRKInitializeMutex(void*); +DSError TRKAcquireMutex(void*); +DSError TRKReleaseMutex(void*); + +#endif /* METROTRK_PORTABLE_MUTEX_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h new file mode 100644 index 00000000..459830f9 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h @@ -0,0 +1,16 @@ +#ifndef METROTRK_PORTABLE_NOTIFY_H +#define METROTRK_PORTABLE_NOTIFY_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKDoNotifyStopped(MessageCommandID cmd); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_NOTIFY_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h new file mode 100644 index 00000000..da5a012b --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h @@ -0,0 +1,37 @@ +#ifndef METROTRK_PORTABLE_NUBEVENT_H +#define METROTRK_PORTABLE_NUBEVENT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef u32 NubEventID; + +typedef struct TRKEvent { + NubEventType eventType; + NubEventID eventID; + MessageBufferID msgBufID; +} TRKEvent; + +typedef struct TRKEventQueue { + int _00; + int count; + int next; + TRKEvent events[2]; + NubEventID eventID; +} TRKEventQueue; +extern TRKEventQueue gTRKEventQueue; + +BOOL TRKGetNextEvent(TRKEvent* event); +void TRKDestructEvent(TRKEvent*); +void TRKConstructEvent(TRKEvent*, NubEventType); +DSError TRKPostEvent(TRKEvent*); +DSError TRKInitializeEventQueue(); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_NUBEVENT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h new file mode 100644 index 00000000..9f1d4174 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h @@ -0,0 +1,21 @@ +#ifndef METROTRK_PORTABLE_NUBINIT_H +#define METROTRK_PORTABLE_NUBINIT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void TRKNubWelcome(void); +void TRKNubMainLoop(void); +DSError TRKTerminateNub(void); +DSError TRKInitializeNub(void); + +extern BOOL gTRKBigEndian; + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_NUBINIT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h new file mode 100644 index 00000000..40636776 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h @@ -0,0 +1,23 @@ +#ifndef METROTRK_PORTABLE_SERPOLL_H +#define METROTRK_PORTABLE_SERPOLL_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKInitializeSerialHandler(void); +DSError TRKTerminateSerialHandler(void); + +void TRKGetInput(void); +MessageBufferID TRKTestForPacket(); +void TRKProcessInput(int bufferIdx); + +extern void* gTRKInputPendingPtr; + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_SERPOLL_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h new file mode 100644 index 00000000..f2b2913d --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h @@ -0,0 +1,29 @@ +#ifndef METROTRK_PORTABLE_SUPPORT_H +#define METROTRK_PORTABLE_SUPPORT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKSuppAccessFile(u32 file_handle, u8* data, size_t* count, + DSIOResult* io_result, BOOL need_reply, BOOL read); + +DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2, + int p3); + +DSError HandleOpenFileSupportRequest(const char* path, u8 replyError, + u32* param_3, u8* ioResult); + +DSError HandleCloseFileSupportRequest(int replyError, u8* ioResult); + +DSError HandlePositionFileSupportRequest(u32 replyErr, u32* param_2, + u8 param_3, u8* ioResult); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_SUPPORT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h new file mode 100644 index 00000000..fa3a575a --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h @@ -0,0 +1,24 @@ +#ifndef OS_DOLPHIN_DOLPHIN_TRK_H +#define OS_DOLPHIN_DOLPHIN_TRK_H + +#include "dolphin/types.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKInitializeTarget(); + +void EnableMetroTRKInterrupts(); +u32 TRKTargetTranslate(u32 param_0); +void TRK__read_aram(register int c, register u32 p2, void* p3); +void TRK__write_aram(register int c, register u32 p2, void* p3); + +void __TRK_copy_vectors(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_DOLPHIN_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h new file mode 100644 index 00000000..550454cc --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h @@ -0,0 +1,45 @@ +#ifndef OS_DOLPHIN_DOLPHIN_TRK_GLUE_H +#define OS_DOLPHIN_DOLPHIN_TRK_GLUE_H + +#include "dolphin/os.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*DBCommFunc)(void); +typedef u32 (*DBPollFunc)(void); +typedef void (*DBCommInitFunc)(volatile u8**, __OSInterruptHandler); +typedef int (*DBCommReadFunc)(void*, size_t); +typedef int (*DBCommWriteFunc)(const void*, size_t); + +typedef struct DBCommTable { + DBCommInitFunc initialize_func; + DBCommFunc init_interrupts_func; + DBPollFunc peek_func; + DBCommReadFunc read_func; + DBCommWriteFunc write_func; + DBCommFunc open_func; + DBCommFunc close_func; +} DBCommTable; + +DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, + volatile u8** param_3); + +void UnreserveEXI2Port(void); +void ReserveEXI2Port(void); +int TRKPollUART(void); +UARTError TRKReadUARTN(void* bytes, u32 length); +UARTError TRKWriteUARTN(const void* bytes, u32 length); +void TRKLoadContext(OSContext* ctx, u32 r4); +int InitMetroTRKCommTable(int hwId); +void EnableEXI2Interrupts(void); +void TRK_board_display(char* str); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_DOLPHIN_TRK_GLUE_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h new file mode 100644 index 00000000..1d1c4417 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h @@ -0,0 +1,16 @@ +#ifndef OS_DOLPHIN_TARGCONT_H +#define OS_DOLPHIN_TARGCONT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKTargetContinue(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_TARGCONT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h new file mode 100644 index 00000000..d01cc0b1 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h @@ -0,0 +1,14 @@ +#ifndef OS_DOLPHIN_USR_PUT_H +#define OS_DOLPHIN_USR_PUT_H + +#ifdef __cplusplus +extern "C" { +#endif + +void usr_put_initialize(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_USR_PUT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h new file mode 100644 index 00000000..a512aacf --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h @@ -0,0 +1,16 @@ +#ifndef PPC_GENERIC_FLUSH_CACHE_H +#define PPC_GENERIC_FLUSH_CACHE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void TRK_flush_cache(void* param_1, int param_2); + +#ifdef __cplusplus +} +#endif + +#endif /* PPC_GENERIC_FLUSH_CACHE_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h new file mode 100644 index 00000000..e29725fb --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h @@ -0,0 +1,16 @@ +#ifndef PPC_GENERIC_MPC_7XX_603E_H +#define PPC_GENERIC_MPC_7XX_603E_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +u8 TRKTargetCPUMinorType(void); + +#ifdef __cplusplus +} +#endif + +#endif /* PPC_GENERIC_MPC_7XX_603E_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h new file mode 100644 index 00000000..e7ce7015 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h @@ -0,0 +1,190 @@ +#ifndef PPC_GENERIC_TARGIMPL_H +#define PPC_GENERIC_TARGIMPL_H + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void TRKTargetSetInputPendingPtr(void* ptr); + +void TRKSwapAndGo(); +void TRKTargetSetStopped(unsigned int); +DSError TRKTargetInterrupt(TRKEvent*); +DSError TRKTargetSupportRequest(); +void TRKDestructEvent(TRKEvent*); +DSError TRKTargetFlushCache(u8, void* start, void* end); +BOOL TRKTargetStopped(void); +DSError TRKTargetAddStopInfo(TRKBuffer* b); +DSError TRKTargetAddExceptionInfo(TRKBuffer* b); +DSError TRKTargetAccessARAM(u32 p1, u32 p2, u32* p3, BOOL read); +DSError TRKTargetAccessMemory(void* data, u32 start, size_t* length, + MemoryAccessOptions accessOptions, BOOL read); +DSError TRKTargetAccessDefault(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read); +DSError TRKTargetAccessFP(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read); +DSError TRKTargetAccessExtended1(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read); +DSError TRKTargetAccessExtended2(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registerStorageSize, + BOOL read); +u32 TRKTargetGetPC(); +DSError TRKTargetSingleStep(u32 count, BOOL stepOver); +DSError TRKTargetStepOutOfRange(u32 rangeStart, u32 rangeEnd, BOOL stepOver); +u32 TRKTargetStop(); +void TRKInterruptHandler(); +void TRKPostInterruptEvent(void); + +typedef struct DSVersions { + u8 kernelMajor; + u8 kernelMinor; + u8 protocolMajor; + u8 protocolMinor; +} DSVersions; + +DSError TRKTargetVersions(DSVersions* versions); +DSError TRKTargetSupportMask(u8 mask[32]); + +typedef struct DSCPUType { + u8 cpuMajor; + u8 cpuMinor; + u8 bigEndian; + u8 defaultTypeSize; + u8 fpTypeSize; + u8 extended1TypeSize; + u8 extended2TypeSize; +} DSCPUType; +DSError TRKTargetCPUType(DSCPUType* cpuType); + +typedef struct Default_PPC { + u32 GPR[32]; + u32 PC; + u32 LR; + u32 CR; + u32 CTR; + u32 XER; +} Default_PPC; + +typedef struct Float_PPC { + u64 FPR[32]; + u64 FPSCR; + u64 FPECR; +} Float_PPC; + +typedef struct Extended1_PPC_6xx_7xx { + u32 SR[16]; + u32 TBL; + u32 TBU; + u32 HID0; + u32 HID1; + u32 MSR; + u32 PVR; + u32 IBAT0U; + u32 IBAT0L; + u32 IBAT1U; + u32 IBAT1L; + u32 IBAT2U; + u32 IBAT2L; + u32 IBAT3U; + u32 IBAT3L; + u32 DBAT0U; + u32 DBAT0L; + u32 DBAT1U; + u32 DBAT1L; + u32 DBAT2U; + u32 DBAT2L; + u32 DBAT3U; + u32 DBAT3L; + u32 DMISS; + u32 DCMP; + u32 HASH1; + u32 HASH2; + u32 IMISS; + u32 ICMP; + u32 RPA; + u32 SDR1; + u32 DAR; + u32 DSISR; + u32 SPRG0; + u32 SPRG1; + u32 SPRG2; + u32 SPRG3; + u32 DEC; + u32 IABR; + u32 EAR; + u32 DABR; + u32 PMC1; + u32 PMC2; + u32 PMC3; + u32 PMC4; + u32 SIA; + u32 MMCR0; + u32 MMCR1; + u32 THRM1; + u32 THRM2; + u32 THRM3; + u32 ICTC; + u32 L2CR; + u32 UMMCR2; + u32 UBAMR; + u32 UMMCR0; + u32 UPMC1; + u32 UPMC2; + u32 USIA; + u32 UMMCR1; + u32 UPMC3; + u32 UPMC4; + u32 USDA; + u32 MMCR2; + u32 BAMR; + u32 SDA; + u32 MSSCR0; + u32 MSSCR1; + u32 PIR; + u32 exceptionID; + u32 GQR[8]; + u32 HID_G; + u32 WPAR; + u32 DMA_U; + u32 DMA_L; +} Extended1_PPC_6xx_7xx; + +typedef struct Extended2_PPC_6xx_7xx { + u32 PSR[32][2]; +} Extended2_PPC_6xx_7xx; + +typedef struct ProcessorState_PPC_6xx_7xx { + Default_PPC Default; + Float_PPC Float; + Extended1_PPC_6xx_7xx Extended1; + Extended2_PPC_6xx_7xx Extended2; + u32 transport_handler_saved_ra; +} ProcessorState_PPC_6xx_7xx; + +typedef ProcessorState_PPC_6xx_7xx ProcessorState_PPC; +extern ProcessorState_PPC gTRKCPUState; + +typedef struct TRKState { + u32 gpr[32]; // _00 + u32 lr; // _80 + u32 ctr; // _84 + u32 xer; // _88 + u32 msr; // _8C + u32 dar; // _90 + u32 dsisr; // _94 + BOOL isStopped; // _98 + BOOL inputActivated; // _9C + void* inputPendingPtr; // _A0 +} TRKState; +extern TRKState gTRKState; + +#ifdef __cplusplus +} +#endif + +#endif /* PPC_GENERIC_TARGIMPL_H */ diff --git a/include/__ppc_eabi_linker.h b/include/__ppc_eabi_linker.h new file mode 100644 index 00000000..2fddd9c9 --- /dev/null +++ b/include/__ppc_eabi_linker.h @@ -0,0 +1,79 @@ +#ifndef __PPC_EABI_LINKER +#define __PPC_EABI_LINKER + +#ifdef __MWERKS__ +#define DECL_SECTION(name) __declspec(section name) +#else +#define DECL_SECTION(name) +#endif + +DECL_SECTION(".init") extern char _stack_addr[]; +DECL_SECTION(".init") extern char _stack_end[]; +DECL_SECTION(".init") extern char _heap_addr[]; +DECL_SECTION(".init") extern char _heap_end[]; +DECL_SECTION(".init") extern const char _fextabindex_rom[]; +DECL_SECTION(".init") extern char _fextabindex[]; +DECL_SECTION(".init") extern char _eextabindex[]; + +DECL_SECTION(".init") extern char _SDA_BASE_[]; + +DECL_SECTION(".init") extern char _SDA2_BASE_[]; + +typedef struct __rom_copy_info { + char* rom; + char* addr; + unsigned int size; +} __rom_copy_info; + +DECL_SECTION(".init") extern __rom_copy_info _rom_copy_info[]; + +typedef struct __bss_init_info { + char* addr; + unsigned int size; +} __bss_init_info; + +DECL_SECTION(".init") extern __bss_init_info _bss_init_info[]; + +typedef struct __eti_init_info { + void* eti_start; + void* eti_end; + void* code_start; + unsigned long code_size; +} __eti_init_info; + +DECL_SECTION(".init") extern __eti_init_info _eti_init_info[]; +DECL_SECTION(".init") extern const char _f_init_rom[]; +DECL_SECTION(".init") extern char _f_init[]; +DECL_SECTION(".init") extern char _e_init[]; +DECL_SECTION(".init") extern const char _f_text_rom[]; +DECL_SECTION(".init") extern char _f_text[]; +DECL_SECTION(".init") extern char _e_text[]; +DECL_SECTION(".init") extern const char _f_rodata_rom[]; +DECL_SECTION(".init") extern char _f_rodata[]; +DECL_SECTION(".init") extern char _e_rodata[]; +DECL_SECTION(".init") extern const char _fextab_rom[]; +DECL_SECTION(".init") extern char _fextab[]; +DECL_SECTION(".init") extern char _eextab[]; +DECL_SECTION(".init") extern const char _f_data_rom[]; +DECL_SECTION(".init") extern char _f_data[]; +DECL_SECTION(".init") extern char _e_data[]; +DECL_SECTION(".init") extern char _f_bss[]; +DECL_SECTION(".init") extern char _e_bss[]; +DECL_SECTION(".init") extern const char _f_sdata_rom[]; +DECL_SECTION(".init") extern char _f_sdata[]; +DECL_SECTION(".init") extern char _e_sdata[]; +DECL_SECTION(".init") extern char _f_sbss[]; +DECL_SECTION(".init") extern char _e_sbss[]; +DECL_SECTION(".init") extern const char _f_sdata2_rom[]; +DECL_SECTION(".init") extern char _f_sdata2[]; +DECL_SECTION(".init") extern char _e_sdata2[]; +DECL_SECTION(".init") extern char _f_sbss2[]; +DECL_SECTION(".init") extern char _e_sbss2[]; +DECL_SECTION(".init") extern const char _f_PPC_EMB_sdata0_rom[]; +DECL_SECTION(".init") extern char _f_PPC_EMB_sdata0[]; +DECL_SECTION(".init") extern char _e_PPC_EMB_sdata0[]; +DECL_SECTION(".init") extern char _f_PPC_EMB_sbss0[]; +DECL_SECTION(".init") extern char _e_PPC_EMB_sbss0[]; + + +#endif // __PPC_EABI_LINKER diff --git a/include/amcstubs/AmcExi2Stubs.h b/include/amcstubs/AmcExi2Stubs.h new file mode 100644 index 00000000..48298c34 --- /dev/null +++ b/include/amcstubs/AmcExi2Stubs.h @@ -0,0 +1,27 @@ +#ifndef AMCEXI2STUBS_H +#define AMCEXI2STUBS_H + +#include "dolphin/os.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef __OSInterruptHandler AmcEXICallback; + +typedef enum { AMC_EXI_NO_ERROR = 0, AMC_EXI_UNSELECTED } AmcExiError; + +void EXI2_Init(volatile u8**, AmcEXICallback); +void EXI2_EnableInterrupts(void); +u32 EXI2_Poll(void); +int EXI2_ReadN(void*, u32); +int EXI2_WriteN(const void*, u32); +void EXI2_Reserve(void); +void EXI2_Unreserve(void); +BOOL AMC_IsStub(void); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/include/asm_types.h b/include/asm_types.h new file mode 100644 index 00000000..02d75dc5 --- /dev/null +++ b/include/asm_types.h @@ -0,0 +1,84 @@ +#ifndef _ASM_TYPES +#define _ASM_TYPES + +// Special Purpose Registers (SPRs) +#define XER 1 +#define LR 8 +#define CTR 9 +#define DSISR 18 +#define DAR 19 +#define DEC 22 +#define SDR1 25 +#define SRR0 26 +#define SRR1 27 +#define SPRG0 272 +#define SPRG1 273 +#define SPRG2 274 +#define SPRG3 275 +#define EAR 282 +#define PVR 287 +#define IBAT0U 528 +#define IBAT0L 529 +#define IBAT1U 530 +#define IBAT1L 531 +#define IBAT2U 532 +#define IBAT2L 533 +#define IBAT3U 534 +#define IBAT3L 535 +#define DBAT0U 536 +#define DBAT0L 537 +#define DBAT1U 538 +#define DBAT1L 539 +#define DBAT2U 540 +#define DBAT2L 541 +#define DBAT3U 542 +#define DBAT3L 543 +#define GQR0 912 +#define GQR1 913 +#define GQR2 914 +#define GQR3 915 +#define GQR4 916 +#define GQR5 917 +#define GQR6 918 +#define GQR7 919 +#define HID2 920 +#define WPAR 921 +#define DMA_U 922 +#define DMA_L 923 +#define UMMCR0 936 +#define UPMC1 937 +#define UPMC2 938 +#define USIA 939 +#define UMMCR1 940 +#define UPMC3 941 +#define UPMC4 942 +#define USDA 943 +#define MMCR0 952 +#define PMC1 953 +#define PMC2 954 +#define SIA 955 +#define MMCR1 956 +#define PMC3 957 +#define PMC4 958 +#define SDA 959 +#define HID0 1008 +#define HID1 1009 +#define IABR 1010 +#define DABR 1013 +#define L2CR 1017 +#define ICTC 1019 +#define THRM1 1020 +#define THRM2 1021 +#define THRM3 1022 + +// Condition Registers (CRs) +#define cr0 0 +#define cr1 1 +#define cr2 2 +#define cr3 3 +#define cr4 4 +#define cr5 5 +#define cr6 6 +#define cr7 7 + +#endif // _ASM_TYPES diff --git a/include/ctype.h b/include/ctype.h index 559e7278..46064191 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -1,6 +1,7 @@ #ifndef _CTYPE_H #define _CTYPE_H +#include "dolphin/types.h" extern unsigned char __ctype_map[256]; extern unsigned char __lower_map[256]; @@ -22,19 +23,25 @@ extern unsigned char __upper_map[256]; #define __whitespace (__motion_char | __space_char) #define __control (__motion_char | __control_char) +#ifdef __MWERKS__ +#define DECL_WEAK __declspec(weak) +#else +#define DECL_WEAK __attribute__((weak)) +#endif + #ifdef __cplusplus extern "C" { #endif - __declspec(weak) int isalpha(int __c); - __declspec(weak) int isdigit(int __c); - __declspec(weak) int isspace(int __c); - __declspec(weak) int isupper(int __c); - __declspec(weak) int isxdigit(int __c); + DECL_WEAK int isalpha(int __c); + DECL_WEAK int isdigit(int __c); + DECL_WEAK int isspace(int __c); + DECL_WEAK int isupper(int __c); + DECL_WEAK int isxdigit(int __c); - __declspec(weak) int tolower(int __c); - __declspec(weak) int toupper(int __c); + DECL_WEAK int tolower(int __c); + DECL_WEAK int toupper(int __c); // added underscore to avoid naming conflicts inline int _isalpha(int c) { return (int)(__ctype_map[(u8)c] & __letter); } @@ -48,4 +55,4 @@ extern "C" #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/include/data_num/title.h b/include/data_num/title.h index 2d0ce603..13f41c0c 100644 --- a/include/data_num/title.h +++ b/include/data_num/title.h @@ -2,6 +2,9 @@ #define DATANUM_TITLE_H #include "datadir_enum.h" +#include "version.h" + +#if VERSION_NTSC enum { TITLE_NINTENDO_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 0), @@ -17,7 +20,43 @@ enum { TITLE_COPYRIGHT_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 10), TITLE_CHAR_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 11), TITLE_CUBE_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 12), - TITLE_SKY_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 13), + TITLE_SKY_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 13) }; -#endif \ No newline at end of file +#else + +enum { + TITLE_HUDSON_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 0), + TITLE_PROGRESSIVE_CHOOSE_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 1), + TITLE_PROGRESSIVE_ON_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 2), + TITLE_PROGRESSIVE_OFF_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 3), + TITLE_PROGRESSIVE_CURSOR_ON_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 4), + TITLE_PROGRESSIVE_CURSOR_OFF_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 5), + TITLE_BG_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 6), + TITLE_LOGO_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 7), + TITLE_COPYRIGHT_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 8), + TITLE_CHAR_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 9), + TITLE_CUBE_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 10), + TITLE_SKY_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 11), + TITLE_LANGUAGEBG_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 12), + TITLE_FLAG_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 13), + TITLE_FLAG_EN_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 14), + TITLE_FLAG_GE_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 15), + TITLE_FLAG_FR_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 16), + TITLE_FLAG_IT_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 17), + TITLE_FLAG_ES_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 18), + TITLE_PRESS_START_EN_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 19), + TITLE_PRESS_START_GE_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 20), + TITLE_PRESS_START_FR_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 21), + TITLE_PRESS_START_IT_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 22), + TITLE_PRESS_START_ES_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 23), + TITLE_LANGUAGE_EN_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 24), + TITLE_LANGUAGE_GE_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 25), + TITLE_LANGUAGE_FR_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 26), + TITLE_LANGUAGE_IT_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 27), + TITLE_LANGUAGE_ES_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 28) +}; + +#endif + +#endif diff --git a/include/data_num/win.h b/include/data_num/win.h index 3a38070f..07e510fb 100644 --- a/include/data_num/win.h +++ b/include/data_num/win.h @@ -36,7 +36,7 @@ enum { WIN_CARD_BOX2_ICON_ANM = DATA_MAKE_NUM(DATADIR_WIN, 29), WIN_CARD_BOX3_ICON_ANM = DATA_MAKE_NUM(DATADIR_WIN, 30), WIN_CARD_BANNER_ANM = DATA_MAKE_NUM(DATADIR_WIN, 31), - WIN_SAVE_BG_ANM = DATA_MAKE_NUM(DATADIR_WIN, 32), + WIN_SAVE_BG_ANM = DATA_MAKE_NUM(DATADIR_WIN, 32) }; -#endif \ No newline at end of file +#endif diff --git a/include/dol2asm.h b/include/dol2asm.h new file mode 100644 index 00000000..3b28a774 --- /dev/null +++ b/include/dol2asm.h @@ -0,0 +1,90 @@ +#ifndef DOL2ASM +#define DOL2ASM + +// this helps remove useless error from the linter when using vscode. +#ifdef __MWERKS__ + +#ifdef __cplusplus +#define SECTION_INIT extern "C" __declspec(section ".init") +#define SECTION_RODATA __declspec(section ".rodata") +#define SECTION_DATA __declspec(section ".data") +#define SECTION_SDATA __declspec(section ".sdata") +#define SECTION_SDATA2 __declspec(section ".sdata2") +#define SECTION_BSS __declspec(section ".data") +#define SECTION_SBSS __declspec(section ".sdata") +#define SECTION_SBSS2 __declspec(section ".sdata2") +#define SECTION_CTORS extern "C" __declspec(section ".ctors") +#define SECTION_DTORS extern "C" __declspec(section ".dtors") +#define SECTION_EXTAB extern "C" __declspec(section "extab_") +#define SECTION_EXTABINDEX extern "C" __declspec(section "extabindex_") +#define SECTION_DEAD extern "C" __declspec(section ".dead") +#define SECTION_CTORS10 __declspec(section ".ctors$10") +#define SECTION_CTORS15 __declspec(section ".ctors$15") +#define SECTION_DTORS10 __declspec(section ".dtors$10") +#define SECTION_DTORS15 __declspec(section ".dtors$15") +#define COMPILER_STRIP_GATE(NAME, VALUE) SECTION_DEAD void* const cg_##NAME = (void*)(VALUE) +#define REGISTER_CTORS(ADDR, FUNCTION) SECTION_CTORS void* const _ctors_##ADDR = (void*)(FUNCTION); +#else +#define SECTION_INIT __declspec(section ".init") +#define SECTION_RODATA __declspec(section ".rodata") +#define SECTION_DATA __declspec(section ".data") +#define SECTION_SDATA __declspec(section ".sdata") +#define SECTION_SDATA2 __declspec(section ".sdata2") +#define SECTION_BSS __declspec(section ".data") +#define SECTION_SBSS __declspec(section ".sdata") +#define SECTION_SBSS2 __declspec(section ".sdata2") +#define SECTION_CTORS __declspec(section ".ctors") +#define SECTION_DTORS __declspec(section ".dtors") +#define SECTION_EXTAB __declspec(section "extab_") +#define SECTION_EXTABINDEX __declspec(section "extabindex_") +#define SECTION_DEAD __declspec(section ".dead") +#define SECTION_CTORS10 __declspec(section ".ctors$10") +#define SECTION_CTORS15 __declspec(section ".ctors$15") +#define SECTION_DTORS10 __declspec(section ".dtors$10") +#define SECTION_DTORS15 __declspec(section ".dtors$15") +#define COMPILER_STRIP_GATE(NAME, VALUE) SECTION_DEAD void* const cg_##NAME = (void*)(VALUE) +#define REGISTER_CTORS(ADDR, FUNCTION) SECTION_CTORS void* const _ctors_##ADDR = (void*)(FUNCTION); +#endif + +#else +#define SECTION_INIT +#define SECTION_RODATA +#define SECTION_DATA +#define SECTION_SDATA +#define SECTION_SDATA2 +#define SECTION_BSS +#define SECTION_SBSS +#define SECTION_SBSS2 +#define SECTION_CTORS +#define SECTION_DTORS +#define SECTION_EXTAB +#define SECTION_EXTABINDEX +#define SECTION_DEAD +#define SECTION_CTORS10 +#define SECTION_CTORS15 +#define SECTION_DTORS10 +#define SECTION_DTORS15 +#define COMPILER_STRIP_GATE(...) +#define REGISTER_CTORS(...) + +// vscode doesn't like asm and nofralloc very much +#define asm +#define nofralloc +#endif + +// floating-point constants +// TODO: move to different header +#define _HUGE_ENUF 1e+300 +#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF)) +#define HUGE_VAL ((double)INFINITY) +#define HUGE_VALL ((long double)INFINITY) + +#define DOUBLE_INF HUGE_VAL + +#pragma section ".dead" +#pragma section ".ctors$10" +#pragma section ".ctors$15" +#pragma section ".dtors$10" +#pragma section ".dtors$15" + +#endif /* DOL2ASM */ diff --git a/include/dolphin/CARDPriv.h b/include/dolphin/CARDPriv.h index ca28f6e1..8e531702 100644 --- a/include/dolphin/CARDPriv.h +++ b/include/dolphin/CARDPriv.h @@ -21,103 +21,149 @@ extern "C" { #define CARD_MAX_MOUNT_STEP (CARD_NUM_SYSTEM_BLOCK + 2) typedef struct CARDDir { - u8 gameName[4]; - u8 company[2]; - u8 _padding0; - u8 bannerFormat; - u8 fileName[CARD_FILENAME_MAX]; - u32 time; // seconds since 01/01/2000 midnight + u8 gameName[4]; + u8 company[2]; + u8 _padding0; + u8 bannerFormat; + u8 fileName[CARD_FILENAME_MAX]; + u32 time; // seconds since 01/01/2000 midnight - u32 iconAddr; // 0xffffffff if not used - u16 iconFormat; - u16 iconSpeed; + u32 iconAddr; // 0xffffffff if not used + u16 iconFormat; + u16 iconSpeed; - u8 permission; - u8 copyTimes; - u16 startBlock; - u16 length; - u8 _padding1[2]; + u8 permission; + u8 copyTimes; + u16 startBlock; + u16 length; + u8 _padding1[2]; - u32 commentAddr; // 0xffffffff if not used + u32 commentAddr; // 0xffffffff if not used } CARDDir; typedef struct CARDDirCheck { - u8 padding0[64 - 2 * 4]; - u16 padding1; - s16 checkCode; - u16 checkSum; - u16 checkSumInv; + u8 padding0[64 - 2 * 4]; + u16 padding1; + s16 checkCode; + u16 checkSum; + u16 checkSumInv; } CARDDirCheck; typedef struct CARDControl { - BOOL attached; - s32 result; - u16 size; - u16 pageSize; - s32 sectorSize; - u16 cBlock; - u16 vendorID; - s32 latency; - u8 id[12]; - int mountStep; - int formatStep; - u32 scramble; - DSPTaskInfo task; - void* workArea; - CARDDir* currentDir; - u16* currentFat; - OSThreadQueue threadQueue; - u8 cmd[9]; - s32 cmdlen; - vu32 mode; - int retry; - int repeat; - u32 addr; - void* buffer; - s32 xferred; - u16 freeNo; - u16 startBlock; - CARDFileInfo* fileInfo; - CARDCallback extCallback; - CARDCallback txCallback; - CARDCallback exiCallback; - CARDCallback apiCallback; - CARDCallback xferCallback; - CARDCallback eraseCallback; - CARDCallback unlockCallback; - OSAlarm alarm; - u32 cid; - const DVDDiskID* diskID; + BOOL attached; + s32 result; + u16 size; + u16 pageSize; + s32 sectorSize; + u16 cBlock; + u16 vendorID; + s32 latency; + u8 id[12]; + int mountStep; + int formatStep; + u32 scramble; + DSPTaskInfo task; + void *workArea; + CARDDir *currentDir; + u16 *currentFat; + OSThreadQueue threadQueue; + u8 cmd[9]; + s32 cmdlen; + vu32 mode; + int retry; + int repeat; + u32 addr; + void *buffer; + s32 xferred; + u16 freeNo; + u16 startBlock; + CARDFileInfo *fileInfo; + CARDCallback extCallback; + CARDCallback txCallback; + CARDCallback exiCallback; + CARDCallback apiCallback; + CARDCallback xferCallback; + CARDCallback eraseCallback; + CARDCallback unlockCallback; + OSAlarm alarm; + u32 cid; + const DVDDiskID *diskID; } CARDControl; typedef struct CARDID { - u8 serial[32]; // flashID[12] + timebase[8] + counterBias[4] + language[4] + XXX[4] - u16 deviceID; - u16 size; - u16 encode; // character set -- 0: S-JIS, 1: ANSI + u8 serial[32]; // flashID[12] + timebase[8] + counterBias[4] + language[4] + XXX[4] + u16 deviceID; + u16 size; + u16 encode; // character set -- 0: S-JIS, 1: ANSI - u8 padding[512 - 32 - 5 * 2]; + u8 padding[512 - 32 - 5 * 2]; - u16 checkSum; - u16 checkSumInv; + u16 checkSum; + u16 checkSumInv; } CARDID; void __CARDDefaultApiCallback(s32 chan, s32 result); +s32 __CARDEraseSector(s32 chan, u32 addr, CARDCallback callback); +s32 __CARDPutControlBlock(struct CARDControl *card, s32 result); +void __CARDSyncCallback(s32 chan, s32 result); +u16 *__CARDGetFatBlock(CARDControl *card); -#define CARDIsValidBlockNo(card, iBlock) \ - (CARD_NUM_SYSTEM_BLOCK <= (iBlock) && (iBlock) < (card)->cBlock) -#define __CARDGetDirCheck(dir) ((CARDDirCheck*)&(dir)[CARD_MAX_FILE]) +/* CARDBios */ +void __CARDExtHandler(s32 chan, OSContext *context); +void __CARDExiHandler(s32 chan, OSContext *context); +void __CARDTxHandler(s32 chan, OSContext *context); +void __CARDUnlockedHandler(s32 chan, OSContext *context); +s32 __CARDEnableInterrupt(s32 chan, BOOL enable); +s32 __CARDReadStatus(s32 chan, u8 *status); +s32 __CARDReadVendorID(s32 chan, u16 *vendorId); +s32 __CARDClearStatus(s32 chan); +s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallback); +s32 __CARDReadSegment(s32 chan, CARDCallback callback); +s32 __CARDWritePage(s32 chan, CARDCallback callback); +u16 __CARDGetFontEncode(void); +void __CARDSetDiskID(const DVDDiskID *id); +s32 __CARDGetControlBlock(s32 chan, struct CARDControl **pcard); +s32 __CARDSync(s32 chan); -CARDDir* __CARDGetDirBlock(CARDControl* card); -u16* __CARDGetFatBlock(CARDControl* card); -s32 __CARDUpdateFatBlock(s32 chan, u16* fat, CARDCallback callback); -void __CARDCheckSum(void* ptr, int length, u16* checkSum, u16* checkSumInv); -u16 __CARDGetFontEncode(); -void __CARDExiHandler(s32 chan, OSContext* context); -void __CARDExtHandler(s32 chan, OSContext* context); -void __CARDUnlockedHandler(s32 chan, OSContext* context); -s32 __CARDAccess(CARDControl* card, CARDDir* ent); -BOOL __CARDIsWritable(CARDDir* ent); +/* CARDBlock */ +s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback); +s32 __CARDFreeBlock(s32 chan, u16 nBlock, CARDCallback callback); +s32 __CARDUpdateFatBlock(s32 chan, u16 *fat, CARDCallback callback); + +/* CARDCheck */ +void __CARDCheckSum(void *ptr, int length, u16 *checksum, u16 *checksumInv); +s32 __CARDVerify(CARDControl *card); + +/* CARDDir */ +CARDDir *__CARDGetDirBlock(CARDControl *card); +s32 __CARDUpdateDir(s32 chan, CARDCallback callback); + +/* CARDFormat */ +s32 __CARDFormatRegionAsync(s32 chan, u16 encode, CARDCallback callback); + +/* CARDMount */ +void __CARDMountCallback(s32 chan, s32 result); + +/* CARDOpen */ +BOOL __CARDCompareFileName(CARDDir *ent, const char *fileName); +s32 __CARDAccess(CARDControl *card, CARDDir *ent); +BOOL __CARDIsPublic(CARDDir *ent); +s32 __CARDIsReadable(CARDControl *card, CARDDir *ent); +s32 __CARDGetFileNo(CARDControl *card, const char *fileName, s32 *pfileNo); +BOOL __CARDIsOpened(CARDControl *card, s32 fileNo); + +/* CARDRdwr */ +s32 __CARDRead(s32 chan, u32 addr, s32 length, void *dst, CARDCallback callback); +s32 __CARDWrite(s32 chan, u32 addr, s32 length, void *dst, CARDCallback callback); + +/* CARDRead */ +s32 __CARDSeek(CARDFileInfo *fileInfo, s32 length, s32 offset, CARDControl **pcard); + +/* CARDUnlock */ +s32 __CARDUnlock(s32 chan, u8 flashID[12]); + +#define CARDIsValidBlockNo(card, iBlock) (CARD_NUM_SYSTEM_BLOCK <= (iBlock) && (iBlock) < (card)->cBlock) +#define __CARDGetDirCheck(dir) ((CARDDirCheck *)&(dir)[CARD_MAX_FILE]) #define TRUNC(n, a) (((u32)(n)) & ~((a)-1)) #define OFFSET(n, a) (((u32)(n)) & ((a)-1)) diff --git a/include/dolphin/OSRtcPriv.h b/include/dolphin/OSRtcPriv.h index 949c71e7..fe1df144 100644 --- a/include/dolphin/OSRtcPriv.h +++ b/include/dolphin/OSRtcPriv.h @@ -4,30 +4,33 @@ #include typedef struct OSSram { - u16 checkSum; - u16 checkSumInv; - u32 ead0; - u32 ead1; - u32 counterBias; - s8 displayOffsetH; - u8 ntd; - u8 language; - u8 flags; + u16 checkSum; + u16 checkSumInv; + u32 ead0; + u32 ead1; + u32 counterBias; + s8 displayOffsetH; + u8 ntd; + u8 language; + u8 flags; } OSSram; typedef struct OSSramEx { - u8 flashID[2][12]; - u32 wirelessKeyboardID; - u16 wirelessPadID[4]; - u8 dvdErrorCode; - u8 _padding0; - u8 flashIDCheckSum[2]; - u16 gbs; - u8 _padding1[2]; + u8 flashID[2][12]; + u32 wirelessKeyboardID; + u16 wirelessPadID[4]; + u8 dvdErrorCode; + u8 _padding0; + u8 flashIDCheckSum[2]; + u16 gbs; + u8 _padding1[2]; } OSSramEx; -OSSram* __OSLockSram(); -OSSramEx* __OSLockSramEx(); +void __OSInitSram(); +OSSram *__OSLockSram(); +BOOL __OSSyncSram(); +BOOL __OSUnlockSram(BOOL commit); +OSSramEx *__OSLockSramEx(); void OSSetWirelessID(s32 chan, u16 id); u16 OSGetWirelessID(s32 chan); diff --git a/include/dolphin/ai.h b/include/dolphin/ai.h index e998e831..bba3a596 100644 --- a/include/dolphin/ai.h +++ b/include/dolphin/ai.h @@ -9,6 +9,12 @@ extern "C" { typedef void (*AISCallback)(u32 count); typedef void (*AIDCallback)(); +#define AI_STREAM_START 1 +#define AI_STREAM_STOP 0 + +#define AI_SAMPLERATE_32KHZ 0 +#define AI_SAMPLERATE_48KHZ 1 + AIDCallback AIRegisterDMACallback(AIDCallback callback); void AIInitDMA(u32 start_addr, u32 length); BOOL AIGetDMAEnableFlag(); diff --git a/include/dolphin/demo.h b/include/dolphin/demo.h new file mode 100644 index 00000000..b712723a --- /dev/null +++ b/include/dolphin/demo.h @@ -0,0 +1,72 @@ +#ifndef _DOLPHIN_DEMO +#define _DOLPHIN_DEMO + +#include +#include + +struct STRUCT_MENU_ITEM { + /* 0x00 */ char * name; + /* 0x04 */ unsigned long flags; + /* 0x08 */ void (* function)(struct STRUCT_MENU *, unsigned long, unsigned long *); + /* 0x0C */ struct STRUCT_MENU * link; +}; + +struct STRUCT_MENU { + /* 0x00 */ char * title; + /* 0x04 */ struct STRUCT_DEMOWIN * handle; + /* 0x08 */ struct STRUCT_MENU_ITEM * items; + /* 0x0C */ long max_display_items; + /* 0x10 */ unsigned long flags; + /* 0x14 */ void (* cb_open)(struct STRUCT_MENU *, unsigned long); + /* 0x18 */ void (* cb_move)(struct STRUCT_MENU *, unsigned long); + /* 0x1C */ void (* cb_select)(struct STRUCT_MENU *, unsigned long); + /* 0x20 */ void (* cb_cancel)(struct STRUCT_MENU *, unsigned long); + /* 0x24 */ long num_display_items; + /* 0x28 */ long num_items; + /* 0x2C */ unsigned long max_str_len; + /* 0x30 */ long curr_pos; + /* 0x34 */ long display_pos; +}; + +typedef struct { + /* 0x00 */ struct PADStatus pads[4]; + /* 0x30 */ unsigned long button[4]; + /* 0x40 */ unsigned long old_button[4]; + /* 0x50 */ unsigned long changed_button[4]; + /* 0x60 */ unsigned long repeat_button[4]; + /* 0x70 */ unsigned long repeat_ctr[4]; +} DEMOWinPadInfo; + +struct STRUCT_LISTBOX_ITEM { + /* 0x00 */ char * name; // offset 0x0, size 0x4 + /* 0x04 */ unsigned long flags; // offset 0x4, size 0x4 +}; + +struct STRUCT_LISTBOX { + /* 0x00 */ char * title; // offset 0x0, size 0x4 + /* 0x04 */ struct STRUCT_DEMOWIN * handle; // offset 0x4, size 0x4 + /* 0x08 */ struct STRUCT_LISTBOX_ITEM * items; // offset 0x8, size 0x4 + /* 0x0C */ long max_display_items; // offset 0xC, size 0x4 + /* 0x10 */ unsigned long flags; // offset 0x10, size 0x4 + /* 0x14 */ long num_display_items; // offset 0x14, size 0x4 + /* 0x18 */ long num_items; // offset 0x18, size 0x4 + /* 0x1C */ unsigned long max_str_len; // offset 0x1C, size 0x4 + /* 0x20 */ long curr_pos; // offset 0x20, size 0x4 + /* 0x24 */ long display_pos; // offset 0x24, size 0x4 + /* 0x28 */ int cursor_state; // offset 0x28, size 0x4 +}; + +extern unsigned long DEMOFontBitmap[768]; + +#include +#include +#include +#include +#include + +// unsorted externs +extern void DEMOPrintf(s16 x, s16 y, s16 priority, char *str, ...); + +extern struct _GXRenderModeObj *DEMOGetRenderModeObj(); + +#endif diff --git a/include/dolphin/demo/DEMOInit.h b/include/dolphin/demo/DEMOInit.h new file mode 100644 index 00000000..00bcd849 --- /dev/null +++ b/include/dolphin/demo/DEMOInit.h @@ -0,0 +1,21 @@ +#ifndef _DOLPHIN_DEMOINIT +#define _DOLPHIN_DEMOINIT + +#include + +extern void *DemoFrameBuffer1; +extern void *DemoFrameBuffer2; +extern void *DemoCurrentBuffer; + +void DEMOInit(struct _GXRenderModeObj *mode); +void DEMOBeforeRender(); +void DEMODoneRender(); +void DEMOSwapBuffers(); +void DEMOSetTevColorIn(enum _GXTevStageID stage, enum _GXTevColorArg a, enum _GXTevColorArg b, enum _GXTevColorArg c, enum _GXTevColorArg d); +void DEMOSetTevOp(enum _GXTevStageID id, enum _GXTevMode mode); +struct _GXRenderModeObj *DEMOGetRenderModeObj(); +u32 DEMOGetCurrentBuffer(void); +void DEMOEnableBypassWorkaround(unsigned long timeoutFrames); +void DEMOReInit(struct _GXRenderModeObj *mode); + +#endif diff --git a/include/dolphin/demo/DEMOPad.h b/include/dolphin/demo/DEMOPad.h new file mode 100644 index 00000000..34bcc6b6 --- /dev/null +++ b/include/dolphin/demo/DEMOPad.h @@ -0,0 +1,26 @@ +#ifndef _DOLPHIN_DEMOPAD +#define _DOLPHIN_DEMOPAD + +#include + +typedef struct { + /* 0x00 */ struct PADStatus pst; + /* 0x0C */ u16 buttonDown; + /* 0x0E */ u16 buttonUp; + /* 0x10 */ u16 dirs; + /* 0x12 */ u16 dirsNew; + /* 0x14 */ u16 dirsReleased; + /* 0x16 */ s16 stickDeltaX; + /* 0x18 */ s16 stickDeltaY; + /* 0x1A */ s16 substickDeltaX; + /* 0x1C */ s16 substickDeltaY; +} DEMODMPad; + +extern DEMODMPad DemoPad[4]; + +extern u32 DemoNumValidPads; + +void DEMOPadRead(); +void DEMOPadInit(); + +#endif diff --git a/include/dolphin/demo/DEMOPuts.h b/include/dolphin/demo/DEMOPuts.h new file mode 100644 index 00000000..219ca544 --- /dev/null +++ b/include/dolphin/demo/DEMOPuts.h @@ -0,0 +1,27 @@ +#ifndef _DOLPHIN_DEMOPUTS +#define _DOLPHIN_DEMOPUTS + +#include + +typedef enum { + DMTF_POINTSAMPLE, + DMTF_BILERP +} DMTexFlt; + +typedef enum { DM_FT_OPQ, DM_FT_RVS, DM_FT_XLU } DMFontType; + +void DEMOSetFontType(DMFontType attr); +void DEMOLoadFont(enum _GXTexMapID texMap, enum _GXTexMtx texMtx, DMTexFlt texFlt); +void DEMOSetupScrnSpc(long width, long height, float depth); +void DEMOInitCaption(long font_type, long width, long height); +void DEMOPuts(s16 x, s16 y, s16 z, char *string); +void DEMOPrintf(s16 x, s16 y, s16 z, char *fmt, ...); +struct OSFontHeader *DEMOInitROMFont(); +void DEMOSetROMFontSize(s16 size, s16 space); +int DEMORFPuts(s16 x, s16 y, s16 z, char *string); +int DEMORFPutsEx(s16 x, s16 y, s16 z, char *string, s16 maxWidth, int length); +int DEMORFPrintf(s16 x, s16 y, s16 z, char *fmt, ...); +char *DEMODumpROMFont(char *string); +int DEMOGetRFTextWidth(char *string); + +#endif diff --git a/include/dolphin/demo/DEMOStats.h b/include/dolphin/demo/DEMOStats.h new file mode 100644 index 00000000..92a61bf6 --- /dev/null +++ b/include/dolphin/demo/DEMOStats.h @@ -0,0 +1,38 @@ +#ifndef _DOLPHIN_DEMOSTATS +#define _DOLPHIN_DEMOSTATS + +typedef enum DEMO_STAT_TYPE { + DEMO_STAT_GP0 = 0, + DEMO_STAT_GP1 = 1, + DEMO_STAT_MEM = 2, + DEMO_STAT_PIX = 3, + DEMO_STAT_VC = 4, + DEMO_STAT_FR = 5, + DEMO_STAT_TBW = 6, + DEMO_STAT_TBP = 7, + DEMO_STAT_MYC = 8, + DEMO_STAT_MYR = 9 +} DEMO_STAT_TYPE; + +typedef struct DemoStatData { + char text[50]; + DEMO_STAT_TYPE stat_type; + unsigned long stat; + unsigned long count; +} DemoStatData; + +typedef enum { + DEMO_STAT_TL = 0, + DEMO_STAT_BL = 1, + DEMO_STAT_TLD = 2, + DEMO_STAT_BLD = 3, + 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); + +#endif diff --git a/include/dolphin/demo/DEMOWin.h b/include/dolphin/demo/DEMOWin.h new file mode 100644 index 00000000..2c24b50d --- /dev/null +++ b/include/dolphin/demo/DEMOWin.h @@ -0,0 +1,77 @@ +#ifndef _DOLPHIN_DEMOWIN +#define _DOLPHIN_DEMOWIN + +#include +#include + +enum DEMOWinItem { + DEMOWIN_ITEM_CAP, + DEMOWIN_ITEM_BKGND, + DEMOWIN_ITEM_BORDER, + DEMOWIN_ITEM_DEFAULT +}; + +// flags +#define DEMOWIN_FLAGS_INIT (1 << 0) +#define DEMOWIN_FLAGS_OPENED (1 << 1) + +struct STRUCT_DEMOWIN { + /* 0x00 */ long x1; + /* 0x04 */ long y1; + /* 0x08 */ long x2; + /* 0x0C */ long y2; + /* 0x10 */ unsigned long priority; + /* 0x14 */ unsigned long flags; + /* 0x18 */ unsigned short x_cal; + /* 0x1A */ unsigned short y_cal; + /* 0x1C */ unsigned short pixel_width; + /* 0x1E */ unsigned short pixel_height; + /* 0x20 */ unsigned short char_width; + /* 0x22 */ unsigned short char_height; + /* 0x24 */ unsigned short num_scroll_lines; + /* 0x26 */ unsigned short total_lines; + /* 0x28 */ unsigned short curr_output_line; + /* 0x2A */ unsigned short curr_output_col; + /* 0x2C */ unsigned short curr_view_line; + /* 0x2E */ signed short cursor_line; + /* 0x30 */ char * caption; + /* 0x34 */ unsigned char * buffer; + /* 0x38 */ GXColor bkgnd; + /* 0x3C */ GXColor cap; + /* 0x40 */ GXColor border; + /* 0x44 */ void (* refresh)(struct STRUCT_DEMOWIN *); + /* 0x48 */ struct STRUCT_DEMOWIN * next; + /* 0x4C */ struct STRUCT_DEMOWIN * prev; + /* 0x50 */ void * parent; +}; + +// functions +void DEMOWinInit(); +struct STRUCT_DEMOWIN * DEMOWinCreateWindow(s32 x1, s32 y1, s32 x2, s32 y2, char * caption, u16 scroll, void * func); +void DEMOWinDestroyWindow(struct STRUCT_DEMOWIN * handle); +void DEMOWinOpenWindow(struct STRUCT_DEMOWIN * handle); +void DEMOWinCloseWindow(struct STRUCT_DEMOWIN * handle); +void DEMOWinSetWindowColor(struct STRUCT_DEMOWIN * handle, enum DEMOWinItem item, u8 r, u8 g, u8 b, u8 a); +void DEMOWinLogPrintf(struct STRUCT_DEMOWIN * handle, char * fmt, ...); +void DEMOWinPrintfXY(struct STRUCT_DEMOWIN * handle, u16 col, u16 row, char * fmt, ...); +void DEMOWinScrollWindow(struct STRUCT_DEMOWIN * handle, u32 dir); +void DEMOWinBringToFront(struct STRUCT_DEMOWIN * handle); +void DEMOWinSendToBack(struct STRUCT_DEMOWIN * handle); +void DEMOWinClearRow(struct STRUCT_DEMOWIN * handle, u16 row); +void DEMOWinClearWindow(struct STRUCT_DEMOWIN * handle); +void DEMOWinClearBuffer(struct STRUCT_DEMOWIN * handle); +void DEMOWinRefresh(); +struct STRUCT_MENU * DEMOWinCreateMenuWindow(struct STRUCT_MENU * menu, u16 x, u16 y); +void DEMOWinDestroyMenuWindow(struct STRUCT_MENU * menu); +u32 DEMOWinMenuChild(struct STRUCT_MENU * menu, int child_flag); +void DEMOWinPadInit(DEMOWinPadInfo *p); +void DEMOWinPadRead(DEMOWinPadInfo *p); +void DEMOWinSetRepeat(unsigned long threshold, unsigned long rate); +void DEMOWinResetRepeat(); +struct STRUCT_LISTBOX * DEMOWinCreateListWindow(struct STRUCT_LISTBOX * list, unsigned short x, unsigned short y); +void DEMOWinDestroyListWindow(struct STRUCT_LISTBOX * list); +void DEMOWinListSetCursor(struct STRUCT_LISTBOX * list, int x); +long DEMOWinListScrollList(struct STRUCT_LISTBOX * list, unsigned long dir); +long DEMOWinListMoveCursor(struct STRUCT_LISTBOX * list, unsigned long dir); + +#endif diff --git a/include/dolphin/demoPriv.h b/include/dolphin/demoPriv.h new file mode 100644 index 00000000..bce6d3bc --- /dev/null +++ b/include/dolphin/demoPriv.h @@ -0,0 +1,11 @@ +#ifndef _DOLPHIN_DEMOPRIV +#define _DOLPHIN_DEMOPRIV + +#include + +extern struct STRUCT_DEMOWIN * __first_node; +extern struct STRUCT_DEMOWIN * __last_node; +extern struct STRUCT_DEMOWIN * __curr_node; +extern struct _GXRenderModeObj * __rmp; + +#endif diff --git a/include/dolphin/dsp.h b/include/dolphin/dsp.h index 368138c9..18df2eb6 100644 --- a/include/dolphin/dsp.h +++ b/include/dolphin/dsp.h @@ -59,6 +59,7 @@ DSPTaskInfo* DSPAddTask(DSPTaskInfo* task); void __DSP_exec_task(DSPTaskInfo* curr, DSPTaskInfo* next); void __DSP_boot_task(DSPTaskInfo* task); +void __DSP_insert_task(DSPTaskInfo* task); void __DSP_remove_task(DSPTaskInfo* task); void __DSP_add_task(DSPTaskInfo* task); void __DSP_debug_printf(const char* fmt, ...); diff --git a/include/dolphin/dvd.h b/include/dolphin/dvd.h index cc6e1fa9..d8149fa2 100644 --- a/include/dolphin/dvd.h +++ b/include/dolphin/dvd.h @@ -89,6 +89,7 @@ void DVDInit(); BOOL DVDClose(DVDFileInfo* f); BOOL DVDSetAutoFatalMessaging(BOOL); void DVDReset(); +int DVDSetAutoInvalidation(int autoInval); s32 DVDCancel(DVDCommandBlock* block); BOOL DVDOpen(char* fileName, DVDFileInfo* fileInfo); BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo); diff --git a/include/dolphin/exi.h b/include/dolphin/exi.h new file mode 100644 index 00000000..5187b6a8 --- /dev/null +++ b/include/dolphin/exi.h @@ -0,0 +1,27 @@ +#ifndef _DOLPHIN_EXI +#define _DOLPHIN_EXI + +#include + +typedef void (*EXICallback)(s32 chan, OSContext *context); + +EXICallback EXISetExiCallback(s32 channel, EXICallback callback); + +void EXIInit(void); +BOOL EXILock(s32 channel, u32 device, EXICallback callback); +BOOL EXIUnlock(s32 channel); +BOOL EXISelect(s32 channel, u32 device, u32 frequency); +BOOL EXIDeselect(s32 channel); +BOOL EXIImm(s32 channel, void *buffer, s32 length, u32 type, EXICallback callback); +BOOL EXIImmEx(s32 channel, void *buffer, s32 length, u32 type); +BOOL EXIDma(s32 channel, void *buffer, s32 length, u32 type, EXICallback callback); +BOOL EXISync(s32 channel); +BOOL EXIProbe(s32 channel); +s32 EXIProbeEx(s32 channel); +BOOL EXIAttach(s32 channel, EXICallback callback); +BOOL EXIDetach(s32 channel); +u32 EXIGetState(s32 channel); +s32 EXIGetID(s32 channel, u32 device, u32 *id); +void EXIProbeReset(void); + +#endif diff --git a/include/dolphin/gx/GXBump.h b/include/dolphin/gx/GXBump.h index 74aeffed..cc2cb976 100644 --- a/include/dolphin/gx/GXBump.h +++ b/include/dolphin/gx/GXBump.h @@ -19,8 +19,9 @@ void GXSetTevIndirect(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTe GXIndTexBiasSel bias_sel, GXIndTexMtxID matrix_sel, GXIndTexWrap wrap_s, GXIndTexWrap wrap_t, GXBool add_prev, GXBool ind_lod, GXIndTexAlphaSel alpha_sel); -void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, - GXBool replace_mode, GXIndTexMtxID matrix_sel); +//Must be implicit to match m455dll +//void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, +// GXBool replace_mode, GXIndTexMtxID matrix_sel); void GXSetTevIndTile (GXTevStageID tev_stage, GXIndTexStageID ind_stage, u16 tilesize_s, u16 tilesize_t, diff --git a/include/dolphin/gx/GXEnum.h b/include/dolphin/gx/GXEnum.h index d6fed014..cf924f01 100644 --- a/include/dolphin/gx/GXEnum.h +++ b/include/dolphin/gx/GXEnum.h @@ -23,7 +23,7 @@ typedef u8 GXBool; typedef enum _GXProjectionType { GX_PERSPECTIVE, - GX_ORTHOGRAPHIC, + GX_ORTHOGRAPHIC } GXProjectionType; typedef enum _GXCompare { @@ -34,7 +34,7 @@ typedef enum _GXCompare { GX_GREATER, GX_NEQUAL, GX_GEQUAL, - GX_ALWAYS, + GX_ALWAYS } GXCompare; typedef enum _GXAlphaOp { @@ -42,20 +42,20 @@ typedef enum _GXAlphaOp { GX_AOP_OR, GX_AOP_XOR, GX_AOP_XNOR, - GX_MAX_ALPHAOP, + GX_MAX_ALPHAOP } GXAlphaOp; typedef enum _GXZFmt16 { GX_ZC_LINEAR, GX_ZC_NEAR, GX_ZC_MID, - GX_ZC_FAR, + GX_ZC_FAR } GXZFmt16; typedef enum _GXGamma { GX_GM_1_0, GX_GM_1_7, - GX_GM_2_2, + GX_GM_2_2 } GXGamma; typedef enum _GXPixelFmt { @@ -66,7 +66,7 @@ typedef enum _GXPixelFmt { GX_PF_Y8, GX_PF_U8, GX_PF_V8, - GX_PF_YUV420, + GX_PF_YUV420 } GXPixelFmt; typedef enum _GXPrimitive { @@ -76,7 +76,7 @@ typedef enum _GXPrimitive { GX_TRIANGLEFAN = 0xA0, GX_LINES = 0xA8, GX_LINESTRIP = 0xB0, - GX_POINTS = 0xB8, + GX_POINTS = 0xB8 } GXPrimitive; typedef enum _GXVtxFmt { @@ -88,7 +88,7 @@ typedef enum _GXVtxFmt { GX_VTXFMT5, GX_VTXFMT6, GX_VTXFMT7, - GX_MAX_VTXFMT, + GX_MAX_VTXFMT } GXVtxFmt; typedef enum _GXAttr { @@ -119,7 +119,7 @@ typedef enum _GXAttr { GX_LIGHT_ARRAY, GX_VA_NBT, GX_VA_MAX_ATTR, - GX_VA_NULL = 0xFF, + GX_VA_NULL = 0xFF } GXAttr; #define GX_MAX_VTXDESCLIST_SZ (GX_VA_MAX_ATTR + 1) @@ -128,7 +128,7 @@ typedef enum _GXAttrType { GX_NONE, GX_DIRECT, GX_INDEX8, - GX_INDEX16, + GX_INDEX16 } GXAttrType; #define _GX_TF_CTF 0x20 @@ -164,20 +164,20 @@ typedef enum _GXTexFmt { GX_CTF_Z8L = 0xA | _GX_TF_ZTF | _GX_TF_CTF, GX_CTF_Z16L = 0xC | _GX_TF_ZTF | _GX_TF_CTF, - GX_TF_A8 = GX_CTF_A8, + GX_TF_A8 = GX_CTF_A8 } GXTexFmt; typedef enum _GXCITexFmt { GX_TF_C4 = 0x8, GX_TF_C8 = 0x9, - GX_TF_C14X2 = 0xa, + GX_TF_C14X2 = 0xa } GXCITexFmt; typedef enum _GXTexWrapMode { GX_CLAMP, GX_REPEAT, GX_MIRROR, - GX_MAX_TEXWRAPMODE, + GX_MAX_TEXWRAPMODE } GXTexWrapMode; typedef enum _GXTexFilter { @@ -186,14 +186,14 @@ typedef enum _GXTexFilter { GX_NEAR_MIP_NEAR, GX_LIN_MIP_NEAR, GX_NEAR_MIP_LIN, - GX_LIN_MIP_LIN, + GX_LIN_MIP_LIN } GXTexFilter; typedef enum _GXAnisotropy { GX_ANISO_1, GX_ANISO_2, GX_ANISO_4, - GX_MAX_ANISOTROPY, + GX_MAX_ANISOTROPY } GXAnisotropy; typedef enum _GXTexMapID { @@ -207,7 +207,7 @@ typedef enum _GXTexMapID { GX_TEXMAP7, GX_MAX_TEXMAP, GX_TEXMAP_NULL = 0xFF, - GX_TEX_DISABLE = 0x100, + GX_TEX_DISABLE = 0x100 } GXTexMapID; typedef enum _GXTexCoordID { @@ -220,7 +220,7 @@ typedef enum _GXTexCoordID { GX_TEXCOORD6, GX_TEXCOORD7, GX_MAX_TEXCOORD, - GX_TEXCOORD_NULL = 0xFF, + GX_TEXCOORD_NULL = 0xFF } GXTexCoordID; typedef enum _GXTevStageID { @@ -240,7 +240,7 @@ typedef enum _GXTevStageID { GX_TEVSTAGE13, GX_TEVSTAGE14, GX_TEVSTAGE15, - GX_MAX_TEVSTAGE, + GX_MAX_TEVSTAGE } GXTevStageID; typedef enum _GXTevMode { @@ -248,12 +248,12 @@ typedef enum _GXTevMode { GX_DECAL, GX_BLEND, GX_REPLACE, - GX_PASSCLR, + GX_PASSCLR } GXTevMode; typedef enum _GXTexMtxType { GX_MTX3x4, - GX_MTX2x4, + GX_MTX2x4 } GXTexMtxType; typedef enum _GXTexGenType { @@ -267,7 +267,7 @@ typedef enum _GXTexGenType { GX_TG_BUMP5, GX_TG_BUMP6, GX_TG_BUMP7, - GX_TG_SRTG, + GX_TG_SRTG } GXTexGenType; typedef enum _GXPosNrmMtx { @@ -280,7 +280,7 @@ typedef enum _GXPosNrmMtx { GX_PNMTX6 = 18, GX_PNMTX7 = 21, GX_PNMTX8 = 24, - GX_PNMTX9 = 27, + GX_PNMTX9 = 27 } GXPosNrmMtx; typedef enum _GXTexMtx { @@ -294,7 +294,7 @@ typedef enum _GXTexMtx { GX_TEXMTX7 = 51, GX_TEXMTX8 = 54, GX_TEXMTX9 = 57, - GX_IDENTITY = 60, + GX_IDENTITY = 60 } GXTexMtx; typedef enum _GXChannelID { @@ -307,7 +307,7 @@ typedef enum _GXChannelID { GX_COLOR_ZERO, GX_ALPHA_BUMP, GX_ALPHA_BUMPN, - GX_COLOR_NULL = 0xFF, + GX_COLOR_NULL = 0xFF } GXChannelID; typedef enum _GXTexGenSrc { @@ -332,7 +332,7 @@ typedef enum _GXTexGenSrc { GX_TG_TEXCOORD6, GX_TG_COLOR0, GX_TG_COLOR1, - GX_MAX_TEXGENSRC, + GX_MAX_TEXGENSRC } GXTexGenSrc; typedef enum _GXBlendMode { @@ -340,7 +340,7 @@ typedef enum _GXBlendMode { GX_BM_BLEND, GX_BM_LOGIC, GX_BM_SUBTRACT, - GX_MAX_BLENDMODE, + GX_MAX_BLENDMODE } GXBlendMode; typedef enum _GXBlendFactor { @@ -353,7 +353,7 @@ typedef enum _GXBlendFactor { GX_BL_DSTALPHA, GX_BL_INVDSTALPHA, GX_BL_DSTCLR = GX_BL_SRCCLR, - GX_BL_INVDSTCLR = GX_BL_INVSRCCLR, + GX_BL_INVDSTCLR = GX_BL_INVSRCCLR } GXBlendFactor; typedef enum _GXLogicOp { @@ -372,7 +372,7 @@ typedef enum _GXLogicOp { GX_LO_INVCOPY, GX_LO_INVOR, GX_LO_NAND, - GX_LO_SET, + GX_LO_SET } GXLogicOp; typedef enum _GXCompCnt { @@ -384,7 +384,7 @@ typedef enum _GXCompCnt { GX_CLR_RGB = 0, GX_CLR_RGBA = 1, GX_TEX_S = 0, - GX_TEX_ST = 1, + GX_TEX_ST = 1 } GXCompCnt; typedef enum _GXCompType { @@ -398,7 +398,7 @@ typedef enum _GXCompType { GX_RGBX8 = 2, GX_RGBA4 = 3, GX_RGBA6 = 4, - GX_RGBA8 = 5, + GX_RGBA8 = 5 } GXCompType; typedef enum _GXPTTexMtx { @@ -422,7 +422,7 @@ typedef enum _GXPTTexMtx { GX_PTTEXMTX17 = 115, GX_PTTEXMTX18 = 118, GX_PTTEXMTX19 = 121, - GX_PTIDENTITY = 125, + GX_PTIDENTITY = 125 } GXPTTexMtx; typedef enum _GXTevRegID { @@ -430,24 +430,24 @@ typedef enum _GXTevRegID { GX_TEVREG0, GX_TEVREG1, GX_TEVREG2, - GX_MAX_TEVREG, + GX_MAX_TEVREG } GXTevRegID; typedef enum _GXDiffuseFn { GX_DF_NONE, GX_DF_SIGN, - GX_DF_CLAMP, + GX_DF_CLAMP } GXDiffuseFn; typedef enum _GXColorSrc { GX_SRC_REG, - GX_SRC_VTX, + GX_SRC_VTX } GXColorSrc; typedef enum _GXAttnFn { GX_AF_SPEC, GX_AF_SPOT, - GX_AF_NONE, + GX_AF_NONE } GXAttnFn; typedef enum _GXLightID { @@ -460,7 +460,7 @@ typedef enum _GXLightID { GX_LIGHT6 = 0x040, GX_LIGHT7 = 0x080, GX_MAX_LIGHT = 0x100, - GX_LIGHT_NULL = 0, + GX_LIGHT_NULL = 0 } GXLightID; typedef enum _GXTexOffset { @@ -470,7 +470,7 @@ typedef enum _GXTexOffset { GX_TO_FOURTH, GX_TO_HALF, GX_TO_ONE, - GX_MAX_TEXOFFSET, + GX_MAX_TEXOFFSET } GXTexOffset; typedef enum _GXSpotFn { @@ -480,21 +480,21 @@ typedef enum _GXSpotFn { GX_SP_COS2, GX_SP_SHARP, GX_SP_RING1, - GX_SP_RING2, + GX_SP_RING2 } GXSpotFn; typedef enum _GXDistAttnFn { GX_DA_OFF, GX_DA_GENTLE, GX_DA_MEDIUM, - GX_DA_STEEP, + GX_DA_STEEP } GXDistAttnFn; typedef enum _GXCullMode { GX_CULL_NONE, GX_CULL_FRONT, GX_CULL_BACK, - GX_CULL_ALL, + GX_CULL_ALL } GXCullMode; typedef enum _GXTevSwapSel { @@ -502,14 +502,14 @@ typedef enum _GXTevSwapSel { GX_TEV_SWAP1, GX_TEV_SWAP2, GX_TEV_SWAP3, - GX_MAX_TEVSWAP, + GX_MAX_TEVSWAP } GXTevSwapSel; typedef enum _GXTevColorChan { GX_CH_RED = 0, GX_CH_GREEN, GX_CH_BLUE, - GX_CH_ALPHA, + GX_CH_ALPHA } GXTevColorChan; typedef enum _GXFogType { @@ -528,7 +528,7 @@ typedef enum _GXFogType { GX_FOG_EXP = GX_FOG_PERSP_EXP, GX_FOG_EXP2 = GX_FOG_PERSP_EXP2, GX_FOG_REVEXP = GX_FOG_PERSP_REVEXP, - GX_FOG_REVEXP2 = GX_FOG_PERSP_REVEXP2, + GX_FOG_REVEXP2 = GX_FOG_PERSP_REVEXP2 } GXFogType; typedef enum _GXTevColorArg { @@ -547,7 +547,7 @@ typedef enum _GXTevColorArg { GX_CC_ONE, GX_CC_HALF, GX_CC_KONST, - GX_CC_ZERO, + GX_CC_ZERO } GXTevColorArg; typedef enum _GXTevAlphaArg { @@ -558,7 +558,7 @@ typedef enum _GXTevAlphaArg { GX_CA_TEXA, GX_CA_RASA, GX_CA_KONST, - GX_CA_ZERO, + GX_CA_ZERO } GXTevAlphaArg; typedef enum _GXTevOp { @@ -573,14 +573,14 @@ typedef enum _GXTevOp { GX_TEV_COMP_RGB8_GT = 14, GX_TEV_COMP_RGB8_EQ = 15, GX_TEV_COMP_A8_GT = GX_TEV_COMP_RGB8_GT, - GX_TEV_COMP_A8_EQ = GX_TEV_COMP_RGB8_EQ, + GX_TEV_COMP_A8_EQ = GX_TEV_COMP_RGB8_EQ } GXTevOp; typedef enum _GXTevBias { GX_TB_ZERO, GX_TB_ADDHALF, GX_TB_SUBHALF, - GX_MAX_TEVBIAS, + GX_MAX_TEVBIAS } GXTevBias; typedef enum _GXTevScale { @@ -588,7 +588,7 @@ typedef enum _GXTevScale { GX_CS_SCALE_2, GX_CS_SCALE_4, GX_CS_DIVIDE_2, - GX_MAX_TEVSCALE, + GX_MAX_TEVSCALE } GXTevScale; typedef enum _GXTevKColorSel { @@ -623,7 +623,7 @@ typedef enum _GXTevKColorSel { GX_TEV_KCSEL_K0_A = 0x1C, GX_TEV_KCSEL_K1_A = 0x1D, GX_TEV_KCSEL_K2_A = 0x1E, - GX_TEV_KCSEL_K3_A = 0x1F, + GX_TEV_KCSEL_K3_A = 0x1F } GXTevKColorSel; typedef enum _GXTevKAlphaSel { @@ -654,7 +654,7 @@ typedef enum _GXTevKAlphaSel { GX_TEV_KASEL_K0_A = 0x1C, GX_TEV_KASEL_K1_A = 0x1D, GX_TEV_KASEL_K2_A = 0x1E, - GX_TEV_KASEL_K3_A = 0x1F, + GX_TEV_KASEL_K3_A = 0x1F } GXTevKAlphaSel; typedef enum _GXTevKColorID { @@ -662,14 +662,14 @@ typedef enum _GXTevKColorID { GX_KCOLOR1, GX_KCOLOR2, GX_KCOLOR3, - GX_MAX_KCOLOR, + GX_MAX_KCOLOR } GXTevKColorID; typedef enum _GXZTexOp { GX_ZT_DISABLE, GX_ZT_ADD, GX_ZT_REPLACE, - GX_MAX_ZTEXOP, + GX_MAX_ZTEXO } GXZTexOp; typedef enum _GXIndTexFormat { @@ -677,7 +677,7 @@ typedef enum _GXIndTexFormat { GX_ITF_5, GX_ITF_4, GX_ITF_3, - GX_MAX_ITFORMAT, + GX_MAX_ITFORMAT } GXIndTexFormat; typedef enum _GXIndTexBiasSel { @@ -689,7 +689,7 @@ typedef enum _GXIndTexBiasSel { GX_ITB_SU, GX_ITB_TU, GX_ITB_STU, - GX_MAX_ITBIAS, + GX_MAX_ITBIAS } GXIndTexBiasSel; typedef enum _GXIndTexAlphaSel { @@ -697,7 +697,7 @@ typedef enum _GXIndTexAlphaSel { GX_ITBA_S, GX_ITBA_T, GX_ITBA_U, - GX_MAX_ITBALPHA, + GX_MAX_ITBALPHA } GXIndTexAlphaSel; typedef enum _GXIndTexMtxID { @@ -710,7 +710,7 @@ typedef enum _GXIndTexMtxID { GX_ITM_S2, GX_ITM_T0 = 9, GX_ITM_T1, - GX_ITM_T2, + GX_ITM_T2 } GXIndTexMtxID; typedef enum _GXIndTexWrap { @@ -721,7 +721,7 @@ typedef enum _GXIndTexWrap { GX_ITW_32, GX_ITW_16, GX_ITW_0, - GX_MAX_ITWRAP, + GX_MAX_ITWRAP } GXIndTexWrap; typedef enum _GXIndTexStageID { @@ -729,7 +729,7 @@ typedef enum _GXIndTexStageID { GX_INDTEXSTAGE1, GX_INDTEXSTAGE2, GX_INDTEXSTAGE3, - GX_MAX_INDTEXSTAGE, + GX_MAX_INDTEXSTAGE } GXIndTexStageID; typedef enum _GXIndTexScale { @@ -742,12 +742,12 @@ typedef enum _GXIndTexScale { GX_ITS_64, GX_ITS_128, GX_ITS_256, - GX_MAX_ITSCALE, + GX_MAX_ITSCALE } GXIndTexScale; typedef enum _GXClipMode { GX_CLIP_ENABLE = 0, - GX_CLIP_DISABLE = 1, + GX_CLIP_DISABLE = 1 } GXClipMode; typedef enum _GXTlut { @@ -770,21 +770,21 @@ typedef enum _GXTlut { GX_BIGTLUT0 = 16, GX_BIGTLUT1 = 17, GX_BIGTLUT2 = 18, - GX_BIGTLUT3 = 19, + GX_BIGTLUT3 = 19 } GXTlut; typedef enum _GXTlutFmt { GX_TL_IA8, GX_TL_RGB565, GX_TL_RGB5A3, - GX_MAX_TLUTFMT, + GX_MAX_TLUTFMT } GXTlutFmt; typedef enum _GXMiscToken { GX_MT_NULL = 0, GX_MT_XF_FLUSH = 1, GX_MT_DL_SAVE_CONTEXT = 2, - GX_MT_ABORT_WAIT_COPYOUT = 3, + GX_MT_ABORT_WAIT_COPYOUT = 3 } GXMiscToken; typedef enum _GXTexCacheSize { @@ -834,7 +834,6 @@ typedef enum _GXPerf0 { GX_PERF0_CLOCKS, GX_PERF0_NONE - } GXPerf0; typedef enum _GXPerf1 { @@ -864,7 +863,6 @@ typedef enum _GXPerf1 { GX_PERF1_CLOCKS, GX_PERF1_NONE - } GXPerf1; typedef enum _GXVCachePerf { @@ -881,27 +879,26 @@ typedef enum _GXVCachePerf { GX_VC_TEX6, GX_VC_TEX7, GX_VC_ALL = 0xf - } GXVCachePerf; typedef enum _GXFBClamp { GX_CLAMP_NONE = 0, GX_CLAMP_TOP = 1, - GX_CLAMP_BOTTOM = 2, + GX_CLAMP_BOTTOM = 2 } GXFBClamp; typedef enum _GXCopyMode { GX_COPY_PROGRESSIVE = 0, GX_COPY_INTLC_EVEN = 2, - GX_COPY_INTLC_ODD = 3, + GX_COPY_INTLC_ODD = 3 } GXCopyMode; typedef enum _GXAlphaReadMode { GX_READ_00 = 0, GX_READ_FF = 1, - GX_READ_NONE = 2, + GX_READ_NONE = 2 -} _GXAlphaReadMode; +} GXAlphaReadMode; #ifdef __cplusplus } diff --git a/include/dolphin/gx/GXExtra.h b/include/dolphin/gx/GXExtra.h index afd29caa..9ba48170 100644 --- a/include/dolphin/gx/GXExtra.h +++ b/include/dolphin/gx/GXExtra.h @@ -19,7 +19,7 @@ typedef struct { typedef enum { GX_TF_R8_PC = 0x60, - GX_TF_RGBA8_PC = 0x61, + GX_TF_RGBA8_PC = 0x61 } GXPCTexFmt; void GXDestroyTexObj(GXTexObj* obj); diff --git a/include/dolphin/gx/GXFrameBuffer.h b/include/dolphin/gx/GXFrameBuffer.h index ebd81e78..f5785f8c 100644 --- a/include/dolphin/gx/GXFrameBuffer.h +++ b/include/dolphin/gx/GXFrameBuffer.h @@ -47,6 +47,7 @@ void GXCopyDisp(void* dest, GXBool clear); void GXSetDispCopyGamma(GXGamma gamma); void GXSetDispCopySrc(u16 left, u16 top, u16 wd, u16 ht); void GXSetDispCopyDst(u16 wd, u16 ht); +f32 GXGetYScaleFactor(u16 efbHeight, u16 xfbHeight); u32 GXSetDispCopyYScale(f32 vscale); void GXSetCopyFilter(GXBool aa, u8 sample_pattern[12][2], GXBool vf, u8 vfilter[7]); void GXSetPixelFmt(GXPixelFmt pix_fmt, GXZFmt16 z_fmt); diff --git a/include/dolphin/gx/GXPriv.h b/include/dolphin/gx/GXPriv.h index ea3d2318..1cd42e37 100644 --- a/include/dolphin/gx/GXPriv.h +++ b/include/dolphin/gx/GXPriv.h @@ -1,7 +1,32 @@ #ifndef _DOLPHIN_GXPRIV #define _DOLPHIN_GXPRIV -#include "dolphin/gx/GXVert.h" +#include "dolphin/gx.h" + +#ifdef DEBUG +#define ASSERTLINE(line, cond) \ + ((cond) || (OSPanic(__FILE__, line, "Failed assertion " #cond), 0)) + +#define ASSERTMSGLINE(line, cond, msg) \ + ((cond) || (OSPanic(__FILE__, line, msg), 0)) + +// This is dumb but we dont have a Metrowerks way to do variadic macros in the macro to make this done in a not scrubby way. +#define ASSERTMSG1LINE(line, cond, msg, arg1) \ + ((cond) || (OSPanic(__FILE__, line, msg, arg1), 0)) + +#define ASSERTMSG2LINE(line, cond, msg, arg1, arg2) \ + ((cond) || (OSPanic(__FILE__, line, msg, arg1, arg2), 0)) + +#define ASSERTMSGLINEV(line, cond, ...) \ + ((cond) || (OSPanic(__FILE__, line, __VA_ARGS__), 0)) + +#else +#define ASSERTLINE(line, cond) (void)0 +#define ASSERTMSGLINE(line, cond, msg) (void)0 +#define ASSERTMSG1LINE(line, cond, msg, arg1) (void)0 +#define ASSERTMSG2LINE(line, cond, msg, arg1, arg2) (void)0 +#define ASSERTMSGLINEV(line, cond, ...) (void)0 +#endif typedef struct GXLightObjInt { u32 padding[3]; @@ -26,92 +51,137 @@ typedef struct GXLightObjInt { #define GX_FIFO_ADDR 0xCC008000 #define GX_WRITE_U8(v) (GXWGFifo.u8 = v) +#define GX_WRITE_U16(us) (GXWGFifo.u16 = (u16)(us)) #define GX_WRITE_U32(v) (GXWGFifo.u32 = v) +#define GX_WRITE_F32(f) (GXWGFifo.f32 = (f32)(f)) -typedef struct __GXData_struct { - u16 vNumNot; - u16 bpSentNot; - u16 vNum; - u16 vLim; - u32 cpEnable; - u32 cpStatus; - u32 cpClr; - u32 vcdLo; - u32 vcdHi; - u32 vatA[8]; - u32 vatB[8]; - u32 vatC[8]; - u32 lpSize; - u32 matIdxA; - u32 matIdxB; - u32 indexBase[4]; - u32 indexStride[4]; - u32 ambColor[2]; - u32 matColor[2]; - u32 suTs0[8]; - u32 suTs1[8]; - u32 suScis0; - u32 suScis1; - u32 tref[8]; - u32 iref; - u32 bpMask; - u32 IndTexScale0; - u32 IndTexScale1; - u32 tevc[16]; - u32 teva[16]; - u32 tevKsel[8]; - u32 cmode0; - u32 cmode1; - u32 zmode; - u32 peCtrl; - u32 cpDispSrc; - u32 cpDispSize; - u32 cpDispStride; - u32 cpDisp; - u32 cpTexSrc; - u32 cpTexSize; - u32 cpTexStride; - u32 cpTex; - GXBool cpTexZ; - u32 genMode; - GXTexRegion TexRegions[8]; - GXTexRegion TexRegionsCI[4]; - u32 nextTexRgn; - u32 nextTexRgnCI; - GXTlutRegion TlutRegions[20]; - GXTexRegion* (*texRegionCallback)(GXTexObj*, GXTexMapID); - GXTlutRegion* (*tlutRegionCallback)(u32); - GXAttrType nrmType; - GXBool hasNrms; - GXBool hasBiNrms; - u32 projType; - f32 projMtx[6]; - f32 vpLeft; - f32 vpTop; - f32 vpWd; - f32 vpHt; - f32 vpNearz; - f32 vpFarz; - u8 fgRange; - f32 fgSideX; - u32 tImage0[8]; - u32 tMode0[8]; - u32 texmapId[16]; - u32 tcsManEnab; - u32 tevTcEnab; - GXPerf0 perf0; - GXPerf1 perf1; - u32 perfSel; - GXBool inDispList; - GXBool dlSaveContext; - u8 dirtyVAT; - u32 dirtyState; -} GXData; +#if DEBUG +#define VERIF_XF_REG(addr, value) \ +do { \ + s32 regAddr = (addr); \ + if (regAddr >= 0 && regAddr < 0x50) { \ + __gxVerif->xfRegs[regAddr] = (value); \ + __gxVerif->xfRegsDirty[regAddr] = 1; \ + } \ +} while (0) +#define VERIF_XF_REG_alt(addr, value) \ +do { \ + s32 xfAddr = (addr); \ + if (xfAddr >= 0 && xfAddr < 0x50) { \ + __gxVerif->xfRegs[xfAddr] = (value); \ + __gxVerif->xfRegsDirty[xfAddr] = 1; \ + } \ +} while (0) +#define VERIF_RAS_REG(value) (__gxVerif->rasRegs[((value) & 0xFF000000) >> 24] = value) +#define VERIF_MTXLIGHT(addr, data) \ +do { \ + s32 xfAddr; \ + if (addr < 0x400U) { \ + __gxVerif->xfMtx[addr] = data; \ + __gxVerif->xfMtxDirty[addr] = 1; \ + } else if (addr < 0x500U) { \ + xfAddr = addr - 0x400; \ + __gxVerif->xfNrm[xfAddr] = data; \ + __gxVerif->xfNrmDirty[xfAddr] = 1; \ + } else if (addr < 0x600U) { \ + xfAddr = addr - 0x500; \ + __gxVerif->xfDMtx[xfAddr] = data; \ + __gxVerif->xfDMtxDirty[xfAddr] = 1; \ + } else if (addr < 0x680U) { \ + xfAddr = addr - 0x600; \ + __gxVerif->xfLight[xfAddr] = data; \ + __gxVerif->xfLightDirty[xfAddr] = 1; \ + } else { \ + xfAddr = addr - 0x1000; \ + if ((xfAddr >= 0) && (xfAddr < 0x50)) { \ + __gxVerif->xfRegs[xfAddr] = data; \ + __gxVerif->xfRegsDirty[xfAddr] = 1; \ + } \ + } \ +} while (0) +#else +#define VERIF_XF_REG(addr, value) ((void)0) +#define VERIF_XF_REG_alt(addr, value) ((void)0) +#define VERIF_RAS_REG(value) ((void)0) +#endif -extern GXData* gx; -// #define gx __GXData +#define GX_WRITE_XF_REG(addr, value) \ +do { \ + GX_WRITE_U8(0x10); \ + GX_WRITE_U32(0x1000 + (addr)); \ + GX_WRITE_U32(value); \ + VERIF_XF_REG(addr, value); \ +} while (0) -void __GXInitGX(); +#if DEBUG +#define GX_WRITE_XF_REG_2(addr, value) \ +do { \ + u32 xfData = (value); &xfData; \ + GX_WRITE_U32(value); \ + VERIF_XF_REG_alt(addr, xfData); \ +} while (0) +#define GX_WRITE_XF_REG_F(addr, value) \ +do { \ + f32 xfData = (value); \ + GX_WRITE_F32(value); \ + VERIF_XF_REG_alt(addr, *(u32 *)&xfData); \ +} while (0) +#else +#define GX_WRITE_XF_REG_2(addr, value) \ +do { \ + GX_WRITE_U32(value); \ +} while (0) +#define GX_WRITE_XF_REG_F(addr, value) \ +do { \ + GX_WRITE_F32(value); \ +} while (0) +#endif + +#define GX_WRITE_RAS_REG(value) \ +do { \ + GX_WRITE_U8(0x61); \ + GX_WRITE_U32(value); \ + VERIF_RAS_REG(value); \ +} while (0) + +#define GX_WRITE_SOME_REG2(a, b, c, addr) \ +do { \ + long regAddr; \ + GX_WRITE_U8(a); \ + GX_WRITE_U8(b); \ + GX_WRITE_U32(c); \ + regAddr = addr; \ + if (regAddr >= 0 && regAddr < 4) { \ + gx->indexBase[regAddr] = c; \ + } \ +} while (0) +#define GX_WRITE_SOME_REG3(a, b, c, addr) \ +do { \ + long regAddr; \ + GX_WRITE_U8(a); \ + GX_WRITE_U8(b); \ + GX_WRITE_U32(c); \ + regAddr = addr; \ + if (regAddr >= 0 && regAddr < 4) { \ + gx->indexStride[regAddr] = c; \ + } \ +} while (0) +#define GX_WRITE_SOME_REG4(a, b, c, addr) \ +do { \ + long regAddr; \ + GX_WRITE_U8(a); \ + GX_WRITE_U8(b); \ + GX_WRITE_U32(c); \ + regAddr = addr; \ +} while (0) + +#define GET_REG_FIELD(reg, size, shift) ((int)((reg) >> (shift)) & ((1 << (size)) - 1)) + +#define SET_REG_FIELD(line, reg, size, shift, val) \ +do { \ + ASSERTMSGLINE(line, ((u32)(val) & ~((1 << (size)) - 1)) == 0, "GX Internal: Register field out of range"); \ + (reg) = ((u32)(reg) & ~(((1 << (size)) - 1) << (shift))) | ((u32)(val) << (shift)); \ +} while (0) #define GX_REG_ASSERT(c) ASSERTMSG(c, "GX Internal: Register field out of range") @@ -358,4 +428,223 @@ void __GXInitGX(); #define GX_VAT_REG_B_UNK_SHIFT 31 #define GX_VAT_REG_B_UNK_MASK 0x80000000 +#define GX_GET_MEM_REG(offset) (*(volatile u16*)((volatile u16*)(__memReg) + (offset))) +#define GX_GET_CP_REG(offset) (*(volatile u16*)((volatile u16*)(__cpReg) + (offset))) +#define GX_GET_PE_REG(offset) (*(volatile u16*)((volatile u16*)(__peReg) + (offset))) +#define GX_GET_PI_REG(offset) (*(volatile u32*)((volatile u32*)(__piReg) + (offset))) + +#define GX_SET_MEM_REG(offset, val) (*(volatile u16*)((volatile u16*)(__memReg) + (offset)) = val) +#define GX_SET_CP_REG(offset, val) (*(volatile u16*)((volatile u16*)(__cpReg) + (offset)) = val) +#define GX_SET_PE_REG(offset, val) (*(volatile u16*)((volatile u16*)(__peReg) + (offset)) = val) +#define GX_SET_PI_REG(offset, val) (*(volatile u32*)((volatile u32*)(__piReg) + (offset)) = val) + +#define CHECK_GXBEGIN(line, name) ASSERTMSGLINE(line, !__GXinBegin, "'" name "' is not allowed between GXBegin/GXEnd") + +/* GXAttr.c */ + +void __GXSetVCD(void); +void __GXSetVAT(void); + +/* GXBump.c */ + +void __GXUpdateBPMask(void); +void __GXFlushTextureState(void); + +/* GXFifo.c */ + +// GXFifoObj private data +struct __GXFifoObj { + u8 *base; + u8 *top; + u32 size; + u32 hiWatermark; + u32 loWatermark; + void *rdPtr; + void *wrPtr; + s32 count; + u8 bind_cpu; + u8 bind_gp; +}; + +void __GXSaveCPUFifoAux(struct __GXFifoObj *realFifo); +void __GXFifoInit(void); +void __GXInsaneWatermark(void); +void __GXCleanGPFifo(void); + +/* GXGeometry.c */ + +void __GXSetDirtyState(void); +void __GXSendFlushPrim(void); +void __GXSetGenMode(void); + +/* GXInit.c */ +void __GXInitGX(); +void __GXInitRevisionBits(void); + +typedef struct __GXData_struct { + u16 vNumNot; + u16 bpSentNot; + u16 vNum; + u16 vLim; + u32 cpEnable; + u32 cpStatus; + u32 cpClr; + u32 vcdLo; + u32 vcdHi; + u32 vatA[8]; + u32 vatB[8]; + u32 vatC[8]; + u32 lpSize; + u32 matIdxA; + u32 matIdxB; + u32 indexBase[4]; + u32 indexStride[4]; + u32 ambColor[2]; + u32 matColor[2]; + u32 suTs0[8]; + u32 suTs1[8]; + u32 suScis0; + u32 suScis1; + u32 tref[8]; + u32 iref; + u32 bpMask; + u32 IndTexScale0; + u32 IndTexScale1; + u32 tevc[16]; + u32 teva[16]; + u32 tevKsel[8]; + u32 cmode0; + u32 cmode1; + u32 zmode; + u32 peCtrl; + u32 cpDispSrc; + u32 cpDispSize; + u32 cpDispStride; + u32 cpDisp; + u32 cpTexSrc; + u32 cpTexSize; + u32 cpTexStride; + u32 cpTex; + GXBool cpTexZ; + u32 genMode; + GXTexRegion TexRegions[8]; + GXTexRegion TexRegionsCI[4]; + u32 nextTexRgn; + u32 nextTexRgnCI; + GXTlutRegion TlutRegions[20]; + GXTexRegion* (*texRegionCallback)(GXTexObj*, GXTexMapID); + GXTlutRegion* (*tlutRegionCallback)(u32); + GXAttrType nrmType; + GXBool hasNrms; + GXBool hasBiNrms; + u32 projType; + f32 projMtx[6]; + f32 vpLeft; + f32 vpTop; + f32 vpWd; + f32 vpHt; + f32 vpNearz; + f32 vpFarz; + u8 fgRange; + f32 fgSideX; + u32 tImage0[8]; + u32 tMode0[8]; + u32 texmapId[16]; + u32 tcsManEnab; + u32 tevTcEnab; + GXPerf0 perf0; + GXPerf1 perf1; + u32 perfSel; + GXBool inDispList; + GXBool dlSaveContext; + u8 dirtyVAT; + u32 dirtyState; +} GXData; + +extern GXData* gx; +extern u16 *__memReg; +extern u16 *__peReg; +extern u16 *__cpReg; +extern u32 *__piReg; +// #define gx __GXData + +/* GXMisc.c */ + +void __GXBypass(u32 reg); +u16 __GXReadPEReg(u32 reg); +void __GXPEInit(void); +void __GXAbort(); + +/* GXPerf.c */ +void __GXSetBWDials(u16 cpDial, u16 tcDial, u16 peDial, u16 cpuRdDial, u16 cpuWrDial); + +static inline u32 __GXReadCPCounterU32(u32 regAddrL, u32 regAddrH) { + u32 ctrH0; + u32 ctrH1; + u32 ctrL; + + ctrH0 = GX_GET_CP_REG(regAddrH); + + do { + ctrH1 = ctrH0; + ctrL = GX_GET_CP_REG(regAddrL); + ctrH0 = GX_GET_CP_REG(regAddrH); + } while (ctrH0 != ctrH1); + + return (ctrH0 << 0x10) | ctrL; +} + +static inline u32 __GXReadMEMCounterU32(u32 regAddrL, u32 regAddrH) { + u32 ctrH0; + u32 ctrH1; + u32 ctrL; + + ctrH0 = GX_GET_MEM_REG(regAddrH); + + do { + ctrH1 = ctrH0; + ctrL = GX_GET_MEM_REG(regAddrL); + ctrH0 = GX_GET_MEM_REG(regAddrH); + } while (ctrH0 != ctrH1); + + return (ctrH0 << 0x10) | ctrL; +} + +static inline u32 __GXReadPECounterU32(u32 regAddrL, u32 regAddrH) { + u32 ctrH0; + u32 ctrH1; + u32 ctrL; + + ctrH0 = GX_GET_PE_REG(regAddrH); + + do { + ctrH1 = ctrH0; + ctrL = GX_GET_PE_REG(regAddrL); + ctrH0 = GX_GET_PE_REG(regAddrH); + } while (ctrH0 != ctrH1); + + return (ctrH0 << 0x10) | ctrL; +} + +/* GXSave.c */ + +void __GXShadowDispList(void *list, u32 nbytes); +void __GXShadowIndexState(u32 idx_reg, u32 reg_data); +void __GXPrintShadowState(void); + +/* GXStubs.c */ + +void __GXSetRange(float nearz, float fgSideX); + +/* GXTexture.c */ + +void __GetImageTileCount(GXTexFmt fmt, u16 wd, u16 ht, u32 *rowTiles, u32 *colTiles, u32 *cmpTiles); +void __GXSetSUTexRegs(void); +void __GXGetSUTexSize(GXTexCoordID coord, u16 *width, u16 *height); +void __GXSetTmemConfig(u32 config); + +/* GXTransform.c */ + +void __GXSetMatrixIndex(GXAttr matIdxAttr); + #endif // _DOLPHIN_GXPRIV diff --git a/include/dolphin/gx/GXStruct.h b/include/dolphin/gx/GXStruct.h index 4df23062..49f038bc 100644 --- a/include/dolphin/gx/GXStruct.h +++ b/include/dolphin/gx/GXStruct.h @@ -72,6 +72,26 @@ typedef struct _GXTlutRegion { u32 dummy[4]; } GXTlutRegion; +typedef struct _GXFogAdjTable +{ + u16 r[10]; +} GXFogAdjTable; + +typedef enum _GXTlutSize +{ + GX_TLUT_16 = 1, + GX_TLUT_32 = 2, + GX_TLUT_64 = 4, + GX_TLUT_128 = 8, + GX_TLUT_256 = 16, + GX_TLUT_512 = 32, + GX_TLUT_1K = 64, + GX_TLUT_2K = 128, + GX_TLUT_4K = 256, + GX_TLUT_8K = 512, + GX_TLUT_16K = 1024 +} GXTlutSize; + typedef struct _GXVtxAttrFmtList { // total size: 0x10 GXAttr attr; // offset 0x0, size 0x4 diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h index a30b7430..0b569528 100644 --- a/include/dolphin/gx/GXTexture.h +++ b/include/dolphin/gx/GXTexture.h @@ -8,29 +8,35 @@ extern "C" { #endif -typedef GXTexRegion* (*GXTexRegionCallback)(const GXTexObj* obj, GXTexMapID id); +typedef GXTexRegion *(*GXTexRegionCallback)(GXTexObj *t_obj, GXTexMapID id); +typedef GXTlutRegion *(*GXTlutRegionCallback)(u32 idx); -void GXInitTexObj(GXTexObj* obj, const void* data, u16 width, u16 height, u32 format, - GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap); -void GXInitTexObjCI(GXTexObj* obj, const void* data, u16 width, u16 height, GXCITexFmt format, - GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap, u32 tlut); -void GXInitTexObjData(GXTexObj* obj, const void* data); -void GXInitTexObjLOD(GXTexObj* obj, GXTexFilter min_filt, GXTexFilter mag_filt, f32 min_lod, - f32 max_lod, f32 lod_bias, GXBool bias_clamp, GXBool do_edge_lod, - GXAnisotropy max_aniso); -void GXLoadTexObj(GXTexObj* obj, GXTexMapID id); -u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod); -void GXInvalidateTexAll(); -void GXInitTexObjWrapMode(GXTexObj* obj, GXTexWrapMode s, GXTexWrapMode t); -void GXInitTlutObj(GXTlutObj* obj, void* data, GXTlutFmt format, u16 entries); -void GXLoadTlut(const GXTlutObj* obj, GXTlut idx); -void GXSetTexCoordScaleManually(GXTexCoordID coord, GXBool enable, u16 ss, u16 ts); -void GXInitTexCacheRegion(GXTexRegion* region, GXBool is_32b_mipmap, u32 tmem_even, - GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd); -GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback callback); -void GXInvalidateTexRegion(const GXTexRegion* region); - -void GXSetTexCoordScaleManually(GXTexCoordID coord, GXBool enable, u16 ss, u16 ts); +u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, u8 mipmap, u8 max_lod); +void GXInitTexObj(GXTexObj *obj, void *image_ptr, u16 width, u16 height, GXTexFmt format, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, u8 mipmap); +void GXInitTexObjCI(GXTexObj *obj, void *image_ptr, u16 width, u16 height, GXCITexFmt format, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, u8 mipmap, u32 tlut_name); +void GXInitTexObjLOD(GXTexObj *obj, GXTexFilter min_filt, GXTexFilter mag_filt, + f32 min_lod, f32 max_lod, f32 lod_bias, GXBool bias_clamp, + GXBool do_edge_lod, GXAnisotropy max_aniso); +void GXInitTexObjData(GXTexObj *obj, void *image_ptr); +void GXInitTexObjWrapMode(GXTexObj *obj, GXTexWrapMode s, GXTexWrapMode t); +void GXInitTexObjTlut(GXTexObj *obj, u32 tlut_name); +void GXInitTexObjUserData(GXTexObj *obj, void *user_data); +void *GXGetTexObjUserData(const GXTexObj *obj); +void GXLoadTexObjPreLoaded(GXTexObj *obj, GXTexRegion *region, GXTexMapID id); +void GXLoadTexObj(GXTexObj *obj, GXTexMapID id); +void GXInitTlutObj(GXTlutObj *tlut_obj, void *lut, GXTlutFmt fmt, u16 n_entries); +void GXLoadTlut(GXTlutObj *tlut_obj, u32 tlut_name); +void GXInitTexCacheRegion(GXTexRegion *region, u8 is_32b_mipmap, u32 tmem_even, GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd); +void GXInitTexPreLoadRegion(GXTexRegion *region, u32 tmem_even, u32 size_even, u32 tmem_odd, u32 size_odd); +void GXInitTlutRegion(GXTlutRegion *region, u32 tmem_addr, GXTlutSize tlut_size); +void GXInvalidateTexRegion(GXTexRegion *region); +void GXInvalidateTexAll(void); +GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback f); +GXTlutRegionCallback GXSetTlutRegionCallback(GXTlutRegionCallback f); +void GXPreLoadEntireTexture(GXTexObj *tex_obj, GXTexRegion *region); +void GXSetTexCoordScaleManually(GXTexCoordID coord, u8 enable, u16 ss, u16 ts); +void GXSetTexCoordCylWrap(GXTexCoordID coord, u8 s_enable, u8 t_enable); +void GXSetTexCoordBias(GXTexCoordID coord, u8 s_enable, u8 t_enable); #ifdef __cplusplus } #endif diff --git a/include/dolphin/gx/GXTransform.h b/include/dolphin/gx/GXTransform.h index bc3bf107..70aa877c 100644 --- a/include/dolphin/gx/GXTransform.h +++ b/include/dolphin/gx/GXTransform.h @@ -20,6 +20,8 @@ void GXLoadPosMtxImm(f32 mtx[3][4], u32 id); void GXLoadNrmMtxImm(f32 mtx[3][4], u32 id); void GXLoadTexMtxImm(f32 mtx[][4], u32 id, GXTexMtxType type); #endif +void GXProject(f32 x, f32 y, f32 z, const f32 mtx[3][4], const f32 *pm, const f32 *vp, f32 *sx, f32 *sy, f32 *sz); +void GXGetViewportv(f32 *vp); void GXSetViewport(f32 left, f32 top, f32 wd, f32 ht, f32 nearz, f32 farz); void GXSetCurrentMtx(u32 id); void GXSetViewportJitter(f32 left, f32 top, f32 wd, f32 ht, f32 nearz, f32 farz, u32 field); diff --git a/include/dolphin/gx/GXVerify.h b/include/dolphin/gx/GXVerify.h index a4e40cfb..f43dee45 100644 --- a/include/dolphin/gx/GXVerify.h +++ b/include/dolphin/gx/GXVerify.h @@ -7,7 +7,7 @@ typedef enum { GX_WARN_NONE, GX_WARN_SEVERE, GX_WARN_MEDIUM, - GX_WARN_ALL, + GX_WARN_ALL } GXWarningLevel; #ifdef _DEBUG diff --git a/include/dolphin/gx/GXVert.h b/include/dolphin/gx/GXVert.h index 34745aaa..d57943b3 100644 --- a/include/dolphin/gx/GXVert.h +++ b/include/dolphin/gx/GXVert.h @@ -114,6 +114,12 @@ static inline void GXPosition3f32(const f32 x, const f32 y, const f32 z) { GXWGFifo.f32 = z; } +static inline void GXNormal3s16(const s16 x, const s16 y, const s16 z) { + GXWGFifo.s16 = x; + GXWGFifo.s16 = y; + GXWGFifo.s16 = z; +} + static inline void GXNormal3f32(const f32 x, const f32 y, const f32 z) { GXWGFifo.f32 = x; GXWGFifo.f32 = y; diff --git a/include/dolphin/math.h b/include/dolphin/math.h new file mode 100644 index 00000000..483d8081 --- /dev/null +++ b/include/dolphin/math.h @@ -0,0 +1,85 @@ +#ifndef _DOLPHIN_MATH +#define _DOLPHIN_MATH + +// this file is necessary to match mtx/quat.c + +#define M_PI 3.141592653589793 + +#ifndef _MATH_INLINE +#define _MATH_INLINE static inline +#endif + +extern int __float_nan[]; +extern int __float_huge[]; +extern int __double_huge[]; + +#define INFINITY (*(float *)__float_huge) +#define NAN (*(float *)__float_nan) +#define HUGE_VAL (*(double *)__double_huge) + +#ifdef __MWERKS__ +extern inline double sqrt(double x) +{ + if (x > 0.0) { + double guess = __frsqrte(x); /* returns an approximation to */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 8 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 16 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 32 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have > 53 sig bits */ + return x * guess; + } + else if (x == 0) + return 0; + else if (x) + return NAN; + + return INFINITY; +} + +extern inline float sqrtf(float x) +{ + const double _half = .5; + const double _three = 3.0; + volatile float y; + if (x > 0.0f) { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half * guess * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 32 sig bits + y = (float)(x * guess); + return y; + } + return x; +} +#else +double sqrt(double x); +float sqrtf(float x); +#endif + +double atan(double x); +double copysign(double x, double y); +double cos(double x); +double floor(double x); +double frexp(double x, int *exp); +double ldexp(double x, int exp); +double modf(double x, double *intpart); +double sin(double x); +double tan(double x); +double acos(double x); +double asin(double x); +double atan2(double y, double x); +double fmod(double x, double y); +double log(double x); +double pow(double x, double y); +float tanf(float x); + +#ifdef __MWERKS__ +extern inline double fabs(double x) +{ + return __fabs(x); +} +#else +double fabs(double x); +#endif + +#endif diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index fd975968..49dc1b7e 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -31,7 +31,7 @@ typedef struct { } MtxStack, *MtxStackPtr; -#define MTXDegToRad(a) ((a)*0.01745329252f) +#define MTXDegToRad(a) ((a)*0.017453292f) #define MTXRadToDeg(a) ((a)*57.29577951f) #define MTXRowCol(m, r, c) ((m)[(r)][(c)]) @@ -118,7 +118,7 @@ void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS); void PSMTXRotRad(Mtx m, char axis, f32 rad); void PSMTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA); -void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad); +void PSMTXRotAxisRad(register Mtx m, const Vec* axis, register f32 rad); #endif #ifdef MTX_USE_PS diff --git a/include/dolphin/os.h b/include/dolphin/os.h index d231c662..d255bb04 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -19,30 +19,30 @@ extern "C" { #ifdef __MWERKS__ #define AT_ADDRESS(xyz) : (xyz) #else -#define AT_ADDRESS +#define AT_ADDRESS(xyz) #endif typedef s64 OSTime; typedef u32 OSTick; -u32 __OSBusClock AT_ADDRESS(OS_BASE_CACHED | 0x00F8); // sync with OSLoMem.h +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_BUS_CLOCK (u32) __OSBusClock #define OS_CORE_CLOCK __OSCoreClock #define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4) #ifndef _DEBUG -#define OSPhysicalToCached(paddr) ((void*)((u32)(paddr) + OS_BASE_CACHED)) -#define OSPhysicalToUncached(paddr) ((void*)((u32)(paddr) + OS_BASE_UNCACHED)) -#define OSCachedToPhysical(caddr) ((u32)((u8*)(caddr)-OS_BASE_CACHED)) -#define OSUncachedToPhysical(ucaddr) ((u32)((u8*)(ucaddr)-OS_BASE_UNCACHED)) -#define OSCachedToUncached(caddr) ((void*)((u8*)(caddr) + (OS_BASE_UNCACHED - OS_BASE_CACHED))) -#define OSUncachedToCached(ucaddr) ((void*)((u8*)(ucaddr) - (OS_BASE_UNCACHED - OS_BASE_CACHED))) +#define OSPhysicalToCached(paddr) ((void *)((u32)(paddr) + OS_BASE_CACHED)) +#define OSPhysicalToUncached(paddr) ((void *)((u32)(paddr) + OS_BASE_UNCACHED)) +#define OSCachedToPhysical(caddr) ((u32)((u8 *)(caddr)-OS_BASE_CACHED)) +#define OSUncachedToPhysical(ucaddr) ((u32)((u8 *)(ucaddr)-OS_BASE_UNCACHED)) +#define OSCachedToUncached(caddr) ((void *)((u8 *)(caddr) + (OS_BASE_UNCACHED - OS_BASE_CACHED))) +#define OSUncachedToCached(ucaddr) ((void *)((u8 *)(ucaddr) - (OS_BASE_UNCACHED - OS_BASE_CACHED))) #else -u32 OSPhysicalToCached(void* paddr); -u32 OSPhysicalToUncached(void* paddr); -u32 OSCachedToPhysical(void* caddr); -u32 OSUncachedToPhysical(void* ucaddr); -u32 OSCachedToUncached(void* caddr); -u32 OSUncachedToCached(void* ucaddr); +u32 OSPhysicalToCached(void *paddr); +u32 OSPhysicalToUncached(void *paddr); +u32 OSCachedToPhysical(void *caddr); +u32 OSUncachedToPhysical(void *ucaddr); +u32 OSCachedToUncached(void *caddr); +u32 OSUncachedToCached(void *ucaddr); #endif #define OSTicksToCycles(ticks) (((ticks) * ((OS_CORE_CLOCK * 2) / OS_TIMER_CLOCK)) / 2) @@ -50,23 +50,21 @@ u32 OSUncachedToCached(void* ucaddr); #define OSTicksToMilliseconds(ticks) ((ticks) / (OS_TIMER_CLOCK / 1000)) #define OSTicksToMicroseconds(ticks) (((ticks)*8) / (OS_TIMER_CLOCK / 125000)) #define OSTicksToNanoseconds(ticks) (((ticks)*8000) / (OS_TIMER_CLOCK / 125000)) -#define OSSecondsToTicks(sec) ((sec)*OS_TIMER_CLOCK) +#define OSSecondsToTicks(sec) ((sec)*OS_TIMER_CLOCK) #define OSMillisecondsToTicks(msec) ((msec) * (OS_TIMER_CLOCK / 1000)) #define OSMicrosecondsToTicks(usec) (((usec) * (OS_TIMER_CLOCK / 125000)) / 8) #define OSNanosecondsToTicks(nsec) (((nsec) * (OS_TIMER_CLOCK / 125000)) / 8000) #define OSDiffTick(tick1, tick0) ((s32)(tick1) - (s32)(tick0)) -#define OSRoundUp32B(v) (((u32)(v + 31) & ~31)) -#define OSRoundDown32B(x) (((u32)(x)) & ~31) +#define OSRoundUp32B(x) (((u32)(x) + 0x1F) & ~(0x1F)) +#define OSRoundDown32B(x) (((u32)(x)) & ~(0x1F)) -void* OSGetArenaHi(void); -void* OSGetArenaLo(void); -void OSSetArenaHi(void* newHi); -void OSSetArenaLo(void* newLo); +#define OSRoundUp(x, align) (((x) + (align)-1) & (-(align))) +#define OSRoundUpPtr(x, align) ((void*)((((u32)(x)) + (align)-1) & (~((align)-1)))) -void* OSAllocFromArenaLo(u32 size, u32 align); -void* OSAllocFromArenaHi(u32 size, u32 align); +#define OSRoundDown(x, align) ((x) & (-(align))) +#define OSRoundDownPtr(x, align) ((void*)(((u32)(x)) & (~((align)-1)))) void OSInit(); @@ -74,38 +72,38 @@ OSTime OSGetTime(); OSTick OSGetTick(); typedef struct OSCalendarTime { - int sec; // seconds after the minute [0, 61] - int min; // minutes after the hour [0, 59] - int hour; // hours since midnight [0, 23] - int mday; // day of the month [1, 31] - int mon; // month since January [0, 11] - int year; // years in AD [1, ...] - int wday; // days since Sunday [0, 6] - int yday; // days since January 1 [0, 365] + int sec; // seconds after the minute [0, 61] + int min; // minutes after the hour [0, 59] + int hour; // hours since midnight [0, 23] + int mday; // day of the month [1, 31] + int mon; // month since January [0, 11] + int year; // years in AD [1, ...] + int wday; // days since Sunday [0, 6] + int yday; // days since January 1 [0, 365] - int msec; // milliseconds after the second [0,999] - int usec; // microseconds after the millisecond [0,999] + int msec; // milliseconds after the second [0,999] + int usec; // microseconds after the millisecond [0,999] } OSCalendarTime; -OSTime OSCalendarTimeToTicks(OSCalendarTime* td); -void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* td); +OSTime OSCalendarTimeToTicks(OSCalendarTime *td); +void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime *td); typedef struct OSStopwatch { - char* name; - OSTime total; - u32 hits; - OSTime min; - OSTime max; - OSTime last; - BOOL running; + char *name; + OSTime total; + u32 hits; + OSTime min; + OSTime max; + OSTime last; + BOOL running; } OSStopwatch; -void OSInitStopwatch(OSStopwatch* sw, char* name); -void OSStartStopwatch(OSStopwatch* sw); -void OSStopStopwatch(OSStopwatch* sw); -OSTime OSCheckStopwatch(OSStopwatch* sw); -void OSResetStopwatch(OSStopwatch* sw); -void OSDumpStopwatch(OSStopwatch* sw); +void OSInitStopwatch(OSStopwatch *sw, char *name); +void OSStartStopwatch(OSStopwatch *sw); +void OSStopStopwatch(OSStopwatch *sw); +OSTime OSCheckStopwatch(OSStopwatch *sw); +void OSResetStopwatch(OSStopwatch *sw); +void OSDumpStopwatch(OSStopwatch *sw); #define OS_CONSOLE_MASK 0xf0000000 #define OS_CONSOLE_RETAIL 0x00000000 @@ -159,7 +157,7 @@ void OSSetLanguage(u8 language); u32 OSGetEuRgb60Mode(void); void OSSetEuRgb60Mode(u32 on); -void OSRegisterVersion(const char* id); +void OSRegisterVersion(const char *id); BOOL OSDisableInterrupts(void); BOOL OSEnableInterrupts(void); @@ -174,8 +172,7 @@ BOOL OSRestoreInterrupts(BOOL level); #endif #ifndef ASSERTMSG -#if defined(__STDC_VERSION__) && (199901L <= __STDC_VERSION__) || defined(__MWERKS__) || \ - defined(__SN__) +#if defined(__STDC_VERSION__) && (199901L <= __STDC_VERSION__) || defined(__MWERKS__) || defined(__SN__) #define ASSERTMSG(exp, ...) (void)((exp) || (OSPanic(__FILE__, __LINE__, __VA_ARGS__), 0)) #else #define ASSERTMSG(exp, msg) (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg)), 0)) @@ -183,23 +180,20 @@ BOOL OSRestoreInterrupts(BOOL level); #endif #ifndef ASSERTMSG1 -#define ASSERTMSG1(exp, msg, param1) \ - (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1)), 0)) +#define ASSERTMSG1(exp, msg, param1) (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1)), 0)) #endif #ifndef ASSERTMSG2 -#define ASSERTMSG2(exp, msg, param1, param2) \ - (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1), (param2)), 0)) +#define ASSERTMSG2(exp, msg, param1, param2) (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1), (param2)), 0)) #endif #ifndef ASSERTMSG3 -#define ASSERTMSG3(exp, msg, param1, param2, param3) \ - (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1), (param2), (param3)), 0)) +#define ASSERTMSG3(exp, msg, param1, param2, param3) (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1), (param2), (param3)), 0)) #endif #ifndef ASSERTMSG4 -#define ASSERTMSG4(exp, msg, param1, param2, param3, param4) \ - (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1), (param2), (param3), (param4)), 0)) +#define ASSERTMSG4(exp, msg, param1, param2, param3, param4) \ + (void)((exp) || (OSPanic(__FILE__, __LINE__, (msg), (param1), (param2), (param3), (param4)), 0)) #endif #else // _DEBUG @@ -209,8 +203,7 @@ BOOL OSRestoreInterrupts(BOOL level); #endif #ifndef ASSERTMSG -#if defined(__STDC_VERSION__) && (199901L <= __STDC_VERSION__) || defined(__MWERKS__) || \ - defined(__SN__) +#if defined(__STDC_VERSION__) && (199901L <= __STDC_VERSION__) || defined(__MWERKS__) || defined(__SN__) #define ASSERTMSG(exp, ...) ((void)0) #else #define ASSERTMSG(exp, msg) ((void)0) @@ -232,9 +225,9 @@ BOOL OSRestoreInterrupts(BOOL level); #endif // _DEBUG -void OSReport(const char* msg, ...); -void OSPanic(const char* file, int line, const char* msg, ...); -void OSFatal(GXColor fg, GXColor bg, 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); u32 OSGetPhysicalMemSize(void); u32 OSGetConsoleSimulatedMemSize(void); @@ -253,6 +246,7 @@ u32 OSGetConsoleSimulatedMemSize(void); #include #include #include +#include #include #include #include diff --git a/include/dolphin/os/OSAlarm.h b/include/dolphin/os/OSAlarm.h index a0c9d380..497b4a44 100644 --- a/include/dolphin/os/OSAlarm.h +++ b/include/dolphin/os/OSAlarm.h @@ -1,6 +1,7 @@ #ifndef _DOLPHIN_OSALARM #define _DOLPHIN_OSALARM +#include #include #include diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index bbd90491..686dae2b 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -7,19 +7,18 @@ extern "C" { #endif typedef int OSHeapHandle; -typedef void (*OSAllocVisitor)(void* obj, u32 size); -void* OSInitAlloc(void* arenaStart, void* arenaEnd, int maxHeaps); -OSHeapHandle OSCreateHeap(void* start, void* end); +typedef void (*OSAllocVisitor)(void *obj, u32 size); +void *OSInitAlloc(void *arenaStart, void *arenaEnd, int maxHeaps); +OSHeapHandle OSCreateHeap(void *start, void *end); void OSDestroyHeap(OSHeapHandle heap); -void OSAddToHeap(OSHeapHandle heap, void* start, void* end); +void OSAddToHeap(OSHeapHandle heap, void *start, void *end); OSHeapHandle OSSetCurrentHeap(OSHeapHandle heap); -void* OSAllocFromHeap(OSHeapHandle heap, u32 size); -void* OSAllocFixed(void** rstart, void** rend); -void OSFreeToHeap(OSHeapHandle heap, void* ptr); +void *OSAllocFromHeap(OSHeapHandle heap, u32 size); +void *OSAllocFixed(void **rstart, void **rend); +void OSFreeToHeap(OSHeapHandle heap, void *ptr); long OSCheckHeap(OSHeapHandle heap); void OSDumpHeap(OSHeapHandle heap); -void *OSAllocFixed(void **rstart, void **rend); -u32 OSReferentSize(void* ptr); +u32 OSReferentSize(void *ptr); void OSVisitAllocated(OSAllocVisitor visitor); extern volatile OSHeapHandle __OSCurrHeap; #define OSAlloc(size) OSAllocFromHeap(__OSCurrHeap, (size)) diff --git a/include/dolphin/os/OSBootInfo.h b/include/dolphin/os/OSBootInfo.h index a78d135f..2ed59d35 100644 --- a/include/dolphin/os/OSBootInfo.h +++ b/include/dolphin/os/OSBootInfo.h @@ -4,7 +4,7 @@ #include "dolphin/DVDPriv.h" #include "dolphin/types.h" -typedef struct OSBootInfo { +typedef struct OSBootInfo_s { DVDDiskID DVDDiskID; u32 magic; u32 version; @@ -45,6 +45,6 @@ typedef struct BI2Debug { #define OS_DVD_MAGIC_NINTENDO 0xC2339F3D #define OS_THREAD_STACK_MAGIC 0xDEADBABE -#define OS_BOOTROM_ADDR 0x81300000 +#define OS_BOOTROM_ADDR ((void*)0x81300000) #endif // _DOLPHIN_OSBOOTINFO diff --git a/include/dolphin/os/OSContext.h b/include/dolphin/os/OSContext.h index bbd0aaa1..b363a214 100644 --- a/include/dolphin/os/OSContext.h +++ b/include/dolphin/os/OSContext.h @@ -158,10 +158,16 @@ typedef struct OSContext { } OSContext; +u32 OSGetStackPointer(void); +void OSDumpContext(OSContext *context); u32 OSSaveContext(OSContext* context); +void OSLoadContext(OSContext* context); void OSClearContext(OSContext* context); OSContext* OSGetCurrentContext(); void OSSetCurrentContext(OSContext* context); +void OSSaveFPUContext(OSContext *fpuContext); +void OSInitContext(OSContext *context, u32 pc, u32 newsp); + #ifdef __cplusplus } diff --git a/include/dolphin/os/OSFont.h b/include/dolphin/os/OSFont.h index 99238bad..54cfec1b 100644 --- a/include/dolphin/os/OSFont.h +++ b/include/dolphin/os/OSFont.h @@ -9,17 +9,44 @@ extern "C" { #define OS_FONT_ENCODE_ANSI 0u #define OS_FONT_ENCODE_SJIS 1u -#define OS_FONT_ENCODE_UTF8 3u // UTF-8 [RFC 3629] -#define OS_FONT_ENCODE_UTF16 4u // UTF-16BE [RFC 2781] -#define OS_FONT_ENCODE_UTF32 5u // UTF-32 -#define OS_FONT_ENCODE_MAX 5u -#define OS_FONT_ENCODE_VOID 0xffffu +#define OS_FONT_SIZE_ANSI (288 + 131072) // 9 sheets +#define OS_FONT_SIZE_SJIS (3840 + 1179648) // 1 sheet +#define OS_FONT_ROM_SIZE_ANSI 0x03000 +#define OS_FONT_ROM_SIZE_SJIS 0x4D000 -#define OS_FONT_PROPORTIONAL FALSE -#define OS_FONT_FIXED TRUE +typedef struct OSFontHeader +{ + /*0x00*/ u16 fontType; + u16 firstChar; + u16 lastChar; + u16 invalChar; + /*0x08*/ u16 ascent; + u16 descent; + u16 width; + u16 leading; + /*0x10*/ u16 cellWidth; + u16 cellHeight; + /*0x14*/ u32 sheetSize; + /*0x18*/ u16 sheetFormat; + u16 sheetColumn; + u16 sheetRow; + u16 sheetWidth; + /*0x20*/ u16 sheetHeight; + u16 widthTable; + u32 sheetImage; + u32 sheetFullSize; + u8 c0; + u8 c1; + u8 c2; + u8 c3; +} OSFontHeader; u16 OSGetFontEncode(void); -u16 OSSetFontEncode(u16 encode); +BOOL OSInitFont(OSFontHeader *fontData); +u32 OSLoadFont(OSFontHeader *fontData, void *temp); +char *OSGetFontTexture(char *string, void **image, s32 *x, s32 *y, s32 *width); +char *OSGetFontWidth(char *string, s32 *width); +char *OSGetFontTexel(char *string, void *image, s32 pos, s32 stride, s32 *width); #ifdef __cplusplus } diff --git a/include/dolphin/os/OSIC.h b/include/dolphin/os/OSIC.h new file mode 100644 index 00000000..017d5a58 --- /dev/null +++ b/include/dolphin/os/OSIC.h @@ -0,0 +1,20 @@ +#ifndef _DOLPHIN_OSIC +#define _DOLPHIN_OSIC + +#ifdef __cplusplus +extern "C" { +#endif + +void ICFlashInvalidate(void); +void ICEnable(void); +void ICDisable(void); +void ICFreeze(void); +void ICUnfreeze(void); +void ICBlockInvalidate(void *addr); +void ICSync(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/dolphin/os/OSModule.h b/include/dolphin/os/OSModule.h index 7baf2a9f..e8cbe25b 100644 --- a/include/dolphin/os/OSModule.h +++ b/include/dolphin/os/OSModule.h @@ -105,8 +105,8 @@ BOOL OSUnlink(OSModuleInfo* oldModule); OSModuleInfo* OSSearchModule(void* ptr, u32* section, u32* offset); // debugger notification -void OSNotifyLink(OSModuleInfo* module); -void OSNotifyUnlink(OSModuleInfo* module); +void OSNotifyLink(void); +void OSNotifyUnlink(void); #ifdef __cplusplus } diff --git a/include/dolphin/os/OSPriv.h b/include/dolphin/os/OSPriv.h index 8b914f25..6d24df24 100644 --- a/include/dolphin/os/OSPriv.h +++ b/include/dolphin/os/OSPriv.h @@ -7,10 +7,45 @@ extern "C" { #endif +#define OFFSET(addr, align) (((u32)(addr) & ((align)-1))) + +// OSAudioSystem.c +void __OSInitAudioSystem(void); +void __OSStopAudioSystem(void); + +// OSCache.c +void __OSCacheInit(void); + +// OSContext.c +void __OSContextInit(void); + +// OSMutex.c +void __OSUnlockAllMutex(struct OSThread *thread); + +// OSInterrupt.c +extern void __RAS_OSDisableInterrupts_begin(void); +extern void __RAS_OSDisableInterrupts_end(void); +void __OSInterruptInit(void); +void __OSModuleInit(void); + +void __OSInitSystemCall(void); + +// OSThread.c +void __OSThreadInit(void); +void __OSReschedule(void); + +typedef void (*OSExceptionHandler)(__OSException, OSContext*); +OSExceptionHandler __OSSetExceptionHandler(__OSException exception, OSExceptionHandler handler); __OSExceptionHandler __OSGetExceptionHandler(__OSException exception); OSTime __OSGetSystemTime(); OSTime __OSTimeToSystemTime(OSTime); +// OSReset.c +void __OSDoHotReset(s32); + +// OSReboot +void __OSReboot(u32 resetCode, u32 bootDol); + #ifdef __cplusplus } #endif diff --git a/include/dolphin/os/OSReset.h b/include/dolphin/os/OSReset.h index d420a6f8..ae0e77e3 100644 --- a/include/dolphin/os/OSReset.h +++ b/include/dolphin/os/OSReset.h @@ -39,6 +39,7 @@ struct OSResetFunctionInfo { OSResetFunctionInfo* prev; }; +void OSRegisterResetFunction(OSResetFunctionInfo *info); u32 OSGetResetCode(void); #ifdef __cplusplus diff --git a/include/dolphin/thp/THPPlayer.h b/include/dolphin/thp/THPPlayer.h index 8cd1e6ca..eb6fff62 100644 --- a/include/dolphin/thp/THPPlayer.h +++ b/include/dolphin/thp/THPPlayer.h @@ -2,11 +2,12 @@ #define _THP_THPPLAYER_H #include "types.h" -#include "Dolphin/os.h" -#include "Dolphin/gx.h" -#include "THP/THPBuffer.h" -#include "THP/THPFile.h" -#include "THP/THPInfo.h" +#include +#include "dolphin/os.h" +#include "dolphin/gx.h" +#include "dolphin/thp/THPBuffer.h" +#include "dolphin/thp/THPFile.h" +#include "dolphin/thp/THPInfo.h" #ifdef __cplusplus extern "C" { diff --git a/include/dolphin/vitypes.h b/include/dolphin/vitypes.h index db958702..be262ea3 100644 --- a/include/dolphin/vitypes.h +++ b/include/dolphin/vitypes.h @@ -50,12 +50,12 @@ typedef enum { // GCA VI_TVMODE_GCA_INT = VI_TVMODE(VI_GCA, VI_INTERLACE), VI_TVMODE_GCA_DS = VI_TVMODE(VI_GCA, VI_NON_INTERLACE), - VI_TVMODE_GCA_PROG = VI_TVMODE(VI_GCA, VI_PROGRESSIVE), + VI_TVMODE_GCA_PROG = VI_TVMODE(VI_GCA, VI_PROGRESSIVE) } VITVMode; typedef enum { VI_XFBMODE_SF = 0, - VI_XFBMODE_DF = 1, + VI_XFBMODE_DF = 1 } VIXFBMode; typedef void (*VIPositionCallback)(s16 x, s16 y); diff --git a/include/ext_math.h b/include/ext_math.h index 4651c2c4..e979909d 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -19,6 +19,7 @@ typedef struct vec2f { #define VECDistanceZY(a, b) sqrtf((((a)->z-(b)->z)*((a)->z-(b)->z))+(((a)->y-(b)->y)*((a)->y-(b)->y))) #define VECSumXZ(a, b) sqrtf((((a)->x+(b)->x)*((a)->x+(b)->x))+(((a)->z+(b)->z)*((a)->z+(b)->z))) +#define VECMagXYZ(a) sqrtf(((a)->x*(a)->x)+((a)->y*(a)->y)+((a)->z*(a)->z)) #define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z)) #define VECMagXY(a) sqrtf(((a)->x*(a)->x)+((a)->y*(a)->y)) @@ -28,6 +29,11 @@ typedef struct vec2f { #define sind(x) sin(M_PI*(x)/180.0) #define cosd(x) cos(M_PI*(x)/180.0) +#define asind(x) (180.0*(asinf((x)) / M_PI)) #define atan2d(y, x) (180.0*(atan2((y), (x)) / M_PI)) +#ifndef __MWERKS__ +void HuSetVecF(Vec* arg0, f32 arg8, f32 arg9, f32 argA) +#endif + #endif diff --git a/include/game/animdata.h b/include/game/animdata.h index 88b42cc4..63876d94 100644 --- a/include/game/animdata.h +++ b/include/game/animdata.h @@ -71,13 +71,13 @@ typedef struct anim_bmp_data { } AnimBmpData; typedef struct anim_data { - s16 bankNum; - s16 patNum; - s16 bmpNum; - s16 useNum; - AnimBankData *bank; - AnimPatData *pat; - AnimBmpData *bmp; -} AnimData; +/* 0x00 */ s16 bankNum; +/* 0x02 */ s16 patNum; +/* 0x04 */ s16 bmpNum; +/* 0x06 */ s16 useNum; +/* 0x08 */ AnimBankData *bank; +/* 0x0C */ AnimPatData *pat; +/* 0x10 */ AnimBmpData *bmp; +} AnimData; //sizeof 0x14 -#endif \ No newline at end of file +#endif diff --git a/include/game/audio.h b/include/game/audio.h index ef1ca3a9..3846ea73 100644 --- a/include/game/audio.h +++ b/include/game/audio.h @@ -3,67 +3,68 @@ #include "dolphin.h" -typedef struct hu_snd_grp_data { - /* 0x00 */ s16 ovl; - /* 0x02 */ s16 grpset; - /* 0x04 */ s32 auxANo; - /* 0x08 */ s32 auxBNo; - /* 0x0C */ s8 auxAVol; - /* 0x0D */ s8 auxBVol; -} HuSndGrpData; +typedef struct sndGrpTbl_s { + s16 ovl; + s16 grpSet; + s32 auxANo; + s32 auxBNo; + s8 auxAVol; + s8 auxBVol; +} SNDGRPTBL; + void HuAudInit(void); -s32 HuAudStreamPlay(char *name, s32 arg1); +s32 HuAudStreamPlay(char *name, BOOL flag); void HuAudStreamVolSet(s16 vol); void HuAudStreamPauseOn(void); void HuAudStreamPauseOff(void); -void HuAudStreamFadeOut(s32 arg0); +void HuAudStreamFadeOut(s32 streamNo); void HuAudAllStop(void); -void HuAudFadeOut(s32 arg0); -s32 HuAudFXPlay(s32 arg0); -s32 HuAudFXPlayVol(s32 arg0, s16 arg1); -s32 HuAudFXPlayVolPan(s32 arg0, s16 arg1, s16 arg2); -void HuAudFXStop(s32 arg0); +void HuAudFadeOut(s32 speed); +int HuAudFXPlay(int seId); +int HuAudFXPlayVol(int seId, s16 vol); +int HuAudFXPlayVolPan(int seId, s16 vol, s16 pan); +void HuAudFXStop(int seNo); void HuAudFXAllStop(void); -void HuAudFXFadeOut(s32 arg0, s32 arg1); -void HuAudFXPanning(s32 arg0, s16 arg1); -void HuAudFXListnerSet(Vec* arg0, Vec* arg1, float arg2, float arg3); -void HuAudFXListnerSetEX(Vec* arg0, Vec* arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6); -void HuAudFXListnerUpdate(Vec *arg0, Vec *arg1); -s32 HuAudFXEmiterPlay(s32 arg0, Vec *arg1); -void HuAudFXEmiterUpDate(s32 arg0, Vec *arg1); +void HuAudFXFadeOut(int seNo, s32 speed); +void HuAudFXPanning(int seNo, s16 pan); +void HuAudFXListnerSet(Vec *pos, Vec *heading, float sndDist, float sndSpeed); +void HuAudFXListnerSetEX(Vec *pos, Vec *heading, float sndDist, float sndSpeed, float startDis, float frontSurDis, float backSurDis); +void HuAudFXListnerUpdate(Vec *pos, Vec *heading); +int HuAudFXEmiterPlay(int seId, Vec *pos); +void HuAudFXEmiterUpDate(int seNo, Vec *pos); void HuAudFXListnerKill(void); -void HuAudFXPauseAll(s32 arg0); -s32 HuAudFXStatusGet(s32 arg0); -s32 HuAudFXPitchSet(s32 arg0, s16 arg1); -s32 HuAudFXVolSet(s32 arg0, s16 arg1); -s32 HuAudSeqPlay(s16 arg0); -void HuAudSeqStop(s32 arg0); -void HuAudSeqFadeOut(s32 arg0, s32 arg1); -void HuAudSeqAllFadeOut(s32 arg0); +void HuAudFXPauseAll(s32 pause); +s32 HuAudFXStatusGet(int seNo); +s32 HuAudFXPitchSet(int seNo, s16 pitch); +s32 HuAudFXVolSet(int seNo, s16 vol); +s32 HuAudSeqPlay(s16 musId); +void HuAudSeqStop(s32 musNo); +void HuAudSeqFadeOut(s32 musNo, s32 speed); +void HuAudSeqAllFadeOut(s32 speed); void HuAudSeqAllStop(void); -void HuAudSeqPauseAll(s32 arg0); -void HuAudSeqPause(s32 arg0, s32 arg1, s32 arg2); -s32 HuAudSeqMidiCtrlGet(s32 arg0, s8 arg1, s8 arg2); -s32 HuAudSStreamPlay(s16 arg0); -void HuAudSStreamStop(s32 arg0); -void HuAudSStreamFadeOut(s32 arg0, s32 arg1); -void HuAudSStreamAllFadeOut(s32 arg0); +void HuAudSeqPauseAll(s32 pause); +void HuAudSeqPause(s32 musNo, s32 pause, s32 speed); +s32 HuAudSeqMidiCtrlGet(s32 musNo, s8 channel, s8 ctrl); +s32 HuAudSStreamPlay(s16 streamId); +void HuAudSStreamStop(s32 seNo); +void HuAudSStreamFadeOut(s32 seNo, s32 speed); +void HuAudSStreamAllFadeOut(s32 speed); void HuAudSStreamAllStop(void); -s32 HuAudSStreamStatGet(s32 arg0); +s32 HuAudSStreamStatGet(s32 seNo); void HuAudDllSndGrpSet(u16 ovl); -void HuAudSndGrpSetSet(s16 arg0); -void HuAudSndGrpSet(s16 arg0); -void HuAudSndCommonGrpSet(s16 arg0, s32 arg1); -void HuAudAUXSet(s32 arg0, s32 arg1); -void HuAudAUXVolSet(s8 arg0, s8 arg1); +void HuAudSndGrpSetSet(s16 dataSize); +void HuAudSndGrpSet(s16 grpId); +void HuAudSndCommonGrpSet(s16 grpId, s32 groupCheck); +void HuAudAUXSet(s32 auxA, s32 auxB); +void HuAudAUXVolSet(s8 auxA, s8 auxB); void HuAudVoiceInit(s16 ovl); -s32 HuAudPlayerVoicePlay(s16 arg0, s16 arg1); -s32 HuAudPlayerVoicePlayPos(s16 arg0, s16 arg1, Vec *arg2); -void HuAudPlayerVoicePlayEntry(s16 arg0, s16 arg1); -s32 HuAudCharVoicePlay(s16 arg0, s16 arg1); -s32 HuAudCharVoicePlayPos(s16 arg0, s16 arg1, Vec *arg2); -void HuAudCharVoicePlayEntry(s16 arg0, s16 arg1); +s32 HuAudPlayerVoicePlay(s16 player, s16 seId); +s32 HuAudPlayerVoicePlayPos(s16 player, s16 seId, Vec *pos); +void HuAudPlayerVoicePlayEntry(s16 player, s16 seId); +s32 HuAudCharVoicePlay(s16 charNo, s16 seId); +s32 HuAudCharVoicePlayPos(s16 charNo, s16 seId, Vec *pos); +void HuAudCharVoicePlayEntry(s16 charNo, s16 seId); extern float Snd3DBackSurDisOffset; extern float Snd3DFrontSurDisOffset; @@ -73,6 +74,6 @@ extern float Snd3DDistOffset; extern s32 musicOffF; extern u8 fadeStat; -extern HuSndGrpData HuSndGrpTbl[]; +extern SNDGRPTBL sndGrpTable[]; #endif diff --git a/include/game/board/audio.h b/include/game/board/audio.h index a3b617b9..714e97fa 100755 --- a/include/game/board/audio.h +++ b/include/game/board/audio.h @@ -4,13 +4,13 @@ #include "dolphin/types.h" void BoardMusStartBoard(void); -void BoardMusStart(s32 arg0, s32 arg1, s8 arg2, u16 arg3); -void BoardAudSeqFadeOutFast(s32 arg0); -void BoardAudSeqFadeOut(s32 arg0, u16 arg1); -void BoardMusLoudSet(s32 arg0, s32 arg1); -void BoardMusVolPanSet(s32 arg0, s8 arg1, u16 arg2); -void BoardAudSeqPause(s32 arg0, s32 arg1, u16 arg2); -s32 BoardMusStatusGet(s32 arg0); +void BoardMusStart(s32 boardNo, s32 musId, s8 vol, u16 speed); +void BoardAudSeqFadeOutFast(s32 boardNo); +void BoardAudSeqFadeOut(s32 boardNo, u16 speed); +void BoardMusLoudSet(s32 boardNo, s32 isQuieter); +void BoardMusVolPanSet(s32 boardNo, s8 vol, u16 fadeSpeed); +void BoardAudSeqPause(s32 boardNo, s32 pause, u16 speed); +s32 BoardMusStatusGet(s32 boardNo); void BoardAudSeqClear(void); void BoardAudSeqFadeOutAll(void); void BoardAudFXPlay(void); diff --git a/include/game/board/window.h b/include/game/board/window.h index eb015c5f..dd0b87df 100644 --- a/include/game/board/window.h +++ b/include/game/board/window.h @@ -31,5 +31,6 @@ s32 BoardWinPortraitGetStar(void); void BoardWinPlayerSet(s32 player); void BoardWinStartComKeySet(void); void BoardWinComKeyFuncSet(BoardWinComKeyFunc func); +s16 BoardWinIDGet(void); #endif \ No newline at end of file diff --git a/include/game/chrman.h b/include/game/chrman.h index c20b79cc..d826fb68 100755 --- a/include/game/chrman.h +++ b/include/game/chrman.h @@ -44,6 +44,8 @@ s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3); s32 CharModelEffectNpcInitSilent(s16 arg0, s16 arg1, s16 arg2); void CharModelStepTypeSet(s16 character, s32 arg1); -#define GW_CHARACTER_MAX 8 +#define CHARNO_MAX 8 +#define CHAR_NPC_MAX 7 +#define CHAR_EFFECT_AND_PARTICLE_MAX 8 #endif diff --git a/include/game/data.h b/include/game/data.h index 288e5577..9c01b09b 100644 --- a/include/game/data.h +++ b/include/game/data.h @@ -17,7 +17,7 @@ #include "dolphin/types.h" -typedef struct data_read_stat { +struct data_read_stat { s32 dir_id; void *dir; void *file; @@ -27,7 +27,7 @@ typedef struct data_read_stat { s32 num; u32 status; DVDFileInfo file_info; -} DataReadStat; +}; void HuDataInit(void); s32 HuDataReadChk(s32 data_num); @@ -56,4 +56,4 @@ void HuDecodeData(void *src, void *dst, u32 size, s32 decode_type); extern u32 DirDataSize; -#endif \ No newline at end of file +#endif diff --git a/include/game/disp.h b/include/game/disp.h new file mode 100644 index 00000000..11fd19e3 --- /dev/null +++ b/include/game/disp.h @@ -0,0 +1,18 @@ +#ifndef _GAME_DISP_H +#define _GAME_DISP_H + +#define HU_DISP_WIDTH 576 +#define HU_DISP_WIDTHF ((float)HU_DISP_WIDTH) +#define HU_DISP_HEIGHT 480 +#define HU_DISP_HEIGHTF ((float)HU_DISP_HEIGHT) +#define HU_DISP_ASPECT (HU_DISP_WIDTHF/HU_DISP_HEIGHTF) + +#define HU_DISP_CENTERXI (HU_DISP_WIDTH/2) +#define HU_DISP_CENTERX (HU_DISP_WIDTHF/2) +#define HU_DISP_CENTERYI (HU_DISP_HEIGHT/2) +#define HU_DISP_CENTERY (HU_DISP_HEIGHTF/2) + +#define HU_FB_WIDTH 640 +#define HU_FB_HEIGHT 480 + +#endif \ No newline at end of file diff --git a/include/game/gamework.h b/include/game/gamework.h index fe972f43..722ba147 100644 --- a/include/game/gamework.h +++ b/include/game/gamework.h @@ -7,26 +7,26 @@ void GWInit(void); void GWGameStatReset(void); -s32 GWMessSpeedGet(void); +// s32 GWMessSpeedGet(void); s32 GWMessDelayGet(void); -void GWMGRecordSet(s32 index, s32 value); -s32 GWMGRecordGet(s32 index); +void GWMGRecordSet(s32 index, u32 value); +u32 GWMGRecordGet(s32 index); void GWCharColorGet(s32 character, GXColor *color); void GWBoardPlayCountSet(s32 board, u8 value); void GWBoardPlayCountAdd(s32 board, u8 value); u8 GWBoardPlayCountGet(s32 board); -void GWBoardMaxStarsSet(s32 board, s32 value); -u16 GWBoardMaxStarsGet(s32 board); +void GWBoardMaxStarsSet(s32 board, s16 value); +s32 GWBoardMaxStarsGet(s32 board); void GWBoardMaxCoinsSet(s32 board, s32 value); -u16 GWBoardMaxCoinsGet(s32 board); +s32 GWBoardMaxCoinsGet(s32 board); s32 GWBoardWinCountInc(s32 character, s32 board); s32 GWBoardWinCountGet(s32 character, s32 board); void GWBoardWinCountSet(s32 character, s32 board, s32 value); s32 GWMGAvailGet(s32 id); -s32 GWMGAvailSet(s32 id); +void GWMGAvailSet(s32 id); s32 GWMGCustomGet(s32 id); -s32 GWMGCustomSet(s32 id); -s32 GWMGCustomReset(s32 id); +void GWMGCustomSet(s32 id); +void GWMGCustomReset(s32 id); s16 GWCoinsGet(s32 player); void GWCoinsSet(s32 player, s16 value); void GWCoinsAdd(s32 player, s16 amount); @@ -37,4 +37,4 @@ void GWTotalStarsSet(s16 value); void GWTotalStarsAdd(s16 amount); u16 GWTotalStarsGet(void); -#endif \ No newline at end of file +#endif diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 5376c63e..f26f62dc 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -3,6 +3,7 @@ #include "dolphin.h" #include "game/flag.h" +#include "version.h" //HACK: to prevent prototype errors extern void HuPadRumbleAllStop(void); @@ -39,7 +40,8 @@ typedef struct system_state { }; /* 0x09 */ s8 last5_effect; /* 0x0A */ s8 player_curr; -/* 0x0B */ s8 unk0B[3]; +/* 0x0B */ u8 storyCharBit; +/* 0x0C */ s8 storyChar; /* 0x0E */ s16 block_pos; /* 0x10 */ u8 ATTRIBUTE_ALIGN(4) board_data[32]; /* 0x30 */ u8 mess_delay; @@ -109,11 +111,11 @@ typedef struct player_state { } PlayerState; //size of 0x30 typedef struct pause_backup_config { - u8 explain_mg : 1; - u8 show_com_mg : 1; - u8 mg_list : 2; - u8 mess_speed : 2; - u8 save_mode : 2; + u8 explain_mg : 1; + u8 show_com_mg : 1; + u8 mg_list : 2; + u8 mess_speed : 2; + u8 save_mode : 2; } PauseBackupConfig; typedef struct game_stat { @@ -135,19 +137,27 @@ typedef struct game_stat { u8 story_continue : 1; u8 party_continue : 1; u8 open_w06 : 1; - u8 field10E_bit4 : 1; - u8 field10E_bit5 : 1; - u8 field10E_bit6 : 1; + u8 veryHardUnlock : 1; + u8 customPackEnable : 1; + u8 musicAllF : 1; }; /* 0x10F */ PauseBackupConfig story_pause; /* 0x110 */ PauseBackupConfig party_pause; } GameStat; +extern s16 GwLanguage; +extern s16 GwLanguageSave; + extern PlayerConfig GWPlayerCfg[4]; extern PlayerState GWPlayer[4]; extern SystemState GWSystem; extern GameStat GWGameStat; +static inline s32 GWPlayerCfgGroupGet(s32 player) +{ + return GWPlayerCfg[player].group; +} + static inline s32 GWTeamGet(void) { return GWSystem.team; @@ -155,12 +165,12 @@ static inline s32 GWTeamGet(void) static inline s32 GWMGTypeGet(void) { - return GWSystem.mg_type; + return GWSystem.mg_type; } static inline void GWMGTypeSet(s32 type) { - GWSystem.mg_type = type; + GWSystem.mg_type = type; } static inline s32 GWPartyGet(void) @@ -168,6 +178,11 @@ static inline s32 GWPartyGet(void) return GWSystem.party; } +static inline void GWLanguageSet(s16 language) +{ + GWGameStat.language = language; +} + static inline s32 GWLanguageGet(void) { return GWGameStat.language; @@ -181,9 +196,9 @@ static inline s32 GWRumbleGet(void) static inline void GWRumbleSet(s32 value) { GWGameStat.rumble = value; - if(value == 0) { - HuPadRumbleAllStop(); - } + if(value == 0) { + HuPadRumbleAllStop(); + } } static inline s32 GWBonusStarGet(void) @@ -235,20 +250,41 @@ static inline s32 GWMessSpeedGet(void) static inline void GWMessSpeedSet(s32 value) { - GWSystem.mess_speed = value; - switch(value) { - case 0: - GWSystem.mess_delay = 16; - break; - - case 2: - GWSystem.mess_delay = 48; - break; - - default: - GWSystem.mess_delay = 32; - break; - } + #if VERSION_NTSC + GWSystem.mess_speed = value; + switch(value) { + case 0: + GWSystem.mess_delay = 16; + break; + + case 2: + GWSystem.mess_delay = 48; + break; + + default: + GWSystem.mess_delay = 32; + break; + } + #else + GWSystem.mess_speed = value; + switch(value) { + case 0: + GWSystem.mess_delay = 32; + break; + + case 2: + GWSystem.mess_delay = 64; + break; + + case 1: + GWSystem.mess_delay = 48; + break; + + default: + GWSystem.mess_delay = 120; + break; + } + #endif } static inline void GWSaveModeSet(s32 value) @@ -259,26 +295,41 @@ static inline void GWSaveModeSet(s32 value) static inline s32 GWSaveModeGet(void) { if (GWSystem.save_mode == 3) { - GWSaveModeSet(1); + GWSaveModeSet(1); } return GWSystem.save_mode; } -static inline s32 GWTurnGet(void) -{ - return GWSystem.turn; -} - static inline s32 GWBoardGet(void) { return GWSystem.board; } +static inline s32 GWPlayerCurrGet(void) +{ + return GWSystem.player_curr; +} + +static inline s32 GWStoryCharGet(void) +{ + return GWSystem.storyChar; +} + +static inline void GWStoryCharSet(s32 storyChar) +{ + GWSystem.storyChar = storyChar; +} + static inline s32 GWPlayerTeamGet(s32 player) { return GWPlayer[player].team; } +static inline s32 GWPlayerHandicapGet(s32 player) +{ + return GWPlayer[player].handicap; +} + static inline s32 GWLuckyValueGet(void) { return GWSystem.lucky_value; @@ -291,32 +342,32 @@ static inline void GWLuckyValueSet(s32 value) static inline s16 GWPlayerCoinBattleGet(s32 player) { - return GWPlayer[player].coins_battle; + return GWPlayer[player].coins_battle; } static inline s16 GWPlayerCoinCollectGet(s32 player) { - return GWPlayer[player].coin_collect; + return GWPlayer[player].coin_collect; } static inline void GWPlayerCoinCollectSet(s32 player, s16 value) { - GWPlayer[player].coin_collect = value; + GWPlayer[player].coin_collect = value; } static inline s16 GWPlayerCoinWinGet(s32 player) { - return GWPlayer[player].coin_win; + return GWPlayer[player].coin_win; } static inline void GWPlayerCoinWinSet(s32 player, s16 value) { - if (_CheckFlag(FLAG_ID_MAKE(1, 12)) == 0) { - GWPlayer[player].coin_win = value; - } + if (_CheckFlag(FLAG_ID_MAKE(1, 12)) == 0) { + GWPlayer[player].coin_win = value; + } } #define GWPlayerCoinWinAdd(player, value) GWPlayerCoinWinSet((player), GWPlayerCoinWinGet((player))+(value)) -#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), GWPlayerCoinCollectGet((player))+(value)) +#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), (s32)GWPlayerCoinCollectGet((player))+(value)) #endif diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index 304bd51d..9cf16673 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -11,10 +11,7 @@ typedef struct particle_data ParticleData; typedef void (*ParticleHook)(ModelData *model, ParticleData *particle, Mtx matrix); typedef struct { - /* 0x00 */ union { - u16 unk00; - s16 unk00_s16; - }; + /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; /* 0x04 */ s16 unk04; /* 0x06 */ s16 unk06; @@ -29,7 +26,7 @@ typedef struct { /* 0x40 */ GXColor unk40; } HsfanimStruct01; // Size 0x44 -typedef struct particle_data { +struct particle_data { /* 0x00 */ s16 unk_00; /* 0x02 */ s16 unk_02; /* 0x04 */ Vec unk_04; @@ -53,7 +50,7 @@ typedef struct particle_data { /* 0x4C */ Vec *unk_4C; /* 0x50 */ void *unk_50; /* 0x54 */ ParticleHook unk_54; -} ParticleData; // Size 0x58 +}; // Size 0x58 typedef struct { /* 0x00 */ s16 unk00; @@ -69,7 +66,7 @@ typedef struct { /* 0x2C */ s16 unk2C; /* 0x2E */ GXColor unk2E[4]; /* 0x3E */ GXColor unk3E[4]; -} HsfanimStruct00; // Size unknown +} HsfanimStruct00; // Size (min:0x4E, max:0x50) typedef struct { /* 0x00 */ u16 unk00; @@ -123,6 +120,7 @@ void Hu3DParticleBlendModeSet(s16 arg0, u8 arg1); void Hu3DParticleHookSet(s16 arg0, ParticleHook arg1); void Hu3DParticleAttrSet(s16 arg0, u8 arg1); void Hu3DParticleAttrReset(s16 arg0, u8 arg1); +void Hu3DParticleCntSet(s16 arg0, s16 arg1); void Hu3DParticleAnimModeSet(s16 arg0, s16 arg1); void Hu3DParManInit(void); s16 Hu3DParManCreate(AnimData *arg0, s16 arg1, HsfanimStruct00 *arg2); diff --git a/include/game/hsfdraw.h b/include/game/hsfdraw.h index 12d6e179..d3b46df6 100755 --- a/include/game/hsfdraw.h +++ b/include/game/hsfdraw.h @@ -6,7 +6,7 @@ typedef struct model_data ModelData; -typedef struct { +typedef struct hsfdraw_struct_01 { /* 0x00 */ u16 unk00; /* 0x02 */ s16 unk02; /* 0x04 */ s16 unk04; @@ -44,10 +44,19 @@ typedef struct hsf_const_data { AnimData *hiliteMap; } HsfConstData; +typedef struct hsf_draw_object { + /* 0x00 */ ModelData *model; + /* 0x04 */ HsfObject *object; + /* 0x08 */ float z; + /* 0x0C */ Mtx matrix; + /* 0x3C */ Vec scale; +} HsfDrawObject; + 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/include/game/hsfformat.h b/include/game/hsfformat.h index 04f3d458..36c083a9 100644 --- a/include/game/hsfformat.h +++ b/include/game/hsfformat.h @@ -99,7 +99,7 @@ typedef struct hsf_palette { typedef struct hsf_attribute { char *name; - void *unk04; + struct hsfdraw_struct_01 *unk04; u8 unk8[4]; float unk0C; u8 unk10[4]; diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 0d20b256..2be96d31 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -1,18 +1,90 @@ #ifndef _GAME_HSFMAN_H #define _GAME_HSFMAN_H +#include "game/data.h" #include "game/hsfanim.h" #include "game/hsfformat.h" #include "game/memory.h" -#include "game/data.h" + +#define HU3D_MODEL_MAX 512 +#define HU3D_MOTION_MAX 256 +#define HU3D_TEXANIM_MAX 256 +#define HU3D_TEXSCROLL_MAX 16 + +#define HU3D_MOTATTR_NONE 0 +#define HU3D_MOTATTR 0x40000000 + +#define HU3D_MOTATTR_LOOP 0x40000001 +#define HU3D_MOTATTR_PAUSE 0x40000002 +#define HU3D_MOTATTR_REV 0x40000004 +#define HU3D_MOTATTR_SHIFT_LOOP 0x40000008 +#define HU3D_MOTATTR_SHIFT_PAUSE 0x40000010 +#define HU3D_MOTATTR_SHIFT_REV 0x40000020 +#define HU3D_MOTATTR_SHAPE_LOOP 0x40000040 +#define HU3D_MOTATTR_SHAPE_PAUSE 0x40000080 +#define HU3D_MOTATTR_SHAPE_REV 0x40000100 +#define HU3D_MOTATTR_OVL_LOOP 0x40000200 +#define HU3D_MOTATTR_OVL_PAUSE 0x40000400 +#define HU3D_MOTATTR_OVL_REV 0x40000800 + +#define HU3D_CLUSTER_ATTR ((s32)0xC0000000) +#define HU3D_CLUSTER_ATTR_LOOP ((s32)0xC0000001) +#define HU3D_CLUSTER_ATTR_PAUSE ((s32)0xC0000002) +#define HU3D_CLUSTER_ATTR_REV ((s32)0xC0000004) + +#define HU3D_ATTR_NONE 0 + +#define HU3D_ATTR_DISPOFF 0x1 +#define HU3D_ATTR_ZWRITE_OFF 0x2 +#define HU3D_ATTR_SHADOW 0x4 +#define HU3D_ATTR_MOTION_OFF 0x8 +#define HU3D_ATTR_HOOKFUNC 0x10 +#define HU3D_ATTR_PARTICLE_KILL 0x20 +#define HU3D_ATTR_TEX_NEAR 0x40 +#define HU3D_ATTR_ENVELOPE_OFF 0x80 +#define HU3D_ATTR_MOT_SLOW 0x100 +#define HU3D_ATTR_TOON_MAP 0x200 +#define HU3D_ATTR_CLUSTER_ON 0x400 +#define HU3D_ATTR_MOT_EXEC 0x800 +#define HU3D_ATTR_LLIGHT 0x1000 +#define HU3D_ATTR_CAMERA_MOTON 0x2000 +#define HU3D_ATTR_NOCULL 0x4000 +#define HU3D_ATTR_HOOK 0x8000 +#define HU3D_ATTR_CAMERA 0x10000 +#define HU3D_ATTR_HILITE 0x20000 +#define HU3D_ATTR_TPLVL_SET 0x40000 +#define HU3D_ATTR_CURVE_MOTOFF 0x80000 +#define HU3D_ATTR_LINK 0x100000 +#define HU3D_ATTR_NOPAUSE 0x200000 +#define HU3D_ATTR_ZCMP_OFF 0x400000 +#define HU3D_ATTR_CULL_FRONT 0x800000 + +#define HU3D_CAM0 (1 << 0) +#define HU3D_CAM1 (1 << 1) +#define HU3D_CAM2 (1 << 2) +#define HU3D_CAM3 (1 << 3) +#define HU3D_CAM4 (1 << 4) +#define HU3D_CAM5 (1 << 5) +#define HU3D_CAM6 (1 << 6) +#define HU3D_CAM7 (1 << 7) +#define HU3D_CAM8 (1 << 8) +#define HU3D_CAM9 (1 << 9) +#define HU3D_CAM10 (1 << 10) +#define HU3D_CAM11 (1 << 11) +#define HU3D_CAM12 (1 << 12) +#define HU3D_CAM13 (1 << 13) +#define HU3D_CAM14 (1 << 14) +#define HU3D_CAM15 (1 << 15) +#define HU3D_CAM_MAX 16 #define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) +typedef struct model_data ModelData; typedef struct particle_data ParticleData; typedef void (*ModelHookFunc)(struct model_data *, Mtx); -typedef struct model_data { +struct model_data { u8 unk_00; u8 unk_01; u8 unk_02; @@ -36,25 +108,25 @@ typedef struct model_data { u32 unk_4C; u32 attr; u32 motion_attr; - Point3d unk_58; - f32 unk_64; - f32 unk_68; - f32 unk_6C; - f32 unk_70; - f32 unk_74; - f32 unk_78; - f32 unk_7C; - f32 unk_80; - f32 unk_84; - f32 unk_88; - f32 unk_8C; - f32 unk_90; - f32 unk_94; - f32 unk_98; - f32 unk_9C; - f32 unk_A0; - f32 unk_A4[4]; - f32 unk_B4[4]; + Vec unk_58; + float unk_64; + float unk_68; + float unk_6C; + float unk_70; + float unk_74; + float unk_78; + float unk_7C; + float unk_80; + float unk_84; + float unk_88; + float unk_8C; + float unk_90; + float unk_94; + float unk_98; + float unk_9C; + float unk_A0; + float unk_A4[4]; + float unk_B4[4]; union { HsfData *hsfData; ModelHookFunc hook; @@ -65,13 +137,13 @@ typedef struct model_data { Vec scale; Mtx unk_F0; void *unk_120; -} ModelData; // sizeof 0x124 +}; // sizeof 0x124 typedef struct camera_data { - f32 fov; - f32 near; - f32 far; - f32 aspect; - f32 aspect_dupe; + float fov; + float near; + float far; + float aspect; + float aspect_dupe; Vec pos; Vec up; Vec target; @@ -79,20 +151,20 @@ typedef struct camera_data { s16 scissor_y; s16 scissor_w; s16 scissor_h; - f32 viewport_x; - f32 viewport_y; - f32 viewport_w; - f32 viewport_h; - f32 near_z; - f32 far_z; + float viewport_x; + float viewport_y; + float viewport_w; + float viewport_h; + float near_z; + float far_z; } CameraData; // sizeof 0x58 typedef struct ThreeDProjectionStruct { u8 unk_00; char unk_01[0x3]; void *unk_04; Vec unk_08; - Point3d unk_14; - Point3d unk_20; + Vec unk_14; + Vec unk_20; Vec unk_2C; Mtx unk_38; Mtx unk_68; @@ -101,7 +173,7 @@ typedef struct shadow_data { u8 unk_00; u8 unk_01; u16 unk_02; - void* unk_04; + void *unk_04; Vec unk_08; Vec unk_14; Vec unk_20; @@ -112,8 +184,8 @@ typedef struct shadow_data { typedef struct light_data { s16 unk_00; s16 unk_02; - f32 unk_04; - f32 unk_08; + float unk_04; + float unk_08; char unk_0C[0x10]; Vec unk_1C; Vec unk_28; @@ -121,8 +193,8 @@ typedef struct light_data { GXColor color; } LightData; -extern void GXWaitDrawDone(); /* extern */ -extern void GXInitSpecularDir(GXLightObj*, f32, f32, f32); +extern void GXWaitDrawDone(); /* extern */ +extern void GXInitSpecularDir(GXLightObj *, float, float, float); void Hu3DInit(void); void Hu3DPreProc(void); @@ -137,11 +209,11 @@ s16 Hu3DModelLink(s16); s16 Hu3DHookFuncCreate(ModelHookFunc); void Hu3DModelKill(s16); void Hu3DModelAllKill(void); -void Hu3DModelPosSet(s16, f32, f32, f32); +void Hu3DModelPosSet(s16, float, float, float); void Hu3DModelPosSetV(s16, Vec *); -void Hu3DModelRotSet(s16, f32, f32, f32); +void Hu3DModelRotSet(s16, float, float, float); void Hu3DModelRotSetV(s16, Vec *); -void Hu3DModelScaleSet(s16, f32, f32, f32); +void Hu3DModelScaleSet(s16, float, float, float); void Hu3DModelScaleSetV(s16, Vec *); void Hu3DModelAttrSet(s16, u32); void Hu3DModelAttrReset(s16, u32); @@ -151,16 +223,16 @@ void Hu3DModelClusterAttrSet(s16, s16, s32); void Hu3DModelClusterAttrReset(s16, s16, s32); void Hu3DModelCameraSet(s16, u16); void Hu3DModelLayerSet(s16, s16); -HsfObject* Hu3DModelObjPtrGet(s16, char *); -void Hu3DModelTPLvlSet(s16, f32); -void Hu3DModelHiliteMapSet(s16, AnimData*); +HsfObject *Hu3DModelObjPtrGet(s16, char *); +void Hu3DModelTPLvlSet(s16, float); +void Hu3DModelHiliteMapSet(s16, AnimData *); void Hu3DModelShadowSet(s16); void Hu3DModelShadowReset(s16); void Hu3DModelShadowDispOn(s16); void Hu3DModelShadowDispOff(s16); void Hu3DModelShadowMapSet(s16); void Hu3DModelShadowMapObjSet(s16, char *); -void Hu3DModelAmbSet(s16, f32, f32, f32); +void Hu3DModelAmbSet(s16, float, float, float); void Hu3DModelHookSet(s16, char *, s16); void Hu3DModelHookReset(s16); void Hu3DModelHookObjReset(s16, char *); @@ -169,10 +241,10 @@ void Hu3DModelProjectionReset(s16, s16); void Hu3DModelHiliteTypeSet(s16, s16); void Hu3DModelReflectTypeSet(s16, s16); void Hu3DCameraCreate(s32); -void Hu3DCameraPerspectiveSet(s32, f32, f32, f32, f32); -void Hu3DCameraViewportSet(s32, f32, f32, f32, f32, f32, f32); +void Hu3DCameraPerspectiveSet(s32, float, float, float, float); +void Hu3DCameraViewportSet(s32, float, float, float, float, float, float); void Hu3DCameraScissorSet(s32, u32, u32, u32, u32); -void Hu3DCameraPosSet(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32); +void Hu3DCameraPosSet(s32, float, float, float, float, float, float, float, float, float); void Hu3DCameraPosSetV(s32 cam, Vec *pos, Vec *up, Vec *target); void Hu3DCameraKill(s32); void Hu3DCameraAllKill(void); @@ -183,47 +255,47 @@ void Hu3DCameraMotionOn(s16, s8); void Hu3DCameraMotionStart(s16, u16); void Hu3DCameraMotionOff(s16); void Hu3DLighInit(void); -s16 Hu3DGLightCreate(f32, f32, f32, f32, f32, f32, u8, u8, u8); -s16 Hu3DGLightCreateV(Vec*, Vec*, GXColor*); -s16 Hu3DLLightCreate(s16, f32, f32, f32, f32, f32, f32, u8, u8, u8); -s16 Hu3DLLightCreateV(s16, Vec*, Vec*, GXColor*); -void Hu3DGLightSpotSet(s16, f32, u16); -void Hu3DLLightSpotSet(s16, s16, f32, u16); +s16 Hu3DGLightCreate(float, float, float, float, float, float, u8, u8, u8); +s16 Hu3DGLightCreateV(Vec *, Vec *, GXColor *); +s16 Hu3DLLightCreate(s16, float, float, float, float, float, float, u8, u8, u8); +s16 Hu3DLLightCreateV(s16, Vec *, Vec *, GXColor *); +void Hu3DGLightSpotSet(s16, float, u16); +void Hu3DLLightSpotSet(s16, s16, float, u16); void Hu3DGLightInfinitytSet(s16); void Hu3DLLightInfinitytSet(s16, s16); -void Hu3DGLightPointSet(s16, f32, f32, u16); -void Hu3DLLightPointSet(s16, s16, f32, f32, u16); +void Hu3DGLightPointSet(s16, float, float, u16); +void Hu3DLLightPointSet(s16, s16, float, float, u16); void Hu3DGLightKill(s16); void Hu3DLLightKill(s16, s16); void Hu3DLightAllKill(void); void Hu3DGLightColorSet(s16, u8, u8, u8, u8); void Hu3DLLightColorSet(s16, s16, u8, u8, u8, u8); -void Hu3DGLightPosSetV(s16, Vec*, Point3d*); -void Hu3DLLightPosSetV(s16, s16, Vec*, Point3d*); -void Hu3DGLightPosSet(s16, f32, f32, f32, f32, f32, f32); -void Hu3DLLightPosSet(s16, s16, f32, f32, f32, f32, f32, f32); -void Hu3DGLightPosAimSetV(s16, Point3d*, Point3d*); -void Hu3DLLightPosAimSetV(s16, s16, Point3d*, Point3d*); -void Hu3DGLightPosAimSet(s16, f32, f32, f32, f32, f32, f32); -void Hu3DLLightPosAimSet(s16, s16, f32, f32, f32, f32, f32, f32); +void Hu3DGLightPosSetV(s16, Vec *, Vec *); +void Hu3DLLightPosSetV(s16, s16, Vec *, Vec *); +void Hu3DGLightPosSet(s16, float, float, float, float, float, float); +void Hu3DLLightPosSet(s16, s16, float, float, float, float, float, float); +void Hu3DGLightPosAimSetV(s16, Vec *, Vec *); +void Hu3DLLightPosAimSetV(s16, s16, Vec *, Vec *); +void Hu3DGLightPosAimSet(s16, float, float, float, float, float, float); +void Hu3DLLightPosAimSet(s16, s16, float, float, float, float, float, float); void Hu3DGLightStaticSet(s16, s32); void Hu3DLLightStaticSet(s16, s16, s32); s32 Hu3DModelLightInfoSet(s16, s16); -s16 Hu3DLightSet(ModelData*, Mtx*, Mtx*, f32); -void lightSet(LightData* arg0, s16 arg1, Mtx *arg2, Mtx *arg3, f32 arg8); +s16 Hu3DLightSet(ModelData *, Mtx *, Mtx *, float); +void lightSet(LightData *arg0, s16 arg1, Mtx *arg2, Mtx *arg3, float arg8); void Hu3DReflectNoSet(s16 arg0); -void Hu3DFogSet(f32, f32, u8, u8, u8); +void Hu3DFogSet(float, float, u8, u8, u8); void Hu3DFogClear(void); -void Hu3DShadowCreate(f32, f32, f32); -void Hu3DShadowPosSet(Vec*, Vec*, Vec*); -void Hu3DShadowTPLvlSet(f32); +void Hu3DShadowCreate(float, float, float); +void Hu3DShadowPosSet(Vec *, Vec *, Vec *); +void Hu3DShadowTPLvlSet(float); void Hu3DShadowSizeSet(u16); void Hu3DShadowExec(void); -s16 Hu3DProjectionCreate(void*, f32, f32, f32); +s16 Hu3DProjectionCreate(void *, float, float, float); void Hu3DProjectionKill(s16); -void Hu3DProjectionPosSet(s16, Vec*, Vec*, Vec*); -void Hu3DProjectionTPLvlSet(s16, f32); -void Hu3DMipMapSet(char*, s16, s32, f32); +void Hu3DProjectionPosSet(s16, Vec *, Vec *, Vec *); +void Hu3DProjectionTPLvlSet(s16, float); +void Hu3DMipMapSet(char *, s16, s32, float); extern ModelData Hu3DData[0x200]; extern CameraData Hu3DCamera[0x10]; diff --git a/include/game/hsfmotion.h b/include/game/hsfmotion.h index 7ec10d4c..f820bd7f 100644 --- a/include/game/hsfmotion.h +++ b/include/game/hsfmotion.h @@ -4,6 +4,8 @@ #include "dolphin.h" #include "game/hsfformat.h" +#define Hu3DMotionCreateFile(data_id) (Hu3DMotionCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) + #define Hu3DJointMotionFile(model, data_id) (Hu3DJointMotion((model), HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) diff --git a/include/game/minigame_seq.h b/include/game/minigame_seq.h index d54895c9..6f20a101 100644 --- a/include/game/minigame_seq.h +++ b/include/game/minigame_seq.h @@ -37,6 +37,8 @@ #define MGSeqWinCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_WIN, MG_SEQ_WIN_TYPE_WIN, (player_1), (player_2), (player_3), (player_4)) #define MGSeqLoseCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_WIN, MG_SEQ_WIN_TYPE_LOSE, (player_1), (player_2), (player_3), (player_4)) #define MGSeqChampionCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_ALTWIN, MG_SEQ_WIN_TYPE_CHAMPION, (player_1), (player_2), (player_3), (player_4)) +#define MGSeqAltWinCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_ALTWIN, MG_SEQ_WIN_TYPE_WIN, (player_1), (player_2), (player_3), (player_4)) + #define MGSeqRecordCreate(value) MGSeqCreate(MG_SEQ_TYPE_RECORD, (value)) @@ -46,7 +48,7 @@ typedef struct seq_work SeqWork; typedef s32 (*SeqUpdateFunc)(SeqWork *work); typedef s32 (*SeqInitFunc)(SeqWork *work, va_list params); -typedef struct seq_work { +struct seq_work { SeqUpdateFunc update; char *data; float x; @@ -71,7 +73,7 @@ typedef struct seq_work { u8 stat; u8 unk_7C; u8 unk_7D; -} SeqWork; +}; void MGSeqInit(void); void MGSeqMain(void); @@ -89,6 +91,32 @@ void MGSeqPauseEnableCtrl(s32 flag); void MGSeqPracticeInit(void); void MGSeqPracticeExitCheck(omObjData *object); +s32 MGSeqInitTimer(SeqWork *work, va_list params); +s32 MGSeqUpdateTimer(SeqWork *work); + +s32 MGSeqInitType2(SeqWork *work, va_list params); +s32 MGSeqUpdateType2(SeqWork *work); + +s32 MGSeqUpdateMGBattle(SeqWork *work); + +s32 MGSeqInitMGBasic(SeqWork *work, va_list params); +s32 MGSeqUpdateMGBasic(SeqWork *work); +s32 MGSeqInitMGCommon(SeqWork *work, va_list params); +s32 MGSeqUpdateMG1vs3(SeqWork *work); +s32 MGSeqUpdateMGStory(SeqWork *work); +s32 MGSeqUpdateMG2vs2(SeqWork *work); +s32 MGSeqUpdateMGBowser(SeqWork *work); + +s32 MGSeqInitWin(SeqWork *work, va_list params); +s32 MGSeqUpdateWin(SeqWork *work); +s32 MGSeqInitDraw(SeqWork *work, va_list params); +s32 MGSeqUpdateDraw(SeqWork *work); +s32 MGSeqInitRecord(SeqWork *work, va_list params); +s32 MGSeqUpdateRecord(SeqWork *work); + +s32 MGSeqInitFlip(SeqWork *work, va_list params); +s32 MGSeqUpdateFlip(SeqWork *work); + extern OverlayID mgSeqOvlPrev; #endif diff --git a/include/game/msm.h b/include/game/msm.h index 1885d41e..e5106677 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -1,87 +1,205 @@ -#ifndef _GAME_MSM_H -#define _GAME_MSM_H +#ifndef MSM_H +#define MSM_H #include "dolphin.h" +#include "musyx/musyx.h" +#include "game/msm_data.h" -typedef struct { - s32 unk00; - s32 unk04; - char unk08[4]; - char *unk0C; - char *unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - void *unk20; - s32 unk24; -} UnkMsmStruct_00; // Size 0x28 +#define MSM_SEPARAM_NONE 0 +#define MSM_SEPARAM_VOL (1 << 0) +#define MSM_SEPARAM_PAN (1 << 1) +#define MSM_SEPARAM_PITCH (1 << 2) +#define MSM_SEPARAM_SPAN (1 << 3) +#define MSM_SEPARAM_AUXVOLA (1 << 4) +#define MSM_SEPARAM_AUXVOLB (1 << 5) +#define MSM_SEPARAM_POS (1 << 6) +#define MSM_SEPARAM_PAD (1 << 7) -typedef struct { - /* 0x00 */ s32 unk00; - /* 0x04 */ s8 unk04; - /* 0x05 */ s8 unk05; - /* 0x06 */ s16 unk06; - /* 0x08 */ char unk08[1]; - /* 0x09 */ s8 unk09; - /* 0x0A */ s8 unk0A; - /* 0x0B */ char unk0B[5]; - /* 0x10 */ Vec unk10; -} UnkMsmStruct_01; // Size 0x1C +#define MSM_LISTENER_NONE 0 +#define MSM_LISTENER_STARTDIS (1 << 0) +#define MSM_LISTENER_FRONTSURDIS (1 << 1) +#define MSM_LISTENER_BACKSURDIS (1 << 2) -typedef struct { - /* 0x00 */ s32 unk00; - /* 0x04 */ float startDis; - /* 0x08 */ float frontSurDis; - /* 0x0C */ float backSurDis; -} UnkMsmStruct_02; // Size (min: 0x10, max: 0x1C) +#define MSM_MUSPARAM_NONE 0 +#define MSM_MUSPARAM_CHAN (1 << 0) +#define MSM_MUSPARAM_VOL (1 << 1) +#define MSM_MUSPARAM_PAUSE (1 << 2) +#define MSM_MUSPARAM_FADESPEED (1 << 3) +#define MSM_MUSPARAM_SPEED (1 << 4) -typedef struct { - /* 0x00 */ s32 unk00; - /* 0x04 */ s8 unk04; - /* 0x05 */ s8 unk05; - /* 0x06 */ u16 unk06; -} UnkMsmStruct_03; // Size unknown (min: 8, max: 0x10) +#define MSM_STREAMPARAM_NONE 0 +#define MSM_STREAMPARAM_VOL (1 << 0) +#define MSM_STREAMPARAM_PAN (1 << 1) +#define MSM_STREAMPARAM_SPAN (1 << 2) +#define MSM_STREAMPARAM_AUXA (1 << 4) +#define MSM_STREAMPARAM_AUXB (1 << 5) +#define MSM_STREAMPARAM_FADESPEED (1 << 8) +#define MSM_STREAMPARAM_CHAN (1 << 9) +#define MSM_STREAMPARAM_PAUSE (1 << 10) -typedef struct { - /* 0x00 */ s32 unk00; - /* 0x04 */ char unk04[1]; - /* 0x05 */ s8 unk05; - /* 0x06 */ u16 unk06; - /* 0x08 */ char unk08[1]; -} UnkMsmStruct_04; // Size unknown (min: 9, max: 0x18) +#define MSM_ERR_OPENFAIL -1 +#define MSM_ERR_READFAIL -2 +#define MSM_ERR_OUTOFMEM -10 +#define MSM_ERR_OUTOFAMEM -20 +#define MSM_ERR_INITFAIL -30 +#define MSM_ERR_INVALID_AUXPARAM -31 +#define MSM_ERR_GRP_FAILPUSH -32 +#define MSM_ERR_PLAYFAIL -33 +#define MSM_LISTENER_NO_UPDATA -34 +#define MSM_ERR_STREAMALLOC_FAIL -35 +#define MSM_ERR_INSTALLED -36 +#define MSM_ERR_64 -100 +#define MSM_ERR_STACK_OVERFLOW -101 +#define MSM_ERR_GRP_NOTLOADED -103 +#define MSM_ERR_CHANLIMIT -110 +#define MSM_ERR_INVALIDSE -111 +#define MSM_ERR_INVALIDID -120 +#define MSM_ERR_INVALIDFILE -121 +#define MSM_ERR_REMOVEDID -122 +#define MSM_ERR_MUSGRP_NOTLOADED -123 +#define MSM_ERR_OUTOFMUS -130 +#define MSM_ERR_RANGE_STREAM -140 -void msmSysRegularProc(void); -void msmSysSetOutputMode(s32 arg0); -void msmSysSetAux(s32 arg0, s32 arg1); -s32 msmSysGetSampSize(s32 arg0); +#define MSM_VOL_MAX 127 +#define MSM_PAN_LEFT 32 +#define MSM_PAN_CENTER 64 +#define MSM_PAN_RIGHT 96 + +#define MSM_SE_DONE 0 +#define MSM_SE_PLAY 1 +#define MSM_SE_PAUSEIN 2 +#define MSM_SE_PAUSEOUT 3 + +#define MSM_MUS_DONE 0 +#define MSM_MUS_STOP 1 +#define MSM_MUS_PLAY 2 +#define MSM_MUS_PAUSE 3 + +#define MSM_STREAM_DONE 0 +#define MSM_STREAM_STOP 1 +#define MSM_STREAM_PLAY 2 +#define MSM_STREAM_PAUSEIN 3 +#define MSM_STREAM_PAUSEOUT 4 +#define MSM_STREAM_DVDERROR 5 + +#define MSM_MUS_MAX 4 + +#define MSM_STREAM_NONE -1 + +#define MSM_AUXA_DEFAULT 0 +#define MSM_AUXB_DEFAULT 1 +#define MSM_AUX_NONE -1 + +#define MSM_ENTRY_SENO_MAX 32 + +typedef BOOL (*MSM_OPEN)(s32 entrynum, DVDFileInfo *fileInfo); +typedef BOOL (*MSM_READ)(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset, s32 prio); +typedef BOOL (*MSM_CLOSE)(DVDFileInfo *fileInfo); + + +typedef struct msmAram_s { + BOOL skipARInit; + union { + struct { + u32 aramEnd; + }; + struct { + u32 numEntries; + u32 *stackIndex; + }; + }; +} MSM_ARAM; + +typedef struct msmInit_s { + char *msmPath; + char *pdtPath; + MSM_OPEN open; + MSM_READ read; + MSM_CLOSE close; + void *heap; + u32 heapSize; +} MSM_INIT; + +typedef struct msmSeParam_s { + s32 flag; + s8 vol; + s8 pan; + s16 pitch; + u8 span; + s8 auxAVol; + s8 auxBVol; + s32 pad; + Vec pos; +} MSM_SEPARAM; + + +typedef struct msmSeListener_s { + s32 flag; + float startDis; + float frontSurDis; + float backSurDis; +} MSM_SELISTENER; + +typedef struct msmMusParam_s { + s32 flag; + s8 chan; + s8 vol; + u16 fadeSpeed; + u16 speed; +} MSM_MUSPARAM; + +typedef struct msmStreamParam_s { + s32 flag; + s8 vol; + s8 pan; + s8 span; + s8 auxA; + s8 auxB; + s8 chan; + u16 fadeSpeed; +} MSM_STREAMPARAM; + +s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram); +BOOL msmSysSetOutputMode(SND_OUTPUTMODE mode); s32 msmSysDelGroupAll(void); -s32 msmSysDelGroupBase(s32 arg0); -void msmSysLoadGroupBase(s32 arg0, void *arg1); -s32 msmSysLoadGroupSet(s32 arg0, void *arg1); -s32 msmSysInit(char **arg0, UnkMsmStruct_00 *arg1); -s32 msmMusGetMidiCtrl(s32 arg0, s32 arg1, s32 arg2); -s32 msmMusGetNumPlay(s32 arg0); -s32 msmMusGetStatus(s32 arg0); -void msmMusPauseAll(s32 arg0, s32 arg1); -void msmMusPause(s32 arg0, s32 arg1, s32 arg2); -void msmMusSetParam(s16 arg0, UnkMsmStruct_04 *arg1); -void msmMusStopAll(s32 arg0, s32 arg1); -void msmMusStop(s32 arg0, s32 arg1); -s32 msmMusPlay(s32 arg0, UnkMsmStruct_03 *arg1); +s32 msmSysGetSampSize(BOOL baseGrp); +s32 msmSysDelGroupBase(s32 grpNum); +s32 msmSysSetAux(s32 auxA, s32 auxB); + +s32 msmSeSetParam(int seNo, MSM_SEPARAM *param); +int msmSePlay(int seId, MSM_SEPARAM *param); +s32 msmSeStop(int seNo, s32 speed); +void msmSePauseAll(BOOL pause, s32 speed); +s32 msmSePause(int seNo, BOOL pause, s32 speed); +void msmSeStopAll(BOOL checkGrp, s32 speed); +s32 msmSeSetListener(Vec *pos, Vec *heading, float sndDist, float sndSpeed, MSM_SELISTENER *listener); +s32 msmSeUpdataListener(Vec *pos, Vec *heading); void msmSeDelListener(void); -void msmSeUpdataListener(Vec *arg0, Vec *arg1); -void msmSeSetListener(Vec* arg0, Vec* arg1, float arg2, float arg3, UnkMsmStruct_02 *arg4); -s32 msmSeGetEntryID(s32 arg0, void *arg1); -s32 msmSeGetNumPlay(s32 arg0); -s32 msmSeGetStatus(s32 arg0); -s32 msmSeSetParam(s32 arg0, UnkMsmStruct_01 *arg1); -void msmSePauseAll(s32 arg0, s32 arg1); -void msmSeStopAll(s32 arg0, s32 arg1); -void msmSeStop(s32 arg0, s32 arg1); -s32 msmSePlay(s32 arg0, UnkMsmStruct_01 *arg1); -s32 msmStreamGetStatus(s32 arg0); -void msmStreamPauseAll(s32 arg0); -void msmStreamStop(s32 arg0, s32 arg1); -s32 msmStreamPlay(s16 arg0, s32 *arg1); +s32 msmSeGetStatus(int seNo); +s32 msmSeGetNumPlay(BOOL baseGrp); +s32 msmSeGetEntryID(s32 seId, int *seNo); +void msmSeSetMasterVolume(s32 vol); +MSM_SE* msmSeGetIndexPtr(s32 seId); + +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); +s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl); +void msmMusStopAll(BOOL checkGrp, s32 speed); +s32 msmMusGetStatus(int musNo); +s32 msmMusGetNumPlay(BOOL baseGrp); +s32 msmMusSetParam(s32 musNo, MSM_MUSPARAM *param); +void msmMusSetMasterVolume(s32 vol); + +int msmStreamPlay(int streamId, MSM_STREAMPARAM *streamParam); +s32 msmStreamStop(int streamNo, s32 speed); +s32 msmStreamPauseAll(BOOL pause, s32 speed); +s32 msmStreamPause(int streamNo, BOOL pause, s32 speed); + +void msmStreamStopAll(s32 speed); +s32 msmStreamGetStatus(int streamNo); +void msmStreamSetMasterVolume(s32 arg0); +void msmStreamSetOutputMode(s32 outputMode); #endif diff --git a/include/game/msm_data.h b/include/game/msm_data.h new file mode 100644 index 00000000..0c282ffb --- /dev/null +++ b/include/game/msm_data.h @@ -0,0 +1,185 @@ +#ifndef _MSM_DATA_H +#define _MSM_DATA_H + +#include "dolphin.h" +#include "musyx/musyx.h" + +#define MSM_STREAM_FLAG_STEREO 0x1 +#define MSM_STREAM_FLAG_LOOP 0x2 + +#define MSM_FILE_VERSION 2 +#define MSM_PDT_FILE_VERSION 1 + +typedef struct MSMHeader_s { + s32 magic; + s32 version; + s32 endOfs; + s32 endSize; + s32 infoOfs; + u32 infoSize; + s32 auxParamOfs; + u32 auxParamSize; + s32 grpInfoOfs; + s32 grpInfoSize; + s32 musOfs; + s32 musSize; + s32 seOfs; + s32 seSize; + s32 grpDataOfs; + s32 grpDataSize; + s32 sampOfs; + s32 sampSize; + s32 dummyMusOfs; + s32 dummyMusSize; + s32 grpSetOfs; + s32 grpSetSize; + s32 pad[2]; +} MSM_HEADER; // sizeof 0x60 + +typedef struct MSMInfo_s { + s8 voices; + s8 music; + s8 sfx; + s8 grpMax; + s16 musMax; + s16 seMax; + s8 musChanMax; + s8 stackDepthA; + s8 stackDepthB; + s8 surroundF; + s8 unkC[2]; + s8 auxParamA; + s8 auxParamB; + s32 minMem; + s32 aramSize; + s32 grpBufSizeA; + s32 grpBufSizeB; + s32 dummyMusSize; + s32 unk24; + s8 baseGrpNum; + s8 baseGrp[23]; +} MSM_INFO; + +typedef struct { + u32 tempDisableFX; + f32 coloration; + f32 mix; + f32 time; + f32 damping; + f32 preDelay; + f32 crosstalk; +} MSM_AUXPARAM_REVERBHI; + +typedef struct { + u32 tempDisableFX; + f32 coloration; + f32 mix; + f32 time; + f32 damping; + f32 preDelay; + f32 crosstalk; +} MSM_AUXPARAM_REVERBSTD; + +typedef struct { + u32 baseDelay; + u32 variation; + u32 period; +} MSM_AUXPARAM_CHORUS; + +typedef struct { + u32 delay[3]; + u32 feedback[3]; + u32 output[3]; +} MSM_AUXPARAM_DELAY; + +typedef struct MSMAuxParam_s { + s8 type; + u8 pad[3]; + union { + MSM_AUXPARAM_REVERBHI revHi; + MSM_AUXPARAM_REVERBSTD revStd; + MSM_AUXPARAM_CHORUS chorus; + MSM_AUXPARAM_DELAY delay; + }; +} MSM_AUXPARAM; + +typedef struct MSMSe_s { + SND_GROUPID gid; + SND_FXID fxId; + s8 vol; + s8 pan; + s16 pitchBend; + u8 span; + u8 reverb; + u8 chorus; + s8 emitterF; + s8 emiComp; + u8 pad[3]; +} MSM_SE; + +typedef struct MSMMus_s { + SND_GROUPID sgid; + SND_SONGID sid; + s32 songOfs; + s32 songSize; + s8 songGrp; + s8 vol; + u8 pad[2]; +} MSM_MUS; // Size 0x10 + +typedef struct MSMGrpHead_s { + s32 poolOfs; + s32 projOfs; + s32 sdirOfs; + s32 sngOfs; +} MSM_GRP_HEAD; + +typedef struct MSMGrpInfo_s { + SND_GROUPID gid; + s8 stackNo; + s8 subGrpId; + s32 dataOfs; + s32 dataSize; + s32 sampOfs; + s32 sampSize; + u8 pad[12]; +} MSM_GRP_INFO; + +typedef struct MSMGrpSet_s { + s8 numGrpSet; + s8 grpSetW; + s8 data[1]; +} MSM_GRP_SET; + +typedef struct MSMStreamHeader_s { + s16 version; + s16 streamMax; + s32 chanMax; + s32 sampleFrq; + s32 maxBufs; + u32 streamPackListOfs; + u32 adpcmParamOfs; + u32 streamPackOfs; + u32 sampleOfs; +} MSM_STREAM_HEADER; + +typedef struct MSMStream_s { + s32 sampleOfs; + s16 adpcmParamIdx; + u16 pad; +} MSM_STREAM; + +typedef struct MSMStreamPack_s { + s8 flag; + s8 vol; + s8 pan; + s8 span; + s8 auxA; + s8 auxB; + u16 frq; + u32 loopOfsEnd; + u32 loopOfsStart; + MSM_STREAM stream[2]; +} MSM_STREAM_PACK; // Size unknown + +#endif diff --git a/include/game/object.h b/include/game/object.h index 95061c52..69f4cb6b 100644 --- a/include/game/object.h +++ b/include/game/object.h @@ -117,7 +117,7 @@ extern s32 omcurdll; extern s32 omovlhisidx; extern s32 omovlevtno; extern s32 omnextovlevtno; -extern s32 omovlstat; +extern u32 omovlstat; extern char omUPauseFlag; extern s16 omSysExitReq; extern s16 omdispinfo; @@ -134,4 +134,4 @@ extern Vec CenterM[16]; extern float CZoomM[16]; extern s16 omDBGMenuButton; -#endif \ No newline at end of file +#endif diff --git a/include/game/objsub.h b/include/game/objsub.h index 2cc262d0..d42531e5 100644 --- a/include/game/objsub.h +++ b/include/game/objsub.h @@ -26,7 +26,7 @@ extern s16 mgTypeCurr; extern s16 mgBattleStar[4]; extern s16 mgBattleStarMax; extern u8 lbl_801D3E94; -extern s32 mgRecordExtra; +extern u32 mgRecordExtra; extern s32 mgQuitExtraF; extern s32 mgPracticeEnableF; extern s32 mgInstExitEnableF; diff --git a/include/game/window.h b/include/game/window.h index 85be8616..a2ff8eb1 100644 --- a/include/game/window.h +++ b/include/game/window.h @@ -109,9 +109,7 @@ s16 HuWinChoiceGet(s16 window, s16 start_choice); s16 HuWinChoiceNumGet(s16 window); void HuWinChoiceDisable(s16 window, s16 choice); s16 HuWinChoiceNowGet(s16 window); -#ifndef HUWIN_USE_OLD_DEFS void HuWinMesWait(s16 window); -#endif s16 HuWinAnimSet(s16 window, AnimData *anim, s16 bank, float x, float y); s16 HuWinSprSet(s16 window, s16 sprite, float x, float y); void HuWinSprPosSet(s16 window, s16 index, float x, float y); diff --git a/include/game/wipe.h b/include/game/wipe.h index 7d45a8cb..baafbe25 100644 --- a/include/game/wipe.h +++ b/include/game/wipe.h @@ -3,6 +3,7 @@ #include "dolphin.h" +#define WIPE_TYPE_PREV -1 #define WIPE_TYPE_NORMAL 0 #define WIPE_TYPE_CROSS 1 #define WIPE_TYPE_DUMMY 2 @@ -39,4 +40,4 @@ u8 WipeStatGet(void); extern WipeState wipeData; extern BOOL wipeFadeInF; -#endif \ No newline at end of file +#endif diff --git a/include/math.h b/include/math.h index 419d4d50..5ac49892 100644 --- a/include/math.h +++ b/include/math.h @@ -7,20 +7,52 @@ #define _MATH_INLINE static inline #endif +extern int __float_nan[]; +extern int __float_huge[]; +extern int __double_huge[]; + +#define INFINITY (*(float *)__float_huge) +#define NAN (*(float *)__float_nan) +#define HUGE_VAL (*(double *)__double_huge) + +#ifdef __MWERKS__ +extern inline double sqrt(double x) +{ + if (x > 0.0) { + double guess = __frsqrte(x); /* returns an approximation to */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 8 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 16 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 32 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have > 53 sig bits */ + return x * guess; + } + else if (x == 0) + return 0; + else if (x) + return NAN; + + return INFINITY; +} + extern inline float sqrtf(float x) { - volatile float y; - if(x > 0.0f) - { - double guess = __frsqrte((double)x); // returns an approximation to - guess = 0.5*guess*(3.0 - guess*guess*x); // now have 12 sig bits - guess = 0.5*guess*(3.0 - guess*guess*x); // now have 24 sig bits - guess = 0.5*guess*(3.0 - guess*guess*x); // now have 32 sig bits - y=(float)(x*guess); - return y; - } - return x; + static const double _half = .5; + static const double _three = 3.0; + volatile float y; + if (x > 0.0f) { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half * guess * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 32 sig bits + y = (float)(x * guess); + return y; + } + return x; } +#else +double sqrt(double x); +float sqrtf(float x); +#endif double atan(double x); double copysign(double x, double y); @@ -38,28 +70,58 @@ double fmod(double x, double y); double log(double x); double pow(double x, double y); float tanf(float x); -float sinf(float x); -float cosf(float x); -float atan2f(float y, float x); -float acosf(float x); +#ifdef __MWERKS__ extern inline double fabs(double x) { - return __fabs(x); + return __fabs(x); +} +#else +double fabs(double x); +#endif + +_MATH_INLINE float fabsf(float x) +{ + return (float)fabs((double)x); +} +_MATH_INLINE float sinf(float x) +{ + return (float)sin((double)x); +} +_MATH_INLINE float cosf(float x) +{ + return (float)cos((double)x); +} +_MATH_INLINE float atan2f(float y, float x) +{ + return (float)atan2((double)y, (double)x); +} +_MATH_INLINE float atanf(float x) +{ + return (float)atan((double)x); +} +_MATH_INLINE float asinf(float x) +{ + return (float)asin((double)x); +} +_MATH_INLINE float acosf(float x) +{ + return (float)acos((double)x); } -_MATH_INLINE float fabsf(float x) { return (float)fabs((double)x); } -_MATH_INLINE float sinf(float x) { return (float)sin((double)x); } -_MATH_INLINE float cosf(float x) { return (float)cos((double)x); } -_MATH_INLINE float atan2f(float y, float x) { return (float)atan2((double)y, (double)x); } -_MATH_INLINE float atanf(float x) { return (float)atan((double)x); } -_MATH_INLINE float asinf(float x) { return (float)asin((double)x); } -_MATH_INLINE float acosf(float x) { return (float)acos((double)x); } +_MATH_INLINE float fmodf(float x, float m) +{ + return (float)fmod((double)x, (double)m); +} -_MATH_INLINE float fmodf(float x, float m) { return (float)fmod((double)x, (double)m); } +_MATH_INLINE float floorf(float x) +{ + return floor(x); +} -_MATH_INLINE float floorf(float x) { return floor(x); } - -_MATH_INLINE float powf(float __x, float __y) { return pow(__x, __y); } +_MATH_INLINE float powf(float __x, float __y) +{ + return pow(__x, __y); +} #endif diff --git a/include/msm/msmfio.h b/include/msm/msmfio.h new file mode 100644 index 00000000..2335134f --- /dev/null +++ b/include/msm/msmfio.h @@ -0,0 +1,19 @@ +#ifndef MSMFIO_H +#define MSMFIO_H + +#include "dolphin.h" +#include "dolphin/types.h" +#include "game/msm.h" + +struct msmFio { + MSM_OPEN open; + MSM_READ read; + MSM_CLOSE close; +}; + +BOOL msmFioClose(DVDFileInfo *fileInfo); +BOOL msmFioRead(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset); +BOOL msmFioOpen(s32 entrynum, DVDFileInfo *fileInfo); +void msmFioInit(MSM_OPEN open, MSM_READ read, MSM_CLOSE close); + +#endif diff --git a/include/msm/msmmem.h b/include/msm/msmmem.h index 7deab41a..30d73f75 100644 --- a/include/msm/msmmem.h +++ b/include/msm/msmmem.h @@ -1,5 +1,10 @@ +#ifndef MSMMEM_H +#define MSMMEM_H + #include "dolphin/types.h" -void msmMemFree(void*); -void* msmMemAlloc(s32); -void msmMemInit(void*, u32); \ No newline at end of file +void msmMemFree(void *ptr); +void *msmMemAlloc(u32 sze); +void msmMemInit(void *ptr, u32 size); + +#endif diff --git a/include/msm/msmmus.h b/include/msm/msmmus.h new file mode 100644 index 00000000..586af22c --- /dev/null +++ b/include/msm/msmmus.h @@ -0,0 +1,21 @@ +#ifndef MSMMUS_H +#define MSMMUS_H + +#include "game/msm.h" +#include "msm/msmsys.h" + +void msmMusFdoutEnd(void); +void msmMusPeriodicProc(void); +s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl); +s32 msmMusGetNumPlay(BOOL baseGrp); +s32 msmMusGetStatus(int musNo); +void msmMusSetMasterVolume(s32 arg0); +s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1); +void msmMusPauseAll(BOOL pause, s32 speed); +s32 msmMusPause(int musNo, BOOL pause, s32 speed); +void msmMusStopAll(BOOL checkGrp, s32 speed); +s32 msmMusStop(int musNo, s32 speed); +int msmMusPlay(int musId, MSM_MUSPARAM* musParam); +s32 msmMusInit(MSM_SYS* arg0, DVDFileInfo* arg1); + +#endif diff --git a/include/msm/msmse.h b/include/msm/msmse.h new file mode 100644 index 00000000..b765a771 --- /dev/null +++ b/include/msm/msmse.h @@ -0,0 +1,23 @@ +#ifndef MSMSE_H +#define MSMSE_H + +#include "game/msm.h" +#include "msm/msmsys.h" + +void msmSePeriodicProc(void); +MSM_SE* msmSeGetIndexPtr(s32 arg0); +void msmSeDelListener(void); +s32 msmSeUpdataListener(Vec* pos, Vec* heading); +s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener); +s32 msmSeGetEntryID(s32 seId, int* seNo); +s32 msmSeGetNumPlay(BOOL baseGrp); +s32 msmSeGetStatus(int seNo); +void msmSeSetMasterVolume(s32 arg0); +s32 msmSeSetParam(int seNo, MSM_SEPARAM* param); +void msmSePauseAll(BOOL pause, s32 speed); +void msmSeStopAll(BOOL checkGrp, s32 speed); +s32 msmSeStop(int seNo, s32 speed); +int msmSePlay(int seId, MSM_SEPARAM* param); +s32 msmSeInit(MSM_SYS* arg0, DVDFileInfo* arg1); + +#endif diff --git a/include/msm/msmstream.h b/include/msm/msmstream.h new file mode 100644 index 00000000..b86fcaad --- /dev/null +++ b/include/msm/msmstream.h @@ -0,0 +1,18 @@ +#ifndef MSMSTREAM_H +#define MSMSTREAM_H + +#include "game/msm.h" + +s32 msmStreamGetStatus(int streamNo); +void msmStreamSetMasterVolume(s32 arg0); +void msmStreamStopAll(s32 speed); +s32 msmStreamStop(int streamNo, s32 speed); +int msmStreamPlay(int streamId, MSM_STREAMPARAM* streamParam); +void msmStreamPeriodicProc(void); +void msmStreamSetOutputMode(s32 arg0); +void msmStreamAmemFree(void); +s32 msmStreamAmemAlloc(void); +s32 msmStreamInit(char* arg0); + + +#endif diff --git a/include/msm/msmsys.h b/include/msm/msmsys.h new file mode 100755 index 00000000..6a55a4c6 --- /dev/null +++ b/include/msm/msmsys.h @@ -0,0 +1,84 @@ +#ifndef MSMSYS_H +#define MSMSYS_H + +#include "game/msm.h" // TODO remove, only for decomp + +#include "dolphin.h" + +#define MSM_AUX_REVERBHI 0 +#define MSM_AUX_REVERBSTD 1 +#define MSM_AUX_CHORUS 2 +#define MSM_AUX_DELAY 3 + +#define MSM_AUXNO_NULL -2 +#define MSM_AUXNO_UNSET -1 + +typedef union { + SND_AUX_REVERBHI revHi; + SND_AUX_REVERBSTD revStd; + SND_AUX_CHORUS chorus; + SND_AUX_DELAY delay; +} MSM_AUX; // Size 0x1E0 + +typedef struct MSMGrpWork_s { + s8 grpId; + s8 baseGrpF; + u32 num; + void *buf; +} MSM_GRP_STACK; + +typedef struct MSMSys_s { + s32 msmEntryNum; + s8 outputMode; + s8 unk5; + s8 unk6; + s8 arInitF; + s32 aramP; + MSM_HEADER *header; + MSM_INFO *info; + MSM_AUXPARAM *auxParam; + s8 auxParamNo[2]; + MSM_AUX aux[2]; // 0: userA, 1: userB + s8 grpMax; + s32 grpNum; + u32 sampSize; + u32 sampSizeBase; + MSM_GRP_INFO *grpInfo; + MSM_GRP_SET *grpSet; + s8 baseGrpNum; + MSM_GRP_HEAD *grpData[15]; + s8 grpStackAMax; + u8 grpStackADepth; + s8 grpStackAOfs; + void *grpBufA; + MSM_GRP_STACK grpStackA[4]; + s8 grpStackBMax; + u8 grpStackBDepth; + s8 grpStackBOfs; + void *grpBufB; + MSM_GRP_STACK grpStackB[10]; + s32 irqDepth; + BOOL irqState; + AIDCallback oldAIDCallback; + s32 timer; +} MSM_SYS; + +s32 msmSysSearchGroupStack(s32 arg0, s32 arg1); +s32 msmSysGroupInit(DVDFileInfo *arg0); +void msmSysIrqDisable(void); +void msmSysIrqEnable(void); +BOOL msmSysCheckBaseGroup(s32 arg0); +void *msmSysGetGroupDataPtr(s32 arg0); +BOOL msmSysCheckLoadGroupID(s32 arg0); +void msmSysRegularProc(void); +s32 msmSysGetOutputMode(void); +BOOL msmSysSetOutputMode(SND_OUTPUTMODE mode); +s32 msmSysGetSampSize(BOOL baseGrp); +s32 msmSysDelGroupAll(void); +s32 msmSysDelGroupBase(s32 grpNum); +s32 msmSysLoadGroupBase(s32 arg0, void *arg1); +s32 msmSysLoadGroupSet(s32 arg0, void *arg1); +void msmSysCheckInit(void); +s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram); + +#endif diff --git a/include/ovl_table.h b/include/ovl_table.h index 4f66a2d2..fe695ea9 100644 --- a/include/ovl_table.h +++ b/include/ovl_table.h @@ -1,3 +1,5 @@ +#include "version.h" + OVL_DEFINE(OVL__MINI, "dll/_minigameDLL.rel") OVL_DEFINE(OVL_BOOT, "dll/bootdll.rel") OVL_DEFINE(OVL_E3SETUP, "dll/e3setupDLL.rel") @@ -69,10 +71,17 @@ 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") +#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") +#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") +#endif OVL_DEFINE(OVL_MPEX, "dll/mpexdll.rel") OVL_DEFINE(OVL_MSETUP, "dll/msetupdll.rel") OVL_DEFINE(OVL_MSTORY2, "dll/mstory2dll.rel") @@ -96,4 +105,4 @@ 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") \ No newline at end of file +OVL_DEFINE(OVL_ZTAR, "dll/ztardll.rel") diff --git a/include/rel_sqrt_consts.h b/include/rel_sqrt_consts.h deleted file mode 100644 index 23ae61cd..00000000 --- a/include/rel_sqrt_consts.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _REL_SQRT_CONSTS -#define _REL_SQRT_CONSTS - -const double __fakeHalf = 0.5; -const double __fakeThree = 3.0; - - -#endif diff --git a/include/stdarg.h b/include/stdarg.h index 1ca0f853..e2cceee7 100644 --- a/include/stdarg.h +++ b/include/stdarg.h @@ -1,19 +1,39 @@ -#ifndef STDARG_H -#define STDARG_H +#ifndef _MSL_COMMON_STDARG_H +#define _MSL_COMMON_STDARG_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __MWERKS__ typedef struct { - char gpr; - char fpr; - char reserved[2]; - char* input_arg_area; - char* reg_save_area; + char gpr; + char fpr; + char reserved[2]; + char* input_arg_area; + char* reg_save_area; } __va_list[1]; typedef __va_list va_list; +#ifndef __MWERKS__ +extern void __builtin_va_info(va_list*); +#endif + void* __va_arg(va_list v_list, unsigned char type); -#define va_start(ap, fmt) ((void) fmt, __builtin_va_info(&ap)) -#define va_arg(ap, t) (*((t*) __va_arg(ap, _var_arg_typeof(t)))) -#define va_end(ap) (void) 0 +#define va_start(ap, fmt) ((void)fmt, __builtin_va_info(&ap)) +#define va_arg(ap, t) (*((t*)__va_arg(ap, _var_arg_typeof(t)))) +#define va_end(ap) (void)0 -#endif \ No newline at end of file +#else +typedef __builtin_va_list va_list; +#define va_start(v, l) __builtin_va_start(v, l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v, l) __builtin_va_arg(v, l) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_STDARG_H */ diff --git a/include/stddef.h b/include/stddef.h index 5a133946..71816c2b 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -10,8 +10,13 @@ extern "C" { /* These break 1.2.5 */ //typedef __typeof__(sizeof(0)) size_t; //typedef __typeof__((char*)0 - (char*)0) ptrdiff_t; +#ifdef __INTELLISENSE__ +typedef unsigned int size_t; +typedef int ptrdiff_t; +#else typedef unsigned long size_t; typedef long ptrdiff_t; +#endif #ifndef NULL #define NULL 0L #endif @@ -20,4 +25,4 @@ typedef long ptrdiff_t; } #endif -#endif \ No newline at end of file +#endif diff --git a/include/stdlib.h b/include/stdlib.h index c6e1d71d..aaf69e6d 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -1,6 +1,10 @@ #ifndef _STDLIB_H #define _STDLIB_H +#ifdef __MWERKS__ #define abs(x) __abs(x) +#else +int abs(int x); +#endif #endif diff --git a/include/string.h b/include/string.h index 583a906d..863a4f97 100644 --- a/include/string.h +++ b/include/string.h @@ -10,9 +10,9 @@ char* strrchr(const char* str, int c); char* strchr(const char* str, int c); int strncmp(const char* str1, const char* str2, size_t n); int strcmp(const char* str1, const char* str2); -char* strcat(char* dst, const char* src); +char* strcat(char* dst, const char* src, size_t n); char* strncpy(char* dst, const char* src, size_t n); char* strcpy(char* dst, const char* src); size_t strlen(const char* str); -#endif \ No newline at end of file +#endif diff --git a/include/types.h b/include/types.h index 462b4f66..349256d9 100644 --- a/include/types.h +++ b/include/types.h @@ -1,6 +1,8 @@ #ifndef _TYPES_H_ #define _TYPES_H_ +#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) + #include "dolphin/types.h" #endif diff --git a/include/version.h b/include/version.h new file mode 100644 index 00000000..209a7d53 --- /dev/null +++ b/include/version.h @@ -0,0 +1,24 @@ +#ifndef _VERSION_H +#define _VERSION_H + +#define VERSION_NO_ENG0 0 +#define VERSION_NO_ENG1 1 +#define VERSION_NO_PAL0 2 +#define VERSION_NO_PAL2 3 +#define VERSION_NO_JP 4 + +#define VERSION_ENG (VERSION == VERSION_NO_ENG0 || VERSION == VERSION_NO_ENG1) +#define VERSION_PAL (VERSION == VERSION_NO_PAL0 || VERSION == VERSION_NO_PAL2) +#define VERSION_JP (VERSION == VERSION_NO_JP) +#define VERSION_NTSC (!VERSION_PAL) + +#define VERSION_REV0 (VERSION == VERSION_NO_ENG0 || VERSION == VERSION_NO_PAL0 || VERSION == VERSION_NO_JP) +#define VERSION_REV1 (!VERSION_REV0) + +#if VERSION_PAL +#define REFRESH_RATE 50 +#else +#define REFRESH_RATE 60 +#endif + +#endif diff --git a/orig/GMPE01_01/.gitkeep b/orig/GMPE01_01/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/src/MSL_C.PPCEABI.bare.H/FILE_POS.c b/src/MSL_C.PPCEABI.bare.H/FILE_POS.c new file mode 100755 index 00000000..f0b5e933 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/FILE_POS.c @@ -0,0 +1,97 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h" + +inline fpos_t _ftell(FILE* file) { + int charsInUndoBuffer = 0; + fpos_t position; + unsigned char tmp_kind = file->file_mode.file_kind; + + if (!(tmp_kind == __disk_file || tmp_kind == __console_file) || file->file_state.error) { + errno = EFPOS; + return -1; + } + + if (file->file_state.io_state == __neutral) + return (file->position); + + position = file->buffer_position + (file->buffer_ptr - file->buffer); + + if (file->file_state.io_state >= __rereading) { + charsInUndoBuffer = file->file_state.io_state - __rereading + 1; + position -= charsInUndoBuffer; + } + + return (position); +} + +long ftell(FILE* file) { + long retval; + + retval = (long)_ftell(file); + + return retval; +} + +int _fseek(FILE* file, fpos_t offset, int file_mode) { + fpos_t position; + __pos_proc pos_proc; + unsigned char tmp_kind = file->file_mode.file_kind; + + if (!(tmp_kind == __disk_file) || file->file_state.error) { + errno = EFPOS; + return (-1); + } + + if (file->file_state.io_state == __writing) { + if (__flush_buffer(file, NULL) != __no_io_error) { + set_error(file); + errno = EFPOS; + return (-1); + } + } + + if (file_mode == SEEK_CUR) { + file_mode = SEEK_SET; + if ((position = _ftell(file)) < 0) + position = 0; + offset += position; + } + + if ((file_mode != SEEK_END) && (file->file_mode.io_mode != __read_write) && + ((file->file_state.io_state == __reading) || (file->file_state.io_state == __rereading))) + { + if (offset >= file->position || offset < file->buffer_position) { + file->file_state.io_state = __neutral; + } else { + file->buffer_ptr = file->buffer + (offset - file->buffer_position); + file->buffer_length = file->position - offset; + file->file_state.io_state = __reading; + } + } else { + file->file_state.io_state = __neutral; + } + + if (file->file_state.io_state == __neutral) { + if ((pos_proc = file->position_fn) != NULL && pos_proc(file->handle, &offset, file_mode, file->idle_fn)) { + set_error(file); + errno = EFPOS; + return -1; + } + + file->file_state.eof = 0; + file->position = offset; + file->buffer_length = 0; + } + + return 0; +} + +int fseek(FILE * file, long offset, int file_mode) +{ + fpos_t real_offset = (fpos_t)offset; + int retval; + + retval = _fseek(file, real_offset, file_mode); + + return(retval); +} diff --git a/src/MSL_C.PPCEABI.bare.H/abort_exit.c b/src/MSL_C.PPCEABI.bare.H/abort_exit.c new file mode 100644 index 00000000..4432d145 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/abort_exit.c @@ -0,0 +1,67 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h" +#include "stddef.h" + +void _ExitProcess(); + +extern void (*_dtors[])(void); + +int __aborting = 0; + +static void (*atexit_funcs[64])(void); +static int atexit_curr_func = 0; + +static void (*__atexit_funcs[64])(void); +static int __atexit_curr_func = 0; + +void (*__stdio_exit)(void) = 0; +void (*__console_exit)(void) = 0; + +void abort(void) +{ + void (**var_r31)(void); + + raise(1); + __aborting = 1; + var_r31 = &__atexit_funcs[0]; + while (__atexit_curr_func > 0) { + var_r31[--__atexit_curr_func](); + } + if (__console_exit != 0) { + __console_exit(); + __console_exit = 0; + } + _ExitProcess(); +} + +void exit(int status) +{ + int i; + void (**dtor)(void); + + if (!__aborting) { + __destroy_global_chain(); + + dtor = _dtors; + while (*dtor != NULL) { + (*dtor)(); + dtor++; + } + + if (__stdio_exit != NULL) { + __stdio_exit(); + __stdio_exit = NULL; + } + } + + while (__atexit_curr_func > 0) + __atexit_funcs[--__atexit_curr_func](); + + if (__console_exit != NULL) { + __console_exit(); + __console_exit = NULL; + } + + _ExitProcess(); +} diff --git a/src/MSL_C.PPCEABI.bare.H/alloc.c b/src/MSL_C.PPCEABI.bare.H/alloc.c new file mode 100755 index 00000000..ba041356 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/alloc.c @@ -0,0 +1,410 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h" + +typedef struct Block { + struct Block* prev; + struct Block* next; + unsigned long max_size; + unsigned long size; +} Block; + +typedef struct SubBlock { + unsigned long size; + Block* block; + struct SubBlock* prev; + struct SubBlock* next; +} SubBlock; + +struct FixSubBlock; + +typedef struct FixBlock { + struct FixBlock* prev_; + struct FixBlock* next_; + unsigned long client_size_; + struct FixSubBlock* start_; + unsigned long n_allocated_; +} FixBlock; + +typedef struct FixSubBlock { + FixBlock* block_; + struct FixSubBlock* next_; +} FixSubBlock; + +typedef struct FixStart { + FixBlock* tail_; + FixBlock* head_; +} FixStart; + +typedef struct __mem_pool_obj { + Block* start_; + FixStart fix_start[6]; +} __mem_pool_obj; + +typedef struct __mem_pool { + void* reserved[14]; +} __mem_pool; + +typedef signed long tag_word; + +typedef struct block_header { + tag_word tag; + struct block_header * prev; + struct block_header * next; +} block_header; + +typedef struct list_header { + block_header * rover; + block_header header; +} list_header; + +typedef struct heap_header { + struct heap_header* prev; + struct heap_header* next; +} heap_header; + +struct mem_pool_obj; +typedef void * (*sys_alloc_ptr)(unsigned long, struct mem_pool_obj*); +typedef void (*sys_free_ptr)(void *, struct mem_pool_obj*); + +typedef struct pool_options{ + sys_alloc_ptr sys_alloc_func; + sys_free_ptr sys_free_func; + unsigned long min_heap_size; + int always_search_first; +} pool_options; + +typedef struct mem_pool_obj { + list_header free_list; + pool_options options; + heap_header* heap_list; + void* userData; + +} mem_pool_obj; + +mem_pool_obj __malloc_pool; +static int initialized = 0; + +static SubBlock* SubBlock_merge_prev(SubBlock*, SubBlock**); +static void SubBlock_merge_next(SubBlock* , SubBlock** ); + +static const unsigned long fix_pool_sizes[] = {4, 12, 20, 36, 52, 68}; + +#define SubBlock_size(ths) ((ths)->size & 0xFFFFFFF8) +#define SubBlock_block(ths) ((Block*)((unsigned long)((ths)->block) & ~0x1)) +#define Block_size(ths) ((ths)->size & 0xFFFFFFF8) +#define Block_start(ths) (*(SubBlock**)((char*)(ths) + Block_size((ths)) - sizeof(unsigned long))) + +#define SubBlock_set_free(ths) \ + unsigned long this_size = SubBlock_size((ths)); \ + (ths)->size &= ~0x2; \ + *(unsigned long*)((char*)(ths) + this_size) &= ~0x4; \ + *(unsigned long*)((char*)(ths) + this_size - sizeof(unsigned long)) = this_size + + +#define SubBlock_is_free(ths) !((ths)->size & 2) +#define SubBlock_set_size(ths, sz) \ + (ths)->size &= ~0xFFFFFFF8; \ + (ths)->size |= (sz) & 0xFFFFFFF8; \ + if (SubBlock_is_free((ths))) \ + *(unsigned long*)((char*)(ths) + (sz) - sizeof(unsigned long)) = (sz) + +#define SubBlock_from_pointer(ptr) ((SubBlock*)((char*)(ptr) - 8)) +#define FixSubBlock_from_pointer(ptr) ((FixSubBlock*)((char*)(ptr) - 4)) + +#define FixBlock_client_size(ths) ((ths)->client_size_) +#define FixSubBlock_size(ths) (FixBlock_client_size((ths)->block_)) + +#define classify(ptr) (*(unsigned long*)((char*)(ptr) - sizeof(unsigned long)) & 1) +#define __msize_inline(ptr) (!classify(ptr) ? FixSubBlock_size(FixSubBlock_from_pointer(ptr)) : SubBlock_size(SubBlock_from_pointer(ptr)) - 8) + +#define Block_empty(ths) \ + (_sb = (SubBlock*)((char*)(ths) + 16)), \ + SubBlock_is_free(_sb) && SubBlock_size(_sb) == Block_size((ths)) - 24 + +//unused +void Block_subBlock(){ +} + +void Block_link(Block* ths, SubBlock* sb) { + SubBlock** st; + SubBlock_set_free(sb); + st = &Block_start(ths); + + if (*st != 0) + { + sb->prev = (*st)->prev; + sb->prev->next = sb; + sb->next = *st; + (*st)->prev = sb; + *st = sb; + *st = SubBlock_merge_prev(*st, st); + SubBlock_merge_next(*st, st); + } + else + { + *st = sb; + sb->prev = sb; + sb->next = sb; + } + if (ths->max_size < SubBlock_size(*st)) + ths->max_size = SubBlock_size(*st); +} + +static SubBlock* SubBlock_merge_prev(SubBlock *ths, SubBlock **start) { + unsigned long prevsz; + SubBlock* p; + + if (!(ths->size & 0x04)) + { + prevsz = *(unsigned long*)((char*)ths - sizeof(unsigned long)); + if (prevsz & 0x2) + return ths; + p = (SubBlock*)((char*)ths - prevsz); + SubBlock_set_size(p, prevsz + SubBlock_size(ths)); + + if (*start == ths) + *start = (*start)->next; + ths->next->prev = ths->prev; + ths->next->prev->next = ths->next; + return p; + } + return ths; +} + + +static void SubBlock_merge_next(SubBlock *pBlock, SubBlock **pStart) { + SubBlock* next_sub_block; + unsigned long this_cur_size; + + next_sub_block = (SubBlock*)((char*)pBlock + (pBlock->size & 0xFFFFFFF8)); + + if (!(next_sub_block->size & 2)) { + this_cur_size = (pBlock->size & 0xFFFFFFF8) + (next_sub_block->size & 0xFFFFFFF8); + + pBlock->size &= ~0xFFFFFFF8; + pBlock->size |= this_cur_size & 0xFFFFFFF8; + + if (!(pBlock->size & 2)) { + *(unsigned long*)((char*)(pBlock) + (this_cur_size) - 4) = (this_cur_size); + } + + if (!(pBlock->size & 2)) { + *(unsigned long *)((char*)pBlock + this_cur_size) &= ~4; + } + else { + *(unsigned long *)((char*)pBlock + this_cur_size) |= 4; + } + + if (*pStart == next_sub_block) { + *pStart = (*pStart)->next; + } + + if (*pStart == next_sub_block) { + *pStart = 0; + } + + next_sub_block->next->prev = next_sub_block->prev; + next_sub_block->prev->next = next_sub_block->next; + } +} + +static Block* __unlink(__mem_pool_obj* pool_obj, Block* bp) { + Block* result = bp->next; + if (result == bp) { + result = 0; + } + + if (pool_obj->start_ == bp) { + pool_obj->start_ = result; + } + + if (result != 0) { + result->prev = bp->prev; + result->prev->next = result; + } + + bp->next = 0; + bp->prev = 0; + return result; +} + +//unused +void allocate_from_var_pools(){ +} + +//unused +void soft_allocate_from_var_pools(){ +} + +static void deallocate_from_var_pools(__mem_pool_obj* pool_obj, void *ptr) { + SubBlock* sb = SubBlock_from_pointer(ptr); + SubBlock* _sb; + + Block* bp = SubBlock_block(sb); + Block_link(bp, sb); + + if (Block_empty(bp)) { + __unlink(pool_obj, bp); + __sys_free(bp); + } +} + +//unused +void FixBlock_construct(){ +} + +void __init_pool_obj(__mem_pool* pool_obj) { + memset(pool_obj, 0, sizeof(__mem_pool_obj)); +} + + +static __mem_pool* get_malloc_pool(void) { + static __mem_pool protopool; + static unsigned char init = 0; + if (!init) { + __init_pool_obj(&protopool); + init = 1; + } + + return &protopool; +} + +//unused +void allocate_from_fixed_pools(){ +} + +void deallocate_from_fixed_pools(__mem_pool_obj* pool_obj, void* ptr, unsigned long size) { + unsigned long i = 0; + FixSubBlock* p; + FixBlock* b; + FixStart* fs; + + while (size > fix_pool_sizes[i]) { + ++i; + } + + fs = &pool_obj->fix_start[i]; + p = FixSubBlock_from_pointer(ptr); + b = p->block_; + + if (b->start_ == 0 && fs->head_ != b) { + if (fs->tail_ == b) { + fs->head_ = fs->head_->prev_; + fs->tail_ = fs->tail_->prev_; + } + else { + b->prev_->next_ = b->next_; + b->next_->prev_ = b->prev_; + b->next_ = fs->head_; + b->prev_ = b->next_->prev_; + b->prev_->next_ = b; + b->next_->prev_ = b; + fs->head_ = b; + } + } + + p->next_ = b->start_; + b->start_ = p; + + if (--b->n_allocated_ == 0) { + if (fs->head_ == b) { + fs->head_ = b->next_; + } + + if (fs->tail_ == b) { + fs->tail_ = b->prev_; + } + + b->prev_->next_ = b->next_; + b->next_->prev_ = b->prev_; + + if (fs->head_ == b) { + fs->head_ = 0; + } + + if (fs->tail_ == b) { + fs->tail_ = 0; + } + + deallocate_from_var_pools(pool_obj, b); + } +} + +//unused +void __pool_allocate_resize(){ +} + +//unused +void __msize(){ +} + +//unused +void __pool_alloc(){ +} + +//unused +void __allocate_size(){ +} + +//unused +void __allocate(){ +} + +//unused +void __allocate_resize(){ +} + +//unused +void __allocate_expand(){ +} + +void __pool_free(__mem_pool *pool, void *ptr) { + __mem_pool_obj* pool_obj; + unsigned long size; + + if (ptr == 0) { + return; + } + + pool_obj = (__mem_pool_obj*)pool; + size = __msize_inline(ptr); + + if (size <= 68) { + deallocate_from_fixed_pools(pool_obj, ptr, size); + } + else { + deallocate_from_var_pools(pool_obj, ptr); + } +} + +//unused +void __pool_realloc(){ +} + +//unused +void __pool_alloc_clear(){ +} + +//unused +void malloc(){ +} + +void free(void *ptr) { + __pool_free(get_malloc_pool(), ptr); +} + + +//unused +void realloc(){ +} + +//unused +void calloc(){ +} + +//unused +void __pool_free_all(){ +} + +//unused +void __malloc_free_all(){ +} diff --git a/src/MSL_C.PPCEABI.bare.H/ansi_files.c b/src/MSL_C.PPCEABI.bare.H/ansi_files.c new file mode 100644 index 00000000..76ffbe61 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/ansi_files.c @@ -0,0 +1,111 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h" + +static unsigned char stdin_buff[0x100]; +static unsigned char stdout_buff[0x100]; +static unsigned char stderr_buff[0x100]; + +FILE __files[4] = { + {0, + {0, 1, 1, 2, 0}, + {0, 0, 0, 0}, + 0, + 0, + 0, + {0, 0}, + {0, 0}, + 0, + stdin_buff, + sizeof(stdin_buff), + stdin_buff, + 0, + 0, + 0, + 0, + NULL, + &__read_console, + &__write_console, + &__close_console, + 0, + &__files[1]}, + {1, + {0, 2, 1, 2, 0}, + {0, 0, 0, 0}, + 0, + 0, + 0, + {0, 0}, + {0, 0}, + 0, + stdout_buff, + sizeof(stdout_buff), + stdout_buff, + 0, + 0, + 0, + 0, + NULL, + &__read_console, + &__write_console, + &__close_console, + 0, + &__files[2]}, + {2, + {0, 2, 0, 2, 0}, + {0, 0, 0, 0}, + 0, + 0, + 0, + {0, 0}, + {0, 0}, + 0, + stderr_buff, + sizeof(stderr_buff), + stderr_buff, + 0, + 0, + 0, + 0, + NULL, + &__read_console, + &__write_console, + &__close_console, + 0, + &__files[3]}, +}; + +void __close_all() { + FILE* p = &__files[0]; + FILE* plast; + + while (p != NULL) { + if (p->file_mode.file_kind != __closed_file) { + fclose(p); + } + + plast = p; + p = p->next_file_struct; + if (plast->is_dynamically_allocated) + free(plast); + else { + plast->file_mode.file_kind = __string_file; + if ((p != NULL) && p->is_dynamically_allocated) + plast->next_file_struct = NULL; + } + } +} + +unsigned int __flush_all() { + unsigned int retval = 0; + FILE* __stream; + + __stream = &__files[0]; + while (__stream) { + if ((__stream->file_mode.file_kind) && (fflush(__stream))) { + retval = -1; + } + __stream = __stream->next_file_struct; + }; + + return retval; +} diff --git a/src/MSL_C.PPCEABI.bare.H/ansi_fp.c b/src/MSL_C.PPCEABI.bare.H/ansi_fp.c new file mode 100755 index 00000000..e8d7f0c7 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/ansi_fp.c @@ -0,0 +1,393 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h" + +static int __count_trailing_zerol(unsigned int arg0) { + int var_r4; + int var_r5; + int var_r6; + int var_r7; + unsigned int var_r8; + + var_r5 = 0x20; + var_r8 = 0xFFFF; + var_r6 = 0x10; + var_r4 = 0; + var_r7 = 0x10; + while (var_r5 != 0) { + if (!(arg0 & var_r8)) { + var_r4 += var_r7; + arg0 >>= var_r7; + var_r5 -= var_r7; + } else if (var_r8 == 1) { + break; + } + if (var_r6 > 1) { + var_r6 /= 2; + } + if (var_r8 > 1) { + var_r8 >>= var_r6; + var_r7 -= var_r6; + } + } + return var_r4; +} + +static inline int __count_trailing_zero(double n){ + if (__LO(n) != 0U) { + return __count_trailing_zerol(__LO(n)); + } else { + return 32 + __count_trailing_zerol(__HI(n) | 0x100000); + } +} + +static void __ull2dec(decimal* result, unsigned long long val) { + result->sign = 0; + + if (val == 0) { + result->exp = 0; + result->sig.length = 1; + result->sig.text[0] = 0; + return; + } + + result->sig.length = 0; + + for(; val != 0; val /= 10) { + result->sig.text[result->sig.length++] = val % 10; + } + + { + unsigned char* i = result->sig.text; + unsigned char* j = result->sig.text + result->sig.length; + + for (; i < --j; ++i) { + unsigned char t = *i; + *i = *j; + *j = t; + } + } + + result->exp = result->sig.length - 1; +} + +static inline void __dorounddecup(decimal* d, int digits){ + unsigned char* b = d->sig.text; + unsigned char* i = b + digits - 1; + + while(1){ + if (*i < 9) { + *i += 1; + break; + } + if (i == b) { + *i = 1; + d->exp++; + break; + } + *i-- = 0; + } +} + +static void __timesdec(decimal* result, const decimal* x, const decimal* y) { + unsigned int accumulator = 0; + unsigned char mantissa[SIGDIGLEN * 2]; + int i = x->sig.length + y->sig.length - 1; + unsigned char* pDigit; + unsigned char* ip = mantissa + i + 1; + unsigned char* ep = ip; + + result->sign = 0; + + for(; i > 0; i--) { + int k = y->sig.length - 1; + int j = i - k - 1; + int l; + int t; + const unsigned char* jp; + const unsigned char* kp; + + if (j < 0) { + j = 0; + k = i - 1; + } + + jp = x->sig.text + j; + kp = y->sig.text + k; + l = k + 1; + t = x->sig.length - j; + + if (l > t) l = t; + + for (; l > 0; l--, jp++, kp--) { + accumulator += *jp * *kp; + } + + *--ip = accumulator % 10; + accumulator /= 10; + } + + result->exp = (short)(x->exp + y->exp); + + if (accumulator) { + *--ip = accumulator; + result->exp++; + } + + for (i = 0; i < SIGDIGLEN && ip < ep; i++, ip++) { + result->sig.text[i] = *ip; + } + result->sig.length = i; + + if (ip < ep && *ip >= 5){ + if (*ip == 5){ + unsigned char* jp = ip + 1; + for (; jp < ep; jp++) { + if (*jp != 0) goto round; + } + if ((ip[-1] & 1) == 0) return; + } + round: + __dorounddecup(result, result->sig.length); + } +} + +static void __str2dec(decimal* d, const signed char* s, short exp) { + int i; + + d->exp = exp; + d->sign = 0; + + for (i = 0; i < SIGDIGLEN && *s; ) { + d->sig.text[i++] = *s++ - '0'; + } + d->sig.length = i; + + if (*s != 0 && *s >= 5) { + const signed char* p = s + 1; + + for (; *p != 0; p++) { + if (*p != '0') goto round; + } + + if ((d->sig.text[i - 1] & 1) == 0) return; + round: + __dorounddecup(d, d->sig.length); + } +} + +// TODO: ideally, these strings should be used as literals in the function below. +// However, the first one (179769313486231580793729011405303420, corresponding to +// 2^1024) is not used in the function and messes up alignment. + +const signed char lbl_8011E630[] = + "179769313486231580793729011405303420\000" \ + "542101086242752217003726400434970855712890625\000" \ + "11102230246251565404236316680908203125\000" \ + "23283064365386962890625\000" \ + "152587890625\000" \ + "390625\000" \ + "78125\000" \ + "15625\000" \ + "3125\000" \ + "625\000" \ + "125\000" \ + "25\000" \ + "5\000" \ + "1\000" \ + "2\000" \ + "4\000" \ + "8\000" \ + "16\000" \ + "32\000" \ + "64\000" \ + "128\000" \ + "256"; + +static void __two_exp(decimal* result, short exp) { + decimal sp8C; + decimal sp60; + decimal sp34; + decimal sp8; + + switch (exp) { + case -64: + __str2dec(result, lbl_8011E630 + 0x25, -20); + break; + case -53: + __str2dec(result, lbl_8011E630 + 0x53, -16); + break; + case -32: + __str2dec(result, lbl_8011E630 + 0x7A, -10); + break; + case -16: + __str2dec(result, lbl_8011E630 + 0x92, -5); + break; + case -8: + __str2dec(result, lbl_8011E630 + 0x9F, -3); + break; + case -7: + __str2dec(result, lbl_8011E630 + 0xA6, -3); + break; + case -6: + __str2dec(result, lbl_8011E630 + 0xAC, -2); + break; + case -5: + __str2dec(result, lbl_8011E630 + 0xB2, -2); + break; + case -4: + __str2dec(result, lbl_8011E630 + 0xB7, -2); + break; + case -3: + __str2dec(result, lbl_8011E630 + 0xBB, -1); + break; + case -2: + __str2dec(result, lbl_8011E630 + 0xBF, -1); + break; + case -1: + __str2dec(result, lbl_8011E630 + 0xC2, -1); + break; + case 0: + __str2dec(result, lbl_8011E630 + 0xC4, 0); + break; + case 1: + __str2dec(result, lbl_8011E630 + 0xC6, 0); + break; + case 2: + __str2dec(result, lbl_8011E630 + 0xC8, 0); + break; + case 3: + __str2dec(result, lbl_8011E630 + 0xCA, 0); + break; + case 4: + __str2dec(result, lbl_8011E630 + 0xCC, 1); + break; + case 5: + __str2dec(result, lbl_8011E630 + 0xCF, 1); + break; + case 6: + __str2dec(result, lbl_8011E630 + 0xD2, 1); + break; + case 7: + __str2dec(result, lbl_8011E630 + 0xD5, 2); + break; + case 8: + __str2dec(result, lbl_8011E630 + 0xD9, 2); + break; + default: + __two_exp(&sp8C, exp / 2); + __timesdec(result, &sp8C, &sp8C); + if (exp & 1) { + sp60 = *result; + if (exp > 0) { + __str2dec(&sp34, lbl_8011E630 + 0xC6, 0); + __timesdec(result, &sp60, &sp34); + } else { + __str2dec(&sp8, lbl_8011E630 + 0xC2, -1); + __timesdec(result, &sp60, &sp8); + } + } + break; + } +} + +static void __num2dec_internal(decimal* d, double x) { + signed char sign = (signbit(x) != 0); + + if (x == 0) { + d->sign = sign; + d->exp = 0; + d->sig.length = 1; + d->sig.text[0] = 0; + return; + } + + if (!isfinite(x)) { + d->sign = sign; + d->exp = 0; + d->sig.length = 1; + d->sig.text[0] = (fpclassify(x) == 1) ? 'N' : 'I'; + return; + } + + if (sign != 0) { + x = -x; + } + + { + int exp; + double frac = frexp(x, &exp); + short num_bits_extract = DBL_MANT_DIG - __count_trailing_zero(frac); + decimal int_d, pow2_d; + double sp30; + + __two_exp(&pow2_d, exp - num_bits_extract); + modf(ldexp(frac, num_bits_extract), &sp30); + __ull2dec(&int_d, sp30); + __timesdec(d, &int_d, &pow2_d); + d->sign = sign; + } +} + +static inline int __must_round(const decimal* d, int digits){ + unsigned char const* i = d->sig.text + digits; + + if (*i > 5) { + return 1; + } + + if (*i < 5) { + return -1; + } + + { + unsigned char const* e = d->sig.text + d->sig.length; + + for(i++; i < e; i++){ + if (*i != 0) { + return 1; + } + } + } + + if (d->sig.text[digits - 1] & 1) { + return 1; + } + + return -1; +} + +static inline void __rounddec(decimal* d, int digits){ + if (digits > 0 && digits < d->sig.length) { + int unkBool = __must_round(d,digits); + d->sig.length = digits; + + if (unkBool >= 0) { + __dorounddecup(d, digits); + } + } +} + +void __num2dec(const decform* form, double x, decimal* d) { + short digits = form->digits; + int i; + __num2dec_internal(d, x); + + if (d->sig.text[0] > 9) { + return; + } + + if (digits > SIGDIGLEN) { + digits = SIGDIGLEN; + } + + __rounddec(d, digits); + + while(d->sig.length < digits){ + d->sig.text[d->sig.length++] = 0; + } + + d->exp -= d->sig.length - 1; + + for(i = 0; i < d->sig.length; i++) { + d->sig.text[i] += '0'; + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/arith.c b/src/MSL_C.PPCEABI.bare.H/arith.c new file mode 100755 index 00000000..974c95c2 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/arith.c @@ -0,0 +1,13 @@ +int abs(int n) { + if (n < 0) + return (-n); + else + return (n); +} + +long labs(long n) { + if (n < 0) + return (-n); + else + return (n); +} diff --git a/src/MSL_C.PPCEABI.bare.H/buffer_io.c b/src/MSL_C.PPCEABI.bare.H/buffer_io.c new file mode 100644 index 00000000..5657680d --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/buffer_io.c @@ -0,0 +1,41 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +void __prep_buffer(FILE* file) +{ + file->buffer_ptr = file->buffer; + file->buffer_length = file->buffer_size; + file->buffer_length -= file->position & file->buffer_alignment; + file->buffer_position = file->position; +} + +void __convert_from_newlines(unsigned char* p, size_t* n) { } + +int __flush_buffer(FILE* file, size_t* bytes_flushed) +{ + size_t buffer_len; + int ioresult; + + buffer_len = file->buffer_ptr - file->buffer; + + if (buffer_len) { + file->buffer_length = buffer_len; + + if (!file->file_mode.binary_io) + __convert_from_newlines(file->buffer, &file->buffer_length); + + ioresult = (*file->write_fn)(file->handle, file->buffer, + &file->buffer_length, file->idle_fn); + + if (bytes_flushed) + *bytes_flushed = file->buffer_length; + + if (ioresult) + return ioresult; + + file->position += file->buffer_length; + } + + __prep_buffer(file); + + return __no_io_error; +} diff --git a/src/MSL_C.PPCEABI.bare.H/ctype.c b/src/MSL_C.PPCEABI.bare.H/ctype.c new file mode 100644 index 00000000..0a0ce04b --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/ctype.c @@ -0,0 +1,78 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h" + +#define ctrl __control_char +#define motn __motion_char +#define spac __space_char +#define punc __punctuation +#define digi __digit +#define hexd __hex_digit +#define lowc __lower_case +#define uppc __upper_case +#define dhex (hexd | digi) +#define uhex (hexd | uppc) +#define lhex (hexd | lowc) + +unsigned char __ctype_map[256] = { + // clang-format off + ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, motn, motn, motn, motn, motn, ctrl, ctrl, + ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, + spac, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, + dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, punc, punc, punc, punc, punc, punc, + punc, uhex, uhex, uhex, uhex, uhex, uhex, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, + uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, punc, punc, punc, punc, punc, + punc, lhex, lhex, lhex, lhex, lhex, lhex, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, + lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, punc, punc, punc, punc, ctrl, + // clang-format on +}; + +unsigned char __lower_map[256] = { + // clang-format off + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\', ']', '^', '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + // clang-format on +}; + +unsigned char __upper_map[256] = { + // clang-format off + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + // clang-format on +}; + +int isalpha(int __c) +{ + return __ctype_map[(unsigned char)__c] & __letter; +} + +int tolower(int __c) +{ + return __c == -1 ? -1 : __lower_map[(unsigned char)__c]; +} diff --git a/src/MSL_C.PPCEABI.bare.H/direct_io.c b/src/MSL_C.PPCEABI.bare.H/direct_io.c new file mode 100644 index 00000000..4cfa5184 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/direct_io.c @@ -0,0 +1,114 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +size_t fwrite(const void* ptr, size_t memb_size, size_t num_memb, FILE* file) { + size_t retval; + retval = __fwrite(ptr, memb_size, num_memb, file); + return (retval); +} + +size_t __fwrite(const void* ptr, size_t memb_size, size_t num_memb, FILE* file) { + unsigned char* write_ptr; + size_t num_bytes, bytes_to_go, bytes_written; + int ioresult, always_buffer; + +#ifndef __NO_WIDE_CHAR + if (fwide(file, 0) == 0) + fwide(file, -1); +#endif + + bytes_to_go = memb_size * num_memb; + + if (!bytes_to_go || file->file_state.error || file->file_mode.file_kind == __closed_file) + return 0; + + if (file->file_mode.file_kind == __console_file) + __stdio_atexit(); + + always_buffer = + !file->file_mode.binary_io || file->file_mode.buffer_mode == _IOFBF || file->file_mode.buffer_mode == _IOLBF; + + if (file->file_state.io_state == __neutral) { + if (file->file_mode.io_mode & __write) { + if (file->file_mode.io_mode & __append) { + if (fseek(file, 0, SEEK_END)) + return 0; + } + file->file_state.io_state = __writing; + + __prep_buffer(file); + } + } + + if (file->file_state.io_state != __writing) { + set_error(file); + return 0; + } + + write_ptr = (unsigned char*)ptr; + bytes_written = 0; + + if (bytes_to_go && (file->buffer_ptr != file->buffer || always_buffer)) { + file->buffer_length = file->buffer_size - (file->buffer_ptr - file->buffer); + + do { + unsigned char* newline = NULL; + + num_bytes = file->buffer_length; + + if (num_bytes > bytes_to_go) + num_bytes = bytes_to_go; + if (file->file_mode.buffer_mode == _IOLBF && num_bytes) + if ((newline = (unsigned char*)__memrchr(write_ptr, '\n', num_bytes)) != NULL) + num_bytes = newline + 1 - write_ptr; + + if (num_bytes) { + memcpy(file->buffer_ptr, write_ptr, num_bytes); + + write_ptr += num_bytes; + bytes_written += num_bytes; + bytes_to_go -= num_bytes; + + file->buffer_ptr += num_bytes; + file->buffer_length -= num_bytes; + } + if (!file->buffer_length || newline != NULL || + (file->file_mode.buffer_mode == _IONBF)) + { + ioresult = __flush_buffer(file, NULL); + + if (ioresult) { + set_error(file); + bytes_to_go = 0; + break; + } + } + } while (bytes_to_go && always_buffer); + } + + if (bytes_to_go && !always_buffer) { + unsigned char* save_buffer = file->buffer; + size_t save_size = file->buffer_size; + + file->buffer = write_ptr; + file->buffer_size = bytes_to_go; + file->buffer_ptr = write_ptr + bytes_to_go; + + if (__flush_buffer(file, &num_bytes) != __no_io_error) + set_error(file); + + bytes_written += num_bytes; + + file->buffer = save_buffer; + file->buffer_size = save_size; + + __prep_buffer(file); + + file->buffer_length = 0; + } + + if (file->file_mode.buffer_mode != _IOFBF) + file->buffer_length = 0; + + return ((bytes_written + memb_size - 1) / memb_size); +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_acos.c b/src/MSL_C.PPCEABI.bare.H/e_acos.c new file mode 100644 index 00000000..01bba5e0 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_acos.c @@ -0,0 +1,69 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +one= 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ +pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ +pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ +pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ +pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ +pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ +pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ +pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ +pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ +qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ +qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ +qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ +qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ + +#ifdef __STDC__ + double __ieee754_acos(double x) +#else + double __ieee754_acos(x) + double x; +#endif +{ + double z,p,q,r,w,s,c,df; + int hx,ix; + hx = __HI(x); + ix = hx&0x7fffffff; + if(ix>=0x3ff00000) { /* |x| >= 1 */ + if(((ix-0x3ff00000)|__LO(x))==0) { /* |x|==1 */ + if(hx>0) return 0.0; /* acos(1) = 0 */ + else return pi+2.0*pio2_lo; /* acos(-1)= pi */ + } + return NAN; /* acos(|x|>1) is NaN */ + } + if(ix<0x3fe00000) { /* |x| < 0.5 */ + if(ix<=0x3c600000) return pio2_hi+pio2_lo;/*if|x|<2**-57*/ + z = x*x; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + r = p/q; + return pio2_hi - (x - (pio2_lo-x*r)); + } else if (hx<0) { /* x < -0.5 */ + z = (one+x)*0.5; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + s = sqrt(z); + r = p/q; + w = r*s-pio2_lo; + return pi - 2.0*(s+w); + } else { /* x > 0.5 */ + z = (one-x)*0.5; + s = sqrt(z); + df = s; + __LO(df) = 0; + c = (z-df*df)/(s+df); + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + r = p/q; + w = r*s+c; + return 2.0*(df+w); + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_asin.c b/src/MSL_C.PPCEABI.bare.H/e_asin.c new file mode 100644 index 00000000..743d78d5 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_asin.c @@ -0,0 +1,71 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +huge = 1.000e+300, +pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ +pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ +pio4_hi = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ + /* coefficient for R(x^2) */ +pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ +pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ +pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ +pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ +pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ +pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ +qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ +qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ +qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ +qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ + +#ifdef __STDC__ + double __ieee754_asin(double x) +#else + double __ieee754_asin(x) + double x; +#endif +{ + double t,w,p,q,c,r,s; + int hx,ix; + hx = __HI(x); + ix = hx&0x7fffffff; + if(ix>= 0x3ff00000) { /* |x|>= 1 */ + if(((ix-0x3ff00000)|__LO(x))==0) + /* asin(1)=+-pi/2 with inexact */ + return x*pio2_hi+x*pio2_lo; + return NAN; /* asin(|x|>1) is NaN */ + } else if (ix<0x3fe00000) { /* |x|<0.5 */ + if(ix<0x3e400000) { /* if |x| < 2**-27 */ + if(huge+x>one) return x;/* return x with inexact if x!=0*/ + } else + t = x*x; + p = t*(pS0+t*(pS1+t*(pS2+t*(pS3+t*(pS4+t*pS5))))); + q = one+t*(qS1+t*(qS2+t*(qS3+t*qS4))); + w = p/q; + return x+x*w; + } + /* 1> |x|>= 0.5 */ + w = one-fabs(x); + t = w*0.5; + p = t*(pS0+t*(pS1+t*(pS2+t*(pS3+t*(pS4+t*pS5))))); + q = one+t*(qS1+t*(qS2+t*(qS3+t*qS4))); + s = sqrt(t); + if(ix>=0x3FEF3333) { /* if |x| > 0.975 */ + w = p/q; + t = pio2_hi-(2.0*(s+s*w)-pio2_lo); + } else { + w = s; + __LO(w) = 0; + c = (t-w*w)/(s+w); + r = p/q; + p = 2.0*s*r-(pio2_lo-2.0*c); + q = pio4_hi-2.0*w; + t = pio4_hi-(p-q); + } + if(hx>0) return t; else return -t; +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_atan2.c b/src/MSL_C.PPCEABI.bare.H/e_atan2.c new file mode 100644 index 00000000..43b99afd --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_atan2.c @@ -0,0 +1,145 @@ + +/* @(#)e_atan2.c 1.3 95/01/18 */ +/** + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* __ieee754_atan2(y,x) + * Method : + * 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x). + * 2. Reduce x to positive by (if x and y are unexceptional): + * ARG (x+iy) = arctan(y/x) ... if x > 0, + * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0, + * + * Special cases: + * + * ATAN2((anything), NaN ) is NaN; + * ATAN2(NAN , (anything) ) is NaN; + * ATAN2(+-0, +(anything but NaN)) is +-0 ; + * ATAN2(+-0, -(anything but NaN)) is +-pi ; + * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2; + * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ; + * ATAN2(+-(anything but INF and NaN), -INF) is +-pi; + * ATAN2(+-INF,+INF ) is +-pi/4 ; + * ATAN2(+-INF,-INF ) is +-3pi/4; + * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2; + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif + tiny + = 1.0e-300, + zero = 0.0, pi_o_4 = 7.8539816339744827900E-01, /* 0x3FE921FB, 0x54442D18 */ + pi_o_2 = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */ + pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */ + pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */ + +#ifdef __STDC__ +double __ieee754_atan2(double y, double x) +#else +double __ieee754_atan2(y, x) +double y, x; +#endif +{ + double z; + int k, m, hx, hy, ix, iy; + unsigned lx, ly; + + hx = __HI(x); + ix = hx & 0x7fffffff; + lx = __LO(x); + hy = __HI(y); + iy = hy & 0x7fffffff; + ly = __LO(y); + if (((ix | ((lx | -lx) >> 31)) > 0x7ff00000) + || ((iy | ((ly | -ly) >> 31)) > 0x7ff00000)) /* x or y is NaN */ + return x + y; + if ((hx - 0x3ff00000 | lx) == 0) + return atan(y); /* x=1.0 */ + m = ((hy >> 31) & 1) | ((hx >> 30) & 2); /* 2*sign(x)+sign(y) */ + + /* when y = 0 */ + if ((iy | ly) == 0) { + switch (m) { + case 0: + case 1: + return y; /* atan(+-0,+anything)=+-0 */ + case 2: + return pi + tiny; /* atan(+0,-anything) = pi */ + case 3: + return -pi - tiny; /* atan(-0,-anything) =-pi */ + } + } + /* when x = 0 */ + if ((ix | lx) == 0) + return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny; + + /* when x is INF */ + if (ix == 0x7ff00000) { + if (iy == 0x7ff00000) { + switch (m) { + case 0: + return pi_o_4 + tiny; /* atan(+INF,+INF) */ + case 1: + return -pi_o_4 - tiny; /* atan(-INF,+INF) */ + case 2: + return 3.0 * pi_o_4 + tiny; /*atan(+INF,-INF)*/ + case 3: + return -3.0 * pi_o_4 - tiny; /*atan(-INF,-INF)*/ + } + } else { + switch (m) { + case 0: + return zero; /* atan(+...,+INF) */ + case 1: + return -zero; /* atan(-...,+INF) */ + case 2: + return pi + tiny; /* atan(+...,-INF) */ + case 3: + return -pi - tiny; /* atan(-...,-INF) */ + } + } + } + /* when y is INF */ + if (iy == 0x7ff00000) + return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny; + + /* compute y/x */ + k = (iy - ix) >> 20; + if (k > 60) + z = pi_o_2 + 0.5 * pi_lo; /* |y/x| > 2**60 */ + else if (hx < 0 && k < -60) + z = 0.0; /* |y|/x < -2**60 */ + else + z = atan(fabs__Fd(y / x)); /* safe to do y/x */ + switch (m) { + case 0: + return z; /* atan(+,+) */ + case 1: + __HI(z) ^= 0x80000000; + return z; /* atan(-,+) */ + case 2: + return pi - (z - pi_lo); /* atan(+,-) */ + default: /* case 3 */ + return (z - pi_lo) - pi; /* atan(-,-) */ + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_fmod.c b/src/MSL_C.PPCEABI.bare.H/e_fmod.c new file mode 100644 index 00000000..311d2f08 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_fmod.c @@ -0,0 +1,140 @@ + +/* @(#)e_fmod.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * __ieee754_fmod(x,y) + * Return x mod y in exact arithmetic + * Method: shift and subtract + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double one = 1.0, Zero[] = {0.0, -0.0,}; +#else +static double one = 1.0, Zero[] = {0.0, -0.0,}; +#endif + +#ifdef __STDC__ + double __ieee754_fmod(double x, double y) +#else + double __ieee754_fmod(x,y) + double x,y ; +#endif +{ + int n,hx,hy,hz,ix,iy,sx,i; + unsigned lx,ly,lz; + + hx = __HI(x); /* high word of x */ + lx = __LO(x); /* low word of x */ + hy = __HI(y); /* high word of y */ + ly = __LO(y); /* low word of y */ + sx = hx&0x80000000; /* sign of x */ + hx ^=sx; /* |x| */ + hy &= 0x7fffffff; /* |y| */ + + /* purge off exception values */ + if((hy|ly)==0||(hx>=0x7ff00000)|| /* y=0,or x not finite */ + ((hy|((ly|-ly)>>31))>0x7ff00000)) /* or y is NaN */ + return (x*y)/(x*y); + if(hx<=hy) { + if((hx>31]; /* |x|=|y| return x*0*/ + } + + /* determine ix = ilogb(x) */ + if(hx<0x00100000) { /* subnormal x */ + if(hx==0) { + for (ix = -1043, i=lx; i>0; i<<=1) ix -=1; + } else { + for (ix = -1022,i=(hx<<11); i>0; i<<=1) ix -=1; + } + } else ix = (hx>>20)-1023; + + /* determine iy = ilogb(y) */ + if(hy<0x00100000) { /* subnormal y */ + if(hy==0) { + for (iy = -1043, i=ly; i>0; i<<=1) iy -=1; + } else { + for (iy = -1022,i=(hy<<11); i>0; i<<=1) iy -=1; + } + } else iy = (hy>>20)-1023; + + /* set up {hx,lx}, {hy,ly} and align y to x */ + if(ix >= -1022) + hx = 0x00100000|(0x000fffff&hx); + else { /* subnormal x, shift x to normal */ + n = -1022-ix; + if(n<=31) { + hx = (hx<>(32-n)); + lx <<= n; + } else { + hx = lx<<(n-32); + lx = 0; + } + } + if(iy >= -1022) + hy = 0x00100000|(0x000fffff&hy); + else { /* subnormal y, shift y to normal */ + n = -1022-iy; + if(n<=31) { + hy = (hy<>(32-n)); + ly <<= n; + } else { + hy = ly<<(n-32); + ly = 0; + } + } + + /* fix point fmod */ + n = ix - iy; + while(n--) { + hz=hx-hy;lz=lx-ly; if(lx>31); lx = lx+lx;} + else { + if((hz|lz)==0) /* return sign(x)*0 */ + return Zero[(unsigned)sx>>31]; + hx = hz+hz+(lz>>31); lx = lz+lz; + } + } + hz=hx-hy;lz=lx-ly; if(lx=0) {hx=hz;lx=lz;} + + /* convert back to floating value and restore the sign */ + if((hx|lx)==0) /* return sign(x)*0 */ + return Zero[(unsigned)sx>>31]; + while(hx<0x00100000) { /* normalize x */ + hx = hx+hx+(lx>>31); lx = lx+lx; + iy -= 1; + } + if(iy>= -1022) { /* normalize output */ + hx = ((hx-0x00100000)|((iy+1023)<<20)); + __HI(x) = hx|sx; + __LO(x) = lx; + } else { /* subnormal output */ + n = -1022 - iy; + if(n<=20) { + lx = (lx>>n)|((unsigned)hx<<(32-n)); + hx >>= n; + } else if (n<=31) { + lx = (hx<<(32-n))|(lx>>n); hx = sx; + } else { + lx = hx>>(n-32); hx = sx; + } + __HI(x) = hx|sx; + __LO(x) = lx; + x *= one; /* create necessary signal */ + } + return x; /* exact output */ +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_pow.c b/src/MSL_C.PPCEABI.bare.H/e_pow.c new file mode 100644 index 00000000..55b9b1c1 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_pow.c @@ -0,0 +1,308 @@ +/* @(#)e_pow.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* __ieee754_pow(x,y) return x**y + * + * n + * Method: Let x = 2 * (1+f) + * 1. Compute and return log2(x) in two pieces: + * log2(x) = w1 + w2, + * where w1 has 53-24 = 29 bit trailing zeros. + * 2. Perform y*log2(x) = n+y' by simulating muti-precision + * arithmetic, where |y'|<=0.5. + * 3. Return x**y = 2**n*exp(y'*log2) + * + * Special cases: + * 1. (anything) ** 0 is 1 + * 2. (anything) ** 1 is itself + * 3. (anything) ** NAN is NAN + * 4. NAN ** (anything except 0) is NAN + * 5. +-(|x| > 1) ** +INF is +INF + * 6. +-(|x| > 1) ** -INF is +0 + * 7. +-(|x| < 1) ** +INF is +0 + * 8. +-(|x| < 1) ** -INF is +INF + * 9. +-1 ** +-INF is NAN + * 10. +0 ** (+anything except 0, NAN) is +0 + * 11. -0 ** (+anything except 0, NAN, odd integer) is +0 + * 12. +0 ** (-anything except 0, NAN) is +INF + * 13. -0 ** (-anything except 0, NAN, odd integer) is +INF + * 14. -0 ** (odd integer) = -( +0 ** (odd integer) ) + * 15. +INF ** (+anything except 0,NAN) is +INF + * 16. +INF ** (-anything except 0,NAN) is +0 + * 17. -INF ** (anything) = -0 ** (-anything) + * 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer) + * 19. (-anything except 0 and inf) ** (non-integer) is NAN + * + * Accuracy: + * pow(x,y) returns x**y nearly rounded. In particular + * pow(integer,integer) + * always returns the correct integer provided it is + * representable. + * + * Constants : + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +bp[] = {1.0, 1.5,}, +dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */ +dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */ +zero = 0.0, +one = 1.0, +two = 2.0, +two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */ +huge = 1.0e300, +tiny = 1.0e-300, + /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ +L1 = 5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */ +L2 = 4.28571428578550184252e-01, /* 0x3FDB6DB6, 0xDB6FABFF */ +L3 = 3.33333329818377432918e-01, /* 0x3FD55555, 0x518F264D */ +L4 = 2.72728123808534006489e-01, /* 0x3FD17460, 0xA91D4101 */ +L5 = 2.30660745775561754067e-01, /* 0x3FCD864A, 0x93C9DB65 */ +L6 = 2.06975017800338417784e-01, /* 0x3FCA7E28, 0x4A454EEF */ +P1 = 1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */ +P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */ +P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ +P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ +P5 = 4.13813679705723846039e-08, /* 0x3E663769, 0x72BEA4D0 */ +lg2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */ +lg2_h = 6.93147182464599609375e-01, /* 0x3FE62E43, 0x00000000 */ +lg2_l = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */ +ovt = 8.0085662595372944372e-0017, /* -(1024-log2(ovfl+.5ulp)) */ +cp = 9.61796693925975554329e-01, /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */ +cp_h = 9.61796700954437255859e-01, /* 0x3FEEC709, 0xE0000000 =(float)cp */ +cp_l = -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/ +ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */ +ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/ +ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ + +#ifdef __STDC__ + double __ieee754_pow(double x, double y) +#else + double __ieee754_pow(x,y) + double x, y; +#endif +{ + double z,ax,z_h,z_l,p_h,p_l; + double y1,t1,t2,r,s,t,u,v,w; + int i,j,k,yisint,n; + int hx,hy,ix,iy; + unsigned lx,ly; + + hx = __HI(x); lx = __LO(x); + hy = __HI(y); ly = __LO(y); + ix = hx&0x7fffffff; iy = hy&0x7fffffff; + + /* y==zero: x**0 = 1 */ + if((iy|ly)==0) return one; + + /* +-NaN return x+y */ + if(ix > 0x7ff00000 || ((ix==0x7ff00000)&&(lx!=0)) || + iy > 0x7ff00000 || ((iy==0x7ff00000)&&(ly!=0))) + return x+y; + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + yisint = 0; + if(hx<0) { + if(iy>=0x43400000) yisint = 2; /* even integer y */ + else if(iy>=0x3ff00000) { + k = (iy>>20)-0x3ff; /* exponent */ + if(k>20) { + j = ly>>(52-k); + if((j<<(52-k))==ly) yisint = 2-(j&1); + } else if(ly==0) { + j = iy>>(20-k); + if((j<<(20-k))==iy) yisint = 2-(j&1); + } + } + } + + /* special value of y */ + if(ly==0) { + if (iy==0x7ff00000) { /* y is +-inf */ + if(((ix-0x3ff00000)|lx)==0) + return y - y; /* inf**+-1 is NaN */ + else if (ix >= 0x3ff00000)/* (|x|>1)**+-inf = inf,0 */ + return (hy>=0)? y: zero; + else /* (|x|<1)**-,+inf = inf,0 */ + return (hy<0)?-y: zero; + } + if(iy==0x3ff00000) { /* y is +-1 */ + if(hy<0) return one/x; else return x; + } + if(hy==0x40000000) return x*x; /* y is 2 */ + if(hy==0x3fe00000) { /* y is 0.5 */ + if(hx>=0) /* x >= +0 */ + return sqrt(x); + } + } + + ax = fabs(x); + /* special value of x */ + if(lx==0) { + if(ix==0x7ff00000||ix==0||ix==0x3ff00000){ + z = ax; /*x is +-0,+-inf,+-1*/ + if(hy<0) z = one/z; /* z = (1/|x|) */ + if(hx<0) { + if(((ix-0x3ff00000)|yisint)==0) { + z = (z-z)/(z-z); /* (-1)**non-int is NaN */ + } else if(yisint==1) + z = -z; /* (x<0)**odd = -(|x|**odd) */ + } + return z; + } + } + + /* (x<0)**(non-int) is NaN */ + if((((hx>>31)+1)|yisint)==0) { + errno = 0x21; + return NAN; + } + + /* |y| is huge */ + if(iy>0x41e00000) { /* if |y| > 2**31 */ + if(iy>0x43f00000){ /* if |y| > 2**64, must o/uflow */ + if(ix<=0x3fefffff) return (hy<0)? huge*huge:tiny*tiny; + if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny; + } + /* over/underflow if x is not close to one */ + if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny; + if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny; + /* now |1-x| is tiny <= 2**-20, suffice to compute + log(x) by x-x^2/2+x^3/3-x^4/4 */ + t = x-1; /* t has 20 trailing zeros */ + w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25)); + u = ivln2_h*t; /* ivln2_h has 21 sig. bits */ + v = t*ivln2_l-w*ivln2; + t1 = u+v; + __LO(t1) = 0; + t2 = v-(t1-u); + } else { + double s2,s_h,s_l,t_h,t_l; + n = 0; + /* take care subnormal number */ + if(ix<0x00100000) + {ax *= two53; n -= 53; ix = __HI(ax); } + n += ((ix)>>20)-0x3ff; + j = ix&0x000fffff; + /* determine interval */ + ix = j|0x3ff00000; /* normalize ix */ + if(j<=0x3988E) k=0; /* |x|>1)|0x20000000)+0x00080000+(k<<18); + t_l = ax - (t_h-bp[k]); + s_l = v*((u-s_h*t_h)-s_h*t_l); + /* compute log(ax) */ + s2 = s*s; + r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); + r += s_l*(s_h+s); + s2 = s_h*s_h; + t_h = 3.0+s2+r; + __LO(t_h) = 0; + t_l = r-((t_h-3.0)-s2); + /* u+v = s*(1+...) */ + u = s_h*t_h; + v = s_l*t_h+t_l*s; + /* 2/(3log2)*(s+...) */ + p_h = u+v; + __LO(p_h) = 0; + p_l = v-(p_h-u); + z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ + z_l = cp_l*p_h+p_l*cp+dp_l[k]; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + t = (double)n; + t1 = (((z_h+z_l)+dp_h[k])+t); + __LO(t1) = 0; + t2 = z_l-(((t1-t)-dp_h[k])-z_h); + } + + s = one; /* s (sign of result -ve**odd) = -1 else = 1 */ + if((((hx>>31)+1)|(yisint-1))==0) s = -one;/* (-ve)**(odd int) */ + + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + y1 = y; + __LO(y1) = 0; + p_l = (y-y1)*t1+y*t2; + p_h = y1*t1; + z = p_l+p_h; + j = __HI(z); + i = __LO(z); + if (j>=0x40900000) { /* z >= 1024 */ + if(((j-0x40900000)|i)!=0) /* if z > 1024 */ + return s*huge*huge; /* overflow */ + else { + if(p_l+ovt>z-p_h) return s*huge*huge; /* overflow */ + } + } else if((j&0x7fffffff)>=0x4090cc00 ) { /* z <= -1075 */ + if(((j-0xc090cc00)|i)!=0) /* z < -1075 */ + return s*tiny*tiny; /* underflow */ + else { + if(p_l<=z-p_h) return s*tiny*tiny; /* underflow */ + } + } + /* + * compute 2**(p_h+p_l) + */ + i = j&0x7fffffff; + k = (i>>20)-0x3ff; + n = 0; + if(i>0x3fe00000) { /* if |z| > 0.5, set n = [z+0.5] */ + n = j+(0x00100000>>(k+1)); + k = ((n&0x7fffffff)>>20)-0x3ff; /* new k for n */ + t = zero; + __HI(t) = (n&~(0x000fffff>>k)); + n = ((n&0x000fffff)|0x00100000)>>(20-k); + if(j<0) n = -n; + p_h -= t; + } + t = p_l+p_h; + __LO(t) = 0; + u = t*lg2_h; + v = (p_l-(t-p_h))*lg2+t*lg2_l; + z = u+v; + w = v-(z-u); + t = z*z; + t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + r = (z*t1)/(t1-two)-(w+z*w); + z = one-(r-z); + j = __HI(z); + j += (n<<20); + if((j>>20)<=0) z = ldexp(z,n); /* subnormal output */ + else __HI(z) += (n<<20); + return s*z; +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_rem_pio2.c b/src/MSL_C.PPCEABI.bare.H/e_rem_pio2.c new file mode 100755 index 00000000..ee1a50fa --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_rem_pio2.c @@ -0,0 +1,175 @@ +/* @(#)e_rem_pio2.c 1.4 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* __ieee754_rem_pio2(x,y) + * + * return the remainder of x rem pi/2 in y[0]+y[1] + * use __kernel_rem_pio2() + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h" + +/* + * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi + */ +#ifdef __STDC__ +static const int two_over_pi[] = { +#else +static int two_over_pi[] = { +#endif +0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, +0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A, +0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, +0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41, +0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8, +0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF, +0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5, +0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08, +0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3, +0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880, +0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B, +}; + +#ifdef __STDC__ +static const int npio2_hw[] = { +#else +static int npio2_hw[] = { +#endif +0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C, +0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, 0x4032D97C, +0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A, +0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, 0x4042106C, 0x4042D97C, +0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB, +0x404858EB, 0x404921FB, +}; + +/* + * invpio2: 53 bits of 2/pi + * pio2_1: first 33 bit of pi/2 + * pio2_1t: pi/2 - pio2_1 + * pio2_2: second 33 bit of pi/2 + * pio2_2t: pi/2 - (pio2_1+pio2_2) + * pio2_3: third 33 bit of pi/2 + * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) + */ + +#ifdef __STDC__ +static const double +#else +static double +#endif +zero = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ +half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ +two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ +invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */ +pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */ +pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */ +pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */ +pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */ +pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */ +pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */ + +#ifdef __STDC__ + int __ieee754_rem_pio2(double x, double *y) +#else + int __ieee754_rem_pio2(x,y) + double x,y[]; +#endif +{ + double z,w,t,r,fn; + double tx[3]; + int e0,i,j,nx,n,ix,hx; + + hx = __HI(x); /* high word of x */ + ix = hx&0x7fffffff; + if(ix<=0x3fe921fb) /* |x| ~<= pi/4 , no need for reduction */ + {y[0] = x; y[1] = 0; return 0;} + if(ix<0x4002d97c) { /* |x| < 3pi/4, special case with n=+-1 */ + if(hx>0) { + z = x - pio2_1; + if(ix!=0x3ff921fb) { /* 33+53 bit pi is good enough */ + y[0] = z - pio2_1t; + y[1] = (z-y[0])-pio2_1t; + } else { /* near pi/2, use 33+33+53 bit pi */ + z -= pio2_2; + y[0] = z - pio2_2t; + y[1] = (z-y[0])-pio2_2t; + } + return 1; + } else { /* negative x */ + z = x + pio2_1; + if(ix!=0x3ff921fb) { /* 33+53 bit pi is good enough */ + y[0] = z + pio2_1t; + y[1] = (z-y[0])+pio2_1t; + } else { /* near pi/2, use 33+33+53 bit pi */ + z += pio2_2; + y[0] = z + pio2_2t; + y[1] = (z-y[0])+pio2_2t; + } + return -1; + } + } + if(ix<=0x413921fb) { /* |x| ~<= 2^19*(pi/2), medium size */ + t = fabs(x); + n = (int) (t*invpio2+half); + fn = (double)n; + r = t-fn*pio2_1; + w = fn*pio2_1t; /* 1st round good to 85 bit */ + if(n<32&&ix!=npio2_hw[n-1]) { + y[0] = r-w; /* quick check no cancellation */ + } else { + j = ix>>20; + y[0] = r-w; + i = j-(((__HI(y[0]))>>20)&0x7ff); + if(i>16) { /* 2nd iteration needed, good to 118 */ + t = r; + w = fn*pio2_2; + r = t-w; + w = fn*pio2_2t-((t-r)-w); + y[0] = r-w; + i = j-(((__HI(y[0]))>>20)&0x7ff); + if(i>49) { /* 3rd iteration need, 151 bits acc */ + t = r; /* will cover all possible cases */ + w = fn*pio2_3; + r = t-w; + w = fn*pio2_3t-((t-r)-w); + y[0] = r-w; + } + } + } + y[1] = (r-y[0])-w; + if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;} + else return n; + } + /* + * all other (large) arguments + */ + if(ix>=0x7ff00000) { /* x is inf or NaN */ + y[0]=y[1]=x-x; return 0; + } + /* set z = scalbn(|x|,ilogb(x)-23) */ + __LO(z) = __LO(x); + e0 = (ix>>20)-1046; /* e0 = ilogb(z)-23; */ + __HI(z) = ix - (e0<<20); + for(i=0;i<2;i++) { + tx[i] = (double)((int)(z)); + z = (z-tx[i])*two24; + } + tx[2] = z; + nx = 3; + while(tx[nx-1]==zero) nx--; /* skip zero term */ + n = __kernel_rem_pio2(tx,y,e0,nx,2,two_over_pi); + if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;} + return n; +} diff --git a/src/MSL_C.PPCEABI.bare.H/errno.c b/src/MSL_C.PPCEABI.bare.H/errno.c new file mode 100644 index 00000000..fb0a2b41 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/errno.c @@ -0,0 +1,3 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h" + +int errno; diff --git a/src/MSL_C.PPCEABI.bare.H/file_io.c b/src/MSL_C.PPCEABI.bare.H/file_io.c new file mode 100755 index 00000000..6ca5b36a --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/file_io.c @@ -0,0 +1,58 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h" + +int fclose(FILE* file) { + int flush_result, close_result; + + if (file == NULL) { + return -1; + } + if (file->file_mode.file_kind == __closed_file) { + return 0; + } + flush_result = fflush(file); + close_result = file->close_fn(file->handle); + file->file_mode.file_kind = __closed_file; + file->handle = NULL; + if (file->file_state.free_buffer) { + free(file->buffer); + } + return (flush_result || close_result) ? -1 : 0; +} + +int fflush(FILE* file) { + unsigned long pos; + + if (file == NULL) { + return __flush_all(); + } + if (file->file_state.error != 0 || file->file_mode.file_kind == __closed_file) { + return -1; + } + if (file->file_mode.io_mode == __read) { + return 0; + } + if (file->file_state.io_state >= __rereading) { + file->file_state.io_state = __reading; + } + if (file->file_state.io_state == __reading) { + file->buffer_length = 0; + } + if (file->file_state.io_state != __writing) { + file->file_state.io_state = __neutral; + return 0; + } + if (file->file_mode.file_kind != __disk_file) { + pos = 0; + } else { + pos = ftell(file); + } + if (__flush_buffer(file, 0) != __no_io_error) { + file->file_state.error = 1; + file->buffer_length = 0; + return -1; + } + file->file_state.io_state = __neutral; + file->position = pos; + file->buffer_length = 0; + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/float.c b/src/MSL_C.PPCEABI.bare.H/float.c new file mode 100644 index 00000000..f07b2812 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/float.c @@ -0,0 +1,5 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" + +unsigned long __float_nan[] = { 0x7FFFFFFF }; + +unsigned long __float_huge[] = { 0x7F800000 }; diff --git a/src/MSL_C.PPCEABI.bare.H/k_cos.c b/src/MSL_C.PPCEABI.bare.H/k_cos.c new file mode 100755 index 00000000..2f69d256 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/k_cos.c @@ -0,0 +1,91 @@ +/* @(#)k_cos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * __kernel_cos( x, y ) + * kernel cos function on [-pi/4, pi/4], pi/4 ~ 0.785398164 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * + * Algorithm + * 1. Since cos(-x) = cos(x), we need only to consider positive x. + * 2. if x < 2^-27 (hx<0x3e400000 0), return 1 with inexact if x!=0. + * 3. cos(x) is approximated by a polynomial of degree 14 on + * [0,pi/4] + * 4 14 + * cos(x) ~ 1 - x*x/2 + C1*x + ... + C6*x + * where the remez error is + * + * | 2 4 6 8 10 12 14 | -58 + * |cos(x)-(1-.5*x +C1*x +C2*x +C3*x +C4*x +C5*x +C6*x )| <= 2 + * | | + * + * 4 6 8 10 12 14 + * 4. let r = C1*x +C2*x +C3*x +C4*x +C5*x +C6*x , then + * cos(x) = 1 - x*x/2 + r + * since cos(x+y) ~ cos(x) - sin(x)*y + * ~ cos(x) - x*y, + * a correction term is necessary in cos(x) and hence + * cos(x+y) = 1 - (x*x/2 - (r - x*y)) + * For better accuracy when x > 0.3, let qx = |x|/4 with + * the last 32 bits mask off, and if x > 0.78125, let qx = 0.28125. + * Then + * cos(x+y) = (1-qx) - ((x*x/2-qx) - (r-x*y)). + * Note that 1-qx and (x*x/2-qx) is EXACT here, and the + * magnitude of the latter is at least a quarter of x*x/2, + * thus, reducing the rounding error in the subtraction. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +C1 = 4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */ +C2 = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */ +C3 = 2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */ +C4 = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */ +C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */ +C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */ + +#ifdef __STDC__ + double __kernel_cos(double x, double y) +#else + double __kernel_cos(x, y) + double x,y; +#endif +{ + double a,hz,z,r,qx; + int ix; + ix = __HI(x)&0x7fffffff; /* ix = |x|'s high word*/ + if(ix<0x3e400000) { /* if x < 2**27 */ + if(((int)x)==0) return one; /* generate inexact */ + } + z = x*x; + r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*C6))))); + if(ix < 0x3FD33333) /* if |x| < 0.3 */ + return one - (0.5*z - (z*r - x*y)); + else { + if(ix > 0x3fe90000) { /* x > 0.78125 */ + qx = 0.28125; + } else { + __HI(qx) = ix-0x00200000; /* x/4 */ + __LO(qx) = 0; + } + hz = 0.5*z-qx; + a = one-qx; + return a - (hz - (z*r-x*y)); + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/k_rem_pio2.c b/src/MSL_C.PPCEABI.bare.H/k_rem_pio2.c new file mode 100755 index 00000000..b14d7d2a --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/k_rem_pio2.c @@ -0,0 +1,316 @@ + +/* @(#)k_rem_pio2.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * __kernel_rem_pio2(x,y,e0,nx,prec,ipio2) + * double x[],y[]; int e0,nx,prec; int ipio2[]; + * + * __kernel_rem_pio2 return the last three digits of N with + * y = x - N*pi/2 + * so that |y| < pi/2. + * + * The method is to compute the integer (mod 8) and fraction parts of + * (2/pi)*x without doing the full multiplication. In general we + * skip the part of the product that are known to be a huge integer ( + * more accurately, = 0 mod 8 ). Thus the number of operations are + * independent of the exponent of the input. + * + * (2/pi) is represented by an array of 24-bit integers in ipio2[]. + * + * Input parameters: + * x[] The input value (must be positive) is broken into nx + * pieces of 24-bit integers in double precision format. + * x[i] will be the i-th 24 bit of x. The scaled exponent + * of x[0] is given in input parameter e0 (i.e., x[0]*2^e0 + * match x's up to 24 bits. + * + * Example of breaking a double positive z into x[0]+x[1]+x[2]: + * e0 = ilogb(z)-23 + * z = ldexp(z,-e0) + * for i = 0,1,2 + * x[i] = floor(z) + * z = (z-x[i])*2**24 + * + * + * y[] ouput result in an array of double precision numbers. + * The dimension of y[] is: + * 24-bit precision 1 + * 53-bit precision 2 + * 64-bit precision 2 + * 113-bit precision 3 + * The actual value is the sum of them. Thus for 113-bit + * precison, one may have to do something like: + * + * long double t,w,r_head, r_tail; + * t = (long double)y[2] + (long double)y[1]; + * w = (long double)y[0]; + * r_head = t+w; + * r_tail = w - (r_head - t); + * + * e0 The exponent of x[0] + * + * nx dimension of x[] + * + * prec an integer indicating the precision: + * 0 24 bits (single) + * 1 53 bits (double) + * 2 64 bits (extended) + * 3 113 bits (quad) + * + * ipio2[] + * integer array, contains the (24*i)-th to (24*i+23)-th + * bit of 2/pi after binary point. The corresponding + * floating value is + * + * ipio2[i] * 2^(-24(i+1)). + * + * External function: + * double ldexp(), floor(); + * + * + * Here is the description of some local variables: + * + * jk jk+1 is the initial number of terms of ipio2[] needed + * in the computation. The recommended value is 2,3,4, + * 6 for single, double, extended,and quad. + * + * jz local integer variable indicating the number of + * terms of ipio2[] used. + * + * jx nx - 1 + * + * jv index for pointing to the suitable ipio2[] for the + * computation. In general, we want + * ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8 + * is an integer. Thus + * e0-3-24*jv >= 0 or (e0-3)/24 >= jv + * Hence jv = max(0,(e0-3)/24). + * + * jp jp+1 is the number of terms in PIo2[] needed, jp = jk. + * + * q[] double array with integral value, representing the + * 24-bits chunk of the product of x and 2/pi. + * + * q0 the corresponding exponent of q[0]. Note that the + * exponent for q[i] would be q0-24*i. + * + * PIo2[] double precision array, obtained by cutting pi/2 + * into 24 bits chunks. + * + * f[] ipio2[] in floating point + * + * iq[] integer array by breaking up q[] in 24-bits chunk. + * + * fq[] final product of x*(2/pi) in fq[0],..,fq[jk] + * + * ih integer. If >0 it indicates q[] is >= 0.5, hence + * it also indicates the *sign* of the result. + * + */ + + +/* + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const int init_jk[] = {2,3,4,6}; /* initial value for jk */ +#else +static int init_jk[] = {2,3,4,6}; +#endif + +#ifdef __STDC__ +static const double PIo2[] = { +#else +static double PIo2[] = { +#endif + 1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */ + 7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */ + 5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */ + 3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */ + 1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */ + 1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */ + 2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */ + 2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */ +}; + +#ifdef __STDC__ +static const double +#else +static double +#endif +zero = 0.0, +one = 1.0, +two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ +twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */ + +#ifdef __STDC__ + int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int *ipio2) +#else + int __kernel_rem_pio2(x,y,e0,nx,prec,ipio2) + double x[], y[]; int e0,nx,prec; int ipio2[]; +#endif +{ + int jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih; + double z,fw,f[20],fq[20],q[20]; + + /* initialize jk*/ + jk = init_jk[prec]; + jp = jk; + + /* determine jx,jv,q0, note that 3>q0 */ + jx = nx-1; + jv = (e0-3)/24; if(jv<0) jv=0; + q0 = e0-24*(jv+1); + + /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */ + j = jv-jx; m = jx+jk; + for(i=0;i<=m;i++,j++) f[i] = (j<0)? zero : (double) ipio2[j]; + + /* compute q[0],q[1],...q[jk] */ + for (i=0;i<=jk;i++) { + for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw; + } + + jz = jk; +recompute: + /* distill q[] into iq[] reversingly */ + for(i=0,j=jz,z=q[jz];j>0;i++,j--) { + fw = (double)((int)(twon24* z)); + iq[i] = (int)(z-two24*fw); + z = q[j-1]+fw; + } + + /* compute n */ + z = ldexp(z,q0); /* actual value of z */ + z -= 8.0*floor(z*0.125); /* trim off integer >= 8 */ + n = (int) z; + z -= (double)n; + ih = 0; + if(q0>0) { /* need iq[jz-1] to determine n */ + i = (iq[jz-1]>>(24-q0)); n += i; + iq[jz-1] -= i<<(24-q0); + ih = iq[jz-1]>>(23-q0); + } + else if(q0==0) ih = iq[jz-1]>>23; + else if(z>=0.5) ih=2; + + if(ih>0) { /* q > 0.5 */ + n += 1; carry = 0; + for(i=0;i0) { /* rare case: chance is 1 in 12 */ + switch(q0) { + case 1: + iq[jz-1] &= 0x7fffff; break; + case 2: + iq[jz-1] &= 0x3fffff; break; + } + } + if(ih==2) { + z = one - z; + if(carry!=0) z -= ldexp(one,q0); + } + } + + /* check if recomputation is needed */ + if(z==zero) { + j = 0; + for (i=jz-1;i>=jk;i--) j |= iq[i]; + if(j==0) { /* need recomputation */ + for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */ + + for(i=jz+1;i<=jz+k;i++) { /* add q[jz+1] to q[jz+k] */ + f[jx+i] = (double) ipio2[jv+i]; + for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; + q[i] = fw; + } + jz += k; + goto recompute; + } + } + + /* chop off zero terms */ + if(z==0.0) { + jz -= 1; q0 -= 24; + while(iq[jz]==0) { jz--; q0-=24;} + } else { /* break z into 24-bit if necessary */ + z = ldexp(z,-q0); + if(z>=two24) { + fw = (double)((int)(twon24*z)); + iq[jz] = (int)(z-two24*fw); + jz += 1; q0 += 24; + iq[jz] = (int) fw; + } else iq[jz] = (int) z ; + } + + /* convert integer "bit" chunk to floating-point value */ + fw = ldexp(one,q0); + for(i=jz;i>=0;i--) { + q[i] = fw*(double)iq[i]; fw*=twon24; + } + + /* compute PIo2[0,...,jp]*q[jz,...,0] */ + for(i=jz;i>=0;i--) { + for(fw=0.0,k=0;k<=jp&&k<=jz-i;k++) fw += PIo2[k]*q[i+k]; + fq[jz-i] = fw; + } + + /* compress fq[] into y[] */ + switch(prec) { + case 0: + fw = 0.0; + for (i=jz;i>=0;i--) fw += fq[i]; + y[0] = (ih==0)? fw: -fw; + break; + case 1: + case 2: + fw = 0.0; + for (i=jz;i>=0;i--) fw += fq[i]; + y[0] = (ih==0)? fw: -fw; + fw = fq[0]-fw; + for (i=1;i<=jz;i++) fw += fq[i]; + y[1] = (ih==0)? fw: -fw; + break; + case 3: /* painful */ + for (i=jz;i>0;i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + for (i=jz;i>1;i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + for (fw=0.0,i=jz;i>=2;i--) fw += fq[i]; + if(ih==0) { + y[0] = fq[0]; y[1] = fq[1]; y[2] = fw; + } else { + y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw; + } + } + return n&7; +} diff --git a/src/MSL_C.PPCEABI.bare.H/k_sin.c b/src/MSL_C.PPCEABI.bare.H/k_sin.c new file mode 100755 index 00000000..b136909a --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/k_sin.c @@ -0,0 +1,73 @@ +/* @(#)k_sin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* __kernel_sin( x, y, iy) + * kernel sin function on [-pi/4, pi/4], pi/4 ~ 0.7854 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * Input iy indicates whether y is 0. (if iy=0, y assume to be 0). + * + * Algorithm + * 1. Since sin(-x) = -sin(x), we need only to consider positive x. + * 2. if x < 2^-27 (hx<0x3e400000 0), return x with inexact if x!=0. + * 3. sin(x) is approximated by a polynomial of degree 13 on + * [0,pi/4] + * 3 13 + * sin(x) ~ x + S1*x + ... + S6*x + * where + * + * |sin(x) 2 4 6 8 10 12 | -58 + * |----- - (1+S1*x +S2*x +S3*x +S4*x +S5*x +S6*x )| <= 2 + * | x | + * + * 4. sin(x+y) = sin(x) + sin'(x')*y + * ~ sin(x) + (1-x*x/2)*y + * For better accuracy, let + * 3 2 2 2 2 + * r = x *(S2+x *(S3+x *(S4+x *(S5+x *S6)))) + * then 3 2 + * sin(x) = x + (S1*x + (x *(r-y/2)+y)) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ +S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */ +S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */ +S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */ +S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */ +S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */ +S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */ + +#ifdef __STDC__ + double __kernel_sin(double x, double y, int iy) +#else + double __kernel_sin(x, y, iy) + double x,y; int iy; /* iy=0 if y is zero */ +#endif +{ + double z,r,v; + int ix; + ix = __HI(x)&0x7fffffff; /* high word of x */ + if(ix<0x3e400000) /* |x| < 2**-27 */ + {if((int)x==0) return x;} /* generate inexact */ + z = x*x; + v = z*x; + r = S2+z*(S3+z*(S4+z*(S5+z*S6))); + if(iy==0) return x+v*(S1+z*r); + else return x-((z*(half*y-v*r)-y)-v*S1); +} diff --git a/src/MSL_C.PPCEABI.bare.H/k_tan.c b/src/MSL_C.PPCEABI.bare.H/k_tan.c new file mode 100755 index 00000000..d7dec7f5 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/k_tan.c @@ -0,0 +1,134 @@ +/* + * ==================================================== + * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* INDENT OFF */ +/* __kernel_tan( x, y, k ) + * kernel tan function on [-pi/4, pi/4], pi/4 ~ 0.7854 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * Input k indicates whether tan (if k = 1) or -1/tan (if k = -1) is returned. + * + * Algorithm + * 1. Since tan(-x) = -tan(x), we need only to consider positive x. + * 2. if x < 2^-28 (hx<0x3e300000 0), return x with inexact if x!=0. + * 3. tan(x) is approximated by a odd polynomial of degree 27 on + * [0,0.67434] + * 3 27 + * tan(x) ~ x + T1*x + ... + T13*x + * where + * + * |tan(x) 2 4 26 | -59.2 + * |----- - (1+T1*x +T2*x +.... +T13*x )| <= 2 + * | x | + * + * Note: tan(x+y) = tan(x) + tan'(x)*y + * ~ tan(x) + (1+x*x)*y + * Therefore, for better accuracy in computing tan(x+y), let + * 3 2 2 2 2 + * r = x *(T2+x *(T3+x *(...+x *(T12+x *T13)))) + * then + * 3 2 + * tan(x+y) = x + (T1*x + (x *(r+y)+y)) + * + * 4. For x in [0.67434,pi/4], let y = pi/4 - x, then + * tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y)) + * = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y))) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h" + +static const double xxx[] = { + 3.33333333333334091986e-01, /* 3FD55555, 55555563 */ + 1.33333333333201242699e-01, /* 3FC11111, 1110FE7A */ + 5.39682539762260521377e-02, /* 3FABA1BA, 1BB341FE */ + 2.18694882948595424599e-02, /* 3F9664F4, 8406D637 */ + 8.86323982359930005737e-03, /* 3F8226E3, E96E8493 */ + 3.59207910759131235356e-03, /* 3F6D6D22, C9560328 */ + 1.45620945432529025516e-03, /* 3F57DBC8, FEE08315 */ + 5.88041240820264096874e-04, /* 3F4344D8, F2F26501 */ + 2.46463134818469906812e-04, /* 3F3026F7, 1A8D1068 */ + 7.81794442939557092300e-05, /* 3F147E88, A03792A6 */ + 7.14072491382608190305e-05, /* 3F12B80F, 32F0A7E9 */ + -1.85586374855275456654e-05, /* BEF375CB, DB605373 */ + 2.59073051863633712884e-05, /* 3EFB2A70, 74BF7AD4 */ +}; +#define pio4 7.85398163397448278999e-01 +#define pio4lo 3.06161699786838301793e-17 +#define T xxx +/* INDENT ON */ + +double +__kernel_tan(double x, double y, int iy) { + double z, r, v, w, s; + int ix, hx; + + hx = __HI(x); /* high word of x */ + ix = hx & 0x7fffffff; /* high word of |x| */ + if (ix < 0x3e300000) { /* x < 2**-28 */ + if ((int) x == 0) { /* generate inexact */ + if (((ix | __LO(x)) | (iy + 1)) == 0) + return 1 / fabs(x); + else { + if (iy == 1) + return x; + else + return -1 / x; + } + } + } + if (ix >= 0x3FE59428) { /* |x| >= 0.6744 */ + if (hx < 0) { + x = -x; + y = -y; + } + z = pio4 - x; + w = pio4lo - y; + x = z + w; + y = 0.0; + } + z = x * x; + w = z * z; + /* + * Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + r = T[1] + w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + + w * T[11])))); + v = z * (T[2] + w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + + w * T[12]))))); + s = z * x; + r = y + z * (s * (r + v) + y); + r += T[0] * s; + w = x + r; + if (ix >= 0x3FE59428) { + v = (double) iy; + return (double) (1 - ((hx >> 30) & 2)) * + (v - 2.0 * (x - (w * w / (w + v) - r))); + } + if (iy == 1) + return w; + else { + /* + * if allow error up to 2 ulp, simply return + * -1.0 / (x+r) here + */ + /* compute -1.0 / (x+r) accurately */ + double a, t; + z = w; + __LO(z) = 0; + v = r - (z - x); /* z+v = r+x */ + t = a = -1.0 / w; /* a = -1.0/w */ + __LO(t) = 0; + s = 1.0 + t * z; + return t + a * (s + t * v); + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/math_ppc.c b/src/MSL_C.PPCEABI.bare.H/math_ppc.c new file mode 100644 index 00000000..ab157318 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/math_ppc.c @@ -0,0 +1,20 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math_ppc.h" +float acosf(float arg0) { + return (float) acos(arg0); +} + +float atan2f(float arg0) { + return (float) atan2(arg0); +} + +float cosf(float arg0) { + return (float) cos(arg0); +} + +float sinf(float arg0) { + return (float) sin(arg0); +} + +float tanf(float arg0) { + return (float) tan(arg0); +} diff --git a/src/MSL_C.PPCEABI.bare.H/mbstring.c b/src/MSL_C.PPCEABI.bare.H/mbstring.c new file mode 100644 index 00000000..0364afa3 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/mbstring.c @@ -0,0 +1,64 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +static int unicode_to_UTF8(char* s, wchar_t wchar) { + int number_of_bytes; + char* target_ptr; + char first_byte_mark[4] = {0x00, 0x00, 0xc0, 0xe0}; + + if (!s) { + return 0; + } + + if (wchar < 0x0080) + number_of_bytes = 1; + else if (wchar < 0x0800) + number_of_bytes = 2; + else + number_of_bytes = 3; + + target_ptr = s + number_of_bytes; + + switch (number_of_bytes) { + case 3: + *--target_ptr = (wchar & 0x003f) | 0x80; + wchar >>= 6; + case 2: + *--target_ptr = (wchar & 0x003f) | 0x80; + wchar >>= 6; + case 1: + *--target_ptr = wchar | first_byte_mark[number_of_bytes]; + } + + return (number_of_bytes); +} + +static inline int wctomb(char* s, wchar_t wchar) { + return (unicode_to_UTF8(s, wchar)); +} + +size_t wcstombs(char* s, const wchar_t* pwcs, size_t n) { + int chars_written = 0; + int result; + char temp[3]; + wchar_t* source; + + if (!s || !pwcs) + return (0); + + source = (wchar_t*)pwcs; + while (chars_written <= n) { + if (!*source) { + *(s + chars_written) = '\0'; + break; + } else { + result = wctomb(temp, *source++); + if ((chars_written + result) <= n) { + strcat(s + chars_written, temp, result); + chars_written += result; + } else + break; + } + } + + return (chars_written); +} diff --git a/src/MSL_C.PPCEABI.bare.H/mem.c b/src/MSL_C.PPCEABI.bare.H/mem.c new file mode 100644 index 00000000..fc160cd5 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/mem.c @@ -0,0 +1,92 @@ +#include "string.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h" + +void* memmove(void* dst, const void* src, size_t n) +{ + unsigned char* csrc; + unsigned char* cdst; + + int reverse = (unsigned int)src < (unsigned int)dst; + + if (n >= 32) { + if (((unsigned int)dst ^ (unsigned int)src) & 3) { + if (!reverse) { + __copy_longs_unaligned(dst, src, n); + } else { + __copy_longs_rev_unaligned(dst, src, n); + } + } else { + if (!reverse) { + __copy_longs_aligned(dst, src, n); + } else { + __copy_longs_rev_aligned(dst, src, n); + } + } + + return dst; + } else { + if (!reverse) { + csrc = ((unsigned char*)src) - 1; + cdst = ((unsigned char*)dst) - 1; + n++; + + while (--n > 0) { + *++cdst = *++csrc; + } + } else { + csrc = (unsigned char*)src + n; + cdst = (unsigned char*)dst + n; + n++; + + while (--n > 0) { + *--cdst = *--csrc; + } + } + } + + return dst; +} + +void* memchr(const void* ptr, int ch, size_t count) +{ + const unsigned char* p; + + unsigned long v = (ch & 0xff); + + for (p = (unsigned char*)ptr - 1, count++; --count;) + if ((*++p & 0xff) == v) + return (void*)p; + + return NULL; +} + +unsigned char* __memrchr(unsigned char* s, int c, size_t n){ // credit to CelestialAmber + int n_count; + size_t char_check; + + char_check = (unsigned char)c; + s = &s[n]; + n_count = n + 1; + + while(--n_count){ + if(*--s == char_check){ + return s; + } + } + + return 0; +} + +int memcmp(const void* lhs, const void* rhs, size_t count) +{ + const unsigned char* p1; + const unsigned char* p2; + + for (p1 = (const unsigned char*)lhs - 1, p2 = (const unsigned char*)rhs - 1, + count++; + --count;) + if (*++p1 != *++p2) + return ((*p1 < *p2) ? -1 : +1); + + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/mem_funcs.c b/src/MSL_C.PPCEABI.bare.H/mem_funcs.c new file mode 100644 index 00000000..a22984c4 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/mem_funcs.c @@ -0,0 +1,221 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h" + +#define cps ((unsigned char*)src) +#define cpd ((unsigned char*)dst) +#define lps ((unsigned long*)src) +#define lpd ((unsigned long*)dst) +#define deref_auto_inc(p) *++(p) + +void __copy_longs_aligned(void* dst, const void* src, size_t n) +{ + unsigned long i; + + i = (-(unsigned long)dst) & 3; + + cps = ((unsigned char*)src) - 1; + cpd = ((unsigned char*)dst) - 1; + + if (i) { + n -= i; + + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--i); + } + + lps = ((unsigned long*)(cps + 1)) - 1; + lpd = ((unsigned long*)(cpd + 1)) - 1; + + i = n >> 5; + + if (i) + do { + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + } while (--i); + + i = (n & 31) >> 2; + + if (i) + do + deref_auto_inc(lpd) = deref_auto_inc(lps); + while (--i); + + cps = ((unsigned char*)(lps + 1)) - 1; + cpd = ((unsigned char*)(lpd + 1)) - 1; + + n &= 3; + + if (n) + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--n); + + return; +} + +void __copy_longs_rev_aligned(void* dst, const void* src, size_t n) +{ + unsigned long i; + + cps = ((unsigned char*)src) + n; + cpd = ((unsigned char*)dst) + n; + + i = ((unsigned long)cpd) & 3; + + if (i) { + n -= i; + + do + *--cpd = *--cps; + while (--i); + } + + i = n >> 5; + + if (i) + do { + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + } while (--i); + + i = (n & 31) >> 2; + + if (i) + do + *--lpd = *--lps; + while (--i); + + n &= 3; + + if (n) + do + *--cpd = *--cps; + while (--n); + + return; +} + +void __copy_longs_unaligned(void* dst, const void* src, size_t n) +{ + unsigned long i, v1, v2; + unsigned int src_offset, left_shift, right_shift; + + i = (-(unsigned long)dst) & 3; + + cps = ((unsigned char*)src) - 1; + cpd = ((unsigned char*)dst) - 1; + + if (i) { + n -= i; + + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--i); + } + + src_offset = ((unsigned int)(cps + 1)) & 3; + + left_shift = src_offset << 3; + right_shift = 32 - left_shift; + + cps -= src_offset; + + lps = ((unsigned long*)(cps + 1)) - 1; + lpd = ((unsigned long*)(cpd + 1)) - 1; + + i = n >> 3; + + v1 = deref_auto_inc(lps); + + do { + v2 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift); + v1 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v2 << left_shift) | (v1 >> right_shift); + } while (--i); + + if (n & 4) { + v2 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift); + } + + cps = ((unsigned char*)(lps + 1)) - 1; + cpd = ((unsigned char*)(lpd + 1)) - 1; + + n &= 3; + + if (n) { + cps -= 4 - src_offset; + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--n); + } + + return; +} + +void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n) +{ + unsigned long i, v1, v2; + unsigned int src_offset, left_shift, right_shift; + + cps = ((unsigned char*)src) + n; + cpd = ((unsigned char*)dst) + n; + + i = ((unsigned long)cpd) & 3; + + if (i) { + n -= i; + + do + *--cpd = *--cps; + while (--i); + } + + src_offset = ((unsigned int)cps) & 3; + + left_shift = src_offset << 3; + right_shift = 32 - left_shift; + + cps += 4 - src_offset; + + i = n >> 3; + + v1 = *--lps; + + do { + v2 = *--lps; + *--lpd = (v2 << left_shift) | (v1 >> right_shift); + v1 = *--lps; + *--lpd = (v1 << left_shift) | (v2 >> right_shift); + } while (--i); + + if (n & 4) { + v2 = *--lps; + *--lpd = (v2 << left_shift) | (v1 >> right_shift); + } + + n &= 3; + + if (n) { + cps += src_offset; + do + *--cpd = *--cps; + while (--n); + } + + return; +} diff --git a/src/MSL_C.PPCEABI.bare.H/misc_io.c b/src/MSL_C.PPCEABI.bare.H/misc_io.c new file mode 100644 index 00000000..06827814 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/misc_io.c @@ -0,0 +1,6 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h" + +void __stdio_atexit(void) { + __stdio_exit = __close_all; +} diff --git a/src/MSL_C.PPCEABI.bare.H/printf.c b/src/MSL_C.PPCEABI.bare.H/printf.c new file mode 100644 index 00000000..5879d452 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/printf.c @@ -0,0 +1,1257 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h" +#include "string.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" +#include "stdarg.h" + +extern void __num2dec(const decform*, double, decimal*); + +#define TARGET_FLOAT_BITS 64 +#define TARGET_FLOAT_BYTES (TARGET_FLOAT_BITS / 8) +#define TARGET_FLOAT_MAX_EXP LDBL_MAX_EXP +#define TARGET_FLOAT_MANT_DIG LDBL_MANT_DIG +#define TARGET_FLOAT_IMPLICIT_J_BIT 1 +#define TARGET_FLOAT_MANT_BITS \ + (TARGET_FLOAT_MANT_DIG - TARGET_FLOAT_IMPLICIT_J_BIT) +#define TARGET_FLOAT_EXP_BITS (TARGET_FLOAT_BITS - TARGET_FLOAT_MANT_BITS - 1) + +enum justification_options { + left_justification, + right_justification, + zero_fill +}; + +enum sign_options { only_minus, sign_always, space_holder }; + +enum argument_options { + normal_argument, + char_argument, + short_argument, + long_argument, + long_long_argument, + long_double_argument, + wchar_argument +}; + +typedef struct { + unsigned char justification_options; + unsigned char sign_options; + unsigned char precision_specified; + unsigned char alternate_form; + unsigned char argument_options; + unsigned char conversion_char; + int field_width; + int precision; +} print_format; + +static const char* parse_format(const char *format_string, va_list *arg, print_format *format) { + print_format f; + const char* s = format_string; + int c; + int flag_found; + f.justification_options = right_justification; + f.sign_options = only_minus; + f.precision_specified = 0; + f.alternate_form = 0; + f.argument_options = normal_argument; + f.field_width = 0; + f.precision = 0; + + if ((c = *++s) == '%') { + f.conversion_char = c; + *format = f; + return ((const char*)s + 1); + } + + for (;;) { + flag_found = 1; + + switch (c) { + case '-': + f.justification_options = left_justification; + break; + case '+': + f.sign_options = sign_always; + break; + case ' ': + if (f.sign_options != sign_always) { + f.sign_options = space_holder; + } + break; + case '#': + f.alternate_form = 1; + break; + case '0': + if (f.justification_options != left_justification) { + f.justification_options = zero_fill; + } + break; + default: + flag_found = 0; + break; + } + + if (flag_found) { + c = *++s; + } + else { + break; + } + } + + if (c == '*') { + if ((f.field_width = va_arg(*arg, int)) < 0) { + f.justification_options = left_justification; + f.field_width = -f.field_width; + } + + c = *++s; + } + else { + while (isdigit(c)) { + f.field_width = (f.field_width * 10) + (c - '0'); + c = *++s; + } + } + + if (f.field_width > 509) { + f.conversion_char = 0xFF; + *format = f; + return ((const char*)s + 1); + } + + if (c == '.') { + f.precision_specified = 1; + + if ((c = *++s) == '*') { + if ((f.precision = va_arg(*arg, int)) < 0) { + f.precision_specified = 0; + } + + c = *++s; + } + else { + while (isdigit(c)) { + f.precision = (f.precision * 10) + (c - '0'); + c = *++s; + } + } + } + + flag_found = 1; + + switch (c) { + case 'h': + f.argument_options = short_argument; + + if (s[1] == 'h') { + f.argument_options = char_argument; + c = *++s; + } + + break; + + case 'l': + f.argument_options = long_argument; + + if (s[1] == 'l') { + f.argument_options = long_long_argument; + c = *++s; + } + + break; + + case 'L': + f.argument_options = long_double_argument; + break; + default: + flag_found = 0; + break; + } + + if (flag_found) { + c = *++s; + } + + f.conversion_char = c; + + switch (c) { + case 'd': + case 'i': + case 'u': + case 'o': + case 'x': + case 'X': + if (f.argument_options == long_double_argument) { + f.conversion_char = 0xFF; + break; + } + + if (!f.precision_specified) { + f.precision = 1; + } + else if (f.justification_options == zero_fill) { + f.justification_options = right_justification; + } + break; + + case 'f': + case 'F': + if (f.argument_options == short_argument || f.argument_options == long_long_argument) { + f.conversion_char = 0xFF; + break; + } + + if (!f.precision_specified) { + f.precision = 6; + } + break; + + case 'a': + case 'A': + if (!f.precision_specified) { + f.precision = 0xD; + } + + if (f.argument_options == short_argument || f.argument_options == long_long_argument || f.argument_options == char_argument) { + f.conversion_char = 0xFF; + } + + break; + + case 'g': + case 'G': + if (!f.precision) { + f.precision = 1; + } + + case 'e': + case 'E': + if (f.argument_options == short_argument || f.argument_options == long_long_argument || f.argument_options == char_argument) { + f.conversion_char = 0xFF; + break; + } + + if (!f.precision_specified) { + f.precision = 6; + } + break; + + case 'p': + f.conversion_char = 'x'; + f.alternate_form = 1; + f.argument_options = long_argument; + f.precision = 8; + break; + + case 'c': + if (f.argument_options == long_argument) { + f.argument_options = wchar_argument; + } + else { + if (f.precision_specified || f.argument_options != normal_argument) { + f.conversion_char = 0xFF; + } + } + + break; + + case 's': + if (f.argument_options == long_argument) { + f.argument_options = wchar_argument; + } + else { + if (f.argument_options != normal_argument) { + f.conversion_char = 0xFF; + } + } + + break; + + case 'n': + if (f.argument_options == long_double_argument) { + f.conversion_char = 0xFF; + } + + break; + + default: + f.conversion_char = 0xFF; + break; + } + + *format = f; + return ((const char*)s + 1); +} + +static char* long2str(long num, char* buff, print_format format) +{ + unsigned long unsigned_num, base; + char* p; + int n, digits; + int minus = 0; + unsigned_num = num; + minus = 0; + + p = buff; + *--p = 0; + digits = 0; + + if (!num && !format.precision + && !(format.alternate_form && format.conversion_char == 'o')) { + return p; + } + + switch (format.conversion_char) { + case 'd': + case 'i': + base = 10; + + if (num < 0) { + unsigned_num = -unsigned_num; + minus = 1; + } + break; + + case 'o': + base = 8; + format.sign_options = only_minus; + break; + + case 'u': + base = 10; + format.sign_options = only_minus; + break; + + case 'x': + case 'X': + base = 16; + format.sign_options = only_minus; + break; + } + + do { + n = unsigned_num % base; + unsigned_num /= base; + + if (n < 10) { + n += '0'; + } else { + n -= 10; + + if (format.conversion_char == 'x') { + n += 'a'; + } else { + n += 'A'; + } + } + + *--p = n; + ++digits; + } while (unsigned_num != 0); + + if (base == 8 && format.alternate_form && *p != '0') { + *--p = '0'; + ++digits; + } + + if (format.justification_options == zero_fill) { + format.precision = format.field_width; + + if (minus || format.sign_options != only_minus) + --format.precision; + + if (base == 16 && format.alternate_form) + format.precision -= 2; + } + + if (buff - p + format.precision > 509) + return (0); + + while (digits < format.precision) { + *--p = '0'; + ++digits; + } + + if (base == 16 && format.alternate_form) { + *--p = format.conversion_char; + *--p = '0'; + } + + if (minus) { + *--p = '-'; + } else if (format.sign_options == sign_always) { + *--p = '+'; + } else if (format.sign_options == space_holder) { + *--p = ' '; + } + + return p; +} + +static char* longlong2str(long long num, char* pBuf, print_format fmt) +{ + unsigned long long unsigned_num, base; + char* p; + int n, digits; + int minus = 0; + unsigned_num = num; + minus = 0; + p = pBuf; + *--p = 0; + digits = 0; + + if (!num && !fmt.precision + && !(fmt.alternate_form && fmt.conversion_char == 'o')) { + return p; + } + + switch (fmt.conversion_char) { + case 'd': + case 'i': + base = 10; + + if (num < 0) { + unsigned_num = -unsigned_num; + minus = 1; + } + break; + case 'o': + base = 8; + fmt.sign_options = only_minus; + break; + case 'u': + base = 10; + fmt.sign_options = only_minus; + break; + case 'x': + case 'X': + base = 16; + fmt.sign_options = only_minus; + break; + } + + do { + n = unsigned_num % base; + unsigned_num /= base; + + if (n < 10) { + n += '0'; + } else { + n -= 10; + if (fmt.conversion_char == 'x') { + n += 'a'; + } else { + n += 'A'; + } + } + + *--p = n; + ++digits; + } while (unsigned_num != 0); + + if (base == 8 && fmt.alternate_form && *p != '0') { + *--p = '0'; + ++digits; + } + + if (fmt.justification_options == zero_fill) { + fmt.precision = fmt.field_width; + + if (minus || fmt.sign_options != only_minus) { + --fmt.precision; + } + + if (base == 16 && fmt.alternate_form) { + fmt.precision -= 2; + } + } + + if (pBuf - p + fmt.precision > 509) { + return 0; + } + + while (digits < fmt.precision) { + *--p = '0'; + ++digits; + } + + if (base == 16 && fmt.alternate_form) { + *--p = fmt.conversion_char; + *--p = '0'; + } + + if (minus) { + *--p = '-'; + } else if (fmt.sign_options == sign_always) { + *--p = '+'; + } else if (fmt.sign_options == space_holder) { + *--p = ' '; + } + + return p; +} + +static char * double2hex(long double num, char * buff, print_format format) { + char *p; + unsigned char *q; + unsigned char temp_r7; + char working_byte; + long double ld; + long exp; + print_format exp_format; + int hex_precision; + decform form; + decimal dec; + + p = buff; + ld = num; + + if (format.precision > 509) { + return 0; + } + + form.style = (char) 0; + form.digits = 0x20; + __num2dec(&form, num, &dec); + + if (*dec.sig.text == 'I') { + if (*(short*) &ld & 0x8000) { + p = buff - 5; + if (format.conversion_char == 'A') strcpy(p, "-INF"); + else strcpy(p, "-inf"); + } + else { + p = buff - 4; + if (format.conversion_char == 'A') strcpy(p, "INF"); + else strcpy(p, "inf"); + } + + return p; + } + if (*dec.sig.text == 'N') { + if (*(unsigned char*) &num & 0x80) { + p = buff - 5; + if (format.conversion_char == 'A') strcpy(p, "-NAN"); + else strcpy(p, "-nan"); + } + else { + p = buff - 4; + if (format.conversion_char == 'A') strcpy(p, "NAN"); + else strcpy(p, "nan"); + } + + return p; + } + + exp_format.justification_options = right_justification; + exp_format.sign_options = sign_always; + exp_format.precision_specified = 0; + exp_format.alternate_form = 0; + exp_format.argument_options = normal_argument; + exp_format.field_width = 0; + exp_format.precision = 1; + exp_format.conversion_char = 'd'; + + exp = (short) ((*(short*) &ld & 0x7FFF) >> 4) - 0x3FF; + p = long2str(exp, buff, exp_format); + if (format.conversion_char == 'a') + *--p = 'p'; + else + *--p = 'P'; + q = (unsigned char*) # + + for (hex_precision = format.precision; hex_precision >= 1; hex_precision--) { + temp_r7 = *(q + (hex_precision / 2 + 1)); + if (hex_precision % 2) { + working_byte = temp_r7 & 0xF; + } else { + working_byte = (temp_r7 >> 4); + } + + if (working_byte < 10) { + working_byte += '0'; + } + else + if (format.conversion_char == 'a') { + working_byte += 'a' - 10; + } + else { + working_byte += 'A' - 10; + } + + *--p = working_byte; + } + + if (TARGET_FLOAT_IMPLICIT_J_BIT){ + if (format.precision || format.alternate_form) { + *--p = '.'; + } + *--p = '1'; + } + + if (format.conversion_char == 'a') { + *--p = 'x'; + } + else { + *--p = 'X'; + } + + *--p = '0'; + + if (*((short*) &ld) & 0x8000) { + *--p = '-'; + } + else if (format.sign_options == sign_always) { + *--p = '+'; + } + else if (format.sign_options == space_holder) { + *--p = ' '; + } + + return p; +} + +static void round_decimal(decimal* dec, int new_length) +{ + char c; + char* p; + int carry; + + if (new_length < 0) { + return_zero: + dec->exp = 0; + dec->sig.length = 1; + *dec->sig.text = '0'; + return; + } + + if (new_length >= dec->sig.length) { + return; + } + + p = (char*)dec->sig.text + new_length + 1; + c = *--p - '0'; + + if (c == 5) { + char* q = &((char*)dec->sig.text)[dec->sig.length]; + + while (--q > p && *q == '0') + ; + carry = (q == p) ? p[-1] & 1 : 1; + } else { + carry = (c > 5); + } + + while (new_length != 0) { + c = *--p - '0' + carry; + + if ((carry = (c > 9)) != 0 || c == 0) { + --new_length; + } else { + *p = c + '0'; + break; + } + } + + if (carry != 0) { + dec->exp += 1; + dec->sig.length = 1; + *dec->sig.text = '1'; + return; + } else if (new_length == 0) { + goto return_zero; + } + + dec->sig.length = new_length; +} + +static char* float2str(long double num, char *buff, print_format format) { + decimal dec; + decform form; + char* p; + char* q; + int n, digits, sign; + int int_digits, frac_digits; + + if (format.precision > 509) { + return 0; + } + + form.style = 0; + form.digits = 0x20; + __num2dec(&form, num, &dec); + p = (char*)dec.sig.text + dec.sig.length; + + while (dec.sig.length > 1 && *--p == '0') { + --dec.sig.length; + ++dec.exp; + } + + switch (*dec.sig.text) { + case '0': + dec.exp = 0; + break; + case 'I': + if (num < 0) { + p = buff - 5; + + if (isupper(format.conversion_char)) { + strcpy(p, "-INF"); + } + else { + strcpy(p, "-inf"); + } + } + else { + p = buff - 4; + if (isupper(format.conversion_char)) { + strcpy(p, "INF"); + } + else { + strcpy(p, "inf"); + } + } + + return p; + + case 'N': + if (dec.sign) { + p = buff - 5; + + if (isupper(format.conversion_char)) { + strcpy(p, "-NAN"); + } + else { + strcpy(p, "-nan"); + } + } + else { + p = buff - 4; + if (isupper(format.conversion_char)) { + strcpy(p, "NAN"); + } + else { + strcpy(p, "nan"); + } + } + + return p; + } + + dec.exp += dec.sig.length - 1; + p = buff; + *--p = 0; + + switch (format.conversion_char) + { + case 'g': + case 'G': + + if (dec.sig.length > format.precision) { + round_decimal(&dec, format.precision); + } + + if (dec.exp < -4 || dec.exp >= format.precision) + { + if (format.alternate_form) { + --format.precision; + } + else { + format.precision = dec.sig.length - 1; + } + + if (format.conversion_char == 'g') { + format.conversion_char = 'e'; + } + else { + format.conversion_char = 'E'; + } + + goto e_format; + } + + if (format.alternate_form) { + format.precision -= dec.exp + 1; + } + else { + if ((format.precision = dec.sig.length - (dec.exp + 1)) < 0) { + format.precision = 0; + } + } + + goto f_format; + + case 'e': + case 'E': + e_format: + + if (dec.sig.length > format.precision + 1) { + round_decimal(&dec, format.precision + 1); + } + + n = dec.exp; + sign = '+'; + + if (n < 0) { + n = -n; + sign = '-'; + } + + for (digits = 0; n || digits < 2; ++digits) { + *--p = n % 10 + '0'; + n /= 10; + } + + *--p = sign; + *--p = format.conversion_char; + + if (buff - p + format.precision > 509) { + return 0; + } + + if (dec.sig.length < format.precision + 1) { + for (n = format.precision + 1 - dec.sig.length + 1; --n;) { + *--p = '0'; + } + } + + for (n = dec.sig.length, q = (char*)dec.sig.text + dec.sig.length; --n;) { + *--p = *--q; + } + + if (format.precision || format.alternate_form) { + *--p = '.'; + } + + *--p = *dec.sig.text; + + if (dec.sign) + *--p = '-'; + else if (format.sign_options == sign_always) + *--p = '+'; + else if (format.sign_options == space_holder) + *--p = ' '; + + break; + + case 'f': + case 'F': + f_format: + + if ((frac_digits = -dec.exp + dec.sig.length - 1) < 0) + frac_digits = 0; + + if (frac_digits > format.precision) { + round_decimal(&dec, dec.sig.length - (frac_digits - format.precision)); + + if ((frac_digits = -dec.exp + dec.sig.length - 1) < 0) + frac_digits = 0; + } + + if ((int_digits = dec.exp + 1) < 0) + int_digits = 0; + + if (int_digits + frac_digits > 509) + return 0; + + q = (char *) dec.sig.text + dec.sig.length; + + for (digits = 0; digits < (format.precision - frac_digits); ++digits) + *--p = '0'; + + for (digits = 0; digits < frac_digits && digits < dec.sig.length; ++digits) + *--p = *--q; + + for (; digits < frac_digits; ++digits) + *--p = '0'; + + if (format.precision || format.alternate_form) + *--p = '.'; + + if (int_digits) { + for (digits = 0; digits < int_digits - dec.sig.length; ++digits) { + *--p = '0'; + } + + for (; digits < int_digits; ++digits) { + *--p = *--q; + } + } + else { + *--p = '0'; + } + + if (dec.sign) { + *--p = '-'; + } + else if (format.sign_options == sign_always) { + *--p = '+'; + } + else if (format.sign_options == space_holder) { + *--p = ' '; + } + + break; + } + + return p; +} + +static int __pformatter(void *(*WriteProc)(void *, const char *, size_t), void *WriteProcArg, const char * format_str, va_list arg) { + int num_chars, chars_written, field_width; + const char* format_ptr; + const char* curr_format; + print_format format; + long long_num; + long long long_long_num; + long double long_double_num; + char buff[512]; + char* buff_ptr; + char* string_end; + char fill_char = ' '; + + format_ptr = format_str; + chars_written = 0; + + while (*format_ptr) { + if (!(curr_format = strchr(format_ptr, '%'))) { + num_chars = strlen(format_ptr); + chars_written += num_chars; + + if (num_chars && !(*WriteProc)(WriteProcArg, format_ptr, num_chars)) { + return -1; + } + + break; + } + + num_chars = curr_format - format_ptr; + chars_written += num_chars; + + if (num_chars && !(*WriteProc)(WriteProcArg, format_ptr, num_chars)) { + return -1; + } + + format_ptr = curr_format; + format_ptr = parse_format(format_ptr, (va_list*)arg, &format); + + switch (format.conversion_char) { + case 'd': + case 'i': + if (format.argument_options == long_argument) { + long_num = va_arg(arg, long); + } + else if (format.argument_options == long_long_argument) { + long_long_num = va_arg(arg, long long); + } + else { + long_num = va_arg(arg, int); + } + + if (format.argument_options == short_argument) { + long_num = (short)long_num; + } + + if (format.argument_options == char_argument) { + long_num = (signed char)long_num; + } + + if (format.argument_options == long_long_argument) { + if (!(buff_ptr = longlong2str(long_long_num, buff + 512, format))) { + goto conversion_error; + } + } + else { + if (!(buff_ptr = long2str(long_num, buff + 512, format))) { + goto conversion_error; + } + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 'o': + case 'u': + case 'x': + case 'X': + if (format.argument_options == long_argument) { + long_num = va_arg(arg, unsigned long); + } + else if (format.argument_options == long_long_argument) { + long_long_num = va_arg(arg, long long); + } + else { + long_num = va_arg(arg, unsigned int); + } + + if (format.argument_options == short_argument) { + long_num = (unsigned short)long_num; + } + + if (format.argument_options == char_argument) { + long_num = (unsigned char)long_num; + } + + if (format.argument_options == long_long_argument) { + if (!(buff_ptr = longlong2str(long_long_num, buff + 512, format))) { + goto conversion_error; + } + } + else { + if (!(buff_ptr = long2str(long_num, buff + 512, format))) { + goto conversion_error; + } + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 'f': + case 'F': + case 'e': + case 'E': + case 'g': + case 'G': + if (format.argument_options == long_double_argument) { + long_double_num = va_arg(arg, long double); + } + else { + long_double_num = va_arg(arg, double); + } + + if (!(buff_ptr = float2str(long_double_num, buff + 512, format))) { + goto conversion_error; + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 'a': + case 'A': + if (format.argument_options == long_double_argument) { + long_double_num = va_arg(arg, long double); + } + else { + long_double_num = va_arg(arg, double); + } + + if (!(buff_ptr = double2hex(long_double_num, buff + 512, format))) { + goto conversion_error; + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 's': + if (format.argument_options == wchar_argument) { + wchar_t* wcs_ptr = va_arg(arg, wchar_t*); + + if(wcs_ptr == NULL){ + wcs_ptr = L""; + } + + if ((num_chars = wcstombs(buff, wcs_ptr, sizeof(buff))) < 0) { + goto conversion_error; + } + + buff_ptr = &buff[0]; + } + else { + buff_ptr = va_arg(arg, char *); + } + + if (buff_ptr == NULL) { + buff_ptr = ""; + } + + if (format.alternate_form) { + num_chars = (unsigned char)*buff_ptr++; + + if (format.precision_specified && num_chars > format.precision) { + num_chars = format.precision; + } + } + else if (format.precision_specified) { + num_chars = format.precision; + + if ((string_end = (char*)memchr((unsigned char*)buff_ptr, 0, num_chars)) != 0) { + num_chars = string_end - buff_ptr; + } + } + else { + num_chars = strlen(buff_ptr); + } + + break; + + case 'n': + buff_ptr = va_arg(arg, char *); + + switch (format.argument_options) { + case normal_argument: + *(int*)buff_ptr = chars_written; + break; + case short_argument: + *(short*)buff_ptr = chars_written; + break; + case long_argument: + *(long*)buff_ptr = chars_written; + break; + case long_long_argument: + *(long long*)buff_ptr = chars_written; + break; + } + + continue; + + case 'c': + buff_ptr = buff; + *buff_ptr = va_arg(arg, int); + num_chars = 1; + break; + + case '%': + buff_ptr = buff; + *buff_ptr = '%'; + num_chars = 1; + break; + + case 0xFF: + default: + conversion_error: + num_chars = strlen(curr_format); + chars_written += num_chars; + + if (num_chars && !(*WriteProc)(WriteProcArg, curr_format, num_chars)) { + return -1; + } + + return chars_written; + break; + } + + field_width = num_chars; + + if (format.justification_options != left_justification) { + fill_char = (format.justification_options == zero_fill) ? '0' : ' '; + + if (((*buff_ptr == '+') || (*buff_ptr == '-') || (*buff_ptr == ' ')) && (fill_char == '0')) { + if ((*WriteProc)(WriteProcArg, buff_ptr, 1) == 0) { + return -1; + } + + ++buff_ptr; + num_chars--; + } + + while (field_width < format.field_width) { + if ((*WriteProc)(WriteProcArg, &fill_char, 1) == 0) { + return -1; + } + + ++field_width; + } + } + + if (num_chars && !(*WriteProc)(WriteProcArg, buff_ptr, num_chars)) { + return -1; + } + + if (format.justification_options == left_justification) { + while (field_width < format.field_width) { + char blank = ' '; + + if ((*WriteProc)(WriteProcArg, &blank, 1) == 0) { + return -1; + } + + ++field_width; + } + } + + chars_written += field_width; + } + + return chars_written; +} + +void* __FileWrite(void* pFile, const char* pBuffer, size_t char_num) +{ + return (fwrite(pBuffer, 1, char_num, (FILE*)pFile) == char_num ? pFile : 0); +} + +void* __StringWrite(void* pCtrl, const char* pBuffer, size_t char_num) +{ + size_t chars; + __OutStrCtrl* ctrl = (__OutStrCtrl*)pCtrl; + + chars = ((ctrl->CharsWritten + char_num) <= ctrl->MaxCharCount) + ? char_num + : ctrl->MaxCharCount - ctrl->CharsWritten; + memcpy(ctrl->CharStr + ctrl->CharsWritten, pBuffer, chars); + ctrl->CharsWritten += chars; + return (void*) 1; +} + +int printf(const char* format, ...) +{ + int res; + + if (fwide(stdout, -1) >= 0) { + return -1; + } + + { + va_list args; + va_start(args, format); + res = __pformatter(&__FileWrite, (void*)stdout, format, args); + } + + return res; +} + +int vprintf(const char* format, va_list arg) +{ + int ret; + + if (fwide(stdout, -1) >= 0) { + return -1; + } + + ret = __pformatter(&__FileWrite, (void*)stdout, format, arg); + return ret; +} + +int vsnprintf(char* s, size_t n, const char* format, va_list arg) +{ + int end; + __OutStrCtrl osc; + osc.CharStr = s; + osc.MaxCharCount = n; + osc.CharsWritten = 0; + + end = __pformatter(&__StringWrite, &osc, format, arg); + + if (s) { + s[(end < n) ? end : n - 1] = '\0'; + } + + return end; +} + +int vsprintf(char *s, const char *format, va_list arg) { + return vsnprintf(s, 0xFFFFFFFF, format, arg); +} + +int sprintf(char* s, const char* format, ...) +{ + va_list args; + va_start(args, format); + return vsnprintf(s, 0xFFFFFFFF, format, args); +} diff --git a/src/MSL_C.PPCEABI.bare.H/rand.c b/src/MSL_C.PPCEABI.bare.H/rand.c new file mode 100644 index 00000000..4d57c3e5 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/rand.c @@ -0,0 +1,13 @@ +#include "dolphin.h" + +// rand.c from Runtime library + +u32 next = 1; + +u32 rand(void) +{ + next = 0x41C64E6D * next + 12345; + return (next >> 16) & 0x7FFF; +} + +void srand(u32 seed) { next = seed; } diff --git a/src/MSL_C.PPCEABI.bare.H/s_atan.c b/src/MSL_C.PPCEABI.bare.H/s_atan.c new file mode 100644 index 00000000..6d72b440 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_atan.c @@ -0,0 +1,148 @@ + +/* @(#)s_atan.c 1.3 95/01/18 */ +/** + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* atan(x) + * Method + * 1. Reduce x to positive by atan(x) = -atan(-x). + * 2. According to the integer k=4t+0.25 chopped, t=x, the argument + * is further reduced to one of the following intervals and the + * arctangent of t is evaluated by the corresponding formula: + * + * [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...) + * [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) ) + * [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) ) + * [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) ) + * [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double atanhi[] = { +#else +static double atanhi[] = { +#endif + 4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */ + 7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */ + 9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */ + 1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */ +}; + +#ifdef __STDC__ +static const double atanlo[] = { +#else +static double atanlo[] = { +#endif + 2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */ + 3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */ + 1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */ + 6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */ +}; + +#ifdef __STDC__ +static const double aT[] = { +#else +static double aT[] = { +#endif + 3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */ + -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */ + 1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */ + -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */ + 9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */ + -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */ + 6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */ + -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */ + 4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */ + -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */ + 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */ +}; + +#ifdef __STDC__ +static const double +#else +static double +#endif + one + = 1.0, + huge = 1.0e300; + +#ifdef __STDC__ +double atan(double x) +#else +double atan(x) +double x; +#endif +{ + double w, s1, s2, z; + int ix, hx, id; + + hx = __HI(x); + ix = hx & 0x7fffffff; + if (ix >= 0x44100000) { /* if |x| >= 2^66 */ + if (ix > 0x7ff00000 || (ix == 0x7ff00000 && (__LO(x) != 0))) + return x + x; /* NaN */ + if (hx > 0) + return atanhi[3] + atanlo[3]; + else + return -atanhi[3] - atanlo[3]; + } + if (ix < 0x3fdc0000) { /* |x| < 0.4375 */ + if (ix < 0x3e200000) { /* |x| < 2^-29 */ + if (huge + x > one) + return x; /* raise inexact */ + } + id = -1; + } else { + x = fabs__Fd(x); + if (ix < 0x3ff30000) { /* |x| < 1.1875 */ + if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */ + id = 0; + x = (2.0 * x - one) / (2.0 + x); + } else { /* 11/16<=|x|< 19/16 */ + id = 1; + x = (x - one) / (x + one); + } + } else { + if (ix < 0x40038000) { /* |x| < 2.4375 */ + id = 2; + x = (x - 1.5) / (one + 1.5 * x); + } else { /* 2.4375 <= |x| < 2^66 */ + id = 3; + x = -1.0 / x; + } + } + } + /* end of argument reduction */ + z = x * x; + w = z * z; + /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ + s1 = z + * (aT[0] + + w + * (aT[2] + + w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10]))))); + s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9])))); + if (id < 0) + return x - x * (s1 + s2); + else { + z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x); + return (hx < 0) ? -z : z; + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_copysign.c b/src/MSL_C.PPCEABI.bare.H/s_copysign.c new file mode 100644 index 00000000..d3313078 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_copysign.c @@ -0,0 +1,30 @@ +/* @(#)s_copysign.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * copysign(double x, double y) + * copysign(x,y) returns a value with the magnitude of x and + * with the sign bit of y. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double copysign(double x, double y) +#else + double copysign(x,y) + double x,y; +#endif +{ + __HI(x) = (__HI(x)&0x7fffffff)|(__HI(y)&0x80000000); + return x; +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_cos.c b/src/MSL_C.PPCEABI.bare.H/s_cos.c new file mode 100644 index 00000000..0ceb1875 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_cos.c @@ -0,0 +1,78 @@ + +/* @(#)s_cos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* cos(x) + * Return cosine function of x. + * + * kernel function: + * __kernel_sin ... sine function on [-pi/4,pi/4] + * __kernel_cos ... cosine function on [-pi/4,pi/4] + * __ieee754_rem_pio2 ... argument reduction routine + * + * Method. + * Let S,C and T denote the sin, cos and tan respectively on + * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2 + * in [-pi/4 , +pi/4], and let n = k mod 4. + * We have + * + * n sin(x) cos(x) tan(x) + * ---------------------------------------------------------- + * 0 S C T + * 1 C -S -1/T + * 2 -S -C T + * 3 -C S -1/T + * ---------------------------------------------------------- + * + * Special cases: + * Let trig be any of sin, cos, or tan. + * trig(+-INF) is NaN, with signals; + * trig(NaN) is that NaN; + * + * Accuracy: + * TRIG(x) returns trig(x) nearly rounded + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double cos(double x) +#else + double cos(x) + double x; +#endif +{ + double y[2],z=0.0; + int n, ix; + + /* High word of x. */ + ix = __HI(x); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + if(ix <= 0x3fe921fb) return __kernel_cos(x,z); + + /* cos(Inf or NaN) is NaN */ + else if (ix>=0x7ff00000) return x-x; + + /* argument reduction needed */ + else { + n = __ieee754_rem_pio2(x,y); + switch(n&3) { + case 0: return __kernel_cos(y[0],y[1]); + case 1: return -__kernel_sin(y[0],y[1],1); + case 2: return -__kernel_cos(y[0],y[1]); + default: + return __kernel_sin(y[0],y[1],1); + } + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_floor.c b/src/MSL_C.PPCEABI.bare.H/s_floor.c new file mode 100755 index 00000000..70001539 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_floor.c @@ -0,0 +1,78 @@ +/* @(#)s_floor.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * floor(x) + * Return x rounded toward -inf to integral value + * Method: + * Bit twiddling. + * Exception: + * Inexact flag raised if x not equal to floor(x). + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double huge = 1.0e300; +#else +static double huge = 1.0e300; +#endif + +#ifdef __STDC__ + double floor(double x) +#else + double floor(x) + double x; +#endif +{ + int i0,i1,j0; + unsigned i,j; + i0 = __HI(x); + i1 = __LO(x); + j0 = ((i0>>20)&0x7ff)-0x3ff; + if(j0<20) { + if(j0<0) { /* raise inexact if x != 0 */ + if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */ + if(i0>=0) {i0=i1=0;} + else if(((i0&0x7fffffff)|i1)!=0) + { i0=0xbff00000;i1=0;} + } + } else { + i = (0x000fffff)>>j0; + if(((i0&i)|i1)==0) return x; /* x is integral */ + if(huge+x>0.0) { /* raise inexact flag */ + if(i0<0) i0 += (0x00100000)>>j0; + i0 &= (~i); i1=0; + } + } + } else if (j0>51) { + if(j0==0x400) return x+x; /* inf or NaN */ + else return x; /* x is integral */ + } else { + i = ((unsigned)(0xffffffff))>>(j0-20); + if((i1&i)==0) return x; /* x is integral */ + if(huge+x>0.0) { /* raise inexact flag */ + if(i0<0) { + if(j0==20) i0+=1; + else { + j = i1+(1<<(52-j0)); + if(j= 0x7ff00000 || ((ix | lx) == 0)) + return x; /* 0,inf,nan */ + if (ix < 0x00100000) { /* subnormal */ + x *= two54; + hx = __HI(x); + ix = hx & 0x7fffffff; + *eptr = -54; + } + *eptr += (ix >> 20) - 1022; + hx = (hx & 0x800fffff) | 0x3fe00000; + __HI(x) = hx; + return x; +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_ldexp.c b/src/MSL_C.PPCEABI.bare.H/s_ldexp.c new file mode 100644 index 00000000..ec9ec717 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_ldexp.c @@ -0,0 +1,64 @@ +/* @(#)s_scalbn.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * scalbn (double x, int n) + * scalbn(x,n) returns x* 2**n computed by exponent + * manipulation rather than by actually performing an + * exponentiation or a multiplication. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ +twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ +huge = 1.0e+300, +tiny = 1.0e-300; + +#ifdef __STDC__ + double ldexp (double x, int n) +#else + double ldexp (x,n) + double x; int n; +#endif +{ + int k,hx,lx; + if(!isfinite(x)||x==0.0) return x; + hx = __HI(x); + lx = __LO(x); + k = (hx&0x7ff00000)>>20; /* extract exponent */ + if (k==0) { /* 0 or subnormal x */ + if ((lx|(hx&0x7fffffff))==0) return x; /* +-0 */ + x *= two54; + hx = __HI(x); + k = ((hx&0x7ff00000)>>20) - 54; + if (n< -50000) return tiny*x; /*underflow*/ + } + if (k==0x7ff) return x+x; /* NaN or Inf */ + k = k+n; + if (k > 0x7fe) return huge*copysign(huge,x); /* overflow */ + if (k > 0) /* normal result */ + {__HI(x) = (hx&0x800fffff)|(k<<20); return x;} + if (k <= -54) + if (n > 50000) /* in case integer overflow in n+k */ + return huge*copysign(huge,x); /*overflow*/ + else return tiny*copysign(tiny,x); /*underflow*/ + k += 54; /* subnormal result */ + __HI(x) = (hx&0x800fffff)|(k<<20); + return x*twom54; +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_modf.c b/src/MSL_C.PPCEABI.bare.H/s_modf.c new file mode 100644 index 00000000..8c957d21 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_modf.c @@ -0,0 +1,80 @@ + +/* @(#)s_modf.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * modf(double x, double *iptr) + * return fraction part of x, and return x's integral part in *iptr. + * Method: + * Bit twiddling. + * + * Exception: + * No exception. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double one = 1.0; +#else +static double one = 1.0; +#endif + +#ifdef __STDC__ + double modf(double x, double *iptr) +#else + double modf(x, iptr) + double x,*iptr; +#endif +{ + int i0,i1,j0; + unsigned i; + i0 = __HI(x); /* high x */ + i1 = __LO(x); /* low x */ + j0 = ((i0>>20)&0x7ff)-0x3ff; /* exponent of x */ + if(j0<20) { /* integer part in high x */ + if(j0<0) { /* |x|<1 */ + __HIp(iptr) = i0&0x80000000; + __LOp(iptr) = 0; /* *iptr = +-0 */ + return x; + } else { + i = (0x000fffff)>>j0; + if(((i0&i)|i1)==0) { /* x is integral */ + *iptr = x; + __HI(x) &= 0x80000000; + __LO(x) = 0; /* return +-0 */ + return x; + } else { + __HIp(iptr) = i0&(~i); + __LOp(iptr) = 0; + return x - *iptr; + } + } + } else if (j0>51) { /* no fraction part */ + *iptr = x*one; + __HI(x) &= 0x80000000; + __LO(x) = 0; /* return +-0 */ + return x; + } else { /* fraction part in low x */ + i = ((unsigned)(0xffffffff))>>(j0-20); + if((i1&i)==0) { /* x is integral */ + *iptr = x; + __HI(x) &= 0x80000000; + __LO(x) = 0; /* return +-0 */ + return x; + } else { + __HIp(iptr) = i0; + __LOp(iptr) = i1&(~i); + return x - *iptr; + } + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_sin.c b/src/MSL_C.PPCEABI.bare.H/s_sin.c new file mode 100644 index 00000000..5f09b616 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_sin.c @@ -0,0 +1,78 @@ + +/* @(#)s_sin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* sin(x) + * Return sine function of x. + * + * kernel function: + * __kernel_sin ... sine function on [-pi/4,pi/4] + * __kernel_cos ... cose function on [-pi/4,pi/4] + * __ieee754_rem_pio2 ... argument reduction routine + * + * Method. + * Let S,C and T denote the sin, cos and tan respectively on + * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2 + * in [-pi/4 , +pi/4], and let n = k mod 4. + * We have + * + * n sin(x) cos(x) tan(x) + * ---------------------------------------------------------- + * 0 S C T + * 1 C -S -1/T + * 2 -S -C T + * 3 -C S -1/T + * ---------------------------------------------------------- + * + * Special cases: + * Let trig be any of sin, cos, or tan. + * trig(+-INF) is NaN, with signals; + * trig(NaN) is that NaN; + * + * Accuracy: + * TRIG(x) returns trig(x) nearly rounded + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double sin(double x) +#else + double sin(x) + double x; +#endif +{ + double y[2],z=0.0; + int n, ix; + + /* High word of x. */ + ix = __HI(x); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + if(ix <= 0x3fe921fb) return __kernel_sin(x,z,0); + + /* sin(Inf or NaN) is NaN */ + else if (ix>=0x7ff00000) return x-x; + + /* argument reduction needed */ + else { + n = __ieee754_rem_pio2(x,y); + switch(n&3) { + case 0: return __kernel_sin(y[0],y[1],1); + case 1: return __kernel_cos(y[0],y[1]); + case 2: return -__kernel_sin(y[0],y[1],1); + default: + return -__kernel_cos(y[0],y[1]); + } + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_tan.c b/src/MSL_C.PPCEABI.bare.H/s_tan.c new file mode 100644 index 00000000..8a0b9292 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_tan.c @@ -0,0 +1,72 @@ + +/* @(#)s_tan.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* tan(x) + * Return tangent function of x. + * + * kernel function: + * __kernel_tan ... tangent function on [-pi/4,pi/4] + * __ieee754_rem_pio2 ... argument reduction routine + * + * Method. + * Let S,C and T denote the sin, cos and tan respectively on + * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2 + * in [-pi/4 , +pi/4], and let n = k mod 4. + * We have + * + * n sin(x) cos(x) tan(x) + * ---------------------------------------------------------- + * 0 S C T + * 1 C -S -1/T + * 2 -S -C T + * 3 -C S -1/T + * ---------------------------------------------------------- + * + * Special cases: + * Let trig be any of sin, cos, or tan. + * trig(+-INF) is NaN, with signals; + * trig(NaN) is that NaN; + * + * Accuracy: + * TRIG(x) returns trig(x) nearly rounded + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double tan(double x) +#else + double tan(x) + double x; +#endif +{ + double y[2],z=0.0; + int n, ix; + + /* High word of x. */ + ix = __HI(x); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + if(ix <= 0x3fe921fb) return __kernel_tan(x,z,1); + + /* tan(Inf or NaN) is NaN */ + else if (ix>=0x7ff00000) return x-x; /* NaN */ + + /* argument reduction needed */ + else { + n = __ieee754_rem_pio2(x,y); + return __kernel_tan(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even + -1 -- n odd */ + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/scanf.c b/src/MSL_C.PPCEABI.bare.H/scanf.c new file mode 100644 index 00000000..a8f273ec --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/scanf.c @@ -0,0 +1,34 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h" + +int __StringRead(void* pPtr, int ch, int act) +{ + char ret; + __InStrCtrl* Iscp = (__InStrCtrl*)pPtr; + + switch (act) { + case __GetAChar: + ret = *(Iscp->NextChar); + + if (ret == '\0') { + Iscp->NullCharDetected = 1; + return -1; + } else { + Iscp->NextChar++; + return ret; + } + + case __UngetAChar: + if (Iscp->NullCharDetected == 0) { + Iscp->NextChar--; + } else { + Iscp->NullCharDetected = 0; + } + + return ch; + + case __TestForError: + return Iscp->NullCharDetected; + } + + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/signal.c b/src/MSL_C.PPCEABI.bare.H/signal.c new file mode 100755 index 00000000..3967650d --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/signal.c @@ -0,0 +1,24 @@ +#include +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h" + +__signal_func_ptr signal_funcs[6]; + +int raise(int sig) { + __signal_func_ptr temp_r31; + + if (sig < 1 || sig > 6) { + return -1; + } + temp_r31 = signal_funcs[sig - 1]; + if ((unsigned long) temp_r31 != 1) { + signal_funcs[sig - 1] = NULL; + } + if ((unsigned long) temp_r31 == 1 || (temp_r31 == NULL && sig == 1)) { + return 0; + } + if (temp_r31 == NULL) { + exit(0); + } + temp_r31(sig); + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/string.c b/src/MSL_C.PPCEABI.bare.H/string.c new file mode 100644 index 00000000..895f6662 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/string.c @@ -0,0 +1,274 @@ +#include "string.h" +#include "stddef.h" + +#define K1 0x80808080 +#define K2 0xFEFEFEFF + +size_t strlen(const char* str) +{ + size_t len = -1; + unsigned char* p = (unsigned char*)str - 1; + + do { + len++; + } while (*++p); + + return len; +} + +char* strcpy(char* dst, const char* src) +{ + register unsigned char *destb, *fromb; + register unsigned long w, t, align; + + fromb = (unsigned char*)src; + destb = (unsigned char*)dst; + + if ((align = ((int)fromb & 3)) != ((int)destb & 3)) { + goto bytecopy; + } + + if (align) { + if ((*destb = *fromb) == 0) { + return dst; + } + + for (align = 3 - align; align; align--) { + if ((*(++destb) = *(++fromb)) == 0) { + return dst; + } + } + ++destb; + ++fromb; + } + + w = *((int*)(fromb)); + + t = w + K2; + + t &= K1; + if (t) { + goto bytecopy; + } + --((int*)(destb)); + + do { + *(++((int*)(destb))) = w; + w = *(++((int*)(fromb))); + + t = w + K2; + t &= K1; + if (t) { + goto adjust; + } + } while (1); + +adjust: + ++((int*)(destb)); + +bytecopy: + if ((*destb = *fromb) == 0) { + return dst; + } + + do { + if ((*(++destb) = *(++fromb)) == 0) { + return dst; + } + } while (1); + + return dst; +} + +char* strncpy(char* dst, const char* src, size_t n) +{ + const unsigned char* p = (const unsigned char*)src - 1; + unsigned char* q = (unsigned char*)dst - 1; + + n++; + while (--n) { + if (!(*++q = *++p)) { + while (--n) { + *++q = 0; + } + break; + } + } + + return dst; +} + +// TODO: same implementation as strncpy? +char* strcat(char* dst, const char* src, size_t n) +{ + const unsigned char* p = (const unsigned char*)src - 1; + unsigned char* q = (unsigned char*)dst - 1; + + n++; + while (--n) { + if (!(*++q = *++p)) { + while (--n) { + *++q = 0; + } + break; + } + } + + return dst; +} + +int strcmp(const char* str1, const char* str2) +{ + register unsigned char* left = (unsigned char*)str1; + register unsigned char* right = (unsigned char*)str2; + unsigned long align, l1, r1, x; + + l1 = *left; + r1 = *right; + if (l1 - r1) { + return l1 - r1; + } + + if ((align = ((int)left & 3)) != ((int)right & 3)) { + goto bytecopy; + } + + if (align) { + if (l1 == 0) { + return 0; + } + for (align = 3 - align; align; align--) { + l1 = *(++left); + r1 = *(++right); + if (l1 - r1) { + return l1 - r1; + } + if (l1 == 0) { + return 0; + } + } + left++; + right++; + } + + l1 = *(int*)left; + r1 = *(int*)right; + x = l1 + K2; + if (x & K1) { + goto adjust; + } + + while (l1 == r1) { + l1 = *(++((int*)(left))); + r1 = *(++((int*)(right))); + x = l1 + K2; + if (x & K1) { + goto adjust; + } + } + + if (l1 > r1) { + return 1; + } + return -1; + +adjust: + l1 = *left; + r1 = *right; + if (l1 - r1) { + return l1 - r1; + } + +bytecopy: + if (l1 == 0) { + return 0; + } + + do { + l1 = *(++left); + r1 = *(++right); + if (l1 - r1) { + return l1 - r1; + } + if (l1 == 0) { + return 0; + } + } while (1); +} + +int strncmp(const char* str1, const char* str2, size_t n) +{ + const unsigned char* p1 = (unsigned char*)str1 - 1; + const unsigned char* p2 = (unsigned char*)str2 - 1; + unsigned long c1, c2; + + n++; + + while (--n) + if ((c1 = *++p1) != (c2 = *++p2)) + return (c1 - c2); + else if (!c1) + break; + return 0; +} + +char* strchr(const char* str, int c) +{ + const unsigned char* p = (unsigned char*)str - 1; + unsigned long chr = (c & 0xFF); + + unsigned long ch; + while (ch = *++p) { + if (ch == chr) { + return (char*)p; + } + } + + return chr ? NULL : (char*)p; +} + +char* strrchr(const char* str, int c) +{ + const unsigned char* p = (unsigned char*)str - 1; + const unsigned char* q = NULL; + unsigned long chr = (c & 0xFF); + + unsigned long ch; + while (ch = *++p) { + if (ch == chr) { + q = p; + } + } + + if (q != NULL) { + return (char*)q; + } + + return chr ? NULL : (char*)p; +} + +char* strstr(const char* str, const char* pat) +{ + const unsigned char* s1 = (const unsigned char*)str - 1; + const unsigned char* p1 = (const unsigned char*)pat - 1; + unsigned long firstc, c1, c2; + + if ((pat == 0) || (!(firstc = *++p1))) { + return (char*)str; + } + + while (c1 = *++s1) { + if (c1 == firstc) { + const unsigned char* s2 = s1 - 1; + const unsigned char* p2 = p1 - 1; + + while ((c1 = *++s2) == (c2 = *++p2) && c1) + ; + + if (!c2) + return (char*)s1; + } + } + + return NULL; +} diff --git a/src/MSL_C.PPCEABI.bare.H/uart_console_io.c b/src/MSL_C.PPCEABI.bare.H/uart_console_io.c new file mode 100755 index 00000000..e26388da --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/uart_console_io.c @@ -0,0 +1,32 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +static inline int __init_uart_console(void) { + int err = 0; + static int initialized = 0; + + if (initialized == 0) { + err = InitializeUART(57600); + if (err == 0) + initialized = 1; + } + + return (err); +} + +int __write_console(__file_handle handle, unsigned char* buffer, size_t* count, __idle_proc idle_proc) { + if (__init_uart_console() != 0) { + return 1; + } + + if (WriteUARTN(buffer, *count) != 0) { + *count = 0; + return 1; + } + + __TRK_write_console(handle, buffer, count, idle_proc); + return 0; +} + +int __close_console() { + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/w_acos.c b/src/MSL_C.PPCEABI.bare.H/w_acos.c new file mode 100644 index 00000000..dfc4c031 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/w_acos.c @@ -0,0 +1,38 @@ + +/* @(#)w_acos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * wrap_acos(x) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double acos(double x) /* wrapper acos */ +#else + double acos(x) /* wrapper acos */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_acos(x); +#else + double z; + z = __ieee754_acos(x); + if(_LIB_VERSION == _IEEE_ || isnan(x)) return z; + if(fabs(x)>1.0) { + return __kernel_standard(x,x,1); /* acos(|x|>1) */ + } else + return z; +#endif +} diff --git a/src/MSL_C.PPCEABI.bare.H/w_asin.c b/src/MSL_C.PPCEABI.bare.H/w_asin.c new file mode 100644 index 00000000..d21c6ce6 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/w_asin.c @@ -0,0 +1,38 @@ +/* @(#)w_asin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* + * wrapper asin(x) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double asin(double x) /* wrapper asin */ +#else + double asin(x) /* wrapper asin */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_asin(x); +#else + double z; + z = __ieee754_asin(x); + if(_LIB_VERSION == _IEEE_ || isnan(x)) return z; + if(fabs(x)>1.0) { + return __kernel_standard(x,x,2); /* asin(|x|>1) */ + } else + return z; +#endif +} diff --git a/src/MSL_C.PPCEABI.bare.H/w_atan2.c b/src/MSL_C.PPCEABI.bare.H/w_atan2.c new file mode 100644 index 00000000..42f1b297 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/w_atan2.c @@ -0,0 +1,39 @@ +/* @(#)w_atan2.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* + * wrapper atan2(y,x) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +double atan2(double y, double x) /* wrapper atan2 */ +#else +double atan2(y, x) /* wrapper atan2 */ +double y, x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_atan2(y, x); +#else + double z; + z = __ieee754_atan2(y, x); + if (_LIB_VERSION == _IEEE_ || isnan(x) || isnan(y)) + return z; + if (x == 0.0 && y == 0.0) { + return __kernel_standard(y, x, 3); /* atan2(+-0,+-0) */ + } else + return z; +#endif +} diff --git a/src/MSL_C.PPCEABI.bare.H/w_fmod.c b/src/MSL_C.PPCEABI.bare.H/w_fmod.c new file mode 100644 index 00000000..57c5cc16 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/w_fmod.c @@ -0,0 +1,37 @@ +/* @(#)w_fmod.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * wrapper fmod(x,y) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ + double fmod(double x, double y) /* wrapper fmod */ +#else + double fmod(x,y) /* wrapper fmod */ + double x,y; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_fmod(x,y); +#else + double z; + z = __ieee754_fmod(x,y); + if(_LIB_VERSION == _IEEE_ ||isnan(y)||isnan(x)) return z; + if(y==0.0) { + return __kernel_standard(x,y,27); /* fmod(x,0) */ + } else + return z; +#endif +} diff --git a/src/MSL_C.PPCEABI.bare.H/w_pow.c b/src/MSL_C.PPCEABI.bare.H/w_pow.c new file mode 100644 index 00000000..99c8e3b9 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/w_pow.c @@ -0,0 +1,60 @@ + + +/* @(#)w_pow.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * wrapper pow(x,y) return x**y + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + + +#ifdef __STDC__ + double pow(double x, double y) /* wrapper pow */ +#else + double pow(x,y) /* wrapper pow */ + double x,y; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_pow(x,y); +#else + double z; + z=__ieee754_pow(x,y); + if(_LIB_VERSION == _IEEE_|| isnan(y)) return z; + if(isnan(x)) { + if(y==0.0) + return __kernel_standard(x,y,42); /* pow(NaN,0.0) */ + else + return z; + } + if(x==0.0){ + if(y==0.0) + return __kernel_standard(x,y,20); /* pow(0.0,0.0) */ + if(finite(y)&&y<0.0) + return __kernel_standard(x,y,23); /* pow(0.0,negative) */ + return z; + } + if(!finite(z)) { + if(finite(x)&&finite(y)) { + if(isnan(z)) + return __kernel_standard(x,y,24); /* pow neg**non-int */ + else + return __kernel_standard(x,y,21); /* pow overflow */ + } + } + if(z==0.0&&finite(x)&&finite(y)) + return __kernel_standard(x,y,22); /* pow underflow */ + return z; +#endif +} diff --git a/src/MSL_C.PPCEABI.bare.H/wchar_io.c b/src/MSL_C.PPCEABI.bare.H/wchar_io.c new file mode 100644 index 00000000..77f4b5fa --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/wchar_io.c @@ -0,0 +1,22 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" + +int fwide(FILE* file, int mode) +{ + if (!file || file->file_mode.file_kind == __closed_file) { + return 0; + } + + switch (file->file_mode.file_orientation) { + case UNORIENTED: + if (mode > 0) { + file->file_mode.file_orientation = WIDE_ORIENTED; + } else if (mode < 0) { + file->file_mode.file_orientation = CHAR_ORIENTED; + } + return mode; + case WIDE_ORIENTED: + return 1; + case CHAR_ORIENTED: + return -1; + } +} diff --git a/src/OdemuExi2/DebuggerDriver.c b/src/OdemuExi2/DebuggerDriver.c new file mode 100644 index 00000000..b791b28b --- /dev/null +++ b/src/OdemuExi2/DebuggerDriver.c @@ -0,0 +1,653 @@ +#include +#include +#include + +typedef void (*MTRCallbackType)(int); + +static MTRCallbackType MTRCallback; + +static void (*DBGCallback)(u32, OSContext *); + +static u32 SendMailData; + +static s32 RecvDataLeng; + +static u8 *pEXIInputFlag; + +static u8 EXIInputFlag; + +static u8 SendCount = 0x80; + +#define IS_TRUE(x) ((x) != FALSE) +#define IS_FALSE(x) !IS_TRUE(x) +#define ROUND_UP(x, align) (((x) + (align)-1) & (-(align))) + +#if VERSION == VERSION_NO_ENG0 + +static void DBGEXIInit(); +static u32 DBGEXISelect(u32 v); +static void CheckMailBox(void); +static void MWCallback(u32 a, OSContext *b); +static void DBGHandler(s16 a, OSContext *b); + +void DBClose(void) { } + +void DBOpen(void) { } + +BOOL DBWrite(void *src, u32 size) +{ + u32 v; + u32 busyFlag; + BOOL interrupts = OSDisableInterrupts(); + + do { + _DBGReadStatus(&busyFlag); + } while (busyFlag & 2); + + SendCount++; + v = ((SendCount & 1) ? 0x1000 : 0); + + while (!DBGWrite(v | 0x1c000, src, ROUND_UP(size, 4))) + ; + + do { + _DBGReadStatus(&busyFlag); + } while (busyFlag & 2); + + v = SendCount; + while (!DBGWriteMailbox((0x1f000000) | v << 0x10 | size)) + ; + + do { + while (!_DBGReadStatus(&busyFlag)) + ; + } while (busyFlag & 2); + + OSRestoreInterrupts(interrupts); + + return 0; +} + +BOOL DBRead(u32 *buffer, s32 count) +{ + u32 interrupts = OSDisableInterrupts(); + u32 v = SendMailData & 0x10000 ? 0x1000 : 0; + + DBGRead(v + 0x1e000, buffer, ROUND_UP(count, 4)); + + RecvDataLeng = 0; + EXIInputFlag = 0; + + OSRestoreInterrupts(interrupts); + + return 0; +} + +u32 DBQueryData(void) +{ + BOOL interrupts; + EXIInputFlag = 0; + if (!RecvDataLeng) { + interrupts = OSDisableInterrupts(); + CheckMailBox(); +#if VERSION > 0 + OSRestoreInterrupts(interrupts); + } +#else + } + OSRestoreInterrupts(interrupts); +#endif + return RecvDataLeng; +} + +inline static void CheckMailBox(void) +{ + u32 v; + DBGReadStatus(&v); + if (v & 1) { + DBGReadMailbox(&v); + v &= 0x1fffffff; + + if ((v & 0x1f000000) == 0x1f000000) { + SendMailData = v; + RecvDataLeng = v & 0x7fff; + EXIInputFlag = 1; + } + } +} + +void DBInitInterrupts(void) +{ + __OSMaskInterrupts(0x18000); + __OSMaskInterrupts(0x40); + DBGCallback = &MWCallback; + __OSSetInterruptHandler(0x19, DBGHandler); + __OSUnmaskInterrupts(0x40); +} + +void DBInitComm(u8 **a, MTRCallbackType b) +{ + BOOL interrupts = OSDisableInterrupts(); + { + pEXIInputFlag = (u8 *)EXIInputFlag; + pEXIInputFlag = &EXIInputFlag; + + *a = pEXIInputFlag; + + MTRCallback = b; + + DBGEXIInit(); + } + OSRestoreInterrupts(interrupts); +} + +inline static BOOL _DBGReadStatus(u32 *p1) +{ + BOOL total = FALSE; + u32 v; + + DBGEXISelect(4); + + v = 1 << 30; + total |= IS_FALSE(DBGEXIImm(&v, 2, 1)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIImm(p1, 4, 0)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} + +static void DBGHandler(s16 a, OSContext *b) +{ + *__PIRegs = 0x1000; + if (DBGCallback) { + DBGCallback(a, b); + } +} + +static void MWCallback(u32 a, OSContext *b) +{ + EXIInputFlag = TRUE; + if (MTRCallback) { + MTRCallback(0); + } +} + +#pragma push +#pragma dont_inline on +static BOOL DBGReadStatus(u32 *p1) +{ + return _DBGReadStatus(p1); +} +#pragma pop + +static BOOL DBGWrite(u32 count, void *buffer, s32 param3) +{ + BOOL total = FALSE; + u32 *buf_p = (u32 *)buffer; + u32 v1; + u32 v; + + DBGEXISelect(4); + + v1 = (count & 0x1fffc) << 8 | 0xa0000000; + total |= IS_FALSE(DBGEXIImm(&v1, sizeof(v1), 1)); + total |= IS_FALSE(DBGEXISync()); + + while (param3 != 0) { + v = *buf_p++; + + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 1)); + total |= IS_FALSE(DBGEXISync()); + + param3 -= 4; + if (param3 < 0) { + param3 = 0; + } + } + + total |= IS_FALSE(DBGEXIDeselect()); + return IS_FALSE(total); +} + +static BOOL DBGRead(u32 count, u32 *buffer, s32 param3) +{ + BOOL total = FALSE; + u32 *buf_p = (u32 *)buffer; + u32 v1; + u32 v; + + DBGEXISelect(4); + + v1 = (count & 0x1fffc) << 8 | 0x20000000; + total |= IS_FALSE(DBGEXIImm(&v1, sizeof(v1), 1)); + total |= IS_FALSE(DBGEXISync()); + + while (param3) { + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 0)); + total |= IS_FALSE(DBGEXISync()); + + *buf_p++ = v; + + param3 -= 4; + if (param3 < 0) { + param3 = 0; + } + } + + total |= IS_FALSE(DBGEXIDeselect()); + return IS_FALSE(total); +} + +#define TO_BOOL(x) (((u32)__cntlzw((x)) >> 5)) +#pragma push +#pragma dont_inline on +static BOOL DBGReadMailbox(u32* p1) +{ + u32 v; + u32 total = 0; + u32 stack0, stack1, stack2; + + DBGEXISelect(4); + + v = 0x60000000; + total |= !(DBGEXIImm(&v, 2, 1) != 0); + DBGEXISync(); + + total |= !(DBGEXIImm(p1, 4, 0) != 0); + DBGEXISync(); + + DBGEXIDeselect(); + total = TO_BOOL(total); + return total; +} +#pragma pop + +inline static BOOL DBGWriteMailbox(u32 p1) +{ + u32 cmd = 0xc0000000; + u32 v; + u32 base = p1; + BOOL total = FALSE; + + DBGEXISelect(4); + v = (base & 0x1fffffff) | (cmd); + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 1)); + total |= IS_FALSE(DBGEXISync()); + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} + +static BOOL DBGEXIImm(void *buffer, s32 bytecounter, u32 write) +{ + u8 *tempPointer; + u32 writeOutValue; + int i; + + if (write) { + tempPointer = buffer; + writeOutValue = 0; + for (i = 0; i < bytecounter; i++) { + u8 *temp = ((u8 *)buffer) + i; + writeOutValue |= *temp << ((3 - i) << 3); + } + __EXIRegs[14] = writeOutValue; + } + + __EXIRegs[13] = 1 | write << 2 | (bytecounter - 1) << 4; + DBGEXISync(); + + if (!write) { + writeOutValue = __EXIRegs[14]; + tempPointer = buffer; + for (i = 0; i < bytecounter; i++) { + *tempPointer++ = writeOutValue >> ((3 - i) << 3); + } + } + + return TRUE; +} + +inline static BOOL DBGEXISync() +{ + while (__EXIRegs[13] & 1) + ; + + return TRUE; +} + +inline BOOL DBGEXIDeselect(void) +{ + __EXIRegs[10] &= 0x405; + return TRUE; +} + +inline static u32 DBGEXISelect(u32 v) +{ + u32 regs = __EXIRegs[10]; + regs &= 0x405; + regs |= 0x80 | (v << 4); + __EXIRegs[10] = regs; + return TRUE; +} + +inline static void DBGEXIInit() +{ + __OSMaskInterrupts(0x18000); + __EXIRegs[10] = 0; +} + +#else + +inline void DBGEXIInit() +{ + __OSMaskInterrupts(0x18000); + __EXIRegs[10] = 0; +} + +inline static u32 DBGEXISelect(u32 v) +{ + u32 regs = __EXIRegs[10]; + regs &= 0x405; + regs |= 0x80 | (v << 4); + __EXIRegs[10] = regs; + return TRUE; +} + +inline BOOL DBGEXIDeselect(void) +{ + __EXIRegs[10] &= 0x405; + return TRUE; +} + +inline static BOOL DBGEXISync() +{ + while (__EXIRegs[13] & 1) + ; + + return TRUE; +} + +static BOOL DBGEXIImm(void *buffer, s32 bytecounter, u32 write) +{ + u8 *tempPointer; + u32 writeOutValue; + int i; + + if (write) { + tempPointer = buffer; + writeOutValue = 0; + for (i = 0; i < bytecounter; i++) { + u8 *temp = ((u8 *)buffer) + i; + writeOutValue |= *temp << ((3 - i) << 3); + } + __EXIRegs[14] = writeOutValue; + } + + __EXIRegs[13] = 1 | write << 2 | (bytecounter - 1) << 4; + DBGEXISync(); + + if (!write) { + writeOutValue = __EXIRegs[14]; + tempPointer = buffer; + for (i = 0; i < bytecounter; i++) { + *tempPointer++ = writeOutValue >> ((3 - i) << 3); + } + } + + return TRUE; +} + +inline static BOOL DBGWriteMailbox(u32 p1) +{ + u32 cmd = 0xc0000000; + u32 v; + u32 base = p1; + BOOL total = FALSE; + + DBGEXISelect(4); + v = (base & 0x1fffffff) | (cmd); + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 1)); + total |= IS_FALSE(DBGEXISync()); + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} + +#pragma dont_inline on +static BOOL DBGReadMailbox(u32 *p1) +{ + BOOL total = FALSE; + u32 v; + + DBGEXISelect(4); + + v = 0x60000000; + total |= IS_FALSE(DBGEXIImm(&v, 2, 1)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIImm(p1, 4, 0)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} +#pragma dont_inline reset + +static BOOL DBGRead(u32 count, u32 *buffer, s32 param3) +{ + BOOL total = FALSE; + u32 *buf_p = (u32 *)buffer; + u32 v1; + u32 v; + + DBGEXISelect(4); + + v1 = (count & 0x1fffc) << 8 | 0x20000000; + total |= IS_FALSE(DBGEXIImm(&v1, sizeof(v1), 1)); + total |= IS_FALSE(DBGEXISync()); + + while (param3) { + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 0)); + total |= IS_FALSE(DBGEXISync()); + + *buf_p++ = v; + + param3 -= 4; + if (param3 < 0) { + param3 = 0; + } + } + + total |= IS_FALSE(DBGEXIDeselect()); + return IS_FALSE(total); +} + +static BOOL DBGWrite(u32 count, void *buffer, s32 param3) +{ + BOOL total = FALSE; + u32 *buf_p = (u32 *)buffer; + u32 v1; + u32 v; + + DBGEXISelect(4); + + v1 = (count & 0x1fffc) << 8 | 0xa0000000; + total |= IS_FALSE(DBGEXIImm(&v1, sizeof(v1), 1)); + total |= IS_FALSE(DBGEXISync()); + + while (param3 != 0) { + v = *buf_p++; + + total |= IS_FALSE(DBGEXIImm(&v, sizeof(v), 1)); + total |= IS_FALSE(DBGEXISync()); + + param3 -= 4; + if (param3 < 0) { + param3 = 0; + } + } + + total |= IS_FALSE(DBGEXIDeselect()); + return IS_FALSE(total); +} + +inline static BOOL _DBGReadStatus(u32 *p1) +{ + BOOL total = FALSE; + u32 v; + + DBGEXISelect(4); + + v = 1 << 30; + total |= IS_FALSE(DBGEXIImm(&v, 2, 1)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIImm(p1, 4, 0)); + total |= IS_FALSE(DBGEXISync()); + + total |= IS_FALSE(DBGEXIDeselect()); + + return IS_FALSE(total); +} + +#pragma dont_inline on +static BOOL DBGReadStatus(u32 *p1) +{ + return _DBGReadStatus(p1); +} +#pragma dont_inline reset + +static void MWCallback(u32 a, OSContext *b) +{ + EXIInputFlag = TRUE; + if (MTRCallback) { + MTRCallback(0); + } +} + +static void DBGHandler(s16 a, OSContext *b) +{ + *__PIRegs = 0x1000; + if (DBGCallback) { + DBGCallback(a, b); + } +} + +void DBInitComm(u8 **a, MTRCallbackType b) +{ + BOOL interrupts = OSDisableInterrupts(); + { + pEXIInputFlag = (u8 *)EXIInputFlag; + pEXIInputFlag = &EXIInputFlag; + + *a = pEXIInputFlag; + + MTRCallback = b; + + DBGEXIInit(); + } + OSRestoreInterrupts(interrupts); +} + +void DBInitInterrupts(void) +{ + __OSMaskInterrupts(0x18000); + __OSMaskInterrupts(0x40); + DBGCallback = &MWCallback; + __OSSetInterruptHandler(0x19, DBGHandler); + __OSUnmaskInterrupts(0x40); +} + +inline static void CheckMailBox(void) +{ + u32 v; + DBGReadStatus(&v); + if (v & 1) { + DBGReadMailbox(&v); + v &= 0x1fffffff; + + if ((v & 0x1f000000) == 0x1f000000) { + SendMailData = v; + RecvDataLeng = v & 0x7fff; + EXIInputFlag = 1; + } + } +} + +u32 DBQueryData(void) +{ + BOOL interrupts; + EXIInputFlag = 0; + if (!RecvDataLeng) { + interrupts = OSDisableInterrupts(); + CheckMailBox(); +#if VERSION > 0 + OSRestoreInterrupts(interrupts); + } +#else + } + OSRestoreInterrupts(interrupts); +#endif + return RecvDataLeng; +} + +BOOL DBRead(u32 *buffer, s32 count) +{ + u32 interrupts = OSDisableInterrupts(); + u32 v = SendMailData & 0x10000 ? 0x1000 : 0; + + DBGRead(v + 0x1e000, buffer, ROUND_UP(count, 4)); + + RecvDataLeng = 0; + EXIInputFlag = 0; + + OSRestoreInterrupts(interrupts); + + return 0; +} + +BOOL DBWrite(void *src, u32 size) +{ + u32 v; + u32 busyFlag; + BOOL interrupts = OSDisableInterrupts(); + + do { + _DBGReadStatus(&busyFlag); + } while (busyFlag & 2); + + SendCount++; + v = ((SendCount & 1) ? 0x1000 : 0); + + while (!DBGWrite(v | 0x1c000, src, ROUND_UP(size, 4))) + ; + + do { + _DBGReadStatus(&busyFlag); + } while (busyFlag & 2); + + v = SendCount; + while (!DBGWriteMailbox((0x1f000000) | v << 0x10 | size)) + ; + + do { + while (!_DBGReadStatus(&busyFlag)) + ; + } while (busyFlag & 2); + + OSRestoreInterrupts(interrupts); + + return 0; +} + +void DBOpen(void) { } + +void DBClose(void) { } + +#endif diff --git a/src/REL/E3setupDLL/main.c b/src/REL/E3setupDLL/main.c index 8794d41c..a080e2de 100644 --- a/src/REL/E3setupDLL/main.c +++ b/src/REL/E3setupDLL/main.c @@ -453,10 +453,10 @@ static s16 lbl_2_data_31E[] = { }; static u32 playerCntMessTbl[] = { - 0x00220002, - 0x00220003, - 0x00220004, - 0x00220001 + MAKE_MESSID(0x22, 0x02), + MAKE_MESSID(0x22, 0x03), + MAKE_MESSID(0x22, 0x04), + MAKE_MESSID(0x22, 0x01) }; static void UpdatePlayerCnt(omObjData *object) @@ -602,16 +602,16 @@ static void InitPlayerCnt(omObjData *object) HuSprAttrSet(group, index, HUSPR_ATTR_DISPOFF); HuSprAttrSet(index2, index, HUSPR_ATTR_DISPOFF); } - HuWinMesMaxSizeGet(1, sizeMax, 0x220000); + HuWinMesMaxSizeGet(1, sizeMax, MAKE_MESSID(0x22, 0x00)); index2 = HuWinCreate(-10000, 26, sizeMax[0], sizeMax[1], 0); work->winHeader = index2; HuWinMesColSet(index2, 4); HuWinBGTPLvlSet(index2, 0); HuWinMesSpeedSet(index2, 0); - HuWinMesSet(index2, 0x220000); + HuWinMesSet(index2, MAKE_MESSID(0x22, 0x00)); work->playerCntOld = work->playerCnt = configE3.playerCnt; mess = playerCntMessTbl[work->playerCnt]; - HuWinMesMaxSizeGet(4, sizeMax, 0x220001, 0x220002, 0x220003, 0x220004); + HuWinMesMaxSizeGet(4, sizeMax, MAKE_MESSID(0x22, 0x01), MAKE_MESSID(0x22, 0x02), MAKE_MESSID(0x22, 0x03), MAKE_MESSID(0x22, 0x04)); index2 = HuWinCreate(-10000, 58, sizeMax[0], sizeMax[1], 0); work->winPlayer = index2; work->winSize = *(Vec2f *)(sizeMax); //FIXME: Remove Cast @@ -1143,8 +1143,8 @@ typedef struct e3_rumble_cfg_work { } E3RumbleCfgWork; static u32 rumbleMess[] = { - 0x220008, - 0x220007 + MAKE_MESSID(0x22, 0x08), + MAKE_MESSID(0x22, 0x07) }; static void UpdateRumbleCfg(omObjData *object) @@ -1283,16 +1283,16 @@ static void InitRumbleCfg(omObjData *object) HuSprAttrSet(group, index, HUSPR_ATTR_DISPOFF); HuSprAttrSet(index2, index, HUSPR_ATTR_DISPOFF); } - HuWinMesMaxSizeGet(1, sizeMax, 0x220006); + HuWinMesMaxSizeGet(1, sizeMax, MAKE_MESSID(0x22, 0x06)); index2 = HuWinCreate(-10000, 267, sizeMax[0], sizeMax[1], 0); work->winHeader = index2; HuWinMesColSet(index2, 4); HuWinBGTPLvlSet(index2, 0); HuWinMesSpeedSet(index2, 0); - HuWinMesSet(index2, 0x220006); + HuWinMesSet(index2, MAKE_MESSID(0x22, 0x06)); work->rumbleValOld = work->rumbleVal = configE3.rumble; mess = rumbleMess[work->rumbleVal]; - HuWinMesMaxSizeGet(2, sizeMax, 0x220007, 0x220008); + HuWinMesMaxSizeGet(2, sizeMax, MAKE_MESSID(0x22, 0x07), MAKE_MESSID(0x22, 0x08)); index2 = HuWinCreate(-10000, 299, sizeMax[0], sizeMax[1], 0); work->winValue = index2; work->winSize = *(Vec2f *)(sizeMax); //FIXME: Remove Cast @@ -1366,12 +1366,12 @@ static void UpdateModeSel(omObjData *object) object->work[2] = 2; work->boardOld = -1; HuWinMesColSet(work->winMode, 4); - HuWinMesMaxSizeGet(1, winSize, 0x22000F); + HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(0x22, 0x0F)); HuWinCenterPosSet(work->winMode, (work->winSizeMode.x-winSize[0])/-2.0f, (work->winSizeMode.y-winSize[1])/-2.0f); - HuWinMesSet(work->winMode, 0x22000F); - HuWinMesMaxSizeGet(1, winSize, 0x220010); + HuWinMesSet(work->winMode, MAKE_MESSID(0x22, 0x0F)); + HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(0x22, 0x10)); HuWinCenterPosSet(work->winBoard, (work->winSizeBoard.x-winSize[0])/-2.0f, (work->winSizeBoard.y-winSize[1])/-2.0f); - HuWinMesSet(work->winBoard, 0x220010); + HuWinMesSet(work->winBoard, MAKE_MESSID(0x22, 0x10)); } } else if(btnDown & PAD_BUTTON_B) { HuAudFXPlay(3); @@ -1405,12 +1405,12 @@ static void UpdateModeSel(omObjData *object) work->modeOld = -1; object->work[2] = 1; HuWinMesColSet(work->winMode, 4); - HuWinMesMaxSizeGet(1, winSize, 0x220009); + HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(0x22, 0x09)); HuWinCenterPosSet(work->winMode, (work->winSizeMode.x-winSize[0])/-2.0f, (work->winSizeMode.y-winSize[1])/-2.0f); - HuWinMesSet(work->winMode, 0x220009); - HuWinMesMaxSizeGet(1, winSize, 0x22000A); + HuWinMesSet(work->winMode, MAKE_MESSID(0x22, 0x09)); + HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(0x22, 0x0A)); HuWinCenterPosSet(work->winBoard, (work->winSizeBoard.x-winSize[0])/-2.0f, (work->winSizeBoard.y-winSize[1])/-2.0f); - HuWinMesSet(work->winBoard, 0x22000A); + HuWinMesSet(work->winBoard, MAKE_MESSID(0x22, 0x0A)); } else if(btnDown & PAD_BUTTON_LEFT) { HuAudFXPlay(0); work->board--; @@ -1504,23 +1504,23 @@ static void InitModeSel(omObjData *object) index++; HuSprAttrSet(group, 0, HUSPR_ATTR_DISPOFF); HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuWinMesMaxSizeGet(2, &work->winSizeMode.x, 0x220009, 0x22000F); + HuWinMesMaxSizeGet(2, &work->winSizeMode.x, MAKE_MESSID(0x22, 0x09), MAKE_MESSID(0x22, 0x0F)); index2 = HuWinCreate(-10000, 350, work->winSizeMode.x, work->winSizeMode.y, 0); work->winMode = index2; HuWinMesColSet(index2, 4); HuWinBGTPLvlSet(index2, 0); HuWinMesSpeedSet(index2, 0); - HuWinMesMaxSizeGet(1, size, 0x220009); + HuWinMesMaxSizeGet(1, size, MAKE_MESSID(0x22, 0x09)); HuWinCenterPosSet(index2, (work->winSizeMode.x-size[0])/-2.0f, (work->winSizeMode.y-size[1])/-2.0f); - HuWinMesSet(index2, 0x220009); - HuWinMesMaxSizeGet(2, &work->winSizeBoard.x, 0x22000A, 0x220010); + HuWinMesSet(index2, MAKE_MESSID(0x22, 0x09)); + HuWinMesMaxSizeGet(2, &work->winSizeBoard.x, MAKE_MESSID(0x22, 0x0A), MAKE_MESSID(0x22, 0x10)); index2 = HuWinCreate(-10000, 390, work->winSizeBoard.x, work->winSizeBoard.y, 0); work->winBoard = index2; HuWinBGTPLvlSet(index2, 0); HuWinMesSpeedSet(index2, 0); - HuWinMesMaxSizeGet(1, size, 0x22000A); + HuWinMesMaxSizeGet(1, size, MAKE_MESSID(0x22, 0x0A)); HuWinCenterPosSet(index2, (work->winSizeBoard.x-size[0])/-2.0f, (work->winSizeBoard.y-size[1])/-2.0f); - HuWinMesSet(index2, 0x22000A); + HuWinMesSet(index2, MAKE_MESSID(0x22, 0x0A)); object->work[0] = 0; object->work[1] = 0; object->work[2] = 0; diff --git a/src/REL/E3setupDLL/mgselect.c b/src/REL/E3setupDLL/mgselect.c index ba636a75..3c8bb026 100644 --- a/src/REL/E3setupDLL/mgselect.c +++ b/src/REL/E3setupDLL/mgselect.c @@ -6,7 +6,6 @@ #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" #include "REL/E3SetupDLL.h" @@ -94,19 +93,19 @@ static s16 mgOvlTbl[] = { static s16 mgIdTbl[] = { 403, 404, 407, 410, 412, 415, 418, 419, 425, 426, 431, 436, 438, 0 }; static s32 mgNameTbl[] = { - 0x00170003, - 0x00170004, - 0x00170007, - 0x0017000A, - 0x0017000C, - 0x0017000F, - 0x00170012, - 0x00170013, - 0x00170019, - 0x0017001A, - 0x0017001F, - 0x00170024, - 0x00170026, + MAKE_MESSID(0x17, 0x03), + MAKE_MESSID(0x17, 0x04), + MAKE_MESSID(0x17, 0x07), + MAKE_MESSID(0x17, 0x0A), + MAKE_MESSID(0x17, 0x0C), + MAKE_MESSID(0x17, 0x0F), + MAKE_MESSID(0x17, 0x12), + MAKE_MESSID(0x17, 0x13), + MAKE_MESSID(0x17, 0x19), + MAKE_MESSID(0x17, 0x1A), + MAKE_MESSID(0x17, 0x1F), + MAKE_MESSID(0x17, 0x24), + MAKE_MESSID(0x17, 0x26), }; char lbl_2_data_A8[] = "\013TEST MINIGAME NAME01\n test"; @@ -143,8 +142,6 @@ static float cursorYOfsTbl[] = { -100.0f, -50.0f, 0.0f, 50.0f, 100.0f }; static s32 mgPicTbl[] = { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 }; -static char startText[] = "\013\016\r PRESS START"; - static void StartMGSelect(omObjData *object) { HuAudSeqPlay(0x2B); @@ -332,12 +329,12 @@ static void CreateMGSelect(omObjData *object) temp_r30 = HuSprGrpCreate(3); temp_r31->unk_1C = temp_r30; HuSprGrpPosSet(temp_r30, 174.0f, 271.0f); - temp_r25 = HuSprAnimRead(HuDataReadNum(0x21, MEMORY_DEFAULT_NUM)); + temp_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x21), MEMORY_DEFAULT_NUM)); temp_r31->unk_00[index2] = temp_r25; temp_r29 = HuSprCreate(temp_r25, 0x7540, 0); HuSprGrpMemberSet(temp_r30, index2, temp_r29); index2++; - temp_r25 = HuSprAnimRead(HuDataReadNum(0x27, MEMORY_DEFAULT_NUM)); + temp_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x27), MEMORY_DEFAULT_NUM)); temp_r31->unk_00[index2] = temp_r25; temp_r29 = HuSprCreate(temp_r25, 0x64, 0); HuSprGrpMemberSet(temp_r30, index2, temp_r29); @@ -346,9 +343,9 @@ static void CreateMGSelect(omObjData *object) temp_r31->unk_42 = 0; HuSprPosSet(temp_r30, index2, 0.0f, cursorYOfsTbl[temp_r31->unk_42]); index2++; - temp_r25 = HuSprAnimRead(HuDataReadNum(0x35, MEMORY_DEFAULT_NUM)); + temp_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x35), MEMORY_DEFAULT_NUM)); temp_r31->unk_00[index2++] = temp_r25; - temp_r23 = HuSprAnimRead(HuDataReadNum(0x36, MEMORY_DEFAULT_NUM)); + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x36), MEMORY_DEFAULT_NUM)); temp_r31->unk_00[index2++] = temp_r23; temp_r30 = HuSprGrpCreate(2); temp_r31->unk_1E = temp_r30; @@ -416,8 +413,8 @@ static void UpdateMGPic(omObjData *object) if (object->work[1] != object->work[0]) { temp_r29 = temp_r30->unk_40; - HuSprAttrSet(temp_r29, object->work[1], 4); - HuSprAttrReset(temp_r29, object->work[0], 4); + HuSprAttrSet(temp_r29, object->work[1], HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r29, object->work[0], HUSPR_ATTR_DISPOFF); object->work[1] = object->work[0]; } } @@ -449,14 +446,14 @@ static void CreateMGPic(omObjData *object) HuSprAttrSet(temp_r3, var_r30, 4); } index2 = var_r30; - temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x22, MEMORY_DEFAULT_NUM)); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x22), MEMORY_DEFAULT_NUM)); temp_r28->unk_00[index2] = temp_r3_2; group = HuSprCreate(temp_r3_2, 0x7540, 0); HuSprGrpMemberSet(temp_r3, index2, group); HuSprTPLvlSet(temp_r3, index2, 0.7f); index2++; object->work[1] = object->work[0]; - HuSprAttrReset(temp_r3, object->work[1], 4); + HuSprAttrReset(temp_r3, object->work[1], HUSPR_ATTR_DISPOFF); object->func = UpdateMGPic; } @@ -478,7 +475,7 @@ static void CreateMGInterface(omObjData *object) group = HuSprGrpCreate(1); unkStruct->group = group; HuSprGrpPosSet(group, 288.0f, 64.0f); - temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x24, MEMORY_DEFAULT_NUM)); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x24), MEMORY_DEFAULT_NUM)); unkStruct->unk_00[index2] = temp_r3_2; index = HuSprCreate(temp_r3_2, 0x2710, 0); HuSprGrpMemberSet(group, 0, index); @@ -486,17 +483,17 @@ static void CreateMGInterface(omObjData *object) group = HuSprGrpCreate(1); unkStruct->group2 = group; HuSprGrpPosSet(group, 444.0f, 384.0f); - temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x23, MEMORY_DEFAULT_NUM)); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_E3SETUP, 0x23), MEMORY_DEFAULT_NUM)); unkStruct->unk_00[index2] = temp_r3_2; index = HuSprCreate(temp_r3_2, 0x271A, 0); HuSprGrpMemberSet(group, 0, index); index2++; - HuWinMesMaxSizeGet(1, sp8, &startText); + HuWinMesMaxSizeGet(1, sp8, "\013\016\r PRESS START"); index = HuWinCreate(340.0f, 362.0f, sp8[0], sp8[1], 0); unkStruct->unk_2C = index; HuWinMesColSet(index, 0); HuWinBGTPLvlSet(index, 0.0f); HuWinMesSpeedSet(index, 0); - HuWinMesSet(index, MAKE_MESSID_PTR(startText)); + HuWinMesSet(index, MAKE_MESSID_PTR("\013\016\r PRESS START")); object->func = UpdateMGInterface; } diff --git a/src/REL/_minigameDLL/_minigameDLL.c b/src/REL/_minigameDLL/_minigameDLL.c index d252a50b..1b4730ee 100644 --- a/src/REL/_minigameDLL/_minigameDLL.c +++ b/src/REL/_minigameDLL/_minigameDLL.c @@ -1,6 +1,6 @@ #include "REL/executor.h" #include "dolphin/os.h" -#include "rel_sqrt_consts.h" +#include "math.h" void ObjectSetup(void) { OSReport("minigame dll setup\n"); diff --git a/src/REL/board_executor.c b/src/REL/board_executor.c index 04e59a3a..3d838c77 100644 --- a/src/REL/board_executor.c +++ b/src/REL/board_executor.c @@ -1,5 +1,5 @@ #include "REL/board_executor.h" -#include "rel_sqrt_consts.h" +#include "math.h" static void ObjectSetup(void) { BoardObjectSetup(BoardCreate, BoardDestroy); diff --git a/src/REL/bootDll/language.c b/src/REL/bootDll/language.c new file mode 100644 index 00000000..fdc674f1 --- /dev/null +++ b/src/REL/bootDll/language.c @@ -0,0 +1,280 @@ +#include "version.h" +#if VERSION_PAL +#include "dolphin.h" +#include "game/card.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/hsfman.h" +#include "game/hsfanim.h" +#include "game/window.h" +#include "game/gamework_data.h" +#include "game/object.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/minigame_seq.h" + +#include "math.h" +#include "ext_math.h" + +#include "data_num/title.h" + +s32 flagFileTbl[] = { + TITLE_FLAG_EN_ANM, + TITLE_FLAG_ES_ANM, + TITLE_FLAG_IT_ANM, + TITLE_FLAG_FR_ANM, + TITLE_FLAG_GE_ANM +}; + +extern int SystemInitF; + +extern Process *objman; +extern Vec debugCamRot[2]; +extern Vec debugCamPos[2]; +extern float debugCamZoom[2]; + +void DebugCamOutView(omObjData *obj); +void DebugCamUpdate(omObjData *obj); + +BOOL LanguageMenuExec(void) +{ + s16 language = GWLanguageGet()-1; + s16 i; + s16 gid; + s16 time; + s16 choiceChange; + AnimData *anim; + s16 sprid; + s16 choice; + omObjData *outView; + omObjData *updateCamera; + s16 modelId[5]; + s16 winId[5]; + + float winSize[2]; + float dist; + float posX; + float posZ; + + for(i=0; i<4; i++) { + GWPlayerCfg[i].character = i; + } + gid = HuSprGrpCreate(1); + anim = HuSprAnimReadFile(TITLE_LANGUAGEBG_ANM); + sprid = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(gid, 0, sprid); + HuSprDrawNoSet(gid, 0, 127); + HuSprPosSet(gid, 0, 288, 240); + HuSprTPLvlSet(gid, 0, 0.6f); + Hu3DFogSet(350, 2000, 128, 128, 128); + debugCamRot[0].x = -20; + debugCamRot[0].y = 0; + debugCamRot[0].z = 0; + debugCamPos[0].x = 0; + debugCamPos[0].y = 20; + debugCamPos[0].z = -7; + debugCamZoom[0] = 600; + + Hu3DCameraPerspectiveSet(HU3D_CAM0, 60, 20, 5000, 1.2f); + outView = omAddObjEx(objman, 32730, 0, 0, -1, DebugCamOutView); + updateCamera = omAddObjEx(objman, 0, 32, 32, -1, DebugCamUpdate); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + if(!SystemInitF) { + void *group_samp; + HuWindowInit(); + group_samp = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(0)); + msmSysLoadGroup(0, group_samp, 0); + HuMemDirectFree(group_samp); + } + for(i=0; i<5; i++) { + modelId[i] = Hu3DModelCreateFile(TITLE_FLAG_HSF); + anim = HuSprAnimReadFile(flagFileTbl[i]); + Hu3DAnimCreate(anim, modelId[i], "flag"); + Hu3DModelPosSet(modelId[i], sind(i*72)*200, 70, cosd(i*72)*200); + Hu3DModelRotSet(modelId[i], -20, 0, 0); + } + for(time=1; time<=30; time++) { + dist = 1.0-(time/30.0); + for(i=0; i<5; i++) { + Hu3DModelPosSet(modelId[i], sind((dist*180.0f)+(i*72)+(language*72))*(200+(300*dist)), 70, cosd((dist*180.0f)+(i*72)+(language*72))*(200+(300*dist))); + } + HuPrcVSleep(); + } + HuWinInit(1); + HuWinMesMaxSizeGet(5, winSize, 0x380000, 0x380005, 0x38000A, 0x38000F, 0x380014); + winId[0] = HuWinExCreateStyled(-10000, 50, winSize[0], winSize[1], -1, 0); + HuWinAttrSet(winId[0], 0x800); + HuWinMesSet(winId[0], 0x380000+(language*5)); + HuWinBGTPLvlSet(winId[0], 0); + HuWinMesSpeedSet(winId[0], 0); + HuWinDispOn(winId[0]); + HuWinMesMaxSizeGet(5, winSize, 0x380001, 0x380006, 0x38000B, 0x380010, 0x380015); + winId[1] = HuWinExCreateStyled(-10000, 100, winSize[0], winSize[1], -1, 0); + HuWinAttrSet(winId[1], 0x800); + HuWinMesSet(winId[1], 0x380001+(language*5)); + HuWinBGTPLvlSet(winId[1], 0); + HuWinMesSpeedSet(winId[1], 0); + HuWinDispOn(winId[1]); + HuWinMesMaxSizeGet(5, winSize, 0x380002, 0x380007, 0x38000C, 0x380011, 0x380016); + winId[2] = HuWinExCreateStyled(-10000, 340, winSize[0], winSize[1], -1, 0); + HuWinAttrSet(winId[2], 0x800); + HuWinMesSet(winId[2], 0x380002+(language*5)); + HuWinBGTPLvlSet(winId[2], 0); + HuWinMesSpeedSet(winId[2], 0); + HuWinDispOn(winId[2]); + HuWinMesMaxSizeGet(5, winSize, 0x380004, 0x380009, 0x38000E, 0x380013, 0x380018); + winId[4] = HuWinExCreateStyled(-10000, (448-winSize[1])-10, winSize[0], winSize[1], -1, 0); + HuWinAttrSet(winId[4], 0x800); + choiceChange = FALSE; + while(1) { + if(HuPadDStkRep[0] & PAD_BUTTON_LEFT) { + HuAudFXPlay(0); + for(time=0; time<=10; time++) { + for(i=0; i<5; i++) { + posX = sind((72.0*language)+(i*72)-(72.0*(time/10.0)))*200; + posZ = cosd((72.0*language)+(i*72)-(72.0*(time/10.0)))*200; + Hu3DModelPosSet(modelId[i], posX, 70, posZ); + } + HuPrcVSleep(); + } + language--; + if(language < 0) { + language = 4; + } + choiceChange = TRUE; + } else if(HuPadDStkRep[0] & PAD_BUTTON_RIGHT) { + HuAudFXPlay(0); + for(time=0; time<=10; time++) { + for(i=0; i<5; i++) { + posX = sind((72.0*language)+(i*72)+(72.0*(time/10.0)))*200; + posZ = cosd((72.0*language)+(i*72)+(72.0*(time/10.0)))*200; + Hu3DModelPosSet(modelId[i], posX, 70, posZ); + } + HuPrcVSleep(); + } + language++; + if(language >= 5) { + language = 0; + } + choiceChange = TRUE; + } + if(choiceChange) { + HuWinMesSet(winId[0], 0x380000+(language*5)); + HuWinMesSet(winId[1], 0x380001+(language*5)); + HuWinMesSet(winId[2], 0x380002+(language*5)); + choiceChange = FALSE; + } + if(HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(1); + HuWinHomeClear(winId[4]); + HuWinExAnimIn(winId[4]); + HuWinMesSet(winId[4], 0x380004+(language*5)); + HuWinMesWait(winId[4]); + choice = HuWinChoiceGet(winId[4], 0); + if(choice == 0) { + GwLanguage = GwLanguageSave = language+1; + GWLanguageSet(GwLanguage); + break; + } + HuWinExAnimOut(winId[4]); + } + if(GwLanguage != -1 && (HuPadBtnDown[0] & PAD_BUTTON_B)) { + HuAudFXPlay(3); + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuSprGrpKill(gid); + for(i=0; i<5; i++) { + Hu3DModelKill(modelId[i]); + } + omDelObjEx(objman, outView); + omDelObjEx(objman, updateCamera); + if(SystemInitF == 0) { + CharManInit(); + MGSeqInit(); + } + HuWinAllKill(); + Hu3DFogClear(); + return TRUE; +} + +s32 LanguageBootGet(void) +{ + s16 result = -1; + s16 i; + s16 j; + for(i=0; i<2; i++) { + if(HuCardSlotCheck(i) < 0) { + continue; + } + if(HuCardMount(i) < 0) { + continue; + } + for(j=0; j<3; j++) { + CARDFileInfo fileInfo; + if(HuCardOpen(i, SaveFileNameTbl[j], &fileInfo) < 0) { + continue; + } + if(HuCardRead(&fileInfo, &saveBuf, SAVE_BUF_SIZE, 0) < 0) { + continue; + } + if(!SLCheckSumCheck()) { + continue; + } + memcpy(&GWGameStat, &saveBuf.data.stat, sizeof(GameStat)); + if(GWGameStat.language < 1) { + continue; + } + if(GWGameStat.language > 5) { + continue; + } + result = GWGameStat.language; + OSReport("Language %d\n", GWGameStat.language); + HuCardClose(&fileInfo); + HuCardUnMount(i); + return result; + } + HuCardUnMount(i); + } + if(result == -1) { + OSReport("OS Language %d\n", OSGetLanguage()); + switch(OSGetLanguage()) { + case OS_LANG_ENGLISH: + result = 1; + break; + + case OS_LANG_GERMAN: + result = 2; + break; + + case OS_LANG_FRENCH: + result = 3; + break; + + case OS_LANG_SPANISH: + result = 5; + break; + + case OS_LANG_ITALIAN: + result = 4; + break; + + default: + result = -1; + break; + } + } + return result; +} + +#endif \ No newline at end of file diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index 9e9ccda2..ee8b1b04 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -1,21 +1,21 @@ -#include "game/gamework_data.h" -#include "game/process.h" +#include "ext_math.h" +#include "game/audio.h" #include "game/chrman.h" #include "game/data.h" -#include "game/sprite.h" -#include "game/object.h" -#include "game/audio.h" -#include "game/memory.h" +#include "game/gamework_data.h" #include "game/hsfman.h" -#include "game/wipe.h" -#include "game/pad.h" -#include "game/window.h" -#include "game/thpmain.h" +#include "game/minigame_seq.h" +#include "game/memory.h" #include "game/msm.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/thpmain.h" +#include "game/window.h" +#include "game/wipe.h" #include "math.h" -#include "ext_math.h" -#include "rel_sqrt_consts.h" #include "data_num/title.h" @@ -25,527 +25,763 @@ extern int SystemInitF; -static Process *objman[2]; -Vec lbl_1_bss_3C[2]; -Vec lbl_1_bss_24[2]; -float lbl_1_bss_1C[2]; +static omObjData *debugOutView; +Process *objman; +Vec debugCamRot[2]; +Vec debugCamPos[2]; +float debugCamZoom[2]; Vec lbl_1_bss_10; -static s16 demoWin; +static s16 demoWinId; -static s16 titleModel[3]; -static s16 titleGroup; +static s16 titleMdlId[3]; +static s16 bootGrpId; s16 lbl_1_bss_4; -s32 lbl_1_bss_0; +#if VERSION_PAL +static BOOL initLanguageF; +#endif +s32 debugCamOnF; -static void BootProc(void); +void BootExec(void); static void UpdateDemoMess(void); -static void ProgressiveProc(void); -static void TitleInit(void); -static BOOL TitleProc(void); +#if VERSION_NTSC +void BootProgExec(void); +#endif +void BootTitleCreate(void); +BOOL BootTitleExec(void); -void *logoReadNintendo(void); +void *NintendoDataDecode(void); void ObjectSetup(void) { - omOvlHisData *history; - OSReport("******* Boot ObjectSetup *********\n"); - objman[0] = omInitObjMan(50, 8192); - lbl_1_bss_3C[0].x = -67; - lbl_1_bss_3C[0].y = 40; - lbl_1_bss_3C[0].z = 0; - lbl_1_bss_24[0].x = 260; - lbl_1_bss_24[0].y = -103; - lbl_1_bss_24[0].z = -18; - lbl_1_bss_1C[0] = 2885; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - HuPrcCreate(BootProc, 100, 12288, 0); - Hu3DBGColorSet(0, 0, 0); - history = omOvlHisGet(0); - omOvlHisChg(0, history->overlay, 1, history->stat); + omOvlHisData *history; + OSReport("******* Boot ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + debugCamRot[0].x = -67; + debugCamRot[0].y = 40; + debugCamRot[0].z = 0; + debugCamPos[0].x = 260; + debugCamPos[0].y = -103; + debugCamPos[0].z = -18; + debugCamZoom[0] = 2885; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + HuPrcCreate(BootExec, 100, 12288, 0); + Hu3DBGColorSet(0, 0, 0); + history = omOvlHisGet(0); + omOvlHisChg(0, history->overlay, 1, history->stat); + #if VERSION_PAL + if(SystemInitF == FALSE) { + initLanguageF = FALSE; + } else { + initLanguageF = TRUE; + } + #endif } -static void BootProc(void) +#if VERSION_PAL +s32 LanguageBootGet(void); +BOOL LanguageMenuExec(void); +#endif + +void BootExec(void) { - AnimData *data; - s16 group; - s16 sprite_nintendo; - s16 sprite_hudson; - s16 i; - OSTick tick_prev; - Process *curr = HuPrcCurrentGet(); - if(omovlevtno == 0) { - ProgressiveProc(); - } - group = HuSprGrpCreate(2); - data = HuSprAnimRead(logoReadNintendo()); - 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); - TitleInit(); - 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; - } - 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); - TitleInit(); - 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(HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { - break; - } - 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(HuPadBtnDown[0] & (PAD_BUTTON_START|PAD_BUTTON_A)) { - break; - } - HuPrcVSleep(); - } - } - 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)); - demoWin = HuWinCreate(-10000, 448-win_size[1], win_size[0], win_size[1], 0); - HuWinMesSpeedSet(demoWin, 0); - HuWinBGTPLvlSet(demoWin, 0); - HuWinPriSet(demoWin, 10); - HuWinAttrSet(demoWin, 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(demoWin); - HuTHPClose(); - HuPrcVSleep(); - HuSprGrpKill(group_thp); - if(!skip_wait) { - HuPrcSleep(60); - } - skip_wait = FALSE; - } - if(!TitleProc()) { - 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); + 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 demoTimingTbl[] = { - 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; demoTimingTbl[i*2] != -1; i++) { - if(frame == demoTimingTbl[i*2]) { - HuWinMesSet(demoWin, MAKE_MESSID(54, i)); - } - if(frame == demoTimingTbl[(i*2)+1]) { - HuWinHomeClear(demoWin); - } - } + 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 u16 progressivePosTbl[] = { - 236, 313, - 353, 313 -}; +#if VERSION_NTSC -static void ProgressiveProc(void) +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, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]); - data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM); - sprite = HuSprCreate(data, 0, 0); - HuSprGrpMemberSet(group, 2, sprite); - HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(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, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]); - i=0; - } - if(HU_PAD_BTNDOWN_ALL & PAD_BUTTON_A) { - HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(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); + 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); } -u16 lbl_1_data_58[] = { - 1, 2 -}; +#endif -void fn_1_1178(void) +static u16 debugCamTbl[] = { 1, 2 }; + +void DebugCamOutView(omObjData *obj) { - s16 i; - for(i=0; i<1; i++) { - Vec pos, target, up; - float x, y, z; - - x = lbl_1_bss_3C[i].x; - y = lbl_1_bss_3C[i].y; - z = lbl_1_bss_3C[i].z; - - pos.x = (((sind(y)*cosd(x))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].x); - pos.y = (-sind(x)*lbl_1_bss_1C[i])+lbl_1_bss_24[i].y; - pos.z = ((cosd(y)*cosd(x))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].z; - target.x = lbl_1_bss_24[i].x; - target.y = lbl_1_bss_24[i].y; - target.z = lbl_1_bss_24[i].z; - up.x = sind(y)*sind(x); - up.y = cosd(x); - up.z = cosd(y)*sind(x); - Hu3DCameraPosSet(lbl_1_data_58[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } + s16 i; + for (i = 0; i < 1; i++) { + Vec pos, target, up; + float x, y, z; + + x = debugCamRot[i].x; + y = debugCamRot[i].y; + z = debugCamRot[i].z; + + pos.x = (((sind(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].x); + pos.y = (-sind(x) * debugCamZoom[i]) + debugCamPos[i].y; + pos.z = ((cosd(y) * cosd(x)) * debugCamZoom[i]) + debugCamPos[i].z; + target.x = debugCamPos[i].x; + target.y = debugCamPos[i].y; + target.z = debugCamPos[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(debugCamTbl[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } } -void fn_1_152C(void) { +void DebugCamUpdate(omObjData *obj) +{ Vec pos; Vec offset; Vec dir; Vec y_offset; - + f32 z_rot; s8 stick_pos; - + + #if VERSION_NTSC if ((HuPadBtnDown[0] & 0x800)) { - lbl_1_bss_0 = (lbl_1_bss_0) ? 0 : 1; + debugCamOnF = (debugCamOnF) ? 0 : 1; } - if (lbl_1_bss_0 != 0) { - lbl_1_bss_3C[0].y += 0.1f * HuPadStkX[0]; - lbl_1_bss_3C[0].x += 0.1f * HuPadStkY[0]; - lbl_1_bss_1C[0] += HuPadTrigL[0] / 2; - lbl_1_bss_1C[0] -= HuPadTrigR[0] / 2; - if (lbl_1_bss_1C[0] < 100.0f) { - lbl_1_bss_1C[0] = 100.0f; + #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 = lbl_1_bss_24[0].x + (lbl_1_bss_1C[0] * (sind(lbl_1_bss_3C[0].y) * cosd(lbl_1_bss_3C[0].x))); - pos.y = (lbl_1_bss_24[0].y + (lbl_1_bss_1C[0] * -sind(lbl_1_bss_3C[0].x))); - pos.z = (lbl_1_bss_24[0].z + (lbl_1_bss_1C[0] * (cosd(lbl_1_bss_3C[0].y) * cosd(lbl_1_bss_3C[0].x)))); - offset.x = lbl_1_bss_24[0].x - pos.x; - offset.y = lbl_1_bss_24[0].y - pos.y; - offset.z = lbl_1_bss_24[0].z - pos.z; - dir.x = (sind(lbl_1_bss_3C[0].y) * sind(lbl_1_bss_3C[0].x)); - dir.y = cosd(lbl_1_bss_3C[0].x); - dir.z = (cosd(lbl_1_bss_3C[0].y) * sind(lbl_1_bss_3C[0].x)); - z_rot = lbl_1_bss_3C[0].z; + 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)); + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); + + 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)); - PSVECCrossProduct(&dir, &offset, &offset); - PSVECNormalize(&offset, &offset); + 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) { - lbl_1_bss_24[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_24[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_24[0].z += 0.05f * (offset.z * stick_pos); + 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); } - PSVECNormalize(&y_offset, &offset); + VECNormalize(&y_offset, &offset); stick_pos = -(HuPadSubStkY[0] & 0xF8); if (stick_pos != 0) { - lbl_1_bss_24[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_24[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_24[0].z += 0.05f * (offset.z * stick_pos); + 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); } } } -static void TitleInit(void) +void BootTitleCreate(void) { - s16 model; - s16 sprite; - AnimData *sprite_data; - titleModel[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF); - Hu3DModelAttrSet(model, 1); - Hu3DModelAttrSet(model, 0x40000001); - titleModel[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF); - Hu3DModelAttrSet(model, 1); - Hu3DModelAttrSet(model, 0x40000001); - titleModel[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF); - Hu3DModelAttrSet(model, 1); - Hu3DModelAttrSet(model, 0x40000001); - Hu3DModelCameraInfoSet(model, 1); - Hu3DModelLightInfoSet(model, 1); - titleGroup = HuSprGrpCreate(4); - sprite_data = HuSprAnimReadFile(TITLE_BG_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(titleGroup, 0, sprite); - HuSprAttrSet(titleGroup, 0, HUSPR_ATTR_DISPOFF); - HuSprDrawNoSet(titleGroup, 0, 127); - HuSprPosSet(titleGroup, 0, 288, 240); - sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM); - sprite = HuSprCreate(sprite_data, 1, 0); - HuSprGrpMemberSet(titleGroup, 1, sprite); - HuSprAttrSet(titleGroup, 1, HUSPR_ATTR_DISPOFF); - HuSprPosSet(titleGroup, 1, 288, 420); - sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM); - sprite = HuSprCreate(sprite_data, 2, 0); - HuSprGrpMemberSet(titleGroup, 2, sprite); - HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF|HUSPR_ATTR_LINEAR); - HuSprPosSet(titleGroup, 2, 288, 380); - sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM); - sprite = HuSprCreate(sprite_data, 0, 0); - HuSprGrpMemberSet(titleGroup, 3, sprite); - HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF|HUSPR_ATTR_LINEAR); - HuSprPosSet(titleGroup, 3, 288, 200); + 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 } -static BOOL TitleProc(void) +BOOL BootTitleExec(void) { - float scale; - float scale_time; - s32 y_offset[32]; - s16 i; - Hu3DModelAttrReset(titleModel[0], 1); - Hu3DModelAttrReset(titleModel[1], 1); - HuSprAttrReset(titleGroup, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(titleGroup, 1, HUSPR_ATTR_DISPOFF); - OSReport(">>>>>>>>MSM_SE_SEL_01 %d\n", msmSeGetEntryID(2092, y_offset)); - OSReport(">>>>>>>>SE Num %d\n", msmSeGetNumPlay(0)); - HuAudSStreamPlay(20); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuSprAttrReset(titleGroup, 3, HUSPR_ATTR_DISPOFF); - for(i=1; i<=50; i++) { - scale = (cosd(i*1.8)*10.0)+1.0; - HuSprScaleSet(titleGroup, 3, scale, scale); - HuSprTPLvlSet(titleGroup, 3, i/50.0); - HuPrcVSleep(); - } - HuSprAttrReset(titleGroup, 2, HUSPR_ATTR_DISPOFF); - for(i=scale_time=0; i<1800; i++) { - if(i <= 10) { - HuSprTPLvlSet(titleGroup, 2, i/10.0); - } - if(HuPadBtnDown[0] & PAD_BUTTON_START) { - s32 ret = HuAudFXPlay(2092); - if(ret < 0) { - OSReport(">>>>>Error %d\n", ret); - } - HuSprAttrSet(titleGroup, 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(titleGroup, 2, scale, scale); - HuPrcVSleep(); - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while(WipeStatGet()) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(titleModel[0], 1); - Hu3DModelAttrSet(titleModel[1], 1); - Hu3DModelAttrSet(titleModel[2], 1); - HuSprAttrSet(titleGroup, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(titleGroup, 1, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF); - HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF); - return 0; + 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 + + } + 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" + +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/REL/bootDll/nintendo_data.c b/src/REL/bootDll/nintendo_data.c deleted file mode 100644 index 5cb14723..00000000 --- a/src/REL/bootDll/nintendo_data.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "game/data.h" - -#include "logoNintendoData.inc" - -void *logoReadNintendo(void) -{ - u32 *src = (u32 *)logoNintendoData; - u32 size = *src++; - void *dst = HuMemDirectMalloc(HEAP_DATA, size); - int decode_type = *src++; - if(dst) { - HuDecodeData(src, dst, size, decode_type); - } - return dst; -} \ No newline at end of file diff --git a/src/REL/instDll/font.c b/src/REL/instDll/font.c new file mode 100644 index 00000000..f4712b09 --- /dev/null +++ b/src/REL/instDll/font.c @@ -0,0 +1,319 @@ +#include "game/sprite.h" + +#include "REL/instDll.h" + +#define FONT_CHAR_MAX 100 + +static s32 FontCharFile[0xC6] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x26), + DATA_MAKE_NUM(DATADIR_INST, 0x27), + DATA_MAKE_NUM(DATADIR_INST, 0x28), + DATA_MAKE_NUM(DATADIR_INST, 0x29), + DATA_MAKE_NUM(DATADIR_INST, 0x2A), + DATA_MAKE_NUM(DATADIR_INST, 0x2B), + DATA_MAKE_NUM(DATADIR_INST, 0x2C), + DATA_MAKE_NUM(DATADIR_INST, 0x2D), + DATA_MAKE_NUM(DATADIR_INST, 0x2E), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x2F), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x34), + DATA_MAKE_NUM(DATADIR_INST, 0x35), + DATA_MAKE_NUM(DATADIR_INST, 0x36), + DATA_MAKE_NUM(DATADIR_INST, 0x37), + DATA_MAKE_NUM(DATADIR_INST, 0x38), + DATA_MAKE_NUM(DATADIR_INST, 0x39), + DATA_MAKE_NUM(DATADIR_INST, 0x3A), + DATA_MAKE_NUM(DATADIR_INST, 0x3B), + DATA_MAKE_NUM(DATADIR_INST, 0x3C), + DATA_MAKE_NUM(DATADIR_INST, 0x3D), + DATA_MAKE_NUM(DATADIR_INST, 0x3E), + DATA_MAKE_NUM(DATADIR_INST, 0x3F), + DATA_MAKE_NUM(DATADIR_INST, 0x40), + DATA_MAKE_NUM(DATADIR_INST, 0x41), + DATA_MAKE_NUM(DATADIR_INST, 0x42), + DATA_MAKE_NUM(DATADIR_INST, 0x43), + DATA_MAKE_NUM(DATADIR_INST, 0x44), + DATA_MAKE_NUM(DATADIR_INST, 0x45), + DATA_MAKE_NUM(DATADIR_INST, 0x46), + DATA_MAKE_NUM(DATADIR_INST, 0x47), + DATA_MAKE_NUM(DATADIR_INST, 0x48), + DATA_MAKE_NUM(DATADIR_INST, 0x49), + DATA_MAKE_NUM(DATADIR_INST, 0x4A), + DATA_MAKE_NUM(DATADIR_INST, 0x4B), + DATA_MAKE_NUM(DATADIR_INST, 0x4C), + DATA_MAKE_NUM(DATADIR_INST, 0x4D), + DATA_MAKE_NUM(DATADIR_INST, 0x42), + DATA_MAKE_NUM(DATADIR_INST, 0x32), + DATA_MAKE_NUM(DATADIR_INST, 0x42), + DATA_MAKE_NUM(DATADIR_INST, 0x42), + DATA_MAKE_NUM(DATADIR_INST, 0x42), + DATA_MAKE_NUM(DATADIR_INST, 0x42), + DATA_MAKE_NUM(DATADIR_INST, 0x4E), + DATA_MAKE_NUM(DATADIR_INST, 0x4F), + DATA_MAKE_NUM(DATADIR_INST, 0x50), + DATA_MAKE_NUM(DATADIR_INST, 0x51), + DATA_MAKE_NUM(DATADIR_INST, 0x52), + DATA_MAKE_NUM(DATADIR_INST, 0x53), + DATA_MAKE_NUM(DATADIR_INST, 0x54), + DATA_MAKE_NUM(DATADIR_INST, 0x55), + DATA_MAKE_NUM(DATADIR_INST, 0x56), + DATA_MAKE_NUM(DATADIR_INST, 0x57), + DATA_MAKE_NUM(DATADIR_INST, 0x58), + DATA_MAKE_NUM(DATADIR_INST, 0x59), + DATA_MAKE_NUM(DATADIR_INST, 0x5A), + DATA_MAKE_NUM(DATADIR_INST, 0x5B), + DATA_MAKE_NUM(DATADIR_INST, 0x5C), + DATA_MAKE_NUM(DATADIR_INST, 0x5D), + DATA_MAKE_NUM(DATADIR_INST, 0x5E), + DATA_MAKE_NUM(DATADIR_INST, 0x5F), + DATA_MAKE_NUM(DATADIR_INST, 0x60), + DATA_MAKE_NUM(DATADIR_INST, 0x61), + DATA_MAKE_NUM(DATADIR_INST, 0x62), + DATA_MAKE_NUM(DATADIR_INST, 0x63), + DATA_MAKE_NUM(DATADIR_INST, 0x64), + DATA_MAKE_NUM(DATADIR_INST, 0x65), + DATA_MAKE_NUM(DATADIR_INST, 0x66), + DATA_MAKE_NUM(DATADIR_INST, 0x67), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x2F), + DATA_MAKE_NUM(DATADIR_INST, 0x33), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x30), + DATA_MAKE_NUM(DATADIR_INST, 0x31), + DATA_MAKE_NUM(DATADIR_INST, 0x25), + DATA_MAKE_NUM(DATADIR_INST, 0x25), +}; + +s32 FontCreate(SeqWork *work, char *mess, s16 jp_flag) +{ + char *str; + s16 len; + s16 *posY; + s16 charNum; + s32 *fileTbl; + s16 i; + s16 grpNo; + s32 file; + s16 *posX; + AnimData **animP; + s16 gid; + s16 sprid; + + fileTbl = FontCharFile; + for (grpNo = 0; grpNo < 0x10; grpNo++) { + if (work->spr_grp[grpNo] == -1) { + break; + } + } + if (grpNo == 0x10) { + return -1; + } + animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*))); + posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX)); + posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY)); + + for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) { + if (str[0] == 0x20 || str[0] == 0x10) { + len += 0xE; + } + else if (str[0] < 0x30) { + } + else if (str[0] == 0x80) { + } + else if (str[0] == 0x81) { + } + else { + if (str[1] == 0x80) { + if ((str[0] >= 0x96) && (str[0] <= 0xA4)) { + file = fileTbl[str[0] + 0x6A]; + } + else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x65]; + } + else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) { + file = fileTbl[str[0] + 0x43]; + } + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x3E]; + } + } + else if (str[1] == 0x81) { + if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x6A]; + } + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x43]; + } + } + else { + file = fileTbl[str[0]]; + } + animP[charNum] = HuSprAnimReadFile(file); + posX[charNum] = len; + if ((str[0] >= 0x61) && (str[0] <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; + } + else if ((str[0] == 0xC2) || (str[0] == 0xC3)) { + posY[charNum] = 0; + len += 0x12; + } + else if (str[0] == 0x5C || str[0] == 0x85) { + posY[charNum] = 0; + len += 8; + } + else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) { + posY[charNum] = 4; + len += 0x18; + } + else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) { + posY[charNum] = 4; + len += 0x18; + } + else if ((str[0] == 0x3D) || (str[0] == 0x84)) { + posY[charNum] = 0; + len += 0x14; + } + else { + posY[charNum] = 0; + len += 0x1C; + } + charNum++; + } + } + gid = HuSprGrpCreate(charNum); + work->spr_grp[grpNo] = gid; + work->alt_word_len = len; + len = (len / 2) - 0xE; + for (i = 0; i < charNum; i++) { + sprid = HuSprCreate(animP[i], 0, 0); + HuSprGrpMemberSet(gid, i, sprid); + HuSprPosSet(gid, i, posX[i] - len, posY[i]); + } + work->word_len = charNum; + HuMemDirectFree(animP); + HuMemDirectFree(posX); + HuMemDirectFree(posY); + return grpNo; +} diff --git a/src/REL/instDll/main.c b/src/REL/instDll/main.c index 8c212fd2..5d7b064c 100644 --- a/src/REL/instDll/main.c +++ b/src/REL/instDll/main.c @@ -1,1178 +1,1183 @@ +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" -#include "game/gamework_data.h" -#include "game/hsfman.h" -#include "game/hsfdraw.h" #include "game/printfunc.h" -#include "game/frand.h" #include "game/hsfmotion.h" -#include "game/wipe.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" #include "game/flag.h" #include "game/minigame_seq.h" -#include "game/data.h" -#include "game/audio.h" -#include "game/window.h" #include "game/sprite.h" -#include "game/chrman.h" +#include "game/window.h" +#include "game/wipe.h" -#include "math.h" #include "ext_math.h" +#include "math.h" -#include "rel_sqrt_consts.h" +#include "REL/instDll.h" -static s16 lbl_1_data_0 = 1; +static s16 instMode = 1; static omObjData *lbl_1_bss_60; -static omObjData *lbl_1_bss_5C; -static Process *lbl_1_bss_58; -static Vec lbl_1_bss_40[2]; -static Vec lbl_1_bss_28[2]; -static float lbl_1_bss_20[2]; -static s32 lbl_1_bss_1C; -static AnimData *lbl_1_bss_18; -static u16 lbl_1_bss_14; -static u16 lbl_1_bss_12; -static u16 lbl_1_bss_10; -static float lbl_1_bss_C; -static u8 lbl_1_bss_8; -static u16 lbl_1_bss_6; -static u16 lbl_1_bss_4; -static s32 lbl_1_bss_0; +static omObjData *outViewObj; +Process *objman; +Vec cameraRot[2]; +Vec cameraPos[2]; +float cameraZoom[2]; +static s32 instBoxMdlId; +static AnimData *instPicAnim; +static u16 instMgNo; +static u16 instHostNo; +static u16 instMesOfs; +static float instFov; +static u8 LanguageNo; +static u16 instPage; +static u16 instBusyF; +static s32 debugCamOnF; -static void fn_1_994(void); -static void fn_1_17E4(void); -static void fn_1_220C(void); -static void fn_1_2804(void); -static void fn_1_2FA0(void); -static void fn_1_4174(omObjData *object); -static void fn_1_4528(omObjData *object); +static void InstMain(void); +static void InstPlayerMain(void); +static void InstHostMain(void); +static void InstWinMain(void); +static void InstNameMain(void); +static void CameraOutView(omObjData *object); +static void CameraDebug(omObjData *object); void ObjectSetup(void) { - s32 i; - omOvlHisData *his; - s32 light; - OSReport("******* INST ObjectSetup *********\n"); - lbl_1_bss_58 = omInitObjMan(50, 8192); - omGameSysInit(lbl_1_bss_58); - lbl_1_bss_8 = GWLanguageGet(); - lbl_1_bss_14 = GWSystem.mg_next; - lbl_1_bss_10 = 0; - lbl_1_bss_4 = 0; - _ClearFlag(0x1000C); - for(i=0; HuSndGrpTbl[i].ovl != OVL_INVALID; i++) { - if(HuSndGrpTbl[i].ovl == mgInfoTbl[lbl_1_bss_14].ovl) { - break; - } - } - if(HuSndGrpTbl[i].ovl != OVL_INVALID) { - HuAudSndGrpSetSet(HuSndGrpTbl[i].grpset); - } - if(mgInfoTbl[lbl_1_bss_14].ovl == OVL_M411) { - if(GWMGTypeGet() == -1) { - GWMGTypeSet(frandmod(3)); - } - } else { - GWMGTypeSet(-1); - } - HuDataDirClose(mgInfoTbl[lbl_1_bss_14].data_dir); - his = omOvlHisGet(0); - omOvlHisChg(0, OVL_RESULT, his->event, his->stat); - if(omovlevtno == 0 && mgInfoTbl[lbl_1_bss_14].ovl == OVL_M430) { - s32 team_cnt[2]; - s32 team_players[2][2]; - team_cnt[0] = team_cnt[1] = 0; - for(i=0; i<4; i++) { - team_players[GWPlayerCfg[i].group][team_cnt[GWPlayerCfg[i].group]++] = i; - } - if(frandBool()) { - GWPlayerCfg[team_players[0][0]].group = 0; - GWPlayerCfg[team_players[0][1]].group = 1; - } else { - GWPlayerCfg[team_players[0][0]].group = 1; - GWPlayerCfg[team_players[0][1]].group = 0; - } - if(frandBool()) { - GWPlayerCfg[team_players[1][0]].group = 2; - GWPlayerCfg[team_players[1][1]].group = 3; - } else { - GWPlayerCfg[team_players[1][0]].group = 3; - GWPlayerCfg[team_players[1][1]].group = 2; - } - } - if(mgInfoTbl[lbl_1_bss_14].type == 3 - || mgInfoTbl[lbl_1_bss_14].type == 5 - || mgInfoTbl[lbl_1_bss_14].type == 6 - || mgInfoTbl[lbl_1_bss_14].type == 8 - || !_CheckFlag(FLAG_ID_MAKE(0, 11))) { - HuDataDirClose(DATADIR_INST); - omSysPauseEnable(1); - omOvlCallEx(mgInfoTbl[lbl_1_bss_14].ovl, 1, 0, 0); - return; - } - lbl_1_bss_40[0].x = -67.0f; - lbl_1_bss_40[0].y = 40.0f; - lbl_1_bss_40[0].z = 0.0f; - lbl_1_bss_28[0].x = 260.0f; - lbl_1_bss_28[0].y = -103.0f; - lbl_1_bss_28[0].z = -18.0f; - lbl_1_bss_20[0] = 2885.0f; - lbl_1_bss_C = 20.0f; - lbl_1_bss_12 = GWSystem.board; - if(mgBoardHostEnableF) { - lbl_1_bss_12 = 1; - } - lbl_1_bss_40[1].x = lbl_1_bss_40[1].y = lbl_1_bss_40[1].z = 0.0f; - lbl_1_bss_28[1].x = lbl_1_bss_28[1].y = lbl_1_bss_28[1].z = 0.0f; - lbl_1_bss_20[1] = 1000.0f; - omSysPauseEnable(0); - Hu3DCameraCreate(3); - Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 15000.0f, 1.2f); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - Hu3DCameraPerspectiveSet(2, 30.0f, 20.0f, 15000.0f, 1.2f); - Hu3DCameraViewportSet(2, 0, 0, 640, 480, 0, 1); - light = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); - Hu3DGLightInfinitytSet(light); - HuPrcChildCreate(fn_1_994, 100, 12288, 0, lbl_1_bss_58); - HuPrcChildCreate(fn_1_17E4, 100, 12288, 0, lbl_1_bss_58); - HuPrcChildCreate(fn_1_220C, 100, 12288, 0, lbl_1_bss_58); - HuPrcChildCreate(fn_1_2804, 100, 12288, 0, lbl_1_bss_58); - HuPrcChildCreate(fn_1_2FA0, 100, 12288, 0, lbl_1_bss_58); - lbl_1_bss_5C = omAddObjEx(lbl_1_bss_58, 32730, 0, 0, -1, fn_1_4174); - omAddObjEx(lbl_1_bss_58, 0, 32, 32, -1, fn_1_4528); - HuAudSeqPlay(59); - Hu3DBGColorSet(0, 0, 0); - HuWinInit(1); + s32 i; + omOvlHisData *his; + s32 lightId; + OSReport("******* INST ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + LanguageNo = GWLanguageGet(); + instMgNo = GWSystem.mg_next; + instMesOfs = 0; + instBusyF = 0; + _ClearFlag(0x1000C); + for (i = 0; sndGrpTable[i].ovl != OVL_INVALID; i++) { + if (sndGrpTable[i].ovl == mgInfoTbl[instMgNo].ovl) { + break; + } + } + if (sndGrpTable[i].ovl != OVL_INVALID) { + HuAudSndGrpSetSet(sndGrpTable[i].grpSet); + } + if (mgInfoTbl[instMgNo].ovl == OVL_M411) { + if (GWMGTypeGet() == -1) { + GWMGTypeSet(frandmod(3)); + } + } + else { + GWMGTypeSet(-1); + } + HuDataDirClose(mgInfoTbl[instMgNo].data_dir); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_RESULT, his->event, his->stat); + if (omovlevtno == 0 && mgInfoTbl[instMgNo].ovl == OVL_M430) { + s32 team_cnt[2]; + s32 team_players[2][2]; + team_cnt[0] = team_cnt[1] = 0; + for (i = 0; i < 4; i++) { + team_players[GWPlayerCfg[i].group][team_cnt[GWPlayerCfg[i].group]++] = i; + } + if (frandBool()) { + GWPlayerCfg[team_players[0][0]].group = 0; + GWPlayerCfg[team_players[0][1]].group = 1; + } + else { + GWPlayerCfg[team_players[0][0]].group = 1; + GWPlayerCfg[team_players[0][1]].group = 0; + } + if (frandBool()) { + GWPlayerCfg[team_players[1][0]].group = 2; + GWPlayerCfg[team_players[1][1]].group = 3; + } + else { + GWPlayerCfg[team_players[1][0]].group = 3; + GWPlayerCfg[team_players[1][1]].group = 2; + } + } + if (mgInfoTbl[instMgNo].type == 3 || mgInfoTbl[instMgNo].type == 5 || mgInfoTbl[instMgNo].type == 6 + || mgInfoTbl[instMgNo].type == 8 || !_CheckFlag(FLAG_ID_MAKE(0, 11))) { + HuDataDirClose(DATADIR_INST); + omSysPauseEnable(1); + omOvlCallEx(mgInfoTbl[instMgNo].ovl, 1, 0, 0); + return; + } + cameraRot[0].x = -67.0f; + cameraRot[0].y = 40.0f; + cameraRot[0].z = 0.0f; + cameraPos[0].x = 260.0f; + cameraPos[0].y = -103.0f; + cameraPos[0].z = -18.0f; + cameraZoom[0] = 2885.0f; + instFov = 20.0f; + instHostNo = GWSystem.board; + if (mgBoardHostEnableF) { + instHostNo = 1; + } + cameraRot[1].x = cameraRot[1].y = cameraRot[1].z = 0.0f; + cameraPos[1].x = cameraPos[1].y = cameraPos[1].z = 0.0f; + cameraZoom[1] = 1000.0f; + omSysPauseEnable(0); + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 15000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraPerspectiveSet(2, 30.0f, 20.0f, 15000.0f, 1.2f); + Hu3DCameraViewportSet(2, 0, 0, 640, 480, 0, 1); + lightId = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); + Hu3DGLightInfinitytSet(lightId); + HuPrcChildCreate(InstMain, 100, 12288, 0, objman); + HuPrcChildCreate(InstPlayerMain, 100, 12288, 0, objman); + HuPrcChildCreate(InstHostMain, 100, 12288, 0, objman); + HuPrcChildCreate(InstWinMain, 100, 12288, 0, objman); + HuPrcChildCreate(InstNameMain, 100, 12288, 0, objman); + outViewObj = omAddObjEx(objman, 32730, 0, 0, -1, CameraOutView); + omAddObjEx(objman, 0, 32, 32, -1, CameraDebug); + HuAudSeqPlay(59); + Hu3DBGColorSet(0, 0, 0); + HuWinInit(1); } -static s8 lbl_1_data_26[] = { - 3, 2, 1, 0, - 1, 1, 1, 0, - 1, 1, 0, 0, - 0, 1, 2, 3, - 3, 2, 1, 0, - 0, -1, -1, -1, - 0, -1, -1, -1, - 3, 2, 1, 0 +static s8 instGrpTbl[] = { 3, 2, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, -1, -1, -1, 0, -1, -1, -1, 3, 2, 1, 0 }; + +static s8 instPlayerNumTbl[] = { 4, 4, 4, 4, 4, 1, 1, 4 }; + +static s32 instBoxFile[] = { + DATA_MAKE_NUM(DATADIR_INST, 0), + DATA_MAKE_NUM(DATADIR_INST, 1), + DATA_MAKE_NUM(DATADIR_INST, 2), + DATA_MAKE_NUM(DATADIR_INST, 3), + DATA_MAKE_NUM(DATADIR_INST, 4), + DATA_MAKE_NUM(DATADIR_INST, 0), + DATA_MAKE_NUM(DATADIR_INST, 5), + DATA_MAKE_NUM(DATADIR_INST, 0), }; -static s8 lbl_1_data_46[] = { - 4, - 4, - 4, - 4, - 4, - 1, - 1, - 4 +static s32 instBackFile[] = { + DATA_MAKE_NUM(DATADIR_INST, 9), + DATA_MAKE_NUM(DATADIR_INST, 10), + DATA_MAKE_NUM(DATADIR_INST, 11), + DATA_MAKE_NUM(DATADIR_INST, 12), + DATA_MAKE_NUM(DATADIR_INST, 13), + DATA_MAKE_NUM(DATADIR_INST, 14), + DATA_MAKE_NUM(DATADIR_INST, 14), + DATA_MAKE_NUM(DATADIR_INST, 9), }; -static s32 lbl_1_data_50[] = { - DATA_MAKE_NUM(DATADIR_INST, 0), - DATA_MAKE_NUM(DATADIR_INST, 1), - DATA_MAKE_NUM(DATADIR_INST, 2), - DATA_MAKE_NUM(DATADIR_INST, 3), - DATA_MAKE_NUM(DATADIR_INST, 4), - DATA_MAKE_NUM(DATADIR_INST, 0), - DATA_MAKE_NUM(DATADIR_INST, 5), - DATA_MAKE_NUM(DATADIR_INST, 0), -}; +static void InstPicDraw(ModelData *model, Mtx mtx); +static void ShadowDraw(ModelData *model, Mtx mtx); -static s32 lbl_1_data_70[] = { - DATA_MAKE_NUM(DATADIR_INST, 9), - DATA_MAKE_NUM(DATADIR_INST, 10), - DATA_MAKE_NUM(DATADIR_INST, 11), - DATA_MAKE_NUM(DATADIR_INST, 12), - DATA_MAKE_NUM(DATADIR_INST, 13), - DATA_MAKE_NUM(DATADIR_INST, 14), - DATA_MAKE_NUM(DATADIR_INST, 14), - DATA_MAKE_NUM(DATADIR_INST, 9), -}; - -static void fn_1_50B0(ModelData *model, Mtx mtx); -static void fn_1_5B64(ModelData *model, Mtx mtx); - -static void fn_1_994(void) +static void InstMain(void) { - - Vec pos; - Vec target; - Vec up; - - Vec spC; - Process *process; - - s16 i; - s16 model; - s16 num_coms; - s16 j; - s16 btns; - s32 status; - s32 done; - s16 group; - s32 pic; - omOvlHisData *his; - s16 sprite; - AnimData *anim; - float pos_z; - float time; - float fov_vel; - float rot_x; - - - process = HuPrcCurrentGet(); - status = -1; - group = HuSprGrpCreate(1); - anim = HuSprAnimRead(HuDataReadNum(lbl_1_data_70[mgInfoTbl[lbl_1_bss_14].type], MEMORY_DEFAULT_NUM)); - sprite = HuSprCreate(anim, 0, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprGrpDrawNoSet(group, 127); - HuSprPosSet(group, 0, 288, 240); - if(GWMGTypeGet() == -1) { - pic = mgInfoTbl[lbl_1_bss_14].inst_pic[0]; - } else { - pic = mgInfoTbl[lbl_1_bss_14].inst_pic[GWMGTypeGet()]; - } - lbl_1_bss_18 = HuSprAnimRead(HuDataReadNumHeapShortForce(pic, MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DShadowCreate(20, 500, 8000); - Hu3DShadowTPLvlSet(0); - Hu3DShadowSizeSet(192); - target.x = target.y = target.z = 0; - pos.x = pos.z = 100.0f; - pos.y = 7000.0f; - up.x = up.y = 0.0f; - up.z = 1.0f; - Hu3DShadowPosSet(&pos, &up, &target); - model = Hu3DModelCreateFile(lbl_1_data_50[mgInfoTbl[lbl_1_bss_14].type]); - lbl_1_bss_1C = model; - Hu3DModelPosSet(model, 0, 2000, 0); - Hu3DModelAttrSet(model, 0x40000002); - Hu3DModelCameraSet(model, 1); - Hu3DModelShadowSet(model); - i = Hu3DHookFuncCreate(fn_1_5B64); - Hu3DModelPosSet(i, 0, -200, 0); - Hu3DModelCameraSet(i, 1); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while(WipeStatGet()) { - HuPrcVSleep(); - } - pos_z = -500.0f; - for(i=0; i<=50; i++) { - Hu3DModelPosSet(model, 0.0f, 2500.0*cosd(i*1.8f)-200.0, pos_z); - Hu3DModelRotSet(model, 0, 0, 45.0f*(1.0f-(i/50.0f))); - pos_z += 50.0/7.0; - Hu3DShadowTPLvlSet(0.5*(i/50.0f)); - HuPrcVSleep(); - } - HuAudFXPlay(1211); - Hu3DModelAttrReset(model, 0x40000002); - for(i=1; i<=20; i++) { - Hu3DModelPosSet(model, 0.0f, (200.0*(sind(i*2.25f)*(1.0/sind(45))))-200.0, pos_z); - rot_x = (20-i)*cosd(i*13.5f); - Hu3DModelRotSet(model, rot_x, 0.0f, 0.0f); - pos_z += 50.0/7.0; - HuPrcVSleep(); - } - Hu3DModelPosSet(model, 0.0f, 0.0f, 0.0f); - Hu3DModelAttrSet(model, 0x40000002); - HuPrcSleep(10); - HuAudFXPlay(1212); - Hu3DModelAttrReset(model, 0x40000002); - i = Hu3DHookFuncCreate(fn_1_50B0); - - Hu3DModelCameraSet(i, 1); - Hu3DModelPosSet(i, 0, 415, 0); - lbl_1_data_0 = 0; - while(Hu3DMotionTimeGet(model) < 80.0f) { - if(Hu3DMotionTimeGet(model) > 30.0f) { - lbl_1_data_0 = 2; - } - HuPrcVSleep(); - } - Hu3DModelAttrSet(model, 0x40000002); - HuDataDirClose(DATADIR_INST); - status = HuDataDirReadAsync(mgInfoTbl[lbl_1_bss_14].data_dir); - while(lbl_1_data_0 != 1) { - HuPrcVSleep(); - } - done = 0; - for(i=num_coms=0; i<4; i++) { - if(GWPlayerCfg[i].iscom) { - num_coms++; - } - } - i=0; - while(1) { - if(!done) { - for(btns=j=0; j<4; j++) { - if(!GWPlayerCfg[j].iscom) { - btns |= HuPadBtnDown[GWPlayerCfg[j].pad_idx]; - } - } - if((btns == PAD_BUTTON_START) || omSysExitReq || (num_coms == 4 && i > 60)) { - HuAudFXPlay(2); - done = 1; - } - if(btns == PAD_TRIGGER_Z) { - HuAudFXPlay(1); - done = 1; - his = omOvlHisGet(0); - omOvlHisChg(0, OVL_INST, 1, his->stat); - _SetFlag(0x1000C); - } - if(mgInstExitEnableF && (btns & PAD_BUTTON_B)) { - HuAudFXPlay(3); - if(status != -1) { - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - HuAudSeqAllFadeOut(500); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuDataDirClose(mgInfoTbl[lbl_1_bss_14].data_dir); - if(mgInfoTbl[lbl_1_bss_14].ovl == OVL_M430) { - for(num_coms=0; num_coms<4; num_coms++) { - GWPlayerCfg[num_coms].group = GWPlayerCfg[num_coms].group/2; - } - } - omOvlReturnEx(1, 1); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } - } - } - if(!lbl_1_bss_4 || !done) { - HuPrcVSleep(); - i++; - continue; - } else { - break; - } - } - if(status != -1) { - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } - } - spC = lbl_1_bss_40[0]; - pos = lbl_1_bss_28[0]; - pos_z = lbl_1_bss_20[0]; - WipeColorSet(255, 255, 255); - lbl_1_data_0 = 3; - HuPrcSleep(20); - lbl_1_data_0 = 4; - HuPrcSleep(10); - - Hu3DModelAttrReset(model, 0x40000002); - HuPrcSleep(10); - fov_vel = 0; - for(i=0; i<=60; i++) { - time = i/60.0f; - lbl_1_bss_40[0].x = spC.x+((-65.0f-spC.x)*time); - lbl_1_bss_40[0].y = spC.y+((8.0f-spC.y)*time); - lbl_1_bss_40[0].z = spC.z+(-spC.z)*time; - lbl_1_bss_28[0].x = pos.x+((17.0f-pos.x)*time); - lbl_1_bss_28[0].y = pos.y+((5.0f-pos.y)*time); - lbl_1_bss_28[0].z = pos.z+((-188.0f-pos.z)*time); - lbl_1_bss_20[0] = pos_z+((1173.0f-pos_z)*time); - if(i == 30) { - HuAudFXPlay(1210); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - HuAudSeqAllFadeOut(1000); - } - if(i == 40) { - Hu3DModelAttrSet(model, 0x40000002); - } - if(i > 20) { - lbl_1_bss_C += fov_vel; - fov_vel += 0.04; - } - HuPrcVSleep(); - } - while(WipeStatGet()) { - lbl_1_bss_C += fov_vel; - fov_vel += 0.04; - HuPrcVSleep(); - } - lbl_1_data_0 = 6; - HuPrcVSleep(); - omSysPauseEnable(1); - if(omSysExitReq) { - HuDataDirClose(mgInfoTbl[lbl_1_bss_14].data_dir); - omOvlReturnEx(1, 1); - } else { - omOvlCallEx(mgInfoTbl[lbl_1_bss_14].ovl, 1, 0, 0); - } - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + Vec pos; + Vec target; + Vec up; + + Vec rot; + Process *proc; + + s16 i; + s16 model; + s16 comNum; + s16 j; + s16 btnDown; + s32 statId; + s32 endF; + s16 grpId; + s32 picFile; + omOvlHisData *his; + s16 sprId; + AnimData *anim; + float z; + float time; + float fovSpeed; + float rotX; + + proc = HuPrcCurrentGet(); + statId = -1; + grpId = HuSprGrpCreate(1); + anim = HuSprAnimRead(HuDataReadNum(instBackFile[mgInfoTbl[instMgNo].type], MEMORY_DEFAULT_NUM)); + sprId = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(grpId, 0, sprId); + HuSprGrpDrawNoSet(grpId, 127); + HuSprPosSet(grpId, 0, 288, 240); + if (GWMGTypeGet() == -1) { + picFile = mgInfoTbl[instMgNo].inst_pic[0]; + } + else { + picFile = mgInfoTbl[instMgNo].inst_pic[GWMGTypeGet()]; + } + instPicAnim = HuSprAnimRead(HuDataReadNumHeapShortForce(picFile, MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DShadowCreate(20, 500, 8000); + Hu3DShadowTPLvlSet(0); + Hu3DShadowSizeSet(192); + target.x = target.y = target.z = 0; + pos.x = pos.z = 100.0f; + pos.y = 7000.0f; + up.x = up.y = 0.0f; + up.z = 1.0f; + Hu3DShadowPosSet(&pos, &up, &target); + model = Hu3DModelCreateFile(instBoxFile[mgInfoTbl[instMgNo].type]); + instBoxMdlId = model; + Hu3DModelPosSet(model, 0, 2000, 0); + Hu3DModelAttrSet(model, HU3D_MOTATTR_PAUSE); + Hu3DModelCameraSet(model, 1); + Hu3DModelShadowSet(model); + i = Hu3DHookFuncCreate(ShadowDraw); + Hu3DModelPosSet(i, 0, -200, 0); + Hu3DModelCameraSet(i, 1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + z = -500.0f; + for (i = 0; i <= 50; i++) { + Hu3DModelPosSet(model, 0.0f, 2500.0 * cosd(i * 1.8f) - 200.0, z); + Hu3DModelRotSet(model, 0, 0, 45.0f * (1.0f - (i / 50.0f))); + z += 50.0 / 7.0; + Hu3DShadowTPLvlSet(0.5 * (i / 50.0f)); + HuPrcVSleep(); + } + HuAudFXPlay(1211); + Hu3DModelAttrReset(model, HU3D_MOTATTR_PAUSE); + for (i = 1; i <= 20; i++) { + Hu3DModelPosSet(model, 0.0f, (200.0 * (sind(i * 2.25f) * (1.0 / sind(45)))) - 200.0, z); + rotX = (20 - i) * cosd(i * 13.5f); + Hu3DModelRotSet(model, rotX, 0.0f, 0.0f); + z += 50.0 / 7.0; + HuPrcVSleep(); + } + Hu3DModelPosSet(model, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(model, HU3D_MOTATTR_PAUSE); + HuPrcSleep(10); + HuAudFXPlay(1212); + Hu3DModelAttrReset(model, HU3D_MOTATTR_PAUSE); + i = Hu3DHookFuncCreate(InstPicDraw); + + Hu3DModelCameraSet(i, 1); + Hu3DModelPosSet(i, 0, 415, 0); + instMode = 0; + while (Hu3DMotionTimeGet(model) < 80.0f) { + if (Hu3DMotionTimeGet(model) > 30.0f) { + instMode = 2; + } + HuPrcVSleep(); + } + Hu3DModelAttrSet(model, HU3D_MOTATTR_PAUSE); + HuDataDirClose(DATADIR_INST); + statId = HuDataDirReadAsync(mgInfoTbl[instMgNo].data_dir); + while (instMode != 1) { + HuPrcVSleep(); + } + endF = 0; + for (i = comNum = 0; i < 4; i++) { + if (GWPlayerCfg[i].iscom) { + comNum++; + } + } + i = 0; + while (1) { + if (!endF) { + for (btnDown = j = 0; j < 4; j++) { + if (!GWPlayerCfg[j].iscom) { + btnDown |= HuPadBtnDown[GWPlayerCfg[j].pad_idx]; + } + } + if ((btnDown == PAD_BUTTON_START) || omSysExitReq || (comNum == 4 && i > 60)) { + HuAudFXPlay(2); + endF = 1; + } + if (btnDown == PAD_TRIGGER_Z) { + HuAudFXPlay(1); + endF = 1; + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_INST, 1, his->stat); + _SetFlag(0x1000C); + } + if (mgInstExitEnableF && (btnDown & PAD_BUTTON_B)) { + HuAudFXPlay(3); + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + HuAudSeqAllFadeOut(500); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuDataDirClose(mgInfoTbl[instMgNo].data_dir); + if (mgInfoTbl[instMgNo].ovl == OVL_M430) { + for (comNum = 0; comNum < 4; comNum++) { + GWPlayerCfg[comNum].group = GWPlayerCfg[comNum].group / 2; + } + } + omOvlReturnEx(1, 1); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } + } + } + if (!instBusyF || !endF) { + HuPrcVSleep(); + i++; + continue; + } + else { + break; + } + } + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + rot = cameraRot[0]; + pos = cameraPos[0]; + z = cameraZoom[0]; + WipeColorSet(255, 255, 255); + instMode = 3; + HuPrcSleep(20); + instMode = 4; + HuPrcSleep(10); + + Hu3DModelAttrReset(model, HU3D_MOTATTR_PAUSE); + HuPrcSleep(10); + fovSpeed = 0; + for (i = 0; i <= 60; i++) { + time = i / 60.0f; + cameraRot[0].x = rot.x + ((-65.0f - rot.x) * time); + cameraRot[0].y = rot.y + ((8.0f - rot.y) * time); + cameraRot[0].z = rot.z + (-rot.z) * time; + cameraPos[0].x = pos.x + ((17.0f - pos.x) * time); + cameraPos[0].y = pos.y + ((5.0f - pos.y) * time); + cameraPos[0].z = pos.z + ((-188.0f - pos.z) * time); + cameraZoom[0] = z + ((1173.0f - z) * time); + if (i == 30) { + HuAudFXPlay(1210); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + HuAudSeqAllFadeOut(1000); + } + if (i == 40) { + Hu3DModelAttrSet(model, HU3D_MOTATTR_PAUSE); + } + if (i > 20) { + instFov += fovSpeed; + fovSpeed += 0.04; + } + HuPrcVSleep(); + } + while (WipeStatGet()) { + instFov += fovSpeed; + fovSpeed += 0.04; + HuPrcVSleep(); + } + instMode = 6; + HuPrcVSleep(); + omSysPauseEnable(1); + if (omSysExitReq) { + HuDataDirClose(mgInfoTbl[instMgNo].data_dir); + omOvlReturnEx(1, 1); + } + else { + omOvlCallEx(mgInfoTbl[instMgNo].ovl, 1, 0, 0); + } + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -static char *lbl_1_data_B0[] = { - "p_pos_a", - "p_pos_b", - "p_pos_c", - "p_pos_d" -}; +static char *playerPosNameTbl[] = { "p_pos_a", "p_pos_b", "p_pos_c", "p_pos_d" }; -static u8 lbl_1_data_C0[] = { - 8, - 0, - 12, - 4 -}; +static u8 playerDelayTbl[] = { 8, 0, 12, 4 }; -static void fn_1_17E4(void) +static void InstPlayerMain(void) { - float tplvl; - s16 i; - s16 j; - s16 time; - s16 player_cnt; - s16 order; - s16 type; - s16 group_type; - s16 group; - ModelData *model; - s16 player_mdl[4]; - s16 char_tbl[4]; - s16 platform_mdl[4]; - s16 player_order[4]; - s16 mot_tbl[4][3]; - Vec player_pos[4]; - - type = mgInfoTbl[lbl_1_bss_14].type; - player_cnt = lbl_1_data_46[type]; - for(i=0; i= 0) { - tplvl = 0.1*time; - Hu3DModelTPLvlSet(platform_mdl[j], 0.5*tplvl); - Hu3DModelScaleSet(platform_mdl[j], tplvl, tplvl, tplvl); - } - } - } - HuPrcVSleep(); - } - model = &Hu3DData[player_mdl[0]]; - while(lbl_1_data_0 != 4) { - HuPrcVSleep(); - } - for(i=0; i<=45; i++) { - for(j=0; j= 0) { + tpLvl = 0.1 * time; + Hu3DModelTPLvlSet(shadowMdl[j], 0.5 * tpLvl); + Hu3DModelScaleSet(shadowMdl[j], tpLvl, tpLvl, tpLvl); + } + } + } + HuPrcVSleep(); + } + modelP = &Hu3DData[playerMdlId[0]]; + while (instMode != 4) { + HuPrcVSleep(); + } + for (i = 0; i <= 45; i++) { + for (j = 0; j < playerNum; j++) { + time = i - playerDelayTbl[j]; + if (time < 0) { + continue; + } + if (time == 0) { + Hu3DModelAttrReset(playerMdlId[j], HU3D_MOTATTR_LOOP); + CharModelVoiceEnableSet(charNo[i], motId[i][1], 1); + CharModelMotionSet(charNo[j], motId[j][1]); + } + if (time <= 30) { + Hu3DModelPosSet(playerMdlId[j], playerPos[j].x, playerPos[j].y + (300.0 * sind(time * 9.0f)), playerPos[j].z - (time * 20)); + if (time <= 10) { + tpLvl = 1 - (0.1 * time); + Hu3DModelTPLvlSet(shadowMdl[j], 0.5 * tpLvl); + Hu3DModelScaleSet(shadowMdl[j], tpLvl, tpLvl, tpLvl); + } + } + } + HuPrcVSleep(); + } + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -static s32 lbl_1_data_C4[] = { - DATA_MAKE_NUM(DATADIR_INST, 19), - DATA_MAKE_NUM(DATADIR_INST, 20), - DATA_MAKE_NUM(DATADIR_INST, 21), - DATA_MAKE_NUM(DATADIR_INST, 22), - DATA_MAKE_NUM(DATADIR_INST, 23), - DATA_MAKE_NUM(DATADIR_INST, 24), - DATA_MAKE_NUM(DATADIR_INST, 25), - DATA_MAKE_NUM(DATADIR_INST, 26), - DATA_MAKE_NUM(DATADIR_INST, 27), - DATA_MAKE_NUM(DATADIR_INST, 28), - DATA_MAKE_NUM(DATADIR_INST, 29), - DATA_MAKE_NUM(DATADIR_INST, 30), - DATA_MAKE_NUM(DATADIR_INST, 31), - DATA_MAKE_NUM(DATADIR_INST, 32), - DATA_MAKE_NUM(DATADIR_INST, 33), - DATA_MAKE_NUM(DATADIR_INST, 34), - DATA_MAKE_NUM(DATADIR_INST, 35), - DATA_MAKE_NUM(DATADIR_INST, 36), +static s32 hostFileTbl[] = { + DATA_MAKE_NUM(DATADIR_INST, 19), + DATA_MAKE_NUM(DATADIR_INST, 20), + DATA_MAKE_NUM(DATADIR_INST, 21), + DATA_MAKE_NUM(DATADIR_INST, 22), + DATA_MAKE_NUM(DATADIR_INST, 23), + DATA_MAKE_NUM(DATADIR_INST, 24), + DATA_MAKE_NUM(DATADIR_INST, 25), + DATA_MAKE_NUM(DATADIR_INST, 26), + DATA_MAKE_NUM(DATADIR_INST, 27), + DATA_MAKE_NUM(DATADIR_INST, 28), + DATA_MAKE_NUM(DATADIR_INST, 29), + DATA_MAKE_NUM(DATADIR_INST, 30), + DATA_MAKE_NUM(DATADIR_INST, 31), + DATA_MAKE_NUM(DATADIR_INST, 32), + DATA_MAKE_NUM(DATADIR_INST, 33), + DATA_MAKE_NUM(DATADIR_INST, 34), + DATA_MAKE_NUM(DATADIR_INST, 35), + DATA_MAKE_NUM(DATADIR_INST, 36), }; -static u16 lbl_1_data_10C[] = { - 55, - 57, - 68, - 67, - 64, - 65, - 75, - 76, - 70, - 71, - 62, - 62 -}; +static u16 hostSeTbl[] = { 55, 57, 68, 67, 64, 65, 75, 76, 70, 71, 62, 62 }; -static void fn_1_220C(void) +static void InstHostMain(void) { - float ofs_x; - s16 i; - s16 model; - s16 motion[2]; - ModelData *model_ptr; - model = Hu3DModelCreateFile(lbl_1_data_C4[lbl_1_bss_12*3]); - motion[0] = Hu3DJointMotionFile(model, lbl_1_data_C4[(lbl_1_bss_12*3)+1]); - motion[1] = Hu3DJointMotionFile(model, lbl_1_data_C4[(lbl_1_bss_12*3)+2]); - Hu3DMotionSet(model, motion[1]); - if(lbl_1_bss_12 == 3) { - ofs_x = 50; - } else { - ofs_x = 0; - } - Hu3DModelPosSet(model, -353.0f+ofs_x, -150, 356); - Hu3DModelRotSet(model, 0, 90, 0); - Hu3DModelCameraSet(model, 2); - while(lbl_1_data_0 != 2) { - HuPrcVSleep(); - } - HuPrcSleep(30); - Hu3DMotionTimeSet(model, 40); - HuAudFXPlay(lbl_1_data_10C[lbl_1_bss_12*2]); - for(i=0; i<=20; i++) { - Hu3DModelPosSet(model, -153.0f-(100.0f-(100.0f*(i/20.0f))), (100.0*sind(i*9.0f)) + -150.0 + ofs_x, 356.0f); - HuPrcVSleep(); - } - for(i=0; i<=10; i++) { - Hu3DModelPosSet(model, -153.0f, (15.0*sind(i*18.0f)) + -150.f + ofs_x, 356.0f); - Hu3DModelRotSet(model, 0.0f, 90-((i/10.0f)*70), 0); - HuPrcVSleep(); - } - Hu3DMotionShiftSet(model, motion[0], 0, 10, 0x40000001); - model_ptr = &Hu3DData[model]; - while(1) { - fontcolor = FONT_COLOR_RED; - if(lbl_1_data_0 == 3) { - break; - } - HuPrcVSleep(); - } - Hu3DMotionSet(model, motion[1]); - HuPrcSleep(20); - HuAudFXPlay(lbl_1_data_10C[(lbl_1_bss_12*2)+1]); - for(i=0; i<=30; i++) { - Hu3DModelPosSet(model, (i*5)-153, (50.0*sind(i*9.0f)) + -150.0 + ofs_x, (i*20)+356); - HuPrcVSleep(); - } - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + float ofsX; + s16 i; + s16 modelId; + s16 motId[2]; + ModelData *modelP; + modelId = Hu3DModelCreateFile(hostFileTbl[instHostNo * 3]); + motId[0] = Hu3DJointMotionFile(modelId, hostFileTbl[(instHostNo * 3) + 1]); + motId[1] = Hu3DJointMotionFile(modelId, hostFileTbl[(instHostNo * 3) + 2]); + Hu3DMotionSet(modelId, motId[1]); + if (instHostNo == 3) { + ofsX = 50; + } + else { + ofsX = 0; + } + Hu3DModelPosSet(modelId, -353.0f + ofsX, -150, 356); + Hu3DModelRotSet(modelId, 0, 90, 0); + Hu3DModelCameraSet(modelId, 2); + while (instMode != 2) { + HuPrcVSleep(); + } + HuPrcSleep(30); + Hu3DMotionTimeSet(modelId, 40); + HuAudFXPlay(hostSeTbl[instHostNo * 2]); + for (i = 0; i <= 20; i++) { + Hu3DModelPosSet(modelId, -153.0f - (100.0f - (100.0f * (i / 20.0f))), (100.0 * sind(i * 9.0f)) + -150.0 + ofsX, 356.0f); + HuPrcVSleep(); + } + for (i = 0; i <= 10; i++) { + Hu3DModelPosSet(modelId, -153.0f, (15.0 * sind(i * 18.0f)) + -150.f + ofsX, 356.0f); + Hu3DModelRotSet(modelId, 0.0f, 90 - ((i / 10.0f) * 70), 0); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(modelId, motId[0], 0, 10, HU3D_MOTATTR_LOOP); + modelP = &Hu3DData[modelId]; + while (1) { + fontcolor = FONT_COLOR_RED; + if (instMode == 3) { + break; + } + HuPrcVSleep(); + } + Hu3DMotionSet(modelId, motId[1]); + HuPrcSleep(20); + HuAudFXPlay(hostSeTbl[(instHostNo * 2) + 1]); + for (i = 0; i <= 30; i++) { + Hu3DModelPosSet(modelId, (i * 5) - 153, (50.0 * sind(i * 9.0f)) + -150.0 + ofsX, (i * 20) + 356); + HuPrcVSleep(); + } + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -static void fn_1_2804(void) +static void InstWinMain(void) { - float pos_x; - s16 i; - s16 window; - s16 window_other; - s16 j; - s16 insert_idx; - s16 rtrig; - s16 groupCnt[4]; - s16 charTbl[4][4]; - - window = HuWinExCreateStyled(640, 320, 412, 120, -1, 1); - while(lbl_1_data_0 != 0) { - HuPrcVSleep(); - } - HuWinDispOn(window); - HuWinMesSet(window, mgInfoTbl[lbl_1_bss_14].inst_mess[0]); - HuWinMesPalSet(window, 7, 0, 0, 192); - HuWinMesSpeedSet(window, 0); - window_other = HuWinExCreateStyled(640, 320, 412, 120, -1, 1); - HuWinDispOn(window_other); - HuWinMesSpeedSet(window_other, 0); - HuWinPosSet(window_other, 142.0f, 640.0f); - lbl_1_bss_6 = 0; - for(i=0; i<4; i++) { - groupCnt[i] = 0; - } - - for(i=0; i<4; i++) { - charTbl[GWPlayerCfg[i].group][groupCnt[GWPlayerCfg[i].group]] = GWPlayerCfg[i].character; - groupCnt[GWPlayerCfg[i].group]++; - } - for(i=insert_idx=0; i<4; i++) { - for(j=0; j= 4) { - lbl_1_bss_6 = 0; - } - HuWinMesSet(window, mgInfoTbl[lbl_1_bss_14].inst_mess[lbl_1_bss_6]); - HuWinMesPalSet(window, 7, 0, 0, 192); - HuWinPosSet(window_other, 142.0f, 320.0f); - for(i=0; i<=10; i++) { - HuWinPosSet(window_other, 30.0*sind(i*9.0f)+142.0, 160.0*(1.0-cosd(i*9.0f))+320.0); - HuPrcVSleep(); - } - HuPrcSleep(5); - } - lbl_1_bss_4 = 1; - HuPrcVSleep(); - } - for(i=0; i<=20; i++) { - pos_x = 500.0*(1.0-cosd(i*4.5f))+142.0; - HuWinPosSet(window, pos_x, 320); - HuPrcVSleep(); - } - HuWinAllKill(); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + float posX; + s16 i; + s16 winId; + s16 win2Id; + s16 j; + s16 insert_idx; + s16 trigR; + s16 groupCnt[4]; + s16 charTbl[4][4]; + + winId = HuWinExCreateStyled(640, 320, 412, 120, -1, 1); + while (instMode != 0) { + HuPrcVSleep(); + } + HuWinDispOn(winId); + HuWinMesSet(winId, mgInfoTbl[instMgNo].inst_mess[0]); + HuWinMesPalSet(winId, 7, 0, 0, 192); + HuWinMesSpeedSet(winId, 0); + win2Id = HuWinExCreateStyled(640, 320, 412, 120, -1, 1); + HuWinDispOn(win2Id); + HuWinMesSpeedSet(win2Id, 0); + HuWinPosSet(win2Id, 142.0f, 640.0f); + instPage = 0; + for (i = 0; i < 4; i++) { + groupCnt[i] = 0; + } + + for (i = 0; i < 4; i++) { + charTbl[GWPlayerCfg[i].group][groupCnt[GWPlayerCfg[i].group]] = GWPlayerCfg[i].character; + groupCnt[GWPlayerCfg[i].group]++; + } + for (i = insert_idx = 0; i < 4; i++) { + for (j = 0; j < groupCnt[i]; j++) { + HuWinInsertMesSet(winId, charTbl[i][j], (s16)insert_idx); + insert_idx++; + } + } + while (instMode != 2) { + HuPrcVSleep(); + } + HuPrcSleep(40); + for (i = 0; i <= 20; i++) { + posX = 500.0 * cosd(i * 4.5f) + 142.0; + HuWinPosSet(winId, posX, 320); + HuPrcVSleep(); + } + instMode = 1; + while (instMode != 3) { + for (i = trigR = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + trigR |= HuPadTrigR[GWPlayerCfg[i].pad_idx] & 0xC0; + } + } + if (trigR) { + HuAudFXPlay(1213); + instBusyF = 0; + HuWinMesSet(win2Id, mgInfoTbl[instMgNo].inst_mess[instPage]); + HuWinMesPalSet(win2Id, 7, 0, 0, 192); + instPage++; + if (mgInfoTbl[instMgNo].inst_mess[instPage] == 0) { + instPage++; + } + if (instPage >= 4) { + instPage = 0; + } + HuWinMesSet(winId, mgInfoTbl[instMgNo].inst_mess[instPage]); + HuWinMesPalSet(winId, 7, 0, 0, 192); + HuWinPosSet(win2Id, 142.0f, 320.0f); + for (i = 0; i <= 10; i++) { + #if VERSION_NTSC + HuWinPosSet(win2Id, 30.0 * sind(i * 9.0f) + 142.0, 160.0 * (1.0 - cosd(i * 9.0f)) + 320.0); + #else + HuWinPosSet(win2Id, 30.0 * sind(i * 9.0f) + 142.0, 180.0 * (1.0 - cosd(i * 9.0f)) + 320.0); + #endif + HuPrcVSleep(); + } + HuPrcSleep(5); + } + instBusyF = 1; + HuPrcVSleep(); + } + for (i = 0; i <= 20; i++) { + posX = 500.0 * (1.0 - cosd(i * 4.5f)) + 142.0; + HuWinPosSet(winId, posX, 320); + HuPrcVSleep(); + } + HuWinAllKill(); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -static float lbl_1_data_124[] = { - 420, - 70, - 488, - 186, - 476, - 242, - 400, - 292 -}; +static float instNamePosTbl[] = { 420, 70, 488, 186, 476, 242, 400, 292 }; -s32 fn_1_5EA4(SeqWork *work, char *mess, s16 jp_flag); +#if VERSION_NTSC +#define WIN_ANIM_OFS 201 +#else +#define WIN_ANIM_OFS 219 +#endif -static void fn_1_2FA0(void) +static void InstNameMain(void) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - s16 temp_r31; - s16 temp_r30; - char *temp_r29; - AnimData *temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - s16 temp_r23; - s16 temp_r22; - u16 temp_r21; - char *temp_r20; - s16 temp_r17; - s16 spA; - s16 sp8; - - s16 spC[2]; - s16 sp10[4]; - SeqWork work; - temp_r21 = 0; - for(temp_r31=0; temp_r31<16; temp_r31++) { - work.sprite[temp_r31] = work.spr_grp[temp_r31] = -1; - } - temp_r20 = MessData_MesPtrGet(messDataPtr, mgInfoTbl[lbl_1_bss_14].name_mess); - temp_r29 = temp_r20; - temp_r31 = 0; - temp_r26 = 0; - while(1) { - if(*temp_r29 == 0 || *temp_r29 == 10) { - if(*temp_r29 == 0) { - temp_r31 = 1; - } - *temp_r29 = 0; - fn_1_5EA4(&work, temp_r20, (lbl_1_bss_8 == 0) ? 1 : 0); - HuSprGrpPosSet(work.spr_grp[temp_r26], 288.0f, 240.0f); - spC[temp_r26] = work.alt_word_len; - temp_r26++; - if(temp_r31) { - break; - } - temp_r20 = temp_r29+1; - } - - temp_r29++; - } - if(temp_r26 == 1) { - temp_r22 = spC[0]; - temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 18)); - temp_f29 = ((576.0f-temp_r22)-24.0f)-16.0f+227.0f; - temp_f28 = 78; - temp_f27 = 0.5f; - } else { - temp_r22 = (spC[0] > spC[1]) ? spC[0] : spC[1]; - temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 15)); - temp_f29 = ((576.0f-temp_r22)-24.0f)-16.0f+172.0f; - temp_f28 = 84; - temp_f27 = 1.0f; - } - temp_r25 = HuSprGrpCreate(1); - temp_r17 = HuSprCreate(temp_r28, 0, 0); - HuSprGrpMemberSet(temp_r25, 0, temp_r17); - HuSprPriSet(temp_r25, 0, 100); - HuSprGrpPosSet(temp_r25, 10000, 70); - HuSprScaleSet(temp_r25, 0, 1.0f, temp_f27); - for(temp_r31=0; temp_r31 0.0f) { - if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cosd(4.5f*temp_f30)+lbl_1_data_124[2]; - HuSprGrpPosSet(temp_r24, temp_f31, 186.0f); - temp_f31 = 300.0*cosd(4.5f*temp_f30)+(lbl_1_data_124[2]-88.0f); - HuWinPosSet(sp10[0], 16.0f+temp_f31, 168.0f); - } - } - temp_f30 = temp_r31-6; - if(temp_f30 > 0.0f) { - if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cosd(4.5f*temp_f30)+lbl_1_data_124[4]; - HuSprGrpPosSet(temp_r23, temp_f31, 242.0f); - temp_f31 = 300.0*cosd(4.5f*temp_f30)+(lbl_1_data_124[4]-100.0f); - HuWinPosSet(sp10[1], 16.0f+temp_f31, 224.0f); - } - } - temp_f30 = temp_r31-9; - if(temp_f30 > 0.0f) { - if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cosd(4.5f*temp_f30)+(lbl_1_data_124[6]-217.0f); - HuWinPosSet(sp10[2], 16.0f+temp_f31, 274.0f); - } - } - HuPrcVSleep(); - } - while(lbl_1_data_0 != 3) { - if(temp_r21 != lbl_1_bss_6) { - temp_f31 = 16.0f+(lbl_1_data_124[6]-217.0f); - HuWinMesSet(temp_r27, 0x240002+lbl_1_bss_10+temp_r21); - temp_r21 = lbl_1_bss_6; - if(lbl_1_bss_6 == 1) { - if(mgInfoTbl[lbl_1_bss_14].inst_mess[2]) { - HuWinMesSet(sp10[2], 0x240002+lbl_1_bss_10+lbl_1_bss_6); - } else { - HuWinMesSet(sp10[2], 0x240006+lbl_1_bss_10); - } - } else { - HuWinMesSet(sp10[2], 0x240002+lbl_1_bss_10+lbl_1_bss_6); - } - for(temp_r31=0; temp_r31<=10; temp_r31++) { - HuWinPosSet(temp_r27, 30.0*sind(temp_r31*9.0f)+temp_f31, 200.0*(1.0-cosd(temp_r31*9.0f))+274.0); - HuPrcVSleep(); - } - } - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f30 = 1.0-cosd(temp_r31*4.5f); - temp_f31 = temp_f29+(500.0f*temp_f30); - HuSprGrpPosSet(temp_r25, temp_f31, temp_f28); - temp_f31 = ((576.0f-(work.alt_word_len/2))-24.0f)+(500.0f*temp_f30); - for(temp_r30=0; temp_r30 spC[1]) ? spC[0] : spC[1]; + nameAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 15)); + + nameX = ((576.0f - nameW) - 24.0f) - 16.0f + 172.0f; + nameY = 84; + nameScaleY = 1.0f; + } + #else + if (mesSpaceNum == 1) { + nameW = spC[0]; + nameAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 18)); + nameX = ((576.0f - nameW) - 24.0f) - 16.0f + 235; + nameY = 78; + nameScaleY = 0.5f; + } + else { + nameW = (spC[0] > spC[1]) ? spC[0] : spC[1]; + nameAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 15)); + + nameX = ((576.0f - nameW) - 24.0f) - 16.0f + 235; + nameY = 84; + nameScaleY = 1.0f; + } + #endif + nameGrpId = HuSprGrpCreate(1); + nameSprId = HuSprCreate(nameAnim, 0, 0); + HuSprGrpMemberSet(nameGrpId, 0, nameSprId); + HuSprPriSet(nameGrpId, 0, 100); + HuSprGrpPosSet(nameGrpId, 10000, 70); + HuSprScaleSet(nameGrpId, 0, 1.0f, nameScaleY); + for (i = 0; i < mesSpaceNum; i++) { + HuSprGrpPosSet(work.spr_grp[i], 1000, 70); + } + nameAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 16)); + startGrpId = HuSprGrpCreate(1); + startSprId = HuSprCreate(nameAnim, 0, 0); + HuSprGrpMemberSet(startGrpId, 0, startSprId); + HuSprGrpPosSet(startGrpId, 1000, 186); + HuSprPriSet(startGrpId, 0, 1000); + sp10[0] = HuWinCreate(1000, 186, 456, 42, 0); + HuWinMesSet(sp10[0], MAKE_MESSID(0x24, instMesOfs)); + HuWinBGTPLvlSet(sp10[0], 0.0f); + nameAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 17)); + practiceGrpId = HuSprGrpCreate(1); + practiceSprId = HuSprCreate(nameAnim, 0, 0); + HuSprGrpMemberSet(practiceGrpId, 0, practiceSprId); + HuSprGrpPosSet(practiceGrpId, 1000, 242); + HuSprPriSet(practiceGrpId, 0, 1000); + sp10[1] = HuWinCreate(1000, 242, 456, 42, 0); + HuWinMesSet(sp10[1], instMesOfs + MAKE_MESSID(0x24, 0x01)); + HuWinBGTPLvlSet(sp10[1], 0.0f); + nameAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_INST, 18)); + sp10[2] = HuWinCreate(1000, 292, 456, 42, 0); + HuWinMesSet(sp10[2], instMesOfs + MAKE_MESSID(0x24, 0x02)); + HuWinBGTPLvlSet(sp10[2], 0.0f); + HuWinMesSpeedSet(sp10[2], 0); + i = HuWinAnimSet(sp10[2], nameAnim, 0, WIN_ANIM_OFS, 18); + HuWinSprPriSet(sp10[2], i, 1000); + rulesWinId = HuWinCreate(1000, 292, 456, 42, 0); + HuWinBGTPLvlSet(rulesWinId, 0.0f); + HuWinMesSpeedSet(rulesWinId, 0); + HuWinMesSet(rulesWinId, instMesOfs + MAKE_MESSID(0x24, 0x02)); + i = HuWinAnimSet(rulesWinId, nameAnim, 0, WIN_ANIM_OFS, 18); + HuWinPriSet(rulesWinId, 10); + HuWinSprPriSet(rulesWinId, i, 11); + while (instMode != 0) { + HuPrcVSleep(); + } + for (i = 0; i < 36; i++) { + t = i; + if (t <= 20.0f) { + #if VERSION_NTSC + posX = 300.0 * cosd(4.5f * t) + nameX; + HuSprGrpPosSet(nameGrpId, posX, nameY); + posX = 300.0 * cosd(4.5f * t) + (576.0f - (nameW / 2) - 24.0f); + for (j = 0; j < mesSpaceNum; j++) { + HuSprGrpPosSet(work.spr_grp[j], posX, (j * 28) + 70); + } + #else + posX = 500.0 * cosd(4.5f * t) + nameX; + HuSprGrpPosSet(nameGrpId, posX, nameY); + posX = 500.0 * cosd(4.5f * t) + (576.0f - (nameW / 2) - 24.0f); + for (j = 0; j < mesSpaceNum; j++) { + HuSprGrpPosSet(work.spr_grp[j], posX, (j * 28) + 70); + } + #endif + } + t = i - 3; + if (t > 0.0f) { + if (t <= 20.0f) { + posX = 300.0 * cosd(4.5f * t) + instNamePosTbl[2]; + HuSprGrpPosSet(startGrpId, posX, 186.0f); + posX = 300.0 * cosd(4.5f * t) + (instNamePosTbl[2] - 88.0f); + #if VERSION_NTSC + HuWinPosSet(sp10[0], 16.0f + posX, 168.0f); + #else + HuWinPosSet(sp10[0], 8.0f + posX, 168.0f); + #endif + } + } + t = i - 6; + if (t > 0.0f) { + if (t <= 20.0f) { + posX = 300.0 * cosd(4.5f * t) + instNamePosTbl[4]; + HuSprGrpPosSet(practiceGrpId, posX, 242.0f); + posX = 300.0 * cosd(4.5f * t) + (instNamePosTbl[4] - 100.0f); + #if VERSION_NTSC + HuWinPosSet(sp10[1], 16.0f + posX, 224.0f); + #else + HuWinPosSet(sp10[1], 8.0f + posX, 224.0f); + #endif + } + } + t = i - 9; + if (t > 0.0f) { + if (t <= 20.0f) { + posX = 300.0 * cosd(4.5f * t) + (instNamePosTbl[6] - (WIN_ANIM_OFS+16)); + HuWinPosSet(sp10[2], 16.0f + posX, 274.0f); + } + } + HuPrcVSleep(); + } + while (instMode != 3) { + if (prevPage != instPage) { + posX = 16.0f + (instNamePosTbl[6] - (WIN_ANIM_OFS+16)); + HuWinMesSet(rulesWinId, MAKE_MESSID(0x24, 0x02) + instMesOfs + prevPage); + prevPage = instPage; + if (instPage == 1) { + if (mgInfoTbl[instMgNo].inst_mess[2]) { + HuWinMesSet(sp10[2], MAKE_MESSID(0x24, 0x02) + instMesOfs + instPage); + } + else { + HuWinMesSet(sp10[2], MAKE_MESSID(0x24, 0x06) + instMesOfs); + } + } + else { + HuWinMesSet(sp10[2], MAKE_MESSID(0x24, 0x02) + instMesOfs + instPage); + } + for (i = 0; i <= 10; i++) { + #if VERSION_NTSC + HuWinPosSet(rulesWinId, 30.0 * sind(i * 9.0f) + posX, 200.0 * (1.0 - cosd(i * 9.0f)) + 274.0); + #else + HuWinPosSet(rulesWinId, 30.0 * sind(i * 9.0f) + posX, 220.0 * (1.0 - cosd(i * 9.0f)) + 274.0); + #endif + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } + for (i = 0; i < 20; i++) { + t = 1.0 - cosd(i * 4.5f); + posX = nameX + (500.0f * t); + HuSprGrpPosSet(nameGrpId, posX, nameY); + posX = ((576.0f - (work.alt_word_len / 2)) - 24.0f) + (500.0f * t); + for (j = 0; j < mesSpaceNum; j++) { + HuSprGrpPosSet(work.spr_grp[j], posX, (j * 28) + 70); + } + posX = instNamePosTbl[2] + (300.0f * t); + HuSprGrpPosSet(startGrpId, posX, 186.0f); + posX = (instNamePosTbl[2] - 88.0f) + (300.0f * t); + HuWinPosSet(sp10[0], 16.0f + posX, 168); + posX = instNamePosTbl[4] + (300.0f * t); + HuSprGrpPosSet(practiceGrpId, posX, 242.0f); + posX = (instNamePosTbl[4] - 100.0f) + (300.0f * t); + HuWinPosSet(sp10[1], 16.0f + posX, 224); + #if VERSION_NTSC + posX = (instNamePosTbl[6] - 184.0f) + (400.0f * t); + #else + posX = (instNamePosTbl[6] - 235.0f) + (400.0f * t); + #endif + HuWinPosSet(sp10[2], 16.0f + posX, 274); + HuPrcVSleep(); + } + MGSeqSprKill(&work); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -static void fn_1_4528(omObjData *object) +static void CameraOutView(omObjData *object) { - Vec pos; + s16 i; + static u16 cameraMask[] = { HU3D_CAM0, HU3D_CAM1 }; + for (i = 0; i < 2; i++) { + Vec pos, target, up; + float x, y, z; + + x = cameraRot[i].x; + y = cameraRot[i].y; + z = cameraRot[i].z; + + pos.x = (((sind(y) * cosd(x)) * cameraZoom[i]) + cameraPos[i].x); + pos.y = (-sind(x) * cameraZoom[i]) + cameraPos[i].y; + pos.z = ((cosd(y) * cosd(x)) * cameraZoom[i]) + cameraPos[i].z; + target.x = cameraPos[i].x; + target.y = cameraPos[i].y; + target.z = cameraPos[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(cameraMask[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } +} + +static void CameraDebug(omObjData *object) +{ + Vec pos; Vec offset; Vec dir; - Vec y_offset; - - f32 z_rot; - s8 stick_pos; + Vec yOffset; - if (lbl_1_bss_0 != 0) { - lbl_1_bss_40[0].y += 0.1f * HuPadStkX[0]; - lbl_1_bss_40[0].x += 0.1f * HuPadStkY[0]; - lbl_1_bss_20[0] += HuPadTrigL[0] / 2; - lbl_1_bss_20[0] -= HuPadTrigR[0] / 2; - if (lbl_1_bss_20[0] < 100.0f) { - lbl_1_bss_20[0] = 100.0f; + float rotZ; + s8 stickPos; + + if (debugCamOnF != 0) { + cameraRot[0].y += 0.1f * HuPadStkX[0]; + cameraRot[0].x += 0.1f * HuPadStkY[0]; + cameraZoom[0] += HuPadTrigL[0] / 2; + cameraZoom[0] -= HuPadTrigR[0] / 2; + if (cameraZoom[0] < 100.0f) { + cameraZoom[0] = 100.0f; } - pos.x = lbl_1_bss_28[0].x + (lbl_1_bss_20[0] * (sind(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x))); - pos.y = (lbl_1_bss_28[0].y + (lbl_1_bss_20[0] * -sind(lbl_1_bss_40[0].x))); - pos.z = (lbl_1_bss_28[0].z + (lbl_1_bss_20[0] * (cosd(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x)))); - offset.x = lbl_1_bss_28[0].x - pos.x; - offset.y = lbl_1_bss_28[0].y - pos.y; - offset.z = lbl_1_bss_28[0].z - pos.z; - dir.x = (sind(lbl_1_bss_40[0].y) * sind(lbl_1_bss_40[0].x)); - dir.y = cosd(lbl_1_bss_40[0].x); - dir.z = (cosd(lbl_1_bss_40[0].y) * sind(lbl_1_bss_40[0].x)); - z_rot = lbl_1_bss_40[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)); + pos.x = cameraPos[0].x + (cameraZoom[0] * (sind(cameraRot[0].y) * cosd(cameraRot[0].x))); + pos.y = (cameraPos[0].y + (cameraZoom[0] * -sind(cameraRot[0].x))); + pos.z = (cameraPos[0].z + (cameraZoom[0] * (cosd(cameraRot[0].y) * cosd(cameraRot[0].x)))); + offset.x = cameraPos[0].x - pos.x; + offset.y = cameraPos[0].y - pos.y; + offset.z = cameraPos[0].z - pos.z; + dir.x = (sind(cameraRot[0].y) * sind(cameraRot[0].x)); + dir.y = cosd(cameraRot[0].x); + dir.z = (cosd(cameraRot[0].y) * sind(cameraRot[0].x)); + rotZ = cameraRot[0].z; + yOffset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(rotZ)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(rotZ)) - offset.z * sind(rotZ)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(rotZ)) + offset.y * sind(rotZ)); - 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))); + yOffset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(rotZ)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(rotZ)) + offset.z * sind(rotZ)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(rotZ)) - offset.x * sind(rotZ)); - PSVECCrossProduct(&dir, &offset, &offset); - PSVECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_28[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_28[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_28[0].z += 0.05f * (offset.z * stick_pos); + yOffset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(rotZ)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(rotZ)) - offset.y * sind(rotZ)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(rotZ)) + offset.x * sind(rotZ))); + + VECCrossProduct(&dir, &offset, &offset); + VECNormalize(&offset, &offset); + stickPos = (HuPadSubStkX[0] & 0xF8); + if (stickPos != 0) { + cameraPos[0].x += 0.05f * (offset.x * stickPos); + cameraPos[0].y += 0.05f * (offset.y * stickPos); + cameraPos[0].z += 0.05f * (offset.z * stickPos); } - PSVECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_28[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_28[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_28[0].z += 0.05f * (offset.z * stick_pos); + VECNormalize(&yOffset, &offset); + stickPos = -(HuPadSubStkY[0] & 0xF8); + if (stickPos != 0) { + cameraPos[0].x += 0.05f * (offset.x * stickPos); + cameraPos[0].y += 0.05f * (offset.y * stickPos); + cameraPos[0].z += 0.05f * (offset.z * stickPos); } } } static float lbl_1_data_148 = 842; -static float lbl_1_data_14C = 34; +static float instPicRadius = 34; -static void fn_1_50B0(ModelData *model, Mtx mtx) +static void InstPicDraw(ModelData *model, Mtx mtx) { - Mtx final; - Mtx inv_camera; - Mtx lookatlight; - Mtx light; - Mtx lookat; - Vec pos; - Vec up; - Vec target; + Mtx final; + Mtx invCamera; + Mtx lookAtLight; + Mtx light; + Mtx lookat; + Vec pos; + Vec up; + Vec target; - s32 x; - s32 y; - u8 r; - u8 g; - u8 b; - s16 row; - - s32 sp8 = 0; - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0); - GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - target.x = target.z = 0.0f; - target.x = lbl_1_data_14C*sind(lbl_1_bss_40[0].y); - target.z = lbl_1_data_14C*cosd(lbl_1_bss_40[0].y); - target.y = 415.0f; - pos.x = (sind(lbl_1_bss_40[0].y)*cosd(lbl_1_bss_40[0].x)*lbl_1_bss_20[0])+lbl_1_bss_28[0].x; - pos.y = (-sind(lbl_1_bss_40[0].x)*lbl_1_bss_20[0])+lbl_1_bss_28[0].y; - pos.z = (cos(M_PI*lbl_1_bss_40[0].y/180.0)*cosd(lbl_1_bss_40[0].x)*lbl_1_bss_20[0])+lbl_1_bss_28[0].z; - up.x = -sind(lbl_1_bss_40[0].y); - up.z = -cosd(lbl_1_bss_40[0].y); - up.y = 0; - MTXLookAt(lookat, &pos, &up, &target); - MTXLightPerspective(light, lbl_1_bss_C, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - HuSprTexLoad(lbl_1_bss_18, 0, 0, GX_CLAMP, GX_CLAMP, GX_NEAR); - MTXInverse(Hu3DCameraMtx, inv_camera); - MTXConcat(inv_camera, mtx, final); - MTXConcat(light, lookat, lookatlight); - MTXConcat(lookatlight, final, final); - GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX3x4); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - GXSetNumTexGens(1); - GXSetNumTevStages(1); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); - GXLoadPosMtxImm(mtx, GX_PNMTX0); - MTXInvXpose(mtx, final); - GXLoadNrmMtxImm(final, GX_PNMTX0); - GXBegin(GX_TRIANGLES, GX_VTXFMT0, 2400); - row = 0; - for(y=-310; y<310; y += 31) { - for(x=-310; x<310; x += 31) { - if(row++ & 0x1) { - r = g = 0; - b = 255; - } else { - r = 255; - g = b = 0; - } - GXPosition3f32(x, 0.0f, y); - GXPosition3f32(0.0f, 1.0f, 0.0f); - GXColor3u8(r, g, b); - GXPosition3f32(x+31, 0.0f, y); - GXPosition3f32(0.0f, 1.0f, 0.0f); - GXColor3u8(r, g, b); - GXPosition3f32(x+31, 0.0f, y+31); - GXPosition3f32(0.0f, 1.0f, 0.0f); - GXColor3u8(r, g, b); - GXPosition3f32(x, 0.0f, y); - GXPosition3f32(0.0f, 1.0f, 0.0f); - GXColor3u8(r, g, b); - GXPosition3f32(x+31, 0.0f, y+31); - GXPosition3f32(0.0f, 1.0f, 0.0f); - GXColor3u8(r, g, b); - GXPosition3f32(x, 0.0f, y+31); - GXPosition3f32(0.0f, 1.0f, 0.0f); - GXColor3u8(r, g, b); - } - row++; - } - GXEnd(); + s32 x; + s32 y; + u8 r; + u8 g; + u8 b; + s16 row; + + s32 practiceSprId = 0; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0); + GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + target.x = target.z = 0.0f; + target.x = instPicRadius * sind(cameraRot[0].y); + target.z = instPicRadius * cosd(cameraRot[0].y); + target.y = 415.0f; + pos.x = (sind(cameraRot[0].y) * cosd(cameraRot[0].x) * cameraZoom[0]) + cameraPos[0].x; + pos.y = (-sind(cameraRot[0].x) * cameraZoom[0]) + cameraPos[0].y; + pos.z = (cosd(cameraRot[0].y) * cosd(cameraRot[0].x) * cameraZoom[0]) + cameraPos[0].z; + up.x = -sind(cameraRot[0].y); + up.z = -cosd(cameraRot[0].y); + up.y = 0; + MTXLookAt(lookat, &pos, &up, &target); + MTXLightPerspective(light, instFov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + HuSprTexLoad(instPicAnim, 0, 0, GX_CLAMP, GX_CLAMP, GX_NEAR); + MTXInverse(Hu3DCameraMtx, invCamera); + MTXConcat(invCamera, mtx, final); + MTXConcat(light, lookat, lookAtLight); + MTXConcat(lookAtLight, final, final); + GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + MTXInvXpose(mtx, final); + GXLoadNrmMtxImm(final, GX_PNMTX0); + GXBegin(GX_TRIANGLES, GX_VTXFMT0, 2400); + row = 0; + for (y = -310; y < 310; y += 31) { + for (x = -310; x < 310; x += 31) { + if (row++ & 0x1) { + r = g = 0; + b = 255; + } + else { + r = 255; + g = b = 0; + } + GXPosition3f32(x, 0.0f, y); + GXPosition3f32(0.0f, 1.0f, 0.0f); + GXColor3u8(r, g, b); + GXPosition3f32(x + 31, 0.0f, y); + GXPosition3f32(0.0f, 1.0f, 0.0f); + GXColor3u8(r, g, b); + GXPosition3f32(x + 31, 0.0f, y + 31); + GXPosition3f32(0.0f, 1.0f, 0.0f); + GXColor3u8(r, g, b); + GXPosition3f32(x, 0.0f, y); + GXPosition3f32(0.0f, 1.0f, 0.0f); + GXColor3u8(r, g, b); + GXPosition3f32(x + 31, 0.0f, y + 31); + GXPosition3f32(0.0f, 1.0f, 0.0f); + GXColor3u8(r, g, b); + GXPosition3f32(x, 0.0f, y + 31); + GXPosition3f32(0.0f, 1.0f, 0.0f); + GXColor3u8(r, g, b); + } + row++; + } + GXEnd(); } -static void fn_1_5B64(ModelData *model, Mtx mtx) +static void ShadowDraw(ModelData *model, Mtx mtx) { - s32 sp8 = 0; - GXTexObj tex; - Mtx final; - Mtx inv_camera; - Mtx shadow; - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXInitTexObj(&tex, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + s32 temp = 0; + GXTexObj tex; + Mtx final; + Mtx invCamera; + Mtx shadow; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXInitTexObj(&tex, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); GXLoadTexObj(&tex, 0); - MTXInverse(Hu3DCameraMtx, inv_camera); - MTXConcat(inv_camera, mtx, final); - MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, shadow); - MTXConcat(shadow, final, final); - GXLoadTexMtxImm(final, GX_TEXMTX9, GX_MTX3x4); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX9); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - GXSetNumTexGens(1); - GXSetNumTevStages(1); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); - GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); - GXLoadPosMtxImm(mtx, GX_PNMTX0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-2000.0f, 0, -2000.0f); - GXPosition3f32(2000.0f, 0, -2000.0f); - GXPosition3f32(2000.0f, 0, 2000.0f); - GXPosition3f32(-2000.0f, 0, 2000.0f); - GXEnd(); + MTXInverse(Hu3DCameraMtx, invCamera); + MTXConcat(invCamera, mtx, final); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, shadow); + MTXConcat(shadow, final, final); + GXLoadTexMtxImm(final, GX_TEXMTX9, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX9); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-2000.0f, 0, -2000.0f); + GXPosition3f32(2000.0f, 0, -2000.0f); + GXPosition3f32(2000.0f, 0, 2000.0f); + GXPosition3f32(-2000.0f, 0, 2000.0f); + GXEnd(); } diff --git a/src/REL/m401Dll/main.c b/src/REL/m401Dll/main.c index 40820a67..3308961a 100644 --- a/src/REL/m401Dll/main.c +++ b/src/REL/m401Dll/main.c @@ -1,54 +1,37 @@ -#include "game/object.h" -#include "game/memory.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/frand.h" +#include "game/gamework_data.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/objsub.h" +#include "game/memory.h" #include "game/minigame_seq.h" -#include "game/gamework_data.h" -#include "game/wipe.h" -#include "game/esprite.h" -#include "game/sprite.h" -#include "game/frand.h" -#include "game/chrman.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/pad.h" #include "game/printfunc.h" +#include "game/sprite.h" +#include "game/wipe.h" #include "REL/m401Dll.h" -#include "math.h" #include "ext_math.h" - -#include "rel_sqrt_consts.h" +#include "math.h" float lbl_2_data_0 = -7.1875f; -s16 lbl_2_data_4[] = { - 0, 1, 2, 3, - 4, 5, 6, 7 -}; +s16 lbl_2_data_4[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; -Vec lbl_2_data_14 = { - 1500, 2500, 1500 -}; +Vec lbl_2_data_14 = { 1500, 2500, 1500 }; -Vec lbl_2_data_20 = { - 0, -1, 0 -}; +Vec lbl_2_data_20 = { 0, -1, 0 }; -GXColor lbl_2_data_2C = { - 255, 255, 255, 255 -}; +GXColor lbl_2_data_2C = { 255, 255, 255, 255 }; -Vec lbl_2_data_30 = { - 0, 2500, 0 -}; +Vec lbl_2_data_30 = { 0, 2500, 0 }; -Vec lbl_2_data_3C = { - 0, 1, -1 -}; +Vec lbl_2_data_3C = { 0, 1, -1 }; -Vec lbl_2_data_48 = { - 0, 0, 0 -}; +Vec lbl_2_data_48 = { 0, 0, 0 }; s32 lbl_2_bss_11C; omObjData **lbl_2_bss_118; @@ -122,386 +105,374 @@ void fn_2_DBCC(s16 arg0); void ObjectSetup(void) { - s32 i; - omObjData *object; - CameraData *camera; - LightData *light; - OSReport("**** M401ObjectSetup ****\n"); - HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); - HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1); - HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1); - lbl_2_bss_1C = omInitObjMan(60, 8192); - omGameSysInit(lbl_2_bss_1C); - lbl_2_bss_A8 = Hu3DGLightCreateV(&lbl_2_data_14, &lbl_2_data_20, &lbl_2_data_2C); - Hu3DGLightInfinitytSet(lbl_2_bss_A8); - light = &Hu3DGlobalLight[lbl_2_bss_A8]; - light->unk_00 |= 0x8000; - Hu3DCameraCreate(1); - camera = &Hu3DCamera[0]; - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - lbl_2_bss_114 = omAddObjEx(lbl_2_bss_1C, 1000, 3, 0, -1, fn_2_BD90); - lbl_2_bss_114->work[0] = 0; - lbl_2_bss_110 = omAddObjEx(lbl_2_bss_1C, 10, 0, 0, -1, fn_2_70C); - omMakeGroupEx(lbl_2_bss_1C, 0, 4); - lbl_2_bss_118 = omGetGroupMemberListEx(lbl_2_bss_1C, 0); - omMakeGroupEx(lbl_2_bss_1C, 1, 28); - for(i=0; i<4; i++) { - object = omAddObjEx(lbl_2_bss_1C, 1200, 4, 10, 0, fn_2_3B24); - object->work[0] = i; - } - lbl_2_bss_12C = 60; - lbl_2_bss_128 = 50; - lbl_2_bss_124 = 25000; - Hu3DShadowCreate(30, 20, 5000); - Hu3DShadowTPLvlSet(0.35f); - lbl_2_data_30.y = lbl_2_bss_60.y + 1500.0f; - lbl_2_data_30.z = lbl_2_bss_60.z + 500.0f; - lbl_2_data_48.y = lbl_2_bss_60.y; - lbl_2_data_48.z = lbl_2_bss_60.z + 500.0f; - Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); - lbl_2_bss_10C = omAddObjEx(lbl_2_bss_1C, 500, 12, 3, -1, fn_2_2FA4); - lbl_2_bss_108 = omAddObjEx(lbl_2_bss_1C, 1100, 1, 1, -1, fn_2_7CB4); - lbl_2_bss_100[0] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74); - lbl_2_bss_100[1] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74); - lbl_2_bss_FC = omAddObjEx(lbl_2_bss_1C, 1120, 1, 2, -1, fn_2_95E4); - lbl_2_bss_C8 = omAddObjEx(lbl_2_bss_1C, 100, 0, 0, -1, fn_2_D088); - lbl_2_bss_E0 = omAddObjEx(lbl_2_bss_1C, 1500, 0, 0, -1, fn_2_C1C); - fn_2_DBCC(90); - lbl_2_bss_F8 = omAddObjEx(lbl_2_bss_1C, 500, 9, 0, -1, fn_2_C6DC); - fn_2_9D00(lbl_2_bss_1C); - fn_2_1041C(); - fn_2_1079C(); - lbl_2_bss_F4 = fn_2_14640(lbl_2_bss_1C); - lbl_2_bss_50 = 0; - lbl_2_bss_54 = camera->pos; - Hu3DReflectNoSet(0); - lbl_2_bss_120 = 0; - lbl_2_bss_BE = 0; - lbl_2_bss_BA = 0; - Hu3DFogSet(3000, 10000, 10, 60, 160); - Hu3DBGColorSet(10, 60, 160); - lbl_2_bss_88 = 3000; - lbl_2_bss_84 = 142000; - lbl_2_bss_11C = HuAudFXPlay(1290); + s32 i; + omObjData *object; + CameraData *camera; + LightData *light; + OSReport("**** M401ObjectSetup ****\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1); + lbl_2_bss_1C = omInitObjMan(60, 8192); + omGameSysInit(lbl_2_bss_1C); + lbl_2_bss_A8 = Hu3DGLightCreateV(&lbl_2_data_14, &lbl_2_data_20, &lbl_2_data_2C); + Hu3DGLightInfinitytSet(lbl_2_bss_A8); + light = &Hu3DGlobalLight[lbl_2_bss_A8]; + light->unk_00 |= 0x8000; + Hu3DCameraCreate(1); + camera = &Hu3DCamera[0]; + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_2_bss_114 = omAddObjEx(lbl_2_bss_1C, 1000, 3, 0, -1, fn_2_BD90); + lbl_2_bss_114->work[0] = 0; + lbl_2_bss_110 = omAddObjEx(lbl_2_bss_1C, 10, 0, 0, -1, fn_2_70C); + omMakeGroupEx(lbl_2_bss_1C, 0, 4); + lbl_2_bss_118 = omGetGroupMemberListEx(lbl_2_bss_1C, 0); + omMakeGroupEx(lbl_2_bss_1C, 1, 28); + for (i = 0; i < 4; i++) { + object = omAddObjEx(lbl_2_bss_1C, 1200, 4, 10, 0, fn_2_3B24); + object->work[0] = i; + } + lbl_2_bss_12C = 60; + lbl_2_bss_128 = 50; + lbl_2_bss_124 = 25000; + Hu3DShadowCreate(30, 20, 5000); + Hu3DShadowTPLvlSet(0.35f); + lbl_2_data_30.y = lbl_2_bss_60.y + 1500.0f; + lbl_2_data_30.z = lbl_2_bss_60.z + 500.0f; + lbl_2_data_48.y = lbl_2_bss_60.y; + lbl_2_data_48.z = lbl_2_bss_60.z + 500.0f; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + lbl_2_bss_10C = omAddObjEx(lbl_2_bss_1C, 500, 12, 3, -1, fn_2_2FA4); + lbl_2_bss_108 = omAddObjEx(lbl_2_bss_1C, 1100, 1, 1, -1, fn_2_7CB4); + lbl_2_bss_100[0] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74); + lbl_2_bss_100[1] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74); + lbl_2_bss_FC = omAddObjEx(lbl_2_bss_1C, 1120, 1, 2, -1, fn_2_95E4); + lbl_2_bss_C8 = omAddObjEx(lbl_2_bss_1C, 100, 0, 0, -1, fn_2_D088); + lbl_2_bss_E0 = omAddObjEx(lbl_2_bss_1C, 1500, 0, 0, -1, fn_2_C1C); + fn_2_DBCC(90); + lbl_2_bss_F8 = omAddObjEx(lbl_2_bss_1C, 500, 9, 0, -1, fn_2_C6DC); + fn_2_9D00(lbl_2_bss_1C); + fn_2_1041C(); + fn_2_1079C(); + lbl_2_bss_F4 = fn_2_14640(lbl_2_bss_1C); + lbl_2_bss_50 = 0; + lbl_2_bss_54 = camera->pos; + Hu3DReflectNoSet(0); + lbl_2_bss_120 = 0; + lbl_2_bss_BE = 0; + lbl_2_bss_BA = 0; + Hu3DFogSet(3000, 10000, 10, 60, 160); + Hu3DBGColorSet(10, 60, 160); + lbl_2_bss_88 = 3000; + lbl_2_bss_84 = 142000; + lbl_2_bss_11C = HuAudFXPlay(1290); } void fn_2_70C(omObjData *object) { - s32 temp_r31; - M401WorkPlayer *temp_r30; - s16 temp_r29; - switch(lbl_2_bss_120) { - case 0: - break; - - case 1: - if(lbl_2_bss_BE == 1) { - lbl_2_bss_120 = 2; - lbl_2_bss_C0 = MGSeqFinishCreate(); - HuAudSeqFadeOut(lbl_2_bss_A4, 100); - } - break; - - case 2: - if(lbl_2_bss_114 == NULL) { - lbl_2_bss_114 = omAddObjEx(HuPrcCurrentGet(), 1000, 0, 0, -1, fn_2_C130); - lbl_2_bss_114->work[0] = 0; - temp_r29 = 0; - lbl_2_bss_BA = 0; - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = lbl_2_bss_118[temp_r31]->data; - lbl_2_bss_118[temp_r31]->func = fn_2_48A0; - temp_r30->unk0 = 5; - temp_r30->unk68 = 0; - if(temp_r30->unk72 > temp_r29) { - temp_r29 = temp_r30->unk72; - } - lbl_2_bss_B2[temp_r31] = -1; - lbl_2_bss_AA[temp_r31] = -1; - } - if(temp_r29 > 0) { - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = lbl_2_bss_118[temp_r31]->data; - if(temp_r30->unk72 == temp_r29) { - lbl_2_bss_AA[lbl_2_bss_BA] = GWPlayerCfg[temp_r31].character; - lbl_2_bss_B2[lbl_2_bss_BA++] = temp_r31; - temp_r30->unk68 = 1; - } - } - } - OSReport("winnercnt:%d\n", lbl_2_bss_BA); - } - break; - } - if(omSysExitReq) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudSeqFadeOut(lbl_2_bss_A4, 100); - HuAudFXStop(lbl_2_bss_11C); - object->func = fn_2_A10; - } + s32 temp_r31; + M401WorkPlayer *temp_r30; + s16 temp_r29; + switch (lbl_2_bss_120) { + case 0: + break; + + case 1: + if (lbl_2_bss_BE == 1) { + lbl_2_bss_120 = 2; + lbl_2_bss_C0 = MGSeqFinishCreate(); + HuAudSeqFadeOut(lbl_2_bss_A4, 100); + } + break; + + case 2: + if (lbl_2_bss_114 == NULL) { + lbl_2_bss_114 = omAddObjEx(HuPrcCurrentGet(), 1000, 0, 0, -1, fn_2_C130); + lbl_2_bss_114->work[0] = 0; + temp_r29 = 0; + lbl_2_bss_BA = 0; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = lbl_2_bss_118[temp_r31]->data; + lbl_2_bss_118[temp_r31]->func = fn_2_48A0; + temp_r30->unk0 = 5; + temp_r30->unk68 = 0; + if (temp_r30->unk72 > temp_r29) { + temp_r29 = temp_r30->unk72; + } + lbl_2_bss_B2[temp_r31] = -1; + lbl_2_bss_AA[temp_r31] = -1; + } + if (temp_r29 > 0) { + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = lbl_2_bss_118[temp_r31]->data; + if (temp_r30->unk72 == temp_r29) { + lbl_2_bss_AA[lbl_2_bss_BA] = GWPlayerCfg[temp_r31].character; + lbl_2_bss_B2[lbl_2_bss_BA++] = temp_r31; + temp_r30->unk68 = 1; + } + } + } + OSReport("winnercnt:%d\n", lbl_2_bss_BA); + } + break; + } + if (omSysExitReq) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqFadeOut(lbl_2_bss_A4, 100); + HuAudFXStop(lbl_2_bss_11C); + object->func = fn_2_A10; + } } void fn_2_A10(omObjData *object) { - s32 i; - if(!WipeStatGet()) { - fn_2_10710(); - for(i=0; i<4; i++) { - CharModelKill(lbl_2_data_4[GWPlayerCfg[i].character]); - } - HuAudFXListnerKill(); - omOvlReturnEx(1, 1); - } + s32 i; + if (!WipeStatGet()) { + fn_2_10710(); + for (i = 0; i < 4; i++) { + CharModelKill(lbl_2_data_4[GWPlayerCfg[i].character]); + } + HuAudFXListnerKill(); + omOvlReturnEx(1, 1); + } } void fn_2_A98(void) { - Hu3DFogSet(3000, 10000, 10, 60, 160); - Hu3DBGColorSet(10, 60, 160); + Hu3DFogSet(3000, 10000, 10, 60, 160); + Hu3DBGColorSet(10, 60, 160); } typedef struct m401_work_2d { - s16 unk0[4]; - s16 unk8[4][3]; - u8 unk20[0x30]; - s16 unk50[4][3]; - s16 unk68[4][3]; - s16 unk80[4]; - s16 unk88[4]; - float unk90[4]; - float unkA0[4]; - float unkB0[4]; - float unkC0[4]; - float unkD0[4]; - float unkE0[4]; - float unkF0[4]; - float unk100[4]; - float unk110[4]; - float unk120[4]; - s16 unk130[4]; - s16 unk138[4]; - s16 unk140[4]; + s16 unk0[4]; + s16 unk8[4][3]; + u8 unk20[0x30]; + s16 unk50[4][3]; + s16 unk68[4][3]; + s16 unk80[4]; + s16 unk88[4]; + float unk90[4]; + float unkA0[4]; + float unkB0[4]; + float unkC0[4]; + float unkD0[4]; + float unkE0[4]; + float unkF0[4]; + float unk100[4]; + float unk110[4]; + float unk120[4]; + s16 unk130[4]; + s16 unk138[4]; + s16 unk140[4]; } M401Work2D; void fn_2_AEC(s16 arg0) { - M401Work2D *temp_r31; - s32 i; - s32 j; - temp_r31 = lbl_2_bss_E0->data; - if(arg0) { - for(i=0; i<4; i++) { - espDispOn(temp_r31->unk0[i]); - espDispOn(temp_r31->unk80[i]); - espDispOn(temp_r31->unk88[i]); - for(j=0; j<2; j++) { - espDispOn(temp_r31->unk8[i][j]); - } - } - } else { - for(i=0; i<4; i++) { - espDispOff(temp_r31->unk0[i]); - espDispOff(temp_r31->unk80[i]); - espDispOff(temp_r31->unk88[i]); - for(j=0; j<2; j++) { - espDispOff(temp_r31->unk8[i][j]); - } - } - } + M401Work2D *temp_r31; + s32 i; + s32 j; + temp_r31 = lbl_2_bss_E0->data; + if (arg0) { + for (i = 0; i < 4; i++) { + espDispOn(temp_r31->unk0[i]); + espDispOn(temp_r31->unk80[i]); + espDispOn(temp_r31->unk88[i]); + for (j = 0; j < 2; j++) { + espDispOn(temp_r31->unk8[i][j]); + } + } + } + else { + for (i = 0; i < 4; i++) { + espDispOff(temp_r31->unk0[i]); + espDispOff(temp_r31->unk80[i]); + espDispOff(temp_r31->unk88[i]); + for (j = 0; j < 2; j++) { + espDispOff(temp_r31->unk8[i][j]); + } + } + } } s32 lbl_2_data_80[] = { - 0x610000, - 0x610001, - 0x610002, - 0x610003, - 0x610004, - 0x610005, - 0x610006, - 0x610007 + DATA_MAKE_NUM(DATADIR_MGCONST, 0x00), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x01), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x02), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x03), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x04), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x05), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x06), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x07), }; -#define PLAYER_POS_X(index, left, width) ((((index)&1)*width)+left) -#define PLAYER_POS_Y(index, top, height) ((((index)>1)*height)+top) +#define PLAYER_POS_X(index, left, width) ((((index)&1) * width) + left) +#define PLAYER_POS_Y(index, top, height) ((((index) > 1) * height) + top) void fn_2_C1C(omObjData *object) { - M401Work2D *temp_r31; - s32 i; - s32 j; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401Work2D), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - for(i=0; i<4; i++) { - temp_r31->unk0[i] = espEntry(lbl_2_data_80[GWPlayerCfg[i].character], 2, 0); - espDispOff(temp_r31->unk0[i]); - espDrawNoSet(temp_r31->unk0[i], 0); - espPosSet(temp_r31->unk0[i], PLAYER_POS_X(i, 37, 438), PLAYER_POS_Y(i, 59, 358)); - temp_r31->unk80[i] = espEntry(0x20002F, 3, 0); - espDispOff(temp_r31->unk80[i]); - espDrawNoSet(temp_r31->unk80[i], 0); - espPosSet(temp_r31->unk80[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358)); - temp_r31->unk88[i] = espEntry(0x200030, 4, 0); - espDispOff(temp_r31->unk88[i]); - espDrawNoSet(temp_r31->unk88[i], 0); - espPosSet(temp_r31->unk88[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358)); - espColorSet(temp_r31->unk88[i], 0, 0, 0); - espTPLvlSet(temp_r31->unk88[i], 0.5f); - for(j=0; j<2; j++) { - temp_r31->unk8[i][j] = espEntry(0x20002E, 1, 0); - espDispOff(temp_r31->unk8[i][j]); - espDrawNoSet(temp_r31->unk8[i][j], 0); - espPosSet(temp_r31->unk8[i][j], PLAYER_POS_X(i, 69+(j*20), 438), PLAYER_POS_Y(i, 63, 358)); - espAttrSet(temp_r31->unk8[i][j], HUSPR_ATTR_NOANIM); - } - for(j=0; j<3; j++) { - temp_r31->unk50[i][j] = espEntry(0x20002D, 0, 0); - espDispOff(temp_r31->unk50[i][j]); - espDrawNoSet(temp_r31->unk50[i][j], 0); - espAttrSet(temp_r31->unk50[i][j], HUSPR_ATTR_NOANIM); - temp_r31->unk68[i][j] = espEntry(0x20002D, 0, 0); - espDispOff(temp_r31->unk68[i][j]); - espDrawNoSet(temp_r31->unk68[i][j], 0); - espAttrSet(temp_r31->unk68[i][j], HUSPR_ATTR_NOANIM); - } - espBankSet(temp_r31->unk50[i][0], 10); - espBankSet(temp_r31->unk68[i][0], 11); - temp_r31->unk90[i] = 1.0f; - temp_r31->unkA0[i] = 1.0f; - temp_r31->unk130[i] = 0; - temp_r31->unk138[i] = 0; - } - object->func = fn_2_11D0; + M401Work2D *temp_r31; + s32 i; + s32 j; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401Work2D), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + for (i = 0; i < 4; i++) { + temp_r31->unk0[i] = espEntry(lbl_2_data_80[GWPlayerCfg[i].character], 2, 0); + espDispOff(temp_r31->unk0[i]); + espDrawNoSet(temp_r31->unk0[i], 0); + espPosSet(temp_r31->unk0[i], PLAYER_POS_X(i, 37, 438), PLAYER_POS_Y(i, 59, 358)); + temp_r31->unk80[i] = espEntry(DATA_MAKE_NUM(DATADIR_M401, 0x2F), 3, 0); + espDispOff(temp_r31->unk80[i]); + espDrawNoSet(temp_r31->unk80[i], 0); + espPosSet(temp_r31->unk80[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358)); + temp_r31->unk88[i] = espEntry(DATA_MAKE_NUM(DATADIR_M401, 0x30), 4, 0); + espDispOff(temp_r31->unk88[i]); + espDrawNoSet(temp_r31->unk88[i], 0); + espPosSet(temp_r31->unk88[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358)); + espColorSet(temp_r31->unk88[i], 0, 0, 0); + espTPLvlSet(temp_r31->unk88[i], 0.5f); + for (j = 0; j < 2; j++) { + temp_r31->unk8[i][j] = espEntry(DATA_MAKE_NUM(DATADIR_M401, 0x2E), 1, 0); + espDispOff(temp_r31->unk8[i][j]); + espDrawNoSet(temp_r31->unk8[i][j], 0); + espPosSet(temp_r31->unk8[i][j], PLAYER_POS_X(i, 69 + (j * 20), 438), PLAYER_POS_Y(i, 63, 358)); + espAttrSet(temp_r31->unk8[i][j], HUSPR_ATTR_NOANIM); + } + for (j = 0; j < 3; j++) { + temp_r31->unk50[i][j] = espEntry(DATA_MAKE_NUM(DATADIR_M401, 0x2D), 0, 0); + espDispOff(temp_r31->unk50[i][j]); + espDrawNoSet(temp_r31->unk50[i][j], 0); + espAttrSet(temp_r31->unk50[i][j], HUSPR_ATTR_NOANIM); + temp_r31->unk68[i][j] = espEntry(DATA_MAKE_NUM(DATADIR_M401, 0x2D), 0, 0); + espDispOff(temp_r31->unk68[i][j]); + espDrawNoSet(temp_r31->unk68[i][j], 0); + espAttrSet(temp_r31->unk68[i][j], HUSPR_ATTR_NOANIM); + } + espBankSet(temp_r31->unk50[i][0], 10); + espBankSet(temp_r31->unk68[i][0], 11); + temp_r31->unk90[i] = 1.0f; + temp_r31->unkA0[i] = 1.0f; + temp_r31->unk130[i] = 0; + temp_r31->unk138[i] = 0; + } + object->func = fn_2_11D0; } void fn_2_15C4(s16 arg0); void fn_2_11D0(omObjData *object) { - M401Work2D *temp_r31; - s32 i; - s32 j; - omObjData *temp_r28; - Vec sp18; - Vec spC; - M401WorkPlayer *sp8; - temp_r31 = object->data; - for(i=0; i<4; i++) { - sp8 = lbl_2_bss_118[i]->data; - if(temp_r31->unk130[i]) { - temp_r28 = lbl_2_bss_118[i]; - sp18.x = temp_r28->trans.x; - sp18.y = temp_r28->trans.y; - sp18.z = temp_r28->trans.z; - fn_2_10240(&sp18, &spC); - for(j=0; j<3; j++) { - espPosSet(temp_r31->unk50[i][j], (-20.0f+spC.x+temp_r31->unkF0[i])+(j*16), 20.0f+spC.y+temp_r31->unk100[i]); - espTPLvlSet(temp_r31->unk50[i][j], temp_r31->unk90[i]); - } - temp_r31->unkC0[i] -= 0.5f; - temp_r31->unk100[i] -= 1.0f; - if(temp_r31->unk130[i] < 15) { - temp_r31->unk90[i] -= 1.0f/15.0f; - } - if(--temp_r31->unk130[i] == 0) { - espDispOff(temp_r31->unk50[i][0]); - espDispOff(temp_r31->unk50[i][1]); - } - } - if(temp_r31->unk138[i]) { - temp_r28 = lbl_2_bss_118[i]; - sp18.x = temp_r28->trans.x; - sp18.y = temp_r28->trans.y; - sp18.z = temp_r28->trans.z; - fn_2_10240(&sp18, &spC); - for(j=0; j<2; j++) { - espPosSet(temp_r31->unk68[i][j], (-20.0f+spC.x+temp_r31->unk110[i])+(j*16), -20.0f+spC.y+temp_r31->unk120[i]); - espTPLvlSet(temp_r31->unk68[i][j], temp_r31->unkA0[i]); - } - temp_r31->unkE0[i] += 0.5f; - temp_r31->unk120[i] += 1.0f; - if(temp_r31->unk138[i] < 15) { - temp_r31->unkA0[i] -= 1.0f/15.0f; - } - if(--temp_r31->unk138[i] == 0) { - espDispOff(temp_r31->unk68[i][0]); - espDispOff(temp_r31->unk68[i][1]); - } - } - fn_2_15C4(i); - } + M401Work2D *temp_r31; + s32 i; + s32 j; + omObjData *temp_r28; + Vec sp18; + Vec spC; + M401WorkPlayer *sp8; + temp_r31 = object->data; + for (i = 0; i < 4; i++) { + sp8 = lbl_2_bss_118[i]->data; + if (temp_r31->unk130[i]) { + temp_r28 = lbl_2_bss_118[i]; + sp18.x = temp_r28->trans.x; + sp18.y = temp_r28->trans.y; + sp18.z = temp_r28->trans.z; + fn_2_10240(&sp18, &spC); + for (j = 0; j < 3; j++) { + espPosSet(temp_r31->unk50[i][j], (-20.0f + spC.x + temp_r31->unkF0[i]) + (j * 16), 20.0f + spC.y + temp_r31->unk100[i]); + espTPLvlSet(temp_r31->unk50[i][j], temp_r31->unk90[i]); + } + temp_r31->unkC0[i] -= 0.5f; + temp_r31->unk100[i] -= 1.0f; + if (temp_r31->unk130[i] < 15) { + temp_r31->unk90[i] -= 1.0f / 15.0f; + } + if (--temp_r31->unk130[i] == 0) { + espDispOff(temp_r31->unk50[i][0]); + espDispOff(temp_r31->unk50[i][1]); + } + } + if (temp_r31->unk138[i]) { + temp_r28 = lbl_2_bss_118[i]; + sp18.x = temp_r28->trans.x; + sp18.y = temp_r28->trans.y; + sp18.z = temp_r28->trans.z; + fn_2_10240(&sp18, &spC); + for (j = 0; j < 2; j++) { + espPosSet(temp_r31->unk68[i][j], (-20.0f + spC.x + temp_r31->unk110[i]) + (j * 16), -20.0f + spC.y + temp_r31->unk120[i]); + espTPLvlSet(temp_r31->unk68[i][j], temp_r31->unkA0[i]); + } + temp_r31->unkE0[i] += 0.5f; + temp_r31->unk120[i] += 1.0f; + if (temp_r31->unk138[i] < 15) { + temp_r31->unkA0[i] -= 1.0f / 15.0f; + } + if (--temp_r31->unk138[i] == 0) { + espDispOff(temp_r31->unk68[i][0]); + espDispOff(temp_r31->unk68[i][1]); + } + } + fn_2_15C4(i); + } } void fn_2_15C4(s16 arg0) { - M401Work2D *temp_r31; - s32 temp_r30; - M401WorkPlayer *temp_r29; - temp_r31 = lbl_2_bss_E0->data; - temp_r29 = lbl_2_bss_118[arg0]->data; - temp_r30 = temp_r29->unk72; - espBankSet(temp_r31->unk8[arg0][0], temp_r30/10); - espBankSet(temp_r31->unk8[arg0][1], temp_r30%10); + M401Work2D *temp_r31; + s32 temp_r30; + M401WorkPlayer *temp_r29; + temp_r31 = lbl_2_bss_E0->data; + temp_r29 = lbl_2_bss_118[arg0]->data; + temp_r30 = temp_r29->unk72; + espBankSet(temp_r31->unk8[arg0][0], temp_r30 / 10); + espBankSet(temp_r31->unk8[arg0][1], temp_r30 % 10); } void fn_2_169C(s16 arg0) { - M401Work2D *temp_r31; - s32 i; - M401WorkPlayer *temp_r28; - temp_r31 = lbl_2_bss_E0->data; - temp_r28 = lbl_2_bss_118[arg0]->data; - for(i=0; i<2; i++ ){ - espDispOn(temp_r31->unk50[arg0][i]); - } - temp_r31->unk90[arg0] = 1; - temp_r31->unkC0[arg0] = PLAYER_POS_Y(arg0, 52, 398); - temp_r31->unkB0[arg0] = PLAYER_POS_X(arg0, 41, 442); - temp_r31->unk100[arg0] = 0; - temp_r31->unkF0[arg0] = 0; - espBankSet(temp_r31->unk50[arg0][1], temp_r28->unk74); - temp_r31->unk130[arg0] = 45; + M401Work2D *temp_r31; + s32 i; + M401WorkPlayer *temp_r28; + temp_r31 = lbl_2_bss_E0->data; + temp_r28 = lbl_2_bss_118[arg0]->data; + for (i = 0; i < 2; i++) { + espDispOn(temp_r31->unk50[arg0][i]); + } + temp_r31->unk90[arg0] = 1; + temp_r31->unkC0[arg0] = PLAYER_POS_Y(arg0, 52, 398); + temp_r31->unkB0[arg0] = PLAYER_POS_X(arg0, 41, 442); + temp_r31->unk100[arg0] = 0; + temp_r31->unkF0[arg0] = 0; + espBankSet(temp_r31->unk50[arg0][1], temp_r28->unk74); + temp_r31->unk130[arg0] = 45; } void fn_2_1858(s16 arg0, s16 arg1) { - M401Work2D *temp_r31; - M401WorkPlayer *temp_r29; - s32 i; - temp_r31 = lbl_2_bss_E0->data; - temp_r29 = lbl_2_bss_118[arg0]->data; - for(i=0; i<2; i++ ){ - espDispOn(temp_r31->unk68[arg0][i]); - } - temp_r31->unkA0[arg0] = 1; - temp_r31->unkE0[arg0] = PLAYER_POS_Y(arg0, 20, 398); - temp_r31->unkD0[arg0] = PLAYER_POS_X(arg0, 41, 442); - temp_r31->unk120[arg0] = 0; - temp_r31->unk110[arg0] = 0; - espBankSet(temp_r31->unk68[arg0][1], arg1); - temp_r31->unk138[arg0] = 45; - temp_r31->unk140[arg0] = arg1; - temp_r29->unk72 -= arg1; - if(temp_r29->unk72 < 0) { - temp_r29->unk72 = 0; - } + M401Work2D *temp_r31; + M401WorkPlayer *temp_r29; + s32 i; + temp_r31 = lbl_2_bss_E0->data; + temp_r29 = lbl_2_bss_118[arg0]->data; + for (i = 0; i < 2; i++) { + espDispOn(temp_r31->unk68[arg0][i]); + } + temp_r31->unkA0[arg0] = 1; + temp_r31->unkE0[arg0] = PLAYER_POS_Y(arg0, 20, 398); + temp_r31->unkD0[arg0] = PLAYER_POS_X(arg0, 41, 442); + temp_r31->unk120[arg0] = 0; + temp_r31->unk110[arg0] = 0; + espBankSet(temp_r31->unk68[arg0][1], arg1); + temp_r31->unk138[arg0] = 45; + temp_r31->unk140[arg0] = arg1; + temp_r29->unk72 -= arg1; + if (temp_r29->unk72 < 0) { + temp_r29->unk72 = 0; + } } -float lbl_2_data_A0[] = { - -500, - -8500, - -17500, - -26500, - -99000 -}; +float lbl_2_data_A0[] = { -500, -8500, -17500, -26500, -99000 }; -float lbl_2_data_B4[] = { - -9100, - -18100, - -27100, - -36100, - -45100, - -100000 -}; +float lbl_2_data_B4[] = { -9100, -18100, -27100, -36100, -45100, -100000 }; void fn_2_1A38(omObjData *object); void fn_2_1B80(omObjData *object); @@ -514,36 +485,19 @@ void fn_2_2DCC(omObjData *object); void fn_2_2E20(omObjData *object); void fn_2_2ED0(omObjData *object); -omObjFunc lbl_2_data_CC[][2] = { - fn_2_1A38, - fn_2_2CBC, - fn_2_1B80, - fn_2_2D64, - fn_2_1CF0, - fn_2_2DCC, - fn_2_1DE8, - fn_2_2E20, - fn_2_20B0, - fn_2_2ED0 -}; +omObjFunc lbl_2_data_CC[][2] = { fn_2_1A38, fn_2_2CBC, fn_2_1B80, fn_2_2D64, fn_2_1CF0, fn_2_2DCC, fn_2_1DE8, fn_2_2E20, fn_2_20B0, fn_2_2ED0 }; -char *lbl_2_data_124[] = { - "kaitei01", - "kaitei02", - "kaitei03", - "kaitei04", - "kaitei05" -}; +char *lbl_2_data_124[] = { "kaitei01", "kaitei02", "kaitei03", "kaitei04", "kaitei05" }; s32 lbl_2_data_138[] = { - 0x5C0002, - 0x5C0002, - 0x5C0002, - 0x5C0002, - 0x5C0002, - 0x5C0002, - 0x5C0002, - 0x5C0002, + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), + DATA_MAKE_NUM(DATADIR_MARIO, 0x02), }; omObjData *fn_2_FC40(s16 arg0, Vec *arg1, Vec *arg2, Vec *arg3); @@ -551,604 +505,617 @@ void fn_2_E6BC(omObjData *object, float arg2, float arg3, float arg4, float arg5 void fn_2_1A38(omObjData *object) { - Vec sp20; - Vec sp14; - Vec sp8; - HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]); - omObjData *temp_r30; - temp_r31->type = 2; - sp20.x = -2500; - sp20.y = 150; - sp20.z = -6800; - sp14.x = 50; - sp14.y = 50; - sp14.z = 50; - sp8.x = 1500; - sp8.y = 150; - sp8.z = -4800; - temp_r30 = fn_2_FC40(18, &sp20, &sp14, &sp8); - fn_2_E6BC((omObjData *)temp_r30->work[0], 5, 1.5, 0.2, 0.8, 3); + Vec sp20; + Vec sp14; + Vec sp8; + HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]); + omObjData *temp_r30; + temp_r31->type = 2; + sp20.x = -2500; + sp20.y = 150; + sp20.z = -6800; + sp14.x = 50; + sp14.y = 50; + sp14.z = 50; + sp8.x = 1500; + sp8.y = 150; + sp8.z = -4800; + temp_r30 = fn_2_FC40(18, &sp20, &sp14, &sp8); + fn_2_E6BC((omObjData *)temp_r30->work[0], 5, 1.5, 0.2, 0.8, 3); } void fn_2_1B80(omObjData *object) { - Vec sp14; - Vec sp8; - omObjData *temp_r31; - HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]); - temp_r30->type = 2; - sp14.x = -1000; - sp14.y = 0; - sp14.z = -9100; - sp8.x = 150; - sp8.y = 100; - sp8.z = 100; - temp_r31 = fn_2_FC40(14, &sp14, &sp8, &sp14); - omSetRot(temp_r31, 3, 0, 0); - omSetSca(temp_r31, 0, 0, 50); - fn_2_E6BC((omObjData *)temp_r31->work[0], 4.5, 2.5, 0.08, 0.9, 1); + Vec sp14; + Vec sp8; + omObjData *temp_r31; + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]); + temp_r30->type = 2; + sp14.x = -1000; + sp14.y = 0; + sp14.z = -9100; + sp8.x = 150; + sp8.y = 100; + sp8.z = 100; + temp_r31 = fn_2_FC40(14, &sp14, &sp8, &sp14); + omSetRot(temp_r31, 3, 0, 0); + omSetSca(temp_r31, 0, 0, 50); + fn_2_E6BC((omObjData *)temp_r31->work[0], 4.5, 2.5, 0.08, 0.9, 1); } void fn_2_1CF0(omObjData *object) { - Vec sp20; - Vec sp14; - Vec sp8; - HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]); - temp_r31->type = 2; - sp20.x = 500; - sp20.y = 0; - sp20.z = -24300; - sp14.x = 200; - sp14.y = 100; - sp14.z = 100; - sp8.x = 1000; - sp8.y = 0; - sp8.z = -16300; - fn_2_FC40(40, &sp20, &sp14, &sp8); + Vec sp20; + Vec sp14; + Vec sp8; + HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]); + temp_r31->type = 2; + sp20.x = 500; + sp20.y = 0; + sp20.z = -24300; + sp14.x = 200; + sp14.y = 100; + sp14.z = 100; + sp8.x = 1000; + sp8.y = 0; + sp8.z = -16300; + fn_2_FC40(40, &sp20, &sp14, &sp8); } void fn_2_91AC(omObjData *object, Vec *pos); void fn_2_1DE8(omObjData *object) { - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - omObjData *temp_r31; - HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]); - temp_r30->type = 2; - sp2C.x = 0; - sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*frandu8())); - sp2C.z = -23000; - fn_2_91AC(lbl_2_bss_100[0], &sp2C); - sp2C.x = 0; - sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*frandu8())); - sp2C.z = -25000; - fn_2_91AC(lbl_2_bss_100[1], &sp2C); - sp2C.x = 5500; - sp2C.y = 0; - sp2C.z = -29800; - sp20.x = 100; - sp20.y = 100; - sp20.z = 100; - sp14.x = -1500; - sp14.y = 0; - sp14.z = -24900; - temp_r31 = fn_2_FC40(20, &sp2C, &sp20, &sp14); - fn_2_E6BC((omObjData *)temp_r31->work[0], 6, 1.5f, 0.2f, 0.8f, 3.5f); - sp8.x = -650; - sp8.y = -360; - sp8.z = -26300; - lbl_2_bss_D0 = fn_2_10A88(&sp8, 3); - lbl_2_bss_90[0] = HuAudFXEmiterPlay(1291, &sp8); + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + omObjData *temp_r31; + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]); + temp_r30->type = 2; + sp2C.x = 0; + sp2C.y = -150.0f + ((1.0f / 255.0f) * (300.0f * frandu8())); + sp2C.z = -23000; + fn_2_91AC(lbl_2_bss_100[0], &sp2C); + sp2C.x = 0; + sp2C.y = -150.0f + ((1.0f / 255.0f) * (300.0f * frandu8())); + sp2C.z = -25000; + fn_2_91AC(lbl_2_bss_100[1], &sp2C); + sp2C.x = 5500; + sp2C.y = 0; + sp2C.z = -29800; + sp20.x = 100; + sp20.y = 100; + sp20.z = 100; + sp14.x = -1500; + sp14.y = 0; + sp14.z = -24900; + temp_r31 = fn_2_FC40(20, &sp2C, &sp20, &sp14); + fn_2_E6BC((omObjData *)temp_r31->work[0], 6, 1.5f, 0.2f, 0.8f, 3.5f); + sp8.x = -650; + sp8.y = -360; + sp8.z = -26300; + lbl_2_bss_D0 = fn_2_10A88(&sp8, 3); + lbl_2_bss_90[0] = HuAudFXEmiterPlay(1291, &sp8); } void fn_2_20B0(omObjData *object) { - Vec sp8; - HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[4]); - temp_r30->type = 2; - Hu3DModelAttrReset(object->model[7], 1); - sp8.x = 0; - sp8.y = -370; - sp8.z = -43000; - lbl_2_bss_8 = fn_2_10A88(&sp8, 3); - lbl_2_bss_90[1] = HuAudFXEmiterPlay(1291, &sp8); - sp8.x = 380; - sp8.y = -440; - sp8.z = -32000; - lbl_2_bss_CC = fn_2_10A88(&sp8, 3); - lbl_2_bss_90[2] = HuAudFXEmiterPlay(1291, &sp8); - Hu3DModelAttrReset(object->model[2], 1); - Hu3DModelAttrSet(object->model[2], 0xC0000001); + Vec sp8; + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[4]); + temp_r30->type = 2; + Hu3DModelAttrReset(object->model[7], HU3D_ATTR_DISPOFF); + sp8.x = 0; + sp8.y = -370; + sp8.z = -43000; + lbl_2_bss_8 = fn_2_10A88(&sp8, 3); + lbl_2_bss_90[1] = HuAudFXEmiterPlay(1291, &sp8); + sp8.x = 380; + sp8.y = -440; + sp8.z = -32000; + lbl_2_bss_CC = fn_2_10A88(&sp8, 3); + lbl_2_bss_90[2] = HuAudFXEmiterPlay(1291, &sp8); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_CLUSTER_ATTR_LOOP); } void fn_2_21F8(omObjData *object) { - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - s32 temp_r30; - HsfObject *temp_r29 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]); - s32 temp_r28; - temp_r29->type = 2; - Hu3DModelAttrReset(object->model[0], 1); - Hu3DModelAttrReset(object->model[1], 1); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelAttrSet(object->model[1], 0x40000001); - Hu3DModelAttrReset(object->model[3], 1); - lbl_2_bss_44.x = 0; - lbl_2_bss_44.y = 100; - lbl_2_bss_44.z = 0; - lbl_2_bss_38.x = 0; - lbl_2_bss_38.y = 1000; - lbl_2_bss_38.z = -1500; - lbl_2_bss_2C.x = 0; - lbl_2_bss_2C.y = 1; - lbl_2_bss_2C.z = 0; - Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); - Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); - lbl_2_bss_54 = lbl_2_bss_44; - fn_2_D088(NULL); - sp20 = lbl_2_bss_44; - VECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp2C); - VECNormalize(&sp2C, &sp2C); - HuAudFXListnerSetEX(&sp20, &sp2C, lbl_2_bss_88, lbl_2_bss_84, 300, 300, 300); - sp14.x = 300; - sp14.y = -450; - sp14.z = -3100; - lbl_2_bss_D8 = fn_2_10A88(&sp14, 3); - lbl_2_bss_90[0] = HuAudFXEmiterPlay(1291, &sp14); - sp14.x = -300; - sp14.y = -340; - sp14.z = -4720; - lbl_2_bss_D4 = fn_2_10A88(&sp14, 3); - lbl_2_bss_90[1] = HuAudFXEmiterPlay(1291, &sp14); - Hu3DModelAttrReset(object->model[2], 1); - Hu3DModelAttrSet(object->model[2], 0xC0000001); - temp_r28 = 4; - for(temp_r30=0; temp_r30model[0], lbl_2_data_124[0]); + s32 temp_r28; + temp_r29->type = 2; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + lbl_2_bss_44.x = 0; + lbl_2_bss_44.y = 100; + lbl_2_bss_44.z = 0; + lbl_2_bss_38.x = 0; + lbl_2_bss_38.y = 1000; + lbl_2_bss_38.z = -1500; + lbl_2_bss_2C.x = 0; + lbl_2_bss_2C.y = 1; + lbl_2_bss_2C.z = 0; + Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); + Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); + lbl_2_bss_54 = lbl_2_bss_44; + fn_2_D088(NULL); + sp20 = lbl_2_bss_44; + VECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp2C); + VECNormalize(&sp2C, &sp2C); + HuAudFXListnerSetEX(&sp20, &sp2C, lbl_2_bss_88, lbl_2_bss_84, 300, 300, 300); + sp14.x = 300; + sp14.y = -450; + sp14.z = -3100; + lbl_2_bss_D8 = fn_2_10A88(&sp14, 3); + lbl_2_bss_90[0] = HuAudFXEmiterPlay(1291, &sp14); + sp14.x = -300; + sp14.y = -340; + sp14.z = -4720; + lbl_2_bss_D4 = fn_2_10A88(&sp14, 3); + lbl_2_bss_90[1] = HuAudFXEmiterPlay(1291, &sp14); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_CLUSTER_ATTR_LOOP); + temp_r28 = 4; + for (temp_r30 = 0; temp_r30 < temp_r28; temp_r30++) { + sp8.x = -340.0f + ((1.0f / 255.0f) * (680.0f * frandu8())); + sp8.y = -250.0f + ((1.0f / 255.0f) * (500.0f * frandu8())); + sp8.z = ((-1550.0f - (temp_r30 * 260)) - 40.0f) + ((1.0f / 255.0f) * (80.0f * frandu8())); + fn_2_10A88(&sp8, 0); + } } typedef struct work_2FA4 { - s32 unk0; - float unk4; - Vec unk8; - Vec unk14[2]; - s16 unk2C; + s32 unk0; + float unk4; + Vec unk8; + Vec unk14[2]; + s16 unk2C; } Work2FA4; void fn_2_26E0(omObjData *object) { - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - Work2FA4 *temp_r30; - s32 temp_r29; - Hu3DModelAttrReset(object->model[4], 1); - Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001); - Hu3DModelAttrReset(object->model[8], 1); - Hu3DModelAttrSet(object->model[8], 0x40000001); - Hu3DModelAttrSet(object->model[4], 0x40000001); - Hu3DModelShadowMapSet(object->model[4]); - Hu3DModelAttrReset(object->model[5], 1); - Hu3DModelPosSet(object->model[4], 0, 0, 0); - Hu3DModelAmbSet(object->model[4], 1, 1, 1); - Hu3DModelPosSet(object->model[5], 0, 0, 0); - Hu3DModelPosSet(object->model[6], 0, 0, 0); - temp_r30 = lbl_2_bss_10C->data; - if(lbl_2_bss_BA) { - temp_r30->unk14[0].x = 210; - temp_r30->unk14[0].y = 1018; - temp_r30->unk14[0].z = 0; - temp_r30->unk14[1].x = -160; - temp_r30->unk14[1].y = 1020; - temp_r30->unk14[1].z = -50; - for(temp_r29=0; temp_r29<2; temp_r29++) { - Hu3DModelPosSet(object->model[temp_r29+9], temp_r30->unk14[temp_r29].x, temp_r30->unk14[temp_r29].y, temp_r30->unk14[temp_r29].z); - Hu3DModelAttrReset(object->model[temp_r29+9], 1); - } - Hu3DMotionSet(object->model[10], object->motion[0]); - Hu3DMotionSet(object->model[9], object->motion[2]); - } else { - temp_r30->unk14[0].x = 210; - temp_r30->unk14[0].y = 1018; - temp_r30->unk14[0].z = 0; - temp_r30->unk14[1].x = -160; - temp_r30->unk14[1].y = 1020; - temp_r30->unk14[1].z = -50; - for(temp_r29=0; temp_r29<2; temp_r29++) { - Hu3DModelPosSet(object->model[temp_r29+9], temp_r30->unk14[temp_r29].x, temp_r30->unk14[temp_r29].y, temp_r30->unk14[temp_r29].z); - Hu3DModelAttrReset(object->model[temp_r29+9], 1); - } - Hu3DMotionSet(object->model[10], object->motion[1]); - Hu3DMotionSet(object->model[9], object->motion[2]); - } - Hu3DModelAttrSet(object->model[9], 0x40000001); - Hu3DModelAttrSet(object->model[10], 0x40000001); - Hu3DModelRotSet(object->model[9], 0, 90, 0); - Hu3DModelPosSet(object->model[11], 210, 1018, 0); - Hu3DModelRotSet(object->model[11], 0, 90, 0); - Hu3DModelAttrReset(object->model[11], 1); - Hu3DModelAttrSet(object->model[11], 0x40000001); - sp2C.x = 0; - sp2C.y = 1300; - sp2C.z = 1300; - sp20.x = 0; - sp20.y = 920; - sp20.z = -100; - sp14.x = 0; - sp14.y = 1; - sp14.z = 0; - Hu3DCameraPosSetV(1, &sp2C, &sp14, &sp20); - lbl_2_bss_12C = 45; - Hu3DShadowData.unk_08.x = lbl_2_bss_12C; - MTXLightPerspective(Hu3DShadowData.unk_68, lbl_2_bss_12C, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); - VECSubtract(&sp20, &sp2C, &sp8); - VECNormalize(&sp8, &sp8); - HuAudFXListnerUpdate(&sp2C, &sp8); + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + Work2FA4 *temp_r30; + s32 temp_r29; + Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001); + Hu3DModelAttrReset(object->model[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[8], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP); + Hu3DModelShadowMapSet(object->model[4]); + Hu3DModelAttrReset(object->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[4], 0, 0, 0); + Hu3DModelAmbSet(object->model[4], 1, 1, 1); + Hu3DModelPosSet(object->model[5], 0, 0, 0); + Hu3DModelPosSet(object->model[6], 0, 0, 0); + temp_r30 = lbl_2_bss_10C->data; + if (lbl_2_bss_BA) { + temp_r30->unk14[0].x = 210; + temp_r30->unk14[0].y = 1018; + temp_r30->unk14[0].z = 0; + temp_r30->unk14[1].x = -160; + temp_r30->unk14[1].y = 1020; + temp_r30->unk14[1].z = -50; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + Hu3DModelPosSet(object->model[temp_r29 + 9], temp_r30->unk14[temp_r29].x, temp_r30->unk14[temp_r29].y, temp_r30->unk14[temp_r29].z); + Hu3DModelAttrReset(object->model[temp_r29 + 9], HU3D_ATTR_DISPOFF); + } + Hu3DMotionSet(object->model[10], object->motion[0]); + Hu3DMotionSet(object->model[9], object->motion[2]); + } + else { + temp_r30->unk14[0].x = 210; + temp_r30->unk14[0].y = 1018; + temp_r30->unk14[0].z = 0; + temp_r30->unk14[1].x = -160; + temp_r30->unk14[1].y = 1020; + temp_r30->unk14[1].z = -50; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + Hu3DModelPosSet(object->model[temp_r29 + 9], temp_r30->unk14[temp_r29].x, temp_r30->unk14[temp_r29].y, temp_r30->unk14[temp_r29].z); + Hu3DModelAttrReset(object->model[temp_r29 + 9], HU3D_ATTR_DISPOFF); + } + Hu3DMotionSet(object->model[10], object->motion[1]); + Hu3DMotionSet(object->model[9], object->motion[2]); + } + Hu3DModelAttrSet(object->model[9], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[10], HU3D_MOTATTR_LOOP); + Hu3DModelRotSet(object->model[9], 0, 90, 0); + Hu3DModelPosSet(object->model[11], 210, 1018, 0); + Hu3DModelRotSet(object->model[11], 0, 90, 0); + Hu3DModelAttrReset(object->model[11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[11], HU3D_MOTATTR_LOOP); + sp2C.x = 0; + sp2C.y = 1300; + sp2C.z = 1300; + sp20.x = 0; + sp20.y = 920; + sp20.z = -100; + sp14.x = 0; + sp14.y = 1; + sp14.z = 0; + Hu3DCameraPosSetV(1, &sp2C, &sp14, &sp20); + lbl_2_bss_12C = 45; + Hu3DShadowData.unk_08.x = lbl_2_bss_12C; + MTXLightPerspective(Hu3DShadowData.unk_68, lbl_2_bss_12C, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); + VECSubtract(&sp20, &sp2C, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp2C, &sp8); } void fn_2_2CBC(omObjData *object) { - HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]); - temp_r30->type = -1; - Hu3DModelAttrSet(object->model[3], 1); - lbl_2_bss_D8->work[0] = 1; - Hu3DModelAttrSet(object->model[2], 1); - HuAudFXStop(lbl_2_bss_90[0]); - HuAudFXStop(lbl_2_bss_90[1]); + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]); + temp_r30->type = -1; + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + lbl_2_bss_D8->work[0] = 1; + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + HuAudFXStop(lbl_2_bss_90[0]); + HuAudFXStop(lbl_2_bss_90[1]); } void fn_2_2D64(omObjData *object) { - HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]); - temp_r31->type = -1; - lbl_2_bss_D4->work[0] = 1; + HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]); + temp_r31->type = -1; + lbl_2_bss_D4->work[0] = 1; } void fn_2_2DCC(omObjData *object) { - HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]); - temp_r31->type = -1; + HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]); + temp_r31->type = -1; } void fn_2_2E20(omObjData *object) { - HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]); - temp_r30->type = -1; - Hu3DModelAttrSet(lbl_2_bss_100[0]->model[0], 1); - Hu3DModelAttrSet(lbl_2_bss_100[1]->model[0], 1); - lbl_2_bss_D0->work[0] = 1; - HuAudFXStop(lbl_2_bss_90[0]); + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]); + temp_r30->type = -1; + Hu3DModelAttrSet(lbl_2_bss_100[0]->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_2_bss_100[1]->model[0], HU3D_ATTR_DISPOFF); + lbl_2_bss_D0->work[0] = 1; + HuAudFXStop(lbl_2_bss_90[0]); } void fn_2_2ED0(omObjData *object) { - HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[4]); - temp_r30->type = -1; - Hu3DModelAttrSet(object->model[7], 1); - Hu3DModelAttrSet(object->model[0], 1); - lbl_2_bss_8->work[0] = 1; - lbl_2_bss_CC->work[0] = 1; - Hu3DModelAttrSet(object->model[2], 1); - HuAudFXStop(lbl_2_bss_90[1]); - HuAudFXStop(lbl_2_bss_90[2]); + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[4]); + temp_r30->type = -1; + Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + lbl_2_bss_8->work[0] = 1; + lbl_2_bss_CC->work[0] = 1; + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + HuAudFXStop(lbl_2_bss_90[1]); + HuAudFXStop(lbl_2_bss_90[2]); } -void fn_2_2F9C(omObjData *object) -{ - -} +void fn_2_2F9C(omObjData *object) { } -void fn_2_2FA0(omObjData *object) -{ - -} +void fn_2_2FA0(omObjData *object) { } void fn_2_33B4(omObjData *object); void fn_2_2FA4(omObjData *object) { - Work2FA4 *temp_r30; - s32 temp_r29; - HsfObject *temp_r28; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FA4), MEMORY_DEFAULT_NUM); - temp_r30 = object->data; - fn_2_D088(NULL); - temp_r30->unk0 = 0; - temp_r30->unk8.x = 0; - temp_r30->unk8.y = 0; - temp_r30->unk8.z = 0; - temp_r30->unk2C = 0; - object->model[0] = Hu3DModelCreateFile(0x200000); - Hu3DModelAttrSet(object->model[0], 1); - object->model[1] = Hu3DModelCreateFile(0x200001); - Hu3DModelAttrSet(object->model[1], 1); - object->model[2] = Hu3DModelCreateFile(0x200007); - Hu3DModelAttrSet(object->model[2], 1); - Hu3DModelAttrSet(object->model[2], 0x40000001); - object->model[3] = Hu3DModelCreateFile(0x20001F); - Hu3DModelAttrSet(object->model[3], 1); - object->model[4] = Hu3DModelCreateFile(0x200020); - Hu3DModelAttrSet(object->model[4], 1); - object->model[11] = Hu3DModelCreateFile(0x20002C); - Hu3DModelAttrSet(object->model[11], 1); - object->model[7] = Hu3DModelCreateFile(0x200003); - Hu3DModelAttrSet(object->model[7], 1); - object->model[8] = Hu3DModelCreateFile(0x200023); - Hu3DModelAttrSet(object->model[8], 1); - object->model[9] = Hu3DModelCreateFile(0x200028); - Hu3DModelAttrSet(object->model[9], 1); - object->model[10] = Hu3DModelCreateFile(0x200028); - Hu3DModelAttrSet(object->model[10], 1); - Hu3DModelShadowSet(object->model[10]); - object->model[5] = Hu3DModelCreateFile(0x200021); - Hu3DModelAttrSet(object->model[5], 1); - object->model[6] = Hu3DModelCreateFile(0x200022); - Hu3DModelAttrSet(object->model[6], 1); - object->motion[0] = Hu3DJointMotionFile(object->model[10], 0x200029); - object->motion[1] = Hu3DJointMotionFile(object->model[10], 0x20002A); - object->motion[2] = Hu3DJointMotionFile(object->model[9], 0x20002B); - Hu3DModelPosSet(object->model[1], 0, 0, -1500); - Hu3DModelShadowMapSet(object->model[0]); - for(temp_r29=0; temp_r29<5; temp_r29++) { - temp_r28 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[temp_r29]); - temp_r28->type = -1; - } - fn_2_21F8(object); - object->func = fn_2_33B4; + Work2FA4 *temp_r30; + s32 temp_r29; + HsfObject *temp_r28; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FA4), MEMORY_DEFAULT_NUM); + temp_r30 = object->data; + fn_2_D088(NULL); + temp_r30->unk0 = 0; + temp_r30->unk8.x = 0; + temp_r30->unk8.y = 0; + temp_r30->unk8.z = 0; + temp_r30->unk2C = 0; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x00)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x01)); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x07)); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x1F)); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x20)); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + object->model[11] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x2C)); + Hu3DModelAttrSet(object->model[11], HU3D_ATTR_DISPOFF); + object->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x03)); + Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); + object->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x23)); + Hu3DModelAttrSet(object->model[8], HU3D_ATTR_DISPOFF); + object->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x28)); + Hu3DModelAttrSet(object->model[9], HU3D_ATTR_DISPOFF); + object->model[10] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x28)); + Hu3DModelAttrSet(object->model[10], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[10]); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x21)); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x22)); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); + object->motion[0] = Hu3DJointMotionFile(object->model[10], DATA_MAKE_NUM(DATADIR_M401, 0x29)); + object->motion[1] = Hu3DJointMotionFile(object->model[10], DATA_MAKE_NUM(DATADIR_M401, 0x2A)); + object->motion[2] = Hu3DJointMotionFile(object->model[9], DATA_MAKE_NUM(DATADIR_M401, 0x2B)); + Hu3DModelPosSet(object->model[1], 0, 0, -1500); + Hu3DModelShadowMapSet(object->model[0]); + for (temp_r29 = 0; temp_r29 < 5; temp_r29++) { + temp_r28 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[temp_r29]); + temp_r28->type = -1; + } + fn_2_21F8(object); + object->func = fn_2_33B4; } void fn_2_33B4(omObjData *object) { - Hu3DModelPosSet(object->model[3], 110, 5.0*sind(lbl_2_bss_10), -1500); - lbl_2_bss_10 += 2.0f; - if(lbl_2_bss_10 >= 360.0f) { - lbl_2_bss_10 -= 360.0f; - } + Hu3DModelPosSet(object->model[3], 110, 5.0 * sind(lbl_2_bss_10), -1500); + lbl_2_bss_10 += 2.0f; + if (lbl_2_bss_10 >= 360.0f) { + lbl_2_bss_10 -= 360.0f; + } } void fn_2_9E28(float arg1, float arg2); void fn_2_34B8(omObjData *object) { - Vec sp8; - Work2FA4 *temp_r31; - s32 temp_r30; - s32 temp_r28; - temp_r31 = object->data; - if(lbl_2_bss_60.z < -5000.0f && temp_r31->unk0 == 0) { - temp_r31->unk0 = 1; - fn_2_9E28(-15500, -20000); - } - if(lbl_2_bss_6C.z <= lbl_2_data_A0[lbl_2_bss_C]) { - lbl_2_bss_C++; - lbl_2_data_CC[lbl_2_bss_C][0](object); - } - if(lbl_2_bss_6C.z <= lbl_2_data_B4[lbl_2_bss_E]) { - lbl_2_data_CC[lbl_2_bss_E][1](object); - lbl_2_bss_E++; - } - if(lbl_2_bss_6C.z <= -40000.0f) { - lbl_2_bss_BE = 1; - } - if(temp_r31->unk2C) { - temp_r31->unk2C--; - } else { - temp_r31->unk2C = 274; - if(lbl_2_bss_60.z > -31260.0f) { - temp_r28 = 4; - for(temp_r30=0; temp_r30data; + if (lbl_2_bss_60.z < -5000.0f && temp_r31->unk0 == 0) { + temp_r31->unk0 = 1; + fn_2_9E28(-15500, -20000); + } + if (lbl_2_bss_6C.z <= lbl_2_data_A0[lbl_2_bss_C]) { + lbl_2_bss_C++; + lbl_2_data_CC[lbl_2_bss_C][0](object); + } + if (lbl_2_bss_6C.z <= lbl_2_data_B4[lbl_2_bss_E]) { + lbl_2_data_CC[lbl_2_bss_E][1](object); + lbl_2_bss_E++; + } + if (lbl_2_bss_6C.z <= -40000.0f) { + lbl_2_bss_BE = 1; + } + if (temp_r31->unk2C) { + temp_r31->unk2C--; + } + else { + temp_r31->unk2C = 274; + if (lbl_2_bss_60.z > -31260.0f) { + temp_r28 = 4; + for (temp_r30 = 0; temp_r30 < temp_r28; temp_r30++) { + sp8.x = -340.0f + ((1.0f / 255.0f) * (680.0f * frandu8())); + sp8.y = -250.0f + ((1.0f / 255.0f) * (500.0f * frandu8())); + sp8.z = ((-4000.0f - (temp_r30 * 240)) - 40.0f) + ((1.0f / 255.0f) * (80.0f * frandu8())); + fn_2_10A88(&sp8, 0); + } + } + } } void fn_2_3838(omObjData *object) { - Work2FA4 *temp_r31; - s32 temp_r29; - float temp_f31; - temp_r31 = object->data; - temp_r31->unk4 = 5.0*sind(temp_r31->unk8.x); - temp_r31->unk8.y += temp_r31->unk8.z; - Hu3DModelPosSet(object->model[4], temp_r31->unk8.y, temp_r31->unk4, 0); - Hu3DModelPosSet(object->model[5], temp_r31->unk8.y, 0, 0); - Hu3DModelScaleSet(object->model[5], 1.0f-(0.09f*(temp_r31->unk4/5.0f)), 1.0f, 1.0f-(0.09f*(temp_r31->unk4/5.0f))); - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_f31 = temp_r31->unk14[temp_r29].y+(5.0*sind(temp_r31->unk8.x)); - temp_r31->unk14[temp_r29].x += temp_r31->unk8.z; - Hu3DModelPosSet(object->model[temp_r29+9], temp_r31->unk14[temp_r29].x, temp_f31, temp_r31->unk14[temp_r29].z); - } - Hu3DModelPosSet(object->model[11], temp_r31->unk14[0].x, temp_f31, temp_r31->unk14[0].z); - temp_r31->unk8.z *= 1.04f; - if(temp_r31->unk8.z > 12.0f) { - temp_r31->unk8.z = 12.0f; - } - temp_r31->unk8.x += 2.0f; - if(temp_r31->unk8.x >= 360.0f) { - temp_r31->unk8.x -= 360.0f; - } - lbl_2_data_30.x = temp_r31->unk8.y; - lbl_2_data_48.x = temp_r31->unk8.y; - Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + Work2FA4 *temp_r31; + s32 temp_r29; + float temp_f31; + temp_r31 = object->data; + temp_r31->unk4 = 5.0 * sind(temp_r31->unk8.x); + temp_r31->unk8.y += temp_r31->unk8.z; + Hu3DModelPosSet(object->model[4], temp_r31->unk8.y, temp_r31->unk4, 0); + Hu3DModelPosSet(object->model[5], temp_r31->unk8.y, 0, 0); + Hu3DModelScaleSet(object->model[5], 1.0f - (0.09f * (temp_r31->unk4 / 5.0f)), 1.0f, 1.0f - (0.09f * (temp_r31->unk4 / 5.0f))); + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_f31 = temp_r31->unk14[temp_r29].y + (5.0 * sind(temp_r31->unk8.x)); + temp_r31->unk14[temp_r29].x += temp_r31->unk8.z; + Hu3DModelPosSet(object->model[temp_r29 + 9], temp_r31->unk14[temp_r29].x, temp_f31, temp_r31->unk14[temp_r29].z); + } + Hu3DModelPosSet(object->model[11], temp_r31->unk14[0].x, temp_f31, temp_r31->unk14[0].z); + temp_r31->unk8.z *= 1.04f; + if (temp_r31->unk8.z > 12.0f) { + temp_r31->unk8.z = 12.0f; + } + temp_r31->unk8.x += 2.0f; + if (temp_r31->unk8.x >= 360.0f) { + temp_r31->unk8.x -= 360.0f; + } + lbl_2_data_30.x = temp_r31->unk8.y; + lbl_2_data_48.x = temp_r31->unk8.y; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); } void fn_2_3F28(omObjData *object); s32 lbl_2_data_158[][10] = { - 0x005F002A, - 0x00200031, - 0x005F0000, - 0x005F002B, - 0x005F0005, - 0x005F0017, - 0x00200039, - 0x00200041, - 0x005F0022, - 0x00200049, - 0x001A002A, - 0x00200032, - 0x001A0000, - 0x001A002B, - 0x001A0005, - 0x001A0017, - 0x0020003A, - 0x00200042, - 0x001A0022, - 0x0020004A, - 0x006D002A, - 0x00200033, - 0x006D0000, - 0x006D002B, - 0x006D0005, - 0x006D0017, - 0x0020003B, - 0x00200043, - 0x006D0022, - 0x0020004B, - 0x008A002A, - 0x00200034, - 0x008A0000, - 0x008A002B, - 0x008A0005, - 0x008A0017, - 0x0020003C, - 0x00200044, - 0x008A0022, - 0x0020004C, - 0x0085002A, - 0x00200035, - 0x00850000, - 0x0085002B, - 0x00850005, - 0x00850017, - 0x0020003D, - 0x00200045, - 0x00850022, - 0x0020004D, - 0x0011002A, - 0x00200036, - 0x00110000, - 0x0011002B, - 0x00110005, - 0x00110017, - 0x0020003E, - 0x00200046, - 0x00110022, - 0x0020004E, - 0x000D002A, - 0x00200037, - 0x000D0000, - 0x000D002B, - 0x000D0005, - 0x000D0017, - 0x0020003F, - 0x00200047, - 0x000D0022, - 0x0020004F, - 0x0081002A, - 0x00200038, - 0x00810000, - 0x0081002B, - 0x00810005, - 0x00810017, - 0x00200040, - 0x00200048, - 0x00810022, - 0x00200050, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x31), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x39), + DATA_MAKE_NUM(DATADIR_M401, 0x41), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x49), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x32), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x3A), + DATA_MAKE_NUM(DATADIR_M401, 0x42), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x4A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x33), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x05), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x3B), + DATA_MAKE_NUM(DATADIR_M401, 0x43), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x4B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x34), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x3C), + DATA_MAKE_NUM(DATADIR_M401, 0x44), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x4C), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x35), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x3D), + DATA_MAKE_NUM(DATADIR_M401, 0x45), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x4D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x36), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x3E), + DATA_MAKE_NUM(DATADIR_M401, 0x46), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x4E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x37), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x3F), + DATA_MAKE_NUM(DATADIR_M401, 0x47), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x4F), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x2A), + DATA_MAKE_NUM(DATADIR_M401, 0x38), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_M401, 0x40), + DATA_MAKE_NUM(DATADIR_M401, 0x48), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x22), + DATA_MAKE_NUM(DATADIR_M401, 0x50), }; Vec lbl_2_data_298[] = { - -150, 1250, -1400, - -50, 1250, -1400, - 50, 1250, -1400, - 150, 1250, -1400, + -150, + 1250, + -1400, + -50, + 1250, + -1400, + 50, + 1250, + -1400, + 150, + 1250, + -1400, }; Vec lbl_2_data_2C8[] = { - -300, 0, -1500, - -100, 0, -1500, - 100, 0, -1500, - 300, 0, -1500, + -300, + 0, + -1500, + -100, + 0, + -1500, + 100, + 0, + -1500, + 300, + 0, + -1500, }; void fn_2_3F28(omObjData *object); void fn_2_3B24(omObjData *object) { - M401WorkPlayer *temp_r31; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401WorkPlayer), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - temp_r29 = object->work[0]; - temp_r31->unk4 = temp_r29; - temp_r31->unk8 = GWPlayerCfg[temp_r29].pad_idx; - temp_r27 = GWPlayerCfg[temp_r29].character; - temp_r31->unk86 = lbl_2_data_4[temp_r27]; - object->model[0] = CharModelCreate(temp_r31->unk86, 4); - if(temp_r29 == 0) { - object->model[2] = Hu3DModelCreateFile(0x200025); - object->model[3] = Hu3DModelCreateFile(0x200027); - } else { - object->model[2] = Hu3DModelLink(lbl_2_bss_118[0]->model[2]); - object->model[3] = Hu3DModelCreateFile(0x200027); - } - Hu3DModelAttrSet(object->model[3], 0x40000002); - Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000002); - Hu3DModelLayerSet(object->model[3], 7); - for(temp_r28=0; temp_r28<10; temp_r28++) { - object->motion[temp_r28] = CharModelMotionCreate(lbl_2_data_4[temp_r27], lbl_2_data_158[temp_r27][temp_r28]); - } - CharModelMotionSet(temp_r31->unk86, object->motion[2]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelAttrSet(object->model[2], 1); - Hu3DModelAttrSet(object->model[2], 0x40000001); - Hu3DModelLayerSet(object->model[2], 2); - Hu3DModelAmbSet(object->model[0], 1, 1, 1); - Hu3DModelShadowSet(object->model[0]); - CharModelVoiceEnableSet(lbl_2_data_4[temp_r27], object->motion[4], 0); - temp_r31->unkC = lbl_2_data_2C8[temp_r29]; - temp_r31->unk58.z = 0; - omSetTra(object, lbl_2_data_298[temp_r29].x, lbl_2_data_298[temp_r29].y, lbl_2_data_298[temp_r29].z); - temp_r31->unk0 = 0; - temp_r31->unk6E = 70; - temp_r31->unk24.x = lbl_2_data_2C8[temp_r29].x; - temp_r31->unk24.y = lbl_2_data_2C8[temp_r29].y; - temp_r31->unk24.z = 800+lbl_2_data_2C8[temp_r29].z; - temp_r31->unk6A = 0; - temp_r31->unk72 = 0; - temp_r31->unk74 = 0; - temp_r31->unk78 = 0; - temp_r31->unk7A = 0; - temp_r31->unk7C = 0; - temp_r31->unk76 = 0; - temp_r31->unk88 = 0; - temp_r31->unk84 = 0; - temp_r31->unk8C = 0; - temp_r31->unk8E = 0; - temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; - temp_r31->unk90 = 0; - temp_r31->unkA0 = temp_r31->unkA1 = 0; - CharModelMotionDataClose(temp_r31->unk86); - object->func = fn_2_3F28; + M401WorkPlayer *temp_r31; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401WorkPlayer), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + temp_r29 = object->work[0]; + temp_r31->unk4 = temp_r29; + temp_r31->unk8 = GWPlayerCfg[temp_r29].pad_idx; + temp_r27 = GWPlayerCfg[temp_r29].character; + temp_r31->unk86 = lbl_2_data_4[temp_r27]; + object->model[0] = CharModelCreate(temp_r31->unk86, 4); + if (temp_r29 == 0) { + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x25)); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x27)); + } + else { + object->model[2] = Hu3DModelLink(lbl_2_bss_118[0]->model[2]); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x27)); + } + Hu3DModelAttrSet(object->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000002); + Hu3DModelLayerSet(object->model[3], 7); + for (temp_r28 = 0; temp_r28 < 10; temp_r28++) { + object->motion[temp_r28] = CharModelMotionCreate(lbl_2_data_4[temp_r27], lbl_2_data_158[temp_r27][temp_r28]); + } + CharModelMotionSet(temp_r31->unk86, object->motion[2]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[2], 2); + Hu3DModelAmbSet(object->model[0], 1, 1, 1); + Hu3DModelShadowSet(object->model[0]); + CharModelVoiceEnableSet(lbl_2_data_4[temp_r27], object->motion[4], 0); + temp_r31->unkC = lbl_2_data_2C8[temp_r29]; + temp_r31->unk58.z = 0; + omSetTra(object, lbl_2_data_298[temp_r29].x, lbl_2_data_298[temp_r29].y, lbl_2_data_298[temp_r29].z); + temp_r31->unk0 = 0; + temp_r31->unk6E = 70; + temp_r31->unk24.x = lbl_2_data_2C8[temp_r29].x; + temp_r31->unk24.y = lbl_2_data_2C8[temp_r29].y; + temp_r31->unk24.z = 800 + lbl_2_data_2C8[temp_r29].z; + temp_r31->unk6A = 0; + temp_r31->unk72 = 0; + temp_r31->unk74 = 0; + temp_r31->unk78 = 0; + temp_r31->unk7A = 0; + temp_r31->unk7C = 0; + temp_r31->unk76 = 0; + temp_r31->unk88 = 0; + temp_r31->unk84 = 0; + temp_r31->unk8C = 0; + temp_r31->unk8E = 0; + temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; + temp_r31->unk90 = 0; + temp_r31->unkA0 = temp_r31->unkA1 = 0; + CharModelMotionDataClose(temp_r31->unk86); + object->func = fn_2_3F28; } void fn_2_6B44(omObjData *object); @@ -1156,395 +1123,403 @@ void fn_2_D3E8(omObjData *object); void fn_2_3F28(omObjData *object) { - Vec sp28; - Vec sp1C; - Vec sp10; - M401WorkPlayer *temp_r31; - CameraData *temp_r29; - omObjData *temp_r28; - UnkWork10A88 *temp_r27; - float temp_f27; - temp_r31 = object->data; - switch(temp_r31->unk0) { - case 0: - if(--temp_r31->unk6E == 0) { - temp_r31->unk0 = 1; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[4], 0, 20, 0); - temp_r31->unk58.x = 16; - temp_r31->unk58.y = 0; - } - break; - - case 1: - if(object->trans.y < 1100) { - temp_r31->unk0 = 2; - temp_f27 = VECMagPoint(object->trans.x-temp_r31->unk24.x, object->trans.y-temp_r31->unk24.y, object->trans.z-temp_r31->unk24.z); - temp_r31->unk58.z = temp_f27; - temp_r31->unk58.y = 0; - temp_r31->unk6E = 110; - temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 2); - temp_r31->unk50 = temp_r28; - temp_r27 = temp_r28->data; - temp_r27->unkC = object; - fn_2_6B44(object); - temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 4); - temp_r27 = temp_r28->data; - temp_r27->unkC = object; - temp_r31->unk4C = temp_r28; - temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 5); - temp_r27 = temp_r28->data; - temp_r27->unkC = object; - temp_r31->unk48 = temp_r28; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 80, 0x40000001); - temp_r31->unk30.x = object->trans.x; - temp_r31->unk30.y = object->trans.y; - temp_r31->unk30.z = object->trans.z; - Hu3DModelAttrReset(object->model[3], 1); - Hu3DModelAttrReset(object->model[3], 0x40000002); - Hu3DModelClusterAttrReset(object->model[3], 0, 0xC0000002); - Hu3DModelPosSet(object->model[3], object->trans.x, 100, 100+object->trans.z); - Hu3DMotionTimeSet(object->model[3], 0); - if(temp_r31->unk4 == 0) { - HuAudFXPlay(1281); - } - omVibrate(temp_r31->unk4, 12, 4, 2); - } else { - object->trans.y += temp_r31->unk58.x-(0.07f*temp_r31->unk58.y*temp_r31->unk58.y); - object->trans.z += 2.0f; - temp_r31->unk58.y += 1.0f; - } - break; - - case 2: - temp_r29 = &Hu3DCamera[0]; - sp1C = temp_r31->unk24; - sp10 = temp_r31->unk30; - VECSubtract(&sp1C, &sp10, &sp28); - VECNormalize(&sp28, &sp28); - object->trans.x = temp_r31->unk30.x+(temp_r31->unk58.z*(sp28.x*sind(temp_r31->unk58.y))); - object->trans.y = temp_r31->unk30.y+(temp_r31->unk58.z*(sp28.y*sind(temp_r31->unk58.y))); - object->trans.z = temp_r31->unk30.z+(temp_r31->unk58.z*(sp28.z*sind(temp_r31->unk58.y))); - temp_r31->unk58.y += 9.0f/11.0f; - omSetRot(object, atan2d(sp28.y, sp28.z)+90.0, 0, 0); - temp_f27 = VECMagPoint(object->trans.x-sp1C.x, object->trans.y-sp1C.y, object->trans.z-sp1C.z); - if(--temp_r31->unk6E == 60 && temp_r31->unk4 == 0 && lbl_2_bss_4 == NULL) { - temp_r29 = &Hu3DCamera[0]; - lbl_2_bss_4 = omAddObjEx(HuPrcCurrentGet(), 1400, 0, 0, -1, fn_2_D3E8); - lbl_2_bss_4->trans.x = temp_r29->pos.x; - lbl_2_bss_4->trans.y = temp_r29->pos.y; - lbl_2_bss_4->trans.z = temp_r29->pos.z; - lbl_2_bss_4->rot.x = temp_r29->target.x; - lbl_2_bss_4->rot.y = temp_r29->target.y; - lbl_2_bss_4->rot.z = temp_r29->target.z; - lbl_2_bss_4->scale.x = 0; - } - if(temp_r31->unk6E == 0) { - temp_r31->unk0 = 3; - temp_r31->unk4C->work[0] = 1; - temp_r31->unk48->work[0] = 1; - } - fn_2_6B44(object); - break; - - case 3: - sp1C.x = lbl_2_bss_108->trans.x; - sp1C.y = lbl_2_data_298[temp_r31->unk4].y; - sp1C.z = lbl_2_bss_108->trans.z; - sp10.x = object->trans.x; - sp10.y = object->trans.y; - sp10.z = object->trans.z; - VECSubtract(&sp1C, &sp10, &sp28); - VECNormalize(&sp28, &sp28); - object->rot.x *= 0.95f; - if(object->rot.x < 1.0f) { - object->rot.x = 0.0f; - } - omSetRot(object, object->rot.x, atan2d(sp28.x, sp28.z), 0); - fn_2_6B44(object); - break; - } + Vec sp28; + Vec sp1C; + Vec sp10; + M401WorkPlayer *temp_r31; + CameraData *temp_r29; + omObjData *temp_r28; + UnkWork10A88 *temp_r27; + float temp_f27; + temp_r31 = object->data; + switch (temp_r31->unk0) { + case 0: + if (--temp_r31->unk6E == 0) { + temp_r31->unk0 = 1; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[4], 0, 20, HU3D_MOTATTR_NONE); + temp_r31->unk58.x = 16; + temp_r31->unk58.y = 0; + } + break; + + case 1: + if (object->trans.y < 1100) { + temp_r31->unk0 = 2; + temp_f27 = VECMagPoint(object->trans.x - temp_r31->unk24.x, object->trans.y - temp_r31->unk24.y, object->trans.z - temp_r31->unk24.z); + temp_r31->unk58.z = temp_f27; + temp_r31->unk58.y = 0; + temp_r31->unk6E = 110; + temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 2); + temp_r31->unk50 = temp_r28; + temp_r27 = temp_r28->data; + temp_r27->unkC = object; + fn_2_6B44(object); + temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 4); + temp_r27 = temp_r28->data; + temp_r27->unkC = object; + temp_r31->unk4C = temp_r28; + temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 5); + temp_r27 = temp_r28->data; + temp_r27->unkC = object; + temp_r31->unk48 = temp_r28; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 80, HU3D_MOTATTR_LOOP); + temp_r31->unk30.x = object->trans.x; + temp_r31->unk30.y = object->trans.y; + temp_r31->unk30.z = object->trans.z; + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelClusterAttrReset(object->model[3], 0, 0xC0000002); + Hu3DModelPosSet(object->model[3], object->trans.x, 100, 100 + object->trans.z); + Hu3DMotionTimeSet(object->model[3], 0); + if (temp_r31->unk4 == 0) { + HuAudFXPlay(1281); + } + omVibrate(temp_r31->unk4, 12, 4, 2); + } + else { + object->trans.y += temp_r31->unk58.x - (0.07f * temp_r31->unk58.y * temp_r31->unk58.y); + object->trans.z += 2.0f; + temp_r31->unk58.y += 1.0f; + } + break; + + case 2: + temp_r29 = &Hu3DCamera[0]; + sp1C = temp_r31->unk24; + sp10 = temp_r31->unk30; + VECSubtract(&sp1C, &sp10, &sp28); + VECNormalize(&sp28, &sp28); + object->trans.x = temp_r31->unk30.x + (temp_r31->unk58.z * (sp28.x * sind(temp_r31->unk58.y))); + object->trans.y = temp_r31->unk30.y + (temp_r31->unk58.z * (sp28.y * sind(temp_r31->unk58.y))); + object->trans.z = temp_r31->unk30.z + (temp_r31->unk58.z * (sp28.z * sind(temp_r31->unk58.y))); + temp_r31->unk58.y += 9.0f / 11.0f; + omSetRot(object, atan2d(sp28.y, sp28.z) + 90.0, 0, 0); + temp_f27 = VECMagPoint(object->trans.x - sp1C.x, object->trans.y - sp1C.y, object->trans.z - sp1C.z); + if (--temp_r31->unk6E == 60 && temp_r31->unk4 == 0 && lbl_2_bss_4 == NULL) { + temp_r29 = &Hu3DCamera[0]; + lbl_2_bss_4 = omAddObjEx(HuPrcCurrentGet(), 1400, 0, 0, -1, fn_2_D3E8); + lbl_2_bss_4->trans.x = temp_r29->pos.x; + lbl_2_bss_4->trans.y = temp_r29->pos.y; + lbl_2_bss_4->trans.z = temp_r29->pos.z; + lbl_2_bss_4->rot.x = temp_r29->target.x; + lbl_2_bss_4->rot.y = temp_r29->target.y; + lbl_2_bss_4->rot.z = temp_r29->target.z; + lbl_2_bss_4->scale.x = 0; + } + if (temp_r31->unk6E == 0) { + temp_r31->unk0 = 3; + temp_r31->unk4C->work[0] = 1; + temp_r31->unk48->work[0] = 1; + } + fn_2_6B44(object); + break; + + case 3: + sp1C.x = lbl_2_bss_108->trans.x; + sp1C.y = lbl_2_data_298[temp_r31->unk4].y; + sp1C.z = lbl_2_bss_108->trans.z; + sp10.x = object->trans.x; + sp10.y = object->trans.y; + sp10.z = object->trans.z; + VECSubtract(&sp1C, &sp10, &sp28); + VECNormalize(&sp28, &sp28); + object->rot.x *= 0.95f; + if (object->rot.x < 1.0f) { + object->rot.x = 0.0f; + } + omSetRot(object, object->rot.x, atan2d(sp28.x, sp28.z), 0); + fn_2_6B44(object); + break; + } } void fn_2_6B44(omObjData *object); void fn_2_48A0(omObjData *object) { - M401WorkPlayer *temp_r31; - Work2FA4 *temp_r29; - float temp_f29; - Vec sp4C; - Vec sp40; - s32 sp30[] = { -10, -50, -80, -130 }; - Vec sp24; - Vec sp18; - Vec spC; - temp_r31 = object->data; - temp_r29 = lbl_2_bss_10C->data; - if(temp_r31->unk4 == 0) { - lbl_2_bss_1A--; - } - switch(temp_r31->unk0) { - case 5: - if(temp_r31->unk6A == 1) { - CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); - temp_r31->unk6A = 0; - } - omSetRot(object, 0, 180, 0); - object->trans.z -= 5.0f; - fn_2_6B44(object); - break; - - case 6: - object->trans.y += temp_r31->unk58.x; - if(object->trans.y >= 910.0f) { - if(temp_r31->unk6C == 0) { - temp_r31->unk6C = 1; - Hu3DModelAttrReset(object->model[2], 1); - Hu3DModelAttrSet(object->model[2], 0x40000001); - Hu3DModelPosSet(object->model[2], object->trans.x, 950, 30+object->trans.z); - Hu3DModelScaleSet(object->model[2], 1, 1, 1); - Hu3DMotionTimeSet(object->model[2], 0); - sp4C.x = object->trans.x; - sp4C.y = 950; - sp4C.z = 30+object->trans.z; - fn_2_10A88(&sp4C, 7); - HuAudFXEmiterPlay(1289, &sp4C); - } - temp_r31->unk58.x *= 0.7f; - if(temp_r31->unk58.x <= 0.5f) { - temp_r31->unk0 = 7; - temp_r31->unk58.x = -0.5f; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[0], 0, 30, 0x40000001); - temp_r31->unk80 = 0; - temp_r31->unk6C = 0; - } - } - - break; - - case 7: - object->trans.y += temp_r31->unk58.x; - if(object->trans.y <= 890) { - object->trans.y = 890; - if(lbl_2_bss_BA) { - if(temp_r31->unk68) { - temp_r31->unk0 = 16; - } else { - temp_r31->unk0 = 9; - } - } else { - temp_r31->unk0 = 8; - temp_r29->unk8.z = 0.5f; - temp_r31->unk6E = 0; - HuAudSStreamPlay(4); - lbl_2_bss_C0 = MGSeqDrawCreate(); - lbl_2_bss_1A = 210; - } - } - temp_r31->unk58.x *= 1.17f; - object->trans.y -= 0.35f*sind(temp_r31->unk80); - temp_r31->unk80 += 3.0f; - if(temp_r31->unk80 >= 360.0f) { - temp_r31->unk80 -= 360.0f; - } - break; - - case 8: - object->trans.y -= 0.35f*sind(temp_r31->unk80); - temp_r31->unk80 += 3.0f; - if(temp_r31->unk80 >= 360.0f) { - temp_r31->unk80 -= 360.0f; - } - if(temp_r31->unk6E == 13) { - Hu3DModelAttrReset(lbl_2_bss_10C->model[6], 1); - Hu3DMotionTimeSet(lbl_2_bss_10C->model[6], 0); - } else if(temp_r31->unk6E == 50) { - Hu3DMotionOverlaySet(object->model[0], object->motion[8]); - Hu3DMotionOverlayTimeSet(object->model[0], 31.0f); - Hu3DData[object->model[0]].unk_78 = 1; - } - if(temp_r31->unk6E >= 70) { - if(object->rot.y < 90.0f) { - object->rot.y += 2.25f; - } else { - object->rot.y = 90.0f; - } - } - temp_r31->unk6E++; - if(temp_r29->unk8.y >= 1500.0f) { - temp_r29->unk8.z = 0; - if(temp_r31->unk4 == 0) { - temp_r31->unk0 = 14; - } - } - break; - - case 16: - if(!temp_r31->unk6C) { - temp_r31->unk6C = 1; - HuAudPlayerVoicePlay(temp_r31->unk4, 292); - Hu3DMotionOverlaySet(object->model[0], object->motion[9]); - if(temp_r31->unk4 == lbl_2_bss_B2[0]) { - HuAudSStreamPlay(1); - lbl_2_bss_C0 = MGSeqWinCreate(lbl_2_bss_AA[0], lbl_2_bss_AA[1], lbl_2_bss_AA[2], lbl_2_bss_AA[3]); - lbl_2_bss_1A = 210; - temp_r31->unk6E = 160; - temp_r31->unk0 = 13; - } - } - temp_r31->unk58.x *= 1.17f; - object->trans.y -= 0.35f*sind(temp_r31->unk80); - temp_r31->unk80 += 3.0f; - if(temp_r31->unk80 >= 360.0f) { - temp_r31->unk80 -= 360.0f; - } - if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { - Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); - } - break; - - case 10: - object->trans.y += temp_r31->unk58.x; - if(object->trans.y >= 910.0f) { - if(temp_r31->unk6C == 0) { - temp_r31->unk6C = 1; - omVibrate(temp_r31->unk4, 12, 4, 2); - Hu3DModelAttrReset(object->model[2], 1); - Hu3DModelAttrReset(object->model[2], 0x40000002); - Hu3DModelAttrSet(object->model[2], 0x40000001); - Hu3DModelPosSet(object->model[2], object->trans.x, 950, 30+object->trans.z); - Hu3DModelScaleSet(object->model[2], 1, 1, 1); - Hu3DMotionTimeSet(object->model[2], 0); - Hu3DModelAttrReset(object->model[3], 0x40000002); - Hu3DModelAttrReset(object->model[3], 1); - Hu3DModelClusterAttrReset(object->model[3], 0, 0xC0000002); - Hu3DModelPosSet(object->model[3], object->trans.x, 0, 30+object->trans.z); - Hu3DMotionTimeSet(object->model[3], 0); - sp4C.x = object->trans.x; - sp4C.y = 950; - sp4C.z = 30+object->trans.z; - fn_2_10A88(&sp4C, 7); - HuAudFXEmiterPlay(1289, &sp4C); - } - temp_r31->unk0 = 11; - temp_r31->unk24.x = sp30[temp_r31->unk4]; - temp_r31->unk24.y = 1030; - temp_r31->unk24.z = 40; - sp4C.x = object->trans.x; - sp4C.y = object->trans.y; - sp4C.z = object->trans.z; - VECSubtract(&temp_r31->unk24, &sp4C, &sp40); - VECNormalize(&sp40, &sp40); - temp_f29 = VECDistanceXZ(&temp_r31->unk24, &object->trans); - temp_r31->unk30.x = (sp40.x*temp_f29)/60.0f; - temp_r31->unk30.z = (sp40.z*temp_f29)/60.0f; - temp_r31->unk30.y = 18.75f; - temp_r31->unk58.y = 0; - } - break; - - case 11: - temp_f29 = temp_r31->unk30.y-(0.020833334f*temp_r31->unk58.y*temp_r31->unk58.y); - object->trans.x += temp_r31->unk30.x; - object->trans.z += temp_r31->unk30.z; - object->trans.y += temp_f29; - temp_r31->unk58.y += 1.0f; - if(object->trans.y <= 1030.0f && temp_f29 < 0) { - temp_r31->unk0 = 12; - object->trans.y = 1030+temp_r29->unk4; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[2], 0, 15, 0x40000001); - temp_r31->unk58.x = 0; - } - break; - - case 12: - object->trans.y = 1030+temp_r29->unk4; - sp24.x = (sind(temp_r31->unk58.x), 0.0); - sp24.y = -100*sind(temp_r31->unk58.x)+1300; - sp24.z = -500*sind(temp_r31->unk58.x)+1300; - sp18.x = (sind(temp_r31->unk58.x), 0.0); - sp18.y = 330*sind(temp_r31->unk58.x)+920; - sp18.z = (sind(temp_r31->unk58.x), 0.0) + -100.0; - spC.x = 0; - spC.y = 1; - spC.z = 0; - Hu3DCameraPosSetV(1, &sp24, &spC, &sp18); - temp_r31->unk58.x += 3.0f; - if(temp_r31->unk58.x > 90.0f) { - temp_r31->unk0 = 13; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[5], 0, 20, 0); - HuAudSStreamPlay(1); - lbl_2_bss_C0 = MGSeqWinCreate(lbl_2_bss_AA[0], -1, -1, -1); - lbl_2_bss_1A = 210; - } - temp_r31->unk6E = 160; - break; - - case 13: - if(lbl_2_bss_BA == 1) { - object->trans.y = 1030+temp_r29->unk4; - } else { - temp_r31->unk58.x *= 1.17f; - object->trans.y -= 0.35f*sind(temp_r31->unk80); - temp_r31->unk80 += 3.0f; - if(temp_r31->unk80 >= 360.0f) { - temp_r31->unk80 -= 360.0f; - } - if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { - Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); - } - } - if(--temp_r31->unk6E == 0) { - temp_r31->unk0 = 14; - } - - break; - - case 14: - if(temp_r31->unk68) { - if(lbl_2_bss_BA == 1) { - object->trans.y = 1030+temp_r29->unk4; - } else { - temp_r31->unk58.x *= 1.17f; - object->trans.y -= 0.35f*sind(temp_r31->unk80); - temp_r31->unk80 += 3.0f; - if(temp_r31->unk80 >= 360.0f) { - temp_r31->unk80 -= 360.0f; - } - if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { - Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); - } - } - } - if(lbl_2_bss_1A <= 0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudSeqFadeOut(lbl_2_bss_A4, 100); - HuAudFXStop(lbl_2_bss_11C); - temp_r31->unk0 = 15; - } - break; - - case 15: - if(temp_r31->unk68) { - if(lbl_2_bss_BA == 1) { - object->trans.y = 1030+temp_r29->unk4; - } else { - temp_r31->unk58.x *= 1.17f; - object->trans.y -= 0.35f*sind(temp_r31->unk80); - temp_r31->unk80 += 3.0f; - if(temp_r31->unk80 >= 360.0f) { - temp_r31->unk80 -= 360.0f; - } - if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { - Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); - } - } - } - if(!WipeStatGet()) { - lbl_2_bss_110->func = fn_2_A10; - } - break; - } + M401WorkPlayer *temp_r31; + Work2FA4 *temp_r29; + float temp_f29; + Vec sp4C; + Vec sp40; + s32 sp30[] = { -10, -50, -80, -130 }; + Vec sp24; + Vec sp18; + Vec spC; + temp_r31 = object->data; + temp_r29 = lbl_2_bss_10C->data; + if (temp_r31->unk4 == 0) { + lbl_2_bss_1A--; + } + switch (temp_r31->unk0) { + case 5: + if (temp_r31->unk6A == 1) { + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, HU3D_MOTATTR_LOOP); + temp_r31->unk6A = 0; + } + omSetRot(object, 0, 180, 0); + object->trans.z -= 5.0f; + fn_2_6B44(object); + break; + + case 6: + object->trans.y += temp_r31->unk58.x; + if (object->trans.y >= 910.0f) { + if (temp_r31->unk6C == 0) { + temp_r31->unk6C = 1; + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(object->model[2], object->trans.x, 950, 30 + object->trans.z); + Hu3DModelScaleSet(object->model[2], 1, 1, 1); + Hu3DMotionTimeSet(object->model[2], 0); + sp4C.x = object->trans.x; + sp4C.y = 950; + sp4C.z = 30 + object->trans.z; + fn_2_10A88(&sp4C, 7); + HuAudFXEmiterPlay(1289, &sp4C); + } + temp_r31->unk58.x *= 0.7f; + if (temp_r31->unk58.x <= 0.5f) { + temp_r31->unk0 = 7; + temp_r31->unk58.x = -0.5f; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[0], 0, 30, HU3D_MOTATTR_LOOP); + temp_r31->unk80 = 0; + temp_r31->unk6C = 0; + } + } + + break; + + case 7: + object->trans.y += temp_r31->unk58.x; + if (object->trans.y <= 890) { + object->trans.y = 890; + if (lbl_2_bss_BA) { + if (temp_r31->unk68) { + temp_r31->unk0 = 16; + } + else { + temp_r31->unk0 = 9; + } + } + else { + temp_r31->unk0 = 8; + temp_r29->unk8.z = 0.5f; + temp_r31->unk6E = 0; + HuAudSStreamPlay(4); + lbl_2_bss_C0 = MGSeqDrawCreate(); + lbl_2_bss_1A = 210; + } + } + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f * sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if (temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + break; + + case 8: + object->trans.y -= 0.35f * sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if (temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if (temp_r31->unk6E == 13) { + Hu3DModelAttrReset(lbl_2_bss_10C->model[6], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_2_bss_10C->model[6], 0); + } + else if (temp_r31->unk6E == 50) { + Hu3DMotionOverlaySet(object->model[0], object->motion[8]); + Hu3DMotionOverlayTimeSet(object->model[0], 31.0f); + Hu3DData[object->model[0]].unk_78 = 1; + } + if (temp_r31->unk6E >= 70) { + if (object->rot.y < 90.0f) { + object->rot.y += 2.25f; + } + else { + object->rot.y = 90.0f; + } + } + temp_r31->unk6E++; + if (temp_r29->unk8.y >= 1500.0f) { + temp_r29->unk8.z = 0; + if (temp_r31->unk4 == 0) { + temp_r31->unk0 = 14; + } + } + break; + + case 16: + if (!temp_r31->unk6C) { + temp_r31->unk6C = 1; + HuAudPlayerVoicePlay(temp_r31->unk4, 292); + Hu3DMotionOverlaySet(object->model[0], object->motion[9]); + if (temp_r31->unk4 == lbl_2_bss_B2[0]) { + HuAudSStreamPlay(1); + lbl_2_bss_C0 = MGSeqWinCreate(lbl_2_bss_AA[0], lbl_2_bss_AA[1], lbl_2_bss_AA[2], lbl_2_bss_AA[3]); + lbl_2_bss_1A = 210; + temp_r31->unk6E = 160; + temp_r31->unk0 = 13; + } + } + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f * sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if (temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if (73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + break; + + case 10: + object->trans.y += temp_r31->unk58.x; + if (object->trans.y >= 910.0f) { + if (temp_r31->unk6C == 0) { + temp_r31->unk6C = 1; + omVibrate(temp_r31->unk4, 12, 4, 2); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(object->model[2], object->trans.x, 950, 30 + object->trans.z); + Hu3DModelScaleSet(object->model[2], 1, 1, 1); + Hu3DMotionTimeSet(object->model[2], 0); + Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelClusterAttrReset(object->model[3], 0, 0xC0000002); + Hu3DModelPosSet(object->model[3], object->trans.x, 0, 30 + object->trans.z); + Hu3DMotionTimeSet(object->model[3], 0); + sp4C.x = object->trans.x; + sp4C.y = 950; + sp4C.z = 30 + object->trans.z; + fn_2_10A88(&sp4C, 7); + HuAudFXEmiterPlay(1289, &sp4C); + } + temp_r31->unk0 = 11; + temp_r31->unk24.x = sp30[temp_r31->unk4]; + temp_r31->unk24.y = 1030; + temp_r31->unk24.z = 40; + sp4C.x = object->trans.x; + sp4C.y = object->trans.y; + sp4C.z = object->trans.z; + VECSubtract(&temp_r31->unk24, &sp4C, &sp40); + VECNormalize(&sp40, &sp40); + temp_f29 = VECDistanceXZ(&temp_r31->unk24, &object->trans); + temp_r31->unk30.x = (sp40.x * temp_f29) / 60.0f; + temp_r31->unk30.z = (sp40.z * temp_f29) / 60.0f; + temp_r31->unk30.y = 18.75f; + temp_r31->unk58.y = 0; + } + break; + + case 11: + temp_f29 = temp_r31->unk30.y - (0.020833334f * temp_r31->unk58.y * temp_r31->unk58.y); + object->trans.x += temp_r31->unk30.x; + object->trans.z += temp_r31->unk30.z; + object->trans.y += temp_f29; + temp_r31->unk58.y += 1.0f; + if (object->trans.y <= 1030.0f && temp_f29 < 0) { + temp_r31->unk0 = 12; + object->trans.y = 1030 + temp_r29->unk4; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[2], 0, 15, HU3D_MOTATTR_LOOP); + temp_r31->unk58.x = 0; + } + break; + + case 12: + object->trans.y = 1030 + temp_r29->unk4; + sp24.x = (sind(temp_r31->unk58.x), 0.0); + sp24.y = -100 * sind(temp_r31->unk58.x) + 1300; + sp24.z = -500 * sind(temp_r31->unk58.x) + 1300; + sp18.x = (sind(temp_r31->unk58.x), 0.0); + sp18.y = 330 * sind(temp_r31->unk58.x) + 920; + sp18.z = (sind(temp_r31->unk58.x), 0.0) + -100.0; + spC.x = 0; + spC.y = 1; + spC.z = 0; + Hu3DCameraPosSetV(1, &sp24, &spC, &sp18); + temp_r31->unk58.x += 3.0f; + if (temp_r31->unk58.x > 90.0f) { + temp_r31->unk0 = 13; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[5], 0, 20, HU3D_MOTATTR_NONE); + HuAudSStreamPlay(1); + lbl_2_bss_C0 = MGSeqWinCreate(lbl_2_bss_AA[0], -1, -1, -1); + lbl_2_bss_1A = 210; + } + temp_r31->unk6E = 160; + break; + + case 13: + if (lbl_2_bss_BA == 1) { + object->trans.y = 1030 + temp_r29->unk4; + } + else { + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f * sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if (temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if (73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + } + if (--temp_r31->unk6E == 0) { + temp_r31->unk0 = 14; + } + + break; + + case 14: + if (temp_r31->unk68) { + if (lbl_2_bss_BA == 1) { + object->trans.y = 1030 + temp_r29->unk4; + } + else { + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f * sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if (temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if (73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + } + } + if (lbl_2_bss_1A <= 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqFadeOut(lbl_2_bss_A4, 100); + HuAudFXStop(lbl_2_bss_11C); + temp_r31->unk0 = 15; + } + break; + + case 15: + if (temp_r31->unk68) { + if (lbl_2_bss_BA == 1) { + object->trans.y = 1030 + temp_r29->unk4; + } + else { + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f * sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if (temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if (73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + } + } + if (!WipeStatGet()) { + lbl_2_bss_110->func = fn_2_A10; + } + break; + } } void fn_2_65FC(omObjData *object); @@ -1555,1278 +1530,1326 @@ void fn_2_6C94(omObjData *object, s8 *x, s8 *y, u16 *btn); void fn_2_5CC0(omObjData *object) { - M401WorkPlayer *temp_r31; - float temp_f29; - Vec sp20; - Vec sp14; - s32 sp10; - u16 spA; - s8 sp9; - s8 sp8; - temp_f29 = 0; - temp_r31 = object->data; - sp9 = sp8 = spA = 0; - if(temp_r31->unk78 == 0) { - if(GWPlayerCfg[temp_r31->unk4].iscom) { - fn_2_6C94(object, &sp9, &sp8, &spA); - } else { - sp9 = HuPadStkX[temp_r31->unk8]; - sp8 = HuPadStkY[temp_r31->unk8]; - spA = HuPadBtnDown[temp_r31->unk8]; - } - if(sp9 != 0 || sp8 != 0) { - temp_r31->unk58.z = sqrtf((sp9*sp9)+(sp8*sp8))/9.0f; - } - temp_r31->unk64 = atan2d(sp9, sp8); - if(spA & PAD_BUTTON_A) { - temp_r31->unk88 += 1.51f*lbl_2_data_0; - if(temp_r31->unk88 < 1.51f*lbl_2_data_0) { - temp_r31->unk88 = 1.51f*lbl_2_data_0; - } - } - if(temp_r31->unk88 >= 0.0f){ - temp_f29 = 0; - } else { - temp_f29 = fabs(temp_r31->unk88/(1.51f*lbl_2_data_0)); - } - if(temp_r31->unk84) { - if(--temp_r31->unk84 == 0) { - CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); - temp_r31->unk6A = 0; - } - } - } else { - temp_r31->unk84 = 0; - if(--temp_r31->unk7A == 0) { - sp10 = GWPlayerCfg[temp_r31->unk4].character; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); - temp_r31->unk78 = 0; - temp_r31->unk6A = 0; - } - if(temp_r31->unk7A & 0x1) { - Hu3DModelAttrSet(object->model[0], 1); - } else { - Hu3DModelAttrReset(object->model[0], 1); - } - } - if(temp_f29 != 0) { - if(++temp_r31->unk8C > 15) { - temp_r31->unk8C = 15; - } - temp_r31->unk8E = 0; - } else { - if(++temp_r31->unk8E > 5) { - temp_r31->unk8E = 5; - temp_r31->unk8C = 0; - } - } - if(temp_r31->unk78 == 0 && temp_r31->unk84 == 0) { - if(temp_r31->unk58.z > 0 || temp_r31->unk8C >= 5) { - if(temp_r31->unk6A == 0) { - temp_r31->unk6A = 1; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[3], 0, 8, 0x40000001); - } - } else { - if(temp_r31->unk6A == 1) { - CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); - temp_r31->unk6A = 0; - } - } - } - CharModelMotionSpeedSet(temp_r31->unk86, 1.0f+temp_f29); - fn_2_65FC(object); - if(temp_r31->unk58.z > 0.1f) { - temp_r31->unk58.z *= 0.9f; - } else { - temp_r31->unk58.z = 0.0f; - } - temp_r31->unk88 -= 0.15f*lbl_2_data_0; - if(temp_r31->unk88 > -lbl_2_data_0) { - temp_r31->unk88 = -lbl_2_data_0; - } - sp20.x = object->trans.x; - sp20.y = object->trans.y; - sp20.z = object->trans.z; - omSetTra(object, temp_r31->unkC.x, temp_r31->unkC.y, lbl_2_bss_60.z+temp_r31->unkC.z); - sp14.x = object->trans.x; - sp14.y = object->trans.y; - sp14.z = object->trans.z; - if(sp8 != 0) { - object->rot.x -= 0.05f*sp8; - } else { - object->rot.x *= 0.8f; - if(object->rot.x < 0.01f) { - object->rot.x = 0; - } - } - if(sp9 != 0) { - object->rot.z -= 0.05f*sp9; - } else { - object->rot.z *= 0.8f; - if(object->rot.z < 0.01f) { - object->rot.z = 0; - } - } - if(object->rot.x < -30.0f) { - object->rot.x = -30.0f; - } - if(object->rot.x > 30.0f) { - object->rot.x = 30.0f; - } - if(object->rot.z < -30.0f) { - object->rot.z = -30.0f; - } - if(object->rot.z > 30.0f) { - object->rot.z = 30.0f; - } - object->rot.y = 180; - fn_2_6AF4(object); - fn_2_A940(object); - temp_r31->unk70 = 0; + M401WorkPlayer *temp_r31; + float temp_f29; + Vec sp20; + Vec sp14; + s32 sp10; + u16 spA; + s8 sp9; + s8 sp8; + temp_f29 = 0; + temp_r31 = object->data; + sp9 = sp8 = spA = 0; + if (temp_r31->unk78 == 0) { + if (GWPlayerCfg[temp_r31->unk4].iscom) { + fn_2_6C94(object, &sp9, &sp8, &spA); + } + else { + sp9 = HuPadStkX[temp_r31->unk8]; + sp8 = HuPadStkY[temp_r31->unk8]; + spA = HuPadBtnDown[temp_r31->unk8]; + } + if (sp9 != 0 || sp8 != 0) { + temp_r31->unk58.z = sqrtf((sp9 * sp9) + (sp8 * sp8)) / 9.0f; + } + temp_r31->unk64 = atan2d(sp9, sp8); + if (spA & PAD_BUTTON_A) { + temp_r31->unk88 += 1.51f * lbl_2_data_0; + if (temp_r31->unk88 < 1.51f * lbl_2_data_0) { + temp_r31->unk88 = 1.51f * lbl_2_data_0; + } + } + if (temp_r31->unk88 >= 0.0f) { + temp_f29 = 0; + } + else { + temp_f29 = fabs(temp_r31->unk88 / (1.51f * lbl_2_data_0)); + } + if (temp_r31->unk84) { + if (--temp_r31->unk84 == 0) { + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, HU3D_MOTATTR_LOOP); + temp_r31->unk6A = 0; + } + } + } + else { + temp_r31->unk84 = 0; + if (--temp_r31->unk7A == 0) { + sp10 = GWPlayerCfg[temp_r31->unk4].character; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, HU3D_MOTATTR_LOOP); + temp_r31->unk78 = 0; + temp_r31->unk6A = 0; + } + if (temp_r31->unk7A & 0x1) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + } + if (temp_f29 != 0) { + if (++temp_r31->unk8C > 15) { + temp_r31->unk8C = 15; + } + temp_r31->unk8E = 0; + } + else { + if (++temp_r31->unk8E > 5) { + temp_r31->unk8E = 5; + temp_r31->unk8C = 0; + } + } + if (temp_r31->unk78 == 0 && temp_r31->unk84 == 0) { + if (temp_r31->unk58.z > 0 || temp_r31->unk8C >= 5) { + if (temp_r31->unk6A == 0) { + temp_r31->unk6A = 1; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[3], 0, 8, HU3D_MOTATTR_LOOP); + } + } + else { + if (temp_r31->unk6A == 1) { + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, HU3D_MOTATTR_LOOP); + temp_r31->unk6A = 0; + } + } + } + CharModelMotionSpeedSet(temp_r31->unk86, 1.0f + temp_f29); + fn_2_65FC(object); + if (temp_r31->unk58.z > 0.1f) { + temp_r31->unk58.z *= 0.9f; + } + else { + temp_r31->unk58.z = 0.0f; + } + temp_r31->unk88 -= 0.15f * lbl_2_data_0; + if (temp_r31->unk88 > -lbl_2_data_0) { + temp_r31->unk88 = -lbl_2_data_0; + } + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + omSetTra(object, temp_r31->unkC.x, temp_r31->unkC.y, lbl_2_bss_60.z + temp_r31->unkC.z); + sp14.x = object->trans.x; + sp14.y = object->trans.y; + sp14.z = object->trans.z; + if (sp8 != 0) { + object->rot.x -= 0.05f * sp8; + } + else { + object->rot.x *= 0.8f; + if (object->rot.x < 0.01f) { + object->rot.x = 0; + } + } + if (sp9 != 0) { + object->rot.z -= 0.05f * sp9; + } + else { + object->rot.z *= 0.8f; + if (object->rot.z < 0.01f) { + object->rot.z = 0; + } + } + if (object->rot.x < -30.0f) { + object->rot.x = -30.0f; + } + if (object->rot.x > 30.0f) { + object->rot.x = 30.0f; + } + if (object->rot.z < -30.0f) { + object->rot.z = -30.0f; + } + if (object->rot.z > 30.0f) { + object->rot.z = 30.0f; + } + object->rot.y = 180; + fn_2_6AF4(object); + fn_2_A940(object); + temp_r31->unk70 = 0; } void fn_2_65FC(omObjData *object) { - M401WorkPlayer *temp_r31; - M401WorkPlayer *temp_r30; - s32 temp_r29; - omObjData *temp_r28; - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f26; - float temp_f24; - - Vec sp24; - Vec sp18; - Vec spC; - temp_r30 = object->data; - temp_f26 = temp_r30->unk58.z; - sp24.x = sind(temp_r30->unk64); - sp24.y = cosd(temp_r30->unk64); - sp24.z = temp_r30->unk88+lbl_2_data_0; - VECNormalize(&sp24, &sp18); - sp24.x *= temp_f26; - sp24.y *= temp_f26; - sp24.z -= lbl_2_data_0; - temp_f31 = temp_r30->unkC.x+sp24.x; - temp_f30 = temp_r30->unkC.y+sp24.y; - temp_f29 = temp_r30->unkC.z+sp24.z; - if(temp_f31 < -400) { - temp_f31 = -400; - } - if(temp_f31 > 400) { - temp_f31 = 400; - } - if(temp_f30 < -300) { - temp_f30 = -300; - } - if(temp_f30 > 300) { - temp_f30 = 300; - } - if(temp_f29 < 400) { - temp_f29 = 400; - } - if(temp_f29 > 800) { - temp_f29 = 800; - } - for(temp_r29=0; temp_r29<4; temp_r29++) { - if(lbl_2_bss_118[temp_r29] != object) { - temp_r28 = lbl_2_bss_118[temp_r29]; - temp_r31 = temp_r28->data; - temp_f24 = VECMagPoint(temp_f31-temp_r31->unkC.x, temp_f30-temp_r31->unkC.y, temp_f29-temp_r31->unkC.z); - if(temp_f24 < 127.0f) { - spC.x = temp_f31-temp_r31->unkC.x; - spC.y = temp_f30-temp_r31->unkC.y; - spC.z = temp_f29-temp_r31->unkC.z; - VECNormalize(&spC, &spC); - temp_f31 = temp_r31->unkC.x+127.0f*spC.x; - temp_f30 = temp_r31->unkC.y+127.0f*spC.y; - temp_f29 = temp_r31->unkC.z+127.0f*spC.z; - } - } - } - if(temp_f31 < -400) { - temp_f31 = -400; - } - if(temp_f31 > 400) { - temp_f31 = 400; - } - if(temp_f30 < -300) { - temp_f30 = -300; - } - if(temp_f30 > 300) { - temp_f30 = 300; - } - if(temp_f29 < 400) { - temp_f29 = 400; - } - if(temp_f29 > 800) { - temp_f29 = 800; - } - temp_r30->unkC.x = temp_f31; - temp_r30->unkC.y = temp_f30; - temp_r30->unkC.z = temp_f29; + M401WorkPlayer *temp_r31; + M401WorkPlayer *temp_r30; + s32 temp_r29; + omObjData *temp_r28; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f26; + float temp_f24; + + Vec sp24; + Vec sp18; + Vec spC; + temp_r30 = object->data; + temp_f26 = temp_r30->unk58.z; + sp24.x = sind(temp_r30->unk64); + sp24.y = cosd(temp_r30->unk64); + sp24.z = temp_r30->unk88 + lbl_2_data_0; + VECNormalize(&sp24, &sp18); + sp24.x *= temp_f26; + sp24.y *= temp_f26; + sp24.z -= lbl_2_data_0; + temp_f31 = temp_r30->unkC.x + sp24.x; + temp_f30 = temp_r30->unkC.y + sp24.y; + temp_f29 = temp_r30->unkC.z + sp24.z; + if (temp_f31 < -400) { + temp_f31 = -400; + } + if (temp_f31 > 400) { + temp_f31 = 400; + } + if (temp_f30 < -300) { + temp_f30 = -300; + } + if (temp_f30 > 300) { + temp_f30 = 300; + } + if (temp_f29 < 400) { + temp_f29 = 400; + } + if (temp_f29 > 800) { + temp_f29 = 800; + } + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if (lbl_2_bss_118[temp_r29] != object) { + temp_r28 = lbl_2_bss_118[temp_r29]; + temp_r31 = temp_r28->data; + temp_f24 = VECMagPoint(temp_f31 - temp_r31->unkC.x, temp_f30 - temp_r31->unkC.y, temp_f29 - temp_r31->unkC.z); + if (temp_f24 < 127.0f) { + spC.x = temp_f31 - temp_r31->unkC.x; + spC.y = temp_f30 - temp_r31->unkC.y; + spC.z = temp_f29 - temp_r31->unkC.z; + VECNormalize(&spC, &spC); + temp_f31 = temp_r31->unkC.x + 127.0f * spC.x; + temp_f30 = temp_r31->unkC.y + 127.0f * spC.y; + temp_f29 = temp_r31->unkC.z + 127.0f * spC.z; + } + } + } + if (temp_f31 < -400) { + temp_f31 = -400; + } + if (temp_f31 > 400) { + temp_f31 = 400; + } + if (temp_f30 < -300) { + temp_f30 = -300; + } + if (temp_f30 > 300) { + temp_f30 = 300; + } + if (temp_f29 < 400) { + temp_f29 = 400; + } + if (temp_f29 > 800) { + temp_f29 = 800; + } + temp_r30->unkC.x = temp_f31; + temp_r30->unkC.y = temp_f30; + temp_r30->unkC.z = temp_f29; } void fn_2_6AF4(omObjData *object) { - M401WorkPlayer *temp_r31 = object->data; - temp_r31->unk18.x = temp_r31->unkC.x+lbl_2_bss_60.x; - temp_r31->unk18.y = object->trans.y; - temp_r31->unk18.z = 80+object->trans.z; + M401WorkPlayer *temp_r31 = object->data; + temp_r31->unk18.x = temp_r31->unkC.x + lbl_2_bss_60.x; + temp_r31->unk18.y = object->trans.y; + temp_r31->unk18.z = 80 + object->trans.z; } void fn_2_6B44(omObjData *object) { - M401WorkPlayer *temp_r30; - float temp_f31; - float temp_f30; - float temp_f29; - temp_r30 = object->data; - temp_f31 = 80.0*sind(object->rot.y+180.0f); - temp_f29 = 80.0*-cosd(object->rot.y); - temp_f30 = 80.0*sind(object->rot.x); - temp_r30->unk18.x = object->trans.x+temp_f31; - temp_r30->unk18.y = object->trans.y+temp_f30; - temp_r30->unk18.z = object->trans.z+temp_f29; + M401WorkPlayer *temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + temp_r30 = object->data; + temp_f31 = 80.0 * sind(object->rot.y + 180.0f); + temp_f29 = 80.0 * -cosd(object->rot.y); + temp_f30 = 80.0 * sind(object->rot.x); + temp_r30->unk18.x = object->trans.x + temp_f31; + temp_r30->unk18.y = object->trans.y + temp_f30; + temp_r30->unk18.z = object->trans.z + temp_f29; } omObjData *fn_2_792C(omObjData *object); void fn_2_6C94(omObjData *object, s8 *x, s8 *y, u16 *btn) { - M401WorkPlayer *temp_r31; - s32 temp_r30; - omObjData *temp_r28; - s32 temp_r27; - u16 temp_r26 = 0; - float temp_f31; - float temp_f30; - float temp_f29; - s16 sp50[][8] = { - 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 0, 0, 2, - 0, 0, 0, 2, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - Vec sp44; - Vec sp38; - Vec sp2C; - Vec sp20; - s16 sp18[] = { - 50, 125, 200, 245 - }; - s16 sp10[] = { - 75, 150, 200, 250 - }; - s16 sp8[] = { - 9, 6, 4, 2 - }; - temp_r31 = object->data; - *x = *y = 0; - *btn = 0; - if(temp_r31->unk7C == 0) { - temp_r31->unk7E = sp50[GWPlayerCfg[temp_r31->unk4].diff][frand() & 0x7]; - temp_r31->unk7C = (frand()%60)+30; - temp_r31->unk92 = 0; - if(frandu8() < sp18[GWPlayerCfg[temp_r31->unk4].diff]) { - temp_r31->unk92 |= 1; - } - if(frandu8() < sp10[GWPlayerCfg[temp_r31->unk4].diff]) { - temp_r31->unk92 |= 2; - } - } else { - temp_r31->unk7C--; - } - temp_r26 = temp_r31->unk92; - sp44.x = sp44.y = sp44.z = 0; - switch(temp_r31->unk7E) { - case 0: - temp_r28 = fn_2_792C(object); - if(temp_r28) { - sp44.x = temp_r28->trans.x-object->trans.x; - sp44.y = temp_r28->trans.y-object->trans.y; - sp44.z = temp_r28->trans.z-object->trans.z; - } - break; - - case 2: - break; - } - if(temp_r26 & 0x1) { - sp38.x = object->trans.x; - sp38.y = object->trans.y; - sp38.z = object->trans.z; - for(temp_r27=0; temp_r27<4; temp_r27++) { - if(lbl_2_bss_118[temp_r27] != object) { - sp20.x = lbl_2_bss_118[temp_r27]->trans.x; - sp20.y = lbl_2_bss_118[temp_r27]->trans.y; - sp20.z = lbl_2_bss_118[temp_r27]->trans.z; - VECSubtract(&sp38, &sp20, &sp2C); - temp_f31 = VECMag(&sp2C)-110.0f; - if(temp_f31 < 110.0f) { - temp_f31 -= 60.0f; - if(temp_f31 < 0.01f) { - temp_f31 = 0.01; - } - VECScale(&sp2C, &sp2C, 1.0f/temp_f31); - VECAdd(&sp44, &sp2C, &sp44); - } - } - } - } - if(temp_r26 & 0x2) { - for(temp_r30=0; temp_r30<4; temp_r30++) { - if(lbl_2_bss_E4[temp_r30]->func != NULL) { - sp20.x = lbl_2_bss_E4[temp_r30]->trans.x; - sp20.y = lbl_2_bss_E4[temp_r30]->trans.y; - sp20.z = lbl_2_bss_E4[temp_r30]->trans.z; - VECSubtract(&sp38, &sp20, &sp2C); - temp_f31 = VECMag(&sp2C)-110.0f; - if(temp_f31 < 110.0f) { - temp_f31 -= 60.0f; - if(temp_f31 < 0.01f) { - temp_f31 = 0.01; - } - VECScale(&sp2C, &sp2C, 1.0f/temp_f31); - VECAdd(&sp44, &sp2C, &sp44); - } - } - } - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(lbl_2_bss_100[temp_r30]->func != NULL) { - sp20.x = lbl_2_bss_100[temp_r30]->trans.x; - sp20.y = lbl_2_bss_100[temp_r30]->trans.y; - sp20.z = lbl_2_bss_100[temp_r30]->trans.z; - VECSubtract(&sp38, &sp20, &sp2C); - temp_f31 = VECMag(&sp2C)-110.0f; - if(temp_f31 < 110.0f) { - temp_f31 -= 60.0f; - if(temp_f31 < 0.01f) { - temp_f31 = 0.01; - } - VECScale(&sp2C, &sp2C, 1.0f/temp_f31); - VECAdd(&sp44, &sp2C, &sp44); - } - } - } - sp20.x = lbl_2_bss_FC->trans.x; - sp20.y = lbl_2_bss_FC->trans.y; - sp20.z = lbl_2_bss_FC->trans.z; - VECSubtract(&sp38, &sp20, &sp2C); - sp2C.x = 0; - temp_f31 = VECMag(&sp2C)-220.0f; - if(temp_f31 < 220.0f) { - temp_f31 -= 160.0f; - if(temp_f31 < 0.01f) { - temp_f31 = 0.01; - } - VECScale(&sp2C, &sp2C, 1.0f/temp_f31); - VECAdd(&sp44, &sp2C, &sp44); - } - } - - if(sp44.z < 0.0f) { - if(temp_r31->unk90 == 0) { - *btn |= 0x100; - temp_r31->unk90 = (frand()%sp8[GWPlayerCfg[temp_r31->unk4].diff])+3; - } else { - temp_r31->unk90--; - } - } - sp44.z = 0; - temp_f30 = VECMag(&sp44); - temp_f30 *= 0.2f; - temp_f29 = atan2d(sp44.y, sp44.x); - if(temp_f30 > 72.0f) { - temp_f30 = 72.0f; - } - if(temp_f30 < 10.0f) { - temp_f30 = 0.0f; - } - *x = temp_f30*cosd(temp_f29); - *y = temp_f30*sind(temp_f29); + M401WorkPlayer *temp_r31; + s32 temp_r30; + omObjData *temp_r28; + s32 temp_r27; + u16 temp_r26 = 0; + float temp_f31; + float temp_f30; + float temp_f29; + s16 sp50[][8] = { + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + s16 sp18[] = { 50, 125, 200, 245 }; + s16 sp10[] = { 75, 150, 200, 250 }; + s16 sp8[] = { 9, 6, 4, 2 }; + temp_r31 = object->data; + *x = *y = 0; + *btn = 0; + if (temp_r31->unk7C == 0) { + temp_r31->unk7E = sp50[GWPlayerCfg[temp_r31->unk4].diff][frand() & 0x7]; + temp_r31->unk7C = (frand() % 60) + 30; + temp_r31->unk92 = 0; + if (frandu8() < sp18[GWPlayerCfg[temp_r31->unk4].diff]) { + temp_r31->unk92 |= 1; + } + if (frandu8() < sp10[GWPlayerCfg[temp_r31->unk4].diff]) { + temp_r31->unk92 |= 2; + } + } + else { + temp_r31->unk7C--; + } + temp_r26 = temp_r31->unk92; + sp44.x = sp44.y = sp44.z = 0; + switch (temp_r31->unk7E) { + case 0: + temp_r28 = fn_2_792C(object); + if (temp_r28) { + sp44.x = temp_r28->trans.x - object->trans.x; + sp44.y = temp_r28->trans.y - object->trans.y; + sp44.z = temp_r28->trans.z - object->trans.z; + } + break; + + case 2: + break; + } + if (temp_r26 & 0x1) { + sp38.x = object->trans.x; + sp38.y = object->trans.y; + sp38.z = object->trans.z; + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + if (lbl_2_bss_118[temp_r27] != object) { + sp20.x = lbl_2_bss_118[temp_r27]->trans.x; + sp20.y = lbl_2_bss_118[temp_r27]->trans.y; + sp20.z = lbl_2_bss_118[temp_r27]->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + temp_f31 = VECMag(&sp2C) - 110.0f; + if (temp_f31 < 110.0f) { + temp_f31 -= 60.0f; + if (temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f / temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + } + } + if (temp_r26 & 0x2) { + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + if (lbl_2_bss_E4[temp_r30]->func != NULL) { + sp20.x = lbl_2_bss_E4[temp_r30]->trans.x; + sp20.y = lbl_2_bss_E4[temp_r30]->trans.y; + sp20.z = lbl_2_bss_E4[temp_r30]->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + temp_f31 = VECMag(&sp2C) - 110.0f; + if (temp_f31 < 110.0f) { + temp_f31 -= 60.0f; + if (temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f / temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + } + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (lbl_2_bss_100[temp_r30]->func != NULL) { + sp20.x = lbl_2_bss_100[temp_r30]->trans.x; + sp20.y = lbl_2_bss_100[temp_r30]->trans.y; + sp20.z = lbl_2_bss_100[temp_r30]->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + temp_f31 = VECMag(&sp2C) - 110.0f; + if (temp_f31 < 110.0f) { + temp_f31 -= 60.0f; + if (temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f / temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + } + sp20.x = lbl_2_bss_FC->trans.x; + sp20.y = lbl_2_bss_FC->trans.y; + sp20.z = lbl_2_bss_FC->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + sp2C.x = 0; + temp_f31 = VECMag(&sp2C) - 220.0f; + if (temp_f31 < 220.0f) { + temp_f31 -= 160.0f; + if (temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f / temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + + if (sp44.z < 0.0f) { + if (temp_r31->unk90 == 0) { + *btn |= 0x100; + temp_r31->unk90 = (frand() % sp8[GWPlayerCfg[temp_r31->unk4].diff]) + 3; + } + else { + temp_r31->unk90--; + } + } + sp44.z = 0; + temp_f30 = VECMag(&sp44); + temp_f30 *= 0.2f; + temp_f29 = atan2d(sp44.y, sp44.x); + if (temp_f30 > 72.0f) { + temp_f30 = 72.0f; + } + if (temp_f30 < 10.0f) { + temp_f30 = 0.0f; + } + *x = temp_f30 * cosd(temp_f29); + *y = temp_f30 * sind(temp_f29); } s32 fn_2_AC2C(Vec *pos, float dist, omObjData **newobj); s32 fn_2_7640(omObjData *object, omObjData **newobj) { - Vec spC; - spC.x = object->trans.x; - spC.y = object->trans.y; - spC.z = object->trans.z-100.0f; - return fn_2_AC2C(&spC, 270.0f, newobj); + Vec spC; + spC.x = object->trans.x; + spC.y = object->trans.y; + spC.z = object->trans.z - 100.0f; + return fn_2_AC2C(&spC, 270.0f, newobj); } void fn_2_76AC(omObjData *object, s32 arg1) { - M401WorkPlayer *temp_r31; - if(arg1) { - temp_r31 = object->data; - temp_r31->unk7E = 1; - temp_r31->unk7C = 5; - switch(arg1) { - case 1: - temp_r31->unk80 = 180.0+atan2d(temp_r31->unk54->trans.x-object->trans.x, temp_r31->unk54->trans.y-object->trans.y); - break; - - case 2: - if(temp_r31->unkC.y > temp_r31->unk54->trans.y) { - temp_r31->unk80 = 80.0f+((1.0f/255.0f)*(20.0f*frandu8())); - } else { - temp_r31->unk80 = 260.0f+((1.0f/255.0f)*(20.0f*frandu8())); - } - break; - - case 3: - if(temp_r31->unkC.y > temp_r31->unk54->trans.y) { - temp_r31->unk80 = 80.0f+((1.0f/255.0f)*(20.0f*frandu8())); - } else { - temp_r31->unk80 = 260.0f+((1.0f/255.0f)*(20.0f*frandu8())); - } - break; - } - } + M401WorkPlayer *temp_r31; + if (arg1) { + temp_r31 = object->data; + temp_r31->unk7E = 1; + temp_r31->unk7C = 5; + switch (arg1) { + case 1: + temp_r31->unk80 = 180.0 + atan2d(temp_r31->unk54->trans.x - object->trans.x, temp_r31->unk54->trans.y - object->trans.y); + break; + + case 2: + if (temp_r31->unkC.y > temp_r31->unk54->trans.y) { + temp_r31->unk80 = 80.0f + ((1.0f / 255.0f) * (20.0f * frandu8())); + } + else { + temp_r31->unk80 = 260.0f + ((1.0f / 255.0f) * (20.0f * frandu8())); + } + break; + + case 3: + if (temp_r31->unkC.y > temp_r31->unk54->trans.y) { + temp_r31->unk80 = 80.0f + ((1.0f / 255.0f) * (20.0f * frandu8())); + } + else { + temp_r31->unk80 = 260.0f + ((1.0f / 255.0f) * (20.0f * frandu8())); + } + break; + } + } } omObjData *fn_2_792C(omObjData *object) { - omObjData **temp_r31; - s32 temp_r30; - omObjData *temp_r28; - float temp_f31, temp_f30, temp_f29; - float temp_f27, temp_f26; - temp_r31 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); - temp_f26 = 100000; - temp_r28 = NULL; - for(temp_r30=0; temp_r30<28; temp_r30++) { - if(temp_r31[temp_r30] == NULL || temp_r31[temp_r30]->trans.z-lbl_2_bss_60.z > 850.0f || temp_r31[temp_r30]->trans.z-lbl_2_bss_60.z < -2500.0f) { - continue; - } - temp_f30 = temp_r31[temp_r30]->trans.x-object->trans.x; - temp_f29 = temp_r31[temp_r30]->trans.y-object->trans.y; - temp_f31 = temp_r31[temp_r30]->trans.z-object->trans.z; - temp_f31 *= 0.15f; - temp_f27 = VECMagPoint(temp_f30, temp_f29, temp_f31); - if(temp_f27 < temp_f26 && temp_f27 < 2000.0f) { - temp_f26 = temp_f27; - temp_r28 = temp_r31[temp_r30]; - } - } - return temp_r28; + omObjData **temp_r31; + s32 temp_r30; + omObjData *temp_r28; + float temp_f31, temp_f30, temp_f29; + float temp_f27, temp_f26; + temp_r31 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); + temp_f26 = 100000; + temp_r28 = NULL; + for (temp_r30 = 0; temp_r30 < 28; temp_r30++) { + if (temp_r31[temp_r30] == NULL || temp_r31[temp_r30]->trans.z - lbl_2_bss_60.z > 850.0f + || temp_r31[temp_r30]->trans.z - lbl_2_bss_60.z < -2500.0f) { + continue; + } + temp_f30 = temp_r31[temp_r30]->trans.x - object->trans.x; + temp_f29 = temp_r31[temp_r30]->trans.y - object->trans.y; + temp_f31 = temp_r31[temp_r30]->trans.z - object->trans.z; + temp_f31 *= 0.15f; + temp_f27 = VECMagPoint(temp_f30, temp_f29, temp_f31); + if (temp_f27 < temp_f26 && temp_f27 < 2000.0f) { + temp_f26 = temp_f27; + temp_r28 = temp_r31[temp_r30]; + } + } + return temp_r28; } void fn_2_A914(s32 player); void fn_2_7C3C(omObjData *object) { - M401WorkPlayer *temp_r31 = object->data; - temp_r31->unk78 = 1; - temp_r31->unk7A = 120; - CharModelMotionShiftSet(temp_r31->unk86, object->motion[7], 0, 10, 0); - fn_2_A914(temp_r31->unk4); + M401WorkPlayer *temp_r31 = object->data; + temp_r31->unk78 = 1; + temp_r31->unk7A = 120; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[7], 0, 10, HU3D_MOTATTR_NONE); + fn_2_A914(temp_r31->unk4); } typedef struct work_7CB4 { - s16 unk0; - Vec unk4; - Vec unk10; - s16 unk1C; - s16 unk1E; - s16 unk20; - s16 unk22; - s16 unk24; - float unk28; - s16 unk2C; - s16 unk2E; - float unk30; + s16 unk0; + Vec unk4; + Vec unk10; + s16 unk1C; + s16 unk1E; + s16 unk20; + s16 unk22; + s16 unk24; + float unk28; + s16 unk2C; + s16 unk2E; + float unk30; } Work7CB4; void fn_2_7E6C(omObjData *object); void fn_2_7CB4(omObjData *object) { - Work7CB4 *temp_r31; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7CB4), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - temp_r31->unk10.x = 0; - temp_r31->unk10.y = 200; - temp_r31->unk10.z = 0; - temp_r31->unk1E = 0; - temp_r31->unk22 = 100; - temp_r31->unk4.x = 0; - temp_r31->unk4.y = 200; - temp_r31->unk24 = 0; - temp_r31->unk28 = 0; - object->model[0] = Hu3DModelCreateFile(0x20000B); - Hu3DModelClusterAttrSet(object->model[0], 0, 0xC0000001); - Hu3DModelAttrSet(object->model[0], 0x1); - Hu3DModelAmbSet(object->model[0], 0.6f, 0.6f, 0.6f); - Hu3DModelShadowSet(object->model[0]); - temp_r31->unk0 = 0; - temp_r31->unk22 = 180; - omSetTra(object, 0, 200, 200); - omSetRot(object, 0, 180, 0); - object->func = fn_2_7E6C; + Work7CB4 *temp_r31; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7CB4), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + temp_r31->unk10.x = 0; + temp_r31->unk10.y = 200; + temp_r31->unk10.z = 0; + temp_r31->unk1E = 0; + temp_r31->unk22 = 100; + temp_r31->unk4.x = 0; + temp_r31->unk4.y = 200; + temp_r31->unk24 = 0; + temp_r31->unk28 = 0; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x0B)); + Hu3DModelClusterAttrSet(object->model[0], 0, 0xC0000001); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAmbSet(object->model[0], 0.6f, 0.6f, 0.6f); + Hu3DModelShadowSet(object->model[0]); + temp_r31->unk0 = 0; + temp_r31->unk22 = 180; + omSetTra(object, 0, 200, 200); + omSetRot(object, 0, 180, 0); + object->func = fn_2_7E6C; } void fn_2_7E6C(omObjData *object) { - Work7CB4 *temp_r31; - temp_r31 = object->data; - switch(temp_r31->unk0) { - case 0: - if(--temp_r31->unk22 == 0) { - temp_r31->unk0 = 1; - } - break; - - case 1: - object->trans.z += -11.333333f; - break; - } + Work7CB4 *temp_r31; + temp_r31 = object->data; + switch (temp_r31->unk0) { + case 0: + if (--temp_r31->unk22 == 0) { + temp_r31->unk0 = 1; + } + break; + + case 1: + object->trans.z += -11.333333f; + break; + } } -s32 gap_04_00000328_data = 0x20000C; -s32 lbl_2_data_32C[] = { - 4, 6 -}; -Vec lbl_2_data_334[][10] = { - { - { 1400, -600, -21500 }, - { -100, 100, -22000 }, - { -1000, -200, -23000 }, - { -2000, -200, -23500 }, - { -2200, -200, -23500 }, - { -2300, -200, -23500 }, - }, - { - { -1000, 500, -29500 }, - { -300, 300, -31500 }, - { 300, -150, -32500 }, - { -200, 250, -34000 }, - { -300, 300, -35000 }, - { -600, 300, -36000 }, - { 1000, -180, -40000 }, - { 1000, -180, -40000 }, - } - +s32 gap_04_00000328_data = DATA_MAKE_NUM(DATADIR_M401, 0x0C); +s32 lbl_2_data_32C[] = { 4, 6 }; +Vec lbl_2_data_334[][10] = { { + { 1400, -600, -21500 }, + { -100, 100, -22000 }, + { -1000, -200, -23000 }, + { -2000, -200, -23500 }, + { -2200, -200, -23500 }, + { -2300, -200, -23500 }, + }, + { + { -1000, 500, -29500 }, + { -300, 300, -31500 }, + { 300, -150, -32500 }, + { -200, 250, -34000 }, + { -300, 300, -35000 }, + { -600, 300, -36000 }, + { 1000, -180, -40000 }, + { 1000, -180, -40000 }, + } + }; void fn_2_7EDC(s32 arg0, s32 arg1, float arg2, Vec *arg3) { - Vec *temp_r31; - Vec *temp_r30; - Vec *temp_r29; - Vec *temp_r28; - float temp_f31 = arg2*arg2; - if(arg1 == 0) { - temp_r31 = &lbl_2_data_334[arg0][arg1]; - temp_r30 = &lbl_2_data_334[arg0][arg1+1]; - temp_r29 = &lbl_2_data_334[arg0][arg1+2]; - temp_r28 = &lbl_2_data_334[arg0][arg1+3]; - arg3->x = (0.5f * ((2.0f * temp_r31->x) + ((temp_f31 * (temp_r29->x + (temp_r31->x - (2.0f * temp_r30->x)))) + (arg2 * (((-3.0f * temp_r31->x) + (4.0f * temp_r30->x)) - temp_r29->x))))); - arg3->y = (0.5f * ((2.0f * temp_r31->y) + ((temp_f31 * (temp_r29->y + (temp_r31->y - (2.0f * temp_r30->y)))) + (arg2 * (((-3.0f * temp_r31->y) + (4.0f * temp_r30->y)) - temp_r29->y))))); - arg3->z = (0.5f * ((2.0f * temp_r31->z) + ((temp_f31 * (temp_r29->z + (temp_r31->z - (2.0f * temp_r30->z)))) + (arg2 * (((-3.0f * temp_r31->z) + (4.0f * temp_r30->z)) - temp_r29->z))))); - } else { - temp_r31 = &lbl_2_data_334[arg0][arg1-1]; - temp_r30 = &lbl_2_data_334[arg0][arg1]; - temp_r29 = &lbl_2_data_334[arg0][arg1+1]; - temp_r28 = &lbl_2_data_334[arg0][arg1+2]; - arg3->x = (0.5f * ((2.0f * temp_r30->x) + ((arg2 * (-temp_r31->x + temp_r29->x)) + ((arg2 * (temp_f31 * (temp_r28->x + ((-temp_r31->x + (3.0f * temp_r30->x)) - (3.0f * temp_r29->x))))) + (temp_f31 * (((4.0f * temp_r29->x) + ((2.0f * temp_r31->x) - (5.0f * temp_r30->x))) - temp_r28->x)))))); - arg3->y = (0.5f * ((2.0f * temp_r30->y) + ((arg2 * (-temp_r31->y + temp_r29->y)) + ((arg2 * (temp_f31 * (temp_r28->y + ((-temp_r31->y + (3.0f * temp_r30->y)) - (3.0f * temp_r29->y))))) + (temp_f31 * (((4.0f * temp_r29->y) + ((2.0f * temp_r31->y) - (5.0f * temp_r30->y))) - temp_r28->y)))))); - arg3->z = (0.5f * ((2.0f * temp_r30->z) + ((arg2 * (-temp_r31->z + temp_r29->z)) + ((arg2 * (temp_f31 * (temp_r28->z + ((-temp_r31->z + (3.0f * temp_r30->z)) - (3.0f * temp_r29->z))))) + (temp_f31 * (((4.0f * temp_r29->z) + ((2.0f * temp_r31->z) - (5.0f * temp_r30->z))) - temp_r28->z)))))); - } + Vec *temp_r31; + Vec *temp_r30; + Vec *temp_r29; + Vec *temp_r28; + float temp_f31 = arg2 * arg2; + if (arg1 == 0) { + temp_r31 = &lbl_2_data_334[arg0][arg1]; + temp_r30 = &lbl_2_data_334[arg0][arg1 + 1]; + temp_r29 = &lbl_2_data_334[arg0][arg1 + 2]; + temp_r28 = &lbl_2_data_334[arg0][arg1 + 3]; + arg3->x = (0.5f + * ((2.0f * temp_r31->x) + + ((temp_f31 * (temp_r29->x + (temp_r31->x - (2.0f * temp_r30->x)))) + + (arg2 * (((-3.0f * temp_r31->x) + (4.0f * temp_r30->x)) - temp_r29->x))))); + arg3->y = (0.5f + * ((2.0f * temp_r31->y) + + ((temp_f31 * (temp_r29->y + (temp_r31->y - (2.0f * temp_r30->y)))) + + (arg2 * (((-3.0f * temp_r31->y) + (4.0f * temp_r30->y)) - temp_r29->y))))); + arg3->z = (0.5f + * ((2.0f * temp_r31->z) + + ((temp_f31 * (temp_r29->z + (temp_r31->z - (2.0f * temp_r30->z)))) + + (arg2 * (((-3.0f * temp_r31->z) + (4.0f * temp_r30->z)) - temp_r29->z))))); + } + else { + temp_r31 = &lbl_2_data_334[arg0][arg1 - 1]; + temp_r30 = &lbl_2_data_334[arg0][arg1]; + temp_r29 = &lbl_2_data_334[arg0][arg1 + 1]; + temp_r28 = &lbl_2_data_334[arg0][arg1 + 2]; + arg3->x = (0.5f + * ((2.0f * temp_r30->x) + + ((arg2 * (-temp_r31->x + temp_r29->x)) + + ((arg2 * (temp_f31 * (temp_r28->x + ((-temp_r31->x + (3.0f * temp_r30->x)) - (3.0f * temp_r29->x))))) + + (temp_f31 * (((4.0f * temp_r29->x) + ((2.0f * temp_r31->x) - (5.0f * temp_r30->x))) - temp_r28->x)))))); + arg3->y = (0.5f + * ((2.0f * temp_r30->y) + + ((arg2 * (-temp_r31->y + temp_r29->y)) + + ((arg2 * (temp_f31 * (temp_r28->y + ((-temp_r31->y + (3.0f * temp_r30->y)) - (3.0f * temp_r29->y))))) + + (temp_f31 * (((4.0f * temp_r29->y) + ((2.0f * temp_r31->y) - (5.0f * temp_r30->y))) - temp_r28->y)))))); + arg3->z = (0.5f + * ((2.0f * temp_r30->z) + + ((arg2 * (-temp_r31->z + temp_r29->z)) + + ((arg2 * (temp_f31 * (temp_r28->z + ((-temp_r31->z + (3.0f * temp_r30->z)) - (3.0f * temp_r29->z))))) + + (temp_f31 * (((4.0f * temp_r29->z) + ((2.0f * temp_r31->z) - (5.0f * temp_r30->z))) - temp_r28->z)))))); + } } s32 fn_2_8450(omObjData *object) { - Work7CB4 *temp_r31; - Vec *temp_r29; - Vec *temp_r28; - float temp_f29; - Vec sp18; - Vec spC; - temp_r31 = object->data; - while(1) { - if(temp_r31->unk2E == lbl_2_data_32C[temp_r31->unk2C]) { - return 1; - } - temp_r28 = &lbl_2_data_334[temp_r31->unk2C][temp_r31->unk2E+1]; - temp_r29 = &lbl_2_data_334[temp_r31->unk2C][temp_r31->unk2E]; - sp18.x = temp_r28->x - temp_r29->x; - sp18.y = temp_r28->y - temp_r29->y; - sp18.z = temp_r28->z - temp_r29->z; - temp_f29 = VECMagPoint(sp18.x, sp18.y, sp18.z); - if(temp_r31->unk30 > temp_f29) { - temp_r31->unk30 -= temp_f29; - temp_r31->unk2E++; - continue; - } - break; - } - fn_2_7EDC(temp_r31->unk2C, temp_r31->unk2E, temp_r31->unk30/temp_f29, &spC); - sp18.x = spC.x-object->trans.x; - sp18.y = spC.y-object->trans.y; - sp18.z = spC.z-object->trans.z; - VECNormalize(&sp18, &sp18); - object->trans.x = spC.x; - object->trans.y = spC.y; - object->trans.z = spC.z; - object->rot.y = atan2d(sp18.x, sp18.z); - object->rot.x = -90.0f*sp18.y; - return 0; + Work7CB4 *temp_r31; + Vec *temp_r29; + Vec *temp_r28; + float temp_f29; + Vec sp18; + Vec spC; + temp_r31 = object->data; + while (1) { + if (temp_r31->unk2E == lbl_2_data_32C[temp_r31->unk2C]) { + return 1; + } + temp_r28 = &lbl_2_data_334[temp_r31->unk2C][temp_r31->unk2E + 1]; + temp_r29 = &lbl_2_data_334[temp_r31->unk2C][temp_r31->unk2E]; + sp18.x = temp_r28->x - temp_r29->x; + sp18.y = temp_r28->y - temp_r29->y; + sp18.z = temp_r28->z - temp_r29->z; + temp_f29 = VECMagPoint(sp18.x, sp18.y, sp18.z); + if (temp_r31->unk30 > temp_f29) { + temp_r31->unk30 -= temp_f29; + temp_r31->unk2E++; + continue; + } + break; + } + fn_2_7EDC(temp_r31->unk2C, temp_r31->unk2E, temp_r31->unk30 / temp_f29, &spC); + sp18.x = spC.x - object->trans.x; + sp18.y = spC.y - object->trans.y; + sp18.z = spC.z - object->trans.z; + VECNormalize(&sp18, &sp18); + object->trans.x = spC.x; + object->trans.y = spC.y; + object->trans.z = spC.z; + object->rot.y = atan2d(sp18.x, sp18.z); + object->rot.x = -90.0f * sp18.y; + return 0; } s32 fn_2_873C(omObjData *object) { - Work7CB4 *temp_r30; - Vec sp8; - temp_r30 = object->data; - if(object->trans.x > -400.0f - && object->trans.x < 400.0f - && object->trans.z-lbl_2_bss_60.z < 300.0f - && object->trans.y > -300.0f - && object->trans.y < 300.0f) { - if(temp_r30->unk1E == 0) { - if(temp_r30->unk20 != 0) { - temp_r30->unk20--; - sp8.x = object->trans.x; - sp8.y = object->trans.y; - sp8.z = object->trans.z-lbl_2_bss_60.z; - fn_2_10A88(&sp8, 1); - return 1; - } - - } else { - temp_r30->unk1E--; - } - } - return 0; + Work7CB4 *temp_r30; + Vec sp8; + temp_r30 = object->data; + if (object->trans.x > -400.0f && object->trans.x < 400.0f && object->trans.z - lbl_2_bss_60.z < 300.0f && object->trans.y > -300.0f + && object->trans.y < 300.0f) { + if (temp_r30->unk1E == 0) { + if (temp_r30->unk20 != 0) { + temp_r30->unk20--; + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z - lbl_2_bss_60.z; + fn_2_10A88(&sp8, 1); + return 1; + } + } + else { + temp_r30->unk1E--; + } + } + return 0; } void fn_2_8968(omObjData *object); void fn_2_8868(omObjData *object) { - Work7CB4 *temp_r31; - temp_r31 = object->data; - if(lbl_2_bss_60.z < -20800.0f) { - Hu3DModelAttrReset(object->model[0], 1); - temp_r31->unk2C = 0; - temp_r31->unk2E = 0; - temp_r31->unk30 = 0; - temp_r31->unk1E = ((frand()%10)+13)*0.43478262f; - temp_r31->unk20 = 2; - fn_2_8450(object); - object->func = fn_2_8968; - } + Work7CB4 *temp_r31; + temp_r31 = object->data; + if (lbl_2_bss_60.z < -20800.0f) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + temp_r31->unk2C = 0; + temp_r31->unk2E = 0; + temp_r31->unk30 = 0; + temp_r31->unk1E = ((frand() % 10) + 13) * 0.43478262f; + temp_r31->unk20 = 2; + fn_2_8450(object); + object->func = fn_2_8968; + } } void fn_2_8B58(omObjData *object); void fn_2_8968(omObjData *object) { - Work7CB4 *temp_r29; - temp_r29 = object->data; - temp_r29->unk30 += 25.875; - if(fn_2_873C(object)) { - temp_r29->unk1E = ((frand()%15)+22)*0.43478262f; - } - if(fn_2_8450(object)) { - Hu3DModelAttrSet(object->model[0], 1); - object->func = fn_2_8B58; - } + Work7CB4 *temp_r29; + temp_r29 = object->data; + temp_r29->unk30 += 25.875; + if (fn_2_873C(object)) { + temp_r29->unk1E = ((frand() % 15) + 22) * 0.43478262f; + } + if (fn_2_8450(object)) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_2_8B58; + } } void fn_2_8C58(omObjData *object); void fn_2_8B58(omObjData *object) { - Work7CB4 *temp_r31; - temp_r31 = object->data; - if(lbl_2_bss_60.z < -30500.0f) { - Hu3DModelAttrReset(object->model[0], 1); - temp_r31->unk2C = 1; - temp_r31->unk2E = 0; - temp_r31->unk30 = 0; - temp_r31->unk1E = ((frand()%60)+50)*0.43478262f; - temp_r31->unk20 = 3; - fn_2_8450(object); - object->func = fn_2_8C58; - } + Work7CB4 *temp_r31; + temp_r31 = object->data; + if (lbl_2_bss_60.z < -30500.0f) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + temp_r31->unk2C = 1; + temp_r31->unk2E = 0; + temp_r31->unk30 = 0; + temp_r31->unk1E = ((frand() % 60) + 50) * 0.43478262f; + temp_r31->unk20 = 3; + fn_2_8450(object); + object->func = fn_2_8C58; + } } -s32 lbl_2_data_424[] = { - 50, 95 -}; +s32 lbl_2_data_424[] = { 50, 95 }; void fn_2_8C58(omObjData *object) { - Work7CB4 *temp_r29; - temp_r29 = object->data; - temp_r29->unk30 += 25.875; - if(fn_2_873C(object)) { - temp_r29->unk1E = ((frand()%15)+lbl_2_data_424[lbl_2_bss_14++])*0.43478262f; - } - if(fn_2_8450(object)) { - Hu3DModelAttrSet(object->model[0], 1); - object->func = NULL; - } + Work7CB4 *temp_r29; + temp_r29 = object->data; + temp_r29->unk30 += 25.875; + if (fn_2_873C(object)) { + temp_r29->unk1E = ((frand() % 15) + lbl_2_data_424[lbl_2_bss_14++]) * 0.43478262f; + } + if (fn_2_8450(object)) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = NULL; + } } typedef struct work_8E74 { - Vec unk0; - Vec unkC; - Vec unk18; - Vec unk24; - float unk30; - Vec unk34; + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + float unk30; + Vec unk34; } Work8E74; void fn_2_9298(omObjData *object); void fn_2_8E74(omObjData *object) { - Work8E74 *temp_r31; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work8E74), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - temp_r31->unk24.x = 6; - temp_r31->unk24.z = 90; - temp_r31->unk24.y = 100; - object->model[0] = Hu3DModelCreateFile(0x20000D); - object->motion[0] = Hu3DJointMotionFile(object->model[0], 0x200010); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelAttrSet(object->model[0], 1); - omSetTra(object, -1000, 0, -23000); - omSetRot(object, 0, 90, 0); - temp_r31->unkC.x = 1000.0f-object->trans.x; - temp_r31->unkC.y = temp_r31->unk24.y-object->trans.y; - temp_r31->unkC.z = 0; - temp_r31->unk34.x = 1000; - temp_r31->unk34.y = 30; - temp_r31->unk34.z = 360.0f+((1.0f/255.0f)*frandu8()); - temp_r31->unk30 = VECMagPoint(temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z); - VECNormalize(&temp_r31->unkC, &temp_r31->unk0); - Hu3DModelShadowSet(object->model[0]); - object->work[3] = 2; - object->func = fn_2_9298; + Work8E74 *temp_r31; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work8E74), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + temp_r31->unk24.x = 6; + temp_r31->unk24.z = 90; + temp_r31->unk24.y = 100; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x0D)); + object->motion[0] = Hu3DJointMotionFile(object->model[0], DATA_MAKE_NUM(DATADIR_M401, 0x10)); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + omSetTra(object, -1000, 0, -23000); + omSetRot(object, 0, 90, 0); + temp_r31->unkC.x = 1000.0f - object->trans.x; + temp_r31->unkC.y = temp_r31->unk24.y - object->trans.y; + temp_r31->unkC.z = 0; + temp_r31->unk34.x = 1000; + temp_r31->unk34.y = 30; + temp_r31->unk34.z = 360.0f + ((1.0f / 255.0f) * frandu8()); + temp_r31->unk30 = VECMagPoint(temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z); + VECNormalize(&temp_r31->unkC, &temp_r31->unk0); + Hu3DModelShadowSet(object->model[0]); + object->work[3] = 2; + object->func = fn_2_9298; } void fn_2_91AC(omObjData *object, Vec *pos) { - Work8E74 *temp_r30; - temp_r30 = object->data; - temp_r30->unk18 = *pos; - temp_r30->unk34.z = (1.0f/255.0f)*(360.0f*frandu8()); - Hu3DModelAttrReset(object->model[0], 1); - omSetTra(object, pos->x, pos->y, pos->z); - object->work[2] = HuAudFXEmiterPlay(1284, &pos); - object->func = fn_2_9298; + Work8E74 *temp_r30; + temp_r30 = object->data; + temp_r30->unk18 = *pos; + temp_r30->unk34.z = (1.0f / 255.0f) * (360.0f * frandu8()); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + omSetTra(object, pos->x, pos->y, pos->z); + object->work[2] = HuAudFXEmiterPlay(1284, &pos); + object->func = fn_2_9298; } void fn_2_9298(omObjData *object) { - Work8E74 *temp_r31; - float temp_f29; - Vec spC; - temp_r31 = object->data; - object->trans.x = temp_r31->unk18.x+1000.0f*sind(temp_r31->unk34.z); - temp_f29 = (temp_r31->unk34.y/temp_r31->unk34.x)*sqrtf((temp_r31->unk34.x*temp_r31->unk34.x)-(object->trans.x*object->trans.x)); - if(temp_r31->unk34.z >= 90.0f && temp_r31->unk34.z <= 270.0f) { - temp_f29 = -temp_f29; - } - object->trans.z = temp_r31->unk18.z+temp_f29; - temp_r31->unk34.z += 0.6f+(0.6f*fabs(cosd(temp_r31->unk34.z))); - if(temp_r31->unk34.z >= 360.0f) { - temp_r31->unk34.z -= 360.0f; - } - omSetRot(object, 0, 90.0f+temp_r31->unk34.z , 0); - spC.x = object->trans.x; - spC.y = object->trans.y; - spC.z = object->trans.z; - HuAudFXEmiterUpDate(object->work[2], &spC); - if(object->trans.z > lbl_2_bss_6C.z-220.0f) { - Hu3DModelAttrSet(object->model[0], 1); - HuAudFXStop(object->work[2]); - object->func = NULL; - } + Work8E74 *temp_r31; + float temp_f29; + Vec spC; + temp_r31 = object->data; + object->trans.x = temp_r31->unk18.x + 1000.0f * sind(temp_r31->unk34.z); + temp_f29 = (temp_r31->unk34.y / temp_r31->unk34.x) * sqrtf((temp_r31->unk34.x * temp_r31->unk34.x) - (object->trans.x * object->trans.x)); + if (temp_r31->unk34.z >= 90.0f && temp_r31->unk34.z <= 270.0f) { + temp_f29 = -temp_f29; + } + object->trans.z = temp_r31->unk18.z + temp_f29; + temp_r31->unk34.z += 0.6f + (0.6f * fabs(cosd(temp_r31->unk34.z))); + if (temp_r31->unk34.z >= 360.0f) { + temp_r31->unk34.z -= 360.0f; + } + omSetRot(object, 0, 90.0f + temp_r31->unk34.z, 0); + spC.x = object->trans.x; + spC.y = object->trans.y; + spC.z = object->trans.z; + HuAudFXEmiterUpDate(object->work[2], &spC); + if (object->trans.z > lbl_2_bss_6C.z - 220.0f) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + HuAudFXStop(object->work[2]); + object->func = NULL; + } } void fn_2_979C(omObjData *object); void fn_2_95E4(omObjData *object) { - object->model[0] = Hu3DModelCreateFile(0x200018); - object->motion[0] = Hu3DJointMotionFile(object->model[0], 0x200019); - object->motion[1] = Hu3DJointMotionFile(object->model[0], 0x20001A); - omSetTra(object, 3000, 0, -37000); - omSetRot(object, 0, 270, 0); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x1); - Hu3DModelAttrSet(object->model[0], 0x40000001); - object->work[3] = 3; - Hu3DModelShadowSet(object->model[0]); - object->func = fn_2_979C; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x18)); + object->motion[0] = Hu3DJointMotionFile(object->model[0], DATA_MAKE_NUM(DATADIR_M401, 0x19)); + object->motion[1] = Hu3DJointMotionFile(object->model[0], DATA_MAKE_NUM(DATADIR_M401, 0x1A)); + omSetTra(object, 3000, 0, -37000); + omSetRot(object, 0, 270, 0); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->work[3] = 3; + Hu3DModelShadowSet(object->model[0]); + object->func = fn_2_979C; } void fn_2_9734(s32 flag) { - if(flag) { - Hu3DModelAttrReset(lbl_2_bss_FC->model[0], 1); - } else { - Hu3DModelAttrSet(lbl_2_bss_FC->model[0], 1); - } + if (flag) { + Hu3DModelAttrReset(lbl_2_bss_FC->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(lbl_2_bss_FC->model[0], HU3D_ATTR_DISPOFF); + } } void fn_2_988C(omObjData *object); void fn_2_979C(omObjData *object) { - if(lbl_2_bss_60.z < -19000.0f) { - fn_2_9734(1); - omSetTra(object, -2500, -800, -21000); - omSetRot(object, 0, 125, 0); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - object->func = fn_2_988C; - } + if (lbl_2_bss_60.z < -19000.0f) { + fn_2_9734(1); + omSetTra(object, -2500, -800, -21000); + omSetRot(object, 0, 125, 0); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->func = fn_2_988C; + } } void fn_2_99A4(omObjData *object); void fn_2_988C(omObjData *object) { - object->trans.x += 2.3f*(26.0*sind(object->rot.y)); - object->trans.z += 2.3f*(26.0*cosd(object->rot.y)); - if(object->trans.x > 6000.0f) { - fn_2_9734(0); - object->func = fn_2_99A4; - } + object->trans.x += 2.3f * (26.0 * sind(object->rot.y)); + object->trans.z += 2.3f * (26.0 * cosd(object->rot.y)); + if (object->trans.x > 6000.0f) { + fn_2_9734(0); + object->func = fn_2_99A4; + } } void fn_2_9B90(omObjData *object); void fn_2_99A4(omObjData *object) { - float temp_f31; - if(lbl_2_bss_60.z <= -36200.0f+((1.0f/255.0f)*(200.0f*frandu8()))) { - temp_f31 = -250.0f+((1.0f/255.0f)*(500.0f*frandu8())); - fn_2_9734(1); - omSetTra(object, 3000, temp_f31, -37000); - omSetRot(object, 0, 270, 0); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - object->func = fn_2_9B90; - lbl_2_bss_78.x = object->trans.x; - lbl_2_bss_78.y = object->trans.y; - lbl_2_bss_78.z = object->trans.z; - lbl_2_bss_8C = HuAudFXEmiterPlay(1286, &lbl_2_bss_78); - } + float temp_f31; + if (lbl_2_bss_60.z <= -36200.0f + ((1.0f / 255.0f) * (200.0f * frandu8()))) { + temp_f31 = -250.0f + ((1.0f / 255.0f) * (500.0f * frandu8())); + fn_2_9734(1); + omSetTra(object, 3000, temp_f31, -37000); + omSetRot(object, 0, 270, 0); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->func = fn_2_9B90; + lbl_2_bss_78.x = object->trans.x; + lbl_2_bss_78.y = object->trans.y; + lbl_2_bss_78.z = object->trans.z; + lbl_2_bss_8C = HuAudFXEmiterPlay(1286, &lbl_2_bss_78); + } } void fn_2_9B90(omObjData *object) { - object->trans.x += 2.3f*(17.0*sind(object->rot.y)); - object->trans.z += 2.3f*(17.0*cosd(object->rot.y)); - lbl_2_bss_78.x = object->trans.x; - lbl_2_bss_78.y = object->trans.y; - lbl_2_bss_78.z = object->trans.z; - HuAudFXEmiterUpDate(lbl_2_bss_8C, &lbl_2_bss_78); - if(object->trans.x <= -3000.0f) { - fn_2_9734(0); - object->func = NULL; - HuAudFXStop(lbl_2_bss_8C); - } + object->trans.x += 2.3f * (17.0 * sind(object->rot.y)); + object->trans.z += 2.3f * (17.0 * cosd(object->rot.y)); + lbl_2_bss_78.x = object->trans.x; + lbl_2_bss_78.y = object->trans.y; + lbl_2_bss_78.z = object->trans.z; + HuAudFXEmiterUpDate(lbl_2_bss_8C, &lbl_2_bss_78); + if (object->trans.x <= -3000.0f) { + fn_2_9734(0); + object->func = NULL; + HuAudFXStop(lbl_2_bss_8C); + } } typedef struct work_a318 { - Vec unk0; - s16 unkC; + Vec unk0; + s16 unkC; } WorkA318; -s32 lbl_2_data_42C[] = { - 0x20001C, - 0x20001D -}; +s32 lbl_2_data_42C[] = { DATA_MAKE_NUM(DATADIR_M401, 0x1C), DATA_MAKE_NUM(DATADIR_M401, 0x1D) }; void fn_2_9D00(Process *objman) { - omObjData *temp_r31; - s32 temp_r30; - s32 temp_r29; - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r31 = omAddObjEx(objman, 1130, 1, 2, -1, NULL); - lbl_2_bss_E4[temp_r29] = temp_r31; - temp_r31->model[0] = Hu3DModelCreateFile(0x20001B); - for(temp_r30=0; temp_r30<2; temp_r30++) { - temp_r31->motion[temp_r30] = Hu3DJointMotionFile(temp_r31->model[0], lbl_2_data_42C[temp_r30]); - } - Hu3DModelAttrSet(temp_r31->model[0], 1); - temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkA318), MEMORY_DEFAULT_NUM); - Hu3DModelShadowSet(temp_r31->model[0]); - temp_r31->work[3] = 1; - } + omObjData *temp_r31; + s32 temp_r30; + s32 temp_r29; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r31 = omAddObjEx(objman, 1130, 1, 2, -1, NULL); + lbl_2_bss_E4[temp_r29] = temp_r31; + temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x1B)); + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + temp_r31->motion[temp_r30] = Hu3DJointMotionFile(temp_r31->model[0], lbl_2_data_42C[temp_r30]); + } + Hu3DModelAttrSet(temp_r31->model[0], HU3D_ATTR_DISPOFF); + temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkA318), MEMORY_DEFAULT_NUM); + Hu3DModelShadowSet(temp_r31->model[0]); + temp_r31->work[3] = 1; + } } void fn_2_A318(omObjData *object); - void fn_2_9E28(float arg1, float arg2) { - s32 temp_r31; - WorkA318 *temp_r30; - float temp_f31; - float temp_f30; - float temp_f29; - temp_f30 = (arg2-arg1)/4; - temp_f31 = arg1; - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = lbl_2_bss_E4[temp_r31]->data; - Hu3DModelAttrReset(lbl_2_bss_E4[temp_r31]->model[0], 1); - temp_f29 = -400.0f+((1.0f/255.0f)*(800.0f*frandu8())); - temp_r30->unk0.x = -250.0f+((1.0f/255.0f)*(500.0f*frandu8())); - omSetTra(lbl_2_bss_E4[temp_r31], temp_f29, temp_r30->unk0.x+lbl_2_bss_60.y, temp_f31); - Hu3DMotionSet(lbl_2_bss_E4[temp_r31]->model[0], lbl_2_bss_E4[temp_r31]->motion[0]); - Hu3DModelAttrSet(lbl_2_bss_E4[temp_r31]->model[0], 0x40000001); - temp_f31 += temp_f30; - temp_r30->unkC = (frand()%30)+30; - temp_r30->unk0.z = 0; - lbl_2_bss_E4[temp_r31]->func = fn_2_A318; - } + s32 temp_r31; + WorkA318 *temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + temp_f30 = (arg2 - arg1) / 4; + temp_f31 = arg1; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = lbl_2_bss_E4[temp_r31]->data; + Hu3DModelAttrReset(lbl_2_bss_E4[temp_r31]->model[0], HU3D_ATTR_DISPOFF); + temp_f29 = -400.0f + ((1.0f / 255.0f) * (800.0f * frandu8())); + temp_r30->unk0.x = -250.0f + ((1.0f / 255.0f) * (500.0f * frandu8())); + omSetTra(lbl_2_bss_E4[temp_r31], temp_f29, temp_r30->unk0.x + lbl_2_bss_60.y, temp_f31); + Hu3DMotionSet(lbl_2_bss_E4[temp_r31]->model[0], lbl_2_bss_E4[temp_r31]->motion[0]); + Hu3DModelAttrSet(lbl_2_bss_E4[temp_r31]->model[0], HU3D_MOTATTR_LOOP); + temp_f31 += temp_f30; + temp_r30->unkC = (frand() % 30) + 30; + temp_r30->unk0.z = 0; + lbl_2_bss_E4[temp_r31]->func = fn_2_A318; + } } omObjData *fn_2_A0B0(omObjData *object) { - omObjData *temp_r31; - s32 temp_r30; - omObjData *temp_r29; - M401WorkPlayer *spC; - - float temp_f27; - float temp_f26; - temp_f26 = 999999; - for(temp_r30=0; temp_r30<4; temp_r30++) { - float temp_f31; - float temp_f30; - float temp_f29; - temp_r31 = lbl_2_bss_118[temp_r30]; - spC = temp_r31->data; - temp_f31 = temp_r31->trans.x - object->trans.x; - temp_f30 = temp_r31->trans.y - object->trans.y; - temp_f29 = 0.4f*(temp_r31->trans.z - object->trans.z); - temp_f27 = VECMagPoint(temp_f31, temp_f30, temp_f29); - if(temp_f27 < temp_f26) { - temp_r29 = lbl_2_bss_118[temp_r30]; - temp_f26 = temp_f27; - } - } - return temp_r29; + omObjData *temp_r31; + s32 temp_r30; + omObjData *temp_r29; + M401WorkPlayer *spC; + + float temp_f27; + float temp_f26; + temp_f26 = 999999; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + float temp_f31; + float temp_f30; + float temp_f29; + temp_r31 = lbl_2_bss_118[temp_r30]; + spC = temp_r31->data; + temp_f31 = temp_r31->trans.x - object->trans.x; + temp_f30 = temp_r31->trans.y - object->trans.y; + temp_f29 = 0.4f * (temp_r31->trans.z - object->trans.z); + temp_f27 = VECMagPoint(temp_f31, temp_f30, temp_f29); + if (temp_f27 < temp_f26) { + temp_r29 = lbl_2_bss_118[temp_r30]; + temp_f26 = temp_f27; + } + } + return temp_r29; } void fn_2_A318(omObjData *object) { - WorkA318 *temp_r30; - omObjData *temp_r28; - M401WorkPlayer *sp10; - temp_r30 = object->data; - if(0.0f == temp_r30->unk0.z) { - if(temp_r30->unkC == 0) { - temp_r28 = fn_2_A0B0(object); - sp10 = temp_r28->data; - temp_r30->unk0.y = atan2d(temp_r28->trans.y - object->trans.y, temp_r28->trans.x - object->trans.x); - temp_r30->unk0.z = 8.0f+((1.0f/255.0f)*((9.0f*frandu8()))); - Hu3DMotionSet(object->model[0], object->motion[1]); - Hu3DModelAttrReset(object->model[0], 0x40000001); - lbl_2_bss_78.x = object->trans.x; - lbl_2_bss_78.y = object->trans.y; - lbl_2_bss_78.z = object->trans.z; - HuAudFXEmiterPlay(1282, &lbl_2_bss_78); - } else { - temp_r30->unkC--; - temp_r30->unk0.x -= 2.5f; - } - } else { - temp_r30->unk0.x = temp_r30->unk0.x+(temp_r30->unk0.z*sind(temp_r30->unk0.y)); - object->trans.x += temp_r30->unk0.z*cosd(temp_r30->unk0.y); - temp_r30->unk0.z *= 0.94f; - if(temp_r30->unk0.z < 0.1f) { - temp_r30->unk0.z = 0; - temp_r30->unkC = (frand()%30)+25; - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - } - } - if(temp_r30->unk0.x < -300.0f) { - temp_r30->unk0.x = -300.0f; - } - if(temp_r30->unk0.x > 300.0f) { - temp_r30->unk0.x = 300.0f; - } - if(object->trans.x < -400.0f) { - object->trans.x = -400.0f; - } - if(object->trans.x > 400.0f) { - object->trans.x = 400.0f; - } - omSetTra(object, object->trans.x, temp_r30->unk0.x+lbl_2_bss_60.y, object->trans.z); - if(object->trans.z > lbl_2_bss_6C.z-160.0f) { - Hu3DModelAttrSet(object->model[0], 1); - object->func = NULL; - } + WorkA318 *temp_r30; + omObjData *temp_r28; + M401WorkPlayer *sp10; + temp_r30 = object->data; + if (0.0f == temp_r30->unk0.z) { + if (temp_r30->unkC == 0) { + temp_r28 = fn_2_A0B0(object); + sp10 = temp_r28->data; + temp_r30->unk0.y = atan2d(temp_r28->trans.y - object->trans.y, temp_r28->trans.x - object->trans.x); + temp_r30->unk0.z = 8.0f + ((1.0f / 255.0f) * ((9.0f * frandu8()))); + Hu3DMotionSet(object->model[0], object->motion[1]); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + lbl_2_bss_78.x = object->trans.x; + lbl_2_bss_78.y = object->trans.y; + lbl_2_bss_78.z = object->trans.z; + HuAudFXEmiterPlay(1282, &lbl_2_bss_78); + } + else { + temp_r30->unkC--; + temp_r30->unk0.x -= 2.5f; + } + } + else { + temp_r30->unk0.x = temp_r30->unk0.x + (temp_r30->unk0.z * sind(temp_r30->unk0.y)); + object->trans.x += temp_r30->unk0.z * cosd(temp_r30->unk0.y); + temp_r30->unk0.z *= 0.94f; + if (temp_r30->unk0.z < 0.1f) { + temp_r30->unk0.z = 0; + temp_r30->unkC = (frand() % 30) + 25; + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + } + } + if (temp_r30->unk0.x < -300.0f) { + temp_r30->unk0.x = -300.0f; + } + if (temp_r30->unk0.x > 300.0f) { + temp_r30->unk0.x = 300.0f; + } + if (object->trans.x < -400.0f) { + object->trans.x = -400.0f; + } + if (object->trans.x > 400.0f) { + object->trans.x = 400.0f; + } + omSetTra(object, object->trans.x, temp_r30->unk0.x + lbl_2_bss_60.y, object->trans.z); + if (object->trans.z > lbl_2_bss_6C.z - 160.0f) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = NULL; + } } void fn_2_A8A4(omObjData *object, float x, float y, float z) { - omSetTra(object, lbl_2_bss_60.x+x, lbl_2_bss_60.y+y, lbl_2_bss_60.z+z); + omSetTra(object, lbl_2_bss_60.x + x, lbl_2_bss_60.y + y, lbl_2_bss_60.z + z); } -s32 lbl_2_data_434[] = { - 0x12D, - 0x16D, - 0x1AD, - 0x1ED, - 0x22D, - 0x26D, - 0x2AD, - 0x2ED -}; +s32 lbl_2_data_434[] = { 0x12D, 0x16D, 0x1AD, 0x1ED, 0x22D, 0x26D, 0x2AD, 0x2ED }; void fn_2_A914(s32 player) { - HuAudPlayerVoicePlay(player, 301); + HuAudPlayerVoicePlay(player, 301); } void fn_2_A940(omObjData *object) { - Vec spC; - omObjData *sp8; - M401WorkPlayer *temp_r28; - s32 temp_r23; - temp_r28 = object->data; - if(temp_r28->unk78 != 0) { - return; - } - spC.x = object->trans.x; - spC.y = object->trans.y; - spC.z = object->trans.z; - if((temp_r23 = fn_2_AC2C(&spC, 90, &sp8)) != 0) { - if(temp_r23 == 1) { - omVibrate(temp_r28->unk4, 12, 4, 2); - } else if(temp_r23 == 3) { - omVibrate(temp_r28->unk4, 12, 4, 2); - } else { - omVibrate(temp_r28->unk4, 12, 12, 0); - } - fn_2_7C3C(object); - fn_2_1858(temp_r28->unk4, sp8->work[3]); - } - + Vec spC; + omObjData *sp8; + M401WorkPlayer *temp_r28; + s32 temp_r23; + temp_r28 = object->data; + if (temp_r28->unk78 != 0) { + return; + } + spC.x = object->trans.x; + spC.y = object->trans.y; + spC.z = object->trans.z; + if ((temp_r23 = fn_2_AC2C(&spC, 90, &sp8)) != 0) { + if (temp_r23 == 1) { + omVibrate(temp_r28->unk4, 12, 4, 2); + } + else if (temp_r23 == 3) { + omVibrate(temp_r28->unk4, 12, 4, 2); + } + else { + omVibrate(temp_r28->unk4, 12, 12, 0); + } + fn_2_7C3C(object); + fn_2_1858(temp_r28->unk4, sp8->work[3]); + } } s32 fn_2_AC2C(Vec *pos, float dist, omObjData **newobj) { - omObjData *temp_r30; - s32 temp_r29; - float temp_f20; - float temp_f19; - float temp_f18; - WorkA318 *sp70; - float sp6C; - - *newobj = NULL; - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r30 = lbl_2_bss_E4[temp_r29]; - if(temp_r30->func != NULL) { - sp70 = temp_r30->data; - temp_f20 = VECMagPoint(pos->x-temp_r30->trans.x, pos->y-temp_r30->trans.y, pos->z-temp_r30->trans.z); - if(temp_f20 < sqrtf(1024.0f+(dist*dist))) { - *newobj = temp_r30; - return 1; - } - } - } - temp_r30 = lbl_2_bss_FC; - temp_f20 = VECDistanceZY(pos, &temp_r30->trans); - if(temp_f20 < sqrtf(6400.0f+(dist*dist)) - && temp_r30->trans.x < pos->x-(dist/2.0f) - && 1500.0f+temp_r30->trans.x > pos->x+(dist/2.0f)) { - *newobj = temp_r30; - return 2; - } - for(temp_r29=0; temp_r29<2; temp_r29++) { - if(lbl_2_bss_100[temp_r29]->func != NULL) { - temp_f19 = lbl_2_bss_100[temp_r29]->trans.x+(70.0*sind(lbl_2_bss_100[temp_r29]->rot.y)); - temp_f18 = lbl_2_bss_100[temp_r29]->trans.z+(70.0*cosd(lbl_2_bss_100[temp_r29]->rot.y)); - sp6C = lbl_2_bss_100[temp_r29]->trans.y-10.0f; - temp_f20 = VECMagPoint(pos->x-temp_f19, pos->y-sp6C, pos->z-temp_f18); - if(temp_f20 < sqrtf(4900.0f+(dist*dist))) { - *newobj = lbl_2_bss_100[temp_r29]; - return 3; - } - temp_f19 = lbl_2_bss_100[temp_r29]->trans.x; - temp_f18 = lbl_2_bss_100[temp_r29]->trans.z; - sp6C = lbl_2_bss_100[temp_r29]->trans.y-10.0f; - temp_f20 = VECMagPoint(pos->x-temp_f19, pos->y-sp6C, pos->z-temp_f18); - if(temp_f20 < sqrtf(4900.0f+(dist*dist))) { - *newobj = lbl_2_bss_100[temp_r29]; - return 3; - } - temp_f19 = lbl_2_bss_100[temp_r29]->trans.x+(70.0*sind(lbl_2_bss_100[temp_r29]->rot.y+180.0f)); - temp_f18 = lbl_2_bss_100[temp_r29]->trans.z+(70.0*cosd(lbl_2_bss_100[temp_r29]->rot.y+180.0f)); - sp6C = lbl_2_bss_100[temp_r29]->trans.y-10.0f; - temp_f20 = VECMagPoint(pos->x-temp_f19, pos->y-sp6C, pos->z-temp_f18); - if(temp_f20 < sqrtf(4410.0f+(dist*dist))) { - *newobj = lbl_2_bss_100[temp_r29]; - return 3; - } - } - } - return 0; + omObjData *temp_r30; + s32 temp_r29; + float temp_f20; + float temp_f19; + float temp_f18; + WorkA318 *sp70; + float sp6C; + + *newobj = NULL; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r30 = lbl_2_bss_E4[temp_r29]; + if (temp_r30->func != NULL) { + sp70 = temp_r30->data; + temp_f20 = VECMagPoint(pos->x - temp_r30->trans.x, pos->y - temp_r30->trans.y, pos->z - temp_r30->trans.z); + if (temp_f20 < sqrtf(1024.0f + (dist * dist))) { + *newobj = temp_r30; + return 1; + } + } + } + temp_r30 = lbl_2_bss_FC; + temp_f20 = VECDistanceZY(pos, &temp_r30->trans); + if (temp_f20 < sqrtf(6400.0f + (dist * dist)) && temp_r30->trans.x < pos->x - (dist / 2.0f) + && 1500.0f + temp_r30->trans.x > pos->x + (dist / 2.0f)) { + *newobj = temp_r30; + return 2; + } + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + if (lbl_2_bss_100[temp_r29]->func != NULL) { + temp_f19 = lbl_2_bss_100[temp_r29]->trans.x + (70.0 * sind(lbl_2_bss_100[temp_r29]->rot.y)); + temp_f18 = lbl_2_bss_100[temp_r29]->trans.z + (70.0 * cosd(lbl_2_bss_100[temp_r29]->rot.y)); + sp6C = lbl_2_bss_100[temp_r29]->trans.y - 10.0f; + temp_f20 = VECMagPoint(pos->x - temp_f19, pos->y - sp6C, pos->z - temp_f18); + if (temp_f20 < sqrtf(4900.0f + (dist * dist))) { + *newobj = lbl_2_bss_100[temp_r29]; + return 3; + } + temp_f19 = lbl_2_bss_100[temp_r29]->trans.x; + temp_f18 = lbl_2_bss_100[temp_r29]->trans.z; + sp6C = lbl_2_bss_100[temp_r29]->trans.y - 10.0f; + temp_f20 = VECMagPoint(pos->x - temp_f19, pos->y - sp6C, pos->z - temp_f18); + if (temp_f20 < sqrtf(4900.0f + (dist * dist))) { + *newobj = lbl_2_bss_100[temp_r29]; + return 3; + } + temp_f19 = lbl_2_bss_100[temp_r29]->trans.x + (70.0 * sind(lbl_2_bss_100[temp_r29]->rot.y + 180.0f)); + temp_f18 = lbl_2_bss_100[temp_r29]->trans.z + (70.0 * cosd(lbl_2_bss_100[temp_r29]->rot.y + 180.0f)); + sp6C = lbl_2_bss_100[temp_r29]->trans.y - 10.0f; + temp_f20 = VECMagPoint(pos->x - temp_f19, pos->y - sp6C, pos->z - temp_f18); + if (temp_f20 < sqrtf(4410.0f + (dist * dist))) { + *newobj = lbl_2_bss_100[temp_r29]; + return 3; + } + } + } + return 0; } void fn_2_D8CC(omObjData *object); void fn_2_BD90(omObjData *object) { - s32 temp_r27; - M401WorkPlayer *temp_r26; - switch(object->work[0]) { - case 0: - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);; - object->work[0] = 1; - break; - - case 1: - if(!WipeStatGet()) { - object->work[0] = 2; - object->work[1] = 180; - } - break; - - case 2: - if(object->work[1] == 0) { - lbl_2_bss_C0 = MGSeqStartCreate(); - object->work[0] = 3; - lbl_2_bss_A4 = HuAudSeqPlay(68); - } else { - object->work[1]--; - } - break; - - case 3: - if(!MGSeqStatGet(lbl_2_bss_C0)) { - fn_2_AEC(1); - lbl_2_bss_120 = 1; - fn_2_1A38(lbl_2_bss_10C); - - lbl_2_bss_10C->func = fn_2_34B8; - for(temp_r27=0; temp_r27<4; temp_r27++) { - temp_r26 = lbl_2_bss_118[temp_r27]->data; - temp_r26->unk58.z = 0; - temp_r26->unkC.z = 800; - lbl_2_bss_118[temp_r27]->func = fn_2_5CC0; - object->trans.x = object->trans.y = object->trans.z = 0; - } - lbl_2_bss_108->func = fn_2_8868; - omDelObjEx(HuPrcCurrentGet(), object); - lbl_2_bss_114 = NULL; - lbl_2_bss_4->func = fn_2_D8CC; - } - - break; - } + s32 temp_r27; + M401WorkPlayer *temp_r26; + switch (object->work[0]) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + ; + object->work[0] = 1; + break; + + case 1: + if (!WipeStatGet()) { + object->work[0] = 2; + object->work[1] = 180; + } + break; + + case 2: + if (object->work[1] == 0) { + lbl_2_bss_C0 = MGSeqStartCreate(); + object->work[0] = 3; + lbl_2_bss_A4 = HuAudSeqPlay(68); + } + else { + object->work[1]--; + } + break; + + case 3: + if (!MGSeqStatGet(lbl_2_bss_C0)) { + fn_2_AEC(1); + lbl_2_bss_120 = 1; + fn_2_1A38(lbl_2_bss_10C); + + lbl_2_bss_10C->func = fn_2_34B8; + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + temp_r26 = lbl_2_bss_118[temp_r27]->data; + temp_r26->unk58.z = 0; + temp_r26->unkC.z = 800; + lbl_2_bss_118[temp_r27]->func = fn_2_5CC0; + object->trans.x = object->trans.y = object->trans.z = 0; + } + lbl_2_bss_108->func = fn_2_8868; + omDelObjEx(HuPrcCurrentGet(), object); + lbl_2_bss_114 = NULL; + lbl_2_bss_4->func = fn_2_D8CC; + } + + break; + } } void fn_2_C130(omObjData *object) { - M401WorkPlayer *temp_r31; - s32 temp_r30; - LightData *temp_r28; - Vec sp14; - Vec sp8; - switch(object->work[0]) { - case 0: - if(!MGSeqStatGet(lbl_2_bss_C0)) { - object->work[0] = 1; - HuAudFXStop(lbl_2_bss_11C); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - WipeColorSet(255, 255, 255); - } - break; - - case 1: - if(WipeStatGet()) { - return; - } - Hu3DFogClear(); - temp_r28 = &Hu3DGlobalLight[0]; - temp_r28->color.r = 255; - temp_r28->color.g = 255; - temp_r28->color.b = 255; - sp14.x = 0; - sp14.y = 2500; - sp14.z = 1000; - sp8.x = 0; - sp8.y = 1030; - sp8.z = 0; - Hu3DGLightPosAimSetV(lbl_2_bss_A8, &sp14, &sp8); - lbl_2_data_30.x = 0; - lbl_2_data_30.y = 2500; - lbl_2_data_30.z = 1000; - lbl_2_data_48.x = 0; - lbl_2_data_48.y = 1030; - lbl_2_data_48.z = 0; - Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); - HuAudAUXVolSet(-1, -1); - fn_2_2ED0(lbl_2_bss_10C); - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r31 = lbl_2_bss_118[temp_r30]->data; - temp_r31->unk50->work[0] = 1; - temp_r31->unk6C = 0; - CharModelMotionSet(((M401WorkPlayer *)(lbl_2_bss_118[temp_r30]->data))->unk86, lbl_2_bss_118[temp_r30]->motion[4]); - Hu3DModelAttrReset(lbl_2_bss_118[temp_r30]->model[0], 0x40000001); - lbl_2_bss_118[temp_r30]->func = fn_2_48A0; - Hu3DModelAmbSet(lbl_2_bss_118[temp_r30]->model[0], 0.7f, 0.7f, 0.7f); - omSetTra(lbl_2_bss_118[temp_r30], -225.0f+(temp_r30*150), 740, 400); - omSetRot(lbl_2_bss_118[temp_r30], 0, 0, 0); - if(temp_r31->unk68) { - if(lbl_2_bss_BA == 1) { - temp_r31->unk0 = 10; - temp_r31->unk58.x = 13; - } else { - temp_r31->unk58.x = 10; - temp_r31->unk0 = 6; - } - OSReport("GetCoin:%d\n", temp_r30); - GWPlayerCoinWinSet(temp_r30, 10); - } else { - temp_r31->unk58.x = 10; - temp_r31->unk0 = 6; - } - } - fn_2_26E0(lbl_2_bss_10C); - object->work[0] = 2; - lbl_2_bss_F4->work[0] = 1; - fn_2_141B0(); - lbl_2_bss_10C->func = fn_2_3838; - lbl_2_bss_11C = HuAudFXPlay(1280); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - omDelObjEx(HuPrcCurrentGet(), lbl_2_bss_C8); - break; - - case 2: - WipeStatGet() == 0; - break; - } + M401WorkPlayer *temp_r31; + s32 temp_r30; + LightData *temp_r28; + Vec sp14; + Vec sp8; + switch (object->work[0]) { + case 0: + if (!MGSeqStatGet(lbl_2_bss_C0)) { + object->work[0] = 1; + #if VERSION_NTSC + HuAudFXStop(lbl_2_bss_11C); + #else + HuAudFXFadeOut(lbl_2_bss_11C, 500); + #endif + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + WipeColorSet(255, 255, 255); + } + break; + + case 1: + if (WipeStatGet()) { + return; + } + Hu3DFogClear(); + temp_r28 = &Hu3DGlobalLight[0]; + temp_r28->color.r = 255; + temp_r28->color.g = 255; + temp_r28->color.b = 255; + sp14.x = 0; + sp14.y = 2500; + sp14.z = 1000; + sp8.x = 0; + sp8.y = 1030; + sp8.z = 0; + Hu3DGLightPosAimSetV(lbl_2_bss_A8, &sp14, &sp8); + lbl_2_data_30.x = 0; + lbl_2_data_30.y = 2500; + lbl_2_data_30.z = 1000; + lbl_2_data_48.x = 0; + lbl_2_data_48.y = 1030; + lbl_2_data_48.z = 0; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + HuAudAUXVolSet(-1, -1); + fn_2_2ED0(lbl_2_bss_10C); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r31 = lbl_2_bss_118[temp_r30]->data; + temp_r31->unk50->work[0] = 1; + temp_r31->unk6C = 0; + CharModelMotionSet(((M401WorkPlayer *)(lbl_2_bss_118[temp_r30]->data))->unk86, lbl_2_bss_118[temp_r30]->motion[4]); + Hu3DModelAttrReset(lbl_2_bss_118[temp_r30]->model[0], HU3D_MOTATTR_LOOP); + lbl_2_bss_118[temp_r30]->func = fn_2_48A0; + Hu3DModelAmbSet(lbl_2_bss_118[temp_r30]->model[0], 0.7f, 0.7f, 0.7f); + omSetTra(lbl_2_bss_118[temp_r30], -225.0f + (temp_r30 * 150), 740, 400); + omSetRot(lbl_2_bss_118[temp_r30], 0, 0, 0); + if (temp_r31->unk68) { + if (lbl_2_bss_BA == 1) { + temp_r31->unk0 = 10; + temp_r31->unk58.x = 13; + } + else { + temp_r31->unk58.x = 10; + temp_r31->unk0 = 6; + } + OSReport("GetCoin:%d\n", temp_r30); + GWPlayerCoinWinSet(temp_r30, 10); + } + else { + temp_r31->unk58.x = 10; + temp_r31->unk0 = 6; + } + } + fn_2_26E0(lbl_2_bss_10C); + object->work[0] = 2; + lbl_2_bss_F4->work[0] = 1; + fn_2_141B0(); + lbl_2_bss_10C->func = fn_2_3838; + lbl_2_bss_11C = HuAudFXPlay(1280); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + omDelObjEx(HuPrcCurrentGet(), lbl_2_bss_C8); + break; + + case 2: + WipeStatGet() == 0; + break; + } } typedef struct work_c840 { - Vec unk0[9]; - float unk6C[9]; + Vec unk0[9]; + float unk6C[9]; } WorkC840; void fn_2_C840(s16 arg0); @@ -2835,665 +2858,676 @@ void fn_2_CAB0(omObjData *object); void fn_2_C6DC(omObjData *object) { - s32 temp_r30; - float temp_f31; - WorkC840 *sp8; - sp8 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkC840), MEMORY_DEFAULT_NUM); - for(temp_r30=0; temp_r30<9; temp_r30++) { - if(temp_r30 == 0) { - object->model[temp_r30] = Hu3DModelCreateFile(0x200002); - } else { - object->model[temp_r30] = Hu3DModelCreateFile(0x200002); - } - Hu3DModelLayerSet(object->model[temp_r30], 1); - fn_2_C840(temp_r30); - temp_f31 = (1.0f/255.0f)*(Hu3DMotionMaxTimeGet(object->model[temp_r30])*frandu8()); - Hu3DMotionTimeSet(object->model[temp_r30], temp_f31); - } - omSetStatBit(object, 0x100); - object->func = fn_2_CAB0; + s32 temp_r30; + float temp_f31; + WorkC840 *sp8; + sp8 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkC840), MEMORY_DEFAULT_NUM); + for (temp_r30 = 0; temp_r30 < 9; temp_r30++) { + if (temp_r30 == 0) { + object->model[temp_r30] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x02)); + } + else { + object->model[temp_r30] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x02)); + } + Hu3DModelLayerSet(object->model[temp_r30], 1); + fn_2_C840(temp_r30); + temp_f31 = (1.0f / 255.0f) * (Hu3DMotionMaxTimeGet(object->model[temp_r30]) * frandu8()); + Hu3DMotionTimeSet(object->model[temp_r30], temp_f31); + } + omSetStatBit(object, 0x100); + object->func = fn_2_CAB0; } void fn_2_C840(s16 arg0) { - WorkC840 *temp_r31; - float temp_f31, temp_f30; - temp_r31 = lbl_2_bss_F8->data; - temp_f30 = (1.0f/255.0f)*(360.0f*frandu8()); - temp_f31 = (1.0f/255.0f)*(200.0f*frandu8()); - temp_r31->unk0[arg0].x = temp_f31*cosd(temp_f30); - temp_r31->unk0[arg0].z = temp_f31*sind(temp_f30); - temp_r31->unk0[arg0].y = 1000; - temp_r31->unk6C[arg0] = 1.0f; - temp_f31 *= 0.25f; - Hu3DModelRotSet(lbl_2_bss_F8->model[arg0], temp_f31*sind(temp_f30), 0, temp_f31*cosd(temp_f30)); - Hu3DMotionTimeSet(lbl_2_bss_F8->model[arg0], 0); + WorkC840 *temp_r31; + float temp_f31, temp_f30; + temp_r31 = lbl_2_bss_F8->data; + temp_f30 = (1.0f / 255.0f) * (360.0f * frandu8()); + temp_f31 = (1.0f / 255.0f) * (200.0f * frandu8()); + temp_r31->unk0[arg0].x = temp_f31 * cosd(temp_f30); + temp_r31->unk0[arg0].z = temp_f31 * sind(temp_f30); + temp_r31->unk0[arg0].y = 1000; + temp_r31->unk6C[arg0] = 1.0f; + temp_f31 *= 0.25f; + Hu3DModelRotSet(lbl_2_bss_F8->model[arg0], temp_f31 * sind(temp_f30), 0, temp_f31 * cosd(temp_f30)); + Hu3DMotionTimeSet(lbl_2_bss_F8->model[arg0], 0); } void fn_2_CAB0(omObjData *object) { - s32 temp_r31; - WorkC840 *temp_r29; - u8 temp_r28; - float temp_f29; - temp_r29 = object->data; - for(temp_r31=0; temp_r31<9; temp_r31++) { - Hu3DModelPosSet(object->model[temp_r31], temp_r29->unk0[temp_r31].x, temp_r29->unk0[temp_r31].y, lbl_2_bss_38.z+temp_r29->unk0[temp_r31].z-500); - Hu3DModelTPLvlSet(object->model[temp_r31], temp_r29->unk6C[temp_r31]); - temp_f29 = Hu3DMotionTimeGet(object->model[temp_r31])/Hu3DMotionMaxTimeGet(object->model[temp_r31]); - temp_r29->unk6C[temp_r31] = 1.0f-temp_f29; - if(Hu3DMotionTimeGet(object->model[temp_r31]) >= Hu3DMotionMaxTimeGet(object->model[temp_r31])) { - fn_2_C840(temp_r31); - } - } - if(lbl_2_bss_60.z <= -26800.0f && lbl_2_bss_60.z >= -27400.0f) { - temp_r28 = 255.0f-(223.0f*(-(lbl_2_bss_60.z+26800.0f) / 600.0f)); - if(temp_r28 < 32) { - temp_r28 = 32; - } - } else if(lbl_2_bss_60.z <= -27700.0f && lbl_2_bss_60.z >= -28300.0f) { - temp_r28 = 32.0f+(223.0f*(-(lbl_2_bss_60.z+27700.0f) / 600.0f)); - } else if(lbl_2_bss_60.z < -27400.0f && lbl_2_bss_60.z > -28300.0f) { - temp_r28 = 32; - } else { - temp_r28 = 255; - } - Hu3DGLightColorSet(lbl_2_bss_A8, temp_r28, temp_r28, temp_r28, 255); - if(lbl_2_bss_60.z < -26600.0f && lbl_2_bss_60.z > -27500.0f) { - for(temp_r31=0; temp_r31<9; temp_r31++) { - Hu3DModelAttrSet(object->model[temp_r31], 1); - } - } else { - for(temp_r31=0; temp_r31<9; temp_r31++) { - Hu3DModelAttrReset(object->model[temp_r31], 1); - } - } + s32 temp_r31; + WorkC840 *temp_r29; + u8 temp_r28; + float temp_f29; + temp_r29 = object->data; + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + Hu3DModelPosSet( + object->model[temp_r31], temp_r29->unk0[temp_r31].x, temp_r29->unk0[temp_r31].y, lbl_2_bss_38.z + temp_r29->unk0[temp_r31].z - 500); + Hu3DModelTPLvlSet(object->model[temp_r31], temp_r29->unk6C[temp_r31]); + temp_f29 = Hu3DMotionTimeGet(object->model[temp_r31]) / Hu3DMotionMaxTimeGet(object->model[temp_r31]); + temp_r29->unk6C[temp_r31] = 1.0f - temp_f29; + if (Hu3DMotionTimeGet(object->model[temp_r31]) >= Hu3DMotionMaxTimeGet(object->model[temp_r31])) { + fn_2_C840(temp_r31); + } + } + if (lbl_2_bss_60.z <= -26800.0f && lbl_2_bss_60.z >= -27400.0f) { + temp_r28 = 255.0f - (223.0f * (-(lbl_2_bss_60.z + 26800.0f) / 600.0f)); + if (temp_r28 < 32) { + temp_r28 = 32; + } + } + else if (lbl_2_bss_60.z <= -27700.0f && lbl_2_bss_60.z >= -28300.0f) { + temp_r28 = 32.0f + (223.0f * (-(lbl_2_bss_60.z + 27700.0f) / 600.0f)); + } + else if (lbl_2_bss_60.z < -27400.0f && lbl_2_bss_60.z > -28300.0f) { + temp_r28 = 32; + } + else { + temp_r28 = 255; + } + Hu3DGLightColorSet(lbl_2_bss_A8, temp_r28, temp_r28, temp_r28, 255); + if (lbl_2_bss_60.z < -26600.0f && lbl_2_bss_60.z > -27500.0f) { + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + Hu3DModelAttrSet(object->model[temp_r31], HU3D_ATTR_DISPOFF); + } + } + else { + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + Hu3DModelAttrReset(object->model[temp_r31], HU3D_ATTR_DISPOFF); + } + } } void fn_2_D088(omObjData *object) { - CameraData *temp_r31 = &Hu3DCamera[0]; - Vec sp8; - - lbl_2_bss_6C = temp_r31->pos; - lbl_2_bss_60 = temp_r31->target; - VECSubtract(&lbl_2_bss_6C, &lbl_2_bss_54, &sp8); - lbl_2_bss_50 = VECMag(&sp8); - lbl_2_bss_54 = lbl_2_bss_6C; - - fn_2_A98(); + CameraData *temp_r31 = &Hu3DCamera[0]; + Vec sp8; + + lbl_2_bss_6C = temp_r31->pos; + lbl_2_bss_60 = temp_r31->target; + VECSubtract(&lbl_2_bss_6C, &lbl_2_bss_54, &sp8); + lbl_2_bss_50 = VECMag(&sp8); + lbl_2_bss_54 = lbl_2_bss_6C; + + fn_2_A98(); } void fn_2_D180(float arg0) { - Vec sp14; - Vec sp8; - lbl_2_bss_44.x = 0; - lbl_2_bss_44.y = 0; - lbl_2_bss_44.z = arg0; - lbl_2_bss_38.x = 0; - lbl_2_bss_38.y = 0; - lbl_2_bss_38.z = -1500+arg0; - lbl_2_bss_2C.x = 0; - lbl_2_bss_2C.y = 1; - lbl_2_bss_2C.z = 0; - Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); - Hu3DModelPosSet(lbl_2_bss_10C->model[1], 0, 0, -1500+arg0); - lbl_2_data_30.y = 3500+lbl_2_bss_38.y; - lbl_2_data_30.z = 1500+lbl_2_bss_38.z; - lbl_2_data_48.y = lbl_2_bss_38.y-200; - lbl_2_data_48.z = 500+lbl_2_bss_38.z; - Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); - sp14 = lbl_2_bss_44; - VECSubtract(&lbl_2_bss_38, &sp14, &sp8); - VECNormalize(&sp8, &sp8); - HuAudFXListnerUpdate(&sp14, &sp8); + Vec sp14; + Vec sp8; + lbl_2_bss_44.x = 0; + lbl_2_bss_44.y = 0; + lbl_2_bss_44.z = arg0; + lbl_2_bss_38.x = 0; + lbl_2_bss_38.y = 0; + lbl_2_bss_38.z = -1500 + arg0; + lbl_2_bss_2C.x = 0; + lbl_2_bss_2C.y = 1; + lbl_2_bss_2C.z = 0; + Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); + Hu3DModelPosSet(lbl_2_bss_10C->model[1], 0, 0, -1500 + arg0); + lbl_2_data_30.y = 3500 + lbl_2_bss_38.y; + lbl_2_data_30.z = 1500 + lbl_2_bss_38.z; + lbl_2_data_48.y = lbl_2_bss_38.y - 200; + lbl_2_data_48.z = 500 + lbl_2_bss_38.z; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + sp14 = lbl_2_bss_44; + VECSubtract(&lbl_2_bss_38, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); } void fn_2_D3E8(omObjData *object) { - Vec sp14; - Vec sp8; - float temp_f31 = 1.5f*object->scale.x; - lbl_2_bss_44.x = object->trans.x+(-object->trans.x*sind(temp_f31)); - lbl_2_bss_44.y = object->trans.y+(-object->trans.y*sind(temp_f31)); - lbl_2_bss_44.z = object->trans.z+(-object->trans.z*sind(temp_f31)); - lbl_2_bss_38.x = object->rot.x+(-object->rot.x*sind(temp_f31)); - lbl_2_bss_38.y = object->rot.y+(-object->rot.y*sind(temp_f31)); - lbl_2_bss_38.z = object->rot.z+((-1500.0f-object->rot.z)*sind(temp_f31)); - lbl_2_bss_2C.x = 0; - lbl_2_bss_2C.y = 1; - lbl_2_bss_2C.z = 0; - object->scale.x += 1.0f; - if(object->scale.x > 60.0f) { - lbl_2_bss_44.x = 0; - lbl_2_bss_44.y = 0; - lbl_2_bss_44.z = 0; - lbl_2_bss_38.x = 0; - lbl_2_bss_38.y = 0; - lbl_2_bss_38.z = -1500; - } - Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); - lbl_2_bss_54 = lbl_2_bss_44; - lbl_2_data_30.y = 3500+lbl_2_bss_38.y; - lbl_2_data_30.z = 1500+lbl_2_bss_38.z; - lbl_2_data_48.y = lbl_2_bss_38.y-200; - lbl_2_data_48.z = 500+lbl_2_bss_38.z; - Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); - sp14 = lbl_2_bss_44; - VECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp8); - VECNormalize(&sp8, &sp8); - HuAudFXListnerUpdate(&sp14, &sp8); - if(object->scale.x > 60.0f) { - lbl_2_bss_128 = 100; - Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); - object->scale.x = 0; - object->func = NULL; - } + Vec sp14; + Vec sp8; + float temp_f31 = 1.5f * object->scale.x; + lbl_2_bss_44.x = object->trans.x + (-object->trans.x * sind(temp_f31)); + lbl_2_bss_44.y = object->trans.y + (-object->trans.y * sind(temp_f31)); + lbl_2_bss_44.z = object->trans.z + (-object->trans.z * sind(temp_f31)); + lbl_2_bss_38.x = object->rot.x + (-object->rot.x * sind(temp_f31)); + lbl_2_bss_38.y = object->rot.y + (-object->rot.y * sind(temp_f31)); + lbl_2_bss_38.z = object->rot.z + ((-1500.0f - object->rot.z) * sind(temp_f31)); + lbl_2_bss_2C.x = 0; + lbl_2_bss_2C.y = 1; + lbl_2_bss_2C.z = 0; + object->scale.x += 1.0f; + if (object->scale.x > 60.0f) { + lbl_2_bss_44.x = 0; + lbl_2_bss_44.y = 0; + lbl_2_bss_44.z = 0; + lbl_2_bss_38.x = 0; + lbl_2_bss_38.y = 0; + lbl_2_bss_38.z = -1500; + } + Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); + lbl_2_bss_54 = lbl_2_bss_44; + lbl_2_data_30.y = 3500 + lbl_2_bss_38.y; + lbl_2_data_30.z = 1500 + lbl_2_bss_38.z; + lbl_2_data_48.y = lbl_2_bss_38.y - 200; + lbl_2_data_48.z = 500 + lbl_2_bss_38.z; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + sp14 = lbl_2_bss_44; + VECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); + if (object->scale.x > 60.0f) { + lbl_2_bss_128 = 100; + Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); + object->scale.x = 0; + object->func = NULL; + } } void fn_2_D8CC(omObjData *object) { - if(lbl_2_bss_BE != 0) { - return; - } - lbl_2_data_0 *= 1.05f; - if(lbl_2_data_0 < -14.375f) { - lbl_2_data_0 = -14.375f; - } - object->scale.x += lbl_2_data_0; - fn_2_D180(object->scale.x); + if (lbl_2_bss_BE != 0) { + return; + } + lbl_2_data_0 *= 1.05f; + if (lbl_2_data_0 < -14.375f) { + lbl_2_data_0 = -14.375f; + } + object->scale.x += lbl_2_data_0; + fn_2_D180(object->scale.x); } -s32 lbl_2_data_460[] = { - 0x200004, - 0x200005, - 0x200006 -}; +s32 lbl_2_data_460[] = { DATA_MAKE_NUM(DATADIR_M401, 0x04), DATA_MAKE_NUM(DATADIR_M401, 0x05), DATA_MAKE_NUM(DATADIR_M401, 0x06) }; typedef struct work_e6e8 { - s16 unk0; - Vec unk4; - float unk10; - float unk14; - float unk18; - float unk1C; - float unk20; - float unk24; - float unk28; - float unk2C; - s8 *unk30; - Vec *unk34; - Vec *unk38; - Vec *unk3C; - Vec *unk40; - Vec *unk44; - Vec *unk48; - Vec *unk4C; - s16 *unk50; - s16 *unk54; - float *unk58; - float *unk5C; - float *unk60; - float *unk64; - float *unk68; + s16 unk0; + Vec unk4; + float unk10; + float unk14; + float unk18; + float unk1C; + float unk20; + float unk24; + float unk28; + float unk2C; + s8 *unk30; + Vec *unk34; + Vec *unk38; + Vec *unk3C; + Vec *unk40; + Vec *unk44; + Vec *unk48; + Vec *unk4C; + s16 *unk50; + s16 *unk54; + float *unk58; + float *unk5C; + float *unk60; + float *unk64; + float *unk68; } WorkE6E8; void fn_2_DBCC(s16 arg0) { - omObjData *temp_r31; - s32 temp_r30; - s8 *temp_r28; - float temp_f31; - temp_r31 = lbl_2_bss_C4 = omAddObjEx(lbl_2_bss_1C, 1145, arg0, 0, -1, NULL); - omSetStatBit(temp_r31, 0x100); - temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s8), MEMORY_DEFAULT_NUM); - temp_r28 = temp_r31->data; - temp_r31->work[0] = arg0; - for(temp_r30=0; temp_r30model[temp_r30] = Hu3DModelCreateFile(lbl_2_data_460[temp_r30]); - } else { - temp_r31->model[temp_r30] = Hu3DModelLink(temp_r31->model[temp_r30%3]); - } - temp_f31 = 0.5f+((1.0f/255.0f)*(0.5f*frandu8())); - Hu3DModelScaleSet(temp_r31->model[temp_r30], temp_f31, temp_f31, temp_f31); - Hu3DModelAttrSet(temp_r31->model[temp_r30], 1); - Hu3DModelAttrSet(temp_r31->model[temp_r30], 0x40000001); - Hu3DMotionTimeSet(temp_r31->model[temp_r30], (1.0f/255.0f)*(Hu3DMotionMaxTimeGet(temp_r31->model[temp_r30])*frandu8())); - temp_r28[temp_r30] = 0; - } + omObjData *temp_r31; + s32 temp_r30; + s8 *temp_r28; + float temp_f31; + temp_r31 = lbl_2_bss_C4 = omAddObjEx(lbl_2_bss_1C, 1145, arg0, 0, -1, NULL); + omSetStatBit(temp_r31, 0x100); + temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(s8), MEMORY_DEFAULT_NUM); + temp_r28 = temp_r31->data; + temp_r31->work[0] = arg0; + for (temp_r30 = 0; temp_r30 < arg0; temp_r30++) { + if (temp_r30 < 3) { + temp_r31->model[temp_r30] = Hu3DModelCreateFile(lbl_2_data_460[temp_r30]); + } + else { + temp_r31->model[temp_r30] = Hu3DModelLink(temp_r31->model[temp_r30 % 3]); + } + temp_f31 = 0.5f + ((1.0f / 255.0f) * (0.5f * frandu8())); + Hu3DModelScaleSet(temp_r31->model[temp_r30], temp_f31, temp_f31, temp_f31); + Hu3DModelAttrSet(temp_r31->model[temp_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->model[temp_r30], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(temp_r31->model[temp_r30], (1.0f / 255.0f) * (Hu3DMotionMaxTimeGet(temp_r31->model[temp_r30]) * frandu8())); + temp_r28[temp_r30] = 0; + } } void fn_2_DE1C(WorkE6E8 *arg0) { - HuMemDirectFree(arg0->unk34); - HuMemDirectFree(arg0->unk38); - HuMemDirectFree(arg0->unk40); - HuMemDirectFree(arg0->unk44); - HuMemDirectFree(arg0->unk48); - HuMemDirectFree(arg0->unk4C); - HuMemDirectFree(arg0->unk3C); - HuMemDirectFree(arg0->unk50); - HuMemDirectFree(arg0->unk54); - HuMemDirectFree(arg0->unk58); - HuMemDirectFree(arg0->unk5C); - HuMemDirectFree(arg0->unk60); - HuMemDirectFree(arg0->unk64); - HuMemDirectFree(arg0->unk68); - HuMemDirectFree(arg0->unk30); + HuMemDirectFree(arg0->unk34); + HuMemDirectFree(arg0->unk38); + HuMemDirectFree(arg0->unk40); + HuMemDirectFree(arg0->unk44); + HuMemDirectFree(arg0->unk48); + HuMemDirectFree(arg0->unk4C); + HuMemDirectFree(arg0->unk3C); + HuMemDirectFree(arg0->unk50); + HuMemDirectFree(arg0->unk54); + HuMemDirectFree(arg0->unk58); + HuMemDirectFree(arg0->unk5C); + HuMemDirectFree(arg0->unk60); + HuMemDirectFree(arg0->unk64); + HuMemDirectFree(arg0->unk68); + HuMemDirectFree(arg0->unk30); } omObjData *fn_2_DEBC(s16 arg0) { - WorkE6E8 *temp_r31; - s32 temp_r29; - omObjData *temp_r28; - s32 temp_r27; - s8 *temp_r26; - if(arg0 <= 0) { - return NULL; - } - temp_r28 = omAddObjEx(lbl_2_bss_1C, 1145, arg0, 0, -1, NULL); - omSetStatBit(temp_r28, 0x100); - temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkE6E8), MEMORY_DEFAULT_NUM); - temp_r31 = temp_r28->data; - temp_r31->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk38 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk44 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk48 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk3C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); - temp_r31->unk50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s16), MEMORY_DEFAULT_NUM); - temp_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s16), MEMORY_DEFAULT_NUM); - temp_r31->unk58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); - temp_r31->unk5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); - temp_r31->unk60 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); - temp_r31->unk64 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); - temp_r31->unk68 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); - temp_r31->unk30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s8), MEMORY_DEFAULT_NUM); - for(temp_r27=0; temp_r27data; - for(temp_r29=0; temp_r29work[0]; temp_r29++) { - if(temp_r26[temp_r29] == 0) { - temp_r26[temp_r29] = 1; - temp_r28->model[temp_r27] = lbl_2_bss_C4->model[temp_r29]; - temp_r31->unk54[temp_r27] = temp_r29%3; - temp_r31->unk30[temp_r27] = temp_r29; - break; - } - } - if(temp_r29 == lbl_2_bss_C4->work[0]) { - arg0 -= (s32)arg0-temp_r27; - break; - } - } - if(arg0 == 0) { - fn_2_DE1C(temp_r31); - omDelObjEx(HuPrcCurrentGet(), temp_r28); - temp_r28 = NULL; - } else { - temp_r31->unk0 = arg0; - temp_r31->unk10 = 0; - } - return temp_r28; + WorkE6E8 *temp_r31; + s32 temp_r29; + omObjData *temp_r28; + s32 temp_r27; + s8 *temp_r26; + if (arg0 <= 0) { + return NULL; + } + temp_r28 = omAddObjEx(lbl_2_bss_1C, 1145, arg0, 0, -1, NULL); + omSetStatBit(temp_r28, 0x100); + temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkE6E8), MEMORY_DEFAULT_NUM); + temp_r31 = temp_r28->data; + temp_r31->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk38 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk44 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk48 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk3C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(s16), MEMORY_DEFAULT_NUM); + temp_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(s16), MEMORY_DEFAULT_NUM); + temp_r31->unk58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk60 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk64 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk68 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(s8), MEMORY_DEFAULT_NUM); + for (temp_r27 = 0; temp_r27 < arg0; temp_r27++) { + temp_r26 = lbl_2_bss_C4->data; + for (temp_r29 = 0; temp_r29 < lbl_2_bss_C4->work[0]; temp_r29++) { + if (temp_r26[temp_r29] == 0) { + temp_r26[temp_r29] = 1; + temp_r28->model[temp_r27] = lbl_2_bss_C4->model[temp_r29]; + temp_r31->unk54[temp_r27] = temp_r29 % 3; + temp_r31->unk30[temp_r27] = temp_r29; + break; + } + } + if (temp_r29 == lbl_2_bss_C4->work[0]) { + arg0 -= (s32)arg0 - temp_r27; + break; + } + } + if (arg0 == 0) { + fn_2_DE1C(temp_r31); + omDelObjEx(HuPrcCurrentGet(), temp_r28); + temp_r28 = NULL; + } + else { + temp_r31->unk0 = arg0; + temp_r31->unk10 = 0; + } + return temp_r28; } void fn_2_E24C(omObjData *object) { - WorkE6E8 *temp_r31; - s32 temp_r30; - s8 *temp_r28; - temp_r31 = object->data; - temp_r28 = lbl_2_bss_C4->data; - for(temp_r30=0; temp_r30unk0; temp_r30++) { - temp_r28[temp_r31->unk30[temp_r30]] = 0; - Hu3DModelAttrSet(object->model[temp_r30], 1); - } - fn_2_DE1C(temp_r31); - omDelObjEx(HuPrcCurrentGet(), object); + WorkE6E8 *temp_r31; + s32 temp_r30; + s8 *temp_r28; + temp_r31 = object->data; + temp_r28 = lbl_2_bss_C4->data; + for (temp_r30 = 0; temp_r30 < temp_r31->unk0; temp_r30++) { + temp_r28[temp_r31->unk30[temp_r30]] = 0; + Hu3DModelAttrSet(object->model[temp_r30], HU3D_ATTR_DISPOFF); + } + fn_2_DE1C(temp_r31); + omDelObjEx(HuPrcCurrentGet(), object); } void fn_2_E6E8(omObjData *object); void fn_2_E364(omObjData *object, s16 arg1) { - s32 temp_r31; - WorkE6E8 *temp_r29 = object->data; - if(arg1 == 1) { - for(temp_r31=0; temp_r31unk0; temp_r31++) { - Hu3DModelAttrReset(object->model[temp_r31], 1); - } - object->func = fn_2_E6E8; - } else { - for(temp_r31=0; temp_r31unk0; temp_r31++) { - Hu3DModelAttrSet(object->model[temp_r31], 1); - } - object->func = NULL; - } + s32 temp_r31; + WorkE6E8 *temp_r29 = object->data; + if (arg1 == 1) { + for (temp_r31 = 0; temp_r31 < temp_r29->unk0; temp_r31++) { + Hu3DModelAttrReset(object->model[temp_r31], HU3D_ATTR_DISPOFF); + } + object->func = fn_2_E6E8; + } + else { + for (temp_r31 = 0; temp_r31 < temp_r29->unk0; temp_r31++) { + Hu3DModelAttrSet(object->model[temp_r31], HU3D_ATTR_DISPOFF); + } + object->func = NULL; + } } void fn_2_E420(omObjData *object, Vec *arg1, Vec *arg2) { - WorkE6E8 *temp_r31 = object->data; - s32 temp_r30; - for(temp_r30=0; temp_r30unk0; temp_r30++) { - temp_r31->unk34[temp_r30].x = (arg1->x - arg2->x)+((1.0f/255.0f)*(2.0f*arg2->x*frandu8())); - temp_r31->unk34[temp_r30].y = (arg1->y - arg2->y)+((1.0f/255.0f)*(2.0f*arg2->y*frandu8())); - temp_r31->unk34[temp_r30].z = (arg1->z - arg2->z)+((1.0f/255.0f)*(2.0f*arg2->z*frandu8())); - VECNormalize(&temp_r31->unk34[temp_r30], &temp_r31->unk38[temp_r30]); - temp_r31->unk5C[temp_r30] = temp_r31->unk64[temp_r30] = temp_r31->unk60[temp_r30] = temp_r31->unk68[temp_r30] = 0; - temp_r31->unk58[temp_r30] = 0.1f; - Hu3DModelPosSet(object->model[temp_r30], temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); - - } + WorkE6E8 *temp_r31 = object->data; + s32 temp_r30; + for (temp_r30 = 0; temp_r30 < temp_r31->unk0; temp_r30++) { + temp_r31->unk34[temp_r30].x = (arg1->x - arg2->x) + ((1.0f / 255.0f) * (2.0f * arg2->x * frandu8())); + temp_r31->unk34[temp_r30].y = (arg1->y - arg2->y) + ((1.0f / 255.0f) * (2.0f * arg2->y * frandu8())); + temp_r31->unk34[temp_r30].z = (arg1->z - arg2->z) + ((1.0f / 255.0f) * (2.0f * arg2->z * frandu8())); + VECNormalize(&temp_r31->unk34[temp_r30], &temp_r31->unk38[temp_r30]); + temp_r31->unk5C[temp_r30] = temp_r31->unk64[temp_r30] = temp_r31->unk60[temp_r30] = temp_r31->unk68[temp_r30] = 0; + temp_r31->unk58[temp_r30] = 0.1f; + Hu3DModelPosSet(object->model[temp_r30], temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); + } } void fn_2_E66C(omObjData *object, Vec *pos) { - WorkE6E8 *temp_r31 = object->data; - temp_r31->unk4 = *pos; + WorkE6E8 *temp_r31 = object->data; + temp_r31->unk4 = *pos; } void fn_2_E69C(omObjData *object, float arg2, float arg3) { - WorkE6E8 *temp_r31 = object->data; - temp_r31->unk14 = arg2; - temp_r31->unk18 = arg3; + WorkE6E8 *temp_r31 = object->data; + temp_r31->unk14 = arg2; + temp_r31->unk18 = arg3; } void fn_2_E6BC(omObjData *object, float arg2, float arg3, float arg4, float arg5, float arg6) { - WorkE6E8 *temp_r31 = object->data; - temp_r31->unk1C = arg2; - temp_r31->unk20 = arg3; - temp_r31->unk24 = arg4; - temp_r31->unk28 = arg5; - temp_r31->unk2C = arg6; + WorkE6E8 *temp_r31 = object->data; + temp_r31->unk1C = arg2; + temp_r31->unk20 = arg3; + temp_r31->unk24 = arg4; + temp_r31->unk28 = arg5; + temp_r31->unk2C = arg6; } void fn_2_E6E8(omObjData *object) { - WorkE6E8 *temp_r31 = object->data; - s32 temp_r30; - s32 temp_r29; - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - Mtx sp158, sp128, spF8, spC8, sp98, sp68; - Vec sp5C, sp50, sp44, sp38, sp2C, sp20, sp14, sp8; - for(temp_r30=0; temp_r30unk0; temp_r30++) { - temp_r31->unk3C[temp_r30].x = 0; - temp_r31->unk3C[temp_r30].y = 0; - temp_r31->unk3C[temp_r30].z = 0; - temp_r31->unk40[temp_r30].x = 0; - temp_r31->unk40[temp_r30].y = 0; - temp_r31->unk40[temp_r30].z = 0; - temp_r31->unk44[temp_r30].x = 0; - temp_r31->unk44[temp_r30].y = 0; - temp_r31->unk44[temp_r30].z = 0; - temp_r31->unk48[temp_r30].x = 0; - temp_r31->unk48[temp_r30].y = 0; - temp_r31->unk48[temp_r30].z = 0; - temp_r31->unk4C[temp_r30].x = 0; - temp_r31->unk4C[temp_r30].y = 0; - temp_r31->unk4C[temp_r30].z = 0; - temp_r31->unk50[temp_r30] = 0; - } - for(temp_r30=0; temp_r30unk0; temp_r30++) { - for(temp_r29=temp_r30+1; temp_r29unk0; temp_r29++) { - VECSubtract(&temp_r31->unk34[temp_r30], &temp_r31->unk34[temp_r29], &sp5C); - temp_f28 = VECMag(&sp5C); - if(temp_f28 < temp_r31->unk14) { - VECScale(&sp5C, &sp50, 1.0f/(temp_f28*temp_f28)); - VECAdd(&temp_r31->unk3C[temp_r30], &sp50, &temp_r31->unk3C[temp_r30]); - VECSubtract(&temp_r31->unk3C[temp_r29], &sp50, &temp_r31->unk3C[temp_r29]); - if(temp_r31->unk54[temp_r30] == temp_r31->unk54[temp_r29]){ - VECScale(&temp_r31->unk38[temp_r29], &sp50, 1.0f/temp_f28); - VECAdd(&temp_r31->unk40[temp_r30], &sp50, &temp_r31->unk40[temp_r30]); - VECScale(&temp_r31->unk38[temp_r30], &sp50, 1.0f/temp_f28); - VECAdd(&temp_r31->unk40[temp_r29], &sp50, &temp_r31->unk40[temp_r29]); - VECAdd(&temp_r31->unk44[temp_r30], &temp_r31->unk34[temp_r29], &temp_r31->unk44[temp_r30]); - VECAdd(&temp_r31->unk44[temp_r29], &temp_r31->unk34[temp_r30], &temp_r31->unk44[temp_r29]); - } - temp_r31->unk50[temp_r30]++; - temp_r31->unk50[temp_r29]++; - } - - } - for(temp_r29=0; temp_r29<4; temp_r29++) { - sp44.x = lbl_2_bss_118[temp_r29]->trans.x; - sp44.y = lbl_2_bss_118[temp_r29]->trans.y; - sp44.z = lbl_2_bss_118[temp_r29]->trans.z; - VECSubtract(&temp_r31->unk34[temp_r30], &sp44, &sp38); - if(!(VECDotProduct(&sp38, &temp_r31->unk38[temp_r30]) > 0)) { - temp_f30 = VECMag(&sp38)-200; - if(temp_f30 < temp_r31->unk14) { - temp_f30 -= 100; - if(temp_f30 < 0.01f) { - temp_f30 = 0.01f; - } - VECScale(&sp38, &sp38, 1.0f/temp_f30); - VECAdd(&temp_r31->unk4C[temp_r30], &sp38, &temp_r31->unk4C[temp_r30]); - } - } - } - if(temp_r31->unk50[temp_r30] != 0) { - VECScale(&temp_r31->unk44[temp_r30], &temp_r31->unk44[temp_r30], 1.0f/temp_r31->unk50[temp_r30]); - VECSubtract(&temp_r31->unk44[temp_r30], &temp_r31->unk34[temp_r30], &sp2C); - temp_f29 = VECMag(&sp2C); - if(temp_f29 > 0.0f){ - VECScale(&sp2C, &temp_r31->unk44[temp_r30], 1.0f/temp_f29); - } else { - temp_r31->unk44[temp_r30].x = 0; - temp_r31->unk44[temp_r30].y = 0; - temp_r31->unk44[temp_r30].z = 0; - } - VECScale(&temp_r31->unk40[temp_r30], &temp_r31->unk40[temp_r30], 1.0f/temp_r31->unk50[temp_r30]); - temp_f29 = VECMag(&temp_r31->unk40[temp_r30]); - if(temp_f29 > 0) { - VECScale(&temp_r31->unk40[temp_r30], &temp_r31->unk40[temp_r30], 1.0f/temp_f29); - VECSubtract(&temp_r31->unk40[temp_r30], &temp_r31->unk38[temp_r30], &sp2C); - VECScale(&sp2C, &temp_r31->unk40[temp_r30], 1.0f/temp_f29); - } - } - VECSubtract(&temp_r31->unk4, &temp_r31->unk34[temp_r30], &temp_r31->unk48[temp_r30]); - VECNormalize(&temp_r31->unk48[temp_r30], &temp_r31->unk48[temp_r30]); - } - for(temp_r30=0; temp_r30unk0; temp_r30++) { - sp20.x = 0; - sp20.y = 0; - sp20.z = 0; - VECScale(&temp_r31->unk3C[temp_r30], &sp8, temp_r31->unk1C); - VECAdd(&sp8, &sp20, &sp20); - VECScale(&temp_r31->unk4C[temp_r30], &sp8, temp_r31->unk20); - VECAdd(&sp8, &sp20, &sp20); - VECScale(&temp_r31->unk40[temp_r30], &sp8, temp_r31->unk24); - VECAdd(&sp8, &sp20, &sp20); - VECScale(&temp_r31->unk44[temp_r30], &sp8, temp_r31->unk28); - VECAdd(&sp8, &sp20, &sp20); - VECScale(&temp_r31->unk48[temp_r30], &sp8, temp_r31->unk2C); - VECAdd(&sp8, &sp20, &sp20); - temp_f27 = VECMag(&sp20); - if(temp_f27 > 1.0f) { - VECScale(&sp20, &sp20, 1.0f/temp_f27); - } - if(sp20.y > 0.01f) { - temp_r31->unk60[temp_r30] += 0.02f; - if(temp_r31->unk60[temp_r30] > 0.8f) { - temp_r31->unk60[temp_r30] = 0.8f; - } - } else { - if(sp20.y < -0.01f) { - temp_r31->unk60[temp_r30] -= 0.02f; - if(temp_r31->unk60[temp_r30] < -0.8f) { - temp_r31->unk60[temp_r30] = -0.8f; - } - } else { - temp_r31->unk60[temp_r30] *= 0.98f; - } - } - temp_r31->unk58[temp_r30] -= 0.002*temp_r31->unk60[temp_r30]; - temp_r31->unk58[temp_r30] = temp_r31->unk18+(0.99f*(temp_r31->unk58[temp_r30]-temp_r31->unk18)); - if(temp_r31->unk58[temp_r30] < 0.4f*temp_r31->unk18) { - temp_r31->unk58[temp_r30] = 0.4f*temp_r31->unk18; - } - if(temp_r31->unk58[temp_r30] > 5.0f*temp_r31->unk18) { - temp_r31->unk58[temp_r30] = 5.0f*temp_r31->unk18; - } - sp14 = sp20; - sp14.y = 0; - sp8 = temp_r31->unk38[temp_r30]; - if(VECMag(&sp14) > 0) { - VECNormalize(&sp14, &sp14); - } - temp_f31 = VECDotProduct(&sp14, &sp8); - if(temp_f31 > 0.7f) { - temp_f31 -= 0.7f; - temp_r31->unk58[temp_r30] += 0.005f*temp_f31; - } - VECCrossProduct(&sp14, &sp8, &sp14); - temp_f31 = 0.07f*((1.0f-temp_f31)/2); - if(sp14.y > 0.05f) { - temp_r31->unk68[temp_r30] = 0.05f*(temp_f31+(19.0f*temp_r31->unk68[temp_r30])); - } else if(sp14.y < -0.05f) { - temp_r31->unk68[temp_r30] = 0.05f*((19.0f*temp_r31->unk68[temp_r30])-temp_f31); - } else { - temp_r31->unk68[temp_r30] *= 0.98f; - } - temp_r31->unk5C[temp_r30] += temp_r31->unk68[temp_r30]; - temp_r31->unk64[temp_r30] = 20.0f*-temp_r31->unk68[temp_r30]; - MTXTrans(sp158, temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); - MTXRotDeg(sp128, 'x', (temp_r31->unk60[temp_r30]/M_PI)*180.0); - MTXRotDeg(spF8, 'y', (temp_r31->unk5C[temp_r30]/M_PI)*180.0); - MTXRotDeg(spC8, 'z', (temp_r31->unk64[temp_r30]/M_PI)*180.0); - MTXConcat(sp128, spF8, sp98); - MTXConcat(spC8, sp98, sp68); - MTXConcat(sp68, sp158, sp98); - temp_r31->unk38[temp_r30].x = MTXRowCol(sp98, 2, 0); - temp_r31->unk38[temp_r30].y = MTXRowCol(sp98, 2, 1); - temp_r31->unk38[temp_r30].z = MTXRowCol(sp98, 2, 2); - temp_r31->unk34[temp_r30].x += 100.0f*(temp_r31->unk38[temp_r30].x*temp_r31->unk58[temp_r30]); - temp_r31->unk34[temp_r30].y += 100.0f*(temp_r31->unk38[temp_r30].y*temp_r31->unk58[temp_r30]); - temp_r31->unk34[temp_r30].z += 100.0f*(temp_r31->unk38[temp_r30].z*temp_r31->unk58[temp_r30]); - if(temp_r31->unk34[temp_r30].y < -350.0f) { - temp_r31->unk34[temp_r30].y = -350.0f; - } - Hu3DModelPosSet(object->model[temp_r30], temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); - Hu3DModelRotSet(object->model[temp_r30], (-temp_r31->unk60[temp_r30]/M_PI)*180.0, (-temp_r31->unk5C[temp_r30]/M_PI)*180.0, 0); - } + WorkE6E8 *temp_r31 = object->data; + s32 temp_r30; + s32 temp_r29; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + Mtx sp158, sp128, spF8, spC8, sp98, sp68; + Vec sp5C, sp50, sp44, sp38, sp2C, sp20, sp14, sp8; + for (temp_r30 = 0; temp_r30 < temp_r31->unk0; temp_r30++) { + temp_r31->unk3C[temp_r30].x = 0; + temp_r31->unk3C[temp_r30].y = 0; + temp_r31->unk3C[temp_r30].z = 0; + temp_r31->unk40[temp_r30].x = 0; + temp_r31->unk40[temp_r30].y = 0; + temp_r31->unk40[temp_r30].z = 0; + temp_r31->unk44[temp_r30].x = 0; + temp_r31->unk44[temp_r30].y = 0; + temp_r31->unk44[temp_r30].z = 0; + temp_r31->unk48[temp_r30].x = 0; + temp_r31->unk48[temp_r30].y = 0; + temp_r31->unk48[temp_r30].z = 0; + temp_r31->unk4C[temp_r30].x = 0; + temp_r31->unk4C[temp_r30].y = 0; + temp_r31->unk4C[temp_r30].z = 0; + temp_r31->unk50[temp_r30] = 0; + } + for (temp_r30 = 0; temp_r30 < temp_r31->unk0; temp_r30++) { + for (temp_r29 = temp_r30 + 1; temp_r29 < temp_r31->unk0; temp_r29++) { + VECSubtract(&temp_r31->unk34[temp_r30], &temp_r31->unk34[temp_r29], &sp5C); + temp_f28 = VECMag(&sp5C); + if (temp_f28 < temp_r31->unk14) { + VECScale(&sp5C, &sp50, 1.0f / (temp_f28 * temp_f28)); + VECAdd(&temp_r31->unk3C[temp_r30], &sp50, &temp_r31->unk3C[temp_r30]); + VECSubtract(&temp_r31->unk3C[temp_r29], &sp50, &temp_r31->unk3C[temp_r29]); + if (temp_r31->unk54[temp_r30] == temp_r31->unk54[temp_r29]) { + VECScale(&temp_r31->unk38[temp_r29], &sp50, 1.0f / temp_f28); + VECAdd(&temp_r31->unk40[temp_r30], &sp50, &temp_r31->unk40[temp_r30]); + VECScale(&temp_r31->unk38[temp_r30], &sp50, 1.0f / temp_f28); + VECAdd(&temp_r31->unk40[temp_r29], &sp50, &temp_r31->unk40[temp_r29]); + VECAdd(&temp_r31->unk44[temp_r30], &temp_r31->unk34[temp_r29], &temp_r31->unk44[temp_r30]); + VECAdd(&temp_r31->unk44[temp_r29], &temp_r31->unk34[temp_r30], &temp_r31->unk44[temp_r29]); + } + temp_r31->unk50[temp_r30]++; + temp_r31->unk50[temp_r29]++; + } + } + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + sp44.x = lbl_2_bss_118[temp_r29]->trans.x; + sp44.y = lbl_2_bss_118[temp_r29]->trans.y; + sp44.z = lbl_2_bss_118[temp_r29]->trans.z; + VECSubtract(&temp_r31->unk34[temp_r30], &sp44, &sp38); + if (!(VECDotProduct(&sp38, &temp_r31->unk38[temp_r30]) > 0)) { + temp_f30 = VECMag(&sp38) - 200; + if (temp_f30 < temp_r31->unk14) { + temp_f30 -= 100; + if (temp_f30 < 0.01f) { + temp_f30 = 0.01f; + } + VECScale(&sp38, &sp38, 1.0f / temp_f30); + VECAdd(&temp_r31->unk4C[temp_r30], &sp38, &temp_r31->unk4C[temp_r30]); + } + } + } + if (temp_r31->unk50[temp_r30] != 0) { + VECScale(&temp_r31->unk44[temp_r30], &temp_r31->unk44[temp_r30], 1.0f / temp_r31->unk50[temp_r30]); + VECSubtract(&temp_r31->unk44[temp_r30], &temp_r31->unk34[temp_r30], &sp2C); + temp_f29 = VECMag(&sp2C); + if (temp_f29 > 0.0f) { + VECScale(&sp2C, &temp_r31->unk44[temp_r30], 1.0f / temp_f29); + } + else { + temp_r31->unk44[temp_r30].x = 0; + temp_r31->unk44[temp_r30].y = 0; + temp_r31->unk44[temp_r30].z = 0; + } + VECScale(&temp_r31->unk40[temp_r30], &temp_r31->unk40[temp_r30], 1.0f / temp_r31->unk50[temp_r30]); + temp_f29 = VECMag(&temp_r31->unk40[temp_r30]); + if (temp_f29 > 0) { + VECScale(&temp_r31->unk40[temp_r30], &temp_r31->unk40[temp_r30], 1.0f / temp_f29); + VECSubtract(&temp_r31->unk40[temp_r30], &temp_r31->unk38[temp_r30], &sp2C); + VECScale(&sp2C, &temp_r31->unk40[temp_r30], 1.0f / temp_f29); + } + } + VECSubtract(&temp_r31->unk4, &temp_r31->unk34[temp_r30], &temp_r31->unk48[temp_r30]); + VECNormalize(&temp_r31->unk48[temp_r30], &temp_r31->unk48[temp_r30]); + } + for (temp_r30 = 0; temp_r30 < temp_r31->unk0; temp_r30++) { + sp20.x = 0; + sp20.y = 0; + sp20.z = 0; + VECScale(&temp_r31->unk3C[temp_r30], &sp8, temp_r31->unk1C); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk4C[temp_r30], &sp8, temp_r31->unk20); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk40[temp_r30], &sp8, temp_r31->unk24); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk44[temp_r30], &sp8, temp_r31->unk28); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk48[temp_r30], &sp8, temp_r31->unk2C); + VECAdd(&sp8, &sp20, &sp20); + temp_f27 = VECMag(&sp20); + if (temp_f27 > 1.0f) { + VECScale(&sp20, &sp20, 1.0f / temp_f27); + } + if (sp20.y > 0.01f) { + temp_r31->unk60[temp_r30] += 0.02f; + if (temp_r31->unk60[temp_r30] > 0.8f) { + temp_r31->unk60[temp_r30] = 0.8f; + } + } + else { + if (sp20.y < -0.01f) { + temp_r31->unk60[temp_r30] -= 0.02f; + if (temp_r31->unk60[temp_r30] < -0.8f) { + temp_r31->unk60[temp_r30] = -0.8f; + } + } + else { + temp_r31->unk60[temp_r30] *= 0.98f; + } + } + temp_r31->unk58[temp_r30] -= 0.002 * temp_r31->unk60[temp_r30]; + temp_r31->unk58[temp_r30] = temp_r31->unk18 + (0.99f * (temp_r31->unk58[temp_r30] - temp_r31->unk18)); + if (temp_r31->unk58[temp_r30] < 0.4f * temp_r31->unk18) { + temp_r31->unk58[temp_r30] = 0.4f * temp_r31->unk18; + } + if (temp_r31->unk58[temp_r30] > 5.0f * temp_r31->unk18) { + temp_r31->unk58[temp_r30] = 5.0f * temp_r31->unk18; + } + sp14 = sp20; + sp14.y = 0; + sp8 = temp_r31->unk38[temp_r30]; + if (VECMag(&sp14) > 0) { + VECNormalize(&sp14, &sp14); + } + temp_f31 = VECDotProduct(&sp14, &sp8); + if (temp_f31 > 0.7f) { + temp_f31 -= 0.7f; + temp_r31->unk58[temp_r30] += 0.005f * temp_f31; + } + VECCrossProduct(&sp14, &sp8, &sp14); + temp_f31 = 0.07f * ((1.0f - temp_f31) / 2); + if (sp14.y > 0.05f) { + temp_r31->unk68[temp_r30] = 0.05f * (temp_f31 + (19.0f * temp_r31->unk68[temp_r30])); + } + else if (sp14.y < -0.05f) { + temp_r31->unk68[temp_r30] = 0.05f * ((19.0f * temp_r31->unk68[temp_r30]) - temp_f31); + } + else { + temp_r31->unk68[temp_r30] *= 0.98f; + } + temp_r31->unk5C[temp_r30] += temp_r31->unk68[temp_r30]; + temp_r31->unk64[temp_r30] = 20.0f * -temp_r31->unk68[temp_r30]; + MTXTrans(sp158, temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); + MTXRotDeg(sp128, 'x', (temp_r31->unk60[temp_r30] / M_PI) * 180.0); + MTXRotDeg(spF8, 'y', (temp_r31->unk5C[temp_r30] / M_PI) * 180.0); + MTXRotDeg(spC8, 'z', (temp_r31->unk64[temp_r30] / M_PI) * 180.0); + MTXConcat(sp128, spF8, sp98); + MTXConcat(spC8, sp98, sp68); + MTXConcat(sp68, sp158, sp98); + temp_r31->unk38[temp_r30].x = MTXRowCol(sp98, 2, 0); + temp_r31->unk38[temp_r30].y = MTXRowCol(sp98, 2, 1); + temp_r31->unk38[temp_r30].z = MTXRowCol(sp98, 2, 2); + temp_r31->unk34[temp_r30].x += 100.0f * (temp_r31->unk38[temp_r30].x * temp_r31->unk58[temp_r30]); + temp_r31->unk34[temp_r30].y += 100.0f * (temp_r31->unk38[temp_r30].y * temp_r31->unk58[temp_r30]); + temp_r31->unk34[temp_r30].z += 100.0f * (temp_r31->unk38[temp_r30].z * temp_r31->unk58[temp_r30]); + if (temp_r31->unk34[temp_r30].y < -350.0f) { + temp_r31->unk34[temp_r30].y = -350.0f; + } + Hu3DModelPosSet(object->model[temp_r30], temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); + Hu3DModelRotSet(object->model[temp_r30], (-temp_r31->unk60[temp_r30] / M_PI) * 180.0, (-temp_r31->unk5C[temp_r30] / M_PI) * 180.0, 0); + } } void fn_2_F778() { - CameraData *temp_r31; - s32 temp_r30; - float sp8[7]; - temp_r31 = lbl_2_bss_DC->data; - sp8[0] = temp_r31->pos.x; - sp8[1] = temp_r31->pos.y; - sp8[2] = temp_r31->pos.z; - sp8[3] = temp_r31->up.x; - sp8[4] = temp_r31->up.y; - sp8[5] = temp_r31->up.z; - sp8[6] = temp_r31->target.x; - fontcolor = FONT_COLOR_WHITE; - for(temp_r30=0; temp_r30<7; temp_r30++) { - if(temp_r30 == lbl_2_bss_18) { - print8(24.0+(1.5*((temp_r30*8)*7)), 384, 1.5f, "____"); - } - print8(24.0+(1.5*((temp_r30*8)*7)), 400, 1.5f, "%.2f", sp8[temp_r30]); - } - if(HuPadBtnRep[0] & PAD_BUTTON_LEFT) { - if(--lbl_2_bss_18 < 0) { - lbl_2_bss_18 = 6; - } - } - if(HuPadBtnRep[0] & PAD_BUTTON_RIGHT) { - if(++lbl_2_bss_18 > 6) { - lbl_2_bss_18 = 0; - } - } - if(HuPadBtnRep[0] & PAD_BUTTON_UP) { - if(HuPadBtn[0] & PAD_TRIGGER_R) { - sp8[lbl_2_bss_18] += 1.0f; - } else if(HuPadBtn[0] & PAD_TRIGGER_L) { - sp8[lbl_2_bss_18] += 0.1f; - } else { - sp8[lbl_2_bss_18] += 0.01f; - } - if(sp8[lbl_2_bss_18] > 999.99f) { - sp8[lbl_2_bss_18] = 999.99f; - } - } - if(HuPadBtnRep[0] & PAD_BUTTON_DOWN) { - if(HuPadBtn[0] & PAD_TRIGGER_R) { - sp8[lbl_2_bss_18] -= 1.0f; - } else if(HuPadBtn[0] & PAD_TRIGGER_L) { - sp8[lbl_2_bss_18] -= 0.1f; - } else { - sp8[lbl_2_bss_18] -= 0.01f; - } - if(sp8[lbl_2_bss_18] < 0) { - sp8[lbl_2_bss_18] = 0; - } - } - temp_r31->pos.x = sp8[0]; - temp_r31->pos.y = sp8[1]; - temp_r31->pos.z = sp8[2]; - temp_r31->up.x = sp8[3]; - temp_r31->up.y = sp8[4]; - temp_r31->up.z = sp8[5]; - temp_r31->target.x = sp8[6]; + CameraData *temp_r31; + s32 temp_r30; + float sp8[7]; + temp_r31 = lbl_2_bss_DC->data; + sp8[0] = temp_r31->pos.x; + sp8[1] = temp_r31->pos.y; + sp8[2] = temp_r31->pos.z; + sp8[3] = temp_r31->up.x; + sp8[4] = temp_r31->up.y; + sp8[5] = temp_r31->up.z; + sp8[6] = temp_r31->target.x; + fontcolor = FONT_COLOR_WHITE; + for (temp_r30 = 0; temp_r30 < 7; temp_r30++) { + if (temp_r30 == lbl_2_bss_18) { + print8(24.0 + (1.5 * ((temp_r30 * 8) * 7)), 384, 1.5f, "____"); + } + print8(24.0 + (1.5 * ((temp_r30 * 8) * 7)), 400, 1.5f, "%.2f", sp8[temp_r30]); + } + if (HuPadBtnRep[0] & PAD_BUTTON_LEFT) { + if (--lbl_2_bss_18 < 0) { + lbl_2_bss_18 = 6; + } + } + if (HuPadBtnRep[0] & PAD_BUTTON_RIGHT) { + if (++lbl_2_bss_18 > 6) { + lbl_2_bss_18 = 0; + } + } + if (HuPadBtnRep[0] & PAD_BUTTON_UP) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + sp8[lbl_2_bss_18] += 1.0f; + } + else if (HuPadBtn[0] & PAD_TRIGGER_L) { + sp8[lbl_2_bss_18] += 0.1f; + } + else { + sp8[lbl_2_bss_18] += 0.01f; + } + if (sp8[lbl_2_bss_18] > 999.99f) { + sp8[lbl_2_bss_18] = 999.99f; + } + } + if (HuPadBtnRep[0] & PAD_BUTTON_DOWN) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + sp8[lbl_2_bss_18] -= 1.0f; + } + else if (HuPadBtn[0] & PAD_TRIGGER_L) { + sp8[lbl_2_bss_18] -= 0.1f; + } + else { + sp8[lbl_2_bss_18] -= 0.01f; + } + if (sp8[lbl_2_bss_18] < 0) { + sp8[lbl_2_bss_18] = 0; + } + } + temp_r31->pos.x = sp8[0]; + temp_r31->pos.y = sp8[1]; + temp_r31->pos.z = sp8[2]; + temp_r31->up.x = sp8[3]; + temp_r31->up.y = sp8[4]; + temp_r31->up.z = sp8[5]; + temp_r31->target.x = sp8[6]; } void fn_2_FF98(omObjData *object); omObjData *fn_2_FC40(s16 arg0, Vec *arg1, Vec *arg2, Vec *arg3) { - omObjData *temp_r30; - omObjData *temp_r22; - temp_r22 = omAddObjEx(HuPrcCurrentGet(), 1140, 0, 0, -1, fn_2_FF98); - temp_r30 = fn_2_DEBC(arg0); - temp_r22->work[0] = (u32)temp_r30; - fn_2_E420(temp_r30, arg1, arg2); - fn_2_E66C(temp_r30, arg3); - fn_2_E69C(temp_r30, 90.0f, 0.045999996f); - fn_2_E6BC(temp_r30, 5.0f, 1.5f, 0.08f, 0.8f, 0.8f); - fn_2_E364(temp_r30, 1); - return temp_r22; + omObjData *temp_r30; + omObjData *temp_r22; + temp_r22 = omAddObjEx(HuPrcCurrentGet(), 1140, 0, 0, -1, fn_2_FF98); + temp_r30 = fn_2_DEBC(arg0); + temp_r22->work[0] = (u32)temp_r30; + fn_2_E420(temp_r30, arg1, arg2); + fn_2_E66C(temp_r30, arg3); + fn_2_E69C(temp_r30, 90.0f, 0.045999996f); + fn_2_E6BC(temp_r30, 5.0f, 1.5f, 0.08f, 0.8f, 0.8f); + fn_2_E364(temp_r30, 1); + return temp_r22; } void fn_2_FF98(omObjData *object) { - WorkE6E8 *temp_r29; - omObjData *temp_r28; - s32 temp_r25; - s32 temp_r24; - temp_r24 = 0; - temp_r28 = (omObjData *)(object->work[0]); - temp_r29 = temp_r28->data; - temp_r29->unk4.x += object->scale.x*sind(object->trans.x); - temp_r29->unk4.y += object->scale.y*sind(object->trans.x); - temp_r29->unk4.z += object->scale.z*sind(object->trans.x); - object->trans.x += object->rot.x; - if(object->trans.x >= 360.0f) { - object->trans.x -= 360.0f; - } - if(object->trans.x < 0.0f) { - object->trans.x += 360.0f; - } - for(temp_r25=0; temp_r25unk0; temp_r25++) { - if(temp_r29->unk34[temp_r25].z >= lbl_2_bss_6C.z) { - temp_r24++; - } - } - if(temp_r24 == temp_r29->unk0) { - fn_2_E24C(temp_r28); - omDelObjEx(HuPrcCurrentGet(), object); - } - + WorkE6E8 *temp_r29; + omObjData *temp_r28; + s32 temp_r25; + s32 temp_r24; + temp_r24 = 0; + temp_r28 = (omObjData *)(object->work[0]); + temp_r29 = temp_r28->data; + temp_r29->unk4.x += object->scale.x * sind(object->trans.x); + temp_r29->unk4.y += object->scale.y * sind(object->trans.x); + temp_r29->unk4.z += object->scale.z * sind(object->trans.x); + object->trans.x += object->rot.x; + if (object->trans.x >= 360.0f) { + object->trans.x -= 360.0f; + } + if (object->trans.x < 0.0f) { + object->trans.x += 360.0f; + } + for (temp_r25 = 0; temp_r25 < temp_r29->unk0; temp_r25++) { + if (temp_r29->unk34[temp_r25].z >= lbl_2_bss_6C.z) { + temp_r24++; + } + } + if (temp_r24 == temp_r29->unk0) { + fn_2_E24C(temp_r28); + omDelObjEx(HuPrcCurrentGet(), object); + } } diff --git a/src/REL/m401Dll/main_ex.c b/src/REL/m401Dll/main_ex.c index 10e2bf6c..34dc3dab 100644 --- a/src/REL/m401Dll/main_ex.c +++ b/src/REL/m401Dll/main_ex.c @@ -1,19 +1,19 @@ -#include "game/hsfman.h" -#include "game/sprite.h" -#include "game/object.h" -#include "game/hsfanim.h" -#include "game/hsfmotion.h" #include "game/audio.h" -#include "game/objsub.h" #include "game/frand.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/sprite.h" #include "ext_math.h" #include "REL/m401Dll.h" struct Bss13EData { - s16 unk0; - s16 unk2[3]; + s16 unk0; + s16 unk2[3]; }; AnimData *lbl_2_bss_250; @@ -33,116 +33,115 @@ float lbl_2_bss_128; float lbl_2_bss_124; s16 lbl_2_bss_120; - void fn_2_10240(Vec *arg0, Vec *arg1) { - CameraData *camera; - Mtx lookat; - Mtx44 proj; - float coord[4]; - arg0->y = -arg0->y; - camera = &Hu3DCamera[0]; - MTXLookAt(lookat, &camera->pos, &camera->up, &camera->target); - MTXMultVec(lookat, arg0, arg0); - MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); - coord[0] = (arg0->x*proj[0][0])+(arg0->y*proj[0][1])+(arg0->z*proj[0][2])+proj[0][3]; - coord[1] = (arg0->x*proj[1][0])+(arg0->y*proj[1][1])+(arg0->z*proj[1][2])+proj[1][3]; - coord[2] = (arg0->x*proj[2][0])+(arg0->y*proj[2][1])+(arg0->z*proj[2][2])+proj[2][3]; - coord[3] = (arg0->x*proj[3][0])+(arg0->y*proj[3][1])+(arg0->z*proj[3][2])+proj[3][3]; - arg1->x = ((coord[0]/coord[3])*320.0f)+320.0f; - arg1->y = ((coord[1]/coord[3])*240.0f)+240.0f; - arg1->z = coord[2]/coord[3]; + CameraData *camera; + Mtx lookat; + Mtx44 proj; + float coord[4]; + arg0->y = -arg0->y; + camera = &Hu3DCamera[0]; + MTXLookAt(lookat, &camera->pos, &camera->up, &camera->target); + MTXMultVec(lookat, arg0, arg0); + MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); + coord[0] = (arg0->x * proj[0][0]) + (arg0->y * proj[0][1]) + (arg0->z * proj[0][2]) + proj[0][3]; + coord[1] = (arg0->x * proj[1][0]) + (arg0->y * proj[1][1]) + (arg0->z * proj[1][2]) + proj[1][3]; + coord[2] = (arg0->x * proj[2][0]) + (arg0->y * proj[2][1]) + (arg0->z * proj[2][2]) + proj[2][3]; + coord[3] = (arg0->x * proj[3][0]) + (arg0->y * proj[3][1]) + (arg0->z * proj[3][2]) + proj[3][3]; + arg1->x = ((coord[0] / coord[3]) * 320.0f) + 320.0f; + arg1->y = ((coord[1] / coord[3]) * 240.0f) + 240.0f; + arg1->z = coord[2] / coord[3]; } void fn_2_1041C(void) { - s32 i; - lbl_2_bss_250 = HuSprAnimReadFile(0x200011); - lbl_2_bss_24C = HuSprAnimReadFile(0x200012); - lbl_2_bss_248 = HuSprAnimReadFile(0x200013); - lbl_2_bss_240 = HuSprAnimReadFile(0x200014); - lbl_2_bss_23C = HuSprAnimReadFile(0x200015); - lbl_2_bss_238 = HuSprAnimReadFile(0x200016); - HuSprAnimLock(lbl_2_bss_250); - HuSprAnimLock(lbl_2_bss_24C); - HuSprAnimLock(lbl_2_bss_248); - HuSprAnimLock(lbl_2_bss_240); - HuSprAnimLock(lbl_2_bss_23C); - HuSprAnimLock(lbl_2_bss_238); - lbl_2_bss_244 = HuSprAnimReadFile(0x200026); - HuSprAnimLock(lbl_2_bss_244); - lbl_2_bss_220[0][0] = lbl_2_bss_250; - lbl_2_bss_220[0][1] = lbl_2_bss_24C; - lbl_2_bss_220[0][2] = lbl_2_bss_248; - lbl_2_bss_220[1][0] = lbl_2_bss_240; - lbl_2_bss_220[1][1] = lbl_2_bss_23C; - lbl_2_bss_220[1][2] = lbl_2_bss_238; - for(i=0; i<4; i++) { - lbl_2_bss_136[i] = Hu3DModelCreateFile(0x200017); - Hu3DModelAttrSet(lbl_2_bss_136[i], 1); - Hu3DModelAttrSet(lbl_2_bss_136[i], 0x40000001); - Hu3DModelScaleSet(lbl_2_bss_136[i], 1.5f, 1.5f, 1.0f); - Hu3DModelLayerSet(lbl_2_bss_136[i], 2); - } + s32 i; + lbl_2_bss_250 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x11)); + lbl_2_bss_24C = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x12)); + lbl_2_bss_248 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x13)); + lbl_2_bss_240 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x14)); + lbl_2_bss_23C = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x15)); + lbl_2_bss_238 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x16)); + HuSprAnimLock(lbl_2_bss_250); + HuSprAnimLock(lbl_2_bss_24C); + HuSprAnimLock(lbl_2_bss_248); + HuSprAnimLock(lbl_2_bss_240); + HuSprAnimLock(lbl_2_bss_23C); + HuSprAnimLock(lbl_2_bss_238); + lbl_2_bss_244 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M401, 0x26)); + HuSprAnimLock(lbl_2_bss_244); + lbl_2_bss_220[0][0] = lbl_2_bss_250; + lbl_2_bss_220[0][1] = lbl_2_bss_24C; + lbl_2_bss_220[0][2] = lbl_2_bss_248; + lbl_2_bss_220[1][0] = lbl_2_bss_240; + lbl_2_bss_220[1][1] = lbl_2_bss_23C; + lbl_2_bss_220[1][2] = lbl_2_bss_238; + for (i = 0; i < 4; i++) { + lbl_2_bss_136[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M401, 0x17)); + Hu3DModelAttrSet(lbl_2_bss_136[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_2_bss_136[i], HU3D_MOTATTR_LOOP); + Hu3DModelScaleSet(lbl_2_bss_136[i], 1.5f, 1.5f, 1.0f); + Hu3DModelLayerSet(lbl_2_bss_136[i], 2); + } } void fn_2_10710(void) { - HuSprAnimKill(lbl_2_bss_250); - HuSprAnimKill(lbl_2_bss_24C); - HuSprAnimKill(lbl_2_bss_248); - HuSprAnimKill(lbl_2_bss_240); - HuSprAnimKill(lbl_2_bss_23C); - HuSprAnimKill(lbl_2_bss_238); - HuSprAnimKill(lbl_2_bss_244); + HuSprAnimKill(lbl_2_bss_250); + HuSprAnimKill(lbl_2_bss_24C); + HuSprAnimKill(lbl_2_bss_248); + HuSprAnimKill(lbl_2_bss_240); + HuSprAnimKill(lbl_2_bss_23C); + HuSprAnimKill(lbl_2_bss_238); + HuSprAnimKill(lbl_2_bss_244); } void fn_2_1079C(void) { - s32 i; - for(i=0; i<28; i++) { - lbl_2_bss_13E[i].unk0 = 0; - lbl_2_bss_13E[i].unk2[0] = Hu3DParticleCreate(lbl_2_bss_250, 80); - lbl_2_bss_13E[i].unk2[1] = Hu3DParticleCreate(lbl_2_bss_24C, 80); - lbl_2_bss_13E[i].unk2[2] = Hu3DParticleCreate(lbl_2_bss_248, 80); - Hu3DModelAttrSet(lbl_2_bss_13E[i].unk2[0], 1); - Hu3DModelAttrSet(lbl_2_bss_13E[i].unk2[1], 1); - Hu3DModelAttrSet(lbl_2_bss_13E[i].unk2[2], 1); - } - lbl_2_bss_134 = 0; + s32 i; + for (i = 0; i < 28; i++) { + lbl_2_bss_13E[i].unk0 = 0; + lbl_2_bss_13E[i].unk2[0] = Hu3DParticleCreate(lbl_2_bss_250, 80); + lbl_2_bss_13E[i].unk2[1] = Hu3DParticleCreate(lbl_2_bss_24C, 80); + lbl_2_bss_13E[i].unk2[2] = Hu3DParticleCreate(lbl_2_bss_248, 80); + Hu3DModelAttrSet(lbl_2_bss_13E[i].unk2[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_2_bss_13E[i].unk2[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_2_bss_13E[i].unk2[2], HU3D_ATTR_DISPOFF); + } + lbl_2_bss_134 = 0; } s16 fn_2_108C8(void) { - s32 i; - s32 j; - for(i=0; i<28; i++) { - if(!lbl_2_bss_13E[i].unk0) { - for(j=0; j<3; j++) { - Hu3DModelAttrReset(lbl_2_bss_13E[i].unk2[j], 1); - } - lbl_2_bss_13E[i].unk0 = 1; - return i; - } - } - return -1; + s32 i; + s32 j; + for (i = 0; i < 28; i++) { + if (!lbl_2_bss_13E[i].unk0) { + for (j = 0; j < 3; j++) { + Hu3DModelAttrReset(lbl_2_bss_13E[i].unk2[j], HU3D_ATTR_DISPOFF); + } + lbl_2_bss_13E[i].unk0 = 1; + return i; + } + } + return -1; } void fn_2_10980(s16 arg0) { - s32 i; - lbl_2_bss_13E[arg0].unk0 = 0; - for(i=0; i<3; i++) { - Hu3DModelAttrSet(lbl_2_bss_13E[arg0].unk2[i], 1); - } + s32 i; + lbl_2_bss_13E[arg0].unk0 = 0; + for (i = 0; i < 3; i++) { + Hu3DModelAttrSet(lbl_2_bss_13E[arg0].unk2[i], HU3D_ATTR_DISPOFF); + } } s16 fn_2_10A08(void) { - s16 temp_r31 = lbl_2_bss_136[lbl_2_bss_134]; - lbl_2_bss_134 = (lbl_2_bss_134+1)&0x3; - Hu3DModelTPLvlSet(temp_r31, 1.0f); - return temp_r31; + s16 temp_r31 = lbl_2_bss_136[lbl_2_bss_134]; + lbl_2_bss_134 = (lbl_2_bss_134 + 1) & 0x3; + Hu3DModelTPLvlSet(temp_r31, 1.0f); + return temp_r31; } void fn_2_113AC(omObjData *object); @@ -163,152 +162,151 @@ void fn_2_13B7C(ModelData *model, ParticleData *particle, Mtx matrix); omObjData *fn_2_10A88(Vec *arg0, s16 arg1) { - omObjData *temp_r31; - s32 temp_r30; - ParticleData *temp_r28; - UnkWork10A88 *temp_r27; - s16 temp_r24 = fn_2_108C8(); - if(temp_r24 < 0) { - return NULL; - } - { - s16 temp_r22 = -1; - if(arg1 == 0) { - temp_r22 = 1; - } - temp_r31 = omAddObjEx(HuPrcCurrentGet(), 0x514, 3, 0, temp_r22, NULL); - } - - - temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWork10A88), MEMORY_DEFAULT_NUM); - temp_r27 = temp_r31->data; - temp_r27->unk0 = *arg0; - for(temp_r30=0; temp_r30<3; temp_r30++) { - temp_r31->model[temp_r30] = lbl_2_bss_13E[temp_r24].unk2[temp_r30]; - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - Hu3DParticleCntSet(temp_r31->model[temp_r30], 0); - Hu3DParticleAnimModeSet(temp_r31->model[temp_r30], 0); - Hu3DModelLayerSet(temp_r31->model[temp_r30], 1); - if(arg1 == 1) { - temp_r31->unk10 = fn_2_10A08(); - Hu3DModelAttrReset(temp_r31->unk10, 1); - temp_r28->unk_44 = lbl_2_bss_220[1][temp_r30]; - temp_r27->unk1C = 1.0f; - temp_r31->work[3] = 45; - Hu3DModelTPLvlSet(temp_r31->unk10, temp_r27->unk1C); - } else { - temp_r28->unk_44 = lbl_2_bss_220[0][temp_r30]; - } - } - temp_r27->unk10 = 3; - temp_r27->unk12 = temp_r24; - //I am not table to force arg1 to get reloaded without deleting code or serious temporary register allocation issues - (void)arg1; - switch((temp_r27->unk18 = arg1)) { - case 1: - Hu3DModelPosSet(temp_r31->unk10, arg0->x, arg0->y, lbl_2_bss_60.z+arg0->z); + omObjData *temp_r31; + s32 temp_r30; + ParticleData *temp_r28; + UnkWork10A88 *temp_r27; + s16 temp_r24 = fn_2_108C8(); + if (temp_r24 < 0) { + return NULL; + } + { + s16 temp_r22 = -1; + if (arg1 == 0) { + temp_r22 = 1; + } + temp_r31 = omAddObjEx(HuPrcCurrentGet(), 0x514, 3, 0, temp_r22, NULL); + } - case 0: - temp_r31->trans.x = arg0->x; - temp_r31->trans.y = arg0->y; - temp_r31->trans.z = lbl_2_bss_60.z+arg0->z; - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_11FB4); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); - temp_r28->unk_00 = (temp_r30*4.5f)/3.0f; - temp_r28->unk_02 = 0; - temp_r28->unk_1C = temp_r31; - } - temp_r27->unk14 = 0; - temp_r31->func = fn_2_113AC; - break; - - case 2: - fn_2_A8A4(temp_r31, arg0->x, arg0->y, arg0->z); - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_126C8); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - temp_r28->unk_00 = (temp_r30*2)+(frand() & 0x7); - temp_r28->unk_1C = temp_r31; - } - temp_r31->func = fn_2_11A68; - break; - - case 3: - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_126F4); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], arg0->x, arg0->y, arg0->z); - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - temp_r28->unk_00 = (temp_r30*2)+(frand() & 0x7); - temp_r28->unk_1C = temp_r31; - } - temp_r31->func = fn_2_11B78; - break; - - case 4: - fn_2_A8A4(temp_r31, arg0->x, arg0->y, arg0->z); - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_12B30); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - temp_r28->unk_00 = (temp_r30*2)+(frand() & 0x7); - temp_r28->unk_1C = temp_r31; - } - temp_r31->func = fn_2_11C30; - break; - - case 5: - fn_2_A8A4(temp_r31, arg0->x, arg0->y, arg0->z); - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_1301C); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 1); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - temp_r28->unk_00 = (temp_r30*2)+(frand() & 0x7); - temp_r28->unk_1C = temp_r31; - } - temp_r31->func = fn_2_11D40; - break; - - case 6: - omSetTra(temp_r31, arg0->x, arg0->y, arg0->z); - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_1350C); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 1); - } - temp_r31->func = fn_2_11E44; - break; - - case 7: - omSetTra(temp_r31, arg0->x, arg0->y, arg0->z); - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_13B7C); - Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); - Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); - temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; - Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 1); - } - temp_r31->func = fn_2_11EFC; - break; - - default: - break; - } - return temp_r31; + temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWork10A88), MEMORY_DEFAULT_NUM); + temp_r27 = temp_r31->data; + temp_r27->unk0 = *arg0; + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + temp_r31->model[temp_r30] = lbl_2_bss_13E[temp_r24].unk2[temp_r30]; + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + Hu3DParticleCntSet(temp_r31->model[temp_r30], 0); + Hu3DParticleAnimModeSet(temp_r31->model[temp_r30], 0); + Hu3DModelLayerSet(temp_r31->model[temp_r30], 1); + if (arg1 == 1) { + temp_r31->unk10 = fn_2_10A08(); + Hu3DModelAttrReset(temp_r31->unk10, HU3D_ATTR_DISPOFF); + temp_r28->unk_44 = lbl_2_bss_220[1][temp_r30]; + temp_r27->unk1C = 1.0f; + temp_r31->work[3] = 45; + Hu3DModelTPLvlSet(temp_r31->unk10, temp_r27->unk1C); + } + else { + temp_r28->unk_44 = lbl_2_bss_220[0][temp_r30]; + } + } + temp_r27->unk10 = 3; + temp_r27->unk12 = temp_r24; + temp_r27->unk18 = arg1; + switch (arg1) { + case 1: + Hu3DModelPosSet(temp_r31->unk10, arg0->x, arg0->y, lbl_2_bss_60.z + arg0->z); + + case 0: + temp_r31->trans.x = arg0->x; + temp_r31->trans.y = arg0->y; + temp_r31->trans.z = lbl_2_bss_60.z + arg0->z; + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_11FB4); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); + temp_r28->unk_00 = (temp_r30 * 4.5f) / 3.0f; + temp_r28->unk_02 = 0; + temp_r28->unk_1C = temp_r31; + } + temp_r27->unk14 = 0; + temp_r31->func = fn_2_113AC; + break; + + case 2: + fn_2_A8A4(temp_r31, arg0->x, arg0->y, arg0->z); + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_126C8); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + temp_r28->unk_00 = (temp_r30 * 2) + (frand() & 0x7); + temp_r28->unk_1C = temp_r31; + } + temp_r31->func = fn_2_11A68; + break; + + case 3: + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_126F4); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], arg0->x, arg0->y, arg0->z); + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + temp_r28->unk_00 = (temp_r30 * 2) + (frand() & 0x7); + temp_r28->unk_1C = temp_r31; + } + temp_r31->func = fn_2_11B78; + break; + + case 4: + fn_2_A8A4(temp_r31, arg0->x, arg0->y, arg0->z); + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_12B30); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 0); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + temp_r28->unk_00 = (temp_r30 * 2) + (frand() & 0x7); + temp_r28->unk_1C = temp_r31; + } + temp_r31->func = fn_2_11C30; + break; + + case 5: + fn_2_A8A4(temp_r31, arg0->x, arg0->y, arg0->z); + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_1301C); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 1); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + temp_r28->unk_00 = (temp_r30 * 2) + (frand() & 0x7); + temp_r28->unk_1C = temp_r31; + } + temp_r31->func = fn_2_11D40; + break; + + case 6: + omSetTra(temp_r31, arg0->x, arg0->y, arg0->z); + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_1350C); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 1); + } + temp_r31->func = fn_2_11E44; + break; + + case 7: + omSetTra(temp_r31, arg0->x, arg0->y, arg0->z); + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DParticleHookSet(temp_r31->model[temp_r30], fn_2_13B7C); + Hu3DParticleColSet(temp_r31->model[temp_r30], 255, 255, 255); + Hu3DModelPosSet(temp_r31->model[temp_r30], temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + temp_r28 = Hu3DData[temp_r31->model[temp_r30]].unk_120; + Hu3DParticleBlendModeSet(temp_r31->model[temp_r30], 1); + } + temp_r31->func = fn_2_11EFC; + break; + + default: + break; + } + return temp_r31; } void fn_2_118B0(omObjData *object); @@ -316,653 +314,657 @@ void fn_2_123F8(ModelData *model, ParticleData *particle, Mtx matrix); void fn_2_113AC(omObjData *object) { - UnkWork10A88 *temp_r30; - s32 temp_r29; - M401WorkPlayer *temp_r28; - omObjData *temp_r27; - ParticleData *temp_r25; - s16 temp_r24; - temp_r30 = object->data; - temp_r30->unk0.z += (lbl_2_bss_50*0.5f); - object->trans.x = temp_r30->unk0.x; - object->trans.y = temp_r30->unk0.y; - object->trans.z = lbl_2_bss_60.z+temp_r30->unk0.z; - if(object->unk10 != 0) { - Hu3DModelPosSet(object->unk10, object->trans.x, object->trans.y, object->trans.z); - } - for(temp_r29=1; temp_r29<3; temp_r29++) { - Hu3DModelRotSet(object->model[temp_r29], object->rot.x, object->rot.y, object->rot.z); - Hu3DModelPosSet(object->model[temp_r29], object->trans.x, object->trans.y, object->trans.z); - } - for(temp_r29=0; temp_r29<4; temp_r29++) { - float dist; - temp_r27 = lbl_2_bss_118[temp_r29]; - temp_r28 = temp_r27->data; - if(temp_r28->unk78 != 0) { - continue; - } - dist = VECDistanceXYZ(&object->trans, &temp_r27->trans); - if(dist < 108.00001f) { - Hu3DMotionShiftSet(lbl_2_bss_118[temp_r29]->model[0], lbl_2_bss_118[temp_r29]->motion[6], 0, 10, 0); - HuAudFXPlay(1288); - if(temp_r30->unk18 == 0) { - HuAudFXPlay(9); - temp_r28->unk72++; - omVibrate(temp_r28->unk4, 12, 6, 6); - } else { - HuAudFXPlay(1292); - temp_r28->unk74 = 3; - temp_r28->unk72 += 3; - fn_2_169C(temp_r28->unk4); - omVibrate(temp_r28->unk4, 12, 4, 2); - } - temp_r28->unk84 = 50; - for(temp_r29=0; temp_r29<3; temp_r29++) { - temp_r25 = Hu3DData[object->model[temp_r29]].unk_120; - temp_r25->unk_02 = 0; - Hu3DParticleHookSet(object->model[temp_r29], fn_2_123F8); - } - object->func = fn_2_118B0; - break; - } - } - if(temp_r30->unk0.z > 850.0f) { - temp_r30->unk14 = 1; - } - if(object->unk10) { - if(object->work[3] != 0) { - object->work[3]--; - } else { - temp_r30->unk1C -= 0.033333335f; - if(temp_r30->unk1C < 0) { - temp_r30->unk1C = 0; - } - Hu3DModelTPLvlSet(object->unk10, temp_r30->unk1C); - } - } - if(temp_r30->unk10 == 0) { - if(object->unk10) { - Hu3DModelAttrSet(object->unk10, 1); - } - fn_2_10980(temp_r30->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } - + UnkWork10A88 *temp_r30; + s32 temp_r29; + M401WorkPlayer *temp_r28; + omObjData *temp_r27; + ParticleData *temp_r25; + s16 temp_r24; + temp_r30 = object->data; + temp_r30->unk0.z += (lbl_2_bss_50 * 0.5f); + object->trans.x = temp_r30->unk0.x; + object->trans.y = temp_r30->unk0.y; + object->trans.z = lbl_2_bss_60.z + temp_r30->unk0.z; + if (object->unk10 != 0) { + Hu3DModelPosSet(object->unk10, object->trans.x, object->trans.y, object->trans.z); + } + for (temp_r29 = 1; temp_r29 < 3; temp_r29++) { + Hu3DModelRotSet(object->model[temp_r29], object->rot.x, object->rot.y, object->rot.z); + Hu3DModelPosSet(object->model[temp_r29], object->trans.x, object->trans.y, object->trans.z); + } + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + float dist; + temp_r27 = lbl_2_bss_118[temp_r29]; + temp_r28 = temp_r27->data; + if (temp_r28->unk78 != 0) { + continue; + } + dist = VECDistanceXYZ(&object->trans, &temp_r27->trans); + if (dist < 108.00001f) { + Hu3DMotionShiftSet(lbl_2_bss_118[temp_r29]->model[0], lbl_2_bss_118[temp_r29]->motion[6], 0, 10, HU3D_MOTATTR_NONE); + HuAudFXPlay(1288); + if (temp_r30->unk18 == 0) { + HuAudFXPlay(9); + temp_r28->unk72++; + omVibrate(temp_r28->unk4, 12, 6, 6); + } + else { + HuAudFXPlay(1292); + temp_r28->unk74 = 3; + temp_r28->unk72 += 3; + fn_2_169C(temp_r28->unk4); + omVibrate(temp_r28->unk4, 12, 4, 2); + } + temp_r28->unk84 = 50; + for (temp_r29 = 0; temp_r29 < 3; temp_r29++) { + temp_r25 = Hu3DData[object->model[temp_r29]].unk_120; + temp_r25->unk_02 = 0; + Hu3DParticleHookSet(object->model[temp_r29], fn_2_123F8); + } + object->func = fn_2_118B0; + break; + } + } + if (temp_r30->unk0.z > 850.0f) { + temp_r30->unk14 = 1; + } + if (object->unk10) { + if (object->work[3] != 0) { + object->work[3]--; + } + else { + temp_r30->unk1C -= 0.033333335f; + if (temp_r30->unk1C < 0) { + temp_r30->unk1C = 0; + } + Hu3DModelTPLvlSet(object->unk10, temp_r30->unk1C); + } + } + if (temp_r30->unk10 == 0) { + if (object->unk10) { + Hu3DModelAttrSet(object->unk10, HU3D_ATTR_DISPOFF); + } + fn_2_10980(temp_r30->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_118B0(omObjData *object) { - UnkWork10A88 *temp_r30; - s32 temp_r29; - - temp_r30 = object->data; - temp_r30->unk0.z += (lbl_2_bss_50*0.5f); - object->trans.x = temp_r30->unk0.x; - object->trans.y = temp_r30->unk0.y; - object->trans.z = lbl_2_bss_60.z+temp_r30->unk0.z; - for(temp_r29=1; temp_r29<3; temp_r29++) { - Hu3DModelPosSet(object->model[temp_r29], object->trans.x, object->trans.y, object->trans.z); - } - if(object->unk10 != 0) { - Hu3DModelPosSet(object->unk10, object->trans.x, object->trans.y, object->trans.z); - temp_r30->unk1C -= 0.033333335f; - if(temp_r30->unk1C < 0) { - temp_r30->unk1C = 0; - } - Hu3DModelTPLvlSet(object->unk10, temp_r30->unk1C); - } - - - if(temp_r30->unk10 == 0) { - if(object->unk10) { - Hu3DModelAttrSet(object->unk10, 1); - } - fn_2_10980(temp_r30->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + UnkWork10A88 *temp_r30; + s32 temp_r29; + + temp_r30 = object->data; + temp_r30->unk0.z += (lbl_2_bss_50 * 0.5f); + object->trans.x = temp_r30->unk0.x; + object->trans.y = temp_r30->unk0.y; + object->trans.z = lbl_2_bss_60.z + temp_r30->unk0.z; + for (temp_r29 = 1; temp_r29 < 3; temp_r29++) { + Hu3DModelPosSet(object->model[temp_r29], object->trans.x, object->trans.y, object->trans.z); + } + if (object->unk10 != 0) { + Hu3DModelPosSet(object->unk10, object->trans.x, object->trans.y, object->trans.z); + temp_r30->unk1C -= 0.033333335f; + if (temp_r30->unk1C < 0) { + temp_r30->unk1C = 0; + } + Hu3DModelTPLvlSet(object->unk10, temp_r30->unk1C); + } + + if (temp_r30->unk10 == 0) { + if (object->unk10) { + Hu3DModelAttrSet(object->unk10, HU3D_ATTR_DISPOFF); + } + fn_2_10980(temp_r30->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_11A68(omObjData *object) { - s32 temp_r30; - UnkWork10A88 *temp_r29; - UnkWork10A88 *sp8; - temp_r29 = object->data; - sp8 = temp_r29->unkC->data; - omSetTra(object, 0, 0, 0); - for(temp_r30=1; temp_r30<3; temp_r30++) { - Hu3DModelPosSet(object->model[temp_r30], object->trans.x, object->trans.y, object->trans.z); - } - if(object->work[0] == 1) { - fn_2_10980(temp_r29->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + s32 temp_r30; + UnkWork10A88 *temp_r29; + UnkWork10A88 *sp8; + temp_r29 = object->data; + sp8 = temp_r29->unkC->data; + omSetTra(object, 0, 0, 0); + for (temp_r30 = 1; temp_r30 < 3; temp_r30++) { + Hu3DModelPosSet(object->model[temp_r30], object->trans.x, object->trans.y, object->trans.z); + } + if (object->work[0] == 1) { + fn_2_10980(temp_r29->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } - void fn_2_11B78(omObjData *object) { - UnkWork10A88 *temp_r29; - temp_r29 = object->data; - if(object->work[0] == 1) { - fn_2_10980(temp_r29->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + UnkWork10A88 *temp_r29; + temp_r29 = object->data; + if (object->work[0] == 1) { + fn_2_10980(temp_r29->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_11C30(omObjData *object) { - s32 temp_r30; - UnkWork10A88 *temp_r29; - UnkWork10A88 *sp8; - temp_r29 = object->data; - sp8 = temp_r29->unkC->data; - omSetTra(object, 0, 0, 0); - for(temp_r30=1; temp_r30<3; temp_r30++) { - Hu3DModelPosSet(object->model[temp_r30], object->trans.x, object->trans.y, object->trans.z); - } - if(object->work[1] == 1) { - fn_2_10980(temp_r29->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + s32 temp_r30; + UnkWork10A88 *temp_r29; + UnkWork10A88 *sp8; + temp_r29 = object->data; + sp8 = temp_r29->unkC->data; + omSetTra(object, 0, 0, 0); + for (temp_r30 = 1; temp_r30 < 3; temp_r30++) { + Hu3DModelPosSet(object->model[temp_r30], object->trans.x, object->trans.y, object->trans.z); + } + if (object->work[1] == 1) { + fn_2_10980(temp_r29->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_11D40(omObjData *object) { - s32 temp_r30; - UnkWork10A88 *temp_r29; - UnkWork10A88 *sp8; - temp_r29 = object->data; - sp8 = temp_r29->unkC->data; - omSetTra(object, temp_r29->unkC->trans.x, temp_r29->unkC->trans.y, temp_r29->unkC->trans.z); - for(temp_r30=1; temp_r30<3; temp_r30++) { - Hu3DModelPosSet(object->model[temp_r30], object->trans.x, object->trans.y, object->trans.z); - } - if(object->work[1] == 1) { - fn_2_10980(temp_r29->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + s32 temp_r30; + UnkWork10A88 *temp_r29; + UnkWork10A88 *sp8; + temp_r29 = object->data; + sp8 = temp_r29->unkC->data; + omSetTra(object, temp_r29->unkC->trans.x, temp_r29->unkC->trans.y, temp_r29->unkC->trans.z); + for (temp_r30 = 1; temp_r30 < 3; temp_r30++) { + Hu3DModelPosSet(object->model[temp_r30], object->trans.x, object->trans.y, object->trans.z); + } + if (object->work[1] == 1) { + fn_2_10980(temp_r29->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_11E44(omObjData *object) { - UnkWork10A88 *temp_r29; - temp_r29 = object->data; - if(object->work[0] == 1) { - fn_2_10980(temp_r29->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + UnkWork10A88 *temp_r29; + temp_r29 = object->data; + if (object->work[0] == 1) { + fn_2_10980(temp_r29->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_11EFC(omObjData *object) { - UnkWork10A88 *temp_r29; - temp_r29 = object->data; - if(object->work[0] == 1) { - fn_2_10980(temp_r29->unk12); - omDelObjEx(HuPrcCurrentGet(), object); - } + UnkWork10A88 *temp_r29; + temp_r29 = object->data; + if (object->work[0] == 1) { + fn_2_10980(temp_r29->unk12); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_11FB4(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - UnkWork10A88 *temp_r28; - s32 temp_r27; - temp_r28 = ((omObjData *)(particle->unk_1C))->data; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - temp_f29 = 360.0f/(particle->unk_30/2); - temp_f31 = particle->unk_00; - for(temp_r29=0; temp_r29unk_30/2; temp_r29++, temp_r31++) { - temp_f30 = (0.1f*(rand8() % 50))+50; - temp_r31->unk2C = (0.1f*(rand8() % 41))+8.0f; - temp_r31->unk08.x = temp_f31; - temp_r31->unk08.y = temp_f30; - temp_r31->unk08.z = 0; - temp_r31->unk14.x = (10.0f/255.0f)*((u8)frand()); - temp_r31->unk40.a = 180; - temp_f31 += temp_f29; - temp_r31->unk34.z = 0; - } - for(temp_r29=0; temp_r29unk_30/2; temp_r29++, temp_r31++) { - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - } - temp_r31 = particle->unk_48; - temp_r27 = 0; - for(temp_r29=0; temp_r29unk_30/2; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a != 0) { - temp_r27++; - temp_f30 = (6.0*sind(temp_r31->unk08.z))+temp_r31->unk08.y; - temp_r31->unk34.x = temp_f30*cosd(temp_r31->unk08.x); - temp_r31->unk34.y = temp_f30*sind(temp_r31->unk08.x); - temp_r31->unk08.z += temp_r31->unk14.x; - if(temp_r31->unk08.z >= 360.0f) { - temp_r31->unk08.z -= 360.0f; - } - temp_f31 = temp_r31->unk40.a; - if(temp_r28->unk14) { - temp_f31 -= 3.0f; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - } - } - temp_r31->unk40.a = temp_f31; - } - } - if(!temp_r27) { - temp_r28->unk10--; - } + float temp_f31; + float temp_f30; + float temp_f29; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + UnkWork10A88 *temp_r28; + s32 temp_r27; + temp_r28 = ((omObjData *)(particle->unk_1C))->data; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + temp_f29 = 360.0f / (particle->unk_30 / 2); + temp_f31 = particle->unk_00; + for (temp_r29 = 0; temp_r29 < particle->unk_30 / 2; temp_r29++, temp_r31++) { + temp_f30 = (0.1f * (rand8() % 50)) + 50; + temp_r31->unk2C = (0.1f * (rand8() % 41)) + 8.0f; + temp_r31->unk08.x = temp_f31; + temp_r31->unk08.y = temp_f30; + temp_r31->unk08.z = 0; + temp_r31->unk14.x = (10.0f / 255.0f) * ((u8)frand()); + temp_r31->unk40.a = 180; + temp_f31 += temp_f29; + temp_r31->unk34.z = 0; + } + for (temp_r29 = 0; temp_r29 < particle->unk_30 / 2; temp_r29++, temp_r31++) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + temp_r31 = particle->unk_48; + temp_r27 = 0; + for (temp_r29 = 0; temp_r29 < particle->unk_30 / 2; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a != 0) { + temp_r27++; + temp_f30 = (6.0 * sind(temp_r31->unk08.z)) + temp_r31->unk08.y; + temp_r31->unk34.x = temp_f30 * cosd(temp_r31->unk08.x); + temp_r31->unk34.y = temp_f30 * sind(temp_r31->unk08.x); + temp_r31->unk08.z += temp_r31->unk14.x; + if (temp_r31->unk08.z >= 360.0f) { + temp_r31->unk08.z -= 360.0f; + } + temp_f31 = temp_r31->unk40.a; + if (temp_r28->unk14) { + temp_f31 -= 3.0f; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + } + } + temp_r31->unk40.a = temp_f31; + } + } + if (!temp_r27) { + temp_r28->unk10--; + } } void fn_2_123F8(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - UnkWork10A88 *temp_r27; - if(!particle->unk_02) { - particle->unk_02 = 1; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30/2; temp_r29++, temp_r31++) { - temp_r31->unk08.x = temp_r31->unk34.x; - temp_r31->unk14.x = 0; - temp_r31->unk14.y = 5.0f+((35.0f/255.0f)*((u8)frand())); - temp_r31->unk14.z = 8.0f+((8.0f/255.0f)*((u8)frand())); - temp_r31->unk24 = 3.0f+((5.0f/255.0f)*((u8)frand())); - } - } - temp_r31 = particle->unk_48; - temp_r28 = 0; - for(temp_r29=0; temp_r29unk_30/2; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a != 0) { - temp_r28++; - temp_r31->unk34.x = temp_r31->unk08.x+(temp_r31->unk14.z*sind(temp_r31->unk14.x)); - temp_r31->unk14.x += temp_r31->unk14.y; - if(temp_r31->unk14.x >= 360.0f) { - temp_r31->unk14.x -= 360.0f; - } - temp_r31->unk34.y += temp_r31->unk24; - temp_f31 = temp_r31->unk40.a; - temp_f31 -= 3.0f; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - } - temp_r31->unk40.a = temp_f31; - } - } - if(temp_r28 == 0) { - UnkWork10A88 *temp_r27 = ((omObjData *)(particle->unk_1C))->data; - temp_r27->unk10--; - } + float temp_f31; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + UnkWork10A88 *temp_r27; + if (!particle->unk_02) { + particle->unk_02 = 1; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30 / 2; temp_r29++, temp_r31++) { + temp_r31->unk08.x = temp_r31->unk34.x; + temp_r31->unk14.x = 0; + temp_r31->unk14.y = 5.0f + ((35.0f / 255.0f) * ((u8)frand())); + temp_r31->unk14.z = 8.0f + ((8.0f / 255.0f) * ((u8)frand())); + temp_r31->unk24 = 3.0f + ((5.0f / 255.0f) * ((u8)frand())); + } + } + temp_r31 = particle->unk_48; + temp_r28 = 0; + for (temp_r29 = 0; temp_r29 < particle->unk_30 / 2; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a != 0) { + temp_r28++; + temp_r31->unk34.x = temp_r31->unk08.x + (temp_r31->unk14.z * sind(temp_r31->unk14.x)); + temp_r31->unk14.x += temp_r31->unk14.y; + if (temp_r31->unk14.x >= 360.0f) { + temp_r31->unk14.x -= 360.0f; + } + temp_r31->unk34.y += temp_r31->unk24; + temp_f31 = temp_r31->unk40.a; + temp_f31 -= 3.0f; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + } + temp_r31->unk40.a = temp_f31; + } + } + if (temp_r28 == 0) { + UnkWork10A88 *temp_r27 = ((omObjData *)(particle->unk_1C))->data; + temp_r27->unk10--; + } } -//Here exclusively to match fn_2_126C8 +// Here exclusively to match fn_2_126C8 static inline void DummyInline(s32 arg0) { - s32 temp1, temp2, temp3, temp4, temp5; - if(arg0 != 0) { - temp1 = 1; - temp2 = temp1*2; - temp3 = temp2*3; - temp4 = temp3*4; - temp5 = temp4*5; - temp5 = temp5/2; - } + s32 temp1, temp2, temp3, temp4, temp5; + if (arg0 != 0) { + temp1 = 1; + temp2 = temp1 * 2; + temp3 = temp2 * 3; + temp4 = temp3 * 4; + temp5 = temp4 * 5; + temp5 = temp5 / 2; + } } void fn_2_126C8(ModelData *model, ParticleData *particle, Mtx matrix) { - DummyInline(0); + DummyInline(0); } void fn_2_126F4(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk40.a = 0; - temp_r31->unk2C = 0; - } - particle->unk_00 = 0; - } - if(particle->unk_00 == 0) { - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk40.a == 0) { - break; - } - } - if(temp_r28 == particle->unk_30) { - continue; - } - temp_r31->unk08.x = -50.0f+(0.3921569f*((u8)frand())); - temp_r31->unk08.y = 0.058823533f*((u8)frand()); - temp_r31->unk14.x = (90.0f/255.0f)*((u8)frand()); - temp_r31->unk14.y = 5.0f+(0.098039225f*((u8)frand())); - temp_r31->unk14.z = (float)(frand() % 10) + 8.0f; - temp_r31->unk34.z = -5.0f+((11.0f/255.0f)*((u8)frand())); - temp_r31->unk34.y = (float)(frand() % 31) + -5.0f; - temp_r31->unk2C = temp_r31->unk08.y+35.0f; - temp_r31->unk40.a = 210; - temp_r31->unk08.y = (0.2*temp_r31->unk08.y)+5.0; - particle->unk_00 = (frand()%10)+10; - } - } else { - particle->unk_00--; - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a == 0) { - continue; - } - temp_r31->unk34.x = (temp_r31->unk14.z*sind(temp_r31->unk14.x))+temp_r31->unk08.x; - temp_r31->unk14.x += temp_r31->unk14.y; - if(temp_r31->unk14.x >= 360.0f) { - temp_r31->unk14.x -= 360.0f; - } - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk40.a--; - } + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk40.a = 0; + temp_r31->unk2C = 0; + } + particle->unk_00 = 0; + } + if (particle->unk_00 == 0) { + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk40.a == 0) { + break; + } + } + if (temp_r28 == particle->unk_30) { + continue; + } + temp_r31->unk08.x = -50.0f + (0.3921569f * ((u8)frand())); + temp_r31->unk08.y = 0.058823533f * ((u8)frand()); + temp_r31->unk14.x = (90.0f / 255.0f) * ((u8)frand()); + temp_r31->unk14.y = 5.0f + (0.098039225f * ((u8)frand())); + temp_r31->unk14.z = (float)(frand() % 10) + 8.0f; + temp_r31->unk34.z = -5.0f + ((11.0f / 255.0f) * ((u8)frand())); + temp_r31->unk34.y = (float)(frand() % 31) + -5.0f; + temp_r31->unk2C = temp_r31->unk08.y + 35.0f; + temp_r31->unk40.a = 210; + temp_r31->unk08.y = (0.2 * temp_r31->unk08.y) + 5.0; + particle->unk_00 = (frand() % 10) + 10; + } + } + else { + particle->unk_00--; + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a == 0) { + continue; + } + temp_r31->unk34.x = (temp_r31->unk14.z * sind(temp_r31->unk14.x)) + temp_r31->unk08.x; + temp_r31->unk14.x += temp_r31->unk14.y; + if (temp_r31->unk14.x >= 360.0f) { + temp_r31->unk14.x -= 360.0f; + } + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk40.a--; + } } void fn_2_12B30(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - M401WorkPlayer *temp_r28; - omObjData *temp_r27; - s32 temp_r26; - s32 temp_r25; - UnkWork10A88 *temp_r24; - temp_r27 = particle->unk_1C; - temp_r24 = ((omObjData *)(particle->unk_1C))->data; - temp_r28 = temp_r24->unkC->data; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk40.a = 0; - temp_r31->unk2C = 0; - temp_r31->unk20 = 0; - } - particle->unk_00 = 0; - } - if(particle->unk_00 == 0 && temp_r27->work[0] == 0) { - for(temp_r29=0; temp_r29<10; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r26=0; temp_r26unk_30; temp_r26++, temp_r31++) { - if(temp_r31->unk20 == 0) { - break; - } - } - if(temp_r26 == particle->unk_30) { - continue; - } - temp_r31->unk08.x = (((40.0f/255.0f)*((u8)frand()))+(temp_r28->unk18.x-20.0f)); - temp_r31->unk08.y = (frand() % 5)+3; - temp_r31->unk14.x = ((90.0f/255.0f)*((u8)frand())); - temp_r31->unk14.y = 5.0f+((45.0f/255.0f)*((u8)frand())); - temp_r31->unk14.z = 2.0f+(0.011764707f*((u8)frand())); - temp_r31->unk40.a = 180; - temp_r31->unk34.z = ((0.121568635f*((u8)frand()))+(temp_r28->unk18.z+70.0f)); - temp_r31->unk34.y = ((0.20000002f*((u8)frand()))+(temp_r28->unk18.y-25.0f)); - particle->unk_00 = (frand()%6)+5; - temp_r31->unk20 = 1; - temp_r31->unk2C = 11; - } - } else { - particle->unk_00--; - } - temp_r31 = particle->unk_48; - temp_r25 = 0; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a != 0) { - float temp_f31; - temp_r31->unk34.x = (temp_r31->unk14.z*sind(temp_r31->unk14.x))+temp_r31->unk08.x; - temp_r31->unk14.x += temp_r31->unk14.y; - if(temp_r31->unk14.x >= 360.0f) { - temp_r31->unk14.x -= 360.0f; - } - temp_r31->unk34.y += 3.0f; - temp_f31 = temp_r31->unk40.a; - temp_f31 -= temp_r31->unk08.y; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - temp_r31->unk20 = 0; - } - - temp_r31->unk40.a = temp_f31; - temp_r25++; - } - } - if(temp_r25 == 0 && temp_r27->work[0] == 1) { - temp_r27->work[1] = 1; - } + HsfanimStruct01 *temp_r31; + s32 temp_r29; + M401WorkPlayer *temp_r28; + omObjData *temp_r27; + s32 temp_r26; + s32 temp_r25; + UnkWork10A88 *temp_r24; + temp_r27 = particle->unk_1C; + temp_r24 = ((omObjData *)(particle->unk_1C))->data; + temp_r28 = temp_r24->unkC->data; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk40.a = 0; + temp_r31->unk2C = 0; + temp_r31->unk20 = 0; + } + particle->unk_00 = 0; + } + if (particle->unk_00 == 0 && temp_r27->work[0] == 0) { + for (temp_r29 = 0; temp_r29 < 10; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r26 = 0; temp_r26 < particle->unk_30; temp_r26++, temp_r31++) { + if (temp_r31->unk20 == 0) { + break; + } + } + if (temp_r26 == particle->unk_30) { + continue; + } + temp_r31->unk08.x = (((40.0f / 255.0f) * ((u8)frand())) + (temp_r28->unk18.x - 20.0f)); + temp_r31->unk08.y = (frand() % 5) + 3; + temp_r31->unk14.x = ((90.0f / 255.0f) * ((u8)frand())); + temp_r31->unk14.y = 5.0f + ((45.0f / 255.0f) * ((u8)frand())); + temp_r31->unk14.z = 2.0f + (0.011764707f * ((u8)frand())); + temp_r31->unk40.a = 180; + temp_r31->unk34.z = ((0.121568635f * ((u8)frand())) + (temp_r28->unk18.z + 70.0f)); + temp_r31->unk34.y = ((0.20000002f * ((u8)frand())) + (temp_r28->unk18.y - 25.0f)); + particle->unk_00 = (frand() % 6) + 5; + temp_r31->unk20 = 1; + temp_r31->unk2C = 11; + } + } + else { + particle->unk_00--; + } + temp_r31 = particle->unk_48; + temp_r25 = 0; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a != 0) { + float temp_f31; + temp_r31->unk34.x = (temp_r31->unk14.z * sind(temp_r31->unk14.x)) + temp_r31->unk08.x; + temp_r31->unk14.x += temp_r31->unk14.y; + if (temp_r31->unk14.x >= 360.0f) { + temp_r31->unk14.x -= 360.0f; + } + temp_r31->unk34.y += 3.0f; + temp_f31 = temp_r31->unk40.a; + temp_f31 -= temp_r31->unk08.y; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + temp_r31->unk20 = 0; + } + + temp_r31->unk40.a = temp_f31; + temp_r25++; + } + } + if (temp_r25 == 0 && temp_r27->work[0] == 1) { + temp_r27->work[1] = 1; + } } void fn_2_1301C(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - M401WorkPlayer *temp_r28; - omObjData *temp_r27; - s32 temp_r26; - s32 temp_r25; - UnkWork10A88 *temp_r24; - temp_r27 = particle->unk_1C; - temp_r24 = (temp_r27)->data; - temp_r28 = temp_r24->unkC->data; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk40.a = 0; - temp_r31->unk2C = 0; - temp_r31->unk20 = 0; - } - particle->unk_00 = 0; - } - if(particle->unk_00 == 0 && temp_r27->work[0] == 0) { - for(temp_r29=0; temp_r29<10; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r26=0; temp_r26unk_30; temp_r26++, temp_r31++) { - if(temp_r31->unk20 == 0) { - break; - } - } - if(temp_r26 == particle->unk_30) { - continue; - } - temp_r31->unk08.x = (((80.0f/255.0f)*((u8)frand()))+(-40.0f)); - temp_r31->unk08.y = (frand() % 10)+7; - temp_r31->unk14.x = ((90.0f/255.0f)*((u8)frand())); - temp_r31->unk14.y = 5.0f+((45.0f/255.0f)*((u8)frand())); - temp_r31->unk14.z = 2.0f+(frand() % 3); - temp_r31->unk40.a = 180; - temp_r31->unk34.z = ((0.121568635f*((u8)frand()))+(85.0f)); - temp_r31->unk34.y = ((0.2392157f*((u8)frand()))+(-30.0f)); - particle->unk_00 = (frand()%3)+3; - temp_r31->unk20 = 1; - temp_r31->unk2C = 11; - } - } else { - particle->unk_00--; - } - temp_r31 = particle->unk_48; - temp_r25 = 0; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a != 0) { - float temp_f31; - temp_r31->unk34.x = (temp_r31->unk14.z*sind(temp_r31->unk14.x))+temp_r31->unk08.x; - temp_r31->unk14.x += temp_r31->unk14.y; - if(temp_r31->unk14.x >= 360.0f) { - temp_r31->unk14.x -= 360.0f; - } - temp_r31->unk34.y += 3.0f; - temp_r31->unk34.z -= 1.0f; - temp_f31 = temp_r31->unk40.a; - temp_f31 -= temp_r31->unk08.y; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - temp_r31->unk20 = 0; - } - - temp_r31->unk40.a = temp_f31; - temp_r25++; - } - } - if(temp_r25 == 0 && temp_r27->work[0] == 1) { - temp_r27->work[1] = 1; - } + HsfanimStruct01 *temp_r31; + s32 temp_r29; + M401WorkPlayer *temp_r28; + omObjData *temp_r27; + s32 temp_r26; + s32 temp_r25; + UnkWork10A88 *temp_r24; + temp_r27 = particle->unk_1C; + temp_r24 = (temp_r27)->data; + temp_r28 = temp_r24->unkC->data; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk40.a = 0; + temp_r31->unk2C = 0; + temp_r31->unk20 = 0; + } + particle->unk_00 = 0; + } + if (particle->unk_00 == 0 && temp_r27->work[0] == 0) { + for (temp_r29 = 0; temp_r29 < 10; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r26 = 0; temp_r26 < particle->unk_30; temp_r26++, temp_r31++) { + if (temp_r31->unk20 == 0) { + break; + } + } + if (temp_r26 == particle->unk_30) { + continue; + } + temp_r31->unk08.x = (((80.0f / 255.0f) * ((u8)frand())) + (-40.0f)); + temp_r31->unk08.y = (frand() % 10) + 7; + temp_r31->unk14.x = ((90.0f / 255.0f) * ((u8)frand())); + temp_r31->unk14.y = 5.0f + ((45.0f / 255.0f) * ((u8)frand())); + temp_r31->unk14.z = 2.0f + (frand() % 3); + temp_r31->unk40.a = 180; + temp_r31->unk34.z = ((0.121568635f * ((u8)frand())) + (85.0f)); + temp_r31->unk34.y = ((0.2392157f * ((u8)frand())) + (-30.0f)); + particle->unk_00 = (frand() % 3) + 3; + temp_r31->unk20 = 1; + temp_r31->unk2C = 11; + } + } + else { + particle->unk_00--; + } + temp_r31 = particle->unk_48; + temp_r25 = 0; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a != 0) { + float temp_f31; + temp_r31->unk34.x = (temp_r31->unk14.z * sind(temp_r31->unk14.x)) + temp_r31->unk08.x; + temp_r31->unk14.x += temp_r31->unk14.y; + if (temp_r31->unk14.x >= 360.0f) { + temp_r31->unk14.x -= 360.0f; + } + temp_r31->unk34.y += 3.0f; + temp_r31->unk34.z -= 1.0f; + temp_f31 = temp_r31->unk40.a; + temp_f31 -= temp_r31->unk08.y; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + temp_r31->unk20 = 0; + } + + temp_r31->unk40.a = temp_f31; + temp_r25++; + } + } + if (temp_r25 == 0 && temp_r27->work[0] == 1) { + temp_r27->work[1] = 1; + } } void fn_2_1350C(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk2C = 0; - } - particle->unk_1C = (void *)1; - particle->unk_02 = 0; - particle->unk_00 = 0; - } - if(particle->unk_00 == 0) { - for(temp_r29=0; temp_r29<16; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk2C == 0) { - break; - } - } - if(temp_r28 == particle->unk_30) { - continue; - } - temp_f30 = (360.0f/255.0f)*((u8)frand()); - temp_r31->unk20 = 45*sind(temp_f30); - temp_r31->unk28 = 45*cosd(temp_f30); - temp_r31->unk24 = 0; - temp_f28 = 0.098039225f*((u8)frand())+50.0f; - temp_f29 = (2.0f/255.0f)*((u8)frand())+2.5f; - temp_r31->unk08.x = temp_f29*sind(temp_f30)*cosd(temp_f28); - temp_r31->unk08.y = 0.8f*(temp_f29*sind(temp_f28)); - temp_r31->unk08.z = temp_f29*cosd(temp_f30)*cosd(temp_f28); - temp_r31->unk14.x = 1; - temp_r31->unk14.y = 255; - temp_r31->unk2C = (4.0f/255.0f)*((u8)frand())+3.0f; - temp_r31->unk40.r = (155.0f/255.0f)*((u8)frand())+100.0f; - temp_r31->unk40.g = 0.21568629f*((u8)frand())+200.0f; - temp_r31->unk40.b = 255; - temp_r31->unk40.a = temp_r31->unk14.y; - } - particle->unk_00 = 0.058823533f*((u8)frand())+30.0f; - } else { - particle->unk_00--; - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk2C != 0) { - temp_f31 = temp_r31->unk14.x; - temp_r31->unk34.x = (temp_r31->unk08.x*temp_f31)+temp_r31->unk20; - temp_r31->unk34.z = (temp_r31->unk08.z*temp_f31)+temp_r31->unk28; - temp_r31->unk34.y = ((temp_r31->unk08.y*temp_f31)+temp_r31->unk24)-(0.2*temp_f31*temp_f31); - temp_r31->unk14.y -= 3.5f; - temp_r31->unk40.a = temp_r31->unk14.y; - if(temp_r31->unk2C < 0 || temp_r31->unk14.y < 10.0f || temp_r31->unk34.y <= 0.0f) { - temp_r31->unk2C = 0; - particle->unk_02++; - } - - temp_r31->unk14.x += 0.7f; - } - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk2C = 0; + } + particle->unk_1C = (void *)1; + particle->unk_02 = 0; + particle->unk_00 = 0; + } + if (particle->unk_00 == 0) { + for (temp_r29 = 0; temp_r29 < 16; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk2C == 0) { + break; + } + } + if (temp_r28 == particle->unk_30) { + continue; + } + temp_f30 = (360.0f / 255.0f) * ((u8)frand()); + temp_r31->unk20 = 45 * sind(temp_f30); + temp_r31->unk28 = 45 * cosd(temp_f30); + temp_r31->unk24 = 0; + temp_f28 = 0.098039225f * ((u8)frand()) + 50.0f; + temp_f29 = (2.0f / 255.0f) * ((u8)frand()) + 2.5f; + temp_r31->unk08.x = temp_f29 * sind(temp_f30) * cosd(temp_f28); + temp_r31->unk08.y = 0.8f * (temp_f29 * sind(temp_f28)); + temp_r31->unk08.z = temp_f29 * cosd(temp_f30) * cosd(temp_f28); + temp_r31->unk14.x = 1; + temp_r31->unk14.y = 255; + temp_r31->unk2C = (4.0f / 255.0f) * ((u8)frand()) + 3.0f; + temp_r31->unk40.r = (155.0f / 255.0f) * ((u8)frand()) + 100.0f; + temp_r31->unk40.g = 0.21568629f * ((u8)frand()) + 200.0f; + temp_r31->unk40.b = 255; + temp_r31->unk40.a = temp_r31->unk14.y; + } + particle->unk_00 = 0.058823533f * ((u8)frand()) + 30.0f; + } + else { + particle->unk_00--; + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk2C != 0) { + temp_f31 = temp_r31->unk14.x; + temp_r31->unk34.x = (temp_r31->unk08.x * temp_f31) + temp_r31->unk20; + temp_r31->unk34.z = (temp_r31->unk08.z * temp_f31) + temp_r31->unk28; + temp_r31->unk34.y = ((temp_r31->unk08.y * temp_f31) + temp_r31->unk24) - (0.2 * temp_f31 * temp_f31); + temp_r31->unk14.y -= 3.5f; + temp_r31->unk40.a = temp_r31->unk14.y; + if (temp_r31->unk2C < 0 || temp_r31->unk14.y < 10.0f || temp_r31->unk34.y <= 0.0f) { + temp_r31->unk2C = 0; + particle->unk_02++; + } + + temp_r31->unk14.x += 0.7f; + } + } } void fn_2_13B7C(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk2C = 0; - } - particle->unk_1C = (void *)1; - particle->unk_02 = 0; - particle->unk_00 = 0; - } - if(particle->unk_1C) { - for(temp_r29=0; temp_r29<20; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk2C == 0) { - break; - } - } - if(temp_r28 != particle->unk_30) { - temp_f30 = (360.0f/255.0f)*((u8)frand()); - temp_r31->unk20 = 40*sind(temp_f30); - temp_r31->unk28 = 40*cosd(temp_f30); - temp_r31->unk24 = 0; - temp_f28 = (20.0f/255.0f)*((u8)frand())+70.0f; - temp_f29 = (4.0f/255.0f)*((u8)frand())+5.0f; - temp_r31->unk08.x = temp_f29*sind(temp_f30)*cosd(temp_f28); - temp_r31->unk08.y = temp_f29*sind(temp_f28); - temp_r31->unk08.z = temp_f29*cosd(temp_f30)*cosd(temp_f28); - temp_r31->unk14.x = 1; - temp_r31->unk14.y = 255; - temp_r31->unk2C = (4.0f/255.0f)*((u8)frand())+5.0f; - temp_r31->unk40.r = (155.0f/255.0f)*((u8)frand())+100.0f; - temp_r31->unk40.g = 0.21568629f*((u8)frand())+200.0f; - temp_r31->unk40.b = 255; - temp_r31->unk40.a = temp_r31->unk14.y; - } else { - particle->unk_1C = NULL; - break; - } - } - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk2C != 0) { - temp_f31 = temp_r31->unk14.x; - temp_r31->unk34.x = (temp_r31->unk08.x*temp_f31)+temp_r31->unk20; - temp_r31->unk34.z = (temp_r31->unk08.z*temp_f31)+temp_r31->unk28; - temp_r31->unk34.y = ((temp_r31->unk08.y*temp_f31)+temp_r31->unk24)-(0.2*temp_f31*temp_f31); - temp_r31->unk14.y -= 3.5f; - temp_r31->unk40.a = temp_r31->unk14.y; - if(temp_r31->unk2C < 0 || temp_r31->unk14.y < 10.0f || temp_r31->unk34.y <= 0.0f) { - temp_r31->unk2C = 0; - particle->unk_02++; - } - temp_r31->unk14.x += 1.0f; - } - } - if(particle->unk_02 >= particle->unk_30 && particle->unk_1C == NULL) { - particle->unk_00 = 1; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk2C = 0; + } + particle->unk_1C = (void *)1; + particle->unk_02 = 0; + particle->unk_00 = 0; + } + if (particle->unk_1C) { + for (temp_r29 = 0; temp_r29 < 20; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk2C == 0) { + break; + } + } + if (temp_r28 != particle->unk_30) { + temp_f30 = (360.0f / 255.0f) * ((u8)frand()); + temp_r31->unk20 = 40 * sind(temp_f30); + temp_r31->unk28 = 40 * cosd(temp_f30); + temp_r31->unk24 = 0; + temp_f28 = (20.0f / 255.0f) * ((u8)frand()) + 70.0f; + temp_f29 = (4.0f / 255.0f) * ((u8)frand()) + 5.0f; + temp_r31->unk08.x = temp_f29 * sind(temp_f30) * cosd(temp_f28); + temp_r31->unk08.y = temp_f29 * sind(temp_f28); + temp_r31->unk08.z = temp_f29 * cosd(temp_f30) * cosd(temp_f28); + temp_r31->unk14.x = 1; + temp_r31->unk14.y = 255; + temp_r31->unk2C = (4.0f / 255.0f) * ((u8)frand()) + 5.0f; + temp_r31->unk40.r = (155.0f / 255.0f) * ((u8)frand()) + 100.0f; + temp_r31->unk40.g = 0.21568629f * ((u8)frand()) + 200.0f; + temp_r31->unk40.b = 255; + temp_r31->unk40.a = temp_r31->unk14.y; + } + else { + particle->unk_1C = NULL; + break; + } + } + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk2C != 0) { + temp_f31 = temp_r31->unk14.x; + temp_r31->unk34.x = (temp_r31->unk08.x * temp_f31) + temp_r31->unk20; + temp_r31->unk34.z = (temp_r31->unk08.z * temp_f31) + temp_r31->unk28; + temp_r31->unk34.y = ((temp_r31->unk08.y * temp_f31) + temp_r31->unk24) - (0.2 * temp_f31 * temp_f31); + temp_r31->unk14.y -= 3.5f; + temp_r31->unk40.a = temp_r31->unk14.y; + if (temp_r31->unk2C < 0 || temp_r31->unk14.y < 10.0f || temp_r31->unk34.y <= 0.0f) { + temp_r31->unk2C = 0; + particle->unk_02++; + } + temp_r31->unk14.x += 1.0f; + } + } + if (particle->unk_02 >= particle->unk_30 && particle->unk_1C == NULL) { + particle->unk_00 = 1; + } } void fn_2_142D0(omObjData *object); @@ -970,72 +972,70 @@ void fn_2_142D4(ModelData *model, ParticleData *particle, Mtx matrix); omObjData *fn_2_141B0(void) { - omObjData *object = omAddObjEx(HuPrcCurrentGet(), 1300, 5, 0, -1, fn_2_142D0); - ParticleData *particle; - omSetStatBit(object, 0x100); - object->model[0] = Hu3DParticleCreate(lbl_2_bss_244, 200); - Hu3DParticleHookSet(object->model[0], fn_2_142D4); - Hu3DParticleColSet(object->model[0], 255, 255, 255); - Hu3DModelPosSet(object->model[0], 0, 0, 0); - Hu3DParticleAnimModeSet(object->model[0], 0); - Hu3DModelLayerSet(object->model[0], 1); - Hu3DParticleBlendModeSet(object->model[0], 1); - particle = Hu3DData[object->model[0]].unk_120; - return object; + omObjData *object = omAddObjEx(HuPrcCurrentGet(), 1300, 5, 0, -1, fn_2_142D0); + ParticleData *particle; + omSetStatBit(object, 0x100); + object->model[0] = Hu3DParticleCreate(lbl_2_bss_244, 200); + Hu3DParticleHookSet(object->model[0], fn_2_142D4); + Hu3DParticleColSet(object->model[0], 255, 255, 255); + Hu3DModelPosSet(object->model[0], 0, 0, 0); + Hu3DParticleAnimModeSet(object->model[0], 0); + Hu3DModelLayerSet(object->model[0], 1); + Hu3DParticleBlendModeSet(object->model[0], 1); + particle = Hu3DData[object->model[0]].unk_120; + return object; } -void fn_2_142D0(omObjData *object) -{ - -} +void fn_2_142D0(omObjData *object) { } void fn_2_142D4(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk2C = 0; - temp_r31->unk34.y = 950; - } - } - if(particle->unk_00 == 0) { - for(temp_r29=0; temp_r29<30; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk2C == 0) { - break; - } - } - if(temp_r28 == particle->unk_30) { - continue; - } - temp_r31->unk2C = 1; - temp_r31->unk40.a = 150; - temp_r31->unk34.x = ((11.764707f*((u8)frand()))+(-1500.0f)); - temp_r31->unk34.z = ((6.666667f*((u8)frand()))+(-2000.0f)); - temp_r31->unk08.x = 0; - temp_r31->unk08.y = (((5.0f/255.0f)*((u8)frand()))+(5.0f)); - temp_r31->unk08.z = ((0.011764707f*((u8)frand()))+(18.0f)); - } - particle->unk_00 = (frand() % 5)+4; - } else { - particle->unk_00--; - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk2C != 0) { - temp_r31->unk34.x += 1.1f; - temp_r31->unk34.z += 1.1f; - temp_r31->unk2C = (temp_r31->unk08.z*sind(temp_r31->unk08.x))+1.0; - temp_r31->unk08.x += temp_r31->unk08.y; - if(temp_r31->unk08.x >= 180.0f) { - temp_r31->unk2C = 0.0f; - } - } - } + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk2C = 0; + temp_r31->unk34.y = 950; + } + } + if (particle->unk_00 == 0) { + for (temp_r29 = 0; temp_r29 < 30; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk2C == 0) { + break; + } + } + if (temp_r28 == particle->unk_30) { + continue; + } + temp_r31->unk2C = 1; + temp_r31->unk40.a = 150; + temp_r31->unk34.x = ((11.764707f * ((u8)frand())) + (-1500.0f)); + temp_r31->unk34.z = ((6.666667f * ((u8)frand())) + (-2000.0f)); + temp_r31->unk08.x = 0; + temp_r31->unk08.y = (((5.0f / 255.0f) * ((u8)frand())) + (5.0f)); + temp_r31->unk08.z = ((0.011764707f * ((u8)frand())) + (18.0f)); + } + particle->unk_00 = (frand() % 5) + 4; + } + else { + particle->unk_00--; + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk2C != 0) { + temp_r31->unk34.x += 1.1f; + temp_r31->unk34.z += 1.1f; + temp_r31->unk2C = (temp_r31->unk08.z * sind(temp_r31->unk08.x)) + 1.0; + temp_r31->unk08.x += temp_r31->unk08.y; + if (temp_r31->unk08.x >= 180.0f) { + temp_r31->unk2C = 0.0f; + } + } + } } void fn_2_14738(omObjData *object); @@ -1043,93 +1043,93 @@ void fn_2_147B4(ModelData *model, ParticleData *particle, Mtx matrix); omObjData *fn_2_14640(Process *objman) { - omObjData *object; - object = omAddObjEx(objman, 1300, 1, 0, -1, fn_2_14738); - object->model[0] = Hu3DParticleCreate(lbl_2_bss_250, 450); - Hu3DParticleHookSet(object->model[0], fn_2_147B4); - Hu3DParticleColSet(object->model[0], 255, 255, 255); - Hu3DModelPosSet(object->model[0], 0, -6000, -21000); - Hu3DParticleAnimModeSet(object->model[0], 0); - Hu3DModelLayerSet(object->model[0], 1); - Hu3DParticleBlendModeSet(object->model[0], 1); - return object; + omObjData *object; + object = omAddObjEx(objman, 1300, 1, 0, -1, fn_2_14738); + object->model[0] = Hu3DParticleCreate(lbl_2_bss_250, 450); + Hu3DParticleHookSet(object->model[0], fn_2_147B4); + Hu3DParticleColSet(object->model[0], 255, 255, 255); + Hu3DModelPosSet(object->model[0], 0, -6000, -21000); + Hu3DParticleAnimModeSet(object->model[0], 0); + Hu3DModelLayerSet(object->model[0], 1); + Hu3DParticleBlendModeSet(object->model[0], 1); + return object; } void fn_2_14738(omObjData *object) { - omSetTra(object, lbl_2_bss_6C.x, lbl_2_bss_6C.y, lbl_2_bss_6C.z); - if(object->work[0] == 1) { - Hu3DModelAttrSet(object->model[0], 1); - omDelObjEx(HuPrcCurrentGet(), object); - } + omSetTra(object, lbl_2_bss_6C.x, lbl_2_bss_6C.y, lbl_2_bss_6C.z); + if (object->work[0] == 1) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + omDelObjEx(HuPrcCurrentGet(), object); + } } void fn_2_147B4(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk40.a = 180; - temp_r31->unk08.x = ((3.9215689f*((u8)frand()))+(-500.0f)); - temp_r31->unk08.y = ((3.529412f*((u8)frand()))+(-500.0f)); - temp_r31->unk08.z = (-300.0f)-((3.9215689f*((u8)frand()))); - temp_r31->unk14.x = (360.0f/255.0f)*((u8)frand()); - temp_r31->unk14.y = (4.0f/255.0f)*((u8)frand()); - temp_r31->unk2C = 2; - } - particle->unk_00 = 0; - } - if(particle->unk_00 == 0) { - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk40.a == 0) { - break; - } - } - if(temp_r28 == particle->unk_30) { - continue; - } - temp_r31->unk40.a = 180; - temp_r31->unk08.x = -50.0f+(0.3921569f*((u8)frand())); - temp_r31->unk08.y = 0.058823533f*((u8)frand()); - temp_r31->unk14.x = (90.0f/255.0f)*((u8)frand()); - temp_r31->unk14.y = 5.0f+(0.098039225f*((u8)frand())); - temp_r31->unk14.z = (float)(frand() % 10) + 8.0f; - temp_r31->unk34.z = -5.0f+((11.0f/255.0f)*((u8)frand())); - temp_r31->unk34.y = (float)(frand() % 31) + -5.0f; - temp_r31->unk2C = temp_r31->unk08.y+35.0f; - temp_r31->unk40.a = 210; - temp_r31->unk08.y = (0.2*temp_r31->unk08.y)+5.0; - particle->unk_00 = (frand()%10)+10; - } - - } else { - particle->unk_00--; - } - temp_r31 = particle->unk_48; - temp_f30 = lbl_2_bss_50*0.3f; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a == 0) { - continue; - } - temp_r31->unk34.x = temp_r31->unk08.x; - temp_r31->unk34.y = temp_r31->unk08.y; - temp_r31->unk34.z = temp_r31->unk08.z; - temp_r31->unk08.x -= 0.5*sind(temp_r31->unk14.x); - temp_r31->unk08.z -= -temp_f30; - temp_r31->unk14.x += temp_r31->unk14.y; - if(temp_r31->unk14.x >= 360.0f) { - temp_r31->unk14.x -= 360.0f; - } - if(temp_r31->unk08.z >= 0.0f) { - temp_f31 = 800.0f+((300.0f/255.0f)*((u8)frand())); - temp_r31->unk08.z -= temp_f31; - } - } -} \ No newline at end of file + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk40.a = 180; + temp_r31->unk08.x = ((3.9215689f * ((u8)frand())) + (-500.0f)); + temp_r31->unk08.y = ((3.529412f * ((u8)frand())) + (-500.0f)); + temp_r31->unk08.z = (-300.0f) - ((3.9215689f * ((u8)frand()))); + temp_r31->unk14.x = (360.0f / 255.0f) * ((u8)frand()); + temp_r31->unk14.y = (4.0f / 255.0f) * ((u8)frand()); + temp_r31->unk2C = 2; + } + particle->unk_00 = 0; + } + if (particle->unk_00 == 0) { + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk40.a == 0) { + break; + } + } + if (temp_r28 == particle->unk_30) { + continue; + } + temp_r31->unk40.a = 180; + temp_r31->unk08.x = -50.0f + (0.3921569f * ((u8)frand())); + temp_r31->unk08.y = 0.058823533f * ((u8)frand()); + temp_r31->unk14.x = (90.0f / 255.0f) * ((u8)frand()); + temp_r31->unk14.y = 5.0f + (0.098039225f * ((u8)frand())); + temp_r31->unk14.z = (float)(frand() % 10) + 8.0f; + temp_r31->unk34.z = -5.0f + ((11.0f / 255.0f) * ((u8)frand())); + temp_r31->unk34.y = (float)(frand() % 31) + -5.0f; + temp_r31->unk2C = temp_r31->unk08.y + 35.0f; + temp_r31->unk40.a = 210; + temp_r31->unk08.y = (0.2 * temp_r31->unk08.y) + 5.0; + particle->unk_00 = (frand() % 10) + 10; + } + } + else { + particle->unk_00--; + } + temp_r31 = particle->unk_48; + temp_f30 = lbl_2_bss_50 * 0.3f; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a == 0) { + continue; + } + temp_r31->unk34.x = temp_r31->unk08.x; + temp_r31->unk34.y = temp_r31->unk08.y; + temp_r31->unk34.z = temp_r31->unk08.z; + temp_r31->unk08.x -= 0.5 * sind(temp_r31->unk14.x); + temp_r31->unk08.z -= -temp_f30; + temp_r31->unk14.x += temp_r31->unk14.y; + if (temp_r31->unk14.x >= 360.0f) { + temp_r31->unk14.x -= 360.0f; + } + if (temp_r31->unk08.z >= 0.0f) { + temp_f31 = 800.0f + ((300.0f / 255.0f) * ((u8)frand())); + temp_r31->unk08.z -= temp_f31; + } + } +} diff --git a/src/REL/m402Dll/main.c b/src/REL/m402Dll/main.c index cdc19ce8..e4044763 100755 --- a/src/REL/m402Dll/main.c +++ b/src/REL/m402Dll/main.c @@ -22,7 +22,7 @@ #include "dolphin.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" +#include "version.h" #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -203,9 +203,7 @@ static float lbl_1_bss_8; static float lbl_1_bss_4; static u8 lbl_1_bss_0[4]; -static s16 lbl_1_data_0[] = { - 0, 1, 2, 3, 4, 5, 6, 7 -}; +static s16 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; static Vec lbl_1_data_10 = { 0.0f, 2500.0f, 2200.0f }; static Vec lbl_1_data_1C = { 0.0f, 1.0f, 0.0f }; @@ -220,185 +218,64 @@ static u8 lbl_1_data_5C_unused[] = { 0xFF, 0xFF, 0xFF, 0xFF }; static Vec lbl_1_data_60 = { 0.0f, 4000.0f, 1000.0f }; static Vec lbl_1_data_6C = { 0.0f, 0.0f, 0.0f }; -static s32 lbl_1_data_78[8][11] = { - { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 16), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 62), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 8), - DATA_MAKE_NUM(DATADIR_M402, 0), - DATA_MAKE_NUM(DATADIR_M402, 24), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 117), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 2), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 17), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 62), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 9), - DATA_MAKE_NUM(DATADIR_M402, 1), - DATA_MAKE_NUM(DATADIR_M402, 25), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 117), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 2), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 18), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 62), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 10), - DATA_MAKE_NUM(DATADIR_M402, 2), - DATA_MAKE_NUM(DATADIR_M402, 26), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 117), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 2), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 19), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 62), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 11), - DATA_MAKE_NUM(DATADIR_M402, 3), - DATA_MAKE_NUM(DATADIR_M402, 27), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 117), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 2), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 20), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 62), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 12), - DATA_MAKE_NUM(DATADIR_M402, 4), - DATA_MAKE_NUM(DATADIR_M402, 28), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 117), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 2), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 21), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 62), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 13), - DATA_MAKE_NUM(DATADIR_M402, 5), - DATA_MAKE_NUM(DATADIR_M402, 29), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 117), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 2), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 22), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 62), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 14), - DATA_MAKE_NUM(DATADIR_M402, 6), - DATA_MAKE_NUM(DATADIR_M402, 30), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 117), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 76) - }, - { - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 2), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28), - DATA_MAKE_NUM(DATADIR_M402, 23), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 62), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 3), - DATA_MAKE_NUM(DATADIR_M402, 15), - DATA_MAKE_NUM(DATADIR_M402, 7), - DATA_MAKE_NUM(DATADIR_M402, 31), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 117), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 76) - } -}; +static s32 lbl_1_data_78[8][11] = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 16), DATA_MAKE_NUM(DATADIR_MARIOMOT, 62), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 8), DATA_MAKE_NUM(DATADIR_M402, 0), DATA_MAKE_NUM(DATADIR_M402, 24), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 117), DATA_MAKE_NUM(DATADIR_MARIOMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 2), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 62), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 9), DATA_MAKE_NUM(DATADIR_M402, 1), + DATA_MAKE_NUM(DATADIR_M402, 25), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 117), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), DATA_MAKE_NUM(DATADIR_PEACHMOT, 2), DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 62), DATA_MAKE_NUM(DATADIR_PEACHMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 10), DATA_MAKE_NUM(DATADIR_M402, 2), + DATA_MAKE_NUM(DATADIR_M402, 26), DATA_MAKE_NUM(DATADIR_PEACHMOT, 117), DATA_MAKE_NUM(DATADIR_PEACHMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 2), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 62), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 11), DATA_MAKE_NUM(DATADIR_M402, 3), + DATA_MAKE_NUM(DATADIR_M402, 27), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 117), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), DATA_MAKE_NUM(DATADIR_WARIOMOT, 2), DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 20), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 62), DATA_MAKE_NUM(DATADIR_WARIOMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 12), DATA_MAKE_NUM(DATADIR_M402, 4), + DATA_MAKE_NUM(DATADIR_M402, 28), DATA_MAKE_NUM(DATADIR_WARIOMOT, 117), DATA_MAKE_NUM(DATADIR_WARIOMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 2), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 21), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 62), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 13), DATA_MAKE_NUM(DATADIR_M402, 5), + DATA_MAKE_NUM(DATADIR_M402, 29), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 117), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), DATA_MAKE_NUM(DATADIR_DAISYMOT, 2), DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 22), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 62), DATA_MAKE_NUM(DATADIR_DAISYMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 14), DATA_MAKE_NUM(DATADIR_M402, 6), + DATA_MAKE_NUM(DATADIR_M402, 30), DATA_MAKE_NUM(DATADIR_DAISYMOT, 117), DATA_MAKE_NUM(DATADIR_DAISYMOT, 76) }, + { DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 2), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 23), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 62), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 15), + DATA_MAKE_NUM(DATADIR_M402, 7), DATA_MAKE_NUM(DATADIR_M402, 31), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 117), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 76) } }; -static s32 lbl_1_data_1D8[] = { - DATA_MAKE_NUM(DATADIR_M402, 38), - DATA_MAKE_NUM(DATADIR_M402, 40), - DATA_MAKE_NUM(DATADIR_M402, 37), - DATA_MAKE_NUM(DATADIR_M402, 39) -}; +static s32 lbl_1_data_1D8[] + = { DATA_MAKE_NUM(DATADIR_M402, 38), DATA_MAKE_NUM(DATADIR_M402, 40), DATA_MAKE_NUM(DATADIR_M402, 37), DATA_MAKE_NUM(DATADIR_M402, 39) }; -static s32 lbl_1_data_1E8[] = { - DATA_MAKE_NUM(DATADIR_M402, 41), - DATA_MAKE_NUM(DATADIR_M402, 42), - DATA_MAKE_NUM(DATADIR_M402, 43) -}; +static s32 lbl_1_data_1E8[] = { DATA_MAKE_NUM(DATADIR_M402, 41), DATA_MAKE_NUM(DATADIR_M402, 42), DATA_MAKE_NUM(DATADIR_M402, 43) }; static s32 lbl_1_data_1F4 = DATA_MAKE_NUM(DATADIR_M402, 44); -static s32 lbl_1_data_1F8[] = { - DATA_MAKE_NUM(DATADIR_M402, 45), - DATA_MAKE_NUM(DATADIR_M402, 46) -}; +static s32 lbl_1_data_1F8[] = { DATA_MAKE_NUM(DATADIR_M402, 45), DATA_MAKE_NUM(DATADIR_M402, 46) }; -static Vec lbl_1_data_200[] = { - { 450.0f, 290.0f, 0.0f }, - { -450.0f, 290.0f, 0.0f } -}; +static Vec lbl_1_data_200[] = { { 450.0f, 290.0f, 0.0f }, { -450.0f, 290.0f, 0.0f } }; -static s32 lbl_1_data_218[] = { - DATA_MAKE_NUM(DATADIR_M402, 48), - DATA_MAKE_NUM(DATADIR_M402, 50), - DATA_MAKE_NUM(DATADIR_M402, 47), - DATA_MAKE_NUM(DATADIR_M402, 49), - DATA_MAKE_NUM(DATADIR_M402, 51), - DATA_MAKE_NUM(DATADIR_M402, 52), - DATA_MAKE_NUM(DATADIR_M402, 53) -}; +static s32 lbl_1_data_218[] = { DATA_MAKE_NUM(DATADIR_M402, 48), DATA_MAKE_NUM(DATADIR_M402, 50), DATA_MAKE_NUM(DATADIR_M402, 47), + DATA_MAKE_NUM(DATADIR_M402, 49), DATA_MAKE_NUM(DATADIR_M402, 51), DATA_MAKE_NUM(DATADIR_M402, 52), DATA_MAKE_NUM(DATADIR_M402, 53) }; -static UnkData234Struct lbl_1_data_234[] = { - { 0.0f, 0.0f, 0.0f, 0.0f, -1 }, - { 2.0f, 2.0f, 0.1f, 0.125f, 0x514 }, - { 2.0f, 2.0f, 0.2f, 0.25f, -1 }, - { 3.0f, 4.0f, 0.3f, 0.35f, 0x515 }, - { 3.0f, 4.0f, 0.4f, 0.45f, -1 }, - { 3.0f, 6.0f, 0.45f, 0.5125f, 0x516 }, - { 3.0f, 6.0f, 0.5f, 0.575f, -1 }, - { 3.0f, 6.0f, 0.55f, 0.6375f, -1 }, - { 3.0f, 6.0f, 0.6f, 0.7f, -1 }, - { 4.0f, 8.0f, 0.65f, 0.75f, 0x517 }, - { 4.0f, 8.0f, 0.7f, 0.8f, -1 }, - { 4.0f, 8.0f, 0.75f, 0.85f, -1 }, - { 4.0f, 8.0f, 0.8f, 0.9f, -1 }, - { 4.0f, 10.0f, 0.83f, 0.9166f, 0x518 }, - { 4.0f, 10.0f, 0.86f, 0.9333f, -1 }, - { 4.0f, 10.0f, 0.9f, 0.95f, -1 }, - { 4.0f, 10.0f, 0.93f, 0.9666f, -1 }, - { 4.0f, 10.0f, 0.96f, 0.9833f, -1 }, - { 4.0f, 10.0f, 1.0f, 1.0f, -1 }, - { 1.0f, 10.0f, 1.0f, 1.0f, -1 } -}; +static UnkData234Struct lbl_1_data_234[] = { { 0.0f, 0.0f, 0.0f, 0.0f, -1 }, { 2.0f, 2.0f, 0.1f, 0.125f, 0x514 }, { 2.0f, 2.0f, 0.2f, 0.25f, -1 }, + { 3.0f, 4.0f, 0.3f, 0.35f, 0x515 }, { 3.0f, 4.0f, 0.4f, 0.45f, -1 }, { 3.0f, 6.0f, 0.45f, 0.5125f, 0x516 }, { 3.0f, 6.0f, 0.5f, 0.575f, -1 }, + { 3.0f, 6.0f, 0.55f, 0.6375f, -1 }, { 3.0f, 6.0f, 0.6f, 0.7f, -1 }, { 4.0f, 8.0f, 0.65f, 0.75f, 0x517 }, { 4.0f, 8.0f, 0.7f, 0.8f, -1 }, + { 4.0f, 8.0f, 0.75f, 0.85f, -1 }, { 4.0f, 8.0f, 0.8f, 0.9f, -1 }, { 4.0f, 10.0f, 0.83f, 0.9166f, 0x518 }, { 4.0f, 10.0f, 0.86f, 0.9333f, -1 }, + { 4.0f, 10.0f, 0.9f, 0.95f, -1 }, { 4.0f, 10.0f, 0.93f, 0.9666f, -1 }, { 4.0f, 10.0f, 0.96f, 0.9833f, -1 }, { 4.0f, 10.0f, 1.0f, 1.0f, -1 }, + { 1.0f, 10.0f, 1.0f, 1.0f, -1 } }; -static s32 lbl_1_data_3C4[] = { - 0x00000514, - 0x00000515, - 0x00000516, - 0x00000517, - 0x00000518 -}; +static s32 lbl_1_data_3C4[] = { 0x00000514, 0x00000515, 0x00000516, 0x00000517, 0x00000518 }; -static void fn_1_0(void) { +static void fn_1_0(void) +{ lbl_1_bss_204.unk04 = NULL; lbl_1_bss_204.unk08 = NULL; } -static void fn_1_24(u16 arg0, s16 arg1) { +static void fn_1_24(u16 arg0, s16 arg1) +{ UnkBss204Struct *temp_r31; UnkBss204Struct *temp_r30; UnkBss204Struct *temp_r29; @@ -416,7 +293,8 @@ static void fn_1_24(u16 arg0, s16 arg1) { temp_r31->unk08 = temp_r29; } -static s16 fn_1_AC(s16 arg0) { +static s16 fn_1_AC(s16 arg0) +{ UnkBss204Struct *var_r31; UnkBss204Struct *temp_r29; UnkBss204Struct *temp_r30; @@ -440,12 +318,14 @@ static s16 fn_1_AC(s16 arg0) { return -1; } -static void fn_1_150(void) { +static void fn_1_150(void) +{ lbl_1_bss_1EC.unk10 = NULL; lbl_1_bss_1EC.unk14 = NULL; } -static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { +static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ UnkBss1ECStruct *temp_r27; UnkBss1ECStruct *var_r31; UnkBss1ECStruct *temp_r28; @@ -475,7 +355,8 @@ static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 ar var_r31->unk14 = temp_r27; } -static void fn_1_2D8(void) { +static void fn_1_2D8(void) +{ UnkBss1ECStruct *var_r31; UnkBss1ECStruct *temp_r28; UnkBss1ECStruct *temp_r29; @@ -510,7 +391,8 @@ static void fn_1_2D8(void) { } } -static void fn_1_414(void) { +static void fn_1_414(void) +{ s32 i; for (i = 0; i < 32; i++) { @@ -519,7 +401,8 @@ static void fn_1_414(void) { } } -static s16 fn_1_46C(s32 arg0) { +static s16 fn_1_46C(s32 arg0) +{ s32 i; for (i = 0; i < 32; i++) { @@ -537,37 +420,40 @@ static s16 fn_1_46C(s32 arg0) { return Hu3DModelCreateFile(arg0); } -static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { +static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ s32 var_r30; espBankSet(arg0[arg1 + 1], 10); espBankSet(arg0[arg1 + 4], 11); - if (36000 <= arg2) { - arg2 = 35999; + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; } - var_r30 = arg2 / 3600; - arg2 -= var_r30 * 3600; + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); if (var_r30 > 9) { var_r30 = 9; } espBankSet(arg0[arg1], var_r30); - var_r30 = arg2 / 60; - arg2 -= var_r30 * 60; + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; espBankSet(arg0[arg1 + 2], var_r30 / 10); espBankSet(arg0[arg1 + 3], var_r30 % 10); - var_r30 = 101.5f * arg2 / 60.0f; + var_r30 = 101.5f * arg2 / REFRESH_RATE; espBankSet(arg0[arg1 + 5], var_r30 / 10); espBankSet(arg0[arg1 + 6], var_r30 % 10); } -static void fn_1_798(s32 arg0) { +static void fn_1_798(s32 arg0) +{ lbl_1_bss_19C = 0.0f; lbl_1_bss_1AC = lbl_1_bss_1B0; GWMGRecordSet(arg0, lbl_1_bss_1AC); fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1B0); } -static void fn_1_9EC(void) { +static void fn_1_9EC(void) +{ s32 i; for (i = 0; i < 16; i++) { @@ -575,7 +461,8 @@ static void fn_1_9EC(void) { } } -static void fn_1_A40(void) { +static void fn_1_A40(void) +{ float temp_f31; s32 i; @@ -588,7 +475,8 @@ static void fn_1_A40(void) { } } -static void fn_1_B4C(float arg0, s32 arg1) { +static void fn_1_B4C(float arg0, s32 arg1) +{ float temp_f30; float temp_f31; s32 i; @@ -625,7 +513,8 @@ static void fn_1_B4C(float arg0, s32 arg1) { } } -static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { +static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ float temp_f31; if (1.0f < arg0) { @@ -637,13 +526,15 @@ static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); } -static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { +static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ Hu3DCameraPosSetV(1, arg0, arg1, arg2); lbl_1_bss_1DC = *arg0; lbl_1_bss_1C4 = *arg2; } -static s32 fn_1_13DC(float arg0, Vec *arg1) { +static s32 fn_1_13DC(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -652,13 +543,15 @@ static s32 fn_1_13DC(float arg0, Vec *arg1) { Hu3DCameraPosSetV(1, &sp18, arg1, &spC); if (1.0f <= arg0) { return 1; - } else { + } + else { lbl_1_bss_1A0 = 1; return 0; } } -static void fn_1_1710(float arg0, Vec *arg1) { +static void fn_1_1710(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -668,7 +561,8 @@ static void fn_1_1710(float arg0, Vec *arg1) { lbl_1_bss_1A0 = 1; } -static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { +static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ Mtx sp1C; Vec sp10; float temp_f30; @@ -685,7 +579,7 @@ static void fn_1_1A60(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_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); temp_f28 = 0.9f * temp_r31->viewport_x; @@ -695,7 +589,8 @@ static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { arg2->z = 0.0f; } -static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { +static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ Mtx sp10; Hu3DModelObjMtxGet(arg0, arg1, sp10); @@ -704,22 +599,24 @@ static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { arg2->z = sp10[2][3]; } -static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { +static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ Mtx spC; ModelData *var_r30; var_r30 = &Hu3DData[arg0]; Hu3DModelObjMtxGet(arg0, arg1, spC); - PSMTXConcat(var_r30->unk_F0, spC, spC); + MTXConcat(var_r30->unk_F0, spC, spC); if (NULL != arg3) { - PSMTXCopy(spC, arg3); + MTXCopy(spC, arg3); } arg2->x = spC[0][3]; arg2->y = spC[1][3]; arg2->z = spC[2][3]; } -static float fn_1_1E20(float arg0, float arg1, float arg2) { +static float fn_1_1E20(float arg0, float arg1, float arg2) +{ float var_f31; float var_f30; @@ -737,11 +634,13 @@ static float fn_1_1E20(float arg0, float arg1, float arg2) { return var_f30; } -static void fn_1_1F24(s32 arg0) { +static void fn_1_1F24(s32 arg0) +{ lbl_1_bss_1A4 = HuAudSeqPlay(arg0); } -static void fn_1_1F58(s32 arg0) { +static void fn_1_1F58(s32 arg0) +{ if (lbl_1_bss_1A4 >= 0) { if (arg0 < 0) { arg0 = 1000; @@ -751,7 +650,8 @@ static void fn_1_1F58(s32 arg0) { lbl_1_bss_1A4 = -1; } -static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { +static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ Vec sp18; float var_f28; s32 var_r30; @@ -760,7 +660,7 @@ static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { sp18.y = 0.0f; sp18.z = 0.0f; sp18.x = arg2 / 4.0f; - sp18.z = -(float) arg3 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; var_r30 = 0; var_f28 = VECMagXZ(&sp18); if (0.5f <= var_f28) { @@ -774,37 +674,42 @@ static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); if (8.0f <= var_f28) { var_r30 = 2; - } else { + } + else { var_r30 = 1; } } - PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); } #include "src/REL/executor.c" -static void fn_1_2454(void) { +static void fn_1_2454(void) +{ HuSysVWaitSet(1); if (HuPadBtnDown[0] & 0x400) { lbl_1_bss_1B0 = -1; } print8(24, 32, 1.5f, "%f COUNT:%d MES:%d WIN:%d", lbl_1_bss_38, lbl_1_bss_1B4, lbl_1_bss_1AA, lbl_1_bss_26); print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_4, lbl_1_bss_C, lbl_1_bss_8); - print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); lbl_1_bss_8 -= HuPadSubStkX[0] / 59.0f; lbl_1_bss_C -= (HuPadSubStkY[0] / 59.0f) * 4.0f; lbl_1_bss_4 -= (HuPadTrigL[0] / 150.0f) * 4.0f; lbl_1_bss_4 += (HuPadTrigR[0] / 150.0f) * 4.0f; } -static void fn_1_2744(s16 arg0, GXColor *arg1) { +static void fn_1_2744(s16 arg0, GXColor *arg1) +{ s16 var_r30; var_r30 = Hu3DLLightCreateV(arg0, &lbl_1_data_34, &lbl_1_data_40, arg1); Hu3DLLightStaticSet(arg0, var_r30, 1); } -static u16 fn_1_27A8(UnkFn27A8Struct *arg0) { +static u16 fn_1_27A8(UnkFn27A8Struct *arg0) +{ u16 var_r30; var_r30 = 0; @@ -823,13 +728,15 @@ static u16 fn_1_27A8(UnkFn27A8Struct *arg0) { arg0->unk40 = 0; var_r30 = 0x100; } - } else { + } + else { arg0->unk40 = 0; } return var_r30; } -static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1) { +static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1) +{ arg0->unk4C = 2016; arg0->unk60 = 0; arg0->unk2C = 0.0f; @@ -840,12 +747,13 @@ static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1) { arg0->unk08 = 0.0f; arg0->unk0C = 0.0f; arg0->unk10 = arg0->unk0C; - Hu3DModelAttrReset(arg1->model[0], 0x40000002); - Hu3DModelAttrSet(arg1->model[0], 0x40000001); + Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg1->model[0], HU3D_MOTATTR_LOOP); Hu3DMotionSet(arg1->model[0], arg1->motion[0]); } -static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2) { +static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2) +{ Vec sp18; Vec spC; float temp_f31; @@ -867,33 +775,35 @@ static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2) { } } -static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2) { +static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2) +{ arg0->unk50 = 0; - arg0->unk20 = (770.0f - arg0->unk1C) / 18.0f; + arg0->unk20 = (770.0f - arg0->unk1C) / (REFRESH_RATE * 0.3f); arg0->unk0C = Hu3DMotionTimeGet(arg2->model[0]); Hu3DMotionTimeSet(lbl_1_bss_54[arg0->unk54]->model[0], 0.0f); Hu3DMotionSpeedSet(arg1->model[0], 1.0f); - Hu3DModelAttrReset(arg1->model[0], 0x40000003); - Hu3DMotionShiftSet(arg1->model[0], arg1->motion[7], 0.0f, 8.0f, 0); + Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[7], 0.0f, 8.0f, HU3D_MOTATTR_NONE); fn_1_2970(arg0, arg2, 1); HuAudCharVoicePlay(arg0->unk58, 0x123); } -static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1) { +static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1) +{ Vec sp20; float var_f30; float var_f29; arg0->unk50++; - var_f30 = 90.0f * (arg0->unk50 / 18.0f); + var_f30 = 90.0f * (arg0->unk50 / (VERSION_NTSC ? 18.0f : 15.000001f)); var_f29 = arg0->unk0C * (1.0 - sind(var_f30)); Hu3DMotionTimeSet(arg1->model[0], var_f29); fn_1_1D18(arg1->model[0], "motionC-stretch", &sp20); arg0->unk28 = sp20.y - arg0->unk14 + 388.0f; arg0->unk1C += arg0->unk20; - if (18.0f < arg0->unk50) { + if ((REFRESH_RATE * 0.3f) < arg0->unk50) { arg0->unk20 = (670.0f - arg0->unk1C) / 20.0f; - Hu3DModelAttrReset(arg1->model[0], 0x40000003); + Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); Hu3DMotionSet(arg1->model[0], arg1->motion[2]); Hu3DMotionTimeSet(arg1->model[0], 20.0f); omVibrate(arg0->unk54, 12, 4, 2); @@ -904,7 +814,8 @@ static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1) { return 0; } -static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1) { +static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1) +{ Vec sp8; arg0->unk1C += arg0->unk20; @@ -915,7 +826,8 @@ static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1) { arg0->unk28 = sp8.y - arg0->unk14 + 388.0f; } -static void fn_1_3204(omObjData *arg0) { +static void fn_1_3204(omObjData *arg0) +{ Vec sp48; Vec sp3C; Vec sp24; @@ -951,7 +863,8 @@ static void fn_1_3204(omObjData *arg0) { if (temp_r31->unk60 < 19) { if (GWPlayerCfg[temp_r31->unk54].iscom) { var_r26 = fn_1_27A8(temp_r31); - } else { + } + else { var_r26 = HuPadBtnDown[temp_r31->unk5C]; } if (temp_r31->unk60 == 0) { @@ -965,9 +878,10 @@ static void fn_1_3204(omObjData *arg0) { temp_r31->unk20 = 0.0f; temp_r31->unk24 = temp_r31->unk1C; HuAudFXPlay(0x50E); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 2.0f, 0x40000001); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); } - } else { + } + else { temp_r31->unk30 += 1.0f; } switch (temp_r31->unk4C) { @@ -992,7 +906,7 @@ static void fn_1_3204(omObjData *arg0) { temp_r31->unk60++; if (temp_r31->unk60 == 3) { Hu3DMotionSpeedSet(arg0->model[0], 0.83f); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 4.0f, 0x40000001); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 4.0f, HU3D_MOTATTR_LOOP); } if (temp_r31->unk60 == 9) { Hu3DMotionSpeedSet(arg0->model[0], 1.0f); @@ -1006,16 +920,18 @@ static void fn_1_3204(omObjData *arg0) { temp_r31->unk08 = 0.0f; if (lbl_1_bss_26 < 0) { lbl_1_bss_26 = temp_r31->unk54; - } else if (frandmod(100) > 50) { + } + else if (frandmod(100) > 50) { lbl_1_bss_26 = temp_r31->unk54; } } } } - if (60.0f <= temp_r31->unk30) { + if (1.0f * REFRESH_RATE <= temp_r31->unk30) { temp_r31->unk4C = 2017; fn_1_2B30(temp_r31, arg0, temp_r29); - } else { + } + else { if (temp_r31->unk1C > temp_r31->unk24) { temp_r31->unk1C += temp_r31->unk20; if (temp_r31->unk1C <= temp_r31->unk24) { @@ -1034,7 +950,7 @@ static void fn_1_3204(omObjData *arg0) { case 2017: if (fn_1_2DBC(temp_r31, temp_r29) != 0) { temp_r31->unk4C = 2018; - temp_r31->unk50 = 120; + temp_r31->unk50 = 2 * REFRESH_RATE; } break; case 2018: @@ -1042,7 +958,7 @@ static void fn_1_3204(omObjData *arg0) { temp_r31->unk50 -= 1.0f; if (temp_r31->unk50 == 32) { Hu3DMotionSet(arg0->model[0], arg0->motion[9]); - Hu3DMotionShiftSet(temp_r29->model[0], temp_r29->motion[1], 0.0f, 20.0f, 0x40000002); + Hu3DMotionShiftSet(temp_r29->model[0], temp_r29->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_PAUSE); } if (0.0f > temp_r31->unk50) { fn_1_2880(temp_r31, arg0); @@ -1060,7 +976,8 @@ static void fn_1_3204(omObjData *arg0) { } } -static void fn_1_4190(float arg0) { +static void fn_1_4190(float arg0) +{ Vec sp8; s32 i; @@ -1073,7 +990,8 @@ static void fn_1_4190(float arg0) { } } -static void fn_1_4284(float arg0) { +static void fn_1_4284(float arg0) +{ Vec sp8; s32 i; @@ -1088,7 +1006,8 @@ static void fn_1_4284(float arg0) { } } -static void fn_1_43D8(omObjData *arg0) { +static void fn_1_43D8(omObjData *arg0) +{ Vec spE8; float temp_f31; float temp_f23; @@ -1102,7 +1021,7 @@ static void fn_1_43D8(omObjData *arg0) { case 2000: if (lbl_1_bss_58->work[0] == 1001) { temp_r31->unk4C++; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } break; case 2001: @@ -1111,11 +1030,11 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk4C++; temp_r31->unk08 = 0.0f; temp_r31->unk04 = 2000.0f; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); Hu3DMotionSet(temp_r30->model[0], temp_r30->motion[0]); - Hu3DModelAttrSet(temp_r30->model[0], 0x40000002); - Hu3DModelAttrReset(temp_r30->model[0], 0x40000001); - Hu3DModelAttrReset(temp_r30->model[0], 1); + Hu3DModelAttrSet(temp_r30->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(temp_r30->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(temp_r30->model[0], HU3D_ATTR_DISPOFF); } break; case 2002: @@ -1130,7 +1049,7 @@ static void fn_1_43D8(omObjData *arg0) { if (temp_r31->unk54 == 0) { HuAudFXPlay(0x50D); } - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 10.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } break; case 2003: @@ -1140,7 +1059,7 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk4C++; temp_r31->unk50 = 0; temp_r31->unk04 = 536.0f; - Hu3DModelAttrReset(temp_r30->model[0], 0x40000002); + Hu3DModelAttrReset(temp_r30->model[0], HU3D_MOTATTR_PAUSE); spE8.x = temp_r31->unk00 * sind(180.0f + temp_r31->unk18); spE8.y = temp_r31->unk04; spE8.z = temp_r31->unk00 * cosd(180.0f + temp_r31->unk18); @@ -1152,7 +1071,7 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk50++; if (70.0f < temp_r31->unk50) { temp_r31->unk4C++; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 10.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } break; case 2005: @@ -1171,8 +1090,8 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk4C++; temp_r31->unk50 = 0; temp_r31->unk0C = 0.0f; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, 0x40000001); - Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 10.0f, 0x40000002); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_PAUSE); } break; case 2006: @@ -1187,7 +1106,7 @@ static void fn_1_43D8(omObjData *arg0) { if (670.0f > temp_r31->unk1C) { temp_f31 = (670.0f - temp_r31->unk1C) / 450.0f; Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], 10.0f * temp_f31); - temp_r28 = (s32) (10.0f * temp_f31) >> 1; + temp_r28 = (s32)(10.0f * temp_f31) >> 1; if (temp_r28 < 5 && temp_r31->unk44 != lbl_1_data_3C4[temp_r28]) { temp_r31->unk44 = lbl_1_data_3C4[temp_r28]; HuAudFXPlay(temp_r31->unk44); @@ -1197,7 +1116,8 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk4C++; temp_r31->unk1C = 470.0f; fn_1_2B30(temp_r31, arg0, temp_r30); - } else { + } + else { temp_r31->unk0C += 0.7f; Hu3DMotionTimeSet(temp_r30->model[0], temp_r31->unk0C); } @@ -1205,7 +1125,7 @@ static void fn_1_43D8(omObjData *arg0) { case 2008: if (fn_1_2DBC(temp_r31, temp_r30) != 0) { temp_r31->unk4C++; - temp_r31->unk50 = 120; + temp_r31->unk50 = 2 * REFRESH_RATE; } break; case 2009: @@ -1213,7 +1133,7 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk50 -= 1.0f; if (temp_r31->unk50 == 32) { Hu3DMotionSet(arg0->model[0], arg0->motion[9]); - Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, 0x40000002); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_PAUSE); } if (0.0f > temp_r31->unk50) { lbl_1_bss_58->work[0]++; @@ -1226,13 +1146,14 @@ static void fn_1_43D8(omObjData *arg0) { if (temp_r31->unk54 == lbl_1_bss_26) { temp_r31->unk4C = 2012; temp_r31->unk20 = 10.5f; - Hu3DModelAttrReset(arg0->model[0], 0x40000003); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[8], 0.0f, 20.0f, 0); - Hu3DModelAttrReset(temp_r30->model[0], 0x40000003); - Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 20.0f, 20.0f, 0); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[8], 0.0f, 20.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(temp_r30->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 20.0f, 20.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(0x513); fn_1_4190(temp_r31->unk18); - } else { + } + else { temp_r31->unk4C = 2014; fn_1_2B30(temp_r31, arg0, temp_r30); } @@ -1250,7 +1171,7 @@ static void fn_1_43D8(omObjData *arg0) { if (0.0f > temp_r31->unk20) { temp_r31->unk4C++; temp_r31->unk50 = 0; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[9], 0.0f, 20.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[9], 0.0f, 20.0f, HU3D_MOTATTR_NONE); } if (4.5f <= temp_r31->unk20) { fn_1_4284(temp_r31->unk18); @@ -1262,7 +1183,8 @@ static void fn_1_43D8(omObjData *arg0) { temp_f31 = sind(temp_f23) * sind(temp_f23); if (180.0f > temp_r31->unk18) { temp_r31->unk24 = temp_r31->unk18 + -temp_r31->unk18 * temp_f31; - } else { + } + else { temp_r31->unk24 = temp_r31->unk18 + (360.0f - temp_r31->unk18) * temp_f31; } omSetRot(arg0, 0.0f, temp_r31->unk24, 0.0f); @@ -1273,7 +1195,7 @@ static void fn_1_43D8(omObjData *arg0) { case 2014: if (fn_1_2DBC(temp_r31, temp_r30) != 0) { temp_r31->unk4C++; - temp_r31->unk50 = 120; + temp_r31->unk50 = 2 * REFRESH_RATE; } break; case 2015: @@ -1281,7 +1203,7 @@ static void fn_1_43D8(omObjData *arg0) { temp_r31->unk50 -= 1.0f; if (temp_r31->unk50 == 32) { Hu3DMotionSet(arg0->model[0], arg0->motion[9]); - Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, 0x40000002); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_PAUSE); } if (0.0f > temp_r31->unk50) { temp_r31->unk4C = 2011; @@ -1303,7 +1225,8 @@ static void fn_1_43D8(omObjData *arg0) { } } -static void fn_1_63C8(omObjData *arg0) { +static void fn_1_63C8(omObjData *arg0) +{ UnkFn27A8Struct *temp_r31; s16 temp_r28; s16 var_r27; @@ -1336,8 +1259,8 @@ static void fn_1_63C8(omObjData *arg0) { temp_r28 = arg0->model[0]; var_r27 = Hu3DLLightCreateV(temp_r28, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); Hu3DLLightStaticSet(temp_r28, var_r27, 1); - Hu3DModelAttrSet(arg0->model[0], 1); - Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); Hu3DModelLayerSet(arg0->model[0], 3); Hu3DMotionSet(arg0->model[0], arg0->motion[0]); temp_r31->unk18 = 135.0f + 90.0f * temp_r31->unk54; @@ -1345,7 +1268,7 @@ static void fn_1_63C8(omObjData *arg0) { omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); omSetRot(arg0, 0.0f, temp_r31->unk18, 0.0f); Hu3DModelShadowSet(arg0->model[0]); - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); if (GWPlayerCfg[temp_r31->unk54].iscom) { switch (GWPlayerCfg[temp_r31->unk54].diff) { case 0: @@ -1372,10 +1295,10 @@ static void fn_1_63C8(omObjData *arg0) { arg0->func = fn_1_43D8; } -static void fn_1_6858(omObjData *arg0) { -} +static void fn_1_6858(omObjData *arg0) { } -static void fn_1_685C(omObjData *arg0) { +static void fn_1_685C(omObjData *arg0) +{ float temp_f31; float temp_f29; float temp_f30; @@ -1387,20 +1310,21 @@ static void fn_1_685C(omObjData *arg0) { for (i = 0; i < 3; i++) { arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1E8[i]); } - Hu3DModelAttrSet(arg0->model[0], 1); - Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[0], 4); Hu3DMotionSet(arg0->model[0], arg0->motion[0]); - temp_f31 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk18; - temp_f29 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk04; - temp_f30 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk00; + temp_f31 = ((UnkFn27A8Struct *)lbl_1_bss_4C[temp_r29]->data)->unk18; + temp_f29 = ((UnkFn27A8Struct *)lbl_1_bss_4C[temp_r29]->data)->unk04; + temp_f30 = ((UnkFn27A8Struct *)lbl_1_bss_4C[temp_r29]->data)->unk00; omSetTra(arg0, temp_f30 * sind(180.0f + temp_f31), temp_f29, temp_f30 * cosd(180.0f + temp_f31)); omSetRot(arg0, 0.0f, temp_f31, 0.0f); Hu3DModelShadowSet(arg0->model[0]); arg0->func = fn_1_6858; } -static void fn_1_6AB4(omObjData *arg0) { +static void fn_1_6AB4(omObjData *arg0) +{ Vec *temp_r29; UnkFn6AB4Struct *temp_r31; float temp_f31; @@ -1415,7 +1339,7 @@ static void fn_1_6AB4(omObjData *arg0) { temp_r31->unk0C = 360.0f * frandf(); temp_r31->unk10 = 10.0f; HuAudFXPlay(0x512); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 20.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 20.0f, HU3D_MOTATTR_NONE); } break; case 3001: @@ -1435,7 +1359,7 @@ static void fn_1_6AB4(omObjData *arg0) { temp_r31->unk18 = 3000; temp_r31->unk14 = 20.0f; temp_r31->unk04 = temp_r29->y; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 20.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_NONE); } break; } @@ -1443,7 +1367,8 @@ static void fn_1_6AB4(omObjData *arg0) { omSetRot(arg0, 0.0f, temp_r31->unk0C, 0.0f); } -static void fn_1_6E64(omObjData *arg0) { +static void fn_1_6E64(omObjData *arg0) +{ Vec *temp_r29; UnkFn6AB4Struct *temp_r30; s32 i; @@ -1454,7 +1379,7 @@ static void fn_1_6E64(omObjData *arg0) { for (i = 0; i < 2; i++) { arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1F8[i]); } - Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(arg0->model[0], 5); Hu3DMotionSet(arg0->model[0], arg0->motion[1]); temp_r30->unk18 = 3000; @@ -1466,19 +1391,21 @@ static void fn_1_6E64(omObjData *arg0) { omSetTra(arg0, temp_r30->unk00, temp_r30->unk04, temp_r30->unk08); omSetRot(arg0, 0.0f, temp_r30->unk0C, 0.0f); Hu3DModelShadowSet(arg0->model[0]); - Hu3DModelAttrReset(arg0->model[0], 0x40000002); - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); arg0->func = fn_1_6AB4; } -static void fn_1_7020(omObjData *arg0) { - Hu3DModelAttrSet(arg0->model[0], 1); +static void fn_1_7020(omObjData *arg0) +{ + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); fn_1_24(arg0->work[0], arg0->model[0]); omDelObjEx(lbl_1_bss_1E8, arg0); lbl_1_bss_24--; } -static void fn_1_70E4(omObjData *arg0) { +static void fn_1_70E4(omObjData *arg0) +{ Mtx sp18; Vec spC; float var_f27; @@ -1498,10 +1425,10 @@ static void fn_1_70E4(omObjData *arg0) { spC.y = 0.0f; spC.z = var_f27; temp_r31->unk24.z *= 0.92f; - PSMTXIdentity(sp18); + MTXIdentity(sp18); mtxRot(sp18, temp_r31->unk24.x, temp_r31->unk24.y, 0.0f); - PSMTXMultVec(sp18, &spC, &spC); - PSVECAdd(&spC, &temp_r31->unk00, &temp_r31->unk00); + MTXMultVec(sp18, &spC, &spC); + VECAdd(&spC, &temp_r31->unk00, &temp_r31->unk00); omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z); Hu3DModelTPLvlSet(arg0->model[0], temp_r31->unk30); temp_r31->unk30 -= 0.02f; @@ -1571,7 +1498,8 @@ static void fn_1_70E4(omObjData *arg0) { } } -static void fn_1_7950(omObjData *arg0) { +static void fn_1_7950(omObjData *arg0) +{ UnkFn70E4Struct *temp_r30; s16 var_r25; @@ -1581,22 +1509,24 @@ static void fn_1_7950(omObjData *arg0) { var_r25 = fn_1_AC(arg0->work[0]); if (var_r25 < 0) { arg0->model[0] = Hu3DModelLink(lbl_1_bss_16[arg0->work[0]]); - } else { + } + else { arg0->model[0] = var_r25; } Hu3DMotionTimeSet(arg0->model[0], 0.0f); - Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(arg0->model[0], 2); omSetTra(arg0, temp_r30->unk00.x, temp_r30->unk00.y, temp_r30->unk00.z); omSetRot(arg0, temp_r30->unk0C, temp_r30->unk10, temp_r30->unk14); omSetSca(arg0, temp_r30->unk18, temp_r30->unk1C, temp_r30->unk20); - Hu3DModelAttrReset(arg0->model[0], 0x40000003); - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); arg0->func = fn_1_70E4; } } -static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2) { +static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2) +{ omObjData *temp_r3; UnkFn70E4Struct *temp_r31; @@ -1643,46 +1573,48 @@ static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2) { } } -static void fn_1_7D48(omObjData *arg0) { -} +static void fn_1_7D48(omObjData *arg0) { } -static void fn_1_7D4C(omObjData *arg0) { +static void fn_1_7D4C(omObjData *arg0) +{ arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 35)); - Hu3DModelAttrSet(arg0->model[0], 1); - Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[0], 0); omSetTra(arg0, 0.0f, 0.0f, 0.0f); omSetRot(arg0, 0.0f, 270.0f + 90.0f * arg0->work[0], 0.0f); Hu3DModelShadowMapSet(arg0->model[0]); - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); arg0->func = fn_1_7D48; } -static void fn_1_7E80(omObjData *arg0) { -} +static void fn_1_7E80(omObjData *arg0) { } -static void fn_1_7E84(omObjData *arg0) { +static void fn_1_7E84(omObjData *arg0) +{ float temp_f31; arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 36)); - Hu3DModelAttrSet(arg0->model[0], 1); - Hu3DModelAttrSet(arg0->model[0], 0x40000001); - Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[0], 1); temp_f31 = 135.0f + 90.0f * arg0->work[0]; omSetTra(arg0, 155.5 * sind(temp_f31), 0.0f, 155.5 * cosd(temp_f31)); omSetRot(arg0, 0.0f, 0.0f, 0.0f); - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); arg0->func = fn_1_7E80; } -static inline void fn_1_8048InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { +static inline void fn_1_8048InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) +{ arg0->x = arg1; arg0->y = arg2; arg0->z = arg3; } -static void fn_1_8048(void) { +static void fn_1_8048(void) +{ Vec sp14; Vec sp8; @@ -1700,7 +1632,8 @@ static void fn_1_8048(void) { Hu3DGLightPosSetV(lbl_1_bss_14, &sp14, &sp8); } -static void fn_1_8218(omObjData *arg0) { +static void fn_1_8218(omObjData *arg0) +{ Vec sp38; float temp_f26; omObjData *temp_r30; @@ -1725,23 +1658,24 @@ static void fn_1_8218(omObjData *arg0) { case 1005: if (lbl_1_bss_1AA < 0) { lbl_1_bss_1AA = MGSeqCreate(3, 0); - } else { + } + else { if (lbl_1_bss_1A4 < 0 && (MGSeqStatGet(lbl_1_bss_1AA) & 0x10)) { lbl_1_bss_1A4 = HuAudSeqPlay(0x46); } if (MGSeqStatGet(lbl_1_bss_1AA) == 0) { arg0->work[0]++; - lbl_1_bss_1B0 = 1800; - lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / 60, -1, -1); + lbl_1_bss_1B0 = 30 * REFRESH_RATE; + lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / REFRESH_RATE, -1, -1); lbl_1_bss_1AA = -1; } } break; case 1006: - MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + 59) / 60); + MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + REFRESH_RATE - 1) / REFRESH_RATE); lbl_1_bss_1B0--; if (lbl_1_bss_1B0 < 0 || lbl_1_bss_26 >= 0) { - lbl_1_bss_1B0 = 1800; + lbl_1_bss_1B0 = 30 * REFRESH_RATE; lbl_1_bss_2C = 0.0f; arg0->work[0] = 1007; } @@ -1761,10 +1695,11 @@ static void fn_1_8218(omObjData *arg0) { lbl_1_bss_1A8 = -1; lbl_1_bss_1AA = MGSeqCreate(3, 1); fn_1_1F58(100); - } else { + } + else { lbl_1_bss_2C += 1.0f; - if (90.0f >= lbl_1_bss_2C) { - fn_1_13DC(lbl_1_bss_2C / 90.0f, &lbl_1_data_1C); + if (1.5f * REFRESH_RATE >= lbl_1_bss_2C) { + fn_1_13DC(lbl_1_bss_2C / (1.5f * REFRESH_RATE), &lbl_1_data_1C); } if (MGSeqStatGet(lbl_1_bss_1AA) == 0) { arg0->work[0]++; @@ -1778,18 +1713,20 @@ static void fn_1_8218(omObjData *arg0) { if (lbl_1_bss_26 < 0) { lbl_1_bss_1AA = MGSeqCreate(3, 2); HuAudSStreamPlay(4); - } else { + } + else { lbl_1_bss_1AA = MGSeqCreate(5, 3, GWPlayerCfg[lbl_1_bss_26].character, -1, -1, -1); temp_r30 = lbl_1_bss_4C[lbl_1_bss_26]; - Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[10], 0.0f, 20.0f, 0); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[10], 0.0f, 20.0f, HU3D_MOTATTR_NONE); HuAudSStreamPlay(1); } - } else { + } + else { lbl_1_bss_2C += 1.0f; if (lbl_1_bss_26 >= 0 && 110.0f == lbl_1_bss_2C) { - Hu3DModelAttrSet(arg0->model[1], 1); - Hu3DModelAttrReset(arg0->model[2], 0x40000002); - Hu3DModelAttrReset(arg0->model[2], 1); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(arg0->model[2], 0.0f); Hu3DMotionSpeedSet(arg0->model[2], 3.0f); } @@ -1807,9 +1744,9 @@ static void fn_1_8218(omObjData *arg0) { } lbl_1_bss_30 -= 1.0f; if (0.0f == lbl_1_bss_30) { - Hu3DModelAttrSet(arg0->model[1], 1); - Hu3DModelAttrReset(arg0->model[2], 0x40000002); - Hu3DModelAttrReset(arg0->model[2], 1); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(arg0->model[2], 0.0f); Hu3DMotionSpeedSet(arg0->model[2], 3.0f); } @@ -1817,13 +1754,14 @@ static void fn_1_8218(omObjData *arg0) { lbl_1_bss_30 = -1.0f; fn_1_8048(); if (Hu3DMotionEndCheck(arg0->model[2])) { - Hu3DModelAttrReset(arg0->model[1], 1); - Hu3DModelAttrSet(arg0->model[2], 1); + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); } } } -static void fn_1_9058(omObjData *arg0) { +static void fn_1_9058(omObjData *arg0) +{ s16 temp_r29; s16 temp_r28; s32 i; @@ -1833,8 +1771,8 @@ static void fn_1_9058(omObjData *arg0) { arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 33)); arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 34)); for (i = 0; i < 3; i++) { - Hu3DModelAttrSet(arg0->model[i], 1); - Hu3DModelAttrSet(arg0->model[i], 0x40000002); + Hu3DModelAttrSet(arg0->model[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[i], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[i], 0); Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); } @@ -1844,15 +1782,16 @@ static void fn_1_9058(omObjData *arg0) { temp_r29 = arg0->model[0]; temp_r28 = Hu3DLLightCreateV(temp_r29, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); Hu3DLLightStaticSet(temp_r29, temp_r28, 1); - Hu3DModelAttrReset(arg0->model[0], 1); - Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); Hu3DModelShadowMapSet(arg0->model[0]); HuAudFXPlay(0x519); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); arg0->func = fn_1_8218; } -void ObjectSetup(void) { +void ObjectSetup(void) +{ Vec sp20; omObjData *temp_r30; s32 i; @@ -1883,7 +1822,7 @@ void ObjectSetup(void) { fn_1_8048(); Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); Hu3DShadowTPLvlSet(0.5f); - PSVECNormalize(&lbl_1_data_60, &sp20); + VECNormalize(&lbl_1_data_60, &sp20); Hu3DShadowPosSet(&lbl_1_data_60, &sp20, &lbl_1_data_6C); omMakeGroupEx(lbl_1_bss_1E8, 0, 4); lbl_1_bss_54 = omGetGroupMemberListEx(lbl_1_bss_1E8, 0); @@ -1923,13 +1862,14 @@ void ObjectSetup(void) { lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1E8, 5); for (i = 0; i < 7; i++) { lbl_1_bss_16[i] = Hu3DModelCreateFile(lbl_1_data_218[i]); - Hu3DModelAttrSet(lbl_1_bss_16[i], 1); - Hu3DModelAttrSet(lbl_1_bss_16[i], 0x40000002); + Hu3DModelAttrSet(lbl_1_bss_16[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_16[i], HU3D_MOTATTR_PAUSE); } lbl_1_bss_58 = omAddObjEx(lbl_1_bss_1E8, 106, 3, 1, -1, fn_1_9058); } -static void fn_1_9AF4(omObjData *arg0) { +static void fn_1_9AF4(omObjData *arg0) +{ s32 i; if (WipeStatGet() == 0) { diff --git a/src/REL/m403Dll/main.c b/src/REL/m403Dll/main.c index 3550b015..1a6faa0c 100755 --- a/src/REL/m403Dll/main.c +++ b/src/REL/m403Dll/main.c @@ -1,5 +1,5 @@ -#include "REL/m403Dll.h" #include "REL/executor.h" +#include "REL/m403Dll.h" #include "game/audio.h" #include "game/chrman.h" #include "game/data.h" @@ -17,7 +17,10 @@ #include "game/wipe.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif typedef struct { /* 0x000 */ u8 unk00; @@ -165,7 +168,8 @@ static Vec lbl_1_data_20_unused = { 0.0f, 4000.0f, -2000.0f }; static Vec lbl_1_data_2C_unused = { 0.0f, 1.0f, 0.0f }; static u8 lbl_1_data_38_unused[0xC] = { 0 }; -void ObjectSetup(void) { +void ObjectSetup(void) +{ LightData *var_r28; Process *temp_r31; omObjData *var_r29; @@ -213,17 +217,19 @@ void ObjectSetup(void) { WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); HuAudSndGrpSet(0x1C); lbl_1_bss_2 = 0; - if (GWMGRecordGet(9) == 0U) { + if (GWMGRecordGet(9) == 0) { GWMGRecordSet(9, 5); } } -static void fn_1_424(omObjData *arg0) { +static void fn_1_424(omObjData *arg0) +{ lbl_1_bss_30 = 0; arg0->func = fn_1_444; } -static void fn_1_444(omObjData *arg0) { +static void fn_1_444(omObjData *arg0) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -296,18 +302,12 @@ static void fn_1_444(omObjData *arg0) { static s32 lbl_1_data_68 = -1; -s32 lbl_1_data_6C[] = { - DATA_MAKE_NUM(DATADIR_MGCONST, 0), - DATA_MAKE_NUM(DATADIR_MGCONST, 1), - DATA_MAKE_NUM(DATADIR_MGCONST, 2), - DATA_MAKE_NUM(DATADIR_MGCONST, 3), - DATA_MAKE_NUM(DATADIR_MGCONST, 4), - DATA_MAKE_NUM(DATADIR_MGCONST, 5), - DATA_MAKE_NUM(DATADIR_MGCONST, 6), - DATA_MAKE_NUM(DATADIR_MGCONST, 7) -}; +s32 lbl_1_data_6C[] = { DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_MGCONST, 1), DATA_MAKE_NUM(DATADIR_MGCONST, 2), + DATA_MAKE_NUM(DATADIR_MGCONST, 3), DATA_MAKE_NUM(DATADIR_MGCONST, 4), DATA_MAKE_NUM(DATADIR_MGCONST, 5), DATA_MAKE_NUM(DATADIR_MGCONST, 6), + DATA_MAKE_NUM(DATADIR_MGCONST, 7) }; -static void fn_1_82C(omObjData *arg0) { +static void fn_1_82C(omObjData *arg0) +{ Vec sp1C; Vec sp10; float var_f31; @@ -323,7 +323,8 @@ static void fn_1_82C(omObjData *arg0) { lbl_1_bss_2A = 1800; lbl_1_bss_2C = MGSeqStartCreate(); MGSeqPosSet(lbl_1_bss_2C, 320.0f, 240.0f); - } else if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + } + else if (MGSeqStatGet(lbl_1_bss_2C) == 0) { lbl_1_bss_2C = -1; lbl_1_bss_30++; lbl_1_bss_28 = 0; @@ -357,10 +358,11 @@ static void fn_1_82C(omObjData *arg0) { case 6: var_r29 = 0; if (lbl_1_bss_2 != 0) { - if (((Unkm403Struct_01*) lbl_1_bss_34[lbl_1_bss_4]->data)->unk07 == 0 && fn_1_8264() == 0) { + if (((Unkm403Struct_01 *)lbl_1_bss_34[lbl_1_bss_4]->data)->unk07 == 0 && fn_1_8264() == 0) { var_r29++; } - } else if (lbl_1_data_0 <= 1 && fn_1_8264() == 0) { + } + else if (lbl_1_data_0 <= 1 && fn_1_8264() == 0) { var_r29++; } if (lbl_1_bss_2 != 0) { @@ -384,7 +386,7 @@ static void fn_1_82C(omObjData *arg0) { if (lbl_1_bss_2 == 0) { if (lbl_1_data_0 != 0) { for (i = 0; i < 4; i++) { - if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + if (((Unkm403Struct_01 *)lbl_1_bss_34[i]->data)->unk07 != 0) { break; } } @@ -401,7 +403,7 @@ static void fn_1_82C(omObjData *arg0) { lbl_1_bss_28 = 90; break; } - if (GWMGRecordGet(9) < lbl_1_bss_0 - 1) { + if ((s32)GWMGRecordGet(9) < lbl_1_bss_0 - 1) { GWMGRecordSet(9, lbl_1_bss_0 - 1); lbl_1_bss_30 = 8; break; @@ -432,12 +434,13 @@ static void fn_1_82C(omObjData *arg0) { if (lbl_1_data_0 == 0) { lbl_1_bss_2C = MGSeqDrawCreate(); HuAudSStreamPlay(4); - } else { + } + else { for (i = 0; i < 4; i++) { sp8[i] = -1; } for (i = 0, var_r27 = 0; i < 4; i++) { - if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + if (((Unkm403Struct_01 *)lbl_1_bss_34[i]->data)->unk07 != 0) { GWPlayerCoinWinAdd(i, 10); sp8[var_r27++] = GWPlayerCfg[i].character; } @@ -463,7 +466,8 @@ static void fn_1_82C(omObjData *arg0) { } } -static void fn_1_1214(omObjData *arg0) { +static void fn_1_1214(omObjData *arg0) +{ if (WipeStatGet() == 0) { fn_1_676C(); CharModelKill(-1); @@ -474,7 +478,8 @@ static void fn_1_1214(omObjData *arg0) { } } -static void fn_1_1274(omObjData *arg0) { +static void fn_1_1274(omObjData *arg0) +{ Hu3DLightAllKill(); lbl_1_bss_18[0] = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, &lbl_1_data_1C); Hu3DGLightStaticSet(lbl_1_bss_18[0], 1); @@ -489,7 +494,8 @@ static void fn_1_1274(omObjData *arg0) { arg0->func = fn_1_1460; } -static void fn_1_1460(omObjData *arg0) { +static void fn_1_1460(omObjData *arg0) +{ s8 sp11[] = { 1, 0, 2, 1, 0, 3, 2, 1, 0 }; s8 sp8[] = { 1, 1, 2, 2, 2, 3, 3, 3, 3 }; s32 var_r30; @@ -538,7 +544,8 @@ static void fn_1_1460(omObjData *arg0) { } } -static void fn_1_16D8(omObjData *arg0) { +static void fn_1_16D8(omObjData *arg0) +{ Unkm403Struct_00 *temp_r3; temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); @@ -555,7 +562,8 @@ static void fn_1_16D8(omObjData *arg0) { arg0->func = fn_1_17DC; } -static void fn_1_17DC(omObjData *arg0) { +static void fn_1_17DC(omObjData *arg0) +{ Unkm403Struct_00 *temp_r31; float temp_f31; @@ -572,7 +580,8 @@ static void fn_1_17DC(omObjData *arg0) { temp_r31->unk10.y = temp_r31->unk28.y + temp_f31 * (temp_r31->unk40.y - temp_r31->unk28.y); temp_r31->unk10.z = temp_r31->unk28.z + temp_f31 * (temp_r31->unk40.z - temp_r31->unk28.z); temp_r31->unk130 = temp_r31->unk134 + temp_f31 * (temp_r31->unk138 - temp_r31->unk134); - } else { + } + else { fn_1_57E0(2.0f * temp_f31, &temp_r31->unk04, temp_r31->unkF4, &temp_r31->unk64, temp_r31->unk88, 3); fn_1_57E0(2.0f * temp_f31, &temp_r31->unk10, temp_r31->unk100, &temp_r31->unkAC, temp_r31->unkD0, 3); temp_r31->unk130 = fn_1_52AC(2.0f * temp_f31, temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); @@ -587,7 +596,8 @@ static void fn_1_17DC(omObjData *arg0) { CZoom = temp_r31->unk130; } -static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3) { +static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3) +{ Unkm403Struct_00 *temp_r31; temp_r31 = lbl_1_bss_48->data; @@ -606,7 +616,8 @@ static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3) { temp_r31->unk138 = arg3; } -static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, Vec *arg5, float arg6) { +static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, Vec *arg5, float arg6) +{ Unkm403Struct_00 *temp_r31; temp_r31 = lbl_1_bss_48->data; @@ -646,37 +657,26 @@ static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, V fn_1_4FF4(temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); } -static void fn_1_1DA8(float arg0) { +static void fn_1_1DA8(float arg0) +{ Unkm403Struct_00 *temp_r31; temp_r31 = lbl_1_bss_48->data; temp_r31->unk140 = arg0; } -static s32 lbl_1_data_C4[] = { - 0, 2, 3, 8, 10, 9, 23, 24 -}; +static s32 lbl_1_data_C4[] = { 0, 2, 3, 8, 10, 9, 23, 24 }; -static Vec lbl_1_data_E4[] = { - { -300.0f, 2200.0f, 0.0f }, - { -100.0f, 2200.0f, 0.0f }, - { 100.0f, 2200.0f, 0.0f }, - { 300.0f, 2200.0f, 0.0f } -}; +static Vec lbl_1_data_E4[] = { { -300.0f, 2200.0f, 0.0f }, { -100.0f, 2200.0f, 0.0f }, { 100.0f, 2200.0f, 0.0f }, { 300.0f, 2200.0f, 0.0f } }; -static float lbl_1_data_114[] = { - 40.0f, 40.0f, 40.0f, 40.0f, - 40.0f, 100.0f, 40.0f, 80.0f -}; +static float lbl_1_data_114[] = { 40.0f, 40.0f, 40.0f, 40.0f, 40.0f, 100.0f, 40.0f, 80.0f }; -static float lbl_1_data_134[] = { - 160.0f, 160.0f, 180.0f, 160.0f, - 160.0f, 180.0f, 180.0f, 200.0f -}; +static float lbl_1_data_134[] = { 160.0f, 160.0f, 180.0f, 160.0f, 160.0f, 180.0f, 180.0f, 200.0f }; static u32 lbl_1_data_154 = 0x41C64E6D; -static void fn_1_1DD0(omObjData *arg0) { +static void fn_1_1DD0(omObjData *arg0) +{ Unkm403Struct_01 *temp_r3; s32 temp_r27; s32 i; @@ -715,7 +715,7 @@ static void fn_1_1DD0(omObjData *arg0) { } temp_r28 = CharModelCreate(temp_r3->unk01, 4); arg0->model[0] = temp_r28; - Hu3DModelAttrSet(temp_r28, 0x40000001); + Hu3DModelAttrSet(temp_r28, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(temp_r28); for (i = 0; i < 8; i++) { arg0->motion[i] = CharModelMotionCreate(temp_r3->unk01, lbl_1_data_C4[i]); @@ -730,7 +730,8 @@ static void fn_1_1DD0(omObjData *arg0) { arg0->func = fn_1_2158; } -static void fn_1_2158(omObjData *arg0) { +static void fn_1_2158(omObjData *arg0) +{ Unkm403Struct_01 *temp_r31; s32 sp8; @@ -747,9 +748,9 @@ static void fn_1_2158(omObjData *arg0) { } /* fallthrough */ case 1: - temp_r31->unk18 = 3; - temp_r31->unk48 = 0.0f; - temp_r31->unk0C = 0; + temp_r31->unk18 = 3; + temp_r31->unk48 = 0.0f; + temp_r31->unk0C = 0; break; case 5: arg0->func = fn_1_22A4; @@ -763,7 +764,8 @@ static void fn_1_2158(omObjData *arg0) { fn_1_2FDC(arg0); } -static void fn_1_22A4(omObjData *arg0) { +static void fn_1_22A4(omObjData *arg0) +{ Unkm403Struct_01 *temp_r31; s32 temp_r29; s32 temp_r28; @@ -774,13 +776,15 @@ static void fn_1_22A4(omObjData *arg0) { if (lbl_1_bss_30 == 6 && !(temp_r31->unk07 & 2)) { if (temp_r31->unk05 != 0) { fn_1_2598(arg0); - } else { + } + else { temp_r31->unk10 = HuPadStkX[temp_r31->unk04]; temp_r31->unk12 = HuPadStkY[temp_r31->unk04]; temp_r31->unk14 = HuPadBtnDown[temp_r31->unk04]; temp_r31->unk16 = HuPadBtn[temp_r31->unk04]; } - } else { + } + else { temp_r31->unk10 = temp_r31->unk12 = 0; temp_r31->unk14 = temp_r31->unk16 = 0; } @@ -807,7 +811,7 @@ static void fn_1_22A4(omObjData *arg0) { HuAudFXPlay(0x523); temp_r31->unk07 = 0; Hu3DModelShadowReset(temp_r29); - Hu3DModelAttrSet(temp_r29, 1); + Hu3DModelAttrSet(temp_r29, HU3D_ATTR_DISPOFF); lbl_1_data_0--; temp_r28 = fn_1_400C(DATA_MAKE_NUM(DATADIR_M403, 19), 100, fn_1_40A8); Hu3DModelPosSet(temp_r28, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); @@ -816,7 +820,8 @@ static void fn_1_22A4(omObjData *arg0) { } if (fn_1_8264() != 0) { temp_r31->unkA0 = 0; - } else if (!(temp_r31->unk07 & 2) && temp_r31->unkA0 == 0) { + } + else if (!(temp_r31->unk07 & 2) && temp_r31->unkA0 == 0) { omVibrate(temp_r31->unk00, 12, 6, 6); temp_r31->unkA0 = 1; } @@ -824,7 +829,8 @@ static void fn_1_22A4(omObjData *arg0) { } } -static void fn_1_2598(omObjData *arg0) { +static void fn_1_2598(omObjData *arg0) +{ Vec sp38[6]; Vec sp14; Vec sp8; @@ -867,7 +873,7 @@ static void fn_1_2598(omObjData *arg0) { break; case 1: temp_r31->unk5C = 2; - temp_r31->unk5E = (s32) (60.0f * (1.2f - 0.2f * temp_r28) * (fn_1_4528() / 65536.0f)); + temp_r31->unk5E = (s32)(60.0f * (1.2f - 0.2f * temp_r28) * (fn_1_4528() / 65536.0f)); temp_r31->unk60 = 500.0f * ((fn_1_4528() - 0x8000) / 32768.0f); temp_r31->unk64 = 200.0f * ((fn_1_4528() - 0x8000) / 32768.0f); var_r27 = temp_r31->unk10; @@ -880,10 +886,12 @@ static void fn_1_2598(omObjData *arg0) { var_f31 = fn_1_59F4(&sp8); if (var_f31 < 20.0f) { temp_r31->unk5C = 3; - } else { + } + else { if (var_f31 >= 100.0f) { var_f28 = 0.8f; - } else { + } + else { var_f28 = 0.4f; } var_f30 = fn_1_457C(temp_r31->unk3C, atan2d(sp8.x, sp8.z), var_f28); @@ -895,16 +903,20 @@ static void fn_1_2598(omObjData *arg0) { if (temp_r31->unk5E == 0) { temp_r31->unk5E = -1; } - } else if (temp_r31->unk5E >= 0) { + } + else if (temp_r31->unk5E >= 0) { if (temp_r31->unk5E == 0) { if (var_f31 < 150.0f && temp_r31->unk0E != 0) { temp_r31->unk5C = 3; - } else if ((s32) ((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { + } + else if ((s32)((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { temp_r31->unk5C = 4; - } else { + } + else { temp_r31->unk5C = 1; } - } else { + } + else { temp_r31->unk5E--; } } @@ -916,16 +928,19 @@ static void fn_1_2598(omObjData *arg0) { sp8.z = temp_r31->unk64 - temp_r31->unk2C.z; if (fn_1_59F4(&sp8) >= 30.000002f && temp_r31->unk0E == 0) { temp_r31->unk5C = 2; - } else if (fn_1_8264() == 0) { + } + else if (fn_1_8264() == 0) { temp_r31->unk5C = 0; - } else { + } + else { if (temp_r31->unk5E > 0) { temp_r31->unk5E--; } if (temp_r31->unk5E == 0) { - if ((s32) ((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { + if ((s32)((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { temp_r31->unk5C = 4; - } else { + } + else { temp_r31->unk5C = 1; } } @@ -934,8 +949,8 @@ static void fn_1_2598(omObjData *arg0) { case 4: temp_r24 = fn_1_82D0(&sp38[0]); for (i = 0; i < temp_r24; i++) { - PSVECSubtract(&sp38[i], &temp_r31->unk2C, &sp8); - sp20[i] = PSVECMag(&sp8); + VECSubtract(&sp38[i], &temp_r31->unk2C, &sp8); + sp20[i] = VECMag(&sp8); } for (i = 0; i < temp_r24 - 1; i++) { for (var_r29 = i + 1; var_r29 < temp_r24; var_r29++) { @@ -972,7 +987,8 @@ static void fn_1_2598(omObjData *arg0) { temp_r31->unk16 = var_r20; } -static void fn_1_2FDC(omObjData *arg0) { +static void fn_1_2FDC(omObjData *arg0) +{ float var_f29; Unkm403Struct_01 *temp_r31; s32 temp_r25; @@ -1000,7 +1016,8 @@ static void fn_1_2FDC(omObjData *arg0) { if (temp_r31->unk1C >= 6.0f) { var_r28 = 2; var_r27 = 1; - } else { + } + else { var_r28 = 1; var_r27 = 1; } @@ -1012,7 +1029,8 @@ static void fn_1_2FDC(omObjData *arg0) { temp_r31->unk24 -= 0.5f * temp_r31->unk28; } temp_r31->unk1C *= 1.0 + 0.25 * cosd(90.0f * (temp_r31->unk24 / (0.5f * temp_r31->unk28))); - } else { + } + else { temp_r31->unk24 = 0.0f; temp_r31->unk1C = 0.0f; var_r28 = 0; @@ -1024,7 +1042,8 @@ static void fn_1_2FDC(omObjData *arg0) { var_r27 = 0; if (Hu3DData[temp_r25].unk_0C == -1 && CharModelMotionEndCheck(temp_r31->unk01)) { temp_r31->unk48 += -2.4333334f; - } else { + } + else { temp_r31->unk48 = 0.0f; } if (temp_r31->unk0C != 0) { @@ -1033,7 +1052,8 @@ static void fn_1_2FDC(omObjData *arg0) { temp_r31->unk0D = 0; var_r28 = 5; var_r27 = 0; - } else { + } + else { temp_r31->unk48 *= -0.1f; temp_r31->unk0C = 0; var_r28 = 4; @@ -1062,9 +1082,10 @@ static void fn_1_2FDC(omObjData *arg0) { } if (temp_r31->unk07 & 4) { if (temp_r31->unk0A & 2) { - Hu3DModelAttrSet(temp_r25, 1); - } else { - Hu3DModelAttrReset(temp_r25, 1); + Hu3DModelAttrSet(temp_r25, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(temp_r25, HU3D_ATTR_DISPOFF); } if (--temp_r31->unk0A == 0) { temp_r31->unk07 &= ~4; @@ -1087,7 +1108,8 @@ static void fn_1_2FDC(omObjData *arg0) { omSetRot(arg0, temp_r31->unk38, temp_r31->unk3C, temp_r31->unk40); } -static void fn_1_3800(void) { +static void fn_1_3800(void) +{ s32 var_r29; s32 i; Unkm403Struct_01 *temp_r30; @@ -1104,13 +1126,14 @@ static void fn_1_3800(void) { } } -static s32 fn_1_3894(void) { +static s32 fn_1_3894(void) +{ Vec sp14[4]; Vec sp8; float var_f31; float var_f30; s32 var_r26; - omObjData* temp_r25; + omObjData *temp_r25; Unkm403Struct_01 *temp_r28; Unkm403Struct_01 *temp_r27; Unkm403Struct_01 *temp_r31; @@ -1127,14 +1150,14 @@ static s32 fn_1_3894(void) { for (j = i + 1; j < 4; j++) { temp_r27 = lbl_1_bss_34[j]->data; if (temp_r27->unk07 != 0) { - PSVECSubtract(&temp_r28->unk2C, &temp_r27->unk2C, &sp8); - var_f31 = PSVECMag(&sp8); + VECSubtract(&temp_r28->unk2C, &temp_r27->unk2C, &sp8); + var_f31 = VECMag(&sp8); if (var_f31 < 80.0f) { - PSVECNormalize(&sp8, &sp8); + VECNormalize(&sp8, &sp8); var_f30 = 0.0001f + 0.5f * (80.0f - var_f31); - PSVECScale(&sp8, &sp8, var_f30); - PSVECAdd(&sp14[i], &sp8, &sp14[i]); - PSVECSubtract(&sp14[j], &sp8, &sp14[j]); + VECScale(&sp8, &sp8, var_f30); + VECAdd(&sp14[i], &sp8, &sp14[i]); + VECSubtract(&sp14[j], &sp8, &sp14[j]); temp_r28->unk0E++; temp_r27->unk0E++; var_r26++; @@ -1147,7 +1170,7 @@ static s32 fn_1_3894(void) { temp_r25 = lbl_1_bss_34[i]; temp_r31 = temp_r25->data; if (temp_r31->unk07 != 0) { - PSVECAdd(&temp_r31->unk2C, &sp14[i], &temp_r31->unk2C); + VECAdd(&temp_r31->unk2C, &sp14[i], &temp_r31->unk2C); if (temp_r31->unk2C.x > 660.0f) { temp_r31->unk2C.x = 660.0f; } @@ -1166,7 +1189,8 @@ static s32 fn_1_3894(void) { return var_r26; } -static void fn_1_3B80(omObjData *arg0) { +static void fn_1_3B80(omObjData *arg0) +{ s32 sp8[4]; s32 var_r30; s32 i; @@ -1178,22 +1202,24 @@ static void fn_1_3B80(omObjData *arg0) { for (i = 0; i < 4; i++) { fn_1_3E4C(lbl_1_bss_34[i]); } - } else { + } + else { for (i = 0, var_r30 = 0; i < 4; i++) { - ((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk9C = 0; - if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + ((Unkm403Struct_01 *)lbl_1_bss_34[i]->data)->unk9C = 0; + if (((Unkm403Struct_01 *)lbl_1_bss_34[i]->data)->unk07 != 0) { sp8[var_r30++] = i; } } if (var_r30 != 0) { - i = sp8[(s32) (var_r30 * (fn_1_4528() / 65536.0f))]; - ((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk9C = 1; + i = sp8[(s32)(var_r30 * (fn_1_4528() / 65536.0f))]; + ((Unkm403Struct_01 *)lbl_1_bss_34[i]->data)->unk9C = 1; } } fn_1_3800(); } -static void fn_1_3D6C(Vec *arg0, Vec *arg1) { +static void fn_1_3D6C(Vec *arg0, Vec *arg1) +{ Vec sp18[6]; Vec spC; float var_f31; @@ -1204,8 +1230,8 @@ static void fn_1_3D6C(Vec *arg0, Vec *arg1) { temp_r30 = fn_1_8470(sp18); var_f31 = 2000.0f; for (i = 0; i < temp_r30; i++) { - PSVECSubtract(&sp18[i], arg0, &spC); - var_f30 = PSVECMag(&spC); + VECSubtract(&sp18[i], arg0, &spC); + var_f30 = VECMag(&spC); if (var_f30 >= var_f31) { continue; } @@ -1214,7 +1240,8 @@ static void fn_1_3D6C(Vec *arg0, Vec *arg1) { } } -static void fn_1_3E4C(omObjData *arg0) { +static void fn_1_3E4C(omObjData *arg0) +{ Vec sp8; float var_f30; float var_f31; @@ -1232,14 +1259,16 @@ static void fn_1_3E4C(omObjData *arg0) { if (fn_1_86A0(&temp_r31->unk2C, &sp8) != 0) { temp_r31->unk2C.x = sp8.x; temp_r31->unk2C.z = sp8.z; - } else { + } + else { if (fn_1_7F78(temp_r31->unk2C.x, temp_r31->unk2C.z) - 10.0f < 100.0f) { temp_r31->unk07 |= 2; } var_f31 = var_f30 / lbl_1_data_134[temp_r31->unk01]; } } - } else { + } + else { var_f31 = var_f30 / lbl_1_data_134[temp_r31->unk01]; } if (arg0->scale.y < var_f31) { @@ -1249,7 +1278,8 @@ static void fn_1_3E4C(omObjData *arg0) { } } -static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2) { +static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2) +{ AnimData *var_r29; ParticleData *temp_r31; s32 temp_r30; @@ -1263,7 +1293,8 @@ static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2) { return temp_r30; } -static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix) { +static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix) +{ float temp_f31; float temp_f30; float temp_f29; @@ -1311,60 +1342,69 @@ static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix) { DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } -static s32 fn_1_4528(void) { +static s32 fn_1_4528(void) +{ lbl_1_data_154 *= 0x41C64E6D; lbl_1_data_154 += 0x3039; return lbl_1_data_154 >> 16; } -static float fn_1_457C(float arg0, float arg1, float arg2) { +static float fn_1_457C(float arg0, float arg1, float arg2) +{ float var_f31; if (arg0 > 180.0f) { arg0 -= 360.0f; - } else if (arg0 <= -180.0f) { + } + else if (arg0 <= -180.0f) { arg0 += 360.0f; } if (arg1 > 180.0f) { arg1 -= 360.0f; - } else if (arg1 <= -180.0f) { + } + else if (arg1 <= -180.0f) { arg1 += 360.0f; } var_f31 = arg0 - arg1; if (var_f31 > 180.0f) { var_f31 -= 360.0f; - } else if (var_f31 <= -180.0f) { + } + else if (var_f31 <= -180.0f) { var_f31 += 360.0f; } arg0 = arg1 + var_f31 * arg2; if (arg0 > 180.0f) { arg0 -= 360.0f; - } else if (arg0 <= -180.0f) { + } + else if (arg0 <= -180.0f) { arg0 += 360.0f; } return arg0; } -static void fn_1_46E4(Mtx arg0, float arg1, float arg2, float arg3) { +static void fn_1_46E4(Mtx arg0, float arg1, float arg2, float arg3) +{ Mtx sp38; Mtx sp8; if (arg3 != 0.0f) { - PSMTXRotRad(arg0, 'Z', MTXDegToRad(arg3)); - } else { - PSMTXIdentity(arg0); + MTXRotRad(arg0, 'Z', MTXDegToRad(arg3)); + } + else { + MTXIdentity(arg0); } if (arg1 != 0.0f) { - PSMTXRotRad(sp38, 'X', MTXDegToRad(arg1)); - PSMTXConcat(sp38, arg0, arg0); + MTXRotRad(sp38, 'X', MTXDegToRad(arg1)); + MTXConcat(sp38, arg0, arg0); } if (arg2 != 0.0f) { - PSMTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); - PSMTXConcat(sp8, arg0, arg0); + MTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); + MTXConcat(sp8, arg0, arg0); } } -static void fn_1_4804(float *arg0, float *arg1) { +static void fn_1_4804(float *arg0, float *arg1) +{ float temp_f29; float var_f28; double var_f30; @@ -1374,7 +1414,8 @@ static void fn_1_4804(float *arg0, float *arg1) { temp_f29 = -arg0[2]; if (1.0 - temp_f29 * temp_f29 < 0.0) { var_f30 = -(1.0 - temp_f29 * temp_f29); - } else { + } + else { var_f30 = 1.0 - temp_f29 * temp_f29; } var_f28 = sqrtf(var_f30); @@ -1386,7 +1427,8 @@ static void fn_1_4804(float *arg0, float *arg1) { arg1[1] = atan2d(var_f28, temp_f29); } -static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3) { +static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3) +{ float temp_f31; float var_f30; @@ -1395,7 +1437,8 @@ static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3) { return var_f30; } -static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) { +static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) +{ s32 i; for (i = 0; i < 3; i++) { @@ -1403,12 +1446,14 @@ static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float } } -static float fn_1_4CA4(float arg0, float arg1, float arg2, float arg3) { +static float fn_1_4CA4(float arg0, float arg1, float arg2, float arg3) +{ float var_f31 = 2.0 * ((arg0 - 1.0) * arg1 + (1.0 - 2.0 * arg0) * arg2 + arg0 * arg3); return var_f31; } -static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) { +static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) +{ float spC[3]; float var_f29; s32 i; @@ -1422,14 +1467,16 @@ static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float for (i = 0; i < 3; i++) { *(arg3++) = var_f29 * spC[i]; } - } else { + } + else { *(arg3++) = 0.0f; *(arg3++) = 0.0f; *(arg3++) = 1.0f; } } -static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3) { +static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3) +{ float sp48[16]; float sp8[16]; double temp_f31; @@ -1441,7 +1488,8 @@ static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3) { sp48[i] = arg0[i + 1] - arg0[i]; if (sp48[i] == 0.0f) { sp8[i + 1] = 0.0f; - } else { + } + else { sp8[i + 1] = (arg1[i + 1] - arg1[i]) / sp48[i]; } } @@ -1456,13 +1504,15 @@ static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3) { for (i = arg3 - 2; i > 0; i--) { if (sp8[i] == 0.0f) { arg2[i] = 0.0f; - } else { + } + else { arg2[i] = (arg2[i] - sp48[i] * arg2[i + 1]) / sp8[i]; } } } -static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 arg4) { +static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 arg4) +{ float temp_f31; float temp_f30; float var_f29; @@ -1472,14 +1522,18 @@ static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 ar arg0 -= temp_r31; temp_f31 = arg1[temp_r31 + 1] - arg1[temp_r31]; temp_f30 = temp_f31 * arg0; - var_f29 = arg2[temp_r31] + temp_f30 * (temp_f30 * (3.0f * arg3[temp_r31] + temp_f30 * (arg3[temp_r31 + 1] - arg3[temp_r31]) / temp_f31) + ((arg2[temp_r31 + 1] - arg2[temp_r31]) / temp_f31 - temp_f31 * (2.0f * arg3[temp_r31] + arg3[temp_r31 + 1]))); + var_f29 = arg2[temp_r31] + + temp_f30 + * (temp_f30 * (3.0f * arg3[temp_r31] + temp_f30 * (arg3[temp_r31 + 1] - arg3[temp_r31]) / temp_f31) + + ((arg2[temp_r31 + 1] - arg2[temp_r31]) / temp_f31 - temp_f31 * (2.0f * arg3[temp_r31] + arg3[temp_r31 + 1]))); if (temp_f31 == 0.0f) { var_f29 = arg2[temp_r31]; } return var_f29; } -static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3) { +static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3) +{ Vec sp8; float temp_f31; float spD4[16]; @@ -1489,12 +1543,12 @@ static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3) { arg0[0] = 0.0f; for (i = 1; i < arg3; i++) { - PSVECSubtract(&arg1[i], &arg1[i - 1], &sp8); - arg0[i] = arg0[i - 1] + PSVECMag(&sp8); + VECSubtract(&arg1[i], &arg1[i - 1], &sp8); + arg0[i] = arg0[i - 1] + VECMag(&sp8); } for (j = 0; j < 3; j++) { for (i = 0; i < arg3; i++) { - spD4[i] = ((float*) &arg1[i])[j]; + spD4[i] = ((float *)&arg1[i])[j]; } fn_1_4FF4(arg0, spD4, sp94, arg3); for (i = 0; i < arg3; i++) { @@ -1503,7 +1557,8 @@ static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3) { } } -static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[][3], s32 arg5) { +static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[][3], s32 arg5) +{ float sp48[16]; float sp8[16]; s32 i; @@ -1511,14 +1566,15 @@ static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[ for (i = 0; i < 3; i++) { for (j = 0; j < arg5; j++) { - sp48[j] = ((float*) &arg3[j])[i]; + sp48[j] = ((float *)&arg3[j])[i]; sp8[j] = arg4[j][i]; } - ((float*) arg1)[i] = fn_1_52AC(arg0, arg2, sp48, sp8, arg5); + ((float *)arg1)[i] = fn_1_52AC(arg0, arg2, sp48, sp8, arg5); } } -static float fn_1_59F4(Vec *arg0) { +static float fn_1_59F4(Vec *arg0) +{ float var_f30; float var_f29; @@ -1529,31 +1585,36 @@ static float fn_1_59F4(Vec *arg0) { arg0->x *= var_f29; arg0->y *= var_f29; arg0->z *= var_f29; - } else { + } + else { arg0->x = arg0->y = arg0->z = 0.0f; } return var_f30; } -static void fn_1_5B8C(Vec arg0, Vec arg1, Vec *arg2, float arg3) { +static void fn_1_5B8C(Vec arg0, Vec arg1, Vec *arg2, float arg3) +{ if (arg3 <= 0.0f) { arg2->x = arg0.x; arg2->y = arg0.y; arg2->z = arg0.z; arg3 = 0.0f; - } else if (arg3 >= 1.0f) { + } + else if (arg3 >= 1.0f) { arg2->x = arg0.x + arg1.x; arg2->y = arg0.y + arg1.y; arg2->z = arg0.z + arg1.z; arg3 = 1.0f; - } else { + } + else { arg2->x = arg0.x + arg3 * arg1.x; arg2->y = arg0.y + arg3 * arg1.y; arg2->z = arg0.z + arg3 * arg1.z; } } -static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2) { +static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2) +{ float var_f31; float temp_f30; @@ -1565,7 +1626,8 @@ static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2) { return var_f31; } -static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2) { +static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2) +{ Vec sp44; float var_f31; @@ -1577,7 +1639,8 @@ static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2) { return (arg0->x - sp44.x) * (arg0->x - sp44.x) + (arg0->y - sp44.y) * (arg0->y - sp44.y) + (arg0->z - sp44.z) * (arg0->z - sp44.z); } -static float fn_1_605C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) { +static float fn_1_605C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ float var_f27; if (arg2->x * arg2->x + arg2->y * arg2->y + arg2->z * arg2->z == 0.0f) { diff --git a/src/REL/m403Dll/scene.c b/src/REL/m403Dll/scene.c index dfe0a620..b71d445f 100755 --- a/src/REL/m403Dll/scene.c +++ b/src/REL/m403Dll/scene.c @@ -1,8 +1,8 @@ #include "REL/m403Dll.h" #include "game/audio.h" #include "game/frand.h" -#include "game/hsfman.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" #include "game/object.h" @@ -53,298 +53,92 @@ static s32 lbl_1_bss_74; static s32 lbl_1_bss_70; static s32 lbl_1_bss_58[6]; -static Vec lbl_1_data_158[] = { - { 92.39f, 0.0f, 38.27f }, - { 100.0f, 0.0f, 0.0f }, - { 92.39f, 0.0f, -38.27f }, - { 70.71f, 0.0f, -70.71f }, - { 38.27f, 0.0f, -92.39f }, - { 0.0f, 0.0f, -100.0f }, - { -38.27f, 0.0f, -92.39f }, - { -70.71f, 0.0f, -70.71f }, - { -92.39f, 0.0f, -38.27f }, - { -100.0f, 0.0f, 0.0f }, - { -92.39f, 0.0f, 38.27f }, - { -70.71f, 0.0f, 70.71f }, - { -38.27f, 0.0f, 92.39f }, - { 0.0f, 0.0f, 100.0f }, - { 38.27f, 0.0f, 92.39f }, - { 70.71f, 0.0f, 70.71f } -}; +static Vec lbl_1_data_158[] = { { 92.39f, 0.0f, 38.27f }, { 100.0f, 0.0f, 0.0f }, { 92.39f, 0.0f, -38.27f }, { 70.71f, 0.0f, -70.71f }, + { 38.27f, 0.0f, -92.39f }, { 0.0f, 0.0f, -100.0f }, { -38.27f, 0.0f, -92.39f }, { -70.71f, 0.0f, -70.71f }, { -92.39f, 0.0f, -38.27f }, + { -100.0f, 0.0f, 0.0f }, { -92.39f, 0.0f, 38.27f }, { -70.71f, 0.0f, 70.71f }, { -38.27f, 0.0f, 92.39f }, { 0.0f, 0.0f, 100.0f }, + { 38.27f, 0.0f, 92.39f }, { 70.71f, 0.0f, 70.71f } }; -static Vec lbl_1_data_218[] = { - { 55.43f, 0.0f, 22.96f }, - { 60.0f, 0.0f, 0.0f }, - { 55.43f, 0.0f, -22.96f }, - { 42.43f, 0.0f, -42.43f }, - { 22.96f, 0.0f, -55.43f }, - { 0.0f, 0.0f, -60.0f }, - { -22.96f, 0.0f, -55.43f }, - { -42.43f, 0.0f, -42.43f }, - { -55.43f, 0.0f, -22.96f }, - { -60.0f, 0.0f, 0.0f }, - { -55.43f, 0.0f, 22.96f }, - { -42.43f, 0.0f, 42.43f }, - { -22.96f, 0.0f, 55.43f }, - { 0.0f, 0.0f, 60.0f }, - { 22.96f, 0.0f, 55.43f }, - { 42.43f, 0.0f, 42.43f } -}; +static Vec lbl_1_data_218[] = { { 55.43f, 0.0f, 22.96f }, { 60.0f, 0.0f, 0.0f }, { 55.43f, 0.0f, -22.96f }, { 42.43f, 0.0f, -42.43f }, + { 22.96f, 0.0f, -55.43f }, { 0.0f, 0.0f, -60.0f }, { -22.96f, 0.0f, -55.43f }, { -42.43f, 0.0f, -42.43f }, { -55.43f, 0.0f, -22.96f }, + { -60.0f, 0.0f, 0.0f }, { -55.43f, 0.0f, 22.96f }, { -42.43f, 0.0f, 42.43f }, { -22.96f, 0.0f, 55.43f }, { 0.0f, 0.0f, 60.0f }, + { 22.96f, 0.0f, 55.43f }, { 42.43f, 0.0f, 42.43f } }; -static Vec lbl_1_data_2D8[] = { - { 38.79f, 0.0f, -53.4f }, - { 0.0f, 0.0f, -120.0f }, - { -38.79f, 0.0f, -53.4f }, - { -114.13f, 0.0f, -37.08f }, - { -62.77f, 0.0f, 20.4f }, - { -70.53f, 0.0f, 97.08f }, - { 0.0f, 0.0f, 66.0f }, - { 70.53f, 0.0f, 97.08f }, - { 62.77f, 0.0f, 20.4f }, - { 114.13f, 0.0f, -37.08f } -}; +static Vec lbl_1_data_2D8[] + = { { 38.79f, 0.0f, -53.4f }, { 0.0f, 0.0f, -120.0f }, { -38.79f, 0.0f, -53.4f }, { -114.13f, 0.0f, -37.08f }, { -62.77f, 0.0f, 20.4f }, + { -70.53f, 0.0f, 97.08f }, { 0.0f, 0.0f, 66.0f }, { 70.53f, 0.0f, 97.08f }, { 62.77f, 0.0f, 20.4f }, { 114.13f, 0.0f, -37.08f } }; -static Vec lbl_1_data_350[] = { - { 21.34f, 0.0f, -29.37f }, - { 0.0f, 0.0f, -66.0f }, - { -21.34f, 0.0f, -29.37f }, - { -62.77f, 0.0f, -20.4f }, - { -34.52f, 0.0f, 11.22f }, - { -38.79f, 0.0f, 53.4f }, - { 0.0f, 0.0f, 36.3f }, - { 38.79f, 0.0f, 53.4f }, - { 34.52f, 0.0f, 11.22f }, - { 62.77f, 0.0f, -20.4f } -}; +static Vec lbl_1_data_350[] + = { { 21.34f, 0.0f, -29.37f }, { 0.0f, 0.0f, -66.0f }, { -21.34f, 0.0f, -29.37f }, { -62.77f, 0.0f, -20.4f }, { -34.52f, 0.0f, 11.22f }, + { -38.79f, 0.0f, 53.4f }, { 0.0f, 0.0f, 36.3f }, { 38.79f, 0.0f, 53.4f }, { 34.52f, 0.0f, 11.22f }, { 62.77f, 0.0f, -20.4f } }; -static Vec lbl_1_data_3C8[] = { - { 110.87f, 0.0f, 45.92f }, - { 120.0f, 0.0f, 0.0f }, - { 110.87f, 0.0f, -45.92f }, - { 84.85f, 0.0f, -84.85f }, - { 45.92f, 0.0f, -110.87f }, - { 0.0f, 0.0f, -120.0f }, - { -45.92f, 0.0f, -110.87f }, - { -84.85f, 0.0f, -84.85f }, - { -110.87f, 0.0f, -45.92f }, - { -120.0f, 0.0f, 0.0f }, - { -110.87f, 0.0f, 45.92f }, - { -84.85f, 0.0f, 84.85f }, - { -45.92f, 0.0f, 110.87f }, - { 0.0f, 0.0f, 120.0f }, - { 45.92f, 0.0f, 110.87f }, - { 84.85f, 0.0f, 84.85f } -}; +static Vec lbl_1_data_3C8[] = { { 110.87f, 0.0f, 45.92f }, { 120.0f, 0.0f, 0.0f }, { 110.87f, 0.0f, -45.92f }, { 84.85f, 0.0f, -84.85f }, + { 45.92f, 0.0f, -110.87f }, { 0.0f, 0.0f, -120.0f }, { -45.92f, 0.0f, -110.87f }, { -84.85f, 0.0f, -84.85f }, { -110.87f, 0.0f, -45.92f }, + { -120.0f, 0.0f, 0.0f }, { -110.87f, 0.0f, 45.92f }, { -84.85f, 0.0f, 84.85f }, { -45.92f, 0.0f, 110.87f }, { 0.0f, 0.0f, 120.0f }, + { 45.92f, 0.0f, 110.87f }, { 84.85f, 0.0f, 84.85f } }; -static Vec lbl_1_data_488[] = { - { 73.17f, 0.0f, 30.31f }, - { 79.2f, 0.0f, 0.0f }, - { 73.17f, 0.0f, -30.31f }, - { 56.0f, 0.0f, -56.0f }, - { 30.31f, 0.0f, -73.17f }, - { 0.0f, 0.0f, -79.2f }, - { -30.31f, 0.0f, -73.17f }, - { -56.0f, 0.0f, -56.0f }, - { -73.17f, 0.0f, -30.31f }, - { -79.2f, 0.0f, 0.0f }, - { -73.17f, 0.0f, 30.31f }, - { -56.0f, 0.0f, 56.0f }, - { -30.31f, 0.0f, 73.17f }, - { 0.0f, 0.0f, 79.2f }, - { 30.31f, 0.0f, 73.17f }, - { 56.0f, 0.0f, 56.0f } -}; +static Vec lbl_1_data_488[] = { { 73.17f, 0.0f, 30.31f }, { 79.2f, 0.0f, 0.0f }, { 73.17f, 0.0f, -30.31f }, { 56.0f, 0.0f, -56.0f }, + { 30.31f, 0.0f, -73.17f }, { 0.0f, 0.0f, -79.2f }, { -30.31f, 0.0f, -73.17f }, { -56.0f, 0.0f, -56.0f }, { -73.17f, 0.0f, -30.31f }, + { -79.2f, 0.0f, 0.0f }, { -73.17f, 0.0f, 30.31f }, { -56.0f, 0.0f, 56.0f }, { -30.31f, 0.0f, 73.17f }, { 0.0f, 0.0f, 79.2f }, + { 30.31f, 0.0f, 73.17f }, { 56.0f, 0.0f, 56.0f } }; -static Vec lbl_1_data_548[] = { - { 48.49f, 0.0f, -66.74f }, - { 0.0f, 0.0f, -150.0f }, - { -48.49f, 0.0f, -66.74f }, - { -142.66f, 0.0f, -46.35f }, - { -78.46f, 0.0f, 25.49f }, - { -88.17f, 0.0f, 121.35f }, - { 0.0f, 0.0f, 82.5f }, - { 88.17f, 0.0f, 121.35f }, - { 78.46f, 0.0f, 25.49f }, - { 142.66f, 0.0f, -46.35f } -}; +static Vec lbl_1_data_548[] + = { { 48.49f, 0.0f, -66.74f }, { 0.0f, 0.0f, -150.0f }, { -48.49f, 0.0f, -66.74f }, { -142.66f, 0.0f, -46.35f }, { -78.46f, 0.0f, 25.49f }, + { -88.17f, 0.0f, 121.35f }, { 0.0f, 0.0f, 82.5f }, { 88.17f, 0.0f, 121.35f }, { 78.46f, 0.0f, 25.49f }, { 142.66f, 0.0f, -46.35f } }; -static Vec lbl_1_data_5C0[] = { - { 29.09f, 0.0f, -40.05f }, - { 0.0f, 0.0f, -90.0f }, - { -29.09f, 0.0f, -40.05f }, - { -85.59f, 0.0f, -27.81f }, - { -47.08f, 0.0f, 15.3f }, - { -52.9f, 0.0f, 72.81f }, - { 0.0f, 0.0f, 49.5f }, - { 52.9f, 0.0f, 72.81f }, - { 47.08f, 0.0f, 15.3f }, - { 85.59f, 0.0f, -27.81f } -}; +static Vec lbl_1_data_5C0[] + = { { 29.09f, 0.0f, -40.05f }, { 0.0f, 0.0f, -90.0f }, { -29.09f, 0.0f, -40.05f }, { -85.59f, 0.0f, -27.81f }, { -47.08f, 0.0f, 15.3f }, + { -52.9f, 0.0f, 72.81f }, { 0.0f, 0.0f, 49.5f }, { 52.9f, 0.0f, 72.81f }, { 47.08f, 0.0f, 15.3f }, { 85.59f, 0.0f, -27.81f } }; -static Vec lbl_1_data_638[] = { - { 129.1f, 0.0f, 54.6f }, - { 140.0f, 0.0f, 0.0f }, - { 129.3f, 0.0f, -53.6f }, - { 99.0f, 0.0f, -99.0f }, - { 53.6f, 0.0f, -129.3f }, - { 0.0f, 0.0f, -140.0f }, - { -53.6f, 0.0f, -129.3f }, - { -99.0f, 0.0f, -99.0f }, - { -129.4f, 0.0f, -53.5f }, - { -140.0f, 0.0f, 0.0f }, - { -136.0f, 0.0f, 20.4f }, - { -102.1f, 0.0f, -7.6f }, - { -70.0f, 0.0f, -14.0f }, - { -37.8f, 0.0f, -7.6f }, - { -10.6f, 0.0f, 10.6f }, - { 7.6f, 0.0f, 37.8f }, - { 14.0f, 0.0f, 70.0f }, - { 7.6f, 0.0f, 102.2f }, - { -20.4f, 0.0f, 136.0f }, - { 0.1f, 0.0f, 140.1f }, - { 53.9f, 0.0f, 129.5f }, - { 99.5f, 0.0f, 99.0f } -}; +static Vec lbl_1_data_638[] = { { 129.1f, 0.0f, 54.6f }, { 140.0f, 0.0f, 0.0f }, { 129.3f, 0.0f, -53.6f }, { 99.0f, 0.0f, -99.0f }, + { 53.6f, 0.0f, -129.3f }, { 0.0f, 0.0f, -140.0f }, { -53.6f, 0.0f, -129.3f }, { -99.0f, 0.0f, -99.0f }, { -129.4f, 0.0f, -53.5f }, + { -140.0f, 0.0f, 0.0f }, { -136.0f, 0.0f, 20.4f }, { -102.1f, 0.0f, -7.6f }, { -70.0f, 0.0f, -14.0f }, { -37.8f, 0.0f, -7.6f }, + { -10.6f, 0.0f, 10.6f }, { 7.6f, 0.0f, 37.8f }, { 14.0f, 0.0f, 70.0f }, { 7.6f, 0.0f, 102.2f }, { -20.4f, 0.0f, 136.0f }, { 0.1f, 0.0f, 140.1f }, + { 53.9f, 0.0f, 129.5f }, { 99.5f, 0.0f, 99.0f } }; -static Vec lbl_1_data_740[] = { - { 95.9f, 0.0f, 42.9f }, - { 106.6f, 0.0f, 0.4f }, - { 98.4f, 0.0f, -37.2f }, - { 81.7f, 0.0f, -65.9f }, - { 55.4f, 0.0f, -89.6f }, - { 11.5f, 0.0f, -101.7f }, - { -24.5f, 0.0f, -99.9f }, - { -60.9f, 0.0f, -88.6f }, - { -98.7f, 0.0f, -64.4f }, - { -110.4f, 0.0f, -41.5f }, - { -110.4f, 0.0f, -30.8f }, - { -90.4f, 0.0f, -42.3f }, - { -53.8f, 0.0f, -48.5f }, - { -14.6f, 0.0f, -40.5f }, - { 17.1f, 0.0f, -16.3f }, - { 35.8f, 0.0f, 28.2f }, - { 35.8f, 0.0f, 65.6f }, - { 24.7f, 0.0f, 101.6f }, - { 19.6f, 0.0f, 114.6f }, - { 34.9f, 0.0f, 114.5f }, - { 62.9f, 0.0f, 99.0f }, - { 83.0f, 0.0f, 73.2f } -}; +static Vec lbl_1_data_740[] = { { 95.9f, 0.0f, 42.9f }, { 106.6f, 0.0f, 0.4f }, { 98.4f, 0.0f, -37.2f }, { 81.7f, 0.0f, -65.9f }, + { 55.4f, 0.0f, -89.6f }, { 11.5f, 0.0f, -101.7f }, { -24.5f, 0.0f, -99.9f }, { -60.9f, 0.0f, -88.6f }, { -98.7f, 0.0f, -64.4f }, + { -110.4f, 0.0f, -41.5f }, { -110.4f, 0.0f, -30.8f }, { -90.4f, 0.0f, -42.3f }, { -53.8f, 0.0f, -48.5f }, { -14.6f, 0.0f, -40.5f }, + { 17.1f, 0.0f, -16.3f }, { 35.8f, 0.0f, 28.2f }, { 35.8f, 0.0f, 65.6f }, { 24.7f, 0.0f, 101.6f }, { 19.6f, 0.0f, 114.6f }, + { 34.9f, 0.0f, 114.5f }, { 62.9f, 0.0f, 99.0f }, { 83.0f, 0.0f, 73.2f } }; -static Vec lbl_1_data_848[] = { - { 110.9f, 0.0f, 45.9f }, - { 120.0f, 0.0f, 0.0f }, - { 110.9f, 0.0f, -45.8f }, - { 84.8f, 0.0f, -84.9f }, - { 45.9f, 0.0f, -110.9f }, - { 0.0f, 0.0f, -120.0f }, - { -45.9f, 0.0f, -110.9f }, - { -84.9f, 0.0f, -84.8f }, - { -110.9f, 0.0f, -45.9f }, - { -120.0f, 0.0f, 0.0f }, - { -116.5f, 0.0f, 17.5f }, - { -87.6f, 0.0f, -6.6f }, - { -60.0f, 0.0f, -12.0f }, - { -32.4f, 0.0f, -6.5f }, - { -9.1f, 0.0f, 9.1f }, - { 6.5f, 0.0f, 32.5f }, - { 12.0f, 0.0f, 60.0f }, - { 6.5f, 0.0f, 87.6f }, - { -17.5f, 0.0f, 116.5f }, - { 0.0f, 0.0f, 120.0f }, - { 45.9f, 0.0f, 110.9f }, - { 84.8f, 0.0f, 84.9f } -}; +static Vec lbl_1_data_848[] = { { 110.9f, 0.0f, 45.9f }, { 120.0f, 0.0f, 0.0f }, { 110.9f, 0.0f, -45.8f }, { 84.8f, 0.0f, -84.9f }, + { 45.9f, 0.0f, -110.9f }, { 0.0f, 0.0f, -120.0f }, { -45.9f, 0.0f, -110.9f }, { -84.9f, 0.0f, -84.8f }, { -110.9f, 0.0f, -45.9f }, + { -120.0f, 0.0f, 0.0f }, { -116.5f, 0.0f, 17.5f }, { -87.6f, 0.0f, -6.6f }, { -60.0f, 0.0f, -12.0f }, { -32.4f, 0.0f, -6.5f }, + { -9.1f, 0.0f, 9.1f }, { 6.5f, 0.0f, 32.5f }, { 12.0f, 0.0f, 60.0f }, { 6.5f, 0.0f, 87.6f }, { -17.5f, 0.0f, 116.5f }, { 0.0f, 0.0f, 120.0f }, + { 45.9f, 0.0f, 110.9f }, { 84.8f, 0.0f, 84.9f } }; -static Vec lbl_1_data_950[] = { - { 80.0f, 0.0f, 31.0f }, - { 83.9f, 0.0f, -0.1f }, - { 77.2f, 0.0f, -31.7f }, - { 60.4f, 0.0f, -56.8f }, - { 35.6f, 0.0f, -77.4f }, - { -0.5f, 0.0f, -84.1f }, - { -31.5f, 0.0f, -82.9f }, - { -58.9f, 0.0f, -71.4f }, - { -86.3f, 0.0f, -49.4f }, - { -91.5f, 0.0f, -36.4f }, - { -91.5f, 0.0f, -27.3f }, - { -82.1f, 0.0f, -29.8f }, - { -54.7f, 0.0f, -36.2f }, - { -21.9f, 0.0f, -30.9f }, - { 13.3f, 0.0f, -10.2f }, - { 28.3f, 0.0f, 18.3f }, - { 33.4f, 0.0f, 58.4f }, - { 28.0f, 0.0f, 81.6f }, - { 20.7f, 0.0f, 93.3f }, - { 30.4f, 0.0f, 93.3f }, - { 55.4f, 0.0f, 82.2f }, - { 70.4f, 0.0f, 59.3f } -}; +static Vec lbl_1_data_950[] = { { 80.0f, 0.0f, 31.0f }, { 83.9f, 0.0f, -0.1f }, { 77.2f, 0.0f, -31.7f }, { 60.4f, 0.0f, -56.8f }, + { 35.6f, 0.0f, -77.4f }, { -0.5f, 0.0f, -84.1f }, { -31.5f, 0.0f, -82.9f }, { -58.9f, 0.0f, -71.4f }, { -86.3f, 0.0f, -49.4f }, + { -91.5f, 0.0f, -36.4f }, { -91.5f, 0.0f, -27.3f }, { -82.1f, 0.0f, -29.8f }, { -54.7f, 0.0f, -36.2f }, { -21.9f, 0.0f, -30.9f }, + { 13.3f, 0.0f, -10.2f }, { 28.3f, 0.0f, 18.3f }, { 33.4f, 0.0f, 58.4f }, { 28.0f, 0.0f, 81.6f }, { 20.7f, 0.0f, 93.3f }, { 30.4f, 0.0f, 93.3f }, + { 55.4f, 0.0f, 82.2f }, { 70.4f, 0.0f, 59.3f } }; -static s32 lbl_1_data_A58[] = { - DATA_MAKE_NUM(DATADIR_M403, 4), - DATA_MAKE_NUM(DATADIR_M403, 5), - DATA_MAKE_NUM(DATADIR_M403, 6), - DATA_MAKE_NUM(DATADIR_M403, 9), - DATA_MAKE_NUM(DATADIR_M403, 12), - DATA_MAKE_NUM(DATADIR_M403, 15), - DATA_MAKE_NUM(DATADIR_M403, 7), - DATA_MAKE_NUM(DATADIR_M403, 8), - DATA_MAKE_NUM(DATADIR_M403, 10), - DATA_MAKE_NUM(DATADIR_M403, 11), - DATA_MAKE_NUM(DATADIR_M403, 13), - DATA_MAKE_NUM(DATADIR_M403, 14) -}; +static s32 lbl_1_data_A58[] + = { DATA_MAKE_NUM(DATADIR_M403, 4), DATA_MAKE_NUM(DATADIR_M403, 5), DATA_MAKE_NUM(DATADIR_M403, 6), DATA_MAKE_NUM(DATADIR_M403, 9), + DATA_MAKE_NUM(DATADIR_M403, 12), DATA_MAKE_NUM(DATADIR_M403, 15), DATA_MAKE_NUM(DATADIR_M403, 7), DATA_MAKE_NUM(DATADIR_M403, 8), + DATA_MAKE_NUM(DATADIR_M403, 10), DATA_MAKE_NUM(DATADIR_M403, 11), DATA_MAKE_NUM(DATADIR_M403, 13), DATA_MAKE_NUM(DATADIR_M403, 14) }; -static Vec lbl_1_data_A88[] = { - { -400.0f, 0.0f, 300.0f }, - { 0.0f, 0.0f, 300.0f }, - { 400.0f, 0.0f, 300.0f }, - { -400.0f, 0.0f, 700.0f }, - { 0.0f, 0.0f, 700.0f }, - { 400.0f, 0.0f, 700.0f } -}; +static Vec lbl_1_data_A88[] = { { -400.0f, 0.0f, 300.0f }, { 0.0f, 0.0f, 300.0f }, { 400.0f, 0.0f, 300.0f }, { -400.0f, 0.0f, 700.0f }, + { 0.0f, 0.0f, 700.0f }, { 400.0f, 0.0f, 700.0f } }; static s32 lbl_1_data_AD0[] = { 6, 8, 10 }; static s32 lbl_1_data_ADC[] = { 7, 9, 11 }; static s32 lbl_1_data_AE8[] = { 1, 2, 3, 4, 5 }; -static Vec *lbl_1_data_AFC[] = { - lbl_1_data_3C8, - lbl_1_data_158, - lbl_1_data_548, - lbl_1_data_2D8, - lbl_1_data_638, - lbl_1_data_848 -}; +static Vec *lbl_1_data_AFC[] = { lbl_1_data_3C8, lbl_1_data_158, lbl_1_data_548, lbl_1_data_2D8, lbl_1_data_638, lbl_1_data_848 }; -static s32 lbl_1_data_B14[] = { - 16, 16, 10, 10, 22, 22 -}; +static s32 lbl_1_data_B14[] = { 16, 16, 10, 10, 22, 22 }; -static Vec lbl_1_data_B2C[] = { - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, -20.0f }, - { 0.0f, 0.0f, -20.0f }, - { 40.0f, 0.0f, -20.0f }, - { 40.0f, 0.0f, -20.0f } -}; +static Vec lbl_1_data_B2C[] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, -20.0f }, { 0.0f, 0.0f, -20.0f }, { 40.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f } }; -static Vec *lbl_1_data_B74[][2] = { - { lbl_1_data_3C8, lbl_1_data_488 }, - { lbl_1_data_158, lbl_1_data_218 }, - { lbl_1_data_548, lbl_1_data_5C0 }, - { lbl_1_data_2D8, lbl_1_data_350 }, - { lbl_1_data_638, lbl_1_data_740 }, - { lbl_1_data_848, lbl_1_data_950 } -}; +static Vec *lbl_1_data_B74[][2] = { { lbl_1_data_3C8, lbl_1_data_488 }, { lbl_1_data_158, lbl_1_data_218 }, { lbl_1_data_548, lbl_1_data_5C0 }, + { lbl_1_data_2D8, lbl_1_data_350 }, { lbl_1_data_638, lbl_1_data_740 }, { lbl_1_data_848, lbl_1_data_950 } }; -static s32 lbl_1_data_BA4[] = { - 16, 16, 10, 10, 22, 22 -}; +static s32 lbl_1_data_BA4[] = { 16, 16, 10, 10, 22, 22 }; -void fn_1_650C(Process *arg0) { +void fn_1_650C(Process *arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -379,21 +173,23 @@ void fn_1_650C(Process *arg0) { memset(lbl_1_bss_58, 0, sizeof(lbl_1_bss_58)); } -void fn_1_676C(void) { +void fn_1_676C(void) +{ fn_1_799C(); } -static void fn_1_678C(omObjData *arg0) { +static void fn_1_678C(omObjData *arg0) +{ arg0->stat |= 0x100; arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 16)); arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 17)); arg0->func = fn_1_6810; } -static void fn_1_6810(omObjData *arg0) { -} +static void fn_1_6810(omObjData *arg0) { } -static void fn_1_6814(omObjData *arg0) { +static void fn_1_6814(omObjData *arg0) +{ arg0->stat |= 0x100; arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 0)); arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 3)); @@ -408,7 +204,8 @@ static void fn_1_6814(omObjData *arg0) { arg0->func = fn_1_6980; } -static void fn_1_6980(omObjData *arg0) { +static void fn_1_6980(omObjData *arg0) +{ ModelData *var_r30; UnkBss9CData *var_r29; @@ -418,15 +215,18 @@ static void fn_1_6980(omObjData *arg0) { arg0->work[0]++; var_r30 = &Hu3DData[arg0->model[1]]; var_r30->rot.x = -120.0f * arg0->work[0] / 60.0f; - } else { + } + else { lbl_1_bss_78 ^= 1; lbl_1_bss_7C = 0; } - } else if (arg0->work[0] != 0) { + } + else if (arg0->work[0] != 0) { arg0->work[0]--; var_r30 = &Hu3DData[arg0->model[1]]; var_r30->rot.x = -120.0f * arg0->work[0] / 60.0f; - } else { + } + else { lbl_1_bss_78 ^= 1; lbl_1_bss_7C = 0; } @@ -452,7 +252,8 @@ static void fn_1_6980(omObjData *arg0) { } } -static void fn_1_6C98(omObjData *arg0) { +static void fn_1_6C98(omObjData *arg0) +{ UnkBss9CData *var_r29; s32 i; @@ -464,10 +265,10 @@ static void fn_1_6C98(omObjData *arg0) { } for (i = 0; i < 12U; i++) { var_r29->unk24[i] = Hu3DModelCreateFile(lbl_1_data_A58[i]); - Hu3DModelAttrSet(var_r29->unk24[i], 1); + Hu3DModelAttrSet(var_r29->unk24[i], HU3D_ATTR_DISPOFF); } arg0->model[0] = var_r29->unk24[0]; - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); var_r29->unk00_field0 = 0; var_r29->unk04 = 4 - lbl_1_bss_98; fn_1_6FE8(arg0); @@ -500,23 +301,25 @@ static void fn_1_6C98(omObjData *arg0) { arg0->func = fn_1_73E8; } -static void fn_1_6ED8(omObjData *arg0) { +static void fn_1_6ED8(omObjData *arg0) +{ Mtx sp38; Mtx sp8; s32 i; - PSMTXTrans(sp38, arg0->trans.x, arg0->trans.y, arg0->trans.z); + MTXTrans(sp38, arg0->trans.x, arg0->trans.y, arg0->trans.z); mtxRot(sp8, arg0->rot.x, arg0->rot.y, arg0->rot.z); - PSMTXConcat(sp38, sp8, sp38); + MTXConcat(sp38, sp8, sp38); for (i = 0; i < 6; i++) { - PSMTXTrans(sp8, lbl_1_data_A88[i].x, lbl_1_data_A88[i].y, lbl_1_data_A88[i].z); - PSMTXConcat(sp38, sp8, sp8); + MTXTrans(sp8, lbl_1_data_A88[i].x, lbl_1_data_A88[i].y, lbl_1_data_A88[i].z); + MTXConcat(sp38, sp8, sp8); Hu3DModelPosSet(arg0->model[i + 1], sp8[0][3], sp8[1][3], sp8[2][3]); Hu3DModelRotSet(arg0->model[i + 1], arg0->rot.x, arg0->rot.y, arg0->rot.z); } } -static void fn_1_6FE8(omObjData *arg0) { +static void fn_1_6FE8(omObjData *arg0) +{ UnkBss9CData *temp_r30; s32 temp_r29; s32 temp_r28; @@ -575,16 +378,17 @@ static void fn_1_6FE8(omObjData *arg0) { memcpy(lbl_1_bss_58, &temp_r30->unk0C, sizeof(temp_r30->unk0C)); for (i = 0; i < 6; i++) { if (arg0->model[i + 1] >= 0) { - Hu3DModelAttrSet(arg0->model[i + 1], 1); + Hu3DModelAttrSet(arg0->model[i + 1], HU3D_ATTR_DISPOFF); } } for (i = 0; i < 6; i++) { arg0->model[i + 1] = temp_r30->unk24[temp_r30->unk0C[i]]; - Hu3DModelAttrReset(arg0->model[i + 1], 1); + Hu3DModelAttrReset(arg0->model[i + 1], HU3D_ATTR_DISPOFF); } } -static void fn_1_73E8(omObjData *arg0) { +static void fn_1_73E8(omObjData *arg0) +{ UnkBss9CData *temp_r30; ModelData *var_r27; s32 i; @@ -605,10 +409,12 @@ static void fn_1_73E8(omObjData *arg0) { arg0->trans.z = -500.0f + 7.5f * lbl_1_bss_B0->work[0] / 60.0f; break; } - } else { + } + else { return; } - } else { + } + else { switch (temp_r30->unk04) { case 0: if (lbl_1_bss_84 != 0) { @@ -635,7 +441,8 @@ static void fn_1_73E8(omObjData *arg0) { Hu3DModelShadowReset(arg0->model[i]); Hu3DModelShadowMapSet(arg0->model[i]); } - } else { + } + else { temp_r30->unk08 += lbl_1_bss_80; if (temp_r30->unk08 > 90.0f) { temp_r30->unk00_field0 = 1; @@ -669,8 +476,9 @@ static void fn_1_73E8(omObjData *arg0) { fn_1_6ED8(arg0); } -static void fn_1_799C(void) { - omObjData* temp_r30; +static void fn_1_799C(void) +{ + omObjData *temp_r30; UnkBss9CData *temp_r29; s32 i; s32 j; @@ -693,7 +501,8 @@ static void fn_1_799C(void) { } } -static void fn_1_7A98(s16 arg0) { +static void fn_1_7A98(s16 arg0) +{ s16 i; HsfData *temp_r31; HsfObject *var_r28; @@ -711,7 +520,8 @@ static void fn_1_7A98(s16 arg0) { } } -static s32 fn_1_7B20(float arg0, float arg1) { +static s32 fn_1_7B20(float arg0, float arg1) +{ s32 var_r31; s32 var_r30; @@ -719,37 +529,44 @@ static s32 fn_1_7B20(float arg0, float arg1) { var_r30 = (arg1 + 400.0f) / 400.0f; if (var_r31 < 0) { var_r31 = 0; - } else if (var_r31 > 2) { + } + else if (var_r31 > 2) { var_r31 = 2; } if (var_r30 < 0) { var_r30 = 0; - } else if (var_r30 > 1) { + } + else if (var_r30 > 1) { var_r30 = 1; } return var_r31 + var_r30 * 3; } -static void fn_1_7BD4(s32 arg0, Vec *arg1) { +static void fn_1_7BD4(s32 arg0, Vec *arg1) +{ arg1->x = lbl_1_data_A88[arg0].x; arg1->y = lbl_1_data_A88[arg0].y; arg1->z = lbl_1_data_A88[arg0].z; } -static s32 fn_1_7C20(UnkBss9CData *arg0, s32 arg1) { +static s32 fn_1_7C20(UnkBss9CData *arg0, s32 arg1) +{ return arg0->unk0C[arg1]; } -void fn_1_7C30(float arg0) { +void fn_1_7C30(float arg0) +{ lbl_1_bss_8C = 1; lbl_1_bss_80 = arg0; } -void fn_1_7C50(s32 arg0) { +void fn_1_7C50(s32 arg0) +{ lbl_1_bss_74 = arg0; } -void fn_1_7C60(void) { +void fn_1_7C60(void) +{ float var_f30; lbl_1_bss_7C = 1; @@ -758,7 +575,8 @@ void fn_1_7C60(void) { HuAudFXPlay(0x524); } -static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2) { +static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2) +{ Mtx sp4C; Mtx sp1C; Vec sp10; @@ -780,16 +598,16 @@ static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2) { temp_r28 -= 6; fn_1_7BD4(temp_r21, &sp10); sp10 = lbl_1_data_A88[temp_r21]; - PSMTXTrans(sp4C, temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + MTXTrans(sp4C, temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); mtxRot(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); - PSMTXConcat(sp4C, sp1C, sp4C); - PSMTXTrans(sp1C, sp10.x, sp10.y, sp10.z); - PSMTXConcat(sp4C, sp1C, sp4C); + MTXConcat(sp4C, sp1C, sp4C); + MTXTrans(sp1C, sp10.x, sp10.y, sp10.z); + MTXConcat(sp4C, sp1C, sp4C); var_r30 = lbl_1_data_AFC[temp_r28]; temp_r23 = lbl_1_data_B14[temp_r28]; for (i = 0; i < temp_r23; i++) { - PSMTXTrans(sp1C, var_r30->x, var_r30->y, var_r30->z); - PSMTXConcat(sp4C, sp1C, sp1C); + MTXTrans(sp1C, var_r30->x, var_r30->y, var_r30->z); + MTXConcat(sp4C, sp1C, sp1C); arg2->x = sp1C[0][3]; arg2->y = sp1C[1][3]; arg2->z = sp1C[2][3]; @@ -799,7 +617,8 @@ static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2) { return temp_r23; } -float fn_1_7F78(float arg0, float arg1) { +float fn_1_7F78(float arg0, float arg1) +{ float temp_f30; float var_f31; omObjData *temp_r31; @@ -808,7 +627,8 @@ float fn_1_7F78(float arg0, float arg1) { temp_f30 = -(arg1 - temp_r31->trans.z); if (cosd(temp_r31->rot.x) <= 0.0) { var_f31 = 9999.0f; - } else { + } + else { var_f31 = temp_f30 * sind(temp_r31->rot.x) / cosd(temp_r31->rot.x); if (var_f31 > 9999.0f) { var_f31 = 9999.0f; @@ -817,19 +637,23 @@ float fn_1_7F78(float arg0, float arg1) { return var_f31; } -float fn_1_80D4(Vec *arg0, float arg1) { +float fn_1_80D4(Vec *arg0, float arg1) +{ return fn_1_7F78(0.0f, arg0->z - arg1); } -static s32 fn_1_8254(void) { +static s32 fn_1_8254(void) +{ return lbl_1_bss_7C; } -s32 fn_1_8264(void) { +s32 fn_1_8264(void) +{ return lbl_1_bss_88; } -static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1) { +static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1) +{ s32 var_r30; s32 i; @@ -842,7 +666,8 @@ static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1) { return var_r30; } -s32 fn_1_82D0(Vec *arg0) { +s32 fn_1_82D0(Vec *arg0) +{ omObjData *temp_r31; UnkBss9CData *temp_r28; s32 sp8[6]; @@ -864,10 +689,11 @@ s32 fn_1_82D0(Vec *arg0) { return var_r26; } -s32 fn_1_8470(Vec *arg0) { +s32 fn_1_8470(Vec *arg0) +{ Mtx sp50; Mtx sp20; - omObjData* temp_r30; + omObjData *temp_r30; UnkBss9CData *temp_r27; s32 sp8[6]; s32 temp_r26; @@ -877,17 +703,17 @@ s32 fn_1_8470(Vec *arg0) { temp_r30 = lbl_1_bss_9C[lbl_1_bss_94]; temp_r27 = temp_r30->data; var_r25 = fn_1_8274(temp_r27, sp8); - PSMTXTrans(sp50, temp_r30->trans.x, temp_r30->trans.y, temp_r30->trans.z); + MTXTrans(sp50, temp_r30->trans.x, temp_r30->trans.y, temp_r30->trans.z); mtxRot(sp20, temp_r30->rot.x, temp_r30->rot.y, temp_r30->rot.z); - PSMTXConcat(sp50, sp20, sp50); + MTXConcat(sp50, sp20, sp50); for (i = 0; i < var_r25; i++) { fn_1_7BD4(sp8[i], arg0); temp_r26 = fn_1_7C20(temp_r27, sp8[i]) - 6; arg0->x += lbl_1_data_B2C[temp_r26].x; arg0->y += lbl_1_data_B2C[temp_r26].y; arg0->z += lbl_1_data_B2C[temp_r26].z; - PSMTXTrans(sp20, arg0->x, arg0->y, arg0->z); - PSMTXConcat(sp50, sp20, sp20); + MTXTrans(sp20, arg0->x, arg0->y, arg0->z); + MTXConcat(sp50, sp20, sp20); arg0->x = sp20[0][3]; arg0->y = sp20[1][3]; arg0->z = sp20[2][3]; @@ -896,14 +722,16 @@ s32 fn_1_8470(Vec *arg0) { return var_r25; } -void fn_1_8670(s32 arg0) { +void fn_1_8670(s32 arg0) +{ if (arg0 > lbl_1_bss_74) { arg0 = lbl_1_bss_74; } lbl_1_bss_70 = arg0; } -s32 fn_1_86A0(Vec *arg0, Vec *arg1) { +s32 fn_1_86A0(Vec *arg0, Vec *arg1) +{ Vec sp48; Vec sp3C; Vec sp30; @@ -932,7 +760,7 @@ s32 fn_1_86A0(Vec *arg0, Vec *arg1) { if (temp_r28->rot.x > 0.0f || temp_r28->rot.x <= -90.0f) { return 0; } - PSVECSubtract(arg0, &temp_r28->trans, &sp3C); + VECSubtract(arg0, &temp_r28->trans, &sp3C); sp3C.z /= cosd(temp_r28->rot.x); temp_r17 = fn_1_7B20(arg0->x, arg0->z); temp_r24 = fn_1_7C20(temp_r18, temp_r17); @@ -941,61 +769,66 @@ s32 fn_1_86A0(Vec *arg0, Vec *arg1) { } temp_r24 -= 6; sp48 = lbl_1_data_A88[temp_r17]; - PSVECSubtract(&sp3C, &sp48, &sp3C); + VECSubtract(&sp3C, &sp48, &sp3C); temp_r30 = lbl_1_data_B74[temp_r24][0]; temp_r29 = lbl_1_data_B74[temp_r24][1]; temp_r21 = lbl_1_data_BA4[temp_r24]; for (i = 0; i < temp_r21; i++) { temp_r27 = (i + 1) % temp_r21; - PSVECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); - PSVECSubtract(&sp3C, &temp_r30[temp_r27], &sp18); - PSVECCrossProduct(&sp24, &sp18, &spC); + VECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); + VECSubtract(&sp3C, &temp_r30[temp_r27], &sp18); + VECCrossProduct(&sp24, &sp18, &spC); if (spC.y < 0.0f) { continue; } - PSVECSubtract(&temp_r29[temp_r27], &temp_r30[temp_r27], &sp24); - PSVECSubtract(&sp3C, &temp_r29[temp_r27], &sp18); - PSVECCrossProduct(&sp24, &sp18, &spC); + VECSubtract(&temp_r29[temp_r27], &temp_r30[temp_r27], &sp24); + VECSubtract(&sp3C, &temp_r29[temp_r27], &sp18); + VECCrossProduct(&sp24, &sp18, &spC); if (spC.y < 0.0f) { continue; } - PSVECSubtract(&temp_r29[i], &temp_r29[temp_r27], &sp24); - PSVECSubtract(&sp3C, &temp_r29[i], &sp18); - PSVECCrossProduct(&sp24, &sp18, &spC); + VECSubtract(&temp_r29[i], &temp_r29[temp_r27], &sp24); + VECSubtract(&sp3C, &temp_r29[i], &sp18); + VECCrossProduct(&sp24, &sp18, &spC); if (spC.y < 0.0f) { continue; } - PSVECSubtract(&temp_r30[i], &temp_r29[i], &sp24); - PSVECSubtract(&sp3C, &temp_r30[i], &sp18); - PSVECCrossProduct(&sp24, &sp18, &spC); + VECSubtract(&temp_r30[i], &temp_r29[i], &sp24); + VECSubtract(&sp3C, &temp_r30[i], &sp18); + VECCrossProduct(&sp24, &sp18, &spC); if (spC.y < 0.0f) { continue; } - PSVECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); - temp_f30 = (sp3C.x * sp24.x - sp24.x * temp_r30[i].x + sp3C.y * sp24.y - sp24.y * temp_r30[i].y + sp3C.z * sp24.z - sp24.z * temp_r30[i].z) / (sp24.x * sp24.x + sp24.y * sp24.y + sp24.z * sp24.z); + VECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); + temp_f30 = (sp3C.x * sp24.x - sp24.x * temp_r30[i].x + sp3C.y * sp24.y - sp24.y * temp_r30[i].y + sp3C.z * sp24.z - sp24.z * temp_r30[i].z) + / (sp24.x * sp24.x + sp24.y * sp24.y + sp24.z * sp24.z); sp30.x = temp_r30[i].x + temp_f30 * sp24.x; sp30.y = temp_r30[i].y + temp_f30 * sp24.y; sp30.z = temp_r30[i].z + temp_f30 * sp24.z; - PSVECSubtract(&sp30, &sp3C, &spC); - temp_f28 = PSVECMag(&spC); - PSVECSubtract(&temp_r29[temp_r27], &temp_r29[i], &sp18); - temp_f29 = (sp3C.x * sp18.x - sp18.x * temp_r29[i].x + sp3C.y * sp18.y - sp18.y * temp_r29[i].y + sp3C.z * sp18.z - sp18.z * temp_r29[i].z) / (sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z); + VECSubtract(&sp30, &sp3C, &spC); + temp_f28 = VECMag(&spC); + VECSubtract(&temp_r29[temp_r27], &temp_r29[i], &sp18); + temp_f29 = (sp3C.x * sp18.x - sp18.x * temp_r29[i].x + sp3C.y * sp18.y - sp18.y * temp_r29[i].y + sp3C.z * sp18.z - sp18.z * temp_r29[i].z) + / (sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z); sp30.x = temp_r29[i].x + temp_f29 * sp18.x; sp30.y = temp_r29[i].y + temp_f29 * sp18.y; sp30.z = temp_r29[i].z + temp_f29 * sp18.z; - PSVECSubtract(&sp30, &sp3C, &spC); - temp_f27 = PSVECMag(&spC); + VECSubtract(&sp30, &sp3C, &spC); + temp_f27 = VECMag(&spC); if (temp_f28 == 0.0f) { var_f31 = temp_f30; - } else if (temp_f27 == 0.0f) { + } + else if (temp_f27 == 0.0f) { var_f31 = temp_f29; - } else { + } + else { temp_f26 = 1.0f - temp_f28 / (temp_f28 + temp_f27); var_f31 = temp_f30 * temp_f26 + temp_f29 * (1.0f - temp_f26); } if (var_f31 < 0.0f) { var_f31 = 0.0f; - } else if (var_f31 > 1.0f) { + } + else if (var_f31 > 1.0f) { var_f31 = 1.0f; } sp3C.x = temp_r29[i].x + var_f31 * sp18.x; diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c index 1a79708d..ba9e9ca0 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -10,8 +10,14 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" + #include "string.h" +#include "version.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/esprite.h" +#endif typedef struct UnkM404Struct { s16 unk_00; @@ -250,7 +256,7 @@ void ObjectSetup(void) lbl_1_bss_10.x = lbl_1_data_77C.x - lbl_1_data_770.x; lbl_1_bss_10.y = lbl_1_data_77C.y - lbl_1_data_770.y; lbl_1_bss_10.z = lbl_1_data_77C.z - lbl_1_data_770.z; - PSVECNormalize(&lbl_1_bss_10, &lbl_1_bss_10); + VECNormalize(&lbl_1_bss_10, &lbl_1_bss_10); var_r29 = Hu3DGLightCreateV(&lbl_1_data_770, &lbl_1_bss_10, &lbl_1_data_788); Hu3DGLightInfinitytSet(var_r29); Hu3DGLightStaticSet(var_r29, 1); @@ -281,7 +287,7 @@ s32 fn_1_38C(void) void fn_1_39C(omObjData *object) { fn_1_37C(0); - lbl_1_bss_24 = 60; + lbl_1_bss_24 = REFRESH_RATE; WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); object->func = fn_1_400; } @@ -289,85 +295,86 @@ void fn_1_39C(omObjData *object) void fn_1_400(omObjData *object) { switch (fn_1_38C()) { - case 0: - if (--lbl_1_bss_24) { + case 0: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(1); + lbl_1_bss_24 = 3 * REFRESH_RATE; break; - } - fn_1_37C(1); - lbl_1_bss_24 = 180; - break; - case 1: - if (--lbl_1_bss_24) { + case 1: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(2); + lbl_1_bss_C = MGSeqCreate(3, 0); break; - } - fn_1_37C(2); - lbl_1_bss_C = MGSeqCreate(3, 0); - break; - case 2: - if (!MGSeqStatGet(lbl_1_bss_C)) { - fn_1_37C(3); - } - if (lbl_1_data_7C8 >= 0) { + case 2: + if (!MGSeqStatGet(lbl_1_bss_C)) { + fn_1_37C(3); + } + if (lbl_1_data_7C8 >= 0) { + break; + } + if (!(MGSeqStatGet(lbl_1_bss_C) & 16)) { + break; + } + lbl_1_data_7C8 = HuAudSeqPlay(69); break; - } - if (!(MGSeqStatGet(lbl_1_bss_C) & 16)) { + case 3: + if (!fn_1_E48()) { + break; + } + fn_1_37C(4); + lbl_1_bss_C = MGSeqCreate(3, 1); + HuAudSeqFadeOut(lbl_1_data_7C8, 100); break; - } - lbl_1_data_7C8 = HuAudSeqPlay(69); - break; - case 3: - if (!fn_1_E48()) { + case 4: + if (!MGSeqStatGet(lbl_1_bss_C)) { + fn_1_37C(5); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, REFRESH_RATE / 2); + lbl_1_bss_24 = REFRESH_RATE; + } + case 5: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(6); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, REFRESH_RATE); break; - } - fn_1_37C(4); - lbl_1_bss_C = MGSeqCreate(3, 1); - HuAudSeqFadeOut(lbl_1_data_7C8, 100); - break; - case 4: - if (!MGSeqStatGet(lbl_1_bss_C)) { - fn_1_37C(5); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - lbl_1_bss_24 = 60; - } - case 5: - if (--lbl_1_bss_24) { + case 6: + if (WipeStatGet()) { + break; + } + fn_1_37C(7); + lbl_1_bss_24 = 3 * REFRESH_RATE; break; - } - fn_1_37C(6); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - break; - case 6: - if (WipeStatGet()) { + case 7: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(9); + fn_1_1160(); + if (lbl_1_bss_38[0] >= 0) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(4); + } + lbl_1_bss_24 = 3.5 * REFRESH_RATE; break; - } - fn_1_37C(7); - lbl_1_bss_24 = 180; - break; - case 7: - if (--lbl_1_bss_24) { + case 8: break; - } - fn_1_37C(9); - fn_1_1160(); - if (lbl_1_bss_38[0] >= 0) { - HuAudSStreamPlay(1); - } else { - HuAudSStreamPlay(4); - } - lbl_1_bss_24 = 210; - break; - case 8: - break; - case 9: - if (--lbl_1_bss_24) { + case 9: + if (--lbl_1_bss_24) { + break; + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_784; + break; + default: break; - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_784; - break; - default: - break; } if (omSysExitReq && !WipeStatGet()) { WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); @@ -393,14 +400,37 @@ float lbl_1_data_81C[][2] = { { 0.0f, 0.0f }, { 0.0f, 0.0f }, { -46.0f, -2.0f }, float lbl_1_data_84C[][2] = { { 472.0f, 128.0f }, { 472.0f, 208.0f }, { 472.0f, 288.0f }, { 472.0f, 368.0f } }; -s32 lbl_1_data_86C[] = { 0x00610000, 0x00610001, 0x00610002, 0x00610003, 0x00610004, 0x00610005, 0x00610006, 0x00610007 }; +s32 lbl_1_data_86C[] = { + DATA_MAKE_NUM(DATADIR_MGCONST, 0x00), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x01), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x02), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x03), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x04), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x05), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x06), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x07), +}; s32 lbl_1_data_88C = 0xFFFFFFFF; -u32 lbl_1_data_890[][2] - = { { 0x005F0000, 0x00000000 }, { 0x005F0002, 0x00000000 }, { 0x00230022, 0x00000001 }, { 0x005F0017, 0x00000000 }, { 0x005F0018, 0x00000000 } }; +u32 lbl_1_data_890[][2] = { + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_M404, 0x22), 0x00000001 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), 0x00000000 }, +}; -s32 lbl_1_data_8B8[] = { 0x00230001, 0x00230002, 0x00230003, 0x00230004, 0x00230005, 0x00230006, 0x00230007, 0x00230008 }; +s32 lbl_1_data_8B8[] = { + DATA_MAKE_NUM(DATADIR_M404, 0x01), + DATA_MAKE_NUM(DATADIR_M404, 0x02), + DATA_MAKE_NUM(DATADIR_M404, 0x03), + DATA_MAKE_NUM(DATADIR_M404, 0x04), + DATA_MAKE_NUM(DATADIR_M404, 0x05), + DATA_MAKE_NUM(DATADIR_M404, 0x06), + DATA_MAKE_NUM(DATADIR_M404, 0x07), + DATA_MAKE_NUM(DATADIR_M404, 0x08), +}; float lbl_1_data_8D8[] = { 35.0f, 30.000002f, 25.0f, 20.0f }; @@ -408,7 +438,11 @@ float (*lbl_1_data_8E8[])[2] = { lbl_1_data_0, lbl_1_data_248, lbl_1_data_4A8 }; u16 lbl_1_data_8F4[] = { 73, 76, 82, 0 }; -s32 lbl_1_data_8FC[][2] = { { 0x00230013, 0x00230014 }, { 0x00230015, 0x00230016 }, { 0x00230017, 0x00230018 } }; +s32 lbl_1_data_8FC[][2] = { + { DATA_MAKE_NUM(DATADIR_M404, 0x13), DATA_MAKE_NUM(DATADIR_M404, 0x14) }, + { DATA_MAKE_NUM(DATADIR_M404, 0x15), DATA_MAKE_NUM(DATADIR_M404, 0x16) }, + { DATA_MAKE_NUM(DATADIR_M404, 0x17), DATA_MAKE_NUM(DATADIR_M404, 0x18) }, +}; void fn_1_7E0(omObjData *object) { @@ -426,30 +460,30 @@ void fn_1_7E0(omObjData *object) for (var_r29 = 0; var_r29 < 4; var_r31++, var_r29++) { for (var_r27 = var_r26[var_r29]->data, var_r30 = 0; var_r30 < 6; var_r30++) { switch (lbl_1_data_810[var_r30]) { - case 0: - var_r31->unk_02[var_r30] = espEntry(0x610014, 1, 0); - espPriSet(var_r31->unk_02[var_r30], 256); - break; - case 1: - var_r31->unk_02[var_r30] = espEntry(0x610015, 0, 0); - espPriSet(var_r31->unk_02[var_r30], 257); - espColorSet(var_r31->unk_02[var_r30], 0, 0, 0); - espTPLvlSet(var_r31->unk_02[var_r30], 0.5f); - break; - case 2: - var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]]); - espPriSet(var_r31->unk_02[var_r30], 255); - break; - case 3: - var_r31->unk_02[var_r30] = espEntry(0x610033, 1, 0); - espPriSet(var_r31->unk_02[var_r30], 255); - break; - default: - break; + case 0: + var_r31->unk_02[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x14), 1, 0); + espPriSet(var_r31->unk_02[var_r30], 256); + break; + case 1: + var_r31->unk_02[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x15), 0, 0); + espPriSet(var_r31->unk_02[var_r30], 257); + espColorSet(var_r31->unk_02[var_r30], 0, 0, 0); + espTPLvlSet(var_r31->unk_02[var_r30], 0.5f); + break; + case 2: + var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]]); + espPriSet(var_r31->unk_02[var_r30], 255); + break; + case 3: + var_r31->unk_02[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x33), 1, 0); + espPriSet(var_r31->unk_02[var_r30], 255); + break; + default: + break; } espDispOff(var_r31->unk_02[var_r30]); espDrawNoSet(var_r31->unk_02[var_r30], 0); - espAttrSet(var_r31->unk_02[var_r30], 1); + espAttrSet(var_r31->unk_02[var_r30], HUSPR_ATTR_NOANIM); espPosSet(var_r31->unk_02[var_r30], lbl_1_data_84C[var_r29][0] + lbl_1_data_81C[var_r30][0], lbl_1_data_84C[var_r29][1] + lbl_1_data_81C[var_r30][1]); } @@ -469,30 +503,30 @@ void fn_1_A9C(omObjData *object) var_r30 = object->data; switch (fn_1_38C()) { - case 6: - for (var_r31 = 0; var_r31 < 4; var_r31++) { - for (var_r29 = 0; var_r29 < 6; var_r29++) { - espDispOn(var_r30[var_r31].unk_02[var_r29]); + case 6: + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r29 = 0; var_r29 < 6; var_r29++) { + espDispOn(var_r30[var_r31].unk_02[var_r29]); + } } - } - break; - case 7: - var_r27 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - for (var_r29 = 0, var_r31 = 0; var_r31 < 4; var_r31++) { - var_r28 = var_r27[var_r31]->data; - var_r30[var_r31].unk_00 = var_r28->unk_58; - if (var_r28->unk_00_field1) { - var_r29++; + break; + case 7: + var_r27 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r29 = 0, var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = var_r27[var_r31]->data; + var_r30[var_r31].unk_00 = var_r28->unk_58; + if (var_r28->unk_00_field1) { + var_r29++; + } } - } - if ((var_r29 >= 4) && (lbl_1_bss_0 == 0)) { - HuAudFXPlay(1325); - lbl_1_bss_0 = 1; - } - if ((lbl_1_bss_0 == 0) && (lbl_1_data_88C < 0)) { - lbl_1_data_88C = HuAudFXPlay(1324); - } - break; + if ((var_r29 >= 4) && (lbl_1_bss_0 == 0)) { + HuAudFXPlay(1325); + lbl_1_bss_0 = 1; + } + if ((lbl_1_bss_0 == 0) && (lbl_1_data_88C < 0)) { + lbl_1_data_88C = HuAudFXPlay(1324); + } + break; } for (var_r31 = 0; var_r31 < 4; var_r31++) { espBankSet(var_r30[var_r31].unk_02[3], var_r30[var_r31].unk_00 / 100); @@ -669,25 +703,26 @@ void fn_1_1344(omObjData *object) memset(var_r31, 0, 484); var_r31->unk_02 = lbl_1_bss_20++; var_r31->unk_04 = GWPlayerCfg[var_r31->unk_02].pad_idx; - + var_r31->unk_0C = var_r24 = GWPlayerCfg[var_r31->unk_02].character; var_r31->unk_0E = GWPlayerCfg[var_r31->unk_02].diff; var_r31->unk_10 = GWPlayerCfg[var_r31->unk_02].group; object->model[0] = CharModelCreate(var_r24, 2); Hu3DModelShadowSet(object->model[0]); - object->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_8B8[var_r24], MEMORY_DEFAULT_NUM, HEAP_DATA)); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_8B8[var_r24]); Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); var_r31->unk_2C = 0; for (var_r29 = 0; var_r29 < (u32)5; var_r29++) { if (!lbl_1_data_890[var_r29][1]) { object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_890[var_r29][0]); - } else { + } + else { object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, var_r31->unk_0C + lbl_1_data_890[var_r29][0]); } } Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000601); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_OVL_LOOP | HU3D_MOTATTR_OVL_PAUSE); CharModelVoiceEnableSet(var_r24, object->motion[1], 0); object->trans.x = -90.0f; object->trans.y = 0.0f; @@ -702,16 +737,16 @@ void fn_1_1344(omObjData *object) var_r31->unk_44 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, MEMORY_DEFAULT_NUM); DCInvalidateRange(var_r31->unk_44, var_r31->unk_48); var_r31->unk_48 = fn_1_6248(var_r31->unk_44, var_r31->unk_48); - var_r31->unk_3C = HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_8FC[lbl_1_bss_1C][0], MEMORY_DEFAULT_NUM, HEAP_DATA)); + var_r31->unk_3C = HuSprAnimReadFile(lbl_1_data_8FC[lbl_1_bss_1C][0]); DCFlushRangeNoSync(var_r31->unk_3C->bmp->data, (var_r31->unk_3C->bmp->pixSize * (var_r31->unk_3C->bmp->sizeX * var_r31->unk_3C->bmp->sizeY)) / 8); var_r31->unk_54 = 0; var_r31->unk_56 = fn_1_ED4(object); - var_r31->unk_40 = HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_8FC[lbl_1_bss_1C][1], MEMORY_DEFAULT_NUM, HEAP_DATA)); - var_r31->unk_50 = HuSprAnimRead(HuDataSelHeapReadNum(0x230019, MEMORY_DEFAULT_NUM, HEAP_DATA)); + var_r31->unk_40 = HuSprAnimReadFile(lbl_1_data_8FC[lbl_1_bss_1C][1]); + var_r31->unk_50 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M404, 0x19)); DCFlushRangeNoSync(var_r31->unk_50->bmp->data, (var_r31->unk_50->bmp->pixSize * (var_r31->unk_50->bmp->sizeX * var_r31->unk_50->bmp->sizeY)) / 8); Hu3DMotionOverlaySet(object->model[0], object->motion[2]); object->trans.y = 1500.0f; - var_r31->unk_38 = var_r31->unk_02 * 60 / 2; + var_r31->unk_38 = var_r31->unk_02 * REFRESH_RATE / 2; CharModelDataClose(var_r31->unk_0C); if (GWPlayerCfg[var_r31->unk_02].iscom == 1) { var_r28 = lbl_1_data_8E8[lbl_1_bss_1C]; @@ -744,7 +779,6 @@ void fn_1_1AFC(omObjData *object) { UnkM404Struct3 *var_r31; - var_r31 = object->data; if (fn_1_38C() >= 1) { if (var_r31->unk_00_field2) { @@ -754,7 +788,7 @@ void fn_1_1AFC(omObjData *object) } } if (object->trans.y > 0.0f) { - var_r31->unk_24 = var_r31->unk_24 - 1.0000001f; + var_r31->unk_24 = var_r31->unk_24 - (VERSION_NTSC ? 1.0000001f : 1.2f); object->trans.y += var_r31->unk_24; if (object->trans.y < 0.0f) { object->trans.y = 0.0f; @@ -771,7 +805,7 @@ void fn_1_1AFC(omObjData *object) } if (var_r31->unk_38 == 0) { var_r31->unk_00_field2 = 1; - var_r31->unk_38 = 30; + var_r31->unk_38 = REFRESH_RATE / 2; return; } var_r31->unk_38--; @@ -873,7 +907,7 @@ float fn_1_2EBC(float arg0[], float arg8) float fn_1_3A38(float arg0[], float arg8, float arg9) { - volatile float sp40; + volatile float sp40; volatile float sp3C; float var_f24; float var_f18; @@ -922,12 +956,13 @@ void fn_1_3F30(omObjData *object) var_r31 = object->data; if (var_r31->unk_5E < (var_r31->unk_6C - 1)) { - if ((3.0f + var_r31->unk_64) >= var_r31->unk_68) { - var_r31->unk_64 = 3.0f - (var_r31->unk_68 - var_r31->unk_64); + if ((180.0f / REFRESH_RATE + var_r31->unk_64) >= var_r31->unk_68) { + var_r31->unk_64 = 180.0f / REFRESH_RATE - (var_r31->unk_68 - var_r31->unk_64); var_r31->unk_5E += 3; var_r31->unk_68 = fn_1_2EBC(var_r31->unk_70[var_r31->unk_5E], 1.0f); - } else { - var_r31->unk_64 += 3.0f; + } + else { + var_r31->unk_64 += 180.0f / REFRESH_RATE; } var_r31->unk_60 = fn_1_3A38(var_r31->unk_70[var_r31->unk_5E], var_r31->unk_60, var_r31->unk_64); var_r30 = var_r31->unk_70[var_r31->unk_5E]; @@ -936,19 +971,20 @@ void fn_1_3F30(omObjData *object) var_r31->unk_14 = fn_1_3E2C(var_r31->unk_14, atan2d(var_f24 - object->trans.x, -(var_f23 - object->trans.z)), 0.1f); var_r31->unk_06 = (u8)(20.0 * sind(var_r31->unk_14)); var_r31->unk_07 = (u8)(20.0 * cosd(var_r31->unk_14)); - } else { + } + else { var_r31->unk_06 = 20; var_r31->unk_07 = 0; } } -void fn_1_445C(s32 arg0, s16 arg1) +void fn_1_445C(int seId, s16 vol) { - UnkMsmStruct_01 sp8; + MSM_SEPARAM param; - sp8.unk00 = 1; - sp8.unk04 = arg1; - msmSeSetParam(arg0, &sp8); + param.flag = MSM_SEPARAM_VOL; + param.vol = vol; + msmSeSetParam(seId, ¶m); } void fn_1_44A0(omObjData *object) @@ -961,7 +997,6 @@ void fn_1_44A0(omObjData *object) s32 var_r28; s16 var_r27; - var_r31 = object->data; var_r28 = -1; if (fn_1_38C() == 6) { @@ -969,108 +1004,115 @@ void fn_1_44A0(omObjData *object) } if (fn_1_38C() == 3 && !var_r31->unk_00_field0) { switch (var_r31->unk_12) { - case 0: - if (GWPlayerCfg[var_r31->unk_02].iscom == 0) { - var_r31->unk_06 = HuPadStkX[var_r31->unk_04]; - var_r31->unk_07 = HuPadStkY[var_r31->unk_04]; - var_r31->unk_08 = HuPadBtn[var_r31->unk_04]; - var_r31->unk_0A = HuPadBtnDown[var_r31->unk_04]; - } else { - var_r31->unk_08 = var_r31->unk_0A = 0; - var_r31->unk_06 = var_r31->unk_07 = 0; - fn_1_3F30(object); - } - if (((var_r31->unk_06 * var_r31->unk_06) + (var_r31->unk_07 * var_r31->unk_07)) > 16.0f) { - var_f31 = atan2d(var_r31->unk_06, -var_r31->unk_07); - var_r31->unk_20 = 3.0f * sind(var_f31); - var_r31->unk_28 = 3.0f * cosd(var_f31); - var_r28 = 1; - if (var_r31->unk_20 > 0.0f) { - CharModelMotionSpeedSet(var_r31->unk_0C, 0.5f); - } else { - CharModelMotionSpeedSet(var_r31->unk_0C, -0.5f); + case 0: + if (GWPlayerCfg[var_r31->unk_02].iscom == 0) { + var_r31->unk_06 = HuPadStkX[var_r31->unk_04]; + var_r31->unk_07 = HuPadStkY[var_r31->unk_04]; + var_r31->unk_08 = HuPadBtn[var_r31->unk_04]; + var_r31->unk_0A = HuPadBtnDown[var_r31->unk_04]; } - Hu3DMotionOverlaySpeedSet(object->model[0], Hu3DData[object->model[0]].unk_68); - if (var_r31->unk_2C == 0) { - Hu3DModelAttrReset(object->model[0], 0x40000400); + else { + var_r31->unk_08 = var_r31->unk_0A = 0; + var_r31->unk_06 = var_r31->unk_07 = 0; + fn_1_3F30(object); + } + if (((var_r31->unk_06 * var_r31->unk_06) + (var_r31->unk_07 * var_r31->unk_07)) > 16.0f) { + var_f31 = atan2d(var_r31->unk_06, -var_r31->unk_07); + var_r31->unk_20 = (VERSION_NTSC ? 3.0 : 3.5999999046325684) * sind(var_f31); + var_r31->unk_28 = (VERSION_NTSC ? 3.0 : 3.5999999046325684) * cosd(var_f31); + var_r28 = 1; + if (var_r31->unk_20 > 0.0f) { + CharModelMotionSpeedSet(var_r31->unk_0C, 0.5f); + } + else { + CharModelMotionSpeedSet(var_r31->unk_0C, -0.5f); + } + Hu3DMotionOverlaySpeedSet(object->model[0], Hu3DData[object->model[0]].unk_68); + if (var_r31->unk_2C == 0) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_OVL_PAUSE); + Hu3DMotionOverlayTimeSet(object->model[0], 0.0f); + } + } + else { + var_r31->unk_20 = var_r31->unk_28 = 0.0f; + var_r28 = 0; + CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); Hu3DMotionOverlayTimeSet(object->model[0], 0.0f); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_OVL_PAUSE); } - } else { - var_r31->unk_20 = var_r31->unk_28 = 0.0f; - var_r28 = 0; - CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); - Hu3DMotionOverlayTimeSet(object->model[0], 0.0f); - Hu3DModelAttrSet(object->model[0], 0x40000400); - } - sp8.x = object->trans.x; - sp8.z = object->trans.z; - object->trans.x += var_r31->unk_20; - object->trans.z += var_r31->unk_28; - if (object->trans.x < -90.0f) { - object->trans.x = -90.0f; - } - if (object->trans.x < (Center.x - 500.0f)) { - object->trans.x = Center.x - 500.0f; - } else if (object->trans.x > (550.0f + Center.x)) { - object->trans.x = 550.0f + Center.x; - } - if ((object->trans.x != sp8.x) || (object->trans.z != sp8.z)) { - if (var_r31->unk_74 < 0) { - var_r31->unk_74 = HuAudFXPlay(0x52B); + sp8.x = object->trans.x; + sp8.z = object->trans.z; + object->trans.x += var_r31->unk_20; + object->trans.z += var_r31->unk_28; + if (object->trans.x < -90.0f) { + object->trans.x = -90.0f; } - } else if (var_r31->unk_74 >= 0) { - HuAudFXStop(var_r31->unk_74); - var_r31->unk_74 = -1; - } - var_r29 = &Hu3DData[object->model[2]]; - if (object->trans.z < (var_r29->pos.z - 100.0f)) { - object->trans.z = var_r29->pos.z - 100.0f; - } else if (object->trans.z > ((100.0f + var_r29->pos.z) - 1.0f)) { - object->trans.z = (100.0f + var_r29->pos.z) - 1.0f; - } - if ((90.0f + object->trans.x) > 3000.0f) { - object->trans.x = 2910.0f; - var_r31->unk_12++; - var_r31->unk_2C = -1; - var_r28 = 1; - CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); - Hu3DMotionOverlayReset(object->model[0]); - Hu3DModelAttrSet(object->model[1], 1); - if (var_r31->unk_74 >= 0) { + if (object->trans.x < (Center.x - 500.0f)) { + object->trans.x = Center.x - 500.0f; + } + else if (object->trans.x > (550.0f + Center.x)) { + object->trans.x = 550.0f + Center.x; + } + if ((object->trans.x != sp8.x) || (object->trans.z != sp8.z)) { + if (var_r31->unk_74 < 0) { + var_r31->unk_74 = HuAudFXPlay(0x52B); + } + } + else if (var_r31->unk_74 >= 0) { HuAudFXStop(var_r31->unk_74); var_r31->unk_74 = -1; } - } - fn_1_5278(object); - if (var_r31->unk_74 >= 0) { - var_r27 = 64.0f + ((64.0f * (object->trans.x - Center.x)) / 500.0f); - if (var_r27 < 0) { - var_r27 = 0; - } else if (var_r27 > 127) { - var_r27 = 127; + var_r29 = &Hu3DData[object->model[2]]; + if (object->trans.z < (var_r29->pos.z - 100.0f)) { + object->trans.z = var_r29->pos.z - 100.0f; } - HuAudFXPanning(var_r31->unk_74, var_r27); - } - break; - case 1: - var_r28 = 1; - object->trans.x += 4.0000005f; - if (object->trans.x >= 3200.0f) { - var_r31->unk_12++; - var_r31->unk_38 = 0x3C; - } - break; - case 2: - var_r28 = 0; - object->rot.y += 0.1f * -object->rot.y; - if (--var_r31->unk_38 == 0) { - var_r31->unk_00_field0 = 1; - } - break; + else if (object->trans.z > ((100.0f + var_r29->pos.z) - 1.0f)) { + object->trans.z = (100.0f + var_r29->pos.z) - 1.0f; + } + if ((90.0f + object->trans.x) > 3000.0f) { + object->trans.x = 2910.0f; + var_r31->unk_12++; + var_r31->unk_2C = -1; + var_r28 = 1; + CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); + Hu3DMotionOverlayReset(object->model[0]); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + if (var_r31->unk_74 >= 0) { + HuAudFXStop(var_r31->unk_74); + var_r31->unk_74 = -1; + } + } + fn_1_5278(object); + if (var_r31->unk_74 >= 0) { + var_r27 = 64.0f + ((64.0f * (object->trans.x - Center.x)) / 500.0f); + if (var_r27 < 0) { + var_r27 = 0; + } + else if (var_r27 > 127) { + var_r27 = 127; + } + HuAudFXPanning(var_r31->unk_74, var_r27); + } + break; + case 1: + var_r28 = 1; + object->trans.x += VERSION_NTSC ? 4.0000005f : 4.8f; + if (object->trans.x >= 3200.0f) { + var_r31->unk_12++; + var_r31->unk_38 = 0x3C; + } + break; + case 2: + var_r28 = 0; + object->rot.y += 0.1f * -object->rot.y; + if (--var_r31->unk_38 == 0) { + var_r31->unk_00_field0 = 1; + } + break; } if (var_r28 >= 0 && var_r28 != var_r31->unk_2C) { var_r31->unk_2C = var_r28; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } } } @@ -1084,7 +1126,7 @@ void fn_1_4C7C(omObjData *object) object->trans.z = -450.0f + (300.0f * var_r30->unk_02); object->rot.y = 0.0f; var_r30->unk_2C = -1; - CharModelMotionShiftSet(var_r30->unk_0C, *object->motion, 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(var_r30->unk_0C, *object->motion, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); var_r30->unk_5A = 0; var_r30->unk_5C = fn_1_F70(object, 1.0f); var_r30->unk_5A = 0; @@ -1115,10 +1157,11 @@ void fn_1_4F4C(omObjData *object) } if (var_r29 < 4) { var_r30->unk_2C = 3; - } else { + } + else { var_r30->unk_2C = 4; } - CharModelMotionShiftSet(var_r30->unk_0C, object->motion[var_r30->unk_2C], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(var_r30->unk_0C, object->motion[var_r30->unk_2C], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } } @@ -1170,9 +1213,13 @@ void fn_1_5598(Process *arg0) void fn_1_55F0(void) { } -s32 lbl_1_data_930[] = { 0x0023000B, 0x0023000C, 0x0023000D, 0x0023000E, 0x0023000F, 0x00230010, 0x00230011, 0x00230012 }; +s32 lbl_1_data_930[] = { DATA_MAKE_NUM(DATADIR_M404, 0x0B), DATA_MAKE_NUM(DATADIR_M404, 0x0C), DATA_MAKE_NUM(DATADIR_M404, 0x0D), + DATA_MAKE_NUM(DATADIR_M404, 0x0E), DATA_MAKE_NUM(DATADIR_M404, 0x0F), DATA_MAKE_NUM(DATADIR_M404, 0x10), DATA_MAKE_NUM(DATADIR_M404, 0x11), + DATA_MAKE_NUM(DATADIR_M404, 0x12) }; -s32 lbl_1_data_950[] = { 0x0023001A, 0x0023001B, 0x0023001C, 0x0023001D, 0x0023001E, 0x0023001F, 0x00230020, 0x00230021 }; +s32 lbl_1_data_950[] = { DATA_MAKE_NUM(DATADIR_M404, 0x1A), DATA_MAKE_NUM(DATADIR_M404, 0x1B), DATA_MAKE_NUM(DATADIR_M404, 0x1C), + DATA_MAKE_NUM(DATADIR_M404, 0x1D), DATA_MAKE_NUM(DATADIR_M404, 0x1E), DATA_MAKE_NUM(DATADIR_M404, 0x1F), DATA_MAKE_NUM(DATADIR_M404, 0x20), + DATA_MAKE_NUM(DATADIR_M404, 0x21) }; char *lbl_1_data_98C[] = { "kari00", "kari01", "kari02", "kari03" }; @@ -1187,18 +1234,16 @@ void fn_1_55F4(omObjData *object) { s32 var_r30; - object->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(0x230009, MEMORY_DEFAULT_NUM, HEAP_DATA)); - object->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(0x23000A, MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DModelAttrSet(object->model[1], 0x40000001); - object->model[2] = Hu3DModelCreate(HuDataSelHeapReadNum(0x230000, MEMORY_DEFAULT_NUM, HEAP_DATA)); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M404, 0x09)); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M404, 0x0A)); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M404, 0x00)); Hu3DModelShadowMapSet(object->model[2]); for (var_r30 = 0; var_r30 < 4; var_r30++) { - object->model[var_r30 + 3] - = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_930[GWPlayerCfg[var_r30].character], MEMORY_DEFAULT_NUM, HEAP_DATA)); + object->model[var_r30 + 3] = Hu3DModelCreateFile(lbl_1_data_930[GWPlayerCfg[var_r30].character]); Hu3DModelPosSet(object->model[var_r30 + 3], 0.0f, 0.0f, lbl_1_data_99C[var_r30]); - Hu3DAnimCreate(HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_950[GWPlayerCfg[var_r30].character], MEMORY_DEFAULT_NUM, HEAP_DATA)), - object->model[2], lbl_1_data_98C[var_r30]); + Hu3DAnimCreate(HuSprAnimReadFile(lbl_1_data_950[GWPlayerCfg[var_r30].character]), object->model[2], lbl_1_data_98C[var_r30]); } object->func = fn_1_57A0; } @@ -1295,38 +1340,39 @@ void fn_1_5E74(AnimData *arg0, u16 arg1, u16 arg2, u16 arg3) u8 temp_r0; switch (arg0->bmp->pixSize) { - case 4: - var_r30 = lbl_1_data_9DC[0]; // 8 - var_r29 = lbl_1_data_9DC[1]; // 8 - break; - case 8: - var_r30 = lbl_1_data_9DC[2]; // 8 - var_r29 = lbl_1_data_9DC[3]; // 4 - break; - case 16: - var_r30 = lbl_1_data_9DC[4]; // 4 - var_r29 = lbl_1_data_9DC[5]; // 4 - break; + case 4: + var_r30 = lbl_1_data_9DC[0]; // 8 + var_r29 = lbl_1_data_9DC[1]; // 8 + break; + case 8: + var_r30 = lbl_1_data_9DC[2]; // 8 + var_r29 = lbl_1_data_9DC[3]; // 4 + break; + case 16: + var_r30 = lbl_1_data_9DC[4]; // 4 + var_r29 = lbl_1_data_9DC[5]; // 4 + break; } - var_r31 = (void *)(((arg1/var_r30)*32)+(((arg1%8)*arg0->bmp->pixSize)/8)+(((arg0->bmp->sizeX / var_r30) * ((arg2 / var_r29) << 5))+((u32)arg0->bmp->data)+((arg0->bmp->pixSize * ((arg2 % var_r29) * 8)) / 8))); + var_r31 = (void *)(((arg1 / var_r30) * 32) + (((arg1 % 8) * arg0->bmp->pixSize) / 8) + + (((arg0->bmp->sizeX / var_r30) * ((arg2 / var_r29) << 5)) + ((u32)arg0->bmp->data) + ((arg0->bmp->pixSize * ((arg2 % var_r29) * 8)) / 8))); switch (arg0->bmp->pixSize) { - case 4: - if ((arg1 & 1) == 0) { - *var_r31 &= 0xF; - *var_r31 |= arg3 << 4; + case 4: + if ((arg1 & 1) == 0) { + *var_r31 &= 0xF; + *var_r31 |= arg3 << 4; + break; + } + *var_r31 &= 0xF0; + *var_r31 |= arg3; + break; + case 8: + *var_r31 |= arg3; + break; + case 16: + *((u16 *)var_r31) = arg3; break; - } - *var_r31 &= 0xF0; - *var_r31 |= arg3; - break; - case 8: - *var_r31 |= arg3; - break; - case 16: - *((u16 *)var_r31) = arg3; - break; } } @@ -1340,42 +1386,44 @@ u16 fn_1_607C(AnimData *arg0, u16 arg1, u16 arg2) u32 temp_r6; u8 temp_r0; u8 temp_r0_3; - + switch (arg0->bmp->pixSize) { - case 4: - var_r31 = lbl_1_data_9F4[0]; - var_r30 = lbl_1_data_9F4[1]; - break; - case 8: - var_r31 = lbl_1_data_9F4[2]; - var_r30 = lbl_1_data_9F4[3]; - break; - case 16: - var_r31 = lbl_1_data_9F4[4]; - var_r30 = lbl_1_data_9F4[5]; - break; + case 4: + var_r31 = lbl_1_data_9F4[0]; + var_r30 = lbl_1_data_9F4[1]; + break; + case 8: + var_r31 = lbl_1_data_9F4[2]; + var_r30 = lbl_1_data_9F4[3]; + break; + case 16: + var_r31 = lbl_1_data_9F4[4]; + var_r30 = lbl_1_data_9F4[5]; + break; } - var_r29 = (void *)(((arg1/var_r31)*32)+(((arg1%8)*arg0->bmp->pixSize)/8)+(((arg0->bmp->sizeX / var_r31) * ((arg2 / var_r30) << 5))+((u32)arg0->bmp->data)+((arg0->bmp->pixSize * ((arg2 % var_r30) * 8)) / 8))); - - (void)var_r31; - (void)var_r31; - (void)var_r31; - (void)var_r30; - (void)var_r30; - (void)var_r30; - + var_r29 = (void *)(((arg1 / var_r31) * 32) + (((arg1 % 8) * arg0->bmp->pixSize) / 8) + + (((arg0->bmp->sizeX / var_r31) * ((arg2 / var_r30) << 5)) + ((u32)arg0->bmp->data) + ((arg0->bmp->pixSize * ((arg2 % var_r30) * 8)) / 8))); + + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r30; + (void)var_r30; + (void)var_r30; + switch (arg0->bmp->pixSize) { - case 4: - if ((arg1 & 1) == 0) { - var_r28 = *var_r29 >> 4; - } else { - var_r28 = *var_r29 & 0xF; - } - return var_r28; - case 8: - return *var_r29; - case 16: - return *((u16 *)var_r29); + case 4: + if ((arg1 & 1) == 0) { + var_r28 = *var_r29 >> 4; + } + else { + var_r28 = *var_r29 & 0xF; + } + return var_r28; + case 8: + return *var_r29; + case 16: + return *((u16 *)var_r29); } } @@ -1423,28 +1471,28 @@ void fn_1_66DC(omObjData *object) var_r31 = Hu3DCamera; switch (fn_1_38C()) { - case 1: - fn_1_648C(0, 1, 1.0 - cosd(90.0f * lbl_1_bss_4)); - if (lbl_1_bss_4 < 1.0f) { - lbl_1_bss_4 += 0.007999999f; - if (lbl_1_bss_4 > 1.0f) { - lbl_1_bss_4 = 1.0f; + case 1: + fn_1_648C(0, 1, 1.0 - cosd(90.0f * lbl_1_bss_4)); + if (lbl_1_bss_4 < 1.0f) { + lbl_1_bss_4 += VERSION_NTSC ? 0.007999999f : 0.0095999995f; + if (lbl_1_bss_4 > 1.0f) { + lbl_1_bss_4 = 1.0f; + } } - } - break; - case 3: - Center.x += 2.0000002f; - Hu3DShadowData.unk_14.x = 1000.0f + var_r31->pos.x; - Hu3DShadowData.unk_20.x = Hu3DShadowData.unk_14.x - 1500.0f; - break; - case 6: - fn_1_648C(1, 1, 0.0f); - break; - case 7: - if (Center.x < 3000.0f) { - Center.x += 25.0f; - } - default: - break; + break; + case 3: + Center.x += VERSION_NTSC ? 2.0000002f : 2.4f; + Hu3DShadowData.unk_14.x = 1000.0f + var_r31->pos.x; + Hu3DShadowData.unk_20.x = Hu3DShadowData.unk_14.x - 1500.0f; + break; + case 6: + fn_1_648C(1, 1, 0.0f); + break; + case 7: + if (Center.x < 3000.0f) { + Center.x += VERSION_NTSC ? 25.0f : 30.0f; + } + default: + break; } } diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 1950ce88..0eade3f2 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -2,10 +2,10 @@ #include "game/chrman.h" #include "game/data.h" #include "game/esprite.h" -#include "game/gamework.h" -#include "game/gamework_data.h" #include "game/flag.h" #include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" #include "game/hsfman.h" @@ -22,7 +22,6 @@ #include "dolphin.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -249,46 +248,26 @@ Vec lbl_1_bss_0[2]; s16 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; -UnkBss10Struct lbl_1_data_10[] = { - { NULL, 0, 640, 480, GX_FALSE }, - { NULL, 0, 640, 480, GX_FALSE }, - { NULL, 0, 320, 240, GX_TRUE } -}; +UnkBss10Struct lbl_1_data_10[] = { { NULL, 0, 640, 480, GX_FALSE }, { NULL, 0, 640, 480, GX_FALSE }, { NULL, 0, 320, 240, GX_TRUE } }; -Vec lbl_1_data_40[] = { - { -450.0f, 0.0f, 0.0f }, - { -450.0f, 0.0f, 0.0f }, - { -150.0f, 0.0f, 0.0f }, - { -150.0f, 0.0f, 0.0f }, - { 150.0f, 0.0f, 0.0f }, - { 150.0f, 0.0f, 0.0f }, - { 450.0f, 0.0f, 0.0f }, - { 450.0f, 0.0f, 0.0f } -}; +Vec lbl_1_data_40[] = { { -450.0f, 0.0f, 0.0f }, { -450.0f, 0.0f, 0.0f }, { -150.0f, 0.0f, 0.0f }, { -150.0f, 0.0f, 0.0f }, { 150.0f, 0.0f, 0.0f }, + { 150.0f, 0.0f, 0.0f }, { 450.0f, 0.0f, 0.0f }, { 450.0f, 0.0f, 0.0f } }; -float lbl_1_data_A0[] = { - -600.0f, 300.0f, - -600.0f, 300.0f, - -300.0f, 300.0f, - -300.0f, 300.0f, - 0.0f, 300.0f, - 0.0f, 300.0f, - 300.0f, 300.0f, - 300.0f, 300.0f -}; +float lbl_1_data_A0[] + = { -600.0f, 300.0f, -600.0f, 300.0f, -300.0f, 300.0f, -300.0f, 300.0f, 0.0f, 300.0f, 0.0f, 300.0f, 300.0f, 300.0f, 300.0f, 300.0f }; -u8 lbl_1_data_E0_unused[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x08, 0x08, 0xFF -}; +u8 lbl_1_data_E0_unused[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x08, 0x08, 0xFF }; GXColor lbl_1_data_E8 = { 0xD8, 0xE2, 0xE5, 0x10 }; -void fn_1_0(void) { +void fn_1_0(void) +{ lbl_1_bss_790.unk04 = NULL; lbl_1_bss_790.unk08 = NULL; } -void fn_1_24(u16 arg0, s16 arg1) { +void fn_1_24(u16 arg0, s16 arg1) +{ UnkBss790Struct *temp_r31; UnkBss790Struct *temp_r30; UnkBss790Struct *temp_r29; @@ -306,7 +285,8 @@ void fn_1_24(u16 arg0, s16 arg1) { temp_r31->unk08 = temp_r29; } -s16 fn_1_AC(s16 arg0) { +s16 fn_1_AC(s16 arg0) +{ UnkBss790Struct *var_r31; UnkBss790Struct *temp_r29; UnkBss790Struct *temp_r30; @@ -330,12 +310,14 @@ s16 fn_1_AC(s16 arg0) { return -1; } -void fn_1_150(void) { +void fn_1_150(void) +{ lbl_1_bss_778.unk10 = NULL; lbl_1_bss_778.unk14 = NULL; } -void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ UnkBss778Struct *temp_r27; UnkBss778Struct *var_r31; UnkBss778Struct *temp_r28; @@ -365,7 +347,8 @@ void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec var_r31->unk14 = temp_r27; } -void fn_1_2D8(void) { +void fn_1_2D8(void) +{ UnkBss778Struct *var_r31; UnkBss778Struct *temp_r28; UnkBss778Struct *temp_r29; @@ -400,7 +383,8 @@ void fn_1_2D8(void) { } } -void fn_1_414(void) { +void fn_1_414(void) +{ s32 i; for (i = 0; i < 32; i++) { @@ -409,7 +393,8 @@ void fn_1_414(void) { } } -s16 fn_1_46C(s32 arg0) { +s16 fn_1_46C(s32 arg0) +{ s32 i; for (i = 0; i < 32; i++) { @@ -427,37 +412,40 @@ s16 fn_1_46C(s32 arg0) { return Hu3DModelCreateFile(arg0); } -void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ s32 var_r30; espBankSet(arg0[arg1 + 1], 10); espBankSet(arg0[arg1 + 4], 11); - if (36000 <= arg2) { - arg2 = 35999; + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; } - var_r30 = arg2 / 3600; - arg2 -= var_r30 * 3600; + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); if (var_r30 > 9) { var_r30 = 9; } espBankSet(arg0[arg1], var_r30); - var_r30 = arg2 / 60; - arg2 -= var_r30 * 60; + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; espBankSet(arg0[arg1 + 2], var_r30 / 10); espBankSet(arg0[arg1 + 3], var_r30 % 10); - var_r30 = 101.5f * arg2 / 60.0f; + var_r30 = 101.5f * arg2 / REFRESH_RATE; espBankSet(arg0[arg1 + 5], var_r30 / 10); espBankSet(arg0[arg1 + 6], var_r30 % 10); } -void fn_1_798(s32 arg0) { +void fn_1_798(s32 arg0) +{ lbl_1_bss_728 = 0.0f; lbl_1_bss_738 = lbl_1_bss_73C; GWMGRecordSet(arg0, lbl_1_bss_738); fn_1_580(lbl_1_bss_6E8, 7, lbl_1_bss_73C); } -void fn_1_9EC(void) { +void fn_1_9EC(void) +{ s32 i; for (i = 0; i < 16; i++) { @@ -465,7 +453,8 @@ void fn_1_9EC(void) { } } -void fn_1_A40(void) { +void fn_1_A40(void) +{ float temp_f31; s32 i; @@ -478,7 +467,8 @@ void fn_1_A40(void) { } } -void fn_1_B4C(float arg0, s32 arg1) { +void fn_1_B4C(float arg0, s32 arg1) +{ float temp_f30; float temp_f31; s32 i; @@ -515,7 +505,8 @@ void fn_1_B4C(float arg0, s32 arg1) { } } -void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ float temp_f31; if (1.0f < arg0) { @@ -527,13 +518,15 @@ void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); } -void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ Hu3DCameraPosSetV(1, arg0, arg1, arg2); lbl_1_bss_768 = *arg0; lbl_1_bss_750 = *arg2; } -s32 fn_1_13DC(float arg0, Vec *arg1) { +s32 fn_1_13DC(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -542,13 +535,15 @@ s32 fn_1_13DC(float arg0, Vec *arg1) { Hu3DCameraPosSetV(1, &sp18, arg1, &spC); if (1.0f <= arg0) { return 1; - } else { + } + else { lbl_1_bss_72C = 1; return 0; } } -void fn_1_1710(float arg0, Vec *arg1) { +void fn_1_1710(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -558,7 +553,8 @@ void fn_1_1710(float arg0, Vec *arg1) { lbl_1_bss_72C = 1; } -void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ Mtx sp1C; Vec sp10; float temp_f30; @@ -575,7 +571,7 @@ void fn_1_1A60(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_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); temp_f28 = 0.9f * temp_r31->viewport_x; @@ -585,7 +581,8 @@ void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { arg2->z = 0.0f; } -void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ Mtx sp10; Hu3DModelObjMtxGet(arg0, arg1, sp10); @@ -594,22 +591,24 @@ void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { arg2->z = sp10[2][3]; } -void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ Mtx spC; ModelData *var_r30; var_r30 = &Hu3DData[arg0]; Hu3DModelObjMtxGet(arg0, arg1, spC); - PSMTXConcat(var_r30->unk_F0, spC, spC); + MTXConcat(var_r30->unk_F0, spC, spC); if (NULL != arg3) { - PSMTXCopy(spC, arg3); + MTXCopy(spC, arg3); } arg2->x = spC[0][3]; arg2->y = spC[1][3]; arg2->z = spC[2][3]; } -float fn_1_1E20(float arg0, float arg1, float arg2) { +float fn_1_1E20(float arg0, float arg1, float arg2) +{ float var_f31; float var_f30; @@ -627,11 +626,13 @@ float fn_1_1E20(float arg0, float arg1, float arg2) { return var_f30; } -void fn_1_1F24(s32 arg0) { +void fn_1_1F24(s32 arg0) +{ lbl_1_bss_730 = HuAudSeqPlay(arg0); } -void fn_1_1F58(s32 arg0) { +void fn_1_1F58(s32 arg0) +{ if (lbl_1_bss_730 >= 0) { if (arg0 < 0) { arg0 = 1000; @@ -641,7 +642,8 @@ void fn_1_1F58(s32 arg0) { lbl_1_bss_730 = -1; } -void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ Vec sp18; float var_f28; s32 var_r30; @@ -650,7 +652,7 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { sp18.y = 0.0f; sp18.z = 0.0f; sp18.x = arg2 / 4.0f; - sp18.z = -(float) arg3 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; var_r30 = 0; var_f28 = VECMagXZ(&sp18); if (0.5f <= var_f28) { @@ -664,14 +666,16 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); if (8.0f <= var_f28) { var_r30 = 2; - } else { + } + else { var_r30 = 1; } } - PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); } -s32 fn_1_23B4(Vec *arg0) { +s32 fn_1_23B4(Vec *arg0) +{ float var_f31; float var_f30; s32 var_r31; @@ -684,7 +688,8 @@ s32 fn_1_23B4(Vec *arg0) { return var_r31 + var_r30 * 30; } -void fn_1_2480(UnkFn2480Struct *arg0, float arg1, float arg2) { +void fn_1_2480(UnkFn2480Struct *arg0, float arg1, float arg2) +{ Vec *var_r31; s32 i; @@ -698,10 +703,11 @@ void fn_1_2480(UnkFn2480Struct *arg0, float arg1, float arg2) { } } -void fn_1_2508(UnkFn2480Struct *arg0) { +void fn_1_2508(UnkFn2480Struct *arg0) +{ Vec spC; Vec *temp_r29; - float* var_r30; + float *var_r30; u16 *var_r28; u32 i; @@ -715,7 +721,7 @@ void fn_1_2508(UnkFn2480Struct *arg0) { var_r30 = arg0->unk30; for (i = 0; i < arg0->unk28; i++, var_r28++, var_r30++) { temp_r29 = &lbl_1_bss_5AC.unk00[*var_r28]; - PSVECSubtract(temp_r29, &arg0->unk0C, &spC); + VECSubtract(temp_r29, &arg0->unk0C, &spC); *var_r30 = VECMagXZ(&spC); if (arg0->unk2D == 0 && arg0->unk0C.z > temp_r29->z) { *var_r30 *= -1.0f; @@ -726,7 +732,8 @@ void fn_1_2508(UnkFn2480Struct *arg0) { } } -void fn_1_2714(u8 arg0, s32 arg1) { +void fn_1_2714(u8 arg0, s32 arg1) +{ GXColor sp14 = { 0x1E, 0x66, 0xA2, 0xFF }; UnkBss10Struct *temp_r31; @@ -739,7 +746,8 @@ void fn_1_2714(u8 arg0, s32 arg1) { DCFlushRange(temp_r31->unk00, temp_r31->unk04); } -void fn_1_280C(omObjData *arg0) { +void fn_1_280C(omObjData *arg0) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -749,14 +757,14 @@ void fn_1_280C(omObjData *arg0) { Vec *var_r25; Vec *temp_r28; Vec *var_r30; - u16 (*var_r31)[4]; + u16(*var_r31)[4]; s32 i; var_r27 = lbl_1_bss_5AC.unk00; var_r26 = lbl_1_bss_5AC.unk04; var_r25 = lbl_1_bss_5AC.unk14; for (i = 0; i < 900; i++) { - PSVECAdd(var_r27, var_r26, var_r25); + VECAdd(var_r27, var_r26, var_r25); var_r27++; var_r26++; var_r25++; @@ -766,23 +774,23 @@ void fn_1_280C(omObjData *arg0) { var_r30 = lbl_1_bss_5AC.unk18; memset(lbl_1_bss_5AC.unk18, 0, 900 * sizeof(*lbl_1_bss_5AC.unk18)); for (i = 0; i < 841; i++) { - PSVECSubtract(&temp_r28[(*var_r31)[1]], &temp_r28[(*var_r31)[0]], &sp2C); - PSVECSubtract(&temp_r28[(*var_r31)[3]], &temp_r28[(*var_r31)[0]], &sp20); - PSVECSubtract(&temp_r28[(*var_r31)[2]], &temp_r28[(*var_r31)[0]], &sp14); - PSVECCrossProduct(&sp2C, &sp20, &sp8); - PSVECNormalize(&sp8, &sp8); - PSVECAdd(&sp8, &var_r30[(*var_r31)[0]], &var_r30[(*var_r31)[0]]); - PSVECAdd(&sp8, &var_r30[(*var_r31)[1]], &var_r30[(*var_r31)[1]]); - PSVECAdd(&sp8, &var_r30[(*var_r31)[3]], &var_r30[(*var_r31)[3]]); - PSVECCrossProduct(&sp20, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); - PSVECAdd(&sp8, &var_r30[(*var_r31)[0]], &var_r30[(*var_r31)[0]]); - PSVECAdd(&sp8, &var_r30[(*var_r31)[3]], &var_r30[(*var_r31)[3]]); - PSVECAdd(&sp8, &var_r30[(*var_r31)[2]], &var_r30[(*var_r31)[2]]); + VECSubtract(&temp_r28[(*var_r31)[1]], &temp_r28[(*var_r31)[0]], &sp2C); + VECSubtract(&temp_r28[(*var_r31)[3]], &temp_r28[(*var_r31)[0]], &sp20); + VECSubtract(&temp_r28[(*var_r31)[2]], &temp_r28[(*var_r31)[0]], &sp14); + VECCrossProduct(&sp2C, &sp20, &sp8); + VECNormalize(&sp8, &sp8); + VECAdd(&sp8, &var_r30[(*var_r31)[0]], &var_r30[(*var_r31)[0]]); + VECAdd(&sp8, &var_r30[(*var_r31)[1]], &var_r30[(*var_r31)[1]]); + VECAdd(&sp8, &var_r30[(*var_r31)[3]], &var_r30[(*var_r31)[3]]); + VECCrossProduct(&sp20, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + VECAdd(&sp8, &var_r30[(*var_r31)[0]], &var_r30[(*var_r31)[0]]); + VECAdd(&sp8, &var_r30[(*var_r31)[3]], &var_r30[(*var_r31)[3]]); + VECAdd(&sp8, &var_r30[(*var_r31)[2]], &var_r30[(*var_r31)[2]]); var_r31++; } for (i = 0; i < 900; i++, var_r30++) { - PSVECNormalize(var_r30, var_r30); + VECNormalize(var_r30, var_r30); } DCStoreRangeNoSync(lbl_1_bss_5AC.unk14, 900 * sizeof(*lbl_1_bss_5AC.unk14)); DCStoreRangeNoSync(lbl_1_bss_5AC.unk18, 900 * sizeof(*lbl_1_bss_5AC.unk18)); @@ -790,12 +798,13 @@ void fn_1_280C(omObjData *arg0) { DCStoreRangeNoSync(lbl_1_bss_5AC.unk20, 900 * sizeof(*lbl_1_bss_5AC.unk20)); } -void fn_1_2AAC(omObjData *arg0) { +void fn_1_2AAC(omObjData *arg0) +{ Vec sp28; Vec *var_r25; UnkBss10Struct *temp_r26; UnkFn2480Struct *var_r31; - u16 (*var_r28)[4]; + u16(*var_r28)[4]; s32 temp_r27; s32 i; s32 j; @@ -838,7 +847,8 @@ void fn_1_2AAC(omObjData *arg0) { (*var_r28)[1] = temp_r27 + 30; (*var_r28)[2] = temp_r27 + 1; (*var_r28)[3] = temp_r27 + 31; - } else { + } + else { temp_r27 = j + i * 30; (*var_r28)[1] = temp_r27; (*var_r28)[3] = temp_r27 + 30; @@ -906,7 +916,8 @@ void fn_1_2AAC(omObjData *arg0) { } } -void fn_1_37A4(ModelData *arg0, Mtx arg1) { +void fn_1_37A4(ModelData *arg0, Mtx arg1) +{ Mtx spEC; Mtx spBC; Mtx sp8C; @@ -917,7 +928,7 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) { UnkBss10Struct *temp_r31; GXLoadPosMtxImm(arg1, GX_PNMTX0); - PSMTXInvXpose(arg1, spEC); + MTXInvXpose(arg1, spEC); GXLoadNrmMtxImm(spEC, GX_PNMTX0); temp_r31 = &lbl_1_data_10[2]; GXInitTexObj(&spC, temp_r31->unk00, temp_r31->unk08, temp_r31->unk0A, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); @@ -930,31 +941,31 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) { GXLoadTexObj(&spC, GX_TEXMAP3); GXSetNumTexGens(4); C_MTXLightPerspective(sp2C, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - PSMTXInverse(Hu3DCameraMtx, spEC); - PSMTXConcat(spEC, arg1, spEC); - PSMTXConcat(sp2C, Hu3DCameraMtx, spBC); - PSMTXConcat(spBC, spEC, spBC); + MTXInverse(Hu3DCameraMtx, spEC); + MTXConcat(spEC, arg1, spEC); + MTXConcat(sp2C, Hu3DCameraMtx, spBC); + MTXConcat(spBC, spEC, spBC); GXLoadTexMtxImm(spBC, GX_TEXMTX0, GX_MTX3x4); C_MTXLightPerspective(sp2C, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - PSMTXInverse(Hu3DCameraMtx, spEC); - PSMTXConcat(spEC, arg1, spEC); - PSMTXConcat(sp2C, Hu3DCameraMtx, spBC); - PSMTXConcat(spBC, spEC, spBC); + MTXInverse(Hu3DCameraMtx, spEC); + MTXConcat(spEC, arg1, spEC); + MTXConcat(sp2C, Hu3DCameraMtx, spBC); + MTXConcat(spBC, spEC, spBC); GXLoadTexMtxImm(spBC, GX_TEXMTX1, GX_MTX3x4); - PSMTXRotRad(spEC, 'X', MTXDegToRad(-90)); + MTXRotRad(spEC, 'X', MTXDegToRad(-90)); var_f31 = 0.0004f; - PSMTXScale(sp8C, 0.00083333335f, var_f31, 0.0004f); - PSMTXConcat(sp8C, spEC, sp5C); - PSMTXTrans(spBC, 0.5f, 0.5f, 0.5f); - PSMTXConcat(spBC, sp5C, sp5C); + MTXScale(sp8C, 0.00083333335f, var_f31, 0.0004f); + MTXConcat(sp8C, spEC, sp5C); + MTXTrans(spBC, 0.5f, 0.5f, 0.5f); + MTXConcat(spBC, sp5C, sp5C); sp5C[0][1] = -0.01f; GXLoadTexMtxImm(sp5C, GX_TEXMTX2, GX_MTX2x4); - PSMTXRotRad(spEC, 'X', MTXDegToRad(-90)); + MTXRotRad(spEC, 'X', MTXDegToRad(-90)); var_f31 = 0.0004f; - PSMTXScale(sp8C, var_f31, var_f31, var_f31); - PSMTXConcat(sp8C, spEC, sp5C); - PSMTXTrans(spBC, 0.5f, 0.5f, 0.0f); - PSMTXConcat(spBC, sp5C, sp5C); + MTXScale(sp8C, var_f31, var_f31, var_f31); + MTXConcat(sp8C, spEC, sp5C); + MTXTrans(spBC, 0.5f, 0.5f, 0.0f); + MTXConcat(spBC, sp5C, sp5C); GXLoadTexMtxImm(sp5C, GX_TEXMTX3, GX_MTX2x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX1, GX_FALSE, GX_PTIDENTITY); @@ -963,13 +974,13 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) { GXSetNumIndStages(2); GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); - PSMTXScale(spBC, -0.2f, -0.2f, 0.2f); - GXSetIndTexMtx(GX_ITM_0, (float (*)[3]) spBC, -2); + MTXScale(spBC, -0.2f, -0.2f, 0.2f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spBC, -2); GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD3, GX_TEXMAP3); GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); - PSMTXScale(spBC, 0.5f, 0.5f, 0.5f); - GXSetIndTexMtx(GX_ITM_1, (float (*)[3]) spBC, 0); + MTXScale(spBC, 0.5f, 0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_1, (float(*)[3])spBC, 0); GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1); GXSetNumTevStages(2); lbl_1_data_E8.a = lbl_1_bss_A8; @@ -999,15 +1010,18 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) { GXSetTevDirect(GX_TEVSTAGE1); } -void fn_1_3F1C(ModelData *arg0, Mtx arg1) { +void fn_1_3F1C(ModelData *arg0, Mtx arg1) +{ fn_1_280C(NULL); } -void fn_1_3F40(ModelData *arg0, Mtx arg1) { +void fn_1_3F40(ModelData *arg0, Mtx arg1) +{ fn_1_2714(2, GX_FALSE); } -void fn_1_4024(ModelData *arg0, Mtx arg1) { +void fn_1_4024(ModelData *arg0, Mtx arg1) +{ Mtx sp98; Mtx sp68; Mtx sp38; @@ -1017,10 +1031,10 @@ void fn_1_4024(ModelData *arg0, Mtx arg1) { fn_1_2714(1, GX_FALSE); GXLoadPosMtxImm(arg1, GX_PNMTX0); C_MTXLightPerspective(sp98, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - PSMTXInverse(Hu3DCameraMtx, sp68); - PSMTXConcat(sp68, arg1, sp68); - PSMTXConcat(sp98, Hu3DCameraMtx, sp38); - PSMTXConcat(sp38, sp68, sp68); + MTXInverse(Hu3DCameraMtx, sp68); + MTXConcat(sp68, arg1, sp68); + MTXConcat(sp98, Hu3DCameraMtx, sp38); + MTXConcat(sp38, sp68, sp68); GXLoadTexMtxImm(sp68, GX_TEXMTX0, GX_MTX3x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); GXSetNumChans(1); @@ -1065,7 +1079,8 @@ void fn_1_4024(ModelData *arg0, Mtx arg1) { GXEnd(); } -void fn_1_4700(ModelData *arg0, Mtx arg1) { +void fn_1_4700(ModelData *arg0, Mtx arg1) +{ Mtx sp60; Mtx44 sp20; float temp_f31; @@ -1081,7 +1096,7 @@ void fn_1_4700(ModelData *arg0, Mtx arg1) { C_MTXOrtho(sp20, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 100.0f); GXSetProjection(sp20, GX_ORTHOGRAPHIC); - PSMTXIdentity(sp60); + MTXIdentity(sp60); GXLoadPosMtxImm(sp60, GX_PNMTX0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); @@ -1149,7 +1164,8 @@ void fn_1_4700(ModelData *arg0, Mtx arg1) { fn_1_2714(0, GX_TRUE); } -void fn_1_4F28(omObjData *arg0) { +void fn_1_4F28(omObjData *arg0) +{ Vec spC; float temp_f27; float var_f29; @@ -1200,7 +1216,8 @@ void fn_1_4F28(omObjData *arg0) { } } -void fn_1_5404(omObjData *arg0) { +void fn_1_5404(omObjData *arg0) +{ lbl_1_bss_A8 = 0; omSetTra(arg0, 0.0f, 0.0f, 0.0f); fn_1_2AAC(arg0); @@ -1217,7 +1234,8 @@ void fn_1_5404(omObjData *arg0) { arg0->func = fn_1_4F28; } -void fn_1_5530(Vec *arg0, s32 arg1) { +void fn_1_5530(Vec *arg0, s32 arg1) +{ UnkBssACStruct *temp_r31; temp_r31 = &lbl_1_bss_AC[arg1]; @@ -1225,7 +1243,8 @@ void fn_1_5530(Vec *arg0, s32 arg1) { temp_r31->unk0C = 1.0f; } -void fn_1_557C(Vec *arg0, float arg1, s32 arg2, s32 arg3) { +void fn_1_557C(Vec *arg0, float arg1, s32 arg2, s32 arg3) +{ UnkFn2480Struct *temp_r31; temp_r31 = &lbl_1_bss_5AC.unk10[arg2 + (arg3 ^ 1)]; @@ -1247,7 +1266,8 @@ void fn_1_557C(Vec *arg0, float arg1, s32 arg2, s32 arg3) { } } -float fn_1_5664(Vec *arg0) { +float fn_1_5664(Vec *arg0) +{ return lbl_1_bss_5AC.unk04[fn_1_23B4(arg0)].y; } @@ -1266,191 +1286,58 @@ GXColor lbl_1_data_16C = { 0xFF, 0xFF, 0xFF, 0xFF }; Vec lbl_1_data_170 = { 0.0f, 8000.0f, 1000.0f }; Vec lbl_1_data_17C = { 0.0f, 0.0f, 0.0f }; -s32 lbl_1_data_188[8][8] = { - { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 0), - DATA_MAKE_NUM(DATADIR_M405, 8), - DATA_MAKE_NUM(DATADIR_M405, 16), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 24), - DATA_MAKE_NUM(DATADIR_M405, 32), - DATA_MAKE_NUM(DATADIR_M405, 40) - }, - { - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 1), - DATA_MAKE_NUM(DATADIR_M405, 9), - DATA_MAKE_NUM(DATADIR_M405, 17), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 25), - DATA_MAKE_NUM(DATADIR_M405, 33), - DATA_MAKE_NUM(DATADIR_M405, 41) - }, - { - DATA_MAKE_NUM(DATADIR_PEACHMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 2), - DATA_MAKE_NUM(DATADIR_M405, 10), - DATA_MAKE_NUM(DATADIR_M405, 18), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 26), - DATA_MAKE_NUM(DATADIR_M405, 34), - DATA_MAKE_NUM(DATADIR_M405, 42) - }, - { - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 3), - DATA_MAKE_NUM(DATADIR_M405, 11), - DATA_MAKE_NUM(DATADIR_M405, 19), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 27), - DATA_MAKE_NUM(DATADIR_M405, 35), - DATA_MAKE_NUM(DATADIR_M405, 43) - }, - { - DATA_MAKE_NUM(DATADIR_WARIOMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 4), - DATA_MAKE_NUM(DATADIR_M405, 12), - DATA_MAKE_NUM(DATADIR_M405, 20), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 28), - DATA_MAKE_NUM(DATADIR_M405, 36), - DATA_MAKE_NUM(DATADIR_M405, 44) - }, - { - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 5), - DATA_MAKE_NUM(DATADIR_M405, 13), - DATA_MAKE_NUM(DATADIR_M405, 21), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 29), - DATA_MAKE_NUM(DATADIR_M405, 37), - DATA_MAKE_NUM(DATADIR_M405, 45) - }, - { - DATA_MAKE_NUM(DATADIR_DAISYMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 6), - DATA_MAKE_NUM(DATADIR_M405, 14), - DATA_MAKE_NUM(DATADIR_M405, 22), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 30), - DATA_MAKE_NUM(DATADIR_M405, 38), - DATA_MAKE_NUM(DATADIR_M405, 46) - }, - { - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 42), - DATA_MAKE_NUM(DATADIR_M405, 7), - DATA_MAKE_NUM(DATADIR_M405, 15), - DATA_MAKE_NUM(DATADIR_M405, 23), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 43), - DATA_MAKE_NUM(DATADIR_M405, 31), - DATA_MAKE_NUM(DATADIR_M405, 39), - DATA_MAKE_NUM(DATADIR_M405, 47) - } -}; +s32 lbl_1_data_188[8][8] = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 0), DATA_MAKE_NUM(DATADIR_M405, 8), + DATA_MAKE_NUM(DATADIR_M405, 16), DATA_MAKE_NUM(DATADIR_MARIOMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 24), + DATA_MAKE_NUM(DATADIR_M405, 32), DATA_MAKE_NUM(DATADIR_M405, 40) }, + { DATA_MAKE_NUM(DATADIR_LUIGIMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 1), DATA_MAKE_NUM(DATADIR_M405, 9), DATA_MAKE_NUM(DATADIR_M405, 17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 25), DATA_MAKE_NUM(DATADIR_M405, 33), DATA_MAKE_NUM(DATADIR_M405, 41) }, + { DATA_MAKE_NUM(DATADIR_PEACHMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 2), DATA_MAKE_NUM(DATADIR_M405, 10), DATA_MAKE_NUM(DATADIR_M405, 18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 26), DATA_MAKE_NUM(DATADIR_M405, 34), DATA_MAKE_NUM(DATADIR_M405, 42) }, + { DATA_MAKE_NUM(DATADIR_YOSHIMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 3), DATA_MAKE_NUM(DATADIR_M405, 11), DATA_MAKE_NUM(DATADIR_M405, 19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 27), DATA_MAKE_NUM(DATADIR_M405, 35), DATA_MAKE_NUM(DATADIR_M405, 43) }, + { DATA_MAKE_NUM(DATADIR_WARIOMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 4), DATA_MAKE_NUM(DATADIR_M405, 12), DATA_MAKE_NUM(DATADIR_M405, 20), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 28), DATA_MAKE_NUM(DATADIR_M405, 36), DATA_MAKE_NUM(DATADIR_M405, 44) }, + { DATA_MAKE_NUM(DATADIR_DONKEYMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 5), DATA_MAKE_NUM(DATADIR_M405, 13), DATA_MAKE_NUM(DATADIR_M405, 21), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 29), DATA_MAKE_NUM(DATADIR_M405, 37), DATA_MAKE_NUM(DATADIR_M405, 45) }, + { DATA_MAKE_NUM(DATADIR_DAISYMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 6), DATA_MAKE_NUM(DATADIR_M405, 14), DATA_MAKE_NUM(DATADIR_M405, 22), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 30), DATA_MAKE_NUM(DATADIR_M405, 38), DATA_MAKE_NUM(DATADIR_M405, 46) }, + { DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 42), DATA_MAKE_NUM(DATADIR_M405, 7), DATA_MAKE_NUM(DATADIR_M405, 15), DATA_MAKE_NUM(DATADIR_M405, 23), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 43), DATA_MAKE_NUM(DATADIR_M405, 31), DATA_MAKE_NUM(DATADIR_M405, 39), DATA_MAKE_NUM(DATADIR_M405, 47) } }; -s32 lbl_1_data_288[] = { - DATA_MAKE_NUM(DATADIR_M405, 55), - DATA_MAKE_NUM(DATADIR_M405, 56) -}; +s32 lbl_1_data_288[] = { DATA_MAKE_NUM(DATADIR_M405, 55), DATA_MAKE_NUM(DATADIR_M405, 56) }; -s32 lbl_1_data_290[] = { - DATA_MAKE_NUM(DATADIR_MGCONST, 0), - DATA_MAKE_NUM(DATADIR_MGCONST, 1), - DATA_MAKE_NUM(DATADIR_MGCONST, 2), - DATA_MAKE_NUM(DATADIR_MGCONST, 3), - DATA_MAKE_NUM(DATADIR_MGCONST, 4), - DATA_MAKE_NUM(DATADIR_MGCONST, 5), - DATA_MAKE_NUM(DATADIR_MGCONST, 6), - DATA_MAKE_NUM(DATADIR_MGCONST, 7) -}; +s32 lbl_1_data_290[] = { DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_MGCONST, 1), DATA_MAKE_NUM(DATADIR_MGCONST, 2), + DATA_MAKE_NUM(DATADIR_MGCONST, 3), DATA_MAKE_NUM(DATADIR_MGCONST, 4), DATA_MAKE_NUM(DATADIR_MGCONST, 5), DATA_MAKE_NUM(DATADIR_MGCONST, 6), + DATA_MAKE_NUM(DATADIR_MGCONST, 7) }; s32 lbl_1_data_2B0[] = { -224, -128, 128, 224 }; -s32 lbl_1_data_2C0[] = { - 0, 0, - 0, 0, - -20, -18, - 19, -18, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0 -}; +s32 lbl_1_data_2C0[] = { 0, 0, 0, 0, -20, -18, 19, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; s32 lbl_1_data_310[] = { -24, 17, 24, 17, 0, 17 }; s32 lbl_1_data_328[] = { 1, 0, 3, 2, 4 }; -u8 lbl_1_data_33C[][3] = { - { 1, 0, 1 }, - { 2, 3, 0 }, - { 1, 0, 0 } -}; +u8 lbl_1_data_33C[][3] = { { 1, 0, 1 }, { 2, 3, 0 }, { 1, 0, 0 } }; -u16 lbl_1_data_346[] = { - 0x0100, 0x0200, 0x0040, 0x0020, 0x0000 -}; +u16 lbl_1_data_346[] = { 0x0100, 0x0200, 0x0040, 0x0020, 0x0000 }; UnkBssA4InnerStruct lbl_1_data_350 = { 3570.0f, 2 }; UnkBssA4InnerStruct lbl_1_data_358 = { 3330.0f, 2 }; UnkBssA4InnerStruct lbl_1_data_360 = { 3180.0f, 2 }; UnkBssA4InnerStruct lbl_1_data_368 = { 3060.0f, 6 }; -HsfanimStruct00 lbl_1_data_370 = { - 0x0014, - { 0x00, 0x00 }, // padding? - 1.0f, - 30.0f, - 0.0f, - { 0.0f, 0.05f, 0.0f }, - 1.0f, - 0.999f, - 30.0f, - 1.03f, - 0x0004, - { - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }, - { - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 } - } -}; +HsfanimStruct00 lbl_1_data_370 = { 0x0014, { 0x00, 0x00 }, // padding? + 1.0f, 30.0f, 0.0f, { 0.0f, 0.05f, 0.0f }, 1.0f, 0.999f, 30.0f, 1.03f, 0x0004, + { { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 } } }; -HsfanimStruct00 lbl_1_data_3C0 = { - 0x0014, - { 0x00, 0x00 }, // padding? - 1.0f, - 10.0f, - 360.0f, - { 0.0f, 0.1f, 0.0f }, - 1.0f, - 1.0f, - 50.0f, - 1.05f, - 0x0001, - { - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }, - { - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 } - } -}; +HsfanimStruct00 lbl_1_data_3C0 = { 0x0014, { 0x00, 0x00 }, // padding? + 1.0f, 10.0f, 360.0f, { 0.0f, 0.1f, 0.0f }, 1.0f, 1.0f, 50.0f, 1.05f, 0x0001, + { { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 } } }; -void fn_1_57FC(void) { +void fn_1_57FC(void) +{ UnkBssA4Data *temp_r31; s32 i; @@ -1461,7 +1348,8 @@ void fn_1_57FC(void) { } } -void fn_1_58A0(omObjData *arg0) { +void fn_1_58A0(omObjData *arg0) +{ Vec sp8; s16 var_r30; @@ -1471,8 +1359,8 @@ void fn_1_58A0(omObjData *arg0) { arg0->work[0]++; lbl_1_bss_6C = 0.0f; Hu3DMotionSet(arg0->model[0], arg0->motion[1]); - Hu3DModelAttrReset(arg0->model[0], 0x40000003); - Hu3DModelAttrReset(arg0->model[1], 0x40000003); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[1], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); } break; case 1: @@ -1490,8 +1378,8 @@ void fn_1_58A0(omObjData *arg0) { if (Hu3DMotionEndCheck(arg0->model[0]) != 0) { arg0->work[0]++; Hu3DMotionSet(arg0->model[0], arg0->motion[0]); - Hu3DModelAttrReset(arg0->model[0], 0x40000002); - Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); } break; case 2: @@ -1499,7 +1387,8 @@ void fn_1_58A0(omObjData *arg0) { } } -void fn_1_5B28(omObjData *arg0) { +void fn_1_5B28(omObjData *arg0) +{ s32 i; arg0->work[0] = 0; @@ -1511,27 +1400,29 @@ void fn_1_5B28(omObjData *arg0) { arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_288[i]); } for (i = 0; i < 2; i++) { - Hu3DModelAttrSet(arg0->model[i], 1); - Hu3DModelAttrSet(arg0->model[i], 0x40000003); + Hu3DModelAttrSet(arg0->model[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[i], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[i], 5); Hu3DModelShadowSet(arg0->model[i]); } Hu3DMotionSet(arg0->model[0], *arg0->motion); - Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelHookSet(arg0->model[0], "g001m1_021-itemhook_r", arg0->model[1]); Hu3DMotionTimeSet(arg0->model[1], 1.0f); for (i = 0; i < 2; i++) { - Hu3DModelAttrReset(arg0->model[i], 1); + Hu3DModelAttrReset(arg0->model[i], HU3D_ATTR_DISPOFF); } arg0->func = fn_1_58A0; } -void fn_1_5D3C(UnkBssA4Data *arg0, Vec *arg1) { +void fn_1_5D3C(UnkBssA4Data *arg0, Vec *arg1) +{ fn_1_5530(arg1, arg0->unk98 + arg0->unk108 * 20); arg0->unk98 = (arg0->unk98 + 1) % 20; } -void fn_1_5DCC(UnkBssA4Data *arg0) { +void fn_1_5DCC(UnkBssA4Data *arg0) +{ Vec sp8; float var_f31; UnkFn2480Struct *temp_r31; @@ -1551,7 +1442,8 @@ void fn_1_5DCC(UnkBssA4Data *arg0) { fn_1_557C(&sp8, var_f31, (3 - arg0->unk108) * 2, arg0->unk94 & 1); } -void fn_1_6040(UnkBssA4Data *arg0, omObjData *arg1) { +void fn_1_6040(UnkBssA4Data *arg0, omObjData *arg1) +{ Vec sp44[5]; s32 var_r27; s32 var_r26; @@ -1575,7 +1467,8 @@ void fn_1_6040(UnkBssA4Data *arg0, omObjData *arg1) { Hu3DParManPosSet(arg0->unkF0[i], arg0->unkA0[i].x, arg0->unkA0[i].y, arg0->unkA0[i].z); if (--arg0->unkDC[i] <= 0) { Hu3DParManAttrSet(arg0->unkF0[i], 1); - } else { + } + else { Hu3DParManAttrReset(arg0->unkF0[i], 1); } } @@ -1592,7 +1485,8 @@ void fn_1_6040(UnkBssA4Data *arg0, omObjData *arg1) { } } -void fn_1_65BC(UnkBssA4Data *arg0) { +void fn_1_65BC(UnkBssA4Data *arg0) +{ u8 *temp_r30; s32 i; @@ -1608,19 +1502,22 @@ void fn_1_65BC(UnkBssA4Data *arg0) { espDispOn(arg0->unk0C[temp_r30[2] + 4]); } -void fn_1_6828(UnkBssA4Data *arg0) { +void fn_1_6828(UnkBssA4Data *arg0) +{ s32 temp_r30; temp_r30 = (113.0f - arg0->unk68) / 10.0f - 1.0f; if (temp_r30 > 9) { espDispOff(arg0->unk0C[3]); - } else { + } + else { espDispOn(arg0->unk0C[3]); espBankSet(arg0->unk0C[3], temp_r30); } } -u16 fn_1_68CC(UnkBssA4Data *arg0) { +u16 fn_1_68CC(UnkBssA4Data *arg0) +{ u16 var_r29; u8 *temp_r30; @@ -1643,14 +1540,17 @@ u16 fn_1_68CC(UnkBssA4Data *arg0) { } if (arg0->unk44 >= 2 && 70.0f < arg0->unk68) { arg0->unk3C = 8.0f; - } else if (0.0f != arg0->unk40) { + } + else if (0.0f != arg0->unk40) { arg0->unk3C = arg0->unk40; - } else if (arg0->unk48 > 0) { + } + else if (arg0->unk48 > 0) { if ((arg0->unk48 & 1) == 1) { arg0->unk38 += 40.0f * (arg0->unk44 + 1); arg0->unk3C = 8.0f; arg0->unk48--; - } else if (frandmod(10) == 0) { + } + else if (frandmod(10) == 0) { arg0->unk3C = 8.0f; arg0->unk48--; } @@ -1662,13 +1562,15 @@ u16 fn_1_68CC(UnkBssA4Data *arg0) { if (30.0f < arg0->unk68) { arg0->unk40 = 0.0f; } - } else if (10.0f > arg0->unk68) { + } + else if (10.0f > arg0->unk68) { arg0->unk40 = 20.0f; } return var_r29; } -void fn_1_6BFC(omObjData *arg0) { +void fn_1_6BFC(omObjData *arg0) +{ float var_f31; float var_f30; UnkBssA4Data *temp_r31; @@ -1682,8 +1584,8 @@ void fn_1_6BFC(omObjData *arg0) { if (lbl_1_bss_98->work[0] == 1006) { temp_r31->unk100 = 2005; temp_r31->unk104 = 0; - Hu3DModelAttrReset(arg0->model[0], 0x40000002); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 8.0f, 0x40000001); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); Hu3DMotionSpeedSet(arg0->model[0], 1.0f); for (i = 0; i < 5; i++) { Hu3DParManAttrSet(temp_r31->unkF0[i], 1); @@ -1699,7 +1601,8 @@ void fn_1_6BFC(omObjData *arg0) { } if (GWPlayerCfg[temp_r31->unk108].iscom) { temp_r31->unk78 = fn_1_68CC(temp_r31); - } else { + } + else { temp_r31->unk78 |= HuPadBtnDown[temp_r31->unk110]; } var_r27 = temp_r31->unk104; @@ -1708,7 +1611,8 @@ void fn_1_6BFC(omObjData *arg0) { temp_r28 = lbl_1_data_33C[temp_r31->unk94]; if (temp_r28[2] == 1) { var_r24 = lbl_1_data_346[temp_r28[0]] | lbl_1_data_346[temp_r28[1]]; - } else { + } + else { var_r24 = lbl_1_data_346[temp_r28[temp_r31->unk90 & 1]]; } temp_r31->unk6C += 1.0f; @@ -1718,7 +1622,8 @@ void fn_1_6BFC(omObjData *arg0) { if (5.0f < temp_r31->unk74) { temp_r31->unk74 -= 1.0f; } - } else { + } + else { temp_r31->unk74 = 7.0f; } temp_r31->unk6C = 0.0f; @@ -1743,7 +1648,8 @@ void fn_1_6BFC(omObjData *arg0) { } if (temp_r31->unk94 == 1) { var_f30 = 1.0f; - } else { + } + else { var_f30 = -1.0f; } temp_r31->unk5C += var_f31 * var_f30; @@ -1769,7 +1675,8 @@ void fn_1_6BFC(omObjData *arg0) { temp_r31->unk8C = 0; } } - } else { + } + else { temp_r31->unk78 = 0; } if (1.0f > ABS(temp_r31->unk5C - temp_r31->unk4C.z)) { @@ -1777,7 +1684,8 @@ void fn_1_6BFC(omObjData *arg0) { if (30.0f == temp_r31->unk7C) { var_r27 = 0; } - } else { + } + else { temp_r31->unk7C = 0; var_r27 = temp_r31->unk94 + 2; var_f31 = 0.1f * (temp_r31->unk5C - temp_r31->unk4C.z); @@ -1789,11 +1697,13 @@ void fn_1_6BFC(omObjData *arg0) { temp_r31->unk4C.z = 1150.0f * (0.0f > temp_r31->unk4C.z ? -1 : 1); if (lbl_1_bss_7C < 0) { lbl_1_bss_7C = temp_r31->unk108; - } else if (frandmod(100) > 50) { + } + else if (frandmod(100) > 50) { lbl_1_bss_7C = temp_r31->unk108; } } - } else { + } + else { if (1150.0f < ABS(temp_r31->unk4C.z)) { temp_r31->unk100 = 2004; temp_r31->unkFC = 10.0f; @@ -1801,8 +1711,8 @@ void fn_1_6BFC(omObjData *arg0) { temp_r31->unk5C = temp_r31->unk4C.z; var_r27 = temp_r31->unk94 + 5; temp_r31->unk104 = var_r27; - Hu3DModelAttrReset(arg0->model[0], 0x40000003); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 8.0f, 0); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 8.0f, HU3D_MOTATTR_NONE); temp_r31->unk94++; if (temp_r31->unk94 > lbl_1_bss_78) { lbl_1_bss_78 = temp_r31->unk94; @@ -1832,8 +1742,8 @@ void fn_1_6BFC(omObjData *arg0) { } if (var_r27 != temp_r31->unk104) { temp_r31->unk104 = var_r27; - Hu3DModelAttrReset(arg0->model[0], 0x40000002); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 30.0f, 0x40000001); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 30.0f, HU3D_MOTATTR_LOOP); } if (temp_r31->unk104 >= 2 && temp_r31->unk104 <= 4) { temp_r31->unk60 = 0.5f * temp_r31->unk64; @@ -1843,7 +1753,8 @@ void fn_1_6BFC(omObjData *arg0) { if (2.0f < temp_r31->unk60) { temp_r31->unk60 = 2.0f; } - } else { + } + else { temp_r31->unk60 = 1.0f; temp_r31->unk64 = 0.0f; } @@ -1854,7 +1765,8 @@ void fn_1_6BFC(omObjData *arg0) { omSetRot(arg0, 0.0f, temp_r31->unk58, 0.0f); } -void fn_1_798C(omObjData *arg0) { +void fn_1_798C(omObjData *arg0) +{ UnkBssA4Data *temp_r31; s32 i; @@ -1863,19 +1775,20 @@ void fn_1_798C(omObjData *arg0) { case 2000: if (lbl_1_bss_98->work[0] >= 1003) { temp_r31->unk100++; - Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); } break; case 2001: if (lbl_1_bss_98->work[0] >= 1005) { temp_r31->unk100++; - Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); for (i = 0; i <= 3; i++) { espDispOn(temp_r31->unk0C[i]); } fn_1_65BC(temp_r31); - } else if (30.0f == Hu3DMotionTimeGet(arg0->model[0])) { - Hu3DModelAttrSet(arg0->model[0], 0x40000002); + } + else if (30.0f == Hu3DMotionTimeGet(arg0->model[0])) { + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); } break; case 2002: @@ -1884,8 +1797,8 @@ void fn_1_798C(omObjData *arg0) { temp_r31->unk4C.z = 900.0f; temp_r31->unk5C = temp_r31->unk4C.z; temp_r31->unk104 = 2; - Hu3DModelAttrSet(arg0->model[0], 0x40000001); - Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DMotionSet(arg0->model[0], arg0->motion[temp_r31->unk104]); Hu3DMotionCalc(arg0->model[0]); arg0->func = fn_1_6BFC; @@ -1898,16 +1811,17 @@ void fn_1_798C(omObjData *arg0) { if (lbl_1_bss_7C == temp_r31->unk108) { temp_r31->unk58 = fn_1_1E20(temp_r31->unk58, 0.0f, 0.1f); } - if (lbl_1_bss_98->work[0] >= 1008 && temp_r31->unk104 == 0 && lbl_1_bss_7C == temp_r31->unk108 && 1.0f == Hu3DMotionTimeGet(arg0->model[0])) { + if (lbl_1_bss_98->work[0] >= 1008 && temp_r31->unk104 == 0 && lbl_1_bss_7C == temp_r31->unk108 + && 1.0f == Hu3DMotionTimeGet(arg0->model[0])) { temp_r31->unk104 = 7; Hu3DMotionOverlaySet(arg0->model[0], arg0->motion[temp_r31->unk104]); Hu3DMotionOverlayTimeSet(arg0->model[0], 0.0f); - Hu3DModelAttrReset(arg0->model[0], 0x40000400); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_OVL_PAUSE); HuAudCharVoicePlay(temp_r31->unk10C, 0x124); } if (temp_r31->unk104 == 7 && 73.0f <= Hu3DMotionOverlayTimeGet(arg0->model[0])) { Hu3DMotionOverlayTimeSet(arg0->model[0], 35.0f); - Hu3DModelAttrReset(arg0->model[0], 0x40000400); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_OVL_PAUSE); } temp_r31->unk4C.y = -62.0f + 4.0f * fn_1_5664(&temp_r31->unk4C); break; @@ -1922,7 +1836,8 @@ void fn_1_798C(omObjData *arg0) { omSetRot(arg0, 0.0f, temp_r31->unk58, 0.0f); } -void fn_1_81B4(omObjData *arg0) { +void fn_1_81B4(omObjData *arg0) +{ float var_f31; UnkBssA4Data *temp_r31; s32 i; @@ -1957,9 +1872,9 @@ void fn_1_81B4(omObjData *arg0) { arg0->motion[i] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk10C], lbl_1_data_188[temp_r31->unk10C][i]); CharModelMotionSet(lbl_1_data_0[temp_r31->unk10C], arg0->motion[i]); } - Hu3DModelAttrSet(arg0->model[0], 1); - Hu3DModelAttrReset(arg0->model[0], 0x40000001); - Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[0], 3); Hu3DMotionSet(arg0->model[0], arg0->motion[1]); Hu3DMotionTimeSet(arg0->model[0], 1.0f); @@ -1971,7 +1886,7 @@ void fn_1_81B4(omObjData *arg0) { omSetTra(arg0, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); omSetRot(arg0, 0.0f, temp_r31->unk58, 0.0f); for (i = 0; i < 1; i++) { - Hu3DModelAttrReset(arg0->model[i], 1); + Hu3DModelAttrReset(arg0->model[i], HU3D_ATTR_DISPOFF); } temp_r31->unk04 = 288.0f + lbl_1_data_2B0[temp_r31->unk108]; temp_r31->unk08 = 80; @@ -1990,7 +1905,7 @@ void fn_1_81B4(omObjData *arg0) { for (i = 0; i < 10; i++) { espDrawNoSet(temp_r31->unk0C[i], 0); espDispOff(temp_r31->unk0C[i]); - espAttrSet(temp_r31->unk0C[i], 1); + espAttrSet(temp_r31->unk0C[i], HUSPR_ATTR_NOANIM); espBankSet(temp_r31->unk0C[i], 0); espPriSet(temp_r31->unk0C[i], 128 - i); espPosSet(temp_r31->unk0C[i], temp_r31->unk04 + lbl_1_data_2C0[i * 2], temp_r31->unk08 + lbl_1_data_2C0[i * 2 + 1]); @@ -2040,7 +1955,8 @@ void fn_1_81B4(omObjData *arg0) { arg0->func = fn_1_798C; } -void fn_1_8AF0(void) { +void fn_1_8AF0(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -2088,7 +2004,8 @@ void fn_1_8AF0(void) { sp14.x += 0.02f * (-1500.0f - sp14.x); sp14.y += 0.02f * (700.0f - sp14.y); sp14.z += 0.04f * (sp8.z - sp14.z); - } else { + } + else { var_f31 = 0.05f * (288.0f - (var_f29 + var_f30) / 2); if (0.0f < var_f31) { sp14.z -= var_f31; @@ -2133,7 +2050,8 @@ void fn_1_8AF0(void) { sp14.x -= 0.2f * var_f31; sp8.x += 0.01f * var_f31; } - } else { + } + else { sp14.y += 2.0f * var_f31; sp14.x -= 0.5f * var_f31; sp8.x += 0.01f * var_f31; @@ -2143,13 +2061,15 @@ void fn_1_8AF0(void) { fn_1_1350(&sp14, &lbl_1_data_100, &sp8); } -static inline void fn_1_9288_InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { +static inline void fn_1_9288_InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) +{ arg0->x = arg1; arg0->y = arg2; arg0->z = arg3; } -void fn_1_9288(omObjData *arg0) { +void fn_1_9288(omObjData *arg0) +{ Vec sp18; Vec spC; float var_f27; @@ -2184,7 +2104,8 @@ void fn_1_9288(omObjData *arg0) { if (90.0f >= lbl_1_bss_80) { var_r30 = 1; var_f27 = lbl_1_bss_80; - } else { + } + else { var_r30 = 0; var_f27 = lbl_1_bss_80 - 90.0f; } @@ -2231,7 +2152,8 @@ void fn_1_9288(omObjData *arg0) { lbl_1_bss_73C++; if (lbl_1_bss_734 >= 0) { MGSeqParamSet(lbl_1_bss_734, 1, (18059 - lbl_1_bss_73C) / 60); - } else if (lbl_1_bss_73C > 16200) { + } + else if (lbl_1_bss_73C > 16200) { lbl_1_bss_734 = MGSeqTimerCreate((18059 - lbl_1_bss_73C) / 60); MGSeqPosSet(lbl_1_bss_734, 288.0f, 400.0f); } @@ -2258,7 +2180,8 @@ void fn_1_9288(omObjData *arg0) { if (lbl_1_bss_78 == 2) { fn_1_1350(&lbl_1_data_13C, &lbl_1_data_100, &lbl_1_data_148); } - } else { + } + else { fn_1_8AF0(); } lbl_1_bss_74 = lbl_1_bss_78; @@ -2274,7 +2197,8 @@ void fn_1_9288(omObjData *arg0) { if (lbl_1_bss_7C >= 0) { lbl_1_bss_60 = HuAudFXPlay(0x538); } - } else { + } + else { lbl_1_bss_80 += 1.0f; if (lbl_1_bss_7C >= 0) { fn_1_11F4(lbl_1_bss_80 / 60.0f, &lbl_1_bss_48[0], &lbl_1_bss_30[0], &sp18); @@ -2288,10 +2212,7 @@ void fn_1_9288(omObjData *arg0) { } if (lbl_1_bss_7C >= 0 && !GWPlayerCfg[lbl_1_bss_7C].iscom && lbl_1_bss_738 > lbl_1_bss_73C) { arg0->work[0] = 1007; - lbl_1_bss_728 = 0.0f; - lbl_1_bss_738 = lbl_1_bss_73C; - GWMGRecordSet(0, lbl_1_bss_738); - fn_1_580(lbl_1_bss_6E8, 7, lbl_1_bss_73C); + fn_1_798(0); } lbl_1_bss_736 = -1; lbl_1_bss_80 = 0.0f; @@ -2314,11 +2235,13 @@ void fn_1_9288(omObjData *arg0) { if (lbl_1_bss_7C < 0) { lbl_1_bss_736 = MGSeqDrawCreate(); HuAudSStreamPlay(4); - } else { + } + else { lbl_1_bss_736 = MGSeqWinCreate(GWPlayerCfg[lbl_1_bss_7C].character, -1, -1, -1); HuAudSStreamPlay(1); } - } else { + } + else { lbl_1_bss_80 += 1.0f; 0 <= lbl_1_bss_7C; if (210.0f < lbl_1_bss_80 && MGSeqStatGet(lbl_1_bss_736) == 0) { @@ -2336,7 +2259,8 @@ void fn_1_9288(omObjData *arg0) { fn_1_A40(); } -void fn_1_AD10(omObjData *arg0) { +void fn_1_AD10(omObjData *arg0) +{ s32 i; arg0->work[0] = 1000; @@ -2345,42 +2269,43 @@ void fn_1_AD10(omObjData *arg0) { lbl_1_bss_70 = 900.0f; omSetTra(arg0, 0.0f, 0.0f, 0.0f); arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 48)); - Hu3DModelAttrSet(arg0->model[0], 0x4001); - Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[0], 5); arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 49)); - Hu3DModelAttrSet(arg0->model[1], 0x4001); - Hu3DModelAttrSet(arg0->model[1], 0x40000002); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[1], 6); Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 0.0f); arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 50)); - Hu3DModelAttrSet(arg0->model[2], 1); - Hu3DModelAttrSet(arg0->model[2], 0x40000002); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[2], 1); Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, 0.0f); Hu3DModelShadowMapSet(arg0->model[2]); arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 51)); - Hu3DModelAttrSet(arg0->model[3], 1); - Hu3DModelAttrSet(arg0->model[3], 0x40000002); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[3], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[3], 1); Hu3DModelPosSet(arg0->model[3], 0.0f, -4.0f, 0.0f); Hu3DModelTPLvlSet(arg0->model[3], 0.4f); arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 52)); - Hu3DModelAttrSet(arg0->model[4], 0x4001); - Hu3DModelAttrSet(arg0->model[4], 0x40000002); + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(arg0->model[4], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(arg0->model[4], 6); Hu3DModelPosSet(arg0->model[4], 0.0f, 0.0f, 0.0f); fn_1_B4C(80.0f, DATA_MAKE_NUM(DATADIR_M405, 72)); fn_1_9EC(); for (i = 0; i < 5; i++) { - Hu3DModelAttrReset(arg0->model[i], 1); + Hu3DModelAttrReset(arg0->model[i], HU3D_ATTR_DISPOFF); } lbl_1_bss_68 = HuAudFXPlay(0x537); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); arg0->func = fn_1_9288; } -void ObjectSetup(void) { +void ObjectSetup(void) +{ Vec sp8; s32 temp_r29; s32 i; @@ -2410,7 +2335,7 @@ void ObjectSetup(void) { Hu3DGLightInfinitytSet(temp_r29); Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); Hu3DShadowTPLvlSet(0.8f); - PSVECNormalize(&lbl_1_data_170, &sp8); + VECNormalize(&lbl_1_data_170, &sp8); Hu3DShadowPosSet(&lbl_1_data_170, &sp8, &lbl_1_data_17C); lbl_1_bss_90 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 57)); HuSprAnimLock(lbl_1_bss_90); @@ -2433,7 +2358,8 @@ void ObjectSetup(void) { lbl_1_bss_98 = omAddObjEx(lbl_1_bss_774, 104, 5, 0, -1, fn_1_AD10); } -void fn_1_B5C8(omObjData *arg0) { +void fn_1_B5C8(omObjData *arg0) +{ s32 i; if (lbl_1_bss_68 >= 0) { diff --git a/src/REL/m406Dll/main.c b/src/REL/m406Dll/main.c index dcd78522..8642d951 100644 --- a/src/REL/m406Dll/main.c +++ b/src/REL/m406Dll/main.c @@ -5,7 +5,6 @@ #include "game/hsfdraw.h" #include "game/minigame_seq.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" #include "REL/m406Dll.h" @@ -124,8 +123,8 @@ void ObjectSetup(void) sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); sp14.y = Center.y + (CZoom * -sind(CRot.x)); sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); - PSVECSubtract(&Center, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); HuAudFXListnerSetEX(&sp14, &sp8, 100000.0f, 4166.6665f, 0.0f, 300.0f, 300.0f); Hu3DLightAllKill(); Hu3DLighInit(); @@ -136,7 +135,7 @@ void ObjectSetup(void) lbl_1_bss_10 = -1; lbl_1_bss_C = -1; lbl_1_bss_8 = 0; - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); lbl_1_bss_8 = 0; } @@ -185,7 +184,8 @@ void fn_1_40C(omObjData *object) if (var_r31 & 16 && lbl_1_bss_C == -1) { lbl_1_bss_C = HuAudSeqPlay(74); } - } else { + } + else { var_r31 = 0; } if (lbl_1_bss_24 == -1 || !var_r31) { @@ -209,8 +209,9 @@ void fn_1_40C(omObjData *object) Hu3DBGColorSet(0x40, 0x40, 0xFF); lbl_1_bss_1C = 5; lbl_1_bss_18 = 0; - } else { - WipeCreate(2, 0, 30); + } + else { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); WipeColorSet(0xFF, 0xFF, 0xFF); lbl_1_bss_8 = 1; lbl_1_bss_1C = 9; @@ -235,7 +236,7 @@ void fn_1_40C(omObjData *object) var_f31 = 1.0f; } fn_1_183C(var_f31); - WipeCreate(2, 0, 30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); WipeColorSet(0xFF, 0xFF, 0xFF); lbl_1_bss_8 = 1; lbl_1_bss_1C = 7; @@ -250,7 +251,7 @@ void fn_1_40C(omObjData *object) fn_1_183C(var_f31); if (!WipeStatGet() && (lbl_1_bss_24 == -1 || !MGSeqStatGet(lbl_1_bss_24))) { lbl_1_bss_24 = -1; - WipeCreate(1, 0, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); WipeColorSet(0xFF, 0xFF, 0xFF); lbl_1_bss_8 = 0; CRot.x = lbl_1_data_0.unk_54; @@ -274,7 +275,7 @@ void fn_1_40C(omObjData *object) case 9: if (!WipeStatGet() && (lbl_1_bss_24 == -1 || !MGSeqStatGet(lbl_1_bss_24))) { lbl_1_bss_24 = -1; - WipeCreate(1, 0, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); WipeColorSet(0xFF, 0xFF, 0xFF); lbl_1_bss_8 = 0; CRot.x = lbl_1_data_0.unk_54; @@ -287,8 +288,8 @@ void fn_1_40C(omObjData *object) sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); sp14.y = Center.y + (CZoom * -sind(CRot.x)); sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); - PSVECSubtract(&Center, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); HuAudFXListnerUpdate(&sp14, &sp8); fn_1_6B5C(); fn_1_3064(1); @@ -311,7 +312,8 @@ void fn_1_40C(omObjData *object) GWPlayerCoinWinAdd(lbl_1_bss_10, 10); lbl_1_bss_1C = 13; lbl_1_bss_18 = 0; - } else { + } + else { lbl_1_bss_24 = MGSeqCreate(3, 2); HuAudSStreamPlay(4); lbl_1_bss_1C = 13; @@ -321,7 +323,7 @@ void fn_1_40C(omObjData *object) case 13: if (++lbl_1_bss_18 >= 210.0f) { lbl_1_bss_24 = -1; - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); lbl_1_bss_8 = 1; lbl_1_bss_1C = 14; lbl_1_bss_18 = 0; @@ -369,7 +371,7 @@ void fn_1_1168(omObjData *object) } if (var_r30) { if (!lbl_1_bss_8) { - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); } lbl_1_bss_8 = 1; HuAudStreamFadeOut(30); @@ -410,7 +412,8 @@ void fn_1_12BC(void) lbl_1_bss_1C = 12; lbl_1_bss_18 = 0; } - } else if (lbl_1_bss_1C == 11) { + } + else if (lbl_1_bss_1C == 11) { lbl_1_bss_1C = 12; lbl_1_bss_18 = 0; } @@ -462,8 +465,8 @@ void fn_1_15D0(float arg8) sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); sp14.y = Center.y + (CZoom * -sind(CRot.x)); sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); - PSVECSubtract(&Center, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); HuAudFXListnerUpdate(&sp14, &sp8); } @@ -482,8 +485,8 @@ void fn_1_183C(float arg8) sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); sp14.y = Center.y + (CZoom * -sind(CRot.x)); sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); - PSVECSubtract(&Center, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); HuAudFXListnerUpdate(&sp14, &sp8); } @@ -498,18 +501,21 @@ float fn_1_1BA8(float arg8, float arg9) if (arg8 >= 360.0f) { arg8 -= 360.0f; - } else if (arg8 < 0.0f) { + } + else if (arg8 < 0.0f) { arg8 += 360.0f; } if (arg9 >= 360.0f) { arg9 -= 360.0f; - } else if (arg9 < 0.0f) { + } + else if (arg9 < 0.0f) { arg9 += 360.0f; } var_f31 = arg8 - arg9; if (var_f31 <= -180.0f) { var_f31 += 360.0f; - } else if (var_f31 >= 180.0f) { + } + else if (var_f31 >= 180.0f) { var_f31 -= 360.0f; } return var_f31; @@ -522,12 +528,14 @@ float fn_1_1CC0(float arg8, float arg9, float argA) if (arg8 >= 360.0) { arg8 -= 360.0; - } else if (arg8 < 0.0) { + } + else if (arg8 < 0.0) { arg8 += 360.0; } if (arg9 >= 360.0) { arg9 -= 360.0; - } else if (arg9 < 0.0) { + } + else if (arg9 < 0.0) { arg9 += 360.0; } var_f30 = 360.0 + (arg8 - arg9); @@ -537,18 +545,22 @@ float fn_1_1CC0(float arg8, float arg9, float argA) if (var_f30 < 180.0) { if (var_f30 <= argA) { var_f31 = var_f30; - } else { + } + else { var_f31 = argA; } - } else if (360.0 - var_f30 <= argA) { + } + else if (360.0 - var_f30 <= argA) { var_f31 = -(360.0 - var_f30); - } else { + } + else { var_f31 = -argA; } var_f31 += arg9; if (var_f31 >= 360.0) { var_f31 -= 360.0; - } else if (var_f31 < 0.0) { + } + else if (var_f31 < 0.0) { var_f31 += 360.0; } return var_f31; diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index 6f0fdb1e..e995e73a 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -478,7 +478,7 @@ omObjData *fn_1_2308(Process *arg0) for (var_r31 = 0; var_r31 < 7; var_r31++) { var_r30 = lbl_1_bss_CC->model[var_r31] = Hu3DModelCreateFile(lbl_1_data_7A8[var_r31]); Hu3DModelShadowMapSet(var_r30); - Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); if (var_r31 < 6) { fn_1_CDD8(var_r30, 1.25f, 1.05f, 1.0f, 1.0f); } @@ -491,19 +491,19 @@ omObjData *fn_1_2308(Process *arg0) lbl_1_bss_CC->model[var_r31 + 7] = var_r30; } if (var_r30 != -1) { - Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(var_r30, 5); } } var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 54)); lbl_1_bss_CC->model[14] = var_r30; Hu3DModelPosSet(var_r30, 0.0f, 10.0f, 0.0f); - Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(var_r30, 5); lbl_1_bss_C8 = omAddObjEx(arg0, 0x7D, 6, 0, 2, NULL); for (var_r31 = 0; var_r31 < 6; var_r31++) { lbl_1_bss_C8->model[var_r31] = Hu3DModelCreateFile(lbl_1_data_7E0[var_r31]); - Hu3DModelAttrSet(lbl_1_bss_C8->model[var_r31], 1); + Hu3DModelAttrSet(lbl_1_bss_C8->model[var_r31], HU3D_ATTR_DISPOFF); } lbl_1_bss_C4 = omAddObjEx(arg0, 0x7D, 3, 0, 3, NULL); lbl_1_bss_C4->trans.x = lbl_1_data_780->x; @@ -588,20 +588,20 @@ void fn_1_2C24(omObjData *object) var_f31 = -(5000.0f + (10000.0f * var_r30)); if (fabs(Center.z - var_f31) > 10000.0 || !lbl_1_bss_BC) { if (object->model[var_r30] != -1) { - Hu3DModelAttrSet(object->model[var_r30], 1); + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); } var_r29 = var_r30 + 7; if (object->model[var_r29] != -1) { - Hu3DModelAttrSet(object->model[var_r29], 1); + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF); } } else { if (object->model[var_r30] != -1) { - Hu3DModelAttrReset(object->model[var_r30], 1); + Hu3DModelAttrReset(object->model[var_r30], HU3D_ATTR_DISPOFF); } var_r29 = var_r30 + 7; if (object->model[var_r29] != -1) { - Hu3DModelAttrReset(object->model[var_r29], 1); + Hu3DModelAttrReset(object->model[var_r29], HU3D_ATTR_DISPOFF); } } } @@ -609,41 +609,41 @@ void fn_1_2C24(omObjData *object) if (object->model[var_r29] != -1) { var_f31 = 25000.0f; if (fabs(Center.z - var_f31) < 15000.0) { - Hu3DModelAttrSet(object->model[var_r29], 1); + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrReset(object->model[var_r29], 1); + Hu3DModelAttrReset(object->model[var_r29], HU3D_ATTR_DISPOFF); } } var_r29 = 6; if (object->model[var_r29] != -1) { - Hu3DModelAttrSet(object->model[var_r29], 1); + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF); } for (var_r30 = 0; var_r30 < 3; var_r30++) { if (fabs(Center.z - lbl_1_data_780[var_r30].z) > 10000.0) { - Hu3DModelAttrSet(lbl_1_bss_C4->model[var_r30], 1); + Hu3DModelAttrSet(lbl_1_bss_C4->model[var_r30], HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrReset(lbl_1_bss_C4->model[var_r30], 1); + Hu3DModelAttrReset(lbl_1_bss_C4->model[var_r30], HU3D_ATTR_DISPOFF); } } return; } for (var_r30 = 0; var_r30 < 6; var_r30++) { if (object->model[var_r30] != -1) { - Hu3DModelAttrSet(object->model[var_r30], 1); + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); } var_r29 = var_r30 + 7; if (object->model[var_r29] != -1) { - Hu3DModelAttrSet(object->model[var_r29], 1); + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF); } } var_r29 = 6; if (object->model[var_r29] != -1) { - Hu3DModelAttrReset(object->model[var_r29], 1); + Hu3DModelAttrReset(object->model[var_r29], HU3D_ATTR_DISPOFF); } for (var_r30 = 0; var_r30 < 3; var_r30++) { - Hu3DModelAttrSet(lbl_1_bss_C4->model[var_r30], 1); + Hu3DModelAttrSet(lbl_1_bss_C4->model[var_r30], HU3D_ATTR_DISPOFF); } } @@ -1083,7 +1083,7 @@ void fn_1_45BC(ModelData *arg0, Mtx arg1) } if (!var_r31->unk_28) { GXLoadPosMtxImm(arg1, 0); - PSMTXInvXpose(arg1, sp10); + MTXInvXpose(arg1, sp10); GXLoadNrmMtxImm(sp10, 0); var_r26 = fn_1_D06C(arg0, Hu3DCameraMtx, Hu3DCameraMtxXPose, 2.0f); GXSetNumTevStages(1); @@ -1340,7 +1340,7 @@ void fn_1_4964(ModelData *arg0) } } else { - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); var_r31->unk_08 = -1; var_r31->unk_0C--; } @@ -1351,10 +1351,10 @@ void fn_1_4964(ModelData *arg0) fn_1_D488(sp38, &lbl_1_data_F0[var_r24], &lbl_1_data_F0[var_r24 + 1], &spB8); fn_1_D488(sp38, &lbl_1_data_438[var_r24], &lbl_1_data_438[var_r24 + 1], &spAC); fn_1_D488(var_r31->unk_10, &spB8, &spAC, &var_r31->unk_3C); - Hu3DModelAttrReset(var_r31->unk_00, 1); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); var_r31->unk_08 = -1; continue; } @@ -1408,17 +1408,17 @@ void fn_1_6174(ModelData *arg0) var_r31 = arg0->unk_120; memset(var_r31->unk_88, 0, var_r31->unk_80 * sizeof(Vec)); for (var_r29 = 0, var_r30 = var_r31->unk_9C; var_r29 < var_r31->unk_98; var_r29++, var_r30++) { - PSVECSubtract(&var_r31->unk_84[(*var_r30)[1]], &var_r31->unk_84[(*var_r30)[0]], &sp14); - PSVECSubtract(&var_r31->unk_84[(*var_r30)[2]], &var_r31->unk_84[(*var_r30)[1]], &sp8); - PSVECCrossProduct(&sp14, &sp8, &sp20); + VECSubtract(&var_r31->unk_84[(*var_r30)[1]], &var_r31->unk_84[(*var_r30)[0]], &sp14); + VECSubtract(&var_r31->unk_84[(*var_r30)[2]], &var_r31->unk_84[(*var_r30)[1]], &sp8); + VECCrossProduct(&sp14, &sp8, &sp20); - PSVECAdd(&var_r31->unk_88[(*var_r30)[0]], &sp20, &var_r31->unk_88[(*var_r30)[0]]); - PSVECAdd(&var_r31->unk_88[(*var_r30)[1]], &sp20, &var_r31->unk_88[(*var_r30)[1]]); - PSVECAdd(&var_r31->unk_88[(*var_r30)[2]], &sp20, &var_r31->unk_88[(*var_r30)[2]]); - PSVECAdd(&var_r31->unk_88[(*var_r30)[3]], &sp20, &var_r31->unk_88[(*var_r30)[3]]); + VECAdd(&var_r31->unk_88[(*var_r30)[0]], &sp20, &var_r31->unk_88[(*var_r30)[0]]); + VECAdd(&var_r31->unk_88[(*var_r30)[1]], &sp20, &var_r31->unk_88[(*var_r30)[1]]); + VECAdd(&var_r31->unk_88[(*var_r30)[2]], &sp20, &var_r31->unk_88[(*var_r30)[2]]); + VECAdd(&var_r31->unk_88[(*var_r30)[3]], &sp20, &var_r31->unk_88[(*var_r30)[3]]); } for (var_r29 = 0, var_r28 = var_r31->unk_88; var_r29 < var_r31->unk_80; var_r29++) { - PSVECNormalize(var_r28, var_r28); + VECNormalize(var_r28, var_r28); } } @@ -1458,9 +1458,9 @@ void fn_1_64F8(UnkM406Struct2 *arg0) for (var_r30 = 0, var_r31 = arg0; var_r30 < lbl_1_bss_B4; var_r30++, var_r31++) { if (var_r30 < lbl_1_bss_B4 - 1) { var_r28 = &arg0[var_r30 + 1]; - PSVECSubtract(&var_r28->unk_14, &var_r31->unk_14, &var_r31->unk_08); - var_r31->unk_00 = PSVECMag(&var_r31->unk_08); - PSVECNormalize(&var_r31->unk_08, &var_r31->unk_08); + VECSubtract(&var_r28->unk_14, &var_r31->unk_14, &var_r31->unk_08); + var_r31->unk_00 = VECMag(&var_r31->unk_08); + VECNormalize(&var_r31->unk_08, &var_r31->unk_08); } else { var_r31->unk_00 = 100000.0f; @@ -1506,7 +1506,7 @@ void fn_1_67CC(ModelData *arg0) var_r31 = var_r29->unk_30; for (var_r30 = 0; var_r30 < 12; var_r30++, var_r31++) { if (var_r31->unk_04 != 3 || var_r31->unk_0C > 0) { - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); var_r31->unk_0C--; } else { @@ -1517,9 +1517,9 @@ void fn_1_67CC(ModelData *arg0) var_r31->unk_30.y -= 0.49f; Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C.x, var_r31->unk_3C.y, var_r31->unk_3C.z); Hu3DModelRotSet(var_r31->unk_00, var_r31->unk_20, var_r31->unk_24, 0.0f); - Hu3DModelAttrReset(var_r31->unk_00, 1); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); if (++var_r31->unk_08 >= 600.0f) { - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); var_r31->unk_04 = 0; var_r31->unk_08 = 0; } @@ -1568,10 +1568,10 @@ s32 fn_1_6A44(Vec arg0) } var_r29 = &Hu3DData[lbl_1_data_7A4]; var_r31 = var_r29->unk_120; - PSVECAdd(&var_r31->unk_34, &var_r31->unk_40, &sp8); - PSVECScale(&sp8, &sp8, 0.5f); - PSVECSubtract(&var_r31->unk_34, &sp8, &sp20); - PSVECSubtract(&var_r31->unk_40, &sp8, &sp14); + VECAdd(&var_r31->unk_34, &var_r31->unk_40, &sp8); + VECScale(&sp8, &sp8, 0.5f); + VECSubtract(&var_r31->unk_34, &sp8, &sp20); + VECSubtract(&var_r31->unk_40, &sp8, &sp14); var_f31 = fn_1_D5CC(&sp20, &sp14, arg0.x - sp8.x, arg0.z - sp8.z); if (var_f31 <= 0.0f) { return 0; @@ -1646,10 +1646,10 @@ void fn_1_6FFC(void) var_r30 = lbl_1_bss_B0; if (var_r30->unk_04 <= 0) { - Hu3DModelAttrSet(var_r30->unk_00, 1); + Hu3DModelAttrSet(var_r30->unk_00, HU3D_ATTR_DISPOFF); return; } - Hu3DModelAttrReset(var_r30->unk_00, 1); + Hu3DModelAttrReset(var_r30->unk_00, HU3D_ATTR_DISPOFF); var_r27 = &Hu3DData[var_r30->unk_00]; var_r29 = var_r27->unk_120; var_r31 = var_r29->unk_3C; @@ -1680,7 +1680,7 @@ void fn_1_717C(void) UnkM406Struct10 *var_r31; var_r31 = lbl_1_bss_B0; - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); HuSprAnimKill(var_r31->unk_08); } @@ -1805,10 +1805,10 @@ void fn_1_77F0(void) var_r30 = lbl_1_bss_AC; if (var_r30->unk_04 <= 0) { - Hu3DModelAttrSet(var_r30->unk_00, 1); + Hu3DModelAttrSet(var_r30->unk_00, HU3D_ATTR_DISPOFF); return; } - Hu3DModelAttrReset(var_r30->unk_00, 1); + Hu3DModelAttrReset(var_r30->unk_00, HU3D_ATTR_DISPOFF); var_r27 = &Hu3DData[var_r30->unk_00]; var_r29 = var_r27->unk_120; var_r31 = var_r29->unk_3C; @@ -1846,7 +1846,7 @@ void fn_1_79B0(void) UnkM406Struct10 *var_r31; var_r31 = lbl_1_bss_AC; - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); HuSprAnimKill(var_r31->unk_08); } @@ -1939,10 +1939,10 @@ void fn_1_7C4C(void) var_r30 = lbl_1_bss_A8; if (var_r30->unk_04 <= 0) { - Hu3DModelAttrSet(var_r30->unk_00, 1); + Hu3DModelAttrSet(var_r30->unk_00, HU3D_ATTR_DISPOFF); return; } - Hu3DModelAttrReset(var_r30->unk_00, 1); + Hu3DModelAttrReset(var_r30->unk_00, HU3D_ATTR_DISPOFF); var_r27 = &Hu3DData[var_r30->unk_00]; var_r29 = var_r27->unk_120; var_r31 = var_r29->unk_3C; @@ -2031,10 +2031,10 @@ void fn_1_7F80(void) var_r30 = lbl_1_bss_A4; if (var_r30->unk_04 <= 0) { - Hu3DModelAttrSet(var_r30->unk_00, 1); + Hu3DModelAttrSet(var_r30->unk_00, HU3D_ATTR_DISPOFF); return; } - Hu3DModelAttrReset(var_r30->unk_00, 1); + Hu3DModelAttrReset(var_r30->unk_00, HU3D_ATTR_DISPOFF); var_r27 = &Hu3DData[var_r30->unk_00]; var_r29 = var_r27->unk_120; var_r31 = var_r29->unk_3C; @@ -2149,7 +2149,7 @@ void fn_1_82C8(Mtx arg0, s32 arg1, float arg8) sp80.z = arg0[2][3]; sp74.x = sp74.z = 0.0f; sp74.y = atan2d(arg0[0][0], arg0[2][0]); - PSMTXCopy(arg0, sp8C); + MTXCopy(arg0, sp8C); sp8C[0][3] = sp8C[1][3] = sp8C[2][3] = sp8C[3][3] = 0.0f; sp68.x = -25.0f; sp68.z = -50.0f; @@ -2227,7 +2227,7 @@ void fn_1_8F98(void) var_r31->unk_10 = 0.0f; var_r31->unk_14 = 6.0f; var_r31->unk_18 = 1.0f; - PSMTXIdentity(var_r31->unk_1C); + MTXIdentity(var_r31->unk_1C); if (var_r30 == 0) { var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 59)); } @@ -2235,7 +2235,7 @@ void fn_1_8F98(void) var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_A0->unk_04); } Hu3DModelLayerSet(var_r31->unk_04, 3); - Hu3DModelAttrSet(var_r31->unk_04, 1); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); } for (var_r30 = 0, var_r31 = &lbl_1_bss_A0[64]; var_r30 < 64; var_r30++, var_r31++) { @@ -2246,7 +2246,7 @@ void fn_1_8F98(void) var_r31->unk_10 = 0.0f; var_r31->unk_14 = 6.0f; var_r31->unk_18 = 1.0f; - PSMTXIdentity(var_r31->unk_1C); + MTXIdentity(var_r31->unk_1C); if (var_r30 == 0) { var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 60)); } @@ -2254,7 +2254,7 @@ void fn_1_8F98(void) var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_A0[64].unk_04); } Hu3DModelLayerSet(var_r31->unk_04, 3); - Hu3DModelAttrSet(var_r31->unk_04, 1); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); } } @@ -2278,14 +2278,14 @@ void fn_1_91E0(void) var_f31 = var_r31->unk_18 * cosd((90.0f * var_f30)); var_f31 = var_f31; var_r30 = &Hu3DData[var_r31->unk_04]; - PSMTXScale(sp8, var_f31, var_f31, var_f31); - PSMTXConcat(var_r31->unk_1C, sp8, var_r30->unk_F0); + MTXScale(sp8, var_f31, var_f31, var_f31); + MTXConcat(var_r31->unk_1C, sp8, var_r30->unk_F0); var_r30->unk_F0[0][3] = var_r31->unk_1C[0][3]; var_r30->unk_F0[1][3] = var_r31->unk_1C[1][3]; var_r30->unk_F0[2][3] = var_r31->unk_1C[2][3]; Hu3DModelTPLvlSet(var_r31->unk_04, 1.0f - var_f30); if ((var_r31->unk_0C += var_r31->unk_10) >= var_r31->unk_14) { - Hu3DModelAttrSet(var_r31->unk_04, 1); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); var_r31->unk_00 = 0; var_r31->unk_0C = 0.0f; } @@ -2299,14 +2299,14 @@ void fn_1_91E0(void) var_f31 = var_r31->unk_18 * cosd((90.0f * var_f30)); var_f31 = var_f31; var_r30 = &Hu3DData[var_r31->unk_04]; - PSMTXScale(sp8, var_f31, var_f31, var_f31); - PSMTXConcat(var_r31->unk_1C, sp8, var_r30->unk_F0); + MTXScale(sp8, var_f31, var_f31, var_f31); + MTXConcat(var_r31->unk_1C, sp8, var_r30->unk_F0); var_r30->unk_F0[0][3] = var_r31->unk_1C[0][3]; var_r30->unk_F0[1][3] = var_r31->unk_1C[1][3]; var_r30->unk_F0[2][3] = var_r31->unk_1C[2][3]; Hu3DModelTPLvlSet(var_r31->unk_04, 1.0f - var_f30); if ((var_r31->unk_0C += var_r31->unk_10) >= var_r31->unk_14) { - Hu3DModelAttrSet(var_r31->unk_04, 1); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); var_r31->unk_00 = 0; var_r31->unk_0C = 0.0f; } @@ -2340,7 +2340,7 @@ s32 fn_1_94C0(Mtx arg0, s32 arg1, s32 arg2) sp64.z = arg0[2][3]; sp58.x = sp58.z = 0.0f; sp58.y = atan2d(arg0[0][0], arg0[2][0]); - PSMTXCopy(arg0, spA0); + MTXCopy(arg0, spA0); spA0[0][3] = spA0[1][3] = spA0[2][3] = spA0[3][3] = 0.0f; if (!arg2) { sp4C.x = 25.0f; @@ -2419,19 +2419,19 @@ s32 fn_1_94C0(Mtx arg0, s32 arg1, s32 arg2) var_r31->unk_10 = 1.0f; var_r31->unk_14 = 6.0f; var_r31->unk_18 = var_f31; - PSMTXCopy(arg0, var_r31->unk_1C); + MTXCopy(arg0, var_r31->unk_1C); Hu3DMotionTimeSet(var_r31->unk_04, 0.0f); Hu3DMotionSpeedSet(var_r31->unk_04, 0.0f); var_r27 = &Hu3DData[var_r31->unk_04]; - PSMTXScale(sp70, var_f31, var_f31, var_f31); - PSMTXConcat(arg0, sp70, var_r27->unk_F0); + MTXScale(sp70, var_f31, var_f31, var_f31); + MTXConcat(arg0, sp70, var_r27->unk_F0); var_r27->unk_F0[0][3] = arg0[0][3]; var_r27->unk_F0[1][3] = arg0[1][3]; var_r27->unk_F0[2][3] = arg0[2][3]; Hu3DModelPosSet(var_r31->unk_04, 0.0f, 0.0f, 0.0f); Hu3DModelRotSet(var_r31->unk_04, 0.0f, 0.0f, 0.0f); Hu3DModelScaleSet(var_r31->unk_04, 1.0f, 1.0f, 1.0f); - Hu3DModelAttrReset(var_r31->unk_04, 1); + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); (void)var_r31; return var_r28; } @@ -2446,10 +2446,10 @@ void fn_1_9F78(void) var_r30 = lbl_1_bss_9C = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM406Struct8), MEMORY_DEFAULT_NUM); memset(var_r30, 0, sizeof(UnkM406Struct8)); - var_r30->unk_00 = HuSprAnimRead(HuDataReadNum(0x250040, MEMORY_DEFAULT_NUM)); - var_r30->unk_04 = HuSprAnimRead(HuDataReadNum(0x250041, MEMORY_DEFAULT_NUM)); - var_r30->unk_08 = HuSprAnimRead(HuDataReadNum(0x250042, MEMORY_DEFAULT_NUM)); - var_r30->unk_0C = HuSprAnimRead(HuDataReadNum(0x250043, MEMORY_DEFAULT_NUM)); + var_r30->unk_00 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M406, 0x40), MEMORY_DEFAULT_NUM)); + var_r30->unk_04 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M406, 0x41), MEMORY_DEFAULT_NUM)); + var_r30->unk_08 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M406, 0x42), MEMORY_DEFAULT_NUM)); + var_r30->unk_0C = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M406, 0x43), MEMORY_DEFAULT_NUM)); var_r30->unk_24 = 0.0f; var_r30->unk_28 = 0.0f; var_r27 = fn_1_B474(var_r30->unk_00, 1); @@ -2614,7 +2614,7 @@ void fn_1_ADB4(ModelData *arg0, float (*arg1)[4]) var_r31 = &Hu3DCamera[0]; var_r30 = lbl_1_bss_9C; if (var_r30->unk_28 <= 0.0f) { - Hu3DModelAttrSet(var_r30->unk_20, 1); + Hu3DModelAttrSet(var_r30->unk_20, HU3D_ATTR_DISPOFF); return; } GXSetScissor(var_r31->scissor_x, var_r31->scissor_y, var_r31->scissor_w, var_r31->scissor_h); @@ -2630,7 +2630,7 @@ void fn_1_ADB4(ModelData *arg0, float (*arg1)[4]) GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - PSMTXIdentity(sp50); + MTXIdentity(sp50); GXLoadPosMtxImm(sp50, 0); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_TRUE); GXSetNumChans(1); @@ -2653,16 +2653,16 @@ void fn_1_B104(float arg8) var_r31 = lbl_1_bss_9C; var_r31->unk_24 = arg8; if (var_r31->unk_24 <= 0.0f) { - Hu3DModelAttrSet(var_r31->unk_10, 1); - Hu3DModelAttrSet(var_r31->unk_14, 1); - Hu3DModelAttrSet(var_r31->unk_18, 1); - Hu3DModelAttrSet(var_r31->unk_1C, 1); + Hu3DModelAttrSet(var_r31->unk_10, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_14, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_18, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_1C, HU3D_ATTR_DISPOFF); return; } - Hu3DModelAttrReset(var_r31->unk_10, 1); - Hu3DModelAttrReset(var_r31->unk_14, 1); - Hu3DModelAttrReset(var_r31->unk_18, 1); - Hu3DModelAttrReset(var_r31->unk_1C, 1); + Hu3DModelAttrReset(var_r31->unk_10, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_14, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_18, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_1C, HU3D_ATTR_DISPOFF); } void fn_1_B1E0(float arg8) @@ -2672,10 +2672,10 @@ void fn_1_B1E0(float arg8) var_r31 = lbl_1_bss_9C; var_r31->unk_28 = arg8; if (var_r31->unk_28 <= 0.0f) { - Hu3DModelAttrSet(var_r31->unk_20, 1); + Hu3DModelAttrSet(var_r31->unk_20, HU3D_ATTR_DISPOFF); return; } - Hu3DModelAttrReset(var_r31->unk_20, 1); + Hu3DModelAttrReset(var_r31->unk_20, HU3D_ATTR_DISPOFF); } void fn_1_B25C(void) @@ -2954,7 +2954,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); if (HmfInverseMtxF3X3(arg1, sp128) == 0) { - PSMTXIdentity(sp128); + MTXIdentity(sp128); } PSMTXReorder(sp128, sp8); if (var_r31->unk_4C) { @@ -2979,27 +2979,27 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) else if (!var_r29->unk_2C) { var_r27 = &sp98[0]; var_r24 = &sp38[0]; - PSVECScale(var_r24++, var_r27, var_r29->unk_28); - PSVECAdd(var_r27++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r24++, var_r27, var_r29->unk_28); - PSVECAdd(var_r27++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r24++, var_r27, var_r29->unk_28); - PSVECAdd(var_r27++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r24++, var_r27, var_r29->unk_28); - PSVECAdd(var_r27++, &var_r29->unk_30, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_28); + VECAdd(var_r27++, &var_r29->unk_30, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_28); + VECAdd(var_r27++, &var_r29->unk_30, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_28); + VECAdd(var_r27++, &var_r29->unk_30, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_28); + VECAdd(var_r27++, &var_r29->unk_30, var_r30++); } else { - PSVECScale(lbl_1_data_8E0, &sp98[0], var_r29->unk_28); - PSVECScale(&lbl_1_data_8E0[1], &sp98[1], var_r29->unk_28); - PSVECScale(&lbl_1_data_8E0[2], &sp98[2], var_r29->unk_28); - PSVECScale(&lbl_1_data_8E0[3], &sp98[3], var_r29->unk_28); - PSMTXRotRad(spC8, 90, var_r29->unk_2C); - PSMTXConcat(sp128, spC8, spF8); - PSMTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); - PSVECAdd(&sp68[0], &var_r29->unk_30, var_r30++); - PSVECAdd(&sp68[1], &var_r29->unk_30, var_r30++); - PSVECAdd(&sp68[2], &var_r29->unk_30, var_r30++); - PSVECAdd(&sp68[3], &var_r29->unk_30, var_r30++); + VECScale(lbl_1_data_8E0, &sp98[0], var_r29->unk_28); + VECScale(&lbl_1_data_8E0[1], &sp98[1], var_r29->unk_28); + VECScale(&lbl_1_data_8E0[2], &sp98[2], var_r29->unk_28); + VECScale(&lbl_1_data_8E0[3], &sp98[3], var_r29->unk_28); + MTXRotRad(spC8, 90, var_r29->unk_2C); + MTXConcat(sp128, spC8, spF8); + MTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); + VECAdd(&sp68[0], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[1], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[2], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[3], &var_r29->unk_30, var_r30++); } } var_r29 = var_r31->unk_3C; @@ -3167,7 +3167,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44); if (HmfInverseMtxF3X3(arg1, sp9C) == 0) { - PSMTXIdentity(sp9C); + MTXIdentity(sp9C); } PSMTXReorder(sp9C, spC); if (var_r31->unk_4C) { @@ -3192,14 +3192,14 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) else { var_r28 = (Vec *)&sp6C; var_r27 = (Vec *)&sp3C; - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); } } DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_26 * 0xC * 4); @@ -3352,7 +3352,7 @@ void fn_1_D13C(LightData *arg0, s16 arg1, Mtx arg2, Mtx arg3, float arg8) GXInitLightAttn(&sp30, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); GXInitLightSpot(&sp30, 20.0f, GX_SP_COS); GXInitLightAttnK(&sp30, 1.0f, 0.0f, 0.0f); - PSVECScale(&arg0->unk_28, &arg0->unk_1C, -1000000.0f); + VECScale(&arg0->unk_28, &arg0->unk_1C, -1000000.0f); break; case 2: GXInitLightAttn(&sp30, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); @@ -3362,8 +3362,8 @@ void fn_1_D13C(LightData *arg0, s16 arg1, Mtx arg2, Mtx arg3, float arg8) break; } if (arg0->unk_00 & 0x8000) { - 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 { diff --git a/src/REL/m406Dll/player.c b/src/REL/m406Dll/player.c index ca3e6e13..9685aac0 100644 --- a/src/REL/m406Dll/player.c +++ b/src/REL/m406Dll/player.c @@ -251,16 +251,16 @@ char *lbl_1_data_1068[4] = { }; s32 lbl_1_data_1078[10] = { - 0x5F0037, - 0x5F0055, - 0x5F0039, - 0x5F0054, - 0x5F0041, - 0x5F0056, - 0x5F0050, - 0x5F0016, - 0x5F0053, - 0x5F0023, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x37), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x55), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x39), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x54), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x41), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x56), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x50), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x53), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x23), }; s32 lbl_1_data_10A0[8][4] = { @@ -380,15 +380,15 @@ void fn_1_D90C(omObjData *object) CharModelLayerSetAll(Hu3DData[object->model[0]].layer + 1); object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 32)); Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-body", object->model[5]); - Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); fn_1_13A88(object->model[0], "test11_tex_we-itemhook-body", sp8); var_r31->unk_68 = sp8[0][3]; var_r31->unk_6C = sp8[1][3]; var_r31->unk_70 = sp8[2][3]; object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 33)); - Hu3DModelAttrSet(object->model[6], 1); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); object->model[7] = Hu3DModelCreateFile(lbl_1_data_1120[var_r31->unk_0C]); - Hu3DModelAttrSet(object->model[7], 1); + Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); for (var_r29 = 0; var_r29 < 10U; var_r29++) { object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_1078[var_r29]); } @@ -396,7 +396,7 @@ void fn_1_D90C(omObjData *object) var_r31->unk_58 = 0; var_r31->unk_14.y = 0.0f; var_r31->unk_14.z = 45.0f; - fn_1_DD7C(object, 0, 1.0f, 0x40000001); + fn_1_DD7C(object, 0, 1.0f, HU3D_MOTATTR_LOOP); object->trans.x = lbl_1_data_FF0[var_r31->unk_02]; object->trans.z = -500.0f; object->trans.y = fn_1_143F4(&object->trans, &var_r31->unk_44); @@ -538,11 +538,11 @@ void fn_1_E214(omObjData *object) if (fn_1_122C() >= 2) { if (var_r31->unk_00_field0 != 0) { - fn_1_DD7C(object, 9, 1.0f, 0); + fn_1_DD7C(object, 9, 1.0f, HU3D_MOTATTR_NONE); if ((var_r26->attr & 1) == 0) { Hu3D3Dto2D(&object->trans, 1, &sp28); if (sp28.x < 0.0 || sp28.x >= 576.0f || sp28.y < 0.0 || sp28.y >= 480.0f) { - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); } } return; @@ -595,17 +595,17 @@ void fn_1_E214(omObjData *object) if (var_r31->unk_58 == 5) { HuAudFXPlay(0x540); fn_1_117BC(var_r31->unk_14.x, 10.0f, &var_r31->unk_44, &sp1C); - PSVECAdd(&var_r31->unk_2C, &sp1C, &var_r31->unk_2C); + VECAdd(&var_r31->unk_2C, &sp1C, &var_r31->unk_2C); } } if (var_r31->unk_00_field2 == 0) { if (var_r31->unk_44.unk_08 == 1) { var_r31->unk_00_field2 = 1; var_r31->unk_60 = 0x14; - PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, 1.5f); - if (PSVECMag(&var_r31->unk_2C) > 50.0f) { - PSVECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); - PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, 50.0f); + VECScale(&var_r31->unk_2C, &var_r31->unk_2C, 1.5f); + if (VECMag(&var_r31->unk_2C) > 50.0f) { + VECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); + VECScale(&var_r31->unk_2C, &var_r31->unk_2C, 50.0f); } HuAudFXPlay(0x53E); HuAudFXVolSet(var_r31->unk_7C[0], 0); @@ -653,7 +653,7 @@ void fn_1_E214(omObjData *object) } break; case 2: - Hu3DModelAttrReset(object->model[5], 1); + Hu3DModelAttrReset(object->model[5], HU3D_ATTR_DISPOFF); if (var_r31->unk_5A < 20) { var_r31->unk_54 = var_r31->unk_5A / 20.0f; } @@ -665,12 +665,12 @@ void fn_1_E214(omObjData *object) var_f30 = 1.0f; } Hu3DModelScaleSet(object->model[5], var_f30, var_f30, var_f30); - var_r31->unk_50 += PSVECMag(&var_r31->unk_2C) / 3.125f; - PSMTXTrans(sp94, -var_r31->unk_68, -var_r31->unk_6C, -var_r31->unk_70); - PSMTXRotRad(sp64, 0x78, 0.017453292f * var_r31->unk_50); - PSMTXConcat(sp64, sp94, sp34); - PSMTXTrans(sp94, var_r31->unk_68, var_r31->unk_6C, var_r31->unk_70); - PSMTXConcat(sp94, sp34, var_r26->unk_F0); + var_r31->unk_50 += VECMag(&var_r31->unk_2C) / 3.125f; + MTXTrans(sp94, -var_r31->unk_68, -var_r31->unk_6C, -var_r31->unk_70); + MTXRotRad(sp64, 0x78, 0.017453292f * var_r31->unk_50); + MTXConcat(sp64, sp94, sp34); + MTXTrans(sp94, var_r31->unk_68, var_r31->unk_6C, var_r31->unk_70); + MTXConcat(sp94, sp34, var_r26->unk_F0); var_r27 = 6; var_f31 = 2.0f; var_r25 = 0; @@ -690,25 +690,25 @@ void fn_1_E214(omObjData *object) var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 0.0f; } var_r31->unk_50 = fn_1_13AF4(var_r31->unk_50, 0.0f, 0.5f); - PSMTXTrans(sp94, -var_r31->unk_68, -var_r31->unk_6C, -var_r31->unk_70); - PSMTXRotRad(sp64, 0x78, 0.017453292f * var_r31->unk_50); - PSMTXConcat(sp64, sp94, sp34); - PSMTXTrans(sp94, var_r31->unk_68, var_r31->unk_6C, var_r31->unk_70); - PSMTXConcat(sp94, sp34, var_r26->unk_F0); + MTXTrans(sp94, -var_r31->unk_68, -var_r31->unk_6C, -var_r31->unk_70); + MTXRotRad(sp64, 0x78, 0.017453292f * var_r31->unk_50); + MTXConcat(sp64, sp94, sp34); + MTXTrans(sp94, var_r31->unk_68, var_r31->unk_6C, var_r31->unk_70); + MTXConcat(sp94, sp34, var_r26->unk_F0); if (var_r31->unk_5E != 0) { - PSMTXTrans(sp94, 100.0f * (0.2f * (((var_r31->unk_5E & 1) * 2) - 1)), 0.0f, 0.0f); - PSMTXConcat(sp94, var_r26->unk_F0, var_r26->unk_F0); + MTXTrans(sp94, 100.0f * (0.2f * (((var_r31->unk_5E & 1) * 2) - 1)), 0.0f, 0.0f); + MTXConcat(sp94, var_r26->unk_F0, var_r26->unk_F0); if (--var_r31->unk_5E == 0) { if (++var_r31->unk_5C >= 4) { var_r31->unk_00_field3 = 0; var_r31->unk_12 = 0; var_r31->unk_5C = 0; - Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); Hu3DData[object->model[6]].unk_64 = 0.0f; Hu3DModelPosSet(object->model[6], object->trans.x + var_r31->unk_68, object->trans.y + var_r31->unk_6C, object->trans.z + var_r31->unk_70); - Hu3DModelAttrReset(object->model[6], 1); - PSMTXIdentity(var_r26->unk_F0); + Hu3DModelAttrReset(object->model[6], HU3D_ATTR_DISPOFF); + MTXIdentity(var_r26->unk_F0); fn_1_117BC(var_r31->unk_14.x, 25.0f, &var_r31->unk_44, &var_r31->unk_2C); } } @@ -719,7 +719,7 @@ void fn_1_E214(omObjData *object) break; } if (Hu3DMotionEndCheck(object->model[6])) { - Hu3DModelAttrSet(object->model[6], 1); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); } fn_1_DD7C(object, var_r27, var_f31, var_r25); fn_1_F194(object); @@ -733,7 +733,7 @@ void fn_1_E214(omObjData *object) if (fn_1_6A44(sp28) == 1) { var_r31->unk_00_field0 = 1; var_r26 = &Hu3DData[object->model[0]]; - PSMTXIdentity(var_r26->unk_F0); + MTXIdentity(var_r26->unk_F0); omVibrate(var_r31->unk_02, 0xC, 4, 2); HuAudCharVoicePlayPos(var_r31->unk_0C, 0x123, &object->trans); for (var_r24 = 0; var_r24 < 2; var_r24++) { @@ -775,26 +775,26 @@ void fn_1_F194(omObjData *object) sp44.y = -0.27222222f; sp44.z = 0.0f; var_f28 = 0.27222222f * var_r31->unk_44.unk_00[3].y; - PSVECScale(&var_r31->unk_44.unk_00[3], &sp38, var_f28); - PSVECAdd(&sp44, &sp38, &sp2C); - PSVECAdd(&var_r31->unk_2C, &sp2C, &var_r31->unk_2C); + VECScale(&var_r31->unk_44.unk_00[3], &sp38, var_f28); + VECAdd(&sp44, &sp38, &sp2C); + VECAdd(&var_r31->unk_2C, &sp2C, &var_r31->unk_2C); sp20.x = sp20.y = sp20.z = 0.0f; sp14.x = sp14.y = sp14.z = 0.0f; - var_f29 = PSVECMag(&var_r31->unk_2C); + var_f29 = VECMag(&var_r31->unk_2C); if (var_f29 > 0.0f && fn_1_122C() == 4) { - PSVECNormalize(&var_r31->unk_2C, &sp8); + VECNormalize(&var_r31->unk_2C, &sp8); sp20.x = -sp8.x; sp20.y = -sp8.y; sp20.z = -sp8.z; if (var_r31->unk_62 < 120.0f) { - PSVECScale(&sp20, &sp20, var_f28 * var_f27); + VECScale(&sp20, &sp20, var_f28 * var_f27); } else { - PSVECScale(&sp20, &sp20, (0.15f * (var_r31->unk_62 / 240.0f)) + (var_f28 * var_f27)); + VECScale(&sp20, &sp20, (0.15f * (var_r31->unk_62 / 240.0f)) + (var_f28 * var_f27)); } if (!var_r31->unk_00_field3) { fn_1_117BC(var_r31->unk_14.x, 1.0f, &var_r31->unk_44, &sp44); - var_f30 = PSVECDotProduct(&sp44, &sp8); + var_f30 = VECDotProduct(&sp44, &sp8); var_f31 = 0.02f * var_f29; sp14.x = (-sp8.x * var_f31) - (var_f30 * (-sp44.x * var_f31)); sp14.y = (-sp8.y * var_f31) - (var_f30 * (-sp44.y * var_f31)); @@ -802,26 +802,26 @@ void fn_1_F194(omObjData *object) if ((var_f30 < 0.9f) && (var_f29 >= 20.0f)) { mtxRot(sp80, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); mtxTransCat(sp80, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); - PSVECCrossProduct(&sp44, &sp8, &sp44); + VECCrossProduct(&sp44, &sp8, &sp44); if (sp44.y >= 0.0f) { - PSMTXTrans(sp50, -10.0f, 0.0f, 0.0f); - PSMTXConcat(sp50, sp80, sp80); + MTXTrans(sp50, -10.0f, 0.0f, 0.0f); + MTXConcat(sp50, sp80, sp80); fn_1_94C0(sp80, 10, 0); } else { - PSMTXTrans(sp50, 10.0f, 0.0f, 0.0f); - PSMTXConcat(sp50, sp80, sp80); + MTXTrans(sp50, 10.0f, 0.0f, 0.0f); + MTXConcat(sp50, sp80, sp80); fn_1_94C0(sp80, 10, 1); } } } } - PSVECAdd(&sp20, &sp14, &sp2C); - if (PSVECMag(&sp2C) > var_f29) { + VECAdd(&sp20, &sp14, &sp2C); + if (VECMag(&sp2C) > var_f29) { var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 0.0f; return; } - PSVECAdd(&var_r31->unk_2C, &sp2C, &var_r31->unk_2C); + VECAdd(&var_r31->unk_2C, &sp2C, &var_r31->unk_2C); return; } var_r31->unk_2C.y += -0.27222222f; @@ -859,27 +859,27 @@ void fn_1_F694(omObjData *object) sp2C.z += var_f30 * var_r31->unk_44.unk_00[3].z; if (!var_r31->unk_00_field3) { fn_1_117BC(var_r31->unk_14.x, 1.0f, &var_r31->unk_44, &sp20); - PSVECNormalize(&sp2C, &sp14); - var_f29 = PSVECDotProduct(&sp20, &sp14); + VECNormalize(&sp2C, &sp14); + var_f29 = VECDotProduct(&sp20, &sp14); var_f31 = var_f29 * var_f29; var_f31 *= var_f31; - if (var_f31 < 0.999f && PSVECMag(&var_r31->unk_2C) >= 10.0f) { + if (var_f31 < 0.999f && VECMag(&var_r31->unk_2C) >= 10.0f) { mtxRot(sp68, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); mtxTransCat(sp68, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); - PSVECCrossProduct(&sp20, &sp14, &sp8); + VECCrossProduct(&sp20, &sp14, &sp8); if (sp8.y >= 0.0f) { - PSMTXTrans(sp38, -10.0f, 0.0f, 0.0f); - PSMTXConcat(sp38, sp68, sp68); + MTXTrans(sp38, -10.0f, 0.0f, 0.0f); + MTXConcat(sp38, sp68, sp68); fn_1_94C0(sp68, 10, 0); } else { - PSMTXTrans(sp38, 10.0f, 0.0f, 0.0f); - PSMTXConcat(sp38, sp68, sp68); + MTXTrans(sp38, 10.0f, 0.0f, 0.0f); + MTXConcat(sp38, sp68, sp68); fn_1_94C0(sp68, 10, 1); } } - var_f28 = PSVECMag(&sp2C); - PSVECScale(&sp20, &sp20, var_f28); + var_f28 = VECMag(&sp2C); + VECScale(&sp20, &sp20, var_f28); var_r31->unk_2C.x = sp2C.x + (0.9f * (sp20.x - sp2C.x)); var_r31->unk_2C.y = sp2C.y + (0.9f * (sp20.y - sp2C.y)); var_r31->unk_2C.z = sp2C.z + (0.9f * (sp20.z - sp2C.z)); @@ -888,9 +888,9 @@ void fn_1_F694(omObjData *object) var_r31->unk_2C.x = sp2C.x; var_r31->unk_2C.y = sp2C.y; var_r31->unk_2C.z = sp2C.z; - PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, var_r31->unk_54); + VECScale(&var_r31->unk_2C, &var_r31->unk_2C, var_r31->unk_54); } - PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, 0.98f); + VECScale(&var_r31->unk_2C, &var_r31->unk_2C, 0.98f); } } @@ -950,7 +950,7 @@ void fn_1_FA50(ModelData *model, Mtx mtx) else { var_r30->func = fn_1_11058; } - Hu3DModelAttrSet(*var_r30->model, 1); + Hu3DModelAttrSet(*var_r30->model, HU3D_ATTR_DISPOFF); for (var_r26 = 0; var_r26 < 2; var_r26++) { if (var_r31->unk_7C[var_r26] >= 0) { HuAudFXStop(var_r31->unk_7C[var_r26]); @@ -980,14 +980,14 @@ void fn_1_FA50(ModelData *model, Mtx mtx) var_r30 = var_r28[var_r29]; var_r31 = var_r28[var_r29]->data; if (!var_r31->unk_00_field0) { - var_r31->unk_14.y = PSVECMag(&var_r31->unk_2C); + var_r31->unk_14.y = VECMag(&var_r31->unk_2C); if (!var_r31->unk_00_field3 && !var_r31->unk_00_field2 && (var_r31->unk_14.y > var_r31->unk_14.z)) { var_r31->unk_14.y = var_r31->unk_14.z; - PSVECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); - PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, var_r31->unk_14.y); + VECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); + VECScale(&var_r31->unk_2C, &var_r31->unk_2C, var_r31->unk_14.y); } var_f31 = var_r31->unk_14.y; - PSVECNormalize(&var_r31->unk_2C, &sp14); + VECNormalize(&var_r31->unk_2C, &sp14); while (var_f31 > 0.0f) { if (var_f31 < 50.0f) { @@ -1007,8 +1007,8 @@ void fn_1_FA50(ModelData *model, Mtx mtx) var_r30->trans.x = sp8.x; var_r30->trans.z = sp8.z; if (var_r31->unk_00_field2 == 0) { - PSVECNormalize(&var_r31->unk_2C, &sp14); - var_f26 = PSVECDotProduct(&sp14, &sp20); + VECNormalize(&var_r31->unk_2C, &sp14); + var_f26 = VECDotProduct(&sp14, &sp20); if (var_f26 < -0.2f && var_r31->unk_14.y >= 10.0f) { omVibrate(var_r31->unk_02, 12, 6, 6); } @@ -1079,8 +1079,8 @@ void fn_1_FA50(ModelData *model, Mtx mtx) sp20.x = sp2C[var_r27 - 1]->trans.x - lbl_1_bss_E0[1].x; sp20.y = sp2C[var_r27 - 1]->trans.y - lbl_1_bss_E0[1].y; sp20.z = sp2C[var_r27 - 1]->trans.z - lbl_1_bss_E0[1].z; - var_f29 = PSVECMag(&sp20); - PSVECNormalize(&sp20, &sp20); + var_f29 = VECMag(&sp20); + VECNormalize(&sp20, &sp20); if (var_f29 < 100.0f) { lbl_1_bss_E0[1].x = sp2C[var_r27 - 1]->trans.x; lbl_1_bss_E0[1].y = sp2C[var_r27 - 1]->trans.y; @@ -1146,7 +1146,7 @@ void fn_1_1065C(omObjData *object) var_r31->unk_2C.z = -20.0f; Hu3DModelShadowReset(object->model[0]); fn_1_6BB4(&object->trans); - Hu3DModelAttrReset(object->model[0], 1); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); object->func = fn_1_10744; } @@ -1165,7 +1165,7 @@ void fn_1_10744(omObjData *object) var_r29 = &Hu3DData[object->model[0]]; switch (var_r31->unk_12) { case 0: - fn_1_DD7C(object, 0, 1.0f, 0); + fn_1_DD7C(object, 0, 1.0f, HU3D_MOTATTR_NONE); if (--var_r31->unk_64 == 0) { fn_1_1284(); var_r31->unk_12++; @@ -1203,7 +1203,7 @@ void fn_1_10744(omObjData *object) object->motion[var_r24] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_1078[var_r24]); } var_r31->unk_38 = -1; - fn_1_DD7C(object, 0, 1.0f, 0); + fn_1_DD7C(object, 0, 1.0f, HU3D_MOTATTR_NONE); Hu3DModelShadowSet(object->model[0]); return; } @@ -1214,7 +1214,7 @@ void fn_1_10744(omObjData *object) object->trans.y = 0.0f; var_r31->unk_12++; var_r31->unk_2C.y = 0.0f; - fn_1_DD7C(object, 2, 1.0f, 0); + fn_1_DD7C(object, 2, 1.0f, HU3D_MOTATTR_NONE); omVibrate(var_r31->unk_02, 0xC, 6, 6); var_r31->unk_7C[0] = HuAudFXPlay(0x53B); } @@ -1228,14 +1228,14 @@ void fn_1_10744(omObjData *object) if ((var_r31->unk_64 < 0x50) && (var_r31->unk_64 > 0x1E)) { mtxRot(sp48, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); mtxTransCat(sp48, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); - PSMTXTrans(sp18, 10.0f, 0.0f, 0.0f); - PSMTXConcat(sp18, sp48, sp48); + MTXTrans(sp18, 10.0f, 0.0f, 0.0f); + MTXConcat(sp18, sp48, sp48); fn_1_94C0(sp48, 10, 0); } var_r31->unk_2C.x = var_r31->unk_54 * (100.0 * (0.10000000149011612 * sind(180.0f + var_r31->unk_14.x))); var_r31->unk_2C.z = var_r31->unk_54 * (100.0 * (0.10000000149011612 * cosd(180.0f + var_r31->unk_14.x))); if (var_r31->unk_64 == 48.0f) { - fn_1_DD7C(object, 8, 1.0f, 0); + fn_1_DD7C(object, 8, 1.0f, HU3D_MOTATTR_NONE); } if (--var_r31->unk_64 == 0) { var_r31->unk_12 = -1; @@ -1271,13 +1271,13 @@ void fn_1_11058(omObjData *object) var_r30->unk_64 = 90.0f + (frand() & 0x1F); } for (var_r28 = 0; var_r28 < 8; var_r28++) { - Hu3DModelAttrSet(object->model[var_r28], 1); + Hu3DModelAttrSet(object->model[var_r28], HU3D_ATTR_DISPOFF); Hu3DModelPosSet(object->model[var_r28], 0.0f, 0.0f, 0.0f); Hu3DModelRotSet(object->model[var_r28], 0.0f, 0.0f, 0.0f); Hu3DModelScaleSet(object->model[var_r28], 1.0f, 1.0f, 1.0f); } Hu3DModelHookReset(object->model[0]); - fn_1_DD7C(object, 0, 1.0f, 0); + fn_1_DD7C(object, 0, 1.0f, HU3D_MOTATTR_NONE); var_r30->unk_00 = 0; var_r30->unk_12 = 0; var_r30->unk_00_field3 = 1; @@ -1313,8 +1313,8 @@ void fn_1_114A0(omObjData *object) case 1: if (var_r31->unk_64 != 0) { if (--var_r31->unk_64 == 0) { - Hu3DModelAttrReset(object->model[5], 1); - Hu3DModelAttrReset(object->model[7], 1); + Hu3DModelAttrReset(object->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[7], HU3D_ATTR_DISPOFF); } else { return; @@ -1345,15 +1345,15 @@ void fn_1_114A0(omObjData *object) } mtxRot(sp9C, object->rot.x, object->rot.y, object->trans.z); mtxScaleCat(sp9C, object->scale.x, object->scale.y, object->scale.z); - PSMTXTrans(sp9C, object->trans.x, object->trans.y, object->trans.z); - PSMTXRotRad(sp6C, 0x78, 0.017453292f * var_r31->unk_50); - PSMTXConcat(sp9C, sp6C, sp9C); - PSMTXCopy(sp9C, spC); + MTXTrans(sp9C, object->trans.x, object->trans.y, object->trans.z); + MTXRotRad(sp6C, 0x78, 0.017453292f * var_r31->unk_50); + MTXConcat(sp9C, sp6C, sp9C); + MTXCopy(sp9C, spC); mtxScaleCat(spC, 2.0f, 2.0f, 2.0f); - PSMTXCopy(spC, Hu3DData[object->model[5]].unk_F0); - PSMTXTrans(sp3C, 0.0f, 110.0f, 0.0f); - PSMTXConcat(sp9C, sp3C, spC); - PSMTXCopy(spC, Hu3DData[object->model[7]].unk_F0); + MTXCopy(spC, Hu3DData[object->model[5]].unk_F0); + MTXTrans(sp3C, 0.0f, 110.0f, 0.0f); + MTXConcat(sp9C, sp3C, spC); + MTXCopy(spC, Hu3DData[object->model[7]].unk_F0); } void fn_1_117BC(float arg8, float arg9, UnkM406PlayerStruct2 *arg0, Vec *arg1) @@ -1373,7 +1373,7 @@ void fn_1_117BC(float arg8, float arg9, UnkM406PlayerStruct2 *arg0, Vec *arg1) sp10.z = var_r31->y * cosd((180.0f + arg8)); var_f30 = 1.0f - (var_r31->y * var_r31->y); sp10.y = -sqrtf(var_f30); - PSVECScale(&sp10, arg1, arg9); + VECScale(&sp10, arg1, arg9); } s32 fn_1_119E4(Vec *arg0, UnkM406PlayerStruct *arg1) { @@ -1566,9 +1566,9 @@ void fn_1_12270(omObjData *object) sp1C.z = -61000.0f; block_12270: - PSVECSubtract(&sp1C, &object->trans, &sp10); - if (PSVECMag(&sp10) > 0.0f) { - PSVECNormalize(&sp10, &sp10); + VECSubtract(&sp1C, &object->trans, &sp10); + if (VECMag(&sp10) > 0.0f) { + VECNormalize(&sp10, &sp10); var_r31->unk_06 = 72.0 * ((sp10.x * cosd(CRot.y)) - sp10.z * sind(CRot.y)); var_r31->unk_07 = 72.0 * -((sp10.x * sind(CRot.y)) + sp10.z * cosd(CRot.y)); } @@ -1623,14 +1623,14 @@ s32 fn_1_127B8(void) var_r25 = var_r29[var_r30]; var_r22 = var_r25->data; if (!var_r22->unk_00_field0) { - PSVECSubtract(&var_r26->trans, &var_r25->trans, &sp8); - var_f31 = PSVECMag(&sp8); + VECSubtract(&var_r26->trans, &var_r25->trans, &sp8); + var_f31 = VECMag(&sp8); if (var_f31 < 100.0f) { - PSVECNormalize(&sp8, &sp8); + VECNormalize(&sp8, &sp8); var_f30 = 0.01f + (0.5f * (100.0f - var_f31)); - PSVECScale(&sp8, &sp8, var_f30); - PSVECAdd(&sp14[var_r31], &sp8, &sp14[var_r31]); - PSVECSubtract(&sp14[var_r30], &sp8, &sp14[var_r30]); + VECScale(&sp8, &sp8, var_f30); + VECAdd(&sp14[var_r31], &sp8, &sp14[var_r31]); + VECSubtract(&sp14[var_r30], &sp8, &sp14[var_r30]); var_r27++; } } @@ -1641,7 +1641,7 @@ s32 fn_1_127B8(void) var_r28 = var_r29[var_r31]; var_r24 = var_r28->data; if (!var_r24->unk_00_field0) { - PSVECAdd(&var_r28->trans, &sp14[var_r31], &var_r28->trans); + VECAdd(&var_r28->trans, &sp14[var_r31], &var_r28->trans); } } return var_r27; @@ -1660,8 +1660,8 @@ s32 fn_1_129E4(omObjData *object) var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 3); for (var_r31 = 0; var_r31 < var_r30[0]->mdlcnt; var_r31++) { var_r29 = &Hu3DData[(*var_r30)->model[var_r31]]; - PSVECSubtract(&var_r29->pos, &object->trans, &spC); - var_f31 = PSVECMag(&spC); + VECSubtract(&var_r29->pos, &object->trans, &spC); + var_f31 = VECMag(&spC); if (var_f31 < 100.0f) { return 1; } @@ -1753,7 +1753,7 @@ void fn_1_12BC4(omObjData *object) var_r30->target.z = Center.z; C_MTXLookAt(spA8, &var_r30->pos, &var_r30->up, &var_r30->target); for (var_r31 = 0; var_r31 < lbl_1_bss_1C4; var_r31++) { - PSMTXMultVec(spA8, &lbl_1_bss_104[var_r31], &sp198[var_r31]); + MTXMultVec(spA8, &lbl_1_bss_104[var_r31], &sp198[var_r31]); spD8[var_r31].x = sp198[var_r31].x / (sp198[var_r31].z * (sind((var_r30->fov / 2)) / cosd((var_r30->fov / 2)))); spD8[var_r31].y = sp198[var_r31].y / (sp198[var_r31].z * (sind((var_r30->fov / 2)) / cosd((var_r30->fov / 2)))); } @@ -1792,8 +1792,8 @@ void fn_1_12BC4(omObjData *object) sp84.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); sp84.y = Center.y + (CZoom * -sind(CRot.x)); sp84.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); - PSVECSubtract(&Center, &sp84, &sp78); - PSVECNormalize(&sp78, &sp78); + VECSubtract(&Center, &sp84, &sp78); + VECNormalize(&sp78, &sp78); HuAudFXListnerUpdate(&sp84, &sp78); } } @@ -1811,13 +1811,13 @@ s32 fn_1_136AC(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) HsfTransform *var_r31 = &arg0->data.curr; mtxRot(sp144, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); - PSMTXScale(sp174, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); - PSMTXConcat(sp144, sp174, sp174); + MTXScale(sp174, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp144, sp174, sp174); mtxTransCat(sp174, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(arg1, sp174, sp174); + MTXConcat(arg1, sp174, sp174); strcpy(sp4A4, MakeObjectName(arg2)); if (strcmp(sp4A4, arg0->name) == 0) { - PSMTXCopy(sp174, arg3); + MTXCopy(sp174, arg3); return 1; } for (var_r23 = 0; var_r23 < arg0->data.childrenCount; var_r23++) { @@ -1838,7 +1838,7 @@ void fn_1_13A88(s16 arg0, char *arg1, Mtx arg2) var_r31 = &Hu3DData[arg0]; var_r30 = var_r31->hsfData; - PSMTXIdentity(sp14); + MTXIdentity(sp14); fn_1_136AC(var_r30->root, sp14, arg1, arg2); } @@ -1916,7 +1916,7 @@ s32 fn_1_13C10(Vec *arg0, Vec *arg1) sp24.x = -var_r31->nbt.x; sp24.y = 0.0f; sp24.z = -var_r31->nbt.z; - PSVECNormalize(&sp24, &sp24); + VECNormalize(&sp24, &sp24); var_f31 = (var_f28 + (((-var_r31->nbt.x * arg0->x) - (var_r31->nbt.y * arg0->y)) - (var_r31->nbt.z * arg0->z))) / ((var_r31->nbt.x * sp24.x) + (var_r31->nbt.z * sp24.z)); if (var_f31 <= 0.0) { @@ -1925,18 +1925,18 @@ s32 fn_1_13C10(Vec *arg0, Vec *arg1) spC.x = arg0->x + (sp24.x * var_f31); spC.y = arg0->y; spC.z = arg0->z + (sp24.z * var_f31); - PSVECSubtract(sp48[1], sp48[0], &sp3C); - PSVECSubtract(&spC, sp48[1], &sp30); - PSVECCrossProduct(&sp3C, &sp30, &sp24); - if (!(PSVECDotProduct(&var_r31->nbt, &sp24) < 0.0f)) { - PSVECSubtract(sp48[2], sp48[1], &sp3C); - PSVECSubtract(&spC, sp48[2], &sp30); - PSVECCrossProduct(&sp3C, &sp30, &sp24); - if (!(PSVECDotProduct(&var_r31->nbt, &sp24) < 0.0f)) { - PSVECSubtract(sp48[0], sp48[2], &sp3C); - PSVECSubtract(&spC, sp48[0], &sp30); - PSVECCrossProduct(&sp3C, &sp30, &sp24); - if (!(PSVECDotProduct(&var_r31->nbt, &sp24) < 0.0f) && (var_f31 < var_f29)) { + VECSubtract(sp48[1], sp48[0], &sp3C); + VECSubtract(&spC, sp48[1], &sp30); + VECCrossProduct(&sp3C, &sp30, &sp24); + if (!(VECDotProduct(&var_r31->nbt, &sp24) < 0.0f)) { + VECSubtract(sp48[2], sp48[1], &sp3C); + VECSubtract(&spC, sp48[2], &sp30); + VECCrossProduct(&sp3C, &sp30, &sp24); + if (!(VECDotProduct(&var_r31->nbt, &sp24) < 0.0f)) { + VECSubtract(sp48[0], sp48[2], &sp3C); + VECSubtract(&spC, sp48[0], &sp30); + VECCrossProduct(&sp3C, &sp30, &sp24); + if (!(VECDotProduct(&var_r31->nbt, &sp24) < 0.0f) && (var_f31 < var_f29)) { var_f29 = var_f31; sp18 = spC; var_r28 = var_r31; @@ -1948,15 +1948,15 @@ s32 fn_1_13C10(Vec *arg0, Vec *arg1) if (var_r22 > 2) { var_r22 = 0; } - PSVECSubtract(sp48[var_r22], sp48[var_r29], &sp3C); + VECSubtract(sp48[var_r22], sp48[var_r29], &sp3C); if (sp3C.y != 0.0f) { var_f30 = (arg0->y - sp48[var_r29]->y) / sp3C.y; if ((var_f30 >= 0.0f) && (var_f30 < 1.0f)) { spC.x = sp48[var_r29]->x + (var_f30 * sp3C.x); spC.z = sp48[var_r29]->z + (var_f30 * sp3C.z); - PSVECSubtract(&spC, arg0, &sp3C); + VECSubtract(&spC, arg0, &sp3C); sp3C.y = 0.0f; - var_f31 = PSVECMag(&sp3C); + var_f31 = VECMag(&sp3C); if (var_f31 < var_f29) { var_f29 = var_f31; sp18 = spC; @@ -1972,9 +1972,9 @@ s32 fn_1_13C10(Vec *arg0, Vec *arg1) if ((sp30.y >= arg0->y) && (sp30.y < (150.0f + arg0->y))) { sp30.x = sp48[var_r29]->x + (var_f30 * sp3C.x); sp30.z = sp48[var_r29]->z + (var_f30 * sp3C.z); - PSVECSubtract(&sp30, arg0, &sp3C); + VECSubtract(&sp30, arg0, &sp3C); sp3C.y = 0.0f; - var_f31 = PSVECMag(&sp3C); + var_f31 = VECMag(&sp3C); if (var_f31 < var_f29) { var_f29 = var_f31; sp18 = sp30; @@ -1984,9 +1984,9 @@ s32 fn_1_13C10(Vec *arg0, Vec *arg1) } } if ((sp48[var_r29]->y >= arg0->y) && (sp48[var_r29]->y < (150.0f + arg0->y))) { - PSVECSubtract(arg0, sp48[var_r29], &sp3C); + VECSubtract(arg0, sp48[var_r29], &sp3C); sp3C.y = 0.0f; - var_f31 = PSVECMag(&sp3C); + var_f31 = VECMag(&sp3C); if (var_f31 < var_f29) { var_f29 = var_f31; sp18.x = sp48[var_r29]->x; @@ -1998,9 +1998,9 @@ s32 fn_1_13C10(Vec *arg0, Vec *arg1) } } if (var_f29 < 100.0f) { - PSVECSubtract(arg0, &sp18, &sp3C); + VECSubtract(arg0, &sp18, &sp3C); sp3C.y = 0.0f; - PSVECNormalize(&sp3C, &sp3C); + VECNormalize(&sp3C, &sp3C); arg0->x = sp18.x + (100.001f * sp3C.x); arg0->z = sp18.z + (100.001f * sp3C.z); arg1->x = var_r28->nbt.x; @@ -2052,21 +2052,21 @@ float fn_1_143F4(Vec *arg0, UnkM406PlayerStruct2 *arg1) sp34[0] = &((Vec *)var_r28->data)[var_r31->indices[0][0]]; sp34[1] = &((Vec *)var_r28->data)[var_r31->indices[1][0]]; sp34[2] = &((Vec *)var_r28->data)[var_r31->indices[2][0]]; - PSVECSubtract(sp34[1], sp34[0], &sp28); - PSVECSubtract(arg0, sp34[1], &sp1C); - PSVECCrossProduct(&sp28, &sp1C, &sp10); + VECSubtract(sp34[1], sp34[0], &sp28); + VECSubtract(arg0, sp34[1], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); if (sp10.y < 0.0f) { continue; } - PSVECSubtract(sp34[2], sp34[1], &sp28); - PSVECSubtract(arg0, sp34[2], &sp1C); - PSVECCrossProduct(&sp28, &sp1C, &sp10); + VECSubtract(sp34[2], sp34[1], &sp28); + VECSubtract(arg0, sp34[2], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); if (sp10.y < 0.0f) { continue; } - PSVECSubtract(sp34[0], sp34[2], &sp28); - PSVECSubtract(arg0, sp34[0], &sp1C); - PSVECCrossProduct(&sp28, &sp1C, &sp10); + VECSubtract(sp34[0], sp34[2], &sp28); + VECSubtract(arg0, sp34[0], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); if (sp10.y < 0.0f) { continue; } diff --git a/src/REL/m407dll/camera.c b/src/REL/m407dll/camera.c index 20d3d4db..4db0b078 100644 --- a/src/REL/m407dll/camera.c +++ b/src/REL/m407dll/camera.c @@ -1,35 +1,37 @@ -#include "game/process.h" -#include "game/object.h" +#include "ext_math.h" #include "game/hsfdraw.h" -#include "math.h" +#include "game/object.h" +#include "game/process.h" + typedef struct unkDominationData2 { -/* 0x00 */ s32 unk_00; -/* 0x04 */ s32 unk_04; -/* 0x08 */ Point3d unk_08; -/* 0x14 */ Point3d unk_14; -/* 0x20 */ f32 unk_20; -/* 0x24 */ Point3d unk_24; -/* 0x30 */ Point3d unk_30; -/* 0x3C */ f32 unk_3C; -/* 0x40 */ s32 unk_40; -/* 0x44 */ f32 unk_44; -/* 0x48 */ f32 unk_48; -} unkDominationData2; //sizeof 0x4C + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ Vec unk_14; + /* 0x20 */ f32 unk_20; + /* 0x24 */ Vec unk_24; + /* 0x30 */ Vec unk_30; + /* 0x3C */ f32 unk_3C; + /* 0x40 */ s32 unk_40; + /* 0x44 */ f32 unk_44; + /* 0x48 */ f32 unk_48; +} unkDominationData2; // sizeof 0x4C -//function signatures +// function signatures void fn_1_1CAC(f32, f32, f32); void fn_1_1D08(f32, f32, f32); void fn_1_1D64(f32); -void fn_1_2024(omObjData*); +void fn_1_2024(omObjData *); -//bss -Process* lbl_1_bss_34; -omObjData* lbl_1_bss_30; +// bss +Process *lbl_1_bss_34; +omObjData *lbl_1_bss_30; + +void fn_1_1B1C(Process *arg0) +{ + unkDominationData2 *unkData; -void fn_1_1B1C(Process* arg0) { - unkDominationData2* unkData; - lbl_1_bss_34 = arg0; Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraPerspectiveSet(1, 45.0f, 10.0f, 40000.0f, 1.2f); @@ -42,49 +44,55 @@ void fn_1_1B1C(Process* arg0) { fn_1_1D64(0.0f); } -void fn_1_1CA8(void) { +void fn_1_1CA8(void) { } -} - -void fn_1_1CAC(f32 arg8, f32 arg9, f32 argA) { +void fn_1_1CAC(f32 arg8, f32 arg9, f32 argA) +{ Center.x = arg8; Center.y = arg9; Center.z = argA; } -void fn_1_1CD4(f32* arg0, f32* arg1, f32* arg2) { +void fn_1_1CD4(f32 *arg0, f32 *arg1, f32 *arg2) +{ *arg0 = Center.x; *arg1 = Center.y; *arg2 = Center.z; } -void fn_1_1D08(f32 arg8, f32 arg9, f32 argA) { +void fn_1_1D08(f32 arg8, f32 arg9, f32 argA) +{ CRot.x = arg8; CRot.y = arg9; CRot.z = argA; } -void fn_1_1D30(f32* arg0, f32* arg1, f32* arg2) { +void fn_1_1D30(f32 *arg0, f32 *arg1, f32 *arg2) +{ *arg0 = CRot.x; *arg1 = CRot.y; *arg2 = CRot.z; } -void fn_1_1D64(f32 arg8) { +void fn_1_1D64(f32 arg8) +{ CZoom = arg8; } -void fn_1_1D74(f32* arg0) { +void fn_1_1D74(f32 *arg0) +{ *arg0 = CZoom; } -s32 fn_1_1D88(void) { - unkDominationData2* unkData = lbl_1_bss_30->data; +s32 fn_1_1D88(void) +{ + unkDominationData2 *unkData = lbl_1_bss_30->data; return unkData->unk_04; } -void fn_1_1DB0(Point3d* arg0, Point3d* arg1, f32* arg2, s32 arg3, s32 arg4) { - unkDominationData2* temp_r31; +void fn_1_1DB0(Vec *arg0, Vec *arg1, f32 *arg2, s32 arg3, s32 arg4) +{ + unkDominationData2 *temp_r31; temp_r31 = lbl_1_bss_30->data; temp_r31->unk_00 = arg4; @@ -100,46 +108,48 @@ void fn_1_1DB0(Point3d* arg0, Point3d* arg1, f32* arg2, s32 arg3, s32 arg4) { temp_r31->unk_04 = 1; } -f32 fn_1_1F1C(f32 arg8, f32 arg9) { +f32 fn_1_1F1C(f32 arg8, f32 arg9) +{ if (((arg8 > 0.0f) && (arg9 > 0.0f)) || ((arg8 < 0.0f) && (arg9 < 0.0f))) { return abs(arg8 - arg9); } - + return abs(arg8) + abs(arg9); } -void fn_1_2024(omObjData* arg0) { +void fn_1_2024(omObjData *arg0) +{ Vec sp14; Vec sp8; f32 var_f31; f32 cZoomTemp; - unkDominationData2* temp_r31; + unkDominationData2 *temp_r31; temp_r31 = arg0->data; if (temp_r31->unk_04 != 0) { switch (temp_r31->unk_00) { - case 0: - var_f31 = temp_r31->unk_44; - break; - case 1: - var_f31 = temp_r31->unk_44; - if (temp_r31->unk_48 > 0.5) { - temp_r31->unk_00 = 2; - } - break; - case 2: - var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); - break; - case 3: - var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); - if (temp_r31->unk_48 > 0.5) { - temp_r31->unk_00 = 4; - } - break; - case 4: - var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); - var_f31 *= var_f31; - break; + case 0: + var_f31 = temp_r31->unk_44; + break; + case 1: + var_f31 = temp_r31->unk_44; + if (temp_r31->unk_48 > 0.5) { + temp_r31->unk_00 = 2; + } + break; + case 2: + var_f31 = sind(90.0f * temp_r31->unk_44); + break; + case 3: + var_f31 = sind(90.0f * temp_r31->unk_44); + if (temp_r31->unk_48 > 0.5) { + temp_r31->unk_00 = 4; + } + break; + case 4: + var_f31 = sind(90.0f * temp_r31->unk_44); + var_f31 *= var_f31; + break; } sp14.x = temp_r31->unk_24.x + (var_f31 * (temp_r31->unk_08.x - temp_r31->unk_24.x)); sp14.y = temp_r31->unk_24.y + (var_f31 * (temp_r31->unk_08.y - temp_r31->unk_24.y)); diff --git a/src/REL/m407dll/effect.c b/src/REL/m407dll/effect.c index cb22c723..4e5287ba 100644 --- a/src/REL/m407dll/effect.c +++ b/src/REL/m407dll/effect.c @@ -1,47 +1,45 @@ -#include "src/REL/m407dll/m407dll.h" -#include "game/process.h" -#include "game/object.h" -#include "game/hsfmotion.h" #include "game/hsfdraw.h" +#include "game/hsfmotion.h" +#include "game/object.h" +#include "game/process.h" +#include "math.h" + +#include "REL/m407dll.h" typedef struct unkDominationData4 { -/* 0x00 */ u32 unk_00; -/* 0x04 */ u32 unk_04; -/* 0x08 */ s32 unk_08; -/* 0x0C */ s32 unk_0C; -/* 0x10 */ f32 unk_10; -/* 0x14 */ f32 unk_14; -/* 0x18 */ f32 unk_18; -/* 0x1C */ s32 unk_1C; -} unkDominationData4; //size of 0x20 + /* 0x00 */ u32 unk_00; + /* 0x04 */ u32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ s32 unk_1C; +} unkDominationData4; // size of 0x20 -//function signatures -void fn_1_4858(omObjData* arg0); -void fn_1_485C(omObjData* arg0); -void fn_1_46EC(omObjData* arg0); -void fn_1_465C(omObjData* arg0, s32 arg1); -void fn_1_4808(omObjData* arg0); +// function signatures +void fn_1_4858(omObjData *arg0); +void fn_1_485C(omObjData *arg0); +void fn_1_46EC(omObjData *arg0); +void fn_1_465C(omObjData *arg0, s32 arg1); +void fn_1_4808(omObjData *arg0); -//bss -Process* lbl_1_bss_3970; -omObjData* lbl_1_bss_37E0[100]; +// bss +Process *lbl_1_bss_3970; +omObjData *lbl_1_bss_37E0[100]; -//data -s32 lbl_1_data_288[] = { - 0x00260015, - 0x00260016, - 0x00260017, - 0x00260018, - 0x00260019 -}; +// data +s32 lbl_1_data_288[] = { DATA_MAKE_NUM(DATADIR_M407, 0x15), DATA_MAKE_NUM(DATADIR_M407, 0x16), DATA_MAKE_NUM(DATADIR_M407, 0x17), + DATA_MAKE_NUM(DATADIR_M407, 0x18), DATA_MAKE_NUM(DATADIR_M407, 0x19) }; ObjFuncs lbl_1_data_29C[] = { fn_1_4858, fn_1_485C, }; -void fn_1_41CC(Process* arg0) { - Process* sp8; +void fn_1_41CC(Process *arg0) +{ + Process *sp8; u32 i; u32 temp_r30; @@ -59,15 +57,15 @@ void fn_1_41CC(Process* arg0) { for (i = 0; i < 4; i++) { lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; - lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1; + lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1; } - + temp_r30 += i; for (i = 0; i < 30; i++) { lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; - lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2; + lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2; } temp_r30 += i; @@ -75,19 +73,20 @@ void fn_1_41CC(Process* arg0) { for (i = 0; i < 4; i++) { lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; - lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3; + lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3; } - + temp_r30 += i; for (i = 0; i < 22; i++) { lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; - lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4; + lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4; } } -void fn_1_44F4(void) { +void fn_1_44F4(void) +{ u32 i; for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) { @@ -95,9 +94,10 @@ void fn_1_44F4(void) { } } -void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { - omObjData* temp_r29; - unkDominationData4* temp_r31; +void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) +{ + omObjData *temp_r29; + unkDominationData4 *temp_r31; u32 i; if ((arg4 < (Center.z - 2000.0f)) || (arg4 > (2000.0f + Center.z))) { @@ -118,24 +118,27 @@ void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { } } -void fn_1_465C(omObjData* arg0, s32 arg1) { - unkDominationData4* temp_r31; +void fn_1_465C(omObjData *arg0, s32 arg1) +{ + unkDominationData4 *temp_r31; temp_r31 = arg0->data; temp_r31->unk_0C = arg1; temp_r31->unk_1C = 0; } -void fn_1_4680(omObjData* arg0) { - unkDominationData4* temp_r31; +void fn_1_4680(omObjData *arg0) +{ + unkDominationData4 *temp_r31; temp_r31 = arg0->data; lbl_1_data_29C[temp_r31->unk_0C](arg0); omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18); } -void fn_1_46EC(omObjData* arg0) { - unkDominationData4* temp_r30; +void fn_1_46EC(omObjData *arg0) +{ + unkDominationData4 *temp_r30; arg0->func = fn_1_4680; arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData4), MEMORY_DEFAULT_NUM); @@ -143,20 +146,21 @@ void fn_1_46EC(omObjData* arg0) { temp_r30->unk_00 = arg0->work[0]; temp_r30->unk_08 = arg0->work[1]; temp_r30->unk_1C = 0; - arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_288[temp_r30->unk_08], MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DModelAttrSet(arg0->model[0], 0x4000); - Hu3DModelAttrSet(arg0->model[0], 0x40000002); - Hu3DModelAttrSet(arg0->model[0], 1); + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_288[temp_r30->unk_08]); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); temp_r30->unk_10 = 0.0f; temp_r30->unk_14 = 0.0f; temp_r30->unk_18 = 0.0f; fn_1_465C(arg0, 0); } -void fn_1_4808(omObjData* arg0) { - unkDominationData4* sp8; +void fn_1_4808(omObjData *arg0) +{ + unkDominationData4 *sp8; sp8 = arg0->data; - + Hu3DModelKill(arg0->model[0]); if (arg0->data) { @@ -164,31 +168,31 @@ void fn_1_4808(omObjData* arg0) { } } -void fn_1_4858(omObjData* arg0) { +void fn_1_4858(omObjData *arg0) { } -} - -void fn_1_485C(omObjData* arg0) { - unkDominationData4* temp_r30; +void fn_1_485C(omObjData *arg0) +{ + unkDominationData4 *temp_r30; temp_r30 = arg0->data; if (temp_r30->unk_04 != 0) { temp_r30->unk_04--; } - + if (temp_r30->unk_1C == 0) { Hu3DMotionTimeSet(*arg0->model, 0.0f); - Hu3DModelAttrReset(*arg0->model, 1); - Hu3DModelAttrReset(*arg0->model, 0x40000002); - Hu3DModelAttrSet(*arg0->model, 0x40000001); - temp_r30->unk_1C++; - } else if (temp_r30->unk_1C == 1) { - Hu3DModelAttrReset(arg0->model[0], 0x40000001); + Hu3DModelAttrReset(*arg0->model, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(*arg0->model, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(*arg0->model, HU3D_MOTATTR_LOOP); temp_r30->unk_1C++; } - + else if (temp_r30->unk_1C == 1) { + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + temp_r30->unk_1C++; + } + if (Hu3DMotionEndCheck(*arg0->model) != 0) { - Hu3DModelAttrSet(*arg0->model, 1); + Hu3DModelAttrSet(*arg0->model, HU3D_ATTR_DISPOFF); fn_1_465C(arg0, 0); } } diff --git a/src/REL/m407dll/m407dll.h b/src/REL/m407dll/m407dll.h deleted file mode 100644 index 788ede40..00000000 --- a/src/REL/m407dll/m407dll.h +++ /dev/null @@ -1,5 +0,0 @@ -#include "game/object.h" - -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) - -typedef void (*ObjFuncs)(omObjData*); diff --git a/src/REL/m407dll/main.c b/src/REL/m407dll/main.c index a3b4c1d7..83406eca 100644 --- a/src/REL/m407dll/main.c +++ b/src/REL/m407dll/main.c @@ -1,13 +1,12 @@ #include "game/object.h" #include "game/gamework_data.h" +#include "game/gamework.h" #include "game/minigame_seq.h" #include "game/wipe.h" #include "game/audio.h" #include "game/hsfman.h" -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) - -typedef void (*ObjFuncs)(void); +#include "REL/m407dll.h" typedef struct unkDominationData5 { /* 0x00 */ u32 unk_00; @@ -27,12 +26,6 @@ typedef struct unkDominationData5 { } unkDominationData5; //sizeof 0x48 //function signatures -void fn_1_388(u8, s32); -void fn_1_3C4(u8); -s32 fn_1_4C0(s32); -s32 fn_1_508(u8); -s32 fn_1_53C(u8); -void fn_1_568(s16, s16, s16); void fn_1_4B7C(void); void fn_1_4C3C(s32); void fn_1_4C6C(omObjData*); @@ -56,7 +49,7 @@ omObjData* lbl_1_bss_397C; s16 lbl_1_bss_3978; //data -ObjFuncs lbl_1_data_2A8[] = { +VoidFuncs lbl_1_data_2A8[] = { fn_1_4D0C, fn_1_4D54, fn_1_4E8C, diff --git a/src/REL/m407dll/map.c b/src/REL/m407dll/map.c index 91d7f946..4675aa80 100644 --- a/src/REL/m407dll/map.c +++ b/src/REL/m407dll/map.c @@ -1,51 +1,47 @@ -#include "game/process.h" -#include "game/object.h" #include "game/gamework_data.h" #include "game/hsfman.h" +#include "game/object.h" +#include "game/process.h" -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) +#include "REL/m407dll.h" -//function signatures -void fn_1_162C(omObjData*); -void fn_1_1A8C(omObjData*); +// function signatures +void fn_1_162C(omObjData *); +void fn_1_1A8C(omObjData *); -//bss -Process* lbl_1_bss_2C; -omObjData* lbl_1_bss_28; +// bss +Process *lbl_1_bss_2C; +omObjData *lbl_1_bss_28; s16 lbl_1_bss_24; s32 lbl_1_bss_20; -//data +// data s32 lbl_1_data_198[] = { - 0x00260000, - 0x00260002, - 0x00260003, - 0x00260001, - 0x00260005, - 0x00260006, - 0x00260007, - 0x00260008, - 0x00260009, - 0x0026000A, - 0x0026000B, - 0x0026000C, - 0x00260004, + DATA_MAKE_NUM(DATADIR_M407, 0x00), + DATA_MAKE_NUM(DATADIR_M407, 0x02), + DATA_MAKE_NUM(DATADIR_M407, 0x03), + DATA_MAKE_NUM(DATADIR_M407, 0x01), + DATA_MAKE_NUM(DATADIR_M407, 0x05), + DATA_MAKE_NUM(DATADIR_M407, 0x06), + DATA_MAKE_NUM(DATADIR_M407, 0x07), + DATA_MAKE_NUM(DATADIR_M407, 0x08), + DATA_MAKE_NUM(DATADIR_M407, 0x09), + DATA_MAKE_NUM(DATADIR_M407, 0x0A), + DATA_MAKE_NUM(DATADIR_M407, 0x0B), + DATA_MAKE_NUM(DATADIR_M407, 0x0C), + DATA_MAKE_NUM(DATADIR_M407, 0x04), }; -Vec lbl_1_data_1CC[] = { - {600.0f, 3.0f, -300.0f}, - {200.0f, 3.0f, -300.0f}, - {-200.0f, 3.0f, -300.0f}, - {-600.0f, 3.0f, -300.0f} -}; +Vec lbl_1_data_1CC[] = { { 600.0f, 3.0f, -300.0f }, { 200.0f, 3.0f, -300.0f }, { -200.0f, 3.0f, -300.0f }, { -600.0f, 3.0f, -300.0f } }; -Point3d lbl_1_data_1FC = {2000.0f, 3000.0f, 2000.0f}; -Point3d lbl_1_data_208 = {-0.5f, -0.5f, -0.5f}; -GXColor lbl_1_data_214 = {255, 255, 255, 255}; -Point3d lbl_1_data_218 = {0.0f, 1.0f, 0.0f}; +Vec lbl_1_data_1FC = { 2000.0f, 3000.0f, 2000.0f }; +Vec lbl_1_data_208 = { -0.5f, -0.5f, -0.5f }; +GXColor lbl_1_data_214 = { 255, 255, 255, 255 }; +Vec lbl_1_data_218 = { 0.0f, 1.0f, 0.0f }; -void fn_1_14F0(Process* arg0, s32 arg1) { - LightData* sp10; +void fn_1_14F0(Process *arg0, s32 arg1) +{ + LightData *sp10; lbl_1_bss_2C = arg0; lbl_1_bss_20 = arg1; @@ -57,7 +53,8 @@ void fn_1_14F0(Process* arg0, s32 arg1) { sp10 = &Hu3DGlobalLight[lbl_1_bss_24]; } -void fn_1_15D8(void) { +void fn_1_15D8(void) +{ s32 i; for (i = 0; i < 13; i++) { @@ -65,7 +62,8 @@ void fn_1_15D8(void) { } } -void fn_1_162C(omObjData* arg0) { +void fn_1_162C(omObjData *arg0) +{ s32 var_r30; s32 var_r30_2; s32 var_r30_3; @@ -73,55 +71,57 @@ void fn_1_162C(omObjData* arg0) { s32 i; arg0->func = fn_1_1A8C; - arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[2], MEMORY_DEFAULT_NUM, HEAP_DATA)); + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_198[2]); Hu3DModelShadowMapSet(arg0->model[0]); Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); - arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[3], MEMORY_DEFAULT_NUM, HEAP_DATA)); + arg0->model[1] = Hu3DModelCreateFile(lbl_1_data_198[3]); Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); - Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); for (i = 0; i < ARRAY_COUNT(GWPlayerCfg); i++) { - arg0->model[i+2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[GWPlayerCfg[i].character + 4], MEMORY_DEFAULT_NUM, HEAP_DATA)); + arg0->model[i + 2] = Hu3DModelCreateFile(lbl_1_data_198[GWPlayerCfg[i].character + 4]); Hu3DModelAmbSet(arg0->model[i + 2], 1.0f, 1.0f, 1.0f); Hu3DModelShadowMapSet(arg0->model[i + 2]); } for (i = 0; i < 5; i++) { if (i == 0) { - arg0->model[i + 6] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[0], MEMORY_DEFAULT_NUM, HEAP_DATA)); - } else { + arg0->model[i + 6] = Hu3DModelCreateFile(lbl_1_data_198[0]); + } + else { arg0->model[i + 6] = Hu3DModelLink(arg0->model[6]); } Hu3DModelAmbSet(arg0->model[i + 6], 1.0f, 1.0f, 1.0f); Hu3DModelShadowMapSet(arg0->model[i + 6]); } - arg0->model[11] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[12], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->model[12] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[1], MEMORY_DEFAULT_NUM, HEAP_DATA)); + arg0->model[11] = Hu3DModelCreateFile(lbl_1_data_198[12]); + arg0->model[12] = Hu3DModelCreateFile(lbl_1_data_198[1]); for (i = 0; i < 4; i++) { Hu3DModelPosSetV(arg0->model[i + 2], &lbl_1_data_1CC[i]); } for (i = 0; i < 5; i++) { - Hu3DModelPosSet(arg0->model[i + 6], 0.0f, 0.0f, -2000.0f + (8000.0f * (f32) i)); + Hu3DModelPosSet(arg0->model[i + 6], 0.0f, 0.0f, -2000.0f + (8000.0f * (f32)i)); } - + Hu3DModelPosSet(arg0->model[11], 0.0f, 0.0f, -3900.0f); Hu3DModelPosSet(arg0->model[12], 0.0f, 0.0f, 0.0f); - Hu3DModelAttrSet(arg0->model[12], 0x40000001); - + Hu3DModelAttrSet(arg0->model[12], HU3D_MOTATTR_LOOP); + if (lbl_1_bss_20 > 0) { - Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 200.0f * (f32) lbl_1_bss_20); - Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 200.0f * (f32)lbl_1_bss_20); + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); } } -void fn_1_1A8C(omObjData* arg0) { - Point3d sp8; +void fn_1_1A8C(omObjData *arg0) +{ + Vec sp8; sp8.x = lbl_1_data_1FC.x; sp8.y = lbl_1_data_1FC.y; sp8.z = lbl_1_data_1FC.z + Center.z; Hu3DGLightPosSetV(lbl_1_bss_24, &sp8, &lbl_1_data_208); Hu3DShadowPosSet(&sp8, &lbl_1_data_218, &Center); -} \ No newline at end of file +} diff --git a/src/REL/m407dll/player.c b/src/REL/m407dll/player.c index 69fe3858..0557ca80 100644 --- a/src/REL/m407dll/player.c +++ b/src/REL/m407dll/player.c @@ -1,27 +1,26 @@ -#include "game/process.h" -#include "game/object.h" -#include "game/gamework_data.h" -#include "game/pad.h" -#include "game/objsub.h" +#include "game/audio.h" #include "game/chrman.h" -#include "game/hsfman.h" #include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" #include "math.h" -#include "rel_sqrt_consts.h" - -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) -typedef void (*ObjFuncs)(omObjData*); +#include "REL/m407dll.h" typedef struct unkDominationData { u8 unk_00; u8 unk_01; u8 unk_02; - //padding unk_03 + // padding unk_03 s32 unk_04; s32 unk_08; u8 unk_0C; - //padding unk_0D + // padding unk_0D f32 unk_10; f32 unk_14; f32 unk_18; @@ -35,90 +34,150 @@ typedef struct unkDominationData { s32 unk_38; } unkDominationData; -//function signatures -void fn_1_628(omObjData*, s32); -void fn_1_64C(omObjData*); -void fn_1_99C(omObjData*); -void fn_1_A1C(omObjData* arg0); +// function signatures +void fn_1_628(omObjData *, s32); +void fn_1_64C(omObjData *); +void fn_1_99C(omObjData *); +void fn_1_A1C(omObjData *arg0); void fn_1_26CC(u8); void fn_1_4544(s32, s32, f32, f32, f32); s16 fn_1_28B8(u8); s16 fn_1_28E4(u8); -void fn_1_A88(omObjData* arg0); -void fn_1_A8C(omObjData* arg0); -void fn_1_C58(omObjData* arg0); -void fn_1_CF4(omObjData* arg0); -void fn_1_DB4(omObjData* arg0); -void fn_1_F8C(omObjData* arg0); -void fn_1_1074(omObjData* arg0); -void fn_1_11CC(omObjData* arg0); -void fn_1_13E4(omObjData* arg0); -void fn_1_1460(omObjData* arg0); +void fn_1_A88(omObjData *arg0); +void fn_1_A8C(omObjData *arg0); +void fn_1_C58(omObjData *arg0); +void fn_1_CF4(omObjData *arg0); +void fn_1_DB4(omObjData *arg0); +void fn_1_F8C(omObjData *arg0); +void fn_1_1074(omObjData *arg0); +void fn_1_11CC(omObjData *arg0); +void fn_1_13E4(omObjData *arg0); +void fn_1_1460(omObjData *arg0); -//bss -Process* lbl_1_bss_18; -omObjData* lbl_1_bss_8[4]; -Process* lbl_1_bss_0[2]; +// bss +Process *lbl_1_bss_18; +omObjData *lbl_1_bss_8[4]; +Process *lbl_1_bss_0[2]; -//data +// data u32 lbl_1_data_0[8][8] = { - {0x005F0000, 0x005F0024, 0x005F0029, 0x005F0005, 0x005F0006, 0x005F004A, 0x005F004B, 0x005F0018}, - {0x001A0000, 0x001A0024, 0x001A0029, 0x001A0005, 0x001A0006, 0x001A004A, 0x001A004B, 0x001A0018}, - {0x006D0000, 0x006D0024, 0x006D0029, 0x006D0005, 0x006D0006, 0x006D004A, 0x006D004B, 0x006D0018}, - {0x008A0000, 0x008A0024, 0x008A0029, 0x008A0005, 0x008A0006, 0x008A004A, 0x008A004B, 0x008A0018}, - {0x00850000, 0x00850024, 0x00850029, 0x00850005, 0x00850006, 0x0085004A, 0x0085004B, 0x00850018}, - {0x00110000, 0x00110024, 0x00110029, 0x00110005, 0x00110006, 0x0011004A, 0x0011004B, 0x00110018}, - {0x000D0000, 0x000D0024, 0x000D0029, 0x000D0005, 0x000D0006, 0x000D004A, 0x000D004B, 0x000D0018}, - {0x00810000, 0x00810024, 0x00810029, 0x00810005, 0x00810006, 0x0081004A, 0x0081004B, 0x00810018} + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x24), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x29), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x24), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x29), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x24), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x29), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x05), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x06), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x24), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x29), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x24), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x29), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x24), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x29), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x06), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x24), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x29), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x06), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x24), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x29), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x4A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x4B), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x18), + }, }; -s32 lbl_1_data_100[] = {0x0026000D, 0x0026000E, 0x0026000F, 0x00260010, 0x00260011, 0x00260012, 0x00260013, 0x00260014}; +s32 lbl_1_data_100[] = { + DATA_MAKE_NUM(DATADIR_M407, 0x0D), + DATA_MAKE_NUM(DATADIR_M407, 0x0E), + DATA_MAKE_NUM(DATADIR_M407, 0x0F), + DATA_MAKE_NUM(DATADIR_M407, 0x10), + DATA_MAKE_NUM(DATADIR_M407, 0x11), + DATA_MAKE_NUM(DATADIR_M407, 0x12), + DATA_MAKE_NUM(DATADIR_M407, 0x13), + DATA_MAKE_NUM(DATADIR_M407, 0x14), +}; char lbl_1_data_120[] = "test11_tex_we-itemhook-r"; -char* lbl_1_data_13C[] = { - lbl_1_data_120, - lbl_1_data_120, - lbl_1_data_120, - lbl_1_data_120, - lbl_1_data_120, - lbl_1_data_120, - lbl_1_data_120, - lbl_1_data_120 -}; +char *lbl_1_data_13C[] + = { lbl_1_data_120, lbl_1_data_120, lbl_1_data_120, lbl_1_data_120, lbl_1_data_120, lbl_1_data_120, lbl_1_data_120, lbl_1_data_120 }; -ObjFuncs lbl_1_data_15C[] = { - fn_1_A88, - fn_1_A8C, - fn_1_C58, - fn_1_CF4, - fn_1_DB4, - fn_1_F8C, - fn_1_1074, - fn_1_11CC, - fn_1_13E4, - fn_1_1460 -}; +ObjFuncs lbl_1_data_15C[] = { fn_1_A88, fn_1_A8C, fn_1_C58, fn_1_CF4, fn_1_DB4, fn_1_F8C, fn_1_1074, fn_1_11CC, fn_1_13E4, fn_1_1460 }; -u8 lbl_1_data_184[4][2] = { - {0x3C, 0x0F}, - {0x50, 0x0F}, - {0x64, 0x14}, - {0x78, 0x14} -}; +u8 lbl_1_data_184[4][2] = { { 0x3C, 0x0F }, { 0x50, 0x0F }, { 0x64, 0x14 }, { 0x78, 0x14 } }; -inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) { - unkDominationData* temp_r29 = arg0->data; +inline void SetDominationDataStuff(omObjData *arg0, s32 val0, s32 val1) +{ + unkDominationData *temp_r29 = arg0->data; temp_r29->unk_1C = val0; temp_r29->unk_20 = val1; } -void ObjectSetup(void) { +void ObjectSetup(void) +{ lbl_1_bss_0[0] = omInitObjMan(0x2F8, 0x2000); omGameSysInit(lbl_1_bss_0[0]); fn_1_4980(lbl_1_bss_0[0]); } -void fn_1_F4(Process* arg0) { +void fn_1_F4(Process *arg0) +{ u32 i; lbl_1_bss_18 = arg0; @@ -128,7 +187,8 @@ void fn_1_F4(Process* arg0) { } } -void fn_1_194(void) { +void fn_1_194(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -136,7 +196,8 @@ void fn_1_194(void) { } } -void fn_1_1E4(void) { +void fn_1_1E4(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -144,7 +205,8 @@ void fn_1_1E4(void) { } } -void fn_1_238(void) { +void fn_1_238(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -152,7 +214,8 @@ void fn_1_238(void) { } } -void fn_1_28C(void) { +void fn_1_28C(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -160,7 +223,8 @@ void fn_1_28C(void) { } } -void fn_1_2E0(void) { +void fn_1_2E0(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -168,7 +232,8 @@ void fn_1_2E0(void) { } } -void fn_1_334(void) { +void fn_1_334(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -176,19 +241,22 @@ void fn_1_334(void) { } } -void fn_1_388(u8 arg0, s32 arg1) { - omObjData* obj = lbl_1_bss_8[arg0]; - unkDominationData* unkData = obj->data; +void fn_1_388(u8 arg0, s32 arg1) +{ + omObjData *obj = lbl_1_bss_8[arg0]; + unkDominationData *unkData = obj->data; unkData->unk_38 = arg1; } -void fn_1_3C4(u8 arg0) { +void fn_1_3C4(u8 arg0) +{ fn_1_628(lbl_1_bss_8[arg0], 8); } -void fn_1_404(void) { - omObjData* temp_r31; - unkDominationData* unkData; +void fn_1_404(void) +{ + omObjData *temp_r31; + unkDominationData *unkData; s32 temp_r0; u8 i; @@ -196,68 +264,74 @@ void fn_1_404(void) { temp_r31 = lbl_1_bss_8[i]; unkData = temp_r31->data; switch (unkData->unk_38) { - case 0: - fn_1_628(temp_r31, 9); - break; - case 1: - fn_1_628(temp_r31, 6); - break; - case 2: - fn_1_628(temp_r31, 9); - break; + case 0: + fn_1_628(temp_r31, 9); + break; + case 1: + fn_1_628(temp_r31, 6); + break; + case 2: + fn_1_628(temp_r31, 9); + break; } } } -s32 fn_1_4C0(u8 arg0) { - unkDominationData* unkData; - +s32 fn_1_4C0(u8 arg0) +{ + unkDominationData *unkData; + if (arg0 >= 4) { return -1; } - + unkData = lbl_1_bss_8[arg0]->data; return unkData->unk_01; } -s32 fn_1_508(u8 arg0) { - unkDominationData* unkData = lbl_1_bss_8[arg0]->data; +s32 fn_1_508(u8 arg0) +{ + unkDominationData *unkData = lbl_1_bss_8[arg0]->data; return unkData->unk_04; } -s32 fn_1_53C(u8 arg0) { - return ((unkDominationData*)(lbl_1_bss_8[arg0]->data))->unk_1C == 0; +s32 fn_1_53C(u8 arg0) +{ + return ((unkDominationData *)(lbl_1_bss_8[arg0]->data))->unk_1C == 0; } -void fn_1_568(s16 arg0, s16 arg1, s16 arg2) { - unkDominationData* unkData; +void fn_1_568(s16 arg0, s16 arg1, s16 arg2) +{ + unkDominationData *unkData; unkData = lbl_1_bss_8[arg0]->data; switch (arg1) { - case 0: - omVibrate(unkData->unk_00, arg2, 6, 6); - break; - case 1: - omVibrate(unkData->unk_00, arg2, 4, 2); - break; - case 2: - omVibrate(unkData->unk_00, arg2, 0xC, 0); - break; + case 0: + omVibrate(unkData->unk_00, arg2, 6, 6); + break; + case 1: + omVibrate(unkData->unk_00, arg2, 4, 2); + break; + case 2: + omVibrate(unkData->unk_00, arg2, 0xC, 0); + break; } } -void fn_1_628(omObjData* arg0, s32 arg1) { - unkDominationData* temp_r31; +void fn_1_628(omObjData *arg0, s32 arg1) +{ + unkDominationData *temp_r31; temp_r31 = arg0->data; temp_r31->unk_1C = arg1; temp_r31->unk_20 = 0; } -void fn_1_64C(omObjData* arg0) { +void fn_1_64C(omObjData *arg0) +{ u32 temp_r29; - unkDominationData* temp_r27; - unkDominationData* temp_r31; + unkDominationData *temp_r27; + unkDominationData *temp_r31; u32 i; arg0->func = fn_1_A1C; @@ -276,19 +350,19 @@ void fn_1_64C(omObjData* arg0) { temp_r31->unk_30 = (600.0f / (lbl_1_data_184[temp_r31->unk_02][0] - frandmod31(lbl_1_data_184[temp_r31->unk_02][1]))); temp_r31->unk_2C = temp_r31->unk_30; arg0->model[0] = CharModelCreate(temp_r31->unk_01, 8); - arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_100[temp_r31->unk_01], MEMORY_DEFAULT_NUM, HEAP_DATA)); + arg0->model[1] = Hu3DModelCreateFile(lbl_1_data_100[temp_r31->unk_01]); Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); - + for (i = 0; i < 8; i++) { arg0->motion[i] = CharModelMotionCreate(temp_r31->unk_01, lbl_1_data_0[temp_r31->unk_01][i]); } - + Hu3DModelShadowSet(arg0->model[0]); Hu3DModelShadowSet(arg0->model[1]); CharModelMotionDataClose(temp_r31->unk_01); CharModelMotionSet(temp_r31->unk_01, arg0->motion[1]); - Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); Hu3DModelHookSet(arg0->model[0], lbl_1_data_13C[temp_r31->unk_01], arg0->model[1]); temp_r31->unk_10 = (600.0f - (400.0f * temp_r29)); temp_r31->unk_14 = 0.0f; @@ -296,78 +370,82 @@ void fn_1_64C(omObjData* arg0) { SetDominationDataStuff(arg0, 0, 0); } -void fn_1_99C(omObjData* arg0) { +void fn_1_99C(omObjData *arg0) +{ s32 i; for (i = 0; i < 8; i++) { Hu3DMotionKill(arg0->motion[i]); } - for (i = 0; i < 2; i++){ + for (i = 0; i < 2; i++) { Hu3DModelKill(arg0->model[i]); } - + HuMemDirectFree(arg0->data); } -void fn_1_A1C(omObjData* arg0) { - unkDominationData* temp_r31; +void fn_1_A1C(omObjData *arg0) +{ + unkDominationData *temp_r31; temp_r31 = arg0->data; lbl_1_data_15C[temp_r31->unk_1C](arg0); omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18); } -void fn_1_A88(omObjData* arg0) { +void fn_1_A88(omObjData *arg0) { } -} - -void fn_1_A8C(omObjData* arg0) { +void fn_1_A8C(omObjData *arg0) +{ s32 var_r29; - unkDominationData* temp_r31; + unkDominationData *temp_r31; var_r29 = 0; temp_r31 = arg0->data; temp_r31->unk_28 += 1.0f; - + if (temp_r31->unk_04 == 0) { var_r29 = (HuPadBtnDown[temp_r31->unk_0C] & 0x100) ? 1 : 0; - } else if ((u32) temp_r31->unk_28 >= (u32) temp_r31->unk_2C) { + } + else if ((u32)temp_r31->unk_28 >= (u32)temp_r31->unk_2C) { var_r29 = 1; temp_r31->unk_2C += temp_r31->unk_30; } - + if (var_r29 != 0) { - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[2], 0.0f, 0.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[2], 0.0f, 0.0f, HU3D_MOTATTR_NONE); fn_1_4544(4, 0x10, 600.0f - (400.0f * temp_r31->unk_00), -20.0f, -450.0f); fn_1_26CC(temp_r31->unk_00); temp_r31->unk_34 = 1; return; } - + if ((temp_r31->unk_34 != 0) && (Hu3DMotionEndCheck(arg0->model[0]) != 0)) { - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 0.0f, 0x40000001); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 0.0f, HU3D_MOTATTR_LOOP); temp_r31->unk_34 = 0; } } -void fn_1_C58(omObjData* arg0) { - unkDominationData* temp_r30; +void fn_1_C58(omObjData *arg0) +{ + unkDominationData *temp_r30; temp_r30 = arg0->data; if (Hu3DMotionEndCheck(arg0->model[0]) != 0) { - CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[1], 0.0f, 10.0f, 0x40000001); + CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); temp_r30->unk_34 = 0; SetDominationDataStuff(arg0, 0, 0); } } -void fn_1_CF4(omObjData* arg0) { - unkDominationData* temp_r31; +void fn_1_CF4(omObjData *arg0) +{ + unkDominationData *temp_r31; temp_r31 = arg0->data; if (temp_r31->unk_20 == 0) { - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 10.0f, 0x40000001); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); CharModelItemHookCreate(temp_r31->unk_01, lbl_1_data_13C[temp_r31->unk_01]); } if (temp_r31->unk_20++ >= 30) { @@ -375,95 +453,99 @@ void fn_1_CF4(omObjData* arg0) { } } -void fn_1_DB4(omObjData* arg0) { +void fn_1_DB4(omObjData *arg0) +{ f32 temp_f31; f32 temp_f30; - unkDominationData* temp_r31; + unkDominationData *temp_r31; temp_r31 = arg0->data; - + if (temp_r31->unk_20 == 0) { CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0); - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); temp_r31->unk_24 = 0.0f; temp_r31->unk_20++; } - - temp_f31 = (32.0f * sin(1.0471975511965976)) - (9.8f * temp_r31->unk_24); - temp_f30 = 22.0f * cos(1.0471975511965976); + + temp_f31 = 32.0f * sin(M_PI / 3) - 9.8f * temp_r31->unk_24; + temp_f30 = 22.0f * cos(M_PI / 3); temp_r31->unk_18 = temp_r31->unk_18 + temp_f30; temp_r31->unk_14 = temp_r31->unk_14 + temp_f31; temp_r31->unk_24 += 0.3f; - + if (!(temp_f31 < 0.0f) || !(temp_r31->unk_14 <= 30.0f)) { return; } - + temp_r31->unk_14 = 30.0f; - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); SetDominationDataStuff(arg0, 0, 0); } -//can also be placed into fn_1_F8C as static const -const s32 lbl_1_rodata_70[] = {0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2}; +// can also be placed into fn_1_F8C as static const +const s32 lbl_1_rodata_70[] = { 0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2 }; -void fn_1_F8C(omObjData* arg0) { - unkDominationData* temp_r31; +void fn_1_F8C(omObjData *arg0) +{ + unkDominationData *temp_r31; temp_r31 = arg0->data; - + if (temp_r31->unk_20 == 0) { - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[5], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[5], 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(lbl_1_rodata_70[temp_r31->unk_01]); } - + if (temp_r31->unk_20++ >= 120) { - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[0], 0.0f, 10.0f, 0x40000001); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); SetDominationDataStuff(arg0, 0, 0); } } -void fn_1_1074(omObjData* arg0) { - unkDominationData* temp_r31; +void fn_1_1074(omObjData *arg0) +{ + unkDominationData *temp_r31; temp_r31 = arg0->data; if (temp_r31->unk_20 == 0) { CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0); - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); temp_r31->unk_24 = 0.0f; temp_r31->unk_20 = 1; } - - temp_r31->unk_14 = (temp_r31->unk_14 + ((80.0 * sin(1.5707963267948966)) - (9.8 * temp_r31->unk_24))); + + temp_r31->unk_14 += 80.0 * sin(M_PI / 2) - 9.8 * temp_r31->unk_24; temp_r31->unk_24 += 0.3f; - + if (!(temp_r31->unk_14 < 1000.0f)) { - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); SetDominationDataStuff(arg0, 7, 0); } } -void fn_1_11CC(omObjData* arg0) { - unkDominationData* temp_r31; +void fn_1_11CC(omObjData *arg0) +{ + unkDominationData *temp_r31; s16 temp; temp_r31 = arg0->data; if (temp_r31->unk_20 == 0) { CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0); - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); temp_r31->unk_14 = 1000.0f; temp_r31->unk_18 = 200.0f * (fn_1_28B8(temp_r31->unk_00) + 2); temp_r31->unk_24 = 0.0f; temp_r31->unk_20 = 1; } - + temp_r31->unk_14 = (temp_r31->unk_14 - (2.0f + (9.8f * temp_r31->unk_24))); temp_r31->unk_24 += 0.3f; - + if (!(temp_r31->unk_14 > 300.0f)) { temp_r31->unk_14 = 300.0f; CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[4], 0); - CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); temp = fn_1_28E4(temp_r31->unk_00); Hu3DModelHookSet(temp, "itemhook_c", arg0->model[0]); temp_r31->unk_10 = 0.0f; @@ -473,19 +555,21 @@ void fn_1_11CC(omObjData* arg0) { } } -void fn_1_13E4(omObjData* arg0) { - unkDominationData* temp_r30; +void fn_1_13E4(omObjData *arg0) +{ + unkDominationData *temp_r30; temp_r30 = arg0->data; - CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[6], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[6], 0.0f, 10.0f, HU3D_MOTATTR_NONE); SetDominationDataStuff(arg0, 0, 0); } -void fn_1_1460(omObjData* arg0) { - unkDominationData* temp_r30; +void fn_1_1460(omObjData *arg0) +{ + unkDominationData *temp_r30; temp_r30 = arg0->data; CharModelVoiceEnableSet(temp_r30->unk_01, arg0->motion[7], 0); - CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[7], 0.0f, 10.0f, 0); + CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[7], 0.0f, 10.0f, HU3D_MOTATTR_NONE); SetDominationDataStuff(arg0, 0, 0); } diff --git a/src/REL/m407dll/score.c b/src/REL/m407dll/score.c index ec8d69a0..4895ebd8 100644 --- a/src/REL/m407dll/score.c +++ b/src/REL/m407dll/score.c @@ -1,42 +1,38 @@ -#include "game/process.h" -#include "game/object.h" #include "game/esprite.h" +#include "game/object.h" +#include "game/process.h" +#include "game/sprite.h" -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) - -typedef void (*ObjFuncs)(void); +#include "REL/m407dll.h" typedef struct unkDominationData6 { -/* 0x00 */ s32 unk_00; -/* 0x04 */ s32 unk_04; -/* 0x08 */ s16 unk_08; -/* 0x0A */ s16 unk_0A; -/* 0x0C */ s16 unk_0C[8]; //what size is this?? -/* 0x1C */ s32 unk_1C; -/* 0x20 */ f32 unk_20; -} unkDominationData6; //sizeof 0x24 + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s16 unk_08; + /* 0x0A */ s16 unk_0A; + /* 0x0C */ s16 unk_0C[8]; // what size is this?? + /* 0x1C */ s32 unk_1C; + /* 0x20 */ f32 unk_20; +} unkDominationData6; // sizeof 0x24 -//func signatures +// func signatures void fn_1_61A0(void); void fn_1_6218(void); void fn_1_62A0(void); -void fn_1_5FE4(omObjData* arg0); +void fn_1_5FE4(omObjData *arg0); void fn_1_5FB4(s32 arg0); s16 fn_1_28D4(void); -//bss -Process* lbl_1_bss_398C; -omObjData* lbl_1_bss_3988; +// bss +Process *lbl_1_bss_398C; +omObjData *lbl_1_bss_3988; -//data -ObjFuncs lbl_1_data_360[] = { - fn_1_61A0, - fn_1_6218, - fn_1_62A0 -}; +// data +VoidFuncs lbl_1_data_360[] = { fn_1_61A0, fn_1_6218, fn_1_62A0 }; -void fn_1_5C5C(Process* arg0, s16 arg1) { - unkDominationData6* temp_r31; +void fn_1_5C5C(Process *arg0, s16 arg1) +{ + unkDominationData6 *temp_r31; u32 i; lbl_1_bss_398C = arg0; @@ -45,21 +41,21 @@ void fn_1_5C5C(Process* arg0, s16 arg1) { temp_r31 = lbl_1_bss_3988->data; temp_r31->unk_08 = arg1; temp_r31->unk_0A = 0; - temp_r31->unk_0C[6] = espEntry(0x260025, 2, 0); + temp_r31->unk_0C[6] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x25), 2, 0); espTPLvlSet(temp_r31->unk_0C[6], 0.5f); espPosSet(temp_r31->unk_0C[6], 508.0f, 64.0f); - temp_r31->unk_0C[7] = espEntry(0x260022, 1, 0); + temp_r31->unk_0C[7] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x22), 1, 0); espPosSet(temp_r31->unk_0C[7], 480.0f, 56.0f); for (i = 0; i < 3; i++) { - temp_r31->unk_0C[i] = espEntry(0x26001F, 0, 0); + temp_r31->unk_0C[i] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x1F), 0, 0); espPosSet(temp_r31->unk_0C[i], i * 16 + 0x1F4, 56.0f); espDispOff(temp_r31->unk_0C[i]); } for (i = 0; i < 3; i++) { - temp_r31->unk_0C[i+3] = espEntry(0x260020, 1, 0); - espPosSet(temp_r31->unk_0C[i+3], i * 16 + 0x1F4, 74.0f); + temp_r31->unk_0C[i + 3] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x20), 1, 0); + espPosSet(temp_r31->unk_0C[i + 3], i * 16 + 0x1F4, 74.0f); } for (i = 0; i < 8; i++) { @@ -69,44 +65,49 @@ void fn_1_5C5C(Process* arg0, s16 arg1) { fn_1_5FB4(0); } -void fn_1_5ECC(void) { +void fn_1_5ECC(void) +{ s32 i; - unkDominationData6* temp_r30; + unkDominationData6 *temp_r30; temp_r30 = lbl_1_bss_3988->data; for (i = 0; i < 7; i++) { espKill(temp_r30->unk_0C[i]); } - + HuMemDirectFree(lbl_1_bss_3988->data); } -void fn_1_5F40(s32 arg0) { +void fn_1_5F40(s32 arg0) +{ switch (arg0) { - case 0: - fn_1_5FB4(1); - break; - case 1: - fn_1_5FB4(2); - break; + case 0: + fn_1_5FB4(1); + break; + case 1: + fn_1_5FB4(2); + break; } } -void fn_1_5F90(void) { +void fn_1_5F90(void) +{ fn_1_5FB4(0); } -void fn_1_5FB4(s32 arg0) { - unkDominationData6* temp_r31; +void fn_1_5FB4(s32 arg0) +{ + unkDominationData6 *temp_r31; temp_r31 = lbl_1_bss_3988->data; temp_r31->unk_00 = arg0; temp_r31->unk_04 = 0; } -void fn_1_5FE4(omObjData* arg0) { +void fn_1_5FE4(omObjData *arg0) +{ s16 temp_r31; - unkDominationData6* temp_r30; + unkDominationData6 *temp_r30; temp_r30 = lbl_1_bss_3988->data; lbl_1_data_360[temp_r30->unk_00](); @@ -114,19 +115,20 @@ void fn_1_5FE4(omObjData* arg0) { espBankSet(temp_r30->unk_0C[0], temp_r31 / 100); temp_r31 = (temp_r31 - ((temp_r31 / 100) * 100)); espBankSet(temp_r30->unk_0C[1], (temp_r31 / 10)); - temp_r31 = (temp_r31 - ((temp_r31 / 10) * 10)); + temp_r31 = (temp_r31 - ((temp_r31 / 10) * 10)); espBankSet(temp_r30->unk_0C[2], temp_r31); temp_r31 = temp_r30->unk_0A; espBankSet(temp_r30->unk_0C[3], (temp_r31 / 100)); temp_r31 = (temp_r31 - ((temp_r31 / 100) * 100)); - espBankSet(temp_r30->unk_0C[4], (temp_r31 / 10)); + espBankSet(temp_r30->unk_0C[4], (temp_r31 / 10)); temp_r31 = (temp_r31 - ((temp_r31 / 10) * 10)); espBankSet(temp_r30->unk_0C[5], temp_r31); } -void fn_1_61A0(void) { +void fn_1_61A0(void) +{ s32 i; - unkDominationData6* temp_r31; + unkDominationData6 *temp_r31; temp_r31 = lbl_1_bss_3988->data; @@ -138,9 +140,10 @@ void fn_1_61A0(void) { } } -void fn_1_6218(void) { +void fn_1_6218(void) +{ s16 i; - unkDominationData6* temp_r31; + unkDominationData6 *temp_r31; temp_r31 = lbl_1_bss_3988->data; @@ -154,9 +157,10 @@ void fn_1_6218(void) { temp_r31->unk_0A = fn_1_28D4(); } -void fn_1_62A0(void) { +void fn_1_62A0(void) +{ s32 i; - unkDominationData6* temp_r31; + unkDominationData6 *temp_r31; temp_r31 = lbl_1_bss_3988->data; @@ -174,7 +178,8 @@ void fn_1_62A0(void) { temp_r31->unk_20 = 1.2f; temp_r31->unk_1C = 1; } - } else { + } + else { if ((temp_r31->unk_20 -= 0.04f) <= 1.0f) { temp_r31->unk_20 = 1.0f; temp_r31->unk_1C = 0; diff --git a/src/REL/m407dll/whomp.c b/src/REL/m407dll/whomp.c index f10df704..43275f60 100644 --- a/src/REL/m407dll/whomp.c +++ b/src/REL/m407dll/whomp.c @@ -1,45 +1,43 @@ -#include "game/process.h" -#include "game/object.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/audio.h" #include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/object.h" +#include "game/process.h" -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) +#include "REL/m407dll.h" -#define MAX_WHOMPS_PLAYER 160 -#define MAX_WHOMPS_ALL_PLAYERS MAX_WHOMPS_PLAYER * ARRAY_COUNT(GWPlayer) -#define MAX_WHOMPS (MAX_WHOMPS_PLAYER + 1) * ARRAY_COUNT(GWPlayer) - -typedef void (*ObjFuncs)(omObjData*); +#define MAX_WHOMPS_PLAYER 160 +#define MAX_WHOMPS_ALL_PLAYERS MAX_WHOMPS_PLAYER *ARRAY_COUNT(GWPlayer) +#define MAX_WHOMPS (MAX_WHOMPS_PLAYER + 1) * ARRAY_COUNT(GWPlayer) typedef struct unkDominationData7 { -/* 0x00 */ u32 unk_00; -/* 0x04 */ s32 unk_04; -/* 0x08 */ Vec unk_08; -/* 0x14 */ Vec unk_14; -/* 0x20 */ char unk_20[4]; -/* 0x24 */ s32 unk_24; -/* 0x28 */ s32 unk_28; -/* 0x2C */ s32 unk_2C; -} unkDominationData7; //sizeof 0x30 + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ Vec unk_14; + /* 0x20 */ char unk_20[4]; + /* 0x24 */ s32 unk_24; + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; +} unkDominationData7; // sizeof 0x30 -//function signatures -void fn_1_3360(omObjData*); -void fn_1_3364(omObjData*); -void fn_1_34A4(omObjData*); -void fn_1_37B0(omObjData*); -void fn_1_36D0(omObjData*); -void fn_1_2B7C(omObjData*); -void fn_1_290C(omObjData*, s32); -void fn_1_31F8(omObjData*); +// function signatures +void fn_1_3360(omObjData *); +void fn_1_3364(omObjData *); +void fn_1_34A4(omObjData *); +void fn_1_37B0(omObjData *); +void fn_1_36D0(omObjData *); +void fn_1_2B7C(omObjData *); +void fn_1_290C(omObjData *, s32); +void fn_1_31F8(omObjData *); void fn_1_4544(s32, s32, f32, f32, f32); void fn_1_3BB8(s16, f32, f32); void fn_1_568(s16, s16, s16); -//bss -Process* lbl_1_bss_37C0; -omObjData* lbl_1_bss_2DB0[MAX_WHOMPS]; +// bss +Process *lbl_1_bss_37C0; +omObjData *lbl_1_bss_2DB0[MAX_WHOMPS]; s16 lbl_1_bss_1E98[MAX_WHOMPS][3]; s16 lbl_1_bss_68[MAX_WHOMPS][6]; s16 lbl_1_bss_66; @@ -47,23 +45,23 @@ s16 lbl_1_bss_64; s16 lbl_1_bss_3A[21]; s16 lbl_1_bss_38; -//data +// data s32 lbl_1_data_228[] = { - 0x0026001C, - 0x0026001D, - 0x0026001E, - 0x0026001B + DATA_MAKE_NUM(DATADIR_M407, 0x1C), + DATA_MAKE_NUM(DATADIR_M407, 0x1D), + DATA_MAKE_NUM(DATADIR_M407, 0x1E), + DATA_MAKE_NUM(DATADIR_M407, 0x1B), }; s32 lbl_1_data_238[] = { - 0x0026002E, - 0x0026002F, - 0x0026002D, - 0x0026002A, - 0x0026002C, - 0x00260027, - 0x00260028, - 0x00260029 + DATA_MAKE_NUM(DATADIR_M407, 0x2E), + DATA_MAKE_NUM(DATADIR_M407, 0x2F), + DATA_MAKE_NUM(DATADIR_M407, 0x2D), + DATA_MAKE_NUM(DATADIR_M407, 0x2A), + DATA_MAKE_NUM(DATADIR_M407, 0x2C), + DATA_MAKE_NUM(DATADIR_M407, 0x27), + DATA_MAKE_NUM(DATADIR_M407, 0x28), + DATA_MAKE_NUM(DATADIR_M407, 0x29), }; ObjFuncs lbl_1_data_258[] = { @@ -74,8 +72,9 @@ ObjFuncs lbl_1_data_258[] = { fn_1_36D0, }; -void fn_1_2354(Process* arg0) { - Process* sp8; +void fn_1_2354(Process *arg0) +{ + Process *sp8; u32 i; u32 j; @@ -84,7 +83,7 @@ void fn_1_2354(Process* arg0) { for (j = 0, i = 0; i < MAX_WHOMPS_ALL_PLAYERS; i++) { lbl_1_bss_2DB0[i] = omAddObjEx(lbl_1_bss_37C0, 0x200, 3, 6, 2, fn_1_2B7C); lbl_1_bss_2DB0[i]->work[0] = i; - lbl_1_bss_2DB0[i]->work[1] = 0; + lbl_1_bss_2DB0[i]->work[1] = 0; } j = j + i; @@ -92,7 +91,7 @@ void fn_1_2354(Process* arg0) { for (i = 0; i < 4; i++) { lbl_1_bss_2DB0[j + i] = omAddObjEx(lbl_1_bss_37C0, 0x200, 3, 6, 2, fn_1_2B7C); lbl_1_bss_2DB0[j + i]->work[0] = j + i; - lbl_1_bss_2DB0[j + i]->work[1] = 1; + lbl_1_bss_2DB0[j + i]->work[1] = 1; } for (i = 0; i < 4; i++) { @@ -102,7 +101,8 @@ void fn_1_2354(Process* arg0) { lbl_1_bss_64 = 0; } -void fn_1_24F0(void) { +void fn_1_24F0(void) +{ u32 i; for (i = 0; i < MAX_WHOMPS; i++) { @@ -111,7 +111,8 @@ void fn_1_24F0(void) { } } -void fn_1_2564(void) { +void fn_1_2564(void) +{ u32 i; HuAudFXPlay(0x542); @@ -120,30 +121,32 @@ void fn_1_2564(void) { } } -void fn_1_25C0(void) { +void fn_1_25C0(void) +{ u32 i, j; lbl_1_bss_38 = 0; - + for (i = 0; i < 4; i++) { if (lbl_1_bss_38 < lbl_1_bss_3A[i]) { lbl_1_bss_38 = lbl_1_bss_3A[i]; - } + } } - + lbl_1_bss_66 = 0; - + for (i = 0; i < 4; i++) { if (lbl_1_bss_3A[i] > 0) { fn_1_290C(lbl_1_bss_2DB0[i], 3); lbl_1_bss_66 += 1; - } + } } } -void fn_1_26CC(u8 arg0) { +void fn_1_26CC(u8 arg0) +{ u32 i; - omObjData* temp; + omObjData *temp; i = lbl_1_bss_3A[arg0]; if (i < MAX_WHOMPS_PLAYER) { @@ -153,9 +156,10 @@ void fn_1_26CC(u8 arg0) { } } -void fn_1_2770(u8 arg0, s16 arg2) { - omObjData* temp_r30; - unkDominationData7* temp_r31; +void fn_1_2770(u8 arg0, s16 arg2) +{ + omObjData *temp_r30; + unkDominationData7 *temp_r31; temp_r30 = lbl_1_bss_2DB0[arg0 + MAX_WHOMPS_ALL_PLAYERS]; temp_r31 = temp_r30->data; @@ -165,35 +169,41 @@ void fn_1_2770(u8 arg0, s16 arg2) { fn_1_290C(temp_r30, 2); } -s32 fn_1_2880(void) { +s32 fn_1_2880(void) +{ return (lbl_1_bss_66 == 0) ? 1 : 0; } -s16 fn_1_28B8(u8 arg0) { +s16 fn_1_28B8(u8 arg0) +{ return lbl_1_bss_3A[arg0]; } -s16 fn_1_28D4(void) { +s16 fn_1_28D4(void) +{ return lbl_1_bss_64; } -s16 fn_1_28E4(u8 arg0) { +s16 fn_1_28E4(u8 arg0) +{ return lbl_1_bss_2DB0[arg0 + MAX_WHOMPS_ALL_PLAYERS]->model[0]; } -void fn_1_290C(omObjData* arg0, s32 arg1) { - unkDominationData7* temp_r31; +void fn_1_290C(omObjData *arg0, s32 arg1) +{ + unkDominationData7 *temp_r31; temp_r31 = arg0->data; temp_r31->unk_24 = arg1; temp_r31->unk_2C = 0; } -void fn_1_2930(omObjData* arg0) { - unkDominationData7* temp_r28; - omObjData* temp_r29; +void fn_1_2930(omObjData *arg0) +{ + unkDominationData7 *temp_r28; + omObjData *temp_r29; u32 i; - unkDominationData7* temp_r31; + unkDominationData7 *temp_r31; temp_r31 = arg0->data; lbl_1_data_258[temp_r31->unk_24](arg0); @@ -208,30 +218,33 @@ void fn_1_2930(omObjData* arg0) { if (temp_r31->unk_08.y < 0.0f) { Hu3DModelShadowDispOff(arg0->model[0]); - } else { + } + else { Hu3DModelShadowDispOn(arg0->model[0]); } temp_r31->unk_04 = 1; } - + if ((temp_r31->unk_08.y < 0.0f) || (temp_r31->unk_08.z < (Center.z - 2000.0f))) { - Hu3DModelAttrSet(arg0->model[0], 1); - } else { - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); } - + else { + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + } + omSetTra(arg0, temp_r31->unk_08.x, temp_r31->unk_08.y, temp_r31->unk_08.z); omSetRot(arg0, temp_r31->unk_14.x, temp_r31->unk_14.y, temp_r31->unk_14.z); - + if (temp_r31->unk_28 == 1) { Hu3DModelPosSet(arg0->model[2], temp_r31->unk_08.x, 1.0f + temp_r31->unk_08.y, temp_r31->unk_08.z); } } -void fn_1_2B7C(omObjData* arg0) { +void fn_1_2B7C(omObjData *arg0) +{ u32 i; - unkDominationData7* temp_r30; + unkDominationData7 *temp_r30; arg0->func = fn_1_2930; arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData7), MEMORY_DEFAULT_NUM); @@ -242,72 +255,74 @@ void fn_1_2B7C(omObjData* arg0) { } for (i = 0; i < 6; i++) { - arg0->motion[i] = -1; + arg0->motion[i] = -1; } - - temp_r30->unk_00 = (u32) arg0->work[0]; - temp_r30->unk_28 = (u32) arg0->work[1]; + + temp_r30->unk_00 = (u32)arg0->work[0]; + temp_r30->unk_28 = (u32)arg0->work[1]; temp_r30->unk_04 = 0; temp_r30->unk_2C = 0; switch (temp_r30->unk_28) { - case 0: - temp_r30->unk_14.x = 0.0f; - temp_r30->unk_14.y = 180.0f; - temp_r30->unk_14.z = 0.0f; - if (temp_r30->unk_00 < 80) { - arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[1], MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DModelAttrSet(arg0->model[0], 0x4000); - Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); - if (temp_r30->unk_00 == 0) { - arg0->motion[5] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[5], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->motion[3] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[7], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->motion[4] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[6], MEMORY_DEFAULT_NUM, HEAP_DATA)); - } else { - arg0->motion[5] = lbl_1_bss_68[0][5]; - arg0->motion[3] = lbl_1_bss_68[0][3]; - arg0->motion[4] = lbl_1_bss_68[0][4]; - } - Hu3DModelShadowSet(arg0->model[0]); - for (i = 0; i < 3; i++) { - lbl_1_bss_1E98[temp_r30->unk_00][i] = arg0->model[i]; - } + case 0: + temp_r30->unk_14.x = 0.0f; + temp_r30->unk_14.y = 180.0f; + temp_r30->unk_14.z = 0.0f; + if (temp_r30->unk_00 < 80) { + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_228[1]); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_NOCULL); + Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); + if (temp_r30->unk_00 == 0) { + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_238[5]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_238[7]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_238[6]); + } + else { + arg0->motion[5] = lbl_1_bss_68[0][5]; + arg0->motion[3] = lbl_1_bss_68[0][3]; + arg0->motion[4] = lbl_1_bss_68[0][4]; + } + Hu3DModelShadowSet(arg0->model[0]); + for (i = 0; i < 3; i++) { + lbl_1_bss_1E98[temp_r30->unk_00][i] = arg0->model[i]; + } - for (i = 0; i < 6; i++) { - lbl_1_bss_68[temp_r30->unk_00][i] = arg0->motion[i]; + for (i = 0; i < 6; i++) { + lbl_1_bss_68[temp_r30->unk_00][i] = arg0->motion[i]; + } + Hu3DMotionSet(arg0->model[0], arg0->motion[5]); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + temp_r30->unk_04 = 1; } - Hu3DMotionSet(arg0->model[0], arg0->motion[5]); - Hu3DModelAttrSet(arg0->model[0], 0x40000001); + else { + temp_r30->unk_04 = 0; + } + break; + case 1: + temp_r30->unk_14.x = 0.0f; + temp_r30->unk_14.y = 0.0f; + temp_r30->unk_14.z = 0.0f; + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_228[0]); + arg0->model[1] = Hu3DModelCreateFile(lbl_1_data_228[2]); + arg0->model[2] = Hu3DModelCreateFile(lbl_1_data_228[3]); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_NOCULL); + Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); + Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_238[2]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_238[4]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_238[3]); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[1], lbl_1_data_238[0]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], lbl_1_data_238[1]); + Hu3DModelHookSet(arg0->model[0], "itemhook_r", arg0->model[1]); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelShadowSet(arg0->model[1]); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_LOOP); temp_r30->unk_04 = 1; - } else { - temp_r30->unk_04 = 0; - } - break; - case 1: - temp_r30->unk_14.x = 0.0f; - temp_r30->unk_14.y = 0.0f; - temp_r30->unk_14.z = 0.0f; - arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[0], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[2], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->model[2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[3], MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DModelAttrSet(arg0->model[0], 0x4000); - Hu3DModelAttrSet(arg0->model[1], 0x4000); - Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); - Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); - arg0->motion[2] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[2], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->motion[3] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[4], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->motion[5] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[3], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->motion[0] = Hu3DJointMotion(arg0->model[1], HuDataSelHeapReadNum(lbl_1_data_238[0], MEMORY_DEFAULT_NUM, HEAP_DATA)); - arg0->motion[1] = Hu3DJointMotion(arg0->model[1], HuDataSelHeapReadNum(lbl_1_data_238[1], MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DModelHookSet(arg0->model[0], "itemhook_r", arg0->model[1]); - Hu3DModelShadowSet(arg0->model[0]); - Hu3DModelShadowSet(arg0->model[1]); - Hu3DModelAttrSet(arg0->model[0], 1); - Hu3DModelAttrSet(arg0->model[1], 1); - Hu3DModelAttrSet(arg0->model[2], 1); - Hu3DModelAttrSet(arg0->model[2], 0x40000002); - Hu3DModelAttrSet(arg0->model[2], 0x40000001); - temp_r30->unk_04 = 1; - break; + break; } temp_r30->unk_08.x = (600.0f - (400.0f * (temp_r30->unk_00 & 3))); temp_r30->unk_08.y = 0.0f; @@ -315,152 +330,156 @@ void fn_1_2B7C(omObjData* arg0) { fn_1_290C(arg0, 0); } -void fn_1_31F8(omObjData* arg0) { +void fn_1_31F8(omObjData *arg0) +{ s32 i; - unkDominationData7* temp_r29; + unkDominationData7 *temp_r29; temp_r29 = arg0->data; - switch (temp_r29->unk_28) { /* irregular */ - case 0: - if (temp_r29->unk_00 == 0) { + switch (temp_r29->unk_28) { /* irregular */ + case 0: + if (temp_r29->unk_00 == 0) { + for (i = 0; i < 6; i++) { + if (arg0->motion[i] != -1) { + Hu3DMotionKill(arg0->motion[i]); + } + } + } + if (temp_r29->unk_04 != 0) { + for (i = 0; i < 3; i++) { + if (arg0->model[i] != -1) { + Hu3DModelKill(arg0->model[i]); + } + } + } + break; + case 1: for (i = 0; i < 6; i++) { if (arg0->motion[i] != -1) { Hu3DMotionKill(arg0->motion[i]); } } - } - if (temp_r29->unk_04 != 0) { for (i = 0; i < 3; i++) { if (arg0->model[i] != -1) { Hu3DModelKill(arg0->model[i]); - } + } } - } - break; - case 1: - for (i = 0; i < 6; i++) { - if (arg0->motion[i] != -1) { - Hu3DMotionKill(arg0->motion[i]); - } - } - for (i = 0; i < 3; i++) { - if (arg0->model[i] != -1) { - Hu3DModelKill(arg0->model[i]); - } - } - break; + break; } if (arg0->data) { HuMemDirectFree(arg0->data); } } -void fn_1_3360(omObjData*) { +void fn_1_3360(omObjData *) { } -} - -void fn_1_3364(omObjData* arg0) { - unkDominationData7* temp_r31; +void fn_1_3364(omObjData *arg0) +{ + unkDominationData7 *temp_r31; temp_r31 = arg0->data; if (temp_r31->unk_2C == 0) { Hu3DMotionSet(arg0->model[0], arg0->motion[4]); - Hu3DModelAttrReset(arg0->model[0], 0x40000001); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); switch (temp_r31->unk_28) { - case 0: - fn_1_4544(0, 0, temp_r31->unk_08.x, 0.0f, temp_r31->unk_08.z); - break; - case 1: - fn_1_4544(1, 0, temp_r31->unk_08.x, 0.0f, temp_r31->unk_08.z); - break; + case 0: + fn_1_4544(0, 0, temp_r31->unk_08.x, 0.0f, temp_r31->unk_08.z); + break; + case 1: + fn_1_4544(1, 0, temp_r31->unk_08.x, 0.0f, temp_r31->unk_08.z); + break; } } - + if (temp_r31->unk_2C == 0x2A) { Hu3DModelShadowDispOff(arg0->model[0]); } - + if (Hu3DMotionEndCheck(*arg0->model) == 0) { temp_r31->unk_2C++; return; } - + temp_r31->unk_08.y = -300.0f; - Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); fn_1_290C(arg0, 0); } -void fn_1_34A4(omObjData* arg0) { - unkDominationData7* temp_r30; +void fn_1_34A4(omObjData *arg0) +{ + unkDominationData7 *temp_r30; temp_r30 = arg0->data; if (temp_r30->unk_2C == 0) { if (temp_r30->unk_28 == 1) { - Hu3DModelAttrReset(arg0->model[0], 1); - Hu3DModelAttrReset(arg0->model[1], 1); - } else { - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); } Hu3DMotionSet(arg0->model[0], arg0->motion[3]); - Hu3DModelAttrReset(arg0->model[0], 0x40000001); - switch (temp_r30->unk_28) { /* irregular */ - case 0: - fn_1_4544(0, 0, temp_r30->unk_08.x, 0.0f, temp_r30->unk_08.z); - HuAudFXPlay(0x543); - break; - case 1: - HuAudFXPlay(0x544); - fn_1_4544(1, 0, temp_r30->unk_08.x, 0.0f, temp_r30->unk_08.z); - break; + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + switch (temp_r30->unk_28) { /* irregular */ + case 0: + fn_1_4544(0, 0, temp_r30->unk_08.x, 0.0f, temp_r30->unk_08.z); + HuAudFXPlay(0x543); + break; + case 1: + HuAudFXPlay(0x544); + fn_1_4544(1, 0, temp_r30->unk_08.x, 0.0f, temp_r30->unk_08.z); + break; } temp_r30->unk_08.y = 0.0f; } - + if (temp_r30->unk_2C == 0xA) { Hu3DModelShadowDispOn(arg0->model[0]); } - + if ((temp_r30->unk_2C == 0xA) && (temp_r30->unk_28 == 1)) { Hu3DMotionSet(arg0->model[1], arg0->motion[1]); - Hu3DModelAttrReset(arg0->model[1], 0x40000001); + Hu3DModelAttrReset(arg0->model[1], HU3D_MOTATTR_LOOP); } - + temp_r30->unk_2C++; - + if (Hu3DMotionEndCheck(arg0->model[0]) != 0) { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, 0x40000001); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); switch (temp_r30->unk_28) { - case 0: - fn_1_290C(arg0, 0); - return; - case 1: - fn_1_290C(arg0, 4); - break; + case 0: + fn_1_290C(arg0, 0); + return; + case 1: + fn_1_290C(arg0, 4); + break; } } } -void fn_1_36D0(omObjData* arg0) { - unkDominationData7* sp8; +void fn_1_36D0(omObjData *arg0) +{ + unkDominationData7 *sp8; sp8 = arg0->data; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, 0x40000001); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); Hu3DMotionSet(arg0->model[1], arg0->motion[0]); - Hu3DModelAttrSet(arg0->model[1], 0x40000001); - Hu3DModelAttrReset(arg0->model[2], 1); - Hu3DModelAttrReset(arg0->model[2], 0x40000002); - Hu3DModelAttrSet(arg0->model[2], 0x40000001); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_LOOP); fn_1_290C(arg0, 0); } -void fn_1_37B0(omObjData* arg0) { - unkDominationData7* temp_r31; +void fn_1_37B0(omObjData *arg0) +{ + unkDominationData7 *temp_r31; temp_r31 = arg0->data; if (temp_r31->unk_2C == 0) { temp_r31->unk_14.x = 0.0f; temp_r31->unk_08.y = 0.0f; - Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); temp_r31->unk_2C++; } temp_r31->unk_14.x -= 4.0f; @@ -479,7 +498,7 @@ void fn_1_37B0(omObjData* arg0) { } temp_r31->unk_14.x = (temp_r31->unk_2C == 1) ? -90.0f : -68.0f; - + if (temp_r31->unk_2C == 1) { fn_1_4544(3, 0, temp_r31->unk_08.x, 0.0f, 200.0f + temp_r31->unk_08.z); HuAudFXPlay(0x544); @@ -487,7 +506,8 @@ void fn_1_37B0(omObjData* arg0) { fn_1_3BB8((temp_r31->unk_00 >> 2) + 1, temp_r31->unk_08.x, temp_r31->unk_08.z); } lbl_1_bss_66 -= 1; - } else { + } + else { fn_1_4544(2, 0, temp_r31->unk_08.x, 0.0f, 200.0f + temp_r31->unk_08.z); HuAudFXPlay(0x543); } diff --git a/src/REL/m407dll/whomp_score.c b/src/REL/m407dll/whomp_score.c index 5d024e6f..1d985246 100644 --- a/src/REL/m407dll/whomp_score.c +++ b/src/REL/m407dll/whomp_score.c @@ -1,39 +1,42 @@ -#include "src/REL/m407dll/m407dll.h" -#include "game/process.h" -#include "game/object.h" -#include "game/gamework_data.h" #include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/object.h" +#include "game/process.h" +#include "game/sprite.h" + +#include "REL/m407dll.h" typedef struct unkDominationData3 { -/* 0x00 */ u32 unk_00; -/* 0x04 */ s32 unk_04; -/* 0x08 */ Vec unk_08; -/* 0x14 */ s32 unk_14; -/* 0x18 */ s16 unk_18[4]; -/* 0x20 */ f32 unk_20; -} unkDominationData3; //sizeof 0x24 + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s16 unk_18[4]; + /* 0x20 */ f32 unk_20; +} unkDominationData3; // sizeof 0x24 -//function signatures +// function signatures void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2); -void fn_1_3D28(omObjData* arg0, s32 arg1); -void fn_1_3E34(omObjData*); -void fn_1_3F7C(omObjData* arg0); -void fn_1_3FF0(omObjData*); -void fn_1_3FF4(omObjData* arg0); -void fn_1_40F4(omObjData* arg0); +void fn_1_3D28(omObjData *arg0, s32 arg1); +void fn_1_3E34(omObjData *); +void fn_1_3F7C(omObjData *arg0); +void fn_1_3FF0(omObjData *); +void fn_1_3FF4(omObjData *arg0); +void fn_1_40F4(omObjData *arg0); -//bss -Process* lbl_1_bss_37D8; -omObjData* lbl_1_bss_37C8[4]; +// bss +Process *lbl_1_bss_37D8; +omObjData *lbl_1_bss_37C8[4]; -//data +// data ObjFuncs lbl_1_data_278[] = { fn_1_3FF0, fn_1_3FF4, fn_1_40F4, }; -void fn_1_3AC8(Process* arg0) { +void fn_1_3AC8(Process *arg0) +{ u32 i; lbl_1_bss_37D8 = arg0; @@ -44,7 +47,8 @@ void fn_1_3AC8(Process* arg0) { } } -void fn_1_3B68(void) { +void fn_1_3B68(void) +{ u32 i; for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) { @@ -52,10 +56,11 @@ void fn_1_3B68(void) { } } -void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) { - omObjData* obj; +void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) +{ + omObjData *obj; Vec sp14; - unkDominationData3* temp_r31; + unkDominationData3 *temp_r31; u32 i; s16 temp; @@ -66,7 +71,7 @@ void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) { temp = arg0; espBankSet(temp_r31->unk_18[1], (temp / 100)); temp = (temp - ((temp / 100) * 100)); - espBankSet(temp_r31->unk_18[2],(temp / 10)); + espBankSet(temp_r31->unk_18[2], (temp / 10)); temp = (temp - ((temp / 10) * 10)); espBankSet(temp_r31->unk_18[3], temp); sp14.x = arg8; @@ -79,17 +84,19 @@ void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) { } } -void fn_1_3D28(omObjData* arg0, s32 arg1) { - unkDominationData3* temp_r31; +void fn_1_3D28(omObjData *arg0, s32 arg1) +{ + unkDominationData3 *temp_r31; temp_r31 = arg0->data; temp_r31->unk_04 = arg1; temp_r31->unk_14 = 0; } -void fn_1_3D4C(omObjData* arg0) { +void fn_1_3D4C(omObjData *arg0) +{ s32 temp_r5; - unkDominationData3* temp_r31; + unkDominationData3 *temp_r31; temp_r31 = arg0->data; lbl_1_data_278[temp_r31->unk_04](arg0); @@ -100,8 +107,9 @@ void fn_1_3D4C(omObjData* arg0) { espPosSet(temp_r31->unk_18[3], 18.0f + temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f); } -void fn_1_3E34(omObjData* arg0) { - unkDominationData3* temp_r31; +void fn_1_3E34(omObjData *arg0) +{ + unkDominationData3 *temp_r31; arg0->func = fn_1_3D4C; arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData3), MEMORY_DEFAULT_NUM); @@ -109,24 +117,25 @@ void fn_1_3E34(omObjData* arg0) { temp_r31->unk_00 = arg0->work[0]; temp_r31->unk_14 = 0; temp_r31->unk_04 = 0; - temp_r31->unk_18[0] = espEntry(0x260026, 1, 0); - temp_r31->unk_18[1] = espEntry(0x260020, 0, 0); - temp_r31->unk_18[2] = espEntry(0x260020, 0, 0); - temp_r31->unk_18[3] = espEntry(0x260020, 0, 0); + temp_r31->unk_18[0] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x26), 1, 0); + temp_r31->unk_18[1] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x20), 0, 0); + temp_r31->unk_18[2] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x20), 0, 0); + temp_r31->unk_18[3] = espEntry(DATA_MAKE_NUM(DATADIR_M407, 0x20), 0, 0); espDispOff(temp_r31->unk_18[0]); espDispOff(temp_r31->unk_18[1]); espDispOff(temp_r31->unk_18[2]); espDispOff(temp_r31->unk_18[3]); espScaleSet(temp_r31->unk_18[0], 1.8f, 1.8f); - temp_r31->unk_08.x = (f32) 0.0f; - temp_r31->unk_08.y = (f32) 0.0f; + temp_r31->unk_08.x = (f32)0.0f; + temp_r31->unk_08.y = (f32)0.0f; fn_1_3D28(arg0, 0); } -void fn_1_3F7C(omObjData* arg0) { +void fn_1_3F7C(omObjData *arg0) +{ s32 i; - unkDominationData3* temp_r29; - + unkDominationData3 *temp_r29; + temp_r29 = arg0->data; for (i = 0; i < ARRAY_COUNT(temp_r29->unk_18); i++) { @@ -138,12 +147,11 @@ void fn_1_3F7C(omObjData* arg0) { } } -void fn_1_3FF0(omObjData* arg0) { +void fn_1_3FF0(omObjData *arg0) { } -} - -void fn_1_3FF4(omObjData* arg0) { - unkDominationData3* temp_r31; +void fn_1_3FF4(omObjData *arg0) +{ + unkDominationData3 *temp_r31; temp_r31 = arg0->data; if (temp_r31->unk_14 == 0) { @@ -166,8 +174,9 @@ void fn_1_3FF4(omObjData* arg0) { } } -void fn_1_40F4(omObjData* arg0) { - unkDominationData3* temp_r31; +void fn_1_40F4(omObjData *arg0) +{ + unkDominationData3 *temp_r31; temp_r31 = arg0->data; @@ -186,4 +195,3 @@ void fn_1_40F4(omObjData* arg0) { espDispOff(temp_r31->unk_18[3]); fn_1_3D28(arg0, 0); } - diff --git a/src/REL/m408Dll/camera.c b/src/REL/m408Dll/camera.c index 0638ba4d..370848c4 100644 --- a/src/REL/m408Dll/camera.c +++ b/src/REL/m408Dll/camera.c @@ -1,14 +1,14 @@ -#include "game/object.h" -#include "game/objsub.h" -#include "game/wipe.h" #include "game/chrman.h" #include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/pad.h" +#include "game/wipe.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/sprite.h" #include "game/audio.h" @@ -16,8 +16,8 @@ #include "REL/m408Dll.h" -#include "math.h" #include "ext_math.h" +#include "math.h" omObjData *lbl_1_bss_110; u32 lbl_1_bss_10C; @@ -35,13 +35,13 @@ void fn_1_9770(omObjData *object); void fn_1_8958(Process *objman) { - omObjData *object; - lbl_1_bss_10C = 0; - object = omAddObjEx(objman, 20, 9, 0, -1, fn_1_8A20); - object->work[0] = 0; - lbl_1_bss_110 = omAddObjEx(objman, 21, 2, 0, -1, fn_1_9770); - lbl_1_bss_110->work[0] = 0; - lbl_1_bss_84 = lbl_1_bss_80 = -1; + omObjData *object; + lbl_1_bss_10C = 0; + object = omAddObjEx(objman, 20, 9, 0, -1, fn_1_8A20); + object->work[0] = 0; + lbl_1_bss_110 = omAddObjEx(objman, 21, 2, 0, -1, fn_1_9770); + lbl_1_bss_110->work[0] = 0; + lbl_1_bss_84 = lbl_1_bss_80 = -1; } void fn_1_8FAC(omObjData *object); @@ -53,172 +53,175 @@ void fn_1_BDE0(void); void fn_1_8A20(omObjData *object) { - s16 temp_r31; - s32 temp_r29; - for(temp_r29=0; temp_r29<20; temp_r29++) { - lbl_1_bss_A4[temp_r29] = NULL; - } - lbl_1_bss_A0 = 0; - for(temp_r29=0; temp_r29<3; temp_r29++) { - lbl_1_bss_94[temp_r29] = NULL; - lbl_1_bss_88[temp_r29] = 0; - } - object->model[0] = Hu3DModelCreateFile(0x270000); - omSetSca(object, 0.1f, 0.1f, 0.1f); - object->model[1] = Hu3DModelCreateFile(0x270001); - Hu3DModelScaleSet(object->model[1], 0.1f, 0.1f, 0.1f); - Hu3DModelPosSet(object->model[1], 0, 11990, 0); - Hu3DModelShadowMapSet(object->model[1]); - temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000B), 1); - object->model[2] = temp_r31; - Hu3DModelLayerSet(temp_r31, 6); - Hu3DParticleColSet(temp_r31, 255, 255, 255); - Hu3DParticleHookSet(temp_r31, fn_1_A894); - Hu3DModelPosSet(temp_r31, 0, 0, 0); - ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0; - ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 0; - temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 1); - object->model[3] = temp_r31; - Hu3DParticleBlendModeSet(temp_r31, 1); - Hu3DModelLayerSet(temp_r31, 6); - Hu3DParticleColSet(temp_r31, 255, 255, 255); - Hu3DParticleHookSet(temp_r31, fn_1_A894); - Hu3DModelPosSet(temp_r31, 0, 0, 0); - ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0; - ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 1; - temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270011), 1); - object->model[5] = temp_r31; - Hu3DModelLayerSet(temp_r31, 7); - Hu3DParticleColSet(temp_r31, 255, 255, 255); - Hu3DParticleHookSet(temp_r31, fn_1_A894); - Hu3DModelPosSet(temp_r31, 0, 0, 0); - ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0; - ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 2; - temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270010), 8); - object->model[6] = temp_r31; - Hu3DParticleBlendModeSet(temp_r31, 1); - Hu3DModelLayerSet(temp_r31, 6); - Hu3DModelPosSet(temp_r31, 0, 0, 0); - fn_1_B700(temp_r31, 0); - temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000F), 6); - object->model[6] = temp_r31; - Hu3DParticleBlendModeSet(temp_r31, 1); - Hu3DModelLayerSet(temp_r31, 6); - Hu3DModelPosSet(temp_r31, 0, 0, 0); - fn_1_B700(temp_r31, 1); - temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 5); - object->model[6] = temp_r31; - Hu3DParticleBlendModeSet(temp_r31, 1); - Hu3DModelLayerSet(temp_r31, 6); - Hu3DModelPosSet(temp_r31, 0, 0, 0); - fn_1_B700(temp_r31, 2); - fn_1_BB94(); - lbl_1_bss_10C = 1; - object->func = fn_1_8FAC; - object->work[1] = 0; + s16 temp_r31; + s32 temp_r29; + for (temp_r29 = 0; temp_r29 < 20; temp_r29++) { + lbl_1_bss_A4[temp_r29] = NULL; + } + lbl_1_bss_A0 = 0; + for (temp_r29 = 0; temp_r29 < 3; temp_r29++) { + lbl_1_bss_94[temp_r29] = NULL; + lbl_1_bss_88[temp_r29] = 0; + } + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x00)); + omSetSca(object, 0.1f, 0.1f, 0.1f); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x01)); + Hu3DModelScaleSet(object->model[1], 0.1f, 0.1f, 0.1f); + Hu3DModelPosSet(object->model[1], 0, 11990, 0); + Hu3DModelShadowMapSet(object->model[1]); + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x0B)), 1); + object->model[2] = temp_r31; + Hu3DModelLayerSet(temp_r31, 6); + Hu3DParticleColSet(temp_r31, 255, 255, 255); + Hu3DParticleHookSet(temp_r31, fn_1_A894); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0; + ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 0; + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x0D)), 1); + object->model[3] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DParticleColSet(temp_r31, 255, 255, 255); + Hu3DParticleHookSet(temp_r31, fn_1_A894); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0; + ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 1; + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x11)), 1); + object->model[5] = temp_r31; + Hu3DModelLayerSet(temp_r31, 7); + Hu3DParticleColSet(temp_r31, 255, 255, 255); + Hu3DParticleHookSet(temp_r31, fn_1_A894); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0; + ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 2; + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x10)), 8); + object->model[6] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + fn_1_B700(temp_r31, 0); + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x0F)), 6); + object->model[6] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + fn_1_B700(temp_r31, 1); + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x0D)), 5); + object->model[6] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + fn_1_B700(temp_r31, 2); + fn_1_BB94(); + lbl_1_bss_10C = 1; + object->func = fn_1_8FAC; + object->work[1] = 0; } void fn_1_9514(omObjData *object); void fn_1_8FAC(omObjData *object) { - object->work[1]++; - switch(lbl_1_bss_10C) { - case 1: - if(lbl_1_bss_110->work[0] == 4) { - lbl_1_bss_10C = 2; - fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); - object->work[1] = 0; - } - break; - - case 2: - fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); - if(lbl_1_bss_80 < 0) { - lbl_1_bss_80 = HuAudFXPlay(1361); - } - lbl_1_bss_10C = 3; - object->work[1] = 0; - break; - - case 3: - lbl_1_bss_F4.y += -6.666667f; - lbl_1_bss_F4.z += -0.5833334f; - lbl_1_bss_100.y += 20.0f/60.0f; - fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); - if(lbl_1_bss_F4.y > 12010) { - break; - } - if(lbl_1_bss_84 < 0) { - lbl_1_bss_84 = HuAudFXPlay(1357); - } - if(lbl_1_bss_80 >= 0) { - HuAudFXStop(lbl_1_bss_80); - lbl_1_bss_80 = -1; - } - lbl_1_bss_10C = 4; - object->work[1] = 0; - object->work[2] = 0; - break; - - case 4: - if(object->work[1] < 24.0f) { - lbl_1_bss_100.y += 4.0f/12.0f; - fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); - } else { - if(object->work[2] == 0) { - if(!lbl_1_bss_40) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - lbl_1_bss_44 = 1; - } - object->work[2]++; - } - CZoom -= 2.5000002f; - if(object->work[1] < 90.0f) { - break; - } - lbl_1_bss_10C = 5; - object->work[1] = 0; - } - break; - - default: - lbl_1_bss_10C = 5; - break; - } - omSetTra(object, Center.x+(sind(CRot.y)*cosd(CRot.x)*CZoom), Center.y+(-sind(CRot.x)*CZoom), Center.z+(cosd(CRot.y)*cosd(CRot.x)*CZoom)); - fn_1_BDE0(); - if(lbl_1_bss_10C == 5) { - Hu3DModelAttrSet(object->model[0], 1); - Hu3DModelAttrSet(object->model[1], 1); - lbl_1_bss_10C = 5; - object->func = fn_1_9514; - } + object->work[1]++; + switch (lbl_1_bss_10C) { + case 1: + if (lbl_1_bss_110->work[0] == 4) { + lbl_1_bss_10C = 2; + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + object->work[1] = 0; + } + break; + + case 2: + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + if (lbl_1_bss_80 < 0) { + lbl_1_bss_80 = HuAudFXPlay(1361); + } + lbl_1_bss_10C = 3; + object->work[1] = 0; + break; + + case 3: + lbl_1_bss_F4.y += -6.666667f; + lbl_1_bss_F4.z += -0.5833334f; + lbl_1_bss_100.y += 20.0f / 60.0f; + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + if (lbl_1_bss_F4.y > 12010) { + break; + } + if (lbl_1_bss_84 < 0) { + lbl_1_bss_84 = HuAudFXPlay(1357); + } + if (lbl_1_bss_80 >= 0) { + HuAudFXStop(lbl_1_bss_80); + lbl_1_bss_80 = -1; + } + lbl_1_bss_10C = 4; + object->work[1] = 0; + object->work[2] = 0; + break; + + case 4: + if (object->work[1] < 24.0f) { + lbl_1_bss_100.y += 4.0f / 12.0f; + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + } + else { + if (object->work[2] == 0) { + if (!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_44 = 1; + } + object->work[2]++; + } + CZoom -= 2.5000002f; + if (object->work[1] < 90.0f) { + break; + } + lbl_1_bss_10C = 5; + object->work[1] = 0; + } + break; + + default: + lbl_1_bss_10C = 5; + break; + } + omSetTra(object, Center.x + (sind(CRot.y) * cosd(CRot.x) * CZoom), Center.y + (-sind(CRot.x) * CZoom), + Center.z + (cosd(CRot.y) * cosd(CRot.x) * CZoom)); + fn_1_BDE0(); + if (lbl_1_bss_10C == 5) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + lbl_1_bss_10C = 5; + object->func = fn_1_9514; + } } void fn_1_9514(omObjData *object) { - if(!WipeStatGet() && object->work[2] != 0) { - if(!lbl_1_bss_40) { - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - lbl_1_bss_44 = 0; - } - object->work[2] = 0; - } - if(fn_1_6878() >= 4) { - Hu3DModelAttrReset(object->model[0], 1); - } - omSetTra(object, Center.x+(sind(CRot.y)*cosd(CRot.x)*CZoom), Center.y+(-sind(CRot.x)*CZoom)-1000, Center.z+(cosd(CRot.y)*cosd(CRot.x)*CZoom)); + if (!WipeStatGet() && object->work[2] != 0) { + if (!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_44 = 0; + } + object->work[2] = 0; + } + if (fn_1_6878() >= 4) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + omSetTra(object, Center.x + (sind(CRot.y) * cosd(CRot.x) * CZoom), Center.y + (-sind(CRot.x) * CZoom) - 1000, + Center.z + (cosd(CRot.y) * cosd(CRot.x) * CZoom)); } typedef struct work_99C8 { - Vec unk0; - Vec unkC; - Vec unk18; - Vec unk24; - Vec unk30; - Vec unk3C; - s32 unk48[2]; + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + Vec unk30; + Vec unk3C; + s32 unk48[2]; } Work99C8; void fn_1_99C8(omObjData *object); @@ -226,35 +229,35 @@ void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_9770(omObjData *object) { - Work99C8 *temp_r31; - s32 temp_r29; - - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work99C8), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - object->model[0] = Hu3DModelCreateFile(0x27000A); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DMotionSpeedSet(object->model[0], 3.0f); - Hu3DModelShadowSet(object->model[0]); - object->func = fn_1_99C8; - object->work[0] = 0; - object->work[1] = 0; - temp_r31->unk3C.x = temp_r31->unk3C.y = temp_r31->unk3C.z = 0; - temp_r31->unk0.x = temp_r31->unk0.y = temp_r31->unk0.z = 0; - temp_r31->unk0.z = 1000; - omSetTra(object, 0, 12080, -2*temp_r31->unk0.z); - omSetSca(object, 0.5f, 0.5f, 0.5f); - temp_r29 = Hu3DParticleCreate(HuSprAnimReadFile(0x270024), 1024); - object->model[1] = temp_r29; - Hu3DModelLayerSet(temp_r29, 6); - Hu3DParticleColSet(temp_r29, 255, 255, 255); - Hu3DParticleHookSet(temp_r29, fn_1_A37C); - Hu3DModelPosSet(temp_r29, 0, 0, 0); - ((ParticleData *)Hu3DData[temp_r29].unk_120)->unk_00 = 0; - temp_r31->unk30.y = -35; - temp_r31->unk30.z = 350; - temp_r31->unk18.y = 800+object->trans.y; - temp_r31->unk48[0] = temp_r31->unk48[1] = -1; - HuDataDirClose(0x27000A); + Work99C8 *temp_r31; + s32 temp_r29; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work99C8), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x0A)); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[0], 3.0f); + Hu3DModelShadowSet(object->model[0]); + object->func = fn_1_99C8; + object->work[0] = 0; + object->work[1] = 0; + temp_r31->unk3C.x = temp_r31->unk3C.y = temp_r31->unk3C.z = 0; + temp_r31->unk0.x = temp_r31->unk0.y = temp_r31->unk0.z = 0; + temp_r31->unk0.z = 1000; + omSetTra(object, 0, 12080, -2 * temp_r31->unk0.z); + omSetSca(object, 0.5f, 0.5f, 0.5f); + temp_r29 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x24)), 1024); + object->model[1] = temp_r29; + Hu3DModelLayerSet(temp_r29, 6); + Hu3DParticleColSet(temp_r29, 255, 255, 255); + Hu3DParticleHookSet(temp_r29, fn_1_A37C); + Hu3DModelPosSet(temp_r29, 0, 0, 0); + ((ParticleData *)Hu3DData[temp_r29].unk_120)->unk_00 = 0; + temp_r31->unk30.y = -35; + temp_r31->unk30.z = 350; + temp_r31->unk18.y = 800 + object->trans.y; + temp_r31->unk48[0] = temp_r31->unk48[1] = -1; + HuDataDirClose(DATA_MAKE_NUM(DATADIR_M408, 10)); } void fn_1_A334(omObjData *object); @@ -262,567 +265,551 @@ void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2); void fn_1_99C8(omObjData *object) { - float temp_f31; - float temp_f30; - - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - - Work99C8 *temp_r31; - temp_r31 = object->data; - object->trans.x += temp_r31->unk0.x*(1.0f/60.0f); - object->trans.y += temp_r31->unk0.y*(1.0f/60.0f); - object->trans.z += temp_r31->unk0.z*(1.0f/60.0f); - object->work[1]++; - switch(object->work[0]) { - case 0: - if(object->work[1] < 120.0f) { - temp_f30 = (1.0f/60.0f)*(1.5f*(120.0f-object->work[1])); - if(temp_f30 > 1.0f) { - temp_f30 = 1.0f; - } - temp_f31 = temp_r31->unk18.z; - temp_r31->unk30.z -= (175.0f/60.0f)*temp_f30; - temp_r31->unk30.y += 1.1666667f*temp_f30; - temp_r31->unk18.x = object->trans.x+(temp_r31->unk30.z*sind(temp_r31->unk30.y)); - temp_r31->unk18.z = object->trans.z+(temp_r31->unk30.z*cosd(temp_r31->unk30.y)); - temp_r31->unk18.y -= 8.333334f*temp_f30; - temp_r31->unk24.x = 0; - temp_r31->unk24.y = 0; - temp_r31->unk24.z = 0.96f*temp_r31->unk0.z; - } else { - temp_r31->unk18.z += temp_r31->unk24.z*(1.0f/60.0f); - } - temp_r31->unkC.x = object->trans.x; - temp_r31->unkC.y = object->trans.y; - temp_r31->unkC.z = object->trans.z; - sp2C.x = object->trans.x; - sp2C.y = object->trans.y; - sp2C.z = object->trans.z; - if(temp_r31->unk48[0] < 0) { - temp_r31->unk48[0] = HuAudFXEmiterPlay(1362, &sp2C); - } - if(temp_r31->unk48[1] < 0) { - temp_r31->unk48[1] = HuAudFXEmiterPlay(1356, &sp2C); - } - if(object->work[1] < 180.0f) { - break; - } - object->work[0] = 1; - object->work[1] = 0; - break; - - case 1: - temp_r31->unk24.z *= 0.6f; - temp_r31->unk18.z += (temp_r31->unk24.z*(1.0f/60.0f)); - temp_r31->unk18.x += (temp_r31->unk24.z*(1.0f/60.0f)); - temp_r31->unkC.x = object->trans.x; - temp_r31->unkC.y = object->trans.y; - temp_r31->unkC.z = object->trans.z; - if(object->work[1] < 60.0f) { - break; - } - object->work[0] = 2; - object->work[1] = 0; - break; - - case 2: - temp_r31->unk3C.x += 1.5000001f; - temp_r31->unk0.z = 1000.0*cosd(temp_r31->unk3C.x); - temp_r31->unk0.y = 1000.0*sind(temp_r31->unk3C.x); - temp_r31->unkC.x = object->trans.x; - temp_r31->unkC.y = object->trans.y; - temp_r31->unkC.z = object->trans.z; - if(object->work[1] < 120.0f) { - break; - } - object->work[0] = 3; - object->work[1] = 0; - temp_r31->unk3C.x = 180; - break; - - case 3: - temp_r31->unk3C.z += 3.0000002f; - temp_f31 = (1.0f/60.0f)*object->work[1]; - temp_f31 = 1.0f-(temp_f31*temp_f31); - temp_r31->unkC.x += temp_f31*(object->trans.x-temp_r31->unkC.x); - temp_r31->unkC.y += temp_f31*(object->trans.y-temp_r31->unkC.y); - temp_r31->unkC.z += temp_f31*(object->trans.z-temp_r31->unkC.z); - if(object->work[1] < 60.0f) { - break; - } - lbl_1_bss_F4.x = temp_r31->unkC.x; - lbl_1_bss_F4.y = temp_r31->unkC.y; - lbl_1_bss_F4.z = temp_r31->unkC.z; - lbl_1_bss_100.x = temp_r31->unk18.x; - lbl_1_bss_100.y = temp_r31->unk18.y; - lbl_1_bss_100.z = temp_r31->unk18.z; - object->work[0] = 4; - object->work[1] = 0; - break; - - case 4: - temp_r31->unk3C.z += 3.0000002f; - if(object->work[1] > 42.0f) { - if(temp_r31->unk48[0] >= 0) { - HuAudFXStop(temp_r31->unk48[0]); - temp_r31->unk48[0] = -1; - } - if(temp_r31->unk48[1] >= 0) { - HuAudFXStop(temp_r31->unk48[1]); - temp_r31->unk48[1] = -1; - } - } - if(object->work[1] < 240.0f) { - break; - } - object->work[0] = 5; - object->work[1] = 0; - break; - - default: - object->work[0] = 5; - object->func = fn_1_A334; - break; - } - omSetRot(object, -temp_r31->unk3C.x, temp_r31->unk3C.y, temp_r31->unk3C.z); - if(object->trans.y < 12150.0f) { - sp20.x = object->trans.x; - sp20.y = object->trans.y; - sp20.z = object->trans.z+10; - fn_1_A4E8(object->model[1], &sp20, 4); - sp20.x = sp8.x = object->trans.x; - sp20.z = object->trans.z; - sp8.z = object->trans.z-10; - sp20.y = object->trans.y+250.0f; - sp8.y = object->trans.y; - sp14.x = 0; - sp14.y = 0; - sp14.z = 1; - Hu3DShadowPosSet(&sp20, &sp14, &sp8); - } - if(temp_r31->unk48[0] >= 0) { - sp2C.x = object->trans.x-30; - sp2C.y = object->trans.y; - sp2C.z = object->trans.z+25; - HuAudFXEmiterUpDate(temp_r31->unk48[0], &sp2C); - } - if(temp_r31->unk48[1] < 0) { - sp2C.x = object->trans.x+30; - sp2C.y = object->trans.y; - sp2C.z = object->trans.z+25; - HuAudFXEmiterUpDate(temp_r31->unk48[1], &sp2C); - } - if(object->work[0] < 4) { - fn_1_84C4(temp_r31->unk18.x, temp_r31->unk18.y, temp_r31->unk18.z, temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z); - } - if(fn_1_C43C() == 5) { - object->func = fn_1_A334; - } + float temp_f31; + float temp_f30; + + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + Work99C8 *temp_r31; + temp_r31 = object->data; + object->trans.x += temp_r31->unk0.x * (1.0f / 60.0f); + object->trans.y += temp_r31->unk0.y * (1.0f / 60.0f); + object->trans.z += temp_r31->unk0.z * (1.0f / 60.0f); + object->work[1]++; + switch (object->work[0]) { + case 0: + if (object->work[1] < 120.0f) { + temp_f30 = (1.0f / 60.0f) * (1.5f * (120.0f - object->work[1])); + if (temp_f30 > 1.0f) { + temp_f30 = 1.0f; + } + temp_f31 = temp_r31->unk18.z; + temp_r31->unk30.z -= (175.0f / 60.0f) * temp_f30; + temp_r31->unk30.y += 1.1666667f * temp_f30; + temp_r31->unk18.x = object->trans.x + (temp_r31->unk30.z * sind(temp_r31->unk30.y)); + temp_r31->unk18.z = object->trans.z + (temp_r31->unk30.z * cosd(temp_r31->unk30.y)); + temp_r31->unk18.y -= 8.333334f * temp_f30; + temp_r31->unk24.x = 0; + temp_r31->unk24.y = 0; + temp_r31->unk24.z = 0.96f * temp_r31->unk0.z; + } + else { + temp_r31->unk18.z += temp_r31->unk24.z * (1.0f / 60.0f); + } + temp_r31->unkC.x = object->trans.x; + temp_r31->unkC.y = object->trans.y; + temp_r31->unkC.z = object->trans.z; + sp2C.x = object->trans.x; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z; + if (temp_r31->unk48[0] < 0) { + temp_r31->unk48[0] = HuAudFXEmiterPlay(1362, &sp2C); + } + if (temp_r31->unk48[1] < 0) { + temp_r31->unk48[1] = HuAudFXEmiterPlay(1356, &sp2C); + } + if (object->work[1] < 180.0f) { + break; + } + object->work[0] = 1; + object->work[1] = 0; + break; + + case 1: + temp_r31->unk24.z *= 0.6f; + temp_r31->unk18.z += (temp_r31->unk24.z * (1.0f / 60.0f)); + temp_r31->unk18.x += (temp_r31->unk24.z * (1.0f / 60.0f)); + temp_r31->unkC.x = object->trans.x; + temp_r31->unkC.y = object->trans.y; + temp_r31->unkC.z = object->trans.z; + if (object->work[1] < 60.0f) { + break; + } + object->work[0] = 2; + object->work[1] = 0; + break; + + case 2: + temp_r31->unk3C.x += 1.5000001f; + temp_r31->unk0.z = 1000.0 * cosd(temp_r31->unk3C.x); + temp_r31->unk0.y = 1000.0 * sind(temp_r31->unk3C.x); + temp_r31->unkC.x = object->trans.x; + temp_r31->unkC.y = object->trans.y; + temp_r31->unkC.z = object->trans.z; + if (object->work[1] < 120.0f) { + break; + } + object->work[0] = 3; + object->work[1] = 0; + temp_r31->unk3C.x = 180; + break; + + case 3: + temp_r31->unk3C.z += 3.0000002f; + temp_f31 = (1.0f / 60.0f) * object->work[1]; + temp_f31 = 1.0f - (temp_f31 * temp_f31); + temp_r31->unkC.x += temp_f31 * (object->trans.x - temp_r31->unkC.x); + temp_r31->unkC.y += temp_f31 * (object->trans.y - temp_r31->unkC.y); + temp_r31->unkC.z += temp_f31 * (object->trans.z - temp_r31->unkC.z); + if (object->work[1] < 60.0f) { + break; + } + lbl_1_bss_F4.x = temp_r31->unkC.x; + lbl_1_bss_F4.y = temp_r31->unkC.y; + lbl_1_bss_F4.z = temp_r31->unkC.z; + lbl_1_bss_100.x = temp_r31->unk18.x; + lbl_1_bss_100.y = temp_r31->unk18.y; + lbl_1_bss_100.z = temp_r31->unk18.z; + object->work[0] = 4; + object->work[1] = 0; + break; + + case 4: + temp_r31->unk3C.z += 3.0000002f; + if (object->work[1] > 42.0f) { + if (temp_r31->unk48[0] >= 0) { + HuAudFXStop(temp_r31->unk48[0]); + temp_r31->unk48[0] = -1; + } + if (temp_r31->unk48[1] >= 0) { + HuAudFXStop(temp_r31->unk48[1]); + temp_r31->unk48[1] = -1; + } + } + if (object->work[1] < 240.0f) { + break; + } + object->work[0] = 5; + object->work[1] = 0; + break; + + default: + object->work[0] = 5; + object->func = fn_1_A334; + break; + } + omSetRot(object, -temp_r31->unk3C.x, temp_r31->unk3C.y, temp_r31->unk3C.z); + if (object->trans.y < 12150.0f) { + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z + 10; + fn_1_A4E8(object->model[1], &sp20, 4); + sp20.x = sp8.x = object->trans.x; + sp20.z = object->trans.z; + sp8.z = object->trans.z - 10; + sp20.y = object->trans.y + 250.0f; + sp8.y = object->trans.y; + sp14.x = 0; + sp14.y = 0; + sp14.z = 1; + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + } + if (temp_r31->unk48[0] >= 0) { + sp2C.x = object->trans.x - 30; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z + 25; + HuAudFXEmiterUpDate(temp_r31->unk48[0], &sp2C); + } + if (temp_r31->unk48[1] < 0) { + sp2C.x = object->trans.x + 30; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z + 25; + HuAudFXEmiterUpDate(temp_r31->unk48[1], &sp2C); + } + if (object->work[0] < 4) { + fn_1_84C4(temp_r31->unk18.x, temp_r31->unk18.y, temp_r31->unk18.z, temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z); + } + if (fn_1_C43C() == 5) { + object->func = fn_1_A334; + } } void fn_1_A334(omObjData *object) { - Hu3DModelAttrSet(object->model[1], 1); - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); } - void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - if(particle->unk_00 == 0) { - particle->unk_00++; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk00 = 0; - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - } else { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk00_s16) { - temp_r31->unk34.x += temp_r31->unk08.x; - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk34.z += temp_r31->unk08.z; - temp_r31->unk2C += temp_r31->unk14.x; - temp_r31->unk14.y -= temp_r31->unk14.z; - temp_r31->unk40.a = temp_r31->unk14.y; - if(--temp_r31->unk00_s16 == 0) { - temp_r31->unk00_s16 = 0; - temp_r31->unk2C = 0; - temp_r31->unk40.a =0; - } - } - } - DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - } + HsfanimStruct01 *temp_r31; + s32 temp_r29; + if (particle->unk_00 == 0) { + particle->unk_00++; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + else { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk00) { + temp_r31->unk34.x += temp_r31->unk08.x; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z; + temp_r31->unk2C += temp_r31->unk14.x; + temp_r31->unk14.y -= temp_r31->unk14.z; + temp_r31->unk40.a = temp_r31->unk14.y; + if (--temp_r31->unk00 == 0) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + } } void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2) { - float temp_f31; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r30; - s32 temp_r29; - temp_r30 = Hu3DData[arg0].unk_120; - if(temp_r30->unk_00) { - temp_r31 = temp_r30->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk00_s16 != 0) { - continue; - } - temp_r31->unk00_s16 = 60.0f*(((1.5f/1000.0f)*frandmod(1000))+1.0f); - temp_r31->unk34.x = arg1->x; - temp_r31->unk34.y = 12000; - temp_r31->unk34.z = arg1->z; - temp_r31->unk08.x = (1.0f/60.0f)*((0.6f*frandmod(1000))-300.0f); - temp_r31->unk08.y = (1.0f/60.0f)*((0.04f*frandmod(1000))+10.0f); - temp_r31->unk08.z = 0; - temp_r31->unk14.x = 0.3f+((3.0f/1000.0f)*frandmod(1000)); - temp_r31->unk2C = 10; - temp_r31->unk40.a = frandmod(127)+64; - temp_r31->unk14.y = temp_r31->unk40.a; - temp_r31->unk14.z = temp_r31->unk14.y*(1.0f/temp_r31->unk00_s16); - temp_f31 = frandmod(1000)*(1.0f/1000.0f); - temp_r31->unk40.r = (temp_f31*55)+200; - temp_r31->unk40.g = (temp_f31*50)+205; - temp_r31->unk40.b = (temp_f31*5)+250; - if(--arg2 == 0) { - break; - } - } - } + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r29; + temp_r30 = Hu3DData[arg0].unk_120; + if (temp_r30->unk_00) { + temp_r31 = temp_r30->unk_48; + for (temp_r29 = 0; temp_r29 < temp_r30->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk00 != 0) { + continue; + } + temp_r31->unk00 = 60.0f * (((1.5f / 1000.0f) * frandmod(1000)) + 1.0f); + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = 12000; + temp_r31->unk34.z = arg1->z; + temp_r31->unk08.x = (1.0f / 60.0f) * ((0.6f * frandmod(1000)) - 300.0f); + temp_r31->unk08.y = (1.0f / 60.0f) * ((0.04f * frandmod(1000)) + 10.0f); + temp_r31->unk08.z = 0; + temp_r31->unk14.x = 0.3f + ((3.0f / 1000.0f) * frandmod(1000)); + temp_r31->unk2C = 10; + temp_r31->unk40.a = frandmod(127) + 64; + temp_r31->unk14.y = temp_r31->unk40.a; + temp_r31->unk14.z = temp_r31->unk14.y * (1.0f / temp_r31->unk00); + temp_f31 = frandmod(1000) * (1.0f / 1000.0f); + temp_r31->unk40.r = (temp_f31 * 55) + 200; + temp_r31->unk40.g = (temp_f31 * 50) + 205; + temp_r31->unk40.b = (temp_f31 * 5) + 250; + if (--arg2 == 0) { + break; + } + } + } } void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - float sp14[][6] = { - { - 600, 1, 0.95, 0.8, 1, 0 - }, - { - 600, 1, 0.6, 0.9, 0.3, 0 - }, - { - 13, 1, 1, 1, 0.5, 0 - }, - }; - Vec sp8; - if(particle->unk_00 == 0) { - particle->unk_00++; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk00 = 1; - temp_r31->unk2C = sp14[particle->unk_02][0]; - temp_r31->unk40.r = 255*sp14[particle->unk_02][1]; - temp_r31->unk40.g = 255*sp14[particle->unk_02][2]; - temp_r31->unk40.b = 255*sp14[particle->unk_02][3]; - temp_r31->unk40.a = 255*sp14[particle->unk_02][4]; - temp_f31 = -70; - temp_f30 = -10; - temp_r31->unk08.x = sind(temp_f30)*cosd(temp_f31); - temp_r31->unk08.y = -sind(temp_f31); - temp_r31->unk08.z = cosd(temp_f30)*cosd(temp_f31); - } - } else { - particle->unk_00++; - if(particle->unk_00 < 339.0f) { - return; - } - if(particle->unk_00 >= 600.0f) { - particle->unk_00 = 601; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk00 = 0; - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - } else { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk00_s16 == 0) { - continue; - } - sp8.x = sind(CRot.y)*cosd(CRot.x); - sp8.y = -sind(CRot.x); - sp8.z = cosd(CRot.y)*cosd(CRot.x); - if(particle->unk_02 < 2) { - temp_f31 = 4500; - temp_r31->unk34.x = (Center.x+(temp_r31->unk08.x*temp_f31))+(sp8.x*CZoom); - temp_r31->unk34.y = (Center.y+(temp_r31->unk08.y*temp_f31))+(sp8.y*CZoom); - temp_r31->unk34.z = (Center.z+(temp_r31->unk08.z*temp_f31))+(sp8.z*CZoom); - if(particle->unk_02 != 0) { - temp_f31 = -((sp8.x*temp_r31->unk08.x)+(sp8.y*temp_r31->unk08.y)+(sp8.z*temp_r31->unk08.z)); - if(temp_f31 > 0.77f) { - temp_f30 = (1.0f/0.23f)*(temp_f31-0.77f); - temp_r31->unk2C = 1400*temp_f30; - temp_r31->unk40.a = (32.0f*temp_f30)+16.0f; - } else { - temp_r31->unk2C = 0; - } - } - } else { - temp_f31 = CZoom-10; - temp_r31->unk34.x = (sp8.x*temp_f31)+Center.x; - temp_r31->unk34.y = (sp8.y*temp_f31)+Center.y; - temp_r31->unk34.z = (sp8.z*temp_f31)+Center.z; - temp_f31 = -((sp8.x*temp_r31->unk08.x)+(sp8.y*temp_r31->unk08.y)+(sp8.z*temp_r31->unk08.z)); - if(temp_f31 > 0.9f) { - temp_f30 = 10.0f*(temp_f31-0.9f); - temp_r31->unk40.a = temp_f30*210.0f; - } else { - temp_r31->unk40.a = 0; - } - } - } - DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - } - } + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + float sp14[][6] = { + { 600, 1, 0.95, 0.8, 1, 0 }, + { 600, 1, 0.6, 0.9, 0.3, 0 }, + { 13, 1, 1, 1, 0.5, 0 }, + }; + Vec sp8; + if (particle->unk_00 == 0) { + particle->unk_00++; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 1; + temp_r31->unk2C = sp14[particle->unk_02][0]; + temp_r31->unk40.r = 255 * sp14[particle->unk_02][1]; + temp_r31->unk40.g = 255 * sp14[particle->unk_02][2]; + temp_r31->unk40.b = 255 * sp14[particle->unk_02][3]; + temp_r31->unk40.a = 255 * sp14[particle->unk_02][4]; + temp_f31 = -70; + temp_f30 = -10; + temp_r31->unk08.x = sind(temp_f30) * cosd(temp_f31); + temp_r31->unk08.y = -sind(temp_f31); + temp_r31->unk08.z = cosd(temp_f30) * cosd(temp_f31); + } + } + else { + particle->unk_00++; + if (particle->unk_00 < 339.0f) { + return; + } + if (particle->unk_00 >= 600.0f) { + particle->unk_00 = 601; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + else { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk00 == 0) { + continue; + } + sp8.x = sind(CRot.y) * cosd(CRot.x); + sp8.y = -sind(CRot.x); + sp8.z = cosd(CRot.y) * cosd(CRot.x); + if (particle->unk_02 < 2) { + temp_f31 = 4500; + temp_r31->unk34.x = (Center.x + (temp_r31->unk08.x * temp_f31)) + (sp8.x * CZoom); + temp_r31->unk34.y = (Center.y + (temp_r31->unk08.y * temp_f31)) + (sp8.y * CZoom); + temp_r31->unk34.z = (Center.z + (temp_r31->unk08.z * temp_f31)) + (sp8.z * CZoom); + if (particle->unk_02 != 0) { + temp_f31 = -((sp8.x * temp_r31->unk08.x) + (sp8.y * temp_r31->unk08.y) + (sp8.z * temp_r31->unk08.z)); + if (temp_f31 > 0.77f) { + temp_f30 = (1.0f / 0.23f) * (temp_f31 - 0.77f); + temp_r31->unk2C = 1400 * temp_f30; + temp_r31->unk40.a = (32.0f * temp_f30) + 16.0f; + } + else { + temp_r31->unk2C = 0; + } + } + } + else { + temp_f31 = CZoom - 10; + temp_r31->unk34.x = (sp8.x * temp_f31) + Center.x; + temp_r31->unk34.y = (sp8.y * temp_f31) + Center.y; + temp_r31->unk34.z = (sp8.z * temp_f31) + Center.z; + temp_f31 = -((sp8.x * temp_r31->unk08.x) + (sp8.y * temp_r31->unk08.y) + (sp8.z * temp_r31->unk08.z)); + if (temp_f31 > 0.9f) { + temp_f30 = 10.0f * (temp_f31 - 0.9f); + temp_r31->unk40.a = temp_f30 * 210.0f; + } + else { + temp_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + } + } } void fn_1_AFF4(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r30; - s32 temp_r29; - Vec sp20; - Vec sp14; - Vec sp8; - if(particle->unk_00 == 0) { - particle->unk_00++; - temp_f31 = -70; - temp_f30 = -10; - particle->unk_04.x = sind(temp_f30)*cosd(temp_f31); - particle->unk_04.y = -sind(temp_f31); - particle->unk_04.z = cosd(temp_f30)*cosd(temp_f31); - temp_f31 = 0; - temp_r30 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { - temp_r30->unk00 = 1; - temp_f31 += 1.0f/particle->unk_30; - temp_r30->unk2C = 40.0f+((1.0f-temp_f31)*(100.0f+frandmod(1000))); - temp_r30->unk40.r = frandmod(127)+128; - temp_r30->unk40.g = frandmod(127)+128; - temp_r30->unk40.b = frandmod(127)+128; - temp_r30->unk40.a = frandmod(16)+16; - } - } else { - particle->unk_00++; - if(particle->unk_00 < 339.0f) { - return; - } - if(particle->unk_00 >= 600.0f) { - particle->unk_00 = 601; - temp_r30 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { - temp_r30->unk00 = 0; - temp_r30->unk2C = 0; - temp_r30->unk40.a = 0; - } - } else { - sp20.x = sind(CRot.y)*cosd(CRot.x); - sp20.y = -sind(CRot.x); - sp20.z = cosd(CRot.y)*cosd(CRot.x); - temp_f31 = -((-particle->unk_04.x*-sp20.x)+(-particle->unk_04.y*-sp20.y)+(-particle->unk_04.z*-sp20.z)); - sp14.x = -sp20.x+(-2.0f*particle->unk_04.x*temp_f31); - sp14.y = -sp20.y+(-2.0f*particle->unk_04.y*temp_f31); - sp14.z = -sp20.z+(-2.0f*particle->unk_04.z*temp_f31); - temp_f31 = 4500; - sp8.x = (Center.x+(particle->unk_04.x*temp_f31))+(sp20.x*CZoom); - sp8.y = (Center.y+(particle->unk_04.y*temp_f31))+(sp20.y*CZoom); - sp8.z = (Center.z+(particle->unk_04.z*temp_f31))+(sp20.z*CZoom); - temp_r30 = particle->unk_48; - temp_f30 = 0; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { - if(temp_r30->unk00_s16 == 0) { - continue; - } - temp_f30 += 1.0f/particle->unk_30; - temp_f31 = 10.0f*(430.0f*(1.0f-((1.0f-temp_f30)*(1.0f-temp_f30)))); - temp_r30->unk34.x = sp8.x+(sp14.x*temp_f31); - temp_r30->unk34.y = sp8.y+(sp14.y*temp_f31); - temp_r30->unk34.z = sp8.z+(sp14.z*temp_f31); - } - DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - } - } + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r30; + s32 temp_r29; + Vec sp20; + Vec sp14; + Vec sp8; + if (particle->unk_00 == 0) { + particle->unk_00++; + temp_f31 = -70; + temp_f30 = -10; + particle->unk_04.x = sind(temp_f30) * cosd(temp_f31); + particle->unk_04.y = -sind(temp_f31); + particle->unk_04.z = cosd(temp_f30) * cosd(temp_f31); + temp_f31 = 0; + temp_r30 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r30++) { + temp_r30->unk00 = 1; + temp_f31 += 1.0f / particle->unk_30; + temp_r30->unk2C = 40.0f + ((1.0f - temp_f31) * (100.0f + frandmod(1000))); + temp_r30->unk40.r = frandmod(127) + 128; + temp_r30->unk40.g = frandmod(127) + 128; + temp_r30->unk40.b = frandmod(127) + 128; + temp_r30->unk40.a = frandmod(16) + 16; + } + } + else { + particle->unk_00++; + if (particle->unk_00 < 339.0f) { + return; + } + if (particle->unk_00 >= 600.0f) { + particle->unk_00 = 601; + temp_r30 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r30++) { + temp_r30->unk00 = 0; + temp_r30->unk2C = 0; + temp_r30->unk40.a = 0; + } + } + else { + sp20.x = sind(CRot.y) * cosd(CRot.x); + sp20.y = -sind(CRot.x); + sp20.z = cosd(CRot.y) * cosd(CRot.x); + temp_f31 = -((-particle->unk_04.x * -sp20.x) + (-particle->unk_04.y * -sp20.y) + (-particle->unk_04.z * -sp20.z)); + sp14.x = -sp20.x + (-2.0f * particle->unk_04.x * temp_f31); + sp14.y = -sp20.y + (-2.0f * particle->unk_04.y * temp_f31); + sp14.z = -sp20.z + (-2.0f * particle->unk_04.z * temp_f31); + temp_f31 = 4500; + sp8.x = (Center.x + (particle->unk_04.x * temp_f31)) + (sp20.x * CZoom); + sp8.y = (Center.y + (particle->unk_04.y * temp_f31)) + (sp20.y * CZoom); + sp8.z = (Center.z + (particle->unk_04.z * temp_f31)) + (sp20.z * CZoom); + temp_r30 = particle->unk_48; + temp_f30 = 0; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r30++) { + if (temp_r30->unk00 == 0) { + continue; + } + temp_f30 += 1.0f / particle->unk_30; + temp_f31 = 10.0f * (430.0f * (1.0f - ((1.0f - temp_f30) * (1.0f - temp_f30)))); + temp_r30->unk34.x = sp8.x + (sp14.x * temp_f31); + temp_r30->unk34.y = sp8.y + (sp14.y * temp_f31); + temp_r30->unk34.z = sp8.z + (sp14.z * temp_f31); + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + } + } } void fn_1_B700(s16 arg0, u32 arg1) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r30; - s32 temp_r29; - s32 temp_r27; - float sp1C[] = { - 0.4f, 0.21f, 0.16f, 1.0f - }; - float spC[] = { - 0.15f, 0.6f, 1.3f, 1.0f - }; - s16 sp2C[] = { - 1, 0, - 2, 0, - 0, 1, - 2, 0, - 0, 1, - 2, 1, - 0, 0, - 1, 2, - 0, 1, - 2, -1 - }; - arg1 &= 0x3; - temp_r30 = Hu3DData[arg0].unk_120; - temp_r30->unk_00 = 1; - temp_f31 = -70; - temp_f30 = -10; - temp_r30->unk_04.x = sind(temp_f30)*cosd(temp_f31); - temp_r30->unk_04.y = -sind(temp_f31); - temp_r30->unk_04.z = cosd(temp_f30)*cosd(temp_f31); - temp_r31 = temp_r30->unk_48; - for(temp_r27=0; temp_r27unk_30; temp_r27++, temp_r31++) { - temp_r31->unk00 = 1; - temp_r31->unk02 = arg1; - for(temp_r29=0; sp2C[temp_r29] >= 0; temp_r29++) { - if(arg1 != sp2C[temp_r29]) { - continue; - } - if(lbl_1_bss_A4[temp_r29] == NULL) { - break; - } - } - if(sp2C[temp_r29] < 0) { - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - continue; - } - lbl_1_bss_A4[temp_r29] = temp_r31; - lbl_1_bss_A0++; - temp_r31->unk2C = 800.0f*(spC[arg1]*(1.0f+((0.7f/1000.0f)*frandmod(1000)))); - temp_r31->unk40.r = frandmod(160)+32; - temp_r31->unk40.g = frandmod(160)+32; - temp_r31->unk40.b = frandmod(160)+32; - temp_r31->unk40.a = (255.0f*sp1C[arg1])-frandmod(16); - } - lbl_1_bss_94[arg1] = temp_r30->unk_48; - lbl_1_bss_88[arg1] = temp_r30->unk_30; + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r29; + s32 temp_r27; + float sp1C[] = { 0.4f, 0.21f, 0.16f, 1.0f }; + float spC[] = { 0.15f, 0.6f, 1.3f, 1.0f }; + s16 sp2C[] = { 1, 0, 2, 0, 0, 1, 2, 0, 0, 1, 2, 1, 0, 0, 1, 2, 0, 1, 2, -1 }; + arg1 &= 0x3; + temp_r30 = Hu3DData[arg0].unk_120; + temp_r30->unk_00 = 1; + temp_f31 = -70; + temp_f30 = -10; + temp_r30->unk_04.x = sind(temp_f30) * cosd(temp_f31); + temp_r30->unk_04.y = -sind(temp_f31); + temp_r30->unk_04.z = cosd(temp_f30) * cosd(temp_f31); + temp_r31 = temp_r30->unk_48; + for (temp_r27 = 0; temp_r27 < temp_r30->unk_30; temp_r27++, temp_r31++) { + temp_r31->unk00 = 1; + temp_r31->unk02 = arg1; + for (temp_r29 = 0; sp2C[temp_r29] >= 0; temp_r29++) { + if (arg1 != sp2C[temp_r29]) { + continue; + } + if (lbl_1_bss_A4[temp_r29] == NULL) { + break; + } + } + if (sp2C[temp_r29] < 0) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + continue; + } + lbl_1_bss_A4[temp_r29] = temp_r31; + lbl_1_bss_A0++; + temp_r31->unk2C = 800.0f * (spC[arg1] * (1.0f + ((0.7f / 1000.0f) * frandmod(1000)))); + temp_r31->unk40.r = frandmod(160) + 32; + temp_r31->unk40.g = frandmod(160) + 32; + temp_r31->unk40.b = frandmod(160) + 32; + temp_r31->unk40.a = (255.0f * sp1C[arg1]) - frandmod(16); + } + lbl_1_bss_94[arg1] = temp_r30->unk_48; + lbl_1_bss_88[arg1] = temp_r30->unk_30; } void fn_1_BB94(void) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - s32 temp_r30; - float sp18[] = { - 0.02f, 0.08f, 0.07f, 0.5f - }; - float sp8[] = { - 0.0009f, 0.00020000001f, 0.00001f, 0.0005f - }; - temp_f31 = 0.1f; - for(temp_r30=0; temp_r30unk02]*(1.0f+(frandmod(1000)*sp8[temp_r31->unk02]))); - temp_f31 += temp_f30; - temp_r31->unk14.x = temp_f31; - temp_f31 += temp_f30; - } - temp_f31 = 1.0f/temp_f31; - for(temp_r30=0; temp_r30unk14.x *= temp_f31; - temp_r31->unk2C *= (0.8f-(0.4f*temp_r31->unk14.x)); - temp_r31->unk14.x = 10.0f*(400.0f*temp_r31->unk14.x); - } - for(temp_r30=0; temp_r30<3; temp_r30++) { - DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30]*sizeof(HsfanimStruct01)); - } - PPCSync(); + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r30; + float sp18[] = { 0.02f, 0.08f, 0.07f, 0.5f }; + float sp8[] = { 0.0009f, 0.00020000001f, 0.00001f, 0.0005f }; + temp_f31 = 0.1f; + for (temp_r30 = 0; temp_r30 < lbl_1_bss_A0; temp_r30++) { + temp_r31 = lbl_1_bss_A4[temp_r30]; + temp_f30 = 0.5f * (sp18[temp_r31->unk02] * (1.0f + (frandmod(1000) * sp8[temp_r31->unk02]))); + temp_f31 += temp_f30; + temp_r31->unk14.x = temp_f31; + temp_f31 += temp_f30; + } + temp_f31 = 1.0f / temp_f31; + for (temp_r30 = 0; temp_r30 < lbl_1_bss_A0; temp_r30++) { + temp_r31 = lbl_1_bss_A4[temp_r30]; + temp_r31->unk14.x *= temp_f31; + temp_r31->unk2C *= (0.8f - (0.4f * temp_r31->unk14.x)); + temp_r31->unk14.x = 10.0f * (400.0f * temp_r31->unk14.x); + } + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30] * sizeof(HsfanimStruct01)); + } + PPCSync(); } void fn_1_BDE0(void) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - s32 temp_r30; - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - temp_r31 = lbl_1_bss_A4[0]; - temp_r31->unk00_s16++; - if(temp_r31->unk00_s16 < 339.0f) { - return; - } - if(temp_r31->unk00_s16 >= 600.0f) { - temp_r31->unk00_s16 = 601; - for(temp_r30=0; temp_r30unk00_s16 = 0; - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - return; - } - sp2C.x = sind(CRot.y)*cosd(CRot.x); - sp2C.y = -sind(CRot.x); - sp2C.z = cosd(CRot.y)*cosd(CRot.x); - temp_f31 = -70; - temp_f30 = -10; - sp20.x = sind(temp_f30)*cosd(temp_f31); - sp20.y = -sind(temp_f31); - sp20.z = cosd(temp_f30)*cosd(temp_f31); - temp_f31 = 4500; - sp8.x = (Center.x+(sp20.x*temp_f31))+(sp2C.x*CZoom); - sp8.y = (Center.y+(sp20.y*temp_f31))+(sp2C.y*CZoom); - sp8.z = (Center.z+(sp20.z*temp_f31))+(sp2C.z*CZoom); - temp_f31 = -((-sp20.x*-sp2C.x)+(-sp20.y*-sp2C.y)+(-sp20.z*-sp2C.z)); - sp14.x = -sp2C.x+(-2.0f*sp20.x*temp_f31); - sp14.y = -sp2C.y+(-2.0f*sp20.y*temp_f31); - sp14.z = -sp2C.z+(-2.0f*sp20.z*temp_f31); - if(temp_f31 > 0.5f) { - temp_f30 = 3.0f-(2.0f*temp_f31); - } else { - temp_f30 = 1.0f; - } - for(temp_r30=0; temp_r30unk34.x = sp8.x+(temp_f30*(sp14.x*temp_r31->unk14.x)); - temp_r31->unk34.y = sp8.y+(temp_f30*(sp14.y*temp_r31->unk14.x)); - temp_r31->unk34.z = sp8.z+(temp_f30*(sp14.z*temp_r31->unk14.x)); - } - for(temp_r30=0; temp_r30<3; temp_r30++) { - DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30]*sizeof(HsfanimStruct01)); - } - PPCSync(); + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r30; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + temp_r31 = lbl_1_bss_A4[0]; + temp_r31->unk00++; + if (temp_r31->unk00 < 339.0f) { + return; + } + if (temp_r31->unk00 >= 600.0f) { + temp_r31->unk00 = 601; + for (temp_r30 = 0; temp_r30 < lbl_1_bss_A0; temp_r30++) { + temp_r31 = lbl_1_bss_A4[temp_r30]; + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + return; + } + sp2C.x = sind(CRot.y) * cosd(CRot.x); + sp2C.y = -sind(CRot.x); + sp2C.z = cosd(CRot.y) * cosd(CRot.x); + temp_f31 = -70; + temp_f30 = -10; + sp20.x = sind(temp_f30) * cosd(temp_f31); + sp20.y = -sind(temp_f31); + sp20.z = cosd(temp_f30) * cosd(temp_f31); + temp_f31 = 4500; + sp8.x = (Center.x + (sp20.x * temp_f31)) + (sp2C.x * CZoom); + sp8.y = (Center.y + (sp20.y * temp_f31)) + (sp2C.y * CZoom); + sp8.z = (Center.z + (sp20.z * temp_f31)) + (sp2C.z * CZoom); + temp_f31 = -((-sp20.x * -sp2C.x) + (-sp20.y * -sp2C.y) + (-sp20.z * -sp2C.z)); + sp14.x = -sp2C.x + (-2.0f * sp20.x * temp_f31); + sp14.y = -sp2C.y + (-2.0f * sp20.y * temp_f31); + sp14.z = -sp2C.z + (-2.0f * sp20.z * temp_f31); + if (temp_f31 > 0.5f) { + temp_f30 = 3.0f - (2.0f * temp_f31); + } + else { + temp_f30 = 1.0f; + } + for (temp_r30 = 0; temp_r30 < lbl_1_bss_A0; temp_r30++) { + temp_r31 = lbl_1_bss_A4[temp_r30]; + temp_r31->unk34.x = sp8.x + (temp_f30 * (sp14.x * temp_r31->unk14.x)); + temp_r31->unk34.y = sp8.y + (temp_f30 * (sp14.y * temp_r31->unk14.x)); + temp_r31->unk34.z = sp8.z + (temp_f30 * (sp14.z * temp_r31->unk14.x)); + } + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30] * sizeof(HsfanimStruct01)); + } + PPCSync(); } void fn_1_C3C0(Vec *arg0, Vec *arg1) { - arg0->x = lbl_1_bss_110->trans.x; - arg0->y = lbl_1_bss_110->trans.y; - arg0->z = lbl_1_bss_110->trans.z; - arg1->x = lbl_1_bss_110->rot.x; - arg1->y = lbl_1_bss_110->rot.y; - arg1->z = lbl_1_bss_110->rot.z; + arg0->x = lbl_1_bss_110->trans.x; + arg0->y = lbl_1_bss_110->trans.y; + arg0->z = lbl_1_bss_110->trans.z; + arg1->x = lbl_1_bss_110->rot.x; + arg1->y = lbl_1_bss_110->rot.y; + arg1->z = lbl_1_bss_110->rot.z; } u32 fn_1_C43C(void) { - return lbl_1_bss_10C; -} \ No newline at end of file + return lbl_1_bss_10C; +} diff --git a/src/REL/m408Dll/main.c b/src/REL/m408Dll/main.c index 63e82391..fa04e61a 100644 --- a/src/REL/m408Dll/main.c +++ b/src/REL/m408Dll/main.c @@ -1,14 +1,14 @@ -#include "game/object.h" -#include "game/objsub.h" -#include "game/wipe.h" #include "game/chrman.h" #include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/pad.h" +#include "game/wipe.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/sprite.h" #include "game/audio.h" @@ -16,29 +16,28 @@ #include "REL/m408Dll.h" -#include "math.h" #include "ext_math.h" +#include "math.h" -#include "rel_sqrt_consts.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif s32 lbl_1_data_0[] = { - 0x610000, - 0x610001, - 0x610002, - 0x610003, - 0x610004, - 0x610005, - 0x610006, - 0x610007 + DATA_MAKE_NUM(DATADIR_MGCONST, 0x00), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x01), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x02), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x03), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x04), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x05), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x06), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x07), }; Vec lbl_1_data_20 = { 150, 1250, 150 }; Vec lbl_1_data_2C = { -0.1, -0.8, 0.1 }; GXColor lbl_1_data_38 = { 255, 255, 255, 255 }; -Vec lbl_1_data_3C[] = { - { 0, -2000, 0 }, - { 0, 1, 0} -}; +Vec lbl_1_data_3C[] = { { 0, -2000, 0 }, { 0, 1, 0 } }; GXColor lbl_1_data_54 = { 255, 255, 255, 255 }; Vec lbl_1_data_58 = { 50, 15000, 50 }; Vec lbl_1_data_64 = { 0, 1, 0 }; @@ -81,53 +80,53 @@ void fn_1_25D4(Process *objman); void ObjectSetup(void) { - s32 temp_r31; - Process *temp_r30; - s16 temp_r29; - LightData *temp_r28; - Vec sp14 = { 0, 0, 0 }; - Vec sp8 = { 0, 0, -1 }; - HuAudSndGrpSet(33); - HuAudFXListnerSetEX(&sp14, &sp8, 6000, 3656.6667f, 0, 300, 300); - lbl_1_bss_1C = lbl_1_bss_18 = lbl_1_bss_14 = lbl_1_bss_10 = -1; - lbl_1_bss_C = 0; - lbl_1_bss_44 = 1; - lbl_1_bss_40 = 0; - temp_r29 = Hu3DGLightCreateV(&lbl_1_data_20, &lbl_1_data_2C, &lbl_1_data_38); - Hu3DGLightInfinitytSet(temp_r29); - temp_r28 = &Hu3DGlobalLight[temp_r29]; - temp_r28->unk_00 |= 0x8000; - Hu3DShadowCreate(30, 100, 25000); - Hu3DShadowTPLvlSet(0.3f); - Hu3DShadowPosSet(&lbl_1_data_58, &lbl_1_data_64, &lbl_1_data_70); - temp_r30 = omInitObjMan(50, 8192); - omGameSysInit(temp_r30); - for(temp_r31=0; temp_r31<4; temp_r31++) { - CRotM[temp_r31].x = 324.3f; - CRotM[temp_r31].y = 0; - CRotM[temp_r31].z = 0; - CenterM[temp_r31].x = 0; - CenterM[temp_r31].y = 130; - CenterM[temp_r31].z = 224; - CZoomM[temp_r31] = 220; - } - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, -1, 5, 25000, (4.0f/3.0f)); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - lbl_1_bss_70 = omAddObjEx(temp_r30, 32730, 0, 0, -1, omOutView); - lbl_1_bss_62 = 0; - lbl_1_bss_60 = 0; - lbl_1_bss_48 = 0; - lbl_1_bss_78 = omAddObjEx(temp_r30, 10, 0, 0, -1, fn_1_51C); - lbl_1_bss_3C = 0; - for(temp_r31=0; temp_r31<5; temp_r31++) { - lbl_1_bss_28[temp_r31] = -1; - } - lbl_1_bss_74 = omAddObjEx(temp_r30, 50, 0, 0, -1, fn_1_9F0); - fn_1_25D4(temp_r30); - fn_1_C44C(temp_r30); - fn_1_118D0(temp_r30); - fn_1_8958(temp_r30); + s32 temp_r31; + Process *temp_r30; + s16 temp_r29; + LightData *temp_r28; + Vec sp14 = { 0, 0, 0 }; + Vec sp8 = { 0, 0, -1 }; + HuAudSndGrpSet(33); + HuAudFXListnerSetEX(&sp14, &sp8, 6000, 3656.6667f, 0, 300, 300); + lbl_1_bss_1C = lbl_1_bss_18 = lbl_1_bss_14 = lbl_1_bss_10 = -1; + lbl_1_bss_C = 0; + lbl_1_bss_44 = 1; + lbl_1_bss_40 = 0; + temp_r29 = Hu3DGLightCreateV(&lbl_1_data_20, &lbl_1_data_2C, &lbl_1_data_38); + Hu3DGLightInfinitytSet(temp_r29); + temp_r28 = &Hu3DGlobalLight[temp_r29]; + temp_r28->unk_00 |= 0x8000; + Hu3DShadowCreate(30, 100, 25000); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowPosSet(&lbl_1_data_58, &lbl_1_data_64, &lbl_1_data_70); + temp_r30 = omInitObjMan(50, 8192); + omGameSysInit(temp_r30); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + CRotM[temp_r31].x = 324.3f; + CRotM[temp_r31].y = 0; + CRotM[temp_r31].z = 0; + CenterM[temp_r31].x = 0; + CenterM[temp_r31].y = 130; + CenterM[temp_r31].z = 224; + CZoomM[temp_r31] = 220; + } + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1, 5, 25000, (4.0f / 3.0f)); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_1_bss_70 = omAddObjEx(temp_r30, 32730, 0, 0, -1, omOutView); + lbl_1_bss_62 = 0; + lbl_1_bss_60 = 0; + lbl_1_bss_48 = 0; + lbl_1_bss_78 = omAddObjEx(temp_r30, 10, 0, 0, -1, fn_1_51C); + lbl_1_bss_3C = 0; + for (temp_r31 = 0; temp_r31 < 5; temp_r31++) { + lbl_1_bss_28[temp_r31] = -1; + } + lbl_1_bss_74 = omAddObjEx(temp_r30, 50, 0, 0, -1, fn_1_9F0); + fn_1_25D4(temp_r30); + fn_1_C44C(temp_r30); + fn_1_118D0(temp_r30); + fn_1_8958(temp_r30); } void fn_1_56C(omObjData *object); @@ -135,95 +134,94 @@ void fn_1_9A4(omObjData *object); void fn_1_51C(omObjData *object) { - lbl_1_bss_66 = 30; - lbl_1_bss_64 = 60; - lbl_1_bss_4C = 4; - lbl_1_bss_62 = 0; - object->func = fn_1_56C; + lbl_1_bss_66 = 30; + lbl_1_bss_64 = 60; + lbl_1_bss_4C = 4; + lbl_1_bss_62 = 0; + object->func = fn_1_56C; } - void fn_1_56C(omObjData *object) { - s32 temp_r30 = 0; - Vec sp14; - Vec sp8; - switch(lbl_1_bss_62) { - case 0: - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - lbl_1_bss_44 = 0; - Hu3DCameraPerspectiveSet(1, 50, 5, 25000, (4.0f/3.0f)); - lbl_1_bss_62 = 1; - break; - - case 1: - if(fn_1_C43C() == 5) { - lbl_1_bss_62 = 2; - } - break; - - case 2: - if(fn_1_6878() == 5) { - object->work[0] = 0; - lbl_1_bss_62 = 3; - } - break; - - case 3: - if(lbl_1_bss_4C == 0 || WipeStatGet() == 0) { - if(++object->work[0] >= 210.0f) { - lbl_1_bss_62 = 4; - } - } - break; - - case 4: - lbl_1_bss_62 = 5; - break; - - case 5: - if(fn_1_C43C() == 5) { - temp_r30 = 1; - lbl_1_bss_62 = 5; - } - break; - } - sp8.x = -(sind(CRot.y)*cosd(CRot.x)); - sp8.y = -(-sind(CRot.x)); - sp8.z = -(cosd(CRot.y)*cosd(CRot.x)); - sp14.x = Center.x-(sp8.x*CZoom); - sp14.y = Center.y-(sp8.y*CZoom); - sp14.z = Center.z-(sp8.z*CZoom); - HuAudFXListnerUpdate(&sp14, &sp8); - if((omSysExitReq && !WipeStatGet()) && !lbl_1_bss_44 || temp_r30) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - lbl_1_bss_44 = 1; - lbl_1_bss_40 = 1; - if(lbl_1_bss_10 >= 0) { - HuAudFXFadeOut(lbl_1_bss_10, 30); - } - object->func = fn_1_9A4; - } + s32 temp_r30 = 0; + Vec sp14; + Vec sp8; + switch (lbl_1_bss_62) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_44 = 0; + Hu3DCameraPerspectiveSet(1, 50, 5, 25000, (4.0f / 3.0f)); + lbl_1_bss_62 = 1; + break; + + case 1: + if (fn_1_C43C() == 5) { + lbl_1_bss_62 = 2; + } + break; + + case 2: + if (fn_1_6878() == 5) { + object->work[0] = 0; + lbl_1_bss_62 = 3; + } + break; + + case 3: + if (lbl_1_bss_4C == 0 || WipeStatGet() == 0) { + if (++object->work[0] >= 210.0f) { + lbl_1_bss_62 = 4; + } + } + break; + + case 4: + lbl_1_bss_62 = 5; + break; + + case 5: + if (fn_1_C43C() == 5) { + temp_r30 = 1; + lbl_1_bss_62 = 5; + } + break; + } + sp8.x = -(sind(CRot.y) * cosd(CRot.x)); + sp8.y = -(-sind(CRot.x)); + sp8.z = -(cosd(CRot.y) * cosd(CRot.x)); + sp14.x = Center.x - (sp8.x * CZoom); + sp14.y = Center.y - (sp8.y * CZoom); + sp14.z = Center.z - (sp8.z * CZoom); + HuAudFXListnerUpdate(&sp14, &sp8); + if ((omSysExitReq && !WipeStatGet()) && !lbl_1_bss_44 || temp_r30) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_44 = 1; + lbl_1_bss_40 = 1; + if (lbl_1_bss_10 >= 0) { + HuAudFXFadeOut(lbl_1_bss_10, 30); + } + object->func = fn_1_9A4; + } } void fn_1_9A4(omObjData *object) { - if(!WipeStatGet()) { - CharModelKill(-1); - MGSeqKillAll(); - HuAudFadeOut(1); - omOvlReturnEx(1, 1); - } + if (!WipeStatGet()) { + CharModelKill(-1); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } } void fn_1_A40(omObjData *object); void fn_1_9F0(omObjData *object) { - lbl_1_bss_54 = 12000; - lbl_1_bss_50 = 0; - lbl_1_bss_60 = 0; - object->func = fn_1_A40; + lbl_1_bss_54 = 12000; + lbl_1_bss_50 = 0; + lbl_1_bss_60 = 0; + object->func = fn_1_A40; } void fn_1_CD8(omObjData *object); @@ -232,41 +230,41 @@ u32 fn_1_6868(void); void fn_1_A40(omObjData *object) { - if(fn_1_6868() != 2) { - return; - } - switch(lbl_1_bss_60) { - case 0: - Hu3DCameraPerspectiveSet(1, 35, 5, 25000, (4.0f/3.0f)); - CRot.x = -80.5f; - CRot.y = CRot.z = 0; - Center.x = 0; - Center.y = lbl_1_bss_54; - Center.z = 0; - CZoom = 260; - lbl_1_bss_60 = 1; - break; - - case 1: - lbl_1_bss_24 = MGSeqStartCreate(); - MGSeqPosSet(lbl_1_bss_24, 320, 240); - lbl_1_bss_60 = 2; + if (fn_1_6868() != 2) { + return; + } + switch (lbl_1_bss_60) { + case 0: + Hu3DCameraPerspectiveSet(1, 35, 5, 25000, (4.0f / 3.0f)); + CRot.x = -80.5f; + CRot.y = CRot.z = 0; + Center.x = 0; + Center.y = lbl_1_bss_54; + Center.z = 0; + CZoom = 260; + lbl_1_bss_60 = 1; + break; - - case 2: - Center.y = lbl_1_bss_54; - lbl_1_bss_50 = -400.0f;; - lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); - if(lbl_1_bss_1C < 0 && (MGSeqStatGet(lbl_1_bss_24) & 0x10)) { - lbl_1_bss_1C = HuAudSeqPlay(74); - } - if(MGSeqStatGet(lbl_1_bss_24) == 0) { - lbl_1_bss_60 = 3; - object->func = fn_1_CD8; - } - - break; - } + case 1: + lbl_1_bss_24 = MGSeqStartCreate(); + MGSeqPosSet(lbl_1_bss_24, 320, 240); + lbl_1_bss_60 = 2; + + case 2: + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400.0f; + ; + lbl_1_bss_54 += lbl_1_bss_50 * (1.0f / 60.0f); + if (lbl_1_bss_1C < 0 && (MGSeqStatGet(lbl_1_bss_24) & 0x10)) { + lbl_1_bss_1C = HuAudSeqPlay(74); + } + if (MGSeqStatGet(lbl_1_bss_24) == 0) { + lbl_1_bss_60 = 3; + object->func = fn_1_CD8; + } + + break; + } } void fn_1_8020(void); @@ -277,286 +275,285 @@ void fn_1_12A0(omObjData *object); void fn_1_CD8(omObjData *object) { - Center.y = lbl_1_bss_54; - lbl_1_bss_50 = -400.0f; - lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); - fn_1_8020(); - if(lbl_1_bss_4C == 0) { - lbl_1_bss_48 = 1; - lbl_1_bss_20 = MGSeqFinishCreate(); - MGSeqPosSet(lbl_1_bss_20, 320, 240); - HuAudSeqFadeOut(lbl_1_bss_1C, 100); - object->func = fn_1_12A0; - } else { - if(lbl_1_bss_54 <= (-lbl_1_bss_50*0.5f)) { - lbl_1_bss_20 = MGSeqFinishCreate(); - MGSeqPosSet(lbl_1_bss_20, 320, 240); - HuAudSeqFadeOut(lbl_1_bss_1C, 100); - lbl_1_bss_50 = -120.00001f; - lbl_1_bss_54 = -lbl_1_bss_50*2.0f; - lbl_1_bss_60 = 4; - object->func = fn_1_EF8; - - } - } + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400.0f; + lbl_1_bss_54 += lbl_1_bss_50 * (1.0f / 60.0f); + fn_1_8020(); + if (lbl_1_bss_4C == 0) { + lbl_1_bss_48 = 1; + lbl_1_bss_20 = MGSeqFinishCreate(); + MGSeqPosSet(lbl_1_bss_20, 320, 240); + HuAudSeqFadeOut(lbl_1_bss_1C, 100); + object->func = fn_1_12A0; + } + else { + if (lbl_1_bss_54 <= (-lbl_1_bss_50 * 0.5f)) { + lbl_1_bss_20 = MGSeqFinishCreate(); + MGSeqPosSet(lbl_1_bss_20, 320, 240); + HuAudSeqFadeOut(lbl_1_bss_1C, 100); + lbl_1_bss_50 = -120.00001f; + lbl_1_bss_54 = -lbl_1_bss_50 * 2.0f; + lbl_1_bss_60 = 4; + object->func = fn_1_EF8; + } + } } void fn_1_18C0(omObjData *object); void fn_1_EF8(omObjData *object) { - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - float temp_f29; - if(lbl_1_bss_10 < 0) { - lbl_1_bss_10 = HuAudFXPlay(1360); - } - sp30.x = 0; - sp30.y = 50; - sp30.z = 230; - temp_f29 = atan2d(lbl_1_bss_54-sp30.y, sp30.z); - if(temp_f29 < 0.0f) { - temp_f29 += 360.0f; - } - Center.x = 0; - Center.y = lbl_1_bss_54; - Center.z = 0; - CRot.x = temp_f29; - CZoom = sqrtf((sp30.z*sp30.z)+((lbl_1_bss_54-sp30.y)*(lbl_1_bss_54-sp30.y))); - spC.x = 0; - spC.z = 0; - sp24.x = 200; - sp24.z = 200; - sp24.y = 800; - spC.y = 20; - sp18.x = sp18.y = 0; - sp18.z = 1; - Hu3DShadowPosSet(&sp24, &sp18, &spC); - Hu3DShadowTPLvlSet(0.5f); - lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); - if(lbl_1_bss_54 <= 0.0f) { - lbl_1_bss_54 = 0; - lbl_1_bss_60 = 5; - object->func = fn_1_18C0; - } + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float temp_f29; + if (lbl_1_bss_10 < 0) { + lbl_1_bss_10 = HuAudFXPlay(1360); + } + sp30.x = 0; + sp30.y = 50; + sp30.z = 230; + temp_f29 = atan2d(lbl_1_bss_54 - sp30.y, sp30.z); + if (temp_f29 < 0.0f) { + temp_f29 += 360.0f; + } + Center.x = 0; + Center.y = lbl_1_bss_54; + Center.z = 0; + CRot.x = temp_f29; + CZoom = sqrtf((sp30.z * sp30.z) + ((lbl_1_bss_54 - sp30.y) * (lbl_1_bss_54 - sp30.y))); + spC.x = 0; + spC.z = 0; + sp24.x = 200; + sp24.z = 200; + sp24.y = 800; + spC.y = 20; + sp18.x = sp18.y = 0; + sp18.z = 1; + Hu3DShadowPosSet(&sp24, &sp18, &spC); + Hu3DShadowTPLvlSet(0.5f); + lbl_1_bss_54 += lbl_1_bss_50 * (1.0f / 60.0f); + if (lbl_1_bss_54 <= 0.0f) { + lbl_1_bss_54 = 0; + lbl_1_bss_60 = 5; + object->func = fn_1_18C0; + } } void fn_1_148C(omObjData *object); void fn_1_12A0(omObjData *object) { - if(lbl_1_bss_54 > (-lbl_1_bss_50*0.8f)) { - Center.y = lbl_1_bss_54; - lbl_1_bss_50 = -400; - lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); - } - if(MGSeqStatGet(lbl_1_bss_20)) { - return; - } - switch(fn_1_CE68()) { - case 0: - OSReport("Map 0\n"); - case 1: - OSReport("Map 1\n"); - if(lbl_1_bss_40 == 0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - lbl_1_bss_44 = 1; - } - object->func = fn_1_148C; - break; - - case 2: - OSReport("Map 2\n"); - case 3: - OSReport("Map 3\n"); - break; - - case 4: - OSReport("Map 4\n"); - if(lbl_1_bss_40 == 0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - lbl_1_bss_44 = 1; - } - object->func = fn_1_148C; - break; - } + if (lbl_1_bss_54 > (-lbl_1_bss_50 * 0.8f)) { + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400; + lbl_1_bss_54 += lbl_1_bss_50 * (1.0f / 60.0f); + } + if (MGSeqStatGet(lbl_1_bss_20)) { + return; + } + switch (fn_1_CE68()) { + case 0: + OSReport("Map 0\n"); + case 1: + OSReport("Map 1\n"); + if (lbl_1_bss_40 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_44 = 1; + } + object->func = fn_1_148C; + break; + + case 2: + OSReport("Map 2\n"); + case 3: + OSReport("Map 3\n"); + break; + + case 4: + OSReport("Map 4\n"); + if (lbl_1_bss_40 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + lbl_1_bss_44 = 1; + } + object->func = fn_1_148C; + break; + } } void fn_1_148C(omObjData *object) { - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - float temp_f29; - if(!WipeStatGet()) { - lbl_1_bss_54 = 0; - sp30.x = 0; - sp30.y = 50; - sp30.z = 230; - temp_f29 = atan2d(lbl_1_bss_54-sp30.y, sp30.z); - if(temp_f29 < 0.0f) { - temp_f29 += 360.0f; - } - Center.x = 0; - Center.y = lbl_1_bss_54; - Center.z = 0; - CRot.x = temp_f29; - CZoom = sqrtf((sp30.z*sp30.z)+((lbl_1_bss_54-sp30.y)*(lbl_1_bss_54-sp30.y))); - spC.x = 0; - spC.z = 0; - sp24.x = 200; - sp24.z = 200; - sp24.y = 800; - spC.y = 20; - sp18.x = sp18.y = 0; - sp18.z = 1; - Hu3DShadowPosSet(&sp24, &sp18, &spC); - Hu3DShadowTPLvlSet(0.5f); - fn_1_CEEC(); - if(lbl_1_bss_10 < 0) { - lbl_1_bss_10 = HuAudFXPlay(1360); - } - if(lbl_1_bss_40 == 0) { - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - lbl_1_bss_44 = 0; - } - lbl_1_bss_60 = 5; - object->func = fn_1_18C0; - } else { - if(lbl_1_bss_54 > (-lbl_1_bss_50*0.8f)) { - Center.y = lbl_1_bss_54; - lbl_1_bss_50 = -400; - lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); - } - } + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float temp_f29; + if (!WipeStatGet()) { + lbl_1_bss_54 = 0; + sp30.x = 0; + sp30.y = 50; + sp30.z = 230; + temp_f29 = atan2d(lbl_1_bss_54 - sp30.y, sp30.z); + if (temp_f29 < 0.0f) { + temp_f29 += 360.0f; + } + Center.x = 0; + Center.y = lbl_1_bss_54; + Center.z = 0; + CRot.x = temp_f29; + CZoom = sqrtf((sp30.z * sp30.z) + ((lbl_1_bss_54 - sp30.y) * (lbl_1_bss_54 - sp30.y))); + spC.x = 0; + spC.z = 0; + sp24.x = 200; + sp24.z = 200; + sp24.y = 800; + spC.y = 20; + sp18.x = sp18.y = 0; + sp18.z = 1; + Hu3DShadowPosSet(&sp24, &sp18, &spC); + Hu3DShadowTPLvlSet(0.5f); + fn_1_CEEC(); + if (lbl_1_bss_10 < 0) { + lbl_1_bss_10 = HuAudFXPlay(1360); + } + if (lbl_1_bss_40 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + lbl_1_bss_44 = 0; + } + lbl_1_bss_60 = 5; + object->func = fn_1_18C0; + } + else { + if (lbl_1_bss_54 > (-lbl_1_bss_50 * 0.8f)) { + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400; + lbl_1_bss_54 += lbl_1_bss_50 * (1.0f / 60.0f); + } + } } void fn_1_18C0(omObjData *object) { - if(!WipeStatGet() && lbl_1_bss_14 < 0) { - if(lbl_1_bss_C) { - lbl_1_bss_14 = HuAudSStreamPlay(1); - } else { - lbl_1_bss_14 = HuAudSStreamPlay(4); - } - } + if (!WipeStatGet() && lbl_1_bss_14 < 0) { + if (lbl_1_bss_C) { + lbl_1_bss_14 = HuAudSStreamPlay(1); + } + else { + lbl_1_bss_14 = HuAudSStreamPlay(4); + } + } } -float lbl_1_data_A0[] = { - 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7 -}; - +float lbl_1_data_A0[] = { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; void fn_1_1940(Work2FAC *arg0, Vec *arg1) { - Mtx sp18; - Vec spC; - spC.x = sind(arg0->unk58.x+90.0f); - spC.y = 0; - spC.z = cosd(arg0->unk58.x+90.0f); - MTXRotAxisDeg(sp18, &spC, arg0->unk58.y); - spC.x = spC.z = 0; - spC.y = -lbl_1_data_A0[arg0->unk2]; - MTXMultVec(sp18, &spC, arg1); + Mtx sp18; + Vec spC; + spC.x = sind(arg0->unk58.x + 90.0f); + spC.y = 0; + spC.z = cosd(arg0->unk58.x + 90.0f); + MTXRotAxisDeg(sp18, &spC, arg0->unk58.y); + spC.x = spC.z = 0; + spC.y = -lbl_1_data_A0[arg0->unk2]; + MTXMultVec(sp18, &spC, arg1); } void fn_1_1A60(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) { - Mtx spC; - mtxRot(spC, arg1->x, arg1->y, arg1->z); - MTXMultVec(spC, arg2, arg3); - arg3->x += arg0->x; - arg3->y += arg0->y; - arg3->z += arg0->z; + Mtx spC; + mtxRot(spC, arg1->x, arg1->y, arg1->z); + MTXMultVec(spC, arg2, arg3); + arg3->x += arg0->x; + arg3->y += arg0->y; + arg3->z += arg0->z; } void fn_1_1AF8(Work2FAC *arg0, s32 arg1, Vec *arg2) { - float temp_f31; - float temp_f30; - temp_f30 = temp_f31 = 0; - arg2->x = (temp_f31*sind(temp_f30))+arg0->unk1C.x; - arg2->y = 15.0f+arg0->unk1C.y+temp_f31; - arg2->z = (temp_f31*cosd(temp_f30))+arg0->unk1C.z; + float temp_f31; + float temp_f30; + temp_f30 = temp_f31 = 0; + arg2->x = (temp_f31 * sind(temp_f30)) + arg0->unk1C.x; + arg2->y = 15.0f + arg0->unk1C.y + temp_f31; + arg2->z = (temp_f31 * cosd(temp_f30)) + arg0->unk1C.z; } void fn_1_1BE8(omObjData *arg0, float arg1) { - Vec sp8; - Work2FAC *temp_r31 = arg0->data; - float temp_f31 = 1.0f-arg1; - float temp_f29; - if(!temp_r31->unk8) { - return; - } - fn_1_1AF8(temp_r31, 1, &sp8); - if(fn_1_6878() >= 4) { - sp8.z += -5.0f; - } - temp_r31->unk94.x = (temp_r31->unk94.x*temp_f31)+(sp8.x*arg1); - temp_r31->unk94.y = (temp_r31->unk94.y*temp_f31)+(sp8.y*arg1); - temp_r31->unk94.z = (temp_r31->unk94.z*temp_f31)+(sp8.z*arg1); - temp_f29 = (0.1f*((temp_r31->unk8*0.5f)+0.5f))*arg1; - temp_r31->unkA0.x = temp_r31->unkC*(temp_f29+(temp_r31->unkA0.x*temp_f31)); - temp_r31->unkA0.y = temp_r31->unkC*(temp_f29+(temp_r31->unkA0.y*temp_f31)); - temp_r31->unkA0.z = temp_r31->unkC*(temp_f29+(temp_r31->unkA0.z*temp_f31)); - Hu3DModelPosSetV(arg0->model[1], &temp_r31->unk94); - Hu3DModelScaleSetV(arg0->model[1], &temp_r31->unkA0); + Vec sp8; + Work2FAC *temp_r31 = arg0->data; + float temp_f31 = 1.0f - arg1; + float temp_f29; + if (!temp_r31->unk8) { + return; + } + fn_1_1AF8(temp_r31, 1, &sp8); + if (fn_1_6878() >= 4) { + sp8.z += -5.0f; + } + temp_r31->unk94.x = (temp_r31->unk94.x * temp_f31) + (sp8.x * arg1); + temp_r31->unk94.y = (temp_r31->unk94.y * temp_f31) + (sp8.y * arg1); + temp_r31->unk94.z = (temp_r31->unk94.z * temp_f31) + (sp8.z * arg1); + temp_f29 = (0.1f * ((temp_r31->unk8 * 0.5f) + 0.5f)) * arg1; + temp_r31->unkA0.x = temp_r31->unkC * (temp_f29 + (temp_r31->unkA0.x * temp_f31)); + temp_r31->unkA0.y = temp_r31->unkC * (temp_f29 + (temp_r31->unkA0.y * temp_f31)); + temp_r31->unkA0.z = temp_r31->unkC * (temp_f29 + (temp_r31->unkA0.z * temp_f31)); + Hu3DModelPosSetV(arg0->model[1], &temp_r31->unk94); + Hu3DModelScaleSetV(arg0->model[1], &temp_r31->unkA0); } void fn_1_1E54(omObjData *object) { - Work2FAC *work = object->data; - if(work->unk8) { - work->unk94.y += 0.5f; - Hu3DModelPosSetV(object->model[1], &work->unk94); - } + Work2FAC *work = object->data; + if (work->unk8) { + work->unk94.y += 0.5f; + Hu3DModelPosSetV(object->model[1], &work->unk94); + } } s32 fn_1_1EBC(omObjData *object) { - float temp_f31; - float temp_f22; - float temp_f21; - Vec sp3C; - Vec sp30; - Vec sp24; - - Work2FAC *temp_r31 = object->data; - temp_f31 = (temp_r31->unk1C.x*temp_r31->unk1C.x)+((10.0f/7.0f)*((10.0f/7.0f)*temp_r31->unk1C.z*temp_r31->unk1C.z)); - if(temp_f31 > 6400) { - temp_f22 = 80.0f/sqrtf(temp_f31); - sp3C.x = temp_r31->unk1C.x*temp_f22; - sp3C.z = temp_r31->unk1C.z*temp_f22; - temp_r31->unk34.x = sp3C.x-temp_r31->unk1C.x; - temp_r31->unk34.z = sp3C.z-temp_r31->unk1C.z; - temp_f21 = 80.0f*sqrtf(0.51f); - sp30.x = temp_f21-sp3C.x; - sp30.z = -sp3C.z; - sp24.x = -temp_f21-sp3C.x; - sp24.z = -sp3C.z; - temp_f31 = 1.0f/VECMagXZ(&sp30); - sp30.x *= temp_f31; - sp30.z *= temp_f31; - temp_f31 = 1.0f/VECMagXZ(&sp24); - sp24.x *= temp_f31; - sp24.z *= temp_f31; - sp30.x += sp24.x; - sp30.z += sp24.z; - temp_f31 = 1.0f/VECMagXZ(&sp30); - sp30.x *= temp_f31; - sp30.z *= temp_f31; - temp_f22 = -((sp30.x*temp_r31->unk28.x)+(sp30.z*temp_r31->unk28.z)); - temp_r31->unk28.x += (sp30.x*20.0f)+(sp30.x*2.0f*temp_f22); - temp_r31->unk28.z += (sp30.z*20.0f)+(sp30.z*2.0f*temp_f22); - return 1; - } else { - return 0; - } + float temp_f31; + float temp_f22; + float temp_f21; + Vec sp3C; + Vec sp30; + Vec sp24; + + Work2FAC *temp_r31 = object->data; + temp_f31 = (temp_r31->unk1C.x * temp_r31->unk1C.x) + ((10.0f / 7.0f) * ((10.0f / 7.0f) * temp_r31->unk1C.z * temp_r31->unk1C.z)); + if (temp_f31 > 6400) { + temp_f22 = 80.0f / sqrtf(temp_f31); + sp3C.x = temp_r31->unk1C.x * temp_f22; + sp3C.z = temp_r31->unk1C.z * temp_f22; + temp_r31->unk34.x = sp3C.x - temp_r31->unk1C.x; + temp_r31->unk34.z = sp3C.z - temp_r31->unk1C.z; + temp_f21 = 80.0f * sqrtf(0.51f); + sp30.x = temp_f21 - sp3C.x; + sp30.z = -sp3C.z; + sp24.x = -temp_f21 - sp3C.x; + sp24.z = -sp3C.z; + temp_f31 = 1.0f / VECMagXZ(&sp30); + sp30.x *= temp_f31; + sp30.z *= temp_f31; + temp_f31 = 1.0f / VECMagXZ(&sp24); + sp24.x *= temp_f31; + sp24.z *= temp_f31; + sp30.x += sp24.x; + sp30.z += sp24.z; + temp_f31 = 1.0f / VECMagXZ(&sp30); + sp30.x *= temp_f31; + sp30.z *= temp_f31; + temp_f22 = -((sp30.x * temp_r31->unk28.x) + (sp30.z * temp_r31->unk28.z)); + temp_r31->unk28.x += (sp30.x * 20.0f) + (sp30.x * 2.0f * temp_f22); + temp_r31->unk28.z += (sp30.z * 20.0f) + (sp30.z * 2.0f * temp_f22); + return 1; + } + else { + return 0; + } } void fn_1_26E4(omObjData *object); @@ -564,122 +561,112 @@ void fn_1_61FC(omObjData *object); void fn_1_25D4(Process *objman) { - s32 i; - omMakeGroupEx(objman, 0, 4); - lbl_1_bss_6C = omGetGroupMemberListEx(objman, 0); - lbl_1_bss_58 = 0; - for(i=0; i<4; i++) { - omObjData *object = omAddObjEx(objman, 40, 5, 7, 0, fn_1_26E4); - if(!GWPlayerCfg[i].iscom) { - lbl_1_bss_58++; - } - object->work[0] = i; - } - lbl_1_bss_8 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_61FC); - + s32 i; + omMakeGroupEx(objman, 0, 4); + lbl_1_bss_6C = omGetGroupMemberListEx(objman, 0); + lbl_1_bss_58 = 0; + for (i = 0; i < 4; i++) { + omObjData *object = omAddObjEx(objman, 40, 5, 7, 0, fn_1_26E4); + if (!GWPlayerCfg[i].iscom) { + lbl_1_bss_58++; + } + object->work[0] = i; + } + lbl_1_bss_8 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_61FC); } s32 lbl_1_data_C8[] = { - 0x270002, - 0x270003, - 0x270004, - 0x270005, - 0x270006, - 0x270007, - 0x270008, - 0x270009, + DATA_MAKE_NUM(DATADIR_M408, 0x02), + DATA_MAKE_NUM(DATADIR_M408, 0x03), + DATA_MAKE_NUM(DATADIR_M408, 0x04), + DATA_MAKE_NUM(DATADIR_M408, 0x05), + DATA_MAKE_NUM(DATADIR_M408, 0x06), + DATA_MAKE_NUM(DATADIR_M408, 0x07), + DATA_MAKE_NUM(DATADIR_M408, 0x08), + DATA_MAKE_NUM(DATADIR_M408, 0x09), }; u32 lbl_1_data_E8[] = { - 0, - 23, - 24, - 0x27002C, - 0x27003C, - 0x270034, - 22 + 0, + 23, + 24, + DATA_MAKE_NUM(DATADIR_M408, 0x2C), + DATA_MAKE_NUM(DATADIR_M408, 0x3C), + DATA_MAKE_NUM(DATADIR_M408, 0x34), + 22, }; -float lbl_1_data_104[][2] = { - -40, -30, - 40, -30, - -40, 30, - 40, 30 -}; +float lbl_1_data_104[][2] = { -40, -30, 40, -30, -40, 30, 40, 30 }; -float lbl_1_data_124[][2] = { - 0, -56, - 0, 56, - -80, 0, - 80, 0 -}; +float lbl_1_data_124[][2] = { 0, -56, 0, 56, -80, 0, 80, 0 }; void fn_1_2FAC(omObjData *object); void fn_1_5AB4(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_26E4(omObjData *object) { - Work2FAC *temp_r31; - s32 temp_r28; - s32 temp_r27; - - float sp20[4] = { 0.25, 0.5, 0.75, 1.0 }; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FAC), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - memset(temp_r31, 0, sizeof(Work2FAC)); - temp_r31->unk0 = object->work[0]; - temp_r31->unk2 = GWPlayerCfg[temp_r31->unk0].character; - temp_r31->unk2 &= 0x7; - temp_r31->unk4 = 0; - temp_r31->unk90 = sp20[GWPlayerCfg[object->work[0]].diff & 0x3]; - temp_r31->unk1C.x = lbl_1_data_104[temp_r31->unk0][0]; - temp_r31->unk1C.y = lbl_1_bss_54; - temp_r31->unk1C.z = lbl_1_data_104[temp_r31->unk0][1]; - temp_r31->unk28.x = temp_r31->unk28.y = temp_r31->unk28.z = 0; - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_r31->unk58.y = 0; - temp_r31->unk58.x = 0; - temp_r31->unk4C.x = temp_r31->unk4C.y = temp_r31->unk4C.z = 0; - temp_r31->unk58.z = 9.0f; - temp_r31->unk40.x = temp_r31->unk40.y = temp_r31->unk40.z = 0; - temp_r31->unk8 = 4; - temp_r31->unkC = 0; - fn_1_1940(temp_r31, &temp_r31->unk68); - omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); - omSetSca(object, 0.075f, 0.075f, 0.075f); - object->model[0] = CharModelCreate(temp_r31->unk2, 4); - for(temp_r28=0; temp_r28<7; temp_r28++) { - if(lbl_1_data_E8[temp_r28] < 0x10000) { - object->motion[temp_r28] = CharModelMotionCreate(temp_r31->unk2, lbl_1_data_E8[temp_r28]); - } else { - object->motion[temp_r28] = Hu3DJointMotionFile(object->model[0], temp_r31->unk2+lbl_1_data_E8[temp_r28]); - } - } - CharModelVoiceEnableSet(temp_r31->unk2, object->motion[1], 0); - CharModelMotionShiftSet(temp_r31->unk2, object->motion[0], 0, 0.2, 0x40000001); - CharModelLayerSetAll(2); - CharModelMotionDataClose(temp_r31->unk2); - object->model[1] = Hu3DModelCreateFile(lbl_1_data_C8[temp_r31->unk2]); - Hu3DModelLayerSet(object->model[1], 6); - Hu3DModelScaleSet(object->model[1], 0.1f*temp_r31->unk8, 0.1f*temp_r31->unk8, 0.1f*temp_r31->unk8); - Hu3DModelAttrSet(object->model[1], 1); - temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; - temp_r31->unkA0.x = temp_r31->unkA0.y = temp_r31->unkA0.z = 0; - fn_1_1BE8(object, 1.0f); - temp_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x270024), 256); - object->model[2] = temp_r27; - Hu3DModelLayerSet(temp_r27, 6); - Hu3DParticleColSet(temp_r27, 255, 255, 255); - Hu3DParticleHookSet(temp_r27, fn_1_5AB4); - Hu3DModelPosSet(temp_r27, 0, 0, 0); - ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_00 = 0; - temp_r31->unk74 = temp_r31->unk78 = 0; - temp_r31->unk7C[0] = temp_r31->unk7C[1] = 0; - temp_r31->unk8C = -1; - temp_r31->unk8E = 0; - temp_r31->unk84[0] = temp_r31->unk84[1] = 0; - object->work[1] = 0; - object->func = fn_1_2FAC; + Work2FAC *temp_r31; + s32 temp_r28; + s32 temp_r27; + + float sp20[4] = { 0.25, 0.5, 0.75, 1.0 }; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FAC), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + memset(temp_r31, 0, sizeof(Work2FAC)); + temp_r31->unk0 = object->work[0]; + temp_r31->unk2 = GWPlayerCfg[temp_r31->unk0].character; + temp_r31->unk2 &= 0x7; + temp_r31->unk4 = 0; + temp_r31->unk90 = sp20[GWPlayerCfg[object->work[0]].diff & 0x3]; + temp_r31->unk1C.x = lbl_1_data_104[temp_r31->unk0][0]; + temp_r31->unk1C.y = lbl_1_bss_54; + temp_r31->unk1C.z = lbl_1_data_104[temp_r31->unk0][1]; + temp_r31->unk28.x = temp_r31->unk28.y = temp_r31->unk28.z = 0; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r31->unk58.y = 0; + temp_r31->unk58.x = 0; + temp_r31->unk4C.x = temp_r31->unk4C.y = temp_r31->unk4C.z = 0; + temp_r31->unk58.z = 9.0f; + temp_r31->unk40.x = temp_r31->unk40.y = temp_r31->unk40.z = 0; + temp_r31->unk8 = 4; + temp_r31->unkC = 0; + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x + temp_r31->unk68.x, temp_r31->unk1C.y + temp_r31->unk68.y, temp_r31->unk1C.z + temp_r31->unk68.z); + omSetSca(object, 0.075f, 0.075f, 0.075f); + object->model[0] = CharModelCreate(temp_r31->unk2, 4); + for (temp_r28 = 0; temp_r28 < 7; temp_r28++) { + if (lbl_1_data_E8[temp_r28] < 0x10000) { + object->motion[temp_r28] = CharModelMotionCreate(temp_r31->unk2, lbl_1_data_E8[temp_r28]); + } + else { + object->motion[temp_r28] = Hu3DJointMotionFile(object->model[0], temp_r31->unk2 + lbl_1_data_E8[temp_r28]); + } + } + CharModelVoiceEnableSet(temp_r31->unk2, object->motion[1], 0); + CharModelMotionShiftSet(temp_r31->unk2, object->motion[0], 0, 0.2, HU3D_MOTATTR_LOOP); + CharModelLayerSetAll(2); + CharModelMotionDataClose(temp_r31->unk2); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_C8[temp_r31->unk2]); + Hu3DModelLayerSet(object->model[1], 6); + Hu3DModelScaleSet(object->model[1], 0.1f * temp_r31->unk8, 0.1f * temp_r31->unk8, 0.1f * temp_r31->unk8); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; + temp_r31->unkA0.x = temp_r31->unkA0.y = temp_r31->unkA0.z = 0; + fn_1_1BE8(object, 1.0f); + temp_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x24)), 256); + object->model[2] = temp_r27; + Hu3DModelLayerSet(temp_r27, 6); + Hu3DParticleColSet(temp_r27, 255, 255, 255); + Hu3DParticleHookSet(temp_r27, fn_1_5AB4); + Hu3DModelPosSet(temp_r27, 0, 0, 0); + ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_00 = 0; + temp_r31->unk74 = temp_r31->unk78 = 0; + temp_r31->unk7C[0] = temp_r31->unk7C[1] = 0; + temp_r31->unk8C = -1; + temp_r31->unk8E = 0; + temp_r31->unk84[0] = temp_r31->unk84[1] = 0; + object->work[1] = 0; + object->func = fn_1_2FAC; } void fn_1_5DCC(s32 arg0, Vec *arg1, u32 arg2); @@ -687,181 +674,172 @@ void fn_1_3E80(omObjData *object); void fn_1_2FAC(omObjData *object) { - Work2FAC *temp_r31 = object->data; - Vec sp78[] = { - { 8, -25, -18 }, - { 2, -25, -10 }, - { 2, -25, -24 }, - { -3, -25, -15} - }; - Vec sp3C; - Vec sp30; - Vec sp24; - float sp14[] = { - 45, - 135, - 225, - 315 - }; - float temp_f27; - switch(object->work[1]) { - case 0: - fn_1_C3C0(&sp3C, &sp30); - fn_1_1A60(&sp3C, &sp30, &sp78[temp_r31->unk0], &sp24); - omSetRot(object, 0, 90, 0); - omSetTra(object, sp24.x, sp24.y, sp24.z); - if(fn_1_C43C() != 1) { - object->work[1]++; - temp_r31->unk58.y = 60; - temp_r31->unk58.x = sp14[temp_r31->unk0]; - temp_r31->unk28.x = temp_r31->unk28.y = temp_r31->unk28.z = 0; - object->trans.x -= 10.0*(2.0*sind(temp_r31->unk58.x)); - object->trans.z -= 10.0*(2.0*cosd(temp_r31->unk58.x)); - CharModelMotionShiftSet(temp_r31->unk2, object->motion[4], 0, 0.2, 0x40000001); - temp_r31->unk1C.x = temp_r31->unk94.x = object->trans.x; - temp_r31->unk1C.y = temp_r31->unk94.y = object->trans.y; - temp_r31->unk1C.z = temp_r31->unk94.z = object->trans.z; - } - break; - - case 1: - temp_r31->unk28.y += -98.0f; - if(temp_r31->unk28.y < -400.0f) { - temp_r31->unk28.y = -400.0f; - } - temp_f27 = object->trans.y; - object->trans.y += temp_r31->unk28.y*(1.0f/60.0f); - temp_r31->unk58.x += 1.5000001f; - if(temp_r31->unk58.x >= 360.0f) { - temp_r31->unk58.x -= 360.0f; - } - object->trans.x += (3.141590118408203f*(10.0*sind(temp_r31->unk58.x-90.0f)))*(1.0f/60.0f); - object->trans.z += (3.141590118408203f*(10.0*cosd(temp_r31->unk58.x-90.0f)))*(1.0f/60.0f); - if(temp_f27 > 12000 && object->trans.y <= 12000){ - sp3C.x = object->trans.x; - sp3C.y = object->trans.y; - sp3C.z = object->trans.z; - fn_1_5DCC(object->model[2], &sp3C, 100); - } - temp_r31->unk4C.x = temp_r31->unk58.y; - temp_r31->unk4C.y = temp_r31->unk58.x; - temp_r31->unk4C.z = 0; - temp_r31->unk1C.x = object->trans.x; - temp_r31->unk1C.y = object->trans.y; - temp_r31->unk1C.z = object->trans.z; - omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); - Hu3DModelAttrReset(object->model[1], 0x1); - temp_r31->unkC += 0.2f*(1.0f-temp_r31->unkC); - if(object->trans.y < 11940) { - object->work[1]++; - } - break; - } - fn_1_1BE8(object, 1.0f); - if(fn_1_6878() == 1) { - omSetSca(object, 0.15f, 0.15f, 0.15f); - object->trans.x = temp_r31->unk1C.x = temp_r31->unk94.x = lbl_1_data_104[temp_r31->unk0][0]; - object->trans.y = temp_r31->unk1C.y = temp_r31->unk94.y = lbl_1_bss_54; - object->trans.z = temp_r31->unk1C.z = temp_r31->unk94.z = lbl_1_data_104[temp_r31->unk0][1]; - object->rot.y = temp_r31->unk58.x = atan2d(object->trans.x, object->trans.z)+180.0; - Hu3DModelAttrReset(object->model[1], 1); - ((ParticleData *)Hu3DData[object->model[2]].unk_120)->unk_00 = 0; - object->func = fn_1_3E80; - } + Work2FAC *temp_r31 = object->data; + Vec sp78[] = { { 8, -25, -18 }, { 2, -25, -10 }, { 2, -25, -24 }, { -3, -25, -15 } }; + Vec sp3C; + Vec sp30; + Vec sp24; + float sp14[] = { 45, 135, 225, 315 }; + float temp_f27; + switch (object->work[1]) { + case 0: + fn_1_C3C0(&sp3C, &sp30); + fn_1_1A60(&sp3C, &sp30, &sp78[temp_r31->unk0], &sp24); + omSetRot(object, 0, 90, 0); + omSetTra(object, sp24.x, sp24.y, sp24.z); + if (fn_1_C43C() != 1) { + object->work[1]++; + temp_r31->unk58.y = 60; + temp_r31->unk58.x = sp14[temp_r31->unk0]; + temp_r31->unk28.x = temp_r31->unk28.y = temp_r31->unk28.z = 0; + object->trans.x -= 10.0 * (2.0 * sind(temp_r31->unk58.x)); + object->trans.z -= 10.0 * (2.0 * cosd(temp_r31->unk58.x)); + CharModelMotionShiftSet(temp_r31->unk2, object->motion[4], 0, 0.2, HU3D_MOTATTR_LOOP); + temp_r31->unk1C.x = temp_r31->unk94.x = object->trans.x; + temp_r31->unk1C.y = temp_r31->unk94.y = object->trans.y; + temp_r31->unk1C.z = temp_r31->unk94.z = object->trans.z; + } + break; + + case 1: + temp_r31->unk28.y += -98.0f; + if (temp_r31->unk28.y < -400.0f) { + temp_r31->unk28.y = -400.0f; + } + temp_f27 = object->trans.y; + object->trans.y += temp_r31->unk28.y * (1.0f / 60.0f); + temp_r31->unk58.x += 1.5000001f; + if (temp_r31->unk58.x >= 360.0f) { + temp_r31->unk58.x -= 360.0f; + } + object->trans.x += (3.141590118408203f * (10.0 * sind(temp_r31->unk58.x - 90.0f))) * (1.0f / 60.0f); + object->trans.z += (3.141590118408203f * (10.0 * cosd(temp_r31->unk58.x - 90.0f))) * (1.0f / 60.0f); + if (temp_f27 > 12000 && object->trans.y <= 12000) { + sp3C.x = object->trans.x; + sp3C.y = object->trans.y; + sp3C.z = object->trans.z; + fn_1_5DCC(object->model[2], &sp3C, 100); + } + temp_r31->unk4C.x = temp_r31->unk58.y; + temp_r31->unk4C.y = temp_r31->unk58.x; + temp_r31->unk4C.z = 0; + temp_r31->unk1C.x = object->trans.x; + temp_r31->unk1C.y = object->trans.y; + temp_r31->unk1C.z = object->trans.z; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + temp_r31->unkC += 0.2f * (1.0f - temp_r31->unkC); + if (object->trans.y < 11940) { + object->work[1]++; + } + break; + } + fn_1_1BE8(object, 1.0f); + if (fn_1_6878() == 1) { + omSetSca(object, 0.15f, 0.15f, 0.15f); + object->trans.x = temp_r31->unk1C.x = temp_r31->unk94.x = lbl_1_data_104[temp_r31->unk0][0]; + object->trans.y = temp_r31->unk1C.y = temp_r31->unk94.y = lbl_1_bss_54; + object->trans.z = temp_r31->unk1C.z = temp_r31->unk94.z = lbl_1_data_104[temp_r31->unk0][1]; + object->rot.y = temp_r31->unk58.x = atan2d(object->trans.x, object->trans.z) + 180.0; + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + ((ParticleData *)Hu3DData[object->model[2]].unk_120)->unk_00 = 0; + object->func = fn_1_3E80; + } } void fn_1_38D0(omObjData *arg0, s8 *arg1, s8 *arg2) { - float temp_f31; - float temp_f30; - float temp_f29; - Work2FAC *temp_r31; - Work2FAC *temp_r30; - s8 temp_r29; - s32 temp_r28; - s32 temp_r25; - Vec sp18; - Vec spC; - s8 sp8[4]; + float temp_f31; + float temp_f30; + float temp_f29; + Work2FAC *temp_r31; + Work2FAC *temp_r30; + s8 temp_r29; + s32 temp_r28; + s32 temp_r25; + Vec sp18; + Vec spC; + s8 sp8[4]; - temp_r31 = arg0->data; - *arg1 = temp_r31->unk7C[0]; - *arg2 = temp_r31->unk7C[1]; - sp18.x = temp_r31->unk1C.x; - sp18.y = temp_r31->unk1C.y; - sp18.z = temp_r31->unk1C.z; - temp_r25 = fn_1_162CC(&sp18, &spC); - temp_r29 = 0; - sp8[0] = -1; - for(temp_r28=0; temp_r28<4; temp_r28++) { - if(temp_r28 != temp_r31->unk0) { - temp_r30 = fn_1_68A8(temp_r28); - if((temp_r30->unk4 & 0x12) == 0) { - sp8[temp_r29++] = temp_r28; - } - } - } - switch(temp_r31->unk8E) { - case 0: - if(temp_r29 > 0 || temp_r25) { - if(temp_r29 > 0) { - temp_r31->unk8C = sp8[frandmod(temp_r29)]; - } - temp_r31->unk74 = frandmod(180)+120.0f; - temp_r31->unk78 = 0; - temp_r31->unk8E = 1; - } else { - temp_r31->unk78 = 0; - temp_r31->unk8E = 2; - } - break; - - case 1: - if((temp_r31->unk78 & 0x3) == 0) { - if(temp_r25) { - temp_f31 = atan2d(spC.x-temp_r31->unk1C.x, spC.z-temp_r31->unk1C.z); - } else { - temp_r30 = fn_1_68A8(temp_r31->unk8C); - temp_f31 = atan2d(temp_r30->unk1C.x-temp_r31->unk1C.x, temp_r30->unk1C.z-temp_r31->unk1C.z); - } - temp_r31->unk84[1] = fn_1_883C(temp_r31->unk84[0], temp_f31, (0.3f*temp_r31->unk90)+0.15f); - } - temp_r31->unk78++; - temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); - temp_r31->unk7C[0] = sind(temp_r31->unk84[0])*80.0; - temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0])*80.0; - *arg1 = temp_r31->unk7C[0]; - *arg2 = temp_r31->unk7C[1]; - temp_r31->unk74--; - if(temp_r25 == 0 && (temp_r30->unk4 & 0x12)) { - temp_r31->unk74 = 0; - } - if(temp_r31->unk74 == 0) { - temp_r31->unk8E = 0; - } - break; - - case 2: - if((temp_r31->unk78 & 0xF) == 0) { - temp_f30 = (0.04f*frandmod(1000))-20.0f; - temp_f29 = (0.04f*frandmod(1000))-20.0f; - temp_r31->unk84[1] = temp_f31 = atan2d(temp_f30-temp_r31->unk1C.x, temp_f29-temp_r31->unk1C.z); - } - temp_r31->unk78++; - temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); - temp_r31->unk7C[0] = sind(temp_r31->unk84[0])*80.0; - temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0])*80.0; - *arg1 = temp_r31->unk7C[0]; - *arg2 = temp_r31->unk7C[1]; - if(temp_r29 > 0 || temp_r25) { - temp_r31->unk8E = 0; - } - break; - } + temp_r31 = arg0->data; + *arg1 = temp_r31->unk7C[0]; + *arg2 = temp_r31->unk7C[1]; + sp18.x = temp_r31->unk1C.x; + sp18.y = temp_r31->unk1C.y; + sp18.z = temp_r31->unk1C.z; + temp_r25 = fn_1_162CC(&sp18, &spC); + temp_r29 = 0; + sp8[0] = -1; + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + if (temp_r28 != temp_r31->unk0) { + temp_r30 = fn_1_68A8(temp_r28); + if ((temp_r30->unk4 & 0x12) == 0) { + sp8[temp_r29++] = temp_r28; + } + } + } + switch (temp_r31->unk8E) { + case 0: + if (temp_r29 > 0 || temp_r25) { + if (temp_r29 > 0) { + temp_r31->unk8C = sp8[frandmod(temp_r29)]; + } + temp_r31->unk74 = frandmod(180) + 120.0f; + temp_r31->unk78 = 0; + temp_r31->unk8E = 1; + } + else { + temp_r31->unk78 = 0; + temp_r31->unk8E = 2; + } + break; + case 1: + if ((temp_r31->unk78 & 0x3) == 0) { + if (temp_r25) { + temp_f31 = atan2d(spC.x - temp_r31->unk1C.x, spC.z - temp_r31->unk1C.z); + } + else { + temp_r30 = fn_1_68A8(temp_r31->unk8C); + temp_f31 = atan2d(temp_r30->unk1C.x - temp_r31->unk1C.x, temp_r30->unk1C.z - temp_r31->unk1C.z); + } + temp_r31->unk84[1] = fn_1_883C(temp_r31->unk84[0], temp_f31, (0.3f * temp_r31->unk90) + 0.15f); + } + temp_r31->unk78++; + temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); + temp_r31->unk7C[0] = sind(temp_r31->unk84[0]) * 80.0; + temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0]) * 80.0; + *arg1 = temp_r31->unk7C[0]; + *arg2 = temp_r31->unk7C[1]; + temp_r31->unk74--; + if (temp_r25 == 0 && (temp_r30->unk4 & 0x12)) { + temp_r31->unk74 = 0; + } + if (temp_r31->unk74 == 0) { + temp_r31->unk8E = 0; + } + break; + + case 2: + if ((temp_r31->unk78 & 0xF) == 0) { + temp_f30 = (0.04f * frandmod(1000)) - 20.0f; + temp_f29 = (0.04f * frandmod(1000)) - 20.0f; + temp_r31->unk84[1] = temp_f31 = atan2d(temp_f30 - temp_r31->unk1C.x, temp_f29 - temp_r31->unk1C.z); + } + temp_r31->unk78++; + temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); + temp_r31->unk7C[0] = sind(temp_r31->unk84[0]) * 80.0; + temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0]) * 80.0; + *arg1 = temp_r31->unk7C[0]; + *arg2 = temp_r31->unk7C[1]; + if (temp_r29 > 0 || temp_r25) { + temp_r31->unk8E = 0; + } + break; + } } -#define CHECK_IDLE(pos) (((pos) < 0) ? -(pos) : ((pos)>15)) +#define CHECK_IDLE(pos) (((pos) < 0) ? -(pos) : ((pos) > 15)) void fn_1_4A58(omObjData *object); void fn_1_5098(omObjData *object); @@ -869,815 +847,799 @@ void fn_1_5684(omObjData *object); void fn_1_3E80(omObjData *object) { - Work2FAC *temp_r31; - s32 temp_r27; + Work2FAC *temp_r31; + s32 temp_r27; - float temp_f29; - float temp_f28; - float temp_f22; - float temp_f21; - float temp_f20; - s8 sp9; - s8 sp8; - - temp_r31 = object->data; - temp_r27 = GWPlayerCfg[temp_r31->unk0].pad_idx; - sp9 = sp8 = 0; - if(lbl_1_bss_60 == 3) { - if(!GWPlayerCfg[temp_r31->unk0].iscom) { - sp9 = HuPadStkX[temp_r27]; - sp8 = HuPadStkY[temp_r27]; - } else { - fn_1_38D0(object, &sp9, &sp8); - } - } - temp_r31->unk1C.y = lbl_1_bss_54; - temp_f21 = temp_f20 = 0; - temp_f28 = temp_r31->unk58.x; - temp_f22 = -20; - if(CHECK_IDLE(sp9) || CHECK_IDLE(sp8)) { - temp_f28 = atan2d(sp9, -sp8); - if(temp_f28 < 0) { - temp_f28 += 360; - } - temp_f21 = 70*sind(temp_f28); - temp_f20 = 70*cosd(temp_f28); - temp_f22 = 30; - } - fn_1_1EBC(object); - temp_r31->unk28.x = ((28.0f/30.0f)*temp_r31->unk28.x)+((2.0f/30.0f)*temp_f21); - temp_r31->unk28.z = ((28.0f/30.0f)*temp_r31->unk28.z)+((2.0f/30.0f)*temp_f20); - temp_f29 = VECMagXZ(&temp_r31->unk28); - if(temp_f29 > 200.0f) { - temp_f29 = 200.0f/temp_f29; - temp_r31->unk28.x *= temp_f29; - temp_r31->unk28.z *= temp_f29; - } - temp_r31->unk34.x += (temp_r31->unk28.x*(1.0f/60.0f)); - temp_r31->unk34.y = 0; - temp_r31->unk34.z += (temp_r31->unk28.z*(1.0f/60.0f)); - temp_r31->unk58.x = temp_f28; - temp_r31->unk58.y = (0.9f*temp_r31->unk58.y)+(0.1f*temp_f22); - temp_r31->unk4C.x = temp_r31->unk58.y; - temp_r31->unk4C.y = fn_1_883C(temp_r31->unk4C.y, temp_r31->unk58.x, 0.2f); - temp_r31->unk4C.z = 0; - omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); - fn_1_1940(temp_r31, &temp_r31->unk68); - omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); - temp_r31->unkC += (1.0f-temp_r31->unkC)*0.2f; - fn_1_1BE8(object, 0.3f); - if(temp_r31->unk4 & 0x1) { - temp_r31->unk8--; - temp_r31->unk10 = 0; - temp_r31->unk4 |= 2; - temp_f29 = VECMagXZ(&temp_r31->unk40); - if(temp_f29 > 0.0f) { - temp_f29 = 150.0f/temp_f29; - } - temp_r31->unk28.x = temp_r31->unk40.x*temp_f29; - temp_r31->unk28.z = temp_r31->unk40.z*temp_f29; - temp_r31->unk34.x = temp_r31->unk28.x*(1.0f/60.0f); - temp_r31->unk34.z = temp_r31->unk28.z*(1.0f/60.0f); - CharModelMotionShiftSet(temp_r31->unk2, object->motion[5], 0, 0.2f, 0); - HuAudFXPlay(1358); - omVibrate(object->work[0], 12, 4, 2); - if(temp_r31->unk8) { - HuAudCharVoicePlay(temp_r31->unk2, 296); - object->func = fn_1_4A58; - } else { - temp_r31->unk4 |= 0x30; - lbl_1_bss_4C--; - HuAudCharVoicePlay(temp_r31->unk2, 291); - object->func = fn_1_5684; - } - } - if(fn_1_6878() == 4 && (temp_r31->unk4 & 0x20) == 0) { - CharModelMotionShiftSet(temp_r31->unk2, object->motion[3], 0, 0.2f, 0); - Hu3DModelShadowSet(object->model[0]); - object->work[1] = 0; - object->func = fn_1_5098; - } + float temp_f29; + float temp_f28; + float temp_f22; + float temp_f21; + float temp_f20; + s8 sp9; + s8 sp8; + + temp_r31 = object->data; + temp_r27 = GWPlayerCfg[temp_r31->unk0].pad_idx; + sp9 = sp8 = 0; + if (lbl_1_bss_60 == 3) { + if (!GWPlayerCfg[temp_r31->unk0].iscom) { + sp9 = HuPadStkX[temp_r27]; + sp8 = HuPadStkY[temp_r27]; + } + else { + fn_1_38D0(object, &sp9, &sp8); + } + } + temp_r31->unk1C.y = lbl_1_bss_54; + temp_f21 = temp_f20 = 0; + temp_f28 = temp_r31->unk58.x; + temp_f22 = -20; + if (CHECK_IDLE(sp9) || CHECK_IDLE(sp8)) { + temp_f28 = atan2d(sp9, -sp8); + if (temp_f28 < 0) { + temp_f28 += 360; + } + temp_f21 = 70 * sind(temp_f28); + temp_f20 = 70 * cosd(temp_f28); + temp_f22 = 30; + } + fn_1_1EBC(object); + temp_r31->unk28.x = ((28.0f / 30.0f) * temp_r31->unk28.x) + ((2.0f / 30.0f) * temp_f21); + temp_r31->unk28.z = ((28.0f / 30.0f) * temp_r31->unk28.z) + ((2.0f / 30.0f) * temp_f20); + temp_f29 = VECMagXZ(&temp_r31->unk28); + if (temp_f29 > 200.0f) { + temp_f29 = 200.0f / temp_f29; + temp_r31->unk28.x *= temp_f29; + temp_r31->unk28.z *= temp_f29; + } + temp_r31->unk34.x += (temp_r31->unk28.x * (1.0f / 60.0f)); + temp_r31->unk34.y = 0; + temp_r31->unk34.z += (temp_r31->unk28.z * (1.0f / 60.0f)); + temp_r31->unk58.x = temp_f28; + temp_r31->unk58.y = (0.9f * temp_r31->unk58.y) + (0.1f * temp_f22); + temp_r31->unk4C.x = temp_r31->unk58.y; + temp_r31->unk4C.y = fn_1_883C(temp_r31->unk4C.y, temp_r31->unk58.x, 0.2f); + temp_r31->unk4C.z = 0; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x + temp_r31->unk68.x, temp_r31->unk1C.y + temp_r31->unk68.y, temp_r31->unk1C.z + temp_r31->unk68.z); + temp_r31->unkC += (1.0f - temp_r31->unkC) * 0.2f; + fn_1_1BE8(object, 0.3f); + if (temp_r31->unk4 & 0x1) { + temp_r31->unk8--; + temp_r31->unk10 = 0; + temp_r31->unk4 |= 2; + temp_f29 = VECMagXZ(&temp_r31->unk40); + if (temp_f29 > 0.0f) { + temp_f29 = 150.0f / temp_f29; + } + temp_r31->unk28.x = temp_r31->unk40.x * temp_f29; + temp_r31->unk28.z = temp_r31->unk40.z * temp_f29; + temp_r31->unk34.x = temp_r31->unk28.x * (1.0f / 60.0f); + temp_r31->unk34.z = temp_r31->unk28.z * (1.0f / 60.0f); + CharModelMotionShiftSet(temp_r31->unk2, object->motion[5], 0, 0.2f, HU3D_MOTATTR_NONE); + HuAudFXPlay(1358); + omVibrate(object->work[0], 12, 4, 2); + if (temp_r31->unk8) { + HuAudCharVoicePlay(temp_r31->unk2, 296); + object->func = fn_1_4A58; + } + else { + temp_r31->unk4 |= 0x30; + lbl_1_bss_4C--; + HuAudCharVoicePlay(temp_r31->unk2, 291); + object->func = fn_1_5684; + } + } + if (fn_1_6878() == 4 && (temp_r31->unk4 & 0x20) == 0) { + CharModelMotionShiftSet(temp_r31->unk2, object->motion[3], 0, 0.2f, HU3D_MOTATTR_NONE); + Hu3DModelShadowSet(object->model[0]); + object->work[1] = 0; + object->func = fn_1_5098; + } } #undef CHECK_IDLE void fn_1_4A58(omObjData *object) { - Work2FAC *temp_r31; - s32 temp_r28; - s32 temp_r26; - s32 sp8; - temp_r31 = object->data; - sp8 = temp_r31->unk0; - temp_r31->unk4 |= 2; - temp_r31->unk1C.y = lbl_1_bss_54; - fn_1_1EBC(object); - temp_r31->unk28.x = (29.0f/30.0f)*temp_r31->unk28.x; - temp_r31->unk28.z = (29.0f/30.0f)*temp_r31->unk28.z; - temp_r31->unk34.x += temp_r31->unk28.x*(1.0f/60.0f); - temp_r31->unk34.y = 0; - temp_r31->unk34.z += temp_r31->unk28.z*(1.0f/60.0f); - - temp_r31->unk58.x += 9.0f; - if(temp_r31->unk58.x >= 360.0f) { - temp_r31->unk58.x -= 360.0f; - } - temp_r31->unk58.y = 0.9f*temp_r31->unk58.y; - temp_r31->unk4C.x = temp_r31->unk58.y; - temp_r31->unk4C.y = temp_r31->unk58.x; - temp_r31->unk4C.z = 0; - omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); - fn_1_1940(temp_r31, &temp_r31->unk68); - omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); - fn_1_1BE8(object, 0.8f); - temp_r26 = temp_r31->unk10 & 0x1; - temp_r31->unk10++; - if(fn_1_6878() == 4) { - temp_r26 = 0; - CharModelMotionShiftSet(temp_r31->unk2, object->motion[3], 0, 0.2f, 0); - Hu3DModelShadowSet(object->model[0]); - object->work[1] = 0; - object->func = fn_1_5098; - } else if(temp_r31->unk10 > 60) { - temp_r26 = 0; - temp_r31->unk4 &= ~0x3; - CharModelMotionShiftSet(temp_r31->unk2, object->motion[4], 0, 0.2f, 0x40000001); - object->func = fn_1_3E80; - } - if(temp_r26) { - Hu3DModelAttrSet(object->model[0], 1); - for(temp_r28=0; temp_r28unk8; temp_r28++) { - Hu3DModelAttrSet(object->model[1], 1); - } - } else { - Hu3DModelAttrReset(object->model[0], 1); - for(temp_r28=0; temp_r28unk8; temp_r28++) { - Hu3DModelAttrReset(object->model[1], 1); - } - } + Work2FAC *temp_r31; + s32 temp_r28; + s32 temp_r26; + s32 sp8; + temp_r31 = object->data; + sp8 = temp_r31->unk0; + temp_r31->unk4 |= 2; + temp_r31->unk1C.y = lbl_1_bss_54; + fn_1_1EBC(object); + temp_r31->unk28.x = (29.0f / 30.0f) * temp_r31->unk28.x; + temp_r31->unk28.z = (29.0f / 30.0f) * temp_r31->unk28.z; + temp_r31->unk34.x += temp_r31->unk28.x * (1.0f / 60.0f); + temp_r31->unk34.y = 0; + temp_r31->unk34.z += temp_r31->unk28.z * (1.0f / 60.0f); + + temp_r31->unk58.x += 9.0f; + if (temp_r31->unk58.x >= 360.0f) { + temp_r31->unk58.x -= 360.0f; + } + temp_r31->unk58.y = 0.9f * temp_r31->unk58.y; + temp_r31->unk4C.x = temp_r31->unk58.y; + temp_r31->unk4C.y = temp_r31->unk58.x; + temp_r31->unk4C.z = 0; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x + temp_r31->unk68.x, temp_r31->unk1C.y + temp_r31->unk68.y, temp_r31->unk1C.z + temp_r31->unk68.z); + fn_1_1BE8(object, 0.8f); + temp_r26 = temp_r31->unk10 & 0x1; + temp_r31->unk10++; + if (fn_1_6878() == 4) { + temp_r26 = 0; + CharModelMotionShiftSet(temp_r31->unk2, object->motion[3], 0, 0.2f, HU3D_MOTATTR_NONE); + Hu3DModelShadowSet(object->model[0]); + object->work[1] = 0; + object->func = fn_1_5098; + } + else if (temp_r31->unk10 > 60) { + temp_r26 = 0; + temp_r31->unk4 &= ~0x3; + CharModelMotionShiftSet(temp_r31->unk2, object->motion[4], 0, 0.2f, HU3D_MOTATTR_LOOP); + object->func = fn_1_3E80; + } + if (temp_r26) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + for (temp_r28 = 0; temp_r28 < temp_r31->unk8; temp_r28++) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + } + else { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + for (temp_r28 = 0; temp_r28 < temp_r31->unk8; temp_r28++) { + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + } + } } -Vec lbl_1_data_144[] = { - { -50, 0, 0 }, - { -16, 0, 0 }, - { 16, 0, 0 }, - { 50, 0, 0 } -}; +Vec lbl_1_data_144[] = { { -50, 0, 0 }, { -16, 0, 0 }, { 16, 0, 0 }, { 50, 0, 0 } }; -Vec lbl_1_data_174[] = { - { 0, 1500, 2500 }, - { 1500, 0, 1 }, - { 0, 0, 0 } -}; +Vec lbl_1_data_174[] = { { 0, 1500, 2500 }, { 1500, 0, 1 }, { 0, 0, 0 } }; void fn_1_54E4(omObjData *object); void fn_1_5098(omObjData *object) { - Work2FAC *temp_r29; - s32 temp_r27; - - temp_r29 = object->data; - object->trans.x = lbl_1_data_144[object->work[0]].x; - object->trans.z = lbl_1_data_144[object->work[0]].z; - if(object->work[1] == 0) { - if(lbl_1_bss_3C < temp_r29->unk8) { - lbl_1_bss_3C = temp_r29->unk8; - } - } else if(object->work[1] == 10 && lbl_1_bss_3C == temp_r29->unk8) { - for(temp_r27=0; lbl_1_bss_28[temp_r27]>=0; temp_r27++); - lbl_1_bss_28[temp_r27] = temp_r29->unk2; - } - object->work[1]++; - temp_r29->unk1C.y = lbl_1_bss_54; - temp_r29->unk58.y = 0; - temp_r29->unk58.x = 0; - object->rot.x = object->rot.y = object->rot.z = 0; - object->trans.y = temp_r29->unk1C.y; - temp_r29->unk1C.x = object->trans.x; - temp_r29->unk1C.z = object->trans.z; - temp_r29->unk1C.y += lbl_1_data_A0[temp_r29->unk2]; - if(object->trans.y < 0) { - object->trans.y = 0; - } - fn_1_1BE8(object, 1.0f); - if(fn_1_6878() == 5) { - object->func = fn_1_54E4; - if(temp_r29->unk14) { - lbl_1_bss_C = 1; - } - } + Work2FAC *temp_r29; + s32 temp_r27; + + temp_r29 = object->data; + object->trans.x = lbl_1_data_144[object->work[0]].x; + object->trans.z = lbl_1_data_144[object->work[0]].z; + if (object->work[1] == 0) { + if (lbl_1_bss_3C < temp_r29->unk8) { + lbl_1_bss_3C = temp_r29->unk8; + } + } + else if (object->work[1] == 10 && lbl_1_bss_3C == temp_r29->unk8) { + for (temp_r27 = 0; lbl_1_bss_28[temp_r27] >= 0; temp_r27++) + ; + lbl_1_bss_28[temp_r27] = temp_r29->unk2; + } + object->work[1]++; + temp_r29->unk1C.y = lbl_1_bss_54; + temp_r29->unk58.y = 0; + temp_r29->unk58.x = 0; + object->rot.x = object->rot.y = object->rot.z = 0; + object->trans.y = temp_r29->unk1C.y; + temp_r29->unk1C.x = object->trans.x; + temp_r29->unk1C.z = object->trans.z; + temp_r29->unk1C.y += lbl_1_data_A0[temp_r29->unk2]; + if (object->trans.y < 0) { + object->trans.y = 0; + } + fn_1_1BE8(object, 1.0f); + if (fn_1_6878() == 5) { + object->func = fn_1_54E4; + if (temp_r29->unk14) { + lbl_1_bss_C = 1; + } + } } void fn_1_54E4(omObjData *object) { - Work2FAC *temp_r30 = object->data; - fn_1_1E54(object); - if(!(temp_r30->unk4 & 0x8)) { - temp_r30->unk4 |= 0x8; - if(temp_r30->unk14 != 0) { - CharModelMotionShiftSet(temp_r30->unk2, object->motion[1], 0, 0.2f, 0); - HuAudCharVoicePlay(temp_r30->unk2, 290); - GWPlayerCoinCollectAdd(object->work[0], temp_r30->unk14); - } else { - CharModelMotionShiftSet(temp_r30->unk2, object->motion[2], 0, 0.2f, 0); - } - object->work[1] = 0; - } else if(object->work[1] == 0 && Hu3DMotionEndCheck(object->model[0])) { - lbl_1_bss_4C--; - object->work[1]++; - } + Work2FAC *temp_r30 = object->data; + fn_1_1E54(object); + if (!(temp_r30->unk4 & 0x8)) { + temp_r30->unk4 |= 0x8; + if (temp_r30->unk14 != 0) { + CharModelMotionShiftSet(temp_r30->unk2, object->motion[1], 0, 0.2f, HU3D_MOTATTR_NONE); + HuAudCharVoicePlay(temp_r30->unk2, 290); + GWPlayerCoinCollectAdd(object->work[0], temp_r30->unk14); + } + else { + CharModelMotionShiftSet(temp_r30->unk2, object->motion[2], 0, 0.2f, HU3D_MOTATTR_NONE); + } + object->work[1] = 0; + } + else if (object->work[1] == 0 && Hu3DMotionEndCheck(object->model[0])) { + lbl_1_bss_4C--; + object->work[1]++; + } } void fn_1_5AA0(omObjData *object); void fn_1_5684(omObjData *object) { - Work2FAC *temp_r31; - s32 temp_r29; - temp_r31 = object->data; - if(fabs(object->trans.x) < 160.0 || fabs(object->trans.z) < 160.0) { - temp_r31->unk1C.x += temp_r31->unk28.x*(1.0f/60.0f); - temp_r31->unk1C.z += temp_r31->unk28.z*(1.0f/60.0f); - temp_r31->unk58.x += 9.0f; - if(temp_r31->unk58.x >= 360.0f) { - temp_r31->unk58.x -= 360.0f; - } - temp_r31->unk58.y = 0.9f*temp_r31->unk58.y; - temp_r31->unk4C.x = 90.0f+temp_r31->unk58.y; - temp_r31->unk4C.y = temp_r31->unk58.x; - temp_r31->unk4C.z = 0; - omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); - fn_1_1940(temp_r31, &temp_r31->unk68); - omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); - } - if(fn_1_6878() >= 4) { - GWPlayerCoinCollectAdd(object->work[0], temp_r31->unk14); - if(lbl_1_bss_48) { - Hu3DModelAttrReset(object->model[0], 1); - CharModelMotionSet(temp_r31->unk2, object->motion[6]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - object->trans.x = lbl_1_data_144[object->work[0]].x; - object->trans.y = 0; - object->trans.z = lbl_1_data_144[object->work[0]].z; - object->rot.x = object->rot.y = object->rot.z = 0; - } else { - Hu3DModelAttrSet(object->model[0], 1); - } - - for(temp_r29=0; temp_r29<4; temp_r29++) { - Hu3DModelAttrSet(object->model[1], 1); - } - object->func = fn_1_5AA0; - } + Work2FAC *temp_r31; + s32 temp_r29; + temp_r31 = object->data; + if (fabs(object->trans.x) < 160.0 || fabs(object->trans.z) < 160.0) { + temp_r31->unk1C.x += temp_r31->unk28.x * (1.0f / 60.0f); + temp_r31->unk1C.z += temp_r31->unk28.z * (1.0f / 60.0f); + temp_r31->unk58.x += 9.0f; + if (temp_r31->unk58.x >= 360.0f) { + temp_r31->unk58.x -= 360.0f; + } + temp_r31->unk58.y = 0.9f * temp_r31->unk58.y; + temp_r31->unk4C.x = 90.0f + temp_r31->unk58.y; + temp_r31->unk4C.y = temp_r31->unk58.x; + temp_r31->unk4C.z = 0; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x + temp_r31->unk68.x, temp_r31->unk1C.y + temp_r31->unk68.y, temp_r31->unk1C.z + temp_r31->unk68.z); + } + if (fn_1_6878() >= 4) { + GWPlayerCoinCollectAdd(object->work[0], temp_r31->unk14); + if (lbl_1_bss_48) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + CharModelMotionSet(temp_r31->unk2, object->motion[6]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->trans.x = lbl_1_data_144[object->work[0]].x; + object->trans.y = 0; + object->trans.z = lbl_1_data_144[object->work[0]].z; + object->rot.x = object->rot.y = object->rot.z = 0; + } + else { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + object->func = fn_1_5AA0; + } } void fn_1_5AA0(omObjData *object) { - Work2FAC *sp8 = object->data; + Work2FAC *sp8 = object->data; } void fn_1_5AB4(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - float temp_f31; - if(particle->unk_00 == 0) { - particle->unk_00++; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk00 = 0; - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - return; - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk00_s16 == 0 || temp_r31->unk00_s16 != 1) { - continue; - } - temp_r31->unk02++; - temp_f31 = temp_r31->unk02-10.2f; - if(temp_f31 < 0.0f) { - temp_r31->unk34.x += (temp_r31->unk08.x-temp_r31->unk34.x)*0.2f; - temp_r31->unk34.y += (temp_r31->unk08.y-temp_r31->unk34.y)*0.15f; - temp_r31->unk34.z += (temp_r31->unk08.z-temp_r31->unk34.z)*0.2f; - temp_r31->unk2C += (temp_r31->unk14.x-temp_r31->unk2C)*0.2f; - temp_r31->unk14.y += (temp_r31->unk14.z-temp_r31->unk14.y)*0.2f; - temp_r31->unk40.a = temp_r31->unk14.y; - } else { - temp_r31->unk34.x += (temp_r31->unk20*1.5f)*(1.0f/60.0f); - temp_r31->unk34.y += (temp_r31->unk24*1.5f)*(1.0f/60.0f); - temp_r31->unk34.z += (temp_r31->unk28*1.5f)*(1.0f/60.0f); - temp_r31->unk2C += (temp_r31->unk14.x*0.01f); - temp_r31->unk40.a = 0.92f*temp_r31->unk40.a; - } - } - DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + HsfanimStruct01 *temp_r31; + s32 temp_r29; + float temp_f31; + if (particle->unk_00 == 0) { + particle->unk_00++; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + return; + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk00 == 0 || temp_r31->unk00 != 1) { + continue; + } + temp_r31->unk02++; + temp_f31 = temp_r31->unk02 - 10.2f; + if (temp_f31 < 0.0f) { + temp_r31->unk34.x += (temp_r31->unk08.x - temp_r31->unk34.x) * 0.2f; + temp_r31->unk34.y += (temp_r31->unk08.y - temp_r31->unk34.y) * 0.15f; + temp_r31->unk34.z += (temp_r31->unk08.z - temp_r31->unk34.z) * 0.2f; + temp_r31->unk2C += (temp_r31->unk14.x - temp_r31->unk2C) * 0.2f; + temp_r31->unk14.y += (temp_r31->unk14.z - temp_r31->unk14.y) * 0.2f; + temp_r31->unk40.a = temp_r31->unk14.y; + } + else { + temp_r31->unk34.x += (temp_r31->unk20 * 1.5f) * (1.0f / 60.0f); + temp_r31->unk34.y += (temp_r31->unk24 * 1.5f) * (1.0f / 60.0f); + temp_r31->unk34.z += (temp_r31->unk28 * 1.5f) * (1.0f / 60.0f); + temp_r31->unk2C += (temp_r31->unk14.x * 0.01f); + temp_r31->unk40.a = 0.92f * temp_r31->unk40.a; + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_5DCC(s32 arg0, Vec *arg1, u32 arg2) { - float temp_f31; - float temp_f30; - - HsfanimStruct01 *temp_r31; - ParticleData *temp_r29; - s32 temp_r28; - temp_r29 = Hu3DData[arg0].unk_120; - if(temp_r29->unk_00 != 0) { - temp_r31 = temp_r29->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk00_s16) { - continue; - } - temp_r31->unk00 = 1; - temp_r31->unk02 = 0; - temp_r31->unk34.x = arg1->x; - temp_r31->unk34.y = 11990; - temp_r31->unk34.z = arg1->z; - temp_f31 = frandmod(1000)*(1.0f/1000.0f); - temp_f30 = frandmod(1000)*(360.0f/1000.0f); - temp_r31->unk20 = 10*(0.8f*(temp_f31*sind(temp_f30))); - temp_r31->unk24 = 10.0f*(5.0f*(1.0f-(temp_f31*temp_f31))); - temp_r31->unk28 = 10*(0.8f*(temp_f31*cosd(temp_f30))); - temp_r31->unk08.x = temp_r31->unk20+arg1->x; - temp_r31->unk08.y = temp_r31->unk24+temp_r31->unk34.y; - temp_r31->unk08.z = temp_r31->unk28+arg1->z; - temp_r31->unk14.x = (6.0f+(0.012f*frandmod(1000))); - temp_r31->unk2C = 2.0f; - temp_r31->unk14.y = temp_r31->unk40.a = 10; - temp_r31->unk14.z = frandmod(100)+64; - temp_f31 = 0.00040000002f*frandmod(1000); - temp_f31 += 0.6f*cosd(temp_f30); - temp_r31->unk40.r = (55*temp_f31)+200; - temp_r31->unk40.g = (50*temp_f31)+205; - temp_r31->unk40.b = (5*temp_f31)+250; - if(--arg2 == 0) { - break; - } - } - } + float temp_f31; + float temp_f30; + + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + temp_r29 = Hu3DData[arg0].unk_120; + if (temp_r29->unk_00 != 0) { + temp_r31 = temp_r29->unk_48; + for (temp_r28 = 0; temp_r28 < temp_r29->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk00) { + continue; + } + temp_r31->unk00 = 1; + temp_r31->unk02 = 0; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = 11990; + temp_r31->unk34.z = arg1->z; + temp_f31 = frandmod(1000) * (1.0f / 1000.0f); + temp_f30 = frandmod(1000) * (360.0f / 1000.0f); + temp_r31->unk20 = 10 * (0.8f * (temp_f31 * sind(temp_f30))); + temp_r31->unk24 = 10.0f * (5.0f * (1.0f - (temp_f31 * temp_f31))); + temp_r31->unk28 = 10 * (0.8f * (temp_f31 * cosd(temp_f30))); + temp_r31->unk08.x = temp_r31->unk20 + arg1->x; + temp_r31->unk08.y = temp_r31->unk24 + temp_r31->unk34.y; + temp_r31->unk08.z = temp_r31->unk28 + arg1->z; + temp_r31->unk14.x = (6.0f + (0.012f * frandmod(1000))); + temp_r31->unk2C = 2.0f; + temp_r31->unk14.y = temp_r31->unk40.a = 10; + temp_r31->unk14.z = frandmod(100) + 64; + temp_f31 = 0.00040000002f * frandmod(1000); + temp_f31 += 0.6f * cosd(temp_f30); + temp_r31->unk40.r = (55 * temp_f31) + 200; + temp_r31->unk40.g = (50 * temp_f31) + 205; + temp_r31->unk40.b = (5 * temp_f31) + 250; + if (--arg2 == 0) { + break; + } + } + } } typedef struct work_61FC { - s32 unk0; - s32 unk4; - u32 unk8; - float unkC[2]; - s32 unk14; - s32 unk18; - s32 unk1C[7]; - float unk38[7]; - s16 unk54[7]; + s32 unk0; + s32 unk4; + u32 unk8; + float unkC[2]; + s32 unk14; + s32 unk18; + s32 unk1C[7]; + float unk38[7]; + s16 unk54[7]; } Work61FC; void fn_1_6540(omObjData *object); void fn_1_61FC(omObjData *object) { - Work61FC *temp_r31; - s32 temp_r30; - s32 temp_r28; - s32 temp_r26; - - Work61FC *temp_r27; - - float sp8[][2] = { - 96, 64, - 486, 64, - 96, 416, - 486, 416 - }; - float sp28[][2] = { - 0, 0, - 0, 0, - -54, -1, - 2, 1, - -20, 0, - 42, 2, - 22, 2 - }; - - object->stat |= 0x100; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 4*sizeof(Work61FC), MEMORY_DEFAULT_NUM); - temp_r27 = object->data; - memset(temp_r27, 0, 4*sizeof(Work61FC)); - temp_r31 = temp_r27; - for(temp_r28=0; temp_r28<4; temp_r28++, temp_r31++) { - for(temp_r30=0; temp_r30<7; temp_r30++) { - temp_r31->unk54[temp_r30] = -1; - temp_r31->unk38[temp_r30] = 1; - } - temp_r31->unkC[0] = sp8[temp_r28][0]; - temp_r31->unkC[1] = sp8[temp_r28][1]; - temp_r26 = espEntry(0x610029, 4, 0); - temp_r31->unk54[0] = temp_r26; - espColorSet(temp_r26, 0, 0, 0); - espTPLvlSet(temp_r26, 0.5); - temp_r31->unk54[1] = espEntry(0x610028, 3, 0); - temp_r31->unk54[2] = espEntry(lbl_1_data_0[GWPlayerCfg[temp_r28].character], 2, 0); - temp_r31->unk54[3] = espEntry(0x27002B, 2, 0); - temp_r31->unk54[4] = espEntry(0x610008, 2, 0); - temp_r31->unk54[6] = espEntry(0x610033, 2, 0); - temp_r31->unk54[5] = espEntry(0x610033, 2, 0); - for(temp_r30=0; temp_r30<7; temp_r30++) { - if(temp_r31->unk54[temp_r30] >= 0) { - espPosSet(temp_r31->unk54[temp_r30], temp_r31->unkC[0]+sp28[temp_r30][0], temp_r31->unkC[1]+sp28[temp_r30][1]); - espDispOff(temp_r31->unk54[temp_r30]); - } - } - temp_r31->unk0 = 0; - } - HuDataDirClose(DATADIR_MGCONST); - object->func = fn_1_6540; - (void)temp_r27; - (void)temp_r27; + Work61FC *temp_r31; + s32 temp_r30; + s32 temp_r28; + s32 temp_r26; + + Work61FC *temp_r27; + + float sp8[][2] = { 96, 64, 486, 64, 96, 416, 486, 416 }; + float sp28[][2] = { 0, 0, 0, 0, -54, -1, 2, 1, -20, 0, 42, 2, 22, 2 }; + + object->stat |= 0x100; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(Work61FC), MEMORY_DEFAULT_NUM); + temp_r27 = object->data; + memset(temp_r27, 0, 4 * sizeof(Work61FC)); + temp_r31 = temp_r27; + for (temp_r28 = 0; temp_r28 < 4; temp_r28++, temp_r31++) { + for (temp_r30 = 0; temp_r30 < 7; temp_r30++) { + temp_r31->unk54[temp_r30] = -1; + temp_r31->unk38[temp_r30] = 1; + } + temp_r31->unkC[0] = sp8[temp_r28][0]; + temp_r31->unkC[1] = sp8[temp_r28][1]; + temp_r26 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x29), 4, 0); + temp_r31->unk54[0] = temp_r26; + espColorSet(temp_r26, 0, 0, 0); + espTPLvlSet(temp_r26, 0.5); + temp_r31->unk54[1] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x28), 3, 0); + temp_r31->unk54[2] = espEntry(lbl_1_data_0[GWPlayerCfg[temp_r28].character], 2, 0); + temp_r31->unk54[3] = espEntry(DATA_MAKE_NUM(DATADIR_M408, 0x2B), 2, 0); + temp_r31->unk54[4] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x08), 2, 0); + temp_r31->unk54[6] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x33), 2, 0); + temp_r31->unk54[5] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x33), 2, 0); + for (temp_r30 = 0; temp_r30 < 7; temp_r30++) { + if (temp_r31->unk54[temp_r30] >= 0) { + espPosSet(temp_r31->unk54[temp_r30], temp_r31->unkC[0] + sp28[temp_r30][0], temp_r31->unkC[1] + sp28[temp_r30][1]); + espDispOff(temp_r31->unk54[temp_r30]); + } + } + temp_r31->unk0 = 0; + } + HuDataDirClose(DATADIR_MGCONST); + object->func = fn_1_6540; + (void)temp_r27; + (void)temp_r27; } void fn_1_6540(omObjData *object) { - float temp_f31; - Work61FC *temp_r31; - s32 temp_r30; - s32 temp_r29; - Work61FC *temp_r28 = object->data; - temp_r31 = temp_r28; - for(temp_r29=0; temp_r29<4; temp_r29++, temp_r31++) { - switch(temp_r31->unk14) { - case 0: - if(fn_1_6878() == 3) { - temp_r31->unk14 = 1; - } - break; - - case 1: - temp_r31->unk18 = 0; - temp_r31->unk1C[5] = temp_r31->unk8%10; - temp_r31->unk1C[6] = (temp_r31->unk8/10)%10; - for(temp_r30=0; temp_r30<7; temp_r30++) { - if(temp_r31->unk54[temp_r30] >= 0) { - espDispOn(temp_r31->unk54[temp_r30]); - } - } - if(temp_r31->unk0) { - temp_r31->unk38[5] = temp_r31->unk38[6] = 0.5f; - temp_r31->unk14++; - } else { - temp_r31->unk0 = 1; - temp_r31->unk38[5] = temp_r31->unk38[6] = 1.0f; - temp_r31->unk14 += 3; - break; - } - - case 2: - temp_f31 = temp_r31->unk38[5]; - temp_f31 += 0.10000001f; - if(temp_f31 >= 1.5f) { - temp_r31->unk14++; - } - temp_r31->unk38[5] = temp_r31->unk38[6] = temp_f31; - break; - - case 3: - temp_f31 = temp_r31->unk38[5]; - temp_f31 -= 0.10000001f; - if(temp_f31 <= 1.0f) { - temp_f31 = 1.0f; - temp_r31->unk14++; - } - temp_r31->unk38[5] = temp_r31->unk38[6] = temp_f31; - break; - - default: - break; - } - temp_r31->unk18++; - for(temp_r30=0; temp_r30<7; temp_r30++) { - espBankSet(temp_r31->unk54[temp_r30], temp_r31->unk1C[temp_r30]); - espScaleSet(temp_r31->unk54[temp_r30], temp_r31->unk38[temp_r30], temp_r31->unk38[temp_r30]); - } - } + float temp_f31; + Work61FC *temp_r31; + s32 temp_r30; + s32 temp_r29; + Work61FC *temp_r28 = object->data; + temp_r31 = temp_r28; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++, temp_r31++) { + switch (temp_r31->unk14) { + case 0: + if (fn_1_6878() == 3) { + temp_r31->unk14 = 1; + } + break; + + case 1: + temp_r31->unk18 = 0; + temp_r31->unk1C[5] = temp_r31->unk8 % 10; + temp_r31->unk1C[6] = (temp_r31->unk8 / 10) % 10; + for (temp_r30 = 0; temp_r30 < 7; temp_r30++) { + if (temp_r31->unk54[temp_r30] >= 0) { + espDispOn(temp_r31->unk54[temp_r30]); + } + } + if (temp_r31->unk0) { + temp_r31->unk38[5] = temp_r31->unk38[6] = 0.5f; + temp_r31->unk14++; + } + else { + temp_r31->unk0 = 1; + temp_r31->unk38[5] = temp_r31->unk38[6] = 1.0f; + temp_r31->unk14 += 3; + break; + } + + case 2: + temp_f31 = temp_r31->unk38[5]; + temp_f31 += 0.10000001f; + if (temp_f31 >= 1.5f) { + temp_r31->unk14++; + } + temp_r31->unk38[5] = temp_r31->unk38[6] = temp_f31; + break; + + case 3: + temp_f31 = temp_r31->unk38[5]; + temp_f31 -= 0.10000001f; + if (temp_f31 <= 1.0f) { + temp_f31 = 1.0f; + temp_r31->unk14++; + } + temp_r31->unk38[5] = temp_r31->unk38[6] = temp_f31; + break; + + default: + break; + } + temp_r31->unk18++; + for (temp_r30 = 0; temp_r30 < 7; temp_r30++) { + espBankSet(temp_r31->unk54[temp_r30], temp_r31->unk1C[temp_r30]); + espScaleSet(temp_r31->unk54[temp_r30], temp_r31->unk38[temp_r30], temp_r31->unk38[temp_r30]); + } + } } void fn_1_67C4(u16 arg0, u16 arg1) { - Work61FC *temp_r31; - temp_r31 = lbl_1_bss_8->data; - if(fn_1_6878() == 3) { - temp_r31[arg0].unk4 += arg1; - temp_r31[arg0].unk8 += arg1; - temp_r31[arg0].unk14 = 1; - } + Work61FC *temp_r31; + temp_r31 = lbl_1_bss_8->data; + if (fn_1_6878() == 3) { + temp_r31[arg0].unk4 += arg1; + temp_r31[arg0].unk8 += arg1; + temp_r31[arg0].unk14 = 1; + } } u32 fn_1_6868(void) { - return lbl_1_bss_62; + return lbl_1_bss_62; } - u32 fn_1_6878(void) { - return lbl_1_bss_60; + return lbl_1_bss_60; } float fn_1_6888(void) { - return lbl_1_bss_54; + return lbl_1_bss_54; } -void fn_1_6898(void) -{ - -} +void fn_1_6898(void) { } s32 fn_1_689C(void) { - return 0; + return 0; } -void fn_1_68A4(void) -{ - -} +void fn_1_68A4(void) { } Work2FAC *fn_1_68A8(s32 arg0) { - return lbl_1_bss_6C[arg0]->data; + return lbl_1_bss_6C[arg0]->data; } float fn_1_68C4(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE, float argF, float arg2, float arg3) { - float temp_f30; - float sp14; - float temp_f29; - float temp_f28; - - - float temp_f27; - float temp_f26; - - float sp10; - - sp14 = (argC + arg3) * (argC + arg3); - temp_f27 = (arg2 * arg2) + (((argB * argB) + ((argF * argF) + ((argA * argA) - (2.0f * argA * argF)))) - (2.0f * argB * arg2)); - temp_f26 = 2.0f * ((argE * arg2) + ((((arg9 * argB) + ((argD * argF) + (((arg8 * argA) - (arg8 * argF)) - (argD * argA)))) - (arg9 * arg2)) - (argE * argB))); - sp10 = ((argE * argE) + (((arg9 * arg9) + ((argD * argD) + ((arg8 * arg8) - (2.0f * arg8 * argD)))) - (2.0f * arg9 * argE))) - sp14; - if(0.0f == temp_f27) { - return -1; - } - temp_f30 = (temp_f26 * temp_f26) - (4.0f * temp_f27 * sp10); - if(temp_f30 <= 0.0) { - return -1; - } - temp_f30 = sqrtf(temp_f30); - temp_f29 = (-temp_f26 + temp_f30) / (2.0f * temp_f27); + float temp_f30; + float sp14; + float temp_f29; + float temp_f28; + + float temp_f27; + float temp_f26; + + float sp10; + + sp14 = (argC + arg3) * (argC + arg3); + temp_f27 = (arg2 * arg2) + (((argB * argB) + ((argF * argF) + ((argA * argA) - (2.0f * argA * argF)))) - (2.0f * argB * arg2)); + temp_f26 = 2.0f + * ((argE * arg2) + ((((arg9 * argB) + ((argD * argF) + (((arg8 * argA) - (arg8 * argF)) - (argD * argA)))) - (arg9 * arg2)) - (argE * argB))); + sp10 = ((argE * argE) + (((arg9 * arg9) + ((argD * argD) + ((arg8 * arg8) - (2.0f * arg8 * argD)))) - (2.0f * arg9 * argE))) - sp14; + if (0.0f == temp_f27) { + return -1; + } + temp_f30 = (temp_f26 * temp_f26) - (4.0f * temp_f27 * sp10); + if (temp_f30 <= 0.0) { + return -1; + } + temp_f30 = sqrtf(temp_f30); + temp_f29 = (-temp_f26 + temp_f30) / (2.0f * temp_f27); temp_f28 = (-temp_f26 - temp_f30) / (2.0f * temp_f27); - if(temp_f29 >= 0.0f && temp_f28 >= 0.0f) { - if(temp_f29 < temp_f28) { - if(temp_f29 < 1.0f) { - return temp_f29; - } - } - if(temp_f28 < 1.0f) { - return temp_f28; - } - } - return -1; + if (temp_f29 >= 0.0f && temp_f28 >= 0.0f) { + if (temp_f29 < temp_f28) { + if (temp_f29 < 1.0f) { + return temp_f29; + } + } + if (temp_f28 < 1.0f) { + return temp_f28; + } + } + return -1; } void fn_1_6C28(float *arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6) { - float temp_f24; - float temp_f29; - float temp_f28; - float temp_f31; - float temp_f30; - - float temp_f25; - - temp_f29 = arg3; - temp_f28 = arg4; - temp_f24 = sqrtf((temp_f29*temp_f29)+(temp_f28*temp_f28)); - if(temp_f24 != 0.0) { - temp_f25 = 1.0f/temp_f24; - temp_f29 *= temp_f25; - temp_f28 *= temp_f25; - } - temp_f31 = arg5-arg1; - temp_f30 = arg6-arg2; - temp_f25 = 1.0f/sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - temp_f31 *= temp_f25; - temp_f30 *= temp_f25; - temp_f25 = (temp_f29*temp_f31)+(temp_f28*temp_f30); - arg0[0] = temp_f25*(temp_f31*temp_f24); - arg0[1] = temp_f25*(temp_f30*temp_f24); + float temp_f24; + float temp_f29; + float temp_f28; + float temp_f31; + float temp_f30; + + float temp_f25; + + temp_f29 = arg3; + temp_f28 = arg4; + temp_f24 = sqrtf((temp_f29 * temp_f29) + (temp_f28 * temp_f28)); + if (temp_f24 != 0.0) { + temp_f25 = 1.0f / temp_f24; + temp_f29 *= temp_f25; + temp_f28 *= temp_f25; + } + temp_f31 = arg5 - arg1; + temp_f30 = arg6 - arg2; + temp_f25 = 1.0f / sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + temp_f31 *= temp_f25; + temp_f30 *= temp_f25; + temp_f25 = (temp_f29 * temp_f31) + (temp_f28 * temp_f30); + arg0[0] = temp_f25 * (temp_f31 * temp_f24); + arg0[1] = temp_f25 * (temp_f30 * temp_f24); } -void fn_1_6F4C(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE, float argF, float *arg0, float *arg1, float *arg2, float *arg3) +void fn_1_6F4C(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE, float argF, float *arg0, float *arg1, float *arg2, + float *arg3) { - float sp70[2]; - float sp68[2]; - float sp64; - float sp60; - sp64 = arg8+(0.5f*(argC-arg8)); - sp60 = arg9+(0.5f*(argD-arg9)); - fn_1_6C28(sp70, arg8, arg9, argA, argB, sp64, sp60); - fn_1_6C28(sp68, argC, argD, argE, argF, sp64, sp60); - *arg0 = sp68[0]-sp70[0]; - *arg1 = sp68[1]-sp70[1]; - *arg2 = sp70[0]-sp68[0]; - *arg3 = sp70[1]-sp68[1]; + float sp70[2]; + float sp68[2]; + float sp64; + float sp60; + sp64 = arg8 + (0.5f * (argC - arg8)); + sp60 = arg9 + (0.5f * (argD - arg9)); + fn_1_6C28(sp70, arg8, arg9, argA, argB, sp64, sp60); + fn_1_6C28(sp68, argC, argD, argE, argF, sp64, sp60); + *arg0 = sp68[0] - sp70[0]; + *arg1 = sp68[1] - sp70[1]; + *arg2 = sp70[0] - sp68[0]; + *arg3 = sp70[1] - sp68[1]; } void fn_1_75B8(float *arg0, float *arg1, float arg2, float arg3, float arg4, float arg5, float arg6, float arg7) { - float temp_f26 = arg2+(0.5f*(arg6-arg2)); - float temp_f25 = arg3+(0.5f*(arg7-arg3)); - float temp_f31 = arg2-temp_f26; - float temp_f30 = arg3-temp_f25; - float temp_f28; - if(temp_f31 == 0.0f || temp_f30 == 0.0f) { - *arg0 = *arg1 = 0.0f; - return; - } - temp_f28 = 1.0f/sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - temp_f31 *= temp_f28; - temp_f30 *= temp_f28; - *arg0 = (2.0f*temp_f31)*((-arg4*temp_f31)-(arg5*temp_f30)); - *arg1 = (2.0f*temp_f30)*((-arg4*temp_f31)-(arg5*temp_f30)); + float temp_f26 = arg2 + (0.5f * (arg6 - arg2)); + float temp_f25 = arg3 + (0.5f * (arg7 - arg3)); + float temp_f31 = arg2 - temp_f26; + float temp_f30 = arg3 - temp_f25; + float temp_f28; + if (temp_f31 == 0.0f || temp_f30 == 0.0f) { + *arg0 = *arg1 = 0.0f; + return; + } + temp_f28 = 1.0f / sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + temp_f31 *= temp_f28; + temp_f30 *= temp_f28; + *arg0 = (2.0f * temp_f31) * ((-arg4 * temp_f31) - (arg5 * temp_f30)); + *arg1 = (2.0f * temp_f30) * ((-arg4 * temp_f31) - (arg5 * temp_f30)); } void fn_1_7818(omObjData *arg0, omObjData *arg1) { - Work2FAC *temp_r31 = arg0->data; - Work2FAC *temp_r30 = arg1->data; - - float sp14; - float sp10; - float spC; - float sp8; - fn_1_6F4C(temp_r31->unk1C.x, temp_r31->unk1C.z, temp_r31->unk34.x, temp_r31->unk34.z, - temp_r30->unk1C.x, temp_r30->unk1C.z, temp_r30->unk34.x, temp_r30->unk34.z, - &sp14, &sp10, &spC, &sp8); - temp_r31->unk34.x += sp14; - temp_r31->unk34.z += sp10; - temp_r30->unk34.x += spC; - temp_r30->unk34.z += sp8; + Work2FAC *temp_r31 = arg0->data; + Work2FAC *temp_r30 = arg1->data; + + float sp14; + float sp10; + float spC; + float sp8; + fn_1_6F4C(temp_r31->unk1C.x, temp_r31->unk1C.z, temp_r31->unk34.x, temp_r31->unk34.z, temp_r30->unk1C.x, temp_r30->unk1C.z, temp_r30->unk34.x, + temp_r30->unk34.z, &sp14, &sp10, &spC, &sp8); + temp_r31->unk34.x += sp14; + temp_r31->unk34.z += sp10; + temp_r30->unk34.x += spC; + temp_r30->unk34.z += sp8; } s32 fn_1_78D8(void) { - float temp_f29; - float temp_f18; - - Work2FAC *temp_r31; - s32 temp_r30; - Work2FAC *temp_r29; - Work2FAC *temp_r28; - s32 temp_r27; - s32 temp_r26; - omObjData *temp_r25; - omObjData *temp_r24; - omObjData *temp_r23; - - omObjData *sp30[2]; - temp_r26 = -1; - temp_f18 = 0; - temp_f29 = 9999; - for(temp_r27=0; temp_r27<3; temp_r27++) { - temp_r25 = lbl_1_bss_6C[temp_r27]; - temp_r29 = temp_r25->data; - if(temp_r29->unk4 & 0x10) { - continue; - } - for(temp_r30=temp_r27+1; temp_r30<4; temp_r30++) { - temp_r24 = lbl_1_bss_6C[temp_r30]; - temp_r28 = temp_r24->data; - if(temp_r28->unk4 & 0x10) { - continue; - } - temp_f18 = fn_1_68C4(temp_r29->unk1C.x, temp_r29->unk1C.z, temp_r29->unk34.x*lbl_1_bss_4, temp_r29->unk34.z*lbl_1_bss_4, - temp_r29->unk58.z, temp_r28->unk1C.x, temp_r28->unk1C.z, temp_r28->unk34.x*lbl_1_bss_4, temp_r28->unk34.z*lbl_1_bss_4, - temp_r28->unk58.z); - if(temp_f18 >= 0.0 && temp_f18 <= temp_f29) { - temp_f29 = temp_f18; - temp_r26 = 1; - sp30[0] = temp_r25; - sp30[1] = temp_r24; - } - } - } - if(temp_r26 < 0) { - return 0; - } - if(temp_f29 > 0.0f) { - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r31 = lbl_1_bss_6C[temp_r30]->data; - temp_r31->unk64 = 0; - } - } - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r23 = lbl_1_bss_6C[temp_r30]; - temp_r31 = temp_r23->data; - if(!(temp_r31->unk4 & 0x10)) { - temp_r31->unk1C.x += lbl_1_bss_4*(temp_r31->unk34.x*temp_f29); - temp_r31->unk1C.z += lbl_1_bss_4*(temp_r31->unk34.z*temp_f29); - } - } - if(temp_r26 != 1) { - (void)temp_r26; - } else { - fn_1_7818(sp30[0], sp30[1]); - for(temp_r30=0; temp_r30<2; temp_r30++) { - temp_r31 = sp30[temp_r30]->data; - if(temp_r31->unk4 & 0x10) { - continue; - } - temp_r31->unk64++; - if(temp_r31->unk18 == 0) { - lbl_1_bss_0 = 1; - } - temp_r31->unk18 = 18; - if(temp_r31->unk64 > 2.0f) { - temp_r31->unk34.x = temp_r31->unk34.z = 0; - } - } - } - lbl_1_bss_4 *= (1.0f-temp_f29); - return 1; + float temp_f29; + float temp_f18; + + Work2FAC *temp_r31; + s32 temp_r30; + Work2FAC *temp_r29; + Work2FAC *temp_r28; + s32 temp_r27; + s32 temp_r26; + omObjData *temp_r25; + omObjData *temp_r24; + omObjData *temp_r23; + + omObjData *sp30[2]; + temp_r26 = -1; + temp_f18 = 0; + temp_f29 = 9999; + for (temp_r27 = 0; temp_r27 < 3; temp_r27++) { + temp_r25 = lbl_1_bss_6C[temp_r27]; + temp_r29 = temp_r25->data; + if (temp_r29->unk4 & 0x10) { + continue; + } + for (temp_r30 = temp_r27 + 1; temp_r30 < 4; temp_r30++) { + temp_r24 = lbl_1_bss_6C[temp_r30]; + temp_r28 = temp_r24->data; + if (temp_r28->unk4 & 0x10) { + continue; + } + temp_f18 + = fn_1_68C4(temp_r29->unk1C.x, temp_r29->unk1C.z, temp_r29->unk34.x * lbl_1_bss_4, temp_r29->unk34.z * lbl_1_bss_4, temp_r29->unk58.z, + temp_r28->unk1C.x, temp_r28->unk1C.z, temp_r28->unk34.x * lbl_1_bss_4, temp_r28->unk34.z * lbl_1_bss_4, temp_r28->unk58.z); + if (temp_f18 >= 0.0 && temp_f18 <= temp_f29) { + temp_f29 = temp_f18; + temp_r26 = 1; + sp30[0] = temp_r25; + sp30[1] = temp_r24; + } + } + } + if (temp_r26 < 0) { + return 0; + } + if (temp_f29 > 0.0f) { + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r31 = lbl_1_bss_6C[temp_r30]->data; + temp_r31->unk64 = 0; + } + } + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r23 = lbl_1_bss_6C[temp_r30]; + temp_r31 = temp_r23->data; + if (!(temp_r31->unk4 & 0x10)) { + temp_r31->unk1C.x += lbl_1_bss_4 * (temp_r31->unk34.x * temp_f29); + temp_r31->unk1C.z += lbl_1_bss_4 * (temp_r31->unk34.z * temp_f29); + } + } + if (temp_r26 != 1) { + (void)temp_r26; + } + else { + fn_1_7818(sp30[0], sp30[1]); + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + temp_r31 = sp30[temp_r30]->data; + if (temp_r31->unk4 & 0x10) { + continue; + } + temp_r31->unk64++; + if (temp_r31->unk18 == 0) { + lbl_1_bss_0 = 1; + } + temp_r31->unk18 = 18; + if (temp_r31->unk64 > 2.0f) { + temp_r31->unk34.x = temp_r31->unk34.z = 0; + } + } + } + lbl_1_bss_4 *= (1.0f - temp_f29); + return 1; } void fn_1_8020(void) { - Work2FAC *temp_r31; - s32 temp_r30; - omObjData *temp_r29; - lbl_1_bss_4 = 1.0f; - lbl_1_bss_0 = 0; - while(fn_1_78D8()); - if(lbl_1_bss_0) { - HuAudFXPlay(1359); - } - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r29 = lbl_1_bss_6C[temp_r30]; - temp_r31 = temp_r29->data; - if(temp_r31->unk18 != 0) { - temp_r31->unk18--; - } - if(temp_r31->unk4 & 0x10) { - continue; - } - temp_r31->unk1C.x += temp_r31->unk34.x*lbl_1_bss_4; - temp_r31->unk1C.z += temp_r31->unk34.z*lbl_1_bss_4; - temp_r31->unk28.x = temp_r31->unk34.x*60.0f; - temp_r31->unk28.z = temp_r31->unk34.z*60.0f; - temp_r31->unk34.x = temp_r31->unk34.z = 0; - } + Work2FAC *temp_r31; + s32 temp_r30; + omObjData *temp_r29; + lbl_1_bss_4 = 1.0f; + lbl_1_bss_0 = 0; + while (fn_1_78D8()) + ; + if (lbl_1_bss_0) { + HuAudFXPlay(1359); + } + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r29 = lbl_1_bss_6C[temp_r30]; + temp_r31 = temp_r29->data; + if (temp_r31->unk18 != 0) { + temp_r31->unk18--; + } + if (temp_r31->unk4 & 0x10) { + continue; + } + temp_r31->unk1C.x += temp_r31->unk34.x * lbl_1_bss_4; + temp_r31->unk1C.z += temp_r31->unk34.z * lbl_1_bss_4; + temp_r31->unk28.x = temp_r31->unk34.x * 60.0f; + temp_r31->unk28.z = temp_r31->unk34.z * 60.0f; + temp_r31->unk34.x = temp_r31->unk34.z = 0; + } } void fn_1_817C(Vec *arg0, Vec *arg1) { - Vec sp10; - sp10.x = arg1->x-arg0->x; - sp10.y = arg1->y-arg0->y; - sp10.z = arg1->z-arg0->z; - Center.x = arg1->x; - Center.y = arg1->y; - Center.z = arg1->z; - CRot.x = atan2d(sp10.y, VECMagXZ(&sp10)); - CRot.y = atan2d(-sp10.x, -sp10.z); - CRot.z = 0; - CZoom = sqrtf(VECMag2Point(&sp10)); + Vec sp10; + sp10.x = arg1->x - arg0->x; + sp10.y = arg1->y - arg0->y; + sp10.z = arg1->z - arg0->z; + Center.x = arg1->x; + Center.y = arg1->y; + Center.z = arg1->z; + CRot.x = atan2d(sp10.y, VECMagXZ(&sp10)); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0; + CZoom = sqrtf(VECMag2Point(&sp10)); } void fn_1_84C4(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5) { - Vec sp40; - Vec sp34; - sp40.x = arg0; - sp40.y = arg1; - sp40.z = arg2; - sp34.x = arg3; - sp34.y = arg4; - sp34.z = arg5; - fn_1_817C(&sp40, &sp34); + Vec sp40; + Vec sp34; + sp40.x = arg0; + sp40.y = arg1; + sp40.z = arg2; + sp34.x = arg3; + sp34.y = arg4; + sp34.z = arg5; + fn_1_817C(&sp40, &sp34); } float fn_1_883C(float arg0, float arg1, float arg2) { - float temp_f31; - temp_f31 = fmodf(arg1-arg0, 360); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } - temp_f31 = fmodf((arg2*temp_f31)+arg0, 360); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - return temp_f31; + float temp_f31; + temp_f31 = fmodf(arg1 - arg0, 360); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + temp_f31 = fmodf((arg2 * temp_f31) + arg0, 360); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + return temp_f31; } diff --git a/src/REL/m408Dll/object.c b/src/REL/m408Dll/object.c index b2ccec82..a7db6c04 100644 --- a/src/REL/m408Dll/object.c +++ b/src/REL/m408Dll/object.c @@ -1,14 +1,14 @@ #include "game/object.h" -#include "game/objsub.h" -#include "game/wipe.h" #include "game/chrman.h" #include "game/minigame_seq.h" +#include "game/objsub.h" #include "game/pad.h" +#include "game/wipe.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/sprite.h" #include "game/audio.h" @@ -16,33 +16,33 @@ #include "REL/m408Dll.h" -#include "math.h" #include "ext_math.h" +#include "math.h" typedef struct struct_data_20C { - s32 unk0; - float unk4; - float unk8; + s32 unk0; + float unk4; + float unk8; } StructData20C; typedef struct struct_bss_da4 { - s32 unk0; - s32 unk4; - s32 unk8; - Vec unkC; - Vec unk18; - Vec unk24; - float unk30; - Vec unk34; - float unk40[2]; - float unk48; - float unk4C; - s32 unk50; - s32 unk54; - s32 unk58; - s32 unk5C; - s32 unk60; - float unk64; + s32 unk0; + s32 unk4; + s32 unk8; + Vec unkC; + Vec unk18; + Vec unk24; + float unk30; + Vec unk34; + float unk40[2]; + float unk48; + float unk4C; + s32 unk50; + s32 unk54; + s32 unk58; + s32 unk5C; + s32 unk60; + float unk64; } StructBssDA4; void fn_1_12C6C(StructBssDA4 *arg0); @@ -56,136 +56,109 @@ void fn_1_14DB4(StructBssDA4 *arg0); void fn_1_151A4(StructBssDA4 *arg0); s32 lbl_1_data_1A0[9] = { - 0x00270012, - 0x00270012, - 0x00270012, - 0x00270012, - 0x00270012, - 0x00270014, - 0x00270014, - 0x00270016, - 0x00270017 + DATA_MAKE_NUM(DATADIR_M408, 0x12), + DATA_MAKE_NUM(DATADIR_M408, 0x12), + DATA_MAKE_NUM(DATADIR_M408, 0x12), + DATA_MAKE_NUM(DATADIR_M408, 0x12), + DATA_MAKE_NUM(DATADIR_M408, 0x12), + DATA_MAKE_NUM(DATADIR_M408, 0x14), + DATA_MAKE_NUM(DATADIR_M408, 0x14), + DATA_MAKE_NUM(DATADIR_M408, 0x16), + DATA_MAKE_NUM(DATADIR_M408, 0x17), }; s32 lbl_1_data_1C4[9] = { - 0x00270013, - 0x00270013, - 0x00270013, - 0x00270013, - 0x00270013, - 0x00270015, - 0x00270015, - 0, - 0 + DATA_MAKE_NUM(DATADIR_M408, 0x13), + DATA_MAKE_NUM(DATADIR_M408, 0x13), + DATA_MAKE_NUM(DATADIR_M408, 0x13), + DATA_MAKE_NUM(DATADIR_M408, 0x13), + DATA_MAKE_NUM(DATADIR_M408, 0x13), + DATA_MAKE_NUM(DATADIR_M408, 0x15), + DATA_MAKE_NUM(DATADIR_M408, 0x15), + 0, + 0, }; typedef void (*BssDA4Func)(StructBssDA4 *arg0); -BssDA4Func lbl_1_data_1E8[9] = { - fn_1_12C6C, - fn_1_1305C, - fn_1_134D8, - fn_1_13820, - fn_1_13D88, - fn_1_1406C, - fn_1_144D0, - fn_1_14DB4, - fn_1_151A4 -}; +BssDA4Func lbl_1_data_1E8[9] = { fn_1_12C6C, fn_1_1305C, fn_1_134D8, fn_1_13820, fn_1_13D88, fn_1_1406C, fn_1_144D0, fn_1_14DB4, fn_1_151A4 }; StructData20C lbl_1_data_20C[] = { - { 0, 10600, 100 }, - { 0, 10600, 290 }, - { 7, 10500, 0 }, - { 7, 10400, 72 }, - { 7, 10300, 144 }, - { 7, 10200, 216 }, - { 7, 10100, 288 }, - { 5, 9600, 0 }, - { 7, 9000, 0 }, - { 7, 9000, 72 }, - { 7, 9000, 144 }, - { 7, 9000, 216 }, - { 7, 9000, 288 }, - { 1, 8600, 150 }, - { 7, 8500, 216 }, - { 7, 8400, 288 }, - { 7, 8300, 0 }, - { 7, 8200, 72 }, - { 7, 8100, 144 }, - { 6, 7700, 0 }, - { 6, 7700, 180 }, - { 7, 7500, 165 }, - { 7, 7500, 285 }, - { 7, 7500, 45 }, - { 8, 7000, 225 }, - { 8, 7000, 345 }, - { 8, 7000, 105 }, - { 7, 6500, 165 }, - { 7, 6500, 285 }, - { 7, 6500, 45 }, - { 4, 5500, 0 }, - { 4, 5500, 120 }, - { 4, 5500, 240 }, - { 7, 4700, 0 }, - { 7, 4700, 72 }, - { 7, 4700, 144 }, - { 7, 4700, 216 }, - { 7, 4700, 288 }, - { 5, 4500, 120 }, - { 7, 4250, 165 }, - { 7, 4250, 285 }, - { 7, 4250, 45 }, - { 5, 4000, 120 }, - { 7, 3750, 225 }, - { 7, 3750, 345 }, - { 7, 3750, 105 }, - { 5, 3500, 240 }, - { 7, 3250, 165 }, - { 7, 3250, 285 }, - { 7, 3250, 45 }, - { 7, 2100, 36 }, - { 7, 2100, 108 }, - { 7, 2100, 180 }, - { 7, 2100, 252 }, - { 7, 2100, 324 }, - { 3, 1500, 0 }, - { 3, 1500, 120 }, - { 3, 1500, 240 }, - { 8, 1300, 165 }, - { 8, 1300, 285 }, - { 8, 1300, 45 }, - { -1, 10000, 0 }, + { 0, 10600, 100 }, + { 0, 10600, 290 }, + { 7, 10500, 0 }, + { 7, 10400, 72 }, + { 7, 10300, 144 }, + { 7, 10200, 216 }, + { 7, 10100, 288 }, + { 5, 9600, 0 }, + { 7, 9000, 0 }, + { 7, 9000, 72 }, + { 7, 9000, 144 }, + { 7, 9000, 216 }, + { 7, 9000, 288 }, + { 1, 8600, 150 }, + { 7, 8500, 216 }, + { 7, 8400, 288 }, + { 7, 8300, 0 }, + { 7, 8200, 72 }, + { 7, 8100, 144 }, + { 6, 7700, 0 }, + { 6, 7700, 180 }, + { 7, 7500, 165 }, + { 7, 7500, 285 }, + { 7, 7500, 45 }, + { 8, 7000, 225 }, + { 8, 7000, 345 }, + { 8, 7000, 105 }, + { 7, 6500, 165 }, + { 7, 6500, 285 }, + { 7, 6500, 45 }, + { 4, 5500, 0 }, + { 4, 5500, 120 }, + { 4, 5500, 240 }, + { 7, 4700, 0 }, + { 7, 4700, 72 }, + { 7, 4700, 144 }, + { 7, 4700, 216 }, + { 7, 4700, 288 }, + { 5, 4500, 120 }, + { 7, 4250, 165 }, + { 7, 4250, 285 }, + { 7, 4250, 45 }, + { 5, 4000, 120 }, + { 7, 3750, 225 }, + { 7, 3750, 345 }, + { 7, 3750, 105 }, + { 5, 3500, 240 }, + { 7, 3250, 165 }, + { 7, 3250, 285 }, + { 7, 3250, 45 }, + { 7, 2100, 36 }, + { 7, 2100, 108 }, + { 7, 2100, 180 }, + { 7, 2100, 252 }, + { 7, 2100, 324 }, + { 3, 1500, 0 }, + { 3, 1500, 120 }, + { 3, 1500, 240 }, + { 8, 1300, 165 }, + { 8, 1300, 285 }, + { 8, 1300, 45 }, + { -1, 10000, 0 }, }; -GXColor lbl_1_data_4F4[4] = { - { 255, 255, 255, 255 }, - { 255, 255, 0, 255 }, - { 0, 255, 255, 255 }, - { 255, 200, 200, 255 } -}; +GXColor lbl_1_data_4F4[4] = { { 255, 255, 255, 255 }, { 255, 255, 0, 255 }, { 0, 255, 255, 255 }, { 255, 200, 200, 255 } }; -u8 lbl_1_data_504[] = { - 5, 3, 1, 0 -}; +u8 lbl_1_data_504[] = { 5, 3, 1, 0 }; -float lbl_1_data_508[3] = { - 72, 120, 0 -}; +float lbl_1_data_508[3] = { 72, 120, 0 }; -float lbl_1_data_514[3] = { - 0, 60, 0 -}; +float lbl_1_data_514[3] = { 0, 60, 0 }; -float lbl_1_data_520[3] = { - 30, 60, 90 -}; +float lbl_1_data_520[3] = { 30, 60, 90 }; -Vec lbl_1_data_52C[3] = { - { 1500, 2500, 1500 }, - { 0, 1, 0 }, - { 0, 0, 0 } -}; +Vec lbl_1_data_52C[3] = { { 1500, 2500, 1500 }, { 0, 1, 0 }, { 0, 0, 0 } }; omObjData *lbl_1_bss_75A8; omObjData *lbl_1_bss_75A4; @@ -201,9 +174,9 @@ void fn_1_15BCC(omObjData *object); void fn_1_118D0(Process *objman) { - lbl_1_bss_168 = 0; - lbl_1_bss_75A8 = omAddObjEx(objman, 40, 256, 1, -1, fn_1_11960); - lbl_1_bss_75A4 = omAddObjEx(objman, 41, 4, 0, -1, fn_1_15BCC); + lbl_1_bss_168 = 0; + lbl_1_bss_75A8 = omAddObjEx(objman, 40, 256, 1, -1, fn_1_11960); + lbl_1_bss_75A4 = omAddObjEx(objman, 41, 4, 0, -1, fn_1_15BCC); } void fn_1_11E3C(StructBssDA4 *arg0, s32 arg1); @@ -215,195 +188,198 @@ void fn_1_15658(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_11960(omObjData *object) { - StructBssDA4 *temp_r31; - s32 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - s16 temp_r23; - s16 temp_r22; - temp_r31 = &lbl_1_bss_DA4[0]; - lbl_1_bss_DA0 = 0; - lbl_1_bss_D9C = 0; - while(lbl_1_data_20C[lbl_1_bss_DA0].unk0 != -1) { - if(lbl_1_data_20C[lbl_1_bss_DA0].unk0 == 7) { - lbl_1_bss_D9C++; - } - lbl_1_bss_DA0++; - } - object->stat |= 0x100; - temp_r27 = temp_r26 = temp_r25 = temp_r24 = -1; - for(temp_r29=0; temp_r29unk0) { - case 0: - case 1: - case 2: - case 3: - case 4: - if(temp_r27 < 0) { - temp_r27 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); - temp_r23 = Hu3DJointMotionFile(temp_r27, lbl_1_data_1C4[temp_r31->unk0]); - Hu3DModelAttrSet(temp_r27, 0x40000001); - Hu3DMotionSet(temp_r27, temp_r23); - temp_r28 = temp_r27; - } else { - temp_r28 = Hu3DModelLink(temp_r27); - } - break; - - case 5: - case 6: - if(temp_r26 < 0) { - temp_r26 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); - temp_r22 = Hu3DJointMotionFile(temp_r26, lbl_1_data_1C4[temp_r31->unk0]); - Hu3DModelAttrSet(temp_r26, 0x40000001); - Hu3DMotionSet(temp_r26, temp_r22); - temp_r28 = temp_r26; - } else { - temp_r28 = Hu3DModelLink(temp_r26); - } - break; - - case 7: - if(temp_r25 < 0) { - temp_r25 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); - temp_r28 = temp_r25; - } else { - temp_r28 = Hu3DModelLink(temp_r25); - } - break; - - case 8: - if(temp_r24 < 0) { - temp_r24 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); - temp_r28 = temp_r24; - } else { - temp_r28 = Hu3DModelLink(temp_r24); - } - break; - - default: - break; - } - object->model[temp_r29] = temp_r28; - Hu3DModelPosSetV(object->model[temp_r29], &temp_r31->unkC); - Hu3DModelRotSetV(object->model[temp_r29], &temp_r31->unk34); - Hu3DModelScaleSet(object->model[temp_r29], 0.15f, 0.15f, 0.15f); - Hu3DModelCameraSet(object->model[temp_r29], 1); - Hu3DModelAttrSet(object->model[temp_r29], 1); - if(temp_r31->unk0 < 7) { - Hu3DModelAttrSet(object->model[temp_r29], 0x40000001); - } - } - for(temp_r29=lbl_1_bss_DA0; temp_r29model[temp_r29] = temp_r28; - Hu3DModelAttrSet(temp_r28, 1); - Hu3DModelLayerSet(temp_r28, 6); - Hu3DParticleColSet(temp_r28, 255, 255, 255); - Hu3DParticleHookSet(temp_r28, fn_1_15658); - Hu3DModelPosSet(temp_r28, 0, 0, 0); - fn_1_155E0(temp_r28, 0); - } - object->func = fn_1_12354; + StructBssDA4 *temp_r31; + s32 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + s16 temp_r22; + temp_r31 = &lbl_1_bss_DA4[0]; + lbl_1_bss_DA0 = 0; + lbl_1_bss_D9C = 0; + while (lbl_1_data_20C[lbl_1_bss_DA0].unk0 != -1) { + if (lbl_1_data_20C[lbl_1_bss_DA0].unk0 == 7) { + lbl_1_bss_D9C++; + } + lbl_1_bss_DA0++; + } + object->stat |= 0x100; + temp_r27 = temp_r26 = temp_r25 = temp_r24 = -1; + for (temp_r29 = 0; temp_r29 < lbl_1_bss_DA0; temp_r29++, temp_r31++) { + fn_1_11E3C(temp_r31, temp_r29); + switch (temp_r31->unk0) { + case 0: + case 1: + case 2: + case 3: + case 4: + if (temp_r27 < 0) { + temp_r27 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r23 = Hu3DJointMotionFile(temp_r27, lbl_1_data_1C4[temp_r31->unk0]); + Hu3DModelAttrSet(temp_r27, HU3D_MOTATTR_LOOP); + Hu3DMotionSet(temp_r27, temp_r23); + temp_r28 = temp_r27; + } + else { + temp_r28 = Hu3DModelLink(temp_r27); + } + break; + + case 5: + case 6: + if (temp_r26 < 0) { + temp_r26 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r22 = Hu3DJointMotionFile(temp_r26, lbl_1_data_1C4[temp_r31->unk0]); + Hu3DModelAttrSet(temp_r26, HU3D_MOTATTR_LOOP); + Hu3DMotionSet(temp_r26, temp_r22); + temp_r28 = temp_r26; + } + else { + temp_r28 = Hu3DModelLink(temp_r26); + } + break; + + case 7: + if (temp_r25 < 0) { + temp_r25 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r28 = temp_r25; + } + else { + temp_r28 = Hu3DModelLink(temp_r25); + } + break; + + case 8: + if (temp_r24 < 0) { + temp_r24 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r28 = temp_r24; + } + else { + temp_r28 = Hu3DModelLink(temp_r24); + } + break; + + default: + break; + } + object->model[temp_r29] = temp_r28; + Hu3DModelPosSetV(object->model[temp_r29], &temp_r31->unkC); + Hu3DModelRotSetV(object->model[temp_r29], &temp_r31->unk34); + Hu3DModelScaleSet(object->model[temp_r29], 0.15f, 0.15f, 0.15f); + Hu3DModelCameraSet(object->model[temp_r29], 1); + Hu3DModelAttrSet(object->model[temp_r29], HU3D_ATTR_DISPOFF); + if (temp_r31->unk0 < 7) { + Hu3DModelAttrSet(object->model[temp_r29], HU3D_MOTATTR_LOOP); + } + } + for (temp_r29 = lbl_1_bss_DA0; temp_r29 < lbl_1_bss_DA0 + lbl_1_bss_D9C; temp_r29++) { + temp_r28 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x18)), 32); + object->model[temp_r29] = temp_r28; + Hu3DModelAttrSet(temp_r28, HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(temp_r28, 6); + Hu3DParticleColSet(temp_r28, 255, 255, 255); + Hu3DParticleHookSet(temp_r28, fn_1_15658); + Hu3DModelPosSet(temp_r28, 0, 0, 0); + fn_1_155E0(temp_r28, 0); + } + object->func = fn_1_12354; } void fn_1_11E3C(StructBssDA4 *arg0, s32 arg1) { - float temp_f31; - float temp_f30; - s32 temp_r29; - temp_r29 = 0; - temp_f30 = 40; - temp_f31 = 20; - arg0->unk0 = lbl_1_data_20C[arg1].unk0; - arg0->unk4 = arg1; - arg0->unk8 = -1; - arg0->unk18.x = arg0->unkC.x = 0; - arg0->unk18.y = arg0->unkC.y = lbl_1_data_20C[arg1].unk4; - arg0->unk18.z = arg0->unkC.z = 0; - arg0->unk24.x = arg0->unk24.y = arg0->unk24.z = 0; - arg0->unk48 = 180; - arg0->unk34.x = arg0->unk34.z = arg0->unk34.y = 0; - arg0->unk40[0] = arg0->unk40[1] = 0; - arg0->unk30 = 0; - arg0->unk4C = 1; - arg0->unk50 = 1; - arg0->unk54 = 0; - arg0->unk5C = 1; - arg0->unk58 = 0; - arg0->unk60 = 0; - arg0->unk64 = 0; - switch(arg0->unk0) { - case 0: - arg0->unk64 = temp_f31+(rand8()%(int)temp_f30); - arg0->unk30 = lbl_1_data_20C[arg1].unk8; - arg0->unk34.y = 180+(-arg0->unk30+90); - - break; - - case 1: - arg0->unk34.y = arg0->unk40[0] = 180+(-arg0->unk30+90); - arg0->unk30 = rand8()%360; - break; - - case 2: - arg0->unk30 = lbl_1_data_20C[arg1].unk8; - arg0->unk34.y = 90+(180+(-arg0->unk30+90)); - break; - - case 3: - arg0->unk30 = lbl_1_data_20C[arg1].unk8; - arg0->unk34.y = (180+(-arg0->unk30+90))-90; - break; - - case 4: - arg0->unk30 = lbl_1_data_20C[arg1].unk8; - arg0->unk34.y = 180+(-arg0->unk30+90); - break; - - case 5: - arg0->unk30 = rand8()%360; - arg0->unk34.y = 180+(-arg0->unk30+90); - arg0->unk48 = 0; - break; - - case 6: - arg0->unk30 = lbl_1_data_20C[arg1].unk8; - arg0->unk34.y = -arg0->unk30+90; - break; - + float temp_f31; + float temp_f30; + s32 temp_r29; + temp_r29 = 0; + temp_f30 = 40; + temp_f31 = 20; + arg0->unk0 = lbl_1_data_20C[arg1].unk0; + arg0->unk4 = arg1; + arg0->unk8 = -1; + arg0->unk18.x = arg0->unkC.x = 0; + arg0->unk18.y = arg0->unkC.y = lbl_1_data_20C[arg1].unk4; + arg0->unk18.z = arg0->unkC.z = 0; + arg0->unk24.x = arg0->unk24.y = arg0->unk24.z = 0; + arg0->unk48 = 180; + arg0->unk34.x = arg0->unk34.z = arg0->unk34.y = 0; + arg0->unk40[0] = arg0->unk40[1] = 0; + arg0->unk30 = 0; + arg0->unk4C = 1; + arg0->unk50 = 1; + arg0->unk54 = 0; + arg0->unk5C = 1; + arg0->unk58 = 0; + arg0->unk60 = 0; + arg0->unk64 = 0; + switch (arg0->unk0) { + case 0: + arg0->unk64 = temp_f31 + (rand8() % (int)temp_f30); + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = 180 + (-arg0->unk30 + 90); - - case 7: - case 8: - arg0->unk30 = lbl_1_data_20C[arg1].unk8; - arg0->unk8 = lbl_1_bss_DA0+temp_r29; - temp_r29++; - break; - } - if(arg0->unk34.y > 360) { - arg0->unk34.y -= 360; - } else { - if(arg0->unk34.y < 0) { - arg0->unk34.y += 360; - } - } + break; + + case 1: + arg0->unk34.y = arg0->unk40[0] = 180 + (-arg0->unk30 + 90); + arg0->unk30 = rand8() % 360; + break; + + case 2: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = 90 + (180 + (-arg0->unk30 + 90)); + break; + + case 3: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = (180 + (-arg0->unk30 + 90)) - 90; + break; + + case 4: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = 180 + (-arg0->unk30 + 90); + break; + + case 5: + arg0->unk30 = rand8() % 360; + arg0->unk34.y = 180 + (-arg0->unk30 + 90); + arg0->unk48 = 0; + break; + + case 6: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = -arg0->unk30 + 90; + break; + + case 7: + case 8: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk8 = lbl_1_bss_DA0 + temp_r29; + temp_r29++; + break; + } + if (arg0->unk34.y > 360) { + arg0->unk34.y -= 360; + } + else { + if (arg0->unk34.y < 0) { + arg0->unk34.y += 360; + } + } } void fn_1_12354(omObjData *object) { - s32 temp_r31; - u32 temp_r30; - temp_r30 = fn_1_6878(); - if(temp_r30 == 2) { - for(temp_r31=0; temp_r31func =fn_1_123C8; - } - + s32 temp_r31; + u32 temp_r30; + temp_r30 = fn_1_6878(); + if (temp_r30 == 2) { + for (temp_r31 = 0; temp_r31 < lbl_1_bss_DA0; temp_r31++) + ; + object->func = fn_1_123C8; + } } void fn_1_12670(omObjData *object); @@ -412,952 +388,973 @@ void fn_1_127A0(StructBssDA4 *object); void fn_1_123C8(omObjData *object) { - StructBssDA4 *temp_r31; - s32 temp_r29; - u32 temp_r28; - temp_r31 = &lbl_1_bss_DA4[0]; - lbl_1_bss_168 = 0; - for(temp_r29=0; temp_r29unk50 == 1) { - lbl_1_data_1E8[temp_r31->unk0](temp_r31); - if(temp_r31->unk5C == 0) { - fn_1_127A0(temp_r31); - } - Hu3DModelPosSetV(object->model[temp_r29], &temp_r31->unkC); - Hu3DModelRotSetV(object->model[temp_r29], &temp_r31->unk34); - Hu3DModelScaleSet(object->model[temp_r29], 0.15f*temp_r31->unk4C, 0.15f*temp_r31->unk4C, 0.15f*temp_r31->unk4C); - if(temp_r31->unkC.y > fn_1_6888()-1000 && temp_r31->unkC.y < fn_1_6888()+200) { - Hu3DModelAttrReset(object->model[temp_r29], 1); - } else { - Hu3DModelAttrSet(object->model[temp_r29], 1); - } - if(temp_r31->unk0 == 7 || temp_r31->unk0 == 8) { - if(temp_r31->unkC.y > fn_1_6888()-150 && temp_r31->unkC.y < fn_1_6888()+10) { - lbl_1_bss_16C[lbl_1_bss_168++] = temp_r31->unkC; - - } - } - } else { - Hu3DModelAttrSet(object->model[temp_r29], 1); - } - } - temp_r28 = fn_1_6878(); - if(temp_r28 == 5) { - for(temp_r29=0; temp_r29model[temp_r29], 1); - } - object->func = fn_1_12670; - } - + StructBssDA4 *temp_r31; + s32 temp_r29; + u32 temp_r28; + temp_r31 = &lbl_1_bss_DA4[0]; + lbl_1_bss_168 = 0; + for (temp_r29 = 0; temp_r29 < lbl_1_bss_DA0; temp_r29++, temp_r31++) { + if (temp_r31->unk50 == 1) { + lbl_1_data_1E8[temp_r31->unk0](temp_r31); + if (temp_r31->unk5C == 0) { + fn_1_127A0(temp_r31); + } + Hu3DModelPosSetV(object->model[temp_r29], &temp_r31->unkC); + Hu3DModelRotSetV(object->model[temp_r29], &temp_r31->unk34); + Hu3DModelScaleSet(object->model[temp_r29], 0.15f * temp_r31->unk4C, 0.15f * temp_r31->unk4C, 0.15f * temp_r31->unk4C); + if (temp_r31->unkC.y > fn_1_6888() - 1000 && temp_r31->unkC.y < fn_1_6888() + 200) { + Hu3DModelAttrReset(object->model[temp_r29], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(object->model[temp_r29], HU3D_ATTR_DISPOFF); + } + if (temp_r31->unk0 == 7 || temp_r31->unk0 == 8) { + if (temp_r31->unkC.y > fn_1_6888() - 150 && temp_r31->unkC.y < fn_1_6888() + 10) { + lbl_1_bss_16C[lbl_1_bss_168++] = temp_r31->unkC; + } + } + } + else { + Hu3DModelAttrSet(object->model[temp_r29], HU3D_ATTR_DISPOFF); + } + } + temp_r28 = fn_1_6878(); + if (temp_r28 == 5) { + for (temp_r29 = 0; temp_r29 < lbl_1_bss_DA0; temp_r29++, temp_r31++) { + Hu3DModelAttrSet(object->model[temp_r29], HU3D_ATTR_DISPOFF); + } + object->func = fn_1_12670; + } } -void fn_1_12670(omObjData *object) -{ - -} +void fn_1_12670(omObjData *object) { } void fn_1_15618(s16 arg0, float arg1, float arg2, float arg3); void fn_1_15B50(s16 arg0); float fn_1_12674(StructBssDA4 *arg0) { - Vec sp8; - float temp_f31; - float temp_f30; - float temp_f29; - Work2FAC *temp_r31; - s32 temp_r30; - temp_f30 = -1; - temp_f29 = 10000; - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r31 = fn_1_68A8(temp_r30); - if(temp_r31->unk4 & 0x10) { - continue; - } - sp8.x = temp_r31->unk1C.x-arg0->unk24.x; - sp8.y = 0; - sp8.z = temp_r31->unk1C.z-arg0->unk24.z; - temp_f31 = VECMag(&sp8); - if(temp_f31 < temp_f29) { - temp_f30 = atan2d(sp8.x, sp8.z); - temp_f29 = temp_f31; - } - } - return temp_f30; + Vec sp8; + float temp_f31; + float temp_f30; + float temp_f29; + Work2FAC *temp_r31; + s32 temp_r30; + temp_f30 = -1; + temp_f29 = 10000; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r31 = fn_1_68A8(temp_r30); + if (temp_r31->unk4 & 0x10) { + continue; + } + sp8.x = temp_r31->unk1C.x - arg0->unk24.x; + sp8.y = 0; + sp8.z = temp_r31->unk1C.z - arg0->unk24.z; + temp_f31 = VECMag(&sp8); + if (temp_f31 < temp_f29) { + temp_f30 = atan2d(sp8.x, sp8.z); + temp_f29 = temp_f31; + } + } + return temp_f30; } void fn_1_127A0(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f26; - float temp_f23; - Work2FAC *temp_r31; - s32 temp_r29; - temp_f23 = 14; - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r31 = fn_1_68A8(temp_r29); - if(temp_r31->unk4 & 0x12) { - continue; - } - switch(arg0->unk0) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 7: - case 8: - temp_f31 = temp_r31->unk1C.x-arg0->unk24.x; - temp_f29 = temp_r31->unk1C.y-arg0->unk24.y; - temp_f30 = temp_r31->unk1C.z-arg0->unk24.z; - temp_f26 = VECMagPoint(temp_f31, temp_f29, temp_f30); - break; - - case 5: - case 6: - temp_f31 = temp_r31->unk1C.x-arg0->unk24.x; - temp_f30 = temp_r31->unk1C.z-arg0->unk24.z; - temp_f26 = VECMagPoint(temp_f31, 0, temp_f30); - break; - } - if(temp_f26 < temp_f23 && 0.0f != temp_f26) { - if(arg0->unk0 != 7 && arg0->unk0 != 8) { - temp_r31->unk4 |= 0x1; - temp_r31->unk40.x = temp_f31; - temp_r31->unk40.z = temp_f30; - lbl_1_bss_D6C[temp_r29].x = (0.5f*temp_f31)+arg0->unk24.x; - lbl_1_bss_D6C[temp_r29].z = (0.5f*temp_f30)+arg0->unk24.z; - lbl_1_bss_D6C[temp_r29].y = temp_r31->unk1C.y; - lbl_1_bss_75A4->work[0] = temp_r29; - } else { - arg0->unk58 = 1; - if(arg0->unk0 == 8) { - temp_r31->unk14 += 5; - fn_1_67C4(temp_r29, 5); - } else { - temp_r31->unk14 += 1; - fn_1_67C4(temp_r29, 1); - } - } - } - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f26; + float temp_f23; + Work2FAC *temp_r31; + s32 temp_r29; + temp_f23 = 14; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r31 = fn_1_68A8(temp_r29); + if (temp_r31->unk4 & 0x12) { + continue; + } + switch (arg0->unk0) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 7: + case 8: + temp_f31 = temp_r31->unk1C.x - arg0->unk24.x; + temp_f29 = temp_r31->unk1C.y - arg0->unk24.y; + temp_f30 = temp_r31->unk1C.z - arg0->unk24.z; + temp_f26 = VECMagPoint(temp_f31, temp_f29, temp_f30); + break; + + case 5: + case 6: + temp_f31 = temp_r31->unk1C.x - arg0->unk24.x; + temp_f30 = temp_r31->unk1C.z - arg0->unk24.z; + temp_f26 = VECMagPoint(temp_f31, 0, temp_f30); + break; + } + if (temp_f26 < temp_f23 && 0.0f != temp_f26) { + if (arg0->unk0 != 7 && arg0->unk0 != 8) { + temp_r31->unk4 |= 0x1; + temp_r31->unk40.x = temp_f31; + temp_r31->unk40.z = temp_f30; + lbl_1_bss_D6C[temp_r29].x = (0.5f * temp_f31) + arg0->unk24.x; + lbl_1_bss_D6C[temp_r29].z = (0.5f * temp_f30) + arg0->unk24.z; + lbl_1_bss_D6C[temp_r29].y = temp_r31->unk1C.y; + lbl_1_bss_75A4->work[0] = temp_r29; + } + else { + arg0->unk58 = 1; + if (arg0->unk0 == 8) { + temp_r31->unk14 += 5; + fn_1_67C4(temp_r29, 5); + } + else { + temp_r31->unk14 += 1; + fn_1_67C4(temp_r29, 1); + } + } + } + } } void fn_1_12C6C(StructBssDA4 *arg0) { - Work2FAC *temp_r30; - float temp_f31; - float temp_f30; - float temp_f26; - float temp_f25; - temp_f26 = cosd(arg0->unk30); - temp_f25 = sind(arg0->unk30); - arg0->unkC.x = temp_f26*arg0->unk64; - arg0->unkC.z = temp_f25*arg0->unk64; - temp_f30 = fn_1_6888(); - switch(arg0->unk54) { - case 0: - if(arg0->unkC.y > temp_f30) { - arg0->unk60 = 0; - arg0->unk54 = 1; - } - arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1f); - arg0->unk5C = 1; - break; - - case 1: - arg0->unk5C = 0; - arg0->unkC.y = temp_f30; - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y+5.0f; - arg0->unk24.z = arg0->unkC.z; - temp_f31 = fn_1_12674(arg0); - if(temp_f31 >= 0) { - arg0->unk34.y = fn_1_883C(arg0->unk34.y, temp_f31, 0.1f); - } - arg0->unk34.x = fn_1_883C(arg0->unk34.x, 0, 0.1f); - if(arg0->unk60 < 90.0f) { - arg0->unk60++; - } else { - arg0->unk54 = 3; - } - break; - - case 3: - arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1f); - arg0->unk5C = 1; - if(arg0->unkC.y-15.0f > Center.y+CZoom) { - arg0->unk54 = 4; - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - break; - - case 4: - break; - } + Work2FAC *temp_r30; + float temp_f31; + float temp_f30; + float temp_f26; + float temp_f25; + temp_f26 = cosd(arg0->unk30); + temp_f25 = sind(arg0->unk30); + arg0->unkC.x = temp_f26 * arg0->unk64; + arg0->unkC.z = temp_f25 * arg0->unk64; + temp_f30 = fn_1_6888(); + switch (arg0->unk54) { + case 0: + if (arg0->unkC.y > temp_f30) { + arg0->unk60 = 0; + arg0->unk54 = 1; + } + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1f); + arg0->unk5C = 1; + break; + + case 1: + arg0->unk5C = 0; + arg0->unkC.y = temp_f30; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y + 5.0f; + arg0->unk24.z = arg0->unkC.z; + temp_f31 = fn_1_12674(arg0); + if (temp_f31 >= 0) { + arg0->unk34.y = fn_1_883C(arg0->unk34.y, temp_f31, 0.1f); + } + arg0->unk34.x = fn_1_883C(arg0->unk34.x, 0, 0.1f); + if (arg0->unk60 < 90.0f) { + arg0->unk60++; + } + else { + arg0->unk54 = 3; + } + break; + + case 3: + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1f); + arg0->unk5C = 1; + if (arg0->unkC.y - 15.0f > Center.y + CZoom) { + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + break; + + case 4: + break; + } } void fn_1_1305C(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - float temp_f26; - arg0->unk48 += 1.5f; - if(arg0->unk48 > 360.0f) { - arg0->unk48 -= 360.0f; - } - temp_f29 = cosd(arg0->unk30); - temp_f28 = sind(arg0->unk30); - arg0->unk18.x = temp_f29*arg0->unk64; - arg0->unk18.z = temp_f28*arg0->unk64; - temp_f31 = sind(arg0->unk48); - arg0->unkC.x = temp_f29*(60*temp_f31); - arg0->unkC.z = temp_f28*(60*temp_f31); - temp_f30 = -arg0->unk30-90; - if(temp_f31 < 0) { - temp_f30 += 180; - } - arg0->unk34.y = fn_1_883C(arg0->unk34.y, temp_f30, 0.05f); - temp_f30 = fabs(temp_f31); - arg0->unk34.x = -30*temp_f30; - temp_f26 = fn_1_6888(); - switch(arg0->unk54) { - case 0: - if(arg0->unkC.y > temp_f26) { - arg0->unk60 = 0; - arg0->unk54 = 1; - } - arg0->unk5C = 1; - if(temp_f31 >= sind(75.0f)) { - temp_f27 = (arg0->unk48-75)/30; - arg0->unk40[1] = 180+arg0->unk40[0]; - } else if(temp_f31 <= sind(255.0f)) { - temp_f27 = (arg0->unk48-255)/30; - arg0->unk40[1] = 180+arg0->unk40[0]; - } else { - temp_f27 = 0; - if(arg0->unk40[1] > 360.0f) { - arg0->unk40[1] -= 360.0f; - } - arg0->unk40[0] = arg0->unk40[1]; - } - break; - - case 1: - arg0->unk5C = 0; - arg0->unkC.y = temp_f26; - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y+5; - arg0->unk24.z = arg0->unkC.z; - if(arg0->unk60 < 120.0f) { - arg0->unk60++; - } else { - arg0->unk54 = 3; - } - break; - - case 3: - arg0->unk5C = 1; - if(arg0->unkC.y-15.0f > Center.y+CZoom) { - arg0->unk54 = 4; - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - break; - - case 4: - break; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + arg0->unk48 += 1.5f; + if (arg0->unk48 > 360.0f) { + arg0->unk48 -= 360.0f; + } + temp_f29 = cosd(arg0->unk30); + temp_f28 = sind(arg0->unk30); + arg0->unk18.x = temp_f29 * arg0->unk64; + arg0->unk18.z = temp_f28 * arg0->unk64; + temp_f31 = sind(arg0->unk48); + arg0->unkC.x = temp_f29 * (60 * temp_f31); + arg0->unkC.z = temp_f28 * (60 * temp_f31); + temp_f30 = -arg0->unk30 - 90; + if (temp_f31 < 0) { + temp_f30 += 180; + } + arg0->unk34.y = fn_1_883C(arg0->unk34.y, temp_f30, 0.05f); + temp_f30 = fabs(temp_f31); + arg0->unk34.x = -30 * temp_f30; + temp_f26 = fn_1_6888(); + switch (arg0->unk54) { + case 0: + if (arg0->unkC.y > temp_f26) { + arg0->unk60 = 0; + arg0->unk54 = 1; + } + arg0->unk5C = 1; + if (temp_f31 >= sind(75.0f)) { + temp_f27 = (arg0->unk48 - 75) / 30; + arg0->unk40[1] = 180 + arg0->unk40[0]; + } + else if (temp_f31 <= sind(255.0f)) { + temp_f27 = (arg0->unk48 - 255) / 30; + arg0->unk40[1] = 180 + arg0->unk40[0]; + } + else { + temp_f27 = 0; + if (arg0->unk40[1] > 360.0f) { + arg0->unk40[1] -= 360.0f; + } + arg0->unk40[0] = arg0->unk40[1]; + } + break; + + case 1: + arg0->unk5C = 0; + arg0->unkC.y = temp_f26; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y + 5; + arg0->unk24.z = arg0->unkC.z; + if (arg0->unk60 < 120.0f) { + arg0->unk60++; + } + else { + arg0->unk54 = 3; + } + break; + + case 3: + arg0->unk5C = 1; + if (arg0->unkC.y - 15.0f > Center.y + CZoom) { + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + break; + + case 4: + break; + } } void fn_1_134D8(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - arg0->unk30 += 1.8f; - if(arg0->unk30 > 360.0f) { - arg0->unk30 -= 360.0f; - } - temp_f30 = cosd(arg0->unk30); - temp_f29 = sind(arg0->unk30); - arg0->unk64 = 64; - arg0->unkC.x = temp_f30*arg0->unk64; - arg0->unkC.z = temp_f29*arg0->unk64*0.7f; - temp_f31 = fn_1_6888(); - switch(arg0->unk54) { - case 0: - if(arg0->unkC.y > temp_f31) { - arg0->unk60 = 0; - arg0->unk54 = 1; - } - arg0->unk5C = 1; - arg0->unk34.y = -arg0->unk30; - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } else if(arg0->unk34.y < 0.0f) { - arg0->unk34.y += 360.0f; - } - break; - - case 1: - arg0->unk5C = 0; - arg0->unkC.y = temp_f31; - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y+5; - arg0->unk24.z = arg0->unkC.z; - arg0->unk34.y -= 10.0f; - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } - if(arg0->unk60 < 120.0f) { - arg0->unk60++; - } else { - arg0->unk54 = 3; - } - break; - - case 3: - arg0->unk5C = 1; - if(arg0->unkC.y-15.0f > Center.y+CZoom) { - arg0->unk54 = 4; - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - break; - - case 4: - break; - } + float temp_f31; + float temp_f30; + float temp_f29; + arg0->unk30 += 1.8f; + if (arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + temp_f30 = cosd(arg0->unk30); + temp_f29 = sind(arg0->unk30); + arg0->unk64 = 64; + arg0->unkC.x = temp_f30 * arg0->unk64; + arg0->unkC.z = temp_f29 * arg0->unk64 * 0.7f; + temp_f31 = fn_1_6888(); + switch (arg0->unk54) { + case 0: + if (arg0->unkC.y > temp_f31) { + arg0->unk60 = 0; + arg0->unk54 = 1; + } + arg0->unk5C = 1; + arg0->unk34.y = -arg0->unk30; + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + else if (arg0->unk34.y < 0.0f) { + arg0->unk34.y += 360.0f; + } + break; + + case 1: + arg0->unk5C = 0; + arg0->unkC.y = temp_f31; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y + 5; + arg0->unk24.z = arg0->unkC.z; + arg0->unk34.y -= 10.0f; + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + if (arg0->unk60 < 120.0f) { + arg0->unk60++; + } + else { + arg0->unk54 = 3; + } + break; + + case 3: + arg0->unk5C = 1; + if (arg0->unkC.y - 15.0f > Center.y + CZoom) { + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + break; + + case 4: + break; + } } void fn_1_13820(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - float temp_f26; - float temp_f25; - float temp_f24; - float temp_f23; - float temp_f22; - float temp_f21; - float temp_f20; - float temp_f19; - float sp8; - arg0->unk30 += 2.0f; - if(arg0->unk30 > 360.0f) { - arg0->unk30 -= 360.0f; - } - temp_f26 = cosd(arg0->unk30); - temp_f25 = sind(arg0->unk30); - arg0->unk40[1] = 270.0f; - temp_f29 = arg0->unk18.y; - switch(arg0->unk54) { - case 0: - temp_f31 = 10; - temp_f28 = temp_f26*temp_f31; - temp_f27 = temp_f25*temp_f31; - temp_f29 = arg0->unk18.y; - arg0->unk40[0] = 0; - arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1); - arg0->unk34.y = 180.0f+(90.0f+ -arg0->unk30); - temp_f30 = fn_1_6888(); - if(temp_f30 < 5.0f+temp_f29) { - arg0->unk48 = 0; - arg0->unk54 = 1; - arg0->unk40[0] = 8; - } - arg0->unk5C = 1; - break; - - case 1: - arg0->unk48 += 2.0f; - if(arg0->unk48 > 180.0f) { - arg0->unk54 = 3; - } - arg0->unk40[0] = 0; - arg0->unk34.x = fn_1_883C(arg0->unk34.x, 40, 0.1); - arg0->unk34.y = fn_1_883C(arg0->unk34.y, -arg0->unk30, 0.1); - temp_f23 = cosd(arg0->unk48*0.5f); - temp_f31 = (-100*temp_f23)+110; - temp_f30 = fn_1_6888(); - temp_f28 = temp_f26*temp_f31; - temp_f27 = temp_f25*temp_f31; - temp_f29 = temp_f30; - arg0->unk24.x = temp_f28; - arg0->unk24.y = temp_f30; - arg0->unk24.z = temp_f27; - arg0->unk5C = 0; - break; - - case 3: - arg0->unk5C = 1; - arg0->unk54 = 4; - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - break; - - case 4: - break; - } - if(arg0->unk34.y > 360) { - arg0->unk34.y -= 360; - } else if(arg0->unk34.y < 0) { - arg0->unk34.y += 360; - } - sp8 = 0; - temp_f22 = -cosd(arg0->unk34.x)*5; - temp_f24 = -sind(arg0->unk34.x)*5; - temp_f21 = temp_f24*sind(arg0->unk34.y); - temp_f20 = temp_f22; - temp_f19 = temp_f24*cosd(arg0->unk34.y); - arg0->unkC.x = temp_f21+temp_f28; - arg0->unkC.y = temp_f20+temp_f29; - arg0->unkC.z = temp_f19+temp_f27; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + float temp_f19; + float sp8; + arg0->unk30 += 2.0f; + if (arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + temp_f26 = cosd(arg0->unk30); + temp_f25 = sind(arg0->unk30); + arg0->unk40[1] = 270.0f; + temp_f29 = arg0->unk18.y; + switch (arg0->unk54) { + case 0: + temp_f31 = 10; + temp_f28 = temp_f26 * temp_f31; + temp_f27 = temp_f25 * temp_f31; + temp_f29 = arg0->unk18.y; + arg0->unk40[0] = 0; + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1); + arg0->unk34.y = 180.0f + (90.0f + -arg0->unk30); + temp_f30 = fn_1_6888(); + if (temp_f30 < 5.0f + temp_f29) { + arg0->unk48 = 0; + arg0->unk54 = 1; + arg0->unk40[0] = 8; + } + arg0->unk5C = 1; + break; + + case 1: + arg0->unk48 += 2.0f; + if (arg0->unk48 > 180.0f) { + arg0->unk54 = 3; + } + arg0->unk40[0] = 0; + arg0->unk34.x = fn_1_883C(arg0->unk34.x, 40, 0.1); + arg0->unk34.y = fn_1_883C(arg0->unk34.y, -arg0->unk30, 0.1); + temp_f23 = cosd(arg0->unk48 * 0.5f); + temp_f31 = (-100 * temp_f23) + 110; + temp_f30 = fn_1_6888(); + temp_f28 = temp_f26 * temp_f31; + temp_f27 = temp_f25 * temp_f31; + temp_f29 = temp_f30; + arg0->unk24.x = temp_f28; + arg0->unk24.y = temp_f30; + arg0->unk24.z = temp_f27; + arg0->unk5C = 0; + break; + + case 3: + arg0->unk5C = 1; + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + break; + + case 4: + break; + } + if (arg0->unk34.y > 360) { + arg0->unk34.y -= 360; + } + else if (arg0->unk34.y < 0) { + arg0->unk34.y += 360; + } + sp8 = 0; + temp_f22 = -cosd(arg0->unk34.x) * 5; + temp_f24 = -sind(arg0->unk34.x) * 5; + temp_f21 = temp_f24 * sind(arg0->unk34.y); + temp_f20 = temp_f22; + temp_f19 = temp_f24 * cosd(arg0->unk34.y); + arg0->unkC.x = temp_f21 + temp_f28; + arg0->unkC.y = temp_f20 + temp_f29; + arg0->unkC.z = temp_f19 + temp_f27; } void fn_1_13D88(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - arg0->unk30 += 3.0f; - if(arg0->unk30 > 360.0f) { - arg0->unk30 -= 360.0f; - } - temp_f31 = cosd(arg0->unk30); - temp_f30 = sind(arg0->unk30); - temp_f29 = fn_1_6888(); - arg0->unk34.y = (90+(-arg0->unk30))+180+90; - arg0->unkC.x = 1.5f*(10.0f*temp_f31)+arg0->unk18.x; - arg0->unkC.z = 1.5f*(10.0f*temp_f30)+arg0->unk18.z; - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y+5; - arg0->unk24.z = arg0->unkC.z; - if(arg0->unkC.y > 5.0f+temp_f29) { - arg0->unk5C = 1; - } else { - arg0->unk5C = 0; - } - if(arg0->unk5C == 1 && arg0->unkC.y-15.0f > Center.y+CZoom) { - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } else if(arg0->unk34.y < 0.0f) { - arg0->unk34.y += 360.0f; - } - arg0->unk34.x = fn_1_883C(arg0->unk34.x, -35, 0.1f); + float temp_f31; + float temp_f30; + float temp_f29; + arg0->unk30 += 3.0f; + if (arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + temp_f29 = fn_1_6888(); + arg0->unk34.y = (90 + (-arg0->unk30)) + 180 + 90; + arg0->unkC.x = 1.5f * (10.0f * temp_f31) + arg0->unk18.x; + arg0->unkC.z = 1.5f * (10.0f * temp_f30) + arg0->unk18.z; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y + 5; + arg0->unk24.z = arg0->unkC.z; + if (arg0->unkC.y > 5.0f + temp_f29) { + arg0->unk5C = 1; + } + else { + arg0->unk5C = 0; + } + if (arg0->unk5C == 1 && arg0->unkC.y - 15.0f > Center.y + CZoom) { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + else if (arg0->unk34.y < 0.0f) { + arg0->unk34.y += 360.0f; + } + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -35, 0.1f); } void fn_1_1406C(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - float temp_f26; - float temp_f25; - float temp_f24; - float temp_f23; - float temp_f22; - float temp_f21; - temp_f30 = 1; - temp_f26 = fn_1_6888(); - switch(arg0->unk54) { - case 0: - temp_f29 = cosd(arg0->unk30); - temp_f28 = sind(arg0->unk30); - arg0->unkC.x = temp_f29*(80.0f-(10.0f*temp_f30)); - arg0->unkC.z = temp_f28*(80.0f-(10.0f*temp_f30))*0.7f; - temp_f24 = temp_f26; - if(arg0->unkC.y > temp_f24) { - arg0->unk54 = 1; - arg0->unk18.x = arg0->unkC.x; - arg0->unk18.z = arg0->unkC.z; - } - arg0->unk5C = 1; - arg0->unk48 = 0; - break; - - case 1: - arg0->unk48 += 1.5f; - if(arg0->unk48 > 180.0f) { - arg0->unk54 = 3; - Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - - temp_f31 = 180+arg0->unk30; - if(temp_f31 > 360.0f) { - temp_f31 -= 360.0f; - } - temp_f29 = cosd(temp_f31); - temp_f28 = sind(temp_f31); - temp_f25 = cosd(arg0->unk48*0.5f); - temp_f27 = 180.0f; - temp_f30 = temp_f27+(temp_f25*(-temp_f27)); - temp_f23 = arg0->unk18.x+(temp_f29*temp_f30); - temp_f21 = arg0->unk18.z+(temp_f28*temp_f30); - temp_f22 = temp_f26; - arg0->unkC.x = temp_f23; - arg0->unkC.y = temp_f22; - arg0->unkC.z = temp_f21; - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y+5; - arg0->unk24.z = arg0->unkC.z; - if(arg0->unk34.x < 30.0f) { - arg0->unk34.x += 4.0f; - } else { - arg0->unk34.x = 30.0f; - } - Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 2); - arg0->unk5C = 0; - break; - - case 3: - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - arg0->unk5C = 1; - arg0->unk50 = 0; - arg0->unk54++; - break; - - case 4: - break; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + temp_f30 = 1; + temp_f26 = fn_1_6888(); + switch (arg0->unk54) { + case 0: + temp_f29 = cosd(arg0->unk30); + temp_f28 = sind(arg0->unk30); + arg0->unkC.x = temp_f29 * (80.0f - (10.0f * temp_f30)); + arg0->unkC.z = temp_f28 * (80.0f - (10.0f * temp_f30)) * 0.7f; + temp_f24 = temp_f26; + if (arg0->unkC.y > temp_f24) { + arg0->unk54 = 1; + arg0->unk18.x = arg0->unkC.x; + arg0->unk18.z = arg0->unkC.z; + } + arg0->unk5C = 1; + arg0->unk48 = 0; + break; + + case 1: + arg0->unk48 += 1.5f; + if (arg0->unk48 > 180.0f) { + arg0->unk54 = 3; + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + + temp_f31 = 180 + arg0->unk30; + if (temp_f31 > 360.0f) { + temp_f31 -= 360.0f; + } + temp_f29 = cosd(temp_f31); + temp_f28 = sind(temp_f31); + temp_f25 = cosd(arg0->unk48 * 0.5f); + temp_f27 = 180.0f; + temp_f30 = temp_f27 + (temp_f25 * (-temp_f27)); + temp_f23 = arg0->unk18.x + (temp_f29 * temp_f30); + temp_f21 = arg0->unk18.z + (temp_f28 * temp_f30); + temp_f22 = temp_f26; + arg0->unkC.x = temp_f23; + arg0->unkC.y = temp_f22; + arg0->unkC.z = temp_f21; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y + 5; + arg0->unk24.z = arg0->unkC.z; + if (arg0->unk34.x < 30.0f) { + arg0->unk34.x += 4.0f; + } + else { + arg0->unk34.x = 30.0f; + } + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 2); + arg0->unk5C = 0; + break; + + case 3: + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + arg0->unk5C = 1; + arg0->unk50 = 0; + arg0->unk54++; + break; + + case 4: + break; + } } void fn_1_144D0(StructBssDA4 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - float temp_f26; - float temp_f25; - float temp_f24; - float temp_f23; - float temp_f22; - float temp_f21; - float temp_f20; - float temp_f19; - float temp_f18; - float spC; - float sp8; - - arg0->unk30 += 2.0f; - if(arg0->unk30 > 360.0f) { - arg0->unk30 -= 360.0f; - } - switch(arg0->unk54) { - case 0: - arg0->unk5C = 1; - temp_f31 = cosd(arg0->unk30); - temp_f30 = sind(arg0->unk30); - arg0->unkC.x = 15.0f*temp_f31; - arg0->unkC.z = 15.0f*temp_f30; - arg0->unk34.y = -arg0->unk30+90.0f; - temp_f24 = fn_1_6888(); - temp_f21 = -680.00006f+temp_f24; - if(arg0->unkC.y > temp_f21) { - arg0->unk54 = 1; - arg0->unk60 = 0; - } - break; - - case 1: - if(arg0->unk60 < 102.0f) { - arg0->unk60++; - temp_f27 = arg0->unk60/102.0f; - temp_f29 = 15+(35*temp_f27); - temp_f22 = 90*temp_f27; - temp_f31 = cosd(arg0->unk30); - temp_f30 = sind(arg0->unk30); - arg0->unkC.x = temp_f31*temp_f29; - arg0->unkC.z = temp_f30*temp_f29; - arg0->unk34.y = (-arg0->unk30+90.0f)-temp_f22; - } else { - arg0->unk54 = 2; - arg0->unk60 = 0; - Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 2); - } - break; - - case 2: - temp_f31 = cosd(arg0->unk30); - temp_f30 = sind(arg0->unk30); - temp_f24 = fn_1_6888(); - temp_f26 = 50*temp_f31; - temp_f28 = temp_f24; - temp_f25 = 50*temp_f30; - arg0->unkC.x = temp_f26; - arg0->unkC.y = temp_f28; - arg0->unkC.z = temp_f25; - if(arg0->unk34.x < 30.0f) { - arg0->unk34.x += 4.0f; - } else { - arg0->unk34.x = 30.0f; - } - arg0->unk34.y = (-arg0->unk30+90.0f)-90.0f; - if(arg0->unk60 < 180.0f) { - arg0->unk60++; - } else { - arg0->unk54 = 3; - arg0->unk60 = 0; - arg0->unk18.y = temp_f28; - Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - arg0->unk24.x = temp_f26; - arg0->unk24.y = 5.0f+temp_f28; - arg0->unk24.z = temp_f25; - arg0->unk5C = 0; - break; - - case 3: - if(arg0->unk60 < 150.0f) { - arg0->unk60++; - } else { - arg0->unk54 = 4; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - temp_f27 = 0; - temp_f29 = 50+(40*temp_f27); - temp_f31 = cosd(arg0->unk30); - temp_f30 = sind(arg0->unk30); - temp_f26 = temp_f31*temp_f29; - temp_f28 = arg0->unk18.y; - temp_f25 = temp_f30*temp_f29; - spC = 0; - temp_f20 = -cosd(arg0->unk34.x)*5; - temp_f23 = -sind(arg0->unk34.x)*5; - temp_f19 = temp_f23*sind(arg0->unk34.y); - temp_f18 = temp_f20; - sp8 = temp_f23*cosd(arg0->unk34.y); - arg0->unkC.x = temp_f19+temp_f26; - arg0->unkC.y = temp_f18+temp_f28; - arg0->unkC.z = sp8+temp_f25; - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } - arg0->unk34.y = (-arg0->unk30+90.0f)-90.0f; - arg0->unk5C = 1; - break; - - case 4: - if(arg0->unk5C == 1 && arg0->unkC.y-15.0f > Center.y+CZoom) { - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - break; - } - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } else if(arg0->unk34.y < 0.0f) { - arg0->unk34.y += 360.0f; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + float temp_f19; + float temp_f18; + float spC; + float sp8; + + arg0->unk30 += 2.0f; + if (arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + switch (arg0->unk54) { + case 0: + arg0->unk5C = 1; + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + arg0->unkC.x = 15.0f * temp_f31; + arg0->unkC.z = 15.0f * temp_f30; + arg0->unk34.y = -arg0->unk30 + 90.0f; + temp_f24 = fn_1_6888(); + temp_f21 = -680.00006f + temp_f24; + if (arg0->unkC.y > temp_f21) { + arg0->unk54 = 1; + arg0->unk60 = 0; + } + break; + + case 1: + if (arg0->unk60 < 102.0f) { + arg0->unk60++; + temp_f27 = arg0->unk60 / 102.0f; + temp_f29 = 15 + (35 * temp_f27); + temp_f22 = 90 * temp_f27; + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + arg0->unkC.x = temp_f31 * temp_f29; + arg0->unkC.z = temp_f30 * temp_f29; + arg0->unk34.y = (-arg0->unk30 + 90.0f) - temp_f22; + } + else { + arg0->unk54 = 2; + arg0->unk60 = 0; + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 2); + } + break; + + case 2: + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + temp_f24 = fn_1_6888(); + temp_f26 = 50 * temp_f31; + temp_f28 = temp_f24; + temp_f25 = 50 * temp_f30; + arg0->unkC.x = temp_f26; + arg0->unkC.y = temp_f28; + arg0->unkC.z = temp_f25; + if (arg0->unk34.x < 30.0f) { + arg0->unk34.x += 4.0f; + } + else { + arg0->unk34.x = 30.0f; + } + arg0->unk34.y = (-arg0->unk30 + 90.0f) - 90.0f; + if (arg0->unk60 < 180.0f) { + arg0->unk60++; + } + else { + arg0->unk54 = 3; + arg0->unk60 = 0; + arg0->unk18.y = temp_f28; + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + arg0->unk24.x = temp_f26; + arg0->unk24.y = 5.0f + temp_f28; + arg0->unk24.z = temp_f25; + arg0->unk5C = 0; + break; + + case 3: + if (arg0->unk60 < 150.0f) { + arg0->unk60++; + } + else { + arg0->unk54 = 4; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + temp_f27 = 0; + temp_f29 = 50 + (40 * temp_f27); + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + temp_f26 = temp_f31 * temp_f29; + temp_f28 = arg0->unk18.y; + temp_f25 = temp_f30 * temp_f29; + spC = 0; + temp_f20 = -cosd(arg0->unk34.x) * 5; + temp_f23 = -sind(arg0->unk34.x) * 5; + temp_f19 = temp_f23 * sind(arg0->unk34.y); + temp_f18 = temp_f20; + sp8 = temp_f23 * cosd(arg0->unk34.y); + arg0->unkC.x = temp_f19 + temp_f26; + arg0->unkC.y = temp_f18 + temp_f28; + arg0->unkC.z = sp8 + temp_f25; + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + arg0->unk34.y = (-arg0->unk30 + 90.0f) - 90.0f; + arg0->unk5C = 1; + break; + + case 4: + if (arg0->unk5C == 1 && arg0->unkC.y - 15.0f > Center.y + CZoom) { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + break; + } + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + else if (arg0->unk34.y < 0.0f) { + arg0->unk34.y += 360.0f; + } } void fn_1_14DB4(StructBssDA4 *arg0) { - s32 temp_r30; - float temp_f31; - float temp_f30; - float temp_f29; - temp_f30 = cosd(arg0->unk30); - temp_f29 = sind(arg0->unk30); - arg0->unkC.x = 32.0f*temp_f30; - arg0->unkC.z = 32.0f*temp_f29; - temp_f31 = fn_1_6888(); - switch(arg0->unk54) { - case 0: - if(arg0->unkC.y > temp_f31) { - arg0->unk54 = 1; - arg0->unk60 = 0; - } - arg0->unk34.x += 4.0f; - arg0->unk5C = 1; - break; - - case 1: - arg0->unk5C = 0; - if(arg0->unk58) { - arg0->unk5C = 1; - arg0->unk54 = 4; - arg0->unk60 = 0; - temp_r30 = lbl_1_bss_75A8->model[arg0->unk8]; - Hu3DModelAttrReset(temp_r30, 1); - fn_1_15B50(temp_r30); - fn_1_155E0(temp_r30, 1); - fn_1_15618(temp_r30, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); - HuAudFXPlay(7); - } else { - if(arg0->unk60 < 72.0f) { - arg0->unk60++; - arg0->unkC.y = temp_f31; - } else { - arg0->unk54 = 3; - } - arg0->unk34.x += 8.0f; - arg0->unk34.y += 8.0f; - } - break; - - case 3: - arg0->unk34.x += 4.0f; - arg0->unk5C = 1; - break; - - case 4: - if(arg0->unk60 < 30.0f) { - arg0->unk34.x = 90; - arg0->unk34.y += 32.0f; - if(arg0->unk60 > 5) { - fn_1_155E0(lbl_1_bss_75A8->model[arg0->unk8], 0); - } - arg0->unk4C *= 0.8f; - arg0->unk60++; - } else { - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - break; - } - if(arg0->unk34.x > 360.0f) { - arg0->unk34.x -= 360.0f; - } - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y; - arg0->unk24.z = arg0->unkC.z; + s32 temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + temp_f30 = cosd(arg0->unk30); + temp_f29 = sind(arg0->unk30); + arg0->unkC.x = 32.0f * temp_f30; + arg0->unkC.z = 32.0f * temp_f29; + temp_f31 = fn_1_6888(); + switch (arg0->unk54) { + case 0: + if (arg0->unkC.y > temp_f31) { + arg0->unk54 = 1; + arg0->unk60 = 0; + } + arg0->unk34.x += 4.0f; + arg0->unk5C = 1; + break; + + case 1: + arg0->unk5C = 0; + if (arg0->unk58) { + arg0->unk5C = 1; + arg0->unk54 = 4; + arg0->unk60 = 0; + temp_r30 = lbl_1_bss_75A8->model[arg0->unk8]; + Hu3DModelAttrReset(temp_r30, HU3D_ATTR_DISPOFF); + fn_1_15B50(temp_r30); + fn_1_155E0(temp_r30, 1); + fn_1_15618(temp_r30, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); + HuAudFXPlay(7); + } + else { + if (arg0->unk60 < 72.0f) { + arg0->unk60++; + arg0->unkC.y = temp_f31; + } + else { + arg0->unk54 = 3; + } + arg0->unk34.x += 8.0f; + arg0->unk34.y += 8.0f; + } + break; + + case 3: + arg0->unk34.x += 4.0f; + arg0->unk5C = 1; + break; + + case 4: + if (arg0->unk60 < 30.0f) { + arg0->unk34.x = 90; + arg0->unk34.y += 32.0f; + if (arg0->unk60 > 5) { + fn_1_155E0(lbl_1_bss_75A8->model[arg0->unk8], 0); + } + arg0->unk4C *= 0.8f; + arg0->unk60++; + } + else { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + break; + } + if (arg0->unk34.x > 360.0f) { + arg0->unk34.x -= 360.0f; + } + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y; + arg0->unk24.z = arg0->unkC.z; } void fn_1_151A4(StructBssDA4 *arg0) { - s32 temp_r30; - float temp_f31; - float temp_f30; - float temp_f29; - - arg0->unk48 += 6.0000005f; - if(arg0->unk48 >= 360.0f) { - arg0->unk48 -= 360.0f; - } - arg0->unk34.z = 30*sind(arg0->unk48); - temp_f30 = cosd(arg0->unk30); - temp_f29 = sind(arg0->unk30); - arg0->unkC.x = 32.0f*temp_f30; - arg0->unkC.z = 32.0f*temp_f29; - temp_f31 = fn_1_6888(); - switch(arg0->unk54) { - case 0: - if(arg0->unkC.y > temp_f31) { - arg0->unk54 = 1; - arg0->unk60 = 0; - } - arg0->unk34.x = -45; - arg0->unk34.y = 0; - arg0->unk5C = 1; - break; - - case 1: - arg0->unk5C = 0; - if(arg0->unk58) { - arg0->unk5C = 1; - arg0->unk54 = 4; - arg0->unk60 = 0; - temp_r30 = lbl_1_bss_75A8->model[arg0->unk8]; - Hu3DModelAttrReset(temp_r30, 1); - fn_1_15B50(temp_r30); - fn_1_155E0(temp_r30, 1); - fn_1_15618(temp_r30, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); - HuAudFXPlay(19); - } else { - if(arg0->unk60 < 72.0f) { - arg0->unk60++; - arg0->unkC.y = temp_f31; - } else { - arg0->unk54 = 3; - } - - } - break; - - case 3: - arg0->unk5C = 1; - break; - - case 4: - if(arg0->unk60 < 30.0f) { - arg0->unk34.x = 90; - arg0->unk34.y += 32.0f; - if(arg0->unk60 > 5) { - fn_1_155E0(lbl_1_bss_75A8->model[arg0->unk8], 0); - } - arg0->unk4C *= 0.8f; - arg0->unk60++; - } else { - arg0->unk50 = 0; - Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); - } - break; - } - if(arg0->unk34.x > 360.0f) { - arg0->unk34.x -= 360.0f; - } - if(arg0->unk34.y > 360.0f) { - arg0->unk34.y -= 360.0f; - } - arg0->unk24.x = arg0->unkC.x; - arg0->unk24.y = arg0->unkC.y; - arg0->unk24.z = arg0->unkC.z; + s32 temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + + arg0->unk48 += 6.0000005f; + if (arg0->unk48 >= 360.0f) { + arg0->unk48 -= 360.0f; + } + arg0->unk34.z = 30 * sind(arg0->unk48); + temp_f30 = cosd(arg0->unk30); + temp_f29 = sind(arg0->unk30); + arg0->unkC.x = 32.0f * temp_f30; + arg0->unkC.z = 32.0f * temp_f29; + temp_f31 = fn_1_6888(); + switch (arg0->unk54) { + case 0: + if (arg0->unkC.y > temp_f31) { + arg0->unk54 = 1; + arg0->unk60 = 0; + } + arg0->unk34.x = -45; + arg0->unk34.y = 0; + arg0->unk5C = 1; + break; + + case 1: + arg0->unk5C = 0; + if (arg0->unk58) { + arg0->unk5C = 1; + arg0->unk54 = 4; + arg0->unk60 = 0; + temp_r30 = lbl_1_bss_75A8->model[arg0->unk8]; + Hu3DModelAttrReset(temp_r30, HU3D_ATTR_DISPOFF); + fn_1_15B50(temp_r30); + fn_1_155E0(temp_r30, 1); + fn_1_15618(temp_r30, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); + HuAudFXPlay(19); + } + else { + if (arg0->unk60 < 72.0f) { + arg0->unk60++; + arg0->unkC.y = temp_f31; + } + else { + arg0->unk54 = 3; + } + } + break; + + case 3: + arg0->unk5C = 1; + break; + + case 4: + if (arg0->unk60 < 30.0f) { + arg0->unk34.x = 90; + arg0->unk34.y += 32.0f; + if (arg0->unk60 > 5) { + fn_1_155E0(lbl_1_bss_75A8->model[arg0->unk8], 0); + } + arg0->unk4C *= 0.8f; + arg0->unk60++; + } + else { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], HU3D_ATTR_DISPOFF); + } + break; + } + if (arg0->unk34.x > 360.0f) { + arg0->unk34.x -= 360.0f; + } + if (arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y; + arg0->unk24.z = arg0->unkC.z; } void fn_1_155E0(s16 arg0, s16 arg1) { - ModelData *temp_r31; - ParticleData *temp_r30; - temp_r31 = &Hu3DData[arg0]; - temp_r30 = temp_r31->unk_120; - temp_r30->unk_00 = arg1; + ModelData *temp_r31; + ParticleData *temp_r30; + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->unk_120; + temp_r30->unk_00 = arg1; } void fn_1_15618(s16 arg0, float arg1, float arg2, float arg3) { - ParticleData *temp_r31; - ModelData *temp_r30; - temp_r30 = &Hu3DData[arg0]; - temp_r31 = temp_r30->unk_120; - temp_r31->unk_04.x = arg1; - temp_r31->unk_04.y = arg2; - temp_r31->unk_04.z = arg3; + ParticleData *temp_r31; + ModelData *temp_r30; + temp_r30 = &Hu3DData[arg0]; + temp_r31 = temp_r30->unk_120; + temp_r31->unk_04.x = arg1; + temp_r31->unk_04.y = arg2; + temp_r31->unk_04.z = arg3; } void fn_1_15658(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - u32 temp_r29; - s32 temp_r28; - s16 temp_r27; - GXColor *temp_r26; - if(particle->unk_34 == 0) { - temp_f31 = 90; - particle->unk_02 = 0; - particle->unk_10.y = 3; - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - } - if(particle->unk_00) { - particle->unk_02--; - if(particle->unk_02 <= 0.0f) { - particle->unk_02 = 2; - temp_r27 = 4; - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk2C != 0) { - continue; - } - temp_r31->unk34.x = particle->unk_04.x; - temp_r31->unk34.y = particle->unk_04.y; - temp_r31->unk34.z = particle->unk_04.z; - temp_f30 = frandmod(360); - temp_r29 = frandmod(12); - temp_r29 += 4.0f; - temp_r31->unk34.x = temp_r31->unk34.x+(temp_r29*sind(temp_f30)); - temp_r31->unk34.z = temp_r31->unk34.z+(temp_r29*cosd(temp_f30)); - temp_r31->unk20 = 0; - temp_r31->unk24 = particle->unk_10.y; - temp_r29 = 1; - if(temp_r29 == 1) { - temp_r31->unk14.x = 0.97643f; - } else { - temp_r31->unk14.x = 0.96666664f; - } - temp_r31->unk00 = 60; - temp_r31->unk2C = 8; - temp_r29 = frand()&0x1; - temp_r26 = &lbl_1_data_4F4[temp_r29]; - temp_r31->unk40.r = temp_r26->r; - temp_r31->unk40.g = temp_r26->g; - temp_r31->unk40.b = temp_r26->b; - temp_r31->unk40.a = 0; - temp_r31->unk02 = temp_r29; - temp_r27--; - if(temp_r27 == 0) { - break; - } - } - } - } - temp_r27 = 0; - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk2C == 0) { - continue; - } - temp_r27++; - temp_r31->unk34.y -= 4.0f; - temp_f31 = 1.0+cosd(temp_r31->unk20); - temp_f31 *= 0.5f; - temp_r31->unk40.a = temp_f31*255; - temp_r31->unk20 += temp_r31->unk24; - temp_r31->unk30 = temp_r31->unk20; - temp_r31->unk2C *= temp_r31->unk14.x; - temp_r31->unk02 ^= 0x3; - if(temp_r31->unk02 & 0x1) { - temp_r31->unk40.b = 0; - temp_r31->unk40.g = 200; - } else { - temp_r31->unk40.b = 200; - temp_r31->unk40.g = 200; - } - if(temp_r31->unk02 & 0x2) { - temp_r29 = temp_r31->unk40.a+64; - if(temp_r29 > 255) { - temp_r29 -= 128; - } - temp_r31->unk40.a = temp_r29; - } - temp_r31->unk00_s16--; - if(temp_r31->unk00_s16 <= 0) { - temp_r31->unk2C = 0; - } - } - DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - if(particle->unk_00 == 0 && temp_r27 == 0) { - model->attr |= 0x1; - } + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + u32 temp_r29; + s32 temp_r28; + s16 temp_r27; + GXColor *temp_r26; + if (particle->unk_34 == 0) { + temp_f31 = 90; + particle->unk_02 = 0; + particle->unk_10.y = 3; + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + if (particle->unk_00) { + particle->unk_02--; + if (particle->unk_02 <= 0.0f) { + particle->unk_02 = 2; + temp_r27 = 4; + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk2C != 0) { + continue; + } + temp_r31->unk34.x = particle->unk_04.x; + temp_r31->unk34.y = particle->unk_04.y; + temp_r31->unk34.z = particle->unk_04.z; + temp_f30 = frandmod(360); + temp_r29 = frandmod(12); + temp_r29 += 4.0f; + temp_r31->unk34.x = temp_r31->unk34.x + (temp_r29 * sind(temp_f30)); + temp_r31->unk34.z = temp_r31->unk34.z + (temp_r29 * cosd(temp_f30)); + temp_r31->unk20 = 0; + temp_r31->unk24 = particle->unk_10.y; + temp_r29 = 1; + if (temp_r29 == 1) { + temp_r31->unk14.x = 0.97643f; + } + else { + temp_r31->unk14.x = 0.96666664f; + } + temp_r31->unk00 = 60; + temp_r31->unk2C = 8; + temp_r29 = frand() & 0x1; + temp_r26 = &lbl_1_data_4F4[temp_r29]; + temp_r31->unk40.r = temp_r26->r; + temp_r31->unk40.g = temp_r26->g; + temp_r31->unk40.b = temp_r26->b; + temp_r31->unk40.a = 0; + temp_r31->unk02 = temp_r29; + temp_r27--; + if (temp_r27 == 0) { + break; + } + } + } + } + temp_r27 = 0; + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk2C == 0) { + continue; + } + temp_r27++; + temp_r31->unk34.y -= 4.0f; + temp_f31 = 1.0 + cosd(temp_r31->unk20); + temp_f31 *= 0.5f; + temp_r31->unk40.a = temp_f31 * 255; + temp_r31->unk20 += temp_r31->unk24; + temp_r31->unk30 = temp_r31->unk20; + temp_r31->unk2C *= temp_r31->unk14.x; + temp_r31->unk02 ^= 0x3; + if (temp_r31->unk02 & 0x1) { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 200; + } + else { + temp_r31->unk40.b = 200; + temp_r31->unk40.g = 200; + } + if (temp_r31->unk02 & 0x2) { + temp_r29 = temp_r31->unk40.a + 64; + if (temp_r29 > 255) { + temp_r29 -= 128; + } + temp_r31->unk40.a = temp_r29; + } + temp_r31->unk00--; + if (temp_r31->unk00 <= 0) { + temp_r31->unk2C = 0; + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + if (particle->unk_00 == 0 && temp_r27 == 0) { + model->attr |= 0x1; + } } void fn_1_15B50(s16 arg0) { - ParticleData *temp_r31; - HsfanimStruct01 *temp_r30; - s32 temp_r29; - ModelData *temp_r28 = &Hu3DData[arg0]; - temp_r31 = temp_r28->unk_120; - temp_r31->unk_34 = 0; - temp_r30 = temp_r31->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { - temp_r30->unk2C = 0; - } + ParticleData *temp_r31; + HsfanimStruct01 *temp_r30; + s32 temp_r29; + ModelData *temp_r28 = &Hu3DData[arg0]; + temp_r31 = temp_r28->unk_120; + temp_r31->unk_34 = 0; + temp_r30 = temp_r31->unk_48; + for (temp_r29 = 0; temp_r29 < temp_r31->unk_30; temp_r29++, temp_r30++) { + temp_r30->unk2C = 0; + } } void fn_1_15CA4(omObjData *object); @@ -1365,172 +1362,173 @@ void fn_1_15D64(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_15BCC(omObjData *object) { - s16 temp_r30; - s32 temp_r29; - omSetStatBit(object, 0x100); - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r30 = Hu3DParticleCreate(HuSprAnimReadFile(0x270019), 9); - object->model[temp_r29] = temp_r30; - Hu3DModelAttrSet(temp_r30, 1); - Hu3DModelLayerSet(temp_r30, 7); - Hu3DParticleColSet(temp_r30, 255, 255, 255); - Hu3DParticleHookSet(temp_r30, fn_1_15D64); - } - object->work[0] = -1; - object->func = fn_1_15CA4; + s16 temp_r30; + s32 temp_r29; + omSetStatBit(object, 0x100); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r30 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M408, 0x19)), 9); + object->model[temp_r29] = temp_r30; + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(temp_r30, 7); + Hu3DParticleColSet(temp_r30, 255, 255, 255); + Hu3DParticleHookSet(temp_r30, fn_1_15D64); + } + object->work[0] = -1; + object->func = fn_1_15CA4; } void fn_1_15CA4(omObjData *object) { - s32 temp_r31; - s16 temp_r29; - ModelData *temp_r28; - ParticleData *temp_r27; - temp_r31 = object->work[0]; - if(temp_r31 <= -1) { - return; - } - object->work[0] = -1; - temp_r29 = object->model[temp_r31]; - temp_r28 = &Hu3DData[temp_r29]; - temp_r27 = temp_r28->unk_120; - Hu3DModelAttrReset(temp_r29, 1); - Hu3DModelPosSet(temp_r29, lbl_1_bss_D6C[temp_r31].x, lbl_1_bss_D6C[temp_r31].y, lbl_1_bss_D6C[temp_r31].z); - temp_r27->unk_34 = 0; - + s32 temp_r31; + s16 temp_r29; + ModelData *temp_r28; + ParticleData *temp_r27; + temp_r31 = object->work[0]; + if (temp_r31 <= -1) { + return; + } + object->work[0] = -1; + temp_r29 = object->model[temp_r31]; + temp_r28 = &Hu3DData[temp_r29]; + temp_r27 = temp_r28->unk_120; + Hu3DModelAttrReset(temp_r29, HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(temp_r29, lbl_1_bss_D6C[temp_r31].x, lbl_1_bss_D6C[temp_r31].y, lbl_1_bss_D6C[temp_r31].z); + temp_r27->unk_34 = 0; } void fn_1_15D64(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - u32 temp_r28; - s16 temp_r27; - s16 temp_r26; - if(particle->unk_34 == 0) { - temp_f31 = 72; - particle->unk_00 = 1; - particle->unk_02 = 0; - particle->unk_10.y = 22.5f; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk2C = 0; - temp_r31->unk40.a = 0; - } - } - if(particle->unk_00) { - particle->unk_00 = 0; - particle->unk_02--; - if(particle->unk_02 <= 0.0f) { - particle->unk_02 =30; - temp_r31 = particle->unk_48; - temp_r26 = -1; - temp_r27 = 0; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk2C != 0) { - continue; - } - if(temp_r27 <= 0) { - temp_r26++; - if(temp_r26 >= 3) { - break; - } - temp_f30 = lbl_1_data_514[temp_r26]; - temp_f28 = lbl_1_data_508[temp_r26]; - temp_f29 = lbl_1_data_520[temp_r26]; - temp_r27 = lbl_1_data_504[temp_r26]; - } - temp_r27--; - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - if(90.0f == temp_f29) { - temp_r31->unk08.z = 5; - temp_r31->unk08.x = temp_r31->unk08.y = 0; - } else { - temp_f31 = 5*cosd(temp_f29); - temp_r31->unk08.z = 5.0*sind(temp_f29); - temp_r31->unk08.x = temp_f31*sind(temp_f30); - temp_r31->unk08.y = temp_f31*cosd(temp_f30); - } - temp_r31->unk20 = 0; - temp_r31->unk24 = particle->unk_10.y; - temp_r28 = 1; - temp_r31->unk00 = 8; - temp_r31->unk2C = 10; - temp_r31->unk14.x = 1.125f; - temp_r28 = frand()&0x1; - temp_r31->unk02 = temp_r28; - temp_r31->unk40.r = 255; - temp_r31->unk40.g = 255; - temp_r31->unk40.b = 255; - temp_r31->unk40.a = 0; - if(temp_r28) { - temp_r31->unk40.b = 0; - temp_r31->unk40.g = 0; - } - temp_f30 += temp_f28; - } - } - } - temp_r27 = 0; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk2C == 0) { - continue; - } - temp_r27++; - VECAdd(&temp_r31->unk08, &temp_r31->unk34, &temp_r31->unk34); - temp_f31 = 1.0+cosd(temp_r31->unk20); - temp_f31 *= 0.45f; - temp_r31->unk40.a = temp_f31*255; - temp_r31->unk20 += temp_r31->unk24; - temp_r31->unk2C -= temp_r31->unk14.x; - temp_r31->unk02 ^= 0x3; - if(temp_r31->unk02 & 0x1) { - temp_r31->unk40.b = 0; - temp_r31->unk40.g = 100; - } else { - temp_r31->unk40.b = 0; - temp_r31->unk40.g = 200; - } - if(temp_r31->unk02 & 0x2) { - temp_r28 = temp_r31->unk40.a+64; - if(temp_r28 > 255) { - temp_r28 -= 128; - } - temp_r31->unk40.a = temp_r28; - } - temp_r31->unk00_s16--; - if(temp_r31->unk00_s16 <= 0) { - temp_r31->unk2C = 0; - } - } - DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - if(particle->unk_00 == 0 && temp_r27 == 0) { - model->attr |= 0x1; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + u32 temp_r28; + s16 temp_r27; + s16 temp_r26; + if (particle->unk_34 == 0) { + temp_f31 = 72; + particle->unk_00 = 1; + particle->unk_02 = 0; + particle->unk_10.y = 22.5f; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + if (particle->unk_00) { + particle->unk_00 = 0; + particle->unk_02--; + if (particle->unk_02 <= 0.0f) { + particle->unk_02 = 30; + temp_r31 = particle->unk_48; + temp_r26 = -1; + temp_r27 = 0; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk2C != 0) { + continue; + } + if (temp_r27 <= 0) { + temp_r26++; + if (temp_r26 >= 3) { + break; + } + temp_f30 = lbl_1_data_514[temp_r26]; + temp_f28 = lbl_1_data_508[temp_r26]; + temp_f29 = lbl_1_data_520[temp_r26]; + temp_r27 = lbl_1_data_504[temp_r26]; + } + temp_r27--; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + if (90.0f == temp_f29) { + temp_r31->unk08.z = 5; + temp_r31->unk08.x = temp_r31->unk08.y = 0; + } + else { + temp_f31 = 5 * cosd(temp_f29); + temp_r31->unk08.z = 5.0 * sind(temp_f29); + temp_r31->unk08.x = temp_f31 * sind(temp_f30); + temp_r31->unk08.y = temp_f31 * cosd(temp_f30); + } + temp_r31->unk20 = 0; + temp_r31->unk24 = particle->unk_10.y; + temp_r28 = 1; + temp_r31->unk00 = 8; + temp_r31->unk2C = 10; + temp_r31->unk14.x = 1.125f; + temp_r28 = frand() & 0x1; + temp_r31->unk02 = temp_r28; + temp_r31->unk40.r = 255; + temp_r31->unk40.g = 255; + temp_r31->unk40.b = 255; + temp_r31->unk40.a = 0; + if (temp_r28) { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 0; + } + temp_f30 += temp_f28; + } + } + } + temp_r27 = 0; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk2C == 0) { + continue; + } + temp_r27++; + VECAdd(&temp_r31->unk08, &temp_r31->unk34, &temp_r31->unk34); + temp_f31 = 1.0 + cosd(temp_r31->unk20); + temp_f31 *= 0.45f; + temp_r31->unk40.a = temp_f31 * 255; + temp_r31->unk20 += temp_r31->unk24; + temp_r31->unk2C -= temp_r31->unk14.x; + temp_r31->unk02 ^= 0x3; + if (temp_r31->unk02 & 0x1) { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 100; + } + else { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 200; + } + if (temp_r31->unk02 & 0x2) { + temp_r28 = temp_r31->unk40.a + 64; + if (temp_r28 > 255) { + temp_r28 -= 128; + } + temp_r31->unk40.a = temp_r28; + } + temp_r31->unk00--; + if (temp_r31->unk00 <= 0) { + temp_r31->unk2C = 0; + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + if (particle->unk_00 == 0 && temp_r27 == 0) { + model->attr |= 0x1; + } } s32 fn_1_162CC(Vec *arg0, Vec *arg1) { - Vec spC; - s32 temp_r31; - float temp_f31; - float temp_f30; - temp_f30 = 1000; - if(!lbl_1_bss_168) { - return 0; - } - for(temp_r31=0; temp_r31data = spC = HuMemDirectMallocNum(HEAP_SYSTEM, 436*sizeof(u16), MEMORY_DEFAULT_NUM); - lbl_1_bss_14C[0] = HuSprAnimRead(HuDataReadNum(0x270024, MEMORY_DEFAULT_NUM)); - lbl_1_bss_14C[1] = HuSprAnimRead(HuDataReadNum(0x270025, MEMORY_DEFAULT_NUM)); - lbl_1_bss_14C[2] = HuSprAnimRead(HuDataReadNum(0x270026, MEMORY_DEFAULT_NUM)); - lbl_1_bss_14C[4] = HuSprAnimRead(HuDataReadNum(0x270028, MEMORY_DEFAULT_NUM)); - lbl_1_bss_14C[3] = HuSprAnimRead(HuDataReadNum(0x270029, MEMORY_DEFAULT_NUM)); - object->model[0] = Hu3DModelCreateFile(0x27001A); - omSetSca(object, 0.1f, 0.1f, 0.1f); - temp_r31 = object->model[0]; - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelAttrSet(temp_r31, 1); - object->model[4] = Hu3DModelCreateFile(0x27001E); - temp_r31 = object->model[4]; - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); - Hu3DModelAttrSet(temp_r31, 1); - object->model[5] = Hu3DModelCreateFile(0x270020); - temp_r31 = object->model[5]; - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); - object->model[2] = Hu3DModelCreateFile(0x27001B); - temp_r31 = object->model[2]; - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelPosSet(temp_r31, -20, -10, -150); - Hu3DModelScaleSet(temp_r31, 0.14500001f, 0.14500001f, 0.14500001f); - Hu3DModelAttrSet(temp_r31, 1); - object->model[3] = Hu3DModelCreateFile(0x27001D); - temp_r31 = object->model[3]; - Hu3DModelPosSet(temp_r31, 0, -50, -500); - Hu3DModelScaleSet(temp_r31, 0.15f, 0.15f, 0.15f); - Hu3DModelLayerSet(temp_r31, 0); - Hu3DModelAttrSet(temp_r31, 1); - sp8 = fn_1_F4B0(temp_r31, temp_r31); - object->model[9] = Hu3DModelCreateFile(0x27001C); - temp_r31 = object->model[9]; - lbl_1_bss_148 = temp_r31; - Hu3DModelScaleSet(temp_r31, 0.11000001f, 0.1f, 0.11000001f); - Hu3DModelPosSet(temp_r31, 0, 10000, 0); - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelAttrSet(temp_r31, 1); - object->model[11] = Hu3DModelCreateFile(0x27001F); - temp_r31 = object->model[11]; - Hu3DModelPosSet(temp_r31, 0, 10000, 0); - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelScaleSet(temp_r31, 0.105f, 0.1f, 0.105f); - Hu3DModelAttrSet(temp_r31, 1); - object->model[12] = Hu3DModelCreateFile(0x270023); - temp_r31 = object->model[12]; - Hu3DModelLayerSet(temp_r31, 3); - Hu3DModelPosSet(temp_r31, 0, 5000, 0); - Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); - Hu3DModelAttrSet(temp_r31, 1); - Hu3DMotionSpeedSet(temp_r31, 0); - object->model[19] = temp_r31 = fn_1_D978(lbl_1_bss_14C[0], 80, fn_1_E310); - Hu3DModelLayerSet(temp_r31, 1); - Hu3DModelPosSet(temp_r31, 0, 5100, 0); - Hu3DParticleBlendModeSet(temp_r31, 1); - temp_r29 = ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_1C; - temp_r29[2] = 140; - object->model[14] = Hu3DModelCreateFile(0x270021); - object->model[15] = Hu3DModelCreateFile(0x270022); - object->model[16] = Hu3DModelCreateFile(0x270021); - object->model[17] = Hu3DModelCreateFile(0x270022); - for(temp_r28=0; temp_r28<4; temp_r28++) { - temp_r31 = object->model[temp_r28+14]; - Hu3DModelLayerSet(temp_r31, 3); - Hu3DModelRotSet(temp_r31, 0, frandmod(360), 0); - Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); - Hu3DModelAttrSet(temp_r31, 1); - Hu3DMotionSpeedSet(temp_r31, 0); - } - object->model[6] = temp_r31 = fn_1_D978(lbl_1_bss_14C[4], 1, fn_1_EEF8); - Hu3DModelPosSet(temp_r31, 0, 5000, 0); - Hu3DModelLayerSet(temp_r31, 3); - Hu3DModelAttrReset(temp_r31, 1); - Hu3DParticleBlendModeSet(temp_r31, 1); - temp_r29 = ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_1C; - temp_r29[1] = 800; - object->func = fn_1_CD14; + s32 temp_r31; + float *temp_r29; + s32 temp_r28; + + u16 *spC; + WorkF4B0 *sp8; + object->data = spC = HuMemDirectMallocNum(HEAP_SYSTEM, 436 * sizeof(u16), MEMORY_DEFAULT_NUM); + lbl_1_bss_14C[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M408, 0x24), MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M408, 0x25), MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M408, 0x26), MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[4] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M408, 0x28), MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M408, 0x29), MEMORY_DEFAULT_NUM)); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x1A)); + omSetSca(object, 0.1f, 0.1f, 0.1f); + temp_r31 = object->model[0]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x1E)); + temp_r31 = object->model[4]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x20)); + temp_r31 = object->model[5]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x1B)); + temp_r31 = object->model[2]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelPosSet(temp_r31, -20, -10, -150); + Hu3DModelScaleSet(temp_r31, 0.14500001f, 0.14500001f, 0.14500001f); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x1D)); + temp_r31 = object->model[3]; + Hu3DModelPosSet(temp_r31, 0, -50, -500); + Hu3DModelScaleSet(temp_r31, 0.15f, 0.15f, 0.15f); + Hu3DModelLayerSet(temp_r31, 0); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + sp8 = fn_1_F4B0(temp_r31, temp_r31); + object->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x1C)); + temp_r31 = object->model[9]; + lbl_1_bss_148 = temp_r31; + Hu3DModelScaleSet(temp_r31, 0.11000001f, 0.1f, 0.11000001f); + Hu3DModelPosSet(temp_r31, 0, 10000, 0); + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + object->model[11] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x1F)); + temp_r31 = object->model[11]; + Hu3DModelPosSet(temp_r31, 0, 10000, 0); + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelScaleSet(temp_r31, 0.105f, 0.1f, 0.105f); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + object->model[12] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x23)); + temp_r31 = object->model[12]; + Hu3DModelLayerSet(temp_r31, 3); + Hu3DModelPosSet(temp_r31, 0, 5000, 0); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + Hu3DMotionSpeedSet(temp_r31, 0); + object->model[19] = temp_r31 = fn_1_D978(lbl_1_bss_14C[0], 80, fn_1_E310); + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelPosSet(temp_r31, 0, 5100, 0); + Hu3DParticleBlendModeSet(temp_r31, 1); + temp_r29 = ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_1C; + temp_r29[2] = 140; + object->model[14] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x21)); + object->model[15] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x22)); + object->model[16] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x21)); + object->model[17] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M408, 0x22)); + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + temp_r31 = object->model[temp_r28 + 14]; + Hu3DModelLayerSet(temp_r31, 3); + Hu3DModelRotSet(temp_r31, 0, frandmod(360), 0); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); + Hu3DMotionSpeedSet(temp_r31, 0); + } + object->model[6] = temp_r31 = fn_1_D978(lbl_1_bss_14C[4], 1, fn_1_EEF8); + Hu3DModelPosSet(temp_r31, 0, 5000, 0); + Hu3DModelLayerSet(temp_r31, 3); + Hu3DModelAttrReset(temp_r31, HU3D_ATTR_DISPOFF); + Hu3DParticleBlendModeSet(temp_r31, 1); + temp_r29 = ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_1C; + temp_r29[1] = 800; + object->func = fn_1_CD14; } void fn_1_D004(omObjData *object); void fn_1_CD14(omObjData *object) { - u16 *temp_r30; - u32 temp_r29; - temp_r29 = fn_1_6878(); - temp_r30 = object->data; - switch(temp_r29) { - case 1: - temp_r30[0] = 2; - temp_r30[1] = 0; - lbl_1_bss_140 = 1; - break; - - case 2: - case 3: - fn_1_D004(object); - temp_r30[1]++; - break; - - case 4: - Hu3DModelScaleSet(object->model[2], 0.16000001f, 0.16000001f, 0.16000001f); - Hu3DModelShadowMapSet(object->model[0]); - Hu3DModelShadowSet(object->model[4]); - break; - - default: - break; - } - if(temp_r29 > 3) { - if(lbl_1_bss_134 >= 0) { - HuAudFXStop(lbl_1_bss_134); - lbl_1_bss_134 = -1; - } - if(lbl_1_bss_130 >= 0) { - HuAudFXStop(lbl_1_bss_130); - lbl_1_bss_130 = -1; - } - } + u16 *temp_r30; + u32 temp_r29; + temp_r29 = fn_1_6878(); + temp_r30 = object->data; + switch (temp_r29) { + case 1: + temp_r30[0] = 2; + temp_r30[1] = 0; + lbl_1_bss_140 = 1; + break; + + case 2: + case 3: + fn_1_D004(object); + temp_r30[1]++; + break; + + case 4: + Hu3DModelScaleSet(object->model[2], 0.16000001f, 0.16000001f, 0.16000001f); + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelShadowSet(object->model[4]); + break; + + default: + break; + } + if (temp_r29 > 3) { + if (lbl_1_bss_134 >= 0) { + HuAudFXStop(lbl_1_bss_134); + lbl_1_bss_134 = -1; + } + if (lbl_1_bss_130 >= 0) { + HuAudFXStop(lbl_1_bss_130); + lbl_1_bss_130 = -1; + } + } } s32 fn_1_CE68(void) { - switch(lbl_1_bss_140) { - case 0: - return 0; - - case 1: - if(lbl_1_bss_144) { - return 2; - } else { - return 1; - } - break; - - case 2: - if(lbl_1_bss_144) { - return 3; - } else { - return 4; - } - break; - } + switch (lbl_1_bss_140) { + case 0: + return 0; + + case 1: + if (lbl_1_bss_144) { + return 2; + } + else { + return 1; + } + break; + + case 2: + if (lbl_1_bss_144) { + return 3; + } + else { + return 4; + } + break; + } } void fn_1_CEEC(void) { - omObjData *temp_r31; - s32 temp_r30; - temp_r31 = lbl_1_bss_13C; - if(lbl_1_bss_140 >= 2) { - return; - } - lbl_1_bss_140 = 2; - Hu3DModelAttrSet(temp_r31->model[5], 1); - Hu3DModelAttrSet(temp_r31->model[9], 1); - Hu3DModelAttrSet(temp_r31->model[11], 1); - Hu3DModelAttrSet(temp_r31->model[12], 1); - Hu3DModelAttrSet(temp_r31->model[19], 1); - for(temp_r30=0; temp_r30<4; temp_r30++) { - Hu3DModelAttrSet(temp_r31->model[temp_r30+14], 1); - } - Hu3DModelAttrReset(temp_r31->model[0], 1); - Hu3DModelAttrReset(temp_r31->model[4], 1); - Hu3DModelAttrReset(temp_r31->model[2], 1); - Hu3DModelAttrReset(temp_r31->model[3], 1); + omObjData *temp_r31; + s32 temp_r30; + temp_r31 = lbl_1_bss_13C; + if (lbl_1_bss_140 >= 2) { + return; + } + lbl_1_bss_140 = 2; + Hu3DModelAttrSet(temp_r31->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->model[11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->model[12], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->model[19], HU3D_ATTR_DISPOFF); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + Hu3DModelAttrSet(temp_r31->model[temp_r30 + 14], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(temp_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->model[3], HU3D_ATTR_DISPOFF); } void fn_1_D6F0(omObjData *object); void fn_1_D004(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - u16 *temp_r30; - float *temp_r28; - s32 temp_r27; - s32 temp_r26; - CameraData *sp8; - temp_r30 = object->data; - sp8 = &Hu3DCamera[0]; - temp_f30 = fn_1_6888(); - temp_f28 = 7000; - switch(temp_r30[0]) { - case 2: - Hu3DModelAttrReset(object->model[9], 1); - Hu3DModelAttrReset(object->model[11], 1); - Hu3DModelAttrReset(object->model[12], 1); - Hu3DModelAttrReset(object->model[19], 1); - for(temp_r26=0; temp_r26<4; temp_r26++) { - Hu3DModelAttrReset(object->model[temp_r26+14], 1); - } - Hu3DModelAttrReset(object->model[6], 1); - if(lbl_1_bss_134 < 0) { - lbl_1_bss_134 = HuAudFXPlay(1363); - } - temp_r30[2] = 0; - temp_r30[0]++; - - case 3: - temp_f31 = temp_r30[1]*0.25f; - Hu3DModelRotSet(object->model[9], 0, 0.7f*-temp_f31, 0); - Hu3DModelRotSet(object->model[11], 0, 1.3f*temp_f31, 0); - Hu3DModelRotSet(object->model[12], 0, 3.7f*temp_f31, 0); - temp_f29 = 1.0f-((temp_f30-5000)/15000); - Hu3DMotionTimeSet(object->model[12], 95.0f*temp_f29); - temp_r27 = object->model[6]; - temp_r28 = ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_1C; - temp_r28[2] = 1.0f-((temp_f30-5000)/(temp_f28-5000)); - if(temp_f30 <= 5400 && temp_r30[2] == 0) { - temp_r30[2] = 30; - if(!lbl_1_bss_40) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, temp_r30[2]); - lbl_1_bss_44 = 1; - } - lbl_1_bss_144 = 1; - temp_r30[0]++; - } - if(temp_f30 <= 4800) { - temp_r28[1] = 1200; - temp_r30[0]++; - } - fn_1_D6F0(object); - break; - - case 4: - if(temp_r30[2]-- == 0) { - if(!lbl_1_bss_40) { - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - lbl_1_bss_44 = 0; - } - if(lbl_1_bss_138 < 0) { - lbl_1_bss_138 = HuAudFXPlay(1357); - } - fn_1_CEEC(); - if(lbl_1_bss_134 >= 0) { - HuAudFXStop(lbl_1_bss_134); - lbl_1_bss_134 = -1; - } - if(lbl_1_bss_130 < 0) { - lbl_1_bss_130 = HuAudFXPlay(1361); - } - temp_r30[0]++; - } - - break; - - case 5: - if(!WipeStatGet()) { - lbl_1_bss_144 = 0; - } - temp_r27 = object->model[6]; - if(temp_r27 != 0) { - Hu3DModelPosSet(temp_r27, 0, 200+temp_f30, 0); - temp_r28 = ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_1C; - temp_r28[2] -= 0.025f; - if(temp_r28[2] <= 0) { - Hu3DModelAttrReset(temp_r27, 0x20); - Hu3DModelKill(temp_r27); - object->model[6] = 0; - } - } - temp_f31 = temp_r30[1]%360; - temp_f31 = 0.1f*(1.4f+((0.2f*temp_f30)/5000)); - Hu3DModelScaleSet(object->model[2], temp_f31, temp_f31, temp_f31); - break; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + u16 *temp_r30; + float *temp_r28; + s32 temp_r27; + s32 temp_r26; + CameraData *sp8; + temp_r30 = object->data; + sp8 = &Hu3DCamera[0]; + temp_f30 = fn_1_6888(); + temp_f28 = 7000; + switch (temp_r30[0]) { + case 2: + Hu3DModelAttrReset(object->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[12], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[19], HU3D_ATTR_DISPOFF); + for (temp_r26 = 0; temp_r26 < 4; temp_r26++) { + Hu3DModelAttrReset(object->model[temp_r26 + 14], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(object->model[6], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_134 < 0) { + lbl_1_bss_134 = HuAudFXPlay(1363); + } + temp_r30[2] = 0; + temp_r30[0]++; + + case 3: + temp_f31 = temp_r30[1] * 0.25f; + Hu3DModelRotSet(object->model[9], 0, 0.7f * -temp_f31, 0); + Hu3DModelRotSet(object->model[11], 0, 1.3f * temp_f31, 0); + Hu3DModelRotSet(object->model[12], 0, 3.7f * temp_f31, 0); + temp_f29 = 1.0f - ((temp_f30 - 5000) / 15000); + Hu3DMotionTimeSet(object->model[12], 95.0f * temp_f29); + temp_r27 = object->model[6]; + temp_r28 = ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_1C; + temp_r28[2] = 1.0f - ((temp_f30 - 5000) / (temp_f28 - 5000)); + if (temp_f30 <= 5400 && temp_r30[2] == 0) { + temp_r30[2] = 30; + if (!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, temp_r30[2]); + lbl_1_bss_44 = 1; + } + lbl_1_bss_144 = 1; + temp_r30[0]++; + } + if (temp_f30 <= 4800) { + temp_r28[1] = 1200; + temp_r30[0]++; + } + fn_1_D6F0(object); + break; + + case 4: + if (temp_r30[2]-- == 0) { + if (!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + lbl_1_bss_44 = 0; + } + if (lbl_1_bss_138 < 0) { + lbl_1_bss_138 = HuAudFXPlay(1357); + } + fn_1_CEEC(); + if (lbl_1_bss_134 >= 0) { + HuAudFXStop(lbl_1_bss_134); + lbl_1_bss_134 = -1; + } + if (lbl_1_bss_130 < 0) { + lbl_1_bss_130 = HuAudFXPlay(1361); + } + temp_r30[0]++; + } + + break; + + case 5: + if (!WipeStatGet()) { + lbl_1_bss_144 = 0; + } + temp_r27 = object->model[6]; + if (temp_r27 != 0) { + Hu3DModelPosSet(temp_r27, 0, 200 + temp_f30, 0); + temp_r28 = ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_1C; + temp_r28[2] -= 0.025f; + if (temp_r28[2] <= 0) { + Hu3DModelAttrReset(temp_r27, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(temp_r27); + object->model[6] = 0; + } + } + temp_f31 = temp_r30[1] % 360; + temp_f31 = 0.1f * (1.4f + ((0.2f * temp_f30) / 5000)); + Hu3DModelScaleSet(object->model[2], temp_f31, temp_f31, temp_f31); + break; + } } void fn_1_D6F0(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - temp_f28 = fn_1_6888()-1500; - temp_f29 = 500.0f*(int)(temp_f28/500.0f); - temp_r30 = (int)(temp_f28/500.0f)%4; - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r29 = object->model[temp_r30+14]; - Hu3DModelPosSet(temp_r29, 0, temp_f29, 0); - temp_f31 = temp_f29-temp_f28; - temp_f30 = 0; - if(temp_f31 > -250.0f && temp_f31 < 1525.0f) { - temp_f30 = 45; - if(temp_f31 < 0.0f) { - temp_f31 -= -250.0f; - temp_f30 *= fabs(temp_f31/250.0f); - } else { - if(temp_f31 > 1425) { - temp_f31 -= 1425; - temp_f30 *= 1.0-fabs(temp_f31/100.0f); - } - } - } - Hu3DMotionTimeSet(temp_r29, temp_f30); - temp_f29 += 500.0f; - temp_r30 = (temp_r30+1)%4; - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + temp_f28 = fn_1_6888() - 1500; + temp_f29 = 500.0f * (int)(temp_f28 / 500.0f); + temp_r30 = (int)(temp_f28 / 500.0f) % 4; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r29 = object->model[temp_r30 + 14]; + Hu3DModelPosSet(temp_r29, 0, temp_f29, 0); + temp_f31 = temp_f29 - temp_f28; + temp_f30 = 0; + if (temp_f31 > -250.0f && temp_f31 < 1525.0f) { + temp_f30 = 45; + if (temp_f31 < 0.0f) { + temp_f31 -= -250.0f; + temp_f30 *= fabs(temp_f31 / 250.0f); + } + else { + if (temp_f31 > 1425) { + temp_f31 -= 1425; + temp_f30 *= 1.0 - fabs(temp_f31 / 100.0f); + } + } + } + Hu3DMotionTimeSet(temp_r29, temp_f30); + temp_f29 += 500.0f; + temp_r30 = (temp_r30 + 1) % 4; + } } s16 fn_1_D978(AnimData *arg0, s16 arg1, ParticleHook arg2) { - s32 temp_r31; - HsfanimStruct01 *temp_r30; - ParticleData *temp_r29; - s32 temp_r28; - HsfanimStruct01 *temp_r27; - temp_r28 = Hu3DParticleCreate(arg0, arg1); - Hu3DParticleHookSet(temp_r28, arg2); - Hu3DModelAttrSet(temp_r28, 1); - temp_r29 = Hu3DData[temp_r28].unk_120; - temp_r27 = temp_r29->unk_48; - for(temp_r31=0; temp_r31unk_30; temp_r31++, temp_r27++) { - temp_r27->unk2C = 0; - } - temp_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(HsfanimStruct01), MEMORY_DEFAULT_NUM); - temp_r29->unk_1C = temp_r30; - temp_r30->unk00_s16 = temp_r28; - temp_r30->unk02 = 0; - for(temp_r31=0; temp_r31<32; temp_r31++) { - //Ugly expression to match store without new type - *((s16 *)(((u8 *)temp_r30)+(temp_r31*2)+4)) = 0; - } - return temp_r28; + s32 temp_r31; + HsfanimStruct01 *temp_r30; + ParticleData *temp_r29; + s32 temp_r28; + HsfanimStruct01 *temp_r27; + temp_r28 = Hu3DParticleCreate(arg0, arg1); + Hu3DParticleHookSet(temp_r28, arg2); + Hu3DModelAttrSet(temp_r28, HU3D_ATTR_DISPOFF); + temp_r29 = Hu3DData[temp_r28].unk_120; + temp_r27 = temp_r29->unk_48; + for (temp_r31 = 0; temp_r31 < temp_r29->unk_30; temp_r31++, temp_r27++) { + temp_r27->unk2C = 0; + } + temp_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(HsfanimStruct01), MEMORY_DEFAULT_NUM); + temp_r29->unk_1C = temp_r30; + temp_r30->unk00 = temp_r28; + temp_r30->unk02 = 0; + for (temp_r31 = 0; temp_r31 < 32; temp_r31++) { + // Ugly expression to match store without new type + *((s16 *)(((u8 *)temp_r30) + (temp_r31 * 2) + 4)) = 0; + } + return temp_r28; } void fn_1_DA6C(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - - HsfanimStruct01 *temp_r31; - ParticleData *temp_r29; - s32 temp_r28; - s32 temp_r27; - s16 temp_r26; - temp_r29 = particle->unk_1C; - switch(temp_r29->unk_02) { - case 0: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk00 = 0; - } - particle->unk_00 = 0; - temp_r29->unk_02++; - temp_r29->unk_04.y = 3; - temp_r29->unk_04.z = 25; - break; - - case 1: - for(temp_r28=0; temp_r28<100; temp_r28++) { - temp_r31 = particle->unk_48; - for(temp_r27=0; temp_r27unk_30; temp_r27++, temp_r31++) { - if(!temp_r31->unk00_s16) { - break; - } - } - if(temp_r27 == particle->unk_30) { - temp_r29->unk_02++; - break; - } - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_r26 = fn_1_11670()%360; - temp_r31->unk08.x = sind(temp_r26); - temp_r31->unk08.y = -6.0+(2.0*temp_r29->unk_10.x); - temp_r31->unk08.z = cosd(temp_r26); - temp_r31->unk14.x = ((fn_1_11670() & 0x7)+temp_r29->unk_04.z)-4.0f; - temp_r31->unk14.x *= 0.1f; - temp_f31 = temp_r29->unk_04.y+(0.01*(float)(fn_1_11670()%400)); - temp_f31 *= 0.1f; - temp_r31->unk34.x = temp_f31*temp_r31->unk08.x; - temp_r31->unk34.y = 0; - temp_r31->unk34.z = temp_f31*temp_r31->unk08.z; - temp_r31->unk2C = (0.01*(frand()%2000))+30.0; - temp_r31->unk2C *= 0.1f; - temp_r31->unk40.a = 255; - temp_r31->unk00_s16 = 30; - } - break; - } - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk00_s16 == 0) { - continue; - } - temp_f30 = temp_r31->unk14.x; - temp_r31->unk34.x += temp_r31->unk08.x*temp_f30; - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk34.z += temp_r31->unk08.z*temp_f30; - temp_r31->unk2C *= 1.025f; - temp_r31->unk40.a *= 0.95f; - temp_r31->unk40.a--; - temp_r31->unk14.x *= 0.8f; - temp_r31->unk08.y *= 0.85f; - temp_r31->unk08.y += 0.1f; - if(temp_r31->unk40.a < 2) { - temp_r31->unk40.a = 0; - temp_r31->unk00_s16 = 0; - particle->unk_00++; - } - } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - if(particle->unk_00 >= particle->unk_30 && temp_r29->unk_02 == 2) { - temp_r29->unk_02 = 0; - Hu3DModelAttrReset(temp_r29->unk_00, 0x20); - Hu3DModelKill(temp_r29->unk_00); - } + float temp_f31; + float temp_f30; + + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + temp_r29 = particle->unk_1C; + switch (temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 = 0; + } + particle->unk_00 = 0; + temp_r29->unk_02++; + temp_r29->unk_04.y = 3; + temp_r29->unk_04.z = 25; + break; + + case 1: + for (temp_r28 = 0; temp_r28 < 100; temp_r28++) { + temp_r31 = particle->unk_48; + for (temp_r27 = 0; temp_r27 < particle->unk_30; temp_r27++, temp_r31++) { + if (!temp_r31->unk00) { + break; + } + } + if (temp_r27 == particle->unk_30) { + temp_r29->unk_02++; + break; + } + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r26 = fn_1_11670() % 360; + temp_r31->unk08.x = sind(temp_r26); + temp_r31->unk08.y = -6.0 + (2.0 * temp_r29->unk_10.x); + temp_r31->unk08.z = cosd(temp_r26); + temp_r31->unk14.x = ((fn_1_11670() & 0x7) + temp_r29->unk_04.z) - 4.0f; + temp_r31->unk14.x *= 0.1f; + temp_f31 = temp_r29->unk_04.y + (0.01 * (float)(fn_1_11670() % 400)); + temp_f31 *= 0.1f; + temp_r31->unk34.x = temp_f31 * temp_r31->unk08.x; + temp_r31->unk34.y = 0; + temp_r31->unk34.z = temp_f31 * temp_r31->unk08.z; + temp_r31->unk2C = (0.01 * (frand() % 2000)) + 30.0; + temp_r31->unk2C *= 0.1f; + temp_r31->unk40.a = 255; + temp_r31->unk00 = 30; + } + break; + } + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk00 == 0) { + continue; + } + temp_f30 = temp_r31->unk14.x; + temp_r31->unk34.x += temp_r31->unk08.x * temp_f30; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z * temp_f30; + temp_r31->unk2C *= 1.025f; + temp_r31->unk40.a *= 0.95f; + temp_r31->unk40.a--; + temp_r31->unk14.x *= 0.8f; + temp_r31->unk08.y *= 0.85f; + temp_r31->unk08.y += 0.1f; + if (temp_r31->unk40.a < 2) { + temp_r31->unk40.a = 0; + temp_r31->unk00 = 0; + particle->unk_00++; + } + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + if (particle->unk_00 >= particle->unk_30 && temp_r29->unk_02 == 2) { + temp_r29->unk_02 = 0; + Hu3DModelAttrReset(temp_r29->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(temp_r29->unk_00); + } } void fn_1_DFD0(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r30; - s32 temp_r28; - s16 temp_r27; - s32 temp_r26; - temp_r30 = particle->unk_1C; - switch(temp_r30->unk_02) { - case 0: - temp_r31 = particle->unk_48; - temp_r30->unk_04.x = 10; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_r27 = fn_1_11670()%360; - temp_r31->unk08.x = sind(temp_r27); - temp_r31->unk08.y = 0; - temp_r31->unk08.z = cosd(temp_r27); - temp_f31 = temp_r30->unk_04.x+(temp_r30->unk_04.x*((1.0/65536.0)*(float)fn_1_11670())); - temp_r31->unk34.x = temp_f31*temp_r31->unk08.x; - temp_r31->unk34.y = -(100.0*((1.0/65536.0)*(float)fn_1_11670())); - temp_r31->unk34.z = temp_f31*temp_r31->unk08.z; - temp_r31->unk2C = (0.01*(frand()%2000))+40.0; - temp_r26 = frand()&0x2F; - temp_r31->unk40.r = temp_r26+208; - temp_r31->unk40.g = temp_r26+208; - temp_r31->unk40.a = (frand()&0x5F)+32; - } - temp_r30->unk_02++; - particle->unk_00 = 60; - break; - - case 1: - if(--particle->unk_00 == 0) { - Hu3DModelAttrReset(temp_r30->unk_00, 0x20); - Hu3DModelKill(temp_r30->unk_00); - return; - } - break; - } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r28; + s16 temp_r27; + s32 temp_r26; + temp_r30 = particle->unk_1C; + switch (temp_r30->unk_02) { + case 0: + temp_r31 = particle->unk_48; + temp_r30->unk_04.x = 10; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r27 = fn_1_11670() % 360; + temp_r31->unk08.x = sind(temp_r27); + temp_r31->unk08.y = 0; + temp_r31->unk08.z = cosd(temp_r27); + temp_f31 = temp_r30->unk_04.x + (temp_r30->unk_04.x * ((1.0 / 65536.0) * (float)fn_1_11670())); + temp_r31->unk34.x = temp_f31 * temp_r31->unk08.x; + temp_r31->unk34.y = -(100.0 * ((1.0 / 65536.0) * (float)fn_1_11670())); + temp_r31->unk34.z = temp_f31 * temp_r31->unk08.z; + temp_r31->unk2C = (0.01 * (frand() % 2000)) + 40.0; + temp_r26 = frand() & 0x2F; + temp_r31->unk40.r = temp_r26 + 208; + temp_r31->unk40.g = temp_r26 + 208; + temp_r31->unk40.a = (frand() & 0x5F) + 32; + } + temp_r30->unk_02++; + particle->unk_00 = 60; + break; + + case 1: + if (--particle->unk_00 == 0) { + Hu3DModelAttrReset(temp_r30->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(temp_r30->unk_00); + return; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_E310(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - - HsfanimStruct01 *temp_r31; - ParticleData *temp_r29; - s32 temp_r28; - s32 temp_r27; - s16 temp_r26; - temp_r29 = particle->unk_1C; - switch(temp_r29->unk_02) { - case 0: - temp_r31 = particle->unk_48; - temp_f30 = 360.0f/particle->unk_30; - - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk00_s16 = (s32)(360.0*((1.0/65536.0)*(float)fn_1_11670())); - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_r26 = (temp_f30*temp_r28)+(int)((temp_f30*0.5f)*((1.0/32768.0)*(float)(fn_1_11670()-32768))); - temp_r31->unk20 = temp_r26; - temp_r31->unk30 = (M_PI*(temp_r26+90.0f))/180.0; - temp_r31->unk08.x = sind(temp_r26); - temp_r31->unk08.y = 0; - temp_r31->unk08.z = cosd(temp_r26); - temp_f31 = temp_r29->unk_04.y+((0.25f*temp_r29->unk_04.y)*((1.0/65536.0)*(float)fn_1_11670())); - temp_r31->unk14.x = temp_f31*temp_r31->unk08.x; - temp_r31->unk14.y = 120.0*((1.0/32768.0)*(float)(fn_1_11670()-32768)); - temp_r31->unk14.z = temp_f31*temp_r31->unk08.z; - temp_r31->unk24 = temp_r31->unk2C = (0.01*(frand()%2000))+160; - if(particle->unk_2C == 1) { - temp_r27 = frand()&0x2F; - temp_r31->unk40.r = temp_r27+32; - temp_r31->unk40.g = temp_r27+32; - temp_r31->unk40.b = 64+temp_r27+((int)(((46-temp_r27)*((1.0/65536.0)*(float)fn_1_11670())))); - temp_r31->unk40.a = (frand()&0x2F)+32; - } else { - temp_r27 = frand()&0x2F; - temp_r31->unk40.r = temp_r27+208; - temp_r31->unk40.g = temp_r27+208; - temp_r31->unk40.a = (frand()&0x4F)+176; - } - } - temp_r29->unk_02++; - - case 1: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk00_s16 += 4; - if(temp_r31->unk00_s16 >= 360) { - temp_r31->unk00_s16 -= 360; - } - temp_r31->unk34.x = temp_r31->unk14.x; - temp_r31->unk34.y = temp_r31->unk14.y; - temp_r31->unk34.z = temp_r31->unk14.z; - temp_r31->unk30 = M_PI*(90+(temp_r31->unk20+temp_r29->unk_04.z))/180; - temp_r31->unk2C = temp_r31->unk24*((0.1f*sind(temp_r31->unk00_s16))+1.0); - } - break; - } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f31; + float temp_f30; + + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + temp_r29 = particle->unk_1C; + switch (temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + temp_f30 = 360.0f / particle->unk_30; + + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 = (s32)(360.0 * ((1.0 / 65536.0) * (float)fn_1_11670())); + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r26 = (temp_f30 * temp_r28) + (int)((temp_f30 * 0.5f) * ((1.0 / 32768.0) * (float)(fn_1_11670() - 32768))); + temp_r31->unk20 = temp_r26; + temp_r31->unk30 = (M_PI * (temp_r26 + 90.0f)) / 180.0; + temp_r31->unk08.x = sind(temp_r26); + temp_r31->unk08.y = 0; + temp_r31->unk08.z = cosd(temp_r26); + temp_f31 = temp_r29->unk_04.y + ((0.25f * temp_r29->unk_04.y) * ((1.0 / 65536.0) * (float)fn_1_11670())); + temp_r31->unk14.x = temp_f31 * temp_r31->unk08.x; + temp_r31->unk14.y = 120.0 * ((1.0 / 32768.0) * (float)(fn_1_11670() - 32768)); + temp_r31->unk14.z = temp_f31 * temp_r31->unk08.z; + temp_r31->unk24 = temp_r31->unk2C = (0.01 * (frand() % 2000)) + 160; + if (particle->unk_2C == 1) { + temp_r27 = frand() & 0x2F; + temp_r31->unk40.r = temp_r27 + 32; + temp_r31->unk40.g = temp_r27 + 32; + temp_r31->unk40.b = 64 + temp_r27 + ((int)(((46 - temp_r27) * ((1.0 / 65536.0) * (float)fn_1_11670())))); + temp_r31->unk40.a = (frand() & 0x2F) + 32; + } + else { + temp_r27 = frand() & 0x2F; + temp_r31->unk40.r = temp_r27 + 208; + temp_r31->unk40.g = temp_r27 + 208; + temp_r31->unk40.a = (frand() & 0x4F) + 176; + } + } + temp_r29->unk_02++; + + case 1: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 += 4; + if (temp_r31->unk00 >= 360) { + temp_r31->unk00 -= 360; + } + temp_r31->unk34.x = temp_r31->unk14.x; + temp_r31->unk34.y = temp_r31->unk14.y; + temp_r31->unk34.z = temp_r31->unk14.z; + temp_r31->unk30 = M_PI * (90 + (temp_r31->unk20 + temp_r29->unk_04.z)) / 180; + temp_r31->unk2C = temp_r31->unk24 * ((0.1f * sind(temp_r31->unk00)) + 1.0); + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_E9B4(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f30; - float temp_f31; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r30; - s32 temp_r28; - s16 temp_r27; - s32 temp_r26; - temp_r30 = particle->unk_1C; - switch(temp_r30->unk_02) { - case 0: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk00_s16 = fn_1_11670()%360; - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_r27 = fn_1_11670()%360; - temp_r31->unk20 = temp_r27; - temp_r31->unk08.x = sind(temp_r27); - temp_r31->unk08.y = 0; - temp_r31->unk08.z = cosd(temp_r27); - temp_f31 = temp_r30->unk_04.x+(0.01*((30.0f*temp_r30->unk_04.x)*((1.0/65536.0)*(float)fn_1_11670()))); - temp_f30 = (0.15f+(0.3f*((1.0/65536.0)*(float)fn_1_11670()))); - temp_r31->unk14.x = temp_f31*temp_r31->unk08.x; - temp_r31->unk14.y = 50*((1.0/32768.0)*(float)(fn_1_11670()-32768)); - temp_r31->unk14.z = temp_f31*temp_r31->unk08.z*temp_f30; - temp_r31->unk24 = temp_r31->unk2C = temp_r30->unk_04.x+(0.01*((50.0f*temp_r30->unk_04.x)*((1.0/65536.0)*(float)fn_1_11670()))); - temp_r26 = frand()&0x7F; - temp_r31->unk40.r = temp_r26+64; - temp_r31->unk40.g = temp_r26+64; - temp_f31 -= temp_r30->unk_04.x; - temp_r31->unk40.a = 32+(int)((48.0f*temp_f31)/(0.2f*temp_r30->unk_04.x))+(int)(32*((1.0/65536.0)*(float)fn_1_11670())); - } - temp_r30->unk_02++; - - case 1: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk00_s16 += 2; - if(temp_r31->unk00_s16 >= 360) { - temp_r31->unk00_s16 -= 360; - } - temp_r31->unk34.x = temp_r31->unk14.x; - temp_r31->unk34.y = temp_r31->unk14.y; - temp_r31->unk34.z = temp_r31->unk14.z; - temp_r31->unk2C = temp_r31->unk24*((0.1f*sind(temp_r31->unk00_s16))+1.0); - } - break; - } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f30; + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r28; + s16 temp_r27; + s32 temp_r26; + temp_r30 = particle->unk_1C; + switch (temp_r30->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 = fn_1_11670() % 360; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r27 = fn_1_11670() % 360; + temp_r31->unk20 = temp_r27; + temp_r31->unk08.x = sind(temp_r27); + temp_r31->unk08.y = 0; + temp_r31->unk08.z = cosd(temp_r27); + temp_f31 = temp_r30->unk_04.x + (0.01 * ((30.0f * temp_r30->unk_04.x) * ((1.0 / 65536.0) * (float)fn_1_11670()))); + temp_f30 = (0.15f + (0.3f * ((1.0 / 65536.0) * (float)fn_1_11670()))); + temp_r31->unk14.x = temp_f31 * temp_r31->unk08.x; + temp_r31->unk14.y = 50 * ((1.0 / 32768.0) * (float)(fn_1_11670() - 32768)); + temp_r31->unk14.z = temp_f31 * temp_r31->unk08.z * temp_f30; + temp_r31->unk24 = temp_r31->unk2C + = temp_r30->unk_04.x + (0.01 * ((50.0f * temp_r30->unk_04.x) * ((1.0 / 65536.0) * (float)fn_1_11670()))); + temp_r26 = frand() & 0x7F; + temp_r31->unk40.r = temp_r26 + 64; + temp_r31->unk40.g = temp_r26 + 64; + temp_f31 -= temp_r30->unk_04.x; + temp_r31->unk40.a + = 32 + (int)((48.0f * temp_f31) / (0.2f * temp_r30->unk_04.x)) + (int)(32 * ((1.0 / 65536.0) * (float)fn_1_11670())); + } + temp_r30->unk_02++; + + case 1: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 += 2; + if (temp_r31->unk00 >= 360) { + temp_r31->unk00 -= 360; + } + temp_r31->unk34.x = temp_r31->unk14.x; + temp_r31->unk34.y = temp_r31->unk14.y; + temp_r31->unk34.z = temp_r31->unk14.z; + temp_r31->unk2C = temp_r31->unk24 * ((0.1f * sind(temp_r31->unk00)) + 1.0); + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_EEF8(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r29; - s32 temp_r28; - u8 temp_r27; - temp_r29 = particle->unk_1C; - switch(temp_r29->unk_02) { - case 0: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 255; - temp_r31->unk2C = temp_r29->unk_04.x; - } - temp_r29->unk_02++; - break; - - case 1: - if(temp_r29->unk_04.y < 0.0f) { - break; - } - temp_f31 = 0.1f+temp_r29->unk_04.y; - temp_f31 = 1.2f*(temp_f31*temp_f31); - if(temp_f31 > 1.0f) { - temp_f31 = 1.0f; - } - temp_r27 = 255*temp_f31; - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk40.a = temp_r27; - } - break; - } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + u8 temp_r27; + temp_r29 = particle->unk_1C; + switch (temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 255; + temp_r31->unk2C = temp_r29->unk_04.x; + } + temp_r29->unk_02++; + break; + + case 1: + if (temp_r29->unk_04.y < 0.0f) { + break; + } + temp_f31 = 0.1f + temp_r29->unk_04.y; + temp_f31 = 1.2f * (temp_f31 * temp_f31); + if (temp_f31 > 1.0f) { + temp_f31 = 1.0f; + } + temp_r27 = 255 * temp_f31; + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk40.a = temp_r27; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_F06C(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - HsfanimStruct01 *temp_r31; - ParticleData *temp_r29; - s32 temp_r28; - s16 temp_r27; - temp_r27 = 0; - temp_r29 = particle->unk_1C; - switch(temp_r29->unk_02) { - case 0: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - temp_r31->unk00_s16 = temp_r31->unk02 = 0; - } - temp_r29->unk_02++; - break; - - case 1: - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { - if(temp_r31->unk00_s16) { - temp_r31->unk00_s16--; - continue; - } - if(temp_r31->unk02 == 0) { - temp_f31 = 360.0f*((1.0/65536.0)*(float)fn_1_11670()); - temp_r31->unk34.x = 10.0*(50.0+(250.0*((1.0/65536.0)*(float)fn_1_11670())))*sind(temp_f31); - temp_r31->unk34.y = 0; - temp_r31->unk34.z = 10.0*(50.0+(250.0*((1.0/65536.0)*(float)fn_1_11670())))*cosd(temp_f31); - temp_r31->unk30 = (M_PI*(temp_f31-90.0f))/180; - temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 192; - temp_r31->unk40.b = 160; - temp_r31->unk2C = 0; - temp_r31->unk00_s16 = (s32)(90.0*((1.0/65536.0)*(float)fn_1_11670())); - temp_r31->unk02 = 60; - } - temp_r31->unk40.a = 248*sind(temp_r31->unk02*3); - temp_r31->unk2C = temp_r29->unk_04.x*(60-temp_r31->unk02); - temp_r31->unk02--; - } - if(particle->unk_30 == temp_r27) { - Hu3DModelAttrReset(temp_r29->unk_00, 0x20); - Hu3DModelKill(temp_r29->unk_00); - return; - } - break; - } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + s16 temp_r27; + temp_r27 = 0; + temp_r29 = particle->unk_1C; + switch (temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 = temp_r31->unk02 = 0; + } + temp_r29->unk_02++; + break; + + case 1: + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r28++, temp_r31++) { + if (temp_r31->unk00) { + temp_r31->unk00--; + continue; + } + if (temp_r31->unk02 == 0) { + temp_f31 = 360.0f * ((1.0 / 65536.0) * (float)fn_1_11670()); + temp_r31->unk34.x = 10.0 * (50.0 + (250.0 * ((1.0 / 65536.0) * (float)fn_1_11670()))) * sind(temp_f31); + temp_r31->unk34.y = 0; + temp_r31->unk34.z = 10.0 * (50.0 + (250.0 * ((1.0 / 65536.0) * (float)fn_1_11670()))) * cosd(temp_f31); + temp_r31->unk30 = (M_PI * (temp_f31 - 90.0f)) / 180; + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 192; + temp_r31->unk40.b = 160; + temp_r31->unk2C = 0; + temp_r31->unk00 = (s32)(90.0 * ((1.0 / 65536.0) * (float)fn_1_11670())); + temp_r31->unk02 = 60; + } + temp_r31->unk40.a = 248 * sind(temp_r31->unk02 * 3); + temp_r31->unk2C = temp_r29->unk_04.x * (60 - temp_r31->unk02); + temp_r31->unk02--; + } + if (particle->unk_30 == temp_r27) { + Hu3DModelAttrReset(temp_r29->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(temp_r29->unk_00); + return; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } WorkF4B0 *fn_1_F4B0(s16 arg0, s16 arg1) { - WorkF4B0 *temp_r31; - s32 temp_r30; - ModelData *temp_r29; - temp_r29 = &Hu3DData[arg0]; - temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkF4B0), MEMORY_DEFAULT_NUM); - temp_r29->unk_120 = temp_r31; - temp_r31->unk0 = arg0; - temp_r31->unk2 = arg1; - temp_r31->unk4 = NULL; - temp_r31->unk8 = NULL; - for(temp_r30=0; temp_r30<32; temp_r30++) { - temp_r31->unk10[temp_r30] = 0; - } - return temp_r31; + WorkF4B0 *temp_r31; + s32 temp_r30; + ModelData *temp_r29; + temp_r29 = &Hu3DData[arg0]; + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkF4B0), MEMORY_DEFAULT_NUM); + temp_r29->unk_120 = temp_r31; + temp_r31->unk0 = arg0; + temp_r31->unk2 = arg1; + temp_r31->unk4 = NULL; + temp_r31->unk8 = NULL; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++) { + temp_r31->unk10[temp_r30] = 0; + } + return temp_r31; } void fn_1_F564(s16 arg0) { - float temp_f31; - WorkF4B0 *temp_r31; - s32 temp_r30; - HsfObject *temp_r29; - s32 temp_r28; - ModelData *temp_r27; - temp_r27 = &Hu3DData[arg0]; - temp_r29 = temp_r27->hsfData->root; - temp_r31 = temp_r27->unk_120; - if(temp_r31->unk8 == NULL) { - temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count*sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); - temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count, MEMORY_DEFAULT_NUM); - for(temp_r30=0; temp_r30data.st->count; temp_r30++) { - temp_r31->unk8[temp_r30].x = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x; - temp_r31->unk8[temp_r30].y = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y; - } - } - temp_r31->unk10_f[0] += 2.0f; - for(temp_r30=0; temp_r30data.st->count; temp_r30++) { - temp_r31->unkC[temp_r30] = 0; - } - for(temp_r30=0; temp_r30data.st->count; temp_r30++) { - if(temp_r31->unkC[temp_r30]) { - continue; - } - temp_r31->unkC[temp_r30]++; - temp_f31 = temp_r31->unk10_f[0]+(60.0f*temp_r30); - ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x = temp_r31->unk8[temp_r30].x+(0.005f*sind(temp_f31)); - ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y = temp_r31->unk8[temp_r30].y+(0.005f*cosd(temp_f31)); - for(temp_r28=temp_r30; temp_r28data.st->count; temp_r28++) { - if(temp_r31->unkC[temp_r28]) { - continue; - } - if(temp_r31->unk8[temp_r30].x != temp_r31->unk8[temp_r28].x || temp_r31->unk8[temp_r30].y != temp_r31->unk8[temp_r28].y) { - continue; - } - temp_r31->unkC[temp_r28]++; - ((HsfVector2f *)(temp_r29->data.st->data))[temp_r28].x = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x; - ((HsfVector2f *)(temp_r29->data.st->data))[temp_r28].y = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y; - } - } + float temp_f31; + WorkF4B0 *temp_r31; + s32 temp_r30; + HsfObject *temp_r29; + s32 temp_r28; + ModelData *temp_r27; + temp_r27 = &Hu3DData[arg0]; + temp_r29 = temp_r27->hsfData->root; + temp_r31 = temp_r27->unk_120; + if (temp_r31->unk8 == NULL) { + temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count * sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); + temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count, MEMORY_DEFAULT_NUM); + for (temp_r30 = 0; temp_r30 < temp_r29->data.st->count; temp_r30++) { + temp_r31->unk8[temp_r30].x = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x; + temp_r31->unk8[temp_r30].y = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y; + } + } + temp_r31->unk10_f[0] += 2.0f; + for (temp_r30 = 0; temp_r30 < temp_r29->data.st->count; temp_r30++) { + temp_r31->unkC[temp_r30] = 0; + } + for (temp_r30 = 0; temp_r30 < temp_r29->data.st->count; temp_r30++) { + if (temp_r31->unkC[temp_r30]) { + continue; + } + temp_r31->unkC[temp_r30]++; + temp_f31 = temp_r31->unk10_f[0] + (60.0f * temp_r30); + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x = temp_r31->unk8[temp_r30].x + (0.005f * sind(temp_f31)); + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y = temp_r31->unk8[temp_r30].y + (0.005f * cosd(temp_f31)); + for (temp_r28 = temp_r30; temp_r28 < temp_r29->data.st->count; temp_r28++) { + if (temp_r31->unkC[temp_r28]) { + continue; + } + if (temp_r31->unk8[temp_r30].x != temp_r31->unk8[temp_r28].x || temp_r31->unk8[temp_r30].y != temp_r31->unk8[temp_r28].y) { + continue; + } + temp_r31->unkC[temp_r28]++; + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r28].x = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x; + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r28].y = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y; + } + } } typedef struct unk_fn_10484 { - ModelData *unk0; - HsfObject *unk4; - s32 unk8; - Mtx unkC; - float unk3C[2]; - + ModelData *unk0; + HsfObject *unk4; + s32 unk8; + Mtx unkC; + float unk3C[2]; + } UnkFn10484; void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg3); void fn_1_F8A0(ModelData *arg0, Mtx arg1) { - WorkF4B0 *temp_r31; - GXColor *temp_r30; - s16 temp_r29; - s32 temp_r28; - HsfBuffer *temp_r27; - HsfFace *temp_r26; - - UnkFn10484 spA0; - Mtx sp70; - Mtx sp40; - Mtx sp10; - s16 spC = 0; - temp_r31 = arg0->unk_120; - spA0.unk0 = &Hu3DData[temp_r31->unk2]; - spA0.unk4 = spA0.unk0->hsfData->root; - MTXCopy(arg1, spA0.unkC); - lbl_1_bss_128[0] = spA0.unk4->constData; - lbl_1_bss_120[0] = lbl_1_bss_128[0]->dlBuf; - lbl_1_bss_11C = lbl_1_bss_128[0]->drawData; - GXLoadPosMtxImm(spA0.unkC, GX_PNMTX0); - MTXInverse(spA0.unkC, sp70); - MTXTranspose(sp70, sp40); - GXLoadNrmMtxImm(sp40, GX_PNMTX0); - if(Hu3DShadowF && (lbl_1_bss_128[0]->flags & 0x8)) { - MTXConcat(sp10, spA0.unkC, sp40); - MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp70); - MTXConcat(sp70, sp40, sp40); - GXLoadTexMtxImm(sp40, GX_TEXMTX9, GX_MTX3x4); - } - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - if(temp_r31->unk4 == NULL) { - temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, spA0.unk4->data.color->count*sizeof(GXColor), MEMORY_DEFAULT_NUM); - for(temp_r29=0; temp_r29data.color->count; temp_r29++) { - temp_r30 = &temp_r31->unk4[temp_r29]; - temp_r30->r = temp_r31->unk10[0]; - temp_r30->g = temp_r31->unk10[1]; - temp_r30->b = temp_r31->unk10[2]; - if(((GXColor *)(spA0.unk4->data.color->data))[temp_r29].a == 255) { - temp_r30->a = temp_r31->unk10[3]; - } else { - temp_r30->a = ((GXColor *)(spA0.unk4->data.color->data))[temp_r29].a; - } - } - } - temp_r27 = spA0.unk4->data.face; - temp_r26 = temp_r27->data; - temp_r28 = 0; - for(temp_r29=0; temp_r29count;) { - fn_1_10484(&spA0, temp_r26, &lbl_1_bss_11C[temp_r28], temp_r31->unk4); - temp_r28++; - temp_r29 += lbl_1_bss_11C[temp_r28-1].polyCnt; - temp_r26 += lbl_1_bss_11C[temp_r28-1].polyCnt; - } + WorkF4B0 *temp_r31; + GXColor *temp_r30; + s16 temp_r29; + s32 temp_r28; + HsfBuffer *temp_r27; + HsfFace *temp_r26; + + UnkFn10484 spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + s16 spC = 0; + temp_r31 = arg0->unk_120; + spA0.unk0 = &Hu3DData[temp_r31->unk2]; + spA0.unk4 = spA0.unk0->hsfData->root; + MTXCopy(arg1, spA0.unkC); + lbl_1_bss_128[0] = spA0.unk4->constData; + lbl_1_bss_120[0] = lbl_1_bss_128[0]->dlBuf; + lbl_1_bss_11C = lbl_1_bss_128[0]->drawData; + GXLoadPosMtxImm(spA0.unkC, GX_PNMTX0); + MTXInverse(spA0.unkC, sp70); + MTXTranspose(sp70, sp40); + GXLoadNrmMtxImm(sp40, GX_PNMTX0); + if (Hu3DShadowF && (lbl_1_bss_128[0]->flags & 0x8)) { + MTXConcat(sp10, spA0.unkC, sp40); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp70); + MTXConcat(sp70, sp40, sp40); + GXLoadTexMtxImm(sp40, GX_TEXMTX9, GX_MTX3x4); + } + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + if (temp_r31->unk4 == NULL) { + temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, spA0.unk4->data.color->count * sizeof(GXColor), MEMORY_DEFAULT_NUM); + for (temp_r29 = 0; temp_r29 < spA0.unk4->data.color->count; temp_r29++) { + temp_r30 = &temp_r31->unk4[temp_r29]; + temp_r30->r = temp_r31->unk10[0]; + temp_r30->g = temp_r31->unk10[1]; + temp_r30->b = temp_r31->unk10[2]; + if (((GXColor *)(spA0.unk4->data.color->data))[temp_r29].a == 255) { + temp_r30->a = temp_r31->unk10[3]; + } + else { + temp_r30->a = ((GXColor *)(spA0.unk4->data.color->data))[temp_r29].a; + } + } + } + temp_r27 = spA0.unk4->data.face; + temp_r26 = temp_r27->data; + temp_r28 = 0; + for (temp_r29 = 0; temp_r29 < temp_r27->count;) { + fn_1_10484(&spA0, temp_r26, &lbl_1_bss_11C[temp_r28], temp_r31->unk4); + temp_r28++; + temp_r29 += lbl_1_bss_11C[temp_r28 - 1].polyCnt; + temp_r26 += lbl_1_bss_11C[temp_r28 - 1].polyCnt; + } } void fn_1_FB98(ModelData *arg0, Mtx arg1) { - WorkF4B0 *temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - GXColor *temp_r27; - s32 temp_r26; - HsfBuffer *temp_r25; - HsfFace *temp_r24; - s32 temp_r23; - void *temp_r22; - - UnkFn10484 sp120; - Mtx spF0; - Mtx spC0; - Mtx sp90; - float sp50[2][8]; - float sp10[2][8]; - s16 spC = 0; - temp_r31 = arg0->unk_120; - sp120.unk0 = &Hu3DData[temp_r31->unk2]; - sp120.unk4 = sp120.unk0->hsfData->root; - MTXCopy(arg1, sp120.unkC); - lbl_1_bss_128[0] = sp120.unk4->constData; - lbl_1_bss_120[0] = lbl_1_bss_128[0]->dlBuf; - lbl_1_bss_11C = lbl_1_bss_128[0]->drawData; - GXLoadPosMtxImm(sp120.unkC, GX_PNMTX0); - MTXInverse(sp120.unkC, spF0); - MTXTranspose(spF0, spC0); - GXLoadNrmMtxImm(spC0, GX_PNMTX0); - if(Hu3DShadowF && (lbl_1_bss_128[0]->flags & 0x8)) { - MTXConcat(sp90, sp120.unkC, spC0); - MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, spF0); - MTXConcat(spF0, spC0, spC0); - GXLoadTexMtxImm(spC0, GX_TEXMTX9, GX_MTX3x4); - } - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - if(temp_r31->unk4 == NULL) { - temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.color->count*sizeof(GXColor), MEMORY_DEFAULT_NUM); - for(temp_r30=0; temp_r30data.color->count; temp_r30++) { - temp_r27 = &temp_r31->unk4[temp_r30]; - temp_r27->r = temp_r31->unk10[0]; - temp_r27->g = temp_r31->unk10[1]; - temp_r27->b = temp_r31->unk10[2]; - temp_r27->a = temp_r31->unk10[3]; - } - } - if(temp_r31->unk8 == NULL) { - temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.st->count*sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); - temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.st->count, MEMORY_DEFAULT_NUM); - for(temp_r30=0; temp_r30data.st->count; temp_r30++) { - temp_r31->unk8[temp_r30].x = ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x; - temp_r31->unk8[temp_r30].y = ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y; - } - } - temp_r31->unk10_f[15] += 0.5f; - for(temp_r30=0; temp_r30<8; temp_r30++) { - float temp_f31 = temp_r31->unk10_f[15]+(40.0f*temp_r30); - sp50[0][temp_r30] = sind(temp_f31); - sp10[0][temp_r30] = cosd(temp_f31); - } - for(temp_r30=0; temp_r30data.st->count; temp_r30++) { - temp_r31->unkC[temp_r30] = 0; - } - for(temp_r30=0, temp_r29=0; temp_r30data.st->count; temp_r30++, temp_r29++) { - if(temp_r31->unkC[temp_r30]) { - continue; - } - temp_r31->unkC[temp_r30]++; - if(temp_r31->unk10[4]) { - temp_r31->unk8[temp_r30].x = (1.5f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x)+(0.04f*sp50[0][temp_r29 & 0x7]); - temp_r31->unk8[temp_r30].y = (2.0f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y)+(0.04f*sp10[0][temp_r29 & 0x7]); - } else { - temp_r31->unk8[temp_r30].x = (1.25f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x)+(0.04f*sp50[0][temp_r29 & 0x7]); - temp_r31->unk8[temp_r30].y = (1.75f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y)+(0.04f*sp10[0][temp_r29 & 0x7]); - } - temp_r23 = temp_r31->unk10[3]+((0.8f*temp_r31->unk10[3])*sind((3.0f*temp_r31->unk10_f[15])+(120.0f*temp_r29))); - temp_r31->unk4[temp_r30].a = temp_r23; - for(temp_r28=temp_r30; temp_r28data.st->count; temp_r28++) { - temp_r29++; - if(temp_r31->unkC[temp_r28]) { - continue; - } - if(((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x != ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r28].x - || ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y != ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r28].y) { - continue; - } - temp_r31->unkC[temp_r28]++; - temp_r31->unk8[temp_r28].x = temp_r31->unk8[temp_r30].x; - temp_r31->unk8[temp_r28].y = temp_r31->unk8[temp_r30].y; - temp_r31->unk4[temp_r28].a = temp_r23; - temp_r29--; - } - } - temp_r22 = sp120.unk4->data.st->data; - sp120.unk4->data.st->data = temp_r31->unk8; - temp_r25 = sp120.unk4->data.face; - temp_r24 = temp_r25->data; - temp_r26 = 0; - for(temp_r30=0; temp_r30count;) { - fn_1_10484(&sp120, temp_r24, &lbl_1_bss_11C[temp_r26], temp_r31->unk4); - temp_r26++; - temp_r30 += lbl_1_bss_11C[temp_r26-1].polyCnt; - temp_r24 += lbl_1_bss_11C[temp_r26-1].polyCnt; - } - sp120.unk4->data.st->data = temp_r22; + WorkF4B0 *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + GXColor *temp_r27; + s32 temp_r26; + HsfBuffer *temp_r25; + HsfFace *temp_r24; + s32 temp_r23; + void *temp_r22; + + UnkFn10484 sp120; + Mtx spF0; + Mtx spC0; + Mtx sp90; + float sp50[2][8]; + float sp10[2][8]; + s16 spC = 0; + temp_r31 = arg0->unk_120; + sp120.unk0 = &Hu3DData[temp_r31->unk2]; + sp120.unk4 = sp120.unk0->hsfData->root; + MTXCopy(arg1, sp120.unkC); + lbl_1_bss_128[0] = sp120.unk4->constData; + lbl_1_bss_120[0] = lbl_1_bss_128[0]->dlBuf; + lbl_1_bss_11C = lbl_1_bss_128[0]->drawData; + GXLoadPosMtxImm(sp120.unkC, GX_PNMTX0); + MTXInverse(sp120.unkC, spF0); + MTXTranspose(spF0, spC0); + GXLoadNrmMtxImm(spC0, GX_PNMTX0); + if (Hu3DShadowF && (lbl_1_bss_128[0]->flags & 0x8)) { + MTXConcat(sp90, sp120.unkC, spC0); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, spF0); + MTXConcat(spF0, spC0, spC0); + GXLoadTexMtxImm(spC0, GX_TEXMTX9, GX_MTX3x4); + } + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + if (temp_r31->unk4 == NULL) { + temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.color->count * sizeof(GXColor), MEMORY_DEFAULT_NUM); + for (temp_r30 = 0; temp_r30 < sp120.unk4->data.color->count; temp_r30++) { + temp_r27 = &temp_r31->unk4[temp_r30]; + temp_r27->r = temp_r31->unk10[0]; + temp_r27->g = temp_r31->unk10[1]; + temp_r27->b = temp_r31->unk10[2]; + temp_r27->a = temp_r31->unk10[3]; + } + } + if (temp_r31->unk8 == NULL) { + temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.st->count * sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); + temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.st->count, MEMORY_DEFAULT_NUM); + for (temp_r30 = 0; temp_r30 < sp120.unk4->data.st->count; temp_r30++) { + temp_r31->unk8[temp_r30].x = ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x; + temp_r31->unk8[temp_r30].y = ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y; + } + } + temp_r31->unk10_f[15] += 0.5f; + for (temp_r30 = 0; temp_r30 < 8; temp_r30++) { + float temp_f31 = temp_r31->unk10_f[15] + (40.0f * temp_r30); + sp50[0][temp_r30] = sind(temp_f31); + sp10[0][temp_r30] = cosd(temp_f31); + } + for (temp_r30 = 0; temp_r30 < sp120.unk4->data.st->count; temp_r30++) { + temp_r31->unkC[temp_r30] = 0; + } + for (temp_r30 = 0, temp_r29 = 0; temp_r30 < sp120.unk4->data.st->count; temp_r30++, temp_r29++) { + if (temp_r31->unkC[temp_r30]) { + continue; + } + temp_r31->unkC[temp_r30]++; + if (temp_r31->unk10[4]) { + temp_r31->unk8[temp_r30].x = (1.5f * ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x) + (0.04f * sp50[0][temp_r29 & 0x7]); + temp_r31->unk8[temp_r30].y = (2.0f * ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y) + (0.04f * sp10[0][temp_r29 & 0x7]); + } + else { + temp_r31->unk8[temp_r30].x = (1.25f * ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x) + (0.04f * sp50[0][temp_r29 & 0x7]); + temp_r31->unk8[temp_r30].y = (1.75f * ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y) + (0.04f * sp10[0][temp_r29 & 0x7]); + } + temp_r23 = temp_r31->unk10[3] + ((0.8f * temp_r31->unk10[3]) * sind((3.0f * temp_r31->unk10_f[15]) + (120.0f * temp_r29))); + temp_r31->unk4[temp_r30].a = temp_r23; + for (temp_r28 = temp_r30; temp_r28 < sp120.unk4->data.st->count; temp_r28++) { + temp_r29++; + if (temp_r31->unkC[temp_r28]) { + continue; + } + if (((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x != ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r28].x + || ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y != ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r28].y) { + continue; + } + temp_r31->unkC[temp_r28]++; + temp_r31->unk8[temp_r28].x = temp_r31->unk8[temp_r30].x; + temp_r31->unk8[temp_r28].y = temp_r31->unk8[temp_r30].y; + temp_r31->unk4[temp_r28].a = temp_r23; + temp_r29--; + } + } + temp_r22 = sp120.unk4->data.st->data; + sp120.unk4->data.st->data = temp_r31->unk8; + temp_r25 = sp120.unk4->data.face; + temp_r24 = temp_r25->data; + temp_r26 = 0; + for (temp_r30 = 0; temp_r30 < temp_r25->count;) { + fn_1_10484(&sp120, temp_r24, &lbl_1_bss_11C[temp_r26], temp_r31->unk4); + temp_r26++; + temp_r30 += lbl_1_bss_11C[temp_r26 - 1].polyCnt; + temp_r24 += lbl_1_bss_11C[temp_r26 - 1].polyCnt; + } + sp120.unk4->data.st->data = temp_r22; } void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3); -void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial*arg1); +void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial *arg1); void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg3) { - HsfMaterial *temp_r31; - HsfObject *temp_r30; - HsfAttribute *temp_r29; - s16 temp_r27; - s16 temp_r25; - HsfdrawStruct01 *temp_r24; - ModelData *temp_r23; - Hu3DTexAnimDataStruct *temp_r22; - void *temp_r20; - GXColor sp14; - temp_r30 = arg0->unk4; - temp_r23 = arg0->unk0; - temp_r31 = &temp_r30->data.material[arg1->mat & 0xFFF]; - sp14.r = temp_r31->litColor[0]; - sp14.g = temp_r31->litColor[1]; - sp14.b = temp_r31->litColor[2]; - sp14.a = 255; - GXSetChanAmbColor(GX_COLOR0A0, sp14); - sp14.r = temp_r31->color[0]; - sp14.g = temp_r31->color[1]; - sp14.b = temp_r31->color[2]; - sp14.a = 255; - GXSetChanMatColor(GX_COLOR0A0, sp14); - if((temp_r31->invAlpha != 0 || temp_r31->pass == 1) && !(temp_r23->attr & 0x2)) { - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); - } else { - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } - if(temp_r31->numAttrs == 0) { - return; - } - temp_r25 = (temp_r30->data.color) ? 5 : 1; - if(arg2->flags & 0x2) { - temp_r25 |= 0x2; - } - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->data.vertex->data, sizeof(HsfVector3f)); - if(temp_r25 & 0x2) { - GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); - } else { - GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSetArray(GX_VA_NRM, temp_r30->data.normal->data, sizeof(HsfVector3f)); - } - GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r30->data.st->data, sizeof(HsfVector2f)); - if(temp_r25 & 0x4) { - GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, arg3, sizeof(GXColor)); - } - GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); - GXSetZCompLoc(GX_FALSE); - for(temp_r27=0; temp_r27numAttrs; temp_r27++) { - temp_r29 = &temp_r30->data.attribute[temp_r31->attrs[temp_r27]]; - if(temp_r29->unk04) { - temp_r24 = temp_r29->unk04; - temp_r22 = &Hu3DTexAnimData[temp_r24->unk02]; - if((temp_r24->unk00 & 0x1) && !(temp_r22->unk00 & 0x4)) { - if(Hu3DAnimSet(arg0->unk0, temp_r29, (s16)temp_r27)) { - continue; - } - } - } - fn_1_10830(arg0->unk0, temp_r29->bitmap, temp_r29, (s16)temp_r27); - } - fn_1_10B60(arg0, temp_r31); - temp_r20 = (void *)(arg2->dlOfs+((u32)lbl_1_bss_120[0])); - GXCallDisplayList(temp_r20, arg2->dlSize); + HsfMaterial *temp_r31; + HsfObject *temp_r30; + HsfAttribute *temp_r29; + s16 temp_r27; + s16 temp_r25; + HsfdrawStruct01 *temp_r24; + ModelData *temp_r23; + Hu3DTexAnimDataStruct *temp_r22; + void *temp_r20; + GXColor sp14; + temp_r30 = arg0->unk4; + temp_r23 = arg0->unk0; + temp_r31 = &temp_r30->data.material[arg1->mat & 0xFFF]; + sp14.r = temp_r31->litColor[0]; + sp14.g = temp_r31->litColor[1]; + sp14.b = temp_r31->litColor[2]; + sp14.a = 255; + GXSetChanAmbColor(GX_COLOR0A0, sp14); + sp14.r = temp_r31->color[0]; + sp14.g = temp_r31->color[1]; + sp14.b = temp_r31->color[2]; + sp14.a = 255; + GXSetChanMatColor(GX_COLOR0A0, sp14); + if ((temp_r31->invAlpha != 0 || temp_r31->pass == 1) && !(temp_r23->attr & 0x2)) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + if (temp_r31->numAttrs == 0) { + return; + } + temp_r25 = (temp_r30->data.color) ? 5 : 1; + if (arg2->flags & 0x2) { + temp_r25 |= 0x2; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r30->data.vertex->data, sizeof(HsfVector3f)); + if (temp_r25 & 0x2) { + GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); + } + else { + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r30->data.normal->data, sizeof(HsfVector3f)); + } + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r30->data.st->data, sizeof(HsfVector2f)); + if (temp_r25 & 0x4) { + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, arg3, sizeof(GXColor)); + } + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + for (temp_r27 = 0; temp_r27 < temp_r31->numAttrs; temp_r27++) { + temp_r29 = &temp_r30->data.attribute[temp_r31->attrs[temp_r27]]; + if (temp_r29->unk04) { + temp_r24 = temp_r29->unk04; + temp_r22 = &Hu3DTexAnimData[temp_r24->unk02]; + if ((temp_r24->unk00 & 0x1) && !(temp_r22->unk00 & 0x4)) { + if (Hu3DAnimSet(arg0->unk0, temp_r29, (s16)temp_r27)) { + continue; + } + } + } + fn_1_10830(arg0->unk0, temp_r29->bitmap, temp_r29, (s16)temp_r27); + } + fn_1_10B60(arg0, temp_r31); + temp_r20 = (void *)(arg2->dlOfs + ((u32)lbl_1_bss_120[0])); + GXCallDisplayList(temp_r20, arg2->dlSize); } void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) { - GXTexObj sp1C; - GXTlutObj sp10; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - temp_r29 = arg1->sizeX; - temp_r28 = arg1->sizeY; - temp_r27 = (arg2->wrap_s == 1) ? 1 : 0; - temp_r26 = (arg2->wrap_t == 1) ? 1 : 0; - switch(arg1->dataFmt) { - case 6: - GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGBA8, temp_r27, temp_r26, GX_FALSE); - break; - - case 4: - GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGB565, temp_r27, temp_r26, GX_FALSE); - break; - - case 5: - GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGB5A3, temp_r27, temp_r26, GX_FALSE); - break; - - case 9: - if(arg1->pixSize < 8) { - GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); - GXLoadTlut(&sp10, arg3); - GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C4, temp_r27, temp_r26, GX_FALSE, arg3); - } else { - GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); - GXLoadTlut(&sp10, arg3); - GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C8, temp_r27, temp_r26, GX_FALSE, arg3); - } - break; - - case 10: - if(arg1->pixSize < 8) { - GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); - GXLoadTlut(&sp10, arg3); - GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C4, temp_r27, temp_r26, GX_FALSE, arg3); - } else { - GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); - GXLoadTlut(&sp10, arg3); - GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C8, temp_r27, temp_r26, GX_FALSE, arg3); - } - break; - } - if(arg0->attr & 0x40) { - GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); - } else { - GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); - } - GXLoadTexObj(&sp1C, arg3); + GXTexObj sp1C; + GXTlutObj sp10; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + temp_r29 = arg1->sizeX; + temp_r28 = arg1->sizeY; + temp_r27 = (arg2->wrap_s == 1) ? 1 : 0; + temp_r26 = (arg2->wrap_t == 1) ? 1 : 0; + switch (arg1->dataFmt) { + case 6: + GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGBA8, temp_r27, temp_r26, GX_FALSE); + break; + + case 4: + GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGB565, temp_r27, temp_r26, GX_FALSE); + break; + + case 5: + GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGB5A3, temp_r27, temp_r26, GX_FALSE); + break; + + case 9: + if (arg1->pixSize < 8) { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C4, temp_r27, temp_r26, GX_FALSE, arg3); + } + else { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C8, temp_r27, temp_r26, GX_FALSE, arg3); + } + break; + + case 10: + if (arg1->pixSize < 8) { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C4, temp_r27, temp_r26, GX_FALSE, arg3); + } + else { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C8, temp_r27, temp_r26, GX_FALSE, arg3); + } + break; + } + if (arg0->attr & 0x40) { + GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + else { + GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&sp1C, arg3); } -#define SET_TEVCOLOR_ALPHA(reg, color_var, value) \ -{ \ - color_var.a = (value); \ - GXSetTevColor(reg, color_var); \ -} +#define SET_TEVCOLOR_ALPHA(reg, color_var, value) \ + { \ + color_var.a = (value); \ + GXSetTevColor(reg, color_var); \ + } extern u32 texMtxTbl[]; void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial *arg1) { - GXColor sp28; - GXColor sp24; - GXColor sp20; - u16 temp_r31; - HsfAttribute *temp_r29; - u16 temp_r28; - HsfObject *temp_r27; - HsfdrawStruct01 *temp_r26; - u16 temp_r25; - u16 temp_r24; - s32 temp_r23; - s32 temp_r22; - u16 temp_r20; - temp_r27 = arg0->unk4; - if(arg1->vtxMode == 2 || arg1->vtxMode == 3) { - temp_r24 = 1; - } else { - temp_r24 = 0; - if(arg1->vtxMode == 0 && !temp_r27->data.color) { - temp_r23 = 0; - } else { - temp_r23 = 1; - } - } - - if(arg1->numAttrs == 1) { - temp_r28 = temp_r31 = 1; - temp_r29 = &temp_r27->data.attribute[arg1->attrs[0]]; - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); - if(temp_r29->unk04) { - temp_r26 = temp_r29->unk04; - if(temp_r26->unk00 & 0x2) { - GXLoadTexMtxImm(Hu3DTexScrData[temp_r26->unk04].unk3C, GX_TEXMTX0, GX_MTX2x4); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0); - } - } - if(temp_r29->unk8[2] == 0) { - GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); - GXSetTevOrder(temp_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - temp_r31++; - } else { - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - } - SET_TEVCOLOR_ALPHA(GX_TEVREG0, sp28, 255*(1.0f-arg1->invAlpha)); - if(temp_r24) { - GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); - GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - temp_r31++; - } else if(0.0f != arg1->invAlpha) { - GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_RASA, GX_CA_ZERO); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - temp_r31++; - } - GXSetNumTexGens(temp_r28); - GXSetNumTevStages(temp_r31); - } else { - temp_r22 = 0; - temp_r28 = 1; - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); - for(temp_r25=temp_r31=0; temp_r25numAttrs; temp_r31++, temp_r25++) { - temp_r29 = &temp_r27->data.attribute[arg1->attrs[temp_r25]]; - if(0.0f != temp_r29->unk14) { - GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_BUMP0, GX_TG_TEXCOORD0, GX_IDENTITY); - SET_TEVCOLOR_ALPHA(GX_TEVREG1, sp24, 10*temp_r29->unk14); - GXSetTevOrder(temp_r31, GX_TEXCOORD0, temp_r25, GX_COLOR0A0); - GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - temp_r31++; - GXSetTevOrder(temp_r31, GX_TEXCOORD1, temp_r25, GX_COLOR0A0); - GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); - GXSetTevColorOp(temp_r31, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - temp_r28++; - temp_r22 = 1; - } else { - if(temp_r29->unk04) { - temp_r26 = temp_r29->unk04; - if(temp_r26->unk00 & 0x2) { - GXLoadTexMtxImm(Hu3DTexScrData[temp_r26->unk04].unk3C, texMtxTbl[temp_r28], GX_MTX2x4); - GXSetTexCoordGen(temp_r28, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[temp_r28]); - temp_r20 = (u16)temp_r28; - temp_r28++; - } - } else { - temp_r20 = 0; - } - GXSetTevOrder(temp_r31, temp_r20, temp_r25, GX_COLOR0A0); - if(temp_r25 == 0) { - GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); - } else if(temp_r22 != 0) { - GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); - temp_r22 = 0; - } else if(temp_r29->unk8[2] == 0) { - GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); - } else { - SET_TEVCOLOR_ALPHA(GX_TEVREG2, sp20, 255*temp_r29->unk0C); - GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); - } - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - } - } - SET_TEVCOLOR_ALPHA(GX_TEVREG0, sp28, 255*(1.0f-arg1->invAlpha)); - if(temp_r24) { - GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); - GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - temp_r31++; - } else { - GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); - GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); - GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - temp_r31++; - } - GXSetNumTexGens(temp_r28); - GXSetNumTevStages(temp_r31); - } - lbl_1_bss_118 = Hu3DLightSet(arg0->unk0, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, (temp_r24) ? arg1->hilite_scale : 0); - if(temp_r24) { - GXSetNumChans(2); - if(temp_r27->data.color) { - GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_NONE); - GXSetChanCtrl(GX_COLOR1A1, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_NONE, GX_AF_SPEC); - } else { - GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_NONE); - GXSetChanCtrl(GX_COLOR1A1, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_NONE, GX_AF_SPEC); - } - } else { - GXSetNumChans(1); - if(temp_r27->data.color) { - GXSetChanCtrl(GX_COLOR0A0, temp_r23, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_SPOT); - } else { - GXSetChanCtrl(GX_COLOR0A0, temp_r23, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_SPOT); - } - } + GXColor sp28; + GXColor sp24; + GXColor sp20; + u16 temp_r31; + HsfAttribute *temp_r29; + u16 temp_r28; + HsfObject *temp_r27; + HsfdrawStruct01 *temp_r26; + u16 temp_r25; + u16 temp_r24; + s32 temp_r23; + s32 temp_r22; + u16 temp_r20; + temp_r27 = arg0->unk4; + if (arg1->vtxMode == 2 || arg1->vtxMode == 3) { + temp_r24 = 1; + } + else { + temp_r24 = 0; + if (arg1->vtxMode == 0 && !temp_r27->data.color) { + temp_r23 = 0; + } + else { + temp_r23 = 1; + } + } + + if (arg1->numAttrs == 1) { + temp_r28 = temp_r31 = 1; + temp_r29 = &temp_r27->data.attribute[arg1->attrs[0]]; + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + if (temp_r29->unk04) { + temp_r26 = temp_r29->unk04; + if (temp_r26->unk00 & 0x2) { + GXLoadTexMtxImm(Hu3DTexScrData[temp_r26->unk04].unk3C, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0); + } + } + if (temp_r29->unk8[2] == 0) { + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(temp_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + else { + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + SET_TEVCOLOR_ALPHA(GX_TEVREG0, sp28, 255 * (1.0f - arg1->invAlpha)); + if (temp_r24) { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + else if (0.0f != arg1->invAlpha) { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + GXSetNumTexGens(temp_r28); + GXSetNumTevStages(temp_r31); + } + else { + temp_r22 = 0; + temp_r28 = 1; + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + for (temp_r25 = temp_r31 = 0; temp_r25 < arg1->numAttrs; temp_r31++, temp_r25++) { + temp_r29 = &temp_r27->data.attribute[arg1->attrs[temp_r25]]; + if (0.0f != temp_r29->unk14) { + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_BUMP0, GX_TG_TEXCOORD0, GX_IDENTITY); + SET_TEVCOLOR_ALPHA(GX_TEVREG1, sp24, 10 * temp_r29->unk14); + GXSetTevOrder(temp_r31, GX_TEXCOORD0, temp_r25, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + temp_r31++; + GXSetTevOrder(temp_r31, GX_TEXCOORD1, temp_r25, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); + GXSetTevColorOp(temp_r31, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + temp_r28++; + temp_r22 = 1; + } + else { + if (temp_r29->unk04) { + temp_r26 = temp_r29->unk04; + if (temp_r26->unk00 & 0x2) { + GXLoadTexMtxImm(Hu3DTexScrData[temp_r26->unk04].unk3C, texMtxTbl[temp_r28], GX_MTX2x4); + GXSetTexCoordGen(temp_r28, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[temp_r28]); + temp_r20 = (u16)temp_r28; + temp_r28++; + } + } + else { + temp_r20 = 0; + } + GXSetTevOrder(temp_r31, temp_r20, temp_r25, GX_COLOR0A0); + if (temp_r25 == 0) { + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + } + else if (temp_r22 != 0) { + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + temp_r22 = 0; + } + else if (temp_r29->unk8[2] == 0) { + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + } + else { + SET_TEVCOLOR_ALPHA(GX_TEVREG2, sp20, 255 * temp_r29->unk0C); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + } + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + } + SET_TEVCOLOR_ALPHA(GX_TEVREG0, sp28, 255 * (1.0f - arg1->invAlpha)); + if (temp_r24) { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + else { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + GXSetNumTexGens(temp_r28); + GXSetNumTevStages(temp_r31); + } + lbl_1_bss_118 = Hu3DLightSet(arg0->unk0, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, (temp_r24) ? arg1->hilite_scale : 0); + if (temp_r24) { + GXSetNumChans(2); + if (temp_r27->data.color) { + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_NONE, GX_AF_SPEC); + } + else { + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_NONE, GX_AF_SPEC); + } + } + else { + GXSetNumChans(1); + if (temp_r27->data.color) { + GXSetChanCtrl(GX_COLOR0A0, temp_r23, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_SPOT); + } + else { + GXSetChanCtrl(GX_COLOR0A0, temp_r23, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_SPOT); + } + } } #undef SET_TEVCOLOR_ALPHA s32 fn_1_11670(void) { - lbl_1_data_19C *= 0x41C64E6D; - lbl_1_data_19C += 0x3039; - return lbl_1_data_19C >> 16; + lbl_1_data_19C *= 0x41C64E6D; + lbl_1_data_19C += 0x3039; + return lbl_1_data_19C >> 16; } float fn_1_116C4(float arg0, float arg1) { - float temp_f31; - float temp_f30; - temp_f30 = 360; - temp_f31 = atan2d(arg0, arg1); - if(temp_f31 < -180) { - temp_f31 += temp_f30; - } else if(temp_f31 >= 180.0) { - temp_f31 -= temp_f30; - } - return temp_f31; + float temp_f31; + float temp_f30; + temp_f30 = 360; + temp_f31 = atan2d(arg0, arg1); + if (temp_f31 < -180) { + temp_f31 += temp_f30; + } + else if (temp_f31 >= 180.0) { + temp_f31 -= temp_f30; + } + return temp_f31; } float fn_1_11780(Vec *arg0, Vec *arg1) { - return VECDistanceXYZ(arg0, arg1); -} \ No newline at end of file + return VECDistanceXYZ(arg0, arg1); +} diff --git a/src/REL/m409Dll/cursor.c b/src/REL/m409Dll/cursor.c index b7a816d0..76fbe60a 100644 --- a/src/REL/m409Dll/cursor.c +++ b/src/REL/m409Dll/cursor.c @@ -4,40 +4,42 @@ #include "game/hsfdraw.h" #include "game/sprite.h" -void fn_1_BF88(s16 arg0, s16 arg1) { +void fn_1_BF88(s16 arg0, s16 arg1) +{ s32 var_r31; s32 var_r31_2; - unkStruct8* var_r29; - unkStruct9Sub* var_r30; + unkStruct8 *var_r29; + unkStruct9Sub *var_r30; lbl_1_bss_F0.unk4 = Hu3DHookFuncCreate(fn_1_CB98); Hu3DModelLayerSet(lbl_1_bss_F0.unk4, 6); lbl_1_bss_F0.unk0 = arg0; - var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkStruct8), 0x10000000); + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkStruct8), MEMORY_DEFAULT_NUM); lbl_1_bss_F0.unk10 = var_r29; lbl_1_bss_F0.unk2 = arg1; - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct9Sub), 0x10000000); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct9Sub), MEMORY_DEFAULT_NUM); lbl_1_bss_F0.unkC = var_r30; - + for (var_r31 = 0; var_r31 < arg0; var_r31++, var_r29++) { var_r29->unk8 = 0; } - + for (var_r31 = 0; var_r31 < arg1; var_r31++, var_r30++) { var_r30->unk6 = 0; var_r30->unk8 = 0; } - + lbl_1_bss_F0.unk6 = lbl_1_bss_F0.unk8 = lbl_1_bss_F0.unkA = 0; } -void fn_1_C0C0(void) { +void fn_1_C0C0(void) +{ s32 var_r31; for (var_r31 = 1; var_r31 < lbl_1_bss_F0.unk0; var_r31++) { fn_1_DDB8(var_r31); } - + for (var_r31 = 1; var_r31 < lbl_1_bss_F0.unk2; var_r31++) { fn_1_E228(var_r31); } @@ -48,7 +50,8 @@ void fn_1_C0C0(void) { extern u8 texMtxTbl[]; -void fn_1_C164(unkStruct8* arg0) { +void fn_1_C164(unkStruct8 *arg0) +{ ModelData spEC; Mtx spBC; Mtx sp8C; @@ -59,27 +62,27 @@ void fn_1_C164(unkStruct8* arg0) { GXColorSrc var_r25; s32 var_r26; s16 temp_r23; - unkStruct9Sub* temp_r28; + unkStruct9Sub *temp_r28; s16 var_r27; s16 var_r30; s32 var_r24; s32 var_r22; s32 var_r21; s32 var_r20; - unkStruct8Sub* var_r31; + unkStruct8Sub *var_r31; mtxRot(sp2C, arg0->unk18.x, arg0->unk18.y, arg0->unk18.z); - PSMTXScale(sp5C, arg0->unk24.x, arg0->unk24.y, arg0->unk24.z); - PSMTXConcat(sp2C, sp5C, sp5C); + MTXScale(sp5C, arg0->unk24.x, arg0->unk24.y, arg0->unk24.z); + MTXConcat(sp2C, sp5C, sp5C); mtxTransCat(sp5C, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); - PSMTXConcat(Hu3DCameraMtx, sp5C, sp8C); + MTXConcat(Hu3DCameraMtx, sp5C, sp8C); var_r30 = 0; var_r27 = 0; sp8 = 0; - + for (var_r26 = GX_TEXMAP0; var_r26 < arg0->unk4; var_r26++) { temp_r28 = &lbl_1_bss_F0.unkC[arg0->unk34[var_r26]]; - PSMTXRotRad(temp_r28->unk18, 0x5A, 0.0f); + MTXRotRad(temp_r28->unk18, 0x5A, 0.0f); mtxTransCat(temp_r28->unk18, temp_r28->unkC.x, temp_r28->unkC.y, temp_r28->unkC.z); switch (temp_r28->unk4) { case 0: @@ -91,11 +94,13 @@ void fn_1_C164(unkStruct8* arg0) { if ((temp_r28->unk0->bmp->dataFmt == 7) || (temp_r28->unk0->bmp->dataFmt == 8)) { GXSetTevColor(GX_TEVREG2, temp_r28->unk48); GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_C2, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); - } else { + } + else { sp28.a = temp_r28->unk48.a; GXSetTevColor(GX_TEVREG2, sp28); GXSetTevColorIn(var_r30, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); @@ -150,39 +155,40 @@ void fn_1_C164(unkStruct8* arg0) { GXSetNumTevStages((s32)var_r30); GXSetNumTexGens((s32)var_r27); var_r31 = arg0->unk3C; - + for (var_r24 = 0; var_r24 < arg0->unk2; var_r24++, var_r31++) { if ((var_r31->unk34 != 0) && ((var_r31->unk34 & 4) == 0)) { switch (var_r31->unk30) { case 0: mtxRot(sp2C, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); - PSMTXIdentity(sp5C); + MTXIdentity(sp5C); HmfInverseMtxF3X3(Hu3DCameraMtx, sp5C); - PSMTXConcat(sp5C, sp2C, sp2C); - PSMTXScale(sp5C, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z); - PSMTXConcat(sp2C, sp5C, sp5C); + MTXConcat(sp5C, sp2C, sp2C); + MTXScale(sp5C, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z); + MTXConcat(sp2C, sp5C, sp5C); mtxTransCat(sp5C, var_r31->unk0.x, var_r31->unk0.y, var_r31->unk0.z); - PSMTXConcat(Hu3DCameraMtx, sp5C, spBC); + MTXConcat(Hu3DCameraMtx, sp5C, spBC); break; case 1: - PSMTXCopy(sp8C, sp2C); + MTXCopy(sp8C, sp2C); mtxRotCat(sp2C, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); - PSMTXScale(sp5C, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z); - PSMTXConcat(sp2C, sp5C, sp5C); + MTXScale(sp5C, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z); + MTXConcat(sp2C, sp5C, sp5C); mtxTransCat(sp5C, var_r31->unk0.x, var_r31->unk0.y, var_r31->unk0.z); - PSMTXCopy(sp5C, spBC); + MTXCopy(sp5C, spBC); break; } GXLoadPosMtxImm(spBC, 0); - PSMTXInverse(spBC, sp5C); - PSMTXTranspose(sp5C, sp2C); + MTXInverse(spBC, sp5C); + MTXTranspose(sp5C, sp2C); GXLoadNrmMtxImm(sp2C, 0); GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk4C); GXSetChanMatColor(GX_COLOR0A0, var_r31->unk50); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); if ((var_r31->unk34 & 0x10) != 0) { GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE); - } else { + } + else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); } spEC.attr = 0; @@ -190,7 +196,8 @@ void fn_1_C164(unkStruct8* arg0) { GXSetNumChans(1); if ((var_r31->unk34 & 8) != 0) { var_r25 = GX_SRC_VTX; - } else { + } + else { var_r25 = GX_SRC_REG; } switch (var_r31->unk31) { @@ -206,36 +213,37 @@ void fn_1_C164(unkStruct8* arg0) { } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, var_r31->unk40, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk40, 12); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, var_r31->unk44, 4); for (var_r26 = 0; var_r26 < var_r31->unk32; var_r26++) { GXSetVtxDesc(var_r26 + GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, var_r26 + GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r26 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(var_r26 + GX_VA_TEX0, var_r31->unk54[var_r26].unk4, 8); } GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, var_r31->unk48, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, var_r31->unk48, 12); GXCallDisplayList(var_r31->unk3C, var_r31->unk38); } } } -void fn_1_CB98(ModelData* model, Mtx matrix) { +void fn_1_CB98(ModelData *model, Mtx matrix) +{ Mtx sp38; Mtx sp8; s32 var_r30; - unkStruct8* var_r31; + unkStruct8 *var_r31; var_r31 = lbl_1_bss_F0.unk10; GXLoadPosMtxImm(matrix, 0); - PSMTXInverse(matrix, sp38); - PSMTXTranspose(sp38, sp8); + MTXInverse(matrix, sp38); + MTXTranspose(sp38, sp8); GXLoadNrmMtxImm(sp8, 0); - + for (var_r30 = 0; var_r30 < lbl_1_bss_F0.unk0; var_r30++, var_r31++) { if ((var_r31->unk8 == 0) || ((var_r31->unk8 & 2) == 0) || ((var_r31->unk8 & 4) != 0)) { continue; @@ -244,28 +252,33 @@ void fn_1_CB98(ModelData* model, Mtx matrix) { if (var_r31->unk30) { var_r31->unk30(var_r31); } - if (var_r31->unk8 == 0) continue; + if (var_r31->unk8 == 0) + continue; fn_1_D430(var_r31); - if (var_r31->unk8 == 0) continue; + if (var_r31->unk8 == 0) + continue; } fn_1_C164(var_r31); } } -unkStruct8* fn_1_CCB0(s16 idx) { +unkStruct8 *fn_1_CCB0(s16 idx) +{ return &lbl_1_bss_F0.unk10[idx]; } -unkStruct8Sub* fn_1_CCCC(s16 arg0, s16 arg1) { +unkStruct8Sub *fn_1_CCCC(s16 arg0, s16 arg1) +{ return &lbl_1_bss_F0.unk10[arg0].unk3C[arg1]; } -void fn_1_CCF8(unkStruct11** arg0, s16 arg1, f32 arg8, f32 arg9) { +void fn_1_CCF8(unkStruct11 **arg0, s16 arg1, f32 arg8, f32 arg9) +{ s32 var_r30; - unkStruct11* var_r31; - - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct11), 0x10000000); - + unkStruct11 *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct11), MEMORY_DEFAULT_NUM); + 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); @@ -282,13 +295,14 @@ void fn_1_CCF8(unkStruct11** arg0, s16 arg1, f32 arg8, f32 arg9) { } } -void fn_1_CE7C(Vec** arg0, s16 arg1, Vec* arg2) { +void fn_1_CE7C(Vec **arg0, s16 arg1, Vec *arg2) +{ s32 var_r29; s32 var_r28; - Vec* var_r31; + Vec *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec[4]), MEMORY_DEFAULT_NUM); - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec[4]), 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; @@ -298,13 +312,14 @@ void fn_1_CE7C(Vec** arg0, s16 arg1, Vec* arg2) { } } -void fn_1_CF1C(GXColor** arg0, s16 arg1, GXColor* arg2) { +void fn_1_CF1C(GXColor **arg0, s16 arg1, GXColor *arg2) +{ s32 var_r29; s32 var_r28; - GXColor* var_r31; + GXColor *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(GXColor[4]), MEMORY_DEFAULT_NUM); - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(GXColor[4]), 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; @@ -315,12 +330,13 @@ void fn_1_CF1C(GXColor** arg0, s16 arg1, GXColor* arg2) { } } -void fn_1_CFC4(Vec** arg0, s16 arg1, Vec* arg2) { +void fn_1_CFC4(Vec **arg0, s16 arg1, Vec *arg2) +{ s32 var_r29; - Vec* var_r31; + Vec *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), MEMORY_DEFAULT_NUM); - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), 0x10000000U); - for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { var_r31->x = arg2->x; var_r31->y = arg2->y; @@ -328,12 +344,13 @@ void fn_1_CFC4(Vec** arg0, s16 arg1, Vec* arg2) { } } -void fn_1_D050(HsfVector2f** arg0, s16 arg1, HsfVector2f* arg2) { +void fn_1_D050(HsfVector2f **arg0, s16 arg1, HsfVector2f *arg2) +{ s32 var_r28; s32 var_r29; - HsfVector2f* var_r31; + HsfVector2f *var_r31; - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(HsfVector2f[4]), 0x10000000U); + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(HsfVector2f[4]), MEMORY_DEFAULT_NUM); for (var_r28 = 0; var_r28 < arg1; var_r28++) { for (var_r29 = 0; var_r29 < 4; var_r31++, arg2++, var_r29++) { @@ -343,52 +360,43 @@ void fn_1_D050(HsfVector2f** arg0, s16 arg1, HsfVector2f* arg2) { } } -void fn_1_D0E8(unkStruct8Sub* arg0) { - Vec sp18[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 sp8[4] = { - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }; +void fn_1_D0E8(unkStruct8Sub *arg0) +{ + Vec sp18[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 sp8[4] = { { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } }; s32 var_r26; s32 var_r25; - void* temp_r3_3; - + void *temp_r3_3; + if (arg0->unk40 != NULL) { HuMemDirectFree(arg0->unk40); } - fn_1_CE7C((Vec**)&arg0->unk40, 1, &sp18[0]); + fn_1_CE7C((Vec **)&arg0->unk40, 1, &sp18[0]); if (arg0->unk44 != NULL) { HuMemDirectFree(arg0->unk44); } - fn_1_CF1C((GXColor**)&arg0->unk44, 1, &sp8[0]); + fn_1_CF1C((GXColor **)&arg0->unk44, 1, &sp8[0]); if (arg0->unk48 != NULL) { HuMemDirectFree(arg0->unk48); } - arg0->unk48 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec), 0x10000000); + arg0->unk48 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec), MEMORY_DEFAULT_NUM); arg0->unk48->x = 0.0f; arg0->unk48->y = 0.0f; arg0->unk48->z = 1.0f; if (arg0->unk3C != NULL) { HuMemDirectFree(arg0->unk3C); } - temp_r3_3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1000, 0x10000000); + temp_r3_3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1000, MEMORY_DEFAULT_NUM); arg0->unk3C = temp_r3_3; DCFlushRange(arg0->unk3C, 0x1000); GXBeginDisplayList(temp_r3_3, 0x1000); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - + for (var_r26 = 0; var_r26 < 4; var_r26++) { GXPosition1x16(var_r26); GXColor1x16(0); GXNormal1x16(var_r26); - + for (var_r25 = 0; var_r25 < arg0->unk32; var_r25++) { GXTexCoord1x16(var_r26); } @@ -396,23 +404,25 @@ void fn_1_D0E8(unkStruct8Sub* arg0) { arg0->unk38 = GXEndDisplayList(); } -void fn_1_D430(unkStruct8* arg0) { +void fn_1_D430(unkStruct8 *arg0) +{ s32 var_r25; s32 var_r26; s32 var_r27; - unkStruct8Sub* var_r28; - unkStruct12* var_r31; - unkStruct9Sub* temp_r30; + unkStruct8Sub *var_r28; + unkStruct12 *var_r31; + unkStruct9Sub *temp_r30; var_r27 = 0; var_r28 = arg0->unk3C; - + for (var_r25 = 0; var_r25 < arg0->unk2; var_r25++, var_r28++) { if ((var_r28->unk34 & 4) != 0) { var_r27++; - } else { + } + else { var_r31 = var_r28->unk54; - + for (var_r26 = 0; var_r26 < var_r28->unk32; var_r26++, var_r31++) { temp_r30 = &lbl_1_bss_F0.unkC[arg0->unk34[var_r26]]; var_r31->unk8 &= ~4; @@ -436,30 +446,37 @@ void fn_1_D430(unkStruct8* arg0) { if ((var_r31->unk8 & 0x10) != 0) { var_r31->unk8 |= 8; var_r31->unk0--; - } else if ((var_r31->unk8 & 0x40) != 0) { + } + else if ((var_r31->unk8 & 0x40) != 0) { var_r31->unk8 = (var_r31->unk8 & 0xF0) | 2; var_r31->unk0 -= 2; - } else if ((var_r31->unk8 & 0x20) != 0) { + } + else if ((var_r31->unk8 & 0x20) != 0) { var_r31->unk0 = 0; } var_r31->unk8 |= 4; - } else if (var_r31->unk0 < 0) { + } + else if (var_r31->unk0 < 0) { if ((var_r31->unk8 & 0x10) != 0) { var_r31->unk8 |= 8; var_r31->unk0 = 0; - } else if ((var_r31->unk8 & 0x20) != 0) { + } + else if ((var_r31->unk8 & 0x20) != 0) { if ((var_r31->unk8 & 0x40) != 0) { var_r31->unk8 = ((var_r31->unk8 & 0xF0) | 1); var_r31->unk0 = 1U; - } else { + } + else { var_r31->unk0 = (temp_r30->unk4C - 1); } - } else if ((var_r31->unk8 & 0x40) != 0) { + } + else if ((var_r31->unk8 & 0x40) != 0) { var_r31->unk8 |= 8; var_r31->unk0 = 0; } var_r31->unk8 |= 4; - } else { + } + else { var_r31->unk8 &= ~8; } if (var_r31->unk0 != var_r31->unk1) { @@ -483,11 +500,13 @@ void fn_1_D430(unkStruct8* arg0) { if ((var_r31->unk8 & 0x40) == 0) { if (var_r31->unk0 <= 0) { var_r31->unk0 = temp_r30->unk4C; - } else { + } + else { var_r31->unk0 = 0U; } } - } else if ((var_r28->unk34 & 0x80000000) != 0) { + } + else if ((var_r28->unk34 & 0x80000000) != 0) { fn_1_DDB8(arg0->unk0); } var_r27++; @@ -506,42 +525,44 @@ void fn_1_D430(unkStruct8* arg0) { } } -s16 fn_1_DA48(u8 arg0, u8 arg1) { +s16 fn_1_DA48(u8 arg0, u8 arg1) +{ s32 var_r29; s32 var_r28; - unkStruct8* var_r30; - unkStruct8Sub* var_r31; + unkStruct8 *var_r30; + unkStruct8Sub *var_r31; var_r30 = &lbl_1_bss_F0.unk10[1]; - + for (var_r29 = 1; var_r29 < lbl_1_bss_F0.unk0; var_r29++, var_r30++) { - if (var_r30->unk8 == 0) break; - + if (var_r30->unk8 == 0) + break; } - - if (var_r29 == lbl_1_bss_F0.unk0) return 0; - + + if (var_r29 == lbl_1_bss_F0.unk0) + return 0; + var_r30->unk0 = var_r29; var_r30->unk8 = 1; var_r30->unk30 = NULL; var_r30->unk2 = arg0; var_r30->unk4 = arg1; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkStruct8Sub), 0x10000000); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkStruct8Sub), MEMORY_DEFAULT_NUM); var_r30->unk3C = var_r31; - var_r30->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(s16), 0x10000000); + var_r30->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(s16), MEMORY_DEFAULT_NUM); var_r30->unkC.x = var_r30->unkC.y = var_r30->unkC.z = 0.0f; var_r30->unk18.x = var_r30->unk18.y = var_r30->unk18.z = 0.0f; var_r30->unk24.x = var_r30->unk24.y = var_r30->unk24.z = 1.0f; var_r30->unk54.x = var_r30->unk54.y = var_r30->unk54.z = 0.0f; var_r30->unk48.x = var_r30->unk48.y = var_r30->unk48.z = 0.0f; - + for (var_r29 = 0; var_r29 < 0x20; var_r29++) { var_r30->unk60[var_r29] = 0; } for (var_r29 = 0; var_r29 < arg1; var_r29++) { var_r30->unk34[var_r29] = 0; } - + for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r31++) { var_r31->unk34 = 1; var_r31->unk32 = arg1; @@ -551,8 +572,8 @@ s16 fn_1_DA48(u8 arg0, u8 arg1) { var_r31->unk4C.a = 0xFF; var_r31->unk50.r = var_r31->unk50.g = var_r31->unk50.b = 0xFF; var_r31->unk50.a = 0xFF; - var_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct12), 0x10000000); - + var_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct12), MEMORY_DEFAULT_NUM); + for (var_r28 = 0; var_r28 < arg1; var_r28++) { var_r31->unk54[var_r28].unk0 = var_r31->unk54[var_r28].unk1 = 0; var_r31->unk54[var_r28].unk4 = NULL; @@ -564,7 +585,7 @@ s16 fn_1_DA48(u8 arg0, u8 arg1) { var_r31->unk18.x = var_r31->unk18.y = var_r31->unk18.z = 1.0f; var_r31->unk64.x = var_r31->unk64.y = var_r31->unk64.z = 0.0f; var_r31->unk58.x = var_r31->unk58.y = var_r31->unk58.z = 0.0f; - + for (var_r28 = 0; var_r28 < 0x10; var_r28++) { var_r31->unk70[var_r28] = 0; } @@ -575,17 +596,18 @@ s16 fn_1_DA48(u8 arg0, u8 arg1) { return var_r30->unk0; } -void fn_1_DDB8(s16 arg0) { - unkStruct12* var_r28; +void fn_1_DDB8(s16 arg0) +{ + unkStruct12 *var_r28; s32 var_r29; - unkStruct8* temp_r30; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r30; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; if (temp_r30->unk8 != 0) { var_r31 = temp_r30->unk3C; - + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { if (var_r31->unk40 != NULL) { HuMemDirectFree(var_r31->unk40); @@ -603,7 +625,7 @@ void fn_1_DDB8(s16 arg0) { HuMemDirectFree(var_r28->unk4); HuMemDirectFree(var_r31->unk54); } - + for (var_r29 = 0; var_r29 < temp_r30->unk4; var_r29++) { fn_1_E228(temp_r30->unk34[var_r29]); } @@ -615,41 +637,46 @@ void fn_1_DDB8(s16 arg0) { } } -void fn_1_DEF4(s16 arg0, s16 arg1, u8 arg2) { +void fn_1_DEF4(s16 arg0, s16 arg1, u8 arg2) +{ lbl_1_bss_F0.unk6 = arg0; lbl_1_bss_F0.unk8 = arg1; lbl_1_bss_F0.unkA = arg2; } -s16 fn_1_DF20(u32 arg0, s16 arg1, s16 arg2) { - AnimData* temp_r30; +s16 fn_1_DF20(u32 arg0, s16 arg1, s16 arg2) +{ + AnimData *temp_r30; f32 var_f31; f32 var_f30; s32 var_r29; - unkStruct9Sub* var_r31; + unkStruct9Sub *var_r31; var_r31 = &lbl_1_bss_F0.unkC[1]; - + for (var_r29 = 1; var_r29 < lbl_1_bss_F0.unk2; var_r29++, var_r31++) { - if ((var_r31->unk6 != 0) && (var_r31->unk8 == arg0)) break; + if ((var_r31->unk6 != 0) && (var_r31->unk8 == arg0)) + break; } if (var_r29 < lbl_1_bss_F0.unk2) { var_r31->unk6++; return var_r29; } var_r31 = &lbl_1_bss_F0.unkC[1]; - + for (var_r29 = 1; var_r29 < lbl_1_bss_F0.unk2; var_r29++, var_r31++) { - if (var_r31->unk6 == 0) break; + if (var_r31->unk6 == 0) + break; } var_r31->unk8 = arg0; var_r31->unk6 = 1; - temp_r30 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000)); + temp_r30 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); if ((arg1 == 0) || (arg2 == 0)) { arg1 = temp_r30->bmp->sizeX; arg2 = temp_r30->bmp->sizeY; var_f31 = var_f30 = 1.0f; - } else { + } + else { var_f31 = arg1 / (f32)temp_r30->bmp->sizeX; var_f30 = arg2 / (f32)temp_r30->bmp->sizeY; } @@ -664,14 +691,15 @@ s16 fn_1_DF20(u32 arg0, s16 arg1, s16 arg2) { var_r31->unk4C = (temp_r30->bmp->sizeY / arg2); var_r31->unk48.r = var_r31->unk48.g = var_r31->unk48.b = 0xFF; var_r31->unk48.a = 0xFF; - PSMTXIdentity(var_r31->unk18); + MTXIdentity(var_r31->unk18); var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f; return var_r29; } -void fn_1_E228(s16 arg0) { - unkStruct9Sub* temp_r31; - +void fn_1_E228(s16 arg0) +{ + unkStruct9Sub *temp_r31; + temp_r31 = &lbl_1_bss_F0.unkC[arg0]; if (temp_r31->unk8 != 0) { if (temp_r31->unk6 != 0) { @@ -684,17 +712,18 @@ void fn_1_E228(s16 arg0) { } } -s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { +s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) +{ f32 temp_f31; f32 temp_f30; s32 var_r26; s32 var_r25; s32 var_r24; - unkStruct12* temp_r31; - unkStruct8* temp_r27; - unkStruct8Sub* var_r28; - unkStruct9Sub* temp_r30; - unkStruct11* var_r29; + unkStruct12 *temp_r31; + unkStruct8 *temp_r27; + unkStruct8Sub *var_r28; + unkStruct9Sub *temp_r30; + unkStruct11 *var_r29; if (arg0 == 0) { return 0; @@ -708,7 +737,7 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { temp_r27->unk34[arg1] = var_r24; temp_r30 = &lbl_1_bss_F0.unkC[var_r24]; var_r28 = temp_r27->unk3C; - + for (var_r26 = 0; var_r26 < temp_r27->unk2; var_r26++, var_r28++) { if (arg1 == 0) { if (var_r28->unk40) { @@ -716,8 +745,8 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { } temp_f30 = temp_r30->unk50; temp_f31 = temp_r30->unk4E; - var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, 0x10000000); - + var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, MEMORY_DEFAULT_NUM); + for (var_r25 = 0; var_r25 < 1; var_r29++, var_r25++) { var_r29->unk0.x = (-0.5f * temp_f31); var_r29->unk0.y = (0.5f * temp_f30); @@ -739,7 +768,7 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { temp_r31->unkC = 1.0f; temp_r31->unk10 = 0.0f; if (temp_r31->unk4 == NULL) { - temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, 0x10000000U); + temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, MEMORY_DEFAULT_NUM); } temp_r31->unk4[0].x = temp_r31->unk0 * temp_r30->unk54; temp_r31->unk4[0].y = temp_r31->unk0 * temp_r30->unk58; @@ -757,15 +786,17 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { return 1; } -s32 fn_1_E7C8(s16 arg0, u8 arg1, u32 arg2) { +s32 fn_1_E7C8(s16 arg0, u8 arg1, u32 arg2) +{ s32 var_r31; - + var_r31 = fn_1_E2A8(arg0, arg1, arg2, 0, 0); return var_r31; } -void fn_1_E818(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r31; +void fn_1_E818(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -775,9 +806,10 @@ void fn_1_E818(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_E85C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r30; - unkStruct8Sub* temp_r31; +void fn_1_E85C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r30; + unkStruct8Sub *temp_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; @@ -790,15 +822,16 @@ void fn_1_E85C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_E8CC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { +void fn_1_E8CC(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ s32 var_r29; - unkStruct8* temp_r30; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r30; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; var_r31 = temp_r30->unk3C; - + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { var_r31->unk0.x = arg8; var_r31->unk0.y = arg9; @@ -807,8 +840,9 @@ void fn_1_E8CC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_E940(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r31; +void fn_1_E940(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -818,9 +852,10 @@ void fn_1_E940(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_E99C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r30; - unkStruct8Sub* temp_r31; +void fn_1_E99C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r30; + unkStruct8Sub *temp_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; @@ -833,15 +868,16 @@ void fn_1_E99C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EA24(s16 arg0, f32 arg8, f32 arg9, f32 argA) { +void fn_1_EA24(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ s32 var_r29; - unkStruct8* temp_r30; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r30; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; var_r31 = temp_r30->unk3C; - + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { var_r31->unk0.x += arg8; var_r31->unk0.y += arg9; @@ -850,8 +886,9 @@ void fn_1_EA24(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EAB0(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r31; +void fn_1_EAB0(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -861,9 +898,10 @@ void fn_1_EAB0(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EAF4(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r30; - unkStruct8Sub* temp_r31; +void fn_1_EAF4(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r30; + unkStruct8Sub *temp_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; @@ -876,15 +914,16 @@ void fn_1_EAF4(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EB64(s16 arg0, f32 arg8, f32 arg9, f32 argA) { +void fn_1_EB64(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ s32 var_r29; - unkStruct8* temp_r30; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r30; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; var_r31 = temp_r30->unk3C; - + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { var_r31->unkC.x = arg8; var_r31->unkC.y = arg9; @@ -893,8 +932,9 @@ void fn_1_EB64(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EBD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r31; +void fn_1_EBD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -904,9 +944,10 @@ void fn_1_EBD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EC1C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { - unkStruct8* temp_r30; - unkStruct8Sub* temp_r31; +void fn_1_EC1C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkStruct8 *temp_r30; + unkStruct8Sub *temp_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; @@ -919,15 +960,16 @@ void fn_1_EC1C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_EC8C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { +void fn_1_EC8C(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ s32 var_r29; - unkStruct8* temp_r30; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r30; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; var_r31 = temp_r30->unk3C; - + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { var_r31->unk18.x = arg8; var_r31->unk18.y = arg9; @@ -936,8 +978,9 @@ void fn_1_EC8C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { } } -void fn_1_ED00(s16 arg0, s32 arg1) { - unkStruct8* temp_r31; +void fn_1_ED00(s16 arg0, s32 arg1) +{ + unkStruct8 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -945,9 +988,10 @@ void fn_1_ED00(s16 arg0, s32 arg1) { } } -void fn_1_ED44(s16 arg0, s16 arg1, s32 arg2) { - unkStruct8* temp_r31; - unkStruct8Sub* temp_r30; +void fn_1_ED44(s16 arg0, s16 arg1, s32 arg2) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *temp_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -958,23 +1002,25 @@ void fn_1_ED44(s16 arg0, s16 arg1, s32 arg2) { } } -void fn_1_EDB4(s16 arg0, s32 arg1) { +void fn_1_EDB4(s16 arg0, s32 arg1) +{ s32 var_r30; - unkStruct8* temp_r31; - unkStruct8Sub* temp_r29; + unkStruct8 *temp_r31; + unkStruct8Sub *temp_r29; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; temp_r29 = temp_r31->unk3C; - + for (var_r30 = 0; var_r30 < temp_r31->unk2; var_r30++) { temp_r29->unk34 |= arg1; } } } -void fn_1_EE24(s16 arg0, u32 arg1) { - unkStruct8* temp_r31; +void fn_1_EE24(s16 arg0, u32 arg1) +{ + unkStruct8 *temp_r31; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -982,9 +1028,10 @@ void fn_1_EE24(s16 arg0, u32 arg1) { } } -void fn_1_EE68(s16 arg0, s16 arg1, u32 arg2) { - unkStruct8* temp_r31; - unkStruct8Sub* temp_r30; +void fn_1_EE68(s16 arg0, s16 arg1, u32 arg2) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *temp_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -995,23 +1042,25 @@ void fn_1_EE68(s16 arg0, s16 arg1, u32 arg2) { } } -void fn_1_EED8(s16 arg0, u32 arg1) { +void fn_1_EED8(s16 arg0, u32 arg1) +{ s32 var_r30; - unkStruct8* temp_r31; - unkStruct8Sub* temp_r29; + unkStruct8 *temp_r31; + unkStruct8Sub *temp_r29; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; temp_r29 = temp_r31->unk3C; - + for (var_r30 = 0; var_r30 < temp_r31->unk2; var_r30++) { temp_r29->unk34 &= ~arg1; } } } -s32 fn_1_EF48(s16 arg0, s32 arg1) { - unkStruct8* var_r31; +s32 fn_1_EF48(s16 arg0, s32 arg1) +{ + unkStruct8 *var_r31; if (arg0 == 0) { return 0; @@ -1024,26 +1073,31 @@ s32 fn_1_EF48(s16 arg0, s32 arg1) { return 0; } -s32 fn_1_EFA4(s16 arg0, s16 arg1, s32 arg2) { - unkStruct8Sub* var_r30; - unkStruct8* temp_r31; +s32 fn_1_EFA4(s16 arg0, s16 arg1, s32 arg2) +{ + unkStruct8Sub *var_r30; + unkStruct8 *temp_r31; + + if (arg0 == 0) + return; - if (arg0 == 0) return; - temp_r31 = &lbl_1_bss_F0.unk10[arg0]; - if (temp_r31->unk2 <= arg1) return; - + if (temp_r31->unk2 <= arg1) + return; + var_r30 = &temp_r31->unk3C[arg1]; if ((var_r30->unk34 & arg2) != 0) { return 1; - } else { + } + else { return 0; } } -void fn_1_F024(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) { - unkStruct8* temp_r30; - unkStruct8Sub* temp_r31; +void fn_1_F024(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) +{ + unkStruct8 *temp_r30; + unkStruct8Sub *temp_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; @@ -1057,15 +1111,16 @@ void fn_1_F024(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) { } } -void fn_1_F098(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) { +void fn_1_F098(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) +{ s32 var_r29; - unkStruct8* temp_r30; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r30; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r30 = &lbl_1_bss_F0.unk10[arg0]; var_r31 = temp_r30->unk3C; - + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { var_r31->unk50.r = arg1; var_r31->unk50.g = arg2; @@ -1075,9 +1130,10 @@ void fn_1_F098(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) { } } -void fn_1_F110(s16 arg0, s16 arg1, u8 arg2) { - unkStruct8* temp_r31; - unkStruct8Sub* var_r30; +void fn_1_F110(s16 arg0, s16 arg1, u8 arg2) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -1088,9 +1144,10 @@ void fn_1_F110(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_F17C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { - unkStruct8* temp_r31; - unkStruct8Sub* var_r30; +void fn_1_F17C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -1101,17 +1158,18 @@ void fn_1_F17C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { } } -void fn_1_F1F4(s16 arg0, u8 arg1) { +void fn_1_F1F4(s16 arg0, u8 arg1) +{ s32 var_r28; s32 var_r30; - unkStruct8* temp_r29; - unkStruct8Sub* var_r31; + unkStruct8 *temp_r29; + unkStruct8Sub *var_r31; if (arg0 != 0) { temp_r29 = &lbl_1_bss_F0.unk10[arg0]; - var_r31 = (unkStruct8Sub *)(&temp_r29->unk3C); + var_r31 = (unkStruct8Sub *)(&temp_r29->unk3C); //! BAD WHY (void)temp_r29; - + for (var_r28 = 0; var_r28 < temp_r29->unk2; var_r28++, var_r31++) { for (var_r30 = 0; var_r30 < var_r31->unk32; var_r30++) { var_r31->unk54[var_r30].unk8 = arg1; @@ -1120,9 +1178,10 @@ void fn_1_F1F4(s16 arg0, u8 arg1) { } } -void fn_1_F28C(s16 arg0, s16 arg1, f32 arg8) { - unkStruct8* temp_r31; - unkStruct8Sub* var_r30; +void fn_1_F28C(s16 arg0, s16 arg1, f32 arg8) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -1133,9 +1192,10 @@ void fn_1_F28C(s16 arg0, s16 arg1, f32 arg8) { } } -void fn_1_F2F8(s16 arg0, s16 arg1, u8 arg2, f32 arg8) { - unkStruct8* temp_r31; - unkStruct8Sub* var_r30; +void fn_1_F2F8(s16 arg0, s16 arg1, u8 arg2, f32 arg8) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -1146,16 +1206,17 @@ void fn_1_F2F8(s16 arg0, s16 arg1, u8 arg2, f32 arg8) { } } -void fn_1_F370(s16 arg0, f32 arg8) { - unkStruct8* temp_r31; +void fn_1_F370(s16 arg0, f32 arg8) +{ + unkStruct8 *temp_r31; s32 var_r29; s32 var_r30; - unkStruct8Sub* volatile sp8; + unkStruct8Sub *volatile sp8; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; sp8 = &temp_r31->unk3C[0]; - + for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++) { for (var_r30 = 0; var_r30 < sp8->unk32; var_r30++) { sp8->unk54[var_r30].unkC = arg8; @@ -1164,9 +1225,10 @@ void fn_1_F370(s16 arg0, f32 arg8) { } } -void fn_1_F408(s16 arg0, s16 arg1, u8 arg2) { - unkStruct8* temp_r31; - unkStruct8Sub* var_r30; +void fn_1_F408(s16 arg0, s16 arg1, u8 arg2) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -1177,9 +1239,10 @@ void fn_1_F408(s16 arg0, s16 arg1, u8 arg2) { } } -void fn_1_F478(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { - unkStruct8* temp_r31; - unkStruct8Sub* var_r30; +void fn_1_F478(s16 arg0, s16 arg1, u8 arg2, u8 arg3) +{ + unkStruct8 *temp_r31; + unkStruct8Sub *var_r30; if (arg0 != 0) { temp_r31 = &lbl_1_bss_F0.unk10[arg0]; @@ -1190,10 +1253,11 @@ void fn_1_F478(s16 arg0, s16 arg1, u8 arg2, u8 arg3) { } } -void fn_1_F4F0(s16 arg0, u8 arg1) { - unkStruct8Sub* volatile sp8; +void fn_1_F4F0(s16 arg0, u8 arg1) +{ + unkStruct8Sub *volatile sp8; s32 var_r29; - unkStruct8* temp_r31; + unkStruct8 *temp_r31; s32 var_r30; if (arg0 != 0) { @@ -1205,4 +1269,4 @@ void fn_1_F4F0(s16 arg0, u8 arg1) { } } } -} \ No newline at end of file +} diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index 4ecd2f94..70955a13 100644 --- a/src/REL/m409Dll/main.c +++ b/src/REL/m409Dll/main.c @@ -1,23 +1,22 @@ #include "REL/m409Dll.h" -#include "rel_sqrt_consts.h" -#include "math.h" #include "ext_math.h" -#include "game/hsfman.h" -#include "game/objsub.h" #include "game/audio.h" -#include "game/wipe.h" -#include "game/minigame_seq.h" -#include "game/sprite.h" -#include "game/pad.h" -#include "game/hsfmotion.h" #include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" // bss -Process* lbl_1_bss_E8; +Process *lbl_1_bss_E8; s16 lbl_1_bss_E4; -omObjData* lbl_1_bss_E0; -omObjData* lbl_1_bss_DC; +omObjData *lbl_1_bss_E0; +omObjData *lbl_1_bss_DC; Vec lbl_1_bss_D0; unkStruct4 lbl_1_bss_40[4]; s32 lbl_1_bss_3C; @@ -40,29 +39,23 @@ s8 lbl_1_bss_0; // data Vec lbl_1_data_0 = { 800.0f, 1300.0f, 1000.0f }; Vec lbl_1_data_C = { 0.0f, 0.0f, 0.0f }; -unkStruct2 lbl_1_data_18 = { - { 0xFF, 0xFF, 0xFF, 0xFF }, - { 10.0f, 45.0f, 0.0f } -}; +unkStruct2 lbl_1_data_18 = { { 0xFF, 0xFF, 0xFF, 0xFF }, { 10.0f, 45.0f, 0.0f } }; Vec lbl_1_data_28 = { 1300.0f, 2500.0f, 1300.0f }; Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; Vec lbl_1_data_40 = { 0.0f, 0.0f, -1200.0f }; -unkStruct lbl_1_data_4C[4] = { - { 469.8f, { 225.0f, 184.0f, -1358.0f }, { 10.62f, -109.0f, 0.0f } }, - { 1800.0f, { 0.0f, 300.0f, -1316.0f }, { -20.38f, 0.0f, 0.0f } }, - { 2209.82f, { 0.0f, 478.0f, -1316.0f }, { 4.62f, 0.0f, 0.0f } }, - { 2059.82f, { 0.0f, 528.0f, -1316.0f }, { 10.62f, 0.0f, 0.0f } } -}; +unkStruct lbl_1_data_4C[4] + = { { 469.8f, { 225.0f, 184.0f, -1358.0f }, { 10.62f, -109.0f, 0.0f } }, { 1800.0f, { 0.0f, 300.0f, -1316.0f }, { -20.38f, 0.0f, 0.0f } }, + { 2209.82f, { 0.0f, 478.0f, -1316.0f }, { 4.62f, 0.0f, 0.0f } }, { 2059.82f, { 0.0f, 528.0f, -1316.0f }, { 10.62f, 0.0f, 0.0f } } }; u32 lbl_1_data_BC = 0xFFFFFFFF; s32 lbl_1_data_C0 = -1; - -void ObjectSetup(void) { +void ObjectSetup(void) +{ Vec sp2C; Vec sp20; Vec sp14; Vec sp8; - LightData* temp_r31; + LightData *temp_r31; Hu3DLightAllKill(); lbl_1_bss_E4 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_18.unk0); @@ -103,31 +96,34 @@ void ObjectSetup(void) { fn_1_67E0(lbl_1_bss_E8); } -void fn_1_434(omObjData* object) { +void fn_1_434(omObjData *object) +{ if ((omSysExitReq != 0) || (lbl_1_bss_0 != 0)) { HuAudFXListnerKill(); fn_1_5F5C(lbl_1_bss_E0->model[0]); fn_1_5F5C(lbl_1_bss_E0->model[1]); - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); MGSeqKillAll(); object->func = fn_1_4DC; } } -void fn_1_4DC(omObjData* object) { +void fn_1_4DC(omObjData *object) +{ if ((WipeStatGet() == 0) && (MGSeqDoneCheck() != 0)) { fn_1_6900(); omOvlReturnEx(1, 1); } } -s8 fn_1_524(void) { +s8 fn_1_524(void) +{ Vec sp8; f32 temp_f29; f32 var_f30; f32 temp_f31; s8 var_r30; - unkStruct* var_r31; + unkStruct *var_r31; var_r31 = lbl_1_data_4C; var_r30 = 0; @@ -136,7 +132,7 @@ s8 fn_1_524(void) { var_r30 = 1; } var_f30 = lbl_1_bss_2 / 300.0f; - temp_f31 = (sin((M_PI * (90.0f * var_f30)) / 180.0) * sin((M_PI * (90.0f * var_f30)) / 180.0)); + temp_f31 = sind(90.0f * var_f30) * sind(90.0f * var_f30); CZoom = fn_1_4120(var_r31[0].zoom, var_r31[1].zoom, var_r31[2].zoom, temp_f31); Center.x = fn_1_4120(var_r31[0].center.x, var_r31[1].center.x, var_r31[2].center.x, temp_f31); Center.y = fn_1_4120(var_r31[0].center.y, var_r31[1].center.y, var_r31[2].center.y, temp_f31); @@ -145,7 +141,7 @@ s8 fn_1_524(void) { CRot.y = fn_1_4120(var_r31[0].rot.y, var_r31[1].rot.y, var_r31[2].rot.y, temp_f31); CRot.z = fn_1_4120(var_r31[0].rot.z, var_r31[1].rot.z, var_r31[2].rot.z, temp_f31); if (var_f30 > 0.65f) { - Hu3DModelAttrSet(lbl_1_bss_DC->model[1], 1U); + Hu3DModelAttrSet(lbl_1_bss_DC->model[1], HU3D_ATTR_DISPOFF); } temp_f29 = var_r31[0].rot.x + (-var_r31[0].rot.x * temp_f31); Hu3DModelRotSet(lbl_1_bss_DC->model[2], 0.2f * temp_f29, 0.85f * CRot.y, 0.0f); @@ -161,18 +157,19 @@ s8 fn_1_524(void) { Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkC, -0.0001f - (0.005f * temp_f31), 0.0f, 0.0f); Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkE, -0.0002f - (0.005f * temp_f31), 0.0f, 0.0f); Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unk10, -0.0003f - (0.005f * temp_f31), 0.0f, 0.0f); - sp8.x = -(sin((M_PI * CRot.y) / 180.0) * cosd(CRot.x)); - sp8.y = sin((M_PI * CRot.x) / 180.0); + sp8.x = -(sind(CRot.y) * cosd(CRot.x)); + sp8.y = sind(CRot.x); sp8.z = -(cosd(CRot.y) * cosd(CRot.x)); HuAudFXListnerUpdate(&Hu3DCamera->pos, &sp8); return var_r30; } -s8 fn_1_B80(void) { +s8 fn_1_B80(void) +{ f32 temp_f30; f32 temp_f31; s8 var_r30; - unkStruct* var_r31; + unkStruct *var_r31; var_r31 = &lbl_1_data_4C[2]; var_r30 = 0; @@ -181,7 +178,7 @@ s8 fn_1_B80(void) { var_r30 = 1; } temp_f30 = lbl_1_bss_4 / 60.0f; - temp_f31 = (sin((M_PI * (90.0f * temp_f30)) / 180.0) * sin((M_PI * (90.0f * temp_f30)) / 180.0)); + temp_f31 = sind(90.0f * temp_f30) * sind(90.0f * temp_f30); CZoom = var_r31[0].zoom + (temp_f31 * (var_r31[1].zoom - var_r31[0].zoom)); Center.x = var_r31[0].center.x + (temp_f31 * (var_r31[1].center.x - var_r31[0].center.x)); Center.y = var_r31[0].center.y + (temp_f31 * (var_r31[1].center.y - var_r31[0].center.y)); @@ -192,18 +189,19 @@ s8 fn_1_B80(void) { return var_r30; } -void fn_1_DDC(omObjData* object) { - s16* var_r29; - AnimData* var_r30; - - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 6, 0x10000000); - var_r29 = (s16*)object->data; +void fn_1_DDC(omObjData *object) +{ + s16 *var_r29; + AnimData *var_r30; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 6, MEMORY_DEFAULT_NUM); + var_r29 = (s16 *)object->data; var_r29[0] = 1; - var_r30 = HuSprAnimRead(HuDataReadNum(0x28000D, 0x10000000)); + var_r30 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M409, 0x0D), MEMORY_DEFAULT_NUM)); object->model[0] = fn_1_5A18(var_r30, 0x800, 10.0f, 0x40, 0x40); fn_1_5FBC(object->model[0], fn_1_5408); Hu3DModelLayerSet(object->model[0], 5); - var_r30 = HuSprAnimRead(HuDataReadNum(0x28000E, 0x10000000)); + var_r30 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M409, 0x0E), MEMORY_DEFAULT_NUM)); object->model[1] = fn_1_5A18(var_r30, 0x400, 2.0f, 0, 0); fn_1_5FBC(object->model[1], fn_1_55E0); fn_1_5FF4(object->model[1], 1); @@ -212,22 +210,23 @@ void fn_1_DDC(omObjData* object) { object->func = fn_1_F70; } -void fn_1_F70(omObjData* object) { - s16* sp8; +void fn_1_F70(omObjData *object) +{ + s16 *sp8; s16 temp_r3; s16 temp_r3_2; s32 var_r31; - sp8 = (s16*)object->data; + sp8 = (s16 *)object->data; switch (fn_1_2454(7)) { case 1: if (lbl_1_bss_6 == 0) { lbl_1_bss_6 = 1; - WipeCreate(1, 0, 0x3C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); } if (WipeStatGet() == 0) { fn_1_2414(7, 2); - + for (var_r31 = 0; var_r31 < 4; var_r31++) { omVibrate(var_r31, 0xC8, 6, 6); } @@ -259,9 +258,10 @@ void fn_1_F70(omObjData* object) { } } -s8 fn_1_10E8(omObjData* object) { +s8 fn_1_10E8(omObjData *object) +{ Vec sp8; - ModelData* temp_r31; + ModelData *temp_r31; f32 var_f26; f32 var_f27; f32 temp_f29; @@ -269,21 +269,21 @@ s8 fn_1_10E8(omObjData* object) { f32 temp_f30; f32 var_f31; s8 var_r29; - unkStruct3* temp_r30; + unkStruct3 *temp_r30; temp_r31 = &Hu3DData[lbl_1_bss_DC->model[4]]; - temp_r30 = (unkStruct3*)object->data; + temp_r30 = (unkStruct3 *)object->data; if (lbl_1_bss_A != 0) { var_r29 = fn_1_524(); } - switch (lbl_1_bss_8) { /* irregular */ + switch (lbl_1_bss_8) { /* irregular */ case -1: if ((HuPadBtnDown[0] & 0x100) != 0) { lbl_1_bss_8 = 0; } break; case 0: - Hu3DModelAttrReset(lbl_1_bss_DC->model[1], 0x40000002); + Hu3DModelAttrReset(lbl_1_bss_DC->model[1], HU3D_MOTATTR_PAUSE); if (lbl_1_bss_C == 0.0f) { fn_1_3840(); sp8.x = 1520.0f; @@ -296,23 +296,24 @@ s8 fn_1_10E8(omObjData* object) { if (lbl_1_bss_C >= 1.0f) { lbl_1_bss_C = 1.0f; lbl_1_bss_8 = 0x63; - } else if (lbl_1_bss_C > 0.2f) { + } + else if (lbl_1_bss_C > 0.2f) { lbl_1_bss_A = 1; } - var_f31 = sin((M_PI * (90.0f * lbl_1_bss_C)) / 180.0); + var_f31 = sind(90.0f * lbl_1_bss_C); var_f27 = 1520.0f; var_f26 = -1030.0f; temp_f30 = var_f27 + (var_f31 * (var_f26 - var_f27)); Hu3DModelPosSet(lbl_1_bss_DC->model[4], temp_f30, 0.0f, -1200.0f); Hu3DModelPosSet(lbl_1_bss_DC->model[1], temp_f30, 0.0f, -1200.0f); - if ((lbl_1_data_BC + 0x10000) != 0xFFFF) { + if (lbl_1_data_BC != ~0) { sp8.x = temp_f30; sp8.y = 0.0f; sp8.z = -1200.0f; HuAudFXEmiterUpDate(lbl_1_data_BC, &sp8); } var_f31 = 1.2f * lbl_1_bss_C; - if ((var_f31 >= 1.0f) && ((lbl_1_data_BC + 0x10000) != 0xFFFF)) { + if ((var_f31 >= 1.0f) && lbl_1_data_BC != ~0) { HuAudFXEmiterPlay(0x555, &sp8); sp8.x += 200.0f; HuAudFXEmiterPlay(0x55E, &sp8); @@ -321,13 +322,15 @@ s8 fn_1_10E8(omObjData* object) { } if (var_f31 >= 1.0f) { var_f31 = 0.0f; - } else { - var_f31 = sin((M_PI * (90.0f + (90.0f * var_f31))) / 180.0); + } + else { + var_f31 = sind(90.0f + 90.0f * var_f31); } Hu3DMotionSpeedSet(lbl_1_bss_DC->model[4], 2.0f * var_f31); if (lbl_1_bss_C > 0.5f) { var_f31 = 2.0f * (9.0f * (1.0f - lbl_1_bss_C)); - } else { + } + else { var_f31 = 9.0f; } fn_1_44F0(lbl_1_bss_E0->model[0], 0.0f, 0.0f, 0.0f, 0, var_f31); @@ -377,14 +380,15 @@ s8 fn_1_10E8(omObjData* object) { return 0; } -s8 fn_1_1B74(omObjData* object) { +s8 fn_1_1B74(omObjData *object) +{ f32 temp_f30; f32 temp_f31; s16 temp_r27; s32 temp_r28; - unkStruct4* temp_r30; + unkStruct4 *temp_r30; - temp_r30 = (unkStruct4*)object->data; + temp_r30 = (unkStruct4 *)object->data; switch (lbl_1_bss_8) { case 0: temp_r30->unk2 = MGSeqCreate(3, 1); @@ -409,7 +413,8 @@ s8 fn_1_1B74(omObjData* object) { GWPlayerCoinWinAdd(temp_r30->unk4, 10); temp_r30->unk2 = MGSeqCreate(5, 3, GWPlayerCfg[temp_r30->unk4].character, -1, -1, -1); HuAudSStreamPlay(1); - } else { + } + else { temp_r30->unk2 = MGSeqCreate(3, 2); HuAudSStreamPlay(4); } @@ -433,8 +438,9 @@ s8 fn_1_1B74(omObjData* object) { return 0; } -void fn_1_2098(omObjData* object) { - ModelData* temp_r31; +void fn_1_2098(omObjData *object) +{ + ModelData *temp_r31; f32 var_f28; f32 var_f29; f32 var_f31; @@ -446,10 +452,10 @@ void fn_1_2098(omObjData* object) { lbl_1_bss_18 += 0.008f; if (lbl_1_bss_18 >= 1.0f) { fn_1_2414(0x60, 0x40); - Hu3DModelAttrSet(lbl_1_bss_DC->model[4], 1U); + Hu3DModelAttrSet(lbl_1_bss_DC->model[4], HU3D_ATTR_DISPOFF); lbl_1_bss_18 = 1.0f; } - var_f31 = sin((M_PI * (90.0f * lbl_1_bss_18)) / 180.0); + var_f31 = sind(90.0f * lbl_1_bss_18); var_f29 = -1030.0f; var_f28 = -1880.0f; var_f30 = var_f29 + (var_f31 * (var_f28 - var_f29)); @@ -463,46 +469,51 @@ void fn_1_2098(omObjData* object) { } } -void fn_1_23EC(s16 arg0) { - unkStruct4* var_r31; +void fn_1_23EC(s16 arg0) +{ + unkStruct4 *var_r31; - var_r31 = (unkStruct4*)lbl_1_bss_E0->data; + var_r31 = (unkStruct4 *)lbl_1_bss_E0->data; var_r31->unk4 = arg0; } -void fn_1_2414(u16 arg0, u16 arg1) { - unkStruct4* var_r31; +void fn_1_2414(u16 arg0, u16 arg1) +{ + unkStruct4 *var_r31; - var_r31 = (unkStruct4*)lbl_1_bss_E0->data; + var_r31 = (unkStruct4 *)lbl_1_bss_E0->data; var_r31->unk0 &= ~arg0; var_r31->unk0 |= arg1; } -u16 fn_1_2454(u16 arg0) { - unkStruct4* var_r31; +u16 fn_1_2454(u16 arg0) +{ + unkStruct4 *var_r31; - var_r31 = (unkStruct4*)lbl_1_bss_E0->data; + var_r31 = (unkStruct4 *)lbl_1_bss_E0->data; return var_r31->unk0 & arg0; } -static inline void unkInline(unkStruct4* var_r31, s16 var_r29, s16* var_r28, s16 arg3) { - var_r31[var_r29].unk2 = Hu3DModelCreateFile(0x280002); - var_r31[var_r29].unk4 = Hu3DModelCreateFile(0x280003); - Hu3DModelAttrSet(var_r31[var_r29].unk2, 0x40000001); - Hu3DModelAttrSet(var_r31[var_r29].unk4, 0x40000002); +static inline void unkInline(unkStruct4 *var_r31, s16 var_r29, s16 *var_r28, s16 arg3) +{ + var_r31[var_r29].unk2 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x02)); + var_r31[var_r29].unk4 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x03)); + Hu3DModelAttrSet(var_r31[var_r29].unk2, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(var_r31[var_r29].unk4, HU3D_MOTATTR_PAUSE); if (arg3) { - Hu3DModelAttrSet(var_r31[var_r29].unk2, 0x00000001); - Hu3DModelAttrSet(var_r31[var_r29].unk4, 0x00000001); + Hu3DModelAttrSet(var_r31[var_r29].unk2, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31[var_r29].unk4, HU3D_ATTR_DISPOFF); } var_r31[var_r29].unk6 = Hu3DModelCreateFile(0x2001C); - var_r31[var_r29].unk8 = Hu3DJointMotion(var_r31[var_r29].unk6, HuDataSelHeapReadNum(0x28000B, 0x10000000, HEAP_DATA)); - var_r31[var_r29].unkA = Hu3DJointMotion(var_r31[var_r29].unk6, HuDataSelHeapReadNum(0x28000C, 0x10000000, HEAP_DATA)); - Hu3DModelAttrSet(var_r31[var_r29].unk6, 0x40000001); + var_r31[var_r29].unk8 = Hu3DJointMotionFile(var_r31[var_r29].unk6, DATA_MAKE_NUM(DATADIR_M409, 11)); + var_r31[var_r29].unkA = Hu3DJointMotionFile(var_r31[var_r29].unk6, DATA_MAKE_NUM(DATADIR_M409, 12)); + Hu3DModelAttrSet(var_r31[var_r29].unk6, HU3D_MOTATTR_LOOP); Hu3DMotionSet(var_r31[var_r29].unk6, var_r31[var_r29].unk8); var_r31[var_r29].unkC = var_r29 + 3; if (arg3) { *var_r28 += (((rand8() << 8) | rand8()) % 4) + 2; - } else { + } + else { *var_r28 = 2; } fn_1_3988(&var_r31[var_r29], *var_r28, var_r29); @@ -510,19 +521,20 @@ static inline void unkInline(unkStruct4* var_r31, s16 var_r29, s16* var_r28, s16 Hu3DModelPosSet(var_r31[var_r29].unk4, var_r31[var_r29].unk18, 0.0f, -1200.0f); } -void fn_1_2484(omObjData* object) { +void fn_1_2484(omObjData *object) +{ s16 var_r28; // ! - uninitialized s16 var_r29; - unkStruct4* var_r31; + unkStruct4 *var_r31; var_r31 = &lbl_1_bss_40[0]; object->stat |= 0x100; - object->model[0] = Hu3DModelCreateFile(0x280000); - object->model[5] = Hu3DModelCreateFile(0x280008); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x00)); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x08)); Hu3DModelLayerSet(object->model[0], 2); Hu3DModelLayerSet(object->model[5], 2); - object->model[2] = Hu3DModelCreateFile(0x280005); - object->model[3] = Hu3DModelCreateFile(0x280006); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x05)); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x06)); Hu3DModelScaleSet(object->model[2], 1.1f, 1.0f, 1.0f); Hu3DModelScaleSet(object->model[3], 1.1f, 1.0f, 1.0f); Hu3DModelRotSet(object->model[2], 0.2f * lbl_1_data_4C->rot.x, 0.85f * lbl_1_data_4C->rot.y, 0.0f); @@ -533,35 +545,35 @@ void fn_1_2484(omObjData* object) { Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkE, -0.0002f, 0.0f, 0.0f); lbl_1_bss_24.unk10 = Hu3DTexScrollCreate(object->model[3], "cr_kumo3"); Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unk10, -0.0003f, 0.0f, 0.0f); - var_r29 = Hu3DModelCreateFile(0x28000A); + var_r29 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x0A)); Hu3DModelLayerSet(var_r29, 0); - object->model[6] = Hu3DModelCreateFile(0x280007); - Hu3DModelAttrSet(object->model[6], 2); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x07)); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_ZWRITE_OFF); Hu3DModelScaleSet(object->model[6], 1.1f, 1.0f, 1.0f); Hu3DModelRotSet(object->model[6], 0.2f * lbl_1_data_4C->rot.x, 0.85f * lbl_1_data_4C->rot.y, 0.0f); Hu3DModelLayerSet(object->model[6], 1); lbl_1_bss_24.unk12 = Hu3DTexScrollCreate(object->model[6], "bg"); lbl_1_bss_24.unk14 = 0.0f; - object->model[4] = Hu3DModelCreateFile(0x280001); - object->model[1] = Hu3DModelCreateFile(0x280004); - Hu3DModelAttrSet(object->model[4], 0x40000001); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x01)); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x04)); + Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP); Hu3DModelPosSet(object->model[4], 1660.0f, 0.0f, -1200.0f); Hu3DModelPosSet(object->model[1], 1660.0f, 0.0f, -1200.0f); Hu3DModelLayerSet(object->model[1], 6); - Hu3DModelAttrSet(object->model[1], 0x40000002); - + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_PAUSE); + unkInline(var_r31, 0, &var_r28, 0); for (var_r29 = 1; var_r29 < 4; var_r29++) { unkInline(var_r31, var_r29, &var_r28, 1); } - + lbl_1_bss_24.unk0 = 0; lbl_1_bss_24.unk1 = 0; lbl_1_bss_24.unk8 = 0; lbl_1_bss_24.unkA = 0xB4; Hu3DModelShadowMapSet(object->model[0]); Hu3DModelShadowSet(object->model[4]); - + for (var_r29 = 0; var_r29 < 4; var_r29++) { Hu3DModelShadowSet(var_r31[var_r29].unk2); Hu3DModelShadowSet(var_r31[var_r29].unk4); @@ -570,12 +582,13 @@ void fn_1_2484(omObjData* object) { object->func = fn_1_2DCC; } -void fn_1_2DCC(omObjData* object) { +void fn_1_2DCC(omObjData *object) +{ u16 spE; u16 spC; u16 spA; u16 sp8; - ModelData* temp_r30; + ModelData *temp_r30; f32 temp_f29; f32 var_f31; f32 var_f30; @@ -586,7 +599,7 @@ void fn_1_2DCC(omObjData* object) { s16 var_r29; s32 temp_r16; s16 var_r18; - unkStruct4* var_r31; + unkStruct4 *var_r31; if ((lbl_1_bss_24.unk0 == 0) || (fn_1_2454(0x18) == 0x18)) { if (lbl_1_bss_24.unk1 != 0) { @@ -595,40 +608,41 @@ void fn_1_2DCC(omObjData* object) { case 1: if (++lbl_1_bss_24.unk8 == (lbl_1_bss_24.unkA - 5)) { Hu3DMotionSet(var_r31->unk6, var_r31->unkA); - Hu3DModelAttrReset(var_r31->unk6, 0x40000001); + Hu3DModelAttrReset(var_r31->unk6, HU3D_MOTATTR_LOOP); lbl_1_bss_3C++; break; } if (lbl_1_bss_24.unk8 > lbl_1_bss_24.unkA) { lbl_1_bss_24.unk8 = 0; lbl_1_bss_24.unkA = 0xF; - Hu3DModelAttrReset(var_r31->unk4, 0x40000002); + Hu3DModelAttrReset(var_r31->unk4, HU3D_MOTATTR_PAUSE); lbl_1_bss_24.unk1 = 2; HuAudFXPlay(0x55B); HuAudFXPlay(0x55D); } - break; - case 2: - temp_f29 = Hu3DMotionMaxTimeGet(var_r31->unk4); - if (Hu3DMotionTimeGet(var_r31->unk4) >= temp_f29) { - Hu3DMotionSet(var_r31->unk6, var_r31->unk8); - Hu3DModelAttrSet(var_r31->unk6, 0x40000001); - Hu3DModelAttrSet(var_r31->unk4, 0x40000002); - fn_1_2414(24, 8); - lbl_1_bss_24.unk1 = 0; - } - break; + break; + case 2: + temp_f29 = Hu3DMotionMaxTimeGet(var_r31->unk4); + if (Hu3DMotionTimeGet(var_r31->unk4) >= temp_f29) { + Hu3DMotionSet(var_r31->unk6, var_r31->unk8); + Hu3DModelAttrSet(var_r31->unk6, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(var_r31->unk4, HU3D_MOTATTR_PAUSE); + fn_1_2414(24, 8); + lbl_1_bss_24.unk1 = 0; + } + break; } - } else { + } + else { var_r31 = lbl_1_bss_24.unk4; switch (fn_1_2454(0x18)) { case 16: Hu3DMotionSet(var_r31->unk6, var_r31->unkA); Hu3DMotionTimeSet(var_r31->unk6, Hu3DMotionMaxTimeGet(var_r31->unk6)); Hu3DMotionSpeedSet(var_r31->unk6, -1.0f); - Hu3DModelAttrReset(var_r31->unk6, 0x40000001); + Hu3DModelAttrReset(var_r31->unk6, HU3D_MOTATTR_LOOP); Hu3DMotionSpeedSet(var_r31->unk4, -1.0f); - Hu3DModelAttrReset(var_r31->unk4, 0x40000002); + Hu3DModelAttrReset(var_r31->unk4, HU3D_MOTATTR_PAUSE); fn_1_2414(24, 0x18); HuAudFXPlay(0x55C); HuAudFXPlay(0x55D); @@ -637,37 +651,40 @@ void fn_1_2DCC(omObjData* object) { if (Hu3DMotionTimeGet(var_r31->unk4) <= 0.0f) { Hu3DMotionSet(var_r31->unk6, var_r31->unk8); Hu3DMotionSpeedSet(var_r31->unk6, 1.0f); - Hu3DModelAttrSet(var_r31->unk6, 0x40000001); + Hu3DModelAttrSet(var_r31->unk6, HU3D_MOTATTR_LOOP); Hu3DMotionSpeedSet(var_r31->unk4, 1.0f); - Hu3DModelAttrSet(var_r31->unk4, 0x40000002); + Hu3DModelAttrSet(var_r31->unk4, HU3D_MOTATTR_PAUSE); fn_1_2414(24, 0); } break; } } - } else { + } + else { if (fn_1_2454(7) == 2) { var_f30 = 0.004f; - } else { + } + else { var_f30 = 0.008f; } var_r29 = 0; var_r23 = 0; var_r31 = lbl_1_bss_40; - - for (;var_r29 < 4; var_r29++, var_r31++) { + + for (; var_r29 < 4; var_r29++, var_r31++) { if ((s8)var_r31->unk0b == 0) { var_r23++; - } else { + } + else { if (var_r31->unkE-- <= 0) { temp_r30 = &Hu3DData[var_r31->unk2]; if ((var_r31->unkC < 2) && (lbl_1_bss_3C < 0xBU)) { - Hu3DModelAttrReset(var_r31->unk2, 1U); - Hu3DModelAttrReset(var_r31->unk4, 1U); - Hu3DModelAttrReset(var_r31->unk6, 1U); + Hu3DModelAttrReset(var_r31->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk6, HU3D_ATTR_DISPOFF); } var_r31->unk10 += var_f30; - var_f31 = sin((M_PI * (90.0f * var_r31->unk10)) / 180.0); + var_f31 = sind(90.0f * var_r31->unk10); if (var_r31->unk10 >= 1.0f) { var_f31 = 1.0f; var_r31->unk10 = var_f31; @@ -677,14 +694,15 @@ void fn_1_2DCC(omObjData* object) { } var_r27 = var_r31->unkC - 1; if (var_r27 == -3) { - Hu3DModelAttrSet(var_r31->unk2, 1); - Hu3DModelAttrSet(var_r31->unk4, 1); - Hu3DModelAttrSet(var_r31->unk6, 1); + Hu3DModelAttrSet(var_r31->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk6, HU3D_ATTR_DISPOFF); var_r31->unkC = 2; var_r27 = 1; } fn_1_3988(var_r31, 0, var_r27); - } else { + } + else { temp_r30->pos.x = var_r31->unk18 + (var_f31 * (var_r31->unk1C - var_r31->unk18)); } if (var_f31 > 0.1f) { @@ -699,8 +717,10 @@ void fn_1_2DCC(omObjData* object) { if (++lbl_1_bss_1C > (40.0f * var_f31)) { lbl_1_bss_1C = 0.0f; var_f31 = 1.0f - var_f31; - fn_1_4FFC(lbl_1_bss_E0->model[1], 130.0f + temp_r30->pos.x, 20.0f + temp_r30->pos.y, 95.0f + temp_r30->pos.z, (u8)(2.0f * var_f31)); - fn_1_4FFC(lbl_1_bss_E0->model[1], 630.0f + temp_r30->pos.x, 20.0f + temp_r30->pos.y, 95.0f + temp_r30->pos.z, (u8)var_f31); + fn_1_4FFC(lbl_1_bss_E0->model[1], 130.0f + temp_r30->pos.x, 20.0f + temp_r30->pos.y, 95.0f + temp_r30->pos.z, + (u8)(2.0f * var_f31)); + fn_1_4FFC( + lbl_1_bss_E0->model[1], 630.0f + temp_r30->pos.x, 20.0f + temp_r30->pos.y, 95.0f + temp_r30->pos.z, (u8)var_f31); } if (var_r31->unk10 < (0.7f + var_f30)) { HuAudFXEmiterPlay(0x55E, &temp_r30->pos); @@ -708,7 +728,7 @@ void fn_1_2DCC(omObjData* object) { } Hu3DModelPosSet(var_r31->unk6, 70.0f + temp_r30->pos.x, 290.0f, -1200.0f); Hu3DData[var_r31->unk4].pos.x = temp_r30->pos.x; - var_f31 = (0.800000011920929 * sin((M_PI * (180.0f * var_r31->unk10)) / 180.0)); + var_f31 = 0.8f * sind(180.0f * var_r31->unk10); Hu3DMotionSpeedSet(var_r31->unk2, var_f31); } } @@ -716,13 +736,13 @@ void fn_1_2DCC(omObjData* object) { if (var_r23 == 4) { var_r22 = 0x63; lbl_1_bss_24.unk0 = 0; - + for (var_r29 = 0, var_r31 = &lbl_1_bss_40[0]; var_r29 < 4; var_r29++, var_r31++) { if (var_r31->unkC < var_r22) { var_r22 = var_r31->unkC; var_r27 = var_r29; } - + for (var_r28 = 0, var_r31->unk20 = NULL; var_r28 < 4; var_r28++) { if ((var_r31->unkC + 1) == lbl_1_bss_40[var_r28].unkC) { var_r31->unk20 = &lbl_1_bss_40[var_r28]; @@ -734,7 +754,7 @@ void fn_1_2DCC(omObjData* object) { loop: if (var_r31->unk20) { - var_r31->unk20->unkE = 2 + (((rand8() << 8) | rand8()) % 4) + var_r31->unkE ; + var_r31->unk20->unkE = 2 + (((rand8() << 8) | rand8()) % 4) + var_r31->unkE; var_r31 = var_r31->unk20; goto loop; } @@ -743,17 +763,18 @@ void fn_1_2DCC(omObjData* object) { } } -void fn_1_3840(void) { +void fn_1_3840(void) +{ s16 var_r31; if ((lbl_1_bss_24.unk0 == 0) && (fn_1_2454(7) != 4)) { lbl_1_bss_24.unk0 = 1; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { lbl_1_bss_40[var_r31].unk0b = 1; } if (++lbl_1_bss_20 == 2) { - + for (var_r31 = 0; var_r31 < 4; var_r31++) { lbl_1_bss_40[var_r31].unkE += 3; } @@ -763,7 +784,8 @@ void fn_1_3840(void) { } } -void fn_1_3988(unkStruct4* arg0, s16 arg1, s16 arg2) { +void fn_1_3988(unkStruct4 *arg0, s16 arg1, s16 arg2) +{ arg0->unk0b = 0; arg0->unkE = arg1; arg0->unk10 = 0.0f; @@ -771,16 +793,17 @@ void fn_1_3988(unkStruct4* arg0, s16 arg1, s16 arg2) { arg0->unk1C = ((850.0f * arg2) - 370.0f); arg0->unkC = arg2; if ((arg0->unkC >= 2) && (fn_1_2454(7) != 2)) { - Hu3DModelAttrSet(arg0->unk2, 1U); - Hu3DModelAttrSet(arg0->unk4, 1U); - Hu3DModelAttrSet(arg0->unk6, 1U); + Hu3DModelAttrSet(arg0->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk6, HU3D_ATTR_DISPOFF); } } -s32 fn_1_3AD8(s32 arg0, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 argD) { +s32 fn_1_3AD8(s32 arg0, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 argD) +{ f32 sp1C; f32 temp; - ModelData* temp_r31; + ModelData *temp_r31; f32 temp_f31; f32 temp_f30; f32 temp_f29; @@ -788,11 +811,12 @@ s32 fn_1_3AD8(s32 arg0, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 ar f32 temp_f27; f32 temp_f26; s16 var_r29; - unkStruct4* var_r30; - + unkStruct4 *var_r30; + var_r30 = lbl_1_bss_24.unk4; - if (!var_r30) return; - + if (!var_r30) + return; + for (var_r29 = 0; var_r29 < 2; var_r29++) { temp_r31 = &Hu3DData[var_r30->unk6]; temp_f31 = temp_r31->pos.x; @@ -801,17 +825,21 @@ s32 fn_1_3AD8(s32 arg0, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 ar temp_f28 = arg8 + argB; temp_f27 = arg9 + argC; temp_f26 = argA + argD; - temp = sqrtf((temp_f28 - temp_f31) * (temp_f28 - temp_f31) + (temp_f27 - temp_f30) * (temp_f27 - temp_f30) + (temp_f26 - temp_f29) * (temp_f26 - temp_f29)); + temp = sqrtf((temp_f28 - temp_f31) * (temp_f28 - temp_f31) + (temp_f27 - temp_f30) * (temp_f27 - temp_f30) + + (temp_f26 - temp_f29) * (temp_f26 - temp_f29)); if (temp < 50.0f) { return 1; } - sp1C = -((argA * argD) + (((arg9 * argC) + (((-temp_f31 * argB) + (arg8 * argB)) - (temp_f30 * argC))) - (temp_f29 * argD))) / ((argD * argD) + ((argB * argB) + (argC * argC))); - if (sp1C >= 1.0f) continue; - + sp1C = -((argA * argD) + (((arg9 * argC) + (((-temp_f31 * argB) + (arg8 * argB)) - (temp_f30 * argC))) - (temp_f29 * argD))) + / ((argD * argD) + ((argB * argB) + (argC * argC))); + if (sp1C >= 1.0f) + continue; + temp_f28 = arg8 + (argB * sp1C); temp_f27 = arg9 + (argC * sp1C); temp_f26 = argA + (argD * sp1C); - temp = sqrtf((temp_f28 - temp_f31) * (temp_f28 - temp_f31) + (temp_f27 - temp_f30) * (temp_f27 - temp_f30) + (temp_f26 - temp_f29) * (temp_f26 - temp_f29)); + temp = sqrtf((temp_f28 - temp_f31) * (temp_f28 - temp_f31) + (temp_f27 - temp_f30) * (temp_f27 - temp_f30) + + (temp_f26 - temp_f29) * (temp_f26 - temp_f29)); if (temp < 50.0f) { return 1; } @@ -821,7 +849,8 @@ s32 fn_1_3AD8(s32 arg0, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 ar return 0; } -void fn_1_40A4(Mtx arg0, Mtx arg1) { +void fn_1_40A4(Mtx arg0, Mtx arg1) +{ arg1[0][0] = arg0[0][0]; arg1[1][0] = arg0[0][1]; arg1[2][0] = arg0[0][2]; @@ -836,14 +865,16 @@ void fn_1_40A4(Mtx arg0, Mtx arg1) { arg1[2][3] = 0.0f; } -f32 fn_1_4120(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { +f32 fn_1_4120(f32 arg0, f32 arg1, f32 arg2, f32 arg3) +{ f32 temp_f31; temp_f31 = 1.0f - arg3; return (arg2 * (arg3 * arg3)) + ((arg0 * (temp_f31 * temp_f31)) + (arg1 * (2.0f * temp_f31 * arg3))); } -void fn_1_417C(void) { +void fn_1_417C(void) +{ if ((HuPadBtnDown[0] & 0x40) != 0) { lbl_1_bss_21 ^= 1; @@ -864,7 +895,8 @@ void fn_1_417C(void) { Center.x += HuPadSubStkX[0]; if ((HuPadBtn[0] & 0x20) != 0) { Center.y += HuPadSubStkY[0]; - } else { + } + else { Center.z += HuPadSubStkY[0]; } if ((HuPadBtn[0] & 0x400) != 0) { @@ -881,26 +913,27 @@ void fn_1_417C(void) { } } -void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2) { +void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2) +{ Vec sp20; Vec sp14; - unkStruct4* sp10; + unkStruct4 *sp10; GXColor spA; - ModelData* temp_r30; + ModelData *temp_r30; f32 temp_f31; s16 var_r29; - unkStruct5* var_r31; + unkStruct5 *var_r31; temp_r30 = &Hu3DData[lbl_1_bss_DC->model[4]]; - sp10 = (unkStruct4*)temp_r30->unk_120; + sp10 = (unkStruct4 *)temp_r30->unk_120; if (arg1 == 0) { arg8 = 150.0f + temp_r30->pos.x; arg9 = 360.0f + temp_r30->pos.y; argA = temp_r30->pos.z; } - + for (var_r29 = 0; var_r29 < arg2; var_r29++) { - switch (arg1) { /* irregular */ + switch (arg1) { /* irregular */ case 0: sp20.x = arg8 + ((((rand8() << 8) | rand8()) % 41) - 20); sp20.z = argA + ((((rand8() << 8) | rand8()) % 41) - 20); @@ -911,10 +944,11 @@ void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2) { spA.r = spA.g = spA.b = (((rand8() << 8) | rand8()) % 33) + 32; spA.a = 0xFF; var_r31 = fn_1_58E0(arg0, &sp20, &sp14, 0.0f, &spA); - if (!var_r31) return; - + if (!var_r31) + return; + temp_f31 = (((rand8() << 8) | rand8()) % 361); - var_r31->unk0.x = (2.0 + (3.0 * sin((M_PI * temp_f31) / 180.0))); + var_r31->unk0.x = 2.0 + (3.0 * sind(temp_f31)); var_r31->unk0.y = (0.1f * ((((rand8() << 8) | rand8()) % 31) + 40)); var_r31->unk0.z = (3.5 * cosd(temp_f31)); var_r31->unk28 = 0; @@ -936,8 +970,9 @@ void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2) { spA.b = 0x8C; spA.a = 0x80; var_r31 = fn_1_58E0(arg0, &sp20, &sp14, 0.0f, &spA); - if (!var_r31) return; - + if (!var_r31) + return; + var_r31->unk28 = 0; var_r31->unk2A = ((((rand8() << 8) | rand8()) % 3) + 2); var_r31->unk0.x = (0.1f * ((((rand8() << 8) | rand8()) % 11) + 30)); @@ -951,15 +986,16 @@ void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2) { } } -void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) { +void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) +{ Vec sp2C; Vec sp20; GXColor sp1A; s16 sp18; f32 temp_f31; s16 var_r30; - unkStruct5* temp_r31; - + unkStruct5 *temp_r31; + for (var_r30 = 0; var_r30 < arg4; var_r30++) { sp2C.x = arg1 + ((((rand8() << 8) | rand8()) % 21) - 10); sp2C.y = arg2; @@ -969,13 +1005,14 @@ void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) { sp20.z = 1.0f; sp1A.r = sp1A.g = sp1A.b = sp1A.a = 0xFF; temp_r31 = fn_1_58E0(arg0, &sp2C, &sp20, 0.0f, &sp1A); - if (!temp_r31) break; - + if (!temp_r31) + break; + temp_r31->unk4C = -1; temp_f31 = ((((rand8() << 8) | rand8()) % 81) - 40); temp_r31->unk0.x = (13.0 * cosd(temp_f31)); temp_r31->unk0.y = 0.1f * ((((rand8() << 8) | rand8()) % 21) + 20); - temp_r31->unk0.z = (9.0 * sin((M_PI * temp_f31) / 180.0)); + temp_r31->unk0.z = (9.0 * sind(temp_f31)); temp_r31->unkC.x = (0.05f * temp_r31->unk0.x); temp_r31->unkC.z = (0.05f * temp_r31->unk0.z); temp_r31->unk18 = 500.0f; @@ -983,16 +1020,17 @@ void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) { } } -void fn_1_5408(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { +void fn_1_5408(ModelData *arg0, struct _unkStruct6 *arg1, Mtx arg2) +{ s16 var_r29; - GXColor* var_r30; - unkStruct5* var_r31; + GXColor *var_r30; + unkStruct5 *var_r31; var_r29 = 0; var_r31 = arg1->unk18; var_r30 = arg1->unk24; - - for (;var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) { + + for (; var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) { if (var_r31->unk4E != 0) { switch (var_r31->unk2C) { case 0: @@ -1028,19 +1066,20 @@ void fn_1_5408(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { } } -void fn_1_55E0(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { - GXColor* var_r30; +void fn_1_55E0(ModelData *arg0, struct _unkStruct6 *arg1, Mtx arg2) +{ + GXColor *var_r30; f32 var_f31; f32 var_f30; s16 var_r29; s32 var_r28; - unkStruct5* var_r31; + unkStruct5 *var_r31; var_r29 = 0; var_r31 = arg1->unk18; var_r30 = arg1->unk24; - - for (;var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) { + + for (; var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) { if (var_r31->unk4E != 0) { var_r31->unk0.x -= var_r31->unkC.x; var_r31->unk0.y -= 0.2f; @@ -1050,12 +1089,14 @@ void fn_1_55E0(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { } if (var_r31->unkC.z < 0.0f) { var_f31 = -var_r31->unkC.z; - } else { + } + else { var_f31 = var_r31->unkC.z; } if (var_r31->unk0.z < 0.0f) { var_f30 = -var_r31->unk0.z; - } else { + } + else { var_f30 = var_r31->unk0.z; } if (var_f30 < var_f31) { @@ -1070,7 +1111,8 @@ void fn_1_55E0(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { } if (var_r31->unk18 > 255.0f) { var_r28 = 0xFF; - } else { + } + else { var_r28 = (u8)var_r31->unk18; } var_r30->a = var_r28; @@ -1081,12 +1123,13 @@ void fn_1_55E0(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { } } -void fn_1_57DC(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { +void fn_1_57DC(ModelData *arg0, struct _unkStruct6 *arg1, Mtx arg2) +{ Vec sp18; Vec spC; GXColor sp8; - ModelData* temp_r30; - unkStruct5* temp_r31; + ModelData *temp_r30; + unkStruct5 *temp_r31; temp_r30 = &Hu3DData[lbl_1_bss_DC->model[4]]; temp_r31 = arg1->unk18; @@ -1100,18 +1143,19 @@ void fn_1_57DC(ModelData* arg0, struct _unkStruct6* arg1, Mtx arg2) { temp_r31->unk40.z = temp_r30->pos.z; } -unkStruct5* fn_1_58E0(s16 arg0, Vec* arg1, Vec* arg2, f32 arg3, GXColor* arg4) { +unkStruct5 *fn_1_58E0(s16 arg0, Vec *arg1, Vec *arg2, f32 arg3, GXColor *arg4) +{ s16 var_r29; - unkStruct5* var_r31; - unkStruct6* temp_r30; - ModelData* var_r28; + unkStruct5 *var_r31; + unkStruct6 *temp_r30; + ModelData *var_r28; var_r28 = &Hu3DData[arg0]; - temp_r30 = (unkStruct6*)var_r28->unk_120; - + temp_r30 = (unkStruct6 *)var_r28->unk_120; + var_r29 = 0; var_r31 = temp_r30->unk18; - for (;var_r29 < temp_r30->unk0; var_r29++, var_r31++) { + for (; var_r29 < temp_r30->unk0; var_r29++, var_r31++) { if (var_r31->unk4E == 0) { break; } @@ -1132,21 +1176,22 @@ unkStruct5* fn_1_58E0(s16 arg0, Vec* arg1, Vec* arg2, f32 arg3, GXColor* arg4) { return var_r31; } -s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) { - ModelData* temp_r28; +s16 fn_1_5A18(AnimData *arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) +{ + ModelData *temp_r28; f32 temp_f0; s16 var_r21; s16 var_r22; s16 var_r30; s16 var_r20; - unkStruct6* var_r31; - void* var_r19; - void* var_r18; - unkStruct5* var_r24; - Vec* var_r25; - GXColor* var_r27; - HsfVector2f* var_r29; - + unkStruct6 *var_r31; + void *var_r19; + void *var_r18; + unkStruct5 *var_r24; + Vec *var_r25; + GXColor *var_r27; + HsfVector2f *var_r29; + var_r21 = Hu3DHookFuncCreate(fn_1_602C); temp_r28 = &Hu3DData[var_r21]; var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(unkStruct6), temp_r28->unk_48); @@ -1158,26 +1203,26 @@ s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) { var_r31->unkC = NULL; var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(unkStruct5), temp_r28->unk_48); var_r31->unk18 = var_r24; - + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) { var_r24->unk4C = -1; var_r24->unk4E = 0; } var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, temp_r28->unk_48); var_r31->unk1C = var_r25; - + for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) { var_r25->x = var_r25->y = var_r25->z = 0.0f; } var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(GXColor), temp_r28->unk_48); var_r31->unk24 = var_r27; - + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) { var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF; } var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(HsfVector2f) * 4, temp_r28->unk_48); var_r31->unk20 = var_r29; - + for (var_r30 = 0; var_r30 < arg1; var_r30++) { var_r29->x = 0.0f; var_r29->y = 0.0f; @@ -1198,7 +1243,8 @@ s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) { var_r31->unk14 = (var_r22 * var_r20); var_r31->unk60 = (1.0f / var_r22); var_r31->unk64 = (1.0f / var_r20); - } else { + } + else { var_r22 = 1; var_r31->unk14 = 1; var_r31->unk60 = 1.0f; @@ -1213,7 +1259,7 @@ s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) { DCFlushRange(var_r19, 0x20000); GXBeginDisplayList(var_r19, 0x20000); GXBegin(GX_QUADS, GX_VTXFMT0, (arg1 * 4)); - + for (var_r30 = 0; var_r30 < arg1; var_r30++) { GXPosition1x16(var_r30 * 4); GXColor1x16(var_r30); @@ -1236,35 +1282,39 @@ s16 fn_1_5A18(AnimData* arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3) { return var_r21; } -void fn_1_5F5C(s16 arg0) { - ModelData* var_r31; - unkStruct6* var_r30; +void fn_1_5F5C(s16 arg0) +{ + ModelData *var_r31; + unkStruct6 *var_r30; var_r31 = &Hu3DData[arg0]; - var_r30 = (unkStruct6*)var_r31->unk_120; + var_r30 = (unkStruct6 *)var_r31->unk_120; HuSprAnimKill(var_r30->unk10); Hu3DModelKill(arg0); } -void fn_1_5FBC(s16 arg0, m409Func6 arg1) { - ModelData* var_r31; - unkStruct6* var_r30; +void fn_1_5FBC(s16 arg0, m409Func6 arg1) +{ + ModelData *var_r31; + unkStruct6 *var_r30; var_r31 = &Hu3DData[arg0]; - var_r30 = (unkStruct6*)var_r31->unk_120; + var_r30 = (unkStruct6 *)var_r31->unk_120; var_r30->unkC = arg1; } -void fn_1_5FF4(s16 arg0, u8 arg1) { - ModelData* var_r31; - unkStruct6* var_r30; +void fn_1_5FF4(s16 arg0, u8 arg1) +{ + ModelData *var_r31; + unkStruct6 *var_r30; var_r31 = &Hu3DData[arg0]; - var_r30 = (unkStruct6*)var_r31->unk_120; + var_r30 = (unkStruct6 *)var_r31->unk_120; var_r30->unk8 = arg1; } -void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { +void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) +{ Mtx sp128; ROMtx spF8; Mtx spC8; @@ -1278,15 +1328,15 @@ void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { Vec sp20; Vec sp14; Vec sp8; - Vec* var_r31; + Vec *var_r31; s16 var_r24; - HsfVector2f* var_r26; + HsfVector2f *var_r26; s16 var_r25; - unkStruct6* temp_r30; - unkStruct5* var_r29; + unkStruct6 *temp_r30; + unkStruct5 *var_r29; m409Func6 var_r23; - temp_r30 = (unkStruct6*)arg0->unk_120; + temp_r30 = (unkStruct6 *)arg0->unk_120; GXLoadPosMtxImm(arg1, 0); GXSetNumTevStages(1); GXSetNumTexGens(1); @@ -1295,7 +1345,8 @@ void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { var_r24 = temp_r30->unk10->bmp->dataFmt & 0xF; if ((var_r24 == 7) || (var_r24 == 8)) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -1305,32 +1356,33 @@ void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); if ((arg0->attr & 2) != 0) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } else { + } + else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); } HuSprTexLoad(temp_r30->unk10, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); switch (temp_r30->unk8) { - case 0: - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - break; - case 1: - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - break; - case 2: - GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); - break; + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r30->unk1C, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r30->unk1C, 12); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, temp_r30->unk24, 4); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + 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); @@ -1342,8 +1394,8 @@ void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { var_r31 = temp_r30->unk1C; var_r26 = temp_r30->unk20; PSMTXROMultVecArray(spF8, &temp_r30->unk2C, &sp68[0], 4); - - for (var_r25 = 0; var_r25 < temp_r30->unk0; var_r25++, var_r29++, var_r26+=4) { + + for (var_r25 = 0; var_r25 < temp_r30->unk0; var_r25++, var_r29++, var_r26 += 4) { if (var_r29->unk4E == 0) { var_r31->x = var_r31->y = var_r31->z = 0.0f; var_r31++; @@ -1353,22 +1405,24 @@ void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { var_r31++; var_r31->x = var_r31->y = var_r31->z = 0.0f; var_r31++; - } else { + } + else { if (var_r29->unk30 == 0.0f) { fn_1_6778(&sp68[0], &sp38, &var_r29->unk34, 4); - PSVECAdd(&sp38, &var_r29->unk40, var_r31++); - PSVECAdd(&sp44, &var_r29->unk40, var_r31++); - PSVECAdd(&sp50, &var_r29->unk40, var_r31++); - PSVECAdd(&sp5C, &var_r29->unk40, var_r31++); - } else { + VECAdd(&sp38, &var_r29->unk40, var_r31++); + VECAdd(&sp44, &var_r29->unk40, var_r31++); + VECAdd(&sp50, &var_r29->unk40, var_r31++); + VECAdd(&sp5C, &var_r29->unk40, var_r31++); + } + else { fn_1_6778(&temp_r30->unk2C, &sp38, &var_r29->unk34, 4); - PSMTXRotRad(spC8, 0x5A, 0.017453292f * var_r29->unk30); - PSMTXConcat(sp128, spC8, sp98); - PSMTXMultVecArray(sp98, &sp38, &sp8, 4); - PSVECAdd(&sp8, &var_r29->unk40, var_r31++); - PSVECAdd(&sp14, &var_r29->unk40, var_r31++); - PSVECAdd(&sp20, &var_r29->unk40, var_r31++); - PSVECAdd(&sp2C, &var_r29->unk40, var_r31++); + MTXRotRad(spC8, 0x5A, 0.017453292f * var_r29->unk30); + MTXConcat(sp128, spC8, sp98); + MTXMultVecArray(sp98, &sp38, &sp8, 4); + VECAdd(&sp8, &var_r29->unk40, var_r31++); + VECAdd(&sp14, &var_r29->unk40, var_r31++); + VECAdd(&sp20, &var_r29->unk40, var_r31++); + VECAdd(&sp2C, &var_r29->unk40, var_r31++); } if (var_r29->unk4C != -1) { fn_1_66D4(var_r26, temp_r30->unk5C, var_r29->unk4C, temp_r30->unk60, temp_r30->unk64); @@ -1381,11 +1435,12 @@ void fn_1_602C(ModelData* arg0, f32 (*arg1)[4]) { GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); } -void fn_1_6608(HsfVector2f* arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) { +void fn_1_6608(HsfVector2f *arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) +{ s16 var_r31; s16 var_r30; s16 var_r29; - + for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) { var_r30 = (var_r31 % arg2); var_r29 = (var_r31 / arg2); @@ -1394,7 +1449,8 @@ void fn_1_6608(HsfVector2f* arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) { } } -void fn_1_66D4(HsfVector2f* arg0, HsfVector2f* arg1, s16 arg2, f32 arg3, f32 arg4) { +void fn_1_66D4(HsfVector2f *arg0, HsfVector2f *arg1, s16 arg2, f32 arg3, f32 arg4) +{ arg0[0].x = arg1[arg2].x; arg0[0].y = arg1[arg2].y; arg0[1].x = (arg3 + arg1[arg2].x); @@ -1405,12 +1461,13 @@ void fn_1_66D4(HsfVector2f* arg0, HsfVector2f* arg1, s16 arg2, f32 arg3, f32 arg arg0[3].y = (arg4 + arg1[arg2].y); } -void fn_1_6778(Vec* arg0, Vec* arg1, Vec* arg2, s16 arg3) { +void fn_1_6778(Vec *arg0, Vec *arg1, Vec *arg2, s16 arg3) +{ s16 var_r31; - + for (var_r31 = 0; var_r31 < arg3; var_r31++, arg0++, arg1++) { arg1->x = arg0->x * arg2->x; arg1->y = arg0->y * arg2->y; arg1->z = arg0->z * arg2->z; } -} \ No newline at end of file +} diff --git a/src/REL/m409Dll/player.c b/src/REL/m409Dll/player.c index 9e0a7b69..9157deeb 100644 --- a/src/REL/m409Dll/player.c +++ b/src/REL/m409Dll/player.c @@ -1,17 +1,21 @@ #include "REL/m409Dll.h" -#include "math.h" -#include "ext_math.h" #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" #include "game/gamework_data.h" -#include "game/pad.h" #include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "ext_math.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif // bss -omObjData* lbl_1_bss_3A0[4]; -omObjData* lbl_1_bss_39C; +omObjData *lbl_1_bss_3A0[4]; +omObjData *lbl_1_bss_39C; s32 lbl_1_bss_38C[4]; unkStruct10 lbl_1_bss_10C[8]; s16 lbl_1_bss_108; @@ -21,81 +25,57 @@ unkStruct9 lbl_1_bss_F0; // data u32 lbl_1_data_138 = 0xFFFF0000; -s32 lbl_1_data_13C[7] = { 0x30, 0x2D, 0x3A, 0x2E, 0x280032, 0x17, 0x18 }; -GXColor lbl_1_data_158[8] = { - { 0xFF, 0x00, 0x00, 0xFF }, - { 0x00, 0x00, 0xFF, 0xFF }, - { 0xFF, 0x80, 0x80, 0xFF }, - { 0x00, 0xFF, 0x00, 0xFF }, - { 0x80, 0x00, 0xC0, 0xFF }, - { 0x90, 0x30, 0x00, 0xFF }, - { 0xFF, 0xFF, 0x00, 0xFF }, - { 0x00, 0x00, 0x00, 0xFF } -}; +s32 lbl_1_data_13C[7] = { 0x30, 0x2D, 0x3A, 0x2E, DATA_MAKE_NUM(DATADIR_M409, 0x32), 0x17, 0x18 }; +GXColor lbl_1_data_158[8] = { { 0xFF, 0x00, 0x00, 0xFF }, { 0x00, 0x00, 0xFF, 0xFF }, { 0xFF, 0x80, 0x80, 0xFF }, { 0x00, 0xFF, 0x00, 0xFF }, + { 0x80, 0x00, 0xC0, 0xFF }, { 0x90, 0x30, 0x00, 0xFF }, { 0xFF, 0xFF, 0x00, 0xFF }, { 0x00, 0x00, 0x00, 0xFF } }; HsfVector2f lbl_1_data_178[4] = { - { 72.0f, 80.0f }, { 504.0f, 80.0f }, - { 72.0f, 400.0f }, { 504.0f, 400.0f }, -}; -GXColor lbl_1_data_198[8] = { - { 0xD0, 0x00, 0x00, 0xFF }, - { 0x00, 0x00, 0xFF, 0xFF }, - { 0x00, 0xA0, 0x00, 0xFF }, - { 0xFF, 0xFF, 0x00, 0xFF }, - { 0xA0, 0x00, 0xFF, 0xFF }, - { 0xFF, 0x80, 0x40, 0xFF }, - { 0xFF, 0xA0, 0xF0, 0xFF }, - { 0x00, 0xFF, 0x40, 0xFF } + { 72.0f, 80.0f }, + { 504.0f, 80.0f }, + { 72.0f, 400.0f }, + { 504.0f, 400.0f }, }; +GXColor lbl_1_data_198[8] = { { 0xD0, 0x00, 0x00, 0xFF }, { 0x00, 0x00, 0xFF, 0xFF }, { 0x00, 0xA0, 0x00, 0xFF }, { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xA0, 0x00, 0xFF, 0xFF }, { 0xFF, 0x80, 0x40, 0xFF }, { 0xFF, 0xA0, 0xF0, 0xFF }, { 0x00, 0xFF, 0x40, 0xFF } }; -void fn_1_67E0(Process* arg0) { +void fn_1_67E0(Process *arg0) +{ s32 var_r31; s32 temp_r28; - omObjData* var_r30; + omObjData *var_r30; omMakeGroupEx(arg0, 0, 4); omGetGroupMemberListEx(arg0, 0); - + for (var_r31 = 0; var_r31 < 4; var_r31++) { lbl_1_bss_3A0[var_r31] = var_r30 = omAddObjEx(arg0, 0x30, 3, 7, 0, fn_1_6928); var_r30->work[0] = var_r31; } lbl_1_bss_39C = var_r30 = omAddObjEx(arg0, 0x40, 8, 0xA, 4, fn_1_91C0); fn_1_BF88(0x40, 0x40); - fn_1_DF20(0x28002C, 0x40, 0x40); + fn_1_DF20(DATA_MAKE_NUM(DATADIR_M409, 0x2C), 0x40, 0x40); temp_r28 = (u8)frand(); - + for (var_r31 = 0; var_r31 < (temp_r28 + 1); var_r31++) { fn_1_ABB4(); } } -void fn_1_6900(void) { +void fn_1_6900(void) +{ CharModelKill(-1); fn_1_C0C0(); } -void fn_1_6928(omObjData* arg0) { - Vec sp8[4] = { - { -185.0f, 35.0f, 100.0f }, - { -62.5f, 35.0f, 100.0f }, - { 62.5f, 35.0f, 100.0f }, - { 185.0f, 35.0f, 100.0f } - }; - s8 sp38[8][32] = { - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r" - }; - unkStruct7* var_r31; +void fn_1_6928(omObjData *arg0) +{ + Vec sp8[4] = { { -185.0f, 35.0f, 100.0f }, { -62.5f, 35.0f, 100.0f }, { 62.5f, 35.0f, 100.0f }, { 185.0f, 35.0f, 100.0f } }; + s8 sp38[8][32] = { "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", + "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r" }; + unkStruct7 *var_r31; s32 var_r30; s32 var_r28; - - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct7), 0x10000000); + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct7), MEMORY_DEFAULT_NUM); arg0->data = var_r31; var_r31->unk0 = arg0->work[0]; var_r31->unk1 = GWPlayerCfg[var_r31->unk0].character; @@ -118,12 +98,13 @@ void fn_1_6928(omObjData* arg0) { var_r31->unk3C.x = var_r31->unk3C.z = 0.0f; var_r30 = CharModelCreate(var_r31->unk1, 4); arg0->model[0] = var_r30; - Hu3DModelAttrSet(var_r30, 0x40000001); - + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + for (var_r28 = 0; var_r28 < 7; var_r28++) { if ((lbl_1_data_13C[var_r28] & 0xFFFF0000) != 0) { arg0->motion[var_r28] = CharModelMotionCreate(var_r31->unk1, var_r31->unk1 + lbl_1_data_13C[var_r28]); - } else { + } + else { arg0->motion[var_r28] = CharModelMotionCreate(var_r31->unk1, lbl_1_data_13C[var_r28]); } } @@ -133,13 +114,14 @@ void fn_1_6928(omObjData* arg0) { Hu3DModelPosSet(var_r30, var_r31->unk24.x, var_r31->unk24.y, var_r31->unk24.z); Hu3DModelRotSet(var_r30, 0.0f, 30.0f, 0.0f); CharModelStepTypeSet(var_r31->unk1, 0); - arg0->model[1] = var_r30 = Hu3DModelCreate(HuDataSelHeapReadNum(0x280012, 0x10000000, HEAP_DATA)); - Hu3DModelHookSet(arg0->model[0], (char*)sp38[var_r31->unk1], arg0->model[1]); + arg0->model[1] = var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M409, 0x12)); + Hu3DModelHookSet(arg0->model[0], (char *)sp38[var_r31->unk1], arg0->model[1]); var_r30 = fn_1_DA48(2, 1); var_r31->unk57 = var_r30; lbl_1_bss_F0.unk10[var_r30].unk30 = fn_1_8838; - fn_1_E2A8(var_r30, 0, 0x28002B, 0x40, 0x40); - fn_1_F098(var_r30, lbl_1_data_158[var_r31->unk1].r, lbl_1_data_158[var_r31->unk1].g, lbl_1_data_158[var_r31->unk1].b, lbl_1_data_158[var_r31->unk1].a); + fn_1_E2A8(var_r30, 0, DATA_MAKE_NUM(DATADIR_M409, 0x2B), 0x40, 0x40); + fn_1_F098( + var_r30, lbl_1_data_158[var_r31->unk1].r, lbl_1_data_158[var_r31->unk1].g, lbl_1_data_158[var_r31->unk1].b, lbl_1_data_158[var_r31->unk1].a); fn_1_F024(var_r30, 1, lbl_1_data_158[var_r31->unk1].r, lbl_1_data_158[var_r31->unk1].g, lbl_1_data_158[var_r31->unk1].b, 0x98); fn_1_E85C(var_r30, 0, var_r31->unk24.x, 100.0f + var_r31->unk24.y, -1200.0f); fn_1_ED44(var_r30, 0, 0x10); @@ -149,7 +131,7 @@ void fn_1_6928(omObjData* arg0) { fn_1_F408(var_r30, 1, 1); var_r30 = fn_1_DA48(1, 1); fn_1_DEF4(var_r30, 0, 0); - fn_1_E7C8(lbl_1_bss_F0.unk6, 0, 0x28002D); + fn_1_E7C8(lbl_1_bss_F0.unk6, 0, DATA_MAKE_NUM(DATADIR_M409, 0x2D)); var_r31->unk58 = var_r30; lbl_1_bss_F0.unk10[var_r30].unk30 = &fn_1_8D6C; fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 4); @@ -158,35 +140,36 @@ void fn_1_6928(omObjData* arg0) { fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0.5f, 0.5f, 1.0f); var_r31->unk59 = 0; var_r31->unk60 = 0; - var_r30 = espEntry(0x280031, 1, 0); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_M409, 0x31), 1, 0); var_r31->unk55 = var_r30; espColorSet(var_r30, 0, 0, 0); espTPLvlSet(var_r30, 0.5); espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x, lbl_1_data_178[var_r31->unk0].y); - espAttrSet(var_r30, 4); - var_r30 = espEntry(0x280030, 1, 0); + espAttrSet(var_r30, HUSPR_ATTR_DISPOFF); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_M409, 0x30), 1, 0); var_r31->unk54 = var_r30; espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x, lbl_1_data_178[var_r31->unk0].y); - espAttrSet(var_r30, 4); - var_r30 = espEntry(var_r31->unk1 + 0x610000, 1, 0); + espAttrSet(var_r30, HUSPR_ATTR_DISPOFF); + var_r30 = espEntry(var_r31->unk1 + DATA_MAKE_NUM(DATADIR_MGCONST, 0x00), 1, 0); var_r31->unk56 = var_r30; espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x - 27.0f, lbl_1_data_178[var_r31->unk0].y - 20.0f); - espAttrSet(var_r30, 4); - + espAttrSet(var_r30, HUSPR_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 3; var_r28++) { - var_r30 = espEntry(0x61000A, 0, 0); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x0A), 0, 0); var_r31->unk5A[var_r28][0] = var_r30; - espAttrSet(var_r30, 4); + espAttrSet(var_r30, HUSPR_ATTR_DISPOFF); espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x - 32.0f + (var_r28 * 0x1E), 16.0f + lbl_1_data_178[var_r31->unk0].y); - var_r30 = espEntry(0x61000B, 0, 0); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x0B), 0, 0); var_r31->unk5A[var_r28][1] = var_r30; - espAttrSet(var_r30, 4); + espAttrSet(var_r30, HUSPR_ATTR_DISPOFF); espPosSet(var_r30, lbl_1_data_178[var_r31->unk0].x - 32.0f + (var_r28 * 0x1E), 16.0f + lbl_1_data_178[var_r31->unk0].y); } arg0->func = fn_1_7344; } -void fn_1_7344(omObjData* arg0) { +void fn_1_7344(omObjData *arg0) +{ s16 sp8; f32 temp_f28; f32 temp_f29; @@ -206,17 +189,18 @@ void fn_1_7344(omObjData* arg0) { s16 var_r28; s32 var_r24; s32 temp_r23; - unkStruct8Sub* temp_r30; - unkStruct7* temp_r31; + unkStruct8Sub *temp_r30; + unkStruct7 *temp_r31; var_f31 = 0.0f; - temp_r31 = (unkStruct7*)arg0->data; + temp_r31 = (unkStruct7 *)arg0->data; temp_r19 = arg0->model[0]; temp_r31->unk48 = temp_r31->unk24; var_r28 = temp_r31->unk1C; if (temp_r31->unk5 != 0) { fn_1_7FE8(arg0); - } else { + } + else { temp_r31->unkA = HuPadStkX[temp_r31->unk4]; temp_r31->unkC = HuPadStkY[temp_r31->unk4]; temp_r31->unkE = HuPadBtnDown[temp_r31->unk4]; @@ -231,14 +215,15 @@ void fn_1_7344(omObjData* arg0) { temp_r30 = fn_1_CCCC(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8); if (fn_1_2454(7) != 3) { fn_1_ED00(temp_r31->unk57, 4); - } else { - espAttrReset(temp_r31->unk54, 4); - espAttrReset(temp_r31->unk55, 4); - + } + else { + espAttrReset(temp_r31->unk54, HUSPR_ATTR_DISPOFF); + espAttrReset(temp_r31->unk55, HUSPR_ATTR_DISPOFF); + for (var_r24 = 0; var_r24 < 3; var_r24++) { - espAttrReset(temp_r31->unk5A[var_r24][0], 4); + espAttrReset(temp_r31->unk5A[var_r24][0], HUSPR_ATTR_DISPOFF); } - espAttrReset(temp_r31->unk56, 4); + espAttrReset(temp_r31->unk56, HUSPR_ATTR_DISPOFF); fn_1_EE24(temp_r31->unk57, 4); temp_f28 = (ABS(temp_r26) + ABS(temp_r25)); temp_f30 = 0.008f * (temp_f28 * temp_r26); @@ -273,8 +258,8 @@ void fn_1_7344(omObjData* arg0) { lbl_1_bss_104 = temp_r31->unk0 + 1; } if (temp_r31->unk60 == 0) { - temp_f29 = (180.0 * (atan2((temp_r30->unk0.x - temp_r31->unk24.x), (temp_r30->unk0.z - temp_r31->unk24.z)) / M_PI)); - temp_f30 = (180.0 * (atan2((temp_r31->unk24.y - temp_r30->unk0.y), (temp_r31->unk24.z - temp_r30->unk0.z)) / M_PI)); + temp_f29 = atan2d(temp_r30->unk0.x - temp_r31->unk24.x, temp_r30->unk0.z - temp_r31->unk24.z); + temp_f30 = atan2d(temp_r31->unk24.y - temp_r30->unk0.y, temp_r31->unk24.z - temp_r30->unk0.z); temp_f30 *= (1.0f - (0.015f * ABS(temp_f30))); temp_r31->unk3C.x = fn_1_AD40(temp_r31->unk3C.x, temp_f30, 0.5f); temp_r31->unk3C.y = fn_1_AD40(temp_r31->unk3C.y, temp_f29, 0.5f); @@ -283,10 +268,10 @@ void fn_1_7344(omObjData* arg0) { case 6: fn_1_ED44(temp_r31->unk57, 0, 4); Hu3DModelHookReset(temp_r19); - Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); temp_r23 = fn_1_DA48(1, 1); fn_1_DEF4(temp_r23, 0, 0); - fn_1_E7C8(lbl_1_bss_F0.unk6, 0, 0x28002C); + fn_1_E7C8(lbl_1_bss_F0.unk6, 0, DATA_MAKE_NUM(DATADIR_M409, 0x2C)); fn_1_E85C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 20.0f + temp_r31->unk24.x, 100.0f + temp_r31->unk24.y, temp_r31->unk24.z - 25.0f); fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 2.0f, 2.0f, 1.0f); fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0x80000000); @@ -299,7 +284,8 @@ void fn_1_7344(omObjData* arg0) { if (fn_1_2454(0x80) == 0x80) { if (temp_r31->unk59 >= 3) { var_r28 = 5; - } else { + } + else { var_r28 = 6; } var_r27 = 0; @@ -334,7 +320,8 @@ void fn_1_7344(omObjData* arg0) { if (CharModelMotionEndCheck(temp_r31->unk1) != 0) { if (CharModelMotionTimeGet(temp_r31->unk1) <= 0.0f) { var_r28 = 0; - } else { + } + else { var_r28 = 2; } var_r27 = 1; @@ -351,7 +338,8 @@ void fn_1_7344(omObjData* arg0) { var_r27 = 0; var_f31 = 0.0f; } - } else if (CharModelMotionEndCheck(temp_r31->unk1) != 0) { + } + else if (CharModelMotionEndCheck(temp_r31->unk1) != 0) { var_r28 = 2; var_r27 = 1; var_f31 = 0.0f; @@ -370,7 +358,8 @@ void fn_1_7344(omObjData* arg0) { temp_r31->unk60 = 0; temp_r31->unk18 = -1; } - } else { + } + else { temp_r31->unk3C.y = 0.0f; } break; @@ -380,20 +369,21 @@ void fn_1_7344(omObjData* arg0) { } if (var_r28 != temp_r31->unk1C) { temp_r31->unk1C = var_r28; - CharModelMotionShiftSet(temp_r31->unk1, arg0->motion[temp_r31->unk1C], var_f31, 8.0f, (u32) var_r27); + CharModelMotionShiftSet(temp_r31->unk1, arg0->motion[temp_r31->unk1C], var_f31, 8.0f, var_r27); } omSetTra(arg0, temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z); omSetRot(arg0, temp_r31->unk3C.x, temp_r31->unk3C.y, temp_r31->unk3C.z); } -void fn_1_7FE8(omObjData* arg0) { +void fn_1_7FE8(omObjData *arg0) +{ Vec sp20; Vec sp14; s32 sp10; f32 spC; s16 sp8; - unkStruct10* var_r30; - unkStruct8Sub* temp_r29; + unkStruct10 *var_r30; + unkStruct8Sub *temp_r29; f32 temp_f0; f32 temp_f0_2; f32 temp_f1; @@ -401,21 +391,22 @@ void fn_1_7FE8(omObjData* arg0) { f32 temp_f30; f32 var_f28; s32 var_r28; - unkStruct7* temp_r31; + unkStruct7 *temp_r31; - temp_r31 = (unkStruct7*)arg0->data; + temp_r31 = (unkStruct7 *)arg0->data; sp10 = arg0->model[0]; sp8 = temp_r31->unk1C; temp_r31->unkE = temp_r31->unk10 = 0; temp_r29 = fn_1_CCCC(temp_r31->unk57, 0); sp20.x = sp20.y = sp20.z = 0.0f; - switch (lbl_1_bss_108) { /* irregular */ + switch (lbl_1_bss_108) { /* irregular */ case 2: if (temp_r31->unk61 == 0) { var_r30 = &lbl_1_bss_10C[0]; - + for (var_r28 = 0; var_r28 < 8; var_r28++, var_r30++) { - if (var_r30->unk2 == 0) break; + if (var_r30->unk2 == 0) + break; sp20.x += var_r30->unkC.x; sp20.y += var_r30->unkC.y; sp20.z += var_r30->unkC.z; @@ -423,13 +414,15 @@ void fn_1_7FE8(omObjData* arg0) { sp20.x /= var_r28; sp20.y /= var_r28; sp20.z /= var_r28; - } else { + } + else { var_r30 = &lbl_1_bss_10C[temp_r31->unk62]; if (var_r30->unk2 != 0) { sp20.x = var_r30->unkC.x; sp20.y = var_r30->unkC.y; sp20.z = var_r30->unkC.z; - } else { + } + else { sp20.x = 0.0f; sp20.y = 800.0f; sp20.z = -1200.0f; @@ -458,7 +451,9 @@ void fn_1_7FE8(omObjData* arg0) { sp20.z = var_r30->unkC.z; temp_f29 = 100.0f * (0.5f * (4 - temp_r31->unk6)); temp_f29 = 20.0f + (temp_f29 * (fn_1_ABB4() / 65536.0f)); - temp_f30 = ((var_r30->unkC.z - temp_r29->unk0.z) * (var_r30->unkC.z - temp_r29->unk0.z)) + (((var_r30->unkC.x - temp_r29->unk0.x) * (var_r30->unkC.x - temp_r29->unk0.x)) + ((var_r30->unkC.y - temp_r29->unk0.y) * (var_r30->unkC.y - temp_r29->unk0.y))); + temp_f30 = ((var_r30->unkC.z - temp_r29->unk0.z) * (var_r30->unkC.z - temp_r29->unk0.z)) + + (((var_r30->unkC.x - temp_r29->unk0.x) * (var_r30->unkC.x - temp_r29->unk0.x)) + + ((var_r30->unkC.y - temp_r29->unk0.y) * (var_r30->unkC.y - temp_r29->unk0.y))); if ((sqrtf(temp_f30) < temp_f29) && ((s32)((0x20 - (temp_r31->unk6 * 8)) * (fn_1_ABB4() / 65536.0f)) == 0)) { temp_r31->unkE = (temp_r31->unkE | 0x100); } @@ -488,17 +483,18 @@ void fn_1_7FE8(omObjData* arg0) { temp_r31->unk63--; } -void fn_1_8838(unkStruct8* arg0) { +void fn_1_8838(unkStruct8 *arg0) +{ Vec sp18; Vec spC; f32 sp8; f32 temp_f30; f32 temp_f31; - unkStruct8Sub* temp_r30; - Vec* var_r26; + unkStruct8Sub *temp_r30; + Vec *var_r26; s32 var_r28; - unkStruct10* temp_r29; - unkStruct8Sub* temp_r31; + unkStruct10 *temp_r29; + unkStruct8Sub *temp_r31; temp_r30 = &arg0->unk3C[0]; if (temp_r30->unk0.x < -600.0f) { @@ -532,7 +528,7 @@ void fn_1_8838(unkStruct8* arg0) { if (temp_r31->unk74 > 90.0f) { temp_r31->unk74 = 90.0f; } - temp_f31 = sin((M_PI * temp_r31->unk74) / 180.0); + temp_f31 = sind(temp_r31->unk74); temp_f30 = cosd(temp_r31->unk74); sp18.x = temp_r30->unk0.x - temp_r31->unk58.x; sp18.y = temp_r30->unk0.y - temp_r31->unk58.y; @@ -566,7 +562,7 @@ void fn_1_8838(unkStruct8* arg0) { if (temp_r31->unk74 > 90.0f) { temp_r31->unk74 = 90.0f; } - temp_f31 = sin((M_PI * temp_r31->unk74) / 180.0); + temp_f31 = sind(temp_r31->unk74); sp18.x = temp_r29->unkC.x - temp_r31->unk58.x; sp18.y = temp_r29->unkC.y - temp_r31->unk58.y; sp18.z = temp_r29->unkC.z - temp_r31->unk58.z; @@ -576,7 +572,8 @@ void fn_1_8838(unkStruct8* arg0) { temp_r31->unk18.x = (temp_r31->unk78 + (temp_r31->unk7C * temp_f31)); temp_r31->unk18.y = (temp_r31->unk78 + (temp_r31->unk7C * temp_f31)); temp_r31->unk18.z = 1.0f; - } else { + } + else { temp_r31->unk0.x = temp_r29->unkC.x; temp_r31->unk0.y = temp_r29->unkC.y; temp_r31->unk0.z = temp_r29->unkC.z; @@ -584,25 +581,27 @@ void fn_1_8838(unkStruct8* arg0) { temp_r31->unk34 &= ~4; } -s8 fn_1_8D08(u8 arg0) { - unkStruct7* data; - unkStruct8Sub* var_r30; +s8 fn_1_8D08(u8 arg0) +{ + unkStruct7 *data; + unkStruct8Sub *var_r30; - data = (unkStruct7*)lbl_1_bss_3A0[arg0]->data; + data = (unkStruct7 *)lbl_1_bss_3A0[arg0]->data; var_r30 = fn_1_CCCC(data->unk57, 1); return var_r30->unk70[0]; } -void fn_1_8D6C(unkStruct8* arg0) { +void fn_1_8D6C(unkStruct8 *arg0) +{ Vec sp20; Vec sp14; Vec sp8; s32 temp_r28; s32 var_r27; f32 var_f31; - unkStruct10* var_r29; - unkStruct7* temp_r30; - unkStruct8Sub* temp_r31; + unkStruct10 *var_r29; + unkStruct7 *temp_r30; + unkStruct8Sub *temp_r31; temp_r31 = &arg0->unk3C[0]; if ((temp_r31->unk34 & 4) == 0) { @@ -641,19 +640,20 @@ void fn_1_8D6C(unkStruct8* arg0) { if (!(var_f31 >= 2250.0f) && (var_r29->unk2 == 3)) { var_r29->unk2 = 4; temp_r31->unk34 |= 4; - temp_r30 = (unkStruct7*)lbl_1_bss_3A0[temp_r31->unk70[0]]->data; + temp_r30 = (unkStruct7 *)lbl_1_bss_3A0[temp_r31->unk70[0]]->data; if (var_r29->unk48 == lbl_1_bss_106) { - espAttrSet(temp_r30->unk5A[temp_r30->unk59][0], 4); - espAttrReset(temp_r30->unk5A[temp_r30->unk59][1], 4); + espAttrSet(temp_r30->unk5A[temp_r30->unk59][0], HUSPR_ATTR_DISPOFF); + espAttrReset(temp_r30->unk5A[temp_r30->unk59][1], HUSPR_ATTR_DISPOFF); HuAudFXPlay(9); temp_r30->unk59++; omVibrate(temp_r30->unk0, 0xC, 6, 6); if (temp_r30->unk59 < 3) { temp_r30->unk60++; } - } else if (temp_r30->unk59 != 0) { - espAttrReset(temp_r30->unk5A[temp_r30->unk59][0], 4); - espAttrSet(temp_r30->unk5A[temp_r30->unk59][1], 4); + } + else if (temp_r30->unk59 != 0) { + espAttrReset(temp_r30->unk5A[temp_r30->unk59][0], HUSPR_ATTR_DISPOFF); + espAttrSet(temp_r30->unk5A[temp_r30->unk59][1], HUSPR_ATTR_DISPOFF); } } } @@ -682,37 +682,38 @@ void fn_1_8D6C(unkStruct8* arg0) { } } -void fn_1_91C0(omObjData* arg0) { +void fn_1_91C0(omObjData *arg0) +{ s32 var_r28; s32 var_r30; - unkStruct10* var_r31; + unkStruct10 *var_r31; lbl_1_bss_108 = 0; var_r28 = Hu3DModelCreateFile(0x20000); arg0->model[0] = var_r28; - Hu3DModelAttrSet(var_r28, 0x40000001); + Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP); for (var_r30 = 0; var_r30 < 3; var_r30++) { - arg0->motion[var_r30] = Hu3DJointMotion(var_r28, HuDataSelHeapReadNum(var_r30 + 0x28000F, 0x10000000, HEAP_DATA)); + arg0->motion[var_r30] + = Hu3DJointMotion(var_r28, HuDataSelHeapReadNum(var_r30 + DATA_MAKE_NUM(DATADIR_M409, 0x0F), MEMORY_DEFAULT_NUM, HEAP_DATA)); } Hu3DMotionSet(var_r28, arg0->motion[0]); omSetTra(arg0, 419.99997f, 250.0f, -180.0f); omSetRot(arg0, 0.0f, -30.0f, 0.0f); - + for (var_r30 = 0; var_r30 < 4; var_r30++) { arg0->work[var_r30] = 0; } - + for (var_r30 = 0; var_r30 < 8; var_r30++) { - var_r28 = Hu3DModelCreateFile(var_r30 + 0x28001B); + var_r28 = Hu3DModelCreateFile(var_r30 + DATA_MAKE_NUM(DATADIR_M409, 0x1B)); arg0->model[var_r30 + 1] = var_r28; - Hu3DModelAttrSet(var_r28, 1); + Hu3DModelAttrSet(var_r28, HU3D_ATTR_DISPOFF); } lbl_1_bss_104 = 0; - - + for (var_r31 = lbl_1_bss_10C, var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) { - var_r28 = Hu3DModelCreateFile(var_r30 + 0x280013); + var_r28 = Hu3DModelCreateFile(var_r30 + DATA_MAKE_NUM(DATADIR_M409, 0x13)); var_r31->unk0 = var_r28; Hu3DModelLayerSet(var_r28, 3); var_r31->unkC.x = -400.0f + (100.0f * var_r30); @@ -728,7 +729,7 @@ void fn_1_91C0(omObjData* arg0) { var_r31->unk30.z = var_r31->unkC.z; var_r31->unk48 = var_r30; fn_1_DEF4((var_r31->unk1 = fn_1_DA48(1, 1)), 0, 0); - fn_1_E2A8(lbl_1_bss_F0.unk6, 0, var_r30 + 0x280023, 0x40, 0x40); + fn_1_E2A8(lbl_1_bss_F0.unk6, 0, var_r30 + DATA_MAKE_NUM(DATADIR_M409, 0x23), 0x40, 0x40); fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 2.0f, 2.0f, 1.0f); fn_1_F024(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0xFF, 0xFF, 0xFF, 0xA0); fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0x40000004); @@ -738,15 +739,16 @@ void fn_1_91C0(omObjData* arg0) { arg0->func = fn_1_962C; } -void fn_1_962C(omObjData* arg0) { +void fn_1_962C(omObjData *arg0) +{ s32 sp8[7]; - unkStruct10* var_r31; + unkStruct10 *var_r31; s32 var_r29; s32 var_r28; s32 var_r27; s32 var_r26; f32 var_f31; - + var_r27 = 0; var_r31 = &lbl_1_bss_10C[0]; @@ -756,11 +758,14 @@ void fn_1_962C(omObjData* arg0) { lbl_1_bss_108++; } for (var_r29 = 0; var_r29 < 4; var_r29++) { - if (lbl_1_bss_38C[var_r29] == 0) break; + if (lbl_1_bss_38C[var_r29] == 0) + break; } - if (var_r29 < 4) break; - if (lbl_1_bss_104 == 0) break; - + if (var_r29 < 4) + break; + if (lbl_1_bss_104 == 0) + break; + lbl_1_bss_108 = 6; break; case 1: @@ -777,10 +782,9 @@ void fn_1_962C(omObjData* arg0) { lbl_1_bss_108++; break; case 3: - var_r26 = arg0->model[lbl_1_bss_106 + 1]; - Hu3DModelAttrReset(var_r26, 1); + Hu3DModelAttrReset(var_r26 = arg0->model[lbl_1_bss_106 + 1], HU3D_ATTR_DISPOFF); Hu3DModelHookSet(arg0->model[0], "g001mk-itemhook_r", var_r26); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 8.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(0x558); lbl_1_bss_108++; for (var_r29 = 0; var_r29 < 4; var_r29++) { @@ -800,7 +804,7 @@ void fn_1_962C(omObjData* arg0) { } } arg0->work[3] = var_r28 * 10 + 10; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 8.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 8.0f, HU3D_MOTATTR_NONE); if (lbl_1_bss_104 == 0) { fn_1_3840(); } @@ -809,13 +813,13 @@ void fn_1_962C(omObjData* arg0) { if (--arg0->work[3] == 0) { lbl_1_bss_108 = 0; Hu3DModelHookReset(arg0->model[0]); - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 8.0f, 0x40000001); - Hu3DModelAttrSet(arg0->model[lbl_1_bss_106 + 1], 1); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->model[lbl_1_bss_106 + 1], HU3D_ATTR_DISPOFF); } break; case 6: fn_1_2414(7, 4); - fn_1_23EC(lbl_1_bss_104- 1); + fn_1_23EC(lbl_1_bss_104 - 1); lbl_1_bss_108++; break; case 7: @@ -828,7 +832,7 @@ void fn_1_962C(omObjData* arg0) { switch (var_r31->unk2) { case 0: - Hu3DModelAttrSet(var_r31->unk0, 1); + Hu3DModelAttrSet(var_r31->unk0, HU3D_ATTR_DISPOFF); var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f; continue; case 1: @@ -836,7 +840,7 @@ void fn_1_962C(omObjData* arg0) { var_r31->unkC.y = (fn_1_ABB4() / 65536.0f) * 100.0f; var_r31->unkC.z = -1200.0f; Hu3DModelPosSet(var_r31->unk0, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); - Hu3DModelAttrSet(var_r31->unk0, 1); + Hu3DModelAttrSet(var_r31->unk0, HU3D_ATTR_DISPOFF); fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 2.0f, 2.0f, 1.0f); var_r31->unk18.z = ((fn_1_ABB4() - 0x8000) / 32768.0f) * 60.0f; var_r31->unk4 = ((100.0f - var_r31->unkC.y) * 0.5f); @@ -844,7 +848,8 @@ void fn_1_962C(omObjData* arg0) { var_r31->unk4C = ((fn_1_ABB4() - 0x8000) / 32768.0f) * 360.0f; var_r31->unk2++; case 2: - if (--var_r31->unk4 != 0) break; + if (--var_r31->unk4 != 0) + break; var_r31->unk4 = 1; var_r31->unk2++; case 3: @@ -853,7 +858,8 @@ void fn_1_962C(omObjData* arg0) { if (var_r31->unk18.z >= 0.0f) { var_r31->unk18.z = 0.0f; } - } else { + } + else { var_r31->unk18.z -= 0.08f; if (var_r31->unk18.z <= 0.0f) { var_r31->unk18.z = 0.0f; @@ -865,7 +871,7 @@ void fn_1_962C(omObjData* arg0) { var_r31->unkC.x += sind(var_r31->unk18.z) * var_r31->unk8; var_r31->unkC.y += cosd(var_r31->unk18.z) * var_r31->unk8; if (var_r31->unkC.y >= 200.0) { - Hu3DModelAttrReset(var_r31->unk0, 1); + Hu3DModelAttrReset(var_r31->unk0, HU3D_ATTR_DISPOFF); } if (var_r31->unkC.x >= 550.0f) { var_r31->unk18.z = -((fn_1_ABB4() / 65536.0f) * 20.0f); @@ -878,13 +884,15 @@ void fn_1_962C(omObjData* arg0) { } break; case 4: - if (--var_r31->unk4 != 0) break; - Hu3DModelAttrSet(var_r31->unk0, 1); + if (--var_r31->unk4 != 0) + break; + Hu3DModelAttrSet(var_r31->unk0, HU3D_ATTR_DISPOFF); fn_1_E85C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); fn_1_EE68(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 4); if (lbl_1_bss_106 == var_r31->unk48) { HuAudFXPlay(0x557); - } else { + } + else { HuAudFXPlay(0x55A); } if (var_r31->unk48 == arg0->work[1]) { @@ -892,7 +900,7 @@ void fn_1_962C(omObjData* arg0) { } var_r26 = fn_1_DA48(1, 1); fn_1_DEF4(var_r26, 0, 0); - fn_1_E7C8(lbl_1_bss_F0.unk6, 0, 0x28002C); + fn_1_E7C8(lbl_1_bss_F0.unk6, 0, DATA_MAKE_NUM(DATADIR_M409, 0x2C)); fn_1_E85C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); fn_1_EC1C(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 4.0f, 4.0f, 1.0f); fn_1_ED44(lbl_1_bss_F0.unk6, lbl_1_bss_F0.unk8, 0x80000000); @@ -914,24 +922,26 @@ void fn_1_962C(omObjData* arg0) { if (var_r31->unkC.x <= -150.0f) { var_r31->unkC.x = -150.0f; } - } else { + } + else { var_r27++; } fn_1_A584(var_r31); Hu3DModelPosSet(var_r31->unk0, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); - var_f31 = sin((var_r31->unk4C * M_PI) / 180.0); + var_f31 = sind(var_r31->unk4C); var_r31->unk4C += 3.0f; - Hu3DModelRotSet(var_r31->unk0, 8.0 * sin((var_r31->unk4C * 0.3 * M_PI) / 180.0), var_r31->unk4C * 0.05f, (-var_r31->unk18.z * 0.25f) + (var_f31 * 8.0f)); + Hu3DModelRotSet( + var_r31->unk0, 8.0 * sind(var_r31->unk4C * 0.3), var_r31->unk4C * 0.05f, (-var_r31->unk18.z * 0.25f) + (var_f31 * 8.0f)); } - + if (lbl_1_bss_108 == 2 && var_r27 >= arg0->work[0]) { lbl_1_bss_108++; } - (void)var_r27; } -s32 fn_1_A584(unkStruct10* arg0) { +s32 fn_1_A584(unkStruct10 *arg0) +{ s32 sp20[8]; Vec sp14; Vec sp8; @@ -940,7 +950,7 @@ s32 fn_1_A584(unkStruct10* arg0) { f32 var_f31; s32 var_r28; s32 var_r29; - unkStruct10* var_r31; + unkStruct10 *var_r31; if ((arg0->unk2 == 0) || (arg0->unk2 >= 4U)) { return 0; @@ -949,7 +959,7 @@ s32 fn_1_A584(unkStruct10* arg0) { var_r28 = 0; sp14.x = sp14.y = sp14.z = 0.0f; var_r31 = lbl_1_bss_10C; - + for (var_r29 = 0; var_r29 < 8; var_r29++, var_r31++) { if ((var_r31->unk2 != 0) && (var_r31->unk2 < 4U) && (var_r31 != arg0)) { sp8.x = arg0->unkC.x - var_r31->unkC.x; @@ -971,7 +981,7 @@ s32 fn_1_A584(unkStruct10* arg0) { arg0->unkC.x += sp14.x; arg0->unkC.y += sp14.y; arg0->unkC.z += sp14.z; - var_f31 = (180.0 * (atan2(sp14.x, sp14.y) / M_PI)); + var_f31 = atan2d(sp14.x, sp14.y); if (var_f31 > 180.0f) { var_f31 -= 360.0f; } @@ -983,7 +993,7 @@ s32 fn_1_A584(unkStruct10* arg0) { } arg0->unk18.z = var_f31 = fn_1_AD40(arg0->unk18.z, var_f31, 0.5f); var_r31 = lbl_1_bss_10C; - + for (var_r29 = 0; var_r29 < 8; var_r29++, var_r31++) { if ((var_r31 != arg0) && (var_r31->unk2 != 0) && (var_r31->unk2 < 4U)) { sp8.x = var_r31->unkC.x - arg0->unkC.x; @@ -994,7 +1004,7 @@ s32 fn_1_A584(unkStruct10* arg0) { var_r31->unkC.x += sp8.x * (temp_f29 - temp_f30); var_r31->unkC.y += sp8.y * (temp_f29 - temp_f30); var_r31->unkC.z += sp8.z * (temp_f29 - temp_f30); - var_f31 = (180.0 * (atan2(sp8.x, sp8.y) / M_PI)); + var_f31 = atan2d(sp8.x, sp8.y); if (var_f31 > 180.0f) { var_f31 -= 360.0f; } @@ -1011,23 +1021,25 @@ s32 fn_1_A584(unkStruct10* arg0) { return 1; } -s8 fn_1_A9C0(Vec* arg0, f32* arg1) { +s8 fn_1_A9C0(Vec *arg0, f32 *arg1) +{ f32 sp8; f32 temp_f29; f32 var_f30; f32 var_f28; s32 var_r27; s32 var_r29; - unkStruct10* var_r31; + unkStruct10 *var_r31; var_r27 = -1; var_r31 = lbl_1_bss_10C; var_f30 = *arg1; var_f30 *= var_f30; - + for (var_r29 = 0; var_r29 < 8; var_r29++, var_r31++) { if (((Hu3DModelAttrGet(var_r31->unk0) & 1) == 0) && !(var_r31->unkC.y < 300.0f)) { - temp_f29 = ((arg0->z - var_r31->unkC.z) * (arg0->z - var_r31->unkC.z)) + (((arg0->x - var_r31->unkC.x) * (arg0->x - var_r31->unkC.x)) + ((arg0->y - var_r31->unkC.y) * (arg0->y - var_r31->unkC.y))); + temp_f29 = ((arg0->z - var_r31->unkC.z) * (arg0->z - var_r31->unkC.z)) + + (((arg0->x - var_r31->unkC.x) * (arg0->x - var_r31->unkC.x)) + ((arg0->y - var_r31->unkC.y) * (arg0->y - var_r31->unkC.y))); if (!(temp_f29 > var_f30)) { var_r27 = var_r29; var_f30 = temp_f29; @@ -1040,21 +1052,23 @@ s8 fn_1_A9C0(Vec* arg0, f32* arg1) { u32 lbl_1_data_1EC = 0x41C64E6D; -s32 fn_1_ABB4(void) { +s32 fn_1_ABB4(void) +{ lbl_1_data_1EC *= 0x41C64E6D; lbl_1_data_1EC += 0x3039; return (lbl_1_data_1EC >> 0x10); } -void fn_1_AC08(s32* arg0, s32 arg1) { +void fn_1_AC08(s32 *arg0, s32 arg1) +{ s32 temp_r29; s32 temp_r30; s32 var_r31; - + for (var_r31 = 0; var_r31 < arg1; var_r31++) { arg0[var_r31] = var_r31; } - + for (var_r31 = 0; var_r31 < arg1; var_r31++) { temp_r30 = (arg1 * (fn_1_ABB4() / 65536.0f)); temp_r29 = arg0[var_r31]; @@ -1063,7 +1077,8 @@ void fn_1_AC08(s32* arg0, s32 arg1) { } } -f32 fn_1_AD40(f32 arg0, f32 arg1, f32 arg2) { +f32 fn_1_AD40(f32 arg0, f32 arg1, f32 arg2) +{ f32 var_f31; f32 var_f30; f32 var_f29; @@ -1085,7 +1100,8 @@ f32 fn_1_AD40(f32 arg0, f32 arg1, f32 arg2) { return var_f31; } -f32 fn_1_AE94(f32 arg8, f32 arg9, f32 argA, f32 argB) { +f32 fn_1_AE94(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ f32 temp_f31; f32 var_f30; @@ -1094,7 +1110,8 @@ f32 fn_1_AE94(f32 arg8, f32 arg9, f32 argA, f32 argB) { return var_f30; } -void fn_1_AF0C(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32 arg8) { +void fn_1_AF0C(f32 *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 arg8) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 3; var_r31++) { @@ -1103,14 +1120,16 @@ void fn_1_AF0C(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32 arg8) { } } -f32 fn_1_B028(f32 arg8, f32 arg9, f32 argA, f32 argB) { +f32 fn_1_B028(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ f32 var_f31; var_f31 = (2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA)))); return var_f31; } -void fn_1_B0A0(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32 arg8) { +void fn_1_B0A0(f32 *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 arg8) +{ f32 spC[3]; f32 var_f29; s32 var_r31; @@ -1118,22 +1137,24 @@ void fn_1_B0A0(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32 arg8) { for (var_r31 = 0; var_r31 < 3; var_r31++) { spC[var_r31] = fn_1_B028(arg8, *arg0++, *arg1++, *arg2++); } - + var_f29 = sqrtf((spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1]))); - + if (var_f29) { var_f29 = (1.0 / var_f29); for (var_r31 = 0; var_r31 < 3; var_r31++) { *arg3++ = var_f29 * spC[var_r31]; } - } else { + } + else { *arg3++ = 0.0f; *arg3++ = 0.0f; *arg3++ = 1.0f; } } -f32 fn_1_B378(Vec* arg0) { +f32 fn_1_B378(Vec *arg0) +{ f32 var_f30; f32 var_f29; @@ -1144,24 +1165,28 @@ f32 fn_1_B378(Vec* arg0) { arg0->x *= var_f29; arg0->y *= var_f29; arg0->z *= var_f29; - } else { + } + else { arg0->x = arg0->y = arg0->z = 0.0f; } return var_f30; } -f32 fn_1_B510(Vec arg0, Vec arg1, Vec* arg2, f32 arg8) { +f32 fn_1_B510(Vec arg0, Vec arg1, Vec *arg2, f32 arg8) +{ if (arg8 <= 0.0f) { arg2->x = arg0.x; arg2->y = arg0.y; arg2->z = arg0.z; arg8 = 0.0f; - } else if (arg8 >= 1.0f) { + } + else if (arg8 >= 1.0f) { arg2->x = (arg0.x + arg1.x); arg2->y = (arg0.y + arg1.y); arg2->z = (arg0.z + arg1.z); arg8 = 1.0f; - } else { + } + else { arg2->x = (arg0.x + (arg8 * arg1.x)); arg2->y = (arg0.y + (arg8 * arg1.y)); arg2->z = (arg0.z + (arg8 * arg1.z)); @@ -1169,7 +1194,8 @@ f32 fn_1_B510(Vec arg0, Vec arg1, Vec* arg2, f32 arg8) { return arg8; } -f32 fn_1_B5E8(Vec arg0, Vec arg1, Vec arg2) { +f32 fn_1_B5E8(Vec arg0, Vec arg1, Vec arg2) +{ f32 temp_f30; f32 var_f31; @@ -1181,25 +1207,31 @@ f32 fn_1_B5E8(Vec arg0, Vec arg1, Vec arg2) { return var_f31; } -f32 fn_1_B6A4(Vec* arg0, Vec* arg1, Vec* arg2) { +f32 fn_1_B6A4(Vec *arg0, Vec *arg1, Vec *arg2) +{ Vec sp44; f32 var_f31; if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { - return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); - } else { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + else { var_f31 = fn_1_B5E8(*arg0, *arg1, *arg2); fn_1_B510(*arg1, *arg2, &sp44, var_f31); return ((arg0->z - sp44.z) * (arg0->z - sp44.z)) + (((arg0->x - sp44.x) * (arg0->x - sp44.x)) + ((arg0->y - sp44.y) * (arg0->y - sp44.y))); } } -f32 fn_1_B9E0(Vec* arg0, Vec* arg1, Vec* arg2, Vec* arg3, Vec* arg4) { +f32 fn_1_B9E0(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ f32 var_f31; - + if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { - return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); - } else { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + else { var_f31 = fn_1_B5E8(*arg0, *arg1, *arg2); fn_1_B510(*arg1, *arg2, arg3, var_f31); } @@ -1209,9 +1241,10 @@ f32 fn_1_B9E0(Vec* arg0, Vec* arg1, Vec* arg2, Vec* arg3, Vec* arg4) { return fn_1_B378(arg4); } -void fn_1_BE90(ModelData *model, ParticleData *particle, Mtx matrix) { +void fn_1_BE90(ModelData *model, ParticleData *particle, Mtx matrix) +{ s32 var_r29; - HsfanimStruct01* var_r31; + HsfanimStruct01 *var_r31; var_r31 = particle->unk_48; for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { @@ -1223,13 +1256,14 @@ void fn_1_BE90(ModelData *model, ParticleData *particle, Mtx matrix) { DCFlushRange(particle->unk_48, particle->unk_30 * 0x44); } -f32 fn_1_BF38(s16 arg0) { - MotionData* motionData; - HsfMotion* hsfMotionData; +f32 fn_1_BF38(s16 arg0) +{ + MotionData *motionData; + HsfMotion *hsfMotionData; f32 length; motionData = &Hu3DMotion[arg0]; hsfMotionData = motionData->unk_04->motion; length = hsfMotionData->len; return length; -} \ No newline at end of file +} diff --git a/src/REL/m410Dll/game.c b/src/REL/m410Dll/game.c index 04cd0c6b..5d9671c5 100644 --- a/src/REL/m410Dll/game.c +++ b/src/REL/m410Dll/game.c @@ -78,7 +78,8 @@ void fn_1_34C0(omObjData *object) for (var_r30 = 0; var_r30 < 3; var_r30++) { if (!var_r30) { object->model[var_r30] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 12)); - } else { + } + else { object->model[var_r30] = Hu3DModelLink(*object->model); } Hu3DModelPosSet(object->model[var_r30], 0.0f, 140.0f + (140.0f * var_r30), -790.0f); @@ -98,43 +99,44 @@ void fn_1_3614(omObjData *object) s16 var_r28; switch (object->work[0]) { - case 0: - if (fn_1_2804() == 1) { - object->work[0]++; - object->work[1] = 256; - } - break; - case 1: - if (!--object->work[1]) { - object->work[0]++; - object->work[1] = 90; - lbl_1_bss_50 = 0.0f; - lbl_1_bss_4C = -10.000001f; - lbl_1_bss_48 = 2.0000002f; - lbl_1_bss_34 = HuAudFXPlay(1381); - } - break; - case 2: - if (!--object->work[1]) { - object->work[0]++; - lbl_1_bss_4C = 0.0f; - lbl_1_bss_48 = 0.40000007f; - } - break; - case 3: - if (fn_1_281C() == 2) { - object->work[0]++; - lbl_1_bss_4C = -2.0000002f; - lbl_1_bss_48 = 0.05000001f; - } - break; + case 0: + if (fn_1_2804() == 1) { + object->work[0]++; + object->work[1] = 256; + } + break; + case 1: + if (!--object->work[1]) { + object->work[0]++; + object->work[1] = 90; + lbl_1_bss_50 = 0.0f; + lbl_1_bss_4C = -10.000001f; + lbl_1_bss_48 = 2.0000002f; + lbl_1_bss_34 = HuAudFXPlay(1381); + } + break; + case 2: + if (!--object->work[1]) { + object->work[0]++; + lbl_1_bss_4C = 0.0f; + lbl_1_bss_48 = 0.40000007f; + } + break; + case 3: + if (fn_1_281C() == 2) { + object->work[0]++; + lbl_1_bss_4C = -2.0000002f; + lbl_1_bss_48 = 0.05000001f; + } + break; } if (fn_1_281C() == 2) { if (!--lbl_1_data_D8) { lbl_1_bss_4C = -lbl_1_bss_4C; lbl_1_data_D8 = 900; } - } else if (fn_1_281C() > 2) { + } + else if (fn_1_281C() > 2) { lbl_1_bss_4C = 0.0f; } if (lbl_1_bss_50 != lbl_1_bss_4C) { @@ -143,7 +145,8 @@ void fn_1_3614(omObjData *object) if (lbl_1_bss_50 > lbl_1_bss_4C) { lbl_1_bss_50 = lbl_1_bss_4C; } - } else { + } + else { lbl_1_bss_50 -= lbl_1_bss_48; if (lbl_1_bss_50 < lbl_1_bss_4C) { lbl_1_bss_50 = lbl_1_bss_4C; @@ -159,7 +162,8 @@ void fn_1_3614(omObjData *object) var_f31 = (0.5 * (16384.0 * fabs(lbl_1_bss_50))) - 8191.0; if (var_f31 < -8191.0f) { var_f31 = -8191.0f; - } else if (var_f31 > 8191.0f) { + } + else if (var_f31 > 8191.0f) { var_f31 = 8191.0f; } HuAudFXPitchSet(lbl_1_bss_34, var_f31); @@ -169,7 +173,8 @@ void fn_1_3614(omObjData *object) var_r30 = &Hu3DData[object->model[var_r29]]; if (var_r29 & 1) { var_f29 = lbl_1_bss_50; - } else { + } + else { var_f29 = -lbl_1_bss_50; } var_f30 = var_f29; @@ -178,7 +183,8 @@ void fn_1_3614(omObjData *object) if (var_r30->pos.x <= -40.0f) { var_r30->pos.x += 40.0f; } - } else { + } + else { if (var_r30->pos.x >= 40.0f) { var_r30->pos.x -= 40.0f; } @@ -212,7 +218,7 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument? var_r24 = 0; if (omPauseChk()) { - + return; } @@ -310,7 +316,8 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument? for (var_r26 = 0; var_r26 < 18; var_r26++, var_r28++) { if (var_r30->unk_40 != var_r28 || var_r28->unk_40 != var_r30) { - var_f31 = fn_1_4FEC(var_r30->unk_04, var_r30->unk_1C, var_r30->unk_28, var_r28->unk_04, var_r28->unk_1C, var_r28->unk_28, var_r28->unk_2C); + var_f31 = fn_1_4FEC( + var_r30->unk_04, var_r30->unk_1C, var_r30->unk_28, var_r28->unk_04, var_r28->unk_1C, var_r28->unk_28, var_r28->unk_2C); if (var_f31 >= 0.0f && var_f31 < var_f30) { var_r30->unk_00_field5 = 0; if (var_f31 <= var_f29) { @@ -346,40 +353,40 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument? } for (var_r29 = 0; var_r29 < var_r27; var_r29++) { switch (sp1B0[var_r29].unk_00) { - case 0: - fn_1_5AF4(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_04); - sp1B0[var_r29].unk_08->unk_40 = NULL; - sp1B0[var_r29].unk_08->unk_3C++; - break; - case 1: - fn_1_61DC(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_0C_unk); - sp1B0[var_r29].unk_08->unk_40 = sp1B0[var_r29].unk_0C_unk; - sp1B0[var_r29].unk_0C_unk->unk_40 = sp1B0[var_r29].unk_08; - sp1B0[var_r29].unk_08->unk_3C++; - sp1B0[var_r29].unk_0C_unk->unk_3C++; - break; - case 2: - fn_1_66B8(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_0C_unk); - sp1B0[var_r29].unk_08->unk_40 = sp1B0[var_r29].unk_0C_unk; - sp1B0[var_r29].unk_08->unk_3C++; - break; - case 3: - fn_1_6364(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_0C_unk); - sp1B0[var_r29].unk_08->unk_40 = sp1B0[var_r29].unk_0C_unk; - sp1B0[var_r29].unk_0C_unk->unk_40 = sp1B0[var_r29].unk_08; - sp1B0[var_r29].unk_08->unk_3C++; - sp1B0[var_r29].unk_08->unk_44 = 2; - if (PSVECMag(&sp1B0[var_r29].unk_08->unk_1C) > 10.0f) { - HuAudFXPlay(1377); - } - break; + case 0: + fn_1_5AF4(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_04); + sp1B0[var_r29].unk_08->unk_40 = NULL; + sp1B0[var_r29].unk_08->unk_3C++; + break; + case 1: + fn_1_61DC(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_0C_unk); + sp1B0[var_r29].unk_08->unk_40 = sp1B0[var_r29].unk_0C_unk; + sp1B0[var_r29].unk_0C_unk->unk_40 = sp1B0[var_r29].unk_08; + sp1B0[var_r29].unk_08->unk_3C++; + sp1B0[var_r29].unk_0C_unk->unk_3C++; + break; + case 2: + fn_1_66B8(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_0C_unk); + sp1B0[var_r29].unk_08->unk_40 = sp1B0[var_r29].unk_0C_unk; + sp1B0[var_r29].unk_08->unk_3C++; + break; + case 3: + fn_1_6364(sp1B0[var_r29].unk_08, sp1B0[var_r29].unk_0C_unk); + sp1B0[var_r29].unk_08->unk_40 = sp1B0[var_r29].unk_0C_unk; + sp1B0[var_r29].unk_0C_unk->unk_40 = sp1B0[var_r29].unk_08; + sp1B0[var_r29].unk_08->unk_3C++; + sp1B0[var_r29].unk_08->unk_44 = 2; + if (VECMag(&sp1B0[var_r29].unk_08->unk_1C) > 10.0f) { + HuAudFXPlay(1377); + } + break; } } var_f30 *= 1.0f - var_f29; var_r24++; } while (var_r24 < 100); - (void)var_r24; - + (void)var_r24; + for (var_r29 = 0; var_r29 < var_r25; var_r29++) { var_r31 = spC0[var_r29]; var_r31->unk_04.x += var_r31->unk_1C.x * var_f30; @@ -395,11 +402,11 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument? } for (var_r29 = 0; var_r29 < var_r25; var_r29++) { var_r30 = spC0[var_r29]; - PSVECSubtract(&var_r30->unk_04, &var_r30->unk_10, &spB4); + VECSubtract(&var_r30->unk_04, &var_r30->unk_10, &spB4); var_r28 = lbl_1_bss_54->data; for (var_r26 = 0; var_r26 < 18; var_r26++, var_r28++) { - PSVECSubtract(&var_r28->unk_04, &var_r28->unk_10, &spA8); + VECSubtract(&var_r28->unk_04, &var_r28->unk_10, &spA8); if (fn_1_598C(&var_r30->unk_10, &spB4, var_r30->unk_28, &var_r28->unk_10, &spA8, var_r28->unk_28, var_r28->unk_2C) && !var_r30->unk_00_field1 && var_r28->unk_38 == NULL) { var_r30->unk_00_field1 = 1; @@ -434,7 +441,8 @@ float fn_1_48D8(UnkM410Struct2 *arg0, u8 *arg1) if (0.0f != arg0->unk_1C.x) { if (arg0->unk_1C.x < 0.0f) { var_f29 = (-500.0f - arg0->unk_04.x + arg0->unk_28) / arg0->unk_1C.x; - } else { + } + else { var_f29 = (500.0f - arg0->unk_04.x - arg0->unk_28) / arg0->unk_1C.x; } var_f31 = var_f29; @@ -454,7 +462,8 @@ float fn_1_48D8(UnkM410Struct2 *arg0, u8 *arg1) if (var_f31 >= 0.0f && var_f31 < 1.0f) { if (var_f31 == var_f30) { *arg1 |= 2; - } else if (var_f31 < var_f30) { + } + else if (var_f31 < var_f30) { var_f30 = var_f31; *arg1 = 2; } @@ -468,7 +477,8 @@ float fn_1_48D8(UnkM410Struct2 *arg0, u8 *arg1) if (var_f31 >= 0.0f && var_f31 < 1.0f) { if (var_f31 == var_f30) { *arg1 |= 4; - } else if (var_f31 < var_f30) { + } + else if (var_f31 < var_f30) { *arg1 = 4; var_f30 = var_f31; } @@ -490,9 +500,9 @@ float fn_1_4C04(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9) float var_f22; float var_f21; - PSVECSubtract(&arg2, &arg0, &arg2); - PSVECSubtract(&arg3, &arg1, &arg3); - if (PSVECMag(&arg2) > arg9 + (arg8 + PSVECMag(&arg3))) { + VECSubtract(&arg2, &arg0, &arg2); + VECSubtract(&arg3, &arg1, &arg3); + if (VECMag(&arg2) > arg9 + (arg8 + VECMag(&arg3))) { return -1.0f; } var_f22 = (arg8 + arg9) * (arg8 + arg9); @@ -533,10 +543,10 @@ float fn_1_4FEC(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9, float var_f21; float var_f18; - PSVECSubtract(&arg0, &arg2, &arg0); - PSVECSubtract(&arg1, &arg3, &arg1); + VECSubtract(&arg0, &arg2, &arg0); + VECSubtract(&arg1, &arg3, &arg1); - if (PSVECMag(&arg0) > (arg8) + PSVECMag(&arg1) + arg9 + argA) { + if (VECMag(&arg0) > (arg8) + VECMag(&arg1) + arg9 + argA) { return -1.0f; } arg8 += arg9; @@ -580,10 +590,10 @@ float fn_1_55C8(Vec arg0, Vec arg1, float arg8, Vec arg2, float arg9) float var_f22; float var_f21; - PSVECSubtract(&arg0, &arg2, &arg0); + VECSubtract(&arg0, &arg2, &arg0); arg0.y = 0.0f; arg1.y = 0.0f; - if (PSVECMag(&arg0) > arg8 + PSVECMag(&arg1) + arg9) { + if (VECMag(&arg0) > arg8 + VECMag(&arg1) + arg9) { return -1.0f; } var_f22 = (arg8 + arg9) * (arg8 + arg9); @@ -618,9 +628,9 @@ s32 fn_1_598C(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9 Vec sp20; float var_f31; - PSVECSubtract(arg0, arg2, &sp38); - PSVECSubtract(arg1, arg3, &sp2C); - if (PSVECMag(&sp38) > arg8 + PSVECMag(&sp2C) + arg9 + argA) { + VECSubtract(arg0, arg2, &sp38); + VECSubtract(arg1, arg3, &sp2C); + if (VECMag(&sp38) > arg8 + VECMag(&sp2C) + arg9 + argA) { return 0; } if (sp2C.y < 0.0f) { @@ -629,7 +639,7 @@ s32 fn_1_598C(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9 sp20.x = var_f31 * sp2C.x + sp38.x; sp20.y = var_f31 * sp2C.y + sp38.y; sp20.z = var_f31 * sp2C.z + sp38.z; - if (PSVECMag(&sp20) < argA) { + if (VECMag(&sp20) < argA) { return 1; } } @@ -650,7 +660,8 @@ void fn_1_5AF4(UnkM410Struct2 *arg0, u8 arg1) if (fabs(arg0->unk_1C.y) > 10.0) { if (arg0->unk_04.z < -400.0f) { HuAudFXPlay(1380); - } else { + } + else { HuAudFXPlay(1379); } } @@ -675,17 +686,17 @@ void fn_1_5CA0(Vec arg0, Vec arg1, Vec arg2, Vec *arg3, Vec *arg4) float var_f28; sp34 = arg1; - var_f31 = PSVECMag(&sp34); + var_f31 = VECMag(&sp34); if (var_f31 < 0.001f) { arg3->x = arg3->y = arg3->z = 0.0f; arg4->x = arg4->y = arg4->z = 0.0f; return; } - PSVECNormalize(&sp34, &sp34); + VECNormalize(&sp34, &sp34); var_f31 *= 0.9f; - PSVECSubtract(&arg2, &arg0, &sp28); - PSVECNormalize(&sp28, &sp28); - var_f28 = PSVECDotProduct(&sp34, &sp28); + VECSubtract(&arg2, &arg0, &sp28); + VECNormalize(&sp28, &sp28); + var_f28 = VECDotProduct(&sp34, &sp28); if (var_f28 < 0.0f) { arg3->x = arg1.x; arg3->y = arg1.y; @@ -697,11 +708,12 @@ void fn_1_5CA0(Vec arg0, Vec arg1, Vec arg2, Vec *arg3, Vec *arg4) var_f30 = var_f31 - var_f29; if (var_f30 < 0.001f) { arg3->x = arg3->y = arg3->z = 0.0f; - } else { - PSVECCrossProduct(&sp34, &sp28, &sp10); - PSVECNormalize(&sp10, &sp10); - PSVECCrossProduct(&sp28, &sp10, &sp1C); - PSVECNormalize(&sp1C, &sp1C); + } + else { + VECCrossProduct(&sp34, &sp28, &sp10); + VECNormalize(&sp10, &sp10); + VECCrossProduct(&sp28, &sp10, &sp1C); + VECNormalize(&sp1C, &sp1C); arg3->x = sp1C.x * var_f30; arg3->y = sp1C.y * var_f30; arg3->z = sp1C.z * var_f30; @@ -722,17 +734,18 @@ void fn_1_5EDC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) arg0->unk_1C.x *= 0.9f; arg0->unk_1C.y *= 0.9f; arg0->unk_1C.z *= 0.9f; - PSVECSubtract(&arg0->unk_04, &arg1->unk_04, &sp14); - PSVECNormalize(&sp14, &sp8); - var_f30 = (arg0->unk_28 + arg1->unk_28) - PSVECMag(&sp14); + VECSubtract(&arg0->unk_04, &arg1->unk_04, &sp14); + VECNormalize(&sp14, &sp8); + var_f30 = (arg0->unk_28 + arg1->unk_28) - VECMag(&sp14); if (var_f30 > 0.001f) { - PSVECSubtract(&arg0->unk_1C, &arg1->unk_1C, &sp14); - if (PSVECMag(&sp14) < 0.001f) { + VECSubtract(&arg0->unk_1C, &arg1->unk_1C, &sp14); + if (VECMag(&sp14) < 0.001f) { arg0->unk_04.x += sp8.x * var_f30; arg0->unk_04.y += sp8.y * var_f30; arg0->unk_04.z += sp8.z * var_f30; - } else { - PSVECNormalize(&sp14, &sp14); + } + else { + VECNormalize(&sp14, &sp14); arg0->unk_04.x -= sp14.x * var_f30; arg0->unk_04.y -= sp14.y * var_f30; arg0->unk_04.z -= sp14.z * var_f30; @@ -744,13 +757,13 @@ void fn_1_5EDC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) arg0->unk_1C.y += 2.0f * sp8.y * var_f31; arg0->unk_1C.z += 2.0f * sp8.z * var_f31; } - PSVECSubtract(&arg1->unk_1C, &arg0->unk_1C, &sp14); - var_f29 = PSVECMag(&sp14); + VECSubtract(&arg1->unk_1C, &arg0->unk_1C, &sp14); + var_f29 = VECMag(&sp14); if (var_f29 < 0.001f) { return; } - PSVECNormalize(&sp14, &sp14); - var_f31 = PSVECDotProduct(&sp8, &sp14); + VECNormalize(&sp14, &sp14); + var_f31 = VECDotProduct(&sp8, &sp14); if (var_f31 > 0.0f) { arg0->unk_1C.x += sp8.x * var_f31 * var_f29; arg0->unk_1C.y += sp8.y * var_f31 * var_f29; @@ -781,15 +794,16 @@ void fn_1_61DC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) if (arg0->unk_00_field1 || arg1->unk_00_field1) { if (arg0->unk_00_field1) { fn_1_5EDC(arg1, arg0); - } else { + } + else { fn_1_5EDC(arg0, arg1); } return; } fn_1_5CA0(arg0->unk_04, arg0->unk_1C, arg1->unk_04, &sp68, &sp74); fn_1_5CA0(arg1->unk_04, arg1->unk_1C, arg0->unk_04, &sp50, &sp5C); - PSVECAdd(&sp68, &sp5C, &arg0->unk_1C); - PSVECAdd(&sp74, &sp50, &arg1->unk_1C); + VECAdd(&sp68, &sp5C, &arg0->unk_1C); + VECAdd(&sp74, &sp50, &arg1->unk_1C); } void fn_1_6364(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) @@ -804,27 +818,28 @@ void fn_1_6364(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) arg0->unk_1C.x *= 0.7f; arg0->unk_1C.y *= 0.7f; arg0->unk_1C.z *= 0.7f; - PSVECSubtract(&arg0->unk_04, &arg1->unk_04, &sp14); + VECSubtract(&arg0->unk_04, &arg1->unk_04, &sp14); sp14.y = 0.0f; - PSVECNormalize(&sp14, &sp14); + VECNormalize(&sp14, &sp14); sp20.x = sp14.x * arg1->unk_2C + arg1->unk_04.x; sp20.y = arg1->unk_04.y; sp20.z = sp14.z * arg1->unk_2C + arg1->unk_04.z; - PSVECSubtract(&arg0->unk_04, &sp20, &sp14); - PSVECNormalize(&sp14, &sp8); - var_f31 = (arg0->unk_28 + arg1->unk_28) - PSVECMag(&sp14); + VECSubtract(&arg0->unk_04, &sp20, &sp14); + VECNormalize(&sp14, &sp8); + var_f31 = (arg0->unk_28 + arg1->unk_28) - VECMag(&sp14); if (var_f31 > 0.001f) { - PSVECSubtract(&arg0->unk_1C, &arg1->unk_1C, &sp14); - if (PSVECMag(&sp14) < 0.001f) { + VECSubtract(&arg0->unk_1C, &arg1->unk_1C, &sp14); + if (VECMag(&sp14) < 0.001f) { arg0->unk_04.x += sp8.x * var_f31; arg0->unk_04.y += sp8.y * var_f31; arg0->unk_04.z += sp8.z * var_f31; - } else { - PSVECNormalize(&sp14, &sp14); + } + else { + VECNormalize(&sp14, &sp14); arg0->unk_04.x -= sp14.x * var_f31; arg0->unk_04.y -= sp14.y * var_f31; arg0->unk_04.z -= sp14.z * var_f31; @@ -836,11 +851,11 @@ void fn_1_6364(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) arg0->unk_1C.y += 2.0f * sp8.y * var_f30; arg0->unk_1C.z += 2.0f * sp8.z * var_f30; } - PSVECSubtract(&arg1->unk_1C, &arg0->unk_1C, &sp14); - var_f31 = PSVECMag(&sp14); + VECSubtract(&arg1->unk_1C, &arg0->unk_1C, &sp14); + var_f31 = VECMag(&sp14); if (!(var_f31 < 0.001f)) { - PSVECNormalize(&sp14, &sp14); - var_f30 = PSVECDotProduct(&sp8, &sp14); + VECNormalize(&sp14, &sp14); + var_f30 = VECDotProduct(&sp8, &sp14); if (var_f30 > 0.0f) { arg0->unk_1C.x += sp8.x * var_f30 * var_f31; arg0->unk_1C.y += sp8.y * var_f30 * var_f31; @@ -854,9 +869,9 @@ void fn_1_66B8(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1) // TODO maybe UnkM410 Vec spC; float var_f31; - PSVECSubtract(&arg0->unk_04, (Vec *)&arg1->unk_10.z, &spC); + VECSubtract(&arg0->unk_04, (Vec *)&arg1->unk_10.z, &spC); spC.y = 0.0f; - PSVECNormalize(&spC, &spC); + VECNormalize(&spC, &spC); var_f31 = -arg0->unk_1C.x * spC.x - arg0->unk_1C.z * spC.z; arg0->unk_1C.x += 2.0f * spC.x * var_f31; arg0->unk_1C.z += 2.0f * spC.z * var_f31; @@ -882,11 +897,12 @@ void fn_1_67D4(omObjData *arg0) if ((var_r30 % 15) == 0) { arg0->model[var_r30] = Hu3DModelCreateFile(lbl_1_data_DC[GWPlayerCfg[var_r29->unk_34].character]); var_r28 = arg0->model[var_r30]; - } else { + } + else { arg0->model[var_r30] = Hu3DModelLink(var_r28); } var_r29->unk_30 = arg0->model[var_r30]; - Hu3DModelAttrSet(arg0->model[var_r30], 1); + Hu3DModelAttrSet(arg0->model[var_r30], HU3D_ATTR_DISPOFF); Hu3DModelShadowSet(arg0->model[var_r30]); } arg0->func = fn_1_6968; @@ -906,22 +922,24 @@ void fn_1_6968(omObjData *object) for (var_r30 = 0; var_r30 < 60; var_r30++, var_r31++) { if (!var_r31->unk_00_field0) { - Hu3DModelAttrSet(var_r31->unk_30, 1); + Hu3DModelAttrSet(var_r31->unk_30, HU3D_ATTR_DISPOFF); continue; } if (var_r31->unk_00_field1) { Hu3DModelObjPosGet(var_r31->unk_38->unk_30, "i_hook", &sp8); - PSVECSubtract(&sp8, &var_r31->unk_04, &sp8); + VECSubtract(&sp8, &var_r31->unk_04, &sp8); if (var_r31->unk_36 != 0) { var_f31 = cosd(90.0f * var_r31->unk_36 / 10.0f); var_r31->unk_1C.x = var_f31 * sp8.x; var_r31->unk_1C.y = var_f31 * sp8.y; var_r31->unk_1C.z = var_f31 * sp8.z; var_r31->unk_36--; - } else { + } + else { var_r31->unk_1C = sp8; } - } else { + } + else { var_r31->unk_1C.y += -0.95277786f; if (var_r31->unk_00_field3 && (fn_1_281C() != 4 || (fn_1_281C() == 4 && var_r31->unk_36 < 15))) { if (--var_r31->unk_36 == 0) { @@ -936,21 +954,23 @@ void fn_1_6968(omObjData *object) sp8.x = var_r31->unk_1C.z; sp8.y = 0.0f; sp8.z = -var_r31->unk_1C.x; - var_f30 = PSVECMag(&sp8) / 30.000002f; + var_f30 = VECMag(&sp8) / 30.000002f; if (var_f30 >= 0.001f) { - PSMTXRotAxisRad(sp14, &sp8, var_f30); + MTXRotAxisRad(sp14, &sp8, var_f30); var_r28 = &Hu3DData[object->model[var_r30]]; - PSMTXConcat(sp14, var_r28->unk_F0, var_r28->unk_F0); + MTXConcat(sp14, var_r28->unk_F0, var_r28->unk_F0); } } - } else { + } + else { var_r31->unk_44--; } } if (var_r31->unk_00_field2) { - Hu3DModelAttrReset(var_r31->unk_30, 1); - } else { - Hu3DModelAttrSet(var_r31->unk_30, 1); + Hu3DModelAttrReset(var_r31->unk_30, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(var_r31->unk_30, HU3D_ATTR_DISPOFF); } Hu3DModelPosSet(object->model[var_r30], var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z); } @@ -960,12 +980,12 @@ void fn_1_6968(omObjData *object) for (var_r30 = 0; var_r30 < 60; var_r30++, var_r31++) { if (var_r31->unk_00_field0) { fn_1_7520(&var_r31->unk_04); - Hu3DModelAttrSet(var_r31->unk_30, 1); + Hu3DModelAttrSet(var_r31->unk_30, HU3D_ATTR_DISPOFF); var_r31->unk_00_field0 = 0; } } lbl_1_bss_58->func = NULL; - Hu3DModelAttrReset(lbl_1_bss_38, 1); + Hu3DModelAttrReset(lbl_1_bss_38, HU3D_ATTR_DISPOFF); fn_1_287C(4); } } @@ -992,8 +1012,8 @@ void fn_1_6DB4(omObjData *object) var_r31->unk_34 = var_r29 / 6; object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_104[var_r31->unk_34]); var_r28 = object->model[var_r29]; - (void)var_r28; - Hu3DModelAttrSet(object->model[var_r29], 0x40000002); + (void)var_r28; + Hu3DModelAttrSet(object->model[var_r29], HU3D_MOTATTR_PAUSE); Hu3DData[object->model[var_r29]].cluster_attr[0] = 0; var_r31->unk_30 = object->model[var_r29]; var_r31->unk_32 = var_r29; @@ -1010,15 +1030,16 @@ void fn_1_6DB4(omObjData *object) if (!var_r29) { object->model[var_r29 + 0x12] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 10)); - } else { + } + else { object->model[var_r29 + 0x12] = Hu3DModelLink(object->model[18]); } Hu3DModelShadowMapSet(object->model[var_r29 + 18]); Hu3DModelPosSet(object->model[var_r29 + 18], var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z); if (!var_r29) { object->model[var_r29 + 36] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 11)); - - } else { + } + else { object->model[var_r29 + 36] = Hu3DModelLink(object->model[36]); } Hu3DModelPosSet(object->model[var_r29 + 0x24], 20.0f + var_r31->unk_04.x, -10.0f + var_r31->unk_04.y, var_r31->unk_04.z); @@ -1037,12 +1058,13 @@ void fn_1_7138(omObjData *object) for (var_r29 = 0; var_r29 < 18; var_r29++, var_r31++) { if (var_r31->unk_34 & 1) { var_f31 = lbl_1_bss_50; - } else { + } + else { var_f31 = -lbl_1_bss_50; } var_r31->unk_1C.x = var_f31; if (var_r31->unk_00_field4) { - Hu3DModelAttrReset(object->model[var_r29], 0x40000002); + Hu3DModelAttrReset(object->model[var_r29], HU3D_MOTATTR_PAUSE); Hu3DMotionSpeedSet(object->model[var_r29], 4.0f); Hu3DMotionSet(object->model[var_r29], 0); Hu3DMotionClusterNoSet(object->model[var_r29], Hu3DData[object->model[var_r29]].unk_10[0], 0); @@ -1054,7 +1076,8 @@ void fn_1_7138(omObjData *object) var_r31->unk_04.x += 1500.0f; var_r31->unk_00_field6 = 1; } - } else if (var_r31->unk_04.x > 750.0f) { + } + else if (var_r31->unk_04.x > 750.0f) { var_r31->unk_04.x -= 1500.0f; var_r31->unk_00_field6 = 1; } @@ -1085,7 +1108,7 @@ void fn_1_7494(void) var_r31 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); lbl_1_bss_38 = Hu3DParticleCreate(var_r31, 60); Hu3DParticleHookSet(lbl_1_bss_38, fn_1_75A0); - Hu3DModelAttrSet(lbl_1_bss_38, 1); + Hu3DModelAttrSet(lbl_1_bss_38, HU3D_ATTR_DISPOFF); } void fn_1_7520(Vec *arg0) @@ -1120,10 +1143,10 @@ void fn_1_75A0(ModelData *model, ParticleData *particle, Mtx matrix) var_r30 = particle->unk_48; for (var_r29 = 0; var_r29 < particle->unk_02; var_r29++, var_r30++) { - var_r30->unk40.a = var_r28; // 43? + var_r30->unk40.a = var_r28; // 43? } if (--lbl_1_data_110 == 0) { - model->attr |= 1; + model->attr |= 1; } DCStoreRange(particle->unk_48, particle->unk_30 * 0x44); } @@ -1134,20 +1157,20 @@ s32 fn_1_76B8(Vec arg0, Vec arg1, u16 arg2) s32 var_r30; var_r31 = &var_r31[arg2 * 15]; - for(var_r30=0; var_r30<15; var_r30++, var_r31++) { - if (!var_r31->unk_00_field0) { - *(s16 *)var_r31 = 0; - var_r31->unk_00_field0 = 1; - var_r31->unk_00_field2 = 1; - var_r31->unk_04 = arg0; - var_r31->unk_1C = arg1; - var_r31->unk_28 = 30.000002f; - var_r31->unk_38 = NULL; - var_r31->unk_36 = 0; - return 1; - } - } - return 0; + for (var_r30 = 0; var_r30 < 15; var_r30++, var_r31++) { + if (!var_r31->unk_00_field0) { + *(s16 *)var_r31 = 0; + var_r31->unk_00_field0 = 1; + var_r31->unk_00_field2 = 1; + var_r31->unk_04 = arg0; + var_r31->unk_1C = arg1; + var_r31->unk_28 = 30.000002f; + var_r31->unk_38 = NULL; + var_r31->unk_36 = 0; + return 1; + } + } + return 0; } void fn_1_77A4(u16 arg0, u16 arg1, u16 arg2) @@ -1193,7 +1216,8 @@ void fn_1_7888(u16 arg0, u16 arg1, Vec *arg2) while (sp8.x < -750.0f) { sp8.x += 1500.0f; } - } else { + } + else { while (sp8.x > 750.0f) { sp8.x -= 1500.0f; } @@ -1214,8 +1238,8 @@ s32 fn_1_79F8(s16 arg0, char *arg1, Mtx arg2) var_r30 = var_r31->hsfData; lbl_1_bss_30 = 0; mtxRot(sp14, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); - PSMTXScale(sp44, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); - PSMTXConcat(sp14, sp44, sp44); + MTXScale(sp44, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp14, sp44, sp44); mtxTransCat(sp44, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); fn_1_7AC4(var_r30->root, sp44, arg1, arg2); return lbl_1_bss_30; @@ -1250,12 +1274,12 @@ void fn_1_7AC4(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) var_r31 = &arg0->data.curr; mtxRot(sp12C, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); - PSMTXScale(sp15C, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); - PSMTXConcat(sp12C, sp15C, sp15C); + MTXScale(sp15C, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp12C, sp15C, sp15C); mtxTransCat(sp15C, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - PSMTXConcat(arg1, sp15C, sp15C); + MTXConcat(arg1, sp15C, sp15C); if (!strcmp(arg2, arg0->name)) { - PSMTXCopy(sp15C, arg3); + MTXCopy(sp15C, arg3); lbl_1_bss_30 = 1; } @@ -1264,12 +1288,12 @@ void fn_1_7AC4(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) if (!lbl_1_bss_30) { var_r30 = &var_r27->data.curr; mtxRot(spFC, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); - PSMTXScale(spCC, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); - PSMTXConcat(spFC, spCC, spCC); + MTXScale(spCC, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); + MTXConcat(spFC, spCC, spCC); mtxTransCat(spCC, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); - PSMTXConcat(sp15C, spCC, spCC); + MTXConcat(sp15C, spCC, spCC); if (!strcmp(arg2, var_r27->name)) { - PSMTXCopy(spCC, arg3); + MTXCopy(spCC, arg3); lbl_1_bss_30 = 1; } for (var_r22 = 0; var_r22 < var_r27->data.childrenCount; var_r22++) { @@ -1277,12 +1301,12 @@ void fn_1_7AC4(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) if (!lbl_1_bss_30) { var_r29 = &var_r26->data.curr; mtxRot(sp9C, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); - PSMTXScale(sp6C, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z); - PSMTXConcat(sp9C, sp6C, sp6C); + MTXScale(sp6C, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z); + MTXConcat(sp9C, sp6C, sp6C); mtxTransCat(sp6C, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); - PSMTXConcat(spCC, sp6C, sp6C); + MTXConcat(spCC, sp6C, sp6C); if (!strcmp(arg2, var_r26->name)) { - PSMTXCopy(sp6C, arg3); + MTXCopy(sp6C, arg3); lbl_1_bss_30 = 1; } @@ -1291,12 +1315,12 @@ void fn_1_7AC4(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) if (!lbl_1_bss_30) { var_r28 = &var_r25->data.curr; mtxRot(sp3C, var_r28->rot.x, var_r28->rot.y, var_r28->rot.z); - PSMTXScale(spC, var_r28->scale.x, var_r28->scale.y, var_r28->scale.z); - PSMTXConcat(sp3C, spC, spC); + MTXScale(spC, var_r28->scale.x, var_r28->scale.y, var_r28->scale.z); + MTXConcat(sp3C, spC, spC); mtxTransCat(spC, var_r28->pos.x, var_r28->pos.y, var_r28->pos.z); - PSMTXConcat(sp6C, spC, spC); + MTXConcat(sp6C, spC, spC); if (!strcmp(arg2, var_r25->name)) { - PSMTXCopy(spC, arg3); + MTXCopy(spC, arg3); lbl_1_bss_30 = 1; } diff --git a/src/REL/m410Dll/main.c b/src/REL/m410Dll/main.c index 2b6b53a7..e6855848 100644 --- a/src/REL/m410Dll/main.c +++ b/src/REL/m410Dll/main.c @@ -5,7 +5,6 @@ #include "game/minigame_seq.h" #include "game/object.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" #include "REL/m410Dll.h" @@ -94,7 +93,7 @@ void ObjectSetup(void) sp8.x = sp8.z = 0.0f; sp8.y = lbl_1_data_18.z; mtxRot(sp20, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f); - PSMTXMultVec(sp20, &sp8, &sp8); + MTXMultVec(sp20, &sp8, &sp8); Hu3DGLightPosAimSetV(lbl_1_bss_16, &sp8, &sp14); Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14); lbl_1_bss_14 = lbl_1_bss_12 = lbl_1_bss_10 = -1; @@ -158,37 +157,36 @@ void fn_1_63C(omObjData *object) return; } switch (var_r31->unk_00) { - case 0: - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 5000.0f, 1.2f); - var_r31->unk_00 = 1; - var_r31->unk_10 = 0; - object->func = fn_1_19C8(lbl_1_bss_28, object); - break; - case 1: - var_r31->unk_00 = 2; - var_r31->unk_18 = 0; - object->func = fn_1_FF0; - break; - case 2: - var_r31->unk_00 = 3; - var_r31->unk_28 = 0; - object->func = fn_1_216C(lbl_1_bss_28, object); - break; - case 3: - case 4: - var_r31->unk_08 = 1; - var_r31->unk_00 = 5; - object->func = fn_1_ABC; - break; - case 5: - default: - var_r31->unk_00 = 5; - object->func = fn_1_DEC; - break; + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 5000.0f, 1.2f); + var_r31->unk_00 = 1; + var_r31->unk_10 = 0; + object->func = fn_1_19C8(lbl_1_bss_28, object); + break; + case 1: + var_r31->unk_00 = 2; + var_r31->unk_18 = 0; + object->func = fn_1_FF0; + break; + case 2: + var_r31->unk_00 = 3; + var_r31->unk_28 = 0; + object->func = fn_1_216C(lbl_1_bss_28, object); + break; + case 3: + case 4: + var_r31->unk_08 = 1; + var_r31->unk_00 = 5; + object->func = fn_1_ABC; + break; + case 5: + default: + var_r31->unk_00 = 5; + object->func = fn_1_DEC; + break; } var_r31->unk_04 = 0; - } void fn_1_7A8(omObjData *object) @@ -233,38 +231,36 @@ void fn_1_FF0(omObjData *object) fn_1_5A8(object); switch (var_r29->unk_14) { - case 0: - var_r29->unk_1C = 30; - var_r29->unk_20 = 60; - lbl_1_bss_14 = MGSeqCreate(3, 0); - MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f); - CRot.x = -11.2f; - CRot.y = CRot.z = 0.0f; - Center.x = 0.0f; - Center.y = 367.0f; - Center.z = 252.0f; - CZoom = 592.0f; - var_r29->unk_14 = 1; - var_r29->unk_18 = 0; - break; - - case 1: - if (lbl_1_bss_4 < 0 && MGSeqStatGet(lbl_1_bss_14) & 16) { - lbl_1_bss_4 = HuAudSeqPlay(71); - } - if (!MGSeqStatGet(lbl_1_bss_14) && !var_r29->unk_08) { - lbl_1_bss_1C = MGSeqCreate(1, var_r29->unk_1C, -1, -1); - var_r29->unk_14 = 2; - var_r29->unk_18 = 0; - object->func = fn_1_139C; - } - break; - - default: - break; - } + case 0: + var_r29->unk_1C = 30; + var_r29->unk_20 = 60; + lbl_1_bss_14 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f); + CRot.x = -11.2f; + CRot.y = CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 367.0f; + Center.z = 252.0f; + CZoom = 592.0f; + var_r29->unk_14 = 1; + var_r29->unk_18 = 0; + break; - + case 1: + if (lbl_1_bss_4 < 0 && MGSeqStatGet(lbl_1_bss_14) & 16) { + lbl_1_bss_4 = HuAudSeqPlay(71); + } + if (!MGSeqStatGet(lbl_1_bss_14) && !var_r29->unk_08) { + lbl_1_bss_1C = MGSeqCreate(1, var_r29->unk_1C, -1, -1); + var_r29->unk_14 = 2; + var_r29->unk_18 = 0; + object->func = fn_1_139C; + } + break; + + default: + break; + } } void fn_1_139C(omObjData *object) @@ -347,17 +343,17 @@ void fn_1_1A7C(omObjData *object) } var_f31 = (float)object->work[0] / lbl_1_data_C4[object->work[1]]; - PSVECSubtract(&lbl_1_data_4C[object->work[1] + 1], &lbl_1_data_4C[object->work[1]], &sp8); - PSVECScale(&sp8, &sp8, var_f31); - PSVECAdd(&lbl_1_data_4C[object->work[1]], &sp8, &sp8); + VECSubtract(&lbl_1_data_4C[object->work[1] + 1], &lbl_1_data_4C[object->work[1]], &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&lbl_1_data_4C[object->work[1]], &sp8, &sp8); Center.x = sp8.x; Center.y = sp8.y; Center.z = sp8.z; - PSVECSubtract(&lbl_1_data_88[object->work[1] + 1], &lbl_1_data_88[object->work[1]], &sp8); - PSVECScale(&sp8, &sp8, var_f31); - PSVECAdd(&lbl_1_data_88[object->work[1]], &sp8, &sp8); + VECSubtract(&lbl_1_data_88[object->work[1] + 1], &lbl_1_data_88[object->work[1]], &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&lbl_1_data_88[object->work[1]], &sp8, &sp8); CRot.x = sp8.x; CRot.y = sp8.y; diff --git a/src/REL/m410Dll/player.c b/src/REL/m410Dll/player.c index 6af51bc0..3286d2c0 100644 --- a/src/REL/m410Dll/player.c +++ b/src/REL/m410Dll/player.c @@ -11,6 +11,10 @@ #include "REL/m410Dll.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + omObjData *lbl_1_bss_74; AnimData *lbl_1_bss_70; s32 lbl_1_bss_60[4]; @@ -20,21 +24,53 @@ char *lbl_1_data_140[] = { "dmy-itemhook-r", "dmy-itemhook-r", "dmy-itemhook-r", char *lbl_1_data_16C[] = { "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r" }; -s32 lbl_1_data_18C[] - = { DATA_MAKE_NUM(DATADIR_M410, 0), DATA_MAKE_NUM(DATADIR_M410, 1), DATA_MAKE_NUM(DATADIR_M410, 2), DATA_MAKE_NUM(DATADIR_M410, 3), - DATA_MAKE_NUM(DATADIR_M410, 4), DATA_MAKE_NUM(DATADIR_M410, 5), DATA_MAKE_NUM(DATADIR_M410, 6), DATA_MAKE_NUM(DATADIR_M410, 7) }; +s32 lbl_1_data_18C[] = { + DATA_MAKE_NUM(DATADIR_M410, 0), + DATA_MAKE_NUM(DATADIR_M410, 1), + DATA_MAKE_NUM(DATADIR_M410, 2), + DATA_MAKE_NUM(DATADIR_M410, 3), + DATA_MAKE_NUM(DATADIR_M410, 4), + DATA_MAKE_NUM(DATADIR_M410, 5), + DATA_MAKE_NUM(DATADIR_M410, 6), + DATA_MAKE_NUM(DATADIR_M410, 7), +}; -u32 lbl_1_data_1AC[] = { 0, DATA_MAKE_NUM(DATADIR_M410, 70), DATA_MAKE_NUM(DATADIR_M410, 22), DATA_MAKE_NUM(DATADIR_M410, 30), - DATA_MAKE_NUM(DATADIR_M410, 38), DATA_MAKE_NUM(DATADIR_M410, 46), DATA_MAKE_NUM(DATADIR_M410, 62), DATA_MAKE_NUM(DATADIR_M410, 54), - DATA_MAKE_NUM(DATADIR_E3SETUP, 23), DATA_MAKE_NUM(DATADIR_E3SETUP, 24) }; +u32 lbl_1_data_1AC[] = { + 0, + DATA_MAKE_NUM(DATADIR_M410, 70), + DATA_MAKE_NUM(DATADIR_M410, 22), + DATA_MAKE_NUM(DATADIR_M410, 30), + DATA_MAKE_NUM(DATADIR_M410, 38), + DATA_MAKE_NUM(DATADIR_M410, 46), + DATA_MAKE_NUM(DATADIR_M410, 62), + DATA_MAKE_NUM(DATADIR_M410, 54), + DATA_MAKE_NUM(DATADIR_E3SETUP, 23), + DATA_MAKE_NUM(DATADIR_E3SETUP, 24), +}; -UnkM410Struct10 lbl_1_data_1D4[] = { { 0.0f, 0.0f, 12.0f, 0x40000001 }, { 0.0f, 0.0f, 1.1999999, 0 }, { 0.0f, 0.0f, 12.0f, 0x40000001 }, - { 0.0f, 0.0f, 6.0f, 0 }, { 6.0f, 0.0f, 4.7999997f, 0 }, { 0.0f, 0.0f, 1.1999999f, 0 }, { 0.0f, 0.0f, 1.1999999f, 0 }, { 0.0f, 0.0f, 1.1999999f, 0 }, - { 0.0f, 0.0f, 12.0f, 0 }, { 0.0f, 0.0f, 12.0f, 0 } }; +UnkM410Struct10 lbl_1_data_1D4[] = { + { 0.0f, 0.0f, 12.0f, HU3D_MOTATTR_LOOP }, + { 0.0f, 0.0f, 1.1999999f, HU3D_MOTATTR_NONE }, + { 0.0f, 0.0f, 12.0f, HU3D_MOTATTR_LOOP }, + { 0.0f, 0.0f, 6.0f, HU3D_MOTATTR_NONE }, + { 6.0f, 0.0f, 4.7999997f, HU3D_MOTATTR_NONE }, + { 0.0f, 0.0f, 1.1999999f, HU3D_MOTATTR_NONE }, + { 0.0f, 0.0f, 1.1999999f, HU3D_MOTATTR_NONE }, + { 0.0f, 0.0f, 1.1999999f, HU3D_MOTATTR_NONE }, + { 0.0f, 0.0f, 12.0f, HU3D_MOTATTR_NONE }, + { 0.0f, 0.0f, 12.0f, HU3D_MOTATTR_NONE }, +}; -s32 lbl_1_data_274[] = { DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_MGCONST, 1), DATA_MAKE_NUM(DATADIR_MGCONST, 2), - DATA_MAKE_NUM(DATADIR_MGCONST, 3), DATA_MAKE_NUM(DATADIR_MGCONST, 4), DATA_MAKE_NUM(DATADIR_MGCONST, 5), DATA_MAKE_NUM(DATADIR_MGCONST, 6), - DATA_MAKE_NUM(DATADIR_MGCONST, 7) }; +s32 lbl_1_data_274[] = { + DATA_MAKE_NUM(DATADIR_MGCONST, 0), + DATA_MAKE_NUM(DATADIR_MGCONST, 1), + DATA_MAKE_NUM(DATADIR_MGCONST, 2), + DATA_MAKE_NUM(DATADIR_MGCONST, 3), + DATA_MAKE_NUM(DATADIR_MGCONST, 4), + DATA_MAKE_NUM(DATADIR_MGCONST, 5), + DATA_MAKE_NUM(DATADIR_MGCONST, 6), + DATA_MAKE_NUM(DATADIR_MGCONST, 7), +}; GXColor lbl_1_data_294[] = { { 102, 0, 0, 255 }, @@ -109,8 +145,6 @@ void fn_1_7E30(Process *objman) void fn_1_806C(void) { - s32 var_lr; - HuSprAnimKill(lbl_1_bss_70); CharModelKill(-1); } @@ -144,9 +178,9 @@ void fn_1_80A0(omObjData *object) for (var_r29 = 0; var_r29 < 10; var_r29++) { if (lbl_1_data_1AC[var_r29] < 0x10000) { object->motion[var_r29] = CharModelMotionCreate(var_r28, lbl_1_data_1AC[var_r29]); - } else { - object->motion[var_r29] - = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(var_r28 + lbl_1_data_1AC[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r28 + lbl_1_data_1AC[var_r29]); } } CharModelMotionDataClose(var_r28); @@ -178,40 +212,40 @@ void fn_1_8414(omObjData *object) UnkM410Struct7 sp8 = { { 42, 78, 108, 125 } }; switch (var_r31->unk_34) { - case 0: - fn_1_9F70(object, 0); - if (fn_1_2804()) { - var_r31->unk_38 = 0; - var_r31->unk_34++; - } - break; - case 1: - if (var_r31->unk_38 >= sp8.unk_00[var_r31->unk_04]) { - var_r31->unk_28 = 1; - var_r31->unk_34++; - } - break; - case 2: - fn_1_96F4(object); - if (var_r31->unk_38 >= (2.8f + 0.00040000002f * frandmod(1000)) * 60.0f) { - var_r31->unk_2C = 1; - var_r31->unk_38 = 0; - var_r31->unk_34++; - } - break; - case 3: - if (var_r31->unk_24) { - if (var_r31->unk_38 >= 27.0f) { - var_r31->unk_30 = 1; + case 0: + fn_1_9F70(object, 0); + if (fn_1_2804()) { + var_r31->unk_38 = 0; + var_r31->unk_34++; } - } - if (fn_1_9A90(object)) { - var_r31->unk_34++; - } - break; - case 4: - fn_1_9F70(object, 0); - break; + break; + case 1: + if (var_r31->unk_38 >= sp8.unk_00[var_r31->unk_04]) { + var_r31->unk_28 = 1; + var_r31->unk_34++; + } + break; + case 2: + fn_1_96F4(object); + if (var_r31->unk_38 >= (2.8f + 0.00040000002f * frandmod(1000)) * 60.0f) { + var_r31->unk_2C = 1; + var_r31->unk_38 = 0; + var_r31->unk_34++; + } + break; + case 3: + if (var_r31->unk_24) { + if (var_r31->unk_38 >= 27.0f) { + var_r31->unk_30 = 1; + } + } + if (fn_1_9A90(object)) { + var_r31->unk_34++; + } + break; + case 4: + fn_1_9F70(object, 0); + break; } } fn_1_8A10(object); @@ -241,35 +275,37 @@ void fn_1_8678(omObjData *object) } } switch (var_r31->unk_34) { - case 0: - if (fn_1_9F70(object, 0)) { - var_r31->unk_28 = 1; - } - fn_1_96F4(object); - if (var_r31->unk_18) { - var_r31->unk_34++; - } - break; - case 1: - if (!var_r31->unk_1C && !var_r31->unk_20) { - if (var_r31->unk_10 & 0x100) { - if (fn_1_281C() == 2) { - var_r31->unk_2C = 1; - } - } else if (var_r31->unk_10 & 0x200 && fn_1_281C() == 2) { - if (fabs(fn_1_30F0(var_r31->unk_3C, var_r31->unk_40)) < 45.0) { - var_r31->unk_30 = 1; - } + case 0: + if (fn_1_9F70(object, 0)) { + var_r31->unk_28 = 1; } - var_r29 = 1; - } else if (var_r31->unk_24 && var_r31->unk_10 & 0x200) { - var_r31->unk_30 = 1; - } - if (fn_1_9A90(object) || fn_1_9C84(object)) { - var_r31->unk_36 = 0; - var_r31->unk_34--; - } - break; + fn_1_96F4(object); + if (var_r31->unk_18) { + var_r31->unk_34++; + } + break; + case 1: + if (!var_r31->unk_1C && !var_r31->unk_20) { + if (var_r31->unk_10 & 0x100) { + if (fn_1_281C() == 2) { + var_r31->unk_2C = 1; + } + } + else if (var_r31->unk_10 & 0x200 && fn_1_281C() == 2) { + if (fabs(fn_1_30F0(var_r31->unk_3C, var_r31->unk_40)) < 45.0) { + var_r31->unk_30 = 1; + } + } + var_r29 = 1; + } + else if (var_r31->unk_24 && var_r31->unk_10 & 0x200) { + var_r31->unk_30 = 1; + } + if (fn_1_9A90(object) || fn_1_9C84(object)) { + var_r31->unk_36 = 0; + var_r31->unk_34--; + } + break; } fn_1_8A10(object); if (fn_1_281C() == 3 && var_r29) { @@ -286,32 +322,33 @@ void fn_1_88D8(omObjData *object) var_r31 = object->data; fn_1_8A10(object); switch (var_r31->unk_34) { - case 0: - var_r31->unk_34++; - return; - case 1: - if (fn_1_2834() == 1) { - Hu3DModelHookReset(object->model[0]); - Hu3DModelAttrSet(object->model[1], 1); - if ((1 << object->work[0]) & fn_1_2864()) { - fn_1_9E0C(object, 8); - } else { - fn_1_9E0C(object, 9); + case 0: + var_r31->unk_34++; + return; + case 1: + if (fn_1_2834() == 1) { + Hu3DModelHookReset(object->model[0]); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + if ((1 << object->work[0]) & fn_1_2864()) { + fn_1_9E0C(object, 8); + } + else { + fn_1_9E0C(object, 9); + } + var_r31->unk_40 = 0.0f; + var_r31->unk_44 = 0.0f; + var_r31->unk_48 = 0.005f; + var_r31->unk_34++; } - var_r31->unk_40 = 0.0f; - var_r31->unk_44 = 0.0f; - var_r31->unk_48 = 0.005f; - var_r31->unk_34++; - } - break; - case 2: - if (fn_1_9EFC(object)) { - fn_1_28AC(object->work[0]); - var_r31->unk_34++; - } - break; - default: - break; + break; + case 2: + if (fn_1_9EFC(object)) { + fn_1_28AC(object->work[0]); + var_r31->unk_34++; + } + break; + default: + break; } } @@ -351,72 +388,75 @@ void fn_1_8ABC(omObjData *object) var_r31 = object->data; var_r31->unk_10 = 0; switch (var_r31->unk_50) { - case 0: - if (!var_r31->unk_18) { - return; - } - if (frandmod(1000) <= 1000.0f * var_r31->unk_4C) { - var_f28 = 42.0f; - if (frandmod(1000) <= 1000.0f * var_r31->unk_4C) { - var_f29 = 280.0f; - var_r31->unk_54 = 31.8f + frandmod(6); - } else { - var_f29 = 419.99997f; - var_r31->unk_54 = 9.0f + frandmod(15); + case 0: + if (!var_r31->unk_18) { + return; } - var_f27 = var_f28 + var_r31->unk_54; - var_r29 = -1; - var_f31 = 10000.0f; - for (var_r30 = 0; var_r30 < 18; var_r30++) { - fn_1_7888(var_r30, (s32)var_f27, &sp28); - if (fabs(sp28.y - var_f29) > 10.0) { - continue; + if (frandmod(1000) <= 1000.0f * var_r31->unk_4C) { + var_f28 = 42.0f; + if (frandmod(1000) <= 1000.0f * var_r31->unk_4C) { + var_f29 = 280.0f; + var_r31->unk_54 = 31.8f + frandmod(6); } - fn_1_7840(var_r30, &sp34); - if (fabs(sp34.x) < 1.9166667461395264) { - continue; + else { + var_f29 = 419.99997f; + var_r31->unk_54 = 9.0f + frandmod(15); } - var_f30 = sp28.x - var_r31->unk_88.x; - if (sp34.x >= 0.0f) { - if (var_f30 < 0.0f) { + var_f27 = var_f28 + var_r31->unk_54; + var_r29 = -1; + var_f31 = 10000.0f; + for (var_r30 = 0; var_r30 < 18; var_r30++) { + fn_1_7888(var_r30, (s32)var_f27, &sp28); + if (fabs(sp28.y - var_f29) > 10.0) { + continue; + } + fn_1_7840(var_r30, &sp34); + if (fabs(sp34.x) < 1.9166667461395264) { + continue; + } + var_f30 = sp28.x - var_r31->unk_88.x; + if (sp34.x >= 0.0f) { + if (var_f30 < 0.0f) { + if (fabs(var_f30) < var_f31) { + var_r29 = var_r30; + var_f31 = fabs(var_f30); + } + } + } + else if (var_f30 > 0.0f) { if (fabs(var_f30) < var_f31) { var_r29 = var_r30; var_f31 = fabs(var_f30); } } - } else if (var_f30 > 0.0f) { - if (fabs(var_f30) < var_f31) { - var_r29 = var_r30; - var_f31 = fabs(var_f30); - } } + if (var_r29 < 0) { + return; + } + fn_1_7840(var_r29, &sp34); + var_f31 /= fabs(sp34.x); + var_r31->unk_52 = var_f27 + var_f31 - var_f28 - var_r31->unk_54; } - if (var_r29 < 0) { - return; + else { + var_r31->unk_52 = 24.0f + frandmod(36); + var_r31->unk_54 = 12.0f + frandmod(18); } - fn_1_7840(var_r29, &sp34); - var_f31 /= fabs(sp34.x); - var_r31->unk_52 = var_f27 + var_f31 - var_f28 - var_r31->unk_54; - } else { - var_r31->unk_52 = 24.0f + frandmod(36); - var_r31->unk_54 = 12.0f + frandmod(18); - } - var_r31->unk_50++; - return; - case 1: - if (!var_r31->unk_52) { - var_r31->unk_10 |= 256; var_r31->unk_50++; - } - var_r31->unk_52--; - return; - case 2: - if (!var_r31->unk_54) { - var_r31->unk_10 |= 512; - var_r31->unk_50 = 0; - } - var_r31->unk_54--; - break; + return; + case 1: + if (!var_r31->unk_52) { + var_r31->unk_10 |= 256; + var_r31->unk_50++; + } + var_r31->unk_52--; + return; + case 2: + if (!var_r31->unk_54) { + var_r31->unk_10 |= 512; + var_r31->unk_50 = 0; + } + var_r31->unk_54--; + break; } } @@ -465,8 +505,8 @@ void fn_1_9040(omObjData *object) if (sp20.y < 350.0f) { continue; } - PSVECSubtract(&sp20, &var_r31->unk_58, &sp2C); - var_f28 = PSVECMag(&sp2C); + VECSubtract(&sp20, &var_r31->unk_58, &sp2C); + var_f28 = VECMag(&sp2C); if (var_f28 < var_f30) { var_r28 = var_r29; var_f30 = var_f28; @@ -480,7 +520,8 @@ void fn_1_9040(omObjData *object) sp2C.x = (0.016666668f * (sp20.x - var_r31->unk_70.x)) / var_f31; sp2C.y = 0.016666668f * var_f27; sp2C.z = (0.016666668f * (sp20.z - var_r31->unk_70.z)) / var_f31; - } else { + } + else { if (var_r31->unk_20 != 0) { var_f30 = -450.0f + (0.05f * frandmod(1000)); var_f29 = -100.0f; @@ -488,7 +529,8 @@ void fn_1_9040(omObjData *object) sp20.x = var_r31->unk_70.x + (0.05f * (frandmod(2000) - 1000)); sp20.y = var_f29; sp20.z = var_f30; - } else { + } + else { var_f30 = -700.0f; var_f29 = 420.0f; if (var_r31->unk_68 < -600.0f) { @@ -516,7 +558,8 @@ void fn_1_9040(omObjData *object) } if (var_r28 >= 0 && var_f30 <= var_f25) { fn_1_7888(var_r28, var_r27, &sp20); - } else { + } + else { sp20.x = var_r31->unk_88.x; sp20.y = var_f29; sp20.z = -700.0f; @@ -556,7 +599,7 @@ void fn_1_96F4(omObjData *object) if (var_r31->unk_14 && var_r31->unk_28) { var_r31->unk_14 = 0; var_r31->unk_28 = 0; - Hu3DModelAttrReset(object->model[1], 1); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); var_r31->unk_36 = 0; var_r31->unk_70.x = object->trans.x; var_r31->unk_70.y = 100.0f + object->trans.y; @@ -570,7 +613,7 @@ void fn_1_96F4(omObjData *object) var_r31->unk_44 = 0.0f; var_r31->unk_48 = 0.04f; } - PSVECAdd(&var_r31->unk_70, &var_r31->unk_7C, &var_r31->unk_70); + VECAdd(&var_r31->unk_70, &var_r31->unk_7C, &var_r31->unk_70); var_r31->unk_7C.y = var_r31->unk_7C.y + (0.0002777778f * var_f29); if ((var_r31->unk_7C.y < 0.0f) && (var_r31->unk_70.y <= var_f30)) { var_r31->unk_18 = 1; @@ -585,7 +628,8 @@ void fn_1_96F4(omObjData *object) } if (var_r31->unk_18 != 0) { Hu3DModelPosSet(object->model[1], 0.0f, 0.0f, 0.0f); - } else { + } + else { Hu3DModelPosSet(object->model[1], var_r31->unk_70.x, var_r31->unk_70.y, var_r31->unk_70.z); } if (var_r31->unk_36 >= (60.0f * (var_f31 - 0.17f))) { @@ -605,7 +649,7 @@ s32 fn_1_9A90(omObjData *object) return var_r29; } if (!var_r31->unk_18) { - Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); } if (var_r31->unk_18 && !var_r31->unk_1C && var_r31->unk_2C) { var_r31->unk_1C = 1; @@ -621,7 +665,8 @@ s32 fn_1_9A90(omObjData *object) var_r31->unk_1C = 0; if (var_r31->unk_18) { fn_1_9E0C(object, 7); - } else { + } + else { var_r29 = 1; fn_1_9E0C(object, 6); } @@ -636,7 +681,8 @@ s32 fn_1_9A90(omObjData *object) var_r31->unk_30 = 0; } } - } else if (var_r31->unk_18) { + } + else if (var_r31->unk_18) { fn_1_9F70(object, 2); } return var_r29; @@ -651,19 +697,21 @@ s32 fn_1_9C84(omObjData *object) var_r31 = object->data; var_r29 = 0; if (!var_r31->unk_18) { - Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); } if (!var_r31->unk_20 && var_r31->unk_18 && !var_r31->unk_1C && var_r31->unk_30) { fn_1_9E0C(object, 3); var_r31->unk_30 = 0; var_r31->unk_20 = 1; var_r31->unk_36 = 0; - } else if (var_r31->unk_20) { + } + else if (var_r31->unk_20) { if (var_r31->unk_18) { if (var_r31->unk_36 >= 18.0f) { fn_1_9040(object); } - } else if (var_r31->unk_36 >= 30.0f && fn_1_9EFC(object)) { + } + else if (var_r31->unk_36 >= 30.0f && fn_1_9EFC(object)) { var_r31->unk_30 = 0; var_r31->unk_2C = 0; var_r31->unk_20 = 0; @@ -786,49 +834,50 @@ void fn_1_A3C0(omObjData *object) for (var_r29 = 0; var_r29 < 4; var_r29++, var_r31++) { switch (var_r31->unk_14) { - case 0: - if (fn_1_281C() == 2) { - var_r31->unk_14 = 1; - } - break; - case 1: - var_r31->unk_18 = 0; - var_r31->unk_20 = var_r31->unk_08 % 10; - var_r31->unk_1C = (var_r31->unk_08 / 10) % 10; - espDispOn(var_r31->unk_3C[0]); - espDispOn(var_r31->unk_3C[1]); - espDispOn(var_r31->unk_40); - espDispOn(var_r31->unk_42); - espDispOn(var_r31->unk_44); - espBankSet(var_r31->unk_3C[0], var_r31->unk_1C); - espBankSet(var_r31->unk_3C[1], var_r31->unk_20); - espBankSet(var_r31->unk_40, var_r31->unk_24); - if (var_r31->unk_00) { - var_r31->unk_2C[0] = var_r31->unk_2C[1] = 0.5f; - var_r31->unk_14++; - } else { - var_r31->unk_00 = 1; - var_r31->unk_2C[0] = var_r31->unk_2C[1] = 1.0f; - var_r31->unk_14 += 3; + case 0: + if (fn_1_281C() == 2) { + var_r31->unk_14 = 1; + } + break; + case 1: + var_r31->unk_18 = 0; + var_r31->unk_20 = var_r31->unk_08 % 10; + var_r31->unk_1C = (var_r31->unk_08 / 10) % 10; + espDispOn(var_r31->unk_3C[0]); + espDispOn(var_r31->unk_3C[1]); + espDispOn(var_r31->unk_40); + espDispOn(var_r31->unk_42); + espDispOn(var_r31->unk_44); + espBankSet(var_r31->unk_3C[0], var_r31->unk_1C); + espBankSet(var_r31->unk_3C[1], var_r31->unk_20); + espBankSet(var_r31->unk_40, var_r31->unk_24); + if (var_r31->unk_00) { + var_r31->unk_2C[0] = var_r31->unk_2C[1] = 0.5f; + var_r31->unk_14++; + } + else { + var_r31->unk_00 = 1; + var_r31->unk_2C[0] = var_r31->unk_2C[1] = 1.0f; + var_r31->unk_14 += 3; + break; + } + case 2: + var_f31 = var_r31->unk_2C[0]; + var_f31 += 0.10000001f; + if (var_f31 >= 1.5f) { + var_r31->unk_14++; + } + var_r31->unk_2C[0] = var_r31->unk_2C[1] = var_f31; + break; + case 3: + var_f31 = var_r31->unk_2C[0]; + var_f31 -= 0.10000001f; + if (var_f31 <= 1.0f) { + var_f31 = 1.0f; + var_r31->unk_14 = var_r31->unk_14 + 1; + } + var_r31->unk_2C[0] = var_r31->unk_2C[1] = var_f31; break; - } - case 2: - var_f31 = var_r31->unk_2C[0]; - var_f31 += 0.10000001f; - if (var_f31 >= 1.5f) { - var_r31->unk_14++; - } - var_r31->unk_2C[0] = var_r31->unk_2C[1] = var_f31; - break; - case 3: - var_f31 = var_r31->unk_2C[0]; - var_f31 -= 0.10000001f; - if (var_f31 <= 1.0f) { - var_f31 = 1.0f; - var_r31->unk_14 = var_r31->unk_14 + 1; - } - var_r31->unk_2C[0] = var_r31->unk_2C[1] = var_f31; - break; } var_r31->unk_18++; @@ -845,7 +894,8 @@ void fn_1_A3C0(omObjData *object) var_r30->unk_00++; if (var_r30->unk_00 < 12.0f) { var_r30->unk_04 += 0.058333337f; - } else { + } + else { var_r30->unk_04 += 0.025000002f; var_r30->unk_0C -= 0.050000004f; } @@ -1027,8 +1077,8 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) DCStoreRange(&sp10, 4); DCStoreRange(&lbl_1_data_294, 32); - PSMTXTrans(spF4, -400.0f, 400.0f, -700.0f); - PSMTXConcat(Hu3DCameraMtx, spF4, sp64); + MTXTrans(spF4, -400.0f, 400.0f, -700.0f); + MTXConcat(Hu3DCameraMtx, spF4, sp64); GXLoadPosMtxImm(sp64, 0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); @@ -1038,10 +1088,10 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) HuSprTexLoad(lbl_1_bss_70, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); GXSetNumTexGens(2); C_MTXLightPerspective(sp94, 41.5f, 1.2f, 0.5555555f, -0.5f, 0.5555555f, 0.5f); - PSMTXConcat(sp94, Hu3DCameraMtx, sp94); - PSMTXInverse(Hu3DCameraMtx, sp34); - PSMTXConcat(sp34, sp64, sp124); - PSMTXConcat(sp94, sp124, spF4); + MTXConcat(sp94, Hu3DCameraMtx, sp94); + MTXInverse(Hu3DCameraMtx, sp34); + MTXConcat(sp34, sp64, sp124); + MTXConcat(sp94, sp124, spF4); GXLoadTexMtxImm(spF4, 30, GX_MTX3x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 30, GX_FALSE, 125); GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEXCOORD0, 33, GX_FALSE, 125); @@ -1049,7 +1099,7 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP1); GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); - PSMTXScale(spF4, -0.5f, -0.5f, 0.5f); + MTXScale(spF4, -0.5f, -0.5f, 0.5f); GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spF4, -1); GXSetNumTevStages(1); GXSetTevColor(GX_TEVREG1, sp10); @@ -1076,17 +1126,17 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) if (var_r31->unk_00) { lbl_1_data_294[var_r31->unk_02].a = 255.0f * var_r31->unk_0C; GXSetTevColor(GX_TEVREG0, lbl_1_data_294[var_r31->unk_02]); - PSMTXTrans(spF4, var_r31->unk_10.x, var_r31->unk_10.y, var_r31->unk_10.z); - PSMTXRotRad(sp124, 90, 0.017453292f * var_r31->unk_08); - PSMTXConcat(spF4, sp124, spF4); - PSMTXScale(spC4, var_r31->unk_04, var_r31->unk_04, var_r31->unk_04); - PSMTXConcat(spF4, spC4, spF4); - PSMTXConcat(Hu3DCameraMtx, spF4, sp64); + MTXTrans(spF4, var_r31->unk_10.x, var_r31->unk_10.y, var_r31->unk_10.z); + MTXRotRad(sp124, 90, 0.017453292f * var_r31->unk_08); + MTXConcat(spF4, sp124, spF4); + MTXScale(spC4, var_r31->unk_04, var_r31->unk_04, var_r31->unk_04); + MTXConcat(spF4, spC4, spF4); + MTXConcat(Hu3DCameraMtx, spF4, sp64); GXLoadPosMtxImm(sp64, 0); - PSMTXConcat(sp34, sp64, sp124); - PSMTXConcat(sp94, sp124, spF4); + MTXConcat(sp34, sp64, sp124); + MTXConcat(sp94, sp124, spF4); GXLoadTexMtxImm(spF4, 30, GX_MTX3x4); - PSMTXRotRad(sp124, 90, 0.017453292f * -var_r31->unk_08); + MTXRotRad(sp124, 90, 0.017453292f * -var_r31->unk_08); GXLoadTexMtxImm(sp124, 33, GX_MTX2x4); GXCallDisplayList(var_r30->unk_120.unk_E5C, var_r30->unk_120.unk_E58); } diff --git a/src/REL/m410Dll/stage.c b/src/REL/m410Dll/stage.c index f4b8ac21..b7bbb218 100644 --- a/src/REL/m410Dll/stage.c +++ b/src/REL/m410Dll/stage.c @@ -22,9 +22,9 @@ void fn_1_31FC(omObjData *object) object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 14)); object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 15)); object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 16)); - Hu3DModelAttrSet(object->model[3], 0x40000001); + Hu3DModelAttrSet(object->model[3], HU3D_MOTATTR_LOOP); object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 17)); - Hu3DModelAttrSet(object->model[4], 0x40000001); + Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP); object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M410, 18)); object->func = fn_1_3350; } diff --git a/src/REL/m411Dll/main.c b/src/REL/m411Dll/main.c index 2f2dc72a..c99ccbca 100755 --- a/src/REL/m411Dll/main.c +++ b/src/REL/m411Dll/main.c @@ -18,7 +18,6 @@ #include "dolphin.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" typedef struct { /* 0x00 */ s16 unk00; @@ -96,12 +95,12 @@ typedef struct { /* 0x060 */ float unk60; /* 0x064 */ float unk64; /* 0x068 */ float unk68; - /* 0x06C */ UnkBss474InnerStruct6C* unk6C[10]; - /* 0x094 */ UnkBss474InnerStruct6C* unk94[10]; - /* 0x0BC */ UnkBss474InnerStruct6C* unkBC[10]; + /* 0x06C */ UnkBss474InnerStruct6C *unk6C[10]; + /* 0x094 */ UnkBss474InnerStruct6C *unk94[10]; + /* 0x0BC */ UnkBss474InnerStruct6C *unkBC[10]; /* 0x0E4 */ UnkBss474InnerStructE4 unkE4[10]; - /* 0x24C */ AnimData* unk24C; - /* 0x250 */ AnimData* unk250; + /* 0x24C */ AnimData *unk24C; + /* 0x250 */ AnimData *unk250; /* 0x254 */ s8 unk254; /* 0x255 */ s8 unk255; /* 0x256 */ s8 unk256; @@ -113,13 +112,13 @@ typedef struct { } UnkBss474Struct; // Size 0x26C typedef struct { - /* 0x00 */ UnkBss474Struct* unk00; + /* 0x00 */ UnkBss474Struct *unk00; /* 0x04 */ s32 unk04; /* 0x08 */ s32 unk08; - /* 0x0C */ s32* unk0C; + /* 0x0C */ s32 *unk0C; } UnkFn64A3Struct; // Size unknown -void fn_1_E80(omObjData* arg0); +void fn_1_E80(omObjData *arg0); void fn_1_F8C(float arg0); void fn_1_1074(void); void fn_1_1498(s16 layer); @@ -127,11 +126,11 @@ s32 fn_1_1520(void); s32 fn_1_1C4C(void); s32 fn_1_20C8(void); void fn_1_25D0(void); -void fn_1_34B0(ModelData* model, ParticleData* particle, Mtx matrix, s32 arg3); -void fn_1_3A60(ModelData* model, ParticleData* particle, Mtx matrix); -void fn_1_3A9C(ModelData* model, ParticleData* particle, Mtx matrix); -void fn_1_3AD8(ModelData* model, ParticleData* particle, Mtx matrix); -void fn_1_3B14(ModelData* model, ParticleData* particle, Mtx matrix); +void fn_1_34B0(ModelData *model, ParticleData *particle, Mtx matrix, s32 arg3); +void fn_1_3A60(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_3A9C(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_3AD8(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_3B14(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_3B50(void); void fn_1_3F34(void); void fn_1_4218(void); @@ -148,14 +147,14 @@ void fn_1_5910(void); s8 fn_1_5D58(s32 arg0, s32 arg1); u8 fn_1_5E10(s32 arg0, s32 arg1); u16 fn_1_5ED0(s32 arg0); -void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1); -void fn_1_6428(UnkBss474Struct* arg0, s32 arg1); -void fn_1_6820(UnkBss474Struct* arg0, s32 arg1, s32 arg2); +void fn_1_5F3C(UnkBss474Struct *arg0, s32 arg1); +void fn_1_6428(UnkBss474Struct *arg0, s32 arg1); +void fn_1_6820(UnkBss474Struct *arg0, s32 arg1, s32 arg2); void fn_1_6A3C(void); void fn_1_6CF4(void); -void fn_1_6DD8(UnkBss474Struct* arg0, s32 arg1); +void fn_1_6DD8(UnkBss474Struct *arg0, s32 arg1); void fn_1_6E9C(s32 arg0, s32 arg1); -void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2); +void fn_1_6F48(UnkBss474Struct *arg0, s32 arg1, s32 arg2); void fn_1_75C8(void); void fn_1_7680(void); void fn_1_7738(void); @@ -186,102 +185,53 @@ s32 lbl_1_bss_E28; float lbl_1_bss_E24; UnkBss474Struct lbl_1_bss_474[4]; UnkBss138Struct lbl_1_bss_138; -omObjData* lbl_1_bss_134; -Process* lbl_1_bss_124[4]; +omObjData *lbl_1_bss_134; +Process *lbl_1_bss_124[4]; Vec lbl_1_bss_C4[8]; Vec lbl_1_bss_64[8]; Vec lbl_1_bss_4[8]; -void* lbl_1_bss_0; +void *lbl_1_bss_0; -float lbl_1_data_0[][7] = { - { -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, -3375.0f, 7460.0f }, - { -9.5f, 0.0f, 0.0f, 0.0f, 0.0f, -510.0f, 1860.0f }, - { -5.0f, 0.0f, 0.0f, 0.0f, 0.0f, -2870.0f, 5060.0f } -}; +float lbl_1_data_0[][7] = { { -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, -3375.0f, 7460.0f }, { -9.5f, 0.0f, 0.0f, 0.0f, 0.0f, -510.0f, 1860.0f }, + { -5.0f, 0.0f, 0.0f, 0.0f, 0.0f, -2870.0f, 5060.0f } }; -s32 lbl_1_data_54[] = { - DATA_MAKE_NUM(DATADIR_M411, 9), - DATA_MAKE_NUM(DATADIR_M411, 11), - DATA_MAKE_NUM(DATADIR_M411, 10) -}; +s32 lbl_1_data_54[] = { DATA_MAKE_NUM(DATADIR_M411, 9), DATA_MAKE_NUM(DATADIR_M411, 11), DATA_MAKE_NUM(DATADIR_M411, 10) }; -char* lbl_1_data_6C[] = { - "puzzle00", "puzzle00", "puzzle00" -}; +char *lbl_1_data_6C[] = { "puzzle00", "puzzle00", "puzzle00" }; -char* lbl_1_data_1C8[][10] = { - { - "puzzle_B1-p01", "puzzle_B1-p02", "puzzle_B1-p03", "puzzle_B1-p04", - "puzzle_B1-p05", "puzzle_B1-p06", "puzzle_B1-p07", "puzzle_B1-p08" - }, - { - "puzzle_B2-p01", "puzzle_B2-p02", "puzzle_B2-p03", "puzzle_B2-p04", - "puzzle_B2-p05", "puzzle_B2-p06", "puzzle_B2-p07", "puzzle_B2-p08" - }, - { - "puzzle_B3-p01", "puzzle_B3-p02", "puzzle_B3-p03", "puzzle_B3-p04", - "puzzle_B3-p05", "puzzle_B3-p06", "puzzle_B3-p07", "puzzle_B3-p08" - } -}; +char *lbl_1_data_1C8[][10] = { { "puzzle_B1-p01", "puzzle_B1-p02", "puzzle_B1-p03", "puzzle_B1-p04", "puzzle_B1-p05", "puzzle_B1-p06", + "puzzle_B1-p07", "puzzle_B1-p08" }, + { "puzzle_B2-p01", "puzzle_B2-p02", "puzzle_B2-p03", "puzzle_B2-p04", "puzzle_B2-p05", "puzzle_B2-p06", "puzzle_B2-p07", "puzzle_B2-p08" }, + { "puzzle_B3-p01", "puzzle_B3-p02", "puzzle_B3-p03", "puzzle_B3-p04", "puzzle_B3-p05", "puzzle_B3-p06", "puzzle_B3-p07", "puzzle_B3-p08" } }; s32 lbl_1_data_240[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; -s32 lbl_1_data_260[8] = { - DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0), - DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0), - DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0), - DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0), - DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0), - DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0), - DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0), - DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0) -}; +s32 lbl_1_data_260[8] = { DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0), DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0), DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0), DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0), DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0), + DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0), DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0) }; -s32 lbl_1_data_280[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 1), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 32), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 33), - DATA_MAKE_NUM(DATADIR_MARIOMOT, 23) -}; +s32 lbl_1_data_280[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 1), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), DATA_MAKE_NUM(DATADIR_MARIOMOT, 32), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 33), DATA_MAKE_NUM(DATADIR_MARIOMOT, 23) }; -s32 lbl_1_data_2A4[8] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0) -}; +s32 lbl_1_data_2A4[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0) }; -s32 lbl_1_data_2C4[] = { - DATA_MAKE_NUM(DATADIR_M411, 27), - DATA_MAKE_NUM(DATADIR_M411, 28), - DATA_MAKE_NUM(DATADIR_M411, 23) -}; +s32 lbl_1_data_2C4[] = { DATA_MAKE_NUM(DATADIR_M411, 27), DATA_MAKE_NUM(DATADIR_M411, 28), DATA_MAKE_NUM(DATADIR_M411, 23) }; -s32 lbl_1_data_2D0[] = { - DATA_MAKE_NUM(DATADIR_M411, 30), - DATA_MAKE_NUM(DATADIR_M411, 31), - DATA_MAKE_NUM(DATADIR_M411, 32), - DATA_MAKE_NUM(DATADIR_M411, 33), - DATA_MAKE_NUM(DATADIR_M411, 34) -}; +s32 lbl_1_data_2D0[] = { DATA_MAKE_NUM(DATADIR_M411, 30), DATA_MAKE_NUM(DATADIR_M411, 31), DATA_MAKE_NUM(DATADIR_M411, 32), + DATA_MAKE_NUM(DATADIR_M411, 33), DATA_MAKE_NUM(DATADIR_M411, 34) }; -void ObjectSetup(void) { +void ObjectSetup(void) +{ Vec sp24; Vec sp18; Vec spC; float temp_f31; float temp_f30; float sp8; - Process* temp_r3; + Process *temp_r3; s32 var_r29; s32 i; @@ -319,7 +269,8 @@ void ObjectSetup(void) { Hu3DCameraScissorSet(0x10, 0x142, 0xF2, 0x13E, 0xEE); if (lbl_1_bss_E40 == 0) { lbl_1_bss_134 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, fn_1_E80); - } else { + } + else { lbl_1_bss_134 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, omOutViewMulti); } lbl_1_bss_134->work[0] = 5; @@ -397,29 +348,33 @@ void ObjectSetup(void) { WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); } -void fn_1_E80(omObjData* arg0) { +void fn_1_E80(omObjData *arg0) +{ s32 i; for (i = 0; i < arg0->work[0]; i++) { - Hu3DCameraPosSet(1 << i, lbl_1_bss_C4[i].x, lbl_1_bss_C4[i].y, lbl_1_bss_C4[i].z, lbl_1_bss_4[i].x, lbl_1_bss_4[i].y, lbl_1_bss_4[i].z, lbl_1_bss_64[i].x, lbl_1_bss_64[i].y, lbl_1_bss_64[i].z); + Hu3DCameraPosSet(1 << i, lbl_1_bss_C4[i].x, lbl_1_bss_C4[i].y, lbl_1_bss_C4[i].z, lbl_1_bss_4[i].x, lbl_1_bss_4[i].y, lbl_1_bss_4[i].z, + lbl_1_bss_64[i].x, lbl_1_bss_64[i].y, lbl_1_bss_64[i].z); } } -void fn_1_F8C(float arg0) { +void fn_1_F8C(float arg0) +{ lbl_1_bss_E24 = arg0; Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f * arg0, 0.0f, 0.0f); Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f * arg0, 0.0f, 0.0f); HuAudFXPitchSet(lbl_1_bss_E2C[0], -8191.0f * (1.0f - arg0)); } -void fn_1_1074(void) { +void fn_1_1074(void) +{ Mtx44 sp64; Mtx sp34; Vec sp28; Vec sp1C; Vec sp10; GXColor spC; - CameraData* var_r31; + CameraData *var_r31; var_r31 = &Hu3DCamera[0]; C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); @@ -458,7 +413,8 @@ void fn_1_1074(void) { GXEnd(); } -void fn_1_1498(s16 layer) { +void fn_1_1498(s16 layer) +{ if (Hu3DCameraNo == 1) { GXSetTexCopySrc(0, 0, 320, 240); GXSetTexCopyDst(320, 240, GX_TF_RGB5A3, GX_FALSE); @@ -468,12 +424,13 @@ void fn_1_1498(s16 layer) { } } -s32 fn_1_1520(void) { - UnkBss138Struct* var_r30; - UnkBss138InnerStruct00* var_r31; - UnkBss138InnerStruct00* temp_r28; - Process* var_r23; - void* var_r26; +s32 fn_1_1520(void) +{ + UnkBss138Struct *var_r30; + UnkBss138InnerStruct00 *var_r31; + UnkBss138InnerStruct00 *temp_r28; + Process *var_r23; + void *var_r26; s16 var_r27; s16 var_r24; s16 var_r22; @@ -498,35 +455,37 @@ s32 fn_1_1520(void) { var_r31 = &var_r30->unkE4[0]; var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 17), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r31->unk00 = var_r27 = Hu3DModelCreate(var_r26); - Hu3DModelAttrSet(var_r27, 1); + Hu3DModelAttrSet(var_r27, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(var_r27, 1); var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 18), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r31->unk0C = var_r24 = Hu3DModelCreate(var_r26); - Hu3DModelAttrSet(var_r24, 1); + Hu3DModelAttrSet(var_r24, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(var_r24, 1); for (i = 1; i < 5; i++) { var_r31 = &var_r30->unkE4[i]; var_r31->unk00 = Hu3DModelLink(var_r27); - Hu3DModelAttrSet(var_r31->unk00, 1); + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(var_r31->unk00, 1); if (i == 1) { var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 19), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r31->unk0C = var_r22 = Hu3DModelCreate(var_r26); - } else if (i & 1) { + } + else if (i & 1) { var_r31->unk0C = Hu3DModelLink(var_r22); - } else { + } + else { var_r31->unk0C = Hu3DModelLink(var_r24); } - Hu3DModelAttrSet(var_r31->unk0C, 1); + Hu3DModelAttrSet(var_r31->unk0C, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(var_r31->unk0C, 1); } var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 17), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30->unk274[0].unk00 = var_r27 = Hu3DModelCreate(var_r26); - Hu3DModelAttrSet(var_r27, 1); + Hu3DModelAttrSet(var_r27, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(var_r27, 1); for (i = 1; i < 5; i++) { var_r30->unk274[i].unk00 = Hu3DModelLink(var_r27); - Hu3DModelAttrSet(var_r30->unk274[i].unk00, 1); + Hu3DModelAttrSet(var_r30->unk274[i].unk00, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(var_r30->unk274[i].unk00, 1); } var_r31 = &var_r30->unk1C[1]; @@ -546,7 +505,7 @@ s32 fn_1_1520(void) { var_r31->unk02[i] = Hu3DJointMotion(var_r27, var_r26); } Hu3DMotionSet(var_r27, var_r31->unk02[0]); - Hu3DModelAttrSet(var_r27, 0x40000001); + Hu3DModelAttrSet(var_r27, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r27); temp_r28 = &var_r30->unk1C[2]; temp_r28->unk00 = Hu3DModelLink(var_r27); @@ -557,8 +516,8 @@ s32 fn_1_1520(void) { var_r26 = HuDataSelHeapReadNum(lbl_1_data_2C4[i], MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r28->unk02[i] = Hu3DJointMotion(var_r27, var_r26); } - Hu3DModelAttrSet(temp_r28->unk00, 0x800000); - Hu3DModelAttrSet(temp_r28->unk00, 0x40000001); + Hu3DModelAttrSet(temp_r28->unk00, HU3D_ATTR_CULL_FRONT); + Hu3DModelAttrSet(temp_r28->unk00, HU3D_MOTATTR_LOOP); Hu3DModelScaleSet(temp_r28->unk00, 1.0f, -1.0f, 1.0f); for (i = 0; i < 2; i++) { var_r31 = &var_r30->unk1AC[i]; @@ -572,7 +531,7 @@ s32 fn_1_1520(void) { var_r31->unk02[j] = Hu3DJointMotion(var_r27, var_r26); } Hu3DMotionSet(var_r27, var_r31->unk02[0]); - Hu3DModelAttrSet(var_r27, 0x40000001); + Hu3DModelAttrSet(var_r27, HU3D_MOTATTR_LOOP); var_r31->unk10.x = 200.0f; var_r31->unk10.y = 0.0f; var_r31->unk10.z = -930.0f; @@ -588,8 +547,8 @@ s32 fn_1_1520(void) { temp_r28->unk02[j] = Hu3DJointMotion(temp_r28->unk00, var_r26); } Hu3DModelCameraSet(temp_r28->unk00, 1); - Hu3DModelAttrSet(temp_r28->unk00, 0x800000); - Hu3DModelAttrSet(temp_r28->unk00, 0x40000001); + Hu3DModelAttrSet(temp_r28->unk00, HU3D_ATTR_CULL_FRONT); + Hu3DModelAttrSet(temp_r28->unk00, HU3D_MOTATTR_LOOP); Hu3DModelPosSet(temp_r28->unk00, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); Hu3DModelScaleSet(temp_r28->unk00, 1.0f, -1.0f, 1.0f); } @@ -597,14 +556,15 @@ s32 fn_1_1520(void) { var_r23->user_data = var_r30; } -s32 fn_1_1C4C(void) { - UnkBss138Struct* var_r30; - UnkBss138InnerStruct00* var_r29; +s32 fn_1_1C4C(void) +{ + UnkBss138Struct *var_r30; + UnkBss138InnerStruct00 *var_r29; s16 var_r31; s16 sp8; s16 temp_r27; - Process* var_r26; - void* var_r28; + Process *var_r26; + void *var_r28; var_r30 = &lbl_1_bss_138; var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 35), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -619,7 +579,7 @@ s32 fn_1_1C4C(void) { var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 36), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r29->unk00 = var_r31 = Hu3DModelCreate(var_r28); Hu3DModelCameraSet(var_r31, 1); - Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r31); var_r29 = &var_r30->unk1C[1]; var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 38), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -628,7 +588,7 @@ s32 fn_1_1C4C(void) { Hu3DModelCameraSet(var_r31, 1); var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 39), MEMORY_DEFAULT_NUM, HEAP_DATA); Hu3DMotionSet(var_r31, Hu3DJointMotion(var_r31, var_r28)); - Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r31); var_r29 = &var_r30->unk1C[2]; var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 38), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -636,7 +596,7 @@ s32 fn_1_1C4C(void) { Hu3DModelCameraSet(var_r31, 1); var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); Hu3DMotionSet(var_r31, Hu3DJointMotion(var_r31, var_r28)); - Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_LOOP); Hu3DModelPosSet(var_r31, 0.0f, 60.0f, -70.0f); Hu3DModelShadowSet(var_r31); var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 37), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -652,8 +612,8 @@ s32 fn_1_1C4C(void) { var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 45), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r29->unk02[2] = Hu3DJointMotion(var_r31, var_r28); Hu3DMotionSet(var_r31, var_r29->unk02[0]); - Hu3DModelAttrSet(var_r31, 1); - Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelAttrSet(var_r31, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_LOOP); Hu3DModelHookSet(var_r31, "itemhook_r", temp_r27); Hu3DModelShadowSet(var_r31); var_r29 = &var_r30->unkE4[1]; @@ -667,19 +627,20 @@ s32 fn_1_1C4C(void) { var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 46), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r29->unk02[2] = Hu3DJointMotion(var_r31, var_r28); Hu3DMotionSet(var_r31, var_r29->unk02[0]); - Hu3DModelAttrSet(var_r31, 1); - Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelAttrSet(var_r31, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_LOOP); Hu3DModelHookSet(var_r31, "itemhook_l", temp_r27); Hu3DModelShadowSet(var_r31); var_r26 = HuPrcChildCreate(fn_1_5384, 0x2000, 0x2000, 0, HuPrcCurrentGet()); var_r26->user_data = var_r30; } -s32 fn_1_20C8(void) { - UnkBss138Struct* var_r31; - UnkBss138InnerStruct00* temp_r29; - Process* var_r26; - void* var_r28; +s32 fn_1_20C8(void) +{ + UnkBss138Struct *var_r31; + UnkBss138InnerStruct00 *temp_r29; + Process *var_r26; + void *var_r28; s16 var_r30; s16 var_r25; s32 i; @@ -709,7 +670,7 @@ s32 fn_1_20C8(void) { Hu3DModelCameraSet(var_r30, 1); Hu3DModelPosSet(var_r30, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); Hu3DModelRotSet(var_r30, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); - Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DMotionTimeSet(var_r30, Hu3DMotionMaxTimeGet(var_r30) / 4); temp_r29 = &var_r31->unk1C[1]; var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 49), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -718,19 +679,20 @@ s32 fn_1_20C8(void) { Hu3DModelCameraSet(var_r30, 1); Hu3DModelPosSet(var_r30, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); Hu3DModelRotSet(var_r30, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); - Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DMotionTimeSet(var_r30, Hu3DMotionMaxTimeGet(var_r30) / 4); for (i = 0; i < 3; i++) { temp_r29 = &var_r31->unk1C[i + 2]; if (i == 0) { var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 50), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r29->unk00 = var_r30 = var_r25 = Hu3DModelCreate(var_r28); - } else { + } + else { temp_r29->unk00 = Hu3DModelLink(var_r25); } var_r30 = temp_r29->unk00; Hu3DModelCameraSet(var_r30, 1); - Hu3DModelAttrSet(var_r30, 0x40000040); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_SHAPE_LOOP); } temp_r29 = &var_r31->unkE4[0]; var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 51), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -744,7 +706,7 @@ s32 fn_1_20C8(void) { temp_r29->unk10.x = temp_r29->unk10.y = temp_r29->unk10.z = 0.0f; Hu3DModelPosSet(var_r30, temp_r29->unk10.x, temp_r29->unk10.y, temp_r29->unk10.z); Hu3DModelRotSet(var_r30, 0.0f, -90.0f, 0.0f); - Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); Hu3DMotionSet(var_r30, temp_r29->unk02[0]); temp_r29 = &var_r31->unk1AC[0]; @@ -752,27 +714,23 @@ s32 fn_1_20C8(void) { var_r30 = Hu3DModelCreate(var_r28); temp_r29->unk00 = var_r30; Hu3DModelCameraSet(var_r30, 1); - Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); var_r26 = HuPrcChildCreate(fn_1_5910, 0x2000, 0x2000, 0, HuPrcCurrentGet()); var_r26->user_data = var_r31; } -ParticleHook lbl_1_data_30C[] = { - fn_1_3A60, - fn_1_3A9C, - fn_1_3AD8, - fn_1_3B14 -}; +ParticleHook lbl_1_data_30C[] = { fn_1_3A60, fn_1_3A9C, fn_1_3AD8, fn_1_3B14 }; -void fn_1_25D0(void) { +void fn_1_25D0(void) +{ u32 temp_r24; - UnkBss474Struct* temp_r31; - void* var_r28; - UnkBss474InnerStructE4* temp_r27; - UnkBss474DoublyInnerStruct6C* temp_r26; - AnimData* var_r21; - AnimData* var_r20; - Process* var_r23; + UnkBss474Struct *temp_r31; + void *var_r28; + UnkBss474InnerStructE4 *temp_r27; + UnkBss474DoublyInnerStruct6C *temp_r26; + AnimData *var_r21; + AnimData *var_r20; + Process *var_r23; s16 temp_r25; s32 var_r22; s32 i; @@ -810,7 +768,7 @@ void fn_1_25D0(void) { Hu3DModelCameraSet(temp_r31->unk00, 1 << temp_r31->unk38); Hu3DModelPosSet(temp_r31->unk00, 0.0f, 0.0f, 0.0f); Hu3DModelRotSet(temp_r31->unk00, 0.0f, 0.0f, 0.0f); - Hu3DModelAttrSet(temp_r31->unk00, 0x4001); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); var_r28 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_E3C], MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk04 = Hu3DModelCreate(var_r28); var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 14), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -832,9 +790,9 @@ void fn_1_25D0(void) { Hu3DModelPosSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f); Hu3DModelRotSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f); Hu3DModelTPLvlSet(temp_r31->unk06, 128.0f); - Hu3DModelAttrSet(temp_r31->unk06, 0x4000); + Hu3DModelAttrSet(temp_r31->unk06, HU3D_ATTR_NOCULL); for (j = 0; j < lbl_1_bss_E38; j++) { - temp_r31->unk6C[j] = (void*) Hu3DModelObjPtrGet(temp_r31->unk00, lbl_1_data_1C8[lbl_1_bss_E3C][j]); + temp_r31->unk6C[j] = (void *)Hu3DModelObjPtrGet(temp_r31->unk00, lbl_1_data_1C8[lbl_1_bss_E3C][j]); if (!temp_r31->unk6C[j]) { OSReport("objname %s\n", lbl_1_data_1C8[lbl_1_bss_E3C][j]); OSPanic("m411.c", 908, "ObjPtr"); @@ -850,12 +808,12 @@ void fn_1_25D0(void) { temp_r27->unk18 = temp_r26->unk18; temp_r27->unk1C = temp_r26->unk1C; temp_r27->unk20 = temp_r26->unk20; - temp_r31->unk94[j] = (void*) Hu3DModelObjPtrGet(temp_r31->unk06, lbl_1_data_1C8[lbl_1_bss_E3C][j]); + temp_r31->unk94[j] = (void *)Hu3DModelObjPtrGet(temp_r31->unk06, lbl_1_data_1C8[lbl_1_bss_E3C][j]); if (!temp_r31->unk94[j]) { OSReport("objname %s\n", lbl_1_data_1C8[lbl_1_bss_E3C][j]); OSPanic("m411.c", 919, "ObjPtr"); } - temp_r31->unkBC[j] = (void*) Hu3DModelObjPtrGet(temp_r31->unk04, lbl_1_data_1C8[lbl_1_bss_E3C][j]); + temp_r31->unkBC[j] = (void *)Hu3DModelObjPtrGet(temp_r31->unk04, lbl_1_data_1C8[lbl_1_bss_E3C][j]); if (!temp_r31->unkBC[j]) { OSReport("objname %s\n", lbl_1_data_1C8[lbl_1_bss_E3C][j]); OSPanic("m411.c", 925, "ObjPtr"); @@ -900,19 +858,19 @@ void fn_1_25D0(void) { temp_r31->unk58 = 180.0f; Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); - Hu3DModelAttrSet(temp_r31->unk08, 1); + Hu3DModelAttrSet(temp_r31->unk08, HU3D_ATTR_DISPOFF); for (j = 0; j < 9; j++) { temp_r31->unk0E[j] = CharModelMotionCreate(lbl_1_data_240[GWPlayerCfg[i].character], lbl_1_data_280[j]); } CharModelMotionSet(lbl_1_data_240[GWPlayerCfg[i].character], temp_r31->unk0E[0]); - Hu3DModelAttrSet(temp_r31->unk08, 0x40000001); + Hu3DModelAttrSet(temp_r31->unk08, HU3D_MOTATTR_LOOP); if (lbl_1_bss_E40 == 0) { var_r28 = HuDataSelHeapReadNum(lbl_1_data_260[GWPlayerCfg[i].character], MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk20 = Hu3DModelCreate(var_r28); - Hu3DModelAttrSet(temp_r31->unk20, 0x800001); + Hu3DModelAttrSet(temp_r31->unk20, HU3D_ATTR_DISPOFF | HU3D_ATTR_CULL_FRONT); Hu3DModelCameraSet(temp_r31->unk20, 1); for (j = 0; j < 9; j++) { - var_r28 = HuDataSelHeapReadNum((u8) lbl_1_data_280[j] + lbl_1_data_2A4[GWPlayerCfg[i].character], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r28 = HuDataSelHeapReadNum((u8)lbl_1_data_280[j] + lbl_1_data_2A4[GWPlayerCfg[i].character], MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk22[j] = Hu3DJointMotion(temp_r31->unk20, var_r28); } Hu3DMotionSet(temp_r31->unk20, temp_r31->unk22[3]); @@ -948,13 +906,14 @@ void fn_1_25D0(void) { HuPrcChildCreate(fn_1_ACB0, 0x1000, 0x1000, 0, HuPrcCurrentGet()); } -void fn_1_34B0(ModelData* model, ParticleData* particle, Mtx matrix, s32 arg3) { +void fn_1_34B0(ModelData *model, ParticleData *particle, Mtx matrix, s32 arg3) +{ float var_f30; float temp_f28; float var_f31; float temp_f29; - HsfanimStruct01* var_r31; - UnkBss474Struct* temp_r28; + HsfanimStruct01 *var_r31; + UnkBss474Struct *temp_r28; s16 i; s16 j; s16 k; @@ -1006,7 +965,7 @@ void fn_1_34B0(ModelData* model, ParticleData* particle, Mtx matrix, s32 arg3) { if (var_r31->unk14.x == 0.0f) { continue; } - PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); var_r31->unk08.x *= 0.95f; var_r31->unk08.y *= 0.95f; var_r31->unk14.y += 20.0f; @@ -1032,70 +991,67 @@ void fn_1_34B0(ModelData* model, ParticleData* particle, Mtx matrix, s32 arg3) { PPCSync(); } -void fn_1_3A60(ModelData* model, ParticleData* particle, Mtx matrix) { +void fn_1_3A60(ModelData *model, ParticleData *particle, Mtx matrix) +{ fn_1_34B0(model, particle, matrix, 0); } -void fn_1_3A9C(ModelData* model, ParticleData* particle, Mtx matrix) { +void fn_1_3A9C(ModelData *model, ParticleData *particle, Mtx matrix) +{ fn_1_34B0(model, particle, matrix, 1); } -void fn_1_3AD8(ModelData* model, ParticleData* particle, Mtx matrix) { +void fn_1_3AD8(ModelData *model, ParticleData *particle, Mtx matrix) +{ fn_1_34B0(model, particle, matrix, 2); } -void fn_1_3B14(ModelData* model, ParticleData* particle, Mtx matrix) { +void fn_1_3B14(ModelData *model, ParticleData *particle, Mtx matrix) +{ fn_1_34B0(model, particle, matrix, 3); } -void fn_1_3B50(void) { +void fn_1_3B50(void) +{ float temp_f31; float temp_f30; - UnkBss138InnerStruct00* temp_r31; + UnkBss138InnerStruct00 *temp_r31; s16 temp_r30; temp_r31 = HuPrcCurrentGet()->user_data; temp_r30 = temp_r31->unk0C; Hu3DModelRotSet(temp_r30, 0.0f, 0.0f, 0.0f); - Hu3DModelAttrReset(temp_r30, 1); + Hu3DModelAttrReset(temp_r30, HU3D_ATTR_DISPOFF); temp_f31 = -15.0f; temp_f30 = -15.0f; - Hu3DModelPosSet(temp_r30, - temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, - temp_r31->unk10.y + temp_f30, + Hu3DModelPosSet(temp_r30, temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, temp_r31->unk10.y + temp_f30, temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); HuPrcVSleep(); - Hu3DModelAttrSet(temp_r30, 1); + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); HuPrcSleep(4); - Hu3DModelAttrReset(temp_r30, 1); + Hu3DModelAttrReset(temp_r30, HU3D_ATTR_DISPOFF); temp_f31 = 15.0f; temp_f30 = -15.0f; - Hu3DModelPosSet(temp_r30, - temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, - temp_r31->unk10.y + temp_f30, + Hu3DModelPosSet(temp_r30, temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, temp_r31->unk10.y + temp_f30, temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); HuPrcVSleep(); - Hu3DModelAttrSet(temp_r30, 1); + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); HuPrcSleep(4); - Hu3DModelAttrReset(temp_r30, 1); + Hu3DModelAttrReset(temp_r30, HU3D_ATTR_DISPOFF); temp_f31 = -15.0f; temp_f30 = 15.0f; - Hu3DModelPosSet(temp_r30, - temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, - temp_r31->unk10.y + temp_f30, + Hu3DModelPosSet(temp_r30, temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, temp_r31->unk10.y + temp_f30, temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); HuPrcVSleep(); - Hu3DModelAttrSet(temp_r30, 1); + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); HuPrcSleep(4); - Hu3DModelAttrReset(temp_r30, 1); + Hu3DModelAttrReset(temp_r30, HU3D_ATTR_DISPOFF); temp_f31 = 15.0f; temp_f30 = 15.0f; - Hu3DModelPosSet(temp_r30, - temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, - temp_r31->unk10.y + temp_f30, + Hu3DModelPosSet(temp_r30, temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, temp_r31->unk10.y + temp_f30, temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); HuPrcVSleep(); - Hu3DModelAttrSet(temp_r30, 1); + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); HuPrcSleep(4); HuPrcKill(HuPrcCurrentGet()); while (TRUE) { @@ -1103,20 +1059,21 @@ void fn_1_3B50(void) { } } -void fn_1_3F34(void) { +void fn_1_3F34(void) +{ float temp_f28; float var_f31; float temp_f30; float var_f29; - UnkBss138InnerStruct00* temp_r31; - Process* var_r30; + UnkBss138InnerStruct00 *temp_r31; + Process *var_r30; temp_r31 = HuPrcCurrentGet()->user_data; temp_r31->unk10.x = -500.0f + 1000.0f * frandf(); temp_r31->unk10.y = 1200.0f; temp_r31->unk10.z = 0.0f; temp_r31->unk1C.x = temp_r31->unk1C.y = temp_r31->unk1C.z = 0.0f; - Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_ATTR_DISPOFF); temp_f28 = temp_r31->unk10.x; var_f31 = 0.0f; temp_f30 = 1.0f + 2.0f * frandf(); @@ -1148,14 +1105,15 @@ void fn_1_3F34(void) { } HuPrcVSleep(); } - HuPrcCurrentGet()->user_data = (void*) 10000; + HuPrcCurrentGet()->user_data = (void *)10000; HuPrcKill(HuPrcCurrentGet()); while (TRUE) { HuPrcVSleep(); } } -void fn_1_4218(void) { +void fn_1_4218(void) +{ float temp_f28; float var_f29; float temp_f26; @@ -1166,14 +1124,14 @@ void fn_1_4218(void) { float temp_f23; float temp_f27; float temp_f22; - UnkBss138InnerStruct00* temp_r31; + UnkBss138InnerStruct00 *temp_r31; temp_r31 = HuPrcCurrentGet()->user_data; temp_f28 = -600.0f + 1200.0f * frandf(); var_f29 = 1200.0f; temp_f26 = -2900.0f; temp_f25 = var_f31 = temp_f24 = 0.0f; - Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_ATTR_DISPOFF); temp_f23 = temp_f28; var_f30 = 0.0f; temp_f27 = 1.0f + 2.0f * frandf(); @@ -1197,27 +1155,29 @@ void fn_1_4218(void) { Hu3DModelRotSet(temp_r31->unk00, temp_f25, var_f31, temp_f24); HuPrcVSleep(); } - HuPrcCurrentGet()->user_data = (void*) 10000; + HuPrcCurrentGet()->user_data = (void *)10000; HuPrcKill(HuPrcCurrentGet()); while (TRUE) { HuPrcVSleep(); } } -void fn_1_4454(void) { +void fn_1_4454(void) +{ float temp_f30; float sp8; float temp_f29; float var_f31; - UnkBss138InnerStruct00* temp_r31; - UnkBss138InnerStruct00* var_r30; + UnkBss138InnerStruct00 *temp_r31; + UnkBss138InnerStruct00 *var_r30; s32 i; temp_r31 = HuPrcCurrentGet()->user_data; if (temp_r31->unk0E == 0) { var_f31 = 0.0f; var_r30 = &lbl_1_bss_138.unk1AC[2]; - } else { + } + else { var_f31 = 180.0f; var_r30 = &lbl_1_bss_138.unk1AC[3]; } @@ -1260,13 +1220,14 @@ void fn_1_4454(void) { } Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, 0.0f, temp_r31->unk1C.z); Hu3DModelRotSet(var_r30->unk00, temp_r31->unk1C.x, 0.0f, temp_r31->unk1C.z); - Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[1], 0.0f, 5.0f, 0); - Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[1], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); for (i = 0; i < 120; i++) { if (var_f31 > 180.0f) { temp_r31->unk10.x += 1.6666666f; temp_r31->unk10.z += 0.8333333f; - } else { + } + else { temp_r31->unk10.z += 0.8333333f; } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); @@ -1274,27 +1235,29 @@ void fn_1_4454(void) { HuPrcVSleep(); } Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[2]); - Hu3DModelAttrReset(temp_r31->unk00, 0x40000001); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); Hu3DMotionSet(var_r30->unk00, var_r30->unk02[2]); - Hu3DModelAttrReset(var_r30->unk00, 0x40000001); + Hu3DModelAttrReset(var_r30->unk00, HU3D_MOTATTR_LOOP); while (Hu3DMotionEndCheck(temp_r31->unk00) == 0) { HuPrcVSleep(); } if (temp_r31->unk0E == 0) { - Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[3], 0.0f, 5.0f, 0x40000001); - Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[3], 0.0f, 5.0f, 0x40000001); - } else { - Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[4], 0.0f, 5.0f, 0x40000001); - Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[4], 0.0f, 5.0f, 0x40000001); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[4], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[4], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } while (TRUE) { HuPrcVSleep(); } } -void fn_1_4968(void) { - UnkBss138InnerStruct00* var_r31; - UnkBss138InnerStruct00* var_r30; +void fn_1_4968(void) +{ + UnkBss138InnerStruct00 *var_r31; + UnkBss138InnerStruct00 *var_r30; s32 i; var_r31 = &lbl_1_bss_138.unk1C[1]; @@ -1305,8 +1268,8 @@ void fn_1_4968(void) { Hu3DModelRotSet(var_r30->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); HuPrcVSleep(); } - Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, 0x40000001); - Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[2], 0.0f, 5.0f, 0x40000001); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[2], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); for (i = 0; i < 60; i++) { var_r31->unk10.x += 2.5f; var_r31->unk10.z += 3.3333333f; @@ -1320,8 +1283,8 @@ void fn_1_4968(void) { Hu3DModelRotSet(var_r30->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); HuPrcVSleep(); } - Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[1], 0.0f, 10.0f, 0x40000001); - Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[1], 0.0f, 10.0f, 0x40000001); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); while (TRUE) { if (lbl_1_bss_E98 >= 5) { break; @@ -1336,11 +1299,12 @@ void fn_1_4968(void) { } } -void fn_1_4BB0(void) { - UnkBss138Struct* temp_r28; - Process* sp24[5]; - Process* sp10[5]; - Process* sp8[2]; +void fn_1_4BB0(void) +{ + UnkBss138Struct *temp_r28; + Process *sp24[5]; + Process *sp10[5]; + Process *sp8[2]; s32 var_r30; s32 var_r29; s32 var_r27; @@ -1367,7 +1331,8 @@ void fn_1_4BB0(void) { break; } } - } else { + } + else { var_r30--; } if (var_r29 == 0) { @@ -1379,7 +1344,8 @@ void fn_1_4BB0(void) { break; } } - } else { + } + else { var_r29--; } if (lbl_1_bss_E98 == 4 && var_r27 == 0) { @@ -1391,23 +1357,24 @@ void fn_1_4BB0(void) { } HuPrcVSleep(); for (i = 0; i < 5; i++) { - if (sp24[i] && sp24[i]->user_data == (void*) 10000) { + if (sp24[i] && sp24[i]->user_data == (void *)10000) { sp24[i] = NULL; } - if (sp10[i] && sp10[i]->user_data == (void*) 10000) { + if (sp10[i] && sp10[i]->user_data == (void *)10000) { sp10[i] = NULL; } } } } -void fn_1_4E8C(void) { +void fn_1_4E8C(void) +{ float var_f31; - UnkBss138InnerStruct00* temp_r31; + UnkBss138InnerStruct00 *temp_r31; s32 temp_r29; s32 i; - temp_r29 = (s32) HuPrcCurrentGet()->user_data; + temp_r29 = (s32)HuPrcCurrentGet()->user_data; temp_r31 = &lbl_1_bss_138.unkE4[temp_r29 - 1]; temp_r31->unk10.y = 0.0f; temp_r31->unk10.z = 200.0f; @@ -1416,37 +1383,39 @@ void fn_1_4E8C(void) { temp_r31->unk1C.x = temp_r31->unk1C.z = 0.0f; temp_r31->unk1C.y = -90.0f; var_f31 = (120.0f - temp_r31->unk10.x) / 60.0f; - } else { + } + else { temp_r31->unk10.x = -500.0f; temp_r31->unk1C.x = temp_r31->unk1C.z = 0.0f; temp_r31->unk1C.y = 90.0f; var_f31 = (-120.0f - temp_r31->unk10.x) / 60.0f; } - Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_ATTR_DISPOFF); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); for (i = 0; i < 60; i++) { temp_r31->unk10.x += var_f31; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); HuPrcVSleep(); } - Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[1], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); while (!Hu3DMotionEndCheck(temp_r31->unk00)) { HuPrcVSleep(); } - Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[2], 0.0f, 2.0f, 0x40000001); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[2], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); HuAudFXPlay(0x36); while (TRUE) { HuPrcVSleep(); } } -void fn_1_507C(void) { +void fn_1_507C(void) +{ float temp_f31; s32 var_r28; s32 var_r29; - UnkBss138Struct* temp_r27; - UnkBss138InnerStruct00* temp_r31; - UnkBss138InnerStruct00* temp_r30; + UnkBss138Struct *temp_r27; + UnkBss138InnerStruct00 *temp_r31; + UnkBss138InnerStruct00 *temp_r30; temp_r27 = HuPrcCurrentGet()->user_data; temp_r31 = &temp_r27->unk1C[0]; @@ -1511,16 +1480,17 @@ void fn_1_507C(void) { HuPrcVSleep(); } } - Hu3DModelAttrSet(temp_r31->unk00, 1); - Hu3DModelAttrSet(temp_r30->unk00, 1); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r30->unk00, HU3D_ATTR_DISPOFF); while (TRUE) { HuPrcVSleep(); } } -void fn_1_5384(void) { - UnkBss138Struct* temp_r30; - Process* var_r31; +void fn_1_5384(void) +{ + UnkBss138Struct *temp_r30; + Process *var_r31; temp_r30 = HuPrcCurrentGet()->user_data; var_r31 = HuPrcChildCreate(fn_1_507C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); @@ -1530,19 +1500,20 @@ void fn_1_5384(void) { } HuPrcSleep(0x122); var_r31 = HuPrcChildCreate(fn_1_4E8C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); - var_r31->user_data = (void*) 1; + var_r31->user_data = (void *)1; var_r31 = HuPrcChildCreate(fn_1_4E8C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); - var_r31->user_data = (void*) 2; + var_r31->user_data = (void *)2; while (TRUE) { HuPrcVSleep(); } } -void fn_1_544C(void) { - UnkBss138InnerStruct00* temp_r31; +void fn_1_544C(void) +{ + UnkBss138InnerStruct00 *temp_r31; s32 temp_r30; - temp_r30 = (s32) HuPrcCurrentGet()->user_data; + temp_r30 = (s32)HuPrcCurrentGet()->user_data; temp_r31 = &lbl_1_bss_138.unk1C[temp_r30 + 2]; switch (temp_r30) { case 0: @@ -1556,7 +1527,7 @@ void fn_1_544C(void) { break; } while (TRUE) { - Hu3DModelAttrSet(temp_r31->unk00, 0x40000001); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); temp_r31->unk10.x += 2.0f * lbl_1_bss_E24; if (temp_r31->unk10.x > 650.0f) { temp_r31->unk10.x -= 1300.0f; @@ -1566,7 +1537,8 @@ void fn_1_544C(void) { } } -void fn_1_5554(void) { +void fn_1_5554(void) +{ float var_f28; float temp_f25; float temp_f27; @@ -1577,14 +1549,14 @@ void fn_1_5554(void) { float sp8; float temp_f24; UnkBss138InnerStruct00 spC; - UnkBss138InnerStruct00* var_r31; - UnkBss138InnerStruct00* var_r30; + UnkBss138InnerStruct00 *var_r31; + UnkBss138InnerStruct00 *var_r30; var_r31 = &spC; var_r30 = &lbl_1_bss_138.unk1AC[0]; var_r31->unk00 = Hu3DModelLink(var_r30->unk00); Hu3DModelCameraSet(var_r31->unk00, 1); - Hu3DModelAttrReset(var_r31->unk00, 1); + Hu3DModelAttrReset(var_r31->unk00, HU3D_ATTR_DISPOFF); var_r31->unk10.x = -500.0f + 100.0f * frandf(); var_r31->unk10.y = var_f26 = 200.0f + 500.0f * frandf(); var_r31->unk10.z = 400.0f; @@ -1630,7 +1602,8 @@ void fn_1_5554(void) { } } -void fn_1_58BC(void) { +void fn_1_58BC(void) +{ while (TRUE) { if (lbl_1_bss_E98 == 4) { break; @@ -1643,25 +1616,26 @@ void fn_1_58BC(void) { } } -void fn_1_5910(void) { +void fn_1_5910(void) +{ float var_f31; - UnkBss138Struct* spC; - Process* var_r29; - UnkBss138InnerStruct00* var_r31; - UnkBss474Struct* sp8; + UnkBss138Struct *spC; + Process *var_r29; + UnkBss138InnerStruct00 *var_r31; + UnkBss474Struct *sp8; s32 i; spC = HuPrcCurrentGet()->user_data; HuPrcChildCreate(fn_1_58BC, 0x2000, 0x2000, 0, HuPrcCurrentGet()); for (i = 0; i < 3; i++) { var_r29 = HuPrcChildCreate(fn_1_544C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); - var_r29->user_data = (void*) i; + var_r29->user_data = (void *)i; } while (lbl_1_bss_E98 != 4) { HuPrcVSleep(); } var_r31 = &lbl_1_bss_138.unkE4[0]; - Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[1], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); for (var_f31 = 1.0f; var_f31 > 0.0f; var_f31 -= 0.033333335f) { lbl_1_bss_E24 = var_f31; Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f * var_f31, 0.0f, 0.0f); @@ -1687,125 +1661,59 @@ void fn_1_5910(void) { Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f, 0.0f, 0.0f); Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f, 0.0f, 0.0f); HuAudFXPitchSet(lbl_1_bss_E2C[0], 0); - Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, 0x40000001); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); while (TRUE) { HuPrcVSleep(); } } -s8 fn_1_5D58(s32 arg0, s32 arg1) { - UnkBss474Struct* temp_r31; +s8 fn_1_5D58(s32 arg0, s32 arg1) +{ + UnkBss474Struct *temp_r31; s8 var_r30; - s8 var_r29; - s8 var_r28; temp_r31 = &lbl_1_bss_474[arg0]; if (!GWPlayerCfg[arg0].iscom) { - if (arg1 != 0) { - var_r29 = var_r30 = HuPadStkY[temp_r31->unk3C]; - } else { - var_r29 = var_r30 = HuPadStkX[temp_r31->unk3C]; - } - (void) 1; // Required to match. - } else { - if (arg1 != 0) { - var_r28 = var_r30 = temp_r31->unk255; - } else { - var_r28 = var_r30 = temp_r31->unk254; - } + (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk3C]) : (var_r30 = HuPadStkX[temp_r31->unk3C]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk255) : (var_r30 = temp_r31->unk254); } return var_r30; } -static inline s8 fn_1_5D58_copy(s32 arg0, s32 arg1) { - UnkBss474Struct* temp_r31; +u8 fn_1_5E10(s32 arg0, s32 arg1) +{ + UnkBss474Struct *temp_r31; s8 var_r30; - s8 var_r29; - s8 var_r28; temp_r31 = &lbl_1_bss_474[arg0]; if (!GWPlayerCfg[arg0].iscom) { - if (arg1 != 0) { - var_r30 = HuPadStkY[temp_r31->unk3C]; - } else { - var_r30 = HuPadStkX[temp_r31->unk3C]; - } - } else { - if (arg1 != 0) { - var_r30 = temp_r31->unk255; - } else { - var_r30 = temp_r31->unk254; - } + (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk3C]) : (var_r30 = HuPadTrigL[temp_r31->unk3C]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk256) : (var_r30 = temp_r31->unk257); } return var_r30; } -u8 fn_1_5E10(s32 arg0, s32 arg1) { - UnkBss474Struct* temp_r31; - s8 var_r30; - s8 var_r29; - s8 var_r28; - - temp_r31 = &lbl_1_bss_474[arg0]; - if (!GWPlayerCfg[arg0].iscom) { - if (arg1 != 0) { - var_r29 = var_r30 = HuPadTrigR[temp_r31->unk3C]; - } else { - var_r29 = var_r30 = HuPadTrigL[temp_r31->unk3C]; - } - (void) 1; // Required to match. - } else { - if (arg1 != 0) { - var_r28 = var_r30 = temp_r31->unk256; - } else { - var_r28 = var_r30 = temp_r31->unk257; - } - } - return var_r30; -} - - -static inline u8 fn_1_5E10_copy(s32 arg0, s32 arg1) { - UnkBss474Struct* temp_r31; - s8 var_r30; - s8 var_r29; - s8 var_r28; - - temp_r31 = &lbl_1_bss_474[arg0]; - if (!GWPlayerCfg[arg0].iscom) { - if (arg1 != 0) { - var_r30 = HuPadTrigR[temp_r31->unk3C]; - } else { - var_r30 = HuPadTrigL[temp_r31->unk3C]; - } - } else { - if (arg1 != 0) { - var_r30 = temp_r31->unk256; - } else { - var_r30 = temp_r31->unk257; - } - } - return var_r30; -} - -u16 fn_1_5ED0(s32 arg0) { - UnkBss474Struct* temp_r31; +u16 fn_1_5ED0(s32 arg0) +{ + UnkBss474Struct *temp_r31; u16 var_r30; temp_r31 = &lbl_1_bss_474[arg0]; - (void)temp_r31; - (void)temp_r31; - (void)temp_r31; - (void)temp_r31; if (!GWPlayerCfg[arg0].iscom) { var_r30 = HuPadBtnDown[temp_r31->unk3C]; - } else { + } + else { var_r30 = temp_r31->unk258; } return var_r30; } -void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1) { +void fn_1_5F3C(UnkBss474Struct *arg0, s32 arg1) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -1817,10 +1725,10 @@ void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1) { float var_f27; float var_f26; float var_f25; - UnkBss474DoublyInnerStruct6C* temp_r31; - UnkBss474DoublyInnerStruct6C* temp_r29; - UnkBss474DoublyInnerStruct6C* temp_r27; - UnkBss474InnerStructE4* temp_r28; + UnkBss474DoublyInnerStruct6C *temp_r31; + UnkBss474DoublyInnerStruct6C *temp_r29; + UnkBss474DoublyInnerStruct6C *temp_r27; + UnkBss474InnerStructE4 *temp_r28; s32 var_r25; s32 i; @@ -1855,7 +1763,8 @@ void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1) { temp_r27->unk08 += 10.0f; if (i < 14) { var_r25 += 17; - } else if (i < 28) { + } + else if (i < 28) { var_r25 -= 17; } Hu3DModelTPLvlSet(arg0->unk04, 255 - var_r25); @@ -1875,11 +1784,12 @@ void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1) { temp_r27->unk00 = 5000.0f; } -void fn_1_6428(UnkBss474Struct* arg0, s32 arg1) { +void fn_1_6428(UnkBss474Struct *arg0, s32 arg1) +{ float var_f31; - UnkBss474DoublyInnerStruct6C* temp_r31; - UnkBss474DoublyInnerStruct6C* temp_r29; - UnkBss474InnerStructE4* temp_r30; + UnkBss474DoublyInnerStruct6C *temp_r31; + UnkBss474DoublyInnerStruct6C *temp_r29; + UnkBss474InnerStructE4 *temp_r30; temp_r31 = &arg0->unk6C[arg1]->unk1C; temp_r29 = &arg0->unk94[arg1]->unk1C; @@ -1910,9 +1820,10 @@ void fn_1_6428(UnkBss474Struct* arg0, s32 arg1) { temp_r29->unk20 = 0.8f * temp_r31->unk20; } -void fn_1_6820(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { - UnkBss474DoublyInnerStruct6C* temp_r30; - UnkBss474DoublyInnerStruct6C* temp_r31; +void fn_1_6820(UnkBss474Struct *arg0, s32 arg1, s32 arg2) +{ + UnkBss474DoublyInnerStruct6C *temp_r30; + UnkBss474DoublyInnerStruct6C *temp_r31; float temp_f30; float temp_f29; float temp_f28; @@ -1952,13 +1863,14 @@ void fn_1_6820(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { HuSprAttrReset(arg0->unk0C, 0, HUSPR_ATTR_REVERSE); } -void fn_1_6A3C(void) { +void fn_1_6A3C(void) +{ float var_f31; float var_f30; float temp_f29; - UnkFn64A3Struct* temp_r30; - UnkBss474DoublyInnerStruct6C* temp_r31; - UnkBss474DoublyInnerStruct6C* temp_r28; + UnkFn64A3Struct *temp_r30; + UnkBss474DoublyInnerStruct6C *temp_r31; + UnkBss474DoublyInnerStruct6C *temp_r28; s32 var_r27; s32 i; @@ -1968,7 +1880,8 @@ void fn_1_6A3C(void) { HuAudFXPlay(0x56C); if (temp_r30->unk08 != 0) { var_f30 = temp_r31->unk14 + 90.0f; - } else { + } + else { var_f30 = temp_r31->unk14 - 90.0f; } if (var_f30 >= 360.0f) { @@ -1982,7 +1895,8 @@ void fn_1_6A3C(void) { for (i = 0, var_r27 = 15; i < var_r27; i++) { if (temp_r30->unk08 != 0) { temp_r31->unk14 = temp_f29 + 100.0 * sind(var_f31); - } else { + } + else { temp_r31->unk14 = temp_f29 - 100.0 * sind(var_f31); } temp_r28->unk14 = temp_r31->unk14; @@ -1994,7 +1908,8 @@ void fn_1_6A3C(void) { var_f31 -= 8.333333f; if (temp_r30->unk08 != 0) { temp_r31->unk14 = temp_f29 + 100.0 * sind(var_f31); - } else { + } + else { temp_r31->unk14 = temp_f29 - 100.0 * sind(var_f31); } temp_r28->unk14 = temp_r31->unk14; @@ -2009,10 +1924,11 @@ void fn_1_6A3C(void) { } } -void fn_1_6CF4(void) { +void fn_1_6CF4(void) +{ float temp_f30; float var_f31; - UnkBss474DoublyInnerStruct6C* temp_r31; + UnkBss474DoublyInnerStruct6C *temp_r31; temp_r31 = HuPrcCurrentGet()->user_data; HuPrcSleep(frandmod(30)); @@ -2037,8 +1953,9 @@ void fn_1_6CF4(void) { } } -void fn_1_6DD8(UnkBss474Struct* arg0, s32 arg1) { - UnkBss474DoublyInnerStruct6C* temp_r31; +void fn_1_6DD8(UnkBss474Struct *arg0, s32 arg1) +{ + UnkBss474DoublyInnerStruct6C *temp_r31; temp_r31 = &arg0->unk6C[arg1]->unk1C; if (temp_r31->unk00 > 220.0f) { @@ -2055,7 +1972,8 @@ void fn_1_6DD8(UnkBss474Struct* arg0, s32 arg1) { } } -void fn_1_6E9C(s32 arg0, s32 arg1) { +void fn_1_6E9C(s32 arg0, s32 arg1) +{ switch (GWPlayerCfg[arg0].diff) { case 0: arg1 *= 8; @@ -2072,18 +1990,20 @@ void fn_1_6E9C(s32 arg0, s32 arg1) { } if (arg1 <= 1) { HuPrcVSleep(); - } else { + } + else { HuPrcSleep(arg1 + frandmod(arg1 / 2)); } } -void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { +void fn_1_6F48(UnkBss474Struct *arg0, s32 arg1, s32 arg2) +{ Vec sp24; Vec sp18; Vec spC; float temp_f29; - UnkBss474DoublyInnerStruct6C* temp_r30; - UnkBss474InnerStructE4* temp_r25; + UnkBss474DoublyInnerStruct6C *temp_r30; + UnkBss474InnerStructE4 *temp_r25; s32 var_r27; s32 var_r23; @@ -2112,7 +2032,8 @@ void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { if (arg0->unk264 == -1) { if (frandmod(100) < var_r27 || lbl_1_bss_E38 == arg2 + 1) { arg0->unk264 = arg1; - } else { + } + else { var_r23 = frandmod(lbl_1_bss_E38 - arg2); arg0->unk264 = lbl_1_bss_E6C[arg2 + var_r23]; } @@ -2135,25 +2056,30 @@ void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { arg0->unk268 = 10; if (temp_r30->unk14 - 90.0f == 0.0f) { arg0->unk256 = 50; - } else { + } + else { arg0->unk257 = 50; } } } - } else { + } + else { fn_1_6E9C(arg0->unk34, 1); if (frandmod(100) < var_r27 || lbl_1_bss_E38 == arg2 + 1) { if (temp_r30->unk14 != 0.0f) { if (temp_r30->unk14 - 90.0f == 0.0f) { arg0->unk256 = 50; - } else { + } + else { arg0->unk257 = 50; } - } else { + } + else { arg0->unk258 = 0x100; arg0->unk264 = -1; } - } else { + } + else { switch (frandmod(3)) { case 0: arg0->unk256 = 50; @@ -2173,7 +2099,8 @@ void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { } } -void fn_1_75C8(void) { +void fn_1_75C8(void) +{ s16 var_r30; s32 var_r31; @@ -2192,7 +2119,8 @@ void fn_1_75C8(void) { } } -void fn_1_7680(void) { +void fn_1_7680(void) +{ s16 var_r30; s32 var_r31; @@ -2211,11 +2139,11 @@ void fn_1_7680(void) { } } - -static inline void m411InlineFunc(UnkBss474Struct* temp_r31, UnkBss474DoublyInnerStruct6C* temp_r30) { +static inline void m411InlineFunc(UnkBss474Struct *temp_r31, UnkBss474DoublyInnerStruct6C *temp_r30) +{ Vec sp74; - Vec sp80; - + Vec sp80; + float var_f22; float var_f23; @@ -2230,16 +2158,17 @@ static inline void m411InlineFunc(UnkBss474Struct* temp_r31, UnkBss474DoublyInne #define SOME_MACRO(x) ((x) >= 0 ? (x) : (-(x) > 20)) -void fn_1_7738(void) { +void fn_1_7738(void) +{ f32 temp_f26; f32 temp_f27; - Process* var_r24; - UnkBss474Struct* temp_r31; - UnkBss474DoublyInnerStruct6C* temp_r30; + Process *var_r24; + UnkBss474Struct *temp_r31; + UnkBss474DoublyInnerStruct6C *temp_r30; s32 var_r29; - UnkBss474DoublyInnerStruct6C* temp_r28; + UnkBss474DoublyInnerStruct6C *temp_r28; s32 temp_r26; - UnkBss474InnerStructE4* temp_r25; + UnkBss474InnerStructE4 *temp_r25; s32 var_r23; Vec spCC; Vec spC0; @@ -2258,17 +2187,18 @@ void fn_1_7738(void) { while (lbl_1_bss_E98 == 0) { HuPrcVSleep(); } - Hu3DModelAttrReset(temp_r31->unk08, 1); + Hu3DModelAttrReset(temp_r31->unk08, HU3D_ATTR_DISPOFF); for (var_r29 = 0; var_r29 < 30; var_r29++) { if (lbl_1_bss_E40 == 0) { lbl_1_bss_C4[temp_r31->unk38].z += 10.0f; - } else { + } + else { CZoomM[temp_r31->unk38] += 10.0f; } HuPrcVSleep(); } - Hu3DModelAttrReset(temp_r31->unk00, 1); - Hu3DModelAttrSet(temp_r31->unk02, 1); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->unk02, HU3D_ATTR_DISPOFF); if (temp_r31->unk34 == 0) { HuAudFXPlay(0x56F); } @@ -2282,7 +2212,7 @@ void fn_1_7738(void) { } omVibrate(temp_r31->unk34, 12, 6, 6); HuPrcSleep(30); - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[5], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[5], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcChildCreate(fn_1_75C8, 0x2000, 0x1000, 0, HuPrcCurrentGet()); if (temp_r31->unk34 == 0) { HuAudFXPlay(0x56B); @@ -2297,12 +2227,13 @@ void fn_1_7738(void) { for (var_r29 = 0; var_r29 < 30; var_r29++) { if (lbl_1_bss_E40 == 0) { lbl_1_bss_C4[temp_r31->unk38].z -= 10.0f; - } else { + } + else { CZoomM[temp_r31->unk38] -= 10.0f; } HuPrcVSleep(); } - Hu3DModelAttrSet(temp_r31->unk08, 1); + Hu3DModelAttrSet(temp_r31->unk08, HU3D_ATTR_DISPOFF); HuPrcSleep(60); lbl_1_bss_E98 = 2; for (var_r29 = 0; var_r29 < lbl_1_bss_E38; var_r29++) { @@ -2318,12 +2249,13 @@ void fn_1_7738(void) { temp_r30->unk04 = temp_r25->unk04; temp_r28->unk00 = 20.0f + temp_r30->unk00; temp_r28->unk04 = -20.0f + temp_r30->unk04; - } else { + } + else { temp_r30->unk00 = temp_r30->unk04 = 0.0f; temp_r28->unk00 = 20.0f + temp_r30->unk00; temp_r28->unk04 = -20.0f + temp_r30->unk04; m411InlineFunc(temp_r31, temp_r30); - HuSprAttrReset(temp_r31->unk0C, 0, 4); + HuSprAttrReset(temp_r31->unk0C, 0, HUSPR_ATTR_DISPOFF); } temp_r30->unk08 = 50.0f; temp_r28->unk08 = temp_r30->unk08 - 5.0f; @@ -2340,10 +2272,10 @@ void fn_1_7738(void) { } if (sp70 == 0) { var_r23 = -1; - if (fn_1_5E10_copy(temp_r31->unk34, 0) > 20) { + if (fn_1_5E10(temp_r31->unk34, 0) > 20) { var_r23 = 1; } - if (fn_1_5E10_copy(temp_r31->unk34, 1) > 20) { + if (fn_1_5E10(temp_r31->unk34, 1) > 20) { var_r23 = 0; } if (var_r23 != -1) { @@ -2355,10 +2287,6 @@ void fn_1_7738(void) { spA4.unk08 = var_r23; spA4.unk0C = &sp70; } - (void)var_r23; - (void)var_r23; - (void)var_r23; - (void)var_r23; } if ((fn_1_5ED0(temp_r31->unk34) & 0x100) && sp70 == 0) { if (0.0f == temp_r30->unk14) { @@ -2378,10 +2306,8 @@ void fn_1_7738(void) { fn_1_6428(temp_r31, temp_r26); } temp_r31->unk60 = -1.0f; - if (SOME_MACRO(fn_1_5D58_copy(temp_r31->unk34, 0)) != 0 - || SOME_MACRO(fn_1_5D58_copy(temp_r31->unk34, 1)) != 0) - { - temp_r31->unk60 = atan2d(fn_1_5D58_copy(temp_r31->unk34, 0), fn_1_5D58_copy(temp_r31->unk34, 1)); + if (SOME_MACRO(fn_1_5D58(temp_r31->unk34, 0)) != 0 || SOME_MACRO(fn_1_5D58(temp_r31->unk34, 1)) != 0) { + temp_r31->unk60 = atan2d(fn_1_5D58(temp_r31->unk34, 0), fn_1_5D58(temp_r31->unk34, 1)); } if (-1.0f != temp_r31->unk60) { temp_r30->unk00 += 5 * sind(temp_r31->unk60); @@ -2398,12 +2324,10 @@ void fn_1_7738(void) { while (TRUE) { HuPrcVSleep(); } - (void) var_r24; - (void) var_r24; - (void) var_r24; } -void fn_1_8A80(float arg0, float arg1) { +void fn_1_8A80(float arg0, float arg1) +{ Hu3DCameraViewportSet(2, 10.0f, 10.0f, arg0 - 11.0f, arg1 - 11.0f, 0.0f, 1.0f); Hu3DCameraScissorSet(2, 10, 10, arg0 - 11.0f, arg1 - 11.0f); Hu3DCameraViewportSet(4, arg0 + 2.0f, 10.0f, 630.0f - arg0, arg1 - 11.0f, 0.0f, 1.0f); @@ -2414,7 +2338,8 @@ void fn_1_8A80(float arg0, float arg1) { Hu3DCameraScissorSet(16, arg0 + 2.0f, arg1 + 2.0f, 630.0f - arg0, 470.0f - arg1); } -void fn_1_8DBC(void) { +void fn_1_8DBC(void) +{ float var_f31; float var_f30; s32 i; @@ -2444,7 +2369,8 @@ void fn_1_8DBC(void) { Hu3DCameraScissorSet(16, 322, 242, 310, 230); } -void fn_1_9490(void) { +void fn_1_9490(void) +{ float var_f31; float var_f30; float var_f29; @@ -2454,7 +2380,7 @@ void fn_1_9490(void) { s32 temp_r30; s32 i; - temp_r30 = (s32) HuPrcCurrentGet()->user_data; + temp_r30 = (s32)HuPrcCurrentGet()->user_data; switch (temp_r30) { case 0: var_f31 = 645.0f; @@ -2491,14 +2417,15 @@ void fn_1_9490(void) { } } -void fn_1_9BC0(s32 arg0) { +void fn_1_9BC0(s32 arg0) +{ float var_f30; float var_f31; s32 var_r29; - UnkBss474Struct* temp_r31; - UnkBss474Struct* var_r26; - Process* var_r28; - UnkBss138InnerStruct00* var_r27; + UnkBss474Struct *temp_r31; + UnkBss474Struct *var_r26; + Process *var_r28; + UnkBss138InnerStruct00 *var_r27; s32 i; temp_r31 = &lbl_1_bss_474[arg0]; @@ -2513,10 +2440,10 @@ void fn_1_9BC0(s32 arg0) { for (i = 0; i < 4; i++) { HuSprAttrSet(lbl_1_bss_474[i].unk0C, 0, HUSPR_ATTR_DISPOFF); } - Hu3DModelAttrReset(temp_r31->unk02, 1); - Hu3DModelAttrSet(temp_r31->unk00, 1); + Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF); var_r28 = HuPrcChildCreate(fn_1_9490, 0x2000, 0x1000, 0, HuPrcCurrentGet()); - var_r28->user_data = (void*) arg0; + var_r28->user_data = (void *)arg0; while (var_r28->user_data) { HuPrcVSleep(); } @@ -2524,10 +2451,10 @@ void fn_1_9BC0(s32 arg0) { temp_r31->unk4C = -280.0f; temp_r31->unk50 = 200.0f; temp_r31->unk58 = -90.0f; - Hu3DModelAttrReset(temp_r31->unk08, 1); + Hu3DModelAttrReset(temp_r31->unk08, HU3D_ATTR_DISPOFF); Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); CharModelMotionSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2]); - Hu3DModelAttrSet(temp_r31->unk08, 0x40000001); + Hu3DModelAttrSet(temp_r31->unk08, HU3D_MOTATTR_LOOP); Hu3DModelCameraSet(temp_r31->unk08, 1 << temp_r31->unk38); i = 0; while (TRUE) { @@ -2545,7 +2472,7 @@ void fn_1_9BC0(s32 arg0) { i++; } Hu3DModelPosSet(temp_r31->unk08, 0.0f, temp_r31->unk4C, temp_r31->unk50); - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(10); for (i = 0; i < 9; i++) { temp_r31->unk58 -= 10.0f; @@ -2553,10 +2480,11 @@ void fn_1_9BC0(s32 arg0) { HuPrcVSleep(); } HuPrcSleep(20); - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[3], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); if (lbl_1_bss_E40 == 1) { var_f31 = -20.0f; - } else { + } + else { var_f31 = -20.0f; } for (; var_f31 < 0.0f; var_f31 += 1.765f) { @@ -2567,7 +2495,8 @@ void fn_1_9BC0(s32 arg0) { Hu3DModelShadowSet(temp_r31->unk08); } -void fn_1_A004(void) { +void fn_1_A004(void) +{ s32 i; for (i = 0; i < 67; i++) { @@ -2581,8 +2510,9 @@ void fn_1_A004(void) { } } -void fn_1_A07C(void) { - UnkBss474Struct* temp_r31; +void fn_1_A07C(void) +{ + UnkBss474Struct *temp_r31; temp_r31 = &lbl_1_bss_474[lbl_1_bss_E94]; while (TRUE) { @@ -2596,10 +2526,11 @@ void fn_1_A07C(void) { } } -void fn_1_A120(s32 arg0) { +void fn_1_A120(s32 arg0) +{ float temp_f30; float var_f31; - UnkBss474Struct* temp_r31; + UnkBss474Struct *temp_r31; s32 var_r29; s32 i; @@ -2607,7 +2538,7 @@ void fn_1_A120(s32 arg0) { temp_r31->unk48 = 0.0f; temp_r31->unk4C = 930.0f; temp_r31->unk50 = 2790.0f; - Hu3DModelAttrReset(temp_r31->unk20, 1); + Hu3DModelAttrReset(temp_r31->unk20, HU3D_ATTR_DISPOFF); Hu3DModelCameraSet(temp_r31->unk08, 1); HuPrcChildCreate(fn_1_A004, 0x2000, 0x1000, 0, HuPrcCurrentGet()); temp_f30 = (-730.0f - temp_r31->unk50) / 80.0f; @@ -2617,8 +2548,8 @@ void fn_1_A120(s32 arg0) { temp_r31->unk4C -= var_f31; if (temp_r31->unk4C < 0.0f) { var_r29 = 1; - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[4], 0.0f, 5.0f, 0); - Hu3DMotionShiftSet(temp_r31->unk20, temp_r31->unk22[4], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r31->unk20, temp_r31->unk22[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); temp_r31->unk4C = 0.0f; break; } @@ -2638,19 +2569,20 @@ void fn_1_A120(s32 arg0) { while (!Hu3DMotionEndCheck(temp_r31->unk08)) { HuPrcVSleep(); } - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(30); HuAudSStreamPlay(1); HuAudPlayerVoicePlay(temp_r31->unk34, 0x124); - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[7], 0.0f, 5.0f, 0); - Hu3DMotionShiftSet(temp_r31->unk20, temp_r31->unk22[7], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[7], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r31->unk20, temp_r31->unk22[7], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcChildCreate(fn_1_A07C, 0x2000, 0x1000, 0, HuPrcCurrentGet()); } -void fn_1_A4B4(s32 arg0) { +void fn_1_A4B4(s32 arg0) +{ float temp_f30; float var_f31; - UnkBss474Struct* temp_r31; + UnkBss474Struct *temp_r31; s32 var_r29; s32 i; @@ -2666,7 +2598,7 @@ void fn_1_A4B4(s32 arg0) { temp_r31->unk4C -= var_f31; if (temp_r31->unk4C < 0.0f) { var_r29 = 1; - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2], 0.0f, 20.0f, 0x40000001); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2], 0.0f, 20.0f, HU3D_MOTATTR_LOOP); temp_r31->unk4C = 0.0f; } } @@ -2678,22 +2610,23 @@ void fn_1_A4B4(s32 arg0) { Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); HuPrcVSleep(); } - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); for (i = 0; i < 30; i++) { temp_r31->unk58 += 6.0f; Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); HuPrcVSleep(); } HuAudSStreamPlay(1); - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[8], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[8], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } -void fn_1_A788(s32 arg0) { +void fn_1_A788(s32 arg0) +{ float temp_f30; float temp_f29; float var_f31; - UnkBss474Struct* temp_r31; - UnkBss138InnerStruct00* var_r29; + UnkBss474Struct *temp_r31; + UnkBss138InnerStruct00 *var_r29; s32 var_r28; s32 i; @@ -2711,7 +2644,7 @@ void fn_1_A788(s32 arg0) { temp_r31->unk4C -= var_f31; if (temp_r31->unk4C < 0.0f) { var_r28 = 1; - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2], 0.0f, 5.0f, 0x40000001U); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); temp_r31->unk4C = 0.0f; } } @@ -2724,14 +2657,14 @@ void fn_1_A788(s32 arg0) { Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); HuPrcVSleep(); } - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(30); temp_f30 = (100.0f - temp_r31->unk48) / 30.0f; temp_f29 = -temp_r31->unk50 / 30.0f; var_f31 = 20.0f; - Hu3DMotionShiftSet(var_r29->unk00, var_r29->unk02[3], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(var_r29->unk00, var_r29->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(10); - CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[6], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); for (i = 0; i < 30; i++) { temp_r31->unk4C += var_f31; var_f31 -= 1.2f; @@ -2760,7 +2693,8 @@ void fn_1_A788(s32 arg0) { HuAudSStreamPlay(1); } -void fn_1_ACB0(void) { +void fn_1_ACB0(void) +{ s32 i; while (TRUE) { @@ -2782,7 +2716,8 @@ void fn_1_ACB0(void) { } } -void fn_1_AD58(void) { +void fn_1_AD58(void) +{ s16 temp_r28; s16 var_r27; s16 temp_r25; @@ -2839,7 +2774,8 @@ void fn_1_AD58(void) { } } break; - } else if (var_r27 < 59) { + } + else if (var_r27 < 59) { var_r30 = -1; break; } @@ -2876,7 +2812,8 @@ void fn_1_AD58(void) { GWPlayer[var_r30].coin_win = 10; } temp_r28 = MGSeqCreate(5, 3, GWPlayerCfg[var_r30].character, -1, -1, -1); - } else { + } + else { HuAudSStreamPlay(4); temp_r28 = MGSeqCreate(3, 2); } diff --git a/src/REL/m412Dll/main.c b/src/REL/m412Dll/main.c new file mode 100644 index 00000000..8f153855 --- /dev/null +++ b/src/REL/m412Dll/main.c @@ -0,0 +1,2187 @@ +#include "REL/m412Dll.h" + +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/hsfmotion.h" +#include "game/mapspace.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" + +// bss +s16 lbl_1_bss_7A0; +s16 lbl_1_bss_79E; +s16 lbl_1_bss_79C; +s16 lbl_1_bss_798[2]; +s32 lbl_1_bss_794; +s32 lbl_1_bss_790; +s32 lbl_1_bss_780[4]; +f32 lbl_1_bss_77C; +f32 lbl_1_bss_778; +f32 lbl_1_bss_774; +unkStruct3 lbl_1_bss_4D4[4]; +unkStruct2 lbl_1_bss_33C[6]; +unkStruct2 lbl_1_bss_2F8; +unkStruct *lbl_1_bss_278[0x20]; +Process *lbl_1_bss_274; +Vec lbl_1_bss_268; +Vec lbl_1_bss_25C; +Vec lbl_1_bss_250; +Vec lbl_1_bss_13C[0x17]; +Vec lbl_1_bss_28[0x17]; +s32 lbl_1_bss_24; +Vec lbl_1_bss_18; +Vec lbl_1_bss_C; +Vec lbl_1_bss_0; + +// data +s32 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +s32 lbl_1_data_20[8] = { DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x01), DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0x01), DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0x01), + DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0x01), DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0x01), DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0x01), + DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0x01), DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0x01) }; +s32 lbl_1_data_40[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00) }; +s32 lbl_1_data_60[6] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1B), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x4B) }; +Vec lbl_1_data_78[7] = { { 474.0f, 30.0f, -497.0f }, { 330.0f, 30.0f, 562.0f }, { -694.0f, 30.0f, 43.0f }, { -375.0f, 30.0f, -483.0f }, + { 715.0f, 30.0f, 62.0f }, { -334.0f, 30.0f, 570.0f }, { 100.0f, 30.0f, -630.0f } }; +char *lbl_1_data_298[0x17] = { "sb_hahen-sb_hahen01", "sb_hahen-sb_hahen02", "sb_hahen-sb_hahen03", "sb_hahen-sb_hahen04", "sb_hahen-sb_hahen05", + "sb_hahen-sb_hahen06", "sb_hahen-sb_hahen07", "sb_hahen-sb_hahen08", "sb_hahen-sb_hahen09", "sb_hahen-sb_hahen10", "sb_hahen-sb_hahen11", + "sb_hahen-sb_hahen12", "sb_hahen-sb_hahen13", "sb_hahen-sb_hahen14", "sb_hahen-sb_hahen15", "sb_hahen-sb_hahen16", "sb_hahen-sb_hahen17", + "sb_hahen-sb_hahen18", "sb_hahen-sb_hahen19", "sb_hahen-sb_hahen20", "sb_hahen-sb_hahen21", "sb_hahen-sb_hahen22", "sb_hahen-sb_hahen23" }; + +void ObjectSetup(void) +{ + f32 temp_f30; + f32 temp_f29; + f32 temp_f31; + + lbl_1_bss_274 = omInitObjMan(0x32, 0x2000); + omGameSysInit(lbl_1_bss_274); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 40.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0U, 0U, 0x280U, 0x1E0U); + lbl_1_bss_268.x = 1100.0f; + lbl_1_bss_268.y = 1600.0f; + lbl_1_bss_268.z = 760.0f; + lbl_1_bss_250.x = 0.0f; + lbl_1_bss_250.y = 1.0f; + lbl_1_bss_250.z = 0.0f; + lbl_1_bss_25C.x = 60.0f; + lbl_1_bss_25C.y = 0.0f; + lbl_1_bss_25C.z = 0.0f; + temp_f30 = lbl_1_bss_268.x; + temp_f29 = lbl_1_bss_268.y; + temp_f31 = lbl_1_bss_268.z; + lbl_1_bss_774 = sqrtf((temp_f31 * temp_f31) + ((temp_f30 * temp_f30) + (temp_f29 * temp_f29))); + lbl_1_bss_778 = fn_1_1D08(atan2d(temp_f30, temp_f31)); + lbl_1_bss_77C = fn_1_1D08(atan2d(temp_f29, temp_f31)); + lbl_1_bss_77C = 50.0f; + Hu3DLighInit(); + lbl_1_bss_7A0 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFFU, 0xFFU, 0xFFU); + Hu3DGLightPosAimSet(lbl_1_bss_7A0, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_7A0); + lbl_1_bss_18.x = -500.0f; + lbl_1_bss_18.y = 4000.0f; + lbl_1_bss_18.z = 0.0f; + lbl_1_bss_C.x = lbl_1_bss_C.z = 0.0f; + lbl_1_bss_C.y = 1.0f; + lbl_1_bss_0.x = 0.0f; + lbl_1_bss_0.y = 0.0f; + lbl_1_bss_0.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_bss_18, &lbl_1_bss_C, &lbl_1_bss_0); + Hu3DBGColorSet(0U, 0U, 0U); + fn_1_8BC(); + HuPrcChildCreate(fn_1_B1C0, 0x1000U, 0x2000U, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void *fn_1_6EC(f32 arg8, f32 arg9, f32 argA, s32 arg0) +{ + Vec sp8; + + sp8.x = arg8; + sp8.y = arg9; + sp8.z = argA; + return (void *)HuAudFXEmiterPlay(arg0, &sp8); +} + +void fn_1_73C(void) +{ + Vec sp8; + CameraData *camera; + + camera = &Hu3DCamera[0]; + + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = -1.0f; + + while (1) { + HuAudFXListnerUpdate(&camera->pos, &sp8); + if (lbl_1_bss_794 >= 3) + break; + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_7BC(void) +{ + Vec sp14; + Vec sp8; + s32 temp_r30; + s32 var_r31; + + temp_r30 = (s32)HuPrcCurrentGet()->user_data; + sp14.x = 1465.0f; + sp14.y = 770.0f; + sp14.z = -2400.0f; + sp8.x = sp14.x - 474.0f; + sp8.y = sp14.y - 30.0f; + sp8.z = sp14.z - -497.0f; + + for (var_r31 = 0; var_r31 < 0x168; var_r31++) { + HuAudFXEmiterUpDate(temp_r30, &sp14); + VECAdd(&sp8, &sp14, &sp14); + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_894(omObjData *object) +{ + return; +} + +void fn_1_898(omObjData *object) +{ + object->model[0] = lbl_1_bss_79C; + object->func = &fn_1_894; +} + +void fn_1_8BC(void) +{ + Vec sp20; + Vec sp14; + s32 sp10; + volatile u32 spC; + volatile u32 sp8; + unkStruct2 *temp_r31; + unkStruct3 *temp_r30; + s16 var_r29; + void *var_r27; + s32 var_r28; + s32 var_r26; + unkStruct2 *temp_r25; + HsfTransform *temp_r24; + Process *var_r23; + s32 temp_r22; + AnimData *var_r21; + s16 var_r20; + s16 var_r19; + s32 var_r18; + HsfObject *var_r17; + + nMap = 0; + HuAudSndGrpSet(0x25); + sp20.x = 1100.0f; + sp20.y = 1600.0f; + sp20.z = 760.0f; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = -1.0f; + HuAudFXListnerSetEX(&sp20, &sp14, 10000.0f, 0.5666667f, 0.0f, 300.0f, 300.0f); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x00), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelShadowMapSet(var_r29); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x01), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_79C = Hu3DModelCreate(var_r27); + Hu3DModelAttrSet(lbl_1_bss_79C, HU3D_ATTR_DISPOFF); + MapObject[nMap++] = omAddObjEx(lbl_1_bss_274, 0x100, 1, 0, -1, fn_1_898); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x02), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 0); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP); + + for (var_r28 = 0; var_r28 < 0x20; var_r28++) { + lbl_1_bss_278[var_r28] = NULL; + } + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1F), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_79E = var_r29 = Hu3DModelCameraCreate(Hu3DMotionCreate(var_r27), 1); + Hu3DCameraMotionStart(var_r29, 1); + + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1D), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_798[var_r28] = var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 2); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + } + + for (var_r28 = 0; var_r28 < 6; var_r28++) { + temp_r31 = &lbl_1_bss_33C[var_r28]; + temp_r31->unk24 = var_r28; + temp_r31->unk28 = var_r28; + temp_r31->unk20 = 0; + if (var_r28 == 0) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x06), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r20 = var_r29 = Hu3DModelCreate(var_r27); + } + else { + var_r29 = Hu3DModelLink(var_r20); + } + temp_r31->unk0 = var_r29; + temp_r31->unk2C.x = lbl_1_data_78[var_r28].x; + temp_r31->unk2C.y = lbl_1_data_78[var_r28].y; + temp_r31->unk2C.z = lbl_1_data_78[var_r28].z; + Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + temp_r31->unk38.x = temp_r31->unk38.z = 0.0f; + temp_r31->unk38.y = fn_1_1D08(180.0 + atan2d(temp_r31->unk2C.x, temp_r31->unk2C.z)); + Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelShadowSet(var_r29); + + for (var_r26 = 0; var_r26 < 3; var_r26++) { + var_r27 = HuDataSelHeapReadNum(var_r26 + DATA_MAKE_NUM(DATADIR_M412, 0x07), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unkC[var_r26] = Hu3DJointMotion(var_r29, var_r27); + } + var_r27 = HuDataSelHeapReadNum(var_r28 + DATA_MAKE_NUM(DATADIR_M412, 0x0A), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unkC[var_r26] = Hu3DJointMotion(var_r29, var_r27); + Hu3DMotionSet(var_r29, temp_r31->unkC[3]); + temp_r31->unk2 = var_r29 = Hu3DModelLink(var_r20); + Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y - 10.0f, temp_r31->unk2C.z); + Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + Hu3DModelScaleSet(var_r29, 1.0f, -1.0f, 1.0f); + Hu3DModelLayerSet(var_r29, 0); + Hu3DModelShadowReset(var_r29); + Hu3DMotionSet(var_r29, temp_r31->unkC[3]); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_CULL_FRONT); + var_r27 = HuDataSelHeapReadNum(var_r28 + DATA_MAKE_NUM(DATADIR_M412, 0x10), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk4 = var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 1); + if (var_r28 >= 3) { + Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(temp_r31->unk4, HU3D_MOTATTR_PAUSE); + } + if (var_r28 == 0) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x03), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r19 = var_r29 = Hu3DModelCreate(var_r27); + } + else { + var_r29 = Hu3DModelLink(var_r19); + } + temp_r31->unk6 = var_r29; + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(var_r29); + Hu3DModelShadowDispOff(var_r29); + temp_r31->unk8 = Hu3DModelLink(var_r19); + Hu3DModelLayerSet(var_r29, 0); + Hu3DModelAttrSet(temp_r31->unk8, HU3D_ATTR_DISPOFF); + var_r23 = HuPrcChildCreate(fn_1_2A1C, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r23->user_data = temp_r31; + } + + for (var_r28 = 0, var_r18 = 0; var_r28 < 50; var_r28++) { + temp_r31 = &lbl_1_bss_33C[frandmod(3) + var_r18]; + temp_r25 = &lbl_1_bss_33C[frandmod(3) + var_r18]; + temp_r22 = temp_r31->unk28; + temp_r31->unk28 = temp_r25->unk28; + temp_r25->unk28 = temp_r22; + } + temp_r31 = &lbl_1_bss_33C[3]; + temp_r25 = &lbl_1_bss_33C[5]; + temp_r22 = temp_r31->unk28; + temp_r31->unk28 = temp_r25->unk28; + temp_r25->unk28 = temp_r22; + if (frandmod(2) != 0) { + temp_r31 = &lbl_1_bss_33C[4]; + temp_r25 = &lbl_1_bss_33C[5]; + temp_r22 = temp_r31->unk28; + temp_r31->unk28 = temp_r25->unk28; + temp_r25->unk28 = temp_r22; + } + temp_r31 = &lbl_1_bss_2F8; + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x16), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r20 = var_r29 = Hu3DModelCreate(var_r27); + temp_r31->unk0 = var_r29; + temp_r31->unk2C.x = lbl_1_data_78[6].x; + temp_r31->unk2C.y = lbl_1_data_78[6].y; + temp_r31->unk2C.z = lbl_1_data_78[6].z; + Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + temp_r31->unk38.x = temp_r31->unk38.z = 0.0f; + temp_r31->unk38.y = fn_1_1D08(180.0 + atan2d(temp_r31->unk2C.x, temp_r31->unk2C.z)); + Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelShadowSet(var_r29); + + for (var_r26 = 0; var_r26 < 5; var_r26++) { + var_r27 = HuDataSelHeapReadNum(var_r26 + DATA_MAKE_NUM(DATADIR_M412, 0x17), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unkC[var_r26] = Hu3DJointMotion(var_r29, var_r27); + } + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x16), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk2 = var_r29 = Hu3DModelCreate(var_r27); + + for (var_r26 = 0; var_r26 < 5; var_r26++) { + var_r27 = HuDataSelHeapReadNum(var_r26 + DATA_MAKE_NUM(DATADIR_M412, 0x17), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk16[var_r26] = Hu3DJointMotion(var_r29, var_r27); + } + Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y - 10.0f, temp_r31->unk2C.z); + Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + Hu3DModelScaleSet(var_r29, 1.0f, -1.0f, 1.0f); + Hu3DModelLayerSet(var_r29, 0); + Hu3DModelShadowReset(var_r29); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_CULL_FRONT); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x04), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk6 = var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(var_r29); + Hu3DModelShadowDispOff(var_r29); + temp_r31->unk8 = Hu3DModelLink(temp_r31->unk6); + Hu3DModelLayerSet(temp_r31->unk8, 0); + Hu3DModelAttrSet(temp_r31->unk8, HU3D_ATTR_DISPOFF); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x05), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unkA = var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelShadowSet(var_r29); + Hu3DModelShadowDispOff(var_r29); + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + + for (var_r28 = 0; var_r28 < 0x17; var_r28++) { + var_r17 = Hu3DModelObjPtrGet(var_r29, lbl_1_data_298[var_r28]); + if (!var_r17) { + OSReport("objname %s\n", lbl_1_data_298[var_r28]); + OSPanic("m412.c", 0x258, "ObjPtr"); + } + temp_r24 = &var_r17->data.base; + lbl_1_bss_13C[var_r28].x = temp_r24->pos.x; + lbl_1_bss_13C[var_r28].y = temp_r24->pos.y; + lbl_1_bss_13C[var_r28].z = temp_r24->pos.z; + lbl_1_bss_28[var_r28].x = temp_r24->scale.x; + lbl_1_bss_28[var_r28].y = temp_r24->scale.y; + lbl_1_bss_28[var_r28].z = temp_r24->scale.z; + } + var_r23 = HuPrcChildCreate(fn_1_3950, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r23->user_data = temp_r31; + + for (var_r28 = 0; var_r28 < 4; var_r28++) { + lbl_1_bss_4D4[var_r28].unk3C = var_r28; + } + + for (var_r28 = 0; var_r28 < 50; var_r28++) { + spC = frandmod(4); + sp8 = frandmod(4); + sp10 = lbl_1_bss_4D4[sp8].unk3C; + lbl_1_bss_4D4[sp8].unk3C = lbl_1_bss_4D4[spC].unk3C; + lbl_1_bss_4D4[spC].unk3C = sp10; + } + + for (var_r28 = 0; var_r28 < 4; var_r28++) { + temp_r30 = &lbl_1_bss_4D4[var_r28]; + temp_r30->unk24 = var_r28; + temp_r30->unk28 = var_r28; + temp_r30->unk2C = GWPlayerCfg[var_r28].pad_idx; + temp_r30->unk0 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[var_r28].character], 4); + Hu3DModelLayerSet(temp_r30->unk0, 1); + var_r27 = HuDataSelHeapReadNum(lbl_1_data_20[GWPlayerCfg[var_r28].character], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r30->unk2 = Hu3DModelCreate(var_r27); + Hu3DModelScaleSet(temp_r30->unk2, 1.0f, -1.0f, 1.0f); + Hu3DModelAttrSet(temp_r30->unk2, HU3D_ATTR_CULL_FRONT); + Hu3DModelLayerSet(temp_r30->unk2, 0); + CharModelLayerSetAll(3); + temp_r30->unk54.x = temp_r30->unk54.z = temp_r30->unk54.y = 0.0f; + temp_r30->unk54.y = fn_1_1D08(45.0f + (90.0f * temp_r30->unk3C) + lbl_1_bss_778); + temp_r30->unk40.x = (400.0 * sind(temp_r30->unk54.y)); + temp_r30->unk40.z = (400.0 * cosd(temp_r30->unk54.y)); + temp_r30->unk54.y = fn_1_1D08(180.0f + temp_r30->unk54.y); + temp_r30->unk6C = temp_r30->unk54.y; + temp_r30->unk40.y = 0.0f; + temp_r30->unk60.x = 50.0f; + temp_r30->unk60.z = temp_r30->unk60.y = 0.0f; + HuSetVecF(&temp_r30->unk7C, 0.0, 0.0, 0.0); + Hu3DModelPosSet(temp_r30->unk0, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z); + Hu3DModelRotSet(temp_r30->unk0, temp_r30->unk54.x, temp_r30->unk54.y, temp_r30->unk54.z); + Hu3DModelPosSet(temp_r30->unk2, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z); + Hu3DModelRotSet(temp_r30->unk2, temp_r30->unk54.x, temp_r30->unk54.y, temp_r30->unk54.z); + Hu3DModelShadowSet(temp_r30->unk0); + + for (var_r26 = 0; var_r26 < 6; var_r26++) { + temp_r30->unkC[var_r26] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[var_r28].character], lbl_1_data_60[var_r26]); + var_r27 + = HuDataSelHeapReadNum((u16)lbl_1_data_60[var_r26] | lbl_1_data_40[GWPlayerCfg[var_r28].character], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r30->unk18[var_r26] = Hu3DJointMotion(temp_r30->unk2, var_r27); + } + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[var_r28].character], temp_r30->unkC[0]); + Hu3DModelAttrSet(temp_r30->unk0, HU3D_MOTATTR_LOOP); + Hu3DMotionSet(temp_r30->unk2, temp_r30->unk18[0]); + Hu3DModelAttrSet(temp_r30->unk2, HU3D_MOTATTR_LOOP); + CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[var_r28].character]); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1C), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r30->unk6 = var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 1); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(var_r29); + Hu3DModelShadowDispOff(var_r29); + temp_r30->unk8 = var_r29 = Hu3DModelLink(var_r29); + Hu3DModelLayerSet(var_r29, 0); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF | HU3D_ATTR_CULL_FRONT); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1D), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r30->unkA = var_r29 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(var_r29, 3); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + var_r23 = HuPrcChildCreate(fn_1_7C60, 0x2000, 0x4000, 0, HuPrcCurrentGet()); + var_r23->user_data = temp_r30; + } + var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1E), MEMORY_DEFAULT_NUM)); + var_r29 = Hu3DParticleCreate(var_r21, 0x100); + Hu3DModelPosSet(var_r29, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r29, 4); + Hu3DParticleColSet(var_r29, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r29, 0.0f); + Hu3DParticleHookSet(var_r29, fn_1_A01C); + var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), MEMORY_DEFAULT_NUM)); + var_r29 = Hu3DParticleCreate(var_r21, 0x40); + Hu3DModelPosSet(var_r29, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r29, 4); + Hu3DParticleColSet(var_r29, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r29, 0.0f); + Hu3DParticleHookSet(var_r29, fn_1_A618); + var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), MEMORY_DEFAULT_NUM)); + var_r29 = Hu3DParticleCreate(var_r21, 3); + Hu3DModelPosSet(var_r29, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r29, 4); + Hu3DParticleColSet(var_r29, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r29, 0.0f); + Hu3DParticleHookSet(var_r29, fn_1_AA88); + HuDataDirClose(DATADIR_EFFECT); + HuPrcChildCreate(fn_1_B160, 0x1000, 0x1000, 0, HuPrcCurrentGet()); +} + +f32 fn_1_1D08(f32 arg0) +{ + while (arg0 >= 360.0f || arg0 < 0.0f) { + if (arg0 >= 360.0f) { + arg0 -= 360.0f; + } + if (arg0 < 0.0f) { + arg0 += 360.0f; + } + } + return arg0; +} + +void fn_1_1D88(void) +{ + void *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + HuMemDirectFree(var_r31); +} + +void fn_1_1DBC(void) +{ + Vec sp8; + HsfObject *var_r27; + HsfTransform *temp_r31; + unkStruct4 *temp_r30; + Vec *temp_r29; + s32 var_r28; + f32 var_f31; + f32 var_f30; + + temp_r30 = HuPrcCurrentGet()->user_data; + HuPrcDestructorSet(fn_1_1D88); + var_r27 = Hu3DModelObjPtrGet(temp_r30->unk0, lbl_1_data_298[temp_r30->unk4]); + if (!var_r27) { + OSReport("objname %s\n", lbl_1_data_298[temp_r30->unk4]); + OSPanic("m412.c", 0x32E, "ObjPtr"); + } + temp_r31 = &var_r27->data.base; + temp_r29 = &lbl_1_bss_13C[temp_r30->unk4]; + temp_r31->pos.x = temp_r29->x; + temp_r31->pos.y = temp_r29->y; + temp_r31->pos.z = temp_r29->z; + HuSetVecF(&sp8, 0.15f * temp_r31->pos.x, 0.15f * temp_r31->pos.y, 0.15f * temp_r31->pos.z); + temp_r29 = &lbl_1_bss_28[temp_r30->unk4]; + temp_r31->scale.x = temp_r29->x; + temp_r31->scale.y = temp_r29->y; + temp_r31->scale.z = temp_r29->z; + for (var_r28 = 0, var_f31 = -2.0f, var_f30 = 1.0f; var_r28 < 0x1E; var_r28++) { + sp8.y -= var_f31; + var_f31 += 0.5f; + temp_r31->pos.x += sp8.x; + temp_r31->pos.y += sp8.y; + temp_r31->pos.z += sp8.z; + temp_r31->scale.x *= 0.95f; + temp_r31->scale.y *= 0.95f; + temp_r31->scale.z *= 0.95f; + if (temp_r30->unk4 == 0) { + var_f30 -= 0.033333335f; + Hu3DModelTPLvlSet(temp_r30->unk0, var_f30); + } + HuPrcVSleep(); + } + temp_r30->unk8 = 0; + HuPrcVSleep(); + HuPrcKill(HuPrcCurrentGet()); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_2014(void) +{ + unkStruct2 *temp_r31; // could also be unkStruct3 `\_("/)_/` + + temp_r31 = (unkStruct2 *)HuPrcCurrentGet()->user_data; + lbl_1_bss_278[temp_r31->unk6] = NULL; + HuMemDirectFree(temp_r31); +} + +void fn_1_2064(void) +{ + Vec sp28; + Vec sp1C; + Vec sp10; + f32 spC; + f32 sp8; + Process *temp_r26; + s32 var_r30; + unkStruct *temp_r28; + unkStruct3 *temp_r29; + unkStruct *temp_r31; + unkStruct4 *var_r27; + + temp_r31 = (unkStruct *)HuPrcCurrentGet()->user_data; + temp_r31->unk8 = 0; + temp_r31->unkA = 0; + HuPrcDestructorSet(fn_1_2014); + + do { + if ((temp_r31->unk8 != 0) || (lbl_1_bss_794 >= 4)) + break; + temp_r31->unk10.x += (temp_r31->unk24.y * sind(temp_r31->unk24.x)); + temp_r31->unk10.z += (temp_r31->unk24.y * cosd(temp_r31->unk24.x)); + temp_r31->unk10.y += temp_r31->unk24.z; + temp_r31->unk24.z -= 0.9f; + if (temp_r31->unk30 != 100.0f) { + HuSetVecF(&sp28, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + for (var_r30 = 0; var_r30 < 0x20; var_r30++) { + temp_r28 = lbl_1_bss_278[var_r30]; + if ((var_r30 != temp_r31->unk6) && temp_r28 && (temp_r28->unk6 != -1)) { + HuSetVecF(&sp1C, temp_r28->unk10.x, temp_r28->unk10.y, temp_r28->unk10.z); + HuSubVecF(&sp10, &sp28, &sp1C); + if (sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y))) < (temp_r31->unk30 + temp_r28->unk30)) { + if (temp_r28->unk30 != 100.0f) { + temp_r28->unk8 = 1; + } + temp_r31->unk8 = 1; + } + } + } + } + HuSetVecF(&sp28, temp_r31->unk10.x, 0.0, temp_r31->unk10.z); + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + temp_r29 = &lbl_1_bss_4D4[var_r30]; + HuSetVecF(&sp1C, temp_r29->unk40.x, 0.0, temp_r29->unk40.z); + HuSubVecF(&sp10, &sp28, &sp1C); + if ((sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y))) < (temp_r31->unk30 + temp_r29->unk60.x)) + && ((150.0f + temp_r29->unk40.y + temp_r31->unk30) > temp_r31->unk10.y)) { + + if (temp_r29->unk30 != 3) { + if (temp_r31->unkC == 0) { + omVibrate(temp_r29->unk24, 0xC, 4, 2); + } + else { + omVibrate(temp_r29->unk24, 0xC, 0xC, 0); + } + } + HuAudFXPlay(0x585); + temp_r29->unk30 = 3; + temp_r31->unk8 = 1; + } + } + if (temp_r31->unk10.y < temp_r31->unk30) { + temp_r31->unk10.y = temp_r31->unk30; + temp_r31->unk8 = 1; + } + Hu3DModelPosSet(temp_r31->unk0, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelPosSet(temp_r31->unk2, temp_r31->unk10.x, -temp_r31->unk10.y, temp_r31->unk10.z); + if (temp_r31->unk8 != 0) + break; + HuPrcVSleep(); + } while (1); + if (temp_r31->unkC == 1) { + HuAudFXPlay(0x58D); + } + else { + HuAudFXPlay(0x58C); + } + Hu3DModelAttrSet(temp_r31->unk0, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelShadowDispOff(temp_r31->unk0); + temp_r31->unkA = 1; + if (temp_r31->unkC == 1) { + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (lbl_1_bss_4D4[var_r30].unk30 != 3) { + omVibrate(lbl_1_bss_4D4[var_r30].unk24, 0xC, 6, 6); + } + } + Hu3DModelPosSet(temp_r31->unk4, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelAttrReset(temp_r31->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelShadowDispOn(temp_r31->unk4); + + for (var_r30 = 0; var_r30 < 0x17; var_r30++) { + temp_r26 = HuPrcChildCreate(fn_1_1DBC, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + var_r27 = HuMemDirectMalloc(HEAP_DATA, sizeof(unkStruct4)); + temp_r26->user_data = var_r27; + var_r27->unk0 = temp_r31->unk4; + var_r27->unk4 = var_r30; + var_r27->unk8 = 1; + var_r27->unkC.x = temp_r31->unk10.x; + var_r27->unkC.y = temp_r31->unk10.y; + var_r27->unkC.z = temp_r31->unk10.z; + } + while (var_r27->unk8 != 0) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + HuPrcKill(HuPrcCurrentGet()); + while (1) { + HuPrcVSleep(); + } +} + +s32 fn_1_2708(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + if (!lbl_1_bss_278[var_r31]) + break; + } + if (var_r31 >= 0x20) { + var_r31 = -1; + } + lbl_1_bss_278[var_r31] = HuMemDirectMalloc(HEAP_DATA, sizeof(unkStruct)); + lbl_1_bss_278[var_r31]->unk6 = -1; + lbl_1_bss_278[var_r31]->unkA = 0; + return var_r31; +} + +f32 fn_1_27C4(s32 arg0, f32 arg8, f32 arg9) +{ + f32 temp_f31; + f32 var_f25; + f32 var_f26; + f32 var_f27; + f32 var_f28; + f32 var_f29; + + temp_f31 = arg8 - fn_1_1D08(arg9); + if ((temp_f31 < 0.0f) || (ABS_INV(temp_f31) > 180.0f)) { + if (ABS_INV(temp_f31) > 180.0f) { + var_f29 = (360.0f - ABS_INV(temp_f31)) / arg0; + if (temp_f31 > 0.0f) { + var_f29 = -var_f29; + } + } + else { + var_f29 = temp_f31 / arg0; + } + } + else { + var_f29 = temp_f31 / arg0; + } + return var_f29; +} + +s32 lbl_1_data_310[6][2] = { { 0x09249222, 0x22210842 }, { 0x04924888, 0x88842108 }, { 0x12492222, 0x22108420 }, { 0x04444444, 0x44444400 }, + { 0x11111111, 0x11100000 }, { 0x04444444, 0x40000000 } }; + +s32 lbl_1_data_340[1][2] = { { 0x00040008, 0x02000000 } }; + +s32 lbl_1_data_348[6] = { 0x0, 0x0, 0x0, 0x8, 0x12, 0x1C }; + +void fn_1_2A1C(void) +{ + Vec sp68; + Vec sp5C; + Vec sp50; + Vec sp44; + f32 sp40; + f32 temp_f18; + f32 var_f24; + f32 var_f23; + f32 var_f19; + f32 var_f22; + s32 var_r22; + s32 var_r23; + s32 var_r25; + s32 var_r24; + s32 var_r26; + s32 var_r29; + unkStruct *temp_r30; + unkStruct3 *temp_r27; + unkStruct2 *temp_r31; + s32 var_r21; + Process *var_r20; + + temp_r31 = HuPrcCurrentGet()->user_data; + switch (temp_r31->unk24) { + case 0: + var_r25 = 0x142; + var_r24 = 0x154; + break; + case 1: + var_r25 = 0x14A; + var_r24 = 0x15E; + break; + case 2: + var_r25 = 0x148; + var_r24 = 0x162; + break; + default: + var_r25 = 0x4E; + var_r24 = 0x5D; + break; + } + +loop_10: + var_r29 = lbl_1_bss_790 / 60; + if (var_r29 >= 0x3C) { + var_r29 = 0x3C; + } + if (var_r29 == lbl_1_data_348[temp_r31->unk28]) { + Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(temp_r31->unk4, HU3D_MOTATTR_PAUSE); + } + if (var_r25 == Hu3DMotionTimeGet(temp_r31->unk0)) { + temp_r31->unk20 = 1; + } + if (var_r24 == Hu3DMotionTimeGet(temp_r31->unk0)) { + HuAudFXPlay(0x581); + } + if (lbl_1_bss_794 >= 4) { + while (1) { + HuPrcVSleep(); + } + } + var_r22 = 1; + if (var_r29 >= 0x20) { + var_r22 = 0; + } + if (((1 << (var_r29 % 32)) & lbl_1_data_310[temp_r31->unk28][var_r22]) != 0) { + var_r21 = fn_1_2708(); + } + else { + HuPrcVSleep(); + goto loop_10; + } + var_r26 = frandmod(4); + if (lbl_1_bss_4D4[var_r26].unk30 == 3) { + for (var_r23 = 3; var_r23 != 0; var_r23--) { + var_r26++; + if (var_r26 >= 4) { + var_r26 = 0; + } + if (lbl_1_bss_4D4[var_r26].unk30 != 3) + break; + } + } + temp_r27 = &lbl_1_bss_4D4[var_r26]; + Hu3DMotionSet(temp_r31->unk0, temp_r31->unkC[1]); + Hu3DMotionSet(temp_r31->unk2, temp_r31->unkC[1]); + Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_LOOP); + var_r29 = Hu3DMotionMaxTimeGet(temp_r31->unk0); + var_f24 = fn_1_1D08(atan2d(temp_r27->unk40.x - temp_r31->unk2C.x, temp_r27->unk40.z - temp_r31->unk2C.z)); + temp_f18 = (temp_r27->unk40.x + (50.0 * sind(var_f24))); + sp44.y = (temp_r27->unk40.z + (50.0 * cosd(var_f24))); + sp44.x = 360.0f * frandf(); + var_f23 = 50.0f * frandf(); + temp_f18 += (var_f23 * sind(sp44.x)); + sp44.y += (var_f23 * cosd(sp44.x)); + sp44.z = fn_1_27C4(var_r29, var_f24, temp_r31->unk38.y); + HuAudFXPlay(0x583); + + for (; var_r29 != 0; var_r29--) { + temp_r31->unk38.y += sp44.z; + Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + Hu3DModelAttrReset(temp_r31->unk6, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->unk8, HU3D_ATTR_DISPOFF); + Hu3DModelShadowDispOn(temp_r31->unk6); + Hu3DModelPosSet(temp_r31->unk6, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(temp_r31->unk8, 0.0f, 0.0f, 0.0f); + Hu3DModelHookSet(temp_r31->unk0, "itemhook", temp_r31->unk6); + Hu3DModelHookSet(temp_r31->unk2, "itemhook", temp_r31->unk8); + Hu3DMotionShiftSet(temp_r31->unk0, temp_r31->unkC[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unkC[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(10); + while (Hu3DMotionTimeGet(temp_r31->unk0) < 18.0f) { + HuPrcVSleep(); + } + Hu3DModelHookReset(temp_r31->unk0); + Hu3DModelHookReset(temp_r31->unk2); + HuAudFXPlay(0x582); + temp_r30 = lbl_1_bss_278[var_r21]; + temp_r30->unk6 = var_r21; + temp_r30->unkA = 0; + var_r20 = HuPrcChildCreate(fn_1_2064, 0x1000, 0x3000, 0, HuPrcCurrentGet()); + var_r20->user_data = temp_r30; + temp_r30->unkC = 0; + temp_r30->unk0 = temp_r31->unk6; + temp_r30->unk2 = temp_r31->unk8; + temp_r30->unk30 = 25.0f; + temp_r30->unk10.x = -89.937f; + temp_r30->unk10.y = 125.861f; + temp_r30->unk10.z = 43.181f; + temp_r30->unk1C.x = temp_f18; + temp_r30->unk1C.y = sp44.y; + var_f24 = fn_1_1D08(atan2d(temp_r30->unk10.x, temp_r30->unk10.z)); + var_f24 += temp_r31->unk38.y; + var_f23 = sqrtf((temp_r30->unk10.x * temp_r30->unk10.x) + (temp_r30->unk10.z * temp_r30->unk10.z)); + temp_r30->unk10.x = (temp_r31->unk2C.x + (var_f23 * sind(var_f24))); + temp_r30->unk10.y = 125.861f + temp_r31->unk2C.y; + temp_r30->unk10.z = (temp_r31->unk2C.z + (var_f23 * cosd(var_f24))); + Hu3DModelPosSet(temp_r31->unk6, temp_r30->unk10.x, temp_r30->unk10.y, temp_r30->unk10.z); + Hu3DModelPosSet(temp_r31->unk8, temp_r30->unk10.x, -temp_r30->unk10.y, temp_r30->unk10.z); + HuSetVecF(&sp68, temp_r31->unk2C.x, 0.0, temp_r31->unk2C.z); + HuSetVecF(&sp5C, temp_f18, 0.0, sp44.y); + HuSubVecF(&sp50, &sp68, &sp5C); + var_f23 = sqrtf((sp50.x * sp50.x) + (sp50.z * sp50.z)); + sp40 = 1.0f; + while (1) { + for (var_r29 = 0, var_f19 = temp_r30->unk10.y, var_f22 = sp40; var_f22 > 0.0f; var_r29++) { + var_f19 += var_f22; + var_f22 -= 0.9f; + } + if (var_f19 >= (var_f23 / 2.0f)) + break; + sp40++; + } + + for (; var_f19 > 0.0f; var_r29++) { + var_f19 += var_f22; + var_f22 -= 0.9f; + } + temp_r30->unk24.z = sp40; + temp_r30->unk24.x = fn_1_1D08(atan2d(temp_f18 - temp_r30->unk10.x, sp44.y - temp_r30->unk10.z)); + temp_r30->unk24.y = var_f23 / var_r29; + + while (Hu3DMotionEndCheck(temp_r31->unk0) == 0) { + HuPrcVSleep(); + } + goto loop_10; +} + +void fn_1_3950(void) +{ + Vec sp8C; + Vec sp80; + Vec sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + volatile f32 sp58; + f32 sp54; + f32 temp_f27; + f32 var_f29; + f32 temp_f31; + f32 temp_f30; + f32 var_f18; + f32 var_f19; + f32 var_f20; + f32 var_f21; + f32 var_f22; + f32 var_f23; + f32 var_f24; + s32 var_r28; + s32 var_r24; + s32 var_r25; + s32 var_r29; + s32 var_r26; + unkStruct *temp_r30; + unkStruct3 *temp_r27; + unkStruct2 *temp_r31; + s32 var_r23; + Process *var_r22; + + temp_r31 = HuPrcCurrentGet()->user_data; +loop_1: + var_r29 = lbl_1_bss_790 / 60; + if (var_r29 >= 0x3C) { + var_r29 = 0x3C; + } + if (lbl_1_bss_794 >= 4) { + while (1) { + HuPrcVSleep(); + } + } + var_r24 = 1; + if (var_r29 >= 0x20) { + var_r24 = 0; + } + if (((1 << (var_r29 % 32)) & lbl_1_data_340[temp_r31->unk28][var_r24]) != 0) { + var_r23 = fn_1_2708(); + } + else { + HuPrcVSleep(); + goto loop_1; + } + Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_PAUSE); + Hu3DModelClusterAttrReset(temp_r31->unk0, 0, -0x3FFFFFFE); + Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_PAUSE); + Hu3DModelClusterAttrReset(temp_r31->unk2, 0, -0x3FFFFFFE); + Hu3DModelAttrReset(temp_r31->unk6, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->unk8, HU3D_ATTR_DISPOFF); + Hu3DModelShadowDispOn(temp_r31->unk6); + var_f18 = 850.0f; + temp_f31 = -217.722f; + temp_f30 = 0.0f; + var_f29 = fn_1_1D08(atan2d(temp_f31, temp_f30)); + var_f29 += temp_r31->unk38.y; + var_f24 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + temp_f31 = (temp_r31->unk2C.x + (var_f24 * sind(var_f29))); + temp_f30 = (temp_r31->unk2C.z + (var_f24 * cosd(var_f29))); + sp64 = 5.0f; + while (1) { + var_f18 -= sp64; + sp64 += 0.9f; + if (sp64 > 20.0f) { + sp64 = 20.0f; + } + if (var_f18 < (304.52f + temp_r31->unk2C.y)) { + var_f18 = 304.52f + temp_r31->unk2C.y; + } + Hu3DModelPosSet(temp_r31->unk6, temp_f31, var_f18, temp_f30); + Hu3DModelPosSet(temp_r31->unk8, temp_f31, -var_f18, temp_f30); + if (var_f18 == (304.52f + temp_r31->unk2C.y)) + break; + HuPrcVSleep(); + } + Hu3DModelPosSet(temp_r31->unk6, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(temp_r31->unk8, 0.0f, 0.0f, 0.0f); + Hu3DModelHookSet(temp_r31->unk0, "itemhook", temp_r31->unk6); + Hu3DModelHookSet(temp_r31->unk2, "itemhook", temp_r31->unk8); + Hu3DMotionShiftSet(temp_r31->unk0, temp_r31->unkC[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk16[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(10); + + while (Hu3DMotionEndCheck(temp_r31->unk0) == 0) { + HuPrcVSleep(); + } + HuPrcSleep(0xA); + var_r26 = frandmod(4); + if (lbl_1_bss_4D4[var_r26].unk30 == 3) { + for (var_r25 = 3; var_r25 != 0; var_r25--) { + var_r26 += 1; + if (var_r26 >= 4) { + var_r26 = 0; + } + if (lbl_1_bss_4D4[var_r26].unk30 != 3) + break; + } + } + temp_r27 = &lbl_1_bss_4D4[var_r26]; + Hu3DMotionSet(temp_r31->unk0, temp_r31->unkC[3]); + Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_LOOP); + Hu3DMotionSet(temp_r31->unk2, temp_r31->unk16[3]); + Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_LOOP); + var_r29 = Hu3DMotionMaxTimeGet(temp_r31->unk0); + var_f29 = fn_1_1D08(atan2d(temp_r27->unk40.x - temp_r31->unk2C.x, temp_r27->unk40.z - temp_r31->unk2C.z)); + sp6C = (temp_r27->unk40.x + (50.0 * sind(var_f29))); + sp68 = (temp_r27->unk40.z + (50.0 * cosd(var_f29))); + sp60 = 360.0f * frandf(); + var_f24 = 50.0f * frandf(); + sp6C += (var_f24 * sind(sp60)); + sp68 += (var_f24 * cosd(sp60)); + sp70 = fn_1_27C4(var_r29, var_f29, temp_r31->unk38.y); + HuAudFXPlay(0x587); + + for (; var_r29 != 0; var_r29--) { + temp_r31->unk38.y += sp70; + Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + HuPrcVSleep(); + } + HuPrcSleep(30); + Hu3DMotionShiftSet(temp_r31->unk0, temp_r31->unkC[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk16[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(10); + + while (Hu3DMotionTimeGet(temp_r31->unk0) < 24.0f) { + HuPrcVSleep(); + } + Hu3DModelHookReset(temp_r31->unk0); + Hu3DModelHookReset(temp_r31->unk2); + HuAudFXPlay(0x586); + temp_r30 = lbl_1_bss_278[var_r23]; + temp_r30->unk6 = var_r23; + temp_r30->unkA = 0; + var_r22 = HuPrcChildCreate(fn_1_2064, 0x1000, 0x3000, 0, HuPrcCurrentGet()); + var_r22->user_data = temp_r30; + temp_r30->unkC = 1; + temp_r30->unk0 = temp_r31->unk6; + temp_r30->unk2 = temp_r31->unk8; + temp_r30->unk4 = temp_r31->unkA; + temp_r30->unk30 = 100.0f; + temp_r30->unk10.x = -217.722f; + temp_r30->unk10.y = 404.52f; + temp_r30->unk10.z = 0.0f; + var_f29 = fn_1_1D08(atan2d(temp_r30->unk10.x, temp_r30->unk10.z)); + var_f29 += temp_r31->unk38.y; + var_f24 = sqrtf((temp_r30->unk10.x * temp_r30->unk10.x) + (temp_r30->unk10.z * temp_r30->unk10.z)); + temp_r30->unk10.x = (temp_r31->unk2C.x + (var_f24 * sind(var_f29))); + temp_r30->unk10.y = (404.52f + temp_r31->unk2C.y) - 100.0f; + temp_r30->unk10.z = (temp_r31->unk2C.z + (var_f24 * cosd(var_f29))); + Hu3DModelPosSet(temp_r31->unk6, temp_r30->unk10.x, temp_r30->unk10.y, temp_r30->unk10.z); + Hu3DModelPosSet(temp_r31->unk8, temp_r30->unk10.x, -temp_r30->unk10.y, temp_r30->unk10.z); + HuSetVecF(&sp8C, temp_r31->unk2C.x, 0.0, temp_r31->unk2C.z); + HuSetVecF(&sp80, sp6C, 0.0, sp68); + HuSubVecF(&sp74, &sp8C, &sp80); + var_f24 = sqrtf((sp74.x * sp74.x) + (sp74.z * sp74.z)); + sp54 = 1.0f; + + while (1) { + for (var_r29 = 0, sp5C = temp_r30->unk10.y, sp58 = sp54; sp58 > 0.0f; var_r29++) { + sp5C += sp58; + sp58 -= 0.9f; + } + if (sp5C >= 600.0f) + break; + sp54++; + } + for (; sp5C > 0.0f; var_r29++) { + sp5C += sp58; + sp58 -= 0.9f; + } + temp_r30->unk24.z = sp54; + temp_r30->unk24.x = fn_1_1D08(atan2d((sp6C - temp_r30->unk10.x), (sp68 - temp_r30->unk10.z))); + temp_r30->unk24.y = var_f24 / var_r29; + while (Hu3DMotionEndCheck(temp_r31->unk0) == 0) { + HuPrcVSleep(); + } + goto loop_1; +} + +s8 fn_1_4BE4(s32 arg0, s32 arg1) +{ + s8 var_r30; + unkStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_4D4[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk2C]) : (var_r30 = HuPadStkX[temp_r31->unk2C]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk89) : (var_r30 = temp_r31->unk88); + } + return var_r30; +} + +void fn_1_4C9C(Vec *arg0, f32 arg8, f32 arg9) +{ + f32 temp_f29; + + temp_f29 = sqrtf((arg0->x * arg0->x) + (arg0->z * arg0->z)); + temp_f29 *= arg9; + arg0->x = (temp_f29 * sind(arg8)); + arg0->z = (temp_f29 * cosd(arg8)); +} + +s8 fn_1_4E58(s32 arg0, s32 arg1) +{ + Vec spC; + f32 temp_f28; + s8 var_r30; + s8 temp_r29; + s8 temp_r28; + unkStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_4D4[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + temp_r29 = HuPadStkX[temp_r31->unk2C]; + temp_r28 = HuPadStkY[temp_r31->unk2C]; + temp_f28 = fn_1_1D08(atan2d(temp_r29, temp_r28)); + temp_f28 -= lbl_1_bss_778; + HuSetVecF(&spC, (f32)temp_r29, 0.0, (f32)temp_r28); + fn_1_4C9C(&spC, temp_f28, 1.0f); + (arg1 != 0) ? (var_r30 = spC.z) : (var_r30 = spC.x); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk89) : (var_r30 = temp_r31->unk88); + } + return var_r30; +} + +u8 fn_1_525C(s32 arg0, s32 arg1) +{ + s8 var_r30; + unkStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_4D4[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk2C]) : (var_r30 = HuPadTrigL[temp_r31->unk2C]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk8A) : (var_r30 = temp_r31->unk8B); + } + return var_r30; +} + +u16 fn_1_531C(s32 arg0) +{ + u16 var_r30; + unkStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_4D4[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + var_r30 = HuPadBtnDown[temp_r31->unk2C]; + } + else { + var_r30 = temp_r31->unk8E; + } + return var_r30; +} + +u16 fn_1_5388(s32 arg0) +{ + u16 var_r30; + unkStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_4D4[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + var_r30 = HuPadBtn[temp_r31->unk2C]; + } + else { + var_r30 = temp_r31->unk8C; + } + return var_r30; +} + +s32 fn_1_53F4(unkStruct3 *arg0, f32 arg8, f32 arg9, f32 argA) +{ + Vec sp30; + Vec sp24; + Vec sp18; + unkStruct3 *temp_r31; + s32 var_r30; + s32 var_r28; + f32 var_f27; + f32 var_f28; + + var_r28 = -1; + + for (var_r30 = 0, var_f28 = 10000.0f; var_r30 < 4; var_r30++) { + if (var_r30 != arg0->unk24) { + temp_r31 = &lbl_1_bss_4D4[var_r30]; + HuSetVecF(&sp30, arg8, arg9, argA); + HuSetVecF(&sp24, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + HuSubVecF(&sp18, &sp30, &sp24); + if (((var_f27 = sqrtf((sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y)))) < (arg0->unk60.x + temp_r31->unk60.x)) + && (var_f27 < var_f28)) { + var_f28 = var_f27; + var_r28 = var_r30; + arg0->unkA4 = 0; + } + } + } + return var_r28; +} + +s32 fn_1_561C(unkStruct3 *arg0, s32 *arg1) +{ + Vec sp24; + Vec sp18; + Vec spC; + f32 var_f27; + f32 var_f28; + s32 var_r27; + s32 var_r28; + s32 var_r29; + unkStruct3 *temp_r30; + + var_r27 = -1; + var_r29 = 0; + var_f28 = 10000.0f; + var_r28 = 0; + + for (; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->unk24) { + temp_r30 = &lbl_1_bss_4D4[var_r29]; + HuSetVecF(&sp24, arg0->unk40.x, arg0->unk40.y, arg0->unk40.z); + HuSetVecF(&sp18, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z); + HuSubVecF(&spC, &sp24, &sp18); + if ((var_f27 = sqrtf((spC.z * spC.z) + ((spC.x * spC.x) + (spC.y * spC.y)))) < (arg0->unk60.x + temp_r30->unk60.x)) { + var_r28 += 1; + if (var_f27 < var_f28) { + var_f28 = var_f27; + var_r27 = var_r29; + arg0->unkA4 = 0; + } + } + } + } + *arg1 = var_r28; + return var_r27; +} + +void fn_1_5838(unkStruct3 *arg0) +{ + Vec spA8; + Vec sp9C; + Vec sp90; + Vec sp84; + Vec sp78; + Vec sp6C; + s32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 var_f20; + f32 var_f25; + f32 var_f27; + f32 var_f26; + s32 var_r25; + s32 var_r29; + unkStruct3 *temp_r27; + unkStruct3 *var_r30; + s32 var_r24; + + var_r24 = fn_1_561C(arg0, &sp68); + if (var_r24 != -1) { + var_f20 = fn_1_1D08(atan2d((arg0->unk40.x - arg0->unk4C.x), (arg0->unk40.z - arg0->unk4C.y))); + sp58 = var_f27 = arg0->unk4C.x; + sp54 = var_f26 = arg0->unk4C.y; + sp4C = 1.0f; + var_r25 = (1.0f + (10.0f / sp4C)); + + while (var_r25 != 0) { + var_f27 += sp4C * sind(var_f20); + var_f26 += sp4C * cosd(var_f20); + HuSetVecF(&spA8, var_f27, arg0->unk40.y, var_f26); + + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 == arg0->unk24) + continue; + var_r30 = &lbl_1_bss_4D4[var_r29]; + HuSetVecF(&sp9C, var_r30->unk40.x, var_r30->unk40.y, var_r30->unk40.z); + HuSubVecF(&sp90, &spA8, &sp9C); + if (sqrtf((sp90.z * sp90.z) + ((sp90.x * sp90.x) + (sp90.y * sp90.y))) < (arg0->unk60.x + var_r30->unk60.x)) + break; + } + if (var_r29 < 4) + break; + AddX = 0.0f; + AddZ = 0.0f; + MapWall(arg0->unk60.x, var_f27, arg0->unk40.y + arg0->unk60.x, var_f26); + if ((AddX + AddZ) != 0.0f) + goto end; + sp58 = var_f27; + sp54 = var_f26; + var_r25--; + } + var_f20 = fn_1_1D08(atan2d((arg0->unk40.x - arg0->unk4C.x), (arg0->unk40.z - arg0->unk4C.y))); + var_f25 = fn_1_1D08(atan2d((var_r30->unk40.x - arg0->unk4C.x), (var_r30->unk40.z - arg0->unk4C.y))); + sp60 = var_f20 - var_f25; + if (sp60 > 0.0f) { + sp5C = -0.5f; + } + else { + sp5C = 0.5f; + } + if (ABS_INV(var_f20 - var_f25) > 180.0f) { + sp5C = -sp5C; + } + var_f25 = fn_1_1D08(atan2d((arg0->unk4C.x - var_r30->unk40.x), (arg0->unk4C.y - var_r30->unk40.z))); + sp50 = 0.8f * arg0->unk60.y; + var_r24 = var_r30->unk24; + sp64 = 1.0f + (arg0->unk60.x + var_r30->unk60.x); + while (1) { + var_f27 = (var_r30->unk40.x + (sp64 * sind(var_f25))); + var_f26 = (var_r30->unk40.z + (sp64 * cosd(var_f25))); + HuSetVecF(&spA8, var_f27, 0.0, var_f26); + + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 == arg0->unk24) || (var_r29 == var_r24)) + continue; + temp_r27 = &lbl_1_bss_4D4[var_r29]; + HuSetVecF(&sp9C, temp_r27->unk40.x, 0.0, temp_r27->unk40.z); + HuSubVecF(&sp90, &spA8, &sp9C); + if (sqrtf((sp90.x * sp90.x) + (sp90.z * sp90.z)) < (arg0->unk60.x + temp_r27->unk60.x)) + break; + } + if (var_r29 < 4) + break; + AddX = 0.0f; + AddZ = 0.0f; + MapWall(arg0->unk60.x, var_f27, arg0->unk40.y + arg0->unk60.x, var_f26); + if ((AddX + AddZ) != 0.0f) + break; + sp58 = var_f27; + sp54 = var_f26; + HuSetVecF(&spA8, arg0->unk4C.x, 0.0, arg0->unk4C.y); + HuSetVecF(&sp9C, var_f27, 0.0, var_f26); + HuSubVecF(&sp90, &spA8, &sp9C); + if (sqrtf((sp90.x * sp90.x) + (sp90.z * sp90.z)) > sp50) + break; + var_f25 += sp5C; + } + end: + arg0->unk40.x = sp58; + arg0->unk40.z = sp54; + } +} + +f32 fn_1_6594(f32 arg8, f32 arg9, f32 argA) +{ + f32 var_f31; + f32 var_f30; + + var_f31 = fmod((arg9 - arg8), 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod((arg8 + (var_f31 * argA)), 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +f32 fn_1_6698(f32 arg8, f32 arg9, unkStruct3 *arg0) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + + HuSetVecF(&sp2C, arg8, 0.0, arg9); + HuSetVecF(&sp20, arg0->unk40.x, 0.0, arg0->unk40.z); + HuSubVecF(&sp14, &sp2C, &sp20); + return sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z)); +} + +static inline void PadInline(void) +{ + float var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; + (void)var_f27; +} + +void fn_1_6814(unkStruct3 *arg0) +{ + Vec sp104; + Vec spF8; + Vec spEC; + volatile f32 spA0; + f32 sp9C; + f32 sp98; + f32 var_f27; // probably debug code + f32 var_f18; + f32 temp_f31; + f32 temp_f30; + f32 var_f29; + s32 var_r22; + s32 var_r21; + s32 var_r20; + unkStruct *temp_r27; + s32 var_r28; + unkStruct3 *temp_r29; + unkStruct *var_r30; + + arg0->unk88 = arg0->unk89 = 0; + arg0->unk8B = arg0->unk8A = 0; + arg0->unk8C = arg0->unk8E = 0; + + switch (GWPlayerCfg[arg0->unk24].diff) { + case 0: + var_r22 = 0x3C; + break; + case 1: + var_r22 = 0x50; + break; + case 2: + var_r22 = 0x5A; + break; + default: + var_r22 = 0x5F; + break; + } + switch (GWPlayerCfg[arg0->unk24].diff) { + case 0: + spA0 = 200.0f; + break; + case 1: + spA0 = 250.0f; + break; + case 2: + spA0 = 300.0f; + break; + default: + spA0 = 350.0f; + break; + } + + for (var_r28 = 0, sp98 = 10000.0f; var_r28 < 0x20; var_r28++) { + temp_r27 = lbl_1_bss_278[var_r28]; + if (temp_r27 && (temp_r27->unk6 != -1)) { + HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z); + HuSetVecF(&spF8, temp_r27->unk10.x, 0.0, temp_r27->unk10.z); + HuSubVecF(&spEC, &sp104, &spF8); + var_f29 = sqrtf((spEC.z * spEC.z) + ((spEC.x * spEC.x) + (spEC.y * spEC.y))); + if ((var_f29 < (spA0 + (arg0->unk60.x + temp_r27->unk30))) && (sp98 > var_f29)) { + var_r30 = temp_r27; + sp98 = var_f29; + } + } + } + if (sp98 < 10000.0f) { + arg0->unk9C = 0; + var_r21 = 1; + if (arg0->unkA0 != var_r30->unk6) { + if (frandmod(0x64) < 0) { + (void)var_r21; // probably debug code + PadInline(); + } + else { + (void)var_r21; + } + } + if (var_r21 != 0) { + sp9C = 200.0f + (var_r30->unk30 + arg0->unk60.x) + (100.0f * frandf()); + sp104.x = temp_f31 = (var_r30->unk10.x + (sp9C * sind(var_r30->unk24.x + 90.0f))); + sp104.z = temp_f30 = (var_r30->unk10.z + (sp9C * cosd(var_r30->unk24.x + 90.0f))); + var_f29 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + spF8.x = temp_f31 = (var_r30->unk10.x + (sp9C * sind(var_r30->unk24.x - 90.0f))); + spF8.z = temp_f30 = (var_r30->unk10.z + (sp9C * cosd(var_r30->unk24.x - 90.0f))); + spA0 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (sqrtf((arg0->unk40.x * arg0->unk40.x) + (arg0->unk40.z * arg0->unk40.z)) < 400.0f) { + spEC.x = var_f29; + var_f29 = spA0; + spA0 = spEC.x; + } + if (var_f29 > spA0) { + spEC.x = spF8.x; + spEC.z = spF8.z; + } + else { + spEC.x = sp104.x; + spEC.z = sp104.z; + } + if (arg0->unkA0 != var_r30->unk6) { + arg0->unkA0 = var_r30->unk6; + arg0->unk90.x = spEC.x; + arg0->unk90.y = spEC.z; + } + + var_f18 = atan2d((arg0->unk90.x - arg0->unk40.x), (arg0->unk90.y - arg0->unk40.z)); + + if (fn_1_53F4(arg0, arg0->unk40.x + arg0->unk7C.x, arg0->unk40.y, arg0->unk40.z + arg0->unk7C.z) != -1) { + var_f18 += 90.0f; + } + arg0->unk88 = 50.0 * sind(var_f18); + arg0->unk89 = -50.0f * cosd(var_f18); + } + } + else { + if (arg0->unk9C == 0) { + arg0->unk9C = 1; + arg0->unk98 = (250.0f + (90.0f * frandf())); + arg0->unkA4 = 30; + } + if ((sqrtf((arg0->unk40.x * arg0->unk40.x) + (arg0->unk40.z * arg0->unk40.z)) > arg0->unk98) && (arg0->unkA4 != 0)) { + arg0->unkA4--; + var_f18 = (180.0 + (atan2d(arg0->unk40.x, arg0->unk40.z))); + if (fn_1_53F4(arg0, arg0->unk40.x + arg0->unk7C.x, arg0->unk40.y, arg0->unk40.z + arg0->unk7C.z) != -1) { + arg0->unkA4 = 0; + var_f18 += 90.0f; + } + arg0->unk88 = 25.0 * sind(var_f18); + arg0->unk89 = -25.0 * cosd(var_f18); + return; + } + var_r28 = 0; + sp98 = 10000.0f; + var_r20 = -1; + + for (; var_r28 < 4; var_r28++) { + if (var_r28 != arg0->unk24) { + temp_r29 = &lbl_1_bss_4D4[var_r28]; + HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z); + HuSetVecF(&spF8, temp_r29->unk40.x, 0.0, temp_r29->unk40.z); + HuSubVecF(&spEC, &sp104, &spF8); + var_f29 = sqrtf((spEC.z * spEC.z) + ((spEC.x * spEC.x) + (spEC.y * spEC.y))); + if (var_f29 < sp98) { + var_r20 = var_r28; + sp98 = var_f29; + } + } + } + if (var_r20 != -1) { + temp_r29 = &lbl_1_bss_4D4[var_r20]; + HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z); + HuSetVecF(&spF8, temp_r29->unk40.x, 0.0, temp_r29->unk40.z); + HuSubVecF(&spEC, &sp104, &spF8); + var_f29 = sqrtf((spEC.x * spEC.x) + (spEC.z * spEC.z)); + if ((var_f29 < 200.0f) && (var_f29 > 150.0f)) { + var_f18 = atan2d((arg0->unk40.x - temp_r29->unk40.x), (arg0->unk40.z - temp_r29->unk40.z)); + (void)var_f29; + arg0->unk88 = 30.0f * sind(var_f18); + arg0->unk89 = -30.0f * cosd(var_f18); + } + } + } +} + +void fn_1_7C60(void) +{ + Vec sp1A0; + Vec sp188; + Vec sp17C; + Vec sp170; + Vec sp164; + Vec sp158; + Vec sp14C; + Vec sp140; + f32 sp13C; + f32 sp138; + f32 sp134; + f32 sp130; + f32 sp12C; + f32 temp_f20; + f32 var_f21; + f32 var_f31; + s32 var_r27; + unkStruct3 *temp_r30; + unkStruct3 *temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk30 = 0; + temp_r31->unk9C = 0; + temp_r31->unkA0 = -1; + + while (lbl_1_bss_794 == 0) { + HuPrcVSleep(); + } + + lbl_1_bss_794 = 2; + while (lbl_1_bss_794 == 2) { + HuPrcVSleep(); + } +loop_6: + temp_r31->unk4C.x = temp_r31->unk40.x; + temp_r31->unk4C.y = temp_r31->unk40.z; + if (GWPlayerCfg[temp_r31->unk24].iscom == 1) { + fn_1_6814(temp_r31); + } + switch (temp_r31->unk30) { + default: + HuSetVecF(&sp1A0, fn_1_4E58(temp_r31->unk24, 0) / 4.0f, 0.0, -fn_1_4E58(temp_r31->unk24, 1) / 4.0f); + temp_r31->unk60.z = sqrtf((sp1A0.z * sp1A0.z) + ((sp1A0.x * sp1A0.x) + (sp1A0.y * sp1A0.y))); + if (temp_r31->unk60.z >= 0.5f) { + if (temp_r31->unk60.z >= 10.0f) { + sp1A0.x /= temp_r31->unk60.z; + sp1A0.z /= temp_r31->unk60.z; + temp_r31->unk60.z = 10.0f; + sp1A0.x = 10.0f * sp1A0.x; + sp1A0.z = 10.0f * sp1A0.z; + } + temp_r31->unk54.y = fn_1_6594(temp_r31->unk54.y, atan2d(sp1A0.x, sp1A0.z), 0.4f); + if (temp_r31->unk60.z >= 8.0f) { + if (temp_r31->unk30 != 2) { + temp_r31->unk30 = 2; + CharModelMotionShiftSet( + lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } + else if (temp_r31->unk30 != 1) { + temp_r31->unk30 = 1; + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + temp_r31->unk7C.x += 0.1f * sp1A0.x; + temp_r31->unk7C.z += 0.1f * sp1A0.z; + } + else if (temp_r31->unk30 != 0) { + temp_r31->unk30 = 0; + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[0]); + Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_LOOP); + Hu3DMotionSet(temp_r31->unk2, temp_r31->unk18[0]); + Hu3DMotionSpeedSet(temp_r31->unk2, 2.0f); + Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_LOOP); + } + var_f21 = sqrtf((temp_r31->unk7C.x * temp_r31->unk7C.x) + (temp_r31->unk7C.z * temp_r31->unk7C.z)); + if (temp_r31->unk60.z > 0.5f) { + if (var_f21 > 0.25f) { + var_f21 -= 0.25f; + } + } + else { + var_f21 -= 0.25f; + } + if (var_f21 < 0.0f) { + HuSetVecF(&temp_r31->unk7C, 0.0, 0.0, 0.0); + var_f21 = 0.0f; + } + else { + if (var_f21 > 10.0f) { + var_f21 = 10.0f; + } + sp13C = fn_1_1D08(atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z)); + HuSetVecF(&temp_r31->unk7C, (var_f21 * sind(sp13C)), 0.0, (var_f21 * cosd(sp13C))); + } + temp_r31->unk60.y = var_f21; + temp_r31->unk40.x += temp_r31->unk7C.x; + temp_r31->unk40.z += temp_r31->unk7C.z; + if ((temp_r31->unk38 = fn_1_53F4(temp_r31, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z)) != -1) { + temp_r30 = &lbl_1_bss_4D4[temp_r31->unk38]; + if (temp_r30->unk30 != 3) { + var_f31 = atan2d((temp_r30->unk40.x - temp_r31->unk40.x), (temp_r30->unk40.z - temp_r31->unk40.z)); + temp_f20 = atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z); + var_f31 = ABS_INV(var_f31 - temp_f20); + if (var_f31 > 180.0f) { + var_f31 = 360.0f - var_f31; + } + sp138 = var_f31 / 90.0f; + var_f31 = atan2d((temp_r31->unk40.x - temp_r30->unk40.x), (temp_r31->unk40.z - temp_r30->unk40.z)); + temp_f20 = atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z); + temp_f20 = fn_1_1D08(180.0f + temp_f20); + temp_f20 = fn_1_1D08(var_f31 - (temp_f20 - var_f31)); + var_f31 = fn_1_1D08(atan2d((temp_r30->unk40.x - temp_r31->unk40.x), (temp_r30->unk40.z - temp_r31->unk40.z))); + HuSetVecF(&sp1A0, temp_r31->unk7C.x, 0.0, temp_r31->unk7C.z); + fn_1_4C9C(&sp1A0, var_f31, 1.0f - sp138); + HuSetVecF(&temp_r30->unk7C, sp1A0.x, 0.0, sp1A0.z); + HuSetVecF(&sp1A0, temp_r31->unk7C.x, 0.0, temp_r31->unk7C.z); + fn_1_4C9C(&sp1A0, temp_f20, sp138); + HuSetVecF(&temp_r31->unk7C, sp1A0.x, 0.0, sp1A0.z); + } + fn_1_5838(temp_r31); + } + while (1) { + AddX = 0.0f; + AddZ = 0.0f; + MapWall(temp_r31->unk60.x, temp_r31->unk40.x, temp_r31->unk40.y + temp_r31->unk60.x, temp_r31->unk40.z); + temp_r31->unk40.x += AddX; + temp_r31->unk40.z += AddZ; + if ((temp_r31->unk38 = fn_1_53F4(temp_r31, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z)) == -1) + break; + temp_r31->unk40.x = temp_r31->unk4C.x; + temp_r31->unk40.z = temp_r31->unk4C.y; + } + Hu3DModelPosSet(temp_r31->unk0, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z); + Hu3DModelPosSet(temp_r31->unk2, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z); + HuPrcVSleep(); + goto loop_6; + case 3: + HuAudFXPlay(0x584); + Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_PAUSE); + Hu3DModelPosSet(temp_r31->unkA, temp_r31->unk40.x + (100.0 * sind(lbl_1_bss_778)), 200.0f + temp_r31->unk40.y, + temp_r31->unk40.z + (100.0 * cosd(lbl_1_bss_778))); + Hu3DModelAttrReset(temp_r31->unkA, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->unkA, HU3D_MOTATTR_PAUSE); + HuPrcSleep(10); + Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_PAUSE); + HuPrcSleep(10); + Hu3DModelPosSet(temp_r31->unk6, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + Hu3DModelPosSet(temp_r31->unk8, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + Hu3DModelAttrReset(temp_r31->unk6, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->unk8, HU3D_ATTR_DISPOFF); + Hu3DModelShadowDispOn(temp_r31->unk6); + + for (sp134 = 0.0f, sp130 = 1.0f; sp134 < 1; sp134 += 0.05f, sp130 -= 0.1f) { + Hu3DModelScaleSet(temp_r31->unk6, 1.0f, sp134, 1.0f); + Hu3DModelScaleSet(temp_r31->unk8, 1.0f, -sp134, 1.0f); + if (sp130 > 0.0f) { + Hu3DModelAmbSet(temp_r31->unk0, sp130, sp130, 1.0f); + } + HuPrcVSleep(); + } + Hu3DModelScaleSet(temp_r31->unk6, 1.0f, 1.0f, 1.0f); + Hu3DModelScaleSet(temp_r31->unk8, 1.0f, -1.0f, 1.0f); + while (1) { + HuPrcVSleep(); + } + case 4: + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + var_r27 = 30; + sp12C = fn_1_27C4(var_r27, lbl_1_bss_778, temp_r31->unk54.y); + + for (; var_r27 != 0; var_r27--) { + temp_r31->unk54.y += sp12C; + Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z); + Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z); + HuPrcVSleep(); + } + while (lbl_1_bss_794 < 5) { + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[5], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[5], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + + while (1) { + HuPrcVSleep(); + } + } +} + +void fn_1_A01C(ModelData *model, ParticleData *particle, f32 (*matrix)[4]) +{ + HsfanimStruct01 *var_r31; + f32 var_f29; + f32 var_f28; + f32 var_f30; + f32 var_f31; + s16 var_r25; + s16 var_r24; + s16 var_r26; + s16 var_r28; + s32 var_r27; + unkStruct *temp_r30; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + + for (var_r26 = 0; var_r26 < 0x20; var_r26++) { + temp_r30 = lbl_1_bss_278[var_r26]; + if (temp_r30 && (temp_r30->unkA != 0)) { + for (var_r25 = 0, var_f30 = 0.0f; var_r25 < 4; var_r25++, var_f30 += 45.0f) { + for (var_r24 = 0, var_f31 = 0.0f; var_r24 < 8; var_r24++, var_f31 += 45.0f) { + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk14.x == 0.0f) + break; + } + if (var_r28 == particle->unk_30) + break; + if (temp_r30->unkC == 1) { + var_f29 = 2.0f + (2.0f * frandf()); + var_f28 = 10.0f; + } + else { + var_f29 = 1.0f + frandf(); + var_f28 = 3.0f; + } + var_r31->unk34.x = temp_r30->unk10.x + (var_f29 * (sind(var_f30) * cosd(var_f31))); + var_r31->unk34.y = temp_r30->unk10.y + (var_f29 * sind(var_f31)); + var_r31->unk34.z = (temp_r30->unk10.z + (var_f29 * (cosd(var_f30) * cosd(var_f31)))); + var_r31->unk08.x = (var_f28 * (sind(var_f30) * cosd(var_f31))); + var_r31->unk08.y = (var_f28 * sind(var_f31)); + var_r31->unk08.z = (var_f28 * (cosd(var_f30) * cosd(var_f31))); + var_r31->unk14.x = 30.0f; + if (temp_r30->unkC == 1) { + var_r31->unk2C = 20.0f + (2.0f * frandf()); + var_r31->unk14.y = 0.0f; + } + else { + var_r31->unk2C = 15.0f; + var_r31->unk14.y = 0.0f; + } + var_r31->unk40.a = 0xFF; + var_r31->unk14.z = 20.0f; + } + } + temp_r30->unkA++; + } + } + var_r31 = particle->unk_48; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk14.x != 0.0f) { + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.95f; + var_r31->unk08.z *= 0.95f; + var_r31->unk08.y -= 0.2f; + var_r31->unk2C += var_r31->unk14.y; + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_A618(ModelData *model, ParticleData *particle, f32 (*matrix)[4]) +{ + HsfanimStruct01 *var_r31; + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 var_f28; + s16 var_r26; + s16 var_r25; + s16 var_r29; + s32 var_r27; + unkStruct *temp_r28; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + + for (var_r26 = 0; var_r26 < 0x20; var_r26++) { + temp_r28 = lbl_1_bss_278[var_r26]; + if (temp_r28 && (temp_r28->unkA != 0)) { + + for (var_r25 = 0, var_f28 = 0.0f; var_r25 < 9; var_r25++, var_f28 += 45.0f) { + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk14.x == 0.0f) + break; + } + if (var_r29 == particle->unk_30) + break; + var_f31 = var_f28; + if (var_r25 < 8) { + var_f30 = 1.0f + frandf(); + var_f29 = 2.0f; + } + else { + var_f30 = var_f29 = 0.0f; + } + var_r31->unk34.x = temp_r28->unk10.x + (var_f30 * sind(var_f31)); + var_r31->unk34.y = temp_r28->unk10.y + (10.0f * frandf()); + var_r31->unk34.z = temp_r28->unk10.z + (var_f30 * cosd(var_f31)); + var_r31->unk08.x = var_f29 * sind(var_f31); + var_r31->unk08.y = -1.0f + frandf(); + var_r31->unk08.z = var_f29 * cosd(var_f31); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 15.0f; + var_r31->unk14.y = 1.5f; + var_r31->unk40.a = 0xC8; + var_r31->unk14.z = 17.0f; + } + temp_r28->unkA = 0; + } + } + var_r31 = particle->unk_48; + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.95f; + var_r31->unk08.z *= 0.95f; + var_r31->unk08.y -= 0.2f; + var_r31->unk2C += var_r31->unk14.y; + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_AA88(ModelData *model, ParticleData *particle, f32 (*matrix)[4]) +{ + HsfanimStruct01 *var_r31; + f32 var_f31; + s16 var_r27; + s16 var_r28; + unkStruct2 *temp_r29; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + + for (var_r27 = 0; var_r27 < 6; var_r27++) { + temp_r29 = &lbl_1_bss_33C[var_r27]; + if (temp_r29->unk20 == 0) + continue; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk14.x == 0.0f) + break; + } + if (var_r28 == particle->unk_30) + break; + var_r31->unk34.x = temp_r29->unk2C.x + (-100.0 * cosd(temp_r29->unk38.y)); + var_r31->unk34.y = 98.0f + temp_r29->unk2C.y; + var_r31->unk34.z = temp_r29->unk2C.z + (100.0 * sind(temp_r29->unk38.y)); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 80.0f; + var_r31->unk14.y = 5.0f; + var_r31->unk40.a = 0xC8; + var_r31->unk14.z = 17.0f; + temp_r29->unk20 = 0; + } + var_r31 = particle->unk_48; + + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 0.2f; + } + var_f31 = var_r31->unk40.a; + var_f31 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_f31; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_ADC8(void) +{ + Vec sp14; + Vec sp8; + f32 var_f31; + void *temp_r28; + Process *var_r29; + s32 var_r31; + unkStruct3 *temp_r30; + + fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x588); + HuAudFXPlay(0x58B); + + var_r31 = 0; + var_f31 = Hu3DMotionMaxTimeGet(lbl_1_bss_79E); + for (; var_f31; var_r31++, var_f31--) { + if (var_r31 == 0x33) { + Hu3DModelAttrReset(lbl_1_bss_798[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_798[0], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_798[0], 1465.0f, 770.0f, -2400.0f); + } + if (var_r31 == 0x47) { + Hu3DModelAttrReset(lbl_1_bss_798[1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_798[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_798[1], 1531.0f, 773.0f, -2380.0f); + } + if (var_r31 == 0x82) { + temp_r28 = fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x580); + var_r29 = HuPrcChildCreate(fn_1_7BC, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + var_r29->user_data = temp_r28; + } + if (var_f31 == 90.0f) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + temp_r30 = &lbl_1_bss_4D4[var_r31]; + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[var_r31].character], temp_r30->unkC[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r30->unk2, temp_r30->unk18[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + } + HuPrcVSleep(); + } + HuPrcSleep(30); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + temp_r30 = &lbl_1_bss_4D4[var_r31]; + HuAudPlayerVoicePlay(temp_r30->unk24, 0x128); + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[var_r31].character], temp_r30->unkC[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(temp_r30->unk2, temp_r30->unk18[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } +} + +void fn_1_B13C(void) +{ + HuPrcSleep(0x1E); +} + +void fn_1_B160(void) +{ + while (1) { + while (1) { + if (omSysExitReq != 1) + break; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(0x3E8); + HuPrcSleep(0x3C); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (1) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_B1C0(void) +{ + s16 temp_r27; + s16 temp_r30; + s16 var_r29; + s32 var_r26; + s32 var_r28; + s32 var_r31; + + lbl_1_bss_794 = 0; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_780[var_r31] = -1; + } + HuAudFXPlay(0x57F); + fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x589); + HuPrcSleep(1); + Hu3DModelAttrSet(lbl_1_bss_2F8.unk0, HU3D_MOTATTR_PAUSE); + Hu3DModelClusterAttrSet(lbl_1_bss_2F8.unk0, 0, -0x3FFFFFFE); + Hu3DModelAttrSet(lbl_1_bss_2F8.unk2, HU3D_MOTATTR_PAUSE); + Hu3DModelClusterAttrSet(lbl_1_bss_2F8.unk2, 0, -0x3FFFFFFE); + HuPrcSleep(1.0f + wipeData.duration); + fn_1_ADC8(); + HuPrcSleep(30); + lbl_1_bss_794 = 1; + while (lbl_1_bss_794 == 1) { + HuPrcVSleep(); + } + var_r26 = HuAudSeqPlay(0x43); + temp_r30 = MGSeqCreate(3, 0); + + while (MGSeqStatGet(temp_r30) != 0) { + HuPrcVSleep(); + } + var_r29 = 0xE4B; + temp_r27 = MGSeqCreate(1, var_r29 / 60, -1, -1); + lbl_1_bss_794 = 3; + + while (1) { + for (var_r31 = 0, var_r28 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_4D4[var_r31].unk30 != 3) { + var_r28++; + } + } + if ((var_r28 <= 1) || (var_r29 < 0x3B)) + break; + MGSeqParamSet(temp_r27, 1, var_r29-- / 60); + lbl_1_bss_790++; + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_4D4[var_r31].unk30 != 3) { + lbl_1_bss_780[var_r31] = GWPlayerCfg[var_r31].character; + if (_CheckFlag(0x1000C) == 0) { + GWPlayer[var_r31].coin_win = 10; + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_4D4[var_r31].unk30 = 4; + } + lbl_1_bss_794 = 4; + HuAudSeqFadeOut(var_r26, 0x64); + MGSeqParamSet(temp_r27, 2, -1); + temp_r30 = MGSeqCreate(3, 1); + + while (MGSeqStatGet(temp_r30) != 0) { + HuPrcVSleep(); + } + HuPrcSleep(30); + lbl_1_bss_794 = 5; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_780[var_r31] != -1) + break; + } + if (var_r31 < 4) { + HuAudSStreamPlay(1); + temp_r30 = MGSeqCreate(5, 3, lbl_1_bss_780[0], lbl_1_bss_780[1], lbl_1_bss_780[2], lbl_1_bss_780[3]); + } + else { + HuAudSStreamPlay(4); + temp_r30 = MGSeqCreate(3, 2); + } + HuPrcSleep(0xD2); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(0x3C); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (1) { + HuPrcVSleep(); + } +} diff --git a/src/REL/m413Dll/main.c b/src/REL/m413Dll/main.c index 395125bc..718bf09c 100644 --- a/src/REL/m413Dll/main.c +++ b/src/REL/m413Dll/main.c @@ -1,132 +1,137 @@ +#include "game/audio.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/audio.h" #include "game/wipe.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" -#include "game/sprite.h" -#include "game/pad.h" -#include "game/hsfman.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/pad.h" +#include "game/sprite.h" #include "game/hsfmotion.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" +#ifndef __MWERKS__ +#include "string.h" +#include "game/hsfex.h" +#endif + +s32 rand8(void); typedef struct struct_bss_2A6C StructBss2A6C; typedef struct struct_sp_14C8 StructSp14C8; typedef struct struct_sp_14C8 { - u8 unk0; - u8 unk1; - u8 unk2; - s32 unk4[4]; - StructBss2A6C *unk14; - StructBss2A6C *unk18; - StructSp14C8 *unk1C; + u8 unk0; + u8 unk1; + u8 unk2; + s32 unk4[4]; + StructBss2A6C *unk14; + StructBss2A6C *unk18; + StructSp14C8 *unk1C; } StructSp14C8; typedef struct work_19C8 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s32 unk20; - s32 unk24; - s32 unk28; - s32 unk2C; - u8 unk30[0x10]; - float unk40; - s32 unk44; - StructBss2A6C *unk48[2]; - u8 unk50[8][2]; - u8 unk60; - u8 unk61; - u8 unk62; - u8 unk63[2]; - u8 unk65[2]; - s32 unk68; - s32 unk6C; - u8 unk70; - u8 unk71; - u8 unk72; - s32 unk74; - u8 unk78; - u8 unk79; - s32 unk7C; - s32 unk80; - s32 unk84; - s32 unk88; - s32 unk8C; - s32 unk90; - s32 unk94; - float unk98; - float unk9C; - float unkA0; - s16 unkA4; + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; + u8 unk30[0x10]; + float unk40; + s32 unk44; + StructBss2A6C *unk48[2]; + u8 unk50[8][2]; + u8 unk60; + u8 unk61; + u8 unk62; + u8 unk63[2]; + u8 unk65[2]; + s32 unk68; + s32 unk6C; + u8 unk70; + u8 unk71; + u8 unk72; + s32 unk74; + u8 unk78; + u8 unk79; + s32 unk7C; + s32 unk80; + s32 unk84; + s32 unk88; + s32 unk8C; + s32 unk90; + s32 unk94; + float unk98; + float unk9C; + float unkA0; + s16 unkA4; } Work19C8; typedef struct struct_bss_2A6C { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 unk5; - s32 unk8[4]; - union { - s8 unk18; - u8 unk18_u; - }; - - Vec unk1C; - u32 unk28; - StructSp14C8 *unk2C; - StructBss2A6C *unk30; - StructBss2A6C *unk34; - StructBss2A6C *unk38; - StructBss2A6C *unk3C; - StructBss2A6C *unk40; - StructBss2A6C *unk44; - StructBss2A6C *unk48; - StructBss2A6C *unk4C; - Work19C8 *unk50; + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + s32 unk8[4]; + union { + s8 unk18; + u8 unk18_u; + }; + + Vec unk1C; + u32 unk28; + StructSp14C8 *unk2C; + StructBss2A6C *unk30; + StructBss2A6C *unk34; + StructBss2A6C *unk38; + StructBss2A6C *unk3C; + StructBss2A6C *unk40; + StructBss2A6C *unk44; + StructBss2A6C *unk48; + StructBss2A6C *unk4C; + Work19C8 *unk50; } StructBss2A6C; typedef struct struct_bss_2684 { - float unk0; - float unk4; - s32 unk8; - s32 unkC; - u8 unk10; + float unk0; + float unk4; + s32 unk8; + s32 unkC; + u8 unk10; } StructBss2684; typedef struct struct_bss_100 { - u8 unk0; - Vec unk4; - Vec unk10; - u8 unk1C; - u8 unk1D; + u8 unk0; + Vec unk4; + Vec unk10; + u8 unk1C; + u8 unk1D; } StructBss100; typedef struct struct_bss_b8 { - s32 unk0; - s32 unk4; - float unk8; - Vec unkC; + s32 unk0; + s32 unk4; + float unk8; + Vec unkC; } StructBssB8; typedef struct struct_bss_48 { - s32 unk0; - float unk4[3]; + s32 unk0; + float unk4[3]; } StructBss48; StructBss2A6C *lbl_1_bss_7884[12]; @@ -159,2037 +164,2054 @@ s32 lbl_1_data_4[2] = { -1, -1 }; s32 lbl_1_data_C[4] = { 0, 1, 2, 3 }; float lbl_1_data_1C[7] = { 1000, 1000, 1000, 0, 0, 0, 30 }; -const Vec lbl_1_rodata_10[2] = { - 0, 7955, 3436, - 0, -0.898794f, -0.43837115f -}; +const Vec lbl_1_rodata_10[2] = { 0, 7955, 3436, 0, -0.898794f, -0.43837115f }; -const GXColor lbl_1_rodata_28 = { - 0, 0, 0, 255 -}; +const GXColor lbl_1_rodata_28 = { 0, 0, 0, 255 }; -const Vec lbl_1_rodata_2C[2] = { - 0, 5966.25f, 3436, - 0, -0.6740955f, -0.43837115f -}; +const Vec lbl_1_rodata_2C[2] = { 0, 5966.25f, 3436, 0, -0.6740955f, -0.43837115f }; -const GXColor lbl_1_rodata_44 = { - 0, 0, 0, 255 -}; +const GXColor lbl_1_rodata_44 = { 0, 0, 0, 255 }; void fn_1_A0(s32 arg0) { - Mtx44 sp10C; - Mtx44 spCC; - Mtx44 sp8C; - Mtx44 sp4C; - Mtx44 spC; - CameraData *temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - - MTXRotDeg(sp8C, 'y', HuPadSubStkX[0]/16.0); - MTXRotDeg(spCC, 'x', HuPadSubStkY[0]/-16.0); - MTXTrans(spC, (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0)-((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0))*10.0, - (((HuPadBtn[0] & PAD_BUTTON_UP) != 0)-((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0))*10.0, - ((HuPadTrigL[0]-HuPadTrigR[0])/128.0)*30.0); - MTXConcat(spCC, sp8C, sp4C); - MTXConcat(spC, sp4C, sp10C); - for(temp_r30=0, temp_r29=1; temp_r30<16; temp_r30++, temp_r29 <<= 1) { - if(arg0 & temp_r29) { - temp_r31 = &Hu3DCamera[temp_r30]; - MTXMultVec(sp10C, &temp_r31->pos, &temp_r31->pos); - MTXMultVec(sp4C, &temp_r31->up, &temp_r31->up); - MTXMultVec(sp10C, &temp_r31->target, &temp_r31->target); - } - } - (void)temp_r28; - (void)temp_r27; - (void)temp_r26; - (void)temp_r25; - (void)temp_r28; - (void)temp_r27; - (void)temp_r26; - (void)temp_r25; + Mtx44 sp10C; + Mtx44 spCC; + Mtx44 sp8C; + Mtx44 sp4C; + Mtx44 spC; + CameraData *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + + MTXRotDeg(sp8C, 'y', HuPadSubStkX[0] / 16.0); + MTXRotDeg(spCC, 'x', HuPadSubStkY[0] / -16.0); + MTXTrans(spC, (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)) * 10.0, + (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)) * 10.0, ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0) * 30.0); + MTXConcat(spCC, sp8C, sp4C); + MTXConcat(spC, sp4C, sp10C); + for (temp_r30 = 0, temp_r29 = 1; temp_r30 < 16; temp_r30++, temp_r29 <<= 1) { + if (arg0 & temp_r29) { + temp_r31 = &Hu3DCamera[temp_r30]; + MTXMultVec(sp10C, &temp_r31->pos, &temp_r31->pos); + MTXMultVec(sp4C, &temp_r31->up, &temp_r31->up); + MTXMultVec(sp10C, &temp_r31->target, &temp_r31->target); + } + } + (void)temp_r28; + (void)temp_r27; + (void)temp_r26; + (void)temp_r25; + (void)temp_r28; + (void)temp_r27; + (void)temp_r26; + (void)temp_r25; } s32 fn_1_38C(u8 *arg0, s32 *arg1) { - s32 temp_r28; - s32 temp_r27 = rand8()%4; - - if(!arg0 || *arg0 == 0) { - return 0; - } - for(temp_r28=0; temp_r28<4; temp_r28++) { - s32 temp_r31 = (temp_r28+temp_r27)%4; - if(*arg0 & (1 << temp_r31)) { - *arg0 = 1 << temp_r31; - if(arg1) { - arg1[(temp_r31+1)%4] = arg1[(temp_r31+2)%4] = arg1[(temp_r31+3)%4] = 0; - } - return temp_r31; - } - } - return 0; + s32 temp_r28; + s32 temp_r27 = rand8() % 4; + + if (!arg0 || *arg0 == 0) { + return 0; + } + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + s32 temp_r31 = (temp_r28 + temp_r27) % 4; + if (*arg0 & (1 << temp_r31)) { + *arg0 = 1 << temp_r31; + if (arg1) { + arg1[(temp_r31 + 1) % 4] = arg1[(temp_r31 + 2) % 4] = arg1[(temp_r31 + 3) % 4] = 0; + } + return temp_r31; + } + } + return 0; } s32 fn_1_4C0(u8 *arg0, s32 *arg1) { - s32 temp_r31; - - s32 temp_r28 = rand8()%4; - if(!arg0 || *arg0 == 0) { - return 0; - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - s32 temp_r29 = (temp_r31+temp_r28)%4; - if(*arg0 & (1 << temp_r29)) { - return arg1[temp_r29]; - } - } - return 0; + s32 temp_r31; + + s32 temp_r28 = rand8() % 4; + if (!arg0 || *arg0 == 0) { + return 0; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + s32 temp_r29 = (temp_r31 + temp_r28) % 4; + if (*arg0 & (1 << temp_r29)) { + return arg1[temp_r29]; + } + } + return 0; } #pragma dont_inline on s32 fn_1_57C(s8 arg0, float arg1, StructBss2A6C *arg2, StructBss2A6C **arg3) { - StructBss2A6C *temp_r31; - if(arg3) { - *arg3 = NULL; - } - if(arg0 < 0 || arg0 >= 12 || arg1 < 0 || arg1 > 16) { - return 1; - } - for(temp_r31 = lbl_1_bss_7884[arg0]; temp_r31;) { - if(arg2 == NULL || (temp_r31 != arg2 && (!(arg2->unk1 & 0x2) || !(temp_r31->unk1 & 0x2) || (arg2->unk2 != temp_r31->unk2)))) { - if(temp_r31->unk1C.y > arg1-1.0f && temp_r31->unk1C.y < arg1+1.0f) { - if(arg3) { - *arg3 = temp_r31; - } - return 1; - } - } - temp_r31 = temp_r31->unk48; - if(!temp_r31) { - continue; - } - if(temp_r31->unk1C.y >= arg1+1.0f) { - break; - } - } - return 0; + StructBss2A6C *temp_r31; + if (arg3) { + *arg3 = NULL; + } + if (arg0 < 0 || arg0 >= 12 || arg1 < 0 || arg1 > 16) { + return 1; + } + for (temp_r31 = lbl_1_bss_7884[arg0]; temp_r31;) { + if (arg2 == NULL || (temp_r31 != arg2 && (!(arg2->unk1 & 0x2) || !(temp_r31->unk1 & 0x2) || (arg2->unk2 != temp_r31->unk2)))) { + if (temp_r31->unk1C.y > arg1 - 1.0f && temp_r31->unk1C.y < arg1 + 1.0f) { + if (arg3) { + *arg3 = temp_r31; + } + return 1; + } + } + temp_r31 = temp_r31->unk48; + if (!temp_r31) { + continue; + } + if (temp_r31->unk1C.y >= arg1 + 1.0f) { + break; + } + } + return 0; } #pragma dont_inline off - static inline s32 fn_1_57C_inline(s8 arg0, float arg1, StructBss2A6C *arg2, StructBss2A6C **arg3) { - StructBss2A6C *temp_r31; - if(arg3) { - *arg3 = NULL; - } - if(arg0 < 0 || arg0 >= 12 || arg1 < 0 || arg1 > 16) { - return 1; - } - for(temp_r31 = lbl_1_bss_7884[arg0]; temp_r31;) { - if(arg2 == NULL || (temp_r31 != arg2 && (!(arg2->unk1 & 0x2) || !(temp_r31->unk1 & 0x2) || (arg2->unk2 != temp_r31->unk2)))) { - if(temp_r31->unk1C.y > arg1-1.0f && temp_r31->unk1C.y < arg1+1.0f) { - if(arg3) { - *arg3 = temp_r31; - } - return 1; - } - } - temp_r31 = temp_r31->unk48; - if(!temp_r31) { - continue; - } - if(temp_r31->unk1C.y >= arg1+1.0f) { - break; - } - } - return 0; + StructBss2A6C *temp_r31; + if (arg3) { + *arg3 = NULL; + } + if (arg0 < 0 || arg0 >= 12 || arg1 < 0 || arg1 > 16) { + return 1; + } + for (temp_r31 = lbl_1_bss_7884[arg0]; temp_r31;) { + if (arg2 == NULL || (temp_r31 != arg2 && (!(arg2->unk1 & 0x2) || !(temp_r31->unk1 & 0x2) || (arg2->unk2 != temp_r31->unk2)))) { + if (temp_r31->unk1C.y > arg1 - 1.0f && temp_r31->unk1C.y < arg1 + 1.0f) { + if (arg3) { + *arg3 = temp_r31; + } + return 1; + } + } + temp_r31 = temp_r31->unk48; + if (!temp_r31) { + continue; + } + if (temp_r31->unk1C.y >= arg1 + 1.0f) { + break; + } + } + return 0; } void fn_1_6D0(s8 arg0, float arg1, StructBss2A6C *arg2) { - StructBss2A6C *temp_r31; - StructBss2A6C *temp_r30; - if(arg2->unk4C == NULL) { - lbl_1_bss_7884[arg2->unk18] = arg2->unk48; - } else { - arg2->unk4C->unk48 = arg2->unk48; - } - if(arg2->unk48 != NULL) { - arg2->unk48->unk4C = arg2->unk4C; - } - for(temp_r31=lbl_1_bss_7884[arg0], temp_r30 = NULL; temp_r31; temp_r31=temp_r31->unk48) { - if(temp_r31->unk1C.y > arg1) { - break; - } - temp_r30 = temp_r31; - } - arg2->unk18 = arg0; - arg2->unk1C.y = arg1; - arg2->unk48 = temp_r31; - if(arg2->unk48) { - arg2->unk48->unk4C = arg2; - } - arg2->unk4C = temp_r30; - if(arg2->unk4C) { - arg2->unk4C->unk48 = arg2; - } - if(lbl_1_bss_7884[arg0] == arg2->unk48) { - lbl_1_bss_7884[arg0] = arg2; - } + StructBss2A6C *temp_r31; + StructBss2A6C *temp_r30; + if (arg2->unk4C == NULL) { + lbl_1_bss_7884[arg2->unk18] = arg2->unk48; + } + else { + arg2->unk4C->unk48 = arg2->unk48; + } + if (arg2->unk48 != NULL) { + arg2->unk48->unk4C = arg2->unk4C; + } + for (temp_r31 = lbl_1_bss_7884[arg0], temp_r30 = NULL; temp_r31; temp_r31 = temp_r31->unk48) { + if (temp_r31->unk1C.y > arg1) { + break; + } + temp_r30 = temp_r31; + } + arg2->unk18 = arg0; + arg2->unk1C.y = arg1; + arg2->unk48 = temp_r31; + if (arg2->unk48) { + arg2->unk48->unk4C = arg2; + } + arg2->unk4C = temp_r30; + if (arg2->unk4C) { + arg2->unk4C->unk48 = arg2; + } + if (lbl_1_bss_7884[arg0] == arg2->unk48) { + lbl_1_bss_7884[arg0] = arg2; + } } - s32 fn_1_7F8(StructBss2A6C *arg0, StructSp14C8 *arg1) { - s32 temp_r29; - Work19C8 *temp_r28; - Work19C8 *temp_r27; - Work19C8 *temp_r26; - Work19C8 *temp_r25; - s32 temp_r23; - temp_r29 = 0; - if(!arg0) { - return temp_r29; - } - if(arg0->unk0 == 0) { - return temp_r29; - } - if(lbl_1_bss_7884[arg0->unk18] == arg0) { - lbl_1_bss_7884[arg0->unk18] = arg0->unk48; - } - if(arg0->unk4C) { - arg0->unk4C->unk48 = arg0->unk48; - } - if(arg0->unk48) { - arg0->unk48->unk4C = arg0->unk4C; - } - if(arg0->unk38) { - arg0->unk38->unk3C = NULL; - } - if(arg0->unk3C) { - arg0->unk3C->unk38 = NULL; - } - if(arg0->unk44) { - arg0->unk44->unk40 = NULL; - } - if(arg0->unk40) { - arg0->unk40->unk44 = NULL; - } - - if(arg0->unk0 >= 1 && arg0->unk0 <= 4) { - temp_r28 = lbl_1_bss_34[0]->data; - temp_r27 = lbl_1_bss_34[1]->data; - temp_r26 = lbl_1_bss_34[2]->data; - temp_r25 = lbl_1_bss_34[3]->data; - temp_r29 = (fn_1_4C0(&arg1->unk2, arg1->unk4) > 0) ? 2 : 1; - if(lbl_1_bss_18 == -1) { - if(arg1->unk2 & 0x1) { - temp_r28->unk24 += temp_r29; - temp_r28->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; - } - if(arg1->unk2 & 0x2) { - temp_r27->unk24 += temp_r29; - temp_r27->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; - } - if(arg1->unk2 & 0x4) { - temp_r26->unk24 += temp_r29; - temp_r26->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; - } - if(arg1->unk2 & 0x8) { - temp_r25->unk24 += temp_r29; - temp_r25->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; - } - } - for(temp_r23=0; temp_r23<2; temp_r23++) { - lbl_1_bss_100[lbl_1_bss_FC].unk0 = arg0->unk0; - lbl_1_bss_100[lbl_1_bss_FC].unk4.x = ((arg0->unk18*100)-500.0)-50.0; - lbl_1_bss_100[lbl_1_bss_FC].unk4.y = ((100.0f*arg0->unk1C.y)-500.0f)+50.0f; - lbl_1_bss_100[lbl_1_bss_FC].unk4.z = 120; - lbl_1_bss_100[lbl_1_bss_FC].unk10.x = ((rand8()/255.0)*24.0)-12; - lbl_1_bss_100[lbl_1_bss_FC].unk10.y = (rand8()/255.0)*16.0; - lbl_1_bss_100[lbl_1_bss_FC].unk10.z = ((rand8()/255.0)*10.0)+6; - lbl_1_bss_100[lbl_1_bss_FC].unk1C = rand8(); - lbl_1_bss_100[lbl_1_bss_FC].unk1D = rand8(); - lbl_1_bss_FC++; - lbl_1_bss_FC = (lbl_1_bss_FC >= 300) ? 0 : lbl_1_bss_FC; - } - } - arg0->unk0 = arg0->unk1 = arg0->unk2 = arg0->unk3 = 0; - arg0->unk48 = arg0->unk4C = NULL; - return temp_r29; + s32 temp_r29; + Work19C8 *temp_r28; + Work19C8 *temp_r27; + Work19C8 *temp_r26; + Work19C8 *temp_r25; + s32 temp_r23; + temp_r29 = 0; + if (!arg0) { + return temp_r29; + } + if (arg0->unk0 == 0) { + return temp_r29; + } + if (lbl_1_bss_7884[arg0->unk18] == arg0) { + lbl_1_bss_7884[arg0->unk18] = arg0->unk48; + } + if (arg0->unk4C) { + arg0->unk4C->unk48 = arg0->unk48; + } + if (arg0->unk48) { + arg0->unk48->unk4C = arg0->unk4C; + } + if (arg0->unk38) { + arg0->unk38->unk3C = NULL; + } + if (arg0->unk3C) { + arg0->unk3C->unk38 = NULL; + } + if (arg0->unk44) { + arg0->unk44->unk40 = NULL; + } + if (arg0->unk40) { + arg0->unk40->unk44 = NULL; + } + + if (arg0->unk0 >= 1 && arg0->unk0 <= 4) { + temp_r28 = lbl_1_bss_34[0]->data; + temp_r27 = lbl_1_bss_34[1]->data; + temp_r26 = lbl_1_bss_34[2]->data; + temp_r25 = lbl_1_bss_34[3]->data; + temp_r29 = (fn_1_4C0(&arg1->unk2, arg1->unk4) > 0) ? 2 : 1; + if (lbl_1_bss_18 == -1) { + if (arg1->unk2 & 0x1) { + temp_r28->unk24 += temp_r29; + temp_r28->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + if (arg1->unk2 & 0x2) { + temp_r27->unk24 += temp_r29; + temp_r27->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + if (arg1->unk2 & 0x4) { + temp_r26->unk24 += temp_r29; + temp_r26->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + if (arg1->unk2 & 0x8) { + temp_r25->unk24 += temp_r29; + temp_r25->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + } + for (temp_r23 = 0; temp_r23 < 2; temp_r23++) { + lbl_1_bss_100[lbl_1_bss_FC].unk0 = arg0->unk0; + lbl_1_bss_100[lbl_1_bss_FC].unk4.x = ((arg0->unk18 * 100) - 500.0) - 50.0; + lbl_1_bss_100[lbl_1_bss_FC].unk4.y = ((100.0f * arg0->unk1C.y) - 500.0f) + 50.0f; + lbl_1_bss_100[lbl_1_bss_FC].unk4.z = 120; + lbl_1_bss_100[lbl_1_bss_FC].unk10.x = ((rand8() / 255.0) * 24.0) - 12; + lbl_1_bss_100[lbl_1_bss_FC].unk10.y = (rand8() / 255.0) * 16.0; + lbl_1_bss_100[lbl_1_bss_FC].unk10.z = ((rand8() / 255.0) * 10.0) + 6; + lbl_1_bss_100[lbl_1_bss_FC].unk1C = rand8(); + lbl_1_bss_100[lbl_1_bss_FC].unk1D = rand8(); + lbl_1_bss_FC++; + lbl_1_bss_FC = (lbl_1_bss_FC >= 300) ? 0 : lbl_1_bss_FC; + } + } + arg0->unk0 = arg0->unk1 = arg0->unk2 = arg0->unk3 = 0; + arg0->unk48 = arg0->unk4C = NULL; + return temp_r29; } void fn_1_EC0(Work19C8 *arg0) { - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r26; - s32 temp_r27; - s32 temp_r25; - u8 temp_r24; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r26; + s32 temp_r27; + s32 temp_r25; + u8 temp_r24; - for(temp_r30=0; temp_r30<8; temp_r30++) { - for(temp_r29=0; temp_r29<2; temp_r29++) { - arg0->unk50[temp_r30][temp_r29] = 1; - } - } - for(temp_r30=1; temp_r30<4; temp_r30++) { - for(temp_r29=0; temp_r29<4;) { - temp_r26 = rand8()%8; - temp_r28 = rand8()%2; - if(arg0->unk50[temp_r26][temp_r28] == 1) { - arg0->unk50[temp_r26][temp_r28] = temp_r30+1; - temp_r29++; - } - } - } - for(temp_r30=0; temp_r30<8; temp_r30++) { - if(arg0->unk50[temp_r30][0] == arg0->unk50[temp_r30][1]) { - do { - temp_r29 = rand8()%8; - } while(temp_r30 == temp_r29 || arg0->unk50[temp_r30][0] == arg0->unk50[temp_r29][0] || arg0->unk50[temp_r30][0] == arg0->unk50[temp_r29][1]); - - temp_r27 = rand8()%2; - temp_r25 = arg0->unk50[temp_r30][0]; - temp_r24 = arg0->unk50[temp_r29][temp_r27]; - arg0->unk50[temp_r30][rand8()%2] = temp_r24; - arg0->unk50[temp_r29][temp_r27] = temp_r25; - } - } + for (temp_r30 = 0; temp_r30 < 8; temp_r30++) { + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + arg0->unk50[temp_r30][temp_r29] = 1; + } + } + for (temp_r30 = 1; temp_r30 < 4; temp_r30++) { + for (temp_r29 = 0; temp_r29 < 4;) { + temp_r26 = rand8() % 8; + temp_r28 = rand8() % 2; + if (arg0->unk50[temp_r26][temp_r28] == 1) { + arg0->unk50[temp_r26][temp_r28] = temp_r30 + 1; + temp_r29++; + } + } + } + for (temp_r30 = 0; temp_r30 < 8; temp_r30++) { + if (arg0->unk50[temp_r30][0] == arg0->unk50[temp_r30][1]) { + do { + temp_r29 = rand8() % 8; + } while ( + temp_r30 == temp_r29 || arg0->unk50[temp_r30][0] == arg0->unk50[temp_r29][0] || arg0->unk50[temp_r30][0] == arg0->unk50[temp_r29][1]); + + temp_r27 = rand8() % 2; + temp_r25 = arg0->unk50[temp_r30][0]; + temp_r24 = arg0->unk50[temp_r29][temp_r27]; + arg0->unk50[temp_r30][rand8() % 2] = temp_r24; + arg0->unk50[temp_r29][temp_r27] = temp_r25; + } + } } void fn_1_10B8(Work19C8 *arg0) { - s32 temp_r31; - s32 temp_r30; - u8 sp16C[12][17] = {}; - u8 sp6C[12] = {}; - s32 temp_r22 = (arg0->unk48[0]->unk18-4 < 0) ? 0 : (arg0->unk48[0]->unk18-4); - s32 temp_r21 = (arg0->unk48[0]->unk18+4 > 11) ? 11 : (arg0->unk48[0]->unk18+4); - s32 sp44[2] = {}; - s32 sp3C[2] = {}; - s32 sp34[2] = { 9, 9 }; - s32 temp_r20 = 0; - s32 temp_r19 = 0; - s32 temp_r18 = 0; - u8 sp8[2]; - sp44[0] = sp44[1] = temp_r22; - sp3C[0] = sp3C[1] = temp_r21; - sp34[0] = arg0->unk48[0]->unk1C.y-0.5; - sp34[1] = arg0->unk48[0]->unk1C.y-1.5; - sp34[1] = (sp34[1] < 0) ? 0 : sp34[1]; - sp8[0] = arg0->unk48[0]->unk0; - sp8[1] = arg0->unk48[1]->unk0; - for(temp_r31=temp_r22; temp_r31<=temp_r21; temp_r31++) { - StructBss2A6C *temp_r27; - s32 temp_r26; - for(temp_r27 = lbl_1_bss_7884[temp_r31], temp_r26=0; temp_r27; temp_r27=temp_r27->unk48) { - if(temp_r27->unk1 & 0x2) { - continue; - } - sp16C[temp_r31][temp_r26] = temp_r27->unk0; - temp_r26++; - } - sp6C[temp_r31] = temp_r26; - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(temp_r26 > sp34[temp_r30]) { - if(temp_r31 <= arg0->unk48[0]->unk18) { - sp44[temp_r30] = temp_r31+1; - } else { - sp3C[temp_r30] = temp_r31-1; - } - } - } - } - for(temp_r30=0; temp_r30<4; temp_r30++) { - for(temp_r31=sp44[temp_r30==2]; temp_r31<=sp3C[temp_r30==2]; temp_r31++) { - if(temp_r31 != sp44[temp_r30==2] || temp_r30 != 3) { - if(temp_r31 != sp3C[temp_r30==2]-1 || temp_r30 != 1) { - s32 temp_r25; - s32 spAC[4][12]; - for(temp_r25=0; temp_r25<2; temp_r25++) { - s32 sp5C[4] = { 0, 1, 0, -1 }; - s32 sp4C[4] = { 1, 0, -1, 0 }; - s32 temp_r29; - s32 temp_r28; - s32 temp_r24; - s32 temp_r23; - - spAC[temp_r30][temp_r31] = arg0->unk48[0]->unk18-temp_r31; - spAC[temp_r30][temp_r31] = (spAC[temp_r30][temp_r31] < 0) ? (-spAC[temp_r30][temp_r31]) : spAC[temp_r30][temp_r31]; - spAC[temp_r30][temp_r31] = (spAC[temp_r30][temp_r31] < 3) ? ((3-spAC[temp_r30][temp_r31])*(3-spAC[temp_r30][temp_r31])) : 0; - spAC[temp_r30][temp_r31] *= (arg0->unk20 == 0) ? 4 : ((arg0->unk20 == 1) ? 2 : 1); - temp_r24 = temp_r31+((temp_r25 == 1) ? sp5C[temp_r30] : 0); - for(temp_r28=temp_r24-2; temp_r28<=temp_r24+2; temp_r28++) { - temp_r23 = sp6C[temp_r24]+((temp_r25 == 1) ? sp4C[temp_r30] : 0); - for(temp_r29=temp_r23-2; temp_r29<=temp_r23+2; temp_r29++) { - if(temp_r28 < 0 || temp_r28 >= 12 || temp_r29 < 0 || temp_r29 >= 9) { - continue; - } - if(sp16C[temp_r28][temp_r29] != 5 && arg0->unk48[temp_r25]->unk0 == sp16C[temp_r28][temp_r29]) { - u8 sp91[5][5] = { - 0, 3, 0, 3, 0, - 2, 10, 24, 10, 2, - 10, 24, 0, 24, 10, - 2, 10, 24, 10, 2, - 0, 2, 10, 2, 0 - }; - spAC[temp_r30][temp_r31] += sp91[temp_r28-(temp_r24-2)][temp_r29-(temp_r23-2)]; - } - if(sp16C[temp_r28][temp_r29] == 5) { - u8 sp78[5][5] = { - 0, 0, 0, 0, 0, - 0, 40, 40, 40, 0, - 0, 40, 0, 40, 0, - 0, 40, 40, 40, 0, - 0, 0, 0, 0, 0 - }; - spAC[temp_r30][temp_r31] += sp78[temp_r28-(temp_r24-2)][temp_r29-(temp_r23-2)]/((arg0->unk20 == 0) ? 4 : 1); - } - } - } - } - if(spAC[temp_r30][temp_r31] > temp_r20) { - temp_r20 = spAC[temp_r30][temp_r31]; - temp_r18 = temp_r30; - temp_r19 = temp_r31; - } - } - } - } - } - arg0->unk7C = temp_r19; - arg0->unk80 = temp_r18; + s32 temp_r31; + s32 temp_r30; + u8 sp16C[12][17] = {}; + u8 sp6C[12] = {}; + s32 temp_r22 = (arg0->unk48[0]->unk18 - 4 < 0) ? 0 : (arg0->unk48[0]->unk18 - 4); + s32 temp_r21 = (arg0->unk48[0]->unk18 + 4 > 11) ? 11 : (arg0->unk48[0]->unk18 + 4); + s32 sp44[2] = {}; + s32 sp3C[2] = {}; + s32 sp34[2] = { 9, 9 }; + s32 temp_r20 = 0; + s32 temp_r19 = 0; + s32 temp_r18 = 0; + u8 sp8[2]; + sp44[0] = sp44[1] = temp_r22; + sp3C[0] = sp3C[1] = temp_r21; + sp34[0] = arg0->unk48[0]->unk1C.y - 0.5; + sp34[1] = arg0->unk48[0]->unk1C.y - 1.5; + sp34[1] = (sp34[1] < 0) ? 0 : sp34[1]; + sp8[0] = arg0->unk48[0]->unk0; + sp8[1] = arg0->unk48[1]->unk0; + for (temp_r31 = temp_r22; temp_r31 <= temp_r21; temp_r31++) { + StructBss2A6C *temp_r27; + s32 temp_r26; + for (temp_r27 = lbl_1_bss_7884[temp_r31], temp_r26 = 0; temp_r27; temp_r27 = temp_r27->unk48) { + if (temp_r27->unk1 & 0x2) { + continue; + } + sp16C[temp_r31][temp_r26] = temp_r27->unk0; + temp_r26++; + } + sp6C[temp_r31] = temp_r26; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (temp_r26 > sp34[temp_r30]) { + if (temp_r31 <= arg0->unk48[0]->unk18) { + sp44[temp_r30] = temp_r31 + 1; + } + else { + sp3C[temp_r30] = temp_r31 - 1; + } + } + } + } + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + for (temp_r31 = sp44[temp_r30 == 2]; temp_r31 <= sp3C[temp_r30 == 2]; temp_r31++) { + if (temp_r31 != sp44[temp_r30 == 2] || temp_r30 != 3) { + if (temp_r31 != sp3C[temp_r30 == 2] - 1 || temp_r30 != 1) { + s32 temp_r25; + s32 spAC[4][12]; + for (temp_r25 = 0; temp_r25 < 2; temp_r25++) { + s32 sp5C[4] = { 0, 1, 0, -1 }; + s32 sp4C[4] = { 1, 0, -1, 0 }; + s32 temp_r29; + s32 temp_r28; + s32 temp_r24; + s32 temp_r23; + + spAC[temp_r30][temp_r31] = arg0->unk48[0]->unk18 - temp_r31; + spAC[temp_r30][temp_r31] = (spAC[temp_r30][temp_r31] < 0) ? (-spAC[temp_r30][temp_r31]) : spAC[temp_r30][temp_r31]; + spAC[temp_r30][temp_r31] + = (spAC[temp_r30][temp_r31] < 3) ? ((3 - spAC[temp_r30][temp_r31]) * (3 - spAC[temp_r30][temp_r31])) : 0; + spAC[temp_r30][temp_r31] *= (arg0->unk20 == 0) ? 4 : ((arg0->unk20 == 1) ? 2 : 1); + temp_r24 = temp_r31 + ((temp_r25 == 1) ? sp5C[temp_r30] : 0); + for (temp_r28 = temp_r24 - 2; temp_r28 <= temp_r24 + 2; temp_r28++) { + temp_r23 = sp6C[temp_r24] + ((temp_r25 == 1) ? sp4C[temp_r30] : 0); + for (temp_r29 = temp_r23 - 2; temp_r29 <= temp_r23 + 2; temp_r29++) { + if (temp_r28 < 0 || temp_r28 >= 12 || temp_r29 < 0 || temp_r29 >= 9) { + continue; + } + if (sp16C[temp_r28][temp_r29] != 5 && arg0->unk48[temp_r25]->unk0 == sp16C[temp_r28][temp_r29]) { + u8 sp91[5][5] = { 0, 3, 0, 3, 0, 2, 10, 24, 10, 2, 10, 24, 0, 24, 10, 2, 10, 24, 10, 2, 0, 2, 10, 2, 0 }; + spAC[temp_r30][temp_r31] += sp91[temp_r28 - (temp_r24 - 2)][temp_r29 - (temp_r23 - 2)]; + } + if (sp16C[temp_r28][temp_r29] == 5) { + u8 sp78[5][5] = { 0, 0, 0, 0, 0, 0, 40, 40, 40, 0, 0, 40, 0, 40, 0, 0, 40, 40, 40, 0, 0, 0, 0, 0, 0 }; + spAC[temp_r30][temp_r31] + += sp78[temp_r28 - (temp_r24 - 2)][temp_r29 - (temp_r23 - 2)] / ((arg0->unk20 == 0) ? 4 : 1); + } + } + } + } + if (spAC[temp_r30][temp_r31] > temp_r20) { + temp_r20 = spAC[temp_r30][temp_r31]; + temp_r18 = temp_r30; + temp_r19 = temp_r31; + } + } + } + } + } + arg0->unk7C = temp_r19; + arg0->unk80 = temp_r18; } -void fn_1_19C4(omObjData *object) -{ - -} +void fn_1_19C4(omObjData *object) { } void fn_1_19C8(omObjData *object) { - Work19C8 *temp_r31; - s32 sp19C; - s32 spC4; - s32 spC0; - - temp_r31 = object->data; - temp_r31->unk28 = temp_r31->unk24; + Work19C8 *temp_r31; + s32 sp19C; + s32 spC4; + s32 spC0; - temp_r31->unk65[0] = (temp_r31->unk65[0] == 0 || temp_r31->unk65[0] >= 15) ? 0 : temp_r31->unk65[0]+1; - if(temp_r31->unk1C != -1) { - sp19C = (HuPadStkX[temp_r31->unk1C] > 26)-(HuPadStkX[temp_r31->unk1C] < -26); - } else { - sp19C = (temp_r31->unk72 == 1 && temp_r31->unk7C != -1) ? ((temp_r31->unk48[0]) ? ((temp_r31->unk7C < temp_r31->unk48[0]->unk18) ? -1 : (temp_r31->unk7C > temp_r31->unk48[0]->unk18) ? 1 : 0) : 0) : 0; - } - temp_r31->unk88 = ((temp_r31->unk72 == 1 && temp_r31->unk48[0]) && temp_r31->unk7C == temp_r31->unk48[0]->unk18) ? (temp_r31->unk88+1) : 0; - if(sp19C != temp_r31->unk0){ - temp_r31->unkC = (sp19C == 0) ? 0 : 1; - } else { - temp_r31->unkC = (temp_r31->unk0 != 0) ? temp_r31->unkC+1 : 0; - } - temp_r31->unkC = (temp_r31->unkC >= 17) ? 14 : temp_r31->unkC; - temp_r31->unk0 = sp19C; - if(temp_r31->unk72 == 2) { - float temp_f30; - float temp_f24; - s32 temp_r25; - s32 temp_r23; - s32 temp_r22; - StructBss2A6C *sp198; - - for(temp_r23=0; temp_r23<3; temp_r23++) { - s32 sp24C[3] = { 1, 2, 0 }; - temp_r22 = (temp_r31->unk10*3)+((temp_r31->unk10 < 2) ? sp24C[temp_r23] : (2-sp24C[temp_r23])); - if(fn_1_57C_inline(temp_r22, 9.5f, NULL, NULL) == 0) { - if(fn_1_57C_inline(temp_r22, 8.5f, NULL, NULL) == 0) { - break; - } - } - } - temp_r22 = (temp_r23 == 3) ? ((temp_r31->unk10*3)+1) : temp_r22; - temp_f30 = (temp_r22*100)-490; - temp_r31->unkA0 = (temp_r31->unk74 == 0) ? temp_f30 : ((temp_r31->unkA0-10 > temp_f30) ? (temp_r31->unkA0-10) : (((temp_r31->unkA0 > temp_f30) ? temp_f30 : ((temp_r31->unkA0+10 < temp_f30) ? (temp_r31->unkA0+10) : ((temp_r31->unkA0 < temp_f30) ? temp_f30 : temp_r31->unkA0))))); - temp_r31->unk74++; - temp_f30 = temp_r31->unk74/24.0f; - temp_f30 = (temp_f30 > 1.0f) ? 1.0f : temp_f30; - temp_f30 = (0.5*sind((temp_f30*180.0f)+270.0f))+0.5; - temp_f24 = 1.0f-temp_f30; - if(lbl_1_bss_18 == -1) { - Vec sp240; - Vec sp234; - sp240.x = (temp_r31->unkA0*temp_f30)+(temp_r31->unk98*temp_f24); - sp240.y = (425.0f*temp_f30)+(temp_r31->unk9C*temp_f24); - sp240.z = 55; - Hu3D3Dto2D(&sp240, 1, &sp234); - HuSprPosSet(temp_r31->unkA4, 0, sp234.x, sp234.y); - } - if(lbl_1_bss_44->work[0] == 1002 && temp_r31->unk74 >= 24) { - for(temp_r23=0; temp_r23<3; temp_r23++) { - s32 sp228[3] = { 1, 2, 0 }; - temp_r22 = (temp_r31->unk10*3)+((temp_r31->unk10 < 2) ? sp228[temp_r23] : (2-sp228[temp_r23])); - if(fn_1_57C_inline(temp_r22, 9.5f, NULL, NULL) == 0) { - if(fn_1_57C_inline(temp_r22, 8.5f, NULL, NULL) == 0) { - break; - } - } - } - if(temp_r23 != 3) { - for(sp198 = lbl_1_bss_7884[temp_r22]; sp198 && sp198->unk48; sp198 = sp198->unk48); - for(temp_r23=0; temp_r23<2; temp_r23++) { - temp_r25 = (lbl_1_bss_0+1)%238; - while(temp_r25 != lbl_1_bss_0) { - if(lbl_1_bss_2A6C[temp_r25].unk0 == 0) { - break; - } - temp_r25++; - temp_r25 = temp_r25%238; - if(temp_r25 == 0) { - OSReport("looped.\n"); - } - } - if(temp_r25 == lbl_1_bss_0) { - OSReport("m413:error:block empty.\n"); - } - lbl_1_bss_0 = temp_r25; - temp_r31->unk48[temp_r23] = &lbl_1_bss_2A6C[temp_r25]; - lbl_1_bss_2A6C[temp_r25].unk0 = temp_r31->unk50[temp_r31->unk60][temp_r23]; - lbl_1_bss_2A6C[temp_r25].unk1 = 2; - lbl_1_bss_2A6C[temp_r25].unk3 = 1 << temp_r31->unk10; - lbl_1_bss_2A6C[temp_r25].unk2 = temp_r31->unk10; - lbl_1_bss_2A6C[temp_r25].unk18 = temp_r22; - lbl_1_bss_2A6C[temp_r25].unk1C.x = temp_r22; - lbl_1_bss_2A6C[temp_r25].unk1C.y = temp_r23+8.9375f; - lbl_1_bss_2A6C[temp_r25].unk1C.z = 0; - lbl_1_bss_2A6C[temp_r25].unk8[0] = lbl_1_bss_2A6C[temp_r25].unk8[1] = lbl_1_bss_2A6C[temp_r25].unk8[2] = lbl_1_bss_2A6C[temp_r25].unk8[3] = 0; - lbl_1_bss_2A6C[temp_r25].unk2C = 0; - lbl_1_bss_2A6C[temp_r25].unk30 = 0; - lbl_1_bss_2A6C[temp_r25].unk34 = 0; - lbl_1_bss_2A6C[temp_r25].unk50 = temp_r31; - } - temp_r31->unk48[1]->unk48 = NULL; - temp_r31->unk48[1]->unk4C = temp_r31->unk48[0]; - temp_r31->unk48[0]->unk48 = temp_r31->unk48[1]; - temp_r31->unk48[0]->unk4C = sp198; - if(!sp198) { - lbl_1_bss_7884[temp_r31->unk48[0]->unk18] = temp_r31->unk48[0]; - } else { - temp_r31->unk48[0]->unk4C->unk48 = temp_r31->unk48[0]; - } - temp_r31->unk60++; - if(temp_r31->unk60 >= 8) { - fn_1_EC0(temp_r31); - temp_r31->unk60 = 0; - } - temp_r31->unk63[0] = temp_r31->unk48[0]->unk0; - temp_r31->unk63[1] = temp_r31->unk48[1]->unk0; - temp_r31->unk65[0] = 1; - if(((temp_r31->unk68+5)/7) != ((temp_r31->unk6C+5)/7)) { - if(((temp_r31->unk68+5)/7)%4 == 2) { - temp_r31->unk50[temp_r31->unk60][0] = 5; - temp_r31->unk50[temp_r31->unk60][1] = 5; - } else { - temp_r31->unk50[temp_r31->unk60][rand8()%2] = 5; - } - } - temp_r31->unk6C = temp_r31->unk68; - temp_r31->unk72 = 1; - temp_r31->unk74 = 0; - temp_r31->unk71 = 20; - temp_r31->unk70 = 0; - temp_r31->unk7C = -1; - temp_r31->unk80 = -1; - if(temp_r31->unk1C == -1) { - temp_r31->unk84 = 0; - temp_r31->unk88 = 0; - temp_r31->unk8C = temp_r31->unk48[0]->unk18; - temp_r31->unk90 = 0; - } - temp_r31->unk78 = 0; - temp_r31->unk79 = 0; - HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_DISPOFF); - HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); - { - s32 sp258[12] = {}; - s32 sp194; - for(sp194=0; sp194<3; sp194++) { - StructBss2A6C *sp190; - for(sp190 = lbl_1_bss_7884[sp194+(temp_r31->unk10*3)]; sp190; sp190 = sp190->unk48) { - - sp258[sp194] += (sp190 && sp190->unk0 && (sp190->unk1 & 0x2) == 0 && sp258[sp194] < 9); - } - } - Hu3DModelRotSet(object->model[4], 0, ((sp258[0]+sp258[1]+sp258[2] >= 22) ? -90 : 0), 0); - } - } else { - s32 sp21C[3]; - s32 sp18C; - for(sp18C=0; sp18C<3; sp18C++) { - s32 sp188; - StructBss2A6C *sp184; - for(sp184 = lbl_1_bss_7884[sp18C+(temp_r31->unk10*3)], sp188=0; sp188<9; sp184 = sp184->unk48, sp188++) { - if(!sp184 || sp184->unk1 != 1) { - break; - } - } - sp21C[sp18C] = sp188; - } - if(sp21C[0] >= 9 && sp21C[1] >= 9 && sp21C[2] >= 9) { - temp_r31->unk78 += temp_r31->unk78 < 255; - Hu3DModelRotSet(object->model[4], 0, -90, 0); - temp_r31->unk79 = 1; - } else { - temp_r31->unk79 = 0; - } - } - } - - } else if(temp_r31->unk72 == 1) { - if(!temp_r31->unk48[0] || !temp_r31->unk48[1]) { - temp_r31->unk72 = 2; - temp_r31->unk74 = 0; - HuSprAttrSet(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); - } else { - s32 temp_r26; - s32 sp180; + temp_r31 = object->data; + temp_r31->unk28 = temp_r31->unk24; - sp180 = (temp_r31->unkC == 1 || temp_r31->unkC == 14) ? temp_r31->unk0 : 0; - temp_r26 = temp_r31->unk70; - if(temp_r31->unk1C != -1) { - temp_r26 = (HuPadBtnDown[temp_r31->unk1C] & (PAD_BUTTON_X|PAD_BUTTON_Y)) ? (temp_r31->unk70+2) : (temp_r31->unk70+((HuPadBtnDown[temp_r31->unk1C] & PAD_BUTTON_A) ? 1 : 0) + ((HuPadBtnDown[temp_r31->unk1C] & PAD_BUTTON_B) ? -1 : 0)); - } else { - if(temp_r31->unk80 != -1 && temp_r31->unk80 != temp_r31->unk70 && temp_r31->unk84 > 5) { - temp_r26 = temp_r31->unk80; - temp_r31->unk84 = 0; - } else { - temp_r31->unk84++; - } - } - temp_r26 = (temp_r26 >= 4) ? (temp_r26-4) : ((temp_r26 < 0) ? (temp_r26+4) : temp_r26); - temp_r31->unk74++; - if(temp_r31->unk1C == -1) { - s32 sp20C[4] = { 120, 50, 25, 2 }; - s32 sp200[3] = { 60, 45, 25 }; - temp_r31->unk90 = (temp_r31->unk8C == temp_r31->unk48[0]->unk18 && temp_r31->unk8C != temp_r31->unk7C) ? (temp_r31->unk90+1) : 0; - temp_r31->unk8C = temp_r31->unk48[0]->unk18; - if(temp_r31->unk7C == -1 && temp_r31->unk90 >= sp20C[temp_r31->unk20] || (temp_r31->unk20 >= 1 && (temp_r31->unk90 >= sp200[temp_r31->unk20-1]))) { - s32 sp1F0[4] = { 30, 30, 20, 10 }; - fn_1_10B8(temp_r31); - temp_r31->unk84 = 0; - temp_r31->unk88 = 0; - temp_r31->unk94 = (rand8()%sp1F0[temp_r31->unk20])-(sp1F0[temp_r31->unk20]/2); - } - } - if(lbl_1_bss_18 == -1) { - if(temp_r31->unk1C != -1) { - temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = -0.03125f+((HuPadStkY[temp_r31->unk1C] < -36) ? (-0.26875f*((-HuPadStkY[temp_r31->unk1C]-36)/36.0f)) : 0); - temp_r31->unk4 = (HuPadStkY[temp_r31->unk1C] < -36) ? 1 : 0; - } else { - s32 sp1E4[3] = { 50, 30, 25 }; - s32 sp1D8[3] = { 90, 80, 70 }; + temp_r31->unk65[0] = (temp_r31->unk65[0] == 0 || temp_r31->unk65[0] >= 15) ? 0 : temp_r31->unk65[0] + 1; + if (temp_r31->unk1C != -1) { + sp19C = (HuPadStkX[temp_r31->unk1C] > 26) - (HuPadStkX[temp_r31->unk1C] < -26); + } + else { + sp19C = (temp_r31->unk72 == 1 && temp_r31->unk7C != -1) ? ((temp_r31->unk48[0]) ? ((temp_r31->unk7C < temp_r31->unk48[0]->unk18) ? -1 + : (temp_r31->unk7C > temp_r31->unk48[0]->unk18) ? 1 + : 0) + : 0) + : 0; + } + temp_r31->unk88 = ((temp_r31->unk72 == 1 && temp_r31->unk48[0]) && temp_r31->unk7C == temp_r31->unk48[0]->unk18) ? (temp_r31->unk88 + 1) : 0; + if (sp19C != temp_r31->unk0) { + temp_r31->unkC = (sp19C == 0) ? 0 : 1; + } + else { + temp_r31->unkC = (temp_r31->unk0 != 0) ? temp_r31->unkC + 1 : 0; + } + temp_r31->unkC = (temp_r31->unkC >= 17) ? 14 : temp_r31->unkC; + temp_r31->unk0 = sp19C; + if (temp_r31->unk72 == 2) { + float temp_f30; + float temp_f24; + s32 temp_r25; + s32 temp_r23; + s32 temp_r22; + StructBss2A6C *sp198; - temp_r31->unk4 = ((temp_r31->unk20 && (temp_r31->unk88 > temp_r31->unk94+sp1E4[temp_r31->unk20-1] || temp_r31->unk90 > sp1D8[temp_r31->unk20-1]))) ? 1 : 0; - temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = -0.03125f+(temp_r31->unk4 ? -0.26875f : 0.0f); - } - } else { - temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = 0; - } - if(lbl_1_bss_18 == -1 && sp180) { - if(fn_1_57C_inline(temp_r31->unk48[0]->unk18_u+sp180, temp_r31->unk48[0]->unk1C.y, temp_r31->unk48[0], NULL) == 0) { - if(fn_1_57C_inline(temp_r31->unk48[1]->unk18_u+sp180, temp_r31->unk48[1]->unk1C.y, temp_r31->unk48[1], NULL) == 0) { - float sp17C = temp_r31->unk48[0]->unk18; - float sp178 = temp_r31->unk48[1]->unk18; - fn_1_6D0(temp_r31->unk48[0]->unk18_u+sp180, temp_r31->unk48[0]->unk1C.y, temp_r31->unk48[0]); - fn_1_6D0(temp_r31->unk48[1]->unk18_u+sp180, temp_r31->unk48[1]->unk1C.y, temp_r31->unk48[1]); - temp_r31->unk48[0]->unk1C.x = (sp17C*0.5)+(0.5*temp_r31->unk48[0]->unk18); - temp_r31->unk48[1]->unk1C.x = (sp178*0.5)+(0.5*temp_r31->unk48[1]->unk18); - } - } - } - if(lbl_1_bss_18 != -1) { - temp_r26 = temp_r31->unk70; - } - if(temp_r26 != temp_r31->unk70) { - StructBss2A6C *temp_r29 = temp_r31->unk48[0]; - StructBss2A6C *temp_r30 = temp_r31->unk48[1]; - s32 sp174 = temp_r29->unk18; - float temp_f25 = temp_r29->unk1C.y; - s32 sp1C8[4] = { 0, 1, 0, -1 }; - s32 sp1B8[4] = { 1, 0, -1, 0 }; - StructBss2A6C *sp170; - if(fn_1_57C_inline(sp174+sp1C8[temp_r26], temp_f25+sp1B8[temp_r26], temp_r30, &sp170) == 0) { - if(temp_r31->unk70 != temp_r26) { - temp_r30->unk5 = 1; - temp_r30->unk4 = (((((temp_r26-temp_r31->unk70)+8)%4)-1)*4)+temp_r31->unk70+1; - } - temp_r31->unk70 = temp_r26; - fn_1_6D0(sp174+sp1C8[temp_r26], temp_f25+sp1B8[temp_r26], temp_r30); - temp_r30->unk1C.x = temp_r30->unk18; - } else { - float temp_f31; - s32 temp_r24; - if(temp_r26%2 == 0) { - s32 sp16C = (temp_r26 == 2) ? 1 : 0; - temp_f31 = temp_f25+((sp16C == 1) ? sp1B8[temp_r26] : sp1B8[temp_r26]); - fn_1_57C_inline(sp174, temp_f31, (sp16C == 0) ? temp_r30 : temp_r30, &sp170); - if(temp_r26 == 2) { - if(!sp170 || sp170->unk1C.y <= temp_f31) { - temp_f31 = ((sp16C == 1) ? 1.0f : 0.0f)+((sp170) ? sp170->unk1C.y+1.0f : 0.0f); - temp_r24 = sp174; - } else { - temp_f31 = (sp170->unk1C.y-1.0f)-(sp16C==0); - temp_r24 = sp174; - } - } else { - if(sp170->unk1C.y >= temp_f31) { - temp_f31 = ((sp16C == 1) ? 1.0f : 0.0f)+((sp170) ? sp170->unk1C.y-2.0f : 0.0f); - temp_r24 = sp174; - } else { - temp_f31 = (sp170->unk1C.y-1.0f)-(sp16C==0); - temp_r24 = sp174; - } - } - } else { - temp_r24 = sp174-sp1C8[temp_r26]; - temp_f31 = temp_f25; - } - if(fn_1_57C_inline(temp_r24, temp_f31, temp_r29, NULL) == 0) { - if(fn_1_57C_inline(temp_r24+sp1C8[temp_r26], temp_f31+sp1B8[temp_r26], temp_r30, NULL) == 0) { - float sp168 = temp_r31->unk48[0]->unk18; - float sp164 = temp_r31->unk48[1]->unk18; - if(temp_r31->unk70 != temp_r26) { - temp_r30->unk5 = 1; - temp_r30->unk4 = (((((temp_r26-temp_r31->unk70)+8)%4)-1)*4)+temp_r31->unk70+1; - } + for (temp_r23 = 0; temp_r23 < 3; temp_r23++) { + s32 sp24C[3] = { 1, 2, 0 }; + temp_r22 = (temp_r31->unk10 * 3) + ((temp_r31->unk10 < 2) ? sp24C[temp_r23] : (2 - sp24C[temp_r23])); + if (fn_1_57C_inline(temp_r22, 9.5f, NULL, NULL) == 0) { + if (fn_1_57C_inline(temp_r22, 8.5f, NULL, NULL) == 0) { + break; + } + } + } + temp_r22 = (temp_r23 == 3) ? ((temp_r31->unk10 * 3) + 1) : temp_r22; + temp_f30 = (temp_r22 * 100) - 490; + temp_r31->unkA0 = (temp_r31->unk74 == 0) + ? temp_f30 + : ((temp_r31->unkA0 - 10 > temp_f30) + ? (temp_r31->unkA0 - 10) + : (((temp_r31->unkA0 > temp_f30) + ? temp_f30 + : ((temp_r31->unkA0 + 10 < temp_f30) ? (temp_r31->unkA0 + 10) + : ((temp_r31->unkA0 < temp_f30) ? temp_f30 : temp_r31->unkA0))))); + temp_r31->unk74++; + temp_f30 = temp_r31->unk74 / 24.0f; + temp_f30 = (temp_f30 > 1.0f) ? 1.0f : temp_f30; + temp_f30 = (0.5 * sind((temp_f30 * 180.0f) + 270.0f)) + 0.5; + temp_f24 = 1.0f - temp_f30; + if (lbl_1_bss_18 == -1) { + Vec sp240; + Vec sp234; + sp240.x = (temp_r31->unkA0 * temp_f30) + (temp_r31->unk98 * temp_f24); + sp240.y = (425.0f * temp_f30) + (temp_r31->unk9C * temp_f24); + sp240.z = 55; + Hu3D3Dto2D(&sp240, 1, &sp234); + HuSprPosSet(temp_r31->unkA4, 0, sp234.x, sp234.y); + } + if (lbl_1_bss_44->work[0] == 1002 && temp_r31->unk74 >= 24) { + for (temp_r23 = 0; temp_r23 < 3; temp_r23++) { + s32 sp228[3] = { 1, 2, 0 }; + temp_r22 = (temp_r31->unk10 * 3) + ((temp_r31->unk10 < 2) ? sp228[temp_r23] : (2 - sp228[temp_r23])); + if (fn_1_57C_inline(temp_r22, 9.5f, NULL, NULL) == 0) { + if (fn_1_57C_inline(temp_r22, 8.5f, NULL, NULL) == 0) { + break; + } + } + } + if (temp_r23 != 3) { + for (sp198 = lbl_1_bss_7884[temp_r22]; sp198 && sp198->unk48; sp198 = sp198->unk48) + ; + for (temp_r23 = 0; temp_r23 < 2; temp_r23++) { + temp_r25 = (lbl_1_bss_0 + 1) % 238; + while (temp_r25 != lbl_1_bss_0) { + if (lbl_1_bss_2A6C[temp_r25].unk0 == 0) { + break; + } + temp_r25++; + temp_r25 = temp_r25 % 238; + if (temp_r25 == 0) { + OSReport("looped.\n"); + } + } + if (temp_r25 == lbl_1_bss_0) { + OSReport("m413:error:block empty.\n"); + } + lbl_1_bss_0 = temp_r25; + temp_r31->unk48[temp_r23] = &lbl_1_bss_2A6C[temp_r25]; + lbl_1_bss_2A6C[temp_r25].unk0 = temp_r31->unk50[temp_r31->unk60][temp_r23]; + lbl_1_bss_2A6C[temp_r25].unk1 = 2; + lbl_1_bss_2A6C[temp_r25].unk3 = 1 << temp_r31->unk10; + lbl_1_bss_2A6C[temp_r25].unk2 = temp_r31->unk10; + lbl_1_bss_2A6C[temp_r25].unk18 = temp_r22; + lbl_1_bss_2A6C[temp_r25].unk1C.x = temp_r22; + lbl_1_bss_2A6C[temp_r25].unk1C.y = temp_r23 + 8.9375f; + lbl_1_bss_2A6C[temp_r25].unk1C.z = 0; + lbl_1_bss_2A6C[temp_r25].unk8[0] = lbl_1_bss_2A6C[temp_r25].unk8[1] = lbl_1_bss_2A6C[temp_r25].unk8[2] + = lbl_1_bss_2A6C[temp_r25].unk8[3] = 0; + lbl_1_bss_2A6C[temp_r25].unk2C = 0; + lbl_1_bss_2A6C[temp_r25].unk30 = 0; + lbl_1_bss_2A6C[temp_r25].unk34 = 0; + lbl_1_bss_2A6C[temp_r25].unk50 = temp_r31; + } + temp_r31->unk48[1]->unk48 = NULL; + temp_r31->unk48[1]->unk4C = temp_r31->unk48[0]; + temp_r31->unk48[0]->unk48 = temp_r31->unk48[1]; + temp_r31->unk48[0]->unk4C = sp198; + if (!sp198) { + lbl_1_bss_7884[temp_r31->unk48[0]->unk18] = temp_r31->unk48[0]; + } + else { + temp_r31->unk48[0]->unk4C->unk48 = temp_r31->unk48[0]; + } + temp_r31->unk60++; + if (temp_r31->unk60 >= 8) { + fn_1_EC0(temp_r31); + temp_r31->unk60 = 0; + } + temp_r31->unk63[0] = temp_r31->unk48[0]->unk0; + temp_r31->unk63[1] = temp_r31->unk48[1]->unk0; + temp_r31->unk65[0] = 1; + if (((temp_r31->unk68 + 5) / 7) != ((temp_r31->unk6C + 5) / 7)) { + if (((temp_r31->unk68 + 5) / 7) % 4 == 2) { + temp_r31->unk50[temp_r31->unk60][0] = 5; + temp_r31->unk50[temp_r31->unk60][1] = 5; + } + else { + temp_r31->unk50[temp_r31->unk60][rand8() % 2] = 5; + } + } + temp_r31->unk6C = temp_r31->unk68; + temp_r31->unk72 = 1; + temp_r31->unk74 = 0; + temp_r31->unk71 = 20; + temp_r31->unk70 = 0; + temp_r31->unk7C = -1; + temp_r31->unk80 = -1; + if (temp_r31->unk1C == -1) { + temp_r31->unk84 = 0; + temp_r31->unk88 = 0; + temp_r31->unk8C = temp_r31->unk48[0]->unk18; + temp_r31->unk90 = 0; + } + temp_r31->unk78 = 0; + temp_r31->unk79 = 0; + HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); + { + s32 sp258[12] = {}; + s32 sp194; + for (sp194 = 0; sp194 < 3; sp194++) { + StructBss2A6C *sp190; + for (sp190 = lbl_1_bss_7884[sp194 + (temp_r31->unk10 * 3)]; sp190; sp190 = sp190->unk48) { + + sp258[sp194] += (sp190 && sp190->unk0 && (sp190->unk1 & 0x2) == 0 && sp258[sp194] < 9); + } + } + Hu3DModelRotSet(object->model[4], 0, ((sp258[0] + sp258[1] + sp258[2] >= 22) ? -90 : 0), 0); + } + } + else { + s32 sp21C[3]; + s32 sp18C; + for (sp18C = 0; sp18C < 3; sp18C++) { + s32 sp188; + StructBss2A6C *sp184; + for (sp184 = lbl_1_bss_7884[sp18C + (temp_r31->unk10 * 3)], sp188 = 0; sp188 < 9; sp184 = sp184->unk48, sp188++) { + if (!sp184 || sp184->unk1 != 1) { + break; + } + } + sp21C[sp18C] = sp188; + } + if (sp21C[0] >= 9 && sp21C[1] >= 9 && sp21C[2] >= 9) { + temp_r31->unk78 += temp_r31->unk78 < 255; + Hu3DModelRotSet(object->model[4], 0, -90, 0); + temp_r31->unk79 = 1; + } + else { + temp_r31->unk79 = 0; + } + } + } + } + else if (temp_r31->unk72 == 1) { + if (!temp_r31->unk48[0] || !temp_r31->unk48[1]) { + temp_r31->unk72 = 2; + temp_r31->unk74 = 0; + HuSprAttrSet(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); + } + else { + s32 temp_r26; + s32 sp180; + + sp180 = (temp_r31->unkC == 1 || temp_r31->unkC == 14) ? temp_r31->unk0 : 0; + temp_r26 = temp_r31->unk70; + if (temp_r31->unk1C != -1) { + temp_r26 = (HuPadBtnDown[temp_r31->unk1C] & (PAD_BUTTON_X | PAD_BUTTON_Y)) + ? (temp_r31->unk70 + 2) + : (temp_r31->unk70 + ((HuPadBtnDown[temp_r31->unk1C] & PAD_BUTTON_A) ? 1 : 0) + + ((HuPadBtnDown[temp_r31->unk1C] & PAD_BUTTON_B) ? -1 : 0)); + } + else { + if (temp_r31->unk80 != -1 && temp_r31->unk80 != temp_r31->unk70 && temp_r31->unk84 > 5) { + temp_r26 = temp_r31->unk80; + temp_r31->unk84 = 0; + } + else { + temp_r31->unk84++; + } + } + temp_r26 = (temp_r26 >= 4) ? (temp_r26 - 4) : ((temp_r26 < 0) ? (temp_r26 + 4) : temp_r26); + temp_r31->unk74++; + if (temp_r31->unk1C == -1) { + s32 sp20C[4] = { 120, 60, 25, 2 }; + s32 sp200[3] = { 60, 45, 25 }; + temp_r31->unk90 = (temp_r31->unk8C == temp_r31->unk48[0]->unk18 && temp_r31->unk8C != temp_r31->unk7C) ? (temp_r31->unk90 + 1) : 0; + temp_r31->unk8C = temp_r31->unk48[0]->unk18; + if (temp_r31->unk7C == -1 && temp_r31->unk90 >= sp20C[temp_r31->unk20] + || (temp_r31->unk20 >= 1 && (temp_r31->unk90 >= sp200[temp_r31->unk20 - 1]))) { + s32 sp1F0[4] = { 30, 30, 20, 10 }; + fn_1_10B8(temp_r31); + temp_r31->unk84 = 0; + temp_r31->unk88 = 0; + temp_r31->unk94 = (rand8() % sp1F0[temp_r31->unk20]) - (sp1F0[temp_r31->unk20] / 2); + } + } + if (lbl_1_bss_18 == -1) { + if (temp_r31->unk1C != -1) { + temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z + = -0.03125f + ((HuPadStkY[temp_r31->unk1C] < -36) ? (-0.26875f * ((-HuPadStkY[temp_r31->unk1C] - 36) / 36.0f)) : 0); + temp_r31->unk4 = (HuPadStkY[temp_r31->unk1C] < -36) ? 1 : 0; + } + else { + s32 sp1E4[3] = { 50, 30, 25 }; + s32 sp1D8[3] = { 90, 80, 70 }; + + temp_r31->unk4 + = ((temp_r31->unk20 + && (temp_r31->unk88 > temp_r31->unk94 + sp1E4[temp_r31->unk20 - 1] || temp_r31->unk90 > sp1D8[temp_r31->unk20 - 1]))) + ? 1 + : 0; + temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = -0.03125f + (temp_r31->unk4 ? -0.26875f : 0.0f); + } + } + else { + temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = 0; + } + if (lbl_1_bss_18 == -1 && sp180) { + if (fn_1_57C_inline(temp_r31->unk48[0]->unk18_u + sp180, temp_r31->unk48[0]->unk1C.y, temp_r31->unk48[0], NULL) == 0) { + if (fn_1_57C_inline(temp_r31->unk48[1]->unk18_u + sp180, temp_r31->unk48[1]->unk1C.y, temp_r31->unk48[1], NULL) == 0) { + float sp17C = temp_r31->unk48[0]->unk18; + float sp178 = temp_r31->unk48[1]->unk18; + fn_1_6D0(temp_r31->unk48[0]->unk18_u + sp180, temp_r31->unk48[0]->unk1C.y, temp_r31->unk48[0]); + fn_1_6D0(temp_r31->unk48[1]->unk18_u + sp180, temp_r31->unk48[1]->unk1C.y, temp_r31->unk48[1]); + temp_r31->unk48[0]->unk1C.x = (sp17C * 0.5) + (0.5 * temp_r31->unk48[0]->unk18); + temp_r31->unk48[1]->unk1C.x = (sp178 * 0.5) + (0.5 * temp_r31->unk48[1]->unk18); + } + } + } + if (lbl_1_bss_18 != -1) { + temp_r26 = temp_r31->unk70; + } + if (temp_r26 != temp_r31->unk70) { + StructBss2A6C *temp_r29 = temp_r31->unk48[0]; + StructBss2A6C *temp_r30 = temp_r31->unk48[1]; + s32 sp174 = temp_r29->unk18; + float temp_f25 = temp_r29->unk1C.y; + s32 sp1C8[4] = { 0, 1, 0, -1 }; + s32 sp1B8[4] = { 1, 0, -1, 0 }; + StructBss2A6C *sp170; + if (fn_1_57C_inline(sp174 + sp1C8[temp_r26], temp_f25 + sp1B8[temp_r26], temp_r30, &sp170) == 0) { + if (temp_r31->unk70 != temp_r26) { + temp_r30->unk5 = 1; + temp_r30->unk4 = (((((temp_r26 - temp_r31->unk70) + 8) % 4) - 1) * 4) + temp_r31->unk70 + 1; + } + temp_r31->unk70 = temp_r26; + fn_1_6D0(sp174 + sp1C8[temp_r26], temp_f25 + sp1B8[temp_r26], temp_r30); + temp_r30->unk1C.x = temp_r30->unk18; + } + else { + float temp_f31; + s32 temp_r24; + if (temp_r26 % 2 == 0) { + s32 sp16C = (temp_r26 == 2) ? 1 : 0; + temp_f31 = temp_f25 + ((sp16C == 1) ? sp1B8[temp_r26] : sp1B8[temp_r26]); + fn_1_57C_inline(sp174, temp_f31, (sp16C == 0) ? temp_r30 : temp_r30, &sp170); + if (temp_r26 == 2) { + if (!sp170 || sp170->unk1C.y <= temp_f31) { + temp_f31 = ((sp16C == 1) ? 1.0f : 0.0f) + ((sp170) ? sp170->unk1C.y + 1.0f : 0.0f); + temp_r24 = sp174; + } + else { + temp_f31 = (sp170->unk1C.y - 1.0f) - (sp16C == 0); + temp_r24 = sp174; + } + } + else { + if (sp170->unk1C.y >= temp_f31) { + temp_f31 = ((sp16C == 1) ? 1.0f : 0.0f) + ((sp170) ? sp170->unk1C.y - 2.0f : 0.0f); + temp_r24 = sp174; + } + else { + temp_f31 = (sp170->unk1C.y - 1.0f) - (sp16C == 0); + temp_r24 = sp174; + } + } + } + else { + temp_r24 = sp174 - sp1C8[temp_r26]; + temp_f31 = temp_f25; + } + if (fn_1_57C_inline(temp_r24, temp_f31, temp_r29, NULL) == 0) { + if (fn_1_57C_inline(temp_r24 + sp1C8[temp_r26], temp_f31 + sp1B8[temp_r26], temp_r30, NULL) == 0) { + float sp168 = temp_r31->unk48[0]->unk18; + float sp164 = temp_r31->unk48[1]->unk18; + if (temp_r31->unk70 != temp_r26) { + temp_r30->unk5 = 1; + temp_r30->unk4 = (((((temp_r26 - temp_r31->unk70) + 8) % 4) - 1) * 4) + temp_r31->unk70 + 1; + } temp_r31->unk70 = temp_r26; - if(temp_r26 == 2) { - fn_1_6D0(temp_r24, temp_f31+(0.5*(float)sp1B8[temp_r26]), temp_r29); - fn_1_6D0(temp_r24+sp1C8[temp_r26], temp_f31+sp1B8[temp_r26], temp_r30); - fn_1_6D0(temp_r24, temp_f31, temp_r29); - } else { - fn_1_6D0(temp_r24, temp_f31, temp_r29); - fn_1_6D0(temp_r24+sp1C8[temp_r26], temp_f31+sp1B8[temp_r26], temp_r30); - - } - temp_r31->unk48[0]->unk1C.x = (sp168*0.5)+(0.5*temp_r31->unk48[0]->unk18); - temp_r31->unk48[1]->unk1C.x = (sp164*0.5)+(0.5*temp_r31->unk48[1]->unk18); - } - } - - } - } - } - if(temp_r31->unk48[0]) { - temp_r31->unk98 = 10.0+((100.0*((temp_r31->unk48[0]->unk18+temp_r31->unk48[0]->unk1C.x)/2.0))-500); - temp_r31->unk9C = 25.0f+((100.0f*temp_r31->unk48[0]->unk1C.y)-500.0f); - } - if(lbl_1_bss_18 == -1) { - Vec sp1AC; - Vec sp1A0; - sp1AC.x = temp_r31->unk98; - sp1AC.y = temp_r31->unk9C; - sp1AC.z = 55; - Hu3D3Dto2D(&sp1AC, 1, &sp1A0); - HuSprPosSet(temp_r31->unkA4, 0, sp1A0.x, sp1A0.y); - } - } + if (temp_r26 == 2) { + fn_1_6D0(temp_r24, temp_f31 + (0.5 * (float)sp1B8[temp_r26]), temp_r29); + fn_1_6D0(temp_r24 + sp1C8[temp_r26], temp_f31 + sp1B8[temp_r26], temp_r30); + fn_1_6D0(temp_r24, temp_f31, temp_r29); + } + else { + fn_1_6D0(temp_r24, temp_f31, temp_r29); + fn_1_6D0(temp_r24 + sp1C8[temp_r26], temp_f31 + sp1B8[temp_r26], temp_r30); + } + temp_r31->unk48[0]->unk1C.x = (sp168 * 0.5) + (0.5 * temp_r31->unk48[0]->unk18); + temp_r31->unk48[1]->unk1C.x = (sp164 * 0.5) + (0.5 * temp_r31->unk48[1]->unk18); + } + } + } + } + } + if (temp_r31->unk48[0]) { + temp_r31->unk98 = 10.0 + ((100.0 * ((temp_r31->unk48[0]->unk18 + temp_r31->unk48[0]->unk1C.x) / 2.0)) - 500); + temp_r31->unk9C = 25.0f + ((100.0f * temp_r31->unk48[0]->unk1C.y) - 500.0f); + } + if (lbl_1_bss_18 == -1) { + Vec sp1AC; + Vec sp1A0; + sp1AC.x = temp_r31->unk98; + sp1AC.y = temp_r31->unk9C; + sp1AC.z = 55; + Hu3D3Dto2D(&sp1AC, 1, &sp1A0); + HuSprPosSet(temp_r31->unkA4, 0, sp1A0.x, sp1A0.y); + } + } } void fn_1_8AC8(StructBss2A6C *arg0, StructSp14C8 *arg1); -#define CHECK_2E48(arg0, arg1, arg2) \ - (((arg0)-1 <= 0 || (arg2[(arg0)-1][(arg1)] && arg2[(arg0)-1][(arg1)]->unk0)) && \ - ((arg0)-1 >= 11 || (arg2[(arg0)+1][(arg1)] && arg2[(arg0)+1][(arg1)]->unk0)) && \ - ((arg1)-1 <= 0 || (arg2[(arg0)][(arg1)-1] && arg2[(arg0)][(arg1)-1]->unk0)) && \ - ((arg1)-1 >= 8 || (arg2[(arg0)][(arg1)+1] && arg2[(arg0)][(arg1)+1]->unk0)) && \ - ((arg0)-1 >= 11 || (arg1)-1 <= 0 || (arg2[(arg0)+1][(arg1)-1] && arg2[(arg0)+1][(arg1)-1]->unk0)) && \ - ((arg0)-1 >= 11 || (arg1)-1 >= 8 || (arg2[(arg0)+1][(arg1)+1] && arg2[(arg0)+1][(arg1)+1]->unk0)) && \ - ((arg0)-1 <= 0 || (arg1)-1 <= 0 || (arg2[(arg0)-1][(arg1)-1] && arg2[(arg0)-1][(arg1)-1]->unk0)) && \ - ((arg0)-1 <= 0 || (arg1)-1 >= 8 || (arg2[(arg0)-1][(arg1)+1] && arg2[(arg0)-1][(arg1)+1]->unk0))) - +#define CHECK_2E48(arg0, arg1, arg2) \ + (((arg0)-1 <= 0 || (arg2[(arg0)-1][(arg1)] && arg2[(arg0)-1][(arg1)]->unk0)) \ + && ((arg0)-1 >= 11 || (arg2[(arg0) + 1][(arg1)] && arg2[(arg0) + 1][(arg1)]->unk0)) \ + && ((arg1)-1 <= 0 || (arg2[(arg0)][(arg1)-1] && arg2[(arg0)][(arg1)-1]->unk0)) \ + && ((arg1)-1 >= 8 || (arg2[(arg0)][(arg1) + 1] && arg2[(arg0)][(arg1) + 1]->unk0)) \ + && ((arg0)-1 >= 11 || (arg1)-1 <= 0 || (arg2[(arg0) + 1][(arg1)-1] && arg2[(arg0) + 1][(arg1)-1]->unk0)) \ + && ((arg0)-1 >= 11 || (arg1)-1 >= 8 || (arg2[(arg0) + 1][(arg1) + 1] && arg2[(arg0) + 1][(arg1) + 1]->unk0)) \ + && ((arg0)-1 <= 0 || (arg1)-1 <= 0 || (arg2[(arg0)-1][(arg1)-1] && arg2[(arg0)-1][(arg1)-1]->unk0)) \ + && ((arg0)-1 <= 0 || (arg1)-1 >= 8 || (arg2[(arg0)-1][(arg1) + 1] && arg2[(arg0)-1][(arg1) + 1]->unk0))) + void fn_1_52A4(s32 arg0) { - omObjData *sp1EC = lbl_1_bss_30; - StructBss2A6C *sp2E48[14][19] = {}; - StructBss2A6C *sp1E8 = NULL; - StructBss2A6C *temp_r31; - StructBss2A6C *temp_r30; - s32 temp_r29; - s32 temp_r23; - s32 temp_r19; - s32 temp_r18; - float temp_f31; - float temp_f30; - float temp_f29; - - StructSp14C8 sp14C8[204]; - StructBss2A6C *spD58[476]; - StructSp14C8 *spA28[204]; - float sp6F8[204]; - float sp3C8[204]; - s16 sp230[204]; - - for(temp_r18=0; temp_r18<12; temp_r18++) { - for(temp_r31 = lbl_1_bss_7884[temp_r18]; temp_r31; temp_r31=temp_r31->unk48) { - s32 sp1E4 = temp_r31->unk1; - s32 sp1E0 = (((sp1E4 & 0x2) == 0 && (arg0 == 4)) || ((sp1E4 & 0x2) && (temp_r31->unk3 & (1 << arg0)))); - temp_f29 = (sp1E0) ? temp_r31->unk1C.z : 0; - temp_r31->unk2C = (void *)(temp_r31->unk30 = temp_r31->unk34 = NULL); - temp_r31->unk38 = temp_r31->unk3C = temp_r31->unk40 = temp_r31->unk44 = NULL; - if(arg0 == 4) { - temp_r31->unk5 +=temp_r31->unk4 != 0 && temp_r31->unk5 != 0; - temp_r31->unk5 = (temp_r31->unk4 == 0 || (temp_r31->unk5 > (((temp_r31->unk4-1)/4 == 1) ? 15 : 15))) ? 0 : temp_r31->unk5; - temp_r31->unk4 = (temp_r31->unk5 == 0) ? 0 : temp_r31->unk4; - temp_r31->unk1C.x = (0.5*temp_r31->unk18)+(0.5*temp_r31->unk1C.x); - } - if(temp_r31->unk0) { - s32 sp1DC = 0; - StructBss2A6C *sp1D8; - if((temp_r31->unk1 & 0x1) && temp_r31->unk1C.y == 0.0f && !temp_r31->unk4C) { - sp1DC = 1; - sp1D8 = NULL; - } else if((temp_r31->unk1 & 0x1) && temp_r31->unk4C && (temp_r31->unk4C->unk1C.y == temp_r31->unk1C.y-1.0f)) { - sp1DC = 2; - sp1D8 = temp_r31->unk4C; - } else { - if(fn_1_57C(temp_r18, temp_r31->unk1C.y+temp_f29, temp_r31, &sp1D8)) { - if(!sp1D8 || temp_r31->unk1C.y+temp_f29 >= sp1D8->unk1C.y) { - sp1DC = 2; - } - } - } - if(sp1DC != 0) { - if(temp_r31->unk1 & 0x2) { - float temp_f28 = (temp_r31->unk1C.y+temp_f29)-((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); - temp_f28 = temp_r31->unk1C.y-((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); - if(temp_r31->unk50->unk48[0]->unk18 != temp_r31->unk50->unk48[1]->unk18) { - temp_r31->unk50->unk48[0]->unk1C.y = ((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); - temp_r31->unk50->unk48[1]->unk1C.y = ((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); - } else { - temp_r31->unk50->unk48[0]->unk1C.y -= temp_f28; - temp_r31->unk50->unk48[1]->unk1C.y -= temp_f28; - } - temp_r31->unk50->unk48[0]->unk1C.z = 0; - temp_r31->unk50->unk48[1]->unk1C.z = 0; - if(sp1E0) { - if(!sp1D8 || ((sp1D8->unk1 & 0x1) && (sp1D8->unk1 & 0x2) == 0)) { - temp_r31->unk50->unk71 -= (temp_r31->unk50->unk71 != 0 && lbl_1_bss_18 == -1); - - } - } - if(temp_r31->unk50->unk71 == 0 || temp_r31->unk50->unk4 != 0 && (!sp1D8 || ((sp1D8->unk1 & 0x1) && (sp1D8->unk1 & 0x2) == 0))) { - temp_r31->unk50->unk48[0]->unk1 &= ~0x2; - temp_r31->unk50->unk48[1]->unk1 &= ~0x2; - temp_r31->unk50->unk48[0]->unk1 |= 0x10; - temp_r31->unk50->unk48[1]->unk1 |= 0x10; - temp_r31->unk1 |= 0x1; - if(temp_r31->unk50->unk48[0]->unk18 != temp_r31->unk50->unk48[1]->unk18) { - s32 sp1D4; - s32 sp1D0 = (temp_r31 == temp_r31->unk50->unk48[1]) ? 1 : 0; - s32 sp1CC = temp_r31->unk50->unk48[sp1D0]->unk18; - s32 sp1C8 = temp_r31->unk50->unk48[1-sp1D0]->unk18; - float sp1C4 = temp_r31->unk50->unk48[sp1D0]->unk1C.y; - float sp1C0 = temp_r31->unk50->unk48[1-sp1D0]->unk1C.y; - sp1D4 = (sp1CC < sp1C8 || (sp1CC == sp1C8 && sp1C4 < sp1C0)) ? 1 : 0; - if(sp1D4 == 1) { - StructBss2A6C *temp_r21 = temp_r31->unk50->unk48[1-sp1D0]; - StructBss2A6C *temp_r20 = (temp_r21) ? temp_r21->unk4C : NULL; - if(temp_r21) { - if((!temp_r20 && temp_r21->unk1C.y == 0.0f) || (temp_r20 && temp_r21->unk1C.y == temp_r20->unk1C.y+1.0f && (temp_r20->unk1 & 0x1) && (temp_r20->unk1 & 0x2) == 0)) { - temp_r21->unk1C.y = (temp_r20) ? (temp_r20->unk1C.y+1.0f) : 0.0f; - temp_r21->unk1 &= ~0x1; - temp_r21->unk1 |= (temp_r20 && ((temp_r20->unk1 & 0x1) == 0 || (temp_r20->unk1 & 0x2) != 0)) ? 0 : 1; - temp_r21->unk1C.z = (temp_r21->unk1 & 0x1) ? -0.010416667f : ((!temp_r20) ? -0.010416667f : temp_r20->unk1C.z); - sp1E8 = temp_r21; - } - } - } - } - temp_r31->unk4 = temp_r31->unk5 = 0; - if(temp_r31->unk50->unk48[0]->unk18 == temp_r31->unk50->unk48[1]->unk18) { - s32 sp1BC = (temp_r31->unk50->unk48[1] == temp_r31) ? 1 : 0; - s32 sp1B8 = temp_r31->unk50->unk48[0]->unk1C.y > temp_r31->unk50->unk48[1]->unk1C.y; - temp_r31->unk50->unk48[1-sp1B8]->unk1C.y = 1+temp_r31->unk50->unk48[sp1B8]->unk1C.y; - temp_r31->unk50->unk48[1-sp1B8]->unk1C.z = -0.010416667f; - temp_r31->unk50->unk48[0]->unk1 |= 0x1; - temp_r31->unk50->unk48[1]->unk1 |= 0x1; - temp_r31->unk50->unk48[0]->unk4 = temp_r31->unk50->unk48[0]->unk5 = 0; - temp_r31->unk50->unk48[1]->unk4 = temp_r31->unk50->unk48[1]->unk5 = 0; - temp_r31->unk38 = (temp_r31->unk50->unk48[1] == temp_r31) ? temp_r31->unk50->unk48[0] : temp_r31->unk50->unk48[1]; - if(sp1BC) { - temp_r31->unk50->unk48[0]->unk1 |= 0x8; - } else { - temp_r31->unk50->unk48[1]->unk1 |= 0x8; - } - - } - temp_r31->unk50->unk48[0] = NULL; - temp_r31->unk50->unk48[1] = NULL; - } - } else { - temp_r31->unk1C.y = (sp1D8) ? (1.0f+sp1D8->unk1C.y) : 0.0f; - temp_r31->unk1 &= ~0x1; - temp_r31->unk1 |= (sp1D8 && ((sp1D8->unk1 & 0x1) == 0 || (sp1D8->unk1 & 0x2) != 0)) ? 0 : 1; - temp_r31->unk1C.z = (temp_r31->unk1 & 0x1) ? -0.010416667f : ((!sp1D8) ? -0.010416667f : sp1D8->unk1C.z); - } - } else { - temp_r31->unk1C.y += temp_f29; - temp_r31->unk1C.z = (sp1E0) ? ((temp_r31->unk1 & 0x3) ? 0.0f : -0.010416667f+temp_r31->unk1C.z) : temp_r31->unk1C.z; - if(temp_r31->unk1 & 0x1) { - temp_r31->unk1 &= ~0x1; - } - } - } - if((temp_r31->unk1 & 0x1) && (sp1E4 & 0x1) && (temp_r31->unk1 & 0x8) == 0 && temp_r31 != sp1E8) { - temp_r31->unk8[0] = temp_r31->unk8[1] = temp_r31->unk8[2] = temp_r31->unk8[3] = 0; - temp_r31->unk3 = 0; - temp_r31->unk1 &= ~0x10; - } - temp_r31->unk1 &= ~0x8; - if((temp_r31->unk1 & 0x1) && (temp_r31->unk1 & 0x2) == 0) { - sp2E48[temp_r31->unk18+1][(int)temp_r31->unk1C.y+1] = temp_r31; - } - if(temp_r31->unk1 & 0x2) { - temp_r31->unk1C.z = 0; - } - } - } - temp_r23 = 0; - { - s32 sp1B4; - for(temp_r18=0; temp_r18<12; temp_r18++) { - StructBss2A6C *sp1B0 = (temp_r18 < 11) ? lbl_1_bss_7884[temp_r18+1] : NULL; - StructBss2A6C *sp1AC = NULL; - StructBss2A6C *sp1A8 = NULL; - float sp1A4 = (sp1B0) ? (sp1B0->unk1C.y) : 0.0f; - for(temp_r31 = lbl_1_bss_7884[temp_r18]; temp_r31; temp_r31=temp_r31->unk48) { - s32 sp1A0 = temp_r31->unk18+1; - s32 sp19C = (int)temp_r31->unk1C.y+1; - if((temp_r31->unk1 & 0x1) && (temp_r31->unk1 & 0x2) == 0) { - if(sp2E48[sp1A0][sp19C+1]) { - temp_r31->unk38 = sp2E48[sp1A0][sp19C+1]; - temp_r31->unk38->unk3C = temp_r31; - } - if(sp2E48[sp1A0+1][sp19C]) { - sp1B0 = sp2E48[sp1A0+1][sp19C]; - temp_r31->unk44 = sp1B0; - temp_r31->unk44->unk40 = temp_r31; - } - sp1AC = sp2E48[sp1A0+1][sp19C+1]; - sp1A8 = sp2E48[sp1A0+1][sp19C-1]; - if(temp_r31->unk0 == 5 && temp_r31->unk2C == NULL && temp_r31->unk1C.y <= 8.0f && sp19C-1 < 9) { - s32 sp198 = temp_r31->unk0 == 5; - sp14C8[temp_r23].unk0 = 5; - sp14C8[temp_r23].unk4[0] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[0]; - sp14C8[temp_r23].unk4[1] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[1]; - sp14C8[temp_r23].unk4[2] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[2]; - sp14C8[temp_r23].unk4[3] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[3]; - sp14C8[temp_r23].unk1 = 1; - sp14C8[temp_r23].unk2 = 0; - sp14C8[temp_r23].unk14 = (sp198) ? temp_r31 : temp_r30; - sp14C8[temp_r23].unk18 = (sp198) ? temp_r31 : temp_r30; - sp14C8[temp_r23].unk1C = 0; - if(sp198) { - temp_r31->unk30 = NULL; - temp_r31->unk34 = NULL; - temp_r31->unk2C = &sp14C8[temp_r23]; - } else { - temp_r30->unk30 = NULL; - temp_r30->unk34 = NULL; - temp_r30->unk2C = &sp14C8[temp_r23]; - } - temp_r23++; - } - for(temp_r29=0; temp_r29<((temp_r31 && temp_r31->unk0 == 5) ? 2 : 0)+2; temp_r29++) { - temp_r30 = (temp_r29 == 0) ? temp_r31->unk48 : ((temp_r29 == 1) ? sp1B0 : ((temp_r29 == 2) ? sp1AC : sp1A8)); - if(temp_r30 && (temp_r30->unk1 & 0x1)) { - if(temp_r29 != 1 || temp_r31->unk1C.y == temp_r30->unk1C.y) { - if(temp_r31->unk0 == temp_r30->unk0) { - if((temp_r31->unk0 >= 1 && temp_r31->unk0 <= 4) || (temp_r31->unk0 == 5 && (temp_r31->unk1C.y <= 8.0f || temp_r30->unk1C.y <= 8.0f))) { - StructSp14C8 *temp_r28 = temp_r31->unk2C; - StructSp14C8 *temp_r27 = temp_r30->unk2C; - if(temp_r31->unk2C && temp_r30->unk2C) { - if(temp_r31->unk2C != temp_r30->unk2C) { - StructBss2A6C *sp194 = temp_r28->unk14; - StructBss2A6C *sp190 = temp_r27->unk14; - while(1) { - sp190->unk2C = temp_r28; - if(!sp190->unk34) { - break; - } - sp190 = sp190->unk34; - } - temp_r27->unk14->unk30 = temp_r28->unk18; - temp_r28->unk18->unk34 = temp_r27->unk14; - temp_r28->unk4[0] = (temp_r28->unk4[0] > temp_r27->unk4[0]) ? temp_r28->unk4[0] : temp_r27->unk4[0]; - temp_r28->unk4[1] = (temp_r28->unk4[1] > temp_r27->unk4[1]) ? temp_r28->unk4[1] : temp_r27->unk4[1]; - temp_r28->unk4[2] = (temp_r28->unk4[2] > temp_r27->unk4[2]) ? temp_r28->unk4[2] : temp_r27->unk4[2]; - temp_r28->unk4[3] = (temp_r28->unk4[3] > temp_r27->unk4[3]) ? temp_r28->unk4[3] : temp_r27->unk4[3]; - temp_r28->unk1 = temp_r28->unk1+temp_r27->unk1; - temp_r28->unk2 |= temp_r27->unk2; - temp_r28->unk18 = sp190; - temp_r27->unk14 = temp_r27->unk18 = NULL; - temp_r27->unk1 = 0; - temp_r27->unk0 = 0; - temp_r27->unk1C = temp_r28; - } - } else { - if(temp_r31->unk2C) { - temp_r30->unk2C = temp_r31->unk2C; - temp_r28->unk18->unk34 = temp_r30; - temp_r30->unk30 = temp_r28->unk18; - temp_r28->unk18 = temp_r30; - temp_r28->unk1++; - temp_r28->unk2 |= temp_r30->unk3; - temp_r28->unk4[0] = (temp_r28->unk4[0] < temp_r30->unk8[0]) ? temp_r30->unk8[0] : temp_r28->unk4[0]; - temp_r28->unk4[1] = (temp_r28->unk4[1] < temp_r30->unk8[1]) ? temp_r30->unk8[1] : temp_r28->unk4[1]; - temp_r28->unk4[2] = (temp_r28->unk4[2] < temp_r30->unk8[2]) ? temp_r30->unk8[2] : temp_r28->unk4[2]; - temp_r28->unk4[3] = (temp_r28->unk4[3] < temp_r30->unk8[3]) ? temp_r30->unk8[3] : temp_r28->unk4[3]; - } else if(temp_r30->unk2C) { - temp_r31->unk2C = temp_r30->unk2C; - temp_r27->unk18->unk34 = temp_r31; - temp_r31->unk30 = temp_r27->unk18; - temp_r27->unk18 = temp_r31; - temp_r27->unk1++; - temp_r27->unk2 |= temp_r31->unk3; - temp_r27->unk4[0] = (temp_r27->unk4[0] < temp_r31->unk8[0]) ? temp_r31->unk8[0] : temp_r27->unk4[0]; - temp_r27->unk4[1] = (temp_r27->unk4[1] < temp_r31->unk8[1]) ? temp_r31->unk8[1] : temp_r27->unk4[1]; - temp_r27->unk4[2] = (temp_r27->unk4[2] < temp_r31->unk8[2]) ? temp_r31->unk8[2] : temp_r27->unk4[2]; - temp_r27->unk4[3] = (temp_r27->unk4[3] < temp_r31->unk8[3]) ? temp_r31->unk8[3] : temp_r27->unk4[3]; - } else { - sp14C8[temp_r23].unk0 = temp_r31->unk0; - sp14C8[temp_r23].unk4[0] = (temp_r31->unk8[0] > temp_r30->unk8[0]) ? temp_r31->unk8[0] : temp_r30->unk8[0]; - sp14C8[temp_r23].unk4[1] = (temp_r31->unk8[1] > temp_r30->unk8[1]) ? temp_r31->unk8[1] : temp_r30->unk8[1]; - sp14C8[temp_r23].unk4[2] = (temp_r31->unk8[2] > temp_r30->unk8[2]) ? temp_r31->unk8[2] : temp_r30->unk8[2]; - sp14C8[temp_r23].unk4[3] = (temp_r31->unk8[3] > temp_r30->unk8[3]) ? temp_r31->unk8[3] : temp_r30->unk8[3]; - sp14C8[temp_r23].unk1 = 2; - sp14C8[temp_r23].unk2 = (temp_r31->unk3 | temp_r30->unk3); - sp14C8[temp_r23].unk14 = temp_r31; - sp14C8[temp_r23].unk18 = temp_r30; - sp14C8[temp_r23].unk1C = NULL; - temp_r31->unk30 = NULL; - temp_r31->unk34 = temp_r30; - temp_r30->unk30 = temp_r31; - temp_r30->unk34 = NULL; - temp_r31->unk2C = &sp14C8[temp_r23]; - temp_r30->unk2C = &sp14C8[temp_r23]; - temp_r23++; - } - } - } - } - } - } - } - } - } - } - for(temp_r29=0; temp_r29unk18+1; - s32 temp_r25 = (int)sp18C->unk1C.y+1; - if(sp14C8[temp_r29].unk0 != 0 && temp_r25 <= 9) { - if(!CHECK_2E48(temp_r24, temp_r25, sp2E48)) { - sp14C8[temp_r29].unk0 = 0; - } else { - sp14C8[temp_r29].unk2 |= - ((sp2E48[temp_r24-1][temp_r25]) ? sp2E48[temp_r24-1][temp_r25]->unk3 : 0) | - ((sp2E48[temp_r24+1][temp_r25]) ? sp2E48[temp_r24+1][temp_r25]->unk3 : 0) | - ((sp2E48[temp_r24][temp_r25-1]) ? sp2E48[temp_r24][temp_r25-1]->unk3 : 0) | - ((sp2E48[temp_r24][temp_r25+1]) ? sp2E48[temp_r24][temp_r25+1]->unk3 : 0) | - ((sp2E48[temp_r24+1][temp_r25-1]) ? sp2E48[temp_r24+1][temp_r25-1]->unk3 : 0) | - ((sp2E48[temp_r24+1][temp_r25+1]) ? sp2E48[temp_r24+1][temp_r25+1]->unk3 : 0) | - ((sp2E48[temp_r24-1][temp_r25-1]) ? sp2E48[temp_r24-1][temp_r25-1]->unk3 : 0) | - ((sp2E48[temp_r24-1][temp_r25+1]) ? sp2E48[temp_r24-1][temp_r25+1]->unk3 : 0); - } - sp18C = sp18C->unk34; - if(!sp18C) { - break; - } - } - } - } - for(temp_r29=0; temp_r29= 1 && sp14C8[temp_r29].unk0 <= 4 && sp14C8[temp_r29].unk1 >= 3) || sp14C8[temp_r29].unk0 == 5) { - fn_1_38C(&sp14C8[temp_r29].unk2, sp14C8[temp_r29].unk4); - } - } - sp1B4 = 1; - while(sp1B4 >= 0) { - s32 temp_r22 = 0; - s32 sp188 = 0; - for(temp_r29=0; temp_r29= 1 && sp14C8[temp_r29].unk0 <= 4 && sp14C8[temp_r29].unk1 >= 3)) || (sp1B4 == 1 && sp14C8[temp_r29].unk0 == 5)) { - StructBss2A6C *temp_r26 = sp14C8[temp_r29].unk14; - s32 sp184 = 0; - s32 sp180 = 0; - float temp_f31 = -1; - float temp_f30 = -1; - if(sp14C8[temp_r29].unk0 == 5) { - lbl_1_bss_D0++; - lbl_1_bss_D0 %= 5; - lbl_1_bss_D4[lbl_1_bss_D0][1] = 1; - lbl_1_bss_D4[lbl_1_bss_D0][0] = 0; - for(temp_r19=0; temp_r19<10; temp_r19++) { - Hu3DModelAttrSet(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+temp_r19)], 1); - } - } - for(temp_r19=0; temp_r19unk18; - temp_f30 = temp_r26->unk1C.y; - } else { - sp180++; - temp_f31 = (temp_f31*(1.0-(1.0/sp180)))+(temp_r26->unk18*(1.0/sp180)); - temp_f30 = (temp_f30*(1.0-(1.0/sp180)))+(temp_r26->unk1C.y*(1.0/sp180)); - } - if(sp14C8[temp_r29].unk0 == 5) { - if(lbl_1_bss_D4[lbl_1_bss_D0][0] < 10) { - Hu3DModelPosSet(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+lbl_1_bss_D4[lbl_1_bss_D0][0])], (((temp_r26->unk18*100)-500.0)-50.0), 50.0f+((100.0f*temp_r26->unk1C.y)-500.0f), 120); - Hu3DModelAttrReset(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+lbl_1_bss_D4[lbl_1_bss_D0][0])], 1); - Hu3DMotionTimeSet(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+lbl_1_bss_D4[lbl_1_bss_D0][0])], 2.0f); - lbl_1_bss_D4[lbl_1_bss_D0][0]++; - lbl_1_bss_B8.unk4 += 4; - if(lbl_1_bss_D4[lbl_1_bss_D0][0] == 1) { - lbl_1_bss_B8.unk4 += 7; - } - } - fn_1_8AC8(temp_r26->unk38, &sp14C8[temp_r29]); - fn_1_8AC8((temp_r26->unk44 && temp_r26->unk44->unk38) ? temp_r26->unk44->unk38 : temp_r26->unk44, &sp14C8[temp_r29]); - fn_1_8AC8((temp_r26->unk40 && temp_r26->unk40->unk38) ? temp_r26->unk40->unk38 : temp_r26->unk40, &sp14C8[temp_r29]); - spD58[temp_r22] = temp_r26->unk38; - temp_r22++; - spD58[temp_r22] = temp_r26->unk3C; - temp_r22++; - if(temp_r26->unk44) { - spD58[temp_r22] = temp_r26->unk44->unk38; - temp_r22++; - spD58[temp_r22] = temp_r26->unk44->unk3C; - temp_r22++; - } - spD58[temp_r22] = temp_r26->unk44; - temp_r22++; - if(temp_r26->unk40) { - spD58[temp_r22] = temp_r26->unk40->unk38; - temp_r22++; - spD58[temp_r22] = temp_r26->unk40->unk3C; - temp_r22++; - } - spD58[temp_r22] = temp_r26->unk40; - temp_r22++; - spD58[temp_r22] = temp_r26; - temp_r22++; - } else { - fn_1_8AC8(temp_r26, &sp14C8[temp_r29]); - sp184 += fn_1_7F8(temp_r26, &sp14C8[temp_r29]); - } - temp_r26 = temp_r26->unk34; - if(!temp_r26) { - break; - } - } - if(sp14C8[temp_r29].unk0 == 5 && (sp14C8[temp_r29].unk2 & 0xF)) { - Work19C8 *sp220[4]; - s32 sp17C; - for(sp17C=0; sp17C<4; sp17C++) { - if((1 << sp17C) & (sp14C8[temp_r29].unk2)) { - sp220[sp17C] = lbl_1_bss_34[sp17C]->data; - omVibrate(sp220[sp17C]->unk14, 12, 6, 6); - } - } - } - if(lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0 < 3) { - lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk4[lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0] = 0.45*(((temp_f31-5.0)-0.5)/5.5); - lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0++; - } - if(sp1B4 == 0 && sp184 > 0 && lbl_1_bss_18 == -1) { - s32 sp178 = 0; - s32 sp174 = fn_1_4C0(&sp14C8[temp_r29].unk2, sp14C8[temp_r29].unk4); - Vec sp214 = { 0, 0, 50 }; - s32 temp_r17; - for(temp_r17=0; temp_r17<4; temp_r17++) { - sp178 += ((1 << temp_r17) != 0) & sp14C8[temp_r29].unk2; - } - sp178--; - sp214.x = (100.0f*temp_f31)-500.0; - sp214.y = 100+((100*temp_f30)-500); - sp214.x += sp178*12; - sp214.y -= sp178*30; - for(temp_r17=3; temp_r17>=0; temp_r17--) { - if((1 << temp_r17) & sp14C8[temp_r29].unk2) { - Vec sp208; - lbl_1_bss_2684[lbl_1_bss_2680].unkC = 1; - lbl_1_bss_2684[lbl_1_bss_2680].unk8 = sp184; - lbl_1_bss_2684[lbl_1_bss_2680].unk10 = 1< 3) ? 3 : sp174; - if(lbl_1_bss_48[sp174+3].unk0 < 3) { - lbl_1_bss_48[sp174+3].unk4[lbl_1_bss_48[sp174+3].unk0] = 0.45*(((temp_f31-5.0)-0.5)/5.5); - lbl_1_bss_48[sp174+3].unk0++; - } - } - spA28[sp188] = &sp14C8[temp_r29]; - sp230[sp188] = temp_r22; - sp6F8[sp188] = temp_f31; - sp3C8[sp188] = temp_f30; - sp188++; - } - } - for(temp_r29=0; temp_r29 0 && lbl_1_bss_18 == -1) { - s32 sp16C; - s32 sp168 = 0; - s32 sp164 = fn_1_4C0(&spA28[temp_r29]->unk2, spA28[temp_r29]->unk4); - Vec sp1FC = { 0, 0, 50 }; - for(sp16C=0; sp16C<4; sp16C++) { - sp168 += ((1 << sp16C) != 0) & spA28[temp_r29]->unk2; - } - sp168--; - sp1FC.x = (100.0f*sp6F8[temp_r29])-500.0; - sp1FC.y = 100+((100*sp3C8[temp_r29])-500); - sp1FC.x += sp168*12; - sp1FC.y -= sp168*30; - for(sp16C=3; sp16C>=0; sp16C--) { - if((1 << sp16C) & spA28[temp_r29]->unk2) { - Vec sp1F0; - lbl_1_bss_2684[lbl_1_bss_2680].unkC = 1; - lbl_1_bss_2684[lbl_1_bss_2680].unk8 = sp170; - lbl_1_bss_2684[lbl_1_bss_2680].unk10 = 1< 3) ? 3 : sp164; - if(lbl_1_bss_48[sp164+3].unk0 < 3) { - lbl_1_bss_48[sp164+3].unk4[lbl_1_bss_48[sp164+3].unk0] = 0.45*(((sp6F8[temp_r29]-5.0)-0.5)/5.5); - lbl_1_bss_48[sp164+3].unk0++; - } - } - } - sp1B4--; - } - } - + omObjData *sp1EC = lbl_1_bss_30; + StructBss2A6C *sp2E48[14][19] = {}; + StructBss2A6C *sp1E8 = NULL; + StructBss2A6C *temp_r31; + StructBss2A6C *temp_r30; + s32 temp_r29; + s32 temp_r23; + s32 temp_r19; + s32 temp_r18; + float temp_f31; + float temp_f30; + float temp_f29; + + StructSp14C8 sp14C8[204]; + StructBss2A6C *spD58[476]; + StructSp14C8 *spA28[204]; + float sp6F8[204]; + float sp3C8[204]; + s16 sp230[204]; + + for (temp_r18 = 0; temp_r18 < 12; temp_r18++) { + for (temp_r31 = lbl_1_bss_7884[temp_r18]; temp_r31; temp_r31 = temp_r31->unk48) { + s32 sp1E4 = temp_r31->unk1; + s32 sp1E0 = (((sp1E4 & 0x2) == 0 && (arg0 == 4)) || ((sp1E4 & 0x2) && (temp_r31->unk3 & (1 << arg0)))); + temp_f29 = (sp1E0) ? temp_r31->unk1C.z : 0; + temp_r31->unk2C = (void *)(temp_r31->unk30 = temp_r31->unk34 = NULL); + temp_r31->unk38 = temp_r31->unk3C = temp_r31->unk40 = temp_r31->unk44 = NULL; + if (arg0 == 4) { + temp_r31->unk5 += temp_r31->unk4 != 0 && temp_r31->unk5 != 0; + temp_r31->unk5 = (temp_r31->unk4 == 0 || (temp_r31->unk5 > (((temp_r31->unk4 - 1) / 4 == 1) ? 15 : 15))) ? 0 : temp_r31->unk5; + temp_r31->unk4 = (temp_r31->unk5 == 0) ? 0 : temp_r31->unk4; + temp_r31->unk1C.x = (0.5 * temp_r31->unk18) + (0.5 * temp_r31->unk1C.x); + } + if (temp_r31->unk0) { + s32 sp1DC = 0; + StructBss2A6C *sp1D8; + if ((temp_r31->unk1 & 0x1) && temp_r31->unk1C.y == 0.0f && !temp_r31->unk4C) { + sp1DC = 1; + sp1D8 = NULL; + } + else if ((temp_r31->unk1 & 0x1) && temp_r31->unk4C && (temp_r31->unk4C->unk1C.y == temp_r31->unk1C.y - 1.0f)) { + sp1DC = 2; + sp1D8 = temp_r31->unk4C; + } + else { + if (fn_1_57C(temp_r18, temp_r31->unk1C.y + temp_f29, temp_r31, &sp1D8)) { + if (!sp1D8 || temp_r31->unk1C.y + temp_f29 >= sp1D8->unk1C.y) { + sp1DC = 2; + } + } + } + if (sp1DC != 0) { + if (temp_r31->unk1 & 0x2) { + float temp_f28 = (temp_r31->unk1C.y + temp_f29) - ((!sp1D8) ? 0.0f : (1.0f + sp1D8->unk1C.y)); + temp_f28 = temp_r31->unk1C.y - ((!sp1D8) ? 0.0f : (1.0f + sp1D8->unk1C.y)); + if (temp_r31->unk50->unk48[0]->unk18 != temp_r31->unk50->unk48[1]->unk18) { + temp_r31->unk50->unk48[0]->unk1C.y = ((!sp1D8) ? 0.0f : (1.0f + sp1D8->unk1C.y)); + temp_r31->unk50->unk48[1]->unk1C.y = ((!sp1D8) ? 0.0f : (1.0f + sp1D8->unk1C.y)); + } + else { + temp_r31->unk50->unk48[0]->unk1C.y -= temp_f28; + temp_r31->unk50->unk48[1]->unk1C.y -= temp_f28; + } + temp_r31->unk50->unk48[0]->unk1C.z = 0; + temp_r31->unk50->unk48[1]->unk1C.z = 0; + if (sp1E0) { + if (!sp1D8 || ((sp1D8->unk1 & 0x1) && (sp1D8->unk1 & 0x2) == 0)) { + temp_r31->unk50->unk71 -= (temp_r31->unk50->unk71 != 0 && lbl_1_bss_18 == -1); + } + } + if (temp_r31->unk50->unk71 == 0 + || temp_r31->unk50->unk4 != 0 && (!sp1D8 || ((sp1D8->unk1 & 0x1) && (sp1D8->unk1 & 0x2) == 0))) { + temp_r31->unk50->unk48[0]->unk1 &= ~0x2; + temp_r31->unk50->unk48[1]->unk1 &= ~0x2; + temp_r31->unk50->unk48[0]->unk1 |= 0x10; + temp_r31->unk50->unk48[1]->unk1 |= 0x10; + temp_r31->unk1 |= 0x1; + if (temp_r31->unk50->unk48[0]->unk18 != temp_r31->unk50->unk48[1]->unk18) { + s32 sp1D4; + s32 sp1D0 = (temp_r31 == temp_r31->unk50->unk48[1]) ? 1 : 0; + s32 sp1CC = temp_r31->unk50->unk48[sp1D0]->unk18; + s32 sp1C8 = temp_r31->unk50->unk48[1 - sp1D0]->unk18; + float sp1C4 = temp_r31->unk50->unk48[sp1D0]->unk1C.y; + float sp1C0 = temp_r31->unk50->unk48[1 - sp1D0]->unk1C.y; + sp1D4 = (sp1CC < sp1C8 || (sp1CC == sp1C8 && sp1C4 < sp1C0)) ? 1 : 0; + if (sp1D4 == 1) { + StructBss2A6C *temp_r21 = temp_r31->unk50->unk48[1 - sp1D0]; + StructBss2A6C *temp_r20 = (temp_r21) ? temp_r21->unk4C : NULL; + if (temp_r21) { + if ((!temp_r20 && temp_r21->unk1C.y == 0.0f) + || (temp_r20 && temp_r21->unk1C.y == temp_r20->unk1C.y + 1.0f && (temp_r20->unk1 & 0x1) + && (temp_r20->unk1 & 0x2) == 0)) { + temp_r21->unk1C.y = (temp_r20) ? (temp_r20->unk1C.y + 1.0f) : 0.0f; + temp_r21->unk1 &= ~0x1; + temp_r21->unk1 |= (temp_r20 && ((temp_r20->unk1 & 0x1) == 0 || (temp_r20->unk1 & 0x2) != 0)) ? 0 : 1; + temp_r21->unk1C.z + = (temp_r21->unk1 & 0x1) ? -0.010416667f : ((!temp_r20) ? -0.010416667f : temp_r20->unk1C.z); + sp1E8 = temp_r21; + } + } + } + } + temp_r31->unk4 = temp_r31->unk5 = 0; + if (temp_r31->unk50->unk48[0]->unk18 == temp_r31->unk50->unk48[1]->unk18) { + s32 sp1BC = (temp_r31->unk50->unk48[1] == temp_r31) ? 1 : 0; + s32 sp1B8 = temp_r31->unk50->unk48[0]->unk1C.y > temp_r31->unk50->unk48[1]->unk1C.y; + temp_r31->unk50->unk48[1 - sp1B8]->unk1C.y = 1 + temp_r31->unk50->unk48[sp1B8]->unk1C.y; + temp_r31->unk50->unk48[1 - sp1B8]->unk1C.z = -0.010416667f; + temp_r31->unk50->unk48[0]->unk1 |= 0x1; + temp_r31->unk50->unk48[1]->unk1 |= 0x1; + temp_r31->unk50->unk48[0]->unk4 = temp_r31->unk50->unk48[0]->unk5 = 0; + temp_r31->unk50->unk48[1]->unk4 = temp_r31->unk50->unk48[1]->unk5 = 0; + temp_r31->unk38 = (temp_r31->unk50->unk48[1] == temp_r31) ? temp_r31->unk50->unk48[0] : temp_r31->unk50->unk48[1]; + if (sp1BC) { + temp_r31->unk50->unk48[0]->unk1 |= 0x8; + } + else { + temp_r31->unk50->unk48[1]->unk1 |= 0x8; + } + } + temp_r31->unk50->unk48[0] = NULL; + temp_r31->unk50->unk48[1] = NULL; + } + } + else { + temp_r31->unk1C.y = (sp1D8) ? (1.0f + sp1D8->unk1C.y) : 0.0f; + temp_r31->unk1 &= ~0x1; + temp_r31->unk1 |= (sp1D8 && ((sp1D8->unk1 & 0x1) == 0 || (sp1D8->unk1 & 0x2) != 0)) ? 0 : 1; + temp_r31->unk1C.z = (temp_r31->unk1 & 0x1) ? -0.010416667f : ((!sp1D8) ? -0.010416667f : sp1D8->unk1C.z); + } + } + else { + temp_r31->unk1C.y += temp_f29; + temp_r31->unk1C.z = (sp1E0) ? ((temp_r31->unk1 & 0x3) ? 0.0f : -0.010416667f + temp_r31->unk1C.z) : temp_r31->unk1C.z; + if (temp_r31->unk1 & 0x1) { + temp_r31->unk1 &= ~0x1; + } + } + } + if ((temp_r31->unk1 & 0x1) && (sp1E4 & 0x1) && (temp_r31->unk1 & 0x8) == 0 && temp_r31 != sp1E8) { + temp_r31->unk8[0] = temp_r31->unk8[1] = temp_r31->unk8[2] = temp_r31->unk8[3] = 0; + temp_r31->unk3 = 0; + temp_r31->unk1 &= ~0x10; + } + temp_r31->unk1 &= ~0x8; + if ((temp_r31->unk1 & 0x1) && (temp_r31->unk1 & 0x2) == 0) { + sp2E48[temp_r31->unk18 + 1][(int)temp_r31->unk1C.y + 1] = temp_r31; + } + if (temp_r31->unk1 & 0x2) { + temp_r31->unk1C.z = 0; + } + } + } + temp_r23 = 0; + { + s32 sp1B4; + for (temp_r18 = 0; temp_r18 < 12; temp_r18++) { + StructBss2A6C *sp1B0 = (temp_r18 < 11) ? lbl_1_bss_7884[temp_r18 + 1] : NULL; + StructBss2A6C *sp1AC = NULL; + StructBss2A6C *sp1A8 = NULL; + float sp1A4 = (sp1B0) ? (sp1B0->unk1C.y) : 0.0f; + for (temp_r31 = lbl_1_bss_7884[temp_r18]; temp_r31; temp_r31 = temp_r31->unk48) { + s32 sp1A0 = temp_r31->unk18 + 1; + s32 sp19C = (int)temp_r31->unk1C.y + 1; + if ((temp_r31->unk1 & 0x1) && (temp_r31->unk1 & 0x2) == 0) { + if (sp2E48[sp1A0][sp19C + 1]) { + temp_r31->unk38 = sp2E48[sp1A0][sp19C + 1]; + temp_r31->unk38->unk3C = temp_r31; + } + if (sp2E48[sp1A0 + 1][sp19C]) { + sp1B0 = sp2E48[sp1A0 + 1][sp19C]; + temp_r31->unk44 = sp1B0; + temp_r31->unk44->unk40 = temp_r31; + } + sp1AC = sp2E48[sp1A0 + 1][sp19C + 1]; + sp1A8 = sp2E48[sp1A0 + 1][sp19C - 1]; + if (temp_r31->unk0 == 5 && temp_r31->unk2C == NULL && temp_r31->unk1C.y <= 8.0f && sp19C - 1 < 9) { + s32 sp198 = temp_r31->unk0 == 5; + sp14C8[temp_r23].unk0 = 5; + sp14C8[temp_r23].unk4[0] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[0]; + sp14C8[temp_r23].unk4[1] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[1]; + sp14C8[temp_r23].unk4[2] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[2]; + sp14C8[temp_r23].unk4[3] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[3]; + sp14C8[temp_r23].unk1 = 1; + sp14C8[temp_r23].unk2 = 0; + sp14C8[temp_r23].unk14 = (sp198) ? temp_r31 : temp_r30; + sp14C8[temp_r23].unk18 = (sp198) ? temp_r31 : temp_r30; + sp14C8[temp_r23].unk1C = 0; + if (sp198) { + temp_r31->unk30 = NULL; + temp_r31->unk34 = NULL; + temp_r31->unk2C = &sp14C8[temp_r23]; + } + else { + temp_r30->unk30 = NULL; + temp_r30->unk34 = NULL; + temp_r30->unk2C = &sp14C8[temp_r23]; + } + temp_r23++; + } + for (temp_r29 = 0; temp_r29 < ((temp_r31 && temp_r31->unk0 == 5) ? 2 : 0) + 2; temp_r29++) { + temp_r30 = (temp_r29 == 0) ? temp_r31->unk48 : ((temp_r29 == 1) ? sp1B0 : ((temp_r29 == 2) ? sp1AC : sp1A8)); + if (temp_r30 && (temp_r30->unk1 & 0x1)) { + if (temp_r29 != 1 || temp_r31->unk1C.y == temp_r30->unk1C.y) { + if (temp_r31->unk0 == temp_r30->unk0) { + if ((temp_r31->unk0 >= 1 && temp_r31->unk0 <= 4) + || (temp_r31->unk0 == 5 && (temp_r31->unk1C.y <= 8.0f || temp_r30->unk1C.y <= 8.0f))) { + StructSp14C8 *temp_r28 = temp_r31->unk2C; + StructSp14C8 *temp_r27 = temp_r30->unk2C; + if (temp_r31->unk2C && temp_r30->unk2C) { + if (temp_r31->unk2C != temp_r30->unk2C) { + StructBss2A6C *sp194 = temp_r28->unk14; + StructBss2A6C *sp190 = temp_r27->unk14; + while (1) { + sp190->unk2C = temp_r28; + if (!sp190->unk34) { + break; + } + sp190 = sp190->unk34; + } + temp_r27->unk14->unk30 = temp_r28->unk18; + temp_r28->unk18->unk34 = temp_r27->unk14; + temp_r28->unk4[0] = (temp_r28->unk4[0] > temp_r27->unk4[0]) ? temp_r28->unk4[0] : temp_r27->unk4[0]; + temp_r28->unk4[1] = (temp_r28->unk4[1] > temp_r27->unk4[1]) ? temp_r28->unk4[1] : temp_r27->unk4[1]; + temp_r28->unk4[2] = (temp_r28->unk4[2] > temp_r27->unk4[2]) ? temp_r28->unk4[2] : temp_r27->unk4[2]; + temp_r28->unk4[3] = (temp_r28->unk4[3] > temp_r27->unk4[3]) ? temp_r28->unk4[3] : temp_r27->unk4[3]; + temp_r28->unk1 = temp_r28->unk1 + temp_r27->unk1; + temp_r28->unk2 |= temp_r27->unk2; + temp_r28->unk18 = sp190; + temp_r27->unk14 = temp_r27->unk18 = NULL; + temp_r27->unk1 = 0; + temp_r27->unk0 = 0; + temp_r27->unk1C = temp_r28; + } + } + else { + if (temp_r31->unk2C) { + temp_r30->unk2C = temp_r31->unk2C; + temp_r28->unk18->unk34 = temp_r30; + temp_r30->unk30 = temp_r28->unk18; + temp_r28->unk18 = temp_r30; + temp_r28->unk1++; + temp_r28->unk2 |= temp_r30->unk3; + temp_r28->unk4[0] = (temp_r28->unk4[0] < temp_r30->unk8[0]) ? temp_r30->unk8[0] : temp_r28->unk4[0]; + temp_r28->unk4[1] = (temp_r28->unk4[1] < temp_r30->unk8[1]) ? temp_r30->unk8[1] : temp_r28->unk4[1]; + temp_r28->unk4[2] = (temp_r28->unk4[2] < temp_r30->unk8[2]) ? temp_r30->unk8[2] : temp_r28->unk4[2]; + temp_r28->unk4[3] = (temp_r28->unk4[3] < temp_r30->unk8[3]) ? temp_r30->unk8[3] : temp_r28->unk4[3]; + } + else if (temp_r30->unk2C) { + temp_r31->unk2C = temp_r30->unk2C; + temp_r27->unk18->unk34 = temp_r31; + temp_r31->unk30 = temp_r27->unk18; + temp_r27->unk18 = temp_r31; + temp_r27->unk1++; + temp_r27->unk2 |= temp_r31->unk3; + temp_r27->unk4[0] = (temp_r27->unk4[0] < temp_r31->unk8[0]) ? temp_r31->unk8[0] : temp_r27->unk4[0]; + temp_r27->unk4[1] = (temp_r27->unk4[1] < temp_r31->unk8[1]) ? temp_r31->unk8[1] : temp_r27->unk4[1]; + temp_r27->unk4[2] = (temp_r27->unk4[2] < temp_r31->unk8[2]) ? temp_r31->unk8[2] : temp_r27->unk4[2]; + temp_r27->unk4[3] = (temp_r27->unk4[3] < temp_r31->unk8[3]) ? temp_r31->unk8[3] : temp_r27->unk4[3]; + } + else { + sp14C8[temp_r23].unk0 = temp_r31->unk0; + sp14C8[temp_r23].unk4[0] + = (temp_r31->unk8[0] > temp_r30->unk8[0]) ? temp_r31->unk8[0] : temp_r30->unk8[0]; + sp14C8[temp_r23].unk4[1] + = (temp_r31->unk8[1] > temp_r30->unk8[1]) ? temp_r31->unk8[1] : temp_r30->unk8[1]; + sp14C8[temp_r23].unk4[2] + = (temp_r31->unk8[2] > temp_r30->unk8[2]) ? temp_r31->unk8[2] : temp_r30->unk8[2]; + sp14C8[temp_r23].unk4[3] + = (temp_r31->unk8[3] > temp_r30->unk8[3]) ? temp_r31->unk8[3] : temp_r30->unk8[3]; + sp14C8[temp_r23].unk1 = 2; + sp14C8[temp_r23].unk2 = (temp_r31->unk3 | temp_r30->unk3); + sp14C8[temp_r23].unk14 = temp_r31; + sp14C8[temp_r23].unk18 = temp_r30; + sp14C8[temp_r23].unk1C = NULL; + temp_r31->unk30 = NULL; + temp_r31->unk34 = temp_r30; + temp_r30->unk30 = temp_r31; + temp_r30->unk34 = NULL; + temp_r31->unk2C = &sp14C8[temp_r23]; + temp_r30->unk2C = &sp14C8[temp_r23]; + temp_r23++; + } + } + } + } + } + } + } + } + } + } + for (temp_r29 = 0; temp_r29 < temp_r23; temp_r29++) { + StructBss2A6C *sp18C; + if (sp14C8[temp_r29].unk0 != 5) { + continue; + } + sp18C = sp14C8[temp_r29].unk14; + for (temp_r19 = 0; temp_r19 < sp14C8[temp_r29].unk1; temp_r19++) { + s32 temp_r24 = sp18C->unk18 + 1; + s32 temp_r25 = (int)sp18C->unk1C.y + 1; + if (sp14C8[temp_r29].unk0 != 0 && temp_r25 <= 9) { + if (!CHECK_2E48(temp_r24, temp_r25, sp2E48)) { + sp14C8[temp_r29].unk0 = 0; + } + else { + sp14C8[temp_r29].unk2 |= ((sp2E48[temp_r24 - 1][temp_r25]) ? sp2E48[temp_r24 - 1][temp_r25]->unk3 : 0) + | ((sp2E48[temp_r24 + 1][temp_r25]) ? sp2E48[temp_r24 + 1][temp_r25]->unk3 : 0) + | ((sp2E48[temp_r24][temp_r25 - 1]) ? sp2E48[temp_r24][temp_r25 - 1]->unk3 : 0) + | ((sp2E48[temp_r24][temp_r25 + 1]) ? sp2E48[temp_r24][temp_r25 + 1]->unk3 : 0) + | ((sp2E48[temp_r24 + 1][temp_r25 - 1]) ? sp2E48[temp_r24 + 1][temp_r25 - 1]->unk3 : 0) + | ((sp2E48[temp_r24 + 1][temp_r25 + 1]) ? sp2E48[temp_r24 + 1][temp_r25 + 1]->unk3 : 0) + | ((sp2E48[temp_r24 - 1][temp_r25 - 1]) ? sp2E48[temp_r24 - 1][temp_r25 - 1]->unk3 : 0) + | ((sp2E48[temp_r24 - 1][temp_r25 + 1]) ? sp2E48[temp_r24 - 1][temp_r25 + 1]->unk3 : 0); + } + sp18C = sp18C->unk34; + if (!sp18C) { + break; + } + } + } + } + for (temp_r29 = 0; temp_r29 < temp_r23; temp_r29++) { + if ((sp14C8[temp_r29].unk0 >= 1 && sp14C8[temp_r29].unk0 <= 4 && sp14C8[temp_r29].unk1 >= 3) || sp14C8[temp_r29].unk0 == 5) { + fn_1_38C(&sp14C8[temp_r29].unk2, sp14C8[temp_r29].unk4); + } + } + sp1B4 = 1; + while (sp1B4 >= 0) { + s32 temp_r22 = 0; + s32 sp188 = 0; + for (temp_r29 = 0; temp_r29 < temp_r23; temp_r29++) { + if ((!sp1B4 && (sp14C8[temp_r29].unk0 >= 1 && sp14C8[temp_r29].unk0 <= 4 && sp14C8[temp_r29].unk1 >= 3)) + || (sp1B4 == 1 && sp14C8[temp_r29].unk0 == 5)) { + StructBss2A6C *temp_r26 = sp14C8[temp_r29].unk14; + s32 sp184 = 0; + s32 sp180 = 0; + float temp_f31 = -1; + float temp_f30 = -1; + if (sp14C8[temp_r29].unk0 == 5) { + lbl_1_bss_D0++; + lbl_1_bss_D0 %= 5; + lbl_1_bss_D4[lbl_1_bss_D0][1] = 1; + lbl_1_bss_D4[lbl_1_bss_D0][0] = 0; + for (temp_r19 = 0; temp_r19 < 10; temp_r19++) { + Hu3DModelAttrSet(lbl_1_bss_30->model[((lbl_1_bss_D0 * 10) + 13 + temp_r19)], HU3D_ATTR_DISPOFF); + } + } + for (temp_r19 = 0; temp_r19 < sp14C8[temp_r29].unk1; temp_r19++) { + if (-1.0f == temp_f31) { + sp180 = 1; + temp_f31 = temp_r26->unk18; + temp_f30 = temp_r26->unk1C.y; + } + else { + sp180++; + temp_f31 = (temp_f31 * (1.0 - (1.0 / sp180))) + (temp_r26->unk18 * (1.0 / sp180)); + temp_f30 = (temp_f30 * (1.0 - (1.0 / sp180))) + (temp_r26->unk1C.y * (1.0 / sp180)); + } + if (sp14C8[temp_r29].unk0 == 5) { + if (lbl_1_bss_D4[lbl_1_bss_D0][0] < 10) { + Hu3DModelPosSet(lbl_1_bss_30->model[((lbl_1_bss_D0 * 10) + 13 + lbl_1_bss_D4[lbl_1_bss_D0][0])], + (((temp_r26->unk18 * 100) - 500.0) - 50.0), 50.0f + ((100.0f * temp_r26->unk1C.y) - 500.0f), 120); + Hu3DModelAttrReset( + lbl_1_bss_30->model[((lbl_1_bss_D0 * 10) + 13 + lbl_1_bss_D4[lbl_1_bss_D0][0])], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_30->model[((lbl_1_bss_D0 * 10) + 13 + lbl_1_bss_D4[lbl_1_bss_D0][0])], 2.0f); + lbl_1_bss_D4[lbl_1_bss_D0][0]++; + lbl_1_bss_B8.unk4 += 4; + if (lbl_1_bss_D4[lbl_1_bss_D0][0] == 1) { + lbl_1_bss_B8.unk4 += 7; + } + } + fn_1_8AC8(temp_r26->unk38, &sp14C8[temp_r29]); + fn_1_8AC8((temp_r26->unk44 && temp_r26->unk44->unk38) ? temp_r26->unk44->unk38 : temp_r26->unk44, &sp14C8[temp_r29]); + fn_1_8AC8((temp_r26->unk40 && temp_r26->unk40->unk38) ? temp_r26->unk40->unk38 : temp_r26->unk40, &sp14C8[temp_r29]); + spD58[temp_r22] = temp_r26->unk38; + temp_r22++; + spD58[temp_r22] = temp_r26->unk3C; + temp_r22++; + if (temp_r26->unk44) { + spD58[temp_r22] = temp_r26->unk44->unk38; + temp_r22++; + spD58[temp_r22] = temp_r26->unk44->unk3C; + temp_r22++; + } + spD58[temp_r22] = temp_r26->unk44; + temp_r22++; + if (temp_r26->unk40) { + spD58[temp_r22] = temp_r26->unk40->unk38; + temp_r22++; + spD58[temp_r22] = temp_r26->unk40->unk3C; + temp_r22++; + } + spD58[temp_r22] = temp_r26->unk40; + temp_r22++; + spD58[temp_r22] = temp_r26; + temp_r22++; + } + else { + fn_1_8AC8(temp_r26, &sp14C8[temp_r29]); + sp184 += fn_1_7F8(temp_r26, &sp14C8[temp_r29]); + } + temp_r26 = temp_r26->unk34; + if (!temp_r26) { + break; + } + } + if (sp14C8[temp_r29].unk0 == 5 && (sp14C8[temp_r29].unk2 & 0xF)) { + Work19C8 *sp220[4]; + s32 sp17C; + for (sp17C = 0; sp17C < 4; sp17C++) { + if ((1 << sp17C) & (sp14C8[temp_r29].unk2)) { + sp220[sp17C] = lbl_1_bss_34[sp17C]->data; + omVibrate(sp220[sp17C]->unk14, 12, 6, 6); + } + } + } + if (lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0 < 3) { + lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk4[lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0] + = 0.45 * (((temp_f31 - 5.0) - 0.5) / 5.5); + lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0++; + } + if (sp1B4 == 0 && sp184 > 0 && lbl_1_bss_18 == -1) { + s32 sp178 = 0; + s32 sp174 = fn_1_4C0(&sp14C8[temp_r29].unk2, sp14C8[temp_r29].unk4); + Vec sp214 = { 0, 0, 50 }; + s32 temp_r17; + for (temp_r17 = 0; temp_r17 < 4; temp_r17++) { + sp178 += ((1 << temp_r17) != 0) & sp14C8[temp_r29].unk2; + } + sp178--; + sp214.x = (100.0f * temp_f31) - 500.0; + sp214.y = 100 + ((100 * temp_f30) - 500); + sp214.x += sp178 * 12; + sp214.y -= sp178 * 30; + for (temp_r17 = 3; temp_r17 >= 0; temp_r17--) { + if ((1 << temp_r17) & sp14C8[temp_r29].unk2) { + Vec sp208; + lbl_1_bss_2684[lbl_1_bss_2680].unkC = 1; + lbl_1_bss_2684[lbl_1_bss_2680].unk8 = sp184; + lbl_1_bss_2684[lbl_1_bss_2680].unk10 = 1 << temp_r17; + Hu3D3Dto2D(&sp214, 1, &sp208); + lbl_1_bss_2684[lbl_1_bss_2680].unk0 = sp208.x; + lbl_1_bss_2684[lbl_1_bss_2680].unk4 = sp208.y; + lbl_1_bss_2680++; + lbl_1_bss_2680 %= 50; + sp214.x -= 24.0f; + sp214.y += 60.0f; + } + } + sp174 = (sp174 > 3) ? 3 : sp174; + if (lbl_1_bss_48[sp174 + 3].unk0 < 3) { + lbl_1_bss_48[sp174 + 3].unk4[lbl_1_bss_48[sp174 + 3].unk0] = 0.45 * (((temp_f31 - 5.0) - 0.5) / 5.5); + lbl_1_bss_48[sp174 + 3].unk0++; + } + } + spA28[sp188] = &sp14C8[temp_r29]; + sp230[sp188] = temp_r22; + sp6F8[sp188] = temp_f31; + sp3C8[sp188] = temp_f30; + sp188++; + } + } + for (temp_r29 = 0; temp_r29 < sp188; temp_r29++) { + s32 sp170 = 0; + + for (temp_r19 = (temp_r29 < 1) ? 0 : sp230[temp_r29 - 1]; temp_r19 < sp230[temp_r29]; temp_r19++) { + sp170 += fn_1_7F8(spD58[temp_r19], spA28[temp_r29]); + } + if (sp1B4 == 1 && sp170 > 0 && lbl_1_bss_18 == -1) { + s32 sp16C; + s32 sp168 = 0; + s32 sp164 = fn_1_4C0(&spA28[temp_r29]->unk2, spA28[temp_r29]->unk4); + Vec sp1FC = { 0, 0, 50 }; + for (sp16C = 0; sp16C < 4; sp16C++) { + sp168 += ((1 << sp16C) != 0) & spA28[temp_r29]->unk2; + } + sp168--; + sp1FC.x = (100.0f * sp6F8[temp_r29]) - 500.0; + sp1FC.y = 100 + ((100 * sp3C8[temp_r29]) - 500); + sp1FC.x += sp168 * 12; + sp1FC.y -= sp168 * 30; + for (sp16C = 3; sp16C >= 0; sp16C--) { + if ((1 << sp16C) & spA28[temp_r29]->unk2) { + Vec sp1F0; + lbl_1_bss_2684[lbl_1_bss_2680].unkC = 1; + lbl_1_bss_2684[lbl_1_bss_2680].unk8 = sp170; + lbl_1_bss_2684[lbl_1_bss_2680].unk10 = 1 << sp16C; + Hu3D3Dto2D(&sp1FC, 1, &sp1F0); + lbl_1_bss_2684[lbl_1_bss_2680].unk0 = sp1F0.x; + lbl_1_bss_2684[lbl_1_bss_2680].unk4 = sp1F0.y; + lbl_1_bss_2680++; + lbl_1_bss_2680 %= 50; + sp1FC.x -= 24.0f; + sp1FC.y += 60.0f; + } + } + sp164 = (sp164 > 3) ? 3 : sp164; + if (lbl_1_bss_48[sp164 + 3].unk0 < 3) { + lbl_1_bss_48[sp164 + 3].unk4[lbl_1_bss_48[sp164 + 3].unk0] = 0.45 * (((sp6F8[temp_r29] - 5.0) - 0.5) / 5.5); + lbl_1_bss_48[sp164 + 3].unk0++; + } + } + } + sp1B4--; + } + } } #undef CHECK_2E48 void fn_1_8AC8(StructBss2A6C *arg0, StructSp14C8 *arg1) { - StructBss2A6C *temp_r31 = arg0; - if(!arg0) { - return; - } - if(arg0->unk0 == 0) { - return; - } - while(temp_r31->unk48) { - if(!temp_r31->unk48->unk0 || (temp_r31->unk48->unk1 & 0x1) == 0 || temp_r31->unk48->unk1C.y != temp_r31->unk1C.y+1.0f) { - break; - } - temp_r31 = temp_r31->unk48; - temp_r31->unk8[0] = arg1->unk4[0]+((arg1->unk2 & 0x1) ? 1 : 0); - temp_r31->unk8[1] = arg1->unk4[1]+((arg1->unk2 & 0x2) ? 1 : 0); - temp_r31->unk8[2] = arg1->unk4[2]+((arg1->unk2 & 0x4) ? 1 : 0); - temp_r31->unk8[3] = arg1->unk4[3]+((arg1->unk2 & 0x8) ? 1 : 0); - temp_r31->unk3 = arg1->unk2; - - } + StructBss2A6C *temp_r31 = arg0; + if (!arg0) { + return; + } + if (arg0->unk0 == 0) { + return; + } + while (temp_r31->unk48) { + if (!temp_r31->unk48->unk0 || (temp_r31->unk48->unk1 & 0x1) == 0 || temp_r31->unk48->unk1C.y != temp_r31->unk1C.y + 1.0f) { + break; + } + temp_r31 = temp_r31->unk48; + temp_r31->unk8[0] = arg1->unk4[0] + ((arg1->unk2 & 0x1) ? 1 : 0); + temp_r31->unk8[1] = arg1->unk4[1] + ((arg1->unk2 & 0x2) ? 1 : 0); + temp_r31->unk8[2] = arg1->unk4[2] + ((arg1->unk2 & 0x4) ? 1 : 0); + temp_r31->unk8[3] = arg1->unk4[3] + ((arg1->unk2 & 0x8) ? 1 : 0); + temp_r31->unk3 = arg1->unk2; + } } -//decomp.me link is https://decomp.me/scratch/PbkiW void fn_1_8C10(omObjData *object) { - s32 temp_r31; - s32 temp_r30; - - Work19C8 *sp88[4]; - lbl_1_bss_4++; - { - s32 temp_r23; - for(temp_r23=0; temp_r23<4; temp_r23++) { - fn_1_19C8(lbl_1_bss_34[temp_r23]); - fn_1_52A4(temp_r23); - } - } - - fn_1_52A4(4); - for(temp_r31=0; temp_r31<4; temp_r31++) { - sp88[temp_r31] = lbl_1_bss_34[temp_r31]->data; - } - if(lbl_1_bss_18 == -1) { - if(sp88[0]->unk24 >= 100 || sp88[1]->unk24 >= 100 || sp88[2]->unk24 >= 100 || sp88[3]->unk24 >= 100) { - s32 sp78[4] = { 0, 1, 2, 3 }; - for(temp_r31=0; temp_r31<4; temp_r31++) { - s32 temp_r22 = rand8()%4; - if(sp88[temp_r22]->unk24 >= 100) { - lbl_1_bss_18 = temp_r22; - for(temp_r30=0; temp_r30<4; temp_r30++) { - if(temp_r30 != temp_r22) { - if(sp88[temp_r30]->unk24 >= 100) { - sp88[temp_r30]->unk24 = sp88[temp_r30]->unk28; - } - } - } - } else { - for(temp_r30=temp_r22; temp_r30<3-temp_r31; temp_r30++) { - sp78[temp_r30] = sp78[temp_r30+1]; - } - } - } - } - } - temp_r31 = (sp88[0]->unk79 != 0)+(sp88[1]->unk79 != 0)+(sp88[2]->unk79 != 0)+(sp88[3]->unk79 != 0); - if(lbl_1_bss_18 == -1 && temp_r31 == 3) { - for(temp_r30=0; temp_r30<4; temp_r30++) { - if(!sp88[temp_r30]->unk78) { - lbl_1_bss_18 = temp_r30; - } - } - } - if(lbl_1_bss_18 == -1 && temp_r31 == 4) { - lbl_1_bss_18 = 4; - } - if(lbl_1_bss_18 != -1) { - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(sp88[temp_r31]->unk48[0]) { - sp88[temp_r31]->unk48[0]->unk1 &= ~0x2; - } - if(sp88[temp_r31]->unk48[1]) { - sp88[temp_r31]->unk48[1]->unk1 &= ~0x2; - } - sp88[temp_r31]->unk48[0] = NULL; - sp88[temp_r31]->unk48[1] = NULL; - } - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - sp88[temp_r31]->unk44 = (sp88[temp_r31]->unk40 == sp88[temp_r31]->unk24) ? sp88[temp_r31]->unk44+1 : 0; - sp88[temp_r31]->unk40 += (sp88[temp_r31]->unk40 < sp88[temp_r31]->unk24) ? 0.375 : 0; - sp88[temp_r31]->unk40 = (sp88[temp_r31]->unk40 > sp88[temp_r31]->unk24) ? (float)sp88[temp_r31]->unk24 : sp88[temp_r31]->unk40; - for(temp_r30=0; temp_r30<3; temp_r30++) { - float temp_f28 = sp88[temp_r31]->unk40; - float sp4C = (s32)(temp_f28/100.0f)%10; - float temp_f22 = (s32)(temp_f28/10.0f)%10; - float temp_f24 = ((s32)temp_f28)%10; - float temp_f23 = temp_f28-(s32)temp_f28; - float temp_f25 = (temp_r30 == 0) ? ((sp88[temp_r31]->unk24/100)%10) : ((temp_r30 == 1) ? ((sp88[temp_r31]->unk24/10)%10) : sp88[temp_r31]->unk24%10); - s32 sp98[5] = { 0, 15, -9, 3, 0 }; - switch(temp_r30) { - case 0: - temp_f25 = sp4C+(temp_f23*((9.0f == temp_f24 && 9.0f == temp_f22) ? 1.0 : 0.0)); - break; - - case 1: - temp_f25 = temp_f22+(temp_f23*((9.0f == temp_f24) ? 1.0 : 0.0)); - break; - - case 2: - temp_f25 = temp_f24+temp_f23; - break; - } - Hu3DModelRotSet(lbl_1_bss_34[temp_r31]->model[temp_r30+1], 36.0f*temp_f25, 0, 0); - } - } - { - s32 spAC[8][3] = { - 255,64,64, - 32,192,255, - 255,128,255, - 32,208,32, - 224,32,224, - 230,128,32, - 255,240,32, - 160,160,160 - }; - s32 temp_r29 = lbl_1_bss_2680; - s32 temp_r28 = 0; - Work19C8 *sp68[4]; - for(temp_r28=0; temp_r28<4; temp_r28++) { - sp68[temp_r28] = lbl_1_bss_34[temp_r28]->data; - } - do { - temp_r29--; - temp_r29 = (temp_r29 < 0) ? temp_r29+50 : temp_r29; - if(lbl_1_bss_2684[temp_r29].unkC == 0 || (lbl_1_bss_2684[temp_r29].unk10 & 0xF) == 0) { - HuSprAttrSet(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); - } else { - s32 temp_r26 = 0; - u32 temp_r19; - s32 temp_r18; - - s32 temp_r24; - - s32 sp58[4]; - temp_r18 = ((lbl_1_bss_2684[temp_r29].unk8 >= 10) ? 2 : 1)+1; - if(lbl_1_bss_2684[temp_r29].unk10 & 0x1) { - sp58[temp_r26] = 0; - temp_r26++; - } - if(lbl_1_bss_2684[temp_r29].unk10 & 0x2) { - sp58[temp_r26] = 1; - temp_r26++; - } - if(lbl_1_bss_2684[temp_r29].unk10 & 0x4) { - sp58[temp_r26] = 2; - temp_r26++; - } - if(lbl_1_bss_2684[temp_r29].unk10 & 0x8) { - sp58[temp_r26] = 3; - temp_r26++; - } - temp_r19 = sp68[sp58[lbl_1_bss_4%temp_r26]]->unk18; - for(temp_r24=0; temp_r24 0; - if(lbl_1_bss_2684[temp_r29].unkC >= 40) { - lbl_1_bss_2684[temp_r29].unkC = 0; - } - - } while(temp_r29 != lbl_1_bss_2680); - for(; temp_r28<150; temp_r28++) { - HuSprAttrSet(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); - } - } - { - s32 temp_r27 = lbl_1_bss_FC; - s32 temp_r25; - s32 temp_r17; - for(temp_r17=0; temp_r17<300; temp_r17++) { - temp_r27 = temp_r27+1; - temp_r27 %= 300; - if(!lbl_1_bss_100[temp_r27].unk0) { - continue; - } - lbl_1_bss_100[temp_r27].unk4.x += lbl_1_bss_100[temp_r27].unk10.x; - lbl_1_bss_100[temp_r27].unk4.y += lbl_1_bss_100[temp_r27].unk10.y; - lbl_1_bss_100[temp_r27].unk4.z += lbl_1_bss_100[temp_r27].unk10.z; - lbl_1_bss_100[temp_r27].unk10.y += -1.5; - if(lbl_1_bss_100[temp_r27].unk4.y < -1000.0f) { - lbl_1_bss_100[temp_r27].unk0 = 0; - } - lbl_1_bss_100[temp_r27].unk1C += 9; - } - for(temp_r25=0; temp_r25<5; temp_r25++) { - if(lbl_1_bss_D4[temp_r25][0] > 0) { - lbl_1_bss_D4[temp_r25][1]++; - if(lbl_1_bss_D4[temp_r25][1] > 30) { - s32 temp_r21; - lbl_1_bss_D4[temp_r25][0] = 0; - lbl_1_bss_D4[temp_r25][1] = 0; - for(temp_r21=0; temp_r21<10; temp_r21++) { - Hu3DModelAttrSet(object->model[(temp_r25*10)+13+temp_r21], 1); - } - } - } - } - if(lbl_1_bss_44->work[0] >= 1002) { - float temp_f27 = 0; - float temp_f26 = 0; - if(lbl_1_bss_B8.unk0 % 2 >= 0) { - lbl_1_bss_B8.unk8 = lbl_1_bss_B8.unkC.y; - lbl_1_bss_B8.unkC.x = lbl_1_bss_B8.unkC.z; - do { - lbl_1_bss_B8.unkC.y = (2.0*(rand8()/255.0))-1.0; - lbl_1_bss_B8.unkC.z = (2.0*(rand8()/255.0))-1.0; - lbl_1_bss_B8.unkC.y = 0; - } while(VECMagPoint(lbl_1_bss_B8.unkC.y-lbl_1_bss_B8.unk8, lbl_1_bss_B8.unkC.z-lbl_1_bss_B8.unkC.x, 0) < 0.75); - } - temp_f27 = lbl_1_bss_B8.unk8; - temp_f26 = lbl_1_bss_B8.unkC.x; - temp_f27 *= lbl_1_bss_B8.unk4*2; - temp_f26 *= lbl_1_bss_B8.unk4*2; - lbl_1_bss_B8.unk0 = lbl_1_bss_B8.unk0 == 0; - lbl_1_bss_B8.unk4 = (lbl_1_bss_B8.unk4 > 24) ? 23 : ((lbl_1_bss_B8.unk4-1 > 0) ? lbl_1_bss_B8.unk4-1 : 0); - Hu3DCameraPosSet(1, temp_f27, 37.139069+temp_f26, 2599.7346f, 0, 1, 0, temp_f27, 50.0f+temp_f26, 0); - } - if(lbl_1_bss_18 != -1) { - float temp_f30; - s32 temp_r20; - lbl_1_bss_10++; - temp_f30 = 1.0f-((lbl_1_bss_10 > 180) ? 1.0f : (lbl_1_bss_10/180.0f)); - Hu3DMotionSpeedSet(lbl_1_bss_30->model[0], 0.5*temp_f30); - for(temp_r20=0; temp_r20<4; temp_r20++) { - Hu3DMotionSpeedSet(lbl_1_bss_34[temp_r20]->model[5], 0.5*temp_f30); - } - if(temp_f30 > 0.0f && lbl_1_data_4[0] != -1) { - HuAudFXPitchSet(lbl_1_data_4[0], -8192.0f+(8192.0f*temp_f30)); - HuAudFXPitchSet(lbl_1_data_4[1], -8192.0f+(8192.0f*temp_f30)); - HuAudFXVolSet(lbl_1_data_4[0], 63.0f+(64.0f*temp_f30)); - HuAudFXVolSet(lbl_1_data_4[1], 63.0f+(64.0f*temp_f30)); - } else { - if(lbl_1_data_4[0] != -1) { - HuAudFXStop(lbl_1_data_4[0]); - HuAudFXStop(lbl_1_data_4[1]); - lbl_1_data_4[0] = lbl_1_data_4[1] = -1; - - } - } - } - } + s32 temp_r31; + s32 temp_r30; + + Work19C8 *sp88[4]; + lbl_1_bss_4++; + { + s32 temp_r23; + for (temp_r23 = 0; temp_r23 < 4; temp_r23++) { + fn_1_19C8(lbl_1_bss_34[temp_r23]); + fn_1_52A4(temp_r23); + } + } + + fn_1_52A4(4); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp88[temp_r31] = lbl_1_bss_34[temp_r31]->data; + } + if (lbl_1_bss_18 == -1) { + if (sp88[0]->unk24 >= 100 || sp88[1]->unk24 >= 100 || sp88[2]->unk24 >= 100 || sp88[3]->unk24 >= 100) { + s32 sp78[4] = { 0, 1, 2, 3 }; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + s32 temp_r22 = rand8() % 4; + if (sp88[temp_r22]->unk24 >= 100) { + lbl_1_bss_18 = temp_r22; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + if (temp_r30 != temp_r22) { + if (sp88[temp_r30]->unk24 >= 100) { + sp88[temp_r30]->unk24 = sp88[temp_r30]->unk28; + } + } + } + } + else { + for (temp_r30 = temp_r22; temp_r30 < 3 - temp_r31; temp_r30++) { + sp78[temp_r30] = sp78[temp_r30 + 1]; + } + } + } + } + } + temp_r31 = (sp88[0]->unk79 != 0) + (sp88[1]->unk79 != 0) + (sp88[2]->unk79 != 0) + (sp88[3]->unk79 != 0); + if (lbl_1_bss_18 == -1 && temp_r31 == 3) { + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + if (!sp88[temp_r30]->unk78) { + lbl_1_bss_18 = temp_r30; + } + } + } + if (lbl_1_bss_18 == -1 && temp_r31 == 4) { + lbl_1_bss_18 = 4; + } + if (lbl_1_bss_18 != -1) { + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (sp88[temp_r31]->unk48[0]) { + sp88[temp_r31]->unk48[0]->unk1 &= ~0x2; + } + if (sp88[temp_r31]->unk48[1]) { + sp88[temp_r31]->unk48[1]->unk1 &= ~0x2; + } + sp88[temp_r31]->unk48[0] = NULL; + sp88[temp_r31]->unk48[1] = NULL; + } + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp88[temp_r31]->unk44 = (sp88[temp_r31]->unk40 == sp88[temp_r31]->unk24) ? sp88[temp_r31]->unk44 + 1 : 0; + sp88[temp_r31]->unk40 += (sp88[temp_r31]->unk40 < sp88[temp_r31]->unk24) ? 0.375 : 0; + sp88[temp_r31]->unk40 = (sp88[temp_r31]->unk40 > sp88[temp_r31]->unk24) ? (float)sp88[temp_r31]->unk24 : sp88[temp_r31]->unk40; + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + float temp_f28 = sp88[temp_r31]->unk40; + float sp4C = (s32)(temp_f28 / 100.0f) % 10; + float temp_f22 = (s32)(temp_f28 / 10.0f) % 10; + float temp_f24 = ((s32)temp_f28) % 10; + float temp_f23 = temp_f28 - (s32)temp_f28; + float temp_f25 = (temp_r30 == 0) ? ((sp88[temp_r31]->unk24 / 100) % 10) + : ((temp_r30 == 1) ? ((sp88[temp_r31]->unk24 / 10) % 10) : sp88[temp_r31]->unk24 % 10); + s32 sp98[5] = { 0, 15, -9, 3, 0 }; + switch (temp_r30) { + case 0: + temp_f25 = sp4C + (temp_f23 * ((9.0f == temp_f24 && 9.0f == temp_f22) ? 1.0 : 0.0)); + break; + + case 1: + temp_f25 = temp_f22 + (temp_f23 * ((9.0f == temp_f24) ? 1.0 : 0.0)); + break; + + case 2: + temp_f25 = temp_f24 + temp_f23; + break; + } + Hu3DModelRotSet(lbl_1_bss_34[temp_r31]->model[temp_r30 + 1], 36.0f * temp_f25, 0, 0); + } + } + { + s32 spAC[8][3] = { 255, 64, 64, 32, 192, 255, 255, 128, 255, 32, 208, 32, 224, 32, 224, 230, 128, 32, 255, 240, 32, 160, 160, 160 }; + s32 temp_r29 = lbl_1_bss_2680; + s32 temp_r28 = 0; + Work19C8 *sp68[4]; + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + sp68[temp_r28] = lbl_1_bss_34[temp_r28]->data; + } + do { + temp_r29--; + temp_r29 = (temp_r29 < 0) ? temp_r29 + 50 : temp_r29; + if (lbl_1_bss_2684[temp_r29].unkC == 0 || (lbl_1_bss_2684[temp_r29].unk10 & 0xF) == 0) { + HuSprAttrSet(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); + } + else { + s32 temp_r26 = 0; + u32 temp_r19; + s32 temp_r18; + + s32 temp_r24; + + s32 sp58[4]; + temp_r18 = ((lbl_1_bss_2684[temp_r29].unk8 >= 10) ? 2 : 1) + 1; + if (lbl_1_bss_2684[temp_r29].unk10 & 0x1) { + sp58[temp_r26] = 0; + temp_r26++; + } + if (lbl_1_bss_2684[temp_r29].unk10 & 0x2) { + sp58[temp_r26] = 1; + temp_r26++; + } + if (lbl_1_bss_2684[temp_r29].unk10 & 0x4) { + sp58[temp_r26] = 2; + temp_r26++; + } + if (lbl_1_bss_2684[temp_r29].unk10 & 0x8) { + sp58[temp_r26] = 3; + temp_r26++; + } + temp_r19 = sp68[sp58[lbl_1_bss_4 % temp_r26]]->unk18; + for (temp_r24 = 0; temp_r24 < temp_r18; temp_r28++, temp_r24++) { + HuSprPosSet(lbl_1_bss_14, temp_r28, (temp_r24 * 14) + (lbl_1_bss_2684[temp_r29].unk0 - ((temp_r18 * 14) / 2)), + lbl_1_bss_2684[temp_r29].unk4 - lbl_1_bss_2684[temp_r29].unkC); + HuSprAttrReset(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); + HuSprColorSet(lbl_1_bss_14, temp_r28, spAC[temp_r19][0], spAC[temp_r19][1], spAC[temp_r19][2]); + HuSprTPLvlSet(lbl_1_bss_14, temp_r28, + (lbl_1_bss_2684[temp_r29].unkC <= 30) ? 1.0f : (1.0f - ((lbl_1_bss_2684[temp_r29].unkC - 30) / 10.0f))); + HuSprBankSet(lbl_1_bss_14, temp_r28, + (temp_r24 == 0) + ? 10 + : ((temp_r24 == 2 || temp_r18 == 2) ? lbl_1_bss_2684[temp_r29].unk8 % 10 : ((lbl_1_bss_2684[temp_r29].unk8 / 10) % 10))); + } + } + lbl_1_bss_2684[temp_r29].unkC += lbl_1_bss_2684[temp_r29].unkC > 0; + if (lbl_1_bss_2684[temp_r29].unkC >= 40) { + lbl_1_bss_2684[temp_r29].unkC = 0; + } + + } while (temp_r29 != lbl_1_bss_2680); + for (; temp_r28 < 150; temp_r28++) { + HuSprAttrSet(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); + } + } + { + s32 temp_r27 = lbl_1_bss_FC; + s32 temp_r25; + s32 temp_r17; + for (temp_r17 = 0; temp_r17 < 300; temp_r17++) { + temp_r27 = temp_r27 + 1; + temp_r27 %= 300; + if (!lbl_1_bss_100[temp_r27].unk0) { + continue; + } + lbl_1_bss_100[temp_r27].unk4.x += lbl_1_bss_100[temp_r27].unk10.x; + lbl_1_bss_100[temp_r27].unk4.y += lbl_1_bss_100[temp_r27].unk10.y; + lbl_1_bss_100[temp_r27].unk4.z += lbl_1_bss_100[temp_r27].unk10.z; + lbl_1_bss_100[temp_r27].unk10.y += -1.5; + if (lbl_1_bss_100[temp_r27].unk4.y < -1000.0f) { + lbl_1_bss_100[temp_r27].unk0 = 0; + } + lbl_1_bss_100[temp_r27].unk1C += 9; + } + for (temp_r25 = 0; temp_r25 < 5; temp_r25++) { + if (lbl_1_bss_D4[temp_r25][0] > 0) { + lbl_1_bss_D4[temp_r25][1]++; + if (lbl_1_bss_D4[temp_r25][1] > 30) { + s32 temp_r21; + lbl_1_bss_D4[temp_r25][0] = 0; + lbl_1_bss_D4[temp_r25][1] = 0; + for (temp_r21 = 0; temp_r21 < 10; temp_r21++) { + Hu3DModelAttrSet(object->model[(temp_r25 * 10) + 13 + temp_r21], HU3D_ATTR_DISPOFF); + } + } + } + } + if (lbl_1_bss_44->work[0] >= 1002) { + float temp_f27 = 0; + float temp_f26 = 0; + if (lbl_1_bss_B8.unk0 % 2 >= 0) { + lbl_1_bss_B8.unk8 = lbl_1_bss_B8.unkC.y; + lbl_1_bss_B8.unkC.x = lbl_1_bss_B8.unkC.z; + do { + lbl_1_bss_B8.unkC.y = (2.0 * (rand8() / 255.0)) - 1.0; + lbl_1_bss_B8.unkC.z = (2.0 * (rand8() / 255.0)) - 1.0; + lbl_1_bss_B8.unkC.y = 0; + } while (VECMagPoint(lbl_1_bss_B8.unkC.y - lbl_1_bss_B8.unk8, lbl_1_bss_B8.unkC.z - lbl_1_bss_B8.unkC.x, 0) < 0.75); + } + temp_f27 = lbl_1_bss_B8.unk8; + temp_f26 = lbl_1_bss_B8.unkC.x; + temp_f27 *= lbl_1_bss_B8.unk4 * 2; + temp_f26 *= lbl_1_bss_B8.unk4 * 2; + lbl_1_bss_B8.unk0 = !lbl_1_bss_B8.unk0; + lbl_1_bss_B8.unk4 = (lbl_1_bss_B8.unk4 > 24) ? 23 : ((lbl_1_bss_B8.unk4 - 1 > 0) ? lbl_1_bss_B8.unk4 - 1 : 0); + Hu3DCameraPosSet(1, temp_f27, 37.139069 + temp_f26, 2599.7346f, 0, 1, 0, temp_f27, 50.0f + temp_f26, 0); + } + if (lbl_1_bss_18 != -1) { + float temp_f30; + s32 temp_r20; + lbl_1_bss_10++; + temp_f30 = 1.0f - ((lbl_1_bss_10 > 180) ? 1.0f : (lbl_1_bss_10 / 180.0f)); + Hu3DMotionSpeedSet(lbl_1_bss_30->model[0], 0.5 * temp_f30); + for (temp_r20 = 0; temp_r20 < 4; temp_r20++) { + Hu3DMotionSpeedSet(lbl_1_bss_34[temp_r20]->model[5], 0.5 * temp_f30); + } + if (temp_f30 > 0.0f && lbl_1_data_4[0] != -1) { + HuAudFXPitchSet(lbl_1_data_4[0], -8192.0f + (8192.0f * temp_f30)); + HuAudFXPitchSet(lbl_1_data_4[1], -8192.0f + (8192.0f * temp_f30)); + HuAudFXVolSet(lbl_1_data_4[0], 63.0f + (64.0f * temp_f30)); + HuAudFXVolSet(lbl_1_data_4[1], 63.0f + (64.0f * temp_f30)); + } + else { + if (lbl_1_data_4[0] != -1) { + HuAudFXStop(lbl_1_data_4[0]); + HuAudFXStop(lbl_1_data_4[1]); + lbl_1_data_4[0] = lbl_1_data_4[1] = -1; + } + } + } + } } void fn_1_D700(omObjData *object); void fn_1_A53C(omObjData *object) { - Work19C8 *sp28[4]; - s32 temp_r31; - for(temp_r31=0; temp_r31<4; temp_r31++) { - sp28[temp_r31] = lbl_1_bss_34[temp_r31]->data; - } - for(temp_r31=0; temp_r31<7; temp_r31++) { - s32 sp38[7] = { - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428 - }; - if(lbl_1_bss_48[temp_r31].unk0 > 3) { - lbl_1_bss_48[temp_r31].unk0 = 3; - } - if(lbl_1_bss_48[temp_r31].unk0 > 0) { - s32 temp_r19 = HuAudFXPlay(sp38[temp_r31]); - HuAudFXPanning(temp_r19, 0.5+((63*lbl_1_bss_48[temp_r31].unk4[lbl_1_bss_48[temp_r31].unk0-1])+64)); - lbl_1_bss_48[temp_r31].unk0--; - } - } - if(omSysExitReq && !WipeStatGet()) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_D700; - - } - switch(object->work[0]) { - case 1000: - if(!WipeStatGet()) { - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - s32 temp_r26; - lbl_1_bss_2C++; - if(lbl_1_bss_2C == 10.0f) { - lbl_1_bss_2C = 50.0f; - } - temp_r29 = (lbl_1_bss_2C > 180.0f) ? 255.0 : ((lbl_1_bss_2C > 120.0f) ? (255.0*((lbl_1_bss_2C-120.0f)/60.0)) : 0.0); - temp_r29 = (lbl_1_bss_2C >= 235.0f) ? 255 : ((lbl_1_bss_2C >= 205.0f) ? 192 : ((lbl_1_bss_2C >= 190.0f) ? 128 : (((lbl_1_bss_2C >= 160.0f) ? 64 : 0)))); - Hu3DGLightColorSet(lbl_1_bss_1C, temp_r29, temp_r29, temp_r29, 255); - for(temp_r28=0; temp_r28<4; temp_r28++) { - - Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[0], 60.0+(40.0*(temp_r29/255.0))); - for(temp_r27=0; temp_r27<3; temp_r27++) { - Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[temp_r27+1], 60.0+(40.0*(temp_r29/255.0))); - } - Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[4], 60.0+(40.0*(temp_r29/255.0))); - } - Hu3DMotionSpeedSet(lbl_1_bss_30->model[0], 0.5*((lbl_1_bss_2C < 100.0f) ? 0.0 : ((lbl_1_bss_2C < 320.0f) ? ((lbl_1_bss_2C-100)/220.0) : 1.0))); - for(temp_r26=0; temp_r26<4; temp_r26++) { - Hu3DMotionSpeedSet(lbl_1_bss_34[temp_r26]->model[5], 0.5*((lbl_1_bss_2C < 100.0f) ? 0.0 : ((lbl_1_bss_2C < 280.0f) ? ((lbl_1_bss_2C-100)/180.0) : 1.0))); - } - if(100.0f == lbl_1_bss_2C) { - Hu3DMotionSpeedSet(lbl_1_bss_30->model[1], 1.0f); - omVibrate(sp28[0]->unk14, 12, 4, 2); - omVibrate(sp28[1]->unk14, 12, 4, 2); - omVibrate(sp28[2]->unk14, 12, 4, 2); - omVibrate(sp28[3]->unk14, 12, 4, 2); - HuAudFXPlay(1431); - } - if(145.0f == lbl_1_bss_2C) { - lbl_1_data_4[0] = HuAudFXPlay(1429); - } - if(160.0f == lbl_1_bss_2C) { - lbl_1_data_4[1] = HuAudFXPlay(1430); - } - if(350.0f < lbl_1_bss_2C) { - object->work[0]++; - lbl_1_bss_2C = 0; - } - } - break; - - case 1001: - lbl_1_bss_2C++; - if(5.0f == lbl_1_bss_2C && lbl_1_bss_20 < 0) { - lbl_1_bss_20 = MGSeqStartCreate(); - } - if(lbl_1_bss_2C >= 5.0f && lbl_1_data_0 == -1 && (MGSeqStatGet(lbl_1_bss_20) & 0x10)) { - lbl_1_data_0 = HuAudSeqPlay(71); - } - if(lbl_1_bss_2C >= 5.0f && !MGSeqStatGet(lbl_1_bss_20) && lbl_1_bss_20 >= 0) { - object->work[0]++; - lbl_1_bss_20 = -1; - lbl_1_bss_2C = 0; - } else { - float temp_f26 = (lbl_1_bss_2C > 60.0f) ? 1.0 : ((lbl_1_bss_2C > 0.0f) ? (lbl_1_bss_2C/60.0) : 0.0); - float temp_f27 = 1.0f-temp_f26; - float temp_f31 = 830.0f*temp_f27; - float temp_f30 = (-1792.0f*temp_f27)+(50.0f*temp_f26); - float temp_f29 = (2854.0f*temp_f27)+(3500.0f*temp_f26); - float temp_f25 = ((2578.212*temp_f27)+(2600.0*temp_f26))/VECMagPoint(temp_f31, temp_f30, temp_f29); - temp_f31 *= temp_f25; - temp_f30 *= temp_f25; - temp_f29 *= temp_f25; - Hu3DCameraPosSet(1, temp_f31, temp_f30, temp_f29, -0.05f*temp_f27, 1, 0, 0, 50*temp_f26, 0); - (void)temp_f27; - - } - break; - - case 1002: - if(lbl_1_bss_18 != -1) { - object->work[0] = 1003; - lbl_1_bss_2C = 0; - } - break; - - case 1003: - if(lbl_1_bss_20 < 0 && lbl_1_bss_2C == 0.0f) { - lbl_1_bss_20 = MGSeqFinishCreate(); - for(temp_r31=0; temp_r31<4; temp_r31++) { - Work19C8 *temp_r25= lbl_1_bss_34[temp_r31]->data; - HuSprAttrSet(temp_r25->unkA4, 0, HUSPR_ATTR_DISPOFF); - } - if(lbl_1_data_0 != -1) { - HuAudSeqFadeOut(lbl_1_data_0, 100); - } - } else if(!MGSeqStatGet(lbl_1_bss_20)) { - lbl_1_bss_2C++; - if(lbl_1_bss_2C >= 30.0f){ - object->work[0]++; - lbl_1_bss_2C = 0; - if(lbl_1_bss_18 != 4){ - lbl_1_bss_20 = MGSeqWinCreate(sp28[lbl_1_bss_18]->unk18, -1, -1, -1); - GWPlayerCoinWinSet(sp28[lbl_1_bss_18]->unk14, 10); - HuAudSStreamPlay(1); - } else if(lbl_1_bss_18 == 4) { - lbl_1_bss_20 = MGSeqDrawCreate(); - HuAudSStreamPlay(4); - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - Hu3DModelRotSet(lbl_1_bss_34[temp_r31]->model[4], 0, (lbl_1_bss_18 == temp_r31) ? 90 : -90, 0); - } - } - } - break; - - case 1004: - lbl_1_bss_2C++; - if(210.0f < lbl_1_bss_2C) { - lbl_1_bss_20 = -1; - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_D700; - } - break; - - default: - OSReport("*** main mode error(%d)!!\n", object->work[0]); - - break; - } + Work19C8 *sp28[4]; + s32 temp_r31; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp28[temp_r31] = lbl_1_bss_34[temp_r31]->data; + } + for (temp_r31 = 0; temp_r31 < 7; temp_r31++) { + s32 sp38[7] = { 1422, 1423, 1424, 1425, 1426, 1427, 1428 }; + if (lbl_1_bss_48[temp_r31].unk0 > 3) { + lbl_1_bss_48[temp_r31].unk0 = 3; + } + if (lbl_1_bss_48[temp_r31].unk0 > 0) { + s32 temp_r19 = HuAudFXPlay(sp38[temp_r31]); + HuAudFXPanning(temp_r19, 0.5 + ((63 * lbl_1_bss_48[temp_r31].unk4[lbl_1_bss_48[temp_r31].unk0 - 1]) + 64)); + lbl_1_bss_48[temp_r31].unk0--; + } + } + if (omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_D700; + } + switch (object->work[0]) { + case 1000: + if (!WipeStatGet()) { + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + s32 temp_r26; + lbl_1_bss_2C++; + if (lbl_1_bss_2C == 10.0f) { + lbl_1_bss_2C = 50.0f; + } + temp_r29 = (lbl_1_bss_2C > 180.0f) ? 255.0 : ((lbl_1_bss_2C > 120.0f) ? (255.0 * ((lbl_1_bss_2C - 120.0f) / 60.0)) : 0.0); + temp_r29 = (lbl_1_bss_2C >= 235.0f) + ? 255 + : ((lbl_1_bss_2C >= 205.0f) ? 192 : ((lbl_1_bss_2C >= 190.0f) ? 128 : (((lbl_1_bss_2C >= 160.0f) ? 64 : 0)))); + Hu3DGLightColorSet(lbl_1_bss_1C, temp_r29, temp_r29, temp_r29, 255); + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + + Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[0], 60.0 + (40.0 * (temp_r29 / 255.0))); + for (temp_r27 = 0; temp_r27 < 3; temp_r27++) { + Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[temp_r27 + 1], 60.0 + (40.0 * (temp_r29 / 255.0))); + } + Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[4], 60.0 + (40.0 * (temp_r29 / 255.0))); + } + Hu3DMotionSpeedSet( + lbl_1_bss_30->model[0], 0.5 * ((lbl_1_bss_2C < 100.0f) ? 0.0 : ((lbl_1_bss_2C < 320.0f) ? ((lbl_1_bss_2C - 100) / 220.0) : 1.0))); + for (temp_r26 = 0; temp_r26 < 4; temp_r26++) { + Hu3DMotionSpeedSet(lbl_1_bss_34[temp_r26]->model[5], + 0.5 * ((lbl_1_bss_2C < 100.0f) ? 0.0 : ((lbl_1_bss_2C < 280.0f) ? ((lbl_1_bss_2C - 100) / 180.0) : 1.0))); + } + if (100.0f == lbl_1_bss_2C) { + Hu3DMotionSpeedSet(lbl_1_bss_30->model[1], 1.0f); + omVibrate(sp28[0]->unk14, 12, 4, 2); + omVibrate(sp28[1]->unk14, 12, 4, 2); + omVibrate(sp28[2]->unk14, 12, 4, 2); + omVibrate(sp28[3]->unk14, 12, 4, 2); + HuAudFXPlay(1431); + } + if (145.0f == lbl_1_bss_2C) { + lbl_1_data_4[0] = HuAudFXPlay(1429); + } + if (160.0f == lbl_1_bss_2C) { + lbl_1_data_4[1] = HuAudFXPlay(1430); + } + if (350.0f < lbl_1_bss_2C) { + object->work[0]++; + lbl_1_bss_2C = 0; + } + } + break; + + case 1001: + lbl_1_bss_2C++; + if (5.0f == lbl_1_bss_2C && lbl_1_bss_20 < 0) { + lbl_1_bss_20 = MGSeqStartCreate(); + } + if (lbl_1_bss_2C >= 5.0f && lbl_1_data_0 == -1 && (MGSeqStatGet(lbl_1_bss_20) & 0x10)) { + lbl_1_data_0 = HuAudSeqPlay(71); + } + if (lbl_1_bss_2C >= 5.0f && !MGSeqStatGet(lbl_1_bss_20) && lbl_1_bss_20 >= 0) { + object->work[0]++; + lbl_1_bss_20 = -1; + lbl_1_bss_2C = 0; + } + else { + float temp_f26 = (lbl_1_bss_2C > 60.0f) ? 1.0 : ((lbl_1_bss_2C > 0.0f) ? (lbl_1_bss_2C / 60.0) : 0.0); + float temp_f27 = 1.0f - temp_f26; + float temp_f31 = 830.0f * temp_f27; + float temp_f30 = (-1792.0f * temp_f27) + (50.0f * temp_f26); + float temp_f29 = (2854.0f * temp_f27) + (3500.0f * temp_f26); + float temp_f25 = ((2578.212 * temp_f27) + (2600.0 * temp_f26)) / VECMagPoint(temp_f31, temp_f30, temp_f29); + temp_f31 *= temp_f25; + temp_f30 *= temp_f25; + temp_f29 *= temp_f25; + Hu3DCameraPosSet(1, temp_f31, temp_f30, temp_f29, -0.05f * temp_f27, 1, 0, 0, 50 * temp_f26, 0); + (void)temp_f27; + } + break; + + case 1002: + if (lbl_1_bss_18 != -1) { + object->work[0] = 1003; + lbl_1_bss_2C = 0; + } + break; + + case 1003: + if (lbl_1_bss_20 < 0 && lbl_1_bss_2C == 0.0f) { + lbl_1_bss_20 = MGSeqFinishCreate(); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Work19C8 *temp_r25 = lbl_1_bss_34[temp_r31]->data; + HuSprAttrSet(temp_r25->unkA4, 0, HUSPR_ATTR_DISPOFF); + } + if (lbl_1_data_0 != -1) { + HuAudSeqFadeOut(lbl_1_data_0, 100); + } + } + else if (!MGSeqStatGet(lbl_1_bss_20)) { + lbl_1_bss_2C++; + if (lbl_1_bss_2C >= 30.0f) { + object->work[0]++; + lbl_1_bss_2C = 0; + if (lbl_1_bss_18 != 4) { + lbl_1_bss_20 = MGSeqWinCreate(sp28[lbl_1_bss_18]->unk18, -1, -1, -1); + GWPlayerCoinWinSet(sp28[lbl_1_bss_18]->unk14, 10); + HuAudSStreamPlay(1); + } + else if (lbl_1_bss_18 == 4) { + lbl_1_bss_20 = MGSeqDrawCreate(); + HuAudSStreamPlay(4); + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DModelRotSet(lbl_1_bss_34[temp_r31]->model[4], 0, (lbl_1_bss_18 == temp_r31) ? 90 : -90, 0); + } + } + } + break; + + case 1004: + lbl_1_bss_2C++; + if (210.0f < lbl_1_bss_2C) { + lbl_1_bss_20 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_D700; + } + break; + + default: + OSReport("*** main mode error(%d)!!\n", object->work[0]); + + break; + } } void fn_1_B6C4(ModelData *arg0, Mtx arg1) { - GXLoadPosMtxImm(arg1, GX_PNMTX0); - GXSetNumTevStages(1); - GXSetNumTexGens(0); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - { - s8 sp60[9] = { -1, 0, 1, 2, 3, 4, -1, -1, -1 }; - char *sp6C[6] = { - "m413_11-m413_11", - "m413_12-m413_12", - "m413_13-m413_13", - "m413_14-m413_14", - "g005m3A-bomhei_A", - "g005m3B-bomhei_B" - }; - s8 sp28[6] = { 3, 4, 5, 6, 11, 12 }; - char *sp50[4] = { - "m413_11b-m413_11b", - "m413_12b-m143_12b", - "m413_13b-m413_13b", - "twest-m413_14b" - }; - s8 sp24[4] = { 7, 8, 9, 10 }; - s32 temp_r27; - Mtx spB4; - Mtx sp84; - for(temp_r27=0; temp_r27<12; temp_r27++) { - StructBss2A6C *temp_r31; - for(temp_r31 = lbl_1_bss_7884[temp_r27]; temp_r31; temp_r31=temp_r31->unk48) { - float temp_f31; - if(temp_r31->unk0) { - s32 temp_r19 = 100; - s32 temp_r18 = 100; - float temp_f30 = temp_r31->unk1C.x; - float temp_f29 = temp_r31->unk1C.y; - float temp_f27 = 0; - if(temp_r31->unk4 && temp_r31->unk5) { - s32 sp40[4] = { 0, 1, 0, -1 }; - s32 sp30[4] = { 1, 0, -1, 0 }; - s32 temp_r24 = (temp_r31->unk4+3)%4; - s32 temp_r26 = ((((temp_r31->unk4+3)%4)+(9+((temp_r31->unk4-1)/4))))%4; - s32 temp_r25 = 0; - float temp_f28 = 1; - temp_f30 -= sp40[temp_r26]; - temp_f29 -= sp30[temp_r26]; - switch((temp_r31->unk4-1)/4) { - case 0: - case 2: - for(temp_r25=temp_r31->unk5-1; temp_r25>0; temp_r25--) { - temp_f28 /= 2.0; - } - temp_f31 = 1.0f-temp_f28; - temp_r26 = (temp_r24+3 == temp_r26) ? (temp_r26-4) : ((temp_r24-3 == temp_r26) ? (temp_r26+4) : temp_r26); - temp_f30 += sind((temp_f28*(temp_r24*90))+(temp_f31*(temp_r26*90))); - temp_f29 += cosd((temp_f28*(temp_r24*90))+(temp_f31*(temp_r26*90))); - break; - - case 1: - for(temp_r25=temp_r31->unk5-1; temp_r25>0; temp_r25--) { - temp_f28 /= 2.0; - } - temp_f31 = (temp_r31->unk5-1)/3.0; - temp_f31 = (temp_f31 < 0.0f) ? 0.0f : ((temp_f31 > 1.0f) ? 1.0f : temp_f31); - temp_f31 = (0.75*((1.0f-temp_f28)))+(0.25*temp_f31); - temp_f28 = 1.0f-temp_f31; - temp_f30 += sp40[temp_r24]*cosd(temp_f31*180.0f); - temp_f29 += sp30[temp_r24]*cosd(temp_f31*180.0f); - temp_f27 += sind(temp_f31*180.0f); - - break; - - default: - break; - } - - } - temp_f30 = (temp_f30*temp_r19)-(temp_r19*6); - temp_f29 = (temp_f29*temp_r18)-(temp_r18*5); - temp_f27 = 100*temp_f27; - if(sp60[temp_r31->unk0] != -1) { - s32 temp_r21 = sp60[temp_r31->unk0]+(temp_r31->unk0 == 5 && ((temp_r31->unk1C.z < 0.0f && (temp_r31->unk1 & 0x1) == 0) || (temp_r31->unk1 & 0x2) != 0)); - MTXTrans(spB4, 50+temp_f30, 50+temp_f29, temp_f27); - MTXConcat(arg1, spB4, spB4); - Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[temp_r21]], sp6C[temp_r21], spB4); - } - } - } - } - for(temp_r27=0; temp_r27<4; temp_r27++) { - s32 temp_r29; - for(temp_r29=0; temp_r29<2; temp_r29++) { - s32 temp_r17 = 25; - s32 sp20 = (temp_r27*300)-450; - s32 sp1C = (505-temp_r17)+(temp_r29*(temp_r17*2)); - Work19C8 *temp_r30 = lbl_1_bss_34[temp_r27]->data; - s32 temp_r23 = temp_r30->unk50[temp_r30->unk60][temp_r29]; - if(temp_r30->unk65[0] == 0 || temp_r30->unk65[0] > 7) { - if(sp60[temp_r23] != -1) { - MTXScale(spB4, 0.5f, 0.5f, 0.5f); - MTXTrans(sp84, sp20, sp1C+((temp_r30->unk65[0]) ? (200.0f*((15-temp_r30->unk65[0])/15.0f)) : 0.0f), 125.0f); - MTXConcat(sp84, spB4, spB4); - MTXConcat(arg1, spB4, spB4); - Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[sp60[temp_r23]]], sp6C[sp60[temp_r23]], spB4); - } - } - if(temp_r30->unk65[0] != 0 && temp_r30->unk65[0] < (15-(temp_r29*4)) && sp60[temp_r30->unk63[temp_r29]] != -1) { - MTXScale(spB4, 0.5f, 0.5f, 0.5f); - MTXTrans(sp84, sp20, sp1C, 125.0-(0.25*(40.0f*(temp_r30->unk65[0]/15.0f)))); - MTXConcat(sp84, spB4, spB4); - MTXConcat(arg1, spB4, spB4); - Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[sp60[temp_r30->unk63[temp_r29]]]], sp6C[sp60[temp_r30->unk63[temp_r29]]], spB4); - } - } - } - { - s32 temp_r28 = lbl_1_bss_FC; - s32 temp_r20; - for(temp_r20=0; temp_r20<300; temp_r20++) { - temp_r28++; - temp_r28 %= 300; - if(lbl_1_bss_100[temp_r28].unk0) { - MTXScale(spB4, 0.4f, 0.4f, 0.4f); - MTXRotDeg(sp84, 'x', 360.0*(lbl_1_bss_100[temp_r28].unk1C/255.0)); - MTXConcat(sp84, spB4, spB4); - MTXRotDeg(sp84, 'z', 360.0*(lbl_1_bss_100[temp_r28].unk1D/255.0)); - MTXConcat(sp84, spB4, spB4); - MTXTrans(sp84, lbl_1_bss_100[temp_r28].unk4.x, lbl_1_bss_100[temp_r28].unk4.y , lbl_1_bss_100[temp_r28].unk4.z); - MTXConcat(sp84, spB4, spB4); - MTXConcat(arg1, spB4, spB4); - Hu3DModelObjDraw(lbl_1_bss_30->model[sp24[sp60[lbl_1_bss_100[temp_r28].unk0]]], sp50[sp60[lbl_1_bss_100[temp_r28].unk0]], spB4); - } - } - } - } + GXLoadPosMtxImm(arg1, GX_PNMTX0); + GXSetNumTevStages(1); + GXSetNumTexGens(0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + { + s8 sp60[9] = { -1, 0, 1, 2, 3, 4, -1, -1, -1 }; + char *sp6C[6] = { "m413_11-m413_11", "m413_12-m413_12", "m413_13-m413_13", "m413_14-m413_14", "g005m3A-bomhei_A", "g005m3B-bomhei_B" }; + s8 sp28[6] = { 3, 4, 5, 6, 11, 12 }; + char *sp50[4] = { "m413_11b-m413_11b", "m413_12b-m143_12b", "m413_13b-m413_13b", "twest-m413_14b" }; + s8 sp24[4] = { 7, 8, 9, 10 }; + s32 temp_r27; + Mtx spB4; + Mtx sp84; + for (temp_r27 = 0; temp_r27 < 12; temp_r27++) { + StructBss2A6C *temp_r31; + for (temp_r31 = lbl_1_bss_7884[temp_r27]; temp_r31; temp_r31 = temp_r31->unk48) { + float temp_f31; + if (temp_r31->unk0) { + s32 temp_r19 = 100; + s32 temp_r18 = 100; + float temp_f30 = temp_r31->unk1C.x; + float temp_f29 = temp_r31->unk1C.y; + float temp_f27 = 0; + if (temp_r31->unk4 && temp_r31->unk5) { + s32 sp40[4] = { 0, 1, 0, -1 }; + s32 sp30[4] = { 1, 0, -1, 0 }; + s32 temp_r24 = (temp_r31->unk4 + 3) % 4; + s32 temp_r26 = ((((temp_r31->unk4 + 3) % 4) + (9 + ((temp_r31->unk4 - 1) / 4)))) % 4; + s32 temp_r25 = 0; + float temp_f28 = 1; + temp_f30 -= sp40[temp_r26]; + temp_f29 -= sp30[temp_r26]; + switch ((temp_r31->unk4 - 1) / 4) { + case 0: + case 2: + for (temp_r25 = temp_r31->unk5 - 1; temp_r25 > 0; temp_r25--) { + temp_f28 /= 2.0; + } + temp_f31 = 1.0f - temp_f28; + temp_r26 = (temp_r24 + 3 == temp_r26) ? (temp_r26 - 4) : ((temp_r24 - 3 == temp_r26) ? (temp_r26 + 4) : temp_r26); + temp_f30 += sind((temp_f28 * (temp_r24 * 90)) + (temp_f31 * (temp_r26 * 90))); + temp_f29 += cosd((temp_f28 * (temp_r24 * 90)) + (temp_f31 * (temp_r26 * 90))); + break; + + case 1: + for (temp_r25 = temp_r31->unk5 - 1; temp_r25 > 0; temp_r25--) { + temp_f28 /= 2.0; + } + temp_f31 = (temp_r31->unk5 - 1) / 3.0; + temp_f31 = (temp_f31 < 0.0f) ? 0.0f : ((temp_f31 > 1.0f) ? 1.0f : temp_f31); + temp_f31 = (0.75 * ((1.0f - temp_f28))) + (0.25 * temp_f31); + temp_f28 = 1.0f - temp_f31; + temp_f30 += sp40[temp_r24] * cosd(temp_f31 * 180.0f); + temp_f29 += sp30[temp_r24] * cosd(temp_f31 * 180.0f); + temp_f27 += sind(temp_f31 * 180.0f); + + break; + + default: + break; + } + } + temp_f30 = (temp_f30 * temp_r19) - (temp_r19 * 6); + temp_f29 = (temp_f29 * temp_r18) - (temp_r18 * 5); + temp_f27 = 100 * temp_f27; + if (sp60[temp_r31->unk0] != -1) { + s32 temp_r21 = sp60[temp_r31->unk0] + + (temp_r31->unk0 == 5 && ((temp_r31->unk1C.z < 0.0f && (temp_r31->unk1 & 0x1) == 0) || (temp_r31->unk1 & 0x2) != 0)); + MTXTrans(spB4, 50 + temp_f30, 50 + temp_f29, temp_f27); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[temp_r21]], sp6C[temp_r21], spB4); + } + } + } + } + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + s32 temp_r29; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + s32 temp_r17 = 25; + s32 sp20 = (temp_r27 * 300) - 450; + s32 sp1C = (505 - temp_r17) + (temp_r29 * (temp_r17 * 2)); + Work19C8 *temp_r30 = lbl_1_bss_34[temp_r27]->data; + s32 temp_r23 = temp_r30->unk50[temp_r30->unk60][temp_r29]; + if (temp_r30->unk65[0] == 0 || temp_r30->unk65[0] > 7) { + if (sp60[temp_r23] != -1) { + MTXScale(spB4, 0.5f, 0.5f, 0.5f); + MTXTrans(sp84, sp20, sp1C + ((temp_r30->unk65[0]) ? (200.0f * ((15 - temp_r30->unk65[0]) / 15.0f)) : 0.0f), 125.0f); + MTXConcat(sp84, spB4, spB4); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[sp60[temp_r23]]], sp6C[sp60[temp_r23]], spB4); + } + } + if (temp_r30->unk65[0] != 0 && temp_r30->unk65[0] < (15 - (temp_r29 * 4)) && sp60[temp_r30->unk63[temp_r29]] != -1) { + MTXScale(spB4, 0.5f, 0.5f, 0.5f); + MTXTrans(sp84, sp20, sp1C, 125.0 - (0.25 * (40.0f * (temp_r30->unk65[0] / 15.0f)))); + MTXConcat(sp84, spB4, spB4); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[sp60[temp_r30->unk63[temp_r29]]]], sp6C[sp60[temp_r30->unk63[temp_r29]]], spB4); + } + } + } + { + s32 temp_r28 = lbl_1_bss_FC; + s32 temp_r20; + for (temp_r20 = 0; temp_r20 < 300; temp_r20++) { + temp_r28++; + temp_r28 %= 300; + if (lbl_1_bss_100[temp_r28].unk0) { + MTXScale(spB4, 0.4f, 0.4f, 0.4f); + MTXRotDeg(sp84, 'x', 360.0 * (lbl_1_bss_100[temp_r28].unk1C / 255.0)); + MTXConcat(sp84, spB4, spB4); + MTXRotDeg(sp84, 'z', 360.0 * (lbl_1_bss_100[temp_r28].unk1D / 255.0)); + MTXConcat(sp84, spB4, spB4); + MTXTrans(sp84, lbl_1_bss_100[temp_r28].unk4.x, lbl_1_bss_100[temp_r28].unk4.y, lbl_1_bss_100[temp_r28].unk4.z); + MTXConcat(sp84, spB4, spB4); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp24[sp60[lbl_1_bss_100[temp_r28].unk0]]], sp50[sp60[lbl_1_bss_100[temp_r28].unk0]], spB4); + } + } + } + } } void fn_1_C6E0(omObjData *object) { - s32 temp_r30; - memset(lbl_1_bss_2A6C, 0, sizeof(lbl_1_bss_2A6C)); - memset(lbl_1_bss_7884, 0, sizeof(lbl_1_bss_7884)); - memset(lbl_1_bss_2684, 0, sizeof(lbl_1_bss_2684)); - lbl_1_bss_2680 = 0; - memset(lbl_1_bss_100, 0, sizeof(lbl_1_bss_100)); - lbl_1_bss_FC = 0; - memset(lbl_1_bss_D4, 0, sizeof(lbl_1_bss_D4)); - lbl_1_bss_D0 = 0; - memset(lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8)); - object->model[0] = Hu3DModelCreateFile(0x2C0000); - omSetTra(object, 0, 0, 0); - Hu3DMotionSpeedSet(object->model[0], 0); - object->model[1] = Hu3DModelCreateFile(0x2C0001); - Hu3DMotionSpeedSet(object->model[1], 0); - Hu3DModelPosSet(object->model[1], 0, 0, 0); - Hu3DModelAttrSet(object->model[0], 0x40000001); - object->model[2] = Hu3DHookFuncCreate(fn_1_B6C4); - Hu3DModelLayerSet(object->model[2], 1); - for(temp_r30=0; temp_r30<4; temp_r30++) { - object->model[temp_r30+3] = Hu3DModelCreateFile(0x2C0003+temp_r30); - Hu3DModelAttrSet(object->model[temp_r30+3], 1); - object->model[temp_r30+7] = Hu3DModelCreateFile(0x2C0007+temp_r30); - Hu3DModelAttrSet(object->model[temp_r30+7], 1); - } - for(temp_r30=0; temp_r30<2; temp_r30++) { - s32 temp_r28; - if(temp_r30 == 0) { - temp_r28 = 0x2C000B; - } else { - temp_r28 = 0x2C000C; - } - object->model[temp_r30+11] = Hu3DModelCreateFile(temp_r28); - Hu3DModelAttrSet(object->model[temp_r30+11], 1); - } - for(temp_r30=0; temp_r30<5; temp_r30++) { - s32 temp_r29; - object->model[(temp_r30*10)+13] = Hu3DModelCreateFile(0x2C001E); - for(temp_r29=0; temp_r29<10; temp_r29++) { - if(temp_r29 != 0) { - object->model[(13+(temp_r30*10)+temp_r29)] = Hu3DModelLink(object->model[(temp_r30*10)+13]); - } - Hu3DModelAttrSet(object->model[(13+(temp_r30*10)+temp_r29)], 1); - Hu3DModelLayerSet(object->model[(13+(temp_r30*10)+temp_r29)], 2); - } - } - { - void *temp_r27 = HuDataSelHeapReadNum(0x2C001F, MEMORY_DEFAULT_NUM, HEAP_DATA); - AnimData *temp_r26 = HuSprAnimRead(temp_r27); - lbl_1_bss_14 = HuSprGrpCreate(150); - for(temp_r30=0; temp_r30<150; temp_r30++) { - s16 temp_r25 = HuSprCreate(temp_r26, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_14, temp_r30, temp_r25); - HuSprAttrSet(lbl_1_bss_14, temp_r30, HUSPR_ATTR_DISPOFF); - HuSprColorSet(lbl_1_bss_14, temp_r30, 255, 255, 255); - HuSprTPLvlSet(lbl_1_bss_14, temp_r30, 1.0f); - HuSprPriSet(lbl_1_bss_14, temp_r30, 256+temp_r30); - - } - } - object->func = fn_1_8C10; + s32 temp_r30; + memset(lbl_1_bss_2A6C, 0, sizeof(lbl_1_bss_2A6C)); + memset(lbl_1_bss_7884, 0, sizeof(lbl_1_bss_7884)); + memset(lbl_1_bss_2684, 0, sizeof(lbl_1_bss_2684)); + lbl_1_bss_2680 = 0; + memset(lbl_1_bss_100, 0, sizeof(lbl_1_bss_100)); + lbl_1_bss_FC = 0; + memset(lbl_1_bss_D4, 0, sizeof(lbl_1_bss_D4)); + lbl_1_bss_D0 = 0; + memset(lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8)); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x00)); + omSetTra(object, 0, 0, 0); + Hu3DMotionSpeedSet(object->model[0], 0); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x01)); + Hu3DMotionSpeedSet(object->model[1], 0); + Hu3DModelPosSet(object->model[1], 0, 0, 0); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->model[2] = Hu3DHookFuncCreate(fn_1_B6C4); + Hu3DModelLayerSet(object->model[2], 1); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + object->model[temp_r30 + 3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x03) + temp_r30); + Hu3DModelAttrSet(object->model[temp_r30 + 3], HU3D_ATTR_DISPOFF); + object->model[temp_r30 + 7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x07) + temp_r30); + Hu3DModelAttrSet(object->model[temp_r30 + 7], HU3D_ATTR_DISPOFF); + } + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + s32 temp_r28; + if (temp_r30 == 0) { + temp_r28 = DATA_MAKE_NUM(DATADIR_M413, 0x0B); + } + else { + temp_r28 = DATA_MAKE_NUM(DATADIR_M413, 0x0C); + } + object->model[temp_r30 + 11] = Hu3DModelCreateFile(temp_r28); + Hu3DModelAttrSet(object->model[temp_r30 + 11], HU3D_ATTR_DISPOFF); + } + for (temp_r30 = 0; temp_r30 < 5; temp_r30++) { + s32 temp_r29; + object->model[(temp_r30 * 10) + 13] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x1E)); + for (temp_r29 = 0; temp_r29 < 10; temp_r29++) { + if (temp_r29 != 0) { + object->model[(13 + (temp_r30 * 10) + temp_r29)] = Hu3DModelLink(object->model[(temp_r30 * 10) + 13]); + } + Hu3DModelAttrSet(object->model[(13 + (temp_r30 * 10) + temp_r29)], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[(13 + (temp_r30 * 10) + temp_r29)], 2); + } + } + { + void *temp_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M413, 0x1F), MEMORY_DEFAULT_NUM, HEAP_DATA); + AnimData *temp_r26 = HuSprAnimRead(temp_r27); + lbl_1_bss_14 = HuSprGrpCreate(150); + for (temp_r30 = 0; temp_r30 < 150; temp_r30++) { + s16 temp_r25 = HuSprCreate(temp_r26, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_14, temp_r30, temp_r25); + HuSprAttrSet(lbl_1_bss_14, temp_r30, HUSPR_ATTR_DISPOFF); + HuSprColorSet(lbl_1_bss_14, temp_r30, 255, 255, 255); + HuSprTPLvlSet(lbl_1_bss_14, temp_r30, 1.0f); + HuSprPriSet(lbl_1_bss_14, temp_r30, 256 + temp_r30); + } + } + object->func = fn_1_8C10; } - void fn_1_CBB4(omObjData *object) { - s32 sp8[4] = { 0, 1, 2, 3 }; - s32 temp_r27 = 0; - Work19C8 *temp_r31 = object->data; - s32 temp_r29; - s32 temp_r28; - memset(temp_r31, 0, sizeof(Work19C8)); - if(object->work[0] == 0) { - lbl_1_data_C[0] = lbl_1_data_C[1] = lbl_1_data_C[2] = lbl_1_data_C[3] = -1; - for(temp_r29=0; temp_r29<4; temp_r29++) { - s32 temp_r26; - repeat_iter: - temp_r26 = rand8()%4; - if(lbl_1_data_C[temp_r26] != -1) { - goto repeat_iter; - } - lbl_1_data_C[temp_r26] = temp_r29; - } - } - for(temp_r29=0; temp_r29<4; temp_r29++) { - for(temp_r28=0; temp_r28<4; temp_r28++) { - if(temp_r29 == lbl_1_data_C[temp_r28]) { - sp8[temp_r27] = temp_r28; - temp_r27++; - } - } - } - temp_r31->unk0 = temp_r31->unk4 = temp_r31->unk8 = temp_r31->unkC = 0; - temp_r31->unk10 = object->work[0]; - temp_r31->unk14 = sp8[temp_r31->unk10]; - if(temp_r31->unk14 == 4) { - OSReport("m413:wrong player group\n"); - temp_r31->unk14 = temp_r31->unk10; - } - temp_r31->unk18 = GWPlayerCfg[temp_r31->unk14].character; - temp_r31->unk1C = (GWPlayerCfg[temp_r31->unk14].iscom) ? -1 : GWPlayerCfg[temp_r31->unk14].pad_idx; - temp_r31->unk20 = (temp_r31->unk1C != -1) ? 0 : GWPlayerCfg[temp_r31->unk14].diff; - temp_r31->unk2C = -1; - temp_r31->unk24 = 0; - temp_r31->unk28 = temp_r31->unk24; - temp_r31->unk40 = temp_r31->unk24; - temp_r31->unk44 = 100; - temp_r31->unk72 = 2; - temp_r31->unk74 = 0; - fn_1_EC0(temp_r31); - temp_r31->unk60 = 0; - temp_r31->unk68 = ((rand8()%4)*7)+3; - temp_r31->unk6C = temp_r31->unk68; - temp_r31->unk71 = 20; - temp_r31->unk70 = 0; - temp_r31->unk98 = 0; - temp_r31->unk9C = 0; - object->model[0] = Hu3DModelCreateFile(0x2C0002); - Hu3DModelLayerSet(object->model[0], 1); - object->model[1] = Hu3DModelLink(object->model[0]); - object->model[2] = Hu3DModelLink(object->model[0]); - object->model[3] = Hu3DModelLink(object->model[0]); - Hu3DModelPosSet(object->model[1], (temp_r31->unk10*300)-525, -602, 40); - Hu3DModelPosSet(object->model[2], (temp_r31->unk10*300)-450, -602, 40); - Hu3DModelPosSet(object->model[3], (temp_r31->unk10*300)-375, -602, 40); - Hu3DMotionTimeSet(object->model[1], 60.0f); - Hu3DMotionTimeSet(object->model[2], 60.0f); - Hu3DMotionTimeSet(object->model[3], 60.0f); - Hu3DMotionSpeedSet(object->model[1], 0.0f); - Hu3DMotionSpeedSet(object->model[2], 0.0f); - Hu3DMotionSpeedSet(object->model[3], 0.0f); - Hu3DModelAttrSet(object->model[0], 1); - Hu3DMotionTimeSet(object->model[0], 60.0f); - Hu3DMotionSpeedSet(object->model[0], 0.0f); - object->model[4] = Hu3DModelCreateFile(0x2C000D+temp_r31->unk18); - Hu3DModelPosSet(object->model[4], (temp_r31->unk10*300)-450, 670, 60); - Hu3DMotionTimeSet(object->model[4], 60.0f); - Hu3DMotionSpeedSet(object->model[4], 0.0f); - object->model[5] = Hu3DModelCreateFile(0x2C0015+temp_r31->unk18); - Hu3DModelPosSet(object->model[5], (temp_r31->unk10*300)-450, 0, 0); - Hu3DModelAttrSet(object->model[5], 0x40000001); - Hu3DMotionSpeedSet(object->model[5], 0.0f); - { - AnimData *temp_r23 = HuSprAnimReadFile(0x610038+GWPlayerCfg[temp_r31->unk14].character); - s16 temp_r22; - temp_r31->unkA4 = HuSprGrpCreate(1); - temp_r22 = HuSprCreate(temp_r23, 0, 0); - HuSprGrpMemberSet(temp_r31->unkA4, 0, temp_r22); - HuSprAttrSet(temp_r31->unkA4, 0, HUSPR_ATTR_LOOP|HUSPR_ATTR_DISPOFF|HUSPR_ATTR_LINEAR); - HuSprColorSet(temp_r31->unkA4, 0, 255, 255, 255); - HuSprTPLvlSet(temp_r31->unkA4, 0, 1); - HuSprPriSet(temp_r31->unkA4, 0, 512); - HuSprScaleSet(temp_r31->unkA4, 0, 0.875f, 0.875f); - HuSprSpeedSet(temp_r31->unkA4, 0, 1.0f); - } - - object->func = fn_1_19C4; + s32 sp8[4] = { 0, 1, 2, 3 }; + s32 temp_r27 = 0; + Work19C8 *temp_r31 = object->data; + s32 temp_r29; + s32 temp_r28; + memset(temp_r31, 0, sizeof(Work19C8)); + if (object->work[0] == 0) { + lbl_1_data_C[0] = lbl_1_data_C[1] = lbl_1_data_C[2] = lbl_1_data_C[3] = -1; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + s32 temp_r26; + repeat_iter: + temp_r26 = rand8() % 4; + if (lbl_1_data_C[temp_r26] != -1) { + goto repeat_iter; + } + lbl_1_data_C[temp_r26] = temp_r29; + } + } + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + if (temp_r29 == lbl_1_data_C[temp_r28]) { + sp8[temp_r27] = temp_r28; + temp_r27++; + } + } + } + temp_r31->unk0 = temp_r31->unk4 = temp_r31->unk8 = temp_r31->unkC = 0; + temp_r31->unk10 = object->work[0]; + temp_r31->unk14 = sp8[temp_r31->unk10]; + if (temp_r31->unk14 == 4) { + OSReport("m413:wrong player group\n"); + temp_r31->unk14 = temp_r31->unk10; + } + temp_r31->unk18 = GWPlayerCfg[temp_r31->unk14].character; + temp_r31->unk1C = (GWPlayerCfg[temp_r31->unk14].iscom) ? -1 : GWPlayerCfg[temp_r31->unk14].pad_idx; + temp_r31->unk20 = (temp_r31->unk1C != -1) ? 0 : GWPlayerCfg[temp_r31->unk14].diff; + temp_r31->unk2C = -1; + temp_r31->unk24 = 0; + temp_r31->unk28 = temp_r31->unk24; + temp_r31->unk40 = temp_r31->unk24; + temp_r31->unk44 = 100; + temp_r31->unk72 = 2; + temp_r31->unk74 = 0; + fn_1_EC0(temp_r31); + temp_r31->unk60 = 0; + temp_r31->unk68 = ((rand8() % 4) * 7) + 3; + temp_r31->unk6C = temp_r31->unk68; + temp_r31->unk71 = 20; + temp_r31->unk70 = 0; + temp_r31->unk98 = 0; + temp_r31->unk9C = 0; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x02)); + Hu3DModelLayerSet(object->model[0], 1); + object->model[1] = Hu3DModelLink(object->model[0]); + object->model[2] = Hu3DModelLink(object->model[0]); + object->model[3] = Hu3DModelLink(object->model[0]); + Hu3DModelPosSet(object->model[1], (temp_r31->unk10 * 300) - 525, -602, 40); + Hu3DModelPosSet(object->model[2], (temp_r31->unk10 * 300) - 450, -602, 40); + Hu3DModelPosSet(object->model[3], (temp_r31->unk10 * 300) - 375, -602, 40); + Hu3DMotionTimeSet(object->model[1], 60.0f); + Hu3DMotionTimeSet(object->model[2], 60.0f); + Hu3DMotionTimeSet(object->model[3], 60.0f); + Hu3DMotionSpeedSet(object->model[1], 0.0f); + Hu3DMotionSpeedSet(object->model[2], 0.0f); + Hu3DMotionSpeedSet(object->model[3], 0.0f); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(object->model[0], 60.0f); + Hu3DMotionSpeedSet(object->model[0], 0.0f); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x0D) + temp_r31->unk18); + Hu3DModelPosSet(object->model[4], (temp_r31->unk10 * 300) - 450, 670, 60); + Hu3DMotionTimeSet(object->model[4], 60.0f); + Hu3DMotionSpeedSet(object->model[4], 0.0f); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x15) + temp_r31->unk18); + Hu3DModelPosSet(object->model[5], (temp_r31->unk10 * 300) - 450, 0, 0); + Hu3DModelAttrSet(object->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[5], 0.0f); + { + AnimData *temp_r23 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGCONST, 0x38) + GWPlayerCfg[temp_r31->unk14].character); + s16 temp_r22; + temp_r31->unkA4 = HuSprGrpCreate(1); + temp_r22 = HuSprCreate(temp_r23, 0, 0); + HuSprGrpMemberSet(temp_r31->unkA4, 0, temp_r22); + HuSprAttrSet(temp_r31->unkA4, 0, HUSPR_ATTR_LOOP | HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LINEAR); + HuSprColorSet(temp_r31->unkA4, 0, 255, 255, 255); + HuSprTPLvlSet(temp_r31->unkA4, 0, 1); + HuSprPriSet(temp_r31->unkA4, 0, 512); + HuSprScaleSet(temp_r31->unkA4, 0, 0.875f, 0.875f); + HuSprSpeedSet(temp_r31->unkA4, 0, 1.0f); + } + + object->func = fn_1_19C4; } void fn_1_D340(omObjData *object) { - object->work[0] = 1000; - memset(lbl_1_bss_48, 0, sizeof(StructBss48)); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_A53C; + object->work[0] = 1000; + memset(lbl_1_bss_48, 0, sizeof(StructBss48)); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_A53C; } void ObjectSetup(void) { - s32 i; - OSReport("******* M413 ObjectSetup *********\n"); - HuAudSndGrpSet(38); - lbl_1_bss_24 = omInitObjMan(600, 8192); - omGameSysInit(lbl_1_bss_24); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - Hu3DCameraPerspectiveSet(1, 40, 10, 20000, 1.2f); - { - Vec sp54 = { 616.5714f, -1331.2f, 2120.1142f }; - Vec sp48 = { -0.05f, 1.0f, 0.0f }; - Vec sp3C = { 0, 0, 0 }; - Vec sp30 = { 0, 0, 0 }; - Vec sp24 = { 0, 0, -1 }; - Hu3DCameraPosSetV(1, &sp54, &sp48, &sp3C); - } - { - Vec sp18 = { -822.5f, 6743.0f, 4625.5f }; - Vec spC = { 0.1545085f, -0.788462f, -0.5850064f }; - GXColor sp8 = { 0, 0, 0, 255 }; - lbl_1_bss_1C = Hu3DGLightCreateV(&sp18, &spC, &sp8); - } - Hu3DGLightStaticSet(lbl_1_bss_1C, 1); - Hu3DGLightSpotSet(lbl_1_bss_1C, 20, 2); - lbl_1_bss_20 = -1; - lbl_1_bss_18 = -1; - lbl_1_bss_30 = omAddObjEx(lbl_1_bss_24, 101, 63, 0, 1, fn_1_C6E0); - for(i=0; i<4; i++) { - omObjData *object = lbl_1_bss_34[i] = omAddObjEx(lbl_1_bss_24, 100, 6, 0, 0, fn_1_CBB4); - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work19C8), MEMORY_DEFAULT_NUM); - object->work[0] = i; - } - lbl_1_bss_44 = omAddObjEx(lbl_1_bss_24, 102, 0, 0, -1, fn_1_D340); + s32 i; + OSReport("******* M413 ObjectSetup *********\n"); + HuAudSndGrpSet(38); + lbl_1_bss_24 = omInitObjMan(600, 8192); + omGameSysInit(lbl_1_bss_24); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraPerspectiveSet(1, 40, 10, 20000, 1.2f); + { + Vec sp54 = { 616.5714f, -1331.2f, 2120.1142f }; + Vec sp48 = { -0.05f, 1.0f, 0.0f }; + Vec sp3C = { 0, 0, 0 }; + Vec sp30 = { 0, 0, 0 }; + Vec sp24 = { 0, 0, -1 }; + Hu3DCameraPosSetV(1, &sp54, &sp48, &sp3C); + } + { + Vec sp18 = { -822.5f, 6743.0f, 4625.5f }; + Vec spC = { 0.1545085f, -0.788462f, -0.5850064f }; + GXColor sp8 = { 0, 0, 0, 255 }; + lbl_1_bss_1C = Hu3DGLightCreateV(&sp18, &spC, &sp8); + } + Hu3DGLightStaticSet(lbl_1_bss_1C, 1); + Hu3DGLightSpotSet(lbl_1_bss_1C, 20, 2); + lbl_1_bss_20 = -1; + lbl_1_bss_18 = -1; + lbl_1_bss_30 = omAddObjEx(lbl_1_bss_24, 101, 63, 0, 1, fn_1_C6E0); + for (i = 0; i < 4; i++) { + omObjData *object = lbl_1_bss_34[i] = omAddObjEx(lbl_1_bss_24, 100, 6, 0, 0, fn_1_CBB4); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work19C8), MEMORY_DEFAULT_NUM); + object->work[0] = i; + } + lbl_1_bss_44 = omAddObjEx(lbl_1_bss_24, 102, 0, 0, -1, fn_1_D340); } void fn_1_D700(omObjData *object) { - if(!WipeStatGet()) { - if(lbl_1_bss_20 >= 0) { - MGSeqKill(lbl_1_bss_20); - } - MGSeqKillAll(); - HuAudAllStop(); - omOvlReturnEx(1, 1); - } + if (!WipeStatGet()) { + if (lbl_1_bss_20 >= 0) { + MGSeqKill(lbl_1_bss_20); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } } diff --git a/src/REL/m414Dll/main.c b/src/REL/m414Dll/main.c index a906f552..8ca555e6 100644 --- a/src/REL/m414Dll/main.c +++ b/src/REL/m414Dll/main.c @@ -9,7 +9,6 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" typedef struct UnkM414Struct { s32 unk00; @@ -240,7 +239,8 @@ void ObjectSetup(void) if (var_r30 >= 6) { if (lbl_1_bss_978 == 0) { var_r30 = 1; - } else { + } + else { var_r30 = 0; } } @@ -312,9 +312,7 @@ void fn_1_CD8(s32 arg0, s32 arg1, float arg8) var_r30->user_data = var_r31; var_r31->unk_00 = arg0; var_r31->unk_04 = arg1; - var_r31->unk_08 = arg8; - (void)var_r31; - (void)var_r31; + var_r31->unk_08 = arg8; } void fn_1_D54(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3) @@ -374,7 +372,7 @@ void fn_1_D54(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3) var_r31 = arg1->unk_48; for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { if (0.0f != var_r31->unk14.x) { - PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); if (var_r31->unk14.x > 10.0f) { var_r31->unk14.x = var_r31->unk14.x - 1.0f; } @@ -574,7 +572,8 @@ void fn_1_1C48(void) var_r31 = HuPrcCurrentGet()->user_data; if (var_r31->unk_44 & 1) { HuAudFXPlay(1446); - } else { + } + else { HuAudFXPlay(1445); } var_r31->unk_54 = 1; @@ -622,7 +621,8 @@ void fn_1_1E04(void) var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 8), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); var_r22 = var_r30; - } else { + } + else { var_r30 = Hu3DModelLink(var_r22); } Hu3DModelCameraSet(var_r30, 15); @@ -632,47 +632,51 @@ void fn_1_1E04(void) var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 0), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); var_r24 = var_r30; - } else { + } + else { var_r30 = Hu3DModelLink(var_r24); } var_r31->unk_30[var_r29] = var_r30; Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); Hu3DModelShadowMapSet(var_r30); - Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_NOCULL); Hu3DModelRotSet(var_r30, 0.0f, 40.0f * var_r29, 0.0f); Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); } if (!var_r28) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 5), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); - } else { + } + else { var_r30 = Hu3DModelLink(lbl_1_bss_F0[0].unk_42); } var_r31->unk_42 = var_r30; Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); Hu3DModelShadowMapSet(var_r30); - Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); for (var_r29 = 0; var_r29 < 9; var_r29++) { if (!var_r28) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 1) + lbl_1_data_68[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); - } else { + } + else { var_r30 = Hu3DModelLink(lbl_1_bss_F0->unk_00[var_r29]); } var_r31->unk_00[var_r29] = var_r30; Hu3DModelRotSet(var_r30, 0.0f, 40.0f * var_r29, 0.0f); Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); - Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_NOCULL); Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); - Hu3DModelAttrSet(var_r30, 0x40000002); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE); } for (var_r29 = 0; var_r29 < 16; var_r29++) { if (!var_r28 && !var_r29) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 6), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); var_r23 = var_r30; - } else { + } + else { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 6), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); var_r23 = var_r30; @@ -681,15 +685,16 @@ void fn_1_1E04(void) var_r31->unk_D4[var_r29] = var_r30; Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 330.0f - (330.0f * (var_r29 & 1)), 2000.0f * (var_r28 / 2)); Hu3DModelRotSet(var_r30, 0.0f, 40.0f * ((var_r29 + 2) / 2), 0.0f); - Hu3DModelAttrSet(var_r30, 0x4000); - Hu3DModelAttrSet(var_r30, 0x40000082); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_SHAPE_PAUSE); Hu3DMotionSpeedSet(var_r30, 3.0f); Hu3DMotionShapeSpeedSet(var_r30, 3.0f); } if (!var_r28) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 9), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); - } else { + } + else { var_r30 = Hu3DModelLink(lbl_1_bss_F0[0].unk_20); } var_r31->unk_20 = var_r30; @@ -702,7 +707,7 @@ void fn_1_1E04(void) } Hu3DMotionSet(var_r30, var_r31->unk_22[0]); Hu3DMotionTimeSet(var_r30, 0.0f); - Hu3DModelAttrSet(var_r30, 0x40000002); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE); Hu3DMotionSpeedSet(var_r30, 2.0f); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 15), MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -753,22 +758,24 @@ void fn_1_1E04(void) var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 22) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); sp18[lbl_1_bss_938[var_r29]] = var_r30; - } else { + } + else { var_r30 = Hu3DModelLink(sp18[lbl_1_bss_938[var_r29]]); } - } else { + } + else { var_r30 = Hu3DModelLink(sp18[lbl_1_bss_938[var_r29]]); } var_r31->unk_94[var_r29] = var_r30; var_r31->unk_F4[var_r29] = 0; Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); - Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 34) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); var_r31->unk_B4[var_r29] = Hu3DJointMotion(var_r30, var_r27); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 28) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); - Hu3DModelAttrSet(var_r30, 0x40000001); - Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_NOCULL); var_f29 = -950.0 * sind(var_f31); var_f29 = var_f29; var_f28 = -950.0 * cosd(var_f31); @@ -776,7 +783,8 @@ void fn_1_1E04(void) if (var_r29 & 1) { var_f30 = 220.0f; var_f31 += 40.0f; - } else { + } + else { var_f30 = 570.0f; } if (!lbl_1_bss_938[var_r29]) { @@ -785,7 +793,8 @@ void fn_1_1E04(void) HuSetVecF(&var_r31->unk_134[var_r29], var_f29, var_f30, var_f28); if (lbl_1_bss_938[var_r29]) { (void)var_r29; - } else { + } + else { (void)var_r29; } Hu3DModelPosSet(var_r30, var_f29 + (2000.0f * (var_r28 % 2)), var_f30, var_f28 + (2000.0f * (var_r28 / 2))); @@ -812,7 +821,7 @@ void fn_1_1E04(void) var_r31->unk_14[var_r29] = CharModelMotionCreate(lbl_1_data_30[GWPlayerCfg[var_r28].character], lbl_1_data_50[var_r29]); } CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r28].character], var_r31->unk_14[0]); - Hu3DModelAttrSet(var_r31->unk_12, 0x40000001); + Hu3DModelAttrSet(var_r31->unk_12, HU3D_MOTATTR_LOOP); CharModelMotionDataClose(lbl_1_data_30[GWPlayerCfg[var_r28].character]); var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0), MEMORY_DEFAULT_NUM)); @@ -875,7 +884,7 @@ void fn_1_1E04(void) lbl_1_bss_A10 = var_r30; Hu3DModelScaleSet(var_r30, 0.5f, 0.5f, 0.5f); Hu3DModelCameraSet(var_r30, 16); - Hu3DModelAttrSet(var_r30, 0x40000002); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); @@ -956,7 +965,8 @@ void fn_1_3B34(void) var_f31 = (0.5 * var_f31) + (0.5 * (1.0f - ((1.0f - var_f31) * (1.0f - var_f31)))); if (var_f31 < 0.75) { var_f29 = var_f31 / 0.75; - } else { + } + else { var_f29 = 1.0; } var_f30 = var_f29; @@ -984,7 +994,8 @@ void fn_1_3D48(s32 arg0, s32 arg1) var_r28 = lbl_1_bss_97C[var_r31->unk_44]; if (arg1 == 0) { lbl_1_bss_97C[var_r31->unk_44]++; - } else { + } + else { lbl_1_bss_97C[var_r31->unk_44]--; } for (var_r30 = 0; var_r30 < 3; var_r30++) { @@ -994,11 +1005,12 @@ void fn_1_3D48(s32 arg0, s32 arg1) var_r29->user_data = var_r31; var_r31->unk_5C = var_r30; } - HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 2, 4); - HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 3, 4); - } else { - HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 2, 4); - HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 3, 4); + HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 2, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 3, HUSPR_ATTR_DISPOFF); + } + else { + HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 3, HUSPR_ATTR_DISPOFF); } } } @@ -1040,21 +1052,24 @@ void fn_1_3ECC(void) var_f31 = 40.0f * ((var_r30 + 2) / 2); if (var_r31->unk_70 - var_f31 >= 0.0f) { var_f29 = var_r31->unk_70 - var_f31; - } else { + } + else { var_f29 = -(var_r31->unk_70 - var_f31); } if (var_f29 < 45.0f || (0.0f == var_r31->unk_70 && var_r30 >= 14)) { if (var_r30 == fn_1_654C(var_r31->unk_44, 0) || var_r30 == fn_1_654C(var_r31->unk_44, 1)) { if (var_r31->unk_44 & 1) { HuAudFXPlay(1434); - } else { + } + else { HuAudFXPlay(1433); } - } else { + } + else { HuAudFXPlay(1450); } } - Hu3DModelAttrReset(var_r31->unk_D4[var_r30], 0x40000186); + Hu3DModelAttrReset(var_r31->unk_D4[var_r30], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV | HU3D_MOTATTR_SHAPE_PAUSE | HU3D_MOTATTR_SHAPE_REV); do { var_r28 = lbl_1_bss_990[var_r30][var_r29++]; if (var_r29 >= 4) { @@ -1069,23 +1084,26 @@ void fn_1_3ECC(void) } } while (lbl_1_bss_98C != 5 && var_r31->unk_1F8 != -1 && lbl_1_bss_978 == lbl_1_bss_938[var_r31->unk_1F8]); - Hu3DModelAttrReset(var_r31->unk_D4[var_r30], 0x40000082); - Hu3DModelAttrSet(var_r31->unk_D4[var_r30], 0x40000104); + Hu3DModelAttrReset(var_r31->unk_D4[var_r30], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_SHAPE_PAUSE); + Hu3DModelAttrSet(var_r31->unk_D4[var_r30], HU3D_MOTATTR_REV | HU3D_MOTATTR_SHAPE_REV); HuPrcSleep(10); var_f30 = 40.0f * ((var_r30 + 2) / 2); if (var_r31->unk_70 - var_f30 >= 0.0f) { var_f28 = var_r31->unk_70 - var_f30; - } else { + } + else { var_f28 = -(var_r31->unk_70 - var_f30); } if (var_f28 < 45.0f || (0.0f == var_r31->unk_70 && var_r30 >= 14)) { if (var_r30 == fn_1_654C(var_r31->unk_44, 0) || var_r30 == fn_1_654C(var_r31->unk_44, 1)) { if (var_r31->unk_44 & 1) { HuAudFXPlay(1436); - } else { + } + else { HuAudFXPlay(1435); } - } else { + } + else { HuAudFXPlay(1452); } } @@ -1122,22 +1140,25 @@ void fn_1_42AC(void) HuPrcSleep(30); if (var_r31->unk_44 & 1) { HuAudFXPlay(1444); - } else { + } + else { HuAudFXPlay(1443); } if (var_r31->unk_44 & 1) { HuAudFXPlay(1448); - } else { + } + else { HuAudFXPlay(1447); } if (var_r30->unk_08) { var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.0)); var_f26 = 150.0 + (-200.0 * sin(0.0)); var_f23 = -200.0 * (cos(0.0) * cosd(lbl_1_bss_920[var_r27])); - } else { - var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.3490658503988659)); - var_f26 = 150.0 + (-200.0 * sin(-0.3490658503988659)); - var_f23 = -200.0 * (cos(-0.3490658503988659) * cosd(lbl_1_bss_920[var_r27])); + } + else { + var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cosd(20)); + var_f26 = 150.0 + -200.0 * sind(-20); + var_f23 = -200.0 * (cosd(-20) * cosd(lbl_1_bss_920[var_r27])); } if (!lbl_1_bss_938[var_r30->unk_04]) { var_f26 += 70.0f; @@ -1175,7 +1196,7 @@ void fn_1_42AC(void) HuPrcVSleep(); } var_r31->unk_F4[var_r30->unk_04] = 1; - Hu3DModelAttrSet(var_r31->unk_94[var_r30->unk_04], 1); + Hu3DModelAttrSet(var_r31->unk_94[var_r30->unk_04], HU3D_ATTR_DISPOFF); for (var_r28 = 0, sp8[0] = 0; var_r28 < 4; var_r28++) { if (lbl_1_bss_97C[var_r28] >= 3) { break; @@ -1186,12 +1207,13 @@ void fn_1_42AC(void) } CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); if (var_r30->unk_08) { - CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 60.0f, 5.0f, 0); - } else { - CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 60.0f, 5.0f, HU3D_MOTATTR_NONE); + } + else { + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } HuPrcSleep(5); - Hu3DModelAttrSet(var_r31->unk_12, 0x40000002); + Hu3DModelAttrSet(var_r31->unk_12, HU3D_MOTATTR_PAUSE); CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); var_r30->unk_0C = 0; HuPrcSleep(5); @@ -1253,7 +1275,8 @@ s32 fn_1_4C74(UnkM414BssF0Struct *arg0) } if (var_r29 - sp8[var_r31] >= 0) { var_r25 = var_r29 - sp8[var_r31]; - } else { + } + else { var_r25 = -(var_r29 - sp8[var_r31]); } var_r27 = var_r25; @@ -1305,7 +1328,7 @@ inline s32 fn_1_4C74_inline(UnkM414BssF0Struct *arg0) if (!var_r31) { return 0; } - + return var_r29 - sp8[var_r26]; } @@ -1354,14 +1377,17 @@ void fn_1_4E10(UnkM414BssF0Struct *arg0) if (!(Hu3DModelMotionAttrGet(arg0->unk_D4[fn_1_654C(arg0->unk_44, 0)]) & 0x40000004)) { arg0->unk_200 = 256; } - } else { + } + else { arg0->unk_1FD = -50; } - } else if (lbl_1_bss_978 == lbl_1_bss_938[fn_1_654C(arg0->unk_44, 1)] && !arg0->unk_F4[fn_1_654C(arg0->unk_44, 1)]) { + } + else if (lbl_1_bss_978 == lbl_1_bss_938[fn_1_654C(arg0->unk_44, 1)] && !arg0->unk_F4[fn_1_654C(arg0->unk_44, 1)]) { if (!(Hu3DModelMotionAttrGet(arg0->unk_D4[fn_1_654C(arg0->unk_44, 1)]) & 0x40000004)) { arg0->unk_200 = 256; } - } else { + } + else { arg0->unk_1FD = 50; } } @@ -1389,50 +1415,15 @@ s8 fn_1_5554(s32 arg0, s32 arg1) // similar to m411Dll/main.c::fn_1_5D58 { UnkM414BssF0Struct *var_r31; s8 var_r30; - s8 var_r29; - s8 var_r28; var_r31 = &lbl_1_bss_F0[arg0]; var_r30 = 0; if (lbl_1_bss_98C < 4) { if (!GWPlayerCfg[arg0].iscom) { - if (arg1) { - var_r30 = HuPadStkY[var_r31->unk_4C]; - var_r29 = var_r30; - } else { - var_r30 = HuPadStkX[var_r31->unk_4C]; - var_r29 = var_r30; - } - (void)var_r31; - } else if (arg1) { - var_r30 = var_r31->unk_1FD; - var_r28 = var_r30; - } else { - var_r30 = var_r31->unk_1FC; - var_r28 = var_r30; + (arg1) ? (var_r30 = HuPadStkY[var_r31->unk_4C]) : (var_r30 = HuPadStkX[var_r31->unk_4C]); } - } - return var_r30; -} - - -static inline s8 fn_1_5554_inline(s32 arg0, s32 arg1) // similar to m411Dll/main.c::fn_1_5D58 -{ - UnkM414BssF0Struct *var_r31; - s8 var_r30; - var_r31 = &lbl_1_bss_F0[arg0]; - var_r30 = 0; - if (lbl_1_bss_98C < 4) { - if (!GWPlayerCfg[arg0].iscom) { - if (arg1) { - var_r30 = HuPadStkY[var_r31->unk_4C]; - } else { - var_r30 = HuPadStkX[var_r31->unk_4C]; - } - } else if (arg1) { - var_r30 = var_r31->unk_1FD; - } else { - var_r30 = var_r31->unk_1FC; + else { + (arg1) ? (var_r30 = var_r31->unk_1FD) : (var_r30 = var_r31->unk_1FC); } } return var_r30; @@ -1442,46 +1433,15 @@ u8 fn_1_5624(s32 arg0, s32 arg1) { UnkM414BssF0Struct *var_r31; s8 var_r30; - s8 var_r29; - s8 var_r28; var_r31 = &lbl_1_bss_F0[arg0]; var_r30 = 0; if (lbl_1_bss_98C < 4) { if (!GWPlayerCfg[arg0].iscom) { - if (arg1) { - var_r29 = var_r30 = HuPadTrigR[var_r31->unk_4C]; - } else { - var_r29 = var_r30 = HuPadTrigL[var_r31->unk_4C]; - } - (void)var_r31; - } else if (arg1) { - var_r28 = var_r30 = var_r31->unk_1FE; - } else { - var_r28 = var_r30 = var_r31->unk_1FF; + (arg1) ? (var_r30 = HuPadTrigR[var_r31->unk_4C]) : (var_r30 = HuPadTrigL[var_r31->unk_4C]); } - } - return var_r30; -} - -static inline u8 fn_1_5624_inline(s32 arg0, s32 arg1) -{ - UnkM414BssF0Struct *var_r31; - s8 var_r30; - - var_r31 = &lbl_1_bss_F0[arg0]; - var_r30 = 0; - if (lbl_1_bss_98C < 4) { - if (!GWPlayerCfg[arg0].iscom) { - if (arg1) { - var_r30 = HuPadTrigR[var_r31->unk_4C]; - } else { - var_r30 = HuPadTrigL[var_r31->unk_4C]; - } - } else if (arg1) { - var_r30 = var_r31->unk_1FE; - } else { - var_r30 = var_r31->unk_1FF; + else { + (arg1) ? (var_r30 = var_r31->unk_1FE) : (var_r30 = var_r31->unk_1FF); } } return var_r30; @@ -1497,14 +1457,11 @@ u16 fn_1_56FC(s32 arg0) if (lbl_1_bss_98C < 4) { if (!GWPlayerCfg[arg0].iscom) { var_r30 = HuPadBtnDown[var_r31->unk_4C]; - } else { + } + else { var_r30 = var_r31->unk_200; } } - (void)var_r31; - (void)var_r31; - (void)var_r31; - (void)var_r31; return var_r30; } @@ -1531,19 +1488,22 @@ void fn_1_5780(UnkM414BssF0Struct *arg0, float arg8) } if (var_f30 - var_f31 >= 0.0f) { var_f27 = var_f30 - var_f31; - } else { + } + else { var_f27 = -(var_f30 - var_f31); } var_f28 = var_f27; if (var_f28 < var_f29 || arg0->unk_F4[var_r31] == 1) { - Hu3DModelAttrSet(arg0->unk_94[var_r31], 1); - } else { - Hu3DModelAttrReset(arg0->unk_94[var_r31], 1); + Hu3DModelAttrSet(arg0->unk_94[var_r31], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(arg0->unk_94[var_r31], HU3D_ATTR_DISPOFF); } if (var_f28 < var_f29) { - Hu3DModelAttrSet(arg0->unk_D4[var_r31], 1); - } else { - Hu3DModelAttrReset(arg0->unk_D4[var_r31], 1); + Hu3DModelAttrSet(arg0->unk_D4[var_r31], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(arg0->unk_D4[var_r31], HU3D_ATTR_DISPOFF); } if (var_r31 & 1) { var_f30 += 40.0f; @@ -1560,14 +1520,16 @@ void fn_1_5780(UnkM414BssF0Struct *arg0, float arg8) } if (var_f30 - var_f31 >= 0.0f) { var_f26 = var_f30 - var_f31; - } else { + } + else { var_f26 = -(var_f30 - var_f31); } var_f28 = var_f26; if (var_f28 < var_f29) { - Hu3DModelAttrSet(arg0->unk_00[var_r31], 1); - } else { - Hu3DModelAttrReset(arg0->unk_00[var_r31], 1); + Hu3DModelAttrSet(arg0->unk_00[var_r31], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(arg0->unk_00[var_r31], HU3D_ATTR_DISPOFF); } } } @@ -1595,7 +1557,8 @@ void fn_1_5A3C(void) if (var_r31->unk_04) { var_f30 = 40.0f + lbl_1_bss_920[var_r28]; var_f29 = 40.0f; - } else { + } + else { var_f30 = lbl_1_bss_920[var_r28] - 40.0f; var_f29 = -40.0f; } @@ -1606,33 +1569,35 @@ void fn_1_5A3C(void) var_f30 += 360.0f; } for (var_r30 = 0; var_r30 < 9; var_r30++) { - Hu3DModelAttrSet(var_r31->unk_00->unk_00[var_r30], 0x40000002); + Hu3DModelAttrSet(var_r31->unk_00->unk_00[var_r30], HU3D_MOTATTR_PAUSE); } for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) { - var_f27 = (var_f29/2) * (1.0 - cosd(var_f28)); + var_f27 = (var_f29 / 2) * (1.0 - cosd(var_f28)); lbl_1_bss_920[var_r28] = var_f26 + var_f27; for (var_r29 = 0; var_r29 < 9; var_r29++) { if (!var_r31->unk_04) { var_f31 = (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); - } else { + } + else { var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]) - (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); } - Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], var_f31 >= 0.0f ? var_f31 : -var_f31); + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], ABS_INV(var_f31)); } HuPrcVSleep(); } for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) { - var_f27 = (var_f29/2) + ((var_f29/2) * sind(var_f28)); + var_f27 = (var_f29 / 2) + ((var_f29 / 2) * sind(var_f28)); lbl_1_bss_920[var_r28] = var_f26 + var_f27; for (var_r29 = 0; var_r29 < 9; var_r29++) { if (!var_r31->unk_04) { var_f31 = (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); - } else { + } + else { var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]) - (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); } - Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], var_f31 >= 0.0f ? var_f31 : -var_f31); + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], ABS_INV(var_f31)); } HuPrcVSleep(); } @@ -1640,7 +1605,8 @@ void fn_1_5A3C(void) for (var_r30 = 0; var_r30 < 9; var_r30++) { Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r30], Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r30])); } - } else { + } + else { for (var_r30 = 0; var_r30 < 9; var_r30++) { Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r30], 0.0f); } @@ -1670,7 +1636,8 @@ void fn_1_5EE8(void) if (var_r31->unk_04) { var_f31 = 40.0f + lbl_1_bss_920[var_r29]; var_f29 = 40.0f; - } else { + } + else { var_f31 = lbl_1_bss_920[var_r29] - 40.0f; var_f29 = -40.0f; } @@ -1681,11 +1648,11 @@ void fn_1_5EE8(void) var_f31 += 360.0f; } for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) { - var_r31->unk_00->unk_70 = var_f28 + ((var_f29/2) * (1.0 - cosd(var_f30))); + var_r31->unk_00->unk_70 = var_f28 + ((var_f29 / 2) * (1.0 - cosd(var_f30))); HuPrcVSleep(); } for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) { - var_r31->unk_00->unk_70 = (var_f29/2) + (var_f28 + ((var_f29/2) * sind(var_f30))); + var_r31->unk_00->unk_70 = (var_f29 / 2) + (var_f28 + ((var_f29 / 2) * sind(var_f30))); HuPrcVSleep(); } var_r31->unk_00->unk_70 = var_f31; @@ -1738,8 +1705,6 @@ s32 fn_1_654C(s32 arg0, s32 arg1) if (var_r31 >= 16) { var_r31 = -1; } - (void)var_r31; - (void)var_r31; return var_r31; } @@ -1790,7 +1755,8 @@ void fn_1_6644(void) if (0.0f == Hu3DMotionTimeGet(var_r31->unk_20)) { Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); var_r31->unk_1F4 = 1; - } else { + } + else { var_r31->unk_1F4 = 2; Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20)); @@ -1800,15 +1766,15 @@ void fn_1_6644(void) var_r31->unk_1F4 = 1; var_r31->unk_1F8 = -1; Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); - Hu3DModelAttrSet(var_r31->unk_20, 0x40000002); - Hu3DModelAttrReset(var_r31->unk_20, 0x40000004); + Hu3DModelAttrSet(var_r31->unk_20, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->unk_20, HU3D_MOTATTR_REV); Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f); } if (var_r31->unk_1F4 == 5 && Hu3DMotionEndCheck(var_r31->unk_20)) { var_r31->unk_1F4 = 2; var_r31->unk_1F8 = -1; Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); - Hu3DModelAttrReset(var_r31->unk_20, 0x40000004); + Hu3DModelAttrReset(var_r31->unk_20, HU3D_MOTATTR_REV); Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20)); Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f); } @@ -1819,55 +1785,61 @@ void fn_1_6644(void) if (!var_r31->unk_F4[var_r29]) { if (var_r31->unk_44 & 1) { HuAudFXPlay(1442); - } else { + } + else { HuAudFXPlay(1441); } omVibrate(var_r31->unk_44, 12, 6, 6); var_r31->unk_1F4 = 4; var_r31->unk_1F8 = var_r29; Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[1]); - Hu3DModelAttrReset(var_r31->unk_20, 0x40000006); + Hu3DModelAttrReset(var_r31->unk_20, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f); var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet()); var_r30->user_data = var_r31; if (lbl_1_bss_978 == lbl_1_bss_938[var_r29] && fn_1_65DC(var_r31, var_r29)) { - Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186); - var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); - var_r30->user_data = &sp8C; - sp8C.unk_00 = var_r31; - sp8C.unk_08 = 0; - sp8C.unk_0C = 1; - sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); - while (sp8C.unk_0C) { - HuPrcVSleep(); - } - } else { + Hu3DModelAttrReset( + var_r31->unk_D4[var_r29], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV | HU3D_MOTATTR_SHAPE_PAUSE | HU3D_MOTATTR_SHAPE_REV); + var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp8C; + sp8C.unk_00 = var_r31; + sp8C.unk_08 = 0; + sp8C.unk_0C = 1; + sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); + while (sp8C.unk_0C) { + HuPrcVSleep(); + } + } + else { HuPrcSleep(10); - Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082); - Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_SHAPE_PAUSE); + Hu3DModelAttrSet(var_r31->unk_D4[var_r29], HU3D_MOTATTR_REV | HU3D_MOTATTR_SHAPE_REV); HuPrcSleep(10); omVibrate(var_r31->unk_44, 12, 4, 2); var_r30 = HuPrcChildCreate(fn_1_1C48, 8192, 8192, 0, HuPrcCurrentGet()); var_r30->user_data = var_r31; fn_1_CD8(0, var_r31->unk_44, 5.0f); - Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + Hu3DModelAttrSet(var_r31->unk_20, HU3D_MOTATTR_REV); HuPrcSleep(10); if (var_r31->unk_44 & 1) { HuAudFXPlay(1444); - } else { + } + else { HuAudFXPlay(1443); } - Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000004); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], HU3D_MOTATTR_REV); HuPrcSleep(10); } } - } else if (var_r31->unk_1F4 == 2) { + } + else if (var_r31->unk_1F4 == 2) { var_r29 = fn_1_654C(var_r31->unk_44, 1); if (!var_r31->unk_F4[var_r29]) { if (var_r31->unk_44 & 1) { HuAudFXPlay(1442); - } else { + } + else { HuAudFXPlay(1441); } omVibrate(var_r31->unk_44, 12, 6, 6); @@ -1878,71 +1850,77 @@ void fn_1_6644(void) var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet()); var_r30->user_data = var_r31; if (lbl_1_bss_978 == lbl_1_bss_938[var_r29] && fn_1_65DC(var_r31, var_r29)) { - Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186); - var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); - var_r30->user_data = &sp8C; - sp8C.unk_00 = var_r31; - sp8C.unk_08 = 1; - sp8C.unk_0C = 1; - sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); - while (sp8C.unk_0C) { - HuPrcVSleep(); - } - } else { + Hu3DModelAttrReset( + var_r31->unk_D4[var_r29], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV | HU3D_MOTATTR_SHAPE_PAUSE | HU3D_MOTATTR_SHAPE_REV); + var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp8C; + sp8C.unk_00 = var_r31; + sp8C.unk_08 = 1; + sp8C.unk_0C = 1; + sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); + while (sp8C.unk_0C) { + HuPrcVSleep(); + } + } + else { HuPrcSleep(10); - Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082); - Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_SHAPE_PAUSE); + Hu3DModelAttrSet(var_r31->unk_D4[var_r29], HU3D_MOTATTR_REV | HU3D_MOTATTR_SHAPE_REV); HuPrcSleep(10); omVibrate(var_r31->unk_44, 12, 4, 2); var_r30 = HuPrcChildCreate(fn_1_1C48, 8192, 8192, 0, HuPrcCurrentGet()); var_r30->user_data = var_r31; fn_1_CD8(0, var_r31->unk_44, 5.0f); - Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + Hu3DModelAttrSet(var_r31->unk_20, HU3D_MOTATTR_REV); HuPrcSleep(15); if (var_r31->unk_44 & 1) { HuAudFXPlay(1444); - } else { + } + else { HuAudFXPlay(1443); } - Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000004); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], HU3D_MOTATTR_REV); HuPrcSleep(15); } } } } } - if (fn_1_5554_inline(var_r31->unk_44, 1) > 20 && (var_r31->unk_1F4 == 2 || var_r31->unk_1F4 == 0)) { // wrong - Hu3DModelAttrReset(var_r31->unk_20, 0x40000002); - Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + if (fn_1_5554(var_r31->unk_44, 1) > 20 && (var_r31->unk_1F4 == 2 || var_r31->unk_1F4 == 0)) { + Hu3DModelAttrReset(var_r31->unk_20, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r31->unk_20, HU3D_MOTATTR_REV); var_r31->unk_1F4 = 3; - Hu3DModelAttrReset(var_r31->unk_12, 0x40000002); - Hu3DModelAttrSet(var_r31->unk_12, 0x40000004); + Hu3DModelAttrReset(var_r31->unk_12, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r31->unk_12, HU3D_MOTATTR_REV); Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f); } - if (fn_1_5554_inline(var_r31->unk_44, 1) < -20 && (var_r31->unk_1F4 == 1 || var_r31->unk_1F4 == 0)) { // wrong - Hu3DModelAttrReset(var_r31->unk_20, 0x40000006); + if (fn_1_5554(var_r31->unk_44, 1) < -20 && (var_r31->unk_1F4 == 1 || var_r31->unk_1F4 == 0)) { + Hu3DModelAttrReset(var_r31->unk_20, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); var_r31->unk_1F4 = 3; - Hu3DModelAttrReset(var_r31->unk_12, 0x40000006); + Hu3DModelAttrReset(var_r31->unk_12, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f); } if (!var_r31->unk_58) { var_r28 = -1; - if (fn_1_5624_inline(var_r31->unk_44, 0) > 20 && var_r28 == -1) { // wrong + if (fn_1_5624(var_r31->unk_44, 0) > 20 && var_r28 == -1) { var_r28 = 1; } - if (fn_1_5624_inline(var_r31->unk_44, 1) > 20 && var_r28 == -1) { // wrong + if (fn_1_5624(var_r31->unk_44, 1) > 20 && var_r28 == -1) { var_r28 = 0; } if (var_r28 != -1) { if (var_r28) { if (var_r31->unk_44 & 1) { HuAudFXPlay(1440); - } else { + } + else { HuAudFXPlay(1439); } - } else if (var_r31->unk_44 & 1) { + } + else if (var_r31->unk_44 & 1) { HuAudFXPlay(1438); - } else { + } + else { HuAudFXPlay(1437); } var_r31->unk_58 = 1; @@ -1955,8 +1933,6 @@ void fn_1_6644(void) var_r30->user_data = &sp9C; sp9C.unk_00 = var_r31; sp9C.unk_04 = var_r28; - (void)var_r28; - (void)var_r28; } } var_r31->unk_60 = 37.0 * sind(var_r31->unk_70); @@ -1990,8 +1966,8 @@ void fn_1_76F4(void) var_f29 = Hu3DMotionMaxTimeGet(var_r31->unk_20); sp14.y = 220.0f + (350.0f * (1.0f - (Hu3DMotionTimeGet(var_r31->unk_20) / var_f29))); Hu3D3Dto2D(&sp14, 1 << var_r31->unk_48, &sp8); - var_f31 = (282.0f * (var_r31->unk_44 % 2)) + (sp8.x /2); - var_f30 = (225.0f * (var_r31->unk_44 / 2)) + (sp8.y /2); + var_f31 = (282.0f * (var_r31->unk_44 % 2)) + (sp8.x / 2); + var_f30 = (225.0f * (var_r31->unk_44 / 2)) + (sp8.y / 2); var_f31 += 3.0f; var_f30 -= 15.0f; HuSprGrpPosSet(var_r31->unk_2C, var_f31, var_f30); @@ -2030,7 +2006,7 @@ void fn_1_79A8(void) } Hu3DCameraViewportSet(16, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); Hu3DCameraScissorSet(16, 0, 0, 0, 0); - Hu3DModelAttrSet(lbl_1_bss_A10, 1); + Hu3DModelAttrSet(lbl_1_bss_A10, HU3D_ATTR_DISPOFF); HuPrcSleep(30); for (var_r29 = 0; var_r29 < 45; var_r29++) { for (var_r30 = 0; var_r30 < 4; var_r30++) { @@ -2059,19 +2035,19 @@ void fn_1_79A8(void) CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); for (var_r30 = 0; var_r30 < 4; var_r30++) { var_r31 = &lbl_1_bss_F0[var_r30]; - CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, 0); + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } HuPrcSleep(5); for (var_r30 = 0; var_r30 < 4; var_r30++) { var_r31 = &lbl_1_bss_F0[var_r30]; - Hu3DModelAttrSet(var_r31->unk_12, 1073741826); + Hu3DModelAttrSet(var_r31->unk_12, HU3D_MOTATTR_PAUSE); } HuPrcChildCreate(fn_1_397C, 4096, 8192, 0, HuPrcCurrentGet()); for (var_r30 = 0; var_r30 < 4; var_r30++) { var_r28 = &lbl_1_bss_F0[var_r30]; var_r27 = HuPrcChildCreate(fn_1_76F4, 8192, 8192, 0, HuPrcCurrentGet()); var_r27->user_data = var_r28; - HuSprAttrReset(var_r28->unk_2C, 0, 4); + HuSprAttrReset(var_r28->unk_2C, 0, HUSPR_ATTR_DISPOFF); } for (var_r29 = 0, var_f27 = 0.0f; var_r29 < 15; var_r29++) { var_f27 += 0.06666667f; @@ -2125,7 +2101,7 @@ void fn_1_7FC8(s32 arg0) if (lbl_1_bss_978 == 2) { Hu3DModelScaleSet(var_r30->unk_94[var_r28], 1.0f, 1.0f, 1.0f); } - Hu3DModelAttrReset(var_r30->unk_94[var_r28], 1); + Hu3DModelAttrReset(var_r30->unk_94[var_r28], HU3D_ATTR_DISPOFF); Hu3DModelShadowSet(var_r30->unk_94[var_r28]); if (var_r29++ >= 2) { break; @@ -2144,13 +2120,13 @@ void fn_1_7FC8(s32 arg0) var_r29 -= 9; } for (var_r28 = 0; var_r28 < 6; var_r28++) { - Hu3DModelAttrSet(var_r30->unk_30[var_r29], 1); + Hu3DModelAttrSet(var_r30->unk_30[var_r29], HU3D_ATTR_DISPOFF); var_r29++; if (var_r29 >= 9) { var_r29 = 0; } } - Hu3DModelAttrReset(var_r30->unk_42, 1); + Hu3DModelAttrReset(var_r30->unk_42, HU3D_ATTR_DISPOFF); Hu3DModelRotSet(var_r30->unk_42, 0.0f, lbl_1_bss_920[var_r30->unk_44], 0.0f); } for (var_r28 = 0; var_r28 < 30; var_r28++) { @@ -2162,13 +2138,13 @@ void fn_1_7FC8(s32 arg0) HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); for (var_r29 = 0; var_r29 < 4; var_r29++) { var_r31 = &lbl_1_bss_F0[var_r29]; - CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[0], 0.0f, 5.0f, 0x40000001); + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } HuPrcSleep(5); for (var_r29 = 0; var_r29 < 4; var_r29++) { var_r31 = &lbl_1_bss_F0[var_r29]; CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[5]); - Hu3DModelAttrReset(var_r31->unk_12, 0x40000001); + Hu3DModelAttrReset(var_r31->unk_12, HU3D_MOTATTR_LOOP); CharModelMotionTimeSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 61.0f); CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); } @@ -2202,7 +2178,8 @@ void fn_1_88D4(void) while (TRUE) { if (var_r31->unk_1F4 == 4 || var_r31->unk_1F4 == 5 || var_r31->unk_58) { HuPrcVSleep(); - } else { + } + else { break; } } @@ -2232,7 +2209,8 @@ void fn_1_894C(void) } if (var_r31 < 4) { HuPrcVSleep(); - } else { + } + else { break; } } @@ -2350,12 +2328,13 @@ void fn_1_8A70(void) HuAudSStreamPlay(1); GWPlayerCoinWinSet(var_r29, 10); var_r28 = MGSeqCreate(5, 3, GWPlayerCfg[var_r29].character, -1, -1, -1); - } else { + } + else { HuAudSStreamPlay(4); var_r28 = MGSeqCreate(3, 2); } HuPrcSleep(210); - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuPrcSleep(60); HuAudFadeOut(1); MGSeqKillAll(); diff --git a/src/REL/m415Dll/main.c b/src/REL/m415Dll/main.c new file mode 100644 index 00000000..2053aed7 --- /dev/null +++ b/src/REL/m415Dll/main.c @@ -0,0 +1,1916 @@ +#include "REL/m415Dll.h" + +#include "ext_math.h" +#include "game/EnvelopeExec.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/frand.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" + +// bss +unkStruct5 lbl_1_bss_36C; +omObjData *lbl_1_bss_368; +omObjData *lbl_1_bss_364; +omObjData *lbl_1_bss_360; +omObjData *lbl_1_bss_35C; +omObjData *lbl_1_bss_34C[4]; +u16 lbl_1_bss_34A; +s16 lbl_1_bss_348; +s16 lbl_1_bss_346; +s16 lbl_1_bss_344; +s16 lbl_1_bss_342; +s16 lbl_1_bss_33A[4]; +s16 lbl_1_bss_338; +u8 *lbl_1_bss_334; +s32 lbl_1_bss_234[4][4][4]; +void *lbl_1_bss_34[0x80]; +s32 lbl_1_bss_2C[2]; +unkStruct lbl_1_bss_4[4]; +static s32 pad_05_00000000_bss; + +// data +Vec lbl_1_data_0 = { 0.0f, 3000.0f, 2000.0f }; +Vec lbl_1_data_C = { 0.0f, -0.7f, -0.6f }; +GXColor lbl_1_data_18 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_1C = { 0.0f, 3000.0f, -2000.0f }; +Vec lbl_1_data_28 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_34 = { 0.0f, 0.0f, 0.0f }; + +void ObjectSetup(void) +{ + s32 var_r31; + Process *temp_r30; + omObjData *var_r29; + LightData *var_r28; + s32 temp_r27; + s32 var_r26; + + OSReport("******* M415ObjectSetup *********\n"); + Hu3DLighInit(); + var_r26 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_18); + Hu3DGLightInfinitytSet(var_r26); + var_r28 = &Hu3DGlobalLight[0]; + var_r28->unk_00 |= 0x8000; + temp_r30 = omInitObjMan(0x32, 0x2000); + temp_r27 = frand() & 0x1F; + + for (var_r31 = 0; var_r31 < temp_r27; var_r31++) { + fn_1_679C(); + } + + CRot.x = -55.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 200.0f; + Center.z = 200.0f; + CZoom = 1500.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1.0f, 5.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_364 = omAddObjEx(temp_r30, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_368 = omAddObjEx(temp_r30, 0x10, 8, 0, -1, fn_1_43C); + lbl_1_bss_35C = omAddObjEx(temp_r30, 0x20, 0x10, 0, -1, fn_1_15D0); + lbl_1_bss_360 = omAddObjEx(temp_r30, 0x50, 0x10, 0, -1, fn_1_2B18); + omAddObjEx(temp_r30, 0x60, 0, 0, -1, fn_1_6304); + omMakeGroupEx(temp_r30, 0, 4); + omGetGroupMemberListEx(temp_r30, 0); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_34C[var_r31] = var_r29 = omAddObjEx(temp_r30, 0x30, 6, 0xA, 0, fn_1_3208); + var_r29->work[0] = var_r31; + var_r29->work[1] = var_r31; + } + Hu3DShadowCreate(30.0f, 100.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.4f); + Hu3DShadowPosSet(&lbl_1_data_1C, &lbl_1_data_28, &lbl_1_data_34); + omGameSysInit(temp_r30); + HuAudSndGrpSet(0x28); + fn_1_6368(); + fn_1_8780(0x40, 0x40); +} + +void fn_1_43C(omObjData *object) +{ + CameraData *var_r31; + + var_r31 = &Hu3DCamera[0]; + lbl_1_bss_34A = 0; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + var_r31->fov = 45.0f; + object->func = fn_1_4B0; +} + +void fn_1_4B0(omObjData *object) +{ + Vec sp14; + Vec sp8; + s32 var_r31; + f32 var_f31; + + switch (lbl_1_bss_34A) { + case 0: + sp14.x = 0.0f; + sp14.y = 200.0f; + sp14.z = 200.0f; + sp8.x = -55.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1500.0f; + fn_1_2E88(1.0f, &sp14, &sp8, var_f31); + fn_1_A94C(0x2E000D, 0, 0); + HuDataDirClose(0x2E000D); + fn_1_A94C(0x2E000C, 0x40, 0x40); + HuDataDirClose(0x2E000C); + lbl_1_bss_342 = 0x78; + HuAudFXPlay(0x5AE); + lbl_1_bss_34A++; + break; + case 1: + if (72.0f == lbl_1_bss_342) { + HuAudFXPlay(0x5AF); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + omVibrate(var_r31, 0xC, 4, 2); + } + } + if (--lbl_1_bss_342 == 0) { + lbl_1_bss_34A++; + } + break; + case 2: + if (lbl_1_bss_342 == 0) { + lbl_1_bss_342 = 90; + } + if (--lbl_1_bss_342 == 0) { + lbl_1_bss_34A++; + } + break; + case 3: + lbl_1_bss_34A = 4; + lbl_1_bss_348 = lbl_1_bss_346 = -1; + object->func = fn_1_7D8; + HuSprAnimRead(HuDataReadNum(0x2E000D, 0x10000000)); + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_14C0; + } +} + +extern s32 lbl_1_data_64 = -1; + +void fn_1_7D8(omObjData *object) +{ + GXColor sp18[4] = { { 0xF0, 0x00, 0x00, 0xFF }, { 0x30, 0x60, 0xF0, 0xFF }, { 0xE0, 0xE0, 0x00, 0xFF }, { 0xFF, 0x80, 0x80, 0xFF } }; + s32 sp8[4]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + unkStruct2 *var_r25; + s16 temp_r24; + s16 temp_r23; + s16 var_r22; + + switch (lbl_1_bss_34A) { + case 4: + if (lbl_1_bss_346 == -1) { + lbl_1_bss_344 = 0x708; + lbl_1_bss_346 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_346, 320.0f, 240.0f); + } + else { + if (MGSeqStatGet(lbl_1_bss_346) == 0) { + lbl_1_bss_346 = -1; + lbl_1_bss_34A++; + lbl_1_bss_342 = 0; + lbl_1_bss_348 = MGSeqCreate(1, lbl_1_bss_344 / 60, -1, -1); + } + } + if ((lbl_1_data_64 == -1) && ((MGSeqStatGet(lbl_1_bss_346) & 0x10) != 0)) { + lbl_1_data_64 = HuAudSeqPlay(0x45); + } + break; + case 5: + var_r27 = 0; + lbl_1_bss_344--; + MGSeqParamSet(lbl_1_bss_348, 1, ((lbl_1_bss_344 + 0x3B) / 60)); + if (lbl_1_bss_344 == 0) { + var_r27++; + } + if (var_r27 != 0) { + lbl_1_bss_34A += 1; + } + break; + case 6: + if (lbl_1_bss_346 == -1) { + lbl_1_bss_346 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_346, 320.0f, 240.0f); + MGSeqParamSet(lbl_1_bss_348, 2, -1); + HuAudSeqFadeOut(lbl_1_data_64, 0x64); + } + else if (MGSeqStatGet(lbl_1_bss_346) == 0) { + lbl_1_bss_346 = -1; + lbl_1_bss_34A++; + lbl_1_bss_342 = 0; + } + break; + case 7: + if (lbl_1_bss_342 == 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_4[var_r31].unk8 = espEntry(0x2E0010, 10, 0); + espColorSet(lbl_1_bss_4[var_r31].unk8, 0, 0, 0); + espTPLvlSet(lbl_1_bss_4[var_r31].unk8, 0.5f); + espPosSet( + lbl_1_bss_4[var_r31].unk8, 144.0f * (((var_r31 & 1) * 2) + 1), 120.0f * (((s16)(((var_r31 < 0) + var_r31) >> 1) << 1) + 1)); + lbl_1_bss_4[var_r31].unk6 = espEntry(0x2E000F, 10, 0); + espPosSet( + lbl_1_bss_4[var_r31].unk6, 144.0f * (((var_r31 & 1) * 2) + 1), 120.0f * (((s16)(((var_r31 < 0) + var_r31) >> 1) << 1) + 1)); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + lbl_1_bss_4[var_r31].unk0[var_r30] = espEntry(0x2E0011, 10, 0); + espPosSet(lbl_1_bss_4[var_r31].unk0[var_r30], (32.0f * var_r30) + ((144.0f * (((var_r31 & 1) * 2) + 1)) - 32.0f), + (120.0f * (((s16)(((var_r31 < 0) + var_r31) >> 1) << 1) + 1))); + espColorSet(lbl_1_bss_4[var_r31].unk0[var_r30], sp18[var_r31].r, sp18[var_r31].g, sp18[var_r31].b); + } + espBankSet(lbl_1_bss_4[var_r31].unk0[2], 10); + } + lbl_1_bss_342 = 0x3C; + HuAudFXPlay(0x5B4); + } + else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + espBankSet(lbl_1_bss_4[var_r31].unk0[var_r30], (s32)((fn_1_679C() / 65536.0f) * 10.0f)); + } + } + if (--lbl_1_bss_342 == 0) { + HuAudFXPlay(0x5B5); + var_r28 = 6; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + sp8[var_r29] = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp8[var_r29] += lbl_1_bss_234[var_r29][var_r31][var_r30]; + } + } + sp8[var_r29] = (0.99f + ((100.0f * sp8[var_r29]) / 360000.0f)); + if (var_r28 < sp8[var_r29]) { + var_r28 = sp8[var_r29]; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + temp_r24 = sp8[var_r31]; + espBankSet(lbl_1_bss_4[var_r31].unk0[0], temp_r24 / 10); + espBankSet(lbl_1_bss_4[var_r31].unk0[1], temp_r24 % 10); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_33A[var_r31] = -1; + } + + var_r31 = 0; + var_r30 = 0; + for (; var_r31 < 4; var_r31++) { + if (sp8[var_r31] >= var_r28) { + var_r22 = GWPlayer[var_r31].coin_win; + temp_r23 = var_r22 + 10; + if (_CheckFlag(0x1000CU) == 0) { + GWPlayer[var_r31].coin_win = temp_r23; + } + lbl_1_bss_33A[var_r30++] = GWPlayerCfg[var_r31].character; + var_r25 = lbl_1_bss_34C[var_r31]->data; + var_r25->unkE = 1; + } + } + lbl_1_bss_342 = 0x3C; + lbl_1_bss_34A++; + } + } + break; + case 8: + if (lbl_1_bss_346 == -1) { + if (--lbl_1_bss_342 == 0) { + if (lbl_1_bss_33A[0] == -1) { + lbl_1_bss_346 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + else { + lbl_1_bss_346 = MGSeqCreate(5, 3, lbl_1_bss_33A[0], lbl_1_bss_33A[1], lbl_1_bss_33A[2], lbl_1_bss_33A[3]); + HuAudSStreamPlay(1); + } + lbl_1_bss_346 = -1; + lbl_1_bss_34A++; + lbl_1_bss_342 = 0xD2; + } + } + break; + case 9: + if (--lbl_1_bss_342 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_14C0; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_14C0; + } +} + +void fn_1_14C0(omObjData *object) +{ + if (WipeStatGet() == 0) { + CharModelKill(-1); + fn_1_B634(); + fn_1_64DC(); + MGSeqKill(lbl_1_bss_348); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_1524(s16 arg0, char *arg1, f32 arg8, Mtx arg2) +{ + ModelData *temp_r31; + + temp_r31 = &Hu3DData[arg0]; + if (temp_r31->unk_08 != -1) { + Hu3DMotionExec(arg0, temp_r31->unk_08, arg8, 0); + } + if (temp_r31->unk_0C != -1) { + Hu3DSubMotionExec(arg0); + } + if (temp_r31->hsfData->cenvCnt != 0) { + EnvelopeProc(temp_r31->hsfData); + } + Hu3DModelObjMtxGet(arg0, arg1, arg2); +} + +void fn_1_15D0(omObjData *object) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + s32 var_r28; + s32 var_r27; + ModelData *var_r29; + f32 temp_f31; + s32 var_r31; + + object->model[0] = var_r31 = Hu3DModelCreateFile(0x2E0000); + Hu3DModelShadowSet(var_r31); + temp_f31 = Hu3DMotionMaxTimeGet(var_r31); + fn_1_1524(var_r31, "oekaki", temp_f31, sp20); + sp14.x = -sp20[0][3]; + sp14.y = -sp20[1][3]; + sp14.z = -sp20[2][3]; + fn_1_6A78(sp20, &sp8); + sp8.x = -(sp8.x - 90.0f); + sp8.y = -(sp8.y - 90.0f); + sp8.z = -(sp8.z - 90.0f); + Hu3DMotionTimeSet(var_r31, 0.0f); + Hu3DMotionSpeedSet(var_r31, 2.0f); + omSetTra(object, sp14.x, sp14.y, sp14.z); + omSetRot(object, sp8.x, sp8.y, sp8.z); + Hu3DModelPosSetV(var_r31, &sp14); + Hu3DModelRotSetV(var_r31, &sp8); + lbl_1_bss_338 = Hu3DAnimCreate(HuDataReadNum(0x2E000A, 0x10000000), var_r31, "dummy"); + var_r28 = 0x57E40; + lbl_1_bss_334 = HuMemDirectMallocNum(HEAP_DATA, var_r28, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_334, 0, var_r28); + (void)var_r28; + memset(&lbl_1_bss_234, 0, 0x100); + var_r31 = fn_1_A2D0(1, 2); + object->model[1] = var_r31; + fn_1_AFC8(var_r31, 0, 0x2E000B, 0x200, 0x200); + fn_1_B864(var_r31, 0.0f, -50.0f, 0.0f); + fn_1_BB4C(var_r31, -90.0f, 0.0f, 0.0f); + fn_1_BC9C(var_r31, 5.0f, 5.0f, 1.0f); + fn_1_C2D0(var_r31, 0, 0); + var_r27 = fn_1_66AC(); + object->model[2] = var_r27; + fn_1_C81C(var_r27, 4); + fn_1_B0B8(var_r31, 1, var_r27); + var_r31 = Hu3DModelCreateFile(0x2E0002); + object->model[3] = var_r31; + Hu3DModelShadowSet(var_r31); + Hu3DMotionSpeedSet(var_r31, 2.0f); + object->func = fn_1_1960; +} + +void fn_1_1960(omObjData *object) +{ + u32 temp_r29; + AnimData **temp_r3; + + switch (lbl_1_bss_34A) { + case 0: + break; + case 1: + GXDrawDone(); + temp_r3 = fn_1_9734(object->model[2]); + temp_r29 = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; + memcpy((*temp_r3)->bmp->data, OSCachedToUncached(Hu3DShadowData.unk_04), temp_r29); + DCStoreRangeNoSync((*temp_r3)->bmp->data, temp_r29); + break; + case 2: + Hu3DModelShadowMapObjSet(object->model[0], "kyanbasu"); + Hu3DModelShadowReset(object->model[0]); + Hu3DModelShadowReset(object->model[3]); + break; + case 3: + case 4: + case 5: + break; + } + return; +} + +void fn_1_1A60(unkStruct3 *arg0) +{ + Mtx sp118; + Mtx spE8; + Vec spB8[4]; + Vec sp88[4]; + GXColor sp68[8] = { { 0xF0, 0x00, 0x00, 0xFF }, { 0x00, 0x00, 0xF0, 0xFF }, { 0xFF, 0x80, 0x80, 0xFF }, { 0x00, 0xFF, 0x00, 0xFF }, + { 0x80, 0x00, 0xC0, 0xFF }, { 0x80, 0x40, 0x00, 0xFF }, { 0xE0, 0xE0, 0x00, 0xFF }, { 0x00, 0x00, 0x00, 0xFF } }; + GXColor sp48[8] = { { 0xFF, 0x60, 0x60, 0xFF }, { 0x60, 0x60, 0xFF, 0xFF }, { 0xFF, 0xC0, 0xC0, 0xFF }, { 0x40, 0xFF, 0x40, 0xFF }, + { 0xC0, 0x40, 0xFF, 0xFF }, { 0xD0, 0x80, 0x40, 0xFF }, { 0xFF, 0xFF, 0x20, 0xFF }, { 0x80, 0x80, 0x80, 0xFF } }; + GXColor sp38[4] = { { 0xF0, 0x00, 0x00, 0xFF }, { 0x00, 0x00, 0xF0, 0xFF }, { 0xE0, 0xE0, 0x00, 0xFF }, { 0xFF, 0x80, 0x80, 0xFF } }; + GXColor sp28[4] = { { 0xFF, 0x60, 0x60, 0xFF }, { 0x60, 0x60, 0xFF, 0xFF }, { 0xFF, 0xFF, 0x20, 0xFF }, { 0xFF, 0xC0, 0xC0, 0xFF } }; + Vec sp1C; + s32 sp18; + s16 sp14; + s16 sp12; + s16 sp10; + s16 spE; + s16 spC; + s16 spA; + u8 sp8; + f32 var_f31; + f32 temp_f30; + f32 var_f29; + f32 var_f28; + s32 var_r31; + s16 var_r30; + s32 var_r29; + u8 temp_r28; + s16 var_r27; + s32 temp_r26; + s16 var_r24; + s16 var_r23; + u16 *temp_r22; + u8 temp_r21; + AnimBmpData *var_r20; + s16 temp_r19; + s16 temp_r18; + s32 temp_r17; + + sp1C = arg0->unk2C; + temp_f30 = arg0->unk20; + sp8 = arg0->unk1; + temp_r28 = arg0->unk0; + sp14 = 0.5f * (600.0f + sp1C.x); + sp12 = 0.5f * (600.0f + sp1C.z); + var_r20 = fn_1_668C(lbl_1_bss_338); + temp_r22 = (u16 *)var_r20->data; + var_r27 = 0x32; + var_r30 = var_r27 >> 1; + spC = 0x96; + spA = 0; + if ((s16)temp_f30 == ((s16)(temp_f30 / 90.0f) * 90)) { + spB8[0].x = -var_r30; + spB8[0].y = -var_r30; + spB8[1].x = -var_r30; + spB8[1].y = var_r30; + spB8[2].x = var_r30; + spB8[2].y = -var_r30; + spB8[3].x = var_r30; + spB8[3].y = var_r30; + spB8[0].z = spB8[1].z = spB8[2].z = spB8[3].z = 0.0f; + } + else { + spB8[0].x = var_r27; + spB8[0].y = var_r27; + spB8[1].x = var_r27; + spB8[1].y = -var_r27; + spB8[2].x = -var_r27; + spB8[2].y = var_r27; + spB8[3].x = -var_r27; + spB8[3].y = -var_r27; + spB8[0].z = spB8[1].z = spB8[2].z = spB8[3].z = 0.0f; + for (var_r31 = -1; var_r31 < 2; var_r31 += 2) { + for (var_r29 = -1; var_r29 < 2; var_r29 += 2) { + MTXRotDeg(sp118, 0x59, temp_f30); + MTXTrans(spE8, (var_r30 * var_r31), 0.0f, (var_r30 * var_r29)); + MTXConcat(sp118, spE8, spE8); + if ((spB8[0].y > spE8[2][3]) || ((spB8[0].y == spE8[2][3]) && (spB8[0].x > spE8[0][3]))) { + spB8[0].x = spE8[0][3]; + spB8[0].y = spE8[2][3]; + } + if ((spB8[1].x > spE8[0][3]) || (spB8[1].x >= spE8[0][3]) && (spB8[1].y < spE8[2][3])) { + spB8[1].x = spE8[0][3]; + spB8[1].y = spE8[2][3]; + } + if ((spB8[2].x < spE8[0][3]) || (spB8[2].x <= spE8[0][3]) && (spB8[2].y > spE8[2][3])) { + spB8[2].x = spE8[0][3]; + spB8[2].y = spE8[2][3]; + } + if ((spB8[3].y <= spE8[2][3]) || (spB8[3].y <= spE8[2][3]) && (spB8[3].x < spE8[0][3])) { + spB8[3].x = spE8[0][3]; + spB8[3].y = spE8[2][3]; + } + } + } + } + VECSubtract(&spB8[1], &spB8[0], &sp88[0]); + VECSubtract(&spB8[2], &spB8[0], &sp88[1]); + VECSubtract(&spB8[3], &spB8[1], &sp88[2]); + VECSubtract(&spB8[3], &spB8[2], &sp88[3]); + temp_r17 = (1.5 * (var_r30 * var_r30)); + for (var_r31 = spB8[0].y; var_r31 < spB8[3].y; var_r31++) { + var_r23 = sp12 + var_r31; + if (var_r23 >= 0 && (!(var_r23 >= 600.0f))) { + temp_r18 = (var_r23 / 150.0f); + if (var_r31 <= spB8[1].y) { + var_f31 = ((var_r31 - spB8[0].y) / sp88[0].y); + var_f29 = var_f31 * sp88[0].x + spB8[0].x; + } + else { + var_f31 = ((var_r31 - spB8[1].y) / sp88[2].y); + var_f29 = var_f31 * sp88[2].x + spB8[1].x; + } + if (var_r31 <= spB8[2].y) { + var_f31 = ((var_r31 - spB8[0].y) / sp88[1].y); + var_f28 = var_f31 * sp88[1].x + spB8[0].x; + } + else { + var_f31 = ((var_r31 - spB8[2].y) / sp88[3].y); + var_f28 = var_f31 * sp88[3].x + spB8[2].x; + } + + for (var_r29 = var_f29; var_r29 < var_f28; var_r29++) { + var_r24 = sp14 + var_r29; + if (var_r24 >= 0 && (!(var_r24 >= 600.0f))) { + temp_r19 = (var_r24 / 150.0f); + temp_r26 = (600.0f * var_r23 + var_r24); + temp_r21 = lbl_1_bss_334[temp_r26]; + lbl_1_bss_334[temp_r26] = temp_r28 + 1; + sp10 = (var_r24 >> 2); + spE = (var_r23 >> 2); + temp_r26 = ((var_r23 % 4) * 4) + ((sp10 * 0x10) + (var_r24 % 4) + spE * ((spC * 0x10) + (spA * 4))); + sp18 = ((fn_1_679C() / 65536.0f) * (1.0f + ((6.0f * (temp_r17 - ((var_r31 * var_r31) + (var_r29 * var_r29)))) / temp_r17))); + if (sp18 == 0) { + if (temp_r21 != (temp_r28 + 1)) { + temp_r22[temp_r26] = ((sp28[temp_r28].r >> 3) << 10) | ((sp28[temp_r28].g >> 3) << 5) | (sp28[temp_r28].b >> 3) | 0x8000; + } + } + else { + temp_r22[temp_r26] = ((sp38[temp_r28].r >> 3) << 10) | ((sp38[temp_r28].g >> 3) << 5) | (sp38[temp_r28].b >> 3) | 0x8000; + } + if (temp_r21 != (temp_r28 + 1)) { + lbl_1_bss_234[temp_r28][temp_r19][temp_r18]++; + if (temp_r21 != 0) { + lbl_1_bss_234[temp_r21 - 1][temp_r19][temp_r18]--; + } + } + } + } + } + } + DCStoreRange(temp_r22, 0xAFC80); +} + +void fn_1_2B18(omObjData *object) +{ + unkStruct4 *var_r31; + + var_r31 = fn_1_63A8(0x14C); + object->data = var_r31; + var_r31->unk148 = var_r31->unk144 = 0.0f; + var_r31->unk140 = 1.0f; + var_r31->unk10.x = var_r31->unk28.x = -55.0f; + var_r31->unk10.y = var_r31->unk28.y = 0.0f; + var_r31->unk10.z = var_r31->unk28.z = 0.0f; + var_r31->unk4.x = var_r31->unk1C.x = 0.0f; + var_r31->unk4.y = var_r31->unk1C.y = 200.0f; + var_r31->unk4.z = var_r31->unk1C.z = 200.0f; + var_r31->unk130 = var_r31->unk134 = 1500.0f; + object->func = fn_1_2C14; +} + +void fn_1_2C14(omObjData *object) +{ + f32 temp_f31; + unkStruct4 *temp_r31; + + temp_r31 = (unkStruct4 *)object->data; + if (temp_r31->unk148 > 0.0f) { + temp_r31->unk148 -= temp_r31->unk140; + temp_f31 = ((temp_r31->unk144 - temp_r31->unk148) / temp_r31->unk144); + temp_f31 = sind(90.0f * temp_f31); + if (temp_r31->unk0 == 0) { + temp_r31->unk4.x = (temp_r31->unk1C.x + (temp_f31 * (temp_r31->unk34.x - temp_r31->unk1C.x))); + temp_r31->unk4.y = (temp_r31->unk1C.y + (temp_f31 * (temp_r31->unk34.y - temp_r31->unk1C.y))); + temp_r31->unk4.z = (temp_r31->unk1C.z + (temp_f31 * (temp_r31->unk34.z - temp_r31->unk1C.z))); + temp_r31->unk10.x = (temp_r31->unk28.x + (temp_f31 * (temp_r31->unk40.x - temp_r31->unk28.x))); + temp_r31->unk10.y = (temp_r31->unk28.y + (temp_f31 * (temp_r31->unk40.y - temp_r31->unk28.y))); + temp_r31->unk10.z = (temp_r31->unk28.z + (temp_f31 * (temp_r31->unk40.z - temp_r31->unk28.z))); + temp_r31->unk130 = (temp_r31->unk134 + (temp_f31 * (temp_r31->unk138 - temp_r31->unk134))); + } + else { + fn_1_7A54(2.0f * temp_f31, &temp_r31->unk4, temp_r31->unkF4, temp_r31->unk64, temp_r31->unk88, 3); + fn_1_7A54(2.0f * temp_f31, &temp_r31->unk10, temp_r31->unk100, temp_r31->unkAC, temp_r31->unkD0, 3); + temp_r31->unk130 = fn_1_7520(2.0f * temp_f31, temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); + } + } + CRot.x = temp_r31->unk10.x; + CRot.y = temp_r31->unk10.y; + CRot.z = temp_r31->unk10.z; + Center.x = temp_r31->unk4.x; + Center.y = temp_r31->unk4.y; + Center.z = temp_r31->unk4.z; + CZoom = temp_r31->unk130; +} + +void fn_1_2E88(f32 arg0, Vec *arg1, Vec *arg2, f32 arg3) +{ + unkStruct4 *temp_r31; + + temp_r31 = lbl_1_bss_360->data; + temp_r31->unk0 = 0; + temp_r31->unk144 = arg0; + temp_r31->unk148 = arg0; + temp_r31->unk1C = temp_r31->unk4; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = arg1->y; + temp_r31->unk34.z = arg1->z; + temp_r31->unk28 = temp_r31->unk10; + temp_r31->unk40.x = arg2->x; + temp_r31->unk40.y = arg2->y; + temp_r31->unk40.z = arg2->z; + temp_r31->unk134 = temp_r31->unk130; + temp_r31->unk138 = arg3; +} + +void fn_1_2F28(f32 arg8, Vec *arg0, Vec *arg1, f32 arg9, Vec *arg2, Vec *arg3, f32 argA) +{ + unkStruct4 *temp_r31; + + temp_r31 = lbl_1_bss_360->data; + temp_r31->unk0 = 1; + temp_r31->unk148 = temp_r31->unk144 = arg8; + temp_r31->unk1C = temp_r31->unk4; + temp_r31->unk34.x = arg0->x; + temp_r31->unk34.y = arg0->y; + temp_r31->unk34.z = arg0->z; + temp_r31->unk4C.x = arg2->x; + temp_r31->unk4C.y = arg2->y; + temp_r31->unk4C.z = arg2->z; + temp_r31->unk28 = temp_r31->unk10; + temp_r31->unk40.x = arg1->x; + temp_r31->unk40.y = arg1->y; + temp_r31->unk40.z = arg1->z; + temp_r31->unk58.x = arg3->x; + temp_r31->unk58.y = arg3->y; + temp_r31->unk58.z = arg3->z; + temp_r31->unk134 = temp_r31->unk130; + temp_r31->unk138 = arg9; + temp_r31->unk13C = argA; + temp_r31->unk64[0] = temp_r31->unk1C; + temp_r31->unk64[1] = temp_r31->unk4C; + temp_r31->unk64[2] = temp_r31->unk34; + temp_r31->unkAC[0] = temp_r31->unk28; + temp_r31->unkAC[1] = temp_r31->unk58; + temp_r31->unkAC[2] = temp_r31->unk40; + temp_r31->unk10C[0] = temp_r31->unk134; + temp_r31->unk10C[1] = temp_r31->unk13C; + temp_r31->unk10C[2] = temp_r31->unk138; + temp_r31->unk124[0] = 0.0f; + temp_r31->unk124[1] = ABS(temp_r31->unk10C[1] - temp_r31->unk10C[0]); + temp_r31->unk124[2] = (temp_r31->unk124[1] + ABS(temp_r31->unk10C[2] - temp_r31->unk10C[1])); + fn_1_7674(temp_r31->unkF4, temp_r31->unk64, temp_r31->unk88, 3); + fn_1_7674(temp_r31->unk100, temp_r31->unkAC, temp_r31->unkD0, 3); + fn_1_7268(temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); +} + +void fn_1_31E0(f32 arg8) +{ + unkStruct4 *data; + + data = (unkStruct4 *)lbl_1_bss_360->data; + data->unk140 = arg8; +} + +s32 lbl_1_data_80[10] = { 0, 3, 5, 6, 0x2E0012, 0x2E001A, 0x2E0022, 0x2E001A, 0x17, 0x72 }; + +Vec lbl_1_data_A8[4] = { { -200.0f, 1600.0f, -200.0f }, { 200.0f, 1600.0f, -200.0f }, { -200.0f, 1600.0f, 200.0f }, { 200.0f, 1600.0f, 200.0f } }; + +void fn_1_3208(omObjData *object) +{ + s32 var_r29; + s32 var_r28; + u32 temp_r27; + unkStruct3 *var_r31; + + object->data = var_r31 = fn_1_63A8(0xA0); + var_r31->unk0 = object->work[0]; + var_r31->unk1 = GWPlayerCfg[var_r31->unk0].character; + var_r31->unk2 = (var_r31->unk0 >> 1); + var_r31->unk3 = (var_r31->unk0 & 1); + var_r31->unk4 = GWPlayerCfg[var_r31->unk0].pad_idx; + var_r31->unk5 = GWPlayerCfg[var_r31->unk0].iscom; + var_r31->unk6 = GWPlayerCfg[var_r31->unk0].diff; + var_r31->unk18 = var_r31->unk1A = 4; + var_r31->unk7 = 1; + var_r31->unkC = 1; + var_r31->unkD = 0; + var_r31->unkA = 0; + var_r31->unk5D = 0; + var_r31->unk5C = 0; + var_r31->unkE = 0; + + temp_r27 = object->work[1]; + var_r31->unk2C.x = lbl_1_data_A8[temp_r27].x; + var_r31->unk2C.y = lbl_1_data_A8[temp_r27].y + (400.0f * ((fn_1_679C() - 0x8000) / 32768.0f)); + var_r31->unk2C.z = lbl_1_data_A8[temp_r27].z; + var_r31->unk44.x = var_r31->unk44.y = var_r31->unk44.z = 0.0f; + var_r31->unk38.x = var_r31->unk38.y = var_r31->unk38.z = 0.0f; + var_r31->unk20 = var_r31->unk38.y; + var_r31->unk24 = 0.0f; + var_r31->unk1C = 0.0f; + var_r31->unk28 = 1.0f; + memset(&var_r31->unk60, 0, 0x40); + var_r29 = CharModelCreate(var_r31->unk1, 4); + object->model[0] = var_r29; + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r29); + + for (var_r28 = 0; var_r28 < 10; var_r28++) { + if ((lbl_1_data_80[var_r28] & 0xFFFF0000) != 0) { + object->motion[var_r28] = CharModelMotionCreate(var_r31->unk1, var_r31->unk1 + lbl_1_data_80[var_r28]); + } + else { + object->motion[var_r28] = CharModelMotionCreate(var_r31->unk1, lbl_1_data_80[var_r28]); + } + } + CharModelMotionDataClose(var_r31->unk1); + CharModelMotionSet(var_r31->unk1, object->motion[var_r31->unk18]); + CharModelStepTypeSet(var_r31->unk1, 1); + CharModelVoiceEnableSet(var_r31->unk1, object->motion[2], 0); + object->model[2] = var_r29 = Hu3DModelCreateFile(var_r31->unk0 + 0x2E0003); + object->model[3] = Hu3DJointMotion(var_r29, HuDataSelHeapReadNum(0x2E0007, 0x10000000, HEAP_DATA)); + object->model[4] = Hu3DJointMotion(var_r29, HuDataSelHeapReadNum(0x2E0008, 0x10000000, HEAP_DATA)); + object->model[5] = Hu3DJointMotion(var_r29, HuDataSelHeapReadNum(0x2E0009, 0x10000000, HEAP_DATA)); + Hu3DModelPosSet(var_r29, var_r31->unk2C.x, var_r31->unk2C.y, var_r31->unk2C.z); + Hu3DModelHookSet(var_r29, "stamp00", object->model[0]); + Hu3DMotionSet(object->model[2], object->model[4]); + Hu3DModelShadowSet(var_r29); + object->func = fn_1_3640; +} + +void fn_1_3640(omObjData *object) +{ + s32 sp8; + unkStruct3 *temp_r31; + + sp8 = object->model[0]; + temp_r31 = (unkStruct3 *)object->data; + + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + switch (lbl_1_bss_34A) { + case 1: + break; + case 2: + if (lbl_1_bss_342 == 0) { + temp_r31->unk18 = 6; + temp_r31->unk44.y = 0.0f; + temp_r31->unkC = 0; + } + break; + case 4: + object->func = fn_1_3764; + break; + } + if (temp_r31->unk2C.y < 0.0f) { + omVibrate(temp_r31->unk0, 0xC, 6, 6); + HuAudFXPlay(0x5B0); + temp_r31->unk2C.y = 0.0f; + temp_r31->unkC = 1; + } + fn_1_3B44(object); +} + +void fn_1_3764(omObjData *object) +{ + s32 spC; + s32 sp8; + unkStruct3 *temp_r31; + + spC = object->model[0]; + temp_r31 = (unkStruct3 *)object->data; + if (temp_r31->unk7 != 0) { + if ((lbl_1_bss_34A == 5) && ((temp_r31->unk7 & 2) == 0)) { + if (temp_r31->unk5 != 0) { + fn_1_4660(object); + } + else { + temp_r31->unk10 = HuPadStkX[temp_r31->unk4]; + temp_r31->unk12 = HuPadStkY[temp_r31->unk4]; + temp_r31->unk14 = HuPadBtnDown[temp_r31->unk4]; + temp_r31->unk16 = HuPadBtn[temp_r31->unk4]; + } + } + else { + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + } + switch (lbl_1_bss_34A) { + case 4: + case 5: + break; + case 6: + if ((Hu3DModelAttrGet(object->model[2]) & 1) == 0) { + Hu3DModelHookReset(object->model[2]); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + omSetTra(object, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + omSetRot(object, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + sp8 = fn_1_A2D0(1, 1); + fn_1_B038(lbl_1_bss_36C.unk36, 0, 0x2E000C); + fn_1_B8D0(lbl_1_bss_36C.unk36, lbl_1_bss_36C.unk38, temp_r31->unk2C.x, 50.0f + temp_r31->unk2C.y, temp_r31->unk2C.z); + fn_1_BD08(lbl_1_bss_36C.unk36, lbl_1_bss_36C.unk38, 3.0f, 3.0f, 1.0f); + fn_1_BE30(lbl_1_bss_36C.unk36, lbl_1_bss_36C.unk38, 0x80000000); + fn_1_C110(lbl_1_bss_36C.unk36, lbl_1_bss_36C.unk38, 0xFF, 0xFF, 0xFF, 0xFF); + fn_1_C410(lbl_1_bss_36C.unk36, lbl_1_bss_36C.unk38, lbl_1_bss_36C.unk3A, 0x11); + fn_1_C58C(lbl_1_bss_36C.unk36, lbl_1_bss_36C.unk38, lbl_1_bss_36C.unk3A, 0.5f); + if (temp_r31->unkC != 0) { + temp_r31->unkC = 0; + temp_r31->unkB = 1; + temp_r31->unk44.y = 26.766666f; + } + temp_r31->unk18 = 2; + temp_r31->unk2C.y += 100.65; + } + break; + case 7: + temp_r31->unk20 = fn_1_67F0(temp_r31->unk20, 0.0f, 0.9f); + break; + case 9: + if (temp_r31->unkE != 0) { + temp_r31->unk18 = 8; + } + else { + temp_r31->unk18 = 9; + } + break; + } + if (temp_r31->unk2C.y <= 0.0f) { + temp_r31->unk2C.y = 0.0f; + temp_r31->unkC = 1; + } + fn_1_3B44(object); + } +} + +void fn_1_3B44(omObjData *object) +{ + s16 sp8; + unkStruct3 *temp_r31; + s16 var_r29; + s16 var_r28; + s16 temp_r27; + s16 temp_r26; + s16 var_r25; + s16 temp_r24; + s32 temp_r23; + s32 var_r22; + + var_r25 = 0; + temp_r23 = object->model[0]; + temp_r31 = (unkStruct3 *)object->data; + temp_r27 = temp_r31->unk10; + temp_r26 = temp_r31->unk12; + sp8 = temp_r31->unk14; + temp_r24 = temp_r31->unk16; + temp_r31->unk50 = temp_r31->unk2C; + var_r29 = temp_r31->unk18; + var_r28 = 0; + switch (temp_r31->unk18) { + case 0: + var_r28 = 1; + break; + case 1: + if (temp_r31->unk1C > 0.1f) { + var_r29 = 1; + var_r28 = 1; + temp_r31->unk20 = temp_r31->unk38.y; + temp_r31->unk24++; + if (temp_r31->unk24 >= (0.5f * temp_r31->unk28)) { + temp_r31->unk24 -= 0.5f * temp_r31->unk28; + } + temp_r31->unk1C *= 1.0 + (0.25 * cosd(90.0f * (temp_r31->unk24 / (0.5f * temp_r31->unk28)))); + } + else { + temp_r31->unk24 = 0.0f; + temp_r31->unk1C = 0.0f; + var_r29 = 0; + var_r28 = 1; + } + break; + case 2: + temp_r31->unk44.y += -2.4333334f; + if (temp_r31->unkC != 0) { + var_r29 = 3; + var_r28 = 0; + temp_r31->unk44.y = 0.0f; + } + break; + case 3: + if (CharModelMotionEndCheck(temp_r31->unk1) != 0) { + var_r29 = 0; + var_r28 = 1; + } + break; + case 4: + temp_r31->unk44.y = -2.4333334f; + if (FABS(temp_r27) + FABS(temp_r26) > 8) { + temp_r31->unk20 = atan2d(temp_r27, -temp_r26); + } + if ((temp_r24 & 0x100) != 0) { + temp_r31->unkB = 0U; + var_r29 = 5; + var_r28 = 0; + var_r25 = 3; + if (FABS(temp_r27) + FABS(temp_r26) > 8) { + temp_r31->unk20 = atan2d(temp_r27, -temp_r26); + temp_r31->unk1C = 6.0f; + } + } + break; + case 5: + if (temp_r31->unkB < 0x20) { + temp_r31->unkB++; + } + if (FABS(temp_r27) + FABS(temp_r26) > 8) { + temp_r31->unk20 = atan2d(temp_r27, -temp_r26); + temp_r31->unk1C = 6.0f; + } + else { + temp_r31->unk1C = 0.0f; + } + if ((temp_r24 & 0x100) == 0) { + temp_r31->unk44.y = (2.4333334f * (2.5f + (0.009f * temp_r31->unkB * temp_r31->unkB))); + var_r29 = 6; + var_r28 = 0; + var_r25 = 4; + if (temp_r31->unkB < 0xC) { + HuAudFXPlay(0x5B1); + } + else if (temp_r31->unkB < 0x18) { + HuAudFXPlay(0x5B2); + } + else { + HuAudFXPlay(0x5B3); + } + } + break; + case 6: + if ((Hu3DMotionEndCheck(object->model[2]) == 0) && (Hu3DMotionShiftIDGet(object->model[2]) >= 0)) { + temp_r31->unkC = 1; + } + else { + if (temp_r31->unk44.y >= 0.0f) { + temp_r31->unkC = 0U; + } + temp_r31->unk44.y += -2.4333334f; + if (temp_r31->unkC != 0) { + if ((temp_r24 & 0x100) != 0) { + var_r29 = 4; + var_r28 = 1; + } + else { + var_r29 = 7; + var_r28 = 0; + } + temp_r31->unk1C = 0.0f; + temp_r31->unk44.y = 0.0f; + var_r25 = 5; + fn_1_1A60(temp_r31); + var_r22 = fn_1_A2D0(0x28, 1); + fn_1_B038(var_r22, 0, 0x2E000D); + lbl_1_bss_36C.unk40[var_r22].unk30 = &fn_1_5B20; + fn_1_B864(var_r22, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + fn_1_C264(var_r22, 1); + } + } + break; + case 7: + if ((temp_r24 & 0x100) != 0) { + var_r29 = 4; + var_r28 = 1; + } + else { + if (Hu3DMotionTimeGet(temp_r23) <= 0.0f) { + var_r29 = 4; + var_r28 = 1; + } + else { + if ((Hu3DMotionTimeGet(temp_r23) >= 10.0f) && (Hu3DMotionShiftIDGet(temp_r23) < 0)) { + Hu3DModelAttrSet(temp_r23, HU3D_MOTATTR_REV); + } + } + } + break; + case 8: + case 9: + var_r28 = 0; + temp_r31->unk44.y = -2.4333334f; + break; + } + temp_r31->unk38.y = fn_1_67F0(temp_r31->unk38.y, temp_r31->unk20, 0.75f); + temp_r31->unk44.x = (temp_r31->unk1C * sind(temp_r31->unk20)); + temp_r31->unk44.z = (temp_r31->unk1C * cosd(temp_r31->unk20)); + if ((temp_r31->unkC == 0) || (var_r29 == 1)) { + temp_r31->unk2C.x += temp_r31->unk44.x; + temp_r31->unk2C.y += temp_r31->unk44.y; + temp_r31->unk2C.z += temp_r31->unk44.z; + } + temp_r31->unk18 = var_r29; + if (var_r29 != temp_r31->unk1A) { + temp_r31->unk1A = var_r29; + CharModelMotionShiftSet(temp_r31->unk1, object->motion[temp_r31->unk18], 0.0f, 8.0f, var_r28); + temp_r31->unk28 = CharModelMotionMaxTimeGet(temp_r31->unk1); + if (var_r25 != 0) { + Hu3DMotionShiftSet(object->model[2], object->model[var_r25], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + } + } + if ((Hu3DModelAttrGet(object->model[2]) & 1) != 0) { + omSetTra(object, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + omSetRot(object, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + } + else { + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(object->model[2], temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + Hu3DModelRotSet(object->model[2], temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z); + } +} + +void fn_1_4660(omObjData *object) +{ + s16 sp3C[3][3]; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 sp10; + s16 spC; + f32 var_f31; + f32 temp_f30; + f32 var_f29; + unkStruct3 *temp_r31; + s32 var_r30; + s32 var_r29; + u8 temp_r28; + u8 temp_r27; + s32 var_r26; + s32 var_r25; + s16 var_r24; + s16 var_r23; + unkStruct3 *temp_r22; + u8 var_r21; + u8 var_r20; + s16 var_r19; + s16 var_r18; + s16 temp_r17; + + temp_r31 = (unkStruct3 *)object->data; + sp14 = object->model[0]; + spC = temp_r31->unk18; + temp_r17 = temp_r31->unk6; + var_r24 = var_r23 = var_r19 = var_r18 = 0; + switch (temp_r31->unk5D) { + case 0: + temp_r28 = ((0.5f * (600.0f + temp_r31->unk2C.x)) / 150.0f); + temp_r27 = ((0.5f * (600.0f + temp_r31->unk2C.z)) / 150.0f); + if (lbl_1_bss_234[temp_r31->unk0][temp_r28][temp_r27] < 16875.0f) { + temp_r31->unk60s = temp_r28; + temp_r31->unk62s = temp_r27; + temp_r31->unk5D++; + } + else { + var_r26 = 0x57E4; + for (var_r30 = temp_r28 - 1; var_r30 <= (temp_r28 + 1); var_r30++) { + if ((var_r30 >= 0) && (var_r30 < 4)) { + for (var_r29 = temp_r27 - 1; var_r29 <= (temp_r27 + 1); var_r29++) { + if ((var_r29 >= 0) && (var_r29 < 4) && (lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29] <= var_r26) + && ((var_r26 != lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29]) || ((fn_1_679C() & 1) == 0))) { + + var_r21 = var_r30; + var_r20 = var_r29; + var_r26 = lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29]; + } + } + } + } + if (var_r26 < 16875.0f) { + temp_r31->unk60s = var_r21; + temp_r31->unk62s = var_r20; + temp_r31->unk5D++; + } + else { + var_r26 = 0x57E4; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29] <= var_r26) { + var_r21 = var_r30; + var_r20 = var_r29; + var_r26 = lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29]; + } + } + } + temp_r31->unk60s = var_r21; + temp_r31->unk62s = var_r20; + temp_r31->unk5D++; + } + } + break; + case 1: + var_f29 = 360000.0f; + sp18 = temp_r31->unk2C; + sp18.x += 50.0f * sind(temp_r31->unk38.y); + sp18.z += 50.0f * cosd(temp_r31->unk38.y); + + for (var_r30 = 0; var_r30 < 3.0f; var_r30++) { + for (var_r29 = 0; var_r29 < 3.0f; var_r29++) { + sp3C[var_r30][var_r29] = 0; + } + } + + for (var_r30 = 0; var_r30 < 150.0f; var_r30++) { + for (var_r29 = 0; var_r29 < 150.0f; var_r29++) { + sp30.x = (150.0f * temp_r31->unk60s) + var_r30; + sp30.z = (150.0f * temp_r31->unk62s) + var_r29; + sp10 = (sp30.x + (600.0f * sp30.z)); + if ((temp_r31->unk0 + 1) != lbl_1_bss_334[sp10]) { + sp3C[(s16)(var_r30 / 50.0f)][(s16)(var_r29 / 50.0f)]++; + } + } + } + temp_r28 = (((0.5f * (600.0f + temp_r31->unk2C.x)) - (150.0f * temp_r31->unk60s)) / 50.0f); + temp_r27 = (((0.5f * (600.0f + temp_r31->unk2C.x)) - (150.0f * temp_r31->unk62s)) / 50.0f); + var_r25 = 0; + for (var_r30 = temp_r28 - 1; var_r30 <= (temp_r28 + 1); var_r30++) { + if (var_r30 >= 0) { + if (var_r30 >= 3.0f) + continue; + for (var_r29 = temp_r27 - 1; var_r29 <= (temp_r27 + 1); var_r29++) { + if (var_r29 >= 0) { + if (var_r29 >= 3.0f) + continue; + if (sp3C[var_r30][var_r29] < 1250.0f) + continue; + if (sp3C[var_r30][var_r29] < var_r25) + continue; + if ((var_r25 != sp3C[var_r30][var_r29]) || ((fn_1_679C() & 1) == 0)) { + var_r25 = sp3C[var_r30][var_r29]; + sp30.x = 25.0f + ((150.0f * temp_r31->unk60s) + (50.0f * var_r30)); + sp30.z = 25.0f + ((150.0f * temp_r31->unk62s) + (50.0f * var_r29)); + sp30.x = (2.0f * sp30.x) - 600.0f; + sp30.z = (2.0f * sp30.z) - 600.0f; + sp30.y = 0.0f; + temp_r31->unk6C.x = sp30.x; + temp_r31->unk6C.y = sp30.y; + temp_r31->unk6C.z = sp30.z; + } + } + } + } + } + if (var_r25 == 0) { + var_r25 = 0; + + for (var_r30 = 0; var_r30 < 3.0f; var_r30++) { + for (var_r29 = 0; var_r29 < 3.0f; var_r29++) { + if (sp3C[var_r30][var_r29] >= var_r25) { + sp30.x = 25.0f + ((150.0f * temp_r31->unk60s) + (50.0f * var_r30)); + sp30.z = 25.0f + ((150.0f * temp_r31->unk62s) + (50.0f * var_r29)); + sp30.x = (2.0f * sp30.x) - 600.0f; + sp30.z = (2.0f * sp30.z) - 600.0f; + sp30.y = 0.0f; + VECSubtract(&sp18, &sp30, &sp24); + temp_f30 = VECMag(&sp24); + if ((var_r25 != sp3C[var_r30][var_r29]) || !(temp_f30 > var_f29)) { + if (!(temp_f30 > var_f29) || !(sp3C[var_r30][var_r29] < (1.5f * var_r25))) { + temp_r31->unk6C.x = sp30.x; + temp_r31->unk6C.y = sp30.y; + temp_r31->unk6C.z = sp30.z; + var_r25 = sp3C[var_r30][var_r29]; + var_f29 = temp_f30; + } + } + } + } + } + } + temp_r31->unk64 = (1.0f + ((5 - temp_r17) * (fn_1_679C() / 65536.0f))); + temp_r31->unk68 = (1.0f + ((0x32 - (temp_r17 * 0x10)) * (fn_1_679C() / 65536.0f))); + temp_r31->unk5D++; + break; + case 2: + if (--temp_r31->unk68 == 0) { + VECSubtract(&temp_r31->unk6C, &temp_r31->unk2C, &sp24); + VECNormalize(&sp24, &sp24); + var_r24 = (32.0f * sp24.x); + var_r23 = (32.0f * -sp24.z); + var_r19 = var_r18 = 0x100; + temp_r31->unk66 = 0x18 + (s32)(((20 - (temp_r17 * 6)) * ((fn_1_679C() - 0x8000) / 32768.0f))); + temp_r31->unk5D++; + } + break; + case 3: + var_r24 = temp_r31->unk10; + var_r23 = temp_r31->unk12; + var_r19 = var_r18 = 0x100; + if (--temp_r31->unk66 == 0) { + temp_r31->unk5D++; + } + break; + case 4: + if (spC != 7) { + var_r24 = temp_r31->unk10; + var_r23 = temp_r31->unk12; + } + else { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + temp_r22 = lbl_1_bss_34C[var_r30]->data; + if (temp_r22 == temp_r31) + continue; + temp_r28 = ((0.5f * (600.0f + temp_r22->unk2C.x)) / 150.0f); + temp_r27 = ((0.5f * (600.0f + temp_r22->unk2C.z)) / 150.0f); + if (temp_r31->unk60s == temp_r28 && temp_r31->unk62s == temp_r27) + break; + } + if (var_r30 != 4) { + var_r26 = 0x57E4; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29] <= var_r26) + && ((temp_r31->unk60s != var_r30) || (temp_r31->unk62s != var_r29))) { + var_r21 = var_r30; + var_r20 = var_r29; + var_r26 = lbl_1_bss_234[temp_r31->unk0][var_r30][var_r29]; + } + } + } + temp_r31->unk60s = var_r21; + temp_r31->unk62s = var_r20; + temp_r31->unk5D = 1; + } + else { + var_r24 = (32.0 * sind(temp_r31->unk38.y)); + var_r23 = (32.0 * -cosd(temp_r31->unk38.y)); + var_f31 = 517.5f; + if ((temp_r31->unk2C.x > var_f31) || (temp_r31->unk2C.x < -var_f31)) { + var_r24 = -var_r24; + } + var_f31 = 517.5f; + if ((temp_r31->unk2C.z > var_f31) || (temp_r31->unk2C.z < -var_f31)) { + var_r23 = -var_r23; + } + if (--temp_r31->unk64 != 0) { + var_r19 = var_r18 = 0x100; + temp_r31->unk66 = 0x18 + (s32)(((20 - (temp_r17 * 6)) * ((fn_1_679C() - 0x8000) / 32768.0f))); + temp_r31->unk5D = 3; + } + else { + temp_r28 = temp_r31->unk60s; + temp_r27 = temp_r31->unk62s; + if (lbl_1_bss_234[temp_r31->unk0][temp_r28][temp_r27] > 16875.0f) { + temp_r31->unk5D = 0; + } + else { + temp_r31->unk5D = 1; + } + } + } + } + break; + } + temp_r31->unk10 = var_r24; + temp_r31->unk12 = var_r23; + temp_r31->unk14 = var_r19; + temp_r31->unk16 = var_r18; +} + +void fn_1_5B20(unkSubStruct2 *arg0) +{ + s16 sp8; + f32 temp_f31; + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + s32 var_r29; + unkSubStruct *var_r31; + + sp8 = 0; + switch (arg0->unk60) { + case 0: + temp_f28 = 360.0f / arg0->unk2; + var_r31 = arg0->unk3C; + for (var_r29 = 0; var_r29 < arg0->unk2; var_r29++, var_r31++) { + var_r31->unk68.x = sind(temp_f28 * var_r29) * (0.5f + (0.1f * (1.2f * ((fn_1_679C() - 0x8000) / 32768.0f)))); + var_r31->unk68.y = 0.0f; + var_r31->unk68.z = cosd(temp_f28 * var_r29) * (0.5f + (0.1f * (1.2f * ((fn_1_679C() - 0x8000) / 32768.0f)))); + var_r31->unk0.x = 65.0f * var_r31->unk68.x; + var_r31->unk0.y = 6.0f; + var_r31->unk0.z = 65.0f * var_r31->unk68.z; + } + arg0->unk7Cs = 30; + arg0->unk60++; + case 1: + arg0->unk7Cs--; + temp_f31 = (30.0f - arg0->unk7Cs) / 30.0f; + temp_f29 = arg0->unk7Cs / 30.0f; + var_r31 = arg0->unk3C; + for (var_r29 = 0; var_r29 < arg0->unk2; var_r29++, var_r31++) { + var_r31->unk0.x += 5.0f * temp_f29 * var_r31->unk68.x; + var_r31->unk0.z += 5.0f * temp_f29 * var_r31->unk68.z; + temp_f30 = 0.4f + (1.2f * temp_f31); + var_r31->unk18.x = temp_f30; + var_r31->unk18.y = temp_f30; + var_r31->unk18.z = temp_f30; + var_r31->unk50.r = 0xFF; + var_r31->unk50.g = 0xFF; + var_r31->unk50.b = 0xFF; + var_r31->unk50.a = 96.0f * (1.0f - (temp_f31 * temp_f31)); + } + if (arg0->unk7Cs == 0) { + arg0->unk60++; + } + break; + case 2: + fn_1_A800(arg0->unk0); + return; + } +} + +void fn_1_5FB0(omObjData *arg0) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + f32 temp_f31; + f32 var_f30; + f32 temp_f29; + f32 var_f28; + f32 temp_f27; + s32 var_r29; + unkStruct3 *temp_r30; + unkStruct3 *temp_r31; + + temp_r31 = (unkStruct3 *)arg0->data; + if (temp_r31->unk7 != 0) { + VECSubtract(&temp_r31->unk2C, &temp_r31->unk50, &sp2C); + var_f28 = VECMag(&sp2C); + if (var_f28 != 0.0f) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != temp_r31->unk0) { + temp_r30 = (unkStruct3 *)lbl_1_bss_34C[var_r29]->data; + if (temp_r30->unk7 != 0) { + sp14.x = temp_r31->unk2C.x; + sp14.y = temp_r31->unk2C.y; + sp14.z = temp_r31->unk2C.z; + sp14.y = 0.0f; + sp8.x = temp_r30->unk2C.x; + sp8.y = temp_r30->unk2C.y; + sp8.z = temp_r30->unk2C.z; + sp8.y = 0.0f; + VECSubtract(&sp14, &sp8, &sp2C); + temp_f31 = VECMag(&sp2C); + if (temp_f31 >= 109.45f) + continue; + VECSubtract(&temp_r30->unk2C, &temp_r30->unk50, &sp2C); + temp_f27 = VECMag(&sp2C); + VECSubtract(&sp14, &sp8, &sp20); + VECNormalize(&sp20, &sp20); + temp_f31 = 110.0f - temp_f31; + temp_f29 = ((0.6f * temp_f27) + (0.4f * var_f28)) / (var_f28 + temp_f27); + temp_r31->unk2C.x += temp_f29 * (temp_f31 * sp20.x); + temp_r31->unk2C.y += temp_f29 * (temp_f31 * sp20.y); + temp_r31->unk2C.z += temp_f29 * (temp_f31 * sp20.z); + temp_f29 = ((0.6f * var_f28) + (0.4f * var_f28)) / (var_f28 + temp_f27); + temp_r30->unk2C.x += temp_f29 * (temp_f31 * -sp20.x); + temp_r30->unk2C.y += temp_f29 * (temp_f31 * -sp20.y); + temp_r30->unk2C.z += temp_f29 * (temp_f31 * -sp20.z); + fn_1_5FB0(lbl_1_bss_34C[var_r29]); + } + } + } + var_f30 = 555.0f; + if (temp_r31->unk2C.x > var_f30) { + temp_r31->unk2C.x = var_f30; + } + if (temp_r31->unk2C.x < -var_f30) { + temp_r31->unk2C.x = -var_f30; + } + + var_f30 = 555.0f; + if (temp_r31->unk2C.z > var_f30) { + temp_r31->unk2C.z = var_f30; + } + if (temp_r31->unk2C.z < -var_f30) { + temp_r31->unk2C.z = -var_f30; + } + } + } +} + +void fn_1_6304(omObjData *object) +{ + s32 var_r31; + + if (lbl_1_bss_34A >= 5) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_5FB0(lbl_1_bss_34C[var_r31]); + } + } +} + +void fn_1_6368(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x80; var_r31++) { + lbl_1_bss_34[var_r31] = NULL; + } +} + +void *fn_1_63A8(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x80; var_r31++) { + if (!lbl_1_bss_34[var_r31]) + break; + } + if (var_r31 == 0x80) { + return NULL; + } + lbl_1_bss_34[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM); + return lbl_1_bss_34[var_r31]; +} + +void fn_1_6448(void *arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x80; var_r31++) { + if (lbl_1_bss_34[var_r31] == arg0) + break; + } + if (var_r31 != 0x80) { + HuMemDirectFree(lbl_1_bss_34[var_r31]); + lbl_1_bss_34[var_r31] = NULL; + } +} + +void fn_1_64DC(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x80; var_r31++) { + if (lbl_1_bss_34[var_r31]) { + OSReport("adr %x\n", lbl_1_bss_34[var_r31]); + HuMemDirectFree(lbl_1_bss_34[var_r31]); + lbl_1_bss_34[var_r31] = NULL; + } + } +} + +void fn_1_6584(s16 arg0, char *arg1, u8 arg2, u8 arg3, u8 arg4) +{ + char sp13[0x100]; + HsfObject *var_r31; + HsfMaterial *temp_r30; + HsfData *temp_r29; + HsfBuffer *temp_r28; + HsfObject *var_r26; + s32 var_r25; + s32 var_r27; + + temp_r29 = Hu3DData[arg0].hsfData; + var_r26 = temp_r29->object; + strcpy(&sp13, MakeObjectName(arg1)); + + for (var_r25 = 0; var_r25 < temp_r29->objectCnt; var_r25++, var_r26++) { + var_r31 = var_r26; + temp_r28 = var_r31->data.face; + if (var_r31->constData && strcmp(&sp13, var_r31->name) == 0) { + + for (var_r27 = 0; var_r27 < temp_r28->count; var_r27++) { + temp_r30 = &var_r31->data.material[((HsfFace *)temp_r28->data)[var_r27].mat & 0xFFF]; + temp_r30->color[0] = arg2; + temp_r30->color[1] = arg3; + temp_r30->color[2] = arg4; + } + return; + } + } +} + +AnimBmpData *fn_1_668C(s16 arg0) +{ + return Hu3DTexAnimData[arg0].unk10->bmp; +} + +s16 fn_1_66AC(void) +{ + AnimBmpData *temp_r31; + s32 var_r30; + AnimData **var_r29; + s32 var_r28; + + var_r30 = fn_1_A94C(0xFFFF0000, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02); + fn_1_ACF4(var_r30, 7, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02); + var_r29 = fn_1_9734(var_r30); + temp_r31 = (*var_r29)->bmp; + var_r28 = temp_r31->sizeX * temp_r31->sizeY; + memcpy(temp_r31->data, Hu3DShadowData.unk_04, var_r28); + return var_r30; +} + +u32 lbl_1_data_110 = 0x41C64E6D; + +s32 fn_1_679C(void) +{ + lbl_1_data_110 *= 0x41C64E6D; + lbl_1_data_110 += 0x3039; + return lbl_1_data_110 >> 0x10; +} + +f32 fn_1_67F0(f32 arg0, f32 arg1, f32 arg2) +{ + f32 var_f31; + + if (arg0 > 180.0f) { + arg0 -= 360.0f; + } + else if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + if (arg1 > 180.0f) { + arg1 -= 360.0f; + } + else if (arg1 <= -180.0f) { + arg1 += 360.0f; + } + var_f31 = arg0 - arg1; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg0 = arg1 + (var_f31 * arg2); + if (arg0 > 180.0f) { + return arg0 - 360.0f; + } + if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + return arg0; +} + +void fn_1_6958(Mtx arg0, f32 arg8, f32 arg9, f32 argA) +{ + Mtx sp38; + Mtx sp8; + + if (argA != 0.0f) { + MTXRotDeg(arg0, 0x5A, argA); + } + else { + MTXIdentity(arg0); + } + if (arg8 != 0.0f) { + MTXRotDeg(sp38, 0x58, arg8); + MTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + MTXRotDeg(sp8, 0x59, arg9); + MTXConcat(sp8, arg0, arg0); + } +} + +void fn_1_6A78(Mtx arg0, Vec *arg1) +{ + f32 temp_f29; + f32 var_f28; + + arg1->x = atan2d(arg0[2][2], arg0[1][2]); + arg1->z = atan2d(arg0[0][0], arg0[0][1]); + temp_f29 = -arg0[0][2]; + var_f28 = sqrtf(ABS(1.0 - (temp_f29 * temp_f29))); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod((180.0f + arg1->x), 360.0); + arg1->z = fmod((180.0f + arg1->z), 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(var_f28, temp_f29); +} + +f32 fn_1_6D84(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + f32 temp_f31; + f32 var_f30; + + temp_f31 = (1.0 - arg8); + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (temp_f31 * temp_f31)) + (2.0 * (argA * (temp_f31 * arg8)))); + return var_f30; +} + +void fn_1_6DFC(f32 *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 arg8) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = fn_1_6D84(arg8, *arg0++, *arg1++, *arg2++); + } +} + +f32 fn_1_6F18(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + f32 var_f31; + + var_f31 = (2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA)))); + return var_f31; +} + +void fn_1_6F90(f32 *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 arg8) +{ + f32 spC[3]; + f32 var_f29; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_6F18(arg8, *arg0++, *arg1++, *arg2++); + } + var_f29 = sqrtf((spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1]))); + if (var_f29) { + var_f29 = (1.0 / var_f29); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = var_f29 * spC[var_r31]; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} + +void fn_1_7268(f32 *arg0, f32 *arg1, f32 *arg2, s32 arg3) +{ + f32 sp48[0x10]; + f32 sp8[0x10]; + f32 temp_f31; + s32 var_r31; + + arg2[0] = 0.0f; + arg2[arg3 - 1] = 0.0f; + + for (var_r31 = 0; var_r31 < arg3 - 1; var_r31++) { + sp48[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp48[var_r31] == 0.0f) { + sp8[var_r31 + 1] = 0.0f; + } + else { + sp8[var_r31 + 1] = (arg1[var_r31 + 1] - arg1[var_r31]) / sp48[var_r31]; + } + } + arg2[1] = (sp8[2] - sp8[1]); + sp8[1] = 2.0f * (arg0[2] - arg0[0]); + + for (var_r31 = 1; var_r31 < arg3 - 2; var_r31++) { + temp_f31 = sp48[var_r31] / sp8[var_r31]; + arg2[var_r31 + 1] = ((sp8[var_r31 + 2] - sp8[var_r31 + 1]) - (temp_f31 * (f64)arg2[var_r31])); + sp8[var_r31 + 1] = ((2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (temp_f31 * (f64)sp48[var_r31])); + } + + arg2[arg3 - 2] -= sp48[arg3 - 2] * arg2[arg3 - 1]; + + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (0.0f == sp8[var_r31]) { + arg2[var_r31] = 0.0f; + } + else { + arg2[var_r31] = (arg2[var_r31] - (sp48[var_r31] * arg2[var_r31 + 1])) / sp8[var_r31]; + } + } +} + +f32 fn_1_7520(f32 arg0, f32 *arg1, f32 *arg2, f32 *arg3, s32 arg4) +{ + f32 temp_f30; + f32 temp_f31; + f32 var_f29; + s32 temp_r31; + + temp_r31 = (s32)arg0; + arg0 -= temp_r31; + temp_f31 = arg1[temp_r31 + 1] - arg1[temp_r31]; + temp_f30 = temp_f31 * arg0; + var_f29 = arg2[temp_r31] + + (temp_f30 + * ((temp_f30 * ((3.0f * arg3[temp_r31]) + ((temp_f30 * (arg3[temp_r31 + 1] - arg3[temp_r31])) / temp_f31))) + + (((arg2[temp_r31 + 1] - arg2[temp_r31]) / temp_f31) - (temp_f31 * (2.0f * arg3[temp_r31] + arg3[temp_r31 + 1]))))); + if (temp_f31 == 0.0f) { + var_f29 = arg2[temp_r31]; + } + return var_f29; +} + +void fn_1_7674(f32 *arg0, Vec *arg1, Vec *arg2, s32 arg3) +{ + f32 spD4[0x10]; + f32 sp94[0x10]; + f32 sp54[0x10]; + f32 sp14[0x10]; + Vec sp8; + f32 temp_f31; + s32 var_r27; + s32 var_r30; + s32 var_r31; + + arg0[0] = 0.0f; + + for (var_r30 = 1; var_r30 < arg3; var_r30++) { + VECSubtract(&arg1[var_r30], &arg1[var_r30 - 1], &sp8); + arg0[var_r30] = arg0[var_r30 - 1] + VECMag(&sp8); + } + + for (var_r27 = 0; var_r27 < 3; var_r27++) { + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + spD4[var_r30] = ((f32(*)[3])arg1)[var_r30][var_r27]; + } + sp94[0] = 0.0f; + sp94[arg3 - 1] = 0.0f; + + for (var_r31 = 0; var_r31 < (arg3 - 1); var_r31++) { + sp14[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp14[var_r31] == 0.0f) { + sp54[var_r31 + 1] = 0.0f; + } + else { + sp54[var_r31 + 1] = (spD4[var_r31 + 1] - spD4[var_r31]) / sp14[var_r31]; + } + } + sp94[1] = sp54[2] - sp54[1]; + sp54[1] = 2.0f * (arg0[2] - arg0[0]); + + for (var_r31 = 1; var_r31 < (arg3 - 2); var_r31++) { + temp_f31 = sp14[var_r31] / sp54[var_r31]; + sp94[var_r31 + 1] = ((sp54[var_r31 + 2] - sp54[var_r31 + 1]) - (temp_f31 * (f64)sp94[var_r31])); + sp54[var_r31 + 1] = ((2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (temp_f31 * (f64)sp14[var_r31])); + } + sp94[arg3 - 2] -= sp14[arg3 - 2] * sp94[arg3 - 1]; + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (sp54[var_r31] == 0.0f) { + sp94[var_r31] = 0.0f; + } + else { + sp94[var_r31] = (sp94[var_r31] - (sp14[var_r31] * sp94[var_r31 + 1])) / sp54[var_r31]; + } + } + + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + ((f32(*)[3])arg2)[var_r30][var_r27] = sp94[var_r30]; + (void)arg2; + } + } +} + +void fn_1_7A54(f32 arg0, Vec *arg1, f32 *arg2, Vec *arg3, Vec *arg4, s32 arg5) +{ + f32 sp48[0x10]; + f32 sp8[0x10]; + f32 temp_f29; + f32 temp_f31; + f32 var_f28; + s32 temp_r31; + s32 var_r29; + s32 var_r30; + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + for (var_r30 = 0; var_r30 < arg5; var_r30++) { + sp48[var_r30] = ((f32(*)[3])arg3)[var_r30][var_r29]; + sp8[var_r30] = ((f32(*)[3])arg4)[var_r30][var_r29]; + } + + ((f32(*)[3])arg1)[0][var_r29] = fn_1_7520(arg0, arg2, sp48, sp8, 0); + } +} + +f32 fn_1_7C68(Vec *arg0) +{ + f32 temp_f29; + f32 temp_f30; + + temp_f30 = (arg0->z * arg0->z) + ((arg0->x * arg0->x) + (arg0->y * arg0->y)); + temp_f30 = sqrtf(temp_f30); + + if (temp_f30 != 0.0f) { + temp_f29 = 1.0f / temp_f30; + arg0->x *= temp_f29; + arg0->y *= temp_f29; + arg0->z *= temp_f29; + } + else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return temp_f30; +} + +f32 fn_1_7E00(Vec arg0, Vec arg1, Vec *arg2, f32 arg8) +{ + if (arg8 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg8 = 0.0f; + } + else if (arg8 >= 1.0f) { + arg2->x = arg0.x + arg1.x; + arg2->y = arg0.y + arg1.y; + arg2->z = arg0.z + arg1.z; + arg8 = 1.0f; + } + else { + arg2->x = arg0.x + (arg8 * arg1.x); + arg2->y = arg0.y + (arg8 * arg1.y); + arg2->z = arg0.z + (arg8 * arg1.z); + } + return arg8; +} + +f32 fn_1_7ED8(Vec arg0, Vec arg1, Vec arg2) +{ + f32 temp_f30; + f32 var_f31; + + var_f31 = (arg2.z * (arg1.z - arg0.z)) + ((arg2.x * (arg1.x - arg0.x)) + (arg2.y * (arg1.y - arg0.y))); + temp_f30 = -((arg2.z * arg2.z) + ((arg2.x * arg2.x) + (arg2.y * arg2.y))); + if (temp_f30 != 0.0f) { + var_f31 /= temp_f30; + } + return var_f31; +} + +f32 fn_1_7F94(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp44; + f32 var_f30; + + if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + + var_f30 = fn_1_7ED8(*arg0, *arg1, *arg2); + fn_1_7E00(*arg1, *arg2, &sp44, var_f30); + return ((arg0->z - sp44.z) * (arg0->z - sp44.z)) + (((arg0->x - sp44.x) * (arg0->x - sp44.x)) + ((arg0->y - sp44.y) * (arg0->y - sp44.y))); +} + +f32 fn_1_82D0(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + f32 var_f31; + f32 var_f30; + + if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + else { + var_f30 = fn_1_7ED8(*arg0, *arg1, *arg2); + fn_1_7E00(*arg1, *arg2, arg3, var_f30); + } + + arg4->x = arg3->x - arg0->x; + arg4->y = arg3->y - arg0->y; + arg4->z = arg3->z - arg0->z; + + return fn_1_7C68(arg4); +} diff --git a/src/REL/m415Dll/map.c b/src/REL/m415Dll/map.c new file mode 100644 index 00000000..6533a2dc --- /dev/null +++ b/src/REL/m415Dll/map.c @@ -0,0 +1,1508 @@ +#define HUSPR_USE_OLD_DEFS +#include "REL/m415Dll.h" + +#include "game/hsfdraw.h" +#include "game/sprite.h" + +void fn_1_8780(s16 arg0, s16 arg1) +{ + s32 var_r31; + unkSubStruct2 *var_r29; + unkSubStruct3 *var_r30; + + lbl_1_bss_36C.unk34 = Hu3DHookFuncCreate(fn_1_95C0); + Hu3DModelLayerSet(lbl_1_bss_36C.unk34, 6); + lbl_1_bss_36C.unk30 = arg0; + lbl_1_bss_36C.unk40 = var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkSubStruct2), MEMORY_DEFAULT_NUM); + lbl_1_bss_36C.unk32 = arg1; + lbl_1_bss_36C.unk3C = var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkSubStruct3), MEMORY_DEFAULT_NUM); + + for (var_r31 = 0; var_r31 < arg0; var_r31++, var_r29++) { + var_r29->unk8 = 0; + } + + for (var_r31 = 0; var_r31 < arg1; var_r31++, var_r30++) { + var_r30->unk6 = 0; + var_r30->unk8 = 0; + } + lbl_1_bss_36C.unk36 = lbl_1_bss_36C.unk38 = lbl_1_bss_36C.unk3A = 0; +} + +void fn_1_88B8(unkSubStruct2 *arg0) +{ + ModelData sp120; + Mtx spF0; + Mtx spC0; + Mtx sp90; + Mtx sp60; + Mtx sp30; + GXColor sp2C; + s16 sp8; + s32 var_r25; + s32 var_r27; + s16 temp_r23; + s16 var_r28; + s16 var_r29; + s32 var_r24; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + unkSubStruct3 *temp_r26; + unkSubStruct *var_r31; + + mtxRot(sp60, arg0->unk18.x, arg0->unk18.y, arg0->unk18.z); + MTXScale(sp90, arg0->unk24.x, arg0->unk24.y, arg0->unk24.z); + MTXConcat(sp60, sp90, sp90); + mtxTransCat(sp90, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); + MTXConcat(Hu3DCameraMtx, sp90, spC0); + var_r29 = 0; + var_r28 = 0; + sp8 = 0; + + for (var_r27 = GX_TEXMAP0; var_r27 < arg0->unk4; var_r27++) { + if (arg0->unk34[var_r27] != 0) { + temp_r26 = &lbl_1_bss_36C.unk3C[arg0->unk34[var_r27]]; + MTXCopy(temp_r26->unk18, sp30); + mtxTransCat(sp30, temp_r26->unkC.x, temp_r26->unkC.y, temp_r26->unkC.z); + switch (temp_r26->unk4) { + case 0: + GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX2x4); + var_r22 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r27 + 4, var_r22, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + if (var_r27 == GX_TEXMAP0) { + if ((temp_r26->unk0->bmp->dataFmt == 7) || (temp_r26->unk0->bmp->dataFmt == 8)) { + GXSetTevColor(GX_TEVREG2, temp_r26->unk48); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_C2, GX_CC_RASC, GX_CC_ZERO); + } + 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 { + sp2C.a = temp_r26->unk48.a; + GXSetTevColor(GX_TEVREG2, sp2C); + GXSetTevColorIn(var_r29, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + } + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + break; + case 1: + GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX2x4); + var_r21 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r27 + 4, var_r21, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + break; + case 2: + sp2C.a = 0xE0; + GXSetTevColor(GX_TEVREG1, sp2C); + GXSetTexCoordGen2(var_r28 + 1, GX_TG_BUMP0, var_r28, 0x3C, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + var_r29++; + GXSetTevOrder(var_r29, var_r28 + 1, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); + GXSetTevColorOp(var_r29, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + break; + case 3: + var_r28--; + GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX2x4); + var_r20 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r27 + 4, var_r20, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + var_r28++; + break; + case 4: + mtxRot(sp60, arg0->unk18.x, arg0->unk18.y, arg0->unk18.z); + MTXScale(sp90, arg0->unk24.x, arg0->unk24.y, arg0->unk24.z); + MTXConcat(sp60, sp90, sp90); + mtxTransCat(sp90, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); + 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); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + 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 { + 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); + } + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + break; + } + var_r29++; + var_r28++; + if (temp_r26->unk4D != 0) { + HuSprTexLoad(temp_r26->unk0, 0, var_r27, 1, 1, 1); + } + else { + HuSprTexLoad(temp_r26->unk0, 0, var_r27, 0, 0, 1); + } + } + } + GXSetNumTevStages((s16)var_r29); + GXSetNumTexGens((s16)var_r28); + var_r31 = arg0->unk3C; + + for (var_r24 = 0; var_r24 < arg0->unk2; var_r24++, var_r31++) { + if ((var_r31->unk34 != 0) && ((var_r31->unk34 & 4) == 0)) { + switch (var_r31->unk30) { + case 0: + mtxRot(sp60, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); + if (var_r31->unk31 == 2) { + MTXConcat(lbl_1_bss_36C.unk0, sp60, sp60); + } + else if (var_r31->unk31 == 1) { + MTXRotDeg(sp90, 0x59, CRot.y); + MTXConcat(sp90, sp60, sp60); + } + MTXScale(sp90, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z); + MTXConcat(sp60, sp90, sp90); + mtxTransCat(sp90, var_r31->unk0.x, var_r31->unk0.y, var_r31->unk0.z); + MTXConcat(Hu3DCameraMtx, sp90, spF0); + break; + case 1: + mtxRot(sp60, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); + if (var_r31->unk31 == 2) { + if (HmfInverseMtxF3X3(spC0, sp90) == 0) { + MTXIdentity(sp90); + } + MTXConcat(sp90, sp60, sp60); + } + else if (var_r31->unk31 == 1) { + MTXRotDeg(sp90, 0x59, CRot.y); + MTXConcat(sp90, sp60, sp60); + } + MTXScale(sp90, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z); + MTXConcat(sp60, sp90, sp90); + mtxTransCat(sp90, var_r31->unk0.x, var_r31->unk0.y, var_r31->unk0.z); + MTXConcat(spC0, sp90, spF0); + break; + } + GXLoadPosMtxImm(spF0, 0); + MTXInverse(spF0, sp90); + MTXTranspose(sp90, sp60); + GXLoadNrmMtxImm(sp60, 0); + GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk4C); + GXSetChanMatColor(GX_COLOR0A0, var_r31->unk50); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + if ((var_r31->unk34 & 0x10) != 0) { + GXSetZMode(0, GX_LEQUAL, 1); + } + else { + GXSetZMode(1, GX_LEQUAL, 0); + } + sp120.attr = 0; + temp_r23 = Hu3DLightSet(&sp120, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 0.0f); + GXSetNumChans(1); + if ((var_r31->unk34 & 8) != 0) { + var_r25 = GX_SRC_VTX; + } + else { + var_r25 = GX_SRC_REG; + } + switch (var_r31->unk32) { + case 0: + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, var_r25, 0, GX_DF_CLAMP, GX_AF_NONE); + break; + case 1: + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_REG, var_r25, temp_r23, GX_DF_CLAMP, GX_AF_SPOT); + break; + case 2: + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_REG, var_r25, temp_r23, GX_DF_CLAMP, GX_AF_SPEC); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk40, 12); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk44, 4); + + for (var_r27 = 0; var_r27 < var_r31->unk33; var_r27++) { + GXSetVtxDesc(var_r27 + GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(var_r27 + GX_VA_TEX0, var_r31->unk54[var_r27].unk4, 8); + } + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, var_r31->unk48, 12); + GXCallDisplayList(var_r31->unk3C, var_r31->unk38); + } + } +} + +void fn_1_95C0(ModelData *arg0, Mtx arg1) +{ + Mtx sp38; + Mtx sp8; + s32 var_r30; + unkSubStruct2 *var_r31; + + var_r31 = lbl_1_bss_36C.unk40; + GXLoadPosMtxImm(arg1, 0); + MTXInverse(arg1, sp38); + MTXTranspose(sp38, sp8); + GXLoadNrmMtxImm(sp8, 0); + HmfInverseMtxF3X3(Hu3DCameraMtx, lbl_1_bss_36C.unk0); + + for (var_r30 = 0; var_r30 < lbl_1_bss_36C.unk30; var_r30++, var_r31++) { + if ((var_r31->unk8 != 0) && ((var_r31->unk8 & 2) != 0) && ((var_r31->unk8 & 4) == 0)) { + if ((u8)omPauseChk() == 0) { + if (var_r31->unk30) { + var_r31->unk30(var_r31); + } + if (var_r31->unk8 == 0) + continue; + fn_1_9DC8(var_r31); + if (var_r31->unk8 == 0) + continue; + } + fn_1_88B8(var_r31); + } + } +} + +unkSubStruct2 *fn_1_96EC(s16 arg0) +{ + return &lbl_1_bss_36C.unk40[arg0]; +} + +unkSubStruct *fn_1_9708(s16 arg0, s16 arg1) +{ + return &lbl_1_bss_36C.unk40[arg0].unk3C[arg1]; +} + +AnimData **fn_1_9734(s16 arg0) +{ + return &lbl_1_bss_36C.unk3C[arg0].unk0; +} + +void fn_1_9750(unkStruct6 **arg0, s16 arg1, f32 arg8, f32 arg9) +{ + s32 var_r30; + unkStruct6 *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct6), MEMORY_DEFAULT_NUM); + + 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->unk18.x = (0.5f * arg8); + var_r31->unk18.y = (-0.5f * arg9); + var_r31->unk18.z = 0.0f; + var_r31->unk24.x = (-0.5f * arg8); + var_r31->unk24.y = (-0.5f * arg9); + var_r31->unk24.z = 0.0f; + } +} + +void fn_1_98D4(Vec **arg0, s16 arg1, Vec *arg2) +{ + s32 var_r29; + s32 var_r28; + Vec *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec[4]), MEMORY_DEFAULT_NUM); + + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } + } +} + +void fn_1_9974(GXColor **arg0, s16 arg1, GXColor *arg2) +{ + s32 var_r29; + s32 var_r28; + GXColor *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(GXColor[4]), MEMORY_DEFAULT_NUM); + + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->r = arg2->r; + var_r31->g = arg2->g; + var_r31->b = arg2->b; + var_r31->a = arg2->a; + } + } +} + +void fn_1_9A1C(Vec **arg0, s16 arg1, Vec *arg2) +{ + s32 var_r29; + Vec *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), MEMORY_DEFAULT_NUM); + + for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } +} + +void fn_1_9AA8(HsfVector2f **arg0, s16 arg1, HsfVector2f *arg2) +{ + s32 var_r28; + s32 var_r29; + HsfVector2f *var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(HsfVector2f[4]), MEMORY_DEFAULT_NUM); + + for (var_r28 = 0; var_r28 < arg1; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r31++, arg2++, var_r29++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + } + } +} + +void fn_1_9B40(unkSubStruct *arg0) +{ + void *sp8; + s32 var_r29; + s32 var_r31; + void *temp_r28; + + 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 } }; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + arg0->unk40[var_r31] = sp1C[var_r31]; + } + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + arg0->unk44[var_r31] = spC[var_r31]; + } + arg0->unk48->x = 0.0f; + arg0->unk48->y = 0.0f; + arg0->unk48->z = 1.0; + temp_r28 = arg0->unk3C; + sp8 = temp_r28; + GXBeginDisplayList(temp_r28, 0x100U); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GXPosition1x16(var_r31); + GXNormal1x16(0); + GXColor1x16(var_r31); + for (var_r29 = 0; var_r29 < arg0->unk33; var_r29++) { + GXTexCoord1x16(var_r31); + } + } + arg0->unk38 = GXEndDisplayList(); +} + +void fn_1_9DC8(unkSubStruct2 *arg0) +{ + s32 temp_r0; + s32 var_r25; + s32 var_r26; + s32 var_r27; + unkSubStruct *var_r28; + unkSubStruct3 *temp_r30; + unkSubStruct4 *var_r31; + + var_r27 = 0; + var_r28 = arg0->unk3C; + + for (var_r25 = 0; var_r25 < arg0->unk2; var_r25++, var_r28++) { + if ((var_r28->unk34 & 4) != 0) { + var_r27++; + } + else { + var_r31 = var_r28->unk54; + + for (var_r26 = 0; var_r26 < var_r28->unk33; var_r26++, var_r31++) { + temp_r30 = &lbl_1_bss_36C.unk3C[arg0->unk34[var_r26]]; + var_r31->unk24 &= ~4; + switch (var_r31->unk24 & 0xF) { + case 1: + var_r31->unk2C += var_r31->unk28; + if (var_r31->unk2C >= 1.0f) { + var_r31->unk0++; + var_r31->unk2C--; + } + break; + case 2: + var_r31->unk2C += var_r31->unk28; + if (var_r31->unk2C >= 1.0f) { + var_r31->unk0--; + var_r31->unk2C--; + } + break; + } + if (var_r31->unk0 >= temp_r30->unk4C) { + if ((var_r31->unk24 & 0x10) != 0) { + var_r31->unk24 |= 8; + var_r31->unk0--; + } + else if ((var_r31->unk24 & 0x40) != 0) { + var_r31->unk24 = (var_r31->unk24 & 0xF0) | 2; + var_r31->unk0 -= 2; + } + else if ((var_r31->unk24 & 0x20) != 0) { + var_r31->unk0 = 0; + } + var_r31->unk24 |= 4; + } + else if (var_r31->unk0 < 0) { + if ((var_r31->unk24 & 0x10) != 0) { + var_r31->unk24 |= 8; + var_r31->unk0 = 0; + } + else if ((var_r31->unk24 & 0x20) != 0) { + if ((var_r31->unk24 & 0x40) != 0) { + var_r31->unk24 = (var_r31->unk24 & 0xF0) | 1; + var_r31->unk0 = 1; + } + else { + var_r31->unk0 = temp_r30->unk4C - 1; + } + } + else if ((var_r31->unk24 & 0x40) != 0) { + var_r31->unk24 |= 8; + var_r31->unk0 = 0; + } + var_r31->unk24 |= 4; + } + else { + var_r31->unk24 &= ~8; + } + if (var_r31->unk0 != var_r31->unk1) { + var_r31->unk4[0].y = var_r31->unk0 * temp_r30->unk58; + var_r31->unk4[1].y = var_r31->unk0 * temp_r30->unk58; + var_r31->unk4[2].y = ((var_r31->unk0 + 1) * temp_r30->unk58); + var_r31->unk4[3].y = ((var_r31->unk0 + 1) * temp_r30->unk58); + if ((var_r31->unk0 + 1) < temp_r30->unk4C) { + var_r31->unk4[2].y -= temp_r30->unk60; + var_r31->unk4[3].y -= temp_r30->unk60; + } + var_r31->unk1 = var_r31->unk0; + } + if ((var_r31->unk24 & 8) != 0) { + if ((var_r28->unk34 & 0x40000000) != 0) { + var_r28->unk34 |= 4; + if ((var_r31->unk24 & 0x40) == 0) { + if (var_r31->unk0 <= 0) { + var_r31->unk0 = temp_r30->unk4C; + } + else { + var_r31->unk0 = 0; + } + } + } + else if ((var_r28->unk34 & 0x80000000) != 0) { + fn_1_A800(arg0->unk0); + } + var_r27++; + } + } + } + } + if (var_r27 >= arg0->unk2) { + if ((arg0->unk8 & 0x40000000) != 0) { + arg0->unk8 |= 4; + return; + } + if ((arg0->unk8 & 0x80000000) != 0) { + fn_1_A800(arg0->unk0); + } + } +} + +s16 fn_1_A2D0(u8 arg0, u8 arg1) +{ + s32 var_r29; + s32 var_r28; + unkSubStruct *var_r30; + unkSubStruct2 *var_r31; + void *temp_r25; + + var_r31 = lbl_1_bss_36C.unk40 + 1; + + for (var_r29 = 1; var_r29 < lbl_1_bss_36C.unk30; var_r29++, var_r31++) { + if (var_r31->unk8 == 0) { + break; + } + } + if (var_r29 == lbl_1_bss_36C.unk30) { + return 0; + } + var_r31->unk0 = var_r29; + var_r31->unk8 = 1; + var_r31->unk30 = NULL; + var_r31->unk2 = arg0; + var_r31->unk4 = arg1; + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkSubStruct), MEMORY_DEFAULT_NUM); + var_r31->unk3C = var_r30; + var_r31->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, MEMORY_DEFAULT_NUM); + var_r31->unk48 = 0; + var_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkType), MEMORY_DEFAULT_NUM); + var_r31->unk50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec[4]), MEMORY_DEFAULT_NUM); + var_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkType2), MEMORY_DEFAULT_NUM); + var_r31->unk58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * sizeof(unkSubStruct4)), MEMORY_DEFAULT_NUM); + DCFlushRangeNoSync(var_r31->unk4C, arg0 << 8); + var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f; + var_r31->unk18.x = var_r31->unk18.y = var_r31->unk18.z = 0.0f; + var_r31->unk24.x = var_r31->unk24.y = var_r31->unk24.z = 1.0f; + var_r31->unk70.x = var_r31->unk70.y = var_r31->unk70.z = 0.0f; + var_r31->unk64.x = var_r31->unk64.y = var_r31->unk64.z = 0.0f; + var_r31->unk60 = 0; + + for (var_r29 = 0; var_r29 < 0x20; var_r29++) { + var_r31->unk7C[var_r29] = 0; + } + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + var_r31->unk34[var_r29] = 0; + } + for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r30++) { + var_r30->unk34 = 1; + var_r30->unk33 = arg1; + var_r30->unk30 = 0; + var_r30->unk31 = 2; + var_r30->unk32 = 0; + + var_r30->unk4C.r = var_r30->unk4C.g = var_r30->unk4C.b = 0; + var_r30->unk4C.a = 0xFF; + var_r30->unk50.r = var_r30->unk50.g = var_r30->unk50.b = 0xFF; + var_r30->unk50.a = 0xFF; + var_r30->unk54 = &var_r31->unk5C[var_r29 * arg1]; + for (var_r28 = 0; var_r28 < arg1; var_r28++) { + var_r30->unk54[var_r28].unk0 = var_r30->unk54[var_r28].unk1 = 0; + var_r30->unk54[var_r28].unk28 = 1.0f; + var_r30->unk54[var_r28].unk2C = 0.0f; + } + + var_r30->unk0.x = var_r30->unk0.y = var_r30->unk0.z = 0.0f; + var_r30->unkC.x = var_r30->unkC.y = var_r30->unkC.z = 0.0f; + var_r30->unk18.x = var_r30->unk18.y = var_r30->unk18.z = 1.0f; + var_r30->unk68.x = var_r30->unk68.y = var_r30->unk68.z = 0.0f; + var_r30->unk5C.x = var_r30->unk5C.y = var_r30->unk5C.z = 0.0f; + var_r30->unk58 = 0; + + for (var_r28 = 0; var_r28 < 0x10; var_r28++) { + var_r30->unk74[var_r28] = 0; + } + var_r30->unk40 = &var_r31->unk50[var_r29 * 4]; + var_r30->unk44 = &var_r31->unk54[var_r29 * 4]; + var_r30->unk48 = &var_r31->unk58[var_r29]; + var_r30->unk3C = var_r31->unk4C + var_r31->unk48; + fn_1_9B40(var_r30); + var_r31->unk48 += var_r30->unk38; + } + temp_r25 = var_r31->unk4C; + var_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk48, MEMORY_DEFAULT_NUM); + memcpy(var_r31->unk4C, temp_r25, var_r31->unk48); + HuMemDirectFree(temp_r25); + DCFlushRangeNoSync(var_r31->unk50, arg0 * 0x30); + DCFlushRangeNoSync(var_r31->unk54, arg0 * 0x10); + DCFlushRangeNoSync(var_r31->unk58, arg0 * 0xC); + DCFlushRangeNoSync(var_r31->unk4C, var_r31->unk48); + var_r30 = var_r31->unk3C; + var_r31->unk48 = 0; + + for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r30++) { + var_r30->unk3C = var_r31->unk4C + var_r31->unk48; + var_r31->unk48 += var_r30->unk38; + } + lbl_1_bss_36C.unk36 = var_r31->unk0; + lbl_1_bss_36C.unk38 = 0; + lbl_1_bss_36C.unk3A = 0; + return var_r31->unk0; +} + +void fn_1_A800(s16 arg0) +{ + s32 var_r30; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk8 != 0) { + if (temp_r31->unk50 != NULL) { + HuMemDirectFree(temp_r31->unk50); + } + if (temp_r31->unk54 != NULL) { + HuMemDirectFree(temp_r31->unk54); + } + if (temp_r31->unk58 != NULL) { + HuMemDirectFree(temp_r31->unk58); + } + if (temp_r31->unk4C != NULL) { + HuMemDirectFree(temp_r31->unk4C); + } + if (temp_r31->unk5C != NULL) { + HuMemDirectFree(temp_r31->unk5C); + } + + for (var_r30 = 0; var_r30 < temp_r31->unk4; var_r30++) { + fn_1_AF48(temp_r31->unk34[var_r30]); + } + HuMemDirectFree(temp_r31->unk3C); + HuMemDirectFree(temp_r31->unk34); + temp_r31->unk8 = 0; + } + } +} + +void fn_1_A920(s16 arg0, s16 arg1, u8 arg2) +{ + lbl_1_bss_36C.unk36 = arg0; + lbl_1_bss_36C.unk38 = arg1; + lbl_1_bss_36C.unk3A = arg2; +} + +s16 fn_1_A94C(u32 arg0, s16 arg1, s16 arg2) +{ + AnimData *var_r30; + f32 var_f31; + f32 var_f30; + s32 var_r29; + unkSubStruct3 *var_r31; + + var_r31 = lbl_1_bss_36C.unk3C + 1; + for (var_r29 = 1; var_r29 < lbl_1_bss_36C.unk32; var_r29++, var_r31++) { + if ((var_r31->unk6 != 0) && (var_r31->unk8 == arg0)) { + break; + } + } + if (var_r29 < lbl_1_bss_36C.unk32) { + var_r31->unk6++; + return var_r29; + } + var_r31 = lbl_1_bss_36C.unk3C + 1; + for (var_r29 = 1; var_r29 < lbl_1_bss_36C.unk32; var_r29++, var_r31++) { + if (var_r31->unk6 == 0) { + break; + } + } + var_r31->unk8 = arg0; + var_r31->unk6 = 1; + if (((arg0 & 0xFFFF0000) + 0x10000) == 0U) { + var_r30 = HuSprAnimMake(arg1, arg2, 2); + var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), MEMORY_DEFAULT_NUM); + arg1 = arg2 = 0; + } + 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 { + var_f31 = arg1 / (f32)var_r30->bmp->sizeX; + var_f30 = arg2 / (f32)var_r30->bmp->sizeY; + } + var_r31->unk0 = var_r30; + var_r31->unk4E = arg1; + var_r31->unk50 = arg2; + var_r31->unk54 = var_f31; + var_r31->unk58 = var_f30; + var_r31->unk5C = 1.0f / var_r30->bmp->sizeX; + var_r31->unk60 = 1.0f / var_r30->bmp->sizeY; + var_r31->unk4 = 0; + var_r31->unk4C = (var_r30->bmp->sizeY / arg2); + if (var_r31->unk4C < 1) { + var_r31->unk4C = 1; + } + var_r31->unk4D = 0; + if ((arg1 > var_r30->bmp->sizeX) || (arg2 > var_r30->bmp->sizeY)) { + var_r31->unk4D = 1; + } + var_r31->unk48.r = var_r31->unk48.g = var_r31->unk48.b = 0xFF; + var_r31->unk48.a = 0xFF; + MTXIdentity(var_r31->unk18); + var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f; + return var_r29; +} + +void fn_1_ACF4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) +{ + f32 var_f31; + f32 var_f30; + AnimData *var_r30; + unkSubStruct3 *var_r31; + + var_r31 = &lbl_1_bss_36C.unk3C[arg0]; + HuSprAnimKill(var_r31->unk0); + var_r31->unk8 |= 0xFFFF0000; + var_r30 = HuSprAnimMake(arg2, arg3, arg1); + var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (var_r30->bmp->pixSize * arg2), 0x10000000U); + var_f31 = arg4 / (f32)var_r30->bmp->sizeX; + var_f30 = arg5 / (f32)var_r30->bmp->sizeY; + var_r31->unk0 = var_r30; + var_r31->unk4E = arg2; + var_r31->unk50 = arg3; + var_r31->unk54 = var_f31; + var_r31->unk58 = var_f30; + var_r31->unk5C = 1.0f / var_r30->bmp->sizeX; + var_r31->unk60 = 1.0f / var_r30->bmp->sizeY; + var_r31->unk4 = 0; + var_r31->unk4C = var_r30->bmp->sizeY / arg5; + var_r31->unk4D = 0; + var_r31->unk48.r = var_r31->unk48.g = var_r31->unk48.b = 0xFF; + var_r31->unk48.a = 0xFF; +} + +void fn_1_AF48(s16 arg0) +{ + unkSubStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_36C.unk3C[arg0]; + if (temp_r31->unk8 != 0) { + if (temp_r31->unk6 != 0) { + temp_r31->unk6 -= 1; + } + if (temp_r31->unk6 == 0) { + HuSprAnimKill(temp_r31->unk0); + temp_r31->unk8 = 0; + } + } +} + +u8 fn_1_AFC8(s16 arg0, u8 arg1, s32 arg2, s16 arg3, s16 arg4) +{ + s32 temp_r3; + + temp_r3 = fn_1_A94C(arg2, arg3, arg4); + if (temp_r3 == 0) { + return 0; + } + fn_1_B0B8(arg0, arg1, temp_r3); + return temp_r3; +} + +u8 fn_1_B038(s16 arg0, u8 arg1, s32 arg2) +{ + u8 var_r31; + s32 var_r30; + u8 var_r29; + + if ((var_r30 = fn_1_A94C(arg2, 0, 0)) == 0) { + var_r31 = 0; + } + else { + fn_1_B0B8(arg0, arg1, var_r30); + var_r31 = var_r30; + } + var_r29 = var_r31; + return var_r29; +} + +s32 fn_1_B0B8(s16 arg0, u8 arg1, s16 arg2) +{ + s32 var_r27; + unkSubStruct *var_r29; + unkSubStruct2 *temp_r28; + unkSubStruct3 *temp_r30; + unkSubStruct4 *temp_r31; + + if (arg2 == 0) { + return 0; + } + if (arg0 == 0) { + return 0; + } + temp_r28 = &lbl_1_bss_36C.unk40[arg0]; + temp_r28->unk8 |= 2; + temp_r28->unk34[arg1] = arg2; + temp_r30 = &lbl_1_bss_36C.unk3C[arg2]; + var_r29 = temp_r28->unk3C; + + for (var_r27 = 0; var_r27 < temp_r28->unk2; var_r27++, var_r29++) { + if (arg1 == 0) { + var_r29->unk40[0].x = -0.5f * temp_r30->unk4E; + var_r29->unk40[0].y = 0.5f * temp_r30->unk50; + var_r29->unk40[1].x = (0.5f * temp_r30->unk4E); + var_r29->unk40[1].y = (0.5f * temp_r30->unk50); + var_r29->unk40[2].x = (0.5f * temp_r30->unk4E); + var_r29->unk40[2].y = (-0.5f * temp_r30->unk50); + var_r29->unk40[3].x = (-0.5f * temp_r30->unk4E); + var_r29->unk40[3].y = (-0.5f * temp_r30->unk50); + var_r29->unk40[0].z = var_r29->unk40[1].z = var_r29->unk40[2].z = var_r29->unk40[3].z = 0.0f; + } + temp_r31 = &var_r29->unk54[arg1]; + temp_r31->unk24 = 0; + temp_r31->unk0 = temp_r31->unk1 = 0; + temp_r31->unk28 = 1.0f; + temp_r31->unk2C = 0.0f; + temp_r31->unk4[0].x = temp_r31->unk0 * temp_r30->unk54; + temp_r31->unk4[0].y = temp_r31->unk0 * temp_r30->unk58; + temp_r31->unk4[1].x = (temp_r31->unk0 + 1) * temp_r30->unk54; + temp_r31->unk4[1].y = temp_r31->unk0 * temp_r30->unk58; + temp_r31->unk4[2].x = (temp_r31->unk0 + 1) * temp_r30->unk54; + temp_r31->unk4[2].y = (temp_r31->unk0 + 1) * temp_r30->unk58; + temp_r31->unk4[3].x = temp_r31->unk0 * temp_r30->unk54; + temp_r31->unk4[3].y = (temp_r31->unk0 + 1) * temp_r30->unk58; + if ((temp_r31->unk0 + 1) < temp_r30->unk4C) { + temp_r31->unk4[2].y -= temp_r30->unk60; + temp_r31->unk4[3].y -= temp_r30->unk60; + } + DCFlushRangeNoSync(temp_r31->unk4, 0x20); + } + lbl_1_bss_36C.unk36 = arg0; + lbl_1_bss_36C.unk3A = arg1; + return 1; +} + +void fn_1_B634(s32 arg0) +{ + s32 var_r28; + s32 var_r27; + s16 var_r26; + unkSubStruct2 *temp_r31; + unkSubStruct3 *temp_r30; + unkSubStruct3 *temp_r29; + + for (var_r28 = 1; var_r28 < lbl_1_bss_36C.unk30; var_r28++) { + if ((s16)var_r28 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[(s16)var_r28]; + if (temp_r31->unk8 != 0) { + if (temp_r31->unk50 != NULL) { + HuMemDirectFree(temp_r31->unk50); + } + if (temp_r31->unk54 != NULL) { + HuMemDirectFree(temp_r31->unk54); + } + if (temp_r31->unk58 != NULL) { + HuMemDirectFree(temp_r31->unk58); + } + if (temp_r31->unk4C != NULL) { + HuMemDirectFree(temp_r31->unk4C); + } + if (temp_r31->unk5C != NULL) { + HuMemDirectFree(temp_r31->unk5C); + } + + for (var_r27 = 0; var_r27 < temp_r31->unk4; var_r27++) { + var_r26 = temp_r31->unk34[var_r27]; + temp_r29 = &lbl_1_bss_36C.unk3C[var_r26]; + if (temp_r29->unk8 != 0) { + if (temp_r29->unk6 != 0) { + temp_r29->unk6--; + } + if (temp_r29->unk6 == 0) { + HuSprAnimKill(temp_r29->unk0); + temp_r29->unk8 = 0; + } + } + } + HuMemDirectFree(temp_r31->unk3C); + HuMemDirectFree(temp_r31->unk34); + temp_r31->unk8 = 0; + } + } + } + + for (var_r28 = 1; var_r28 < lbl_1_bss_36C.unk32; var_r28++) { + temp_r30 = &lbl_1_bss_36C.unk3C[(s16)var_r28]; + if (temp_r30->unk8 != 0) { + if (temp_r30->unk6 != 0) { + temp_r30->unk6 -= 1; + } + if (temp_r30->unk6 == 0) { + HuSprAnimKill(temp_r30->unk0); + temp_r30->unk8 = 0; + } + } + } + HuMemDirectFree(lbl_1_bss_36C.unk40); + HuMemDirectFree(lbl_1_bss_36C.unk3C); + Hu3DModelKill(lbl_1_bss_36C.unk34); +} + +void fn_1_B864(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r31->unkC.x = arg8; + temp_r31->unkC.y = arg9; + temp_r31->unkC.z = argA; + if (temp_r31->unk2 == 1) { + temp_r31->unk3C->unk0 = temp_r31->unkC; + } + } +} + +void fn_1_B8D0(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct *temp_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r30->unk2 > arg1) { + temp_r31 = &temp_r30->unk3C[arg1]; + temp_r31->unk0.x = arg8; + temp_r31->unk0.y = arg9; + temp_r31->unk0.z = argA; + } + } +} + +void fn_1_B940(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + s32 var_r29; + unkSubStruct *var_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + var_r31 = temp_r30->unk3C; + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { + var_r31->unk0.x = arg8; + var_r31->unk0.y = arg9; + var_r31->unk0.z = argA; + } + } +} + +void fn_1_B9B4(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r31->unkC.x += arg8; + temp_r31->unkC.y += arg9; + temp_r31->unkC.z += argA; + if (temp_r31->unk2 == 1) { + temp_r31->unk3C->unk0 = temp_r31->unkC; + } + } +} + +void fn_1_BA38(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct *temp_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r30->unk2 > arg1) { + temp_r31 = &temp_r30->unk3C[arg1]; + temp_r31->unk0.x += arg8; + temp_r31->unk0.y += arg9; + temp_r31->unk0.z += argA; + } + } +} + +void fn_1_BAC0(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + s32 var_r29; + unkSubStruct *var_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + var_r31 = temp_r30->unk3C; + + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { + var_r31->unk0.x += arg8; + var_r31->unk0.y += arg9; + var_r31->unk0.z += argA; + } + } +} + +void fn_1_BB4C(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r31->unk18.x = arg8; + temp_r31->unk18.y = arg9; + temp_r31->unk18.z = argA; + if (temp_r31->unk2 == 1) { + temp_r31->unk3C->unkC = temp_r31->unk18; + } + } +} + +void fn_1_BBB8(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct *temp_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r30->unk2 > arg1) { + temp_r31 = &temp_r30->unk3C[arg1]; + temp_r31->unkC.x = arg8; + temp_r31->unkC.y = arg9; + temp_r31->unkC.z = argA; + } + } +} + +void fn_1_BC28(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + s32 var_r29; + unkSubStruct *var_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + var_r31 = temp_r30->unk3C; + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { + var_r31->unkC.x = arg8; + var_r31->unkC.y = arg9; + var_r31->unkC.z = argA; + } + } +} + +void fn_1_BC9C(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r31->unk24.x = arg8; + temp_r31->unk24.y = arg9; + temp_r31->unk24.z = argA; + if (temp_r31->unk2 == 1) { + temp_r31->unk3C->unk18 = temp_r31->unk24; + } + } +} + +void fn_1_BD08(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA) +{ + unkSubStruct *temp_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r30->unk2 > arg1) { + temp_r31 = &temp_r30->unk3C[arg1]; + temp_r31->unk18.x = arg8; + temp_r31->unk18.y = arg9; + temp_r31->unk18.z = argA; + } + } +} + +void fn_1_BD78(s16 arg0, f32 arg8, f32 arg9, f32 argA) +{ + s32 var_r29; + unkSubStruct *var_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + var_r31 = temp_r30->unk3C; + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { + var_r31->unk18.x = arg8; + var_r31->unk18.y = arg9; + var_r31->unk18.z = argA; + } + } +} + +void fn_1_BDEC(s16 arg0, s32 arg1) +{ + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r31->unk8 |= arg1; + } +} + +void fn_1_BE30(s16 arg0, s16 arg1, s32 arg2) +{ + unkSubStruct *temp_r30; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + temp_r30 = &temp_r31->unk3C[arg1]; + temp_r30->unk34 |= arg2; + } + } +} + +void fn_1_BEA0(s16 arg0, s32 arg1) +{ + s32 var_r30; + unkSubStruct *temp_r29; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r29 = temp_r31->unk3C; + + for (var_r30 = 0; var_r30 < temp_r31->unk2; var_r30++) { + temp_r29->unk34 |= arg1; + } + } +} + +void fn_1_BF10(s16 arg0, u32 arg1) +{ + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r31->unk8 &= ~arg1; + } +} + +void fn_1_BF54(s16 arg0, s16 arg1, u32 arg2) +{ + unkSubStruct *temp_r30; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + temp_r30 = &temp_r31->unk3C[arg1]; + temp_r30->unk34 &= ~arg2; + } + } +} + +void fn_1_BFC4(s16 arg0, u32 arg1) +{ + s32 var_r30; + unkSubStruct *temp_r29; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + temp_r29 = temp_r31->unk3C; + + for (var_r30 = 0; var_r30 < temp_r31->unk2; var_r30++) { + temp_r29->unk34 &= ~arg1; + } + } +} + +s32 fn_1_C034(s16 arg0, s32 arg1) +{ + unkSubStruct2 *temp_r31; + + if (arg0 == 0) { + return 0; + } + + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if ((temp_r31->unk8 & arg1) != 0) { + return 1; + } + return 0; +} + +s16 fn_1_C090(s16 arg0, s16 arg1, s32 arg2) +{ + unkSubStruct *temp_r30; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + temp_r30 = &temp_r31->unk3C[arg1]; + if ((temp_r30->unk34 & arg2) != 0) { + arg0 = 1; + } + else { + arg0 = 0; + } + } + } + return arg0; +} + +void fn_1_C110(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) +{ + unkSubStruct *temp_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r30->unk2 > arg1) { + temp_r31 = &temp_r30->unk3C[arg1]; + temp_r31->unk50.r = arg2; + temp_r31->unk50.g = arg3; + temp_r31->unk50.b = arg4; + temp_r31->unk50.a = arg5; + } + } +} + +void fn_1_C184(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) +{ + s32 var_r29; + unkSubStruct *var_r31; + unkSubStruct2 *temp_r30; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_36C.unk40[arg0]; + var_r31 = temp_r30->unk3C; + + for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) { + var_r31->unk50.r = arg1; + var_r31->unk50.g = arg2; + var_r31->unk50.b = arg3; + var_r31->unk50.a = arg4; + } + } +} + +void fn_1_C1FC(s16 arg0, s16 arg1, u8 arg2) +{ + unkSubStruct *temp_r30; + unkSubStruct2 *temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + temp_r30 = &temp_r31->unk3C[arg1]; + temp_r30->unk30 = arg2; + } + } +} + +void fn_1_C264(s16 arg0, u8 arg1) +{ + s32 var_r29; + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + var_r30 = temp_r31->unk3C; + + for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++, var_r30++) { + var_r30->unk30 = arg1; + } + } +} + +void fn_1_C2D0(s16 arg0, s16 arg1, u8 arg2) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk31 = arg2; + } + } +} + +void fn_1_C338(s16 arg0, u8 arg1) +{ + s32 var_r29; + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + var_r30 = temp_r31->unk3C; + + for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++, var_r30++) { + var_r30->unk31 = arg1; + } + } +} + +void fn_1_C3A4(s16 arg0, s16 arg1, u8 arg2) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk54->unk24 = arg2; + } + } +} + +void fn_1_C410(s16 arg0, s16 arg1, u8 arg2, u8 arg3) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk54[arg2].unk24 = arg3; + } + } +} + +void fn_1_C488(s16 arg0, u8 arg1) +{ + s32 var_r28; + s32 var_r30; + unkSubStruct *var_r31; + unkSubStruct2 *temp_r29; + + if (arg0 != 0) { + temp_r29 = &lbl_1_bss_36C.unk40[arg0]; + var_r31 = (unkSubStruct *)&temp_r29->unk3C; //! BAD WHY + (void)temp_r29; + + for (var_r28 = 0; var_r28 < temp_r29->unk2; var_r28++, var_r31++) { + for (var_r30 = 0; var_r30 < var_r31->unk33; var_r30++) { + var_r31->unk54[var_r30].unk24 = arg1; + } + } + } +} + +void fn_1_C520(s16 arg0, s16 arg1, f32 arg8) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk54->unk28 = arg8; + } + } +} + +void fn_1_C58C(s16 arg0, s16 arg1, u8 arg2, f32 arg8) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk54[arg2].unk28 = arg8; + } + } +} + +void fn_1_C604(s16 arg0, f32 arg8) +{ + unkSubStruct *volatile sp8; + s32 var_r29; + unkSubStruct2 *temp_r31; + s32 var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + sp8 = temp_r31->unk3C; + + for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++) { + for (var_r30 = 0; var_r30 < sp8->unk33; var_r30++) { + sp8->unk54[var_r30].unk28 = arg8; + } + } + } +} + +void fn_1_C69C(s16 arg0, s16 arg1, u8 arg2) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk54->unk0 = arg2; + } + } +} + +void fn_1_C70C(s16 arg0, s16 arg1, u8 arg2, u8 arg3) +{ + unkSubStruct2 *temp_r31; + unkSubStruct *var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + if (temp_r31->unk2 > arg1) { + var_r30 = &temp_r31->unk3C[arg1]; + var_r30->unk54[arg2].unk0 = arg3; + } + } +} + +// ... + +void fn_1_C784(s16 arg0, u8 arg1) +{ + unkSubStruct *volatile sp8; + s32 var_r29; + unkSubStruct2 *temp_r31; + s32 var_r30; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_36C.unk40[arg0]; + sp8 = temp_r31->unk3C; + for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++) { + for (var_r30 = 0; var_r30 < sp8->unk33; var_r30++) { + sp8->unk54[var_r30].unk0 = arg1; + } + } + } +} + +void fn_1_C81C(s16 arg0, u8 arg1) +{ + unkSubStruct3 *var_r31; + if (arg0 != 0) { + var_r31 = &lbl_1_bss_36C.unk3C[arg0]; + var_r31->unk4 = arg1; + } +} diff --git a/src/REL/m416Dll/main.c b/src/REL/m416Dll/main.c index 0020aa4f..0364445e 100644 --- a/src/REL/m416Dll/main.c +++ b/src/REL/m416Dll/main.c @@ -1,44 +1,38 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfanim.h" -#include "game/hsfmotion.h" -#include "game/audio.h" -#include "game/wipe.h" -#include "game/sprite.h" -#include "game/chrman.h" #include "game/pad.h" -#include "game/gamework_data.h" -#include "game/minigame_seq.h" -#include "game/frand.h" +#include "game/sprite.h" +#include "game/wipe.h" -#include "math.h" #include "ext_math.h" - +#include "math.h" #include "REL/m416Dll.h" -#include "rel_sqrt_consts.h" - typedef struct camera_view_params { - float zoom; - Vec pos; - Vec rot; + float zoom; + Vec pos; + Vec rot; } CameraViewParams; -CameraViewParams lbl_1_data_0[2] = { - { 1676.6, { 0, 172, 123 }, { -18, 0, 0 } }, - { 1200, { 0, 0, -600 }, { -24, 0, 0 } } -}; +CameraViewParams lbl_1_data_0[2] = { { 1676.6, { 0, 172, 123 }, { -18, 0, 0 } }, { 1200, { 0, 0, -600 }, { -24, 0, 0 } } }; GXColor lbl_1_data_38 = { 255, 255, 255, 255 }; GXColor lbl_1_data_3C = { 255, 160, 96, 255 }; typedef struct struct_bss_14 { - float unk0; - float unk4; - u8 unk8; - float unkC; + float unk0; + float unk4; + u8 unk8; + float unkC; } StructBss14; s32 lbl_1_bss_960; @@ -70,104 +64,104 @@ void fn_1_6E5C(omObjData *object); void ObjectSetup(void) { - Process *objman; - Vec pos; - Vec up; - Vec target; - OSReport("******* M416ObjectSetup *********\n"); - objman = omInitObjMan(50, 8192); - omGameSysInit(objman); - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 30, 20, 25000, 1.2); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - lbl_1_bss_950 = omAddObjEx(objman, 32730, 0, 0, -1, omOutView); - lbl_1_bss_958 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_458); - fn_1_1260(objman); - lbl_1_bss_954 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_6E5C); - pos.x = 0; - pos.y = 3000; - pos.z = 1; - up.x = 0; - up.y = 1; - up.z = 0; - target.x = 0; - target.y = 0; - target.z = 0; - Hu3DShadowCreate(30, 20, 25000); - Hu3DShadowTPLvlSet(0.9f); - Hu3DShadowPosSet(&pos, &up, &target); - Hu3DLightAllKill(); - lbl_1_bss_91A[0] = Hu3DGLightCreate(-700, 1200, 700, 0, -0.5, -1, lbl_1_data_38.r, lbl_1_data_38.g, lbl_1_data_38.b); - Hu3DGLightStaticSet(lbl_1_bss_91A[0], 1); - Hu3DGLightInfinitytSet(lbl_1_bss_91A[0]); - lbl_1_bss_91A[1] = Hu3DGLightCreate(0, 0, 0, 0, 0, 0, 0, 0, 0); - Hu3DGLightStaticSet(lbl_1_bss_91A[1], 1); - Hu3DGLightPointSet(lbl_1_bss_91A[1], 0, 0, 3); - lbl_1_bss_918 = 0; - HuAudSndGrpSet(41); - Hu3DBGColorSet(0, 0, 0); - fn_1_79D0(objman); + Process *objman; + Vec pos; + Vec up; + Vec target; + OSReport("******* M416ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30, 20, 25000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_1_bss_950 = omAddObjEx(objman, 32730, 0, 0, -1, omOutView); + lbl_1_bss_958 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_458); + fn_1_1260(objman); + lbl_1_bss_954 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_6E5C); + pos.x = 0; + pos.y = 3000; + pos.z = 1; + up.x = 0; + up.y = 1; + up.z = 0; + target.x = 0; + target.y = 0; + target.z = 0; + Hu3DShadowCreate(30, 20, 25000); + Hu3DShadowTPLvlSet(0.9f); + Hu3DShadowPosSet(&pos, &up, &target); + Hu3DLightAllKill(); + lbl_1_bss_91A[0] = Hu3DGLightCreate(-700, 1200, 700, 0, -0.5, -1, lbl_1_data_38.r, lbl_1_data_38.g, lbl_1_data_38.b); + Hu3DGLightStaticSet(lbl_1_bss_91A[0], 1); + Hu3DGLightInfinitytSet(lbl_1_bss_91A[0]); + lbl_1_bss_91A[1] = Hu3DGLightCreate(0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DGLightStaticSet(lbl_1_bss_91A[1], 1); + Hu3DGLightPointSet(lbl_1_bss_91A[1], 0, 0, 3); + lbl_1_bss_918 = 0; + HuAudSndGrpSet(41); + Hu3DBGColorSet(0, 0, 0); + fn_1_79D0(objman); } void fn_1_458(omObjData *object) { - lbl_1_bss_928 = 30; - lbl_1_bss_926 = 60; - fn_1_1250(0); - lbl_1_bss_924 = -1; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - lbl_1_bss_920 = 1; - fn_1_8FF4(1); - object->func = fn_1_4FC; + lbl_1_bss_928 = 30; + lbl_1_bss_926 = 60; + fn_1_1250(0); + lbl_1_bss_924 = -1; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_920 = 1; + fn_1_8FF4(1); + object->func = fn_1_4FC; } typedef struct bss_930_work_4c { - u8 field_0_bit0 : 1; - float unk4; - float unk8; - float unkC; - s16 unk10; + u8 field_0_bit0 : 1; + float unk4; + float unk8; + float unkC; + s16 unk10; } Bss930Work4C; typedef struct bss_930_work { - u8 field_0_bit0 : 1; - u8 field_0_bit1 : 1; - u8 field_0_bit2 : 1; - u8 field_0_bit3 : 1; - u8 field_0_bit4 : 1; - s16 unk02; - s16 unk04; - s8 unk06; - s8 unk07; - u16 unk08; - u16 unk0A; - s16 unk0C; - s16 unk0E; - s16 unk10; - s16 unk12; - s16 unk14; - float unk18; - Vec unk1C; - s32 unk28; - s32 unk2C; - u32 unk30; - u32 unk34; - float unk38; - u32 unk3C; - s16 unk40; - s16 unk42; - s16 unk44; - s16 unk46; - omObjFunc unk48; - Bss930Work4C *unk4C; - s16 unk50; - Vec unk54; - s16 unk60; - Vec unk64; - s16 unk70; - Vec unk74; - float unk80; - float unk84; + u8 field_0_bit0 : 1; + u8 field_0_bit1 : 1; + u8 field_0_bit2 : 1; + u8 field_0_bit3 : 1; + u8 field_0_bit4 : 1; + s16 unk02; + s16 unk04; + s8 unk06; + s8 unk07; + u16 unk08; + u16 unk0A; + s16 unk0C; + s16 unk0E; + s16 unk10; + s16 unk12; + s16 unk14; + float unk18; + Vec unk1C; + s32 unk28; + s32 unk2C; + u32 unk30; + u32 unk34; + float unk38; + u32 unk3C; + s16 unk40; + s16 unk42; + s16 unk44; + s16 unk46; + omObjFunc unk48; + Bss930Work4C *unk4C; + s16 unk50; + Vec unk54; + s16 unk60; + Vec unk64; + s16 unk70; + Vec unk74; + float unk80; + float unk84; } Bss930Work; s32 lbl_1_data_64 = -1; @@ -178,200 +172,206 @@ void fn_1_52BC(void); void fn_1_4FC(omObjData *object) { - Bss930Work *temp_r31; - s32 temp_r30; - s16 temp_r29; - Vec sp1C; - Vec sp10; - s16 sp8[4]; - - switch(fn_1_1240()) { - case 0: - if(!WipeStatGet()) { - HuAudFXPlay(1471); - fn_1_1250(1); - lbl_1_bss_95C = 30; - } - break; - - case 1: - if(--lbl_1_bss_95C == 0) { - fn_1_1250(2); - lbl_1_bss_95C = 84; - } - break; - - case 2: - if(lbl_1_bss_95C) { - if(--lbl_1_bss_95C == 0) { - HuAudFXPlay(1470); - } - } else { - if(lbl_1_bss_920 > 0) { - lbl_1_bss_920 -= 0.020000001f; - if(lbl_1_bss_920 < 0) { - lbl_1_bss_920 = 0; - } - Hu3DGLightColorSet(lbl_1_bss_91A[0], lbl_1_data_38.r*lbl_1_bss_920, lbl_1_data_38.g*lbl_1_bss_920, lbl_1_data_38.b*lbl_1_bss_920, 255); - } - if(lbl_1_bss_920 < 0.1f) { - if(lbl_1_bss_0 == 0) { - temp_r31 = lbl_1_bss_930[0][0]->data; - HuAudCharVoicePlay(temp_r31->unk0C, 296); - lbl_1_bss_0 = 1; - } - } - if(lbl_1_bss_920 <= 0.0f) { - fn_1_1250(3); - lbl_1_bss_95C = 60; - } - } - break; - - case 3: - if(--lbl_1_bss_95C == 0) { - fn_1_1250(4); - lbl_1_bss_95C = 60; - Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r, lbl_1_data_3C.g, lbl_1_data_3C.b, lbl_1_data_3C.a); - fn_1_8FF4(0.0625f); - Hu3DShadowData.unk_08.x = 135; - MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - lbl_1_bss_918 = 1; - HuAudFXEmiterPlay(1464, &lbl_1_bss_930[0][0]->trans); - } - break; - - case 4: - if(--lbl_1_bss_95C == 0) { - fn_1_1250(5); - lbl_1_bss_12 = MGSeqStartCreate(); - } - break; - - case 5: - if(MGSeqStatGet(lbl_1_bss_12) == 0) { - lbl_1_bss_10 = MGSeqTimerCreate(30); - fn_1_1250(6); - } - if(lbl_1_data_64 < 0 && (MGSeqStatGet(lbl_1_bss_12) & 0x10)) { - lbl_1_data_64 = HuAudSeqPlay(73); - } - break; - - case 6: - if(--lbl_1_bss_926 == 0) { - lbl_1_bss_928--; - MGSeqParamSet(lbl_1_bss_10, 1, lbl_1_bss_928); - lbl_1_bss_926 = 60; - } - if(lbl_1_bss_928 == 0 || lbl_1_bss_924 >= 0) { - lbl_1_bss_12 = MGSeqFinishCreate(); - fn_1_1250(7); - HuAudSeqAllFadeOut(100); - } - break; - - case 7: - if(lbl_1_bss_10 >= 0) { - MGSeqParamSet(lbl_1_bss_10, 2, -1); - lbl_1_bss_10 = -1; - } - if(MGSeqStatGet(lbl_1_bss_12) == 0) { - lbl_1_bss_95C = 60; - fn_1_1250(8); - } - break; - - case 8: - if(lbl_1_bss_95C) { - if(--lbl_1_bss_95C == 0) { - Hu3DShadowData.unk_08.x = 30; - MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - lbl_1_bss_918 = 0; - sp1C.x = 0; - sp1C.y = 3000; - sp1C.z = 1; - sp10.x = 0; - sp10.y = 0; - sp10.z = 0; - Hu3DShadowPosSet(&sp1C, &Hu3DShadowData.unk_2C, &sp10); - HuAudFXPlay(1470); - } - } else { - lbl_1_bss_920 += 0.020000001f; - if(lbl_1_bss_920 >= 1.0f) { - lbl_1_bss_920 = 1.0f; - fn_1_1250(9); - lbl_1_bss_95C = 60; - fn_1_52BC(); - } - fn_1_8FF4(lbl_1_bss_920); - Hu3DGLightColorSet(lbl_1_bss_91A[0], lbl_1_data_38.r*lbl_1_bss_920, lbl_1_data_38.g*lbl_1_bss_920, lbl_1_data_38.b*lbl_1_bss_920, 255); - if(lbl_1_bss_91A[1] >= 0) { - Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r*(1.0f-lbl_1_bss_920), lbl_1_data_3C.g*(1.0f-lbl_1_bss_920), lbl_1_data_3C.b*(1.0f-lbl_1_bss_920), lbl_1_data_3C.a*(1.0f-lbl_1_bss_920)); - } - } - break; - - case 9: - if(fn_1_14E8()) { - if(--lbl_1_bss_95C == 0) { - fn_1_1250(10); - lbl_1_bss_95C = 210; - for(temp_r30=0; temp_r30<4; temp_r30++) { - sp8[temp_r30] = -1; - } - temp_r29 = 0; - if(lbl_1_bss_924 < 0) { - temp_r31 = lbl_1_bss_930[0][0]->data; - sp8[temp_r29++] = temp_r31->unk0C; - GWPlayerCoinWinSet(temp_r31->unk02, 10); - } else { - for(temp_r30=0; temp_r30<3; temp_r30++) { - temp_r31 = lbl_1_bss_930[1][temp_r30]->data; - sp8[temp_r29++] = temp_r31->unk0C; - GWPlayerCoinWinSet(temp_r31->unk02, 10); - } - } - lbl_1_bss_12 = MGSeqWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]); - HuAudSStreamPlay(1); - } - } - break; - - case 10: - if(--lbl_1_bss_95C == 0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_11E8; - } - break; - } - if(omSysExitReq && !WipeStatGet()) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_11E8; - } - fn_1_8F60(lbl_1_bss_920); + Bss930Work *temp_r31; + s32 temp_r30; + s16 temp_r29; + Vec sp1C; + Vec sp10; + s16 sp8[4]; + + switch (fn_1_1240()) { + case 0: + if (!WipeStatGet()) { + HuAudFXPlay(1471); + fn_1_1250(1); + lbl_1_bss_95C = 30; + } + break; + + case 1: + if (--lbl_1_bss_95C == 0) { + fn_1_1250(2); + lbl_1_bss_95C = 84; + } + break; + + case 2: + if (lbl_1_bss_95C) { + if (--lbl_1_bss_95C == 0) { + HuAudFXPlay(1470); + } + } + else { + if (lbl_1_bss_920 > 0) { + lbl_1_bss_920 -= 0.020000001f; + if (lbl_1_bss_920 < 0) { + lbl_1_bss_920 = 0; + } + Hu3DGLightColorSet( + lbl_1_bss_91A[0], lbl_1_data_38.r * lbl_1_bss_920, lbl_1_data_38.g * lbl_1_bss_920, lbl_1_data_38.b * lbl_1_bss_920, 255); + } + if (lbl_1_bss_920 < 0.1f) { + if (lbl_1_bss_0 == 0) { + temp_r31 = lbl_1_bss_930[0][0]->data; + HuAudCharVoicePlay(temp_r31->unk0C, 296); + lbl_1_bss_0 = 1; + } + } + if (lbl_1_bss_920 <= 0.0f) { + fn_1_1250(3); + lbl_1_bss_95C = 60; + } + } + break; + + case 3: + if (--lbl_1_bss_95C == 0) { + fn_1_1250(4); + lbl_1_bss_95C = 60; + Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r, lbl_1_data_3C.g, lbl_1_data_3C.b, lbl_1_data_3C.a); + fn_1_8FF4(0.0625f); + Hu3DShadowData.unk_08.x = 135; + MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + lbl_1_bss_918 = 1; + HuAudFXEmiterPlay(1464, &lbl_1_bss_930[0][0]->trans); + } + break; + + case 4: + if (--lbl_1_bss_95C == 0) { + fn_1_1250(5); + lbl_1_bss_12 = MGSeqStartCreate(); + } + break; + + case 5: + if (MGSeqStatGet(lbl_1_bss_12) == 0) { + lbl_1_bss_10 = MGSeqTimerCreate(30); + fn_1_1250(6); + } + if (lbl_1_data_64 < 0 && (MGSeqStatGet(lbl_1_bss_12) & 0x10)) { + lbl_1_data_64 = HuAudSeqPlay(73); + } + break; + + case 6: + if (--lbl_1_bss_926 == 0) { + lbl_1_bss_928--; + MGSeqParamSet(lbl_1_bss_10, 1, lbl_1_bss_928); + lbl_1_bss_926 = 60; + } + if (lbl_1_bss_928 == 0 || lbl_1_bss_924 >= 0) { + lbl_1_bss_12 = MGSeqFinishCreate(); + fn_1_1250(7); + HuAudSeqAllFadeOut(100); + } + break; + + case 7: + if (lbl_1_bss_10 >= 0) { + MGSeqParamSet(lbl_1_bss_10, 2, -1); + lbl_1_bss_10 = -1; + } + if (MGSeqStatGet(lbl_1_bss_12) == 0) { + lbl_1_bss_95C = 60; + fn_1_1250(8); + } + break; + + case 8: + if (lbl_1_bss_95C) { + if (--lbl_1_bss_95C == 0) { + Hu3DShadowData.unk_08.x = 30; + MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + lbl_1_bss_918 = 0; + sp1C.x = 0; + sp1C.y = 3000; + sp1C.z = 1; + sp10.x = 0; + sp10.y = 0; + sp10.z = 0; + Hu3DShadowPosSet(&sp1C, &Hu3DShadowData.unk_2C, &sp10); + HuAudFXPlay(1470); + } + } + else { + lbl_1_bss_920 += 0.020000001f; + if (lbl_1_bss_920 >= 1.0f) { + lbl_1_bss_920 = 1.0f; + fn_1_1250(9); + lbl_1_bss_95C = 60; + fn_1_52BC(); + } + fn_1_8FF4(lbl_1_bss_920); + Hu3DGLightColorSet( + lbl_1_bss_91A[0], lbl_1_data_38.r * lbl_1_bss_920, lbl_1_data_38.g * lbl_1_bss_920, lbl_1_data_38.b * lbl_1_bss_920, 255); + if (lbl_1_bss_91A[1] >= 0) { + Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r * (1.0f - lbl_1_bss_920), lbl_1_data_3C.g * (1.0f - lbl_1_bss_920), + lbl_1_data_3C.b * (1.0f - lbl_1_bss_920), lbl_1_data_3C.a * (1.0f - lbl_1_bss_920)); + } + } + break; + + case 9: + if (fn_1_14E8()) { + if (--lbl_1_bss_95C == 0) { + fn_1_1250(10); + lbl_1_bss_95C = 210; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + sp8[temp_r30] = -1; + } + temp_r29 = 0; + if (lbl_1_bss_924 < 0) { + temp_r31 = lbl_1_bss_930[0][0]->data; + sp8[temp_r29++] = temp_r31->unk0C; + GWPlayerCoinWinSet(temp_r31->unk02, 10); + } + else { + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + temp_r31 = lbl_1_bss_930[1][temp_r30]->data; + sp8[temp_r29++] = temp_r31->unk0C; + GWPlayerCoinWinSet(temp_r31->unk02, 10); + } + } + lbl_1_bss_12 = MGSeqWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + } + break; + + case 10: + if (--lbl_1_bss_95C == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_11E8; + } + break; + } + if (omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_11E8; + } + fn_1_8F60(lbl_1_bss_920); } void fn_1_11E8(omObjData *object) { - if(!WipeStatGet()) { - MGSeqKillAll(); - HuAudFadeOut(1); - fn_1_7A54(); - omOvlReturnEx(1, 1); - OSReport("******* M416Exit *********\n"); - } + if (!WipeStatGet()) { + MGSeqKillAll(); + HuAudFadeOut(1); + fn_1_7A54(); + omOvlReturnEx(1, 1); + OSReport("******* M416Exit *********\n"); + } } s32 fn_1_1240(void) { - return lbl_1_bss_960; + return lbl_1_bss_960; } void fn_1_1250(s32 arg0) { - lbl_1_bss_960 = arg0; + lbl_1_bss_960 = arg0; } void fn_1_156C(omObjData *object); @@ -379,53 +379,53 @@ void fn_1_2930(omObjData *object); void fn_1_1260(Process *objman) { - s32 i; - s32 j; - - lbl_1_bss_92E = 0; - lbl_1_bss_92A[0] = lbl_1_bss_92A[1] = 0; - omMakeGroupEx(objman, 0, 4); - for(i=0; i<4; i++) { - omAddObjEx(objman, 5, 5, 50, 0, fn_1_156C); - } - lbl_1_bss_914 = HuSprAnimReadFile(0x2F0005); - memset(lbl_1_bss_14, 0, sizeof(lbl_1_bss_14)); - for(i=0; i<10; i++) { - for(j=0; j<10; j++) { - lbl_1_bss_14[i+1][j+1].unk0 = ((0.5f+(j-5))*1100)/9; - lbl_1_bss_14[i+1][j+1].unk4 = ((0.5f+(i-5))*1100)/9; - } - } - omAddObjEx(objman, 6, 0, 0, -1, fn_1_2930); + s32 i; + s32 j; + + lbl_1_bss_92E = 0; + lbl_1_bss_92A[0] = lbl_1_bss_92A[1] = 0; + omMakeGroupEx(objman, 0, 4); + for (i = 0; i < 4; i++) { + omAddObjEx(objman, 5, 5, 50, 0, fn_1_156C); + } + lbl_1_bss_914 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M416, 0x05)); + memset(lbl_1_bss_14, 0, sizeof(lbl_1_bss_14)); + for (i = 0; i < 10; i++) { + for (j = 0; j < 10; j++) { + lbl_1_bss_14[i + 1][j + 1].unk0 = ((0.5f + (j - 5)) * 1100) / 9; + lbl_1_bss_14[i + 1][j + 1].unk4 = ((0.5f + (i - 5)) * 1100) / 9; + } + } + omAddObjEx(objman, 6, 0, 0, -1, fn_1_2930); } void fn_1_5D18(omObjData *object); void fn_1_1480(void) { - s32 i; - omObjData **group; - group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - if(group == NULL) { - return; - } - for(i=0; i<4; i++) { - fn_1_5D18(group[i]); - } + s32 i; + omObjData **group; + group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + if (group == NULL) { + return; + } + for (i = 0; i < 4; i++) { + fn_1_5D18(group[i]); + } } s32 fn_1_14E8(void) { - s32 i; - omObjData **group; - group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - for(i=0; i<4; i++) { - Bss930Work *work = group[i]->data; - if(!work->field_0_bit3) { - return 0; - } - } - return 1; + s32 i; + omObjData **group; + group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (i = 0; i < 4; i++) { + Bss930Work *work = group[i]->data; + if (!work->field_0_bit3) { + return 0; + } + } + return 1; } void fn_1_1964(omObjData *object); @@ -434,171 +434,165 @@ void fn_1_1D84(omObjData *object); void fn_1_6AE8(ModelData *model, ParticleData *particle, Mtx matrix); -float lbl_1_data_B0[4][4] = { - 0, 0, -400, 0, - -340, 0, 200, 155, - 0, 0, 400, 180, - 340, 0, 200, 205 -}; +float lbl_1_data_B0[4][4] = { 0, 0, -400, 0, -340, 0, 200, 155, 0, 0, 400, 180, 340, 0, 200, 205 }; void fn_1_156C(omObjData *object) { - Bss930Work *work; - s32 player; - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work), MEMORY_DEFAULT_NUM); - object->data = work; - memset(work, 0, sizeof(Bss930Work)); - work->unk02 = lbl_1_bss_92E++; - work->unk04 = GWPlayerCfg[work->unk02].pad_idx; - work->unk0C = GWPlayerCfg[work->unk02].character; - work->unk0E = GWPlayerCfg[work->unk02].diff; - work->unk10 = GWPlayerCfg[work->unk02].group; - object->model[0] = CharModelCreate(work->unk0C, 4); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelShadowSet(object->model[0]); - work->field_0_bit2 = 1; - work->field_0_bit4 = 1; - work->unk28 = 0; - work->unk2C = -1; - work->unk34 = 0; - work->unk38 = 50; - if(!work->unk10) { - fn_1_1964(object); - lbl_1_bss_930[0][lbl_1_bss_92A[0]] = object; - player = lbl_1_bss_92A[0]; - work->unk12 = lbl_1_bss_92A[0]; - lbl_1_bss_92A[0]++; - } else { - fn_1_1ADC(object); - lbl_1_bss_930[1][lbl_1_bss_92A[1]] = object; - player = lbl_1_bss_92A[1]+1; - work->unk12 = lbl_1_bss_92A[1]; - lbl_1_bss_92A[1]++; - } - Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); - Hu3DModelShadowSet(object->model[1]); - Hu3DModelLayerSet(object->model[0], 3); - Hu3DModelLayerSet(object->model[1], 3); - fn_1_8EB4(object->model[0]); - fn_1_8EB4(object->model[1]); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - CharModelMotionIndexSet(work->unk0C, object->motion[1], 0x5F0002); - CharModelMotionIndexSet(work->unk0C, object->motion[2], 0x5F0002); - CharModelMotionDataClose(work->unk0C); - object->model[4] = Hu3DParticleCreate(lbl_1_bss_914, 2); - Hu3DParticleHookSet(object->model[4], fn_1_6AE8); - Hu3DParticleBlendModeSet(object->model[4], 1); - Hu3DModelLayerSet(object->model[4], 6); - Hu3DModelAttrSet(object->model[4], 1); - object->trans.x = lbl_1_data_B0[player][0]; - object->trans.y = lbl_1_data_B0[player][1]; - object->trans.z = lbl_1_data_B0[player][2]; - object->rot.y = lbl_1_data_B0[player][3]; - object->rot.x = object->rot.z = 0; - object->scale.x = object->scale.y = object->scale.z = 1; - work->unk84 = object->rot.y; - object->func = fn_1_1D84; + Bss930Work *work; + s32 player; + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work), MEMORY_DEFAULT_NUM); + object->data = work; + memset(work, 0, sizeof(Bss930Work)); + work->unk02 = lbl_1_bss_92E++; + work->unk04 = GWPlayerCfg[work->unk02].pad_idx; + work->unk0C = GWPlayerCfg[work->unk02].character; + work->unk0E = GWPlayerCfg[work->unk02].diff; + work->unk10 = GWPlayerCfg[work->unk02].group; + object->model[0] = CharModelCreate(work->unk0C, 4); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(object->model[0]); + work->field_0_bit2 = 1; + work->field_0_bit4 = 1; + work->unk28 = 0; + work->unk2C = -1; + work->unk34 = HU3D_MOTATTR_NONE; + work->unk38 = 50; + if (!work->unk10) { + fn_1_1964(object); + lbl_1_bss_930[0][lbl_1_bss_92A[0]] = object; + player = lbl_1_bss_92A[0]; + work->unk12 = lbl_1_bss_92A[0]; + lbl_1_bss_92A[0]++; + } + else { + fn_1_1ADC(object); + lbl_1_bss_930[1][lbl_1_bss_92A[1]] = object; + player = lbl_1_bss_92A[1] + 1; + work->unk12 = lbl_1_bss_92A[1]; + lbl_1_bss_92A[1]++; + } + Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); + Hu3DModelShadowSet(object->model[1]); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelLayerSet(object->model[1], 3); + fn_1_8EB4(object->model[0]); + fn_1_8EB4(object->model[1]); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + CharModelMotionIndexSet(work->unk0C, object->motion[1], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + CharModelMotionIndexSet(work->unk0C, object->motion[2], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + CharModelMotionDataClose(work->unk0C); + object->model[4] = Hu3DParticleCreate(lbl_1_bss_914, 2); + Hu3DParticleHookSet(object->model[4], fn_1_6AE8); + Hu3DParticleBlendModeSet(object->model[4], 1); + Hu3DModelLayerSet(object->model[4], 6); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + object->trans.x = lbl_1_data_B0[player][0]; + object->trans.y = lbl_1_data_B0[player][1]; + object->trans.z = lbl_1_data_B0[player][2]; + object->rot.y = lbl_1_data_B0[player][3]; + object->rot.x = object->rot.z = 0; + object->scale.x = object->scale.y = object->scale.z = 1; + work->unk84 = object->rot.y; + object->func = fn_1_1D84; } u32 lbl_1_data_10C[9][2] = { - 0x002F0008, 1, - 0x002F0010, 1, - 0x002F0018, 1, - 0x002F0020, 1, - 0, 0, - 0x005F0000, 0, - 0x005F0017, 0, - 0x005F0018, 0, - 0x005F0002, 0 + DATA_MAKE_NUM(DATADIR_M416, 0x08), + 1, + DATA_MAKE_NUM(DATADIR_M416, 0x10), + 1, + DATA_MAKE_NUM(DATADIR_M416, 0x18), + 1, + DATA_MAKE_NUM(DATADIR_M416, 0x20), + 1, + 0, + 0, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + 0, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + 0, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + 0, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + 0, }; void fn_1_29DC(omObjData *object); - - - void fn_1_1964(omObjData *object) { - Bss930Work *work; - s32 i; - work = object->data; - for(i=0; i<9; i++) { - if(!lbl_1_data_10C[i][1]) { - object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_10C[i][0]); - } else { - object->motion[i] = CharModelMotionCreate(work->unk0C, work->unk0C+lbl_1_data_10C[i][0]); - } - } - object->model[1] = Hu3DModelCreateFile(0x2F0003); - object->model[2] = Hu3DParticleCreate(HuSprAnimReadFile(0x2F0006), 100); - Hu3DParticleHookSet(object->model[2], fn_1_613C); - Hu3DParticleBlendModeSet(object->model[2], 1); - Hu3DModelLayerSet(object->model[2], 6); - Hu3DModelAttrSet(object->model[2], 2); - Hu3DModelAttrSet(object->model[2], 1); - work->unk44 = 5; - work->unk48 = fn_1_29DC; + Bss930Work *work; + s32 i; + work = object->data; + for (i = 0; i < 9; i++) { + if (!lbl_1_data_10C[i][1]) { + object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_10C[i][0]); + } + else { + object->motion[i] = CharModelMotionCreate(work->unk0C, work->unk0C + lbl_1_data_10C[i][0]); + } + } + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x03)); + object->model[2] = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M416, 0x06)), 100); + Hu3DParticleHookSet(object->model[2], fn_1_613C); + Hu3DParticleBlendModeSet(object->model[2], 1); + Hu3DModelLayerSet(object->model[2], 6); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_ZWRITE_OFF); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + work->unk44 = 5; + work->unk48 = fn_1_29DC; } void fn_1_2EA4(omObjData *object); void fn_1_6640(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_6DEC(s16 arg0, u32 arg1); -s32 lbl_1_data_154[9] = { - 0x005F0030, - 0x005F0031, - 0x005F0032, - 0x005F002D, - 0x005F002E, - 0x005F0000, - 0x005F0017, - 0x005F0018, - 0x005F0002 -}; - +s32 lbl_1_data_154[9] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x30), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x31), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x32), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2D), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2E), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02) }; void fn_1_1ADC(omObjData *object) { - Bss930Work *work; - s32 i; - work = object->data; - for(i=0; i<9; i++) { - object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_154[i]); - } - object->model[1] = Hu3DModelCreateFile(0x2F0004); - object->model[2] = Hu3DModelCreateFile(0x2F0002); - Hu3DModelLayerSet(object->model[2], 3); - fn_1_6DEC(object->model[2], 16); - Hu3DModelAttrSet(object->model[2], 1); - Hu3DMotionSpeedSet(object->model[2], 0); - Hu3DAnimCreate(HuDataReadNum(0x2F0007, MEMORY_DEFAULT_NUM), object->model[2], "sb00"); - object->model[3] = Hu3DParticleCreate(lbl_1_bss_914, 50); - Hu3DParticleHookSet(object->model[3], fn_1_6640); - Hu3DModelLayerSet(object->model[3], 3); - Hu3DModelAttrSet(object->model[3], 1); - work->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work4C), MEMORY_DEFAULT_NUM); - memset(work->unk4C, 0, sizeof(Bss930Work4C)); - - work->unk48 = fn_1_2EA4; + Bss930Work *work; + s32 i; + work = object->data; + for (i = 0; i < 9; i++) { + object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_154[i]); + } + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x04)); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x02)); + Hu3DModelLayerSet(object->model[2], 3); + fn_1_6DEC(object->model[2], 16); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DMotionSpeedSet(object->model[2], 0); + Hu3DAnimCreate(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M416, 0x07), MEMORY_DEFAULT_NUM), object->model[2], "sb00"); + object->model[3] = Hu3DParticleCreate(lbl_1_bss_914, 50); + Hu3DParticleHookSet(object->model[3], fn_1_6640); + Hu3DModelLayerSet(object->model[3], 3); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + work->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work4C), MEMORY_DEFAULT_NUM); + memset(work->unk4C, 0, sizeof(Bss930Work4C)); + + work->unk48 = fn_1_2EA4; } float fn_1_1C80(float arg1, float arg2, float arg3) { - float temp_f31; - float temp_f30; - temp_f31 = fmod(arg2-arg1, 360); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } - temp_f30 = fmod(arg1+(arg3*temp_f31), 360); - if(temp_f30 < 0.0f) { - temp_f30 += 360.0f; - } - return temp_f30; + float temp_f31; + float temp_f30; + temp_f31 = fmod(arg2 - arg1, 360); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + temp_f30 = fmod(arg1 + (arg3 * temp_f31), 360); + if (temp_f30 < 0.0f) { + temp_f30 += 360.0f; + } + return temp_f30; } void fn_1_389C(omObjData *object); @@ -606,158 +600,169 @@ s32 fn_1_5530(omObjData *arg0, Vec *arg1, Vec *arg2); void fn_1_1D84(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f28; - float temp_f27; - float temp_f23; - Bss930Work *temp_r31; - s32 temp_r29; - u32 temp_r28; - s32 temp_r27; - Vec sp40; - Vec sp34; - temp_r31 = object->data; - temp_r29 = temp_r31->unk28; - temp_r28 = temp_r31->unk30; - switch(temp_r31->unk14) { - case 0: - if(fn_1_1240() >= 6) { - if(fn_1_1240() == 7) { - temp_r31->unk14 = 1; - temp_r31->unk40 = 60; - temp_r31->unk08 = temp_r31->unk0A = 0; - temp_r31->unk06 = temp_r31->unk07 = 0; - } else { - if(!GWPlayerCfg[temp_r31->unk02].iscom) { - temp_r31->unk06 = HuPadStkX[temp_r31->unk04]; - temp_r31->unk07 = HuPadStkY[temp_r31->unk04]; - temp_r31->unk08 = HuPadBtn[temp_r31->unk04]; - temp_r31->unk0A = HuPadBtnDown[temp_r31->unk04]; - } else { - temp_r31->unk08 = temp_r31->unk0A = 0; - temp_r31->unk06 = temp_r31->unk07 = 0; - fn_1_389C(object); - } - temp_f31 = temp_r31->unk06; - temp_f30 = -(float)temp_r31->unk07; - if(temp_r31->field_0_bit1) { - temp_f31 = temp_f30 = 0; - } - temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(temp_f28 > 0) { - temp_f31 /= temp_f28; - temp_f30 /= temp_f28; - if(temp_f28 > 72) { - temp_f28 = 72; - } - temp_r31->unk18 = (10*temp_f28)/72; - temp_r31->unk1C.x = temp_f31*temp_r31->unk18; - temp_r31->unk1C.z = temp_f30*temp_r31->unk18; - object->rot.y = fn_1_1C80(object->rot.y, atan2d(temp_r31->unk1C.x, temp_r31->unk1C.z), 0.4f); - if(temp_r31->unk18 < 7.5f) { - temp_r29 = 1; - } else { - temp_r29 = 2; - } - temp_r28 = 0x40000001; - } else { - temp_r31->unk1C.x = temp_r31->unk1C.z = 0; - temp_r29 = 0; - temp_r28 = 0x40000001; - } - object->trans.x += temp_r31->unk1C.x; - object->trans.z += temp_r31->unk1C.z; - } - } - break; - - case 1: - if(fn_1_1240() == 9) { - if(--temp_r31->unk40 == 0){ - temp_r31->unk14 = 2; - temp_r31->unk40 = 300; - temp_r31->unk2C = -1; - } - } - if(!temp_r31->field_0_bit2) { - temp_r29 = 5; - } else { - temp_r29 = 0; - } - temp_r28 = 0x40000001; - break; - - case 2: - if(fn_1_1240() == 10) { - temp_r31->unk14 = 3; - } else { - VECSubtract(&temp_r31->unk64, &object->trans, &sp34); - temp_f28 = VECMag(&sp34); - if(temp_f28 < 20 || temp_r31->unk40 == 0) { - temp_r29 = 5; - temp_r28 = 0x40000001; - object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f); - temp_r31->field_0_bit3 = 1; - } else { - if(!temp_r31->field_0_bit3) { - temp_r27 = fn_1_5530(object, &temp_r31->unk64, &sp40); - } else { - sp40.x = temp_r31->unk64.x; - sp40.y = temp_r31->unk64.y; - sp40.z = temp_r31->unk64.z; - temp_r27 = 0; - } - VECSubtract(&sp40, &object->trans, &sp34); - object->rot.y = fn_1_1C80(object->rot.y, atan2d(sp34.x, sp34.z), 0.2f); - if(!temp_r27) { - if(temp_f28 < 100.0f) { - temp_f23 = 7.5f*(temp_f28/100.0f); - } else { - temp_f23 = 7.5f; - } - } else { - temp_f23 = 3.75f; - } - temp_r31->unk1C.x = temp_f23*sind(object->rot.y); - temp_r31->unk1C.z = temp_f23*cosd(object->rot.y); - object->trans.x += temp_r31->unk1C.x; - object->trans.z += temp_r31->unk1C.z; - temp_r29 = 8; - temp_r28 = 0x40000001; - - } - if(temp_r31->unk40) { - temp_r31->unk40--; - } - } - break; - - case 3: - if(fn_1_1240() < 10) { - temp_r29 = 0; - temp_r28 = 0x40000001; - } else { - if((!temp_r31->unk10 && lbl_1_bss_924 < 0) || (temp_r31->unk10 && lbl_1_bss_924 >= 0)) { - temp_r29 = 6; - } else { - temp_r29 = 7; - } - temp_r28 = 0; - object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f); - Hu3DModelAttrReset(object->model[0], 0x40000001); - } - break; - } - if(temp_r31->unk2C >= 0) { - temp_r29 = temp_r31->unk2C; - temp_r28 = temp_r31->unk34; - } - if((temp_r29 >= 0 && temp_r29 != temp_r31->unk28) || temp_r28 != temp_r31->unk30) { - temp_r31->unk28 = temp_r29; - temp_r31->unk30 = temp_r28; - CharModelMotionShiftSet(temp_r31->unk0C, object->motion[temp_r31->unk28], 0, 8, temp_r28); - } + float temp_f31; + float temp_f30; + float temp_f28; + float temp_f27; + float temp_f23; + Bss930Work *temp_r31; + s32 temp_r29; + u32 temp_r28; + s32 temp_r27; + Vec sp40; + Vec sp34; + temp_r31 = object->data; + temp_r29 = temp_r31->unk28; + temp_r28 = temp_r31->unk30; + switch (temp_r31->unk14) { + case 0: + if (fn_1_1240() >= 6) { + if (fn_1_1240() == 7) { + temp_r31->unk14 = 1; + temp_r31->unk40 = 60; + temp_r31->unk08 = temp_r31->unk0A = 0; + temp_r31->unk06 = temp_r31->unk07 = 0; + } + else { + if (!GWPlayerCfg[temp_r31->unk02].iscom) { + temp_r31->unk06 = HuPadStkX[temp_r31->unk04]; + temp_r31->unk07 = HuPadStkY[temp_r31->unk04]; + temp_r31->unk08 = HuPadBtn[temp_r31->unk04]; + temp_r31->unk0A = HuPadBtnDown[temp_r31->unk04]; + } + else { + temp_r31->unk08 = temp_r31->unk0A = 0; + temp_r31->unk06 = temp_r31->unk07 = 0; + fn_1_389C(object); + } + temp_f31 = temp_r31->unk06; + temp_f30 = -(float)temp_r31->unk07; + if (temp_r31->field_0_bit1) { + temp_f31 = temp_f30 = 0; + } + temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (temp_f28 > 0) { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + if (temp_f28 > 72) { + temp_f28 = 72; + } + temp_r31->unk18 = (10 * temp_f28) / 72; + temp_r31->unk1C.x = temp_f31 * temp_r31->unk18; + temp_r31->unk1C.z = temp_f30 * temp_r31->unk18; + object->rot.y = fn_1_1C80(object->rot.y, atan2d(temp_r31->unk1C.x, temp_r31->unk1C.z), 0.4f); + if (temp_r31->unk18 < 7.5f) { + temp_r29 = 1; + } + else { + temp_r29 = 2; + } + temp_r28 = HU3D_MOTATTR_LOOP; + } + else { + temp_r31->unk1C.x = temp_r31->unk1C.z = 0; + temp_r29 = 0; + temp_r28 = HU3D_MOTATTR_LOOP; + } + object->trans.x += temp_r31->unk1C.x; + object->trans.z += temp_r31->unk1C.z; + } + } + break; + + case 1: + if (fn_1_1240() == 9) { + if (--temp_r31->unk40 == 0) { + temp_r31->unk14 = 2; + temp_r31->unk40 = 300; + temp_r31->unk2C = -1; + } + } + if (!temp_r31->field_0_bit2) { + temp_r29 = 5; + } + else { + temp_r29 = 0; + } + temp_r28 = HU3D_MOTATTR_LOOP; + break; + + case 2: + if (fn_1_1240() == 10) { + temp_r31->unk14 = 3; + } + else { + VECSubtract(&temp_r31->unk64, &object->trans, &sp34); + temp_f28 = VECMag(&sp34); + if (temp_f28 < 20 || temp_r31->unk40 == 0) { + temp_r29 = 5; + temp_r28 = HU3D_MOTATTR_LOOP; + object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f); + temp_r31->field_0_bit3 = 1; + } + else { + if (!temp_r31->field_0_bit3) { + temp_r27 = fn_1_5530(object, &temp_r31->unk64, &sp40); + } + else { + sp40.x = temp_r31->unk64.x; + sp40.y = temp_r31->unk64.y; + sp40.z = temp_r31->unk64.z; + temp_r27 = 0; + } + VECSubtract(&sp40, &object->trans, &sp34); + object->rot.y = fn_1_1C80(object->rot.y, atan2d(sp34.x, sp34.z), 0.2f); + if (!temp_r27) { + if (temp_f28 < 100.0f) { + temp_f23 = 7.5f * (temp_f28 / 100.0f); + } + else { + temp_f23 = 7.5f; + } + } + else { + temp_f23 = 3.75f; + } + temp_r31->unk1C.x = temp_f23 * sind(object->rot.y); + temp_r31->unk1C.z = temp_f23 * cosd(object->rot.y); + object->trans.x += temp_r31->unk1C.x; + object->trans.z += temp_r31->unk1C.z; + temp_r29 = 8; + temp_r28 = HU3D_MOTATTR_LOOP; + } + if (temp_r31->unk40) { + temp_r31->unk40--; + } + } + break; + + case 3: + if (fn_1_1240() < 10) { + temp_r29 = 0; + temp_r28 = HU3D_MOTATTR_LOOP; + } + else { + if ((!temp_r31->unk10 && lbl_1_bss_924 < 0) || (temp_r31->unk10 && lbl_1_bss_924 >= 0)) { + temp_r29 = 6; + } + else { + temp_r29 = 7; + } + temp_r28 = HU3D_MOTATTR_NONE; + object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + } + break; + } + if (temp_r31->unk2C >= 0) { + temp_r29 = temp_r31->unk2C; + temp_r28 = temp_r31->unk34; + } + if ((temp_r29 >= 0 && temp_r29 != temp_r31->unk28) || temp_r28 != temp_r31->unk30) { + temp_r31->unk28 = temp_r29; + temp_r31->unk30 = temp_r28; + CharModelMotionShiftSet(temp_r31->unk0C, object->motion[temp_r31->unk28], 0, 8, temp_r28); + } } void fn_1_5004(void); @@ -766,249 +771,239 @@ void fn_1_361C(omObjData *object); void fn_1_2930(omObjData *object) { - Bss930Work *temp_r31; - s32 temp_r30; - omObjData *temp_r29; - omObjData **temp_r28; - temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - fn_1_5004(); - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r29 = temp_r28[temp_r30]; - temp_r31 = temp_r29->data; - if(temp_r31->unk48 != NULL) { - temp_r31->unk48(temp_r29); - } - if(temp_r31->field_0_bit4) { - fn_1_361C(temp_r29); - } - } + Bss930Work *temp_r31; + s32 temp_r30; + omObjData *temp_r29; + omObjData **temp_r28; + temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + fn_1_5004(); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r29 = temp_r28[temp_r30]; + temp_r31 = temp_r29->data; + if (temp_r31->unk48 != NULL) { + temp_r31->unk48(temp_r29); + } + if (temp_r31->field_0_bit4) { + fn_1_361C(temp_r29); + } + } } -float lbl_1_data_180[6] = { - 0, - 0.3, - 0.7, - 1.0, - 1.3, - 1.6 -}; +float lbl_1_data_180[6] = { 0, 0.3, 0.7, 1.0, 1.3, 1.6 }; -float lbl_1_data_198[6][2] = { - 100.0f, 0.75f, - 110.0f, 0.8f, - 120.000008f, 0.85f, - 130.0f, 0.9f, - 140.0f, 0.95f, - 150.0f, 0.99f -}; +float lbl_1_data_198[6][2] = { 100.0f, 0.75f, 110.0f, 0.8f, 120.000008f, 0.85f, 130.0f, 0.9f, 140.0f, 0.95f, 150.0f, 0.99f }; void fn_1_29DC(omObjData *object) { - Mtx sp50; - Mtx sp20; - Vec sp14; - Vec sp8; - Bss930Work *temp_r31; - ModelData *temp_r29; - temp_r31 = object->data; - if(temp_r31->unk44 > 0 && temp_r31->field_0_bit0) { - if(--temp_r31->unk44 == 0) { - lbl_1_bss_924 = 1; - Hu3DGLightKill(lbl_1_bss_91A[1]); - lbl_1_bss_91A[1] = -1; - Hu3DModelAttrSet(object->model[2], 1); - HuAudFXEmiterPlay(1469, &object->trans); - HuAudCharVoicePlay(temp_r31->unk0C, 291); - } else { - HuAudFXEmiterPlay(1466, &object->trans); - HuAudCharVoicePlay(temp_r31->unk0C, 296); - } - temp_r31->field_0_bit0 = 0; - temp_r31->field_0_bit1 = 1; - temp_r31->unk2C = 3; - temp_r31->unk34 = 0; - temp_r31->unk46 = 60; - temp_r31->unk60 = 30; - omVibrate(temp_r31->unk02, 12, 6, 6); - } - if(temp_r31->unk46 > 0) { - if(temp_r31->unk60) { - if(--temp_r31->unk60 == 0) { - temp_r31->unk2C = -1; - temp_r31->field_0_bit1 = 0; - } - } else { - if((temp_r31->unk46 & 0x2) == 0) { - Hu3DModelAttrReset(object->model[0], 1); - } else { - Hu3DModelAttrSet(object->model[0], 1); - } - temp_r31->unk46--; - } - } - if(temp_r31->field_0_bit2) { - Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp50); - MTXTrans(sp20, 0, 52, 0); - MTXConcat(sp50, sp20, sp50); - Hu3DModelPosSet(object->model[2], sp50[0][3], sp50[1][3], sp50[2][3]); - Hu3DModelScaleSet(object->model[2], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44]); - } - if(fn_1_1240() >= 4 && fn_1_1240() <= 8 && lbl_1_bss_91A[1] >= 0) { - Hu3DGLightPointSet(lbl_1_bss_91A[1], (15*sind(object->work[0]))+lbl_1_data_198[temp_r31->unk44][0], lbl_1_data_198[temp_r31->unk44][1], 3); - temp_r29 = &Hu3DData[object->model[2]]; - sp8 = temp_r29->pos; - sp14 = sp8; - sp14.y = 800; - sp8.y = 0; - sp14.z += 1; - Hu3DGLightPosSet(lbl_1_bss_91A[1], temp_r29->pos.x, 140, temp_r29->pos.z, 0, 1, 0); - if(lbl_1_bss_918) { - Hu3DShadowPosSet(&sp14, &Hu3DShadowData.unk_2C, &sp8); - } - object->work[0] += 10.0f; - Hu3DModelAttrReset(object->model[2], 1); - } else { - Hu3DModelAttrSet(object->model[2], 1); - } + Mtx sp50; + Mtx sp20; + Vec sp14; + Vec sp8; + Bss930Work *temp_r31; + ModelData *temp_r29; + temp_r31 = object->data; + if (temp_r31->unk44 > 0 && temp_r31->field_0_bit0) { + if (--temp_r31->unk44 == 0) { + lbl_1_bss_924 = 1; + Hu3DGLightKill(lbl_1_bss_91A[1]); + lbl_1_bss_91A[1] = -1; + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + HuAudFXEmiterPlay(1469, &object->trans); + HuAudCharVoicePlay(temp_r31->unk0C, 291); + } + else { + HuAudFXEmiterPlay(1466, &object->trans); + HuAudCharVoicePlay(temp_r31->unk0C, 296); + } + temp_r31->field_0_bit0 = 0; + temp_r31->field_0_bit1 = 1; + temp_r31->unk2C = 3; + temp_r31->unk34 = HU3D_MOTATTR_NONE; + temp_r31->unk46 = 60; + temp_r31->unk60 = 30; + omVibrate(temp_r31->unk02, 12, 6, 6); + } + if (temp_r31->unk46 > 0) { + if (temp_r31->unk60) { + if (--temp_r31->unk60 == 0) { + temp_r31->unk2C = -1; + temp_r31->field_0_bit1 = 0; + } + } + else { + if ((temp_r31->unk46 & 0x2) == 0) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + temp_r31->unk46--; + } + } + if (temp_r31->field_0_bit2) { + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp50); + MTXTrans(sp20, 0, 52, 0); + MTXConcat(sp50, sp20, sp50); + Hu3DModelPosSet(object->model[2], sp50[0][3], sp50[1][3], sp50[2][3]); + Hu3DModelScaleSet(object->model[2], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44]); + } + if (fn_1_1240() >= 4 && fn_1_1240() <= 8 && lbl_1_bss_91A[1] >= 0) { + Hu3DGLightPointSet( + lbl_1_bss_91A[1], (15 * sind(object->work[0])) + lbl_1_data_198[temp_r31->unk44][0], lbl_1_data_198[temp_r31->unk44][1], 3); + temp_r29 = &Hu3DData[object->model[2]]; + sp8 = temp_r29->pos; + sp14 = sp8; + sp14.y = 800; + sp8.y = 0; + sp14.z += 1; + Hu3DGLightPosSet(lbl_1_bss_91A[1], temp_r29->pos.x, 140, temp_r29->pos.z, 0, 1, 0); + if (lbl_1_bss_918) { + Hu3DShadowPosSet(&sp14, &Hu3DShadowData.unk_2C, &sp8); + } + object->work[0] += 10.0f; + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + } } void fn_1_5C34(omObjData *object); - void fn_1_2EA4(omObjData *object) { - Bss930Work *temp_r30; - Bss930Work4C *temp_r29; - ParticleData *temp_r28; - ModelData *temp_r27; - Mtx sp3C; - Mtx spC; - temp_r30 = object->data; - temp_r29 = temp_r30->unk4C; - switch(temp_r30->unk50) { - case 0: - if(temp_r30->unk0A & PAD_BUTTON_A) { - temp_r30->field_0_bit1 = 1; - temp_r30->unk50 = 1; - temp_r30->unk60 = 15; - temp_r30->unk2C = 3; - temp_r30->unk34 = 0; - HuAudFXEmiterPlay(1465, &object->trans); - } - break; - - case 1: - if(--temp_r30->unk60 == 0) { - Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C); - MTXTrans(spC, 0, 2, 50); - MTXConcat(sp3C, spC, sp3C); - Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]); - Hu3DModelScaleSet(object->model[2], 0.5f, 0.5f, 0.5f); - Hu3DModelAttrReset(object->model[2], 1); - Hu3DMotionTimeSet(object->model[2], 0); - Hu3DMotionSpeedSet(object->model[2], 2.0f); - Hu3DModelRotSet(object->model[2], 0, 180.0f+object->rot.y, 0); - Hu3DData[object->model[2]].unk_94 = 0; - Hu3DData[object->model[2]].unk_98 = 2; - Hu3DModelAttrReset(object->model[3], 1); - Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]); - temp_r27 = &Hu3DData[object->model[3]]; - temp_r28 = temp_r27->unk_120; - temp_r28->unk_00 = 0; - temp_r28->unk_04.x = sp3C[0][3]; - temp_r28->unk_04.y = sp3C[1][3]; - temp_r28->unk_04.z = sp3C[2][3]; - temp_r28->unk_10.x = object->rot.y; - temp_r28->unk_3C = 30-(sqrtf((2.0f*temp_r28->unk_04.y)/1.0000001f)/2.0f); - temp_r29->field_0_bit0 = 1; - temp_r30->unk50 = 2; - temp_r30->unk60 = 20; - } - break; - - case 2: - if(--temp_r30->unk60 == 0) { - temp_r30->unk2C = 4; - temp_r30->unk34 = 0; - temp_r29->field_0_bit0 = 0; - temp_r30->unk50 = 3; - temp_r30->unk60 = 30; - } - Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C); - MTXTrans(spC, 0, 2, 50); - MTXConcat(sp3C, spC, sp3C); - Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]); - Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]); - fn_1_5C34(object); - break; - - case 3: - if(--temp_r30->unk60 == 0) { - Hu3DModelAttrSet(object->model[2], 1); - Hu3DData[object->model[2]].unk_0E = -1; - temp_r30->field_0_bit1 = 0; - temp_r30->unk2C = -1; - temp_r30->unk50 = 0; - } - break; - } - if(temp_r30->unk50 && fn_1_1240() > 6 && lbl_1_bss_924 < 0) { - temp_r29->field_0_bit0 = 0; - Hu3DModelAttrSet(object->model[2], 1); - Hu3DModelAttrSet(object->model[3], 1); - } - if(temp_r29->field_0_bit0) { - temp_r29->unk4 = object->trans.x+(((float)temp_r29->unk10*(200*sind(object->rot.y)))/4); - temp_r29->unk8 = 75; - temp_r29->unkC = object->trans.z+(((float)temp_r29->unk10*(200*cosd(object->rot.y)))/4); - temp_r29->unk4 = object->trans.x+(200.0*sind(object->rot.y)); - temp_r29->unk8 = 120.00001f; - temp_r29->unkC = object->trans.z+(200.0*cosd(object->rot.y)); - if(temp_r29->unk10 < 4) { - temp_r29->unk10++; - } - } - + Bss930Work *temp_r30; + Bss930Work4C *temp_r29; + ParticleData *temp_r28; + ModelData *temp_r27; + Mtx sp3C; + Mtx spC; + temp_r30 = object->data; + temp_r29 = temp_r30->unk4C; + switch (temp_r30->unk50) { + case 0: + if (temp_r30->unk0A & PAD_BUTTON_A) { + temp_r30->field_0_bit1 = 1; + temp_r30->unk50 = 1; + temp_r30->unk60 = 15; + temp_r30->unk2C = 3; + temp_r30->unk34 = HU3D_MOTATTR_NONE; + HuAudFXEmiterPlay(1465, &object->trans); + } + break; + + case 1: + if (--temp_r30->unk60 == 0) { + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C); + MTXTrans(spC, 0, 2, 50); + MTXConcat(sp3C, spC, sp3C); + Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + Hu3DModelScaleSet(object->model[2], 0.5f, 0.5f, 0.5f); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(object->model[2], 0); + Hu3DMotionSpeedSet(object->model[2], 2.0f); + Hu3DModelRotSet(object->model[2], 0, 180.0f + object->rot.y, 0); + Hu3DData[object->model[2]].unk_94 = 0; + Hu3DData[object->model[2]].unk_98 = 2; + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + temp_r27 = &Hu3DData[object->model[3]]; + temp_r28 = temp_r27->unk_120; + temp_r28->unk_00 = 0; + temp_r28->unk_04.x = sp3C[0][3]; + temp_r28->unk_04.y = sp3C[1][3]; + temp_r28->unk_04.z = sp3C[2][3]; + temp_r28->unk_10.x = object->rot.y; + temp_r28->unk_3C = 30 - (sqrtf((2.0f * temp_r28->unk_04.y) / 1.0000001f) / 2.0f); + temp_r29->field_0_bit0 = 1; + temp_r30->unk50 = 2; + temp_r30->unk60 = 20; + } + break; + + case 2: + if (--temp_r30->unk60 == 0) { + temp_r30->unk2C = 4; + temp_r30->unk34 = HU3D_MOTATTR_NONE; + temp_r29->field_0_bit0 = 0; + temp_r30->unk50 = 3; + temp_r30->unk60 = 30; + } + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C); + MTXTrans(spC, 0, 2, 50); + MTXConcat(sp3C, spC, sp3C); + Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + fn_1_5C34(object); + break; + + case 3: + if (--temp_r30->unk60 == 0) { + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DData[object->model[2]].unk_0E = -1; + temp_r30->field_0_bit1 = 0; + temp_r30->unk2C = -1; + temp_r30->unk50 = 0; + } + break; + } + if (temp_r30->unk50 && fn_1_1240() > 6 && lbl_1_bss_924 < 0) { + temp_r29->field_0_bit0 = 0; + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + } + if (temp_r29->field_0_bit0) { + temp_r29->unk4 = object->trans.x + (((float)temp_r29->unk10 * (200 * sind(object->rot.y))) / 4); + temp_r29->unk8 = 75; + temp_r29->unkC = object->trans.z + (((float)temp_r29->unk10 * (200 * cosd(object->rot.y))) / 4); + temp_r29->unk4 = object->trans.x + (200.0 * sind(object->rot.y)); + temp_r29->unk8 = 120.00001f; + temp_r29->unkC = object->trans.z + (200.0 * cosd(object->rot.y)); + if (temp_r29->unk10 < 4) { + temp_r29->unk10++; + } + } } void fn_1_361C(omObjData *object) { - Bss930Work *temp_r30; - ModelData *temp_r29; - temp_r30 = object->data; - if(temp_r30->field_0_bit2) { - if(fn_1_1240() == 9) { - temp_r30->field_0_bit2 = 0; - temp_r30->unk48 = 0; - temp_r30->unk54.x = 6*sind(object->rot.y); - temp_r30->unk54.y = 20; - temp_r30->unk54.z = 6*cosd(object->rot.y); - temp_r30->unk60 = 30; - temp_r29 = &Hu3DData[object->model[1]]; - temp_r29->rot.y = object->rot.y; - Hu3DModelObjPosGet(object->model[0], "test11_tex_we-itemhook-r", &temp_r29->pos); - Hu3DModelHookReset(object->model[0]); - Hu3DModelAttrReset(object->model[1], 0x8000); - Hu3DModelShadowReset(object->model[1]); - Hu3DModelAttrReset(object->model[0], 1); - } - } else { - temp_r29 = &Hu3DData[object->model[1]]; - temp_r29->pos.x += temp_r30->unk54.x; - temp_r29->pos.y += temp_r30->unk54.y; - temp_r29->pos.z += temp_r30->unk54.z; - temp_r30->unk54.y += -1.0000001f; - temp_r29->rot.x += 30.0f; - if(--temp_r30->unk60 == 0) { - Hu3DModelAttrSet(object->model[1], 1); - Hu3DModelPosSet(object->model[4], temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); - Hu3DModelAttrReset(object->model[4], 1); - if(!temp_r30->unk10) { - HuAudFXPlay(1468); - } - temp_r30->field_0_bit4 = 0; - } - } + Bss930Work *temp_r30; + ModelData *temp_r29; + temp_r30 = object->data; + if (temp_r30->field_0_bit2) { + if (fn_1_1240() == 9) { + temp_r30->field_0_bit2 = 0; + temp_r30->unk48 = 0; + temp_r30->unk54.x = 6 * sind(object->rot.y); + temp_r30->unk54.y = 20; + temp_r30->unk54.z = 6 * cosd(object->rot.y); + temp_r30->unk60 = 30; + temp_r29 = &Hu3DData[object->model[1]]; + temp_r29->rot.y = object->rot.y; + Hu3DModelObjPosGet(object->model[0], "test11_tex_we-itemhook-r", &temp_r29->pos); + Hu3DModelHookReset(object->model[0]); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_HOOK); + Hu3DModelShadowReset(object->model[1]); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + } + else { + temp_r29 = &Hu3DData[object->model[1]]; + temp_r29->pos.x += temp_r30->unk54.x; + temp_r29->pos.y += temp_r30->unk54.y; + temp_r29->pos.z += temp_r30->unk54.z; + temp_r30->unk54.y += -1.0000001f; + temp_r29->rot.x += 30.0f; + if (--temp_r30->unk60 == 0) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[4], temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); + Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF); + if (!temp_r30->unk10) { + HuAudFXPlay(1468); + } + temp_r30->field_0_bit4 = 0; + } + } } void fn_1_38F0(omObjData *object); @@ -1016,766 +1011,764 @@ void fn_1_49C4(omObjData *object); void fn_1_389C(omObjData *object) { - Bss930Work *temp_r30; - temp_r30 = object->data; - if(!temp_r30->unk10) { - fn_1_38F0(object); - } else { - fn_1_49C4(object); - } + Bss930Work *temp_r30; + temp_r30 = object->data; + if (!temp_r30->unk10) { + fn_1_38F0(object); + } + else { + fn_1_49C4(object); + } } typedef struct unkstruct_38F0 { - s16 unk0; - s16 unk2; + s16 unk0; + s16 unk2; } UnkStruct38F0; -UnkStruct38F0 lbl_1_data_1C8[8] = { - -1, -1, - 0, -1, - 1, -1, - 1, 0, - 1, 1, - 0, 1, - -1, 1, - -1, 0 -}; - +UnkStruct38F0 lbl_1_data_1C8[8] = { -1, -1, 0, -1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0 }; void fn_1_38F0(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f26; - float temp_f25; - float temp_f22; - - s32 temp_r31; - s32 temp_r30; - Bss930Work *temp_r29; - s16 temp_r27; - s32 temp_r26; - s16 temp_r25; - s16 temp_r24; - u8 temp_r23; - - UnkStruct38F0 sp80[100]; - UnkStruct38F0 sp58[10]; - UnkStruct38F0 sp30[10]; - UnkStruct38F0 sp20[4]; - - temp_r29 = object->data; - temp_f25 = 1; - sp20[3].unk0 = 1+(5+((9*object->trans.x)/1100)); - sp20[3].unk2 = 1+(5+((9*object->trans.z)/1100)); - for(temp_r31=1; temp_r31<11; temp_r31++) { - for(temp_r30=1; temp_r30<11; temp_r30++) { - lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0; - temp_f22 = VECMagPoint(lbl_1_bss_14[temp_r31][temp_r30].unk0, lbl_1_bss_14[temp_r31][temp_r30].unk4, 0); - if(temp_f22 <= 550) { - lbl_1_bss_14[temp_r31][temp_r30].unkC = 0; - for(temp_r26=0; temp_r26trans.x; - temp_f30 = lbl_1_bss_14[temp_r31][temp_r30].unk4-lbl_1_bss_930[1][temp_r26]->trans.z; - temp_f22 = VECMagPoint(temp_f31, temp_f30, 0); - if(temp_f22 <= 1100) { - temp_f26 = cosd(90*(temp_f22/1100)); - temp_f26 = temp_f26*temp_f26; - if(temp_f26 > lbl_1_bss_14[temp_r31][temp_r30].unkC) { - lbl_1_bss_14[temp_r31][temp_r30].unkC = temp_f26; - } - } - } - } else { - lbl_1_bss_14[temp_r31][temp_r30].unkC = -1; - } - } - } - lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unk8 = 1; - sp80[0] = sp20[3]; - temp_r27=0; - temp_r25=1; - do { - for(temp_r31=0; temp_r31<8u; temp_r31++) { - sp20[2].unk0 = sp80[temp_r27].unk0+lbl_1_data_1C8[temp_r31].unk0; - sp20[2].unk2 = sp80[temp_r27].unk2+lbl_1_data_1C8[temp_r31].unk2; - if(sp20[2].unk0 < 1 || sp20[2].unk0 >= 11 || sp20[2].unk2 < 1 || sp20[2].unk2 >= 11) { - continue; - } - if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8) { - continue; - } - if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0) { - lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8 = lbl_1_bss_14[sp80[temp_r27].unk2][sp80[temp_r27].unk0].unk8+1; - sp80[temp_r25].unk0 = sp20[2].unk0; - sp80[temp_r25].unk2 = sp20[2].unk2; - temp_r25++; - } - } - temp_r27++; - } while(temp_r27 != temp_r25); - temp_f25 = 1.0f; - sp20[0].unk0 = -1; - for(temp_r31=1; temp_r31<11; temp_r31++) { - for(temp_r30=1; temp_r30<11; temp_r30++) { - if(lbl_1_bss_14[temp_r31][temp_r30].unk8 == 0 || lbl_1_bss_14[temp_r31][temp_r30].unk8 > 5) { - continue; - } - if(lbl_1_bss_14[temp_r31][temp_r30].unkC >= 0.0f && lbl_1_bss_14[temp_r31][temp_r30].unkC < temp_f25) { - temp_f25 = lbl_1_bss_14[temp_r31][temp_r30].unkC; - sp20[0].unk0 = temp_r30; - sp20[0].unk2 = temp_r31; - } - } - } - temp_r23 = lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8; - if(temp_r23 == 1) { - if(lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unkC > 0.8f) { - temp_f25 = 1.0f; - for(temp_r31=0; temp_r31<8u; temp_r31++) { - sp20[2].unk0 = sp20[3].unk0+lbl_1_data_1C8[temp_r31].unk0; - sp20[2].unk2 = sp20[3].unk2+lbl_1_data_1C8[temp_r31].unk2; - if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0.0f && lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC < temp_f25) { - temp_f25 = lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC; - sp20[1] = sp20[2]; - } - } - sp30[1].unk0 = sp20[1].unk0; - sp30[1].unk2 = sp20[1].unk2; - } else { - return; - } - } else { - for(temp_r31=1; temp_r31<11; temp_r31++) { - for(temp_r30=1; temp_r30<11; temp_r30++) { - if(lbl_1_bss_14[temp_r31][temp_r30].unk8 >= temp_r23) { - lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0; - } - } - } - lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8 = temp_r23; - sp80[0] = sp20[3]; - temp_r24 = 1; - temp_f25 = 1.0f; - do { - sp20[1] = sp80[--temp_r24]; - sp58[lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8 -1] = sp20[1]; - if(sp20[1].unk0 == sp20[0].unk0 && sp20[1].unk2 == sp20[0].unk2) { - temp_f26 = 0; - for(temp_r31=1; temp_r31 temp_f26) { - temp_f26 = lbl_1_bss_14[sp58[temp_r31].unk2][sp58[temp_r31].unk0].unkC; - } - } - if(temp_f26 < temp_f25) { - temp_f25 = temp_f26; - memcpy(sp30, sp58, temp_r23*sizeof(UnkStruct38F0)); - - } - continue; - } - for(temp_r31=0; temp_r31<8u; temp_r31++) { - sp20[2].unk0 = sp20[1].unk0+lbl_1_data_1C8[temp_r31].unk0; - sp20[2].unk2 = sp20[1].unk2+lbl_1_data_1C8[temp_r31].unk2; - if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8-1 == lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8) { - sp80[temp_r24++] = sp20[2]; - } - } - } while(temp_r24); - } - if(sp20[0].unk0 >= 0) { - temp_f31 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk0-object->trans.x; - temp_f30 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk4-object->trans.z; - temp_f22 = VECMagPoint(temp_f31, temp_f30, 0); - if(temp_f22 >= 50.0f) { - temp_r29->unk84 = fn_1_1C80(temp_r29->unk84, atan2d(temp_f31, temp_f30), 0.1f); - temp_r29->unk06 = (69.0f+temp_r29->unk0E)*sind(temp_r29->unk84); - temp_r29->unk07 = (69.0f+temp_r29->unk0E)*-cosd(temp_r29->unk84); - } - } + float temp_f31; + float temp_f30; + float temp_f26; + float temp_f25; + float temp_f22; + + s32 temp_r31; + s32 temp_r30; + Bss930Work *temp_r29; + s16 temp_r27; + s32 temp_r26; + s16 temp_r25; + s16 temp_r24; + u8 temp_r23; + + UnkStruct38F0 sp80[100]; + UnkStruct38F0 sp58[10]; + UnkStruct38F0 sp30[10]; + UnkStruct38F0 sp20[4]; + + temp_r29 = object->data; + temp_f25 = 1; + sp20[3].unk0 = 1 + (5 + ((9 * object->trans.x) / 1100)); + sp20[3].unk2 = 1 + (5 + ((9 * object->trans.z) / 1100)); + for (temp_r31 = 1; temp_r31 < 11; temp_r31++) { + for (temp_r30 = 1; temp_r30 < 11; temp_r30++) { + lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0; + temp_f22 = VECMagPoint(lbl_1_bss_14[temp_r31][temp_r30].unk0, lbl_1_bss_14[temp_r31][temp_r30].unk4, 0); + if (temp_f22 <= 550) { + lbl_1_bss_14[temp_r31][temp_r30].unkC = 0; + for (temp_r26 = 0; temp_r26 < lbl_1_bss_92A[1]; temp_r26++) { + temp_f31 = lbl_1_bss_14[temp_r31][temp_r30].unk0 - lbl_1_bss_930[1][temp_r26]->trans.x; + temp_f30 = lbl_1_bss_14[temp_r31][temp_r30].unk4 - lbl_1_bss_930[1][temp_r26]->trans.z; + temp_f22 = VECMagPoint(temp_f31, temp_f30, 0); + if (temp_f22 <= 1100) { + temp_f26 = cosd(90 * (temp_f22 / 1100)); + temp_f26 = temp_f26 * temp_f26; + if (temp_f26 > lbl_1_bss_14[temp_r31][temp_r30].unkC) { + lbl_1_bss_14[temp_r31][temp_r30].unkC = temp_f26; + } + } + } + } + else { + lbl_1_bss_14[temp_r31][temp_r30].unkC = -1; + } + } + } + lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unk8 = 1; + sp80[0] = sp20[3]; + temp_r27 = 0; + temp_r25 = 1; + do { + for (temp_r31 = 0; temp_r31 < 8u; temp_r31++) { + sp20[2].unk0 = sp80[temp_r27].unk0 + lbl_1_data_1C8[temp_r31].unk0; + sp20[2].unk2 = sp80[temp_r27].unk2 + lbl_1_data_1C8[temp_r31].unk2; + if (sp20[2].unk0 < 1 || sp20[2].unk0 >= 11 || sp20[2].unk2 < 1 || sp20[2].unk2 >= 11) { + continue; + } + if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8) { + continue; + } + if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0) { + lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8 = lbl_1_bss_14[sp80[temp_r27].unk2][sp80[temp_r27].unk0].unk8 + 1; + sp80[temp_r25].unk0 = sp20[2].unk0; + sp80[temp_r25].unk2 = sp20[2].unk2; + temp_r25++; + } + } + temp_r27++; + } while (temp_r27 != temp_r25); + temp_f25 = 1.0f; + sp20[0].unk0 = -1; + for (temp_r31 = 1; temp_r31 < 11; temp_r31++) { + for (temp_r30 = 1; temp_r30 < 11; temp_r30++) { + if (lbl_1_bss_14[temp_r31][temp_r30].unk8 == 0 || lbl_1_bss_14[temp_r31][temp_r30].unk8 > 5) { + continue; + } + if (lbl_1_bss_14[temp_r31][temp_r30].unkC >= 0.0f && lbl_1_bss_14[temp_r31][temp_r30].unkC < temp_f25) { + temp_f25 = lbl_1_bss_14[temp_r31][temp_r30].unkC; + sp20[0].unk0 = temp_r30; + sp20[0].unk2 = temp_r31; + } + } + } + temp_r23 = lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8; + if (temp_r23 == 1) { + if (lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unkC > 0.8f) { + temp_f25 = 1.0f; + for (temp_r31 = 0; temp_r31 < 8u; temp_r31++) { + sp20[2].unk0 = sp20[3].unk0 + lbl_1_data_1C8[temp_r31].unk0; + sp20[2].unk2 = sp20[3].unk2 + lbl_1_data_1C8[temp_r31].unk2; + if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0.0f && lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC < temp_f25) { + temp_f25 = lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC; + sp20[1] = sp20[2]; + } + } + sp30[1].unk0 = sp20[1].unk0; + sp30[1].unk2 = sp20[1].unk2; + } + else { + return; + } + } + else { + for (temp_r31 = 1; temp_r31 < 11; temp_r31++) { + for (temp_r30 = 1; temp_r30 < 11; temp_r30++) { + if (lbl_1_bss_14[temp_r31][temp_r30].unk8 >= temp_r23) { + lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0; + } + } + } + lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8 = temp_r23; + sp80[0] = sp20[3]; + temp_r24 = 1; + temp_f25 = 1.0f; + do { + sp20[1] = sp80[--temp_r24]; + sp58[lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8 - 1] = sp20[1]; + if (sp20[1].unk0 == sp20[0].unk0 && sp20[1].unk2 == sp20[0].unk2) { + temp_f26 = 0; + for (temp_r31 = 1; temp_r31 < temp_r23; temp_r31++) { + if (lbl_1_bss_14[sp58[temp_r31].unk2][sp58[temp_r31].unk0].unkC > temp_f26) { + temp_f26 = lbl_1_bss_14[sp58[temp_r31].unk2][sp58[temp_r31].unk0].unkC; + } + } + if (temp_f26 < temp_f25) { + temp_f25 = temp_f26; + memcpy(sp30, sp58, temp_r23 * sizeof(UnkStruct38F0)); + } + continue; + } + for (temp_r31 = 0; temp_r31 < 8u; temp_r31++) { + sp20[2].unk0 = sp20[1].unk0 + lbl_1_data_1C8[temp_r31].unk0; + sp20[2].unk2 = sp20[1].unk2 + lbl_1_data_1C8[temp_r31].unk2; + if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8 - 1 == lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8) { + sp80[temp_r24++] = sp20[2]; + } + } + } while (temp_r24); + } + if (sp20[0].unk0 >= 0) { + temp_f31 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk0 - object->trans.x; + temp_f30 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk4 - object->trans.z; + temp_f22 = VECMagPoint(temp_f31, temp_f30, 0); + if (temp_f22 >= 50.0f) { + temp_r29->unk84 = fn_1_1C80(temp_r29->unk84, atan2d(temp_f31, temp_f30), 0.1f); + temp_r29->unk06 = (69.0f + temp_r29->unk0E) * sind(temp_r29->unk84); + temp_r29->unk07 = (69.0f + temp_r29->unk0E) * -cosd(temp_r29->unk84); + } + } } void fn_1_49C4(omObjData *object) { - float temp_f31; - float temp_f28; - float temp_f27; - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - - Bss930Work *temp_r31; - omObjData *temp_r30; - Bss930Work *temp_r28; - temp_r30 = lbl_1_bss_930[0][0]; - temp_r31 = object->data; - temp_r28 = temp_r30->data; - if(temp_r31->field_0_bit1) { - return; - } - switch(temp_r31->unk70) { - case 0: - temp_f28 = (frand16()*360)>>16; - temp_f31 = (frand16()*550)>>16; - temp_r31->unk74.x = temp_f31*sind(temp_f28); - temp_r31->unk74.y = 0; - temp_r31->unk74.z = temp_f31*cosd(temp_f28); - temp_r31->unk70 = 1; - temp_r31->unk80 = 0; - - case 1: - sp20.x = temp_r30->trans.x+((60.0f*temp_r28->unk1C.x)/4.0f); - sp20.z = temp_r30->trans.z+((60.0f*temp_r28->unk1C.z)/4.0f); - sp2C.x = temp_r31->unk74.x+(temp_r31->unk80*(sp20.x-temp_r31->unk74.x)); - sp2C.y = 0; - sp2C.z = temp_r31->unk74.z+(temp_r31->unk80*(sp20.z-temp_r31->unk74.z)); - VECSubtract(&sp2C, &object->trans, &sp14); - temp_f31 = VECMag(&sp14); - if(temp_f31 > 0.0f) { - if(temp_r31->unk80 < 1.0f) { - if(temp_f31 < 10.0f) { - temp_r31->unk80 += (10.0f/temp_f31); - } else { - temp_r31->unk80 += (2.0f/temp_f31); - } - if(temp_r31->unk80 > 1.0f) { - temp_r31->unk80 = 1.0f; - } - } else { - if(((s32)frand() & 0x1F) == 0) { - temp_r31->unk70 = 0; - } - } - } - temp_f27 = 60.0f+(2.0f*temp_r31->unk0E); - temp_r31->unk84 = fn_1_1C80(temp_r31->unk84, atan2d(sp14.x, sp14.z), 0.1f); - temp_r31->unk06 = temp_f27*sind(temp_r31->unk84); - temp_r31->unk07 = temp_f27*-cosd(temp_r31->unk84); - VECSubtract(&temp_r30->trans, &object->trans, &sp14); - if(VECMag(&sp14) < 200.0f) { - VECNormalize(&sp14, &sp14); - sp8.x = sind(object->rot.y); - sp8.y = 0; - sp8.z = cosd(object->rot.y); - if(VECDotProduct(&sp14, &sp8) >= 0.8f) { - temp_r31->unk0A |= PAD_BUTTON_A; - temp_r31->unk70 = 0; - } - } - if(((s32)frand() & 0x3FF) < 4-temp_r31->unk0E) { - temp_r31->unk0A |= PAD_BUTTON_A; - temp_r31->unk70 = 0; - } - break; - } + float temp_f31; + float temp_f28; + float temp_f27; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + Bss930Work *temp_r31; + omObjData *temp_r30; + Bss930Work *temp_r28; + temp_r30 = lbl_1_bss_930[0][0]; + temp_r31 = object->data; + temp_r28 = temp_r30->data; + if (temp_r31->field_0_bit1) { + return; + } + switch (temp_r31->unk70) { + case 0: + temp_f28 = (frand16() * 360) >> 16; + temp_f31 = (frand16() * 550) >> 16; + temp_r31->unk74.x = temp_f31 * sind(temp_f28); + temp_r31->unk74.y = 0; + temp_r31->unk74.z = temp_f31 * cosd(temp_f28); + temp_r31->unk70 = 1; + temp_r31->unk80 = 0; + + case 1: + sp20.x = temp_r30->trans.x + ((60.0f * temp_r28->unk1C.x) / 4.0f); + sp20.z = temp_r30->trans.z + ((60.0f * temp_r28->unk1C.z) / 4.0f); + sp2C.x = temp_r31->unk74.x + (temp_r31->unk80 * (sp20.x - temp_r31->unk74.x)); + sp2C.y = 0; + sp2C.z = temp_r31->unk74.z + (temp_r31->unk80 * (sp20.z - temp_r31->unk74.z)); + VECSubtract(&sp2C, &object->trans, &sp14); + temp_f31 = VECMag(&sp14); + if (temp_f31 > 0.0f) { + if (temp_r31->unk80 < 1.0f) { + if (temp_f31 < 10.0f) { + temp_r31->unk80 += (10.0f / temp_f31); + } + else { + temp_r31->unk80 += (2.0f / temp_f31); + } + if (temp_r31->unk80 > 1.0f) { + temp_r31->unk80 = 1.0f; + } + } + else { + if (((s32)frand() & 0x1F) == 0) { + temp_r31->unk70 = 0; + } + } + } + temp_f27 = 60.0f + (2.0f * temp_r31->unk0E); + temp_r31->unk84 = fn_1_1C80(temp_r31->unk84, atan2d(sp14.x, sp14.z), 0.1f); + temp_r31->unk06 = temp_f27 * sind(temp_r31->unk84); + temp_r31->unk07 = temp_f27 * -cosd(temp_r31->unk84); + VECSubtract(&temp_r30->trans, &object->trans, &sp14); + if (VECMag(&sp14) < 200.0f) { + VECNormalize(&sp14, &sp14); + sp8.x = sind(object->rot.y); + sp8.y = 0; + sp8.z = cosd(object->rot.y); + if (VECDotProduct(&sp14, &sp8) >= 0.8f) { + temp_r31->unk0A |= PAD_BUTTON_A; + temp_r31->unk70 = 0; + } + } + if (((s32)frand() & 0x3FF) < 4 - temp_r31->unk0E) { + temp_r31->unk0A |= PAD_BUTTON_A; + temp_r31->unk70 = 0; + } + break; + } } s32 fn_1_5058(void); void fn_1_5004(void) { - s32 i = 0; - omObjData **sp8 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - while(fn_1_5058() && i < 50) { - i++; - } + s32 i = 0; + omObjData **sp8 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + while (fn_1_5058() && i < 50) { + i++; + } } s32 fn_1_5058(void) { - Vec sp14[4]; - Vec sp8; - float temp_f31; - float temp_f30; - s32 temp_r31; - omObjData *temp_r30; - s32 temp_r29; - omObjData **temp_r28; - s32 temp_r27; - omObjData *temp_r26; - omObjData *temp_r25; - temp_r27 = 0; - temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - for(temp_r31=0; temp_r31<4; temp_r31++) { - sp14[temp_r31].x = sp14[temp_r31].y = sp14[temp_r31].z = 0; - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r26 = temp_r28[temp_r31]; - for(temp_r29=temp_r31+1; temp_r29<4; temp_r29++) { - temp_r25 = temp_r28[temp_r29]; - VECSubtract(&temp_r26->trans, &temp_r25->trans, &sp8); - temp_f31 = VECMag(&sp8); - if(temp_f31 < 100.0) { - VECNormalize(&sp8, &sp8); - temp_f30 = 0.0001f+(0.5f*(100.0-temp_f31)); - VECScale(&sp8, &sp8, temp_f30); - VECAdd(&sp14[temp_r31], &sp8, &sp14[temp_r31]); - VECSubtract(&sp14[temp_r29], &sp8, &sp14[temp_r29]); - temp_r27++; - } - } - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = temp_r28[temp_r31]; - VECAdd(&temp_r30->trans, &sp14[temp_r31], &temp_r30->trans); - sp8.x = temp_r30->trans.x; - sp8.y = 0; - sp8.z = temp_r30->trans.z; - temp_f31 = VECMag(&sp8); - if(temp_f31 > 500.0) { - VECNormalize(&sp8, &sp8); - temp_r30->trans.x = 500.0*sp8.x; - temp_r30->trans.z = 500.0*sp8.z; - } - } - return temp_r27; + Vec sp14[4]; + Vec sp8; + float temp_f31; + float temp_f30; + s32 temp_r31; + omObjData *temp_r30; + s32 temp_r29; + omObjData **temp_r28; + s32 temp_r27; + omObjData *temp_r26; + omObjData *temp_r25; + temp_r27 = 0; + temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp14[temp_r31].x = sp14[temp_r31].y = sp14[temp_r31].z = 0; + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r26 = temp_r28[temp_r31]; + for (temp_r29 = temp_r31 + 1; temp_r29 < 4; temp_r29++) { + temp_r25 = temp_r28[temp_r29]; + VECSubtract(&temp_r26->trans, &temp_r25->trans, &sp8); + temp_f31 = VECMag(&sp8); + if (temp_f31 < 100.0) { + VECNormalize(&sp8, &sp8); + temp_f30 = 0.0001f + (0.5f * (100.0 - temp_f31)); + VECScale(&sp8, &sp8, temp_f30); + VECAdd(&sp14[temp_r31], &sp8, &sp14[temp_r31]); + VECSubtract(&sp14[temp_r29], &sp8, &sp14[temp_r29]); + temp_r27++; + } + } + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = temp_r28[temp_r31]; + VECAdd(&temp_r30->trans, &sp14[temp_r31], &temp_r30->trans); + sp8.x = temp_r30->trans.x; + sp8.y = 0; + sp8.z = temp_r30->trans.z; + temp_f31 = VECMag(&sp8); + if (temp_f31 > 500.0) { + VECNormalize(&sp8, &sp8); + temp_r30->trans.x = 500.0 * sp8.x; + temp_r30->trans.z = 500.0 * sp8.z; + } + } + return temp_r27; } Vec lbl_1_data_1E8 = { 0, 0, 200 }; -Vec lbl_1_data_1F4[3] = { - { -300, 0, -200 }, - { 0, 0, -200 }, - { 300, 0, -200 } -}; -s32 lbl_1_data_218[6][3] = { - { 0, 1, 2 }, - { 0, 2, 1 }, - { 1, 0, 2 }, - { 1, 2, 0 }, - { 2, 0, 1 }, - { 2, 1, 0 } -}; +Vec lbl_1_data_1F4[3] = { { -300, 0, -200 }, { 0, 0, -200 }, { 300, 0, -200 } }; +s32 lbl_1_data_218[6][3] = { { 0, 1, 2 }, { 0, 2, 1 }, { 1, 0, 2 }, { 1, 2, 0 }, { 2, 0, 1 }, { 2, 1, 0 } }; void fn_1_52BC(void) { - float sp14[3]; - Vec sp8; - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - - s32 temp_r31; - s32 temp_r30; - Bss930Work *temp_r29; - s32 temp_r28; - temp_r29 = lbl_1_bss_930[0][0]->data; - temp_r29->unk64 = lbl_1_data_1E8; - temp_f29 = -1; - for(temp_r30=0; temp_r30<6; temp_r30++) { - temp_f31 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - VECSubtract(&lbl_1_data_1F4[temp_r31], &lbl_1_bss_930[1][lbl_1_data_218[temp_r30][temp_r31]]->trans, &sp8); - sp14[temp_r31] = VECMag(&sp8); - temp_f31 += sp14[temp_r31]; - } - temp_f28 = temp_f31/3; - temp_f30 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_f30 += fabs(sp14[temp_r31]-temp_f28); - } - if(temp_f29 < 0 || temp_f30+temp_f31 < temp_f29) { - temp_f29 = temp_f30+temp_f31; - temp_r28 = temp_r30; - } - } - for(temp_r30=0; temp_r30<3; temp_r30++) { - temp_r29 = lbl_1_bss_930[1][lbl_1_data_218[temp_r28][temp_r30]]->data; - temp_r29->unk64 = lbl_1_data_1F4[temp_r30]; - } + float sp14[3]; + Vec sp8; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + s32 temp_r31; + s32 temp_r30; + Bss930Work *temp_r29; + s32 temp_r28; + temp_r29 = lbl_1_bss_930[0][0]->data; + temp_r29->unk64 = lbl_1_data_1E8; + temp_f29 = -1; + for (temp_r30 = 0; temp_r30 < 6; temp_r30++) { + temp_f31 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + VECSubtract(&lbl_1_data_1F4[temp_r31], &lbl_1_bss_930[1][lbl_1_data_218[temp_r30][temp_r31]]->trans, &sp8); + sp14[temp_r31] = VECMag(&sp8); + temp_f31 += sp14[temp_r31]; + } + temp_f28 = temp_f31 / 3; + temp_f30 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_f30 += fabs(sp14[temp_r31] - temp_f28); + } + if (temp_f29 < 0 || temp_f30 + temp_f31 < temp_f29) { + temp_f29 = temp_f30 + temp_f31; + temp_r28 = temp_r30; + } + } + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + temp_r29 = lbl_1_bss_930[1][lbl_1_data_218[temp_r28][temp_r30]]->data; + temp_r29->unk64 = lbl_1_data_1F4[temp_r30]; + } } typedef struct unkstruct_5530 { - s32 unk0; - float unk4; - float unk8; - Vec unkC; + s32 unk0; + float unk4; + float unk8; + Vec unkC; } UnkStruct5530; s32 fn_1_5530(omObjData *arg0, Vec *arg1, Vec *arg2) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - - s32 temp_r30; - s32 temp_r29; - omObjData *temp_r28; - s32 temp_r27; - - omObjData **temp_r24; - s32 temp_r23; - - UnkStruct5530 spB4[4]; - Mtx sp84; - Vec sp78; - Vec sp6C; - Vec sp60; - Vec sp54; - Vec sp48; - Vec sp3C; - Vec sp30; - Vec sp24; - s32 sp14[4]; - float spC[2]; - Bss930Work *sp8; - sp8 = arg0->data; - temp_r24 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - temp_r23 = 0; - sp54.x = arg1->x; - sp54.y = arg1->y; - sp54.z = arg1->z; - VECSubtract(&sp54, &arg0->trans, &sp48); - temp_f30 = VECMag(&sp48); - for(temp_r30=0; temp_r30<4; temp_r30++) { - sp14[temp_r30] = 0; - } - while(1) { - for(temp_r30=0, temp_r29=0; temp_r30<4; temp_r30++) { - temp_r28 = temp_r24[temp_r30]; - if(arg0 == temp_r28 || sp14[temp_r30]) { - continue; - } - temp_f31 = ((temp_r28->trans.x*sp48.x)-(arg0->trans.x*sp48.x)+(temp_r28->trans.y*sp48.y)-(arg0->trans.y*sp48.y)+(temp_r28->trans.z*sp48.z)-(arg0->trans.z*sp48.z))/VECMag2Point(&sp48); - if(temp_f31 < 0.0f || temp_f31 >= 1.0f) { - continue; - } - VECSubtract(&temp_r28->trans, &arg0->trans, &sp3C); - VECCrossProduct(&sp48, &sp3C, &sp24); - sp60.x = (temp_f31*sp48.x)+arg0->trans.x; - sp60.y = (temp_f31*sp48.y)+arg0->trans.y; - sp60.z = (temp_f31*sp48.z)+arg0->trans.z; - spB4[temp_r29].unkC = sp60; - VECSubtract(&temp_r28->trans, &sp60, &sp3C); - if(sp24.y < 0.0f) { - spB4[temp_r29].unk8 = VECMag(&sp3C); - } else { - spB4[temp_r29].unk8 = -VECMag(&sp3C); - } - VECSubtract(&sp60, &arg0->trans, &sp3C); - spB4[temp_r29].unk4 = VECMag(&sp3C); - spB4[temp_r29].unk0 = temp_r30; - temp_r29++; - } - if(temp_r29 == 0) { - break; - } - for(temp_r30=0; temp_r30 spB4[temp_r27].unk4) { - spB4[3] = spB4[temp_r30]; - spB4[temp_r30] = spB4[temp_r27]; - spB4[temp_r27] = spB4[3]; - } - } - } - for(temp_r30=0; temp_r30 50.0) { - sp14[spB4[temp_r30].unk0] = 1; - VECSubtract(&temp_r24[spB4[temp_r30].unk0]->trans, &arg0->trans, &sp3C); - temp_f28 = VECMag(&sp3C); - if(0.0f != temp_f28) { - VECNormalize(&sp3C, &sp3C); - temp_f31 = 100.0/temp_f28; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - } else if(temp_f31 > 1.0f) { - temp_f31 = 1.0f; - } - temp_f29 = asinf(temp_f31); - MTXRotRad(sp84, 'Y', -temp_f29); - MTXMultVec(sp84, &sp3C, &sp30); - sp6C.x = arg0->trans.x+(sp30.x*temp_f30); - sp6C.y = arg0->trans.y+(sp30.y*temp_f30); - sp6C.z = arg0->trans.z+(sp30.z*temp_f30); - VECSubtract(&sp54, &sp6C, &sp30); - spC[0] = VECMag(&sp30); - MTXRotRad(sp84, 'Y', temp_f29); - MTXMultVec(sp84, &sp3C, &sp30); - sp78.x = arg0->trans.x+(sp30.x*temp_f30); - sp78.y = arg0->trans.y+(sp30.y*temp_f30); - sp78.z = arg0->trans.z+(sp30.z*temp_f30); - VECSubtract(&sp54, &sp78, &sp30); - spC[1] = VECMag(&sp30); - if(spC[0] < spC[1]) { - sp54 = sp6C; - } else { - sp54 = sp78; - } - temp_r23 = 1; - break; - } - } - } - if(temp_r30 >= temp_r29) { - break; - } - VECSubtract(&sp54, &arg0->trans, &sp48); - } - arg2->x = sp54.x; - arg2->y = sp54.y; - arg2->z = sp54.z; - return temp_r23; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + s32 temp_r30; + s32 temp_r29; + omObjData *temp_r28; + s32 temp_r27; + + omObjData **temp_r24; + s32 temp_r23; + + UnkStruct5530 spB4[4]; + Mtx sp84; + Vec sp78; + Vec sp6C; + Vec sp60; + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + s32 sp14[4]; + float spC[2]; + Bss930Work *sp8; + sp8 = arg0->data; + temp_r24 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r23 = 0; + sp54.x = arg1->x; + sp54.y = arg1->y; + sp54.z = arg1->z; + VECSubtract(&sp54, &arg0->trans, &sp48); + temp_f30 = VECMag(&sp48); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + sp14[temp_r30] = 0; + } + while (1) { + for (temp_r30 = 0, temp_r29 = 0; temp_r30 < 4; temp_r30++) { + temp_r28 = temp_r24[temp_r30]; + if (arg0 == temp_r28 || sp14[temp_r30]) { + continue; + } + temp_f31 = ((temp_r28->trans.x * sp48.x) - (arg0->trans.x * sp48.x) + (temp_r28->trans.y * sp48.y) - (arg0->trans.y * sp48.y) + + (temp_r28->trans.z * sp48.z) - (arg0->trans.z * sp48.z)) + / VECMag2Point(&sp48); + if (temp_f31 < 0.0f || temp_f31 >= 1.0f) { + continue; + } + VECSubtract(&temp_r28->trans, &arg0->trans, &sp3C); + VECCrossProduct(&sp48, &sp3C, &sp24); + sp60.x = (temp_f31 * sp48.x) + arg0->trans.x; + sp60.y = (temp_f31 * sp48.y) + arg0->trans.y; + sp60.z = (temp_f31 * sp48.z) + arg0->trans.z; + spB4[temp_r29].unkC = sp60; + VECSubtract(&temp_r28->trans, &sp60, &sp3C); + if (sp24.y < 0.0f) { + spB4[temp_r29].unk8 = VECMag(&sp3C); + } + else { + spB4[temp_r29].unk8 = -VECMag(&sp3C); + } + VECSubtract(&sp60, &arg0->trans, &sp3C); + spB4[temp_r29].unk4 = VECMag(&sp3C); + spB4[temp_r29].unk0 = temp_r30; + temp_r29++; + } + if (temp_r29 == 0) { + break; + } + for (temp_r30 = 0; temp_r30 < temp_r29 - 1; temp_r30++) { + for (temp_r27 = temp_r30 + 1; temp_r27 < temp_r29; temp_r27++) { + if (spB4[temp_r30].unk4 > spB4[temp_r27].unk4) { + spB4[3] = spB4[temp_r30]; + spB4[temp_r30] = spB4[temp_r27]; + spB4[temp_r27] = spB4[3]; + } + } + } + for (temp_r30 = 0; temp_r30 < temp_r29; temp_r30++) { + if (fabs(spB4[temp_r30].unk8) < 100.0 && spB4[temp_r30].unk4 > 50.0) { + sp14[spB4[temp_r30].unk0] = 1; + VECSubtract(&temp_r24[spB4[temp_r30].unk0]->trans, &arg0->trans, &sp3C); + temp_f28 = VECMag(&sp3C); + if (0.0f != temp_f28) { + VECNormalize(&sp3C, &sp3C); + temp_f31 = 100.0 / temp_f28; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + } + else if (temp_f31 > 1.0f) { + temp_f31 = 1.0f; + } + temp_f29 = asinf(temp_f31); + MTXRotRad(sp84, 'Y', -temp_f29); + MTXMultVec(sp84, &sp3C, &sp30); + sp6C.x = arg0->trans.x + (sp30.x * temp_f30); + sp6C.y = arg0->trans.y + (sp30.y * temp_f30); + sp6C.z = arg0->trans.z + (sp30.z * temp_f30); + VECSubtract(&sp54, &sp6C, &sp30); + spC[0] = VECMag(&sp30); + MTXRotRad(sp84, 'Y', temp_f29); + MTXMultVec(sp84, &sp3C, &sp30); + sp78.x = arg0->trans.x + (sp30.x * temp_f30); + sp78.y = arg0->trans.y + (sp30.y * temp_f30); + sp78.z = arg0->trans.z + (sp30.z * temp_f30); + VECSubtract(&sp54, &sp78, &sp30); + spC[1] = VECMag(&sp30); + if (spC[0] < spC[1]) { + sp54 = sp6C; + } + else { + sp54 = sp78; + } + temp_r23 = 1; + break; + } + } + } + if (temp_r30 >= temp_r29) { + break; + } + VECSubtract(&sp54, &arg0->trans, &sp48); + } + arg2->x = sp54.x; + arg2->y = sp54.y; + arg2->z = sp54.z; + return temp_r23; } float fn_1_5D78(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE); void fn_1_5C34(omObjData *object) { - float temp_f31; - omObjData *temp_r31; - Bss930Work4C *temp_r30; - Bss930Work *temp_r28; - Bss930Work *temp_r27; - temp_r31 = lbl_1_bss_930[0][0]; - temp_r27 = object->data; - temp_r28 = temp_r31->data; - temp_r30 = temp_r27->unk4C; - if(temp_r28->unk46 > 0 || !temp_r30->field_0_bit0) { - return; - } - temp_f31 = fn_1_5D78(object->trans.x, object->trans.z, temp_r30->unk4, temp_r30->unkC, temp_r31->trans.x, temp_r31->trans.z, 50.0f); - if(temp_f31 >= 0.0f && temp_f31 < 1.0f) { - temp_r28->field_0_bit0 = 1; - } + float temp_f31; + omObjData *temp_r31; + Bss930Work4C *temp_r30; + Bss930Work *temp_r28; + Bss930Work *temp_r27; + temp_r31 = lbl_1_bss_930[0][0]; + temp_r27 = object->data; + temp_r28 = temp_r31->data; + temp_r30 = temp_r27->unk4C; + if (temp_r28->unk46 > 0 || !temp_r30->field_0_bit0) { + return; + } + temp_f31 = fn_1_5D78(object->trans.x, object->trans.z, temp_r30->unk4, temp_r30->unkC, temp_r31->trans.x, temp_r31->trans.z, 50.0f); + if (temp_f31 >= 0.0f && temp_f31 < 1.0f) { + temp_r28->field_0_bit0 = 1; + } } void fn_1_5D18(omObjData *object) { - Bss930Work *temp_r31; - temp_r31 = object->data; - CharModelKill(temp_r31->unk0C); - if(temp_r31->unk4C != NULL) { - HuMemDirectFree(temp_r31->unk4C); - } - HuMemDirectFree(temp_r31); - temp_r31 = NULL; + Bss930Work *temp_r31; + temp_r31 = object->data; + CharModelKill(temp_r31->unk0C); + if (temp_r31->unk4C != NULL) { + HuMemDirectFree(temp_r31->unk4C); + } + HuMemDirectFree(temp_r31); + temp_r31 = NULL; } float fn_1_5D78(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE) { - float spC; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - float temp_f26; - float temp_f25; - temp_f26 = (arg9 * arg9) + (((argB * argB) + ((arg8 * arg8) + ((argA * argA) - (2.0f * arg8 * argA)))) - (2.0f * arg9 * argB)); - temp_f27 = 2.0f * (((arg9 * argD) + (((arg9 * argB) + (((arg8 * argC) + ((arg8 * argA) - (argA * argC))) - (arg8 * arg8))) - (argB * argD))) - (arg9 * arg9)); + float spC; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + temp_f26 = (arg9 * arg9) + (((argB * argB) + ((arg8 * arg8) + ((argA * argA) - (2.0f * arg8 * argA)))) - (2.0f * arg9 * argB)); + temp_f27 = 2.0f + * (((arg9 * argD) + (((arg9 * argB) + (((arg8 * argC) + ((arg8 * argA) - (argA * argC))) - (arg8 * arg8))) - (argB * argD))) - (arg9 * arg9)); temp_f25 = ((argD * argD) + (((arg9 * arg9) + ((argC * argC) + ((arg8 * arg8) - (2.0f * arg8 * argC)))) - (2.0f * arg9 * argD))) - (argE * argE); - if(0.0f == temp_f26) { - if(0.0f != temp_f27) { - return -temp_f25/temp_f27; - } else { - return -1; - } - } else { - temp_f30 = (temp_f27 * temp_f27) - (4.0f * temp_f26 * temp_f25); - if(temp_f30 < 0.0) { - return -1; - } - temp_f30 = sqrtf(temp_f30); - temp_f29 = (-temp_f27 + temp_f30) / (2.0f * temp_f26); - temp_f28 = (-temp_f27 - temp_f30) / (2.0f * temp_f26); - if(temp_f29 < temp_f28) { - if(temp_f29 >= 0.0f && temp_f29 < 1.0f) { - return temp_f29; - } else { - if(temp_f28 >= 0.0f && temp_f28 < 1.0f) { - return temp_f28; - } - } - } else { - if(temp_f28 >= 0.0f && temp_f28 < 1.0f) { - return temp_f28; - } else { - if(temp_f29 >= 0.0f && temp_f29 < 1.0f) { - return temp_f29; - } - } - } - return -1; - } + if (0.0f == temp_f26) { + if (0.0f != temp_f27) { + return -temp_f25 / temp_f27; + } + else { + return -1; + } + } + else { + temp_f30 = (temp_f27 * temp_f27) - (4.0f * temp_f26 * temp_f25); + if (temp_f30 < 0.0) { + return -1; + } + temp_f30 = sqrtf(temp_f30); + temp_f29 = (-temp_f27 + temp_f30) / (2.0f * temp_f26); + temp_f28 = (-temp_f27 - temp_f30) / (2.0f * temp_f26); + if (temp_f29 < temp_f28) { + if (temp_f29 >= 0.0f && temp_f29 < 1.0f) { + return temp_f29; + } + else { + if (temp_f28 >= 0.0f && temp_f28 < 1.0f) { + return temp_f28; + } + } + } + else { + if (temp_f28 >= 0.0f && temp_f28 < 1.0f) { + return temp_f28; + } + else { + if (temp_f29 >= 0.0f && temp_f29 < 1.0f) { + return temp_f29; + } + } + } + return -1; + } } void fn_1_613C(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - - if(!particle->unk_00) { - particle->unk_00 = 1; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { - temp_r31->unk08.x = (4.0f*((1.0f/256.0f)*frand8()))+8; - temp_r31->unk34.x = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); - temp_r31->unk34.y = (64.0f*((1.0f/256.0f)*frand8())); - temp_r31->unk34.z = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); - temp_r31->unk30 = 360.0f*((1.0f/256.0f)*frand8()); - temp_r31->unk00_s16 = frand8(); - temp_r31->unk02 = (frand() & 0x3)+4; - } - temp_f29 = temp_f28 = 0; - } else { - temp_f29 = (particle->unk_04.x-model->pos.x); - temp_f28 = (particle->unk_04.z-model->pos.z); - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { - temp_f30 = temp_r31->unk00_s16/255.0f; - temp_f31 = temp_f30*temp_f30; - temp_r31->unk34.x += temp_f29*temp_f31; - temp_r31->unk34.y = 60.0f*temp_f30; - temp_r31->unk34.z += temp_f28*temp_f31; - temp_r31->unk40.a = 255.0f*(1.0f-temp_f30); - temp_f31 = 0.5*(1+sind(270.0f*temp_f30)); - temp_r31->unk2C = temp_f31*(temp_r31->unk08.x*temp_f31); - temp_r31->unk00_s16 += temp_r31->unk02; - if(temp_r31->unk00_s16 > 255) { - temp_r31->unk34.x = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); - temp_r31->unk34.y = 0; - temp_r31->unk34.z = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); - temp_r31->unk00_s16 = 0; - } - } - DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - particle->unk_04.x = model->pos.x; - particle->unk_04.z = model->pos.z; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + + if (!particle->unk_00) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) { + temp_r31->unk08.x = (4.0f * ((1.0f / 256.0f) * frand8())) + 8; + temp_r31->unk34.x = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1)); + temp_r31->unk34.y = (64.0f * ((1.0f / 256.0f) * frand8())); + temp_r31->unk34.z = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1)); + temp_r31->unk30 = 360.0f * ((1.0f / 256.0f) * frand8()); + temp_r31->unk00 = frand8(); + temp_r31->unk02 = (frand() & 0x3) + 4; + } + temp_f29 = temp_f28 = 0; + } + else { + temp_f29 = (particle->unk_04.x - model->pos.x); + temp_f28 = (particle->unk_04.z - model->pos.z); + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) { + temp_f30 = temp_r31->unk00 / 255.0f; + temp_f31 = temp_f30 * temp_f30; + temp_r31->unk34.x += temp_f29 * temp_f31; + temp_r31->unk34.y = 60.0f * temp_f30; + temp_r31->unk34.z += temp_f28 * temp_f31; + temp_r31->unk40.a = 255.0f * (1.0f - temp_f30); + temp_f31 = 0.5 * (1 + sind(270.0f * temp_f30)); + temp_r31->unk2C = temp_f31 * (temp_r31->unk08.x * temp_f31); + temp_r31->unk00 += temp_r31->unk02; + if (temp_r31->unk00 > 255) { + temp_r31->unk34.x = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1)); + temp_r31->unk34.y = 0; + temp_r31->unk34.z = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1)); + temp_r31->unk00 = 0; + } + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + particle->unk_04.x = model->pos.x; + particle->unk_04.z = model->pos.z; } void fn_1_6640(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - HsfanimStruct01 *temp_r31; - s32 temp_r28; - s32 temp_r27; - GXColor sp8 = { 0, 0, 0, 255 }; - if(!particle->unk_00) { - particle->unk_00 = 1; - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r31++, temp_r28++) { - temp_r31->unk2C = 15; - temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; - temp_f31 = particle->unk_10.x+(10.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); - temp_f30 = 100.0f*(0.1f*((1.0f/256.0f)*((s32)frand() & 0xFF)))+10; - temp_r31->unk08.x = temp_f30*sind(temp_f31); - temp_r31->unk08.y = 100.0f*(0.02f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); - temp_r31->unk08.z = temp_f30*cosd(temp_f31); - temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255; - temp_r31->unk40.a = 0; - temp_r31->unk00_s16 = ((float)particle->unk_3C)*((float)temp_r28/(float)particle->unk_30); - } - } else { - temp_f29 = (particle->unk_04.x-model->pos.x); - temp_f28 = (particle->unk_04.z-model->pos.z); - } - temp_r27 = 0; - temp_r31 = particle->unk_48; - for(temp_r28=0; temp_r28unk_30; temp_r31++, temp_r28++) { - if(temp_r31->unk00_s16 >= 0) { - if(temp_r31->unk00_s16 == 0) { - temp_r31->unk34.x += temp_r31->unk08.x+temp_f29; - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk34.z += temp_r31->unk08.z+temp_f28; - temp_r31->unk08.y += -1.0000001f; - if(temp_r31->unk40.a) { - if(--temp_r31->unk40.a == 0) { - temp_r31->unk00_s16 = -1; - } - } - if(temp_r31->unk34.y < 0.0f) { - temp_r31->unk34.y = 0; - temp_r31->unk00_s16 = -1; - temp_r31->unk40.a = 0; - } - } else { - if(--temp_r31->unk00_s16 == 0) { - temp_r31->unk40.a = 255; - } - } - } else { - temp_r27++; - } - } - if(temp_r27 == particle->unk_30) { - model->attr |= 0x1; - } - DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - particle->unk_04.x = model->pos.x; - particle->unk_04.z = model->pos.z; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r28; + s32 temp_r27; + GXColor sp8 = { 0, 0, 0, 255 }; + if (!particle->unk_00) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r31++, temp_r28++) { + temp_r31->unk2C = 15; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_f31 = particle->unk_10.x + (10.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f)); + temp_f30 = 100.0f * (0.1f * ((1.0f / 256.0f) * ((s32)frand() & 0xFF))) + 10; + temp_r31->unk08.x = temp_f30 * sind(temp_f31); + temp_r31->unk08.y = 100.0f * (0.02f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f)); + temp_r31->unk08.z = temp_f30 * cosd(temp_f31); + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255; + temp_r31->unk40.a = 0; + temp_r31->unk00 = ((float)particle->unk_3C) * ((float)temp_r28 / (float)particle->unk_30); + } + } + else { + temp_f29 = (particle->unk_04.x - model->pos.x); + temp_f28 = (particle->unk_04.z - model->pos.z); + } + temp_r27 = 0; + temp_r31 = particle->unk_48; + for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r31++, temp_r28++) { + if (temp_r31->unk00 >= 0) { + if (temp_r31->unk00 == 0) { + temp_r31->unk34.x += temp_r31->unk08.x + temp_f29; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z + temp_f28; + temp_r31->unk08.y += -1.0000001f; + if (temp_r31->unk40.a) { + if (--temp_r31->unk40.a == 0) { + temp_r31->unk00 = -1; + } + } + if (temp_r31->unk34.y < 0.0f) { + temp_r31->unk34.y = 0; + temp_r31->unk00 = -1; + temp_r31->unk40.a = 0; + } + } + else { + if (--temp_r31->unk00 == 0) { + temp_r31->unk40.a = 255; + } + } + } + else { + temp_r27++; + } + } + if (temp_r27 == particle->unk_30) { + model->attr |= 0x1; + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + particle->unk_04.x = model->pos.x; + particle->unk_04.z = model->pos.z; } void fn_1_6AE8(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s16 temp_r28; - s32 temp_r27; // ! - uninitialized - - if(!particle->unk_00) { - particle->unk_00 = 1; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { - temp_r31->unk2C = 50; - temp_r31->unk34.x = 0; - temp_r31->unk34.y = 0; - temp_r31->unk34.z = 0; - temp_r31->unk08.x = 100.0f*(0.05f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); - temp_r31->unk08.y = 100.0f*(0.05f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); - temp_r31->unk08.z = 100.0f*(0.05f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); - temp_r31->unk40.a = 128; - temp_r31->unk00_s16 = 0; - } - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk00_s16 < 0) { - temp_r27++; - continue; - } - temp_r31->unk34.x += temp_r31->unk08.x; - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk34.z += temp_r31->unk08.z; - temp_r31->unk08.x *= 0.92f; - temp_r31->unk08.y *= 0.92f; - temp_r31->unk08.z *= 0.92f; - temp_r28 = temp_r31->unk40.a; - temp_r28 -= 4; - if(temp_r28 < 0) { - temp_r31->unk00_s16 = -1; - temp_r28 = 0; - } - temp_r31->unk40.a = temp_r28; - } - if(temp_r27 == particle->unk_30) { - model->attr |= 0x1; - } - DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s16 temp_r28; + s32 temp_r27; // ! - uninitialized + + if (!particle->unk_00) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) { + temp_r31->unk2C = 50; + temp_r31->unk34.x = 0; + temp_r31->unk34.y = 0; + temp_r31->unk34.z = 0; + temp_r31->unk08.x = 100.0f * (0.05f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f)); + temp_r31->unk08.y = 100.0f * (0.05f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f)); + temp_r31->unk08.z = 100.0f * (0.05f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f)); + temp_r31->unk40.a = 128; + temp_r31->unk00 = 0; + } + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk00 < 0) { + temp_r27++; + continue; + } + temp_r31->unk34.x += temp_r31->unk08.x; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z; + temp_r31->unk08.x *= 0.92f; + temp_r31->unk08.y *= 0.92f; + temp_r31->unk08.z *= 0.92f; + temp_r28 = temp_r31->unk40.a; + temp_r28 -= 4; + if (temp_r28 < 0) { + temp_r31->unk00 = -1; + temp_r28 = 0; + } + temp_r31->unk40.a = temp_r28; + } + if (temp_r27 == particle->unk_30) { + model->attr |= 0x1; + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_6DEC(s16 arg0, u32 arg1) { - HsfData *temp_r31; - HsfMaterial *temp_r30; - s32 temp_r29; - ModelData *temp_r28; - temp_r28 = &Hu3DData[arg0]; - temp_r31 = temp_r28->hsfData; - temp_r30 = temp_r31->material; - for(temp_r29=0; temp_r29materialCnt; temp_r29++, temp_r30++) { - temp_r30->flags |= arg1; - } - + HsfData *temp_r31; + HsfMaterial *temp_r30; + s32 temp_r29; + ModelData *temp_r28; + temp_r28 = &Hu3DData[arg0]; + temp_r31 = temp_r28->hsfData; + temp_r30 = temp_r31->material; + for (temp_r29 = 0; temp_r29 < temp_r31->materialCnt; temp_r29++, temp_r30++) { + temp_r30->flags |= arg1; + } } void fn_1_709C(s32 arg0, s32 arg1, float arg2); @@ -1784,61 +1777,61 @@ void fn_1_72EC(omObjData *object); void fn_1_6E5C(omObjData *object) { - Vec sp14; - Vec sp8; - - fn_1_709C(0, 0, 0); - sp14.x = (((sind(CRot.y)*cosd(CRot.x))*CZoom)+Center.x); - sp14.y = (-sind(CRot.x)*CZoom)+Center.y; - sp14.z = ((cosd(CRot.y)*cosd(CRot.x))*CZoom)+Center.z; - VECSubtract(&Center, &sp14, &sp8); - VECNormalize(&sp8, &sp8); - HuAudFXListnerSetEX(&sp14, &sp8, 10000, 566.6667, 0, 300, 300); - object->func = fn_1_72EC; + Vec sp14; + Vec sp8; + + fn_1_709C(0, 0, 0); + sp14.x = (((sind(CRot.y) * cosd(CRot.x)) * CZoom) + Center.x); + sp14.y = (-sind(CRot.x) * CZoom) + Center.y; + sp14.z = ((cosd(CRot.y) * cosd(CRot.x)) * CZoom) + Center.z; + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerSetEX(&sp14, &sp8, 10000, 566.6667, 0, 300, 300); + object->func = fn_1_72EC; } void fn_1_709C(s32 arg0, s32 arg1, float arg2) { - CZoom = lbl_1_data_0[arg0].zoom+(arg2*(lbl_1_data_0[arg1].zoom-lbl_1_data_0[arg0].zoom)); - Center.x = lbl_1_data_0[arg0].pos.x+(arg2*(lbl_1_data_0[arg1].pos.x-lbl_1_data_0[arg0].pos.x)); - Center.y = lbl_1_data_0[arg0].pos.y+(arg2*(lbl_1_data_0[arg1].pos.y-lbl_1_data_0[arg0].pos.y)); - Center.z = lbl_1_data_0[arg0].pos.z+(arg2*(lbl_1_data_0[arg1].pos.z-lbl_1_data_0[arg0].pos.z)); - CRot.x = lbl_1_data_0[arg0].rot.x+(arg2*(lbl_1_data_0[arg1].rot.x-lbl_1_data_0[arg0].rot.x)); - CRot.y = lbl_1_data_0[arg0].rot.y+(arg2*(lbl_1_data_0[arg1].rot.y-lbl_1_data_0[arg0].rot.y)); - CRot.z = lbl_1_data_0[arg0].rot.z+(arg2*(lbl_1_data_0[arg1].rot.z-lbl_1_data_0[arg0].rot.z)); + CZoom = lbl_1_data_0[arg0].zoom + (arg2 * (lbl_1_data_0[arg1].zoom - lbl_1_data_0[arg0].zoom)); + Center.x = lbl_1_data_0[arg0].pos.x + (arg2 * (lbl_1_data_0[arg1].pos.x - lbl_1_data_0[arg0].pos.x)); + Center.y = lbl_1_data_0[arg0].pos.y + (arg2 * (lbl_1_data_0[arg1].pos.y - lbl_1_data_0[arg0].pos.y)); + Center.z = lbl_1_data_0[arg0].pos.z + (arg2 * (lbl_1_data_0[arg1].pos.z - lbl_1_data_0[arg0].pos.z)); + CRot.x = lbl_1_data_0[arg0].rot.x + (arg2 * (lbl_1_data_0[arg1].rot.x - lbl_1_data_0[arg0].rot.x)); + CRot.y = lbl_1_data_0[arg0].rot.y + (arg2 * (lbl_1_data_0[arg1].rot.y - lbl_1_data_0[arg0].rot.y)); + CRot.z = lbl_1_data_0[arg0].rot.z + (arg2 * (lbl_1_data_0[arg1].rot.z - lbl_1_data_0[arg0].rot.z)); } float lbl_1_data_260[2] = { 0, 0 }; void fn_1_72EC(omObjData *object) { - Vec sp14; - Vec sp8; - switch(fn_1_1240()) { - case 2: - fn_1_709C(0, 1, sind(90.0f*lbl_1_data_260[0])); - if(lbl_1_data_260[0] < 1.0f) { - lbl_1_data_260[0] += 5.0f/240.0f; - if(lbl_1_data_260[0] > 1.0f) { - lbl_1_data_260[0] = 1.0f; - } - } - break; - - case 5: - fn_1_709C(1, 0, sind(90.0f*lbl_1_data_260[1])); - if(lbl_1_data_260[1] < 1.0f) { - lbl_1_data_260[1] += 10.0f/360.0f; - if(lbl_1_data_260[1] > 1.0f) { - lbl_1_data_260[1] = 1.0f; - } - } - break; - } - sp14.x = (((sind(CRot.y)*cosd(CRot.x))*CZoom)+Center.x); - sp14.y = (-sind(CRot.x)*CZoom)+Center.y; - sp14.z = ((cosd(CRot.y)*cosd(CRot.x))*CZoom)+Center.z; - VECSubtract(&Center, &sp14, &sp8); - VECNormalize(&sp8, &sp8); - HuAudFXListnerUpdate(&sp14, &sp8); + Vec sp14; + Vec sp8; + switch (fn_1_1240()) { + case 2: + fn_1_709C(0, 1, sind(90.0f * lbl_1_data_260[0])); + if (lbl_1_data_260[0] < 1.0f) { + lbl_1_data_260[0] += 5.0f / 240.0f; + if (lbl_1_data_260[0] > 1.0f) { + lbl_1_data_260[0] = 1.0f; + } + } + break; + + case 5: + fn_1_709C(1, 0, sind(90.0f * lbl_1_data_260[1])); + if (lbl_1_data_260[1] < 1.0f) { + lbl_1_data_260[1] += 10.0f / 360.0f; + if (lbl_1_data_260[1] > 1.0f) { + lbl_1_data_260[1] = 1.0f; + } + } + break; + } + sp14.x = (((sind(CRot.y) * cosd(CRot.x)) * CZoom) + Center.x); + sp14.y = (-sind(CRot.x) * CZoom) + Center.y; + sp14.z = ((cosd(CRot.y) * cosd(CRot.x)) * CZoom) + Center.z; + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); } diff --git a/src/REL/m416Dll/map.c b/src/REL/m416Dll/map.c index 76dd799c..ea6a46bd 100644 --- a/src/REL/m416Dll/map.c +++ b/src/REL/m416Dll/map.c @@ -1,40 +1,35 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfanim.h" -#include "game/hsfmotion.h" -#include "game/audio.h" -#include "game/wipe.h" -#include "game/sprite.h" -#include "game/chrman.h" #include "game/pad.h" -#include "game/gamework_data.h" -#include "game/minigame_seq.h" -#include "game/frand.h" +#include "game/sprite.h" +#include "game/wipe.h" -#include "math.h" #include "ext_math.h" +#include "math.h" #include "REL/m416Dll.h" GXColor lbl_1_data_268 = { 0, 0, 0, 255 }; Vec lbl_1_data_26C[8] = { - { 70, 0, 70 }, - { 70, 0, -70 }, - { -70, 0, -70 }, - { -70, 0, 70 }, - { 70, 0, 70 }, - { 70, 0, -70 }, - { -70, 0, -70 }, - { -70, 0, 70 }, -}; -Vec lbl_1_data_2CC[2] = { - { 370, 615, -245 }, - { -370, 615, -245 } -}; -float lbl_1_data_2E4[2] = { - 0, 1 + { 70, 0, 70 }, + { 70, 0, -70 }, + { -70, 0, -70 }, + { -70, 0, 70 }, + { 70, 0, 70 }, + { 70, 0, -70 }, + { -70, 0, -70 }, + { -70, 0, 70 }, }; +Vec lbl_1_data_2CC[2] = { { 370, 615, -245 }, { -370, 615, -245 } }; +float lbl_1_data_2E4[2] = { 0, 1 }; omObjData *lbl_1_bss_118C; omObjData *lbl_1_bss_1188; @@ -58,274 +53,272 @@ void fn_1_8FF0(void); void fn_1_79D0(Process *objman) { - lbl_1_bss_118C = omAddObjEx(objman, 20, 2, 0, -1, fn_1_7A74); - lbl_1_bss_1188 = omAddObjEx(objman, 20, 10, 0, -1, fn_1_7F30); - fn_1_8EA0(); + lbl_1_bss_118C = omAddObjEx(objman, 20, 2, 0, -1, fn_1_7A74); + lbl_1_bss_1188 = omAddObjEx(objman, 20, 10, 0, -1, fn_1_7F30); + fn_1_8EA0(); } void fn_1_7A54(void) { - fn_1_8FF0(); + fn_1_8FF0(); } void fn_1_7A74(omObjData *object) { - s16 i; - object->model[0] = Hu3DModelCreateFile(0x2F0000); - Hu3DModelShadowMapSet(object->model[0]); - Hu3DModelLayerSet(object->model[0], 0); - object->trans.x = 0; - object->trans.y = 0; - object->trans.z = 0; - fn_1_8EB4(object->model[0]); - for(i=0; i<2; i++) { - lbl_1_bss_1174[i+2] = Hu3DLLightCreate(object->model[0], 0, 0, 0, 0, 0, 0, 0, 0, 0); - Hu3DLLightStaticSet(object->model[0], lbl_1_bss_1174[i+2], 1); - Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i+2], 45, 0.8, 3); - Hu3DLLightColorSet(object->model[0], lbl_1_bss_1174[i+2], 255, 160, 0, 255); - Hu3DLLightPosSet(object->model[0], lbl_1_bss_1174[i+2], lbl_1_data_2CC[i].x, 475, lbl_1_data_2CC[i].z, 0, 1, 0); - } - object->model[1] = Hu3DHookFuncCreate(fn_1_89BC); - Hu3DModelLayerSet(object->model[1], 1); - lbl_1_bss_1184 = GXGetTexBufferSize(640, 480, GX_TF_RGBA8, GX_FALSE, 0); - lbl_1_bss_1180 = HuMemDirectMallocNum(HEAP_DATA, lbl_1_bss_1184, MEMORY_DEFAULT_NUM); - memset(lbl_1_bss_1180, 0, lbl_1_bss_1184); - object->func = fn_1_7D74; + s16 i; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x00)); + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelLayerSet(object->model[0], 0); + object->trans.x = 0; + object->trans.y = 0; + object->trans.z = 0; + fn_1_8EB4(object->model[0]); + for (i = 0; i < 2; i++) { + lbl_1_bss_1174[i + 2] = Hu3DLLightCreate(object->model[0], 0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DLLightStaticSet(object->model[0], lbl_1_bss_1174[i + 2], 1); + Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i + 2], 45, 0.8, 3); + Hu3DLLightColorSet(object->model[0], lbl_1_bss_1174[i + 2], 255, 160, 0, 255); + Hu3DLLightPosSet(object->model[0], lbl_1_bss_1174[i + 2], lbl_1_data_2CC[i].x, 475, lbl_1_data_2CC[i].z, 0, 1, 0); + } + object->model[1] = Hu3DHookFuncCreate(fn_1_89BC); + Hu3DModelLayerSet(object->model[1], 1); + lbl_1_bss_1184 = GXGetTexBufferSize(640, 480, GX_TF_RGBA8, GX_FALSE, 0); + lbl_1_bss_1180 = HuMemDirectMallocNum(HEAP_DATA, lbl_1_bss_1184, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_1180, 0, lbl_1_bss_1184); + object->func = fn_1_7D74; } void fn_1_7D74(omObjData *object) { - s32 i; - for(i=0; i<2; i++) { - Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i+2], (15*sind(object->work[i]))+45, 0.8, 3); - object->work[i] += 8.0f; - if(object->work[i] > 360.0f) { - object->work[i] -= 360.0f; - } - } + s32 i; + for (i = 0; i < 2; i++) { + Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i + 2], (15 * sind(object->work[i])) + 45, 0.8, 3); + object->work[i] += 8.0f; + if (object->work[i] > 360.0f) { + object->work[i] -= 360.0f; + } + } } void fn_1_7F30(omObjData *object) { - Mtx sp68; - Mtx sp38; - Mtx sp8; - s32 temp_r30; - Vec *temp_r29; - s32 temp_r28; - s32 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - AnimData *temp_r23; - object->stat |= 0x100; - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(temp_r30 == 0) { - temp_r25 = Hu3DModelCreateFile(0x2F0001); - temp_r26 = temp_r25; - } else { - temp_r24 = Hu3DModelLink(temp_r25); - temp_r26 = temp_r24; - } - object->model[temp_r30] = temp_r26; - Hu3DModelLayerSet(temp_r26, 2); - fn_1_8EB4(object->model[temp_r30]); - Hu3DModelPosSet(object->model[temp_r30], lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); - } - temp_r23 = HuSprAnimReadFile(0x2F0006); - temp_r29 = &lbl_1_data_26C[0]; - for(temp_r30=0; temp_r30<2; temp_r30++) { - for(temp_r27=0; temp_r27<4; temp_r27++, temp_r29++) { - temp_r28 = (temp_r30*4)+2; - temp_r28 = temp_r27+temp_r28; - object->model[temp_r28] = Hu3DParticleCreate(temp_r23, 50); - Hu3DParticleHookSet(object->model[temp_r28], fn_1_613C); - Hu3DParticleBlendModeSet(object->model[temp_r28], 1); - Hu3DModelLayerSet(object->model[temp_r28], 6); - Hu3DModelScaleSet(object->model[temp_r28], 0.5f, 0.7f, 0.5f); - MTXTrans(sp68, lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); - MTXTrans(sp38, 0, -150, 0); - MTXConcat(sp68, sp38, sp68); - MTXTrans(sp8, temp_r29->x, temp_r29->y, temp_r29->z); - MTXConcat(sp68, sp8, sp68); - Hu3DModelPosSet(object->model[temp_r28], sp68[0][3], sp68[1][3], sp68[2][3]); - } - } - for(temp_r30=0; temp_r30<2; temp_r30++) { - lbl_1_bss_1174[temp_r30] = Hu3DLLightCreate(object->model[temp_r30], 0, 0, 0, 0, 0, 0, 0, 0, 0); - Hu3DLLightStaticSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1); - Hu3DLLightPointSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1000, 0.8, 3); - Hu3DLLightColorSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 255, 160, 0, 255); - Hu3DLLightPosSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], lbl_1_data_2CC[temp_r30].x, 475, lbl_1_data_2CC[temp_r30].z, 0, 1, 0); - } - object->work[0] = 0; - object->work[1] = 45; - lbl_1_bss_117C = 0; - object->func = fn_1_83B4; + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 temp_r30; + Vec *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + AnimData *temp_r23; + object->stat |= 0x100; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (temp_r30 == 0) { + temp_r25 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x01)); + temp_r26 = temp_r25; + } + else { + temp_r24 = Hu3DModelLink(temp_r25); + temp_r26 = temp_r24; + } + object->model[temp_r30] = temp_r26; + Hu3DModelLayerSet(temp_r26, 2); + fn_1_8EB4(object->model[temp_r30]); + Hu3DModelPosSet(object->model[temp_r30], lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); + } + temp_r23 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M416, 0x06)); + temp_r29 = &lbl_1_data_26C[0]; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + for (temp_r27 = 0; temp_r27 < 4; temp_r27++, temp_r29++) { + temp_r28 = (temp_r30 * 4) + 2; + temp_r28 = temp_r27 + temp_r28; + object->model[temp_r28] = Hu3DParticleCreate(temp_r23, 50); + Hu3DParticleHookSet(object->model[temp_r28], fn_1_613C); + Hu3DParticleBlendModeSet(object->model[temp_r28], 1); + Hu3DModelLayerSet(object->model[temp_r28], 6); + Hu3DModelScaleSet(object->model[temp_r28], 0.5f, 0.7f, 0.5f); + MTXTrans(sp68, lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); + MTXTrans(sp38, 0, -150, 0); + MTXConcat(sp68, sp38, sp68); + MTXTrans(sp8, temp_r29->x, temp_r29->y, temp_r29->z); + MTXConcat(sp68, sp8, sp68); + Hu3DModelPosSet(object->model[temp_r28], sp68[0][3], sp68[1][3], sp68[2][3]); + } + } + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + lbl_1_bss_1174[temp_r30] = Hu3DLLightCreate(object->model[temp_r30], 0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DLLightStaticSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1); + Hu3DLLightPointSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1000, 0.8, 3); + Hu3DLLightColorSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 255, 160, 0, 255); + Hu3DLLightPosSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], lbl_1_data_2CC[temp_r30].x, 475, lbl_1_data_2CC[temp_r30].z, 0, 1, 0); + } + object->work[0] = 0; + object->work[1] = 45; + lbl_1_bss_117C = 0; + object->func = fn_1_83B4; } void fn_1_83B4(omObjData *object) { - float temp_f31; - - s32 temp_r31; - Vec *temp_r29; - s32 temp_r28; - s32 temp_r27; - ModelData *temp_r26; - - Mtx sp130[2]; - Mtx sp100; - Mtx spD0; - Mtx spA0; - Mtx sp70; - Mtx sp40; - Mtx sp10; - float sp8[2]; - MTXIdentity(sp100); - MTXIdentity(sp130[0]); - MTXIdentity(sp130[1]); - MTXIdentity(spD0); - MTXIdentity(spA0); - MTXIdentity(sp70); - MTXIdentity(sp40); - MTXIdentity(sp10); - lbl_1_bss_117C = fmod(1+lbl_1_bss_117C, 360); - sp8[0] = 20*sind(lbl_1_bss_117C); - sp8[1] = 20*cosd(lbl_1_bss_117C); - if(fn_1_1240() == 6) { - for(temp_r31=0; temp_r31<2; temp_r31++) { - temp_f31 = sp8[temp_r31]-lbl_1_bss_116C[temp_r31]; - if(temp_f31*lbl_1_data_2E4[temp_r31] <= 0.0f) { - temp_r26 = &Hu3DData[object->model[temp_r31]]; - HuAudFXEmiterPlay(1467, &temp_r26->pos); - } - lbl_1_data_2E4[temp_r31] = temp_f31; - } - } - lbl_1_bss_116C[0] = sp8[0]; - lbl_1_bss_116C[1] = sp8[1]; - temp_r29 = &lbl_1_data_26C[0]; - for(temp_r31=0; temp_r31<2; temp_r31++) { - MTXRotDeg(sp130[temp_r31], 'y', lbl_1_bss_116C[temp_r31]); - for(temp_r28=0; temp_r28<4; temp_r28++, temp_r29++) { - temp_r27 = (temp_r31*4)+2; - temp_r27 = temp_r28+temp_r27; - MTXTrans(spA0, lbl_1_data_2CC[temp_r31].x, lbl_1_data_2CC[temp_r31].y, lbl_1_data_2CC[temp_r31].z); - MTXTrans(sp70, 0, -150, 0); - MTXConcat(spA0, sp70, spA0); - MTXTrans(sp40, temp_r29->x, temp_r29->y, temp_r29->z); - MTXConcat(sp130[temp_r31], sp40, sp10); - MTXConcat(spA0, sp10, spA0); - Hu3DModelPosSet(object->model[temp_r27], spA0[0][3], spA0[1][3], spA0[2][3]); - } - } - Hu3DModelRotSet(object->model[0], 0, lbl_1_bss_116C[0], 0); - Hu3DModelRotSet(object->model[1], 0, lbl_1_bss_116C[1], 0); - for(temp_r31=0; temp_r31<2; temp_r31++) { - Hu3DLLightPointSet(object->model[temp_r31], lbl_1_bss_1174[temp_r31], (15*sind(object->work[temp_r31]))+45, 0.9, 3); - object->work[temp_r31] += 8.0f; - if(object->work[temp_r31] > 360.0f) { - object->work[temp_r31] -= 360.0f; - } - } + float temp_f31; + + s32 temp_r31; + Vec *temp_r29; + s32 temp_r28; + s32 temp_r27; + ModelData *temp_r26; + + Mtx sp130[2]; + Mtx sp100; + Mtx spD0; + Mtx spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + float sp8[2]; + MTXIdentity(sp100); + MTXIdentity(sp130[0]); + MTXIdentity(sp130[1]); + MTXIdentity(spD0); + MTXIdentity(spA0); + MTXIdentity(sp70); + MTXIdentity(sp40); + MTXIdentity(sp10); + lbl_1_bss_117C = fmod(1 + lbl_1_bss_117C, 360); + sp8[0] = 20 * sind(lbl_1_bss_117C); + sp8[1] = 20 * cosd(lbl_1_bss_117C); + if (fn_1_1240() == 6) { + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + temp_f31 = sp8[temp_r31] - lbl_1_bss_116C[temp_r31]; + if (temp_f31 * lbl_1_data_2E4[temp_r31] <= 0.0f) { + temp_r26 = &Hu3DData[object->model[temp_r31]]; + HuAudFXEmiterPlay(1467, &temp_r26->pos); + } + lbl_1_data_2E4[temp_r31] = temp_f31; + } + } + lbl_1_bss_116C[0] = sp8[0]; + lbl_1_bss_116C[1] = sp8[1]; + temp_r29 = &lbl_1_data_26C[0]; + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + MTXRotDeg(sp130[temp_r31], 'y', lbl_1_bss_116C[temp_r31]); + for (temp_r28 = 0; temp_r28 < 4; temp_r28++, temp_r29++) { + temp_r27 = (temp_r31 * 4) + 2; + temp_r27 = temp_r28 + temp_r27; + MTXTrans(spA0, lbl_1_data_2CC[temp_r31].x, lbl_1_data_2CC[temp_r31].y, lbl_1_data_2CC[temp_r31].z); + MTXTrans(sp70, 0, -150, 0); + MTXConcat(spA0, sp70, spA0); + MTXTrans(sp40, temp_r29->x, temp_r29->y, temp_r29->z); + MTXConcat(sp130[temp_r31], sp40, sp10); + MTXConcat(spA0, sp10, spA0); + Hu3DModelPosSet(object->model[temp_r27], spA0[0][3], spA0[1][3], spA0[2][3]); + } + } + Hu3DModelRotSet(object->model[0], 0, lbl_1_bss_116C[0], 0); + Hu3DModelRotSet(object->model[1], 0, lbl_1_bss_116C[1], 0); + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + Hu3DLLightPointSet(object->model[temp_r31], lbl_1_bss_1174[temp_r31], (15 * sind(object->work[temp_r31])) + 45, 0.9, 3); + object->work[temp_r31] += 8.0f; + if (object->work[temp_r31] > 360.0f) { + object->work[temp_r31] -= 360.0f; + } + } } void fn_1_8904(void *arg0, u8 arg1) { - GXSetTexCopySrc(0, 0, 640, 480); - GXSetTexCopyDst(640, 480, GX_TF_RGBA8, GX_FALSE); - GXSetCopyClear(BGColor, 0xFFFFFF); - GXCopyTex(arg0, arg1); - DCFlushRange(arg0, lbl_1_bss_1184); + GXSetTexCopySrc(0, 0, 640, 480); + GXSetTexCopyDst(640, 480, GX_TF_RGBA8, GX_FALSE); + GXSetCopyClear(BGColor, 0xFFFFFF); + GXCopyTex(arg0, arg1); + DCFlushRange(arg0, lbl_1_bss_1184); } void fn_1_89BC(ModelData *model, Mtx mtx) { - Mtx44 sp34; - GXTexObj sp14; - MTXOrtho(sp34, 0, 480, 0, 576, 0, 1000); - GXSetProjection(sp34, GX_ORTHOGRAPHIC); - MTXIdentity(mtx); - GXLoadPosMtxImm(mtx, GX_PNMTX0); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); - GXSetChanAmbColor(GX_COLOR0A0, lbl_1_data_268); - GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_268); - GXSetNumTexGens(1); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); - GXSetNumTevStages(1); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXInitTexObj(&sp14, lbl_1_bss_1180, 640, 480, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXLoadTexObj(&sp14, GX_TEXMAP0); - GXSetBlendMode(GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_NOOP); - GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(0, 0, -10); - GXTexCoord2f32(0, 0); - GXPosition3f32(576, 0, -10); - GXTexCoord2f32(1, 0); - GXPosition3f32(576, 480, -10); - GXTexCoord2f32(1, 1); - GXPosition3f32(0, 480, -10); - GXTexCoord2f32(0, 1); - GXEnd(); - fn_1_8904(lbl_1_bss_1180, GX_FALSE); + Mtx44 sp34; + GXTexObj sp14; + MTXOrtho(sp34, 0, 480, 0, 576, 0, 1000); + GXSetProjection(sp34, GX_ORTHOGRAPHIC); + MTXIdentity(mtx); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_data_268); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_268); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXInitTexObj(&sp14, lbl_1_bss_1180, 640, 480, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp14, GX_TEXMAP0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(0, 0, -10); + GXTexCoord2f32(0, 0); + GXPosition3f32(576, 0, -10); + GXTexCoord2f32(1, 0); + GXPosition3f32(576, 480, -10); + GXTexCoord2f32(1, 1); + GXPosition3f32(0, 480, -10); + GXTexCoord2f32(0, 1); + GXEnd(); + fn_1_8904(lbl_1_bss_1180, GX_FALSE); } void fn_1_8EA0(void) { - lbl_1_bss_1168 = 0; + lbl_1_bss_1168 = 0; } void fn_1_8EB4(s16 model) { - HsfMaterial *temp_r31; - HsfData *temp_r30; - s32 temp_r29; - ModelData *temp_r28; - s16 *temp_r27; - s16 temp_r26; - temp_r28 = &Hu3DData[model]; - temp_r30 = temp_r28->hsfData; - temp_r26 = temp_r30->materialCnt; - temp_r27 = &lbl_1_bss_968[lbl_1_bss_1168][0]; - *temp_r27 = model; - temp_r31 = temp_r30->material; - for(temp_r29=0; temp_r29vtxMode = 1; - } - lbl_1_bss_1168++; + HsfMaterial *temp_r31; + HsfData *temp_r30; + s32 temp_r29; + ModelData *temp_r28; + s16 *temp_r27; + s16 temp_r26; + temp_r28 = &Hu3DData[model]; + temp_r30 = temp_r28->hsfData; + temp_r26 = temp_r30->materialCnt; + temp_r27 = &lbl_1_bss_968[lbl_1_bss_1168][0]; + *temp_r27 = model; + temp_r31 = temp_r30->material; + for (temp_r29 = 0; temp_r29 < temp_r26; temp_r31++, temp_r29++) { + temp_r31->vtxMode = 1; + } + lbl_1_bss_1168++; } void fn_1_8F60(float arg0) { - s16 *temp_r31; - s32 temp_r30; - temp_r31 = &lbl_1_bss_968[0][0]; - for(temp_r30=0; temp_r30unk_08 = 0; fn_1_800(object); } @@ -482,17 +481,18 @@ void fn_1_310C(float arg8, float arg9, float argA, float *arg0, float *arg1, flo Mtx sp8; if (arg8 != 0.0f) { - PSMTXRotRad(sp38, 88, 0.017453292f * arg8); - } else { - PSMTXIdentity(sp38); + MTXRotRad(sp38, 88, 0.017453292f * arg8); + } + else { + MTXIdentity(sp38); } if (arg9 != 0.0f) { - PSMTXRotRad(sp8, 89, 0.017453292f * arg9); - PSMTXConcat(sp38, sp8, sp38); + MTXRotRad(sp8, 89, 0.017453292f * arg9); + MTXConcat(sp38, sp8, sp38); } if (argA != 0.0f) { - PSMTXRotRad(sp8, 90, 0.017453292f * argA); - PSMTXConcat(sp38, sp8, sp38); + MTXRotRad(sp8, 90, 0.017453292f * argA); + MTXConcat(sp38, sp8, sp38); } fn_1_30D8(NULL, arg0, arg1, arg2); } diff --git a/src/REL/m417Dll/player.c b/src/REL/m417Dll/player.c index 558b61a8..81f282b0 100644 --- a/src/REL/m417Dll/player.c +++ b/src/REL/m417Dll/player.c @@ -143,17 +143,17 @@ u32 lbl_1_data_90[11][3] = { }; UnkM417Struct8 lbl_1_data_114[11] = { - { 0, 0.2f, 0.0f, -1.0f, 0x40000001 }, - { 1, 0.2f, 0.0f, -1.0f, 0 }, - { 2, 0.2f, 0.0f, -1.0f, 0 }, - { 3, 0.2f, 0.0f, -1.0f, 0x40000001 }, - { 4, 0.2f, 0.0f, -1.0f, 0x40000001 }, - { 5, 0.5f, 0.0f, -1.0f, 0 }, - { 6, 0.2f, 0.0f, -1.0f, 0x40000001 }, - { 7, 0.03f, 0.0f, -1.0f, 0 }, - { 8, 0.0f, 0.0f, -1.0f, 0 }, - { 9, 0.2f, 0.0f, -1.0f, 0 }, - { 10, 0.0f, 0.0f, -1.0f, 0 }, + { 0, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_LOOP }, + { 1, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, + { 2, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, + { 3, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_LOOP }, + { 4, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_LOOP }, + { 5, 0.5f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, + { 6, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_LOOP }, + { 7, 0.03f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, + { 8, 0.0f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, + { 9, 0.2f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, + { 10, 0.0f, 0.0f, -1.0f, HU3D_MOTATTR_NONE }, }; s32 lbl_1_bss_8AC; // unused @@ -243,9 +243,9 @@ void fn_1_7C8C(omObjData *object) if (lbl_1_data_90[var_r29][var_r27 + 1]) { if (lbl_1_data_90[var_r29][0] < 65536) { object->motion[var_r29] = CharModelMotionCreate(var_r28, lbl_1_data_90[var_r29][0]); - } else { - object->motion[var_r29] - = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(var_r28 + lbl_1_data_90[var_r29][0], MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r28 + lbl_1_data_90[var_r29][0]); } } } @@ -270,21 +270,22 @@ void fn_1_7C8C(omObjData *object) var_r31->unk_70 = 0.02f; if (var_r31->unk_0C) { Vec sp18 = { 0.0f, 1.0f, 0.0f }; - PSMTXRotAxisRad(var_r31->unk_1C4, &sp18, 0.017453292f * var_r31->unk_64); - } else { + MTXRotAxisRad(var_r31->unk_1C4, &sp18, 0.017453292f * var_r31->unk_64); + } + else { Vec spC = { 0.0f, 1.0f, 0.0f }; - PSMTXIdentity(var_r31->unk_1C4); + MTXIdentity(var_r31->unk_1C4); C_QUATRotAxisRad(&var_r31->unk_184, &spC, 0.0f); var_r31->unk_194 = var_r31->unk_184; - PSQUATInverse(&var_r31->unk_194, &var_r31->unk_1A4); + QUATInverse(&var_r31->unk_194, &var_r31->unk_1A4); var_r31->unk_1B4 = var_r31->unk_1A4; var_r31->unk_164 = var_r31->unk_194; var_r31->unk_174 = var_r31->unk_194; var_r31->unk_144 = 1.0f; var_r31->unk_D4.z += 50.0f; } - PSMTXInverse(var_r31->unk_1C4, var_r31->unk_1F4); - PSMTXCopy(var_r31->unk_1F4, var_r31->unk_224); + MTXInverse(var_r31->unk_1C4, var_r31->unk_1F4); + MTXCopy(var_r31->unk_1F4, var_r31->unk_224); var_r31->unk_134 = var_r31->unk_138 = 0.0f; var_r31->unk_12C = 1.0f; var_r31->unk_08 = -1; @@ -322,7 +323,8 @@ void fn_1_82FC(omObjData *object) if (fn_1_26F8() == 2) { if (var_r31->unk_44) { fn_1_ADC4(object); - } else { + } + else { var_r31->unk_14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; var_r31->unk_10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; var_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; @@ -336,7 +338,8 @@ void fn_1_82FC(omObjData *object) } if ((s32)var_r31->unk_50 != 0) { (void)var_r29; - } else { + } + else { var_r29 = 1; } fn_1_9FF0(object); @@ -348,7 +351,8 @@ void fn_1_82FC(omObjData *object) var_r31->unk_50 = 0; object->func = fn_1_8B0C; } - } else if (var_r31->unk_3C) { + } + else if (var_r31->unk_3C) { var_r31->unk_40 = 1; fn_1_2728(2); var_r31->unk_50 = 0; @@ -377,7 +381,8 @@ void fn_1_86E8(omObjData *object) if (var_r31->unk_44 != 0) { var_r31->unk_1C = 0; fn_1_B2C0(object); - } else { + } + else { var_r31->unk_14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; var_r31->unk_10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; var_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; @@ -398,7 +403,8 @@ void fn_1_86E8(omObjData *object) fn_1_9298(object); if ((s32)var_r31->unk_50 != 0) { (void)var_r29; - } else if (var_r31->unk_2C) { + } + else if (var_r31->unk_2C) { var_r29 = 1; } fn_1_91E0(object); @@ -428,14 +434,15 @@ void fn_1_8B0C(omObjData *object) case 0: sp8 = var_r31->unk_EC; sp8.y = 0.0f; - var_f31 = PSVECMag(&sp8); + var_f31 = VECMag(&sp8); if (var_f31 > 30.000002f) { var_r31->unk_20 = atan2d(-sp8.x, -sp8.z); var_r31->unk_24 = 0.01f * var_f31; if (var_r31->unk_24 > 1.0f) { var_r31->unk_24 = 1.0f; } - } else { + } + else { var_r31->unk_20 = 0.0f; var_r31->unk_24 = 0.01f; fn_1_2770(object->work[0]); @@ -447,7 +454,8 @@ void fn_1_8B0C(omObjData *object) var_r31->unk_28 = 0; if (fn_1_2740(object->work[0]) >= 0) { fn_1_B8A0(object, 1); - } else { + } + else { fn_1_B8A0(object, 2); } var_r31->unk_50++; @@ -481,7 +489,8 @@ void fn_1_8D30(omObjData *object) if (fn_1_2740(object->work[0]) >= 0) { var_r31->unk_68 = 0.0f; fn_1_B8A0(object, 1); - } else { + } + else { fn_1_B8A0(object, 2); } var_r31->unk_50++; @@ -516,14 +525,15 @@ void fn_1_8E44(omObjData *object) case 0: sp8 = var_r31->unk_14C; sp8.y = 0.0f; - if (PSVECMag(&sp8) > 0.0f) { - PSVECNormalize(&sp8, &sp8); - } else { + if (VECMag(&sp8) > 0.0f) { + VECNormalize(&sp8, &sp8); + } + else { sp8.x = 1.0f; sp8.z = 0.0f; } var_r31->unk_68 = atan2d(-sp8.x, -sp8.z); - PSVECScale(&sp8, &var_r31->unk_E0, 1.6666667f); + VECScale(&sp8, &var_r31->unk_E0, 1.6666667f); fn_1_B8A0(object, 5); Hu3DModelLayerSet(object->model[0], 0); Hu3DModelShadowReset(object->model[0]); @@ -537,16 +547,17 @@ void fn_1_8E44(omObjData *object) if (var_r31->unk_D4.y < -300.0f) { sp8 = var_r31->unk_D4; sp8.y = 0.0f; - if (PSVECMag(&sp8) > 0.0f) { - PSVECNormalize(&sp8, &sp8); - } else { + if (VECMag(&sp8) > 0.0f) { + VECNormalize(&sp8, &sp8); + } + else { sp8.x = 0.0f; sp8.z = 1.0f; } - PSVECScale(&sp8, &sp14, 250.0f); + VECScale(&sp8, &sp14, 250.0f); sp14.y = -100.0f; - PSVECSubtract(&sp14, &var_r31->unk_D4, &sp8); - PSVECScale(&sp8, &var_r31->unk_E0, 1.0f / 60.0f); + VECSubtract(&sp14, &var_r31->unk_D4, &sp8); + VECScale(&sp8, &var_r31->unk_E0, 1.0f / 60.0f); fn_1_B8A0(object, 6); var_r31->unk_50++; } @@ -565,7 +576,7 @@ void fn_1_8E44(omObjData *object) break; } - PSVECAdd(&var_r31->unk_D4, &var_r31->unk_E0, &var_r31->unk_D4); + VECAdd(&var_r31->unk_D4, &var_r31->unk_E0, &var_r31->unk_D4); fn_1_9FF0(object); fn_1_91E0(object); fn_1_AD24(object); @@ -612,17 +623,18 @@ void fn_1_9298(omObjData *object) sp14.x = sind(var_r31->unk_20); sp14.y = 0.0f; sp14.z = cosd(var_r31->unk_20); - var_f31 = PSVECDotProduct(&sp20, &sp14); + var_f31 = VECDotProduct(&sp20, &sp14); var_f31 *= (1.0f / 60.0f) * (30.0f * var_r31->unk_24); } var_r31->unk_B4.y += (0.1f * (var_f31 - var_r31->unk_B4.y)); var_r31->unk_B4.x += var_r31->unk_B4.y; if (var_r31->unk_B4.x >= 360.0f) { var_r31->unk_B4.x -= 360.0f; - } else if (var_r31->unk_B4.x < 0.0f) { + } + else if (var_r31->unk_B4.x < 0.0f) { var_r31->unk_B4.x += 360.0f; } - PSMTXRotAxisRad(var_r31->unk_1C4, &sp8, 0.017453292f * var_r31->unk_B4.x); + MTXRotAxisRad(var_r31->unk_1C4, &sp8, 0.017453292f * var_r31->unk_B4.x); } object->rot.y = var_r31->unk_68 = var_r31->unk_B4.x - 180.0f; object->trans.x = var_r31->unk_D4.x = var_r31->unk_F8.x = var_r31->unk_C8.x = var_r31->unk_B4.z * sind(var_r31->unk_B4.x); @@ -661,7 +673,8 @@ void fn_1_9298(omObjData *object) case 2: if (var_r31->unk_E0.y >= 0.0f) { var_r31->unk_AC += (1.0f / 60.0f); - } else { + } + else { var_r31->unk_AC -= (1.0f / 60.0f); } var_r31->unk_34 = 0; @@ -681,7 +694,8 @@ void fn_1_9298(omObjData *object) var_r31->unk_E0.y = 0.0f; fn_1_B8A0(object, 9); var_r31->unk_A0++; - } else { + } + else { var_r31->unk_E0.y += (0.016666668f * (0.016666668f * var_r31->unk_11C.w)); var_r31->unk_D4.y += var_r31->unk_E0.y; if (var_r31->unk_D4.y <= var_r31->unk_F8.y) { @@ -762,7 +776,8 @@ void fn_1_9A1C(omObjData *object) } if (var_f31 == 0.0f) { var_f30 = 11.5f; - } else { + } + else { var_f30 = 23.0 - fabs(var_f31); var_f30 = (0.5f * var_f30) * (var_f31 / fabs(var_f31)); } @@ -803,27 +818,29 @@ void fn_1_9C14(omObjData *object) if (var_r31->unk_24 > var_f30) { fn_1_B8A0(object, 4); var_f29 = var_r31->unk_24; - } else { + } + else { fn_1_B8A0(object, 3); var_f29 = var_r31->unk_24 / var_f30; } CharModelMotionSpeedSet(var_r31->unk_00, var_f29); } - } else { + } + else { var_r31->unk_E0.x = var_r31->unk_E0.y = var_r31->unk_E0.z = 0.0f; if (var_r31->unk_28 && CharModelMotionShiftIDGet(var_r31->unk_00) < 0) { fn_1_B8A0(object, 0); } } - PSVECSubtract(&var_r31->unk_D4, &var_r31->unk_104, &sp1C); + VECSubtract(&var_r31->unk_D4, &var_r31->unk_104, &sp1C); if (fn_1_26F8() == 2) { sp1C.y += -5.8333335f * var_r31->unk_148; } - PSMTXMultVec(var_r31->unk_224, &sp1C, &sp1C); - PSVECAdd(&sp1C, &var_r31->unk_E0, &sp1C); + MTXMultVec(var_r31->unk_224, &sp1C, &sp1C); + VECAdd(&sp1C, &var_r31->unk_E0, &sp1C); sp10 = sp1C; sp10.y = 0.0f; - var_f31 = sp8 = PSVECMag(&sp10); + var_f31 = sp8 = VECMag(&sp10); if (var_f31 > 150.0f) { var_f31 = 150.0f / var_f31; sp1C.x = sp1C.x * var_f31; @@ -832,14 +849,14 @@ void fn_1_9C14(omObjData *object) sp1C.y = 80.0f; var_r31->unk_EC = sp1C; spC = atan2d(sp1C.x, sp1C.z); - PSMTXMultVec(var_r31->unk_1C4, &sp1C, &sp1C); - PSVECAdd(&sp1C, &var_r31->unk_F8, &var_r31->unk_D4); + MTXMultVec(var_r31->unk_1C4, &sp1C, &sp1C); + VECAdd(&sp1C, &var_r31->unk_F8, &var_r31->unk_D4); if (var_r31->unk_13C >= 0.95f) { var_r31->unk_3C = 1; return; } - PSQUATNormalize(&var_r31->unk_194, &sp28); - if (sp28.w < cos(0.4363323129985824)) { + QUATNormalize(&var_r31->unk_194, &sp28); + if (sp28.w < cosd(25)) { var_r31->unk_3C = 1; } } @@ -876,7 +893,7 @@ void fn_1_9FF0(omObjData *object) } } var_r31->unk_1B4 = var_r31->unk_1A4; - PSMTXCopy(var_r31->unk_1F4, var_r31->unk_224); + MTXCopy(var_r31->unk_1F4, var_r31->unk_224); var_r31->unk_104 = var_r31->unk_F8; var_f31 = fn_1_75BC(); for (var_r30 = 0; var_r30 < 8; var_r30++) { @@ -890,7 +907,8 @@ void fn_1_9FF0(omObjData *object) var_r31->unk_98 = var_r31->unk_F8.y - var_r31->unk_104.y; var_r31->unk_98 += -0.27222225f; var_r31->unk_30 = 0; - } else { + } + else { var_r31->unk_98 = var_r31->unk_F8.y - var_r31->unk_104.y; var_r31->unk_98 += -0.8166667f; var_r31->unk_30 = 1; @@ -918,12 +936,13 @@ void fn_1_9FF0(omObjData *object) if (!var_r31->unk_40) { sp20 = var_r31->unk_EC; sp20.y = 0.0f; - var_f31 = (2.0f / 300.0f) * PSVECMag(&sp20); + var_f31 = (2.0f / 300.0f) * VECMag(&sp20); if (var_f31 <= 0.0f) { var_f31 = 0.0f; sp8.x = 1.0f; sp8.y = sp8.z = 0.0f; - } else { + } + else { if (var_f31 > 1.0f) { var_f31 = 1.0f; } @@ -983,7 +1002,7 @@ void fn_1_9FF0(omObjData *object) sp8.x = sind(var_f31); sp8.y = 0.0f; sp8.z = cosd(var_f31); - var_f29 = PSVECMag(&sp20); + var_f29 = VECMag(&sp20); if (var_f29 > 0.5f) { var_f29 = 0.5f; } @@ -992,22 +1011,23 @@ void fn_1_9FF0(omObjData *object) if (fn_1_26F8() == 2) { sp20 = var_r31->unk_EC; sp20.y = 0.0f; - var_f31 = PSVECMag(&sp20); + var_f31 = VECMag(&sp20); var_f29 = 0.006666667f * var_f31; if (var_f31 > 0.0f) { - PSVECNormalize(&sp20, &sp20); + VECNormalize(&sp20, &sp20); } - PSVECSubtract(&sp20, &var_r31->unk_14C, &sp14); - if (PSVECMag(&sp14)) { - PSVECNormalize(&sp14, &sp14); + VECSubtract(&sp20, &var_r31->unk_14C, &sp14); + if (VECMag(&sp14)) { + VECNormalize(&sp14, &sp14); } - PSVECScale(&sp14, &sp14, (0.0033333336f * var_f29) + var_r31->unk_144); - PSVECAdd(&var_r31->unk_14C, &sp14, &var_r31->unk_14C); - } else { - PSVECScale(&var_r31->unk_14C, &var_r31->unk_14C, 0.98f); + VECScale(&sp14, &sp14, (0.0033333336f * var_f29) + var_r31->unk_144); + VECAdd(&var_r31->unk_14C, &sp14, &var_r31->unk_14C); + } + else { + VECScale(&var_r31->unk_14C, &var_r31->unk_14C, 0.98f); } var_r31->unk_14C.y = 0.0f; - var_f31 = PSVECMag(&var_r31->unk_14C); + var_f31 = VECMag(&var_r31->unk_14C); if (var_f31 > 1.0f) { var_f31 = 1.0f / var_f31; var_r31->unk_14C.x *= var_f31; @@ -1020,24 +1040,26 @@ void fn_1_9FF0(omObjData *object) sp8.x = var_r31->unk_14C.z; sp8.y = 0.0f; sp8.z = -var_r31->unk_14C.x; - } else { + } + else { sp8.x = 1.0f; sp8.y = sp8.z = 0.0f; } C_QUATRotAxisRad(&var_r31->unk_184, &sp8, 0.9424779f * var_f31); - } else { + } + else { sp8.x = var_r31->unk_14C.z; sp8.y = 0.0f; sp8.z = -var_r31->unk_14C.x; C_QUATRotAxisRad(&sp3C, &sp8, M_PI); C_QUATSlerp(&var_r31->unk_184, &sp3C, &var_r31->unk_184, 0.027777778f); } - PSQUATMultiply(&var_r31->unk_174, &var_r31->unk_184, &var_r31->unk_194); - PSQUATMultiply(&var_r31->unk_164, &var_r31->unk_194, &var_r31->unk_194); - PSQUATMultiply(&sp2C, &var_r31->unk_194, &var_r31->unk_194); - PSMTXQuat(var_r31->unk_1C4, &var_r31->unk_194); - PSMTXInverse(var_r31->unk_1C4, var_r31->unk_1F4); - PSQUATInverse(&var_r31->unk_194, &var_r31->unk_1A4); + QUATMultiply(&var_r31->unk_174, &var_r31->unk_184, &var_r31->unk_194); + QUATMultiply(&var_r31->unk_164, &var_r31->unk_194, &var_r31->unk_194); + QUATMultiply(&sp2C, &var_r31->unk_194, &var_r31->unk_194); + MTXQuat(var_r31->unk_1C4, &var_r31->unk_194); + MTXInverse(var_r31->unk_1C4, var_r31->unk_1F4); + QUATInverse(&var_r31->unk_194, &var_r31->unk_1A4); } } @@ -1049,7 +1071,7 @@ void fn_1_AD24(omObjData *object) Hu3DModelPosSetV(object->model[0], &var_r30->unk_D4); Hu3DModelRotSet(object->model[0], 0.0f, var_r30->unk_64, 0.0f); Hu3DModelPosSetV(object->model[1], &var_r30->unk_F8); - PSMTXCopy(var_r30->unk_1C4, Hu3DData[object->model[1]].unk_F0); + MTXCopy(var_r30->unk_1C4, Hu3DData[object->model[1]].unk_F0); } void fn_1_ADC4(omObjData *object) @@ -1073,8 +1095,8 @@ void fn_1_ADC4(omObjData *object) sp28 = var_r31->unk_14C; sp28.y = 0.0f; var_f31 = 0.75f + (2.5f * (var_r31->unk_74 * var_r31->unk_74)); - PSVECScale(&sp28, &sp28, 150.0f * -var_f31); - var_f31 = PSVECMag(&sp28); + VECScale(&sp28, &sp28, 150.0f * -var_f31); + var_f31 = VECMag(&sp28); if (var_f31 > 150.0f) { var_f31 = 150.0f / var_f31; sp28.x *= var_f31; @@ -1084,24 +1106,26 @@ void fn_1_ADC4(omObjData *object) sp28.z += (100.0 * ((0.9f - (0.3f * var_r31->unk_74)) * ((0.002 * (float)frandmod(1000)) - 1.0))); sp1C = var_r31->unk_110; sp1C.y = 0.0f; - PSVECSubtract(&sp28, &sp1C, &sp10); - var_f31 = PSVECMag(&sp10); + VECSubtract(&sp28, &sp1C, &sp10); + var_f31 = VECMag(&sp10); if (var_f31 > (100.0f * (1.2f - (0.3f * var_r31->unk_74)))) { var_r31->unk_110 = sp28; } var_r31->unk_84 = 60.0f * ((0.23f - (0.04f * var_r31->unk_74)) + (0.001f * ((0.4f - (0.15f * var_r31->unk_74)) * frandmod(1000)))); - } else { + } + else { var_r31->unk_84--; } sp28 = var_r31->unk_110; sp28.y = 0.0f; sp1C = var_r31->unk_EC; sp1C.y = 0.0f; - PSVECSubtract(&sp28, &sp1C, &sp10); - var_f31 = PSVECMag(&sp10); + VECSubtract(&sp28, &sp1C, &sp10); + var_f31 = VECMag(&sp10); if (var_r31->unk_48) { var_r30 = 1; - } else { + } + else { var_r30 = 0; } var_r29 = var_r30; @@ -1129,7 +1153,8 @@ void fn_1_B2C0(omObjData *object) var_r29 = 0; if (var_r31->unk_90) { var_r31->unk_90--; - } else { + } + else { var_r31->unk_88 = 1.0f; if (frandmod(1000) < 500) { var_r31->unk_88 = -1.0f; @@ -1142,7 +1167,8 @@ void fn_1_B2C0(omObjData *object) if (lbl_1_bss_884 >= object->work[0]) { if (lbl_1_bss_880) { lbl_1_bss_880--; - } else { + } + else { lbl_1_bss_880 = 60.0f * (8.0f + (0.004f * frandmod(1000))); } } @@ -1160,11 +1186,13 @@ void fn_1_B2C0(omObjData *object) if (var_r31->unk_80 > 240.0f) { var_r31->unk_80 = 1; } - } else { + } + else { var_r31->unk_80 = 60.0f * (0.00080000004f * ((1.05f - var_r31->unk_74) * frandmod(1000))); var_r31->unk_80 += (var_r31->unk_8C * (30.0f + (0.03f * frandmod(1000)))); } - } else { + } + else { var_r31->unk_80--; if (!var_r31->unk_80) { var_r31->unk_10 |= 256; diff --git a/src/REL/m417Dll/sequence.c b/src/REL/m417Dll/sequence.c index 672218a7..ac2b93ca 100644 --- a/src/REL/m417Dll/sequence.c +++ b/src/REL/m417Dll/sequence.c @@ -60,15 +60,15 @@ void fn_1_BD9C(omObjData *object) } else { var_f31 = 0.0055555557f * (var_r31->unk_10 - var_r29); } - PSVECSubtract(&sp2C[1], &sp2C[0], &sp8); - PSVECScale(&sp8, &sp8, var_f31); - PSVECAdd(&sp2C[0], &sp8, &sp8); + VECSubtract(&sp2C[1], &sp2C[0], &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&sp2C[0], &sp8, &sp8); Center.x = sp8.x; Center.y = sp8.y; Center.z = sp8.z; - PSVECSubtract(&sp14[1], &sp14[0], &sp8); - PSVECScale(&sp8, &sp8, var_f31); - PSVECAdd(&sp14[0], &sp8, &sp8); + VECSubtract(&sp14[1], &sp14[0], &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&sp14[0], &sp8, &sp8); CRot.x = sp8.x; CRot.y = sp8.y; CRot.z = 0.0f; diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index aeb0c910..85cdcaea 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -135,7 +135,7 @@ void fn_1_3400(omObjData *object) Hu3DModelLayerSet(object->model[3], 3); object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M417, 2)); Hu3DModelLayerSet(object->model[2], 5); - Hu3DModelAttrSet(object->model[2], 0x40000001); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); Hu3DMotionSpeedSet(object->model[2], 0.7f); object->data = fn_1_3574(object, 5, 3); HuAudFXPlay(1480); @@ -164,7 +164,7 @@ UnkM417Struct3 *fn_1_3574(omObjData *arg0, s16 arg1, s16 arg2) var_r31 = var_r30; for (var_r29 = 0; var_r29 < arg2; var_r29++, var_r31++, arg1++) { var_r31->unk_00 = arg1; - arg0->model[arg1] = Hu3DModelCreate(HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M417, 3), MEMORY_DEFAULT_NUM, HEAP_DATA)); + arg0->model[arg1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M417, 3)); Hu3DModelLayerSet(arg0->model[var_r31->unk_00], 0); var_f30 = frandmod(360); var_f29 = frandmod(640); @@ -196,9 +196,10 @@ void fn_1_37A0(omObjData *object, UnkM417Struct3 *arg1) var_r29 = 0; if (arg1->unk_30 > arg1->unk_34) { var_r29 = 1; - } else { - PSVECSubtract(&arg1->unk_14, &arg1->unk_08, &sp8); - var_f31 = PSVECMag(&sp8); + } + else { + VECSubtract(&arg1->unk_14, &arg1->unk_08, &sp8); + var_f31 = VECMag(&sp8); if (var_f31 < 50.0f) { var_r29 = 1; } @@ -213,7 +214,7 @@ void fn_1_37A0(omObjData *object, UnkM417Struct3 *arg1) arg1->unk_34 = 200.0f + frandmod(600); arg1->unk_24 = 0.0f; } - PSVECSubtract(&arg1->unk_14, &arg1->unk_08, &sp8); + VECSubtract(&arg1->unk_14, &arg1->unk_08, &sp8); arg1->unk_2C = atan2d(sp8.x, sp8.z); arg1->unk_28 = fn_1_2F08(arg1->unk_28, arg1->unk_2C, 0.05f); arg1->unk_24 += (0.05f * (300.0f - arg1->unk_24)); @@ -247,7 +248,7 @@ void fn_1_3BC4(omObjData *object) Hu3DModelLayerSet(object->model[1], 1); object->model[2] = Hu3DHookFuncCreate(fn_1_6B60); Hu3DModelLayerSet(object->model[2], 7); - var_r30 = Hu3DParticleCreate(HuSprAnimRead(HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M417, 17), MEMORY_DEFAULT_NUM, HEAP_DATA)), 512); + var_r30 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M417, 17)), 512); object->model[3] = var_r30; Hu3DModelLayerSet(var_r30, 4); Hu3DParticleColSet(var_r30, 255, 255, 255); @@ -325,21 +326,22 @@ void fn_1_3D58(omObjData *object) var_r28->y = 0.0f; var_r28->z = var_f29; } - var_f29 += (var_f28 * sin(1.0471975511965976)); + var_f29 += var_f28 * sind(60); } var_r28 = lbl_1_bss_178.unk_2C; var_r30 = 0; var_r29 = 1080; for (var_r31 = 0; var_r31 < 1080; var_r31++, var_r28++) { - var_f31 = PSVECMag(var_r28); + var_f31 = VECMag(var_r28); if (var_f31 > 850.0f) { var_r29--; lbl_1_bss_178.unk_28[var_r31] = 0; lbl_1_bss_178.unk_1C[var_r31] = var_r29; lbl_1_bss_178.unk_24[var_r29] = 0.0f; var_f31 = 850.0f / var_f31; - PSVECScale(var_r28, var_r28, var_f31); - } else { + VECScale(var_r28, var_r28, var_f31); + } + else { lbl_1_bss_178.unk_28[var_r31] = 1; lbl_1_bss_178.unk_1C[var_r31] = var_r30; lbl_1_bss_178.unk_24[var_r30] = 1.0f; @@ -368,7 +370,8 @@ void fn_1_3D58(omObjData *object) (*var_r27)[1] = lbl_1_bss_178.unk_1C[var_r29 + 30]; (*var_r27)[2] = lbl_1_bss_178.unk_1C[var_r29 + 1]; (*var_r27)[3] = lbl_1_bss_178.unk_1C[var_r29 + 31]; - } else { + } + else { var_r29 = var_r30 + (var_r31 * 30); (*var_r27)[1] = lbl_1_bss_178.unk_1C[var_r29]; (*var_r27)[3] = lbl_1_bss_178.unk_1C[var_r29 + 30]; @@ -388,8 +391,8 @@ void fn_1_3D58(omObjData *object) var_f28 = 500000.0f; var_r28 = lbl_1_bss_178.unk_2C; for (var_r30 = 0; var_r30 < lbl_1_bss_178.unk_18; var_r30++) { - PSVECSubtract(var_r28++, &lbl_1_bss_178.unk_3C[var_r31].unk_00, &spC); - var_f31 = PSVECMag(&spC); + VECSubtract(var_r28++, &lbl_1_bss_178.unk_3C[var_r31].unk_00, &spC); + var_f31 = VECMag(&spC); if (var_f31 < var_f28) { var_r29 = var_r30; var_f28 = var_f31; @@ -399,8 +402,8 @@ void fn_1_3D58(omObjData *object) var_r28 = lbl_1_bss_178.unk_2C; var_r26 = 0; for (var_r30 = 0; var_r30 < lbl_1_bss_178.unk_18; var_r30++) { - PSVECSubtract(var_r28++, &lbl_1_bss_178.unk_3C[var_r31].unk_00, &spC); - var_f31 = lbl_1_bss_178.unk_3C[var_r31].unk_10 * PSVECMag(&spC); + VECSubtract(var_r28++, &lbl_1_bss_178.unk_3C[var_r31].unk_00, &spC); + var_f31 = lbl_1_bss_178.unk_3C[var_r31].unk_10 * VECMag(&spC); lbl_1_bss_178.unk_3C[var_r31].unk_20[var_r26] = var_f31; for (var_r29 = 0; var_r29 <= var_r26; var_r29++) { var_f29 = lbl_1_bss_178.unk_3C[var_r31].unk_20[var_r29] - var_f31; @@ -447,7 +450,8 @@ void fn_1_4BC8(float arg8, float arg9) if (arg9 < 0.0f) { arg9 = 0.0f; - } else if (arg9 > 1.0f) { + } + else if (arg9 > 1.0f) { arg9 = 1.0f; } var_f30 = 1.0f - arg9; @@ -474,7 +478,7 @@ void fn_1_4BC8(float arg8, float arg9) return; } } - (void)var_r31; + (void)var_r31; } void fn_1_4E64(omObjData *object) @@ -515,19 +519,21 @@ void fn_1_4E64(omObjData *object) sp14.x = var_r31->unk_14 * sind(var_r31->unk_10); sp14.y = 0.0f; sp14.z = var_r31->unk_14 * cosd(var_r31->unk_10); - PSVECAdd(&var_r31->unk_04, &sp14, &var_r31->unk_04); + VECAdd(&var_r31->unk_04, &sp14, &var_r31->unk_04); if (var_r31->unk_2C >= 0) { HuAudFXEmiterUpDate(var_r31->unk_2C, &var_r31->unk_04); } - if (PSVECMag(&var_r31->unk_04) > 800.0f && var_r31->unk_00 >= 2 && (var_r31->unk_1C -= 0.033333335f, var_r31->unk_1C < 0.0f)) { + if (VECMag(&var_r31->unk_04) > 800.0f && var_r31->unk_00 >= 2 && (var_r31->unk_1C -= 0.033333335f, var_r31->unk_1C < 0.0f)) { var_r31->unk_00 = 0; - } else { + } + else { if (var_r31->unk_00 < 2) { - PSVECSubtract(&sp8, &var_r31->unk_04, &sp20); - if (PSVECDotProduct(&sp14, &sp20) <= 0.0f) { + VECSubtract(&sp8, &var_r31->unk_04, &sp20); + if (VECDotProduct(&sp14, &sp20) <= 0.0f) { var_r31->unk_00 = 2; - } else { - var_f31 = 1.2f * (PSVECMag(&sp20) / (var_r31->unk_18 * var_r31->unk_28)); + } + else { + var_f31 = 1.2f * (VECMag(&sp20) / (var_r31->unk_18 * var_r31->unk_28)); if (var_f31 < 1.2f) { if (var_f31 > 1.0f) { var_f31 = 5.0f * (1.2f - var_f31); @@ -538,13 +544,14 @@ void fn_1_4E64(omObjData *object) var_r29->unk_0C = var_f31; } } - } else if (var_r31->unk_00 == 2 && PSVECMag(&var_r31->unk_04) > ((800.0f - (100.0f * (2.0f * var_r31->unk_20))) - 30.000002f)) { + } + else if (var_r31->unk_00 == 2 && VECMag(&var_r31->unk_04) > ((800.0f - (100.0f * (2.0f * var_r31->unk_20))) - 30.000002f)) { var_r31->unk_00 = 3; fn_1_6D64(lbl_1_bss_58, 0, var_r31->unk_10, 20.0f + (40.0f * var_r31->unk_20), var_r31->unk_20); sp2C.x = sind(var_r31->unk_10); sp2C.y = 0.0f; sp2C.z = cosd(var_r31->unk_10); - PSVECScale(&sp2C, &sp2C, 800.0f); + VECScale(&sp2C, &sp2C, 800.0f); HuAudFXEmiterPlay(1481, &sp2C); if (var_r31->unk_2C >= 0) { var_r31->unk_2C = -1; @@ -560,13 +567,13 @@ void fn_1_4E64(omObjData *object) var_r31->unk_24 = 1.0f; } } - PSMTXTrans(spC8, var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z); - PSMTXRotRad(sp98, 89, 0.017453292f * var_r31->unk_10); - PSMTXConcat(spC8, sp98, sp68); + MTXTrans(spC8, var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z); + MTXRotRad(sp98, 89, 0.017453292f * var_r31->unk_10); + MTXConcat(spC8, sp98, sp68); var_f31 = var_r31->unk_18 * var_r31->unk_1C; - PSMTXScale(spC8, var_f31, var_f31, var_f31 * var_r31->unk_28); - PSMTXConcat(sp68, spC8, sp98); - PSMTXInverse(sp98, spC8); + 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); sp2C.x = (0.15f * var_r31->unk_18) * (var_r31->unk_24 * sind(var_r31->unk_10)); @@ -577,7 +584,7 @@ void fn_1_4E64(omObjData *object) var_r27 = lbl_1_bss_178.unk_30; var_r28 = lbl_1_bss_178.unk_6CC[lbl_1_bss_178.unk_6B4]; for (var_r30 = 0; var_r30 < lbl_1_bss_178.unk_18; var_r30++, var_r26++, var_r27++) { - var_f31 = PSVECMag(var_r26); + var_f31 = VECMag(var_r26); if (!(var_f31 >= 1.0f)) { var_f30 = (1.0f - var_f31) * var_r31->unk_1C; var_f28 = var_r31->unk_24 * ((1.0f - var_f31) * (1.0f - var_f31)); @@ -631,7 +638,8 @@ void fn_1_57B0(omObjData *object) var_r29->unk_0C += var_r29->unk_18; if (var_r29->unk_0C >= 360.0f) { var_r29->unk_0C -= 360.0f; - } else if (var_r29->unk_0C < 0.0f) { + } + else if (var_r29->unk_0C < 0.0f) { var_r29->unk_0C += 360.0f; } var_f31 = var_r29->unk_0C; @@ -647,7 +655,7 @@ void fn_1_57B0(omObjData *object) var_r24 = lbl_1_bss_178.unk_30; var_r25 = lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4]; for (var_r30 = 0; var_r30 < lbl_1_bss_178.unk_18; var_r23++, var_r24++, var_r25++, var_r30++) { - PSVECAdd(var_r23, var_r24, var_r25); + VECAdd(var_r23, var_r24, var_r25); } memset(lbl_1_bss_178.unk_30, 0, 30 * 36 * sizeof(Vec)); var_r28 = lbl_1_bss_178.unk_6C4[lbl_1_bss_178.unk_6B4]; @@ -655,22 +663,22 @@ void fn_1_57B0(omObjData *object) var_r27 = lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4]; var_r31 = lbl_1_bss_178.unk_38; for (var_r30 = 0; var_r30 < 1015; var_r31++, var_r30++) { - PSVECSubtract(&var_r27[(*var_r31)[1]], &var_r27[(*var_r31)[0]], &sp30); - PSVECSubtract(&var_r27[(*var_r31)[3]], &var_r27[(*var_r31)[0]], &sp24); - PSVECSubtract(&var_r27[(*var_r31)[2]], &var_r27[(*var_r31)[0]], &sp18); - PSVECCrossProduct(&sp30, &sp24, &spC); - PSVECNormalize(&spC, &spC); - PSVECAdd(&spC, &var_r28[(*var_r31)[0]], &var_r28[(*var_r31)[0]]); - PSVECAdd(&spC, &var_r28[(*var_r31)[1]], &var_r28[(*var_r31)[1]]); - PSVECAdd(&spC, &var_r28[(*var_r31)[3]], &var_r28[(*var_r31)[3]]); - PSVECCrossProduct(&sp24, &sp18, &spC); - PSVECNormalize(&spC, &spC); - PSVECAdd(&spC, &var_r28[(*var_r31)[0]], &var_r28[(*var_r31)[0]]); - PSVECAdd(&spC, &var_r28[(*var_r31)[3]], &var_r28[(*var_r31)[3]]); - PSVECAdd(&spC, &var_r28[(*var_r31)[2]], &var_r28[(*var_r31)[2]]); + VECSubtract(&var_r27[(*var_r31)[1]], &var_r27[(*var_r31)[0]], &sp30); + VECSubtract(&var_r27[(*var_r31)[3]], &var_r27[(*var_r31)[0]], &sp24); + VECSubtract(&var_r27[(*var_r31)[2]], &var_r27[(*var_r31)[0]], &sp18); + VECCrossProduct(&sp30, &sp24, &spC); + VECNormalize(&spC, &spC); + VECAdd(&spC, &var_r28[(*var_r31)[0]], &var_r28[(*var_r31)[0]]); + VECAdd(&spC, &var_r28[(*var_r31)[1]], &var_r28[(*var_r31)[1]]); + VECAdd(&spC, &var_r28[(*var_r31)[3]], &var_r28[(*var_r31)[3]]); + VECCrossProduct(&sp24, &sp18, &spC); + VECNormalize(&spC, &spC); + VECAdd(&spC, &var_r28[(*var_r31)[0]], &var_r28[(*var_r31)[0]]); + VECAdd(&spC, &var_r28[(*var_r31)[3]], &var_r28[(*var_r31)[3]]); + VECAdd(&spC, &var_r28[(*var_r31)[2]], &var_r28[(*var_r31)[2]]); } for (var_r30 = 0; var_r30 < 1080; var_r30++, var_r28++) { - PSVECNormalize(var_r28, var_r28); + VECNormalize(var_r28, var_r28); } var_r25 = lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4]; for (var_r30 = 0; var_r30 < lbl_1_bss_178.unk_18; var_r25++, var_r30++) { @@ -688,8 +696,8 @@ void fn_1_57B0(omObjData *object) DCStoreRangeNoSync(lbl_1_bss_178.unk_6CC[lbl_1_bss_178.unk_6B4], 1080 * sizeof(GXColor)); DCStoreRangeNoSync(lbl_1_bss_178.unk_6D4[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec2f)); PPCSync(); - (void)var_r30; - (void)var_r30; + (void)var_r30; + (void)var_r30; } void fn_1_5E3C(omObjData *object) @@ -714,7 +722,8 @@ void fn_1_5E3C(omObjData *object) GXColor1x16(var_r31); GXTexCoord1x16(var_r31); } - } else { + } + else { GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 59); for (var_r30 = 29; var_r30 >= 0; var_r30--) { var_r31 = lbl_1_bss_178.unk_1C[var_r30 + (var_r29 * 30)]; @@ -752,7 +761,7 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) DCStoreRangeNoSync(&sp10, 4); PPCSync(); GXLoadPosMtxImm(arg1, 0); - PSMTXInvXpose(arg1, sp98); + MTXInvXpose(arg1, sp98); GXLoadNrmMtxImm(sp98, 0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); @@ -764,29 +773,29 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) HuSprTexLoad(lbl_1_bss_60, 0, 3, GX_MIRROR, GX_MIRROR, GX_LINEAR); GXSetNumTexGens(5); C_MTXLightPerspective(sp38, 35.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - PSMTXInverse(Hu3DCameraMtx, sp98); - PSMTXConcat(sp98, arg1, sp98); - PSMTXConcat(sp38, Hu3DCameraMtx, sp68); - PSMTXConcat(sp68, sp98, sp68); + MTXInverse(Hu3DCameraMtx, sp98); + MTXConcat(sp98, arg1, sp98); + MTXConcat(sp38, Hu3DCameraMtx, sp68); + MTXConcat(sp68, sp98, sp68); sp68[1][3] -= 44.0f; GXLoadTexMtxImm(sp68, 30, GX_MTX3x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 30, GX_FALSE, 125); C_MTXLightPerspective(sp38, 70.0f, 1.0f, 0.5f, -0.5f, 0.5f, 0.5f); - PSMTXInverse(Hu3DCameraMtx, sp98); - PSMTXConcat(sp98, arg1, sp98); - PSMTXConcat(sp38, Hu3DCameraMtx, sp68); - PSMTXConcat(sp68, sp98, sp68); + MTXInverse(Hu3DCameraMtx, sp98); + MTXConcat(sp98, arg1, sp98); + MTXConcat(sp38, Hu3DCameraMtx, sp68); + MTXConcat(sp68, sp98, sp68); GXLoadTexMtxImm(sp68, 36, GX_MTX3x4); GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX3x4, GX_TG_POS, 36, GX_FALSE, 125); - PSMTXRotRad(sp68, 90, 0.017453292f * lbl_1_bss_178.unk_6B8); + MTXRotRad(sp68, 90, 0.017453292f * lbl_1_bss_178.unk_6B8); GXLoadTexMtxImm(sp68, 39, GX_MTX2x4); GXSetTexCoordGen2(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_TEXCOORD0, 39, GX_FALSE, 125); - PSMTXScale(sp98, 1.2f, -1.2f, 1.2f); - PSMTXConcat(sp68, sp98, sp68); + MTXScale(sp98, 1.2f, -1.2f, 1.2f); + MTXConcat(sp68, sp98, sp68); GXLoadTexMtxImm(sp68, 42, GX_MTX2x4); GXSetTexCoordGen2(GX_TEXCOORD4, GX_TG_MTX2x4, GX_TG_TEXCOORD0, 42, GX_FALSE, 125); - PSMTXScale(sp98, 0.49f, -0.49f, 0.49f); - PSMTXConcat(sp98, Hu3DCameraMtx, sp68); + MTXScale(sp98, 0.49f, -0.49f, 0.49f); + MTXConcat(sp98, Hu3DCameraMtx, sp68); sp68[0][3] = 0.5f; sp68[1][3] = 0.5f; GXLoadTexMtxImm(sp68, 33, GX_MTX2x4); @@ -795,18 +804,18 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP1); GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); - PSMTXScale(sp68, -0.5f, -0.5f, 0.5f); + MTXScale(sp68, -0.5f, -0.5f, 0.5f); GXSetIndTexMtx(GX_ITM_0, (float(*)[3])sp68, -2); GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD1, GX_TEXMAP1); GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1); - PSMTXScale(sp68, 0.5f, 0.5f, 0.5f); + MTXScale(sp68, 0.5f, 0.5f, 0.5f); GXSetIndTexMtx(GX_ITM_1, (float(*)[3])sp68, 0); GXSetIndTexOrder(GX_INDTEXSTAGE2, GX_TEXCOORD1, GX_TEXMAP1); GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1); GXSetTevIndWarp(GX_TEVSTAGE2, GX_INDTEXSTAGE2, GX_TRUE, GX_FALSE, GX_ITM_2); GXSetTevIndWarp(GX_TEVSTAGE3, GX_INDTEXSTAGE2, GX_TRUE, GX_FALSE, GX_ITM_2); - PSMTXScale(sp68, -0.65f, -0.65f, 0.65f); + MTXScale(sp68, -0.65f, -0.65f, 0.65f); GXSetIndTexMtx(GX_ITM_2, (float(*)[3])sp68, -3); GXSetNumTevStages(5); GXSetTevColor(GX_TEVREG0, sp14); @@ -883,7 +892,7 @@ void fn_1_6B94(ModelData *model, ParticleData *particle, float (*matrix)[4]) particle->unk_00++; var_r31 = particle->unk_48; for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { - var_r31->unk00_s16 = 0; + var_r31->unk00 = 0; var_r31->unk2C = 0.0f; var_r31->unk40.a = 0; } @@ -891,16 +900,16 @@ void fn_1_6B94(ModelData *model, ParticleData *particle, float (*matrix)[4]) } var_r31 = particle->unk_48; for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { - if (var_r31->unk00_s16) { + if (var_r31->unk00) { var_r31->unk34.x += var_r31->unk08.x; var_r31->unk34.y += var_r31->unk08.y; var_r31->unk34.z += var_r31->unk08.z; var_r31->unk08.y += -0.27222225f; - if (var_r31->unk00_s16 < 12.0f) { + if (var_r31->unk00 < 12.0f) { var_r31->unk40.a = 0.88f * var_r31->unk40.a; } - if (!(--var_r31->unk00_s16)) { - var_r31->unk00_s16 = 0; + if (!(--var_r31->unk00)) { + var_r31->unk00 = 0; var_r31->unk2C = 0.0f; var_r31->unk40.a = 0; } @@ -936,12 +945,13 @@ void fn_1_6D64(s32 arg0, u32 arg1, float arg8, float arg9, float argA) arg8 += 180.0f; arg9 = 60.0f; var_f27 = fn_1_75BC(); - } else { + } + else { var_r28 = 20.0f + (80.0f * argA); var_f27 = 0.0f; } for (var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { - if (var_r31->unk00_s16) { + if (var_r31->unk00) { continue; } var_r31->unk00 = 60.0f * (1.0f + (0.0005f * frandmod(1000))); @@ -972,7 +982,8 @@ void fn_1_6D64(s32 arg0, u32 arg1, float arg8, float arg9, float argA) var_r31->unk40.r = 200.0f + (55.0f * var_f31); var_r31->unk40.g = 220.0f + (20.0f * var_f31); var_r31->unk40.b = 245.0f + (10.0f * var_f31); - } else { + } + else { var_r31->unk2C = 100.0f + frandmod(100); var_r31->unk40.a = frandmod(100) + 80; var_r31->unk40.r = 200.0f + (55.0f * var_f31); @@ -1087,7 +1098,8 @@ void fn_1_7968(float arg8, float arg9, float argA, Vec *arg0) if (var_r30 < 0) { arg0->x = arg0->z = 0.0f; arg0->y = 1.0f; - } else { + } + else { *arg0 = lbl_1_bss_178.unk_6C4[lbl_1_bss_178.unk_6B4][var_r30]; } } diff --git a/src/REL/m418Dll/main.c b/src/REL/m418Dll/main.c new file mode 100644 index 00000000..38b547ca --- /dev/null +++ b/src/REL/m418Dll/main.c @@ -0,0 +1,2878 @@ +#include "ext_math.h" +#include "game/chrman.h" +#include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/wipe.h" +#include "math.h" + +#include "REL/m418Dll.h" + +// types +typedef struct M418DllUnkStruct2 { + omObjData *unk0; + s32 unk4[4]; +} M418DllUnkStruct2; // sizeof 0x14 + +typedef struct M418DllUnkStruct3 { + omObjData *unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + f32 unk20; + s32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + f32 unk34; + f32 unk38; + f32 unk3C; + char unk40[0xC]; + s32 unk4C; + s32 unk50; + s32 unk54; + s32 unk58; + s32 unk5C; +} M418DllUnkStruct3; // sizeof 0x60 + +typedef struct M418DllUnkStruct4 { + omObjData *unk0; + f32 unk4; + f32 unk8; + s32 unkC; + s32 unk10; + union { + f32 unk14; + s32 unk14s; + }; + union { + f32 unk18; + s32 unk18s; + }; +} M418DllUnkStruct4; // sizeof 0x1C + +typedef struct M418DllUnkStruct6 { + s32 unk0; + s32 unk4[3]; + s32 unk10[3]; + s32 unk1C[3]; + s32 unk28[3]; + s32 unk34; + s32 unk38; + s32 unk3C; + s32 unk40; +} M418DllUnkStruct6; // sizeof 0x44 + +typedef struct M418DllWorkStruct { + omObjData *unk0; + Vec unk4; + Vec unk10[10]; + s32 unk88; + s32 unk8C[10]; +} M418DllWorkStruct; + +// bss +M418DllUnkStruct6 lbl_1_bss_3EC; +M418DllUnkStruct3 lbl_1_bss_26C[4]; +s32 lbl_1_bss_240[11]; +M418DllUnkStruct lbl_1_bss_1F4; +M418DllUnkStruct2 lbl_1_bss_1E0; +M418DllUnkStruct4 lbl_1_bss_170[4]; +M418DllUnkStruct4 lbl_1_bss_11C[3]; +M418DllWorkStruct lbl_1_bss_68; +M418DllUnkStruct7 lbl_1_bss_50; +M418DllUnkStruct7 lbl_1_bss_38; +M418DllUnkStruct7 lbl_1_bss_20; +s32 lbl_1_bss_1C; +u32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +Process *lbl_1_bss_0; + +// data +s32 lbl_1_data_0[2] = { -1, -1 }; +s32 lbl_1_data_8 = -1; + +void fn_1_0(void) +{ + Hu3DGLightCreate(-2500.0f, 5000.0f, 5000.0f, 0.0f, -1.0f, -1.0f, 0xFF, 0xD8, 0xA0); +} + +void fn_1_74(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; + Vec sp20 = { 0.0f, 600.0f, 600.0f }; + + fn_1_B104(var_r31, sp2C, sp20); + fn_1_B41C(var_r31); + var_r31->rot.x++; +} + +void fn_1_158(s32 arg0, f32 arg8) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + + var_r31->unk3C[arg0] = arg8; +} + +f32 fn_1_180(s32 arg0) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + + if (var_r31->unk3C[arg0] != 0.0f) { + var_r31->unk3C[arg0] *= -0.9f; + if (var_r31->unk3C[arg0] >= -0.5f) { + if (var_r31->unk3C[arg0] <= 0.5f) { + var_r31->unk3C[arg0] = 0.0f; + } + } + } + return var_r31->unk3C[arg0]; +} + +void fn_1_248(M418DllFunc arg0) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + + var_r31->unk0 = arg0; +} + +void fn_1_268(omObjData *object) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + + if (var_r31->unk0 != NULL) { + var_r31->unk0(); + } + + Center.x = var_r31->center.x + fn_1_180(0); + Center.y = var_r31->center.y + fn_1_180(1); + Center.z = var_r31->center.z + fn_1_180(2); + CRot.x = var_r31->rot.x; + CRot.y = var_r31->rot.y; + CRot.z = var_r31->rot.z; + CZoom = var_r31->zoom; +} + +void fn_1_500(void) +{ + M418DllUnkStruct *var_r31; + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 40.0f, 0.1f, 17500.0f, 1.2f); + var_r31 = &lbl_1_bss_1F4; + var_r31->unk0 = fn_1_74; + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_268); +} + +void fn_1_618(void) +{ + Vec sp20 = { -1500.0f, 2500.0f, 1000.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(40.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.675f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_6DC(s32 arg0) +{ + if (lbl_1_bss_8 == 0) { + lbl_1_bss_8 = 1; + lbl_1_bss_4 = arg0 * 0x3C; + } +} + +s32 fn_1_714(void) +{ + s32 var_r31 = 0; + + if (lbl_1_bss_8 == 3) { + var_r31 = 1; + } + return var_r31; +} + +void fn_1_748(void) +{ + if (lbl_1_bss_8 == 2) { + lbl_1_bss_8 = 3; + lbl_1_bss_4 = 30; + } +} + +void fn_1_780(omObjData *object) +{ + switch (lbl_1_bss_8) { + case 1: + if (lbl_1_data_8 == -1) { + lbl_1_data_8 = MGSeqCreate(1, lbl_1_bss_4 / 60, -1, -1); + } + lbl_1_bss_8 = 2; + break; + case 2: + lbl_1_bss_4--; + if (lbl_1_data_8 != -1) { + MGSeqParamSet(lbl_1_data_8, 1, ((lbl_1_bss_4 + 0x3B) / 60)); + } + if (lbl_1_bss_4 <= 0) { + lbl_1_bss_4 = 30; + lbl_1_bss_8 = 3; + } + break; + case 3: + if (lbl_1_data_8 != -1) { + MGSeqParamSet(lbl_1_data_8, 2, -1); + lbl_1_data_8 = -1; + } + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 0; + break; + } +} + +s32 fn_1_950(s32 arg0) +{ + + if ((rand8() % arg0) == 0) { + return 1; + } + else { + return 0; + } +} + +void fn_1_998(omObjData *object) +{ + s32 var_r31; + M418DllUnkStruct2 *var_r30 = &lbl_1_bss_1E0; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + switch (var_r30->unk4[var_r31]) { + case 1: + fn_1_ABC4(object, var_r31 + 1, var_r31 + 1, 0, 2); + var_r30->unk4[var_r31] = 99; + break; + case 2: + fn_1_ABC4(object, var_r31 + 1, var_r31 + 1, 0, 0); + var_r30->unk4[var_r31] = 99; + break; + case 3: + HuAudFXPlay(0x5DD); + Hu3DModelAttrSet(object->model[var_r31 + 1], 0x40000004); + var_r30->unk4[var_r31] = 99; + break; + } + } +} + +void fn_1_AA8(omObjData *object) +{ + Mtx sp10; + char *sp8[2] = { "scene02-dai1_null", "scene02-dai2_null1" }; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + Hu3DModelObjMtxGet(object->model[5], sp8[var_r31], sp10); + Hu3DModelPosSet(object->model[var_r31 + 6], sp10[0][3], sp10[1][3], sp10[2][3]); + } + object->func = fn_1_998; +} + +void fn_1_B4C(omObjData *object) +{ + s32 sp8[3] = { 0x310021, 0x310022, 0x310023 }; + s32 var_r30; + + object->model[0] = Hu3DModelCreateFile(0x310011); + Hu3DModelShadowMapSet(object->model[0]); + + for (var_r30 = 1; var_r30 < 4; var_r30++) { + object->model[var_r30] = Hu3DModelCreateFile(sp8[var_r30 - 1]); + object->motion[var_r30] = Hu3DMotionIDGet(object->model[var_r30]); + Hu3DModelShadowMapSet(object->model[var_r30]); + Hu3DModelPosSet(object->model[var_r30], 0.0f, 0.0f, 0.0f); + fn_1_ABC4(object, var_r30, var_r30, 0, 2); + } + object->model[4] = Hu3DModelCreateFile(0x310016); + object->model[5] = Hu3DModelCreateFile(0x310018); + + for (var_r30 = 6; var_r30 < 8; var_r30++) { + object->model[var_r30] = Hu3DModelCreateFile(0x310026); + object->motion[var_r30] = Hu3DMotionIDGet(object->model[var_r30]); + Hu3DModelScaleSet(object->model[var_r30], 2.0f, 2.0f, 2.0f); + Hu3DModelLayerSet(object->model[var_r30], 1); + fn_1_ABC4(object, var_r30, var_r30, 0, 1); + } + + for (var_r30 = 8; var_r30 < 11; var_r30++) { + object->model[var_r30] = Hu3DModelCreateFile(0x31002A); + object->motion[var_r30] = Hu3DJointMotion(object->model[var_r30], HuDataSelHeapReadNum(0x31002E, MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DModelPosSet(object->model[var_r30], -350.0f + 360.0f * (var_r30 - 8), -200.0f, -660.0f); + fn_1_ABC4(object, var_r30, var_r30, 0, 1); + } + object->func = fn_1_AA8; +} + +void fn_1_E74(omObjData *object) +{ + Mtx sp18; + f32 var_f31; + + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct4 *temp_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct4 *temp_r27; + M418DllUnkStruct6 *temp_r26; + HsfObject *temp_r25; + ModelData *temp_r24; + + temp_r26 = &lbl_1_bss_3EC; + temp_r28 = &lbl_1_bss_26C[temp_r26->unk0]; + temp_r30 = &lbl_1_bss_170[object->work[0]]; + if (object->work[1] == 0) { + fn_1_ABC4(object, 2, 2, 0, 2); + } + else if (object->work[1] == 1) { + Hu3DModelAttrReset(object->model[3], 1); + Hu3DModelAttrReset(object->model[4], 1); + Hu3DModelAttrReset(object->model[5], 1); + Hu3DModelAttrReset(object->model[6], 1); + fn_1_ABC4(object, 2, 2, 0, 0); + fn_1_ABC4(object, 3, 3, 0, 0); + fn_1_ABC4(object, 4, 4, 0, 1); + object->work[1] = 2; + lbl_1_bss_240[5] = HuAudFXPlay(0x5D6); + } + else if (object->work[1] == 2) { + if (Hu3DMotionEndCheck(object->model[3]) != 0) { + object->work[1] = 3; + object->work[2] = 0; + temp_r30->unkC = 1; + HuAudFXFadeOut(lbl_1_bss_240[5], 0x3E8); + } + } + else if (object->work[1] == 3) { + temp_r29 = &lbl_1_bss_170[object->work[0]]; + temp_r29->unkC = 2; + temp_r29->unk4 += 1.0f; + if (temp_r29->unk4 >= 20.0f) { + temp_r29->unk4 = 20.0f; + } + if (object->work[2]++ >= 0x5A) { + if (temp_r29->unk10 == 1) { + object->work[1] = 5; + temp_r29->unk8 = 0.0f; + } + else { + HuAudFXPlay(0x5D2); + object->work[1] = 4; + Hu3DModelObjMtxGet(object->model[0], "taihou-null4", sp18); + Hu3DModelPosSet(object->model[5], sp18[0][3], sp18[1][3], sp18[2][3]); + fn_1_ABC4(object, 5, 5, 0, 0); + fn_1_158(2, 256.0f); + } + temp_r29->unkC = 3; + } + } + else if (object->work[1] == 4) { + if ((Hu3DMotionEndCheck(object->model[5]) != 0) || (temp_r30->unk10 == 1)) { + object->work[1] = 99; + Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[4], 1); + Hu3DModelAttrSet(object->model[5], 1); + } + } + else if (object->work[1] == 5 || object->work[1] == 6) { + if (temp_r30->unk8 > 1.7f) { + temp_r30->unk8 = 1.7f; + } + if (object->work[1] == 5) { + var_f31 = temp_r30->unk8 * temp_r30->unk8 * (temp_r30->unk8 >= 0.0f ? -3.5f : 3.5f); + temp_r30->unk4 += var_f31; + } + else { + var_f31 = temp_r30->unk8 * temp_r30->unk8 * (temp_r30->unk8 >= 0.0f ? -1.25f : 1.25f); + temp_r30->unk4 += var_f31; + } + if (temp_r30->unk4 <= 0.0f && object->work[1] == 5) { + temp_r30->unk4 = 0.0f; + temp_r30->unk8 = -1.47f; + object->work[1] = 6; + fn_1_158(1, 4.0f); + omVibrate(temp_r28->unk4, 0xC, 6, 6); + HuAudFXPlay(0x5DA); + } + else { + if ((temp_r30->unk4 <= 0.0f) && (object->work[1] == 6)) { + Hu3DModelObjMtxGet(object->model[0], "taihou-null4", sp18); + Hu3DModelPosSet(object->model[6], sp18[0][3], sp18[1][3], sp18[2][3]); + fn_1_158(1, 4.0f); + omVibrate(temp_r28->unk4, 0xC, 6, 6); + temp_r30->unk4 = 0.0f; + temp_r30->unk8 = 0.0f; + object->work[1] = 4; + fn_1_ABC4(object, 6, 6, 0, 0); + HuAudFXPlay(0x5DA); + HuAudFXPlay(0x5DB); + } + } + temp_r30->unk8 += 0.11f; + } + if (object->work[1] != 0) { + const char *sp8[4] = { "doukasen-null_B", "doukasen-null_A", "doukasen-null_X", "doukasen-null_Y" }; + Hu3DModelObjMtxGet(object->model[3], sp8[object->work[0]], sp18); + Hu3DModelPosSet(object->model[4], sp18[0][3], sp18[1][3], sp18[2][3]); + } + temp_r27 = &lbl_1_bss_170[object->work[0]]; + temp_r25 = Hu3DModelObjPtrGet(object->model[0], "taihou-taihou"); + temp_r25->data.base.rot.x = temp_r27->unk4; + temp_r24 = &Hu3DData[object->model[1]]; + temp_r24->rot.x = temp_r27->unk4; +} + +void fn_1_14F0(omObjData *arg0) +{ + s32 var_r30 = arg0->work[0]; + s32 sp28[4] = { 0x310012, 0x310013, 0x310015, 0x310014 }; + s32 sp18[4] = { 0x310019, 0x31001A, 0x31001B, 0x31001C }; + s32 sp8[4] = { 0x31001D, 0x31001E, 0x31001F, 0x310020 }; + + arg0->model[0] = Hu3DModelCreateFile(0x310010); + omSetTra(arg0, -540.0f + (360.0f * var_r30), 115.0f, -900.0f); + arg0->model[1] = Hu3DModelCreateFile(sp28[var_r30]); + Hu3DModelPosSet(arg0->model[1], -540.0f + (360.0f * var_r30), 115.0f, -900.0f); + arg0->model[2] = Hu3DModelCreateFile(sp18[var_r30]); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + fn_1_ABC4(arg0, 2, 2, 0, 2); + arg0->model[3] = Hu3DModelCreateFile(sp8[var_r30]); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[3]); + Hu3DModelAttrSet(arg0->model[3], 1); + fn_1_ABC4(arg0, 3, 3, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(0x310025); + arg0->motion[4] = Hu3DMotionIDGet(arg0->model[4]); + Hu3DModelAttrSet(arg0->model[4], 1); + fn_1_ABC4(arg0, 4, 4, 0, 2); + arg0->model[5] = Hu3DModelCreateFile(0x310024); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelAttrSet(arg0->model[5], 1); + fn_1_ABC4(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(0x310028); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelAttrSet(arg0->model[6], 1); + fn_1_ABC4(arg0, 6, 6, 0, 2); + Hu3DModelScaleSet(arg0->model[6], 3.0f, 3.0f, 3.0f); + arg0->func = fn_1_E74; +} + +void fn_1_18AC(omObjData *object) +{ + M418DllUnkStruct4 *var_r31; + + var_r31 = &lbl_1_bss_11C[object->work[0]]; + if (var_r31->unk14 == 0.0f) { + var_r31->unk14 = 1.0f; + } +} + +s32 fn_1_18FC(omObjData *object, Vec arg1, f32 arg8, f32 arg9) +{ + M418DllUnkStruct4 *temp_r30; + s32 var_r28; + f32 var_f31; + f32 var_f30; + f32 var_f27; + f32 var_f26; + f32 var_f24; + f32 var_f20; + + var_r28 = 0; + temp_r30 = &lbl_1_bss_11C[object->work[0]]; + var_f31 = arg1.x - object->trans.x; + var_f30 = object->trans.z - arg1.z; + var_f26 = 90.0 + atan2d(var_f30, var_f31); + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 <= 15.0f) { + var_f31 = var_f30 = 0.0f; + } + else { + var_f31 = 55.0f * (var_f31 / var_f27); + var_f30 = 55.0f * (var_f30 / var_f27); + } + if (temp_r30->unk14 == 1.0f) { + temp_r30->unk18 = -1.47f; + } + var_f27 = arg9 * (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 72.0f); + if (var_f27 >= arg9) { + var_f27 = arg9; + } + else if (var_f27 <= 1.0f) { + var_f31 = var_f30 = var_f27 = 0.0f; + var_r28 = 1; + } + if (var_f31 != 0.0f || var_f30 != 0.0f || arg8 >= 0.0f) { + if (arg8 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) { + var_f26 = arg8; + } + if (var_f26 >= 180.0f) { + if (object->rot.y - var_f26 >= 180.0f) { + object->rot.y -= 360.0f; + } + if (object->rot.y - var_f26 < -180.0f) { + object->rot.y += 360.0f; + } + } + else { + if (object->rot.y - var_f26 > 180.0f) { + object->rot.y -= 360.0f; + } + if (object->rot.y - var_f26 <= -180.0f) { + object->rot.y += 360.0f; + } + } + object->rot.y = (((9.0f * object->rot.y) + var_f26) / 10.0f); + } + object->trans.x += var_f27 * sind(object->rot.y); + object->trans.z += var_f27 * cosd(object->rot.y); + if (temp_r30->unk14) { + temp_r30->unk14 = 2.0f; + if (temp_r30->unk18 > 1.7f) { + temp_r30->unk18 = 1.7f; + } + var_f20 = (temp_r30->unk18 * temp_r30->unk18) * (temp_r30->unk18 >= 0.0f ? -3.5f : 3.5f); + object->trans.y += var_f20; + if (object->trans.y <= arg1.y) { + object->trans.y = arg1.y; + temp_r30->unk14 = temp_r30->unk18 = 0.0f; + var_r28 = 2; + } + temp_r30->unk18 += 0.11f; + } + if (var_f27 > 0.0f) { + fn_1_AD14(object, 0, 1, 10, 1); + } + else { + fn_1_AD14(object, 0, 0, 10, 1); + } + return var_r28; +} + +s32 fn_1_20B0(omObjData *object, Vec arg1, f32 arg8, f32 arg9, s32 arg2) +{ + if (arg2 == 1) + fn_1_18AC(object); + return fn_1_18FC(object, arg1, arg9, arg8); +} + +Vec lbl_1_data_8C[9] = { { 140.0f, 0.0f, -90.0f }, { -200.0f, 0.0f, 50.0f }, { -300.0f, 0.0f, -150.0f }, { -250.0f, 0.0f, -500.0f }, + { 0.0f, 0.0f, 150.0f }, { 700.0f, 0.0f, 50.0f }, { 1000.0f, -50.0f, 500.0f }, { 1000.0f, -100.0f, 500.0f }, { 1000.0f, -150.0f, 500.0f } }; + +s32 fn_1_2178(omObjData *object) +{ + s32 var_r30; + + switch (object->work[1]) { + case 1: + object->work[2] = 0; + object->work[1] = 10; + case 10: + fn_1_20B0(object, lbl_1_data_8C[1], 0.0f, 25.0f, 0); + if (object->work[2]++ >= 15) { + object->work[1] = 11; + object->work[2] = 0; + } + break; + case 11: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[1], 6.0f, -1.0f, 0); + if (var_r30 != 0) { + object->work[1] = 12; + object->work[2] = 0; + } + break; + case 12: + fn_1_20B0(object, lbl_1_data_8C[1], 0.0f, 0.0f, 0); + if (object->work[2]++ >= 15) { + object->work[1] = 13; + object->work[2] = 0; + } + break; + + case 2: + object->work[2] = 0; + object->work[1] = 0x14; + case 20: + fn_1_20B0(object, lbl_1_data_8C[0], 0.0f, 25.0f, 0); + if (object->work[2]++ >= 15) { + object->work[1] = 21; + object->work[2] = 0; + } + break; + case 21: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[4], 6.0f, -1.0f, 0); + if (var_r30 != 0) { + object->work[1] = 22; + object->work[2] = 0; + } + break; + case 22: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[0], 6.0f, 0.0f, 0); + if (var_r30 != 0) { + object->work[1] = 24; + object->work[2] = 0; + } + break; + case 23: + fn_1_20B0(object, lbl_1_data_8C[1], 0.0f, 0.0f, 0); + if (object->work[2]++ >= 30) { + object->work[1] = 24; + object->work[2] = 0; + } + break; + case 3: + object->work[2] = 0; + object->work[1] = 30; + case 30: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[5], 6.0f, -1.0f, 0); + if (var_r30 == 1) { + object->work[1] = 31; + object->work[2] = 0; + } + break; + case 31: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[6], 6.0f, -1.0f, 1); + if (var_r30 != 0) { + object->work[1] = 32; + object->work[2] = 0; + } + break; + case 32: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[7], 6.0f, -1.0f, 1); + if (var_r30 != 0) { + object->work[1] = 33; + object->work[2] = 0; + } + break; + case 33: + var_r30 = fn_1_20B0(object, lbl_1_data_8C[8], 6.0f, -1.0f, 1); + if (var_r30 != 0) { + object->work[1] = 34; + object->work[2] = 0; + } + break; + } +} + +void fn_1_2894(omObjData *object) +{ + Mtx sp3C; + Mtx spC; + M418DllUnkStruct6 *sp8; + f32 temp_f31; + + sp8 = &lbl_1_bss_3EC; + temp_f31 = 0.5f + (0.5f * (CRot.x / 90.0f)); + Hu3DModelObjMtxGet(object->model[0], "g031m1-itemhook_R", spC); + Hu3DModelObjMtxGet(object->model[5], "g031i00-itemhook_eff", sp3C); + Hu3DModelRotSet(object->model[6], 0.0f, -object->rot.y, 0.0f); + Hu3DModelScaleSet(object->model[6], 0.35f, temp_f31, 0.35f); + fn_1_2178(object); +} + +void fn_1_29A0(omObjData *object) +{ + u32 temp_r30; + + temp_r30 = object->work[0]; + object->model[0] = Hu3DModelCreateFile(0x31002A); + object->motion[0] = Hu3DJointMotionFile(object->model[0], 0x31002B); + object->motion[1] = Hu3DJointMotionFile(object->model[0], 0x31002C); + object->motion[2] = Hu3DJointMotionFile(object->model[0], 0x31002D); + object->motion[3] = Hu3DJointMotionFile(object->model[0], 0x31002E); + omSetTra(object, lbl_1_data_8C[temp_r30].x, lbl_1_data_8C[temp_r30].y, lbl_1_data_8C[temp_r30].z); + fn_1_ABC4(object, 0, 0, 0, 1); + object->model[5] = Hu3DModelCreateFile(0x31002F); + Hu3DModelHookSet(object->model[0], "g031m1-itemhook_R", object->model[5]); + object->model[6] = Hu3DModelCreateFile(0x310027); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "g031i00-itemhook_eff", object->model[6]); + fn_1_ABC4(object, 6, 6, 0, 1); + object->work[1] = -1; + Hu3DModelShadowSet(object->model[0]); + object->func = fn_1_2894; +} + +void fn_1_2BC4(Vec arg0) +{ + M418DllWorkStruct *var_r31 = &lbl_1_bss_68; + var_r31->unk4.x = arg0.x; + var_r31->unk4.y = arg0.y; + var_r31->unk4.z = arg0.z; + var_r31->unk88 = 0; + var_r31->unk0->work[0] = 1; +} + +void fn_1_2C0C(omObjData *object) +{ + ModelData *temp_r28; + M418DllWorkStruct *var_r31 = &lbl_1_bss_68; + s32 var_r30; + + switch (object->work[0]) { + case 1: + for (var_r30 = 0; var_r30 < 10; var_r30++) { + var_r31->unk10[var_r30].x = (var_r31->unk4.x + 50.0 * cosd(36.0f * var_r30)) + (rand8() % 25); + var_r31->unk10[var_r30].y = (var_r31->unk4.y + 50.0 * sind(36.0f * var_r30)) + (rand8() % 25); + var_r31->unk10[var_r30].z = var_r31->unk4.z; + var_r31->unk8C[var_r30] = (rand8() % 5) + 10; + Hu3DModelPosSet(object->model[var_r30 + 1], var_r31->unk4.x, var_r31->unk4.y, var_r31->unk4.z); + Hu3DModelTPLvlSet(object->model[var_r30 + 1], 1.0f); + } + object->work[0] = 2; + break; + case 2: + for (var_r30 = 0; var_r30 < 10; var_r30++) { + temp_r28 = &Hu3DData[object->model[var_r30 + 1]]; + temp_r28->pos.x = fn_1_A920(temp_r28->pos.x, var_r31->unk10[var_r30].x, var_r31->unk8C[var_r30]); + temp_r28->pos.y = fn_1_A920(temp_r28->pos.y, var_r31->unk10[var_r30].y, var_r31->unk8C[var_r30]); + temp_r28->pos.z = fn_1_A920(temp_r28->pos.z, var_r31->unk10[var_r30].z, var_r31->unk8C[var_r30]); + if (var_r31->unk88 >= 20) { + Hu3DModelTPLvlSet(object->model[var_r30 + 1], 1.0f - (0.1f * (var_r31->unk88 - 0x14))); + } + } + if (var_r31->unk88 >= 30) { + object->work[0] = 0; + } + var_r31->unk88++; + } +} + +void fn_1_3054(omObjData *object) +{ + s32 var_r30; + + for (var_r30 = 1; var_r30 < 11; var_r30++) { + object->model[var_r30] = Hu3DModelCreateFile(0x310029); + Hu3DModelPosSet(object->model[var_r30], 0.0f, -500.0f, 0.0f); + Hu3DModelScaleSet(object->model[var_r30], 10.0f, 10.0f, 10.0f); + } + object->work[0] = 0; + object->func = fn_1_2C0C; +} + +void fn_1_3138(void) +{ + M418DllUnkStruct3 *temp_r31; + s32 var_r30; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + temp_r31 = &lbl_1_bss_26C[var_r30]; + temp_r31->unk4 = var_r30; + temp_r31->unk8 = GWPlayerCfg[temp_r31->unk4].group; + if (temp_r31->unk8 == 0) { + temp_r31->unk8 = 0; + } + else { + temp_r31->unk8 = 1; + } + temp_r31->unkC = GWPlayerCfg[temp_r31->unk4].iscom; + if (temp_r31->unkC != 0) { + temp_r31->unk10 = GWPlayerCfg[temp_r31->unk4].diff; + } + else { + temp_r31->unk10 = 0; + } + temp_r31->unk14 = GWPlayerCfg[temp_r31->unk4].character; + temp_r31->unk18 = GWPlayerCfg[temp_r31->unk4].pad_idx; + } +} + +char *lbl_1_data_1C0[8] = { "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", + "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r" }; + +void fn_1_3240(omObjData *object) +{ + Mtx sp14; + Vec sp8; + M418DllUnkStruct3 *temp_r28; + ModelData *temp_r30; + M418DllWorkStruct *var_r29; + + temp_r30 = &Hu3DData[object->model[11]]; + temp_r28 = &lbl_1_bss_26C[object->work[0]]; + switch (object->work[1]) { + case 1: + Hu3DModelHookReset(object->model[0]); + Hu3DModelObjMtxGet(object->model[0], lbl_1_data_1C0[temp_r28->unk14], sp14); + Hu3DModelPosSet(object->model[11], sp14[0][3], sp14[1][3], sp14[2][3]); + temp_r30->rot.y = object->rot.y; + object->work[1] = 2; + object->work[2] = 0; + break; + case 2: + fn_1_AD14(object, 0, 0, 0x1E, 1); + temp_r30->pos.y = fn_1_A920(temp_r30->pos.y, 350.0f, 30.0f); + temp_r30->rot.x += 30.0f; + if (object->work[2]++ >= 0x1EU) { + HuAudFXPlay(0x5DE); + fn_1_2BC4(temp_r30->pos); + Hu3DModelAttrSet(object->model[11], 1); + object->work[1] = object->work[2] = 0; + } + break; + } +} + +void fn_1_3408(omObjData *object) +{ + M418DllUnkStruct3 *temp_r31; + + temp_r31 = &lbl_1_bss_26C[object->work[0]]; + if (temp_r31->unk1C == 0) { + temp_r31->unk1C = 1; + } +} + +void fn_1_3444(omObjData *object, Vec arg1, f32 arg8, f32 arg9) +{ + s32 sp24; + f32 sp20; + f32 sp1C; + f32 sp18; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct3 *temp_r30; + + f32 var_f31; + f32 var_f30; + f32 temp_f29; + f32 temp_f28; + f32 var_f24; + f32 var_f23; + f32 var_f22; + + s32 var_r27; + s32 var_r29; + + sp24 = 0; + var_r27 = 0; + temp_r30 = &lbl_1_bss_26C[object->work[0]]; + var_f31 = arg1.x - object->trans.x; + var_f30 = object->trans.z - arg1.z; + var_f23 = 90.0 + atan2d(var_f30, var_f31); + var_f24 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f24 <= 30.0f) { + var_f31 = var_f30 = 0.0f; + } + else { + var_f31 = 55.0f * (var_f31 / var_f24); + var_f30 = 55.0f * (var_f30 / var_f24); + } + if (temp_r30->unk1C == 1) { + temp_r30->unk20 = -1.47f; + } + var_f24 = arg9 * (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 72.0f); + if (var_f24 >= arg9) { + var_f24 = arg9; + } + else if (var_f24 <= 1.0f) { + var_f31 = var_f30 = var_f24 = 0.0f; + } + if (var_f31 != 0.0f || var_f30 != 0.0f || arg8 >= 0.0f) { + if (arg8 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) { + var_f23 = arg8; + } + if (var_f23 >= 180.0f) { + if (object->rot.y - var_f23 >= 180.0f) { + object->rot.y -= 360.0f; + } + if (object->rot.y - var_f23 < -180.0f) { + object->rot.y += 360.0f; + } + } + else { + if (object->rot.y - var_f23 > 180.0f) { + object->rot.y -= 360.0f; + } + if (object->rot.y - var_f23 <= -180.0f) { + object->rot.y += 360.0f; + } + } + object->rot.y = (((4.0f * object->rot.y) + var_f23) / 5.0f); + } + var_r27 = 0; + sp1C = object->trans.x + (50.0 * cosd(object->rot.y - 90.0f)); + sp18 = object->trans.z - (50.0 * sind(object->rot.y - 90.0f)); + + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 == object->work[0]) + continue; + temp_r28 = &lbl_1_bss_26C[var_r29]; + temp_f29 = temp_r28->unk0->trans.x; + temp_f28 = temp_r28->unk0->trans.z; + temp_f29 -= sp1C; + temp_f28 -= sp18; + if (sqrtf((temp_f29 * temp_f29) + (temp_f28 * temp_f28)) < 100.0f) { + var_r27 = 1; + break; + } + } + if (var_r27 == 0) { + object->trans.x = object->trans.x + (var_f24 * sind(object->rot.y)); + object->trans.z = object->trans.z + (var_f24 * cosd(object->rot.y)); + } + if (temp_r30->unk1C != 0) { + temp_r30->unk1C = 2; + if (temp_r30->unk20 > 1.7f) { + temp_r30->unk20 = 1.7f; + } + sp20 = temp_r30->unk20 * temp_r30->unk20 * (temp_r30->unk20 >= 0.0f ? -17.5f : 17.5f); + object->trans.y += sp20; + if (object->trans.y <= 0.0f) { + object->trans.y = 0.0f; + temp_r30->unk1C = temp_r30->unk20 = 0.0f; + omVibrate(temp_r30->unk4, 0xC, 6, 6); + } + temp_r30->unk20 += 0.11f; + } + if (temp_r30->unk1C != 0) { + fn_1_AD14(object, 0, 3, 10, 0); + return; + } + if (var_f24 >= 6.75f) { + fn_1_AD14(object, 0, 2, 10, 1); + return; + } + if (var_f24 > 0.0f) { + fn_1_AD14(object, 0, 1, 10, 1); + return; + } + fn_1_AD14(object, 0, 0, 10, 1); +} + +void fn_1_3EB0(omObjData *object, Vec arg1, f32 arg8, f32 arg9) +{ + M418DllUnkStruct3 *temp_r30; + s32 sp10; + f32 var_f31; + f32 var_f30; + f32 var_f27; + f32 var_f26; + f32 var_f24; + f32 var_f20; + + sp10 = 0; + temp_r30 = &lbl_1_bss_26C[object->work[0]]; + var_f31 = arg1.x - object->trans.x; + var_f30 = object->trans.z - arg1.z; + var_f26 = 90.0 + atan2d(var_f30, var_f31); + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 <= 30.0f) { + var_f31 = var_f30 = 0.0f; + } + else { + var_f31 = 55.0f * (var_f31 / var_f27); + var_f30 = 55.0f * (var_f30 / var_f27); + } + if (temp_r30->unk1C == 1) { + temp_r30->unk20 = -1.47f; + } + var_f27 = arg9 * (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 72.0f); + if (var_f27 >= arg9) { + var_f27 = arg9; + } + else if (var_f27 <= 1.0f) { + var_f31 = var_f30 = var_f27 = 0.0f; + } + if (var_f31 != 0.0f || var_f30 != 0.0f || arg8 >= 0.0f) { + if (arg8 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) { + var_f26 = arg8; + } + if (var_f26 >= 180.0f) { + if (object->rot.y - var_f26 >= 180.0f) { + object->rot.y -= 360.0f; + } + if (object->rot.y - var_f26 < -180.0f) { + object->rot.y += 360.0f; + } + } + else { + if (object->rot.y - var_f26 > 180.0f) { + object->rot.y -= 360.0f; + } + if (object->rot.y - var_f26 <= -180.0f) { + object->rot.y += 360.0f; + } + } + object->rot.y = (((4.0f * object->rot.y) + var_f26) / 5.0f); + } + object->trans.x += var_f27 * sind(object->rot.y); + object->trans.z += var_f27 * cosd(object->rot.y); + if (temp_r30->unk1C) { + temp_r30->unk1C = 2.0f; + if (temp_r30->unk20 > 1.7f) { + temp_r30->unk20 = 1.7f; + } + var_f20 = (temp_r30->unk20 * temp_r30->unk20) * (temp_r30->unk20 >= 0.0f ? -17.5f : 17.5f); + object->trans.y += var_f20; + if (object->trans.y <= 0.0f) { + object->trans.y = 0.0f; + temp_r30->unk1C = temp_r30->unk20 = 0.0f; + omVibrate(temp_r30->unk4, 0xC, 6, 6); + } + temp_r30->unk20 += 0.11f; + } + if (temp_r30->unk1C != 0) { + fn_1_AD14(object, 0, 3, 10, 0); + } + else if (var_f27 >= 6.75f) { + fn_1_AD14(object, 0, 2, 10, 1); + } + else if (var_f27 > 0.0f) { + fn_1_AD14(object, 0, 1, 10, 1); + } + else { + fn_1_AD14(object, 0, 0, 10, 1); + } +} + +s32 lbl_1_data_1E0[4][2] = { { -1, 127 }, { -1, 127 }, { -1, 127 }, { -1, 127 } }; + +void fn_1_46C4(omObjData *object) +{ + s32 sp8; + M418DllUnkStruct3 *temp_r31; + + sp8 = 0; + temp_r31 = &lbl_1_bss_26C[object->work[0]]; + + switch (temp_r31->unk24) { + case 0: + temp_r31->unk2C = object->scale.x; + temp_r31->unk34 = temp_r31->unk38 = 0.0f; + temp_r31->unk24 = 1; + break; + case 1: + temp_r31->unk28 -= 1.0f; + if (temp_r31->unk28 <= 0.0f) { + temp_r31->unk28 = 15.0f; + temp_r31->unk24 = 2; + omVibrate(temp_r31->unk4, 0xC, 0xC, 0); + lbl_1_data_1E0[object->work[0]][0] = HuAudCharVoicePlay(temp_r31->unk14, 0x123); + lbl_1_data_1E0[object->work[0]][1] = 0x7F; + HuAudFXPlay(0x5D4); + } + break; + case 2: + object->trans.x += 4.0f * temp_r31->unk30; + object->trans.y += 125.0 * sind(temp_r31->unk28); + object->trans.z -= 125.0 * cos(M_PI / 12.0); + if (temp_r31->unk28 <= 14.0f) { + Hu3DModelAttrReset(object->model[0], 1); + } + temp_r31->unk28 -= 0.25f; + if (temp_r31->unk28 <= 0.0f) { + temp_r31->unk24 = 3; + } + break; + case 3: + object->trans.y += 110.0 * sind(temp_r31->unk28); + temp_r31->unk28 -= 0.0275f; + temp_r31->unk2C -= 0.0025f; + if (temp_r31->unk2C <= 0.3f) { + temp_r31->unk2C = 0.0f; + temp_r31->unk24 = 4; + temp_r31->unk28 = 0.0f; + HuAudFXPlay(0x5D5); + } + omSetSca(object, temp_r31->unk2C, temp_r31->unk2C, temp_r31->unk2C); + break; + case 4: + temp_r31->unk38 = fn_1_A920(temp_r31->unk38, 360.0f, 15.0f); + temp_r31->unk34 = fn_1_A920(temp_r31->unk34, 4.0f, 15.0f); + Hu3DModelPosSet(object->model[1], object->trans.x, object->trans.y, object->trans.z); + Hu3DModelRotSet(object->model[1], 0.0f, 0.0f, temp_r31->unk38); + Hu3DModelScaleSet(object->model[1], temp_r31->unk34, temp_r31->unk34, temp_r31->unk34); + if (temp_r31->unk28++ >= 30.0f) { + temp_r31->unk24 = 5; + temp_r31->unk28 = 0.0f; + } + break; + case 5: + temp_r31->unk38 = fn_1_A920(temp_r31->unk38, 720.0f, 15.0f); + temp_r31->unk34 = fn_1_A920(temp_r31->unk34, 0.0f, 15.0f); + Hu3DModelPosSet(object->model[1], object->trans.x, object->trans.y, object->trans.z); + Hu3DModelRotSet(object->model[1], 0.0f, 0.0f, temp_r31->unk38); + Hu3DModelScaleSet(object->model[1], temp_r31->unk34, temp_r31->unk34, temp_r31->unk34); + if (temp_r31->unk28++ >= 60.0f) { + temp_r31->unk24 = 6; + temp_r31->unk28 = 0.0f; + } + break; + } + if ((temp_r31->unk24 >= 1) && (temp_r31->unk24 <= 5) && (lbl_1_data_1E0[object->work[0]][0] != -1)) { + HuAudFXVolSet(lbl_1_data_1E0[object->work[0]][0], --lbl_1_data_1E0[object->work[0]][1]); + if (lbl_1_data_1E0[object->work[0]][1] < 0) { + lbl_1_data_1E0[object->work[0]][1] = 0; + } + } +} + +void fn_1_4C84(omObjData *object) +{ + Mtx sp14; + Vec sp8; + f32 var_f31; + M418DllUnkStruct3 *temp_r26; + M418DllWorkStruct *var_r27; + M418DllUnkStruct3 *temp_r30; + ModelData *temp_r28; + ModelData *temp_r29; + s32 temp_r0; + u32 temp_r3; + + temp_r30 = &lbl_1_bss_26C[object->work[0]]; + if (temp_r30->unk8 == 0) { + var_f31 = (0.5f * temp_r30->unk3C) + ((CRot.x / 90.0f) * (0.5f * temp_r30->unk3C)); + temp_r29 = &Hu3DData[object->model[12]]; + if ((temp_r30->unk14 == 7) || (temp_r30->unk14 == 5)) { + temp_r29->rot.y = -object->rot.y - 360.0f; + } + else { + temp_r29->rot.y = -object->rot.y - 90.0f; + } + temp_r29->scale.x = 0.35f * temp_r30->unk3C; + temp_r29->scale.y = var_f31; + temp_r29->scale.z = 0.35f * temp_r30->unk3C; + fn_1_3240(object); + } + fn_1_46C4(object); +} + +void fn_1_4F60(omObjData *object) +{ + M418DllUnkStruct3 *temp_r30; + + temp_r30 = &lbl_1_bss_26C[object->work[0]]; + object->model[0] = CharModelCreate(temp_r30->unk14, 2); + object->motion[0] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[1] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + object->motion[2] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[3] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x73)); + object->motion[4] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x74)); + object->motion[5] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); + object->motion[6] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + object->motion[7] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1B)); + object->motion[8] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2A)); + object->motion[9] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r30->unk14 + 0x310000, 0x10000000, HEAP_DATA)); + object->motion[10] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r30->unk14 + 0x310008, 0x10000000, HEAP_DATA)); + object->model[1] = Hu3DModelCreateFile(0x310017); + Hu3DModelPosSet(object->model[1], 0.0f, -5000.0f, 0.0f); + Hu3DModelShadowSet(object->model[0]); + if (temp_r30->unk8 == 0) { + Hu3DMotionOverlaySet(object->model[0], object->motion[9]); + Hu3DMotionOverlaySpeedSet(object->model[0], 0.0f); + object->model[11] = Hu3DModelCreateFile(0x31002F); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(temp_r30->unk14, 2, 0), object->model[11]); + if ((temp_r30->unk14 == 4) || (temp_r30->unk14 == 5)) { + Hu3DModelScaleSet(object->model[11], 1.0f, 1.2f, 1.0f); + } + object->model[12] = Hu3DModelCreateFile(0x310027); + object->motion[12] = Hu3DMotionIDGet(object->model[12]); + Hu3DModelHookSet(object->model[11], "g031i00-itemhook_eff", object->model[12]); + Hu3DModelScaleSet(object->model[12], 0.0f, 0.5f, 0.0f); + fn_1_ABC4(object, 0xC, 0xC, 0, 1); + object->model[13] = Hu3DModelCreateFile(0x310028); + object->motion[13] = Hu3DMotionIDGet(object->model[13]); + fn_1_ABC4(object, 0xD, 0xD, 0, 2); + } + lbl_1_data_1E0[object->work[0]][0] = -1; + CharModelMotionDataClose(temp_r30->unk14); + CharModelLayerSetAll2(7); + object->func = fn_1_4C84; +} + +void fn_1_5358(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; + Vec sp20 = { 0.0f, 600.0f, 600.0f }; + + fn_1_B104(var_r31, sp2C, sp20); + fn_1_B41C(var_r31); + var_r31->rot.x++; +} + +void fn_1_543C(void) +{ + M418DllUnkStruct sp38; + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { -180.0f, 500.0f, 440.0f }; + Vec sp20 = { -180.0f, 330.0f, -760.0f }; + + fn_1_B104(&sp38, sp2C, sp20); + fn_1_B41C(&sp38); + sp38.center.x = 0.0f; + sp38.center.y -= 75.0f; + sp38.rot.x = -10.0f; + sp38.rot.y = 10.0f; + fn_1_DC10(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f); +} + +void fn_1_558C(void) +{ + M418DllUnkStruct sp38; + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; + Vec sp20 = { 0.0f, 600.0f, 600.0f }; + + fn_1_B104(&sp38, sp2C, sp20); + fn_1_B41C(&sp38); + sp38.rot.x++; + fn_1_CBF8(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f); +} + +void fn_1_56AC(s32 arg0) +{ + M418DllUnkStruct *var_r28 = &lbl_1_bss_1F4; + fn_1_B458(var_r28); + switch (arg0) { + case 0: + fn_1_248(fn_1_5358); + break; + case 1: + fn_1_248(fn_1_543C); + break; + case 2: + fn_1_248(fn_1_558C); + break; + } +} + +void fn_1_5768(s32 arg0) +{ + s32 var_r31; + M418DllUnkStruct4 *var_r30; + M418DllUnkStruct *var_r26; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r30 = &lbl_1_bss_170[var_r31]; + var_r30->unkC = 0; + } + + fn_1_56AC(0); +} + +s32 fn_1_57E4(s32 arg0) +{ + M418DllUnkStruct4 *temp_r31; + M418DllUnkStruct *var_r25; + s32 var_r29; + s32 var_r30; + + if (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x3C) { + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r31 = &lbl_1_bss_170[var_r30]; + if (temp_r31->unkC == 0) { + if ((rand8() % 5) == 0) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + if (var_r29 || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) { + HuAudFXPlay(0x5D3); + temp_r31->unkC = 1; + } + } + else { + temp_r31->unk4 += 5.0f; + if (temp_r31->unk4 >= 90.0f) { + temp_r31->unk4 = 90.0f; + } + } + } + } + if (fn_1_B0C8(&lbl_1_bss_50, 0) == 0x1E) { + fn_1_56AC(1); + } + if (fn_1_B0C8(&lbl_1_bss_50, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_50); + } + else { + return 0; + } +} + +s32 lbl_1_data_200[16] = { 0x310000, 0x310001, 0x310002, 0x310003, 0x310004, 0x310005, 0x310006, 0x310007, 0x310008, 0x310009, 0x31000A, 0x31000B, + 0x31000C, 0x31000D, 0x31000E, 0x31000F }; + +Vec lbl_1_data_240[3] = { + { -540.0f, 225.0f, -900.0f }, + { -180.0f, 225.0f, -900.0f }, + { 180.0f, 225.0f, -900.0f }, +}; + +void fn_1_5970(s32 arg0) +{ + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct4 *temp_r28; + s32 var_r31; + + temp_r29 = &lbl_1_bss_3EC; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r30 = &lbl_1_bss_26C[temp_r29->unk4[var_r31]]; + omSetTra(temp_r30->unk0, lbl_1_data_240[var_r31].x, lbl_1_data_240[var_r31].y, lbl_1_data_240[var_r31].z - 50.0f); + temp_r30->unk4C = 0; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r28 = &lbl_1_bss_170[var_r31]; + temp_r28->unkC = 0; + } +} + +Vec lbl_1_data_264[4] = { + { -355.0f, 0.0f, -680.0f }, + { 5.0f, 0.0f, -680.0f }, + { 365.0f, 0.0f, -680.0f }, +}; + +s32 fn_1_5A6C(s32 arg0) +{ + s32 var_r31; + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct4 *temp_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct6 *temp_r27; + s32 var_r26; + omObjData *temp_r25; + s32 var_r24; + M418DllUnkStruct *temp_r20; + + temp_r27 = &lbl_1_bss_3EC; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r30 = &lbl_1_bss_26C[temp_r27->unk4[var_r31]]; + if (temp_r30->unk4C == 0) { + if ((rand8() % 5) == 0) { + var_r26 = 1; + } + else { + var_r26 = 0; + } + if (var_r26 || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 5)) { + temp_r30->unk4C = 1; + temp_r25 = temp_r30->unk0; + temp_r28 = &lbl_1_bss_26C[temp_r25->work[0]]; + if (temp_r28->unk1C == 0) { + temp_r28->unk1C = 1; + } + HuAudCharVoicePlay(temp_r30->unk14, 0x122); + } + } + else { + fn_1_3EB0(temp_r30->unk0, lbl_1_data_264[var_r31], 0.0f, 9.0f); + } + } + if (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x3C) { + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r29 = &lbl_1_bss_170[var_r31]; + if (temp_r29->unkC == 0) { + if ((rand8() % 5) == 0) { + var_r24 = 1; + } + else { + var_r24 = 0; + } + if ((var_r24 != 0) || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) { + HuAudFXPlay(0x5D3); + temp_r29->unkC = 1; + } + } + else { + temp_r29->unk4 -= 2.5f; + if (temp_r29->unk4 <= 0.0f) { + temp_r29->unk4 = 0.0f; + } + } + } + } + if (fn_1_B0C8(&lbl_1_bss_50, 0) == 0x3C) { + fn_1_56AC(2); + } + if (fn_1_B0C8(&lbl_1_bss_50, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_50); + } + return 0; +} + +M418DllUnkStruct8 lbl_1_data_294[3] = { { fn_1_5768, fn_1_57E4, 0x5A }, { fn_1_5970, fn_1_5A6C, 0xB4 }, { NULL, NULL, -1 } }; + +void fn_1_5D28(void) +{ + fn_1_AEDC(&lbl_1_bss_50, &lbl_1_data_294[0]); +} + +s32 fn_1_5D58(void) +{ + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_50.unk10 != NULL) { + lbl_1_bss_50.unk10(); + lbl_1_bss_50.unk10 = NULL; + } + if (lbl_1_bss_50.unk14 != NULL) { + var_r31 = lbl_1_bss_50.unk14(); + } + return var_r31; +} + +s32 fn_1_5DF0(omObjData *object, s32 arg1) +{ + M418DllUnkStruct3 *temp_r31; + s32 var_r30; + + temp_r31 = &lbl_1_bss_26C[object->work[0]]; + var_r30 = temp_r31->unk4C; + if (temp_r31->unkC != 0) { + switch (temp_r31->unk10) { + case 0: + if ((arg1 % 100) == 0) { + var_r30 = rand8() % 4; + } + break; + case 1: + if ((arg1 % 50) == 0) { + var_r30 = rand8() % 4; + } + break; + case 2: + if ((arg1 % 25) == 0) { + var_r30 = rand8() % 4; + } + break; + case 3: + if ((arg1 % 25) == 0) { + var_r30 = rand8() % 4; + } + break; + } + } + else { + if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_A) != 0) { + var_r30 = 1; + } + if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_B) != 0) { + var_r30 = 0; + } + if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_X) != 0) { + var_r30 = 3; + } + if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_Y) != 0) { + var_r30 = 2; + } + } + return var_r30; +} + +s32 fn_1_6038(omObjData *object, s32 arg1) +{ + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct4 *temp_r28; + M418DllUnkStruct4 *temp_r27; + M418DllUnkStruct4 *temp_r26; + s32 var_r29; + s32 var_r31; + + temp_r30 = &lbl_1_bss_26C[object->work[0]]; + var_r31 = temp_r30->unk4C; + if (temp_r30->unkC != 0) { + switch (temp_r30->unk10) { + case 0: + if ((arg1 % 200) == 1) { + var_r31 = rand8() % 4; + } + break; + case 1: + if ((arg1 % 150) == 1) { + var_r31 = rand8() % 4; + } + break; + case 2: + if ((arg1 % 100) == 1) { + var_r31 = rand8() % 4; + } + break; + case 3: + if ((arg1 % 100) == 1) { + var_r31 = rand8() % 4; + } + break; + } + if (var_r31 != -1) { + temp_r28 = &lbl_1_bss_170[var_r31]; + if (temp_r28->unk18s == 1) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + temp_r27 = &lbl_1_bss_170[var_r29]; + if (temp_r27->unk18s != 1) { + var_r31 = var_r29; + temp_r27->unk18s = 1; + break; + } + } + } + else { + temp_r28->unk18s = 1; + } + } + } + else { + if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_A) != 0) { + var_r31 = 1; + } + if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_B) != 0) { + var_r31 = 0; + } + if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_X) != 0) { + var_r31 = 3; + } + if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_Y) != 0) { + var_r31 = 2; + } + if (var_r31 != -1) { + temp_r26 = &lbl_1_bss_170[var_r31]; + if (temp_r26->unk18s == 1) { + var_r31 = -1; + } + else { + temp_r26->unk18s = 1; + } + } + } + return var_r31; +} + +void fn_1_6314(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; + Vec sp20 = { 0.0f, 600.0f, 600.0f }; + + fn_1_B104(var_r31, sp2C, sp20); + fn_1_B41C(var_r31); + var_r31->rot.x++; +} + +void fn_1_63F8(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + M418DllUnkStruct sp38; + Vec sp2C = { 0.0f, 1800.0f, 480.0f }; + Vec sp20 = { 0.0f, 600.0f, 250.0f }; + + fn_1_B104(&sp38, sp2C, sp20); + fn_1_B41C(&sp38); + sp38.zoom = 750.0f; + fn_1_BEAC(var_r31, &sp38, var_r31->unk48++, 120.0f, 10.0f); +} + +void fn_1_6510(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + M418DllUnkStruct sp38; + Vec sp2C = { 0.0f, 980.0f, 1330.0f }; + Vec sp20 = { 0.0f, 480.0f, 130.0f }; + + fn_1_B104(&sp38, sp2C, sp20); + fn_1_B41C(&sp38); + fn_1_BEAC(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f); +} + +Vec lbl_1_data_2B8[8] = { { -540.0f, 225.0f, -900.0f }, { -180.0f, 225.0f, -900.0f }, { 180.0f, 225.0f, -900.0f }, { 540.0f, 225.0f, -900.0f }, + { -360.0f, 0.0f, -680.0f }, { 0.0f, 0.0f, -680.0f }, { 360.0f, 0.0f, -680.0f }, { 0.0f, 0.0f, 0.0f } }; + +void fn_1_6618(void) +{ + M418DllUnkStruct sp8; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct *var_r30; + M418DllUnkStruct6 *var_r29; + + var_r29 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[var_r29->unk0]; + var_r30 = &lbl_1_bss_1F4; + sp8.center.x = lbl_1_data_2B8[temp_r31->unk4C].x; + sp8.center.y = lbl_1_data_2B8[temp_r31->unk4C].y; + sp8.center.z = lbl_1_data_2B8[temp_r31->unk4C].z; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 725.0f; + fn_1_CBF8(var_r30, &sp8, var_r30->unk48++, 30.0f, 5.0f); +} + +void fn_1_6740(s32 arg0) +{ + M418DllUnkStruct *var_r27 = &lbl_1_bss_1F4; + + fn_1_B458(var_r27); + switch (arg0) { + case 0: + fn_1_248(fn_1_6314); + break; + case 1: + fn_1_248(fn_1_63F8); + break; + case 2: + fn_1_248(fn_1_6510); + break; + case 3: + fn_1_248(fn_1_6618); + break; + } +} + +void fn_1_6808(s32 arg0) +{ + s32 var_r31; + M418DllUnkStruct6 *var_r30 = &lbl_1_bss_3EC; + M418DllUnkStruct3 *var_r29; + M418DllUnkStruct4 *var_r28; + M418DllUnkStruct *var_r23; + + HuAudAUXVolSet(0x40, 0x40); + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r29 = &lbl_1_bss_26C[var_r30->unk4[var_r31]]; + var_r29->unk4C = -1; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r28 = &lbl_1_bss_11C[var_r31]; + fn_1_ABC4(var_r28->unk0, 0, 3, 30, 1); + } + if (lbl_1_bss_8 == 0) { + lbl_1_bss_8 = 1; + lbl_1_bss_4 = 0x12C; + } + + fn_1_6740(0); +} + +Vec lbl_1_data_318[4] = { { -540.0f, 115.0f, -700.0f }, { -180.0f, 115.0f, -700.0f }, { 180.0f, 115.0f, -700.0f }, { 540.0f, 115.0f, -700.0f } }; + +s32 fn_1_6914(s32 arg0) +{ + Vec sp14; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct3 *temp_r30; + s32 var_r29; + s32 temp_r27; + M418DllUnkStruct6 *var_r26; + M418DllUnkStruct4 *var_r25; + M418DllUnkStruct *var_r18; + + var_r26 = &lbl_1_bss_3EC; + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + temp_r31 = &lbl_1_bss_26C[var_r26->unk4[var_r29]]; + temp_r27 = fn_1_B0C8(&lbl_1_bss_38, 0); + temp_r31->unk4C = fn_1_5DF0(temp_r31->unk0, temp_r27); + if (temp_r31->unk4C != -1) { + sp14.x = lbl_1_data_318[temp_r31->unk4C].x; + sp14.y = lbl_1_data_318[temp_r31->unk4C].y; + sp14.z = (75.0f * var_r29) + lbl_1_data_318[temp_r31->unk4C].z; + fn_1_3444(temp_r31->unk0, sp14, -1.0f, 9.0f); + if (temp_r31->unk0->trans.z <= -720.0f) { + temp_r31->unk0->trans.z = -720.0f; + } + if (temp_r31->unk0->trans.z >= -480.0f) { + temp_r31->unk0->trans.z = -480.0f; + } + if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0xF0) { + temp_r31->unk0->trans.x = temp_r31->unk0->trans.y = -5000.0f; + fn_1_ABC4(temp_r31->unk0, 0, 0, 0xA, 1); + } + } + } + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + var_r25 = &lbl_1_bss_11C[var_r29]; + var_r25->unk0->rot.y += 1.2f; + } + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { + fn_1_6740(1); + } + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_6DCC(s32 arg0) +{ + s32 var_r31; + M418DllUnkStruct4 *temp_r30; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r30 = &lbl_1_bss_11C[var_r31]; + temp_r30->unk0->rot.y = 0.0f; + fn_1_ABC4(temp_r30->unk0, 0, 0, 0x1E, 1); + } + fn_1_6740(2); +} + +s32 fn_1_6E6C(s32 arg0) +{ + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_6EB4(s32 arg0) +{ + M418DllUnkStruct6 *var_r31 = &lbl_1_bss_3EC; + s32 var_r30; + M418DllUnkStruct3 *temp_r29; + + var_r31->unk34 = 0; + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r29 = &lbl_1_bss_26C[var_r31->unk4[var_r30]]; + if (temp_r29->unk4C == -1) { + var_r31->unk34++; + temp_r29->unk50 = 0; + } + } +} + +s32 fn_1_6F38(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct2 *temp_r29; + M418DllUnkStruct6 *temp_r28; + M418DllUnkStruct2 *temp_r27; + + s32 var_r26; + s32 var_r30; + f32 var_f31; + + temp_r29 = &lbl_1_bss_1E0; + temp_r28 = &lbl_1_bss_3EC; + + if (temp_r28->unk34 == 0) { + return fn_1_B034(&lbl_1_bss_38, 9); + } + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r31 = &lbl_1_bss_26C[temp_r28->unk4[var_r30]]; + if (temp_r31->unk4C == -1) { + if (temp_r29->unk4[var_r30] == 0) { + if ((rand8() % 10) == 0) { + var_r26 = 1; + } + else { + var_r26 = 0; + } + if ((var_r26 != 0) || (fn_1_B0C8(&lbl_1_bss_38, 0) >= 10)) { + HuAudFXPlay(0x5DC); + HuAudCharVoicePlay(temp_r31->unk14, 0x128); + temp_r29->unk4[var_r30] = 2; + Hu3DModelShadowDispOff(temp_r31->unk0->model[0]); + fn_1_ABC4(temp_r31->unk0, 0, 7, 0x1E, 0); + temp_r31->unk50 = fn_1_B0C8(&lbl_1_bss_38, 0); + omVibrate(temp_r31->unk4, 0xC, 6, 6); + } + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x1E)) { + temp_r31->unk0->trans.y -= 15.0f; + } + if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x3C)) { + var_f31 = fn_1_AA30(-200.0f, -110.0f, fn_1_B0C8(&lbl_1_bss_38, 0) - (temp_r31->unk50 + 0x3C), 90.0f); + Hu3DModelPosSet(temp_r29->unk0->model[var_r30 + 8], -350.0f + (360.0f * var_r30), var_f31, -660.0f); + Hu3DModelRotSet(temp_r29->unk0->model[var_r30 + 8], 0.0f, 0.0f, 20.0f); + } + } + } + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + temp_r27 = &lbl_1_bss_1E0; + temp_r27->unk4[0] = temp_r27->unk4[1] = temp_r27->unk4[2] = 3; + if (temp_r28->unk34 >= 3) { + return 1; + } + return fn_1_B034(&lbl_1_bss_38, 9); + } + else { + return 0; + } +} + +void fn_1_7294(s32 arg0) { } + +s32 fn_1_7298(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct6 *temp_r29; + + temp_r29 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[temp_r29->unk0]; + temp_r30 = &lbl_1_bss_11C[temp_r29->unk38]; + if (fn_1_B0C8(&lbl_1_bss_38, 0) < 0x3C) { + if (((temp_r30->unk0->work[0] == 0) || (temp_r30->unk0->work[1] == 0x18)) && (temp_r30->unk0->rot.y > -50.0f)) { + temp_r30->unk0->rot.y -= 5.0f; + if (temp_r30->unk0->rot.y <= -50.0f) { + temp_r30->unk0->rot.y = -50.0f; + } + } + if (temp_r31->unk0->rot.y < 180.0f) { + temp_r31->unk0->rot.y += 5.0f; + if (temp_r30->unk0->rot.y <= -50.0f) { + temp_r30->unk0->rot.y = -50.0f; + } + } + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { + HuAudFXPlay(0x40); + fn_1_ABC4(temp_r30->unk0, 0, 2, 0xA, 0); + fn_1_AD14(temp_r31->unk0, 0, 0, 0xA, 1); + Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[9]); + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f); + lbl_1_bss_240[8] = HuAudFXPlay(0x5D9); + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) { + if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0x5A) { + temp_r31->unk3C += 0.025f; + if (temp_r31->unk3C >= 1.0f) { + temp_r31->unk3C = 1.0f; + } + } + } + else { + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f); + } + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_38); + } + else { + return 0; + } +} + +void fn_1_7570(s32 arg0) +{ + M418DllUnkStruct6 *var_r31 = &lbl_1_bss_3EC; + M418DllUnkStruct3 *var_r30 = &lbl_1_bss_26C[var_r31->unk0]; + var_r30->unk4C = -1; + if (lbl_1_bss_8 == 0) { + lbl_1_bss_8 = 1; + lbl_1_bss_4 = 0x12C; + } +} + +s32 fn_1_75E4(s32 arg0) +{ + Mtx sp38; + Mtx sp8; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *var_r30; + s32 var_r29; + + var_r30 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[var_r30->unk0]; + if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 10) { + temp_r31->unk4C = fn_1_6038(temp_r31->unk0, fn_1_B0C8(&lbl_1_bss_38, 0)); + if (temp_r31->unk4C != -1) { + if (lbl_1_bss_8 == 2) { + lbl_1_bss_8 = 3; + lbl_1_bss_4 = 0x1E; + } + return fn_1_AF38(&lbl_1_bss_38); + } + } + fn_1_B0C8(&lbl_1_bss_38, 1); + var_r29 = 0; + if (lbl_1_bss_8 == 3) { + var_r29 = 1; + } + if (var_r29 != 0) { + Hu3DModelObjMtxGet(temp_r31->unk0->model[0], lbl_1_data_1C0[temp_r31->unk14], sp8); + Hu3DModelObjMtxGet(temp_r31->unk0->model[12], "g031i00-itemhook_eff", sp38); + Hu3DModelPosSet(temp_r31->unk0->model[13], sp38[0][3] + sp8[0][3], 80.0f + (sp38[1][3] + sp8[1][3]), sp38[2][3] + sp8[2][3]); + Hu3DModelScaleSet(temp_r31->unk0->model[13], 0.5f, 0.5f, 0.5f); + Hu3DMotionSpeedSet(temp_r31->unk0->model[13], 2.0f); + fn_1_ABC4(temp_r31->unk0, 0xD, 0xD, 0, 0); + return fn_1_AF38(&lbl_1_bss_38); + } + else { + return 0; + } +} + +void fn_1_77F8(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; + M418DllUnkStruct3 *var_r30; + + var_r31 = &lbl_1_bss_3EC; + var_r30 = &lbl_1_bss_26C[var_r31->unk0]; + if (var_r30->unk4C == -1) { + HuAudFXFadeOut(lbl_1_bss_240[8], 0x3E8); + } +} + +s32 fn_1_7860(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + + temp_r30 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[temp_r30->unk0]; + if (temp_r31->unk4C == -1) { + temp_r31->unk3C -= 0.025f; + if (temp_r31->unk3C <= 0.0f) { + temp_r31->unk3C = 0.0f; + } + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_38); + } + } + else { + temp_r31->unk0->rot.y = fn_1_A940(180.0f, 200.0f - (10.0f * temp_r31->unk4C), fn_1_B0C8(&lbl_1_bss_38, 0), 10.0f); + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0xA) { + Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[10]); + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f); + temp_r31->unk5C = 1; + } + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f); + temp_r31->unk5C = 2; + return fn_1_AF38(&lbl_1_bss_38); + } + } + return 0; +} + +void fn_1_7A68(s32 arg0) +{ + M418DllUnkStruct6 *temp_r31; + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct4 *temp_r29; + s32 var_r28; + M418DllUnkStruct3 *temp_r27; + s32 var_r26; + + var_r26 = 0; + temp_r31 = &lbl_1_bss_3EC; + temp_r30 = &lbl_1_bss_26C[temp_r31->unk0]; + if (temp_r30->unk4C != -1) { + temp_r31->unk10[0] = temp_r31->unk10[1] = temp_r31->unk10[2] = -1; + + for (var_r28 = 0; var_r28 < 3; var_r28++) { + temp_r27 = &lbl_1_bss_26C[temp_r31->unk4[var_r28]]; + if (temp_r30->unk4C == temp_r27->unk4C) { + temp_r31->unk10[var_r26++] = temp_r27->unk0->work[0]; + } + } + temp_r29 = &lbl_1_bss_170[temp_r30->unk4C]; + temp_r29->unkC = 0; + if (temp_r31->unk10[0] == -1) { + temp_r29->unk10 = 1; + } + temp_r29->unk0->work[1] = 1; + } +} + +s32 fn_1_7B68(s32 arg0) +{ + Mtx sp8; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + M418DllUnkStruct3 *temp_r29; + M418DllUnkStruct4 *temp_r28; + s32 var_r27; + s32 var_r26; + M418DllUnkStruct *temp_r21; + + var_r26 = -1; + temp_r30 = &lbl_1_bss_3EC; + temp_r29 = &lbl_1_bss_26C[temp_r30->unk0]; + temp_r28 = &lbl_1_bss_170[temp_r29->unk4C]; + if (temp_r29->unk4C == -1) { + return fn_1_AF38(&lbl_1_bss_38); + } + if (temp_r28->unkC == 1) { + fn_1_6740(3); + } + if (temp_r28->unkC == 3) { + + for (var_r27 = 0; var_r27 < 3; var_r27++) { + if (temp_r30->unk10[var_r27] != -1) { + temp_r31 = &lbl_1_bss_26C[temp_r30->unk10[var_r27]]; + Hu3DModelObjMtxGet(*temp_r28->unk0->model, "taihou-null4", (f32(*)[4]) & sp8[0]); + omSetTra(temp_r31->unk0, sp8[0][3], sp8[1][3] - 25.0f, 50.0f + sp8[2][3]); + omSetRot(temp_r31->unk0, 0.0f, 180.0f, 0.0f); + fn_1_AD14(temp_r31->unk0, 0, 8, 0, 2); + temp_r31->unk4C = -1; + temp_r31->unk24 = 0; + if (var_r26 >= 2) { + var_r26 = 1; + } + temp_r31->unk30 = var_r26++; + temp_r31->unk28 = 0.0f; + omVibrate((s16)temp_r29->unk4, 0xC, 4, 2); + } + } + return fn_1_AF38(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_7D80(s32 arg0) +{ + s32 var_r31; + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct4 *temp_r28; + + temp_r29 = &lbl_1_bss_3EC; + temp_r30 = &lbl_1_bss_26C[temp_r29->unk0]; + temp_r30->unk0->rot.y = 180.0f; + temp_r30->unk3C = 0.0f; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r28 = &lbl_1_bss_11C[var_r31]; + temp_r28->unk0->rot.y = 0.0f; + } +} + +s32 fn_1_7E24(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; + s32 var_r30; + s32 var_r29; + M418DllUnkStruct4 *var_r28; + M418DllUnkStruct4 *var_r27; + M418DllUnkStruct4 *var_r26; + M418DllUnkStruct3 *var_r25; + + var_r29 = 0; + var_r31 = &lbl_1_bss_3EC; + var_r28 = &lbl_1_bss_11C[0]; + var_r27 = &lbl_1_bss_11C[1]; + var_r26 = &lbl_1_bss_11C[2]; + if (var_r31->unk38 == 2) { + var_r28->unk0->work[1] = 0; + var_r27->unk0->work[1] = 0; + var_r26->unk0->work[1] = 3; + return 1; + } + var_r31->unk38++; + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r25 = &lbl_1_bss_26C[var_r31->unk4[var_r30]]; + if (var_r25->unk4C != -1) { + var_r29++; + } + } + if (var_r29 == 0) { + return 1; + } + else { + return fn_1_AF38(&lbl_1_bss_38); + } +} + +void fn_1_7F1C(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; + M418DllUnkStruct4 *var_r30; + M418DllUnkStruct4 *var_r29; + M418DllUnkStruct4 *var_r28; + + var_r31 = &lbl_1_bss_3EC; + var_r30 = &lbl_1_bss_11C[0]; + var_r29 = &lbl_1_bss_11C[1]; + var_r28 = &lbl_1_bss_11C[2]; + if (var_r31->unk38 == 1) { + var_r30->unk0->work[1] = 3; + var_r29->unk0->work[1] = 2; + var_r28->unk0->work[1] = 1; + } + else if (var_r31->unk38 == 2) { + var_r30->unk0->work[1] = 0; + var_r29->unk0->work[1] = 3; + var_r28->unk0->work[1] = 2; + } +} + +s32 fn_1_7FD4(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + M418DllUnkStruct4 *temp_r29; + + temp_r30 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[temp_r30->unk0]; + if (temp_r31->unk4C == -1) { + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 30) { + fn_1_6740(2); + } + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 120) { + return fn_1_B034(&lbl_1_bss_38, 9); + } + } + else { + temp_r29 = &lbl_1_bss_170[temp_r31->unk4C]; + if (temp_r29->unk10 != 0) { + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 210) { + fn_1_6740(2); + } + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 300) { + return fn_1_B034(&lbl_1_bss_38, 9); + } + } + else { + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 30) { + fn_1_6740(2); + } + if (fn_1_B0C8(&lbl_1_bss_38, 0) == 120) { + return fn_1_B034(&lbl_1_bss_38, 3); + } + } + } + fn_1_B0C8(&lbl_1_bss_38, 1); + return 0; +} + +void fn_1_81A0(s32 arg0) { } + +s32 fn_1_81A4(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct6 *temp_r29; + + temp_r29 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[temp_r29->unk0]; + temp_r30 = &lbl_1_bss_11C[temp_r29->unk38]; + if (fn_1_B0C8(&lbl_1_bss_38, 0) < 0x3C) { + if (((temp_r30->unk0->work[0] == 0) || (temp_r30->unk0->work[1] == 0x18)) && (temp_r30->unk0->rot.y > -50.0f)) { + temp_r30->unk0->rot.y -= 5.0f; + if (temp_r30->unk0->rot.y <= -50.0f) { + temp_r30->unk0->rot.y = -50.0f; + } + } + if (temp_r31->unk0->rot.y < 180.0f) { + temp_r31->unk0->rot.y += 5.0f; + if (temp_r30->unk0->rot.y <= -50.0f) { + temp_r30->unk0->rot.y = -50.0f; + } + } + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { + HuAudFXPlay(0x40); + fn_1_ABC4(temp_r30->unk0, 0, 2, 0xA, 0); + fn_1_AD14(temp_r31->unk0, 0, 0, 0xA, 1); + Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[9]); + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f); + lbl_1_bss_240[8] = HuAudFXPlay(0x5D9); + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) { + if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0x5A) { + temp_r31->unk3C += 0.025f; + if (temp_r31->unk3C >= 1.0f) { + temp_r31->unk3C = 1.0f; + } + } + } + else { + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f); + } + if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { + return fn_1_B034(&lbl_1_bss_38, 4); + } + else { + return 0; + } +} + +M418DllUnkStruct8 lbl_1_data_348[11] = { { fn_1_6808, fn_1_6914, 300 }, { fn_1_6DCC, fn_1_6E6C, 60 }, { fn_1_6EB4, fn_1_6F38, 180 }, + { fn_1_7294, fn_1_7298, 300 }, { fn_1_7570, fn_1_75E4, 300 }, { fn_1_77F8, fn_1_7860, 60 }, { fn_1_7A68, fn_1_7B68, 180 }, + { fn_1_7D80, fn_1_7E24, -1 }, { fn_1_7F1C, fn_1_7FD4, 300 }, { fn_1_81A0, fn_1_81A4, 240 }, { NULL, NULL, -1 } }; + +void fn_1_8480(void) +{ + fn_1_AEDC(&lbl_1_bss_38, &lbl_1_data_348[0]); +} + +s32 fn_1_84B0(void) +{ + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_38.unk10 != NULL) { + lbl_1_bss_38.unk10(); + lbl_1_bss_38.unk10 = NULL; + } + if (lbl_1_bss_38.unk14 != NULL) { + var_r31 = lbl_1_bss_38.unk14(); + } + return var_r31; +} + +void fn_1_8548(void) +{ + M418DllUnkStruct sp38; + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; + Vec sp20 = { 0.0f, 600.0f, 600.0f }; + + fn_1_B104(&sp38, sp2C, sp20); + fn_1_B41C(&sp38); + sp38.rot.x++; + fn_1_CBF8(var_r31, &sp38, var_r31->unk48++, 60.0f, 10.0f); +} + +void fn_1_8668(void) +{ + M418DllUnkStruct sp8; + f32 temp_f1; + + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + + sp8.center.x = sp8.center.y = 0.0f; + sp8.center.z = -500.0f; + sp8.rot.x = -20.0f; + sp8.rot.y = sp8.rot.z = 0.0f; + sp8.zoom = 1000.0f; + fn_1_CBF8(var_r31, &sp8, var_r31->unk48++, 10.0f, 5.0f); +} + +void fn_1_8728(void) +{ + M418DllUnkStruct sp8; + M418DllUnkStruct *var_r31; + + var_r31 = &lbl_1_bss_1F4; + + sp8.center.x = var_r31->center.x; + sp8.center.y = var_r31->center.y; + sp8.center.z = var_r31->center.z; + sp8.rot.x = var_r31->rot.x; + sp8.rot.y = var_r31->rot.y; + sp8.rot.z = var_r31->rot.z; + sp8.zoom = 500.0f; + fn_1_CBF8(var_r31, &sp8, var_r31->unk48++, 10.0f, 5.0f); +} + +void fn_1_87D0(s32 arg0) +{ + M418DllUnkStruct *var_r31; + + var_r31 = &lbl_1_bss_1F4; + + fn_1_B458(var_r31); + switch (arg0) { + case 0: + fn_1_248(fn_1_8548); + break; + case 1: + fn_1_248(fn_1_8668); + break; + case 2: + fn_1_248(fn_1_8728); + break; + } +} + +void fn_1_888C(s32 arg0) +{ + HuAudAUXVolSet(-1, -1); +} + +s32 fn_1_88B4(s32 arg0) +{ + s32 var_r31; + M418DllUnkStruct6 *var_r30; + s32 var_r29; + M418DllUnkStruct3 *var_r28; + M418DllUnkStruct3 *var_r27; + M418DllUnkStruct *var_r23; + + var_r29 = 5; + var_r30 = &lbl_1_bss_3EC; + + fn_1_87D0(0); + lbl_1_bss_10 = 0; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r28 = &lbl_1_bss_26C[var_r30->unk4[var_r31]]; + if (var_r28->unk4C != -1) { + var_r29 = 1; + lbl_1_bss_10 = 1; + } + } + if (var_r29 == 5) { + var_r27 = &lbl_1_bss_26C[var_r30->unk0]; + var_r27->unk0->rot.y = 0.0f; + } + fn_1_B034(&lbl_1_bss_20, var_r29); +} + +void fn_1_89B0(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; + s32 var_r30; + s32 var_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct4 *temp_r27; + + var_r29 = 0; + var_r31 = &lbl_1_bss_3EC; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r28 = &lbl_1_bss_26C[var_r31->unk4[var_r30]]; + if (temp_r28->unk4C != -1) { + var_r31->unk1C[var_r29] = var_r31->unk28[var_r29] = temp_r28->unk4C; + var_r29++; + } + } + switch (var_r29) { /* irregular */ + case 1: + var_r31->unk1C[0] = 3; + break; + case 2: + var_r31->unk1C[0] = 4; + var_r31->unk1C[1] = 5; + break; + case 3: + var_r31->unk1C[0] = 0; + var_r31->unk1C[1] = 1; + var_r31->unk1C[2] = 2; + break; + } + if (var_r31->unk28[0] == var_r31->unk28[1]) { + var_r31->unk28[1] = -1; + } + if (var_r31->unk28[0] == var_r31->unk28[1]) { + var_r31->unk28[1] = -1; + } + if (var_r31->unk28[1] == var_r31->unk28[2]) { + var_r31->unk28[2] = -1; + } + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + temp_r27 = &lbl_1_bss_170[var_r30]; + temp_r27->unkC = 0; + } +} + +s32 fn_1_8B14(s32 arg0) +{ + M418DllUnkStruct4 *temp_r31; + s32 var_r30; + M418DllUnkStruct6 *var_r29; + s32 var_r28; + + var_r29 = &lbl_1_bss_3EC; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (var_r29->unk28[var_r30] != -1) { + temp_r31 = &lbl_1_bss_170[var_r29->unk28[var_r30]]; + if (temp_r31->unkC == 0) { + if ((rand8() % 5) == 0) { + var_r28 = 1; + } + else { + var_r28 = 0; + } + if ((var_r28 != 0) || (fn_1_B0C8(&lbl_1_bss_20, 0) >= 5)) { + temp_r31->unkC = 1; + HuAudFXPlay(0x5D3); + } + } + else { + temp_r31->unk4 += 5.0f; + if (temp_r31->unk4 >= 90.0f) { + temp_r31->unk4 = 90.0f; + } + } + } + } + if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_20); + } + else { + return 0; + } +} + +void fn_1_8C84(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + s32 var_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct3 *temp_r28; + s32 var_r27; + s32 temp_r0; + + var_r27 = 0; + temp_r29 = &lbl_1_bss_3EC; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r31 = &lbl_1_bss_26C[temp_r29->unk4[var_r30]]; + if (temp_r31->unk4C != -1) { + omSetRot(temp_r31->unk0, 0.0f, 0.0f, 0.0f); + temp_r31->unk50 = var_r27 * -10; + temp_r31->unk54 = 0; + temp_r31->unk58 = var_r27++; + } + } + temp_r28 = &lbl_1_bss_26C[temp_r29->unk0]; + Hu3DMotionOverlayReset(*temp_r28->unk0->model); + temp_r28->unk0->work[1] = 1; +} + +Vec lbl_1_data_3CC[4] = { { -540.0f, 225.0f, -900.0f }, { -180.0f, 225.0f, -900.0f }, { 180.0f, 225.0f, -900.0f }, { 540.0f, 225.0f, -900.0f } }; + +Vec lbl_1_data_3FC[6] = { { -200.0f, 0.0f, -450.0f }, { 0.0f, 0.0f, -400.0f }, { 200.0f, 0.0f, -450.0f }, { 0.0f, 0.0f, -400.0f }, + { -100.0f, 0.0f, -425.0f }, { 100.0f, 0.0f, -425.0f } }; + +s32 fn_1_8D70(s32 arg0) +{ + s32 sp10; + s32 spC; + s32 sp8; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + s32 var_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct3 *temp_r27; + omObjData *var_r26; + s32 temp_r3; + void *temp_r4; + + temp_r30 = &lbl_1_bss_3EC; + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + temp_r31 = &lbl_1_bss_26C[temp_r30->unk4[var_r29]]; + if (temp_r31->unk4C != -1) { + if (temp_r31->unk54 == 0) { + if (temp_r31->unk50++ == 0) { + temp_r31->unk54 = 1; + omSetTra(temp_r31->unk0, lbl_1_data_3CC[temp_r31->unk4C].x, lbl_1_data_3CC[temp_r31->unk4C].y, + lbl_1_data_3CC[temp_r31->unk4C].z - 50.0f); + var_r26 = temp_r31->unk0; + temp_r28 = &lbl_1_bss_26C[var_r26->work[0]]; + if (temp_r28->unk1C == 0) { + temp_r28->unk1C = 1; + } + } + } + else if (temp_r31->unk54 == 1) { + fn_1_3EB0(temp_r31->unk0, lbl_1_data_3FC[temp_r30->unk1C[temp_r31->unk58]], 0.0f, 12.0f); + } + } + } + temp_r27 = &lbl_1_bss_26C[temp_r30->unk0]; + if (fn_1_B0C8(&lbl_1_bss_20, 0) == 0x1E) { + fn_1_ABC4(temp_r27->unk0, 0, 0, 0xA, 1); + } + if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_20); + } + else { + return 0; + } +} + +void fn_1_8F74(s32 arg0) +{ + s32 sp8[3]; + M418DllUnkStruct3 *temp_r31; + s32 var_r30; + M418DllUnkStruct6 *var_r29; + M418DllUnkStruct3 *temp_r28; + + var_r29 = &lbl_1_bss_3EC; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r31 = &lbl_1_bss_26C[var_r29->unk4[var_r30]]; + if (temp_r31->unk4C != -1) { + fn_1_ABC4(temp_r31->unk0, 0, 5, 10, 0); + } + sp8[var_r30] = temp_r31->unk14; + } + temp_r28 = &lbl_1_bss_26C[var_r29->unk0]; + fn_1_ABC4(temp_r28->unk0, 0, 6, 10, 0); + fn_1_87D0(1); + lbl_1_bss_14 = MGSeqCreate(5, 3, sp8[0], sp8[1], sp8[2], -1); + HuAudSStreamPlay(1); +} + +s32 fn_1_9094(s32 arg0) +{ + if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_20); + } + else { + return 0; + } +} + +void fn_1_90DC(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + + temp_r30 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[temp_r30->unk0]; + Hu3DMotionOverlayReset(temp_r31->unk0->model[0]); + temp_r31->unk0->work[1] = 1; +} + +s32 fn_1_9140(s32 arg0) +{ + M418DllUnkStruct6 *temp_r31; + M418DllUnkStruct3 *temp_r30; + + temp_r31 = &lbl_1_bss_3EC; + + temp_r30 = &lbl_1_bss_26C[temp_r31->unk0]; + if (fn_1_B0C8(&lbl_1_bss_20, 0) == 0x1E) { + fn_1_ABC4(temp_r30->unk0, 0, 0, 0xA, 1); + } + if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_20); + } + else { + return 0; + } +} + +void fn_1_91E4(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + s32 var_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct4 *temp_r28; + + temp_r29 = &lbl_1_bss_3EC; + temp_r31 = &lbl_1_bss_26C[temp_r29->unk0]; + Hu3DMotionOverlayReset(temp_r31->unk0->model[0]); + fn_1_ABC4(temp_r31->unk0, 0, 5, 10, 0); + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r28 = &lbl_1_bss_11C[var_r30]; + fn_1_ABC4(temp_r28->unk0, 0, 3, 10, 1); + } + fn_1_87D0(2); + lbl_1_bss_14 = MGSeqCreate(5, 3, temp_r31->unk14, -1, -1, -1); + HuAudSStreamPlay(1); +} + +s32 fn_1_92EC(s32 arg0) +{ + if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { + return fn_1_AF38(&lbl_1_bss_20); + } + else { + return 0; + } +} + +M418DllUnkStruct8 lbl_1_data_444[8] = { { fn_1_888C, fn_1_88B4, -1 }, { fn_1_89B0, fn_1_8B14, 90 }, { fn_1_8C84, fn_1_8D70, 180 }, + { fn_1_8F74, fn_1_9094, 210 }, { NULL, NULL, -1 }, { fn_1_90DC, fn_1_9140, 180 }, { fn_1_91E4, fn_1_92EC, 240 }, { NULL, NULL, -1 } }; + +void fn_1_9334(void) +{ + fn_1_AEDC(&lbl_1_bss_20, &lbl_1_data_444[0]); +} + +s32 fn_1_9364(void) +{ + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_20.unk10 != NULL) { + lbl_1_bss_20.unk10(); + lbl_1_bss_20.unk10 = NULL; + } + if (lbl_1_bss_20.unk14 != NULL) { + var_r31 = lbl_1_bss_20.unk14(); + } + return var_r31; +} + +void fn_1_93FC(omObjData *object) +{ + s32 var_r31; + M418DllUnkStruct6 *var_r30; + M418DllUnkStruct3 *var_r29; + M418DllUnkStruct3 *var_r28; + s32 temp_r27; + s32 temp_r26; + + if (WipeStatGet() == 0) { + var_r30 = &lbl_1_bss_3EC; + if (lbl_1_bss_10 != 0) { + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r29 = &lbl_1_bss_26C[var_r30->unk4[var_r31]]; + temp_r27 = var_r29->unk4; + if (_CheckFlag(0x1000C) == 0) { + GWPlayer[temp_r27].coin_win = 10; + } + } + } + else { + var_r28 = &lbl_1_bss_26C[var_r30->unk0]; + temp_r26 = var_r28->unk4; + if (_CheckFlag(0x1000CU) == 0) { + GWPlayer[temp_r26].coin_win = 10; + } + } + HuAudFadeOut(0x3E8); + CharModelKill(-1); + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + object->func = NULL; + } +} + +void fn_1_952C(omObjData *object) +{ + if (omSysExitReq == 1) { + HuAudSeqAllFadeOut(0xFA); + WipeCreate(2, 0, -1); + object->func = fn_1_93FC; + } +} + +void fn_1_958C(void) +{ + M418DllUnkStruct3 *temp_r31; + s32 var_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct2 *temp_r28; + M418DllUnkStruct4 *temp_r27; + M418DllUnkStruct4 *temp_r26; + M418DllUnkStruct3 *temp_r25; + s32 temp_r0; + s32 var_r24; + + var_r24 = 0; + temp_r28 = &lbl_1_bss_1E0; + for (var_r30 = 1; var_r30 < 4; var_r30++) { + fn_1_ABC4(temp_r28->unk0, var_r30, var_r30, 0, 2); + } + + for (var_r30 = 8; var_r30 < 11; var_r30++) { + fn_1_ABC4(temp_r28->unk0, var_r30, var_r30, 0, 1); + Hu3DModelPosSet(temp_r28->unk0->model[var_r30 + 8], -360.0f + (360.0f * (var_r30 - 8)), -200.0f, -660.0f); + Hu3DModelRotSet(temp_r28->unk0->model[var_r30], 0.0f, 0.0f, 20.0f); + } + + temp_r28->unk4[0] = temp_r28->unk4[1] = temp_r28->unk4[2] = temp_r28->unk4[3] = 0; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + temp_r27 = &lbl_1_bss_170[var_r30]; + temp_r27->unk0->work[1] = temp_r27->unk0->work[2] = 0; + temp_r27->unk4 = 0.0f; + temp_r27->unkC = temp_r27->unk10 = temp_r27->unk14s = temp_r27->unk18s = 0; + } + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r26 = &lbl_1_bss_11C[var_r30]; + omSetTra(temp_r26->unk0, lbl_1_data_8C[var_r30].x, lbl_1_data_8C[var_r30].y, lbl_1_data_8C[var_r30].z); + omSetRot(temp_r26->unk0, 0.0f, 0.0f, 0.0f); + omSetSca(temp_r26->unk0, 1.0f, 1.0f, 1.0f); + fn_1_AD14(temp_r26->unk0, 0, 0, 10, 1); + temp_r26->unk0->work[1] = -1U; + } + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + temp_r31 = &lbl_1_bss_26C[var_r30]; + if (temp_r31->unk8 != 0) { + omSetTra(temp_r31->unk0, 0.0f, -5000.0f, 0.0f); + } + else { + omSetTra(temp_r31->unk0, 0.0f, 0.0f, 0.0f); + } + omSetRot(temp_r31->unk0, 0.0f, 0.0f, 0.0f); + omSetSca(temp_r31->unk0, 1.0f, 1.0f, 1.0f); + if (temp_r31->unk8 == 0) { + Hu3DModelAttrReset(temp_r31->unk0->model[11], 1); + Hu3DModelHookSet(temp_r31->unk0->model[0], lbl_1_data_1C0[temp_r31->unk14], temp_r31->unk0->model[11]); + Hu3DModelPosSet(temp_r31->unk0->model[11], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk0->model[11], 0.0f, 0.0f, 0.0f); + Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[9]); + Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 0.0f); + } + fn_1_ABC4(temp_r31->unk0, 0, 0, 0, 1); + Hu3DModelShadowDispOn(temp_r31->unk0->model[0]); + temp_r31->unk4C = temp_r31->unk50 = temp_r31->unk54 = temp_r31->unk58 = temp_r31->unk5C = 0; + temp_r31->unk24 = -1; + temp_r31->unk28 = temp_r31->unk2C = temp_r31->unk30 = temp_r31->unk34 = temp_r31->unk38 = 0.0f; + } + + temp_r29 = &lbl_1_bss_3EC; + for (var_r30 = 0, var_r24 = 0; var_r30 < 4; var_r30++) { + temp_r25 = &lbl_1_bss_26C[var_r30]; + if (temp_r25->unk8 != 0) { + temp_r29->unk4[var_r24++] = temp_r25->unk4; + } + else { + temp_r29->unk0 = temp_r25->unk4; + } + } + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + temp_r29->unk1C[var_r30] = temp_r29->unk28[var_r30] = -1; + temp_r29->unk10[var_r30] = -1; + } + + temp_r29->unk34 = temp_r29->unk38 = temp_r29->unk3C = temp_r29->unk40 = 0; + fn_1_5D28(); + fn_1_8480(); + fn_1_9334(); + + for (var_r30 = 0; var_r30 < 10; var_r30++) { + lbl_1_bss_240[var_r30] = -1; + } + lbl_1_bss_240[6] = HuAudFXPlay(0x5D7); + lbl_1_bss_240[7] = HuAudFXPlay(0x5D8); +} + +void fn_1_9BA4(omObjData *object) +{ + switch (lbl_1_bss_18) { + case 0: + fn_1_958C(); + lbl_1_bss_18 = 1; + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_18 = 2; + } + break; + case 2: + if (fn_1_5D58()) { + lbl_1_bss_18 = 3; + } + break; + case 3: + lbl_1_bss_1C = MGSeqCreate(3, 0); + lbl_1_bss_18 = 4; + lbl_1_data_0[1] = -1; + break; + case 4: + if (((MGSeqStatGet(lbl_1_bss_1C) & 0x10) != 0) && (lbl_1_data_0[1] == -1)) { + lbl_1_data_0[1] = HuAudSeqPlay(0x49); + } + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18 = 5; + } + break; + case 5: + if (fn_1_84B0()) { + lbl_1_bss_18 = 6; + } + break; + case 6: + lbl_1_bss_1C = MGSeqCreate(3, 1); + HuAudSeqPauseAll(0); + HuAudSeqAllFadeOut(0x64); + lbl_1_bss_18 = 7; + break; + case 7: + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18 = 8; + } + break; + case 8: + if (fn_1_9364()) { + lbl_1_bss_18 = 9; + } + break; + case 9: + WipeCreate(2, 0, -1); + object->func = fn_1_93FC; + break; + default: + lbl_1_bss_18 = 0; + break; + } + if (omSysExitReq == 1) { + HuAudSeqAllFadeOut(0xFA); + WipeCreate(2, 0, -1); + object->func = fn_1_93FC; + } +} + +void fn_1_9F94(omObjData *object) +{ + s32 var_r31; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct4 *temp_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct2 *temp_r27; + M418DllWorkStruct *temp_r26; + + temp_r27 = &lbl_1_bss_1E0; + temp_r27->unk0 = omAddObjEx(lbl_1_bss_0, 0x100, 0x14U, 0x14U, -1, fn_1_B4C); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + temp_r30 = &lbl_1_bss_170[var_r31]; + temp_r30->unk0 = omAddObjEx(lbl_1_bss_0, 0x200, 0x14U, 0x14U, -1, fn_1_14F0); + temp_r30->unk0->work[0] = var_r31; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + temp_r29 = &lbl_1_bss_11C[var_r31]; + temp_r29->unk0 = omAddObjEx(lbl_1_bss_0, 0x300, 0x14U, 0x14U, -1, fn_1_29A0); + temp_r29->unk0->work[0] = var_r31; + } + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + temp_r28 = &lbl_1_bss_26C[var_r31]; + temp_r28->unk0 = omAddObjEx(lbl_1_bss_0, 0x400, 0x14U, 0x14U, -1, fn_1_4F60); + temp_r28->unk0->work[0] = var_r31; + } + + temp_r26 = &lbl_1_bss_68; + temp_r26->unk0 = omAddObjEx(lbl_1_bss_0, 0x500, 0xBU, 0xBU, -1, fn_1_3054); + WipeCreate(1, 0, -1); + object->func = fn_1_9BA4; +} + +#include "src/REL/executor.c" + +void fn_1_A1F0(void) +{ + lbl_1_bss_0 = omInitObjMan(0x3E, 0x2000); + omGameSysInit(lbl_1_bss_0); + HuAudAUXVolSet(-1, -1); + fn_1_0(); + fn_1_500(); + fn_1_618(); + fn_1_3138(); + omAddObjEx(lbl_1_bss_0, 0x1000, 0U, 0U, -1, fn_1_9F94); + omAddObjEx(lbl_1_bss_0, 0x2000, 0U, 0U, -1, fn_1_780); +} + +void ObjectSetup(void) +{ + fn_1_A1F0(); +} diff --git a/src/REL/m418Dll/sequence.c b/src/REL/m418Dll/sequence.c new file mode 100644 index 00000000..9ccd5985 --- /dev/null +++ b/src/REL/m418Dll/sequence.c @@ -0,0 +1,252 @@ +#include "REL/m418Dll.h" + +f32 fn_1_A920(f32 arg0, f32 arg1, f32 arg2) { + return (arg1 + (arg0 * (arg2 - 1.0f))) / arg2; +} + +f32 fn_1_A940(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + ((arg2 / arg3) * (arg1 - arg0)); +} + +f32 fn_1_A968(f32 arg8, f32 arg9, f32 argA, f32 argB) { + if (argA >= argB) { + return arg9; + } + return arg8 + (arg9 - arg8) * sind(((90.0f / argB) * argA)); +} + +f32 fn_1_AA30(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +f32 fn_1_AAEC(f32 arg8, f32 arg9, f32 argA, f32 argB) { + if (argA >= argB) { + return arg9; + } + return (arg8 + (arg9 - arg8) * (1.0 - cosd((90.0f / argB) * argA))); +} + +void fn_1_ABC4(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg4 == 1) { + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + return; + } + if (arg4 == 2) { + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + return; + } + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); +} + +void fn_1_AD14(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->work[3] != arg0->motion[arg2]) { + arg0->work[3] = arg0->motion[arg2]; + if (arg4 == 1) { + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + return; + } + if (arg4 == 2) { + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + return; + } + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + } +} + +void fn_1_AE8C(M418DllUnkStruct7* arg0) { + arg0->unk8 = 0; + arg0->unkC = arg0->unk4[arg0->unk0].unk8; + arg0->unk10 = (M418DllFunc)arg0->unk4[arg0->unk0].unk0; + arg0->unk14 = (M418DllRetFunc)arg0->unk4[arg0->unk0].unk4; +} + +void fn_1_AEDC(M418DllUnkStruct7* arg0, M418DllUnkStruct8* arg1) { + arg0->unk0 = 0; + arg0->unk4 = arg1; + fn_1_AE8C(arg0); +} + +s32 fn_1_AF38(M418DllUnkStruct7* arg0) { + arg0->unk0++; + fn_1_AE8C(arg0); + if ((arg0->unk10 == NULL) && (arg0->unk14 == NULL)) { + return 1; + } + return 0; +} + +s32 fn_1_AFC0(M418DllUnkStruct7* arg0) { + arg0->unk0--; + if (arg0->unk0 < 0) { + return 1; + } + fn_1_AE8C(arg0); + return 0; +} + +s32 fn_1_B034(M418DllUnkStruct7* arg0, s32 arg1) { + arg0->unk0 = arg1; + if (arg0->unk0 < 0) { + return 1; + } + fn_1_AE8C(arg0); + if ((arg0->unk10 == NULL) && (arg0->unk14 == NULL)) { + return 1; + } + return 0; +} + +s32 fn_1_B0C8(M418DllUnkStruct7* arg0, s32 arg1) { + if (arg1 == 0) { + return arg0->unk8; + } + arg0->unk8 += arg1; + if (arg0->unk8 >= arg0->unkC) { + return 1; + } + return 0; +} + +void fn_1_B104(M418DllUnkStruct* arg0, Vec arg1, Vec arg2) { + f32 temp_f31; + f32 temp_f30; + f32 temp_f29; + f32 temp_f27; + + temp_f31 = arg1.x - arg2.x; + temp_f29 = arg1.y - arg2.y; + temp_f30 = arg1.z - arg2.z; + arg0->unk10.x = arg2.x; + arg0->unk10.y = arg2.y; + arg0->unk10.z = arg2.z; + arg0->unk38 = sqrtf((temp_f30 * temp_f30) + ((temp_f31 * temp_f31) + (temp_f29 * temp_f29))); + temp_f27 = atan2d(temp_f30, temp_f31); + arg0->unk28.x = -atan2d(temp_f29, (temp_f31 * cosd(-temp_f27)) + (temp_f30 * -sind(-temp_f27))); + arg0->unk28.y = -(temp_f27 - 90.0f); + arg0->unk28.z = 0.0f; +} + +void fn_1_B41C(M418DllUnkStruct* arg0) { + arg0->center.x = arg0->unk10.x; + arg0->center.y = arg0->unk10.y; + arg0->center.z = arg0->unk10.z; + arg0->rot.x = arg0->unk28.x; + arg0->rot.y = arg0->unk28.y; + arg0->rot.z = arg0->unk28.z; + arg0->zoom = arg0->unk38; +} + +void fn_1_B458(M418DllUnkStruct* arg0) { + arg0->unk48 = 0.0f; + arg0->unk10.x = arg0->center.x; + arg0->unk10.y = arg0->center.y; + arg0->unk10.z = arg0->center.z; + arg0->unk28.x = arg0->rot.x; + arg0->unk28.y = arg0->rot.y; + arg0->unk28.z = arg0->rot.z; + arg0->unk38 = arg0->zoom; +} + +void fn_1_B4A4(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8) { + arg0->center.x = fn_1_A920(arg0->center.x, arg1->unk10.x, arg8); + arg0->center.y = fn_1_A920(arg0->center.y, arg1->unk10.y, arg8); + arg0->center.z = fn_1_A920(arg0->center.z, arg1->unk10.z, arg8); + arg0->rot.x = fn_1_A920(arg0->rot.x, arg1->unk28.x, arg8); + arg0->rot.y = fn_1_A920(arg0->rot.y, arg1->unk28.y, arg8); + arg0->rot.z = fn_1_A920(arg0->rot.z, arg1->unk28.z, arg8); + arg0->zoom = fn_1_A920(arg0->zoom, arg1->unk38, arg8); +} + +void fn_1_B710(M418DllUnkStruct* arg0, f32 arg1) { + arg0->center.x = fn_1_A920(arg0->center.x, arg0->unk10.x, arg1); + arg0->center.y = fn_1_A920(arg0->center.y, arg0->unk10.y, arg1); + arg0->center.z = fn_1_A920(arg0->center.z, arg0->unk10.z, arg1); + arg0->rot.x = fn_1_A920(arg0->rot.x, arg0->unk28.x, arg1); + arg0->rot.y = fn_1_A920(arg0->rot.y, arg0->unk28.y, arg1); + arg0->rot.z = fn_1_A920(arg0->rot.z, arg0->unk28.z, arg1); + arg0->zoom = fn_1_A920(arg0->zoom, arg0->unk38, arg1); +} + +void fn_1_B97C(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8, f32 arg9) { + arg1->unk10.x = fn_1_A940(arg0->unk10.x, arg1->center.x, arg8, arg9); + arg1->unk10.y = fn_1_A940(arg0->unk10.y, arg1->center.y, arg8, arg9); + arg1->unk10.z = fn_1_A940(arg0->unk10.z, arg1->center.z, arg8, arg9); + arg1->unk28.x = fn_1_A940(arg0->unk28.x, arg1->rot.x, arg8, arg9); + arg1->unk28.y = fn_1_A940(arg0->unk28.y, arg1->rot.y, arg8, arg9); + arg1->unk28.z = fn_1_A940(arg0->unk28.z, arg1->rot.z, arg8, arg9); + arg1->unk38 = fn_1_A940(arg0->unk38, arg1->zoom, arg8, arg9); +} + +void fn_1_BBF8(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8, f32 arg9) { + fn_1_B97C(arg0, arg1, arg8, arg9); + arg0->center.x = arg1->unk10.x; + arg0->center.y = arg1->unk10.y; + arg0->center.z = arg1->unk10.z; + arg0->rot.x = arg1->unk28.x; + arg0->rot.y = arg1->unk28.y; + arg0->rot.z = arg1->unk28.z; + arg0->zoom = arg1->unk38; +} + +void fn_1_BEAC(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg2, f32 arg3, f32 arg4) { + fn_1_B97C(arg0, arg1, arg2, arg3); + fn_1_B4A4(arg0, arg1, arg4); +} + +void fn_1_C318(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8, f32 arg9) { + arg1->unk10.x = fn_1_A968(arg0->unk10.x, arg1->center.x, arg8, arg9); + arg1->unk10.y = fn_1_A968(arg0->unk10.y, arg1->center.y, arg8, arg9); + arg1->unk10.z = fn_1_A968(arg0->unk10.z, arg1->center.z, arg8, arg9); + arg1->unk28.x = fn_1_A968(arg0->unk28.x, arg1->rot.x, arg8, arg9); + arg1->unk28.y = fn_1_A968(arg0->unk28.y, arg1->rot.y, arg8, arg9); + arg1->unk28.z = fn_1_A968(arg0->unk28.z, arg1->rot.z, arg8, arg9); + arg1->unk38 = fn_1_A968(arg0->unk38, arg1->zoom, arg8, arg9); +} + +void fn_1_C76C(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8, f32 arg9) { + fn_1_C318(arg0, arg1, arg8, arg9); + arg0->center.x = arg1->unk10.x; + arg0->center.y = arg1->unk10.y; + arg0->center.z = arg1->unk10.z; + arg0->rot.x = arg1->unk28.x; + arg0->rot.y = arg1->unk28.y; + arg0->rot.z = arg1->unk28.z; + arg0->zoom = arg1->unk38; +} + +void fn_1_CBF8(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg2, f32 arg3, f32 arg4) { + fn_1_C318(arg0, arg1, arg2, arg3); + fn_1_B4A4(arg0, arg1, arg4); +} + +void fn_1_D250(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8, f32 arg9) { + arg1->unk10.x = fn_1_AAEC(arg0->unk10.x, arg1->center.x, arg8, arg9); + arg1->unk10.y = fn_1_AAEC(arg0->unk10.y, arg1->center.y, arg8, arg9); + arg1->unk10.z = fn_1_AAEC(arg0->unk10.z, arg1->center.z, arg8, arg9); + arg1->unk28.x = fn_1_AAEC(arg0->unk28.x, arg1->rot.x, arg8, arg9); + arg1->unk28.y = fn_1_AAEC(arg0->unk28.y, arg1->rot.y, arg8, arg9); + arg1->unk28.z = fn_1_AAEC(arg0->unk28.z, arg1->rot.z, arg8, arg9); + arg1->unk38 = fn_1_AAEC(arg0->unk38, arg1->zoom, arg8, arg9); +} + +void fn_1_D714(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg8, f32 arg9) { + fn_1_D250(arg0, arg1, arg8, arg9); + arg0->center.x = arg1->unk10.x; + arg0->center.y = arg1->unk10.y; + arg0->center.z = arg1->unk10.z; + arg0->rot.x = arg1->unk28.x; + arg0->rot.y = arg1->unk28.y; + arg0->rot.z = arg1->unk28.z; + arg0->zoom = arg1->unk38; +} + +void fn_1_DC10(M418DllUnkStruct* arg0, M418DllUnkStruct* arg1, f32 arg2, f32 arg3, f32 arg4) { + fn_1_D250(arg0, arg1, arg2, arg3); + fn_1_B4A4(arg0, arg1, arg4); +} diff --git a/src/REL/m419Dll/main.c b/src/REL/m419Dll/main.c new file mode 100755 index 00000000..dd58a28a --- /dev/null +++ b/src/REL/m419Dll/main.c @@ -0,0 +1,3085 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ char unk04[0xB4]; +} StructBssC8; // Size 0xB8 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02[5]; +} StructBss1E8; // Size 0xC + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06[8]; + /* 0x16 */ s16 unk16; + /* 0x18 */ s16 unk18; + /* 0x1A */ s16 unk1A; + /* 0x1C */ s16 unk1C[4]; + /* 0x24 */ s16 unk24; + /* 0x26 */ char unk26[2]; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ s32 unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ float unk54; + /* 0x58 */ float unk58; + /* 0x5C */ float unk5C; + /* 0x60 */ float unk60; + /* 0x64 */ float unk64; + /* 0x68 */ float unk68; + /* 0x6C */ float unk6C; + /* 0x70 */ float unk70; + /* 0x74 */ float unk74; + /* 0x78 */ float unk78; + /* 0x7C */ float unk7C; + /* 0x80 */ float unk80; + /* 0x84 */ float unk84; + /* 0x88 */ float unk88; + /* 0x8C */ float unk8C; + /* 0x90 */ float unk90; + /* 0x94 */ float unk94; + /* 0x98 */ float unk98; + /* 0x9C */ float unk9C; + /* 0xA0 */ s8 unkA0; + /* 0xA1 */ s8 unkA1; + /* 0xA2 */ s8 unkA2; + /* 0xA3 */ s8 unkA3; + /* 0xA4 */ u16 unkA4; + /* 0xA6 */ u16 unkA6; + /* 0xA8 */ s32 unkA8; + /* 0xAC */ s32 unkAC; + /* 0xB0 */ s32 unkB0; + /* 0xB4 */ s32 unkB4; + /* 0xB8 */ s32 unkB8; + /* 0xBC */ s32 unkBC; + /* 0xC0 */ s32 unkC0; + /* 0xC4 */ float unkC4; + /* 0xC8 */ char unkC8[4]; + /* 0xCC */ float unkCC; + /* 0xD0 */ s32 unkD0; + /* 0xD4 */ s32 unkD4; + /* 0xD8 */ float unkD8; + /* 0xDC */ float unkDC; +} StructBss200; // Size 0xE0 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ s16 unk08; + /* 0x0A */ s16 unk0A; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; +} StructBss190; // Size 0x2C + +void fn_1_57C(s16 arg0); +void fn_1_AD0(s16 arg0); +void fn_1_F58(void); +void fn_1_2254(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_2744(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_47E4(void); +void fn_1_4B20(void); +void fn_1_9AF0(void); +void fn_1_DF98(void); +void fn_1_104A0(void); +void fn_1_10500(void); + +s16 lbl_1_bss_5C2; +s16 lbl_1_bss_5C0; // unused +s16 lbl_1_bss_5BE; +s16 lbl_1_bss_5BC; +s16 lbl_1_bss_5BA; +s16 lbl_1_bss_5B8; +s32 lbl_1_bss_5B4; +s32 lbl_1_bss_5B0; +s32 lbl_1_bss_5AC; +s32 lbl_1_bss_5A8; +s32 lbl_1_bss_5A4; +s32 lbl_1_bss_594[4]; +s32 lbl_1_bss_584[4]; +s32 lbl_1_bss_580; +StructBss200 lbl_1_bss_200[4]; +StructBss1E8 lbl_1_bss_1E8[2]; +StructBss190 lbl_1_bss_190[2]; +Process *lbl_1_bss_180[4]; +StructBssC8 lbl_1_bss_C8; +Vec lbl_1_bss_BC; +Vec lbl_1_bss_B0; +Vec lbl_1_bss_A4; +void *lbl_1_bss_84[8]; +void *lbl_1_bss_64[8]; +u8 lbl_1_bss_60; +Vec lbl_1_bss_0[8]; + +s32 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_20[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 21), DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), DATA_MAKE_NUM(DATADIR_M419, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 25), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), DATA_MAKE_NUM(DATADIR_MARIOMOT, 13), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 16) }; + +s32 lbl_1_data_4C[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 79), DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 22) }; + +Vec lbl_1_data_5C[] = { { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, + { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f } }; + +void ObjectSetup(void) +{ + Process *temp_r3; + + temp_r3 = omInitObjMan(50, 0x2000); + omGameSysInit(temp_r3); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 640, 480); + lbl_1_bss_C8.unk00 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_C8.unk00->work[0] = 1; + CRotM->x = -40.0f; + CRotM->y = 0.0f; + CRotM->z = 0.0f; + CenterM->x = 0.0f; + CenterM->y = 0.0f; + CenterM->z = 3000.0f; + CZoomM[0] = 1500.0f; + Hu3DLighInit(); + lbl_1_bss_5C2 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightPosAimSet(lbl_1_bss_5C2, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_5C2); + lbl_1_bss_BC.x = -500.0f; + lbl_1_bss_BC.y = 4000.0f; + lbl_1_bss_BC.z = 0.0f; + lbl_1_bss_B0.x = lbl_1_bss_B0.z = 0.0f; + lbl_1_bss_B0.y = 1.0f; + lbl_1_bss_A4.x = 0.0f; + lbl_1_bss_A4.y = 0.0f; + lbl_1_bss_A4.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_bss_BC, &lbl_1_bss_B0, &lbl_1_bss_A4); + Hu3DBGColorSet(0, 0, 0); + fn_1_F58(); + HuPrcChildCreate(fn_1_10500, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_4A0(void) +{ + s16 i; + + Hu3DLayerHookSet(1, fn_1_57C); + for (i = 0; i < 8; i++) { + lbl_1_bss_84[i] = HuMemDirectMallocNum(HEAP_DATA, 0x4800, MEMORY_DEFAULT_NUM); + lbl_1_bss_64[i] = HuMemDirectMallocNum(HEAP_DATA, 0x9000, MEMORY_DEFAULT_NUM); + lbl_1_bss_0[i].x = lbl_1_bss_0[i].y = 0.0f; + } +} + +void fn_1_57C(s16 arg0) +{ + Vec sp14; + Vec sp8; + ModelData *temp_r30; + s16 var_r31; + + temp_r30 = &Hu3DData[lbl_1_bss_5BE]; + sp14 = temp_r30->pos; + sp14.y += 50.0f; + Hu3D3Dto2D(&sp14, 1, &sp8.x); + var_r31 = sp8.x - 96.0f; + var_r31 &= 0xFFF8; + sp8.x = var_r31; + if (sp8.x < 0.0f) { + sp8.x = 0.0f; + } + if (sp8.x > 448.0f) { + sp8.x = 448.0f; + } + var_r31 = sp8.y - 96.0f; + var_r31 &= 0xFFF8; + sp8.y = var_r31; + if (sp8.y < 0.0f) { + sp8.y = 0.0f; + } + if (sp8.y > 288.0f) { + sp8.y = 288.0f; + } + lbl_1_bss_0[lbl_1_bss_60] = sp8; + GXSetTexCopySrc(sp8.x, sp8.y, 192, 192); + GXSetTexCopyDst(96, 96, GX_TF_RGB5A3, 1); + GXCopyTex(lbl_1_bss_84[lbl_1_bss_60], 0); + GXSetTexCopySrc(sp8.x, sp8.y, 192, 192); + GXSetTexCopyDst(96, 96, GX_TF_Z24X8, 1); + GXCopyTex(lbl_1_bss_64[lbl_1_bss_60], 0); +} + +void fn_1_848(ModelData *arg0, Mtx arg1) +{ + Mtx44 sp10; + GXColor spC; + s16 i; + + C_MTXOrtho(sp10, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 8000.0f); + GXSetProjection(sp10, GX_ORTHOGRAPHIC); + MTXIdentity(arg1); + GXLoadPosMtxImm(arg1, GX_PNMTX0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOp(GX_TEVSTAGE1, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR_NULL); + GXSetZTexture(GX_ZT_REPLACE, GX_TF_Z24X8, 0); + GXSetNumTexGens(1); + GXSetNumTevStages(2); + if (lbl_1_bss_5BC != 0) { + for (i = 1; i < 8; i++) { + spC.a = i * 24; + GXSetTevColor(GX_TEVREG0, spC); + fn_1_AD0((lbl_1_bss_60 - 8 + i) & 7); + } + } + lbl_1_bss_60 = (lbl_1_bss_60 + 1) & 7; + GXSetZTexture(GX_ZT_DISABLE, GX_TF_Z8, 0); +} + +void fn_1_AD0(s16 arg0) +{ + GXTexObj sp58; + GXTexObj sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + GXInitTexObj(&sp58, lbl_1_bss_84[arg0], 96, 96, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&sp58, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&sp58, GX_TEXMAP0); + GXInitTexObj(&sp38, lbl_1_bss_64[arg0], 96, 96, GX_TF_Z24X8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp38, GX_TEXMAP1); + sp2C.x = 0.0f; + sp2C.y = 0.0f; + sp2C.z = 0.0f; + sp20.x = 640.0f; + sp20.y = 0.0f; + sp20.z = 0.0f; + sp14.x = 640.0f; + sp14.y = 480.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 480.0f; + sp8.z = 0.0f; + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(lbl_1_bss_0[arg0].x, lbl_1_bss_0[arg0].y, 0.0f); + GXTexCoord2f32(0.0f, 0.0f); + GXPosition3f32(lbl_1_bss_0[arg0].x + 192.0f, lbl_1_bss_0[arg0].y, 0.0f); + GXTexCoord2f32(1.0f, 0.0f); + GXPosition3f32(lbl_1_bss_0[arg0].x + 192.0f, lbl_1_bss_0[arg0].y + 192.0f, 0.0f); + GXTexCoord2f32(1.0f, 1.0f); + GXPosition3f32(lbl_1_bss_0[arg0].x, lbl_1_bss_0[arg0].y + 192.0f, 0.0f); + GXTexCoord2f32(0.0f, 1.0f); + GXEnd(); +} + +void fn_1_F58(void) +{ + void *var_r29; + StructBss1E8 *temp_r26; + StructBss200 *temp_r31; + Process *var_r25; + float temp_f31; + s16 var_r30; + s32 var_r22; + s32 var_r23; + AnimData *var_r21; + s32 i; + s32 j; + + lbl_1_bss_5BC = 0; + lbl_1_bss_5BA = 0; + lbl_1_bss_5B0 = 0; + HuAudSndGrpSet(0x2C); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 8), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowMapSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 9), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowMapSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 10), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 11), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 12), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + lbl_1_bss_5B8 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + temp_r26 = &lbl_1_bss_1E8[0]; + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 13), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r26->unk00 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + for (j = 0; j < 5; j++) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 14 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26->unk02[j] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DMotionSet(var_r30, temp_r26->unk02[0]); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + HuPrcChildCreate(fn_1_47E4, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + temp_r26 = &lbl_1_bss_1E8[1]; + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 19), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r26->unk00 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + for (j = 0; j < 5; j++) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 20 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26->unk02[j] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DMotionSet(var_r30, temp_r26->unk02[0]); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + HuPrcChildCreate(fn_1_4B20, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 25), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + lbl_1_bss_190[0].unk00 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, 1); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 26), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_190[0].unk04 = Hu3DJointMotion(var_r30, var_r29); + Hu3DMotionSet(var_r30, lbl_1_bss_190[0].unk04); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 27), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + lbl_1_bss_190[0].unk02 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, 1); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_190[0].unk06 = Hu3DJointMotion(var_r30, var_r29); + Hu3DMotionSet(var_r30, lbl_1_bss_190[0].unk04); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + lbl_1_bss_190[0].unk08 = 0; + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 29), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + lbl_1_bss_190[1].unk00 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + lbl_1_bss_190[1].unk08 = 1; + Hu3DModelShadowSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 30), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + lbl_1_bss_190[1].unk02 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + for (i = 0, var_r22 = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_200[i]; + temp_r31->unk28 = i; + temp_r31->unk2C = i; + temp_r31->unk30 = GWPlayerCfg[i].pad_idx; + if (GWPlayerCfg[temp_r31->unk28].group == 0) { + lbl_1_bss_5AC = temp_r31->unk28; + lbl_1_bss_5BE = temp_r31->unk00 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); + Hu3DModelLayerSet(temp_r31->unk00, 0); + CharModelLayerSetAll(2); + fn_1_4A0(); + temp_r31->unk68 = temp_r31->unk70 = temp_r31->unk6C = 0.0f; + temp_r31->unk9C = temp_r31->unk6C; + temp_r31->unk54 = temp_r31->unk58 = temp_r31->unk5C = 0.0f; + temp_r31->unk8C = 50.0f; + temp_r31->unk90 = 0.0f; + temp_r31->unk94 = 1.0f; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); + Hu3DModelShadowSet(temp_r31->unk00); + for (j = 0; j < 11; j++) { + var_r23 = lbl_1_data_20[j]; + if ((var_r23 & 0xFFFF0000) == DATADIR_M419) { + var_r23 += GWPlayerCfg[i].character; + } + temp_r31->unk06[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], var_r23); + } + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk06[0]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); + var_r25 = HuPrcChildCreate(fn_1_9AF0, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r25->user_data = temp_r31; + lbl_1_bss_180[i] = var_r25; + } + else { + temp_r31->unk02 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); + Hu3DModelLayerSet(temp_r31->unk00, 1); + CharModelLayerSetAll(2); + temp_r31->unk80 = lbl_1_data_5C[GWPlayerCfg[i].character].x; + temp_r31->unk84 = lbl_1_data_5C[GWPlayerCfg[i].character].y; + temp_r31->unk88 = lbl_1_data_5C[GWPlayerCfg[i].character].z; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk80, temp_r31->unk84, temp_r31->unk88); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 31), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk00 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(temp_r31->unk00, 1); + temp_r31->unk68 = temp_r31->unk70 = 0.0f; + temp_r31->unk6C = 120.0f * var_r22; + var_r22++; + if (temp_r31->unk6C > 360.0f) { + temp_r31->unk6C -= 360.0f; + } + Hu3DModelAttrSet(temp_r31->unk00, 1); + temp_f31 = 1000.0f; + temp_r31->unk54 = temp_f31 * sind(temp_r31->unk6C); + temp_r31->unk58 = 0.0f; + temp_r31->unk5C = temp_f31 * cosd(temp_r31->unk6C); + temp_r31->unk6C += 180.0f; + if (temp_r31->unk6C > 360.0f) { + temp_r31->unk6C -= 360.0f; + } + temp_r31->unk9C = temp_r31->unk6C; + temp_r31->unk8C = 200.0f; + temp_r31->unk90 = 2.25f; + temp_r31->unk94 = 1.0f; + temp_r31->unk98 = 0.66f; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); + Hu3DModelShadowSet(temp_r31->unk00); + Hu3DModelHookSet(temp_r31->unk00, "itemhook_c", temp_r31->unk02); + for (j = 0; j < 4; j++) { + temp_r31->unk1C[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], lbl_1_data_4C[j]); + } + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk1C[0]); + CharModelMotionTimeSet(lbl_1_data_0[GWPlayerCfg[i].character], 60.0f); + CharModelVoiceEnableSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk1C[3], 0); + for (j = 0; j < 8; j++) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 32 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk06[j] = Hu3DJointMotion(temp_r31->unk00, var_r29); + } + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[1]); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); + Hu3DMotionSpeedSet(temp_r31->unk00, 1.0f); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk04 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(temp_r31->unk04, 1); + Hu3DModelAttrSet(temp_r31->unk04, 1); + Hu3DModelAttrSet(temp_r31->unk04, HU3D_MOTATTR_PAUSE); + CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); + var_r25 = HuPrcChildCreate(fn_1_DF98, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r25->user_data = temp_r31; + lbl_1_bss_180[i] = var_r25; + } + } + var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r21, 50); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 3); + Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, fn_1_2254); + var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r21, 50); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 3); + Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, fn_1_2744); + HuDataDirClose(DATADIR_EFFECT); + lbl_1_bss_580 = 0; + lbl_1_bss_584[0] = frandmod(5) * 60 + 600; + lbl_1_bss_584[1] = frandmod(5) * 60 + 1380; + lbl_1_bss_584[2] = 2760; + Hu3DModelLayerSet(Hu3DHookFuncCreate(fn_1_848), 1); + HuPrcChildCreate(fn_1_104A0, 0x1000, 0x1000, 0, HuPrcCurrentGet()); +} + +float fn_1_1F84(float arg0, float arg1) +{ + float var_f31; + float var_f30; + + if (arg0 > 600.0f - arg1) { + var_f31 = 600.0f + 200.0f * ((800.0f - (arg0 + arg1)) / 200.0f); + } + else if (arg0 < -(600.0f - arg1)) { + var_f31 = 600.0f + 200.0f * ((800.0f - ABS_INV(arg0 - arg1)) / 200.0f); + } + else { + var_f31 = 800.0f; + } + return var_f31; +} + +float fn_1_20AC(float arg0, float arg1) +{ + return fn_1_1F84(arg0, arg1); +} + +float fn_1_21D4(float arg0) +{ + while (arg0 >= 360.0f || arg0 < 0.0f) { + if (arg0 >= 360.0f) { + arg0 -= 360.0f; + } + if (arg0 < 0.0f) { + arg0 += 360.0f; + } + } + return arg0; +} + +void fn_1_2254(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + StructBss200 *temp_r28; + float var_f31; + float temp_f29; + float var_f30; + s32 var_r27; + s16 i; + s16 j; + s16 k; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < 4; i++) { + temp_r28 = &lbl_1_bss_200[i]; + if (temp_r28->unk38 & 1) { + for (j = 0, var_f30 = 0.0f; j < 16; j++, var_f30 += 22.5f) { + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (k == particle->unk_30) { + break; + } + var_f31 = var_f30; + temp_f29 = 125.0f + 70.0f * frandf(); + var_r31->unk34.x = temp_r28->unk74 + temp_f29 * sind(var_f31); + var_r31->unk34.y = temp_r28->unk78 + 50.0f * frandf(); + var_r31->unk34.z = temp_r28->unk7C + temp_f29 * cosd(var_f31); + var_r31->unk08.x = 5.0 * sind(var_f31); + var_r31->unk08.y = 9.0f + 2.0f * frandf(); + var_r31->unk08.z = 5.0 * cosd(var_f31); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 80.0f + 20.0f * frandf(); + var_r31->unk14.y = 15.0f; + var_r31->unk40.a = 0xC8; + var_r31->unk14.z = 17.0f; + } + temp_r28->unk38 &= ~1; + } + } + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x != 0.0f) { + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.95f; + var_r31->unk08.z *= 0.95f; + if (var_r31->unk08.y > 0.1f) { + var_r31->unk08.y -= 0.2f; + } + if (var_r31->unk08.y < 0.0f) { + var_r31->unk08.y = 0.0f; + } + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 1.5f; + } + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_2744(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + StructBss200 *temp_r28; + float temp_f31; + float temp_f30; + s32 var_r27; + s16 i; + s16 j; + s16 k; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + var_r31->unk20 = -1.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < 4; i++) { + temp_r28 = &lbl_1_bss_200[i]; + if (temp_r28->unk38 & 2) { + for (j = 0; j < 10; j++) { + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (k == particle->unk_30) { + break; + } + temp_f31 = 400.0f * frandf() - 200.0f; + temp_f30 = 400.0f * frandf() - 200.0f; + var_r31->unk34.x = temp_r28->unk74 + temp_f31; + var_r31->unk34.y = temp_r28->unk78 + 50.0f; + var_r31->unk34.z = temp_r28->unk7C + temp_f30; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 7.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20 = frandmod(10); + var_r31->unk24 = 0.0f; + var_r31->unk14.x = 100.0f; + var_r31->unk2C = 0.0f; + var_r31->unk14.y = 7.0f; + var_r31->unk40.a = 0xFF; + var_r31->unk14.z = 10.0f; + } + temp_r28->unk38 &= ~2; + } + } + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk20 > 0.0f) { + var_r31->unk20 -= 1.0f; + } + if (var_r31->unk20 == 0.0f) { + var_r31->unk24 = 1.0f; + var_r31->unk2C = 100.0f + 100.0f * frandf(); + var_r31->unk20 = -1.0f; + } + if (var_r31->unk14.x != 0.0f && var_r31->unk24 != 0.0f) { + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + if (var_r31->unk08.y > 1.0f) { + var_r31->unk08.y -= 0.3f; + } + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 0.4f; + } + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } + } +} + +s32 fn_1_2BDC(StructBss190 *arg0) +{ + StructBss200 *temp_r31; + Vec sp24; + Vec sp18; + Vec spC; + float var_f29; + float var_f28; + s32 var_r28; + s32 i; + + for (i = 0, var_f29 = 10000.0f, var_r28 = -1; i < 4; i++) { + temp_r31 = &lbl_1_bss_200[i]; + HuSetVecF(&sp24, arg0->unk14, 0.0, arg0->unk1C); + HuSetVecF(&sp18, temp_r31->unk54, 0.0, temp_r31->unk5C); + HuSubVecF(&spC, &sp24, &sp18); + if ((var_f28 = VECMagXYZ(&spC)) < 50.0f + temp_r31->unk8C && var_f28 < var_f29) { + var_f29 = var_f28; + var_r28 = i; + } + } + return var_r28; +} + +void fn_1_2DFC(StructBss190 *arg0) +{ + float temp_f31; + float var_f26; + float var_f25; + + temp_f31 = 50.0f; + var_f26 = fn_1_1F84(arg0->unk1C, 50.0f); + var_f25 = fn_1_1F84(arg0->unk14, 50.0f); + if (arg0->unk14 > var_f26 - temp_f31) { + arg0->unk14 = var_f26 - temp_f31; + } + if (arg0->unk14 < -(var_f26 - temp_f31)) { + arg0->unk14 = -(var_f26 - temp_f31); + } + if (arg0->unk1C > var_f25 - temp_f31) { + arg0->unk1C = var_f25 - temp_f31; + } + if (arg0->unk1C < -(var_f25 - temp_f31)) { + arg0->unk1C = -(var_f25 - temp_f31); + } + if (arg0->unk1C > var_f25 - temp_f31 || arg0->unk1C < -(var_f25 - temp_f31)) { + arg0->unk14 += arg0->unk10 * sind(arg0->unk0C) * 0.8f; + } + if (arg0->unk14 > var_f26 - temp_f31 || arg0->unk14 < -(var_f26 - temp_f31)) { + arg0->unk1C += arg0->unk10 * cosd(arg0->unk0C) * 0.8f; + } + if (arg0->unk14 > var_f26 - temp_f31) { + arg0->unk14 = var_f26 - temp_f31; + } + if (arg0->unk14 < -(var_f26 - temp_f31)) { + arg0->unk14 = -(var_f26 - temp_f31); + } + if (arg0->unk1C > var_f25 - temp_f31) { + arg0->unk1C = var_f25 - temp_f31; + } + if (arg0->unk1C < -(var_f25 - temp_f31)) { + arg0->unk1C = -(var_f25 - temp_f31); + } +} + +void fn_1_32F8(void) +{ + StructBss200 *temp_r31; + float var_f31; + s32 var_r29; + s32 i; + + var_r29 = (s32)HuPrcCurrentGet()->user_data; + temp_r31 = &lbl_1_bss_200[var_r29]; + for (i = 0, var_f31 = 1.0f; i < 30; i++, var_f31 -= 0.033333335f) { + Hu3DModelAmbSet(temp_r31->unk00, 1.0f, var_f31, var_f31); + HuPrcVSleep(); + } + Hu3DModelAmbSet(temp_r31->unk00, 1.0f, 0.0f, 0.0f); + while (temp_r31->unk48 > 30) { + HuPrcVSleep(); + } + for (i = 0, var_f31 = 0.0f; i < 30; i++, var_f31 += 0.033333335f) { + Hu3DModelAmbSet(temp_r31->unk00, 1.0f, var_f31, var_f31); + HuPrcVSleep(); + } + Hu3DModelAmbSet(temp_r31->unk00, 1.0f, 1.0f, 1.0f); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_344C(void) +{ + StructBss190 *temp_r31; + StructBss200 *temp_r30; + Vec spAC; + Vec spA0; + Vec sp94; + float sp6C; + float sp68; + float sp64; + float sp60; + float sp5C; + float sp58; + float sp54; + float sp50; + float sp4C; + float sp48; + float sp44; + float var_f24; + float var_f23; + s32 var_r24; + s32 var_r23; + s16 var_r22; + s32 var_r25; + s32 var_r28; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + HuPrcSleep(25); + var_r23 = 0; + temp_r31->unk0A = 0; + var_r28 = 0; + var_f24 = temp_r31->unk18; + var_f23 = 15.0f; + sp58 = 0.9f; + while (var_f24 > 50.0f) { + var_f23 -= sp58; + var_f24 += var_f23; + var_r28++; + } + if (temp_r31->unk08 == 0) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + Hu3DModelTPLvlSet(temp_r31->unk00, 1.0f); + } + else { + Hu3DModelAttrReset(temp_r31->unk02, 1); + } + Hu3DModelAttrReset(temp_r31->unk00, 1); + temp_r31->unk0C = atan2d(temp_r31->unk24 - temp_r31->unk14, temp_r31->unk28 - temp_r31->unk1C); + HuSetVecF(&spAC, temp_r31->unk24, 0.0, temp_r31->unk28); + HuSetVecF(&spA0, temp_r31->unk14, 0.0, temp_r31->unk1C); + HuSubVecF(&sp94, &spAC, &spA0); + temp_r31->unk10 = VECMagXYZ(&sp94) / var_r28; + var_f24 = temp_r31->unk18; + var_f23 = 15.0f; + sp58 = 0.9f; + while (var_f24 > 50.0f) { + sp68 = temp_r31->unk14; + sp64 = temp_r31->unk18; + sp60 = temp_r31->unk1C; + temp_r31->unk14 += temp_r31->unk10 * sind(temp_r31->unk0C); + temp_r31->unk18 = var_f24; + temp_r31->unk1C += temp_r31->unk10 * cosd(temp_r31->unk0C); + if ((var_r25 = fn_1_2BDC(temp_r31)) != -1) { + temp_r30 = &lbl_1_bss_200[var_r25]; + if (GWPlayerCfg[temp_r30->unk28].group == 0) { + sp5C = 150.0f; + } + else { + sp5C = 400.0f; + } + if (temp_r31->unk18 < sp5C) { + if (temp_r31->unk18 < sp5C && temp_r31->unk18 > sp5C - 50.0f) { + var_f23 = 15.0f; + sp58 = 0.9f; + } + else { + sp6C = atan2d(temp_r31->unk14 - temp_r30->unk54, temp_r31->unk1C - temp_r30->unk5C); + temp_r31->unk0C = fn_1_21D4(180.0f + temp_r31->unk0C); + temp_r31->unk0C = sp6C - (temp_r31->unk0C - sp6C); + } + temp_r31->unk14 = sp68; + temp_r31->unk18 = sp64; + temp_r31->unk1C = sp60; + } + } + fn_1_2DFC(temp_r31); + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14, temp_r31->unk18, temp_r31->unk1C); + if (temp_r31->unk08 != 0) { + temp_r31->unk20 += 10.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, temp_r31->unk18, temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, temp_r31->unk20); + } + Hu3DModelRotSet(temp_r31->unk00, 0.0f, 0.0f, temp_r31->unk20); + if (lbl_1_bss_5B4 >= 4) { + var_r23 = 1; + goto fn_1_344C_label; + } + HuPrcVSleep(); + var_f23 -= sp58; + var_f24 += var_f23; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14, 50.0f, temp_r31->unk1C); + if (temp_r31->unk08 != 0) { + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, 50.0f, temp_r31->unk1C); + } + if (temp_r31->unk08 == 0) { + Hu3DModelAttrSet(temp_r31->unk00, 1); + Hu3DModelAttrReset(temp_r31->unk02, 1); + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, 0.0f, temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, 0.0f); + Hu3DMotionSet(temp_r31->unk02, temp_r31->unk06); + Hu3DModelAttrReset(temp_r31->unk02, HU3D_MOTATTR_LOOP); + Hu3DModelTPLvlSet(temp_r31->unk02, 1.0f); + } + for (var_r28 = 300, var_r24 = 0; var_r28 != 0; var_r28--) { + if (temp_r31->unk08 != 0 && 0.0f != temp_r31->unk20) { + temp_r31->unk20 += 10.0f; + if (temp_r31->unk20 > 360.0f) { + temp_r31->unk20 = 0.0f; + } + Hu3DModelRotSet(temp_r31->unk00, 0.0f, 0.0f, temp_r31->unk20); + Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, temp_r31->unk20); + } + for (i = 0, sp50 = 10000.0f; i < 4; i++) { + temp_r30 = &lbl_1_bss_200[i]; + HuSetVecF(&spAC, temp_r31->unk14, 0.0, temp_r31->unk1C); + HuSetVecF(&spA0, temp_r30->unk54, 0.0, temp_r30->unk5C); + HuSubVecF(&sp94, &spAC, &spA0); + if ((sp54 = VECMagXYZ(&sp94)) < 50.0f + temp_r30->unk8C && sp54 < sp50) { + sp50 = sp54; + var_r25 = i; + } + } + if (sp50 < 10000.0f) { + temp_r30 = &lbl_1_bss_200[var_r25]; + temp_r31->unk0A = 1; + if (temp_r31->unk08 != 0) { + temp_r30->unk3C = 1; + temp_r30->unk48 = 300; + if (GWPlayerCfg[temp_r30->unk28].group == 0) { + temp_r30->unk94 = 3.0f; + lbl_1_bss_5BC = 1; + HuAudFXPlay(0x5E6); + } + else { + temp_r30->unk90 = 6.75f; + temp_r30->unk98 = 0.99f; + HuAudFXPlay(0x5E2); + } + } + else if (temp_r30->unk24 == 0) { + temp_r30->unk34 = 4; + HuAudPlayerVoicePlay(temp_r30->unk28, 0x128); + HuAudFXPlay(0x5E9); + } + break; + } + if (var_r28 < 60) { + var_r22 = temp_r31->unk00; + if (temp_r31->unk08 == 0) { + var_r22 = temp_r31->unk02; + } + if (var_r24 & 1) { + Hu3DModelAttrReset(var_r22, 1); + } + else { + Hu3DModelAttrSet(var_r22, 1); + } + var_r24++; + } + HuPrcVSleep(); + if (lbl_1_bss_5B4 >= 4) { + var_r23 = 1; + break; + } + } +fn_1_344C_label: + if (var_r23 != 0) { + for (i = 0, sp4C = 1.0f; i < 30; i++) { + sp4C -= 0.033333335f; + Hu3DModelScaleSet(temp_r31->unk00, sp4C, sp4C, sp4C); + HuPrcVSleep(); + } + Hu3DModelAttrSet(temp_r31->unk00, 1); + Hu3DModelAttrSet(temp_r31->unk02, 1); + } + else { + if (temp_r31->unk08 == 0) { + temp_r30 = &lbl_1_bss_200[var_r25]; + sp6C = atan2d(temp_r31->unk14 - temp_r30->unk54, temp_r31->unk1C - temp_r30->unk5C); + sp44 = 1.0f; + temp_r31->unk20 = 0.0f; + for (i = 0, sp48 = 0.0f; i < 10; i++, sp48 += 9.0f, sp44 -= 0.1f) { + temp_r31->unk14 += 2.0 * sind(sp6C); + temp_r31->unk18 += 10.0f; + temp_r31->unk1C += 2.0 * cosd(sp6C); + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, temp_r31->unk18, temp_r31->unk1C); + temp_r31->unk20 += 10.0f; + Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, temp_r31->unk20); + Hu3DModelTPLvlSet(temp_r31->unk02, sp44); + HuPrcVSleep(); + } + } + Hu3DModelAttrSet(temp_r31->unk00, 1); + if (temp_r31->unk08 != 0) { + Hu3DModelAttrSet(temp_r31->unk02, 1); + } + temp_r31->unk20 = 0.0f; + HuPrcCurrentGet()->user_data = NULL; + HuPrcKill(HuPrcCurrentGet()); + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_47E4(void) +{ + StructBss1E8 *var_r31; + StructBss190 *var_r30; + ModelData *temp_r29; + Process *temp_r3; + s32 var_r27; + + var_r31 = &lbl_1_bss_1E8[0]; + while (lbl_1_bss_5B4 != 3) { + HuPrcVSleep(); + } + while (TRUE) { + while (lbl_1_bss_5BA != 0) { + HuPrcVSleep(); + } + if (lbl_1_bss_5B4 >= 4) { + break; + } + var_r30 = &lbl_1_bss_190[0]; + if (lbl_1_bss_5B0 > lbl_1_bss_584[lbl_1_bss_580]) { + lbl_1_bss_580++; + var_r30 = &lbl_1_bss_190[1]; + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + else { + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + HuPrcVSleep(); + var_r27 = Hu3DMotionMaxTimeGet(var_r31->unk00); + while (var_r27 != 0) { + HuPrcVSleep(); + var_r27--; + } + HuAudFXPlay(0x5E4); + temp_r3 = HuPrcChildCreate(fn_1_344C, 0x2010, 0x3000, 0, HuPrcCurrentGet()); + temp_r3->user_data = var_r30; + temp_r29 = &Hu3DData[lbl_1_bss_1E8[0].unk00]; + var_r30->unk14 = temp_r29->pos.x + 640.0f; + var_r30->unk18 = temp_r29->pos.y + 620.0f; + var_r30->unk1C = temp_r29->pos.y - 200.0f; + var_r30->unk20 = 0.0f; + var_r30->unk24 = 1000.0f * frandf() - 500.0f; + var_r30->unk28 = 1000.0f * frandf() - 500.0f; + while (!Hu3DMotionEndCheck(var_r31->unk00)) { + HuPrcVSleep(); + } + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + while (temp_r3->user_data) { + HuPrcVSleep(); + } + lbl_1_bss_5BA = 1; + if (var_r30->unk0A != 0) { + HuAudFXPlay(0x5E8); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(6); + while (!Hu3DMotionEndCheck(var_r31->unk00)) { + HuPrcVSleep(); + } + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + } + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_4B20(void) +{ + StructBss1E8 *var_r31; + StructBss190 *var_r30; + Process *temp_r3; + ModelData *temp_r29; + s32 var_r27; + + var_r31 = &lbl_1_bss_1E8[1]; + while (lbl_1_bss_5B4 != 3) { + HuPrcVSleep(); + } + while (TRUE) { + while (lbl_1_bss_5BA == 0) { + HuPrcVSleep(); + } + if (lbl_1_bss_5B4 >= 4) { + break; + } + var_r30 = lbl_1_bss_190; + if (lbl_1_bss_5B0 > lbl_1_bss_584[lbl_1_bss_580]) { + lbl_1_bss_580++; + var_r30 = &lbl_1_bss_190[1]; + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + else { + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + HuPrcVSleep(); + var_r27 = Hu3DMotionMaxTimeGet(var_r31->unk00); + while (var_r27 != 0) { + HuPrcVSleep(); + var_r27--; + } + HuAudFXPlay(0x5E4); + temp_r3 = HuPrcChildCreate(fn_1_344C, 0x2010, 0x3000, 0, HuPrcCurrentGet()); + temp_r3->user_data = var_r30; + temp_r29 = &Hu3DData[lbl_1_bss_1E8->unk00]; + var_r30->unk14 = -(temp_r29->pos.x + 640.0f); + var_r30->unk18 = temp_r29->pos.y + 620.0f; + var_r30->unk1C = temp_r29->pos.y - 200.0f; + var_r30->unk24 = 1000.0f * frandf() - 500.0f; + var_r30->unk28 = 1000.0f * frandf() - 500.0f; + while (!Hu3DMotionEndCheck(var_r31->unk00)) { + HuPrcVSleep(); + } + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + while (temp_r3->user_data) { + HuPrcVSleep(); + } + lbl_1_bss_5BA = 0; + if (var_r30->unk0A != 0) { + HuAudFXPlay(0x5E8); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(6); + while (!Hu3DMotionEndCheck(var_r31->unk00)) { + HuPrcVSleep(); + } + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + } + } + while (TRUE) { + HuPrcVSleep(); + } +} + +s8 fn_1_4E54(s32 arg0, s32 arg1) +{ + StructBss200 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_200[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk30]) : (var_r30 = HuPadStkX[temp_r31->unk30]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unkA1) : (var_r30 = temp_r31->unkA0); + } + return var_r30; +} + +u8 fn_1_4F0C(s32 arg0, s32 arg1) +{ + StructBss200 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_200[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk30]) : (var_r30 = HuPadTrigL[temp_r31->unk30]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unkA2) : (var_r30 = temp_r31->unkA3); + } + return var_r30; +} + +u16 fn_1_4FCC(s32 arg0) +{ + StructBss200 *temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_200[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + var_r30 = HuPadBtnDown[temp_r31->unk30]; + } + else { + var_r30 = temp_r31->unkA6; + } + return var_r30; +} + +u16 fn_1_5038(s32 arg0) +{ + StructBss200 *temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_200[arg0]; + if (GWPlayerCfg[arg0].iscom == 0) { + var_r30 = HuPadBtn[temp_r31->unk30]; + } + else { + var_r30 = temp_r31->unkA4; + } + return var_r30; +} + +s32 fn_1_50A4(StructBss200 *arg0, float arg1, s32 arg2) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + StructBss200 *temp_r30; + s32 var_r28; + float var_f27; + float var_f28; + s32 i; + + var_r28 = -1; + for (i = 0, var_f28 = 10000.0f; i < 4; i++) { + if (i != arg0->unk28 && (arg2 == 0 || i != lbl_1_bss_5AC)) { + temp_r30 = &lbl_1_bss_200[i]; + HuSetVecF(&sp2C, arg0->unk54, arg0->unk58, arg0->unk5C); + HuSetVecF(&sp20, temp_r30->unk54, temp_r30->unk58, temp_r30->unk5C); + HuSubVecF(&sp14, &sp2C, &sp20); + if ((var_f27 = VECMagXYZ(&sp14)) < arg0->unk8C + temp_r30->unk8C + arg1 && var_f27 < var_f28) { + var_f28 = var_f27; + var_r28 = i; + } + } + } + return var_r28; +} + +s32 fn_1_52E8(StructBss200 *arg0) +{ + float var_f25; + float var_f24; + s32 var_r28; + + var_f25 = fn_1_1F84(arg0->unk5C, arg0->unk8C); + var_f24 = fn_1_1F84(arg0->unk54, arg0->unk8C); + if (arg0->unk54 > var_f25 - arg0->unk8C) { + arg0->unk54 = var_f25 - arg0->unk8C; + } + if (arg0->unk54 < -(var_f25 - arg0->unk8C)) { + arg0->unk54 = -(var_f25 - arg0->unk8C); + } + if (arg0->unk5C > var_f24 - arg0->unk8C) { + arg0->unk5C = var_f24 - arg0->unk8C; + } + if (arg0->unk5C < -(var_f24 - arg0->unk8C)) { + arg0->unk5C = -(var_f24 - arg0->unk8C); + } + if ((var_r28 = fn_1_50A4(arg0, 0.0f, 0)) != -1) { + arg0->unk54 = arg0->unk60; + arg0->unk5C = arg0->unk64; + } + return var_r28; +} + +float fn_1_5858(float arg0, float arg1, float arg2) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +float fn_1_595C(float arg0, float arg1, StructBss200 *arg2) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + + HuSetVecF(&sp2C, arg0, 0.0, arg1); + HuSetVecF(&sp20, arg2->unk54, 0.0, arg2->unk5C); + HuSubVecF(&sp14, &sp2C, &sp20); + return VECMagXZ(&sp14); +} + +float fn_1_5AD8(float arg0, float arg1) +{ + float var_f31; + + if (arg0 > arg1) { + var_f31 = fn_1_21D4(arg0 - arg1); + if (var_f31 < 180.0f) { + var_f31 = fn_1_21D4(arg1 + var_f31 + 180.0f); + } + else { + var_f31 = fn_1_21D4(arg1 - var_f31); + } + } + else { + var_f31 = fn_1_21D4(arg1 - arg0); + if (var_f31 < 180.0f) { + var_f31 = fn_1_21D4(arg0 + var_f31 + 180.0f); + } + else { + var_f31 = fn_1_21D4(arg0 - var_f31); + } + } + return var_f31; +} + +s32 fn_1_5F34(StructBss200 *arg0, float arg1) +{ + s32 var_r31; + float var_f25; + float var_f24; + + var_f25 = fn_1_1F84(arg0->unk5C, arg0->unk8C); + var_f24 = fn_1_1F84(arg0->unk54, arg0->unk8C); + var_r31 = 0; + if (arg0->unk54 > var_f25 - arg0->unk8C - arg1 || arg0->unk54 < -(var_f25 - arg0->unk8C - arg1) || arg0->unk5C > var_f24 - arg0->unk8C - arg1 + || arg0->unk5C < -(var_f24 - arg0->unk8C - arg1)) { + var_r31 = 1; + } + return var_r31; +} + +void fn_1_628C(StructBss200 *arg0) +{ + Vec spC; + + HuSetVecF(&spC, fn_1_4E54(arg0->unk28, 0) / 4.0f, 0.0, -fn_1_4E54(arg0->unk28, 1) / 4.0f); + arg0->unk90 = VECMagXYZ(&spC); + if (arg0->unk90 >= 0.5f) { + if (arg0->unk90 >= 10.0f) { + spC.x /= arg0->unk90; + spC.z /= arg0->unk90; + arg0->unk90 = 10.0f; + spC.x = 10.0f * spC.x; + spC.z = 10.0f * spC.z; + } + arg0->unk54 += spC.x * arg0->unk94; + arg0->unk5C += spC.z * arg0->unk94; + } +} + +void fn_1_65C0(Vec *arg0, StructBss200 **arg1) +{ + float temp_f31; + StructBss200 *temp_r31; + StructBss200 *temp_r30; + s32 var_r28; + s32 i; + + for (i = 0; i < 3; i++) { + temp_r31 = arg1[i]; + (i >= 2) ? (var_r28 = 0) : (var_r28 = i + 1); + temp_r30 = arg1[var_r28]; + temp_f31 = ABS_INV(temp_r31->unk54 - temp_r30->unk54) / 2.0f; + if (temp_r31->unk54 > temp_r30->unk54) { + arg0[i].x = temp_r31->unk54 - temp_f31; + } + else { + arg0[i].x = temp_r30->unk54 - temp_f31; + } + temp_r31 = arg1[i]; + (i >= 2) ? (var_r28 = 0) : (var_r28 = i + 1); + temp_r30 = arg1[var_r28]; + temp_f31 = ABS_INV(temp_r31->unk5C - temp_r30->unk5C) / 2.0f; + if (temp_r31->unk5C > temp_r30->unk5C) { + arg0[i].z = temp_r31->unk5C - temp_f31; + } + else { + arg0[i].z = temp_r30->unk5C - temp_f31; + } + } +} + +s32 fn_1_67A0(float arg0, float arg1, StructBss200 *arg2, StructBss200 **arg3) +{ + StructBss200 *var_r31; + StructBss200 sp5C; + float var_f29; + s32 var_r27; + s32 i; + + var_r31 = &sp5C; + var_r31->unk28 = arg2->unk28; + var_r31->unk54 = arg2->unk54; + var_r31->unk58 = arg2->unk58; + var_r31->unk5C = arg2->unk5C; + var_r31->unk8C = arg2->unk8C; + var_r31->unk90 = arg2->unk90; + var_r31->unk94 = arg2->unk94; + var_f29 = fn_1_21D4(atan2d(arg0 - arg2->unk54, arg1 - arg2->unk5C)); + var_r27 = 1; + while (fn_1_595C(arg0, arg1, var_r31) >= 10.0f) { + var_r31->unk54 += 10.0 * sind(var_f29); + var_r31->unk5C += 10.0 * cosd(var_f29); + for (i = 0; i < 3; i++) { + if (fn_1_595C(arg3[i]->unk54, arg3[i]->unk5C, var_r31) < var_r31->unk8C + arg3[i]->unk8C + 10.0f) { + break; + } + } + if (i < 3) { + var_r27 = 0; + break; + } + } + return var_r27; +} + +s32 fn_1_6D04(void) +{ + StructBss200 *sp8[3]; + StructBss200 *var_r29; + s32 var_r30; + s32 var_r28; + s32 i; + + for (i = 0, var_r30 = 0; i < 4; i++) { + if (i == lbl_1_bss_5AC) { + var_r29 = &lbl_1_bss_200[i]; + } + else { + sp8[var_r30++] = &lbl_1_bss_200[i]; + } + } + var_r30 = 0; + for (i = 0; i < 3; i++) { + if (sp8[i]->unk54 > var_r29->unk54) { + break; + } + } + if (i < 3) { + var_r30++; + for (i = 0; i < 3; i++) { + if (sp8[i]->unk54 < var_r29->unk54) { + break; + } + } + if (i < 3) { + var_r30++; + for (i = 0; i < 3; i++) { + if (sp8[i]->unk5C > var_r29->unk5C) { + break; + } + } + if (i < 3) { + var_r30++; + for (i = 0; i < 3; i++) { + if (sp8[i]->unk5C < var_r29->unk5C) { + break; + } + } + if (i < 3) { + var_r30++; + } + } + } + } + var_r28 = 0; + if (var_r30 >= 4) { + var_r28 = 1; + } + return var_r28; +} + +float fn_1_6E9C(StructBss200 *arg0) +{ + s32 sp88[3]; + s32 sp50[2]; + float sp44; + float var_f20; + float sp48[2]; + StructBss200 *sp7C[3]; + s32 var_r29; + s32 var_r28; + s32 i; + + for (i = 0, var_r29 = 0; i < 4; i++) { + if (i != arg0->unk28) { + sp7C[var_r29++] = &lbl_1_bss_200[i]; + } + } + for (i = 0, var_r28 = 0; i < 3; i++) { + sp44 = fn_1_595C(sp7C[i]->unk54, sp7C[i]->unk5C, arg0); + if (sp44 < arg0->unk8C + sp7C[i]->unk8C + 100.0f) { + sp88[i] = 1; + var_r28++; + } + else { + sp88[i] = -1; + } + } + var_f20 = -1.0f; + switch (var_r28) { + case 1: + for (i = 0; i < 3; i++) { + if (sp88[i] != 0) { + break; + } + } + var_f20 = fn_1_21D4(atan2d(arg0->unk54 - sp7C[i]->unk54, arg0->unk5C - sp7C[i]->unk5C)); + break; + case 2: + for (i = 0, var_r29 = 0; i < 3; i++) { + if (sp88[i] == 0) { + sp50[var_r29++] = i; + } + } + for (i = 0; i < 2; i++) { + sp48[i] = fn_1_21D4(atan2d(arg0->unk54 - sp7C[sp50[i]]->unk54, arg0->unk5C - sp7C[sp50[i]]->unk5C)); + } + var_f20 = fn_1_5AD8(sp48[0], sp48[1]); + break; + } + if (var_f20 != -1.0f) + ; + if (var_f20 != -1.0f) { + var_f20 = fn_1_21D4(var_f20); + } + return var_f20; +} + +void fn_1_78B4(StructBss200 *arg0) +{ + StructBss200 *temp_r18; + StructBss200 *var_r17; + StructBss200 *sp224[3]; + Vec sp254[3]; + Vec sp230[3]; + s32 sp218[3]; + s32 sp138[2]; + s32 sp130[2]; + s32 sp12C; + float sp128; + float sp124; + s32 sp120; + float sp11C; + float sp118; + float sp114; + float sp110; + float var_f27; // ! - uninitialized + float var_f29; + float var_f28; + float var_f30; + float var_f31; + float var_f26; + s32 var_r21; + s32 var_r22; + s32 var_r29; + s32 var_r30; + s32 sp10C; + + arg0->unkA0 = arg0->unkA1 = 0; + arg0->unkA3 = arg0->unkA2 = 0; + arg0->unkA4 = arg0->unkA6 = 0; + switch (GWPlayerCfg[arg0->unk28].diff) { + case 0: + sp12C = 60; + break; + case 1: + sp12C = 80; + break; + case 2: + sp12C = 90; + break; + default: + sp12C = 95; + break; + } + for (var_r30 = 0, var_r29 = 0; var_r30 < 4; var_r30++) { + if (var_r30 != arg0->unk28) { + sp224[var_r29++] = &lbl_1_bss_200[var_r30]; + } + } + for (var_r30 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { + if (sp224[var_r30]->unk54 < var_f31) { + var_f31 = sp224[var_r30]->unk54; + } + } + for (var_r30 = 0, var_f30 = -10000.0f; var_r30 < 3; var_r30++) { + if (sp224[var_r30]->unk54 > var_f30) { + var_f30 = sp224[var_r30]->unk54; + } + } + sp124 = ABS_INV(var_f30 - var_f31) / 2.0f; + var_f29 = var_f30 - sp124; + for (var_r30 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { + if (sp224[var_r30]->unk5C < var_f31) { + var_f31 = sp224[var_r30]->unk5C; + } + } + for (var_r30 = 0, var_f30 = -10000.0f; var_r30 < 3; var_r30++) { + if (sp224[var_r30]->unk5C > var_f30) { + var_f30 = sp224[var_r30]->unk5C; + } + } + sp124 = ABS_INV(var_f30 - var_f31) / 2.0f; + var_f28 = var_f30 - sp124; + for (var_r30 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { + var_f26 = fn_1_595C(var_f29, var_f28, sp224[var_r30]); + if (var_f26 < var_f31) { + var_f31 = var_f26; + } + } + if (fn_1_6D04() != 0) { + arg0->unkB0 = 0; + if (var_f31 < 400.0f || (arg0->unkB4 & 2)) { + arg0->unkB4 |= 2; + fn_1_65C0(sp254, sp224); + if (arg0->unkBC == -1) { + for (var_r30 = 0, sp120 = 0, var_f30 = 0.0f; var_r30 < 3; var_r30++) { + temp_r18 = sp224[var_r30]; + (var_r30 >= 2) ? (var_r29 = 0) : (var_r29 = var_r30 + 1); + var_r17 = sp224[var_r29]; + var_f26 = fn_1_595C(temp_r18->unk54, temp_r18->unk5C, var_r17); + if (var_f26 > 700.0f) { + sp218[var_r30] = 1; + sp120++; + } + else { + sp218[var_r30] = 0; + } + if (var_f26 > var_f30) { + var_f30 = var_f26; + var_r21 = var_r30; + var_f27 = fn_1_21D4(atan2d(sp254[var_r30].x - arg0->unk54, sp254[var_r30].z - arg0->unk5C)); + } + } + if (sp120 > 0) { + var_r29 = frandmod(sp120); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (sp218[var_r30] != 0 && var_r29-- == 0) { + break; + } + } + var_r21 = var_r30; + var_f27 = fn_1_21D4(atan2d(sp254[var_r30].x - arg0->unk54, sp254[var_r30].z - arg0->unk5C)); + } + arg0->unkBC = var_r21; + arg0->unkCC = var_f27; + } + else { + var_r21 = arg0->unkBC; + var_f27 = arg0->unkCC; + } + sp11C = var_f29; + sp118 = var_f28; + var_f29 = sp254[var_r21].x; + var_f28 = sp254[var_r21].z; + if (fn_1_595C(var_f29, var_f28, arg0) <= 30.0f && !(arg0->unkB4 & 1)) { + arg0->unkC4 = fn_1_21D4(atan2d(var_f29, var_f28)); + arg0->unkB4 |= 1; + } + if (arg0->unkB4 & 1) { + var_f29 = 800.0 * sind(arg0->unkC4); + var_f28 = 800.0 * cosd(arg0->unkC4); + } + } + } + else { + arg0->unkAC = 0; + arg0->unkB4 = 0; + arg0->unkBC = -1; + if ((var_f31 >= 600.0f && fn_1_67A0(var_f29, var_f28, arg0, &sp224[0]) != 0) || (arg0->unkB0 & 0x10)) { + arg0->unkB0 |= 0x10; + fn_1_65C0(sp230, sp224); + for (var_r30 = 0, var_r21 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { + var_f26 = fn_1_595C(sp230[var_r30].x, sp230[var_r30].z, arg0); + if (var_f26 < var_f31) { + var_f31 = var_f26; + var_r21 = var_r30; + } + } + sp114 = var_f29; + sp110 = var_f28; + var_f29 = sp230[var_r21].x; + var_f28 = sp230[var_r21].z; + if (fn_1_595C(var_f29, var_f28, arg0) <= 30.0f && !(arg0->unkB0 & 0x20)) { + arg0->unkC4 = fn_1_21D4(var_f27 - 90.0f); + arg0->unkB0 |= 0x20; + } + if (arg0->unkB0 & 0x20) { + var_f29 = 800.0 * sind(arg0->unkC4); + var_f28 = 800.0 * cosd(arg0->unkC4); + if (fn_1_5F34(arg0, 10.0f)) { + arg0->unkB0 &= ~0x20; + } + else { + arg0->unkB0 |= 0x20; + } + } + } + else { + if (arg0->unk54 >= 0.0f && arg0->unk5C < 0.0f) { + sp138[0] = 0; + sp138[1] = 1; + } + if (arg0->unk54 < 0.0f && arg0->unk5C < 0.0f) { + sp138[0] = 3; + sp138[1] = 0; + } + if (arg0->unk54 >= 0.0f && arg0->unk5C >= 0.0f) { + sp138[0] = 1; + sp138[1] = 2; + } + if (arg0->unk54 < 0.0f && arg0->unk5C >= 0.0f) { + sp138[0] = 2; + sp138[1] = 3; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r22 = 0; + sp10C = sp138[var_r30]; + switch (sp10C) { + case 0: + for (var_r29 = 0; var_r29 < 3; var_r29++) { + if (sp224[var_r29]->unk5C < -800.0f + sp224[var_r29]->unk8C + 150.0f) { + break; + } + } + if (var_r29 >= 3) { + var_r22 = 1; + } + break; + case 1: + for (var_r29 = 0; var_r29 < 3; var_r29++) { + if (sp224[var_r29]->unk54 > 800.0f - sp224[var_r29]->unk8C - 150.0f) { + break; + } + } + if (var_r29 >= 3) { + var_r22 = 1; + } + break; + case 2: + for (var_r29 = 0; var_r29 < 3; var_r29++) { + if (sp224[var_r29]->unk5C > 800.0f - sp224[var_r29]->unk8C - 150.0f) { + break; + } + } + if (var_r29 >= 3) { + var_r22 = 1; + } + break; + case 3: + for (var_r29 = 0; var_r29 < 3; var_r29++) { + if (sp224[var_r29]->unk54 < -800.0f + sp224[var_r29]->unk8C + 150.0f) { + break; + } + } + if (var_r29 >= 3) { + var_r22 = 1; + } + break; + } + sp130[var_r30] = var_r22; + } + var_r22 = 0; + if ((arg0->unkB0 & 4) || (arg0->unkB0 & 8)) { + if ((arg0->unkB0 & 4) && sp130[0] != 0) { + var_r22 = 1; + } + if ((arg0->unkB0 & 8) && sp130[1] != 0) { + var_r22 = 1; + } + } + if (arg0->unkC0 > 0) { + var_r22 = 1; + arg0->unkC0--; + } + if (var_r22 == 0) { + arg0->unkB0 &= ~0xC; + if (sp130[0] != 0 && sp130[1] != 0) { + if (frandmod(2) != 0) { + arg0->unkB0 |= 4; + arg0->unkC0 = 30; + } + else { + arg0->unkB0 |= 8; + arg0->unkC0 = 30; + } + } + else if (sp130[0] != 0) { + arg0->unkB0 |= 4; + arg0->unkC0 = 30; + } + else if (sp130[1] != 0) { + arg0->unkB0 |= 8; + arg0->unkC0 = 30; + } + else { + arg0->unkB0 |= 0x10; + } + } + if ((arg0->unkB0 & 4) || (arg0->unkB0 & 8)) { + var_f27 = fn_1_21D4(atan2d(arg0->unk54, arg0->unk5C)); + if (arg0->unkB0 & 4) { + var_f27 += 10.0f; + } + else { + var_f27 -= 10.0f; + } + var_f29 = 800.0 * sind(var_f27); + var_f28 = 800.0 * cosd(var_f27); + } + else { + var_f29 = arg0->unk54; + var_f28 = arg0->unk5C; + } + } + } + var_f26 = fn_1_595C(var_f29, var_f28, arg0); + if (var_f26 > 100.0f || arg0->unkAC == 1) { + if (arg0->unkAC != 1) { + arg0->unkAC = 1; + } + if (var_f26 < 20.0f) { + arg0->unkAC = 0; + return; + } + if (var_f26 < 30.0f) { + sp128 = 10.0f; + } + else { + sp128 = 50.0f; + } + var_f27 = fn_1_21D4(atan2d(var_f29 - arg0->unk54, var_f28 - arg0->unk5C)); + arg0->unkA0 = sp128 * sind(var_f27); + arg0->unkA1 = sp128 * -cosd(var_f27); + } +} + +void fn_1_9AF0(void) +{ + StructBss200 *temp_r31; + StructBss200 *temp_r29; + Vec sp6C; + float sp44; + float sp40; + float var_f23; + float var_f22; + float var_f21; + float var_f28; + float var_f19; + s32 var_r24; + s32 var_r30; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk34 = 0; + temp_r31->unk24 = 0; + temp_r31->unkA8 = 0; + temp_r31->unk38 = 0; + temp_r31->unkBC = -1; + while (lbl_1_bss_5B4 == 0) { + HuPrcVSleep(); + } + lbl_1_bss_5B4 = 2; + while (lbl_1_bss_5B4 == 2) { + HuPrcVSleep(); + } + while (TRUE) { + temp_r31->unk60 = temp_r31->unk54; + temp_r31->unk64 = temp_r31->unk5C; + if (GWPlayerCfg[temp_r31->unk28].iscom == 1) { + fn_1_78B4(temp_r31); + } + if (temp_r31->unk3C != 0 && temp_r31->unk48-- == 0) { + temp_r31->unk3C = 0; + temp_r31->unk94 = 1.0f; + lbl_1_bss_5BC = 0; + } + if (temp_r31->unk24 != 0) { + break; + } + switch (temp_r31->unk34) { + case 4: + omVibrate(temp_r31->unk28, 12, 6, 6); + CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 1.0f); + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[6]); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); + temp_r31->unk44 = 60; + temp_r31->unk34 = 5; + break; + case 5: + if (temp_r31->unk44 != 0) { + if (temp_r31->unk44 == 20) { + HuAudPlayerVoicePlay(temp_r31->unk28, 0x119); + } + temp_r31->unk44--; + } + else { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[7], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + temp_r31->unk44 = 20; + temp_r31->unk34 = 6; + } + break; + case 6: + if (temp_r31->unk44 != 0) { + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); + temp_r31->unk44--; + } + else if (Hu3DMotionEndCheck(temp_r31->unk00) == 1) { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk44 = 10; + temp_r31->unk34 = 7; + } + break; + case 7: + if (temp_r31->unk44 != 0) { + temp_r31->unk44--; + } + else { + CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 2.0f); + temp_r31->unk34 = 0; + } + break; + default: + HuSetVecF(&sp6C, fn_1_4E54(temp_r31->unk28, 0) / 4.0f, 0.0, -fn_1_4E54(temp_r31->unk28, 1) / 4.0f); + temp_r31->unk90 = VECMagXYZ(&sp6C); + if (temp_r31->unk90 >= 0.5f) { + CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 1.0f); + if (temp_r31->unk90 >= 10.0f) { + sp6C.x /= temp_r31->unk90; + sp6C.z /= temp_r31->unk90; + temp_r31->unk90 = 10.0f; + sp6C.x = 10.0f * sp6C.x; + sp6C.z = 10.0f * sp6C.z; + } + temp_r31->unk6C = fn_1_5858(temp_r31->unk6C, atan2d(sp6C.x, sp6C.z), 0.4f); + if (temp_r31->unk90 >= 8.0f) { + if (temp_r31->unk34 != 3) { + temp_r31->unk34 = 3; + CharModelMotionShiftSet( + lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } + else if (temp_r31->unk34 != 2) { + temp_r31->unk34 = 2; + CharModelMotionShiftSet( + lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + temp_r31->unk54 += sp6C.x * temp_r31->unk94; + temp_r31->unk5C += sp6C.z * temp_r31->unk94; + } + else if (temp_r31->unk34 != 0) { + temp_r31->unk34 = 0; + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4]); + CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 2.0f); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + } + break; + } + if ((temp_r31->unk40 = fn_1_50A4(temp_r31, 0.0f, 0)) != -1) { + temp_r31->unk24 = 1; + break; + } + if ((temp_r31->unk40 = fn_1_52E8(temp_r31)) != -1) { + temp_r31->unk24 = 1; + break; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); + HuPrcVSleep(); + } + lbl_1_bss_5BC = 0; + if (lbl_1_bss_5A8 == lbl_1_bss_5AC) { + var_f23 = 10.0f; + CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 1.0f); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + var_r30 = (360.0f - fn_1_21D4(temp_r31->unk6C)) / var_f23; + if (temp_r31->unk6C < 180.0f) { + var_r30 = temp_r31->unk6C / var_f23; + var_f23 = -var_f23; + } + for (; var_r30 != 0; var_r30--) { + temp_r31->unk6C += var_f23; + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); + HuPrcVSleep(); + } + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, 0.0f, temp_r31->unk70); + } + else { + omVibrate(temp_r31->unk28, 12, 4, 2); + HuAudPlayerVoicePlay(temp_r31->unk28, 0x123); + HuAudFXPlay(0x5EC); + temp_r29 = &lbl_1_bss_200[temp_r31->unk40]; + temp_r31->unk9C = atan2d(temp_r31->unk54 - temp_r29->unk54, temp_r31->unk5C - temp_r29->unk5C); + var_r30 = 0; + var_f22 = temp_r31->unk54; + var_f21 = temp_r31->unk5C; + while (TRUE) { + var_f22 += 20.0 * sind(temp_r31->unk9C); + var_f21 += 20.0 * cosd(temp_r31->unk9C); + if (ABS_INV(var_f22) > 1200.0f || var_f21 > 1200.0f || var_f21 < -2000.0f) { + break; + } + var_r30++; + } + var_f28 = fn_1_21D4(atan2d(temp_r31->unk54 - temp_r29->unk54, temp_r31->unk5C - temp_r29->unk5C)); + if (ABS_INV(var_f28 - temp_r31->unk6C) > 90.0f && ABS_INV(var_f28 - temp_r31->unk6C) < 270.0f) { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk18, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + else { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk1A, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + sp44 = temp_r31->unk58; + var_f19 = 0.0f; + sp40 = 180.0f / var_r30; + var_r24 = 0; + for (; var_r30 != 0; var_r30--) { + temp_r31->unk54 += 20.0 * sind(temp_r31->unk9C); + temp_r31->unk58 = 700.0 * sind(var_f19); + temp_r31->unk5C += 20.0 * cosd(temp_r31->unk9C); + var_f19 += sp40; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + if (Hu3DMotionTimeGet(temp_r31->unk00) == 20.0f && var_r24 == 0) { + var_r24 = 1; + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_PAUSE); + } + HuPrcVSleep(); + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, -1000.0f, temp_r31->unk5C); + Hu3DModelAttrSet(temp_r31->unk00, 1); + } + while (TRUE) { + HuPrcVSleep(); + } +} + +float fn_1_ADFC(s32 arg0, float arg1, float arg2) +{ + float temp_f31; + float var_f29; + + temp_f31 = arg1 - fn_1_21D4(arg2); + if (temp_f31 < 0.0f || ABS_INV(temp_f31) > 180.0f) { + if (ABS_INV(temp_f31) > 180.0f) { + var_f29 = (360.0f - ABS_INV(temp_f31)) / arg0; + if (temp_f31 > 0.0f) { + var_f29 = -var_f29; + } + } + else { + var_f29 = temp_f31 / arg0; + } + } + else { + var_f29 = temp_f31 / arg0; + } + return var_f29; +} + +void fn_1_B054(StructBss200 *arg0) +{ + StructBss200 sp23C; + float sp230[3]; + float sp198[2]; + Vec sp224; + Vec sp218; + Vec sp20C; + float sp194; + float sp190; + float sp18C; + float sp188; + float sp184; + float sp180; + s32 sp17C; + float sp178; + float sp174; + float var_f30; + float var_f29; + float var_f31; + s32 var_r21; + s32 var_r20; + StructBss200 *temp_r30; + StructBss200 *var_r29; + StructBss200 *temp_r28; + s32 var_r19; + s32 var_r18; + s32 var_r17; + s32 var_r26; + s32 i; + + arg0->unkA0 = arg0->unkA1 = 0; + arg0->unkA3 = arg0->unkA2 = 0; + arg0->unkA4 = arg0->unkA6 = 0; + switch (GWPlayerCfg[arg0->unk28].diff) { + case 0: + var_r19 = 60; + break; + case 1: + var_r19 = 80; + break; + case 2: + var_r19 = 90; + break; + default: + var_r19 = 95; + break; + } + temp_r30 = &lbl_1_bss_200[lbl_1_bss_5AC]; + var_r29 = &sp23C; + for (i = 0, var_r26 = 0; i < 4; i++) { + if (i != lbl_1_bss_5AC && i != arg0->unk28) { + temp_r28 = &lbl_1_bss_200[i]; + sp230[var_r26] = fn_1_21D4(atan2d(temp_r28->unk54 - temp_r30->unk54, temp_r28->unk5C - temp_r30->unk5C)); + var_r26++; + } + } + if (sp230[0] > sp230[1]) { + sp230[2] = fn_1_21D4(sp230[0] - sp230[1]); + if (sp230[2] < 180.0f) { + sp230[2] = fn_1_21D4(sp230[1] + sp230[2] + 180.0f); + } + else { + sp230[2] = fn_1_21D4(sp230[1] - sp230[2]); + } + } + else { + sp230[2] = fn_1_21D4(sp230[1] - sp230[0]); + if (sp230[2] < 180.0f) { + sp230[2] = fn_1_21D4(sp230[0] + sp230[2] + 180.0f); + } + else { + sp230[2] = fn_1_21D4(sp230[0] - sp230[2]); + } + } + temp_r28 = &lbl_1_bss_200[arg0->unk28]; + HuSetVecF(&sp224, temp_r28->unk54, temp_r28->unk58, temp_r28->unk5C); + HuSetVecF(&sp218, temp_r30->unk54, temp_r30->unk58, temp_r30->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + sp184 = VECMagXYZ(&sp20C); + for (i = 0, var_r21 = 0; i < 4; i++) { + if (i != lbl_1_bss_5AC && i != arg0->unk28 && GWPlayerCfg[i].iscom) { + temp_r28 = &lbl_1_bss_200[i]; + HuSetVecF(&sp224, temp_r28->unk54, temp_r28->unk58, temp_r28->unk5C); + HuSetVecF(&sp218, temp_r30->unk54, temp_r30->unk58, temp_r30->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + sp194 = VECMagXYZ(&sp20C); + if (sp194 < sp184) { + var_r21++; + } + } + } + if (arg0->unkAC != 2) { + if (fn_1_6D04() != 0) { + arg0->unkAC = 0; + } + else { + if (ABS_INV(temp_r30->unk54) > 600.0f && ABS_INV(temp_r30->unk5C) > 600.0f) { + if (var_r21 <= 0) { + arg0->unkAC = 0; + } + else { + arg0->unkAC = 2; + } + } + else { + if (var_r21 <= 0) { + arg0->unkAC = 0; + } + else { + arg0->unkAC = 1; + } + } + } + } + if (arg0->unkAC != 3 && arg0->unkD0 > 180) { + arg0->unkAC = 3; + arg0->unkD4 = frandmod(120) + 120; + } + switch (arg0->unkAC) { + case 0: + var_f30 = temp_r30->unk54; + var_f29 = temp_r30->unk5C; + var_f31 = fn_1_21D4(atan2d(var_f30 - arg0->unk54, var_f29 - arg0->unk5C)); + break; + case 1: + var_f30 = var_f29 = sp18C = sp188 = 0.0f; + if (temp_r30->unk54 >= 300.0f && temp_r30->unk5C < -300.0f) { + var_f30 = 550.0f; + var_f29 = -100.0f; + sp18C = 100.0f; + sp188 = 550.0f; + } + if (temp_r30->unk54 < -300.0f && temp_r30->unk5C < -300.0f) { + var_f30 = -550.0f; + var_f29 = -100.0f; + sp18C = -100.0f; + sp188 = 550.0f; + } + if (temp_r30->unk54 >= 300.0f && temp_r30->unk5C >= 300.0f) { + var_f30 = 550.0f; + var_f29 = -100.0f; + sp18C = 100.0f; + sp188 = -550.0f; + } + if (temp_r30->unk54 < -300.0f && temp_r30->unk5C >= -300.0f) { + var_f30 = -550.0f; + var_f29 = -100.0f; + sp18C = -100.0f; + sp188 = -550.0f; + } + if (temp_r30->unk54 > 300.0f && temp_r30->unk5C > -300.0f && temp_r30->unk5C < 300.0f) { + var_f30 = 200.0f; + var_f29 = 550.0f; + sp18C = 200.0f; + sp188 = -550.0f; + } + if (temp_r30->unk54 < -300.0f && temp_r30->unk5C > -300.0f && temp_r30->unk5C < 300.0f) { + var_f30 = -200.0f; + var_f29 = 550.0f; + sp18C = -200.0f; + sp188 = -550.0f; + } + if (temp_r30->unk54 < 300.0f && temp_r30->unk54 > -300.0f && temp_r30->unk5C < -300.0f) { + var_f30 = 550.0f; + var_f29 = -200.0f; + sp18C = -550.0f; + sp188 = -200.0f; + } + if (temp_r30->unk54 < 300.0f && temp_r30->unk54 > -300.0f && temp_r30->unk5C > 300.0f) { + var_f30 = 550.0f; + var_f29 = 200.0f; + sp18C = -550.0f; + sp188 = 200.0f; + } + for (i = 0, var_r17 = -1, sp190 = 10000.0f; i < 4; i++) { + if (i != lbl_1_bss_5AC) { + temp_r28 = &lbl_1_bss_200[i]; + HuSetVecF(&sp224, temp_r30->unk54, 0.0, temp_r30->unk5C); + HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + sp194 = VECMagXZ(&sp20C); + if (sp194 < sp190) { + sp190 = sp194; + var_r17 = i; + } + } + } + for (i = 0, var_r26 = -1, sp190 = 10000.0f; i < 4; i++) { + if (i != lbl_1_bss_5AC && i != var_r17) { + temp_r28 = &lbl_1_bss_200[i]; + HuSetVecF(&sp224, temp_r30->unk54, 0.0, temp_r30->unk5C); + HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + sp194 = VECMagXZ(&sp20C); + if (sp194 < sp190) { + sp190 = sp194; + var_r26 = i; + } + } + } + if (arg0->unk28 != var_r26) { + var_f30 = sp18C; + var_f29 = sp188; + } + var_f31 = fn_1_21D4(atan2d(var_f30 - arg0->unk54, var_f29 - arg0->unk5C)); + break; + case 2: + for (i = 0, var_r26 = 0; i < 4; i++) { + if (i != lbl_1_bss_5AC && i != arg0->unk28) { + temp_r28 = &lbl_1_bss_200[i]; + sp198[var_r26++] = fn_1_21D4(atan2d(temp_r28->unk54 - arg0->unk54, temp_r28->unk5C - arg0->unk5C)); + } + } + sp180 = fn_1_21D4(ABS_INV(sp198[0] - sp198[1]) / 2.0f); + if (sp180 < 90.0f) { + sp180 += 180.0f; + } + if (sp198[0] < sp198[1]) { + sp180 += sp198[0]; + } + else { + sp180 += sp198[1]; + } + sp180 = fn_1_21D4(sp180); + if (sqrtf(arg0->unk54 * arg0->unk54 + arg0->unk5C * arg0->unk5C) < 500.0f) { + sp194 = 600.0f; + var_f30 = arg0->unk54 + sp194 * sind(sp180); + var_f29 = arg0->unk5C + sp194 * cosd(sp180); + var_f31 = fn_1_21D4(atan2d(var_f30 - arg0->unk54, var_f29 - arg0->unk5C)); + } + else { + arg0->unkAC = 1; + } + break; + case 3: + for (i = 0, sp174 = 10000.0f; i < 4; i++) { + if (i != lbl_1_bss_5AC && i != arg0->unk28) { + temp_r28 = &lbl_1_bss_200[i]; + sp178 = fn_1_595C(temp_r28->unk54, temp_r28->unk5C, arg0); + if (sp178 < sp174) { + sp174 = sp178; + sp17C = i; + } + } + } + temp_r28 = &lbl_1_bss_200[sp17C]; + var_f31 = fn_1_21D4(180.0 + atan2d(temp_r28->unk54 - arg0->unk54, temp_r28->unk5C - arg0->unk5C)); + var_f30 = arg0->unk54 + 100.0 * sind(var_f31); + var_f29 = arg0->unk5C + 100.0 * cosd(var_f31); + if (arg0->unkD4-- == 0) { + arg0->unkD0 = 0; + arg0->unkAC = 1; + } + break; + } + var_r29->unk9C = 0.0f; + if (ABS_INV(arg0->unk6C - var_f31) > 30.0f && ABS_INV(arg0->unk6C - var_f31) < 330.0f) { + if (ABS_INV(fn_1_21D4(arg0->unk6C - var_f31)) > 180.0f) { + arg0->unkA0 = -30; + var_r29->unk9C = arg0->unk98; + } + else { + arg0->unkA0 = 30; + var_r29->unk9C = -arg0->unk98; + } + } + if (arg0->unkB8 == 0) { + HuSetVecF(&sp224, var_f30, 0.0, var_f29); + HuSetVecF(&sp218, arg0->unk54, 0.0, arg0->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + if (VECMagXZ(&sp20C) > 10.0f) { + if (ABS_INV(arg0->unk6C - var_f31) < 90.0f || ABS_INV(arg0->unk6C - var_f31) > 270.0f) { + arg0->unkA4 |= 0x100; + } + else { + arg0->unkA4 |= 0x200; + var_r29->unk9C = -var_r29->unk9C; + } + } + } + var_r29->unk28 = arg0->unk28; + var_r29->unk54 = arg0->unk54; + var_r29->unk58 = arg0->unk58; + var_r29->unk5C = arg0->unk5C; + var_r29->unk90 = arg0->unk90; + var_r29->unk9C = fn_1_21D4(arg0->unk9C + var_r29->unk9C); + var_r29->unk8C = lbl_1_bss_200[lbl_1_bss_5AC].unk8C + arg0->unk8C + arg0->unk90; + var_r20 = fn_1_50A4(var_r29, arg0->unk90, 0); + if (var_r20 != -1 && var_r20 != lbl_1_bss_5AC) { + if (arg0->unkA4 & 0x100) { + var_r29->unk54 += var_r29->unk90 * sind(var_r29->unk9C); + var_r29->unk5C += var_r29->unk90 * cosd(var_r29->unk9C); + } + if (arg0->unkA4 & 0x200) { + var_r29->unk54 -= var_r29->unk90 * sind(var_r29->unk9C); + var_r29->unk5C -= var_r29->unk90 * cosd(var_r29->unk9C); + } + temp_r28 = &lbl_1_bss_200[var_r20]; + HuSetVecF(&sp224, arg0->unk54, 0.0, arg0->unk5C); + HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + sp194 = VECMagXYZ(&sp20C); + HuSetVecF(&sp224, var_r29->unk54, 0.0, var_r29->unk5C); + HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); + HuSubVecF(&sp20C, &sp224, &sp218); + sp190 = VECMagXYZ(&sp20C); + var_r18 = fn_1_50A4(var_r29, 0.0f, 0); + if (sp194 > sp190 || (var_r20 != var_r18 && var_r18 != -1)) { + arg0->unkA0 = 30; + arg0->unkA4 = 0; + arg0->unkAC = 2; + arg0->unkA8 = 300; + if (arg0->unkB8 == 0) { + arg0->unkB8 = 60; + } + } + else if (var_r18 == -1) { + arg0->unkAC = 2; + if (ABS_INV(arg0->unk6C - var_f31) < 90.0f || ABS_INV(arg0->unk6C - var_f31) > 270.0f) { + arg0->unkA4 |= 0x100; + } + else { + arg0->unkA4 |= 0x200; + var_r29->unk9C = -var_r29->unk9C; + } + } + else { + arg0->unkA0 = 30; + } + } + if (arg0->unkB8 != 0) { + arg0->unkB8--; + } +} + +void fn_1_DECC(void) +{ + StructBss200 *temp_r31; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + for (i = 0; i < 20; i++) { + temp_r31->unk88 -= 4.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk80, temp_r31->unk84, temp_r31->unk88); + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_DF3C(StructBss200 *arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r31 = 1; + var_r30 = 1; + if (arg0->unk34 != 4 && arg0->unk34 != 5) { + var_r30 = 0; + } + if (var_r30 == 0 && arg0->unk34 != 6) { + var_r31 = 0; + } + return var_r31; +} + +void fn_1_DF98(void) +{ + float var_f27; + float var_f25; + float var_f26; + StructBss200 *temp_r31; + StructBss200 *temp_r30; + s32 var_r25; + s32 var_r29; + s32 var_r28; + s32 sp90; + Process *sp8C; + s32 sp88; + s32 sp84; + s32 sp80; + s32 sp7C; + Process *sp78; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk34 = 0; + temp_r31->unkA8 = temp_r31->unkAC = temp_r31->unkB0 = temp_r31->unkB4 = temp_r31->unkB8 = temp_r31->unk50 = 0; + temp_r31->unkC0 = 0; + temp_r31->unk38 = 0; + temp_r31->unkD0 = 0; + while (lbl_1_bss_5B4 == 0) { + HuPrcVSleep(); + } + lbl_1_bss_5B4 = 2; + while (lbl_1_bss_5B4 == 2) { + HuPrcVSleep(); + } + temp_r31->unkD8 = temp_r31->unk54; + temp_r31->unkDC = temp_r31->unk5C; + var_r29 = 0; + while (TRUE) { + temp_r31->unk60 = temp_r31->unk54; + temp_r31->unk64 = temp_r31->unk5C; + if (GWPlayerCfg[temp_r31->unk28].iscom == 1) { + fn_1_B054(temp_r31); + } + if (temp_r31->unk3C != 0) { + if (temp_r31->unk48 == 300) { + sp8C = HuPrcChildCreate(fn_1_32F8, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + sp8C->user_data = (void *)temp_r31->unk28; + } + if (temp_r31->unk48-- == 0) { + temp_r31->unk3C = 0; + temp_r31->unk90 = 2.25f; + temp_r31->unk98 = 0.66f; + } + } + if (temp_r31->unk24 != 0) { + break; + } + switch (temp_r31->unk34) { + case 8: + if (temp_r31->unk44 != 0) { + temp_r31->unk44--; + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk34 = 0; + } + break; + case 4: + omVibrate(temp_r31->unk28, 12, 4, 2); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + temp_r31->unk44 = 90; + temp_r31->unk4C = 30; + temp_r31->unk34 = 5; + break; + case 5: + if (temp_r31->unk4C-- == 0) { + HuAudFXPlay(0x5E7); + temp_r31->unk74 = temp_r31->unk54; + temp_r31->unk78 = temp_r31->unk58; + temp_r31->unk7C = temp_r31->unk5C; + temp_r31->unk38 |= 1; + } + if (temp_r31->unk44 != 0) { + temp_r31->unk44--; + } + else { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[5]); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); + temp_r31->unk34 = 6; + } + break; + case 6: + if (Hu3DMotionEndCheck(temp_r31->unk00) == 1) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[0]); + temp_r31->unk34 = 0; + } + break; + default: + if (fn_1_4E54(temp_r31->unk28, 0) > 20) { + temp_r31->unk9C -= temp_r31->unk98; + if (temp_r31->unk9C < 0.0f) { + temp_r31->unk9C += 360.0f; + } + temp_r31->unk6C = temp_r31->unk9C; + } + if (fn_1_4E54(temp_r31->unk28, 0) < -20) { + temp_r31->unk9C += temp_r31->unk98; + if (temp_r31->unk9C > 360.0f) { + temp_r31->unk9C -= 360.0f; + } + temp_r31->unk6C = temp_r31->unk9C; + } + if (fn_1_5038(temp_r31->unk28) & 0x100) { + temp_r31->unk54 += temp_r31->unk90 * sind(temp_r31->unk9C); + temp_r31->unk5C += temp_r31->unk90 * cosd(temp_r31->unk9C); + } + if (fn_1_5038(temp_r31->unk28) & 0x200) { + temp_r31->unk54 -= temp_r31->unk90 * sind(temp_r31->unk9C); + temp_r31->unk5C -= temp_r31->unk90 * cosd(temp_r31->unk9C); + } + if (fn_1_5038(temp_r31->unk28) & 0x300) { + if (temp_r31->unk3C != 1) { + if (temp_r31->unk34 != 2) { + temp_r31->unk34 = 2; + if (fn_1_5038(temp_r31->unk28) & 0x100) { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + if (var_r29 != 0) { + var_r29 = 0; + HuAudFXStop(var_r25); + } + } + } + else { + if (temp_r31->unk34 != 3) { + temp_r31->unk34 = 3; + temp_r31->unk50 = 0; + if (fn_1_5038(temp_r31->unk28) & 0x100) { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + if (var_r29 != 0) { + var_r29 = 0; + HuAudFXStop(var_r25); + } + } + } + if (temp_r31->unk3C != 1) { + sp88 = 8; + sp84 = 32; + } + else { + sp88 = 7; + sp84 = 22; + } + if (temp_r31->unk50 == sp88) { + HuAudFXPlay(0x5E0); + } + if (temp_r31->unk50 == sp84) { + HuAudFXPlay(0x5E0); + } + temp_r31->unk50++; + if (temp_r31->unk3C != 1) { + if (temp_r31->unk50 >= 50) { + temp_r31->unk50 -= 50; + } + } + else { + if (temp_r31->unk50 >= 30) { + temp_r31->unk50 -= 30; + } + } + } + else { + if (ABS_INV(fn_1_4E54(temp_r31->unk28, 0)) <= 20) { + if (temp_r31->unk34 != 0) { + temp_r31->unk34 = 0; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + if (var_r29 != 0) { + var_r29 = 0; + HuAudFXStop(var_r25); + } + } + } + else { + if (temp_r31->unk34 != 1) { + temp_r31->unk34 = 1; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.5f); + var_r25 = HuAudFXPlay(0x5EB); + var_r29 = 1; + } + } + } + if ((sp90 = fn_1_50A4(temp_r31, 0.0f, 0)) != -1) { + temp_r30 = &lbl_1_bss_200[sp90]; + if (GWPlayerCfg[temp_r30->unk28].group != 0) { + HuAudFXPlay(0x5ED); + temp_r31->unk34 = 8; + temp_r31->unk44 = 90; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[6], 0.0f, 5.0f, 0U); + if ((temp_r30->unk34 == 4 || temp_r30->unk34 == 5 || temp_r30->unk34 == 6) == FALSE) { + temp_r30->unk34 = 8; + temp_r30->unk44 = 90; + Hu3DMotionShiftSet(temp_r30->unk00, temp_r30->unk06[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + temp_r31->unk54 = temp_r31->unk60; + temp_r31->unk5C = temp_r31->unk64; + } + else { + temp_r30->unk24 = 1; + temp_r30->unk40 = temp_r31->unk28; + } + } + if ((sp90 = fn_1_52E8(temp_r31)) != -1) { + temp_r30 = &lbl_1_bss_200[sp90]; + if (GWPlayerCfg[temp_r30->unk28].group != 0) { + HuAudFXPlay(0x5ED); + temp_r31->unk34 = 8; + temp_r31->unk44 = 90; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + if ((temp_r30->unk34 == 4 || temp_r30->unk34 == 5 || temp_r30->unk34 == 6) == FALSE) { + temp_r30->unk34 = 8; + temp_r30->unk44 = 90; + Hu3DMotionShiftSet(temp_r30->unk00, temp_r30->unk06[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + temp_r31->unk54 = temp_r31->unk60; + temp_r31->unk5C = temp_r31->unk64; + } + else { + temp_r30->unk24 = 1; + temp_r30->unk40 = temp_r31->unk28; + } + } + break; + } + if (temp_r31->unkD8 == temp_r31->unk54 && temp_r31->unkDC == temp_r31->unk5C) { + temp_r31->unkD0++; + } + else { + temp_r31->unkD8 = temp_r31->unk54; + temp_r31->unkDC = temp_r31->unk5C; + temp_r31->unkD0 = 0; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); + HuPrcVSleep(); + } + if (var_r29 != 0) { + HuAudFXStop(var_r25); + } + if (lbl_1_bss_5A8 == lbl_1_bss_5AC) { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + HuPrcSleep(90); + if (lbl_1_bss_5AC == 0) { + if (temp_r31->unk28 != 0) { + HuAudFXPlay(0x5EA); + } + } + else { + if (temp_r31->unk28 == 0) { + HuAudFXPlay(0x5EA); + } + } + Hu3DModelAttrReset(temp_r31->unk04, 1); + Hu3DModelAttrReset(temp_r31->unk04, HU3D_MOTATTR_PAUSE); + Hu3DModelPosSet(temp_r31->unk04, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[7], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + if (lbl_1_bss_5AC == 0) { + if (temp_r31->unk28 != 0) { + HuAudFXPlay(0x5E3); + } + } + else { + if (temp_r31->unk28 == 0) { + HuAudFXPlay(0x5E3); + } + } + HuPrcSleep(15); + HuPrcSleep(30); + temp_r31->unk74 = temp_r31->unk54; + temp_r31->unk78 = temp_r31->unk58; + temp_r31->unk7C = temp_r31->unk5C; + temp_r31->unk38 |= 2; + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + lbl_1_bss_594[temp_r31->unk28] = HuAudPlayerVoicePlay(temp_r31->unk28, 0x11A); + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk1C[3], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + Hu3DModelHookReset(temp_r31->unk00); + Hu3DModelShadowSet(temp_r31->unk02); + var_f27 = 50.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk54, temp_r31->unk58 + var_f27, temp_r31->unk5C); + HuPrcSleep(60); + for (sp80 = 0, sp7C = 0; sp80 < 90; sp80++) { + if (sp7C & 1) { + Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelAttrReset(temp_r31->unk04, 1); + } + else { + Hu3DModelAttrSet(temp_r31->unk00, 1); + Hu3DModelAttrSet(temp_r31->unk04, 1); + } + sp7C++; + HuPrcVSleep(); + } + Hu3DModelAttrSet(temp_r31->unk04, 1); + for (var_r28 = 0, var_f25 = 1.0f; var_r28 < 30; var_r28++) { + var_f25 -= 0.033333335f; + Hu3DModelTPLvlSet(temp_r31->unk00, var_f25); + if (var_f27 > 0.0f) { + var_f27 -= 5.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk54, temp_r31->unk58 + var_f27, temp_r31->unk5C); + } + HuPrcVSleep(); + } + Hu3DModelAttrSet(temp_r31->unk00, 1); + } + else { + var_f26 = temp_r31->unk98; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + if (fn_1_21D4(temp_r31->unk6C) != 0.0f) { + var_r28 = (360.0f - fn_1_21D4(temp_r31->unk6C)) / var_f26; + if (temp_r31->unk6C < 180.0f) { + var_r28 = temp_r31->unk6C / var_f26; + var_f26 = -var_f26; + } + while (var_r28 != 0) { + temp_r31->unk6C += var_f26; + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); + HuPrcVSleep(); + var_r28--; + } + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, 0.0f, temp_r31->unk70); + } + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + while (lbl_1_bss_5A4 < 60) { + HuPrcVSleep(); + } + sp78 = HuPrcChildCreate(fn_1_DECC, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + sp78->user_data = temp_r31; + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk1C[2], 0.0f, 2.0f, HU3D_MOTATTR_NONE); + temp_r31->unk34 = 10; + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_F73C(void) +{ + StructBss200 *var_r31; + float var_f31; + s32 var_r30; + s32 var_r29; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelAttrReset(lbl_1_bss_200[var_r30].unk00, 1); + } + for (var_r29 = 0, var_f31 = 1000.0f; var_r29 < 60; var_r29++, var_f31 -= 7.5f) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 != lbl_1_bss_5AC) { + var_r31 = &lbl_1_bss_200[var_r30]; + var_r31->unk54 = var_f31 * sind(var_r31->unk6C - 180.0f); + var_r31->unk5C = var_f31 * cosd(var_r31->unk6C - 180.0f); + Hu3DModelPosSet(var_r31->unk00, var_r31->unk54, var_r31->unk58, var_r31->unk5C); + } + } + HuPrcVSleep(); + } + var_r31->unk54 = 550.0 * sind(var_r31->unk6C - 180.0f); + var_r31->unk5C = 550.0 * cosd(var_r31->unk6C - 180.0f); + Hu3DModelPosSet(var_r31->unk00, var_r31->unk54, var_r31->unk58, var_r31->unk5C); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 != lbl_1_bss_5AC) { + var_r31 = &lbl_1_bss_200[var_r30]; + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + } + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_F9BC(void) +{ + StructBss200 *temp_r31; + float temp_f26; + float temp_f28; + float temp_f27; + float temp_f29; + float temp_f30; + float var_f31; + s32 var_r28; + s32 var_r30; + s32 var_r29; + s32 var_r27; + + HuAudFXPlay(0x5E5); + temp_r31 = &lbl_1_bss_200[lbl_1_bss_5AC]; + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + var_r27 = 180; + temp_f29 = ((CenterM->z - 687.0f) / var_r27) * 40.0f / 60.0f; + temp_f26 = ((CenterM->z - 687.0f) / var_r27) * 20.0f / 60.0f; + temp_f30 = CenterM->y; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + for (var_r29 = 30, var_f31 = 0.0f; var_r29 != 0; var_r29--, var_f31 += 3.0f) { + CenterM->y = temp_f30 + 50.0 * sind(var_f31); + CenterM->z -= 2.0f * temp_f29; + HuPrcVSleep(); + } + for (var_r29 = 20, var_f31 = 90.0f; var_r29 != 0; var_r29--, var_f31 += 4.5f) { + CenterM->y = temp_f30 + 50.0 * sind(var_f31); + CenterM->z -= 2.0f * temp_f26 * 1.5f; + HuPrcVSleep(); + } + HuAudFXPlay(0x5DF); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + omVibrate(var_r28, 12, 12, 0); + } + HuPrcSleep(5); + for (var_r29 = 10, var_f31 = 180.0f; var_r29 != 0; var_r29--, var_f31 += 18.0f) { + CenterM->y = temp_f30 + 10.0 * sind(var_f31); + HuPrcVSleep(); + } + HuPrcSleep(10); + } + HuPrcChildCreate(fn_1_F73C, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + temp_f28 = CRotM->x; + temp_f30 = CenterM->y; + temp_f29 = CenterM->z; + temp_f27 = CZoomM[0]; + for (var_r30 = 0; var_r30 < 60; var_r30++) { + CRotM->x += (-45.0f - temp_f28) / 60.0f; + CenterM->y += (100.0f - temp_f30) / 60.0f; + CenterM->z += (70.0f - temp_f29) / 60.0f; + CZoomM[0] += (2130.0f - temp_f27) / 60.0f; + HuPrcVSleep(); + } + HuAudFXPlay(0x5DF); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + omVibrate(var_r28, 12, 12, 0); + } + Hu3DModelAttrSet(lbl_1_bss_5B8, 1); + HuAudPlayerVoicePlay(temp_r31->unk28, 0x128); + temp_r31 = &lbl_1_bss_200[lbl_1_bss_5AC]; + while (Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[5], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(15); + while (Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + HuPrcSleep(60); + temp_f28 = CRotM->x; + temp_f30 = CenterM->y; + temp_f29 = CenterM->z; + temp_f27 = CZoomM[0]; + for (var_r30 = 0; var_r30 < 60; var_r30++) { + CRotM->x += (-35.0f - temp_f28) / 60.0f; + CenterM->y += -temp_f30 / 60.0f; + CenterM->z += (-250.0f - temp_f29) / 60.0f; + CZoomM[0] += (4820.0f - temp_f27) / 60.0f; + HuPrcVSleep(); + } + HuPrcSleep(30); + temp_r31 = &lbl_1_bss_200[lbl_1_bss_5AC]; + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + HuPrcSleep(15); + while (Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 2.0f); +} + +void fn_1_10258(s32 arg0) +{ + StructBss200 *var_r30; + float temp_f31; + float temp_f30; + float temp_f29; + s32 i; + + if (arg0 == lbl_1_bss_5AC) { + HuPrcSleep(120); + temp_f31 = CenterM->x; + temp_f30 = CenterM->z; + temp_f29 = CZoomM[0]; + for (i = 0; i < 60; i++) { + var_r30 = &lbl_1_bss_200[lbl_1_bss_5AC]; + CenterM->x += (var_r30->unk54 - temp_f31) / 60.0f; + CenterM->z += (var_r30->unk5C - 100.0f - temp_f30) / 60.0f; + CZoomM[0] += (1000.0f - temp_f29) / 60.0f; + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_5AC) { + continue; + } + HuAudFXStop(lbl_1_bss_594[i]); + } + HuAudSStreamPlay(1); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk16, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + } + else { + for (lbl_1_bss_5A4 = 0; lbl_1_bss_5A4 < 60; lbl_1_bss_5A4++) { + HuPrcVSleep(); + } + HuAudSStreamPlay(1); + } +} + +void fn_1_104A0(void) +{ + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_10500(void) +{ + s16 temp_r28; + s16 temp_r30; + s16 var_r29; + s32 var_r26; + s32 var_r27; + s32 sp8[3]; + s32 i; + + lbl_1_bss_5B4 = 0; + lbl_1_bss_5A8 = -1; + fn_1_F9BC(); + HuPrcSleep(30); + lbl_1_bss_5B4 = 1; + while (lbl_1_bss_5B4 == 1) { + HuPrcVSleep(); + } + var_r26 = HuAudSeqPlay(0x49); + temp_r30 = MGSeqStartCreate(); + while (MGSeqStatGet(temp_r30) != 0) { + HuPrcVSleep(); + } + var_r29 = 0xAC7; + temp_r28 = MGSeqTimerCreate(var_r29 / 60); + lbl_1_bss_5B4 = 3; + while (TRUE) { + if (lbl_1_bss_200[lbl_1_bss_5AC].unk24 == 1) { + break; + } + if (var_r29 < 59) { + lbl_1_bss_5A8 = lbl_1_bss_5AC; + break; + } + MGSeqParamSet(temp_r28, 1, var_r29-- / 60); + lbl_1_bss_5B0++; + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_200[i].unk24 = 1; + } + lbl_1_bss_5B4 = 4; + HuAudSeqFadeOut(var_r26, 100); + MGSeqParamSet(temp_r28, 2, -1); + temp_r30 = MGSeqFinishCreate(); + while (MGSeqStatGet(temp_r30) != 0) { + HuPrcVSleep(); + } + fn_1_10258(lbl_1_bss_5A8); + if (lbl_1_bss_5A8 == lbl_1_bss_5AC) { + GWPlayerCoinWinSet(lbl_1_bss_5A8, 10); + temp_r30 = MGSeqWinCreate(GWPlayerCfg[lbl_1_bss_5A8].character, -1, -1, -1); + } + else { + for (i = 0, var_r27 = 0; i < 4; i++) { + if (i != lbl_1_bss_5AC) { + sp8[var_r27++] = i; + GWPlayerCoinWinSet(i, 10); + } + } + temp_r30 = MGSeqWinCreate(GWPlayerCfg[sp8[0]].character, GWPlayerCfg[sp8[1]].character, GWPlayerCfg[sp8[2]].character, -1); + } + HuPrcSleep(210); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } +} diff --git a/src/REL/m420dll/camera.c b/src/REL/m420dll/camera.c new file mode 100644 index 00000000..c587a69e --- /dev/null +++ b/src/REL/m420dll/camera.c @@ -0,0 +1,144 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/flag.h" +#include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/wipe.h" + +#include "REL/m420dll.h" + +Process *lbl_1_bss_A8; +M420DllUnkStruct lbl_1_bss_8C; +M420DllUnkStruct lbl_1_bss_70; +M420DllUnkStruct lbl_1_bss_54; +s32 lbl_1_bss_50; +s32 lbl_1_bss_4C; +s32 lbl_1_bss_48; +float lbl_1_bss_44; +float lbl_1_bss_40; +float lbl_1_bss_3C; +float lbl_1_bss_38; +float lbl_1_bss_34; +float lbl_1_bss_30; + +s32 fn_1_D98(void) +{ + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 10.0f, 8000.0f, 1.2f); + lbl_1_bss_8C.unk_00.x = 0.0f; + lbl_1_bss_8C.unk_00.y = 0.0f; + lbl_1_bss_8C.unk_00.z = 0.0f; + lbl_1_bss_8C.unk_0C.x = -10.0f; + lbl_1_bss_8C.unk_0C.y = 0.0f; + lbl_1_bss_8C.unk_0C.z = 0.0f; + lbl_1_bss_8C.unk_18 = 1000.0f; + lbl_1_bss_50 = 0; + lbl_1_bss_4C = 0; + lbl_1_bss_48 = 0; + lbl_1_bss_A8 = HuPrcChildCreate(fn_1_1184, 0x1F4, 0x2000, 0, lbl_1_bss_4); + return 1; +} + +void fn_1_F48(void) +{ + HuPrcKill(lbl_1_bss_A8); +} + +void fn_1_F74(const Vec *arg0, s32 arg1) +{ + lbl_1_bss_54.unk_00 = *arg0; + lbl_1_bss_70.unk_00 = lbl_1_bss_8C.unk_00; + lbl_1_bss_44 = 0.0f; + lbl_1_bss_38 = 1.0f / arg1; + lbl_1_bss_50 = 1; +} + +void fn_1_1030(const Vec *arg0, s32 arg1) +{ + lbl_1_bss_54.unk_0C = *arg0; + lbl_1_bss_70.unk_0C = lbl_1_bss_8C.unk_0C; + lbl_1_bss_40 = 0.0f; + lbl_1_bss_34 = 1.0f / arg1; + lbl_1_bss_4C = 1; +} + +void fn_1_10EC(float arg8, s32 arg0) +{ + lbl_1_bss_54.unk_18 = arg8; + lbl_1_bss_70.unk_18 = lbl_1_bss_8C.unk_18; + lbl_1_bss_3C = 0.0f; + lbl_1_bss_30 = 1.0f / arg0; + lbl_1_bss_48 = 1; +} + +void fn_1_1184(void) +{ + Vec sp28; + Vec sp1C; + Vec sp10; + float var_f31; + + while (TRUE) { + if (lbl_1_bss_50 != 0) { + var_f31 = sind((90.0f * lbl_1_bss_44)); + var_f31 *= var_f31; + lbl_1_bss_8C.unk_00.x = lbl_1_bss_70.unk_00.x + (var_f31 * (lbl_1_bss_54.unk_00.x - lbl_1_bss_70.unk_00.x)); + lbl_1_bss_8C.unk_00.y = lbl_1_bss_70.unk_00.y + (var_f31 * (lbl_1_bss_54.unk_00.y - lbl_1_bss_70.unk_00.y)); + lbl_1_bss_8C.unk_00.z = lbl_1_bss_70.unk_00.z + (var_f31 * (lbl_1_bss_54.unk_00.z - lbl_1_bss_70.unk_00.z)); + if ((lbl_1_bss_44 += lbl_1_bss_38) >= 1.0f) { + lbl_1_bss_8C.unk_00 = lbl_1_bss_54.unk_00; + lbl_1_bss_50 = 0; + } + } + if (lbl_1_bss_4C != 0) { + var_f31 = sind((90.0f * lbl_1_bss_40)); + var_f31 *= var_f31; + lbl_1_bss_8C.unk_0C.x = lbl_1_bss_70.unk_0C.x + (var_f31 * (lbl_1_bss_54.unk_0C.x - lbl_1_bss_70.unk_0C.x)); + lbl_1_bss_8C.unk_0C.y = lbl_1_bss_70.unk_0C.y + (var_f31 * (lbl_1_bss_54.unk_0C.y - lbl_1_bss_70.unk_0C.y)); + lbl_1_bss_8C.unk_0C.z = lbl_1_bss_70.unk_0C.z + (var_f31 * (lbl_1_bss_54.unk_0C.z - lbl_1_bss_70.unk_0C.z)); + if ((lbl_1_bss_40 += lbl_1_bss_34) >= 1.0f) { + lbl_1_bss_8C.unk_0C = lbl_1_bss_54.unk_0C; + lbl_1_bss_4C = 0; + } + } + if (lbl_1_bss_48 != 0) { + var_f31 = sind((90.0f * lbl_1_bss_3C)); + var_f31 *= var_f31; + lbl_1_bss_8C.unk_18 = lbl_1_bss_70.unk_18 + (var_f31 * (lbl_1_bss_54.unk_18 - lbl_1_bss_70.unk_18)); + if ((lbl_1_bss_3C += lbl_1_bss_30) >= 1.0f) { + lbl_1_bss_8C.unk_18 = lbl_1_bss_54.unk_18; + lbl_1_bss_48 = 0; + } + } + sp28.x = lbl_1_bss_8C.unk_00.x + (lbl_1_bss_8C.unk_18 * (sind(lbl_1_bss_8C.unk_0C.y) * cosd(lbl_1_bss_8C.unk_0C.x))); + sp28.y = lbl_1_bss_8C.unk_00.y + (lbl_1_bss_8C.unk_18 * -sind(lbl_1_bss_8C.unk_0C.x)); + sp28.z = lbl_1_bss_8C.unk_00.z + (lbl_1_bss_8C.unk_18 * (cosd(lbl_1_bss_8C.unk_0C.y) * cosd(lbl_1_bss_8C.unk_0C.x))); + sp10.x = sind(lbl_1_bss_8C.unk_0C.y) * sind(lbl_1_bss_8C.unk_0C.x); + sp10.y = cosd(lbl_1_bss_8C.unk_0C.x); + sp10.z = cosd(lbl_1_bss_8C.unk_0C.y) * sind(lbl_1_bss_8C.unk_0C.x); + sp1C = lbl_1_bss_8C.unk_00; + + Hu3DCameraPosSet(1, sp28.x, sp28.y, sp28.z, sp10.x, sp10.y, sp10.z, sp1C.x, sp1C.y, sp1C.z); + HuPrcVSleep(); + } +} + +void fn_1_189C(void) +{ + lbl_1_bss_8C.unk_00.x += (0.02f * *HuPadStkX); + lbl_1_bss_8C.unk_00.y += (0.02f * *HuPadStkY); + lbl_1_bss_8C.unk_0C.y -= (0.02f * *HuPadSubStkX); + lbl_1_bss_8C.unk_0C.x += (0.02f * *HuPadSubStkY); + lbl_1_bss_8C.unk_18 += (0.02f * *HuPadTrigL); + lbl_1_bss_8C.unk_18 -= (0.02f * *HuPadTrigR); +} + +void fn_1_1AB0(void) +{ + print8(0x20, 0x84, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.unk_00.x, lbl_1_bss_8C.unk_00.y, lbl_1_bss_8C.unk_00.z); + print8(0x20, 0x94, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.unk_0C.x, lbl_1_bss_8C.unk_0C.y, lbl_1_bss_8C.unk_0C.z); + print8(0x20, 0xA4, 1.5f, "ZOOM : x=%.2f", lbl_1_bss_8C.unk_18); +} diff --git a/src/REL/m420dll/main.c b/src/REL/m420dll/main.c new file mode 100644 index 00000000..d6574513 --- /dev/null +++ b/src/REL/m420dll/main.c @@ -0,0 +1,257 @@ +#include "ext_math.h" +#include "game/flag.h" +#include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/wipe.h" + +#include "REL/m420dll.h" +#include "version.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + +s32 fn_1_198(void); +void fn_1_3D4(void); +void fn_1_43C(void); +void fn_1_D14(s32 arg0, s32 arg1); +s32 fn_1_D98(void); +void fn_1_F48(void); +void fn_1_F74(const Vec *arg0, s32 arg1); +void fn_1_1030(const Vec *arg0, s32 arg1); +void fn_1_10EC(float arg8, s32 arg0); +void fn_1_118(void); + +s32 lbl_1_bss_2C; +Process *lbl_1_bss_28; +M420DllPlayerStruct *lbl_1_bss_18[4]; +s16 lbl_1_bss_14; +s16 lbl_1_bss_12; +s16 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +Process *lbl_1_bss_4; +Process *lbl_1_bss_0; + +static const M420DllUnkStruct lbl_1_rodata_10[3] = { + { { 0.0f, 1040.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, 680.0f }, + { { 0.0f, 800.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, 680.0f }, + { { 0.0f, 310.0f, 0.0f }, { -10.0f, 0.0f, 0.0f }, 1950.0f }, +}; + +void ObjectSetup(void) +{ + lbl_1_bss_4 = omInitObjMan(1, 0x2000); + omGameSysInit(lbl_1_bss_4); + lbl_1_bss_0 = HuPrcChildCreate(fn_1_118, 0x3E8, 0x4000, 0, lbl_1_bss_4); + fn_1_198(); +} + +void fn_1_118(void) +{ + while (omSysExitReq == 0) { + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuAudFadeOut(0x64); + fn_1_3D4(); + HuPrcVSleep(); + omOvlReturnEx(1, 1); + HuPrcEnd(); +} + +s32 fn_1_198(void) +{ + s32 sp8[3]; + s32 var_r31; + s32 var_r30; + + Vec sp14[3] = { { 0.0f, 4000.0f, 100.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } }; + frand(); + fn_1_8934(); + fn_1_4964(); + fn_1_D98(); + fn_1_D14(0, 1); + Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&sp14[0], &sp14[1], &sp14[2]); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp8[var_r31] = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + switch (GWPlayerCfg[var_r31].group) { + case 0: + lbl_1_bss_18[0] = fn_1_1B8C(var_r31, 0); + break; + + default: + do { + var_r30 = fn_1_8944() % 3; + } while (sp8[var_r30] != 0); + sp8[var_r30] = 1; + lbl_1_bss_18[var_r30 + 1] = fn_1_1B8C(var_r31, var_r30 + 1); + break; + } + } + lbl_1_bss_18[1]->unk_E8 = NULL; + lbl_1_bss_18[2]->unk_E8 = lbl_1_bss_18[1]; + lbl_1_bss_18[3]->unk_E8 = lbl_1_bss_18[2]; + lbl_1_bss_28 = HuPrcChildCreate(fn_1_43C, 0x3E9, 0x4000, 0, lbl_1_bss_4); + return 1; +} + +void fn_1_3D4(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E14(lbl_1_bss_18[var_r31]); + } + fn_1_596C(); + fn_1_F48(); + HuPrcKill(lbl_1_bss_28); +} + +void fn_1_43C(void) +{ + s32 var_r31; + s32 var_r30; + + lbl_1_bss_C = 0; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_59F4(0); + fn_1_D14(1, 0x50); + HuPrcSleep(0x4E); + fn_1_D14(2, 0x3C); + HuPrcSleep(0xB4); + fn_1_59F4(2); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_18[var_r31]->unk_48 = 9; + } + lbl_1_bss_8 = HuAudSeqPlay(0x48); + lbl_1_bss_10 = MGSeqCreate(3, 0); + + while (MGSeqStatGet(lbl_1_bss_10) != 0) { + HuPrcVSleep(); + } + MGSeqKill(lbl_1_bss_10); + lbl_1_bss_12 = 60 * REFRESH_RATE; + lbl_1_bss_14 = MGSeqCreate(1, lbl_1_bss_12 / REFRESH_RATE, -1, -1); + var_r30 = 1; + while (TRUE) { + if (lbl_1_bss_18[0]->unk_48 == 0) { + lbl_1_bss_18[0]->unk_48 = 1; + } + if ((lbl_1_bss_18[var_r30]->unk_48 == 0) && (lbl_1_bss_12 > 5)) { + lbl_1_bss_18[var_r30]->unk_48 = 3; + } + if ((lbl_1_bss_18[var_r30]->unk_00_field1) && (var_r30 != 1)) { + lbl_1_bss_18[var_r30 - 1]->unk_48 = 4; + } + if (lbl_1_bss_18[var_r30]->unk_48 == 6) { + var_r30++; + if (var_r30 > 3) { + var_r30 = 1; + lbl_1_bss_18[3]->unk_48 = 0; + } + } + if (lbl_1_bss_12 >= 0) { + if (((--lbl_1_bss_12) % REFRESH_RATE) == 0) { + MGSeqParamSet(lbl_1_bss_14, 1, lbl_1_bss_12 / REFRESH_RATE); + } + } + if ((fn_1_67E8(0) == 0) && (fn_1_67E8(1) == 0) && (lbl_1_bss_12 > 0)) { + HuPrcVSleep(); + } + else { + break; + } + } + if ((fn_1_67E8(0) != 0) && (fn_1_67E8(1) != 0)) { + lbl_1_bss_C = 3; + } + else if (fn_1_67E8(0) != 0) { + lbl_1_bss_C = 1; + } + else if (fn_1_67E8(1) != 0) { + lbl_1_bss_C = 2; + } + else { + lbl_1_bss_C = 3; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_18[var_r31]->unk_48 = 0xB; + } + HuPrcVSleep(); + MGSeqParamSet(lbl_1_bss_14, 2, -1); + HuAudSeqFadeOut(lbl_1_bss_8, 0x64); + lbl_1_bss_10 = MGSeqCreate(3, 1); + + while (MGSeqStatGet(lbl_1_bss_10) != 0) { + HuPrcVSleep(); + } + MGSeqKill(lbl_1_bss_10); + fn_1_6728(); + HuPrcSleep(0x3C); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_18[var_r31]->unk_48 = 0xA; + } + HuPrcSleep(0x3C); + if (lbl_1_bss_C == 3) { + lbl_1_bss_10 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + lbl_1_bss_18[0]->unk_48 = 8; + lbl_1_bss_18[1]->unk_48 = 8; + lbl_1_bss_18[2]->unk_48 = 8; + lbl_1_bss_18[3]->unk_48 = 8; + } + else { + fn_1_59F4(1); + while (fn_1_6810() == 0) { + HuPrcVSleep(); + } + if (lbl_1_bss_C == 1) { + lbl_1_bss_10 = MGSeqCreate(5, 3, lbl_1_bss_18[0]->unk_0A, -1, -1, -1); + HuAudSStreamPlay(1); + lbl_1_bss_18[0]->unk_48 = 7; + lbl_1_bss_18[1]->unk_48 = 8; + lbl_1_bss_18[2]->unk_48 = 8; + lbl_1_bss_18[3]->unk_48 = 8; + GWPlayerCoinWinAdd(lbl_1_bss_18[0]->unk_04, 10); + } + else { + lbl_1_bss_10 = MGSeqCreate(5, 3, lbl_1_bss_18[1]->unk_0A, lbl_1_bss_18[2]->unk_0A, lbl_1_bss_18[3]->unk_0A, -1); + HuAudSStreamPlay(1); + lbl_1_bss_18[0]->unk_48 = 8; + lbl_1_bss_18[1]->unk_48 = 7; + lbl_1_bss_18[2]->unk_48 = 7; + lbl_1_bss_18[3]->unk_48 = 7; + GWPlayerCoinWinAdd(lbl_1_bss_18[1]->unk_04, 10); + GWPlayerCoinWinAdd(lbl_1_bss_18[2]->unk_04, 10); + GWPlayerCoinWinAdd(lbl_1_bss_18[3]->unk_04, 10); + } + } + HuPrcSleep(0xD2); + omSysExitReq = 1; + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_D14(s32 arg0, s32 arg1) +{ + fn_1_F74(&lbl_1_rodata_10[arg0].unk_00, arg1); + fn_1_1030(&lbl_1_rodata_10[arg0].unk_0C, arg1); + fn_1_10EC(lbl_1_rodata_10[arg0].unk_18, arg1); +} diff --git a/src/REL/m420dll/map.c b/src/REL/m420dll/map.c new file mode 100644 index 00000000..14b48a41 --- /dev/null +++ b/src/REL/m420dll/map.c @@ -0,0 +1,1219 @@ +#include "ext_math.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "REL/m420dll.h" + +typedef struct M420DllUnkMapStruct2 { + /* 0x00 */ struct { + s8 unk_00_field0 : 1; + s8 unk_00_field1 : 1; + s8 unk_00_field2 : 1; + s8 unk_00_field3 : 1; + s8 unk_00_field4 : 1; + s8 unk_00_field5 : 1; + s8 unk_00_field6 : 1; + s8 unk_00_field7 : 1; + }; + /* 0x04 */ s16 unk_02; + /* 0x04 */ Vec unk_04; + /* 0x10 */ Vec unk_10; + /* 0x1C */ Vec unk_1C; + /* 0x28 */ Vec unk_28; + /* 0x34 */ Vec unk_34; + /* 0x40 */ Vec unk_40; + /* 0x4C */ Vec unk_4C; + /* 0x58 */ Vec unk_58; + /* 0x64 */ Vec unk_64; + /* 0x70 */ float unk_70; + /* 0x74 */ float unk_74; + /* 0x78 */ s32 unk_78; + /* 0x7C */ float unk_7C; + /* 0x80 */ float unk_80; + /* 0x84 */ s32 unk_84; + /* 0x88 */ float unk_88; + /* 0x8C */ float unk_8C; + /* 0x90 */ s32 unk_90; +} M420DllUnkMapStruct2; /* size = 0x94 */ + +typedef struct M420DllUnkMapStruct { + /* 0x00 */ M420DllUnkMapStruct2 *unk_00; + /* 0x04 */ M420DllUnkMapStruct2 *unk_04; + /* 0x08 */ M420DllUnkMapStruct2 *unk_08; + /* 0x0C */ M420DllUnkMapStruct2 *unk_0C; + /* 0x10 */ M420DllUnkMapStruct2 *unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ char pad_18[4]; + /* 0x1C */ float unk_1C; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; +} M420DllUnkMapStruct; /* size = 0x40 */ + +typedef struct M420DllUnkMapStruct3 { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ GXColor unk_18; +} M420DllUnkMapStruct3; /* size = 0x1C */ + +s32 fn_1_5A7C(s32 arg0); +void fn_1_6820(void); +void fn_1_6884(void); +void fn_1_6950(void); +void fn_1_6D0C(void); +void fn_1_6D5C(void); +void fn_1_6DF0(M420DllUnkMapStruct2 *arg0); +void fn_1_7230(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3); +void fn_1_7704(void); +void fn_1_7E24(void); +void fn_1_8240(void); +void fn_1_8414(void); + +M420DllUnkMapStruct3 lbl_1_data_138 = { + { 1000.0f, 2000.0f, 0.0f }, + { -0.5f, -0.5f, -0.5f }, + { 0xFF, 0xFF, 0xFF, 0xFF }, +}; +void (*lbl_1_data_154[4])() = { fn_1_7704, fn_1_7E24, fn_1_8240, fn_1_8414 }; + +static const s32 lbl_1_rodata_360[0x1B] = { + DATA_MAKE_NUM(DATADIR_M420, 0x00), + DATA_MAKE_NUM(DATADIR_M420, 0x14), + DATA_MAKE_NUM(DATADIR_M420, 0x07), + DATA_MAKE_NUM(DATADIR_M420, 0x08), + DATA_MAKE_NUM(DATADIR_M420, 0x01), + DATA_MAKE_NUM(DATADIR_M420, 0x02), + DATA_MAKE_NUM(DATADIR_M420, 0x03), + DATA_MAKE_NUM(DATADIR_M420, 0x04), + DATA_MAKE_NUM(DATADIR_M420, 0x05), + DATA_MAKE_NUM(DATADIR_M420, 0x06), + DATA_MAKE_NUM(DATADIR_M420, 0x15), + DATA_MAKE_NUM(DATADIR_M420, 0x16), + DATA_MAKE_NUM(DATADIR_M420, 0x17), + DATA_MAKE_NUM(DATADIR_M420, 0x09), + DATA_MAKE_NUM(DATADIR_M420, 0x09), + DATA_MAKE_NUM(DATADIR_M420, 0x0A), + DATA_MAKE_NUM(DATADIR_M420, 0x0B), + DATA_MAKE_NUM(DATADIR_M420, 0x0E), + DATA_MAKE_NUM(DATADIR_M420, 0x0F), + DATA_MAKE_NUM(DATADIR_M420, 0x0C), + DATA_MAKE_NUM(DATADIR_M420, 0x0D), + DATA_MAKE_NUM(DATADIR_M420, 0x12), + DATA_MAKE_NUM(DATADIR_M420, 0x11), + DATA_MAKE_NUM(DATADIR_M420, 0x10), + DATA_MAKE_NUM(DATADIR_M420, 0x10), + DATA_MAKE_NUM(DATADIR_M420, 0x13), + DATA_MAKE_NUM(DATADIR_M420, 0x13), +}; + +Process *lbl_1_bss_A40; +Process *lbl_1_bss_A3C; +Process *lbl_1_bss_A2C[4]; +s32 lbl_1_bss_A28; +s16 lbl_1_bss_9F0[0x1C]; +s16 lbl_1_bss_9EE; +s16 lbl_1_bss_9EC; +M420DllUnkMapStruct2 lbl_1_bss_140[15]; +struct M420DllUnkMapStruct lbl_1_bss_C0[2]; +s32 lbl_1_bss_BC; +s32 lbl_1_bss_B8; +s32 lbl_1_bss_B4; +s32 lbl_1_bss_B0; + +s32 fn_1_4964(void) +{ + M420DllUnkMapStruct2 *var_r31; + M420DllUnkMapStruct *var_r30; + s32 var_r29; + + lbl_1_bss_A40 = HuPrcChildCreate(fn_1_6820, 0x3E9, 0x4000, 0, lbl_1_bss_4); + lbl_1_bss_A3C = HuPrcChildCreate(fn_1_6884, 0x3EA, 0x4000, 0, lbl_1_bss_4); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + lbl_1_bss_A2C[var_r29] = NULL; + } + lbl_1_bss_A28 = 0; + fn_1_6D5C(); + fn_1_6950(); + + var_r31 = lbl_1_bss_140; + var_r31->unk_02 = lbl_1_bss_9F0[1]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 1000.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[1]; + var_r31->unk_02 = lbl_1_bss_9F0[0xA]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[2]; + var_r31->unk_02 = lbl_1_bss_9F0[0xC]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[3]; + var_r31->unk_02 = lbl_1_bss_9F0[0xB]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[4]; + var_r31->unk_02 = lbl_1_bss_9F0[0xD]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = -220.0f; + var_r31->unk_04.y = -60.0f; + var_r31->unk_04.z = 170.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[9]; + var_r31->unk_02 = lbl_1_bss_9F0[0x17]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = -170.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 170.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[11]; + var_r31->unk_02 = lbl_1_bss_9F0[0x19]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = -160.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 220.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[6]; + var_r31->unk_02 = lbl_1_bss_9F0[0x11]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = -65.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[5]; + var_r31->unk_02 = lbl_1_bss_9F0[0xE]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 220.0f; + var_r31->unk_04.y = -60.0f; + var_r31->unk_04.z = 170.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[10]; + var_r31->unk_02 = lbl_1_bss_9F0[0x18]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 190.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 170.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[12]; + var_r31->unk_02 = lbl_1_bss_9F0[0x1A]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 185.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 220.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[7]; + var_r31->unk_02 = lbl_1_bss_9F0[0x12]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = -65.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[8]; + var_r31->unk_02 = lbl_1_bss_9F0[0x13]; + var_r31->unk_00_field3 = 1; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 300.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[13]; + var_r31->unk_02 = lbl_1_bss_9F0[3]; + var_r31->unk_00_field3 = 0; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + var_r31 = &lbl_1_bss_140[14]; + var_r31->unk_02 = lbl_1_bss_9F0[2]; + var_r31->unk_00_field3 = 0; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 0.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_4C.x = 1.0f; + var_r31->unk_4C.y = 1.0f; + var_r31->unk_4C.z = 1.0f; + fn_1_6DF0(var_r31); + + for (var_r29 = 0; var_r29 < 2; var_r29++) { + var_r30 = &lbl_1_bss_C0[var_r29]; + var_r30->unk_14 = var_r29; + var_r30->unk_1C = 20.0f; + var_r30->unk_20 = 0.0f; + var_r30->unk_2C = 0.0f; + var_r30->unk_24 = 0.2f; + var_r30->unk_28 = 0.1f; + var_r30->unk_38 = 0; + var_r30->unk_3C = 0; + var_r30->unk_30 = 1; + var_r30->unk_00 = &lbl_1_bss_140[var_r29 + 13]; + var_r30->unk_04 = &lbl_1_bss_140[var_r29 + 4]; + var_r30->unk_08 = &lbl_1_bss_140[var_r29 + 6]; + var_r30->unk_0C = &lbl_1_bss_140[var_r29 + 9]; + var_r30->unk_10 = &lbl_1_bss_140[var_r29 + 11]; + } + lbl_1_bss_B8 = 0; + lbl_1_bss_B4 = 0; + lbl_1_bss_B0 = 0; + fn_1_6728(); + + { + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 0.0f, -1.0f }; + HuAudFXListnerSetEX(&sp14, &sp8, 3000.0, 1000.0, 100.0, 300.0, 300.0); + HuAudFXPlay(0x5F0); + } + return 1; +} + +void fn_1_596C(void) +{ + Process *var_r30; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = lbl_1_bss_A2C[var_r31]; + if (var_r30) { + HuPrcKill(var_r30); + } + } + fn_1_6D0C(); + HuPrcKill(lbl_1_bss_A3C); + HuPrcKill(lbl_1_bss_A40); +} + +s32 fn_1_59F4(s32 arg0) +{ + if (fn_1_5A7C(arg0) != 0) { + return 0; + } + lbl_1_bss_A2C[arg0] = HuPrcChildCreate(lbl_1_data_154[arg0], 0x3ED, 0x5000, 0, lbl_1_bss_4); + return 1; +} + +s32 fn_1_5A7C(s32 arg0) +{ + return lbl_1_bss_A2C[arg0] != NULL; +} + +s32 fn_1_5AA8(s32 arg0, float arg1) +{ + M420DllUnkMapStruct *var_r31; + s32 var_r29; + s32 var_r30; + + var_r31 = &lbl_1_bss_C0[arg0]; + if ((var_r31->unk_1C += arg1) >= 200.0f) { + var_r31->unk_1C = 200.0f; + } + var_r31->unk_38 = 1; + var_r31->unk_30 = (s32)(200.0f - var_r31->unk_1C) / 10.0f; + switch (arg0) { + case 0: + var_r29 = 3; + var_r30 = 0x15; + break; + case 1: + var_r29 = 2; + var_r30 = 0x16; + break; + } + if (var_r31->unk_1C >= 200.0f) { + if (lbl_1_bss_B0 == 0) { + var_r31->unk_3C = 1; + Hu3DMotionTimeSet(lbl_1_bss_9F0[var_r30], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_9F0[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[var_r30], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(lbl_1_bss_9F0[var_r29], HU3D_ATTR_DISPOFF); + } + return 1; + } + return 0; +} + +void fn_1_5C8C(M420DllUnkMapStruct *arg0) +{ + Vec sp8; + + if (arg0->unk_38 != 0) { + if (arg0->unk_30 > 0) { + arg0->unk_30--; + } + if (arg0->unk_30 <= 0) { + sp8 = arg0->unk_04->unk_04; + sp8.y = -60.0f + arg0->unk_1C; + fn_1_7230(arg0->unk_04, &sp8, 0x1E, 0); + + sp8 = arg0->unk_08->unk_04; + sp8.y = -65.0f + arg0->unk_1C; + fn_1_7230(arg0->unk_08, &sp8, 0x1E, 0); + + sp8 = arg0->unk_0C->unk_04; + sp8.y = 40.0f + arg0->unk_1C; + fn_1_7230(arg0->unk_0C, &sp8, 0x1E, 1); + + Hu3DMotionTimeSet(arg0->unk_0C->unk_02, 0.0f); + Hu3DModelAttrReset(arg0->unk_0C->unk_02, HU3D_ATTR_DISPOFF); + + sp8 = arg0->unk_10->unk_04; + sp8.y = -50.0f + arg0->unk_1C; + fn_1_7230(arg0->unk_10, &sp8, 0x1E, 1); + + Hu3DMotionTimeSet(arg0->unk_10->unk_02, 0.0f); + Hu3DModelAttrReset(arg0->unk_10->unk_02, HU3D_ATTR_DISPOFF); + Hu3DMotionStartEndSet(arg0->unk_00->unk_02, 0.0f, 30.0f); + Hu3DMotionTimeSet(arg0->unk_00->unk_02, 0.0f); + Hu3DModelAttrReset(arg0->unk_00->unk_02, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk_00->unk_02, HU3D_MOTATTR_LOOP); + arg0->unk_34 = 3; + arg0->unk_38 = 0; + arg0->unk_24 = 0.8f; + arg0->unk_28 = 0.3f; + arg0->unk_2C = 0.0f; + if (arg0->unk_14 == 0) { + HuAudFXPlay(0x5F7); + } + else { + HuAudFXPlay(0x5F8); + } + } + } + if ((Hu3DMotionEndCheck(arg0->unk_00->unk_02) != 0) && (arg0->unk_34 > 0)) { + if (--arg0->unk_34 > 0) { + Hu3DMotionTimeSet(arg0->unk_00->unk_02, 0.0f); + } + else { + Hu3DMotionStartEndSet(arg0->unk_00->unk_02, 0.0f, 1.0f); + Hu3DMotionTimeSet(arg0->unk_00->unk_02, 0.0f); + Hu3DModelAttrSet(arg0->unk_00->unk_02, HU3D_MOTATTR_PAUSE); + } + } + if (arg0->unk_24 > 0.2f) { + if ((arg0->unk_24 -= 0.005f) <= 0.2f) { + arg0->unk_24 = 0.2f; + } + } + arg0->unk_04->unk_28.y += arg0->unk_24; + if (arg0->unk_28 > 0.05f) { + if ((arg0->unk_28 -= 0.003f) <= 0.05f) { + arg0->unk_28 = 0.05f; + } + } + arg0->unk_04->unk_4C.y = 1.0 + (arg0->unk_28 * sind((90.0f * arg0->unk_2C))); + arg0->unk_2C += 0.02f; +} + +s32 fn_1_60F0(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + + if (lbl_1_bss_BC >= 6) { + return 1; + } + var_f31 = 5.0f * (6 - lbl_1_bss_BC); + var_f30 = var_f31 - 5.0f; + Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], var_f30, var_f31); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], var_f31); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_REV); + lbl_1_bss_B8 = 5; + lbl_1_bss_BC += 1; + if (lbl_1_bss_BC == 6) { + var_r31 = 1; + } + else { + var_r31 = 0; + } + return var_r31; +} + +void fn_1_6268(void) +{ + float var_f31 = 0.0f; + float var_f30 = 30.0f; + + Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], var_f31, var_f30); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], var_f31); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_REV); + Hu3DMotionStartEndSet(lbl_1_bss_9F0[0x10], var_f31, var_f30); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0x10], var_f31); + lbl_1_bss_BC = 0; +} + +void fn_1_636C(void) +{ + float var_f31 = 0.0f; + float var_f30 = 30.0f; + + Hu3DMotionStartEndSet(lbl_1_bss_9F0[0x14], var_f31, var_f30); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0x14], var_f31); +} + +void fn_1_63EC(void) +{ + float var_f31 = 5.0f * (6 - lbl_1_bss_BC); + float var_f30 = 30.0f; + + Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], var_f31, var_f30); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], var_f31); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_REV); + lbl_1_bss_BC = 0; + lbl_1_bss_B8 = 0; +} + +s32 fn_1_650C(void) +{ + s32 var_r31 = 0; + + if ((lbl_1_bss_BC == 6) && (lbl_1_bss_B8 == 0)) { + var_r31 = 1; + } + return var_r31; +} + +void fn_1_6554(void) +{ + Vec sp8; + M420DllUnkMapStruct2 *var_r31; + + var_r31 = &lbl_1_bss_140[8]; + var_r31->unk_04.x = 480.0f; + var_r31->unk_04.y = 800.0f; + var_r31->unk_04.z = -314.0f; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + fn_1_6DF0(var_r31); + sp8.x = 480.0f; + sp8.y = 370.0f; + sp8.z = -314.0f; + Hu3DModelAttrReset(var_r31->unk_02, HU3D_ATTR_DISPOFF); + fn_1_7230(var_r31, &sp8, 0x14, 0); + Hu3DMotionTimeSet(fn_1_6660(), 0.0f); + Hu3DModelAttrSet(fn_1_6660(), HU3D_MOTATTR_PAUSE); +} + +s16 fn_1_6660(void) +{ + return lbl_1_bss_140[8].unk_02; +} + +s32 fn_1_6670(void) +{ + M420DllUnkMapStruct2 *var_r31 = &lbl_1_bss_140[8]; + return var_r31->unk_00_field0; +} + +void fn_1_669C(s32 arg0) +{ + M420DllUnkMapStruct2 *var_r31 = &lbl_1_bss_140[8]; + if (arg0 == 0) { + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 0.0f; + var_r31->unk_04.z = 0.0f; + fn_1_6DF0(var_r31); + } + var_r31->unk_00_field3 = arg0; +} + +void fn_1_6728(void) +{ + M420DllUnkMapStruct2 *var_r31 = &lbl_1_bss_140[8]; + var_r31->unk_04.x = 0.0f; + var_r31->unk_04.y = 1000.0f; + var_r31->unk_04.z = 0.0f; + fn_1_6DF0(var_r31); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x13], HU3D_ATTR_DISPOFF); +} + +s32 fn_1_67A4(s32 arg0) +{ + M420DllUnkMapStruct *var_r31 = &lbl_1_bss_C0[arg0]; + return var_r31->unk_1C >= 200.0f; +} + +s32 fn_1_67E8(s32 arg0) +{ + M420DllUnkMapStruct *var_r31 = &lbl_1_bss_C0[arg0]; + return var_r31->unk_3C; +} + +s32 fn_1_6810(void) +{ + return lbl_1_bss_B4; +} + +void fn_1_6820(void) +{ + while (TRUE) { + if (lbl_1_bss_B8 > 0) { + if (--lbl_1_bss_B8 <= 0) { + Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); + } + } + HuPrcVSleep(); + } +} + +void fn_1_6884(void) +{ + s32 var_r31; + M420DllUnkMapStruct *var_r30; + M420DllUnkMapStruct *var_r29; + + while (TRUE) { + for (var_r31 = 0; var_r31 < 0xF; var_r31++) { + fn_1_6DF0(&lbl_1_bss_140[var_r31]); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + fn_1_5C8C(&lbl_1_bss_C0[var_r31]); + } + var_r30 = lbl_1_bss_C0; + if ((var_r30->unk_1C >= 200.0f) || (var_r29 = &lbl_1_bss_C0[1], var_r29->unk_1C >= 200.0f)) { + lbl_1_bss_B0 = 1; + } + HuPrcVSleep(); + } +} + +void fn_1_6950(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + lbl_1_bss_9F0[var_r31] = Hu3DModelCreateFile(lbl_1_rodata_360[var_r31]); + } + Hu3DModelAttrSet(lbl_1_bss_9F0[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xA], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(lbl_1_bss_9F0[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(lbl_1_bss_9F0[2], HU3D_MOTATTR_PAUSE); + Hu3DModelPosSet(lbl_1_bss_9F0[0xF], -219.0f, 300.0f, -92.0f); + Hu3DModelRotSet(lbl_1_bss_9F0[0xF], 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_9F0[0x10], 0.0f, 0.0f, 0.0f); + Hu3DModelShadowMapSet(lbl_1_bss_9F0[0]); + Hu3DModelShadowMapSet(lbl_1_bss_9F0[0xD]); + Hu3DModelShadowMapSet(lbl_1_bss_9F0[0xE]); + Hu3DModelShadowSet(lbl_1_bss_9F0[0xF]); + Hu3DModelShadowSet(lbl_1_bss_9F0[1]); + Hu3DModelShadowSet(lbl_1_bss_9F0[0xA]); + Hu3DModelShadowSet(lbl_1_bss_9F0[0xB]); + Hu3DModelShadowSet(lbl_1_bss_9F0[0x10]); + Hu3DModelShadowSet(lbl_1_bss_9F0[0x14]); + Hu3DModelShadowSet(lbl_1_bss_9F0[0x13]); + Hu3DModelAttrSet(lbl_1_bss_9F0[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[9], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xB], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xC], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x15], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x16], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x17], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x18], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x19], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0x1A], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); + Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], 30.0f, 30.0f); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], 30.0f); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); + Hu3DModelHookSet(lbl_1_bss_9F0[1], "itemhook_sao", lbl_1_bss_9F0[0xA]); +} + +void fn_1_6D0C(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + Hu3DModelKill(lbl_1_bss_9F0[var_r31]); + } +} + +void fn_1_6D5C(void) +{ + LightData *var_r31; + + Hu3DLighInit(); + lbl_1_bss_9EC = Hu3DGLightCreateV(&lbl_1_data_138.unk_00, &lbl_1_data_138.unk_0C, &lbl_1_data_138.unk_18); + Hu3DGLightInfinitytSet(lbl_1_bss_9EC); + var_r31 = &Hu3DGlobalLight[lbl_1_bss_9EC]; + var_r31->unk_00 |= 0x8000; +} + +void fn_1_6DF0(M420DllUnkMapStruct2 *arg0) +{ + float var_f31; + + if (arg0->unk_00_field3) { + if (arg0->unk_00_field0) { + switch (arg0->unk_78) { + case 0: + var_f31 = arg0->unk_70; + break; + case 1: + var_f31 = sind((90.0f * arg0->unk_70)); + var_f31 *= var_f31; + break; + case 2: + var_f31 = sind((90.0f * arg0->unk_70)); + var_f31 *= var_f31 * var_f31; + break; + } + arg0->unk_04.x = arg0->unk_10.x + (var_f31 * (arg0->unk_1C.x - arg0->unk_10.x)); + arg0->unk_04.y = arg0->unk_10.y + (var_f31 * (arg0->unk_1C.y - arg0->unk_10.y)); + arg0->unk_04.z = arg0->unk_10.z + (var_f31 * (arg0->unk_1C.z - arg0->unk_10.z)); + if ((arg0->unk_70 += arg0->unk_74) >= 1.0f) { + arg0->unk_04 = arg0->unk_1C; + arg0->unk_00_field0 = 0; + } + } + Hu3DModelPosSet(arg0->unk_02, arg0->unk_04.x, arg0->unk_04.y, arg0->unk_04.z); + if (arg0->unk_00_field1) { + switch (arg0->unk_84) { + case 0: + var_f31 = arg0->unk_7C; + break; + case 1: + var_f31 = sind((90.0f * arg0->unk_7C)); + var_f31 *= var_f31; + break; + } + arg0->unk_28.x = arg0->unk_34.x + (var_f31 * (arg0->unk_40.x - arg0->unk_34.x)); + arg0->unk_28.y = arg0->unk_34.y + (var_f31 * (arg0->unk_40.y - arg0->unk_34.y)); + arg0->unk_28.z = arg0->unk_34.z + (var_f31 * (arg0->unk_40.z - arg0->unk_34.z)); + if ((arg0->unk_7C += arg0->unk_80) >= 1.0f) { + arg0->unk_28 = arg0->unk_40; + arg0->unk_00_field1 = 0; + } + } + Hu3DModelRotSet(arg0->unk_02, arg0->unk_28.x, arg0->unk_28.y, arg0->unk_28.z); + if (arg0->unk_00_field2) { + switch (arg0->unk_90) { + case 0: + var_f31 = arg0->unk_88; + break; + case 1: + var_f31 = sind((90.0f * arg0->unk_88)); + var_f31 *= var_f31; + break; + } + arg0->unk_4C.x = arg0->unk_58.x + (var_f31 * (arg0->unk_64.x - arg0->unk_58.x)); + arg0->unk_4C.y = arg0->unk_58.y + (var_f31 * (arg0->unk_64.y - arg0->unk_58.y)); + arg0->unk_4C.z = arg0->unk_58.z + (var_f31 * (arg0->unk_64.z - arg0->unk_58.z)); + if ((arg0->unk_88 += arg0->unk_8C) >= 1.0f) { + arg0->unk_4C = arg0->unk_64; + arg0->unk_00_field2 = 0; + } + } + Hu3DModelScaleSet(arg0->unk_02, arg0->unk_4C.x, arg0->unk_4C.y, arg0->unk_4C.z); + } +} + +void fn_1_7230(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3) +{ + arg0->unk_1C = *arg1; + arg0->unk_10 = arg0->unk_04; + arg0->unk_70 = 0.0f; + arg0->unk_74 = 1.0f / arg2; + arg0->unk_78 = arg3; + arg0->unk_00_field0 = 1; +} + +void fn_1_72C8(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3) +{ + arg0->unk_40 = *arg1; + arg0->unk_34 = arg0->unk_28; + arg0->unk_7C = 0.0f; + arg0->unk_80 = 1.0f / arg2; + arg0->unk_84 = arg3; + arg0->unk_00_field1 = 1; +} + +void fn_1_7360(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3) +{ + arg0->unk_64 = *arg1; + arg0->unk_58 = arg0->unk_4C; + arg0->unk_88 = 0.0f; + arg0->unk_8C = 1.0f / arg2; + arg0->unk_90 = arg3; + arg0->unk_00_field2 = 1; +} + +float fn_1_73F8(float arg8) +{ + float var_f31; + float var_f30; + + if (arg8 < 0.0f) { + arg8 = -arg8; + } + if (arg8 < 1.0f) { + var_f31 = (4.0f + ((arg8 * (3.0f * arg8 * arg8)) - (6.0f * arg8 * arg8))) / 6.0f; + } + else if (arg8 < 2.0f) { + var_f30 = arg8 - 2.0f; + var_f31 = (var_f30 * (-var_f30 * var_f30)) / 6.0f; + } + else { + var_f31 = 0.0f; + } + return var_f31; +} + +void fn_1_74F8(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + float var_f30; + float var_f29; + float var_f26; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r29 = 0xB; + var_f30 = 0.0f; + var_f29 = 0.0f; + for (var_r31 = -2; var_r31 <= var_r29 + 2; var_r31++) { + var_r30 = var_r31; + if (var_r31 < 0) { + var_r30 = 0; + } + if (var_r31 > var_r29) { + var_r30 = var_r29; + } + var_f26 = fn_1_73F8(arg8 - var_r31); + var_f30 += var_f26 * arg0[var_r30]; + var_f29 += var_f26 * arg1[var_r30]; + } + *arg2 = var_f30; + *arg3 = var_f29; +} + +void fn_1_7704(void) +{ + Vec sp20; + Vec sp14; + Vec sp8; + + M420DllUnkMapStruct2 *var_r31; + s32 var_r29; + s32 var_r28; + + var_r28 = 0; + var_r31 = &lbl_1_bss_140[0]; + sp20.x = 0.0f; + sp20.y = 1000.0f; + sp20.z = 0.0f; + + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 0.0f; + + sp8.x = 1.0f; + sp8.y = 1.0f; + sp8.z = 1.0f; + + fn_1_7230(var_r31, &sp20, 1, 0); + fn_1_72C8(var_r31, &sp14, 1, 0); + var_r28 = HuAudFXEmiterPlay(0x5EF, &sp20); + sp20.y = 750.0f; + fn_1_7230(var_r31, &sp20, 80, 1); + HuPrcSleep(0x50); + { + float var_f30; + float sp5C[12] = { + 0.0f, + 50.0f, + 300.0f, + 350.0f, + 300.0f, + 0.0f, + -300.0f, + -350.0f, + -350.0f, + -300.0f, + -100.0f, + 0.0f, + }; + float sp2C[12] = { + 750.0f, + 700.0f, + 600.0f, + 500.0f, + 400.0f, + 300.0f, + 350.0f, + 400.0f, + 450.0f, + 500.0f, + 600.0f, + 900.0f, + }; + float var_f24 = 0.050000004f; + for (var_f30 = -1.0f; var_f30 < 12.0f; var_f30 += var_f24) { + fn_1_74F8(sp5C, sp2C, &sp20.x, &sp20.y, var_f30); + fn_1_7230(var_r31, &sp20, 1, 0); + HuAudFXEmiterUpDate(var_r28, &sp20); + HuPrcVSleep(); + } + } + for (var_r29 = 0; var_r29 < 0x1E; var_r29++) { + Hu3DModelTPLvlSet(lbl_1_bss_9F0[1], 1.0f - (0.033333335f * var_r29)); + Hu3DModelTPLvlSet(lbl_1_bss_9F0[0xA], 1.0f - (0.033333335f * var_r29)); + HuAudFXEmiterUpDate(var_r28, &sp20); + HuPrcSleep(1); + } + HuAudFXStop(var_r28); + sp20.x = 1000.0f; + sp20.y = 0.0f; + sp20.z = 0.0f; + fn_1_7230(var_r31, &sp20, 1, 0); + HuPrcSleep(1); + Hu3DModelTPLvlSet(lbl_1_bss_9F0[1], 1.0f); + Hu3DModelTPLvlSet(lbl_1_bss_9F0[0xA], 1.0f); + *lbl_1_bss_A2C = NULL; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_7E24(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + M420DllUnkMapStruct2 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + M420DllUnkMapStruct *var_r27; + s32 var_r26; + s32 var_r25; + + var_r31 = &lbl_1_bss_140[0]; + { + Vec sp8 = { 0.0f, 0.0f, 0.0f }; + var_f29 = 800.0f; + var_f28 = 10.0f; + var_r29 = 0; + var_r28 = 0; + var_r30 = 0; + var_r31->unk_28.x = 0.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_f31 = 0.0f; + var_f26 = 0.005f; + var_r27 = &lbl_1_bss_C0[1]; + var_r26 = var_r27->unk_3C; + var_r25 = var_r26; + if (var_r25 != 0) { + var_f27 = 220.0f; + } + else { + var_f27 = -220.0f; + } + + for (var_f30 = var_f27; var_f31 < 1.0f; var_f31 += var_f26) { + sp8.x = (var_f29 * cosd((-180.0f * var_f31))) - (var_f28 * sind((-180.0f * var_f31))); + sp8.y = 1200.0 + ((var_f28 * cosd((-180.0f * var_f31))) + (var_f29 * sind((-180.0f * var_f31)))); + sp8.z = 0.0f; + if (var_f31 <= 0.0f) { + var_r30 = HuAudFXEmiterPlay(0x5EF, &sp8); + } + if ((sp8.x < (200.0f + var_f30)) && (var_r28 == 0)) { + Hu3DModelHookReset(lbl_1_bss_9F0[1]); + Hu3DModelAttrSet(lbl_1_bss_9F0[0xA], HU3D_ATTR_DISPOFF); + Hu3DModelHookSet(lbl_1_bss_9F0[1], "itemhook_sao", lbl_1_bss_9F0[0xC]); + Hu3DModelAttrReset(lbl_1_bss_9F0[0xC], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_9F0[0xC], 0.0f); + var_r28 = 1; + } + if ((sp8.x < var_f30) && (var_r29 == 0)) { + sp8.x = var_f30; + if (lbl_1_bss_A2C[3] == NULL) { + lbl_1_bss_A2C[3] = HuPrcChildCreate(lbl_1_data_154[3], 0x3ED, 0x5000, 0, lbl_1_bss_4); + } + var_r29 = 1; + } + fn_1_7230(var_r31, &sp8, 1, 0); + HuAudFXEmiterUpDate(var_r30, &sp8); + HuPrcVSleep(); + } + } + HuAudFXStop(var_r30); + lbl_1_bss_A2C[1] = NULL; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_8240(void) +{ + Hu3DModelAttrReset(lbl_1_bss_9F0[4], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_9F0[4], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_9F0[6], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_9F0[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_9F0[8], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_9F0[8], 0.0f); + HuPrcSleep(0x78); + Hu3DModelAttrSet(lbl_1_bss_9F0[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_9F0[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[5], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(lbl_1_bss_9F0[5], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_9F0[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[7], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(lbl_1_bss_9F0[7], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_9F0[9], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_9F0[9], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(lbl_1_bss_9F0[9], 0.0f); + lbl_1_bss_A2C[2] = NULL; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_8414(void) +{ + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + + M420DllUnkMapStruct2 *var_r31; + M420DllUnkMapStruct *var_r30; + M420DllUnkMapStruct2 *var_r29; + M420DllUnkMapStruct2 *var_r28; + M420DllUnkMapStruct2 *var_r27; + M420DllUnkMapStruct2 *var_r26; + s32 var_r25; + + var_r31 = &lbl_1_bss_140[2]; + var_r27 = &lbl_1_bss_140[3]; + var_r26 = &lbl_1_bss_140[0]; + Hu3DModelHookReset(lbl_1_bss_9F0[1]); + var_r31->unk_04 = var_r26->unk_04; + var_r31->unk_04.y -= 100.0f; + var_r31->unk_04.z += 148.0f; + fn_1_6DF0(var_r31); + + sp14 = var_r31->unk_04; + sp14.y = 80.0f; + sp14.z = 170.0f; + + sp8 = var_r31->unk_28; + sp8.x += 45.0f; + + fn_1_7230(var_r31, &sp14, 30, 0); + fn_1_72C8(var_r31, &sp8, 30, 0); + HuPrcSleep(0xA); + HuAudFXPlay(0x5F5); + var_r25 = fn_1_67A4(0) != 0 ? 0 : 1; + var_r30 = &lbl_1_bss_C0[var_r25]; + if (var_r25 == 0) { + var_f30 = -220.0f; + } + else { + var_f30 = 220.0f; + } + var_f31 = var_f30; + + sp14 = var_r30->unk_0C->unk_04; + sp14.y = 40.0f + var_r30->unk_1C; + sp14.x = var_f31; + + var_r29 = var_r30->unk_0C; + fn_1_7230(var_r29, &sp14, 30, 1); + + Hu3DMotionTimeSet(var_r30->unk_0C->unk_02, 0.0f); + Hu3DModelAttrReset(var_r30->unk_0C->unk_02, HU3D_ATTR_DISPOFF); + sp14 = var_r30->unk_10->unk_04; + sp14.y = -50.0f + var_r30->unk_1C; + sp14.x = var_f31; + var_r28 = var_r30->unk_10; + fn_1_7230(var_r28, &sp14, 30, 1); + Hu3DMotionTimeSet(var_r30->unk_10->unk_02, 0.0f); + Hu3DModelAttrReset(var_r30->unk_10->unk_02, HU3D_ATTR_DISPOFF); + HuPrcSleep(5); + lbl_1_bss_B4 = 1; + sp8.x = 0.0f; + fn_1_72C8(var_r31, &sp8, 15, 1); + HuPrcSleep(0xF); + var_r27->unk_04 = var_r31->unk_04; + Hu3DModelAttrSet(var_r31->unk_02, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r27->unk_02, HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(var_r27->unk_02, 0.0f); + Hu3DModelAttrReset(var_r27->unk_02, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r27->unk_02, HU3D_MOTATTR_LOOP); + HuPrcSleep(0x78); + lbl_1_bss_A2C[3] = NULL; + HuPrcEnd(); + + while (TRUE) { + HuPrcVSleep(); + } +} + +const float _pad = 0; diff --git a/src/REL/m420dll/player.c b/src/REL/m420dll/player.c new file mode 100644 index 00000000..5bdb79f2 --- /dev/null +++ b/src/REL/m420dll/player.c @@ -0,0 +1,1033 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/wipe.h" + +#include "REL/m420dll.h" + +typedef void (*M420DllUnkFunc)(M420DllPlayerStruct *); + +typedef struct M420DllUnkStruct2 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; +} M420DllUnkStruct2; /* size = 0x20 */ + +void fn_1_1F14(void); +void fn_1_1F54(M420DllPlayerStruct *arg0); +void fn_1_1F94(M420DllPlayerStruct *arg0); +void fn_1_200C(M420DllPlayerStruct *arg0); +void fn_1_20EC(M420DllPlayerStruct *arg0); +void fn_1_211C(M420DllPlayerStruct *arg0); +void fn_1_2174(M420DllPlayerStruct *arg0); +void fn_1_2260(M420DllPlayerStruct *arg0); +void fn_1_22CC(M420DllPlayerStruct *arg0); +void fn_1_276C(M420DllPlayerStruct *arg0); +void fn_1_2CE0(M420DllPlayerStruct *arg0); +void fn_1_2D7C(M420DllPlayerStruct *arg0); +void fn_1_2EA8(M420DllPlayerStruct *arg0); +void fn_1_3098(M420DllPlayerStruct *arg0); +void fn_1_326C(M420DllPlayerStruct *arg0); +void fn_1_3450(M420DllPlayerStruct *arg0); +s32 fn_1_34AC(M420DllPlayerStruct *arg0); +void fn_1_355C(M420DllPlayerStruct *arg0); +void fn_1_36E4(M420DllPlayerStruct *arg0); +void fn_1_374C(M420DllPlayerStruct *arg0); +void fn_1_378C(M420DllPlayerStruct *arg0); +void fn_1_3854(void); +void fn_1_3970(M420DllPlayerStruct *arg0); +void fn_1_3F94(M420DllPlayerStruct *arg0); +void fn_1_4294(M420DllPlayerStruct *arg0); +void fn_1_4574(M420DllPlayerStruct *arg0); +void fn_1_476C(M420DllPlayerStruct *arg0); + +M420DllUnkStruct2 lbl_1_data_50[4] = { + { 0x19, 0x01, 0x2A, 0x08, 0x2D, 0x10, 0x01, 0x01 }, + { 0x19, 0x01, 0x22, 0x06, 0x22, 0x0C, 0x01, 0x01 }, + { 0x19, 0x01, 0x1B, 0x05, 0x14, 0x0A, 0x01, 0x01 }, + { 0x19, 0x01, 0x14, 0x04, 0x0A, 0x08, 0x01, 0x01 }, +}; + +static const s32 lbl_1_rodata_F8[8][0xB] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x68), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x69), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49), + 0x33001B, + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x18), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x68), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x69), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x49), + 0x33001C, + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x68), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x69), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x35), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x49), + 0x33001D, + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x18), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x68), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x69), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x49), + 0x33001E, + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x18), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x68), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x69), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x35), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x49), + 0x33001F, + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x18), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x68), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x69), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x35), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x49), + 0x330020, + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x18), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x68), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x69), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x35), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x49), + 0x330021, + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x18), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x68), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x69), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x49), + 0x330022, + }, +}; +static const Vec lbl_1_rodata_258[4][2] = { + { { -372.0f, 300.0f, -220.0f }, { 0.0f, 50.0f, 0.0f } }, + { { 435.0f, 300.0f, -260.0f }, { 0.0f, 140.0f, 0.0f } }, + { { 315.0f, 300.0f, -153.0f }, { 0.0f, 140.0f, 0.0f } }, + { { 195.0f, 300.0f, -46.0f }, { 0.0f, 140.0f, 0.0f } }, +}; + +M420DllPlayerStruct *fn_1_1B8C(s32 arg0, s32 arg1) +{ + M420DllPlayerStruct *var_r31; + s32 var_r30; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M420DllPlayerStruct), MEMORY_DEFAULT_NUM); + if (!var_r31) { + OSReport("M420PlayerCreate ERROR...\n"); + return NULL; + } + var_r31->unk_04 = arg0; + var_r31->unk_4C = arg1; + var_r31->unk_08 = GWPlayerCfg[arg0].diff; + var_r31->unk_00_field0 = GWPlayerCfg[arg0].iscom; + var_r31->unk_0A = GWPlayerCfg[arg0].character; + var_r31->unk_0C = GWPlayerCfg[arg0].pad_idx; + var_r31->unk_10 = lbl_1_rodata_258[arg1][0]; + var_r31->unk_1C = lbl_1_rodata_258[arg1][1]; + var_r31->unk_48 = 0; + var_r31->unk_50 = 0; + var_r31->unk_00_field2 = 0; + var_r31->unk_00_field1 = 0; + var_r31->unk_E8 = NULL; + for (var_r30 = 0; var_r30 < 0xA; var_r30++) { + var_r31->unk_84[var_r30] = 7; + } + fn_1_1F54(var_r31); + fn_1_1F94(var_r31); + + switch (arg1) { + case 0: + if (var_r31->unk_0A == 5) { + CharModelMotionSet(var_r31->unk_0A, var_r31->unk_AE[0xA]); + Hu3DMotionStartEndSet(var_r31->unk_AC, 0.0f, 1.0f); + Hu3DMotionTimeSet(var_r31->unk_AC, 0.0f); + } + else { + CharModelMotionSet(var_r31->unk_0A, var_r31->unk_AE[0]); + } + break; + case 1: + case 2: + case 3: + var_r31->unk_1C.y = 0.0f; + CharModelMotionSet(var_r31->unk_0A, var_r31->unk_AE[0]); + break; + default: + break; + } + + CharModelMotionDataClose(var_r31->unk_0A); + fn_1_200C(var_r31); + var_r31->unk_40 = HuPrcChildCreate(fn_1_1F14, 0x64, 0x5000, 0, lbl_1_bss_4); + var_r31->unk_40->user_data = var_r31; + return var_r31; +} + +void fn_1_1E14(M420DllPlayerStruct *arg0) +{ + fn_1_2174(arg0); + fn_1_211C(arg0); + fn_1_20EC(arg0); + HuPrcKill(arg0->unk_40); + HuMemDirectFree(arg0); +} + +void fn_1_1E64(M420DllPlayerStruct *arg0, s32 arg1, s32 arg2) +{ + switch (arg1) { + case 0: + omVibrate(arg0->unk_04, arg2, 6, 6); + break; + case 1: + omVibrate(arg0->unk_04, arg2, 4, 2); + break; + case 2: + omVibrate(arg0->unk_04, arg2, 0xC, 0); + break; + } +} + +M420DllUnkFunc lbl_1_data_EC[0xC] = { + fn_1_2260, + fn_1_22CC, + fn_1_2D7C, + fn_1_276C, + fn_1_2CE0, + fn_1_2EA8, + fn_1_2260, + fn_1_4574, + fn_1_476C, + fn_1_3F94, + fn_1_4294, + fn_1_3970, +}; + +void fn_1_1F14(void) +{ + M420DllPlayerStruct *var_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + lbl_1_data_EC[var_r31->unk_48](var_r31); + } +} + +void fn_1_1F54(M420DllPlayerStruct *arg0) +{ + arg0->unk_AC = CharModelCreate(arg0->unk_0A, 2); + Hu3DModelShadowSet(arg0->unk_AC); +} + +void fn_1_1F94(M420DllPlayerStruct *arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + arg0->unk_AE[var_r31] = CharModelMotionCreate(arg0->unk_0A, lbl_1_rodata_F8[arg0->unk_0A][var_r31]); + } +} + +void fn_1_200C(M420DllPlayerStruct *arg0) +{ + s32 var_r30; + + for (var_r30 = 0; var_r30 <= 9; var_r30++) { + arg0->unk_C4[var_r30] = espEntry(0x330018, 0, 0); + espDispOff(arg0->unk_C4[var_r30]); + } + switch (arg0->unk_4C) { + case 0: + arg0->unk_D8 = espEntry(0x330019, 1, 0); + break; + case 1: + case 2: + case 3: + arg0->unk_D8 = espEntry(0x33001A, 1, 0); + break; + default: + break; + } + espDispOff(arg0->unk_D8); + espTPLvlSet(arg0->unk_D8, 0.8f); +} + +void fn_1_20EC(M420DllPlayerStruct *arg0) +{ + CharModelKill(arg0->unk_0A); +} + +void fn_1_211C(M420DllPlayerStruct *arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + CharModelMotionKill(arg0->unk_0A, arg0->unk_AE[var_r31]); + } +} + +void fn_1_2174(M420DllPlayerStruct *arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + espKill(arg0->unk_C4[var_r31]); + } +} + +void fn_1_21C8(M420DllPlayerStruct *arg0, Vec *arg1, s32 arg2, s32 arg3) +{ + arg0->unk_34 = *arg1; + arg0->unk_28 = arg0->unk_1C; + arg0->unk_DC = 0.0f; + arg0->unk_E0 = 1.0f / arg2; + arg0->unk_E4 = arg3; + arg0->unk_00_field2 = 1; +} + +void fn_1_2260(M420DllPlayerStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + + while (TRUE) { + for (var_r30 = 0; var_r30 < 1; var_r30++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } +} + +#define WAITMODECHG(player, maxTime) \ + do { \ + s32 time; \ + s32 mode; \ + for (time = 0; time < maxTime; time++) { \ + fn_1_355C(arg0); \ + mode = arg0->unk_48; \ + HuPrcVSleep(); \ + if (arg0->unk_48 != mode) { \ + return; \ + } \ + } \ + } while (0) + +void fn_1_22CC(M420DllPlayerStruct *arg0) +{ + float var_f31; + float var_f30; + M420DllUnkStruct2 *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + s32 var_r23; + s32 var_r21; + s32 var_r18; + + var_r30 = &lbl_1_data_50[arg0->unk_08]; + fn_1_3098(arg0); + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[8], 0.0f, 10.0f, 0x40000001); + arg0->unk_50 = 0; + arg0->unk_58 = var_r30->unk_00 + (fn_1_8944() % var_r30->unk_04); + + while (arg0->unk_50 < 6) { + fn_1_326C(arg0); + do { + if (arg0->unk_00_field0 == 0) { + var_r29 = fn_1_34AC(arg0); + } + else if (arg0->unk_58 > 0) { + arg0->unk_58--; + var_r29 = 0; + } + else if ((fn_1_8944() % 30) != 0) { + var_r29 = 1; + arg0->unk_58 = (var_r30->unk_08 - (var_r30->unk_0C / 2)) + (fn_1_8944() % var_r30->unk_0C); + } + else { + var_r29 = 2; + arg0->unk_58 = (var_r30->unk_08 - (var_r30->unk_0C / 2)) + (fn_1_8944() % var_r30->unk_0C); + } + switch (var_r29) { + case 0: + WAITMODECHG(arg0, 1); + break; + case 1: + var_f31 = 5.0f * arg0->unk_50; + var_f30 = 5.0f + var_f31; + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[5]); + Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30); + Hu3DMotionTimeSet(arg0->unk_AC, var_f31); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_REV); + arg0->unk_5C[arg0->unk_50++] = 1; + HuAudFXPlay(0x5F4); + fn_1_60F0(); + WAITMODECHG(arg0, 5); + break; + case 2: + if (arg0->unk_50 <= 0) { + WAITMODECHG(arg0, 1); + } + else { + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->unk_AC, HU3D_MOTATTR_REV); + fn_1_63EC(); + while (!Hu3DMotionEndCheck(arg0->unk_AC)) + WAITMODECHG(arg0, 1); + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + arg0->unk_5C[var_r28] = 0; + } + arg0->unk_50 = 0; + var_f31 = 0.0f; + var_f30 = 0.0f; + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[5]); + Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30); + Hu3DMotionTimeSet(arg0->unk_AC, var_f31); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_LOOP); + } + break; + default: + break; + } + } while (var_r29 == 0); + } + fn_1_326C(arg0); + WAITMODECHG(arg0, 5); + fn_1_3450(arg0); + arg0->unk_48 = 2; +} + +void fn_1_276C(M420DllPlayerStruct *arg0) +{ + s32 sp8[4]; + + float var_f31; + float var_f30; + + s32 var_r30; + M420DllUnkStruct2 *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 var_r18; + s32 var_r17; + + var_r29 = &lbl_1_data_50[arg0->unk_08]; + if (arg0->unk_4C == 1) { + HuAudFXPlay(0x5F1); + fn_1_669C(1); + fn_1_6554(); + WAITMODECHG(arg0, 15); + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[7], 0.0f, 6.0f, 0); + WAITMODECHG(arg0, 6); + fn_1_669C(0); + fn_1_36E4(arg0); + HuAudFXPlay(0x5F2); + } + fn_1_3098(arg0); + arg0->unk_50 = 0; + arg0->unk_58 = var_r29->unk_10 + (fn_1_8944() % var_r29->unk_14); + while (arg0->unk_50 < 1) { + fn_1_326C(arg0); + do { + if (arg0->unk_00_field0 == 0) { + var_r30 = fn_1_34AC(arg0); + } + else if (arg0->unk_58 > 0) { + arg0->unk_58--; + var_r30 = 0; + } + else if (fn_1_8944() % 30) { + var_r30 = 1; + } + else { + var_r30 = 2; + } + switch (var_r30) { + case 0: + WAITMODECHG(arg0, 1); + break; + + case 1: + if (arg0->unk_4C != 1) { + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[7], 0.0f, 6.0f, 0); + WAITMODECHG(arg0, 6); + fn_1_374C(arg0->unk_E8); + fn_1_36E4(arg0); + HuAudFXPlay(0x5F2); + } + arg0->unk_5C[arg0->unk_50++] = 1; + switch (arg0->unk_4C) { + case 1: + case 2: + var_f31 = 0.0f; + var_f30 = 34.0f; + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]); + Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30); + Hu3DMotionTimeSet(arg0->unk_AC, var_f31); + Hu3DMotionSpeedSet(arg0->unk_AC, 2.0f); + break; + + case 3: + arg0->unk_48 = 5; + return; + } + break; + + case 2: + switch (arg0->unk_4C) { + case 1: + var_f31 = 0.0f; + var_f30 = 10.0f; + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]); + Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30); + Hu3DMotionTimeSet(arg0->unk_AC, var_f31); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_PAUSE); + WAITMODECHG(arg0, 30); + var_f31 = 60.0f; + var_f30 = 70.0f; + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]); + Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30); + Hu3DMotionTimeSet(arg0->unk_AC, var_f31); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_PAUSE); + WAITMODECHG(arg0, 30); + break; + + case 2: + case 3: + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[9], 0.0f, 2.0f, 0); + WAITMODECHG(arg0, 60); + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 8.0f, 0); + break; + } + break; + } + } while (var_r30 == 0); + } + fn_1_326C(arg0); + WAITMODECHG(arg0, 18); + fn_1_3450(arg0); + arg0->unk_48 = 6; +} + +void fn_1_2CE0(M420DllPlayerStruct *arg0) +{ + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 30.0f, 0x40000001); + + WAITMODECHG(arg0, 35); + arg0->unk_48 = 0; +} + +void fn_1_2D7C(M420DllPlayerStruct *arg0) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + + var_f30 = 0.0f; + var_f31 = 30.0f; + Hu3DMotionStartEndSet(arg0->unk_AC, var_f30, var_f31); + Hu3DMotionTimeSet(arg0->unk_AC, var_f31); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->unk_AC, HU3D_MOTATTR_REV); + HuAudFXPlay(0x5F6); + fn_1_6268(); + fn_1_5AA8(0, 22.5f); + fn_1_1E64(arg0, 1, 0x1E); + // fn_1_2260? + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + arg0->unk_48 = 0; +} + +void fn_1_2EA8(M420DllPlayerStruct *arg0) +{ + s16 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + + fn_1_326C(arg0); + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[3], 0.0f, 1.0f, 0); + var_r30 = fn_1_6660(); + + Hu3DModelAttrReset(var_r30, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(var_r30, 0.0f); + { + s32 var_r30; + s32 var_r29; + for (var_r30 = 0; var_r30 < 24; var_r30++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } + HuAudFXPlay(0x5F7); + fn_1_636C(); + fn_1_1E64(arg0, 1, 0x1E); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE); + fn_1_5AA8(1, 22.5f); + { + s32 var_r30; + s32 var_r29; + for (var_r30 = 0; var_r30 < 20; var_r30++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } + HuAudFXPlay(0x5F8); + fn_1_3450(arg0); + fn_1_378C(arg0); + { + s32 var_r30; + s32 var_r29; + for (var_r30 = 0; var_r30 < 20; var_r30++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 30.0f, 0x40000001); + { + s32 var_r30; + s32 var_r29; + for (var_r30 = 0; var_r30 < 25; var_r30++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } + arg0->unk_48 = 6; +} + +void fn_1_3098(M420DllPlayerStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + for (var_r30 = 0; var_r30 < 0xA; var_r30++) { + arg0->unk_5C[var_r30] = 0; + } + arg0->unk_50 = 0; + switch (arg0->unk_4C) { + case 0: + for (var_r29 = 0; var_r29 < 6;) { + arg0->unk_84[var_r29] = fn_1_8944() % 7; + if (arg0->unk_84[var_r29] == 6) { + arg0->unk_84[var_r29] = 0; + } + if ((var_r29 <= 0) || (arg0->unk_84[var_r29] != arg0->unk_84[var_r29 - 1])) { + for (var_r30 = 0, var_r28 = 0; var_r30 < var_r29; var_r30++) { + if (arg0->unk_84[var_r29] == arg0->unk_84[var_r30]) { + var_r28++; + } + } + if (var_r28 < 2) { + var_r29++; + } + } + } + break; + case 1: + case 2: + case 3: + for (var_r30 = 0; var_r30 < 0xA; var_r30++) { + arg0->unk_84[1] = arg0->unk_84[0]; + arg0->unk_84[0] = fn_1_8944() % 7; + if (arg0->unk_84[0] == 6) { + arg0->unk_84[0] = 0; + } + if (arg0->unk_84[0] != arg0->unk_84[1]) { + break; + } + } + break; + default: + break; + } +} + +static const s32 lbl_1_rodata_2F8[4] = { 6, 1, 1, 1 }; + +void fn_1_326C(M420DllPlayerStruct *arg0) +{ + Vec sp14; + Vec sp8; + + s32 var_r30; + s16 var_r29; + s32 var_r28; + s32 var_r26; + + sp14 = arg0->unk_10; + sp14.y += 300.0f; + Hu3D3Dto2D(&sp14, 1, &sp8); + + var_r26 = arg0->unk_4C == 0 ? -6 : 0; + espPosSet(arg0->unk_D8, sp8.x + var_r26, 6.0f + sp8.y); + espDispOn(arg0->unk_D8); + var_r28 = lbl_1_rodata_2F8[arg0->unk_4C]; + sp8.x -= (var_r28 / 2) * 0x1E; + for (var_r30 = 0; var_r30 < var_r28; var_r30++) { + var_r29 = arg0->unk_C4[var_r30]; + if (arg0->unk_5C[var_r30] != 0) { + espBankSet(var_r29, arg0->unk_84[var_r30] + 7); + } + else { + espBankSet(var_r29, arg0->unk_84[var_r30]); + } + espPosSet(var_r29, sp8.x + var_r30 * 0x20, sp8.y); + espDispOn(var_r29); + } +} + +void fn_1_3450(M420DllPlayerStruct *arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + espDispOff(arg0->unk_C4[var_r31]); + } + espDispOff(arg0->unk_D8); +} + +static const s32 lbl_1_rodata_30C[7] = { 0x100, 0x200, 0x40, 0x20, 0x800, 0x400, 0x10 }; + +s32 fn_1_34AC(M420DllPlayerStruct *arg0) +{ + s32 var_r31; + u16 var_r30; + u16 var_r29; + + var_r31 = 0; + var_r30 = HuPadBtnDown[arg0->unk_0C] & 0xF60; + var_r29 = lbl_1_rodata_30C[arg0->unk_84[arg0->unk_50]]; + if (var_r30 != 0) { + var_r31 = 2; + } + if (((var_r30 & var_r29) != 0) && ((var_r30 & ~var_r29) == 0)) { + var_r31 = 1; + } + return var_r31; +} + +void fn_1_355C(M420DllPlayerStruct *arg0) +{ + float var_f31; + + arg0 = HuPrcCurrentGet()->user_data; + Hu3DModelPosSet(arg0->unk_AC, arg0->unk_10.x, arg0->unk_10.y, arg0->unk_10.z); + if (arg0->unk_00_field2) { + switch (arg0->unk_E4) { + case 0: + var_f31 = arg0->unk_DC; + break; + case 1: + var_f31 = sind((90.0f * arg0->unk_DC)); + var_f31 *= var_f31; + break; + } + arg0->unk_1C.x = arg0->unk_28.x + (var_f31 * (arg0->unk_34.x - arg0->unk_28.x)); + arg0->unk_1C.y = arg0->unk_28.y + (var_f31 * (arg0->unk_34.y - arg0->unk_28.y)); + arg0->unk_1C.z = arg0->unk_28.z + (var_f31 * (arg0->unk_34.z - arg0->unk_28.z)); + if ((arg0->unk_DC += arg0->unk_E0) >= 1.0f) { + arg0->unk_1C = arg0->unk_34; + arg0->unk_00_field2 = 0; + } + } + Hu3DModelRotSet(arg0->unk_AC, arg0->unk_1C.x, arg0->unk_1C.y, arg0->unk_1C.z); +} + +void fn_1_36E4(M420DllPlayerStruct *arg0) +{ + Hu3DModelHookSet(arg0->unk_AC, "test11_tex_we-itemhook-r", fn_1_6660()); + arg0->unk_00_field1 = 1; + fn_1_1E64(arg0, 1, 0x14); +} + +void fn_1_374C(M420DllPlayerStruct *arg0) +{ + Hu3DModelHookReset(arg0->unk_AC); + arg0->unk_00_field1 = 0; +} + +void fn_1_378C(M420DllPlayerStruct *arg0) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + + if (arg0->unk_00_field1) { + Hu3DModelObjMtxGet(arg0->unk_AC, "test11_tex_we-itemhook-r", sp20); + Hu3DModelHookObjReset(arg0->unk_AC, "test11_tex_we-itemhook-r"); + Hu3DMtxTransGet(sp20, &sp14); + Hu3DMtxRotGet(sp20, &sp8); + Hu3DModelPosSetV(fn_1_6660(), &sp14); + Hu3DModelRotSetV(fn_1_6660(), &sp8); + } + HuPrcChildCreate(fn_1_3854, 0x64, 0x2000, 0, lbl_1_bss_4); + arg0->unk_00_field1 = 0; +} + +char lbl_1_data_135[1] = { 0 }; + +void fn_1_3854(void) +{ + Mtx sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + float var_f31; + s16 var_r31; + + var_r31 = fn_1_6660(); + Hu3DModelObjMtxGet(var_r31, lbl_1_data_135, sp2C); + Hu3DMtxRotGet(sp2C, &sp8); + Hu3DMtxTransGet(sp2C, &sp20); + var_f31 = 0.0f; + + while (var_f31 < 1.0f) { + sp14.x = cosd((90.0f * var_f31)); + sp14.y = sp14.z = sp14.x; + Hu3DModelScaleSet(var_r31, sp14.x, sp14.y, sp14.z); + var_f31 += 0.05f; + HuPrcVSleep(); + } + fn_1_6728(); + sp14.x = sp14.y = sp14.z = 1.0f; + Hu3DModelScaleSet(var_r31, sp14.x, sp14.y, sp14.z); + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3970(M420DllPlayerStruct *arg0) +{ + Vec sp38; + + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + if (arg0->unk_00_field1) { + fn_1_378C(arg0); + } + else if (arg0->unk_4C == 1) { + fn_1_378C(arg0); + } + fn_1_3450(arg0); + if (arg0->unk_4C == 0) { + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk_AC, HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->unk_AC, HU3D_MOTATTR_REV); + fn_1_63EC(); + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[6], 0.0f, 32.0f, 0); + Hu3DMotionShiftStartEndSet(arg0->unk_AC, 0.0f, 59.0f); + sp38 = arg0->unk_1C; + sp38.y = 0.0f; + fn_1_21C8(arg0, &sp38, 60, 1); + } + for (var_r27 = 0; var_r27 < 0x3C; var_r27++) { + fn_1_355C(arg0); + var_r25 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r25) { + return; + } + } + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 16.0f, 0); + for (var_r26 = 0; var_r26 < 0x3C; var_r26++) { + fn_1_355C(arg0); + var_r24 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r24) { + return; + } + } + arg0->unk_48 = 0; +} + +void fn_1_3F94(M420DllPlayerStruct *arg0) +{ + Vec sp8; + s32 var_r29; + s32 var_r28; + + if (arg0->unk_4C != 0) { + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[6]); + Hu3DMotionStartEndSet(arg0->unk_AC, 60.0f, 119.0f); + Hu3DMotionTimeSet(arg0->unk_AC, 60.0f); + sp8 = arg0->unk_1C; + sp8.y = lbl_1_rodata_258[arg0->unk_4C][1].y; + fn_1_21C8(arg0, &sp8, 60, 1); + while (arg0->unk_00_field2 != 0) { + for (var_r28 = 0; var_r28 < 1; var_r28++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 4.0f, 0); + } + arg0->unk_48 = 0; +} + +void fn_1_4294(M420DllPlayerStruct *arg0) +{ + Vec sp8; + s32 var_r29; + s32 var_r28; + + if (arg0->unk_4C != 0) { + CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[6]); + Hu3DMotionStartEndSet(arg0->unk_AC, 0.0f, 59.0f); + sp8 = arg0->unk_1C; + sp8.y = 0.0f; + fn_1_21C8(arg0, &sp8, 60, 1); + while (arg0->unk_00_field2 != 0) { + for (var_r28 = 0; var_r28 < 1; var_r28++) { + fn_1_355C(arg0); + var_r29 = arg0->unk_48; + HuPrcVSleep(); + if (arg0->unk_48 != var_r29) { + return; + } + } + } + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 8.0f, 0); + } + arg0->unk_48 = 0; +} + +void fn_1_4574(M420DllPlayerStruct *arg0) +{ + float var_f31; + M420DllPlayerStruct *var_r31; + s32 var_r29; + s32 var_r28; + + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[1], 0.0f, 4.0f, 0); + fn_1_2260(arg0); +} + +void fn_1_476C(M420DllPlayerStruct *arg0) +{ + float var_f31; + M420DllPlayerStruct *var_r31; + s32 var_r29; + s32 var_r28; + + CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[2], 0.0f, 4.0f, 0); + fn_1_2260(arg0); +} diff --git a/src/REL/m420dll/rand.c b/src/REL/m420dll/rand.c new file mode 100644 index 00000000..883af017 --- /dev/null +++ b/src/REL/m420dll/rand.c @@ -0,0 +1,11 @@ +#include "dolphin/types.h" + +u32 lbl_1_bss_A48; + +void fn_1_8934 (u32 seed) { + lbl_1_bss_A48 = seed; +} + +s32 fn_1_8944(void) { + return (lbl_1_bss_A48 = (lbl_1_bss_A48 * 0x41C64E6D) + 0x3039) / 65536 & 0x7FFF; +} \ No newline at end of file diff --git a/src/REL/m421Dll/main.c b/src/REL/m421Dll/main.c new file mode 100644 index 00000000..8ab50b74 --- /dev/null +++ b/src/REL/m421Dll/main.c @@ -0,0 +1,904 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/gamework.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m421Dll.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + +typedef struct M421DllWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + s32 unk_10; + u32 unk_14; + u32 unk_18; + u32 unk_1C; + u32 unk_20; + u32 unk24; + u32 unk_28; + u32 unk_2C; + s32 unk_30[4]; + s32 unk_40[4]; + s32 unk_50[4]; + u32 unk_60; + u32 unk_64; + u32 unk_68; + u32 unk_6C; + s32 unk_70; +} M421DllWork; /* size = 0x74 */ + +void fn_1_10EC(omObjData *object); +void fn_1_142C(omObjData *object); +void fn_1_1850(omObjData *object); +void fn_1_1C90(omObjData *object); +omObjFunc fn_1_213C(Process *process, omObjData *object); +void fn_1_21AC(omObjData *object); +omObjFunc fn_1_2A28(Process *process, omObjData *object); +void fn_1_2BB8(omObjData *object); +void fn_1_3020(Process *process); +void fn_1_30D0(omObjData *object); +void fn_1_3334(omObjData *object); +void fn_1_335C(omObjData *object); +void fn_1_38FC(ModelData *model, Mtx mtx); +void fn_1_3B50(u32 arg0); +M421DllCameraStruct *fn_1_3B78(s32 arg0); +M421DllCameraStruct *fn_1_3CB0(u32 arg0); +float fn_1_4478(float arg8, float arg9, float argA); +void fn_1_4A0(omObjData *object); +void fn_1_784(omObjData *object); +void fn_1_8B8(omObjData *object); +void fn_1_CBC(omObjData *object); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_4C[3] = { + { 0.0f, 200.0f, -50.0f }, + { 0.0f, 200.0f, -50.0f }, + { 0.0f, 200.0f, -50.0f }, +}; +Vec lbl_1_data_70[3] = { + { -37.5f, 0.0f, 1500.0f }, + { -37.5f, 0.0f, 1500.0f }, + { -37.5f, 0.0f, 2300.0f }, +}; +s32 lbl_1_data_94[3] = { 0xF0, 0x1E, 0 }; +GXColor lbl_1_data_A0 = { 0, 0, 0, 0 }; + +Process *lbl_1_bss_28; +omObjData *lbl_1_bss_24; +omObjData *lbl_1_bss_20; +// M421DllCameraStruct +omObjData *lbl_1_bss_1C; +s16 lbl_1_bss_18; +s16 lbl_1_bss_12[3]; +s16 lbl_1_bss_10; +s16 lbl_1_bss_E; +s16 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Mtx sp2C; + Vec sp20 = { 0.0f, 0.0f, 0.0f }; + Vec sp14 = { 0.0f, 0.0f, -1.0f }; + Vec sp8; + Process *process; + LightData *lightData; + + lbl_1_bss_8 = 0; + HuAudSndGrpSet(0x2E); + HuAudFXListnerSetEX(&sp20, &sp14, 11200.0f, 4166.6665f, 0.0f, 300.0f, 0.0f); + lbl_1_bss_4 = lbl_1_bss_0 = -1; + lbl_1_bss_18 = -1; + lbl_1_data_28.x = 200.0f; + lbl_1_data_28.y = 1200.0f; + lbl_1_data_28.z = 160.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 0.0f; + Hu3DShadowCreate(22.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_12[0] = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_12[0]); + lightData = &Hu3DGlobalLight[lbl_1_bss_12[0]]; + lightData->unk_00 |= 0x8000; + lbl_1_data_18.x = 1.0f; + lbl_1_data_18.y = 0.0f; + lbl_1_data_18.z = 4200.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + mtxRot(sp2C, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f); + MTXMultVec(sp2C, &sp8, &lbl_1_data_28); + Hu3DGLightPosAimSetV(lbl_1_bss_12[0], &lbl_1_data_28, &lbl_1_data_40); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_10 = lbl_1_bss_E = lbl_1_bss_C = -1; + process = omInitObjMan(0x32, 0x2000); + lbl_1_bss_28 = process; + omGameSysInit(process); + fn_1_3020(process); + lbl_1_bss_24 = omAddObjEx(process, 0xA, 0, 0, -1, fn_1_4A0); + fn_1_B15C(process); + fn_1_4648(process); +} + +void fn_1_4A0(omObjData *object) +{ + M421DllWork *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M421DllWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M421DllWork)); + work->unk_00 = 0; + work->unk_04 = 0; + work->unk_0C = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_28 = 0; + work->unk_2C = 0; + work->unk_08 = 0; + work->unk_64 = 2; + work->unk_50[0] = work->unk_50[1] = work->unk_50[2] = work->unk_50[3] = -1; + work->unk_68 = 0; + work->unk_70 = 0; + object->func = fn_1_8B8; +} + +void fn_1_578(omObjData *object) +{ + Vec sp14; + Vec sp8; + M421DllCameraStruct *var_r31; + + M421DllWork *work = object->data; + work->unk_04++; + work->unk_10++; + work->unk_18++; + work->unk_2C++; + if ((omSysExitReq != 0) && (work->unk_00 != 5)) { + work->unk_00 = 4; + fn_1_784(object); + } + var_r31 = fn_1_3B78(1); + sp8.x = -(sind(var_r31->unk_28.y) * cosd(var_r31->unk_28.x)); + sp8.y = -(-sind(var_r31->unk_28.x)); + sp8.z = -(cosd(var_r31->unk_28.y) * cosd(var_r31->unk_28.x)); + sp14.x = var_r31->unk_1C.x - (sp8.x * var_r31->unk_34); + sp14.y = var_r31->unk_1C.y - (sp8.y * var_r31->unk_34); + sp14.z = var_r31->unk_1C.z - (sp8.z * var_r31->unk_34); + HuAudFXListnerUpdate(&sp14, &sp8); +} + +void fn_1_784(omObjData *object) +{ + M421DllWork *work = object->data; + + if (work->unk_08 == 0) { + switch (work->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + work->unk_00 = 1; + work->unk_10 = 0; + object->func = fn_1_213C(lbl_1_bss_28, object); + break; + case 1: + work->unk_00 = 2; + work->unk_18 = 0; + object->func = fn_1_142C; + break; + case 2: + work->unk_00 = 3; + work->unk_2C = 0; + object->func = fn_1_2A28(lbl_1_bss_28, object); + break; + case 3: + case 4: + work->unk_08 = 1; + work->unk_00 = 5; + object->func = fn_1_CBC; + break; + case 5: + default: + work->unk_00 = 5; + object->func = fn_1_10EC; + } + work->unk_04 = 0; + } +} + +void fn_1_8B8(omObjData *object) +{ + fn_1_578(object); + fn_1_784(object); +} + +void fn_1_CBC(omObjData *object) +{ + M421DllWork *work = object->data; + fn_1_578(object); + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + work->unk_08 = 0; + fn_1_784(object); + } +} + +void fn_1_10EC(omObjData *object) +{ + fn_1_578(object); + if (WipeStatGet() == 0) { + fn_1_48B0(); + fn_1_B1BC(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_142C(omObjData *object) +{ + M421DllWork *work = object->data; + fn_1_578(object); + switch (work->unk_14) { + case 0: + work->unk_1C = 0x2D; + work->unk_20 = 0x3C; + lbl_1_bss_10 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_10, 320.0f, 240.0f); + lbl_1_bss_18 = -1; + work->unk_14 = 1; + work->unk_18 = 0; + break; + case 1: + if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_10) & 0x10) != 0)) { + lbl_1_bss_4 = HuAudSeqPlay(0x48); + } + if (MGSeqStatGet(lbl_1_bss_10) == 0 && (work->unk_08 == 0)) { + work->unk_14 = 2; + work->unk_18 = 0; + object->func = fn_1_1850; + } + break; + } +} + +void fn_1_1850(omObjData *object) +{ + M421DllWork *work = object->data; + s32 var_r26 = 0; + fn_1_578(object); + if (--work->unk_20 == 0) { + work->unk_20 = 0x3C; + work->unk_1C--; + if ((work->unk_1C == 0) && (work->unk_64 == 2)) { + work->unk_64 = 1; + var_r26 = 1; + } + } + if (lbl_1_bss_18 < 0) { + lbl_1_bss_18 = MGSeqCreate(1, work->unk_1C, -1, -1); + } + MGSeqParamSet(lbl_1_bss_18, 1, work->unk_1C); + if (work->unk_64 != 2) { + var_r26 = 1; + } + if (var_r26 != 0) { + lbl_1_bss_E = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_E, 320.0f, 240.0f); + HuAudSeqFadeOut(lbl_1_bss_4, 0x64); + work->unk_14 = 3; + work->unk_18 = 0; + if (work->unk_08 == 0) { + object->func = fn_1_1C90; + } + } +} + +void fn_1_1C90(omObjData *object) +{ + M421DllWork *work = object->data; + s32 var_r25 = 0; + if (lbl_1_bss_18 >= 0) { + MGSeqParamSet(lbl_1_bss_18, 2, -1); + lbl_1_bss_18 = -1; + } + fn_1_578(object); + if (work->unk_14 == 3) { + var_r25 = 1; + if ((MGSeqStatGet(lbl_1_bss_E) == 0) && (work->unk_68 == 0x1111) && (var_r25 != 0)) { + work->unk_14 = 4; + work->unk_18 = 0; + } + } + else { + work->unk_14 = 5; + work->unk_18 = 0; + fn_1_784(object); + } +} + +omObjFunc fn_1_213C(Process *process, omObjData *object) +{ + M421DllCameraStruct *var_r31; + + object->work[0] = object->work[1] = 0; + fn_1_3B50(1); + var_r31 = fn_1_3CB0(0); + var_r31->unk_84 = 1.0f; + var_r31->unk_94 = 0; + return fn_1_21AC; +} + +void fn_1_21AC(omObjData *object) +{ + Vec sp20; + float var_f31; + M421DllCameraStruct *var_r30; + M421DllWork *work; + + work = object->data; + fn_1_578(object); + work->unk_0C = 1; + object->work[0]++; + var_f31 = (float)object->work[0] / lbl_1_data_94[object->work[1]]; + VECSubtract(&lbl_1_data_4C[object->work[1] + 1], &lbl_1_data_4C[object->work[1]], &sp20); + VECScale(&sp20, &sp20, var_f31); + VECAdd(&lbl_1_data_4C[object->work[1]], &sp20, &sp20); + Center.x = sp20.x; + Center.y = sp20.y; + Center.z = sp20.z; + VECSubtract(&lbl_1_data_70[object->work[1] + 1], &lbl_1_data_70[object->work[1]], &sp20); + VECScale(&sp20, &sp20, var_f31); + VECAdd(&lbl_1_data_70[object->work[1]], &sp20, &sp20); + CRot.x = sp20.x; + CRot.y = sp20.y; + CRot.z = 0.0f; + CZoom = sp20.z; + var_r30 = fn_1_3CB0(0); + var_r30->unk_1C = Center; + var_r30->unk_28 = CRot; + var_r30->unk_34 = CZoom; + var_r30->unk_94++; + if (var_r30->unk_94 > 180.0f) { + var_r30->unk_84 -= 0.025000002f; + if (var_r30->unk_84 < 0.0f) { + var_r30->unk_84 = 0.0f; + } + var_r30->unk_1C.x += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f); + var_r30->unk_1C.y += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f); + var_r30->unk_1C.z += var_r30->unk_84 * ((0.02f * frandmod(0x3E8)) - 10.0f); + } + if (var_f31 >= 1.0f) { + object->work[0] = 0; + object->work[1]++; + if (lbl_1_data_94[object->work[1]] == 0) { + work->unk_0C = 2; + fn_1_784(object); + } + } +} + +omObjFunc fn_1_2A28(Process *process, omObjData *object) +{ + M421DllCameraStruct *var_r31; + s32 var_r30; + M421DllWork *var_r29; + s32 var_r28; + + var_r29 = object->data; + var_r28 = 1; + var_r31 = fn_1_3CB0(0); + if (var_r29->unk_64 == 1) { + var_r28 = 0; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r29->unk_50[var_r30] = -1; + if ((var_r29->unk_40[var_r30] == 0) == var_r28) { + var_r29->unk_50[var_r30] = var_r29->unk_30[var_r30]; + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r29->unk_50[var_r30] >= 0) { + GWPlayerCoinWinAdd(var_r30, 10); + } + } + var_r31->unk_54 = 0.0f; + var_r31->unk_58 = 150.0f; + var_r31->unk_5C = 0.0f; + var_r31->unk_60 = -30.0f; + var_r31->unk_64 = 0.0f; + var_r31->unk_68 = 1000.0f; + var_r31->unk_84 = 0.0f; + return fn_1_2BB8; +} + +void fn_1_2BB8(omObjData *var_r29) +{ + M421DllCameraStruct *var_r31; + M421DllWork *var_r28; + + var_r28 = var_r29->data; + var_r31 = fn_1_3CB0(0); + fn_1_578(var_r29); + var_r31->unk_84 += 0.0016666668f; + if (var_r31->unk_84 > 0.1f) { + var_r31->unk_84 = 0.1f; + } + var_r31->unk_1C.y += var_r31->unk_84 * (var_r31->unk_58 - var_r31->unk_1C.y); + var_r31->unk_1C.z += var_r31->unk_84 * (var_r31->unk_5C - var_r31->unk_1C.z); + var_r31->unk_28.x = fn_1_4478(var_r31->unk_28.x, var_r31->unk_60, var_r31->unk_84); + var_r31->unk_34 += var_r31->unk_84 * (var_r31->unk_68 - var_r31->unk_34); + if (var_r28->unk_6C == 0x1111) { + var_r28->unk_28 = 1; + if (lbl_1_bss_0 < 0) { + lbl_1_bss_0 = HuAudSStreamPlay(1); + } + if (lbl_1_bss_C < 0) { + lbl_1_bss_C = MGSeqCreate(5, 3, var_r28->unk_50[0], var_r28->unk_50[1], var_r28->unk_50[2], var_r28->unk_50[3]); + return; + } + if ((MGSeqStatGet(lbl_1_bss_C) == 0) && (var_r28->unk_2C >= 210.0f)) { + var_r28->unk_28 = 2; + fn_1_784(var_r29); + } + } +} + +void fn_1_3020(Process *process) +{ + Hu3DCameraCreate(0x1F); + lbl_1_bss_20 = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_20->work[0] = 5; + lbl_1_bss_1C = omAddObjEx(process, 0xC, 1, 0, -1, fn_1_30D0); + lbl_1_bss_1C->work[0] = 0; +} + +void fn_1_30D0(omObjData *object) +{ + UnkM421DllStruct sp1C[5] = { + { 320.0f, 240.0f, 640.0f, 480.0f }, + { 160.0f, 120.0f, 320.0f, 240.0f }, + { 160.0f, 360.0f, 320.0f, 240.0f }, + { 480.0f, 120.0f, 320.0f, 240.0f }, + { 480.0f, 360.0f, 320.0f, 240.0f }, + }; + s32 sp8[5] = { 1, 2, 4, 8, 16 }; + M421DllCameraStruct *var_r31; + s32 var_r29; + M421DllCameraStruct *var_r28; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 10 * sizeof(M421DllCameraStruct), MEMORY_DEFAULT_NUM); + var_r28 = object->data; + memset(var_r28, 0, 10 * sizeof(M421DllCameraStruct)); + object->model[0] = Hu3DHookFuncCreate(fn_1_38FC); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelCameraSet(object->model[0], 0x1E); + for (var_r31 = var_r28, var_r29 = 0; var_r29 < 5; var_r29++, var_r31++) { + var_r31->unk_00 = 1; + var_r31->unk_04 = var_r29 * 0x64; + var_r31->unk_10 = 41.5f; + var_r31->unk_14 = 100.0f; + var_r31->unk_18 = 5500.0f; + var_r31->unk_1C.x = 0.0f; + var_r31->unk_1C.y = 0.0f; + var_r31->unk_1C.z = 0.0f; + var_r31->unk_28.x = -15.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_34 = 1000.0f; + var_r31->unk_40 = 1.0f; + var_r31->unk_44.unk_00 = sp1C[var_r29].unk_00; + var_r31->unk_44.unk_04 = sp1C[var_r29].unk_04; + var_r31->unk_44.unk_08 = sp1C[var_r29].unk_08; + var_r31->unk_44.unk_0C = sp1C[var_r29].unk_0C; + var_r31->unk_3C = var_r31->unk_0C = sp8[var_r29]; + var_r31->unk_08 = var_r29; + var_r31->unk_38 = var_r29; + } + object->work[1] = 0; + object->work[0]++; + fn_1_335C(object); + object->func = fn_1_3334; +} + +void fn_1_3334(omObjData *object) +{ + fn_1_335C(object); +} + +void fn_1_335C(omObjData *object) +{ + float var_f31; + M421DllCameraStruct *var_r31; + s32 var_r30; + s32 var_r29; + M421DllCameraStruct *var_r27; + u32 var_r26; + u32 var_r25; + s32 var_r24; + u32 var_r23; + u32 var_r22; + u32 var_r21; + + var_r27 = object->data; + { + s32 sp40[4] = { 2, 4, 8, 16 }; + u32 sp30[4]; + s32 sp20[4]; + float sp10[4]; + float sp8[2]; + var_r24 = 0; + var_r26 = 0; + memcpy(&var_r27[5], var_r27, 5 * sizeof(M421DllCameraStruct)); + switch (object->work[1]) { + case 0: + break; + case 1: + var_r26 |= 1; + break; + case 2: + var_r26 |= 1; + case 3: + var_r24 = 1; + case 4: + var_r26 |= 0x1E; + break; + } + if (var_r24 != 0) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp30[var_r30] = var_r27[var_r30 + 6].unk_04; + sp20[var_r30] = var_r30; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + for (var_r29 = var_r30 + 1; var_r29 < 4; var_r29++) { + if ((var_r30 != var_r29) && (sp30[var_r30] > sp30[var_r29])) { + var_r25 = sp30[var_r30]; + sp30[var_r30] = sp30[var_r29]; + sp30[var_r29] = var_r25; + var_r25 = sp20[var_r30]; + sp20[var_r30] = sp20[var_r29]; + sp20[var_r29] = var_r25; + } + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27[sp20[var_r30] + 6].unk_3C = sp40[var_r30]; + var_r27[sp20[var_r30] + 6].unk_38 = var_r30 + 1; + } + + for (var_r31 = &var_r27[5], var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_00 == 0) || ((var_r26 & var_r31->unk_0C) == 0)) { + Hu3DCamera[var_r31->unk_38].fov = -1.0f; + } + else { + var_f31 = 1.2f * ((var_r31->unk_44.unk_08 / 640.0f) / (var_r31->unk_44.unk_0C / 480.0f)); + sp10[2] = var_r31->unk_44.unk_08 * var_r31->unk_40; + sp10[3] = var_r31->unk_44.unk_0C * var_r31->unk_40; + Hu3DCameraPerspectiveSet(var_r31->unk_3C, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18, var_f31); + Hu3DCameraViewportSet(var_r31->unk_3C, var_r31->unk_44.unk_00 - (0.5f * sp10[2]), var_r31->unk_44.unk_04 - (0.5f * sp10[3]), sp10[2], + sp10[3], 0.0f, 1.0f); + sp10[0] = var_r31->unk_44.unk_00 - (0.5f * sp10[2]); + sp10[1] = var_r31->unk_44.unk_04 - (0.5f * sp10[3]); + sp8[0] = var_r31->unk_44.unk_00 + (0.5f * sp10[2]); + sp8[1] = var_r31->unk_44.unk_04 + (0.5f * sp10[3]); + if (sp10[0] < 0.0f) { + sp10[0] = 0.0f; + } + if (sp10[1] < 0.0f) { + sp10[1] = 0.0f; + } + if (sp8[0] > 640.0f) { + sp8[0] = 640.0f; + } + if (sp8[1] > 480.0f) { + sp8[1] = 480.0f; + } + sp8[0] -= sp10[0]; + sp8[1] -= sp10[1]; + var_r21 = sp8[1]; + var_r22 = sp8[0]; + var_r23 = sp10[1]; + Hu3DCameraScissorSet(var_r31->unk_3C, sp10[0], var_r23, var_r22, var_r21); + var_r29 = var_r31->unk_38; + CenterM[var_r29].x = var_r31->unk_1C.x; + CenterM[var_r29].y = var_r31->unk_1C.y; + CenterM[var_r29].z = var_r31->unk_1C.z; + CRotM[var_r29].x = var_r31->unk_28.x; + CRotM[var_r29].y = var_r31->unk_28.y; + CRotM[var_r29].z = var_r31->unk_28.z; + CZoomM[var_r29] = var_r31->unk_34; + } + } + } +} + +void fn_1_38FC(ModelData *model, Mtx mtx) +{ + Mtx spC; + float var_f31; + float var_f30; + float var_f29; + + MTXIdentity(spC); + GXLoadPosMtxImm(spC, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, lbl_1_data_A0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + var_f31 = 4125.0f; + var_f30 = 2750.0f; + var_f29 = 5494.5f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-var_f31, var_f30, -var_f29); + GXPosition3f32(var_f31, var_f30, -var_f29); + GXPosition3f32(var_f31, -var_f30, -var_f29); + GXPosition3f32(-var_f31, -var_f30, -var_f29); +} + +void fn_1_3B50(u32 arg0) +{ + lbl_1_bss_1C->work[1] = arg0; +} + +u32 fn_1_3B64(void) +{ + return lbl_1_bss_1C->work[1]; +} + +M421DllCameraStruct *fn_1_3B78(s32 arg0) +{ + M421DllCameraStruct *var_r31; + s32 var_r30; + M421DllCameraStruct *var_r29; + + var_r29 = lbl_1_bss_1C->data; + for (var_r31 = var_r29, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_0C & arg0) != 0) { + break; + } + } + if (var_r30 >= 5) { + OSReport("M421:Camera Flag Error!!\n"); + return NULL; + } + return var_r31; +} + +M421DllCameraStruct *fn_1_3C14(s32 arg0) +{ + M421DllCameraStruct *var_r31; + s32 var_r30; + M421DllCameraStruct *var_r29; + + var_r29 = lbl_1_bss_1C->data; + for (var_r31 = &var_r29[5], var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_0C & arg0) != 0) { + break; + } + } + if (var_r30 >= 5) { + OSReport("M421:Camera Flag Error!!\n"); + return NULL; + } + return var_r31; +} + +M421DllCameraStruct *fn_1_3CB0(u32 arg0) +{ + M421DllCameraStruct *var_r31 = lbl_1_bss_1C->data; + if (arg0 >= 5) { + OSReport("M421:Camera No. Error!!\n"); + return NULL; + } + return &var_r31[arg0]; +} + +M421DllCameraStruct *fn_1_3D18(u32 arg0) +{ + M421DllCameraStruct *var_r31 = lbl_1_bss_1C->data; + if (arg0 >= 5) { + OSReport("M421:Camera No. Error!!\n"); + return NULL; + } + return &var_r31[arg0 + 5]; +} + +void fn_1_3D84(s32 arg0, s32 arg1) +{ + M421DllCameraStruct *var_r31; + s32 var_r30; + s32 var_r29; + M421DllCameraStruct *var_r28; + M421DllCameraStruct *var_r27; + + var_r29 = 0; + if (arg0 >= 0) { + var_r27 = lbl_1_bss_1C->data; + var_r28 = &var_r27[5]; + for (var_r31 = var_r28, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_0C & arg1) != 0) { + var_r29 |= var_r31->unk_3C; + } + } + Hu3DModelCameraSet(arg0, var_r29); + } +} + +s32 fn_1_3E1C(void) +{ + return ((M421DllWork *)lbl_1_bss_24->data)->unk_00; +} + +u32 fn_1_3E34(void) +{ + return ((M421DllWork *)lbl_1_bss_24->data)->unk_0C; +} + +u32 fn_1_3E4C(void) +{ + return ((M421DllWork *)lbl_1_bss_24->data)->unk_14; +} + +u32 fn_1_3E64(void) +{ + return ((M421DllWork *)lbl_1_bss_24->data)->unk_28; +} + +s32 fn_1_3E7C(s32 arg0) +{ + M421DllWork *work = lbl_1_bss_24->data; + + if (work->unk_64 != 2) { + return 0; + } + work->unk_60 |= (1 << ((arg0 & 3) * 4)); + if (((work->unk_60 & 0x1110) == 0x1110) && (work->unk_64 == 2)) { + work->unk_64 = 0; + } + return 1; +} + +s32 fn_1_3EF8(s32 arg0) +{ + M421DllWork *work = lbl_1_bss_24->data; + return work->unk_50[arg0]; +} + +void fn_1_3F28(s32 arg0, s32 arg1, s32 arg2) +{ + M421DllWork *work = lbl_1_bss_24->data; + arg0 &= 3; + work->unk_40[arg0] = arg1; + work->unk_30[arg0] = arg2; +} + +void fn_1_3F68(s32 arg0) +{ + ((M421DllWork *)lbl_1_bss_24->data)->unk_68 |= (1 << ((arg0 & 7) * 4)); +} + +void fn_1_3F98(s32 arg0) +{ + ((M421DllWork *)lbl_1_bss_24->data)->unk_6C |= (1 << ((arg0 & 3) * 4)); +} + +void fn_1_3FC8(s32 arg0) +{ + ((M421DllWork *)lbl_1_bss_24->data)->unk_70 |= (1 << ((arg0 & 3) * 4)); +} + +s32 fn_1_3FF8(void) +{ + return MGSeqStatGet(lbl_1_bss_E) == 0; +} + +void fn_1_4030(Vec *sp8, Vec *var_r31) +{ + Vec sp10; + float var_f30; + float var_f29; + + VECSubtract(var_r31, sp8, &sp10); + Center = *var_r31; + CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z))); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp10); +} + +void fn_1_4238(float arg8, float arg9, float argA, float argB, float argC, float argD) +{ + Vec sp3C; + Vec sp30; + Vec sp24; + + sp3C.x = arg8; + sp3C.y = arg9; + sp3C.z = argA; + sp30.x = argB; + sp30.y = argC; + sp30.z = argD; + VECSubtract(&sp30, &sp3C, &sp24); + Center = sp30; + CRot.x = atan2d(sp24.y, sqrtf((sp24.x * sp24.x) + (sp24.z * sp24.z))); + CRot.y = atan2d(-sp24.x, -sp24.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp24); +} + +float fn_1_4478(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_4594(float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} diff --git a/src/REL/m421Dll/map.c b/src/REL/m421Dll/map.c new file mode 100644 index 00000000..5bd4e611 --- /dev/null +++ b/src/REL/m421Dll/map.c @@ -0,0 +1,54 @@ +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "REL/m421Dll.h" + +void fn_1_B1C0(omObjData *object); +void fn_1_B398(omObjData *object); + +omObjData *lbl_1_bss_58; + +void fn_1_B15C(Process *work) +{ + omObjData *object = omAddObjEx(work, 0x1E, 6, 0, -1, fn_1_B1C0); + lbl_1_bss_58 = object; + object->work[0] = 0; +} + +void fn_1_B1BC(void) { } + +void fn_1_B1C0(omObjData *var_r31) +{ + omSetTra(var_r31, 0.0f, 0.0f, 0.0f); + var_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x02)); + Hu3DModelLayerSet(var_r31->model[0], 1); + Hu3DModelShadowMapSet(var_r31->model[0]); + + var_r31->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x00)); + Hu3DModelLayerSet(var_r31->model[1], 1); + + var_r31->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x01)); + Hu3DModelLayerSet(var_r31->model[2], 5); + + var_r31->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x05)); + Hu3DModelLayerSet(var_r31->model[3], 1); + Hu3DModelAttrSet(var_r31->model[3], HU3D_MOTATTR_LOOP); + + var_r31->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x03)); + Hu3DModelLayerSet(var_r31->model[4], 5); + Hu3DModelAttrSet(var_r31->model[4], HU3D_MOTATTR_LOOP); + + var_r31->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M421, 0x04)); + Hu3DModelLayerSet(var_r31->model[5], 5); + Hu3DMotionTimeSet(var_r31->model[5], 0.0f); + var_r31->work[0] = 0; + var_r31->work[1] = 0; + var_r31->func = fn_1_B398; +} + +void fn_1_B398(omObjData *object) { } + +void fn_1_B39C(void) +{ + Hu3DMotionTimeSet(lbl_1_bss_58->model[5], 0.0f); +} diff --git a/src/REL/m421Dll/player.c b/src/REL/m421Dll/player.c new file mode 100644 index 00000000..ce14a94c --- /dev/null +++ b/src/REL/m421Dll/player.c @@ -0,0 +1,1828 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "string.h" + +#include "REL/m421Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +typedef struct M421DllPlayerWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + u32 unk_10; + s32 unk_14; + float unk_18; + float unk_1C; + s32 unk_20; + s32 unk_24; + s32 unk_28; + s32 unk_2C; + char unk30[0x4]; + s32 unk_34; + s32 unk_38; + s32 unk_3C; + char unk40[4]; + u16 unk_44; + u32 unk_48; + char unk4C[0x4]; + s16 unk_50; + char unk52[6]; + float unk_58; + float unk_5C; + float unk_60; + float unk_64; + float unk_68; + s32 unk_6C; + u32 unk_70; + u32 unk_74; + s32 unk_78; + char unk7C[4]; + float unk_80; + float unk_84; + float unk_88; + float unk_8C; + float unk_90; + float unk_94; + float unk_98; + float unk_9C; + float unk_A0; + float unk_A4; + float unk_A8; + float unk_AC; + float unk_B0; + float unk_B4; + u32 unk_B8; + u32 unk_BC; + u32 unk_C0; + u32 unk_C4; + s32 unk_C8; + Vec unk_CC; + Vec unk_D8; + Vec unk_E4; + Vec unk_F0; + Vec unk_FC; + float unk_108[4]; + Mtx unk_118; + float *unk_148; +} M421DllPlayerWork; /* size = 0x14C */ + +typedef struct M421DllPlayerDLWork { + Vec unk_00[4]; + u32 unk_30[4]; + GXColor unk_40[4]; + Vec unk_50[4][0xE]; + u32 unk_2F0; + void *unk_2F4; +} M421DllPlayerDLWork; /* size = 0x2F8 */ + +typedef struct UnkData1BCStruct { + /* 0x00 */ u16 unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ u32 unk_10; +} UnkData1BCStruct; /* size = 0x14 */ + +void fn_1_48D4(omObjData *object); +void fn_1_4F00(omObjData *object); +void fn_1_5060(omObjData *object); +void fn_1_53C8(omObjData *object); +void fn_1_578C(omObjData *object); +void fn_1_5B9C(omObjData *object); +void fn_1_6184(omObjData *object); +void fn_1_6400(omObjData *object); +void fn_1_66B4(omObjData *object); +void fn_1_676C(omObjData *object); +void fn_1_6D48(omObjData *object); +void fn_1_7478(omObjData *object); +void fn_1_7670(omObjData *object); +void fn_1_7AA0(omObjData *object); +void fn_1_80C0(omObjData *object); +void fn_1_893C(omObjData *object); +void fn_1_9474(omObjData *object, Vec *arg1, Vec *arg2); +void fn_1_956C(omObjData *object); +void fn_1_982C(omObjData *object, u32 arg1); +s32 fn_1_99B8(omObjData *object); +void fn_1_9BFC(float arg8, float arg9, float *arg0); +void fn_1_9C38(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_9DD0(omObjData *object, Vec *arg1); +void fn_1_A528(omObjData *object); +void fn_1_AB68(omObjData *object); +void fn_1_AB6C(ModelData *model, Mtx matrix); +void fn_1_ABDC(ModelData *model, Mtx matrix); + +char *lbl_1_data_E4[8] = { + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", +}; + +s32 lbl_1_data_104[8][3] = { + { DATA_MAKE_NUM(DATADIR_M421, 0x06), DATA_MAKE_NUM(DATADIR_M421, 0x0E), DATA_MAKE_NUM(DATADIR_M421, 0x16) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x07), DATA_MAKE_NUM(DATADIR_M421, 0x0F), DATA_MAKE_NUM(DATADIR_M421, 0x17) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x08), DATA_MAKE_NUM(DATADIR_M421, 0x10), DATA_MAKE_NUM(DATADIR_M421, 0x18) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x09), DATA_MAKE_NUM(DATADIR_M421, 0x11), DATA_MAKE_NUM(DATADIR_M421, 0x19) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x0A), DATA_MAKE_NUM(DATADIR_M421, 0x12), DATA_MAKE_NUM(DATADIR_M421, 0x1A) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x0B), DATA_MAKE_NUM(DATADIR_M421, 0x13), DATA_MAKE_NUM(DATADIR_M421, 0x1B) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x0C), DATA_MAKE_NUM(DATADIR_M421, 0x14), DATA_MAKE_NUM(DATADIR_M421, 0x1C) }, + { DATA_MAKE_NUM(DATADIR_M421, 0x0D), DATA_MAKE_NUM(DATADIR_M421, 0x15), DATA_MAKE_NUM(DATADIR_M421, 0x1D) }, +}; +s32 lbl_1_data_164[8] = { + DATA_MAKE_NUM(DATADIR_M421, 0x1E), + DATA_MAKE_NUM(DATADIR_M421, 0x1F), + DATA_MAKE_NUM(DATADIR_M421, 0x20), + DATA_MAKE_NUM(DATADIR_M421, 0x21), + DATA_MAKE_NUM(DATADIR_M421, 0x22), + DATA_MAKE_NUM(DATADIR_M421, 0x23), + DATA_MAKE_NUM(DATADIR_M421, 0x24), + DATA_MAKE_NUM(DATADIR_M421, 0x25), +}; +float lbl_1_data_184[8] = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.8f }; +s32 lbl_1_data_1A4[6] = { 0, 2, 3, 0x14, 0x17, 0x18 }; +UnkData1BCStruct lbl_1_data_1BC[6] = { + { 0, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 1, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 2, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 3, 0.2f, 0.0f, -1.0f, 0 }, + { 4, 0.2f, 0.0f, -1.0f, 0 }, + { 5, 0.2f, 0.0f, -1.0f, 0 }, +}; +Vec lbl_1_data_234[4] = { + { 0.0f, 0.0f, 100.0f }, + { -200.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 200.0f, 0.0f, 0.0f }, +}; +Vec lbl_1_data_264[4] = { + { -80.0f, 0.0f, -300.0f }, + { -200.0f, 0.0f, -50.0f }, + { 0.0f, 0.0f, -150.0f }, + { 200.0f, 0.0f, -50.0f }, +}; +Vec2f lbl_1_data_294[3] = { { 300.0f, 0.4f }, { 450.0f, 0.7f }, { 600.0f, 1.0f } }; +u32 lbl_1_data_2AC[3] = { 6, 0xC, 0xC }; +float lbl_1_data_2B8[3] = { 8.000001f, 8.5f, 9.166667f }; +float lbl_1_data_2C4[3] = { 0.9f, 0.8f, 0.5f }; +float lbl_1_data_2D0[3] = { 19.800001f, 20.400002f, 20.400002f }; +float lbl_1_data_2DC[3] = { -70.0f, -60.000004f, -70.0f }; +float lbl_1_data_2E8[3] = { 192.00003f, 357.0f, 550.0f }; + +// M421DllPlayerWork +omObjData *lbl_1_bss_48[4]; +// M421DllPlayerDLWork +omObjData *lbl_1_bss_44; +u32 lbl_1_bss_34[4]; +u32 lbl_1_bss_30; + +void fn_1_4648(Process *process) +{ + u32 sp18[4]; + u32 sp8[4]; + s16 var_r31; + s16 var_r30; + u32 var_r29; + omObjData *var_r27; + + lbl_1_bss_30 = -1; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp18[var_r31] = GWPlayerCfg[var_r31].group; + sp8[var_r31] = var_r31; + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) { + if (sp18[var_r31] > sp18[var_r30]) { + var_r29 = sp18[var_r31]; + sp18[var_r31] = sp18[var_r30]; + sp18[var_r30] = var_r29; + var_r29 = sp8[var_r31]; + sp8[var_r31] = sp8[var_r30]; + sp8[var_r30] = var_r29; + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_34[sp8[var_r31]] = var_r31; + } + omMakeGroupEx(process, 0, 4); + omGetGroupMemberListEx(process, 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r27 = lbl_1_bss_48[var_r31] = omAddObjEx(process, 0x28, 5, 6, 0, fn_1_48D4); + var_r27->work[0] = var_r31; + } + lbl_1_bss_44 = omAddObjEx(process, 0x1E, 2, 0, -1, fn_1_A528); + lbl_1_bss_44->work[0] = 0; +} + +void fn_1_48B0(void) +{ + CharModelKill(-1); +} + +void fn_1_48D4(omObjData *object) +{ + s32 sp8; + + M421DllPlayerWork *work; + s32 var_r29; + HsfanimStruct01 *var_r28; + u32 var_r27; + s32 var_r26; + s32 var_r25; + u32 var_r24; + + float sp1C[4] = { 0.25f, 0.5f, 0.75f, 1.0f }; + float spC[2][2] = { { 100.0f, 143.0f }, { 100.0f, 100.0f } }; + Vec sp2C[4] = { 0.0f, 1500.0f, 300.0f, -450.0f, 0.0f, -50.0f, 0.0f, 0.0f, -350.0f, 450.0f, 0.0f, -50.0f }; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M421DllPlayerWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M421DllPlayerWork)); + object->stat |= 0x100; + var_r24 = object->work[0]; + var_r26 = GWPlayerCfg[var_r24].character; + work->unk_00 = var_r26; + sp8 = work->unk_04 = 0; + work->unk_0C = lbl_1_bss_34[object->work[0]]; + var_r27 = 0; + if (work->unk_0C != 0) { + var_r27++; + } + fn_1_3F28(object->work[0], work->unk_0C, work->unk_00); + work->unk_68 = sp1C[GWPlayerCfg[var_r24].diff & 3]; + work->unk_2C = GWPlayerCfg[object->work[0]].iscom; + object->model[0] = CharModelCreate(var_r26, 4); + Hu3DModelLayerSet(object->model[0], 1); + for (var_r29 = 0; var_r29 < 6; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(var_r26, lbl_1_data_1A4[var_r29]); + } + CharModelMotionDataClose(var_r26); + if (var_r27 == 1) { + object->model[1] = Hu3DModelCreateFile(lbl_1_data_164[var_r26]); + Hu3DModelLayerSet(object->model[1], 1); + fn_1_982C(object, 0); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + object->model[2] = Hu3DModelCreateFile(lbl_1_data_104[var_r26][var_r27]); + Hu3DModelLayerSet(object->model[2], 1); + Hu3DModelShadowSet(object->model[2]); + if (var_r27 != 0) { + object->model[3] = Hu3DModelCreateFile(lbl_1_data_104[var_r26][2]); + Hu3DModelLayerSet(object->model[3], 1); + Hu3DModelShadowSet(object->model[3]); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + work->unk_C8 = espEntry(0x120006, 1, 0); + espDispOff(work->unk_C8); + espAttrSet(work->unk_C8, HUSPR_ATTR_LINEAR); + } + var_r25 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M421, 0x27)), 0x80); + object->model[4] = var_r25; + Hu3DModelLayerSet(var_r25, 1); + Hu3DParticleHookSet(var_r25, fn_1_9C38); + for (var_r28 = ((ParticleData *)Hu3DData[var_r25].unk_120)->unk_48, var_r29 = 0; var_r29 < 0x80; var_r29++, var_r28++) { + var_r28->unk2C = 0.0f; + var_r28->unk40.a = 0; + var_r28->unk00 = 0; + } + if (work->unk_0C == 0) { + work->unk_148 = HuMemDirectMallocNum(HEAP_SYSTEM, 441 * sizeof(float), MEMORY_DEFAULT_NUM); + memset(work->unk_148, 0, 441 * sizeof(float)); + } + object->trans.x = work->unk_CC.x = sp2C[work->unk_0C].x; + object->trans.y = work->unk_CC.y = sp2C[work->unk_0C].y; + object->trans.z = work->unk_CC.z = sp2C[work->unk_0C].z; + work->unk_20 = 1; + work->unk_94 = 1.0f; + work->unk_84 = spC[var_r27][0]; + work->unk_88 = spC[var_r27][1]; + work->unk_8C = 110.0f; + work->unk_90 = 1.0f; + work->unk_98 = work->unk_CC.y + (2.0f * work->unk_88); + work->unk_9C = work->unk_CC.y; + work->unk_A0 = 0.0f; + work->unk_A4 = 0.0f; + work->unk_78 = -1; + work->unk_58 = work->unk_5C = 0.0f; + work->unk_60 = 0.0f; + work->unk_64 = 0.02f; + work->unk_80 = 50.0f; + work->unk_A8 = 0.0f; + MTXIdentity(work->unk_118); + work->unk_08 = -1; + work->unk_6C = 0; + work->unk_3C = 1; + work->unk_44 = 0; + if (var_r27 == 0) { + Hu3DModelShadowSet(object->model[0]); + object->func = fn_1_4F00; + Hu3DModelReflectTypeSet(object->model[2], 4); + work->unk_90 = lbl_1_data_184[work->unk_00]; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + return; + } + object->func = fn_1_5060; +} + +void fn_1_4F00(omObjData *object) +{ + M421DllPlayerWork *work = object->data; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0.0f; + work->unk_1C = 0.0f; + switch (work->unk_44) { + case 0: + if (work->unk_48 > 108.0f) { + HuAudFXPlay(0x601); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + work->unk_10 = 0x100; + work->unk_44++; + } + break; + case 1: + if (work->unk_24 == 0) { + work->unk_10 = 0x100; + work->unk_44++; + } + break; + } + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + fn_1_676C(object); + fn_1_66B4(object); + fn_1_7670(object); + if (fn_1_3E34() == 2) { + work->unk_44 = 0; + object->func = fn_1_53C8; + } +} + +void fn_1_5060(omObjData *object) +{ + M421DllPlayerWork *work = object->data; + { + Vec sp8[4] = { + { 0.0f, 0.0f, 0.0f }, + { 80.0f, 190.0f, 0.0f }, + { 290.0f, 120.0f, 0.0f }, + { 500.0f, 190.0f, 0.0f }, + }; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0.0f; + work->unk_1C = 0.0f; + switch (work->unk_44) { + case 0: + if ((work->unk_48 > 30.0f) && ((work->unk_48 & 0xF) == 0) && (frandmod(0x3E8) < 0x12C)) { + work->unk_10 = 0x100; + work->unk_44++; + } + else if (work->unk_48 > 120.0f) { + work->unk_44++; + } + break; + case 1: + if (work->unk_48 > 120.0f) { + work->unk_18 = atan2d(-work->unk_CC.x, 300.0f - work->unk_CC.z); + work->unk_1C = 0.01f; + if (work->unk_48 < 156.0f) { + espPosSet(work->unk_C8, sp8[work->unk_0C].x, sp8[work->unk_0C].y); + espScaleSet(work->unk_C8, 0.6000000238418579, 0.6000000238418579); + espDispOn(work->unk_C8); + } + else { + espDispOff(work->unk_C8); + } + } + if (work->unk_48 >= 180.0f) { + work->unk_10 = 0x100; + work->unk_C0 = 1; + work->unk_44++; + } + break; + } + } + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + fn_1_6D48(object); + fn_1_66B4(object); + fn_1_7670(object); + if (fn_1_3E34() == 2) { + work->unk_44 = 0; + object->func = fn_1_578C; + } +} + +void fn_1_53C8(omObjData *object) +{ + float var_f31; + float var_f30; + + M421DllPlayerWork *work = object->data; + s32 var_r29 = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0.0f; + work->unk_1C = 0.0f; + if (fn_1_3E4C() == 2) { + if (work->unk_2C != 0) { + fn_1_80C0(object); + } + else { + work->unk_14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; + var_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_18 = atan2d(var_f31, var_f30); + work->unk_1C = 0.013888889f * sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (work->unk_1C > 1.0f) { + work->unk_1C = 1.0f; + } + } + } + if ((s32)work->unk_44 != 0) { + (void)var_r29; + } + else { + var_r29 = 1; + } + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + fn_1_893C(object); + fn_1_66B4(object); + fn_1_676C(object); + fn_1_7670(object); + if ((fn_1_3E4C() == 3) && (var_r29 != 0) && (fn_1_3FF8() != 0)) { + work->unk_44 = 0; + object->func = fn_1_6184; + } +} + +void fn_1_578C(omObjData *object) +{ + float var_f31; + float var_f30; + + M421DllPlayerWork *work = object->data; + s32 var_r29 = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0.0f; + work->unk_1C = 0.0f; + if (fn_1_3E4C() == 2) { + if (work->unk_2C != 0) { + fn_1_80C0(object); + } + else { + work->unk_14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; + var_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_18 = atan2d(var_f31, var_f30); + work->unk_1C = 0.013888889f * sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (work->unk_1C > 1.0f) { + work->unk_1C = 1.0f; + } + } + } + if ((s32)work->unk_44 != 0) { + (void)var_r29; + } + else if (work->unk_24 == 0) { + var_r29 = 1; + } + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + fn_1_893C(object); + fn_1_6D48(object); + fn_1_66B4(object); + fn_1_7670(object); + if (work->unk_38 != 0) { + if (fn_1_3E7C(work->unk_0C) != 0) { + object->func = fn_1_5B9C; + } + else { + work->unk_38 = 0; + } + } + if ((work->unk_38 == 0) && (fn_1_3E4C() == 3) && (var_r29 != 0) && (fn_1_3FF8() != 0)) { + work->unk_44 = 0; + object->func = fn_1_6184; + } +} + +void fn_1_5B9C(omObjData *object) +{ + Mtx sp34; + Vec sp28; + Vec sp1C; + s32 spC; + float sp8; + float var_f29; + + M421DllPlayerWork *work; + M421DllCameraStruct *var_r29; + + work = object->data; + spC = 0; + { + Vec sp10 = { 0.0f, 0.0f, 0.0f }; + switch (work->unk_44) { + case 7: + break; + case 0: + fn_1_B39C(); + work->unk_20 = 0; + work->unk_58 = work->unk_5C = 0.0f; + MTXIdentity(work->unk_118); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSetV(object->model[3], &work->unk_F0); + Hu3DMotionTimeSet(object->model[3], 0.0f); + Hu3DMotionSpeedSet(object->model[3], 3.0f); + HuAudFXEmiterPlay(0x5FC, &work->unk_F0); + work->unk_78 = HuAudCharVoicePlayPos(work->unk_00, 0x123, &work->unk_CC); + omVibrate(object->work[0], 0xC, 4, 2); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_982C(object, 0); + fn_1_9DD0(object, &work->unk_F0); + var_r29 = fn_1_3C14(1); + mtxRot(sp34, var_r29->unk_28.x, var_r29->unk_28.y, 0.0f); + sp10.z = var_r29->unk_34 - 350.0f; + MTXMultVec(sp34, &sp10, &sp1C); + VECAdd(&var_r29->unk_1C, &sp1C, &sp28); + fn_1_9BFC(sp28.y - work->unk_CC.y, 0.9f, work->unk_108); + VECSubtract(&sp28, &work->unk_CC, &sp1C); + work->unk_D8.y = 0.016666668f * work->unk_108[2]; + work->unk_D8.x = 0.01851852f * sp1C.x; + work->unk_D8.z = 0.01851852f * sp1C.z; + work->unk_44 = 1; + work->unk_48 = 0; + break; + case 1: + work->unk_D8.y += 0.016666668f * (0.016666668f * work->unk_108[3]); + var_f29 = sqrtf((work->unk_D8.x * work->unk_D8.x) + (work->unk_D8.z * work->unk_D8.z)); + var_f29 = atan2d(var_f29, work->unk_D8.y); + var_f29 = var_f29; + sp1C.x = work->unk_D8.z; + sp1C.y = 0.0f; + sp1C.z = -work->unk_D8.x; + VECNormalize(&sp1C, &sp1C); + MTXRotAxisRad(work->unk_118, &sp1C, 0.017453292f * var_f29); + sp1C.x = sp1C.z = 0.0f; + sp1C.y = 1.0f; + MTXRotAxisRad(sp34, &sp1C, 0.017453292f * (22.5f * work->unk_48)); + MTXConcat(work->unk_118, sp34, work->unk_118); + HuAudFXEmiterUpDate(work->unk_78, &work->unk_CC); + if (work->unk_48 >= 72.0f) { + MTXIdentity(work->unk_118); + work->unk_D8.x = work->unk_D8.y = work->unk_D8.z = 0.0f; + work->unk_44 = 2; + work->unk_48 = 0; + fn_1_3F68(object->work[0]); + fn_1_3F98(object->work[0]); + fn_1_3FC8(object->work[0]); + } + break; + case 2: + work->unk_D8.y += -0.27222225f; + if (work->unk_48 > 120.0f) { + work->unk_44 = 7; + work->unk_48 = 0; + work->unk_D8.x = work->unk_D8.y = work->unk_D8.z = 0.0f; + } + break; + } + } + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + fn_1_66B4(object); + fn_1_7670(object); +} + +void fn_1_6184(omObjData *object) +{ + M421DllPlayerWork *work = object->data; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0.0f; + work->unk_1C = 0.0f; + switch (work->unk_44) { + case 0: + if (work->unk_0C == 0) { + work->unk_20 = 0; + work->unk_58 = work->unk_5C = 0.0f; + MTXIdentity(work->unk_118); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + fn_1_982C(object, 0); + work->unk_CC = work->unk_E4; + } + else { + work->unk_20 = 0; + work->unk_58 = work->unk_5C = 0.0f; + MTXIdentity(work->unk_118); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_982C(object, 0); + work->unk_CC = work->unk_E4; + } + fn_1_9DD0(object, &work->unk_F0); + HuAudFXEmiterPlay(0x600, &work->unk_F0); + work->unk_D8.x = work->unk_D8.y = work->unk_D8.z = 0.0f; + work->unk_44 = 3; + break; + case 3: + Hu3DModelShadowSet(object->model[0]); + work->unk_D8.y += -0.27222225f; + if (work->unk_CC.y <= 0.0f) { + work->unk_CC.y = 0.0f; + work->unk_D8.y = 0.0f; + work->unk_44 = 4; + } + break; + case 4: + work->unk_48 = 0; + fn_1_3F68(object->work[0]); + break; + } + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + work->unk_E4 = work->unk_CC; + fn_1_956C(object); + fn_1_66B4(object); + fn_1_7670(object); + if (fn_1_3E4C() == 5) { + object->func = fn_1_6400; + } +} + +void fn_1_6400(omObjData *object) +{ + Vec sp8; + float var_f31; + M421DllPlayerWork *work = object->data; + + VECAdd(&work->unk_CC, &work->unk_D8, &work->unk_CC); + work->unk_E4 = work->unk_CC; + fn_1_956C(object); + fn_1_66B4(object); + fn_1_7670(object); + switch (work->unk_44) { + case 4: + if (fn_1_3EF8(object->work[0]) >= 0) { + VECSubtract(&lbl_1_data_234[work->unk_0C], &work->unk_CC, &sp8); + } + else { + VECSubtract(&lbl_1_data_264[work->unk_0C], &work->unk_CC, &sp8); + } + sp8.y = 0.0f; + var_f31 = VECMag(&sp8); + if (var_f31 < 10.0f) { + var_f31 = 0.0f; + } + else { + if (VECMag(&sp8) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + } + work->unk_18 = atan2d(sp8.x, sp8.z); + work->unk_1C = var_f31; + fn_1_7478(object); + if ((work->unk_1C == 0.0f) || (work->unk_48 > 0x12C)) { + work->unk_5C = 0.0f; + work->unk_60 = 0.15f; + work->unk_64 = 0.0f; + work->unk_D8.x = work->unk_D8.y = work->unk_D8.z = 0.0f; + fn_1_3F98(object->work[0]); + } + if (fn_1_3E64() == 1) { + work->unk_44 = 5; + } + break; + case 5: + if (fn_1_3E64() == 1) { + if (fn_1_3EF8(object->work[0]) >= 0) { + fn_1_982C(object, 4); + } + else { + fn_1_982C(object, 5); + } + work->unk_44 = 6; + return; + } + break; + case 6: + if (fn_1_99B8(object) != 0) { + fn_1_3FC8(object->work[0]); + } + break; + } +} + +void fn_1_66B4(omObjData *object) +{ + M421DllPlayerWork *work = object->data; + work->unk_50++; + work->unk_48++; + object->trans.x = work->unk_CC.x; + object->trans.y = work->unk_CC.y; + object->trans.z = work->unk_CC.z; + work->unk_60 += work->unk_64; + if (work->unk_60 > 0.45f) { + work->unk_60 = 0.45f; + } + work->unk_58 = fn_1_4478(work->unk_58, work->unk_5C, work->unk_60); + object->rot.y = work->unk_58; +} + +void fn_1_676C(omObjData *object) +{ + Mtx sp44; + Mtx sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + M421DllPlayerWork *work = object->data; + if (work->unk_20 != 0) { + if (work->unk_1C > 0.0f) { + work->unk_5C = work->unk_18; + work->unk_60 = 0.15f; + work->unk_64 = 0.0f; + } + if (work->unk_1C < 0.05f) { + fn_1_982C(object, 0); + CharModelMotionSpeedSet(work->unk_00, 1.0f); + } + else { + var_f30 = 0.5f; + if (work->unk_08 == 2) { + var_f30 = 0.45f; + } + if (work->unk_1C > var_f30) { + fn_1_982C(object, 2); + var_f29 = work->unk_1C; + } + else { + fn_1_982C(object, 1); + var_f29 = work->unk_1C / var_f30; + } + CharModelMotionSpeedSet(work->unk_00, var_f29); + } + sp8.x = 0.01666666753590107 * (1.6666667461395264 * (2.0 * (work->unk_1C * sind(work->unk_18)))); + sp8.y = 0.0f; + sp8.z = 0.01666666753590107 * (1.6666667461395264 * (2.0 * (work->unk_1C * cosd(work->unk_18)))); + VECAdd(&sp8, &work->unk_D8, &work->unk_D8); + if (work->unk_24 == 0) { + if ((work->unk_10 & 0x100) != 0) { + work->unk_24 = 1; + fn_1_9BFC(400.0f - (2.0f * work->unk_88), 0.25f, work->unk_108); + work->unk_D8.y = 0.016666668f * work->unk_108[2]; + if (fn_1_3E34() == 2) { + HuAudFXEmiterPlay(0x5FE, &work->unk_F0); + } + } + } + else { + work->unk_D8.y += 0.016666668f * (0.016666668f * work->unk_108[3]); + if ((work->unk_D8.y < 0.0f) && (work->unk_CC.y <= 0.0f)) { + work->unk_D8.y = 0.0f; + work->unk_24 = 0; + if (fn_1_3E34() != 2) { + HuAudFXEmiterPlay(0x5FD, &work->unk_F0); + omVibrate(object->work[0], 0xC, 4, 2); + } + else { + HuAudFXEmiterPlay(0x5FF, &work->unk_F0); + } + } + } + MTXIdentity(sp44); + MTXIdentity(sp14); + work->unk_A8 = 1.0f - work->unk_1C; + sp8 = work->unk_D8; + sp8.y = 0.0f; + var_f31 = VECMag(&sp8); + if (var_f31 > 0.0f) { + VECNormalize(&sp8, &sp8); + var_f28 = sp8.z; + sp8.z = -sp8.x; + sp8.x = var_f28; + var_f31 *= 360.0f / (3.14159f * (2.0f * work->unk_88)); + MTXRotAxisRad(sp44, &sp8, 0.017453292f * var_f31); + } + sp8.x = sind((90.0f + work->unk_18)); + sp8.y = 0.0f; + sp8.z = cosd((90.0f + work->unk_18)); + if (work->unk_1C > 0.0f) { + var_f31 = 1.6666667f * work->unk_1C * (360.0f / (3.14159f * (2.0f * work->unk_88))); + if (work->unk_24 != 0) { + var_f31 *= 2.0f; + } + MTXRotAxisRad(sp14, &sp8, 0.017453292f * var_f31); + } + MTXConcat(sp44, sp14, sp44); + MTXConcat(sp44, work->unk_118, work->unk_118); + fn_1_7AA0(object); + } +} + +void fn_1_6D48(omObjData *object) +{ + M421DllPlayerWork *work = object->data; + if (work->unk_20 != 0) { + if (work->unk_D8.y > 0.0f) { + work->unk_9C = work->unk_CC.y - (1.7999998f * work->unk_D8.y); + if (work->unk_9C < 0.0f) { + work->unk_9C = 0.0f; + } + work->unk_98 = (2.0f * (work->unk_CC.y + work->unk_88)) - work->unk_9C; + work->unk_A0 = 0.5f * work->unk_D8.y; + work->unk_A4 = -0.2f * work->unk_A0; + } + else if (work->unk_D8.y < 0.0f) { + work->unk_98 = work->unk_CC.y + (2.0f * work->unk_88); + work->unk_9C = work->unk_CC.y; + work->unk_A0 = 0.8f * work->unk_D8.y; + work->unk_A4 = work->unk_A0 * (-2.0f / work->unk_B8); + } + else if (work->unk_24 == 0) { + work->unk_9C = work->unk_CC.y; + if ((work->unk_B8 != 0) || (work->unk_BC != 0)) { + work->unk_98 += work->unk_A0; + work->unk_A0 += work->unk_A4; + } + else { + work->unk_A0 = work->unk_A4 = 0.0f; + work->unk_98 = work->unk_CC.y + (2.0f * work->unk_88); + } + if (work->unk_BC != 0) { + work->unk_AC = work->unk_AC + work->unk_B0; + work->unk_98 = work->unk_CC.y + (2.0f * work->unk_88); + work->unk_98 = work->unk_98 + ((work->unk_BC / 18.0f) * (work->unk_B4 * sind(work->unk_AC))); + } + } + work->unk_F0 = work->unk_CC; + work->unk_F0.y = 0.5f * (work->unk_98 + work->unk_9C); + work->unk_94 = (work->unk_F0.y - work->unk_9C) / work->unk_88; + if ((work->unk_1C > 0.0f) && (work->unk_24 == 0)) { + work->unk_5C = work->unk_18; + work->unk_60 = 0.15f; + work->unk_64 = 0.0f; + } + if ((work->unk_10 & 0x100) != 0) { + work->unk_C4 = 0xC; + } + if (work->unk_C4 != 0) { + work->unk_C4--; + } + if (work->unk_24 == 0) { + if ((work->unk_28 == 0) && (work->unk_C0 < 3) && ((work->unk_C0 != 0) || (work->unk_BC == 0)) && (work->unk_C4 != 0)) { + work->unk_28 = 1; + } + if (work->unk_B8 != 0) { + work->unk_B8--; + if (work->unk_B8 == 0) { + work->unk_A0 *= lbl_1_data_2C4[work->unk_C0 - 1]; + work->unk_A4 = work->unk_A0 * (-2.0f / (work->unk_BC + 1)); + } + } + else { + if (work->unk_BC != 0) { + work->unk_BC--; + } + if ((work->unk_C0 >= 3) || (work->unk_28 == 0)) { + work->unk_C0 = 0; + } + if (work->unk_28 != 0) { + work->unk_28 = 0; + work->unk_24 = 1; + work->unk_D8.x = lbl_1_data_2B8[work->unk_C0] * (work->unk_1C * sind(work->unk_18)); + work->unk_D8.z = lbl_1_data_2B8[work->unk_C0] * (work->unk_1C * cosd(work->unk_18)); + if (work->unk_C0 < 2) { + HuAudFXEmiterPlay(0x5F9, &work->unk_F0); + } + else { + HuAudFXEmiterPlay(0x5FA, &work->unk_F0); + } + fn_1_9BFC(lbl_1_data_294[work->unk_C0].x - (2.0f * work->unk_88), 0.5f * lbl_1_data_294[work->unk_C0].y, work->unk_108); + work->unk_D8.y = 0.016666668f * work->unk_108[2]; + work->unk_B8 = 9; + work->unk_BC = lbl_1_data_2AC[work->unk_C0]; + work->unk_C0++; + } + } + } + else { + work->unk_AC = 0.0f; + work->unk_B0 = lbl_1_data_2D0[work->unk_C0 - 1]; + work->unk_B4 = lbl_1_data_2DC[work->unk_C0 - 1]; + work->unk_D8.y += 0.016666668f * (0.016666668f * work->unk_108[3]); + if ((work->unk_D8.y < 0.0f) && (work->unk_CC.y <= 0.0f)) { + work->unk_D8.x = work->unk_D8.y = work->unk_D8.z = 0.0f; + work->unk_24 = 0; + HuAudFXEmiterPlay(0x5FB, &work->unk_F0); + } + } + } +} + +void fn_1_7478(omObjData *object) +{ + float var_f31; + float var_f30; + + M421DllPlayerWork *work = object->data; + if (work->unk_1C > 0.0f) { + work->unk_5C = work->unk_18; + } + if ((work->unk_1C > 0.05f) && (work->unk_34 == 0)) { + work->unk_D8.x = 0.01666666753590107 * (550.0 * (work->unk_1C * sind(work->unk_18))); + work->unk_D8.z = 0.01666666753590107 * (550.0 * (work->unk_1C * cosd(work->unk_18))); + work->unk_60 = 0.2f; + work->unk_64 = 0.0f; + var_f31 = 0.5f; + if (work->unk_08 == 2) { + var_f31 = 0.45f; + } + if (work->unk_1C > var_f31) { + fn_1_982C(object, 2); + var_f30 = work->unk_1C; + } + else { + fn_1_982C(object, 1); + var_f30 = work->unk_1C / var_f31; + } + CharModelMotionSpeedSet(work->unk_00, var_f30); + return; + } + work->unk_D8.x = work->unk_D8.y = work->unk_D8.z = 0.0f; + fn_1_982C(object, 0); +} + +void fn_1_7670(omObjData *object) +{ + float var_f29; + + M421DllPlayerWork *work = object->data; + work->unk_E4 = work->unk_CC; + if (work->unk_20 != 0) { + if (work->unk_0C == 0) { + work->unk_F0 = work->unk_CC; + work->unk_F0.y += work->unk_88 * work->unk_94; + work->unk_E4.y += work->unk_94 * (work->unk_88 - work->unk_84); + Hu3DModelPosSetV(object->model[0], &work->unk_E4); + Hu3DModelRotSet(object->model[0], 0.0f, work->unk_58, 0.0f); + Hu3DModelScaleSet(object->model[0], work->unk_90, work->unk_90, work->unk_90); + Hu3DModelPosSetV(object->model[2], &work->unk_F0); + MTXCopy(work->unk_118, Hu3DData[object->model[2]].unk_F0); + Hu3DModelScaleSet(object->model[2], 1.0f, work->unk_94, 1.0f); + return; + } + work->unk_E4.y += (2.0f * work->unk_88 * work->unk_94) - work->unk_8C; + Hu3DModelPosSetV(object->model[0], &work->unk_E4); + Hu3DModelRotSet(object->model[0], 0.0f, work->unk_58, 0.0f); + Hu3DModelPosSetV(object->model[2], &work->unk_F0); + Hu3DModelRotSet(object->model[2], 0.0f, work->unk_58, 0.0f); + var_f29 = sqrtf(1.0f / work->unk_94); + Hu3DModelScaleSet(object->model[2], var_f29, work->unk_94, var_f29); + Hu3DModelPosSet(object->model[1], work->unk_F0.x, 15.000001f + (work->unk_F0.y + (work->unk_88 * work->unk_94)), work->unk_F0.z); + Hu3DModelRotSet(object->model[1], 0.0f, work->unk_58, 0.0f); + return; + } + work->unk_90 += 0.1f * (1.0f - work->unk_90); + Hu3DModelPosSetV(object->model[0], &work->unk_E4); + Hu3DModelRotSet(object->model[0], 0.0f, work->unk_58, 0.0f); + Hu3DModelScaleSet(object->model[0], work->unk_90, work->unk_90, work->unk_90); + MTXCopy(work->unk_118, Hu3DData[object->model[0]].unk_F0); +} + +void fn_1_7AA0(omObjData *object) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + s32 var_r30; + s32 var_r29; + s32 var_r28; + + M421DllPlayerWork *work = object->data; + sp38 = work->unk_CC; + sp38.y = 0.0f; + VECScale(&work->unk_D8, &sp14, 7.5f); + sp2C = sp38; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + VECAdd(&sp2C, &sp14, &sp2C); + fn_1_9474(object, &sp2C, &sp2C); + } + sp2C.y = 0.0f; + VECSubtract(&sp38, &sp2C, &sp8); + sp8.y = 0.0f; + var_f28 = VECMag((Vec *)&sp8.y); + var_f29 = 0.0025f * var_f28; + if (var_f29 > 1.0f) { + var_f29 = 1.0f; + } + if (var_f28 > 0.0f) { + VECNormalize(&sp8, &sp8); + } + sp20.y = 0.0f; + sp20.z = -750.0f; + var_r29 = 0; + for (var_r30 = 0; var_r30 < 0x15; var_r30++) { + sp20.x = -750.0f; + for (var_r28 = 0; var_r28 < 0x15; var_r28++, var_r29++) { + if (VECMag(&sp20) >= 700.0f) { + work->unk_148[var_r29] = 10.0f; + } + else { + VECSubtract(&sp2C, &sp20, &sp14); + var_f31 = 1.0f - (0.001f * VECMag(&sp14)); + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + work->unk_148[var_r29] = 3.0f * var_f31; + VECSubtract(&sp38, &sp20, &sp14); + var_f31 = 1.0f - (0.001f * VECMag(&sp14)); + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + work->unk_148[var_r29] += 3.0f * var_f31; + VECSubtract(&sp20, &sp38, &sp14); + var_f31 = VECMag(&sp14); + var_f30 = 1.0f - (0.001f * var_f31); + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + if (var_f31 > 0.0f) { + VECNormalize(&sp14, &sp14); + } + var_f31 = VECDotProduct(&sp14, &sp8); + if (var_f31 > 0.0f) { + var_f31 = 4.0f * (var_f29 * (var_f30 * (var_f31 * var_f31))); + work->unk_148[var_r29] += var_f31; + } + } + sp20.x += 75.0f; + } + sp20.z += 75.0f; + } +} + +void fn_1_7EB8(Vec *var_r26, float sp8, Vec *var_r27) +{ + Vec sp24; + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + + s32 var_r31; + M421DllPlayerWork *work; + s32 var_r29; + s32 var_r28; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + work = lbl_1_bss_48[var_r31]->data; + if ((work->unk_0C == 0) && work->unk_148) { + break; + } + } + sp24 = *var_r26; + sp24.y = 0.0f; + *var_r27 = sp24; + var_f30 = 100.0f; + sp18.y = 0.0f; + sp18.z = -750.0f; + var_r28 = 0; + for (var_r31 = 0; var_r31 < 0x15; var_r31++) { + sp18.x = -750.0f; + for (var_r29 = 0; var_r29 < 0x15; var_r29++, var_r28++) { + VECSubtract(&sp18, &sp24, &spC); + var_f31 = VECMag(&spC); + if (var_f31 <= sp8) { + var_f31 = 1.0f + (0.5f - (0.0005f * var_f31)); + var_f31 *= work->unk_148[var_r28]; + if (var_f31 < var_f30) { + var_f30 = var_f31; + *var_r27 = sp18; + } + } + sp18.x += 75.0f; + } + sp18.z += 75.0f; + } +} + +void fn_1_80C0(omObjData *var_r28) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + M421DllPlayerWork *var_r30; + s32 var_r29; + + M421DllPlayerWork *var_r31 = var_r28->data; + if (var_r31->unk_0C != 0) { + if (var_r31->unk_24 == 0) { + switch (var_r31->unk_6C) { + case 0: + if (var_r31->unk_C0 == 3) { + var_r31->unk_6C = 3; + return; + } + var_r31->unk_6C = 2; + var_r31->unk_70 = 60.0f * (0.3f + (0.00040000002f * frandmod(0x3E8))); + if ((frandmod(0x410) < (1000.0f * (0.5f + (0.5f * var_r31->unk_68)))) || (var_r31->unk_3C != 0)) { + var_r31->unk_3C = 0; + var_r31->unk_6C = 1; + return; + } + break; + case 1: + var_f29 = lbl_1_data_2E8[var_r31->unk_C0]; + fn_1_7EB8(&var_r31->unk_CC, 1000.0f, &sp38); + VECSubtract(&sp38, &var_r31->unk_CC, &sp2C); + sp2C.y = 0.0f; + var_f31 = VECMag(&sp2C); + if (var_f31 < var_f29) { + var_r31->unk_1C = VECMag(&sp2C) / var_f29; + } + else { + var_r31->unk_1C = 1.0f; + } + var_r31->unk_18 = atan2d(sp2C.x, sp2C.z); + var_r31->unk_10 = 0x100; + return; + case 2: + if (var_r31->unk_70 != 0) { + var_r31->unk_70--; + return; + } + var_r31->unk_6C = 0; + return; + case 3: + if (var_r31->unk_C0 != 3) { + var_r31->unk_6C = 2; + var_r31->unk_70 = 60.0f * (0.0003f * frandmod(0x3E8)); + return; + } + break; + } + } + else { + var_r31->unk_6C = 0; + } + } + else { + var_f30 = 10000.0f; + if (var_r31->unk_74 == 0) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r28->work[0] != lbl_1_bss_48[var_r29]->work[0]) { + var_r30 = lbl_1_bss_48[var_r29]->data; + if (var_r30->unk_38 == 0) { + if (var_r30->unk_24 != 0) { + VECScale(&var_r30->unk_D8, &sp20, 60.0f); + VECAdd(&var_r30->unk_CC, &sp20, &sp20); + } + else { + sp20 = var_r30->unk_CC; + } + sp20.y = 0.0f; + sp20.x += 100.0f * (0.5f * ((((2.0f * var_r31->unk_68) / 1000.0f) * frandmod(0x3E8)) - var_r31->unk_68)); + sp20.z += 100.0f * (0.5f * ((((2.0f * var_r31->unk_68) / 1000.0f) * frandmod(0x3E8)) - var_r31->unk_68)); + var_f31 = VECMag(&sp20); + if (var_f31 > (700.0f - (100.0f * (2.3f * var_r31->unk_68)))) { + var_f31 = (700.0f - (100.0f * (2.3f * var_r31->unk_68))) / var_f31; + VECScale(&sp20, &sp20, var_f31); + } + VECSubtract(&sp20, &var_r31->unk_CC, &sp14); + sp14.y = 0.0f; + var_f31 = VECMag(&sp14); + if (var_f30 > var_f31) { + var_r31->unk_FC = sp20; + var_f30 = var_f31; + } + } + } + } + var_r31->unk_74 = 60.0f * ((1.5f - var_r31->unk_68) + (0.0015f * frandmod(0x3E8))); + } + VECSubtract(&var_r31->unk_FC, &var_r31->unk_CC, &sp14); + sp8 = var_r31->unk_D8; + if (VECMag(&sp14)) { + VECNormalize(&sp14, &sp14); + } + if (VECMag(&sp8)) { + VECNormalize(&sp8, &sp8); + } + var_f31 = (0.5f + (0.5f * var_r31->unk_68)) * (1.0f - VECDotProduct(&sp14, &sp8)); + VECScale(&var_r31->unk_D8, &sp14, 60.0f * (2.0f * var_f31)); + VECAdd(&var_r31->unk_CC, &sp14, &sp14); + VECSubtract(&var_r31->unk_FC, &sp14, &sp20); + var_f30 = VECMag(&sp20); + var_r31->unk_18 = fn_1_4478(var_r31->unk_58, atan2d(sp20.x, sp20.z), 0.5f); + var_r31->unk_1C = 0.95f + (0.05f * var_r31->unk_68); + if ((var_f30 < 300.0f) && ((var_r31->unk_50 & 7) == 0) && (frandmod(0x514) < (1000.0f * var_r31->unk_68))) { + var_r31->unk_10 = 0x100; + } + var_r31->unk_74--; + if (var_f30 < 130.0f) { + var_r31->unk_74 = 0; + } + } +} + +void fn_1_893C(omObjData *object) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + M421DllPlayerWork *var_r31; + M421DllPlayerWork *var_r30; + s32 var_r29; + s32 var_r28; + M421DllPlayerWork *var_r27; + M421DllPlayerWork *var_r26; + s32 var_r24; + s32 var_r23; + + if (lbl_1_bss_30 >= object->work[0]) { + for (var_r24 = 0; var_r24 < 4; var_r24++) { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = lbl_1_bss_48[var_r29]->data; + if ((var_r31->unk_38 == 0) && (var_r31->unk_20 != 0)) { + var_r31->unk_F0 = var_r31->unk_CC; + var_r31->unk_F0.y += var_r31->unk_88; + } + } + var_r31 = lbl_1_bss_48[var_r28]->data; + if ((var_r31->unk_38 == 0) && (var_r31->unk_20 != 0)) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r28 != var_r29) { + var_r30 = lbl_1_bss_48[var_r29]->data; + if ((var_r30->unk_38 == 0) && (var_r30->unk_20 != 0)) { + VECSubtract(&var_r31->unk_F0, &var_r30->unk_F0, &sp38); + var_f31 = VECMag(&sp38); + if (var_f31 < (var_r31->unk_88 + var_r30->unk_88)) { + if (var_f31 > 0.0f) { + var_f31 = 0.5f * ((var_r31->unk_88 + var_r30->unk_88) - var_f31); + } + else { + var_f31 = 0.5f * (var_r31->unk_88 + var_r30->unk_88); + sp38.x = frandmod(0x3E8) - 0.0005f; + sp38.y = 0.0f; + sp38.z = frandmod(0x3E8) - 0.0005f; + } + VECNormalize(&sp38, &sp38); + VECScale(&sp38, &sp38, var_f31); + VECAdd(&var_r31->unk_F0, &sp38, &var_r31->unk_F0); + VECSubtract(&var_r30->unk_F0, &sp38, &var_r30->unk_F0); + if ((var_r31->unk_0C == 0) && (var_r30->unk_0C != 0)) { + var_r30->unk_38 = 1; + } + else if ((var_r31->unk_0C != 0) && (var_r30->unk_0C == 0)) { + var_r31->unk_38 = 1; + } + } + } + } + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = lbl_1_bss_48[var_r29]->data; + if ((var_r31->unk_38 == 0) && (var_r31->unk_20 != 0)) { + var_r31->unk_CC = var_r31->unk_F0; + var_r31->unk_CC.y -= var_r31->unk_88; + } + } + var_r31 = lbl_1_bss_48[var_r28]->data; + if (var_r31->unk_24 != 0) { + if (var_r31->unk_CC.y < 0.0f) { + var_r31->unk_CC.y = 0.0f; + } + } + else { + var_r31->unk_CC.y = 0.0f; + } + sp38 = var_r31->unk_CC; + sp38.y = 0.0f; + var_f31 = VECMag(&sp38); + if (var_f31 > (750.0f - var_r31->unk_88)) { + var_f30 = (750.0f - var_r31->unk_88) / var_f31; + VECScale(&sp38, &sp38, var_f30); + var_r31->unk_CC.x = sp38.x; + var_r31->unk_CC.z = sp38.z; + } + } + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31 = lbl_1_bss_48[var_r28]->data; + if ((var_r31->unk_38 == 0) && (var_r31->unk_20 != 0) && (var_r31->unk_0C == 0)) { + sp38 = var_r31->unk_CC; + sp38.y = 0.0f; + var_f31 = VECMag(&sp38); + if (var_f31 >= (750.0f - var_r31->unk_88)) { + var_f31 = VECDotProduct(&var_r31->unk_D8, &sp38); + if (var_f31 > 0.0f) { + VECNormalize(&sp38, &sp38); + var_f31 = VECDotProduct(&var_r31->unk_D8, &sp38); + var_r31->unk_D8.x = 0.92f * (var_r31->unk_D8.x - (1.1f * (var_f31 * sp38.x))); + var_r31->unk_D8.z = 0.92f * (var_r31->unk_D8.z - (1.1f * (var_f31 * sp38.z))); + } + } + } + } + for (var_r28 = 0; var_r28 < 3; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = lbl_1_bss_48[var_r29]->data; + if ((var_r31->unk_38 == 0) && (var_r31->unk_20 != 0)) { + var_r31->unk_F0 = var_r31->unk_CC; + var_r31->unk_F0.y += var_r31->unk_88; + } + } + var_r31 = lbl_1_bss_48[var_r28]->data; + if ((var_r31->unk_38 == 0) && (var_r31->unk_20 != 0) && (var_r31->unk_0C != 0)) { + for (var_r29 = var_r28; var_r29 < 4; var_r29++) { + if (var_r28 != var_r29) { + var_r30 = lbl_1_bss_48[var_r29]->data; + if ((var_r30->unk_38 == 0) && (var_r30->unk_20 != 0) && (var_r30->unk_0C != 0)) { + var_r23 = 0; + var_f31 = VECMag(&var_r31->unk_D8); + var_f30 = VECMag(&var_r30->unk_D8); + if ((!(var_f31 <= 0.0f) && (var_r31->unk_24 != 0)) || (!(var_f30 <= 0.0f) && (var_r30->unk_24 != 0))) { + if (var_r31->unk_24 == 0) { + var_r27 = var_r30; + var_r26 = var_r31; + } + else if (var_r30->unk_24 == 0) { + var_r27 = var_r31; + var_r26 = var_r30; + } + else { + var_r23 = 1; + var_r27 = var_r31; + var_r26 = var_r30; + } + VECAdd(&var_r27->unk_F0, &var_r27->unk_D8, &sp14); + VECAdd(&var_r26->unk_F0, &var_r26->unk_D8, &sp8); + VECSubtract(&sp14, &sp8, &sp38); + var_f31 = VECMag(&sp38); + if ((var_f31 < (var_r27->unk_88 + var_r26->unk_88)) && (var_f31 > 0.0f)) { + VECNormalize(&sp38, &sp38); + if (var_r23 != 0) { + VECNormalize(&var_r27->unk_D8, &sp2C); + VECNormalize(&var_r26->unk_D8, &sp20); + var_f31 = -VECDotProduct(&sp2C, &sp38); + var_f30 = VECDotProduct(&sp20, &sp38); + } + else { + VECNormalize(&var_r27->unk_D8, &sp2C); + sp20.x = sp20.y = sp20.z = 0.0f; + var_f31 = -VECDotProduct(&sp2C, &sp38); + var_f30 = 0.0f; + } + if ((var_f31 > 0.01f) || (var_f31 > 0.01f)) { + var_f31 = VECDotProduct(&var_r27->unk_D8, &sp38); + var_f30 = VECDotProduct(&var_r26->unk_D8, &sp38); + sp14.x = var_r27->unk_D8.x - (var_f31 * sp38.x); + sp14.y = var_r27->unk_D8.y - (var_f31 * sp38.y); + sp14.z = var_r27->unk_D8.z - (var_f31 * sp38.z); + sp8.x = var_r26->unk_D8.x - (var_f30 * sp38.x); + sp8.y = var_r26->unk_D8.y - (var_f30 * sp38.y); + sp8.z = var_r26->unk_D8.z - (var_f30 * sp38.z); + if (var_r23 != 0) { + sp14.x += 0.5f * (var_f30 * sp38.x); + sp14.y += var_f30 * sp38.y; + sp14.z += 0.5f * (var_f30 * sp38.z); + sp8.x += 0.5f * (var_f31 * sp38.x); + sp8.y += var_f31 * sp38.y; + sp8.z += 0.5f * (var_f31 * sp38.z); + } + else { + sp14.x -= 0.5f * (var_f31 * sp38.x); + sp14.y -= var_f31 * sp38.y; + sp14.z -= 0.5f * (var_f31 * sp38.z); + } + var_r27->unk_D8 = sp14; + var_r26->unk_D8 = sp8; + } + } + } + } + } + } + } + } + } + else { + var_r31 = object->data; + if (var_r31->unk_38 == 0) { + if (var_r31->unk_CC.y < 0.0f) { + var_r31->unk_CC.y = 0.0f; + } + sp38 = var_r31->unk_CC; + sp38.y = 0.0f; + var_f31 = VECMag(&sp38); + if (var_f31 > (750.0f - var_r31->unk_88)) { + var_f30 = (750.0f - var_r31->unk_88) / var_f31; + VECScale(&sp38, &sp38, var_f30); + var_r31->unk_CC.x = sp38.x; + var_r31->unk_CC.z = sp38.z; + } + } + } + lbl_1_bss_30 = object->work[0]; +} + +void fn_1_9474(omObjData *object, Vec *arg1, Vec *arg2) +{ + Vec sp8; + float var_f31; + float var_f30; + + M421DllPlayerWork *work = object->data; + + sp8 = *arg1; + if (work->unk_38 == 0) { + var_f31 = VECMag(&sp8); + if (var_f31 > (750.0f - work->unk_88)) { + var_f30 = (750.0f - work->unk_88) / var_f31; + VECScale(&sp8, &sp8, var_f30); + } + } + *arg2 = sp8; +} + +void fn_1_956C(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + + M421DllPlayerWork *var_r31; + M421DllPlayerWork *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + for (var_r27 = 0; var_r27 < 2; var_r27++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = lbl_1_bss_48[var_r29]->data; + if (var_r31->unk_38 == 0) { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (var_r29 != var_r28) { + var_r30 = lbl_1_bss_48[var_r28]->data; + if (var_r30->unk_38 == 0) { + VECSubtract(&var_r31->unk_CC, &var_r30->unk_CC, &sp8); + sp8.y = 0.0f; + var_f31 = VECMag(&sp8); + if (var_f31 < (var_r31->unk_80 + var_r30->unk_80)) { + if (var_f31 > 0.0f) { + var_f31 = 0.5f * ((var_r31->unk_80 + var_r30->unk_80) - var_f31); + } + else { + var_f31 = 0.5f * (var_r31->unk_80 + var_r30->unk_80); + sp8.x = frandmod(0x3E8) - 0x1F4; + sp8.z = frandmod(0x3E8) - 0x1F4; + } + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&var_r31->unk_CC, &sp8, &var_r31->unk_CC); + VECSubtract(&var_r30->unk_CC, &sp8, &var_r30->unk_CC); + } + } + } + } + if (var_r31->unk_CC.y < 0.0f) { + var_r31->unk_CC.y = 0.0f; + } + sp8 = var_r31->unk_CC; + sp8.y = 0.0f; + var_f31 = VECMag(&sp8); + if (var_f31 > (750.0f - var_r31->unk_80)) { + var_f30 = (750.0f - var_r31->unk_80) / var_f31; + VECScale(&sp8, &sp8, var_f30); + var_r31->unk_CC.x = sp8.x; + var_r31->unk_CC.z = sp8.z; + } + } + } + } +} + +void fn_1_982C(omObjData *object, u32 arg1) +{ + + M421DllPlayerWork *work = object->data; + if ((work->unk_08 != arg1) && (arg1 < 6)) { + float var_f31 = 60.0f * lbl_1_data_1BC[arg1].unk_04; + if (work->unk_08 < 0) { + var_f31 = 0.0f; + } + work->unk_08 = arg1; + CharModelMotionShiftSet( + work->unk_00, object->motion[lbl_1_data_1BC[arg1].unk_00], 60.0f * lbl_1_data_1BC[arg1].unk_08, var_f31, lbl_1_data_1BC[arg1].unk_10); + if (lbl_1_data_1BC[arg1].unk_0C >= 0.0f) { + Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_1BC[arg1].unk_08, 60.0f * lbl_1_data_1BC[arg1].unk_0C); + } + } +} + +s32 fn_1_99B8(omObjData *object) +{ + + M421DllPlayerWork *work = object->data; + s32 var_r30 = 0; + if ((CharModelMotionEndCheck(work->unk_00) != 0) && (CharModelMotionShiftIDGet(work->unk_00) < 0)) { + var_r30 = 1; + } + return var_r30; +} + +s32 fn_1_9A2C(omObjData *object, u32 arg1) +{ + s32 var_r27; + + var_r27 = 0; + if (fn_1_99B8(object)) { + fn_1_982C(object, arg1); + var_r27 = 1; + } + return var_r27; +} + +void fn_1_9BFC(float arg8, float arg9, float *arg0) +{ + arg0[0] = arg9; + arg0[1] = arg8; + arg0[3] = (2.0f * -arg8) / (arg9 * arg9); + arg0[2] = -arg0[3] * arg9; +} + +void fn_1_9C38(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk2C += 2.0f; + var_r31->unk40.a *= 0.98f; + if (var_r31->unk00 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_9DD0(omObjData *object, Vec *arg1) +{ + Vec sp18; + GXColor sp14; + u8 sp10[4]; + u8 spC[4]; + float var_f31; + float var_f30; + + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + M421DllPlayerWork *work; + u32 var_r26; + + work = object->data; + var_r30 = Hu3DData[object->model[4]].unk_120; + GWCharColorGet(work->unk_00, &sp14); + sp10[0] = 100.0f + (0.47058824f * sp14.r); + sp10[1] = 100.0f + (0.47058824f * sp14.g); + sp10[2] = 100.0f + (0.47058824f * sp14.b); + spC[0] = (220.0f + (0.13725491f * sp14.r)) - sp10[0]; + spC[1] = (220.0f + (0.13725491f * sp14.g)) - sp10[1]; + spC[2] = (220.0f + (0.13725491f * sp14.b)) - sp10[2]; + var_r26 = 0x64; + for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + continue; + } + var_r31->unk00 = 60.0f * (0.6f + (0.0005f * frandmod(0x3E8))); + var_f31 = frandmod(0x168); + var_f30 = frandmod(0x168); + sp18.y = sind(var_f31); + var_f31 = cosd(var_f31); + sp18.x = var_f31 * sind(var_f30); + sp18.z = var_f31 * cosd(var_f30); + var_f31 = 120.00001f; + VECScale(&sp18, &sp18, var_f31); + VECAdd(&sp18, arg1, &var_r31->unk34); + var_r31->unk08.x = 0.016666668f * (0.5f * sp18.x); + var_r31->unk08.y = 5.0f + (0.016666668f * (0.5f * sp18.y)); + var_r31->unk08.z = 0.016666668f * (0.5f * sp18.z); + var_r31->unk30 = 0.0031415902f * frandmod(0x3E8); + var_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk2C = 80.0f + (220.0f * var_f31); + var_r31->unk40.a = 100.0f + (100.0f * (1.0f - var_f31)); + var_r31->unk40.r = sp10[0] + (spC[0] * var_f31); + var_r31->unk40.g = sp10[1] + (spC[1] * var_f31); + var_r31->unk40.b = sp10[2] + (spC[2] * var_f31); + if (--var_r26 < 1) { + break; + } + } +} + +void fn_1_A528(omObjData *object) +{ + M421DllPlayerDLWork *work; + s32 i; + + object->stat |= 0x100; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M421DllPlayerDLWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M421DllPlayerDLWork)); + work->unk_2F0 = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0); + work->unk_2F4 = HuMemDirectMallocNum(HEAP_SYSTEM, work->unk_2F0, MEMORY_DEFAULT_NUM); + DCFlushRange(work->unk_2F4, work->unk_2F0); + for (i = 0; i < 4; i++) { + work->unk_40[i].r = work->unk_40[i].g = work->unk_40[i].b = 0xFF; + } + work->unk_40[0].a = 0x40; + work->unk_40[1].a = 0; + work->unk_40[2].a = 0xFF; + work->unk_40[3].a = 0; + for (i = 0; i < 4; i++) { + work->unk_50[i][0].x = work->unk_50[i][0].y = work->unk_50[i][0].z = 0.0f; + } + for (i = 1; i < 0xE; i++) { + work->unk_50[0][i].x = 100.0 * (1.7999999523162842 * sind((30.0f * i))); + work->unk_50[0][i].y = 100.0 * (1.7999999523162842 * cosd((30.0f * i))); + work->unk_50[0][i].z = 0.0f; + work->unk_50[1][i].x = 100.0 * (2.0 * cosd((30.0f * i))); + work->unk_50[1][i].y = 0.0f; + work->unk_50[1][i].z = 100.0 * (2.0 * sind((30.0f * i))); + work->unk_50[2][i].x = 100.0 * sind((30.0f * i)); + work->unk_50[2][i].y = 100.0 * (1.2000000476837158 * cosd((30.0f * i))); + work->unk_50[2][i].z = 0.0f; + work->unk_50[3][i].x = 100.0 * sind((30.0f * i)); + work->unk_50[3][i].y = 0.0f; + work->unk_50[3][i].z = 100.0 * cosd((30.0f * i)); + } + DCStoreRangeNoSync(work->unk_40, sizeof(work->unk_40)); + DCStoreRangeNoSync(work->unk_50, sizeof(work->unk_50)); + PPCSync(); + object->model[0] = Hu3DHookFuncCreate(fn_1_AB6C); + Hu3DModelLayerSet(object->model[0], 4); + object->model[1] = Hu3DHookFuncCreate(fn_1_ABDC); + Hu3DModelLayerSet(object->model[1], 6); + object->func = fn_1_AB68; +} + +void fn_1_AB68(omObjData *object) { } + +void fn_1_AB6C(ModelData *model, Mtx matrix) +{ + M421DllPlayerDLWork *work = lbl_1_bss_44->data; + GXPixModeSync(); + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, GX_FALSE); + GXCopyTex(work->unk_2F4, GX_FALSE); + GXPixModeSync(); +} + +void fn_1_ABDC(ModelData *model, Mtx matrix) +{ + Mtx sp118; + Mtx spE8; + Mtx spB8; + Mtx sp88; + Mtx sp58; + Mtx sp28; + GXTexObj sp8; + + M421DllPlayerDLWork *work; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + work = lbl_1_bss_44->data; + MTXTrans(spE8, -400.0f, 400.0f, -700.0f); + MTXConcat(Hu3DCameraMtx, spE8, sp88); + GXLoadPosMtxImm(sp88, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXInitTexObj(&sp8, work->unk_2F4, 0x280, 0x1E0, 5, 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, GX_TEXMAP0); + GXSetNumTexGens(1); + C_MTXLightPerspective(spB8, 41.5f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXConcat(spB8, Hu3DCameraMtx, spB8); + MTXInverse(Hu3DCameraMtx, sp58); + MTXConcat(sp58, sp88, sp118); + MTXConcat(spB8, sp118, spE8); + GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, 0, 0x7D); + MTXInverse(Hu3DCameraMtx, sp28); + sp28[0][3] = sp28[1][3] = sp28[2][3] = 0.0f; + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + work->unk_00[var_r30] = ((M421DllPlayerWork *)lbl_1_bss_48[var_r30]->data)->unk_F0; + if (work->unk_30[var_r30] == 2) { + var_r27 = 2; + } + else { + var_r27 = 0; + } + var_r28 = var_r27; + MTXTrans(spE8, work->unk_00[var_r30].x, work->unk_00[var_r30].y, work->unk_00[var_r30].z); + MTXConcat(spE8, sp28, spE8); + MTXConcat(Hu3DCameraMtx, spE8, sp88); + GXLoadPosMtxImm(sp88, 0); + MTXConcat(sp58, sp88, sp118); + MTXConcat(spB8, sp118, spE8); + GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4); + GXSetArray(GX_VA_POS, work->unk_50[var_r28], 0xC); + GXSetArray(GX_VA_CLR0, &work->unk_40[var_r28], 4); + GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0xE); + GXPosition1x8(0); + GXPosition1x8(0); + for (var_r29 = 1; var_r29 < 0xE; var_r29++) { + GXColor1x8(var_r29); + GXColor1x8(1); + } + MTXTrans(spE8, work->unk_00[var_r30].x, 0.0f, work->unk_00[var_r30].z); + MTXConcat(Hu3DCameraMtx, spE8, sp88); + GXLoadPosMtxImm(sp88, 0); + MTXConcat(sp58, sp88, sp118); + MTXConcat(spB8, sp118, spE8); + GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4); + GXSetArray(GX_VA_POS, work->unk_50[var_r28 + 1], 0xC); + GXSetArray(GX_VA_CLR0, &work->unk_40[var_r28], 4); + GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0xE); + GXPosition1x8(0); + GXPosition1x8(0); + for (var_r29 = 1; var_r29 < 0xE; var_r29++) { + GXColor1x8(var_r29); + GXColor1x8(1); + } + } +} diff --git a/src/REL/m422Dll/main.c b/src/REL/m422Dll/main.c new file mode 100755 index 00000000..79b64b3c --- /dev/null +++ b/src/REL/m422Dll/main.c @@ -0,0 +1,1762 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" + + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ u32 unk04; +} StructBss104; // Size 4 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04[3]; +} StructBss54; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss3CData; // Size 0x44 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ u32 unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ char unk28[4]; + /* 0x2C */ s32 unk2C; +} StructDataF0; // Size 0x30 + +void fn_1_B480(omObjData *arg0); + +StructBss104 lbl_1_bss_104[3][8]; +StructBss54 lbl_1_bss_54[11]; +omObjData *lbl_1_bss_50; +omObjData *lbl_1_bss_4C; +omObjData *lbl_1_bss_3C[4]; +omObjData *lbl_1_bss_38; +s32 lbl_1_bss_34; +Process *lbl_1_bss_30; +s16 lbl_1_bss_2E; +s16 lbl_1_bss_2C; +s32 lbl_1_bss_28; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; // unused +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; // unused +s32 lbl_1_bss_C; +float lbl_1_bss_8; +float lbl_1_bss_4; +float lbl_1_bss_0; + +const float lbl_1_rodata_10[12] = { 25.0f, 95.0f, 25.0f, 75.0f, 75.0f, 75.0f, 35.0f, 35.0f, 35.0f, 25.0f, 50.0f, 50.0f }; + +const float lbl_1_rodata_40[12] = { 75.0f, 0.0f, 75.0f, 0.0f, 0.0f, 0.0f, 20.0f, 20.0f, 20.0f, 50.0f, 0.0f, 0.0f }; + +const float lbl_1_rodata_70[12] = { 75.0f, 0.0f, 37.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 70.0f, 0.0f, 0.0f }; + +const float lbl_1_rodata_A0[12] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 75.0f, 50.0f, 0.0f }; + +const float lbl_1_rodata_D0[12] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +const float lbl_1_rodata_100[12] = { 30.0f, 30.0f, 30.0f, 30.0f, 30.0f, 30.0f, 40.0f, 40.0f, 40.0f, 0.0f, 0.0f, 0.0f }; + +const float lbl_1_rodata_130[12] = { 290.0f, 290.0f, 290.0f, 370.0f, 370.0f, 370.0f, 450.0f, 450.0f, 450.0f, 0.0f, 0.0f, 0.0f }; + +s32 lbl_1_data_0[] = { DATA_MAKE_NUM(DATADIR_MGCONST, 41), DATA_MAKE_NUM(DATADIR_MGCONST, 40), DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), DATA_MAKE_NUM(DATADIR_MGCONST, 8), DATA_MAKE_NUM(DATADIR_M422, 51), DATA_MAKE_NUM(DATADIR_MGCONST, 0), + DATA_MAKE_NUM(DATADIR_MGCONST, 37), DATA_MAKE_NUM(DATADIR_MGCONST, 36), DATA_MAKE_NUM(DATADIR_MGCONST, 51), DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 8), DATA_MAKE_NUM(DATADIR_M422, 51), DATA_MAKE_NUM(DATADIR_MGCONST, 12), DATA_MAKE_NUM(DATADIR_MGCONST, 12), + DATA_MAKE_NUM(DATADIR_MGCONST, 12) }; + +s32 lbl_1_data_40[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E0000, 0x00190000, 0x006C0000, 0x00890000, 0x00840000, 0x00100000, + 0x000C0000, 0x00800000 }; + +s32 lbl_1_data_A0[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M422, 0), DATA_MAKE_NUM(DATADIR_M422, 8), DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) }; + +u32 lbl_1_data_C0[] = { 0, 0, 0, 1, 1, 0, 0, 0 }; +u8 lbl_1_data_E0[] = { 0, 0, 0, 1, 0, 1, 1 }; +u8 lbl_1_data_E7[] = { 8, 8, 8, 0, 12, 0, 8, 8, 0 }; +StructDataF0 lbl_1_data_F0[12][10] = { 0 }; + +char *lbl_1_data_1828[] + = { "m422al01-cube8", "m422al02-cyl143", "m422al03-cube11", "m422am01-cyl76", "m422am02-cube13", "m422am03-cube12", "m422as01-cube9", + "m422test11-cube9", "m422test12-cube9", "m422m09m-m422m09m", "coin", "m422a04-sphere2", "m422m09m-m422m09m", "m422m09m-m422m09m", + "m422m09m-m422m09m", "m422m09m-m422m09m", "m422m09m-m422m09m", "m422m09m-m422m09m", "m422m09m-m422m09m", "m422m09m-m422m09m" }; + +s32 lbl_1_data_1878[11] = { 0 }; +s32 lbl_1_data_18A4[2] = { 0 }; +s32 lbl_1_data_18AC = -1; +s32 lbl_1_data_18B0 = -1; + +float lbl_1_data_18B4[][4] + = { { 0.0f, 300.0f, 450.0f, 180.0f }, { -200.0f, 0.0f, 1050.0f, 180.0f }, { 0.0f, 0.0f, 1050.0f, 180.0f }, { 200.0f, 0.0f, 1050.0f, 180.0f } }; + +s32 lbl_1_data_18F4[] = { 0, 0 }; + +float lbl_1_data_18FC = 1.0f; // unused +s32 lbl_1_data_1900 = -1; + +void fn_1_A0(void) +{ + Center.x += 10.0 * (((HuPadBtn[0] & 2) != 0) - ((HuPadBtn[0] & 1) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & 8) != 0) - ((HuPadBtn[0] & 4) != 0)); + Center.y += ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0) * 30.0; + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; +} + +void fn_1_2FC(omObjData *arg0) +{ + Mtx sp254; + s32 sp1CC; + s32 sp1C8; + s32 sp1A4; + float sp1A0; + float sp158; + float sp154; + float sp150; + float sp14C; + float sp148; + s32 sp144; + float sp140; + float sp13C; + float sp138; + float sp134; + float sp130; + float sp12C; + float sp128; + s32 sp124; + float sp120; + float sp11C; + float sp118; + s32 var_r17; + s32 sp114; + float temp_f23; + float temp_f22; + float temp_f25; + float temp_f24; + float temp_f27; + float temp_f26; + float phi_f29; + float phi_f28; + StructDataF0 *temp_r28; + StructDataF0 *temp_r29; + StructBss3CData *temp_r31; + s32 var_r19; + s32 phi_r23; + s32 phi_r26; + s32 phi_r22; + s32 phi_r21; + s16 phi_r25; + s32 phi_r24; + s32 phi_r20; + s32 var_r18; + s32 i; + + temp_r31 = arg0->data; + sp158 = 0.0f; + sp154 = 0.0f; + sp150 = 0.0f; + phi_r25 = -1; + if (temp_r31->unk20 == 0 || temp_r31->unk20 == 1) { + arg0->trans.z += lbl_1_bss_0; + } + temp_r31->unk2C = temp_r31->unk34 = 0.0f; + if (lbl_1_bss_34 != 1004 || !(lbl_1_bss_8 < 45.0f)) { + if (lbl_1_bss_34 >= 1004 && temp_r31->unk20 != 0) { + temp_f25 = lbl_1_data_18B4[temp_r31->unk00][0] - arg0->trans.x; + temp_f24 = lbl_1_data_18B4[temp_r31->unk00][2] - arg0->trans.z; + sp14C = 270.0 + atan2d(temp_f25, temp_f24) - CRot.y; + sp148 = sqrtf(temp_f25 * temp_f25 + temp_f24 * temp_f24); + sp148 = (sp148 > 100.0f) ? 72.0f : (sp148 < 12.0f) ? 0.0f : (72.0f * (sp148 / 100.0f)); + sp154 = sp148 * cosd(sp14C); + sp150 = sp148 * sind(sp14C); + if (sp148 == 0.0f) { + temp_r31->unk20 = 0; + } + } + else if (temp_r31->unk20 == 1) { + if (temp_r31->unk0C != -1) { + sp154 = HuPadStkX[temp_r31->unk0C]; + sp150 = HuPadStkY[temp_r31->unk0C]; + } + else { + float sp238[7] = { 0 }; + float sp21C[7] = { 0 }; + float sp1EC[] = { -400.0f, -550.0f, -700.0f, -800.0f }; + float sp1DC[] = { -800.0f, -900.0f, -1100.0f, -2100.0f }; + Vec sp1D0; + + sp154 = sp150 = 0.0f; + for (i = 0; i < 7; i++) { + sp238[i] = (temp_r31->unk00 == 0 ? 600.0f : 1400.0f) + sp1EC[temp_r31->unk10]; + sp21C[i] = (temp_r31->unk00 == 0 ? 600.0f : 1400.0f) + sp1EC[temp_r31->unk10]; + } + for (i = 0; i < 12; i++) { + for (phi_r23 = 0; phi_r23 < (i < 10 ? 4 : 10); phi_r23++) { + temp_r28 = &lbl_1_data_F0[i][phi_r23]; + sp144 = (i < 10) ? (i * 4 + 43 + phi_r23) : ((i - 10) * 10 + 83 + phi_r23); + if (temp_r28->unk04 != 0 && !(temp_r28->unk14 < 0.0f)) { + Hu3DModelObjPosGet(lbl_1_bss_38->model[sp144], lbl_1_data_1828[temp_r28->unk00], &sp1D0); + phi_r26 = (s32)(300.0f + sp1D0.x + 2000.0f) / 100 - 20; + phi_r26--; + for (phi_r22 = 0; phi_r22 < 3; phi_r26++, phi_r22++) { + if (phi_r26 >= 0 && phi_r26 < 7 + && arg0->trans.z + 50.0f >= sp1D0.z - lbl_1_rodata_10[temp_r28->unk00] - lbl_1_rodata_70[temp_r28->unk00] + && sp1D0.x - lbl_1_rodata_10[temp_r28->unk00] - lbl_1_rodata_70[temp_r28->unk00] - 50.0f < (phi_r26 - 3) * 100 + && sp1D0.x + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00] + 50.0f > (phi_r26 - 3) * 100) { + if (temp_r28->unk00 < 10) { + if (sp238[phi_r26] < sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]) { + sp238[phi_r26] = sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]; + } + } + else { + if (sp21C[phi_r26] < sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]) { + sp21C[phi_r26] = sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00] + + (temp_r28->unk00 < 11); + } + } + } + } + } + } + } + phi_r26 = (s32)(300.0f + arg0->trans.x + 2000.0f) / 100 - 20; + phi_r26 = (phi_r26 < 0) ? 0 : (phi_r26 >= 7) ? 6 : phi_r26; + for (i = 0, phi_r22 = phi_r26; i < 7; i++) { + var_r19 = ((temp_r31->unk00 / 2) % 2 == 0) ? i : (6 - i); + if (sp21C[phi_r22] - 60.0 * fabs(phi_r22 - phi_r26) < sp21C[var_r19] - 60.0 * fabs(var_r19 - phi_r26) + && sp238[var_r19] < sp21C[var_r19]) { + phi_r22 = var_r19; + } + } + sp238[phi_r22] -= 1.0f; + for (i = 0, phi_r23 = phi_r26; i < 7; i++) { + var_r17 = ((temp_r31->unk00 / 2) % 2 == 0) ? i : (6 - i); + if (sp238[phi_r23] > sp238[var_r17]) { + phi_r23 = var_r17; + } + } + sp140 = arg0->trans.z - (temp_r31->unk00 == 0 ? -100.0f : 700.0f); + sp13C = (((sp238[phi_r22] > sp140 - 400.0f || sp140 > 550.0f) ? phi_r23 + : (sp140 > 500.0f) ? ((sp140 - 500.0f) / 50.0f) * phi_r23 + (1.0f - (sp140 - 500.0f) / 50.0f) * phi_r22 + : phi_r22) + - 3.0f) + * 100.0f + - arg0->trans.x; + { + float sp1C4[] = { -21.0f, 0.0f, 15.0f }; + float sp1B8[] = { 60.0f, 65.0f, 53.0f }; + float sp1AC[] = { 54.0f, 72.0f, 59.0f }; + float sp1A0[] = { -15.0f, 7.0f, 22.0f }; + + var_r18 = (temp_r31->unk14 / 5) % 3; + var_r18 = (temp_r31->unk00 == 0) ? (arg0->trans.z < 200.0f ? 0 : 1) : 2; + sp13C /= 20.0f; + sp13C = (sp13C < -1.0f) ? sp13C : (sp13C > 1.0f) ? 1.0f : sp13C; + sp138 = (sp13C < 0.0f) ? -sp13C : sp13C; + sp134 = 1.0f - sp138; + sp154 = (sp13C < 0.0f) ? (36.0f * sp134 + sp138 * sp1C4[var_r18]) : (36.0f * sp134 + sp138 * sp1B8[var_r18]); + sp150 = (sp13C < 0.0f) ? (42.0f * sp134 + sp138 * sp1AC[var_r18]) : (42.0f * sp134 + sp138 * sp1A0[var_r18]); + } + temp_f23 = temp_r31->unk38 - sp154; + temp_f22 = temp_r31->unk3C - sp150; + if (sqrtf(temp_f23 * temp_f23 + temp_f22 * temp_f22) > 50.0f) { + temp_r31->unk40++; + } + else { + temp_r31->unk40 = 0; + } + if (temp_r31->unk40 >= 2) { + sp154 = temp_r31->unk38; + sp150 = temp_r31->unk3C; + temp_r31->unk40 = 0; + } + temp_r31->unk38 = sp154; + temp_r31->unk3C = sp150; + } + } + } + if (temp_r31->unk20 == 2) { + sp130 = arg0->trans.y; + sp12C = arg0->trans.z; + phi_r25 = 4; + arg0->trans.z += 9.375; + if (temp_r31->unk00 == 0 && lbl_1_data_1900 != -1 && arg0->trans.z > (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) + 50.0f + && sp12C <= (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) + 50.0f) { + HuAudFXStop(lbl_1_data_1900); + lbl_1_data_1900 = -1; + } + temp_r31->unk30 -= 1.0f; + arg0->trans.y += (arg0->trans.z > (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) - 50.0f) ? temp_r31->unk30 : 0.0f; + if (temp_r31->unk00 == 0 && lbl_1_data_1900 == -1 && arg0->trans.z > 670.0f && arg0->trans.z < 1450.0f && arg0->trans.y == 0.0f + && sp130 > 0.0f) { + lbl_1_data_1900 = HuAudFXPlay(0x612); + } + if (arg0->trans.z < 1400.0f && arg0->trans.y <= 0.0f) { + arg0->trans.y = 0.0f; + temp_r31->unk30 = 0.0f; + } + arg0->rot.y += (arg0->rot.y < 0.0f) ? 360 : (arg0->rot.y > 360.0f) ? -360 : 0; + arg0->rot.y = (arg0->rot.y > 140.0f && arg0->rot.y < 220.0f) ? 180.0f + : (arg0->rot.y < 180.0f) ? (40.0f + arg0->rot.y) + : (arg0->rot.y > 180.0f) ? (arg0->rot.y - 40.0f) + : arg0->trans.y; + ; + if (lbl_1_bss_C % 4 < 3) { + Hu3DModelAttrReset(arg0->model[0], 1); + } + else { + Hu3DModelAttrSet(arg0->model[0], 1); + } + if (arg0->trans.y < -500.0f) { + temp_r31->unk20 = 3; + Hu3DModelAttrSet(arg0->model[0], 1); + } + } + else if (temp_r31->unk20 != 3 && temp_r31->unk20 != 4) { + if (temp_r31->unk20 == 5) { + if (temp_r31->unk24 == 0) { + phi_r25 = 3; + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + Hu3DModelAttrReset(arg0->model[0], 1); + } + temp_r31->unk24++; + if (temp_r31->unk24 == 30) { + temp_r31->unk1C = -1; + temp_r31->unk18 = phi_r25 = 0; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + if (temp_r31->unk24 >= 31 && temp_r31->unk24 <= 38) { + arg0->trans.x -= 150.0 * -sind(arg0->rot.y) / 7.0; + arg0->trans.z -= 150.0 * -cosd(arg0->rot.y) / 7.0; + } + else { + arg0->trans.x = lbl_1_data_F0[9][temp_r31->unk00].unk0C; + arg0->trans.y = (temp_r31->unk00 == 0) ? 300 : 0; + arg0->trans.z = lbl_1_data_F0[9][temp_r31->unk00].unk14; + } + if (temp_r31->unk24 == 34 && temp_r31->unk00 == 0) { + Hu3DMotionTimeSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], 15.0f + Hu3DMotionTimeGet(lbl_1_bss_38->model[temp_r31->unk00 + 79])); + } + if (temp_r31->unk24 == 38) { + temp_r31->unk20 = 1; + } + } + else { + float temp_f31 = 0.25 * sp154; + float temp_f30 = 0.25 * -sp150; + Vec sp194 = { 0.0f, 0.0f, 0.0f }; + + sp194.x = temp_f31; + sp194.z = temp_f30; + MTXRotRad(sp254, 'y', MTXDegToRad(CRot.y)); + MTXMultVec(sp254, &sp194, &sp194); + temp_f31 = sp194.x; + temp_f30 = sp194.z; + sp158 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (sp158 >= 0.5f) { + if (sp158 < 10.0f) { + temp_r31->unk2C = temp_f31; + temp_r31->unk34 += temp_f30; + } + else { + temp_f31 /= sp158; + temp_f30 /= sp158; + sp158 = 10.0f; + temp_r31->unk2C = temp_f31 * sp158; + temp_r31->unk34 = temp_f30 * sp158; + } + temp_r31->unk28 = sp158; + arg0->rot.y = atan2d(temp_r31->unk2C, temp_r31->unk34); + if (temp_r31->unk20 == 1) { + if (temp_r31->unk28 >= 8.0f) { + phi_r25 = 2; + } + else { + phi_r25 = 1; + } + } + } + else if (temp_r31->unk20 == 1) { + phi_r25 = 0; + } + if (lbl_1_bss_34 == 1005 && (temp_r31->unk20 == 1 || temp_r31->unk20 == 0)) { + temp_r31->unk1C = (lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] > 0) ? 6 : 7; + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + temp_r31->unk20 = 0; + if (lbl_1_bss_8 == 1.0f && lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] > 0) { + s32 sp1FC[] = { 0x122, 0x162, 0x1A2, 0x1E2, 0x222, 0x262, 0x2A2, 0x2E2 }; + + HuAudFXPlay(sp1FC[temp_r31->unk08]); + } + } + if (lbl_1_bss_34 >= 1004 && temp_r31->unk20 == 0) { + arg0->rot.y = 2.4f + 0.8f * arg0->rot.y; + if (temp_r31->unk18 != 6 && temp_r31->unk18 != 7) { + phi_r25 = 0; + } + } + arg0->trans.x += temp_r31->unk2C; + arg0->trans.z += temp_r31->unk34; + if (temp_r31->unk00 != 0) { + for (phi_r21 = 1; phi_r21 < 4; phi_r21++) { + temp_f27 = lbl_1_bss_3C[phi_r21]->trans.x - arg0->trans.x; + phi_f29 = lbl_1_bss_3C[phi_r21]->trans.z - arg0->trans.z; + if (phi_r21 != temp_r31->unk00) { + if (temp_f27 == 0.0f && phi_f29 == 0.0f) { + phi_f29 = -1.0f; + } + sp128 = sqrtf(temp_f27 * temp_f27 + phi_f29 * phi_f29); + if (sp128 < 100.0f) { + temp_f27 *= (100.0f / sp128); + phi_f29 *= (100.0f / sp128); + arg0->trans.x = lbl_1_bss_3C[phi_r21]->trans.x - temp_f27; + arg0->trans.z = lbl_1_bss_3C[phi_r21]->trans.z - phi_f29; + } + } + } + } + if (lbl_1_bss_34 > 1001) { + for (phi_r24 = 0; phi_r24 < 12; phi_r24++) { + if (phi_r24 == 9 && lbl_1_bss_34 <= 1001) { } + for (phi_r20 = 0; phi_r20 < (phi_r24 < 10 ? 4 : 10); phi_r20++) { + temp_r29 = &lbl_1_data_F0[phi_r24][phi_r20]; + sp124 = (phi_r24 < 10) ? (phi_r24 * 4 + 43 + phi_r20) : ((phi_r24 - 10) * 10 + 83 + phi_r20); + if (temp_r29->unk04 != 0 && temp_r29->unk2C <= 0) { + Vec sp188; + + Hu3DModelObjPosGet(lbl_1_bss_38->model[sp124], lbl_1_data_1828[temp_r29->unk00], &sp188); + if (((temp_r29->unk04 == 3 || (temp_r29->unk04 == 4 && sp188.y >= 250.0f)) && temp_r31->unk00 == 0) + || (((temp_r29->unk04 == 4 && sp188.y < 250.0f) || temp_r29->unk04 == 5 || temp_r29->unk04 == 6) + && temp_r31->unk00 != 0)) { + sp11C = sp188.x; + sp118 = sp188.z; + if (lbl_1_rodata_40[temp_r29->unk00] > 0.0f || lbl_1_rodata_70[temp_r29->unk00] > 0.0f) { + sp11C = (arg0->trans.x < sp11C - lbl_1_rodata_40[temp_r29->unk00]) ? (sp11C - lbl_1_rodata_40[temp_r29->unk00]) + : (arg0->trans.x > sp11C + lbl_1_rodata_40[temp_r29->unk00]) ? (sp11C + lbl_1_rodata_40[temp_r29->unk00]) + : arg0->trans.x; + sp118 = (arg0->trans.z < sp118 - lbl_1_rodata_70[temp_r29->unk00]) ? (sp118 - lbl_1_rodata_70[temp_r29->unk00]) + : (arg0->trans.z > sp118 + lbl_1_rodata_70[temp_r29->unk00]) ? (sp118 + lbl_1_rodata_70[temp_r29->unk00]) + : arg0->trans.z; + } + temp_f26 = sp11C - arg0->trans.x; + phi_f28 = sp118 - arg0->trans.z; + if (phi_r24 < 10 && temp_f26 == 0.0f && phi_f28 == 0.0f) { + phi_f28 = -1.0f; + } + sp120 = sqrtf(temp_f26 * temp_f26 + phi_f28 * phi_f28); + if (sp120 < 50.0f + lbl_1_rodata_10[temp_r29->unk00]) { + if (phi_r24 < 10) { + temp_f26 *= (50.0f + lbl_1_rodata_10[temp_r29->unk00]) / sp120; + phi_f28 *= (50.0f + lbl_1_rodata_10[temp_r29->unk00]) / sp120; + arg0->trans.x = sp11C - temp_f26; + arg0->trans.z = sp118 - phi_f28; + } + else { + temp_r29->unk04 = 0; + lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] += (phi_r24 == 10 ? 1 : 5); + CharModelCoinEffectCreate(-1, &sp188); + if (lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00 < 3) { + lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk04[lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00] = 0.0f; + lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00++; + } + } + } + } + } + } + } + } + if (arg0->trans.z > (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f) { + temp_r31->unk20 = 2; + temp_r31->unk30 = 0.0f; + HuAudCharVoicePlay(temp_r31->unk08, 0x123); + } + if (temp_r31->unk20 != 2) { + if (arg0->trans.x > (temp_r31->unk00 == 0 ? 400 : 400) - 50.0f) { + arg0->trans.x = (temp_r31->unk00 == 0 ? 400 : 400) - 50.0f; + } + if (arg0->trans.x < -(temp_r31->unk00 == 0 ? 400 : 400) + 50.0f) { + arg0->trans.x = -(temp_r31->unk00 == 0 ? 400 : 400) + 50.0f; + } + if (arg0->trans.z < (temp_r31->unk00 == 0 ? 0.0f : 600.0f) + 50.0f) { + arg0->trans.z = (temp_r31->unk00 == 0 ? 0.0f : 600.0f) + 50.0f; + } + if (arg0->trans.z > (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f) { + arg0->trans.z = (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f; + } + } + } + } + if (lbl_1_bss_34 == 1001) { + sp114 = temp_r31->unk00; + if (lbl_1_bss_8 == 23.0f) { + Hu3DMotionSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], lbl_1_bss_38->motion[temp_r31->unk00 + 22]); + Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE); + if (lbl_1_bss_54[4].unk00 < 3) { + lbl_1_bss_54[4].unk04[lbl_1_bss_54[4].unk00] = 0.0f; + lbl_1_bss_54[4].unk00++; + } + } + if (lbl_1_bss_8 == 43.0f) { + Hu3DModelAttrSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 80.0f) { + Hu3DMotionTimeSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], 20.0f); + Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 100.0f && lbl_1_bss_54[0].unk00 < 3) { + lbl_1_bss_54[0].unk04[lbl_1_bss_54[0].unk00] = 0.0f; + lbl_1_bss_54[0].unk00++; + } + if (lbl_1_bss_8 == 106.0f) { + Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 39], 1); + Hu3DParticleCntSet(lbl_1_bss_38->model[temp_r31->unk00 + 39], 0); + lbl_1_bss_18 = 1; + } + if (lbl_1_bss_8 == 60.0f) { + Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DMotionSet(arg0->model[0], arg0->motion[3]); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 61.0f) { + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 120.0f) { + phi_r25 = 3; + Hu3DModelAttrReset(arg0->model[0], 1); + } + if (lbl_1_bss_8 == 155.0f) { + phi_r25 = 0; + } + arg0->trans.x = lbl_1_data_F0[9][sp114].unk0C; + arg0->trans.z = (lbl_1_bss_8 > 163.0f) ? arg0->trans.z : (lbl_1_bss_8 > 155.0f) ? (arg0->trans.z - 18.75) : lbl_1_data_F0[9][sp114].unk14; + } + if (temp_r31->unk1C >= 0) { + phi_r25 = temp_r31->unk1C; + } + if (phi_r25 >= 0 && phi_r25 != temp_r31->unk18) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[phi_r25], 0.0f, lbl_1_data_E7[phi_r25], + (lbl_1_data_E0[phi_r25] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + temp_r31->unk18 = phi_r25; + } +} + +s32 fn_1_34BC(float arg0, float arg1, float arg2, s32 arg3, s32 arg4) +{ + Vec sp1C; + float var_f27; + float var_f28; + float var_f25; + float var_f26; + float temp_f30; + float var_f31; + float sp18; + StructDataF0 *temp_r31; + s32 var_r24; + s32 i; + s32 j; + + for (i = 0; i < 12; i++) { + for (j = 0; j < (i < 10 ? 4 : 10); j++) { + temp_r31 = &lbl_1_data_F0[i][j]; + var_r24 = (i < 10) ? (i * 4 + 43 + j) : ((i - 10) * 10 + 83 + j); + if (temp_r31->unk04 != 0 && temp_r31->unk2C <= 0) { + Hu3DModelObjPosGet(lbl_1_bss_38->model[var_r24], lbl_1_data_1828[temp_r31->unk00], &sp1C); + if (temp_r31->unk04 == 3 || temp_r31->unk04 == 5) { + var_f27 = (temp_r31->unk08 == 0) ? temp_r31->unk0C : sp1C.x; + var_f28 = (temp_r31->unk08 == 0) ? temp_r31->unk14 : sp1C.z; + var_f25 = 50.0f + lbl_1_rodata_70[temp_r31->unk00]; + var_f26 = 50.0f + lbl_1_rodata_70[temp_r31->unk00]; + if (temp_r31->unk04 == 3) { + float sp28[][12] = { { -25.0f, -25.0f, -25.0f, -6.6875f, -6.6875f, -6.6875f, 62.765625f, 62.765625f, 62.765625f, 51.99469f, + 76.875f, 45.0f }, + { -27.647583f, -27.647583f, -27.647583f, -9.64325f, -9.64325f, -9.64325f, 60.49022f, 60.49022f, 60.49022f, 51.99469f, + 76.875f, 45.0f } }; + + var_f28 += sp28[temp_r31->unk08 == 0 ? 0 : 1][temp_r31->unk00]; + var_f25 += 50.0f; + var_f26 += 50.0f; + } + else if (temp_r31->unk04 == 5 && temp_r31->unk08 == 0) { + var_f28 += lbl_1_rodata_130[temp_r31->unk00]; + } + else if (temp_r31->unk04 == 1) { + var_f27 = (temp_r31->unk0C < 0.0f ? -1 : 1) * 321; + var_f28 = 880.0f - lbl_1_bss_0 * (100 - temp_r31->unk08); + } + if (temp_r31->unk00 == 9) { + var_f26 += 300.0f; + } + if (lbl_1_rodata_40[temp_r31->unk00] > 0.0f || var_f25 > 0.0f || var_f26 > 0.0f) { + var_f27 = (arg0 < var_f27 - lbl_1_rodata_40[temp_r31->unk00]) ? (var_f27 - lbl_1_rodata_40[temp_r31->unk00]) + : (arg0 > var_f27 + lbl_1_rodata_40[temp_r31->unk00]) ? (var_f27 + lbl_1_rodata_40[temp_r31->unk00]) + : arg0; + var_f28 = (arg1 < var_f28 - var_f25) ? (var_f28 - var_f25) : (arg1 > var_f28 + var_f26) ? (var_f28 + var_f26) : arg1; + } + temp_f30 = var_f27 - arg0; + var_f31 = var_f28 - arg1; + if (i < 10 && temp_f30 == 0.0f && var_f31 == 0.0f) { + var_f31 = -1.0f; + } + sp18 = sqrtf(temp_f30 * temp_f30 + var_f31 * var_f31); + if (sp18 < arg2 + lbl_1_rodata_10[temp_r31->unk00]) { + return 1; + } + } + } + } + } + return 0; +} + +void fn_1_3B74(omObjData *arg0) +{ + StructBss3CData *sp354[4]; + Vec sp348; + s32 var_r20; + s32 var_r19; + s32 var_r18; + s32 var_r17; + s32 sp230; + s32 sp22C; + s32 sp228; + s32 sp224; + s32 sp220; + s32 sp21C; + s32 sp218; + float sp214; + float sp210; + float sp20C; + s32 sp208; + float var_f25; + float var_f24; + float temp_f21; + float temp_f20; + float temp_f23; + float temp_f22; + float temp_f26; + float temp_f28; + float temp_f27; + float temp_f29; + float temp_f30; + float temp_f31; + StructDataF0 *temp_r31; + s32 var_r21; + s32 var_r28; + s32 var_r27; + s32 var_r25; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) { + sp354[i] = lbl_1_bss_3C[i]->data; + } + lbl_1_bss_C++; + lbl_1_bss_0 = (lbl_1_bss_34 <= 1002) ? 1.5 + : (lbl_1_bss_34 == 1003) ? (7.5 * (lbl_1_bss_8 > 120.0f ? 1.0 : (0.2 + 0.8 * (lbl_1_bss_8 / 120.0)))) + : 0.0; + lbl_1_bss_4 = (lbl_1_bss_34 < 1005 && sp354[0]->unk20 >= 2 && sp354[0]->unk20 <= 5 && !(lbl_1_bss_34 == 1003 && lbl_1_bss_8 <= 120.0f)) + ? 7.5 + : lbl_1_bss_0; + Hu3DMotionSpeedSet(arg0->model[1], 1.5 * lbl_1_bss_4 / 7.5); + Hu3DMotionSpeedSet(arg0->model[3], 1.5 * lbl_1_bss_0 / 7.5); + if (lbl_1_data_18B0 != -1) { + temp_f21 = 1.5 * lbl_1_bss_4 / 7.5; + HuAudFXPitchSet(lbl_1_data_18B0, 8190.0f * temp_f21 - 8190.0f); + HuAudFXVolSet(lbl_1_data_18B0, temp_f21 <= 0.001 ? 0 : 127); + } + if (lbl_1_bss_34 <= 1001) { + temp_f31 = (lbl_1_bss_34 == 1000 || lbl_1_bss_8 < 60.0f) ? 0.0 : (lbl_1_bss_8 < 120.0f) ? (lbl_1_bss_8 - 60.0f) / 60.0 : 1.0; + temp_f31 = 1.0f - temp_f31; + temp_f31 *= temp_f31; + temp_f31 = 1.0f - temp_f31; + temp_f28 = 1.0f - temp_f31; + Center.x = 690.0f * temp_f31; + Center.y = 400.0f * temp_f28 + 1340.0f * temp_f31; + Center.z = 500.0f * temp_f28 + 1380.0f * temp_f31; + CRot.x = -10.0f * temp_f28 + -50.8125f * temp_f31; + CRot.y = 40.0f * temp_f31; + CZoom = 2126.6f * temp_f28 + 2126.6f * temp_f31; + Center.x = 700.0f * temp_f31; + Center.y = 400.0f * temp_f28 + 870.0f * temp_f31; + Center.z = 500.0f * temp_f28 + 1320.0f * temp_f31; + CRot.x = -10.0f * temp_f28 + -37.25f * temp_f31; + CRot.y = 40.0f * temp_f31; + } + if (lbl_1_bss_34 == 1005 && lbl_1_bss_8 < 100.0f) { + temp_f30 = (lbl_1_bss_8 < 90.0f) ? (lbl_1_bss_8 / 90.0) : 1.0; + temp_f30 = 1.0f - temp_f30; + temp_f30 *= temp_f30; + temp_f30 = 1.0f - temp_f30; + temp_f26 = 1.0f - temp_f30; + Center.x = 120.0f * temp_f30 + 700.0f * temp_f26; + Center.y = 292.5f * temp_f30 + 870.0f * temp_f26; + Center.z = 1200.0f * temp_f30 + 1320.0f * temp_f26; + CRot.x = -19.5f * temp_f30 + -37.25f * temp_f26; + CRot.y = 13.5f * temp_f30 + 40.0 * temp_f26; + CZoom = 2126.6f * temp_f30 + 2126.6f * temp_f26; + } + var_r20 = (sp354[0]->unk20 == 3 && (lbl_1_data_F0[9][0].unk04 == 0 || lbl_1_bss_34 != 1003)); + sp22C = (sp354[1]->unk20 == 3 && (lbl_1_data_F0[9][1].unk04 == 0 || lbl_1_bss_34 != 1003)) + + (sp354[2]->unk20 == 3 && (lbl_1_data_F0[9][2].unk04 == 0 || lbl_1_bss_34 != 1003)) + + (sp354[3]->unk20 == 3 && (lbl_1_data_F0[9][3].unk04 == 0 || lbl_1_bss_34 != 1003)); + var_r19 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 1 + var_r20) : var_r20; + var_r18 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 120 == 0) ? (rand8() % 2 + 1) : 0; + var_r17 = sp22C + (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0 && lbl_1_bss_28 > 120); + sp228 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 2) : 0; + sp224 = 0; + var_r19 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? ((rand8() % 4 < 3) + 1 + var_r20) : var_r20; + var_r18 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 120 == 1) ? (rand8() % 2 + 1) : 0; + var_r17 = sp22C + (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 38 && lbl_1_bss_28 > 120); + sp228 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 2) : 0; + while (var_r19 > 0 || var_r18 > 0 || var_r17 > 0 || sp228 > 0) { + var_r27 = (rand8() % 2 == 0) ? ((var_r17 != 0) ? 3 + : (sp228 != 0) ? 4 + : (var_r19 != 0) ? 1 + : (var_r18 != 0) ? 2 + : 0) + : ((var_r17 != 0) ? 3 + : (var_r19 != 0) ? 1 + : (sp228 != 0) ? 4 + : (var_r18 != 0) ? 2 + : 0); + sp224++; + if (sp224 > 8) { + var_r19 -= (var_r27 == 1); + var_r18 -= (var_r27 == 2); + var_r17 -= (var_r27 == 3); + sp228 -= (var_r27 == 4); + sp224 = 0; + } + else if (var_r27 == 1 || var_r27 == 2 || var_r27 == 3 || var_r27 == 4) { + var_r28 = (var_r27 != 4) ? (rand8() % 9) : 10; + if (var_r27 == 1 && var_r20 != 0) { + var_r28 = 9; + i = 0; + } + else if (var_r27 == 3 && sp22C != 0) { + var_r28 = 9; + i = (sp354[(lbl_1_bss_C % 3) + 1]->unk20 == 3 && (lbl_1_data_F0[9][lbl_1_bss_C % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) + ? (lbl_1_bss_C % 3 + 1) + : (sp354[(lbl_1_bss_C + 1) % 3 + 1]->unk20 == 3 + && (lbl_1_data_F0[9][(lbl_1_bss_C + 1) % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) + ? ((lbl_1_bss_C + 1) % 3 + 1) + : (sp354[(lbl_1_bss_C + 2) % 3 + 1]->unk20 == 3 + && (lbl_1_data_F0[9][(lbl_1_bss_C + 2) % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) + ? ((lbl_1_bss_C + 2) % 3 + 1) + : 0; + } + else { + if (var_r28 == 10 && (lbl_1_bss_28 / 60) / 15 + 1 <= 2 - lbl_1_bss_14 + && rand8() % (((lbl_1_bss_28 / 60 - (1 - lbl_1_bss_14) * 15) * 3) + 1) == 0) { + var_r28 = 11; + } + for (i = 0; i < (var_r27 != 4 ? 4 : 10); i++) { + if (lbl_1_data_F0[var_r28][i].unk04 == 0) { + break; + } + } + if (i >= (var_r27 != 4 ? 4 : 10)) { + continue; + } + } + lbl_1_data_F0[var_r28][i].unk0C = (var_r27 != 3) ? (rand8() % 7 - 3) * 100 : ((rand8() % 2) * 2 - 1) * 1595; + if (i == 0 && lbl_1_bss_34 >= 1004 && var_r28 == 9) { + lbl_1_data_F0[var_r28][i].unk0C = 0.0f; + } + lbl_1_data_F0[var_r28][i].unk10 = (var_r27 == 1) ? 300 : (var_r27 == 2) ? 0 : (var_r27 == 3) ? 500 : (var_r27 == 4) ? 300 : 0; + lbl_1_data_F0[var_r28][i].unk14 = (var_r27 == 1) ? -450 : (var_r27 == 2) ? -450 : (var_r27 == 3) ? 105 : (var_r27 == 4) ? -150 : 0; + lbl_1_data_F0[var_r28][i].unk14 += (var_r27 == 1) ? -(var_r28 <= 8 ? 0 : 0) + : (var_r27 == 2) ? -(var_r28 <= 8 ? (var_r28 / 3) * 80 : 0) + : (var_r27 == 4) ? -50 + : 0; + lbl_1_data_F0[var_r28][i].unk14 += (var_r27 == 1) ? ((var_r28 <= 2) ? 315.0 + : (var_r28 <= 5) ? 296.6875 + : (var_r28 <= 8) ? 227.234375 + : (var_r28 == 9) ? 200 + : 0) + : 0.0; + if (var_r27 == 1 || var_r27 == 4) { + float sp3C4[] = { -25.0f, -25.0f, -25.0f, -6.6875f, -6.6875f, -6.6875f, 62.765625f, 62.765625f, 62.765625f, 51.99469f, 76.875f, 45.0f, + -27.647583f, -27.647583f, -27.647583f, -9.64325f, -9.64325f, -9.64325f, 60.49022f, 60.49022f, 60.49022f, 51.99469f, 76.875f, + 45.0f }; + + var_f25 = lbl_1_data_F0[var_r28][i].unk0C; + var_f24 = sp3C4[var_r28] + lbl_1_data_F0[var_r28][i].unk14; + } + else if (var_r27 == 2) { + var_f25 = lbl_1_data_F0[var_r28][i].unk0C; + var_f24 = lbl_1_rodata_130[var_r28] + lbl_1_data_F0[var_r28][i].unk14; + } + else if (var_r27 == 3) { + var_f25 = (lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? -335 : 335; + var_f24 = 830.0f - 94.0f * lbl_1_bss_0; + } + else { + var_f25 = lbl_1_data_F0[var_r28][i].unk0C; + var_f24 = lbl_1_data_F0[var_r28][i].unk14; + } + if (fn_1_34BC( + var_f25, var_f24, lbl_1_rodata_10[lbl_1_data_F0[var_r28][i].unk00] + lbl_1_rodata_40[lbl_1_data_F0[var_r28][i].unk00], var_r28, 0) + != 0) { + continue; + } + if (var_r27 == 3 && lbl_1_data_18A4[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 0 : 1] > 0) { + continue; + } + if (var_r27 == 4) { + for (var_r21 = 0; var_r21 < 10; var_r21++) { + if (lbl_1_data_F0[10][var_r21].unk04 != 0 && fabs(lbl_1_data_F0[var_r28][i].unk14 - lbl_1_data_F0[10][var_r21].unk14) <= 100.0 + && fabs(lbl_1_data_F0[var_r28][i].unk0C - lbl_1_data_F0[10][var_r21].unk0C) <= 200.0) { + break; + } + if (lbl_1_data_F0[11][var_r21].unk04 != 0 && fabs(lbl_1_data_F0[var_r28][i].unk14 - lbl_1_data_F0[11][var_r21].unk14) <= 100.0 + && fabs(lbl_1_data_F0[var_r28][i].unk0C - lbl_1_data_F0[11][var_r21].unk0C) <= 200.0) { + break; + } + } + if (var_r21 < 10 || (lbl_1_data_F0[var_r28][i].unk0C >= -100.0f && lbl_1_data_F0[var_r28][i].unk0C <= 100.0f)) { + continue; + } + } + if (var_r28 == 11) { + lbl_1_bss_14++; + } + if ((lbl_1_bss_28 / 60) / 15 == 0 && lbl_1_bss_14 == 0) { + lbl_1_bss_14++; + } + lbl_1_data_F0[var_r28][i].unk00 = var_r28; + lbl_1_data_F0[var_r28][i].unk04 = (var_r27 == 1) ? 3 : (var_r27 == 2) ? 5 : (var_r27 == 3) ? 1 : (var_r27 == 4) ? 3 : 0; + lbl_1_data_F0[var_r28][i].unk08 = 0; + lbl_1_data_F0[var_r28][i].unk2C = 0; + lbl_1_data_F0[var_r28][i].unk18 = lbl_1_data_F0[var_r28][i].unk1C = lbl_1_data_F0[var_r28][i].unk20 = 0.0f; + if (var_r27 != 4) { + sp220 = var_r28 * 4 + 43 + i; + Hu3DMotionTimeSet(arg0->model[sp220], (var_r27 == 1 || var_r27 == 3) ? 1.0f : Hu3DMotionMaxTimeGet(arg0->model[sp220])); + Hu3DModelAttrSet(arg0->model[sp220], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[sp220], 1); + Hu3DModelRotSet(arg0->model[sp220], 0.0f, 0.0f, 0.0f); + } + else { + Hu3DModelAttrReset(arg0->model[i + (var_r28 == 10 ? 83 : 93)], 1); + } + if (var_r27 == 1 && var_r20 != 0) { + var_r20--; + sp354[0]->unk20 = 4; + } + else if (var_r27 == 3 && sp22C != 0) { + sp22C--; + sp354[i]->unk20 = 4; + } + if (var_r27 == 3) { + lbl_1_data_18A4[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 0 : 1] = 85; + Hu3DMotionTimeSet(arg0->model[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 6 : 5], 9.0f); + if (var_r28 == 9 && lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00 < 3) { + lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6] + .unk04[lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00] + = 0.0f; + lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00++; + } + } + if (var_r28 == 9) { + sp21C = var_r28 * 4 + 43 + i; + Hu3DMotionSet(arg0->model[sp21C], arg0->motion[i + 22]); + Hu3DMotionTimeSet(arg0->model[sp21C], 0.0f); + Hu3DMotionSpeedSet(arg0->model[sp21C], 2.0f); + } + var_r19 -= (var_r27 == 1); + var_r18 -= (var_r27 == 2); + var_r17 -= (var_r27 == 3); + sp228 -= (var_r27 == 4); + sp224 = 0; + } + } + for (i = 0; i < 12; i++) { + for (j = 0; j < (i < 10 ? 4 : 10); j++) { + temp_r31 = &lbl_1_data_F0[i][j]; + var_r25 = (i < 10) ? (i * 4 + 43 + j) : ((i - 10) * 10 + 83 + j); + sp348.x = sp348.y = sp348.z = 0.0f; + if (temp_r31->unk04 == 0) { + Hu3DModelAttrSet(arg0->model[var_r25], 1); + } + else { + temp_r31->unk08++; + temp_r31->unk24 += (temp_r31->unk00 == 10) ? 0 : 0; + temp_r31->unk24 += (temp_r31->unk24 < 0.0f) ? 360 : (temp_r31->unk24 > 360.0f) ? -360 : 0; + Hu3DModelObjPosGet(arg0->model[var_r25], lbl_1_data_1828[temp_r31->unk00], &sp348); + switch (temp_r31->unk04) { + case 3: + case 5: + case 6: + if (temp_r31->unk00 >= 3 && temp_r31->unk00 >= 9 && temp_r31->unk04 == 3 && temp_r31->unk14 < -120.0f + && temp_r31->unk14 + lbl_1_bss_4 >= -120.0f) { + sp218 = (500.0f + temp_r31->unk0C) / 100.0f; + sp218 = (sp218 < 0) ? 0 : (sp218 >= 11) ? 10 : sp218; + lbl_1_data_1878[sp218] = 15; + Hu3DMotionShiftSet(arg0->model[sp218 + 8], arg0->motion[11], 20.0f, 15.0f, HU3D_MOTATTR_NONE); + if (temp_r31->unk00 == 9 && lbl_1_bss_54[5].unk00 < 3) { + lbl_1_bss_54[5].unk04[lbl_1_bss_54[5].unk00] = 0.0f; + lbl_1_bss_54[5].unk00++; + } + } + temp_r31->unk14 += (temp_r31->unk04 == 3 ? lbl_1_bss_4 : lbl_1_bss_0); + if (lbl_1_bss_34 >= 1003 && lbl_1_bss_34 < 1005) { + if ((temp_r31->unk04 == 3 && temp_r31->unk00 == 9 && temp_r31->unk14 >= 150.0f && temp_r31->unk14 - lbl_1_bss_4 < 150.0f) + || (temp_r31->unk04 == 6 && temp_r31->unk00 == 9 && temp_r31->unk08 == 1)) { + sp354[j]->unk20 = 5; + sp354[j]->unk24 = 0; + lbl_1_bss_3C[j]->trans.x = temp_r31->unk0C; + lbl_1_bss_3C[j]->trans.y = (j == 0 ? 300 : 0); + lbl_1_bss_3C[j]->trans.z = temp_r31->unk14; + lbl_1_bss_3C[j]->rot.y + = 180 + ((lbl_1_bss_20 == 4 && temp_r31->unk04 == 6) ? (temp_r31->unk0C < 0.0f ? -45 : 45) : 0); + Hu3DMotionSpeedSet(arg0->model[j + 79], 1.0f); + Hu3DMotionShiftSet(arg0->model[j + 79], arg0->motion[j + 22], 44.0f, 2.0f, HU3D_MOTATTR_NONE); + Hu3DParticleCntSet(arg0->model[j + 39], j == 0 ? 15 : 0); + if (lbl_1_bss_54->unk00 < 3) { + lbl_1_bss_54->unk04[lbl_1_bss_54->unk00] = 0.0f; + lbl_1_bss_54->unk00++; + } + } + } + if (temp_r31->unk04 == 3 && temp_r31->unk14 > 510.0f) { + temp_r31->unk04 = 4; + temp_r31->unk08 = 0; + if (temp_r31->unk00 != 10) { + if (temp_r31->unk00 != 9) { + Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f); + } + else { + Hu3DMotionSet(arg0->model[var_r25], arg0->motion[j + 26]); + Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f); + Hu3DMotionSpeedSet(arg0->model[var_r25], 1.0f); + } + Hu3DModelAttrReset(arg0->model[var_r25], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + } + if ((temp_r31->unk04 == 5 || temp_r31->unk04 == 6) && sp348.z > 1400.0f && temp_r31->unk14 > 700.0f) { + temp_r31->unk08 = 0; + temp_r31->unk10 = sp348.y; + temp_r31->unk14 = sp348.z; + temp_r31->unk1C = 0.0f; + if (temp_r31->unk00 == 10) { + Hu3DModelAttrSet(arg0->model[var_r25], HU3D_MOTATTR_LOOP); + } + else if (temp_r31->unk00 != 9) { + Hu3DMotionTimeSet(arg0->model[var_r25], 2.0f); + Hu3DModelAttrReset(arg0->model[var_r25], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + else { + Hu3DMotionSet(arg0->model[var_r25], arg0->motion[(temp_r31->unk04 == 6) ? (j + 26) : (j + 30)]); + Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f); + Hu3DMotionSpeedSet(arg0->model[var_r25], 1.0f); + } + temp_r31->unk04 = 7; + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14); + } + else { + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, + ((temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) + ? ((temp_r31->unk04 != 6 ? 300 : 0) + lbl_1_rodata_100[temp_r31->unk00]) + : temp_r31->unk10) + + lbl_1_rodata_A0[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + } + if (temp_r31->unk00 >= 10) { + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f); + } + break; + case 4: + if (temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) { + float sp394[] = { 0.0f, 0.0f, 0.0f, 0.9f, 0.9f, 0.9f, 1.75f, 1.75f, 1.75f, 0.0f, 0.0f, 0.0f }; + s32 sp364[] = { 42, 42, 42, 41, 41, 41, 48, 48, 48, 27, 27, 27 }; + + if (temp_r31->unk00 >= 6 && temp_r31->unk00 <= 8) { + temp_f29 = temp_r31->unk08; + temp_f27 = (temp_f29 <= 1.0f) ? 0.0 + : (temp_f29 >= 30.0f && temp_f29 < 40.0f) ? -1.0 * (1.0 - (temp_f29 - 30.0f) / 9.0) + : (temp_f29 >= 40.0f) ? 1.0 - (temp_f29 - 40.0f) / 8.0 + : 1.0; + temp_f27 = (temp_f29 >= 40.0f) ? -1.0 + (temp_f27 * 0.5 + temp_f27 * temp_f27 * 0.5) : temp_f27; + temp_f27 = (temp_f29 <= 1.0f) ? 0.0 + : (temp_f29 < 23.0f) ? 1.0 + : (temp_f29 < 32.0f) ? 0.5 + : (temp_f29 < 40.0f) ? -0.8 + : (-1.0 - 0.4 * (1.0 - (temp_f29 - 40.0f) / 8.0)); + temp_r31->unk14 -= (lbl_1_bss_4 * sp394[temp_r31->unk00] / 4.0) * temp_f27; + } + else { + temp_r31->unk14 -= lbl_1_bss_4 * sp394[temp_r31->unk00] / 4.0; + } + if (temp_r31->unk08 >= sp364[temp_r31->unk00]) { + temp_r31->unk10 = 0.0f; + temp_r31->unk04 = 5; + temp_r31->unk08 = 0; + } + } + else { + temp_r31->unk1C -= 1.0f; + temp_r31->unk10 += temp_r31->unk1C; + temp_r31->unk14 += 1.25 * lbl_1_bss_4; + if (temp_r31->unk10 <= 0.0f) { + if (temp_r31->unk1C < -10.0f && temp_r31->unk00 == 10) { + temp_r31->unk1C = 9.0f; + } + else { + temp_r31->unk1C = 0.0f; + temp_r31->unk10 = 0.0f; + temp_r31->unk04 = 5; + temp_r31->unk08 = 0; + } + } + } + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, + lbl_1_rodata_A0[temp_r31->unk00] + + ((temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) ? (300.0f + lbl_1_rodata_100[temp_r31->unk00]) : temp_r31->unk10), + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + if (temp_r31->unk00 >= 10) { + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f); + } + break; + case 1: + temp_f20 = temp_r31->unk08 / 90.0; + temp_f23 = 1.0f - temp_f20; + sp214 = temp_r31->unk0C; + sp210 = temp_r31->unk10; + sp20C = temp_r31->unk14; + temp_r31->unk0C = (460.0f + 1135.0f * temp_f23) * (temp_r31->unk0C < 0.0f ? -1 : 1); + temp_r31->unk10 = 100.0f * temp_f20 + 500.0f * temp_f23; + temp_r31->unk14 = 800.0f - 695.0f * temp_f23; + temp_r31->unk18 = temp_r31->unk0C - sp214; + temp_r31->unk1C = temp_r31->unk10 - sp210; + temp_r31->unk20 = temp_r31->unk14 - sp20C; + if (temp_r31->unk08 >= 90) { + temp_r31->unk04 = 2; + temp_r31->unk08 = 0; + } + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + Hu3DModelRotSet(arg0->model[var_r25], 9.0f, (temp_r31->unk0C < 0.0f) ? -31 : 31, (temp_r31->unk0C < 0.0f) ? -18 : 18); + break; + case 2: + temp_r31->unk1C -= (temp_r31->unk00 != 9) ? 0.625 : 0.9; + temp_r31->unk0C += temp_r31->unk18; + temp_r31->unk10 += temp_r31->unk1C; + temp_r31->unk14 += temp_r31->unk20; + if (temp_r31->unk10 <= lbl_1_rodata_100[temp_r31->unk00]) { + temp_r31->unk10 = -lbl_1_rodata_100[temp_r31->unk00]; + temp_r31->unk1C = 0.0f; + temp_r31->unk04 = 6; + temp_r31->unk08 = 0; + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, + temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00] + lbl_1_rodata_100[temp_r31->unk00] + + lbl_1_rodata_100[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, (temp_r31->unk0C < 0.0f) ? -31 : 31, 0.0f); + } + else { + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + } + break; + case 7: + temp_r31->unk1C -= 1.0f; + temp_r31->unk10 += temp_r31->unk1C; + temp_r31->unk14 += (temp_r31->unk00 >= 10) ? lbl_1_bss_0 : 0.0f; + if (temp_r31->unk10 <= -800.0f) { + Hu3DModelAttrSet(arg0->model[var_r25], 1); + if (temp_r31->unk00 == 9) { + Hu3DMotionSet(arg0->model[var_r25], arg0->motion[j + 22]); + Hu3DMotionTimeSet(arg0->model[var_r25], 0.0f); + Hu3DMotionSpeedSet(arg0->model[var_r25], 2.0f); + } + temp_r31->unk04 = 0; + } + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, + (temp_r31->unk00 >= 0 && temp_r31->unk00 < 9) ? (300.0f + lbl_1_rodata_100[temp_r31->unk00]) : temp_r31->unk10, + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14); + if (temp_r31->unk00 >= 10) { + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f); + } + break; + } + if (temp_r31->unk00 >= 0 && temp_r31->unk00 <= 8 && (temp_r31->unk04 == 4 || temp_r31->unk04 == 5)) { + sp208 = Hu3DMotionTimeGet(arg0->model[var_r25]); + if (temp_r31->unk00 >= 0 && temp_r31->unk00 <= 2 && (sp208 == 26 || sp208 == -41) && lbl_1_bss_54[3].unk00 < 3) { + lbl_1_bss_54[3].unk04[lbl_1_bss_54[3].unk00] = 0.0f; + lbl_1_bss_54[3].unk00++; + } + if (temp_r31->unk00 >= 3 && temp_r31->unk00 <= 5 && (sp208 == 23 || sp208 == -39) && lbl_1_bss_54[2].unk00 < 3) { + lbl_1_bss_54[2].unk04[lbl_1_bss_54[2].unk00] = 0.0f; + lbl_1_bss_54[2].unk00++; + } + if (temp_r31->unk00 >= 6 && temp_r31->unk00 <= 8 && (sp208 == 20 || sp208 == -29) && lbl_1_bss_54[1].unk00 < 3) { + lbl_1_bss_54[1].unk04[lbl_1_bss_54[1].unk00] = 0.0f; + lbl_1_bss_54[1].unk00++; + } + } + if (i == 9 && lbl_1_bss_18 != 0) { + ModelData *sp204 = &Hu3DData[arg0->model[j + 39]]; + ParticleData *sp200 = sp204->unk_120; + + if (sp200->unk_34 == 63) { + ModelData *temp_r23 = &Hu3DData[arg0->model[var_r25]]; + ModelData *temp_r22 = &Hu3DData[arg0->model[j + 39]]; + + temp_r22->pos.x = temp_r23->pos.x; + temp_r22->pos.y = temp_r23->pos.y; + temp_r22->pos.z = temp_r23->pos.z; + temp_r22->rot.x = temp_r23->rot.x; + temp_r22->rot.y = temp_r23->rot.y; + temp_r22->rot.z = temp_r23->rot.z; + } + } + if (temp_r31->unk2C == 0 && (lbl_1_bss_34 == 1004 || lbl_1_bss_34 == 1005)) { + if (temp_r31->unk00 != 9 + || (temp_r31->unk04 != 1 && temp_r31->unk04 != 2 + && ((temp_r31->unk04 != 3 && temp_r31->unk04 != 6) || sp354[j]->unk20 > 5 || sp354[j]->unk20 < 3))) { + temp_r31->unk2C = 1; + } + } + temp_r31->unk2C += (temp_r31->unk2C > 0); + if (temp_r31->unk2C != 0 && (temp_r31->unk2C % 2 == 0 || temp_r31->unk2C > 25)) { + Hu3DModelAttrSet(arg0->model[var_r25], 1); + } + else { + Hu3DModelAttrReset(arg0->model[var_r25], 1); + } + } + } + } + for (i = 0; i < 11; i++) { + if (lbl_1_data_1878[i] == 1) { + Hu3DMotionShiftSet(arg0->model[i + 8], arg0->motion[0], 0.0f, 60.0f, HU3D_MOTATTR_LOOP); + } + lbl_1_data_1878[i] -= (lbl_1_data_1878[i] > 0); + } + lbl_1_data_18A4[0] -= (lbl_1_data_18A4[0] > 0); + lbl_1_data_18A4[1] -= (lbl_1_data_18A4[1] > 0); + for (i = 0; i < 3; i++) { + for (j = 0; j < 8; j++) { + s32 sp1FC = lbl_1_bss_104[i][j].unk00 + 21; + + lbl_1_bss_104[i][j].unk04++; + if (lbl_1_bss_104[i][j].unk04 >= 520) { + if (lbl_1_bss_104[i][j].unk00 != -1) { + Hu3DModelAttrReset(arg0->model[lbl_1_bss_104[i][j].unk00 + 21], 1); + } + lbl_1_bss_104[i][j].unk04 = 0; + lbl_1_bss_104[i][j].unk00 = -1; + for (sp230 = 0; sp230 < 14; sp230++) { + s32 sp1F8; + s32 sp1F4 = rand8() % 18; + + for (sp1F8 = 0; sp1F8 < 24; sp1F8++) { + if (sp1F4 == lbl_1_bss_104[sp1F8 / 8][sp1F8 % 8].unk00) { + break; + } + } + if (sp1F8 == 24) { + lbl_1_bss_104[i][j].unk00 = sp1F4; + break; + } + } + if (lbl_1_bss_104[i][j].unk00 != -1) { + Hu3DModelAttrReset(arg0->model[lbl_1_bss_104[i][j].unk00 + 21], 1); + } + } + sp1FC = lbl_1_bss_104[i][j].unk00 + 21; + temp_f22 = lbl_1_bss_104[i][j].unk04 / 520.0f; + if (lbl_1_bss_104[i][j].unk00 != -1) { + switch (i) { + case 0: + Hu3DModelPosSet(arg0->model[sp1FC], 2000.0f - 4000.0f * temp_f22, -490.0f, 1000.0f); + break; + case 1: + Hu3DModelPosSet(arg0->model[sp1FC], -1200.0f, -290.0f, 2000.0f - 4000.0f * temp_f22); + break; + case 2: + Hu3DModelPosSet(arg0->model[sp1FC], 1200.0f, -290.0f, 2000.0f - 4000.0f * temp_f22); + break; + } + } + } + } + for (i = 0; i < 2; i++) { + espBankSet(lbl_1_data_40[i * 7 + 2], lbl_1_data_18F4[i] % 10); + espBankSet(lbl_1_data_40[i * 7 + 3], (lbl_1_data_18F4[i] / 10) % 10); + } + for (i = 0; i < 4; i++) { + ModelData *temp_r24 = &Hu3DData[lbl_1_bss_3C[i]->model[0]]; + float temp_f19 = 0.0f; + float sp1F0 = (temp_r24->unk_08 == lbl_1_bss_3C[i]->motion[3]) ? 0 : -1; + float sp1EC = (temp_r24->unk_0C == lbl_1_bss_3C[i]->motion[3]) ? 0 : -1; + float sp1E8 = (sp1F0 == -1.0f) ? 0.0f + : (temp_r24->unk_64 < 4.0f) ? 0.0f + : (temp_r24->unk_64 > 28.0f) ? 1.0f + : (temp_r24->unk_64 - 4.0f) / 24.0f; + float sp1E4 = (sp1EC == -1.0f) ? 0.0f + : (temp_r24->unk_84 < 4.0f) ? 0.0f + : (temp_r24->unk_84 > 28.0f) ? 1.0f + : (temp_r24->unk_84 - 4.0f) / 24.0f; + float temp_f18 = (temp_r24->unk_0C == -1) ? 0.0f : (temp_r24->unk_80 == 0.0f) ? 1.0f : (temp_r24->unk_7C / temp_r24->unk_80); + + temp_f19 = sp1E8 * (1.0f - temp_f18) + sp1E4 * temp_f18; + if (!(temp_r24->attr & 1) && sp354[i]->unk20 != 3 && sp354[i]->unk20 != 4 && lbl_1_bss_3C[i]->trans.z < 1400.0f) { + Hu3DModelAttrReset(lbl_1_bss_3C[i]->model[1], 1); + Hu3DModelPosSet(lbl_1_bss_3C[i]->model[1], lbl_1_bss_3C[i]->trans.x, (lbl_1_bss_3C[i]->trans.z < 620.0f) ? 5 : -295, + lbl_1_bss_3C[i]->trans.z - 165.0f * temp_f19); + Hu3DModelScaleSet( + lbl_1_bss_3C[i]->model[1], 0.75 * (sp354[i]->unk08 == 5 ? 1.25 : 1.0), 1.0f, 1.25 * (sp354[i]->unk08 == 5 ? 1.25 : 1.0)); + } + else { + Hu3DModelAttrSet(lbl_1_bss_3C[i]->model[1], 1); + } + } +} + +void fn_1_89E0(omObjData *arg0) +{ + StructBss3CData *spC[4]; + s32 sp8; + s32 var_r29; + s32 var_r30; + s32 i; + + for (i = 0; i < 4; i++) { + spC[i] = lbl_1_bss_3C[i]->data; + } + for (i = 0; i < 11; i++) { + s32 sp1C[] = { 0x60A, 0x60B, 0x60C, 0x60D, 0x60E, 0x60F, 0x611, 0x610, 0x007, 0x013, 0x612 }; + + if (lbl_1_bss_54[i].unk00 > 3) { + lbl_1_bss_54[i].unk00 = 3; + } + if (lbl_1_bss_54[i].unk00 > 0) { + sp8 = HuAudFXPlay(sp1C[i]); + lbl_1_bss_54[i].unk00--; + } + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_B480; + } + switch (lbl_1_bss_34) { + case 1000: + lbl_1_bss_8 += 1.0f; + if (lbl_1_bss_8 == 5.0f) { + lbl_1_data_18B0 = HuAudFXPlay(0x609); + } + if (WipeStatGet() == 0) { + lbl_1_bss_34++; + lbl_1_bss_8 = 0.0f; + } + break; + case 1001: + lbl_1_bss_8 += 1.0f; + if (180.0f < lbl_1_bss_8) { + lbl_1_bss_34++; + lbl_1_bss_8 = 0.0f; + } + break; + case 1002: + lbl_1_bss_8 += 1.0f; + if (lbl_1_bss_8 == 5.0f && lbl_1_bss_2E < 0) { + lbl_1_bss_2E = MGSeqStartCreate(); + } + if (lbl_1_bss_8 >= 5.0f && lbl_1_data_18AC == -1 && (MGSeqStatGet(lbl_1_bss_2E) & 0x10)) { + lbl_1_data_18AC = HuAudSeqPlay(0x47); + } + if (lbl_1_bss_8 >= 5.0f && MGSeqStatGet(lbl_1_bss_2E) == 0 && lbl_1_bss_2E >= 0) { + lbl_1_bss_34++; + lbl_1_bss_28 = 1800; + lbl_1_bss_2C = MGSeqTimerCreate(lbl_1_bss_28 / 60); + lbl_1_bss_2E = -1; + lbl_1_bss_8 = 0.0f; + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_data_40[i]); + } + for (i = 0; i < 4; i++) { + spC[i]->unk20 = 1; + } + } + break; + case 1003: + lbl_1_bss_8 += 1.0f; + MGSeqParamSet(lbl_1_bss_2C, 1, (lbl_1_bss_28 + 58) / 60); + lbl_1_bss_28--; + if (lbl_1_bss_28 <= 0) { + lbl_1_bss_34 = 1004; + lbl_1_bss_8 = 0.0f; + lbl_1_bss_20 = 4; + } + break; + case 1004: + if (lbl_1_bss_2E < 0 && lbl_1_bss_8 == 0.0f) { + MGSeqParamSet(lbl_1_bss_2C, 2, -1); + lbl_1_bss_2E = MGSeqFinishCreate(); + if (lbl_1_data_18AC != -1) { + HuAudSeqFadeOut(lbl_1_data_18AC, 100); + } + } + else { + var_r29 = 0; + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (spC[i]->unk20 == 1 || (spC[i]->unk20 >= 2 && spC[i]->unk20 <= 5)) { + var_r29++; + } + if (i == 0 && ((spC[0]->unk20 >= 2 && spC[0]->unk20 <= 4) || (spC[0]->unk20 == 4 && lbl_1_data_F0[9][0].unk14 < 70.0f))) { + var_r30++; + } + else if (i != 0 && spC[i]->unk20 >= 2 && spC[i]->unk20 <= 4) { + var_r30++; + } + } + if (MGSeqStatGet(lbl_1_bss_2E) == 0 + && ((lbl_1_bss_8 >= 150.0f && var_r29 == 0 && var_r30 == 0) || (lbl_1_bss_8 >= 240.0f && var_r30 == 0) + || lbl_1_bss_8 >= 360.0f)) { + lbl_1_bss_34++; + lbl_1_bss_8 = 0.0f; + GWPlayerCoinCollectSet(spC[0]->unk04, lbl_1_data_18F4[0]); + GWPlayerCoinCollectSet(spC[1]->unk04, lbl_1_data_18F4[1]); + GWPlayerCoinCollectSet(spC[2]->unk04, lbl_1_data_18F4[1]); + GWPlayerCoinCollectSet(spC[3]->unk04, lbl_1_data_18F4[1]); + if (lbl_1_data_18F4[0] == 0 && lbl_1_data_18F4[1] == 0) { + HuAudSStreamPlay(4); + } + else { + HuAudSStreamPlay(1); + } + } + } + lbl_1_bss_8 += 1.0f; + break; + case 1005: + lbl_1_bss_8 += 1.0f; + if (210.0f < lbl_1_bss_8) { + HuAudFXStop(lbl_1_data_18B0); + lbl_1_bss_2E = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_B480; + } + break; + default: + OSReport("*** main mode error(%d)!!\n", lbl_1_bss_34); + break; + } +} + +void fn_1_9410(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + float temp_f31; + float temp_f30; + s16 i; + + if (particle->unk_34 < 50) { + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00 = particle->unk_34 + 41; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + if (particle->unk_34 >= 255) { + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00 = 255; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (var_r31->unk00 == 104) { + var_r31->unk34.x = var_r31->unk34.z = 0.0f; + var_r31->unk34.y = 72.0f; + temp_f31 = frandu8() * 360 / 256; + temp_f30 = 0.5 + (rand8() / 256.0) * 1.5; + var_r31->unk34.x = 75.0 * sind(temp_f31); + var_r31->unk34.z = 75.0 * cosd(temp_f31); + var_r31->unk08.x = temp_f30 * sind(temp_f31) * 2.0; + var_r31->unk08.y = 3.0 + (rand8() / 256.0) * 1.5; + var_r31->unk08.z = temp_f30 * cosd(temp_f31) * 2.0; + var_r31->unk40.r = 0xFF; + var_r31->unk40.g = 0xFF; + var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 0x60; + var_r31->unk2C = 50.0f; + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + } + if (var_r31->unk00 < 240) { + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.9f; + var_r31->unk08.z *= 0.9f; + var_r31->unk08.y *= 0.9f; + var_r31->unk40.a = var_r31->unk40.a * 16 / 17; + var_r31->unk08.z *= 0.99f; + var_r31->unk2C += 2.0f; + if (var_r31->unk2C <= 0.0f) { + var_r31->unk2C = 0.0f; + } + if (var_r31->unk40.a <= 3) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31->unk00 += (var_r31->unk00 < 0x8000); + } +} + +void fn_1_9900(omObjData *arg0) +{ + s32 temp_r28; + s32 i; + s32 j; + s32 k; + + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 18)); + omSetTra(arg0, 0.0f, 0.0f, 0.0f); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 17)); + Hu3DModelPosSet(arg0->model[1], 0.0f, 300.0f, -100.0f); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(arg0->model[1], 0); + Hu3DMotionSpeedSet(arg0->model[1], 1.5f); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 16)); + Hu3DModelPosSet(arg0->model[3], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[3], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(arg0->model[3], 0); + Hu3DMotionSpeedSet(arg0->model[3], 1.5f); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 19)); + Hu3DModelAttrSet(arg0->model[4], HU3D_MOTATTR_LOOP); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 20)); + Hu3DModelPosSet(arg0->model[5], 460.0f, 0.0f, 800.0f); + Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(arg0->model[5], Hu3DMotionMaxTimeGet(arg0->model[5])); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 21)); + Hu3DModelPosSet(arg0->model[6], -460.0f, 0.0f, 800.0f); + Hu3DModelAttrReset(arg0->model[6], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(arg0->model[6], Hu3DMotionMaxTimeGet(arg0->model[6])); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 22)); + Hu3DModelAttrSet(arg0->model[7], HU3D_MOTATTR_LOOP); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 23)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[8], DATA_MAKE_NUM(DATADIR_M422, 24)); + arg0->motion[11] = Hu3DJointMotionFile(arg0->model[8], DATA_MAKE_NUM(DATADIR_M422, 25)); + for (i = 0; i < 11; i++) { + if (i != 0) { + arg0->model[i + 8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 23)); + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[i + 8], DATA_MAKE_NUM(DATADIR_M422, 24)); + arg0->motion[i + 11] = Hu3DJointMotionFile(arg0->model[i + 8], DATA_MAKE_NUM(DATADIR_M422, 25)); + } + Hu3DModelPosSet(arg0->model[i + 8], i * 100 - 500, 550.0f, 0.0f); + Hu3DMotionSet(arg0->model[i + 8], arg0->motion[0]); + Hu3DModelAttrSet(arg0->model[i + 8], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[i + 8], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(arg0->model[i + 8], rand8() % (s32)Hu3DMotionMaxTimeGet(arg0->model[i + 8])); + } + arg0->model[19] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 26)); + Hu3DModelPosSet(arg0->model[19], 1800.0f, 0.0f, -22.0f); + Hu3DModelAttrSet(arg0->model[19], HU3D_MOTATTR_LOOP); + arg0->model[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 27)); + Hu3DModelPosSet(arg0->model[20], -1800.0f, 0.0f, -22.0f); + Hu3DModelAttrSet(arg0->model[20], HU3D_MOTATTR_LOOP); + for (i = 0; i < 10; i++) { + for (j = 0; j < 4; j++) { + s32 spD0[] = { DATA_MAKE_NUM(DATADIR_M422, 41), DATA_MAKE_NUM(DATADIR_M422, 42), DATA_MAKE_NUM(DATADIR_M422, 43), + DATA_MAKE_NUM(DATADIR_M422, 44), DATA_MAKE_NUM(DATADIR_M422, 45), DATA_MAKE_NUM(DATADIR_M422, 46), DATA_MAKE_NUM(DATADIR_M422, 47), + DATA_MAKE_NUM(DATADIR_M422, 48), DATA_MAKE_NUM(DATADIR_M422, 49), DATA_MAKE_NUM(DATADIR_M422, 30) }; + s32 sp30[] = { DATA_MAKE_NUM(DATADIR_M422, 30), DATA_MAKE_NUM(DATADIR_M422, 31), DATA_MAKE_NUM(DATADIR_M422, 32), + DATA_MAKE_NUM(DATADIR_M422, 33), DATA_MAKE_NUM(DATADIR_M422, 34), DATA_MAKE_NUM(DATADIR_M422, 35), DATA_MAKE_NUM(DATADIR_M422, 37), + DATA_MAKE_NUM(DATADIR_M422, 36) }; + + temp_r28 = i * 4 + 43 + j; + if (i == 9) { + StructBss3CData *var_r23 = lbl_1_bss_3C[j]->data; + + arg0->model[temp_r28] = Hu3DModelCreateFile(sp30[var_r23->unk08]); + } + else if (j == 0) { + arg0->model[temp_r28] = Hu3DModelCreateFile(spD0[i]); + } + else { + arg0->model[temp_r28] = Hu3DModelLink(arg0->model[temp_r28 - j]); + } + Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[temp_r28], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(arg0->model[temp_r28], 0.0f); + Hu3DMotionSpeedSet(arg0->model[temp_r28], (i != 9) ? 0.9375 : 1.0); + if (i == 9) { + arg0->motion[j + 22] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 38)); + arg0->motion[j + 26] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 39)); + arg0->motion[j + 30] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 40)); + Hu3DMotionSet(arg0->model[temp_r28], arg0->motion[j + 22]); + Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_PAUSE); + } + } + if (i <= 8) { + for (k = 0; k < 2; k++) { + arg0->model[i * 2 + 21 + k] = Hu3DModelLink(arg0->model[i * 4 + 43]); + Hu3DModelAttrSet(arg0->model[i * 2 + 21 + k], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + } + } + for (i = 0; i < 2; i++) { + for (j = 0; j < 10; j++) { + s32 sp28[] = { DATA_MAKE_NUM(DATADIR_M422, 28), DATA_MAKE_NUM(DATADIR_M422, 29) }; + + temp_r28 = i * 10 + 83 + j; + if (j == 0) { + arg0->model[temp_r28] = Hu3DModelCreateFile(sp28[i]); + } + else { + arg0->model[temp_r28] = Hu3DModelLink(arg0->model[temp_r28 - j]); + } + Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->model[temp_r28], 1); + } + } + for (i = 0; i < 3; i++) { + for (j = 0; j < 8; j++) { + lbl_1_bss_104[i][j].unk04 = j * 520 / 8; + lbl_1_bss_104[i][j].unk00 = -1; + } + } + for (i = 0; i < 16; i++) { + s32 sp20[] = { 88, 473 }; + s32 sp18[] = { 78, 70 }; + s32 sp90[] = { 0, 0, 42, 22, -20, 2, -54, 0, 0, 55, 35, -7, 15, -51, -65, -37 }; + s32 sp50[] = { 0, 0, 1, 1, 1, 1, -2, 0, 0, 9, 9, 9, 9, -14, 10, 10 }; + + if (lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 12) || lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 0)) { + StructBss3CData *var_r22 = lbl_1_bss_3C[(i == 6) ? 0 : (i == 13) ? 1 : (i == 14) ? 2 : 3]->data; + + lbl_1_data_40[i] = espEntry(lbl_1_data_0[i] + var_r22->unk08, 0, 0); + } + else { + lbl_1_data_40[i] = espEntry(lbl_1_data_0[i], 0, 0); + } + espDrawNoSet(lbl_1_data_40[i], 0); + espDispOff(lbl_1_data_40[i]); + espAttrSet(lbl_1_data_40[i], 1); + espBankSet(lbl_1_data_40[i], 0); + espPriSet(lbl_1_data_40[i], 128 - i); + espPosSet(lbl_1_data_40[i], sp90[i] + sp20[i < 7 ? 0 : 1], sp50[i] + sp18[i < 7 ? 0 : 1]); + switch (i >= 7 ? i - 7 : i) { + case 0: + espTPLvlSet(lbl_1_data_40[i], 0.5f); + espColorSet(lbl_1_data_40[i], 0, 0, 0); + break; + case 5: + espBankSet(lbl_1_data_40[i], 10); + break; + } + } + for (i = 0; i < 4; i++) { + s32 temp_r26 = i + 39; + + arg0->model[temp_r26] = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 3), MEMORY_DEFAULT_NUM)), 40); + Hu3DModelPosSet(arg0->model[temp_r26], 2000.0f, -2000.0f, -2000.0f); + Hu3DModelScaleSet(arg0->model[temp_r26], 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(arg0->model[temp_r26], 3); + Hu3DModelAttrReset(arg0->model[temp_r26], 1); + Hu3DParticleColSet(arg0->model[temp_r26], 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(arg0->model[temp_r26], 5.0f); + Hu3DParticleHookSet(arg0->model[temp_r26], fn_1_9410); + Hu3DParticleCntSet(arg0->model[temp_r26], 45); + } + for (i = 0; i < 4; i++) { + s32 var_r27 = 9; + s32 temp_r24 = 43 + var_r27 * 4 + i; + + lbl_1_data_F0[var_r27][i].unk0C = lbl_1_data_18B4[i][0]; + lbl_1_data_F0[var_r27][i].unk10 = (i == 0 ? 300 : 0); + lbl_1_data_F0[var_r27][i].unk14 = (i == 0 ? 50 : 800); + lbl_1_data_F0[var_r27][i].unk00 = 9; + lbl_1_data_F0[var_r27][i].unk04 = (i == 0 ? 3 : 6); + lbl_1_data_F0[var_r27][i].unk08 = 0; + lbl_1_data_F0[var_r27][i].unk18 = lbl_1_data_F0[var_r27][i].unk1C = lbl_1_data_F0[var_r27][i].unk20 = 0.0f; + Hu3DMotionTimeSet(arg0->model[temp_r24], 0.0f); + Hu3DModelAttrSet(arg0->model[temp_r24], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[temp_r24], 1); + Hu3DModelRotSet(arg0->model[temp_r24], 0.0f, 0.0f, 0.0f); + } + arg0->func = fn_1_3B74; +} + +void fn_1_AC4C(omObjData *arg0) +{ + s32 sp8[] = { 0, 1, 2, 3 }; + StructBss3CData *temp_r31; + s32 var_r27; + s32 j; + s32 i; + + var_r27 = 0; + temp_r31 = arg0->data; + memset(temp_r31, 0, sizeof(*temp_r31)); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == GWPlayerCfg[j].group) { + sp8[var_r27] = j; + var_r27++; + } + } + } + temp_r31->unk00 = arg0->work[0]; + temp_r31->unk04 = sp8[temp_r31->unk00]; + if (temp_r31->unk04 == 4) { + OSReport("m422:wrong player group\n"); + temp_r31->unk04 = temp_r31->unk00; + } + temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].character; + temp_r31->unk0C = (GWPlayerCfg[temp_r31->unk04].iscom ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx); + temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff; + temp_r31->unk14 = rand8(); + temp_r31->unk20 = 0; + arg0->model[0] = CharModelCreate(temp_r31->unk08, temp_r31->unk00 == 0 ? 2 : 2); + Hu3DModelLayerSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->model[0], 1); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 50)); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelLayerSet(arg0->model[1], 0); + temp_r31->unk18 = 0; + temp_r31->unk1C = -1; + for (i = 0; i < 8; i++) { + arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_A0[i] + (lbl_1_data_C0[i] != 0 ? temp_r31->unk08 : 0)); + } + CharModelVoiceEnableSet(temp_r31->unk08, arg0->motion[6], 0); + Hu3DMotionSet(arg0->model[0], arg0->motion[3]); + arg0->trans.x = lbl_1_data_18B4[temp_r31->unk00][0]; + arg0->trans.y = lbl_1_data_18B4[temp_r31->unk00][1]; + arg0->trans.z = lbl_1_data_18B4[temp_r31->unk00][2]; + arg0->rot.y = lbl_1_data_18B4[temp_r31->unk00][3]; + arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f; + arg0->rot.x = arg0->rot.z = 0.0f; + arg0->func = fn_1_2FC; +} + +void fn_1_B004(omObjData *arg0) +{ + lbl_1_bss_34 = 1000; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_89E0; +} + +void ObjectSetup(void) +{ + omObjData *var_r30; + s32 i; + + OSReport("******* M422 ObjectSetup *********\n"); + HuAudSndGrpSet(47); + lbl_1_bss_30 = omInitObjMan(600, 0x2000); + omGameSysInit(lbl_1_bss_30); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 1676.6f; + Center.x = 690.0f; + Center.y = 1340.0f; + Center.z = 1380.0f; + CRot.x = -50.8125f; + CRot.y = 40.0f; + CRot.z = 0.0f; + CZoom = 2126.6f; + Center.x = 700.0f; + Center.y = 870.0f; + Center.z = 1320.0f; + CRot.x = -37.25f; + CRot.y = 40.0f; + CRot.z = 0.0f; + { + Vec sp18 = { -822.5f, 6743.0f, 4625.5f }; + Vec spC = { 0.1545085f, -0.788462f, -0.5850064f }; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + + lbl_1_bss_24 = Hu3DGLightCreateV(&sp18, &spC, &sp8); + } + Hu3DGLightStaticSet(lbl_1_bss_24, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_24); + lbl_1_bss_2E = -1; + lbl_1_bss_20 = -1; + lbl_1_bss_38 = omAddObjEx(lbl_1_bss_30, 101, 103, 34, 1, fn_1_9900); + for (i = 0; i < 4; i++) { + var_r30 = lbl_1_bss_3C[i] = omAddObjEx(lbl_1_bss_30, 100, 2, 8, 0, fn_1_AC4C); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss3CData), MEMORY_DEFAULT_NUM); + var_r30->work[0] = i; + } + lbl_1_bss_4C = omAddObjEx(lbl_1_bss_30, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_50 = omAddObjEx(lbl_1_bss_30, 102, 0, 0, -1, fn_1_B004); +} + +void fn_1_B480(omObjData *arg0) +{ + StructBss3CData *var_r30; + s32 i; + + if (WipeStatGet() == 0) { + for (i = 0; i < 4; i++) { + var_r30 = lbl_1_bss_3C[i]->data; + CharModelKill(var_r30->unk08); + } + if (lbl_1_bss_2E >= 0) { + MGSeqKill(lbl_1_bss_2E); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m423Dll/main.c b/src/REL/m423Dll/main.c new file mode 100755 index 00000000..4590b4a0 --- /dev/null +++ b/src/REL/m423Dll/main.c @@ -0,0 +1,5676 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" + +#define frand7() (frand() & 0x7F) + +extern u32 GlobalCounter; + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ void *unk10; +} StructBssD0Data; // Size 0x14 + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ Vec unk0C; + /* 0x18 */ float unk18; +} StructData0; // Size 0x1C + +typedef struct { + /* 0x00 */ StructBssD0Data *unk00; + /* 0x04 */ AnimData *unk04; +} StructM423_00; // Size 8 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ Vec unk08; +} StructM423_01; // Size 0x14 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; + /* 0x08 */ Vec unk08; + /* 0x14 */ Vec *unk14; + /* 0x18 */ Vec *unk18; + /* 0x1C */ GXColor *unk1C; + /* 0x20 */ StructM423_01 *unk20; + /* 0x24 */ float unk24[4]; + /* 0x34 */ u32 unk34; + /* 0x38 */ void *unk38; +} StructM423_02; // Size 0x3C + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ StructM423_02 *unk04; +} StructM423_03; // Size 8 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ Vec unk04; + /* 0x10 */ char unk10[8]; + /* 0x18 */ float unk18; + /* 0x1C */ char unk1C[0xC]; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ Vec unk38; + /* 0x44 */ GXColor unk44; + /* 0x48 */ s32 unk48; +} StructM423_04; // Size 0x4C + +typedef struct struct_m423_05 { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x00 */ char unk04[0x1C]; + /* 0x20 */ u8 unk20; + /* 0x21 */ u8 unk21; + /* 0x22 */ u8 unk22; + /* 0x23 */ s8 unk23; + /* 0x24 */ char unk24[2]; + /* 0x26 */ s16 unk26; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ u32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ AnimData *unk38; + /* 0x3C */ StructM423_04 *unk3C; + /* 0x40 */ Vec *unk40; + /* 0x44 */ float (*unk44)[2]; + /* 0x48 */ void *unk48; + /* 0x4C */ void *unk4C; + /* 0x50 */ ModelData *unk50; +} StructM423_05; // Size 0x54 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ char unk08[4]; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ char unk14[4]; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ char unk20[4]; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ char unk2C[4]; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ char unk38[4]; +} StructM423_08; // Size 0x3C + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; +} StructM423_09; // Size 0x28 + +typedef struct { + /* 0x000 */ u16 unk00; + /* 0x002 */ u16 unk02; + /* 0x004 */ float unk04; + /* 0x008 */ float unk08; + /* 0x00C */ float unk0C; + /* 0x010 */ float unk10; + /* 0x014 */ Vec unk14; +} StructM423_0A; // Size 0x20 + +typedef struct { + /* 0x000 */ StructM423_0A unk00[16]; + /* 0x200 */ AnimData *unk200; + /* 0x204 */ s32 unk204; + /* 0x208 */ void *unk208; + /* 0x20C */ StructM423_08 *unk20C; + /* 0x210 */ StructM423_09 *unk210; + /* 0x214 */ GXColor *unk214; + /* 0x218 */ s32 unk218; + /* 0x21C */ s32 unk21C; + /* 0x220 */ void *unk220; +} StructM423_0B; // Size 0x224 + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10[24]; + /* 0x070 */ s32 unk70[24][3]; + /* 0x190 */ s16 unk190[10][2]; +} StructM423_0C; // Size 0x1B8 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ s16 unk08; + /* 0x0A */ s16 unk0A; + /* 0x0C */ s16 unk0C; + /* 0x0E */ s16 unk0E; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ Vec unk2C; + /* 0x38 */ Vec unk38; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ Vec unk50; + /* 0x5C */ Vec unk5C; + /* 0x68 */ Vec unk68; + /* 0x74 */ Vec unk74; + /* 0x80 */ Vec unk80; + /* 0x8C */ float unk8C; + /* 0x90 */ float unk90; +} StructBssA8Data; // Size 0x94 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ s16 unk08; + /* 0x0A */ s16 unk0A; +} StructBssCCData; // Size 0xC + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ s16 unk08; + /* 0x0A */ s16 unk0A; + /* 0x0C */ s16 unk0C; + /* 0x0E */ s16 unk0E; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + /* 0x14 */ s16 unk14; + /* 0x16 */ s16 unk16; + /* 0x18 */ s16 unk18; + /* 0x1A */ char unk1A[2]; + /* 0x1C */ float unk1C[15]; + /* 0x58 */ s32 unk58; + /* 0x5C */ s32 unk5C; + /* 0x60 */ float unk60; + /* 0x64 */ s32 unk64; + /* 0x68 */ s32 unk68; + /* 0x6C */ s32 unk6C; + /* 0x70 */ s32 unk70; + /* 0x74 */ s32 unk74; + /* 0x78 */ float unk78; + /* 0x7C */ float unk7C; + /* 0x80 */ s32 unk80; + /* 0x84 */ s32 unk84; + /* 0x88 */ float unk88; + /* 0x8C */ float unk8C; + /* 0x90 */ s32 unk90; + /* 0x94 */ s32 unk94; + /* 0x98 */ s32 unk98; + /* 0x9C */ s32 unk9C; + /* 0xA0 */ s32 unkA0; + /* 0xA4 */ s32 unkA4; + /* 0xA8 */ float unkA8; + /* 0xAC */ s32 unkAC; + /* 0xB0 */ float unkB0; + /* 0xB4 */ float unkB4; + /* 0xB8 */ float unkB8; + /* 0xBC */ float unkBC; + /* 0xC0 */ float unkC0; + /* 0xC4 */ float unkC4; + /* 0xC8 */ Vec unkC8; + /* 0xD4 */ Vec unkD4; + /* 0xE0 */ float unkE0; + /* 0xE4 */ float unkE4; + /* 0xE8 */ float unkE8; + /* 0xEC */ float unkEC; + /* 0xF0 */ float unkF0; + /* 0xF4 */ float unkF4; +} StructBssBCData; // Size 0xF8 + +typedef struct { + /* 0x000 */ s16 unk00; + /* 0x002 */ s16 unk02; + /* 0x004 */ Vec unk04; + /* 0x010 */ Vec unk10; + /* 0x004 */ char unk1C[0xC]; + /* 0x028 */ float unk28; + /* 0x02C */ float unk2C; + /* 0x030 */ float unk30; + /* 0x034 */ float unk34; + /* 0x038 */ char unk38[4]; + /* 0x03C */ float unk3C; + /* 0x040 */ s32 unk40; + /* 0x044 */ float unk44[12][4]; + /* 0x104 */ Vec unk104[12][3]; +} StructBss94Data; // Size 0x2B4 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ AnimData *unk08; +} StructBssA4Data; // Size 0xC + +void fn_1_318(omObjData *arg0); +void fn_1_3B0(omObjData *arg0); +void fn_1_DFC(omObjData *arg0); +void fn_1_E60(omObjData *arg0); +void fn_1_F10(void); +void fn_1_F60(omObjData *arg0); +void fn_1_11A4(omObjData *arg0); +void fn_1_1238(void); +void fn_1_12A0(ModelData *arg0, Mtx arg1); +s32 fn_1_13A0(StructBssD0Data *arg0); +void fn_1_1444(s32 arg0); +void fn_1_14A0(ModelData *arg0, Mtx arg1); +s32 fn_1_18FC(void); +void fn_1_1B5C(ModelData *arg0, StructM423_02 *arg1); +void fn_1_1F5C(ModelData *arg0, StructM423_02 *arg1); +void fn_1_2290(ModelData *arg0, StructM423_02 *arg1); +void fn_1_2624(ModelData *arg0, StructM423_02 *arg1); +void fn_1_29B8(s32 arg0); +void fn_1_29BC(ModelData *arg0, Mtx arg1); +void fn_1_2C08(s32 arg0); +void fn_1_34D8(void); +void fn_1_3528(omObjData *arg0); +void fn_1_3898(omObjData *arg0); +void fn_1_3A64(void); +void fn_1_3A8C(void); +void fn_1_3BFC(void); +void fn_1_3FE0(omObjData *arg0); +void fn_1_4778(omObjData *arg0); +void fn_1_5D18(omObjData *arg0); +void fn_1_77D0(void); +s32 fn_1_781C(void); +s32 fn_1_791C(void); +void fn_1_7AA8(s32 arg0); +void fn_1_82C8(s32 arg0, s32 arg1, s32 arg2); +void fn_1_8338(omObjData *arg0); +void fn_1_8CB4(omObjData *arg0); +void fn_1_95C4(void); +void fn_1_9614(omObjData *arg0); +void fn_1_98A0(omObjData *arg0); +void fn_1_A9AC(void); +s32 fn_1_A9D4(s32 arg0, Vec arg1, Vec arg2); +void fn_1_AC0C(s32 arg0, Vec arg1); +void fn_1_AC80(s32 arg0, Vec arg1); +s32 fn_1_AE64(s32 arg0); +void fn_1_AEE8(s32 arg0); +StructBssA8Data *fn_1_B13C(s32 arg0); +void fn_1_B1A4(void); +s32 fn_1_B304(StructBssA8Data **arg0); +void fn_1_B430(void); +void fn_1_BCD8(Vec *arg0, Vec *arg1, Vec *arg2, float arg3, s32 arg4, s32 arg5); +s32 fn_1_C498(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, float arg4, s32 arg5); +void fn_1_D930(void); +void fn_1_DA38(omObjData *arg0); +void fn_1_DBC8(void); +s32 fn_1_DC24(Vec arg0, Vec arg1, float arg2, float arg3, float arg4, GXColor arg5); +s32 fn_1_DD70(Vec arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, GXColor arg6); +void fn_1_E1BC(void); +void fn_1_E290(omObjData *arg0); +void fn_1_E330(void); +s32 fn_1_E334(Vec arg0, Vec arg1, float arg2); +void fn_1_E460(void); +void fn_1_E4EC(omObjData *arg0); +void fn_1_E60C(void); +s32 fn_1_E678(void); +void fn_1_EF44(ModelData *arg0, Mtx arg1); +s32 fn_1_F574(Vec arg0, float arg1, s32 arg2); +void fn_1_F690(void); +void fn_1_F6E0(omObjData *arg0); +void fn_1_FA40(omObjData *arg0); +void fn_1_FF98(void); +void fn_1_10028(s32 arg0); +void fn_1_100DC(void); +void fn_1_10480(omObjData *arg0); +void fn_1_10540(s32 arg0, s32 arg1, s32 arg2, float arg3); +void fn_1_106D8(s32 arg0); +void fn_1_10BC8(void); +void fn_1_11008(StructBssD0Data *arg0, void *arg1, s16 arg2, GXTexWrapMode arg3, s32 arg4, s32 arg5); +s16 fn_1_11114(AnimData *arg0, s16 arg1); +void fn_1_11900(ModelData *arg0, Mtx arg1); +float fn_1_121DC(float arg0, float arg1); +float fn_1_122F4(float arg0, float arg1, float arg2); +float fn_1_12544(float arg0, float arg1, float arg2); +void fn_1_1293C(Mtx arg0, Vec *arg1); +s32 fn_1_12C6C(Vec *arg0, Vec *arg1, float *arg2); +float fn_1_12E68(Vec *arg0, Vec *arg1, s32 arg2); +void fn_1_129F0(Vec *arg0, Vec *arg1, Vec *arg2, float *arg3); +void fn_1_1334C(float *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4); +float fn_1_1367C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, float *arg4); +s32 fn_1_137C4(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, float arg4, s32 arg5); + +Process *lbl_1_bss_120; +s32 lbl_1_bss_11C; +s32 lbl_1_bss_118; +s32 lbl_1_bss_114; +s32 lbl_1_bss_110; +s32 lbl_1_bss_10C; // unused +s32 lbl_1_bss_108; +s32 lbl_1_bss_104; +s32 lbl_1_bss_100; +s32 lbl_1_bss_FC; +s32 lbl_1_bss_EC[4]; +s32 lbl_1_bss_DC[4]; +s32 lbl_1_bss_D8; +omObjData *lbl_1_bss_D4; +omObjData *lbl_1_bss_D0; +omObjData *lbl_1_bss_CC; +omObjData *lbl_1_bss_BC[4]; +omObjData *lbl_1_bss_B8; +omObjData *lbl_1_bss_AC[3]; +omObjData *lbl_1_bss_A8; +omObjData *lbl_1_bss_A4; +omObjData *lbl_1_bss_A0; +omObjData *lbl_1_bss_9C; +omObjData *lbl_1_bss_98; +StructBss94Data *lbl_1_bss_94; +s32 lbl_1_bss_90; +omObjData *lbl_1_bss_8C; +s32 lbl_1_bss_88; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; +s32 lbl_1_bss_7C; +StructBssA8Data *lbl_1_bss_40[15]; +StructBssA8Data *lbl_1_bss_4[15]; +s32 lbl_1_bss_0; + +StructData0 lbl_1_data_0[] + = { { { 342.45f, 0.0f, 0.0f }, { 0.0f, 275.0f, 128.0f }, 550.0f }, { { 6.0f, 0.0f, 0.0f }, { 0.0f, 190.0f, 0.0f }, 550.0f } }; + +StructData0 lbl_1_data_38[] + = { { { 22.0f, 180.0f, 0.0f }, { -250.0f, 120.00001f, 0.0f }, 160.0f }, { { 22.0f, 180.0f, 0.0f }, { 0.0f, 120.00001f, 0.0f }, 160.0f }, + { { 22.0f, 180.0f, 0.0f }, { 250.0f, 120.00001f, 0.0f }, 160.0f }, { { -45.0f, 180.0f, 0.0f }, { -250.0f, 75.0f, 0.0f }, 180.0f }, + { { -45.0f, 180.0f, 0.0f }, { 0.0f, 75.0f, 0.0f }, 180.0f }, { { -45.0f, 180.0f, 0.0f }, { 250.0f, 75.0f, 0.0f }, 180.0f }, + { { -45.0f, 0.0f, 0.0f }, { -250.0f, 95.0f, 0.0f }, 150.0f }, { { -45.0f, 0.0f, 0.0f }, { 0.0f, 95.0f, 0.0f }, 150.0f }, + { { -45.0f, 0.0f, 0.0f }, { 250.0f, 95.0f, 0.0f }, 150.0f }, { { -45.0f, 0.0f, 0.0f }, { 0.0f, 95.0f, -850.0f }, 150.0f } }; + +Vec lbl_1_data_150[] = { 0.0f, 0.0f, -850.0f, -250.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 250.0f, 0.0f, 0.0f }; + +Vec lbl_1_data_180[] = { 0.0f, 0.0f, -850.0f, 850.0f, 0.0f, 0.0f, 1200.0f, 0.0f, 0.0f, 1650.0f, 0.0f, 0.0f }; + +Vec lbl_1_data_1B0[] = { { -250.0f, 45.0f, 500.0f }, { 0.0f, 45.0f, 500.0f }, { 250.0f, 45.0f, 500.0f } }; + +Vec lbl_1_data_1D4 = { 1000.0f, 2000.0f, 1000.0f }; +Vec lbl_1_data_1E0 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_1EC = { 0.0f, 0.0f, -450.0f }; + +void ObjectSetup(void) +{ + Process *var_r30; + CameraData *var_r29; + s32 i; + + OSReport("******* M426ObjectSetup *********\n"); + var_r30 = omInitObjMan(50, 0x2000); + lbl_1_bss_120 = var_r30; + omGameSysInit(var_r30); + fn_1_100DC(); + Hu3DLightAllKill(); + Hu3DLighInit(); + HuAudSndGrpSet(0x30); + lbl_1_bss_D4 = omAddObjEx(var_r30, 0xFF, 2, 0, -1, fn_1_318); + lbl_1_bss_11C = lbl_1_bss_118 = -1; + lbl_1_bss_D0 = NULL; + lbl_1_bss_CC = NULL; + lbl_1_bss_A8 = NULL; + lbl_1_bss_B8 = NULL; + lbl_1_bss_AC[0] = lbl_1_bss_AC[1] = lbl_1_bss_AC[2] = NULL; + lbl_1_bss_114 = 0; + lbl_1_bss_110 = 0; + lbl_1_bss_108 = 0; + lbl_1_bss_104 = 10; + lbl_1_bss_100 = -1; + lbl_1_bss_FC = 0; + lbl_1_bss_90 = -1; + lbl_1_bss_D8 = -1; + for (i = 0; i < 4; i++) { + lbl_1_bss_DC[i] = 0; + lbl_1_bss_EC[i] = -1; + } + Hu3DShadowCreate(30.0f, 1000.0f, 250000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_data_1D4, &lbl_1_data_1E0, &lbl_1_data_1EC); + for (i = 0; i < 3; i++) { + var_r29 = &Hu3DCamera[i]; + var_r29->fov = -1.0f; + } +} + +Vec lbl_1_data_21C = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_228 = { -1.0f, -2.0f, -1.0f }; +GXColor lbl_1_data_234 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_318(omObjData *arg0) +{ + s32 var_r31; + + var_r31 = Hu3DGLightCreateV(&lbl_1_data_21C, &lbl_1_data_228, &lbl_1_data_234); + Hu3DGLightStaticSet(var_r31, 1); + Hu3DGLightInfinitytSet(var_r31); + fn_1_F10(); + fn_1_34D8(); + fn_1_3BFC(); + fn_1_95C4(); + fn_1_D930(); + fn_1_E1BC(); + fn_1_E460(); + fn_1_F690(); + HuAudFXPlay(0x618); + arg0->func = fn_1_3B0; +} + +s32 lbl_1_data_238[] = { 0, 4, 2, 3, 1, 5 }; +s32 lbl_1_data_250[] = { 186, 186, 186, 240, 240, 240 }; + +void fn_1_3B0(omObjData *arg0) +{ + CameraData *var_r28; + float var_f31; + s32 temp_r27; + s32 var_r30; + s32 var_r29; + s32 i; + + switch (lbl_1_bss_114) { + case 0: + fn_1_10540(2, 1, 1, 0.0f); + if (++lbl_1_bss_110 > 3) { + for (i = 0; i < 3; i++) { + var_r28 = &Hu3DCamera[i]; + var_r28->fov = 45.0f; + } + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_114 = 1; + lbl_1_bss_110 = 0; + } + break; + case 1: + fn_1_10540(2, 1, 1, 0.0f); + if (WipeStatGet() == 0) { + lbl_1_bss_114 = 2; + lbl_1_bss_110 = 0; + } + break; + case 2: + if (++lbl_1_bss_110 >= 30.0f) { + lbl_1_bss_114 = 3; + lbl_1_bss_110 = 0; + } + break; + case 3: + var_f31 = lbl_1_bss_110 / 90.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind(90.0f * var_f31); + var_f31 *= var_f31; + fn_1_10540(2, 1, 0, var_f31); + if (++lbl_1_bss_110 >= 90.0f) { + lbl_1_bss_114 = 4; + lbl_1_bss_110 = 0; + } + break; + case 4: + if (fn_1_781C() != 0) { + lbl_1_bss_11C = MGSeqStartCreate(); + lbl_1_bss_114 = 5; + lbl_1_bss_110 = 0; + } + break; + case 5: + if (lbl_1_bss_11C != -1) { + var_r30 = MGSeqStatGet(lbl_1_bss_11C); + if ((var_r30 & 0x10) && lbl_1_bss_D8 == -1) { + lbl_1_bss_D8 = HuAudSeqPlay(0x46); + } + } + else { + var_r30 = 0; + } + if (lbl_1_bss_11C == -1 || var_r30 == 0) { + lbl_1_bss_11C = -1; + lbl_1_bss_114 = 6; + lbl_1_bss_110 = 0; + lbl_1_bss_108 = 1800; + fn_1_10028(1); + lbl_1_bss_118 = MGSeqTimerCreate(lbl_1_bss_108 / 60); + } + break; + case 6: + temp_r27 = lbl_1_data_238[lbl_1_bss_0]; + fn_1_106D8(temp_r27); + if (lbl_1_bss_80 >= lbl_1_data_250[temp_r27] && ++lbl_1_bss_0 > 5) { + lbl_1_bss_0 = 0; + } + var_r29 = (lbl_1_bss_108 + 59) / 60; + if (var_r29 < 0) { + var_r29 = 0; + } + MGSeqParamSet(lbl_1_bss_118, 1, var_r29); + if (--lbl_1_bss_108 < -1 || lbl_1_bss_104 <= 0) { + MGSeqParamSet(lbl_1_bss_118, 2, -1); + lbl_1_bss_118 = -1; + fn_1_B1A4(); + if (lbl_1_bss_D8 != -1) { + HuAudSeqFadeOut(lbl_1_bss_D8, 100); + } + lbl_1_bss_11C = MGSeqFinishCreate(); + lbl_1_bss_114 = 7; + lbl_1_bss_110 = 0; + } + break; + case 7: + if (fn_1_791C() != 0 && (lbl_1_bss_11C == -1 || MGSeqStatGet(lbl_1_bss_11C) == 0)) { + lbl_1_bss_114 = 9; + lbl_1_bss_110 = 0; + } + break; + case 9: + if (lbl_1_bss_104 <= 0) { + lbl_1_bss_11C = MGSeqWinCreate(lbl_1_bss_EC[0], lbl_1_bss_EC[1], lbl_1_bss_EC[2], -1); + fn_1_7AA8(1); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_EC[3] != GWPlayerCfg[i].character) { + GWPlayerCoinWinAdd(i, 10); + } + } + if (lbl_1_bss_DC[0] > lbl_1_bss_DC[1] && lbl_1_bss_DC[0] > lbl_1_bss_DC[2]) { + i = 0; + } + else if (lbl_1_bss_DC[1] > lbl_1_bss_DC[0] && lbl_1_bss_DC[1] > lbl_1_bss_DC[2]) { + i = 1; + } + else if (lbl_1_bss_DC[2] > lbl_1_bss_DC[0] && lbl_1_bss_DC[2] > lbl_1_bss_DC[1]) { + i = 2; + } + else { + i = frand() & 3; + if (i > 2) { + i = 2; + } + else if (i < 0) { + i = 0; + } + } + fn_1_106D8(i + 6); + lbl_1_bss_114 = 10; + lbl_1_bss_108 = 0; + } + else { + lbl_1_bss_11C = MGSeqWinCreate(lbl_1_bss_EC[3], -1, -1, -1); + fn_1_7AA8(0); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_EC[3] == GWPlayerCfg[i].character) { + GWPlayerCoinWinAdd(i, 10); + } + } + fn_1_106D8(9); + lbl_1_bss_114 = 10; + lbl_1_bss_108 = 0; + } + HuAudSStreamPlay(1); + HuAudFXPlay(0x618); + break; + case 10: + fn_1_3A8C(); + if (++lbl_1_bss_108 >= 210.0f) { + lbl_1_bss_11C = -1; + lbl_1_bss_114 = 11; + lbl_1_bss_108 = 0; + } + break; + case 11: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_DFC; + break; + } + fn_1_E60(arg0); +} + +void fn_1_DFC(omObjData *arg0) +{ + if (WipeStatGet() == 0) { + fn_1_1238(); + fn_1_3A64(); + fn_1_77D0(); + fn_1_A9AC(); + fn_1_DBC8(); + fn_1_E330(); + fn_1_E60C(); + fn_1_FF98(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_E60(omObjData *arg0) +{ + s32 var_r30; + + var_r30 = 0; + if (WipeStatGet() != 0 || arg0->func == fn_1_DFC) { + return; + } + if (omSysExitReq != 0) { + var_r30 = 1; + } + if (var_r30 != 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudStreamFadeOut(30); + arg0->func = fn_1_DFC; + } +} + +s32 fn_1_F00(void) +{ + return lbl_1_bss_114; +} + +void fn_1_F10(void) +{ + lbl_1_bss_D0 = omAddObjEx(lbl_1_bss_120, 0x7F, 8, 0, -1, fn_1_F60); +} + +void fn_1_F60(omObjData *arg0) +{ + StructBssD0Data *temp_r30; + ModelData *temp_r29; + + temp_r30 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r30), MEMORY_DEFAULT_NUM); + memset(temp_r30, 0, sizeof(*temp_r30)); + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M423, 0)); + Hu3DModelCameraSet(arg0->model[0], 5); + Hu3DModelShadowMapSet(arg0->model[0]); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M423, 1)); + Hu3DModelCameraSet(arg0->model[1], 5); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M423, 2)); + Hu3DModelScaleSet(arg0->model[2], 1.125f, 1.0f, 1.0f); + Hu3DModelCameraSet(arg0->model[2], 5); + Hu3DModelShadowSet(arg0->model[2]); + arg0->model[3] = Hu3DHookFuncCreate(fn_1_12A0); + Hu3DModelCameraSet(arg0->model[3], 2); + temp_r29 = &Hu3DData[arg0->model[3]]; + temp_r29->unk_120 = temp_r30; + temp_r30->unk00 = 160; + temp_r30->unk04 = 160; + temp_r30->unk08 = GXGetTexBufferSize(temp_r30->unk00, temp_r30->unk04, 5, 0, 0); + temp_r30->unk10 = HuMemDirectMallocNum(HEAP_DATA, temp_r30->unk08, (u32)temp_r29->unk_48); + temp_r30->unk0C = 0.0f; + arg0->model[4] = fn_1_13A0(temp_r30); + Hu3DModelCameraSet(arg0->model[4], 5); + Hu3DModelPosSet(arg0->model[4], 0.0f, 200.0f, -1700.0f); + arg0->model[5] = fn_1_18FC(); + Hu3DModelCameraSet(arg0->model[5], 4); + arg0->func = fn_1_11A4; +} + +void fn_1_11A4(omObjData *arg0) +{ + fn_1_2C08(arg0->model[5]); +} + +void fn_1_11D8(omObjData *arg0) +{ + fn_1_1444(arg0->model[4]); + arg0->model[4] = -1; + fn_1_29B8(arg0->model[5]); + arg0->model[5] = -1; + arg0->func = NULL; +} + +void fn_1_1238(void) +{ + fn_1_11D8(lbl_1_bss_D0); +} + +GXColor lbl_1_data_298 = { 0x00, 0x00, 0x00, 0xFF }; + +void fn_1_12A0(ModelData *arg0, Mtx arg1) +{ + StructBssD0Data *temp_r31; + CameraData *var_r30; + + temp_r31 = arg0->unk_120; + var_r30 = &Hu3DCamera[1]; + if (var_r30->fov <= 0.0f) { + return; + } + GXSetTexCopySrc(0, 0, 320, 240); + GXSetTexCopyDst(temp_r31->unk00, temp_r31->unk04, GX_TF_RGB5A3, GX_TRUE); + GXSetCopyClear(lbl_1_data_298, 0xFFFFFF); + GXCopyTex(temp_r31->unk10, GX_TRUE); + DCFlushRange(temp_r31->unk10, temp_r31->unk08); + GXPixModeSync(); + temp_r31->unk0C = 1; + fn_1_10BC8(); +} + +s32 fn_1_13A0(StructBssD0Data *arg0) +{ + StructM423_00 *var_r31; + ModelData *temp_r30; + s32 var_r29; + + var_r29 = Hu3DHookFuncCreate(fn_1_14A0); + temp_r30 = &Hu3DData[var_r29]; + var_r31 = temp_r30->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r31), temp_r30->unk_48); + memset(var_r31, 0, sizeof(*var_r31)); + var_r31->unk00 = arg0; + var_r31->unk04 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M423, 21), MEMORY_DEFAULT_NUM)); + return var_r29; +} + +void fn_1_1444(s32 arg0) +{ + StructM423_00 *var_r31; + ModelData *var_r30; + + if (arg0 >= 0) { + var_r30 = &Hu3DData[arg0]; + var_r31 = var_r30->unk_120; + HuSprAnimKill(var_r31->unk04); + } +} + +f32 lbl_1_data_29C[] = { -400.0f, 400.0f, 0.0f, 400.0f, 400.0f, 0.0f, 400.0f, 0.0f, 0.0f, -400.0f, 0.0f, 0.0f }; + +f32 lbl_1_data_2CC[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.75f, 0.0f, 0.75f }; + +f32 lbl_1_data_2EC[] = { 0.0f, 0.0f, 1.2f, 0.0f, 1.2f, 0.75f, 0.0f, 0.75f }; + +GXColor lbl_1_data_30C[] = { { 0x40, 0x40, 0x40, 0xFF } }; + +GXColor lbl_1_data_310 = { 0x00, 0x00, 0x00, 0x80 }; + +void fn_1_14A0(ModelData *arg0, Mtx arg1) +{ + CameraData *var_r28; + StructM423_00 *temp_r29; + StructBssD0Data *temp_r30; + Mtx spC; + s16 i; + + var_r28 = &Hu3DCamera[2]; + temp_r29 = arg0->unk_120; + temp_r30 = temp_r29->unk00; + if (temp_r30->unk0C != 0) { + if (var_r28->fov <= 0.0f) { + return; + } + GXLoadPosMtxImm(arg1, GX_PNMTX0); + MTXInvXpose(arg1, spC); + GXLoadNrmMtxImm(spC, GX_PNMTX0); + GXSetTevColor(GX_TEVREG2, lbl_1_data_310); + GXSetNumTevStages(2); + GXSetNumTexGens(2); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + if (Hu3DCameraNo != 0) { + GXSetTevOp(GX_TEVSTAGE1, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_C2, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + else { + GXSetTevOp(GX_TEVSTAGE1, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_APREV, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); + fn_1_11008(temp_r30, temp_r30->unk10, GX_TEXMAP0, GX_CLAMP, 0, 1); + HuSprTexLoad(temp_r29->unk04, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, lbl_1_data_29C, 12); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, lbl_1_data_30C, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, lbl_1_data_2CC, 8); + GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX1, lbl_1_data_2EC, 8); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for (i = 0; i < 4; i++) { + GXPosition1x16(i); + GXColor1x16(0); + GXTexCoord1x16(i); + GXTexCoord1x16(i); + } + GXEnd(); + } +} + +s32 lbl_1_data_314[][2] = { { 20, 10 }, { 20, 7 }, { 10, 10 }, { 10, 10 } }; + +Vec lbl_1_data_334[] = { { 0.0f, 100.0f, -1100.0f }, { 0.0f, 200.0f, -1000.0f }, { -225.0f, 100.0f, -1000.0f }, { 225.0f, 100.0f, -1000.0f } }; + +s32 fn_1_18FC(void) +{ + ModelData *temp_r30; + StructM423_03 *var_r29; + StructM423_02 *temp_r31; + s32 var_r27; + s32 i; + + var_r27 = Hu3DHookFuncCreate(fn_1_29BC); + temp_r30 = &Hu3DData[var_r27]; + var_r29 = temp_r30->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r29), temp_r30->unk_48); + memset(var_r29, 0, sizeof(*var_r29)); + var_r29->unk00 = var_r27; + var_r29->unk02 = 4; + temp_r31 = var_r29->unk04 = HuMemDirectMallocNum(HEAP_DATA, var_r29->unk02 * sizeof(*temp_r31), temp_r30->unk_48); + memset(temp_r31, 0, var_r29->unk02 * sizeof(*temp_r31)); + for (i = 0; i < var_r29->unk02; i++) { + temp_r31 = &var_r29->unk04[i]; + temp_r31->unk02 = lbl_1_data_314[i][0]; + temp_r31->unk04 = lbl_1_data_314[i][1]; + temp_r31->unk00 = temp_r31->unk02 * temp_r31->unk04; + temp_r31->unk08 = lbl_1_data_334[i]; + temp_r31->unk14 = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk00 * sizeof(*temp_r31->unk14), temp_r30->unk_48); + memset(temp_r31->unk14, 0, temp_r31->unk00 * sizeof(*temp_r31->unk14)); + temp_r31->unk18 = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk00 * sizeof(*temp_r31->unk18), temp_r30->unk_48); + memset(temp_r31->unk18, 0, temp_r31->unk00 * sizeof(*temp_r31->unk18)); + temp_r31->unk1C = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk00 * sizeof(*temp_r31->unk1C), temp_r30->unk_48); + memset(temp_r31->unk1C, 0, temp_r31->unk00 * sizeof(*temp_r31->unk1C)); + temp_r31->unk20 = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk00 * sizeof(*temp_r31->unk20), temp_r30->unk_48); + memset(temp_r31->unk20, 0, temp_r31->unk00 * sizeof(*temp_r31->unk20)); + switch (i) { + case 0: + fn_1_1B5C(temp_r30, temp_r31); + break; + case 1: + fn_1_1F5C(temp_r30, temp_r31); + break; + case 2: + fn_1_2290(temp_r30, temp_r31); + break; + default: + fn_1_2624(temp_r30, temp_r31); + break; + } + } + return var_r27; +} + +Vec lbl_1_data_364[] = { { -200.0f, 0.0f, -1100.0f }, { -200.0f, 200.0f, -1050.0f }, { 200.0f, 200.0f, -1050.0f } }; + +GXColor lbl_1_data_388 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_1B5C(ModelData *arg0, StructM423_02 *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + Vec *var_r27; + GXColor *var_r26; + StructM423_01 *var_r28; + void *var_r25; + void *var_r23; + s32 i; + s32 j; + + var_r27 = arg1->unk14; + var_r26 = arg1->unk1C; + var_r28 = arg1->unk20; + for (i = 0; i < 10; i++) { + var_f30 = 200.0f * (i / 9.0f); + var_f29 = -1100.0f + 50.0f * (i / 9.0f); + for (j = 0; j < 20; var_r27++, var_r26++, var_r28++, j++) { + var_f31 = -225.0f + 450.0f * (j / 19.0f); + var_r27->x = var_f31; + var_r27->y = var_f30; + var_r27->z = var_f29; + *var_r26 = lbl_1_data_388; + var_r28->unk00 = j; + var_r28->unk02 = i; + if (i == 0 || i == 9 || j == 0 || j == 19) { + var_r28->unk04 = 1; + } + else { + var_r28->unk04 = 0; + } + var_r28->unk06 = 0; + var_r28->unk08.x = var_r28->unk08.y = var_r28->unk08.z = 0.0f; + } + } + memcpy(arg1->unk18, arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk1C, arg1->unk00 * sizeof(*arg1->unk1C)); + PPCSync(); + var_r23 = var_r25 = HuMemDirectMallocNum(HEAP_DATA, 0x10000, arg0->unk_48); + DCFlushRange(var_r25, 0x10000); + GXBeginDisplayList(var_r23, 0x10000); + GXBegin(GX_LINES, GX_VTXFMT0, 9 * 19 * 4); + for (i = 1; i < 10; i++) { + for (j = 1; j < 20; j++) { + GXPosition1x16(i * 20 + j); + GXColor1x16(i * 20 + j); + + GXPosition1x16(i * 20 + (j - 1)); + GXColor1x16(i * 20 + (j - 1)); + + GXPosition1x16(i * 20 + j); + GXColor1x16(i * 20 + j); + + GXPosition1x16((i - 1) * 20 + j); + GXColor1x16((i - 1) * 20 + j); + } + } + GXEnd(); + arg1->unk34 = GXEndDisplayList(); + if (arg1->unk34 >= 0x10000) { + OSReport("ERROR! GList test size over! \n"); + } + arg1->unk38 = HuMemDirectMallocNum(HEAP_DATA, arg1->unk34, arg0->unk_48); + memcpy(arg1->unk38, var_r25, arg1->unk34); + DCFlushRange(arg1->unk38, arg1->unk34); + HuMemDirectFree(var_r25); + fn_1_129F0(&lbl_1_data_364[0], &lbl_1_data_364[1], &lbl_1_data_364[2], arg1->unk24); +} + +GXColor lbl_1_data_3AB = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_1F5C(ModelData *arg0, StructM423_02 *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + Vec *var_r27; + GXColor *var_r26; + void *var_r25; + void *var_r23; + s32 i; + s32 j; + + var_r27 = arg1->unk14; + var_r26 = arg1->unk1C; + for (i = 0; i < 7; i++) { + var_f30 = 200.0f; + var_f29 = -900.0f - 150.0f * (i / 6.0f); + for (j = 0; j < 20; var_r27++, var_r26++, j++) { + var_f31 = -225.0f + 450.0f * (j / 19.0f); + var_r27->x = var_f31; + var_r27->y = var_f30; + var_r27->z = var_f29; + *var_r26 = lbl_1_data_3AB; + } + } + memcpy(arg1->unk18, arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk1C, arg1->unk00 * sizeof(*arg1->unk1C)); + PPCSync(); + var_r23 = var_r25 = HuMemDirectMallocNum(HEAP_DATA, 0x10000, arg0->unk_48); + DCFlushRange(var_r25, 0x10000); + GXBeginDisplayList(var_r23, 0x10000); + GXBegin(GX_LINES, GX_VTXFMT0, 6 * 19 * 4); + for (i = 1; i < 7; i++) { + for (j = 1; j < 20; j++) { + GXPosition1x16(i * 20 + j); + GXColor1x16(i * 20 + j); + + GXPosition1x16(i * 20 + (j - 1)); + GXColor1x16(i * 20 + (j - 1)); + + GXPosition1x16(i * 20 + j); + GXColor1x16(i * 20 + j); + + GXPosition1x16((i - 1) * 20 + j); + GXColor1x16((i - 1) * 20 + j); + } + } + GXEnd(); + arg1->unk34 = GXEndDisplayList(); + if (arg1->unk34 >= 0x10000) { + OSReport("ERROR! GList test size over! \n"); + } + arg1->unk38 = HuMemDirectMallocNum(HEAP_DATA, arg1->unk34, arg0->unk_48); + memcpy(arg1->unk38, var_r25, arg1->unk34); + DCFlushRange(arg1->unk38, arg1->unk34); + HuMemDirectFree(var_r25); +} + +GXColor lbl_1_data_3AF = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_2290(ModelData *arg0, StructM423_02 *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + Vec *var_r27; + GXColor *var_r26; + void *var_r25; + void *var_r23; + s32 i; + s32 j; + + var_r27 = arg1->unk14; + var_r26 = arg1->unk1C; + for (i = 0; i < 10; i++) { + var_f28 = 200.0f * (i / 9.0f); + var_f29 = -225.0f; + var_f30 = -1100.0f + 50.0f * (i / 9.0f); + for (j = 0; j < 10; var_r27++, var_r26++, j++) { + var_f31 = -900.0f - 200.0f * (j / 9.0f); + if (var_f31 < var_f30) { + var_f31 = var_f30; + } + var_r27->x = var_f29; + var_r27->y = var_f28; + var_r27->z = var_f31; + *var_r26 = lbl_1_data_3AF; + } + } + memcpy(arg1->unk18, arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk1C, arg1->unk00 * sizeof(*arg1->unk1C)); + PPCSync(); + var_r23 = var_r25 = HuMemDirectMallocNum(HEAP_DATA, 0x10000, arg0->unk_48); + DCFlushRangeNoSync(var_r25, 0x10000); + GXBeginDisplayList(var_r23, 0x10000); + GXBegin(GX_LINES, GX_VTXFMT0, 9 * 9 * 4); + for (i = 1; i < 10; i++) { + for (j = 1; j < 10; j++) { + GXPosition1x16(i * 10 + j); + GXColor1x16(i * 10 + j); + + GXPosition1x16(i * 10 + (j - 1)); + GXColor1x16(i * 10 + (j - 1)); + + GXPosition1x16(i * 10 + j); + GXColor1x16(i * 10 + j); + + GXPosition1x16((i - 1) * 10 + j); + GXColor1x16((i - 1) * 10 + j); + } + } + GXEnd(); + arg1->unk34 = GXEndDisplayList(); + if (arg1->unk34 >= 0x10000) { + OSReport("ERROR! GList test size over! \n"); + } + arg1->unk38 = HuMemDirectMallocNum(HEAP_DATA, arg1->unk34, arg0->unk_48); + memcpy(arg1->unk38, var_r25, arg1->unk34); + DCFlushRange(arg1->unk38, arg1->unk34); + HuMemDirectFree(var_r25); +} + +GXColor lbl_1_data_3B3 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_2624(ModelData *arg0, StructM423_02 *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + Vec *var_r27; + GXColor *var_r26; + void *var_r25; + void *var_r23; + s32 i; + s32 j; + + var_r27 = arg1->unk14; + var_r26 = arg1->unk1C; + for (i = 0; i < 10; i++) { + var_f28 = 200.0f * (i / 9.0f); + var_f29 = 225.0f; + var_f30 = -1100.0f + 50.0f * (i / 9.0f); + for (j = 0; j < 10; var_r27++, var_r26++, j++) { + var_f31 = -900.0f - 200.0f * (j / 9.0f); + if (var_f31 < var_f30) { + var_f31 = var_f30; + } + var_r27->x = var_f29; + var_r27->y = var_f28; + var_r27->z = var_f31; + *var_r26 = lbl_1_data_3B3; + } + } + memcpy(arg1->unk18, arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk14, arg1->unk00 * sizeof(*arg1->unk14)); + DCFlushRangeNoSync(arg1->unk1C, arg1->unk00 * sizeof(*arg1->unk1C)); + PPCSync(); + var_r23 = var_r25 = HuMemDirectMallocNum(HEAP_DATA, 0x10000, arg0->unk_48); + DCFlushRange(var_r25, 0x10000); + GXBeginDisplayList(var_r23, 0x10000); + GXBegin(GX_LINES, GX_VTXFMT0, 9 * 9 * 4); + for (i = 1; i < 10; i++) { + for (j = 1; j < 10; j++) { + GXPosition1x16(i * 10 + j); + GXColor1x16(i * 10 + j); + + GXPosition1x16(i * 10 + (j - 1)); + GXColor1x16(i * 10 + (j - 1)); + + GXPosition1x16(i * 10 + j); + GXColor1x16(i * 10 + j); + + GXPosition1x16((i - 1) * 10 + j); + GXColor1x16((i - 1) * 10 + j); + } + } + GXEnd(); + arg1->unk34 = GXEndDisplayList(); + if (arg1->unk34 >= 0x10000) { + OSReport("ERROR! GList test size over! \n"); + } + arg1->unk38 = HuMemDirectMallocNum(HEAP_DATA, arg1->unk34, arg0->unk_48); + memcpy(arg1->unk38, var_r25, arg1->unk34); + DCFlushRange(arg1->unk38, arg1->unk34); + HuMemDirectFree(var_r25); +} + +void fn_1_29B8(s32 arg0) { } + +void fn_1_29BC(ModelData *arg0, Mtx arg1) +{ + StructM423_03 *temp_r30; + StructM423_02 *temp_r31; + Mtx sp8; + s16 i; + + temp_r30 = arg0->unk_120; + GXLoadPosMtxImm(arg1, GX_PNMTX0); + MTXInvXpose(arg1, sp8); + GXLoadNrmMtxImm(sp8, GX_PNMTX0); + GXSetLineWidth(6, GX_TO_ZERO); + GXSetNumTevStages(1); + GXSetNumTexGens(0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + for (i = 0; i < temp_r30->unk02; i++) { + temp_r31 = &temp_r30->unk04[i]; + if (temp_r31->unk38 && temp_r31->unk34 != 0) { + DCFlushRangeNoSync(temp_r31->unk14, temp_r31->unk00 * sizeof(*temp_r31->unk14)); + DCFlushRangeNoSync(temp_r31->unk1C, temp_r31->unk00 * sizeof(*temp_r31->unk1C)); + PPCSync(); + GXSetArray(GX_VA_POS, temp_r31->unk14, sizeof(*temp_r31->unk14)); + GXSetArray(GX_VA_CLR0, temp_r31->unk1C, sizeof(*temp_r31->unk1C)); + GXCallDisplayList(temp_r31->unk38, temp_r31->unk34); + } + } +} + +void fn_1_2C08(s32 arg0) +{ + Vec sp3C; + Vec sp30; + Vec sp24; + Vec *var_r25; + Vec *var_r24; + Vec *temp_r27; + Vec *temp_r29; + float temp_f31; + float temp_f28; + float temp_f30; + float var_f29; + float var_f27; + StructM423_02 *temp_r30; + StructM423_01 *var_r28; + StructBssA8Data *var_r31; + StructM423_03 *var_r17; + ModelData *sp20; + ModelData *sp1C; + StructM423_01 *sp18; + s32 var_r20; + s32 temp_r19; + s32 temp_r18; + s32 i; + s32 j; + s32 k; + s32 temp_r21; + s32 sp14; + s32 sp10; + s32 spC; + Mtx sp48; + + sp20 = &Hu3DData[arg0]; + var_r17 = sp20->unk_120; + temp_r30 = var_r17->unk04; + var_r25 = temp_r30->unk14; + var_r24 = temp_r30->unk18; + var_r28 = temp_r30->unk20; + if (lbl_1_bss_A8 == NULL) { + return; + } + var_r31 = lbl_1_bss_A8->data; + for (i = 0; i < temp_r30->unk00; i++, var_r25++, var_r24++, var_r28++) { + if (var_r28->unk04 != 0) { + continue; + } + VECSubtract(var_r24, var_r25, &sp30); + temp_f31 = VECMag(&sp30); + if (temp_f31 >= 0.0f) { + VECScale(&sp30, &sp30, 0.05f); + VECAdd(&var_r28->unk08, &sp30, &var_r28->unk08); + temp_f31 = VECMag(&var_r28->unk08); + if (temp_f31 > 10.0f) { + VECNormalize(&var_r28->unk08, &var_r28->unk08); + VECScale(&var_r28->unk08, &var_r28->unk08, 10.0f); + } + } + VECAdd(var_r25, &var_r28->unk08, var_r25); + VECScale(&var_r28->unk08, &var_r28->unk08, 0.5f); + } + for (i = 0; i < 15; i++, var_r31++) { + if (var_r31->unk06 == 0 || var_r31->unk0C != 3) { + continue; + } + spC = 0; + VECSubtract(&var_r31->unk38, &var_r31->unk74, &sp30); + if (var_r31->unk38.x > -225.0f && var_r31->unk38.x < 225.0f && var_r31->unk38.y > 0.0f && var_r31->unk38.y < 200.0f + && var_r31->unk38.z > -1150.0f && var_r31->unk38.z < -950.0f) { + var_f27 = 0.005f * var_r31->unk38.y; + var_f29 = -900.0f - (150.0f + var_f27 * 50.0f); + if (var_r31->unk38.z - 20.0 < var_f29) { + if (var_r31->unk38.z < 20.0 + (var_f29 - 75.0f)) { + var_r31->unk38.z = 20.0 + (var_f29 - 75.0f); + } + spC = 1; + } + } + if (spC != 0) { + if (var_r31->unk0A == 0 && var_r31->unk08 == 0) { + fn_1_AEE8(i); + } + if (var_r31->unk10 == 0) { + var_r31->unk5C = var_r31->unk50; + var_r31->unk10 = 1; + } + sp1C = &Hu3DData[var_r31->unk00]; + sp24.x = var_r31->unk5C.z; + sp24.z = -var_r31->unk5C.x; + sp24.y = 0.0f; + temp_f31 = 0.05 * VECMag(&sp24); + if (temp_f31 > 0.00001f) { + MTXRotAxisRad(sp48, &sp24, temp_f31); + MTXConcat(sp48, sp1C->unk_F0, sp1C->unk_F0); + } + temp_f31 = 0.0133333336f * fabs(var_f29 - (var_r31->unk38.z - 20.0)); + var_r31->unk50.z += temp_f31 * 0.4f; + VECScale(&var_r31->unk50, &var_r31->unk50, 0.95f); + var_r31->unk50.y *= 0.0f; + var_r31->unk50.x *= 0.75f; + sp14 = (var_r31->unk38.x - -225.0f) / 22.5f; + sp10 = var_r31->unk38.y / 20.0f; + var_r20 = sp14 + sp10 * temp_r30->unk02; + var_r25 = &temp_r30->unk14[var_r20]; + var_r24 = &temp_r30->unk18[var_r20]; + var_r28 = &temp_r30->unk20[var_r20]; + temp_f28 = var_r24->z - (var_r31->unk38.z - 20.0); + sp3C = var_r31->unk38; + if (temp_f28 < 0.0f) { + continue; + } + for (j = -19; j < 20; j++) { + for (k = -19; k < 20; k++) { + temp_r19 = sp14 + k; + temp_r18 = sp10 + j; + temp_r21 = temp_r19 + temp_r18 * temp_r30->unk02; + if (temp_r19 < 0 || temp_r19 >= temp_r30->unk02 || temp_r18 < 0 || temp_r18 >= temp_r30->unk04 || temp_r21 >= temp_r30->unk00) { + continue; + } + sp18 = &temp_r30->unk20[temp_r21]; + if (sp18->unk04 != 0) { + continue; + } + temp_r29 = &temp_r30->unk14[temp_r21]; + temp_r27 = &temp_r30->unk18[temp_r21]; + VECSubtract(&sp3C, temp_r29, &sp30); + sp30.z = 0.0f; + temp_f31 = VECMag(&sp30); + if (temp_f31 > 400.0f) { + continue; + } + if (temp_f31 > 20.0) { + temp_f30 = 0.0025f * (400.0f - temp_f31); + temp_f30 = temp_f30 * temp_f30; + VECNormalize(&sp30, &sp30); + VECScale(&sp30, &sp30, 20.0f * (temp_f30 * temp_f30)); + temp_r29->x += 0.5f * (temp_r27->x + sp30.x - temp_r29->x); + temp_r29->y += 0.5f * (temp_r27->y + sp30.y - temp_r29->y); + temp_r29->z += 0.5f * (temp_r27->z - temp_f30 * temp_f28 - temp_r29->z); + } + else { + temp_f30 = cosd(0.0025f * temp_f31 * 90.0f); + if (temp_f31 != 0.0f) { + VECNormalize(&sp30, &sp30); + } + else { + sp30.x = sp30.y = sp30.z = 0.0f; + } + VECScale(&sp30, &sp30, temp_f30 * temp_f30 * 20.0f); + temp_r29->z += 0.5f * (temp_r27->z - temp_f30 * temp_f28 - temp_r29->z); + } + } + } + } + else { + var_r31->unk10 = 0; + } + } + DCFlushRangeNoSync(temp_r30->unk14, temp_r30->unk00 * sizeof(*temp_r30->unk14)); + PPCSync(); +} + +void fn_1_34D8(void) +{ + lbl_1_bss_CC = omAddObjEx(lbl_1_bss_120, 0x81, 20, 6, -1, fn_1_3528); +} + +Vec lbl_1_data_3B8[] = { -1300.0f, 300.0f, -2350.0f, -800.0f, 200.0f, -2250.0f, 800.0f, 200.0f, -2250.0f, 1300.0f, 300.0f, -2350.0f, -1000.0f, 300.0f, + -2350.0f, 1000.0f, 300.0f, -2350.0f, -1200.0f, 400.0f, -2450.0f, -800.0f, 400.0f, -2450.0f, 800.0f, 400.0f, -2450.0f, 1200.0f, 400.0f, -2450.0f, + -1400.0f, 200.0f, -2250.0f, 1400.0f, 200.0f, -2250.0f, -1400.0f, 400.0f, -2450.0f, 1400.0f, 400.0f, -2450.0f, -900.0f, 500.0f, -2550.0f, 900.0f, + 500.0f, -2550.0f, -1200.0f, 500.0f, -2550.0f, 1200.0f, 500.0f, -2550.0f, -1100.0f, 200.0f, -2250.0f, 1100.0f, 200.0f, -2250.0f }; + +s32 lbl_1_data_4A8[] = { 0, 1, 0, 1, 2, 2, 1, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 1, 0 }; + +s32 lbl_1_data_4FC[] = { DATA_MAKE_NUM(DATADIR_M423, 12), DATA_MAKE_NUM(DATADIR_M423, 15), DATA_MAKE_NUM(DATADIR_M423, 18) }; + +s32 lbl_1_data_508[] = { DATA_MAKE_NUM(DATADIR_M423, 13), DATA_MAKE_NUM(DATADIR_M423, 14), DATA_MAKE_NUM(DATADIR_M423, 16), + DATA_MAKE_NUM(DATADIR_M423, 17), DATA_MAKE_NUM(DATADIR_M423, 19), DATA_MAKE_NUM(DATADIR_M423, 20) }; + +s16 lbl_1_data_520[] = { 0, 2, 4 }; + +void fn_1_3528(omObjData *arg0) +{ + float var_f30; + float var_f29; + float temp_f31; + StructBssCCData *var_r30; + s32 temp_r27; + s32 var_r28; + s32 i; + + var_r30 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(*var_r30), MEMORY_DEFAULT_NUM); + memset(var_r30, 0, 20 * sizeof(*var_r30)); + for (i = 0; i < 6; i++) { + arg0->motion[i] = Hu3DMotionCreateFile(lbl_1_data_508[i]); + } + for (i = 0; i < 20; i++, var_r30++) { + temp_r27 = lbl_1_data_4A8[i]; + var_r30->unk00 = temp_r27; + var_r30->unk02 = 0; + var_r30->unk04 = 0; + var_r30->unk08 = 0; + var_r30->unk0A = 0; + var_r30->unk06 = 210.0f + (1.0f / 127) * frand7() * 60.0f; + var_f30 = -lbl_1_data_3B8[i].x; + var_f29 = -lbl_1_data_3B8[i].z; + temp_f31 = atan2d(var_f30, var_f29); + var_r28 = Hu3DModelCreateFile(lbl_1_data_4FC[temp_r27]); + arg0->model[i] = var_r28; + Hu3DModelCameraSet(var_r28, 4); + Hu3DModelPosSet(var_r28, lbl_1_data_3B8[i].x, lbl_1_data_3B8[i].y, lbl_1_data_3B8[i].z); + if (var_r30->unk00 != 1) { + Hu3DModelRotSet(var_r28, 0.0f, temp_f31, 0.0f); + } + else { + Hu3DModelRotSet(var_r28, 10.0f, temp_f31, 0.0f); + } + Hu3DModelScaleSet(var_r28, 1.8f, 1.8f, 1.8f); + Hu3DMotionSet(arg0->model[i], arg0->motion[lbl_1_data_520[var_r30->unk00]]); + if ((i >= 14 && i <= 17) || i == 11 || i == 10) { + Hu3DModelAttrSet(var_r28, 1); + } + } + arg0->stat |= 0x100; + arg0->func = fn_1_3898; +} + +s16 lbl_1_data_526[] = { 0, 2, 4 }; +s16 lbl_1_data_52C[] = { 1, 3, 5, 0 }; + +void fn_1_3898(omObjData *arg0) +{ + StructBssCCData *var_r31; + s32 var_r28; + s32 i; + + var_r31 = arg0->data; + for (i = 0; i < 20; i++, var_r31++) { + var_r28 = 0; + if (var_r31->unk06 > 0) { + var_r28 = 1; + var_r31->unk06--; + } + else if (var_r31->unk0A > 0) { + if (var_r31->unk08 > 0) { + var_r31->unk08--; + } + else if (var_r31->unk0A > 0) { + var_r28 = 1; + var_r31->unk0A--; + } + else { + var_r31->unk08 = 0; + var_r31->unk0A = 0; + } + } + if (var_r28 != var_r31->unk02 && Hu3DMotionShiftIDGet(arg0->model[i]) == -1) { + var_r31->unk02 = var_r28; + if (var_r31->unk02 == 0) { + Hu3DMotionShiftSet(arg0->model[i], arg0->motion[lbl_1_data_526[var_r31->unk00]], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + else { + Hu3DMotionShiftSet(arg0->model[i], arg0->motion[lbl_1_data_52C[var_r31->unk00]], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } + } +} + +void fn_1_3A58(omObjData *arg0) +{ + arg0->func = NULL; +} + +void fn_1_3A64(void) +{ + fn_1_3A58(lbl_1_bss_CC); +} + +void fn_1_3A8C(void) +{ + omObjData *var_r29; + StructBssCCData *var_r31; + s32 i; + + if (lbl_1_bss_CC == NULL) { + return; + } + var_r29 = lbl_1_bss_CC; + var_r31 = var_r29->data; + for (i = 0; i < 20; i++, var_r31++) { + if (var_r31->unk06 > 0 || var_r31->unk0A > 0) { + var_r31->unk08 = 0; + } + else { + var_r31->unk08 = (1.0f / 127) * frand7() * 0.25f * 60.0f; + } + var_r31->unk0A = ((1.0f / 127) * frand7() + 2.0f) * 60.0f; + } +} + +void fn_1_3BFC(void) +{ + s32 sp8[4]; + s32 temp_r28; + s32 temp_r27; + s32 var_r25; + s32 var_r26; + s32 var_r29; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) { + sp8[i] = -1; + } + for (i = 0, var_r29 = 0; i < 4; i++) { + if (GWPlayerCfgGroupGet(i) == 0) { + sp8[3] = i; + } + else { + sp8[var_r29] = i; + var_r29++; + } + } + for (i = 0; i < 4; i++) { + if (sp8[i] == -1) { + break; + } + } + if (i < 4) { + sp8[0] = 1; + sp8[1] = 2; + sp8[2] = 3; + sp8[3] = 0; + } + else { + for (i = 0; i < 32; i++) { + temp_r28 = (s16)(frand() & 0xFFF) % 3; + temp_r27 = (s16)(frand() & 0xFFF) % 3; + if (temp_r28 != temp_r27) { + var_r29 = sp8[temp_r27]; + sp8[temp_r27] = sp8[temp_r28]; + sp8[temp_r28] = var_r29; + } + } + } + var_r25 = 1; + for (i = 0, var_r26 = 0; i < 4; i++) { + lbl_1_bss_BC[i] = omAddObjEx(lbl_1_bss_120, 0x40, 4, 11, -1, fn_1_3FE0); + lbl_1_bss_BC[i]->work[0] = i; + if (i == sp8[3]) { + lbl_1_bss_EC[3] = GWPlayerCfg[lbl_1_bss_BC[i]->work[0]].character; + lbl_1_bss_BC[i]->work[1] = 0; + lbl_1_bss_BC[i]->work[2] = 0; + if (GWPlayerCfg[lbl_1_bss_BC[i]->work[0]].iscom) { + lbl_1_bss_FC = 1; + } + } + else { + lbl_1_bss_EC[var_r26] = GWPlayerCfg[lbl_1_bss_BC[i]->work[0]].character; + var_r26++; + lbl_1_bss_BC[i]->work[1] = 1; + for (j = 0; j < 3; j++) { + if (i == sp8[j]) { + break; + } + } + if (j >= 3) { + j = i - 1; + } + lbl_1_bss_BC[i]->work[2] = j; + lbl_1_bss_AC[j] = lbl_1_bss_BC[i]; + if (!GWPlayerCfg[lbl_1_bss_BC[i]->work[0]].iscom) { + var_r25 = 0; + } + } + } + if (var_r25 != 0) { + lbl_1_bss_FC = 0; + } +} + +u32 lbl_1_data_534[][2] + = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), -1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), -1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), -1 }, { 0, 0 }, + { 0, 1 }, { 0, 2 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), -1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 24), -1 } }; + +s32 lbl_1_data_574[] = { DATA_MAKE_NUM(DATADIR_M423, 58), DATA_MAKE_NUM(DATADIR_M423, 26), DATA_MAKE_NUM(DATADIR_M423, 34) }; + +u32 lbl_1_data_580[][2] = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), -1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), -1 }, { 0, 0 }, { 0, 1 }, { 0, 2 }, { 0, 3 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 11), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), -1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), -1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 24), -1 } }; + +s32 lbl_1_data_5D8[] + = { DATA_MAKE_NUM(DATADIR_M423, 42), DATA_MAKE_NUM(DATADIR_M423, 66), DATA_MAKE_NUM(DATADIR_M423, 50), DATA_MAKE_NUM(DATADIR_M423, 74) }; + +void fn_1_3FE0(omObjData *arg0) +{ + float var_f31; + StructBssBCData *temp_r31; + s32 i; + + temp_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + memset(temp_r31, 0, sizeof(*temp_r31)); + temp_r31->unk00 = arg0->work[0]; + temp_r31->unk02 = GWPlayerCfg[arg0->work[0]].character; + temp_r31->unk04 = GWPlayerCfg[arg0->work[0]].pad_idx; + temp_r31->unk06 = GWPlayerCfg[arg0->work[0]].iscom; + temp_r31->unk08 = GWPlayerCfg[arg0->work[0]].diff; + temp_r31->unk0A = arg0->work[1]; + temp_r31->unk0C = arg0->work[2]; + memset(&temp_r31->unk1C, 0, sizeof(temp_r31->unk1C)); + temp_r31->unk58 = 0; + temp_r31->unk5C = -1; + temp_r31->unk60 = 0.0f; + temp_r31->unk64 = -1; + temp_r31->unk68 = 0; + temp_r31->unk6C = 0; + temp_r31->unk70 = 0; + temp_r31->unk74 = 0; + temp_r31->unk16 = -1; + temp_r31->unk88 = 0.0f; + temp_r31->unk8C = 0.0f; + temp_r31->unk90 = 0; + temp_r31->unk94 = 0; + temp_r31->unk98 = 0; + temp_r31->unk9C = 0; + temp_r31->unkA0 = 0; + temp_r31->unkA4 = 0; + temp_r31->unkA8 = 0.0f; + temp_r31->unkAC = 0; + arg0->model[0] = CharModelCreate(temp_r31->unk02, 4); + Hu3DModelCameraSet(arg0->model[0], 5); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_CURVE_MOTOFF); + CharModelStepTypeSet(temp_r31->unk02, 2); + if (temp_r31->unk0A == 0) { + for (i = 0; i < 11; i++) { + if (lbl_1_data_580[i][1] == -1) { + arg0->motion[i] = CharModelMotionCreate(temp_r31->unk02, lbl_1_data_580[i][0]); + } + else { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_5D8[lbl_1_data_580[i][1]] + temp_r31->unk02); + } + } + temp_r31->unk16 = 0; + temp_r31->unk18 = 0; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + temp_r31->unkB0 = arg0->trans.x = lbl_1_data_150[0].x; + temp_r31->unkB4 = arg0->trans.y = lbl_1_data_150[0].y; + temp_r31->unkB8 = arg0->trans.z = lbl_1_data_150[0].z; + temp_r31->unkBC = lbl_1_data_180[0].x; + temp_r31->unkC0 = lbl_1_data_180[0].y; + temp_r31->unkC4 = lbl_1_data_180[0].z; + temp_r31->unk78 = 0.0f; + temp_r31->unk7C = 0.0f; + temp_r31->unkE0 = temp_r31->unkE4 = temp_r31->unkE8 = 0.0f; + temp_r31->unkEC = temp_r31->unkF0 = temp_r31->unkF4 = 0.0f; + temp_r31->unk7C = 6.5f; + var_f31 = 0.0f; + for (i = 0; i < 1000; i++) { + var_f31 += temp_r31->unk7C; + temp_r31->unk7C -= 0.49f; + if (var_f31 <= 0.0f) { + break; + } + } + temp_r31->unk80 = i; + temp_r31->unk7C = 10.5f; + var_f31 = 0.0f; + for (i = 0; i < 1000; i++) { + var_f31 += temp_r31->unk7C; + temp_r31->unk7C -= 0.65333337f; + if (var_f31 <= 0.0f) { + break; + } + } + temp_r31->unk84 = i; + arg0->func = fn_1_5D18; + } + else { + for (i = 0; i < 8; i++) { + if (lbl_1_data_534[i][1] == -1) { + arg0->motion[i] = CharModelMotionCreate(temp_r31->unk02, lbl_1_data_534[i][0]); + } + else { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_574[lbl_1_data_534[i][1]] + temp_r31->unk02); + } + } + temp_r31->unk16 = 0; + temp_r31->unk18 = 0; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + temp_r31->unkB0 = lbl_1_data_150[temp_r31->unk0C + 1].x; + temp_r31->unkB4 = lbl_1_data_150[temp_r31->unk0C + 1].y; + temp_r31->unkB8 = lbl_1_data_150[temp_r31->unk0C + 1].z; + temp_r31->unkBC = arg0->trans.x = lbl_1_data_180[temp_r31->unk0C + 1].x; + temp_r31->unkC0 = arg0->trans.y = lbl_1_data_180[temp_r31->unk0C + 1].y; + temp_r31->unkC4 = arg0->trans.z = lbl_1_data_180[temp_r31->unk0C + 1].z; + temp_r31->unk78 = atan2d(lbl_1_data_150[0].x - temp_r31->unkB0, lbl_1_data_150[0].z - temp_r31->unkB8); + temp_r31->unk7C = 0.0f; + temp_r31->unk98 = 0; + temp_r31->unk9C = 300.0f + (1.0f / 127) * frand7() * 60.0f * 15.0f; + if (lbl_1_bss_FC != 0) { + temp_r31->unk08 = 3; + } + arg0->func = fn_1_4778; + } + CharModelMotionDataClose(temp_r31->unk02); +} + +Vec lbl_1_data_5E8 = { 0.0f, 20.0f, 50.0f }; +GXColor lbl_1_data_5F4 = { 0xFF, 0xFF, 0xFF, 0x10 }; +GXColor lbl_1_data_5F8 = { 0xFF, 0xFF, 0xFF, 0x40 }; + +void fn_1_4778(omObjData *arg0) +{ + Mtx sp11C; + Vec sp110; + Vec sp104; + Vec spF8; + float temp_f27; + float temp_f29; + float temp_f30; + float var_f25; + StructBssBCData *temp_r31; + ModelData *temp_r27; + s32 temp_r26; + s16 var_r25; + s16 var_r24; + s16 var_r29; + s16 var_r28; + + temp_r31 = arg0->data; + temp_r27 = &Hu3DData[arg0->model[0]]; + temp_r31->unk0E = HuPadBtn[temp_r31->unk04]; + temp_r31->unk10 = HuPadBtnDown[temp_r31->unk04]; + temp_r31->unk12 = HuPadStkX[temp_r31->unk04]; + temp_r31->unk14 = HuPadStkY[temp_r31->unk04]; + if (fn_1_F00() == 6) { + if (temp_r31->unk06 != 0) { + temp_r31->unk0E &= ~PAD_BUTTON_A; + temp_r31->unk10 &= ~PAD_BUTTON_A; + temp_r31->unk12 = 0; + temp_r31->unk14 = 0; + fn_1_8338(arg0); + } + var_r25 = temp_r31->unk0E; + var_r24 = temp_r31->unk10; + var_r29 = temp_r31->unk12; + var_r28 = temp_r31->unk14; + } + if (fabs(var_r29) < 8.0) { + var_r29 = 0; + } + if (fabs(var_r29) > 80.0) { + var_r29 = 80; + } + if (fabs(var_r28) < 8.0) { + var_r28 = 0; + } + if (fabs(var_r28) > 80.0) { + var_r28 = 80; + } + if (fn_1_F00() != 6) { + var_r29 = var_r28 = 0; + var_r25 = var_r24 = 0; + } + switch (temp_r31->unk18) { + case 0: + if (fn_1_F00() < 3) { + break; + } + spF8.x = temp_r31->unkB0 - arg0->trans.x; + spF8.z = temp_r31->unkB8 - arg0->trans.z; + temp_f29 = VECMagXZ(&spF8); + if (temp_f29 > 25.0f) { + spF8.x = temp_r31->unkB0 - arg0->trans.x; + spF8.z = temp_r31->unkB8 - arg0->trans.z; + temp_f30 = atan2d(spF8.x, spF8.z); + arg0->rot.y = fn_1_122F4(temp_f30, arg0->rot.y, 15.0f); + arg0->trans.x += 25.0 * sind(arg0->rot.y) * 0.5; + arg0->trans.z += 25.0 * cosd(arg0->rot.y) * 0.5; + if (temp_r31->unk16 != 2) { + temp_r31->unk16 = 2; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + } + break; + } + arg0->trans.x = temp_r31->unkB0; + arg0->trans.z = temp_r31->unkB8; + temp_r31->unk18 = 1; + if (temp_r31->unk16 != 0) { + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + break; + case 1: + arg0->rot.y = fn_1_122F4(0.0f, arg0->rot.y, 5.0f); + if (fabs(fn_1_121DC(arg0->rot.y, 0.0f)) < 1.0) { + arg0->rot.y = 0.0f; + temp_r31->unk18 = 2; + } + break; + case 2: + temp_r31->unk18 = 3; + break; + case 3: + arg0->rot.y = fn_1_122F4(0.0f, arg0->rot.y, 10.0f); + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (fabs(fn_1_121DC(arg0->rot.y, 0.0f)) < 1.0) { + arg0->rot.y = 0.0f; + sp104 = lbl_1_data_5E8; + mtxRot(sp11C, arg0->rot.x, arg0->rot.y, arg0->rot.z); + fn_1_1293C(sp11C, &sp104); + sp104.x += arg0->trans.x; + sp104.y += arg0->trans.y; + sp104.z += arg0->trans.z; + if (fn_1_F00() <= 6 && (temp_r31->unk5C = fn_1_A9D4(temp_r31->unk02, lbl_1_data_1B0[temp_r31->unk0C], sp104)) != -1) { + temp_r31->unk18 = 4; + temp_r31->unk68 = 0; + } + } + break; + case 4: + temp_r26 = fn_1_AE64(temp_r31->unk5C); + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (temp_r26 == -1 || temp_r31->unk5C == -1) { + temp_r31->unk18 = 3; + break; + } + if (temp_r26 == 2) { + if (++temp_r31->unk68 >= 6.0f) { + HuAudFXPlay(0x61A); + temp_r31->unk18 = 5; + temp_r31->unk68 = 0; + } + break; + } + if (++temp_r31->unk68 >= 54.0f && temp_r31->unk16 != 3) { + temp_r31->unk16 = 3; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + } + break; + case 5: + temp_f30 = fabs(fn_1_121DC(arg0->rot.y, temp_r31->unk78)); + if (temp_f30 < 10.0f) { + arg0->rot.y += temp_f30; + } + else { + arg0->rot.y += 10.0f; + } + sp104 = lbl_1_data_5E8; + mtxRot(sp11C, arg0->rot.x, arg0->rot.y, arg0->rot.z); + fn_1_1293C(sp11C, &sp104); + sp104.x += arg0->trans.x; + sp104.y += arg0->trans.y; + sp104.z += arg0->trans.z; + fn_1_AC0C(temp_r31->unk5C, sp104); + spF8.x = 0.0f; + spF8.y = 1.0f; + spF8.z = 1.0f; + sp104.y = 0.0f; + fn_1_DD70(sp104, spF8, 50.0f, -0.5f, 10.0f, 1.0f, lbl_1_data_5F4); + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (fabs(fn_1_121DC(arg0->rot.y, temp_r31->unk78)) < 1.0) { + temp_r31->unkC8 = sp104; + temp_r31->unk18 = 6; + temp_r31->unk68 = 0; + } + break; + case 6: + sp110.x = 0.0125f * var_r29 * 300.0f; + sp110.y = -900.0f; + sp110.z = -900.0f; + temp_f30 = atan2d(sp110.x - temp_r31->unkC8.x, sp110.z - temp_r31->unkC8.z); + arg0->rot.y = fn_1_122F4(temp_f30, arg0->rot.y, 5.0f); + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (var_r24 & PAD_BUTTON_A) { + temp_r31->unk16 = 4; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + temp_r27->unk_88 = 0.5f; + temp_r31->unkD4 = sp110; + temp_r31->unk18 = 7; + temp_r31->unk68 = 0; + } + break; + case 7: + temp_r31->unk68++; + if (temp_r31->unk68 > 90.0f) { + temp_r31->unk68 = 90; + } + temp_f29 = 0.011111111f * temp_r31->unk68; + sp110.x = 0.0125f * var_r29 * 300.0f; + sp110.y = -900.0f; + sp110.z = -900.0f; + temp_f30 = atan2d(sp110.x - temp_r31->unkC8.x, sp110.z - temp_r31->unkC8.z); + arg0->rot.y = fn_1_122F4(temp_f30, arg0->rot.y, 5.0f); + temp_r31->unkD4 = sp110; + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (!(var_r25 & PAD_BUTTON_A)) { + var_f25 = 15.000001f + 30.0f * temp_f29; + temp_r31->unk60 = var_f25; + temp_r31->unk16 = 5; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + temp_r27->unk_88 = 0.5f + 1.5f * temp_f29; + temp_r31->unk18 = 8; + temp_r31->unk68 = 0; + } + break; + case 8: + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (CharModelMotionTimeGet(temp_r31->unk02) >= 10.0f && CharModelMotionShiftIDGet(temp_r31->unk02) == -1) { + temp_r26 = fn_1_AE64(temp_r31->unk5C); + if (temp_r26 == -1 || temp_r31->unk5C == -1) { + temp_r31->unk18 = 3; + } + VECSubtract(&temp_r31->unkD4, &temp_r31->unkC8, &spF8); + VECNormalize(&spF8, &spF8); + temp_f27 = 15.0f; + spF8.x *= temp_r31->unk60 * cosd(temp_f27); + spF8.z *= temp_r31->unk60 * cosd(temp_f27); + spF8.y = temp_r31->unk60 * sind(temp_f27); + fn_1_AC80(temp_r31->unk5C, spF8); + temp_r31->unk5C = -1; + HuAudFXPlay(0x61F); + sp104 = temp_r31->unkC8; + sp104.y += 75.0f; + spF8.x = 0.0f; + spF8.y = 1.0f; + spF8.z = 1.0f; + sp104.y = 0.0f; + fn_1_DC24(sp104, spF8, 50.0f, -0.5f, 1.0f, lbl_1_data_5F8); + temp_f29 = (temp_r31->unk60 - 15.000001f) / 30.0f; + if (temp_f29 > 0.66f) { + HuAudFXPlay(0x61B); + } + else if (temp_f29 > 0.33f) { + HuAudFXPlay(0x61C); + } + else { + HuAudFXPlay(0x61D); + } + temp_r31->unk18 = 9; + temp_r31->unk68 = 0; + } + break; + case 9: + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 10; + temp_r31->unk68 = 0; + break; + } + if (++temp_r31->unk68 >= 12.0f) { + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk18 = 3; + temp_r31->unk68 = 0; + } + break; + case 10: + arg0->rot.y = fn_1_122F4(0.0f, arg0->rot.y, 10.0f); + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 0) { + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + break; + case 11: + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 6) { + temp_r31->unk16 = 6; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + } + break; + case 12: + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 7) { + temp_r31->unk16 = 7; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + } + break; + } +} + +GXColor lbl_1_data_630 = { 0xFF, 0xFF, 0xFF, 0x14 }; + +void fn_1_5D18(omObjData *arg0) +{ + Vec sp60; + Vec sp54; + Vec sp48; + float var_f30; + float var_f31; + float var_f29; + StructBssBCData *temp_r31; + ModelData *temp_r27; + s16 var_r26; + s16 var_r25; + s16 var_r28; + s16 var_r24; + s16 i; + + temp_r31 = arg0->data; + temp_r27 = &Hu3DData[arg0->model[0]]; + temp_r31->unk0E = HuPadBtn[temp_r31->unk04]; + temp_r31->unk10 = HuPadBtnDown[temp_r31->unk04]; + temp_r31->unk12 = HuPadStkX[temp_r31->unk04]; + temp_r31->unk14 = HuPadStkY[temp_r31->unk04]; + if (fn_1_F00() == 6) { + if (temp_r31->unk06 != 0) { + temp_r31->unk0E &= ~PAD_BUTTON_A; + temp_r31->unk10 &= ~PAD_BUTTON_A; + temp_r31->unk12 = 0; + temp_r31->unk14 = 0; + fn_1_8CB4(arg0); + } + var_r28 = temp_r31->unk12; + var_r24 = temp_r31->unk14; + } + if (fabs(var_r28) < 8.0) { + var_r28 = 0; + } + if (fabs(var_r28) > 80.0) { + var_r28 = 80; + } + if (fabs(var_r24) < 8.0) { + var_r24 = 0; + } + if (fabs(var_r24) > 80.0) { + var_r24 = 80; + } + switch (temp_r31->unk18) { + case 0: + if (fn_1_F00() >= 6) { + temp_r31->unk18 = 1; + } + break; + case 1: + if (fabs(var_r28) > 8.0) { + var_f30 = 0.125f * var_r28; + } + else { + var_f30 = 0.0f; + } + temp_r31->unk1C[temp_r31->unk58] = var_f30; + if (++temp_r31->unk58 >= 15) { + temp_r31->unk58 = 0; + } + for (i = 0, var_f30 = 0.0f; i < 15; i++) { + var_f30 += temp_r31->unk1C[i]; + } + var_f30 *= 0.06666667f; + if (var_f30 > 25.0f) { + var_f30 = 25.0f; + } + else if (var_f30 < -25.0f) { + var_f30 = -25.0f; + } + if (0.0f == var_f30) { + var_r25 = 0; + } + else if (fabs(var_f30) < 10.0) { + var_r25 = 1; + } + else { + var_r25 = 2; + } + if (temp_r31->unk16 != var_r25 && CharModelMotionShiftIDGet(temp_r31->unk02) == -1) { + temp_r31->unk16 = var_r25; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + if (temp_r31->unk16 == 1 && CharModelMotionShiftIDGet(temp_r31->unk02) == -1) { + var_f31 = fabs(0.1f * var_f30); + if (var_f31 < 0.25f) { + var_f31 = 0.25f; + } + CharModelMotionSpeedSet(temp_r31->unk02, var_f31); + } + if (var_r28 == 0.0f) { + var_f29 = 0.0f; + } + else if (var_r28 < 0.0f) { + var_f29 = -90.0f; + } + else { + var_f29 = 90.0f; + } + if (arg0->rot.y < var_f29 && (arg0->rot.y += 20.0f) > var_f29) { + arg0->rot.y = var_f29; + } + if (arg0->rot.y > var_f29 && (arg0->rot.y -= 20.0f) < var_f29) { + arg0->rot.y = var_f29; + } + arg0->trans.x += var_f30; + arg0->trans.y = 0.0f; + arg0->trans.z = temp_r31->unkB8; + if (arg0->trans.x < -225.0f) { + arg0->trans.x = -225.0f; + } + if (arg0->trans.x > 225.0f) { + arg0->trans.x = 225.0f; + } + if (fn_1_F00() >= 7) { + temp_r31->unk18 = 9; + temp_r31->unk68 = 0; + } + else if (temp_r31->unk10 & PAD_BUTTON_A) { + if (var_r28 > 0) { + temp_r27->unk_0C = -1; + temp_r31->unk16 = 3; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + CharModelMotionSpeedSet(temp_r31->unk02, 1.0f); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + temp_r31->unk7C = 6.5f; + temp_r31->unk68 = 0; + arg0->rot.y = 90.0f; + i = 99; + if ((var_r26 = fn_1_B304(lbl_1_bss_40)) != 0) { + for (i = 0; i < var_r26; i++) { + if (lbl_1_bss_40[0]->unk1C < lbl_1_bss_40[0]->unk14 || lbl_1_bss_40[0]->unk1C - lbl_1_bss_40[0]->unk14 > 6.0f) { + continue; + } + if (lbl_1_bss_40[0]->unk1C < 36.0f) { + var_f31 = lbl_1_bss_40[0]->unk68.z - arg0->trans.z; + } + else { + var_f31 = lbl_1_bss_40[0]->unk38.z - arg0->trans.z; + } + if (var_f31 < -100.0f) { + continue; + } + var_f31 = fabs(var_f31); + if (var_f31 >= 300.0f) { + temp_r31->unk8C = 13.5f; + } + else if (var_f31 <= 100.0f) { + temp_r31->unk8C = 6.5f; + } + else { + temp_r31->unk8C = 10.0f; + } + } + } + if (i >= var_r26) { + temp_r31->unk8C = 10.0f; + } + temp_r31->unk18 = 2; + } + else if (var_r28 < 0) { + temp_r27->unk_0C = -1; + temp_r31->unk16 = 5; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + CharModelMotionSpeedSet(temp_r31->unk02, 1.0f); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + temp_r31->unk7C = 6.5f; + temp_r31->unk68 = 0; + arg0->rot.y = -90.0f; + i = 99; + if ((var_r26 = fn_1_B304(lbl_1_bss_40)) != 0) { + for (i = 0; i < var_r26; i++) { + if (lbl_1_bss_40[0]->unk1C < lbl_1_bss_40[0]->unk14 || lbl_1_bss_40[0]->unk1C - lbl_1_bss_40[0]->unk14 > 6.0f) { + continue; + } + if (lbl_1_bss_40[0]->unk1C < 36.0f) { + var_f31 = lbl_1_bss_40[0]->unk68.z - arg0->trans.z; + } + else { + var_f31 = lbl_1_bss_40[0]->unk38.z - arg0->trans.z; + } + if (var_f31 > 100.0f) { + continue; + } + var_f31 = fabs(var_f31); + if (var_f31 >= 300.0f) { + temp_r31->unk8C = 13.5f; + } + else if (var_f31 <= 100.0f) { + temp_r31->unk8C = 6.5f; + } + else { + temp_r31->unk8C = 10.0f; + } + } + } + if (i >= var_r26) { + temp_r31->unk8C = 10.0f; + } + temp_r31->unk18 = 4; + } + else { + temp_r27->unk_0C = -1; + temp_r31->unk16 = 7; + CharModelMotionSet(temp_r31->unk02, arg0->motion[temp_r31->unk16]); + CharModelMotionSpeedSet(temp_r31->unk02, 1.0f); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + temp_r31->unk7C = 10.5f; + temp_r31->unk68 = 0; + arg0->rot.y = 0.0f; + temp_r31->unk18 = 7; + } + } + break; + case 2: + arg0->trans.x += temp_r31->unk8C; + if (arg0->trans.x > 225.0f) { + arg0->trans.x = 225.0f; + } + arg0->trans.y += temp_r31->unk7C; + temp_r31->unk7C -= 0.49f; + temp_r31->unk68++; + if (temp_r31->unk68 == temp_r31->unk80 - 12.0f) { + temp_r31->unk16 = 4; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + } + if (arg0->trans.y <= 0.0f) { + for (i = 0; i < 6; i++) { + sp48.x = sind(-90.0f + 30.0f * i); + sp48.z = cosd(-90.0f + 30.0f * i); + sp48.y = 0.0f; + sp54.x = 100.0f * sp48.x * 0.01f; + sp54.z = 100.0f * sp48.z * 0.01f; + sp54.y = 1.0f; + sp60.x = arg0->trans.x + 100.0f * sp48.x * 0.2; + sp60.z = arg0->trans.z + 100.0f * sp48.z * 0.2; + sp60.y = 0.0f; + fn_1_DD70(sp60, sp54, 50.0f, -0.25f, 20.0f, 0.5f, lbl_1_data_630); + } + arg0->trans.y = 0.0f; + temp_r31->unk18 = 3; + } + break; + case 3: + if (CharModelMotionEndCheck(temp_r31->unk02) && CharModelMotionShiftIDGet(temp_r31->unk02) == -1) { + memset(&temp_r31->unk1C, 0, sizeof(temp_r31->unk1C)); + temp_r31->unk58 = 0; + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk18 = 6; + temp_r31->unkAC = 0; + } + break; + case 4: + arg0->trans.x -= temp_r31->unk8C; + if (arg0->trans.x < -225.0f) { + arg0->trans.x = -225.0f; + } + arg0->trans.y += temp_r31->unk7C; + temp_r31->unk7C -= 0.49f; + temp_r31->unk68++; + if (temp_r31->unk68 == temp_r31->unk80 - 12.0f) { + temp_r31->unk16 = 6; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + } + if (arg0->trans.y <= 0.0f) { + for (i = 0; i < 6; i++) { + sp48.x = sind(-90.0f + 30.0f * i); + sp48.z = cosd(-90.0f + 30.0f * i); + sp48.y = 0.0f; + sp54.x = 100.0f * sp48.x * 0.01f; + sp54.z = 100.0f * sp48.z * 0.01f; + sp54.y = 1.0f; + sp60.x = arg0->trans.x + 100.0f * sp48.x * 0.2; + sp60.z = arg0->trans.z + 100.0f * sp48.z * 0.2; + sp60.y = 0.0f; + fn_1_DD70(sp60, sp54, 50.0f, -0.25f, 20.0f, 0.5f, lbl_1_data_630); + } + arg0->trans.y = 0.0f; + temp_r31->unk18 = 5; + } + break; + case 5: + if (CharModelMotionEndCheck(temp_r31->unk02) && CharModelMotionShiftIDGet(temp_r31->unk02) == -1) { + memset(&temp_r31->unk1C, 0, sizeof(temp_r31->unk1C)); + temp_r31->unk58 = 0; + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk18 = 6; + temp_r31->unkAC = 0; + } + break; + case 6: + if (++temp_r31->unkAC > 0.0f) { + temp_r31->unkAC = 0; + temp_r31->unk18 = 1; + } + break; + case 7: + arg0->trans.y += temp_r31->unk7C; + temp_r31->unk7C -= 0.65333337f; + temp_r31->unk68++; + if (arg0->trans.y <= 0.0f) { + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + arg0->trans.y = 0.0f; + temp_r31->unk68 = 0; + temp_r31->unk18 = 8; + } + break; + case 8: + if (++temp_r31->unk68 > 12.0f) { + memset(&temp_r31->unk1C, 0, sizeof(temp_r31->unk1C)); + temp_r31->unk58 = 0; + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk18 = 1; + } + break; + case 9: + arg0->rot.y = fn_1_122F4(0.0f, arg0->rot.y, 10.0f); + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 1) { + temp_r31->unk16 = 1; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 == 1) { + arg0->trans.z += 5.0f; + } + if (arg0->trans.z > lbl_1_data_150->z + 100.0f) { + temp_r31->unk18 = 10; + } + break; + case 10: + arg0->rot.y = fn_1_122F4(0.0f, arg0->rot.y, 10.0f); + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 0) { + temp_r31->unk16 = 0; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + break; + case 11: + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 9) { + temp_r31->unk16 = 9; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + } + break; + case 12: + if (CharModelMotionShiftIDGet(temp_r31->unk02) == -1 && temp_r31->unk16 != 10) { + temp_r31->unk16 = 10; + CharModelMotionShiftSet(temp_r31->unk02, arg0->motion[temp_r31->unk16], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_SHIFT_LOOP); + } + break; + } + lbl_1_bss_B8 = arg0; + temp_r31->unkEC = arg0->trans.x - temp_r31->unkE0; + temp_r31->unkF0 = arg0->trans.y - temp_r31->unkE4; + temp_r31->unkF4 = arg0->trans.z - temp_r31->unkE8; + temp_r31->unkE0 = arg0->trans.x; + temp_r31->unkE4 = arg0->trans.y; + temp_r31->unkE8 = arg0->trans.z; +} + +void fn_1_77C4(omObjData *arg0) +{ + arg0->func = NULL; +} + +void fn_1_77D0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) { + fn_1_77C4(lbl_1_bss_BC[i]); + } +} + +s32 fn_1_781C(void) +{ + omObjData *temp_r29; + StructBssBCData *temp_r31; + s32 i; + + for (i = 0; i < 4; i++) { + temp_r29 = lbl_1_bss_BC[i]; + temp_r31 = temp_r29->data; + if (temp_r31->unk0A == 0) { + if (temp_r31->unk18 != 0 || fabs(fn_1_121DC(temp_r29->rot.y, 0.0f)) > 1.0) { + break; + } + } + else { + if (temp_r31->unk18 < 5) { + break; + } + } + } + if (i >= 4) { + return 1; + } + return 0; +} + +s32 fn_1_791C(void) +{ + omObjData *temp_r30; + StructBssBCData *temp_r31; + s32 i; + + for (i = 0; i < 4; i++) { + temp_r30 = lbl_1_bss_BC[i]; + temp_r31 = temp_r30->data; + if (temp_r31->unk0A == 0) { + if (temp_r31->unk18 != 10 || fabs(fn_1_121DC(temp_r30->rot.y, 0.0f)) > 1.0 || CharModelMotionShiftIDGet(temp_r31->unk02) != -1) { + break; + } + } + else { + if (temp_r31->unk18 != 10 || fabs(fn_1_121DC(temp_r30->rot.y, 0.0f)) > 1.0 || CharModelMotionShiftIDGet(temp_r31->unk02) != -1) { + break; + } + } + } + if (i >= 4) { + return 1; + } + return 0; +} + +void fn_1_7AA8(s32 arg0) +{ + omObjData *var_r29; + StructBssBCData *temp_r31; + s32 i; + + for (i = 0; i < 4; i++) { + var_r29 = lbl_1_bss_BC[i]; + temp_r31 = var_r29->data; + if (temp_r31->unk0A == 0) { + if (temp_r31->unk0A == arg0) { + temp_r31->unk18 = 11; + } + else { + temp_r31->unk18 = 12; + } + } + else { + if (temp_r31->unk0A == arg0) { + temp_r31->unk18 = 11; + } + else { + temp_r31->unk18 = 12; + } + } + } +} + +s32 fn_1_7B48(Vec *arg0, Vec *arg1, Vec *arg2, float arg3) +{ + Vec spA8[4]; + Vec sp78[4]; + Vec sp48[4]; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float var_f31; + float var_f28; + float var_f30; + float var_f27; + float var_f26; + omObjData *temp_r31; + StructBssBCData *temp_r28; + ModelData *sp8; + + if (lbl_1_bss_B8 == NULL) { + return 0; + } + temp_r31 = lbl_1_bss_B8; + temp_r28 = temp_r31->data; + sp8 = &Hu3DData[temp_r31->model[0]]; + *arg2 = *arg1; + switch (temp_r28->unk18) { + case 2: + case 4: + var_f31 = 150.0f; + var_f28 = 130.0f; + var_f30 = 60.000004f; + var_f27 = 130.0f; + break; + default: + var_f31 = 100.0f; + var_f28 = 130.0f; + var_f30 = 60.000004f; + var_f27 = 0.0f; + break; + } + sp78[0].x = temp_r31->trans.x - 0.5f * var_f31; + sp78[0].y = temp_r31->trans.y + var_f28; + sp78[0].z = temp_r31->trans.z + 0.5f * var_f30; + sp78[1].x = temp_r31->trans.x + 0.5f * var_f31; + sp78[1].y = temp_r31->trans.y + var_f28; + sp78[1].z = temp_r31->trans.z + 0.5f * var_f30; + sp78[2].x = temp_r31->trans.x + 0.5f * var_f31; + sp78[2].y = temp_r31->trans.y - var_f27; + sp78[2].z = temp_r31->trans.z + 0.5f * var_f30; + sp78[3].x = temp_r31->trans.x - 0.5f * var_f31; + sp78[3].y = temp_r31->trans.y - var_f27; + sp78[3].z = temp_r31->trans.z + 0.5f * var_f30; + spA8[0].x = temp_r31->trans.x + 0.5f * var_f31; + spA8[0].y = temp_r31->trans.y + var_f28; + spA8[0].z = temp_r31->trans.z - 0.5f * var_f30; + spA8[1].x = temp_r31->trans.x - 0.5f * var_f31; + spA8[1].y = temp_r31->trans.y + var_f28; + spA8[1].z = temp_r31->trans.z - 0.5f * var_f30; + spA8[2].x = temp_r31->trans.x - 0.5f * var_f31; + spA8[2].y = temp_r31->trans.y - var_f27; + spA8[2].z = temp_r31->trans.z - 0.5f * var_f30; + spA8[3].x = temp_r31->trans.x + 0.5f * var_f31; + spA8[3].y = temp_r31->trans.y - var_f27; + spA8[3].z = temp_r31->trans.z - 0.5f * var_f30; + VECNormalize(arg1, &spC); + VECScale(&spC, &spC, arg3); + VECAdd(arg0, arg1, &sp30); + VECAdd(arg0, arg1, &sp24); + VECAdd(arg0, &spC, &sp3C); + VECAdd(&sp30, &spC, &sp30); + sp48[0] = sp78[0]; + sp48[1] = sp78[1]; + sp48[2] = sp78[2]; + sp48[3] = sp78[3]; + if (fn_1_137C4(sp48, arg0, arg1, &sp18, arg3, 4) != 0) { + arg2->x *= 0.5f; + arg2->z *= -0.5f; + fn_1_82C8(15, 1, 0); + return 1; + } + if (sp24.x >= sp78[0].x - arg3 && sp24.x <= sp78[2].x + arg3 && sp24.y <= sp78[0].y + arg3 && sp24.y >= sp78[2].y - arg3 + && sp24.z <= sp78[0].z + arg3 && sp24.z >= spA8[3].z - arg3) { + if (temp_r28->unkEC > 0.0f && sp24.x > temp_r31->trans.x) { + spC = *arg1; + spC.y = 0.0f; + var_f26 = VECMag(&spC); + arg2->x = 0.5f * var_f26 + temp_r28->unkEC; + arg2->z = 0.0f; + } + else if (temp_r28->unkEC < 0.0f && sp24.x < temp_r31->trans.x) { + spC = *arg1; + spC.y = 0.0f; + var_f26 = VECMag(&spC); + arg2->x = -(0.5f * var_f26) + temp_r28->unkEC; + arg2->z = 0.0f; + } + else { + if (fabs(arg1->x) > fabs(arg1->z)) { + arg2->x *= -1.0f; + } + else { + arg2->z *= -1.0f; + } + arg2->x *= 0.5f; + arg2->z *= 0.5f; + } + fn_1_82C8(15, 1, 0); + return 1; + } + return 0; +} + +void fn_1_82C8(s32 arg0, s32 arg1, s32 arg2) +{ + omObjData *var_r31; + StructBssBCData *var_r30; + + if (lbl_1_bss_B8 != NULL) { + var_r31 = lbl_1_bss_B8; + var_r30 = var_r31->data; + omVibrate(var_r30->unk00, 12, 6, 6); + HuAudFXPlay(0x61A); + } +} + +s32 lbl_1_data_668[] = { 3, 4, 5, 6 }; +float lbl_1_data_678[] = { 0.6f, 0.65f, 0.7f, 0.7f }; + +s32 lbl_1_data_688[][2] = { { 30, 60 }, { 24, 48 }, { 12, 24 }, { 0, 12 } }; + +s32 lbl_1_data_6A8[][2] = { { 36, 84 }, { 36, 78 }, { 33, 72 }, { 33, 66 } }; + +void fn_1_8338(omObjData *arg0) +{ + float var_f31; + float temp_f30; + StructBssBCData *temp_r31; + ModelData *sp8; + s32 var_r29; + + temp_r31 = arg0->data; + sp8 = &Hu3DData[arg0->model[0]]; + var_r29 = temp_r31->unk18; + if (temp_r31->unkA0 == 0) { + temp_r31->unkA0 = 1; + temp_r31->unk70 = 0; + var_r29 = 5; + } + switch (var_r29) { + case 5: + if (temp_r31->unk70 != 0) { + break; + } + if (temp_r31->unk9C > lbl_1_bss_108 && lbl_1_data_668[temp_r31->unk08] > temp_r31->unk98 && lbl_1_bss_B8 != NULL) { + temp_r31->unkA4 = 1; + temp_r31->unkA8 = (1.0f / 127) * frand7(); + if (lbl_1_bss_B8->trans.x >= 270.0f) { + temp_r31->unk88 = -(0.4f + 0.3f * temp_r31->unkA8); + } + else if (lbl_1_bss_B8->trans.x <= -270.0f) { + temp_r31->unk88 = 0.4f + 0.3f * temp_r31->unkA8; + } + else if (frand() & 1) { + temp_r31->unk88 = -(0.3f + 0.1f * temp_r31->unkA8); + } + else { + temp_r31->unk88 = 0.3f + 0.1f * temp_r31->unkA8; + } + var_f31 = lbl_1_data_6A8[3][0]; + temp_f30 = lbl_1_data_6A8[3][1]; + temp_r31->unk70 = var_f31 + (1.0f / 127) * frand7() * (temp_f30 - var_f31); + var_f31 = lbl_1_data_688[temp_r31->unk08][0]; + temp_f30 = lbl_1_data_688[temp_r31->unk08][1]; + temp_r31->unk74 = var_f31 + (1.0f / 127) * frand7() * (temp_f30 - var_f31); + temp_r31->unk98++; + } + else { + if (frand() & 1) { + temp_r31->unk88 = (1.0f / 127) * frand7() * lbl_1_data_678[temp_r31->unk08]; + } + else { + temp_r31->unk88 = -((1.0f / 127) * frand7()) * lbl_1_data_678[temp_r31->unk08]; + } + var_f31 = lbl_1_data_6A8[temp_r31->unk08][0]; + temp_f30 = lbl_1_data_6A8[temp_r31->unk08][1]; + temp_r31->unk70 = var_f31 + (1.0f / 127) * frand7() * (temp_f30 - var_f31); + var_f31 = lbl_1_data_688[temp_r31->unk08][0]; + temp_f30 = lbl_1_data_688[temp_r31->unk08][1]; + temp_r31->unk74 = var_f31 + (1.0f / 127) * frand7() * (temp_f30 - var_f31); + } + temp_r31->unk6C = 0; + break; + case 6: + if (++temp_r31->unk6C >= temp_r31->unk74) { + temp_r31->unk12 = 80.0f * temp_r31->unk88; + temp_r31->unk10 |= PAD_BUTTON_A; + temp_r31->unk0E |= PAD_BUTTON_A; + temp_r31->unk6C = 0; + return; + } + var_f31 = sind(180.0f * ((temp_r31->unk74 - temp_r31->unk6C) / 60.0f)); + if (temp_r31->unk74 & 1) { + var_f31 *= -1.0f; + } + temp_r31->unk12 = 80.0f * (temp_r31->unk88 + var_f31); + return; + case 7: + if (temp_r31->unkA4 != 0) { + if (lbl_1_bss_B8->trans.x >= 148.5f) { + temp_r31->unk88 = -(0.4f + 0.3f * temp_r31->unkA8); + } + else if (lbl_1_bss_B8->trans.x <= -148.5f) { + temp_r31->unk88 = 0.4f + 0.3f * temp_r31->unkA8; + } + else if (lbl_1_bss_B8->trans.x > 0.0f) { + temp_r31->unk88 = -(0.5f + 0.2f * temp_r31->unkA8); + } + else { + temp_r31->unk88 = 0.5f + 0.2f * temp_r31->unkA8; + } + } + temp_r31->unk12 = 80.0f * temp_r31->unk88; + if (++temp_r31->unk6C > temp_r31->unk70) { + temp_r31->unk88 = 0.0f; + temp_r31->unk6C = 0; + temp_r31->unk70 = 0; + temp_r31->unk74 = 0; + temp_r31->unkA4 = 0; + } + else { + temp_r31->unk0E |= PAD_BUTTON_A; + } + break; + default: + temp_r31->unk6C = 0; + break; + } +} + +s32 lbl_1_data_6C8[] = { 60, 45, 30, 15 }; + +float lbl_1_data_6D8[][2] = { { 200.0f, 150.0f }, { 125.0f, 100.0f }, { 0.0f, 0.0f }, { 0.0f, 0.0f } }; + +s32 lbl_1_data_6F8[][2] = { { 48, 150 }, { 39, 114 }, { 33, 90 }, { 21, 42 } }; + +s32 lbl_1_data_718[][2] = { { 27, 39 }, { 15, 27 }, { 9, 15 }, { 0, 3 } }; + +void fn_1_8CB4(omObjData *arg0) +{ + Vec spC; + float temp_f29; + float temp_f28; + float var_f30; + float var_f31; + float var_f26; // ! - uninitialized + float temp_f27; + StructBssBCData *temp_r31; + ModelData *sp8; + StructBssA8Data *temp_r30; + s32 var_r28; + s32 var_r24; + s32 i, j; + s32 var_r25; + + var_r25 = 0; + temp_r31 = arg0->data; + sp8 = &Hu3DData[arg0->model[0]]; + if (temp_r31->unk64 != -1) { + temp_r30 = fn_1_B13C(temp_r31->unk64); + if (temp_r30 != NULL) { + if (temp_r30->unk0C != 3 || temp_r30->unk08 != 0 || temp_r30->unk38.z <= -900.0f) { + var_r25 = 1; + } + } + else { + var_r25 = 1; + } + } + else { + var_r25 = 1; + } + if (var_r25 != 0) { + temp_r31->unk64 = -1; + temp_r31->unk6C = 0; + temp_f29 = lbl_1_data_6F8[temp_r31->unk08][0]; + temp_f28 = lbl_1_data_6F8[temp_r31->unk08][1]; + temp_r31->unk90 = temp_f29 + (1.0f / 127) * frand7() * (temp_f28 - temp_f29); + temp_f29 = lbl_1_data_718[temp_r31->unk08][0]; + temp_f28 = lbl_1_data_718[temp_r31->unk08][1]; + temp_r31->unk94 = temp_f29 + (1.0f / 127) * frand7() * (temp_f28 - temp_f29); + temp_r31->unkD4.x = lbl_1_data_6D8[temp_r31->unk08][0] * (0.5f - (1.0f / 127) * frand7()); + temp_r31->unkD4.y = lbl_1_data_6D8[temp_r31->unk08][1] * (0.5f - (1.0f / 127) * frand7()); + if (lbl_1_bss_104 >= 5) { + temp_r31->unkD4.x *= 1.5f; + } + var_r24 = fn_1_B304(lbl_1_bss_4); + if (var_r24 != 0) { + for (i = 0; i < var_r24; i++) { + temp_r30 = lbl_1_bss_4[i]; + if (temp_r30 == NULL || temp_r30->unk06 == 0 || 0.0f == temp_r30->unk50.z || fabs(temp_r30->unk38.x) >= 325.0 + || temp_r30->unk14 < temp_r31->unk94) { + continue; + } + var_r28 = (var_f26 - temp_r30->unk38.z) / temp_r30->unk50.z; + if (var_r28 > 300.0f) { + continue; + } + spC = temp_r30->unk50; + var_f30 = temp_r30->unk38.x; + var_f31 = temp_r30->unk38.y; + for (j = 0; j < var_r28; j++) { + var_f30 += spC.x; + var_f31 += spC.y; + spC.x *= temp_r30->unk8C; + spC.z *= temp_r30->unk8C; + spC.y -= 0.32666668f; + if (var_f31 < 20.0) { + var_f31 = 0.32666668f; + spC.y *= temp_r30->unk90; + } + } + var_f30 += temp_r31->unkD4.x; + var_f31 += temp_r31->unkD4.y; + if (temp_r31->unk08 <= 2 || !(fabs(var_f30) >= 225.0 || var_f31 >= 200.0f)) { + temp_r31->unk64 = temp_r30->unk02; + break; + } + } + } + } + if (temp_r31->unk64 != -1 && (temp_r30 = fn_1_B13C(temp_r31->unk64)) != NULL) { + if (temp_r30->unk38.z > 60.000004f + arg0->trans.z) { + var_f26 = 60.000004f + arg0->trans.z; + var_r28 = (var_f26 - temp_r30->unk38.z) / temp_r30->unk50.z; + if (var_r28 > 300.0f) { + temp_r31->unk64 = -1; + return; + } + spC = temp_r30->unk50; + var_f30 = temp_r30->unk38.x; + var_f31 = temp_r30->unk38.y; + for (j = 0; j < var_r28; j++) { + var_f30 += spC.x; + var_f31 += spC.y; + spC.x *= temp_r30->unk8C; + spC.z *= temp_r30->unk8C; + spC.y -= 0.32666668f; + if (var_f31 < 20.0) { + var_f31 = 0.32666668f; + spC.y *= temp_r30->unk90; + } + } + var_r28 += temp_r31->unk90; + var_f30 += temp_r31->unkD4.x; + var_f31 += temp_r31->unkD4.y; + } + else { + var_r28 = 0; + var_f30 = temp_r30->unk38.x; + var_f31 = temp_r30->unk38.y; + } + if (arg0->trans.x - 25.0f > var_f30) { + temp_r31->unk12 = -64; + } + if (arg0->trans.x + 25.0f < var_f30) { + temp_r31->unk12 = 64; + } + temp_f27 = fabs(var_f30 - arg0->trans.x); + if (var_r28 < 10 && temp_f27 > 120.00001f) { + temp_r31->unk10 |= 0x100; + } + else if (var_r28 < 5 && temp_f27 < 25.0f && var_f31 > 100.0f) { + temp_r31->unk10 |= 0x100; + } + else if (var_r28 > 20 && temp_f27 < 50.0) { + temp_r31->unk10 /= 2; + } + if (++temp_r31->unk6C > lbl_1_data_6C8[temp_r31->unk08]) { + temp_r31->unk64 = -1; + } + } +} + +void fn_1_95C4(void) +{ + lbl_1_bss_A8 = omAddObjEx(lbl_1_bss_120, 0x50, 0, 0, -1, fn_1_9614); +} + +s32 lbl_1_data_738[] + = { DATA_MAKE_NUM(DATADIR_M423, 4), DATA_MAKE_NUM(DATADIR_M423, 5), DATA_MAKE_NUM(DATADIR_M423, 6), DATA_MAKE_NUM(DATADIR_M423, 7), + DATA_MAKE_NUM(DATADIR_M423, 8), DATA_MAKE_NUM(DATADIR_M423, 9), DATA_MAKE_NUM(DATADIR_M423, 10), DATA_MAKE_NUM(DATADIR_M423, 11) }; + +void fn_1_9614(omObjData *arg0) +{ + StructBssA8Data *var_r28; + StructBssA8Data *var_r31; + ModelData *var_r27; + s32 i; + + if (lbl_1_bss_EC[0] == -1) { + return; + } + var_r31 = var_r28 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 15 * sizeof(*var_r31), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 15 * sizeof(*var_r31)); + for (i = 0; i < 15; i++, var_r31++) { + var_r31->unk04 = i % 3; + var_r31->unk02 = i; + var_r31->unk06 = 0; + var_r31->unk0A = 0; + var_r31->unk08 = 0; + var_r31->unk0C = 0; + var_r31->unk0E = 0; + var_r31->unk10 = 0; + var_r31->unk12 = 0; + var_r31->unk14 = 0; + var_r31->unk18 = 0; + var_r31->unk1C = 0; + var_r31->unk38.x = var_r31->unk38.y = var_r31->unk38.z = 0.0f; + var_r31->unk44 = var_r31->unk48 = var_r31->unk4C = 0.0f; + var_r31->unk50.x = var_r31->unk50.y = var_r31->unk50.z = 0.0f; + var_r31->unk74 = var_r31->unk38; + var_r31->unk80 = var_r31->unk50; + var_r31->unk8C = 0.995f; + var_r31->unk90 = -0.5f; + var_r31->unk68.x = var_r31->unk68.y = var_r31->unk68.z = 0.0f; + if (i < 3) { + var_r31->unk00 = Hu3DModelCreateFile(lbl_1_data_738[lbl_1_bss_EC[var_r31->unk04]]); + } + else { + var_r31->unk00 = Hu3DModelLink(var_r28[var_r31->unk04].unk00); + } + Hu3DModelScaleSet(var_r31->unk00, 0.8f, 0.8f, 0.8f); + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(var_r31->unk00, 5); + Hu3DModelShadowSet(var_r31->unk00); + var_r27 = &Hu3DData[var_r31->unk00]; + MTXIdentity(var_r27->unk_F0); + } + fn_1_B430(); + arg0->func = fn_1_98A0; +} + +void fn_1_98A0(omObjData *arg0) +{ + Mtx spC4; + Vec spB8; + Vec spAC; + Vec spA0; + Vec sp94; + Vec sp88; + float temp_f30; + float var_f25; + float var_f31; + float var_f22; + StructBssA8Data *var_r31; + StructBssA8Data *var_r30; + ModelData *temp_r27; + s32 i, j; + s32 var_r25; + s32 var_r23; + s32 var_r28; + + var_r31 = arg0->data; + for (i = 0; i < 15; i++, var_r31++) { + if (var_r31->unk06 == 0) { + continue; + } + temp_r27 = &Hu3DData[var_r31->unk00]; + var_r25 = 0; + switch (var_r31->unk0C) { + case 0: + break; + case 1: + temp_f30 = var_r31->unk14 / 60.0f; + var_r31->unk14++; + if (temp_f30 > 1.0f) { + var_f31 = 1.0f; + } + else { + var_f31 = temp_f30; + } + var_r31->unk38.x = var_r31->unk20.x + var_f31 * (var_r31->unk2C.x - var_r31->unk20.x); + var_r31->unk38.z = var_r31->unk20.z + var_f31 * (var_r31->unk2C.z - var_r31->unk20.z); + if (temp_f30 < 0.6f) { + var_f31 = temp_f30 / 0.6f; + var_f25 = 100.0f; + } + else if (temp_f30 < 1.0f) { + var_f31 = (temp_f30 - 0.6f) / 0.4f; + var_f25 = 50.0f; + } + else { + var_f31 = (temp_f30 - 1.0f) / 0.25f; + var_f25 = 10.0f; + } + var_r31->unk38.y = 20.0 + var_f25 * sind(180.0f * var_f31); + if (var_r31->unk14 >= 75.0f) { + var_r31->unk0C = 2; + var_r31->unk14 = 0; + var_r31->unk38.y = 20.0f; + var_r31->unk50.y = 0.0f; + } + if (var_r31->unk14 < 73.2f) { + spAC.x = var_r31->unk50.z; + spAC.z = -var_r31->unk50.x; + spAC.y = 0.0f; + var_f31 = 0.05 * VECMag(&spAC); + if (var_f31 > 0.00001f) { + MTXRotAxisRad(spC4, &spAC, var_f31); + MTXConcat(spC4, temp_r27->unk_F0, temp_r27->unk_F0); + } + } + Hu3DModelPosSet(var_r31->unk00, var_r31->unk38.x, var_r31->unk38.y, var_r31->unk38.z); + Hu3DModelRotSet(var_r31->unk00, var_r31->unk44, var_r31->unk48, var_r31->unk4C); + break; + case 2: + Hu3DModelPosSet(var_r31->unk00, var_r31->unk38.x, var_r31->unk38.y, var_r31->unk38.z); + Hu3DModelRotSet(var_r31->unk00, var_r31->unk44, var_r31->unk48, var_r31->unk4C); + break; + case 3: + var_r31->unk74 = var_r31->unk38; + var_r31->unk80 = var_r31->unk50; + var_r23 = 0; + if (var_r28 = fn_1_C498(&var_r31->unk38, &var_r31->unk50, &spB8, &sp88, 20.0f, 3)) { + if (var_r28 & 0x8000) { + var_r25 = 1; + } + if (var_r28 & 0x2000) { } + if ((var_r28 & 0x4000) && var_r31->unk12 == 0 && var_r31->unk08 == 0) { + var_f31 = VECMagXZ(&var_r31->unk50); + sp94.x = 0.0f; + sp94.y = 0.0f; + sp94.z = (1.0f / 127) * frand7() * 360.0f; + fn_1_E334(spB8, sp94, 0.5f); + HuAudFXPlay(0x620); + var_r31->unk12 = 1; + } + var_r31->unk38 = spB8; + var_r31->unk50 = sp88; + var_r31->unk8C = 0.975f; + var_r31->unk90 = -0.5f; + } + else { + if (fabs(var_r31->unk38.x) > 1000.0) { + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + var_r31->unk0C = 0; + var_r31->unk06 = 0; + var_r31->unk14 = 0; + } + else { + var_r31->unk38.x += var_r31->unk50.x; + var_r31->unk38.y += var_r31->unk50.y; + var_r31->unk38.z += var_r31->unk50.z; + } + } + if (var_r31->unk08 == 0) { + for (j = 0, var_r30 = arg0->data; j < 15; j++, var_r30++) { + if (i == j || var_r30->unk06 == 0 || var_r30->unk08 != 0 || var_r30->unk0C != 3) { + continue; + } + VECSubtract(&var_r31->unk38, &var_r30->unk38, &spAC); + var_f31 = VECMag(&spAC); + if (var_f31 < 40.0) { + spA0 = var_r31->unk38; + if (var_f31 != 0.0f) { + temp_f30 = 40.0 - var_f31; + VECNormalize(&spAC, &spAC); + VECScale(&spAC, &spAC, temp_f30); + VECAdd(&var_r31->unk38, &spAC, &var_r31->unk38); + } + else { + var_r31->unk38.x += 40.0; + } + temp_f30 = VECMag(&var_r31->unk50); + var_f22 = VECMag(&var_r30->unk50); + var_f31 = 0.5f * (temp_f30 + var_f22); + if (VECMag(&var_r31->unk50) == 0.0f) { + var_r31->unk50.x = 1.0f; + } + VECNormalize(&var_r31->unk50, &var_r31->unk50); + VECSubtract(&var_r31->unk38, &var_r30->unk38, &spAC); + if (VECMag(&spAC) == 0.0f) { + spAC.x = 1.0f; + } + VECNormalize(&spAC, &spAC); + VECAdd(&var_r31->unk50, &spAC, &var_r31->unk50); + if (VECMag(&var_r31->unk50) == 0.0f) { + var_r31->unk50.x = 1.0f; + } + VECNormalize(&var_r31->unk50, &var_r31->unk50); + VECScale(&var_r31->unk50, &var_r31->unk50, var_f31); + if (VECMag(&var_r30->unk50) == 0.0f) { + var_r30->unk50.x = -1.0f; + } + VECNormalize(&var_r30->unk50, &var_r30->unk50); + VECSubtract(&var_r30->unk38, &var_r31->unk38, &spAC); + if (VECMag(&spAC) == 0.0f) { + spAC.x = 1.0f; + } + VECNormalize(&spAC, &spAC); + VECAdd(&var_r30->unk50, &spAC, &var_r30->unk50); + if (VECMag(&var_r30->unk50) == 0.0f) { + var_r30->unk50.x = -1.0f; + } + VECNormalize(&var_r30->unk50, &var_r30->unk50); + VECScale(&var_r30->unk50, &var_r30->unk50, var_f31); + if (var_r28 = fn_1_C498(&spA0, &spAC, &spB8, &sp88, 20.0f, 1)) { + if (var_r28 & 0x8000) { + var_r25 = 1; + } + var_r31->unk38 = spB8; + var_r31->unk50 = sp88; + } + } + } + } + if (var_r31->unk38.y < 20.0) { + var_r31->unk38.y = 20.0f; + var_r31->unk50.y *= var_r31->unk90; + var_r23 = 1; + if (var_r31->unk38.x >= -225.0f && var_r31->unk38.x <= 225.0f && var_r31->unk38.z >= -1100.0f && var_r31->unk38.z <= -900.0f) { + var_r25 = 1; + } + if (fabs(var_r31->unk50.y) < 0.05f) { + var_r31->unk50.y = 0.0f; + } + } + if (var_r31->unk08 == 0) { + VECSubtract(&var_r31->unk38, &var_r31->unk74, &spAC); + if (fn_1_7B48(&var_r31->unk38, &var_r31->unk50, &sp88, 20.0f) != 0) { + var_r31->unk50 = sp88; + var_r31->unk08 = 1; + var_r31->unk8C = 0.975f; + var_r31->unk90 = -0.5f; + } + } + if (var_r31->unk50.z > 0.0f) { + var_r31->unk08 = 1; + } + var_r31->unk50.y -= 0.32666668f; + if (var_r23 == 0) { + var_r31->unk50.x *= var_r31->unk8C; + var_r31->unk50.z *= var_r31->unk8C; + } + else { + var_r31->unk50.x *= 0.995f * var_r31->unk8C; + var_r31->unk50.z *= 0.995f * var_r31->unk8C; + } + if (var_r25 != 0 && var_r31->unk0A == 0 && var_r31->unk08 == 0) { + fn_1_AEE8(i); + } + if (var_r31->unk08 != 0) { + var_r31->unk18++; + if (var_r31->unk18 & 1) { + Hu3DModelAttrReset(var_r31->unk00, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + } + if (var_r31->unk18 >= 120.0f) { + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + var_r31->unk0C = 0; + var_r31->unk06 = 0; + var_r31->unk14 = 0; + var_r31->unk18 = 0; + } + } + temp_f30 = VECMagXZ(&var_r31->unk50); + if (fabs(temp_f30) < 0.1f && var_r31->unk38.y <= 20.0 && var_r31->unk08 == 0) { + var_r31->unk0C = 4; + var_r31->unk14 = 0; + var_r31->unk18 = 0; + } + if (fabs(var_r31->unk38.x) > 2000.0 || fabs(var_r31->unk38.y) > 2000.0 || fabs(var_r31->unk38.z) > 2000.0) { + var_r31->unk0C = 4; + var_r31->unk14 = 0; + var_r31->unk18 = 120; + } + var_r31->unk14++; + spAC.x = var_r31->unk50.z; + spAC.z = -var_r31->unk50.x; + spAC.y = 0.0f; + var_f31 = 0.05 * VECMag(&spAC); + if (var_f31 > 0.00001f) { + MTXRotAxisRad(spC4, &spAC, var_f31); + MTXConcat(spC4, temp_r27->unk_F0, temp_r27->unk_F0); + } + Hu3DModelPosSet(var_r31->unk00, var_r31->unk38.x, var_r31->unk38.y, var_r31->unk38.z); + break; + case 4: + var_r31->unk18++; + if (var_r31->unk18 & 1) { + Hu3DModelAttrReset(var_r31->unk00, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + } + if (var_r31->unk18 >= 120.0f) { + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + var_r31->unk0C = 0; + var_r31->unk06 = 0; + var_r31->unk14 = 0; + var_r31->unk18 = 0; + } + break; + } + } +} + +void fn_1_A9A0(omObjData *arg0) +{ + arg0->func = NULL; +} + +void fn_1_A9AC(void) +{ + fn_1_A9A0(lbl_1_bss_A8); +} + +s32 fn_1_A9D4(s32 arg0, Vec arg1, Vec arg2) +{ + StructBssA8Data *var_r31; + ModelData *temp_r26; + s32 var_r27; + s32 i; + + if (lbl_1_bss_A8 == NULL) { + return -1; + } + var_r31 = lbl_1_bss_A8->data; + for (i = 0, var_r27 = -1; i < 3; i++) { + if (arg0 == lbl_1_bss_EC[i]) { + var_r27 = i; + } + } + if (var_r27 == -1) { + return -1; + } + for (i = 0; i < 15; i++, var_r31++) { + if (var_r31->unk04 == var_r27 && var_r31->unk06 == 0) { + break; + } + } + if (i >= 15) { + return -1; + } + temp_r26 = &Hu3DData[var_r31->unk00]; + var_r31->unk06 = 1; + var_r31->unk0A = 0; + var_r31->unk08 = 0; + var_r31->unk10 = 0; + var_r31->unk12 = 0; + var_r31->unk0C = 1; + var_r31->unk14 = 0; + var_r31->unk18 = 0; + var_r31->unk20 = arg1; + var_r31->unk2C = arg2; + var_r31->unk38 = arg1; + var_r31->unk44 = var_r31->unk48 = var_r31->unk4C = 0.0f; + var_r31->unk50.x = 0.016666668f * (arg2.x - arg1.x); + var_r31->unk50.z = 0.016666668f * (arg2.z - arg1.z); + var_r31->unk50.y = 5.0f; + Hu3DModelPosSet(var_r31->unk00, var_r31->unk38.x, var_r31->unk38.y, var_r31->unk38.z); + Hu3DModelRotSet(var_r31->unk00, var_r31->unk44, var_r31->unk48, var_r31->unk4C); + Hu3DModelAttrReset(var_r31->unk00, HU3D_ATTR_DISPOFF); + MTXIdentity(temp_r26->unk_F0); + return i; +} + +void fn_1_AC0C(s32 arg0, Vec arg1) +{ + StructBssA8Data *var_r31; + + if (lbl_1_bss_A8 != NULL) { + var_r31 = lbl_1_bss_A8->data; + if (arg0 < 0 || arg0 >= 15) { + return; + } + var_r31[arg0].unk38 = arg1; + } +} + +void fn_1_AC80(s32 arg0, Vec arg1) +{ + Vec sp14; + Vec sp8; + float var_f31; + StructBssA8Data *var_r28; + StructBssA8Data *temp_r31; + + if (lbl_1_bss_A8 == NULL) { + return; + } + var_r28 = lbl_1_bss_A8->data; + if (arg0 < 0 || arg0 >= 15) { + return; + } + temp_r31 = &var_r28[arg0]; + temp_r31->unk0C = 3; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0; + temp_r31->unk50 = arg1; + temp_r31->unk74 = temp_r31->unk38; + temp_r31->unk8C = 0.995f; + temp_r31->unk90 = -0.5f; + if (temp_r31->unk50.z < 0.0f) { + sp14 = temp_r31->unk38; + var_f31 = -800.0f - sp14.z; + temp_r31->unk1C = fabs(var_f31 / temp_r31->unk50.z); + VECScale(&arg1, &sp8, temp_r31->unk1C); + VECAdd(&sp14, &sp8, &temp_r31->unk68); + } + else { + temp_r31->unk1C = 1000; + } +} + +s32 fn_1_AE64(s32 arg0) +{ + StructBssA8Data *temp_r31; + + if (lbl_1_bss_A8 == NULL) { + return -1; + } + temp_r31 = lbl_1_bss_A8->data; + if (arg0 < 0 || arg0 >= 15) { + return -1; + } + if (temp_r31[arg0].unk06 == 0) { + return -1; + } + return temp_r31[arg0].unk0C; +} + +void fn_1_AEE8(s32 arg0) +{ + StructBssA8Data *var_r26; + StructBssA8Data *temp_r31; + + if (lbl_1_bss_A8 == NULL) { + return; + } + var_r26 = lbl_1_bss_A8->data; + if (arg0 < 0 || arg0 >= 15) { + return; + } + temp_r31 = &var_r26[arg0]; + temp_r31->unk0A = 1; + temp_r31->unk08 = 1; + temp_r31->unk14 = 0; + fn_1_F574(temp_r31->unk38, 0.75f, lbl_1_bss_EC[temp_r31->unk04]); + HuAudFXPlay(9); + fn_1_3A8C(); + lbl_1_bss_DC[temp_r31->unk04]++; + lbl_1_bss_104--; +} + +StructBssA8Data *fn_1_B13C(s32 arg0) +{ + StructBssA8Data *temp_r31; + StructBssA8Data *sp8; + + if (lbl_1_bss_A8 == NULL) { + return NULL; + } + temp_r31 = lbl_1_bss_A8->data; + sp8 = temp_r31; + if (arg0 < 0 || arg0 >= 15) { + return NULL; + } + return &temp_r31[arg0]; +} + +GXColor lbl_1_data_758 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_B1A4(void) +{ + Vec sp2C; + StructBssA8Data *sp10; + StructBssA8Data *var_r31; + s32 spC; + s32 i; + + if (lbl_1_bss_A8 == NULL) { + return; + } + var_r31 = sp10 = lbl_1_bss_A8->data; + for (i = 0, spC = 0; i < 15; i++, var_r31++) { + if (var_r31->unk06 == 0) { + continue; + } + sp2C.x = sp2C.y = sp2C.z = 0.0f; + fn_1_DC24(var_r31->unk38, sp2C, 100.0f, 0.0f, 1.0f, lbl_1_data_758); + Hu3DModelAttrSet(var_r31->unk00, HU3D_ATTR_DISPOFF); + var_r31->unk0C = 0; + var_r31->unk06 = 0; + var_r31->unk14 = 0; + var_r31->unk18 = 0; + } +} + +s32 fn_1_B304(StructBssA8Data **arg0) +{ + s32 var_r29; + s32 i; + StructBssA8Data *var_r30; + StructBssA8Data *var_r28; + StructBssA8Data *var_r27; + + if (lbl_1_bss_A8 == NULL) { + return; + } + var_r30 = lbl_1_bss_A8->data; + var_r28 = var_r30; + for (i = 0, var_r29 = 0; i < 15; i++, var_r30++) { + if (var_r30->unk06 == 0 || var_r30->unk0C != 3 || var_r30->unk08 != 0 || var_r30->unk38.z <= -900.0f) { + continue; + } + arg0[var_r29] = var_r30; + var_r29++; + } + var_r28 = var_r30; + for (i = 0; i < var_r29 - 1; i++) { + if (arg0[i]->unk38.z > arg0[i + 1]->unk38.z) { + var_r27 = arg0[i]; + arg0[i] = arg0[i + 1]; + arg0[i + 1] = var_r27; + } + } + return var_r29; +} + +void fn_1_B430(void) +{ + Vec sp2C[8]; + Vec sp20; + Vec sp14; + Vec sp8; + StructBss94Data *var_r31; + s32 i; + + var_r31 = lbl_1_bss_94 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(*lbl_1_bss_94), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 16 * sizeof(*var_r31)); + for (i = 0; i < 16; i++, var_r31++) { + var_r31->unk02 = 0; + } + sp20.x = sp20.y = 0.0f; + sp20.z = -1400.0f; + fn_1_BCD8(&sp20, NULL, NULL, 0.8f, 0, 0x2003); + sp2C[0].x = 1000.0f; + sp2C[0].y = 1000.0f; + sp2C[0].z = -200.0f; + sp2C[1].x = -1000.0f; + sp2C[1].y = 1000.0f; + sp2C[1].z = -200.0f; + sp2C[2].x = -1000.0f; + sp2C[2].y = 0.0f; + sp2C[2].z = -200.0f; + sp2C[3].x = 1000.0f; + sp2C[3].y = 0.0f; + sp2C[3].z = -200.0f; + fn_1_BCD8(sp2C, NULL, NULL, 1.0f, 0, 6); + sp20.x = -650.0f; + sp20.y = 75.0f; + sp20.z = -1300.0f; + sp14.x = 370.0f; + sp14.y = 1095.0f; + sp14.z = 120.0f; + fn_1_BCD8(&sp20, &sp14, NULL, 0.8f, 25, 0x2004); + sp20.x = 650.0f; + sp20.y = 75.0f; + sp20.z = -1300.0f; + sp14.x = 370.0f; + sp14.y = 1095.0f; + sp14.z = 120.0f; + fn_1_BCD8(&sp20, &sp14, NULL, 0.8f, 21, 0x2004); + sp20.x = 0.0f; + sp20.y = 100.0f; + sp20.z = -1070.0f; + sp14.x = 245.0f; + sp14.y = 130.0f; + sp14.z = 170.0f; + fn_1_BCD8(&sp20, &sp14, NULL, 1.0f, 45, 4); + sp20.x = -235.0f; + sp20.y = 0.0f; + sp20.z = -900.0f; + sp14.x = -235.0f; + sp14.y = 200.0f; + sp14.z = -900.0f; + sp8.x = 30.000002f; + sp8.y = sp8.z = 0.0f; + fn_1_BCD8(&sp20, &sp14, &sp8, 0.5f, 0, 0x4007); + sp20.x = 235.0f; + sp20.y = 0.0f; + sp20.z = -900.0f; + sp14.x = 235.0f; + sp14.y = 200.0f; + sp14.z = -900.0f; + sp8.x = 30.000002f; + sp8.y = sp8.z = 0.0f; + fn_1_BCD8(&sp20, &sp14, &sp8, 0.5f, 0, 0x4007); + sp20.x = 0.0f; + sp20.y = 200.0f; + sp20.z = -900.0f; + sp14.x = 245.0f; + sp14.y = 30.0f; + sp14.z = 30.0f; + fn_1_BCD8(&sp20, &sp14, NULL, 0.5f, 29, 0x4004); + sp2C[0].x = -225.0f; + sp2C[0].y = 200.0f; + sp2C[0].z = -900.0f; + sp2C[1].x = -225.0f; + sp2C[1].y = 200.0f; + sp2C[1].z = -1150.0f; + sp2C[2].x = -225.0f; + sp2C[2].y = 0.0f; + sp2C[2].z = -1150.0f; + sp2C[3].x = -225.0f; + sp2C[3].y = 0.0f; + sp2C[3].z = -900.0f; + fn_1_BCD8(sp2C, NULL, NULL, 0.5f, 0, 0x8006); + sp2C[0].x = 225.0f; + sp2C[0].y = 200.0f; + sp2C[0].z = -1150.0f; + sp2C[1].x = 225.0f; + sp2C[1].y = 200.0f; + sp2C[1].z = -900.0f; + sp2C[2].x = 225.0f; + sp2C[2].y = 0.0f; + sp2C[2].z = -900.0f; + sp2C[3].x = 225.0f; + sp2C[3].y = 0.0f; + sp2C[3].z = -1150.0f; + fn_1_BCD8(sp2C, NULL, NULL, 0.5f, 0, 0x8006); + sp2C[0].x = -225.0f; + sp2C[0].y = 200.0f; + sp2C[0].z = -1150.0f; + sp2C[1].x = 225.0f; + sp2C[1].y = 200.0f; + sp2C[1].z = -1150.0f; + sp2C[2].x = 225.0f; + sp2C[2].y = 0.0f; + sp2C[2].z = -1150.0f; + sp2C[3].x = -225.0f; + sp2C[3].y = 0.0f; + sp2C[3].z = -1150.0f; + fn_1_BCD8(sp2C, NULL, NULL, 0.1f, 0, 0x8006); + sp2C[0].x = -225.0f; + sp2C[0].y = 200.0f; + sp2C[0].z = -900.0f; + sp2C[1].x = 225.0f; + sp2C[1].y = 200.0f; + sp2C[1].z = -900.0f; + sp2C[2].x = 225.0f; + sp2C[2].y = 200.0f; + sp2C[2].z = -1150.0f; + sp2C[3].x = -225.0f; + sp2C[3].y = 200.0f; + sp2C[3].z = -1150.0f; + fn_1_BCD8(sp2C, NULL, NULL, 0.1f, 0, 0x8006); +} + +s16 lbl_1_data_75C[][3] = { { 0, 1, 2 }, { 1, 3, 2 }, { 6, 5, 4 }, { 5, 6, 7 }, { 0, 2, 4 }, { 2, 6, 4 }, { 3, 1, 7 }, { 7, 1, 5 }, { 2, 3, 6 }, + { 3, 7, 6 }, { 1, 0, 4 }, { 1, 4, 5 } }; + +void fn_1_BCD8(Vec *arg0, Vec *arg1, Vec *arg2, float arg3, s32 arg4, s32 arg5) +{ + Vec sp24[8]; + Vec sp18; + float var_f29; + StructBss94Data *var_r30; + s32 i; + s32 j; + + var_r30 = lbl_1_bss_94; + for (i = 0; i < 16; i++, var_r30++) { + if (var_r30->unk02 == 0) { + break; + } + } + if (i >= 16) { + return; + } + var_r30->unk00 = i; + var_r30->unk02 = arg5; + var_r30->unk3C = arg3; + switch (var_r30->unk02 & 0xFFF) { + case 1: + var_r30->unk34 = arg0[0].x; + break; + case 2: + var_r30->unk34 = arg0[0].y; + break; + case 3: + var_r30->unk34 = arg0[0].z; + break; + case 4: + var_r30->unk04 = arg0[0]; + var_r30->unk10 = *arg1; + sp24[0].x = arg0[0].x - arg1->x; + sp24[0].y = arg0[0].y + arg1->y; + sp24[0].z = arg0[0].z - arg1->z; + sp24[1].x = arg0[0].x + arg1->x; + sp24[1].y = arg0[0].y + arg1->y; + sp24[1].z = arg0[0].z - arg1->z; + sp24[2].x = arg0[0].x - arg1->x; + sp24[2].y = arg0[0].y + arg1->y; + sp24[2].z = arg0[0].z + arg1->z; + sp24[3].x = arg0[0].x + arg1->x; + sp24[3].y = arg0[0].y + arg1->y; + sp24[3].z = arg0[0].z + arg1->z; + sp24[4].x = arg0[0].x - arg1->x; + sp24[4].y = arg0[0].y - arg1->y; + sp24[4].z = arg0[0].z - arg1->z; + sp24[5].x = arg0[0].x + arg1->x; + sp24[5].y = arg0[0].y - arg1->y; + sp24[5].z = arg0[0].z - arg1->z; + sp24[6].x = arg0[0].x - arg1->x; + sp24[6].y = arg0[0].y - arg1->y; + sp24[6].z = arg0[0].z + arg1->z; + sp24[7].x = arg0[0].x + arg1->x; + sp24[7].y = arg0[0].y - arg1->y; + sp24[7].z = arg0[0].z + arg1->z; + for (j = 0; j < 12; j++) { + fn_1_129F0(&sp24[lbl_1_data_75C[j][0]], &sp24[lbl_1_data_75C[j][1]], &sp24[lbl_1_data_75C[j][2]], var_r30->unk44[j]); + var_r30->unk104[j][0] = sp24[lbl_1_data_75C[j][0]]; + var_r30->unk104[j][1] = sp24[lbl_1_data_75C[j][1]]; + var_r30->unk104[j][2] = sp24[lbl_1_data_75C[j][2]]; + } + var_r30->unk40 = arg4; + break; + case 5: + var_r30->unk104[0][0] = arg0[0]; + var_r30->unk104[1][0] = arg0[1]; + var_r30->unk104[2][0] = arg0[2]; + var_r30->unk104[3][0] = arg0[3]; + fn_1_129F0(&arg0[0], &arg0[1], &arg0[3], var_r30->unk44[0]); + fn_1_129F0(&arg0[1], &arg0[2], &arg0[3], var_r30->unk44[1]); + break; + case 6: + var_r30->unk104[0][0] = arg0[0]; + var_r30->unk104[1][0] = arg0[1]; + var_r30->unk104[2][0] = arg0[2]; + var_r30->unk104[3][0] = arg0[3]; + fn_1_129F0(&arg0[0], &arg0[1], &arg0[3], var_r30->unk44[0]); + fn_1_129F0(&arg0[1], &arg0[2], &arg0[3], var_r30->unk44[1]); + if (var_r30->unk44[0][1] < -0.5f) { + var_r30->unk40 = 0; + } + if (var_r30->unk44[0][1] > 0.5f) { + var_r30->unk40 = 1; + } + if (var_r30->unk44[0][0] > 0.5f) { + var_r30->unk40 = 2; + } + if (var_r30->unk44[0][0] < -0.5f) { + var_r30->unk40 = 3; + } + if (var_r30->unk44[0][2] < -0.5f) { + var_r30->unk40 = 4; + } + if (var_r30->unk44[0][2] > 0.5f) { + var_r30->unk40 = 5; + } + break; + case 7: + var_r30->unk04 = arg0[0]; + var_r30->unk10 = *arg1; + var_r30->unk34 = arg2->x; + sp18.x = arg1->x - arg0[0].x; + sp18.y = arg1->y - arg0[0].y; + sp18.z = arg1->z - arg0[0].z; + var_f29 = VECMagXZ(&sp18); + var_r30->unk28 = -atan2d(sp18.y, var_f29); + var_r30->unk2C = atan2d(sp18.x, sp18.z); + var_r30->unk30 = 0.0f; + break; + } +} + +s32 lbl_1_data_7C4[] = { 1, 1, 0, 0, 2, 2 }; + +s32 fn_1_C498(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, float arg4, s32 arg5) +{ + StructBss94Data *var_r31; + Vec sp140[6]; + Vec sp134; + Vec sp128; + Vec sp11C; + Vec sp110; + Vec sp104; + Vec spF8; + Vec spEC; + Vec spE0; + Vec spD4; + Vec spC8; + float var_f30; + float var_f19; + float sp34; + float sp30; + float sp2C; + s32 var_r26; + s32 var_r24; + s32 var_r23; + s32 i; + s32 j; + + var_r31 = lbl_1_bss_94; + var_r26 = -1; + sp134.x = arg0->x + arg1->x; + sp134.y = arg0->y + arg1->y; + sp134.z = arg0->z + arg1->z; + for (i = 0; i < 16; i++, var_r31++) { + if (var_r31->unk02 == 0) { + continue; + } + switch (var_r31->unk02 & 0xFFF) { + case 1: + if (arg1->x < 0.0f) { + if (arg0->x > var_r31->unk34 + arg4 && sp134.x <= var_r31->unk34 + arg4 + 1.0f) { + sp134.x = var_r31->unk34 + arg4; + *arg2 = sp134; + var_r26 = 0; + } + } + else { + if (arg0->x < var_r31->unk34 - arg4 && sp134.x >= var_r31->unk34 - arg4 - 1.0f) { + sp134.x = var_r31->unk34 - arg4; + *arg2 = sp134; + var_r26 = 0; + } + } + break; + case 2: + if (arg1->y < 0.0f) { + if (arg0->y > var_r31->unk34 + arg4 && sp134.y <= var_r31->unk34 + arg4 + 1.0f) { + sp134.y = var_r31->unk34 + arg4; + *arg2 = sp134; + var_r26 = 1; + } + } + else { + if (arg0->y < var_r31->unk34 - arg4 && sp134.y >= var_r31->unk34 - arg4 - 1.0f) { + sp134.y = var_r31->unk34 - arg4; + *arg2 = sp134; + var_r26 = 1; + } + } + break; + case 3: + if (arg1->z < 0.0f) { + if (arg0->z > var_r31->unk34 + arg4 && sp134.z <= var_r31->unk34 + arg4 + 1.0f) { + sp134.z = var_r31->unk34 + arg4; + *arg2 = sp134; + var_r26 = 2; + } + } + else { + if (arg0->z < var_r31->unk34 - arg4 && sp134.z >= var_r31->unk34 - arg4 - 1.0f) { + sp134.z = var_r31->unk34 - arg4; + *arg2 = sp134; + var_r26 = 2; + } + } + break; + case 4: + arg4 = 0.0f; + VECSubtract(&sp134, &var_r31->unk04, &sp128); + if (fabs(sp128.x) < var_r31->unk10.x + arg4 && fabs(sp128.y) < var_r31->unk10.y + arg4 && fabs(sp128.z) < var_r31->unk10.z + arg4) { + for (j = 0; j < 6; j++) { + if (var_r31->unk40 & (1 << j)) { + var_r24 = fn_1_12C6C(arg0, &sp134, var_r31->unk44[j * 2]); + if (var_r24 != 0) { + break; + } + } + } + switch (j) { + case 0: + sp134.y = var_r31->unk04.y + var_r31->unk10.y + arg4 + 1.0f; + break; + case 1: + sp134.y = var_r31->unk04.y - var_r31->unk10.y - arg4 - 1.0f; + break; + case 2: + sp134.x = var_r31->unk04.x - var_r31->unk10.x - arg4 - 1.0f; + break; + case 3: + sp134.x = var_r31->unk04.x + var_r31->unk10.x + arg4 + 1.0f; + break; + case 4: + sp134.z = var_r31->unk04.z + var_r31->unk10.z + arg4 + 1.0f; + break; + case 5: + sp134.z = var_r31->unk04.z - var_r31->unk10.z - arg4 - 1.0f; + break; + } + if (j < 6) { + *arg2 = sp134; + var_r26 = lbl_1_data_7C4[j]; + } + } + break; + case 5: + if (fn_1_12C6C(arg0, &sp134, var_r31->unk44[0]) != 1) { + break; + } + fn_1_1334C(var_r31->unk44[0], arg0, arg1, var_r31->unk104[0], &sp104); + sp110.x = fabs(var_r31->unk44[0][0]); + sp110.y = fabs(var_r31->unk44[0][1]); + sp110.z = fabs(var_r31->unk44[0][2]); + if (sp110.x > sp110.y && sp110.x > sp110.z) { + var_r24 = 0; + } + else if (sp110.y > sp110.x && sp110.y > sp110.z) { + var_r24 = 1; + } + else { + var_r24 = 2; + } + sp140[0] = var_r31->unk104[0][0]; + sp140[1] = var_r31->unk104[1][0]; + sp140[2] = var_r31->unk104[3][0]; + sp140[3] = var_r31->unk104[1][0]; + sp140[4] = var_r31->unk104[2][0]; + sp140[5] = var_r31->unk104[3][0]; + sp34 = fn_1_12E68(&sp140[0], &sp104, var_r24); + sp30 = fn_1_12E68(&sp140[3], &sp104, var_r24); + if (sp34 != 0.0f || sp30 != 0.0f) { + arg2->x = sp104.x + var_r31->unk44[0][0] * (arg4 + 1.0f); + arg2->y = sp104.y + var_r31->unk44[0][1] * (arg4 + 1.0f); + arg2->z = sp104.z + var_r31->unk44[0][2] * (arg4 + 1.0f); + var_r26 = var_r24; + } + break; + case 6: + sp140[0] = var_r31->unk104[0][0]; + sp140[1] = var_r31->unk104[1][0]; + sp140[2] = var_r31->unk104[2][0]; + sp140[3] = var_r31->unk104[3][0]; + if (fn_1_137C4(&sp140[0], arg0, arg1, &sp104, arg4, var_r31->unk40) != 0) { + *arg2 = sp104; + var_r26 = lbl_1_data_7C4[var_r31->unk40]; + } + break; + case 7: + spEC.x = arg0->x; + spEC.y = arg0->z; + spEC.z = 0.0f; + spE0.x = sp134.x; + spE0.y = sp134.z; + spE0.z = 0.0f; + spD4.x = var_r31->unk04.x; + spD4.y = var_r31->unk04.z; + spD4.z = 0.0f; + var_f30 = fn_1_1367C(&spEC, &spE0, &spD4, &spC8, &sp2C); + if (sp2C >= 0.0f && sp2C <= 1.0f && var_f30 < var_r31->unk34 + arg4) { + var_f19 = arg0->y + arg1->y * sp2C; + if (var_f19 >= var_r31->unk04.y && var_f19 <= var_r31->unk10.y) { + spC8.z = spC8.y; + spC8.y = 0.0f; + VECSubtract(&spC8, &var_r31->unk04, &sp128); + sp128.y = 0.0f; + if (VECMag(&sp128) == 0.0f) { + sp128.z = 1.0f; + } + else { + VECNormalize(&sp128, &sp128); + } + VECScale(&sp128, &sp128, var_r31->unk34 + arg4 + 1.0f); + arg2->x = sp128.x + var_r31->unk04.x; + arg2->z = sp128.z + var_r31->unk04.z; + arg2->y = var_f19; + sp2C = var_f30; + var_r26 = 99; + } + } + else { + sp2C = var_f30; + VECSubtract(&sp134, &var_r31->unk04, &sp128); + var_f30 = VECMagXZ(&sp128); + if (var_f30 < var_r31->unk34 + arg4 && sp134.y >= var_r31->unk04.y && sp134.y <= var_r31->unk10.y) { + VECSubtract(&sp134, &var_r31->unk04, &sp128); + sp128.y = 0.0f; + if (VECMag(&sp128) == 0.0f) { + sp128.z = 1.0f; + } + else { + VECNormalize(&sp128, &sp128); + } + VECScale(&sp128, &sp128, var_r31->unk34 + arg4 + 1.0f); + arg2->x = var_r31->unk04.x + sp128.x; + arg2->z = var_r31->unk04.z + sp128.z; + arg2->y = sp134.y; + var_r26 = 99; + } + } + if (var_r26 == -1) { + break; + } + sp128.x = spC8.x - var_r31->unk04.x; + sp128.z = spC8.y - var_r31->unk04.z; + var_f30 = VECMagXZ(&sp128); + if (var_f30 == 0.0f) { + var_f30 = 1.0f; + sp128.x = 0.0f; + sp128.z = 1.0f; + } + else { + var_f30 = 1.0f / var_f30; + } + spC8.x = sp128.x * var_f30; + spC8.z = sp128.z * var_f30; + var_f30 = VECMagXZ(arg1); + if (var_f30 != 0.0f) { + var_f30 = 1.0f / var_f30; + } + spD4.x = -(arg1->x * var_f30); + spD4.z = -(arg1->z * var_f30); + sp2C = var_f30 / (var_r31->unk34 + arg4); + sp128.x = spD4.x + sp2C * (spC8.x - spD4.x); + sp128.z = spD4.z + sp2C * (spC8.z - spD4.z); + var_f30 = VECMagXZ(&sp128); + if (var_f30 == 0.0f) { + var_f30 = 1.0f; + sp128.x = 0.0f; + sp128.z = 1.0f; + } + else { + var_f30 = 1.0f / var_f30; + } + sp128.x = sp128.x * var_f30 - spD4.x; + sp128.z = sp128.z * var_f30 - spD4.z; + sp128.y = 0.0f; + if (VECMag(&sp128) == 0.0f) { + sp128.z = 1.0f; + } + else { + VECNormalize(&sp128, &sp128); + } + var_f30 = VECMagXZ(arg1); + arg3->x = sp128.x * var_f30 * var_r31->unk3C; + arg3->z = sp128.z * var_f30 * var_r31->unk3C; + arg3->y = arg1->y; + break; + } + if (var_r26 != -1) { + break; + } + } + if (i < 16) { + switch (var_r26) { + case 0: + arg3->x = -arg1->x * var_r31->unk3C; + arg3->y = arg1->y; + arg3->z = arg1->z * var_r31->unk3C; + var_r23 = var_r31->unk02; + break; + case 1: + arg3->x = arg1->x * var_r31->unk3C; + arg3->y = arg1->y * -0.5f; + arg3->z = arg1->z * var_r31->unk3C; + var_r23 = var_r31->unk02; + break; + case 2: + arg3->x = arg1->x * var_r31->unk3C; + arg3->y = arg1->y; + arg3->z = -arg1->z * var_r31->unk3C; + var_r23 = var_r31->unk02; + break; + default: + var_r23 = var_r31->unk02; + break; + } + arg5--; + if (arg5 > 0) { + sp11C = *arg0; + sp110.x = arg2->x - arg0->x; + sp110.y = arg2->y - arg0->y; + sp110.z = arg2->z - arg0->z; + var_r26 = fn_1_C498(&sp11C, &sp110, &sp104, &spF8, arg4, arg5); + if (var_r26 != 0) { + *arg2 = sp104; + *arg3 = spF8; + if (var_r23 & 0x4000) { + var_r26 |= 0x4000; + } + if (var_r23 & 0x8000) { + var_r26 |= 0x8000; + } + var_r23 = var_r26; + } + } + return var_r23; + } + return 0; +} + +void fn_1_D930(void) +{ + omObjData *var_r30; + StructBssA4Data *var_r31; + AnimData *var_r27; + StructM423_05 *var_r29; + ModelData *var_r28; + s32 sp8; + + var_r30 = lbl_1_bss_A4 = omAddObjEx(lbl_1_bss_120, 0xBF, 0, 0, -1, fn_1_DA38); + var_r31 = var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(*var_r31)); + var_r31->unk08 = var_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M423, 22), MEMORY_DEFAULT_NUM)); + var_r31->unk00 = sp8 = fn_1_11114(var_r27, 0x100); + Hu3DModelCameraSet(var_r31->unk00, 4); + Hu3DModelLayerSet(var_r31->unk00, 1); + var_r31->unk04 = 0; + var_r28 = &Hu3DData[var_r31->unk00]; + var_r29 = var_r28->unk_120; + var_r29->unk20 = 0; +} + +void fn_1_DA38(omObjData *arg0) +{ + StructBssA4Data *temp_r30; + ModelData *var_r27; + StructM423_05 *temp_r29; + StructM423_04 *var_r31; + s32 i; + + temp_r30 = arg0->data; + if (temp_r30->unk04 <= 0) { + Hu3DModelAttrSet(temp_r30->unk00, HU3D_ATTR_DISPOFF); + return; + } + Hu3DModelAttrReset(temp_r30->unk00, HU3D_ATTR_DISPOFF); + var_r27 = &Hu3DData[temp_r30->unk00]; + temp_r29 = var_r27->unk_120; + var_r31 = temp_r29->unk3C; + temp_r29->unk23 = 0; + for (i = 0; i < temp_r29->unk26; i++, var_r31++) { + if (var_r31->unk30 <= 0.0f) { + continue; + } + var_r31->unk38.x += var_r31->unk04.x; + var_r31->unk38.y += var_r31->unk04.y; + var_r31->unk38.z += var_r31->unk04.z; + var_r31->unk34 += var_r31->unk18; + if (var_r31->unk34 >= 360.0f) { + var_r31->unk34 -= 360.0f; + } + var_r31->unk48 = var_r31->unk28; + var_r31->unk28 += var_r31->unk2C; + if (var_r31->unk48 >= 16) { + var_r31->unk48 = 0; + var_r31->unk00 = 0; + var_r31->unk30 = 0.0f; + temp_r30->unk04--; + } + } +} + +void fn_1_DBC8(void) +{ + omObjData *temp_r31; + StructBssA4Data *temp_r30; + + temp_r31 = lbl_1_bss_A4; + temp_r30 = temp_r31->data; + Hu3DModelAttrSet(temp_r30->unk00, HU3D_ATTR_DISPOFF); + HuSprAnimKill(temp_r30->unk08); + temp_r31->func = NULL; +} + +inline s32 fn_1_DC24(Vec arg0, Vec arg1, float arg2, float arg3, float arg4, GXColor arg5) +{ + omObjData *var_r27; + StructBssA4Data *temp_r28; + ModelData *var_r26; + StructM423_05 *temp_r30; + StructM423_04 *var_r31; + s32 i; + + var_r27 = lbl_1_bss_A4; + temp_r28 = var_r27->data; + var_r26 = &Hu3DData[temp_r28->unk00]; + temp_r30 = var_r26->unk_120; + var_r31 = temp_r30->unk3C; + for (i = 0; i < temp_r30->unk26; i++, var_r31++) { + if (var_r31->unk30 <= 0.0f) { + break; + } + } + if (i >= temp_r30->unk26) { + return -1; + } + var_r31->unk00 = var_r31->unk02 = 0; + var_r31->unk38.x = arg0.x; + var_r31->unk38.y = arg0.y; + var_r31->unk38.z = arg0.z; + var_r31->unk04.x = arg1.x; + var_r31->unk04.y = arg1.y; + var_r31->unk04.z = arg1.z; + var_r31->unk18 = arg3; + var_r31->unk30 = arg2; + var_r31->unk44.r = arg5.r; + var_r31->unk44.g = arg5.g; + var_r31->unk44.b = arg5.b; + var_r31->unk44.a = arg5.a; + var_r31->unk34 = 0.0f; + var_r31->unk48 = 0; + var_r31->unk00 = 0; + var_r31->unk28 = 0.0f; + var_r31->unk2C = arg4; + temp_r28->unk04++; + return i; +} + +s32 fn_1_DD70(Vec arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, GXColor arg6) +{ + Vec sp60; + Vec sp54; + float temp_f31; + s32 sp20; + s32 sp1C; + + sp54.x = arg1.z; + sp54.z = arg1.x; + sp54.y = 0.0f; + VECNormalize(&sp54, &sp54); + temp_f31 = 0.5f * arg4; + sp60.x = arg0.x + sp54.x * temp_f31; + sp60.y = arg0.y + sp54.y * temp_f31; + sp60.z = arg0.z + sp54.z * temp_f31; + sp20 = fn_1_DC24(sp60, arg1, arg2, arg3, arg5, arg6); + sp60.x = arg0.x - sp54.x * temp_f31; + sp60.y = arg0.y - sp54.y * temp_f31; + sp60.z = arg0.z - sp54.z * temp_f31; + sp1C = fn_1_DC24(sp60, arg1, arg2, -arg3, arg5, arg6); + return (sp20 << 16) | sp1C; +} + +void fn_1_E1BC(void) +{ + omObjData *var_r31; + s32 var_r29; + s32 i; + + var_r31 = lbl_1_bss_A0 = omAddObjEx(lbl_1_bss_120, 0xBF, 16, 0, -1, fn_1_E290); + for (i = 0; i < var_r31->mdlcnt; i++) { + var_r29 = var_r31->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M423, 3)); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(var_r29, 4); + } + var_r31->stat |= 0x100; +} + +void fn_1_E290(omObjData *arg0) +{ + ModelData *var_r28; + s32 temp_r30; + s32 i; + + for (i = 0; i < arg0->mdlcnt; i++) { + temp_r30 = arg0->model[i]; + var_r28 = &Hu3DData[temp_r30]; + if (!(var_r28->attr & 1) && Hu3DMotionEndCheck(temp_r30)) { + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_E330(void) { } + +s32 fn_1_E334(Vec arg0, Vec arg1, float arg2) +{ + omObjData *var_r31; + ModelData *var_r26; + s32 temp_r29; + s32 i; + + var_r31 = lbl_1_bss_A0; + for (i = 0; i < var_r31->mdlcnt; i++) { + var_r26 = &Hu3DData[var_r31->model[i]]; + if (var_r26->attr & 1) { + break; + } + } + if (i >= var_r31->mdlcnt) { + return -1; + } + temp_r29 = var_r31->model[i]; + Hu3DModelPosSet(temp_r29, arg0.x, arg0.y, arg0.z); + Hu3DModelRotSet(temp_r29, arg1.x, arg1.y, arg1.z); + Hu3DModelScaleSet(temp_r29, arg2, arg2, arg2); + Hu3DMotionTimeSet(temp_r29, 0.0f); + Hu3DMotionSpeedSet(temp_r29, 2.0f); + Hu3DModelAttrReset(temp_r29, HU3D_ATTR_DISPOFF); + return i; +} + +void fn_1_E460(void) +{ + omObjData *temp_r3; + + temp_r3 = lbl_1_bss_9C = omAddObjEx(lbl_1_bss_120, 0xBF, 1, 0, -1, fn_1_E4EC); + temp_r3->model[0] = fn_1_E678(); + Hu3DModelCameraSet(temp_r3->model[0], 4); + Hu3DModelLayerSet(temp_r3->model[0], 2); +} + +void fn_1_E4EC(omObjData *arg0) +{ + ModelData *var_r29; + StructM423_0B *var_r28; + StructM423_0A *var_r31; + s32 i; + + var_r29 = &Hu3DData[arg0->model[0]]; + var_r28 = var_r29->unk_120; + var_r31 = var_r28->unk00; + for (i = 0; i < 16; i++, var_r31++) { + if (var_r31->unk00 == 0) { + continue; + } + var_r31->unk00++; + if (var_r31->unk00 < 12.0f) { + var_r31->unk04 += 0.058333337f; + } + else { + var_r31->unk04 += 0.025000002f; + var_r31->unk10 -= 0.050000004f; + } + if (var_r31->unk10 < 0.0f) { + var_r31->unk00 = 0; + } + } +} + +void fn_1_E60C(void) +{ + omObjData *temp_r31; + ModelData *var_r30; + StructM423_0B *var_r29; + + temp_r31 = lbl_1_bss_9C; + var_r30 = &Hu3DData[temp_r31->model[0]]; + var_r29 = var_r30->unk_120; + HuSprAnimKill(var_r29->unk200); + temp_r31->func = NULL; +} + +s32 fn_1_E678(void) +{ + float sp88[32][2]; + float sp8[32]; + float temp_f28; + float temp_f30; + float temp_f29; + float var_f31; + ModelData *temp_r27; + StructM423_0B *var_r30; + StructM423_09 *var_r29; + StructM423_08 *var_r28; + s32 var_r26; + s32 i; + + var_r26 = Hu3DHookFuncCreate(fn_1_EF44); + temp_r27 = &Hu3DData[var_r26]; + var_r30 = temp_r27->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), temp_r27->unk_48); + memset(var_r30, 0, sizeof(*var_r30)); + var_r30->unk20C = HuMemDirectMallocNum(HEAP_DATA, 32 * sizeof(*var_r30->unk20C), temp_r27->unk_48); + memset(var_r30->unk20C, 0, 32 * sizeof(*var_r30->unk20C)); + var_r30->unk210 = HuMemDirectMallocNum(HEAP_DATA, 32 * sizeof(*var_r30->unk210), temp_r27->unk_48); + memset(var_r30->unk210, 0, 32 * sizeof(*var_r30->unk210)); + var_r30->unk214 = HuMemDirectMallocNum(HEAP_DATA, 5 * sizeof(*var_r30->unk214), temp_r27->unk_48); + memset(var_r30->unk214, 0, 5 * sizeof(*var_r30->unk214)); + var_r30->unk204 = GXGetTexBufferSize(640, 480, GX_TF_RGB5A3, GX_FALSE, 0); + var_r30->unk208 = HuMemDirectMallocNum(HEAP_DATA, var_r30->unk204, temp_r27->unk_48); + DCFlushRange(var_r30->unk208, var_r30->unk204); + var_r30->unk200 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M423, 23), MEMORY_DEFAULT_NUM)); + var_f31 = 0.0f; + for (i = 0; i < 32; i++) { + temp_f28 = 1.0f + 0.001f * frandmod(1000); + sp8[i] = temp_f28; + var_f31 += temp_f28; + sp88[i][1] = 80.0f * temp_f28; + sp88[i][0] = 10.0f + 0.02f * frandmod(1000); + } + var_f31 = 360.0f / var_f31; + for (i = 0; i < 32; i++) { + sp8[i] *= var_f31; + } + var_f31 = frandmod(90); + var_r28 = var_r30->unk20C; + var_r29 = var_r30->unk210; + for (i = 0; i < 32; var_r28++, var_r29++, i++) { + temp_f29 = -cosd(var_f31); + temp_f30 = sind(var_f31); + var_r28->unk24 = temp_f29 * sp88[i][0]; + var_r28->unk28 = temp_f30 * sp88[i][0]; + var_r28->unk0C = temp_f29 * (sp88[i][0] + sp88[i][1]); + var_r28->unk10 = temp_f30 * (sp88[i][0] + sp88[i][1]); + var_r28->unk00 = temp_f29 * (sp88[i][0] + 0.85f * sp88[i][1]); + var_r28->unk04 = temp_f30 * (sp88[i][0] + 0.85f * sp88[i][1]); + var_r29->unk00 = -0.3f * -temp_f29; + var_r29->unk04 = -0.3f * temp_f30; + temp_f29 = -cosd(var_f31 - 0.4f * sp8[i]); + temp_f30 = sind(var_f31 - 0.4f * sp8[i]); + var_r28->unk30 = temp_f29 * (sp88[i][0] + 0.7f * sp88[i][1]); + var_r28->unk34 = temp_f30 * (sp88[i][0] + 0.7f * sp88[i][1]); + temp_f29 = -cosd(var_f31 + 0.4f * sp8[i]); + temp_f30 = sind(var_f31 + 0.4f * sp8[i]); + var_r28->unk18 = temp_f29 * (sp88[i][0] + 0.7f * sp88[i][1]); + var_r28->unk1C = temp_f30 * (sp88[i][0] + 0.7f * sp88[i][1]); + var_r29->unk08 = var_r29->unk0C = var_r29->unk10 = var_r29->unk14 = 0.0f; + var_r29->unk18 = var_r29->unk1C = var_r29->unk20 = var_r29->unk24 = 0.0f; + var_f31 += sp8[i]; + } + for (i = 0; i < 5; i++) { + var_r30->unk214[i].r = var_r30->unk214[i].g = var_r30->unk214[i].b = 0xFF; + var_r30->unk214[i].a = 0xFF; + } + var_r30->unk218 = 32 * 54; + var_r30->unk220 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r30->unk218, MEMORY_DEFAULT_NUM); + GXBeginDisplayList(var_r30->unk220, var_r30->unk218); + for (i = 0; i < 32; i++) { + GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 6); + + GXPosition1x16(i * 5); + GXColor1x16(0); + GXTexCoord1x16(i * 5); + + GXPosition1x16(i * 5 + 1); + GXColor1x16(1); + GXTexCoord1x16(i * 5 + 1); + + GXPosition1x16(i * 5 + 2); + GXColor1x16(2); + GXTexCoord1x16(i * 5 + 2); + + GXPosition1x16(i * 5 + 3); + GXColor1x16(3); + GXTexCoord1x16(i * 5 + 3); + + GXPosition1x16(i * 5 + 4); + GXColor1x16(4); + GXTexCoord1x16(i * 5 + 4); + + GXPosition1x16(i * 5 + 1); + GXColor1x16(1); + GXTexCoord1x16(i * 5 + 1); + + GXEnd(); + } + var_r30->unk21C = GXEndDisplayList(); + DCFlushRangeNoSync(var_r30->unk20C, 32 * sizeof(*var_r30->unk20C)); + DCFlushRangeNoSync(var_r30->unk210, 32 * sizeof(*var_r30->unk210)); + DCFlushRangeNoSync(var_r30->unk214, 5 * sizeof(*var_r30->unk214)); + DCFlushRangeNoSync(var_r30->unk220, var_r30->unk218); + DCStoreRangeNoSync(var_r30, sizeof(*var_r30)); + PPCSync(); + return var_r26; +} + +GXColor lbl_1_data_7FC[] = { { 0x66, 0x00, 0x00, 0xFF }, { 0x00, 0x00, 0x66, 0xFF }, { 0x66, 0x00, 0x5B, 0xFF }, { 0x00, 0x66, 0x00, 0xFF }, + { 0x42, 0x00, 0x4C, 0xFF }, { 0x47, 0x28, 0x00, 0xFF }, { 0x66, 0x66, 0x00, 0xFF }, { 0x00, 0x00, 0x00, 0xFF } }; + +void fn_1_EF44(ModelData *arg0, Mtx arg1) +{ + Mtx sp124; + Mtx spF4; + Mtx spC4; + Mtx sp94; + Mtx sp64; + Mtx sp34; + GXTexObj sp14; + GXColor sp10 = { 0xCC, 0xCC, 0xCC, 0x7F }; + StructM423_0B *temp_r30; + StructM423_0A *var_r31; + s32 i; + + temp_r30 = arg0->unk_120; + GXSetTexCopySrc(0, 0, 640, 480); + GXSetTexCopyDst(640, 480, GX_TF_RGB5A3, GX_FALSE); + GXCopyTex(temp_r30->unk208, GX_FALSE); + GXPixModeSync(); + MTXTrans(spF4, -400.0f, 400.0f, -700.0f); + MTXConcat(Hu3DCameraMtx, spF4, sp64); + GXLoadPosMtxImm(sp64, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); + GXInitTexObj(&sp14, temp_r30->unk208, 640, 480, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&sp14, GX_TEXMAP0); + HuSprTexLoad(temp_r30->unk200, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + C_MTXLightPerspective(sp94, 41.5f, 1.2f, 0.5555555f, -0.5f, 0.5555555f, 0.5f); + MTXConcat(sp94, Hu3DCameraMtx, sp94); + MTXInverse(Hu3DCameraMtx, sp34); + MTXConcat(sp34, sp64, sp124); + MTXConcat(sp94, sp124, spF4); + GXLoadTexMtxImm(spF4, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEXCOORD0, GX_TEXMTX1, GX_FALSE, GX_PTIDENTITY); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP1); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + MTXScale(spF4, -0.5f, -0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spF4, -1); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG1, sp10); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_C1, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_RASA, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r30->unk20C, 12); + GXSetArray(GX_VA_CLR0, temp_r30->unk214, 4); + GXSetArray(GX_VA_TEX0, temp_r30->unk210, 8); + var_r31 = temp_r30->unk00; + for (i = 0; i < 16; i++, var_r31++) { + if (var_r31->unk00 == 0) { + continue; + } + lbl_1_data_7FC[var_r31->unk02].a = 255.0f * var_r31->unk10; + GXSetTevColor(GX_TEVREG0, lbl_1_data_7FC[var_r31->unk02]); + MTXTrans(spF4, var_r31->unk14.x, var_r31->unk14.y, var_r31->unk14.z); + MTXRotRad(sp124, 'Z', MTXDegToRad(var_r31->unk0C)); + MTXConcat(spF4, sp124, spF4); + MTXScale(spC4, var_r31->unk04 * var_r31->unk08, var_r31->unk04 * var_r31->unk08, var_r31->unk04 * var_r31->unk08); + MTXConcat(spF4, spC4, spF4); + MTXConcat(Hu3DCameraMtx, spF4, sp64); + GXLoadPosMtxImm(sp64, GX_PNMTX0); + MTXConcat(sp34, sp64, sp124); + MTXConcat(sp94, sp124, spF4); + GXLoadTexMtxImm(spF4, GX_TEXMTX0, GX_MTX3x4); + MTXRotRad(sp124, 'Z', MTXDegToRad(-var_r31->unk0C)); + GXLoadTexMtxImm(sp124, GX_TEXMTX1, GX_MTX2x4); + GXCallDisplayList(temp_r30->unk220, temp_r30->unk21C); + } + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); +} + +s32 fn_1_F574(Vec arg0, float arg1, s32 arg2) +{ + omObjData *var_r29; + ModelData *var_r28; + StructM423_0B *var_r26; + StructM423_0A *var_r31; + s32 var_r27; + s32 i; + + var_r29 = lbl_1_bss_9C; + var_r28 = &Hu3DData[var_r29->model[0]]; + var_r26 = var_r28->unk_120; + var_r31 = var_r26->unk00; + for (i = 0; i < 16; i++, var_r31++) { + if (var_r31->unk00 == 0) { + break; + } + } + if (i < 16) { + if (arg2 < 0) { + arg2 = 0; + } + var_r31->unk00 = 1; + var_r31->unk02 = arg2; + var_r31->unk10 = 1.0f; + var_r31->unk08 = arg1; + var_r31->unk04 = 0.25f; + var_r31->unk0C = frandmod(360); + var_r31->unk14 = arg0; + } +} + +void fn_1_F690(void) +{ + lbl_1_bss_98 = omAddObjEx(lbl_1_bss_120, 0xFE, 0, 0, -1, fn_1_F6E0); +} + +s32 lbl_1_data_81C[] = { DATA_MAKE_NUM(DATADIR_MGCONST, 12), DATA_MAKE_NUM(DATADIR_MGCONST, 13), DATA_MAKE_NUM(DATADIR_MGCONST, 14), + DATA_MAKE_NUM(DATADIR_MGCONST, 15), DATA_MAKE_NUM(DATADIR_MGCONST, 16), DATA_MAKE_NUM(DATADIR_MGCONST, 17), DATA_MAKE_NUM(DATADIR_MGCONST, 18), + DATA_MAKE_NUM(DATADIR_MGCONST, 19) }; + +s16 lbl_1_data_83C[] = { 0x7F, 0x7F, 0x7F, 0x100 }; + +s16 lbl_1_data_844[][2] = { { -75, 10 }, { -61, -14 }, { -47, 10 }, { 0, 0 }, { -12, -8 }, { -12, -8 }, { 6, -8 }, { 6, -8 }, { 24, -8 }, { 24, -8 }, + { 42, -8 }, { 42, -8 }, { 60, -8 }, { 60, -8 }, { -12, 10 }, { -12, 10 }, { 6, 10 }, { 6, 10 }, { 24, 10 }, { 24, 10 }, { 42, 10 }, { 42, 10 }, + { 60, 10 }, { 60, 10 } }; + +void fn_1_F6E0(omObjData *arg0) +{ + StructM423_0C *var_r31; + s32 sp8; + s32 var_r29; + s32 i; + + if ((sp8 = lbl_1_bss_EC[3]) != -1) { + var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(*var_r31)); + var_r31->unk00 = 480; + var_r31->unk04 = 70; + var_r31->unk08 = 0; + var_r31->unk0C = 0; + for (i = 0; i < 24; i++) { + switch (i) { + case 0: + case 1: + case 2: + var_r29 = espEntry(lbl_1_data_81C[lbl_1_bss_EC[i]], lbl_1_data_83C[i], 0); + var_r31->unk10[i] = var_r29; + var_r31->unk70[i][0] = lbl_1_data_844[i][0]; + var_r31->unk70[i][1] = lbl_1_data_844[i][1]; + break; + case 3: + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 38), lbl_1_data_83C[i], 0); + var_r31->unk10[i] = var_r29; + var_r31->unk70[i][0] = lbl_1_data_844[i][0]; + var_r31->unk70[i][1] = lbl_1_data_844[i][1]; + break; + default: + if (!(i & 1)) { + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M423, 24), 0x40, 0); + var_r31->unk10[i] = var_r29; + } + else { + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M423, 25), 0x20, 0); + var_r31->unk10[i] = var_r29; + } + var_r31->unk70[i][0] = lbl_1_data_844[i][0]; + var_r31->unk70[i][1] = lbl_1_data_844[i][1]; + break; + } + espDispOn(var_r29); + espDrawNoSet(var_r29, 0); + espAttrSet(var_r29, 1); + espPosSet(var_r29, var_r31->unk00 + var_r31->unk70[i][0], var_r31->unk04 + var_r31->unk70[i][1]); + espBankSet(var_r29, 0); + } + for (i = 0; i < 10; i++) { + var_r31->unk190[i][0] = 0; + var_r31->unk190[i][1] = 0; + } + fn_1_10028(0); + arg0->func = fn_1_FA40; + } +} + +void fn_1_FA40(omObjData *arg0) +{ + float var_f31; + float var_f28; + float temp_f30; + float temp_f29; + StructM423_0C *temp_r31; + s32 temp_r28; + s32 temp_r29; + s32 i; + + temp_r31 = arg0->data; + if (lbl_1_bss_104 != temp_r31->unk08) { + temp_r31->unk08 = lbl_1_bss_104; + temp_r31->unk0C = 20; + } + if (temp_r31->unk0C != 0) { + var_f31 = 1.0 + 0.8f * sind(180.0f * (temp_r31->unk0C / 20.0f)); + temp_r31->unk0C--; + } + else { + var_f31 = 1.0f; + } + var_f31 = 1.0f; + temp_r28 = 10 - lbl_1_bss_104; + for (i = 0; i < 4; i++) { + temp_f30 = temp_r31->unk00 + temp_r31->unk70[i][0]; + temp_f29 = temp_r31->unk04 + temp_r31->unk70[i][1]; + espPosSet(temp_r31->unk10[i], temp_f30, temp_f29); + espScaleSet(temp_r31->unk10[i], 1.0f, 1.0f); + } + for (i = 4; i < 24; i++) { + temp_f30 = temp_r31->unk00 + temp_r31->unk70[i][0]; + temp_f29 = temp_r31->unk04 + temp_r31->unk70[i][1]; + if (!(i & 1)) { + espPosSet(temp_r31->unk10[i], temp_f30, temp_f29); + espScaleSet(temp_r31->unk10[i], 1.0f, 1.0f); + } + else { + temp_r29 = (i - 4) / 2; + if (temp_r28 > temp_r29) { + temp_r31->unk190[temp_r29][0] = 1; + } + else { + temp_r31->unk190[temp_r29][0] = 0; + } + if (temp_r31->unk190[temp_r29][0] != 0) { + if (temp_r31->unk190[temp_r29][1] < 15) { + temp_r31->unk190[temp_r29][1]++; + var_f31 = 3.0f - 2.0f * (temp_r31->unk190[temp_r29][1] / 15.0f); + var_f28 = temp_r31->unk190[temp_r29][1] / 15.0f; + } + else { + var_f31 = 1.0f; + var_f28 = 1.0f; + } + espDispOn(temp_r31->unk10[i]); + espPosSet(temp_r31->unk10[i], temp_f30, temp_f29); + espTPLvlSet(temp_r31->unk10[i], var_f28); + espScaleSet(temp_r31->unk10[i], var_f31, var_f31); + } + else { + espDispOff(temp_r31->unk10[i]); + } + } + } +} + +void fn_1_FF10(omObjData *arg0) +{ + StructM423_0C *temp_r29; + s32 i; + + if (arg0 && arg0->data) { + temp_r29 = arg0->data; + for (i = 0; i < 24; i++) { + espKill(temp_r29->unk10[i]); + } + arg0->data = NULL; + arg0->func = NULL; + } +} + +void fn_1_FF98(void) +{ + fn_1_FF10(lbl_1_bss_98); +} + +void fn_1_10028(s32 arg0) +{ + StructM423_0C *temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_98->data; + for (i = 0; i < 24; i++) { + if (arg0 != 0) { + espDispOn(temp_r30->unk10[i]); + } + else { + espDispOff(temp_r30->unk10[i]); + } + if (i >= 4 && (i & 1)) { + espDispOff(temp_r30->unk10[i]); + } + } +} + +void fn_1_100DC(void) +{ + omObjData *temp_r3; + s32 i; + + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 50.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 240.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 320, 240); + Hu3DCameraCreate(2); + Hu3DCameraPerspectiveSet(2, 45.0f, 50.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(2, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(2, 0, 0, 640, 480); + Hu3DCameraCreate(4); + Hu3DCameraPerspectiveSet(4, 45.0f, 100.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(4, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(4, 0, 0, 640, 480); + temp_r3 = lbl_1_bss_8C = omAddObjEx(lbl_1_bss_120, 0x7FDA, 0, 0, -1, omOutViewMulti); + temp_r3->work[0] = 3; + for (i = 0; i < temp_r3->work[0]; i++) { + CRotM[i].x = lbl_1_data_0[0].unk00.x; + CRotM[i].y = lbl_1_data_0[0].unk00.y; + CRotM[i].z = lbl_1_data_0[0].unk00.z; + CenterM[i].x = lbl_1_data_0[0].unk0C.x; + CenterM[i].y = lbl_1_data_0[0].unk0C.y; + CenterM[i].z = lbl_1_data_0[0].unk0C.z; + CZoomM[i] = lbl_1_data_0[0].unk18; + } + lbl_1_bss_84 = 0; + lbl_1_bss_88 = -1; + omAddObjEx(lbl_1_bss_120, 0xFF, 0, 0, -1, fn_1_10480); +} + +void fn_1_10480(omObjData *arg0) +{ + CRotM[1].x = CRotM[0].x; + CRotM[1].y = CRotM[0].y; + CRotM[1].z = CRotM[0].z; + CenterM[1].x = CenterM[0].x; + CenterM[1].y = CenterM[0].y; + CenterM[1].z = CenterM[0].z; + CZoomM[1] = CZoomM[0]; +} + +void fn_1_1052C(void) { } + +s32 fn_1_10530(void) +{ + return lbl_1_bss_84; +} + +void fn_1_10540(s32 arg0, s32 arg1, s32 arg2, f32 arg3) +{ + StructData0 *temp_r31; + StructData0 *temp_r30; + + temp_r31 = &lbl_1_data_0[arg1]; + temp_r30 = &lbl_1_data_0[arg2]; + CRotM[arg0].x = fn_1_12544(arg3, temp_r31->unk00.x, temp_r30->unk00.x); + CRotM[arg0].y = fn_1_12544(arg3, temp_r31->unk00.y, temp_r30->unk00.y); + CRotM[arg0].z = fn_1_12544(arg3, temp_r31->unk00.z, temp_r30->unk00.z); + CenterM[arg0].x = temp_r31->unk0C.x + arg3 * (temp_r30->unk0C.x - temp_r31->unk0C.x); + CenterM[arg0].y = temp_r31->unk0C.y + arg3 * (temp_r30->unk0C.y - temp_r31->unk0C.y); + CenterM[arg0].z = temp_r31->unk0C.z + arg3 * (temp_r30->unk0C.z - temp_r31->unk0C.z); + CZoomM[arg0] = temp_r31->unk18 + arg3 * (temp_r30->unk18 - temp_r31->unk18); +} + +float lbl_1_data_8A4[] = { 95.0f, 95.0f, 135.0f, 95.0f, 95.0f, 125.0f, 135.0f, 125.0f }; + +void fn_1_106D8(s32 arg0) +{ + float var_f31; + StructBssBCData *var_r30; + s32 var_r29; + + if (lbl_1_bss_90 != arg0) { + CRotM->x = lbl_1_data_38[arg0].unk00.x; + CRotM->y = lbl_1_data_38[arg0].unk00.y; + CRotM->z = lbl_1_data_38[arg0].unk00.z; + CenterM->x = lbl_1_data_38[arg0].unk0C.x; + CenterM->y = lbl_1_data_38[arg0].unk0C.y; + CenterM->z = lbl_1_data_38[arg0].unk0C.z; + CZoomM[0] = lbl_1_data_38[arg0].unk18; + lbl_1_bss_80 = 0; + if (arg0 != 0) { + lbl_1_bss_7C = frand(); + } + else { + lbl_1_bss_7C = 0; + } + lbl_1_bss_90 = arg0; + } + var_r29 = lbl_1_bss_90; + switch (var_r29) { + case 0: + case 1: + case 2: + lbl_1_bss_80++; + if (lbl_1_bss_7C & 1) { + var_f31 = cosd((float)lbl_1_bss_80); + } + else { + var_f31 = -cosd((float)lbl_1_bss_80); + } + CRotM->y = 23.0f * var_f31 + lbl_1_data_38[arg0].unk00.y; + break; + case 3: + case 4: + case 5: + lbl_1_bss_80++; + if (lbl_1_bss_7C & 1) { + CRotM->y = lbl_1_data_38[arg0].unk00.y - 45.0f + 0.5f * lbl_1_bss_80; + } + else { + CRotM->y = lbl_1_data_38[arg0].unk00.y + 45.0f - 0.5f * lbl_1_bss_80; + } + break; + case 6: + case 7: + case 8: + if (lbl_1_bss_AC[var_r29 - 6] != NULL) { + var_r30 = lbl_1_bss_AC[var_r29 - 6]->data; + CenterM->y = lbl_1_data_8A4[var_r30->unk02]; + } + break; + case 9: + if (lbl_1_bss_B8 != NULL) { + var_r30 = lbl_1_bss_B8->data; + CenterM->x = lbl_1_bss_B8->trans.x; + CenterM->z = lbl_1_bss_B8->trans.z; + CenterM->y = lbl_1_data_8A4[var_r30->unk02]; + } + break; + } +} + +void fn_1_10BC8(void) +{ + Mtx44 sp64; + Mtx sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + GXColor spC; + CameraData *var_r31; + + var_r31 = &Hu3DCamera[0]; + if (var_r31->fov <= 0.0f) { + return; + } + C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); + GXSetProjection(sp64, GX_PERSPECTIVE); + GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + GXSetScissor(0, 0, 640, 480); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + spC.r = spC.g = spC.b = 0; + spC.a = 0xFF; + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetCullMode(GX_CULL_NONE); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + sp28.x = sp28.y = sp28.z = 0.0f; + sp1C.x = sp1C.y = 0.0f; + sp1C.z = -100.0f; + sp10.x = sp10.z = 0.0f; + sp10.y = 1.0f; + C_MTXLookAt(sp34, &sp28, &sp10, &sp1C); + GXLoadPosMtxImm(sp34, GX_PNMTX0); + sp28.x = 10000.0 * -sin(var_r31->fov / 2.0f) * 1.2f; + sp28.y = 10000.0 * -sin(var_r31->fov / 2.0f) * 0.8333333f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-sp28.x, -sp28.y, -10000.0f); + GXPosition3f32(sp28.x, -sp28.y, -10000.0f); + GXPosition3f32(sp28.x, sp28.y, -10000.0f); + GXPosition3f32(-sp28.x, sp28.y, -10000.0f); + GXEnd(); +} + +void fn_1_11008(StructBssD0Data *arg0, void *arg1, s16 arg2, GXTexWrapMode arg3, s32 arg4, s32 arg5) +{ + GXTexObj sp18; + StructBssD0Data *var_r31; + + var_r31 = arg0; + GXInitTexObj(&sp18, arg1, var_r31->unk00, var_r31->unk04, GX_TF_RGB5A3, arg3, arg3, GX_FALSE); + if (arg5 != 0) { + GXInitTexObjLOD(&sp18, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + else { + GXInitTexObjLOD(&sp18, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&sp18, arg2); +} + +s16 fn_1_11114(AnimData *arg0, s16 arg1) +{ + s16 var_r23; + s16 i; + ModelData *temp_r27; + StructM423_05 *var_r31; + StructM423_04 *var_r29; + Vec *var_r25; + float(*var_r28)[2]; + void *var_r24; + void *var_r22; + + var_r23 = Hu3DHookFuncCreate(fn_1_11900); + temp_r27 = &Hu3DData[var_r23]; + temp_r27->unk_120 = var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r31), temp_r27->unk_48); + var_r31->unk38 = arg0; + var_r31->unk26 = arg1; + var_r31->unk20 = 0; + var_r31->unk22 = 0; + var_r31->unk4C = NULL; + var_r31->unk50 = NULL; + var_r31->unk28 = 0; + var_r31->unk21 = 0; + var_r31->unk23 = 0; + var_r31->unk30 = 0; + var_r31->unk00 = var_r31->unk02 = 0; + var_r31->unk3C = var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(*var_r29), temp_r27->unk_48); + memset(var_r29, 0, arg1 * sizeof(*var_r29)); + for (i = 0; i < arg1; i++, var_r29++) { + var_r29->unk30 = 0.0f; + var_r29->unk34 = 0.0f; + var_r29->unk28 = 0.0f; + var_r29->unk2C = 1.0f; + var_r29->unk38.x = (frand7() - 64) * 20; + var_r29->unk38.y = (frand7() - 64) * 30; + var_r29->unk38.z = (frand7() - 64) * 20; + var_r29->unk44.r = var_r29->unk44.g = var_r29->unk44.b = var_r29->unk44.a = 0xFF; + var_r29->unk48 = 0; + } + var_r31->unk40 = var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(*var_r25) * 4, temp_r27->unk_48); + for (i = 0; i < arg1 * 4; i++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r31->unk44 = var_r28 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(*var_r28) * 4, temp_r27->unk_48); + for (i = 0; i < arg1; i++) { + (*var_r28)[0] = 0.0f; + (*var_r28)[1] = 0.0f; + var_r28++; + (*var_r28)[0] = 1.0f; + (*var_r28)[1] = 0.0f; + var_r28++; + (*var_r28)[0] = 1.0f; + (*var_r28)[1] = 1.0f; + var_r28++; + (*var_r28)[0] = 0.0f; + (*var_r28)[1] = 1.0f; + var_r28++; + } + var_r22 = var_r24 = HuMemDirectMallocNum(HEAP_DATA, 0x10000, temp_r27->unk_48); + DCFlushRange(var_r24, 0x10000); + GXBeginDisplayList(var_r22, 0x10000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg1 * 4); + for (i = 0; i < arg1; i++) { + GXPosition1x16(i * 4); + GXColor1x16(i); + GXTexCoord1x16(i * 4); + + GXPosition1x16(i * 4 + 1); + GXColor1x16(i); + GXTexCoord1x16(i * 4 + 1); + + GXPosition1x16(i * 4 + 2); + GXColor1x16(i); + GXTexCoord1x16(i * 4 + 2); + + GXPosition1x16(i * 4 + 3); + GXColor1x16(i); + GXTexCoord1x16(i * 4 + 3); + } + GXEnd(); + var_r31->unk34 = GXEndDisplayList(); + var_r31->unk48 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk34, temp_r27->unk_48); + memcpy(var_r31->unk48, var_r24, var_r31->unk34); + DCFlushRange(var_r31->unk48, var_r31->unk34); + HuMemDirectFree(var_r24); + return var_r23; +} + +s16 fn_1_115C4(s16 arg0) +{ + s32 temp_r24; + s16 var_r22; + s16 i; + ModelData *temp_r23; + ModelData *temp_r27; + StructM423_05 *temp_r26; + StructM423_05 *var_r31; + StructM423_04 *var_r30; + Vec *var_r25; + float(*var_r29)[2]; + + temp_r23 = &Hu3DData[arg0]; + temp_r26 = temp_r23->unk_120; + var_r22 = Hu3DHookFuncCreate(temp_r23->hook); + temp_r27 = &Hu3DData[var_r22]; + temp_r27->unk_120 = var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r31), temp_r27->unk_48); + var_r31->unk38 = temp_r26->unk38; + var_r31->unk26 = temp_r26->unk26; + temp_r24 = var_r31->unk26; + var_r31->unk20 = 0; + var_r31->unk22 = temp_r26->unk22; + var_r31->unk4C = NULL; + var_r31->unk50 = NULL; + var_r31->unk28 = 0; + var_r31->unk21 = 0; + var_r31->unk30 = 0; + var_r31->unk00 = var_r31->unk02 = 0; + var_r31->unk3C = var_r30 = HuMemDirectMallocNum(HEAP_DATA, temp_r24 * sizeof(*var_r30), temp_r27->unk_48); + for (i = 0; i < temp_r24; i++, var_r30++) { + var_r30->unk30 = 0.0f; + var_r30->unk34 = 0.0f; + var_r30->unk28 = 0.0f; + var_r30->unk2C = 1.0f; + var_r30->unk38.x = (frand7() - 64) * 20; + var_r30->unk38.y = (frand7() - 64) * 30; + var_r30->unk38.z = (frand7() - 64) * 20; + var_r30->unk44.r = var_r30->unk44.g = var_r30->unk44.b = var_r30->unk44.a = 0xFF; + var_r30->unk48 = 0; + } + var_r31->unk40 = var_r25 = HuMemDirectMallocNum(HEAP_DATA, temp_r24 * sizeof(*var_r25) * 4, temp_r27->unk_48); + for (i = 0; i < (temp_r24 * 4); i++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r31->unk44 = var_r29 = HuMemDirectMallocNum(HEAP_DATA, temp_r24 * sizeof(*var_r29) * 4, temp_r27->unk_48); + for (i = 0; i < temp_r24; i++) { + (*var_r29)[0] = 0.0f; + (*var_r29)[1] = 0.0f; + var_r29++; + (*var_r29)[0] = 1.0f; + (*var_r29)[1] = 0.0f; + var_r29++; + (*var_r29)[0] = 1.0f; + (*var_r29)[1] = 1.0f; + var_r29++; + (*var_r29)[0] = 0.0f; + (*var_r29)[1] = 1.0f; + var_r29++; + } + var_r31->unk34 = temp_r26->unk34; + var_r31->unk48 = temp_r26->unk48; + return var_r22; +} + +Vec lbl_1_data_8C4[] = { { -0.5f, 0.5f, 0.0f }, { 0.5f, 0.5f, 0.0f }, { 0.5f, -0.5f, 0.0f }, { -0.5f, -0.5f, 0.0f } }; + +float lbl_1_data_8F4[][2] = { { 0.0f, 0.0f }, { 0.25f, 0.0f }, { 0.25f, 0.25f }, { 0.0f, 0.25f } }; + +void fn_1_11900(ModelData *arg0, Mtx arg1) +{ + Mtx sp128; + Mtx spF8; + Mtx spC8; + Vec sp98[4]; + Vec sp68[4]; + Vec sp38[4]; + ROMtx sp8; + StructM423_05 *temp_r31; + StructM423_04 *var_r29; + Vec *var_r30; + float(*var_r28)[2]; + Vec *temp_r27; + Vec *temp_r24; + s16 var_r21; + s16 var_r20; + s16 var_r19; + void (*var_r18)(ModelData *, struct struct_m423_05 *, Mtx); + s16 i; + s16 j; + + temp_r31 = arg0->unk_120; + if (temp_r31->unk2C == GlobalCounter && shadowModelDrawF == 0) { + return; + } + if (temp_r31->unk50 && temp_r31->unk50 != arg0) { + fn_1_11900(temp_r31->unk50, arg1); + } + GXLoadPosMtxImm(arg1, GX_PNMTX0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + if (shadowModelDrawF != 0) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } + else { + var_r21 = temp_r31->unk38->bmp->dataFmt & 0xF; + if (var_r21 == 7 || var_r21 == 8) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + if (temp_r31->unk22 & 1) { + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } + else if (arg0->attr & 2) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(temp_r31->unk38, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + switch (temp_r31->unk20) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + if (HmfInverseMtxF3X3(arg1, sp128) == 0) { + MTXIdentity(sp128); + } + PSMTXReorder(sp128, sp8); + if (temp_r31->unk4C) { + var_r18 = temp_r31->unk4C; + var_r18(arg0, temp_r31, arg1); + } + var_r29 = temp_r31->unk3C; + var_r30 = temp_r31->unk40; + var_r28 = temp_r31->unk44; + PSMTXROMultVecArray(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; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } + else if (!var_r29->unk34) { + temp_r27 = sp98; + temp_r24 = sp38; + VECScale(temp_r24++, temp_r27, var_r29->unk30); + VECAdd(temp_r27++, &var_r29->unk38, var_r30++); + VECScale(temp_r24++, temp_r27, var_r29->unk30); + VECAdd(temp_r27++, &var_r29->unk38, var_r30++); + VECScale(temp_r24++, temp_r27, var_r29->unk30); + VECAdd(temp_r27++, &var_r29->unk38, var_r30++); + VECScale(temp_r24++, temp_r27, var_r29->unk30); + VECAdd(temp_r27++, &var_r29->unk38, var_r30++); + } + else { + VECScale(&lbl_1_data_8C4[0], &sp98[0], var_r29->unk30); + VECScale(&lbl_1_data_8C4[1], &sp98[1], var_r29->unk30); + VECScale(&lbl_1_data_8C4[2], &sp98[2], var_r29->unk30); + VECScale(&lbl_1_data_8C4[3], &sp98[3], var_r29->unk30); + MTXRotRad(spC8, 'Z', var_r29->unk34); + MTXConcat(sp128, spC8, spF8); + MTXMultVecArray(spF8, sp98, sp68, 4); + VECAdd(&sp68[0], &var_r29->unk38, var_r30++); + VECAdd(&sp68[1], &var_r29->unk38, var_r30++); + VECAdd(&sp68[2], &var_r29->unk38, var_r30++); + VECAdd(&sp68[3], &var_r29->unk38, var_r30++); + } + } + var_r29 = temp_r31->unk3C; + var_r28 = temp_r31->unk44; + if (!(temp_r31->unk22 & 2)) { + for (i = 0; i < temp_r31->unk26; i++, var_r29++) { + var_r20 = var_r29->unk48 & 3; + var_r19 = (var_r29->unk48 >> 2) & 3; + for (j = 0; j < 4; j++, var_r28++) { + (*var_r28)[0] = 0.25f * var_r20 + lbl_1_data_8F4[j][0]; + (*var_r28)[1] = 0.25f * var_r19 + lbl_1_data_8F4[j][1]; + } + } + } + else { + for (i = 0; i < temp_r31->unk26; i++, var_r29++) { + for (j = 0; j < 4; j++, var_r28++) { + (*var_r28)[0] = 4.0f * lbl_1_data_8F4[j][0]; + (*var_r28)[1] = 4.0f * lbl_1_data_8F4[j][1]; + } + } + } + DCFlushRangeNoSync(temp_r31->unk40, temp_r31->unk26 * sizeof(*temp_r31->unk40) * 4); + DCFlushRangeNoSync(temp_r31->unk44, temp_r31->unk26 * sizeof(*temp_r31->unk44) * 4); + DCFlushRangeNoSync(temp_r31->unk3C, temp_r31->unk26 * sizeof(*temp_r31->unk3C)); + PPCSync(); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r31->unk40, 12); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &temp_r31->unk3C->unk44, 76); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r31->unk44, 8); + GXCallDisplayList(temp_r31->unk48, temp_r31->unk34); + if (shadowModelDrawF == 0) { + if (!(temp_r31->unk21 & 2)) { + temp_r31->unk28++; + } + if (temp_r31->unk30 != 0 && temp_r31->unk30 <= temp_r31->unk28) { + if (temp_r31->unk21 & 1) { + temp_r31->unk28 = 0; + } + temp_r31->unk28 = temp_r31->unk30; + } + temp_r31->unk2C = GlobalCounter; + } +} + +float fn_1_121DC(float arg0, float arg1) +{ + float var_f31; + + if (arg0 >= 360.0f) { + arg0 -= 360.0f; + } + else if (arg0 < 0.0f) { + arg0 += 360.0f; + } + if (arg1 >= 360.0f) { + arg1 -= 360.0f; + } + else if (arg1 < 0.0f) { + arg1 += 360.0f; + } + var_f31 = arg0 - arg1; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + else if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +float fn_1_122F4(float arg0, float arg1, float arg2) +{ + float var_f30; + float var_f31; + + if (arg0 >= 360.0) { + arg0 -= 360.0; + } + else if (arg0 < 0.0) { + arg0 += 360.0; + } + if (arg1 >= 360.0) { + arg1 -= 360.0; + } + else if (arg1 < 0.0) { + arg1 += 360.0; + } + var_f30 = arg0 - arg1 + 360.0; + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= arg2) { + var_f31 = var_f30; + } + else { + var_f31 = arg2; + } + } + else { + if (360.0 - var_f30 <= arg2) { + var_f31 = -(360.0 - var_f30); + } + else { + var_f31 = -arg2; + } + } + var_f31 += arg1; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + } + else if (var_f31 < 0.0) { + var_f31 += 360.0; + } + return var_f31; +} + +float fn_1_12544(float arg0, float arg1, float arg2) +{ + float var_f28; + + var_f28 = fn_1_121DC(arg2, arg1); + return fn_1_122F4(arg2, arg1, fabs(var_f28 * arg0)); +} + +void fn_1_1293C(Mtx arg0, Vec *arg1) +{ + Vec sp8; + + sp8.x = arg0[0][0] * arg1->x + arg0[0][1] * arg1->y + arg0[0][2] * arg1->z; + sp8.y = arg0[1][0] * arg1->x + arg0[1][1] * arg1->y + arg0[1][2] * arg1->z; + sp8.z = arg0[2][0] * arg1->x + arg0[2][1] * arg1->y + arg0[2][2] * arg1->z; + *arg1 = sp8; +} + +void fn_1_129F0(Vec *arg0, Vec *arg1, Vec *arg2, float *arg3) +{ + Vec sp18; + Vec spC; + float var_f30; + float var_f29; + + sp18.x = arg1->x - arg0->x; + sp18.y = arg1->y - arg0->y; + sp18.z = arg1->z - arg0->z; + spC.x = arg2->x - arg1->x; + spC.y = arg2->y - arg1->y; + spC.z = arg2->z - arg1->z; + arg3[0] = sp18.y * spC.z - sp18.z * spC.y; + arg3[1] = sp18.z * spC.x - sp18.x * spC.z; + arg3[2] = sp18.x * spC.y - sp18.y * spC.x; + var_f29 = arg3[0] * arg3[0] + arg3[1] * arg3[1] + arg3[2] * arg3[2]; + var_f30 = sqrtf(var_f29); + if (var_f30 != 0.0f) { + var_f30 = 1.0f / var_f30; + } + else { + var_f30 = 0.0f; + } + arg3[0] *= var_f30; + arg3[1] *= var_f30; + arg3[2] *= var_f30; + arg3[3] = -(arg3[0] * arg0->x + arg3[1] * arg0->y + arg3[2] * arg0->z); +} + +s32 fn_1_12C6C(Vec *arg0, Vec *arg1, float *arg2) +{ + float temp_f31; + float temp_f30; + + temp_f31 = arg0->x * arg2[0] + arg0->y * arg2[1] + arg0->z * arg2[2] + arg2[3]; + temp_f30 = arg1->x * arg2[0] + arg1->y * arg2[1] + arg1->z * arg2[2] + arg2[3]; + if (temp_f31 <= 0.0f && temp_f30 > 0.0f) { + return 1; + } + if (temp_f31 >= 0.0f && temp_f30 < 0.0f) { + return -1; + } + return 0; +} + +float fn_1_12D6C(Vec *arg0, Vec *arg1, s32 arg2, float arg3, float arg4) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + switch (arg2) { + case 0: + var_f31 = arg0->y - arg3; + var_f30 = arg0->z - arg4; + var_f29 = arg1->y - arg3; + var_f28 = arg1->z - arg4; + break; + case 1: + var_f31 = arg0->x - arg3; + var_f30 = arg0->z - arg4; + var_f29 = arg1->x - arg3; + var_f28 = arg1->z - arg4; + break; + case 2: + var_f31 = arg0->x - arg3; + var_f30 = arg0->y - arg4; + var_f29 = arg1->x - arg3; + var_f28 = arg1->y - arg4; + break; + } + var_f27 = -(var_f30 * var_f29 - var_f31 * var_f28); + return var_f27; +} + +u8 lbl_1_data_914[][2] = { { 0, 1 }, { 1, 2 }, { 2, 0 } }; + +float fn_1_12E68(Vec *arg0, Vec *arg1, s32 arg2) +{ + float var_f31; + float var_f30; + float var_f29; + s32 i; + + switch (arg2) { + case 0: + var_f31 = arg1->y; + var_f30 = arg1->z; + break; + case 1: + var_f31 = arg1->x; + var_f30 = arg1->z; + break; + case 2: + var_f31 = arg1->x; + var_f30 = arg1->y; + break; + } + var_f29 = fn_1_12D6C(&arg0[lbl_1_data_914[0][0]], &arg0[lbl_1_data_914[0][1]], arg2, var_f31, var_f30); + if (var_f29 > 0.0f) { + for (i = 1; i < 3; i++) { + var_f29 = fn_1_12D6C(&arg0[lbl_1_data_914[i][0]], &arg0[lbl_1_data_914[i][1]], arg2, var_f31, var_f30); + if (var_f29 == 0.0f) { + return 1.0f; + } + if (var_f29 < 0.0f) { + return 0.0f; + } + } + return 1.0f; + } + else { + for (i = 1; i < 3; i++) { + var_f29 = fn_1_12D6C(&arg0[lbl_1_data_914[i][0]], &arg0[lbl_1_data_914[i][1]], arg2, var_f31, var_f30); + if (var_f29 == 0.0f) { + return -1.0f; + } + if (var_f29 > 0.0f) { + return 0.0f; + } + } + return -1.0f; + } +} + +void fn_1_1334C(float *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f30; + float temp_f29; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + float spC; + float var_f28; + + temp_f26 = arg0[0]; + temp_f25 = arg0[1]; + temp_f24 = arg0[2]; + var_f19 = arg3->x; + var_f18 = arg3->y; + spC = arg3->z; + temp_f31 = arg2->x; + temp_f30 = arg2->y; + temp_f29 = arg2->z; + var_f22 = arg1->x; + var_f21 = arg1->y; + var_f20 = arg1->z; + var_f28 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30 + temp_f29 * temp_f29); + if (var_f28 != 0.0f) { + var_f28 = 1.0f / var_f28; + } + temp_f31 *= var_f28; + temp_f30 *= var_f28; + temp_f29 *= var_f28; + var_f28 = temp_f26 * temp_f31 + temp_f25 * temp_f30 + temp_f24 * temp_f29; + if (var_f28 != 0.0f) { + var_f28 = -(temp_f26 * (var_f22 - var_f19) + temp_f25 * (var_f21 - var_f18) + temp_f24 * (var_f20 - spC)) / var_f28; + } + else { + var_f28 = 0.0f; + } + arg4->x = arg1->x + var_f28 * arg2->x; + arg4->y = arg1->y + var_f28 * arg2->y; + arg4->z = arg1->z + var_f28 * arg2->z; +} + +float fn_1_1367C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, f32 *arg4) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float temp_f31; + + arg0->z = 0.0f; + arg1->z = 0.0f; + arg2->z = 0.0f; + VECSubtract(arg1, arg0, &sp2C); + VECSubtract(arg2, arg0, &sp20); + temp_f31 = (sp2C.x * sp20.x + sp2C.y * sp20.y) / (sp2C.x * sp2C.x + sp2C.y * sp2C.y); + if (arg4 != NULL) { + *arg4 = temp_f31; + } + VECScale(&sp2C, &sp14, temp_f31); + VECAdd(&sp2C, &sp14, &sp38); + if (arg3 != NULL) { + *arg3 = sp38; + } + VECSubtract(arg2, &sp38, &sp8); + return VECMag(&sp8); +} + +s32 fn_1_137C4(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, float arg4, s32 arg5) +{ + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + f32 var_f31; + + VECAdd(arg1, arg2, &sp28); + *arg3 = sp28; + VECNormalize(arg2, &sp1C); + VECScale(&sp1C, &sp1C, arg4); + VECAdd(arg1, &sp1C, &sp40); + VECAdd(&sp28, &sp1C, &sp34); + VECNormalize(arg2, &sp1C); + VECScale(&sp1C, &sp10, -arg4); + switch (arg5) { + case 0: + if (sp40.y >= arg0[0].y && sp34.y < arg0[0].y) { + if (sp1C.y == 0.0f) { + var_f31 = 0.0f; + } + else { + var_f31 = (arg0[0].y - arg1->y) / sp1C.y; + } + temp_f30 = arg1->x + var_f31 * sp1C.x; + temp_f28 = arg1->z + var_f31 * sp1C.z; + if (temp_f30 >= arg0[0].x && temp_f30 <= arg0[2].x && temp_f28 >= arg0[0].z && temp_f28 <= arg0[2].z) { + arg3->x = temp_f30; + arg3->y = arg0[0].y + arg4 + 1.0f; + arg3->z = temp_f28; + VECAdd((Vec *)&arg3, &sp10, (Vec *)&arg3); + return 1; + } + } + break; + case 1: + if (sp40.y <= arg0[0].y && sp34.y > arg0[0].y) { + if (sp1C.y == 0.0f) { + var_f31 = 0.0f; + } + else { + var_f31 = (arg0[0].y - arg1->y) / sp1C.y; + } + temp_f30 = arg1->x + var_f31 * sp1C.x; + temp_f28 = arg1->z + var_f31 * sp1C.z; + if (temp_f30 >= arg0[0].x && temp_f30 <= arg0[2].x && temp_f28 <= arg0[0].z && temp_f28 >= arg0[2].z) { + arg3->x = temp_f30; + arg3->y = arg0[0].y - arg4 - 1.0f; + arg3->z = temp_f28; + VECAdd((Vec *)&arg3, &sp10, (Vec *)&arg3); + return 1; + } + } + break; + case 2: + if (sp40.x <= arg0[0].x && sp34.x > arg0[0].x) { + if (sp1C.x == 0.0f) { + var_f31 = 0.0f; + } + else { + var_f31 = (arg0[0].x - arg1->x) / sp1C.x; + } + temp_f29 = arg1->y + var_f31 * sp1C.y; + temp_f28 = arg1->z + var_f31 * sp1C.z; + if (temp_f29 <= arg0[0].y && temp_f29 >= arg0[2].y && temp_f28 >= arg0[0].z && temp_f28 <= arg0[2].z) { + arg3->x = arg0[0].x - arg4 - 1.0f; + arg3->y = temp_f29; + arg3->z = temp_f28; + VECAdd((Vec *)&arg3, &sp10, (Vec *)&arg3); + return 1; + } + } + break; + case 3: + if (sp40.x >= arg0[0].x && sp34.x < arg0[0].x) { + if (sp1C.x == 0.0f) { + var_f31 = 0.0f; + } + else { + var_f31 = (arg0[0].x - arg1->x) / sp1C.x; + } + temp_f29 = arg1->y + var_f31 * sp1C.y; + temp_f28 = arg1->z + var_f31 * sp1C.z; + if (temp_f29 <= arg0[0].y && temp_f29 >= arg0[2].y && temp_f28 <= arg0[0].z && temp_f28 >= arg0[2].z) { + arg3->x = arg0[0].x + arg4 + 1.0f; + arg3->y = temp_f29; + arg3->z = temp_f28; + VECAdd((Vec *)&arg3, &sp10, (Vec *)&arg3); + return 1; + } + } + break; + case 4: + if (sp40.z >= arg0[0].z && sp34.z < arg0[0].z) { + if (sp1C.z == 0.0f) { + var_f31 = 0.0f; + } + else { + var_f31 = (arg0[0].z - arg1->z) / sp1C.z; + } + temp_f30 = arg1->x + var_f31 * sp1C.x; + temp_f29 = arg1->y + var_f31 * sp1C.y; + if (temp_f30 >= arg0[0].x && temp_f30 <= arg0[2].x && temp_f29 <= arg0[0].y && temp_f29 >= arg0[2].y) { + arg3->x = temp_f30; + arg3->y = temp_f29; + arg3->z = arg0[0].z + arg4 + 1.0f; + VECAdd((Vec *)&arg3, &sp10, (Vec *)&arg3); + return 1; + } + } + break; + case 5: + if (sp40.z <= arg0[0].z && sp34.z > arg0[0].z) { + if (sp1C.z == 0.0f) { + var_f31 = 0.0f; + } + else { + var_f31 = (arg0[0].z - arg1->z) / sp1C.z; + } + temp_f30 = arg1->x + var_f31 * sp1C.x; + temp_f29 = arg1->y + var_f31 * sp1C.y; + if (temp_f30 <= arg0[0].x && temp_f30 >= arg0[2].x && temp_f29 <= arg0[0].y && temp_f29 >= arg0[2].y) { + arg3->x = temp_f30; + arg3->y = temp_f29; + arg3->z = arg0[0].z - arg4 - 1.0f; + VECAdd((Vec *)&arg3, &sp10, (Vec *)&arg3); + return 1; + } + } + break; + } + return 0; +} diff --git a/src/REL/m424Dll/ball.c b/src/REL/m424Dll/ball.c new file mode 100644 index 00000000..c8c3177e --- /dev/null +++ b/src/REL/m424Dll/ball.c @@ -0,0 +1,1803 @@ +#include "REL/m424Dll.h" + +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "string.h" + +// STRUCT +typedef struct _M424DllBallStruct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 unkA; + char unkB[0x1]; + u8 unkC; + u8 unkD; + u8 unkE; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + s16 unk18; + s16 unk1A; + f32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + Vec unk34; + Vec unk40; + Vec unk4C; + Vec unk58; + void *unk64; // sizeof 0x40 + char unk68[0x3C]; + u8 unkA4; + void *unkA8; // sizeof 0x40 + char unkAC[0x3C]; + s32 unkE8; + s32 unkEC; +} M424DllBallStruct; // sizeof 0xF0 + +typedef struct _M424DllBallStruct3 { + u8 unk0; + M424DllBallStruct2 *unk4; + M424DllBallStruct2 *unk8; +} M424DllBallStruct3; + +typedef struct _M424BallStruct4 { + f32 unk0; + f32 unk4; + f32 unk8; + char unkC[0x8]; + f32 unk14; + f32 unk18; + char unk1C[0x8]; + f32 unk24; + f32 unk28; +} M424BallStruct4; + +// BSS +void *lbl_1_bss_5BC[0x20]; +omObjData *lbl_1_bss_5AC[4]; +omObjData *lbl_1_bss_594[6]; +M424DllBallStruct2 lbl_1_bss_60[9]; +s32 lbl_1_bss_5C; +u8 lbl_1_bss_58; + +// PROTO +f32 fn_1_25C0(void); +void fn_1_28A0(omObjData *object); +void fn_1_2E3C(omObjData *object); +void fn_1_31C0(omObjData *object); +void fn_1_37FC(omObjData *object); +void fn_1_4220(omObjData *object); +void fn_1_469C(omObjData *object); +u8 fn_1_48D0(omObjData *object, u8, u8); +void fn_1_4A90(s16); +void fn_1_6038(void); +void *fn_1_6078(s32); +void fn_1_61AC(void); +s32 fn_1_627C(void); +void fn_1_6230(s16, Mtx); +void fn_1_62D0(s32, u32 *); +f32 fn_1_640C(f32, f32, f32); +f32 fn_1_6D10(Vec, Vec, f32, Vec, Vec, f32); +f32 fn_1_709C(Vec, Vec, f32, f32); +f32 fn_1_7420(Vec, Vec, f32, f32); +void fn_1_77C4(Vec, Vec, Vec, f32, Vec *, Vec *); +void fn_1_79FC(Vec *, Vec *, f32, Vec *, Vec *, f32, f32); +void fn_1_7CA0(Vec, Vec, f32, Vec *); +void fn_1_8924(u8, u8); +void fn_1_8AA8(s32, s32); +s32 fn_1_8C78(s32, s32); +s32 fn_1_907C(Vec *, Vec *); + +void fn_1_2720(Process *arg0) +{ + u32 sp8[10]; + omObjData *var_r30; + s32 temp_r28; + s32 var_r29; + s32 var_r31; + + temp_r28 = frand() & 0x1F; + for (var_r31 = 0; var_r31 < temp_r28; var_r31++) { + fn_1_627C(); + } + fn_1_62D0(8, sp8); + sp8[8] = 8; + + for (var_r31 = 0, var_r29 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[var_r31].group != 0) { + var_r30 = omAddObjEx(arg0, 0x3E, 3, 11, 0, fn_1_28A0); + lbl_1_bss_5AC[var_r29] = var_r30; + var_r30->work[0] = var_r31; + var_r30->work[1] = sp8[var_r29]; + var_r29++; + } + } + + for (var_r31 = 0; var_r31 < 6; var_r29++, var_r31++) { + var_r30 = omAddObjEx(arg0, 0x3F, 2, 5, 0, fn_1_4220); + lbl_1_bss_594[var_r31] = var_r30; + var_r30->work[0] = var_r31; + var_r30->work[1] = sp8[var_r29]; + } + Hu3DLayerHookSet(7, fn_1_4A90); + fn_1_6038(); +} + +void fn_1_2880(void) +{ + fn_1_61AC(); +} + +u32 lbl_1_data_150[11] = { 0, 2, 3, 8, 10, 9, 20, 22, 23, 24, 0x370021 }; +Vec lbl_1_data_17C[4] = { { -100.0f, 200.0f, -100.0f }, { 300.0f, 200.0f, -100.0f }, { -300.0f, 200.0f, 300.0f }, { 300.0f, 200.0f, 0.0f } }; + +void fn_1_28A0(omObjData *object) +{ + Vec sp8; + f32 temp_f31; + f32 temp_f30; + M424DllBallStruct *var_r31; + s32 var_r29; + s32 temp_r28; + s32 var_r27; + + object->data = var_r31 = fn_1_6078(0xF0); + memset(var_r31, 0, 0xF0); + var_r31->unk0 = object->work[0]; + var_r31->unk1 = GWPlayerCfg[var_r31->unk0].character; + var_r31->unk2 = GWPlayerCfg[var_r31->unk0].group; + var_r31->unk3 = 0; + var_r31->unk4 = GWPlayerCfg[var_r31->unk0].pad_idx; + var_r31->unk5 = GWPlayerCfg[var_r31->unk0].iscom; + var_r31->unk6 = GWPlayerCfg[var_r31->unk0].diff; + var_r31->unk18 = var_r31->unk1A = 0; + var_r31->unk30 = 1.0f; + var_r31->unk7 = 1; + var_r31->unkC = 1; + var_r31->unkD = 0; + var_r31->unkA = 0; + var_r31->unkA4 = 0; + var_r31->unkE = 0; + memset(&var_r31->unk64, 0, 0x40); + var_r31->unkE8 = 0; + var_r31->unkEC = -1; + temp_r28 = object->work[1]; + temp_f31 = 40.0f; + temp_f31 = (temp_f31 * temp_r28) + (temp_f31 * (fn_1_627C() / 65536.0f)) + 105.0f; + temp_f30 = 125.0f; + temp_f30 = (temp_f30 * (temp_r28 & 1)) + (100.0f + (250.0f + (temp_f30 * (fn_1_627C() / 65536.0f)))); + sp8.x = temp_f30 * sind(temp_f31); + sp8.y = 200.0f; + sp8.z = temp_f30 * cosd(temp_f31); + var_r31->unk34 = sp8; + var_r31->unk4C.x = var_r31->unk4C.y = var_r31->unk4C.z = 0.0f; + var_r31->unk40.x = var_r31->unk40.y = var_r31->unk40.z = 0.0f; + var_r31->unk1C = 0.8f; + var_r31->unk24 = var_r31->unk40.y; + var_r31->unk2C = 1.0f; + var_r31->unk28 = 0.0f; + var_r31->unk20 = 0.0f; + memset(&var_r31->unkA8, 0, 0x40); + object->model[0] = var_r27 = CharModelCreate(var_r31->unk1, 8); + Hu3DModelAttrSet(var_r27, 0x40000001); + CharModelStepTypeSet(var_r31->unk1, 1); + CharModelLayerSetAll(2); + for (var_r29 = 0; var_r29 < 11; var_r29++) { + if (lbl_1_data_150[var_r29] + 0xFFC90000 != 0x21) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk1, lbl_1_data_150[var_r29]); + } + else if (var_r31->unk1 == 5) { + object->motion[var_r29] + = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(var_r31->unk1 + lbl_1_data_150[var_r29], 0x10000000, HEAP_DATA)); + } + else { + object->motion[var_r29] = object->motion[0]; + } + if (lbl_1_data_150[var_r29] == 0x16 || lbl_1_data_150[var_r29] == 0x14) { + CharModelVoiceEnableSet(var_r31->unk1, object->motion[var_r29], 0); + } + } + CharModelMotionDataClose(var_r31->unk1); + CharModelMotionSet(var_r31->unk1, object->motion[var_r31->unk18]); + omSetTra(object, var_r31->unk34.x, var_r31->unk34.y, var_r31->unk34.z); + omSetRot(object, var_r31->unk40.x, var_r31->unk40.y, var_r31->unk40.z); + omSetSca(object, var_r31->unk1C, var_r31->unk1C, var_r31->unk1C); + object->model[1] = fn_1_48D0(object, var_r31->unk1, 1); + object->func = fn_1_2E3C; +} + +void fn_1_2E38(void) { } + +void fn_1_2E3C(omObjData *object) +{ + s32 temp_r29; + M424DllBallStruct *temp_r31; + + temp_r29 = object->model[0]; + temp_r31 = object->data; + if (temp_r31->unk7 != 0) { + if ((fn_1_FE0() == 4) && ((temp_r31->unk7 & 2) == 0)) { + if (temp_r31->unk5 != 0) { + fn_1_31C0(object); + } + else { + temp_r31->unk10 = HuPadStkX[temp_r31->unk4]; + temp_r31->unk12 = HuPadStkY[temp_r31->unk4]; + temp_r31->unk14 = HuPadBtnDown[temp_r31->unk4]; + temp_r31->unk16 = HuPadBtn[temp_r31->unk4]; + } + } + else { + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + } + switch (temp_r31->unk8) { + case 1: + temp_r31->unkC = 1; + if (fn_1_FE0() == 6) { + fn_1_8924(object->model[1], 5); + } + break; + case 5: + temp_r31->unkC = 0; + temp_r31->unk1C *= 1.1f; + if (temp_r31->unk1C >= 1.0f) { + temp_r31->unk1C = 1.0f; + } + temp_r31->unk40.y = fn_1_640C(temp_r31->unk40.y, 0.0f, 0.9f); + if (temp_r31->unk34.y <= 200.0f) { + temp_r31->unk34.y = 200.0f; + temp_r31->unkC = 1; + } + Hu3DModelShadowSet(temp_r29); + break; + case 4: + temp_r31->unk20 = 0.0f; + temp_r31->unk4C.y = 0.0f; + temp_r31->unk7 |= 2; + break; + case 6: + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + temp_r31->unk1C = 1.0f; + temp_r31->unk40.y = temp_r31->unk24 = 0.0f; + if (temp_r31->unk34.y <= 50.0f) { + temp_r31->unkC = 1; + temp_r31->unk20 = 0.0f; + temp_r31->unk4C.y = 0.0f; + temp_r31->unk18 = 7; + temp_r31->unk34.x += fn_1_25C0(); + temp_r31->unk34.y = 50.0f; + } + else { + temp_r31->unkC = 0; + temp_r31->unk20 += 3.0f; + temp_r31->unk4C.y += -1.46f; + if (temp_r31->unk1 != 5) { + temp_r31->unk18 = 6; + } + else { + temp_r31->unk18 = 0xA; + } + } + break; + } + if ((fn_1_FE0() == 7) && ((temp_r31->unk7 & 2) == 0)) { + temp_r31->unk18 = 8; + } + fn_1_37FC(object); + } +} + +void fn_1_31C0(omObjData *object) +{ + Vec sp10; + s32 spC; + s16 sp8; + f32 temp_f31; + f32 temp_f30; + M424DllBallStruct *temp_r31; + s16 temp_r30; + s16 var_r29; + s16 var_r28; + s16 var_r26; + s16 var_r25; + + temp_r31 = object->data; + spC = object->model[0]; + sp8 = temp_r31->unk18; + temp_r30 = temp_r31->unk6; + + var_r29 = var_r28 = var_r26 = var_r25 = 0; + switch (temp_r31->unk8) { + case 2: + break; + case 1: + if ((fn_1_627C() & 0x1F) == 0) { + temp_f31 = atan2d(temp_r31->unk34.x, temp_r31->unk34.z); + temp_f31 += ((30.0f - (5.0f * temp_r30)) * ((fn_1_627C() - 0x8000) / 32768.0f)); + sp10.x = sind(temp_f31); + sp10.z = cosd(temp_f31); + temp_f30 = fn_1_213C(); + if ((temp_f31 > 70.0f) && (temp_f31 < 100.0f)) { + if (temp_f30 < 0.0f) { + var_r29 = (-sp10.z * (48.0f + (6.0f * temp_r30))); + var_r28 = (-sp10.x * (48.0f + (6.0f * temp_r30))); + } + else { + var_r29 = (sp10.z * (48.0f + (6.0f * temp_r30))); + var_r28 = (sp10.x * (48.0f + (6.0f * temp_r30))); + } + } + else if (temp_f30 < 0.0f) { + var_r29 = (sp10.z * (48.0f + (6.0f * temp_r30))); + var_r28 = (sp10.x * (48.0f + (6.0f * temp_r30))); + } + else { + var_r29 = (-sp10.z * (48.0f + (6.0f * temp_r30))); + var_r28 = (-sp10.x * (48.0f + (6.0f * temp_r30))); + } + } + else { + var_r29 = temp_r31->unk10; + var_r28 = temp_r31->unk12; + } + break; + case 3: + if ((fn_1_627C() & 0x1F) == 0) { + temp_f31 = 180.0f * ((fn_1_627C() - 0x8000) / 32768.0f); + sp10.x = sind(temp_f31); + sp10.z = cosd(temp_f31); + var_r29 = (48.0f * sp10.x); + var_r28 = (48.0f * sp10.z); + } + else { + var_r29 = temp_r31->unk10; + var_r28 = temp_r31->unk12; + } + break; + } + temp_r31->unk10 = var_r29; + temp_r31->unk12 = var_r28; + temp_r31->unk14 = var_r26; + temp_r31->unk16 = var_r25; +} + +void fn_1_37FC(omObjData *object) +{ + s16 spA; + s16 sp8; + f32 var_f30; + f32 var_f28; + f32 temp_f27; + M424DllBallStruct *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 var_r28; + s16 var_r27; + s32 temp_r25; + + var_f30 = 1.0f; + temp_r31 = object->data; + temp_r25 = object->model[0]; + var_r28 = temp_r31->unk18; + temp_r31->unk58 = temp_r31->unk34; + temp_r30 = temp_r31->unk10; + temp_r29 = temp_r31->unk12; + spA = temp_r31->unk14; + sp8 = temp_r31->unk16; + switch (temp_r31->unk18) { + case 0: + case 1: + case 2: + temp_r31->unk20 = (0.025f * sqrtf((temp_r30 * temp_r30) + (temp_r29 * temp_r29))); + if (temp_r31->unk20 > 0.01f) { + if (temp_r31->unk20 >= 6.0f) { + var_r28 = 2; + var_r27 = 1; + } + else { + var_r28 = 1; + var_r27 = 1; + } + var_f28 = atan2d(temp_r30, -temp_r29); + temp_r31->unk40.y = fn_1_640C(temp_r31->unk40.y, var_f28, 0.5f); + temp_r31->unk24 = temp_r31->unk40.y; + temp_r31->unk28++; + if (temp_r31->unk28 >= (0.5f * temp_r31->unk2C)) { + temp_r31->unk28 -= 0.5f * temp_r31->unk2C; + } + temp_r31->unk20 *= 1.0 + 0.25 * cosd(90.0f * (temp_r31->unk28 / (0.5f * temp_r31->unk2C))); + } + else { + temp_r31->unk28 = 0.0f; + temp_r31->unk20 = 0.0f; + var_r28 = 0; + var_r27 = 1; + } + if (temp_r31->unkC != 0) { + temp_r31->unk4C.y = -2.4333334f; + } + else { + temp_r31->unk4C.y += -2.4333334f; + } + break; + case 3: + var_r27 = 0; + if ((Hu3DData[temp_r25].unk_0C == -1) && (CharModelMotionEndCheck(temp_r31->unk1) != 0)) { + temp_r31->unk4C.y += -2.4333334f; + } + else { + temp_r31->unk4C.y = 0.0f; + } + if (temp_r31->unkC != 0) { + if (temp_r31->unkD != 0) { + temp_r31->unk4C.y = 0.0f; + temp_r31->unkD = 0; + var_r28 = 5; + var_r27 = 0; + } + else { + temp_r31->unk4C.y *= -0.1f; + temp_r31->unkC = 0; + var_r28 = 4; + var_r27 = 0; + } + } + break; + case 4: + temp_r31->unk4C.y += -2.4333334f; + if ((temp_r31->unkC != 0) && (CharModelMotionEndCheck(temp_r31->unk1) != 0)) { + var_r28 = 5; + var_r27 = 0; + } + break; + case 5: + if (CharModelMotionEndCheck(temp_r31->unk1) != 0) { + var_r28 = 0; + var_r27 = 1; + } + break; + case 6: + var_r28 = 6; + var_r27 = 0; + if (temp_r31->unk1 == 7) { + var_f30 = 0.85f; + temp_r31->unk30 = 0.9f; + } + break; + case 7: + var_r28 = 7; + var_r27 = 1; + if (temp_r31->unkE8 == 1) { + temp_r31->unkEC = HuAudCharVoicePlay(temp_r31->unk1, 0x11A); + } + else if ((temp_r31->unkE8 > 90.0f) && (temp_r31->unkEC != -1)) { + HuAudFXStop(temp_r31->unkEC); + temp_r31->unkEC = -1; + } + temp_r31->unkE8++; + break; + case 8: + case 9: + var_r27 = 0; + temp_r31->unk4C.y = -2.4333334f; + break; + case 10: + var_r28 = 10; + var_r27 = 4; + var_f30 = 0.8f; + temp_r31->unk30 = 0.85f; + if ((var_r28 == temp_r31->unk18) && (Hu3DMotionShiftIDGet(temp_r25) != -1)) { + temp_f27 = Hu3DMotionMaxTimeGet(temp_r25); + if (Hu3DMotionTimeGet(temp_r25) >= temp_f27) { + var_r28 = 7; + var_r27 = 1; + } + } + break; + } + if ((temp_r31->unk7 & 4) != 0) { + if ((temp_r31->unkA & 2) != 0) { + Hu3DModelAttrSet(temp_r25, 1); + } + else { + Hu3DModelAttrReset(temp_r25, 1); + } + if (--temp_r31->unkA == 0) { + temp_r31->unk7 &= ~4; + } + } + temp_r31->unk4C.x = temp_r31->unk20 * sind(temp_r31->unk24); + temp_r31->unk4C.z = temp_r31->unk20 * cosd(temp_r31->unk24); + temp_r31->unk34.x += temp_r31->unk4C.x; + if (temp_r31->unkC == 0) { + temp_r31->unk34.y += temp_r31->unk4C.y; + } + temp_r31->unk34.z += temp_r31->unk4C.z; + if (var_r28 != temp_r31->unk1A) { + temp_r31->unk1A = var_r28; + temp_r31->unk18 = var_r28; + CharModelMotionShiftSet(temp_r31->unk1, object->motion[temp_r31->unk18], 0.0f, 8.0f, var_r27); + temp_r31->unk2C = CharModelMotionMaxTimeGet(temp_r31->unk1); + } + if (temp_r31->unk30 != var_f30) { + if (var_f30 > temp_r31->unk30) { + if ((temp_r31->unk30 += 0.05f) > var_f30) { + temp_r31->unk30 = var_f30; + } + } + if (var_f30 < temp_r31->unk30) { + if ((temp_r31->unk30 -= 0.05f) < var_f30) { + temp_r31->unk30 = var_f30; + } + } + temp_r31->unk1C = temp_r31->unk30; + } + omSetTra(object, temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z); + omSetRot(object, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + omSetSca(object, temp_r31->unk1C, temp_r31->unk1C, temp_r31->unk1C); +} + +void fn_1_4220(omObjData *object) +{ + s32 sp14[3] = { 0x370013, 0x370014, 0x370015 }; + Vec sp8; + f32 temp_f31; + f32 temp_f30; + M424DllBallStruct *var_r31; + s32 var_r29; + s32 temp_r28; + s32 var_r27; + + object->model[0] = var_r27 = Hu3DModelCreateFile(0x370012); + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + object->motion[var_r29] = Hu3DJointMotion(var_r27, HuDataSelHeapReadNum(sp14[var_r29], 0x10000000, HEAP_DATA)); + } + Hu3DMotionSet(var_r27, object->motion[0]); + Hu3DModelAttrSet(var_r27, 0x40000001); + var_r31 = fn_1_6078(0xF0); + object->data = var_r31; + memset(var_r31, 0, 0xF0); + var_r31->unk0 = object->work[0]; + var_r31->unk1 = 0xFF; + var_r31->unk2 = 0xFF; + var_r31->unk3 = 0; + var_r31->unk4 = 0xFF; + var_r31->unk5 = 0xFF; + var_r31->unk6 = 0xFF; + var_r31->unk18 = var_r31->unk1A = 0; + var_r31->unk7 = 1; + var_r31->unkC = 1; + var_r31->unkD = 0; + var_r31->unkA = 0; + var_r31->unkA4 = 0; + var_r31->unkE = 0; + memset(&var_r31->unk64, 0, 0x40); + temp_r28 = object->work[1]; + if (temp_r28 == 8) { + sp8.x = 350.0f; + sp8.y = 200.0f; + sp8.z = 50.0f; + } + else { + temp_f31 = 40.0f; + temp_f31 = 105.0f + ((temp_f31 * temp_r28) + (temp_f31 * (fn_1_627C() / 65536.0f))); + temp_f30 = 125.0f; + temp_f30 = (temp_f30 * (temp_r28 & 1)) + (100.0f + (250.0f + (temp_f30 * (fn_1_627C() / 65536.0f)))); + sp8.x = temp_f30 * sind(temp_f31); + sp8.y = 200.0f; + sp8.z = temp_f30 * cosd(temp_f31); + } + var_r31->unk34 = sp8; + var_r31->unk4C.x = var_r31->unk4C.y = var_r31->unk4C.z = 0.0f; + var_r31->unk40.x = var_r31->unk40.y = var_r31->unk40.z = 0.0f; + var_r31->unk24 = var_r31->unk40.y; + var_r31->unk2C = 1.0f; + var_r31->unk28 = 0.0f; + var_r31->unk20 = 0.0f; + memset(&var_r31->unkA8, 0, 0x40); + omSetTra(object, var_r31->unk34.x, var_r31->unk34.y, var_r31->unk34.z); + omSetRot(object, var_r31->unk40.x, var_r31->unk40.y, var_r31->unk40.z); + omSetSca(object, 0.8f, 0.8f, 0.8f); + object->model[1] = fn_1_48D0(object, 8, 0); + object->func = fn_1_469C; +} + +fn_1_4698(void) { } + +void fn_1_469C(omObjData *object) +{ + s32 temp_r27; + s16 var_r28; + s16 var_r30; + M424DllBallStruct *temp_r31; + + temp_r31 = object->data; + temp_r27 = object->model[0]; + var_r30 = temp_r31->unk18; + temp_r31->unk58 = temp_r31->unk34; + + temp_r31->unk4C.x = temp_r31->unk4C.z = 0.0f; + switch (temp_r31->unk8) { /* irregular */ + case 3: + var_r30 = 2; + var_r28 = 1; + temp_r31->unk4C.y = -2.4333334f; + if ((fn_1_627C() & 0xF) == 0) { + temp_r31->unk24 = (180.0f * ((fn_1_627C() - 0x8000) / 32768.0f)); + } + break; + case 1: + var_r30 = 1; + var_r28 = 1; + temp_r31->unk4C.y = -2.4333334f; + if ((fn_1_627C() & 0x3F) == 0) { + temp_r31->unk24 = (180.0f * ((fn_1_627C() - 0x8000) / 32768.0f)); + } + break; + case 2: + var_r30 = 0; + var_r28 = 1; + + temp_r31->unk4C.x = temp_r31->unk4C.z = 0.0f; + temp_r31->unk4C.y += -0.97333336f; + break; + } + temp_r31->unk40.y = fn_1_640C(temp_r31->unk40.y, temp_r31->unk24, 0.95f); + if (var_r30 != temp_r31->unk1A) { + temp_r31->unk1A = var_r30; + temp_r31->unk18 = var_r30; + Hu3DMotionShiftSet(temp_r27, object->motion[temp_r31->unk18], 0.0f, 8.0f, (u32)var_r28); + temp_r31->unk2C = Hu3DMotionMaxTimeGet(temp_r31->unk1); + } +} + +u8 fn_1_48D0(omObjData *object, u8 arg1, u8 arg2) +{ + M424DllBallStruct2 *temp_r31; + s32 var_r30; + s32 var_r28; + + var_r28 = lbl_1_bss_58; + lbl_1_bss_58++; + temp_r31 = &lbl_1_bss_60[var_r28]; + memset(temp_r31, 0, 0x94); + temp_r31->unk0 = object; + var_r30 = Hu3DModelCreate(HuDataSelHeapReadNum((arg1 * 2) + 0x370000, 0x10000000, HEAP_DATA)); + temp_r31->unk8 = var_r30; + Hu3DModelLayerSet(var_r30, 2); + Hu3DModelShadowMapSet(var_r30); + Hu3DModelAttrSet(var_r30, 0x20000); + Hu3DModelHiliteMapSet(var_r30, HuSprAnimRead(HuDataReadNum(0x370016, 0x10000000))); + var_r30 = Hu3DModelCreate(HuDataSelHeapReadNum((arg1 * 2) + 0x370001, 0x10000000, HEAP_DATA)); + temp_r31->unkA = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowSet(var_r30); + MTXIdentity(temp_r31->unkC); + temp_r31->unk3C.x = object->trans.x; + temp_r31->unk3C.y = 100.0f + object->trans.y; + temp_r31->unk3C.z = object->trans.z; + temp_r31->unk54 = temp_r31->unk3C; + temp_r31->unk6C.x = temp_r31->unk6C.y = temp_r31->unk6C.z = 0.0f; + temp_r31->unk5 = arg2; + temp_r31->unk4 = 2; + temp_r31->unk6 = 0; + if (arg2 != 0) { + temp_r31->unk91 = arg1; + } + else { + temp_r31->unk91 = 0xFFU; + } + return var_r28; +} + +void fn_1_4A90(s16 arg0) +{ + Mtx sp50; + Mtx sp20; + Vec sp14; + Vec sp8; + f32 var_f31; + f32 var_f30; + M424DllBallStruct2 *var_r31; + M424DllBallStruct *temp_r30; + s32 var_r29; + + if (omPauseChk() == 0) { + var_r31 = lbl_1_bss_60; + var_f31 = fn_1_213C(); + mtxRot(sp20, 0.0f, var_f31, 0.0f); + + for (var_r29 = 0; var_r29 < lbl_1_bss_58; var_r29++, var_r31++) { + temp_r30 = var_r31->unk0->data; + var_r31->unk48 = var_r31->unk54; + var_r31->unk60 = var_r31->unk48; + var_r31->unk78.x = var_r31->unk78.y = var_r31->unk78.z = 0.0f; + switch (var_r31->unk4) { + case 1: + MTXTrans(sp50, var_r31->unk3C.x, var_r31->unk3C.y, var_r31->unk3C.z); + MTXConcat(sp20, sp50, sp50); + var_r31->unk48.x = sp50[0][3]; + var_r31->unk48.y = sp50[1][3]; + var_r31->unk48.z = sp50[2][3]; + VECSubtract(&var_r31->unk48, &var_r31->unk3C, &var_r31->unk78); + VECSubtract(&var_r31->unk3C, &var_r31->unk54, &sp14); + VECAdd(&temp_r30->unk4C, &sp14, &var_r31->unk84); + VECAdd(&var_r31->unk84, &var_r31->unk78, &var_r31->unk6C); + var_r31->unk84.y = 0.0f; + var_r31->unk4 = 2; + break; + case 3: + VECSubtract(&var_r31->unk3C, &var_r31->unk60, &var_r31->unk6C); + var_r31->unk84 = var_r31->unk6C; + break; + case 4: + var_r31->unk6C.y += -2.4333334f; + var_r31->unk6C.x = var_r31->unk6C.z = 0.0f; + var_r31->unk84 = var_r31->unk6C; + break; + case 2: + var_r31->unk6C.y = 0.0f; + var_r31->unk6C.x = var_r31->unk6C.z = 0.0f; + VECSubtract(&var_r31->unk3C, &var_r31->unk54, &sp14); + VECAdd(&temp_r30->unk4C, &sp14, &var_r31->unk84); + var_r31->unk6C = var_r31->unk84; + break; + case 5: + if ((var_r31->unk6 & 2) != 0) { + Hu3DModelAttrSet(var_r31->unk8, 1); + Hu3DModelAttrSet(var_r31->unkA, 1); + } + else { + Hu3DModelAttrReset(var_r31->unk8, 1); + Hu3DModelAttrReset(var_r31->unkA, 1); + } + if (++var_r31->unk6 >= 0x3C) { + var_r31->unk4 = 6; + } + break; + default: + var_r31->unk6C.x = var_r31->unk6C.y = var_r31->unk6C.z = 0.0f; + break; + } + } + fn_1_8AA8(0x20, 1); + var_r31 = lbl_1_bss_60; + for (var_r29 = 0; var_r29 < lbl_1_bss_58; var_r29++, var_r31++) { + if (var_r31->unk4 != 6) { + if (var_r31->unk4 == 1) { + VECSubtract(&var_r31->unk3C, &var_r31->unk48, &sp14); + sp8.x = sp14.z; + sp8.y = 0.0f; + sp8.z = -sp14.x; + var_f30 = VECMag(&sp8); + if (var_f30 > 0.01f) { + MTXRotAxisRad(sp50, &sp8, MTXDegToRad(var_f30)); + MTXConcat(sp20, sp50, sp50); + } + else { + MTXCopy(sp20, sp50); + } + MTXConcat(sp50, var_r31->unkC, var_r31->unkC); + fn_1_6230(var_r31->unk8, var_r31->unkC); + fn_1_6230(var_r31->unkA, var_r31->unkC); + } + if (var_r31->unk3C.y < 250.0f) { + var_r31->unk3C.y = 250.0f; + var_r31->unk4 = 6; + Hu3DModelAttrSet(var_r31->unk8, 1); + Hu3DModelAttrSet(var_r31->unkA, 1); + } + Hu3DModelPosSet(var_r31->unk8, var_r31->unk3C.x, var_r31->unk3C.y, var_r31->unk3C.z); + Hu3DModelPosSet(var_r31->unkA, var_r31->unk3C.x, var_r31->unk3C.y, var_r31->unk3C.z); + VECSubtract(&var_r31->unk3C, &var_r31->unk54, &sp14); + var_r31->unk6C = sp14; + var_r31->unk54 = var_r31->unk3C; + temp_r30 = var_r31->unk0->data; + temp_r30->unk8 = var_r31->unk4; + temp_r30->unk40.y += var_f31; + if (var_r31->unk4 != 5) { + temp_r30->unk34 = var_r31->unk3C; + temp_r30->unk34.y -= 80.0f; + omSetTra(var_r31->unk0, temp_r30->unk34.x, temp_r30->unk34.y, temp_r30->unk34.z); + omSetRot(var_r31->unk0, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z); + } + } + } + } +} + +void fn_1_5018(void) +{ + M424DllBallStruct3 sp27C[32]; + Vec sp270; + Vec sp264; + Vec sp258; + Vec sp24C; + Vec sp240; + Vec sp234; + Vec sp228; + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 temp_f28; + M424DllBallStruct2 *var_r31; + M424DllBallStruct2 *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + var_r31 = &lbl_1_bss_60[0]; + for (var_r28 = 0; var_r28 < lbl_1_bss_58; var_r28++, var_r31++) { + var_r31->unk90 = 1; + } + + for (var_r26 = 0, var_f29 = 1.0f; var_r26 < 0x80; var_f29 -= var_f30, var_r26++) { + var_r29 = 0; + var_f30 = var_f29; + var_r31 = &lbl_1_bss_60[0]; + for (var_r28 = 0; var_r28 < lbl_1_bss_58; var_r28++, var_r31++) { + if ((var_r31->unk90 != 0) && (var_r31->unk4 < 4)) { + var_r31->unk90 = 0; + if (var_r31->unk4 < 3) { + if (var_r31->unk6C.y < 0.0f) { + var_f31 = (200.0f - (var_r31->unk60.y - 100.0f)) / var_r31->unk6C.y; + if (var_f31 <= var_f29) { + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_r31->unk90 = 1; + if (var_f31 <= var_f30) { + if (var_f31 < var_f30) { + var_r29 = 0; + } + sp27C[var_r29].unk0 = 0; + sp27C[var_r29].unk4 = var_r31; + sp27C[var_r29].unk8 = 0; + var_r29++; + var_f30 = var_f31; + } + } + } + if (var_r31->unk4 == 1) { + var_f31 = fn_1_7420(var_r31->unk60, var_r31->unk84, 100.0f, 700.0f); + } + else { + var_f31 = fn_1_7420(var_r31->unk60, var_r31->unk6C, 100.0f, 700.0f); + } + if (var_f31 >= 0.0f && var_f31 <= var_f29) { + var_r31->unk90 = 1; + if (var_f31 <= var_f30) { + if (var_f31 < var_f30) { + var_r29 = 0; + } + sp27C[var_r29].unk0 = 1; + sp27C[var_r29].unk4 = var_r31; + sp27C[var_r29].unk8 = 0; + var_r29++; + var_f30 = var_f31; + } + } + if (var_r31->unk4 == 1) { + var_f31 = fn_1_709C(var_r31->unk60, var_r31->unk84, 100.0f, 250.0f); + } + else { + var_f31 = fn_1_709C(var_r31->unk60, var_r31->unk6C, 100.0f, 250.0f); + } + if (var_f31 >= 0.0f && var_f31 <= var_f29) { + var_r31->unk90 = 1; + if (var_f31 <= var_f30) { + if (var_f31 < var_f30) { + var_r29 = 0; + } + sp27C[var_r29].unk0 = 2; + sp27C[var_r29].unk4 = var_r31; + sp27C[var_r29].unk8 = 0; + var_r29++; + var_f30 = var_f31; + } + } + } + + var_r30 = lbl_1_bss_60; + for (var_r25 = 0; var_r25 < lbl_1_bss_58; var_r25++, var_r30++) { + if ((var_r31 != var_r30) && (var_r30->unk4 < 4)) { + if ((var_r31->unk4 == 1) && (var_r30->unk4 == 1)) { + var_f31 = fn_1_6D10(var_r31->unk60, var_r31->unk84, 100.0f, var_r30->unk60, var_r30->unk84, 100.0f); + } + else { + var_f31 = fn_1_6D10(var_r31->unk60, var_r31->unk6C, 100.0f, var_r30->unk60, var_r30->unk6C, 100.0f); + } + if ((var_f31 < 0.0f) || (var_f31 > var_f29)) + continue; + var_r31->unk90 = 1; + var_r30->unk90 = 1; + if (var_f31 > var_f30) + continue; + if (var_f31 < var_f30) { + var_r29 = 0; + } + else { + for (var_r27 = 0; var_r27 < var_r29; var_r27++) { + if ((sp27C[var_r27].unk4 == var_r30) && (sp27C[var_r27].unk8 == var_r31)) + break; + } + if (var_r27 < var_r29) + continue; + } + sp27C[var_r29].unk0 = 3; + sp27C[var_r29].unk4 = var_r31; + sp27C[var_r29].unk8 = var_r30; + var_r29++; + var_f30 = var_f31; + } + } + } + } + if (var_r29 == 0) + break; + var_r31 = lbl_1_bss_60; + for (var_r28 = 0; var_r28 < lbl_1_bss_58; var_r28++, var_r31++) { + var_r31->unk60.x += var_r31->unk6C.x * var_f30; + var_r31->unk60.y += var_r31->unk6C.y * var_f30; + var_r31->unk60.z += var_r31->unk6C.z * var_f30; + } + for (var_r28 = 0; var_r28 < var_r29; var_r28++) { + switch (sp27C[var_r28].unk0) { + case 0: + var_r31 = sp27C[var_r28].unk4; + var_r31->unk4 = 1; + sp234.y = 300.0f - var_r31->unk60.y; + var_r31->unk60.y = 300.0f; + var_r31->unk6C.y = sp234.y; + var_r31->unk84.y = sp234.y; + break; + case 1: + var_r31 = sp27C[var_r28].unk4; + sp240 = var_r31->unk60; + sp240.y = 0.0f; + VECNormalize(&sp240, &sp228); + sp228.x = -sp228.x; + sp228.y = 0.0f; + sp228.z = -sp228.z; + temp_f28 = VECMag(&sp240); + temp_f28 -= 600.0f; + var_r31->unk60.x += temp_f28 * sp228.x; + var_r31->unk60.z += temp_f28 * sp228.z; + sp240 = var_r31->unk60; + sp240.y = 0.0f; + if (var_r31->unk4 == 1) { + fn_1_7CA0(var_r31->unk84, sp228, 0.8f, &sp24C); + var_r31->unk84 = sp24C; + VECAdd(&var_r31->unk84, &var_r31->unk78, &var_r31->unk6C); + } + else { + fn_1_7CA0(var_r31->unk6C, sp228, 0.8f, &sp24C); + var_r31->unk6C = sp24C; + var_r31->unk84 = var_r31->unk6C; + } + break; + case 2: + var_r31 = sp27C[var_r28].unk4; + sp240 = var_r31->unk60; + sp240.y = 0.0f; + VECNormalize(&sp240, &sp228); + temp_f28 = VECMag(&sp240); + temp_f28 = 350.0f; + var_r31->unk60.x = temp_f28 * sp228.x; + var_r31->unk60.z = temp_f28 * sp228.z; + sp240 = var_r31->unk60; + sp240.y = 0.0f; + if (var_r31->unk4 == 1) { + fn_1_7CA0(var_r31->unk84, sp228, 0.8f, &sp24C); + var_r31->unk84 = sp24C; + VECAdd(&var_r31->unk84, &var_r31->unk78, &var_r31->unk6C); + } + else { + fn_1_7CA0(var_r31->unk6C, sp228, 0.8f, &sp24C); + var_r31->unk6C = sp24C; + var_r31->unk84 = var_r31->unk6C; + } + break; + case 3: + var_r31 = sp27C[var_r28].unk4; + var_r30 = sp27C[var_r28].unk8; + if (var_r31->unk4 == 3) { + fn_1_79FC(&var_r30->unk3C, &var_r30->unk6C, 100.0f, &var_r31->unk3C, &var_r31->unk6C, 100.0f, 0.8f); + var_r31->unk84 = var_r31->unk6C; + var_r30->unk84 = var_r30->unk6C; + } + else if (var_r30->unk4 == 3) { + fn_1_79FC(&var_r31->unk3C, &var_r31->unk6C, 100.0f, &var_r30->unk3C, &var_r30->unk6C, 100.0f, 0.8f); + var_r31->unk84 = var_r31->unk6C; + var_r30->unk84 = var_r30->unk6C; + } + else if ((var_r31->unk4 == 1) && (var_r30->unk4 == 1)) { + fn_1_77C4(var_r31->unk60, var_r31->unk84, var_r30->unk60, 0.8f, &sp24C, &sp258); + fn_1_77C4(var_r30->unk60, var_r30->unk84, var_r31->unk60, 0.8f, &sp270, &sp264); + VECAdd(&sp24C, &sp264, &var_r31->unk84); + VECAdd(&sp258, &sp270, &var_r30->unk84); + VECAdd(&var_r31->unk84, &var_r31->unk78, &var_r31->unk6C); + VECAdd(&var_r30->unk84, &var_r30->unk78, &var_r30->unk6C); + } + else { + fn_1_77C4(var_r31->unk60, var_r31->unk6C, var_r30->unk60, 0.8f, &sp24C, &sp258); + fn_1_77C4(var_r30->unk60, var_r30->unk6C, var_r31->unk60, 0.8f, &sp270, &sp264); + VECAdd(&sp24C, &sp264, &var_r31->unk6C); + VECAdd(&sp258, &sp270, &var_r30->unk6C); + var_r31->unk84 = var_r31->unk6C; + var_r30->unk84 = var_r30->unk6C; + } + break; + } + } + } + var_r31 = lbl_1_bss_60; + for (var_r28 = 0; var_r28 < lbl_1_bss_58; var_r28++, var_r31++) { + var_r31->unk3C.x = var_r31->unk60.x + (var_r31->unk6C.x * var_f29); + var_r31->unk3C.y = var_r31->unk60.y + (var_r31->unk6C.y * var_f29); + var_r31->unk3C.z = var_r31->unk60.z + (var_r31->unk6C.z * var_f29); + } +} + +void fn_1_6038(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + lbl_1_bss_5BC[var_r31] = 0; + } +} + +void *fn_1_6078(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + if (lbl_1_bss_5BC[var_r31] == 0) + break; + } + if (var_r31 == 0x20) { + return NULL; + } + lbl_1_bss_5BC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, 0x10000000); + return lbl_1_bss_5BC[var_r31]; +} + +void fn_1_6118(void *arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + if (lbl_1_bss_5BC[var_r31] == arg0) + break; + } + if (var_r31 != 0x20) { + HuMemDirectFree(lbl_1_bss_5BC[var_r31]); + lbl_1_bss_5BC[var_r31] = NULL; + } +} + +void fn_1_61AC(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + if (lbl_1_bss_5BC[var_r31]) { + HuMemDirectFree(lbl_1_bss_5BC[var_r31]); + lbl_1_bss_5BC[var_r31] = NULL; + } + } +} + +void fn_1_6230(s16 arg0, Mtx arg1) +{ + ModelData *var_r31; + + var_r31 = &Hu3DData[arg0]; + MTXCopy(arg1, var_r31->unk_F0); +} + +u32 lbl_1_data_1D8 = 0x41C64E6D; + +s32 fn_1_627C(void) +{ + lbl_1_data_1D8 *= 0x41C64E6D; + lbl_1_data_1D8 += 0x3039; + return lbl_1_data_1D8 >> 0x10; +} + +void fn_1_62D0(s32 arg0, u32 *arg1) +{ + s32 var_r31; + s32 temp_r30; + u32 temp_r29; + + for (var_r31 = 0; var_r31 < arg0; var_r31++) { + arg1[var_r31] = var_r31; + } + + for (var_r31 = 0; var_r31 < arg0 - 1; var_r31++) { + temp_r30 = (arg0 * (fn_1_627C() / 65536.0f)); + temp_r29 = arg1[var_r31]; + arg1[var_r31] = arg1[temp_r30]; + arg1[temp_r30] = temp_r29; + } +} + +f32 fn_1_640C(f32 arg0, f32 arg1, f32 arg2) +{ + f32 var_f31; + + if (arg0 > 180.0f) { + arg0 -= 360.0f; + } + else { + if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + } + if (arg1 > 180.0f) { + arg1 -= 360.0f; + } + else { + if (arg1 <= -180.0f) { + arg1 += 360.0f; + } + } + var_f31 = arg0 - arg1; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else { + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + } + arg0 = arg1 + (var_f31 * arg2); + if (arg0 > 180.0f) { + return arg0 - 360.0f; + } + if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + return arg0; +} + +void fn_1_6574(Mtx arg0, f32 arg8, f32 arg9, f32 argA) +{ + Mtx sp38; + Mtx sp8; + + if (argA != 0.0f) { + MTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); + } + else { + MTXIdentity(arg0); + } + if (arg8 != 0.0f) { + MTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); + MTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + MTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); + MTXConcat(sp8, arg0, arg0); + } +} + +void fn_1_6694(M424BallStruct4 *arg0, Vec *arg1) +{ + f32 temp_f29; + f32 var_f28; + + arg1->x = atan2d(arg0->unk18, arg0->unk28); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } + arg1->z = atan2d(arg0->unk4, arg0->unk0); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + temp_f29 = -arg0->unk8; + var_f28 = sqrtf(ABS(1.0 - (temp_f29 * temp_f29))); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod((180.0f + arg1->x), 360.0); + arg1->z = fmod((180.0f + arg1->z), 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(temp_f29, var_f28); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } +} + +void fn_1_6A30(M424BallStruct4 *arg0, Vec *arg1) +{ + f32 temp_f29; + f32 var_f27; + + arg1->z = atan2d(arg0->unk4, arg0->unk14); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + arg1->y = atan2d(arg0->unk8, arg0->unk28); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } + temp_f29 = -arg0->unk24; + var_f27 = sqrtf(ABS(1.0 - (temp_f29 * temp_f29))); + arg1->x = atan2d(temp_f29, var_f27); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } +} + +f32 fn_1_6D10(Vec arg0, Vec arg1, f32 arg2, Vec arg3, Vec arg4, f32 arg5) +{ + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 temp_f25; + f32 var_f23; + + VECSubtract(&arg3, &arg0, &arg3); + VECSubtract(&arg4, &arg1, &arg4); + temp_f29 = arg2 + arg5; + if (VECMag(&arg3) > temp_f29 + VECMag(&arg4)) { + return -1.0f; + } + temp_f29 *= temp_f29; + temp_f27 = (arg4.z * arg4.z) + ((arg4.x * arg4.x) + (arg4.y * arg4.y)); + temp_f26 = 2.0f * ((arg4.z * arg3.z) + ((arg4.x * arg3.x) + (arg4.y * arg3.y))); + var_f23 = ((arg3.z * arg3.z) + ((arg3.x * arg3.x) + (arg3.y * arg3.y))) - temp_f29; + if (temp_f27 == 0.0f) { + return -1.0f; + } + temp_f30 = (temp_f26 * temp_f26) - (4.0f * temp_f27 * var_f23); + if (temp_f30 <= 0.0f) { + return -1.0f; + } + temp_f30 = sqrtf(temp_f30); + temp_f25 = (-temp_f26 + temp_f30) / (2.0f * temp_f27); + temp_f28 = (-temp_f26 - temp_f30) / (2.0f * temp_f27); + if (((temp_f25 * temp_f28) < 0.0f) && (temp_f28 < 0.0f) && (temp_f25 > fabs(temp_f28))) { + return 0.0f; + } + return temp_f28; +} + +f32 fn_1_709C(Vec arg0, Vec arg1, f32 arg2, f32 arg3) +{ + Vec sp20; + Vec sp14; + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 temp_f25; + f32 var_f23; + + sp20 = arg0; + sp20.y = 0.0f; + sp14 = arg1; + sp14.y = 0.0f; + temp_f29 = arg3 + arg2; + if (VECMag(&sp20) > temp_f29 + VECMag(&sp14)) { + return -1.0f; + } + temp_f29 *= temp_f29; + temp_f27 = (arg1.x * arg1.x) + (arg1.z * arg1.z); + temp_f26 = 2.0f * ((arg1.x * arg0.x) + (arg1.z * arg0.z)); + var_f23 = (((arg0.x * arg0.x) + (arg0.z * arg0.z)) - temp_f29); + if (0.0f == temp_f27) { + return -1.0f; + } + temp_f30 = (temp_f26 * temp_f26) - (4.0f * temp_f27 * var_f23); + if (temp_f30 <= 0.0f) { + return -1.0f; + } + temp_f30 = sqrtf(temp_f30); + temp_f25 = (-temp_f26 + temp_f30) / (2.0f * temp_f27); + temp_f28 = (-temp_f26 - temp_f30) / (2.0f * temp_f27); + if (((temp_f25 * temp_f28) < 0.0f) && (temp_f28 < 0.0f) && (temp_f25 > fabs(temp_f28))) { + return 0.0f; + } + return temp_f28; +} + +f32 fn_1_7420(Vec arg0, Vec arg1, f32 arg2, f32 arg3) +{ + Vec sp20; + Vec sp14; + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 temp_f25; + f32 var_f23; + + sp20 = arg0; + sp20.y = 0.0f; + sp14 = arg1; + sp14.y = 0.0f; + temp_f29 = arg3 - arg2; + if (VECMag(&sp20) > temp_f29) { + return 0.0f; + } + if (VECMag(&sp20) > temp_f29 + VECMag(&sp14)) { + return -1.0f; + } + temp_f29 *= temp_f29; + temp_f27 = (arg1.x * arg1.x) + (arg1.z * arg1.z); + temp_f26 = 2.0f * ((arg1.x * arg0.x) + (arg1.z * arg0.z)); + var_f23 = (arg0.x * arg0.x) + (arg0.z * arg0.z) - temp_f29; + if (0.0f == temp_f27) { + return -1.0f; + } + temp_f30 = (temp_f26 * temp_f26) - (4.0f * temp_f27 * var_f23); + if (temp_f30 <= 0.0f) { + return -1.0f; + } + temp_f30 = sqrtf(temp_f30); + temp_f25 = (-temp_f26 - temp_f30) / (2.0f * temp_f27); + temp_f28 = (-temp_f26 + temp_f30) / (2.0f * temp_f27); + if (((temp_f25 * temp_f28) < 0.0f) && (temp_f28 < 0.0f) && (temp_f25 > fabs(temp_f28))) { + return 0.0f; + } + return temp_f28; +} + +void fn_1_77C4(Vec arg0, Vec arg1, Vec arg2, f32 arg3, Vec *arg4, Vec *arg5) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + f32 var_f31; + f32 temp_f30; + f32 temp_f29; + f32 var_f28; + + sp38 = arg1; + var_f31 = VECMag(&sp38); + if (var_f31 < 0.01f) { + arg4->x = arg4->y = arg4->z = 0.0f; + arg5->x = arg5->y = arg5->z = 0.0f; + return; + } + VECNormalize(&sp38, &sp38); + var_f31 = var_f31 * arg3; + VECSubtract(&arg2, &arg0, &sp2C); + VECNormalize(&sp2C, &sp2C); + var_f28 = VECDotProduct(&sp38, &sp2C); + if (var_f28 < 0.0f) { + arg4->x = arg1.x; + arg4->y = arg1.y; + arg4->z = arg1.z; + arg5->x = arg5->y = arg5->z = 0.0f; + return; + } + temp_f29 = var_f31 * var_f28; + temp_f30 = var_f31 - temp_f29; + if (temp_f30 < 0.01f) { + arg4->x = arg4->y = arg4->z = 0.0f; + } + else { + VECCrossProduct(&sp38, &sp2C, &sp14); + VECNormalize(&sp14, &sp14); + VECCrossProduct(&sp2C, &sp14, &sp20); + VECNormalize(&sp20, &sp20); + arg4->x = sp20.x * temp_f30; + arg4->y = sp20.y * temp_f30; + arg4->z = sp20.z * temp_f30; + } + arg5->x = sp2C.x * temp_f29; + arg5->y = sp2C.y * temp_f29; + arg5->z = sp2C.z * temp_f29; +} + +void fn_1_79FC(Vec *arg0, Vec *arg1, f32 arg2, Vec *arg3, Vec *arg4, f32 arg5, f32 arg6) +{ + Vec sp38; + Vec sp2C; + f32 temp_f31; + f32 var_f30; + f32 var_f29; + + arg1->x *= arg6; + arg1->y *= arg6; + arg1->z *= arg6; + VECSubtract(arg0, arg3, &sp38); + VECNormalize(&sp38, &sp2C); + temp_f31 = (arg2 + arg5) - VECMag(&sp38); + if (temp_f31 > 0.01f) { + VECSubtract(arg1, arg4, &sp38); + if (VECMag(&sp38) < 0.01f) { + arg0->x += sp2C.x * temp_f31; + arg0->y += sp2C.y * temp_f31; + arg0->z += sp2C.z * temp_f31; + } + else { + VECNormalize(&sp38, &sp38); + arg0->x -= sp38.x * temp_f31; + arg0->y -= sp38.y * temp_f31; + arg0->z -= sp38.z * temp_f31; + } + } + fn_1_7CA0(*arg1, sp2C, 1.0f, arg1); + VECSubtract(arg4, arg1, &sp38); + var_f30 = VECMag(&sp38); + if (var_f30 < 0.01f) + return; + VECNormalize(&sp38, &sp38); + var_f29 = VECDotProduct(&sp2C, &sp38); + if (var_f29 > 0.0f) { + arg1->x += var_f30 * (sp2C.x * var_f29); + arg1->y += var_f30 * (sp2C.y * var_f29); + arg1->z += var_f30 * (sp2C.z * var_f29); + } +} + +void fn_1_7CA0(Vec arg0, Vec arg1, f32 arg2, Vec *arg3) +{ + f32 var_f31; + + *arg3 = arg0; + arg3->x *= arg2; + arg3->y *= arg2; + arg3->z *= arg2; + var_f31 = VECDotProduct(&arg1, arg3); + if (var_f31 < 0.0f) { + arg3->x -= 2.0f * arg1.x * var_f31; + arg3->y -= 2.0f * arg1.y * var_f31; + arg3->z -= 2.0f * arg1.z * var_f31; + } +} + +f32 fn_1_7DD0(Vec *arg0) +{ + f32 temp_f30; + f32 temp_f29; + + temp_f30 = (arg0->x * arg0->x) + (arg0->y * arg0->y) + (arg0->z * arg0->z); + temp_f30 = sqrtf(temp_f30); + if (temp_f30 != 0.0f) { + temp_f29 = 1.0f / temp_f30; + arg0->x *= temp_f29; + arg0->y *= temp_f29; + arg0->z *= temp_f29; + } + else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return temp_f30; +} + +f32 fn_1_7F68(Vec arg0, Vec arg1, Vec *arg2, f32 arg8) +{ + if (arg8 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg8 = 0.0f; + } + else if (arg8 >= 1.0f) { + arg2->x = (arg0.x + arg1.x); + arg2->y = (arg0.y + arg1.y); + arg2->z = (arg0.z + arg1.z); + arg8 = 1.0f; + } + else { + arg2->x = (arg0.x + (arg8 * arg1.x)); + arg2->y = (arg0.y + (arg8 * arg1.y)); + arg2->z = (arg0.z + (arg8 * arg1.z)); + } + return arg8; +} + +f32 fn_1_8040(Vec arg0, Vec arg1, Vec arg2) +{ + f32 temp_f30; + f32 var_f31; + + var_f31 = (arg2.z * (arg1.z - arg0.z)) + ((arg2.x * (arg1.x - arg0.x)) + (arg2.y * (arg1.y - arg0.y))); + temp_f30 = -((arg2.z * arg2.z) + ((arg2.x * arg2.x) + (arg2.y * arg2.y))); + if (temp_f30 != 0.0f) { + var_f31 /= temp_f30; + } + return var_f31; +} + +f32 fn_1_80FC(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp44; + f32 var_f30; + + if (0.0f == (arg2->x * arg2->x) + (arg2->y * arg2->y) + (arg2->z * arg2->z)) { + return ((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y)) + + ((arg0->z - arg1->z) * (arg0->z - arg1->z)); + } + var_f30 = fn_1_8040(*arg0, *arg1, *arg2); + fn_1_7F68(*arg1, *arg2, &sp44, var_f30); + return ((arg0->x - sp44.x) * (arg0->x - sp44.x)) + ((arg0->y - sp44.y) * (arg0->y - sp44.y)) + ((arg0->z - sp44.z) * (arg0->z - sp44.z)); +} + +f32 fn_1_8438(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + f32 var_f27; + + if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f27 = fn_1_8040(*arg0, *arg1, *arg2); + fn_1_7F68(*arg1, *arg2, arg3, var_f27); + arg4->x = arg0->x - arg3->x; + arg4->y = arg0->y - arg3->y; + arg4->z = arg0->z - arg3->z; + return fn_1_7DD0(arg4); +} + +void fn_1_88E8(u8 arg0, f32 arg8, f32 arg9, f32 argA) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + temp_r31->unk4 = 3; + temp_r31->unk3C.x = arg8; + temp_r31->unk3C.y = arg9; + temp_r31->unk3C.z = argA; +} + +void fn_1_8924(u8 arg0, u8 arg1) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + temp_r31->unk4 = arg1; +} + +u8 fn_1_8950(u8 arg0) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + return temp_r31->unk4; +} + +u8 fn_1_897C(u8 arg0) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + return temp_r31->unk5; +} + +u8 fn_1_89A8(u8 arg0) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + return temp_r31->unk91; +} + +Vec *fn_1_89D4(u8 arg0) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + return &temp_r31->unk3C; +} + +Vec *fn_1_8A00(u8 arg0) +{ + M424DllBallStruct2 *temp_r31; + + temp_r31 = &lbl_1_bss_60[arg0]; + return &temp_r31->unk6C; +} + +s32 fn_1_8A2C(void) +{ + M424DllBallStruct2 *var_r31; + M424DllBallStruct *temp_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_60; + for (var_r29 = 0; var_r29 < lbl_1_bss_58; var_r29++, var_r31++) { + temp_r30 = var_r31->unk0->data; + if ((temp_r30->unk8 == 3) || (temp_r30->unk8 == 2)) { + return 0; + } + } + return 1; +} + +void fn_1_8AA8(s32 arg0, s32 arg1) +{ + Vec spC; + M424DllBallStruct2 *temp_r31; + s32 var_r27; + s32 var_r29; + s32 var_r30; + + if (arg1 != 0) { + for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) { + temp_r31 = &lbl_1_bss_60[var_r30]; + if (temp_r31->unk4 != 6) { + VECAdd(&temp_r31->unk60, &temp_r31->unk6C, &temp_r31->unk3C); + if ((temp_r31->unk4 < 3) && (fn_1_907C(&temp_r31->unk3C, &spC) != 0)) { + temp_r31->unk3C = spC; + } + if ((temp_r31->unk6C.y < 0.0f) && (temp_r31->unk4 != 4) && (temp_r31->unk4 != 6) && (temp_r31->unk3C.y < 300.0f)) { + temp_r31->unk3C.y = 300.0f; + if (temp_r31->unk4 == 2) { + temp_r31->unk4 = 1; + } + } + } + } + } + + for (var_r30 = 0, var_r29 = arg0; var_r30 < lbl_1_bss_58; var_r30++) { + temp_r31 = &lbl_1_bss_60[var_r30]; + var_r27 = 0; + if (fn_1_8950(var_r30) < 4) { + if (fn_1_8C78(var_r30, arg0) < arg0) { + var_r27 = 1; + } + if ((var_r27 != 0) && (var_r29 > 0)) { + var_r29 -= 1; + var_r30 -= 1; + } + else { + var_r29 = arg0; + } + } + } + fn_1_C2E0(0); +} + +s32 fn_1_8C78(s32 arg0, s32 arg1) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec *sp10; + f32 temp_f31; + f32 var_f30; + s32 var_r31; + M424DllBallStruct2 *temp_r30; + M424DllBallStruct2 *temp_r29; + Vec *var_r28; + Vec *var_r27; + M424DllBallStruct *temp_r26; + M424DllBallStruct *temp_r25; + + temp_r30 = &lbl_1_bss_60[arg0]; + temp_r26 = temp_r30->unk0->data; + var_r28 = fn_1_89D4(arg0); + sp38 = *var_r28; + + for (var_r31 = 0; var_r31 < lbl_1_bss_58; var_r31++) { + if (var_r31 != arg0) { + if (fn_1_8950(var_r31) < 3) { + temp_r29 = &lbl_1_bss_60[var_r31]; + temp_r25 = temp_r29->unk0->data; + var_r27 = fn_1_89D4(var_r31); + sp2C = *var_r27; + VECSubtract(&sp2C, &sp38, &sp20); + var_f30 = VECMag(&sp20); + if (var_f30 < 200.0f) { + if (var_f30 > 0.0f) { + temp_f31 = 1.0f / var_f30; + sp20.x *= temp_f31; + sp20.y *= temp_f31; + sp20.z *= temp_f31; + } + else { + sp20.x = 0.0f; + sp20.y = 0.0f; + sp20.z = 1.0f; + } + temp_f31 = 1.0f + (0.5f * (200.0f - var_f30)); + if (temp_f31 > 0.0f) { + VECScale(&sp20, &sp20, temp_f31); + VECAdd(&sp2C, &sp20, &sp2C); + *var_r27 = sp2C; + if ((temp_r29->unk4 < 3) && (fn_1_907C(&sp2C, &sp14) != 0)) { + sp2C = sp14; + *var_r27 = sp14; + } + if ((temp_r29->unk4 == 2) && (temp_r25->unk4C.y < 0.0f)) { + temp_r25->unk4C.y += 0.1f * temp_f31; + } + } + if (temp_f31 > 0.0f) { + VECScale(&sp20, &sp20, -1.0f); + VECAdd(&sp38, &sp20, &sp38); + *var_r28 = sp38; + if ((temp_r30->unk4 < 3) && (fn_1_907C(&sp38, &sp14) != 0)) { + sp38 = sp14; + *var_r28 = sp14; + } + if ((temp_r30->unk4 == 2) && (temp_r26->unk4C.y < 0.0f)) { + temp_r26->unk4C.y += 0.1f * temp_f31; + } + } + if (arg1 > 0) { + arg1--; + fn_1_8C78(var_r31, arg1); + } + } + } + } + } + return arg1; +} + +s32 fn_1_907C(Vec *arg0, Vec *arg1) +{ + Vec sp10; + f32 temp_f29; + f32 temp_f28; + f32 var_f27; + f32 temp_f26; + + sp10 = *arg0; + *arg1 = *arg0; + temp_f29 = (sp10.x * sp10.x) + (sp10.z * sp10.z); + var_f27 = sqrtf(temp_f29); + if (var_f27 < 350.0f) { + if (var_f27 > 0.0f) { + temp_f26 = 1.0f / var_f27; + sp10.x *= temp_f26; + sp10.z *= temp_f26; + } + else { + sp10.x = 1.0f; + sp10.z = 0.0f; + } + arg1->x = 350.0f * sp10.x; + arg1->z = 350.0f * sp10.z; + } + temp_f28 = (sp10.x * sp10.x) + (sp10.z * sp10.z); + var_f27 = sqrtf(temp_f28); + if (var_f27 > 600.0f) { + temp_f26 = 1.0f / var_f27; + sp10.x *= temp_f26; + sp10.z *= temp_f26; + arg1->x = 600.0f * sp10.x; + arg1->z = 600.0f * sp10.z; + } + return (s32)arg0; +} diff --git a/src/REL/m424Dll/claw.c b/src/REL/m424Dll/claw.c new file mode 100644 index 00000000..42d11821 --- /dev/null +++ b/src/REL/m424Dll/claw.c @@ -0,0 +1,1410 @@ +#include "REL/m424Dll.h" + +#include "math.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" + +// STRUCT +typedef struct _M424DllClawStruct { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + s16 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; + f32 unk2C; + Vec unk30; + Vec unk3C[12]; + Vec unkCC[12]; + s32 unk15C; + s32 unk160; + s32 unk164; + s32 unk168; + s32 unk16C; + s32 unk170; + Vec unk174; + f32 unk180; + s32 unk184; + s32 unk188; + s32 unk18C; + s32 unk190; + s32 unk194; + s32 unk198; + s32 unk19C; + s32 unk1A0; + s32 unk1A4; + f32 unk1A8; + s32 unk1AC; +} M424DllClawStruct; // sizeof 0x1B0 + +typedef struct _M424DllClawStruct2 { + s32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; +} M424DllClawStruct2; // sizeof 0x10 + +typedef struct _M424DllClawStruct3 { + s32 unk0; + s32 unk4; +} M424DllClawStruct3; // sizeof 0x8 + +// BSS +Process* lbl_1_bss_6DC; +omObjData* lbl_1_bss_6D8; +s32 lbl_1_bss_6D0[2]; +s32 lbl_1_bss_6CC; +s32 lbl_1_bss_6C8; +s32 lbl_1_bss_6C4; +s32 lbl_1_bss_6C0; +M424DllClawStruct3 lbl_1_bss_640[0x10]; + +// DATA +Vec lbl_1_data_1E0[4] = { + { 950.0f, 275.0f, 0.0f }, + { 900.0f, 360.0f, 320.0f }, + { 494.99996f, 220.0f, 494.99996f }, + { 0.0f, 225.0f, 0.0f }, +}; +f32 lbl_1_data_210[3] = { 12.0f, 11.0f, 17.5f }; +char lbl_1_data_21C[12][0x10] = { + "tsume10", + "tsume11", + "tsume12", + "tsume20", + "tsume21", + "tsume22", + "tsume30", + "tsume31", + "tsume32", + "tsume40", + "tsume41", + "tsume42", +}; +u8 lbl_1_data_2DC[12] = { 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 }; +s32 lbl_1_data_2E8[9] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x42), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18) }; +Vec lbl_1_data_30C = { 0.0f, 0.0f, 0.0f }; + +// PROTO +void fn_1_88E8(u8, f32, f32, f32); +void fn_1_8924(u8, s32); +u8 fn_1_8950(u8); +u8 fn_1_897C(u8); +u8 fn_1_89A8(u8); +Vec *fn_1_89D4(u8); +void fn_1_94D0(omObjData *); +void fn_1_9A64(omObjData *); +void fn_1_AE58(omObjData *); +void fn_1_AE64(omObjData *); +u16 fn_1_B79C(f32, f32, f32); +s32 fn_1_B9E0(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2, s32 arg3); +void fn_1_C604(s32, s32); +s32 fn_1_C878(s16, const char *, Mtx, s32); +void fn_1_C99C(HsfObject *, Mtx, const char *, Mtx); +void fn_1_CE74(s32); +void fn_1_CF00(Process *); +void fn_1_CF80(omObjData *); +s32 fn_1_D010(s32, s32); + +omObjData *fn_1_93F0(Process *arg0) +{ + lbl_1_bss_6DC = arg0; + lbl_1_bss_6D8 = omAddObjEx(arg0, 0x40, 5, 9, -1, fn_1_94D0); + lbl_1_bss_6CC = 0; + lbl_1_bss_6C8 = 0; + lbl_1_bss_6C4 = 0; + lbl_1_bss_6C0 = 0; + fn_1_CF00(arg0); + return lbl_1_bss_6D8; +} + +void fn_1_94A4(void) +{ + fn_1_AE58(lbl_1_bss_6D8); +} + +void fn_1_94D0(omObjData *arg0) +{ + s32 var_r29; + M424DllClawStruct *var_r31; + + var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B0, 0x10000000); + memset(var_r31, 0, 0x1B0); + var_r31->unk0 = lbl_1_bss_24[3]; + var_r31->unk2 = GWPlayerCfg[var_r31->unk0].character; + var_r31->unk4 = GWPlayerCfg[var_r31->unk0].pad_idx; + var_r31->unk6 = GWPlayerCfg[var_r31->unk0].iscom; + var_r31->unk8 = GWPlayerCfg[var_r31->unk0].diff; + var_r31->unkA = var_r31->unkC = 0; + var_r31->unk10 = 0; + var_r31->unk12 = 0; + var_r31->unk14 = 0; + var_r31->unk16 = 0; + var_r31->unk18 = 0; + var_r31->unk1C = 0.0f; + var_r31->unk20 = 1.0f; + var_r31->unk24 = 0.0f; + var_r31->unk28 = 0.0f; + var_r31->unk2C = 1.0f; + var_r31->unk15C = 0; + var_r31->unk160 = 0; + var_r31->unk164 = 0; + var_r31->unk168 = -1; + var_r31->unk16C = -1; + var_r31->unk170 = -1; + var_r31->unk174 = lbl_1_data_30C; + // @todo how did this happen + var_r31->unk180 = atan2d(-102.864990234375, 424.559997558593750); + if (var_r31->unk180 < 0.0f) { + var_r31->unk180 += 360.0f; + } + var_r31->unk184 = -1; + var_r31->unk30 = lbl_1_data_30C; + + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + var_r31->unk3C[var_r29] = lbl_1_data_30C; + var_r31->unkCC[var_r29] = lbl_1_data_30C; + } + var_r31->unk188 = 0; + var_r31->unk18C = -1; + var_r31->unk190 = 0; + var_r31->unk194 = 0; + var_r31->unk198 = 0; + var_r31->unk19C = 0; + var_r31->unk1A0 = 0; + var_r31->unk1A4 = 0; + var_r31->unk1A8 = 0.0f; + var_r31->unk1AC = 0; + arg0->model[0] = CharModelCreate(var_r31->unk2, 1); + Hu3DModelShadowSet(arg0->model[0]); + CharModelStepTypeSet(var_r31->unk2, 1); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + arg0->motion[var_r29] = CharModelMotionCreate(var_r31->unk2, lbl_1_data_2E8[var_r29]); + } + var_r31->unkE = 5; + CharModelMotionSet(var_r31->unk2, arg0->motion[var_r31->unkE]); + arg0->model[1] = Hu3DModelCreateFile(0x37001D); + Hu3DModelShadowSet(arg0->model[1]); + arg0->model[2] = Hu3DModelCreateFile(0x37001E); + Hu3DModelShadowSet(arg0->model[2]); + arg0->model[3] = Hu3DModelCreateFile(0x37001F); + Hu3DModelShadowSet(arg0->model[3]); + arg0->model[4] = Hu3DModelCreateFile(0x370020); + Hu3DModelShadowSet(arg0->model[4]); + Hu3DModelScaleSet(arg0->model[4], 0.9f, 0.9f, 0.9f); + Hu3DModelHookSet(arg0->model[1], "hook1", arg0->model[2]); + Hu3DModelHookSet(arg0->model[2], "hook2", arg0->model[3]); + Hu3DModelHookSet(arg0->model[3], "hook3", arg0->model[4]); + Hu3DModelPosSet(arg0->model[1], 950.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[2], 0x40000002); + Hu3DModelAttrSet(arg0->model[4], 0x40000002); + arg0->trans.x = 950.0f; + arg0->trans.y = 275.0f; + arg0->trans.z = 0.0f; + arg0->rot.y = 270.0f; + var_r31->unk10 = 3; + var_r31->unk24 = 0.45f; + var_r31->unk12 = 0; + arg0->func = fn_1_9A64; +} + +void fn_1_9A64(omObjData *arg0) +{ + Mtx sp74; + Mtx sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + f32 var_f31; + f32 temp_f30; + M424DllClawStruct *temp_r31; + s32 var_r29; + s32 temp_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + temp_r31 = arg0->data; + if (fn_1_FE0() == 4) { + temp_r31->unkC = HuPadBtn[temp_r31->unk4]; + temp_r31->unkA = HuPadBtnDown[temp_r31->unk4]; + if (temp_r31->unk6 != 0) { + fn_1_AE64(arg0); + } + } + else { + temp_r31->unkC = 0; + temp_r31->unkA = 0; + } + if (fn_1_FE0() <= 1) { + var_r25 = -1; + } + else { + var_r25 = temp_r31->unk10; + } + switch (var_r25) { + case 0: + if (fn_1_FE0() >= 4) { + temp_r31->unk10 = 1; + temp_r31->unk12 = 0; + } + break; + case 1: + if (fn_1_FE0() > 4) { + temp_r31->unk10 = 10; + temp_r31->unk12 = 0; + } + else if ((temp_r31->unkA & 0x100) != 0) { + HuAudFXPlay(0x62A); + temp_r31->unk184 = HuAudFXPlay(0x621); + temp_r31->unk10 = 2; + temp_r31->unk12 = 0; + } + break; + case 2: + temp_r31->unk12++; + temp_r31->unk24 += ((1.0f / 60.0f) * temp_r31->unk20); + if (temp_r31->unk24 >= 1.0f) { + temp_r31->unk24 = 1.0f; + temp_r31->unk20 = -1.0f; + } + else { + if (temp_r31->unk24 <= 0.0f) { + temp_r31->unk24 = 0.0f; + temp_r31->unk20 = 1.0f; + } + } + if (fn_1_FE0() > 4) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x622); + temp_r31->unk10 = 10; + temp_r31->unk12 = 0; + } + else if (((temp_r31->unkC & 0x100) == 0) || (temp_r31->unk12 >= 360.0f)) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x622); + temp_r31->unk184 = HuAudFXPlay(0x62C); + temp_r31->unk168 = -1; + temp_r31->unk16C = -1; + temp_r31->unk10 = 3; + temp_r31->unk12 = 0; + } + break; + case 3: + temp_r31->unk12++; + if (temp_r31->unk15C == 0) { + temp_r31->unk28 += (1.0f / 60.0f); + } + if (temp_r31->unk28 > 1.0f) { + temp_r31->unk28 = 1.0f; + } + if (temp_r31->unk12 >= 0x3C) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x62D); + HuAudFXPlay(0x625); + temp_r31->unk10 = 4; + temp_r31->unk12 = 0; + } + temp_r31->unk15C = 0; + break; + case 4: + temp_r31->unk12++; + if (temp_r31->unk160 == 0) { + temp_r31->unk2C -= (1.0f / 60.0f); + } + if (temp_r31->unk2C < 0.0f) { + temp_r31->unk2C = 0.0f; + } + if (temp_r31->unk12 >= 0x3C) { + temp_r31->unk10 = 5; + temp_r31->unk12 = 0; + } + temp_r31->unk160 = 0; + break; + case 5: + temp_r31->unk12++; + if (temp_r31->unk12 >= 6.0f) { + temp_r31->unk184 = HuAudFXPlay(0x62C); + if ((temp_r31->unk168 != -1)) { + var_r27 = fn_1_897C(temp_r31->unk168); + if (var_r27 != 0) { + var_r26 = fn_1_89A8(temp_r31->unk168); + HuAudCharVoicePlay(var_r26, 0x128); + } + } + temp_r31->unk10 = 6; + temp_r31->unk12 = 0; + } + break; + case 6: + temp_r31->unk12++; + temp_r31->unk28 -= (1.0f / 45.0f); + if (temp_r31->unk28 <= 0.0f) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x62D); + temp_r31->unk28 = 0.0f; + if (temp_r31->unk168 != -1) { + var_r27 = fn_1_897C(temp_r31->unk168); + } + else { + var_r27 = -1; + } + if (temp_r31->unk168 == -1) { + if (fn_1_FE0() > 4) { + temp_r31->unk10 = 10; + temp_r31->unk12 = 0; + } + else { + temp_r31->unk10 = 8; + temp_r31->unk12 = 0; + HuAudFXPlay(0x625); + } + } + else if (var_r27 == 0) { + temp_r31->unk10 = 8; + temp_r31->unk12 = 0; + HuAudFXPlay(0x625); + } + else { + if (temp_r31->unk168 != -1) { + fn_1_252C(-0.01f, 0x3C); + fn_1_2670(0x75, 0); + } + HuAudFXPlay(0x62B); + temp_r31->unk184 = HuAudFXPlay(0x623); + temp_r31->unk10 = 7; + temp_r31->unk12 = 0; + } + } + break; + case 7: + if (arg0->rot.y < temp_r31->unk180) { + arg0->rot.y += 1.25f; + } + else if (arg0->rot.y > temp_r31->unk180) { + arg0->rot.y = temp_r31->unk180; + } + var_f31 = 0.35f - temp_r31->unk24; + if (var_f31 > 0.0125f) { + temp_r31->unk24 += 0.0125f; + } + else if (var_f31 < -0.0125f) { + temp_r31->unk24 -= 0.0125f; + } + else { + temp_r31->unk24 = 0.35f; + } + if ((arg0->rot.y == temp_r31->unk180) && (0.35f == temp_r31->unk24)) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x624); + HuAudFXPlay(0x625); + temp_r31->unk10 = 8; + temp_r31->unk12 = 0; + } + break; + case 8: + if ((temp_r31->unk12 == 0) && (temp_r31->unk168 != -1)) { + if (fn_1_897C(temp_r31->unk168) != 0) { + fn_1_8924(temp_r31->unk168, 4); + var_r26 = fn_1_89A8(temp_r31->unk168); + HuAudCharVoicePlay(var_r26, 0x123); + fn_1_D010(0x628, 30); + } + else { + fn_1_8924(temp_r31->unk168, 2); + } + temp_r31->unk16C = temp_r31->unk168; + temp_r31->unk168 = -1; + } + temp_r31->unk12++; + temp_r31->unk2C += 0.033333335f; + if (temp_r31->unk2C > 1.0f) { + temp_r31->unk2C = 1.0f; + } + if (temp_r31->unk2C >= 1.0f) { + if (arg0->rot.y == temp_r31->unk180) { + temp_r31->unk184 = HuAudFXPlay(0x623); + } + if (temp_r31->unk16C != -1) { + if (fn_1_897C(temp_r31->unk16C) != 0) { + lbl_1_bss_6CC++; + } + } + temp_r31->unk10 = 9; + temp_r31->unk12 = 0; + } + break; + case 9: + temp_r31->unk12++; + if (arg0->rot.y > 270.0f) { + arg0->rot.y -= 1.25f; + } + else if (arg0->rot.y < 270.0f) { + arg0->rot.y = 270.0f; + } + if (temp_r31->unk24 > 0.025f) { + temp_r31->unk24 -= 0.025f; + } + else if (temp_r31->unk24 < 0.05f) { + temp_r31->unk24 = 0.0f; + } + if ((270.0f == arg0->rot.y) && (0.0f == temp_r31->unk24)) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + HuAudFXPlay(0x624); + } + temp_r31->unk20 = 1.0f; + temp_r31->unk10 = 1; + temp_r31->unk12 = 0; + } + break; + case 10: + if (fn_1_B888() != 0) { + temp_r31->unkE = 5; + CharModelMotionSet(temp_r31->unk2, arg0->motion[temp_r31->unkE]); + temp_r31->unkE = 3; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0U); + temp_r31->unk16 = 0; + temp_r31->unk14 = 0; + temp_r31->unk1C = lbl_1_data_210[0]; + temp_r31->unk18 = fn_1_B79C(lbl_1_data_1E0[0].y, lbl_1_data_1E0[1].y, temp_r31->unk1C); + temp_r31->unk10 = 11; + temp_r31->unk12 = 0; + } + else { + temp_r31->unk10 = 13; + temp_r31->unk12 = 0; + } + break; + case 11: + var_r29 = temp_r31->unk14; + if (var_r29 > 2) { + var_r29 = 2; + } + if (temp_r31->unk16 == 0) { + temp_r31->unk12++; + sp14 = lbl_1_data_1E0[var_r29]; + sp8 = lbl_1_data_1E0[var_r29 + 1]; + arg0->rot.y = fn_1_1470(atan2d((sp8.x - arg0->trans.x), (sp8.z - arg0->trans.z)), arg0->rot.y, 10.0f); + var_f31 = (f32)temp_r31->unk12 / temp_r31->unk18; + arg0->trans.x = sp14.x + (var_f31 * (sp8.x - sp14.x)); + arg0->trans.z = sp14.z + (var_f31 * (sp8.z - sp14.z)); + arg0->trans.y += temp_r31->unk1C; + temp_r31->unk1C -= 0.65333337f; + if (temp_r31->unk14 == 2) { + if ((temp_r31->unk12 >= (0.4f * temp_r31->unk18)) && (temp_r31->unkE != 6) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 6; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0); + } + } + if (temp_r31->unk12 >= temp_r31->unk18) { + arg0->trans.x = sp8.x; + arg0->trans.y = sp8.y; + arg0->trans.z = sp8.z; + temp_r31->unkE = 4; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0U); + temp_r31->unk12 = 0; + temp_r31->unk16 ^= 1; + if (++temp_r31->unk14 >= 3) { + temp_r31->unk10 = 0xC; + } + } + } + else { + sp14 = lbl_1_data_1E0[var_r29]; + sp8 = lbl_1_data_1E0[var_r29 + 1]; + var_f31 = atan2d((sp8.x - arg0->trans.x), (sp8.z - arg0->trans.z)); + arg0->rot.y = fn_1_1470(var_f31, arg0->rot.y, 10.0f); + if ((fn_1_1358(var_f31, arg0->rot.y) < 1.0f) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 3; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0); + temp_r31->unk1C = lbl_1_data_210[var_r29]; + temp_r31->unk18 = fn_1_B79C(sp14.y, sp8.y, temp_r31->unk1C); + temp_r31->unk12 = 0; + temp_r31->unk16 ^= 1; + } + } + break; + case 12: + if ((temp_r31->unkE != 0) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 0; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0x40000008); + } + arg0->rot.y = fn_1_1470(0.0f, arg0->rot.y, 10.0f); + if ((fn_1_1358(0.0f, arg0->rot.y) < 1.0f) && (temp_r31->unkE == 0)) { + temp_r31->unk10 = 0xD; + temp_r31->unk12 = 0; + } + break; + case 13: + if (fn_1_FE0() >= 7) { + if (fn_1_B888() != 0) { + temp_r31->unk10 = 14; + temp_r31->unk12 = 0; + } + else { + temp_r31->unk10 = 15; + temp_r31->unk12 = 0; + } + } + break; + case 14: + if ((temp_r31->unkE != 7) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 7; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0); + } + break; + case 15: + break; + } + if (temp_r31->unk10 <= 9) { + Hu3DModelRotSet(arg0->model[1], 0.0f, 90.0f + arg0->rot.y, 0.0f); + } + temp_r28 = arg0->model[2]; + Hu3DMotionTimeSet(temp_r28, temp_r31->unk24 * Hu3DMotionMaxTimeGet(temp_r28)); + fn_1_CE74(temp_r28); + temp_f30 = 0.2f + (0.8f * temp_r31->unk28); + Hu3DModelScaleSet(arg0->model[3], 1.0f, temp_f30, 1.0f); + Hu3DModelScaleSet(arg0->model[4], 1.0f, 1.0f / temp_f30, 1.0f); + temp_r28 = arg0->model[4]; + Hu3DMotionTimeSet(temp_r28, temp_r31->unk2C * Hu3DMotionMaxTimeGet(temp_r28)); + fn_1_CE74(temp_r28); + fn_1_C878(arg0->model[1], "hook1", sp74, 0); + fn_1_C878(arg0->model[2], "hook2", sp74, 1); + fn_1_C878(arg0->model[3], "hook3", sp74, 1); + MTXCopy(sp74, sp44); + temp_r31->unk30.x = sp74[0][3]; + temp_r31->unk30.y = sp74[1][3]; + temp_r31->unk30.z = sp74[2][3]; + + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + MTXCopy(sp44, sp74); + fn_1_C878(arg0->model[4], lbl_1_data_21C[var_r29], sp74, 1); + temp_r31->unkCC[var_r29] = temp_r31->unk3C[var_r29]; + temp_r31->unk3C[var_r29].x = sp74[0][3]; + temp_r31->unk3C[var_r29].y = sp74[1][3]; + temp_r31->unk3C[var_r29].z = sp74[2][3]; + } + if ((temp_r31->unk168 != -1) && (temp_r31->unk10 >= 6)) { + sp2C.x = 0.0f; + sp2C.y = temp_r31->unk174.y; + sp2C.z = 0.0f; + VECSubtract(&temp_r31->unk174, &sp2C, &sp20); + var_f31 = VECMag(&sp20); + if (var_f31 != 0.0f) { + VECNormalize(&sp20, &sp20); + VECScale(&sp20, &sp20, 0.9f * var_f31); + VECAdd(&sp2C, &sp20, &temp_r31->unk174); + } + VECAdd(&temp_r31->unk30, &temp_r31->unk174, &sp38); + fn_1_88E8(temp_r31->unk168, sp38.x, sp38.y, sp38.z); + } + temp_r31->unk164 = 1; +} + +void fn_1_AE58(omObjData *arg0) +{ + arg0->func = NULL; +} + +f32 lbl_1_data_36C[4][2] = { 30.0f, 24.0f, 24.0f, 18.0f, 12.0f, 6.0f, 6.0f, 0.0f }; + +f32 lbl_1_data_38C[4][2] = { 0.2f, 0.15f, 0.15f, 0.1f, 0.1f, 0.05f, 0.05f, 0.0f }; + +void fn_1_AE64(omObjData *arg0) +{ + M424DllClawStruct2 sp20[8]; + M424DllClawStruct2 sp10; + s32 spC; + f32 var_f31; + f32 var_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 var_f25; + f32 var_f24; + s32 temp_r24; + s32 temp_r23; + M424DllClawStruct *temp_r31; + Vec *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + M424DllBallStruct2 *var_r26; + s32 var_r25; + + spC = 0; + temp_r31 = arg0->data; + var_r26 = &lbl_1_bss_60[0]; + if (var_r26) { + temp_r31->unkC = 0; + temp_r31->unkA = 0; + switch (temp_r31->unk10) { + case 1: + if (temp_r31->unk188 == 0) { + temp_r31->unk188 = 1; + temp_r31->unk18C = -1; + temp_r31->unk190 = 0; + temp_r31->unk194 = 0; + temp_r31->unk198 = 0; + temp_r31->unk19C = 0; + temp_r31->unk1A0 = 0; + temp_r31->unk1A4 = 0; + temp_r31->unk1A8 = 0.0f; + } + if (temp_r31->unk18C == -1) { + for (var_r29 = 0, var_r28 = 0; var_r29 < lbl_1_bss_58; var_r29++, var_r26++) { + if ((fn_1_897C(var_r29) != 0) && (fn_1_8950(var_r29) <= 2)) { + var_r30 = fn_1_89D4(var_r29); + var_f31 = atan2d(var_r30->x, var_r30->z); + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_r28 < 8) { + if (var_f31 >= -90.0f) { + if (var_f31 <= 45.0f) { + sp20[var_r28].unk0 = var_r29; + sp20[var_r28].unkC = var_f31; + sp20[var_r28].unk4 = var_r30->x; + sp20[var_r28].unk8 = var_r30->z; + var_r28++; + } + } + } + } + } + if (var_r28 != 0) { + for (var_r29 = 0; var_r29 < (var_r28 - 1); var_r29++) { + var_r27 = var_r29 + 1; + for (; var_r27 < var_r28; var_r27++) { + if (sp20[var_r29].unkC < sp20[var_r27].unkC) { + sp10 = sp20[var_r29]; + sp20[var_r29] = sp20[var_r27]; + sp20[var_r27] = sp10; + } + } + } + temp_r31->unk18C = sp20[0].unk0; + temp_r31->unk1A8 = sp20[0].unkC; + temp_r31->unk19C = 0; + temp_r31->unk1A0 = 0; + temp_r31->unk1A4 = 0; + temp_r31->unk1AC = 0; + } + } + if (temp_r31->unk18C != -1) { + var_r30 = fn_1_89D4(temp_r31->unk18C); + var_f31 = atan2d(var_r30->x, var_r30->z); + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 >= 30.0f) { + if (temp_r31->unk19C != 0) { + temp_f27 = lbl_1_data_36C[temp_r31->unk8][0]; + temp_f26 = lbl_1_data_36C[temp_r31->unk8][1]; + temp_r24 = ((temp_f26 - temp_f27) * (temp_f27 * (0.007874016f * (frand() & 0x7F)))); + temp_f27 = lbl_1_data_38C[temp_r31->unk8][0]; + temp_f26 = lbl_1_data_38C[temp_r31->unk8][1]; + temp_r23 = ((temp_f26 - temp_f27) * (temp_f27 * (0.007874016f * (frand() & 0x7F)))); + temp_r31->unk190 = ((3.0f * temp_r31->unk1A4) + temp_r24); + temp_f28 = (var_r30->x * var_r30->x) + (var_r30->z * var_r30->z); + var_f29 = sqrtf(temp_f28); + var_f29 = (var_f29 - 350.0f) / 250.0f + temp_r23; + if (var_f29 < 0.0f) { + var_f29 = 0.0f; + } + else if (var_f29 > 1.0f) { + var_f29 = 1.0f; + } + temp_r31->unk194 = (60.0f * (1.0f - var_f29)); + var_f25 = (1.5f + (-1.5f * var_f29)); + temp_r31->unk190 -= (s32)(60.0f * var_f25); + var_f25 = (1.0f + (-1.1f * var_f29)); + temp_r31->unk198 = (60.0f * var_f25); + temp_r31->unk19C = 0; + temp_r31->unk1A0 = 0; + temp_r31->unk1AC = 0; + temp_r31->unk1AC = (temp_r31->unk1AC + (60.0f * (1.0f - var_f29))); + } + if (++temp_r31->unk1AC >= (temp_r31->unk190 - temp_r31->unk198)) { + temp_r31->unkA |= 0x100; + temp_r31->unkC |= 0x100; + temp_r31->unk1AC = 0; + return; + } + } + else { + if (var_f31 >= (15.0f + temp_r31->unk1A8)) { + temp_r31->unk1A0++; + temp_r31->unk1A8 = var_f31; + temp_r31->unk1A4 = (temp_r31->unk19C / temp_r31->unk1A0); + return; + } + temp_r31->unk19C++; + return; + } + } + break; + case 2: + if (temp_r31->unk18C != -1) { + var_r25 = 1; + if (++temp_r31->unk1AC >= temp_r31->unk194) { + var_r25 = 0; + } + } + else { + var_r25 = 0; + } + if (var_r25 != 0) { + temp_r31->unkC |= 0x100; + } + temp_r31->unk188 = 0; + break; + } + } +} + +u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) +{ + f32 var_f31; + f32 var_f3; + u16 var_r31; + + var_r31 = 0; + for (var_f31 = arg0; arg2 > 0.0f || var_f31 > arg1; var_r31++) { + var_f31 += arg2; + arg2 -= 0.65333337f; + } + return var_r31; +} + +s32 fn_1_B804(void) +{ + M424DllClawStruct *temp_r31; + + if (!lbl_1_bss_6D8) { + return 0; + } + if (!lbl_1_bss_6D8->data) { + return 0; + } + temp_r31 = lbl_1_bss_6D8->data; + if ((temp_r31->unk10 >= 1) && (temp_r31->unk10 < 6)) { + return 1; + } + return 0; +} + +s32 fn_1_B888(void) +{ + if (lbl_1_bss_6CC >= 3) { + return 1; + } + else { + return 0; + } +} + +s32 fn_1_B8AC(void) +{ + M424DllClawStruct *temp_r31; + + if (!lbl_1_bss_6D8) { + return 0; + } + if (!lbl_1_bss_6D8->data) { + return 0; + } + + temp_r31 = lbl_1_bss_6D8->data; + if (temp_r31->unk10 >= 10) { + return 1; + } + return 0; +} + +s32 fn_1_B924(void) +{ + M424DllClawStruct *temp_r31; + + if (!lbl_1_bss_6D8) { + return 0; + } + if (!lbl_1_bss_6D8->data) { + return 0; + } + + temp_r31 = lbl_1_bss_6D8->data; + if (temp_r31->unk10 >= 13) { + return 1; + } + return 0; +} + +void fn_1_B99C(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2) +{ + fn_1_B9E0(arg0, arg1, arg8, arg2, 0x10); +} + +s32 fn_1_B9E0(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2, s32 arg3) +{ + Vec sp60; + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + f32 temp_f30; + f32 var_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 var_f25; + f32 var_f24; + f32 var_f23; + M424DllClawStruct *temp_r31; + s32 var_r29; + s32 var_r28; + s32 var_r26; + omObjData *var_r24; + s32 var_r23; + + var_r23 = 1; + var_r28 = 0; + var_r24 = lbl_1_bss_6D8; + temp_r31 = var_r24->data; + VECAdd(arg0, arg1, &sp24); + spC = *arg1; + *arg2 = *arg0; + temp_f30 = 5.0f + arg8; + if (temp_r31->unk164 == 0) { + return 0; + } + switch (temp_r31->unk10) { + case 3: + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + if (var_r28 != 0) { + sp24 = *arg2; + VECSubtract(&sp24, arg0, &spC); + } + VECSubtract(&sp24, &temp_r31->unk3C[var_r29], &sp18); + var_f29 = VECMag(&sp18); + if (var_f29 < temp_f30) { + if (0.0f == var_f29) { + var_f29 = temp_f30; + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 1.0f; + } + var_f23 = sqrtf((sp18.x * sp18.x) + (sp18.z * sp18.z)); + if ((temp_r31->unk3C[var_r29].y > sp24.y) && (var_f23 < 17.599999999999998)) { + temp_r31->unk15C = 1; + } + else { + VECNormalize(&sp18, &sp18); + VECScale(&sp18, &sp18, temp_f30); + VECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); + } + var_r28 = 1; + } + } + break; + default: + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + if (var_r28 != 0) { + sp24 = *arg2; + VECSubtract(&sp24, arg0, &spC); + } + var_r26 = 0; + sp60 = temp_r31->unk3C[var_r29]; + VECAdd(&temp_r31->unkCC[var_r29], &spC, &sp54); + VECSubtract(&sp60, &sp54, &sp18); + VECSubtract(&sp24, &sp54, &sp48); + temp_f26 = (sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y)); + if (temp_f26 != 0.0f) { + var_f24 = (sp18.x * sp48.x) + (sp18.y * sp48.y) + (sp18.z * sp48.z); + temp_f27 = var_f24 / temp_f26; + if (temp_f27 >= 0.0f) { + if (temp_f27 <= 1.0f) { + VECScale(&sp18, &sp18, temp_f27); + VECAdd(&sp54, &sp18, &sp3C); + VECSubtract(&sp24, &sp3C, &sp30); + var_f29 = VECMag(&sp30); + if (var_f29 == 0.0f) { + if (VECMag(&sp18) <= 0.0f) { + sp18.x = sp18.y = 0.0f; + sp18.z = 1.0f; + } + VECNormalize(&sp18, &sp30); + VECScale(&sp30, &sp30, temp_f30); + VECAdd(&sp60, &sp30, arg2); + var_r28 = 1; + var_r26 = 1; + } + else if (var_f29 < temp_f30) { + if (VECMag(&sp30) <= 0.0f) { + + sp30.x = sp30.y = 0.0f; + sp30.z = 1.0f; + } + VECNormalize(&sp30, &sp30); + VECScale(&sp30, &sp30, temp_f30); + VECAdd(&sp3C, &sp30, arg2); + var_r28 = 1; + var_r26 = 1; + } + } + } + } + if (var_r26 == 0) { + VECSubtract(&sp24, &sp60, &sp18); + var_f29 = VECMag(&sp18); + if (var_f29 < temp_f30) { + if (var_f29 <= 0.0f) { + sp18.x = sp18.y = 0.0f; + sp18.z = 1.0f; + } + VECNormalize(&sp18, &sp18); + VECScale(&sp18, &sp18, temp_f30); + VECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); + var_r28 = 1; + var_r26 = 1; + } + } + if (var_r26 == 0) { + VECSubtract(&sp24, &sp54, &sp18); + var_f29 = VECMag(&sp18); + if (var_f29 < temp_f30) { + if (var_f29 <= 0.0f) { + sp18.x = sp18.y = 0.0f; + sp18.z = 1.0f; + } + VECNormalize(&sp18, &sp18); + VECScale(&sp18, &sp18, temp_f30); + VECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); + var_r28 = 1; + var_r26 = 1; + } + } + if ((lbl_1_data_2DC[var_r29] != 0) && (var_r26 == 0)) { + var_r23 = 0; + } + } + if ((temp_r31->unk10 == 4) && (var_r23 != 0)) { + arg2->x = temp_r31->unk30.x; + arg2->y = arg0->y; + arg2->z = temp_r31->unk30.z; + arg3 = 0; + temp_r31->unk160 = 1; + } + break; + case 0: + case 1: + case 2: + case 9: + break; + } + if (var_r28 != 0) { + if (--arg3 > 0) { + sp24 = *arg2; + VECSubtract(&sp24, arg0, &spC); + if (fn_1_B9E0(arg0, &spC, arg8, &sp24, arg3) != 0) { + *arg2 = sp24; + } + } + } + + (void)temp_f30; // @todo fix + (void)temp_f30; + return var_r28; +} + +s32 fn_1_C210(Vec *arg0) +{ + Vec sp1C; + Vec sp10; + f32 spC; + M424DllClawStruct *temp_r31; + omObjData *var_r30; + s32 var_r29; + + var_r29 = 0; + var_r30 = lbl_1_bss_6D8; + temp_r31 = var_r30->data; + if (temp_r31->unk164 == 0) { + return 0; + } + switch (temp_r31->unk10) { + case 5: + sp1C.x = temp_r31->unk30.x; + sp1C.y = -120.00001f + temp_r31->unk30.y; + sp1C.z = temp_r31->unk30.z; + VECSubtract(arg0, &sp1C, &sp10); + if ((spC = VECMag(&sp10)) < 50.0f) { + var_r29 = 1; + } + } + return var_r29; +} + +void fn_1_C2E0(s32 arg0) +{ + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec *spC; + M424DllBallStruct2 *temp_r27; + Vec *temp_r28; + M424DllClawStruct *temp_r31; + s32 var_r30; + s32 var_r26; + omObjData *var_r25; + + if ((u8)omPauseChk() != 0U) + return; + + var_r25 = lbl_1_bss_6D8; + if (lbl_1_bss_6D8) { + temp_r31 = var_r25->data; + if (temp_r31 && (temp_r31->unk164 != 0)) { + temp_r27 = &lbl_1_bss_60[0]; + if (temp_r27) { + var_r26 = 0x10; + + for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) { + temp_r27 = &lbl_1_bss_60[var_r30]; + if ((fn_1_8950(var_r30) == 3) || (fn_1_8950(var_r30) == 4)) + continue; + temp_r28 = fn_1_89D4(var_r30); + spC = fn_1_8A00(var_r30); + sp28 = *temp_r28; + sp4C = temp_r27->unk60; + VECSubtract(temp_r28, &sp4C, &sp40); + if (fn_1_B9E0(&sp4C, &sp40, 100.0f, &sp34, 0x10) != 0) { + *temp_r28 = sp34; + sp4C = sp34; + if ((temp_r27->unk4 < 3) && (fn_1_907C(&sp4C, &sp34) != 0)) { + *temp_r28 = sp34; + sp4C = sp34; + } + fn_1_C604(var_r30, 0x20); + if ((sp28.y != sp4C.y) && (var_r30 != temp_r31->unk168) && (var_r30 != temp_r31->unk16C)) { + temp_r28->y = sp28.y; + sp4C.y = sp28.y; + if (var_r26 > 0) { + var_r30--; + var_r26--; + continue; + } + } + } + if (temp_r31->unk168 == -1) { + if (fn_1_C210(&sp4C) != 0) { + temp_r31->unk168 = var_r30; + temp_r31->unk170 = fn_1_897C(var_r30); + VECSubtract(&sp4C, &temp_r31->unk30, &temp_r31->unk174); + fn_1_88E8(temp_r31->unk168, sp4C.x, sp4C.y, sp4C.z); + } + } + var_r26 = 0x10; + } + } + } + } +} + +void fn_1_C604(s32 arg0, s32 arg1) +{ + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + M424DllBallStruct2 *sp8; + Vec *var_r31; + f32 temp_f31; + f32 var_f30; + s32 var_r30; // ! - uninitialized + M424DllBallStruct2 *var_r28; + Vec *var_r27; + + sp8 = &lbl_1_bss_60[var_r30]; + var_r27 = fn_1_89D4(arg0); + sp30 = *var_r27; + for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) { + if ((var_r30 != arg0) && (fn_1_8950(var_r30) < 3)) { + var_r28 = &lbl_1_bss_60[var_r30]; + var_r31 = fn_1_89D4(var_r30); + sp24 = *var_r31; + VECSubtract(&sp24, &sp30, &sp18); + var_f30 = VECMag(&sp18); + if (var_f30 < 200.0f) { + if (var_f30 > 0.0f) { + temp_f31 = 1.0f / var_f30; + sp18.x *= temp_f31; + sp18.y *= temp_f31; + sp18.z *= temp_f31; + } + else { + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 1.0f; + } + temp_f31 = 1.0f + (200.0f - var_f30); + sp24.x += (sp18.x * temp_f31); + sp24.z += (sp18.z * temp_f31); + var_r31->x = sp24.x; + var_r31->z = sp24.z; + if ((var_r28->unk4 < 3) && (fn_1_907C(&sp24, &spC) != 0)) { + var_r31->x = sp24.x = spC.x; + var_r31->z = sp24.z = spC.z; + } + if (arg1 > 0) { + arg1--; + fn_1_C604(var_r30, arg1); + } + } + } + } +} + +void fn_1_C854(void) +{ + fn_1_C2E0(0); +} + +s32 fn_1_C878(s16 arg0, const char *arg1, Mtx arg2, s32 arg3) +{ + Mtx sp44; + Mtx sp14; + HsfData *temp_r30; + ModelData *temp_r31; + + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->hsfData; + lbl_1_bss_6C8 = 0; + if (temp_r31->unk_08 != -1) { + lbl_1_bss_6C4 = 1; + } + else { + lbl_1_bss_6C4 = 0; + } + mtxRot(sp14, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); + MTXScale(sp44, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); + MTXConcat(sp14, sp44, sp44); + mtxTransCat(sp44, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); + if (arg3 != 0) { + MTXConcat(arg2, sp44, sp44); + } + fn_1_C99C(temp_r30->root, sp44, arg1, arg2); + return lbl_1_bss_6C8; +} + +void fn_1_C99C(HsfObject *arg0, Mtx arg1, const char *arg2, Mtx arg3) +{ + Mtx spF8; + Mtx spC8; + Mtx sp98; + Mtx sp68; + Mtx sp38; + Mtx sp8; + HsfTransform *var_r31; + HsfTransform *var_r30; + HsfTransform *var_r29; + HsfObject *temp_r28; + HsfObject *temp_r27; + u32 var_r25; + u32 var_r24; + u32 var_r23; + + if (lbl_1_bss_6C8 == 0) { + if (lbl_1_bss_6C4 != 0) { + var_r31 = &arg0->data.curr; + } + else { + var_r31 = &arg0->data.base; + } + if ((var_r31->scale.x <= 0.0f) && (var_r31->scale.y <= 0.0f) && (var_r31->scale.z <= 0.0f)) { + MTXCopy(arg1, spF8); + OSReport("OBJ MTX CHECK ERROR %s \n", arg0->name); + } + else { + mtxRot(spC8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + MTXScale(spF8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(spC8, spF8, spF8); + mtxTransCat(spF8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + MTXConcat(arg1, spF8, spF8); + } + if (lbl_1_bss_6C0 != 0) { + OSReport("%s \n", arg0->name); + } + if (strcmp(arg2, arg0->name) == 0) { + MTXCopy(spF8, arg3); + lbl_1_bss_6C8 = 1; + } + for (var_r25 = 0; var_r25 < arg0->data.childrenCount; var_r25++) { + temp_r28 = arg0->data.children[var_r25]; + if (lbl_1_bss_6C8 == 0) { + if (lbl_1_bss_6C4 != 0) { + var_r30 = &temp_r28->data.curr; + } + else { + var_r30 = &temp_r28->data.base; + } + if ((var_r30->scale.x <= 0.0f) && (var_r30->scale.y <= 0.0f) && (var_r30->scale.z <= 0.0f)) { + MTXCopy(spF8, sp68); + OSReport("OBJ MTX CHECK ERROR %s \n", temp_r28->name); + } + else { + mtxRot(sp98, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + MTXScale(sp68, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); + MTXConcat(sp98, sp68, sp68); + mtxTransCat(sp68, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); + MTXConcat(spF8, sp68, sp68); + } + if (lbl_1_bss_6C0 != 0) { + OSReport("%s \n", temp_r28->name); + } + if (strcmp(arg2, temp_r28->name) == 0) { + MTXCopy(sp68, arg3); + lbl_1_bss_6C8 = 1; + } + for (var_r24 = 0; var_r24 < temp_r28->data.childrenCount; var_r24++) { + temp_r27 = temp_r28->data.children[var_r24]; + if (lbl_1_bss_6C8 == 0) { + if (lbl_1_bss_6C4 != 0) { + var_r29 = &temp_r27->data.curr; + } + else { + var_r29 = &temp_r27->data.base; + } + if ((var_r29->scale.x <= 0.0f) && (var_r29->scale.y <= 0.0f) && (var_r29->scale.z <= 0.0f)) { + MTXCopy(sp68, sp8); + OSReport("OBJ MTX CHECK ERROR %s \n", temp_r27->name); + } + else { + mtxRot(sp38, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); + MTXScale(sp8, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z); + MTXConcat(sp38, sp8, sp8); + mtxTransCat(sp8, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + MTXConcat(sp68, sp8, sp8); + } + if (lbl_1_bss_6C0 != 0) { + OSReport("%s \n", temp_r27->name); + } + if (strcmp(arg2, temp_r27->name) == 0) { + MTXCopy(sp8, arg3); + lbl_1_bss_6C8 = 1; + } + for (var_r23 = 0; var_r23 < temp_r27->data.childrenCount; var_r23++) { + fn_1_C99C(temp_r27->data.children[var_r23], sp8, arg2, arg3); + } + } + } + } + } + } +} + +void fn_1_CE74(s32 arg0) +{ + ModelData *temp_r31; + + temp_r31 = &Hu3DData[arg0]; + if (temp_r31->unk_08 != -1) { + Hu3DMotionExec(arg0, temp_r31->unk_08, temp_r31->unk_64, 0); + } + if (temp_r31->unk_0C != -1) { + Hu3DSubMotionExec(arg0); + } + if (temp_r31->hsfData->cenvCnt != 0) { + EnvelopeProc(temp_r31->hsfData); + } +} + +void fn_1_CF00(Process *arg0) +{ + M424DllClawStruct3 *var_r31; + s32 var_r30; + + omAddObjEx(arg0, 0x40, 0, 0, -1, fn_1_CF80); + var_r31 = &lbl_1_bss_640[0]; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + var_r31->unk0 = -1; + var_r31->unk4 = -1; + } +} + +void fn_1_CF80(omObjData *arg0) +{ + M424DllClawStruct3 *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_bss_640[0]; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if ((var_r31->unk0 >= 0) && (var_r31->unk4 > 0)) { + if (--var_r31->unk4 <= 0) { + HuAudFXPlay(var_r31->unk0); + var_r31->unk0 = -1; + var_r31->unk4 = -1; + } + } + } +} + +s32 fn_1_D010(s32 arg0, s32 arg1) +{ + M424DllClawStruct3 *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_bss_640[0]; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk0 == -1) + break; + } + if (var_r30 >= 0x10) { + return -1; + } + var_r31->unk0 = arg0; + var_r31->unk4 = arg1; + return var_r30; +} diff --git a/src/REL/m424Dll/main.c b/src/REL/m424Dll/main.c new file mode 100644 index 00000000..0b9f27ba --- /dev/null +++ b/src/REL/m424Dll/main.c @@ -0,0 +1,421 @@ +#include "REL/m424Dll.h" + +#include "ext_math.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/wipe.h" + +// BSS +Process* lbl_1_bss_4C; +s32 lbl_1_bss_48; +s32 lbl_1_bss_44; +s32 lbl_1_bss_40; +s32 lbl_1_bss_3C; +s32 lbl_1_bss_38; // UNUSED +s32 lbl_1_bss_34; +s32 lbl_1_bss_30; +s32 lbl_1_bss_2C; +s16 lbl_1_bss_24[4]; +s16 lbl_1_bss_1C[4]; +omObjData* lbl_1_bss_18; +omObjData* lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +f32 lbl_1_bss_4[2]; // UNUSED +f32 lbl_1_bss_0; + +// data +M424DllMainStruct lbl_1_data_0[3] = { + { + { 320.0f, 0.0f, 0.0f }, + { 201.0f, 175.0f, 72.0f }, + 2025.0f + }, + { + { 320.0f, 0.0f, 0.0f }, + { 0.0f, 225.0f, -72.0f }, + 550.0f + }, + { + { 320.0f, 0.0f, 0.0f }, + { 401.0f, 175.0f, 72.0f }, + 625.0f + } +}; +Vec lbl_1_data_54 = { 1000.0f, 2000.0f, 1000.0f }; +Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_6C = { 0.0f, 0.0f, -450.0f }; + +// PROTO +void fn_1_264(omObjData* object); +void fn_1_41C(omObjData* object); +void fn_1_EE0(omObjData* object); +void fn_1_F40(omObjData* object); +void fn_1_FF0(void); +void fn_1_11EC(omObjData* object); +void fn_1_1204(s32, s32, f32); +f32 fn_1_16C0(f32, f32, f32); + +/// FUNCTIONS /// + +void ObjectSetup(void) { + s32 var_r31; + Process* var_r30; + CameraData* var_r29; + + OSReport("******* M424ObjectSetup *********\n"); + var_r30 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_4C = var_r30; + omGameSysInit(var_r30); + fn_1_FF0(); + var_r29 = &Hu3DCamera[0]; + var_r29->fov = -1.0f; + Hu3DLightAllKill(); + Hu3DLighInit(); + HuAudSndGrpSet(0x31); + lbl_1_bss_18 = omAddObjEx(var_r30, 0xFF, 2, 0, -1, fn_1_264); + lbl_1_bss_48 = lbl_1_bss_44 = -1; + lbl_1_bss_40 = 0; + lbl_1_bss_3C = 0; + lbl_1_bss_34 = 0; + lbl_1_bss_2C = -1; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_24[var_r31] = -1; + lbl_1_bss_1C[var_r31] = -1; + } + Hu3DShadowCreate(30.0f, 1000.0f, 250000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_6C); + Hu3DBGColorSet(0xFFU, 0xFFU, 0xFFU); +} + +Vec lbl_1_data_9C = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_A8 = { -1.0f, -2.0f, -1.0f }; +GXColor lbl_1_data_B4 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_264(omObjData* object) { + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r29 = Hu3DGLightCreateV(&lbl_1_data_9C, &lbl_1_data_A8, &lbl_1_data_B4); + Hu3DGLightStaticSet(var_r29, 1); + Hu3DGLightInfinitytSet(var_r29); + + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[var_r31].group == 0) { + lbl_1_bss_24[3] = var_r31; + lbl_1_bss_1C[3] = GWPlayerCfg[var_r31].character; + } else { + lbl_1_bss_24[var_r30] = var_r31; + lbl_1_bss_1C[var_r30] = GWPlayerCfg[var_r31].character; + var_r30++; + } + } + if (var_r30 >= 4) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_24[var_r31] = var_r31; + lbl_1_bss_1C[var_r31] = GWPlayerCfg[var_r31].character; + } + } + fn_1_1AB8(lbl_1_bss_4C); + fn_1_2720(lbl_1_bss_4C); + fn_1_93F0(lbl_1_bss_4C); + object->func = fn_1_41C; +} + +void fn_1_41C(omObjData* object) { + s16 sp16; + s16 sp12; + s16 spE; + s16 spA; + f32 var_f31; // ! - uninitalized + s32 var_r31; + s32 var_r30; + CameraData* var_r29; + + switch (lbl_1_bss_40) { + case 0: + lbl_1_bss_0 += fn_1_213C(); + fn_1_1204(2, 2, var_f31); + if (lbl_1_bss_0 >= 360.0f) { + WipeCreate(1, 0, 0x3C); + var_r29 = &Hu3DCamera[0]; + var_r29->fov = 45.0f; + lbl_1_bss_40 = 1; + lbl_1_bss_3C = 0; + } + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_40 = 2; + lbl_1_bss_3C = 0; + } + break; + case 2: + if (++lbl_1_bss_3C >= 120.0f) { + lbl_1_bss_48 = MGSeqCreate(3, 0); + lbl_1_bss_40 = 3; + lbl_1_bss_3C = 0; + lbl_1_bss_34 = 0; + } + break; + case 3: + lbl_1_bss_34++; + var_f31 = lbl_1_bss_34 / 60.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind((90.0f * (var_f31 * var_f31))); + fn_1_1204(2, 0, var_f31); + if (lbl_1_bss_48 != -1) { + var_r31 = MGSeqStatGet(lbl_1_bss_48); + if (((var_r31 & 0x10) != 0) && (lbl_1_bss_2C == -1)) { + lbl_1_bss_2C = HuAudSeqPlay(0x48); + } + } else { + var_r31 = 0; + } + if ((lbl_1_bss_48 == -1) || (var_r31 == 0)) { + if (lbl_1_bss_34 >= 60.0f) { + lbl_1_bss_48 = -1; + lbl_1_bss_40 = 4; + lbl_1_bss_3C = 0; + lbl_1_bss_34 = 0xE10; + lbl_1_bss_44 = MGSeqCreate(1, lbl_1_bss_34 / 60, -1, -1); + } + } + break; + case 4: + var_r30 = (lbl_1_bss_34 + 0x3B) / 60; + if (var_r30 < 0) { + var_r30 = 0; + } + MGSeqParamSet(lbl_1_bss_44, 1, var_r30); + if ((--lbl_1_bss_34 < -1) || (fn_1_B888() != 0)) { + MGSeqParamSet(lbl_1_bss_44, 2, -1); + lbl_1_bss_44 = -1; + lbl_1_bss_48 = MGSeqCreate(3, 1); + if (lbl_1_bss_2C != -1) { + HuAudSeqFadeOut(lbl_1_bss_2C, 0x64); + } + lbl_1_bss_40 = 5; + lbl_1_bss_3C = 0; + } + break; + case 5: + if ((lbl_1_bss_48 == -1) || ((MGSeqStatGet(lbl_1_bss_48) == 0) && (fn_1_B8AC() != 0) && (fn_1_8A2C() != 0) && (fn_1_213C() <= 0.0f))) { + if (fn_1_B888() != 0) { + lbl_1_bss_30 = 0; + } else { + lbl_1_bss_30 = 1; + } + HuAudAllStop(); + lbl_1_bss_40 = 6; + lbl_1_bss_3C = 0; + } + break; + case 6: + if (lbl_1_bss_30 == 0) { + if (fn_1_B924() != 0) { + lbl_1_bss_40 = 7; + lbl_1_bss_3C = 0; + } + } else { + if (++lbl_1_bss_3C >= 120.0f) { + lbl_1_bss_40 = 7; + lbl_1_bss_3C = 0; + } + } + break; + case 7: + if (lbl_1_bss_30 != 0) { + lbl_1_bss_48 = MGSeqCreate(5, 3, lbl_1_bss_1C[0], lbl_1_bss_1C[1], lbl_1_bss_1C[2], -1); + GWPlayerCoinWinSet(lbl_1_bss_24[0], GWPlayerCoinWinGet(lbl_1_bss_24[0]) + 10); + GWPlayerCoinWinSet(lbl_1_bss_24[1], GWPlayerCoinWinGet(lbl_1_bss_24[1]) + 10); + GWPlayerCoinWinSet(lbl_1_bss_24[2], GWPlayerCoinWinGet(lbl_1_bss_24[2]) + 10); + HuAudSStreamPlay(1); + lbl_1_bss_40 = 8; + lbl_1_bss_34 = 0; + } else { + lbl_1_bss_48 = MGSeqCreate(5, 3, lbl_1_bss_1C[3], -1, -1, -1); + GWPlayerCoinWinSet(lbl_1_bss_24[3], GWPlayerCoinWinGet(lbl_1_bss_24[3]) + 10); + HuAudSStreamPlay(1); + lbl_1_bss_40 = 8; + lbl_1_bss_34 = 0; + } + break; + case 8: + if (lbl_1_bss_30 == 0) { + var_f31 = lbl_1_bss_34 / 60.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind(90.0f * (var_f31 * var_f31)); + fn_1_1204(0, 1, var_f31); + } + if (++lbl_1_bss_34 >= 210.0f) { + lbl_1_bss_48 = -1; + lbl_1_bss_40 = 9; + lbl_1_bss_34 = 0; + } + break; + case 9: + WipeCreate(2, 0, 0x3C); + object->func = fn_1_EE0; + break; + } + fn_1_F40(object); +} + +void fn_1_EE0(omObjData* object) { + if (WipeStatGet() == 0) { + Hu3DBGColorSet(0, 0, 0); + fn_1_1B8C(); + fn_1_2880(); + fn_1_94A4(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_F40(omObjData* object) { + s32 var_r30; + + var_r30 = 0; + if ((WipeStatGet() != 0) || (object->func == fn_1_EE0)) { + return; + } + if (omSysExitReq != 0) { + var_r30 = 1; + } + if (var_r30 != 0) { + WipeCreate(2, 0, 0x3C); + HuAudStreamFadeOut(0x1E); + object->func = fn_1_EE0; + } +} + +s32 fn_1_FE0(void) { + return lbl_1_bss_40; +} + +void fn_1_FF0(void) { + omObjData* var_r31; + + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 50.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x280, 0x1E0); + var_r31 = lbl_1_bss_14 = omAddObjEx(lbl_1_bss_4C, 0x7FDA, 0, 0, -1, omOutView); + var_r31->work[0] = 1; + CRot.x = lbl_1_data_0[0].rot.x; + CRot.y = lbl_1_data_0[0].rot.y; + CRot.z = lbl_1_data_0[0].rot.z; + Center.x = lbl_1_data_0[0].center.x; + Center.y = lbl_1_data_0[0].center.y; + Center.z = lbl_1_data_0[0].center.z; + CZoom = lbl_1_data_0[0].zoom; + lbl_1_bss_C = 0; + lbl_1_bss_10 = -1; + omAddObjEx(lbl_1_bss_4C, 0xFF, 0, 0, -1, fn_1_11EC); +} + +void fn_1_11EC(omObjData* object) {} +void fn_1_11F0(void) {} + +s32 fn_1_11F4(void) { + return lbl_1_bss_C; +} + +void fn_1_1204(s32 arg0, s32 arg1, f32 arg2) { + M424DllMainStruct* temp_r30; + M424DllMainStruct* temp_r31; + + temp_r31 = &lbl_1_data_0[arg0]; + temp_r30 = &lbl_1_data_0[arg1]; + CRot.x = fn_1_16C0(arg2, temp_r31->rot.x, temp_r30->rot.x); + CRot.y = fn_1_16C0(arg2, temp_r31->rot.y, temp_r30->rot.y); + CRot.z = fn_1_16C0(arg2, temp_r31->rot.z, temp_r30->rot.z); + Center.x = temp_r31->center.x + (arg2 * (temp_r30->center.x - temp_r31->center.x)); + Center.y = temp_r31->center.y + (arg2 * (temp_r30->center.y - temp_r31->center.y)); + Center.z = temp_r31->center.z + (arg2 * (temp_r30->center.z - temp_r31->center.z)); + CZoom = temp_r31->zoom + (arg2 * (temp_r30->zoom - temp_r31->zoom)); +} + +f32 fn_1_1358(f32 arg8, f32 arg9) { + f32 var_f31; + + if (arg8 >= 360.0f) { + arg8 -= 360.0f; + } else if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (arg9 >= 360.0f) { + arg9 -= 360.0f; + } else if (arg9 < 0.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } else { + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + } + return var_f31; +} + +f32 fn_1_1470(f32 arg8, f32 arg9, f32 argA) { + f32 var_f30; + f32 var_f31; + + if (arg8 >= 360.0) { + arg8 -= 360.0; + } else if (arg8 < 0.0) { + arg8 += 360.0; + } + if (arg9 >= 360.0) { + arg9 -= 360.0; + } else if (arg9 < 0.0) { + arg9 += 360.0; + } + var_f30 = (360.0 + (arg8 - arg9)); + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= argA) { + var_f31 = var_f30; + } else { + var_f31 = argA; + } + } else { + if ((360.0 - var_f30) <= argA) { + var_f31 = -(360.0 - var_f30); + } else { + var_f31 = -argA; + } + } + var_f31 = var_f31 + arg9; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + } else if (var_f31 < 0.0) { + var_f31 += 360.0; + } + return var_f31; +} + +f32 fn_1_16C0(f32 arg0, f32 arg1, f32 arg2) { + f32 temp_f24; + f32 var_f23; + + var_f23 = fn_1_1358(arg2, arg1); + temp_f24 = fabs(var_f23 * arg0); + return fn_1_1470(arg2, arg1, temp_f24); +} diff --git a/src/REL/m424Dll/map.c b/src/REL/m424Dll/map.c new file mode 100644 index 00000000..4536b396 --- /dev/null +++ b/src/REL/m424Dll/map.c @@ -0,0 +1,293 @@ +#include "REL/m424Dll.h" + +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "math.h" + + +// STRUCT +typedef struct _M424DllMapStruct { + f32 unk0; + f32 unk4; + Mtx unk8; + s32 unk38; + f32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; + s32 unk4C; + s32 unk50; +} M424DllMapStruct; // sizeof 0x54 + +// BSS +Process *lbl_1_bss_54; +omObjData *lbl_1_bss_50; + +// DATA +Vec lbl_1_data_E0 = { 0.0f, 3000.0f, 1.0f }; +Vec lbl_1_data_EC = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_F8 = { 0.0f, 0.0f, 0.0f }; + +// PROTO +void fn_1_1BB8(omObjData *); +void fn_1_1E1C(omObjData *); +void fn_1_2130(omObjData *); +void fn_1_2438(f32); + +omObjData *fn_1_1AB8(Process *arg0) +{ + lbl_1_bss_54 = arg0; + lbl_1_bss_50 = omAddObjEx(arg0, 0x7F, 6, 0, -1, fn_1_1BB8); + lbl_1_bss_50->data = NULL; + Hu3DShadowCreate(45.0f, 1000.0f, 250000.0f); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowPosSet(&lbl_1_data_E0, &lbl_1_data_EC, &lbl_1_data_F8); + return lbl_1_bss_50; +} + +void fn_1_1B8C(void) +{ + fn_1_2130(lbl_1_bss_50); +} + +void fn_1_1BB8(omObjData *arg0) +{ + M424DllMapStruct *var_r30; + + var_r30 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, 0x10000000); + memset(var_r30, 0, 0x54); + var_r30->unk0 = 0.0f; + var_r30->unk4 = 0.0f; + var_r30->unk38 = -1; + var_r30->unk3C = 0.0f; + var_r30->unk40 = 0; + var_r30->unk44 = -1; + var_r30->unk48 = 0; + var_r30->unk4C = 0; + var_r30->unk50 = -1; + arg0->model[0] = Hu3DModelCreateFile(0x370017); + arg0->model[1] = Hu3DModelCreateFile(0x370018); + arg0->model[2] = Hu3DModelCreateFile(0x370019); + arg0->model[3] = Hu3DModelCreateFile(0x37001A); + arg0->model[4] = Hu3DModelCreateFile(0x37001B); + arg0->model[5] = Hu3DModelCreateFile(0x37001C); + Hu3DModelAttrSet(arg0->model[4], 1); + Hu3DMotionSpeedSet(arg0->model[1], var_r30->unk0); + Hu3DModelAttrSet(arg0->model[1], 0x40000001); + Hu3DMotionSpeedSet(arg0->model[0], 0.15f); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelPosSet(arg0->model[2], 847.135f, 0.0f, 424.56f); + Hu3DMotionSpeedSet(arg0->model[4], 2.0f); + Hu3DModelAttrSet(arg0->model[4], 0x40000001); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelShadowMapSet(arg0->model[1]); + Hu3DModelShadowMapSet(arg0->model[2]); + arg0->func = fn_1_1E1C; +} + +void fn_1_1E1C(omObjData *arg0) +{ + f32 temp_f31; + M424DllMapStruct *temp_r31; + + temp_r31 = arg0->data; + if (temp_r31->unk40 > 0) { + fn_1_2438(temp_r31->unk3C); + if ((--temp_r31->unk40 <= 0) && (temp_r31->unk44 != -1)) { + HuAudFXStop(temp_r31->unk44); + temp_r31->unk44 = -1; + } + } + switch (fn_1_FE0()) { + case 0: + temp_r31->unk0 = 0.5f; + break; + case 1: + case 2: + temp_r31->unk0 = 0.0f; + break; + case 3: + case 4: + temp_r31->unk0 += 0.001f; + if (temp_r31->unk0 > 0.04f) { + temp_r31->unk0 = 0.04f; + } + if (temp_r31->unk38 != -1) + break; + + temp_r31->unk38 = HuAudFXPlay(0x626); + break; + default: + if ((fn_1_B804() == 0) && (fn_1_8A2C() != 0)) { + temp_r31->unk0 *= 0.9f; + if (temp_r31->unk0 < 0.01f) { + temp_r31->unk0 = 0.0f; + } + temp_f31 = temp_r31->unk0 / 0.04f; + if (temp_r31->unk38 != -1) { + HuAudFXVolSet(temp_r31->unk38, (s16)(-8191.0f * (1.0f - temp_f31))); + HuAudFXPitchSet(temp_r31->unk38, (s16)(127.0f * temp_f31)); + if (temp_f31 <= 0.0f) { + HuAudFXStop(temp_r31->unk38); + temp_r31->unk38 = -1; + } + } + } + break; + } + + if (temp_r31->unk48 != 0) { + if (temp_r31->unk4C != 0) { + temp_r31->unk4C = (temp_r31->unk4C - 1); + } + else { + temp_r31->unk48 = (temp_r31->unk48 - 1); + if (temp_r31->unk48 != 0) { + Hu3DModelAttrReset(arg0->model[4], 1); + Hu3DModelAttrSet(arg0->model[5], 1); + } + else { + Hu3DModelAttrSet(arg0->model[4], 1); + Hu3DModelAttrReset(arg0->model[5], 1); + if (temp_r31->unk50 != -1) { + HuAudFXStop(temp_r31->unk50); + temp_r31->unk50 = -1; + } + } + } + } + temp_r31->unk4 = (20.0f * temp_r31->unk0); + MTXRotRad(temp_r31->unk8, 0x59, MTXDegToRad(temp_r31->unk4)); + Hu3DMotionSpeedSet(arg0->model[1], temp_r31->unk0); +} + +void fn_1_2130(omObjData *arg0) +{ + arg0->func = NULL; +} + +f32 fn_1_213C(void) +{ + M424DllMapStruct *var_r31; + if (!lbl_1_bss_50) { + return 0.0f; + } + if (!lbl_1_bss_50->data) { + return 0.0f; + } + var_r31 = lbl_1_bss_50->data; + return var_r31->unk4; +} + +void fn_1_21B0(Mtx arg0) +{ + M424DllMapStruct *var_r31; + if (lbl_1_bss_50 && lbl_1_bss_50->data) { + var_r31 = lbl_1_bss_50->data; + MTXCopy(var_r31->unk8, *(Mtx *)&arg0); + } +} + +void fn_1_2220(Vec *arg0, Vec *arg1) +{ + Vec spC; + M424DllMapStruct *temp_r30; + + if (lbl_1_bss_50 && lbl_1_bss_50->data) { + temp_r30 = lbl_1_bss_50->data; + if (sqrtf((arg0->x * arg0->x) + (arg0->z * arg0->z)) < 700.0f) { + spC.x = (temp_r30->unk8[0][0] * arg0->x) + (temp_r30->unk8[0][2] * arg0->z); + spC.z = (temp_r30->unk8[2][0] * arg0->x) + (temp_r30->unk8[2][2] * arg0->z); + spC.y = arg0->y; + } + else { + spC = *arg0; + } + VECSubtract(&spC, arg0, &spC); + *arg1 = spC; + } +} + +void fn_1_2438(f32 arg0) +{ + M424DllMapStruct *spC; + HsfAttribute *var_r31; + ModelData *temp_r30; + HsfData *temp_r29; + s32 var_r28; + HsfBitmap *var_r27; + omObjData *var_r26; + + if (lbl_1_bss_50 && lbl_1_bss_50->data) { + var_r26 = lbl_1_bss_50; + spC = lbl_1_bss_50->data; + temp_r30 = &Hu3DData[var_r26->model[2]]; + temp_r29 = temp_r30->hsfData; + var_r31 = temp_r30->hsfData->attribute; + for (var_r28 = 0; var_r28 < temp_r29->attributeCnt; var_r28++, var_r31++) { + var_r27 = var_r31->bitmap; + if (strcmp("cr_dk2", var_r27->name) == 0) + break; + } + if (var_r28 < temp_r29->attributeCnt) { + var_r31->unk30 += arg0; + } + } +} + +void fn_1_252C(f32 arg8, s32 arg0) +{ + omObjData *sp10; + M424DllMapStruct *temp_r31; + + if (lbl_1_bss_50 && lbl_1_bss_50->data) { + sp10 = lbl_1_bss_50; + temp_r31 = lbl_1_bss_50->data; + temp_r31->unk44 = HuAudFXPlay(0x627); + temp_r31->unk3C = arg8; + temp_r31->unk40 = arg0; + } +} + +f32 fn_1_25C0(void) +{ + omObjData *sp8; + M424DllMapStruct *temp_r31; + + if (!lbl_1_bss_50) { + return 0.0f; + } + if (!lbl_1_bss_50->data) { + return 0.0f; + } + sp8 = lbl_1_bss_50; + temp_r31 = lbl_1_bss_50->data; + if (temp_r31->unk40 != 0) { + return 250.0f * temp_r31->unk3C; + } + return 0.0f; +} + +void fn_1_2670(s32 arg0, s32 arg1) +{ + omObjData *temp_r30; + M424DllMapStruct *temp_r31; + + if (lbl_1_bss_50 && lbl_1_bss_50->data) { + temp_r30 = lbl_1_bss_50; + temp_r31 = lbl_1_bss_50->data; + temp_r31->unk50 = HuAudFXPlay(0x629); + temp_r31->unk48 = arg0; + temp_r31->unk4C = arg1; + Hu3DMotionTimeSet(temp_r30->model[4], 0.0f); + } +} + +// UNUSED (guessing types) +M424DllMainStruct lbl_1_data_10C = { { 0.0f, 0.0f, 5500.0f }, { -3950.0f, 0.0f, -0.7f }, 0.6f }; + +GXColor lbl_1_data_128 = { 0xFF, 0xFF, 0xFF, 0xFF }; +M424DllMainStruct lbl_1_data_12C = { { 0.0f, 5500.0f, -3950.0f }, { 0.0f, 1.0f, 0.0f }, 0.0f }; + +s32 lbl_1_data_148[2] = { 0 }; diff --git a/src/REL/m425Dll/main.c b/src/REL/m425Dll/main.c new file mode 100644 index 00000000..7d1a75d0 --- /dev/null +++ b/src/REL/m425Dll/main.c @@ -0,0 +1,1711 @@ +#define HUSPR_USE_OLD_DEFS +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "math.h" +#include "string.h" + +#include "REL/m425Dll.h" + +extern u8 texMtxTbl[]; // TODO maybe put in hsfdraw.h? + +typedef struct M425DllWork { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + char unk07[2]; + u8 unk_09; + u8 unk_0A; + u8 unk_0B; + u8 unk_0C; + char unk0D; + s16 unk_0E; + float unk_10; + float unk_14; + Vec unk_18; + Vec unk_24; + Vec unk_30; + float unk_3C[8]; + s32 unk_5C; + float unk_60; + s32 unk_64; + s32 unk_68; +} M425DllWork; /* size = 0x6C */ + +typedef struct M425DllWork2 { + char unk00[4]; + Vec unk_04; + Vec unk_10; + Vec unk_1C; + Vec unk_28; + float unk_34; + float unk_38; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + char unk4C[0x18]; + float unk_64; + float unk_68; + float unk_6C; + char unk70[4]; + s16 unk_74; + s16 unk_76; +} M425DllWork2; /* size = 0x78 */ + +typedef struct M425DllUnkStruct { + s16 unk_00; + s16 unk_02; + s16 unk_04; + char unk06[0x42]; +} M425DllUnkStruct; /* size = 0x48 */ + +typedef struct M425DllUnkStruct2 { + AnimData *unk_00; + s16 unk_04; + Vec unk_08; + Mtx unk_14; + Vec2f *unk_44; + s16 unk_48; +} M425DllUnkStruct2; /* size = 0x4C */ + +typedef struct M425DllUnkStruct3 { + char unk00[0xC]; + s16 unk_0C; + void *unk_10; + Vec *unk_14; + GXColor *unk_18; + Vec *unk_1C; + GXColor unk_20; + GXColor unk_24; + s16 unk_28; + s16 unk_2A; + M425DllUnkStruct2 *unk_2C; +} M425DllUnkStruct3; /* size = 0x30 */ + +typedef struct M425DllUnkBss10Struct { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char pad_01[1]; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ float unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ float unk_14; + /* 0x18 */ float unk_18; + /* 0x1C */ float unk_1C; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ float unk_30; + /* 0x34 */ float unk_34; + /* 0x38 */ float unk_38; + /* 0x3C */ float unk_3C; + /* 0x40 */ float unk_40; + union { + /* 0x44 */ s16 unk_44[0x20]; + struct { + float unk_44f; + float unk_48; + char unk4C[4]; + float unk_50; + char unk54[0x30]; + }; + }; +} M425DllUnkBss10Struct; /* size = 0x84 */ + +void fn_1_1B40(omObjData *object); +void fn_1_2784(omObjData *object); +void fn_1_2870(omObjData *object); +void fn_1_2A94(s16 arg0, Vec *arg1, Vec *arg2, float arg8); +void fn_1_2B2C(omObjData *object); +void fn_1_2E78(omObjData *object); +void fn_1_33E0(omObjData *object); +void fn_1_3764(omObjData *object); +s16 fn_1_3ED0(s32 arg0, s16 arg1, ParticleHook arg2); +void fn_1_3F80(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_460(omObjData *object); +void fn_1_480(omObjData *object); +void fn_1_4A88(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_5044(s16 arg0); +void fn_1_573C(Vec2f **arg0, s16 arg1, Vec2f *arg2); +void fn_1_57D4(ModelData *model, Mtx matrix); +void fn_1_5C20(ModelData *model, Mtx matrix); +s32 fn_1_64D4(void); +void fn_1_8E4(omObjData *object); +void fn_1_F48(omObjData *object); +void fn_1_FA8(omObjData *object); + +s16 lbl_1_data_0 = -1; +Vec lbl_1_data_4 = { -200.0f, 2500.0f, 1200.0f }; +Vec lbl_1_data_10 = { 0.2f, -0.8f, -0.2f }; +float lbl_1_data_1C[9] = { 0.0f, 2500.0f, 1500.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }; +GXColor lbl_1_data_40 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +omObjData *lbl_1_bss_668; +omObjData *lbl_1_bss_664; +// M425DllWork2 +omObjData *lbl_1_bss_660; +omObjData *lbl_1_bss_65C; +// M425DllWork +omObjData *lbl_1_bss_64C[4]; +u16 lbl_1_bss_648; +s16 lbl_1_bss_646; +s16 lbl_1_bss_644; +s16 lbl_1_bss_642; +s16 lbl_1_bss_640; +M425DllUnkBss10Struct lbl_1_bss_10[0xC]; +float lbl_1_bss_C; +float lbl_1_bss_8; +float lbl_1_bss_4; +char lbl_1_bss_0[4]; + +void ObjectSetup(void) +{ + s32 var_r31; + Process *process; + omObjData *object; + s32 var_r28; + LightData *var_r27; + CameraData *var_r26; + s32 var_r25; + s32 var_r24; + s32 sp8[4] = { 0, 0, 0, 0 }; + + OSReport("******* M425ObjectSetup *********\n"); + Hu3DLighInit(); + var_r24 = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, &lbl_1_data_40); + Hu3DGLightInfinitytSet(var_r24); + var_r27 = Hu3DGlobalLight; + var_r27->unk_00 |= 0x8000; + process = omInitObjMan(0x32, 0x2000); + var_r25 = frand() & 0x1F; + for (var_r31 = 0; var_r31 < var_r25; var_r31++) { + fn_1_64D4(); + } + CRot.x = 8.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 430.0f; + Center.z = -400.0f; + CZoom = 1650.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 100.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_664 = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutView); + var_r26 = Hu3DCamera; + var_r26->fov = -1.0f; + lbl_1_bss_668 = omAddObjEx(process, 0x10, 8, 0, -1, fn_1_460); + lbl_1_bss_65C = omAddObjEx(process, 0x20, 0x10, 0, -1, fn_1_FA8); + lbl_1_bss_660 = omAddObjEx(process, 0x50, 0x10, 0, -1, fn_1_2784); + fn_1_6A0C(process, 0x40); + omMakeGroupEx(process, 0, 4); + omGetGroupMemberListEx(process, 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + object = omAddObjEx(process, 0x30, 2, 0xA, 0, fn_1_2B2C); + lbl_1_bss_64C[var_r31] = object; + object->work[0] = var_r31; + object->work[1] = GWPlayerCfg[var_r31].group; + for (var_r28 = object->work[1] * 2; var_r28 < 4; var_r28++) { + if (sp8[var_r28] == 0) { + object->work[1] = var_r28; + sp8[var_r28]++; + break; + } + } + } + omGameSysInit(process); + HuAudSndGrpSet(0x32); +} + +void fn_1_460(omObjData *object) +{ + lbl_1_bss_648 = 0; + object->func = fn_1_480; +} + +void fn_1_480(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + CameraData *var_r30; + + switch (lbl_1_bss_648) { + case 0: + sp14.x = -250.0f; + sp14.y = 225.0f; + sp14.z = 200.0f; + sp8.x = 22.0f; + sp8.y = 10.0f; + sp8.z = 0.0f; + var_f31 = 500.0f; + fn_1_2A94(1, &sp14, &sp8, var_f31); + lbl_1_bss_C = -4.866667f; + lbl_1_bss_8 = 600.0f; + sp14.x = -300.0f; + sp14.y = lbl_1_bss_8; + sp14.z = 0.0f; + fn_1_6CD0(0, &sp14); + sp14.x = 300.0f; + fn_1_6CD0(1, &sp14); + var_r30 = Hu3DCamera; + var_r30->fov = 45.0f; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_648++; + break; + case 1: + lbl_1_bss_8 += lbl_1_bss_C; + lbl_1_bss_C += -2.4333334f; + if (lbl_1_bss_8 < 0.0f) { + lbl_1_bss_8 = 0.0f; + lbl_1_bss_648++; + lbl_1_bss_640 = 0x3C; + fn_1_10DB4(0); + fn_1_10DB4(1); + fn_1_10E3C(0); + } + sp14.x = -300.0f; + sp14.y = lbl_1_bss_8; + sp14.z = 0.0f; + fn_1_6CD0(0, &sp14); + sp14.x = 300.0f; + fn_1_6CD0(1, &sp14); + break; + case 2: + if (--lbl_1_bss_640 == 0) { + sp14.x = 0.0f; + sp14.y = 430.0f; + sp14.z = -400.0f; + sp8.x = 8.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1650.0f; + lbl_1_bss_640 = 0x48; + fn_1_2A94(0x3C, &sp14, &sp8, var_f31); + lbl_1_bss_648++; + } + break; + case 3: + if (--lbl_1_bss_640 == 0) { + lbl_1_bss_648 = 4; + object->func = fn_1_8E4; + lbl_1_bss_646 = lbl_1_bss_644 = -1; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_F48; + } +} + +s32 lbl_1_data_68 = -1; +s32 lbl_1_data_6C[0xA] = { 0, 2, 3, 5, 6, 8, 0xA, 9, 0x17, 0x18 }; +Vec lbl_1_data_94[4] = { + { -350.0f, 800.0f, 100.0f }, + { -200.0f, 1000.0f, 0.0f }, + { 200.0f, 1200.0f, 0.0f }, + { 350.0f, 1400.0f, 100.0f }, +}; + +void fn_1_8E4(omObjData *object) +{ + s16 sp8[2]; + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s16 var_r26; + s16 var_r25; + + switch (lbl_1_bss_648) { + case 4: + if (lbl_1_bss_644 == -1) { + lbl_1_bss_642 = 0x708; + lbl_1_bss_644 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_644, 320.0f, 240.0f); + } + else { + if (MGSeqStatGet(lbl_1_bss_644) == 0) { + lbl_1_bss_644 = -1; + lbl_1_bss_648++; + lbl_1_bss_646 = MGSeqCreate(1, lbl_1_bss_642 / 60, -1, -1); + } + } + if ((lbl_1_data_68 == -1) && ((MGSeqStatGet(lbl_1_bss_644) & 0x10) != 0)) { + lbl_1_data_68 = HuAudSeqPlay(0x48); + } + break; + case 5: + var_r30 = 0; + lbl_1_bss_642--; + var_r28 = (lbl_1_bss_642 + 0x3B) / 60; + if (var_r28 < 0) { + var_r28 = 0; + } + MGSeqParamSet(lbl_1_bss_646, 1, var_r28); + if (lbl_1_bss_642 < -1) { + var_r30++; + if ((fn_1_10CF4(0) == 1000.0f) && (fn_1_10CF4(1) == 1000.0f)) { + lbl_1_data_0 = -1; + } + else { + var_f31 = fn_1_10CF4(1); + if (fn_1_10CF4(0) <= var_f31) { + lbl_1_data_0 = 0; + } + else { + lbl_1_data_0 = 1; + } + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (!(fn_1_10CF4(var_r31) > 0.0f)) { + lbl_1_data_0 = var_r31; + var_r30++; + } + } + if (var_r30 != 0) { + lbl_1_bss_648++; + } + break; + case 6: + if (lbl_1_bss_644 == -1) { + lbl_1_bss_644 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_644, 320.0f, 240.0f); + MGSeqParamSet(lbl_1_bss_646, 2, -1); + HuAudSeqFadeOut(lbl_1_data_68, 0x64); + } + else if (MGSeqStatGet(lbl_1_bss_644) == 0) { + lbl_1_bss_644 = -1; + lbl_1_bss_640 = 1; + lbl_1_bss_648++; + } + break; + case 7: + if (--lbl_1_bss_640 <= 0) { + lbl_1_bss_644 = -1; + lbl_1_bss_648++; + } + break; + case 8: + if (lbl_1_data_0 != -1) { + for (var_r31 = 0, var_r29 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_data_0 == OM_GET_DATA_PTR(lbl_1_bss_64C[var_r31], M425DllWork)->unk_02) { + sp8[var_r29] = OM_GET_DATA_PTR(lbl_1_bss_64C[var_r31], M425DllWork)->unk_01; + var_r29++; + GWPlayerCoinWinAdd(var_r31, 10); + } + } + lbl_1_bss_644 = MGSeqCreate(5, 3, sp8[0], sp8[1], -1, -1); + HuAudSStreamPlay(1); + } + else { + lbl_1_bss_644 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + lbl_1_bss_640 = 0xD2; + lbl_1_bss_648++; + break; + case 9: + if (--lbl_1_bss_640 <= 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_F48; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_F48; + } +} + +void fn_1_F48(omObjData *object) +{ + if (WipeStatGet() == 0) { + CharModelKill(-1); + MGSeqKill(lbl_1_bss_646); + MGSeqKillAll(); + fn_1_6C08(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_FA8(omObjData *object) +{ + M425DllUnkBss10Struct *var_r31; + s32 var_r30; + s16 *var_r28; + s32 var_r27; + s32 var_r26; + Vec sp8[] = { + { 475.0f, 800.0f, -1400.0f }, + { -300.0f, 900.0f, -1400.0f }, + { 300.0f, 875.0f, -1450.0f }, + { -575.0f, 850.0f, -1550.0f }, + { 350.0f, 750.0f, -1500.0f }, + { -450.0f, 775.0f, -1550.0f }, + { 325.0f, 725.0f, -1450.0f }, + { -525.0f, 725.0f, -1500.0f }, + { 575.0f, 850.0f, -1550.0f }, + { -350.0f, 750.0f, -1500.0f }, + { 450.0f, 775.0f, -1550.0f }, + { -325.0f, 725.0f, -1450.0f }, + { 525.0f, 725.0f, -1500.0f }, + { -475.0f, 800.0f, -1400.0f }, + { 300.0f, 900.0f, -1400.0f }, + { -300.0f, 875.0f, -1450.0f }, + }; + + var_r30 = Hu3DModelCreateFile(0x380000); + object->model[0] = var_r30; + var_r30 = Hu3DModelCreateFile(0x380001); + object->model[1] = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + var_r30 = Hu3DHookFuncCreate(fn_1_57D4); + object->model[2] = var_r30; + fn_1_5044(var_r30); + var_r30 = fn_1_3ED0(0x1E0020, 0xC8, fn_1_4A88); + object->model[3] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + var_r30 = fn_1_3ED0(0x380005, 1, fn_1_3F80); + object->model[5] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 0; + var_r30 = fn_1_3ED0(0x380008, 0xA, fn_1_3F80); + object->model[6] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 1; + var_r30 = fn_1_3ED0(0x380007, 4, fn_1_3F80); + object->model[7] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 2; + var_r30 = fn_1_3ED0(0x380006, 6, fn_1_3F80); + object->model[8] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 3; + for (var_r27 = 0; var_r27 < 0xC; var_r27++) { + var_r31 = &lbl_1_bss_10[var_r27]; + var_r30 = Hu3DModelCreateFile(0x380002); + var_r31->unk_00 = var_r30; + var_r31->unk_08.x = sp8[var_r27].x; + var_r31->unk_08.y = sp8[var_r27].y; + var_r31->unk_08.z = sp8[var_r27].z; + Hu3DModelPosSet(var_r30, var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z); + Hu3DMotionSpeedSet(var_r30, 6.0f); + var_r31->unk_02 = var_r31->unk_03 = 0; + var_r31->unk_14 = var_r31->unk_18 = var_r31->unk_1C = 0.0f; + var_r31->unk_20 = var_r31->unk_24 = var_r31->unk_28 = 1.0f; + var_r31->unk_38 = var_r31->unk_3C = var_r31->unk_40 = 0.0f; + var_r31->unk_2C = var_r31->unk_08.x; + var_r31->unk_30 = var_r31->unk_08.y; + var_r31->unk_34 = var_r31->unk_08.z; + if ((var_r27 & 1) != 0) { + var_r31->unk_18 = 90.0f; + var_r31->unk_08.y += 650.0; + var_r31->unk_08.x -= 1400.0; + } + else { + var_r31->unk_18 = 90.0f; + } + var_r31->unk_18 += 10.0 * (3.0517578125e-05 * (float)((u16)frand() - 0x8000)); + var_r31->unk_08.z -= 400.0; + var_r31->unk_04 = 100.0 * (0.10000000149011612 + (0.019999999552965164 * (1.52587890625e-05 * (float)(s32)(u16)frand()))); + for (var_r26 = 0; var_r26 < 0x20; var_r26++) { + var_r31->unk_44[var_r26] = 0; + } + var_r31->unk_50 = var_r31->unk_04; + } + HuAudFXPlay(0x633); + HuAudFXPlay(0x635); + object->func = fn_1_1B40; +} + +void fn_1_14CC(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + if (argA != 0.0f) { + MTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); + } + else { + MTXIdentity(arg0); + } + if (arg8 != 0.0f) { + MTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); + MTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + MTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); + MTXConcat(sp8, arg0, arg0); + } +} + +float fn_1_15EC(float arg8, float arg9) +{ + float var_f30 = 360.0f; + float var_f31 = 180.0 * (atan2f(arg9, arg8) / M_PI); + if (var_f31 < 0.0f) { + var_f31 += var_f30; + } + else if (var_f31 >= var_f30) { + var_f31 -= var_f30; + } + return var_f31; +} + +void fn_1_16B0(Mtx var_r30, Vec *var_r31) +{ + float var_f29; + float var_f25; + + var_r31->x = fn_1_15EC(var_r30[2][2], var_r30[1][2]); + var_r31->z = fn_1_15EC(var_r30[0][0], var_r30[0][1]); + var_f29 = -var_r30[0][2]; + var_f25 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-1.0 - (var_f29 * var_f29)) : (1.0 - (var_f29 * var_f29))); + if ((var_r31->x > 90.0f) && (var_r31->x < 270.0f) && (var_r31->z > 90.0f) && (var_r31->z < 270.0f)) { + var_r31->x = fmod(180.0f + var_r31->x, 360.0); + var_r31->z = fmod(180.0f + var_r31->z, 360.0); + var_f25 = -var_f25; + } + var_r31->y = fn_1_15EC(var_f25, var_f29); +} + +void fn_1_1B40(omObjData *object) +{ + Mtx spCC; + Mtx sp9C; + Mtx sp6C; + Vec sp60; + M425DllUnkBss10Struct *var_r31; + s32 var_r27; + + for (var_r27 = 0; var_r27 < 0xC; var_r27++) { + var_r31 = &lbl_1_bss_10[var_r27]; + switch (var_r31->unk_03) { + case 0: + if (var_r31->unk_04 < var_r31->unk_50) { + var_r31->unk_04 += 0.4f; + } + if ((s32)(64.0 * (1.52587890625e-05 * (float)fn_1_64D4())) == 0) { + Hu3DMotionTimeSet(var_r31->unk_00, 0.0f); + } + if (Hu3DMotionEndCheck(var_r31->unk_00) != 0) { + var_r31->unk_3C = -2.92f; + } + else { + var_r31->unk_3C = -0.48666668f; + } + var_r31->unk_44f += 0.10000000149011612 * (3.0517578125e-05 * (float)((u16)frand() - 0x8000)); + var_r31->unk_48 += var_r31->unk_44f; + if (var_r31->unk_48 > 180.0f) { + var_r31->unk_48 -= 180.0f; + } + if (var_r31->unk_48 < -180.0f) { + var_r31->unk_48 += 180.0f; + } + var_r31->unk_14 = -30.0 * sind(var_r31->unk_48) * sind(var_r31->unk_18); + var_r31->unk_1C = -30.0 * sind(var_r31->unk_48) * cosd(var_r31->unk_18); + if ((var_r31->unk_08.y <= 700.0f) || (fabs(var_r31->unk_08.x) > 2000.0)) { + var_r31->unk_3C = 0.0f; + var_r31->unk_44[6] = (s32)(20.0 * (3.0517578125e-05 * (float)(fn_1_64D4() - 0x8000))) + 0xB4; + var_r31->unk_04 *= 0.75f; + var_r31->unk_03++; + } + break; + case 1: + var_r31->unk_18 += 1.0f; + var_r31->unk_14 = 0.0f; + var_r31->unk_1C = 60.0 * sind(var_r31->unk_44[6]) * cosd(var_r31->unk_18); + if (--var_r31->unk_44[6] == 0) { + Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 6.0f); + var_r31->unk_3C = 5.3533335f; + var_r31->unk_03++; + } + break; + case 2: + if (var_r31->unk_04 > 4.0f) { + var_r31->unk_04 -= 0.1f; + var_r31->unk_3C += 0.73f; + } + var_r31->unk_3C += -0.5475f; + if (var_r31->unk_3C < 0.0f) { + Hu3DModelAttrReset(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 2.0f); + var_r31->unk_50 = 100.0 * (0.10000000149011612 + (0.019999999552965164 * (1.52587890625e-05 * (float)(s32)(u16)frand()))); + var_r31->unk_03 = 0; + } + break; + } + if (0) { + s32 var_r31; + s32 var_r30; + s32 var_r29; + float var_f31; + float var_f20; + float var_f19; + float var_f18; + + (void) object; + (void) object; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r29; + (void) var_r29; + (void) var_r29; + (void) var_r29; + (void) var_r29; + (void) var_r29; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f31; + (void) var_f20; + (void) var_f20; + (void) var_f20; + (void) var_f19; + (void) var_f19; + (void) var_f19; + (void) var_f18; + (void) var_f18; + (void) var_f18; + } + var_r31->unk_38 = var_r31->unk_04 * sind(var_r31->unk_18); + var_r31->unk_40 = var_r31->unk_04 * cosd(var_r31->unk_18); + var_r31->unk_08.x += var_r31->unk_38; + var_r31->unk_08.y += var_r31->unk_3C; + var_r31->unk_08.z += var_r31->unk_40; + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z); + fn_1_14CC(spCC, var_r31->unk_14, -var_r31->unk_18, var_r31->unk_1C); + fn_1_16B0(spCC, &sp60); + Hu3DModelRotSetV(var_r31->unk_00, &sp60); + } +} + +void fn_1_2784(omObjData *object) +{ + M425DllWork2 *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllWork2), MEMORY_DEFAULT_NUM); + object->data = work; + work->unk_76 = work->unk_74 = 0; + work->unk_10.x = work->unk_28.x = 8.0f; + work->unk_10.y = work->unk_28.y = 0.0f; + work->unk_10.z = work->unk_28.z = 0.0f; + work->unk_04.x = work->unk_1C.x = 0.0f; + work->unk_04.y = work->unk_1C.y = 430.0f; + work->unk_04.z = work->unk_1C.z = -400.0f; + work->unk_64 = work->unk_68 = 1650.0f; + object->func = fn_1_2870; +} + +void fn_1_2870(omObjData *object) +{ + float var_f31; + M425DllWork2 *work; + + work = object->data; + if (work->unk_76 != 0) { + work->unk_76--; + var_f31 = (float)(work->unk_74 - work->unk_76) / work->unk_74; + var_f31 = sind((90.0f * var_f31)); + work->unk_04.x = work->unk_1C.x + (var_f31 * (work->unk_34 - work->unk_1C.x)); + work->unk_04.y = work->unk_1C.y + (var_f31 * (work->unk_38 - work->unk_1C.y)); + work->unk_04.z = work->unk_1C.z + (var_f31 * (work->unk_3C - work->unk_1C.z)); + work->unk_10.x = work->unk_28.x + (var_f31 * (work->unk_40 - work->unk_28.x)); + work->unk_10.y = work->unk_28.y + (var_f31 * (work->unk_44 - work->unk_28.y)); + work->unk_10.z = work->unk_28.z + (var_f31 * (work->unk_48 - work->unk_28.z)); + work->unk_64 = work->unk_68 + (var_f31 * (work->unk_6C - work->unk_68)); + } + CRot.x = work->unk_10.x; + CRot.y = work->unk_10.y; + CRot.z = work->unk_10.z; + Center.x = work->unk_04.x; + Center.y = work->unk_04.y; + Center.z = work->unk_04.z; + CZoom = work->unk_64; +} + +void fn_1_2A94(s16 arg0, Vec *arg1, Vec *arg2, float arg8) +{ + M425DllWork2 *work = lbl_1_bss_660->data; + work->unk_74 = arg0; + work->unk_76 = arg0; + work->unk_1C = work->unk_04; + work->unk_34 = arg1->x; + work->unk_38 = arg1->y; + work->unk_3C = arg1->z; + work->unk_28 = work->unk_10; + work->unk_40 = arg2->x; + work->unk_44 = arg2->y; + work->unk_48 = arg2->z; + work->unk_68 = work->unk_64; + work->unk_6C = arg8; +} + +void fn_1_2B2C(omObjData *object) +{ + s32 sp8; // ! - uninitialized + M425DllWork *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllWork), MEMORY_DEFAULT_NUM); + object->data = var_r31; + var_r31->unk_00 = object->work[0]; + var_r31->unk_01 = GWPlayerCfg[var_r31->unk_00].character; + var_r31->unk_02 = GWPlayerCfg[var_r31->unk_00].group; + var_r31->unk_03 = object->work[1] & 1; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_00].pad_idx; + var_r31->unk_05 = GWPlayerCfg[var_r31->unk_00].iscom; + var_r31->unk_06 = GWPlayerCfg[var_r31->unk_00].diff; + var_r31->unk_0E = 0; + var_r31->unk_0B = 1; + var_r31->unk_0C = 0; + memset(var_r31->unk_3C, 0, sizeof(var_r31->unk_3C)); + var_r31->unk_5C = 0; + var_r31->unk_60 = 1.0f; + var_r31->unk_64 = 0; + var_r31->unk_68 = 0; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != var_r31->unk_00) && (var_r31->unk_02 == GWPlayerCfg[var_r29].group)) { + var_r31->unk_09 = var_r29; + break; + } + } + var_r27 = object->work[1]; + var_r31->unk_18.x = lbl_1_data_94[var_r27].x; + var_r31->unk_18.y = lbl_1_data_94[var_r27].y; + var_r31->unk_18.z = lbl_1_data_94[var_r27].z; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 0.0f; + if (var_r31->unk_02 == 0) { + var_r31->unk_10 = 30.0f; + } + else { + var_r31->unk_10 = -30.0f; + } + var_r28 = CharModelCreate(var_r31->unk_01, 4); + object->model[0] = var_r28; + Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP); + CharModelStepTypeSet(var_r31->unk_01, 1); + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_01, lbl_1_data_6C[var_r29]); + if (var_r29 == 5) { + CharModelVoiceEnableSet(var_r31->unk_01, object->motion[var_r29], 0); + } + } + CharModelMotionDataClose(var_r31->unk_01); + CharModelMotionSet(var_r31->unk_01, object->motion[var_r31->unk_0E]); + omSetTra(object, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelPosSet(var_r28, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelRotSet(var_r28, 0.0f, 30.0f, 0.0f); + HuDataDirClose(sp8); + object->func = fn_1_2E78; +} + +void fn_1_2E78(omObjData *object) +{ + float spC[8]; + s32 sp8; + M425DllWork *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = 0; + sp8 = object->model[0]; + var_r31 = object->data; + var_r31->unk_30 = var_r31->unk_18; + if ((lbl_1_bss_648 == 5) && (var_r31->unk_05 != 0)) { + fn_1_33E0(object); + } + fn_1_3764(object); + switch (lbl_1_bss_648) { + case 2: + if (lbl_1_bss_640 == 1) { + var_r31->unk_0E = 5; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_0E], 0.0f, 8.0f, 0); + var_r31->unk_24.y = 0.0f; + var_r31->unk_0B = 0; + } + var_r31->unk_68 = 0; + break; + case 3: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, 0) != 0) { + if (var_r31->unk_0B == 0) { + HuAudFXPlay(0x62F); + } + CharModelVoiceEnableSet(var_r31->unk_01, object->motion[5], 1); + var_r31->unk_0B = 1; + } + break; + case 5: + if ((var_r31->unk_0E == 5) && (var_r31->unk_0C == 0)) { + var_r26 = 1; + } + + case 4: + case 6: + case 7: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, var_r26) != 0) { + var_r31->unk_0B = 1; + } + break; + case 8: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + var_r31->unk_0B = 1; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, 0) != 0) { + var_r31->unk_0B = 1; + } + if ((var_r31->unk_0B != 0) && (var_r31->unk_0E != 8) && (var_r31->unk_0E != 9)) { + if (var_r31->unk_02 == lbl_1_data_0) { + var_r31->unk_0E = 8; + } + else { + var_r31->unk_0E = 9; + } + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_0E], 0.0f, 8.0f, 0); + } + break; + case 9: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, 0) != 0) { + var_r31->unk_0B = 1; + } + break; + } + if (var_r31->unk_18.y < 0.0f) { + var_r31->unk_18.y = 0.0f; + var_r31->unk_0B = 1; + } + var_r27 = var_r31->unk_5C % 8; + var_r31->unk_3C[var_r27] = var_r31->unk_18.y; + if (++var_r31->unk_5C > 8) { + for (var_r29 = 0; var_r29 < 8; var_r29++) { + var_r28 = var_r27 - var_r29; + if (var_r28 < 0) { + var_r28 += 8; + } + spC[var_r29] = var_r31->unk_3C[var_r28]; + } + for (var_r29 = 1; var_r29 < 8; var_r29++) { + if (fabs(spC[var_r29] - spC[0]) > 25.0) { + break; + } + } + if (((var_r31->unk_0E == 0) || (var_r31->unk_0E == 8) || (var_r31->unk_0E == 9)) && (var_r29 >= 8)) { + var_r31->unk_60 = var_r31->unk_60 - 0.05f; + if (var_r31->unk_60 < 0.75f) { + var_r31->unk_60 = 0.75f; + } + } + else { + var_r31->unk_60 = 1.0f; + } + } + omSetTra(object, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); +} + +void fn_1_33E0(omObjData *object) +{ + s32 spC; + s16 sp8; + M425DllWork *var_r31; + M425DllWork *var_r30; + + var_r31 = object->data; + var_r30 = lbl_1_bss_64C[var_r31->unk_09]->data; + spC = object->model[0]; + sp8 = var_r31->unk_0E; + switch (var_r31->unk_0E) { + case 4: + case 7: + case 0: + if (var_r30->unk_0E == 3) { + if ((var_r30->unk_05 == 0) || ((s32)((0x18 - (var_r31->unk_06 * 3)) * (1.52587890625e-05 * (float)fn_1_64D4())) == 0)) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + break; + } + } + else { + if ((s32)((0x30 - (var_r31->unk_06 * 4)) * (1.52587890625e-05 * (float)fn_1_64D4())) == 0) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + break; + } + break; + } + break; + case 3: + if ((s32)(4.0 * (1.52587890625e-05 * (float)fn_1_64D4())) != 0) { + HuPadBtn[var_r31->unk_04] |= 0x100; + } + if ((var_r30->unk_05 == 0) && (var_r30->unk_0E == 5)) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + break; + } + if ((var_r31->unk_24.y < 5.353333473205566) && ((s32)((0xE - (var_r31->unk_06 * 2)) * (1.52587890625e-05 * (float)fn_1_64D4())) == 0)) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + } + break; + } +} + +void fn_1_3764(omObjData *object) +{ + float var_f30; + float var_f29; + + M425DllWork *var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + s32 var_r23; + + var_r31 = object->data; + var_r23 = object->model[0]; + var_r30 = var_r31->unk_0E; + if (lbl_1_bss_648 == 5) { + var_r26 = 0; + var_r25 = 0; + var_r27 = HuPadBtnDown[var_r31->unk_04]; + var_r24 = HuPadBtn[var_r31->unk_04]; + } + else { + var_r26 = 0; + var_r25 = 0; + var_r27 = 0; + var_r24 = 0; + } + var_r31->unk_64 = 0; + switch (var_r31->unk_0E) { + case 4: + case 7: + if (CharModelMotionEndCheck(var_r31->unk_01) != 0) { + var_r30 = 0; + var_r29 = 1; + } + + case 0: + case 1: + case 2: + var_r31->unk_24.x = 0.25f * var_r26; + var_r31->unk_24.z = 0.25f * -var_r25; + var_r31->unk_14 = sqrtf((var_r31->unk_24.x * var_r31->unk_24.x) + (var_r31->unk_24.z * var_r31->unk_24.z)); + var_r31->unk_64 = 1; + if (var_r31->unk_14 > 0.1f) { + if (var_r31->unk_14 >= 8.0f) { + var_r30 = 2; + var_r29 = 1; + } + else { + var_r30 = 1; + var_r29 = 1; + } + var_f30 = atan2d(var_r31->unk_24.x, var_r31->unk_24.z); + if (var_f30 >= 180.0f) { + var_f30 = var_f30 - 360.0f; + } + else if (var_f30 < -180.0f) { + var_f30 += 360.0f; + } + var_f29 = var_r31->unk_10 - var_f30; + if (var_f29 >= 180.0f) { + var_f29 -= 360.0f; + } + else if (var_f29 < -180.0f) { + var_f29 += 360.0f; + } + var_r31->unk_10 = var_f30 + (0.5f * var_f29); + if (var_r31->unk_10 >= 180.0f) { + var_r31->unk_10 = var_r31->unk_10 - 360.0f; + } + else if (var_r31->unk_10 < -180.0f) { + var_r31->unk_10 += 360.0f; + } + } + else { + var_r30 = 0; + var_r29 = 1; + } + var_r31->unk_24.y = 0.0f; + var_r31->unk_24.y += -2.4333334f * var_r31->unk_60; + if ((var_r27 & 0x100) != 0) { + var_r31->unk_0B = 0; + var_r31->unk_0A = 1; + var_r31->unk_24.y = 26.766666f; + var_r30 = 3; + var_r29 = 0; + } + break; + case 3: + if (var_r31->unk_0A != 0) { + if ((var_r24 & 0x100) != 0) { + if (++var_r31->unk_0A > 4) { + var_r31->unk_0A = 0; + } + else { + var_r31->unk_24.y += 4.866667f; + } + } + else { + var_r31->unk_0A = 0; + } + } + var_r31->unk_24.y += -2.4333334f; + if (var_r31->unk_0B != 0) { + var_r31->unk_0B = 1; + var_r30 = 4; + var_r29 = 0; + var_r31->unk_24.y = 0.0f; + } + if (((var_r27 & 0x100) != 0) || ((var_r27 & 0x40) != 0)) { + var_r31->unk_24.y = 0.0f; + var_r31->unk_0C = 0; + var_r30 = 5; + var_r29 = 0; + } + break; + case 5: + if ((Hu3DData[var_r23].unk_0C == -1) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r31->unk_24.y += -2.4333334f; + } + else { + var_r31->unk_24.y = 0.0f; + } + if (var_r31->unk_0B != 0) { + if (var_r31->unk_0C != 0) { + var_r31->unk_24.y = 0.0f; + var_r31->unk_0C = 0; + var_r30 = 7; + var_r29 = 0; + } + else { + var_r31->unk_24.y = 9.733334f; + var_r31->unk_0B = 0; + var_r30 = 6; + var_r29 = 0; + } + } + break; + case 6: + var_r31->unk_24.y += -2.4333334f; + if ((var_r31->unk_0B != 0) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r30 = 7; + var_r29 = 0; + } + break; + case 8: + case 9: + var_r31->unk_24.y = -2.4333334f * var_r31->unk_60; + var_r31->unk_64 = 1; + break; + } + var_r31->unk_18.x += var_r31->unk_24.x; + if (var_r31->unk_0B == 0) { + var_r31->unk_18.y += var_r31->unk_24.y; + } + var_r31->unk_18.z += var_r31->unk_24.z; + if (var_r30 != var_r31->unk_0E) { + var_r31->unk_0E = var_r30; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_0E], 0.0f, 8.0f, var_r29); + } + omSetTra(object, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + omSetRot(object, 0.0f, var_r31->unk_10, 0.0f); +} + +s16 fn_1_3ED0(s32 arg0, s16 arg1, ParticleHook arg2) +{ + s32 var_r31; + M425DllUnkStruct *var_r30; + ParticleData *var_r29; + AnimData *var_r28; + + var_r28 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + var_r31 = Hu3DParticleCreate(var_r28, arg1); + Hu3DParticleHookSet(var_r31, arg2); + var_r29 = Hu3DData[var_r31].unk_120; + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllUnkStruct), MEMORY_DEFAULT_NUM); + var_r29->unk_1C = var_r30; + var_r30->unk_04 = 0; + return var_r31; +} + +void fn_1_3F80(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float var_f29; + float var_f28; + float var_f26; + float var_f25; + float var_f24; + + HsfanimStruct01 *var_r31; + M425DllUnkStruct *var_r29; + s32 var_r28; + + float sp54[4] = { 1000.0f, 200.0f, 600.0f, 1200.0f }; + float sp44[4] = { 1.0f, 0.6f, 0.3f, 0.425f }; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + s16 sp8 = 0; + + var_r29 = particle->unk_1C; + switch (var_r29->unk_04) { + case 0: + var_r31 = particle->unk_48; + if (var_r29->unk_02 != 0) { + sp14.x = 0.0f; + sp14.y = -3600.0f; + sp14.z = 6250.0f; + var_f28 = (sp14.z * sp14.z) + ((sp14.x * sp14.x) + (sp14.y * sp14.y)); + var_f29 = 1.0f / sqrtf(var_f28); + sp14.x *= var_f29; + sp14.y *= var_f29; + sp14.z *= var_f29; + var_f24 = 6000.0f / particle->unk_30; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_f26 = 500.0 + ((var_f24 * var_r28) + ((0.25f * var_f24) * (1.52587890625e-05 * (float)(s32)(u16)frand()))); + var_f25 = var_f26 / 6000.0f; + var_r31->unk14.x = var_f26; + var_r31->unk34.x = var_f26 * sp14.x; + var_r31->unk34.y = 4000.0f + (var_f26 * sp14.y); + var_r31->unk34.z = -6750.0f + (var_f26 * sp14.z); + var_r31->unk2C = (0.3f + (0.7f * (var_f25 * var_f25))) + * (sp54[var_r29->unk_02] * (0.699999988079071 + (0.30000001192092896 * (1.52587890625e-05 * (float)(s32)(u16)frand())))); + var_r31->unk40.r = (s32)(160.0 * (1.52587890625e-05 * (float)fn_1_64D4())) + 0x20; + var_r31->unk40.g = (s32)(96.0 * (1.52587890625e-05 * (float)fn_1_64D4())) + 0x20; + var_r31->unk40.b = (s32)(128.0 * (1.52587890625e-05 * (float)fn_1_64D4())) + 0x20; + var_r31->unk40.a + = ((1.0 - (0.4 * var_f25)) * (255.0f * sp44[var_r29->unk_02])) - (s32)(16.0 * (1.52587890625e-05 * (float)fn_1_64D4())); + } + var_r29->unk_04++; + } + else { + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 4000.0f; + var_r31->unk34.z = -6750.0f; + var_r31->unk2C = 1000.0f; + } + break; + case 1: + sp38.x = sind(CRot.y) * cosd(CRot.x); + sp38.y = -sind(CRot.x); + sp38.z = cosd(CRot.y) * cosd(CRot.x); + sp2C.x = -(Center.x + (1.25f * (sp38.x * CZoom))); + sp2C.y = 4000.0f - (Center.y + (sp38.y * CZoom)); + sp2C.z = -6750.0f - (Center.z + (1.25f * (sp38.z * CZoom))); + var_f29 = 1.0f / sqrtf((sp2C.z * sp2C.z) + ((sp2C.x * sp2C.x) + (sp2C.y * sp2C.y))); + sp2C.x *= var_f29; + sp2C.y *= var_f29; + sp2C.z *= var_f29; + var_f29 = -((-sp2C.z * -sp38.z) + ((-sp2C.x * -sp38.x) + (-sp2C.y * -sp38.y))); + sp20.x = -sp38.x + (-2.0f * sp2C.x * var_f29); + sp20.y = -sp38.y + (-2.0f * sp2C.y * var_f29); + sp20.z = -sp38.z + (-2.0f * sp2C.z * var_f29); + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk34.x = sp20.x * var_r31->unk14.x; + var_r31->unk34.y = 4000.0f + (sp20.y * var_r31->unk14.x); + var_r31->unk34.z = -6750.0f + (sp20.z * var_r31->unk14.x); + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_4A88(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float var_f31; + HsfanimStruct01 *var_r31; + M425DllUnkStruct *var_r29; + s32 var_r28; + s16 var_r27; + + var_r27 = 0; + var_r29 = particle->unk_1C; + switch (var_r29->unk_04) { + case 0: + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk00 = var_r31->unk02 = 0; + } + var_r29->unk_04++; + break; + case 1: + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk00 != 0) { + var_r31->unk00--; + } + else { + if (var_r31->unk02 == 0) { + var_f31 = 180.0 * (1.52587890625e-05 * (float)(s32)(u16)frand()); + var_f31 = var_f31; + if ((s32)(4.0 * (1.52587890625e-05 * (float)fn_1_64D4())) != 0) { + var_r31->unk34.x = 100.0 * (4.0 * (1.52587890625e-05 * (float)(s32)(u16)frand())) * cosd(var_f31); + } + else { + var_r31->unk34.x = 100.0 * (2.0 * (1.52587890625e-05 * (float)(s32)(u16)frand())) * cosd(var_f31); + } + var_r31->unk34.y = -10.0f; + var_r31->unk34.z = -7000.0 + (100.0 * (40.0 * (1.52587890625e-05 * (float)(s32)(u16)frand())) * sind(var_f31)); + var_r31->unk30 = 1.5707964f; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xC0; + var_r31->unk40.b = 0xA0; + var_r31->unk2C = 0.0f; + var_r31->unk00 = (s32)(90.0 * (1.52587890625e-05 * (float)fn_1_64D4())); + var_r31->unk02 = 0x3C; + var_r31->unk40.r = 0xC0; + var_r31->unk40.g = 0xE0; + var_r31->unk40.b = 0xE0; + var_r31->unk08.z = 0.01f * (0.05f * (3000.0f + -var_r31->unk34.z)); + var_r31->unk08.z *= var_r31->unk08.z; + var_r31->unk08.z *= 0.125f; + } + var_r31->unk40.a = 248.0 * sind((var_r31->unk02 * 3)); + var_r31->unk2C = (30.0f * var_r31->unk08.z) * sind((var_r31->unk02 * 3)); + var_r31->unk02--; + } + } + if (particle->unk_30 == var_r27) { + Hu3DModelAttrReset(var_r29->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(var_r29->unk_00); + return; + } + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_5044(s16 sp8) +{ + M425DllUnkStruct3 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + ModelData *var_r27; + void *var_r26; + + Vec2f spC[4] = { { 0.0f, 0.0f }, { 1.0f, 0.0f }, { 1.0f, 1.0f }, { 0.0f, 1.0f } }; + var_r27 = &Hu3DData[sp8]; + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllUnkStruct3), MEMORY_DEFAULT_NUM); + var_r27->unk_120 = var_r31; + var_r31->unk_2A = 1; + var_r31->unk_20.r = var_r31->unk_20.g = var_r31->unk_20.b = 0x40; + var_r31->unk_20.a = 0xFF; + var_r31->unk_24.a = var_r31->unk_24.g = var_r31->unk_24.b = 0xFF; + var_r31->unk_24.r = var_r31->unk_24.b = 0; + // maybe Mtx? + var_r31->unk_14 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * (4 * sizeof(Vec)), MEMORY_DEFAULT_NUM); + var_r31->unk_14[0].x = -4500.0f; + var_r31->unk_14[0].y = 0.0f; + var_r31->unk_14[0].z = -7000.0f; + var_r31->unk_14[1].x = 4500.0f; + var_r31->unk_14[1].y = 0.0f; + var_r31->unk_14[1].z = -7000.0f; + var_r31->unk_14[2].x = 3000.0f; + var_r31->unk_14[2].y = -200.0f; + var_r31->unk_14[2].z = 0.0f; + var_r31->unk_14[3].x = -3000.0f; + var_r31->unk_14[3].y = -200.0f; + var_r31->unk_14[3].z = 0.0f; + var_r31->unk_18 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * (4 * sizeof(GXColor)), MEMORY_DEFAULT_NUM); + var_r31->unk_18[0].r = 0xFF; + var_r31->unk_18[0].g = 0xFF; + var_r31->unk_18[0].b = 0xFF; + var_r31->unk_18[0].a = 0xFF; + var_r31->unk_18[1].r = 0xFF; + var_r31->unk_18[1].g = 0xFF; + var_r31->unk_18[1].b = 0xFF; + var_r31->unk_18[1].a = 0xFF; + var_r31->unk_18[2].r = 0xFF; + var_r31->unk_18[2].g = 0xFF; + var_r31->unk_18[2].b = 0xFF; + var_r31->unk_18[2].a = 0xFF; + var_r31->unk_18[3].r = 0xFF; + var_r31->unk_18[3].g = 0xFF; + var_r31->unk_18[3].b = 0xFF; + var_r31->unk_18[3].a = 0xFF; + var_r31->unk_1C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_1C->x = 0.0f; + var_r31->unk_1C->y = 1.0f; + var_r31->unk_1C->z = 0.0f; + var_r31->unk_28 = 2; + var_r31->unk_2C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * (var_r31->unk_28 * sizeof(M425DllUnkStruct2)), MEMORY_DEFAULT_NUM); + var_r31->unk_2C[0].unk_00 = HuSprAnimReadFile(0x380003); + var_r31->unk_2C[0].unk_04 = 0; + var_r31->unk_2C[1].unk_00 = HuSprAnimReadFile(0x380004); + var_r31->unk_2C[1].unk_04 = 0; + var_r31->unk_2C[1].unk_48 = 0x80; + for (var_r30 = 0; var_r30 < (var_r31->unk_28 * var_r31->unk_2A); var_r30++) { + MTXIdentity(var_r31->unk_2C[var_r30].unk_14); + var_r31->unk_2C[var_r30].unk_08.x = var_r31->unk_2C[var_r30].unk_08.y = var_r31->unk_2C[var_r30].unk_08.z = 0.0f; + } + for (var_r30 = 0; var_r30 < var_r31->unk_28; var_r30++) { + fn_1_573C(&var_r31->unk_2C[var_r30].unk_44, var_r31->unk_2A, spC); + } + var_r26 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20000, MEMORY_DEFAULT_NUM); + var_r31->unk_10 = var_r26; + DCFlushRange(var_r31->unk_10, 0x20000); + GXBeginDisplayList(var_r26, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, var_r31->unk_2A * 4); + for (var_r30 = 0; var_r30 < var_r31->unk_2A; var_r30++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + GXUnknownu16(var_r29 + (var_r30 * 4)); + GXUnknownu16(var_r30); + GXUnknownu16(var_r29 + (var_r30 * 4)); + for (var_r28 = 0; var_r28 < var_r31->unk_28; var_r28++) { + GXUnknownu16(var_r29 + (var_r30 * 4)); + } + } + } + var_r31->unk_0C = GXEndDisplayList(); +} + +void fn_1_5568(Vec **arg0, s16 arg1, Vec *arg2) +{ + Vec *var_r31; + s32 var_r29; + s32 var_r28; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(Vec)), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } + } +} + +void fn_1_5608(GXColor **arg0, s16 arg1, GXColor *arg2) +{ + GXColor *var_r31; + s32 var_r29; + s32 var_r28; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(GXColor)), 0x10000000); + 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; + var_r31->g = arg2->g; + var_r31->b = arg2->b; + var_r31->a = arg2->a; + } + } +} + +void fn_1_56B0(Vec **arg0, s16 arg1, Vec *arg2) +{ + Vec *var_r31; + s32 var_r29; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } +} + +void fn_1_573C(Vec2f **arg0, s16 arg1, Vec2f *arg2) +{ + Vec2f *var_r31; + s32 var_r29; + s32 var_r28; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(Vec2f)), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + } + } +} + +void fn_1_57D4(ModelData *model, Mtx matrix) +{ + float var_f31; + float var_f30; + s32 var_r31; + M425DllUnkStruct3 *var_r30; + + var_r30 = model->unk_120; + var_r30->unk_2C[1].unk_08.y -= 0.0005f; + var_f31 = sind(lbl_1_bss_4); + var_f30 = cosd(lbl_1_bss_4); + for (var_r31 = 0; var_r31 < 1; var_r31++) { + var_r30->unk_2C[var_r31].unk_44[0].x = 0.005f * var_f31 * (var_r31 != 0 ? 10.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[0].y = 0.005f * var_f30 * (var_r31 != 0 ? 1.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[1].x = 1.0f + (0.005f * var_f30 * (var_r31 != 0 ? 10.0f : -1.0f)); + var_r30->unk_2C[var_r31].unk_44[1].y = 0.005f * var_f31 * (var_r31 != 0 ? 1.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[2].x = 1.0f + (0.005f * var_f31 * (var_r31 != 0 ? 10.0f : -1.0f)); + var_r30->unk_2C[var_r31].unk_44[2].y = 1.0f + (0.005f * var_f30 * (var_r31 != 0 ? 1.0f : -1.0f)); + var_r30->unk_2C[var_r31].unk_44[3].x = 0.005f * var_f30 * (var_r31 != 0 ? 10.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[3].y = 1.0f + (0.005f * var_f31 * (var_r31 != 0 ? 1.0f : -1.0f)); + } + lbl_1_bss_4 += 1.0f; + fn_1_5C20(model, matrix); +} + +void fn_1_5C20(ModelData *var_r27, Mtx sp8) +{ + Mtx sp5C; + Mtx sp2C; + GXColor sp26; + s16 spC; + GXTexMapID var_r29; + M425DllUnkStruct3 *var_r31; + s16 var_r30; + s16 var_r28; + s16 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r31 = var_r27->unk_120; + GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk_20); + GXSetChanMatColor(GX_COLOR0A0, var_r31->unk_24); + GXLoadPosMtxImm(sp8, 0); + MTXInverse(sp8, sp5C); + MTXTranspose(sp5C, sp2C); + GXLoadNrmMtxImm(sp2C, 0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(1, GX_LEQUAL, 1); + var_r30 = 0; + var_r28 = 0; + spC = 0; + for (var_r29 = GX_TEXMAP0; var_r29 < var_r31->unk_28; var_r29++) { + MTXRotRad(var_r31->unk_2C[var_r29].unk_14, 0x5A, 0.0f); + mtxTransCat( + var_r31->unk_2C[var_r29].unk_14, var_r31->unk_2C[var_r29].unk_08.x, var_r31->unk_2C[var_r29].unk_08.y, var_r31->unk_2C[var_r29].unk_08.z); + switch (var_r31->unk_2C[var_r29].unk_04) { + case 0: + GXLoadTexMtxImm(var_r31->unk_2C[var_r29].unk_14, texMtxTbl[var_r28], GX_MTX2x4); + var_r25 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r29 + 4, var_r25, GX_FALSE, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + if (var_r29 == GX_TEXMAP0) { + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + } + else { + sp26.a = var_r31->unk_2C[var_r29].unk_48; + GXSetTevColor(GX_TEVREG2, sp26); + GXSetTevColorIn(var_r30, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + } + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + break; + case 1: + GXLoadTexMtxImm(var_r31->unk_2C[var_r29].unk_14, texMtxTbl[var_r28], GX_MTX2x4); + var_r24 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r29 + 4, var_r24, GX_FALSE, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + GXSetTevColor(GX_TEVREG2, sp26); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + break; + case 2: + sp26.a = 0xE0; + GXSetTevColor(GX_TEVREG1, sp26); + GXSetTexCoordGen2(var_r28 + 1, GX_TG_BUMP0, var_r28, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + var_r30++; + GXSetTevOrder(var_r30, var_r28 + 1, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); + GXSetTevColorOp(var_r30, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + break; + case 3: + var_r28--; + GXLoadTexMtxImm(var_r31->unk_2C[var_r29].unk_14, texMtxTbl[var_r28], GX_MTX2x4); + var_r23 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r29 + 4, var_r23, 0, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r28++; + break; + } + var_r30++; + var_r28++; + HuSprTexLoad(var_r31->unk_2C[var_r29].unk_00, 0, var_r29, GX_REPEAT, GX_REPEAT, GX_LINEAR); + } + sp26.a = var_r31->unk_24.a; + GXSetTevColor(GX_TEVREG0, sp26); + GXSetTevOrder(var_r30, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_KONST); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r30++; + GXSetNumTevStages((s32)var_r30); + GXSetNumTexGens((s32)var_r28); + var_r26 = Hu3DLightSet(var_r27, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 0.0f); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, var_r26, GX_DF_CLAMP, GX_AF_SPOT); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk_18, 4); + for (var_r29 = GX_TEXMAP0; var_r29 < (var_r31->unk_28 * var_r31->unk_2A); var_r29++) { + GXSetVtxDesc(var_r29 + 0xD, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r29 + 0xD, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(var_r29 + 0xD, var_r31->unk_2C[var_r29].unk_44, 8); + } + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetArray(GX_VA_NRM, var_r31->unk_1C, 0xC); + GXCallDisplayList(var_r31->unk_10, var_r31->unk_0C); +} + +u32 lbl_1_data_114 = 0x41C64E6D; + +s32 fn_1_64D4(void) +{ + lbl_1_data_114 *= 0x41C64E6D; + lbl_1_data_114 += 0x3039; + return lbl_1_data_114 >> 0x10; +} + +float fn_1_6528(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 1.0 - arg8; + float var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_65A0(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = fn_1_6528(arg8, *arg0++, *arg1++, *arg2++); + } +} + +float fn_1_66BC(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA))); + return var_f31; +} + +void fn_1_6734(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + float spC[3]; + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_66BC(arg8, *arg0++, *arg1++, *arg2++); + } + + var_f29 = sqrtf((spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1]))); + if (var_f29) { + var_f29 = 1.0 / var_f29; + var_f29 = var_f29; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = var_f29 * spC[var_r31]; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c new file mode 100644 index 00000000..3f02dce6 --- /dev/null +++ b/src/REL/m425Dll/thwomp.c @@ -0,0 +1,2768 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/mtx/GeoTypes.h" +#include "ext_math.h" +#include "game/animdata.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m425Dll.h" + +extern u32 GlobalCounter; +extern LightData Hu3DLocalLight[0x20]; + +typedef struct M425DllUnkStruct4 { + s16 unk_00; + s16 unk_02; + s16 unk_04; + s16 unk_06; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + s32 unk_28; + s32 unk_2C; + float unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C[5]; + s32 unk_50; + float unk_54[6]; + s32 unk_6C[6]; + s32 unk_84[6]; + float unk_9C[6]; + s32 unk_B4[6]; + Vec unk_CC; + float unk_D8; + float unk_DC; + float unk_E0; + float unk_E4; + float unk_E8; + float unk_EC; + s32 unk_F0[3]; + float unk_FC; + float unk_100; + char unk104[0x8]; + s16 unk_10C; + s16 unk_10E; + s16 unk_110; + s16 unk_112[0x19]; + s16 unk_144[0x1A]; + s16 *unk_178; + Vec *unk_17C; + Vec *unk_180; + Vec2f *unk_184; + Vec *unk_188; + Vec *unk_18C; + s16 (*unk_190)[3]; + Vec *unk_194; + Vec *unk_198; + s32 unk_19C; + u8 *unk_1A0; + s16 *unk_1A4[0x19]; + s16 unk_208[0x19]; + GXColor unk_23A; + s32 unk_240; + u32 unk_244[0x19]; + void *unk_2A8[0x19]; +} M425DllUnkStruct4; /* size = 0x30C */ + +typedef struct M425DllUnkStruct5 { + char unk00[4]; + Vec unk_04; + Vec unk_10; + float unk_1C; + char unk20[8]; + float unk_28; + float unk_2C; + Vec unk_30; + GXColor unk_3C; + s32 unk_40; +} M425DllUnkStruct5; /* size = 0x44 */ + +typedef void (*UnkHook)(ModelData *model, struct M425DllUnkStruct6 *particle, Mtx matrix); + +typedef struct M425DllUnkStruct6 { + s16 unk_00; + s16 unk_02; + char unk04[0x1C]; + u8 unk_20; + u8 unk_21; + char unk22[2]; + s16 unk_24; + s32 unk_28; + s32 unk_2C; + u32 unk_30; + u32 unk_34; + AnimData *unk_38; + M425DllUnkStruct5 *unk_3C; + Vec *unk_40; + Vec2f *unk_44; + void *unk_48; + UnkHook unk_4C; +} M425DllUnkStruct6; /* size = 0x50 */ + +void fn_1_6BD8(omObjData *object); +s32 fn_1_6EC4(float arg8, float arg9, s16 arg0, s16 arg1); +void fn_1_6DFC(s32 arg0, float arg8); +void fn_1_E210(s32 arg0); +void fn_1_E914(ModelData *arg0, Mtx matrix); +void fn_1_D9A8(M425DllUnkStruct4 *var_r31, ModelData *var_r24, s32 var_r30, s32 var_r26, s32 var_r25); +void fn_1_DB44(M425DllUnkStruct4 *arg0, ModelData *model); +void fn_1_DE3C(M425DllUnkStruct4 *arg0, ModelData *model); +void fn_1_101C4(ModelData *model, Mtx matrix); +void fn_1_11284(void); +void fn_1_112FC(void); +void fn_1_11418(void); +s32 fn_1_11454(Vec *arg0, Vec *arg1, float arg8, float arg9); +s16 fn_1_115D4(ModelData *arg0, Mtx arg1, Mtx arg2, float arg8); +void fn_1_116E4(ModelData *arg1, LightData *arg2, s16 arg3, Mtx arg4, Mtx arg5, float arg8); +s16 fn_1_11A74(AnimData *arg0, s16 arg1); +void fn_1_11EE0(ModelData *model, Mtx matrix); + +Vec lbl_1_data_118[2] = { + { -300.0f, 1.0f, 0.0f }, + { 300.0f, 1.0f, 0.0f }, +}; + +Process *lbl_1_bss_6F0; +omObjData *lbl_1_bss_6EC; +s32 lbl_1_bss_6E8; +u8 *lbl_1_bss_6E4; +AnimData *lbl_1_bss_6E0; +AnimData *lbl_1_bss_6DC; +AnimData *lbl_1_bss_6D8; +// M425DllUnkStruct6 +s32 lbl_1_bss_6D4; +u8 lbl_1_bss_6D0; +s32 lbl_1_bss_6CC; +GXColor lbl_1_bss_6C8; +GXLightObj lbl_1_bss_688; +Vec lbl_1_bss_67C; +Vec lbl_1_bss_670; + +omObjData *fn_1_6A0C(Process *process, s32 sp8) +{ + omObjData *object; + + lbl_1_bss_6F0 = process; + object = omAddObjEx(process, sp8, 6, 0, -1, fn_1_6BD8); + lbl_1_bss_6EC = object; + object->stat |= 0x100; + lbl_1_bss_6E8 = 0; + lbl_1_bss_6D0 = 0x40; + lbl_1_bss_6CC = 0; + object->model[0] = fn_1_6EC4(350.0f, 350.0f, 0x10, 0x10); + object->model[1] = fn_1_6EC4(350.0f, 350.0f, 0x10, 0x10); + fn_1_6CD0(0, &lbl_1_data_118[0]); + fn_1_6CD0(1, &lbl_1_data_118[1]); + fn_1_6DFC(0, 30.0f); + fn_1_6DFC(1, -30.0f); + lbl_1_bss_6E4 = HuDataReadNum(0x38000A, MEMORY_DEFAULT_NUM); + lbl_1_bss_6E0 = HuSprAnimRead(HuDataReadNum(0x38000B, MEMORY_DEFAULT_NUM)); + lbl_1_bss_6DC = HuSprAnimRead(HuDataReadNum(0x38000C, MEMORY_DEFAULT_NUM)); + fn_1_11284(); + return lbl_1_bss_6EC; +} + +void fn_1_6BD8(omObjData *object) +{ + fn_1_E210(0); + fn_1_E210(1); + fn_1_112FC(); +} + +void fn_1_6C08(void) +{ + omObjData *object = lbl_1_bss_6EC; + if (object) { + HuMemDirectFree(lbl_1_bss_6E4); + lbl_1_bss_6E4 = NULL; + HuSprAnimKill(lbl_1_bss_6E0); + lbl_1_bss_6E0 = NULL; + HuSprAnimKill(lbl_1_bss_6DC); + lbl_1_bss_6DC = NULL; + fn_1_11418(); + lbl_1_bss_6EC = NULL; + object->func = NULL; + omDelObjEx(lbl_1_bss_6F0, object); + } +} + +void fn_1_6CD0(s32 arg0, Vec *arg1) +{ + M425DllUnkStruct4 *var_r30; + s32 var_r29; + ModelData *var_r28; + + if (lbl_1_bss_6EC) { + var_r28 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r28->unk_120; + var_r30->unk_CC.x = arg1->x; + var_r30->unk_CC.y = arg1->y; + var_r30->unk_CC.z = arg1->z; + Hu3DModelPosSet(lbl_1_bss_6EC->model[arg0], arg1->x, arg1->y, arg1->z); + if ((lbl_1_bss_6CC == 0) && (arg0 == 0) && (arg1->y <= 0.0f)) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + omVibrate(0, 0xC, 6, 6); + } + HuAudFXPlay(0x62E); + lbl_1_bss_6CC = 1; + } + } +} + +void fn_1_6DFC(s32 arg0, float arg8) +{ + ModelData *var_r31; + M425DllUnkStruct4 *var_r30; + + if (lbl_1_bss_6EC) { + var_r31 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r31->unk_120; + var_r30->unk_D8 = arg8; + Hu3DModelRotSet(lbl_1_bss_6EC->model[arg0], 0.0f, arg8, 0.0f); + } +} + +s32 fn_1_6EC4(float var_f24, float sp8, s16 var_r22, s16 var_r24) +{ + float sp24; + float sp20; + float sp1C; + float sp18; + float sp14; + float sp10; + void *spC; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + + M425DllUnkStruct4 *var_r31; + s32 var_r30; + Vec *var_r29; + Vec2f *var_r28; + s32 var_r27; + Vec *var_r26; + s16 *var_r25; + ModelData *var_r23; + s32 var_r21; + s16 *var_r20; + s32 var_r19; + s16 var_r18; + void *var_r17; + + var_r19 = Hu3DHookFuncCreate(fn_1_101C4); + var_r23 = &Hu3DData[var_r19]; + Hu3DModelLayerSet(var_r19, 5); + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M425DllUnkStruct4), var_r23->unk_48); + var_r23->unk_120 = var_r31; + memset(var_r31, 0, sizeof(M425DllUnkStruct4)); + var_r31->unk_00 = lbl_1_bss_6E8; + lbl_1_bss_6E8++; + var_r31->unk_02 = 0; + var_r31->unk_04 = Hu3DModelCreateFile(0x38000D); + Hu3DModelLayerSet(var_r31->unk_04, 6); + var_r31->unk_06 = 0; + var_r31->unk_08 = 1000.0f; + var_r31->unk_0C = 1000.0f; + var_r31->unk_10 = 1000.0f; + var_r31->unk_14 = 0.0f; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = sp8; + var_r31->unk_FC = var_f24; + var_r31->unk_100 = sp8; + var_r31->unk_28 = 0; + var_r31->unk_2C = 0; + var_r31->unk_30 = 0.0f; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + var_r31->unk_3C[var_r30] = -1; + var_r31->unk_54[var_r30] = 0.0f; + var_r31->unk_84[var_r30] = -1; + var_r31->unk_9C[var_r30] = 0.0f; + } + var_r31->unk_CC.x = var_r31->unk_CC.y = var_r31->unk_CC.z = 0.0f; + var_r31->unk_D8 = 0.0f; + var_r31->unk_DC = 1.0f; + var_r31->unk_F0[0] = -1; + var_r31->unk_F0[1] = -1; + var_r31->unk_F0[2] = -1; + lbl_1_bss_6EC->model[var_r31->unk_00 + 2] = var_r31->unk_04; + if (var_r31->unk_00 == 0) { + var_r31->unk_E0 = var_f22 = 302.0f; + var_r31->unk_E4 = var_f27 = 193.0f; + } + else { + var_r31->unk_E0 = var_f22 = 302.0f; + var_r31->unk_E4 = var_f27 = 150.0f; + } + var_r31->unk_E8 = var_r31->unk_EC = 0.0f; + var_f30 = sind(var_f27) * cosd(var_f22); + var_f26 = cosd(var_f27) * cosd(var_f22); + var_f28 = sind(var_f22); + sp24 = sqrtf((var_f26 * var_f26) + ((var_f30 * var_f30) + (var_f28 * var_f28))); + if (sp24 != 0.0f) { + sp24 = 1.0f / sp24; + } + else { + sp24 = 0.0f; + } + var_f30 *= sp24; + var_f28 *= sp24; + var_f26 *= sp24; + var_r30 = Hu3DLLightCreate(var_r19, 1000.0f * var_f30, 1000.0f * var_f28, 1000.0f * var_f26, var_f30, var_f28, var_f26, 0xFF, 0xFF, 0xFF); + Hu3DLLightInfinitytSet(var_r19, var_r30); + Hu3DLLightStaticSet(var_r19, var_r30, 1); + var_r22++; + var_r24++; + sp14 = var_f24 - 50.0f; + sp10 = sp8 - 50.0f; + var_r31->unk_112[0] = var_r24 * var_r24; + var_r31->unk_144[0] = 0; + var_r31->unk_112[1] = var_r22 * var_r24; + var_r31->unk_144[1] = var_r31->unk_144[0] + var_r31->unk_112[0]; + if (var_r31->unk_00 != 0) { + var_r31->unk_112[2] = 0; + } + else { + var_r31->unk_112[2] = var_r22 * var_r24; + } + var_r31->unk_144[2] = var_r31->unk_144[1] + var_r31->unk_112[1]; + if (var_r31->unk_00 == 0) { + var_r31->unk_112[3] = 0; + } + else { + var_r31->unk_112[3] = var_r22 * var_r24; + } + var_r31->unk_144[3] = var_r31->unk_144[2] + var_r31->unk_112[2]; + var_r31->unk_112[4] = var_r24 * 5; + var_r31->unk_144[4] = var_r31->unk_144[3] + var_r31->unk_112[3]; + var_r31->unk_112[5] = var_r24 * 5; + var_r31->unk_144[5] = var_r31->unk_144[4] + var_r31->unk_112[4]; + var_r31->unk_112[6] = var_r22 * 5; + var_r31->unk_144[6] = var_r31->unk_144[5] + var_r31->unk_112[5]; + var_r31->unk_112[7] = var_r22 * 5; + var_r31->unk_144[7] = var_r31->unk_144[6] + var_r31->unk_112[6]; + var_r31->unk_112[8] = var_r24 * 5; + var_r31->unk_144[8] = var_r31->unk_144[7] + var_r31->unk_112[7]; + var_r31->unk_112[9] = var_r24 * 5; + var_r31->unk_144[9] = var_r31->unk_144[8] + var_r31->unk_112[8]; + var_r31->unk_112[10] = var_r24 * 5; + var_r31->unk_144[10] = var_r31->unk_144[9] + var_r31->unk_112[9]; + var_r31->unk_112[11] = var_r24 * 5; + var_r31->unk_144[11] = var_r31->unk_144[10] + var_r31->unk_112[10]; + var_r31->unk_112[12] = var_r24 * 5; + var_r31->unk_144[12] = var_r31->unk_144[11] + var_r31->unk_112[11]; + var_r31->unk_112[13] = var_r24 * 5; + var_r31->unk_144[13] = var_r31->unk_144[12] + var_r31->unk_112[12]; + if (var_r31->unk_00 == 0) { + var_r31->unk_112[14] = 0; + } + else { + var_r31->unk_112[14] = var_r22 * 5; + } + var_r31->unk_144[14] = var_r31->unk_144[13] + var_r31->unk_112[13]; + if (var_r31->unk_00 != 0) { + var_r31->unk_112[15] = 0; + } + else { + var_r31->unk_112[15] = var_r22 * 5; + } + var_r31->unk_144[15] = var_r31->unk_144[14] + var_r31->unk_112[14]; + var_r31->unk_112[16] = 0x19; + var_r31->unk_144[16] = var_r31->unk_144[15] + var_r31->unk_112[15]; + var_r31->unk_112[17] = 0x19; + var_r31->unk_144[17] = var_r31->unk_144[16] + var_r31->unk_112[16]; + var_r31->unk_112[18] = 0x19; + var_r31->unk_144[18] = var_r31->unk_144[17] + var_r31->unk_112[17]; + var_r31->unk_112[19] = 0x19; + var_r31->unk_144[19] = var_r31->unk_144[18] + var_r31->unk_112[18]; + var_r31->unk_112[20] = 0x19; + var_r31->unk_144[20] = var_r31->unk_144[19] + var_r31->unk_112[19]; + var_r31->unk_112[21] = 0x19; + var_r31->unk_144[21] = var_r31->unk_144[20] + var_r31->unk_112[20]; + var_r31->unk_112[22] = 0x19; + var_r31->unk_144[22] = var_r31->unk_144[21] + var_r31->unk_112[21]; + var_r31->unk_112[23] = 0x19; + var_r31->unk_144[23] = var_r31->unk_144[22] + var_r31->unk_112[22]; + var_r31->unk_112[24] = var_r24 * var_r24; + var_r31->unk_144[24] = var_r31->unk_144[23] + var_r31->unk_112[23]; + if (var_r31->unk_00 == 0) { + var_r31->unk_06 = var_r31->unk_144[17] + (var_r31->unk_112[17] / 2) + 1; + } + else { + var_r31->unk_06 = var_r31->unk_144[16] + (var_r31->unk_112[16] / 2) - 1; + } + var_r31->unk_10C = var_r22; + var_r31->unk_10E = var_r24; + var_r31->unk_110 = var_r31->unk_144[24] + var_r31->unk_112[24]; + var_r31->unk_240 = 0x19; + var_r31->unk_178 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 2, var_r23->unk_48); + memset(var_r31->unk_178, 0, var_r31->unk_110 * 2); + var_r31->unk_17C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_17C, 0, var_r31->unk_110 * 0xC); + var_r31->unk_180 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_180, 0, var_r31->unk_110 * 0xC); + var_r31->unk_184 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 8, var_r23->unk_48); + memset(var_r31->unk_184, 0, var_r31->unk_110 * 8); + var_r31->unk_188 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_188, 0, var_r31->unk_110 * 0xC); + var_r31->unk_18C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_18C, 0, var_r31->unk_110 * 0xC); + var_r31->unk_190 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 6, var_r23->unk_48); + memset(var_r31->unk_190, 0, var_r31->unk_110 * 6); + var_r31->unk_194 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_194, 0, var_r31->unk_110 * 0xC); + var_r31->unk_198 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_112[0] * 0xC, var_r23->unk_48); + memset(var_r31->unk_198, 0, var_r31->unk_112[0] * 0xC); + var_r31->unk_1A0 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110, var_r23->unk_48); + memset(var_r31->unk_1A0, 0, var_r31->unk_110); + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (((var_r31->unk_112[0] > 0) && (var_r30 >= var_r31->unk_144[0]) && (var_r30 < (var_r31->unk_144[0] + var_r31->unk_112[0]))) + || ((var_r31->unk_112[4] > 0) && (var_r30 >= var_r31->unk_144[4]) && (var_r30 < (var_r31->unk_144[4] + var_r31->unk_112[4]))) + || ((var_r31->unk_112[8] > 0) && (var_r30 >= var_r31->unk_144[8]) && (var_r30 < (var_r31->unk_144[8] + var_r31->unk_112[8]))) + || ((var_r31->unk_112[10] > 0) && (var_r30 >= var_r31->unk_144[10]) && (var_r30 < (var_r31->unk_144[10] + var_r31->unk_112[10]))) + || ((var_r31->unk_112[12] > 0) && (var_r30 >= var_r31->unk_144[12]) && (var_r30 < (var_r31->unk_144[12] + var_r31->unk_112[12]))) + || ((var_r31->unk_112[16] > 0) && (var_r30 >= var_r31->unk_144[16]) && (var_r30 < (var_r31->unk_144[16] + var_r31->unk_112[16]))) + || ((var_r31->unk_112[17] > 0) && (var_r30 >= var_r31->unk_144[17]) && (var_r30 < (var_r31->unk_144[17] + var_r31->unk_112[17]))) + || ((var_r31->unk_112[20] > 0) && (var_r30 >= var_r31->unk_144[20]) && (var_r30 < (var_r31->unk_144[20] + var_r31->unk_112[20]))) + || ((var_r31->unk_112[21] > 0) && (var_r30 >= var_r31->unk_144[21]) && (var_r30 < (var_r31->unk_144[21] + var_r31->unk_112[21])))) { + var_r31->unk_1A0[var_r30] = 1; + } + else { + var_r31->unk_1A0[var_r30] = 0; + } + } + var_r31->unk_23A.r = 0; + var_r31->unk_23A.g = 0; + var_r31->unk_23A.b = 0xFF; + var_r31->unk_23A.a = 0x40; + var_r29 = &var_r31->unk_17C[var_r31->unk_144[0]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[0]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[0]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[0]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp14 / (var_r24 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[0] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f26 = var_f26 + var_f23; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0, var_r24 - 1, var_r24 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[1]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[1]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[1]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[1]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = 0.5f * var_f24; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[1] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 1, var_r24 - 1, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[2]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[2]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[2]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[2]]; + var_f25 = var_f30 = -(0.5f * var_f24); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[2] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 2, var_r24 - 1, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[3]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[3]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[3]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[3]]; + var_f25 = var_f30 = 0.5f * var_f24; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[3] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 3, var_r24 - 1, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[4]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[4]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[4]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[4]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[4] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * (cosd(var_f27) - 1.0)); + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 4, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[5]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[5]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[5]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[5]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[5] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * cosd(var_f27)); + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 5, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[6]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[6]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[6]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[6]]; + var_f25 = var_f30 = -(0.5f * var_f24); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[6] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_r29->x = var_f25 - (25.0 * (cosd(var_f27) - 1.0)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 6, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[7]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[7]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[7]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[7]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = 0.5f * var_f24; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[7] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f - (90.0f * (var_r27 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * (sind(var_f27) - 1.0)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 7, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[8]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[8]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[8]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[8]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[8] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + 25.0 * cosd(var_f27); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 8, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[9]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[9]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[9]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[9]]; + var_f25 = var_f30 = -(0.5f * var_f24 - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[9] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 9, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[10]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[10]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[10]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[10]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[10] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f - (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xA, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[11]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[11]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[11]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[11]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[11] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = -(90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xB, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[12]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[12]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[12]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[12]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[12] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = sp1C + (25.0 * cosd(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xC, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[13]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[13]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[13]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[13]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[13] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = sp1C + (25.0 * cosd(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xD, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[14]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[14]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[14]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[14]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[14] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = -(90.0f * (var_r27 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xE, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[15]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[15]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[15]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[15]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[15] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = -90.0f - (90.0f * (var_r27 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xF, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[16]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[16]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[16]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[16]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[16] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x10, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[17]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[17]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[17]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[17]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[17] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f - (90.0f * (var_r27 / 4.0f)); + var_f22 = -(90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27) * -sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * -sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x11, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[18]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[18]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[18]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[18]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[18] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_f22 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x12, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[19]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[19]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[19]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[19]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[19] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 + (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 - (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x13, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[20]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[20]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[20]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[20]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[20] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r27 / 4.0f)); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x14, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[21]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[21]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[21]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[21]]; + var_f25 = var_f30 = -(0.5f * var_f24 - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[21] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 270.0f - (90.0f * (var_r27 / 4.0f)); + var_f22 = -(90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (cosd(var_f27) * 25.0 * -sind(var_f22)); + var_r29->y = sp20 + 25.0 * cosd(var_f22); + var_r29->z = sp1C + (25.0 * sind(var_f27) * -sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x15, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[22]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[22]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[22]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[22]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[22] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r27 / 4.0f)); + var_f22 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x16, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[23]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[23]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[23]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[23]]; + var_f25 = var_f30 = -((var_f24 * 0.5f) - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((var_f24 * 0.5f) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[23] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r27 / 4.0f)); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 + (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 - (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x17, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[24]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[24]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[24]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[24]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = 0.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp14 / (var_r24 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[0x18] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f26 = var_f26 - var_f23; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x18, var_r24 - 1, var_r24 - 1); + } + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + for (var_r27 = 0; var_r27 < var_r30; var_r27++) { + var_f30 = var_r31->unk_17C[var_r30].x - var_r31->unk_17C[var_r27].x; + var_f28 = var_r31->unk_17C[var_r30].y - var_r31->unk_17C[var_r27].y; + var_f26 = var_r31->unk_17C[var_r30].z - var_r31->unk_17C[var_r27].z; + sp24 = (var_f26 * var_f26) + ((var_f30 * var_f30) + (var_f28 * var_f28)); + if (sp24 < 10.0f) { + var_r31->unk_178[var_r30] = var_r27; + if (var_r31->unk_178[var_r27] != -1) { + var_r31->unk_178[var_r30] = var_r31->unk_178[var_r27]; + } + break; + } + } + if (var_r27 >= var_r30) { + var_r31->unk_178[var_r30] = -1; + } + } + memcpy(var_r31->unk_180, var_r31->unk_17C, var_r31->unk_110 * 0xC); + memcpy(var_r31->unk_198, &var_r31->unk_180[var_r31->unk_144[0]], var_r31->unk_112[0] * 0xC); + var_r31->unk_19C = 0; + fn_1_DB44(var_r31, var_r23); + fn_1_DE3C(var_r31, var_r23); + var_f31 = sqrtf((0.5f * sp8 * (0.5f * sp8)) + ((0.5f * var_f24 * (0.5f * var_f24)) + (0.5f * var_f24 * (0.5f * var_f24)))); + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + var_f30 = var_r31->unk_17C[var_r30].x; + var_f28 = var_r31->unk_17C[var_r30].y - (0.5f * sp8); + var_f26 = var_r31->unk_17C[var_r30].z; + sp24 = sqrtf((var_f26 * var_f26) + ((var_f30 * var_f30) + (var_f28 * var_f28))); + var_f27 = sp24; + sp24 = 1.0f - (sp24 / var_f31); + if (var_f27 != 0.0f) { + var_f22 = 1.0f / var_f27; + } + else { + var_f22 = 0.0; + } + var_r31->unk_194[var_r30].x = sp24 * (var_f22 * var_r31->unk_17C[var_r30].x); + var_r31->unk_194[var_r30].y = sp24 * (var_f22 * var_r31->unk_17C[var_r30].y); + var_r31->unk_194[var_r30].z = sp24 * (var_f22 * var_r31->unk_17C[var_r30].z); + } + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if ((((var_r31->unk_112[6] <= 0) || (var_r30 < var_r31->unk_144[6]) || (var_r30 >= (var_r31->unk_144[6] + var_r31->unk_112[6]))) + && ((var_r31->unk_112[7] <= 0) || (var_r30 < var_r31->unk_144[7]) || (var_r30 >= (var_r31->unk_144[7] + var_r31->unk_112[7]))) + && ((var_r31->unk_112[0xE] <= 0) || (var_r30 < var_r31->unk_144[0xE]) || (var_r30 >= (var_r31->unk_144[0xE] + var_r31->unk_112[0xE]))) + && ((var_r31->unk_112[0xF] <= 0) || (var_r30 < var_r31->unk_144[0xF]) || (var_r30 >= (var_r31->unk_144[0xF] + var_r31->unk_112[0xF]))) + && ((var_r31->unk_112[4] <= 0) || (var_r30 < var_r31->unk_144[4]) || (var_r30 >= (var_r31->unk_144[4] + var_r31->unk_112[4]))) + && ((var_r31->unk_112[8] <= 0) || (var_r30 < var_r31->unk_144[8]) || (var_r30 >= (var_r31->unk_144[8] + var_r31->unk_112[8]))) + && ((var_r31->unk_112[0xA] <= 0) || (var_r30 < var_r31->unk_144[0xA]) || (var_r30 >= (var_r31->unk_144[0xA] + var_r31->unk_112[0xA]))) + && ((var_r31->unk_112[0xC] <= 0) || (var_r30 < var_r31->unk_144[0xC]) || (var_r30 >= (var_r31->unk_144[0xC] + var_r31->unk_112[0xC]))) + && ((var_r31->unk_112[0x10] <= 0) || (var_r30 < var_r31->unk_144[0x10]) + || (var_r30 >= (var_r31->unk_144[0x10] + var_r31->unk_112[0x10]))) + && ((var_r31->unk_112[0x11] <= 0) || (var_r30 < var_r31->unk_144[0x11]) + || (var_r30 >= (var_r31->unk_144[0x11] + var_r31->unk_112[0x11]))) + && ((var_r31->unk_112[0x14] <= 0) || (var_r30 < var_r31->unk_144[0x14]) + || (var_r30 >= (var_r31->unk_144[0x14] + var_r31->unk_112[0x14]))) + && ((var_r31->unk_112[0x15] <= 0) || (var_r30 < var_r31->unk_144[0x15]) + || (var_r30 >= (var_r31->unk_144[0x15] + var_r31->unk_112[0x15]))) + && (var_r30 >= var_r31->unk_144[4])) + || (var_r31->unk_178[var_r30] != -1)) { + var_r31->unk_18C[var_r30].x = var_r31->unk_18C[var_r30].y = var_r31->unk_18C[var_r30].z = 0.0; + var_r31->unk_190[var_r30][0] = var_r31->unk_190[var_r30][1] = 0; + var_r31->unk_190[var_r30][2] = 0; + } + else if (((var_r31->unk_112[0] > 0) && (var_r30 >= var_r31->unk_144[0]) && (var_r30 < (var_r31->unk_144[0] + var_r31->unk_112[0]))) + || ((var_r31->unk_112[4] > 0) && (var_r30 >= var_r31->unk_144[4]) && (var_r30 < (var_r31->unk_144[4] + var_r31->unk_112[4]))) + || ((var_r31->unk_112[8] > 0) && (var_r30 >= var_r31->unk_144[8]) && (var_r30 < (var_r31->unk_144[8] + var_r31->unk_112[8]))) + || ((var_r31->unk_112[0xA] > 0) && (var_r30 >= var_r31->unk_144[0xA]) && (var_r30 < (var_r31->unk_144[0xA] + var_r31->unk_112[0xA]))) + || ((var_r31->unk_112[0xC] > 0) && (var_r30 >= var_r31->unk_144[0xC]) && (var_r30 < (var_r31->unk_144[0xC] + var_r31->unk_112[0xC]))) + || ((var_r31->unk_112[0x10] > 0) && (var_r30 >= var_r31->unk_144[0x10]) && (var_r30 < (var_r31->unk_144[0x10] + var_r31->unk_112[0x10]))) + || ((var_r31->unk_112[0x11] > 0) && (var_r30 >= var_r31->unk_144[0x11]) && (var_r30 < (var_r31->unk_144[0x11] + var_r31->unk_112[0x11]))) + || ((var_r31->unk_112[0x14] > 0) && (var_r30 >= var_r31->unk_144[0x14]) && (var_r30 < (var_r31->unk_144[0x14] + var_r31->unk_112[0x14]))) + || ((var_r31->unk_112[0x15] > 0) && (var_r30 >= var_r31->unk_144[0x15]) + && (var_r30 < (var_r31->unk_144[0x15] + var_r31->unk_112[0x15])))) { + *var_r31->unk_190[var_r30] = var_r31->unk_190[var_r30][1] = 0; + sp24 = sqrtf((var_r31->unk_17C[var_r30].x * var_r31->unk_17C[var_r30].x) + (var_r31->unk_17C[var_r30].z * var_r31->unk_17C[var_r30].z)); + var_f27 = sp24; + sp24 = 1.0f - (sp24 / sqrtf(var_f24 * var_f24)); + var_r31->unk_18C[var_r30].y = -(180.0f * sp24); + var_f27 = sqrtf(var_f27); + if (var_f27 != 0.0f) { + var_f22 = 1.0f / var_f27; + } + else { + var_f22 = 0.0; + } + var_r31->unk_18C[var_r30].x = sind((180.0f * (var_f22 * var_r31->unk_17C[var_r30].x))); + var_r31->unk_18C[var_r30].z = sind((180.0f * (var_f22 * var_r31->unk_17C[var_r30].z))); + var_r31->unk_18C[var_r30].x *= 20.0f * -(1.0f - sp24); + var_r31->unk_18C[var_r30].z *= (20.0f * -(1.0f - sp24)); + var_r31->unk_190[var_r30][2] = 1; + } + else { + sp24 = sqrtf((var_r31->unk_17C[var_r30].x * var_r31->unk_17C[var_r30].x) + (var_r31->unk_17C[var_r30].z * var_r31->unk_17C[var_r30].z)); + if (sp24 != 0.0f) { + sp24 = 1.0f / sp24; + } + else { + sp24 = 0.0f; + } + var_r31->unk_18C[var_r30].x = -(sp24 * var_r31->unk_17C[var_r30].x); + var_r31->unk_18C[var_r30].z = -(sp24 * var_r31->unk_17C[var_r30].z); + var_r31->unk_18C[var_r30].y = 0.0; + var_f27 = 180.0 + atan2d(var_r31->unk_17C[var_r30].x, var_r31->unk_17C[var_r30].z); + if (var_f27 > 360.0f) { + var_f27 = fmod(var_f27, 360.0); + } + else if (var_f27 < 0.0f) { + var_f27 += 360.0f; + } + var_f27 = 255.0f * (0.0027777778f * var_f27); + if (var_f27 >= 255.0f) { + var_f27 = 255.0f; + } + else if (var_f27 < 0.0f) { + var_f27 = 0.0; + } + var_f22 = 64.0f * (var_r31->unk_17C[var_r30].y / sp8); + if (var_f22 >= 63.0f) { + var_f22 = 63.0f; + } + else if (var_f22 < 0.0f) { + var_f22 = 0.0; + } + var_r31->unk_190[var_r30][0] = var_f27; + var_r31->unk_190[var_r30][1] = var_f22; + var_r31->unk_190[var_r30][2] = 2; + } + } + DCFlushRangeNoSync(var_r31->unk_180, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_17C, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_188, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_184, var_r31->unk_110 * 8); + DCFlushRangeNoSync(var_r31->unk_178, var_r31->unk_110 * 2); + PPCSync(); + for (var_r21 = 0; var_r21 < 0x19; var_r21++) { + if ((var_r31->unk_208[var_r21] != 0) && var_r31->unk_1A4[var_r21] && (var_r31->unk_112[var_r21] != 0)) { + var_r17 = HuMemDirectMallocNum(HEAP_DATA, 0x4000, var_r23->unk_48); + spC = var_r17; + (void)var_r18; + DCFlushRange(var_r17, 0x4000); + GXBeginDisplayList(spC, 0x4000); + GXBegin(GX_QUADS, GX_VTXFMT0, var_r31->unk_208[var_r21] * 4); + var_r20 = var_r31->unk_1A4[var_r21]; + for (var_r30 = 0; var_r30 < var_r31->unk_208[var_r21]; var_r30++) { + for (var_r27 = 0; var_r27 < 4; var_r27++) { + if (var_r31->unk_178[var_r20[var_r27]] == -1) { + var_r18 = var_r20[var_r27]; + } + else { + var_r18 = var_r31->unk_178[var_r20[var_r27]]; + } + GXPosition1x16(var_r18); + GXNormal1x16(var_r18); + GXColor1x16(0); + GXTexCoord1x16(var_r20[var_r27]); + } + var_r20 += 5; + } + var_r31->unk_244[var_r21] = GXEndDisplayList(); + if (var_r31->unk_244[var_r21] >= 0x4000) { + OSReport("ERROR! GList test size over! \n"); + } + var_r31->unk_2A8[var_r21] = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_244[var_r21], var_r23->unk_48); + memcpy(var_r31->unk_2A8[var_r21], var_r17, var_r31->unk_244[var_r21]); + DCFlushRange(var_r31->unk_2A8[var_r21], var_r31->unk_244[var_r21]); + HuMemDirectFree(var_r17); + } + } + return var_r19; +} + +void fn_1_D9A8(M425DllUnkStruct4 *var_r31, ModelData *var_r24, s32 var_r30, s32 var_r26, s32 var_r25) +{ + s16 *var_r29; + s32 var_r28; + s32 var_r27; + + var_r31->unk_208[var_r30] = var_r26 * var_r25; + var_r31->unk_1A4[var_r30] = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_208[var_r30] * 0xA, var_r24->unk_48); + memset(var_r31->unk_1A4[var_r30], 0, var_r31->unk_208[var_r30] * 0xA); + var_r29 = var_r31->unk_1A4[var_r30]; + for (var_r28 = 0; var_r28 < var_r25; var_r28++) { + for (var_r27 = 0; var_r27 < var_r26; var_r27++) { + var_r29[0] = var_r31->unk_144[var_r30] + (var_r26 + 1) * var_r28 + var_r27; + var_r29[1] = var_r31->unk_144[var_r30] + (var_r26 + 1) * var_r28 + (var_r27 + 1); + var_r29[2] = var_r31->unk_144[var_r30] + (var_r26 + 1) * (var_r28 + 1) + (var_r27 + 1); + var_r29[3] = var_r31->unk_144[var_r30] + (var_r26 + 1) * (var_r28 + 1) + var_r27; + var_r29 += 5; + } + } + DCFlushRangeNoSync(var_r31->unk_1A4[var_r30], var_r31->unk_208[var_r30] * 0xA); + PPCSync(); +} + +void fn_1_DB44(M425DllUnkStruct4 *arg0, ModelData *model) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s16 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + for (var_r30 = 0; var_r30 < 0x19; var_r30++) { + if ((arg0->unk_208[var_r30] != 0) && arg0->unk_1A4[var_r30]) { + for (var_r31 = arg0->unk_1A4[var_r30], var_r29 = 0; var_r29 < arg0->unk_208[var_r30]; var_r29++, var_r31 += 0x5) { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (arg0->unk_178[var_r31[var_r28]] != -1) { + var_r31[var_r28] = arg0->unk_178[var_r31[var_r28]]; + } + } + } + } + } + for (var_r30 = 0; var_r30 < 0x19; var_r30++) { + if ((arg0->unk_208[var_r30] != 0) && arg0->unk_1A4[var_r30]) { + for (var_r31 = arg0->unk_1A4[var_r30], var_r29 = 0; var_r29 < arg0->unk_208[var_r30]; var_r29++, var_r31 += 0x5) { + var_f31 = arg0->unk_17C[var_r31[0]].x - arg0->unk_17C[var_r31[1]].x; + var_f30 = arg0->unk_17C[var_r31[0]].y - arg0->unk_17C[var_r31[1]].y; + var_f29 = arg0->unk_17C[var_r31[0]].z - arg0->unk_17C[var_r31[1]].z; + var_f28 = (var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 < 10.0f) { + var_r31[4] = 1; + } + else { + var_f31 = arg0->unk_17C[var_r31[0]].x - arg0->unk_17C[var_r31[2]].x; + var_f30 = arg0->unk_17C[var_r31[0]].y - arg0->unk_17C[var_r31[2]].y; + var_f29 = arg0->unk_17C[var_r31[0]].z - arg0->unk_17C[var_r31[2]].z; + var_f28 = (var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 < 10.0f) { + var_r31[4] = 2; + } + else { + var_r31[4] = 0; + } + } + } + } + } +} + +void fn_1_DE3C(M425DllUnkStruct4 *arg0, ModelData *model) +{ + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r30; + s32 var_r29; + s16 *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + memset(arg0->unk_188, 0, arg0->unk_110 * sizeof(Vec)); + for (var_r30 = 0; var_r30 < arg0->unk_240; var_r30++) { + if ((arg0->unk_208[var_r30] != 0) && arg0->unk_1A4[var_r30]) { + for (var_r28 = arg0->unk_1A4[var_r30], var_r24 = 0; var_r24 < arg0->unk_208[var_r30]; var_r24++, var_r28 += 5) { + switch (var_r28[4]) { + case 1: + var_r27 = 0; + var_r29 = 2; + var_r26 = 3; + var_r25 = 1; + break; + case 2: + var_r27 = 0; + var_r29 = 1; + var_r26 = 3; + var_r25 = 2; + break; + default: + var_r27 = 0; + var_r29 = 1; + var_r26 = 2; + var_r25 = 3; + break; + } + var_r27 = var_r28[var_r27]; + var_r29 = var_r28[var_r29]; + var_r26 = var_r28[var_r26]; + var_r25 = var_r28[var_r25]; + sp14.x = arg0->unk_180[var_r29].x - arg0->unk_180[var_r27].x; + sp14.y = arg0->unk_180[var_r29].y - arg0->unk_180[var_r27].y; + sp14.z = arg0->unk_180[var_r29].z - arg0->unk_180[var_r27].z; + sp8.x = arg0->unk_180[var_r26].x - arg0->unk_180[var_r29].x; + sp8.y = arg0->unk_180[var_r26].y - arg0->unk_180[var_r29].y; + sp8.z = arg0->unk_180[var_r26].z - arg0->unk_180[var_r29].z; + VECCrossProduct(&sp14, &sp8, &sp20); + sp20.x *= -1.0f; + sp20.y *= -1.0f; + sp20.z *= -1.0f; + arg0->unk_188[var_r27].x += sp20.x; + arg0->unk_188[var_r27].y += sp20.y; + arg0->unk_188[var_r27].z += sp20.z; + arg0->unk_188[var_r29].x += sp20.x; + arg0->unk_188[var_r29].y += sp20.y; + arg0->unk_188[var_r29].z += sp20.z; + arg0->unk_188[var_r26].x += sp20.x; + arg0->unk_188[var_r26].y += sp20.y; + arg0->unk_188[var_r26].z += sp20.z; + arg0->unk_188[var_r25].x += sp20.x; + arg0->unk_188[var_r25].y += sp20.y; + arg0->unk_188[var_r25].z += sp20.z; + } + } + } + for (var_r30 = 0; var_r30 < arg0->unk_110; var_r30++) { + VECNormalize(&arg0->unk_188[var_r30], &arg0->unk_188[var_r30]); + } +} + +s32 lbl_1_data_150[3][2] = { { 0x638, 0x63B }, { 0x639, 0x63C }, { 0x63A, 0x63D } }; +GXColor lbl_1_data_168 = { 255, 255, 255, 255 }; +Mtx lbl_1_data_16C = { + { 0.5f, 0.0f, 0.0f, -0.5f }, + { 0.0f, 0.5f, 0.0f, -0.5f }, + { 0.0f, 0.0f, 0.5f, -0.5f }, +}; +Vec lbl_1_data_19C[4] = { + { -0.5f, 0.5f, 0.0f }, + { 0.5f, 0.5f, 0.0f }, + { 0.5f, -0.5f, 0.0f }, + { -0.5f, -0.5f, 0.0f }, +}; +Vec2f lbl_1_data_1CC[4] = { + { 0.0f, 0.0f }, + { 0.25f, 0.0f }, + { 0.25f, 0.25f }, + { 0.0f, 0.25f }, +}; + +void fn_1_E210(s32 arg0) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M425DllUnkStruct4 *var_r31; + s32 var_r30; + s32 var_r29; + LightData *var_r28; + ModelData *var_r27; + s32 var_r26; + + if (lbl_1_bss_6EC) { + var_r27 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r27->unk_120; + for (var_r30 = 0, var_f31 = 0.0f; var_r30 < 6; var_r30++) { + if ((var_r31->unk_84[var_r30] == -1) || (var_r31->unk_9C[var_r30] < 0.0f)) { + var_r31->unk_84[var_r30] = -1; + var_r31->unk_9C[var_r30] = 0.0f; + } + else { + var_f31 += var_r31->unk_9C[var_r30]; + for (var_r29 = 0; var_r29 < 5; var_r29++) { + if (var_r31->unk_3C[var_r29] == var_r31->unk_84[var_r30]) { + break; + } + } + if (var_r29 >= 5) { + for (var_r29 = 0; var_r29 < 5; var_r29++) { + if ((var_r31->unk_3C[var_r29] == -1) && (var_r31->unk_54[var_r29] <= 0.0f)) { + break; + } + } + } + if ((var_r29 < 5) && (var_r31->unk_54[var_r29] < var_r31->unk_9C[var_r30])) { + var_r31->unk_3C[var_r29] = var_r31->unk_84[var_r30]; + var_r31->unk_54[var_r29] = var_r31->unk_9C[var_r30]; + var_r31->unk_6C[var_r29] = var_r31->unk_B4[var_r30]; + } + var_r31->unk_84[var_r30] = -1; + var_r31->unk_9C[var_r30] = 0.0f; + var_r31->unk_B4[var_r30] = 0; + } + } + for (var_r30 = 0, var_r29 = 0, var_r31->unk_14 = 0.0f; var_r30 < 6; var_r30++) { + if ((var_r31->unk_3C[var_r30] != -1) && (var_r31->unk_54[var_r30] > 0.0f)) { + var_r31->unk_14 += 0.8f * var_r31->unk_54[var_r30]; + var_r29++; + } + } + + for (var_r30 = 0, var_r29 = 0, var_r31->unk_20 = 0.0f; var_r30 < 6; var_r30++) { + if ((var_r31->unk_3C[var_r30] != -1) && (var_r31->unk_54[var_r30] > 0.0f) && (var_r31->unk_6C[var_r30] != 0)) { + var_r31->unk_20 += 0.8f * var_r31->unk_54[var_r30]; + var_r29++; + } + } + if (var_r29 != 0) { + var_r31->unk_18 = 20.0f * (var_r31->unk_20 * var_r31->unk_20); + var_r31->unk_08 -= var_r31->unk_18; + if (var_r31->unk_08 < 0.0f) { + var_r31->unk_08 = 0.0f; + } + if ((var_r31->unk_18 > var_r31->unk_1C) && (var_r31->unk_18 >= 0.0f)) { + if (var_r31->unk_18 >= 13.200000000000001) { + var_r26 = HuAudFXPlay(lbl_1_data_150[2][arg0]); + } + else if (var_r31->unk_18 >= 6.6000000000000005) { + var_r26 = HuAudFXPlay(lbl_1_data_150[1][arg0]); + } + else { + var_r26 = HuAudFXPlay(lbl_1_data_150[0][arg0]); + } + var_f30 = var_r31->unk_08 / 1000.0f; + if (var_r26 != -1) { + HuAudFXPitchSet(var_r26, (s32)(8191.0f * (1.0f - var_f30))); + } + } + } + else { + var_r31->unk_18 = 0.0f; + } + var_r31->unk_1C = var_r31->unk_18; + if (var_r31->unk_2C != 0) { + if (++var_r31->unk_28 >= var_r31->unk_2C) { + var_r31->unk_2C = var_r31->unk_28 = 0; + var_r31->unk_30 = 0.0f; + } + } + if ((var_r31->unk_E0 != var_r31->unk_E8) || (var_r31->unk_E4 != var_r31->unk_EC)) { + sp8.x = sind(var_r31->unk_E4) * cosd(var_r31->unk_E0); + sp8.z = cosd(var_r31->unk_E4) * cosd(var_r31->unk_E0); + sp8.y = sind(var_r31->unk_E0); + VECNormalize(&sp8, &sp8); + var_r28 = &Hu3DLocalLight[var_r27->unk_38[0]]; + var_r28->unk_1C.x = 1000.0f * sp8.x; + var_r28->unk_1C.y = 1000.0f * sp8.y; + var_r28->unk_1C.z = 1000.0f * sp8.z; + var_r28->unk_28.x = sp8.x; + var_r28->unk_28.y = sp8.y; + var_r28->unk_28.z = sp8.z; + var_r31->unk_E8 = var_r31->unk_E0; + var_r31->unk_EC = var_r31->unk_E4; + } + var_r31->unk_20 = 0.0f; + } +} + +void fn_1_E914(ModelData *var_r27, Mtx matrix) +{ + s32 spB4; + s32 spB0; + Mtx sp70; + Vec sp64; + Vec sp58; + float sp48; + float sp44; + float sp40; + float sp3C; + float sp38; + float sp34; + float sp30; + float sp2C; + float sp28; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f19; + float var_f18; + + M425DllUnkStruct4 *var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s32 var_r26; + + var_r31 = var_r27->unk_120; + if (var_r31->unk_2C != 0) { + var_f24 = (float)var_r31->unk_28 / var_r31->unk_2C; + var_r31->unk_30 = 0.30000001192092896 * cosd((90.0f * var_f24)); + sp40 = var_r31->unk_30 * (0.5 * sind((720.0f * var_f24))); + } + else { + sp40 = 0.0f; + } + if (var_r31->unk_0C != 0.0f) { + var_f19 = var_r31->unk_08 / var_r31->unk_0C; + } + else { + var_f19 = 1.0f; + } + var_r27->scale.y = var_r31->unk_DC = (0.100000024f + (0.9f * var_f19)) - sp40; + if (var_r31->unk_DC > 0.3f) { + sp3C = 1.0f - (-0.39999998f * ((var_r31->unk_DC - 0.3f) / 0.7f)); + } + else { + sp3C = 0.6f * (var_r31->unk_DC / 0.3f); + } + if (var_r31->unk_DC != 0.0f) { + sp3C /= var_r31->unk_DC; + } + else { + sp3C = 0.0f; + } + if (var_r31->unk_08 < 0.0f) { + sp3C = 0.0f; + } + if (var_f19 <= 0.3f) { + var_f24 = var_f19 / 0.3f; + var_r31->unk_E0 = 222.0f + (80.0f * var_f24); + } + var_f18 = 100.0f * var_r31->unk_14; + if (var_f19 > 0.85f) { + var_f18 += 100.0f * (4.0f * (var_f19 - 0.85f)); + } + if (var_f18 > 150.0f) { + var_f18 = 150.0f; + } + sp38 = 1.0f - var_f19; + if (var_f18 >= 0.0f) { + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (var_r31->unk_178[var_r30] == -1) { + var_r31->unk_180[var_r30].x = var_r31->unk_17C[var_r30].x + (var_f18 * var_r31->unk_194[var_r30].x); + var_r31->unk_180[var_r30].y = var_r31->unk_17C[var_r30].y + (var_f18 * var_r31->unk_194[var_r30].y); + var_r31->unk_180[var_r30].z = var_r31->unk_17C[var_r30].z + (var_f18 * var_r31->unk_194[var_r30].z); + } + } + } + else { + memcpy(var_r31->unk_180, var_r31->unk_17C, var_r31->unk_110 * 0xC); + } + var_r31->unk_14 = 0.0f; + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (!(var_f19 >= 1.0f) && (var_r31->unk_190[var_r30][2] != 0)) { + switch (var_r31->unk_190[var_r30][2]) { + case 1: + var_r31->unk_180[var_r30].x += sp38 * var_r31->unk_18C[var_r30].x; + var_r31->unk_180[var_r30].y += sp38 * var_r31->unk_18C[var_r30].y; + var_r31->unk_180[var_r30].z += sp38 * var_r31->unk_18C[var_r30].z; + break; + case 2: + var_f24 = lbl_1_bss_6E4[var_r31->unk_190[var_r30][0] + (var_r31->unk_190[var_r30][1] << 8)]; + var_f24 = 80.0f * (0.003921569f * (255.0f - var_f24) * sp38); + var_r31->unk_180[var_r30].x += var_f24 * var_r31->unk_18C[var_r30].x; + var_r31->unk_180[var_r30].y += var_f24 * var_r31->unk_18C[var_r30].y; + var_r31->unk_180[var_r30].z += var_f24 * var_r31->unk_18C[var_r30].z; + break; + } + } + } + for (var_r29 = 0, var_r28 = 0, var_f27 = var_f26 = var_f25 = 0.0f; var_r29 < 6; var_r29++) { + if ((var_r31->unk_54[var_r29] > 0.0f) || (var_r31->unk_3C[var_r29] != -1)) { + var_f27 += var_r31->unk_180[var_r31->unk_3C[var_r29]].x; + var_f25 += var_r31->unk_180[var_r31->unk_3C[var_r29]].z; + var_f26 += var_r31->unk_54[var_r29]; + var_r28++; + } + } + if (var_r28 >= 2) { + var_f27 /= var_r28; + var_f25 /= var_r28; + var_f26 /= var_r28; + mtxRot(sp70, 0.0f, var_r31->unk_D8, 0.0f); + var_f30 = var_r31->unk_CC.x + ((sp70[0][0] * var_f27) + (sp70[0][2] * var_f25)); + var_f31 = var_r31->unk_CC.z + ((sp70[2][0] * var_f27) + (sp70[2][2] * var_f25)); + fn_1_10EF8(var_r31->unk_00, 2, var_f30, var_f31); + var_r31->unk_50 = var_r31->unk_34; + var_r31->unk_54[5] = var_f26; + var_r31->unk_6C[5] = 0; + } + else { + var_r31->unk_50 = -1; + var_r31->unk_54[5] = 0.0f; + var_r31->unk_6C[5] = 0; + } + for (var_r29 = 0; var_r29 < 6; var_r29++) { + if ((var_r31->unk_54[var_r29] <= 0.0f) || (var_r31->unk_3C[var_r29] == -1)) { + var_r31->unk_3C[var_r29] = -1; + var_r31->unk_54[var_r29] = 0.0f; + var_r31->unk_6C[var_r29] = 0; + } + else { + var_f24 = 150.0f * var_r31->unk_54[var_r29] * sp3C; + sp44 = 50.0f * var_r31->unk_54[var_r29]; + if (sp44 > 15.000001f) { + sp44 = 15.000001f; + } + var_f27 = var_r31->unk_180[var_r31->unk_3C[var_r29]].x; + var_f26 = var_r31->unk_180[var_r31->unk_3C[var_r29]].y; + var_f25 = var_r31->unk_180[var_r31->unk_3C[var_r29]].z; + if (var_r29 != 5) { + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (var_r31->unk_178[var_r30] == -1) { + var_f30 = var_r31->unk_180[var_r30].x - var_f27; + var_f29 = var_r31->unk_DC * (var_r31->unk_180[var_r30].y - var_f26); + var_f31 = 0.425f * (var_r31->unk_180[var_r30].z - var_f25); + var_f28 = (var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29)); + if (var_f28 < 10000.0f) { + var_f28 = sqrtf((var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29))); + var_f28 = var_f28 * 0.01f; + var_r31->unk_180[var_r30].y -= (1.0f - var_f28) * var_f24; + if (var_r31->unk_180[var_r30].y < 1.0f) { + var_r31->unk_180[var_r30].y = 1.0f; + } + } + if (var_r31->unk_1A0[var_r30] != 0) { + var_f31 = var_r31->unk_180[var_r30].z - var_f25; + if (!(fabs(var_f31) > 100.0)) { + var_f28 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + if (var_f28 < 200.0f) { + var_f28 = var_f28 * 0.005f; + var_r31->unk_180[var_r30].y += (sp44 * sind((90.0f * var_f28))); // is this right? + } + else if (var_f28 < 400.0f) { + var_f28 -= 200.0f; + var_f28 = var_f28 * 0.005f; + var_r31->unk_180[var_r30].y += (sp44 * cosd((90.0f * var_f28))); + } + } + } + } + } + } + else { + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if ((var_r31->unk_178[var_r30] == -1) && ((var_r31->unk_F0[0] != var_r30) || (var_r31->unk_F0[1] != var_r30))) { + var_f30 = var_r31->unk_180[var_r30].x - var_f27; + var_f29 = var_r31->unk_DC * (var_r31->unk_180[var_r30].y - var_f26); + var_f31 = 0.425f * (var_r31->unk_180[var_r30].z - var_f25); + var_f28 = (var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29)); + if (var_f28 < 10000.0f) { + var_f28 = sqrtf((var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29))); + var_f28 = var_f28 * 0.01f; + var_r31->unk_180[var_r30].y -= (1.0f - var_f28) * var_f24; + if (var_r31->unk_180[var_r30].y < 1.0f) { + var_r31->unk_180[var_r30].y = 1.0f; + } + } + } + } + } + if (var_r29 < 5) { + if ((var_r31->unk_54[var_r29] -= 0.075f) <= 0.0f) { + var_r31->unk_54[var_r29] = 0.0f; + var_r31->unk_3C[var_r29] = -1; + var_r31->unk_6C[var_r29] = 0; + } + } + else { + var_r31->unk_54[var_r29] = 0.0f; + var_r31->unk_3C[var_r29] = -1; + var_r31->unk_6C[var_r29] = 0; + } + } + } + var_r31->unk_38 = 0; + memcpy(var_r31->unk_198, &var_r31->unk_180[var_r31->unk_144[0]], var_r31->unk_112[0] * 0xC); + var_r31->unk_19C = 0; + fn_1_DE3C(var_r31, var_r27); + if ((var_r31->unk_04 != -1) && (var_r31->unk_06 != -1)) { + mtxRot(sp70, 0.0f, var_r31->unk_D8, 0.0f); + sp70[1][0] *= var_r31->unk_DC; + sp70[1][1] *= var_r31->unk_DC; + sp70[1][2] *= var_r31->unk_DC; + var_f30 = var_r31->unk_180[var_r31->unk_06].x; + var_f29 = var_r31->unk_180[var_r31->unk_06].y; + var_f31 = var_r31->unk_180[var_r31->unk_06].z; + var_f27 = var_r31->unk_CC.x + ((sp70[0][2] * var_f31) + ((sp70[0][0] * var_f30) + (sp70[0][1] * var_f29))); + var_f26 = var_r31->unk_CC.y + ((sp70[1][2] * var_f31) + ((sp70[1][0] * var_f30) + (sp70[1][1] * var_f29))); + var_f25 = var_r31->unk_CC.z + ((sp70[2][2] * var_f31) + ((sp70[2][0] * var_f30) + (sp70[2][1] * var_f29))); + Hu3DModelPosSet(var_r31->unk_04, var_f27, var_f26, var_f25); + var_f30 = var_r31->unk_188[var_r31->unk_06].x; + var_f29 = var_r31->unk_188[var_r31->unk_06].y; + var_f31 = var_r31->unk_188[var_r31->unk_06].z; + sp64.x = var_f27 + (20.0f * var_f30); + sp64.y = var_f26 + (20.0f * var_f29); + sp64.z = var_f25 + (20.0f * var_f31); + sp48 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + var_f27 = sp34 = atan2d(sp48, var_f29); + var_f26 = sp30 = atan2d(var_f30, var_f31); + var_f25 = sp2C = 0.0f; + Hu3DModelRotSet(var_r31->unk_04, var_f27, var_f26, var_f25); + var_r30 = (s32)(10.0f * var_r31->unk_18) / 40; + if (var_r30 > 0x10) { + var_r30 = 0x10; + } + for (var_r26 = 0; var_r26 < var_r30; var_r26++) { + var_f27 = sp34; + var_f26 = sp30; + var_f25 = sp2C; + var_f27 += 0.5f * ((s32)frand() % 48); + var_f30 = sind(var_f26) * sind(var_f27); + var_f31 = cosd(var_f26) * sind(var_f27); + var_f29 = cosd(var_f27); + sp28 = 12.0f - ((s32)frand() % 6); + sp58.x = var_f30; + sp58.y = var_f29; + sp58.z = var_f31; + fn_1_11454(&sp64, &sp58, 50.0f + (5.0f * var_r30), sp28); + } + } + DCFlushRangeNoSync(var_r31->unk_180, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_188, var_r31->unk_110 * 0xC); + PPCSync(); +} + +void fn_1_101C4(ModelData *var_r29, Mtx var_r28) +{ + Mtx sp50; + ROMtx sp20; + GXColor sp1C; + M425DllUnkStruct4 *var_r31; + s32 var_r30; + s16 var_r27; + + var_r31 = var_r29->unk_120; + GXLoadPosMtxImm(var_r28, 0); + MTXInvXpose(var_r28, sp50); + GXLoadNrmMtxImm(sp50, 0); + var_r27 = fn_1_115D4(var_r29, Hu3DCameraMtx, Hu3DCameraMtxXPose, 4.0f); + if (omPauseChk() == 0) { + fn_1_E914(var_r29, var_r28); + } + var_r29->scale.y = var_r31->unk_DC; + memcpy(sp50, lbl_1_data_16C, sizeof(lbl_1_data_16C)); + mtxRotCat(&sp50[0], CRot.x, CRot.y + var_r31->unk_D8, 180.0f); + GXLoadTexMtxImm(sp50, 0x36, GX_MTX2x4); + sp1C.a = lbl_1_bss_6D0; + GXSetTevColor(GX_TEVREG2, sp1C); + HuSprTexLoad(lbl_1_bss_6E0, 0, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_6DC, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_NRM, 0x36, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + lbl_1_bss_6C8.r = var_r31->unk_23A.r; + lbl_1_bss_6C8.g = var_r31->unk_23A.g; + lbl_1_bss_6C8.b = var_r31->unk_23A.b; + lbl_1_bss_6C8.a = var_r31->unk_23A.a; + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_bss_6C8); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_168); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, var_r27, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(1, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + if (HmfInverseMtxF3X3(var_r28, sp50) == 0) { + MTXIdentity(sp50); + } + PSMTXReorder(sp50, sp20); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8); + for (var_r30 = 0; var_r30 < var_r31->unk_240; var_r30++) { + if (var_r31->unk_2A8[var_r30] && var_r31->unk_244[var_r30] != 0 && var_r30 != 1) { + GXCallDisplayList(var_r31->unk_2A8[var_r30], var_r31->unk_244[var_r30]); + } + } + GXSetNumTevStages(2); + GXSetNumTexGens(2); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_NRM, 0x36, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOp(GX_TEVSTAGE1, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_APREV, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + lbl_1_bss_6C8.r = var_r31->unk_23A.r; + lbl_1_bss_6C8.g = var_r31->unk_23A.g; + lbl_1_bss_6C8.b = var_r31->unk_23A.b; + lbl_1_bss_6C8.a = var_r31->unk_23A.a; + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_bss_6C8); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_168); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, var_r27, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8); + if (var_r31->unk_2A8[1] && (var_r31->unk_244[1] != 0)) { + GXCallDisplayList(var_r31->unk_2A8[1], var_r31->unk_244[1]); + } +} + +s32 fn_1_109EC(s32 arg0, s32 arg1, Vec *arg2, Vec *arg3, Vec *arg4, s32 arg5) +{ + float var_f31; + float var_f30; + M425DllUnkStruct4 *var_r31; + s32 var_r29; + ModelData *var_r26; + + if (!lbl_1_bss_6EC) { + return; + } + var_r26 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r26->unk_120; + if (var_r31->unk_0C != 0.0f) { + var_f30 = var_r31->unk_08 / var_r31->unk_0C; + } + else { + var_f30 = 1.0f; + } + var_r31->unk_24 = fn_1_10EF8(arg0, arg1, arg2->x, arg2->z); + arg4->x = arg2->x + arg3->x; + arg4->y = arg2->y + arg3->y; + arg4->z = arg2->z + arg3->z; + if ((arg4->y < var_r31->unk_24) && (arg3->y < 0.0f) && (var_r31->unk_34 >= 0)) { + var_f31 = -arg3->y; + if (var_f31 > 50.0f) { + var_f31 = 50.0f; + } + else if (var_f31 < 10.0f) { + var_f31 = 0.0f; + } + if ((var_f31 > 0.0f) && (arg5 != 0)) { + var_f31 = (var_f31 - 10.0f) / 40.0f; + var_r31->unk_20 += var_f31; + } + var_f31 = -arg3->y; + var_f31 = var_f31 * 0.02f; + if (var_r31->unk_34 >= 0) { + for (var_r29 = 0; var_r29 < var_r31->unk_38; var_r29++) { + if (var_r31->unk_84[var_r29] == var_r31->unk_34) { + break; + } + } + if (var_r29 >= var_r31->unk_38) { + var_r29 = var_r31->unk_38; + } + if (var_r29 < 6) { + var_r31->unk_84[var_r29] = var_r31->unk_34; + if (var_r31->unk_9C[var_r29] < var_f31) { + var_r31->unk_9C[var_r29] = var_f31; + var_r31->unk_B4[var_r29] = arg5; + } + var_r31->unk_38++; + } + } + arg4->y = var_r31->unk_24 - (150.0f * (var_f30 * var_f31)); + if (arg4->y < 1.0f) { + arg4->y = 1.0f; + } + return 1; + } + if (arg4->y < var_r31->unk_24) { + arg4->y = var_r31->unk_24; + } + return 0; +} + +float fn_1_10CF4(s32 arg0) +{ + ModelData *var_r31; + M425DllUnkStruct4 *var_r30; + + if (!lbl_1_bss_6EC) { + return; + } + var_r31 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r31->unk_120; + return var_r30->unk_08; +} + +void fn_1_10D54(s32 arg0, float arg8) +{ + ModelData *var_r31; + M425DllUnkStruct4 *var_r30; + + if (lbl_1_bss_6EC) { + var_r31 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r31->unk_120; + var_r30->unk_08 = arg8; + } +} + +void fn_1_10DB4(s32 arg0) +{ + M425DllUnkStruct4 *var_r31; + ModelData *var_r30; + + if (lbl_1_bss_6EC) { + var_r30 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r30->unk_120; + if (var_r31->unk_2C == 0) { + var_r31->unk_28 = 0; + var_r31->unk_2C = 0x28; + var_r31->unk_30 = 0.3f; + } + } +} + +void fn_1_10E3C(s32 arg0) +{ + M425DllUnkStruct4 *var_r31; + s32 var_r30; + ModelData *var_r29; + + if (lbl_1_bss_6EC) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r29 = &Hu3DData[lbl_1_bss_6EC->model[var_r30]]; + var_r31 = var_r29->unk_120; + if (arg0 != 0) { + var_r31->unk_110 = var_r31->unk_144[0x18] + var_r31->unk_112[24]; + var_r31->unk_240 = 0x19; + } + else { + var_r31->unk_110 = var_r31->unk_144[0x17] + var_r31->unk_112[23]; + var_r31->unk_240 = 0x18; + } + } + } +} + +float fn_1_10EF8(s32 arg0, s32 arg1, float arg8, float arg9) +{ + Mtx spC; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f25; + M425DllUnkStruct4 *var_r31; + Vec *var_r30; + s32 var_r29; + s32 var_r28; + ModelData *var_r26; + + if (!lbl_1_bss_6EC) { + return 0.0f; + } + var_r26 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r26->unk_120; + if ((arg1 >= 0) && (arg1 <= 2) && (var_r31->unk_F0[arg1] != -1)) { + var_r28 = var_r31->unk_F0[arg1]; + var_r31->unk_34 = var_r28; + if (var_r31->unk_19C == 0) { + return var_r31->unk_DC * var_r31->unk_198[var_r28].y; + } + return var_r31->unk_198[var_r28].y; + } + if (var_r31->unk_19C == 0) { + mtxRot(spC, 0.0f, var_r31->unk_D8, 0.0f); + spC[1][0] *= var_r31->unk_DC; + spC[1][1] *= var_r31->unk_DC; + spC[1][2] *= var_r31->unk_DC; + for (var_r29 = 0, var_r30 = var_r31->unk_198; var_r29 < var_r31->unk_112[0]; var_r29++, var_r30++) { + var_f31 = (spC[0][2] * var_r30->z) + ((spC[0][0] * var_r30->x) + (spC[0][1] * var_r30->y)); + var_f25 = (spC[1][2] * var_r30->z) + ((spC[1][0] * var_r30->x) + (spC[1][1] * var_r30->y)); + var_f30 = (spC[2][2] * var_r30->z) + ((spC[2][0] * var_r30->x) + (spC[2][1] * var_r30->y)); + var_r30->x = var_f31; + var_r30->y = var_f25; + var_r30->z = var_f30; + } + var_r31->unk_19C = 1; + } + arg8 -= var_r31->unk_CC.x; + arg9 -= var_r31->unk_CC.z; + var_f28 = 10000.0f; + var_r28 = -1; + for (var_r29 = 0, var_r30 = var_r31->unk_198; var_r29 < var_r31->unk_112[0]; var_r29++, var_r30++) { + var_f31 = arg8 - var_r30->x; + var_f30 = arg9 - var_r30->z; + if (!(fabs(var_f31) > 100.0)) { + if (!(fabs(var_f30) > 100.0)) { + var_f29 = (var_f31 * var_f31) + (var_f30 * var_f30); + if (var_f29 < var_f28) { + var_r28 = var_r29; + var_f28 = var_f29; + } + } + } + } + (void)var_r29; + var_r31->unk_34 = var_r28; + if ((arg1 >= 0) && (arg1 <= 2)) { + var_r31->unk_F0[arg1] = var_r28; + } + if (var_r28 >= 0) { + return var_r31->unk_198[var_r28].y; + } + return 0.0f; +} + +void fn_1_11284(void) +{ + lbl_1_bss_6D8 = HuSprAnimRead(HuDataReadNum(0x38000E, 0x10000000)); + lbl_1_bss_6D4 = fn_1_11A74(lbl_1_bss_6D8, 0x40); + Hu3DModelLayerSet(lbl_1_bss_6D4, 6); +} + +void fn_1_112FC(void) +{ + M425DllUnkStruct5 *var_r31; + M425DllUnkStruct6 *var_r30; + s32 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[lbl_1_bss_6D4]; + var_r30 = var_r28->unk_120; + for (var_r31 = var_r30->unk_3C, var_r29 = 0; var_r29 < var_r30->unk_24; var_r29++, var_r31++) { + if (!(var_r31->unk_28 <= 0.0f)) { + var_r31->unk_04.x = var_r31->unk_10.x * var_r31->unk_1C; + var_r31->unk_04.y = var_r31->unk_10.y * var_r31->unk_1C; + var_r31->unk_04.z = var_r31->unk_10.z * var_r31->unk_1C; + var_r31->unk_1C *= 0.95f; + VECAdd(&var_r31->unk_30, &var_r31->unk_04, &var_r31->unk_30); + if (++var_r31->unk_40 >= 0xF) { + var_r31->unk_40 = 0; + var_r31->unk_28 = 0.0f; + } + } + } +} + +void fn_1_11418(void) +{ + HuSprAnimKill(lbl_1_bss_6D8); + lbl_1_bss_6D8 = NULL; +} + +s32 fn_1_11454(Vec *arg0, Vec *arg1, float arg8, float arg9) +{ + M425DllUnkStruct5 *var_r31; + M425DllUnkStruct6 *var_r29; + s32 var_r28; + ModelData *var_r26; + + var_r26 = &Hu3DData[lbl_1_bss_6D4]; + var_r29 = var_r26->unk_120; + for (var_r31 = var_r29->unk_3C, var_r28 = 0; var_r28 < var_r29->unk_24; var_r28++, var_r31++) { + if (var_r31->unk_28 <= 0.0f) { + break; + } + } + if (var_r28 >= var_r29->unk_24) { + return -1; + } + var_r31->unk_30.x = arg0->x; + var_r31->unk_30.y = arg0->y; + var_r31->unk_30.z = arg0->z; + var_r31->unk_10.x = arg1->x; + var_r31->unk_10.y = arg1->y; + var_r31->unk_10.z = arg1->z; + var_r31->unk_04.x = arg1->x * arg9; + var_r31->unk_04.y = arg1->y * arg9; + var_r31->unk_04.z = arg1->z * arg9; + var_r31->unk_1C = arg9; + var_r31->unk_28 = arg8; + var_r31->unk_2C = (s32)frand() % 360; + var_r31->unk_3C.a = 0x40; + var_r31->unk_40 = 0; + return var_r28; +} + +s16 fn_1_115D4(ModelData *arg0, Mtx arg1, Mtx arg2, float arg8) +{ + s16 var_r31; + s16 var_r30; + LightData *var_r29; + s16 var_r27; + + var_r27 = 0; + var_r30 = 1; + for (var_r29 = Hu3DGlobalLight, var_r31 = 0; var_r31 < 8; var_r31++, var_r29++) { + if (var_r29->unk_00 != -1) { + var_r30 <<= 1; + } + } + if ((arg0->attr & 0x1000) != 0) { + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if (arg0->unk_38[var_r31] != -1) { + var_r29 = &Hu3DLocalLight[arg0->unk_38[var_r31]]; + fn_1_116E4(arg0, var_r29, var_r30, arg2, arg1, arg8); + var_r27 |= var_r30; + var_r30 <<= 1; + } + } + } + return var_r27; +} + +void fn_1_116E4(ModelData *arg1, LightData *var_r31, s16 sp8, Mtx spC, Mtx sp10, float var_f31) +{ + switch ((u8)var_r31->unk_00) { + case 0: + GXInitLightAttn(&lbl_1_bss_688, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); + GXInitLightSpot(&lbl_1_bss_688, var_r31->unk_04, var_r31->unk_02); + break; + case 1: + GXInitLightAttn(&lbl_1_bss_688, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); + VECScale(&var_r31->unk_28, &var_r31->unk_1C, -100000.0f); + break; + case 2: + GXInitLightAttn(&lbl_1_bss_688, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); + GXInitLightDistAttn(&lbl_1_bss_688, var_r31->unk_04, var_r31->unk_08, var_r31->unk_02); + break; + } + if ((var_r31->unk_00 & 0x8000) != 0) { + MTXMultVec(spC, &var_r31->unk_28, &lbl_1_bss_67C); + MTXMultVec(sp10, &var_r31->unk_1C, &lbl_1_bss_670); + GXInitLightPos(&lbl_1_bss_688, lbl_1_bss_670.x, lbl_1_bss_670.y, lbl_1_bss_670.z); + } + else { + GXInitLightPos(&lbl_1_bss_688, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + lbl_1_bss_67C = var_r31->unk_28; + } + if (var_f31 == 0.0f) { + GXInitLightDir(&lbl_1_bss_688, lbl_1_bss_67C.x, lbl_1_bss_67C.y, lbl_1_bss_67C.z); + } + else { + GXInitSpecularDir(&lbl_1_bss_688, lbl_1_bss_67C.x, lbl_1_bss_67C.y, lbl_1_bss_67C.z); + GXInitLightAttn(&lbl_1_bss_688, 0.0f, 0.0f, 1.0f, var_f31 / 2, 0.0f, 1.0f - (var_f31 / 2)); + } + GXInitLightColor(&lbl_1_bss_688, var_r31->color); + GXLoadLightObjImm(&lbl_1_bss_688, sp8); +} + +s16 fn_1_11A74(AnimData *arg0, s16 arg1) +{ + M425DllUnkStruct6 *var_r31; + s16 var_r30; + Vec2f *var_r29; + M425DllUnkStruct5 *var_r28; + ModelData *var_r27; + Vec *var_r26; + void *var_r24; + s16 var_r23; + void *var_r21; + + var_r23 = Hu3DHookFuncCreate(fn_1_11EE0); + var_r27 = &Hu3DData[var_r23]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M425DllUnkStruct6), var_r27->unk_48); + var_r27->unk_120 = var_r31; + var_r31->unk_38 = arg0; + arg0->useNum++; + var_r31->unk_24 = arg1; + var_r31->unk_20 = 0; + var_r31->unk_4C = 0; + var_r31->unk_28 = 0; + var_r31->unk_21 = 0; + var_r31->unk_30 = 0; + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r28 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(M425DllUnkStruct5), var_r27->unk_48); + var_r31->unk_3C = var_r28; + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r28++) { + var_r28->unk_28 = 0.0f; + var_r28->unk_2C = 0.0f; + var_r28->unk_30.x = (s32)((frand() & 0x7F) - 0x40) * 0x14; + var_r28->unk_30.y = (s32)((frand() & 0x7F) - 0x40) * 0x1E; + var_r28->unk_30.z = (s32)((frand() & 0x7F) - 0x40) * 0x14; + var_r28->unk_3C.r = var_r28->unk_3C.g = var_r28->unk_3C.b = var_r28->unk_3C.a = 0xFF; + var_r28->unk_40 = 0; + } + var_r26 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, var_r27->unk_48); + var_r31->unk_40 = var_r26; + for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r26++) { + var_r26->x = var_r26->y = var_r26->z = 0.0f; + } + var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec2f) * 4, var_r27->unk_48); + var_r31->unk_44 = var_r29; + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + var_r24 = HuMemDirectMallocNum(HEAP_DATA, 0x4000, var_r27->unk_48); + var_r21 = var_r24; + DCFlushRange(var_r24, 0x4000); + GXBeginDisplayList(var_r21, 0x4000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg1 * 4); + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + GXUnknownu16(var_r30 * 4); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4); + GXUnknownu16(var_r30 * 4 + 1); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 1); + GXUnknownu16(var_r30 * 4 + 2); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 2); + GXUnknownu16(var_r30 * 4 + 3); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 3); + } + var_r31->unk_34 = GXEndDisplayList(); + var_r31->unk_48 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_34, var_r27->unk_48); + memcpy(var_r31->unk_48, var_r24, var_r31->unk_34); + DCFlushRange(var_r31->unk_48, var_r31->unk_34); + HuMemDirectFree(var_r24); + return var_r23; +} + +void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) +{ + Mtx sp128; + Mtx spF8; + Mtx spC8; + Vec sp98[4]; + Vec sp68[4]; + Vec sp38[4]; + ROMtx sp8; + M425DllUnkStruct6 *var_r31; + Vec *var_r30; + M425DllUnkStruct5 *var_r29; + Vec *var_r28; + Vec *var_r27; + Vec2f *var_r26; + s16 var_r25; + s16 var_r23; + s16 var_r22; + s16 var_r20; + s16 var_r19; + UnkHook var_r18; + + var_r31 = var_r24->unk_120; + if ((var_r31->unk_2C != GlobalCounter) || (shadowModelDrawF != 0)) { + GXLoadPosMtxImm(var_r21, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + if (shadowModelDrawF != 0) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetZMode(0, GX_LEQUAL, 0); + } + else { + var_r22 = var_r31->unk_38->bmp->dataFmt & 0xF; + if ((var_r22 == 7) || (var_r22 == 8)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + if ((var_r24->attr & 2) != 0) { + GXSetZMode(1, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(1, GX_LEQUAL, GX_FALSE); + } + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(var_r31->unk_38, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + switch (var_r31->unk_20) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_40, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); + if (HmfInverseMtxF3X3(var_r21, sp128) == 0) { + MTXIdentity(sp128); + } + PSMTXReorder(sp128, &sp8[0]); + if (var_r31->unk_4C) { + var_r18 = var_r31->unk_4C; + var_r18(var_r24, var_r31, 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); + 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; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } + else { + if (!var_r29->unk_2C) { + var_r28 = &sp98[0]; + var_r27 = &sp38[0]; + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + } + else { + VECScale(lbl_1_data_19C, &sp98[0], var_r29->unk_28); + VECScale(&lbl_1_data_19C[1], &sp98[1], var_r29->unk_28); + VECScale(&lbl_1_data_19C[2], &sp98[2], var_r29->unk_28); + VECScale(&lbl_1_data_19C[3], &sp98[3], var_r29->unk_28); + MTXRotRad(spC8, 0x5A, var_r29->unk_2C); + MTXConcat(sp128, spC8, spF8); + MTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); + VECAdd(&sp68[0], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[1], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[2], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[3], &var_r29->unk_30, var_r30++); + } + var_r20 = var_r29->unk_40 & 3; + var_r19 = (var_r29->unk_40 >> 2) & 3; + for (var_r25 = 0; var_r25 < 4; var_r25++, var_r26++) { + var_r26->x = (0.25f * var_r20) + lbl_1_data_1CC[var_r25].x; + var_r26->y = (0.25f * var_r19) + lbl_1_data_1CC[var_r25].y; + } + } + } + DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * 0xC * 4); + DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * 8 * 4); + PPCSync(); + GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + if (shadowModelDrawF == 0) { + if ((var_r31->unk_21 & 2) == 0) { + var_r31->unk_28++; + } + if ((var_r31->unk_30 != 0) && (var_r31->unk_30 <= var_r31->unk_28)) { + if ((var_r31->unk_21 & 1) != 0) { + var_r31->unk_28 = 0; + } + var_r31->unk_28 = var_r31->unk_30; + } + var_r31->unk_2C = GlobalCounter; + } + } +} diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index 3b0f0170..9a80a823 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -10,7 +10,8 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" +#include "string.h" +#include "version.h" typedef struct UnkM426Struct { /* 0x00 */ s32 unk_00; @@ -393,18 +394,18 @@ void fn_1_330(omObjData *object) if (!WipeStatGet()) { lbl_1_bss_54 = 1; lbl_1_bss_58 = 0; - lbl_1_bss_30 = 120; + lbl_1_bss_30 = 2 * REFRESH_RATE; } break; case 1: - if (++lbl_1_bss_58 >= 15.0f) { + if (++lbl_1_bss_58 >= REFRESH_RATE / 4.0f) { lbl_1_bss_54 = 2; lbl_1_bss_58 = 0; lbl_1_bss_38 = 1; } break; case 2: - var_f31 = 0.007246377f * lbl_1_bss_58; + var_f31 = (VERSION_NTSC ? 0.007246377f : 0.008695652f) * lbl_1_bss_58; var_f31 = sind(90.0f * var_f31); var_f31 *= var_f31; for (var_r31 = 0; var_r31 < 7; var_r31++) { @@ -417,7 +418,7 @@ void fn_1_330(omObjData *object) Center.y = sp10[4]; Center.z = sp10[5]; CZoom = sp10[6]; - if (++lbl_1_bss_58 >= 138.0f) { + if (++lbl_1_bss_58 >= (VERSION_NTSC ? 138.0f : 115.0f)) { CRot.x = lbl_1_data_4C[0][0]; CRot.y = lbl_1_data_4C[0][1]; CRot.z = lbl_1_data_4C[0][2]; @@ -430,7 +431,7 @@ void fn_1_330(omObjData *object) } break; case 3: - if (++lbl_1_bss_58 >= 30.0f) { + if (++lbl_1_bss_58 >= (REFRESH_RATE / 2.0f)) { lbl_1_bss_50 = MGSeqCreate(3, 0); lbl_1_bss_54 = 4; lbl_1_bss_58 = 0; @@ -442,7 +443,8 @@ void fn_1_330(omObjData *object) if ((var_r26 & 16) && lbl_1_bss_48 == -1) { lbl_1_bss_48 = HuAudSeqPlay(70); } - } else { + } + else { var_r26 = 0; } if (lbl_1_bss_50 == -1 || !var_r26) { @@ -450,20 +452,21 @@ void fn_1_330(omObjData *object) lbl_1_bss_40 = 1; lbl_1_bss_3C = 1; lbl_1_bss_54 = 5; - lbl_1_bss_58 = 1800; + lbl_1_bss_58 = 30 * REFRESH_RATE; fn_1_7328(1); - lbl_1_bss_4C = MGSeqCreate(1, lbl_1_bss_58 / 60, -1, -1); + lbl_1_bss_4C = MGSeqCreate(1, lbl_1_bss_58 / REFRESH_RATE, -1, -1); } break; case 5: - var_r25 = (lbl_1_bss_58 + 59) / 60; + var_r25 = (lbl_1_bss_58 + REFRESH_RATE - 1) / REFRESH_RATE; if (var_r25 < 0) { var_r25 = 0; } MGSeqParamSet(lbl_1_bss_4C, 1, var_r25); - if (lbl_1_bss_58 == 600) { + if (lbl_1_bss_58 == 10 * REFRESH_RATE) { lbl_1_bss_34 = 3.0f; - } else if (lbl_1_bss_58 == 1200) { + } + else if (lbl_1_bss_58 == 20 * REFRESH_RATE) { lbl_1_bss_34 = 2.5f; } if (--lbl_1_bss_58 < -1 || lbl_1_bss_1C[0] <= 0 || lbl_1_bss_1C[1] <= 0) { @@ -485,9 +488,11 @@ void fn_1_330(omObjData *object) if (fn_1_2EDC()) { if (lbl_1_bss_1C[0] == lbl_1_bss_1C[1]) { var_r28 = 2; - } else if (lbl_1_bss_1C[0] > lbl_1_bss_1C[1]) { + } + else if (lbl_1_bss_1C[0] > lbl_1_bss_1C[1]) { var_r28 = 0; - } else { + } + else { var_r28 = 1; } if (var_r28 < 2) { @@ -505,7 +510,8 @@ void fn_1_330(omObjData *object) } lbl_1_bss_50 = MGSeqCreate(5, 3, sp8[0], sp8[1], -1, -1); HuAudSStreamPlay(1); - } else { + } + else { for (var_r27 = 0; var_r27 < 2; var_r27++) { var_r30 = lbl_1_bss_8C[var_r27]->data; for (var_r31 = 0; var_r31 < 2; var_r31++) { @@ -523,7 +529,7 @@ void fn_1_330(omObjData *object) } break; case 7: - if (++lbl_1_bss_58 > 210.0f) { + if (++lbl_1_bss_58 > 3.5f * REFRESH_RATE) { lbl_1_bss_50 = -1; lbl_1_bss_54 = 8; lbl_1_bss_58 = 0; @@ -546,32 +552,32 @@ s32 lbl_1_data_10C = 66051; s32 lbl_1_data_110[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; s32 lbl_1_data_150[8] = { - 6225920, - 1703936, - 7143424, - 9043968, - 1114112, - 8716288, - 8454144, - 851968, + DATADIR_MARIOMOT, + DATADIR_LUIGIMOT, + DATADIR_PEACHMOT, + DATADIR_YOSHIMOT, + DATADIR_DONKEYMOT, + DATADIR_WARIOMOT, + DATADIR_WALUIGIMOT, + DATADIR_DAISYMOT, }; UnkM426Struct13 lbl_1_data_170[12] = { - { 6225920, 0xFFFFFFFF }, - { 6225922, 0xFFFFFFFF }, - { 6225923, 0xFFFFFFFF }, - { 6225925, 0xFFFFFFFF }, - { 6225926, 0xFFFFFFFF }, - { 6225940, 0xFFFFFFFF }, - { 6225942, 0xFFFFFFFF }, - { 6225945, 0xFFFFFFFF }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 20), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 22), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 25), DATA_NUM_LISTEND }, { 0, 0 }, { 0, 1 }, - { 6225943, 0xFFFFFFFF }, - { 6226034, 0xFFFFFFFF }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_NUM_LISTEND }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 114), DATA_NUM_LISTEND }, }; -s32 lbl_1_data_1D0[2] = { 3735584, 3735592 }; +s32 lbl_1_data_1D0[2] = { DATA_MAKE_NUM(DATADIR_M426, 32), DATA_MAKE_NUM(DATADIR_M426, 40) }; void fn_1_DB8(omObjData *arg0) { @@ -601,7 +607,7 @@ void fn_1_E18(omObjData *object) var_r30 = 1; } if (var_r30) { - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuAudSeqAllFadeOut(100); object->func = fn_1_DB8; } @@ -620,7 +626,8 @@ void fn_1_EB8(void) } if (var_r30 != 2) { memcpy(&lbl_1_bss_18, &lbl_1_data_10C, 4); - } else { + } + else { for (var_r31 = 0; var_r31 < 4; var_r31++) { if (GWPlayerCfg[var_r31].group) { lbl_1_bss_18[var_r30] = var_r31; @@ -671,7 +678,7 @@ void fn_1_117C(omObjData *object) fn_1_16F8(var_r31->unk_04[0]); } -void fn_1_11EC(omObjData *object) // TODO this probably gets inlined +void fn_1_11EC(omObjData *object) { s32 var_r30; UnkM426Struct *var_r29; @@ -721,14 +728,16 @@ void fn_1_125C(omObjData *object) var_r31->unk_40 = lbl_1_data_0[var_r27].x; if (var_r31->unk_40 < 0.0f) { var_r31->unk_44 = 90.0f; - } else { + } + else { var_r31->unk_44 = -90.0f; } var_r31->unk_48 = lbl_1_bss_8C[var_r31->unk_00]; var_r28 = var_r31->unk_48->data; if (object != var_r28->unk_04[0]) { var_r31->unk_4C = var_r28->unk_04[0]; - } else { + } + else { var_r31->unk_4C = var_r28->unk_04[1]; } memset(&var_r31->unk_50, 0, 0x3C); @@ -751,20 +760,22 @@ void fn_1_125C(omObjData *object) if (lbl_1_data_170[var_r29].unk_04 == -1) { if ((var_r29 == 11) && (var_r31->unk_0C == 4)) { object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 114)); - } else { + } + else { object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_170[var_r29].unk_00); } if (var_r29 == 5) { CharModelVoiceEnableSet(var_r31->unk_0C, object->motion[var_r29], 0); } - } else { + } + else { object->motion[var_r29] = Hu3DJointMotion( object->model[0], HuDataSelHeapReadNum(var_r31->unk_0C + lbl_1_data_1D0[lbl_1_data_170[var_r29].unk_04], 268435456, HEAP_DATA)); } } CharModelMotionDataClose(var_r31->unk_0C); CharModelMotionSet(var_r31->unk_0C, object->motion[var_r31->unk_28]); - Hu3DModelAttrSet(var_r25, 0x40000001); + Hu3DModelAttrSet(var_r25, HU3D_MOTATTR_LOOP); HuDataDirClose(lbl_1_data_110[var_r26] & 0xFFFF0000); object->func = NULL; } @@ -801,7 +812,7 @@ void fn_1_16F8(omObjData *object) s32 var_r24; s32 var_r23; s32 var_r22; - s32 var_r21; // this is weird, used as a temporary + s32 var_r21; sp18 = 0; sp14 = 0; @@ -815,9 +826,10 @@ void fn_1_16F8(omObjData *object) } if (var_r31->unk_14) { sp20 = sp1C = 0.0f; - sp10 = var_r21 = 0; + var_r21 = sp10 = 0; fn_1_2F5C(object, &sp20, &sp1C, &sp10); - } else { + } + else { sp20 = HuPadStkX[var_r31->unk_10]; sp1C = HuPadStkY[var_r31->unk_10]; var_r21 = HuPadBtn[var_r31->unk_10]; @@ -833,11 +845,11 @@ void fn_1_16F8(omObjData *object) case 1: if (var_r31->unk_90 == -1) { var_r31->unk_90 = fn_1_48F0(object->trans.z); - } else { + } + else { if (!lbl_1_bss_40) { sp20 = sp1C = 0.0f; - - sp10 = var_r21 = 0; + var_r21 = sp10 = 0; } if (fabs(sp20) > 8.0) { var_f30 = 0.25f * sp20; @@ -850,7 +862,8 @@ void fn_1_16F8(omObjData *object) } if (var_r31->unk_94 != -1) { var_f27 = 16.0f; - } else { + } + else { var_f27 = 0.0f; } var_r31->unk_50[var_r31->unk_8C] = var_f27; @@ -863,23 +876,28 @@ void fn_1_16F8(omObjData *object) var_f28 *= 0.06666667f; if (var_r31->unk_98 != 0.0f) { var_r26 = 3; - } else if (var_f28 <= 0.0f) { + } + else if (var_f28 <= 0.0f) { if (lbl_1_bss_54 == 5) { var_r26 = 8; - } else { + } + else { var_r26 = 0; } - } else if (var_f28 < 10.0f) { + } + else if (var_f28 < 10.0f) { var_r26 = 1; - } else { + } + else { var_r26 = 2; } if (var_r26 != var_r31->unk_28) { var_r31->unk_28 = var_r26; if (var_r26 == 3) { - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0); - } else { - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + } + else { + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } } if (var_r31->unk_94 == -1) { @@ -887,7 +905,8 @@ void fn_1_16F8(omObjData *object) if (var_f31 < 0.0f) { var_r27 = var_r31->unk_90 - 1; var_r25 = var_r31->unk_90 - 2; - } else { + } + else { var_r27 = var_r31->unk_90 + 1; var_r25 = var_r31->unk_90 + 2; } @@ -924,21 +943,23 @@ void fn_1_16F8(omObjData *object) var_r31->unk_3C = 0; object->trans.x = var_f25; object->trans.z = var_f24; - } else if (var_f27 != 0.0f) { + } + else if (var_f27 != 0.0f) { var_f27 = 1.0f / var_f27; - object->trans.x += var_f28 * (var_f30 * var_f27); - object->trans.z += var_f28 * (var_f31 * var_f27); + object->trans.x += var_f28 * (var_f30 * var_f27) * (60.0f / REFRESH_RATE); + object->trans.z += var_f28 * (var_f31 * var_f27) * (60.0f / REFRESH_RATE); } } var_f30 = object->trans.x - var_f22; var_f31 = object->trans.z - var_f21; if (fabs(var_f30) > 8.0 || fabs(var_f31) > 8.0) { var_f26 = atan2d(var_f30, var_f31); - } else { + } + else { if (fabs(sp20) > 8.0 || fabs(sp1C) > 8.0) { var_f26 = atan2d(sp20, -sp1C); - var_f26 = var_f26; - } else { + } + else { var_f26 = object->rot.y; } } @@ -948,9 +969,10 @@ void fn_1_16F8(omObjData *object) var_r31->unk_2C = 0; var_r31->unk_24 = 2; var_r31->unk_28 = 9; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 8.0f, 8.0f, 0); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 8.0f, 8.0f, HU3D_MOTATTR_NONE); } - } else if (sp10 & 256) { + } + else if (sp10 & 256) { var_r31->unk_3C = 20; } } @@ -965,15 +987,17 @@ void fn_1_16F8(omObjData *object) if (fn_1_4AF4(&lbl_1_bss_C, object->rot.y, 1)) { if (!var_r31->unk_00) { HuAudFXPlay(1601); - } else { + } + else { HuAudFXPlay(1602); } } - } else if (var_r31->unk_2C >= 20) { + } + else if (var_r31->unk_2C >= 20) { var_r31->unk_24 = 0; var_r31->unk_2C = 0; var_r31->unk_28 = 8; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } break; case 3: @@ -988,7 +1012,8 @@ void fn_1_16F8(omObjData *object) if (fabs(object->trans.x) > 750.0) { if (object->trans.x > 0.0f) { object->trans.x = 750.0f; - } else { + } + else { object->trans.x = -750.0f; } } @@ -1011,22 +1036,24 @@ void fn_1_16F8(omObjData *object) var_r31->unk_2C = 0; HuAudCharVoicePlay(var_r31->unk_0C, 281); var_r31->unk_28 = 6; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } break; case 6: var_r31->unk_2C++; - if (var_r31->unk_2C < 60.0f) { + if (var_r31->unk_2C < 1.0f * REFRESH_RATE) { if (lbl_1_bss_40 == 0) { - var_r31->unk_2C = 59; + var_r31->unk_2C = REFRESH_RATE - 1; } - } else if (var_r31->unk_2C == 60.0f) { + } + else if (var_r31->unk_2C == 1.0f * REFRESH_RATE) { var_r31->unk_28 = 7; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0); - } else if (var_r31->unk_2C >= 90.0f) { + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + } + else if (var_r31->unk_2C >= (VERSION_NTSC ? 90.0f : 80.0f)) { var_r31->unk_24 = 7; var_r31->unk_28 = 8; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } break; case 7: @@ -1056,12 +1083,13 @@ void fn_1_16F8(omObjData *object) object->rot.y = fn_1_770C(0.0f, object->rot.y, 10.0f); if (var_r31->unk_24 == 8) { var_r26 = 10; - } else { + } + else { var_r26 = 11; } if (var_r26 != var_r31->unk_28) { var_r31->unk_28 = var_r26; - CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0); + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_NONE); } break; } @@ -1095,7 +1123,7 @@ void fn_1_16F8(omObjData *object) var_r31->unk_34 = var_r31->unk_34 ^ 1; } } - if (((var_r21 = var_r31->unk_24) == 0 || var_r31->unk_24 == 1 || var_r31->unk_24 == 2) && var_r31->unk_30) { + if ((var_r31->unk_24 == 0 || var_r31->unk_24 == 1 || var_r31->unk_24 == 2) && var_r31->unk_30) { if (var_r31->unk_30) { var_r31->unk_30 = var_r31->unk_30 - 1; } @@ -1108,6 +1136,7 @@ void fn_1_16F8(omObjData *object) } Hu3DModelTPLvlSet(var_r24, 1.0f); } + (void)var_r21; } Vec lbl_1_data_200[2] = { @@ -1174,22 +1203,10 @@ void fn_1_2AC8(omObjData *object) void fn_1_2ADC(void) { - omObjData *var_r31; s32 var_r30; - s32 var_r29; - UnkM426Struct *var_r27; - omObjData *var_r28; for (var_r30 = 0; var_r30 < 2; var_r30++) { - var_r31 = lbl_1_bss_8C[var_r30]; - var_r27 = var_r31->data; - for (var_r29 = 0; var_r29 < 2; var_r29++) { - var_r28 = var_r27->unk_04[var_r29]; - var_r28->data = 0; - var_r28->func = 0; - } - var_r31->data = NULL; - var_r31->func = NULL; + fn_1_11EC(lbl_1_bss_8C[var_r30]); } } @@ -1207,7 +1224,8 @@ void fn_1_2B74(Vec *arg0) if (arg0->x < 0.0f) { var_r26 = 0; - } else { + } + else { var_r26 = 1; } if (lbl_1_bss_8C[var_r26]) { @@ -1222,30 +1240,35 @@ void fn_1_2B74(Vec *arg0) var_r31->unk_2C = 0; var_r31->unk_24 = 3; var_r31->unk_AC = 32; - var_r31->unk_30 = 90; + var_r31->unk_30 = 1.5f * REFRESH_RATE; var_r31->unk_90 = var_r31->unk_94 = -1; if (!var_r29->unk_00) { var_r31->unk_9C.x = -1.0f; - } else { + } + else { var_r31->unk_9C.x = 1.0f; } if (fabs(var_r31->unk_4C->trans.z - var_r30->trans.z) < 100.0) { var_r31->unk_90 = fn_1_48F0(var_r30->trans.z); if (var_r31->unk_90 == 5) { var_r31->unk_9C.z = -1.0f; - } else if (!var_r31->unk_90) { + } + else if (!var_r31->unk_90) { var_r31->unk_9C.z = 1.0f; - } else if ((var_r31->unk_4C->trans.z - var_r30->trans.z) < 0.0f) { + } + else if ((var_r31->unk_4C->trans.z - var_r30->trans.z) < 0.0f) { var_r31->unk_9C.z = 1.0f; - } else { + } + else { var_r31->unk_9C.z = -1.0f; } - } else { + } + else { var_r31->unk_9C.z = 0.0f; } var_r31->unk_9C.y = 45.5f; var_r31->unk_28 = 5; - CharModelMotionShiftSet(var_r31->unk_0C, var_r30->motion[var_r31->unk_28], 0.0f, 8.0f, 0); + CharModelMotionShiftSet(var_r31->unk_0C, var_r30->motion[var_r31->unk_28], 0.0f, 8.0f, HU3D_MOTATTR_NONE); spC.x = var_r30->trans.x; spC.y = var_r30->trans.y; spC.z = var_r30->trans.z; @@ -1347,7 +1370,7 @@ void fn_1_2F5C(omObjData *object, float *arg1, float *arg2, s32 *arg3) break; case 1: if (var_r31->unk_B0 != -1) { - if (++var_r31->unk_B4 < 120.0f) { + if (++var_r31->unk_B4 < 2.0f * REFRESH_RATE) { if (var_r31->unk_90 == var_r31->unk_B0) { var_r31->unk_B0 = -1; return; @@ -1366,12 +1389,12 @@ void fn_1_2F5C(omObjData *object, float *arg1, float *arg2, s32 *arg3) return; case 2: if (var_r31->unk_B0 != -1) { - if (++var_r31->unk_B4 < 120.0f && var_r31->unk_B0 != var_r28->unk_B0) { + if (++var_r31->unk_B4 < 2.0f * REFRESH_RATE && var_r31->unk_B0 != var_r28->unk_B0) { if (var_r31->unk_90 == var_r31->unk_B0) { *arg3 |= 256; var_r31->unk_B0 = -1; var_r31->unk_B4 = 0; - var_r31->unk_B8 = (50.0f + (frand() % 15)) - (var_r31->unk_18 * 10); + var_r31->unk_B8 = ((VERSION_NTSC ? 50.0f : 45.0f) + (frand() % 15)) - (var_r31->unk_18 * 10); var_r31->unk_BC = 0; return; } @@ -1396,12 +1419,14 @@ void fn_1_2F5C(omObjData *object, float *arg1, float *arg2, s32 *arg3) for (var_r30 = 0; var_r30 < 6; var_r27++, var_r30++) { sp14[var_r27] = var_r30; } - } else { + } + else { if (var_r31->unk_90 < var_r29) { for (var_r30 = 0; var_r30 < 3; var_r27++, var_r30++) { sp14[var_r27] = var_r30; } - } else { + } + else { for (var_r30 = 3; var_r30 < 6; var_r27++, var_r30++) { sp14[var_r27] = var_r30; } @@ -1437,16 +1462,20 @@ void fn_1_2F5C(omObjData *object, float *arg1, float *arg2, s32 *arg3) if (var_r29 == -1) { if (var_r31->unk_90 < 3) { var_r31->unk_B0 = 1; - } else { + } + else { var_r31->unk_B0 = 4; } - } else if (var_r29 > var_r31->unk_90) { + } + else if (var_r29 > var_r31->unk_90) { var_r31->unk_B0 = 1; - } else { + } + else { var_r31->unk_B0 = 4; } var_r31->unk_BC = 1; - } else { + } + else { var_r31->unk_BC = 2; } var_r31->unk_B8 = 0; @@ -1495,13 +1524,13 @@ void fn_1_3714(omObjData *object) object->model[11] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 17)); object->model[12] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 18)); object->model[13] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 19)); - Hu3DModelAttrSet(object->model[4], 1); - Hu3DModelAttrSet(object->model[5], 1); - Hu3DModelAttrSet(object->model[6], 1); - Hu3DModelAttrSet(object->model[8], 1); - Hu3DModelAttrSet(object->model[9], 1); - Hu3DModelAttrSet(object->model[11], 1); - Hu3DModelAttrSet(object->model[13], 1); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[13], HU3D_ATTR_DISPOFF); for (var_r29 = 0; var_r29 < 14; var_r29++) { Hu3DModelLayerSet(object->model[var_r29], 2); } @@ -1525,7 +1554,8 @@ void fn_1_3714(omObjData *object) var_r31->unk_20 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 6)); var_r31->unk_24 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 8)); var_r31->unk_28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 9)); - } else { + } + else { var_r31->unk_10 = Hu3DModelLink(var_r28->unk_10); Hu3DModelShadowMapSet(var_r31->unk_10); var_r31->unk_14 = Hu3DModelLink(var_r28->unk_14); @@ -1555,7 +1585,7 @@ void fn_1_3714(omObjData *object) sp8.x = 0.0f; sp8.y = 500.0f; sp8.z = var_r31->unk_38; - var_r25 = 0.3f * (var_r31->unk_00 * 60); + var_r25 = 0.3f * (var_r31->unk_00 * REFRESH_RATE); var_r31->unk_34 = fn_1_5C6C(var_r31->unk_00, var_r25, &sp8); } lbl_1_bss_24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M426, 1), MEMORY_DEFAULT_NUM)); @@ -1594,7 +1624,8 @@ void fn_1_3EFC(omObjData *object) var_f30 = 50.0f + (-19.999998f * var_f31); Hu3DModelPosSet(var_r30->unk_20, -500.0f, var_f30, var_r30->unk_38); Hu3DModelPosSet(var_r30->unk_28, 500.0f, var_f29, var_r30->unk_38); - } else { + } + else { var_f29 = 50.0f + (-19.999998f * var_f31); var_f30 = 30.000002f + (19.999998f * var_f31); Hu3DModelPosSet(var_r30->unk_1C, -500.0f, var_f30, var_r30->unk_38); @@ -1603,7 +1634,8 @@ void fn_1_3EFC(omObjData *object) if (var_r30->unk_0C >= 2) { if (var_r30->unk_04 == 0) { HuAudFXPlay(1600); - } else { + } + else { HuAudFXPlay(1599); } fn_1_4738(var_r28, var_r30->unk_04); @@ -1616,17 +1648,17 @@ void fn_1_3EFC(omObjData *object) } } } - Hu3DModelAttrSet(object->model[3], 1); - Hu3DModelAttrSet(object->model[4], 1); - Hu3DModelAttrSet(object->model[5], 1); - Hu3DModelAttrSet(object->model[6], 1); - Hu3DModelAttrSet(object->model[7], 1); - Hu3DModelAttrSet(object->model[8], 1); - Hu3DModelAttrSet(object->model[9], 1); - Hu3DModelAttrSet(object->model[10], 1); - Hu3DModelAttrSet(object->model[11], 1); - Hu3DModelAttrSet(object->model[12], 1); - Hu3DModelAttrSet(object->model[13], 1); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[10], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[12], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[13], HU3D_ATTR_DISPOFF); if (lbl_1_bss_30) { if (++object->work[0] >= 20) { @@ -1639,7 +1671,8 @@ void fn_1_3EFC(omObjData *object) object->work[2] = 0; } lbl_1_bss_30--; - } else { + } + else { if (object->work[0]) { if (++object->work[0] >= 20) { object->work[0] = 0; @@ -1659,10 +1692,10 @@ void fn_1_3EFC(omObjData *object) if (++object->work[3] >= 20) { object->work[3] = 0; } - Hu3DModelAttrReset(object->model[(object->work[0] / 5) + 3], 1); - Hu3DModelAttrReset(object->model[(object->work[1] / 5) + 7], 1); - Hu3DModelAttrReset(object->model[(object->work[2] / 10) + 10], 1); - Hu3DModelAttrReset(object->model[(object->work[3] / 10) + 12], 1); + Hu3DModelAttrReset(object->model[(object->work[0] / 5) + 3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[(object->work[1] / 5) + 7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[(object->work[2] / 10) + 10], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[(object->work[3] / 10) + 12], HU3D_ATTR_DISPOFF); var_r29 = &Hu3DGlobalLight[lbl_1_bss_2C]; var_r27 = lbl_1_data_48.r + (s32)(255.0f * lbl_1_bss_28); @@ -1697,8 +1730,7 @@ void fn_1_3EFC(omObjData *object) void fn_1_45FC(omObjData *object) { fn_1_8E10(lbl_1_bss_24); - object->data = NULL; - object->func = NULL; + fn_1_2AC8(object); } void fn_1_4644(void) @@ -1744,20 +1776,20 @@ void fn_1_4738(s32 arg0, s32 arg1) var_r31->unk_08 = arg1; switch (arg1) { case 0: - Hu3DModelAttrReset(var_r31->unk_14, 1); - Hu3DModelAttrReset(var_r31->unk_1C, 1); - Hu3DModelAttrReset(var_r31->unk_24, 1); - Hu3DModelAttrSet(var_r31->unk_18, 1); - Hu3DModelAttrSet(var_r31->unk_20, 1); - Hu3DModelAttrSet(var_r31->unk_28, 1); + Hu3DModelAttrReset(var_r31->unk_14, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_1C, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_24, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_18, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_20, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_28, HU3D_ATTR_DISPOFF); break; case 1: - Hu3DModelAttrSet(var_r31->unk_14, 1); - Hu3DModelAttrSet(var_r31->unk_1C, 1); - Hu3DModelAttrSet(var_r31->unk_24, 1); - Hu3DModelAttrReset(var_r31->unk_18, 1); - Hu3DModelAttrReset(var_r31->unk_20, 1); - Hu3DModelAttrReset(var_r31->unk_28, 1); + Hu3DModelAttrSet(var_r31->unk_14, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_1C, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_24, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_18, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_20, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_28, HU3D_ATTR_DISPOFF); break; default: break; @@ -1835,7 +1867,8 @@ s32 fn_1_4AF4(Vec *arg0, float arg8, s32 arg1) var_r30 = lbl_1_bss_78->data; if (arg0->x < 0.0f) { var_f28 = -500.0f; - } else { + } + else { var_f28 = 500.0f; } for (var_r29 = 0; var_r29 < 6; var_r29++, var_r30++) { @@ -1856,7 +1889,8 @@ s32 fn_1_4AF4(Vec *arg0, float arg8, s32 arg1) if (!var_r30->unk_08) { return 0; } - } else if (var_r30->unk_08 == 1) { + } + else if (var_r30->unk_08 == 1) { return 0; } if (arg1) { @@ -1881,15 +1915,17 @@ void fn_1_4F14(omObjData *object) for (var_r29 = 0; var_r29 < 6; var_r29++, var_r31++) { if (var_r29 == 0) { var_r31->unk_00 = Hu3DModelCreateFile(3735579); - } else { + } + else { var_r31->unk_00 = Hu3DModelLink(var_r30->unk_00); } Hu3DModelShadowSet(var_r31->unk_00); Hu3DModelLayerSet(var_r31->unk_00, 2); if (var_r29 == 0) { - var_r31->unk_08 = Hu3DJointMotion(var_r31->unk_00, HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M426, 28), MEMORY_DEFAULT_NUM, HEAP_DATA)); - var_r31->unk_0C = Hu3DJointMotion(var_r31->unk_00, HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M426, 29), MEMORY_DEFAULT_NUM, HEAP_DATA)); - } else { + var_r31->unk_08 = Hu3DJointMotionFile(var_r31->unk_00, DATA_MAKE_NUM(DATADIR_M426, 28)); + var_r31->unk_0C = Hu3DJointMotionFile(var_r31->unk_00, DATA_MAKE_NUM(DATADIR_M426, 29)); + } + else { var_r31->unk_08 = var_r30->unk_08; var_r31->unk_0C = var_r30->unk_0C; } @@ -1904,7 +1940,7 @@ void fn_1_4F14(omObjData *object) var_r31->unk_3C = var_r31->unk_40 = var_r31->unk_44 = 0.0f; var_r31->unk_48 = 0.0f; var_r31->unk_4C = 0.0f; - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); Hu3DModelScaleSet(var_r31->unk_00, 0.8f, 0.8f, 0.8f); } object->func = fn_1_5134; @@ -1928,10 +1964,10 @@ void fn_1_5134(omObjData *object) if (lbl_1_bss_38) { if (--var_r31->unk_2C <= 0) { if (!var_r31->unk_38) { - Hu3DModelAttrReset(var_r31->unk_00, 1); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); } Hu3DMotionSet(var_r31->unk_00, var_r31->unk_08); - Hu3DModelAttrSet(var_r31->unk_00, 1073741825); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_LOOP); HuAudFXPlay(1607); var_r31->unk_2C = 0; var_r31->unk_28 = 1; @@ -1939,7 +1975,7 @@ void fn_1_5134(omObjData *object) } break; case 1: - if ((var_r31->unk_40 -= 50.0f) <= 50.0f) { + if ((var_r31->unk_40 -= (VERSION_NTSC ? 50.0f : 60.000004f)) <= 50.0f) { if (lbl_1_bss_54 <= 4) { fn_1_3654(0); fn_1_3654(1); @@ -1954,23 +1990,26 @@ void fn_1_5134(omObjData *object) if (lbl_1_bss_3C) { var_r31->unk_30 = 0; var_r31->unk_28 = 3; - Hu3DMotionShiftSet(var_r31->unk_00, var_r31->unk_0C, 0.0f, 8.0f, 0x40000001); - } else { + Hu3DMotionShiftSet(var_r31->unk_00, var_r31->unk_0C, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + else { var_r31->unk_48 = fn_1_770C(0.0f, var_r31->unk_48, 10.0f); } break; case 3: if (!var_r26) { var_f31 = 90.0f; - } else { + } + else { var_f31 = 270.0f; } if (fabs(fn_1_75F4(var_f31, var_r31->unk_48)) < 5.0) { var_r31->unk_48 = var_f31; - if ((var_r31->unk_34 += 0.1f) > lbl_1_bss_34) { - var_r31->unk_34 = lbl_1_bss_34; + if ((var_r31->unk_34 += 0.1f) > lbl_1_bss_34 * (60.0f / REFRESH_RATE)) { + var_r31->unk_34 = lbl_1_bss_34 * (60.0f / REFRESH_RATE); } - } else { + } + else { var_r31->unk_48 = fn_1_770C(var_f31, var_r31->unk_48, 10.0f); if ((var_r31->unk_34 -= 0.1f) < 0.0f) { var_r31->unk_34 = 0.0f; @@ -1981,7 +2020,7 @@ void fn_1_5134(omObjData *object) } Hu3DMotionSpeedSet(var_r31->unk_00, 1.4f * (0.33333334f * var_r31->unk_34)); if (lbl_1_bss_3C == 0) { - Hu3DMotionShiftSet(var_r31->unk_00, var_r31->unk_08, 0.0f, 8.0f, 1073741825); + Hu3DMotionShiftSet(var_r31->unk_00, var_r31->unk_08, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); var_r31->unk_2C = 0; var_r31->unk_30 = 0; var_r31->unk_28 = 2; @@ -1990,7 +2029,8 @@ void fn_1_5134(omObjData *object) var_r31->unk_34 = 0.0f; if (var_r31->unk_3C > 0.0f) { var_r31->unk_3C = 399.0f; - } else { + } + else { var_r31->unk_3C = -399.0f; } var_r31->unk_18 = 0; @@ -2002,7 +2042,8 @@ void fn_1_5134(omObjData *object) lbl_1_bss_1C[0]--; fn_1_3654(0); HuAudFXPlay(1603); - } else { + } + else { lbl_1_bss_1C[1]--; fn_1_3654(1); HuAudFXPlay(1604); @@ -2013,7 +2054,7 @@ void fn_1_5134(omObjData *object) if (lbl_1_bss_1C[1] < 0) { lbl_1_bss_1C[1] = 0; } - lbl_1_bss_30 = 60; + lbl_1_bss_30 = REFRESH_RATE; lbl_1_bss_28 = 1.0f; var_r31->unk_30 = 0; var_r31->unk_28 = 4; @@ -2028,20 +2069,23 @@ void fn_1_5134(omObjData *object) fn_1_2B74(&sp8); if (var_r31->unk_3C < 0.0f) { fn_1_46A4(var_r31->unk_24, 0); - } else { + } + else { fn_1_46A4(var_r31->unk_24, 1); } var_r31->unk_28 = 5; if (var_r26 == 0) { var_r31->unk_4C += 30.000002f; - } else { + } + else { var_r31->unk_4C -= 30.000002f; } if (fabs(var_r31->unk_4C) > 150.0) { if (!var_r26) { var_r31->unk_4C = 150.0f; - } else { + } + else { var_r31->unk_4C = -150.0f; } } @@ -2067,8 +2111,9 @@ void fn_1_5134(omObjData *object) if (!var_r31->unk_38) { Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C, var_r31->unk_40, var_r31->unk_44); Hu3DModelRotSet(var_r31->unk_00, 0.0f, var_r31->unk_48, 0.0f); - } else { - Hu3DModelAttrSet(var_r31->unk_00, 1); + } + else { + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); } } } @@ -2076,20 +2121,17 @@ void fn_1_5134(omObjData *object) void fn_1_5B34(omObjData *object) { - object->data = NULL; - object->func = NULL; + fn_1_2AC8(object); } void fn_1_5B48(void) { - omObjData *var_r31; - - var_r31 = lbl_1_bss_74; - fn_1_5B34(var_r31); + fn_1_5B34(lbl_1_bss_74); lbl_1_bss_74 = NULL; } -void fn_1_5B88(s32 arg0) // probably gets inlined +// unused +void fn_1_5B88(s32 arg0) { UnkM426Struct4 *var_r31; s32 var_r28; @@ -2101,7 +2143,7 @@ void fn_1_5B88(s32 arg0) // probably gets inlined var_r28 = var_r31->unk_38; var_r31->unk_38 = arg0; if (var_r28 != arg0 && !arg0) { - Hu3DModelAttrReset(var_r31->unk_00, 1); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C, var_r31->unk_40, var_r31->unk_44); Hu3DModelRotSet(var_r31->unk_00, 0.0f, var_r31->unk_48, 0.0f); } @@ -2155,11 +2197,14 @@ s32 fn_1_5D3C(void) } if (var_r31->unk_3C < 0.0f) { var_r30++; - } else if (var_r31->unk_3C > 0.0f) { + } + else if (var_r31->unk_3C > 0.0f) { var_r29++; - } else if (frand() & 1) { + } + else if (frand() & 1) { var_r30++; - } else { + } + else { var_r29++; } } @@ -2194,7 +2239,8 @@ void fn_1_5EBC(omObjData *object) if (var_r30 == 0) { var_r31->unk_08 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M426, 0), MEMORY_DEFAULT_NUM)); var_r31->unk_04 = fn_1_795C(var_r31->unk_08, 512); - } else { + } + else { var_r31->unk_08 = var_r29->unk_08; var_r31->unk_04 = fn_1_7DC8(var_r29->unk_04); } @@ -2202,7 +2248,7 @@ void fn_1_5EBC(omObjData *object) var_r26 = &Hu3DData[var_r31->unk_04]; var_r27 = var_r26->unk_120; var_r27->unk_20 = 0; - Hu3DModelAttrSet(var_r31->unk_04, 1); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); var_r31->unk_00 = var_r30; var_r31->unk_0C = 0; var_r31->unk_10 = 0; @@ -2229,9 +2275,10 @@ void fn_1_6008(omObjData *object) continue; } if (var_r30->unk_10 <= 0) { - Hu3DModelAttrSet(var_r30->unk_04, 1); - } else { - Hu3DModelAttrReset(var_r30->unk_04, 1); + Hu3DModelAttrSet(var_r30->unk_04, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(var_r30->unk_04, HU3D_ATTR_DISPOFF); var_r26 = &Hu3DData[var_r30->unk_04]; var_r29 = var_r26->unk_120; var_r31 = var_r29->unk_3C; @@ -2358,7 +2405,8 @@ s32 fn_1_63B8(s32 arg0, Vec *arg1, Vec *arg2, float arg8, GXColor arg3) var_r31->unk_30.x = arg1->x - var_r30->unk_14.x; var_r31->unk_30.y = arg1->y - var_r30->unk_14.y; var_r31->unk_30.z = arg1->z - var_r30->unk_14.z; - } else { + } + else { var_r31->unk_30.x = var_r30->unk_14.x; var_r31->unk_30.y = var_r30->unk_14.y; var_r31->unk_30.z = var_r30->unk_14.z; @@ -2368,7 +2416,8 @@ s32 fn_1_63B8(s32 arg0, Vec *arg1, Vec *arg2, float arg8, GXColor arg3) var_r31->unk_04.x = arg2->x; var_r31->unk_04.y = arg2->y; var_r31->unk_04.z = arg2->z; - } else { + } + else { var_r31->unk_04.x = var_r31->unk_04.y = var_r31->unk_04.z = 0.0f; } @@ -2405,7 +2454,7 @@ void fn_1_65E4(omObjData *object) var_r28 = &Hu3DData[var_r31->unk_00]; sp8 = var_r28->hsfData; Hu3DModelLayerSet(var_r31->unk_00, 5); - Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); var_r31->unk_04 = 0; var_r31->unk_08 = 0; var_r31->unk_0C = var_r31->unk_10 = var_r31->unk_14 = 0.0f; @@ -2427,8 +2476,8 @@ void fn_1_6704(omObjData *object) if (var_r31->unk_04) { Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C, var_r31->unk_10, var_r31->unk_14); Hu3DModelRotSet(var_r31->unk_00, CRot.x, CRot.y, CRot.z); - if (++var_r31->unk_08 >= 120.0f) { - Hu3DModelAttrSet(var_r31->unk_00, 1); + if (++var_r31->unk_08 >= 2.0f * REFRESH_RATE) { + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); var_r31->unk_04 = 0; var_r31->unk_08 = 0; } @@ -2475,10 +2524,10 @@ s32 fn_1_6888(Vec *arg0) var_r31->unk_14 = arg0->z; Hu3DMotionTimeSet(var_r31->unk_00, 0.0f); Hu3DMotionSpeedSet(var_r31->unk_00, 0.5f); - Hu3DModelAttrSet(var_r31->unk_00, 0); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_NONE); Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C, var_r31->unk_10, var_r31->unk_14); Hu3DModelScaleSet(var_r31->unk_00, 1.0f, 1.0f, 1.0f); - Hu3DModelAttrReset(var_r31->unk_00, 1); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); return var_r30; } @@ -2498,7 +2547,8 @@ void fn_1_6A34(omObjData *object) for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { if (var_r29 == 0) { var_r31->unk_00 = 100; - } else { + } + else { var_r31->unk_00 = 490; } var_r31->unk_04 = 65; @@ -2537,7 +2587,7 @@ void fn_1_6A34(omObjData *object) } espDispOn(var_r31->unk_14[var_r30]); espDrawNoSet(var_r31->unk_14[var_r30], 0); - espAttrSet(var_r31->unk_14[var_r30], 1); + espAttrSet(var_r31->unk_14[var_r30], HUSPR_ATTR_NOANIM); espPosSet(var_r31->unk_14[var_r30], var_r31->unk_00 + var_r31->unk_2C[var_r30][0], var_r31->unk_04 + var_r31->unk_2C[var_r30][1]); } } @@ -2570,10 +2620,11 @@ void fn_1_6DC0(omObjData *object) if (var_r31->unk_0C) { var_f31 = 1.0 + (0.8f * sind((180.0f * (var_r31->unk_0C / 20.0f)))); var_r31->unk_0C--; - } else { + } + else { var_f31 = 1.0f; } - var_r28 = lbl_1_bss_1C[var_r29]; + var_r28 = lbl_1_bss_1C[var_r29]; if ((sp8[0] = var_r28 / 10) > 9) { sp8[0] = 9; } @@ -2635,7 +2686,8 @@ void fn_1_7328(s32 arg0) for (var_r30 = 0; var_r30 < 6; var_r30++) { if (arg0) { espDispOn(var_r31->unk_14[var_r30]); - } else { + } + else { espDispOff(var_r31->unk_14[var_r30]); } } @@ -2686,18 +2738,21 @@ float fn_1_75F4(float arg8, float arg9) if (arg8 >= 360.0f) { arg8 -= 360.0f; - } else if (arg8 < 0.0f) { + } + else if (arg8 < 0.0f) { arg8 += 360.0f; } if (arg9 >= 360.0f) { arg9 -= 360.0f; - } else if (arg9 < 0.0f) { + } + else if (arg9 < 0.0f) { arg9 += 360.0f; } var_f31 = arg8 - arg9; if (var_f31 <= -180.0f) { var_f31 += 360.0f; - } else if (var_f31 >= 180.0f) { + } + else if (var_f31 >= 180.0f) { var_f31 -= 360.0f; } return var_f31; @@ -2710,12 +2765,14 @@ float fn_1_770C(float arg8, float arg9, float argA) if (arg8 >= 360.0) { arg8 -= 360.0; - } else if (arg8 < 0.0) { + } + else if (arg8 < 0.0) { arg8 += 360.0; } if (arg9 >= 360.0) { arg9 -= 360.0; - } else if (arg9 < 0.0) { + } + else if (arg9 < 0.0) { arg9 += 360.0; } var_f30 = 360.0 + (arg8 - arg9); @@ -2725,19 +2782,23 @@ float fn_1_770C(float arg8, float arg9, float argA) if (var_f30 < 180.0) { if (var_f30 <= argA) { var_f31 = var_f30; - } else { + } + else { var_f31 = argA; } - } else if ((360.0 - var_f30) <= argA) { + } + else if ((360.0 - var_f30) <= argA) { var_f31 = -(360.0 - var_f30); - } else { + } + else { var_f31 = -argA; } var_f31 += arg9; if (var_f31 >= 360.0) { var_f31 -= 360.0; var_f31 = var_f31; - } else if (var_f31 < 0.0) { + } + else if (var_f31 < 0.0) { var_f31 += 360.0; var_f31 = var_f31; } @@ -2936,16 +2997,19 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) if (shadowModelDrawF != 0) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); - } else { + } + else { var_r21 = var_r31->unk_38->bmp->dataFmt & 15; if (var_r21 == 7 || var_r21 == 8) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } if (arg0->attr & 2) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } else { + } + else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); } } @@ -2979,7 +3043,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); if (!HmfInverseMtxF3X3(arg1, sp128)) { - PSMTXIdentity(sp128); + MTXIdentity(sp128); } PSMTXReorder(sp128, sp8); if (var_r31->unk_4C) { @@ -3000,30 +3064,32 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) var_r30++; var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30++; - } else { + } + else { if (!var_r29->unk_2C) { var_r28 = sp98; var_r27 = sp38; - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - PSVECScale(var_r27++, var_r28, var_r29->unk_28); - PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); - } else { - PSVECScale(&lbl_1_data_22C[0], &sp98[0], var_r29->unk_28); - PSVECScale(&lbl_1_data_22C[1], &sp98[1], var_r29->unk_28); - PSVECScale(&lbl_1_data_22C[2], &sp98[2], var_r29->unk_28); - PSVECScale(&lbl_1_data_22C[3], &sp98[3], var_r29->unk_28); - PSMTXRotRad(spC8, 90, var_r29->unk_2C); - PSMTXConcat(sp128, spC8, &spF8[0]); - PSMTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); - PSVECAdd(&sp68[0], &var_r29->unk_30, var_r30++); - PSVECAdd(&sp68[1], &var_r29->unk_30, var_r30++); - PSVECAdd(&sp68[2], &var_r29->unk_30, var_r30++); - PSVECAdd(&sp68[3], &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + VECScale(var_r27++, var_r28, var_r29->unk_28); + VECAdd(var_r28++, &var_r29->unk_30, var_r30++); + } + else { + VECScale(&lbl_1_data_22C[0], &sp98[0], var_r29->unk_28); + VECScale(&lbl_1_data_22C[1], &sp98[1], var_r29->unk_28); + VECScale(&lbl_1_data_22C[2], &sp98[2], var_r29->unk_28); + VECScale(&lbl_1_data_22C[3], &sp98[3], var_r29->unk_28); + MTXRotRad(spC8, 90, var_r29->unk_2C); + MTXConcat(sp128, spC8, &spF8[0]); + MTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); + VECAdd(&sp68[0], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[1], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[2], &var_r29->unk_30, var_r30++); + VECAdd(&sp68[3], &var_r29->unk_30, var_r30++); } var_r20 = var_r29->unk_40 & 3; var_r19 = (var_r29->unk_40 >> 2) & 3; @@ -3080,11 +3146,13 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1) if (shadowModelDrawF) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); - } else { + } + else { var_r28 = var_r29->bmp->dataFmt & 15; if (var_r28 == 7 || var_r28 == 8) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); @@ -3100,7 +3168,7 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1) GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetArray(GX_VA_POS, lbl_1_data_27C, 12); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); @@ -3154,7 +3222,7 @@ void fn_1_8E48(ModelData *arg0, Mtx arg1) GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - PSMTXIdentity(sp50); + MTXIdentity(sp50); GXLoadPosMtxImm(sp50, 0); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_TRUE); GXSetNumChans(1); diff --git a/src/REL/m427Dll/main.c b/src/REL/m427Dll/main.c new file mode 100644 index 00000000..7031739f --- /dev/null +++ b/src/REL/m427Dll/main.c @@ -0,0 +1,957 @@ +#include "REL/m427Dll.h" + +#include "ext_math.h" +#include "game/audio.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfformat.h" +#include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/wipe.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +typedef struct M427DllStruct2 { + s32 unk0[3]; + s32 unkC; + s32 unk10; + s32 unk14[7]; + s32 unk30[7]; + HsfVector2f unk4C[7]; + f32 unk84; + f32 unk88; + s32 unk8C; + f32 unk90; + f32 unk94; + f32 unk98; + s32 unk9C; + s32 unkA0; +} M427DllStruct2; // sizeof 0xA4 + +typedef struct M427DllStruct3 { + Vec rot; + Vec cen; + f32 zoom; +} M427DllStruct3; + +Process* lbl_1_bss_8C; +omObjData* lbl_1_bss_88; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; +s32 lbl_1_bss_7C; +s32 lbl_1_bss_78; +s32 lbl_1_bss_74; +f32 lbl_1_bss_6C[2]; +s32 lbl_1_bss_68; +s32 lbl_1_bss_64; +s32 lbl_1_bss_60; +s32 lbl_1_bss_5C; +s32 lbl_1_bss_58; +s32 lbl_1_bss_54; +s32 lbl_1_bss_50; +s32 lbl_1_bss_4C; +omObjData* lbl_1_bss_48; +s32 lbl_1_bss_44; +M427DllStruct2* lbl_1_bss_40; +M427DllStruct lbl_1_bss_0[8]; + +void fn_1_29C(omObjData*); +void fn_1_300(omObjData*); +void fn_1_1664(omObjData*); +void fn_1_16C4(omObjData*); +void fn_1_1864(s32); +void fn_1_1954(void); +void fn_1_1F34(void); +void fn_1_2188(void); +void fn_1_21E8(s32, s32); +void fn_1_232C(s32); +void fn_1_2518(s32); +void fn_1_2704(void); +void fn_1_272C(void); +void fn_1_2790(void); +void fn_1_2B20(omObjData* object); +void fn_1_2B28(void); +void fn_1_2CE8(f32); +void fn_1_2EE0(void); +void fn_1_2F6C(f32); +void fn_1_3164(void); + +M427DllStruct3 lbl_1_data_0[4] = { + { + { -25.0f, 0.0f, 0.0f }, + { 0.0f, 275.0f, 0.0f }, + 1975.0f + }, + { + { 4.0f, 167.0f, 0.0f }, + { 57.0f, 475.0f, 198.0f }, + 3375.0f + }, + { + { -0.0f, -190.0f, 0.0f }, + { -90.0f, 50.0f, 800.0f }, + 1700.0f + }, + { + { 2.0f, 170.0f, 0.0f }, + { -400.0f, 175.0f, 127.0f }, + 2425.0f + } +}; + +void ObjectSetup(void) { + Process* var_r30; + s32 var_r31; + + OSReport("******* M426ObjectSetup *********\n"); + var_r30 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_8C = var_r30; + omGameSysInit(var_r30); + fn_1_2790(); + Hu3DLightAllKill(); + Hu3DLighInit(); + HuAudSndGrpSet(0x34); + lbl_1_bss_88 = omAddObjEx(var_r30, 0xFF, 2, 0, -1, fn_1_29C); + lbl_1_bss_84 = 0; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + lbl_1_bss_78 = lbl_1_bss_74 = GWMGRecordGet(2); + if (lbl_1_bss_78 <= 0) { + lbl_1_bss_78 = lbl_1_bss_74 = 0xE10; + } + + lbl_1_bss_68 = lbl_1_bss_64 = 0; + + lbl_1_bss_60 = lbl_1_bss_5C = -1; + lbl_1_bss_58 = -1; + lbl_1_bss_54 = lbl_1_bss_50 = -1; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_6C[var_r31] = 0.0f; + } + + for (var_r31 = 0; var_r31 < 8; var_r31++) { + lbl_1_bss_0[var_r31].unk0 = -1; + lbl_1_bss_0[var_r31].unk4 = 0; + } +} + +void fn_1_29C(omObjData* arg0) { + fn_1_32F4(lbl_1_bss_8C); + fn_1_E98C(lbl_1_bss_8C); + fn_1_1954(); + fn_1_21E8(0, 1); + arg0->func = fn_1_300; +} + +void fn_1_300(omObjData* arg0) { + s32 sp10[2]; + s32 sp8[2]; + f32 var_f31; + f32 var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + + switch (lbl_1_bss_84) { + case 0: + lbl_1_bss_80++; + if (lbl_1_bss_80 == 3) { + WipeCreate(1, 0, 0x3C); + lbl_1_bss_4C = 0; + fn_1_21E8(1, 1); + fn_1_2B28(); + } else if ((lbl_1_bss_80 > 3) && (WipeStatGet() == 0)) { + lbl_1_bss_54 = HuAudFXPlay(0x657); + lbl_1_bss_50 = HuAudFXPlay(0x651); + lbl_1_bss_84 = 1; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 1: + lbl_1_bss_80++; + var_f31 = lbl_1_bss_80 / 300.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_11298(sind(90.0f * var_f31)); + if (++lbl_1_bss_7C >= 60.0f) { + lbl_1_bss_84 = 2; + lbl_1_bss_7C = 0; + } + break; + case 2: + lbl_1_bss_80++; + var_f31 = lbl_1_bss_80 / 300.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_11298(sind(90.0f * var_f31)); + var_f30 = sind(90.0f * (lbl_1_bss_7C / 240.0f)); + fn_1_2CE8(var_f30 * var_f30); + if (++lbl_1_bss_7C >= 240.0f) { + lbl_1_bss_60 = MGSeqCreate(3, 0); + fn_1_2EE0(); + lbl_1_bss_84 = 3; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 3: + if (lbl_1_bss_60 != -1) { + var_r28 = MGSeqStatGet(lbl_1_bss_60); + if (((var_r28 & 0x10) != 0) && (lbl_1_bss_58 == -1)) { + lbl_1_bss_58 = HuAudSeqPlay(0x49); + } + } else { + var_r28 = 0; + } + if ((lbl_1_bss_60 == -1) || (var_r28 == 0)) { + lbl_1_bss_84 = 4; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 4: + lbl_1_bss_80++; + var_r30 = lbl_1_bss_80; + if (var_r30 > 0x4650) { + var_r30 = 0x4650; + } + + fn_1_2518(var_r30); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if (lbl_1_bss_0[var_r31].unk0 != -1) { + if (--lbl_1_bss_0[var_r31].unk4 <= 0) { + lbl_1_bss_0[var_r31].unk0 = -1; + lbl_1_bss_0[var_r31].unk4 = 0; + } + } + } + if (lbl_1_bss_80 == 0x3F48) { + lbl_1_bss_5C = MGSeqCreate(1, 0x708, -1, -1); + } + if (lbl_1_bss_5C != -1) { + var_r26 = (0x4650 - lbl_1_bss_80); + var_r30 = (var_r26 + 0x3A) / 60; + if (var_r30 < 0) { + var_r30 = 0; + } + MGSeqParamSet(lbl_1_bss_5C, 1, var_r30); + } + if (lbl_1_bss_68 != 0) { + if (lbl_1_bss_68 != 1 && lbl_1_bss_68 != 2) { + if (((s32)frand() & 1) != 0) { + lbl_1_bss_68 = 1; + } else { + lbl_1_bss_68 = 2; + } + } + if (lbl_1_bss_5C != -1) { + MGSeqParamSet(lbl_1_bss_5C, 2, -1); + } + lbl_1_bss_5C = -1; + lbl_1_bss_60 = MGSeqCreate(3, 1); + if (lbl_1_bss_58 != -1) { + HuAudSeqFadeOut(lbl_1_bss_58, 0x64); + } + + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if ((lbl_1_bss_0[var_r31].unk0 != -1) && (lbl_1_bss_0[var_r31].unk4 > 0)) { + HuAudFXFadeOut(lbl_1_bss_0[var_r31].unk0, 0x64); + } + } + HuAudFXFadeOut(lbl_1_bss_54, 0x64); + HuAudFXFadeOut(lbl_1_bss_50, 0x64); + if ((lbl_1_bss_68 != 0) && (lbl_1_bss_80 < lbl_1_bss_78)) { + if (lbl_1_bss_68 == 1) { + var_r29 = 0; + } else { + var_r29 = 1; + } + if (fn_1_113F0(var_r29) == 0) { + lbl_1_bss_74 = lbl_1_bss_80; + } + } + if ((lbl_1_bss_68 != 0) && (lbl_1_bss_80 <= 0xA8C)) { + if (lbl_1_bss_68 == 1) { + var_r29 = 0; + } else { + var_r29 = 1; + } + if (fn_1_113F0(var_r29) == 0) { + GWGameStat.present[0x34] = 1; + } + } + lbl_1_bss_84 = 5; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } else { + if (lbl_1_bss_80 >= 0x4651) { + MGSeqParamSet(lbl_1_bss_5C, 1, 0); + MGSeqParamSet(lbl_1_bss_5C, 2, -1); + lbl_1_bss_5C = -1; + lbl_1_bss_60 = MGSeqCreate(3, 1); + if (lbl_1_bss_58 != -1) { + HuAudSeqFadeOut(lbl_1_bss_58, 0x64); + } + + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if ((lbl_1_bss_0[var_r31].unk0 != -1) && (lbl_1_bss_0[var_r31].unk4 > 0)) { + HuAudFXFadeOut(lbl_1_bss_0[var_r31].unk0, 0x64); + } + } + HuAudFXFadeOut(lbl_1_bss_54, 0x64); + HuAudFXFadeOut(lbl_1_bss_50, 0x64); + lbl_1_bss_64 = 1; + lbl_1_bss_84 = 5; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + } + break; + case 5: + if (lbl_1_bss_68 != 0) { + WipeCreate(2, 0, 0x3C); + WipeColorSet(0xFF, 0xFF, 0xFF); + lbl_1_bss_4C = 1; + lbl_1_bss_84 = 6; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } else if ((lbl_1_bss_60 == -1) || (MGSeqStatGet(lbl_1_bss_60) == 0)) { + lbl_1_bss_84 = 0xA; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 6: + if ((WipeStatGet() == 0) && ((lbl_1_bss_60 == -1) || (MGSeqStatGet(lbl_1_bss_60) == 0))) { + lbl_1_bss_60 = -1; + fn_1_21E8(0, 0); + fn_1_3164(); + HuAudFXAllStop(); + HuAudFXPlay(0x65E); + lbl_1_bss_84 = 7; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 7: + if (++lbl_1_bss_80 > 5) { + WipeCreate(1, 0, 0x1E); + WipeColorSet(0xFF, 0xFF, 0xFF); + lbl_1_bss_4C = 0; + HuAudAUXVolSet(-1, -1); + fn_1_272C(); + lbl_1_bss_84 = 8; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 8: + if (WipeStatGet() == 0) { + lbl_1_bss_84 = 0xA; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 10: + if (lbl_1_bss_68 != 0) { + var_f31 = sind((90.0f * (lbl_1_bss_80 / 180.0f))); + if (var_f31 >= 1.0f) { + var_f31 = 1.0f; + } + fn_1_11298(var_f31); + if (lbl_1_bss_80 > 30.0f) { + var_f30 = lbl_1_bss_7C / 150.0f; + lbl_1_bss_7C++; + if (var_f30 >= 1.0f) { + var_f30 = 1.0f; + } + var_f30 = sind(90.0f * var_f30); + fn_1_2F6C(var_f30); + } + if (++lbl_1_bss_80 > 180.0f) { + if (lbl_1_bss_68 == 1) { + fn_1_110E8(0, sp10); + fn_1_111C0(0, sp8); + } else { + fn_1_110E8(1, sp10); + fn_1_111C0(1, sp8); + } + GWPlayerCoinWinAdd(sp8[0], 10); + GWPlayerCoinWinAdd(sp8[1], 10); + if (lbl_1_bss_74 < lbl_1_bss_78) { + lbl_1_bss_78 = lbl_1_bss_74; + fn_1_232C(lbl_1_bss_78); + GWMGRecordSet(2, lbl_1_bss_78); + fn_1_2704(); + lbl_1_bss_60 = MGSeqCreate(0xE, lbl_1_bss_78); + lbl_1_bss_7C = 0xB4; + lbl_1_bss_84 = 0xB; + lbl_1_bss_80 = 0; + } else { + lbl_1_bss_60 = MGSeqCreate(5, 3, sp10[0], sp10[1], -1, -1); + HuAudSStreamPlay(1); + lbl_1_bss_7C = 0xB4; + lbl_1_bss_84 = 0xC; + lbl_1_bss_80 = 0; + } + } + } else { + lbl_1_bss_60 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + lbl_1_bss_7C = 0xB4; + lbl_1_bss_84 = 0xC; + lbl_1_bss_80 = 0; + } + break; + case 11: + if ((lbl_1_bss_60 == -1) || (MGSeqStatGet(lbl_1_bss_60) == 0)) { + if (lbl_1_bss_68 == 1) { + fn_1_110E8(0, sp10); + } else { + fn_1_110E8(1, sp10); + } + lbl_1_bss_60 = MGSeqCreate(5, 3, sp10[0], sp10[1], -1, -1); + HuAudSStreamPlay(1); + lbl_1_bss_7C = 0xB4; + lbl_1_bss_84 = 0xC; + lbl_1_bss_80 = 0; + } + break; + case 12: + if (++lbl_1_bss_80 >= 210.0f) { + WipeCreate(2, 0, 0x3C); + lbl_1_bss_4C = 1; + lbl_1_bss_84 = 0xD; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 13: + if (WipeStatGet() == 0) { + lbl_1_bss_84 = 0xE; + lbl_1_bss_80 = 0; + lbl_1_bss_7C = 0; + } + break; + case 14: + arg0->func = fn_1_1664; + break; + } + fn_1_1F34(); + fn_1_16C4(arg0); +} + +void fn_1_1664(omObjData* arg0) { + if (WipeStatGet() == 0) { + fn_1_EC54(); + fn_1_3A88(); + fn_1_2188(); + CharModelKill(-1); + HuDataDirClose(0x3A0000); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_16C4(omObjData* arg0) { + s32 var_r30; + + var_r30 = 0; + if ((WipeStatGet() != 0) || (arg0->func == fn_1_1664)) { + return; + } + if (omSysExitReq != 0) { + var_r30 = 1; + } + if (var_r30 != 0) { + if ((s32) lbl_1_bss_4C == 0) { + WipeCreate(2, 0, 0x3C); + } + lbl_1_bss_4C = 1; + HuAudStreamFadeOut(0x1E); + arg0->func = fn_1_1664; + } +} + +s32 fn_1_1788(void) { + return lbl_1_bss_84; +} + +void fn_1_1798(s32 arg0, f32 arg8) { + + if (arg8 < 0.0f) { + arg8 = 0.0f; + } else if (arg8 > 1.0f) { + arg8 = 1.0f; + } + lbl_1_bss_6C[arg0] = arg8; + if (lbl_1_bss_6C[arg0] >= 1.0f) { + fn_1_1864(1 << arg0); + } +} + +void fn_1_1864(s32 arg0) { + lbl_1_bss_68 |= arg0; +} + +s32 fn_1_1884(void) { + if (lbl_1_bss_68 != 0) { + if (lbl_1_bss_68 != 1 && lbl_1_bss_68 != 2) { + if (((s32)frand() & 1) != 0) { + lbl_1_bss_68 = 1; + } else { + lbl_1_bss_68 = 2; + } + } + if (lbl_1_bss_68 == 1) { + return 0; + } else { + return 1; + } + } else { + if (lbl_1_bss_64 != 0) { + return 3; + } else { + return -1; + } + } +} + +s32 lbl_1_data_D0[2] = { 0x3A0029, 0x3A002A }; +s16 lbl_1_data_D8[2] = { -24, 24 }; +s16 lbl_1_data_DC[2] = { -10, 10 }; +s16 lbl_1_data_E0[2] = { 350, 96 }; + +void fn_1_1954(void) { + f32 temp_f28; + f32 temp_f29; + f32 var_f31; + f32 var_f30; + s32 var_r29; + s32 var_r31; + M427DllStruct2* var_r30; + + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xA4, 0x10000000); + lbl_1_bss_40 = var_r30; + var_r30->unk9C = 0; + var_r30->unkA0 = 0; + var_r31 = espEntry(0x3A0028, 1, 0); + var_r30->unk0[0] = var_r31; + espPriSet(var_r31, 0xFF); + espDispOn(var_r31); + espDrawNoSet(var_r31, 0); + espAttrSet(var_r31, 1); + espBankSet(var_r31, 0); + espPosSet(var_r31, 288.0, 240.0); + + for (var_r29 = 0; var_r29 < 2; var_r29++) { + var_r31 = espEntry(lbl_1_data_D0[var_r29], 1, 0); + var_r30->unk0[var_r29 + 1] = var_r31; + espPriSet(var_r31, 0xC8); + espDispOn(var_r31); + espDrawNoSet(var_r31, 0); + espAttrSet(var_r31, 1); + espBankSet(var_r31, 0); + espPosSet(var_r31, 288.0f + lbl_1_data_D8[var_r29], 240.0); + } + + temp_f28 = 288.0f; + temp_f29 = 400.0f; + var_f31 = 288.0f; + var_f30 = temp_f29; + var_r31 = espEntry(0x3A002B, 1, 0); + var_r30->unkC = var_r31; + espPriSet(var_r31, 0xBE); + espDispOn(var_r31); + espDrawNoSet(var_r31, 0); + espAttrSet(var_r31, 1); + espBankSet(var_r31, 0); + espTPLvlSet(var_r31, 0.5); + espColorSet(var_r31, 0x80, 0x80, 0x80); + espScaleSet(var_r31, 1.25, 1.5); + espPosSet(var_r31, var_f31, var_f30); + var_f31 = 248.0f; + var_f30 = temp_f29 - 8.0f; + var_r31 = espEntry(0x610037, 1, 0); + var_r30->unk10 = var_r31; + espPriSet(var_r31, 0xBE); + espDispOn(var_r31); + espDrawNoSet(var_r31, 0); + espAttrSet(var_r31, 1); + espBankSet(var_r31, 0); + espScaleSet(var_r31, 1.0, 1.0); + espPosSet(var_r31, var_f31 - 18.0f, var_f30); + var_r30->unk84 = ((var_f31 - 18.0f) - temp_f28); + var_r30->unk88 = (var_f30 - temp_f29); + var_r30->unk8C = -1; + var_r30->unk98 = 1.0f; + var_r30->unk90 = temp_f28; + var_r30->unk94 = temp_f29; + var_f31 = 248.0f; + var_f30 = temp_f29 - 8.0f; + + for (var_r29 = 0; var_r29 < 7; var_r29++) { + var_r31 = espEntry(0x610030, 1, 0); + var_r30->unk14[var_r29] = var_r31; + espPriSet(var_r31, 0xB4); + espDispOn(var_r31); + espDrawNoSet(var_r31, 0); + espAttrSet(var_r31, 9); + espScaleSet(var_r31, 1.0, 1.0); + espPosSet(var_r31, var_f31, var_f30); + if (var_r29 == 1) { + espBankSet(var_r31, 10); + } else if (var_r29 == 4) { + espBankSet(var_r31, 11); + } else { + espBankSet(var_r31, 0); + } + var_r30->unk4C[var_r29].x = var_f31 - temp_f28; + var_r30->unk4C[var_r29].y = var_f30 - temp_f29; + var_f31 += 16.0f; + } + var_f31 = 248.0f; + var_f30 = 8.0f + temp_f29; + + for (var_r29 = 0; var_r29 < 7; var_r29++) { + var_r31 = espEntry(0x610031, 1, 0); + var_r30->unk30[var_r29] = var_r31; + espPriSet(var_r31, 0xB4); + espDispOn(var_r31); + espDrawNoSet(var_r31, 0); + espAttrSet(var_r31, 1); + espScaleSet(var_r31, 1.0, 1.0); + espPosSet(var_r31, var_f31, var_f30); + if (var_r29 == 1) { + espBankSet(var_r31, 10); + } else if (var_r29 == 4) { + espBankSet(var_r31, 11); + } else { + espBankSet(var_r31, 0); + } + var_f31 += 16.0f; + } + fn_1_232C(lbl_1_bss_78); + fn_1_2518(0); +} + +void fn_1_1F34(void) { + f32 var_f30; + f32 temp_f31; + s32 var_r29; + s32 var_r30; + M427DllStruct2* temp_r31; + + temp_r31 = lbl_1_bss_40; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r29 = temp_r31->unk0[var_r30 + 1]; + var_f30 = lbl_1_data_E0[0] + (lbl_1_bss_6C[var_r30] * (lbl_1_data_E0[1] - lbl_1_data_E0[0])); + espPosSet(var_r29, 288.0f + lbl_1_data_DC[var_r30], var_f30); + } + if (temp_r31->unk8C != -1) { + if (temp_r31->unk8C == 0) { + if ((temp_r31->unk98 += 0.02f) >= 1.2f) { + temp_r31->unk98 = 1.2f; + temp_r31->unk8C = 1; + } + } else { + if ((temp_r31->unk98 -= 0.04f) <= 1.0f) { + temp_r31->unk98 = 1.0f; + temp_r31->unk8C = 0; + } + } + temp_f31 = temp_r31->unk98; + + for (var_r30 = 0; var_r30 < 7; var_r30++) { + var_r29 = temp_r31->unk14[var_r30]; + espScaleSet(var_r29, temp_f31, temp_f31); + } + var_r29 = temp_r31->unk10; + espScaleSet(var_r29, temp_f31, temp_f31); + } +} + +void fn_1_2188(void) { + M427DllStruct2* temp_r31; + s32 var_r30; + + temp_r31 = lbl_1_bss_40; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + espKill(temp_r31->unk0[var_r30]); + } + espKill(temp_r31->unkC); +} + +void fn_1_21E8(s32 arg0, s32 arg1) { + M427DllStruct2* temp_r31; + s32 var_r30; + + temp_r31 = lbl_1_bss_40; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (arg0 == 0) { + espDispOff(temp_r31->unk0[var_r30]); + } else { + espDispOn(temp_r31->unk0[var_r30]); + } + } + if (arg1 != 0) { + if (arg0 == 0) { + espDispOff(temp_r31->unkC); + } else { + espDispOn(temp_r31->unkC); + } + if (arg0 == 0) { + espDispOff(temp_r31->unk10); + } else { + espDispOn(temp_r31->unk10); + } + + for (var_r30 = 0; var_r30 < 7; var_r30++) { + if (arg0 == 0) { + espDispOff(temp_r31->unk14[var_r30]); + } else { + espDispOn(temp_r31->unk14[var_r30]); + } + } + + for (var_r30 = 0; var_r30 < 7; var_r30++) { + if (arg0 == 0) { + espDispOff(temp_r31->unk30[var_r30]); + } else { + espDispOn(temp_r31->unk30[var_r30]); + } + } + } +} + +void fn_1_232C(s32 arg0) { + M427DllStruct2* temp_r29; + f32 temp_f0; + s32 var_r31; + + temp_r29 = lbl_1_bss_40; + temp_r29->unk9C = arg0; + var_r31 = arg0 / 3600; + arg0 -= var_r31 * 3600; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk14[0], var_r31); + var_r31 = (arg0 / 600); + arg0 -= var_r31 * 600; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk14[2], var_r31); + var_r31 = arg0 / 60; + arg0 -= var_r31 * 60; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk14[3], var_r31); + arg0 = 100.0f * (arg0 / 60.0f); + var_r31 = arg0 / 10; + arg0 -= var_r31 * 10; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk14[5], var_r31); + var_r31 = arg0; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk14[6], var_r31); +} + +void fn_1_2518(s32 arg0) { + M427DllStruct2* temp_r29; + f32 temp_f0; + s32 var_r31; + + temp_r29 = lbl_1_bss_40; + temp_r29->unkA0 = arg0; + var_r31 = arg0 / 3600; + arg0 -= var_r31 * 3600; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk30[0], var_r31); + var_r31 = (arg0 / 600); + arg0 -= var_r31 * 600; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk30[2], var_r31); + var_r31 = arg0 / 60; + arg0 -= var_r31 * 60; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk30[3], var_r31); + arg0 = 100.0f * (arg0 / 60.0f); + var_r31 = arg0 / 10; + arg0 -= var_r31 * 10; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk30[5], var_r31); + var_r31 = arg0; + if (var_r31 > 9) { + var_r31 = 9; + } else if (var_r31 < 0) { + var_r31 = 0; + } + espBankSet(temp_r29->unk30[6], var_r31); +} + +void fn_1_2704(void) { + M427DllStruct2* var_r31; + + var_r31 = lbl_1_bss_40; + var_r31->unk8C = 0; +} + +void fn_1_272C(void) { + M427DllStruct2* var_r31; + s32 temp_r30; + + var_r31 = lbl_1_bss_40; + temp_r30 = var_r31->unkC; + espTPLvlSet(temp_r30, 0.5); + espColorSet(temp_r30, 0, 0, 0); +} + +void fn_1_2790(void) { + omObjData* var_r30; + s32 var_r31; + + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1.0f, 300.0f, 50000.0f, 0.6f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraCreate(2); + Hu3DCameraPerspectiveSet(2, -1.0f, 300.0f, 50000.0f, 0.6f); + Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0); + Hu3DCameraCreate(4); + Hu3DCameraPerspectiveSet(4, -1.0f, 100.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(4, 0.0f, 0.0f, 576.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(4, 0, 0, 0x280, 0x1E0); + var_r30 = lbl_1_bss_48 = omAddObjEx(lbl_1_bss_8C, 0x7FDA, 0, 0, -1, omOutViewMulti); + var_r30->work[0] = 3; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + CRotM[var_r31].x = lbl_1_data_0[0].rot.x; + CRotM[var_r31].y = lbl_1_data_0[0].rot.y; + CRotM[var_r31].z = lbl_1_data_0[0].rot.z; + CenterM[var_r31].x = lbl_1_data_0[0].cen.x; + CenterM[var_r31].y = lbl_1_data_0[0].cen.y; + CenterM[var_r31].z = lbl_1_data_0[0].cen.z; + CZoomM[var_r31] = lbl_1_data_0[0].zoom; + } + lbl_1_bss_44 = 0; + omAddObjEx(lbl_1_bss_8C, 0x3F, 0, 0, -1, fn_1_2B20); +} + +void fn_1_2B20(omObjData* object) {} + +void fn_1_2B24(void) {} + +void fn_1_2B28(void) { + s32 var_r31; + + Hu3DCameraPerspectiveSet(1, 45.0f, 300.0f, 50000.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, 45.0f, 300.0f, 50000.0f, 0.6f); + Hu3DCameraPerspectiveSet(4, 45.0f, 100.0f, 50000.0f, 1.2f); + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + CRotM[var_r31].x = lbl_1_data_0[2].rot.x; + CRotM[var_r31].y = lbl_1_data_0[2].rot.y; + CRotM[var_r31].z = lbl_1_data_0[2].rot.z; + CenterM[var_r31].x = lbl_1_data_0[2].cen.x; + CenterM[var_r31].y = lbl_1_data_0[2].cen.y; + CenterM[var_r31].z = lbl_1_data_0[2].cen.z; + CZoomM[var_r31] = lbl_1_data_0[2].zoom; + } +} + +void fn_1_2CE8(f32 arg0) { + s32 var_r31; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + CRotM[var_r31].x = fn_1_168FC(arg0, lbl_1_data_0[2].rot.x, lbl_1_data_0->rot.x); + CRotM[var_r31].y = fn_1_168FC(arg0, lbl_1_data_0[2].rot.y, lbl_1_data_0->rot.z); + CRotM[var_r31].z = fn_1_168FC(arg0, lbl_1_data_0[2].rot.z, lbl_1_data_0->rot.z); + CenterM[var_r31].x = lbl_1_data_0[2].cen.x + (arg0 * (lbl_1_data_0->cen.x - lbl_1_data_0[2].cen.x)); + CenterM[var_r31].y = lbl_1_data_0[2].cen.y + (arg0 * (lbl_1_data_0->cen.y - lbl_1_data_0[2].cen.y)); + CenterM[var_r31].z = lbl_1_data_0[2].cen.z + (arg0 * (lbl_1_data_0->cen.z - lbl_1_data_0[2].cen.z)); + CZoomM[var_r31] = lbl_1_data_0[2].zoom + (arg0 * (lbl_1_data_0->zoom - lbl_1_data_0[2].zoom)); + } +} + +void fn_1_2EE0(void) { + Hu3DCameraPerspectiveSet(1, 45.0f, 700.0f, 50000.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, 45.0f, 700.0f, 50000.0f, 0.6f); +} + +void fn_1_2F6C(f32 arg0) { + s32 var_r31; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + CRotM[var_r31].x = fn_1_168FC(arg0, lbl_1_data_0[1].rot.x, lbl_1_data_0[3].rot.x); + CRotM[var_r31].y = fn_1_168FC(arg0, lbl_1_data_0[1].rot.y, lbl_1_data_0[3].rot.y); + CRotM[var_r31].z = fn_1_168FC(arg0, lbl_1_data_0[1].rot.z, lbl_1_data_0[3].rot.z); + CenterM[var_r31].x = lbl_1_data_0[1].cen.x + (arg0 * (lbl_1_data_0[3].cen.x - lbl_1_data_0[1].cen.x)); + CenterM[var_r31].y = lbl_1_data_0[1].cen.y + (arg0 * (lbl_1_data_0[3].cen.y - lbl_1_data_0[1].cen.y)); + CenterM[var_r31].z = lbl_1_data_0[1].cen.z + (arg0 * (lbl_1_data_0[3].cen.z - lbl_1_data_0[1].cen.z)); + CZoomM[var_r31] = lbl_1_data_0[1].zoom + (arg0 * (lbl_1_data_0[3].zoom - lbl_1_data_0[1].zoom)); + } +} + +void fn_1_3164(void) { + lbl_1_bss_48->work[0] = 1; + Hu3DCameraKill(2); + Hu3DCameraKill(4); + Hu3DCameraPerspectiveSet(1, 45.0f, 100.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x280, 0x1E0); + CRotM->x = lbl_1_data_0[1].rot.x; + CRotM->y = lbl_1_data_0[1].rot.y; + CRotM->z = lbl_1_data_0[1].rot.z; + CenterM->x = lbl_1_data_0[1].cen.x; + CenterM->y = lbl_1_data_0[1].cen.y; + CenterM->z = lbl_1_data_0[1].cen.z; + *CZoomM = lbl_1_data_0[1].zoom; +} + +s32 fn_1_32EC(void) { + return 0; +} diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c new file mode 100644 index 00000000..fa191ed6 --- /dev/null +++ b/src/REL/m427Dll/map.c @@ -0,0 +1,3157 @@ +#include "REL/m427Dll.h" + +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/pad.h" +#include "ext_math.h" +#include "game/animdata.h" +#include "game/audio.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "string.h" + +extern s32 rand8(void); +extern LightData Hu3DLocalLight[0x20]; + +#define FABS(value) ((value < 0) ? -(value) : (value)) + +typedef struct M427DllStruct2 { + s32 unk0[3]; + s32 unkC; + s32 unk10; + s32 unk14[7]; + s32 unk30[7]; + HsfVector2f unk4C[7]; + f32 unk84; + f32 unk88; + s32 unk8C; + f32 unk90; + f32 unk94; + f32 unk98; + s32 unk9C; + s32 unkA0; +} M427DllStruct2; // sizeof 0xA4 + +typedef struct M427DllStruct3 { + Vec rot; + Vec cen; + f32 zoom; +} M427DllStruct3; // sizeof 0x1C + +typedef struct M427DllMapStruct { + u8 unk0; + char unk_1; + s16 unk2; + s16 unk4; + char unk_6[0x2]; + AnimData *unk8; + Vec unkC; + Vec unk18; + Vec unk24; + Vec unk30; + Vec2f unk3C; + Vec2f unk44; + Vec2f unk4C; + Vec2f unk54; + Vec2f unk5C[4]; + GXColor unk7C; + void *unk80; + s32 unk84; + float unk88; + float unk8C; + float unk90; + float unk94; +} M427DllMapStruct; // sizeof 0x98 + +typedef struct M427DllMapStruct2 { + s8 unk0; + s16 unk2; + s16 unk4; +} M427DllMapStruct2; // sizeof 0x6 + +typedef struct M427DllMapSubstruct { + s16 unk0; + Vec unk4; +} M427DllMapSubstruct; // sizeof 0x10 + +typedef struct M427DllMapSubstruct2 { + s16 unk0; + Vec unk4; + s16 unk10[2]; + s16 unk14[4]; +} M427DllMapSubstruct2; // sizeof 0x1C + +typedef struct M427DllMapSubstruct7 { + s16 unk0; + s32 unk4; + void *unk8; +} M427DllMapSubstruct7; // sizeof 0xC + +typedef struct M427DllMapUNKB8 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + u8 unk8; + s16 unkA; + float unkC; + float unk_10; + float unk_14; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; + float unk20; + float unk24; + float unk28; + float unk2C; +} M427DllMapUNKB8; // sizeof 0x30 + +typedef struct M427DllMapUNK17E { + s16 unk0; + s16 unk2; +} M427DllMapUNK17E; // sizeof 0x4 + +typedef struct M427DllMapSubstruct3Sub { + s16 unk0; + void *unk4; + u32 unk8; +} M427DllMapSubstruct3Sub; // sizeof 0xC + +typedef struct M427DllMapSubstruct3 { + s16 unk0; + s16 unk2[11]; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; + s16 unk20; + char unk_22[2]; + float unk24[4]; + s16 unk34[4]; + s16 unk3C[4]; + s16 unk44[0xB]; + s16 unk5A; + s16 unk5C; + char unk_5E[2]; + Vec unk_60; + Vec unk_6C; + Vec unk78; + Vec unk84; + f32 unk90; + M427DllMapSubstruct3Sub unk94; + char unk_A0[0xC]; + struct M427DllMapStruct6 *unkAC; + s16 unkB0[1]; + char unk_B2[0x6]; + M427DllMapUNKB8 unkB8[2][2]; + s16 unk178[3]; + M427DllMapUNK17E unk17E[2][2]; + s16 unk18E[2]; + char unk194[4]; +} M427DllMapSubstruct3; // sizeof 0x198 + +typedef struct M427DllMapStruct3Sub { + AnimData *unk_00; + AnimData *unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; +} M427DllMapStruct3Sub; // sizeof 0x18 + +typedef struct M427DllMapStruct3 { + u8 unk0; + M427DllMapSubstruct3 unk4[2]; + M427DllMapStruct3Sub unk334; + M427DllMapSubstruct2 unk34C[3]; + M427DllMapSubstruct unk3A0[5]; +} M427DllMapStruct3; // sizeof 0x3F0 + +typedef struct M427DllMapSubstruct5 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + Vec unk8; + char unk14[0x8]; +} M427DllMapSubstruct5; // sizeof 0x1C + +typedef struct M427DllMapStruct4 { + s16 unk0; + Vec *unk4; + Vec2f *unk8; + Vec *unkC; + GXColor *unk10; + s16 unk14; + s16 unk16; + s16 unk18; + M427DllMapSubstruct5 *unk1C; + void *unk20; + u32 unk24; + void *unk28; + u32 unk2C; + void *unk30; + u32 unk34; + f32 unk38; + f32 unk3C; + f32 unk40; + f32 unk44; + s16 unk48[1]; + s16 unk4A; +} M427DllMapStruct4; // sizeof 0x4C + +typedef struct M427DllMapStruct5 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; +} M427DllMapStruct5; // sizeof 0x14 + +typedef struct M427DllMapStruct6 { + s16 unk_00; + Vec *unk_04; + Vec *unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + AnimData *unk_28; + Vec *unk_2C; + Vec2f *unk_30; + Vec *unk_34; + s16 unk_38; + s16 unk_3A; + s16 unk_3C; + char pad_3E[2]; + void *unk_40; + u32 unk_44; + M427DllMapSubstruct5 *unk_48; + float unk_4C; + float unk_50; + float unk_54; + float unk_58; + float unk_5C; + /* 0x60 */ float unk_60; +} M427DllMapStruct6; /* size = 0x64, stored in unk_120 */ + +typedef struct M427DllMapSubstruct6 { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ char pad_0C[0xC]; /* maybe part of unk_08[4]? */ + /* 0x18 */ float unk_18; + /* 0x1C */ float unk_1C; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ float unk_30; + /* 0x34 */ s16 unk_34; + /* 0x36 */ s16 unk_36; + /* 0x38 */ s16 unk_38; + /* 0x3A */ char pad_3A[2]; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ s16 unk_40; + /* 0x42 */ char pad_42[2]; + /* 0x44 */ float unk_44; + /* 0x48 */ Vec unk_48; + /* 0x54 */ Vec unk_54; + /* 0x60 */ s16 unk_60; + /* 0x62 */ s8 unk_62; + /* 0x63 */ char pad_63[1]; +} M427DllMapSubstruct6; // sizeof 0x64 + +typedef void (*M427DllHook)(ModelData *model, struct M427DllMapStruct7 *particle, Mtx matrix); + +typedef struct M427DllMapStruct7 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ char pad_02[2]; + /* 0x04 */ u32 unk_04; + /* 0x08 */ u8 unk_08; + /* 0x09 */ char pad_09[3]; /* maybe part of unk_08[4]? */ + /* 0x0C */ M427DllHook unk_0C; + /* 0x10 */ AnimData *unk_10; + /* 0x14 */ s16 unk_14; + /* 0x16 */ char pad_16[2]; + /* 0x18 */ M427DllMapSubstruct6 *unk_18; + /* 0x1C */ Vec *unk_1C; + /* 0x20 */ Vec2f *unk_20; + /* 0x24 */ GXColor *unk_24; + /* 0x28 */ void *unk_28; + /* 0x2C */ Vec unk_2C; + /* 0x38 */ float unk_38; + /* 0x3C */ float unk_3C; + /* 0x40 */ float unk_40; + /* 0x44 */ float unk_44; + /* 0x48 */ float unk_48; + /* 0x4C */ float unk_4C; + /* 0x50 */ float unk_50; + /* 0x54 */ float unk_54; + /* 0x58 */ float unk_58; + /* 0x5C */ Vec2f *unk_5C; + /* 0x60 */ float unk_60; + /* 0x64 */ float unk_64; +} M427DllMapStruct7; /* size = 0x68, stored in unk_120 */ + +GXColor lbl_1_data_E8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +omObjData *lbl_1_bss_548; +M427DllMapStruct3 lbl_1_bss_158; +M427DllMapStruct2 lbl_1_bss_F8[0x10]; +AnimData *lbl_1_bss_F4; +M427DllMapStruct *lbl_1_bss_F0; +s16 lbl_1_bss_EC[2]; +s16 lbl_1_bss_E8[2]; +M427DllMapStruct5 *lbl_1_bss_E4; +M427DllMapStruct4 lbl_1_bss_98; +f32 lbl_1_bss_94; +s8 lbl_1_bss_91; +s8 lbl_1_bss_90; + +void fn_1_372C(void); +void fn_1_4218(omObjData *object); +void fn_1_44F4(f32, f32, f32, f32, f32); +void fn_1_48EC(ModelData *model, Mtx matrix); +void fn_1_4D7C(ModelData *model, Mtx matrix); +void fn_1_50A0(ModelData *model, Mtx matrix); +void fn_1_510C(s32, s16, s16); +void fn_1_558C(M427DllMapStruct4 *); +void fn_1_618C(ModelData *model, Mtx matrix); +void fn_1_6760(omObjData *object); +void fn_1_C2C8(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_1_D22C(ModelData *model, struct M427DllMapStruct7 *arg1, Mtx matrix); +s16 fn_1_D63C(AnimData *arg0, s16 arg1, float arg8, s16 arg2, s16 arg3); +void fn_1_DB80(s16); +void fn_1_DC64(s16, M427DllHook); +void fn_1_DC9C(s16, u8); + +void fn_1_72E4(omObjData *arg0); +void fn_1_73BC(void); +void fn_1_794C(M427DllMapSubstruct3 *arg0, s16 arg1); +void fn_1_7C34(void); +void fn_1_7E60(s16 arg0, M427DllMapSubstruct3 *arg1); +void fn_1_7F38(void); +void fn_1_85D4(s16 arg0, M427DllMapSubstruct3 *arg1); +void fn_1_8768(M427DllMapSubstruct3 *arg0, M427DllMapUNKB8 *arg1, s16 arg2, float arg8, float arg9); +void fn_1_8E1C(u8 arg0, M427DllMapSubstruct3 *arg1, M427DllMapUNKB8 *arg2); +void fn_1_8F90(omObjData *object); +void fn_1_9240(void); +void fn_1_9318(s16 *arg0, s16 arg1); +void fn_1_93EC(s32 arg0, s32 arg1, float arg8, float arg9, float argA, float argB); +s16 fn_1_95E8(s32 arg0, s16 arg1, s16 arg2, float arg8, float arg9, float argA, float argB, float argC); +void fn_1_9958(s16 arg0, u8 arg1); +void fn_1_999C(s16 arg0, u8 arg1); +void fn_1_99E4(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4); +void fn_1_9A2C(s16 arg0, float arg8, float arg9, float argA); +void fn_1_9AA0(s16 arg0, float arg8, float arg9, float argA); +void fn_1_9B14(s16 arg0, float arg8, float arg9, float argA); +void fn_1_9B88(ModelData *model, Mtx matrix); +void fn_1_A148(ModelData *model, Mtx matrix); +s16 fn_1_A1F4(s32 arg0, s16 arg1, s16 arg2, s16 arg3, float arg8, Vec *arg4, Vec *arg5); +void fn_1_A7F8(M427DllMapStruct6 *arg0); +void fn_1_B194(M427DllMapStruct6 *arg0, float arg8, Vec *arg1); +void fn_1_B3CC(ModelData *model, Mtx matrix); +void fn_1_C154(ModelData *model, Mtx matrix); +void fn_1_C200(ModelData *model, Mtx matrix); +void fn_1_C2AC(Vec *arg0, float arg8, float arg9, float argA); +void fn_1_C2BC(Vec2f *arg0, float arg8, float arg9); +s16 fn_1_C41C(float arg8, float arg9, float argA, float argB, float argC, float argD, u8 arg0, u8 arg1, u8 arg2); +void fn_1_C528(s16 arg0, s16 arg1, float arg8, float arg9, float argA, float argB, float argC, float argD, u8 arg2, u8 arg3, u8 arg4); +void fn_1_C68C(LightData *arg0, Vec *arg1, Vec *arg2, GXColor *arg3); +void fn_1_C76C(u8 arg0, float arg8, float arg9, float argA, s16 arg1, float argB, float argC, s16 arg2); +s16 fn_1_D430(float arg8, float arg9, float argA, s16 arg0); +M427DllMapSubstruct6 *fn_1_D4FC(s16 arg0, Vec *arg1, Vec *arg2, float arg8, GXColor *arg3); +M427DllMapSubstruct6 *fn_1_DC0C(s16 arg0, s16 arg1); +void fn_1_DCD4(ModelData *model, Mtx matrix); +void fn_1_E2B0(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9); +void fn_1_E37C(Vec2f *arg0, Vec2f *arg1, s16 arg2, float arg8, float arg9); +void fn_1_E420(Vec *arg0, Vec *arg1, Vec *arg2, s16 arg3); + +void fn_1_32F4(Process *arg0) +{ + s16 var_r31; + AnimData *temp_r30; + s32 var_r29; + s32 var_r28; + + lbl_1_bss_158.unk0 = 0; + lbl_1_bss_548 = omAddObjEx(arg0, 0x7F, 0, 0, -1, fn_1_6760); + lbl_1_bss_F0 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M427DllMapStruct), MEMORY_DEFAULT_NUM); + + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + lbl_1_bss_F0[var_r31].unk2 = -1; + } + temp_r30 = HuSprAnimRead(HuDataReadNum(0x3A0017, MEMORY_DEFAULT_NUM)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_EC[var_r31] = fn_1_D63C(temp_r30, 0x200, 80.0f, 0x40, 0x40); + fn_1_DC64(lbl_1_bss_EC[var_r31], fn_1_D22C); + fn_1_DC9C(lbl_1_bss_EC[var_r31], 1); + Hu3DModelLayerSet(lbl_1_bss_EC[var_r31], 7); + if (var_r31 == 0) { + var_r29 = 1; + } + else { + var_r29 = 2; + } + Hu3DModelCameraSet(lbl_1_bss_EC[var_r31], var_r29); + } + temp_r30 = HuSprAnimRead(HuDataReadNum(0x3A001A, MEMORY_DEFAULT_NUM)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_E8[var_r31] = fn_1_D63C(temp_r30, 4, 120.0f, 0, 0); + fn_1_DC9C(lbl_1_bss_E8[var_r31], 1); + Hu3DModelLayerSet(lbl_1_bss_E8[var_r31], 7); + if (var_r31 == 0) { + var_r28 = 1; + } + else { + var_r28 = 2; + } + Hu3DModelCameraSet(lbl_1_bss_E8[var_r31], var_r28); + } + fn_1_372C(); + + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + lbl_1_bss_F8[var_r31].unk0 = -1; + lbl_1_bss_F8[var_r31].unk2 = Hu3DModelCreateFile(0x3A0012); + Hu3DModelAttrSet(lbl_1_bss_F8[var_r31].unk2, 1); + Hu3DModelScaleSet(lbl_1_bss_F8[var_r31].unk2, 0.75f, 0.75f, 0.75f); + Hu3DModelLayerSet(lbl_1_bss_F8[var_r31].unk2, 4); + Hu3DMotionSpeedSet(lbl_1_bss_F8[var_r31].unk2, 2.0f); + lbl_1_bss_F8[var_r31].unk4 = Hu3DAnimCreate(HuDataReadNum(0x3A001B, MEMORY_DEFAULT_NUM), lbl_1_bss_F8[var_r31].unk2, "db91"); + Hu3DAnimSpeedSet(lbl_1_bss_F8[var_r31].unk4, 2.0f); + } +} + +void fn_1_372C(void) +{ + M427DllMapSubstruct *var_r29 = &lbl_1_bss_158.unk3A0[0]; + M427DllMapSubstruct2 *var_r30 = &lbl_1_bss_158.unk34C[0]; + s16 sp1A[5] = { 0, 0, 1, 1, 0 }; + Vec sp60[5] = { { -700.0f, -150.0f, -7000.0f }, { 0.0f, -300.0f, -12000.0f }, { 800.0f, -350.0f, -12700.0f }, { 600.0f, -350.0f, -13700.0f }, + { 825.0f, -450.0f, -15000.0f } }; + s16 sp8[3] = { 1, 1, 0 }; + s16 spE[3][2] = { { 4, 5 }, { 8, -1 }, { 9, -1 } }; + s16 sp24[3][4] = { { 180, 120, 60, 60 }, { 90, 180, 60, 60 }, { 90, 180, 60, 60 } }; + Vec sp3C[3] = { -350.0f, -300.0f, -10000.0f, -700.0f, -600.0f, -17000.0f, 700.0f, -600.0f, -19000.0f }; + s16 var_r28; + s16 var_r31; + + for (var_r31 = 0; var_r31 < 5; var_r31++, var_r29++) { + var_r29->unk0 = sp1A[var_r31]; + var_r29->unk4.x = sp60[var_r31].x; + var_r29->unk4.y = sp60[var_r31].y; + var_r29->unk4.z = sp60[var_r31].z; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++, var_r30++) { + var_r30->unk0 = sp8[var_r31]; + var_r30->unk4.x = sp3C[var_r31].x; + var_r30->unk4.y = sp3C[var_r31].y; + var_r30->unk4.z = sp3C[var_r31].z; + var_r30->unk10[0] = spE[var_r31][0]; + var_r30->unk10[1] = spE[var_r31][1]; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r30->unk14[var_r28] = sp24[var_r31][var_r28]; + } + } +} + +void fn_1_3A88(void) +{ + M427DllMapStruct *sp8; + s16 var_r30; + M427DllMapSubstruct3 *var_r31; + + sp8 = lbl_1_bss_F0; + HuSprAnimKill(lbl_1_bss_158.unk334.unk_00); + HuSprAnimKill(lbl_1_bss_158.unk334.unk_04); + + for (var_r30 = 0, var_r31 = &lbl_1_bss_158.unk4[0]; var_r30 < 2; var_r30++, var_r31++) { + if (var_r31->unk94.unk4) { + HuMemDirectFree(var_r31->unk94.unk4); + } + } +} + +void fn_1_3B20(s8 arg0, s16 arg1) +{ + M427DllMapStruct2 *var_r31 = &lbl_1_bss_F8[0]; + M427DllMapSubstruct3 *temp_r30 = &lbl_1_bss_158.unk4[arg1]; + Vec sp54[4] = { { 110.0f, -20.0f, 0.0f }, { -110.0f, -20.0f, 0.0f }, { 110.0f, -20.0f, 190.0f }, { -110.0f, -20.0f, 190.0f } }; + Mtx sp24; + f32 sp14[4] = { 135.0f, 225.0f, 45.0f, 315.0f }; + Vec sp8; + f32 temp_f31; + s16 var_r29; + s32 var_r27; + + for (var_r29 = 0; var_r29 < 0x10; var_r29++, var_r31++) { + if (var_r31->unk0 == -1) + break; + } + if (var_r29 != 0x10) { + var_r31->unk0 = arg0; + temp_f31 = temp_r30->unk90; + MTXRotRad(sp24, 0x59, MTXDegToRad(temp_f31)); + MTXMultVec(sp24, &sp54[arg0], &sp8); + sp8.x += temp_r30->unk84.x; + sp8.y += temp_r30->unk84.y; + sp8.z += temp_r30->unk84.z; + Hu3DModelAttrReset(var_r31->unk2, 1); + if (arg1 == 0) { + var_r27 = 1; + } + else { + var_r27 = 2; + } + Hu3DModelCameraSet(var_r31->unk2, var_r27); + Hu3DModelPosSet(var_r31->unk2, sp8.x, sp8.y, sp8.z); + Hu3DModelRotSet(var_r31->unk2, 0.0f, temp_f31 + sp14[arg0], 0.0f); + Hu3DMotionTimeSet(var_r31->unk2, 0.0f); + if (arg0 < 2) { + Hu3DModelAmbSet(var_r31->unk2, 1.0f, 1.0f, 1.0f); + } + else { + Hu3DModelAmbSet(var_r31->unk2, 0.5f, 0.5f, 0.5f); + } + Hu3DAnimBankSet(var_r31->unk4, 0); + } +} + +void fn_1_3DBC(void) +{ + M427DllMapStruct2 *var_r31; + s16 var_r30; + f32 temp_f31; + + var_r31 = &lbl_1_bss_F8[0]; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk0 != -1) { + temp_f31 = Hu3DMotionMaxTimeGet(var_r31->unk2); + if (Hu3DMotionTimeGet(var_r31->unk2) >= temp_f31) { + var_r31->unk0 = -1; + Hu3DModelAttrSet(var_r31->unk2, 1U); + } + } + } +} + +void fn_1_3E58(omObjData *arg0) +{ + s32 sp8[8]; + M427DllMapStruct *var_r26; + M427DllMapSubstruct3 *var_r31; + ModelData *temp_r25; + s16 var_r30; + M427DllMapStruct4 *var_r29; + s16 var_r28; + s16 var_r27; + + var_r29 = &lbl_1_bss_98; + for (var_r28 = 0, var_r31 = lbl_1_bss_158.unk4; var_r28 < 2; var_r28++, var_r31++) { + var_r27 = fn_1_10FE8(var_r31->unk0, &sp8[0]); + + for (var_r30 = 0; var_r30 < var_r27; var_r30++) { + temp_r25 = &Hu3DData[sp8[var_r30]]; + temp_r25->unk_38[4] = temp_r25->unk_38[5] = temp_r25->unk_38[6] = temp_r25->unk_38[7] = -1; + } + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + Hu3DModelKill(var_r31->unk17E[var_r30][var_r27].unk2); + } + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + Hu3DModelKill(var_r31->unkB8[var_r30][var_r27].unk2); + } + } + HuSprAnimKill(var_r31->unkAC->unk_28); + Hu3DModelKill(var_r31->unk1A); + Hu3DModelKill(var_r31->unk1C); + HuMemDirectFree(var_r31->unk94.unk4); + var_r31->unk94.unk4 = NULL; + fn_1_DB80(lbl_1_bss_EC[var_r28]); + fn_1_DB80(lbl_1_bss_E8[var_r28]); + + for (var_r30 = 0; var_r30 < 11; var_r30++) { + Hu3DModelKill(var_r31->unk2[var_r30]); + } + Hu3DModelKill(var_r31->unk1E); + Hu3DModelKill(var_r31->unk20); + } + for (var_r28 = 0, var_r26 = lbl_1_bss_F0; var_r28 < 0x10; var_r28++, var_r26++) { + if (var_r26->unk2 != -1) { + Hu3DModelKill(var_r26->unk4); + HuSprAnimKill(var_r26->unk8); + HuMemDirectFree(var_r26->unk80); + } + } + HuMemDirectFree(lbl_1_bss_F0); + Hu3DFogClear(); + var_r30 = Hu3DModelCreateFile(0x3A0011); + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + var_r29->unk0 = Hu3DModelCreateFile(0x3A0010); + Hu3DModelCameraSet(var_r29->unk0, 1); + Hu3DModelLayerSet(var_r29->unk0, 3); + Hu3DModelPosSet(var_r29->unk0, 0.0f, 0.0f, 0.0f); + lbl_1_bss_158.unk0 = 1; + var_r29->unk48[0] = 0; + var_r29->unk4A = 0; + var_r29->unk4 = 0; + lbl_1_bss_E4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M427DllMapStruct5), MEMORY_DEFAULT_NUM); + for (var_r28 = 0; var_r28 < 0x10; var_r28++) { + lbl_1_bss_E4[var_r28].unk10 = -1.0f; + } + fn_1_510C(0, 0x32, 0x32); + arg0->func = fn_1_4218; +} + +void fn_1_4218(omObjData *arg0) +{ + f32 var_f31; + f32 temp_f30; + f32 var_f29; + M427DllMapStruct5 *var_r31; + s16 var_r30; + M427DllMapStruct4 *var_r29; + s32 temp_r28; + + var_r29 = &lbl_1_bss_98; + var_r31 = &lbl_1_bss_E4[0]; + for (var_r30 = 0; var_r30 < 1; var_r30++) { + if (--var_r29->unk48[var_r30] < 0.0f) { + var_r29->unk48[var_r30] = (f32)((((rand8() << 8) | rand8()) % 241) + 0x78); + var_f31 = ((((rand8() << 8) | rand8()) % 4001) - 0x7D0); + temp_f30 = -3000.0f; + var_f29 = ((((rand8() << 8) | rand8()) % 21) + 0xA); + fn_1_44F4(var_f31, 0.0f, temp_f30, var_f29, 0.0f); + } + } + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (-1.0f != var_r31->unk10) { + var_r31->unkC += 20.0f; + var_r31->unk10 -= 0.2f; + if (var_r31->unk10 < 0.0f) { + var_r31->unk10 = -1.0f; + } + } + } +} + +void fn_1_44F4(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) +{ + M427DllMapStruct5 *var_r31; + s16 var_r30; + + var_r31 = &lbl_1_bss_E4[0]; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (-1.0f == var_r31->unk10) + break; + } + if (var_r30 != 0x10) { + var_r31->unk0 = arg0; + var_r31->unk4 = arg1; + var_r31->unk8 = arg2; + var_r31->unkC = arg4; + var_r31->unk10 = arg3; + } +} + +f32 lbl_1_data_F4 = 450.0f; + +f32 fn_1_4570(Vec *arg0) +{ + f32 temp_f31; + f32 temp_f30; + f32 var_f28; + f32 var_f27; + f32 var_f23; + M427DllMapStruct5 *var_r31; + s16 var_r30; + + var_r31 = &lbl_1_bss_E4[0]; + var_f27 = 0.0f; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (-1.0f != var_r31->unk10) { + temp_f31 = arg0->x - var_r31->unk0; + temp_f30 = arg0->z - var_r31->unk8; + if (FABS(temp_f31) > (var_r31->unkC + lbl_1_data_F4)) { + if (FABS(temp_f30) > (var_r31->unkC + lbl_1_data_F4)) { + continue; + } + } + var_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + var_f23 = FABS(var_f28 - var_r31->unkC); + var_f28 = 1.0f - (var_f23 / lbl_1_data_F4); + if (var_f28 < 0.0f) { + var_f28 = 0.0f; + } + var_f27 += var_r31->unk10 * sind(90.0f * var_f28); + } + } + return var_f27; +} + +void fn_1_48EC(ModelData *arg0, Mtx arg1) +{ + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + f32 sp8; + f32 temp_f29; + f32 temp_f30; + f32 temp_f31; + + sp3C.x = CenterM->x; + sp3C.y = CenterM->y; + sp3C.z = CenterM->z; + sp30.x = CRotM->x; + sp30.y = CRotM->y; + sp30.z = CRotM->z; + temp_f29 = *CZoomM; + CenterM->x = -CenterM->x; + CenterM->y = -CenterM->y; + CenterM->z = CenterM->z; + CRotM->x = 180.0f + CRotM->x; + CRotM->y = 180.0f + -CRotM->y; + CRotM->z = CRotM->z; + *CZoomM = *CZoomM; + temp_f31 = CRotM->x; + temp_f30 = CRotM->y; + sp8 = CRotM->z; + sp24.x = (CenterM->x + (*CZoomM * (sind(temp_f30) * cosd(temp_f31)))); + sp24.y = (CenterM->y + (*CZoomM * -sind(temp_f31))); + sp24.z = (CenterM->z + (*CZoomM * (cosd(temp_f30) * cosd(temp_f31)))); + spC.x = CenterM->x; + spC.y = CenterM->y; + spC.z = CenterM->z; + sp18.x = (sind(temp_f30) * sind(temp_f31)); + sp18.y = cosd(temp_f31); + sp18.z = (cosd(temp_f30) * sind(temp_f31)); + Hu3DCameraPosSetV(1, &sp24, &sp18, &spC); + CenterM->x = sp3C.x; + CenterM->y = sp3C.y; + CenterM->z = sp3C.z; + CRotM->x = sp30.x; + CRotM->y = sp30.y; + CRotM->z = sp30.z; + *CZoomM = temp_f29; +} + +void fn_1_4D7C(ModelData *arg0, Mtx arg1) +{ + Vec sp24; + Vec sp18; + Vec spC; + f32 sp8; + f32 temp_f30; + f32 temp_f31; + + temp_f31 = CRotM->x; + temp_f30 = CRotM->y; + sp8 = CRotM->z; + sp24.x = CenterM->x + sind(temp_f30) * cosd(temp_f31) * *CZoomM; + sp24.y = CenterM->y + *CZoomM * -sind(temp_f31); + sp24.z = CenterM->z + cosd(temp_f30) * cosd(temp_f31) * *CZoomM; + sp18.x = CenterM->x; + sp18.y = CenterM->y; + sp18.z = CenterM->z; + spC.x = sind(temp_f30) * sind(temp_f31); + spC.y = cosd(temp_f31); + spC.z = cosd(temp_f30) * sind(temp_f31); + Hu3DCameraPosSetV(1, &sp24, &spC, &sp18); + if (lbl_1_bss_98.unk30) { + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + GXCopyTex(lbl_1_bss_98.unk30, 1); + } +} + +void fn_1_50A0(ModelData *arg0, Mtx arg1) +{ + if (lbl_1_bss_98.unk28) { + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + GXCopyTex(lbl_1_bss_98.unk28, 0); + } +} + +void fn_1_510C(s32 arg0, s16 arg1, s16 arg2) +{ + s16 sp12; + s16 sp10; + s16 spE; + s16 spC; + s16 spA; + s16 sp8; + M427DllMapStruct4 *var_r31; + M427DllMapSubstruct5 *var_r30; + s16 var_r29; + ModelData *temp_r28; + s16 var_r27; + M427DllMapSubstruct5 *var_r26; + M427DllMapSubstruct5 *var_r23; + + var_r31 = &lbl_1_bss_98; + var_r29 = Hu3DHookFuncCreate(fn_1_618C); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 5); + temp_r28 = &Hu3DData[var_r29]; + var_r29 = Hu3DHookFuncCreate(fn_1_48EC); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 0); + var_r29 = Hu3DHookFuncCreate(fn_1_4D7C); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 2); + var_r29 = Hu3DHookFuncCreate(fn_1_50A0); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 4); + var_r31->unk38 = var_r31->unk3C = 0.0f; + var_r31->unk34 = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0); + var_r31->unk30 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk34, temp_r28->unk_48); + var_r31->unk2C = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0); + var_r31->unk28 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk2C, temp_r28->unk_48); + var_r31->unk16 = arg1 + 1; + var_r31->unk18 = arg2 + 1; + var_r31->unk14 = var_r31->unk16 * var_r31->unk18; + var_r31->unk4 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk8 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec2f), temp_r28->unk_48); + var_r31->unkC = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk10 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg2 * (arg1 * sizeof(M427DllMapSubstruct5)), temp_r28->unk_48); + var_r30 = var_r31->unk1C; + var_r23 = var_r26 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48); + DCFlushRange(var_r26, 0x20000); + GXBeginDisplayList(var_r23, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, (arg1 * arg2 * 4)); + + for (var_r29 = 0; var_r29 < arg2; var_r29++) { + for (var_r27 = 0; var_r27 < arg1; var_r30++, var_r27++) { + var_r30->unk0 = var_r27 + var_r29 * var_r31->unk16; + var_r30->unk2 = (var_r29 * var_r31->unk16) + var_r27 + 1; + var_r30->unk4 = ((var_r29 + 1) * var_r31->unk16) + var_r27 + 1; + var_r30->unk6 = var_r27 + ((var_r29 + 1) * var_r31->unk16); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk6); + GXPosition1x16(var_r30->unk6); + GXPosition1x16(var_r30->unk6); + fn_1_C2C8(&var_r31->unk4[var_r30->unk0], &var_r31->unk4[var_r30->unk2], &var_r31->unk4[var_r30->unk4], &var_r30->unk8); + } + } + var_r31->unk24 = GXEndDisplayList(); + var_r31->unk20 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk24, temp_r28->unk_48); + memcpy(var_r31->unk20, var_r26, var_r31->unk24); + DCFlushRange(var_r31->unk20, var_r31->unk24); + HuMemDirectFree(var_r26); + fn_1_558C(var_r31); +} + +f32 lbl_1_data_F8 = -1.0f; + +void fn_1_558C(M427DllMapStruct4 *arg0) +{ + Mtx spAC; + Mtx sp7C; + Mtx sp4C; + Vec2f sp44; + Vec2f sp3C; + Vec2f sp34; + Vec2f sp2C; + f32 sp28; + f32 sp24; + f32 sp20; + f32 var_f26; + f32 var_f25; + f32 var_f20; + M427DllMapSubstruct5 *var_r30; + Vec *var_r29; + Vec *var_r28; + s16 var_r27; + M427DllMapStruct5 *var_r26; + Vec2f *var_r25; + s16 var_r24; + CameraData *var_r23; + s16 var_r22; + + var_r23 = &Hu3DCamera[0]; + if (lbl_1_data_F8 == -1.0f) { + lbl_1_bss_94 = 720.0f / arg0->unk16; + lbl_1_data_F8 = 1440.0f / arg0->unk18; + } + if (omPauseChk() == 0) { + arg0->unk40 += 1.0f; + arg0->unk44 += 1.5f; + } + if (arg0->unk40 >= 360.0f) { + arg0->unk40 -= 360.0f; + } + if (arg0->unk44 >= 360.0f) { + arg0->unk44 -= 360.0f; + } + var_r28 = arg0->unk4; + var_r29 = arg0->unkC; + sp3C.x = 2000.0f; + sp3C.y = -2000.0f; + sp44.x = 1000.0f; + sp44.y = -2500.0f; + sp2C.x = sp44.x; + sp2C.y = (sp44.y - sp44.x) / (arg0->unk18 - 1); + var_f25 = arg0->unk44; + + for (var_r27 = 0; var_r27 < arg0->unk18; var_r27++) { + sp34.x = sp3C.x; + sp34.y = (sp3C.y - sp3C.x) / (arg0->unk16 - 1); + var_f26 = arg0->unk40; + + for (var_r24 = 0; var_r24 < arg0->unk16; var_r28++, var_r29++, var_r24++) { + var_r28->x = sp34.x; + var_r28->z = sp2C.x; + sp24 = 5.0 * sind(var_f26) + 10.0 * sind(var_f25); + sp34.x += sp34.y; + var_f26 += lbl_1_bss_94; + if (var_f26 >= 360.0f) { + var_f26 -= 360.0f; + } + var_r28->y = sp24 + fn_1_4570(var_r28); + var_r29->x = var_r29->y = var_r29->z = 0.0f; + } + sp2C.x += sp2C.y; + var_f25 += lbl_1_data_F8; + if (var_f25 >= 360.0f) { + var_f25 -= 360.0f; + } + } + var_r30 = arg0->unk1C; + var_r24 = (arg0->unk16 - 1) * (arg0->unk18 - 1); + + for (var_r27 = 0; var_r27 < var_r24; var_r27++, var_r30++) { + fn_1_C2C8(&arg0->unk4[var_r30->unk0], &arg0->unk4[var_r30->unk2], &arg0->unk4[var_r30->unk4], &var_r30->unk8); + arg0->unkC[var_r30->unk0].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk0].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk0].z += var_r30->unk8.z; + arg0->unkC[var_r30->unk2].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk2].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk2].z += var_r30->unk8.z; + arg0->unkC[var_r30->unk4].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk4].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk4].z += var_r30->unk8.z; + arg0->unkC[var_r30->unk6].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk6].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk6].z += var_r30->unk8.z; + } + + var_r29 = arg0->unkC; + for (var_r27 = 0; var_r27 < arg0->unk14; var_r27++, var_r29++) { + var_f20 = sqrtf((var_r29->x * var_r29->x) + (var_r29->y * var_r29->y) + (var_r29->z * var_r29->z)); + var_r29->x /= var_f20; + var_r29->y /= var_f20; + var_r29->z /= var_f20; + } + var_r28 = arg0->unk4; + var_r25 = arg0->unk8; + C_MTXLookAt(spAC, &var_r23->pos, &var_r23->up, &var_r23->target); + GXGetProjectionv(&sp7C[0][0]); + GXGetViewportv(&sp4C[0][0]); + + for (var_r27 = 0; var_r27 < arg0->unk14; var_r27++, var_r28++, var_r25++) { + GXProject(var_r28->x, var_r28->y, var_r28->z, spAC, &sp7C[0][0], &sp4C[0][0], &sp28, &sp24, &sp20); + var_r25->x = 0.0015625f * sp28; + var_r25->y = 0.0020833f * sp24; + var_r25->x += 0.05f * arg0->unkC[var_r27].x; + var_r25->y += 0.05f * arg0->unkC[var_r27].z; + arg0->unk10[var_r27].r = 0xFF; + arg0->unk10[var_r27].g = 0xFF; + arg0->unk10[var_r27].b = 0xFF; + arg0->unk10[var_r27].a = 0xFF; + } + DCFlushRangeNoSync(arg0->unk4, arg0->unk14 * 0xC); + DCFlushRangeNoSync(arg0->unkC, arg0->unk14 * 0xC); + DCFlushRangeNoSync(arg0->unk8, arg0->unk14 * 8); + DCFlushRangeNoSync(arg0->unk10, arg0->unk14 * 4); + PPCSync(); +} + +void fn_1_618C(ModelData *arg0, Mtx arg1) +{ + Mtx sp64; + Mtx sp34; + GXTexObj sp14; + GXColor spC; + M427DllMapStruct4 *var_r31 = &lbl_1_bss_98; + M427DllMapStruct3Sub *var_r30 = &lbl_1_bss_158.unk334; + + fn_1_558C(var_r31); + GXLoadPosMtxImm(arg1, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk4, 0xC); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk8, 8); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk10, 4); + GXInitTexObj(&sp14, var_r31->unk30, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&sp14, GX_TEXMAP0); + GXInitTexObj(&sp14, var_r31->unk28, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&sp14, GX_TEXMAP1); + HuSprTexLoad(var_r30->unk_00, 0, 2, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTevStages(3); + spC.r = 0; + spC.g = 0x10; + spC.b = 0x1E; + spC.a = 0x4C; + GXSetTevColor(GX_TEVREG2, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_TEXC, GX_CC_C0, GX_CC_A2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG1); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG1); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_C1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C2); + GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP2); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, 1, 0, GX_ITM_0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + MTXScale(sp64, -0.1f, 0.0f, 1.0f); + GXSetIndTexMtx(GX_ITM_0, (f32(*)[3])(sp64), 0); + GXSetNumTexGens(2); + if (omPauseChk() == 0) { + var_r31->unk38 += 0.001f; + var_r31->unk3C += 0.0005f; + } + MTXRotRad(sp64, 0x58, 1.5707964f); + MTXScale(sp34, 0.001f, 0.001f, 0.001f); + MTXConcat(sp64, sp34, sp64); + mtxTransCat(sp64, var_r31->unk38, var_r31->unk3C, 0.0f); + GXLoadTexMtxImm(sp64, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXCallDisplayList(var_r31->unk20, var_r31->unk24); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +s32 lbl_1_data_FC[0xC] = { + 0x3A0000, + 0x3A0001, + 0x3A0002, + 0x3A0003, + 0x3A0004, + 0x3A0005, + 0x3A0006, + 0x3A0007, + 0x3A0008, + 0x3A0009, + 0x3A000A, + 0x3A000B, +}; +s32 lbl_1_data_12C[2] = { 0x3A000C, 0x3A000D }; +s32 lbl_1_data_134[4] = { 0x3A000E, 0x3A000F, 0x3F800000, 0x01000000 }; + +void fn_1_6760(omObjData *object) +{ + s16 sp14[2][0x20]; + s16 sp10[2]; + s16 spC[2]; + s16 sp8[2]; + M427DllMapSubstruct3 *var_r31; + s16 var_r30; + M427DllMapUNKB8 *var_r29; + s16 var_r28; + M427DllMapUNK17E *var_r27; + s16 var_r26; + M427DllMapSubstruct3Sub *var_r25; + M427DllMapStruct3 *var_r24; + u16 var_r23; + + var_r24 = &lbl_1_bss_158; + Hu3DFogSet(3500.0f, 20000.0f, 0, 0, 0); + for (var_r28 = 0, var_r31 = &var_r24->unk4[0]; var_r28 < 2; var_r28++, var_r31++) { + var_r31->unk0 = var_r28; + sp10[var_r28] = 0; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r31->unk178[var_r30] = 0; + } + for (var_r30 = 0; var_r30 < 0xB; var_r30++) { + var_r31->unk2[var_r30] = Hu3DModelCreateFile(lbl_1_data_FC[var_r30]); + var_r31->unk44[var_r30] = -1; + if (var_r30 < 0xA) { + Hu3DModelLayerSet(var_r31->unk2[var_r30], 2); + } + else { + Hu3DModelLayerSet(var_r31->unk2[var_r30], 5); + } + Hu3DModelAmbSet(var_r31->unk2[var_r30], 0.1f, 0.1f, 0.1f); + if (var_r28 == 0) { + Hu3DModelCameraSet(var_r31->unk2[var_r30], 1); + } + else { + Hu3DModelCameraSet(var_r31->unk2[var_r30], 2); + } + sp14[var_r28][sp10[var_r28]++] = var_r31->unk2[var_r30]; + } + var_r30 = Hu3DHookFuncCreate(fn_1_C154); + var_r31->unk1E = var_r30; + Hu3DModelLayerSet(var_r30, 4); + if (var_r28 == 0) { + Hu3DModelCameraSet(var_r30, 1); + } + else { + Hu3DModelCameraSet(var_r30, 2); + } + var_r30 = Hu3DHookFuncCreate(fn_1_C200); + var_r31->unk20 = var_r30; + Hu3DModelLayerSet(var_r30, 6); + if (var_r28 == 0) { + Hu3DModelCameraSet(var_r30, 1); + } + else { + Hu3DModelCameraSet(var_r30, 2); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r29 = var_r31->unkB8[var_r30]; + for (var_r26 = 0; var_r26 < 2; var_r26++, var_r29++) { + if ((var_r28 == 0) && (var_r26 == 0)) { + var_r29->unk2 = spC[var_r30] = Hu3DModelCreateFile(lbl_1_data_134[var_r30]); + } + else { + var_r29->unk2 = Hu3DModelLink(spC[var_r30]); + } + Hu3DModelAttrSet(var_r29->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(var_r29->unk2, 2); + Hu3DModelAmbSet(var_r29->unk2, 0.0f, 0.0f, 0.0f); + if (var_r28 == 0) { + Hu3DModelCameraSet(var_r29->unk2, 1); + } + else { + Hu3DModelCameraSet(var_r29->unk2, 2); + } + sp14[var_r28][sp10[var_r28]++] = var_r29->unk2; + var_r29->unk6 = fn_1_95E8(0x3A0018, var_r28, 0, 0.0f, -400.0f, 700.0f, 800.0f, -5.0f); + fn_1_9958(var_r29->unk6, 1); + fn_1_99E4(var_r29->unk6, 0xFF, 0xFF, 0xFF, 0); + var_r29->unk4 = 2 * var_r30 + 4 + var_r26; + fn_1_C528(var_r29->unk2, var_r29->unk4, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0xFF, 0xA0, 0x60); + Hu3DLLightStaticSet(var_r29->unk2, var_r29->unk4, 1); + Hu3DLLightPointSet(var_r29->unk2, var_r29->unk4, 1.0f, 0.6f, 3); + } + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r27 = var_r31->unk17E[var_r30]; + for (var_r26 = 0; var_r26 < 2; var_r26++, var_r27++) { + if ((var_r28 == 0) && (var_r26 == 0)) { + var_r27->unk2 = sp8[var_r30] = Hu3DModelCreateFile(lbl_1_data_12C[var_r30]); + } + else { + var_r27->unk2 = Hu3DModelLink(sp8[var_r30]); + } + Hu3DModelAttrSet(var_r27->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(var_r27->unk2, 2); + Hu3DModelAmbSet(var_r27->unk2, 0.0f, 0.0f, 0.0f); + if (var_r28 == 0) { + Hu3DModelCameraSet(var_r27->unk2, 1); + } + else { + Hu3DModelCameraSet(var_r27->unk2, 2); + } + sp14[var_r28][sp10[var_r28]++] = var_r27->unk2; + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk34[var_r30] = fn_1_C41C(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0xFF, 0xFF, 0xFF); + var_r31->unk24[var_r30] = -1.0f; + } + } + for (var_r28 = 0, var_r31 = var_r24->unk4; var_r28 < 2; var_r28++, var_r31++) { + var_r31->unk5C = Hu3DLLightCreate(var_r31->unk2[0], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0xFA, 0xF0, 0xD2); + Hu3DLLightSpotSet(var_r31->unk2[0], var_r31->unk5C, 37.5f, 4); + Hu3DLLightStaticSet(var_r31->unk2[0], var_r31->unk5C, 1); + var_r31->unk78.x = 0.0f; + var_r31->unk78.y = 0.0f; + var_r31->unk78.z = 0.0f; + var_r31->unk84.x = 0.0f; + var_r31->unk84.y = 0.0f; + var_r31->unk84.z = 0.0f; + var_r31->unk90 = 0.0f; + } + fn_1_93EC(0x3A0016, 0x3A0014, 2000.0f, 6000.0f, 4.0f, 9.0f); + for (var_r28 = 0, var_r31 = var_r24->unk4; var_r28 < 2; var_r28++, var_r31++) { + var_r31->unkB0[0] = fn_1_95E8(0x3A0015, var_r28, 0.0f, 0.0f, -900.0f, 500.0f, 700.0f, -10.0f); + var_r25 = &var_r31->unk94; + var_r25->unk0 = var_r28; + var_r25->unk8 = GXGetTexBufferSize(0x140, 0x1E0, 5, 0, 0); + var_r25->unk4 = HuMemDirectMalloc(HEAP_DATA, var_r25->unk8); + var_r30 = Hu3DHookFuncCreate(fn_1_A148); + var_r31->unk1C = var_r30; + Hu3DModelCameraSet(var_r30, var_r28 ? 2 : 1); + Hu3DModelLayerSet(var_r30, 1); + Hu3DData[var_r30].unk_120 = var_r25; + var_r31->unk1A = fn_1_A1F4(0x3A0013, 0xA, 0x1E, var_r28, 6000.0f, lbl_1_bss_554, lbl_1_bss_558); + fn_1_C528(var_r31->unk1A, 1, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0xC8, 0xF0, 0xA0); + Hu3DLLightStaticSet(var_r31->unk1A, 1, 1); + Hu3DLLightPointSet(var_r31->unk1A, 1, 125.0f, 0.5f, 3); + fn_1_C528(var_r31->unk1A, 2, 0.0f, -500.0f, -23500.0f, 0.0f, 0.0f, 0.0f, 0xFA, 0xF0, 0xD2); + Hu3DLLightStaticSet(var_r31->unk1A, 2, 1); + Hu3DLLightPointSet(var_r31->unk1A, 2, 800.0f, 0.5f, 3); + sp14[var_r28][sp10[var_r28]++] = var_r31->unk1A; + fn_1_9318(sp14[var_r28], sp10[var_r28]); + } + object->func = fn_1_72E4; +} + +void fn_1_72E4(omObjData *object) +{ + float var_f31; + M427DllMapStruct2 *var_r31; + s16 var_r30; + + if (fn_1_1788() == 7) { + object->func = fn_1_3E58; + } + fn_1_73BC(); + fn_1_7C34(); + fn_1_7F38(); + fn_1_8F90(object); + fn_1_9240(); + for (var_r31 = lbl_1_bss_F8, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk0 != -1) { + var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk2); + if (Hu3DMotionTimeGet(var_r31->unk2) >= var_f31) { + var_r31->unk0 = -1; + Hu3DModelAttrSet(var_r31->unk2, HU3D_ATTR_DISPOFF); + } + } + } +} + +void fn_1_73BC(void) +{ + float var_f31; + M427DllMapSubstruct3 *var_r31; + M427DllMapSubstruct6 *var_r30; + s16 var_r29; + ModelData *var_r28; + s16 var_r27; + + for (var_r27 = 0, var_r31 = lbl_1_bss_158.unk4; var_r27 < 2; var_r27++, var_r31++) { + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + var_r28 = &Hu3DData[var_r31->unk2[var_r29]]; + var_r30 = fn_1_DC0C(lbl_1_bss_E8[var_r31->unk0], var_r31->unk3C[var_r31->unk44[var_r29]]); + var_f31 = -2000.0f * var_r29; + if (((var_r31->unk84.z - 25000.0f) < var_f31) && ((3000.0f + var_r31->unk84.z) > var_f31)) { + if (var_r31->unk44[var_r29] == -1) { + fn_1_794C(var_r31, var_r29); + var_r28->attr &= 0xFFFFFFFE; + } + else { + if (var_r30) { + var_r30->unk_24 += 5.0f; + if (var_r30->unk_24 >= 360.0f) { + var_r30->unk_24 -= 360.0f; + } + var_r30->unk_48.x = var_r30->unk_48.y = var_r30->unk_48.z = 1.0 + (0.05000000074505806 * sind(var_r30->unk_24)); + } + var_r31->unk24[var_r31->unk44[var_r29]] += 5.0f; + if (var_r31->unk24[var_r31->unk44[var_r29]] >= 360.0f) { + var_r31->unk24[var_r31->unk44[var_r29]] -= 360.0f; + } + var_f31 = 50.0 * sind(var_r31->unk24[var_r31->unk44[var_r29]]); + var_f31 = var_f31; + Hu3DLLightPointSet(var_r31->unk2[var_r29], 1, 400.0f + var_f31, 0.5f, 3); + if (var_r29 == 0) { + var_r30 = fn_1_DC0C(lbl_1_bss_E8[var_r31->unk0], var_r31->unk5A); + if (var_r30->unk_24 >= 360.0f) { + var_r30->unk_24 -= 360.0f; + } + var_r30->unk_48.x = var_r30->unk_48.y = var_r30->unk_48.z = 1.0 + (0.05000000074505806 * sind(var_r30->unk_24)); + var_r31->unk24[1] += 5.0f; + if (var_r31->unk24[1] >= 360.0f) { + var_r31->unk24[1] -= 360.0f; + } + var_f31 = 50.0 * sind(var_r31->unk24[1]); + var_f31 = var_f31; + Hu3DLLightPointSet(var_r31->unk2[var_r29], 2, 400.0f + var_f31, 0.5f, 3); + } + } + } + else { + if (var_r31->unk44[var_r29] != -1) { + if (var_r30) { + var_r30->unk_62 = 0; + } + var_r28->unk_38[1] = -1; + var_r31->unk24[var_r31->unk44[var_r29]] = -1.0f; + var_r31->unk44[var_r29] = -1; + if (var_r29 == 0) { + var_r30 = fn_1_DC0C(lbl_1_bss_E8[var_r31->unk0], var_r31->unk5A); + var_r30->unk_62 = 0; + var_r28->unk_38[2] = -1; + var_r31->unk24[1] = -1.0f; + } + } + var_r28->attr |= 1; + } + } + } +} + +Vec lbl_1_data_144[0xC] = { + { -670.0f, 400.0f, 1750.0f }, + { 930.0f, 400.0f, -1000.0f }, + { -930.0f, 400.0f, -3000.0f }, + { 230.0f, 400.0f, -5000.0f }, + { -1630.0f, 300.0f, -7000.0f }, + { 530.0f, 100.0f, -9000.0f }, + { -530.0f, 100.0f, -11000.0f }, + { 1630.0f, 100.0f, -13000.0f }, + { -230.0f, 0.0f, -15000.0f }, + { 930.0f, -200.0f, -17000.0f }, + { -930.0f, -200.0f, -19000.0f }, + { 930.0f, -200.0f, -21000.0f }, +}; + +void fn_1_794C(M427DllMapSubstruct3 *arg0, s16 arg1) +{ + Vec sp14; + s16 var_r30; + ModelData *var_r28; + + var_r28 = &Hu3DData[arg0->unk2[arg1]]; + { + Vec sp8 = { 0.0f, 0.0f, 0.0f }; + if (arg1 != 0xA) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (arg0->unk24[var_r30] == -1.0f) { + break; + } + } + if (var_r30 != 4) { + var_r28->unk_38[1] = arg0->unk34[var_r30]; + arg0->unk24[var_r30] = 0.0f; + arg0->unk44[arg1] = var_r30; + if (var_r28->unk_38[1] != -1) { + sp14.x = lbl_1_data_144[arg1 + 1].x; + sp14.y = lbl_1_data_144[arg1 + 1].y; + sp14.z = lbl_1_data_144[arg1 + 1].z; + Hu3DLLightPointSet(arg0->unk2[arg1], 1, 400.0f, 0.5f, 3); + Hu3DLLightPosSetV(arg0->unk2[arg1], 1, &sp14, &sp8); + } + arg0->unk3C[var_r30] = fn_1_D430(sp14.x, sp14.y, sp14.z, lbl_1_bss_E8[arg0->unk0]); + if (arg1 == 0) { + var_r30 = 1; + var_r28->unk_38[2] = arg0->unk34[var_r30]; + arg0->unk24[var_r30] = 0.0f; + sp14.x = lbl_1_data_144[0].x; + sp14.y = lbl_1_data_144[0].y; + sp14.z = lbl_1_data_144[0].z; + Hu3DLLightPointSet(arg0->unk2[0], 2, 400.0f, 0.5f, 3); + Hu3DLLightPosSetV(arg0->unk2[0], 2, &sp14, &sp8); + arg0->unk5A = fn_1_D430(sp14.x, sp14.y, sp14.z, lbl_1_bss_E8[arg0->unk0]); + } + } + } + } +} + +float lbl_1_data_1D4[2] = { 50.0f, 80.0f }; + +void fn_1_7C34(void) +{ + Vec sp14; + M427DllMapSubstruct3 *var_r31; + ModelData *var_r30; + s16 var_r29; + s16 var_r28; + M427DllMapUNK17E *var_r27; + M427DllMapSubstruct *var_r26; + s16 var_r25; + + for (var_r26 = lbl_1_bss_158.unk3A0, var_r29 = 0; var_r29 < 5; var_r29++, var_r26++) { + for (var_r28 = 0, var_r31 = lbl_1_bss_158.unk4; var_r28 < 2; var_r28++, var_r31++) { + if ((var_r31->unk18E[var_r29] == 0) && ((var_r31->unk84.z - 7000.0f) < var_r26->unk4.z) + && ((1000.0f + var_r31->unk84.z) > var_r26->unk4.z)) { + fn_1_7E60(var_r29, var_r31); + } + } + } + for (var_r29 = 0, var_r31 = lbl_1_bss_158.unk4; var_r29 < 2; var_r29++, var_r31++) { + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r27 = var_r31->unk17E[var_r28]; + for (var_r25 = 0; var_r25 < 2; var_r25++, var_r27++) { + var_r30 = &Hu3DData[var_r27->unk2]; + if ((var_r30->attr & 1) == 0) { + if (((var_r31->unk84.z - 7000.0f) > var_r30->pos.z) || ((1000.0f + var_r31->unk84.z) < var_r30->pos.z)) { + var_r30->attr |= 1; + var_r31->unk18E[var_r27->unk0] = 0; + } + else { + sp14.x = var_r30->pos.x; + sp14.z = var_r30->pos.z; + fn_1_15FD0(sp14, lbl_1_data_1D4[var_r28], 0, 1, var_r31->unk0); + } + } + } + } + } +} + +void fn_1_7E60(s16 arg0, M427DllMapSubstruct3 *arg1) +{ + M427DllMapUNK17E *var_r31; + M427DllMapSubstruct *var_r30; + s16 var_r29; + ModelData *var_r28; + + var_r30 = &lbl_1_bss_158.unk3A0[arg0]; + var_r31 = arg1->unk17E[var_r30->unk0]; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r28 = &Hu3DData[var_r31->unk2]; + if ((var_r28->attr & 1) != 0) { + Hu3DModelAttrReset(var_r31->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(var_r31->unk2, var_r30->unk4.x, var_r30->unk4.y, var_r30->unk4.z); + var_r31->unk0 = arg0; + arg1->unk18E[arg0] = 1; + return; + } + } +} + +void fn_1_7F38(void) +{ + Vec sp14; + float var_f31; + M427DllMapUNKB8 *var_r31; + M427DllMapSubstruct3 *var_r30; + ModelData *var_r29; + s16 var_r28; + s16 var_r27; + M427DllMapSubstruct2 *var_r26; + s16 var_r25; + s32 var_r24; + s32 var_r23; + + for (var_r26 = lbl_1_bss_158.unk34C, var_r27 = 0; var_r27 < 3; var_r27++, var_r26++) { + for (var_r28 = 0, var_r30 = lbl_1_bss_158.unk4; var_r28 < 2; var_r28++, var_r30++) { + if ((var_r30->unk178[var_r27] == 0) && ((var_r30->unk84.z - 7000.0f) < var_r26->unk4.z) + && ((1000.0f + var_r30->unk84.z) > var_r26->unk4.z)) { + fn_1_85D4(var_r27, var_r30); + } + } + } + for (var_r27 = 0, var_r30 = lbl_1_bss_158.unk4; var_r27 < 2; var_r27++, var_r30++) { + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r31 = var_r30->unkB8[var_r28]; + for (var_r25 = 0; var_r25 < 2; var_r25++, var_r31++) { + var_r29 = &Hu3DData[var_r31->unk2]; + if ((var_r29->attr & 1) == 0) { + if (((var_r30->unk84.z - 7000.0f) > var_r29->pos.z) || ((1000.0f + var_r30->unk84.z) < var_r29->pos.z)) { + if (var_r31->unk8 == 0) { + fn_1_8E1C(1, var_r30, var_r31); + fn_1_9958(var_r31->unk6, 1); + var_r29->attr |= 1; + var_r31->unk8 = 0x63; + var_r30->unk178[var_r31->unk0] = 0; + } + else if (var_r31->unk8 != 2) { + var_r31->unkA = 0; + var_r31->unk8 = 2; + } + } + switch (var_r31->unk8) { + case 0: + if (++var_r31->unkA > var_r31->unk18) { + var_r31->unkA = 0; + var_r31->unkC = 0.0f; + var_r31->unk20 = ((rand8() << 8) | rand8()) % 361; + var_r31->unk24 = ((rand8() << 8) | rand8()) % 361; + var_r31->unk28 = 1.0f; + var_r31->unk2C = 0.0f; + var_r31->unk8++; + } + break; + case 1: + if (++var_r31->unkA > var_r31->unk1E) { + var_r31->unkA = 0; + var_r31->unk8++; + if (fn_1_1788() <= 4) { + if (var_r27 == 0) { + var_r24 = HuAudFXPlay(0x65A); + } + else { + var_r24 = HuAudFXPlay(0x65B); + } + var_r23 = var_r27 * 4 + var_r28 * 2 + var_r25; + lbl_1_bss_0[var_r23].unk0 = var_r24; + lbl_1_bss_0[var_r23].unk4 = 0x78; + } + } + var_r31->unk_14 = 0.1f; + fn_1_8768(var_r30, var_r31, var_r28, 0.2f, var_r31->unk_14); + break; + case 2: + if (++var_r31->unkA > var_r31->unk1A) { + var_r31->unkA = 0; + var_r31->unk8++; + } + if (var_r31->unk_14 < 1.0f) { + var_r31->unk_14 += 0.05f; + } + if (var_r31->unk_14 > 1.0f) { + var_r31->unk_14 = 1.0f; + } + var_r31->unk_10 += 40.0f; + var_r31->unkC += 0.05f; + fn_1_8768(var_r30, var_r31, var_r28, 1.0f, var_r31->unk_14); + break; + case 3: + var_r31->unkA++; + var_f31 = 1.0f - ((float)var_r31->unkA / var_r31->unk1C); + if (var_r31->unkA > var_r31->unk1C) { + var_r31->unkA = 0; + var_f31 = 0.0f; + var_r31->unk8 = 0; + } + var_r31->unk_10 = 400.0 * sind((90.0f * var_f31)); + var_r31->unkC = 1.2f * var_f31; + var_r31->unk_14 = var_f31; + fn_1_8768(var_r30, var_r31, var_r28, var_f31, var_r31->unk_14); + break; + } + sp14.x = var_r29->pos.x; + sp14.z = var_r29->pos.z; + fn_1_15FD0(sp14, 50.0f, 0, 1, var_r30->unk0); + } + } + } + } +} + +void fn_1_85D4(s16 arg0, M427DllMapSubstruct3 *arg1) +{ + float var_f31; + M427DllMapUNKB8 *var_r31; + M427DllMapSubstruct2 *var_r30; + s16 var_r29; + ModelData *var_r27; + + var_r30 = &lbl_1_bss_158.unk34C[arg0]; + var_r31 = arg1->unkB8[var_r30->unk0]; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r27 = &Hu3DData[var_r31->unk2]; + if ((var_r27->attr & 1) != 0) { + Hu3DModelAttrReset(var_r31->unk2, HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(var_r31->unk2, var_r30->unk4.x, var_r30->unk4.y, var_r30->unk4.z); + var_r31->unk8 = 0; + var_r31->unkA = 0; + var_r31->unk18 = var_r30->unk14[0]; + var_r31->unk1A = var_r30->unk14[1]; + var_r31->unk1C = var_r30->unk14[2]; + var_r31->unk1E = var_r30->unk14[3]; + var_r31->unk0 = arg0; + arg1->unk178[arg0] = 1; + fn_1_9A2C(var_r31->unk6, var_r30->unk4.x, var_r30->unk4.y, var_r30->unk4.z); + if (var_r30->unk0 == 0) { + var_f31 = 90.0f; + } + else { + var_f31 = 270.0f; + } + fn_1_9B14(var_r31->unk6, 0.0f, var_f31, 0.0f); + fn_1_999C(var_r31->unk6, 1); + fn_1_8E1C(0, arg1, var_r31); + return; + } + } +} + +float lbl_1_data_1DC[2] = { -1.0f, 1.0f }; +float lbl_1_data_1E4[2] = { 270.0f, 90.0f }; + +void fn_1_8768(M427DllMapSubstruct3 *var_r28, M427DllMapUNKB8 *var_r31, s16 var_r27, float var_f28, float var_f29) +{ + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + float var_f31; + float var_f30; + ModelData *var_r30; + M427DllMapStruct *var_r29; + + var_r30 = &Hu3DData[var_r31->unk2]; + var_f31 = var_f28 * var_r31->unk28; + sp50.x = var_r30->pos.x + (60.0f * lbl_1_data_1DC[var_r27]); + sp50.y = 80.0f + var_r30->pos.y; + sp50.z = var_r30->pos.z; + if (var_r31->unk8 == 1) { + fn_1_C76C(0, sp50.x, sp50.y, sp50.z, 1, lbl_1_data_1E4[var_r27], var_f31, lbl_1_bss_EC[var_r28->unk0]); + return; + } + fn_1_C76C(1, sp50.x, sp50.y, sp50.z, 1, lbl_1_data_1E4[var_r27], var_f31, lbl_1_bss_EC[var_r28->unk0]); + if (var_r31->unk_10 > (400.0f * var_r31->unk28)) { + var_r31->unk_10 = 400.0f * var_r31->unk28; + } + else if (var_r31->unk_10 < 1.0f) { + var_r31->unk_10 = 1.0f; + } + var_r31->unk2C += 30.0f; + if (var_r31->unk2C >= 360.0f) { + var_r31->unk2C -= 360.0f; + } + sp50.x = var_r30->pos.x + (240.0f * lbl_1_data_1DC[var_r27]); + sp50.y = 100.0f + var_r30->pos.y; + sp50.z = var_r30->pos.z; + sp44.x = sp44.y = sp44.z = 0.0f; + var_f30 = var_r31->unk_10 + (var_f28 * (50.0 * sind(var_r31->unk2C))); + Hu3DLLightPointSet(var_r31->unk2, var_r31->unk4, var_f30, 0.5f, 3); + Hu3DLLightPosSetV(var_r31->unk2, var_r31->unk4, &sp50, &sp44); + var_r29 = &lbl_1_bss_F0[var_r31->unk6]; + var_r29->unk90 -= 0.0005f; + var_r29->unk8C += 0.005f; + var_r29->unk94 += 0.001f; + if (var_r31->unkC > 1.0f) { + var_r31->unkC = 1.0f; + } + else if (var_r31->unkC < 0.0f) { + var_r31->unkC = 0.0f; + } + fn_1_99E4(var_r31->unk6, 0xFF, 0xA0, 0x60, 255.0f * var_r31->unkC); + var_r31->unk20 += 2.0f; + var_r31->unk24 += (((rand8() << 8) | rand8()) % 5) + 4; + if (var_r31->unk20 >= 360.0f) { + var_r31->unk20 -= 360.0f; + } + if (var_r31->unk24 >= 360.0f) { + var_r31->unk24 -= 360.0f; + } + sp38.x = 1.0 + (0.009999999776482582 * sind(var_r31->unk24)); + sp38.z = var_r31->unk28 + (0.009999999776482582 * sind(var_r31->unk20)); + fn_1_9AA0(var_r31->unk6, sp38.x, 1.0f, sp38.z); + if (var_r27 == 0) { + sp2C.x = var_r30->pos.x - (700.0f * var_f31 * var_f29); + sp20.x = var_r30->pos.x - 50.0f; + } + else { + sp2C.x = 50.0f + var_r30->pos.x; + sp20.x = var_r30->pos.x + (700.0f * var_f31 * var_f29); + } + sp2C.z = var_r30->pos.z - 30.0f; + sp20.z = 30.0f + var_r30->pos.z; + fn_1_15F10(sp2C, sp20, 1, 1, var_r28->unk0); +} + +void fn_1_8E1C(u8 arg0, M427DllMapSubstruct3 *arg1, M427DllMapUNKB8 *arg2) +{ + s32 spC[8]; + s16 var_r30; + ModelData *var_r29; + M427DllMapSubstruct2 *var_r27; + s16 var_r26; + ModelData *var_r25; + s16 var_r24; + + var_r27 = &lbl_1_bss_158.unk34C[arg2->unk0]; + var_r25 = &Hu3DData[arg2->unk2]; + if (arg0 == 0) { + var_r26 = var_r25->unk_38[arg2->unk4]; + } + else { + var_r26 = -1; + } + var_r24 = fn_1_10FE8(arg1->unk0, spC); + for (var_r30 = 0; var_r30 < var_r24; var_r30++) { + var_r29 = &Hu3DData[spC[var_r30]]; + var_r29->unk_38[arg2->unk4] = var_r26; + } + var_r29 = &Hu3DData[arg1->unk1A]; + var_r29->unk_38[arg2->unk4] = var_r26; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r27->unk10[var_r30] != -1) { + var_r29 = &Hu3DData[arg1->unk2[var_r27->unk10[var_r30]]]; + var_r29->unk_38[arg2->unk4] = var_r26; + } + } +} + +void fn_1_8F90(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + M427DllMapSubstruct3 *var_r31; + s16 var_r30; + M427DllMapStruct3 *var_r29; + + var_r29 = &lbl_1_bss_158; + for (var_r30 = 0, var_r31 = var_r29->unk4; var_r30 < 2; var_r30++, var_r31++) { + var_f31 = sind(var_r31->unk90); + var_f30 = cosd(var_r31->unk90); + var_r31->unk_60.x = var_r31->unk84.x - (25.0f * var_f31); + var_r31->unk_60.y = 100.0f + var_r31->unk84.y; + var_r31->unk_60.z = var_r31->unk84.z - (25.0f * var_f30); + var_r31->unk_6C.x = var_r31->unk_60.x - (50.0f * var_f31); + var_r31->unk_6C.y = var_r31->unk_60.y; + var_r31->unk_6C.z = var_r31->unk_60.z - (50.0f * var_f30); + Hu3DLLightPosSet(var_r31->unk2[0], var_r31->unk5C, var_r31->unk_60.x, var_r31->unk_60.y, var_r31->unk_60.z, 0.0f, 0.0f, 0.0f); + Hu3DLLightPosAimSetV(var_r31->unk2[0], var_r31->unk5C, &var_r31->unk_60, &var_r31->unk_6C); + fn_1_9A2C(var_r31->unkB0[0], var_r31->unk84.x, var_r31->unk84.y, var_r31->unk84.z); + fn_1_9B14(var_r31->unkB0[0], 0.0f, var_r31->unk90, 0.0f); + sp14.x = var_r31->unk84.x; + sp14.y = 100.0f + var_r31->unk84.y; + sp14.z = 50.0f + var_r31->unk84.z; + sp8.x = sp8.y = sp8.z = 0.0f; + Hu3DLLightPosSetV(var_r31->unk1A, 1, &sp14, &sp8); + } +} + +void fn_1_91E0(s16 arg0, float arg8, float arg9, float argA, float argB) +{ + M427DllMapSubstruct3 *var_r31; + + var_r31 = &lbl_1_bss_158.unk4[arg0]; + var_r31->unk84.x = arg8; + var_r31->unk84.y = arg9; + var_r31->unk84.z = argA; + var_r31->unk90 = argB; + if (var_r31->unkAC) { + var_r31->unkAC->unk_0C = 1500.0f + argA; + } +} + +void fn_1_9240(void) +{ + M427DllMapStruct *var_r31; + M427DllMapSubstruct3 *var_r30; + s16 var_r29; + s16 var_r28; + + for (var_r30 = lbl_1_bss_158.unk4, var_r28 = 0; var_r28 < 2; var_r28++, var_r30++) { + for (var_r29 = 0; var_r29 < 1; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r30->unkB0[var_r29]]; + var_r31->unk90 -= 0.0005f; + var_r31->unk8C += 0.0005f; + var_r31->unk94 += 0.0005f; + } + } +} + +void fn_1_9318(s16 *arg0, s16 arg1) +{ + s16 var_r31; + ModelData *var_r30; + ModelData *var_r29; + s16 var_r28; + + var_r30 = &Hu3DData[*arg0]; + for (var_r28 = 1; var_r28 < arg1; var_r28++) { + var_r29 = &Hu3DData[arg0[var_r28]]; + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if (var_r30->unk_38[var_r31] != -1) { + var_r29->unk_38[var_r31] = var_r30->unk_38[var_r31]; + } + } + var_r29->attr |= 0x1000; + } +} + +void fn_1_93EC(s32 sp8, s32 spC, float var_f30, float var_f31, float sp10, float sp14) +{ + M427DllMapStruct3Sub *var_r31; + + var_r31 = &lbl_1_bss_158.unk334; + var_r31->unk_00 = HuSprAnimRead(HuDataReadNum(sp8, MEMORY_DEFAULT_NUM)); + var_r31->unk_04 = HuSprAnimRead(HuDataReadNum(spC, MEMORY_DEFAULT_NUM)); + var_r31->unk_08 = 0.5f * var_f30; + var_r31->unk_0C = 0.5f * var_f31; + var_r31->unk_10 = sp10 / var_f30; + var_r31->unk_14 = sp14 / var_f31; +} + +void fn_1_94BC(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, float arg8, Vec2f *arg4, s16 arg5) +{ + Mtx sp58; + Mtx sp28; + Vec sp1C; + Vec sp10; + M427DllMapStruct3Sub *var_r31; + s16 var_r28; + + var_r31 = &lbl_1_bss_158.unk334; + for (var_r28 = 0; var_r28 < arg5; var_r28++, arg2++, arg4++) { + MTXScale(sp58, arg3->x, arg3->y, arg3->z); + MTXRotRad(sp28, 0x59, MTXDegToRad(arg8)); + MTXConcat(sp58, sp28, sp58); + MTXMultVec(sp58, arg2, &sp1C); + sp10.x = var_r31->unk_08 + ((sp1C.x + arg1->x) - arg0->x); + sp10.z = var_r31->unk_0C + ((sp1C.z + arg1->z) - arg0->z); + arg4->x = sp10.x * var_r31->unk_10; + arg4->y = sp10.z * var_r31->unk_14; + } +} + +s16 fn_1_95E8(s32 arg0, s16 arg1, s16 arg2, float arg8, float arg9, float argA, float argB, float argC) +{ + M427DllMapStruct *var_r31; + s16 var_r30; + s16 var_r29; + void *var_r28; + void *var_r26; + + for (var_r31 = lbl_1_bss_F0, var_r29 = 0; var_r29 < 0x10; var_r29++, var_r31++) { + if (var_r31->unk2 == -1) { + break; + } + } + if (var_r29 == 0x10) { + return -1; + } + var_r31->unk4 = Hu3DHookFuncCreate(fn_1_9B88); + Hu3DModelCameraSet(var_r31->unk4, arg1 ? 2 : 1); + Hu3DModelLayerSet(var_r31->unk4, arg2); + Hu3DData[var_r31->unk4].unk_120 = var_r31; + Hu3DModelPosSet(var_r31->unk4, 0.0f, 0.0f, -2000.0f); + var_r31->unk0 = 0; + var_r31->unk2 = arg1; + var_r31->unk7C.r = var_r31->unk7C.g = var_r31->unk7C.b = var_r31->unk7C.a = 0xFF; + var_r31->unk88 = var_r31->unk8C = 0.0f; + var_r31->unk90 = var_r31->unk94 = 0.0f; + var_r31->unk8 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + fn_1_C2AC(&var_r31->unkC, arg8 - argA, argC, arg9 - argB); + fn_1_C2BC(&var_r31->unk3C, 0.0f, 0.0f); + fn_1_C2AC(&var_r31->unk18, arg8 + argA, argC, arg9 - argB); + fn_1_C2BC(&var_r31->unk44, 1.0f, 0.0f); + fn_1_C2AC(&var_r31->unk24, arg8 + argA, argC, arg9 + argB); + fn_1_C2BC(&var_r31->unk4C, 1.0f, 1.0f); + fn_1_C2AC(&var_r31->unk30, arg8 - argA, argC, arg9 + argB); + fn_1_C2BC(&var_r31->unk54, 0.0f, 1.0f); + DCFlushRangeNoSync(&var_r31->unkC, 0x30); + DCFlushRangeNoSync(&var_r31->unk3C, 0x20); + PPCSync(); + var_r28 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1000, MEMORY_DEFAULT_NUM); + var_r26 = var_r28; + DCFlushRange(var_r28, 0x1000); + GXBeginDisplayList(var_r26, 0x1000); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + GXPosition1x16(var_r30); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30); + } + var_r31->unk84 = GXEndDisplayList(); + var_r31->unk80 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk84, MEMORY_DEFAULT_NUM); + memcpy(var_r31->unk80, var_r28, var_r31->unk84); + DCFlushRange(var_r31->unk80, var_r31->unk84); + HuMemDirectFree(var_r28); + return var_r29; +} + +void fn_1_9958(s16 arg0, u8 arg1) +{ + M427DllMapStruct *var_r31; + + if (arg0 != -1) { + var_r31 = &lbl_1_bss_F0[arg0]; + var_r31->unk0 |= arg1; + } +} + +void fn_1_999C(s16 arg0, u8 arg1) +{ + M427DllMapStruct *var_r31; + + if (arg0 != -1) { + var_r31 = &lbl_1_bss_F0[arg0]; + var_r31->unk0 &= ~arg1; + } +} + +void fn_1_99E4(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) +{ + M427DllMapStruct *var_r31; + + if (arg0 != -1) { + var_r31 = &lbl_1_bss_F0[arg0]; + var_r31->unk7C.r = arg1; + var_r31->unk7C.g = arg2; + var_r31->unk7C.b = arg3; + var_r31->unk7C.a = arg4; + } +} + +void fn_1_9A2C(s16 arg0, float arg8, float arg9, float argA) +{ + M427DllMapStruct *var_r31; + + if (arg0 != -1) { + var_r31 = &lbl_1_bss_F0[arg0]; + Hu3DModelPosSet(var_r31->unk4, arg8, arg9, argA); + } +} + +void fn_1_9AA0(s16 arg0, float arg8, float arg9, float argA) +{ + M427DllMapStruct *var_r31; + + if (arg0 != -1) { + var_r31 = &lbl_1_bss_F0[arg0]; + Hu3DModelScaleSet(var_r31->unk4, arg8, arg9, argA); + } +} + +void fn_1_9B14(s16 arg0, float arg8, float arg9, float argA) +{ + M427DllMapStruct *var_r31; + + if (arg0 != -1) { + var_r31 = &lbl_1_bss_F0[arg0]; + Hu3DModelRotSet(var_r31->unk4, arg8, arg9, argA); + } +} + +void fn_1_9B88(ModelData *model, Mtx matrix) +{ + Mtx sp88; + M427DllMapStruct *var_r31; + M427DllMapSubstruct3 *var_r27; + M427DllMapStruct3Sub *var_r26; + + var_r31 = model->unk_120; + var_r27 = &lbl_1_bss_158.unk4[var_r31->unk2]; + var_r26 = &lbl_1_bss_158.unk334; + if ((var_r31->unk0 & 1) == 0) { + fn_1_94BC(&var_r27->unk78, &model->pos, &var_r31->unkC, &model->scale, model->rot.y, var_r31->unk5C, 4); + DCFlushRangeNoSync(var_r31->unk5C, 4 * sizeof(Vec2f)); + PPCSync(); + GXLoadPosMtxImm(matrix, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, &var_r31->unkC, sizeof(Vec)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, &var_r31->unk3C, sizeof(Vec2f)); + GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX1, var_r31->unk5C, sizeof(Vec2f)); + HuSprTexLoad(var_r31->unk8, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(var_r26->unk_04, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(var_r26->unk_00, 0, 2, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(3); + MTXScale(sp88, 1.0f, 1.0f, 1.0f); + mtxTransCat(sp88, var_r31->unk88, var_r31->unk90, 0.0f); + GXLoadTexMtxImm(sp88, 0x1E, GX_MTX2x4); + MTXScale(sp88, 1.0f, 1.0f, 1.0f); + mtxTransCat(sp88, var_r31->unk8C, var_r31->unk94, 0.0f); + GXLoadTexMtxImm(sp88, 0x21, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, 0, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, 0x1E, 0, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, 0x21, 0, 0x7D); + GXSetNumTevStages(2); + GXSetTevColor(GX_TEVREG1, var_r31->unk7C); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_C1, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_C0, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_A1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetTevIndWarp(0, 0, 1, 0, 1); + MTXScale(sp88, 0.1f, 0.10000000149011612 * -sind(model->rot.y), 1.0f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])sp88, 0); + GXSetNumChans(0); + GXSetZMode(0, GX_LEQUAL, 0); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + GXCallDisplayList(var_r31->unk80, var_r31->unk84); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); + } +} + +void fn_1_A148(ModelData *model, Mtx matrix) +{ + M427DllMapSubstruct3Sub *var_r31; + + var_r31 = model->unk_120; + if (var_r31->unk0 == 0) { + GXSetTexCopySrc(0, 0, 0x140, 0x1E0); + GXSetTexCopyDst(0x140, 0x1E0, GX_TF_RGB5A3, 0); + } + else { + GXSetTexCopySrc(0x140, 0, 0x140, 0x1E0); + GXSetTexCopyDst(0x140, 0x1E0, GX_TF_RGB5A3, 0); + } + GXCopyTex(var_r31->unk4, 1); + DCFlushRange(var_r31->unk4, var_r31->unk8); +} + +s16 fn_1_A1F4(s32 arg0, s16 arg1, s16 arg2, s16 arg3, float arg8, Vec *arg4, Vec *arg5) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M427DllMapStruct6 *var_r31; + M427DllMapSubstruct5 *var_r30; + ModelData *var_r29; + s16 var_r28; + s16 var_r27; + Vec2f *var_r26; + void *var_r25; + M427DllMapStruct3 *var_r22; + u16 var_r21; + s16 var_r19; + void *var_r18; + + var_r22 = &lbl_1_bss_158; + var_r28 = Hu3DHookFuncCreate(fn_1_B3CC); + var_r19 = var_r28; + Hu3DModelCameraSet(var_r28, arg3 ? 2 : 1); + Hu3DModelLayerSet(var_r28, 5); + var_r29 = &Hu3DData[var_r28]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M427DllMapStruct6), var_r29->unk_48); + var_r29->unk_120 = var_r31; + var_r22->unk4[arg3].unkAC = var_r31; + var_r31->unk_00 = arg3; + var_r31->unk_0C = 0.0f; + var_r31->unk_10 = arg8; + var_r31->unk_04 = arg4; + var_r31->unk_08 = arg5; + var_r31->unk_14 = var_r31->unk_18 = 0.0f; + var_r31->unk_1C = var_r31->unk_20 = 0.0f; + var_r31->unk_4C = var_r31->unk_50 = 0.0f; + var_r31->unk_54 = 120.0f; + var_r31->unk_58 = 72.0f; + var_r31->unk_5C = 10.0f; + var_r31->unk_60 = 10.0f; + var_r31->unk_28 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + var_r31->unk_3A = arg1 + 1; + var_r31->unk_3C = arg2 + 1; + var_r31->unk_38 = var_r31->unk_3A * var_r31->unk_3C; + var_r31->unk_2C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_38 * sizeof(Vec), var_r29->unk_48); + var_r26 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_38 * sizeof(Vec2f), var_r29->unk_48); + var_r31->unk_30 = var_r26; + var_r31->unk_34 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_38 * sizeof(Vec), var_r29->unk_48); + var_r30 = HuMemDirectMallocNum(HEAP_DATA, arg2 * (arg1 * sizeof(M427DllMapSubstruct5)), var_r29->unk_48); + var_r31->unk_48 = var_r30; + var_r25 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, var_r29->unk_48); + var_r18 = var_r25; + DCFlushRange(var_r25, 0x20000); + GXBeginDisplayList(var_r18, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg1 * arg2 * 4); + for (var_r28 = 0; var_r28 < arg2; var_r28++) { + for (var_r27 = 0; var_r27 < arg1; var_r27++) { + var_r30->unk0 = var_r27 + (var_r28 * var_r31->unk_3A); + var_r30->unk2 = var_r27 + var_r28 * var_r31->unk_3A + 1; + var_r30->unk4 = var_r27 + ((var_r28 + 1) * var_r31->unk_3A) + 1; + var_r30->unk6 = var_r27 + ((var_r28 + 1) * var_r31->unk_3A); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk6); + GXPosition1x16(var_r30->unk6); + GXPosition1x16(var_r30->unk6); + fn_1_C2C8(&var_r31->unk_2C[var_r30->unk0], &var_r31->unk_2C[var_r30->unk2], &var_r31->unk_2C[var_r30->unk4], &var_r30->unk8); + var_r30++; + } + } + var_r31->unk_44 = GXEndDisplayList(); + var_r31->unk_40 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_44, var_r29->unk_48); + memcpy(var_r31->unk_40, var_r25, var_r31->unk_44); + DCFlushRange(var_r31->unk_40, var_r31->unk_44); + HuMemDirectFree(var_r25); + fn_1_A7F8(var_r31); + var_f29 = 3.0f / (var_r31->unk_3A - 1); + var_f28 = 5.0f / (var_r31->unk_3C - 1); + var_f30 = 0.0f; + for (var_r28 = 0; var_r28 < var_r31->unk_3C; var_r28++) { + var_f31 = 0.0f; + for (var_r27 = 0; var_r27 < var_r31->unk_3A; var_r27++) { + var_r26->x = var_f31; + var_r26->y = var_f30; + var_f31 += var_f29; + var_r26++; + } + var_f30 += var_f28; + } + DCFlushRangeNoSync(var_r31->unk_30, var_r31->unk_38 * 8); + PPCSync(); + return var_r19; +} + +void fn_1_A7F8(M427DllMapStruct6 *var_r31) +{ + Vec sp1C; + float sp14[2]; + float spC[2]; + float var_f29; + float var_f28; + float var_f27; + M427DllMapSubstruct5 *var_r30; + Vec *var_r29; + s16 var_r28; + Vec *var_r27; + s16 var_r26; + s16 var_r25; + + if (omPauseChk() == 0) { + var_r31->unk_4C += 1.0f; + var_r31->unk_50 += 1.5f; + } + if (var_r31->unk_4C >= 360.0f) { + var_r31->unk_4C -= 360.0f; + } + if (var_r31->unk_50 >= 360.0f) { + var_r31->unk_50 -= 360.0f; + } + var_r27 = var_r31->unk_2C; + var_r29 = var_r31->unk_34; + spC[0] = var_r31->unk_0C - var_r31->unk_10; + spC[1] = var_r31->unk_10 / (var_r31->unk_3C - 1); + var_f28 = var_r31->unk_50; + for (var_r28 = 0; var_r28 < var_r31->unk_3C; var_r28++) { + fn_1_B194(var_r31, spC[0], &sp1C); + sp14[0] = sp1C.x; + sp14[1] = (sp1C.y - sp1C.x) / (var_r31->unk_3A - 1); + var_f29 = var_r31->unk_4C; + for (var_r26 = 0; var_r26 < var_r31->unk_3A; var_r26++) { + var_r27->x = sp14[0]; + var_r27->y = sp1C.z + (var_r31->unk_5C * sind(var_f29)) + var_r31->unk_60 * sind(var_f28); + var_r27->z = spC[0]; + sp14[0] += sp14[1]; + var_r27++; + var_r29->x = var_r29->y = var_r29->z = 0.0f; + var_r29++; + var_f29 += var_r31->unk_54; + if (var_f29 >= 360.0f) { + var_f29 -= 360.0f; + } + } + spC[0] += spC[1]; + var_f28 += var_r31->unk_58; + if (var_f28 >= 360.0f) { + var_f28 -= 360.0f; + } + } + var_r30 = var_r31->unk_48; + var_r25 = (var_r31->unk_3A - 1) * (var_r31->unk_3C - 1); + for (var_r28 = 0; var_r28 < var_r25; var_r28++) { + fn_1_C2C8(&var_r31->unk_2C[var_r30->unk0], &var_r31->unk_2C[var_r30->unk2], &var_r31->unk_2C[var_r30->unk4], &var_r30->unk8); + var_r31->unk_34[var_r30->unk0].x += var_r30->unk8.x; + var_r31->unk_34[var_r30->unk0].y += var_r30->unk8.y; + var_r31->unk_34[var_r30->unk0].z += var_r30->unk8.z; + + var_r31->unk_34[var_r30->unk2].x += var_r30->unk8.x; + var_r31->unk_34[var_r30->unk2].y += var_r30->unk8.y; + var_r31->unk_34[var_r30->unk2].z += var_r30->unk8.z; + + var_r31->unk_34[var_r30->unk4].x += var_r30->unk8.x; + var_r31->unk_34[var_r30->unk4].y += var_r30->unk8.y; + var_r31->unk_34[var_r30->unk4].z += var_r30->unk8.z; + + var_r31->unk_34[var_r30->unk6].x += var_r30->unk8.x; + var_r31->unk_34[var_r30->unk6].y += var_r30->unk8.y; + var_r31->unk_34[var_r30->unk6].z += var_r30->unk8.z; + var_r30++; + } + var_r29 = var_r31->unk_34; + for (var_r28 = 0; var_r28 < var_r31->unk_38; var_r28++) { + var_f27 = sqrtf((var_r29->z * var_r29->z) + ((var_r29->x * var_r29->x) + (var_r29->y * var_r29->y))); + var_r29->x /= var_f27; + var_r29->y /= var_f27; + var_r29->z /= var_f27; + var_r29++; + } + DCFlushRangeNoSync(var_r31->unk_2C, var_r31->unk_38 * sizeof(Vec)); + DCFlushRangeNoSync(var_r31->unk_34, var_r31->unk_38 * sizeof(Vec)); + PPCSync(); +} + +s16 lbl_1_data_1EC[2] = { 0, 0 }; + +float fn_1_AE78(s16 arg0, float arg8, float arg9) +{ + float sp8[2]; + float var_f31; + float var_f30; + Vec *var_r31; + s16 var_r30; + M427DllMapSubstruct3 *var_r29; + Vec *var_r28; + s16 var_r27; + s16 var_r26; + + var_r29 = &lbl_1_bss_158.unk4[arg0]; + if (lbl_1_bss_158.unk0 != 0) { + if (lbl_1_bss_158.unk0 == 1) { + lbl_1_data_1EC[arg0] = 0; + lbl_1_bss_158.unk0 = 2; + } + if (!lbl_1_bss_98.unk4) { + return 0.0f; + } + var_r28 = lbl_1_bss_98.unk4; + var_r31 = &lbl_1_bss_98.unk4[lbl_1_data_1EC[arg0]]; + var_r27 = lbl_1_bss_98.unk14; + var_r26 = lbl_1_bss_98.unk16; + for (var_r30 = lbl_1_data_1EC[arg0]; var_r30 < var_r27; var_r30++, var_r31++) { + if (arg9 >= var_r31->z && arg8 >= var_r31->x) { + break; + } + } + if (var_r30 == var_r27) { + return 0.0f; + } + } + else { + if (!var_r29->unkAC) { + return 0.0f; + } + var_r28 = var_r29->unkAC->unk_2C; + var_r31 = &var_r29->unkAC->unk_2C[lbl_1_data_1EC[arg0]]; + var_r27 = var_r29->unkAC->unk_38; + var_r26 = var_r29->unkAC->unk_3A; + for (var_r30 = lbl_1_data_1EC[arg0]; var_r30 < var_r27; var_r30++, var_r31++) { + if (arg9 <= var_r31->z && arg8 <= var_r31->x) { + break; + } + } + if (var_r30 == var_r27) { + return 0.0f; + } + } + sp8[0] = var_r31->x - var_r28[var_r30 - 1].x; + sp8[1] = arg8 - var_r28[var_r30 - 1].x; + var_f30 = sp8[1] / sp8[0]; + var_f31 = var_r31->y - var_r28[var_r30 - 1].y; + var_f31 = var_r28[var_r30 - 1].y + (var_f31 * var_f30); + lbl_1_data_1EC[arg0] = var_r30 - (var_r26 * 2); + return 20.0f + var_f31; +} + +void fn_1_B194(M427DllMapStruct6 *arg0, float arg8, Vec *arg1) +{ + float sp10[2]; + float sp8[2]; + float var_f31; + s16 var_r31; + + for (var_r31 = lbl_1_bss_580; var_r31 != 0;) { + var_r31--; + if (arg0->unk_04[var_r31].z >= arg8) { + if (var_r31 == (lbl_1_bss_580 - 1)) { + arg1->x = arg0->unk_08[var_r31].x; + arg1->y = arg0->unk_04[var_r31].x; + arg1->z = arg0->unk_04[var_r31].y; + } + else { + var_f31 = (arg0->unk_04[var_r31].z - arg8) / (arg0->unk_04[var_r31].z - arg0->unk_04[var_r31 + 1].z); + sp10[0] = arg0->unk_08[var_r31].x - 100.0f; + sp10[1] = arg0->unk_08[var_r31 + 1].x - 100.0f; + sp8[0] = 100.0f + arg0->unk_04[var_r31].x; + sp8[1] = 100.0f + arg0->unk_04[var_r31 + 1].x; + arg1->x = sp10[0] + (var_f31 * (sp10[1] - sp10[0])); + arg1->y = sp8[0] + (var_f31 * (sp8[1] - sp8[0])); + arg1->z = arg0->unk_04[var_r31].y + (var_f31 * (arg0->unk_04[var_r31 + 1].y - arg0->unk_04[var_r31].y)); + } + return; + } + } +} + +void fn_1_B3CC(ModelData *model, Mtx matrix) +{ + Mtx sp154; + Mtx sp124; + Mtx spF4; + Mtx spC4; + GXTexObj sp44; + Vec2f sp18; + GXColor sp14; + float var_f31; + M427DllMapStruct6 *var_r31; + M427DllMapSubstruct3 *var_r30; + M427DllMapSubstruct3Sub *var_r27; + M427DllMapStruct3Sub *var_r24; + s16 var_r21; + + var_r31 = model->unk_120; + var_r30 = &lbl_1_bss_158.unk4[var_r31->unk_00]; + var_r27 = &var_r30->unk94; + var_r24 = &lbl_1_bss_158.unk334; + fn_1_A7F8(var_r31); + GXLoadPosMtxImm(matrix, 0); + MTXInvXpose(matrix, spF4); + GXLoadNrmMtxImm(spF4, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_2C, sizeof(Vec)); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, var_r31->unk_34, sizeof(Vec)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_30, 8); + if (var_r31->unk_00 == 0) { + GXInitTexObj(&sp44, var_r27->unk4, 0x140, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + } + else { + GXInitTexObj(&sp44, var_r27->unk4, 0x140, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + } + GXInitTexObjLOD(&sp44, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&sp44, GX_TEXMAP0); + HuSprTexLoad(var_r31->unk_28, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(var_r24->unk_00, 0, 2, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTevStages(3); + sp14.r = 0; + sp14.g = 0xB6; + sp14.b = 0xCC; + sp14.a = 0x40; + GXSetTevColor(GX_TEVREG2, sp14); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVREG0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXA, GX_CC_C2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG1); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG1); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_ZERO, GX_CC_C1, GX_CC_RASC, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetTevIndWarp(1, 0, 1, 0, 1); + MTXScale(spF4, -0.1f, 0.1f, 1.0f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spF4, 0); + GXSetNumTexGens(3); + C_MTXLightPerspective(sp154, 45.0f, 0.6f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXCopy(matrix, sp124); + MTXInverse(Hu3DCameraMtx, spF4); + MTXConcat(spF4, sp124, spF4); + MTXConcat(sp154, Hu3DCameraMtx, spC4); + MTXConcat(spC4, spF4, spF4); + GXLoadTexMtxImm(spF4, 0x1E, GX_MTX3x4); + { + Vec sp38 = { 1.0f, 1.0f, 1.0f }; + var_f31 = 0.0f; + fn_1_94BC(&var_r30->unk78, &var_r30->unk84, var_r31->unk_2C, &sp38, var_f31, &sp18, 1); + } + if (omPauseChk() == 0) { + var_r31->unk_20 = var_r31->unk_20 - 0.001f; + } + MTXScale(spF4, 1.0f, 1.0f, 1.0f); + mtxTransCat(spF4, 0.0f, var_r31->unk_20 + (0.3f * sp18.y), 0.0f); + GXLoadTexMtxImm(spF4, 0x21, GX_MTX2x4); + if (omPauseChk() == 0) { + var_r31->unk_24 += 0.05f; + } + if (var_r31->unk_24 >= 360.0f) { + var_r31->unk_24 -= 360.0f; + } + var_r31->unk_14 = sind(var_r31->unk_24); + if (omPauseChk() == 0) { + var_r31->unk_1C += 0.0005f; + } + MTXScale(spF4, 0.5f, 0.5f, 0.5f); + mtxTransCat(spF4, var_r31->unk_14, var_r31->unk_1C, 0.0f); + GXLoadTexMtxImm(spF4, 0x24, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, 0x21, GX_FALSE, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, 0x24, GX_FALSE, 0x7D); + GXSetNumChans(1); + var_r21 = Hu3DLightSet(model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 0.0f); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, var_r21, GX_DF_CLAMP, GX_AF_SPOT); + sp14.r = sp14.g = sp14.b = 0x10; + sp14.a = 0xFF; + GXSetChanAmbColor(GX_COLOR0A0, sp14); + sp14.r = sp14.g = sp14.b = 0xFF; + sp14.a = 0xFF; + GXSetChanMatColor(GX_COLOR0A0, sp14); + GXSetZMode(1, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + GXCallDisplayList(var_r31->unk_40, var_r31->unk_44); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +void fn_1_BD2C(ModelData *model, Mtx matrix) +{ + GXColor sp14 = { 0, 0, 0, 0xFF }; + GXSetFog(GX_FOG_EXP, 10000.0f, 20000.0f, 300.0f, 50000.0f, sp14); + GXLoadPosMtxImm(matrix, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + HuSprTexLoad(lbl_1_bss_F4, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetNumChans(0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-1000.0f, 1000.0f, -24000.0f); + GXTexCoord2f32(0.0f, 0.0f); + + GXPosition3f32(1000.0f, 1000.0f, -24000.0f); + GXTexCoord2f32(1.0f, 0.0f); + + GXPosition3f32(1000.0f, -1000.0f, -24000.0f); + GXTexCoord2f32(1.0f, 1.0f); + + GXPosition3f32(-1000.0f, -1000.0f, -24000.0f); + GXTexCoord2f32(0.0f, 1.0f); + + GXSetFog(GX_FOG_EXP, 3500.0f, 20000.0f, 300.0f, 50000.0f, sp14); +} + +void fn_1_C154(ModelData *model, Mtx matrix) +{ + GXColor spC = { 0, 0, 0, 255 }; + GXSetFog(GX_FOG_EXP, 10000.0f, 20000.0f, 300.0f, 50000.0f, spC); +} + +void fn_1_C200(ModelData *model, Mtx matrix) +{ + GXColor spC = { 0, 0, 0, 255 }; + GXSetFog(GX_FOG_EXP, 3500.0f, 20000.0f, 300.0f, 50000.0f, spC); +} + +void fn_1_C2AC(Vec *arg0, float arg8, float arg9, float argA) +{ + arg0->x = arg8; + arg0->y = arg9; + arg0->z = argA; +} + +void fn_1_C2BC(Vec2f *arg0, float arg8, float arg9) +{ + arg0->x = arg8; + arg0->y = arg9; +} + +void fn_1_C2C8(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + Vec sp14; + Vec sp8; + + sp14.x = arg1->x - arg0->x; + sp14.y = arg1->y - arg0->y; + sp14.z = arg1->z - arg0->z; + sp8.x = arg2->x - arg1->x; + sp8.y = arg2->y - arg1->y; + sp8.z = arg2->z - arg1->z; + arg3->x = -((sp14.y * sp8.z) - (sp14.z * sp8.y)); + arg3->y = -((sp14.z * sp8.x) - (sp14.x * sp8.z)); + arg3->z = -((sp14.x * sp8.y) - (sp14.y * sp8.x)); +} + +// is this one of the structs? +void fn_1_C3A0(float *arg0, float *arg1) +{ + arg1[0] = arg0[0]; + arg1[4] = arg0[1]; + arg1[8] = arg0[2]; + arg1[1] = arg0[4]; + arg1[5] = arg0[5]; + arg1[9] = arg0[6]; + arg1[2] = arg0[8]; + arg1[6] = arg0[9]; + arg1[10] = arg0[10]; + arg1[3] = 0.0f; + arg1[7] = 0.0f; + arg1[11] = 0.0f; +} + +s16 fn_1_C41C(float x1, float y1, float z1, float x2, float y2, float z2, u8 r, u8 g, u8 b) +{ + Vec sp34; + Vec sp28; + GXColor sp23; + LightData *var_r31; + s16 var_r30; + + sp34.x = x1; + sp34.y = y1; + sp34.z = z1; + sp28.x = x2; + sp28.y = y2; + sp28.z = z2; + sp23.r = r; + sp23.g = g; + sp23.b = b; + sp23.a = 0xFF; + for (var_r31 = Hu3DLocalLight, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if (var_r31->unk_00 == -1) { + break; + } + } + if (var_r30 == 0x20) { + return -1; + } + fn_1_C68C(var_r31, &sp34, &sp28, &sp23); + var_r31->unk_00 |= 0x8000; + return var_r30; +} + +void fn_1_C528(s16 sp8, s16 var_r28, float x1, float y1, float z1, float x2, float y2, float z2, u8 r, u8 g, u8 b) +{ + Vec sp38; + Vec sp2C; + GXColor sp27; + ModelData *var_r31; + LightData *var_r30; + s16 var_r29; + + var_r31 = &Hu3DData[sp8]; + sp38.x = x1; + sp38.y = y1; + sp38.z = z1; + sp2C.x = x2; + sp2C.y = y2; + sp2C.z = z2; + sp27.r = r; + sp27.g = g; + sp27.b = b; + sp27.a = 0xFF; + for (var_r30 = Hu3DLocalLight, var_r29 = 0; var_r29 < 0x20; var_r29++, var_r30++) { + if (var_r30->unk_00 == -1) { + break; + } + } + if (var_r29 == 0x20) { + OSReport("Light Entry Over!\n"); + return; + } + fn_1_C68C(var_r30, &sp38, &sp2C, &sp27); + if (var_r31->unk_38[var_r28] == -1) { + var_r31->unk_38[var_r28] = var_r29; + var_r31->attr |= 0x1000; + } +} + +void fn_1_C68C(LightData *arg0, Vec *arg1, Vec *arg2, GXColor *arg3) +{ + arg0->unk_00 = 0; + arg0->unk_1C = *arg1; + arg0->unk_28 = *arg2; + arg0->unk_34.x = arg0->unk_34.y = arg0->unk_34.z = 0.0f; + arg0->unk_04 = 30.0f; + arg0->unk_02 = 2; + VECNormalize(&arg0->unk_28, &arg0->unk_28); + arg0->color.r = arg3->r; + arg0->color.g = arg3->g; + arg0->color.b = arg3->b; + arg0->color.a = arg3->a; +} + +void fn_1_C76C(u8 arg0, float arg8, float arg9, float argA, s16 arg1, float argB, float argC, s16 arg2) +{ + Vec sp24; + Vec sp18; + float sp10[2]; + GXColor spC; + M427DllMapSubstruct6 *var_r31; + s16 var_r30; + + if (arg0 != 0) { + argB += (((rand8() << 8) | rand8()) % 21) - 0xA; + } + else { + argB += (((rand8() << 8) | rand8()) % 61) - 0x1E; + } + sp10[0] = sind(argB); + sp10[1] = cosd(argB); + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + if (arg0 != 0) { + sp24.x = arg8 + ((((rand8() << 8) | rand8()) % 21) - 0xA); + sp24.y = arg9 + ((((rand8() << 8) | rand8()) % 21) - 0xA); + sp24.z = argA + ((((rand8() << 8) | rand8()) % 21) - 0xA); + } + else { + sp24.x = arg8 + ((((rand8() << 8) | rand8()) % 41) - 0x14); + sp24.y = arg9 + ((((rand8() << 8) | rand8()) % 41) - 0x14); + sp24.z = argA + ((((rand8() << 8) | rand8()) % 41) - 0x14); + } + sp18.x = sp18.y = sp18.z = 0.0f; + spC.r = spC.g = spC.b = spC.a = 0xFF; + var_r31 = fn_1_D4FC(arg2, &sp24, &sp18, 0.0f, &spC); + if (!var_r31) { + break; + } + var_r31->unk_38 = arg0; + if (arg0 != 0) { + var_r31->unk_34 = 0; + var_r31->unk_36 = 3; + var_r31->unk_00 = argC * (sp10[0] * (0.1f * ((((rand8() << 8) | rand8()) % 151) + 0x96))); + var_r31->unk_04 = 0.1f * ((((rand8() << 8) | rand8()) % 31) - 0x14); + var_r31->unk_08 = argC * (sp10[1] * (0.1f * ((((rand8() << 8) | rand8()) % 151) + 0x96))); + var_r31->unk_18 = 0.01f * var_r31->unk_00; + var_r31->unk_1C = 0.1f; + var_r31->unk_20 = 0.01f * var_r31->unk_08; + var_r31->unk_24 = argC * (0.1f * ((((rand8() << 8) | rand8()) % 11) + 0xA)); + var_r31->unk_28 = argC * (0.01f * ((((rand8() << 8) | rand8()) % 101) + 0x32) / (var_r31->unk_36 * 0xE)); + } + else { + var_r31->unk_34 = 0; + var_r31->unk_36 = 2; + var_r31->unk_00 = sp10[0] * (0.1f * ((((rand8() << 8) | rand8()) % 31) + 0x32)); + var_r31->unk_04 = 0.1f * ((((rand8() << 8) | rand8()) % 31) - 0x14); + var_r31->unk_08 = sp10[1] * (0.1f * (((((rand8() << 8) | rand8()) % 31)) + 0x32)); + var_r31->unk_18 = 0.0f; + var_r31->unk_1C = 0.1f; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = 0.3f * (0.1f * ((((rand8() << 8) | rand8()) % 11) + 0xA)); + var_r31->unk_28 = 0.4f * ((0.01f * ((((rand8() << 8) | rand8()) % 51) + 0x32)) / (var_r31->unk_36 * 0xE)); + } + var_r31->unk_2C = 1024.0f * argC; + var_r31->unk_30 = var_r31->unk_2C / (var_r31->unk_36 * 0xE); + } +} + +void fn_1_D22C(ModelData *model, M427DllMapStruct7 *arg1, Mtx matrix) +{ + M427DllMapSubstruct6 *var_r31; + GXColor *var_r30; + s16 var_r29; + u8 var_r28; + + var_r31 = arg1->unk_18; + var_r30 = arg1->unk_24; + for (var_r29 = 0; var_r29 < arg1->unk_00; var_r29++, var_r31++, var_r30++) { + if (var_r31->unk_62 != 0) { + var_r31->unk_54.x += var_r31->unk_00; + var_r31->unk_54.y += var_r31->unk_04; + var_r31->unk_54.z += var_r31->unk_08; + if (var_r31->unk_38 != 0) { + var_r31->unk_00 -= var_r31->unk_18; + var_r31->unk_04 += var_r31->unk_1C; + var_r31->unk_08 -= var_r31->unk_20; + var_r31->unk_18 = 0.01f * var_r31->unk_00; + var_r31->unk_1C *= 1.04f; + var_r31->unk_20 = 0.01f * var_r31->unk_08; + } + else { + var_r31->unk_04 += var_r31->unk_1C; + var_r31->unk_1C *= 1.1f; + } + var_r31->unk_24 += var_r31->unk_28; + var_r31->unk_48.x = var_r31->unk_48.y = var_r31->unk_48.z = var_r31->unk_24; + var_r31->unk_2C -= var_r31->unk_30; + if (var_r31->unk_2C > 255.0f) { + var_r28 = 0xFF; + } + else { + var_r28 = (s32)var_r31->unk_2C; + } + var_r30->a = (s32)var_r28; + var_r31->unk_34++; + if (var_r31->unk_34 >= var_r31->unk_36) { + var_r31->unk_34 = 0; + var_r31->unk_60++; + } + if (var_r31->unk_60 >= arg1->unk_14) { + var_r31->unk_62 = 0; + } + } + } +} + +s16 fn_1_D430(float arg8, float arg9, float argA, s16 arg0) +{ + Vec sp28; + Vec sp1C; + GXColor sp16; + M427DllMapSubstruct6 *var_r31; + + sp28.x = arg8; + sp28.y = arg9; + sp28.z = argA; + sp1C.x = sp1C.y = sp1C.z = 1.0f; + sp16.r = 0xFF; + sp16.g = 0xA0; + sp16.b = 0x60; + sp16.a = 0xFF; + var_r31 = fn_1_D4FC(arg0, &sp28, &sp1C, 0.0f, &sp16); + if (!var_r31) { + return -1; + } + var_r31->unk_24 = 0.0f; + return var_r31->unk_40; +} + +M427DllMapSubstruct6 *fn_1_D4FC(s16 arg0, Vec *arg1, Vec *arg2, float arg8, GXColor *arg3) +{ + M427DllMapSubstruct6 *var_r31; + M427DllMapStruct7 *var_r30; + s16 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[arg0]; + var_r30 = var_r28->unk_120; + for (var_r29 = 0, var_r31 = var_r30->unk_18; var_r29 < var_r30->unk_00; var_r29++, var_r31++) { + if (var_r31->unk_62 == 0) { + break; + } + } + if (var_r29 == var_r30->unk_00) { + return NULL; + } + var_r30->unk_24[var_r29].r = arg3->r; + var_r30->unk_24[var_r29].g = arg3->g; + var_r30->unk_24[var_r29].b = arg3->b; + var_r30->unk_24[var_r29].a = arg3->a; + var_r31->unk_40 = var_r29; + var_r31->unk_44 = arg8; + var_r31->unk_48 = *arg2; + var_r31->unk_54 = *arg1; + var_r31->unk_60 = 0; + var_r31->unk_3C = 0; + var_r31->unk_62 = 1; + return var_r31; +} + +s16 fn_1_D63C(AnimData *arg0, s16 arg1, float arg8, s16 arg2, s16 arg3) +{ + float temp_f0; + M427DllMapStruct7 *var_r31; + s16 var_r30; + Vec2f *var_r29; + ModelData *var_r28; + GXColor *var_r27; + Vec *var_r25; + M427DllMapSubstruct6 *var_r24; + s16 var_r22; + void *var_r21; + s16 var_r20; + s16 var_r19; + void *var_r18; + + var_r20 = Hu3DHookFuncCreate(fn_1_DCD4); + var_r28 = &Hu3DData[var_r20]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M427DllMapStruct7), var_r28->unk_48); + var_r28->unk_120 = var_r31; + arg0->useNum++; + var_r31->unk_10 = arg0; + var_r31->unk_00 = arg1; + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(M427DllMapSubstruct6), var_r28->unk_48); + var_r31->unk_18 = var_r24; + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) { + var_r24->unk_60 = -1; + var_r24->unk_62 = 0; + } + var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, var_r28->unk_48); + var_r31->unk_1C = var_r25; + for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(GXColor), var_r28->unk_48); + var_r31->unk_24 = var_r27; + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) { + var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF; + } + var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec2f) * 4, var_r28->unk_48); + var_r31->unk_20 = var_r29; + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + if ((arg2 != 0) || (arg3 != 0)) { + var_r22 = arg0->bmp->sizeX / arg2; + var_r19 = arg0->bmp->sizeY / arg3; + var_r31->unk_14 = var_r22 * var_r19; + var_r31->unk_60 = 1.0f / var_r22; + var_r31->unk_64 = 1.0f / var_r19; + } + else { + var_r22 = 1; + var_r31->unk_14 = 1; + var_r31->unk_60 = 1.0f; + var_r31->unk_64 = 1.0f; + } + var_r31->unk_5C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_14 * sizeof(Vec2f), var_r28->unk_48); + fn_1_E2B0(var_r31->unk_5C, var_r31->unk_14, var_r22, var_r31->unk_60, var_r31->unk_64); + var_r31->unk_2C.x = var_r31->unk_50 = var_r31->unk_48 = var_r31->unk_54 = -arg8; + var_r31->unk_38 = var_r31->unk_44 = var_r31->unk_2C.y = var_r31->unk_3C = arg8; + var_r31->unk_2C.z = var_r31->unk_40 = var_r31->unk_4C = var_r31->unk_58 = 0.0f; + var_r21 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, var_r28->unk_48); + var_r18 = var_r21; + DCFlushRange(var_r21, 0x20000); + GXBeginDisplayList(var_r18, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg1 * 4); + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + GXPosition1x16(var_r30 * 4); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4); + GXPosition1x16(var_r30 * 4 + 1); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 1); + GXPosition1x16(var_r30 * 4 + 2); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 2); + GXPosition1x16(var_r30 * 4 + 3); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 3); + } + var_r31->unk_04 = GXEndDisplayList(); + var_r31->unk_28 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_04, var_r28->unk_48); + memcpy(var_r31->unk_28, var_r21, var_r31->unk_04); + DCFlushRange(var_r31->unk_28, var_r31->unk_04); + HuMemDirectFree(var_r21); + return var_r20; +} + +void fn_1_DB80(s16 arg0) +{ + ModelData *var_r31; + M427DllMapStruct7 *var_r30; + + var_r31 = &Hu3DData[arg0]; + var_r30 = var_r31->unk_120; + HuSprAnimKill(var_r30->unk_10); + Hu3DModelKill(arg0); +} + +void *fn_1_DBE0(s16 arg0) +{ + ModelData *var_r31; + + var_r31 = &Hu3DData[arg0]; + return var_r31->unk_120; +} + +M427DllMapSubstruct6 *fn_1_DC0C(s16 arg0, s16 arg1) +{ + ModelData *var_r31; + M427DllMapStruct7 *var_r30; + + var_r31 = &Hu3DData[arg0]; + var_r30 = var_r31->unk_120; + if (arg1 == -1) { + return NULL; + } + return &var_r30->unk_18[arg1]; +} + +void fn_1_DC64(s16 arg0, M427DllHook arg1) +{ + ModelData *var_r31; + M427DllMapStruct7 *var_r30; + + var_r31 = &Hu3DData[arg0]; + var_r30 = var_r31->unk_120; + var_r30->unk_0C = arg1; +} + +void fn_1_DC9C(s16 arg0, u8 arg1) +{ + ModelData *var_r31; + M427DllMapStruct7 *var_r30; + + var_r31 = &Hu3DData[arg0]; + var_r30 = var_r31->unk_120; + var_r30->unk_08 = arg1; +} + +void fn_1_DCD4(ModelData *model, Mtx matrix) +{ + Mtx sp128; + ROMtx spF8; + Mtx spC8; + Mtx sp98; + Vec sp68[4]; + Vec sp5C; + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + Vec *var_r31; + M427DllMapStruct7 *var_r30; + M427DllMapSubstruct6 *var_r29; + Vec2f *var_r26; + s16 var_r25; + s16 var_r24; + M427DllHook var_r23; + + var_r30 = model->unk_120; + GXLoadPosMtxImm(matrix, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + var_r24 = var_r30->unk_10->bmp->dataFmt & 0xF; + if ((var_r24 == 7) || (var_r24 == 8)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + if ((model->attr & 2) != 0) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + HuSprTexLoad(var_r30->unk_10, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + switch (var_r30->unk_08) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r30->unk_1C, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r30->unk_24, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, var_r30->unk_20, 8); + sp128[0][0] = matrix[0][0]; + sp128[1][0] = matrix[0][1]; + sp128[2][0] = matrix[0][2]; + sp128[0][1] = matrix[1][0]; + sp128[1][1] = matrix[1][1]; + sp128[2][1] = matrix[1][2]; + sp128[0][2] = matrix[2][0]; + sp128[1][2] = matrix[2][1]; + sp128[2][2] = matrix[2][2]; + sp128[0][3] = 0.0f; + sp128[1][3] = 0.0f; + sp128[2][3] = 0.0f; + PSMTXReorder(sp128, spF8); + if ((omPauseChk() == 0) && (var_r30->unk_0C)) { + var_r23 = var_r30->unk_0C; + var_r23(model, var_r30, 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); + 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; + var_r31++; + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + } + else { + if (var_r29->unk_44 == 0.0f) { + fn_1_E420(sp68, &sp38, &var_r29->unk_48, 4); + PSVECAdd(&sp38, &var_r29->unk_54, var_r31++); + PSVECAdd(&sp44, &var_r29->unk_54, var_r31++); + PSVECAdd(&sp50, &var_r29->unk_54, var_r31++); + PSVECAdd(&sp5C, &var_r29->unk_54, var_r31++); + } + else { + fn_1_E420(&var_r30->unk_2C, &sp38, &var_r29->unk_48, 4); + PSMTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44)); + PSMTXConcat(sp128, spC8, sp98); + PSMTXMultVecArray(sp98, &sp38, &sp8, 4); + PSVECAdd(&sp8, &var_r29->unk_54, var_r31++); + PSVECAdd(&sp14, &var_r29->unk_54, var_r31++); + PSVECAdd(&sp20, &var_r29->unk_54, var_r31++); + PSVECAdd(&sp2C, &var_r29->unk_54, var_r31++); + } + if (var_r29->unk_60 != -1) { + fn_1_E37C(var_r26, var_r30->unk_5C, var_r29->unk_60, var_r30->unk_60, var_r30->unk_64); + } + } + } + DCFlushRangeNoSync(var_r30->unk_1C, var_r30->unk_00 * sizeof(Vec) * 4); + DCFlushRangeNoSync(var_r30->unk_20, var_r30->unk_00 * sizeof(Vec2f) * 4); + PPCSync(); + GXCallDisplayList(var_r30->unk_28, var_r30->unk_04); +} + +void fn_1_E2B0(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9) +{ + s16 var_r31; + s16 var_r30; + s16 var_r29; + + for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) { + var_r30 = var_r31 % arg2; + var_r29 = var_r31 / arg2; + arg0->x = var_r30 * arg8; + arg0->y = var_r29 * arg9; + } +} + +void fn_1_E37C(Vec2f *arg0, Vec2f *arg1, s16 arg2, float arg8, float arg9) +{ + arg0[0].x = arg1[arg2].x; + arg0[0].y = arg1[arg2].y; + arg0[1].x = arg8 + arg1[arg2].x; + arg0[1].y = arg1[arg2].y; + arg0[2].x = arg8 + arg1[arg2].x; + arg0[2].y = arg9 + arg1[arg2].y; + arg0[3].x = arg1[arg2].x; + arg0[3].y = arg9 + arg1[arg2].y; +} + +void fn_1_E420(Vec *arg0, Vec *arg1, Vec *arg2, s16 arg3) +{ + s16 var_r31; + + for (var_r31 = 0; var_r31 < arg3; var_r31++, arg0++, arg1++) { + arg1->x = arg0->x * arg2->x; + arg1->y = arg0->y * arg2->y; + arg1->z = arg0->z * arg2->z; + } +} + +void fn_1_E488(void) +{ + if ((HuPadBtnDown[0] & PAD_TRIGGER_L) != 0) { + lbl_1_bss_91 ^= 1; + } + if (lbl_1_bss_91 != 0) { + if ((HuPadBtnDown[0] & PAD_TRIGGER_Z) != 0) { + lbl_1_bss_90 = lbl_1_bss_90 ^ 1; + } + if ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0) { + CRotM[lbl_1_bss_90].y += 1.0f; + } + if ((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) { + CRotM[lbl_1_bss_90].y -= 1.0f; + } + if ((HuPadBtn[0] & PAD_BUTTON_UP) != 0) { + CRotM[lbl_1_bss_90].x -= 1.0f; + } + if ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0) { + CRotM[lbl_1_bss_90].x += 1.0f; + } + CenterM[lbl_1_bss_90].x += HuPadSubStkX[0]; + if ((HuPadBtn[0] & PAD_TRIGGER_R) != 0) { + CenterM[lbl_1_bss_90].y += HuPadSubStkY[0]; + } + else { + CenterM[lbl_1_bss_90].z += HuPadSubStkY[0]; + } + if ((HuPadBtn[0] & PAD_BUTTON_X) != 0) { + CZoomM[lbl_1_bss_90] += 10.0f; + } + if ((HuPadBtn[0] & PAD_BUTTON_Y) != 0) { + CZoomM[lbl_1_bss_90] -= 10.0f; + } + if ((HuPadBtnDown[0] & PAD_BUTTON_A) != 0) { + OSReport("\nCZoom = %.2f \n", CZoomM[lbl_1_bss_90]); + OSReport("Center x = %.2f: y = %.2f: z = %.2f \n", CenterM[lbl_1_bss_90].x, CenterM[lbl_1_bss_90].y, CenterM[lbl_1_bss_90].z); + OSReport("CRot x = %.2f: y = %.2f: z = %.2f \n", CRotM[lbl_1_bss_90].x, CRotM[lbl_1_bss_90].y, CRotM[lbl_1_bss_90].z); + } + } +} diff --git a/src/REL/m427Dll/player.c b/src/REL/m427Dll/player.c new file mode 100644 index 00000000..fe097531 --- /dev/null +++ b/src/REL/m427Dll/player.c @@ -0,0 +1,2361 @@ +#include "REL/m427Dll.h" + +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfformat.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/wipe.h" +#include "string.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + +typedef struct M427DllPlayerWork2 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ s32 unk_24; + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ s32 unk_40; + /* 0x44 */ s32 unk_44; + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ s32 unk_60; + /* 0x64 */ s32 unk_64; + /* 0x68 */ float unk_68; + /* 0x6C */ float unk_6C; + /* 0x70 */ float unk_70; +} M427DllPlayerWork2; /* size = 0x74 */ + +typedef struct M427DllPlayerWork { + /* 0x00 */ omObjData *unk_00[2]; + /* 0x08 */ M427DllPlayerWork2 *unk_08[2]; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ s32 unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ s32 unk_30[5]; + /* 0x34 */ char unk44[8]; + /* 0x4C */ float unk_4C; + /* 0x50 */ float unk_50; + /* 0x54 */ float unk_54; + /* 0x58 */ float unk_58; + /* 0x5C */ float unk_5C; + /* 0x60 */ s32 unk_60; + /* 0x64 */ float unk_64; + /* 0x68 */ s32 unk_68; + /* 0x6C */ char unk6C[4]; +} M427DllPlayerWork; /* size = 0x70 */ + +typedef struct M427DllBss57CStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ Vec unk_1C; + /* 0x28 */ Vec unk_28; + /* 0x34 */ float unk_34; + /* 0x38 */ char unk38[4]; +} M427DllBss57CStruct; /* size = 0x3C */ + +typedef struct M427DllBss590Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ Vec unk_14[2]; + /* 0x2C */ Vec unk_2C[2]; + /* 0x44 */ Vec unk_44; + /* 0x50 */ float unk_50; + /* 0x54 */ float unk_54; + /* 0x58 */ float unk_58; + /* 0x5C */ float unk_5C; + /* 0x60 */ float unk_60; + /* 0x64 */ float unk_64; + /* 0x68 */ float unk_68; + /* 0x6C */ float unk_6C; + /* 0x70 */ float unk_70; + /* 0x74 */ float unk_74; + /* 0x78 */ Vec *unk_78; + /* 0x7C */ Vec *unk_7C; + /* 0x80 */ Vec *unk_80; +} M427DllBss590Struct; /* size = 0x84 */ + +void fn_1_10830(omObjData *object); +void fn_1_1143C(omObjData *object); +void fn_1_115B4(omObjData *object); +void fn_1_119C0(omObjData *object); +void fn_1_11A74(omObjData *object); +void fn_1_11ED8(omObjData *object); +void fn_1_12514(omObjData *object); +void fn_1_12518(omObjData *object); +void fn_1_12580(omObjData *object); +void fn_1_12B08(void); +void fn_1_13F24(void); +void fn_1_13FB8(void); +s32 fn_1_155E0(float arg8, float arg9, float argA, float *arg0); +float fn_1_15714(float arg8, float arg9); +void fn_1_158D8(float arg8, float arg9, Vec *arg0); +s32 fn_1_15AF0(s32 arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4); +void fn_1_1607C(s32 arg0); +s32 fn_1_160D4(s32 arg0, Vec *arg1, float arg8); +s32 fn_1_16260(s32 arg0, Vec *arg2, Vec *arg3, Vec *arg4, float arg8); +float fn_1_16594(float arg8, float arg9); +void fn_1_16E3C(Vec *arg0, Vec *arg1, Vec *arg2, s32 arg3); +void fn_1_17048(Vec *arg0, float *arg1, Vec *arg2, Vec *arg3); +void fn_1_1723C(Mtx arg0, Vec *arg1); +void fn_1_172F0(s32 arg0, float arg8); +s32 fn_1_17430(s32 arg0, s32 arg1, s32 arg2); +void fn_1_EC74(omObjData *object); +void fn_1_EC94(omObjData *object); +void fn_1_F0E0(omObjData *object); + +Vec lbl_1_data_260[0x1D] = { + { -900.0f, 0.0f, 2000.0f }, + { -900.0f, 0.0f, 0.0f }, + { -900.0f, 0.0f, -2000.0f }, + { -900.0f, 0.0f, -4000.0f }, + { -1300.0f, 0.0f, -4500.0f }, + { -1600.0f, 0.0f, -5000.0f }, + { -1800.0f, 0.0f, -5500.0f }, + { -1900.0f, 0.0f, -6000.0f }, + { -1800.0f, 0.0f, -6500.0f }, + { -1600.0f, -100.0f, -7000.0f }, + { -1300.0f, -200.0f, -7500.0f }, + { -900.0f, -300.0f, -8000.0f }, + { -900.0f, -300.0f, -8500.0f }, + { -500.0f, -300.0f, -9000.0f }, + { -500.0f, -300.0f, -10000.0f }, + { -500.0f, -300.0f, -11000.0f }, + { -900.0f, -300.0f, -11500.0f }, + { -900.0f, -300.0f, -12000.0f }, + { -500.0f, -300.0f, -12500.0f }, + { -200.0f, -300.0f, -13000.0f }, + { -0.0f, -300.0f, -13500.0f }, + { 100.0f, -300.0f, -14000.0f }, + { 0.0f, -300.0f, -14500.0f }, + { -200.0f, -400.0f, -15000.0f }, + { -500.0f, -500.0f, -15500.0f }, + { -900.0f, -600.0f, -16000.0f }, + { -900.0f, -600.0f, -18000.0f }, + { -900.0f, -600.0f, -20000.0f }, + { -900.0f, -600.0f, -22000.0f }, +}; +Vec lbl_1_data_3BC[29] = { + { 900.0f, 0.0f, 2000.0f }, + { 900.0f, 0.0f, -0.0f }, + { 900.0f, 0.0f, -2000.0f }, + { 900.0f, 0.0f, -4000.0f }, + { 500.0f, 0.0f, -4500.0f }, + { 200.0f, 0.0f, -5000.0f }, + { 0.0f, 0.0f, -5500.0f }, + { -100.0f, 0.0f, -6000.0f }, + { 0.0f, 0.0f, -6500.0f }, + { 200.0f, -100.0f, -7000.0f }, + { 500.0f, -200.0f, -7500.0f }, + { 900.0f, -300.0f, -8000.0f }, + { 900.0f, -300.0f, -8500.0f }, + { 500.0f, -300.0f, -9000.0f }, + { 500.0f, -300.0f, -10000.0f }, + { 500.0f, -300.0f, -11000.0f }, + { 900.0f, -300.0f, -11500.0f }, + { 900.0f, -300.0f, -12000.0f }, + { 1300.0f, -300.0f, -12500.0f }, + { 1600.0f, -300.0f, -13000.0f }, + { 1800.0f, -300.0f, -13500.0f }, + { 1900.0f, -300.0f, -14000.0f }, + { 1800.0f, -300.0f, -14500.0f }, + { 1600.0f, -400.0f, -15000.0f }, + { 1300.0f, -500.0f, -15500.0f }, + { 900.0f, -600.0f, -16000.0f }, + { 900.0f, -600.0f, -18000.0f }, + { 900.0f, -600.0f, -20000.0f }, + { 900.0f, -600.0f, -22000.0f }, +}; +s32 lbl_1_data_518[7] = { 0, 1, 2, 3, 4, 5, 6 }; +Vec lbl_1_data_534[2] = { { 0.0f, -25.0f, 50.0f }, { 0.0f, -25.0f, -50.0f } }; +Vec lbl_1_data_54C[2] = { { 0.0f, 0.0f, 1900.0f }, { 0.0f, 20.0f, 20.0f } }; +Vec lbl_1_data_564 = { 0.0f, 240.00002f, 360.0f }; +Vec lbl_1_data_570 = { 0.0f, 1.0f, 1.5f }; +GXColor lbl_1_data_57C = { 0xFF, 0xFF, 0xFF, 0xFF }; + +Process *lbl_1_bss_594; +M427DllBss590Struct *lbl_1_bss_590; +Vec *lbl_1_bss_58C; +Vec *lbl_1_bss_588; +Vec *lbl_1_bss_584; +s32 lbl_1_bss_580; +M427DllBss57CStruct *lbl_1_bss_57C; +M427DllPlayerWork *lbl_1_bss_578; +M427DllPlayerWork2 *lbl_1_bss_574; +omObjData *lbl_1_bss_56C[2]; +char lbl_1_bss_55C[0x10]; +Vec *lbl_1_bss_558; +Vec *lbl_1_bss_554; +Vec *lbl_1_bss_550; + +void fn_1_E98C(Process *sp8) +{ + s32 sp10; + omObjData *object; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + s8 spE[2] = { 0xFF, 0xFF }; + s8 spC[2] = { 0xFF, 0xFF }; + sp10 = 0; + OSReport("Init Player \n"); + lbl_1_bss_594 = sp8; + object = omAddObjEx(lbl_1_bss_594, 0x42, 0, 0, -1, fn_1_EC74); + omMakeGroupEx(lbl_1_bss_594, 0, 4); + omGetGroupMemberListEx(lbl_1_bss_594, 0); + for (var_r30 = 0, var_r28 = 0, var_r27 = 0, var_r29 = 0; var_r30 < 4; var_r30++) { + var_r26 = GWPlayerCfg[var_r30].group; + switch (var_r26) { + case 0: + if (var_r28 >= 2) { + var_r29 = 1; + } + else { + spE[var_r28] = var_r30; + var_r28++; + } + break; + case 1: + if (var_r27 >= 2) { + var_r29 = 1; + } + else { + spC[var_r27] = var_r30; + var_r27++; + } + break; + default: + var_r29 = 1; + break; + } + if (var_r29 != 0) { + break; + } + } + lbl_1_bss_578 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M427DllPlayerWork), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_578, 0, 0xE0); + lbl_1_bss_574 = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(M427DllPlayerWork2), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_574, 0, 0x1D0); + memset(lbl_1_bss_56C, 0, 8); + memset(lbl_1_bss_55C, 0, 0x10); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + object = lbl_1_bss_56C[var_r30] = omAddObjEx(lbl_1_bss_594, 0x41, 0xE, 0, -1, fn_1_EC94); + object->work[0] = var_r30; + if (var_r29 != 0) { + object->work[1] = var_r30 * 2; + object->work[2] = (var_r30 * 2) + 1; + } + else if (var_r30 == 0) { + object->work[1] = spE[0]; + object->work[2] = spE[1]; + } + else { + object->work[1] = spC[0]; + object->work[2] = spC[1]; + } + } + fn_1_12B08(); +} + +s32 lbl_1_data_590[7] = { 0x3A001C, 0x3A001D, 0x3A001E, 0x3A001F, 0x3A0020, 0x3A0026, 0x3A0027 }; +s32 lbl_1_data_5AC[7] = { 0x3A0021, 0x3A0022, 0x3A0023, 0x3A0024, 0x3A0025, 0x3A0026, 0x3A0027 }; +s32 lbl_1_data_5C8[2] = { 1, 3 }; +s32 lbl_1_data_5D0[2] = { 2, 4 }; + +void fn_1_EC54(void) +{ + fn_1_13FB8(); +} + +void fn_1_EC74(omObjData *object) +{ + fn_1_13F24(); +} + +void fn_1_EC94(omObjData *object) +{ + M427DllPlayerWork *work; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + work = &lbl_1_bss_578[object->work[0]]; + object->data = work; + work->unk_10 = object->work[0]; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_1C = 0; + work->unk_20 = 0; + work->unk_24 = 0; + work->unk_28 = 0.0f; + work->unk_2C = 0.0f; + work->unk_4C = 0.0f; + work->unk_50 = 0.0f; + work->unk_54 = 0.0f; + work->unk_58 = 0.0f; + work->unk_5C = 0.0f; + work->unk_60 = 0; + work->unk_64 = 180.0f; + work->unk_68 = 0; + object->trans.x = lbl_1_data_54C->x; + object->trans.y = lbl_1_data_54C->y; + object->trans.z = lbl_1_data_54C->z; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + if (work->unk_10 == 0) { + object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_590[var_r29]); + } + else { + object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_5AC[var_r29]); + } + Hu3DModelLayerSet(object->model[var_r29], 2); + if (work->unk_10 == 0) { + Hu3DModelCameraSet(object->model[var_r29], 1); + } + else { + Hu3DModelCameraSet(object->model[var_r29], 2); + } + if (var_r29 < 5) { + Hu3DMotionSpeedSet(object->model[var_r29], 2.0f); + } + } + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[0], 2.0f); + Hu3DModelLayerSet(object->model[5], 5); + Hu3DModelAttrSet(object->model[5], HU3D_MOTATTR_LOOP); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + if (var_r29 == 0) { + var_r28 = object->model[var_r29]; + var_r27 = Hu3DLLightCreateV(var_r28, &lbl_1_data_564, &lbl_1_data_570, &lbl_1_data_57C); + work->unk_30[var_r29] = var_r27; + Hu3DLLightStaticSet(var_r28, var_r27, 1); + Hu3DLLightPointSet(var_r28, var_r27, 80.0f, 0.95f, 3); + Hu3DLLightColorSet(var_r28, var_r27, 0xFF, 0xF0, 0xDC, 0xFF); + Hu3DLLightPosSet( + var_r28, var_r27, lbl_1_data_564.x, lbl_1_data_564.y, lbl_1_data_564.z, lbl_1_data_570.x, lbl_1_data_570.y, lbl_1_data_570.z); + } + else { + var_r28 = object->model[var_r29]; + work->unk_30[var_r29] = fn_1_17430(object->model[0], work->unk_30[0], var_r28); + } + fn_1_172F0(var_r28, 0.1f); + } + for (var_r29 = 0; var_r29 < 2; var_r29++) { + work->unk_00[var_r29] = omAddObjEx(lbl_1_bss_594, 0x40, 2, 4, -1, fn_1_11A74); + work->unk_00[var_r29]->work[0] = object->work[var_r29 + 1]; + work->unk_00[var_r29]->work[1] = work->unk_10; + work->unk_00[var_r29]->work[2] = var_r29; + } + object->func = fn_1_F0E0; +} + +void fn_1_F0E0(omObjData *object) +{ + Mtx sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M427DllPlayerWork *work; + s32 var_r29; + s32 var_r28; + + work = object->data; + if ((work->unk_00[0] == NULL) || (work->unk_08[0] == NULL)) { + return; + } + sp2C.x = object->trans.x; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z; + switch (work->unk_1C) { + case 0: + object->rot.y = work->unk_64 = 180.0f; + for (var_r29 = 0; var_r29 < 2; var_r29++) { + if ((work->unk_08[var_r29]->unk_30 != 0) && (Hu3DMotionEndCheck(object->model[lbl_1_data_5C8[var_r29]]) != 0)) { + fn_1_3B20(var_r29 * 2, work->unk_10); + Hu3DMotionTimeSet(object->model[lbl_1_data_5C8[var_r29]], 0.0f); + if (work->unk_10 == 0) { + HuAudFXPlay(0x655); + } + else { + HuAudFXPlay(0x656); + } + } + if ((work->unk_08[var_r29]->unk_34 != 0) && (Hu3DMotionEndCheck(object->model[lbl_1_data_5D0[var_r29]]) != 0)) { + fn_1_3B20((var_r29 * 2) + 1, work->unk_10); + Hu3DMotionTimeSet(object->model[lbl_1_data_5D0[var_r29]], 0.0f); + if (work->unk_10 == 0) { + HuAudFXPlay(0x655); + } + else { + HuAudFXPlay(0x656); + } + } + } + if (sp2C.z != object->trans.z) { + work->unk_60 = 2; + } + else { + work->unk_60 = 0; + } + if (fn_1_1788() == 3) { + work->unk_1C = 1; + } + break; + case 1: + if (sp2C.z != object->trans.z) { + work->unk_60 = 2; + } + else { + work->unk_60 = 0; + } + if (fn_1_1788() == 4) { + work->unk_1C = 2; + } + break; + case 2: + for (var_r29 = 0; var_r29 < 2; var_r29++) { + if (work->unk_08[var_r29]->unk_30 != 0) { + work->unk_58 += 0.1f; + if (Hu3DMotionEndCheck(object->model[lbl_1_data_5C8[var_r29]]) != 0) { + fn_1_3B20(var_r29 * 2, work->unk_10); + Hu3DMotionTimeSet(object->model[lbl_1_data_5C8[var_r29]], 0.0f); + if (work->unk_10 == 0) { + HuAudFXPlay(0x655); + } + else { + HuAudFXPlay(0x656); + } + } + } + if (work->unk_08[var_r29]->unk_34 != 0) { + work->unk_5C += 0.1f; + if (Hu3DMotionEndCheck(object->model[lbl_1_data_5D0[var_r29]]) != 0) { + fn_1_3B20((var_r29 * 2) + 1, work->unk_10); + Hu3DMotionTimeSet(object->model[lbl_1_data_5D0[var_r29]], 0.0f); + if (work->unk_10 == 0) { + HuAudFXPlay(0x655); + } + else { + HuAudFXPlay(0x656); + } + } + } + } + fn_1_158D8(object->trans.x, object->trans.z, &sp8); + work->unk_4C += 0.15f * sp8.x; + work->unk_54 += 0.15f * sp8.z; + work->unk_58 *= 0.995f; + work->unk_5C *= 0.995f; + work->unk_4C *= 0.99f; + work->unk_54 *= 0.99f; + work->unk_60 = work->unk_58 + work->unk_5C; + if (work->unk_60 < -5.0f) { + work->unk_60 = -5; + } + else if (work->unk_60 > 5.0f) { + work->unk_60 = 5; + } + var_f30 = 0.25f * (work->unk_58 - work->unk_5C); + if (var_f30 > 20.0f) { + var_f30 = 20.0f; + } + else if (var_f30 < -20.0f) { + var_f30 = -20.0f; + } + work->unk_64 += var_f30; + if (work->unk_64 > 360.0f) { + work->unk_64 -= 360.0f; + } + else if (work->unk_64 < 0.0f) { + work->unk_64 += 360.0f; + } + if (work->unk_64 > 270.0f) { + work->unk_64 = 270.0f; + } + else if (work->unk_64 < 90.0f) { + work->unk_64 = 90.0f; + } + object->rot.y = work->unk_64; + var_f31 = work->unk_60; + object->trans.x = object->trans.x + (2.0 * (var_f31 * sind(work->unk_64))); + object->trans.z = object->trans.z + (2.0 * (var_f31 * cosd(work->unk_64))); + object->trans.x += work->unk_4C; + object->trans.z += work->unk_54; + if (work->unk_68 > 0) { + work->unk_68--; + } + for (var_r29 = 0, var_r28 = 1; (var_r28 == 1) && (var_r29 < 6); var_r29++) { + var_r28 = 0; + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_15AF0(-1, &sp2C, &sp20, &sp14, &sp8) != 0) { + var_r28 = 1; + sp2C = sp20; + object->trans.x = sp14.x; + object->trans.y = sp14.y; + object->trans.z = sp14.z; + if ((work->unk_68 == 0) && (fn_1_1788() <= 4)) { + if (work->unk_10 == 0) { + HuAudFXPlay(0x65C); + } + else { + HuAudFXPlay(0x65D); + } + } + work->unk_68 = 5; + } + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_16260(work->unk_10, &sp2C, &sp20, &sp14, 200.0f) != 0) { + var_r28 = 1; + sp2C = sp20; + object->trans.x = sp14.x; + object->trans.y = sp14.y; + object->trans.z = sp14.z; + } + } + if (work->unk_20 <= 0) { + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_160D4(work->unk_10, &sp20, 200.0f) != 0) { + omVibrate(work->unk_08[0]->unk_00, 0xC, 6, 6); + omVibrate(work->unk_08[1]->unk_00, 0xC, 6, 6); + HuAudCharVoicePlay(work->unk_08[0]->unk_0C, 0x123); + HuAudCharVoicePlay(work->unk_08[1]->unk_0C, 0x123); + work->unk_24 = 0x78; + work->unk_1C = 3; + work->unk_28 = 5.0f; + work->unk_2C = 360.0f * ((frand() & 0x7F) / 127.0f); + work->unk_18 = 0; + } + } + else { + work->unk_20--; + } + fn_1_119C0(object); + if (fn_1_1788() >= 5) { + work->unk_1C = 4; + } + break; + case 3: + work->unk_58 = 0.0f; + work->unk_5C = 0.0f; + work->unk_4C = 0.0f; + work->unk_54 = 0.0f; + work->unk_60 = work->unk_58 + work->unk_5C; + if (work->unk_60 < -5.0f) { + work->unk_60 = -5; + } + else if (work->unk_60 > 5.0f) { + work->unk_60 = 5; + } + var_f31 = work->unk_60 / 5.0f; + var_f31 = 5.0f * (var_f31 * var_f31); + object->trans.x = object->trans.x + (2.0 * (var_f31 * sind(work->unk_64))); + object->trans.z = object->trans.z + (2.0 * (var_f31 * cosd(work->unk_64))); + object->trans.x += work->unk_4C; + object->trans.z += work->unk_54; + for (var_r29 = 0, var_r28 = 1; (var_r28 == 1) && (var_r29 < 6); var_r29++) { + var_r28 = 0; + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_15AF0(-1, &sp2C, &sp20, &sp14, &sp8) != 0) { + var_r28 = 1; + sp2C = sp20; + object->trans.x = sp14.x; + object->trans.y = sp14.y; + object->trans.z = sp14.z; + } + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_16260(work->unk_10, &sp2C, &sp20, &sp14, 200.0f) != 0) { + var_r28 = 1; + sp2C = sp20; + object->trans.x = sp14.x; + object->trans.y = sp14.y; + object->trans.z = sp14.z; + } + } + if ((--work->unk_24 > 0) && ((work->unk_18 & 3) == 0)) { + omVibrate(work->unk_08[0]->unk_00, 0xC, 6, 6); + omVibrate(work->unk_08[1]->unk_00, 0xC, 6, 6); + } + if (work->unk_18 >= 120.0f) { + work->unk_1C = 2; + work->unk_20 = 0xB4; + work->unk_18 = 0; + } + fn_1_119C0(object); + if (fn_1_1788() >= 7) { + work->unk_20 = 0; + work->unk_18 = 0; + work->unk_1C = 4; + object->func = fn_1_10830; + } + break; + case 4: + work->unk_58 *= 0.993f; + work->unk_5C *= 0.993f; + work->unk_4C *= 0.993f; + work->unk_54 *= 0.993f; + work->unk_60 = work->unk_58 + work->unk_5C; + if (work->unk_60 < -5.0f) { + work->unk_60 = -5; + } + else if (work->unk_60 > 5.0f) { + work->unk_60 = 5; + } + var_f31 = work->unk_60 / 5.0f; + var_f31 = 5.0f * (var_f31 * var_f31); + object->trans.x = object->trans.x + (2.0 * (var_f31 * sind(work->unk_64))); + object->trans.z = object->trans.z + (2.0 * (var_f31 * cosd(work->unk_64))); + object->trans.x += work->unk_4C; + object->trans.z += work->unk_54; + for (var_r29 = 0, var_r28 = 1; (var_r28 == 1) && (var_r29 < 6); var_r29++) { + var_r28 = 0; + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_15AF0(-1, &sp2C, &sp20, &sp14, &sp8) != 0) { + var_r28 = 1; + sp2C = sp20; + object->trans.x = sp14.x; + object->trans.y = sp14.y; + object->trans.z = sp14.z; + } + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + if (fn_1_16260(work->unk_10, &sp2C, &sp20, &sp14, 200.0f) != 0) { + var_r28 = 1; + sp2C = sp20; + object->trans.x = sp14.x; + object->trans.y = sp14.y; + object->trans.z = sp14.z; + } + } + work->unk_20 = 0; + if (fn_1_1788() >= 7) { + work->unk_18 = 0; + work->unk_1C = 4; + object->func = fn_1_10830; + } + break; + case 5: + if (sp2C.z != object->trans.z) { + work->unk_60 = 2; + } + else { + work->unk_60 = 0; + } + break; + case 6: + break; + case 7: + break; + } + var_f31 = work->unk_60 / 5.0f; + Hu3DMotionSpeedSet(object->model[0], 2.0f * var_f31); + if (work->unk_1C == 3) { + work->unk_2C += (frand() & 3) + 2; + object->rot.x = 0.0f; + object->rot.z = 0.0f; + work->unk_28 = 5.0f - (5.0f * (0.008333334f * work->unk_18)); + var_f29 = 7.0 * (work->unk_28 * sind((10.0f * work->unk_18))); + object->rot.x = object->rot.x + (var_f29 * sind(work->unk_2C)); + object->rot.z = object->rot.z + (var_f29 * cosd(work->unk_2C)); + } + if (((work->unk_1C == 3) || (work->unk_20 != 0)) && ((work->unk_18 & 1) != 0)) { + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF); + } + for (var_r29 = 0; var_r29 < 2; var_r29++) { + if (work->unk_00[var_r29]->model[0] != -1) { + Hu3DModelAttrSet(*work->unk_00[var_r29]->model, HU3D_ATTR_DISPOFF); + } + } + } + else { + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelAttrReset(object->model[var_r29], HU3D_ATTR_DISPOFF); + } + for (var_r29 = 0; var_r29 < 2; var_r29++) { + if (work->unk_00[var_r29]->model[0] != -1) { + Hu3DModelAttrReset(*work->unk_00[var_r29]->model, HU3D_ATTR_DISPOFF); + } + } + } + for (var_r29 = 0; var_r29 < 2; var_r29++) { + work->unk_08[var_r29]->unk_24 = work->unk_1C; + } + object->trans.y = fn_1_AE78(work->unk_10, object->trans.x, object->trans.z); + mtxRot(sp38, object->rot.x, object->rot.y, object->rot.z); + sp38[1][0] *= object->scale.y; + sp38[1][1] *= object->scale.y; + sp38[1][2] *= object->scale.z; + sp20.x = 0.0f; + sp20.y = 0.0f; + sp20.z = 100.0f; + fn_1_1723C(sp38, &sp20); + sp20.x += object->trans.x; + sp20.y += object->trans.y; + sp20.z += object->trans.z; + fn_1_91E0(work->unk_10, sp20.x, sp20.y, sp20.z, 180.0f + object->rot.y); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + sp20 = lbl_1_data_534[var_r29]; + fn_1_1723C(sp38, &sp20); + work->unk_00[var_r29]->trans.x = object->trans.x + sp20.x; + work->unk_00[var_r29]->trans.y = object->trans.y + sp20.y; + work->unk_00[var_r29]->trans.z = object->trans.z + sp20.z; + work->unk_00[var_r29]->rot.x = object->rot.x; + work->unk_00[var_r29]->rot.y = object->rot.y; + work->unk_00[var_r29]->rot.z = object->rot.z; + } + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelPosSet(object->model[var_r29], object->trans.x, object->trans.y, object->trans.z); + Hu3DModelRotSet(object->model[var_r29], object->rot.x, object->rot.y, object->rot.z); + } + fn_1_1143C(object); + if ((fn_1_32EC() == 0) && (object->func != fn_1_10830) && ((work->unk_1C == 2) || (work->unk_1C == 3))) { + fn_1_115B4(object); + } + work->unk_18++; +} + +s32 lbl_1_data_5F8[2] = { 1, 3 }; +s32 lbl_1_data_600[2] = { 2, 4 }; +s32 lbl_1_data_608[4] = { 0x3A002F, 0x3A0037, 0x3A003F, 0x3A0047 }; +s32 lbl_1_data_618[4] = { 15, 10, 6, 5 }; + +void fn_1_10830(omObjData *object) +{ + Mtx sp14; + Vec sp8; + s32 var_r30; + M427DllPlayerWork *work; + s32 var_r28; + s32 var_r27; + + work = object->data; + switch (work->unk_1C) { + case 4: + var_r27 = fn_1_1884(); + if (var_r27 == 3) { + break; + } + if (var_r27 == work->unk_10) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelCameraSet(*work->unk_00[var_r30]->model, 1); + Hu3DModelLayerSet(*work->unk_00[var_r30]->model, 3); + fn_1_172F0(work->unk_00[var_r30]->model[0], 5.0f); + } + for (var_r30 = 0; var_r30 < 7; var_r30++) { + Hu3DModelCameraSet(object->model[var_r30], 1); + Hu3DModelLayerSet(object->model[var_r30], 3); + if (var_r30 < 5) { + fn_1_172F0(object->model[var_r30], 5.0f); + } + } + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + work->unk_00[var_r30]->model[1] = Hu3DModelLink(*work->unk_00[var_r30]->model); + Hu3DModelCameraSet(work->unk_00[var_r30]->model[1], 1); + Hu3DModelLayerSet(work->unk_00[var_r30]->model[1], 1); + } + for (var_r30 = 0; var_r30 < 7; var_r30++) { + object->model[var_r30 + 7] = Hu3DModelLink(object->model[var_r30]); + Hu3DModelCameraSet(object->model[var_r30 + 7], 1); + Hu3DModelLayerSet(object->model[var_r30 + 7], 1); + } + object->trans.x = object->trans.y = object->trans.z = 0.0f; + object->rot.x = object->rot.z = 0.0f; + object->rot.y = 180.0f; + work->unk_1C = 5; + break; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrSet(work->unk_00[var_r30]->model[0], HU3D_ATTR_DISPOFF); + work->unk_00[var_r30]->func = NULL; + } + for (var_r30 = 0; var_r30 < 7; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); + } + object->func = NULL; + return; + case 5: + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r28 = lbl_1_data_5F8[var_r30]; + if ((work->unk_08[var_r30]->unk_30 != 0) && (Hu3DMotionEndCheck(object->model[var_r28]) != 0)) { + fn_1_3B20(var_r30 * 2, work->unk_10); + Hu3DMotionTimeSet(object->model[var_r28], 0.0f); + if (work->unk_10 == 0) { + HuAudFXPlay(0x655); + } + else { + HuAudFXPlay(0x656); + } + } + var_r28 = lbl_1_data_600[var_r30]; + if ((work->unk_08[var_r30]->unk_34 != 0) && (Hu3DMotionEndCheck(object->model[var_r28]) != 0)) { + fn_1_3B20((var_r30 * 2) + 1, work->unk_10); + Hu3DMotionTimeSet(object->model[var_r28], 0.0f); + if (work->unk_10 == 0) { + HuAudFXPlay(0x655); + } + else { + HuAudFXPlay(0x656); + } + } + } + if (fn_1_1788() >= 0xC) { + work->unk_1C = 6; + } + break; + case 6: + case 7: + break; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + work->unk_08[var_r30]->unk_24 = work->unk_1C; + } + mtxRot(sp14, object->rot.x, object->rot.y, object->rot.z); + sp14[1][0] *= object->scale.y; + sp14[1][1] *= object->scale.y; + sp14[1][2] *= object->scale.z; + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 100.0f; + fn_1_1723C(sp14, &sp8); + sp8.x += object->trans.x; + sp8.y += object->trans.y; + sp8.z += object->trans.z; + fn_1_91E0(work->unk_10, sp8.x, sp8.y, sp8.z, 180.0f + object->rot.y); + object->trans.y = fn_1_AE78(work->unk_10, object->trans.x, object->trans.z); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + sp8 = lbl_1_data_534[var_r30]; + fn_1_1723C(sp14, &sp8); + work->unk_00[var_r30]->trans.x = object->trans.x + sp8.x; + work->unk_00[var_r30]->trans.y = object->trans.y + sp8.y; + work->unk_00[var_r30]->trans.z = object->trans.z + sp8.z; + work->unk_00[var_r30]->rot.x = object->rot.x; + work->unk_00[var_r30]->rot.y = object->rot.y; + work->unk_00[var_r30]->rot.z = object->rot.z; + if (work->unk_00[var_r30]->model[1] != -1) { + Hu3DModelPosSet( + work->unk_00[var_r30]->model[1], -work->unk_00[var_r30]->trans.x, work->unk_00[var_r30]->trans.y, work->unk_00[var_r30]->trans.z); + Hu3DModelRotSet( + work->unk_00[var_r30]->model[1], work->unk_00[var_r30]->rot.x, -work->unk_00[var_r30]->rot.y, work->unk_00[var_r30]->rot.z); + } + } + for (var_r30 = 0; var_r30 < 0xE; var_r30++) { + if (object->model[var_r30] != -1) { + if (var_r30 < 7) { + Hu3DModelPosSet(object->model[var_r30], object->trans.x, object->trans.y, object->trans.z); + Hu3DModelRotSet(object->model[var_r30], object->rot.x, object->rot.y, object->rot.z); + } + else { + Hu3DModelPosSet(object->model[var_r30], -object->trans.x, object->trans.y, object->trans.z); + Hu3DModelRotSet(object->model[var_r30], object->rot.x, -object->rot.y, object->rot.z); + } + } + } + work->unk_64 = 200.0f; + fn_1_1143C(object); + work->unk_18++; +} + +void fn_1_10F8C(omObjData *object) +{ + s32 var_r31; + M427DllPlayerWork *work = object->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + fn_1_12514(work->unk_00[var_r31]); + } +} + +s32 fn_1_10FE8(s32 arg0, s32 *arg1) +{ + s32 var_r31; + M427DllPlayerWork *var_r30; + omObjData *var_r29; + + var_r29 = lbl_1_bss_56C[arg0]; + var_r30 = &lbl_1_bss_578[arg0]; + if ((var_r29 == NULL) || (var_r30 == NULL)) { + return -1; + } + if ((var_r30->unk_00[0] == NULL) || (var_r30->unk_08[0] == NULL)) { + return -1; + } + for (var_r31 = 0; var_r31 < 7; var_r31++) { + if (var_r31 < 5) { + arg1[var_r31] = var_r29->model[var_r31]; + } + else if (var_r31 < 6) { + arg1[var_r31] = var_r30->unk_00[0]->model[0]; + } + else { + arg1[var_r31] = var_r30->unk_00[1]->model[0]; + } + } + return var_r31; +} + +void fn_1_110E8(s32 arg0, s32 *arg1) +{ + s32 var_r31; + M427DllPlayerWork *var_r30; + omObjData *var_r29; + + var_r29 = lbl_1_bss_56C[arg0]; + var_r30 = &lbl_1_bss_578[arg0]; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + arg1[var_r31] = 0; + } + if ((var_r29 == NULL) || (var_r30 == NULL)) { + return; + } + if ((var_r30->unk_00[0] == NULL) || (var_r30->unk_08[0] == NULL)) { + return; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + arg1[var_r31] = var_r30->unk_08[var_r31]->unk_0C; + } +} + +void fn_1_111C0(s32 arg0, s32 *arg1) +{ + s32 var_r31; + M427DllPlayerWork *var_r30; + omObjData *var_r29; + + var_r29 = lbl_1_bss_56C[arg0]; + var_r30 = &lbl_1_bss_578[arg0]; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + arg1[var_r31] = 0; + } + if ((var_r29 == NULL) || (var_r30 == NULL)) { + return; + } + if ((var_r30->unk_00[0] == NULL) || (var_r30->unk_08[0] == NULL)) { + return; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + arg1[var_r31] = var_r30->unk_08[var_r31]->unk_00; + } +} + +void fn_1_11298(float var_f30) +{ + float var_f31; + omObjData *object; + s32 var_r30; + + if (fn_1_1788() < 4) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + object = lbl_1_bss_56C[var_r30]; + if (object) { + object->trans.z = 1900.0f + (-1800.0f * var_f30); + } + } + return; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + object = lbl_1_bss_56C[var_r30]; + if (object) { + object->trans.z = -1800.0f * var_f30; + if (object->trans.z < -1500.0f) { + var_f31 = (object->trans.z - -1500.0f) / 300.0f; + object->rot.y = 180.0f - (30.0f * var_f31); + } + } + } +} + +s32 fn_1_113F0(s32 arg0) +{ + M427DllPlayerWork *work; + omObjData *object; + + object = lbl_1_bss_56C[arg0]; + work = object->data; + if (work->unk_14 == 3) { + return 1; + } + return 0; +} + +void fn_1_1143C(omObjData *object) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + M427DllPlayerWork *work; + s32 var_r29; + + work = object->data; + mtxRot(sp20, 0.0f, work->unk_64, 0.0f); + sp14 = lbl_1_data_564; + fn_1_1723C(sp20, &sp14); + sp14.x += object->trans.x; + sp14.y += object->trans.y; + sp14.z += object->trans.z; + sp8.x = sp8.z = 0.0f; + sp8.y = 1.0f; + Hu3DLLightPosSet(object->model[0], work->unk_30[0], sp14.x, sp14.y, sp14.z, sp8.x, sp8.y, sp8.z); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + if (*work->unk_00[var_r29]->model != -1) { + Hu3DLLightPosSet(work->unk_00[var_r29]->model[0], work->unk_08[var_r29]->unk_14, sp14.x, sp14.y, sp14.z, sp8.x, sp8.y, sp8.z); + } + } +} + +void fn_1_115B4(omObjData *object) +{ + Vec spC; + float sp8; + float var_f31; + float var_f30; + float var_f29; + M427DllBss590Struct *var_r31; + M427DllPlayerWork *work; + s32 var_r28; + + work = object->data; + var_r28 = fn_1_155E0(object->trans.x, object->trans.y, object->trans.z, &sp8); + if ((var_r28 < 0) || (var_r28 >= (lbl_1_bss_580 - 1))) { + return; + } + var_r31 = &lbl_1_bss_590[var_r28]; + spC.x = var_r31->unk_44.x + (sp8 * var_r31->unk_50); + spC.y = 275.0f + (var_r31->unk_44.y + (sp8 * var_r31->unk_54)); + spC.z = var_r31->unk_44.z + (sp8 * var_r31->unk_58); + var_f29 = object->trans.x - spC.x; + spC.x += 0.4f * var_f29; + if (var_f29 < 0.0f) { + var_f30 = fabs(var_r31->unk_5C + (sp8 * (var_r31->unk_64 - var_r31->unk_5C))); + } + else { + var_f30 = fabs(var_r31->unk_60 + (sp8 * (var_r31->unk_68 - var_r31->unk_60))); + } + CenterM[work->unk_10].x = CenterM[work->unk_10].x + (0.06666667f * (spC.x - CenterM[work->unk_10].x)); + CenterM[work->unk_10].y = CenterM[work->unk_10].y + (0.06666667f * (spC.y - CenterM[work->unk_10].y)); + CenterM[work->unk_10].z = CenterM[work->unk_10].z + (0.06666667f * (spC.z - CenterM[work->unk_10].z)); + var_f31 = var_r31->unk_0C; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + var_f31 = 180.0f + (0.25f * (var_f31 - 180.0f)); + if (var_f30 != 0.0f) { + var_f30 = var_f29 / var_f30; + } + var_f31 -= 30.0f * var_f30; + CRotM[work->unk_10].y = fn_1_168FC(0.020000001f, CRotM[work->unk_10].y, 180.0f + var_f31); +} + +void fn_1_119C0(omObjData *object) +{ + float var_f31; + float var_f30; + M427DllBss590Struct *var_r31; + M427DllPlayerWork *work; + M427DllBss590Struct *var_r28; + + work = object->data; + var_r31 = &lbl_1_bss_590[1]; + var_r28 = &lbl_1_bss_590[27]; + var_f31 = var_r28->unk_80->z - var_r31->unk_80->z; + var_f30 = object->trans.z - var_r31->unk_80->z; + fn_1_1798(work->unk_10, var_f30 / var_f31); +} + +void fn_1_11A74(omObjData *object) +{ + M427DllPlayerWork2 *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + M427DllPlayerWork *var_r26; + + var_r31 = &lbl_1_bss_574[object->work[0]]; + object->data = var_r31; + var_r26 = &lbl_1_bss_578[object->work[1]]; + lbl_1_bss_578[object->work[1]].unk_08[object->work[2]] = var_r31; + var_r31->unk_00 = object->work[0]; + var_r31->unk_04 = object->work[1]; + var_r31->unk_08 = GWPlayerCfg[var_r31->unk_00].pad_idx; + var_r31->unk_0C = GWPlayerCfg[var_r31->unk_00].character; + var_r31->unk_10 = object->work[2]; + var_r31->unk_18 = GWPlayerCfg[var_r31->unk_00].iscom; + var_r31->unk_1C = GWPlayerCfg[var_r31->unk_00].diff; + var_r31->unk_20 = 0; + var_r31->unk_24 = 0; + var_r31->unk_28 = 0; + var_r31->unk_30 = 0; + var_r31->unk_34 = 0; + var_r31->unk_38 = 0; + var_r31->unk_3C = 0; + var_r31->unk_40 = var_r31->unk_44 = 0; + var_r31->unk_48 = var_r31->unk_4C = 0; + var_r31->unk_50 = 0; + var_r31->unk_54 = 0; + var_r31->unk_60 = lbl_1_data_618[var_r31->unk_1C]; + var_r31->unk_58 = frand() % var_r31->unk_60; + var_r31->unk_5C = frand() % 7; + var_r31->unk_64 = -1; + var_r31->unk_68 = var_r31->unk_6C = var_r31->unk_70 = 0.0f; + if (var_r31->unk_18 != 0) { + var_r26->unk_14 |= 1 << var_r31->unk_10; + } + var_r27 = var_r31->unk_0C; + object->model[0] = CharModelCreate(var_r27, 4); + Hu3DModelLayerSet(object->model[0], 2); + if (var_r31->unk_04 == 0) { + Hu3DModelCameraSet(object->model[0], 1); + } + else { + Hu3DModelCameraSet(object->model[0], 2); + } + if (var_r31->unk_10 != 0) { + fn_1_172F0(object->model[0], 0.3f); + } + else { + fn_1_172F0(object->model[0], 0.3f); + } + CharModelStepTypeSet(var_r27, 3); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r31->unk_0C + lbl_1_data_608[var_r29]); + } + var_r31->unk_2C = 0; + CharModelMotionSet(var_r31->unk_0C, object->motion[0]); + CharModelMotionDataClose(var_r27); + var_r28 = Hu3DLLightCreateV(object->model[0], &lbl_1_data_564, &lbl_1_data_570, &lbl_1_data_57C); + var_r31->unk_14 = var_r28; + Hu3DLLightStaticSet(object->model[0], var_r28, 1); + if (var_r31->unk_10 == 0) { + Hu3DLLightPointSet(object->model[0], var_r28, 80.0f, 0.95f, 3); + } + else { + Hu3DLLightPointSet(object->model[0], var_r28, 80.0f, 0.95f, 3); + } + Hu3DLLightColorSet(object->model[0], var_r28, 0xFF, 0xFF, 0xFF, 0xFF); + Hu3DLLightPosSet( + object->model[0], var_r28, lbl_1_data_564.x, lbl_1_data_564.y, lbl_1_data_564.z, lbl_1_data_570.x, lbl_1_data_570.y, lbl_1_data_570.z); + object->func = fn_1_11ED8; + (void)var_r29; +} + +void fn_1_11ED8(omObjData *object) +{ + M427DllPlayerWork2 *var_r31; + s32 var_r29; + M427DllPlayerWork *var_r28; + omObjData *var_r27; + + var_r31 = object->data; + var_r28 = &lbl_1_bss_578[var_r31->unk_04]; + var_r27 = lbl_1_bss_56C[var_r31->unk_04]; + var_r31->unk_40 = HuPadBtn[var_r31->unk_08]; + var_r31->unk_44 = HuPadBtnDown[var_r31->unk_08]; + if ((var_r31->unk_18 != 0) && (var_r31->unk_24 == 2)) { + if (var_r28->unk_14 == 3) { + fn_1_12580(object); + } + else { + fn_1_12518(object); + } + } + var_r31->unk_38 = var_r31->unk_3C = 0; + if (var_r31->unk_30 != 0) { + var_r31->unk_38 = 1; + } + if (var_r31->unk_34 != 0) { + var_r31->unk_3C = 1; + } + var_r31->unk_30 = var_r31->unk_34 = 0; + switch (var_r31->unk_24) { + case 0: + if (((var_r31->unk_20 & 0xF) == 0) && (var_r27->trans.z > 100.0f)) { + var_r31->unk_30 = 1; + var_r31->unk_34 = 1; + } + var_r29 = 1; + if (var_r29 != var_r31->unk_2C) { + var_r31->unk_2C = var_r29; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0x40000001); + } + break; + case 1: + var_r29 = 0; + if ((var_r29 != var_r31->unk_2C) && (CharModelMotionShiftIDGet(var_r31->unk_0C) == -1)) { + var_r31->unk_2C = var_r29; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0x40000001); + var_r31->unk_28 = 0; + } + break; + case 2: + if (fn_1_32EC() == 0) { + if ((var_r31->unk_44 & 0x100) != 0) { + var_r31->unk_30 = 1; + } + if ((var_r31->unk_44 & 0x200) != 0) { + var_r31->unk_34 = 1; + } + } + var_r31->unk_48 = var_r31->unk_40; + var_r31->unk_4C = var_r31->unk_44; + if ((var_r31->unk_30 != 0) || (var_r31->unk_34 != 0)) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + if ((CharModelMotionShiftIDGet(var_r31->unk_0C) == -1) + && ((var_r29 != var_r31->unk_2C) || (CharModelMotionEndCheck(var_r31->unk_0C) == 1))) { + if (var_r31->unk_2C == var_r29) { + CharModelMotionTimeSet(var_r31->unk_0C, 0.0f); + } + else { + var_r31->unk_2C = var_r29; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0); + } + } + break; + case 3: + var_r29 = 2; + if ((var_r29 != var_r31->unk_2C) && (CharModelMotionShiftIDGet(var_r31->unk_0C) == -1)) { + var_r31->unk_2C = var_r29; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0x40000001); + var_r31->unk_28 = 0; + } + if (var_r31->unk_2C == 2) { + if (++var_r31->unk_28 >= 240.0f) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + } + } + break; + case 4: + var_r29 = 0; + if ((var_r29 != var_r31->unk_2C) && (CharModelMotionShiftIDGet(var_r31->unk_0C) == -1)) { + var_r31->unk_2C = var_r29; + if (object->model[1] != -1) { + Hu3DMotionShiftSet(object->model[1], object->motion[var_r31->unk_2C], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + else { + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0x40000001); + } + var_r31->unk_28 = 0; + } + break; + case 5: + if (object->trans.z > -1300.0f) { + if ((var_r31->unk_20 & 0xF) == 0) { + var_r31->unk_30 = 1; + var_r31->unk_34 = 1; + } + var_r29 = 1; + } + else { + var_r29 = 0; + } + if (var_r31->unk_2C == 1) { + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + } + if ((CharModelMotionShiftIDGet(var_r31->unk_0C) == -1) && (var_r29 != var_r31->unk_2C)) { + var_r31->unk_2C = var_r29; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0x40000001); + } + break; + case 6: + var_r29 = 3; + if ((var_r29 != var_r31->unk_2C) && (CharModelMotionShiftIDGet(var_r31->unk_0C) == -1)) { + var_r31->unk_2C = var_r29; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 8.0f, 0); + HuAudCharVoicePlay(var_r31->unk_0C, 0x124); + var_r31->unk_28 = 0; + } + break; + case 7: + break; + } + var_r31->unk_20++; +} + +void fn_1_12514(omObjData *object) { } + +void fn_1_12518(omObjData *object) +{ + M427DllPlayerWork *var_r31; + M427DllPlayerWork2 *var_r30; + M427DllPlayerWork2 *var_r29; + + var_r30 = object->data; + var_r31 = &lbl_1_bss_578[var_r30->unk_04]; + if (var_r31->unk_14 == 1) { + var_r29 = var_r31->unk_08[1]; + } + else { + var_r29 = var_r31->unk_08[0]; + } + var_r30->unk_40 = var_r29->unk_48; + var_r30->unk_44 = var_r29->unk_4C; +} + +void fn_1_12580(omObjData *var_r24) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + M427DllPlayerWork2 *var_r31; + M427DllBss590Struct *var_r30; + omObjData *var_r29; + M427DllPlayerWork *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + var_r31 = var_r24->data; + var_r28 = &lbl_1_bss_578[var_r31->unk_04]; + var_r29 = lbl_1_bss_56C[var_r31->unk_04]; + var_r31->unk_40 = 0; + var_r31->unk_44 = 0; + var_r26 = fn_1_155E0(var_r29->trans.x, var_r29->trans.y, var_r29->trans.z, NULL); + if ((var_r31->unk_64 != var_r26) || (var_r31->unk_54 > 180.0f)) { + var_r31->unk_64 = var_r26; + switch (var_r31->unk_1C) { + case 0: + var_r27 = 2; + break; + case 1: + var_r27 = 2; + break; + case 2: + var_r27 = 3; + break; + case 3: + var_r27 = 4; + break; + } + if ((var_r31->unk_64 >= 0) && (var_r31->unk_64 < (lbl_1_bss_580 - var_r27)) && (var_r31->unk_64 <= (lbl_1_bss_580 - 2))) { + var_r26 = var_r31->unk_64 + var_r27; + var_r30 = &lbl_1_bss_590[var_r26]; + var_f31 = 0.5f * (var_r30->unk_64 + var_r30->unk_68); + var_f30 = (0.6f - (0.1f * var_r31->unk_1C)) - (0.1f * var_r31->unk_1C * ((frand() & 0x7F) / 127.0f)); + if (var_f30 > 1.0f) { + var_f30 = 1.0f; + } + else if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + var_f31 *= var_f30; + if ((frand() & 1) != 0) { + var_f31 *= -1.0f; + } + var_r31->unk_68 = var_r30->unk_80->x + var_f31; + var_r31->unk_6C = var_r30->unk_80->y; + var_r31->unk_70 = var_r30->unk_80->z; + } + else { + var_r30 = &lbl_1_bss_590[lbl_1_bss_580 - 1]; + var_r31->unk_68 = var_r30->unk_80->x; + var_r31->unk_6C = var_r30->unk_80->y; + var_r31->unk_70 = var_r30->unk_80->z; + } + var_r31->unk_54 = 0; + } + var_r25 = var_r31->unk_60 + var_r31->unk_5C; + if (var_r28->unk_20 != 0) { + var_r25 = 5; + } + if (++var_r31->unk_58 > var_r25) { + var_r31->unk_58 = 0; + var_r31->unk_5C = frand() % 7; + var_f28 = var_r31->unk_68 - var_r29->trans.x; + var_f27 = var_r31->unk_70 - var_r29->trans.z; + var_f31 = fn_1_16594(atan2d(var_f28, var_f27), var_r28->unk_64); + if (fabs(var_f31) < (30.0f - (5.0f * var_r31->unk_1C))) { + if (var_r31->unk_1C > 2) { + var_f29 = 0.25f * (var_r28->unk_58 - var_r28->unk_5C); + if (var_f29 > 10.0f) { + var_r31->unk_44 |= 0x100; + } + else if (var_f29 < -10.0f) { + var_r31->unk_44 |= 0x200; + } + else { + var_r31->unk_44 |= 0x300; + } + } + else { + var_r31->unk_44 |= 0x300; + } + } + else if (var_f31 < 0.0f) { + var_r31->unk_44 |= 0x200; + } + else { + var_r31->unk_44 |= 0x100; + } + } + var_r31->unk_50++; + var_r31->unk_54++; +} + +void fn_1_12B08(void) +{ + Vec sp20; + float sp1C; + float sp18; + float sp14; + float sp10; + float spC; + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + M427DllBss590Struct *var_r31; + s32 var_r30; + M427DllBss57CStruct *var_r29; + + lbl_1_bss_580 = 0x1D; + lbl_1_bss_584 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_580 * sizeof(Vec), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_584, 0, lbl_1_bss_580 * sizeof(Vec)); + for (var_r30 = 0; var_r30 < lbl_1_bss_580; var_r30++) { + lbl_1_bss_584[var_r30].x = 0.5f * (lbl_1_data_260[var_r30].x + lbl_1_data_3BC[var_r30].x); + lbl_1_bss_584[var_r30].y = 0.5f * (lbl_1_data_260[var_r30].y + lbl_1_data_3BC[var_r30].y); + lbl_1_bss_584[var_r30].z = 0.5f * (lbl_1_data_260[var_r30].z + lbl_1_data_3BC[var_r30].z); + } + lbl_1_bss_58C = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_580 * sizeof(Vec), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_58C, 0, lbl_1_bss_580 * sizeof(Vec)); + for (var_r30 = 0; var_r30 < lbl_1_bss_580; var_r30++) { + VECSubtract(&lbl_1_bss_584[var_r30], &lbl_1_data_260[var_r30], &lbl_1_bss_58C[var_r30]); + VECNormalize(&lbl_1_bss_58C[var_r30], &lbl_1_bss_58C[var_r30]); + VECScale(&lbl_1_bss_58C[var_r30], &lbl_1_bss_58C[var_r30], 200.0f); + VECAdd(&lbl_1_bss_58C[var_r30], &lbl_1_data_260[var_r30], &lbl_1_bss_58C[var_r30]); + } + lbl_1_bss_588 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_580 * sizeof(Vec), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_588, 0, lbl_1_bss_580 * sizeof(Vec)); + for (var_r30 = 0; var_r30 < lbl_1_bss_580; var_r30++) { + VECSubtract(&lbl_1_bss_584[var_r30], &lbl_1_data_3BC[var_r30], &lbl_1_bss_588[var_r30]); + VECNormalize(&lbl_1_bss_588[var_r30], &lbl_1_bss_588[var_r30]); + VECScale(&lbl_1_bss_588[var_r30], &lbl_1_bss_588[var_r30], 200.0f); + VECAdd(&lbl_1_bss_588[var_r30], &lbl_1_data_3BC[var_r30], &lbl_1_bss_588[var_r30]); + } + var_r31 = lbl_1_bss_590 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_580 * sizeof(M427DllBss590Struct), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_590, 0, lbl_1_bss_580 * sizeof(M427DllBss590Struct)); + for (var_r30 = 0; var_r30 < lbl_1_bss_580; var_r30++, var_r31++) { + var_r31->unk_00 = var_r30; + var_r31->unk_04 = var_r30 + 1; + var_r31->unk_08 = var_r30 - 1; + if (var_r31->unk_04 >= lbl_1_bss_580) { + var_r31->unk_04 = -1; + } + if (var_r31->unk_08 >= lbl_1_bss_580) { + var_r31->unk_08 = -1; + } + var_r31->unk_78 = &lbl_1_bss_58C[var_r30]; + var_r31->unk_7C = &lbl_1_bss_588[var_r30]; + var_r31->unk_80 = &lbl_1_bss_584[var_r30]; + if (var_r31->unk_04 < 0) { + var_r31->unk_0C = 180.0f; + var_r31->unk_70 = 180.0f; + var_r31->unk_74 = 180.0f; + } + else { + var_r31->unk_0C + = atan2d(lbl_1_bss_584[var_r31->unk_04].x - lbl_1_bss_584[var_r30].x, lbl_1_bss_584[var_r31->unk_04].z - lbl_1_bss_584[var_r30].z); + var_r31->unk_70 + = atan2d(lbl_1_bss_58C[var_r31->unk_04].x - lbl_1_bss_58C[var_r30].x, lbl_1_bss_58C[var_r31->unk_04].z - lbl_1_bss_58C[var_r30].z); + var_r31->unk_74 + = atan2d(lbl_1_bss_588[var_r31->unk_04].x - lbl_1_bss_588[var_r30].x, lbl_1_bss_588[var_r31->unk_04].z - lbl_1_bss_588[var_r30].z); + } + if (var_r31->unk_08 < 0) { + var_r31->unk_10 = 0.0f; + } + else { + var_r31->unk_10 + = atan2d(lbl_1_bss_584[var_r31->unk_08].x - lbl_1_bss_584[var_r30].x, lbl_1_bss_584[var_r31->unk_08].z - lbl_1_bss_584[var_r30].z); + } + if (var_r31->unk_04 < 0) { + var_r31->unk_6C = 0.0f; + sp20.x = lbl_1_bss_58C[var_r30].x + lbl_1_bss_590[var_r30 - 1].unk_14[1].x; + sp20.y = lbl_1_bss_58C[var_r30].y + lbl_1_bss_590[var_r30 - 1].unk_14[1].y; + sp20.z = lbl_1_bss_58C[var_r30].z + lbl_1_bss_590[var_r30 - 1].unk_14[1].z; + fn_1_16E3C(&lbl_1_data_260[var_r30], &sp20, &var_r31->unk_14[0], 0); + sp20.x = lbl_1_bss_588[var_r30].x + lbl_1_bss_590[var_r30 - 1].unk_2C[1].x; + sp20.y = lbl_1_bss_588[var_r30].y + lbl_1_bss_590[var_r30 - 1].unk_2C[1].y; + sp20.z = lbl_1_bss_588[var_r30].z + lbl_1_bss_590[var_r30 - 1].unk_2C[1].z; + fn_1_16E3C(&lbl_1_data_3BC[var_r30], &sp20, &var_r31->unk_2C[0], 0); + sp20.x = lbl_1_bss_584[var_r30].x + lbl_1_bss_590[var_r30 - 1].unk_50; + sp20.y = lbl_1_bss_584[var_r30].y + lbl_1_bss_590[var_r30 - 1].unk_54; + sp20.z = lbl_1_bss_584[var_r30].z + lbl_1_bss_590[var_r30 - 1].unk_58; + fn_1_16E3C(&lbl_1_bss_584[var_r30], &sp20, &var_r31->unk_44, 0); + } + else { + sp20.x = lbl_1_bss_584[var_r30 + 1].x - lbl_1_bss_584[var_r30].x; + sp20.y = lbl_1_bss_584[var_r30 + 1].y - lbl_1_bss_584[var_r30].y; + sp20.z = lbl_1_bss_584[var_r30 + 1].z - lbl_1_bss_584[var_r30].z; + var_r31->unk_6C = sqrtf((sp20.z * sp20.z) + ((sp20.x * sp20.x) + (sp20.y * sp20.y))); + fn_1_16E3C(&lbl_1_bss_58C[var_r30], &lbl_1_bss_58C[var_r31->unk_04], &var_r31->unk_14[0], 0); + fn_1_16E3C(&lbl_1_bss_588[var_r30], &lbl_1_bss_588[var_r31->unk_04], &var_r31->unk_2C[0], 0); + fn_1_16E3C(&lbl_1_bss_584[var_r30], &lbl_1_bss_584[var_r31->unk_04], &var_r31->unk_44, 0); + } + sp20.x = lbl_1_bss_58C[var_r30].x - lbl_1_bss_584[var_r30].x; + sp20.z = lbl_1_bss_58C[var_r30].z - lbl_1_bss_584[var_r30].z; + sp20.y = 0.0f; + var_r31->unk_5C = sqrtf((sp20.z * sp20.z) + ((sp20.x * sp20.x) + (sp20.y * sp20.y))); + sp20.x = lbl_1_bss_588[var_r30].x - lbl_1_bss_584[var_r30].x; + sp20.z = lbl_1_bss_588[var_r30].z - lbl_1_bss_584[var_r30].z; + sp20.y = 0.0f; + var_r31->unk_60 = sqrtf((sp20.z * sp20.z) + ((sp20.x * sp20.x) + (sp20.y * sp20.y))); + if (var_r31->unk_04 < 0) { + var_r31->unk_64 = var_r31->unk_5C; + var_r31->unk_68 = var_r31->unk_60; + } + else { + sp20.x = lbl_1_bss_58C[var_r31->unk_04].x - lbl_1_bss_584[var_r31->unk_04].x; + sp20.z = lbl_1_bss_58C[var_r31->unk_04].z - lbl_1_bss_584[var_r31->unk_04].z; + sp20.y = 0.0f; + var_r31->unk_64 = sqrtf((sp20.z * sp20.z) + ((sp20.x * sp20.x) + (sp20.y * sp20.y))); + sp20.x = lbl_1_bss_588[var_r31->unk_04].x - lbl_1_bss_584[var_r31->unk_04].x; + sp20.z = lbl_1_bss_588[var_r31->unk_04].z - lbl_1_bss_584[var_r31->unk_04].z; + sp20.y = 0.0f; + var_r31->unk_68 = sqrtf((sp20.z * sp20.z) + ((sp20.x * sp20.x) + (sp20.y * sp20.y))); + } + } + lbl_1_bss_558 = lbl_1_data_260; + lbl_1_bss_554 = lbl_1_data_3BC; + lbl_1_bss_550 = lbl_1_bss_584; + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x40 * sizeof(M427DllBss57CStruct), MEMORY_DEFAULT_NUM); + lbl_1_bss_57C = var_r29; + memset(lbl_1_bss_57C, 0, 0x40 * sizeof(M427DllBss57CStruct)); + for (var_r30 = 0; var_r30 < 0x40; var_r30++, var_r29++) { + var_r29->unk_00 = var_r30; + var_r29->unk_04 = -1; + var_r29->unk_08 = -1; + var_r29->unk_0C = 0; + var_r29->unk_10 = 0; + var_r29->unk_14 = var_r29->unk_18 = 0; + } +} + +void fn_1_13F24(void) +{ + M427DllBss57CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_57C, var_r30 = 0; var_r30 < 0x40; var_r30 += 1, var_r31++) { + if ((var_r31->unk_04 >= 0) && (var_r31->unk_08 >= 0) && (var_r31->unk_18 >= 0)) { + if (++var_r31->unk_14 > var_r31->unk_18) { + fn_1_1607C(var_r30); + } + } + } +} + +void fn_1_13FB8(void) { } + +GXColor lbl_1_data_648 = { 0xFF, 0xFF, 0xFF, 0xFF }; +GXColor lbl_1_data_64C = { 0xFF, 0, 0, 0xFF }; +GXColor lbl_1_data_650 = { 0xFF, 0xFF, 0, 0xFF }; + +void fn_1_13FBC(ModelData *model, Mtx matrix) +{ + Mtx sp70; + float var_f31; + float var_f30; + float var_f29; + M427DllBss57CStruct *var_r31; + M427DllBss590Struct *var_r30; + s16 var_r29; + s16 var_r28; + M427DllPlayerWork *var_r27; + M427DllPlayerWork2 *var_r26; + s32 *var_r25; + omObjData *var_r24; + + var_r25 = model->unk_120; + var_r27 = &lbl_1_bss_578[*var_r25]; + var_r24 = lbl_1_bss_56C[*var_r25]; + GXLoadPosMtxImm(matrix, 0); + PSMTXInvXpose(matrix, sp70); + GXLoadNrmMtxImm(sp70, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + 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, GX_TRUE, GX_TEVREG0); + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + GXSetLineWidth(0x10, GX_TO_ZERO); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, lbl_1_data_260, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &lbl_1_data_648, sizeof(GXColor)); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D); + for (var_r29 = 0; var_r29 < 0x1DU; var_r29++) { + GXPosition1x16(var_r29); + GXColor1x16(0); + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, &lbl_1_data_3BC, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &lbl_1_data_648, sizeof(GXColor)); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D); + for (var_r29 = 0; var_r29 < 0x1DU; var_r29++) { + GXPosition1x16(var_r29); + GXColor1x16(0); + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, lbl_1_bss_584, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &lbl_1_data_650, sizeof(GXColor)); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D); + for (var_r29 = 0; var_r29 < lbl_1_bss_580; var_r29++) { + GXPosition1x16(var_r29); + GXColor1x16(0); + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXBegin(GX_LINES, GX_VTXFMT0, lbl_1_bss_580 * 4); + for (var_r30 = lbl_1_bss_590, var_r29 = 0; var_r29 < lbl_1_bss_580; var_r29++, var_r30++) { + GXPosition3f32(var_r30->unk_78->x, var_r30->unk_78->y, var_r30->unk_78->z); + GXColor4u8(lbl_1_data_64C.r, lbl_1_data_64C.g, lbl_1_data_64C.b, lbl_1_data_64C.a); + GXPosition3f32(var_r30->unk_80->x, var_r30->unk_80->y, var_r30->unk_80->z); + GXColor4u8(lbl_1_data_64C.r, lbl_1_data_64C.g, lbl_1_data_64C.b, lbl_1_data_64C.a); + GXPosition3f32(var_r30->unk_7C->x, var_r30->unk_7C->y, var_r30->unk_7C->z); + GXColor4u8(lbl_1_data_64C.r, lbl_1_data_64C.g, lbl_1_data_64C.b, lbl_1_data_64C.a); + GXPosition3f32(var_r30->unk_80->x, var_r30->unk_80->y, var_r30->unk_80->z); + GXColor4u8(lbl_1_data_64C.r, lbl_1_data_64C.g, lbl_1_data_64C.b, lbl_1_data_64C.a); + } + for (var_r29 = 0, var_r31 = lbl_1_bss_57C; var_r29 < 0x40; var_r29++, var_r31++) { + if ((var_r31->unk_04 >= 0) && (var_r31->unk_08 >= 0) && (var_r31->unk_10 == *var_r25) && (var_r31->unk_04 == 1)) { + switch (var_r31->unk_08) { + case 0: + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5); + var_f31 = 200.0f + fn_1_15714(var_r31->unk_1C.x, var_r31->unk_1C.z); + GXPosition3f32(var_r31->unk_1C.x, var_f31, var_r31->unk_1C.z); + GXColor4u8(0, 0xFF, 0, 0xFF); + GXPosition3f32(var_r31->unk_28.x, var_f31, var_r31->unk_1C.z); + GXColor4u8(0, 0xFF, 0, 0xFF); + GXPosition3f32(var_r31->unk_28.x, var_f31, var_r31->unk_28.z); + GXColor4u8(0, 0xFF, 0, 0xFF); + GXPosition3f32(var_r31->unk_1C.x, var_f31, var_r31->unk_28.z); + GXColor4u8(0, 0xFF, 0, 0xFF); + GXPosition3f32(var_r31->unk_1C.x, var_f31, var_r31->unk_1C.z); + GXColor4u8(0, 0xFF, 0, 0xFF); + break; + case 1: + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0xA); + var_f31 = 200.0f + fn_1_15714(var_r31->unk_1C.x, var_r31->unk_1C.z); + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + var_f30 = var_r31->unk_1C.x + (var_r31->unk_34 * sind((40.0f * var_r28))); + var_f29 = var_r31->unk_1C.z + (var_r31->unk_34 * cosd((40.0f * var_r28))); + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0, 0xFF, 0, 0xFF); + } + break; + } + } + } + for (var_r29 = 0, var_r31 = lbl_1_bss_57C; var_r29 < 0x40; var_r29++, var_r31++) { + if ((var_r31->unk_04 >= 0) && (var_r31->unk_08 >= 0) && (var_r31->unk_10 == *var_r25) && (var_r31->unk_04 == 0)) { + switch (var_r31->unk_08) { + case 0: + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5); + var_f31 = 200.0f + fn_1_15714(var_r31->unk_1C.x, var_r31->unk_1C.z); + GXPosition3f32(var_r31->unk_1C.x, var_f31, var_r31->unk_1C.z); + GXColor4u8(0, 0, 0xFF, 0xFF); + GXPosition3f32(var_r31->unk_28.x, var_f31, var_r31->unk_1C.z); + GXColor4u8(0, 0, 0xFF, 0xFF); + GXPosition3f32(var_r31->unk_28.x, var_f31, var_r31->unk_28.z); + GXColor4u8(0, 0, 0xFF, 0xFF); + GXPosition3f32(var_r31->unk_1C.x, var_f31, var_r31->unk_28.z); + GXColor4u8(0, 0, 0xFF, 0xFF); + GXPosition3f32(var_r31->unk_1C.x, var_f31, var_r31->unk_1C.z); + GXColor4u8(0, 0, 0xFF, 0xFF); + break; + case 1: + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0xA); + var_f31 = 200.0f + fn_1_15714(var_r31->unk_1C.x, var_r31->unk_1C.z); + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + var_f30 = var_r31->unk_1C.x + (var_r31->unk_34 * sind((40.0f * var_r28))); + var_f29 = var_r31->unk_1C.z + (var_r31->unk_34 * cosd((40.0f * var_r28))); + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0, 0, 0xFF, 0xFF); + } + break; + } + } + } + if ((var_r24 == NULL) || (var_r27 == NULL)) { + return; + } + if ((var_r27->unk_00[0] == NULL) || (var_r27->unk_08[0] == NULL)) { + return; + } + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0xA); + var_f31 = 100.0f + var_r24->trans.y; + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + var_f30 = var_r24->trans.x + (200.0 * sind((40.0f * var_r28))); + var_f30 = var_f30; + var_f29 = var_r24->trans.z + (200.0 * cosd((40.0f * var_r28))); + var_f29 = var_f29; + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0xFF, 0, 0xFF, 0xFF); + } + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 4); + var_r26 = var_r27->unk_08[0]; + var_f30 = var_r26->unk_68; + var_f29 = var_r26->unk_70; + var_f31 = 100.0f + fn_1_15714(var_f30, var_f29); + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0xFF, 0x80, 0, 0xFF); + GXPosition3f32(100.0f + var_f30, 200.0f + var_f31, var_f29); + GXColor4u8(0xFF, 0x80, 0, 0xFF); + GXPosition3f32(var_f30 - 100.0f, 200.0f + var_f31, var_f29); + GXColor4u8(0xFF, 0x80, 0, 0xFF); + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0xFF, 0x80, 0, 0xFF); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 4); + var_r26 = var_r27->unk_08[1]; + var_f30 = var_r26->unk_68; + var_f29 = var_r26->unk_70; + var_f31 = 100.0f + fn_1_15714(var_f30, var_f29); + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0, 0x80, 0xFF, 0xFF); + GXPosition3f32(100.0f + var_f30, 200.0f + var_f31, var_f29); + GXColor4u8(0, 0x80, 0xFF, 0xFF); + GXPosition3f32(var_f30 - 100.0f, 200.0f + var_f31, var_f29); + GXColor4u8(0, 0x80, 0xFF, 0xFF); + GXPosition3f32(var_f30, var_f31, var_f29); + GXColor4u8(0, 0x80, 0xFF, 0xFF); +} + +void fn_1_154B8(void) { } + +s32 fn_1_154BC(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + s32 var_r31; + s32 var_r30; + + var_r30 = -1; + var_f27 = 1e7f; + for (var_r31 = 0; var_r31 < lbl_1_bss_580; var_r31++) { + var_f31 = lbl_1_bss_590[var_r31].unk_80->x - arg8; + var_f30 = lbl_1_bss_590[var_r31].unk_80->y - arg9; + var_f29 = lbl_1_bss_590[var_r31].unk_80->z - argA; + var_f28 = (var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 < var_f27) { + var_r30 = var_r31; + var_f27 = var_f28; + } + } + return var_r30; +} + +s32 fn_1_155E0(float arg8, float arg9, float argA, float *arg0) +{ + float var_f31; + float var_f30; + double var_f29; + double var_f28; + M427DllBss590Struct *var_r31; + s32 var_r30; + M427DllBss590Struct *var_r29; + + for (var_r30 = 0; var_r30 < (lbl_1_bss_580 - 1); var_r30++) { + var_r31 = &lbl_1_bss_590[var_r30]; + var_r29 = &lbl_1_bss_590[var_r30 + 1]; + if ((argA < var_r31->unk_80->z) && (argA >= var_r29->unk_80->z)) { + var_f31 = var_r29->unk_80->z - var_r31->unk_80->z; + if ((arg0 != NULL) && (var_f31 != 0.0f)) { + *arg0 = fabs((argA - var_r31->unk_80->z) / var_f31); + } + break; + } + } + return var_r30; +} + +float fn_1_15714(float arg8, float arg9) +{ + float sp8; + M427DllBss590Struct *var_r31; + s32 var_r28; + M427DllBss590Struct *var_r26; + + var_r28 = fn_1_155E0(0.0f, 0.0f, arg9, &sp8); + var_r31 = &lbl_1_bss_590[var_r28]; + if ((var_r28 < 0) || (var_r28 >= (lbl_1_bss_580 - 1))) { + return var_r31->unk_80->y; + } + var_r26 = &lbl_1_bss_590[var_r28 + 1]; + return var_r31->unk_80->y + (sp8 * (var_r26->unk_80->y - var_r31->unk_80->y)); +} + +void fn_1_158D8(float arg8, float var_f30, Vec *var_r31) +{ + float sp8; + M427DllBss590Struct *var_r30; + M427DllBss590Struct *var_r29; + s32 var_r26; + + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r26 = fn_1_155E0(0.0f, 0.0f, var_f30, &sp8); + var_r30 = &lbl_1_bss_590[var_r26]; + if ((var_r26 < 0) || (var_r26 >= (lbl_1_bss_580 - 1))) { + return; + } + var_r29 = &lbl_1_bss_590[var_r26 + 1]; + if (var_r30->unk_80->y > var_r29->unk_80->y) { + var_r31->x = var_r29->unk_80->x - var_r30->unk_80->x; + var_r31->z = var_r29->unk_80->z - var_r30->unk_80->z; + VECNormalize(var_r31, var_r31); + } +} + +s32 fn_1_15AF0(s32 arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float sp8; + float var_f31; + float var_f29; + M427DllBss590Struct *var_r30; + + *arg3 = *arg2; + arg4->x = arg4->y = arg4->z = 0.0f; + if (arg0 < 0) { + arg0 = fn_1_155E0(0.0f, 0.0f, arg2->z, &sp8); + } + if ((arg0 < 0) || (arg0 >= (lbl_1_bss_580 - 1))) { + return 0; + } + var_r30 = &lbl_1_bss_590[arg0]; + sp3C.x = arg2->x - arg1->x; + sp3C.y = arg2->y - arg1->y; + sp3C.z = arg2->z - arg1->z; + VECNormalize(&sp3C, &sp3C); + spC.x = var_r30->unk_44.x + (sp8 * var_r30->unk_50); + spC.y = var_r30->unk_44.y + (sp8 * var_r30->unk_54); + spC.z = var_r30->unk_44.z + (sp8 * var_r30->unk_58); + var_f29 = fabs(arg2->x - spC.x); + if (arg2->x < spC.x) { + var_f31 = var_r30->unk_5C + (sp8 * (var_r30->unk_64 - var_r30->unk_5C)); + if (var_f29 > var_f31) { + sp30 = *arg2; + fn_1_17048(var_r30->unk_14, NULL, &sp30, &sp24); + arg3->x = sp24.x; + arg3->y = sp24.y; + arg3->z = sp24.z; + arg4->x = arg3->x - arg2->x; + arg4->y = arg3->y - arg2->y; + arg4->z = arg3->z - arg2->z; + return 1; + } + goto block_18; + } + var_f31 = var_r30->unk_60 + (sp8 * (var_r30->unk_68 - var_r30->unk_60)); + if (var_f29 > var_f31) { + sp30 = *arg2; + fn_1_17048(var_r30->unk_2C, NULL, &sp30, &sp18); + arg3->x = sp18.x; + arg3->y = sp18.y; + arg3->z = sp18.z; + arg4->x = arg3->x - arg2->x; + arg4->y = arg3->y - arg2->y; + arg4->z = arg3->z - arg2->z; + return 1; + } +block_18: + return 0; +} + +s32 fn_1_15F10(Vec arg0, Vec arg1, s32 arg2, s32 arg3, s32 arg4) +{ + M427DllBss57CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_57C, var_r30 = 0; var_r30 < 0x40; var_r30++, var_r31++) { + if ((var_r31->unk_04 < 0) || (var_r31->unk_08 < 0)) { + break; + } + } + if (var_r30 >= 0x40) { + return -1; + } + var_r31->unk_04 = arg2; + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_10 = arg4; + var_r31->unk_18 = arg3; + var_r31->unk_14 = 0; + var_r31->unk_1C = arg0; + var_r31->unk_28 = arg1; + return var_r30; +} + +s32 fn_1_15FD0(Vec arg0, float arg8, s32 arg1, s32 arg2, s32 arg3) +{ + M427DllBss57CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_57C, var_r30 = 0; var_r30 < 0x40; var_r30++, var_r31++) { + if ((var_r31->unk_04 < 0) || (var_r31->unk_08 < 0)) { + break; + } + } + if (var_r30 >= 0x40) { + return -1; + } + var_r31->unk_04 = arg1; + var_r31->unk_08 = 1; + var_r31->unk_0C = 0; + var_r31->unk_10 = arg3; + var_r31->unk_18 = arg2; + var_r31->unk_14 = 0; + var_r31->unk_1C = arg0; + var_r31->unk_34 = arg8; + return var_r30; +} + +void fn_1_1607C(s32 arg0) +{ + M427DllBss57CStruct *var_r31; + + if ((arg0 < 0) || (arg0 >= 0x40)) { + return; + } + var_r31 = &lbl_1_bss_57C[arg0]; + var_r31->unk_04 = -1; + var_r31->unk_08 = -1; + var_r31->unk_14 = var_r31->unk_18 = 0; +} + +s32 fn_1_160D4(s32 arg0, Vec *arg1, float arg8) +{ + float var_f31; + float var_f30; + float var_f29; + M427DllBss57CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_57C, var_r30 = 0; var_r30 < 0x40; var_r30++, var_r31++) { + if ((var_r31->unk_04 >= 0) && (var_r31->unk_08 >= 0) && (var_r31->unk_10 == arg0) && ((var_r31->unk_04 == 1) || (var_r31->unk_04 == 2))) { + switch (var_r31->unk_08) { + case 0: + var_f31 = arg1->x - var_r31->unk_1C.x; + var_f30 = arg1->z - var_r31->unk_1C.z; + if ((arg1->x >= (var_r31->unk_1C.x - arg8)) && (arg1->x <= (var_r31->unk_28.x + arg8)) && (arg1->z >= (var_r31->unk_1C.z - arg8)) + && (arg1->z <= (var_r31->unk_28.z + arg8))) { + return 1; + } + break; + case 1: + var_f31 = arg1->x - var_r31->unk_1C.x; + var_f30 = arg1->z - var_r31->unk_1C.z; + var_f29 = var_r31->unk_34 + arg8; + if (((var_f31 * var_f31) + (var_f30 * var_f30)) < (var_f29 * var_f29)) { + return 1; + } + break; + } + } + } + return 0; +} + +s32 fn_1_16260(s32 arg0, Vec *arg2, Vec *arg3, Vec *arg4, float arg8) +{ + float var_f31; + float var_f30; + float var_f28; + M427DllBss57CStruct *var_r31; + s32 var_r30; + + *arg4 = *arg3; + for (var_r31 = lbl_1_bss_57C, var_r30 = 0; var_r30 < 0x40; var_r30++, var_r31++) { + if ((var_r31->unk_04 >= 0) && (var_r31->unk_08 >= 0) && (var_r31->unk_10 == arg0) && ((var_r31->unk_04 == 0) || (var_r31->unk_04 == 2))) { + switch (var_r31->unk_08) { + case 0: + var_f31 = arg3->x - var_r31->unk_1C.x; + var_f30 = arg3->z - var_r31->unk_1C.z; + if ((arg3->x >= (var_r31->unk_1C.x - arg8)) && (arg3->x <= (var_r31->unk_28.x + arg8)) && (arg3->z >= (var_r31->unk_1C.z - arg8)) + && (arg3->z <= (var_r31->unk_28.z + arg8))) { + return 1; + } + break; + case 1: + var_f31 = arg3->x - var_r31->unk_1C.x; + var_f30 = arg3->z - var_r31->unk_1C.z; + var_f28 = var_r31->unk_34 + arg8; + if (((var_f31 * var_f31) + (var_f30 * var_f30)) < (var_f28 * var_f28)) { + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 == 0.0f) { + var_f31 = 0.0f; + var_f30 = 1.0f; + } + else { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + var_f28 = var_r31->unk_34 + arg8; + arg4->x = var_r31->unk_1C.x + (var_f31 * var_f28); + arg4->z = var_r31->unk_1C.z + (var_f30 * var_f28); + arg4->y = arg3->y; + return 1; + } + break; + } + } + } + return 0; +} + +float fn_1_16594(float arg8, float arg9) +{ + float var_f31; + + if (arg8 >= 360.0f) { + arg8 -= 360.0f; + } + else if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (arg9 >= 360.0f) { + arg9 -= 360.0f; + } + else if (arg9 < 0.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + else if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +float fn_1_166AC(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f26; + + if (arg8 >= 360.0) { + arg8 -= 360.0; + } + else if (arg8 < 0.0) { + arg8 += 360.0; + } + if (arg9 >= 360.0) { + arg9 -= 360.0; + } + else if (arg9 < 0.0) { + arg9 += 360.0; + } + var_f30 = 360.0 + (arg8 - arg9); + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= argA) { + var_f31 = var_f30; + } + else { + var_f31 = argA; + } + } + else if ((360.0 - var_f30) <= argA) { + var_f31 = -(360.0 - var_f30); + } + else { + var_f31 = -argA; + } + var_f31 += arg9; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + } + else if (var_f31 < 0.0) { + var_f31 += 360.0; + } + return var_f31; +} + +float fn_1_168FC(float arg8, float arg9, float argA) +{ + float var_f24; + float var_f23; + + var_f23 = fn_1_16594(argA, arg9); + var_f24 = fabs(var_f23 * arg8); + return fn_1_166AC(argA, arg9, var_f24); +} + +void fn_1_16CF4(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + Vec sp14; + Vec sp8; + + sp14.x = arg1->x - arg0->x; + sp14.y = arg1->y - arg0->y; + sp14.z = arg1->z - arg0->z; + sp8.x = arg2->x - arg0->x; + sp8.y = arg2->y - arg0->y; + sp8.z = arg2->z - arg0->z; + arg3->x = (sp14.y * sp8.z) - (sp14.z * sp8.y); + arg3->y = (sp14.z * sp8.x) - (sp14.x * sp8.z); + arg3->z = (sp14.x * sp8.y) - (sp14.y * sp8.x); + VECNormalize(arg3, arg3); + arg3[1].x = (arg3->z * arg0->z) + ((arg3->x * arg0->x) + (arg3->y * arg0->y)); +} + +void fn_1_16E3C(Vec *arg0, Vec *arg1, Vec *arg2, s32 arg3) +{ + Vec spC; + + spC.x = arg1->x - arg0->x; + spC.y = arg1->y - arg0->y; + spC.z = arg1->z - arg0->z; + if (arg3 != 0) { + VECNormalize(&spC, &spC); + } + arg2->x = arg0->x; + arg2->y = arg0->y; + arg2->z = arg0->z; + arg2[1].x = spC.x; + arg2[1].y = spC.y; + arg2[1].z = spC.z; +} + +void fn_1_16EF8(Vec *arg0, float *arg1, Vec *arg2, Vec *arg3) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = (arg0[1].z * arg0[1].z) + ((arg0[1].x * arg0[1].x) + (arg0[1].y * arg0[1].y)); + var_f29 = (-arg0[0].z * arg0[1].z) + (arg2->z * arg0[1].z) + + ((-arg0[0].x * arg0[1].x) + (arg2->x * arg0[1].x) + ((-arg0[0].y * arg0[1].y) + (arg2->y * arg0[1].y))); + if (var_f30 != 0.0f) { + var_f31 = var_f29 / var_f30; + } + else { + var_f31 = 0.0f; + } + if (arg3 != NULL) { + arg3->x = arg0[0].x + (var_f31 * arg0[1].x); + arg3->y = arg0[0].y + (var_f31 * arg0[1].y); + arg3->z = arg0[0].z + (var_f31 * arg0[1].z); + } + if (arg1 != NULL) { + *arg1 = var_f31; + } +} + +typedef struct Vec3d { + double x; + double y; + double z; +} Vec3d; + +void fn_1_17048(Vec *arg0, float *arg1, Vec *arg2, Vec *arg3) +{ + Vec3d sp38; + Vec3d sp20; + Vec3d sp8; + double var_f31; + double var_f30; + double var_f29; + + sp20.x = 0.0; + sp20.y = 0.0; + sp20.z = 0.0; + sp38.x = arg0[1].x; + sp38.y = arg0[1].y; + sp38.z = arg0[1].z; + sp8.x = arg2->x - arg0->x; + sp8.y = arg2->y - arg0->y; + sp8.z = arg2->z - arg0->z; + + var_f30 = (sp38.z * arg0[1].z) + ((sp38.x * arg0[1].x) + (sp38.y * arg0[1].y)); + var_f29 = (-sp20.z * sp38.z) + (sp8.z * sp38.z) + ((-sp20.x * sp38.x) + (sp8.x * sp38.x) + ((-sp20.y * sp38.y) + (sp8.y * sp38.y))); + if (0.0 != var_f30) { + var_f31 = var_f29 / var_f30; + } + else { + var_f31 = 0.0; + } + if (arg3 != NULL) { + arg3->x = arg0->x + (float)(sp20.x + (var_f31 * sp38.x)); + arg3->y = arg0->y + (float)(sp20.y + (var_f31 * sp38.y)); + arg3->z = arg0->z + (float)(sp20.z + (var_f31 * sp38.z)); + } + if (arg1 != NULL) { + *arg1 = var_f31; + } +} + +void fn_1_17238(void) { } + +void fn_1_1723C(Mtx arg0, Vec *arg1) +{ + Vec sp8; + + sp8.x = (arg0[0][2] * arg1->z) + ((arg0[0][0] * arg1->x) + (arg0[0][1] * arg1->y)); + sp8.y = (arg0[1][2] * arg1->z) + ((arg0[1][0] * arg1->x) + (arg0[1][1] * arg1->y)); + sp8.z = (arg0[2][2] * arg1->z) + ((arg0[2][0] * arg1->x) + (arg0[2][1] * arg1->y)); + *arg1 = sp8; +} + +void fn_1_172F0(s32 arg0, float arg8) +{ + HsfMaterial *var_r31; + s32 var_r30; + HsfData *var_r29; + s32 var_r28; + ModelData *var_r27; + s32 var_r26; + + var_r27 = &Hu3DData[arg0]; + var_r29 = var_r27->hsfData; + var_r31 = var_r29->material; + var_r26 = var_r29->materialCnt; + for (var_r28 = 0; var_r28 < var_r26; var_r28++, var_r31++) { + var_r31->vtxMode = 1; + var_r30 = var_r31->litColor[0] * arg8; + if (var_r30 > 0xFF) { + var_r30 = 0xFF; + } + var_r31->litColor[0] = var_r30; + var_r30 = var_r31->litColor[1] * arg8; + if (var_r30 > 0xFF) { + var_r30 = 0xFF; + } + var_r31->litColor[1] = var_r30; + var_r30 = var_r31->litColor[2] * arg8; + if (var_r30 > 0xFF) { + var_r30 = 0xFF; + } + var_r31->litColor[2] = var_r30; + } +} + +s32 fn_1_17430(s32 arg0, s32 arg1, s32 arg2) +{ + s32 var_r31; + ModelData *var_r30; + ModelData *var_r29; + + var_r29 = &Hu3DData[arg0]; + var_r30 = &Hu3DData[arg2]; + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if (var_r30->unk_38[var_r31] == -1) { + break; + } + } + if (var_r31 == 8) { + return -1; + } + var_r30->unk_38[var_r31] = var_r29->unk_38[arg1]; + var_r30->attr |= 0x1000; + return var_r31; +} diff --git a/src/REL/m428Dll/main.c b/src/REL/m428Dll/main.c new file mode 100644 index 00000000..1ee62c82 --- /dev/null +++ b/src/REL/m428Dll/main.c @@ -0,0 +1,1094 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/init.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m428Dll.h" + +#ifndef __MWERKS__ +#include "game/ClusterExec.h" +#include "game/EnvelopeExec.h" +#include "game/ShapeExec.h" +#include "game/frand.h" +#endif + +typedef struct M428DllData0Struct { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ float unk_18; +} M428DllData0Struct; /* size = 0x1C */ + +typedef struct M428DllUnkStruct2 { + s16 unk_00[0x10]; + float unk_20[0x10]; + s32 unk_60; +} M428DllUnkStruct2; /* size = 0x64 */ + +typedef struct M428DllUnkStruct { + M428DllUnkStruct2 unk_00[0x10]; + ShadowData unk_640[0x10]; + ShadowData unk_FC0; +} M428DllUnkStruct; /* size = 0x1058 */ + +void fn_1_478(omObjData *); +void fn_1_25CC(omObjData *object); +void fn_1_261C(omObjData *arg0); +void fn_1_29E8(omObjData *object); +void fn_1_2ACC(s32 arg0); +void fn_1_2B8(omObjData *object); +void fn_1_2C90(ModelData *, float[3][4]); +void fn_1_2E2C(s32 arg0); +void fn_1_40A4(void); + +M428DllData0Struct lbl_1_data_0[3] = { + { 65.0f, 0.0f, 0.0f, 0.0f, 400.0f, 0.0f, 2000.0f }, + { 0.0f, 0.0f, 0.0f, 0.0f, 400.0f, 0.0f, 2000.0f }, + { 0.0f, 0.0f, 0.0f, 0.0f, 400.0f, 0.0f, 1575.0f }, +}; + +Vec lbl_1_data_54 = { -1000.0f, 2000.0f, 1000.0f }; +Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_6C = { 0.0f, 0.0f, -450.0f }; + +Process *lbl_1_bss_88; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; +u32 lbl_1_bss_7C; +s32 lbl_1_bss_78; +s32 lbl_1_bss_74; +s32 lbl_1_bss_70; +s32 lbl_1_bss_6C; +s32 lbl_1_bss_68; +s32 lbl_1_bss_64; +s32 lbl_1_bss_60; +float lbl_1_bss_58[2]; +s16 lbl_1_bss_50[4]; +s16 lbl_1_bss_48[4]; +s32 lbl_1_bss_38[4]; +float lbl_1_bss_28[4]; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +omObjData *lbl_1_bss_1C; +s32 lbl_1_bss_18; +omObjData *lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +char lbl_1_bss_4[8]; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + s32 var_r31; + Process *var_r30; + s32 var_r29; + + OSReport("******* M428ObjectSetup *********\n"); + var_r30 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_88 = var_r30; + omGameSysInit(var_r30); + Hu3DLightAllKill(); + Hu3DLighInit(); + lbl_1_bss_1C = omAddObjEx(var_r30, 0xFF, 2, 0, -1, fn_1_2B8); + lbl_1_bss_84 = lbl_1_bss_80 = -1; + HuAudSndGrpSet(0x35); + lbl_1_bss_7C = 0; + lbl_1_bss_78 = 0; + lbl_1_bss_68 = 0; + lbl_1_bss_64 = -1; + lbl_1_bss_60 = 0; + lbl_1_bss_24 = -1; + lbl_1_bss_20 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_50[var_r31] = -1; + lbl_1_bss_48[var_r31] = -1; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_38[var_r31] = -1; + } + var_r29 = GWGameStat.rumble; + lbl_1_bss_18 = var_r29; + Hu3DShadowCreate(45.0f, 1000.0f, 250000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_6C); + fn_1_2ACC(3); +} + +Vec lbl_1_data_9C = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_A8 = { -1.0f, -2.0f, -1.0f }; +GXColor lbl_1_data_B4 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +void fn_1_2B8(omObjData *var_r27) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = Hu3DGLightCreateV(&lbl_1_data_9C, &lbl_1_data_A8, &lbl_1_data_B4); + Hu3DGLightStaticSet(var_r28, 1); + Hu3DGLightInfinitytSet(var_r28); + for (var_r31 = 0, var_r30 = 0, var_r29 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[var_r31].group == 0) { + lbl_1_bss_50[var_r30] = var_r31; + lbl_1_bss_48[var_r30] = GWPlayerCfg[var_r31].character; + var_r30++; + } + else { + lbl_1_bss_50[var_r29 + 2] = var_r31; + lbl_1_bss_48[var_r29 + 2] = GWPlayerCfg[var_r31].character; + var_r29++; + } + } + if ((var_r30 != 2) || (var_r29 != 2)) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_50[var_r31] = var_r31; + lbl_1_bss_48[var_r31] = GWPlayerCfg[var_r31].character; + } + } + fn_1_43C8(lbl_1_bss_88); + fn_1_9F5C(lbl_1_bss_88); + var_r27->func = fn_1_478; +} + +void fn_1_478(omObjData *object) +{ + Vec sp5C; + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + switch (lbl_1_bss_7C) { + case 0: + lbl_1_bss_78++; + Hu3DCamera->fov = -1.0f; + Hu3DCamera[1].fov = -1.0f; + if (lbl_1_bss_78 > 3) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_20 = 0; + fn_1_11798(1); + lbl_1_bss_38[0] = HuAudFXPlay(0x65F); + if ((lbl_1_bss_38[1] = HuAudFXPlay(0x660)) != -1) { + lbl_1_bss_28[1] = 0.0f; + HuAudFXVolSet(lbl_1_bss_38[1], (s32)(127.0f * lbl_1_bss_28[1])); + HuAudFXPitchSet(lbl_1_bss_38[1], (s32)(8191.0f * lbl_1_bss_28[1])); + } + if ((lbl_1_bss_38[2] = HuAudFXPlay(0x661)) != -1) { + lbl_1_bss_28[2] = 0.0f; + HuAudFXVolSet(lbl_1_bss_38[2], (s32)(127.0f * lbl_1_bss_28[2])); + HuAudFXPitchSet(lbl_1_bss_38[2], (s32)(8191.0f * lbl_1_bss_28[2])); + } + Hu3DCamera->fov = 45.0f; + Hu3DCamera[1].fov = 45.0f; + lbl_1_bss_7C = 1; + lbl_1_bss_78 = 0; + } + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_7C = 2; + lbl_1_bss_78 = 0; + } + else { + sp2C.x = lbl_1_data_0->unk_00.x; + sp2C.y = lbl_1_data_0->unk_00.y; + sp2C.z = lbl_1_data_0->unk_00.z; + sp38.x = lbl_1_data_0->unk_0C.x; + sp38.y = lbl_1_data_0->unk_0C.y; + sp38.z = lbl_1_data_0->unk_0C.z; + fn_1_9A30(0, 1.0f, &sp38, &sp2C, lbl_1_data_0->unk_18); + fn_1_9A30(1, 1.0f, &sp38, &sp2C, lbl_1_data_0->unk_18); + } + break; + case 2: + if (++lbl_1_bss_78 == 0x78) { + sp2C.x = lbl_1_data_0[2].unk_00.x; + sp2C.y = lbl_1_data_0[2].unk_00.y; + sp2C.z = lbl_1_data_0[2].unk_00.z; + sp38.x = lbl_1_data_0[2].unk_0C.x; + sp38.y = lbl_1_data_0[2].unk_0C.y; + sp38.z = lbl_1_data_0[2].unk_0C.z; + fn_1_9A30(0, 300.0f, &sp38, &sp2C, lbl_1_data_0[2].unk_18); + fn_1_9A30(1, 300.0f, &sp38, &sp2C, lbl_1_data_0[2].unk_18); + } + if ((fn_1_F354() != 0) && (lbl_1_bss_78 >= 0x78)) { + sp2C.x = lbl_1_data_0[1].unk_00.x; + sp2C.y = lbl_1_data_0[1].unk_00.y; + sp2C.z = lbl_1_data_0[1].unk_00.z; + sp38.x = lbl_1_data_0[1].unk_0C.x; + sp38.y = lbl_1_data_0[1].unk_0C.y; + sp38.z = lbl_1_data_0[1].unk_0C.z; + fn_1_9A30(0, 42.0f, &sp38, &sp2C, lbl_1_data_0[1].unk_18); + fn_1_9A30(1, 42.0f, &sp38, &sp2C, lbl_1_data_0[1].unk_18); + lbl_1_bss_84 = MGSeqCreate(3, 0); + lbl_1_bss_7C = 3; + lbl_1_bss_78 = 0; + lbl_1_bss_68 = 0; + } + break; + case 3: + if (lbl_1_bss_84 != -1) { + var_r27 = MGSeqStatGet(lbl_1_bss_84); + if (((var_r27 & 0x10) != 0) && (lbl_1_bss_24 == -1)) { + lbl_1_bss_24 = HuAudSeqPlay(0x4B); + } + } + else { + var_r27 = 0; + } + if ((lbl_1_bss_84 == -1) || (var_r27 == 0)) { + lbl_1_bss_84 = -1; + lbl_1_bss_7C = 4; + lbl_1_bss_78 = 0; + lbl_1_bss_74 = 180.0f + 120.0f * (0.007874016f * (frand() & 0x7F)); + lbl_1_bss_70 = 90.0f + 60.0f * (0.007874016f * (frand() & 0x7F)); + lbl_1_bss_6C = 45.0f + (120.0f * (0.007874016f * (frand() & 0x7F))); + lbl_1_bss_58[0] = 15.0f; + lbl_1_bss_58[1] = 15.0f; + lbl_1_bss_68 = 0x4650; + } + break; + case 4: + if (++lbl_1_bss_78 >= lbl_1_bss_74) { + var_r29 = lbl_1_bss_78 - lbl_1_bss_74; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_58[var_r31] < 60.0f) { + var_r30 = 0; + } + else { + var_r30 = 1; + } + if (var_r29 <= (15.0f + (21.0f + lbl_1_bss_6C))) { + fn_1_9DE8(var_r31, 15.0f, 1); + fn_1_11754(var_r31, 0.05f); + if (var_r29 == 0) { + fn_1_F46C(var_r31, 0); + } + else if (var_r29 < lbl_1_bss_6C) { + fn_1_F454(var_r31, 1); + if ((var_r30 == 1) && (fn_1_F4E8(var_r31) == 0)) { + lbl_1_bss_58[var_r31] = 15.0f; + } + } + else if (var_r29 == lbl_1_bss_6C) { + if (var_r30 == 1) { + fn_1_F46C(var_r31, var_r30); + } + } + else if (var_r29 == (21.0f + lbl_1_bss_6C)) { + if (var_r30 == 0) { + fn_1_F454(var_r31, 2); + } + else { + fn_1_F454(var_r31, 3); + if (lbl_1_bss_18 == 0) { + fn_1_116C4(var_r31, 1); + } + if (var_r30 != 0) { + fn_1_F4B4(var_r31, lbl_1_bss_70, 3.125f); + } + } + } + } + else { + fn_1_9DE8(var_r31, lbl_1_bss_58[var_r31], 1); + if ((var_r29 < ((15.0f + lbl_1_bss_6C + lbl_1_bss_70) - 6.0f)) && (var_r30 == 1)) { + var_f31 = 0.10000000149011612 * sind((20.0f * var_r29)); + fn_1_11754(var_r31, 0.3f + var_f31); + } + if (var_r30 == 0) { + fn_1_F454(var_r31, 4); + } + else { + fn_1_F454(var_r31, 5); + } + } + } + if (var_r29 == (15.0f + lbl_1_bss_6C + lbl_1_bss_70)) { + fn_1_F454(0, 6); + fn_1_F454(1, 6); + } + else if (var_r29 > (15.0f + lbl_1_bss_6C + lbl_1_bss_70)) { + fn_1_9EA8(0); + fn_1_9EA8(1); + fn_1_11754(0, 0.0f); + fn_1_11754(1, 0.0f); + fn_1_F46C(0, -1); + fn_1_F46C(1, -1); + fn_1_F454(0, 0); + fn_1_F454(1, 0); + if ((frand() & 3) == 0) { + lbl_1_bss_58[0] = lbl_1_bss_58[1] = 15.0f; + } + else { + lbl_1_bss_58[0] = lbl_1_bss_58[1] = 60.0f; + } + lbl_1_bss_78 = 0; + lbl_1_bss_74 = 180.0f + 120.0f * (0.007874016f * (frand() & 0x7F)); + lbl_1_bss_70 = 90.0f + 60.0f * (0.007874016f * (frand() & 0x7F)); + lbl_1_bss_6C = 45.0f + (120.0f * (0.007874016f * (frand() & 0x7F))); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_58[var_r31] < 60.0f) { + var_r30 = 0; + } + else { + var_r30 = 1; + } + if ((var_r29 <= (15.0f + (21.0f + lbl_1_bss_6C))) || (var_r30 < 1)) { + if (lbl_1_bss_28[var_r31 + 1] < 0.5f) { + lbl_1_bss_28[var_r31 + 1] += 0.1f; + } + if (lbl_1_bss_28[var_r31 + 1] > 0.5f) { + lbl_1_bss_28[var_r31 + 1] -= 0.1f; + } + } + else { + if (lbl_1_bss_28[var_r31 + 1] < 1.0f) { + lbl_1_bss_28[var_r31 + 1] += 0.1f; + } + if (lbl_1_bss_28[var_r31 + 1] > 1.0f) { + lbl_1_bss_28[var_r31 + 1] = 1.0f; + } + } + } + } + else { + if (lbl_1_bss_28[1] > 0.0f) { + lbl_1_bss_28[1] -= 0.01f; + } + if (lbl_1_bss_28[1] < 0.0f) { + lbl_1_bss_28[1] = 0.0f; + } + if (lbl_1_bss_28[2] > 0.0f) { + lbl_1_bss_28[2] -= 0.01f; + } + if (lbl_1_bss_28[2] < 0.0f) { + lbl_1_bss_28[2] = 0.0f; + } + } + if (lbl_1_bss_38[1] != -1) { + HuAudFXVolSet(lbl_1_bss_38[1], (s32)(127.0f * lbl_1_bss_28[1])); + HuAudFXPitchSet(lbl_1_bss_38[1], (s32)(8191.0f * lbl_1_bss_28[1])); + } + if (lbl_1_bss_38[2] != -1) { + HuAudFXVolSet(lbl_1_bss_38[2], (s32)(127.0f * lbl_1_bss_28[2])); + HuAudFXPitchSet(lbl_1_bss_38[2], (s32)(8191.0f * lbl_1_bss_28[2])); + } + if ((lbl_1_bss_68 <= 1800.0f) && (lbl_1_bss_80 == -1)) { + lbl_1_bss_80 = MGSeqCreate(1, lbl_1_bss_68 / 60, -1, -1); + } + if (lbl_1_bss_80 != -1) { + var_r28 = (lbl_1_bss_68 + 0x3B) / 60; + if (var_r28 < 0) { + var_r28 = 0; + } + MGSeqParamSet(lbl_1_bss_80, 1, var_r28); + } + var_r26 = fn_1_F3BC(0); + var_r25 = fn_1_F3BC(1); + if ((--lbl_1_bss_68 < -1) || (var_r26 != 0) || (var_r25 != 0)) { + if (lbl_1_bss_80 != -1) { + MGSeqParamSet(lbl_1_bss_80, 2, -1); + } + lbl_1_bss_80 = -1; + lbl_1_bss_84 = MGSeqCreate(3, 1); + fn_1_9EA8(0); + fn_1_9EA8(1); + fn_1_11754(0, 0.0f); + fn_1_11754(1, 0.0f); + fn_1_F46C(0, -1); + fn_1_F46C(1, -1); + fn_1_F454(0, 0); + fn_1_F454(1, 0); + if (lbl_1_bss_38[0] != -1) { + HuAudFXFadeOut(lbl_1_bss_38[0], 0x64); + } + if (lbl_1_bss_38[1] != -1) { + HuAudFXFadeOut(lbl_1_bss_38[1], 0x64); + } + if (lbl_1_bss_38[2] != -1) { + HuAudFXFadeOut(lbl_1_bss_38[2], 0x64); + } + if (lbl_1_bss_24 != -1) { + HuAudSeqFadeOut(lbl_1_bss_24, 0x64); + } + if ((var_r26 != 0) && (var_r25 != 0)) { + if ((frand() & 1) != 0) { + lbl_1_bss_64 = 0; + } + else { + lbl_1_bss_64 = 1; + } + } + else if (var_r26 != 0) { + lbl_1_bss_64 = 0; + } + else if (var_r25 != 0) { + lbl_1_bss_64 = 1; + } + lbl_1_bss_7C = 6; + lbl_1_bss_78 = 0; + } + break; + case 6: + if ((lbl_1_bss_64 == -1) || (lbl_1_bss_84 == -1) || (MGSeqStatGet(lbl_1_bss_84) == 0)) { + if (lbl_1_bss_64 != -1) { + lbl_1_bss_84 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x1E); + WipeColorSet(0xFF, 0xFF, 0xFF); + lbl_1_bss_20 = 1; + } + lbl_1_bss_7C = 5; + lbl_1_bss_78 = 0; + } + break; + case 5: + if (lbl_1_bss_64 != -1) { + if (WipeStatGet() == 0) { + lbl_1_bss_7C = 7; + lbl_1_bss_78 = 0; + } + } + else if ((lbl_1_bss_84 == -1) || (MGSeqStatGet(lbl_1_bss_84) == 0)) { + lbl_1_bss_84 = -1; + lbl_1_bss_7C = 8; + lbl_1_bss_78 = 0; + } + break; + case 7: + lbl_1_bss_78++; + if (lbl_1_bss_78 == 1) { + if (lbl_1_bss_64 == 0) { + fn_1_9ADC(0); + fn_1_F414(0); + lbl_1_bss_60 = 1; + fn_1_11798(0); + } + else if (lbl_1_bss_64 == 1) { + fn_1_9ADC(1); + fn_1_F414(1); + lbl_1_bss_60 = 1; + fn_1_11798(0); + } + } + else if (lbl_1_bss_78 >= 0xA) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + WipeColorSet(0xFF, 0xFF, 0xFF); + lbl_1_bss_20 = 0; + lbl_1_bss_38[3] = HuAudFXPlay(0x662); + lbl_1_bss_7C = 8; + lbl_1_bss_78 = 0; + } + break; + case 8: + if (lbl_1_bss_64 == 0) { + if (++lbl_1_bss_78 >= 120.0f) { + lbl_1_bss_7C = 9; + lbl_1_bss_78 = 0; + } + } + else if (lbl_1_bss_64 == 1) { + if (++lbl_1_bss_78 >= 120.0f) { + lbl_1_bss_7C = 9; + lbl_1_bss_78 = 0; + } + } + else { + if (++lbl_1_bss_78 >= 60.0f) { + lbl_1_bss_7C = 9; + lbl_1_bss_78 = 0; + } + } + break; + case 9: + if (lbl_1_bss_64 == 0) { + lbl_1_bss_84 = MGSeqCreate(5, 3, lbl_1_bss_48[0], lbl_1_bss_48[1], -1, -1); + GWPlayerCoinWinAdd(lbl_1_bss_50[0], 10); + GWPlayerCoinWinAdd(lbl_1_bss_50[1], 10); + HuAudSStreamPlay(1); + lbl_1_bss_7C = 0xA; + lbl_1_bss_68 = 0; + } + else if (lbl_1_bss_64 == 1) { + lbl_1_bss_84 = MGSeqCreate(5, 3, lbl_1_bss_48[2], lbl_1_bss_48[3], -1, -1); + GWPlayerCoinWinAdd(lbl_1_bss_50[2], 10); + GWPlayerCoinWinAdd(lbl_1_bss_50[3], 10); + HuAudSStreamPlay(1); + lbl_1_bss_7C = 0xA; + lbl_1_bss_68 = 0; + } + else { + lbl_1_bss_84 = MGSeqCreate(3, 2); + lbl_1_bss_7C = 0xA; + lbl_1_bss_68 = 0; + HuAudSStreamPlay(4); + } + break; + case 10: + if (++lbl_1_bss_68 >= 210.0f) { + lbl_1_bss_84 = -1; + lbl_1_bss_7C = 0xB; + lbl_1_bss_68 = 0; + } + break; + case 11: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + lbl_1_bss_20 = 1; + if (lbl_1_bss_38[3] != -1) { + HuAudFXStop(lbl_1_bss_38[3]); + } + object->func = fn_1_25CC; + break; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + sp50.x = CenterM[var_r31].x; + sp50.y = CenterM[var_r31].y; + sp50.z = CenterM[var_r31].z; + if (lbl_1_bss_60 == 0) { + sp5C.x = CenterM[var_r31].x - 1200.0f; + sp5C.y = 1200.0f + CenterM[var_r31].y; + sp5C.z = 1200.0f + CenterM[var_r31].z; + } + else { + sp5C.x = CenterM[var_r31].x - 600.0f; + sp5C.y = 1000.0f + CenterM[var_r31].y; + sp5C.z = 600.0f + CenterM[var_r31].z; + } + sp44.x = 0.0f; + sp44.y = 1.0f; + sp44.z = 0.0f; + fn_1_4324(var_r31, &sp5C, &sp44, &sp50); + } + fn_1_261C(object); +} + +void fn_1_25CC(omObjData *object) +{ + if (WipeStatGet() == 0) { + fn_1_4630(); + fn_1_A0B0(); + fn_1_40A4(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_261C(omObjData *object) +{ + s32 var_r30 = 0; + if ((WipeStatGet() != 0) || (object->func == fn_1_25CC)) { + return; + } + if (omSysExitReq != 0) { + var_r30 = 1; + } + if (var_r30 != 0) { + if (lbl_1_bss_20 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + } + lbl_1_bss_20 = 1; + HuAudSeqAllFadeOut(0x64); + object->func = fn_1_25CC; + } +} + +s32 fn_1_26E0(void) +{ + return lbl_1_bss_7C; +} + +void fn_1_26F0(void) +{ + s32 var_r31; + omObjData *object; + + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 50.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraCreate(2); + Hu3DCameraPerspectiveSet(2, 45.0f, 50.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(2, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(2, 0, 0, 0x140, 0x1E0); + object = lbl_1_bss_14 = omAddObjEx(lbl_1_bss_88, 0x7FDA, 0, 0, -1, omOutViewMulti); + object->work[0] = 2; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + CRotM[var_r31].x = lbl_1_data_0->unk_00.x; + CRotM[var_r31].y = lbl_1_data_0->unk_00.y; + CRotM[var_r31].z = lbl_1_data_0->unk_00.z; + CenterM[var_r31].x = lbl_1_data_0->unk_0C.x; + CenterM[var_r31].y = lbl_1_data_0->unk_0C.y; + CenterM[var_r31].z = lbl_1_data_0->unk_0C.z; + CZoomM[var_r31] = lbl_1_data_0->unk_18; + } + lbl_1_bss_C = 0; + lbl_1_bss_10 = -1; + omAddObjEx(lbl_1_bss_88, 0xFE, 0, 0, -1, fn_1_29E8); +} + +void fn_1_29E8(omObjData *object) { } + +void fn_1_29EC(void) { } + +s32 fn_1_29F0(void) +{ + return lbl_1_bss_C; +} + +void fn_1_2A00(s32 arg0, s32 arg1, float arg8) +{ + M428DllData0Struct *var_r31; + M428DllData0Struct *var_r30; + + var_r31 = &lbl_1_data_0[arg0]; + var_r30 = &lbl_1_data_0[arg1]; + Center.x = var_r31->unk_0C.x + (arg8 * (var_r30->unk_0C.x - var_r31->unk_0C.x)); + Center.y = var_r31->unk_0C.y + (arg8 * (var_r30->unk_0C.y - var_r31->unk_0C.y)); + Center.z = var_r31->unk_0C.z + (arg8 * (var_r30->unk_0C.z - var_r31->unk_0C.z)); + CZoom = var_r31->unk_18 + (arg8 * (var_r30->unk_18 - var_r31->unk_18)); +} + +void fn_1_2ACC(s32 arg0) +{ + ShadowData *var_r31; + s32 var_r30; + M428DllUnkStruct2 *var_r29; + ModelData *var_r28; + M428DllUnkStruct *var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + u32 var_r23; + + lbl_1_bss_0 = var_r24 = Hu3DHookFuncCreate(fn_1_2C90); + var_r28 = &Hu3DData[var_r24]; + Hu3DModelLayerSet(var_r24, 0); + var_r27 = var_r28->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M428DllUnkStruct), var_r28->unk_48); + memset(var_r27, 0, sizeof(M428DllUnkStruct)); + var_r27->unk_FC0 = Hu3DShadowData; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + var_r29 = &var_r27->unk_00[var_r30]; + var_r31 = &var_r27->unk_640[var_r30]; + var_r23 = 1 << var_r30; + + *var_r31 = Hu3DShadowData; + for (var_r26 = 0; var_r26 < 0x10; var_r26++) { + var_r29->unk_00[var_r26] = -1; + var_r29->unk_20[var_r26] = 1.0f; + } + var_r29->unk_60 = 0; + if ((var_r23 & arg0) != 0) { + if (var_r30 == 0) { + var_r31->unk_04 = Hu3DShadowData.unk_04; + } + else { + var_r25 = var_r31->unk_02; + var_r31->unk_04 = HuMemDirectMallocNum(HEAP_DATA, var_r25 * var_r25, var_r28->unk_48); + } + } + else { + var_r31->unk_04 = NULL; + } + } + Hu3DShadowCamBit++; +} + +void fn_1_2C90(ModelData *model, Mtx matrix) +{ + ShadowData *var_r31; + s32 var_r30; + M428DllUnkStruct *var_r29; + M428DllUnkStruct2 *var_r28; + + var_r29 = model->unk_120; + if (Hu3DCameraNo == 0) { + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + var_r28 = &var_r29->unk_00[var_r30]; + var_r31 = &var_r29->unk_640[var_r30]; + if ((var_r31->unk_04 != NULL) && !(var_r31->unk_08.x <= 0.0f) && (var_r28->unk_60 > 0)) { + Hu3DShadowData = *var_r31; + fn_1_2E2C(var_r30); + *var_r31 = Hu3DShadowData; + } + } + HuSprDispInit(); + HuSprExec(0x7F); + } + var_r28 = &var_r29->unk_00[Hu3DCameraNo]; + var_r31 = &var_r29->unk_640[Hu3DCameraNo]; + if ((var_r31->unk_04 == NULL) || (var_r31->unk_08.x <= 0.0f)) { + return; + } + Hu3DShadowData = *var_r31; +} + +GXColor lbl_1_data_E8 = { 0, 0, 0, 0 }; + +void fn_1_2E2C(s32 var_r26) +{ + Mtx spBC; + Mtx sp8C; + Mtx sp5C; + Mtx44 sp1C; + ShadowData *sp18; + ModelData *var_r31; + s16 var_r30; + M428DllUnkStruct2 *var_r29; + M428DllUnkStruct *var_r28; + s32 var_r27; + s32 var_r25; + u32 var_r24; + + var_r31 = &Hu3DData[lbl_1_bss_0]; + var_r28 = var_r31->unk_120; + var_r29 = &var_r28->unk_00[var_r26]; + sp18 = &var_r28->unk_640[var_r26]; + var_r24 = Hu3DShadowData.unk_00; + if (var_r26 == 0) { + GXSetViewport(0.0f, 0.0f, RenderMode->fbWidth, RenderMode->xfbHeight, 0.0f, 1.0f); + GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); + C_MTXOrtho(sp1C, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); + GXSetProjection(sp1C, GX_ORTHOGRAPHIC); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_U8, 0); + GXSetTevColor(GX_TEVREG0, BGColor); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(0); + MTXIdentity(sp8C); + GXLoadPosMtxImm(sp8C, 0); + GXSetZMode(0, GX_ALWAYS, GX_TRUE); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(1); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(1); + GXPosition1x8(1); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(1); + GXPosition1x8(0); + } + Hu3DDrawPreInit(); + GXSetCopyClear(lbl_1_data_E8, 0xFFFFFF); + C_MTXPerspective(sp1C, Hu3DShadowData.unk_08.x, 1.2f, Hu3DShadowData.unk_08.y, Hu3DShadowData.unk_08.z); + GXSetProjection(sp1C, GX_PERSPECTIVE); + if (Hu3DShadowData.unk_02 <= 0xF0) { + GXSetScissor(2, 2, (Hu3DShadowData.unk_02 * 2) - 4, (Hu3DShadowData.unk_02 * 2) - 4); + GXSetViewport(0.0f, 0.0f, Hu3DShadowData.unk_02 * 2, Hu3DShadowData.unk_02 * 2, 0.0f, 1.0f); + var_r25 = (Hu3DShadowData.unk_02 / 2) * (Hu3DShadowData.unk_02 / 2); + } + else { + GXSetScissor(1, 1, Hu3DShadowData.unk_02 - 2, Hu3DShadowData.unk_02 - 2); + GXSetViewport(0.0f, 0.0f, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 0.0f, 1.0f); + var_r25 = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; + } + C_MTXLookAt(Hu3DCameraMtx, &Hu3DShadowData.unk_14, &Hu3DShadowData.unk_2C, &Hu3DShadowData.unk_20); + MTXCopy(Hu3DCameraMtx, Hu3DShadowData.unk_38); + shadowModelDrawF = 1; + GXInvalidateTexAll(); + GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, BGColor); + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + if (var_r29->unk_00[var_r30] != -1) { + var_r31 = &Hu3DData[var_r29->unk_00[var_r30]]; + if (((var_r31->attr & 1) == 0) && ((var_r31->attr & 0x8000) == 0)) { + if ((var_r31->attr & 8) != 0) { + var_r27 = 0; + if (var_r31->unk_08 != -1) { + Hu3DMotionExec(var_r30, var_r31->unk_08, var_r31->unk_64, 0); + } + if (var_r31->unk_0C != -1) { + Hu3DSubMotionExec(var_r30); + } + if (var_r31->unk_0A != -1) { + Hu3DMotionExec(var_r30, var_r31->unk_0A, var_r31->unk_74, 1); + } + if ((var_r31->attr & 0x400) != 0) { + ClusterMotionExec(var_r31); + var_r27 = 1; + } + if (var_r31->unk_0E != -1) { + if (var_r31->unk_08 == -1) { + Hu3DMotionExec(var_r30, var_r31->unk_0E, var_r31->unk_94, 0); + } + else { + Hu3DMotionExec(var_r30, var_r31->unk_0E, var_r31->unk_94, 1); + } + } + if (((var_r31->attr & 0x90) == 0) || ((var_r31->motion_attr & 0x40000002) == 0)) { + var_r27 = 1; + InitVtxParm(var_r31->hsfData); + if (var_r31->unk_0E != -1) { + ShapeProc(var_r31->hsfData); + } + if ((var_r31->attr & 0x400) != 0) { + ClusterProc(var_r31); + } + if (var_r31->hsfData->cenvCnt != 0) { + EnvelopeProc(var_r31->hsfData); + } + PPCSync(); + } + var_r31->attr |= 0x800; + } + Hu3DModelShadowSet(var_r29->unk_00[var_r30]); + Hu3DShadowData.unk_00 = (s8)(var_r29->unk_20[var_r30] * var_r24); + mtxRot(sp5C, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + MTXScale(spBC, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp5C, spBC, spBC); + mtxTransCat(spBC, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + MTXConcat(Hu3DCameraMtx, spBC, sp8C); + MTXConcat(sp8C, var_r31->unk_F0, sp8C); + Hu3DDraw(var_r31, sp8C, &var_r31->scale); + Hu3DModelShadowReset(var_r29->unk_00[var_r30]); + } + } + } + Hu3DDrawPost(); + GXDrawDone(); + shadowModelDrawF = 0; + if (Hu3DShadowData.unk_02 <= 0xF0) { + GXSetTexCopySrc(0, 0, Hu3DShadowData.unk_02 * 2, Hu3DShadowData.unk_02 * 2); + GXSetTexCopyDst(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_CTF_R8, 1); + } + else { + GXSetTexCopySrc(0, 0, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02); + GXSetTexCopyDst(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_CTF_R8, 0); + } + GXCopyTex(Hu3DShadowData.unk_04, 1); + GXSetViewport(0.0f, 0.0f, RenderMode->fbWidth, RenderMode->xfbHeight, 0.0f, 1.0f); + GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); + C_MTXOrtho(sp1C, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); + GXSetProjection(sp1C, GX_ORTHOGRAPHIC); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_U8, 0); + GXSetTevColor(GX_TEVREG0, BGColor); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(0); + MTXIdentity(sp8C); + GXLoadPosMtxImm(sp8C, 0); + GXSetZMode(0, GX_ALWAYS, 1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(1); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(1); + GXPosition1x8(1); + GXPosition1x8(0); + GXPosition1x8(0); + GXPosition1x8(1); + GXPosition1x8(0); +} + +void fn_1_3B64(void) +{ + Mtx44 sp64; + Mtx sp34; + GXTexObj sp14; + ShadowData *sp10; + GXColor spC; + M428DllUnkStruct *var_r31; + M428DllUnkStruct2 *var_r30; + ModelData *var_r29; + u8 *var_r28; + + if (lbl_1_bss_0 != -1) { + var_r29 = &Hu3DData[lbl_1_bss_0]; + var_r31 = var_r29->unk_120; + var_r30 = &var_r31->unk_00[Hu3DCameraNo]; + sp10 = &var_r31->unk_640[Hu3DCameraNo]; + if (var_r30->unk_60 > 0) { + GXInitTexObj(&sp14, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObjLOD(&sp14, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&sp14, GX_TEXMAP0); + C_MTXOrtho(sp64, 0.0f, 480.0f, 0.0f, 320.0f, 0.0f, 10.0f); + GXSetProjection(sp64, GX_ORTHOGRAPHIC); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + spC.a = 0x80; + GXSetTevColor(GX_TEVREG0, spC); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + MTXIdentity(sp34); + GXLoadPosMtxImm(sp34, 0); + GXSetZMode(0, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(0.0f, 0.0f, 0.0f); + GXTexCoord2f32(0.0f, 0.0f); + GXPosition3f32(Hu3DShadowData.unk_02, 0.0f, 0.0f); + GXTexCoord2f32(1.0f, 0.0f); + GXPosition3f32(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 0.0f); + GXTexCoord2f32(1.0f, 1.0f); + GXPosition3f32(0.0f, Hu3DShadowData.unk_02, 0.0f); + GXTexCoord2f32(0.0f, 1.0f); + } + } +} + +s32 lbl_1_data_EC[] = { + 0, + 0, + 0x45ABE000, + 0xC576E000, + 0, + 0xBF333333, + 0x3F19999A, + 0xFFFFFFFF, + 0, + 0x45ABE000, + 0xC576E000, + 0, + 0x3F800000, + 0, + 0, + 0, + 0, +}; + +void fn_1_40A4(void) +{ + M428DllUnkStruct *var_r31; + ModelData *var_r30; + + var_r30 = &Hu3DData[lbl_1_bss_0]; + var_r31 = var_r30->unk_120; + Hu3DShadowData = var_r31->unk_FC0; + Hu3DModelKill(lbl_1_bss_0); + lbl_1_bss_0 = -1; + if (Hu3DShadowCamBit > 0) { + Hu3DShadowCamBit--; + } +} + +void fn_1_4170(s16 arg0, s32 arg1) +{ + ShadowData *sp8; + M428DllUnkStruct2 *var_r31; + s32 var_r30; + s32 var_r29; + M428DllUnkStruct *var_r28; + ModelData *var_r27; + u32 var_r26; + + var_r27 = &Hu3DData[lbl_1_bss_0]; + var_r28 = var_r27->unk_120; + for (var_r29 = 0; var_r29 < 0x10; var_r29++) { + var_r31 = &var_r28->unk_00[var_r29]; + sp8 = &var_r28->unk_640[var_r29]; + var_r26 = 1 << var_r29; + if ((var_r26 & arg1) != 0) { + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + if (arg0 != var_r31->unk_00[var_r30]) { + if (var_r31->unk_00[var_r30] == -1) { + var_r31->unk_00[var_r30] = arg0; + var_r31->unk_20[var_r30] = 1.0f; + var_r31->unk_60++; + break; + } + } + else { + break; + } + } + } + } +} + +void fn_1_4264(s16 arg0, s32 arg1, float arg8) +{ + ShadowData *sp8; + s32 var_r31; + s32 var_r30; + M428DllUnkStruct2 *var_r29; + M428DllUnkStruct *var_r28; + ModelData *var_r27; + u32 var_r26; + + var_r27 = &Hu3DData[lbl_1_bss_0]; + var_r28 = var_r27->unk_120; + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + var_r29 = &var_r28->unk_00[var_r31]; + sp8 = &var_r28->unk_640[var_r31]; + var_r26 = 1 << var_r31; + if ((var_r26 & arg1) != 0) { + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + if (arg0 == var_r29->unk_00[var_r30]) { + var_r29->unk_20[var_r30] = arg8; + } + } + } + } +} + +void fn_1_4324(s32 arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + M428DllUnkStruct2 *sp8; + ShadowData *var_r31; + M428DllUnkStruct *var_r30; + ModelData *var_r29; + + var_r29 = &Hu3DData[lbl_1_bss_0]; + var_r30 = var_r29->unk_120; + sp8 = &var_r30->unk_00[arg0]; + var_r31 = &var_r30->unk_640[arg0]; + var_r31->unk_14 = *arg1; + var_r31->unk_20 = *arg3; + var_r31->unk_2C = *arg2; +} diff --git a/src/REL/m428Dll/map.c b/src/REL/m428Dll/map.c new file mode 100644 index 00000000..925c04bc --- /dev/null +++ b/src/REL/m428Dll/map.c @@ -0,0 +1,1275 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfformat.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/init.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m428Dll.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + +typedef struct M433DllMapWork2 { + u8 unk_00; + Vec unk_04; + Vec unk_10; + Vec unk_1C; + Vec unk_28; + Vec unk_34; + Vec unk_40; + Vec unk_4C; + Vec unk_58; + Vec unk_64[3]; + Vec unk_88[3]; + Vec unk_AC[3]; + Vec unk_D0[3]; + float unk_F4[3]; + float unk_100[3]; + float unk_10C[3]; + float unk_118[3]; + float unk_124[3]; + float unk_130; + float unk_134; + float unk_138; + float unk_13C; + float unk_140; + float unk_144; + float unk_148; + float unk_14C[3]; + float unk_158[3]; + float unk_164[3]; + float unk_170[3]; + float unk_17C[3]; + u16 unk_188[3]; +} M433DllMapWork2; /* size = 0x190 */ + +typedef struct M433DllUnkStruct { + s16 unk_00; + s16 unk_02; + s16 unk_04; + s16 unk_06; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + char unk20[0x28]; +} M433DllUnkStruct; /* size = 0x48 */ + +typedef struct M433DllUnkStruct4 { + Vec unk_00; + s32 unk_0C[3]; + s8 unk_18[4]; + s8 unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; +} M433DllUnkStruct4; /* size = 0x34 */ + +typedef struct M433DllUnkStruct2 { + Vec *unk_00; + s32 unk_04; + s32 unk_08; + M433DllUnkStruct4 *unk_0C; +} M433DllUnkStruct2; /* size 0x10 */ + +typedef struct M433DllUnkStruct3 { + s32 unk_00; + M433DllUnkStruct2 *unk_04; +} M433DllUnkStruct3; /* size = 0x08 */ + +void fn_1_4650(omObjData *object); +void fn_1_475C(omObjData *object); +void fn_1_4F04(omObjData *object); +void fn_1_51E0(omObjData *object); +u8 fn_1_5370(M433DllUnkStruct2 *arg0, Vec *arg1); +void fn_1_5558(s32 arg0, M433DllUnkStruct3 *arg1); +void fn_1_5CCC(HsfData *arg0, HsfObject *arg1); +void fn_1_6280(ModelData *arg1, ParticleData *particle, Mtx matrix); +s16 fn_1_71AC(s32 arg0, s16 arg1, ParticleHook arg2); +void fn_1_7294(void); +void *fn_1_72D4(s32 arg0); +void fn_1_739C(M433DllUnkStruct2 *arg0); +void fn_1_7430(void); +s32 fn_1_7500(void); +void fn_1_8F90(float *arg0, float *arg1, float *arg2, s32 arg3); +float fn_1_9248(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3); +void fn_1_939C(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 arg3); +void fn_1_977C(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*arg3)[3], s32 arg4); + +M433DllUnkStruct3 *lbl_1_bss_12C; +M433DllUnkStruct2 *lbl_1_bss_128; +void *lbl_1_bss_A8[0x20]; +omObjData *lbl_1_bss_A4; +omObjData *lbl_1_bss_A0; +omObjData *lbl_1_bss_98[2]; +M433DllUnkStruct3 lbl_1_bss_90; + +void fn_1_43C8(Process *arg0) +{ + s32 var_r31; + omObjData *var_r30; + s32 var_r28; + + var_r28 = frand() & 0x1F; + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + fn_1_7500(); + } + fn_1_7294(); + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(1, 45.0f, 100.0f, 7500.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, 45.0f, 100.0f, 7500.0f, 0.6f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0); + lbl_1_bss_A4 = omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_A4->work[0] = 2; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = omAddObjEx(arg0, 0xFE, 1, 0, -1, fn_1_4650); + lbl_1_bss_98[var_r31] = var_r30; + var_r30->work[0] = var_r31; + } + lbl_1_bss_A0 = omAddObjEx(arg0, 0x7F, 9, 0, -1, fn_1_4F04); +} + +void fn_1_4630(void) +{ + fn_1_7430(); +} + +void fn_1_4650(omObjData *object) +{ + M433DllMapWork2 *work; + + work = fn_1_72D4(0x190); + object->data = work; + work->unk_148 = work->unk_144 = 0.0f; + work->unk_140 = 1.0f; + work->unk_10.x = work->unk_28.x = 0.0f; + work->unk_10.y = work->unk_28.y = 0.0f; + work->unk_10.z = work->unk_28.z = 0.0f; + work->unk_04.x = work->unk_1C.x = 0.0f; + work->unk_04.y = work->unk_1C.y = 80.0f; + work->unk_04.z = work->unk_1C.z = 0.0f; + work->unk_130 = work->unk_134 = 600.0f; + work->unk_188[0] = work->unk_188[1] = work->unk_188[2] = 0; + object->func = fn_1_475C; +} + +void fn_1_475C(omObjData *object) +{ + float var_f31; + M433DllMapWork2 *work; + s32 var_r29; + + work = object->data; + if (work->unk_148 > 0.0f) { + work->unk_148 = work->unk_148 - work->unk_140; + var_f31 = (work->unk_144 - work->unk_148) / work->unk_144; + var_f31 = sind((90.0f * var_f31)); + if (work->unk_00 == 0) { + work->unk_04.x = work->unk_1C.x + (var_f31 * (work->unk_34.x - work->unk_1C.x)); + work->unk_04.y = work->unk_1C.y + (var_f31 * (work->unk_34.y - work->unk_1C.y)); + work->unk_04.z = work->unk_1C.z + (var_f31 * (work->unk_34.z - work->unk_1C.z)); + work->unk_10.x = work->unk_28.x + (var_f31 * (work->unk_40.x - work->unk_28.x)); + work->unk_10.y = work->unk_28.y + (var_f31 * (work->unk_40.y - work->unk_28.y)); + work->unk_10.z = work->unk_28.z + (var_f31 * (work->unk_40.z - work->unk_28.z)); + work->unk_130 = work->unk_134 + (var_f31 * (work->unk_138 - work->unk_134)); + } + else { + fn_1_977C(2.0f * var_f31, (float *)&work->unk_04, work->unk_F4, (float(*)[3])work->unk_64, (float(*)[3])work->unk_88, 3); + fn_1_977C(2.0f * var_f31, (float *)&work->unk_10, work->unk_100, (float(*)[3])work->unk_AC, (float(*)[3])work->unk_D0, 3); + work->unk_130 = fn_1_9248(2.0f * var_f31, work->unk_124, work->unk_10C, work->unk_118, 3); + } + } + CRotM[object->work[0]].x = work->unk_10.x; + CRotM[object->work[0]].y = work->unk_10.y; + CRotM[object->work[0]].z = work->unk_10.z; + CenterM[object->work[0]].x = work->unk_04.x; + CenterM[object->work[0]].y = work->unk_04.y; + CenterM[object->work[0]].z = work->unk_04.z; + CZoomM[object->work[0]] = work->unk_130; + for (var_r29 = 0; var_r29 < 3; var_r29++) { + work->unk_17C[var_r29] = 0.0f; + if (work->unk_188[var_r29] != 0) { + work->unk_17C[var_r29] = work->unk_14C[var_r29] * sind(work->unk_164[var_r29]); + work->unk_164[var_r29] += work->unk_170[var_r29]; + work->unk_14C[var_r29] *= work->unk_158[var_r29]; + work->unk_188[var_r29] -= 1; + } + } + CenterM[object->work[0]].x += work->unk_17C[0]; + CenterM[object->work[0]].y += work->unk_17C[1]; + CenterM[object->work[0]].z += work->unk_17C[2]; +} + +void fn_1_4B7C(u8 arg0, float arg1, Vec *arg2, Vec *arg3, float arg8, Vec *arg4, Vec *arg5, float arg9) +{ + float var_f31; + float var_f30; + M433DllMapWork2 *var_r31; + + var_r31 = lbl_1_bss_98[arg0]->data; + var_r31->unk_00 = 1; + var_r31->unk_148 = var_r31->unk_144 = arg1; + var_r31->unk_1C = var_r31->unk_04; + var_r31->unk_34.x = arg2->x; + var_r31->unk_34.y = arg2->y; + var_r31->unk_34.z = arg2->z; + var_r31->unk_4C.x = arg4->x; + var_r31->unk_4C.y = arg4->y; + var_r31->unk_4C.z = arg4->z; + var_r31->unk_28 = var_r31->unk_10; + var_r31->unk_40.x = arg3->x; + var_r31->unk_40.y = arg3->y; + var_r31->unk_40.z = arg3->z; + var_r31->unk_58.x = arg5->x; + var_r31->unk_58.y = arg5->y; + var_r31->unk_58.z = arg5->z; + var_r31->unk_134 = var_r31->unk_130; + var_r31->unk_138 = arg8; + var_r31->unk_13C = arg9; + var_r31->unk_64[0] = var_r31->unk_1C; + var_r31->unk_64[1] = var_r31->unk_4C; + var_r31->unk_64[2] = var_r31->unk_34; + var_r31->unk_AC[0] = var_r31->unk_28; + var_r31->unk_AC[1] = var_r31->unk_58; + var_r31->unk_AC[2] = var_r31->unk_40; + var_r31->unk_10C[0] = var_r31->unk_134; + var_r31->unk_10C[1] = var_r31->unk_13C; + var_r31->unk_10C[2] = var_r31->unk_138; + var_r31->unk_124[0] = 0.0f; + if ((var_r31->unk_10C[1] - var_r31->unk_10C[0]) < 0.0f) { + var_f31 = -(var_r31->unk_10C[1] - var_r31->unk_10C[0]); + } + else { + var_f31 = var_r31->unk_10C[1] - var_r31->unk_10C[0]; + } + var_r31->unk_124[1] = var_f31; + if ((var_r31->unk_10C[2] - var_r31->unk_10C[1]) < 0.0f) { + var_f30 = -(var_r31->unk_10C[2] - var_r31->unk_10C[1]); + } + else { + var_f30 = var_r31->unk_10C[2] - var_r31->unk_10C[1]; + } + var_r31->unk_124[2] = var_r31->unk_124[1] + var_f30; + fn_1_939C(var_r31->unk_F4, (float(*)[3])var_r31->unk_64, (float(*)[3])var_r31->unk_88, 3); + fn_1_939C(var_r31->unk_100, (float(*)[3])var_r31->unk_AC, (float(*)[3])var_r31->unk_D0, 3); + fn_1_8F90(var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 3); +} + +void fn_1_4E44(u8 arg0, float arg8) +{ + M433DllMapWork2 *work = lbl_1_bss_98[arg0]->data; + work->unk_140 = arg8; +} + +void fn_1_4E78(u8 arg0, u8 arg1, u16 arg2, float arg8, float arg9, float argA) +{ + M433DllMapWork2 *var_r31 = lbl_1_bss_98[arg0]->data; + var_r31->unk_188[arg1] = arg2; + var_r31->unk_14C[arg1] = arg8; + var_r31->unk_158[arg1] = arg9; + var_r31->unk_170[arg1] = argA; + var_r31->unk_164[arg1] = 90.0f; +} + +static char lbl_1_data_130[20] = "goal"; // explicitly declared because of padding + +void fn_1_4F04(omObjData *object) +{ + s32 var_r31; + M433DllUnkStruct *var_r29; + s32 var_r28; + + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 0)); + object->model[0] = var_r31; + Hu3DModelShadowMapSet(var_r31); + Hu3DModelLayerSet(var_r31, 2); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 1)); + object->model[1] = var_r31; + Hu3DModelAttrSet(var_r31, HU3D_ATTR_DISPOFF); + fn_1_5558(var_r31, &lbl_1_bss_90); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 2)); + object->model[2] = var_r31; + Hu3DModelLayerSet(var_r31, 2); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 3)); + object->model[3] = var_r31; + Hu3DModelAttrSet(var_r31, HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapObjSet(var_r31, lbl_1_data_130); + Hu3DModelLayerSet(var_r31, 2); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 4)); + object->model[4] = var_r31; + Hu3DModelAttrSet(var_r31, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_SHAPE_LOOP); + Hu3DModelLayerSet(var_r31, 2); + Hu3DModelCameraSet(var_r31, 1); + fn_1_4170(var_r31, 1); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 5)); + object->model[5] = var_r31; + Hu3DModelAttrSet(var_r31, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_SHAPE_LOOP); + Hu3DModelLayerSet(var_r31, 2); + Hu3DModelCameraSet(var_r31, 2); + fn_1_4170(var_r31, 2); + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r31 = fn_1_71AC(DATA_MAKE_NUM(DATADIR_M428, 6), 0x3E8, fn_1_6280); + object->model[var_r28 + 6] = var_r31; + Hu3DModelLayerSet(var_r31, 4); + Hu3DModelCameraSet(var_r31, 1 << var_r28); + var_r29 = ((ParticleData *)Hu3DData[var_r31].unk_120)->unk_1C; + var_r29->unk_08 = 400.0f; + var_r29->unk_0C = -400.0f; + var_r29->unk_10 = 1300.0f; + var_r29->unk_14 = -800.0f; + var_r29->unk_18 = 700.0f; + var_r29->unk_1C = 150.0f; + } + object->func = fn_1_51E0; +} + +void fn_1_51E0(omObjData *object) +{ + M433DllUnkStruct *var_r31; + s32 var_r30; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31 = ((ParticleData *)Hu3DData[object->model[var_r30 + 6]].unk_120)->unk_1C; + var_r31->unk_08 = 500.0f + CenterM[var_r30].x; + var_r31->unk_0C = -500.0f + CenterM[var_r30].x; + var_r31->unk_10 = 900.0f + CenterM[var_r30].y; + var_r31->unk_14 = -1200.0f + CenterM[var_r30].y; + } +} + +void fn_1_52D8(omObjData *object) { } + +u8 fn_1_52DC(M433DllUnkStruct3 *arg0, Vec *arg1) +{ + u32 var_r30; + M433DllUnkStruct2 *var_r29; + s32 var_r28; + + var_r28 = 0; + for (var_r29 = arg0->unk_04, var_r30 = 0; var_r30 < arg0->unk_00; var_r30++, var_r29++) { + if (fn_1_5370(var_r29, arg1) != 0) { + break; + } + } + if (var_r30 < arg0->unk_00) { + var_r28 = 1; + } + return var_r28; +} + +u8 fn_1_5370(M433DllUnkStruct2 *arg0, Vec *arg1) +{ + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + M433DllUnkStruct4 *var_r31; + s32 var_r28; + u32 var_r27; + s32 var_r26; + Vec *var_r25; + s32 var_r24; + Vec *var_r23; + + var_r31 = arg0->unk_0C; + for (var_r27 = 0; var_r27 < arg0->unk_08; var_r27++, var_r31++) { + sp8 = *arg1; + sp8.y = 0.0f; + VECSubtract(&sp8, &var_r31->unk_00, &sp20); + var_f30 = VECMag(&sp20); + if (!(var_f30 > (400.0f + var_r31->unk_20)) && (var_r31->unk_2C != 0.0f)) { + var_r24 = 0; + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r26 = var_r28 + 1; + if (var_r26 == 3) { + var_r26 = 0; + } + var_r23 = &arg0->unk_00[var_r31->unk_0C[var_r28]]; + var_r25 = &arg0->unk_00[var_r31->unk_0C[var_r26]]; + VECSubtract(var_r25, var_r23, &sp20); + VECSubtract(arg1, var_r25, &sp14); + var_f31 = (sp20.x * sp14.y) - (sp20.y * sp14.x); + if ((var_f31 * var_r31->unk_2C) < 0.0) { + var_r24 = 1; + break; + } + } + if (var_r24 == 0) { + arg1->z = ((var_r31->unk_30 - (var_r31->unk_24 * arg1->x)) - (var_r31->unk_28 * arg1->y)) / var_r31->unk_2C; + return 1; + } + } + } + return 0; +} + +void fn_1_5558(s32 arg0, M433DllUnkStruct3 *arg1) +{ + HsfData *var_r31; + u32 var_r30; + + var_r31 = Hu3DData[arg0].hsfData; + lbl_1_bss_12C = arg1; + lbl_1_bss_12C->unk_00 = 0; + lbl_1_bss_12C->unk_04 = fn_1_72D4(0x1000); + lbl_1_bss_128 = lbl_1_bss_12C->unk_04; + fn_1_5CCC(var_r31, var_r31->root); + var_r30 = lbl_1_bss_12C->unk_00 * 0x10; + lbl_1_bss_128 = lbl_1_bss_12C->unk_04; + lbl_1_bss_12C->unk_04 = fn_1_72D4(var_r30); + memcpy(lbl_1_bss_12C->unk_04, lbl_1_bss_128, var_r30); + fn_1_739C(lbl_1_bss_128); +} + +void fn_1_5684(HsfData *arg0, HsfObject *arg1) +{ + Vec sp18; + Vec spC; + float var_f31; + M433DllUnkStruct4 *var_r31; + HsfFace *var_r30; + HsfBuffer *var_r29; + s32 var_r28; + s32 var_r27; + HsfBuffer *var_r25; + + var_r29 = arg1->data.vertex; + var_r25 = arg1->data.face; + lbl_1_bss_128->unk_08 = var_r25->count; + lbl_1_bss_128->unk_04 = var_r29->count; + lbl_1_bss_128->unk_00 = var_r29->data; + lbl_1_bss_128->unk_0C = fn_1_72D4(lbl_1_bss_128->unk_08 * sizeof(M433DllUnkStruct4)); + var_r30 = var_r25->data; + var_r31 = lbl_1_bss_128->unk_0C; + for (var_r27 = 0; var_r27 < var_r25->count; var_r27++, var_r30++, var_r31++) { + switch (var_r30->type & 7) { + case 2: + var_r31->unk_1C = 3; + var_r31->unk_00.x = var_r31->unk_00.y = var_r31->unk_00.z = 0.0f; + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r31->unk_0C[var_r28] = var_r30->indices[var_r28][0]; + var_r31->unk_00.x += ((Vec *)var_r29->data)[var_r30->indices[var_r28][0]].x; + var_r31->unk_00.y += ((Vec *)var_r29->data)[var_r30->indices[var_r28][0]].y; + var_r31->unk_00.z += ((Vec *)var_r29->data)[var_r30->indices[var_r28][0]].z; + } + var_r31->unk_00.x /= 3.0f; + var_r31->unk_00.y /= 3.0f; + var_r31->unk_00.z /= 3.0f; + var_r31->unk_20 = 0.0f; + for (var_r28 = 0; var_r28 < 3; var_r28++) { + VECSubtract(&((Vec *)var_r29->data)[var_r30->indices[var_r28][0]], &var_r31->unk_00, &sp18); + var_f31 = VECMag(&sp18); + if (var_f31 > var_r31->unk_20) { + var_r31->unk_20 = var_f31; + } + } + var_r31->unk_00.y = 0.0f; + VECSubtract(&((Vec *)var_r29->data)[var_r30->strip.indices[1][0]], &((Vec *)var_r29->data)[var_r30->strip.indices[0][0]], &sp18); + VECSubtract(&((Vec *)var_r29->data)[var_r30->strip.indices[2][0]], &((Vec *)var_r29->data)[var_r30->strip.indices[0][0]], &spC); + var_r31->unk_24 = (sp18.y * spC.z) - (sp18.z * spC.y); + var_r31->unk_28 = (sp18.z * spC.x) - (sp18.x * spC.z); + var_r31->unk_2C = (sp18.x * spC.y) - (sp18.y * spC.x); + var_r31->unk_30 = (var_r31->unk_2C * ((Vec *)var_r29->data)[var_r30->strip.indices[0][0]].z) + + ((var_r31->unk_24 * ((Vec *)var_r29->data)[var_r30->strip.indices[0][0]].x) + + (var_r31->unk_28 * ((Vec *)var_r29->data)[var_r30->strip.indices[0][0]].y)); + break; + case 3: + var_r31->unk_1C = 4; + var_r31->unk_00.x = var_r31->unk_00.y = var_r31->unk_00.z = 0.0f; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31->unk_0C[var_r28] = var_r30->indices[var_r28][0]; + var_r31->unk_00.x += ((Vec *)var_r29->data)[var_r30->indices[var_r28][0]].x; + var_r31->unk_00.y += ((Vec *)var_r29->data)[var_r30->indices[var_r28][0]].y; + var_r31->unk_00.z += ((Vec *)var_r29->data)[var_r30->indices[var_r28][0]].z; + } + var_r31->unk_00.x *= 0.25f; + var_r31->unk_00.y *= 0.25f; + var_r31->unk_00.z *= 0.25f; + var_r31->unk_20 = 0.0f; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + VECSubtract(&((Vec *)var_r29->data)[var_r30->indices[var_r28][0]], &var_r31->unk_00, &sp18); + var_f31 = VECMag(&sp18); + if (var_f31 > var_r31->unk_20) { + var_r31->unk_20 = var_f31; + } + } + VECSubtract(&((Vec *)var_r29->data)[var_r30->strip.indices[1][0]], &((Vec *)var_r29->data)[var_r30->strip.indices[0][0]], &sp18); + VECSubtract(&((Vec *)var_r29->data)[var_r30->strip.indices[2][0]], &((Vec *)var_r29->data)[var_r30->strip.indices[1][0]], &spC); + var_r31->unk_24 = (sp18.y * spC.z) - (sp18.z * spC.y); + var_r31->unk_28 = (sp18.z * spC.x) - (sp18.x * spC.z); + var_r31->unk_2C = (sp18.x * spC.y) - (sp18.y * spC.x); + var_r31->unk_30 = (var_r31->unk_24 * ((Vec *)var_r29->data)[var_r30->strip.indices[0][0]].x) + + ((var_r31->unk_28 * ((Vec *)var_r29->data)[var_r30->strip.indices[0][0]].y)) + + (var_r31->unk_2C * ((Vec *)var_r29->data)[var_r30->strip.indices[0][0]].z); + break; + default: + OSReport("Error\n"); + break; + } + } + for (var_r27 = 0; var_r27 < arg1->data.childrenCount; var_r27++) { + fn_1_5CCC(arg0, arg1->data.children[var_r27]); + } +} + +void fn_1_5CCC(HsfData *var_r31, HsfObject *var_r23) +{ + s16 var_r22; + + switch (var_r23->type) { + case 0: + case 1: + case 3: + case 4: + case 5: + case 6: + case 9: + for (var_r22 = 0; var_r22 < var_r23->data.childrenCount; var_r22++) { + fn_1_5CCC(var_r31, var_r23->data.children[var_r22]); + } + break; + case 2: + fn_1_5684(var_r31, var_r23); + lbl_1_bss_12C->unk_00++; + lbl_1_bss_128++; + break; + } +} + +void fn_1_6280(ModelData *arg1, ParticleData *particle, Mtx matrix) +{ + s32 sp3C; + s32 sp38; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + HsfanimStruct01 *var_r31; + M433DllUnkStruct *var_r30; + s32 var_r28; + s32 var_r27; + + var_r30 = particle->unk_1C; + var_f29 = var_r30->unk_08 - var_r30->unk_0C; + var_f30 = var_r30->unk_10 - var_r30->unk_14; + var_f28 = var_r30->unk_18 - var_r30->unk_1C; + switch (var_r30->unk_04) { + case 2: + break; + case 0: + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < (0.3f * particle->unk_30); var_r28++, var_r31++) { + var_r31->unk00 = 1; + var_r31->unk34.x = var_r30->unk_0C + (var_f29 * (fn_1_7500() / 65536.0f)); + var_r31->unk34.y = (var_r30->unk_14 + ((200.0f + var_f30) * (fn_1_7500() / 65536.0f))) - 100.0f; + var_r31->unk34.z = var_r30->unk_1C + (var_f28 * (fn_1_7500() / 65536.0f)); + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xFF; + var_r31->unk2C = 26.0f + (10.0f * (fn_1_7500() / 65536.0f)); + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = -1.6333333f * (fn_1_7500() / 65536.0f); + var_r31->unk08.z = 0.0f; + var_r31->unk14.x = var_r31->unk14.y = var_r31->unk14.z = 0.0f; + var_r31->unk30 = 360.0f * (fn_1_7500() / 65536.0f); + var_r31->unk02 = 0; + } + for (; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk40.a = 0; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = -1.6333333f * (fn_1_7500() / 65536.0f); + var_r31->unk08.z = 0.0f; + var_r31->unk14.x = var_r31->unk14.y = var_r31->unk14.z = 0.0f; + } + particle->unk_04.x = particle->unk_04.y = particle->unk_04.z = 0.0f; + var_r30->unk_04++; + break; + case 1: + particle->unk_04.x = particle->unk_04.y = particle->unk_04.z = 0.0f; + var_r30->unk_06 = 0; + break; + case 3: + particle->unk_04.x *= 0.95f; + if (particle->unk_04.x < 0.0f) { + var_f27 = -particle->unk_04.x; + } + else { + var_f27 = particle->unk_04.x; + } + if (var_f27 < 0.01f) { + var_r30->unk_04 = 1; + } + break; + } + for (var_r31 = particle->unk_48, var_r27 = 0, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + switch (var_r31->unk00) { + case 0: + if (((var_r28 > (0.4f * particle->unk_30)) && (particle->unk_04.x == 0.0f)) || (var_r27 >= (10.0f + (0.75f * particle->unk_04.x)))) { + var_r31->unk2C = 0.01f; + } + else { + if (((fn_1_7500() & 3) == 0) || (particle->unk_04.x == 0.0f)) { + var_r31->unk34.x = var_r30->unk_0C + (var_f29 * (fn_1_7500() / 65536.0f)); + var_r31->unk34.y = var_r30->unk_10 + (100.0f * (fn_1_7500() / 65536.0f)); + var_r31->unk40.a = 7; + } + else { + if (particle->unk_04.x > 0.0f) { + var_r31->unk34.x = var_r30->unk_0C - (100.0f * (fn_1_7500() / 65536.0f)); + } + else { + var_r31->unk34.x = var_r30->unk_08 + (100.0f * (fn_1_7500() / 65536.0f)); + } + var_r31->unk34.y = var_r30->unk_10 - (var_f30 * (fn_1_7500() / 65536.0f)); + var_r31->unk40.a = 0xFF; + } + var_r31->unk34.z = var_r30->unk_1C + (var_f28 * (fn_1_7500() / 65536.0f)); + var_r31->unk2C = 28.0f + (10.0f * (fn_1_7500() / 65536.0f)); + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = -1.6333333f * (fn_1_7500() / 65536.0f); + var_r31->unk08.z = 0.0f; + var_r31->unk08.x = 0.25f * var_r31->unk08.y * ((fn_1_7500() - 0x8000) / 32768.0f); + var_r31->unk14.x = var_r31->unk14.y = var_r31->unk14.z = 0.0f; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF; + var_r31->unk02 = 0; + var_r27++; + var_r31->unk00++; + } + break; + case 1: + var_r31->unk08.y += -1.6333333f; + var_r31->unk08.y += 0.19998f * (1.6333333f * (4.81f + (0.005f * var_r31->unk2C))); + if (var_r31->unk02 != 0) { + var_r31->unk02--; + var_r31->unk08.y *= 0.8f; + var_r31->unk08.y += 0.0025f * (-1.6333333f * var_r31->unk2C); + } + else if ((fn_1_7500() & 0x7F) == 0) { + var_r31->unk02 = (s32)(30.0f * (fn_1_7500() / 65536.0f)); + } + if (var_r31->unk08.x < 0.0f) { + var_f26 = -var_r31->unk08.x; + } + else { + var_f26 = var_r31->unk08.x; + } + if (var_f26 < 0.02f) { + var_r31->unk14.x = 0.025f * (var_r31->unk2C * (-1.6333333f * ((fn_1_7500() - 0x8000) / 32768.0f))); + if (var_r31->unk14.x > 0.0f) { + var_r31->unk08.x = 0.02f + (0.04f * var_r31->unk14.x); + } + else { + var_r31->unk08.x = (0.04f * var_r31->unk14.x) - 0.02f; + } + } + else { + var_f31 = var_r31->unk08.x - var_r31->unk14.x; + var_r31->unk08.x = var_r31->unk14.x + (0.98f * var_f31); + if (var_f31 < 0.0f) { + var_f25 = -var_f31; + } + else { + var_f25 = var_f31; + } + if (var_f25 < 0.02f) { + var_r31->unk14.x = 0.0f; + } + } + if ((var_r31->unk34.y < (var_r30->unk_14 - 100.0f)) || (var_r31->unk34.x > (100.0f + var_r30->unk_08)) + || (var_r31->unk34.x < (var_r30->unk_0C - 100.0f))) { + var_r31->unk00 = 0; + } + if (var_r31->unk34.y > (100.0f + var_r30->unk_10)) { + var_r31->unk34.y = var_r30->unk_14 - (100.0f * (fn_1_7500() / 65536.0f)); + } + if (var_r31->unk34.y < var_r30->unk_14) { + var_r31->unk40.a *= 0.9f; + } + else if (var_r31->unk40.a < 0xFF) { + var_r31->unk40.a += 8; + } + break; + } + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + if (particle->unk_04.x != 0.0f) { + sp8 = particle->unk_04; + sp8.x *= var_r31->unk2C / 28.0f; + sp8.y = (((u8)var_r31->unk2C & 1) != 0 ? 1.0f : -1.0f) * (sp8.x * (0.05f + (s32)(0.2f * (fn_1_7500() / 65536.0f)))); + VECAdd(&var_r31->unk34, &sp8, &var_r31->unk34); + } + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +s16 fn_1_71AC(s32 arg0, s16 arg1, ParticleHook hook) +{ + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + s32 var_r28; + M433DllUnkStruct *var_r27; + AnimData *var_r25; + + var_r25 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + var_r28 = Hu3DParticleCreate(var_r25, arg1); + Hu3DParticleHookSet(var_r28, hook); + var_r30 = Hu3DData[var_r28].unk_120; + var_r27 = fn_1_72D4(0x48); + var_r30->unk_1C = var_r27; + var_r27->unk_04 = 0; + var_r31 = var_r30->unk_48; + memset(var_r31, 0, arg1 * 0x44); + for (var_r29 = 0; var_r29 < arg1; var_r29++, var_r31++) { + var_r31->unk06 = -1; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xFF; + } + return var_r28; +} + +void fn_1_7294(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + lbl_1_bss_A8[var_r31] = NULL; + } +} + +void *fn_1_72D4(s32 arg0) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (!lbl_1_bss_A8[i]) { + break; + } + } + if (i == 0x20) { + return NULL; + } + lbl_1_bss_A8[i] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_A8[i], 0, arg0); + return lbl_1_bss_A8[i]; +} + +void fn_1_739C(M433DllUnkStruct2 *arg0) +{ + s32 var_r31; + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + if (lbl_1_bss_A8[var_r31] == arg0) { + break; + } + } + if (var_r31 != 0x20) { + HuMemDirectFree(lbl_1_bss_A8[var_r31]); + lbl_1_bss_A8[var_r31] = NULL; + } +} + +void fn_1_7430(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x20; var_r31++) { + if (lbl_1_bss_A8[var_r31]) { + HuMemDirectFree(lbl_1_bss_A8[var_r31]); + lbl_1_bss_A8[var_r31] = NULL; + } + } +} + +void fn_1_74B4(s16 arg0, Mtx arg1) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + MTXCopy(arg1, var_r31->unk_F0); +} + +u32 lbl_1_data_14C = 0x41C64E6D; + +s32 fn_1_7500(void) +{ + lbl_1_data_14C *= 0x41C64E6D; + lbl_1_data_14C += 0x3039; + return lbl_1_data_14C >> 0x10; +} + +void fn_1_7554(s32 arg0, s32 *arg1) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + for (var_r31 = 0; var_r31 < arg0; var_r31++) { + arg1[var_r31] = var_r31; + } + for (var_r31 = 0; var_r31 < (arg0 - 1); var_r31++) { + lbl_1_data_14C *= 0x41C64E6D; + lbl_1_data_14C += 0x3039; + var_r28 = lbl_1_data_14C >> 0x10; + var_r27 = var_r28; + var_r30 = arg0 * (var_r27 / 65536.0f); + var_r29 = arg1[var_r31]; + arg1[var_r31] = arg1[var_r30]; + arg1[var_r30] = var_r29; + } +} + +float fn_1_7690(float arg8, float arg9, float argA) +{ + float var_f31; + + if (arg8 > 180.0f) { + arg8 -= 360.0f; + } + else if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + if (arg9 > 180.0f) { + arg9 -= 360.0f; + } + else if (arg9 <= -180.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg8 = arg9 + (var_f31 * argA); + if (arg8 > 180.0f) { + return arg8 - 360.0f; + } + if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + return arg8; +} + +void fn_1_77F8(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + + if (argA != 0.0f) { + MTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); + } + else { + MTXIdentity(arg0); + } + if (arg8 != 0.0f) { + MTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); + MTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + MTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); + MTXConcat(sp8, arg0, arg0); + } +} + +void fn_1_7918(Mtx arg0, Vec *arg1) +{ + float var_f29; + float var_f28; + + arg1->x = atan2d(arg0[1][2], arg0[2][2]); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } + arg1->z = atan2d(arg0[0][1], arg0[0][0]); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + var_f29 = -arg0[0][2]; + var_f28 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-(1.0 - (var_f29 * var_f29))) : (1.0 - (var_f29 * var_f29))); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod(180.0f + arg1->x, 360.0); + arg1->z = fmod(180.0f + arg1->z, 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(var_f29, var_f28); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } +} + +void fn_1_7CB4(Mtx arg0, Vec *arg1) +{ + float var_f29; + float var_f27; + + arg1->z = atan2d(arg0[0][1], arg0[1][1]); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + arg1->y = atan2d(arg0[0][2], arg0[2][2]); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } + var_f29 = -arg0[2][1]; + var_f27 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-(1.0 - (var_f29 * var_f29))) : (1.0 - (var_f29 * var_f29))); + arg1->x = atan2d(var_f29, var_f27); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } +} + +float fn_1_7F94(Vec *arg0) +{ + float var_f30 = (arg0->z * arg0->z) + ((arg0->x * arg0->x) + (arg0->y * arg0->y)); + var_f30 = sqrtf(var_f30); + if (var_f30 != 0.0f) { + float var_f29 = 1.0f / var_f30; + arg0->x = arg0->x * var_f29; + arg0->y = arg0->y * var_f29; + arg0->z = arg0->z * var_f29; + } + else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return var_f30; +} + +void fn_1_812C(Vec arg0, Vec arg1, Vec *arg2, float arg8) +{ + if (arg8 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg8 = 0.0f; + } + else if (arg8 >= 1.0f) { + arg2->x = arg0.x + arg1.x; + arg2->y = arg0.y + arg1.y; + arg2->z = arg0.z + arg1.z; + arg8 = 1.0f; + } + else { + arg2->x = arg0.x + (arg8 * arg1.x); + arg2->y = arg0.y + (arg8 * arg1.y); + arg2->z = arg0.z + (arg8 * arg1.z); + } +} + +float fn_1_8204(Vec arg0, Vec arg1, Vec arg2) +{ + float var_f31; + float temp_f30; + + var_f31 = arg2.x * (arg1.x - arg0.x) + arg2.y * (arg1.y - arg0.y) + arg2.z * (arg1.z - arg0.z); + temp_f30 = -(arg2.x * arg2.x + arg2.y * arg2.y + arg2.z * arg2.z); + if (temp_f30 != 0.0f) { + var_f31 /= temp_f30; + } + return var_f31; +} + +float fn_1_82C0(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp44; + float var_f31; + + if (arg2->x * arg2->x + arg2->y * arg2->y + arg2->z * arg2->z == 0.0f) { + return (arg0->x - arg1->x) * (arg0->x - arg1->x) + (arg0->y - arg1->y) * (arg0->y - arg1->y) + (arg0->z - arg1->z) * (arg0->z - arg1->z); + } + var_f31 = fn_1_8204(*arg0, *arg1, *arg2); + fn_1_812C(*arg1, *arg2, &sp44, var_f31); + return (arg0->x - sp44.x) * (arg0->x - sp44.x) + (arg0->y - sp44.y) * (arg0->y - sp44.y) + (arg0->z - sp44.z) * (arg0->z - sp44.z); +} + +float fn_1_85FC(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + float var_f30; + + if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f30 = fn_1_8204(*arg0, *arg1, *arg2); + fn_1_812C(*arg1, *arg2, arg3, var_f30); + + arg4->x = arg0->x - arg3->x; + arg4->y = arg0->y - arg3->y; + arg4->z = arg0->z - arg3->z; + return fn_1_7F94(arg4); +} + +float fn_1_8AAC(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 1.0 - arg8; + float var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_8B24(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = fn_1_8AAC(arg8, *arg0++, *arg1++, *arg2++); + } +} + +float fn_1_8C40(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA))); + return var_f31; +} + +void fn_1_8CB8(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + float spC[3]; + float var_f29; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_8C40(arg8, *arg0++, *arg1++, *arg2++); + } + var_f29 = sqrtf((spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1]))); + if (var_f29) { + var_f29 = 1.0 / var_f29; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = var_f29 * spC[var_r31]; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} + +void fn_1_8F90(float *arg0, float *arg1, float *arg2, s32 arg3) +{ + float sp48[16]; + float sp8[16]; + double var_f31; + s32 var_r31; + + arg2[0] = 0.0f; + arg2[arg3 - 1] = 0.0f; + for (var_r31 = 0; var_r31 < (arg3 - 1); var_r31++) { + sp48[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp48[var_r31] == 0.0f) { + sp8[var_r31 + 1] = 0.0f; + } + else { + sp8[var_r31 + 1] = (arg1[var_r31 + 1] - arg1[var_r31]) / sp48[var_r31]; + } + } + arg2[1] = sp8[2] - sp8[1]; + sp8[1] = 2.0f * (arg0[2] - arg0[0]); + for (var_r31 = 1; var_r31 < (arg3 - 2); var_r31++) { + var_f31 = sp48[var_r31] / sp8[var_r31]; + arg2[var_r31 + 1] = (sp8[var_r31 + 2] - sp8[var_r31 + 1]) - (var_f31 * arg2[var_r31]); + sp8[var_r31 + 1] = (2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (var_f31 * sp48[var_r31]); + } + arg2[arg3 - 2] -= sp48[arg3 - 2] * arg2[arg3 - 1]; + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (sp8[var_r31] == 0.0f) { + arg2[var_r31] = 0.0f; + } + else { + arg2[var_r31] = (arg2[var_r31] - (sp48[var_r31] * arg2[var_r31 + 1])) / sp8[var_r31]; + } + } +} + +float fn_1_9248(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31 = arg8; + arg8 = arg8 - var_r31; + var_f31 = arg0[var_r31 + 1] - arg0[var_r31]; + var_f30 = var_f31 * arg8; + var_f29 = arg1[var_r31] + + (var_f30 + * ((var_f30 * ((3.0f * arg2[var_r31]) + ((var_f30 * (arg2[var_r31 + 1] - arg2[var_r31])) / var_f31))) + + (((arg1[var_r31 + 1] - arg1[var_r31]) / var_f31) - (var_f31 * ((2.0f * arg2[var_r31]) + arg2[var_r31 + 1]))))); + if (var_f31 == 0.0f) { + var_f29 = arg1[var_r31]; + } + return var_f29; +} + +void fn_1_939C(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 var_r28) +{ + float spD4[16]; + float sp94[16]; + Vec sp8; + s32 var_r31; + s32 var_r30; + s32 var_r27; + + arg0[0] = 0.0f; + for (var_r30 = 1; var_r30 < var_r28; var_r30++) { + VECSubtract((Vec *)&arg1[var_r30], (Vec *)&arg1[var_r30 - 1], &sp8); + arg0[var_r30] = arg0[var_r30 - 1] + VECMag(&sp8); + } + for (var_r27 = 0; var_r27 < 3; var_r27++) { + for (var_r30 = 0; var_r30 < var_r28; var_r30++) { + spD4[var_r30] = arg1[var_r30][var_r27]; + } + fn_1_8F90(arg0, spD4, sp94, var_r28); + for (var_r30 = 0; var_r30 < var_r28; var_r30++) { + arg2[var_r30][var_r27] = sp94[var_r30]; + } + } +} + +void fn_1_977C(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*arg3)[3], s32 arg4) +{ + float sp48[16]; + float sp8[16]; + s32 var_r30; + s32 var_r29; + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + for (var_r30 = 0; var_r30 < arg4; var_r30++) { + sp48[var_r30] = arg2[var_r30][var_r29]; + sp8[var_r30] = arg3[var_r30][var_r29]; + } + arg0[var_r29] = fn_1_9248(arg8, arg1, sp48, sp8, 3); + } +} + +u8 fn_1_9990(Vec *sp8) +{ + u32 var_r31; + M433DllUnkStruct2 *var_r30; + s32 var_r29; + + var_r29 = 0; + var_r30 = lbl_1_bss_90.unk_04; + for (var_r31 = 0; var_r31 < lbl_1_bss_90.unk_00; var_r31++, var_r30++) { + if (fn_1_5370(var_r30, sp8) != 0) { + break; + } + } + if (var_r31 < lbl_1_bss_90.unk_00) { + var_r29 = 1; + } + return var_r29; +} + +void fn_1_9A30(u8 arg0, float arg8, Vec *arg1, Vec *arg2, float arg9) +{ + M433DllMapWork2 *var_r31; + + var_r31 = lbl_1_bss_98[arg0]->data; + var_r31->unk_00 = 0; + var_r31->unk_144 = arg8; + var_r31->unk_148 = arg8; + var_r31->unk_1C = var_r31->unk_04; + var_r31->unk_34.x = arg1->x; + var_r31->unk_34.y = arg1->y; + var_r31->unk_34.z = arg1->z; + var_r31->unk_28 = var_r31->unk_10; + var_r31->unk_40.x = arg2->x; + var_r31->unk_40.y = arg2->y; + var_r31->unk_40.z = arg2->z; + var_r31->unk_134 = var_r31->unk_130; + var_r31->unk_138 = arg9; +} + +void fn_1_9ADC(u8 arg0) +{ + Vec sp14; + Vec sp8; + float var_f31; + M433DllMapWork2 *work; + omObjData *var_r30; + + sp14.x = 0.0f; + sp14.y = 80.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 600.0f; + work = lbl_1_bss_98[arg0]->data; + work->unk_00 = 0; + work->unk_148 = work->unk_144 = 1.0f; + work->unk_1C = work->unk_04; + work->unk_34.x = sp14.x; + work->unk_34.y = sp14.y; + work->unk_34.z = sp14.z; + work->unk_28 = work->unk_10; + work->unk_40.x = sp8.x; + work->unk_40.y = sp8.y; + work->unk_40.z = sp8.z; + work->unk_134 = work->unk_130; + work->unk_138 = var_f31; + Hu3DCameraPerspectiveSet(1 << arg0, 45.0f, 100.0f, 5000.0f, 1.2f); + Hu3DCameraViewportSet(1 << arg0, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2 >> arg0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1 << arg0, 0, 0, 0x280, 0x1E0); + Hu3DCameraScissorSet(2 >> arg0, 0, 0, 0, 0); + var_r30 = lbl_1_bss_A0; + Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r30->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r30->model[arg0 + 4], HU3D_ATTR_DISPOFF); + var_r30->func = fn_1_52D8; +} + +void fn_1_9DE8(u8 arg0, float arg8, s8 arg1) +{ + ParticleData *var_r31; + M433DllUnkStruct *var_r30; + + var_r31 = Hu3DData[lbl_1_bss_A0->model[arg0 + 6]].unk_120; + var_r30 = ((ParticleData *)Hu3DData[lbl_1_bss_A0->model[arg0 + 6]].unk_120)->unk_1C; + var_r30->unk_04 = 2; + var_r31->unk_04.x = arg8 * arg1; +} + +void fn_1_9EA8(u8 arg0) +{ + M433DllUnkStruct *var_r31 = ((ParticleData *)Hu3DData[lbl_1_bss_A0->model[arg0 + 6]].unk_120)->unk_1C; + if (var_r31->unk_04 == 2) { + var_r31->unk_04 = 3; + } +} + +u8 fn_1_9F08(u8 arg0) +{ + M433DllUnkStruct *var_r31 = ((ParticleData *)Hu3DData[lbl_1_bss_A0->model[arg0 + 6]].unk_120)->unk_1C; + return var_r31->unk_04; +} diff --git a/src/REL/m428Dll/player.c b/src/REL/m428Dll/player.c new file mode 100644 index 00000000..4964e8a5 --- /dev/null +++ b/src/REL/m428Dll/player.c @@ -0,0 +1,3401 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/mtx/GeoTypes.h" +#include "ext_math.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfload.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/init.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m428Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +typedef struct M428DllBss13CStruct { + /* 0x00 */ float unk_00; + /* 0x04 */ char pad_04[0x3C]; /* maybe part of unk_00[0x10]? */ +} M428DllBss13CStruct; /* size = 0x40 */ + +typedef struct M428DllData4B0Struct { + Vec unk_00; + float unk_0C; +} M428DllData4B0Struct; /* size = 0x10 */ + +typedef struct M428DllData500Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; +} M428DllData500Struct; /* size = 0x08 */ + +typedef struct M428DllPlayerWork { + omObjData *unk_00[2]; // M428DllPlayerWork2 + s16 unk_08[2]; + s16 unk_0C; + s16 unk_0E; + s16 unk_10; + s16 unk_12; + s32 unk_14; + s32 unk_18; + float unk_1C; + s32 unk_20; + s32 unk_24; + s32 unk_28; + float unk_2C; + float unk_30; + float unk_34; + s32 unk_38; + Vec unk_3C; + float unk_48; + float unk_4C[2]; + float unk_54[2]; + float unk_5C; + float unk_60; + Vec unk_64[2]; + Vec unk_7C; + Vec unk_88; + Vec unk_94; + Vec unk_A0; + Vec unk_AC; + s32 unk_B8; + s32 unk_BC; + s32 unk_C0; + s32 unk_C4; + float unk_C8; +} M428DllPlayerWork; /* size = 0xCC */ + +typedef struct M428DllPlayerWork2 { + s16 unk_00; + s16 unk_02; + s16 unk_04; + s16 unk_06; + s16 unk_08; + s16 unk_0A; + s16 unk_0C; + s16 unk_0E; + s16 unk_10; + float unk_14; + float unk_18; + s16 unk_1C; + s16 unk_1E; + s16 unk_20; + s16 unk_22; + s16 unk_24; + s16 unk_26; + float unk_28; + float unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + Vec unk_3C; + Vec unk_48; + Vec unk_54; + Mtx unk_60; + Vec unk_90; + char unk_9C[0x100]; + s32 unk_19C; + s32 unk_1A0; + s32 unk_1A4; + s32 unk_1A8; + float unk_1AC; + s32 unk_1B0; + s32 unk_1B4; + Vec unk_1B8; +} M428DllPlayerWork2; /* size = 0x1C4 */ + +typedef struct M428DllPlayerWork3 { + s32 unk_00; + s32 unk_04[2]; + float unk_0C[2][2]; + s32 unk_1C[2]; + float unk_24[2][2]; + AnimData *unk_34; + AnimData *unk_38; + s32 unk_3C[2][2]; + s32 unk_4C[2][2]; +} M428DllPlayerWork3; /* size = 0x5C */ + +typedef struct M428DllPlayerUnkStruct { + s16 unk_00; + s16 unk_02; + s32 unk_04; + Vec unk_08[4]; +} M428DllPlayerUnkStruct; /* size = 0x38 */ + +typedef struct M428DllPlayerUnk120Struct { + s16 unk_00; + s16 unk_02; + float unk_04; + float unk_08; + s32 unk_0C; + s32 unk_10; + float unk_14; + float unk_18; + s32 unk_1C; + Vec unk_20; + Vec unk_2C; + Vec unk_38; + s32 unk_44; + float unk_48; + float unk_4C; + float unk_50; + M428DllPlayerUnkStruct *unk_54; +} M428DllPlayerUnk120Struct; /* size = 0x58 */ + +typedef struct M428DllPlayerUnkStruct2 { + s16 unk_00; + s16 unk_02; + float unk_04; + float unk_08; + float unk_0C; + char unk10[8]; + float unk_18; + char unk1C[0xC]; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + Vec unk_38; + GXColor unk_44; + s32 unk_48; +} M428DllPlayerUnkStruct2; /* size = 0x4C */ + +typedef void (*M428DllPlayerHook)(ModelData *model, struct M428DllPlayerUnk120Struct2 *arg1, Mtx matrix); + +typedef struct M428DllPlayerUnk120Struct2 { + s16 unk_00; + s16 unk_02; + char unk04[0x1C]; + u8 unk_20; + u8 unk_21; + u8 unk_22; + u8 unk_23; + char unk24[2]; + s16 unk_26; + s32 unk_28; + s32 unk_2C; + u32 unk_30; + u32 unk_34; + AnimData *unk_38; + M428DllPlayerUnkStruct2 *unk_3C; + Vec *unk_40; + Vec2f *unk_44; + void *unk_48; + M428DllPlayerHook unk_4C; + ModelData *unk_50; +} M428DllPlayerUnk120Struct2; /* size = 0x54 */ + +typedef struct M428DllPlayerWork4 { + s32 unk_00[2]; + s32 unk_08[2]; + AnimData *unk_10; +} M428DllPlayerWork4; /* size = 0x14 */ + +void fn_1_102A8(ModelData *modle, Mtx matrix); +void fn_1_10530(s32 arg0, Vec *arg1, Vec *arg2); +void fn_1_10590(s32 arg0, s32 arg1, s32 arg2, Vec *arg3); +void fn_1_105E8(s32 arg0, float arg8, float arg9); +s32 fn_1_10788(s32 arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_1_10A88(void); +void fn_1_11014(omObjData *object); +void fn_1_115F8(void); +void fn_1_118A8(s32 arg0, float arg8); +void fn_1_11930(void); +void fn_1_11A60(omObjData *object); +void fn_1_11C20(void); +s32 fn_1_11DE4(s32 arg0, Vec arg1, Vec arg2, float arg8, float arg9, float argA, float argB, GXColor arg3); +float fn_1_1236C(float arg8, float arg9, float argA); +void fn_1_129B4(float arg8, Vec *arg0, Vec *arg1, Vec *arg2); +void fn_1_12AA4(float arg8, Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3); +s16 fn_1_12CD4(AnimData *arg0, s16 arg1); +void fn_1_134C0(ModelData *model, Mtx matrix); +void fn_1_13D9C(s16 arg0, s16 arg1, s32 arg2); +void fn_1_13E14(s16 arg0, s16 arg1, Vec arg2); +void fn_1_13EC8(s16 arg0, s16 arg1, float arg8); +s32 fn_1_13F54(s16 arg0, char *arg1, Mtx arg2, s32 arg3); +void fn_1_14088(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3); +void fn_1_A108(omObjData *object); +void fn_1_A4C8(omObjData *object); +void fn_1_B3D4(omObjData *object); +void fn_1_B43C(omObjData *object); +void fn_1_BBD0(omObjData *object); +void fn_1_E5F4(omObjData *object); +void fn_1_E600(omObjData *object); +s32 fn_1_F288(Vec *arg0, Vec *arg1, float arg8); +s32 fn_1_F538(Vec *arg0, Vec *arg1, Vec *arg2, float arg8); +s32 fn_1_FB8C(Vec *arg0, Vec *arg1, float arg8, s32 arg2, s32 arg3); + +extern u32 GlobalCounter; + +Vec lbl_1_data_150[4] = { + { -140.0f, -400.0f, 0.0f }, + { 140.0f, -300.0f, 0.0f }, + { -140.0f, -300.0f, 0.0f }, + { 140.0f, -400.0f, 0.0f }, +}; +Vec lbl_1_data_180[4] = { + { -100.0f, -10.0f, 150.0f }, + { 100.0f, -10.0f, 150.0f }, + { -100.0f, -10.0f, 150.0f }, + { 100.0f, -10.0f, 150.0f }, +}; +Vec lbl_1_data_1B0[4][0xE] = { + { + { -11.0f, 214.0f, 39.0f }, + { -11.0f, 400.0f, 46.0f }, + { -11.0f, 668.0f, 56.0f }, + { -11.0f, 931.0f, 42.0f }, + { 7.0f, 1131.0f, 65.0f }, + { -452.0f, 1449.0f, 57.0f }, + { -478.0f, 1763.0f, 48.0f }, + { -452.0f, 2001.0f, 44.0f }, + { -311.0f, 2120.0f, 55.0f }, + { -85.0f, 2442.0f, 42.0f }, + { -32.0f, 2876.0f, 43.0f }, + { -12.0f, 3300.0f, 48.0f }, + { -42.0f, 4500.0f, 48.0f }, + { -42.0f, 4500.0f, 48.0f }, + }, + { + { 16.0f, 203.0f, 40.0f }, + { 0.0f, 456.0f, 50.0f }, + { 15.0f, 650.0f, 58.0f }, + { -268.0f, 935.0f, 51.0f }, + { -463.0f, 1205.0f, 66.0f }, + { -663.0f, 1313.0f, 69.0f }, + { -460.0f, 1600.0f, 59.0f }, + { -333.0f, 1946.0f, 46.0f }, + { -82.0f, 2188.0f, 44.0f }, + { -76.0f, 2374.0f, 40.0f }, + { -108.0f, 2620.0f, 43.0f }, + { -95.0f, 2990.0f, 46.0f }, + { -270.0f, 3445.0f, 46.0f }, + { -42.0f, 4500.0f, 48.0f }, + }, + { + { 26.0f, 354.0f, 46.0f }, + { 29.0f, 604.0f, 57.0f }, + { 30.0f, 877.0f, 39.0f }, + { 51.0f, 1086.0f, 64.0f }, + { 360.0f, 1196.0f, 46.0f }, + { 398.0f, 1416.0f, 39.0f }, + { 468.0f, 1658.0f, 43.0f }, + { 468.0f, 1944.0f, 53.0f }, + { 135.0f, 2174.0f, 47.0f }, + { 107.0f, 2430.0f, 61.0f }, + { 98.0f, 2698.0f, 43.0f }, + { 90.0f, 2995.0f, 50.0f }, + { 0.0f, 4500.0f, 48.0f }, + { 0.0f, 4500.0f, 48.0f }, + }, + { + { -24.0f, 313.0f, 41.0f }, + { -11.0f, 529.0f, 51.0f }, + { -33.0f, 799.0f, 44.0f }, + { 7.0f, 990.0f, 53.0f }, + { 135.0f, 1196.0f, 57.0f }, + { 393.0f, 1379.0f, 39.0f }, + { 429.0f, 1457.0f, 42.0f }, + { 420.0f, 1984.0f, 54.0f }, + { 190.0f, 2239.0f, 53.0f }, + { 70.0f, 2532.0f, 55.0f }, + { 75.0f, 2933.0f, 44.0f }, + { 75.0f, 4500.0f, 48.0f }, + { 75.0f, 4500.0f, 48.0f }, + { 75.0f, 4500.0f, 48.0f }, + }, +}; +Vec lbl_1_data_450[4] = { + { -30.000002f, -10.0f, -90.0f }, + { 20.0f, -10.0f, -70.0f }, + { 0.0f, -10.0f, 0.0f }, + { 0.0f, -10.0f, 0.0f }, +}; +Vec lbl_1_data_480[4] = { + { 15.0f, 150.0f, 0.0f }, + { 15.0f, 210.0f, 0.0f }, + { 0.0f, 180.0f, 0.0f }, + { 0.0f, 180.0f, 0.0f }, +}; +M428DllData4B0Struct lbl_1_data_4B0[5] = { + { { -400.0f, 700.0f, 0.0f }, 200.0f }, + { { 400.0f, 900.0f, 0.0f }, 200.0f }, + { { 0.0f, 1800.0f, 0.0f }, 220.0f }, + { { -600.0f, 3100.0f, 0.0f }, 300.0f }, + { { 600.0f, 2880.0f, 0.0f }, 300.0f }, +}; +M428DllData500Struct lbl_1_data_500[0xC] = { + { 0x5F0000, 0 }, + { 0x5F0002, 0 }, + { 0x5F0003, 0 }, + { -1, 0 }, + { -1, 1 }, + { -1, 2 }, + { -1, 3 }, + { 0x5F0006, 0 }, + { 0x5F0014, 0 }, + { 0x5F005B, 0 }, + { 0x5F0017, 0 }, + { 0x5F0018, 0 }, +}; +s32 lbl_1_data_560[4][8] = { + { + DATA_MAKE_NUM(DATADIR_M428, 0x11), + DATA_MAKE_NUM(DATADIR_M428, 0x12), + DATA_MAKE_NUM(DATADIR_M428, 0x13), + DATA_MAKE_NUM(DATADIR_M428, 0x14), + DATA_MAKE_NUM(DATADIR_M428, 0x15), + DATA_MAKE_NUM(DATADIR_M428, 0x16), + DATA_MAKE_NUM(DATADIR_M428, 0x17), + DATA_MAKE_NUM(DATADIR_M428, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_M428, 0x19), + DATA_MAKE_NUM(DATADIR_M428, 0x1A), + DATA_MAKE_NUM(DATADIR_M428, 0x1B), + DATA_MAKE_NUM(DATADIR_M428, 0x1C), + DATA_MAKE_NUM(DATADIR_M428, 0x1D), + DATA_MAKE_NUM(DATADIR_M428, 0x1E), + DATA_MAKE_NUM(DATADIR_M428, 0x1F), + DATA_MAKE_NUM(DATADIR_M428, 0x20), + }, + { + DATA_MAKE_NUM(DATADIR_M428, 0x21), + DATA_MAKE_NUM(DATADIR_M428, 0x22), + DATA_MAKE_NUM(DATADIR_M428, 0x23), + DATA_MAKE_NUM(DATADIR_M428, 0x24), + DATA_MAKE_NUM(DATADIR_M428, 0x25), + DATA_MAKE_NUM(DATADIR_M428, 0x26), + DATA_MAKE_NUM(DATADIR_M428, 0x27), + DATA_MAKE_NUM(DATADIR_M428, 0x28), + }, + { + DATA_MAKE_NUM(DATADIR_M428, 0x29), + DATA_MAKE_NUM(DATADIR_M428, 0x2A), + DATA_MAKE_NUM(DATADIR_M428, 0x2B), + DATA_MAKE_NUM(DATADIR_M428, 0x2C), + DATA_MAKE_NUM(DATADIR_M428, 0x2D), + DATA_MAKE_NUM(DATADIR_M428, 0x2E), + DATA_MAKE_NUM(DATADIR_M428, 0x2F), + DATA_MAKE_NUM(DATADIR_M428, 0x30), + }, +}; +Vec lbl_1_data_5E0[8] = { + { 0.0f, -10.0f, -20.0f }, + { 0.0f, -10.0f, -20.0f }, + { 0.0f, -30.000002f, -20.0f }, + { 0.0f, -10.0f, -20.0f }, + { 0.0f, -10.0f, -20.0f }, + { 0.0f, 10.0f, -10.0f }, + { 0.0f, -30.000002f, -20.0f }, + { 0.0f, -10.0f, -20.0f }, +}; +s32 lbl_1_data_640[4] = { 0x80000000, 0x40000000, 0x20000000, 0x10000000 }; +GXColor lbl_1_data_650 = { 0xFF, 0xFF, 0xFF, 0x20 }; +GXColor lbl_1_data_654 = { 0xFF, 0xFF, 0xFF, 0x40 }; + +Process *lbl_1_bss_2D0; +// M428DllPlayerWork +omObjData *lbl_1_bss_2C8[2]; +omObjData *lbl_1_bss_2B8[4]; +// M428DllPlayerWork3 +omObjData *lbl_1_bss_2B4; +// M428DllPlayerWork4 +omObjData *lbl_1_bss_2B0; +M428DllPlayerWork *lbl_1_bss_2AC; +M428DllPlayerWork2 *lbl_1_bss_2A8; +s32 lbl_1_bss_2A4; +s32 lbl_1_bss_29C[2]; +Mtx lbl_1_bss_23C[2]; +M428DllBss13CStruct lbl_1_bss_1BC[2]; +M428DllBss13CStruct lbl_1_bss_13C[2]; +s32 lbl_1_bss_138; +s32 lbl_1_bss_134; +s32 lbl_1_bss_130; + +omObjData *fn_1_9F5C(Process *process) +{ + s32 var_r31; + + lbl_1_bss_2D0 = process; + lbl_1_bss_2A4 = 0; + lbl_1_bss_2AC = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M428DllPlayerWork), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_2AC, 0, 2 * sizeof(M428DllPlayerWork)); + lbl_1_bss_2A8 = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(M428DllPlayerWork2), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_2A8, 0, 4 * sizeof(M428DllPlayerWork2)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_2C8[var_r31] = omAddObjEx(process, 0x40, 1, 0, -1, fn_1_A108); + lbl_1_bss_2C8[var_r31]->work[0] = var_r31; + } + fn_1_10A88(); + fn_1_11798(0); + fn_1_11930(); + lbl_1_bss_29C[0] = lbl_1_bss_29C[1] = 0; + return lbl_1_bss_2C8[var_r31]; +} + +void fn_1_A0B0(void) +{ + s32 var_r31; + + fn_1_115F8(); + fn_1_11C20(); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + fn_1_B3D4(lbl_1_bss_2C8[var_r31]); + } +} + +void fn_1_A108(omObjData *object) +{ + M428DllPlayerWork *work; + s32 var_r30; + s32 var_r28; + s32 var_r27; + + var_r28 = object->work[0]; + work = &lbl_1_bss_2AC[var_r28]; + object->data = work; + work->unk_0C = var_r28; + work->unk_0E = 0; + work->unk_10 = 0; + work->unk_12 = (u8)frand() % 4; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_1C = 0.0f; + work->unk_20 = 0; + work->unk_24 = 0; + work->unk_28 = 0; + work->unk_2C = 0.0f; + work->unk_30 = 0.0f; + work->unk_34 = 0.0f; + work->unk_B8 = 0; + work->unk_BC = -1; + work->unk_C0 = work->unk_C4 = 0; + work->unk_C8 = 0.0f; + work->unk_38 = -1; + work->unk_4C[0] = work->unk_4C[1] = 0.0f; + work->unk_48 = 400.0f; + work->unk_54[0] = work->unk_5C = 200.0f; + work->unk_54[1] = work->unk_60 = 200.0f; + work->unk_64[0].x = 0.5f * (lbl_1_data_150[0].x + lbl_1_data_150[1].x); + work->unk_64[0].y = 0.5f * (lbl_1_data_150[0].y + lbl_1_data_150[1].y); + work->unk_64[0].z = 0.5f * (lbl_1_data_150[0].z + lbl_1_data_150[1].z); + work->unk_64[1] = work->unk_64[0]; + work->unk_7C = work->unk_64[0]; + work->unk_88 = work->unk_64[1]; + work->unk_94.x = work->unk_94.y = work->unk_94.z = 0.0f; + work->unk_A0.x = work->unk_A0.y = work->unk_A0.z = 0.0f; + work->unk_AC.x = work->unk_AC.y = work->unk_AC.z = 0.0f; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r27 = lbl_1_bss_50[var_r30 + (var_r28 * 2)]; + work->unk_08[var_r30] = var_r27; + work->unk_00[var_r30] = lbl_1_bss_2B8[var_r27] = omAddObjEx(lbl_1_bss_2D0, 0x41, 2, 0xC, -1, fn_1_B43C); + work->unk_00[var_r30]->data = NULL; + work->unk_00[var_r30]->work[0] = var_r27; + work->unk_00[var_r30]->work[1] = work->unk_0C; + work->unk_00[var_r30]->work[2] = var_r30; + } + object->model[0] = fn_1_FB8C(&lbl_1_data_150[0], &lbl_1_data_150[1], 400.0f, 0x30, work->unk_0C); + if (work->unk_0C == 0) { + Hu3DModelCameraSet(object->model[0], 1); + } + else { + Hu3DModelCameraSet(object->model[0], 2); + } + object->func = fn_1_A4C8; +} + +void fn_1_A4C8(omObjData *object) +{ + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + M428DllPlayerWork *var_r31; + M428DllPlayerWork2 *var_r30; + M428DllPlayerWork2 *var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + + var_r22 = 0; + var_r24 = 0; + var_r23 = 0; + var_r31 = object->data; + var_r30 = var_r31->unk_00[0]->data; + var_r29 = var_r31->unk_00[1]->data; + if (!var_r30 || !var_r29) { + return; + } + if ((fn_1_26E0() < 7) || (lbl_1_bss_2A4 == 0)) { + sp50.x = var_r30->unk_90.x; + sp50.y = var_r30->unk_90.y; + sp50.z = var_r30->unk_90.z; + sp44.x = var_r29->unk_90.x; + sp44.y = var_r29->unk_90.y; + sp44.z = var_r29->unk_90.z; + VECAdd(&sp50, &sp44, &sp2C); + VECScale(&sp2C, &sp2C, 0.5f); + var_r21 = fn_1_10788(object->model[0], &sp50, &sp44, &sp38); + if (var_r21 != -1) { + if (var_r31->unk_38 != var_r21) { + var_r31->unk_38 = var_r21; + var_r31->unk_3C = sp38; + var_r23 = 1; + } + else { + var_r23 = 0; + } + var_r31->unk_64[1] = var_r31->unk_3C; + var_r31->unk_64[0] = var_r31->unk_64[1]; + var_f31 = var_r31->unk_4C[0] + var_r31->unk_4C[1]; + if (var_f31 >= 400.0f) { + if (var_r23 != 0) { + var_r31->unk_48 = var_f31; + } + else { + var_r31->unk_48 + (400.0f - var_r31->unk_48) * 0.01f; // bug + (void)var_r22; + } + var_f31 = 1.0f / var_f31; + var_r31->unk_54[0] = var_r31->unk_48 * (var_r31->unk_4C[0] * var_f31); + var_r31->unk_54[1] = var_r31->unk_48 * (var_r31->unk_4C[1] * var_f31); + } + else { + var_f31 = 1.0f / var_f31; + var_r31->unk_54[0] = 400.0f * (var_r31->unk_4C[0] * var_f31); + var_r31->unk_54[1] = 400.0f * (var_r31->unk_4C[1] * var_f31); + var_r31->unk_48 = 400.0f; + } + var_f31 = var_r31->unk_54[0] + var_r31->unk_54[1]; + var_r26 = 48.0f * (var_r31->unk_54[0] / var_f31); + if (var_r26 < 1) { + var_r26 = 1; + } + else if (var_r26 > 0x2E) { + var_r26 = 0x2E; + } + fn_1_10590(object->model[0], 1, var_r26, &var_r31->unk_3C); + var_f31 = (var_r31->unk_4C[0] + var_r31->unk_4C[1]) / var_r31->unk_48; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_105E8(object->model[0], 1.0f - var_f31, 1.0f - var_f31); + } + else { + var_r31->unk_38 = -1; + fn_1_10590(object->model[0], 0, 0x18, &var_r31->unk_3C); + var_f31 = (var_r31->unk_4C[0] + var_r31->unk_4C[1]) / 400.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_105E8(object->model[0], 1.0f - var_f31, 1.0f - var_f31); + var_r31->unk_48 = 400.0f; + var_r31->unk_64[1] = sp2C; + var_r31->unk_64[0] = var_r31->unk_64[1]; + var_r31->unk_54[0] = 200.0f; + var_r31->unk_54[1] = 200.0f; + } + var_r31->unk_54[0] = var_r31->unk_5C + (0.01f * (var_r31->unk_54[0] - var_r31->unk_5C)); + var_r31->unk_54[1] = var_r31->unk_60 + (0.01f * (var_r31->unk_54[1] - var_r31->unk_60)); + fn_1_129B4(0.1f, &var_r31->unk_64[2], &var_r31->unk_64[0], &var_r31->unk_64[0]); + fn_1_129B4(0.1f, &var_r31->unk_88, &var_r31->unk_64[1], &var_r31->unk_64[1]); + var_r31->unk_5C = var_r31->unk_54[0]; + var_r31->unk_60 = var_r31->unk_54[1]; + var_r31->unk_7C = var_r31->unk_64[0]; + var_r31->unk_88 = var_r31->unk_64[1]; + if (var_r31->unk_38 != -1) { + var_r31->unk_94 = var_r31->unk_64[0]; + var_r31->unk_A0 = var_r31->unk_64[1]; + } + else if (var_r30->unk_20 == 4) { + var_r31->unk_94 = var_r29->unk_90; + var_r31->unk_A0 = var_r30->unk_90; + } + else if (var_r29->unk_20 == 4) { + var_r31->unk_94 = var_r30->unk_90; + var_r31->unk_A0 = var_r29->unk_90; + } + else { + var_r31->unk_94 = var_r31->unk_64[0]; + var_r31->unk_A0 = var_r31->unk_64[1]; + } + if (lbl_1_bss_29C[var_r31->unk_0C] == 5) { + var_r24 = 1; + } + if ((fn_1_26E0() != 4) || (var_r31->unk_18 != 0)) { + var_r24 = 0; + } + if (var_r24 != 0) { + var_r27 = -1; + if ((var_r30->unk_20 == 2) && (var_r29->unk_20 == 3)) { + var_r27 = 0; + } + else if ((var_r30->unk_20 == 3) && (var_r29->unk_20 == 2)) { + var_r27 = 1; + } + else if ((var_r30->unk_20 == 2) && (var_r29->unk_20 == 2)) { + if (sp50.y > sp44.y) { + var_r27 = 0; + } + else { + var_r27 = 1; + } + } + if (var_r27 == 0) { + var_r30->unk_20 = 4; + var_r30->unk_22 = 0; + var_r30->unk_34 = 0; + var_r30->unk_38 = 0; + var_r30->unk_3C.x = 0.0f; + var_r30->unk_3C.y = var_r30->unk_3C.z = 0.0f; + var_r31->unk_2C = sp50.y; + var_r31->unk_AC = sp50; + var_r31->unk_34 = 0.0f; + } + else if (var_r27 == 1) { + var_r29->unk_20 = 4; + var_r29->unk_22 = 0; + var_r29->unk_34 = 0; + var_r29->unk_38 = 0; + var_r29->unk_3C.x = 0.0f; + var_r29->unk_3C.y = var_r29->unk_3C.z = 0.0f; + var_r31->unk_2C = sp44.y; + var_r31->unk_AC = sp44; + var_r31->unk_34 = 0.0f; + } + } + if ((var_r30->unk_20 == 4) || (var_r29->unk_20 == 4)) { + var_r31->unk_24 = 1; + var_r31->unk_28 = 1; + } + else { + var_r31->unk_24 = 0; + } + if (lbl_1_bss_29C[var_r31->unk_0C] != 5) { + var_r31->unk_28 = 0; + } + sp50.x = var_r30->unk_90.x; + sp50.y = var_r30->unk_90.y; + sp50.z = var_r30->unk_90.z; + sp44.x = var_r29->unk_90.x; + sp44.y = var_r29->unk_90.y; + sp44.z = var_r29->unk_90.z; + fn_1_10530(object->model[0], &sp50, &sp44); + if (var_r31->unk_00[0]->trans.y > var_r31->unk_00[1]->trans.y) { + var_r31->unk_1C = var_r31->unk_00[0]->trans.y; + var_r31->unk_10 = 0; + } + else if (var_r31->unk_00[1]->trans.y > var_r31->unk_00[0]->trans.y) { + var_r31->unk_1C = var_r31->unk_00[1]->trans.y; + var_r31->unk_10 = 1; + } + else { + var_r25 = frand() & 1; + var_r31->unk_1C = var_r31->unk_00[var_r25]->trans.y; + var_r31->unk_10 = var_r25; + } + fn_1_118A8(var_r31->unk_0C, var_r31->unk_1C / 3800.0f); + if (fn_1_26E0() == 4) { + sp50.x = var_r31->unk_00[0]->trans.x; + sp50.y = var_r31->unk_00[0]->trans.y; + sp50.z = var_r31->unk_00[0]->trans.z; + sp44.x = var_r31->unk_00[1]->trans.x; + sp44.y = var_r31->unk_00[1]->trans.y; + sp44.z = var_r31->unk_00[1]->trans.z; + VECAdd(&sp50, &sp44, &sp2C); + VECScale(&sp2C, &sp2C, 0.5f); + VECSubtract(&sp50, &sp44, &sp20); + sp20.z = 0.0f; + var_f29 = VECMag(&sp20); + if (var_f29 < 100.0f) { + var_f27 = 0.0f; + } + else if (var_f29 >= 300.0f) { + var_f27 = 1.0f; + } + else { + var_f27 = (var_f29 - 100.0f) / 200.0f; + } + var_f29 = 1500.0f + (500.0f * var_f27); + var_f28 = sp2C.x; + if (var_f28 > 400.0f) { + var_f28 = 400.0f; + } + else if (var_f28 < -400.0f) { + var_f28 = -400.0f; + } + var_f26 = sp2C.y; + if (var_f26 < 400.0f) { + var_f26 = 400.0f; + } + var_f25 = var_r31->unk_1C; + if (var_f25 < 20.0f) { + var_f30 = 0.0f; + } + else { + var_f30 = (var_f25 - 20.0f) / 3780.0f; + if (var_f30 >= 1.0f) { + var_f30 = 1.0f; + } + } + sp14.x = var_f28; + sp14.y = var_f26; + sp14.z = 0.0f; + sp8.x = 70.0f * var_f30; + sp8.y = 0.0f; + sp8.z = 0.0f; + if (var_r31->unk_C4 > 0) { + var_f30 = var_r31->unk_C8 * ((float)var_r31->unk_C0 / var_r31->unk_C4); + var_r25 = (var_r31->unk_C0 * 0x2D) % 360; + var_f30 = var_f30 * sind(var_r25); + var_f30 = var_f30; + sp14.x += var_f30; + sp14.y += var_f30; + if (--var_r31->unk_C0 <= 0) { + var_r31->unk_C0 = var_r31->unk_C4 = 0; + } + var_r22 = 1; + } + if (var_r22 == 0) { + fn_1_9A30(var_r31->unk_0C, 12.0f, &sp14, &sp8, var_f29); + } + else { + fn_1_9A30(var_r31->unk_0C, 3.0f, &sp14, &sp8, var_f29); + } + } + if (var_r31->unk_BC != -1) { + if (var_r31->unk_BC == 0) { + var_r31->unk_B8++; + if (var_r31->unk_B8 == 1) { + omVibrate(var_r31->unk_08[0], 0xC, 6, 6); + omVibrate(var_r31->unk_08[1], 0xC, 6, 6); + return; + } + if (var_r31->unk_B8 >= 45.0f) { + var_r31->unk_B8 = 0; + } + } + else { + var_r31->unk_B8++; + if (var_r31->unk_B8 == 1) { + omVibrate(var_r31->unk_08[0], 0xC, 0xC, 0); + omVibrate(var_r31->unk_08[1], 0xC, 0xC, 0); + return; + } + if (var_r31->unk_B8 >= 6.0f) { + var_r31->unk_B8 = 0; + } + } + } + } + else { + switch (fn_1_26E0()) { + case 7: + if (lbl_1_bss_2A4 != 0) { + if (var_r31->unk_14 != 0) { + var_r30->unk_20 = 7; + var_r30->unk_22 = 0; + var_r29->unk_20 = 7; + var_r29->unk_22 = 0; + } + else { + var_r30->unk_20 = 9; + var_r30->unk_22 = 0; + var_r29->unk_20 = 9; + var_r29->unk_22 = 0; + } + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + case 8: + break; + case 9: + if ((var_r31->unk_14 != 0) && (lbl_1_bss_2A4 != 0)) { + var_r30->unk_20 = 8; + var_r30->unk_22 = 0; + var_r29->unk_20 = 8; + var_r29->unk_22 = 0; + } + break; + } + } +} + +void fn_1_B3D4(omObjData *object) +{ + s32 var_r31; + M428DllPlayerWork *work = object->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + fn_1_E5F4(work->unk_00[var_r31]); + work->unk_00[var_r31] = NULL; + } +} + +void fn_1_B43C(omObjData *object) +{ + M428DllPlayerWork2 *var_r31; + s32 var_r29; + s32 var_r28; + u32 var_r27; + M428DllPlayerWork *var_r26; + u32 var_r25; + u32 var_r24; + + var_r27 = object->work[0]; + var_r25 = object->work[1]; + var_r24 = object->work[2]; + var_r26 = &lbl_1_bss_2AC[var_r25]; + var_r31 = object->data = &lbl_1_bss_2A8[var_r27]; + var_r31->unk_00 = var_r27; + var_r31->unk_02 = var_r25; + var_r31->unk_04 = var_r24; + var_r31->unk_06 = GWPlayerCfg[var_r27].character; + var_r31->unk_08 = GWPlayerCfg[var_r27].pad_idx; + var_r31->unk_0A = GWPlayerCfg[var_r27].iscom; + var_r31->unk_0C = GWPlayerCfg[var_r27].diff; + if ((var_r31->unk_0A == 0) && ((lbl_1_data_640[var_r31->unk_08] & HuPadRumbleGet()) == 0)) { + lbl_1_bss_18 = 0; + } + if (var_r31->unk_0A != 0) { + var_r26->unk_0E = var_r26->unk_0E | (1 << var_r31->unk_04); + } + var_r31->unk_0E = var_r31->unk_10 = 0; + var_r31->unk_14 = var_r31->unk_18 = 0.0f; + var_r31->unk_1C = -1; + var_r31->unk_1E = 4; + var_r31->unk_20 = 0; + var_r31->unk_22 = var_r31->unk_24 = 0; + var_r31->unk_26 = 0; + var_r31->unk_28 = 200.0f; + var_r31->unk_2C = var_r31->unk_28; + var_r31->unk_30 = 0; + var_r31->unk_34 = 0; + var_r31->unk_38 = 0; + var_r31->unk_3C.x = var_r31->unk_3C.y = var_r31->unk_3C.z = 0.0f; + var_r31->unk_48.x = var_r31->unk_48.y = var_r31->unk_48.z = 0.0f; + var_r31->unk_54.x = 0.0f; + var_r31->unk_54.z = 0.0f; + var_r31->unk_54.y = 75.0f; + mtxRot(var_r31->unk_60, 0.0f, 0.0f, 0.0f); + mtxTransCat(var_r31->unk_60, lbl_1_data_5E0[var_r31->unk_06].x, lbl_1_data_5E0[var_r31->unk_06].y, lbl_1_data_5E0[var_r31->unk_06].z); + var_r31->unk_90.x = lbl_1_data_150[var_r31->unk_04].x; + var_r31->unk_90.y = 80.0f + lbl_1_data_150[var_r31->unk_04].y; + var_r31->unk_90.z = lbl_1_data_150[var_r31->unk_04].z; + strcpy(var_r31->unk_9C, MakeObjectName(CharModelHookNameGet(var_r31->unk_06, 4, 4))); + var_r31->unk_19C = -1; + var_r31->unk_1A0 = 30.0f * ((frand() & 0x7FFF) % 5); + var_r31->unk_1A4 = 0; + var_r31->unk_1A8 = 0; + var_r31->unk_1AC = 0.0f; + var_r31->unk_1B0 = 0; + var_r31->unk_1B4 = 0; + var_r31->unk_1B8.x = 0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f)); + var_r31->unk_1B8.y = 0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f)); + var_r31->unk_1B8.z = 0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f)); + var_r29 = CharModelCreate(var_r31->unk_06, 4); + object->model[0] = var_r29; + if (var_r31->unk_02 == 0) { + Hu3DModelCameraSet(var_r29, 1); + fn_1_4170(var_r29, 1); + } + else { + Hu3DModelCameraSet(var_r29, 2); + fn_1_4170(var_r29, 2); + } + Hu3DModelLayerSet(var_r29, 2); + CharModelStepTypeSet(var_r31->unk_06, 0); + if (var_r31->unk_02 == 0) { + var_r29 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 0x07)); + object->model[1] = var_r29; + Hu3DModelCameraSet(var_r29, 1); + } + else { + var_r29 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M428, 0x08)); + object->model[1] = var_r29; + Hu3DModelCameraSet(var_r29, 2); + } + Hu3DModelLayerSet(var_r29, 2); + for (var_r28 = 0; var_r28 < 0xC; var_r28++) { + if (lbl_1_data_500[var_r28].unk_00 != 0xFFFFFFFF) { + object->motion[var_r28] = CharModelMotionCreate(var_r31->unk_06, lbl_1_data_500[var_r28].unk_00); + } + else { + object->motion[var_r28] = Hu3DJointMotionFile(object->model[0], lbl_1_data_560[lbl_1_data_500[var_r28].unk_04][var_r31->unk_06]); + } + } + var_r31->unk_1C = 3; + CharModelMotionSet(var_r31->unk_06, object->motion[var_r31->unk_1C]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + CharModelMotionDataClose(var_r31->unk_06); + object->trans.x = var_r31->unk_48.x = lbl_1_data_150[var_r31->unk_04].x; + object->trans.y = var_r31->unk_48.y = lbl_1_data_150[var_r31->unk_04].y; + object->trans.z = var_r31->unk_48.z = lbl_1_data_150[var_r31->unk_04].z; + object->rot.x = object->rot.z = 0.0f; + object->rot.y = 180.0f; + object->func = fn_1_BBD0; +} + +void fn_1_BBD0(omObjData *object) +{ + Mtx sp104; + Vec spF8; + Vec spEC; + Vec spE0; + float var_f31; + float var_f30; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + M428DllPlayerWork2 *var_r31; + M428DllPlayerWork *var_r29; + omObjData *var_r28; + M428DllPlayerWork2 *var_r27; + s32 var_r26; + ModelData *var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + var_r31 = object->data; + var_r29 = &lbl_1_bss_2AC[var_r31->unk_02]; + var_r22 = var_r31->unk_04 ^ 1; + var_r28 = var_r29->unk_00[var_r22]; + var_r27 = var_r28->data; + if (fn_1_26E0() == 4) { + if (var_r31->unk_0A != 0) { + var_r31->unk_0E = var_r31->unk_10 = 0; + var_r31->unk_14 = var_r31->unk_18 = 0.0f; + fn_1_E600(object); + } + else { + var_r31->unk_0E = HuPadBtnDown[var_r31->unk_08]; + var_r31->unk_10 = HuPadBtn[var_r31->unk_08]; + var_r31->unk_14 = HuPadStkX[var_r31->unk_08]; + var_r31->unk_18 = HuPadStkY[var_r31->unk_08]; + } + } + else { + var_r31->unk_0E = var_r31->unk_10 = 0; + var_r31->unk_14 = var_r31->unk_18 = 0.0f; + } + switch (var_r31->unk_20) { + case 0: + var_r31->unk_20 = 1; + var_r31->unk_22 = 0; + break; + case 1: + if (object->trans.y < 0.0f) { + object->trans.y += 1.6f; + var_r26 = 3; + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r31->unk_1C = var_r26; + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0x40000001); + } + } + else { + object->trans.y = 0.0f; + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + } + spF8 = var_r31->unk_90; + VECSubtract(&spF8, &var_r29->unk_64[var_r31->unk_04], &spEC); + var_r31->unk_30 = 0; + var_f31 = VECMag(&spEC); + var_r29->unk_4C[var_r31->unk_04] = var_f31; + spF8.x = object->trans.x + var_r31->unk_54.x; + spF8.y = object->trans.y + var_r31->unk_54.y; + spF8.z = object->trans.z + var_r31->unk_54.z; + if (fn_1_9990(&spF8) != 0) { + object->trans.z = 50.0f + spF8.z; + } + if (fn_1_26E0() >= 4) { + var_r31->unk_20 = 2; + var_r31->unk_22 = 0; + } + break; + case 2: + if (((var_r31->unk_0E & 0x100) != 0) || (var_r29->unk_24 != 0) || (var_r29->unk_28 != 0)) { + if (var_r31->unk_1C == 4) { + var_r31->unk_1E = 5; + } + else { + var_r31->unk_1E = 4; + } + var_r31->unk_26 = 0; + var_r31->unk_20 = 3; + var_r31->unk_22 = 0; + } + else { + if (fabs(var_r31->unk_14) >= 8.0) { + var_f27 = 0.025f * var_r31->unk_14; + } + else { + var_f27 = 0.0f; + } + if (fabs(var_r31->unk_18) >= 8.0) { + var_f24 = 0.025f * var_r31->unk_18; + } + else { + var_f24 = 0.0f; + } + spE0.x = var_f27; + spE0.y = var_f24; + spE0.z = 0.0f; + if (VECMag(&spE0) > 0.0f) { + spF8.x = object->trans.x + var_r31->unk_54.x; + spF8.y = object->trans.y + var_r31->unk_54.y; + spF8.z = object->trans.z + var_r31->unk_54.z; + if (fn_1_F288(&spF8, &spE0, 75.0f) != 0) { + object->trans.x += spE0.x; + object->trans.y += spE0.y; + } + else { + object->trans.x = spF8.x - var_r31->unk_54.x; + object->trans.y = spF8.y - var_r31->unk_54.y; + } + if ((var_r27->unk_20 == 2) || (var_r27->unk_20 == 3)) { + spE0.x = (object->trans.x + var_r31->unk_54.x) - (var_r28->trans.x + var_r27->unk_54.x); + spE0.y = (object->trans.y + var_r31->unk_54.y) - (var_r28->trans.y + var_r27->unk_54.y); + spE0.z = (object->trans.z + var_r31->unk_54.z) - (var_r28->trans.z + var_r27->unk_54.z); + var_f30 = VECMag(&spE0); + if (var_f30 <= 200.0f) { + if (var_f30 <= 0.0f) { + spE0.y = -1.0f; + } + VECNormalize(&spE0, &spE0); + VECScale(&spE0, &spE0, 200.0f); + object->trans.x = spE0.x + (var_r28->trans.x + var_r27->unk_54.x); + object->trans.y = spE0.y + (var_r28->trans.y + var_r27->unk_54.x); + object->trans.z = spE0.z + (var_r28->trans.z + var_r27->unk_54.x); + } + } + } + spF8 = var_r31->unk_90; + VECSubtract(&spF8, &var_r29->unk_64[var_r31->unk_04], &spEC); + var_r31->unk_30 = 0; + var_f31 = VECMag(&spEC); + var_r29->unk_4C[var_r31->unk_04] = var_f31; + if (var_f31 > var_r29->unk_54[var_r31->unk_04]) { + var_r31->unk_30 = 1; + VECNormalize(&spEC, &spEC); + VECScale(&spEC, &spEC, var_r29->unk_54[var_r31->unk_04]); + VECAdd(&var_r29->unk_64[var_r31->unk_04], &spEC, &spF8); + object->trans.x += spF8.x - var_r31->unk_90.x; + object->trans.y += spF8.y - var_r31->unk_90.y; + object->trans.z += spF8.z - var_r31->unk_90.z; + var_r20 = 1; + } + if ((var_r20 != 0) || (object->trans.x != var_r31->unk_48.x) || (object->trans.y != var_r31->unk_48.y)) { + spF8.x = var_r31->unk_48.x + var_r31->unk_54.x; + spF8.y = var_r31->unk_48.y + var_r31->unk_54.y; + spF8.z = var_r31->unk_48.z + var_r31->unk_54.z; + spE0.x = (object->trans.x + var_r31->unk_54.x) - spF8.x; + spE0.y = (object->trans.y + var_r31->unk_54.y) - spF8.y; + spE0.z = (object->trans.z + var_r31->unk_54.z) - spF8.z; + if (fn_1_F288(&spF8, &spE0, 75.0f) == 0) { + object->trans.x = spF8.x - var_r31->unk_54.x; + object->trans.y = spF8.y - var_r31->unk_54.y; + var_r20 = 1; + } + } + if (object->trans.x < -700.0f) { + object->trans.x = -700.0f; + } + else if (object->trans.x > 700.0f) { + object->trans.x = 700.0f; + } + if (object->trans.y < -200.0f) { + object->trans.y = -200.0f; + } + spF8.x = object->trans.x + var_r31->unk_54.x; + spF8.y = object->trans.y + var_r31->unk_54.y; + spF8.z = object->trans.z + var_r31->unk_54.z; + if (fn_1_9990(&spF8) != 0) { + object->trans.z = 50.0f + spF8.z; + } + var_f31 = sqrtf((var_r31->unk_14 * var_r31->unk_14) + (var_r31->unk_18 * var_r31->unk_18)); + var_f31 *= 0.02f; + CharModelMotionSpeedSet(var_r31->unk_06, var_f31); + if ((var_f27 == 0.0f) && (var_f24 == 0.0f)) { + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + if ((var_r31->unk_1C != 8) && (var_r31->unk_1C != 9) && (var_r31->unk_1C != 6)) { + var_r26 = var_r31->unk_1C; + } + else { + var_r26 = 4; + } + var_f22 = object->rot.z; + } + else { + if (fabs(var_f27) > (2.0 * fabs(var_f24))) { + if (var_f27 > 0.0f) { + var_r26 = 4; + } + else { + var_r26 = 5; + } + var_f22 = 0.0f; + } + else { + var_r26 = 3; + if (var_f24 > 0.0f) { + var_f22 = -30.0f * (var_f27 / 1.6f); + } + else { + var_f22 = -(-30.0f * (var_f27 / 1.6f)); + CharModelMotionSpeedSet(var_r31->unk_06, -var_f31); + } + } + } + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r23 = var_r31->unk_1C; + var_r31->unk_1C = var_r26; + if (var_r23 != 6) { + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0x40000001); + } + else { + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 25.0f, 0x40000001); + } + } + else { + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + } + object->rot.x = 0.0f; + object->rot.y = 180.0f; + object->rot.z = fn_1_1236C(var_f22, object->rot.z, 1.25f); + } + break; + case 3: + spF8 = var_r31->unk_90; + VECSubtract(&spF8, &var_r29->unk_64[var_r31->unk_04], &spEC); + var_r31->unk_30 = 0; + var_f31 = VECMag(&spEC); + var_r29->unk_4C[var_r31->unk_04] = var_f31; + if (fn_1_26E0() != 4) { + var_r31->unk_10 = 0; + var_r31->unk_26 = 0; + } + if (((var_r31->unk_10 & 0x100) != 0) || (var_r29->unk_24 != 0) || (var_r29->unk_28 != 0) || (var_r31->unk_26 != 0)) { + if (var_r31->unk_26 > 0) { + var_r31->unk_26--; + } + if (var_r29->unk_24 != 0) { + if (fabs(var_r29->unk_34) > 0.0) { + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + var_r29->unk_A0.z = object->trans.z; + VECSubtract(&var_r29->unk_A0, &spF8, &spEC); + var_f30 = VECMag(&spEC); + if (var_f30 < var_r29->unk_34) { + var_r29->unk_34 = var_f30; + } + if (var_f30 > 0.0f) { + VECNormalize(&spEC, &spEC); + VECScale(&spEC, &spEC, var_r29->unk_34); + VECAdd(&spF8, &var_r31->unk_54, &spF8); + if (fn_1_F288(&spF8, &spEC, 75.0f) != 0) { + for (var_r24 = 0; var_r24 < 6; var_r24++) { + spF8.x = object->trans.x + (0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f))); + spF8.y = 100.0f + object->trans.y + 0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f)); + spF8.z = object->trans.z - 47.5f; + var_f31 = -22.5f + (45.0f * (0.007874016f * (frand() & 0x7F))); + spE0.x = 2.5 * sind(var_f31); + spE0.y = 2.5 * cosd(var_f31); + spE0.z = 0.0f; + fn_1_11DE4(var_r29->unk_0C, spF8, spE0, 50.0f, 5.0f, 100.0f, 0.5f, lbl_1_data_650); + } + object->trans.x += spEC.x; + object->trans.y += spEC.y; + } + } + } + } + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + if (fn_1_9990(&spF8) != 0) { + object->trans.z = 50.0f + spF8.z; + } + if (object->trans.x < -700.0f) { + object->trans.x = -700.0f; + } + else if (object->trans.x > 700.0f) { + object->trans.x = 700.0f; + } + if (object->trans.y < -200.0f) { + object->trans.y = -200.0f; + } + if (lbl_1_bss_29C[var_r29->unk_0C] == 5) { + var_r26 = 6; + if ((object->rot.z > 180.0f) || (object->rot.z < 45.0f)) { + object->rot.z += 5.0f; + } + if (object->rot.z >= 360.0f) { + object->rot.z -= 360.0f; + } + } + else { + var_r26 = var_r31->unk_1E; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + } + if ((var_r26 != var_r31->unk_1C) && (var_r26 != -1) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r23 = var_r31->unk_1C; + var_r31->unk_1C = var_r26; + if (var_r31->unk_1C != 6) { + if (var_r23 != 6) { + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0); + } + else { + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 25.0f, 0); + } + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + } + else { + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0x40000001); + } + } + if ((var_r31->unk_1C != 6) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + CharModelMotionTimeSet(var_r31->unk_06, 0.0f); + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + } + if (var_r31->unk_1C == 6) { + CharModelMotionSpeedSet(var_r31->unk_06, 2.0f); + } + } + else { + var_r31->unk_20 = 2; + var_r31->unk_22 = 0; + } + break; + case 4: + spF8 = var_r31->unk_90; + VECSubtract(&spF8, &var_r29->unk_64[var_r31->unk_04], &spEC); + var_r31->unk_30 = 0; + var_f31 = VECMag(&spEC); + var_r29->unk_4C[var_r31->unk_04] = var_f31; + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + var_r31->unk_3C.y -= 0.65333337f; + if (var_r29->unk_38 == -1) { + var_r29->unk_30 = 400.0f; + var_r29->unk_94.x = var_r28->trans.x + var_r27->unk_54.x; + var_r29->unk_94.y = var_r28->trans.y + var_r27->unk_54.y; + var_r29->unk_94.z = var_r28->trans.z + var_r27->unk_54.z; + } + else { + var_r29->unk_30 = var_r29->unk_48 - var_r29->unk_54[var_r22]; + } + VECAdd(&spF8, &var_r31->unk_54, &spF8); + if ((fn_1_F288(&spF8, &var_r31->unk_3C, 75.0f) != 0) && ((object->trans.y + var_r31->unk_3C.y) >= -200.0f)) { + spF8.x = object->trans.x + var_r31->unk_3C.x; + spF8.y = object->trans.y + var_r31->unk_3C.y; + spF8.z = object->trans.z + var_r31->unk_3C.z; + if (object->trans.x < -700.0f) { + object->trans.x = -700.0f; + } + else if (object->trans.x > 700.0f) { + object->trans.x = 700.0f; + } + if (object->trans.y < -200.0f) { + object->trans.y = -200.0f; + } + VECSubtract(&spF8, &var_r29->unk_94, &spEC); + var_f31 = VECMag(&spEC); + if (var_f31 > var_r29->unk_30) { + VECNormalize(&spEC, &spEC); + VECScale(&spEC, &spEC, var_r29->unk_30); + VECAdd(&var_r29->unk_94, &spEC, &spF8); + if (fabs(spEC.x) < 180.0) { + var_r31->unk_34 = 1; + } + } + object->trans.x = spF8.x; + object->trans.y = spF8.y; + object->trans.z = spF8.z; + } + else { + object->trans.x = spF8.x - var_r31->unk_54.x; + object->trans.y = spF8.y - var_r31->unk_54.y; + object->trans.z = spF8.z - var_r31->unk_54.z; + if ((object->trans.y + var_r31->unk_3C.y) >= -200.0f) { + for (var_r24 = 0; var_r24 < 6; var_r24++) { + var_f30 = -90.0f + (36.0f * var_r24); + spF8.x = object->trans.x + (12.5 * sind(var_f30)); + spF8.z = object->trans.z + 12.5 * cosd(var_f30); + spF8.y = (object->trans.y - 25.0f) + (0.25f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f))); + var_f31 = -22.5f + (45.0f * (0.007874016f * (frand() & 0x7F))); + var_f23 = 0.3f + (0.7f * (0.007874016f * (frand() & 0x7F))); + spE0.x = var_f23 * ((2.5 * sind(var_f30)) + (2.5 * sind(var_f31))); + spE0.y = var_f23 * (2.5 * cosd(var_f31)); + spE0.z = var_f23 * (2.5 * cosd(var_f30)); + fn_1_11DE4(var_r29->unk_0C, spF8, spE0, 100.0f, 5.0f, 100.0f, 0.5f * var_f23, lbl_1_data_654); + } + } + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.x; + var_r31->unk_38 = 1; + var_r31->unk_3C.x = var_r31->unk_3C.y = var_r31->unk_3C.z = 0.0f; + var_r29->unk_34 = 0.0f; + var_r31->unk_1E = 4; + var_r31->unk_26 = 0x12; + var_r31->unk_20 = 5; + var_r31->unk_22 = 0; + break; + } + if (var_r31->unk_34 == 0) { + var_r29->unk_34 = 0.0f; + var_r31->unk_22++; + var_r31->unk_24 = 0; + var_f31 = 2.0f * var_r31->unk_22; + if (var_f31 >= 90.0f) { + var_f31 = 90.0f; + } + if ((object->trans.z = object->trans.z + (10.0 * cosd(var_f31))) >= (150.0f + var_r29->unk_AC.z)) { + object->trans.z = 150.0f + var_r29->unk_AC.z; + } + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + if (fn_1_9990(&spF8) != 0) { + spF8.z += 50.0f; + } + else { + spF8.z = 50.0f; + } + if (object->trans.z < spF8.z) { + object->trans.z = spF8.z; + } + var_r26 = 8; + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r31->unk_1C = var_r26; + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0); + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + } + } + else { + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + VECSubtract(&spF8, &var_r29->unk_94, &spEC); + if (fabs(spEC.x) < 100.0) { + if ((var_r31->unk_3C.y += 0.65333337f) > 0.0f) { + var_r31->unk_3C.y = 0.0f; + } + var_r31->unk_3C.x *= 0.96f; + var_r31->unk_3C.y *= 0.97f; + } + else { + var_r31->unk_22++; + } + var_r29->unk_34 = fabs(0.45f * sqrtf((var_r31->unk_3C.x * var_r31->unk_3C.x) + (var_r31->unk_3C.y * var_r31->unk_3C.y))); + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + if (fn_1_9990(&spF8) != 0) { + spF8.z += 50.0f; + } + else { + spF8.z = 50.0f; + } + if ((object->trans.z -= 5.0f) < spF8.z) { + object->trans.z = 50.0f + spF8.z; + } + var_r26 = 9; + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r31->unk_1C = var_r26; + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0); + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + } + if (++var_r31->unk_24 > var_r31->unk_22) { + var_r31->unk_1E = 4; + var_r31->unk_26 = 0x12; + var_r31->unk_20 = 5; + var_r31->unk_22 = 0; + } + } + + break; + case 5: + spF8 = var_r31->unk_90; + VECSubtract(&spF8, &var_r29->unk_64[var_r31->unk_04], &spEC); + var_r31->unk_30 = 0; + var_f31 = VECMag(&spEC); + var_r29->unk_4C[var_r31->unk_04] = var_f31; + if (var_r31->unk_38 != 0) { + var_r26 = 7; + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r31->unk_1C = var_r26; + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0); + CharModelMotionSpeedSet(var_r31->unk_06, 0.0f); + } + } + var_r21 = 0; + if ((var_r27->unk_20 == 2) || (var_r27->unk_20 == 3)) { + spE0.x = (object->trans.x + var_r31->unk_54.x) - (var_r28->trans.x + var_r27->unk_54.x); + spE0.y = (object->trans.y + var_r31->unk_54.y) - (var_r28->trans.y + var_r27->unk_54.y); + spE0.z = (object->trans.z + var_r31->unk_54.z) - (var_r28->trans.z + var_r27->unk_54.z); + var_f30 = VECMag(&spE0); + if (var_f30 <= 200.0f) { + if (object->trans.x > var_r28->trans.x) { + var_f30 = 10.0f; + } + else { + var_f30 = -10.0f; + } + spF8.x = object->trans.x + var_r31->unk_54.x; + spF8.y = object->trans.y + var_r31->unk_54.y; + spF8.z = object->trans.z + var_r31->unk_54.z; + spE0.x = var_f30; + spE0.y = spE0.z = 0.0f; + if (fn_1_F288(&spF8, &spE0, 75.0f) != 0) { + object->trans.x += spE0.x; + object->trans.y += spE0.y; + object->trans.z += spE0.z; + } + else { + object->trans.x = spF8.x - var_r31->unk_54.x; + object->trans.y = spF8.y - var_r31->unk_54.y; + object->trans.z = spF8.z - var_r31->unk_54.z; + } + spF8.x = var_r28->trans.x + var_r27->unk_54.x; + spF8.y = var_r28->trans.y + var_r27->unk_54.y; + spF8.z = var_r28->trans.z + var_r27->unk_54.z; + spE0.x = -var_f30; + spE0.y = spE0.z = 0.0f; + if (fn_1_F288(&spF8, &spE0, 75.0f) != 0) { + var_r28->trans.x += spE0.x; + var_r28->trans.y += spE0.y; + var_r28->trans.z += spE0.z; + } + else { + var_r28->trans.x = spF8.x - var_r27->unk_54.x; + var_r28->trans.y = spF8.y - var_r27->unk_54.y; + var_r28->trans.z = spF8.z - var_r27->unk_54.z; + } + var_r21 = 1; + } + } + if (object->trans.x < -700.0f) { + object->trans.x = -700.0f; + } + else if (object->trans.x > 700.0f) { + object->trans.x = 700.0f; + } + if (object->trans.y < -200.0f) { + object->trans.y = -200.0f; + } + spF8.x = object->trans.x; + spF8.y = object->trans.y; + spF8.z = object->trans.z; + if (fn_1_9990(&spF8) != 0) { + spF8.z += 50.0f; + } + else { + spF8.z = 50.0f; + } + if ((object->trans.z - spF8.z) > 30.000002f) { + object->trans.z -= 30.000002f; + } + else { + object->trans.z = spF8.z; + if (var_r21 == 0) { + var_r31->unk_20 = 3; + var_r31->unk_22 = 0; + } + } + break; + case 7: + object->trans.x = lbl_1_data_180[var_r31->unk_04].x; + object->trans.y = lbl_1_data_180[var_r31->unk_04].y; + object->trans.z = lbl_1_data_180[var_r31->unk_04].z; + object->rot.x = object->rot.y = object->rot.z = 0.0f; + var_r25 = &Hu3DData[object->model[0]]; + var_r25->unk_F0[0][3] = 0.0f; + var_r25->unk_F0[1][3] = 0.0f; + var_r25->unk_F0[2][3] = 0.0f; + var_r25 = &Hu3DData[object->model[1]]; + MTXIdentity(var_r25->unk_F0); + Hu3DModelPosSet( + object->model[1], lbl_1_data_450[var_r31->unk_04].x, lbl_1_data_450[var_r31->unk_04].y, lbl_1_data_450[var_r31->unk_04].z); + Hu3DModelRotSet( + object->model[1], lbl_1_data_480[var_r31->unk_04].x, lbl_1_data_480[var_r31->unk_04].y, lbl_1_data_480[var_r31->unk_04].z); + if (var_r31->unk_02 == 0) { + fn_1_4170(object->model[1], 1); + } + else { + fn_1_4170(object->model[1], 2); + } + var_r26 = 0; + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r31->unk_1C = var_r26; + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0x40000001); + } + break; + case 8: + var_r26 = 0xA; + if ((var_r26 != var_r31->unk_1C) && (CharModelMotionShiftIDGet(var_r31->unk_06) == -1)) { + var_r31->unk_1C = var_r26; + CharModelMotionShiftSet(var_r31->unk_06, object->motion[var_r31->unk_1C], 0.0f, 8.0f, 0); + } + break; + case 9: + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + break; + } + var_r31->unk_48.x = object->trans.x; + var_r31->unk_48.y = object->trans.y; + var_r31->unk_48.z = object->trans.z; + if (var_r31->unk_20 < 7) { + if (fn_1_13F54(object->model[0], var_r31->unk_9C, sp104, 0) != 0) { + var_r25 = &Hu3DData[object->model[1]]; + MTXConcat(sp104, var_r31->unk_60, sp104); + MTXCopy(sp104, var_r25->unk_F0); + var_r31->unk_90.x = sp104[0][3]; + var_r31->unk_90.y = sp104[1][3]; + var_r31->unk_90.z = sp104[2][3]; + } + else { + OSReport("NO OBJECT %d %s \n", var_r31->unk_06, CharModelHookNameGet(var_r31->unk_06, 4, 4)); + } + spF8.x = 0.0f; + spF8.y = 100.0f; + spF8.z = 0.0f; + spE0.x = spF8.y * sind((180.0f + object->rot.z)); + spE0.y = spF8.y * sind((90.0f + object->rot.z)); + spE0.z = 0.0f; + VECSubtract(&spE0, &spF8, &spEC); + var_r25 = &Hu3DData[object->model[0]]; + var_r25->unk_F0[0][3] = spEC.x; + var_r25->unk_F0[1][3] = spEC.y; + var_r25->unk_F0[2][3] = spEC.z; + } +} + +void fn_1_E5F4(omObjData *object) +{ + object->func = NULL; +} + +void fn_1_E600(omObjData *object) +{ + Vec sp24; + Vec sp18; + Vec spC; + s32 sp8; + float var_f31; + float var_f30; + float var_f29; + M428DllPlayerWork2 *var_r31; + M428DllPlayerWork *var_r29; + omObjData *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r31 = object->data; + var_r29 = &lbl_1_bss_2AC[var_r31->unk_02]; + var_r24 = var_r31->unk_04 ^ 1; + var_r28 = var_r29->unk_00[var_r24]; + if ((var_r29->unk_0E == 3) && (var_r29->unk_10 == var_r31->unk_04)) { + var_r26 = 1; + } + else { + var_r26 = 0; + } + if ((lbl_1_bss_29C[var_r31->unk_02] == 6) || (var_r31->unk_19C == -1)) { + if (var_r29->unk_0E != 3) { + var_r31->unk_19C = 2; + } + else { + var_r25 = (s32)(50.0f * (0.007874016f * (frand() & 0x7F))) + var_r31->unk_0C * 0xF + 5; + var_r31->unk_1A0 = (u8)frand() % 90; + if (var_r26 == 0) { + var_r31->unk_1A0 = (u8)frand() % 60; + } + if (var_r25 < 0x2D) { + var_r31->unk_19C = 0; + } + else if (var_r25 < 0x4B) { + var_r31->unk_19C = 1; + } + else { + var_r31->unk_19C = 2; + } + } + } + var_f31 = 1.0f; + switch (var_r31->unk_19C) { + case 0: + break; + case 1: + if (lbl_1_bss_29C[var_r31->unk_02] != 0) { + if (var_r31->unk_1A0 > 0) { + var_r31->unk_1A0--; + } + else { + var_r31->unk_0E |= 0x100; + var_r31->unk_10 |= 0x100; + } + } + break; + case 2: + if ((lbl_1_bss_29C[var_r31->unk_02] == 3) || (lbl_1_bss_29C[var_r31->unk_02] == 5)) { + var_r31->unk_0E |= 0x100; + var_r31->unk_10 |= 0x100; + } + break; + } + if (var_r26 != 0) { + for (var_r27 = 0; var_r27 < 0x10; var_r27++) { + if ((lbl_1_data_1B0[var_r29->unk_12][var_r27].y - 100.0f) > object->trans.y) { + break; + } + } + var_r31->unk_1B0 = var_r27; + sp18 = lbl_1_data_1B0[var_r29->unk_12][var_r31->unk_1B0]; + sp8 = var_r31->unk_1B0; + sp24.x = object->trans.x; + sp24.y = object->trans.y; + sp24.z = object->trans.z; + VECSubtract(&var_r31->unk_48, &sp24, &spC); + if ((VECMag(&spC) < 1.0f) && (lbl_1_bss_29C[var_r31->unk_02] != 0)) { + var_r31->unk_1B4++; + } + if (var_r31->unk_1B4 >= 180.0f) { + if (var_r31->unk_1B4 < 300.0f) { + if ((var_r31->unk_1B0 >= 2) && (var_r31->unk_1B0 <= 3)) { + if (fabs(object->trans.x) < 500.0) { + if (object->trans.x > 0.0f) { + var_r31->unk_14 = 64.0f; + } + else { + var_r31->unk_14 = -64.0f; + } + } + } + else { + if (fabs(object->trans.x) > 50.0) { + if (object->trans.x > 0.0f) { + var_r31->unk_14 = -64.0f; + } + else { + var_r31->unk_14 = 64.0f; + } + } + } + } + else if (var_r31->unk_1B0 > 0) { + var_r31->unk_1B0--; + var_r31->unk_1B4 = 0; + } + } + else { + var_r31->unk_1B4 = 0; + sp24.x = object->trans.x; + sp24.y = object->trans.y; + sp24.z = object->trans.z; + VECAdd(&sp18, &var_r31->unk_1B8, &sp18); + VECSubtract(&sp18, &sp24, &spC); + var_f30 = VECMag(&spC); + VECNormalize(&spC, &spC); + var_r31->unk_14 = 64.0f * (spC.x * var_f31); + var_r31->unk_18 = 64.0f * (spC.y * var_f31); + if (++var_r31->unk_1A4 > 180.0f) { + var_r31->unk_1B8.x = 0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f)); + var_r31->unk_1B8.y = 0.5f * (100.0f * (0.007874016f * (frand() & 0x7F))); + var_r31->unk_1B8.z = 0.5f * (100.0f * ((0.007874016f * (frand() & 0x7F)) - 0.5f)); + var_r31->unk_1A4++; + } + } + } + else { + sp24.x = object->trans.x; + sp24.y = object->trans.y; + sp24.z = object->trans.z; + sp18.x = var_r28->trans.x; + sp18.y = var_r28->trans.y; + sp18.z = var_r28->trans.z; + VECSubtract(&sp18, &sp24, &spC); + var_f30 = VECMag(&spC); + if (var_f30 != 0.0f) { + var_f29 = atan2d(spC.x, spC.y); + } + else { + spC.y = 1.0f; + var_f29 = 0.0; + } + if (var_f30 < 230.0f) { + spC.x *= -1.0f; + spC.y *= -1.0f; + var_f29 += 180.0f; + } + if ((var_f30 >= 250.0f) || (var_f30 <= 230.0f)) { + VECNormalize(&spC, &spC); + if (var_f30 >= 250.0f) { + var_f31 = (var_f30 - 250.0f) / 20.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + } + else { + var_f31 = 1.0f; + } + sp24.x = object->trans.x; + sp24.y = object->trans.y; + sp24.z = object->trans.z; + VECAdd(&sp24, &var_r31->unk_54, &sp24); + var_f29 = var_f29 + var_r31->unk_1AC; + sp18.x = 64.0 * sind(var_f29); + sp18.y = 64.0 * cosd(var_f29); + sp18.z = 0.0f; + var_r31->unk_14 = sp18.x * var_f31; + var_r31->unk_18 = sp18.y * var_f31; + var_r31->unk_1A8 = 0; + } + } + var_r31->unk_1A4++; +} + +s32 fn_1_F080(Vec *arg0, Vec *arg1, float arg8) +{ + Vec sp24; + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + s32 var_r31; + + if (VECMag(arg1) <= 0.0f) { + return 0; + } + var_f30 = atan2d(arg1->x, arg1->y); + var_f30 = var_f30; + sp24 = *arg0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + var_f31 = -45.0f + (15.0f * var_r31); + var_f31 += var_f30; + spC.x = sind(var_f31); + spC.y = cosd(var_f31); + spC.z = 0.0f; + VECNormalize(&spC, &spC); + VECScale(&spC, &spC, arg8); + VECAdd(arg0, &spC, &sp24); + if (fn_1_9990(&sp24) != 0) { + if (var_r31 == 3) { + sp18 = sp24; + } + } + else { + break; + } + } + if (var_r31 < 6) { + return 0; + } + return 1; +} + +s32 fn_1_F288(Vec *arg0, Vec *arg1, float arg2) +{ + Vec sp24; + Vec sp18; + Vec spC; + s32 var_r30; + + sp24 = *arg0; + sp18 = *arg1; + var_r30 = fn_1_F538(&sp24, &sp18, &spC, arg2); + if (var_r30 != 0) { + *arg0 = spC; + return 0; + } + *arg0 = sp24; + return 1; +} + +s32 fn_1_F354(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_2B8[var_r31]->trans.y < 0.0f) { + break; + } + } + if (var_r31 < 4) { + return 0; + } + return 1; +} + +s32 fn_1_F3BC(s32 arg0) +{ + M428DllPlayerWork *var_r31 = &lbl_1_bss_2AC[arg0]; + if (var_r31->unk_1C >= 3800.0f) { + return var_r31->unk_18 = 1; + } + return var_r31->unk_18 = 0; +} + +void fn_1_F414(s32 arg0) +{ + M428DllPlayerWork *var_r31 = &lbl_1_bss_2AC[arg0]; + var_r31->unk_14 = 1; + lbl_1_bss_2A4 = 1; +} + +void fn_1_F454(s32 arg0, s32 arg1) +{ + lbl_1_bss_29C[arg0] = arg1; +} + +void fn_1_F46C(s32 arg0, s32 arg1) +{ + if (lbl_1_bss_18 != 0) { + M428DllPlayerWork *var_r31 = &lbl_1_bss_2AC[arg0]; + var_r31->unk_B8 = 0; + var_r31->unk_BC = arg1; + } +} + +void fn_1_F4B4(s32 arg0, s32 arg1, float arg8) +{ + M428DllPlayerWork *var_r31 = &lbl_1_bss_2AC[arg0]; + var_r31->unk_C4 = arg1; + var_r31->unk_C0 = arg1; + var_r31->unk_C8 = arg8; +} + +s32 fn_1_F4E8(s32 arg0) +{ + M428DllPlayerWork *var_r31 = &lbl_1_bss_2AC[arg0]; + if (var_r31->unk_1C >= 500.0f) { + return 1; + } + return 0; +} + +s32 fn_1_F538(Vec *arg0, Vec *arg1, Vec *arg2, float arg8) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f30; + float var_f29; + M428DllData4B0Struct *var_r30; + s32 var_r27; + + *arg2 = *arg0; + var_r30 = lbl_1_data_4B0; + for (var_r27 = 0; var_r27 < 5; var_r27++, var_r30++) { + sp38 = var_r30->unk_00; + VECAdd(arg0, arg1, &sp2C); + if ((arg0->y >= (sp38.y + arg8)) && (sp2C.y <= (sp38.y + arg8))) { + sp8.x = sp2C.y - arg0->y; + sp8.y = arg0->x - sp2C.x; + sp8.z = -((sp8.x * arg0->x) + (sp8.y * arg0->y)); + var_f29 = -((sp8.z + (sp8.y * (sp38.y + arg8))) / sp8.x); + if ((var_f29 >= (sp38.x - (var_r30->unk_0C + arg8))) && (var_f29 <= (sp38.x + (var_r30->unk_0C + arg8)))) { + arg2->x = arg0->x + arg1->x; + arg2->y = 0.1f + (sp38.y + arg8); + arg2->z = arg0->z + arg1->z; + return 1; + } + } + VECSubtract(&sp2C, &sp38, &sp20); + var_f30 = VECMag(&sp20); + if (var_f30 == 0.0f) { + sp20.y = 1.0f; + } + sp14 = sp20; + if ((var_f30 < (var_r30->unk_0C + arg8)) && (sp20.y < arg8)) { + sp38 = var_r30->unk_00; + sp2C = *arg0; + VECSubtract(&sp2C, &sp38, &sp20); + var_f30 = VECMag(&sp20); + if (var_f30 == 0.0f) { + sp20.y = 1.0f; + } + if (sp20.y <= arg8) { + VECNormalize(&sp14, &sp20); + VECScale(&sp20, &sp20, var_r30->unk_0C + arg8); + VECAdd(&sp38, &sp20, arg2); + return 1; + } + arg2->x = arg0->x + arg1->x; + arg2->y = 0.1f + (sp38.y + arg8); + arg2->z = arg0->z + arg1->z; + return 1; + } + } + return 0; +} + +s32 fn_1_F88C(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + M428DllData4B0Struct *var_r30; + s32 var_r27; + + *arg2 = *arg0; + var_r30 = lbl_1_data_4B0; + for (var_r27 = 0; var_r27 < 5; var_r27++, var_r30++) { + sp2C = var_r30->unk_00; + VECAdd(arg0, arg1, &sp20); + if ((arg0->y >= sp2C.y) && (sp20.y <= sp2C.y)) { + sp8.x = sp20.y - arg0->y; + sp8.y = arg0->x - sp20.x; + sp8.z = -((sp8.x * arg0->x) + (sp8.y * arg0->y)); + var_f30 = -((sp8.z + (sp8.y * sp2C.y)) / sp8.x); + if ((var_f30 >= (sp2C.x - var_r30->unk_0C)) && (var_f30 <= (sp2C.x + var_r30->unk_0C))) { + arg2->x = arg0->x + arg1->x; + arg2->y = sp2C.y; + arg2->z = arg0->z + arg1->z; + return 1; + } + } + VECSubtract(&sp20, &sp2C, &sp14); + var_f31 = VECMag(&sp14); + if (var_f31 == 0.0f) { + sp14.y = 1.0f; + } + if ((var_f31 < var_r30->unk_0C) && (sp14.y <= 0.0f)) { + sp2C = var_r30->unk_00; + sp20 = *arg0; + VECSubtract(&sp20, &sp2C, &sp14); + var_f31 = VECMag(&sp14); + if (var_f31 == 0.0f) { + sp14.y = 1.0f; + } + if (sp14.y <= 0.0f) { + VECNormalize(&sp14, &sp14); + VECScale(&sp14, &sp14, var_r30->unk_0C); + VECAdd(&sp2C, &sp14, arg2); + return var_r27; + } + arg2->x = arg0->x + arg1->x; + arg2->y = sp2C.y; + arg2->z = arg0->z + arg1->z; + return var_r27; + } + } + return -1; +} + +s32 fn_1_FB8C(Vec *arg0, Vec *arg1, float arg8, s32 arg2, s32 arg3) +{ + float var_f31; + M428DllPlayerUnk120Struct *var_r31; + M428DllPlayerUnkStruct *var_r30; + s32 var_r29; + ModelData *var_r28; + s32 var_r26; + + var_r26 = Hu3DHookFuncCreate(fn_1_102A8); + var_r28 = &Hu3DData[var_r26]; + Hu3DModelLayerSet(var_r26, 2); + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M428DllPlayerUnk120Struct), var_r28->unk_48); + var_r28->unk_120 = var_r31; + memset(var_r31, 0, sizeof(M428DllPlayerUnk120Struct)); + var_r30 = HuMemDirectMallocNum(HEAP_DATA, arg2 * sizeof(M428DllPlayerUnkStruct), var_r28->unk_48); + var_r31->unk_54 = var_r30; + memset(var_r30, 0, arg2 * sizeof(M428DllPlayerUnkStruct)); + var_r31->unk_00 = var_r26; + var_r31->unk_02 = arg2; + var_r31->unk_04 = arg8; + var_r31->unk_08 = arg8 / (arg2 - 1); + var_r31->unk_0C = 0; + var_r31->unk_10 = arg3; + var_r31->unk_14 = 0.0f; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C = 0; + var_r31->unk_20 = *arg0; + var_r31->unk_2C = *arg1; + var_r31->unk_38.x = var_r31->unk_38.y = var_r31->unk_38.z = 0.0f; + var_r31->unk_44 = -1; + var_r31->unk_48 = var_r31->unk_4C = var_r31->unk_50 = 0.0f; + for (var_r29 = 0; var_r29 < arg2; var_r29++, var_r30++) { + var_r30->unk_00 = var_r29; + if (var_r29 == 0) { + var_r30->unk_02 = 0; + } + else if (var_r29 == (arg2 - 1)) { + var_r30->unk_02 = 1; + } + else { + var_r30->unk_02 = -1; + } + var_r30->unk_04 = 0; + var_f31 = (float)var_r29 / (arg2 - 1); + var_r30->unk_08[0].x = var_r31->unk_20.x + (var_f31 * (var_r31->unk_2C.x - var_r31->unk_20.x)); + var_r30->unk_08[0].y = var_r31->unk_20.y + (var_f31 * (var_r31->unk_2C.y - var_r31->unk_20.y)); + var_r30->unk_08[0].z = var_r31->unk_20.z + (var_f31 * (var_r31->unk_2C.z - var_r31->unk_20.z)); + var_r30->unk_08[1] = var_r30->unk_08[0]; + var_r30->unk_08[2] = var_r30->unk_08[0]; + var_r30->unk_08[3].x = var_r30->unk_08[3].y = var_r30->unk_08[3].z = 0.0f; + } + return var_r26; +} + +void fn_1_FE98(M428DllPlayerUnk120Struct *arg0) +{ + Vec sp24; + Vec sp18; + Vec spC; + s32 sp8; + float var_f31; + float var_f30; + M428DllPlayerUnkStruct *var_r30; + s32 var_r29; + + if (arg0->unk_1C == 0) { + fn_1_129B4(0.5f, &arg0->unk_20, &arg0->unk_2C, &spC); + spC.y -= arg0->unk_14 * (0.75f * arg0->unk_04); + for (var_r30 = arg0->unk_54, var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r30++) { + var_f31 = (float)var_r29 / (arg0->unk_02 - 1); + fn_1_12AA4(var_f31, &arg0->unk_20, &spC, &arg0->unk_2C, &var_r30->unk_08[0]); + fn_1_129B4(var_f31, &arg0->unk_20, &arg0->unk_2C, &var_r30->unk_08[2]); + } + } + else { + arg0->unk_38.z = 0.5f * (arg0->unk_20.z + arg0->unk_2C.z); + fn_1_129B4(0.5f, &arg0->unk_20, &arg0->unk_38, &spC); + spC.y -= arg0->unk_14 * (0.375f * arg0->unk_04); + for (var_r30 = arg0->unk_54, var_r29 = 0; var_r29 < arg0->unk_44; var_r29++, var_r30++) { + var_f31 = (float)var_r29 / (arg0->unk_44 - 1); + fn_1_12AA4(var_f31, &arg0->unk_20, &spC, &arg0->unk_38, &var_r30->unk_08[0]); + fn_1_129B4(var_f31, &arg0->unk_20, &arg0->unk_38, &var_r30->unk_08[2]); + } + fn_1_129B4(0.1f, &arg0->unk_38, &arg0->unk_2C, &spC); + spC.y -= arg0->unk_18 * (0.375f * arg0->unk_04); + for (var_r30 = &arg0->unk_54[arg0->unk_44], var_r29 = arg0->unk_44; var_r29 < arg0->unk_02; var_r29++, var_r30++) { + var_f31 = (float)(var_r29 - arg0->unk_44) / ((arg0->unk_02 - arg0->unk_44) - 1); + fn_1_12AA4(var_f31, &arg0->unk_38, &spC, &arg0->unk_2C, &var_r30->unk_08[0]); + fn_1_129B4(var_f31, &arg0->unk_38, &arg0->unk_2C, &var_r30->unk_08[2]); + } + } + for (var_r29 = 0, var_r30 = arg0->unk_54; var_r29 < arg0->unk_02; var_r29++, var_r30++) { + PSVECSubtract(&var_r30->unk_08[0], &var_r30->unk_08[2], &sp24); + var_f30 = var_r30->unk_08[0].z; + if ((sp8 = fn_1_F88C(&var_r30->unk_08[2], &sp24, &sp18)) != -1) { + var_r30->unk_08[0] = sp18; + var_r30->unk_08[0].z = var_f30; + var_r30->unk_04 = 1; + } + else { + var_r30->unk_04 = 0; + } + if (var_r30->unk_02 == -1) { + fn_1_129B4(0.9f, &var_r30->unk_08[1], &var_r30->unk_08[0], &var_r30->unk_08[0]); + } + var_r30->unk_08[1] = var_r30->unk_08[0]; + } +} + +s32 lbl_1_data_694[2] = { 0xFFA040FF, 0xC8FFFF }; +s16 lbl_1_data_69C[2] = { -0x10, 0x10 }; +s16 lbl_1_data_6A0[2] = { 0x1A4, 0x60 }; +Vec lbl_1_data_6A4[4] = { + { -0.5f, 0.5f, 0.0f }, + { 0.5f, 0.5f, 0.0f }, + { 0.5f, -0.5f, 0.0f }, + { -0.5f, -0.5f, 0.0f }, +}; +Vec2f lbl_1_data_6D4[4] = { { 0.0f, 0.0f }, { 0.25f, 0.0f }, { 0.25f, 0.25f }, { 0.0f, 0.25f } }; + +void fn_1_102A8(ModelData *model, Mtx matrix) +{ + Mtx sp8; + s16 var_r30; + + M428DllPlayerUnk120Struct *var_r31 = model->unk_120; + if (omPauseChk() == 0) { + fn_1_FE98(var_r31); + } + GXLoadPosMtxImm(matrix, 0); + MTXInvXpose(matrix, sp8); + GXLoadNrmMtxImm(sp8, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVREG0); + 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, GX_TRUE, GX_TEVREG0); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + GXSetLineWidth(0x10, GX_TO_ZERO); + // bug, it should be var_r31->unk_54 + DCFlushRange(&var_r31->unk_54, var_r31->unk_02 * sizeof(M428DllPlayerUnkStruct)); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_54->unk_08, sizeof(M428DllPlayerUnkStruct)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &lbl_1_data_694[var_r31->unk_10], 4); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, var_r31->unk_02); + for (var_r30 = 0; var_r30 < var_r31->unk_02; var_r30++) { + GXPosition1x16(var_r30); + GXColor1x16(0); + } +} + +void fn_1_10530(s32 arg0, Vec *arg1, Vec *arg2) +{ + ModelData *var_r30 = &Hu3DData[arg0]; + M428DllPlayerUnk120Struct *var_r31 = var_r30->unk_120; + var_r31->unk_20 = *arg1; + var_r31->unk_2C = *arg2; +} + +void fn_1_10590(s32 arg0, s32 arg1, s32 arg2, Vec *arg3) +{ + ModelData *var_r30 = &Hu3DData[arg0]; + M428DllPlayerUnk120Struct *var_r31 = var_r30->unk_120; + var_r31->unk_1C = arg1; + if (arg1 != 0) { + var_r31->unk_38 = *arg3; + var_r31->unk_44 = arg2; + } +} + +void fn_1_105E8(s32 arg0, float arg8, float arg9) +{ + ModelData *var_r30 = &Hu3DData[arg0]; + M428DllPlayerUnk120Struct *var_r31 = var_r30->unk_120; + if (arg8 > 1.0f) { + arg8 = 1.0f; + } + else if (arg8 < 0.0f) { + arg8 = 0.0f; + } + if (arg9 > 1.0f) { + arg9 = 1.0f; + } + else if (arg9 < 0.0f) { + arg9 = 0.0f; + } + var_r31->unk_14 = arg8; + var_r31->unk_18 = arg9; +} + +s32 fn_1_106A8(s32 arg0, s32 arg1, Vec *arg2, float *arg3) +{ + M428DllPlayerUnkStruct *var_r30; + s32 var_r29; + + ModelData *var_r28 = &Hu3DData[arg0]; + M428DllPlayerUnk120Struct *var_r31 = var_r28->unk_120; + float var_f31 = 0.0f; + for (var_r29 = 0; var_r29 < var_r31->unk_02; var_f31 += var_r31->unk_08, var_r29++) { + if (arg1 == 0) { + var_r30 = &var_r31->unk_54[var_r29]; + } + else { + var_r30 = &var_r31->unk_54[(var_r31->unk_02 - 1) - var_r29]; + } + if (var_r30->unk_04 != 0) { + *arg2 = var_r30->unk_08[0]; + *arg3 = var_f31; + return 1; + } + } + return 0; +} + +s32 fn_1_10788(s32 arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + ModelData *sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + M428DllData4B0Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + sp8 = &Hu3DData[arg0]; + sp18.x = arg2->y - arg1->y; + sp18.y = arg1->x - arg2->x; + sp18.z = -((sp18.x * arg1->x) + (sp18.y * arg1->y)); + if (arg1->x < arg2->x) { + var_f27 = arg1->x; + var_f26 = arg2->x; + } + else { + var_f27 = arg2->x; + var_f26 = arg1->x; + } + if (arg1->y < arg2->y) { + var_f30 = arg1->y; + var_f29 = arg2->y; + } + else { + var_f30 = arg2->y; + var_f29 = arg1->y; + } + for (var_r30 = 0, var_r31 = lbl_1_data_4B0; var_r30 < 5; var_r30++, var_r31++) { + sp30 = var_r31->unk_00; + sp30.x -= var_r31->unk_0C; + sp24 = var_r31->unk_00; + sp24.x += var_r31->unk_0C; + spC.x = sp24.y - sp30.y; + spC.y = sp30.x - sp24.x; + spC.z = -((spC.x * sp30.x) + (spC.y * sp30.y)); + if ((var_r31->unk_00.y >= var_f30) && (var_r31->unk_00.y <= var_f29) && (sp18.x != 0.0f)) { + var_f31 = -((sp18.z + (sp18.y * var_r31->unk_00.y)) / sp18.x); + var_f28 = var_r31->unk_00.y; + if ((var_f31 >= sp30.x) && (var_f31 <= sp24.x)) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + if ((var_f31 >= var_f27) && (var_f31 <= var_f26) && (var_f28 >= var_f30) && (var_f28 <= var_f29)) { + var_r28 = 1; + } + else { + var_r28 = 0; + } + if ((var_r29 != 0) && (var_r28 != 0)) { + if (var_f31 < var_r31->unk_00.x) { + *arg3 = sp30; + } + else { + *arg3 = sp24; + } + return var_r30; + } + } + } + return -1; +} + +void fn_1_10A88(void) +{ + M428DllPlayerWork3 *var_r31; + omObjData *var_r30; + s32 var_r29; + M428DllPlayerUnk120Struct2 *var_r28; + ModelData *var_r27; + s32 var_r26; + s32 var_r25; + + var_r30 = lbl_1_bss_2B4 = omAddObjEx(lbl_1_bss_2D0, 0x42, 0xA, 0, -1, fn_1_11014); + var_r31 = var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M428DllPlayerWork3), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(M428DllPlayerWork3)); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M428, 0x0E), 0x80, 0); + var_r31->unk_00 = var_r29; + espDispOn(var_r29); + espDrawNoSet(var_r29, 0); + espAttrSet(var_r29, HUSPR_ATTR_NOANIM); + espPosSet(var_r29, 288.0, 240.0); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M428, 0x0C), 0x50, 0); + var_r31->unk_04[0] = var_r29; + espDispOn(var_r29); + espDrawNoSet(var_r29, 0); + espAttrSet(var_r29, HUSPR_ATTR_NOANIM); + espPosSet(var_r29, 288.0, 240.0); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M428, 0x0D), 0x50, 0); + var_r31->unk_04[1] = var_r29; + espDispOn(var_r29); + espDrawNoSet(var_r29, 0); + espAttrSet(var_r29, HUSPR_ATTR_NOANIM); + espPosSet(var_r29, 288.0, 240.0); + var_r31->unk_0C[0][0] = var_r31->unk_0C[0][1] = 0.0f; + var_r31->unk_0C[1][0] = var_r31->unk_0C[1][1] = 0.0f; + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M428, 0x10), 0x100, 0); + var_r31->unk_1C[0] = var_r29; + espDispOn(var_r29); + espDrawNoSet(var_r29, 0); + espAttrSet(var_r29, HUSPR_ATTR_NOANIM); + espPosSet(var_r29, 144.0, 240.0); + espScaleSet(var_r29, 36.0, 60.0); + espColorSet(var_r29, 0xFF, 0xFF, 0xFF); + espTPLvlSet(var_r29, 0.0); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_M428, 0x10), 0x100, 0); + var_r31->unk_1C[1] = var_r29; + espDispOn(var_r29); + espDrawNoSet(var_r29, 0); + espAttrSet(var_r29, HUSPR_ATTR_NOANIM); + espPosSet(var_r29, 432.0, 240.0); + espScaleSet(var_r29, 36.0, 60.0); + espColorSet(var_r29, 0xFF, 0xFF, 0xFF); + espTPLvlSet(var_r29, 0.0); + var_r31->unk_24[0][0] = var_r31->unk_24[0][1] = 0.0f; + var_r31->unk_24[1][0] = var_r31->unk_24[1][1] = 0.0f; + var_r31->unk_34 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M428, 0x0A), MEMORY_DEFAULT_NUM)); + var_r31->unk_38 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M428, 0x0B), MEMORY_DEFAULT_NUM)); + var_r30->model[0] = fn_1_12CD4(var_r31->unk_34, 2); + Hu3DModelCameraSet(var_r30->model[0], 1); + Hu3DModelLayerSet(var_r30->model[0], 5); + fn_1_13D9C(var_r30->model[0], -1, 0); + var_r27 = &Hu3DData[var_r30->model[0]]; + var_r28 = var_r27->unk_120; + var_r28->unk_22 |= 3; + var_r30->model[1] = fn_1_12CD4(var_r31->unk_38, 2); + Hu3DModelCameraSet(var_r30->model[1], 1); + Hu3DModelLayerSet(var_r30->model[1], 5); + fn_1_13D9C(var_r30->model[1], -1, 0); + var_r27 = &Hu3DData[var_r30->model[1]]; + var_r28 = var_r27->unk_120; + var_r28->unk_22 |= 3; + var_r30->model[2] = fn_1_12CD4(var_r31->unk_34, 2); + Hu3DModelCameraSet(var_r30->model[2], 2); + Hu3DModelLayerSet(var_r30->model[2], 5); + fn_1_13D9C(var_r30->model[2], -1, 0); + var_r27 = &Hu3DData[var_r30->model[2]]; + var_r28 = var_r27->unk_120; + var_r28->unk_22 |= 3; + var_r30->model[3] = fn_1_12CD4(var_r31->unk_38, 2); + Hu3DModelCameraSet(var_r30->model[3], 2); + Hu3DModelLayerSet(var_r30->model[3], 5); + fn_1_13D9C(var_r30->model[3], -1, 0); + var_r27 = &Hu3DData[var_r30->model[3]]; + var_r28 = var_r27->unk_120; + var_r28->unk_22 |= 3; + for (var_r26 = 0; var_r26 < 2; var_r26++) { + for (var_r25 = 0; var_r25 < 2; var_r25++) { + var_r31->unk_3C[var_r26][var_r25] = var_r31->unk_4C[var_r26][var_r25] = -1; + } + } +} + +void fn_1_11014(omObjData *object) +{ + Vec sp20; + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r29; + omObjData *var_r27; + M428DllPlayerWork *var_r26; + + M428DllPlayerWork3 *var_r30 = object->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30->unk_0C[var_r31][0] = var_r30->unk_0C[var_r31][0] + (0.05f * (var_r30->unk_0C[var_r31][1] - var_r30->unk_0C[var_r31][0])); + var_f30 = lbl_1_data_6A0[0] + (var_r30->unk_0C[var_r31][0] * (lbl_1_data_6A0[1] - lbl_1_data_6A0[0])); + espPosSet(var_r30->unk_04[var_r31], 288.0f + lbl_1_data_69C[var_r31], var_f30); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30->unk_24[var_r31][0] = var_r30->unk_24[var_r31][0] + (0.05f * (var_r30->unk_24[var_r31][1] - var_r30->unk_24[var_r31][0])); + espTPLvlSet(var_r30->unk_1C[var_r31], var_r30->unk_24[var_r31][0]); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + for (var_r29 = 0; var_r29 < 2; var_r29++) { + var_r26 = lbl_1_bss_2C8[var_r31]->data; + var_r27 = var_r26->unk_00[var_r29]; + if (var_r30->unk_3C[var_r31][var_r29] > 0) { + var_f31 = (30.0f - var_r30->unk_3C[var_r31][var_r29]) / 6.0f; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind((180.0f * var_f31)); + sp20.x = var_r27->trans.x; + sp20.y = 200.0f + var_r27->trans.y; + sp20.z = var_r27->trans.z; + fn_1_13E14(object->model[var_r31 * 2], var_r29, sp20); + fn_1_13EC8(object->model[var_r31 * 2], var_r29, 125.0f * (1.0f + var_f31)); + var_r30->unk_3C[var_r31][var_r29] -= 1; + } + else { + fn_1_13D9C(object->model[var_r31 * 2], var_r29, 0); + } + if (var_r30->unk_4C[var_r31][var_r29] > 0) { + var_f31 = (30.0f - var_r30->unk_4C[var_r31][var_r29]) / 6.0f; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind((180.0f * var_f31)); + sp20.x = var_r27->trans.x; + sp20.y = 200.0f + var_r27->trans.y; + sp20.z = var_r27->trans.z; + fn_1_13E14(object->model[(var_r31 * 2) + 1], var_r29, sp20); + fn_1_13EC8(object->model[(var_r31 * 2) + 1], var_r29, 125.0f * (1.0f + var_f31)); + var_r30->unk_4C[var_r31][var_r29] -= 1; + } + else { + fn_1_13D9C(object->model[(var_r31 * 2) + 1], var_r29, 0); + } + } + } +} + +void fn_1_115F8(void) +{ + M428DllPlayerWork3 *var_r31 = lbl_1_bss_2B4->data; + espKill(var_r31->unk_00); + espKill(var_r31->unk_04[0]); + espKill(var_r31->unk_04[1]); + espKill(var_r31->unk_1C[0]); + espKill(var_r31->unk_1C[1]); + Hu3DModelKill(lbl_1_bss_2B4->model[0]); + Hu3DModelKill(lbl_1_bss_2B4->model[1]); + Hu3DModelKill(lbl_1_bss_2B4->model[2]); + Hu3DModelKill(lbl_1_bss_2B4->model[3]); + HuSprAnimKill(var_r31->unk_34); + HuSprAnimKill(var_r31->unk_38); +} + +void fn_1_116C4(s32 arg0, s32 arg1) +{ + if (lbl_1_bss_2B4) { + s32 var_r31; + M428DllPlayerWork3 *var_r30 = lbl_1_bss_2B4->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (arg1 == 0) { + var_r30->unk_3C[arg0][var_r31] = 0x1E; + } + else { + var_r30->unk_4C[arg0][var_r31] = 0x1E; + } + } + } +} + +void fn_1_11754(s32 arg0, float arg8) +{ + if (lbl_1_bss_2B4) { + M428DllPlayerWork3 *var_r31 = lbl_1_bss_2B4->data; + var_r31->unk_24[arg0][1] = arg8; + } +} + +void fn_1_11798(s32 sp8) +{ + s32 var_r30; + s32 var_r29; + + if (lbl_1_bss_2B4) { + M428DllPlayerWork3 *work = lbl_1_bss_2B4->data; + if (sp8 == 0) { + espDispOff(work->unk_00); + espDispOff(work->unk_04[0]); + espDispOff(work->unk_04[1]); + espDispOff(work->unk_1C[0]); + espDispOff(work->unk_1C[1]); + } + else { + espDispOn(work->unk_00); + espDispOn(work->unk_04[0]); + espDispOn(work->unk_04[1]); + espDispOn(work->unk_1C[0]); + espDispOn(work->unk_1C[1]); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + for (var_r29 = 0; var_r29 < 2; var_r29++) { + work->unk_3C[var_r30][var_r29] = work->unk_4C[var_r30][var_r29] = -1; + } + } + } +} + +void fn_1_118A8(s32 arg0, float var_f1) +{ + M428DllPlayerWork3 *var_r31; + if (lbl_1_bss_2B4) { + var_r31 = lbl_1_bss_2B4->data; + if (var_f1 < 0.0f) { + var_f1 = 0.0f; + } + else if (var_f1 > 1.0f) { + var_f1 = 1.0f; + } + var_r31->unk_0C[arg0][1] = var_f1; + } +} + +void fn_1_11930(void) +{ + M428DllPlayerWork4 *var_r31; + s32 var_r30; + s32 var_r29; + omObjData *var_r28; + M428DllPlayerUnk120Struct2 *var_r27; + ModelData *var_r26; + AnimData *var_r25; + + var_r28 = lbl_1_bss_2B0 = omAddObjEx(lbl_1_bss_2D0, 0xBF, 0, 0, -1, fn_1_11A60); + var_r31 = var_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M428DllPlayerWork4), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(M428DllPlayerWork4)); + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M428, 0x0F), MEMORY_DEFAULT_NUM)); + var_r31->unk_10 = var_r25; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r29 = fn_1_12CD4(var_r25, 0x200); + var_r31->unk_00[var_r30] = var_r29; + if (var_r30 == 0) { + Hu3DModelCameraSet(var_r29, 1); + } + else { + Hu3DModelCameraSet(var_r29, 2); + } + Hu3DModelLayerSet(var_r29, 3); + var_r31->unk_08[var_r30] = 0; + var_r26 = &Hu3DData[var_r29]; + var_r27 = var_r26->unk_120; + var_r27->unk_20 = 0; + } +} + +void fn_1_11A60(omObjData *object) +{ + s32 temp_r4; + M428DllPlayerUnkStruct2 *var_r31; + M428DllPlayerWork4 *var_r30; + s32 var_r29; + M428DllPlayerUnk120Struct2 *var_r28; + s32 var_r27; + ModelData *var_r26; + + var_r30 = object->data; + for (var_r29 = 0; var_r29 < 2; var_r29++) { + if (var_r30->unk_08[var_r29] <= 0) { + Hu3DModelAttrSet(var_r30->unk_00[var_r29], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(var_r30->unk_00[var_r29], HU3D_ATTR_DISPOFF); + var_r26 = &Hu3DData[var_r30->unk_00[var_r29]]; + var_r28 = var_r26->unk_120; + var_r31 = var_r28->unk_3C; + var_r28->unk_23 = 0; + for (var_r27 = 0; var_r27 < var_r28->unk_26; var_r27++, var_r31++) { + if (!(var_r31->unk_30 <= 0.0f)) { + var_r31->unk_38.x += var_r31->unk_04; + var_r31->unk_38.y += var_r31->unk_08; + var_r31->unk_38.z += var_r31->unk_0C; + var_r31->unk_34 = var_r31->unk_34 + var_r31->unk_18; + if (var_r31->unk_34 >= 360.0f) { + var_r31->unk_34 = var_r31->unk_34 - 360.0f; + } + var_r31->unk_48 = var_r31->unk_28; + var_r31->unk_28 = var_r31->unk_28 + var_r31->unk_2C; + if (var_r31->unk_48 >= 0x10) { + var_r31->unk_48 = 0; + var_r31->unk_00 = 0; + var_r31->unk_30 = 0.0f; + var_r30->unk_08[var_r29] -= 1; + } + } + } + } + } +} + +void fn_1_11C20(void) +{ + + omObjData *var_r30 = lbl_1_bss_2B0; + M428DllPlayerWork4 *var_r31 = var_r30->data; + Hu3DModelAttrSet(var_r31->unk_00[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_00[1], HU3D_ATTR_DISPOFF); + HuSprAnimKill(var_r31->unk_10); + var_r30->func = NULL; +} + +s32 fn_1_11C8C(s32 arg0, Vec arg1, Vec arg2, GXColor arg3, float arg8, float arg9, float argA) +{ + M428DllPlayerUnkStruct2 *var_r31; + M428DllPlayerUnk120Struct2 *var_r30; + s32 var_r29; + M428DllPlayerWork4 *var_r28; + omObjData *var_r27; + ModelData *var_r26; + + var_r27 = lbl_1_bss_2B0; + var_r28 = var_r27->data; + var_r26 = &Hu3DData[var_r28->unk_00[arg0]]; + var_r30 = var_r26->unk_120; + for (var_r31 = var_r30->unk_3C, var_r29 = 0; var_r29 < var_r30->unk_26; var_r29++, var_r31++) { + if (var_r31->unk_30 <= 0.0f) { + break; + } + } + if (var_r29 >= var_r30->unk_26) { + return -1; + } + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r31->unk_38.x = arg1.x; + var_r31->unk_38.y = arg1.y; + var_r31->unk_38.z = arg1.z; + var_r31->unk_04 = arg2.x; + var_r31->unk_08 = arg2.y; + var_r31->unk_0C = arg2.z; + var_r31->unk_18 = arg9; + var_r31->unk_30 = arg8; + var_r31->unk_44.r = arg3.r; + var_r31->unk_44.g = arg3.g; + var_r31->unk_44.b = arg3.b; + var_r31->unk_44.a = arg3.a; + var_r31->unk_34 = 0.0f; + var_r31->unk_48 = 0; + var_r31->unk_00 = 0; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = argA; + var_r28->unk_08[arg0]++; + return var_r29; +} + +static inline s32 fn_1_11C8C_inlined(s32 arg0, Vec arg1, Vec arg2, GXColor arg3, float arg8, float arg9, float argA) +{ + M428DllPlayerUnkStruct2 *var_r31; + M428DllPlayerUnk120Struct2 *var_r30; + s32 var_r29; + M428DllPlayerWork4 *var_r28; + omObjData *var_r27; + ModelData *var_r26; + + var_r27 = lbl_1_bss_2B0; + var_r28 = var_r27->data; + var_r26 = &Hu3DData[var_r28->unk_00[arg0]]; + var_r30 = var_r26->unk_120; + for (var_r31 = var_r30->unk_3C, var_r29 = 0; var_r29 < var_r30->unk_26; var_r29++, var_r31++) { + if (var_r31->unk_30 <= 0.0f) { + break; + } + } + if (var_r29 >= var_r30->unk_26) { + return -1; + } + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r31->unk_38.x = arg1.x; + var_r31->unk_38.y = arg1.y; + var_r31->unk_38.z = arg1.z; + var_r31->unk_04 = arg2.x; + var_r31->unk_08 = arg2.y; + var_r31->unk_0C = arg2.z; + var_r31->unk_18 = arg9; + var_r31->unk_30 = arg8; + var_r31->unk_44.r = arg3.r; + var_r31->unk_44.g = arg3.g; + var_r31->unk_44.b = arg3.b; + var_r31->unk_44.a = arg3.a; + var_r31->unk_34 = 0.0f; + var_r31->unk_48 = 0; + var_r31->unk_00 = 0; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = argA; + var_r28->unk_08[arg0]++; + return var_r29; +} + +s32 fn_1_11DE4(s32 arg0, Vec arg1, Vec arg2, float arg8, float arg9, float argA, float argB, GXColor arg3) +{ + Vec sp64; + Vec sp58; + s32 sp24; + s32 sp20; + float var_f31; + + sp58.x = arg2.z; + sp58.z = arg2.x; + sp58.y = 0.0f; + VECNormalize(&sp58, &sp58); + var_f31 = 0.5f * argA; + sp64.x = arg1.x + (sp58.x * var_f31); + sp64.y = arg1.y + (sp58.y * var_f31); + sp64.z = arg1.z + (sp58.z * var_f31); + + sp24 = fn_1_11C8C_inlined(arg0, sp64, arg2, arg3, arg8, arg9, argB); + sp64.x = arg1.x - (sp58.x * var_f31); + sp64.y = arg1.y - (sp58.y * var_f31); + sp64.z = arg1.z - (sp58.z * var_f31); + + sp20 = fn_1_11C8C_inlined(arg0, sp64, arg2, arg3, arg8, -arg9, argB); + return (sp24 << 0x10) | sp20; +} + +float fn_1_12254(float arg8, float arg9) +{ + float var_f31; + + if (arg8 >= 360.0f) { + arg8 -= 360.0f; + } + else if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (arg9 >= 360.0f) { + arg9 -= 360.0f; + } + else if (arg9 < 0.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + else if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +float fn_1_1236C(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + + if (arg8 >= 360.0) { + arg8 -= 360.0; + } + else if (arg8 < 0.0) { + arg8 += 360.0; + } + if (arg9 >= 360.0) { + arg9 -= 360.0; + } + else if (arg9 < 0.0) { + arg9 += 360.0; + } + var_f30 = 360.0 + (arg8 - arg9); + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= argA) { + var_f31 = var_f30; + } + else { + var_f31 = argA; + } + } + else if (360.0 - var_f30 <= argA) { + var_f31 = -(360.0 - var_f30); + } + else { + var_f31 = -argA; + } + var_f31 += arg9; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + } + else if (var_f31 < 0.0) { + var_f31 += 360.0; + } + return var_f31; +} + +float fn_1_125BC(float arg8, float arg9, float argA) +{ + float var_f24; + float var_f23; + + var_f23 = fn_1_12254(argA, arg9); + var_f24 = fabs(var_f23 * arg8); + return fn_1_1236C(argA, arg9, var_f24); +} + +void fn_1_129B4(float arg8, Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp8; + sp8.x = arg0->x + (arg8 * (arg1->x - arg0->x)); + sp8.y = arg0->y + (arg8 * (arg1->y - arg0->y)); + sp8.z = arg0->z + (arg8 * (arg1->z - arg0->z)); + *arg2 = sp8; +} + +float fn_1_12A2C(float arg8, float arg9, float argA, float argB) +{ + float var_f31; + float var_f30; + + var_f31 = 1.0 - arg8; + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_12AA4(float arg8, Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + arg3->x = fn_1_12A2C(arg8, arg0->x, arg1->x, arg2->x); + arg3->y = fn_1_12A2C(arg8, arg0->y, arg1->y, arg2->y); + arg3->z = fn_1_12A2C(arg8, arg0->z, arg1->z, arg2->z); +} + +s16 fn_1_12CD4(AnimData *sp8, s16 var_r26) +{ + s16 var_r30; + M428DllPlayerUnkStruct2 *var_r29; + Vec2f *var_r28; + Vec *var_r25; + void *var_r24; + void *var_r22; + + s16 var_r23 = Hu3DHookFuncCreate(fn_1_134C0); + ModelData *var_r27 = &Hu3DData[var_r23]; + M428DllPlayerUnk120Struct2 *var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M428DllPlayerUnk120Struct2), var_r27->unk_48); + var_r27->unk_120 = var_r31; + var_r31->unk_38 = sp8; + var_r31->unk_26 = var_r26; + var_r31->unk_20 = 0; + var_r31->unk_22 = 0; + var_r31->unk_4C = 0; + var_r31->unk_50 = 0; + var_r31->unk_28 = 0; + var_r31->unk_21 = 0; + var_r31->unk_23 = 0; + var_r31->unk_30 = 0; + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r29 = HuMemDirectMallocNum(HEAP_DATA, var_r26 * sizeof(M428DllPlayerUnkStruct2), var_r27->unk_48); + var_r31->unk_3C = var_r29; + memset(var_r29, 0, var_r26 * sizeof(M428DllPlayerUnkStruct2)); + for (var_r30 = 0; var_r30 < var_r26; var_r30++, var_r29++) { + var_r29->unk_30 = 0.0f; + var_r29->unk_34 = 0.0f; + var_r29->unk_28 = 0.0f; + var_r29->unk_2C = 1.0f; + var_r29->unk_38.x = ((frand() & 0x7F) - 0x40) * 0x14; + var_r29->unk_38.y = ((frand() & 0x7F) - 0x40) * 0x1E; + var_r29->unk_38.z = ((frand() & 0x7F) - 0x40) * 0x14; + var_r29->unk_44.r = var_r29->unk_44.g = var_r29->unk_44.b = var_r29->unk_44.a = 0xFF; + var_r29->unk_48 = 0; + } + var_r25 = HuMemDirectMallocNum(HEAP_DATA, var_r26 * sizeof(Vec) * 4, var_r27->unk_48); + var_r31->unk_40 = var_r25; + for (var_r30 = 0; var_r30 < (var_r26 * 4); var_r30++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r28 = HuMemDirectMallocNum(HEAP_DATA, var_r26 * sizeof(Vec2f) * 4, var_r27->unk_48); + var_r31->unk_44 = var_r28; + for (var_r30 = 0; var_r30 < var_r26; var_r30++) { + var_r28->x = 0.0f; + var_r28->y = 0.0f; + var_r28++; + var_r28->x = 1.0f; + var_r28->y = 0.0f; + var_r28++; + var_r28->x = 1.0f; + var_r28->y = 1.0f; + var_r28++; + var_r28->x = 0.0f; + var_r28->y = 1.0f; + var_r28++; + } + var_r24 = HuMemDirectMallocNum(HEAP_DATA, 0x10000, var_r27->unk_48); + var_r22 = var_r24; + DCFlushRange(var_r24, 0x10000); + GXBeginDisplayList(var_r22, 0x10000); + GXBegin(GX_QUADS, GX_VTXFMT0, var_r26 * 4); + for (var_r30 = 0; var_r30 < var_r26; var_r30++) { + GXUnknownu16(var_r30 * 4); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4); + GXUnknownu16(var_r30 * 4 + 1); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 1); + GXUnknownu16(var_r30 * 4 + 2); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 2); + GXUnknownu16(var_r30 * 4 + 3); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 3); + } + var_r31->unk_34 = GXEndDisplayList(); + var_r31->unk_48 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_34, var_r27->unk_48); + memcpy(var_r31->unk_48, var_r24, var_r31->unk_34); + DCFlushRange(var_r31->unk_48, var_r31->unk_34); + HuMemDirectFree(var_r24); + (void)var_r30; + (void)var_r26; + return var_r23; +} + +s16 fn_1_13184(s16 sp8) +{ + M428DllPlayerUnk120Struct2 *var_r31; + M428DllPlayerUnkStruct2 *var_r30; + Vec2f *var_r29; + s16 var_r28; + ModelData *var_r27; + M428DllPlayerUnk120Struct2 *var_r26; + Vec *var_r25; + s32 var_r24; + ModelData *var_r23; + s16 var_r22; + + var_r23 = &Hu3DData[sp8]; + var_r26 = var_r23->unk_120; + var_r22 = Hu3DHookFuncCreate(var_r23->hook); + var_r27 = &Hu3DData[var_r22]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M428DllPlayerUnk120Struct2), var_r27->unk_48); + var_r27->unk_120 = var_r31; + var_r31->unk_38 = var_r26->unk_38; + var_r31->unk_26 = var_r26->unk_26; + var_r24 = var_r31->unk_26; + var_r31->unk_20 = 0; + var_r31->unk_22 = var_r26->unk_22; + var_r31->unk_4C = NULL; + var_r31->unk_50 = NULL; + var_r31->unk_28 = 0; + var_r31->unk_21 = 0; + var_r31->unk_30 = 0; + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r30 = HuMemDirectMallocNum(HEAP_DATA, var_r24 * sizeof(M428DllPlayerUnkStruct2), var_r27->unk_48); + var_r31->unk_3C = var_r30; + for (var_r28 = 0; var_r28 < var_r24; var_r28++, var_r30++) { + var_r30->unk_30 = 0.0f; + var_r30->unk_34 = 0.0f; + var_r30->unk_28 = 0.0f; + var_r30->unk_2C = 1.0f; + var_r30->unk_38.x = ((frand() & 0x7F) - 0x40) * 0x14; + var_r30->unk_38.y = ((frand() & 0x7F) - 0x40) * 0x1E; + var_r30->unk_38.z = ((frand() & 0x7F) - 0x40) * 0x14; + var_r30->unk_44.r = var_r30->unk_44.g = var_r30->unk_44.b = var_r30->unk_44.a = 0xFF; + var_r30->unk_48 = 0; + } + var_r25 = HuMemDirectMallocNum(HEAP_DATA, var_r24 * sizeof(Vec) * 4, var_r27->unk_48); + var_r31->unk_40 = var_r25; + for (var_r28 = 0; var_r28 < (var_r24 * 4); var_r28++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r29 = HuMemDirectMallocNum(HEAP_DATA, var_r24 * sizeof(Vec2f) * 4, var_r27->unk_48); + var_r31->unk_44 = var_r29; + for (var_r28 = 0; var_r28 < var_r24; var_r28++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + var_r31->unk_34 = var_r26->unk_34; + var_r31->unk_48 = var_r26->unk_48; + return var_r22; +} + +void fn_1_134C0(ModelData *var_r23, Mtx var_r22) +{ + Mtx sp128; + Mtx spF8; + Mtx spC8; + Vec sp98[4]; + Vec sp68[4]; + Vec sp38[4]; + ROMtx sp8; + M428DllPlayerUnk120Struct2 *var_r31; + Vec *var_r30; + M428DllPlayerUnkStruct2 *var_r29; + Vec2f *var_r28; + Vec *var_r27; + s16 var_r26; + s16 var_r25; + Vec *var_r24; + s16 var_r21; + s16 var_r20; + s16 var_r19; + M428DllPlayerHook var_r18; + + var_r31 = var_r23->unk_120; + if ((var_r31->unk_2C != GlobalCounter) || (shadowModelDrawF != 0)) { + if ((var_r31->unk_50) && (var_r31->unk_50 != var_r23)) { + fn_1_134C0(var_r31->unk_50, var_r22); + } + GXLoadPosMtxImm(var_r22, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + if (shadowModelDrawF != 0) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } + else { + var_r21 = var_r31->unk_38->bmp->dataFmt & 0xF; + if ((var_r21 == 7) || (var_r21 == 8)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + if ((var_r31->unk_22 & 1) != 0) { + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } + else if ((var_r23->attr & 2) != 0) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(var_r31->unk_38, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + switch (var_r31->unk_20) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + if (HmfInverseMtxF3X3(var_r22, &sp128[0]) == 0) { + MTXIdentity(sp128); + } + PSMTXReorder(sp128, sp8); + if (var_r31->unk_4C) { + var_r18 = var_r31->unk_4C; + var_r18(var_r23, var_r31, 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); + 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; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } + else if (!var_r29->unk_34) { + var_r27 = &sp98[0]; + var_r24 = &sp38[0]; + VECScale(var_r24++, var_r27, var_r29->unk_30); + VECAdd(var_r27++, &var_r29->unk_38, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_30); + VECAdd(var_r27++, &var_r29->unk_38, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_30); + VECAdd(var_r27++, &var_r29->unk_38, var_r30++); + VECScale(var_r24++, var_r27, var_r29->unk_30); + VECAdd(var_r27++, &var_r29->unk_38, var_r30++); + } + else { + VECScale(lbl_1_data_6A4, &sp98[0], var_r29->unk_30); + VECScale(&lbl_1_data_6A4[1], &sp98[1], var_r29->unk_30); + VECScale(&lbl_1_data_6A4[2], &sp98[2], var_r29->unk_30); + VECScale(&lbl_1_data_6A4[3], &sp98[3], var_r29->unk_30); + MTXRotRad(spC8, 0x5A, var_r29->unk_34); + MTXConcat(&sp128[0], spC8, spF8); + MTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); + VECAdd(&sp68[0], &var_r29->unk_38, var_r30++); + VECAdd(&sp68[1], &var_r29->unk_38, var_r30++); + VECAdd(&sp68[2], &var_r29->unk_38, var_r30++); + VECAdd(&sp68[3], &var_r29->unk_38, var_r30++); + } + } + var_r29 = var_r31->unk_3C; + var_r28 = var_r31->unk_44; + if ((var_r31->unk_22 & 2) == 0) { + for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { + var_r20 = var_r29->unk_48 & 3; + var_r19 = (var_r29->unk_48 >> 2) & 3; + for (var_r25 = 0; var_r25 < 4; var_r25++, var_r28++) { + var_r28->x = (0.25f * var_r20) + lbl_1_data_6D4[var_r25].x; + var_r28->y = (0.25f * var_r19) + lbl_1_data_6D4[var_r25].y; + } + } + } + else { + for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { + for (var_r25 = 0; var_r25 < 4; var_r25++, var_r28++) { + var_r28->x = 4.0f * lbl_1_data_6D4[var_r25].x; + var_r28->y = 4.0f * lbl_1_data_6D4[var_r25].y; + } + } + } + DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_26 * 0xC * 4); + DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_26 * 8 * 4); + DCFlushRangeNoSync(var_r31->unk_3C, var_r31->unk_26 * 0x4C); + PPCSync(); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_40, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_44, sizeof(M428DllPlayerUnkStruct2)); // bug? + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_44, sizeof(Vec2f)); + GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + if (shadowModelDrawF == 0) { + if ((var_r31->unk_21 & 2) == 0) { + var_r31->unk_28++; + } + if ((var_r31->unk_30 != 0) && (var_r31->unk_30 <= var_r31->unk_28)) { + if ((var_r31->unk_21 & 1) != 0) { + var_r31->unk_28 = 0; + } + var_r31->unk_28 = var_r31->unk_30; + } + var_r31->unk_2C = GlobalCounter; + } + } +} + +void fn_1_13D9C(s16 arg0, s16 arg1, s32 arg2) +{ + if (arg2 == 0) { + fn_1_13EC8(arg0, arg1, 0.0f); + return; + } + fn_1_13EC8(arg0, arg1, 1.0f); +} + +void fn_1_13E14(s16 arg0, s16 arg1, Vec arg2) +{ + M428DllPlayerUnkStruct2 *var_r31; + M428DllPlayerUnk120Struct2 *var_r30; + s32 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[arg0]; + var_r30 = var_r28->unk_120; + if (arg1 != -1) { + var_r31 = &var_r30->unk_3C[arg1]; + var_r31->unk_38 = arg2; + return; + } + for (var_r31 = var_r30->unk_3C, var_r29 = 0; var_r29 < var_r30->unk_26; var_r29++, var_r31++) { + var_r31->unk_38 = arg2; + } +} + +void fn_1_13EC8(s16 arg0, s16 arg1, float arg8) +{ + M428DllPlayerUnkStruct2 *var_r31; + M428DllPlayerUnk120Struct2 *var_r30; + s32 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[arg0]; + var_r30 = var_r28->unk_120; + if (arg1 != -1) { + var_r31 = &var_r30->unk_3C[arg1]; + var_r31->unk_30 = arg8; + return; + } + for (var_r31 = var_r30->unk_3C, var_r29 = 0; var_r29 < var_r30->unk_26; var_r29++, var_r31++) { + var_r31->unk_30 = arg8; + } +} + +s32 fn_1_13F54(s16 arg0, char *arg1, Mtx arg2, s32 arg3) +{ + Mtx sp44; + Mtx sp14; + ModelData *var_r31; + HsfData *var_r30; + + var_r31 = &Hu3DData[arg0]; + var_r30 = var_r31->hsfData; + lbl_1_bss_130 = 0; + if (var_r31->unk_08 != -1) { + lbl_1_bss_134 = 1; + } + else { + lbl_1_bss_134 = 0; + } + mtxRot(sp14, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + MTXScale(sp44, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(sp14, sp44, sp44); + mtxTransCat(sp44, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + MTXConcat(sp44, var_r31->unk_F0, sp44); + if (arg3 != 0) { + MTXConcat(arg2, sp44, sp44); + } + fn_1_14088(var_r30->root, sp44, arg1, arg2); + return lbl_1_bss_130; +} + +void fn_1_14088(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) +{ + Mtx spF8; + Mtx spC8; + Mtx sp98; + Mtx sp68; + Mtx sp38; + Mtx sp8; + HsfTransform *var_r31; + HsfTransform *var_r30; + HsfTransform *var_r29; + HsfObject *var_r28; + HsfObject *var_r27; + u32 var_r25; + u32 var_r24; + u32 var_r23; + + if (lbl_1_bss_130 == 0) { + if (lbl_1_bss_134 != 0) { + var_r31 = &arg0->data.curr; + } + else { + var_r31 = &arg0->data.base; + } + if ((var_r31->scale.x <= 0.0f) && (var_r31->scale.y <= 0.0f) && (var_r31->scale.z <= 0.0f)) { + MTXCopy(arg1, spF8); + OSReport("OBJ MTX CHECK ERROR %s \n", arg0->name); + } + else { + mtxRot(spC8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + MTXScale(spF8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + MTXConcat(spC8, spF8, spF8); + mtxTransCat(spF8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + MTXConcat(arg1, spF8, spF8); + } + if (lbl_1_bss_138 != 0) { + OSReport("%s \n", arg0->name); + } + if (strcmp(arg2, arg0->name) == 0) { + MTXCopy(spF8, arg3); + lbl_1_bss_130 = 1; + } + for (var_r25 = 0; var_r25 < arg0->data.childrenCount; var_r25++) { + var_r28 = arg0->data.children[var_r25]; + if (lbl_1_bss_130 == 0) { + if (lbl_1_bss_134 != 0) { + var_r30 = &var_r28->data.curr; + } + else { + var_r30 = &var_r28->data.base; + } + if ((var_r30->scale.x <= 0.0f) && (var_r30->scale.y <= 0.0f) && (var_r30->scale.z <= 0.0f)) { + MTXCopy(spF8, sp68); + OSReport("OBJ MTX CHECK ERROR %s \n", var_r28->name); + } + else { + mtxRot(&sp98[0], var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + MTXScale(sp68, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); + MTXConcat(&sp98[0], sp68, sp68); + mtxTransCat(sp68, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); + MTXConcat(spF8, sp68, sp68); + } + if (lbl_1_bss_138 != 0) { + OSReport("%s \n", var_r28->name); + } + if (strcmp(arg2, var_r28->name) == 0) { + MTXCopy(sp68, arg3); + lbl_1_bss_130 = 1; + } + for (var_r24 = 0; var_r24 < var_r28->data.childrenCount; var_r24++) { + var_r27 = var_r28->data.children[var_r24]; + if (lbl_1_bss_130 == 0) { + if (lbl_1_bss_134 != 0) { + var_r29 = &var_r27->data.curr; + } + else { + var_r29 = &var_r27->data.base; + } + if ((var_r29->scale.x <= 0.0f) && (var_r29->scale.y <= 0.0f) && (var_r29->scale.z <= 0.0f)) { + MTXCopy(sp68, sp8); + OSReport("OBJ MTX CHECK ERROR %s \n", var_r27->name); + } + else { + mtxRot(sp38, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); + MTXScale(sp8, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z); + MTXConcat(sp38, sp8, sp8); + mtxTransCat(sp8, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + MTXConcat(sp68, sp8, sp8); + } + if (lbl_1_bss_138 != 0) { + OSReport("%s \n", var_r27->name); + } + if (strcmp(arg2, var_r27->name) == 0) { + MTXCopy(sp8, arg3); + lbl_1_bss_130 = 1; + } + for (var_r23 = 0; var_r23 < var_r27->data.childrenCount; var_r23++) { + fn_1_14088(var_r27->data.children[var_r23], sp8, arg2, arg3); + } + } + } + } + } + } +} + +void fn_1_14560(s16 arg0) +{ + CameraData *var_r31 = &Hu3DCamera[arg0]; + C_MTXLookAt(lbl_1_bss_23C[arg0], &var_r31->pos, &var_r31->up, &var_r31->target); + GXGetProjectionv(&lbl_1_bss_1BC[arg0].unk_00); + GXGetViewportv(&lbl_1_bss_13C[arg0].unk_00); +} + +void fn_1_145F8(s16 var_r29, Vec *var_r31, float *var_r30) +{ + GXProject(var_r31->x, var_r31->y, var_r31->z, lbl_1_bss_23C[var_r29], &lbl_1_bss_1BC[var_r29].unk_00, &lbl_1_bss_13C[var_r29].unk_00, var_r30, + &var_r30[1], &var_r30[2]); +} diff --git a/src/REL/m429Dll/main.c b/src/REL/m429Dll/main.c index 1d05f6c6..01040112 100644 --- a/src/REL/m429Dll/main.c +++ b/src/REL/m429Dll/main.c @@ -1,28 +1,27 @@ #include "REL/executor.h" #include "game/chrman.h" +#include "game/frand.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/frand.h" #include "game/wipe.h" -#include "game/minigame_seq.h" #include "game/gamework_data.h" +#include "game/mapspace.h" #include "game/pad.h" #include "game/printfunc.h" -#include "game/mapspace.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/esprite.h" #include "game/sprite.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" - +#include "version.h" #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -66,12 +65,14 @@ float lbl_1_bss_2F0; s32 lbl_1_bss_2B0[16]; UnkBss1B0Struct lbl_1_bss_1B0[32]; -void fn_1_0(void) { +void fn_1_0(void) +{ lbl_1_bss_358.unk04 = NULL; lbl_1_bss_358.unk08 = NULL; } -void fn_1_24(u16 arg0, s16 arg1) { +void fn_1_24(u16 arg0, s16 arg1) +{ UnkBss358Struct *temp_r31; UnkBss358Struct *temp_r30; UnkBss358Struct *temp_r29; @@ -89,7 +90,8 @@ void fn_1_24(u16 arg0, s16 arg1) { temp_r31->unk08 = temp_r29; } -s16 fn_1_AC(s16 arg0) { +s16 fn_1_AC(s16 arg0) +{ UnkBss358Struct *var_r31; UnkBss358Struct *temp_r29; UnkBss358Struct *temp_r30; @@ -113,12 +115,14 @@ s16 fn_1_AC(s16 arg0) { return -1; } -void fn_1_150(void) { +void fn_1_150(void) +{ lbl_1_bss_340.unk10 = NULL; lbl_1_bss_340.unk14 = NULL; } -void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ UnkBss340Struct *temp_r27; UnkBss340Struct *var_r31; UnkBss340Struct *temp_r28; @@ -148,7 +152,8 @@ void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec var_r31->unk14 = temp_r27; } -void fn_1_2D8(void) { +void fn_1_2D8(void) +{ UnkBss340Struct *var_r31; UnkBss340Struct *temp_r28; UnkBss340Struct *temp_r29; @@ -183,7 +188,8 @@ void fn_1_2D8(void) { } } -void fn_1_414(void) { +void fn_1_414(void) +{ s32 i; for (i = 0; i < 32; i++) { @@ -192,7 +198,8 @@ void fn_1_414(void) { } } -s16 fn_1_46C(s32 arg0) { +s16 fn_1_46C(s32 arg0) +{ s32 i; for (i = 0; i < 32; i++) { @@ -210,37 +217,40 @@ s16 fn_1_46C(s32 arg0) { return Hu3DModelCreateFile(arg0); } -void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ s32 var_r30; espBankSet(arg0[arg1 + 1], 10); espBankSet(arg0[arg1 + 4], 11); - if (36000 <= arg2) { - arg2 = 35999; + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; } - var_r30 = arg2 / 3600; - arg2 -= var_r30 * 3600; + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); if (var_r30 > 9) { var_r30 = 9; } espBankSet(arg0[arg1], var_r30); - var_r30 = arg2 / 60; - arg2 -= var_r30 * 60; + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; espBankSet(arg0[arg1 + 2], var_r30 / 10); espBankSet(arg0[arg1 + 3], var_r30 % 10); - var_r30 = 101.5f * arg2 / 60.0f; + var_r30 = 101.5f * arg2 / REFRESH_RATE; espBankSet(arg0[arg1 + 5], var_r30 / 10); espBankSet(arg0[arg1 + 6], var_r30 % 10); } -void fn_1_798(s32 arg0) { +void fn_1_798(s32 arg0) +{ lbl_1_bss_2F0 = 0.0f; lbl_1_bss_300 = lbl_1_bss_304; GWMGRecordSet(arg0, lbl_1_bss_300); fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_304); } -void fn_1_9EC(void) { +void fn_1_9EC(void) +{ s32 i; for (i = 0; i < 16; i++) { @@ -248,7 +258,8 @@ void fn_1_9EC(void) { } } -void fn_1_A40(void) { +void fn_1_A40(void) +{ float temp_f31; s32 i; @@ -261,7 +272,8 @@ void fn_1_A40(void) { } } -void fn_1_B4C(float arg0, s32 arg1) { +void fn_1_B4C(float arg0, s32 arg1) +{ float temp_f30; float temp_f31; s32 i; @@ -298,7 +310,8 @@ void fn_1_B4C(float arg0, s32 arg1) { } } -void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ float temp_f31; if (1.0f < arg0) { @@ -310,13 +323,15 @@ void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); } -void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ Hu3DCameraPosSetV(1, arg0, arg1, arg2); lbl_1_bss_330 = *arg0; lbl_1_bss_318 = *arg2; } -s32 fn_1_13DC(float arg0, Vec *arg1) { +s32 fn_1_13DC(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -325,13 +340,15 @@ s32 fn_1_13DC(float arg0, Vec *arg1) { Hu3DCameraPosSetV(1, &sp18, arg1, &spC); if (1.0f <= arg0) { return 1; - } else { + } + else { lbl_1_bss_2F4 = 1; return 0; } } -void fn_1_1710(float arg0, Vec *arg1) { +void fn_1_1710(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -341,7 +358,8 @@ void fn_1_1710(float arg0, Vec *arg1) { lbl_1_bss_2F4 = 1; } -void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ Mtx sp1C; Vec sp10; float temp_f30; @@ -368,7 +386,8 @@ void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { arg2->z = 0.0f; } -void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ Mtx sp10; Hu3DModelObjMtxGet(arg0, arg1, sp10); @@ -377,22 +396,24 @@ void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { arg2->z = sp10[2][3]; } -void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ Mtx spC; ModelData *var_r30; var_r30 = &Hu3DData[arg0]; Hu3DModelObjMtxGet(arg0, arg1, spC); - PSMTXConcat(var_r30->unk_F0, spC, spC); + MTXConcat(var_r30->unk_F0, spC, spC); if (NULL != arg3) { - PSMTXCopy(spC, arg3); + MTXCopy(spC, arg3); } arg2->x = spC[0][3]; arg2->y = spC[1][3]; arg2->z = spC[2][3]; } -float fn_1_1E20(float arg0, float arg1, float arg2) { +float fn_1_1E20(float arg0, float arg1, float arg2) +{ float var_f31; float var_f30; @@ -410,11 +431,13 @@ float fn_1_1E20(float arg0, float arg1, float arg2) { return var_f30; } -void fn_1_1F24(s32 arg0) { +void fn_1_1F24(s32 arg0) +{ lbl_1_bss_2F8 = HuAudSeqPlay((s32)arg0); } -void fn_1_1F58(s32 arg0) { +void fn_1_1F58(s32 arg0) +{ if (lbl_1_bss_2F8 >= 0) { if (arg0 < 0) { arg0 = 1000; @@ -424,7 +447,8 @@ void fn_1_1F58(s32 arg0) { lbl_1_bss_2F8 = -1; } -void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ Vec sp18; float var_f28; s32 var_r30; @@ -433,7 +457,7 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { sp18.y = 0.0f; sp18.z = 0.0f; sp18.x = arg2 / 4.0f; - sp18.z = -(float) arg3 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; var_r30 = 0; var_f28 = VECMagXZ(&sp18); if (0.5f <= var_f28) { @@ -447,173 +471,146 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); if (8.0f <= var_f28) { var_r30 = 2; - } else { + } + else { var_r30 = 1; } } - PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); } typedef struct data_1340_sub_struct { - char *unk0; - s32 unk4; - s32 unk8[4]; - Vec unk18; + char *unk0; + s32 unk4; + s32 unk8[4]; + Vec unk18; } Data1340SubStruct; typedef struct data_1340_struct { - s32 unk0; - s32 *unk4; - s32 unk8[4]; - float unk18; - s32 unk1C; - Data1340SubStruct *unk20; + s32 unk0; + s32 *unk4; + s32 unk8[4]; + float unk18; + s32 unk1C; + Data1340SubStruct *unk20; } Data1340Struct; typedef struct data_13A8_struct { - float unk0; - float unk4; - float unk8; - s32 unkC; + float unk0; + float unk4; + float unk8; + s32 unkC; } Data13A8Struct; typedef struct bss_130_struct { - s32 unk0; - float unk4; - float unk8; - float unkC; - float unk10; - float unk14; + s32 unk0; + float unk4; + float unk8; + float unkC; + float unk10; + float unk14; } Bss130Struct; -s16 lbl_1_data_0[8] = { - 0, 1, 2, 3, - 4, 5, 6, 7 -}; +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; Data1340SubStruct lbl_1_data_22C[] = { - { "baseA2-null2", 1, { 13, 1, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null11", 0, { 10, 0, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null12", 0, { 6, 3, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null13", 8, { 20, 2, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null5", 16, { 14, 5, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null6", 0, { 9, 4, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null20", 128, { 2, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null21", 128, { 8, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null22", 0, { 19, 7, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null7", 0, { 5, 15, 10, -1 }, { 0, 0, 0 } }, - { "baseA2-null10", 16, { 1, 9, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null18", 0, { 17, 12, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null17", 0, { 18, 11, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null3", 0, { 0, 14, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null4", 0, { 4, 13, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null8", 0, { 9, 16, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null9", 0, { 22, 15, 17, -1 }, { 0, 0, 0 } }, - { "baseA2-null19", 0, { 11, 23, 16, -1 }, { 0, 0, 0 } }, - { "baseA2-null16", 0, { 12, 19, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null15", 0, { 8, 18, 20, -1 }, { 0, 0, 0 } }, - { "baseA2-null14", 0, { 3, 19, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null39", 0, { 30, 22, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null40", 0, { 16, 21, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null27", 0, { 17, 37, 24, -1 }, { 0, 0, 0 } }, - { "baseA2-null28", 64, { 32, 23, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null23", 64, { 33, 26, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null24", 0, { 38, 25, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null35", 0, { 31, 28, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null34", 32, { 35, 27, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null31", 32, { 36, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null37", 0, { 21, 34, 31, -1 }, { 0, 0, 0 } }, - { "baseA2-null36", 0, { 27, 30, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null29", 0, { 24, 33, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null30", 0, { 25, 32, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null38", 2, { 30, 35, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null33", 0, { 28, 34, 36, -1 }, { 0, 0, 0 } }, - { "baseA2-null32", 0, { 29, 35, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null26", 0, { 23, 38, -1, -1 }, { 0, 0, 0 } }, - { "baseA2-null25", 4, { 26, 37, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null2", 1, { 13, 1, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null11", 0, { 10, 0, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null12", 0, { 6, 3, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null13", 8, { 20, 2, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null5", 16, { 14, 5, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null6", 0, { 9, 4, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null20", 128, { 2, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null21", 128, { 8, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null22", 0, { 19, 7, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null7", 0, { 5, 15, 10, -1 }, { 0, 0, 0 } }, + { "baseA2-null10", 16, { 1, 9, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null18", 0, { 17, 12, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null17", 0, { 18, 11, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null3", 0, { 0, 14, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null4", 0, { 4, 13, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null8", 0, { 9, 16, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null9", 0, { 22, 15, 17, -1 }, { 0, 0, 0 } }, + { "baseA2-null19", 0, { 11, 23, 16, -1 }, { 0, 0, 0 } }, + { "baseA2-null16", 0, { 12, 19, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null15", 0, { 8, 18, 20, -1 }, { 0, 0, 0 } }, + { "baseA2-null14", 0, { 3, 19, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null39", 0, { 30, 22, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null40", 0, { 16, 21, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null27", 0, { 17, 37, 24, -1 }, { 0, 0, 0 } }, + { "baseA2-null28", 64, { 32, 23, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null23", 64, { 33, 26, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null24", 0, { 38, 25, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null35", 0, { 31, 28, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null34", 32, { 35, 27, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null31", 32, { 36, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null37", 0, { 21, 34, 31, -1 }, { 0, 0, 0 } }, + { "baseA2-null36", 0, { 27, 30, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null29", 0, { 24, 33, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null30", 0, { 25, 32, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null38", 2, { 30, 35, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null33", 0, { 28, 34, 36, -1 }, { 0, 0, 0 } }, + { "baseA2-null32", 0, { 29, 35, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null26", 0, { 23, 38, -1, -1 }, { 0, 0, 0 } }, + { "baseA2-null25", 4, { 26, 37, -1, -1 }, { 0, 0, 0 } }, }; Data1340SubStruct lbl_1_data_9EC[] = { - { "baseB2-null1", 1, { 12, 1, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null2", 0, { 8, 0, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null6", 0, { 9, 3, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null10", 0, { 15, 2, 4, -1 }, { 0, 0, 0 } }, - { "baseB2-null11", 0, { 10, 3, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null12", 0, { 11, 6, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null13", 8, { 18, 5, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null7", 16, { 14, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null4", 16, { 1, 9, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null5", 0, { 2, 8, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null14", 128, { 4, 11, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null15", 0, { 5, 10, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null3", 0, { 0, 13, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null9", 0, { 21, 12, 14, -1 }, { 0, 0, 0 } }, - { "baseB2-null8", 0, { 7, 13, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null16", 0, { 3, 16, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null17", 0, { 24, 15, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null18", 128, { 18, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null19", 0, { 6, 17, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null20", 0, { 35, 20, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null21", 0, { 27, 19, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null30", 0, { 13, 22, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null29", 0, { 38, 21, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null31", 0, { 32, 24, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null33", 0, { 16, 23, 25, -1 }, { 0, 0, 0 } }, - { "baseB2-null34", 0, { 30, 24, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null42", 64, { 34, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null25", 0, { 20, 28, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null26", 32, { 37, 27, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null36", 0, { 39, 30, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null35", 0, { 25, 33, 29, -1 }, { 0, 0, 0 } }, - { "baseB2-null24", 32, { 36, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null32", 64, { 23, -1, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null38", 0, { 30, 40, 34, -1 }, { 0, 0, 0 } }, - { "baseB2-null40", 0, { 26, 33, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null22", 2, { 19, 36, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null23", 0, { 31, 35, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null27", 0, { 28, 38, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null28", 0, { 22, 37, 39, -1 }, { 0, 0, 0 } }, - { "baseB2-null37", 0, { 29, 38, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null39", 0, { 33, 41, -1, -1 }, { 0, 0, 0 } }, - { "baseB2-null41", 4, { 40, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null1", 1, { 12, 1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null2", 0, { 8, 0, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null6", 0, { 9, 3, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null10", 0, { 15, 2, 4, -1 }, { 0, 0, 0 } }, + { "baseB2-null11", 0, { 10, 3, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null12", 0, { 11, 6, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null13", 8, { 18, 5, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null7", 16, { 14, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null4", 16, { 1, 9, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null5", 0, { 2, 8, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null14", 128, { 4, 11, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null15", 0, { 5, 10, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null3", 0, { 0, 13, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null9", 0, { 21, 12, 14, -1 }, { 0, 0, 0 } }, + { "baseB2-null8", 0, { 7, 13, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null16", 0, { 3, 16, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null17", 0, { 24, 15, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null18", 128, { 18, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null19", 0, { 6, 17, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null20", 0, { 35, 20, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null21", 0, { 27, 19, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null30", 0, { 13, 22, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null29", 0, { 38, 21, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null31", 0, { 32, 24, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null33", 0, { 16, 23, 25, -1 }, { 0, 0, 0 } }, + { "baseB2-null34", 0, { 30, 24, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null42", 64, { 34, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null25", 0, { 20, 28, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null26", 32, { 37, 27, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null36", 0, { 39, 30, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null35", 0, { 25, 33, 29, -1 }, { 0, 0, 0 } }, + { "baseB2-null24", 32, { 36, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null32", 64, { 23, -1, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null38", 0, { 30, 40, 34, -1 }, { 0, 0, 0 } }, + { "baseB2-null40", 0, { 26, 33, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null22", 2, { 19, 36, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null23", 0, { 31, 35, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null27", 0, { 28, 38, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null28", 0, { 22, 37, 39, -1 }, { 0, 0, 0 } }, + { "baseB2-null37", 0, { 29, 38, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null39", 0, { 33, 41, -1, -1 }, { 0, 0, 0 } }, + { "baseB2-null41", 4, { 40, -1, -1, -1 }, { 0, 0, 0 } }, }; Vec lbl_1_data_FD4 = { 0, 1, -1 }; Vec lbl_1_data_FE0 = { 0, 1, 0 }; s32 lbl_1_data_FEC[4] = { 1, 2, 4, 8 }; -float lbl_1_data_FFC[4][4] = { - 0, 0, 320, 240, - 0, 240, 320, 240, - 320, 0, 320, 240, - 320, 240, 320, 240 -}; -float lbl_1_data_103C[4][4] = { - 2, 2, 316, 236, - 2, 242, 316, 236, - 322, 2, 316, 236, - 322, 242, 316, 236 -}; +float lbl_1_data_FFC[4][4] = { 0, 0, 320, 240, 0, 240, 320, 240, 320, 0, 320, 240, 320, 240, 320, 240 }; +float lbl_1_data_103C[4][4] = { 2, 2, 316, 236, 2, 242, 316, 236, 322, 2, 316, 236, 322, 242, 316, 236 }; -float lbl_1_data_107C[4][4] = { - 0, 0, 640, 480, - 0, 480, 640, 0, - 640, 0, 0, 480, - 640, 480, 0, 0 -}; +float lbl_1_data_107C[4][4] = { 0, 0, 640, 480, 0, 480, 640, 0, 640, 0, 0, 480, 640, 480, 0, 0 }; -float lbl_1_data_10BC[4][4] = { - 0, 0, 0, 480, - 0, 480, 0, 0, - 0, 0, 640, 480, - 0, 480, 640, 0 -}; +float lbl_1_data_10BC[4][4] = { 0, 0, 0, 480, 0, 480, 0, 0, 0, 0, 640, 480, 0, 480, 640, 0 }; -float lbl_1_data_10FC[4][2] = { - -1, -1, - -1, 1, - 1, -1, - 1, 1 -}; +float lbl_1_data_10FC[4][2] = { -1, -1, -1, 1, 1, -1, 1, 1 }; Vec lbl_1_data_111C = { 0, 10000, 0 }; Vec lbl_1_data_1128 = { 0, -1, 0 }; @@ -621,236 +618,227 @@ GXColor lbl_1_data_1134 = { 255, 255, 255, 255 }; Vec lbl_1_data_1138 = { 0, 8000, 1000 }; Vec lbl_1_data_1144 = { 0, 0, 0 }; s32 lbl_1_data_1150[8][10] = { - 0x005F0000, - 0x005F0002, - 0x005F0003, - 0x005F0017, - 0x005F0072, - 0x005F005A, - 0x003C0008, - 0x005F0058, - 0x005F0059, - 0x003C0000, - 0x001A0000, - 0x001A0002, - 0x001A0003, - 0x001A0017, - 0x001A0072, - 0x001A005A, - 0x003C0009, - 0x001A0058, - 0x001A0059, - 0x003C0001, - 0x006D0000, - 0x006D0002, - 0x006D0003, - 0x006D0017, - 0x006D0072, - 0x006D005A, - 0x003C000A, - 0x006D0058, - 0x006D0059, - 0x003C0002, - 0x008A0000, - 0x008A0002, - 0x008A0003, - 0x008A0017, - 0x008A0072, - 0x008A005A, - 0x003C000B, - 0x008A0058, - 0x008A0059, - 0x003C0003, - 0x00850000, - 0x00850002, - 0x00850003, - 0x00850017, - 0x00850072, - 0x0085005A, - 0x003C000C, - 0x00850058, - 0x00850059, - 0x003C0004, - 0x00110000, - 0x00110002, - 0x00110003, - 0x00110017, - 0x00110072, - 0x0011005A, - 0x003C000D, - 0x00110058, - 0x00110059, - 0x003C0005, - 0x000D0000, - 0x000D0002, - 0x000D0003, - 0x000D0017, - 0x000D0072, - 0x000D005A, - 0x003C000E, - 0x000D0058, - 0x000D0059, - 0x003C0006, - 0x00810000, - 0x00810002, - 0x00810003, - 0x00810017, - 0x00810072, - 0x0081005A, - 0x003C000F, - 0x00810058, - 0x00810059, - 0x003C0007 + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x08), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x58), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x72), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x09), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x58), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x01), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x72), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x0A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x58), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x72), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x0B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x58), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x72), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x0C), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x58), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x04), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x72), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x0D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x58), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x05), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x72), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x0E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x58), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x06), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x72), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x5A), + DATA_MAKE_NUM(DATADIR_M429, 0x0F), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x58), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x59), + DATA_MAKE_NUM(DATADIR_M429, 0x07), }; s32 lbl_1_data_1290[8] = { - 0x610000, - 0x610001, - 0x610002, - 0x610003, - 0x610004, - 0x610005, - 0x610006, - 0x610007 + DATA_MAKE_NUM(DATADIR_MGCONST, 0x00), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x01), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x02), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x03), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x04), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x05), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x06), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x07), }; s32 lbl_1_data_12B0[8] = { - 0x003C002C, 0x003C002E, - 0x003C002C, 0x003C002E, - 0x003C002D, 0x003C002E, - 0x003C002D, 0x003C002E + DATA_MAKE_NUM(DATADIR_M429, 0x2C), + DATA_MAKE_NUM(DATADIR_M429, 0x2E), + DATA_MAKE_NUM(DATADIR_M429, 0x2C), + DATA_MAKE_NUM(DATADIR_M429, 0x2E), + DATA_MAKE_NUM(DATADIR_M429, 0x2D), + DATA_MAKE_NUM(DATADIR_M429, 0x2E), + DATA_MAKE_NUM(DATADIR_M429, 0x2D), + DATA_MAKE_NUM(DATADIR_M429, 0x2E), }; s32 lbl_1_data_12D0[4] = { - 0x003C003D, - 0x003C003D, - 0x003C003E, - 0x003C003E + DATA_MAKE_NUM(DATADIR_M429, 0x3D), + DATA_MAKE_NUM(DATADIR_M429, 0x3D), + DATA_MAKE_NUM(DATADIR_M429, 0x3E), + DATA_MAKE_NUM(DATADIR_M429, 0x3E), }; s32 lbl_1_data_12E0[4][3] = { - 0x003C0024, 0x003C0030, 0x003C0025, - 0x003C0026, 0x003C0030, 0x003C0027, - 0x003C0028, 0x003C0030, 0x003C0029, - 0x003C002A, 0x003C0030, 0x003C002B, + DATA_MAKE_NUM(DATADIR_M429, 0x24), + DATA_MAKE_NUM(DATADIR_M429, 0x30), + DATA_MAKE_NUM(DATADIR_M429, 0x25), + DATA_MAKE_NUM(DATADIR_M429, 0x26), + DATA_MAKE_NUM(DATADIR_M429, 0x30), + DATA_MAKE_NUM(DATADIR_M429, 0x27), + DATA_MAKE_NUM(DATADIR_M429, 0x28), + DATA_MAKE_NUM(DATADIR_M429, 0x30), + DATA_MAKE_NUM(DATADIR_M429, 0x29), + DATA_MAKE_NUM(DATADIR_M429, 0x2A), + DATA_MAKE_NUM(DATADIR_M429, 0x30), + DATA_MAKE_NUM(DATADIR_M429, 0x2B), }; s32 lbl_1_data_1310[4] = { - 0x003C003A, - 0x003C003A, - 0x003C003B, - 0x003C003B + DATA_MAKE_NUM(DATADIR_M429, 0x3A), + DATA_MAKE_NUM(DATADIR_M429, 0x3A), + DATA_MAKE_NUM(DATADIR_M429, 0x3B), + DATA_MAKE_NUM(DATADIR_M429, 0x3B), }; s32 lbl_1_data_1320[4] = { - 0x003C0013, - 0x003C0016, - 0x003C0015, - 0x003C0014 + DATA_MAKE_NUM(DATADIR_M429, 0x13), + DATA_MAKE_NUM(DATADIR_M429, 0x16), + DATA_MAKE_NUM(DATADIR_M429, 0x15), + DATA_MAKE_NUM(DATADIR_M429, 0x14), }; s32 lbl_1_data_1330[4] = { - 0x003C001C, - 0x003C001F, - 0x003C001E, - 0x003C001D + DATA_MAKE_NUM(DATADIR_M429, 0x1C), + DATA_MAKE_NUM(DATADIR_M429, 0x1F), + DATA_MAKE_NUM(DATADIR_M429, 0x1E), + DATA_MAKE_NUM(DATADIR_M429, 0x1D), }; Data1340Struct lbl_1_data_1340[2] = { - { - 0, - lbl_1_data_1320, - { - 0x003C0010, - 0x003C0011, - 0x003C0017, - 0x003C0018 - }, - 13000, - 39, - lbl_1_data_22C - }, - { - 4, - lbl_1_data_1330, - { - 0x003C0019, - 0x003C001A, - 0x003C0020, - 0x003C0021 - }, - 13000, - 42, - lbl_1_data_9EC - }, + { + 0, + lbl_1_data_1320, + { + DATA_MAKE_NUM(DATADIR_M429, 0x10), + DATA_MAKE_NUM(DATADIR_M429, 0x11), + DATA_MAKE_NUM(DATADIR_M429, 0x17), + DATA_MAKE_NUM(DATADIR_M429, 0x18), + }, + 13000, + 39, + lbl_1_data_22C, + }, + { + 4, + lbl_1_data_1330, + { + DATA_MAKE_NUM(DATADIR_M429, 0x19), + DATA_MAKE_NUM(DATADIR_M429, 0x1A), + DATA_MAKE_NUM(DATADIR_M429, 0x20), + DATA_MAKE_NUM(DATADIR_M429, 0x21), + }, + 13000, + 42, + lbl_1_data_9EC, + }, }; s32 lbl_1_data_1388[8] = { - 0x003C0032, - 0x003C0033, - 0x003C0034, - 0x003C0035, - 0x003C0036, - 0x003C0037, - 0x003C0038, - 0x003C0039 + DATA_MAKE_NUM(DATADIR_M429, 0x32), + DATA_MAKE_NUM(DATADIR_M429, 0x33), + DATA_MAKE_NUM(DATADIR_M429, 0x34), + DATA_MAKE_NUM(DATADIR_M429, 0x35), + DATA_MAKE_NUM(DATADIR_M429, 0x36), + DATA_MAKE_NUM(DATADIR_M429, 0x37), + DATA_MAKE_NUM(DATADIR_M429, 0x38), + DATA_MAKE_NUM(DATADIR_M429, 0x39), }; -Data13A8Struct lbl_1_data_13A8 = { - 0.5f, - 100.0f, - 130.0f, - 15 -}; +Data13A8Struct lbl_1_data_13A8 = { 0.5f, 100.0f, 130.0f, 15 }; -Data13A8Struct lbl_1_data_13B8 = { - 0.6f, - 110.0f, - 120.0f, - 12 -}; +Data13A8Struct lbl_1_data_13B8 = { 0.6f, 110.0f, 120.0f, 12 }; -Data13A8Struct lbl_1_data_13C8 = { - 0.7f, - 120.0f, - 110.0f, - 9 -}; +Data13A8Struct lbl_1_data_13C8 = { 0.7f, 120.0f, 110.0f, 9 }; -Data13A8Struct lbl_1_data_13D8 = { - 0.8f, - 130.0f, - 100.0f, - 6 -}; +Data13A8Struct lbl_1_data_13D8 = { 0.8f, 130.0f, 100.0f, 6 }; HsfanimStruct00 lbl_1_data_13E8 = { - 30, - { 0, 0 }, - 1.0f, - 10.0f, - 360.0f, - { 0.0f, 0.1f, 0.0f }, - 1.0f, - 1.0f, - 30.0f, - 1.05f, - 1, - { - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - }, - { - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - }, + 30, + { 0, 0 }, + 1.0f, + 10.0f, + 360.0f, + { 0.0f, 0.1f, 0.0f }, + 1.0f, + 1.0f, + 30.0f, + 1.05f, + 1, + { + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + }, + { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + }, }; - omObjData *lbl_1_bss_1AC; omObjData *lbl_1_bss_1A8; omObjData **lbl_1_bss_1A4; @@ -887,2002 +875,2010 @@ s32 lbl_1_bss_4; s32 lbl_1_bss_0; typedef struct work_8F68 { - Data13A8Struct *unk0; - Vec unk4; - Vec unk10; - Vec unk1C; - Vec unk28; - Vec unk34; - Vec unk40; - float unk4C; - float unk50; - float unk54; - float unk58; - float unk5C; - float unk60; - float unk64; - float unk68; - float unk6C; - s32 unk70; - u8 *unk74; - s32 unk78; - s32 unk7C; - s32 unk80; - s32 unk84; - s32 unk88; - s32 unk8C; - float unk90; - u32 unk94[2]; - s32 unk9C; - s32 unkA0; - s32 unkA4; - s32 unkA8; - s32 unkAC; - s32 unkB0; - s32 unkB4; - s32 unkB8[4]; - s32 unkC8[4][2]; - s32 unkE8; - s32 unkEC; - s32 unkF0; - s32 unkF4; - s32 unkF8; - s32 unkFC; - s32 unk100; - s32 unk104; - s32 unk108; - s32 unk10C; - s32 unk110; - s32 unk114; - s32 unk118; - s32 unk11C; - s32 unk120; + Data13A8Struct *unk0; + Vec unk4; + Vec unk10; + Vec unk1C; + Vec unk28; + Vec unk34; + Vec unk40; + float unk4C; + float unk50; + float unk54; + float unk58; + float unk5C; + float unk60; + float unk64; + float unk68; + float unk6C; + s32 unk70; + u8 *unk74; + s32 unk78; + s32 unk7C; + s32 unk80; + s32 unk84; + s32 unk88; + s32 unk8C; + float unk90; + u32 unk94[2]; + s32 unk9C; + s32 unkA0; + s32 unkA4; + s32 unkA8; + s32 unkAC; + s32 unkB0; + s32 unkB4; + s32 unkB8[4]; + s32 unkC8[4][2]; + s32 unkE8; + s32 unkEC; + s32 unkF0; + s32 unkF4; + s32 unkF8; + s32 unkFC; + s32 unk100; + s32 unk104; + s32 unk108; + s32 unk10C; + s32 unk110; + s32 unk114; + s32 unk118; + s32 unk11C; + s32 unk120; } Work8F68; void fn_1_23B4(void) { - Work8F68 *temp_r31; - s32 temp_r30; - HuSysVWaitSet(1); - lbl_1_bss_11C -= HuPadSubStkX[0]/59.0f; - lbl_1_bss_120 -= 4*(HuPadSubStkY[0]/59.0f); - lbl_1_bss_118 -= 4*(HuPadTrigL[0]/150.0f); - lbl_1_bss_118 += 4*(HuPadTrigR[0]/150.0f); - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r31 = lbl_1_bss_1A4[temp_r30]->data; - print8(24, 96+(16*temp_r30), 1.5f, "%d %d %d M%2d %04x %2d %2d %d %d", temp_r31->unk100, temp_r31->unk10C, temp_r31->unk104, temp_r31->unk8C, temp_r31->unkE8, temp_r31->unkEC, temp_r31->unkF0, temp_r31->unk80, temp_r31->unk8C); - } + Work8F68 *temp_r31; + s32 temp_r30; + HuSysVWaitSet(1); + lbl_1_bss_11C -= HuPadSubStkX[0] / 59.0f; + lbl_1_bss_120 -= 4 * (HuPadSubStkY[0] / 59.0f); + lbl_1_bss_118 -= 4 * (HuPadTrigL[0] / 150.0f); + lbl_1_bss_118 += 4 * (HuPadTrigR[0] / 150.0f); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r31 = lbl_1_bss_1A4[temp_r30]->data; + print8(24, 96 + (16 * temp_r30), 1.5f, "%d %d %d M%2d %04x %2d %2d %d %d", temp_r31->unk100, temp_r31->unk10C, temp_r31->unk104, + temp_r31->unk8C, temp_r31->unkE8, temp_r31->unkEC, temp_r31->unkF0, temp_r31->unk80, temp_r31->unk8C); + } } Data1340SubStruct *fn_1_2614(s32 arg0) { - Data1340SubStruct *temp_r31; - s32 temp_r30; - temp_r31 = lbl_1_bss_190->unk20; - for(temp_r30=0; temp_r30unk1C; temp_r30++, temp_r31++) { - if(arg0 & temp_r31->unk4) { - return temp_r31; - } - } - return NULL; + Data1340SubStruct *temp_r31; + s32 temp_r30; + temp_r31 = lbl_1_bss_190->unk20; + for (temp_r30 = 0; temp_r30 < lbl_1_bss_190->unk1C; temp_r30++, temp_r31++) { + if (arg0 & temp_r31->unk4) { + return temp_r31; + } + } + return NULL; } void fn_1_2684(void) { - Data1340SubStruct *temp_r31; - s32 temp_r30; - - s32 temp_r28; - temp_r30 = frandmod(2); - lbl_1_bss_190 = &lbl_1_data_1340[temp_r30]; - temp_r30 = Hu3DModelCreateFile(lbl_1_bss_190->unk8[0]); - Hu3DModelAttrSet(temp_r30, 1); - Hu3DModelPosSet(temp_r30, 0, 0, 0); - Hu3DModelRotSet(temp_r30, 0, -90.f*lbl_1_bss_34, 0); - for(temp_r28=0; temp_r28unk1C; temp_r28++) { - fn_1_1D18(temp_r30, lbl_1_bss_190->unk20[temp_r28].unk0, &lbl_1_bss_190->unk20[temp_r28].unk18); - } - lbl_1_bss_128 = 2000; - lbl_1_bss_124 = 2000; - temp_r31 = fn_1_2614(1); - if(NULL != temp_r31) { - lbl_1_bss_128 = 2.0f*ABS(temp_r31->unk18.x); - lbl_1_bss_124 = 2.2f*ABS(temp_r31->unk18.z); - } + Data1340SubStruct *temp_r31; + s32 temp_r30; + + s32 temp_r28; + temp_r30 = frandmod(2); + lbl_1_bss_190 = &lbl_1_data_1340[temp_r30]; + temp_r30 = Hu3DModelCreateFile(lbl_1_bss_190->unk8[0]); + Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(temp_r30, 0, 0, 0); + Hu3DModelRotSet(temp_r30, 0, -90.f * lbl_1_bss_34, 0); + for (temp_r28 = 0; temp_r28 < lbl_1_bss_190->unk1C; temp_r28++) { + fn_1_1D18(temp_r30, lbl_1_bss_190->unk20[temp_r28].unk0, &lbl_1_bss_190->unk20[temp_r28].unk18); + } + lbl_1_bss_128 = 2000; + lbl_1_bss_124 = 2000; + temp_r31 = fn_1_2614(1); + if (NULL != temp_r31) { + lbl_1_bss_128 = 2.0f * ABS(temp_r31->unk18.x); + lbl_1_bss_124 = 2.2f * ABS(temp_r31->unk18.z); + } } void fn_1_2950(Work8F68 *arg0) { - float temp_f31; - float temp_f30; - float temp_f28; - float temp_f27; - s32 temp_r31; - Data1340SubStruct *temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - s32 temp_r26; - temp_r28 = arg0->unkEC; - temp_r31 = -1; - temp_f27 = lbl_1_bss_190->unk18; - temp_r30 = lbl_1_bss_190->unk20; - for(temp_r29=0; temp_r29unk1C; temp_r29++, temp_r30++) { - temp_f31 = arg0->unk4.x-temp_r30->unk18.x; - temp_f30 = arg0->unk4.z-temp_r30->unk18.z; - temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(arg0->unk54+200.0f > temp_f28 && temp_f27 > temp_f28) { - temp_r31 = temp_r29; - temp_f27 = temp_f28; - } - } - if(temp_r31 >= 0) { - arg0->unkEC = temp_r31; - if(temp_r28 != temp_r31) { - if(--arg0->unk8C < 0) { - arg0->unk8C = -1; - } - } - temp_r27 = temp_r31/32; - temp_r26 = temp_r31%32; - arg0->unk94[temp_r27] |= 1 << temp_r26; - } + float temp_f31; + float temp_f30; + float temp_f28; + float temp_f27; + s32 temp_r31; + Data1340SubStruct *temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + s32 temp_r26; + temp_r28 = arg0->unkEC; + temp_r31 = -1; + temp_f27 = lbl_1_bss_190->unk18; + temp_r30 = lbl_1_bss_190->unk20; + for (temp_r29 = 0; temp_r29 < lbl_1_bss_190->unk1C; temp_r29++, temp_r30++) { + temp_f31 = arg0->unk4.x - temp_r30->unk18.x; + temp_f30 = arg0->unk4.z - temp_r30->unk18.z; + temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (arg0->unk54 + 200.0f > temp_f28 && temp_f27 > temp_f28) { + temp_r31 = temp_r29; + temp_f27 = temp_f28; + } + } + if (temp_r31 >= 0) { + arg0->unkEC = temp_r31; + if (temp_r28 != temp_r31) { + if (--arg0->unk8C < 0) { + arg0->unk8C = -1; + } + } + temp_r27 = temp_r31 / 32; + temp_r26 = temp_r31 % 32; + arg0->unk94[temp_r27] |= 1 << temp_r26; + } } void fn_1_2BE0(Work8F68 *arg0, s32 arg1, s32 arg2, s32 arg3, u8 *arg4, s32 *arg5) { - s32 sp8[2]; - s32 temp_r31; - Data1340SubStruct *temp_r30; - s32 temp_r29; - u8 *temp_r27; - - s32 temp_r24; - s32 temp_r23; - temp_r24 = arg1/32; - temp_r23 = arg1%32; - arg5[temp_r24] |= 1 << temp_r23; - temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, arg3+1, MEMORY_DEFAULT_NUM); - for(temp_r31=0; temp_r31unk20[arg1]; - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(temp_r30->unk8[temp_r31] < 0) { - break; - } - temp_r27[arg3] = temp_r30->unk8[temp_r31]; - if(arg2 == temp_r30->unk8[temp_r31]) { - if(arg0->unk78 > arg3+1) { - if(NULL != arg0->unk74) { - HuMemDirectFree(arg0->unk74); - } - arg0->unk74 = HuMemDirectMallocNum(HEAP_SYSTEM, arg3+1, MEMORY_DEFAULT_NUM); - for(temp_r29=0; temp_r29unk74[temp_r29] = temp_r27[temp_r29]; - } - arg0->unk78 = arg3+1; - } - } else { - if(temp_r30->unk8[temp_r31] >= 0) { - temp_r24 = temp_r30->unk8[temp_r31]/32; - temp_r23 = temp_r30->unk8[temp_r31]%32; - if((arg5[temp_r24] & (1 << temp_r23)) == 0u) { - for(temp_r29=0; temp_r29<2; temp_r29++) { - sp8[temp_r29] = arg5[temp_r29]; - } - fn_1_2BE0(arg0, temp_r30->unk8[temp_r31], arg2, arg3+1, temp_r27, sp8); - } - } - } - } - HuMemDirectFree(temp_r27); + s32 sp8[2]; + s32 temp_r31; + Data1340SubStruct *temp_r30; + s32 temp_r29; + u8 *temp_r27; + + s32 temp_r24; + s32 temp_r23; + temp_r24 = arg1 / 32; + temp_r23 = arg1 % 32; + arg5[temp_r24] |= 1 << temp_r23; + temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 + 1, MEMORY_DEFAULT_NUM); + for (temp_r31 = 0; temp_r31 < arg3; temp_r31++) { + temp_r27[temp_r31] = arg4[temp_r31]; + } + temp_r30 = &lbl_1_bss_190->unk20[arg1]; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r30->unk8[temp_r31] < 0) { + break; + } + temp_r27[arg3] = temp_r30->unk8[temp_r31]; + if (arg2 == temp_r30->unk8[temp_r31]) { + if (arg0->unk78 > arg3 + 1) { + if (NULL != arg0->unk74) { + HuMemDirectFree(arg0->unk74); + } + arg0->unk74 = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 + 1, MEMORY_DEFAULT_NUM); + for (temp_r29 = 0; temp_r29 < arg3 + 1; temp_r29++) { + arg0->unk74[temp_r29] = temp_r27[temp_r29]; + } + arg0->unk78 = arg3 + 1; + } + } + else { + if (temp_r30->unk8[temp_r31] >= 0) { + temp_r24 = temp_r30->unk8[temp_r31] / 32; + temp_r23 = temp_r30->unk8[temp_r31] % 32; + if ((arg5[temp_r24] & (1 << temp_r23)) == 0u) { + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + sp8[temp_r29] = arg5[temp_r29]; + } + fn_1_2BE0(arg0, temp_r30->unk8[temp_r31], arg2, arg3 + 1, temp_r27, sp8); + } + } + } + } + HuMemDirectFree(temp_r27); } void fn_1_2E14(Work8F68 *arg0) { - s32 spC[2]; - u8 sp8; - s32 temp_r30; - if(NULL != arg0->unk74) { - HuMemDirectFree(arg0->unk74); - } - arg0->unk74 = NULL; - arg0->unk78 = 65535; - arg0->unk7C = 0; - if(arg0->unkEC == arg0->unkF0) { - arg0->unkE8 |= 0x8; - arg0->unkF0 = -1; - return; - } - sp8 = arg0->unkEC; - for(temp_r30=0; temp_r30<2; temp_r30++) { - spC[temp_r30] = 0; - } - fn_1_2BE0(arg0, arg0->unkEC, arg0->unkF0, 1, &sp8, spC); + s32 spC[2]; + u8 sp8; + s32 temp_r30; + if (NULL != arg0->unk74) { + HuMemDirectFree(arg0->unk74); + } + arg0->unk74 = NULL; + arg0->unk78 = 65535; + arg0->unk7C = 0; + if (arg0->unkEC == arg0->unkF0) { + arg0->unkE8 |= 0x8; + arg0->unkF0 = -1; + return; + } + sp8 = arg0->unkEC; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + spC[temp_r30] = 0; + } + fn_1_2BE0(arg0, arg0->unkEC, arg0->unkF0, 1, &sp8, spC); } void fn_1_2EEC(Work8F68 *arg0) { - Vec sp18; - Vec spC; - float temp_f31; - float temp_f30; - float temp_f28; - Data1340SubStruct *temp_r30; - Data1340SubStruct *temp_r29; - - if(NULL != arg0->unk74 && arg0->unk78 >= 2) { - temp_r30 = &lbl_1_bss_190->unk20[arg0->unk74[0]]; - temp_r29 = &lbl_1_bss_190->unk20[arg0->unk74[1]]; - temp_f31 = temp_r30->unk18.x-arg0->unk4.x; - temp_f30 = temp_r30->unk18.z-arg0->unk4.z; - temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(150.0f > temp_f28) { - arg0->unk7C = 1; - return; - } - VECSubtract(&temp_r29->unk18, &temp_r30->unk18, &sp18); - VECSubtract(&arg0->unk4, &temp_r30->unk18, &spC); - if(0.0f != VECMag(&sp18) && 0.0f != VECMag(&spC)) { - VECNormalize(&sp18, &sp18); - VECNormalize(&spC, &spC); - if(0.8f < VECDotProduct(&sp18, &spC)) { - arg0->unk7C = 1; - } - } - } + Vec sp18; + Vec spC; + float temp_f31; + float temp_f30; + float temp_f28; + Data1340SubStruct *temp_r30; + Data1340SubStruct *temp_r29; + + if (NULL != arg0->unk74 && arg0->unk78 >= 2) { + temp_r30 = &lbl_1_bss_190->unk20[arg0->unk74[0]]; + temp_r29 = &lbl_1_bss_190->unk20[arg0->unk74[1]]; + temp_f31 = temp_r30->unk18.x - arg0->unk4.x; + temp_f30 = temp_r30->unk18.z - arg0->unk4.z; + temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (150.0f > temp_f28) { + arg0->unk7C = 1; + return; + } + VECSubtract(&temp_r29->unk18, &temp_r30->unk18, &sp18); + VECSubtract(&arg0->unk4, &temp_r30->unk18, &spC); + if (0.0f != VECMag(&sp18) && 0.0f != VECMag(&spC)) { + VECNormalize(&sp18, &sp18); + VECNormalize(&spC, &spC); + if (0.8f < VECDotProduct(&sp18, &spC)) { + arg0->unk7C = 1; + } + } + } } -void fn_1_31A8(omObjData *object) -{ - -} +void fn_1_31A8(omObjData *object) { } void fn_1_31AC(omObjData *object) { - object->model[0] = Hu3DModelCreateFile(lbl_1_bss_190->unk4[lbl_1_bss_34]); - Hu3DModelAttrSet(object->model[0], 1); - omSetTra(object, 0, 0, 0); - omSetRot(object, 0, 0, 0); - object->func = fn_1_31A8; + object->model[0] = Hu3DModelCreateFile(lbl_1_bss_190->unk4[lbl_1_bss_34]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + omSetTra(object, 0, 0, 0); + omSetRot(object, 0, 0, 0); + object->func = fn_1_31A8; } typedef struct work_3284 { - Vec unk0; - float unkC; - float unk10; - s32 unk14; - s32 unk18; + Vec unk0; + float unkC; + float unk10; + s32 unk14; + s32 unk18; } Work3284; void fn_1_3284(omObjData *object) { - Work3284 *temp_r31 = object->data; - if(lbl_1_bss_1AC->work[0] >= 1007) { - temp_r31->unk10 *= 0.9f; - if(0.0f > temp_r31->unk10) { - temp_r31->unk10 = 0.0f; - } - } else { - if(temp_r31->unk18 & 0x1) { - temp_r31->unkC += 6.0f; - if(180.0f < temp_r31->unkC) { - temp_r31->unkC = 180.0f; - } - temp_r31->unk10 = 1.0-(0.5*sind(temp_r31->unkC)); - } - } - omSetSca(object, temp_r31->unk10, temp_r31->unk10, temp_r31->unk10); - Hu3DModelScaleSet(object->model[1], temp_r31->unk10, temp_r31->unk10, temp_r31->unk10); - Hu3DModelScaleSet(object->model[0], temp_r31->unk10, temp_r31->unk10, temp_r31->unk10); + Work3284 *temp_r31 = object->data; + if (lbl_1_bss_1AC->work[0] >= 1007) { + temp_r31->unk10 *= 0.9f; + if (0.0f > temp_r31->unk10) { + temp_r31->unk10 = 0.0f; + } + } + else { + if (temp_r31->unk18 & 0x1) { + temp_r31->unkC += 6.0f; + if (180.0f < temp_r31->unkC) { + temp_r31->unkC = 180.0f; + } + temp_r31->unk10 = 1.0 - (0.5 * sind(temp_r31->unkC)); + } + } + omSetSca(object, temp_r31->unk10, temp_r31->unk10, temp_r31->unk10); + Hu3DModelScaleSet(object->model[1], temp_r31->unk10, temp_r31->unk10, temp_r31->unk10); + Hu3DModelScaleSet(object->model[0], temp_r31->unk10, temp_r31->unk10, temp_r31->unk10); } void fn_1_33F8(omObjData *object) { - Work3284 *temp_r31 = object->data; - s32 temp_r29; - s32 temp_r28; - s32 *temp_r27; - Data1340SubStruct *temp_r26; - s32 temp_r25; - s32 temp_r24; - - temp_r31->unk0.x = 0; - temp_r31->unk0.y = 0; - temp_r31->unk0.z = 0; - temp_r31->unkC = 0; - temp_r31->unk10 = 1; - temp_r31->unk14 = -1; - temp_r31->unk18 = 0; - temp_r24 = 16 << ((object->work[0]+lbl_1_bss_34+2)&0x3); - temp_r25 = frandmod(lbl_1_bss_190->unk1C)+1; - temp_r28 = frandmod(lbl_1_bss_190->unk1C); - while(1) { - temp_r26 = &lbl_1_bss_190->unk20[temp_r28]; - if((temp_r24 & temp_r26->unk4) && --temp_r25 < 0) { - temp_r31->unk14 = temp_r28; - temp_r31->unk0 = temp_r26->unk18; - break; - } else { - temp_r28 = (temp_r28+1)%lbl_1_bss_190->unk1C; - } - } - temp_r31->unk0.y = 100; - temp_r27 = &lbl_1_data_12B0[object->work[0]*2]; - object->model[0] = Hu3DModelCreateFile(*temp_r27++); - object->model[1] = Hu3DModelCreateFile(*temp_r27++); - for(temp_r29=0; temp_r29<2; temp_r29++) { - Hu3DModelCameraSet(object->model[temp_r29], 15); - Hu3DModelAttrSet(object->model[temp_r29], 1); - Hu3DModelAttrSet(object->model[temp_r29], 0x40000001); - Hu3DModelAttrReset(object->model[temp_r29], 0x40000002); - Hu3DModelLayerSet(object->model[temp_r29], 3); - Hu3DModelPosSet(object->model[temp_r29], temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); - Hu3DModelRotSet(object->model[temp_r29], 0, 0, 0); - Hu3DModelShadowSet(object->model[temp_r29]); - } - omSetTra(object, temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); - omSetRot(object, 0, 0, 0); - Hu3DModelAttrReset(object->model[0], 1); - object->func = fn_1_3284; + Work3284 *temp_r31 = object->data; + s32 temp_r29; + s32 temp_r28; + s32 *temp_r27; + Data1340SubStruct *temp_r26; + s32 temp_r25; + s32 temp_r24; + + temp_r31->unk0.x = 0; + temp_r31->unk0.y = 0; + temp_r31->unk0.z = 0; + temp_r31->unkC = 0; + temp_r31->unk10 = 1; + temp_r31->unk14 = -1; + temp_r31->unk18 = 0; + temp_r24 = 16 << ((object->work[0] + lbl_1_bss_34 + 2) & 0x3); + temp_r25 = frandmod(lbl_1_bss_190->unk1C) + 1; + temp_r28 = frandmod(lbl_1_bss_190->unk1C); + while (1) { + temp_r26 = &lbl_1_bss_190->unk20[temp_r28]; + if ((temp_r24 & temp_r26->unk4) && --temp_r25 < 0) { + temp_r31->unk14 = temp_r28; + temp_r31->unk0 = temp_r26->unk18; + break; + } + else { + temp_r28 = (temp_r28 + 1) % lbl_1_bss_190->unk1C; + } + } + temp_r31->unk0.y = 100; + temp_r27 = &lbl_1_data_12B0[object->work[0] * 2]; + object->model[0] = Hu3DModelCreateFile(*temp_r27++); + object->model[1] = Hu3DModelCreateFile(*temp_r27++); + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + Hu3DModelCameraSet(object->model[temp_r29], 15); + Hu3DModelAttrSet(object->model[temp_r29], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[temp_r29], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(object->model[temp_r29], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[temp_r29], 3); + Hu3DModelPosSet(object->model[temp_r29], temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); + Hu3DModelRotSet(object->model[temp_r29], 0, 0, 0); + Hu3DModelShadowSet(object->model[temp_r29]); + } + omSetTra(object, temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); + omSetRot(object, 0, 0, 0); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_3284; } s32 fn_1_36FC(Work8F68 *arg0) { - AddX = 0; - AddZ = 0; - MapWall(arg0->unk54, arg0->unk4.x, arg0->unk4.y+arg0->unk54, arg0->unk4.z); - - arg0->unk4.x += AddX; - arg0->unk4.z += AddZ; - if(0.0f != ABS(AddX)+ABS(AddZ)) { - arg0->unk108 = 1; - return 1; - } else { - return 0; - } + AddX = 0; + AddZ = 0; + MapWall(arg0->unk54, arg0->unk4.x, arg0->unk4.y + arg0->unk54, arg0->unk4.z); + + arg0->unk4.x += AddX; + arg0->unk4.z += AddZ; + if (0.0f != ABS(AddX) + ABS(AddZ)) { + arg0->unk108 = 1; + return 1; + } + else { + return 0; + } } static inline void VECSet(Vec *dst, float x, float y, float z) { - dst->x = x; - dst->y = y; - dst->z = z; + dst->x = x; + dst->y = y; + dst->z = z; } void fn_1_386C(Work8F68 *arg0) { - Vec sp18; - Vec spC; - float temp_f31; - float temp_f30; - float temp_f28; - - Work8F68 *temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - temp_r28 = 0; - temp_r27 = 0; - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r30 = lbl_1_bss_1A4[temp_r29]->data; - if(arg0->unk114 == temp_r30->unk114) { - continue; - } - temp_f31 = arg0->unk4.x-temp_r30->unk4.x; - temp_f30 = arg0->unk4.z-temp_r30->unk4.z; - temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(temp_f28 < arg0->unk54+temp_r30->unk54) { - if(0.0f == temp_f28) { - temp_f31 = 0; - temp_f30 = -1; - } else { - temp_f31 /= temp_f28; - temp_f30 /= temp_f28; - } - temp_r27++; - arg0->unk4.x = temp_r30->unk4.x+(temp_f31*(arg0->unk54+temp_r30->unk54)); - arg0->unk4.z = temp_r30->unk4.z+(temp_f30*(arg0->unk54+temp_r30->unk54)); - fn_1_36FC(arg0); - VECSet(&sp18, arg0->unkF4, 0, arg0->unkF8); - VECSet(&spC, temp_r30->unkF4, 0, temp_r30->unkF8); - if(0.0f != VECMag(&sp18) && 0.0f != VECMag(&spC)) { - VECNormalize(&sp18, &sp18); - VECNormalize(&spC, &spC); - if(-0.8f > VECDotProduct(&sp18, &spC)) { - temp_r28++; - } - } - } - } - if(temp_r28 != 0 || temp_r27 >= 2) { - arg0->unk100++; - arg0->unk10C++; - } else { - arg0->unk10C = 0; - } + Vec sp18; + Vec spC; + float temp_f31; + float temp_f30; + float temp_f28; + + Work8F68 *temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + temp_r28 = 0; + temp_r27 = 0; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r30 = lbl_1_bss_1A4[temp_r29]->data; + if (arg0->unk114 == temp_r30->unk114) { + continue; + } + temp_f31 = arg0->unk4.x - temp_r30->unk4.x; + temp_f30 = arg0->unk4.z - temp_r30->unk4.z; + temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (temp_f28 < arg0->unk54 + temp_r30->unk54) { + if (0.0f == temp_f28) { + temp_f31 = 0; + temp_f30 = -1; + } + else { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + } + temp_r27++; + arg0->unk4.x = temp_r30->unk4.x + (temp_f31 * (arg0->unk54 + temp_r30->unk54)); + arg0->unk4.z = temp_r30->unk4.z + (temp_f30 * (arg0->unk54 + temp_r30->unk54)); + fn_1_36FC(arg0); + VECSet(&sp18, arg0->unkF4, 0, arg0->unkF8); + VECSet(&spC, temp_r30->unkF4, 0, temp_r30->unkF8); + if (0.0f != VECMag(&sp18) && 0.0f != VECMag(&spC)) { + VECNormalize(&sp18, &sp18); + VECNormalize(&spC, &spC); + if (-0.8f > VECDotProduct(&sp18, &spC)) { + temp_r28++; + } + } + } + } + if (temp_r28 != 0 || temp_r27 >= 2) { + arg0->unk100++; + arg0->unk10C++; + } + else { + arg0->unk10C = 0; + } } void fn_1_3DCC(Work8F68 *arg0) { - float temp_f31; - float temp_f30; - float temp_f28; - Work3284 *temp_r31; - s32 temp_r30; - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r31 = lbl_1_bss_19C[temp_r30]->data; - temp_f31 = arg0->unk4.x-temp_r31->unk0.x; - temp_f30 = arg0->unk4.z-temp_r31->unk0.z; - temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(temp_f28 < arg0->unk54+50) { - if(0.0f == temp_f28) { - temp_f31 = 0; - temp_f30 = -1; - } else { - temp_f31 /= temp_f28; - temp_f30 /= temp_f28; - } - arg0->unk4.x = temp_r31->unk0.x+(temp_f31*(arg0->unk54+50)); - arg0->unk4.z = temp_r31->unk0.z+(temp_f30*(arg0->unk54+50)); - } - } + float temp_f31; + float temp_f30; + float temp_f28; + Work3284 *temp_r31; + s32 temp_r30; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r31 = lbl_1_bss_19C[temp_r30]->data; + temp_f31 = arg0->unk4.x - temp_r31->unk0.x; + temp_f30 = arg0->unk4.z - temp_r31->unk0.z; + temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (temp_f28 < arg0->unk54 + 50) { + if (0.0f == temp_f28) { + temp_f31 = 0; + temp_f30 = -1; + } + else { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + } + arg0->unk4.x = temp_r31->unk0.x + (temp_f31 * (arg0->unk54 + 50)); + arg0->unk4.z = temp_r31->unk0.z + (temp_f30 * (arg0->unk54 + 50)); + } + } } #include "src/REL/executor.c" void fn_1_40C0(Work8F68 *arg0, omObjData *arg1, s32 arg2) { - float temp_f31; - - s32 temp_r29; - if(arg2 >= 0 && arg0->unkA8 != arg2) { - arg0->unkA8 = arg2; - Hu3DMotionShiftSet(arg1->model[0], arg1->motion[arg0->unkA8], 0, 8 ,0x40000001); - temp_r29 = -1; - temp_f31 = 1; - if(arg0->unkA4 == 1) { - temp_r29 = 9; - } - if(arg0->unkA4 == 0) { - switch(arg0->unkA8) { - case 0: - temp_r29 = 7; - break; - - case 1: - temp_r29 = 7; - temp_f31 = 30.0f/11.0f; - break; - - case 2: - temp_r29 = 8; - break; - } - } - - if(temp_r29 > 0 && arg0->unkAC != temp_r29) { - arg0->unkAC = temp_r29; - Hu3DMotionOverlaySet(arg1->model[0], arg1->motion[arg0->unkAC]); - Hu3DMotionOverlaySpeedSet(arg1->model[0], temp_f31); - - } - } + float temp_f31; + + s32 temp_r29; + if (arg2 >= 0 && arg0->unkA8 != arg2) { + arg0->unkA8 = arg2; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[arg0->unkA8], 0, 8, HU3D_MOTATTR_LOOP); + temp_r29 = -1; + temp_f31 = 1; + if (arg0->unkA4 == 1) { + temp_r29 = 9; + } + if (arg0->unkA4 == 0) { + switch (arg0->unkA8) { + case 0: + temp_r29 = 7; + break; + + case 1: + temp_r29 = 7; + temp_f31 = 30.0f / 11.0f; + break; + + case 2: + temp_r29 = 8; + break; + } + } + + if (temp_r29 > 0 && arg0->unkAC != temp_r29) { + arg0->unkAC = temp_r29; + Hu3DMotionOverlaySet(arg1->model[0], arg1->motion[arg0->unkAC]); + Hu3DMotionOverlaySpeedSet(arg1->model[0], temp_f31); + } + } } void fn_1_4224(Work8F68 *arg0, omObjData *arg1) { - s32 temp_r25; - arg0->unk10 = arg0->unk4; - arg0->unk1C.x = 0; - arg0->unk1C.y = 0; - arg0->unk1C.z = 0; - arg0->unk1C.x = arg0->unkF4/4.0f; - arg0->unk1C.z = (-(float)arg0->unkF8)/4.0f; - temp_r25 = 0; - if((arg0->unkE8 & 0x1) == 0) { - arg0->unk58 = VECMagXZ(&arg0->unk1C); - if(0.5f <= arg0->unk58) { - if(10.0f <= arg0->unk58) { - arg0->unk1C.x /= arg0->unk58; - arg0->unk1C.z /= arg0->unk58; - arg0->unk58 = 10; - arg0->unk1C.x = 10.0f*arg0->unk1C.x; - arg0->unk1C.z = 10.0f*arg0->unk1C.z; - } - arg0->unk50 = fn_1_1E20(arg0->unk50, atan2d(arg0->unk1C.x, arg0->unk1C.z), 0.4f); - if(8.0f <= arg0->unk58) { - temp_r25 = 2; - } else { - temp_r25 = 1; - } - } - VECAdd(&arg0->unk4, &arg0->unk1C, &arg0->unk4); - } - arg0->unk108 = 0; - fn_1_36FC(arg0); - fn_1_386C(arg0); - fn_1_3DCC(arg0); - fn_1_36FC(arg0); - if(arg0->unk108) { - arg0->unk100++; - arg0->unk104++; - } else { - arg0->unk104 = 0; - } - fn_1_2950(arg0); - fn_1_40C0(arg0, arg1, temp_r25); + s32 temp_r25; + arg0->unk10 = arg0->unk4; + arg0->unk1C.x = 0; + arg0->unk1C.y = 0; + arg0->unk1C.z = 0; + arg0->unk1C.x = arg0->unkF4 / 4.0f; + arg0->unk1C.z = (-(float)arg0->unkF8) / 4.0f; + temp_r25 = 0; + if ((arg0->unkE8 & 0x1) == 0) { + arg0->unk58 = VECMagXZ(&arg0->unk1C); + if (0.5f <= arg0->unk58) { + if (10.0f <= arg0->unk58) { + arg0->unk1C.x /= arg0->unk58; + arg0->unk1C.z /= arg0->unk58; + arg0->unk58 = 10; + arg0->unk1C.x = 10.0f * arg0->unk1C.x; + arg0->unk1C.z = 10.0f * arg0->unk1C.z; + } + arg0->unk50 = fn_1_1E20(arg0->unk50, atan2d(arg0->unk1C.x, arg0->unk1C.z), 0.4f); + if (8.0f <= arg0->unk58) { + temp_r25 = 2; + } + else { + temp_r25 = 1; + } + } + VECAdd(&arg0->unk4, &arg0->unk1C, &arg0->unk4); + } + arg0->unk108 = 0; + fn_1_36FC(arg0); + fn_1_386C(arg0); + fn_1_3DCC(arg0); + fn_1_36FC(arg0); + if (arg0->unk108) { + arg0->unk100++; + arg0->unk104++; + } + else { + arg0->unk104 = 0; + } + fn_1_2950(arg0); + fn_1_40C0(arg0, arg1, temp_r25); } Work8F68 *fn_1_4DF0(s32 arg0) { - s32 temp_r31; - Work8F68 *temp_r30; - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = lbl_1_bss_1A4[temp_r31]->data; - if(arg0 == temp_r30->unk110) { - return temp_r30; - } - } - return NULL; + s32 temp_r31; + Work8F68 *temp_r30; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = lbl_1_bss_1A4[temp_r31]->data; + if (arg0 == temp_r30->unk110) { + return temp_r30; + } + } + return NULL; } void fn_1_4E50(Work8F68 *arg0) { - float temp_f31; - float temp_f30; - float temp_f27; - Work8F68 *temp_r31; - - if((arg0->unkE8 & 0x4) && lbl_1_bss_28 < 0) { - temp_r31 = fn_1_4DF0(arg0->unk110 ^ 1); - if(temp_r31->unkE8 & 0x4) { - temp_f31 = arg0->unk4.x-temp_r31->unk4.x; - temp_f30 = arg0->unk4.z-temp_r31->unk4.z; - temp_f27 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if((1.5f*(arg0->unk54+temp_r31->unk54)) >= temp_f27) { - lbl_1_bss_28 = arg0->unk110 & 0x2; - } - } - } + float temp_f31; + float temp_f30; + float temp_f27; + Work8F68 *temp_r31; + + if ((arg0->unkE8 & 0x4) && lbl_1_bss_28 < 0) { + temp_r31 = fn_1_4DF0(arg0->unk110 ^ 1); + if (temp_r31->unkE8 & 0x4) { + temp_f31 = arg0->unk4.x - temp_r31->unk4.x; + temp_f30 = arg0->unk4.z - temp_r31->unk4.z; + temp_f27 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if ((1.5f * (arg0->unk54 + temp_r31->unk54)) >= temp_f27) { + lbl_1_bss_28 = arg0->unk110 & 0x2; + } + } + } } void fn_1_50AC(Work8F68 *arg0, omObjData *arg1) { - float temp_f31; - float temp_f30; - float temp_f27; - Work3284 *temp_r30; - s32 temp_r28; - omObjData *temp_r27; - if(arg0->unkE8 & 0x2) { - return; - } - for(temp_r28=0; temp_r28<4; temp_r28++) { - if((arg0->unk110 & 0x2) != (lbl_1_bss_19C[temp_r28]->work[0] & 0x2)) { - continue; - } - temp_r30 = lbl_1_bss_19C[temp_r28]->data; - if(temp_r30->unk18 & 0x1) { - continue; - } - temp_f31 = temp_r30->unk0.x-arg0->unk4.x; - temp_f30 = temp_r30->unk0.z-arg0->unk4.z; - temp_f27 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(50+arg0->unk54 >= temp_f27) { - omVibrate(arg0->unk114, 12, 6, 6); - arg0->unk9C = 2002; - arg0->unk5C = 0; - arg0->unkE8 |= 0x2; - arg0->unkE8 &= ~0x10; - arg0->unk28 = temp_r30->unk0; - arg0->unkA4 = lbl_1_bss_2C[arg0->unk110 >> 1]++; - arg0->unkA0 = (arg0->unk110 & 0x2)+arg0->unkA4; - Hu3DModelAttrReset(arg1->model[0], 0x40000001); - if(!arg0->unkA4) { - arg0->unkA8 = 5; - Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0, 10, 0); - HuAudFXPlay(1642); - } else { - arg0->unkA8 = 6; - Hu3DMotionShiftSet(arg1->model[0], arg1->motion[6], 0, 10, 0); - HuAudFXPlay(1643); - } - temp_r27 = lbl_1_bss_1A0[arg0->unkA0]; - omSetTra(temp_r27, arg0->unk28.x, arg0->unk28.y, arg0->unk28.z); - Hu3DModelAttrReset(temp_r27->model[0], 1); - - temp_r30->unk18 |= 0x1; - Hu3DModelAttrSet(lbl_1_bss_19C[temp_r28]->model[0], 1); - Hu3DModelAttrReset(lbl_1_bss_19C[temp_r28]->model[1], 1); - break; - } - } + float temp_f31; + float temp_f30; + float temp_f27; + Work3284 *temp_r30; + s32 temp_r28; + omObjData *temp_r27; + if (arg0->unkE8 & 0x2) { + return; + } + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + if ((arg0->unk110 & 0x2) != (lbl_1_bss_19C[temp_r28]->work[0] & 0x2)) { + continue; + } + temp_r30 = lbl_1_bss_19C[temp_r28]->data; + if (temp_r30->unk18 & 0x1) { + continue; + } + temp_f31 = temp_r30->unk0.x - arg0->unk4.x; + temp_f30 = temp_r30->unk0.z - arg0->unk4.z; + temp_f27 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (50 + arg0->unk54 >= temp_f27) { + omVibrate(arg0->unk114, 12, 6, 6); + arg0->unk9C = 2002; + arg0->unk5C = 0; + arg0->unkE8 |= 0x2; + arg0->unkE8 &= ~0x10; + arg0->unk28 = temp_r30->unk0; + arg0->unkA4 = lbl_1_bss_2C[arg0->unk110 >> 1]++; + arg0->unkA0 = (arg0->unk110 & 0x2) + arg0->unkA4; + Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP); + if (!arg0->unkA4) { + arg0->unkA8 = 5; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0, 10, HU3D_MOTATTR_NONE); + HuAudFXPlay(1642); + } + else { + arg0->unkA8 = 6; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[6], 0, 10, HU3D_MOTATTR_NONE); + HuAudFXPlay(1643); + } + temp_r27 = lbl_1_bss_1A0[arg0->unkA0]; + omSetTra(temp_r27, arg0->unk28.x, arg0->unk28.y, arg0->unk28.z); + Hu3DModelAttrReset(temp_r27->model[0], HU3D_ATTR_DISPOFF); + + temp_r30->unk18 |= 0x1; + Hu3DModelAttrSet(lbl_1_bss_19C[temp_r28]->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19C[temp_r28]->model[1], HU3D_ATTR_DISPOFF); + break; + } + } } void fn_1_54BC(Work8F68 *arg0, omObjData *arg1) { - float temp_f31; - float temp_f30; - float temp_f29; - Vec sp14; - Vec sp8; - omObjData *temp_r29; - - arg0->unk5C++; - temp_f31 = arg0->unk5C/50; - if(1.0f <= temp_f31) { - temp_f31 = 1.0f; - } - fn_1_1D18(arg1->model[0], CharModelHookNameGet(arg0->unk118, 8, 0), &sp14); - fn_1_11F4(temp_f31, &arg0->unk28, &sp14, &sp8); - sp8.y += sind(180.0f*temp_f31)*100; - temp_r29 = lbl_1_bss_1A0[arg0->unkA0]; - omSetTra(temp_r29, sp8.x, sp8.y, sp8.z); - (void)temp_f31; - if(80.0f <= arg0->unk5C++) { - arg0->unk9C = 2001; - arg0->unkE8 |= 0x4; - arg0->unkA8 = 0; - omSetTra(temp_r29, 0, 0, 0); - Hu3DModelHookSet(arg1->model[0], CharModelHookNameGet(arg0->unk118, 8, 0), temp_r29->model[0]); - if(arg0->unkA4 == 0) { - arg0->unkAC = 7; - } else { - arg0->unkAC = 9; - } - Hu3DModelAttrSet(arg1->model[0], 0x40000201); - Hu3DMotionSet(arg1->model[0], arg1->motion[0]); - Hu3DMotionOverlaySet(arg1->model[0], arg1->motion[arg0->unkAC]); - } + float temp_f31; + float temp_f30; + float temp_f29; + Vec sp14; + Vec sp8; + omObjData *temp_r29; + + arg0->unk5C++; + temp_f31 = arg0->unk5C / 50; + if (1.0f <= temp_f31) { + temp_f31 = 1.0f; + } + fn_1_1D18(arg1->model[0], CharModelHookNameGet(arg0->unk118, 8, 0), &sp14); + fn_1_11F4(temp_f31, &arg0->unk28, &sp14, &sp8); + sp8.y += sind(180.0f * temp_f31) * 100; + temp_r29 = lbl_1_bss_1A0[arg0->unkA0]; + omSetTra(temp_r29, sp8.x, sp8.y, sp8.z); + (void)temp_f31; + if (80.0f <= arg0->unk5C++) { + arg0->unk9C = 2001; + arg0->unkE8 |= 0x4; + arg0->unkA8 = 0; + omSetTra(temp_r29, 0, 0, 0); + Hu3DModelHookSet(arg1->model[0], CharModelHookNameGet(arg0->unk118, 8, 0), temp_r29->model[0]); + if (arg0->unkA4 == 0) { + arg0->unkAC = 7; + } + else { + arg0->unkAC = 9; + } + Hu3DModelAttrSet(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_OVL_LOOP); + Hu3DMotionSet(arg1->model[0], arg1->motion[0]); + Hu3DMotionOverlaySet(arg1->model[0], arg1->motion[arg0->unkAC]); + } } s32 fn_1_583C(Work8F68 *arg0, s32 arg1) { - s32 temp_r31; - s32 temp_r29; - s32 temp_r27; - s32 temp_r26; - if(arg0->unkE8 & 0x10) { - return arg1; - } - temp_r29 = 0; - temp_r31 = arg1; - if(arg0->unk8C >= 0) { - arg0->unk88 = -1; - temp_r31 = frandmod(lbl_1_bss_190->unk1C); - do { - temp_r29++; - if(lbl_1_bss_190->unk1C <= temp_r29) { - temp_r31 = frandmod(lbl_1_bss_190->unk1C); - } else { - temp_r27 = temp_r31/32; - temp_r26 = temp_r31%32; - if((1 << temp_r26) & arg0->unk94[temp_r27]) { - temp_r31 = (temp_r31+1)%lbl_1_bss_190->unk1C; - } - } - } while(temp_r31 == arg1); - } - - return temp_r31; + s32 temp_r31; + s32 temp_r29; + s32 temp_r27; + s32 temp_r26; + if (arg0->unkE8 & 0x10) { + return arg1; + } + temp_r29 = 0; + temp_r31 = arg1; + if (arg0->unk8C >= 0) { + arg0->unk88 = -1; + temp_r31 = frandmod(lbl_1_bss_190->unk1C); + do { + temp_r29++; + if (lbl_1_bss_190->unk1C <= temp_r29) { + temp_r31 = frandmod(lbl_1_bss_190->unk1C); + } + else { + temp_r27 = temp_r31 / 32; + temp_r26 = temp_r31 % 32; + if ((1 << temp_r26) & arg0->unk94[temp_r27]) { + temp_r31 = (temp_r31 + 1) % lbl_1_bss_190->unk1C; + } + } + } while (temp_r31 == arg1); + } + + return temp_r31; } void fn_1_595C(Work8F68 *arg0, Work8F68 *arg1) { - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - Work3284 *temp_r26; - s32 temp_r24; - Data1340SubStruct *temp_r23; - - if(!(arg0->unkE8 & 0x10)) { - fn_1_2950(arg0); - if(arg0->unkEC >= 0) { - temp_r27 = 0; - temp_r23 = &lbl_1_bss_190->unk20[arg0->unkEC]; - for(temp_r28=0; temp_r28<4; temp_r28++) { - temp_r24 = temp_r23->unk8[temp_r28]; - if(temp_r24 < 0) { - break; - } - if(arg0->unkE8 & 0x2) { - if(temp_r24 == arg1->unkEC) { - temp_r27 = 1; - } - } else { - for(temp_r29=0; temp_r29<4; temp_r29++) { - if((arg0->unk110 & 0x2) == (lbl_1_bss_19C[temp_r29]->work[0] & 0x2)) { - temp_r26 = lbl_1_bss_19C[temp_r29]->data; - if(!(temp_r26->unk18 & 0x1)) { - if(temp_r24 == temp_r26->unk14) { - temp_r27 = 1; - } - } - } - } - } - if(temp_r27 != 0) { - break; - } - } - if(temp_r27 != 0) { - arg0->unkF0 = -1; - arg0->unkE8 |= 0x10; - } - } - } + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + Work3284 *temp_r26; + s32 temp_r24; + Data1340SubStruct *temp_r23; + + if (!(arg0->unkE8 & 0x10)) { + fn_1_2950(arg0); + if (arg0->unkEC >= 0) { + temp_r27 = 0; + temp_r23 = &lbl_1_bss_190->unk20[arg0->unkEC]; + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + temp_r24 = temp_r23->unk8[temp_r28]; + if (temp_r24 < 0) { + break; + } + if (arg0->unkE8 & 0x2) { + if (temp_r24 == arg1->unkEC) { + temp_r27 = 1; + } + } + else { + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if ((arg0->unk110 & 0x2) == (lbl_1_bss_19C[temp_r29]->work[0] & 0x2)) { + temp_r26 = lbl_1_bss_19C[temp_r29]->data; + if (!(temp_r26->unk18 & 0x1)) { + if (temp_r24 == temp_r26->unk14) { + temp_r27 = 1; + } + } + } + } + } + if (temp_r27 != 0) { + break; + } + } + if (temp_r27 != 0) { + arg0->unkF0 = -1; + arg0->unkE8 |= 0x10; + } + } + } } s32 fn_1_5CDC(Work8F68 *arg0) { - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - Work3284 *temp_r27; - s32 temp_r24; - temp_r28 = -1; - temp_r24 = 65535; - arg0->unk88 = -1; - for(temp_r29=0; temp_r29<4; temp_r29++) { - if((arg0->unk110 & 0x2) == (lbl_1_bss_19C[temp_r29]->work[0] & 0x2)) { - temp_r27 = lbl_1_bss_19C[temp_r29]->data; - if(temp_r27->unk18 & 0x1) { - continue; - } - arg0->unkF0 = temp_r27->unk14; - fn_1_2E14(arg0); - if(temp_r24 > arg0->unk78) { - temp_r28 = temp_r27->unk14; - temp_r24 = arg0->unk78; - arg0->unk88 = temp_r29; - } - } - } - temp_r28 = fn_1_583C(arg0, temp_r28); - return temp_r28; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + Work3284 *temp_r27; + s32 temp_r24; + temp_r28 = -1; + temp_r24 = 65535; + arg0->unk88 = -1; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if ((arg0->unk110 & 0x2) == (lbl_1_bss_19C[temp_r29]->work[0] & 0x2)) { + temp_r27 = lbl_1_bss_19C[temp_r29]->data; + if (temp_r27->unk18 & 0x1) { + continue; + } + arg0->unkF0 = temp_r27->unk14; + fn_1_2E14(arg0); + if (temp_r24 > arg0->unk78) { + temp_r28 = temp_r27->unk14; + temp_r24 = arg0->unk78; + arg0->unk88 = temp_r29; + } + } + } + temp_r28 = fn_1_583C(arg0, temp_r28); + return temp_r28; } void fn_1_5F44(Work8F68 *arg0) { - float temp_f31; - float temp_f30; - float temp_f24; - float temp_f23; - - Vec spC4; - Work3284 *sp78; - - Work8F68 *temp_r28; - s32 temp_r18; - if(NULL == arg0->unk0) { - return; - } - temp_r28 = fn_1_4DF0(arg0->unk110^1); - arg0->unk90--; - if(0.0f < arg0->unk90) { - return; - } - if(arg0->unk100 > 30 || arg0->unk10C > 30) { - arg0->unk90 = 30; - if(arg0->unkE8 & 0x2) { - arg0->unk90 *= 2.5f; - } - } - arg0->unk84 -= 1.0f; - if(0.0f > arg0->unk84) { - arg0->unk80 -= 1.0f; - if(0.0f > arg0->unk80) { - arg0->unk80 = ((arg0->unk0->unk4/2)*frandf())+arg0->unk0->unk4; - arg0->unk84 = ((arg0->unk0->unk8/2)*frandf())+arg0->unk0->unk8; - } - } - if(arg0->unkF0 >= 0) { - if(arg0->unkE8 & 0x2) { - if(arg0->unk8C >= 0) { - if(arg0->unkE8 & 0x8) { - arg0->unkF0 = -1; - } - } else { - if(arg0->unkF0 != temp_r28->unkEC) { - arg0->unkF0 = -1; - } - } - } else { - if(arg0->unk88 >= 0) { - sp78 = lbl_1_bss_19C[arg0->unk88]->data; - if(sp78->unk18 & 0x1) { - arg0->unkF0 = -1; - } - } else { - if(arg0->unkE8 & 0x8) { - arg0->unkF0 = -1; - } - } - } - if(arg0->unk100 > 30) { - arg0->unkF0 = -1; - } - if(arg0->unk104 > 30) { - arg0->unkF0 = -1; - } - if(arg0->unk10C > 30) { - arg0->unkF0 = -1; - } - } - temp_r18 = -1; - if(arg0->unkF0 < 0) { - if(arg0->unkE8 & 0x2) { - arg0->unkF0 = fn_1_583C(arg0, temp_r28->unkEC); - } else { - arg0->unkF0 = fn_1_5CDC(arg0); - } - temp_r18 = arg0->unkF0; - arg0->unkE8 &= ~0x8; - fn_1_2E14(arg0); - fn_1_2EEC(arg0); - } - - if((arg0->unkE8 & 0x8) && (arg0->unkE8 & 0x2)) { - spC4 = temp_r28->unk4; - } else { - if(NULL == arg0->unk74) { - if(temp_r18 < 0) { - arg0->unkE8 &= ~0x8; - arg0->unkF0 = frandmod(lbl_1_bss_190->unk1C); - fn_1_2E14(arg0); - fn_1_2EEC(arg0); - return; - } else { - spC4 = lbl_1_bss_190->unk20[temp_r18].unk18; - } - } else { - spC4 = lbl_1_bss_190->unk20[arg0->unk74[arg0->unk7C]].unk18; - } - } - temp_f31 = spC4.x-arg0->unk4.x; - temp_f30 = spC4.z-arg0->unk4.z; - temp_f24 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(10.0f <= temp_f24) { - temp_f31 /= temp_f24; - temp_f30 /= temp_f24; - } else { - temp_f31 = 0; - temp_f30 = 0; - } - if(150.0f > temp_f24) { - fn_1_595C(arg0, temp_r28); - arg0->unk7C++; - if(arg0->unk78 <= arg0->unk7C) { - arg0->unk7C = arg0->unk78-1; - arg0->unkE8 |= 8; - } - } - temp_f23 = arg0->unk0->unk0; - arg0->unkF4 = (72.0f*temp_f31)*temp_f23; - arg0->unkF8 = (72.0f*-temp_f30)*temp_f23; - if(ABS(arg0->unkF4) > 72) { - arg0->unkF4 = ((arg0->unkF4 < 0) ? -1 : 1)*72; - } - if(ABS(arg0->unkF8) > 72) { - arg0->unkF8 = ((arg0->unkF8 < 0) ? -1 : 1)*72; - } + float temp_f31; + float temp_f30; + float temp_f24; + float temp_f23; + + Vec spC4; + Work3284 *sp78; + + Work8F68 *temp_r28; + s32 temp_r18; + if (NULL == arg0->unk0) { + return; + } + temp_r28 = fn_1_4DF0(arg0->unk110 ^ 1); + arg0->unk90--; + if (0.0f < arg0->unk90) { + return; + } + if (arg0->unk100 > 30 || arg0->unk10C > 30) { + arg0->unk90 = 30; + if (arg0->unkE8 & 0x2) { + arg0->unk90 *= 2.5f; + } + } + arg0->unk84 -= 1.0f; + if (0.0f > arg0->unk84) { + arg0->unk80 -= 1.0f; + if (0.0f > arg0->unk80) { + arg0->unk80 = ((arg0->unk0->unk4 / 2) * frandf()) + arg0->unk0->unk4; + arg0->unk84 = ((arg0->unk0->unk8 / 2) * frandf()) + arg0->unk0->unk8; + } + } + if (arg0->unkF0 >= 0) { + if (arg0->unkE8 & 0x2) { + if (arg0->unk8C >= 0) { + if (arg0->unkE8 & 0x8) { + arg0->unkF0 = -1; + } + } + else { + if (arg0->unkF0 != temp_r28->unkEC) { + arg0->unkF0 = -1; + } + } + } + else { + if (arg0->unk88 >= 0) { + sp78 = lbl_1_bss_19C[arg0->unk88]->data; + if (sp78->unk18 & 0x1) { + arg0->unkF0 = -1; + } + } + else { + if (arg0->unkE8 & 0x8) { + arg0->unkF0 = -1; + } + } + } + if (arg0->unk100 > 30) { + arg0->unkF0 = -1; + } + if (arg0->unk104 > 30) { + arg0->unkF0 = -1; + } + if (arg0->unk10C > 30) { + arg0->unkF0 = -1; + } + } + temp_r18 = -1; + if (arg0->unkF0 < 0) { + if (arg0->unkE8 & 0x2) { + arg0->unkF0 = fn_1_583C(arg0, temp_r28->unkEC); + } + else { + arg0->unkF0 = fn_1_5CDC(arg0); + } + temp_r18 = arg0->unkF0; + arg0->unkE8 &= ~0x8; + fn_1_2E14(arg0); + fn_1_2EEC(arg0); + } + + if ((arg0->unkE8 & 0x8) && (arg0->unkE8 & 0x2)) { + spC4 = temp_r28->unk4; + } + else { + if (NULL == arg0->unk74) { + if (temp_r18 < 0) { + arg0->unkE8 &= ~0x8; + arg0->unkF0 = frandmod(lbl_1_bss_190->unk1C); + fn_1_2E14(arg0); + fn_1_2EEC(arg0); + return; + } + else { + spC4 = lbl_1_bss_190->unk20[temp_r18].unk18; + } + } + else { + spC4 = lbl_1_bss_190->unk20[arg0->unk74[arg0->unk7C]].unk18; + } + } + temp_f31 = spC4.x - arg0->unk4.x; + temp_f30 = spC4.z - arg0->unk4.z; + temp_f24 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (10.0f <= temp_f24) { + temp_f31 /= temp_f24; + temp_f30 /= temp_f24; + } + else { + temp_f31 = 0; + temp_f30 = 0; + } + if (150.0f > temp_f24) { + fn_1_595C(arg0, temp_r28); + arg0->unk7C++; + if (arg0->unk78 <= arg0->unk7C) { + arg0->unk7C = arg0->unk78 - 1; + arg0->unkE8 |= 8; + } + } + temp_f23 = arg0->unk0->unk0; + arg0->unkF4 = (72.0f * temp_f31) * temp_f23; + arg0->unkF8 = (72.0f * -temp_f30) * temp_f23; + if (ABS(arg0->unkF4) > 72) { + arg0->unkF4 = ((arg0->unkF4 < 0) ? -1 : 1) * 72; + } + if (ABS(arg0->unkF8) > 72) { + arg0->unkF8 = ((arg0->unkF8 < 0) ? -1 : 1) * 72; + } } void fn_1_7098(s32 arg0, float *arg1) { - Bss130Struct *temp_r30; - Hu3DCameraViewportSet(lbl_1_data_FEC[arg0], arg1[0], arg1[1], arg1[2], arg1[3], 0, 1); - Hu3DCameraScissorSet(lbl_1_data_FEC[arg0], arg1[0], arg1[1], arg1[2], arg1[3]); - temp_r30 = &lbl_1_bss_130[arg0]; - temp_r30->unk8 = 0.9f*(arg1[0]+(arg1[2]/2)); - temp_r30->unkC = arg1[1]+(arg1[3]/2); - temp_r30->unk10 = arg1[2]/316; - temp_r30->unk14 = arg1[3]/236; - + Bss130Struct *temp_r30; + Hu3DCameraViewportSet(lbl_1_data_FEC[arg0], arg1[0], arg1[1], arg1[2], arg1[3], 0, 1); + Hu3DCameraScissorSet(lbl_1_data_FEC[arg0], arg1[0], arg1[1], arg1[2], arg1[3]); + temp_r30 = &lbl_1_bss_130[arg0]; + temp_r30->unk8 = 0.9f * (arg1[0] + (arg1[2] / 2)); + temp_r30->unkC = arg1[1] + (arg1[3] / 2); + temp_r30->unk10 = arg1[2] / 316; + temp_r30->unk14 = arg1[3] / 236; } void fn_1_7D38(omObjData *object); void fn_1_71F0(omObjData *object) { - Work8F68 *temp_r31; - s32 temp_r29; - temp_r31 = object->data; - - if(lbl_1_bss_1AC->work[0] == 1007) { - temp_r31->unkE8 &= ~0x1; - espDispOff(temp_r31->unkB4); - for(temp_r29=0; temp_r29<4; temp_r29++) { - espDispOff(temp_r31->unkB8[temp_r29]); - espDispOff(temp_r31->unkC8[temp_r29][0]); - espDispOff(temp_r31->unkC8[temp_r29][1]); - } - if(temp_r31->unk9C == 2001) { - temp_r31->unk9C = 2003; - fn_1_40C0(temp_r31, object, 0); - if(lbl_1_bss_28 == (temp_r31->unk110 & 0x2)) { - GWPlayerCoinWinSet(temp_r31->unk114, 10); - } - object->func = fn_1_7D38; - return; - } - - } - if(GWPlayerCfg[temp_r31->unk114].iscom) { - temp_r31->unkF4 = 0; - temp_r31->unkF8 = 0; - temp_r31->unkFC = 0; - fn_1_5F44(temp_r31); - } else { - temp_r31->unkF4 = HuPadStkX[temp_r31->unk11C]; - temp_r31->unkF8 = HuPadStkY[temp_r31->unk11C]; - temp_r31->unkFC = HuPadBtnDown[temp_r31->unk11C]; - } - if(lbl_1_bss_1AC->work[0] < 1007 && (temp_r31->unkFC & (PAD_BUTTON_X|PAD_BUTTON_Y))) { - if(temp_r31->unkE8 & 0x1) { - temp_r31->unkE8 &= ~0x1; - espDispOff(temp_r31->unkB4); - for(temp_r29=0; temp_r29<4; temp_r29++) { - espDispOff(temp_r31->unkB8[temp_r29]); - espDispOff(temp_r31->unkC8[temp_r29][0]); - espDispOff(temp_r31->unkC8[temp_r29][1]); - } - } else { - temp_r31->unkE8 |= 0x1; - espDispOn(temp_r31->unkB4); - for(temp_r29=0; temp_r29<4; temp_r29++) { - espDispOn(temp_r31->unkB8[temp_r29]); - } - } - } - switch(temp_r31->unk9C) { - case 2001: - fn_1_4224(temp_r31, object); - fn_1_50AC(temp_r31, object); - fn_1_4E50(temp_r31); - break; - - case 2002: - fn_1_54BC(temp_r31, object); - break; - - default: - OSReport("*** player mode error(%d)!!\n", temp_r31->unk9C); - break; - } - if(temp_r31->unk104 == 0 && temp_r31->unk10C == 0) { - temp_r31->unk100 = 0; - } - lbl_1_bss_C8[temp_r31->unk110].x = temp_r31->unk4.x+(lbl_1_bss_120*sind(lbl_1_bss_11C)); - lbl_1_bss_C8[temp_r31->unk110].y = temp_r31->unk4.y+lbl_1_bss_118; - lbl_1_bss_C8[temp_r31->unk110].z = temp_r31->unk4.z+(lbl_1_bss_120*cosd(lbl_1_bss_11C)); - lbl_1_bss_68[temp_r31->unk110].x = temp_r31->unk4.x; - lbl_1_bss_68[temp_r31->unk110].y = temp_r31->unk4.y; - lbl_1_bss_68[temp_r31->unk110].z = temp_r31->unk4.z; - Hu3DCameraPosSetV(lbl_1_data_FEC[temp_r31->unk110], &lbl_1_bss_C8[temp_r31->unk110], &lbl_1_data_FE0, &lbl_1_bss_68[temp_r31->unk110]); - temp_r31->unk60 = temp_r31->unk50; - omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z); - omSetRot(object, 0, temp_r31->unk50, 0); - + Work8F68 *temp_r31; + s32 temp_r29; + temp_r31 = object->data; + + if (lbl_1_bss_1AC->work[0] == 1007) { + temp_r31->unkE8 &= ~0x1; + espDispOff(temp_r31->unkB4); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + espDispOff(temp_r31->unkB8[temp_r29]); + espDispOff(temp_r31->unkC8[temp_r29][0]); + espDispOff(temp_r31->unkC8[temp_r29][1]); + } + if (temp_r31->unk9C == 2001) { + temp_r31->unk9C = 2003; + fn_1_40C0(temp_r31, object, 0); + if (lbl_1_bss_28 == (temp_r31->unk110 & 0x2)) { + GWPlayerCoinWinSet(temp_r31->unk114, 10); + } + object->func = fn_1_7D38; + return; + } + } + if (GWPlayerCfg[temp_r31->unk114].iscom) { + temp_r31->unkF4 = 0; + temp_r31->unkF8 = 0; + temp_r31->unkFC = 0; + fn_1_5F44(temp_r31); + } + else { + temp_r31->unkF4 = HuPadStkX[temp_r31->unk11C]; + temp_r31->unkF8 = HuPadStkY[temp_r31->unk11C]; + temp_r31->unkFC = HuPadBtnDown[temp_r31->unk11C]; + } + if (lbl_1_bss_1AC->work[0] < 1007 && (temp_r31->unkFC & (PAD_BUTTON_X | PAD_BUTTON_Y))) { + if (temp_r31->unkE8 & 0x1) { + temp_r31->unkE8 &= ~0x1; + espDispOff(temp_r31->unkB4); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + espDispOff(temp_r31->unkB8[temp_r29]); + espDispOff(temp_r31->unkC8[temp_r29][0]); + espDispOff(temp_r31->unkC8[temp_r29][1]); + } + } + else { + temp_r31->unkE8 |= 0x1; + espDispOn(temp_r31->unkB4); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + espDispOn(temp_r31->unkB8[temp_r29]); + } + } + } + switch (temp_r31->unk9C) { + case 2001: + fn_1_4224(temp_r31, object); + fn_1_50AC(temp_r31, object); + fn_1_4E50(temp_r31); + break; + + case 2002: + fn_1_54BC(temp_r31, object); + break; + + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk9C); + break; + } + if (temp_r31->unk104 == 0 && temp_r31->unk10C == 0) { + temp_r31->unk100 = 0; + } + lbl_1_bss_C8[temp_r31->unk110].x = temp_r31->unk4.x + (lbl_1_bss_120 * sind(lbl_1_bss_11C)); + lbl_1_bss_C8[temp_r31->unk110].y = temp_r31->unk4.y + lbl_1_bss_118; + lbl_1_bss_C8[temp_r31->unk110].z = temp_r31->unk4.z + (lbl_1_bss_120 * cosd(lbl_1_bss_11C)); + lbl_1_bss_68[temp_r31->unk110].x = temp_r31->unk4.x; + lbl_1_bss_68[temp_r31->unk110].y = temp_r31->unk4.y; + lbl_1_bss_68[temp_r31->unk110].z = temp_r31->unk4.z; + Hu3DCameraPosSetV(lbl_1_data_FEC[temp_r31->unk110], &lbl_1_bss_C8[temp_r31->unk110], &lbl_1_data_FE0, &lbl_1_bss_68[temp_r31->unk110]); + temp_r31->unk60 = temp_r31->unk50; + omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z); + omSetRot(object, 0, temp_r31->unk50, 0); } void fn_1_7D38(omObjData *object) { - float temp_f27; - - Mtx sp74; - Vec sp8; + float temp_f27; - Work8F68 *temp_r31 = object->data; + Mtx sp74; + Vec sp8; - switch(temp_r31->unk9C) { - case 2000: - if(lbl_1_bss_1AC->work[0] >= 1006) { - temp_r31->unk9C++; - object->func = fn_1_71F0; - } - break; - - case 2003: - if(lbl_1_bss_1AC->work[0] == 1010) { - Hu3DMotionOverlayReset(object->model[0]); - if(lbl_1_bss_28 >= 0 && (temp_r31->unk110 == lbl_1_bss_28 || temp_r31->unk110 == (lbl_1_bss_28^1))) { - temp_r31->unk9C = 2004; - temp_r31->unk5C = 0; - temp_r31->unkE8 |= 0x20; - fn_1_1D18(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), &temp_r31->unk28); - Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), sp74); - Hu3DMtxRotGet(sp74, &temp_r31->unk40); - Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0)); - omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk28.x, temp_r31->unk28.y , temp_r31->unk28.z); - if(temp_r31->unkA4 == 0) { - temp_r31->unk4C = lbl_1_bss_110; - Hu3DMotionSet(object->model[0], object->motion[5]); - } else { - temp_r31->unk4C = lbl_1_bss_110+180; - temp_r31->unk40.y = lbl_1_bss_110+180; - Hu3DMotionSet(object->model[0], object->motion[6]); - } - Hu3DMotionTimeSet(object->model[0], Hu3DMotionMaxTimeGet(object->model[0])-1); - Hu3DModelAttrReset(object->model[0], 0x40000003); - Hu3DModelAttrSet(object->model[0], 0x40000004); - temp_r31->unk40.x = 0; - temp_r31->unk40.z = 0; - omSetRot(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); - temp_r31->unk4C = fmod(temp_r31->unk4C-temp_r31->unk40.y, 360); - if(0.0f > temp_r31->unk4C) { - temp_r31->unk4C += 360.0f; - } - if(180.0f < temp_r31->unk4C) { - temp_r31->unk4C -= 360.0f; - } - temp_r31->unk4C /= 60.0f; - } else { - temp_r31->unk9C = 2008; - Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, 0); - } - } - if(lbl_1_bss_1AC->work[0] == 1012) { - temp_r31->unk9C = 2008; - Hu3DMotionOverlayReset(object->model[0]); - Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, 0); - } - if(temp_r31->unk9C == 2008 && temp_r31->unkA0 >= 0) { - Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], 1); - fn_1_1D18(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), &sp8); - temp_r31->unk70 = Hu3DParManLink(lbl_1_bss_8, &lbl_1_data_13E8); - temp_r31->unk6C = 0; - Hu3DParManPosSet(temp_r31->unk70, sp8.x, sp8.y, sp8.z); - Hu3DParManAttrReset(temp_r31->unk70, 1); - Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(temp_r31->unk70), 1); - Hu3DModelLayerSet(Hu3DParManModelIDGet(temp_r31->unk70), 6); - } - break; - - case 2004: - temp_r31->unk5C++; - fn_1_11F4(temp_r31->unk5C/60, &temp_r31->unk28, &lbl_1_bss_F8[temp_r31->unkA4], &temp_r31->unk34); - temp_r31->unk34.y += sind(temp_r31->unk5C*3.0f)*100; - omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z); - temp_r31->unk40.y += temp_r31->unk4C; - omSetRot(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); - if(60.0f <= temp_r31->unk5C) { - temp_r31->unk9C++; - temp_r31->unk5C = 0; - temp_r31->unk28 = temp_r31->unk34; - if(temp_r31->unkA4 == 1) { - lbl_1_bss_F8[1].x -= 10*sind(lbl_1_bss_110); - lbl_1_bss_F8[1].z -= 10*cosd(lbl_1_bss_110); - } else { - sp8.x = (30*sind(lbl_1_bss_110))+temp_r31->unk34.x; - sp8.y = 30+temp_r31->unk34.y; - sp8.z = (30*cosd(lbl_1_bss_110))+temp_r31->unk34.z; - Hu3DModelTPLvlSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0); - Hu3DModelPosSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], sp8.x, sp8.y, sp8.z); - Hu3DModelRotSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0, lbl_1_bss_110, 0); - Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 1); - Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0x40000002); - Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0x40000001); - } - } - break; - - case 2005: - temp_r31->unk5C++; - fn_1_11F4(temp_r31->unk5C/60, &temp_r31->unk28, &lbl_1_bss_F8[temp_r31->unkA4], &temp_r31->unk34); - omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z); - if(temp_r31->unkA4 == 0) { - temp_f27 = temp_r31->unk5C/20; - if(1.0f <= temp_f27) { - temp_f27 = 1.0f; - } - Hu3DModelTPLvlSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], temp_f27); - } - if(60.0f <= temp_r31->unk5C) { - temp_r31->unk9C++; - temp_r31->unk5C = 0; - if(temp_r31->unkA4 == 1) { - Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], 0x40000003); - Hu3DMotionSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], lbl_1_bss_1A0[temp_r31->unkA0]->motion[0]); - HuAudFXPlay(1649); - } - } - - break; - - - case 2006: - temp_r31->unk5C++; - if(20.0f == temp_r31->unk5C) { - temp_r31->unk60 = temp_r31->unk64; - if(temp_r31->unkA4 == 0) { - Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], 0x40000003); - Hu3DMotionSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], lbl_1_bss_1A0[temp_r31->unkA0]->motion[0]); - HuAudFXPlay(1648); - } - } - if(30.0f < temp_r31->unk5C && Hu3DMotionEndCheck(lbl_1_bss_1A0[temp_r31->unkA0 & 0x2]->model[0])) { - temp_r31->unk9C++; - lbl_1_bss_1C++; - } - break; - - case 2007: - if((temp_r31->unk110 & 0x1) < lbl_1_bss_20) { - temp_r31->unk9C = 2008; - Hu3DModelAttrReset(object->model[0], 0x40000004); - Hu3DMotionShiftSet(object->model[0], object->motion[3], 0, 8, 0); - } - break; - - case 2008: - if(temp_r31->unk70 >= 0) { - temp_r31->unk6C++; - if(10.0f == temp_r31->unk6C) { - Hu3DParManAttrSet(temp_r31->unk70, 1); - } - } - break; - - default: - OSReport("*** player mode error(%d)!!\n", temp_r31->unk9C); - break; - - } - if(temp_r31->unk9C >= 2005 && (temp_r31->unkE8 & 0x20)) { - temp_r31->unk68 += 4.0f; - sp8 = temp_r31->unk34; - sp8.y += sind(temp_r31->unk68)*5.0; - omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], sp8.x, sp8.y, sp8.z); - sp8.x = temp_r31->unk34.x+(30.0*sind(lbl_1_bss_110)); - sp8.y = (temp_r31->unk34.y+30)+(5.0*sind(temp_r31->unk68)); - sp8.z = temp_r31->unk34.z+(30.0*cosd(lbl_1_bss_110)); - Hu3DModelPosSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], sp8.x, sp8.y, sp8.z); - } - if(temp_r31->unk9C >= 2003) { - temp_r31->unk50 = fn_1_1E20(temp_r31->unk50, temp_r31->unk60, 0.1f); - } - omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z); - omSetRot(object, 0, temp_r31->unk50, 0); + Work8F68 *temp_r31 = object->data; + + switch (temp_r31->unk9C) { + case 2000: + if (lbl_1_bss_1AC->work[0] >= 1006) { + temp_r31->unk9C++; + object->func = fn_1_71F0; + } + break; + + case 2003: + if (lbl_1_bss_1AC->work[0] == 1010) { + Hu3DMotionOverlayReset(object->model[0]); + if (lbl_1_bss_28 >= 0 && (temp_r31->unk110 == lbl_1_bss_28 || temp_r31->unk110 == (lbl_1_bss_28 ^ 1))) { + temp_r31->unk9C = 2004; + temp_r31->unk5C = 0; + temp_r31->unkE8 |= 0x20; + fn_1_1D18(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), &temp_r31->unk28); + Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), sp74); + Hu3DMtxRotGet(sp74, &temp_r31->unk40); + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0)); + omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk28.x, temp_r31->unk28.y, temp_r31->unk28.z); + if (temp_r31->unkA4 == 0) { + temp_r31->unk4C = lbl_1_bss_110; + Hu3DMotionSet(object->model[0], object->motion[5]); + } + else { + temp_r31->unk4C = lbl_1_bss_110 + 180; + temp_r31->unk40.y = lbl_1_bss_110 + 180; + Hu3DMotionSet(object->model[0], object->motion[6]); + } + Hu3DMotionTimeSet(object->model[0], Hu3DMotionMaxTimeGet(object->model[0]) - 1); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_REV); + temp_r31->unk40.x = 0; + temp_r31->unk40.z = 0; + omSetRot(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + temp_r31->unk4C = fmod(temp_r31->unk4C - temp_r31->unk40.y, 360); + if (0.0f > temp_r31->unk4C) { + temp_r31->unk4C += 360.0f; + } + if (180.0f < temp_r31->unk4C) { + temp_r31->unk4C -= 360.0f; + } + temp_r31->unk4C /= 60.0f; + } + else { + temp_r31->unk9C = 2008; + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, HU3D_MOTATTR_NONE); + } + } + if (lbl_1_bss_1AC->work[0] == 1012) { + temp_r31->unk9C = 2008; + Hu3DMotionOverlayReset(object->model[0]); + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, HU3D_MOTATTR_NONE); + } + if (temp_r31->unk9C == 2008 && temp_r31->unkA0 >= 0) { + Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], HU3D_ATTR_DISPOFF); + fn_1_1D18(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), &sp8); + temp_r31->unk70 = Hu3DParManLink(lbl_1_bss_8, &lbl_1_data_13E8); + temp_r31->unk6C = 0; + Hu3DParManPosSet(temp_r31->unk70, sp8.x, sp8.y, sp8.z); + Hu3DParManAttrReset(temp_r31->unk70, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(temp_r31->unk70), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(temp_r31->unk70), 6); + } + break; + + case 2004: + temp_r31->unk5C++; + fn_1_11F4(temp_r31->unk5C / 60, &temp_r31->unk28, &lbl_1_bss_F8[temp_r31->unkA4], &temp_r31->unk34); + temp_r31->unk34.y += sind(temp_r31->unk5C * 3.0f) * 100; + omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z); + temp_r31->unk40.y += temp_r31->unk4C; + omSetRot(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z); + if (60.0f <= temp_r31->unk5C) { + temp_r31->unk9C++; + temp_r31->unk5C = 0; + temp_r31->unk28 = temp_r31->unk34; + if (temp_r31->unkA4 == 1) { + lbl_1_bss_F8[1].x -= 10 * sind(lbl_1_bss_110); + lbl_1_bss_F8[1].z -= 10 * cosd(lbl_1_bss_110); + } + else { + sp8.x = (30 * sind(lbl_1_bss_110)) + temp_r31->unk34.x; + sp8.y = 30 + temp_r31->unk34.y; + sp8.z = (30 * cosd(lbl_1_bss_110)) + temp_r31->unk34.z; + Hu3DModelTPLvlSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0); + Hu3DModelPosSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], sp8.x, sp8.y, sp8.z); + Hu3DModelRotSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0, lbl_1_bss_110, 0); + Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], HU3D_MOTATTR_LOOP); + } + } + break; + + case 2005: + temp_r31->unk5C++; + fn_1_11F4(temp_r31->unk5C / 60, &temp_r31->unk28, &lbl_1_bss_F8[temp_r31->unkA4], &temp_r31->unk34); + omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z); + if (temp_r31->unkA4 == 0) { + temp_f27 = temp_r31->unk5C / 20; + if (1.0f <= temp_f27) { + temp_f27 = 1.0f; + } + Hu3DModelTPLvlSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], temp_f27); + } + if (60.0f <= temp_r31->unk5C) { + temp_r31->unk9C++; + temp_r31->unk5C = 0; + if (temp_r31->unkA4 == 1) { + Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], lbl_1_bss_1A0[temp_r31->unkA0]->motion[0]); + HuAudFXPlay(1649); + } + } + + break; + + case 2006: + temp_r31->unk5C++; + if (20.0f == temp_r31->unk5C) { + temp_r31->unk60 = temp_r31->unk64; + if (temp_r31->unkA4 == 0) { + Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], lbl_1_bss_1A0[temp_r31->unkA0]->motion[0]); + HuAudFXPlay(1648); + } + } + if (30.0f < temp_r31->unk5C && Hu3DMotionEndCheck(lbl_1_bss_1A0[temp_r31->unkA0 & 0x2]->model[0])) { + temp_r31->unk9C++; + lbl_1_bss_1C++; + } + break; + + case 2007: + if ((temp_r31->unk110 & 0x1) < lbl_1_bss_20) { + temp_r31->unk9C = 2008; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_REV); + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0, 8, HU3D_MOTATTR_NONE); + } + break; + + case 2008: + if (temp_r31->unk70 >= 0) { + temp_r31->unk6C++; + if (10.0f == temp_r31->unk6C) { + Hu3DParManAttrSet(temp_r31->unk70, 1); + } + } + break; + + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk9C); + break; + } + if (temp_r31->unk9C >= 2005 && (temp_r31->unkE8 & 0x20)) { + temp_r31->unk68 += 4.0f; + sp8 = temp_r31->unk34; + sp8.y += sind(temp_r31->unk68) * 5.0; + omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], sp8.x, sp8.y, sp8.z); + sp8.x = temp_r31->unk34.x + (30.0 * sind(lbl_1_bss_110)); + sp8.y = (temp_r31->unk34.y + 30) + (5.0 * sind(temp_r31->unk68)); + sp8.z = temp_r31->unk34.z + (30.0 * cosd(lbl_1_bss_110)); + Hu3DModelPosSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], sp8.x, sp8.y, sp8.z); + } + if (temp_r31->unk9C >= 2003) { + temp_r31->unk50 = fn_1_1E20(temp_r31->unk50, temp_r31->unk60, 0.1f); + } + omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z); + omSetRot(object, 0, temp_r31->unk50, 0); } void fn_1_8F68(omObjData *object) { - Work8F68 *temp_r31; - s32 temp_r29; - s32 temp_r28; - Data1340SubStruct *temp_r23; - - temp_r31 = object->data; - temp_r31->unk118 = GWPlayerCfg[temp_r31->unk114].character; - temp_r31->unk11C = GWPlayerCfg[temp_r31->unk114].pad_idx; - temp_r31->unk9C = 2000; - temp_r31->unkA0 = -1; - temp_r31->unkA4 = -1; - temp_r31->unkE8 = 0; - temp_r31->unk70 = -1; - temp_r31->unk50 = 0; - temp_r31->unk68 = 0; - temp_r31->unkA8 = 0; - temp_r31->unkAC = -1; - temp_r31->unk54 = 65; - temp_r31->unk0 = 0; - temp_r31->unk80 = 0; - temp_r31->unk84 = 0; - temp_r31->unk74 = 0; - temp_r31->unk78 = 65535; - temp_r31->unk7C = 0; - temp_r31->unk88 = -1; - temp_r31->unk8C = -1; - temp_r31->unk90 = 0; - temp_r31->unkEC = -1; - temp_r31->unkF0 = -1; - temp_r31->unk100 = 0; - temp_r31->unk104 = 0; - temp_r31->unk10C = 0; - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_r31->unk94[temp_r29] = 0; - } - object->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk118], 8); - CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk118], 0); - for(temp_r29=0; temp_r29<10; temp_r29++) { - object->motion[temp_r29] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk118], lbl_1_data_1150[temp_r31->unk118][temp_r29]); - CharModelMotionSet(lbl_1_data_0[temp_r31->unk118], object->motion[temp_r29]); - } - Hu3DModelCameraSet(object->model[0], 15); - Hu3DModelAttrSet(object->model[0], 1); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelLayerSet(object->model[0], 2); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelShadowSet(object->model[0]); - temp_r31->unk4.x = 0; - temp_r31->unk4.y = 0; - temp_r31->unk4.z = 0; - temp_r28 = temp_r31->unk110; - if(temp_r28 >= 2) { - temp_r28 ^= 1; - } - temp_r28 = (temp_r28+lbl_1_bss_34)%4; - temp_r23 = fn_1_2614(1 << temp_r28); - if(NULL != temp_r23) { - temp_r31->unk4 = temp_r23->unk18; - } - omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z); - omSetRot(object, 0, temp_r31->unk50, 0); - lbl_1_bss_98[temp_r31->unk110].x = temp_r31->unk4.x; - lbl_1_bss_98[temp_r31->unk110].y = temp_r31->unk4.y+450; - lbl_1_bss_98[temp_r31->unk110].z = temp_r31->unk4.z+850; - lbl_1_bss_38[temp_r31->unk110].x = temp_r31->unk4.x; - lbl_1_bss_38[temp_r31->unk110].y = temp_r31->unk4.y; - lbl_1_bss_38[temp_r31->unk110].z = temp_r31->unk4.z; - temp_r31->unkB0 = espEntry(lbl_1_data_12D0[temp_r31->unk110], 134, 0); - espDrawNoSet(temp_r31->unkB0, 0); - lbl_1_bss_130[temp_r31->unk110].unk0 = temp_r31->unkB0; - espDispOff(temp_r31->unkB0); - espZRotSet(temp_r31->unkB0, (temp_r31->unk110 & 0x1) ? 0.0f : 180.0f); - temp_r31->unkB4 = espEntry(0x3C0031, 133, 0); - espDrawNoSet(temp_r31->unkB4, 0); - espDispOff(temp_r31->unkB4); - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r31->unkB8[temp_r29] = espEntry(lbl_1_data_1290[GWPlayerCfg[temp_r29].character], (temp_r31->unk114 == temp_r29) ? 129 : 130, 0); - espDrawNoSet(temp_r31->unkB8[temp_r29], 0); - espDispOff(temp_r31->unkB8[temp_r29]); - temp_r31->unkC8[temp_r29][0] = espEntry(lbl_1_data_1310[temp_r29], 128, 0); - espDrawNoSet(temp_r31->unkC8[temp_r29][0], 0); - espDispOff(temp_r31->unkC8[temp_r29][0]); - temp_r31->unkC8[temp_r29][1] = espEntry(0x3C003C, 128, 0); - espDrawNoSet(temp_r31->unkC8[temp_r29][1], 0); - espDispOff(temp_r31->unkC8[temp_r29][1]); - } - if(GWPlayerCfg[temp_r31->unk114].iscom) { - switch(GWPlayerCfg[temp_r31->unk114].diff) { - case 0: - temp_r31->unk0 = &lbl_1_data_13A8; - break; - - case 1: - temp_r31->unk0 = &lbl_1_data_13B8; - break; - - case 2: - temp_r31->unk0 = &lbl_1_data_13C8; - break; - - case 3: - default: - temp_r31->unk0 = &lbl_1_data_13D8; - break; - } - temp_r31->unk80 = frandf()*temp_r31->unk0->unk4; - temp_r31->unk8C = temp_r31->unk0->unkC+((temp_r31->unk0->unkC/2.0f)*frandf()); - } - CharModelVoiceEnableSet(temp_r31->unk118, object->motion[4], 0); - fn_1_2950(temp_r31); - Hu3DModelAttrReset(object->model[0], 1); - CharModelLayerSetAll2(5); - CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk118]); - object->func = fn_1_7D38; + Work8F68 *temp_r31; + s32 temp_r29; + s32 temp_r28; + Data1340SubStruct *temp_r23; + + temp_r31 = object->data; + temp_r31->unk118 = GWPlayerCfg[temp_r31->unk114].character; + temp_r31->unk11C = GWPlayerCfg[temp_r31->unk114].pad_idx; + temp_r31->unk9C = 2000; + temp_r31->unkA0 = -1; + temp_r31->unkA4 = -1; + temp_r31->unkE8 = 0; + temp_r31->unk70 = -1; + temp_r31->unk50 = 0; + temp_r31->unk68 = 0; + temp_r31->unkA8 = 0; + temp_r31->unkAC = -1; + temp_r31->unk54 = 65; + temp_r31->unk0 = 0; + temp_r31->unk80 = 0; + temp_r31->unk84 = 0; + temp_r31->unk74 = 0; + temp_r31->unk78 = 65535; + temp_r31->unk7C = 0; + temp_r31->unk88 = -1; + temp_r31->unk8C = -1; + temp_r31->unk90 = 0; + temp_r31->unkEC = -1; + temp_r31->unkF0 = -1; + temp_r31->unk100 = 0; + temp_r31->unk104 = 0; + temp_r31->unk10C = 0; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_r31->unk94[temp_r29] = 0; + } + object->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk118], 8); + CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk118], 0); + for (temp_r29 = 0; temp_r29 < 10; temp_r29++) { + object->motion[temp_r29] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk118], lbl_1_data_1150[temp_r31->unk118][temp_r29]); + CharModelMotionSet(lbl_1_data_0[temp_r31->unk118], object->motion[temp_r29]); + } + Hu3DModelCameraSet(object->model[0], 15); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelShadowSet(object->model[0]); + temp_r31->unk4.x = 0; + temp_r31->unk4.y = 0; + temp_r31->unk4.z = 0; + temp_r28 = temp_r31->unk110; + if (temp_r28 >= 2) { + temp_r28 ^= 1; + } + temp_r28 = (temp_r28 + lbl_1_bss_34) % 4; + temp_r23 = fn_1_2614(1 << temp_r28); + if (NULL != temp_r23) { + temp_r31->unk4 = temp_r23->unk18; + } + omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z); + omSetRot(object, 0, temp_r31->unk50, 0); + lbl_1_bss_98[temp_r31->unk110].x = temp_r31->unk4.x; + lbl_1_bss_98[temp_r31->unk110].y = temp_r31->unk4.y + 450; + lbl_1_bss_98[temp_r31->unk110].z = temp_r31->unk4.z + 850; + lbl_1_bss_38[temp_r31->unk110].x = temp_r31->unk4.x; + lbl_1_bss_38[temp_r31->unk110].y = temp_r31->unk4.y; + lbl_1_bss_38[temp_r31->unk110].z = temp_r31->unk4.z; + temp_r31->unkB0 = espEntry(lbl_1_data_12D0[temp_r31->unk110], 134, 0); + espDrawNoSet(temp_r31->unkB0, 0); + lbl_1_bss_130[temp_r31->unk110].unk0 = temp_r31->unkB0; + espDispOff(temp_r31->unkB0); + espZRotSet(temp_r31->unkB0, (temp_r31->unk110 & 0x1) ? 0.0f : 180.0f); + temp_r31->unkB4 = espEntry(DATA_MAKE_NUM(DATADIR_M429, 0x31), 133, 0); + espDrawNoSet(temp_r31->unkB4, 0); + espDispOff(temp_r31->unkB4); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r31->unkB8[temp_r29] = espEntry(lbl_1_data_1290[GWPlayerCfg[temp_r29].character], (temp_r31->unk114 == temp_r29) ? 129 : 130, 0); + espDrawNoSet(temp_r31->unkB8[temp_r29], 0); + espDispOff(temp_r31->unkB8[temp_r29]); + temp_r31->unkC8[temp_r29][0] = espEntry(lbl_1_data_1310[temp_r29], 128, 0); + espDrawNoSet(temp_r31->unkC8[temp_r29][0], 0); + espDispOff(temp_r31->unkC8[temp_r29][0]); + temp_r31->unkC8[temp_r29][1] = espEntry(DATA_MAKE_NUM(DATADIR_M429, 0x3C), 128, 0); + espDrawNoSet(temp_r31->unkC8[temp_r29][1], 0); + espDispOff(temp_r31->unkC8[temp_r29][1]); + } + if (GWPlayerCfg[temp_r31->unk114].iscom) { + switch (GWPlayerCfg[temp_r31->unk114].diff) { + case 0: + temp_r31->unk0 = &lbl_1_data_13A8; + break; + + case 1: + temp_r31->unk0 = &lbl_1_data_13B8; + break; + + case 2: + temp_r31->unk0 = &lbl_1_data_13C8; + break; + + case 3: + default: + temp_r31->unk0 = &lbl_1_data_13D8; + break; + } + temp_r31->unk80 = frandf() * temp_r31->unk0->unk4; + temp_r31->unk8C = temp_r31->unk0->unkC + ((temp_r31->unk0->unkC / 2.0f) * frandf()); + } + CharModelVoiceEnableSet(temp_r31->unk118, object->motion[4], 0); + fn_1_2950(temp_r31); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + CharModelLayerSetAll2(5); + CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk118]); + object->func = fn_1_7D38; } -void fn_1_99EC(omObjData *object) -{ - -} +void fn_1_99EC(omObjData *object) { } void fn_1_99F0(omObjData *object) { - s32 temp_r30; - s32 *temp_r29; - temp_r29 = &lbl_1_data_12E0[object->work[0]][0]; - for(temp_r30=0; temp_r30<2; temp_r30++) { - object->model[temp_r30] = Hu3DModelCreateFile(*temp_r29++); - Hu3DModelCameraSet(object->model[temp_r30], 15); - Hu3DModelAttrSet(object->model[temp_r30], 1); - Hu3DModelAttrSet(object->model[temp_r30], 0x40000002); - Hu3DModelAttrReset(object->model[temp_r30], 0x40000001); - Hu3DModelLayerSet(object->model[temp_r30], 3); - Hu3DModelShadowSet(object->model[temp_r30]); - } - for(temp_r30=0; temp_r30<1; temp_r29++, temp_r30++) { - object->motion[temp_r30] = Hu3DJointMotionFile(object->model[0], temp_r29[0]); - } - Hu3DMotionSet(object->model[0], object->motion[0]); - omSetTra(object, 0, 0, 0); - omSetRot(object, 0, 0, 0); - object->func = fn_1_99EC; + s32 temp_r30; + s32 *temp_r29; + temp_r29 = &lbl_1_data_12E0[object->work[0]][0]; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + object->model[temp_r30] = Hu3DModelCreateFile(*temp_r29++); + Hu3DModelCameraSet(object->model[temp_r30], 15); + Hu3DModelAttrSet(object->model[temp_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[temp_r30], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[temp_r30], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[temp_r30], 3); + Hu3DModelShadowSet(object->model[temp_r30]); + } + for (temp_r30 = 0; temp_r30 < 1; temp_r29++, temp_r30++) { + object->motion[temp_r30] = Hu3DJointMotionFile(object->model[0], temp_r29[0]); + } + Hu3DMotionSet(object->model[0], object->motion[0]); + omSetTra(object, 0, 0, 0); + omSetRot(object, 0, 0, 0); + object->func = fn_1_99EC; } void fn_1_9BAC(omObjData *object) { - float temp_f31; - float temp_f30; - - Vec *temp_r31; - Work8F68 *temp_r29; - s32 temp_r27; - temp_r31 = object->data; - temp_r31[1].x += (frandf()*12.0f)+12.0f; - temp_r27 = lbl_1_bss_28; - if(object->work[0] & 0x1) { - temp_r27 ^= 0x1; - } - temp_r29 = fn_1_4DF0(temp_r27); - temp_r31[1].y++; - if(90.0f < temp_r31[1].y) { - temp_r31[1].y = 90.0f; - } - temp_f31 = temp_r31[1].y/90.0f; - temp_f30 = sind(90.0f * temp_f31) * sind(90.0f * temp_f31); + float temp_f31; + float temp_f30; + + Vec *temp_r31; + Work8F68 *temp_r29; + s32 temp_r27; + temp_r31 = object->data; + temp_r31[1].x += (frandf() * 12.0f) + 12.0f; + temp_r27 = lbl_1_bss_28; + if (object->work[0] & 0x1) { + temp_r27 ^= 0x1; + } + temp_r29 = fn_1_4DF0(temp_r27); + temp_r31[1].y++; + if (90.0f < temp_r31[1].y) { + temp_r31[1].y = 90.0f; + } + temp_f31 = temp_r31[1].y / 90.0f; + temp_f30 = sind(90.0f * temp_f31) * sind(90.0f * temp_f31); temp_r31[0].x = lbl_1_bss_F8->x + temp_f30 * (temp_r29->unk4.x - lbl_1_bss_F8->x) * 1.5f; temp_r31[0].z = lbl_1_bss_F8->z + temp_f30 * (temp_r29->unk4.z - lbl_1_bss_F8->z) * 1.5f; - temp_r31[0].y += temp_r31[1].z; - temp_r31[1].z -= 0.4f; - omSetTra(object, temp_r31[0].x, temp_r31[0].y, temp_r31[0].z); - omSetRot(object, 0, temp_r31[1].x, 0); - if(0.0f > temp_r31[1].z && 180.0f > temp_r31[0].y) { - lbl_1_bss_20++; - HuAudFXPlay(7); - Hu3DModelAttrSet(object->model[0], 1); - CharModelCoinEffectCreate(lbl_1_data_FEC[lbl_1_bss_28], temp_r31); - omDelObjEx(lbl_1_bss_33C, object); - } + temp_r31[0].y += temp_r31[1].z; + temp_r31[1].z -= 0.4f; + omSetTra(object, temp_r31[0].x, temp_r31[0].y, temp_r31[0].z); + omSetRot(object, 0, temp_r31[1].x, 0); + if (0.0f > temp_r31[1].z && 180.0f > temp_r31[0].y) { + lbl_1_bss_20++; + HuAudFXPlay(7); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + CharModelCoinEffectCreate(lbl_1_data_FEC[lbl_1_bss_28], temp_r31); + omDelObjEx(lbl_1_bss_33C, object); + } } void fn_1_9EEC(omObjData *object) { - Vec *temp_r30; - temp_r30 = object->data; - object->model[0] = Hu3DModelLink(lbl_1_bss_1A); - Hu3DModelCameraSet(object->model[0], lbl_1_data_FEC[lbl_1_bss_28]); - Hu3DModelAttrSet(object->model[0], 1); - Hu3DModelAttrSet(object->model[0], 0x40000002); - Hu3DModelLayerSet(object->model[0], 4); - Hu3DModelShadowSet(object->model[0]); - temp_r30[0] = lbl_1_bss_F8[0]; - temp_r30[0].y += 20; - temp_r30[1].x = 0; - temp_r30[1].y = 0; - temp_r30[1].z = (4*frandf())+10; - omSetTra(object, temp_r30[0].x, temp_r30[0].y , temp_r30[0].z); - omSetRot(object, 0, temp_r30[1].x, 0); - omSetSca(object, 0.4f, 0.4f, 0.4f); - Hu3DModelAttrReset(object->model[0], 1); - object->func = fn_1_9BAC; + Vec *temp_r30; + temp_r30 = object->data; + object->model[0] = Hu3DModelLink(lbl_1_bss_1A); + Hu3DModelCameraSet(object->model[0], lbl_1_data_FEC[lbl_1_bss_28]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 4); + Hu3DModelShadowSet(object->model[0]); + temp_r30[0] = lbl_1_bss_F8[0]; + temp_r30[0].y += 20; + temp_r30[1].x = 0; + temp_r30[1].y = 0; + temp_r30[1].z = (4 * frandf()) + 10; + omSetTra(object, temp_r30[0].x, temp_r30[0].y, temp_r30[0].z); + omSetRot(object, 0, temp_r30[1].x, 0); + omSetSca(object, 0.4f, 0.4f, 0.4f); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_9BAC; } void fn_1_A0A8(s32 arg0) { - omObjData *object; - object = omAddObjEx(lbl_1_bss_33C, 103, 1, 0, 3, fn_1_9EEC); - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec)*2, MEMORY_DEFAULT_NUM); - object->work[0] = arg0; + omObjData *object; + object = omAddObjEx(lbl_1_bss_33C, 103, 1, 0, 3, fn_1_9EEC); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec) * 2, MEMORY_DEFAULT_NUM); + object->work[0] = arg0; } void fn_1_A118(void) { - s32 temp_r31; - float temp_f31; - float temp_f30; - Vec sp8; - temp_f30 = sind(15.0f)/cosd(15.0f); - temp_f31 = 0.5f; - sp8.z = (1.0f-temp_f31)*(lbl_1_bss_190->unk18*temp_f30); - sp8.x = 1.2f*sp8.z; - sp8.y = lbl_1_bss_190->unk18*temp_f31; - Hu3DCameraCreate(15); - Hu3DCameraPerspectiveSet(15, 30, 10, 20000, 1.2f); - for(temp_r31=0; temp_r31<4; temp_r31++) { - fn_1_7098(temp_r31, &lbl_1_data_FFC[temp_r31][0]); - lbl_1_bss_C8[temp_r31].x = sp8.x*lbl_1_data_10FC[temp_r31][0]; - lbl_1_bss_C8[temp_r31].y = sp8.y; - lbl_1_bss_C8[temp_r31].z = sp8.z*lbl_1_data_10FC[temp_r31][1]; - lbl_1_bss_68[temp_r31].x = lbl_1_bss_C8[temp_r31].x; - lbl_1_bss_68[temp_r31].y = 0; - lbl_1_bss_68[temp_r31].z = lbl_1_bss_C8[temp_r31].z; - Hu3DCameraPosSetV(lbl_1_data_FEC[temp_r31], &lbl_1_bss_C8[temp_r31], &lbl_1_data_FD4, &lbl_1_bss_68[temp_r31]); - } + s32 temp_r31; + float temp_f31; + float temp_f30; + Vec sp8; + temp_f30 = sind(15.0f) / cosd(15.0f); + temp_f31 = 0.5f; + sp8.z = (1.0f - temp_f31) * (lbl_1_bss_190->unk18 * temp_f30); + sp8.x = 1.2f * sp8.z; + sp8.y = lbl_1_bss_190->unk18 * temp_f31; + Hu3DCameraCreate(15); + Hu3DCameraPerspectiveSet(15, 30, 10, 20000, 1.2f); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + fn_1_7098(temp_r31, &lbl_1_data_FFC[temp_r31][0]); + lbl_1_bss_C8[temp_r31].x = sp8.x * lbl_1_data_10FC[temp_r31][0]; + lbl_1_bss_C8[temp_r31].y = sp8.y; + lbl_1_bss_C8[temp_r31].z = sp8.z * lbl_1_data_10FC[temp_r31][1]; + lbl_1_bss_68[temp_r31].x = lbl_1_bss_C8[temp_r31].x; + lbl_1_bss_68[temp_r31].y = 0; + lbl_1_bss_68[temp_r31].z = lbl_1_bss_C8[temp_r31].z; + Hu3DCameraPosSetV(lbl_1_data_FEC[temp_r31], &lbl_1_bss_C8[temp_r31], &lbl_1_data_FD4, &lbl_1_bss_68[temp_r31]); + } } void fn_1_A588(s32 arg0, Vec *arg1, float arg2) { - Vec sp18; - Vec spC; - sp18.x = lbl_1_bss_C8[arg0].x+(arg2*(lbl_1_bss_98[arg0].x-lbl_1_bss_C8[arg0].x)); - sp18.y = lbl_1_bss_C8[arg0].y+(arg2*(lbl_1_bss_98[arg0].y-lbl_1_bss_C8[arg0].y)); - sp18.z = lbl_1_bss_C8[arg0].z+(arg2*(lbl_1_bss_98[arg0].z-lbl_1_bss_C8[arg0].z)); - spC.x = lbl_1_bss_68[arg0].x+(arg2*(lbl_1_bss_38[arg0].x-lbl_1_bss_68[arg0].x)); - spC.y = lbl_1_bss_68[arg0].y+(arg2*(lbl_1_bss_38[arg0].y-lbl_1_bss_68[arg0].y)); - spC.z = lbl_1_bss_68[arg0].z+(arg2*(lbl_1_bss_38[arg0].z-lbl_1_bss_68[arg0].z)); - Hu3DCameraPosSetV(lbl_1_data_FEC[arg0], &sp18, arg1, &spC); + Vec sp18; + Vec spC; + sp18.x = lbl_1_bss_C8[arg0].x + (arg2 * (lbl_1_bss_98[arg0].x - lbl_1_bss_C8[arg0].x)); + sp18.y = lbl_1_bss_C8[arg0].y + (arg2 * (lbl_1_bss_98[arg0].y - lbl_1_bss_C8[arg0].y)); + sp18.z = lbl_1_bss_C8[arg0].z + (arg2 * (lbl_1_bss_98[arg0].z - lbl_1_bss_C8[arg0].z)); + spC.x = lbl_1_bss_68[arg0].x + (arg2 * (lbl_1_bss_38[arg0].x - lbl_1_bss_68[arg0].x)); + spC.y = lbl_1_bss_68[arg0].y + (arg2 * (lbl_1_bss_38[arg0].y - lbl_1_bss_68[arg0].y)); + spC.z = lbl_1_bss_68[arg0].z + (arg2 * (lbl_1_bss_38[arg0].z - lbl_1_bss_68[arg0].z)); + Hu3DCameraPosSetV(lbl_1_data_FEC[arg0], &sp18, arg1, &spC); } void fn_1_A7B4(void) { - s32 temp_r31; - float *temp_r30; - float *temp_r29; - float temp_f31; - float temp_f30; - - - float sp20[4]; - lbl_1_bss_12C++; - temp_f30 = lbl_1_bss_12C/120; - temp_f31 = sind(90*temp_f30)*sind(90*temp_f30); - for(temp_r31=0; temp_r31<4; temp_r31++) { - fn_1_A588(temp_r31, &lbl_1_data_FD4, temp_f31); - } - if(30.0f < lbl_1_bss_12C) { - temp_f30 = (lbl_1_bss_12C-30.0f)/60.0f; - if(1.0f < temp_f30) { - temp_f30 = 1; - } - temp_f31 = sind(90*temp_f30)*sind(90*temp_f30); - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = &lbl_1_data_FFC[temp_r31][0]; - temp_r29 = &lbl_1_data_103C[temp_r31][0]; - sp20[0] = temp_r30[0]+(temp_f31*(temp_r29[0]-temp_r30[0])); - sp20[1] = temp_r30[1]+(temp_f31*(temp_r29[1]-temp_r30[1])); - sp20[2] = temp_r30[2]+(temp_f31*(temp_r29[2]-temp_r30[2])); - sp20[3] = temp_r30[3]+(temp_f31*(temp_r29[3]-temp_r30[3])); - fn_1_7098(temp_r31, sp20); - } - } + s32 temp_r31; + float *temp_r30; + float *temp_r29; + float temp_f31; + float temp_f30; + + float sp20[4]; + lbl_1_bss_12C++; + temp_f30 = lbl_1_bss_12C / 120; + temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + fn_1_A588(temp_r31, &lbl_1_data_FD4, temp_f31); + } + if (30.0f < lbl_1_bss_12C) { + temp_f30 = (lbl_1_bss_12C - 30.0f) / 60.0f; + if (1.0f < temp_f30) { + temp_f30 = 1; + } + temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = &lbl_1_data_FFC[temp_r31][0]; + temp_r29 = &lbl_1_data_103C[temp_r31][0]; + sp20[0] = temp_r30[0] + (temp_f31 * (temp_r29[0] - temp_r30[0])); + sp20[1] = temp_r30[1] + (temp_f31 * (temp_r29[1] - temp_r30[1])); + sp20[2] = temp_r30[2] + (temp_f31 * (temp_r29[2] - temp_r30[2])); + sp20[3] = temp_r30[3] + (temp_f31 * (temp_r29[3] - temp_r30[3])); + fn_1_7098(temp_r31, sp20); + } + } } void fn_1_AD74(float *arg0) { - float sp8[4]; - float *temp_r31; - s32 temp_r28; - float temp_f31; - float temp_f30; - - temp_r31 = &lbl_1_data_103C[0][0]; - temp_f30 = lbl_1_bss_12C/60; - temp_f31 = sind(90*temp_f30)*sind(90*temp_f30); - for(temp_r28=0; temp_r28<4; temp_r28++, temp_r31 += 4, arg0 += 4) { - sp8[0] = temp_r31[0]+(temp_f31*(arg0[0]-temp_r31[0])); - sp8[1] = temp_r31[1]+(temp_f31*(arg0[1]-temp_r31[1])); - sp8[2] = temp_r31[2]+(temp_f31*(arg0[2]-temp_r31[2])); - sp8[3] = temp_r31[3]+(temp_f31*(arg0[3]-temp_r31[3])); - fn_1_7098(temp_r28, sp8); - - } + float sp8[4]; + float *temp_r31; + s32 temp_r28; + float temp_f31; + float temp_f30; + + temp_r31 = &lbl_1_data_103C[0][0]; + temp_f30 = lbl_1_bss_12C / REFRESH_RATE; + temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30); + for (temp_r28 = 0; temp_r28 < 4; temp_r28++, temp_r31 += 4, arg0 += 4) { + sp8[0] = temp_r31[0] + (temp_f31 * (arg0[0] - temp_r31[0])); + sp8[1] = temp_r31[1] + (temp_f31 * (arg0[1] - temp_r31[1])); + sp8[2] = temp_r31[2] + (temp_f31 * (arg0[2] - temp_r31[2])); + sp8[3] = temp_r31[3] + (temp_f31 * (arg0[3] - temp_r31[3])); + fn_1_7098(temp_r28, sp8); + } } void fn_1_B01C(void) { - float temp_f31; - float temp_f30; - float temp_f29; - - Work8F68 *temp_r31; - Work8F68 *temp_r30; - temp_r31 = fn_1_4DF0(lbl_1_bss_28); - temp_r30 = fn_1_4DF0(lbl_1_bss_28^1); - temp_f31 = temp_r31->unk4.x-temp_r30->unk4.x; - temp_f30 = temp_r31->unk4.z-temp_r30->unk4.z; - lbl_1_bss_110 = atan2d(temp_f31, temp_f30)+90; - if(90.0f < lbl_1_bss_110) { - lbl_1_bss_110 -= 180.0f; - } - - lbl_1_bss_38[lbl_1_bss_28].x = lbl_1_bss_68[lbl_1_bss_28].x-(temp_f31/2); - lbl_1_bss_38[lbl_1_bss_28].y = lbl_1_bss_68[lbl_1_bss_28].y+200; - lbl_1_bss_38[lbl_1_bss_28].z = lbl_1_bss_68[lbl_1_bss_28].z-(temp_f30/2); - temp_f29 = 1350; - lbl_1_bss_98[lbl_1_bss_28].x = lbl_1_bss_38[lbl_1_bss_28].x+(temp_f29*sind(lbl_1_bss_110)); - lbl_1_bss_98[lbl_1_bss_28].y = 250+lbl_1_bss_38[lbl_1_bss_28].y; - lbl_1_bss_98[lbl_1_bss_28].z = lbl_1_bss_38[lbl_1_bss_28].z+(temp_f29*cosd(lbl_1_bss_110)); - lbl_1_bss_F8[0] = lbl_1_bss_38[lbl_1_bss_28]; - lbl_1_bss_F8[1] = lbl_1_bss_38[lbl_1_bss_28]; - lbl_1_bss_F8[1].x += 50*sind(lbl_1_bss_110); - lbl_1_bss_F8[1].y += 15; - lbl_1_bss_F8[1].z += 50*cosd(lbl_1_bss_110); - temp_f31 = lbl_1_bss_F8[0].x-temp_r31->unk4.x; - temp_f30 = lbl_1_bss_F8[0].z-temp_r31->unk4.z; - temp_r31->unk60 = atan2d(temp_f31, temp_f30); - temp_f31 = lbl_1_bss_F8[0].x-temp_r30->unk4.x; - temp_f30 = lbl_1_bss_F8[0].z-temp_r30->unk4.z; - temp_r30->unk60 = atan2d(temp_f31, temp_f30); - temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x-temp_r31->unk4.x; - temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z-temp_r31->unk4.z; - temp_r31->unk64 = atan2d(temp_f31, temp_f30); - temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x-temp_r30->unk4.x; - temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z-temp_r30->unk4.z; - temp_r30->unk64 = atan2d(temp_f31, temp_f30); - omVibrate(temp_r31->unk114, 120, 6, 6); - omVibrate(temp_r30->unk114, 120, 6, 6); + float temp_f31; + float temp_f30; + float temp_f29; + + Work8F68 *temp_r31; + Work8F68 *temp_r30; + temp_r31 = fn_1_4DF0(lbl_1_bss_28); + temp_r30 = fn_1_4DF0(lbl_1_bss_28 ^ 1); + temp_f31 = temp_r31->unk4.x - temp_r30->unk4.x; + temp_f30 = temp_r31->unk4.z - temp_r30->unk4.z; + lbl_1_bss_110 = atan2d(temp_f31, temp_f30) + 90; + if (90.0f < lbl_1_bss_110) { + lbl_1_bss_110 -= 180.0f; + } + + lbl_1_bss_38[lbl_1_bss_28].x = lbl_1_bss_68[lbl_1_bss_28].x - (temp_f31 / 2); + lbl_1_bss_38[lbl_1_bss_28].y = lbl_1_bss_68[lbl_1_bss_28].y + 200; + lbl_1_bss_38[lbl_1_bss_28].z = lbl_1_bss_68[lbl_1_bss_28].z - (temp_f30 / 2); + temp_f29 = 1350; + lbl_1_bss_98[lbl_1_bss_28].x = lbl_1_bss_38[lbl_1_bss_28].x + (temp_f29 * sind(lbl_1_bss_110)); + lbl_1_bss_98[lbl_1_bss_28].y = 250 + lbl_1_bss_38[lbl_1_bss_28].y; + lbl_1_bss_98[lbl_1_bss_28].z = lbl_1_bss_38[lbl_1_bss_28].z + (temp_f29 * cosd(lbl_1_bss_110)); + lbl_1_bss_F8[0] = lbl_1_bss_38[lbl_1_bss_28]; + lbl_1_bss_F8[1] = lbl_1_bss_38[lbl_1_bss_28]; + lbl_1_bss_F8[1].x += 50 * sind(lbl_1_bss_110); + lbl_1_bss_F8[1].y += 15; + lbl_1_bss_F8[1].z += 50 * cosd(lbl_1_bss_110); + temp_f31 = lbl_1_bss_F8[0].x - temp_r31->unk4.x; + temp_f30 = lbl_1_bss_F8[0].z - temp_r31->unk4.z; + temp_r31->unk60 = atan2d(temp_f31, temp_f30); + temp_f31 = lbl_1_bss_F8[0].x - temp_r30->unk4.x; + temp_f30 = lbl_1_bss_F8[0].z - temp_r30->unk4.z; + temp_r30->unk60 = atan2d(temp_f31, temp_f30); + temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x - temp_r31->unk4.x; + temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z - temp_r31->unk4.z; + temp_r31->unk64 = atan2d(temp_f31, temp_f30); + temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x - temp_r30->unk4.x; + temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z - temp_r30->unk4.z; + temp_r30->unk64 = atan2d(temp_f31, temp_f30); + omVibrate(temp_r31->unk114, (VERSION_JP ? 3 : 2) * REFRESH_RATE, 6, 6); + omVibrate(temp_r30->unk114, (VERSION_JP ? 3 : 2) * REFRESH_RATE, 6, 6); } void fn_1_B754(float *arg0, float arg1, float arg2, s32 arg3) { - float temp_f31; - float temp_f30; - temp_f30 = (arg0[2]/2)*(arg1/lbl_1_bss_128); - temp_f31 = (arg0[3]/2)*(arg2/lbl_1_bss_124); - temp_f30 += arg0[0]+(arg0[2]/2); - temp_f31 += arg0[1]+(arg0[3]/2); - temp_f30 = 576.0f*(temp_f30/640.0f); - temp_f31 = 480.0f*(temp_f31/480.0f); - temp_f31 += (240.0f <= arg0[1]) ? -16.0f : 16.0f; - espPosSet(arg3, temp_f30, temp_f31); + float temp_f31; + float temp_f30; + temp_f30 = (arg0[2] / 2) * (arg1 / lbl_1_bss_128); + temp_f31 = (arg0[3] / 2) * (arg2 / lbl_1_bss_124); + temp_f30 += arg0[0] + (arg0[2] / 2); + temp_f31 += arg0[1] + (arg0[3] / 2); + temp_f30 = 576.0f * (temp_f30 / 640.0f); + temp_f31 = 480.0f * (temp_f31 / 480.0f); + temp_f31 += (240.0f <= arg0[1]) ? -16.0f : 16.0f; + espPosSet(arg3, temp_f30, temp_f31); } void fn_1_E96C(omObjData *object); void fn_1_B8E0(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f20; - float temp_f19; - - float *temp_r31; - s32 temp_r29; - Work8F68 *temp_r28; - Bss130Struct *temp_r27; - s32 temp_r24; - Work3284 *temp_r23; - Work8F68 *temp_r20; - - s32 sp74; - Work8F68 *sp68; - Work8F68 *sp5C; - if(omSysExitReq) { - fn_1_1F58(-1); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_E96C; - } - lbl_1_bss_114 += 1.0f/60.0f; - if(360.0f <= lbl_1_bss_114) { - lbl_1_bss_114 -= 360.0f; - } - Hu3DModelRotSet(object->model[2], 0, lbl_1_bss_114, 0); - lbl_1_bss_308++; - switch(object->work[0]) { - - case 1000: - if(!WipeStatGet()) { - object->work[0]++; - lbl_1_bss_12C = 0; - HuAudFXPlay(1644); - } - break; - - case 1001: - lbl_1_bss_12C++; - if(60.0f <= lbl_1_bss_12C) { - object->work[0]++; - lbl_1_bss_12C = 0; - } - break; - - - case 1002: - lbl_1_bss_12C++; - temp_f30 = lbl_1_bss_12C/60; - temp_f31 = 1-(sind(temp_f30*90.0f)*sind(temp_f30*90.0f)); - for(temp_r29=0; temp_r29<5; temp_r29++) { - espTPLvlSet(lbl_1_bss_10[temp_r29], temp_f31); - } - if(60.0f <= lbl_1_bss_12C) { - object->work[0]++; - lbl_1_bss_12C = 0; - for(temp_r29=0; temp_r29<5; temp_r29++) { - espKill(lbl_1_bss_10[temp_r29]); - } - } - break; - - case 1003: - lbl_1_bss_12C++; - temp_f30 = lbl_1_bss_12C/60; - temp_f31 = sind(temp_f30*90.0f)*sind(temp_f30*90.0f); - for(temp_r29=0; temp_r29<4; temp_r29++) { - lbl_1_bss_130[temp_r29].unk4 = temp_f31; - } - if(60.0f <= lbl_1_bss_12C) { - object->work[0]++; - lbl_1_bss_12C = 0; - lbl_1_bss_4 = HuAudFXPlay(1645); - lbl_1_bss_0 = HuAudFXPlay(1646); - } - break; - - - case 1004: - fn_1_A7B4(); - if(120.0f <= lbl_1_bss_12C) { - object->work[0]++; - HuAudFXStop(lbl_1_bss_4); - } - break; - - - case 1005: - if(lbl_1_bss_2FE < 0) { - lbl_1_bss_2FE = MGSeqStartCreate(); - } else { - if(lbl_1_bss_2F8 < 0 && (MGSeqStatGet(lbl_1_bss_2FE) & 0x10)) { - fn_1_1F24(71); - } - if(!MGSeqStatGet(lbl_1_bss_2FE)) { - object->work[0]++; - lbl_1_bss_304 = 3600; - lbl_1_bss_2FC = MGSeqTimerCreate(lbl_1_bss_304/60); - lbl_1_bss_2FE = -1; - } - } - break; - - - case 1006: - MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304+59)/60); - lbl_1_bss_304--; - if(lbl_1_bss_304 < 0 || lbl_1_bss_28 >= 0) { - object->work[0] = 1007; - lbl_1_bss_304 = 3600; - lbl_1_bss_12C = 0; - } - break; - - - case 1007: - if(lbl_1_bss_2FE < 0) { - MGSeqParamSet(lbl_1_bss_2FC, 2, -1); - lbl_1_bss_2FC = -1; - lbl_1_bss_2FE = MGSeqFinishCreate(); - fn_1_1F58(100); - lbl_1_bss_12C = 0; - if(lbl_1_bss_28 >= 0) { - Hu3DModelAttrReset(object->model[0], 0x40000002); - Hu3DModelAttrReset(object->model[3], 0x40000002); - Hu3DModelAttrReset(object->model[3], 1); - } - } else { - sp74 = 0; - for(temp_r29=0; temp_r29<4; temp_r29++) { - if(((Work8F68 *)lbl_1_bss_1A4[temp_r29]->data)->unk9C >= 2003) { - sp74++; - } - } - if(sp74 == 4) { - lbl_1_bss_12C++; - } - if(lbl_1_bss_28 >= 0 && 60.0f == lbl_1_bss_12C) { - Hu3DModelAttrSet(object->model[3], 1); - Hu3DModelAttrReset(object->model[4], 1); - Hu3DModelAttrReset(object->model[4], 0x40000002); - } - if(60.0f < lbl_1_bss_12C && !MGSeqStatGet(lbl_1_bss_2FE)) { - lbl_1_bss_2FE =-1; - lbl_1_bss_12C = 0; - if(lbl_1_bss_28 < 0) { - object->work[0] = 1012; - lbl_1_bss_12C = 0; - lbl_1_bss_2FE = MGSeqDrawCreate(); - HuAudSStreamPlay(4); - } else { - object->work[0] = 1008; - fn_1_B01C(); - } - } - } - break; - - - case 1008: - lbl_1_bss_12C++; - if(60.0f < lbl_1_bss_12C) { - object->work[0]++; - lbl_1_bss_12C = 0; - HuAudFXPlay(1650); - for(temp_r29=0; temp_r29<4; temp_r29++) { - if(lbl_1_bss_28 != temp_r29) { - Hu3DCameraKill(lbl_1_data_FEC[temp_r29]); - } - } - } else { - fn_1_AD74(((lbl_1_bss_28 & 0x2) == 0) ? &lbl_1_data_107C[0][0] : &lbl_1_data_10BC[0][0]); - temp_f30 = lbl_1_bss_12C/60.0f; - temp_f31 = sind(temp_f30*90.0f)*sind(temp_f30*90.0f); - fn_1_A588(lbl_1_bss_28, &lbl_1_data_FE0, temp_f31); - - } - break; - - - case 1009: - lbl_1_bss_12C++; - if(120.0f < lbl_1_bss_12C) { - object->work[0]++; - lbl_1_bss_12C = 0; - HuAudFXPlay(1651); - } else { - temp_f30 = lbl_1_bss_12C/120.0f; - temp_f31 = sind(temp_f30*90.0f)*sind(temp_f30*90.0f); - temp_f20 = (6.0f*frandf())-3.0f; - temp_f19 = (6.0f*frandf())-3.0f; - omSetTra(object, temp_f20, -90*temp_f31, temp_f19); - Hu3DModelPosSet(object->model[3], temp_f20, -90*temp_f31, temp_f19); - Hu3DModelPosSet(object->model[4], temp_f20, -90*temp_f31, temp_f19); - } - break; - - - case 1010: - if(lbl_1_bss_1C >= 2) { - object->work[0]++; - lbl_1_bss_12C = 0; - } - break; - - - case 1011: - if(lbl_1_bss_20 > 0 && lbl_1_bss_2FE < 0) { - lbl_1_bss_2FE = MGSeqWinCreate(fn_1_4DF0(lbl_1_bss_28)->unk118, fn_1_4DF0(lbl_1_bss_28+1)->unk118, -1, -1); - HuAudSStreamPlay(1); - } - if(lbl_1_bss_24 < 20) { - if((lbl_1_bss_308 % 6) == 0) { - lbl_1_bss_24++; - fn_1_A0A8(lbl_1_bss_24); - } - } else { - if(lbl_1_bss_24 == lbl_1_bss_20) { - lbl_1_bss_12C++; - if(60.0f < lbl_1_bss_12C) { - object->work[0] = 1012; - lbl_1_bss_12C = 0; - } - } - } - break; - - - case 1012: - lbl_1_bss_12C++; - if(210.0f < lbl_1_bss_12C) { - if(lbl_1_bss_2FE < 0 || !MGSeqStatGet(lbl_1_bss_2FE)) { - fn_1_1F58(-1); - lbl_1_bss_2FE = -1; - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_E96C; - } - } - break; - - default: - OSReport("*** main mode error(%d)!!\n", object->work[0]); - break; - } - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r27 = &lbl_1_bss_130[temp_r29]; - if(temp_r27->unk0 >= 0) { - espPosSet(temp_r27->unk0, temp_r27->unk8, temp_r27->unkC); - espScaleSet(temp_r27->unk0, temp_r27->unk10, temp_r27->unk14); - espTPLvlSet(temp_r27->unk0, temp_r27->unk4); - espDispOn(temp_r27->unk0); - } - } - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r28 = lbl_1_bss_1A4[temp_r29]->data; - temp_r31 = &lbl_1_data_103C[temp_r28->unk110][0]; - if((temp_r28->unkE8 & 0x1) == 0) { - continue; - } - fn_1_B754(temp_r31, 0, 0, temp_r28->unkB4); - for(temp_r24=0; temp_r24<4; temp_r24++) { - temp_r20 = lbl_1_bss_1A4[temp_r24]->data; - fn_1_B754(temp_r31, temp_r20->unk4.x, temp_r20->unk4.z, temp_r28->unkB8[temp_r24]); - temp_r23 = lbl_1_bss_19C[temp_r24]->data; - fn_1_B754(temp_r31, temp_r23->unk0.x, temp_r23->unk0.z, temp_r28->unkC8[temp_r24][0]); - fn_1_B754(temp_r31, temp_r23->unk0.x, temp_r23->unk0.z, temp_r28->unkC8[temp_r24][1]); - if(temp_r23->unk18 & 0x1) { - espDispOn(temp_r28->unkC8[temp_r24][1]); - espDispOff(temp_r28->unkC8[temp_r24][0]); - } else { - espDispOn(temp_r28->unkC8[temp_r24][0]); - espDispOff(temp_r28->unkC8[temp_r24][1]); - } - } - } + float temp_f31; + float temp_f30; + float temp_f20; + float temp_f19; + + float *temp_r31; + s32 temp_r29; + Work8F68 *temp_r28; + Bss130Struct *temp_r27; + s32 temp_r24; + Work3284 *temp_r23; + Work8F68 *temp_r20; + + s32 sp74; + Work8F68 *sp68; + Work8F68 *sp5C; + if (omSysExitReq) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_E96C; + } + lbl_1_bss_114 += 1.0f / REFRESH_RATE; + if (360.0f <= lbl_1_bss_114) { + lbl_1_bss_114 -= 360.0f; + } + Hu3DModelRotSet(object->model[2], 0, lbl_1_bss_114, 0); + lbl_1_bss_308++; + switch (object->work[0]) { + + case 1000: + if (!WipeStatGet()) { + object->work[0]++; + lbl_1_bss_12C = 0; + HuAudFXPlay(1644); + } + break; + + case 1001: + lbl_1_bss_12C++; + if (60.0f <= lbl_1_bss_12C) { + object->work[0]++; + lbl_1_bss_12C = 0; + } + break; + + case 1002: + lbl_1_bss_12C++; + temp_f30 = lbl_1_bss_12C / REFRESH_RATE; + temp_f31 = 1 - (sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f)); + for (temp_r29 = 0; temp_r29 < 5; temp_r29++) { + espTPLvlSet(lbl_1_bss_10[temp_r29], temp_f31); + } + if (REFRESH_RATE <= lbl_1_bss_12C) { + object->work[0]++; + lbl_1_bss_12C = 0; + for (temp_r29 = 0; temp_r29 < 5; temp_r29++) { + espKill(lbl_1_bss_10[temp_r29]); + } + } + break; + + case 1003: + lbl_1_bss_12C++; + temp_f30 = lbl_1_bss_12C / REFRESH_RATE; + temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + lbl_1_bss_130[temp_r29].unk4 = temp_f31; + } + if (REFRESH_RATE <= lbl_1_bss_12C) { + object->work[0]++; + lbl_1_bss_12C = 0; + lbl_1_bss_4 = HuAudFXPlay(1645); + lbl_1_bss_0 = HuAudFXPlay(1646); + } + break; + + case 1004: + fn_1_A7B4(); + if (120.0f <= lbl_1_bss_12C) { + object->work[0]++; + HuAudFXStop(lbl_1_bss_4); + } + break; + + case 1005: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_2FE = MGSeqStartCreate(); + } + else { + if (lbl_1_bss_2F8 < 0 && (MGSeqStatGet(lbl_1_bss_2FE) & 0x10)) { + fn_1_1F24(71); + } + if (!MGSeqStatGet(lbl_1_bss_2FE)) { + object->work[0]++; + lbl_1_bss_304 = 60 * REFRESH_RATE; + lbl_1_bss_2FC = MGSeqTimerCreate(lbl_1_bss_304 / REFRESH_RATE); + lbl_1_bss_2FE = -1; + } + } + break; + + case 1006: + MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + REFRESH_RATE - 1) / REFRESH_RATE); + lbl_1_bss_304--; + if (lbl_1_bss_304 < 0 || lbl_1_bss_28 >= 0) { + object->work[0] = 1007; + lbl_1_bss_304 = 60 * REFRESH_RATE; + lbl_1_bss_12C = 0; + } + break; + + case 1007: + if (lbl_1_bss_2FE < 0) { + MGSeqParamSet(lbl_1_bss_2FC, 2, -1); + lbl_1_bss_2FC = -1; + lbl_1_bss_2FE = MGSeqFinishCreate(); + fn_1_1F58(100); + lbl_1_bss_12C = 0; + if (lbl_1_bss_28 >= 0) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + } + } + else { + sp74 = 0; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if (((Work8F68 *)lbl_1_bss_1A4[temp_r29]->data)->unk9C >= 2003) { + sp74++; + } + } + if (sp74 == 4) { + lbl_1_bss_12C++; + } + if (lbl_1_bss_28 >= 0 && 60.0f == lbl_1_bss_12C) { + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[4], HU3D_MOTATTR_PAUSE); + } + if (60.0f < lbl_1_bss_12C && !MGSeqStatGet(lbl_1_bss_2FE)) { + lbl_1_bss_2FE = -1; + lbl_1_bss_12C = 0; + if (lbl_1_bss_28 < 0) { + object->work[0] = 1012; + lbl_1_bss_12C = 0; + lbl_1_bss_2FE = MGSeqDrawCreate(); + HuAudSStreamPlay(4); + } + else { + object->work[0] = 1008; + fn_1_B01C(); + } + } + } + break; + + case 1008: + lbl_1_bss_12C++; + if (REFRESH_RATE < lbl_1_bss_12C) { + object->work[0]++; + lbl_1_bss_12C = 0; + HuAudFXPlay(1650); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if (lbl_1_bss_28 != temp_r29) { + Hu3DCameraKill(lbl_1_data_FEC[temp_r29]); + } + } + } + else { + fn_1_AD74(((lbl_1_bss_28 & 0x2) == 0) ? &lbl_1_data_107C[0][0] : &lbl_1_data_10BC[0][0]); + temp_f30 = lbl_1_bss_12C / REFRESH_RATE; + temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f); + fn_1_A588(lbl_1_bss_28, &lbl_1_data_FE0, temp_f31); + } + break; + + case 1009: + lbl_1_bss_12C++; + if (2 * REFRESH_RATE < lbl_1_bss_12C) { + object->work[0]++; + lbl_1_bss_12C = 0; + HuAudFXPlay(1651); + } + else { + temp_f30 = lbl_1_bss_12C / (2 * REFRESH_RATE); + temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f); + temp_f20 = (6.0f * frandf()) - 3.0f; + temp_f19 = (6.0f * frandf()) - 3.0f; + omSetTra(object, temp_f20, -90 * temp_f31, temp_f19); + Hu3DModelPosSet(object->model[3], temp_f20, -90 * temp_f31, temp_f19); + Hu3DModelPosSet(object->model[4], temp_f20, -90 * temp_f31, temp_f19); + } + break; + + case 1010: + if (lbl_1_bss_1C >= 2) { + object->work[0]++; + lbl_1_bss_12C = 0; + } + break; + + case 1011: + if (lbl_1_bss_20 > 0 && lbl_1_bss_2FE < 0) { + lbl_1_bss_2FE = MGSeqWinCreate(fn_1_4DF0(lbl_1_bss_28)->unk118, fn_1_4DF0(lbl_1_bss_28 + 1)->unk118, -1, -1); + HuAudSStreamPlay(1); + } + if (lbl_1_bss_24 < 20) { + if ((lbl_1_bss_308 % 6) == 0) { + lbl_1_bss_24++; + fn_1_A0A8(lbl_1_bss_24); + } + } + else { + if (lbl_1_bss_24 == lbl_1_bss_20) { + lbl_1_bss_12C++; + if (60.0f < lbl_1_bss_12C) { + object->work[0] = 1012; + lbl_1_bss_12C = 0; + } + } + } + break; + + case 1012: + lbl_1_bss_12C++; + if (210.0f < lbl_1_bss_12C) { + if (lbl_1_bss_2FE < 0 || !MGSeqStatGet(lbl_1_bss_2FE)) { + fn_1_1F58(-1); + lbl_1_bss_2FE = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_E96C; + } + } + break; + + default: + OSReport("*** main mode error(%d)!!\n", object->work[0]); + break; + } + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r27 = &lbl_1_bss_130[temp_r29]; + if (temp_r27->unk0 >= 0) { + espPosSet(temp_r27->unk0, temp_r27->unk8, temp_r27->unkC); + espScaleSet(temp_r27->unk0, temp_r27->unk10, temp_r27->unk14); + espTPLvlSet(temp_r27->unk0, temp_r27->unk4); + espDispOn(temp_r27->unk0); + } + } + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r28 = lbl_1_bss_1A4[temp_r29]->data; + temp_r31 = &lbl_1_data_103C[temp_r28->unk110][0]; + if ((temp_r28->unkE8 & 0x1) == 0) { + continue; + } + fn_1_B754(temp_r31, 0, 0, temp_r28->unkB4); + for (temp_r24 = 0; temp_r24 < 4; temp_r24++) { + temp_r20 = lbl_1_bss_1A4[temp_r24]->data; + fn_1_B754(temp_r31, temp_r20->unk4.x, temp_r20->unk4.z, temp_r28->unkB8[temp_r24]); + temp_r23 = lbl_1_bss_19C[temp_r24]->data; + fn_1_B754(temp_r31, temp_r23->unk0.x, temp_r23->unk0.z, temp_r28->unkC8[temp_r24][0]); + fn_1_B754(temp_r31, temp_r23->unk0.x, temp_r23->unk0.z, temp_r28->unkC8[temp_r24][1]); + if (temp_r23->unk18 & 0x1) { + espDispOn(temp_r28->unkC8[temp_r24][1]); + espDispOff(temp_r28->unkC8[temp_r24][0]); + } + else { + espDispOn(temp_r28->unkC8[temp_r24][0]); + espDispOff(temp_r28->unkC8[temp_r24][1]); + } + } + } } void fn_1_D5E8(omObjData *object) { - float temp_f31; - float temp_f30; - s32 temp_r30; - Work3284 *temp_r29; - temp_f31 = 288; - temp_f30 = 240; - lbl_1_bss_10[0] = espEntry(lbl_1_data_1388[lbl_1_bss_190->unk0+lbl_1_bss_34], 132, 0); - espPosSet(lbl_1_bss_10[0], temp_f31, temp_f30); - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r29 = lbl_1_bss_19C[temp_r30]->data; - lbl_1_bss_10[temp_r30+1] = espEntry(lbl_1_data_1310[temp_r30], 131, 0); - espPosSet(lbl_1_bss_10[temp_r30+1], temp_f31+(0.07f*temp_r29->unk0.x), temp_f30+(0.07f*temp_r29->unk0.z)); - } - for(temp_r30=0; temp_r30<5; temp_r30++) { - espDrawNoSet(lbl_1_bss_10[temp_r30], 0); - espTPLvlSet(lbl_1_bss_10[temp_r30], 1.0f); - espDispOn(lbl_1_bss_10[temp_r30]); - } - object->model[0] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[1]); - Hu3DModelCameraSet(object->model[0], 15); - Hu3DModelAttrSet(object->model[0], 0x4001); - Hu3DModelAttrSet(object->model[0], 0x40000002); - Hu3DModelAttrReset(object->model[0], 0x40000001); - Hu3DModelLayerSet(object->model[0], 0); - Hu3DModelShadowMapSet(object->model[0]); - omSetTra(object, 0, 0, 0); - omSetRot(object, 0, -90.0f*lbl_1_bss_34, 0); - object->model[1] = Hu3DModelCreateFile(0x3C0022); - Hu3DModelCameraSet(object->model[1], 15); - Hu3DModelAttrSet(object->model[1], 0x4001); - Hu3DModelAttrSet(object->model[1], 0x40000002); - Hu3DModelLayerSet(object->model[1], 0); - Hu3DModelShadowMapSet(object->model[1]); - Hu3DModelPosSet(object->model[1], 0, 0, 0); - object->model[2] = Hu3DModelCreateFile(0x3C0023); - Hu3DModelCameraSet(object->model[2], 15); - Hu3DModelAttrSet(object->model[2], 0x4001); - Hu3DModelAttrSet(object->model[2], 0x40000002); - Hu3DModelLayerSet(object->model[2], 0); - Hu3DModelPosSet(object->model[2], 0, 0, 0); - object->model[3] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[2]); - Hu3DModelCameraSet(object->model[3], 15); - Hu3DModelAttrSet(object->model[3], 0x4001); - Hu3DModelAttrSet(object->model[3], 0x40000002); - Hu3DModelAttrReset(object->model[3], 0x40000001); - Hu3DModelLayerSet(object->model[3], 1); - Hu3DModelPosSet(object->model[3], 0, 0, 0); - Hu3DModelRotSet(object->model[3], 0, -90.0f*lbl_1_bss_34, 0); - object->model[4] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[3]); - Hu3DModelCameraSet(object->model[4], 15); - Hu3DModelAttrSet(object->model[4], 0x4001); - Hu3DModelAttrSet(object->model[4], 0x40000003); - Hu3DModelLayerSet(object->model[4], 1); - Hu3DModelPosSet(object->model[4], 0, 0, 0); - Hu3DModelRotSet(object->model[4], 0, -90.0f*lbl_1_bss_34, 0); - lbl_1_bss_114 = 45; - for(temp_r30=0; temp_r30<3; temp_r30++) { - Hu3DModelAttrReset(object->model[temp_r30], 1); - } - object->work[0] = 1000; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_B8E0; + float temp_f31; + float temp_f30; + s32 temp_r30; + Work3284 *temp_r29; + temp_f31 = 288; + temp_f30 = 240; + lbl_1_bss_10[0] = espEntry(lbl_1_data_1388[lbl_1_bss_190->unk0 + lbl_1_bss_34], 132, 0); + espPosSet(lbl_1_bss_10[0], temp_f31, temp_f30); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r29 = lbl_1_bss_19C[temp_r30]->data; + lbl_1_bss_10[temp_r30 + 1] = espEntry(lbl_1_data_1310[temp_r30], 131, 0); + espPosSet(lbl_1_bss_10[temp_r30 + 1], temp_f31 + (0.07f * temp_r29->unk0.x), temp_f30 + (0.07f * temp_r29->unk0.z)); + } + for (temp_r30 = 0; temp_r30 < 5; temp_r30++) { + espDrawNoSet(lbl_1_bss_10[temp_r30], 0); + espTPLvlSet(lbl_1_bss_10[temp_r30], 1.0f); + espDispOn(lbl_1_bss_10[temp_r30]); + } + object->model[0] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[1]); + Hu3DModelCameraSet(object->model[0], 15); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelShadowMapSet(object->model[0]); + omSetTra(object, 0, 0, 0); + omSetRot(object, 0, -90.0f * lbl_1_bss_34, 0); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M429, 0x22)); + Hu3DModelCameraSet(object->model[1], 15); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[1], 0); + Hu3DModelShadowMapSet(object->model[1]); + Hu3DModelPosSet(object->model[1], 0, 0, 0); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M429, 0x23)); + Hu3DModelCameraSet(object->model[2], 15); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[2], 0); + Hu3DModelPosSet(object->model[2], 0, 0, 0); + object->model[3] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[2]); + Hu3DModelCameraSet(object->model[3], 15); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[3], 1); + Hu3DModelPosSet(object->model[3], 0, 0, 0); + Hu3DModelRotSet(object->model[3], 0, -90.0f * lbl_1_bss_34, 0); + object->model[4] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[3]); + Hu3DModelCameraSet(object->model[4], 15); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[4], 1); + Hu3DModelPosSet(object->model[4], 0, 0, 0); + Hu3DModelRotSet(object->model[4], 0, -90.0f * lbl_1_bss_34, 0); + lbl_1_bss_114 = 45; + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + Hu3DModelAttrReset(object->model[temp_r30], HU3D_ATTR_DISPOFF); + } + object->work[0] = 1000; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_B8E0; } void ObjectSetup(void) { - s32 temp_r31; - omObjData *temp_r28; - Work8F68 *temp_r27; - s32 temp_r22; - s32 temp_r17; - Vec sp2C; - s32 sp1C; - s32 sp18; - s32 sp14; - - OSReport("******* M429 ObjectSetup *********\n"); - nMap = 0; - nChar = 0; - lbl_1_bss_33C = omInitObjMan(100, 8192); - omGameSysInit(lbl_1_bss_33C); - lbl_1_bss_308 = 0; - lbl_1_bss_2FE = -1; - lbl_1_bss_2FC = -1; - lbl_1_bss_28 = -1; - lbl_1_bss_24 =0 ; - lbl_1_bss_20 = 0; - lbl_1_bss_1C = 0; - lbl_1_bss_2F8 = -1; - lbl_1_bss_4 = -1; - lbl_1_bss_0 = -1; - lbl_1_bss_11C = 0; - lbl_1_bss_120 = 850; - lbl_1_bss_118 = 450; - for(temp_r31=0; temp_r31<2; temp_r31++) { - lbl_1_bss_2C[temp_r31] = 0; - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - lbl_1_bss_130[temp_r31].unk0 = -1; - lbl_1_bss_130[temp_r31].unk4 = 0; - } - lbl_1_bss_34 = frandmod(4); - fn_1_2684(); - fn_1_A118(); - temp_r17 = Hu3DGLightCreateV(&lbl_1_data_111C, &lbl_1_data_1128, &lbl_1_data_1134); - Hu3DGLightStaticSet(temp_r17, 1); - Hu3DGLightInfinitytSet(temp_r17); - Hu3DShadowCreate(30, 10, 20000); - Hu3DShadowTPLvlSet(0.5f); - VECNormalize(&lbl_1_data_1138, &sp2C); - Hu3DShadowPosSet(&lbl_1_data_1138, &sp2C, &lbl_1_data_1144); - omMakeGroupEx(lbl_1_bss_33C, 0, 4); - lbl_1_bss_1A4 = omGetGroupMemberListEx(lbl_1_bss_33C, 0); - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r28 = omAddObjEx(lbl_1_bss_33C, 100, 1, 10, 0, fn_1_8F68); - temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work8F68), MEMORY_DEFAULT_NUM); - temp_r28->work[0] = temp_r31; - temp_r27 = temp_r28->data; - temp_r27->unk110 = -1; - temp_r27->unk114 = temp_r28->work[0]; - temp_r27->unk120 = GWPlayerCfg[temp_r27->unk114].group; - } - (void)&sp14; + s32 temp_r31; + omObjData *temp_r28; + Work8F68 *temp_r27; + s32 temp_r22; + s32 temp_r17; + Vec sp2C; + s32 sp1C; + s32 sp18; + s32 sp14; - - for(temp_r31=0; temp_r31<4; temp_r31++) { - sp14 = -1; - sp18 = 40; - for(temp_r22=0; temp_r22<4; temp_r22++) { - temp_r27 = lbl_1_bss_1A4[temp_r22]->data; - if(temp_r27->unk110 < 0) { - sp1C = temp_r27->unk114+(temp_r27->unk120*4); - if(sp18 > sp1C) { - sp18 = sp1C; - sp14 = temp_r22; - } - } - } - ((Work8F68 *)lbl_1_bss_1A4[sp14]->data)->unk110 = temp_r31; - } - omMakeGroupEx(lbl_1_bss_33C, 1, 4); - lbl_1_bss_1A0 = omGetGroupMemberListEx(lbl_1_bss_33C, 1); - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r28 = omAddObjEx(lbl_1_bss_33C, 101, 2, 1, 1, fn_1_99F0); - temp_r28->work[0] = temp_r31; - } - omMakeGroupEx(lbl_1_bss_33C, 2, 4); - lbl_1_bss_19C = omGetGroupMemberListEx(lbl_1_bss_33C, 2); - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r28 = omAddObjEx(lbl_1_bss_33C, 102, 2, 0, 2, fn_1_33F8); - temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work3284), MEMORY_DEFAULT_NUM); - temp_r28->work[0] = temp_r31; - } - lbl_1_bss_1A = Hu3DModelCreateFile(0x3C002F); - Hu3DModelAttrSet(lbl_1_bss_1A, 1); - Hu3DModelAttrSet(lbl_1_bss_1A, 0x40000003); - omMakeGroupEx(lbl_1_bss_33C, 3, 20); - lbl_1_bss_198 = omGetGroupMemberListEx(lbl_1_bss_33C, 3); - lbl_1_bss_1A8 = omAddObjEx(lbl_1_bss_33C, 104, 5, 0, -1, fn_1_31AC); - MapObject[nMap++] = lbl_1_bss_1A8; - lbl_1_bss_1AC = omAddObjEx(lbl_1_bss_33C, 105, 5, 0, -1, fn_1_D5E8); - lbl_1_bss_C = HuSprAnimReadFile(0x3C003F); - HuSprAnimLock(lbl_1_bss_C); - lbl_1_bss_8 = Hu3DParManCreate(lbl_1_bss_C, 20, &lbl_1_data_13E8); - Hu3DParManAttrSet(lbl_1_bss_8, 1); + OSReport("******* M429 ObjectSetup *********\n"); + nMap = 0; + nChar = 0; + lbl_1_bss_33C = omInitObjMan(100, 8192); + omGameSysInit(lbl_1_bss_33C); + lbl_1_bss_308 = 0; + lbl_1_bss_2FE = -1; + lbl_1_bss_2FC = -1; + lbl_1_bss_28 = -1; + lbl_1_bss_24 = 0; + lbl_1_bss_20 = 0; + lbl_1_bss_1C = 0; + lbl_1_bss_2F8 = -1; + lbl_1_bss_4 = -1; + lbl_1_bss_0 = -1; + lbl_1_bss_11C = 0; + lbl_1_bss_120 = 850; + lbl_1_bss_118 = 450; + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + lbl_1_bss_2C[temp_r31] = 0; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + lbl_1_bss_130[temp_r31].unk0 = -1; + lbl_1_bss_130[temp_r31].unk4 = 0; + } + lbl_1_bss_34 = frandmod(4); + fn_1_2684(); + fn_1_A118(); + temp_r17 = Hu3DGLightCreateV(&lbl_1_data_111C, &lbl_1_data_1128, &lbl_1_data_1134); + Hu3DGLightStaticSet(temp_r17, 1); + Hu3DGLightInfinitytSet(temp_r17); + Hu3DShadowCreate(30, 10, 20000); + Hu3DShadowTPLvlSet(0.5f); + VECNormalize(&lbl_1_data_1138, &sp2C); + Hu3DShadowPosSet(&lbl_1_data_1138, &sp2C, &lbl_1_data_1144); + omMakeGroupEx(lbl_1_bss_33C, 0, 4); + lbl_1_bss_1A4 = omGetGroupMemberListEx(lbl_1_bss_33C, 0); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r28 = omAddObjEx(lbl_1_bss_33C, 100, 1, 10, 0, fn_1_8F68); + temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work8F68), MEMORY_DEFAULT_NUM); + temp_r28->work[0] = temp_r31; + temp_r27 = temp_r28->data; + temp_r27->unk110 = -1; + temp_r27->unk114 = temp_r28->work[0]; + temp_r27->unk120 = GWPlayerCfg[temp_r27->unk114].group; + } + (void)&sp14; + + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp14 = -1; + sp18 = 40; + for (temp_r22 = 0; temp_r22 < 4; temp_r22++) { + temp_r27 = lbl_1_bss_1A4[temp_r22]->data; + if (temp_r27->unk110 < 0) { + sp1C = temp_r27->unk114 + (temp_r27->unk120 * 4); + if (sp18 > sp1C) { + sp18 = sp1C; + sp14 = temp_r22; + } + } + } + ((Work8F68 *)lbl_1_bss_1A4[sp14]->data)->unk110 = temp_r31; + } + omMakeGroupEx(lbl_1_bss_33C, 1, 4); + lbl_1_bss_1A0 = omGetGroupMemberListEx(lbl_1_bss_33C, 1); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r28 = omAddObjEx(lbl_1_bss_33C, 101, 2, 1, 1, fn_1_99F0); + temp_r28->work[0] = temp_r31; + } + omMakeGroupEx(lbl_1_bss_33C, 2, 4); + lbl_1_bss_19C = omGetGroupMemberListEx(lbl_1_bss_33C, 2); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r28 = omAddObjEx(lbl_1_bss_33C, 102, 2, 0, 2, fn_1_33F8); + temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work3284), MEMORY_DEFAULT_NUM); + temp_r28->work[0] = temp_r31; + } + lbl_1_bss_1A = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M429, 0x2F)); + Hu3DModelAttrSet(lbl_1_bss_1A, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_1A, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + omMakeGroupEx(lbl_1_bss_33C, 3, 20); + lbl_1_bss_198 = omGetGroupMemberListEx(lbl_1_bss_33C, 3); + lbl_1_bss_1A8 = omAddObjEx(lbl_1_bss_33C, 104, 5, 0, -1, fn_1_31AC); + MapObject[nMap++] = lbl_1_bss_1A8; + lbl_1_bss_1AC = omAddObjEx(lbl_1_bss_33C, 105, 5, 0, -1, fn_1_D5E8); + lbl_1_bss_C = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M429, 0x3F)); + HuSprAnimLock(lbl_1_bss_C); + lbl_1_bss_8 = Hu3DParManCreate(lbl_1_bss_C, 20, &lbl_1_data_13E8); + Hu3DParManAttrSet(lbl_1_bss_8, 1); } void fn_1_E96C(omObjData *object) { - s32 temp_r31; - if(lbl_1_bss_0 >= 0) { - HuAudFXStop(lbl_1_bss_0); - lbl_1_bss_0 = -1; - } - if(WipeStatGet()) { - return; - } - if(lbl_1_bss_2FE >= 0) { - MGSeqKill(lbl_1_bss_2FE); - } - if(lbl_1_bss_2FC >= 0) { - MGSeqKill(lbl_1_bss_2FC); - } - MGSeqKillAll(); - HuAudAllStop(); - for(temp_r31=0; temp_r31<4; temp_r31++) { - CharModelKill(lbl_1_data_0[GWPlayerCfg[temp_r31].character]); - } - omOvlReturnEx(1, 1); + s32 temp_r31; + if (lbl_1_bss_0 >= 0) { + HuAudFXStop(lbl_1_bss_0); + lbl_1_bss_0 = -1; + } + if (WipeStatGet()) { + return; + } + if (lbl_1_bss_2FE >= 0) { + MGSeqKill(lbl_1_bss_2FE); + } + if (lbl_1_bss_2FC >= 0) { + MGSeqKill(lbl_1_bss_2FC); + } + MGSeqKillAll(); + HuAudAllStop(); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[temp_r31].character]); + } + omOvlReturnEx(1, 1); } diff --git a/src/REL/m430Dll/main.c b/src/REL/m430Dll/main.c new file mode 100644 index 00000000..d848689f --- /dev/null +++ b/src/REL/m430Dll/main.c @@ -0,0 +1,569 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m430Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +typedef struct M430DllMainWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + s32 unk_10; + u32 unk_14; + s32 unk_18; + s32 unk_1C; + s32 unk_20; + u32 unk_24; + u32 unk_28; + s32 unk_2C; + u32 unk_30; + s32 unk_34; +} M430DllMainWork; /* size = 0x38 */ + +void fn_1_10FC(omObjData *object); +void fn_1_168C(omObjData *object); +void fn_1_1B04(omObjData *object); +void fn_1_21E4(omObjData *object); +void fn_1_2710(omObjData *object); +omObjFunc fn_1_2D48(Process *process, omObjData *object); +void fn_1_2E80(omObjData *object); +omObjFunc fn_1_369C(Process *arg1, omObjData *object); +void fn_1_3768(omObjData *object); +s32 fn_1_4030(void); +void fn_1_65C(omObjData *object); +void fn_1_A54(omObjData *arg0); +void fn_1_B98(omObjData *object); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; + +Process *lbl_1_bss_38; +omObjData *lbl_1_bss_34; +omObjData *lbl_1_bss_30; +s16 lbl_1_bss_2C; +char lbl_1_bss_28[4]; +s16 lbl_1_bss_26; +s16 lbl_1_bss_24; +s16 lbl_1_bss_22; +s16 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s16 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + Process *var_r31; + LightData *var_r30; + + HuAudSndGrpSet(0x37); + lbl_1_bss_C = lbl_1_bss_8 = -1; + lbl_1_bss_4 = lbl_1_bss_0 = -1; + lbl_1_bss_2C = -1; + lbl_1_bss_14 = 1; + lbl_1_data_28.x = 200.0f; + lbl_1_data_28.y = 1200.0f; + lbl_1_data_28.z = 160.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_26 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_26); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_26]; + var_r30->unk_00 |= 0x8000; + lbl_1_data_18.x = 34.75f; + lbl_1_data_18.y = -24.75f; + lbl_1_data_18.z = 3500.0f; + sp14.x = sp14.y = sp14.z = 0.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + mtxRot(sp20, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f); + MTXMultVec(sp20, &sp8, &sp8); + Hu3DGLightPosAimSetV(lbl_1_bss_26, &sp8, &sp14); + Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14); + lbl_1_bss_24 = lbl_1_bss_22 = lbl_1_bss_20 = -1; + lbl_1_bss_1C = 1; + lbl_1_bss_18 = 1; + var_r31 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_38 = var_r31; + omGameSysInit(var_r31); + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(1, -1.0f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, -1.0f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0); + lbl_1_bss_30 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_30->work[0] = 2; + lbl_1_bss_34 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_65C); + fn_1_4A80(var_r31); + fn_1_BBC4(var_r31); + lbl_1_bss_10 = espEntry(DATA_MAKE_NUM(DATADIR_M430, 0x1B), 0x64, 0); + espPosSet(lbl_1_bss_10, 288.0, 240.0); + espScaleSet(lbl_1_bss_10, 0.22499999403953552, 60.0); + espDispOff(lbl_1_bss_10); +} + +void fn_1_65C(omObjData *object) +{ + M430DllMainWork *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M430DllMainWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M430DllMainWork)); + work->unk_00 = 0; + work->unk_04 = 0; + work->unk_0C = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_24 = 0; + work->unk_28 = 0; + work->unk_08 = 0; + work->unk_2C = 0; + work->unk_30 = 0; + work->unk_34 = 0; + object->func = fn_1_B98; +} + +void fn_1_720(omObjData *object) +{ + M430DllMainWork *work = object->data; + work->unk_04++; + work->unk_10++; + work->unk_18++; + work->unk_28++; + if ((omSysExitReq != 0) && (work->unk_00 != 5)) { + work->unk_00 = 4; + fn_1_A54(object); + } + if (lbl_1_bss_18 == 0) { + if (fn_1_4030() != 0) { + if ((Hu3DCamera->fov < 0.0f) || (Hu3DCamera[1].fov < 0.0f)) { + Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, 41.5f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0); + } + } + else if ((Hu3DCamera->fov < 0.0f) || (Hu3DCamera[1].fov >= 0.0f)) { + Hu3DCamera[1].fov = -1.0f; + Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x280, 0x1E0); + } + } +} + +void fn_1_A54(omObjData *object) +{ + M430DllMainWork *work = object->data; + if (work->unk_08 == 0) { + switch (work->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_18 = 0; + work->unk_00 = 1; + work->unk_10 = 0; + object->func = fn_1_2D48(lbl_1_bss_38, object); + break; + case 1: + work->unk_00 = 2; + work->unk_18 = 0; + object->func = fn_1_1B04; + break; + case 2: + work->unk_00 = 3; + work->unk_28 = 0; + object->func = fn_1_369C(lbl_1_bss_38, object); + break; + case 3: + case 4: + work->unk_08 = 1; + work->unk_00 = 5; + object->func = fn_1_10FC; + break; + case 5: + default: + work->unk_00 = 5; + object->func = fn_1_168C; + break; + } + work->unk_04 = 0; + } +} + +void fn_1_B98(omObjData *object) +{ + fn_1_720(object); + fn_1_A54(object); +} + +void fn_1_10FC(omObjData *object) +{ + M430DllMainWork *work = object->data; + fn_1_720(object); + + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_14 = 1; + work->unk_08 = 0; + fn_1_A54(object); + } +} + +void fn_1_168C(omObjData *object) +{ + fn_1_720(object); + if (WipeStatGet() == 0) { + fn_1_C00C(); + fn_1_4C48(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_1B04(omObjData *object) +{ + M430DllMainWork *work = object->data; + fn_1_720(object); + switch (work->unk_14) { + case 0: + lbl_1_bss_1C = 1; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 0; + espDispOn(lbl_1_bss_10); + work->unk_1C = 0x2D; + work->unk_20 = 0x3C; + CenterM->x = -450.0f; + CenterM[1].x = 450.0f; + CenterM->y = CenterM[1].y = 300.0f; + CenterM->z = CenterM[1].z = 950.0f; + CRotM->x = CRotM[1].x = -5.0f; + CRotM->y = CRotM[1].y = 0.0f; + CZoomM[0] = CZoomM[1] = 700.0f; + work->unk_14 = 1; + work->unk_18 = 0; + object->work[0] = 0; + return; + case 1: + if (object->work[0] == 0) { + if (WipeStatGet() == 0) { + lbl_1_bss_24 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_24, 320.0f, 240.0f); + object->work[0]++; + } + } + else { + if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_24) & 0x10) != 0)) { + lbl_1_bss_4 = HuAudSeqPlay(0x4A); + } + if ((MGSeqStatGet(lbl_1_bss_24) == 0) && (work->unk_08 == 0)) { + lbl_1_bss_2C = MGSeqCreate(1, work->unk_1C, -1, -1); + work->unk_14 = 2; + work->unk_18 = 0; + object->func = fn_1_21E4; + } + } + break; + } +} + +void fn_1_21E4(omObjData *object) +{ + M430DllMainWork *work = object->data; + s32 var_r27 = 0; + fn_1_720(object); + if (--work->unk_20 == 0) { + work->unk_20 = 0x3C; + work->unk_1C--; + if (work->unk_1C <= 0) { + var_r27 = 1; + } + } + if (var_r27 != 0) { + lbl_1_bss_22 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_22, 320.0f, 240.0f); + HuAudSeqFadeOut(lbl_1_bss_4, 0x64); + object->work[1] = 0; + work->unk_14 = 3; + work->unk_18 = 0; + if (work->unk_08 == 0) { + object->func = fn_1_2710; + } + } + MGSeqParamSet(lbl_1_bss_2C, 1, work->unk_1C); +} + +void fn_1_2710(omObjData *object) +{ + M430DllMainWork *work = object->data; + if (lbl_1_bss_2C >= 0) { + MGSeqParamSet(lbl_1_bss_2C, 2, -1); + lbl_1_bss_2C = -1; + } + fn_1_720(object); + if (object->work[1] == 0) { + if (MGSeqStatGet(lbl_1_bss_22) == 0) { + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 1; + } + object->work[1]++; + HuAudFXFadeOut(lbl_1_bss_C, 0x1E); + } + } + else if ((WipeStatGet() == 0) && (work->unk_30 == 0x1111)) { + work->unk_14 = 4; + work->unk_18 = 0; + fn_1_A54(object); + } +} + +omObjFunc fn_1_2D48(Process *process, omObjData *object) +{ + CenterM->x = CenterM[1].x = 0.0f; + CenterM->y = CenterM[1].y = 300.0f; + CenterM->z = CenterM[1].z = 950.0f; + CRotM->x = CRotM[1].x = -5.0f; + CRotM->y = CRotM[1].y = 0.0f; + CZoomM[0] = CZoomM[1] = 700.0f; + object->work[0] = object->work[1] = 0; + lbl_1_bss_1C = 0; + lbl_1_bss_C = HuAudFXPlay(0x674); + return fn_1_2E80; +} + +void fn_1_2E80(omObjData *object) +{ + M430DllMainWork *work = object->data; + fn_1_720(object); + work->unk_0C = 1; + object->work[0]++; + switch (object->work[1]) { + case 0: + if (object->work[0] > 180.0f) { + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 1; + } + object->work[1]++; + object->work[0] = 0; + } + break; + case 1: + if (WipeStatGet() == 0) { + object->work[0] = 0; + work->unk_0C = 2; + fn_1_A54(object); + } + break; + } +} + +omObjFunc fn_1_369C(Process *arg0, omObjData *object) +{ + M430DllMainWork *work = object->data; + s32 spC = 0; + s32 sp8 = 1; + lbl_1_bss_1C = 0; + espDispOff(lbl_1_bss_10); + fn_1_BB98(1); + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 0; + } + CenterM->x = 0.0f; + lbl_1_bss_8 = HuAudFXPlay(0x679); + return fn_1_3768; +} + +void fn_1_3768(omObjData *object) +{ + M430DllMainWork *work = object->data; + + fn_1_720(object); + if (WipeStatGet() == 0) { + work->unk_24 = 1; + if (work->unk_28 >= 210.0f) { + work->unk_24 = 2; + fn_1_A54(object); + } + } + else { + work->unk_28 = 0; + } +} + +s32 fn_1_4030(void) +{ + return lbl_1_bss_1C; +} + +u32 fn_1_4040(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_00; +} + +u32 fn_1_4058(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_0C; +} + +u32 fn_1_4070(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_14; +} + +u32 fn_1_4088(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_24; +} + +void fn_1_40A0(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_2C = arg0; +} + +s32 fn_1_40B8(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_2C; +} + +void fn_1_40D0(s32 arg0) +{ + + OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_30 |= (1 << ((arg0 & 3) * 4)); +} + +void fn_1_4100(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_34 |= (1 << ((arg0 & 3) * 4)); +} + +float fn_1_4130(void) +{ + M430DllMainWork *work = lbl_1_bss_34->data; + float var_f31 = work->unk_1C - 1; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_f31 += 0.016666668f * work->unk_20; + return var_f31; +} + +void fn_1_41F0(Vec *arg0, Vec *arg1) +{ + Vec sp10; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + sp10.x = arg1->x - arg0->x; + sp10.y = arg1->y - arg0->y; + sp10.z = arg1->z - arg0->z; + Center.x = arg1->x; + Center.y = arg1->y; + Center.z = arg1->z; + CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z))); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y))); +} + +void fn_1_4538(float sp8, float spC, float sp10, float sp14, float sp18, float sp1C) +{ + Vec sp40; + Vec sp34; + sp40.x = sp8; + sp40.y = spC; + sp40.z = sp10; + + sp34.x = sp14; + sp34.y = sp18; + sp34.z = sp1C; + fn_1_41F0(&sp40, &sp34); +} + +float fn_1_48B0(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_49CC(float arg0, float arg1) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg1 - arg0, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} diff --git a/src/REL/m430Dll/player.c b/src/REL/m430Dll/player.c new file mode 100644 index 00000000..baa21d63 --- /dev/null +++ b/src/REL/m430Dll/player.c @@ -0,0 +1,2428 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m430Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +inline double fabs2(double x) +{ + return (double)fabs(x); +} + +typedef struct M430PlayerData170Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; +} M430PlayerData170Struct; /* size = 0x08 */ + +typedef struct M430PlayerBss160Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10[6]; + s32 unk_28[6][3]; + s32 unk_70[6][3]; + s32 unk_B8; + s32 unk_BC; +} M430PlayerBss160Struct; /* size = 0xC0 */ + +typedef struct M430PlayerBss164Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + AnimData *unk_14; + Vec unk_18; + Vec unk_24; + Vec unk_30; +} M430PlayerBss164Struct; /* size = 0x3C */ + +typedef struct M430PlayerBss168Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + Vec unk_14; + Vec unk_20; + Vec unk_2C; +} M430PlayerBss168Struct; /* size = 0x38 */ + +typedef struct M430PlayerBss16CStruct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + float unk_18; + Vec unk_1C; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; + float unk_3C; +} M430PlayerBss16CStruct; /* size = 0x40 */ + +typedef struct M430PlayerBss170Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + Vec *unk_4C; + Vec *unk_50; + Vec2f *unk_54; + s32 unk_58; + u32 unk_5C; + void *unk_60; +} M430PlayerBss170Struct; /* size = 0x64 */ + +typedef struct M430PlayerBss174Struct { + s32 unk_00[2]; + s32 unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + s32 unk_20; +} M430PlayerBss174Struct; /* size = 0x24 */ + +typedef struct M430PlayerWork { + u32 unk_00; + u16 unk_04; + u16 unk_06; + u16 unk_08; + u16 unk_0A; + u16 unk_0C; + u16 unk_0E; + u16 unk_10; + u16 unk_12; + u16 unk_14; + u16 unk_16; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + s32 unk_34; + s32 unk_38; + char unk3C[4]; + s32 unk_40; + u32 unk_44; + float unk_48; + float unk_4C; + float unk_50; + float unk_54; + s32 unk_58; + s32 unk_5C; + s32 unk_60; + s32 unk_64; + s32 unk_68; + s32 unk_6C; + float unk_70; + s32 unk_74; + s32 unk_78; + float unk_7C; +} M430PlayerWork; /* size = 0x80 */ + +void fn_1_100A0(void); +void fn_1_1033C(void); +void fn_1_1053C(void); +void fn_1_10540(s32 arg0, s32 arg1, float arg8, float arg9, float argA); +void fn_1_1058C(s32 arg0, float arg8); +void fn_1_105B8(s32 arg0); +void fn_1_1061C(M430PlayerBss170Struct *arg0); +void fn_1_10948(ModelData *model, Mtx matrix); +void fn_1_10B88(void); +void fn_1_10D1C(void); +void fn_1_10F20(void); +s32 fn_1_10F24(s32 arg0, float arg8, float arg9, float argA); +s32 fn_1_110A8(s32 arg0, float arg8, float arg9, float argA, s32 arg1); +s32 fn_1_111BC(s32 arg0, float arg8, Vec *arg1); +void fn_1_11314(s32 arg0); +void fn_1_113AC(void); +void fn_1_114F0(void); +void fn_1_11644(void); +s32 fn_1_11648(s32 arg0, float arg8, float arg9, float argA); +s32 fn_1_117A4(s32 arg0, float arg8, float arg9, float argA, s32 arg1); +s32 fn_1_11A1C(s32 arg0, float arg8, Vec *arg1); +M430PlayerBss168Struct *fn_1_11B64(s32 arg0); +void fn_1_11B94(s32 arg0); +void fn_1_11C1C(void); +void fn_1_11D70(void); +void fn_1_11F60(void); +s32 fn_1_11F90(s32 arg0, float arg8, float arg9, float argA); +void fn_1_12550(s32 arg0); +void fn_1_125C4(void); +void fn_1_129CC(void); +void fn_1_12D74(void); +void fn_1_12DF0(s32 arg0); +void fn_1_12F20(float arg8, float *arg0, float *arg1, float *arg2, float *arg3); +float fn_1_1303C(float arg8, float arg9); +float fn_1_13154(float arg8, float arg9, float argA); +void fn_1_133A4(AnimData *arg0); +void fn_1_133DC(Mtx arg0, Vec *arg1); +void fn_1_BE24(omObjData *object); +void fn_1_C040(void); +void fn_1_C1E4(omObjData *object); +void fn_1_CA3C(omObjData *object); +void fn_1_D2D0(omObjData *object); +void fn_1_D828(omObjData *object); +void fn_1_E8FC(omObjData *object); +void fn_1_F0D8(omObjData *object); +s32 fn_1_F62C(omObjData *object); +void fn_1_F6A0(omObjData *object); +void fn_1_FC9C(omObjData *object); + +M430PlayerData170Struct lbl_1_data_170[7] = { + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x42), -1 }, + { 0, 1 }, + { 0, 2 }, + { 0, 3 }, + { 0, -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), -1 }, +}; +M430PlayerData170Struct lbl_1_data_1A8[4] = { + { 0, 4 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), -1 }, +}; +s32 lbl_1_data_1C8[5] = { 0, DATA_MAKE_NUM(DATADIR_M430, 0x31), DATA_MAKE_NUM(DATADIR_M430, 0x39), DATA_MAKE_NUM(DATADIR_M430, 0x41), + DATA_MAKE_NUM(DATADIR_M430, 0x49) }; +float lbl_1_data_1DC[7] = { -262.5f, -173.25f, -86.625f, 0.0f, 86.625f, 173.25f, 262.5f }; +Vec lbl_1_data_1F8[8] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 160.0f }, + { 60.000004f, 0.0f, 0.0f }, + { -60.000004f, 0.0f, 0.0f }, + { 50.0f, 0.0f, 100.0f }, + { -50.0f, 0.0f, 100.0f }, + { 60.000004f, 0.0f, -120.00001f }, + { -60.000004f, 0.0f, -120.00001f }, +}; +float lbl_1_data_258[8] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 25.0f, 0.0f, 25.0f }; +s32 lbl_1_data_278[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x1C), DATA_MAKE_NUM(DATADIR_M430, 0x1D) }; +s32 lbl_1_data_280[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x1E), DATA_MAKE_NUM(DATADIR_M430, 0x1F) }; +s32 lbl_1_data_288[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x20), DATA_MAKE_NUM(DATADIR_M430, 0x21) }; + +s32 lbl_1_bss_17C; +Process *lbl_1_bss_178; +M430PlayerBss174Struct *lbl_1_bss_174; +M430PlayerBss170Struct *lbl_1_bss_170; +M430PlayerBss16CStruct *lbl_1_bss_16C; +M430PlayerBss168Struct *lbl_1_bss_168; +M430PlayerBss164Struct *lbl_1_bss_164; +M430PlayerBss160Struct *lbl_1_bss_160; +s32 lbl_1_bss_15C; +s32 lbl_1_bss_158; + +void fn_1_BBC4(Process *process) +{ + Vec sp14; + Vec sp8; + + lbl_1_bss_178 = process; + fn_1_C040(); + fn_1_100A0(); + fn_1_10B88(); + fn_1_113AC(); + fn_1_11C1C(); + fn_1_125C4(); + omAddObjEx(process, 0x2D, 0, 0, -1, fn_1_BE24); + sp14.x = CenterM[0].x + (CZoomM[0] * (sind(CRotM[0].y) * cosd(CRotM[0].x))); + sp14.y = CenterM[0].y + (CZoomM[0] * -sind(CRotM[0].x)); + sp14.z = CenterM[0].z + (CZoomM[0] * (cosd(CRotM[0].y) * cosd(CRotM[0].x))); + VECSubtract(CenterM, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerSetEX(&sp14, &sp8, 100000.0f, 566.6667f, 0.0f, 300.0f, 300.0f); +} + +void fn_1_BE24(omObjData *object) +{ + Vec sp14; + Vec sp8; + + fn_1_1033C(); + fn_1_10D1C(); + fn_1_114F0(); + fn_1_11D70(); + fn_1_129CC(); + sp14.x = CenterM[0].x + (CZoomM[0] * (sind(CRotM[0].y) * cosd(CRotM[0].x))); + sp14.y = CenterM[0].y + (CZoomM[0] * -sind(CRotM[0].x)); + sp14.z = CenterM[0].z + (CZoomM[0] * (cosd(CRotM[0].y) * cosd(CRotM[0].x))); + VECSubtract(CenterM, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); +} + +void fn_1_C00C(void) +{ + HuAudFXListnerKill(); + fn_1_1053C(); + fn_1_10F20(); + fn_1_11644(); + fn_1_11F60(); + fn_1_12D74(); +} + +void fn_1_C040(void) +{ + s8 spC[4]; + s32 sp8; + s32 var_r31; + omObjData *var_r30; + s32 var_r29; + s32 var_r28; + + sp8 = 0; + lbl_1_bss_17C = 1; + omMakeGroupEx(lbl_1_bss_178, 0, 4); + omGetGroupMemberListEx(lbl_1_bss_178, 0); + lbl_1_bss_174 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430PlayerBss174Struct), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_174, 0, 2 * sizeof(M430PlayerBss174Struct)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[var_r31] = -1; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = GWPlayerCfg[var_r31].group; + if (spC[var_r29] == -1) { + spC[var_r29] = var_r31; + } + else { + break; + } + } + if (var_r31 < 4) { + spC[0] = 0; + spC[1] = 1; + spC[2] = 2; + spC[3] = 3; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = omAddObjEx(lbl_1_bss_178, 0x28, 3, 7, 0, fn_1_C1E4); + var_r28 = spC[var_r31]; + var_r30->work[0] = var_r28; + var_r30->work[1] = var_r31 >> 1; + var_r30->work[2] = var_r31 & 1; + } +} + +void fn_1_C1E4(omObjData *object) +{ + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + u32 var_r27; + HsfData *var_r26; + HsfMaterial *var_r25; + ModelData *var_r24; + s32 var_r23; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M430PlayerWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M430PlayerWork)); + var_r27 = object->work[0]; + var_r23 = GWPlayerCfg[var_r27].character; + work->unk_38 = var_r23; + work->unk_00 = var_r27; + work->unk_04 = object->work[1]; + work->unk_06 = GWPlayerCfg[var_r27].pad_idx; + work->unk_08 = GWPlayerCfg[var_r27].iscom; + work->unk_0A = GWPlayerCfg[var_r27].diff; + work->unk_0C = object->work[2]; + work->unk_0E = 0; + work->unk_10 = 0; + work->unk_12 = 0; + work->unk_14 = 0; + work->unk_16 = 0; + if (work->unk_04 == 0) { + work->unk_18 = 450.0f; + } + else { + work->unk_18 = -450.0f; + } + work->unk_34 = 1; + work->unk_24 = 12.500001f; + work->unk_28 = 0.0f; + work->unk_1C = 180.0f; + work->unk_2C = 0.0f; + work->unk_30 = 0.0f; + work->unk_20 = 0.0f; + work->unk_40 = work->unk_44 = 0; + work->unk_48 = work->unk_4C = 0.0f; + work->unk_50 = 0.0f; + work->unk_54 = 0.0f; + work->unk_74 = 0; + work->unk_78 = -1; + work->unk_7C = 0.0f; + work->unk_60 = -1; + work->unk_64 = -1; + work->unk_68 = -1; + work->unk_6C = -1; + work->unk_70 = lbl_1_data_258[var_r23]; + object->model[0] = CharModelCreate(work->unk_38, 4); + Hu3DModelCameraSet(object->model[0], 3); + Hu3DModelLayerSet(object->model[0], 6); + CharModelStepTypeSet(work->unk_38, 3); + if (work->unk_0C == 0) { + for (var_r29 = 0; var_r29 < 7; var_r29++) { + if ((lbl_1_data_170[var_r29].unk_04) == 0xFFFFFFFF) { + object->motion[var_r29] = CharModelMotionCreate(work->unk_38, lbl_1_data_170[var_r29].unk_00); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], work->unk_38 + lbl_1_data_1C8[lbl_1_data_170[var_r29].unk_04]); + } + if (var_r29 == 5) { + CharModelVoiceEnableSet(work->unk_38, object->motion[var_r29], 0); + } + } + work->unk_58 = 0; + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_278[work->unk_04]); + Hu3DModelLayerSet(object->model[1], 2); + Hu3DModelCameraSet(object->model[1], 3); + Hu3DModelScaleSet(object->model[1], 1.2f, 1.2f, 1.2f); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x25)); + Hu3DModelLayerSet(object->model[2], 1); + Hu3DModelCameraSet(object->model[2], 3); + work->unk_60 = HuAudFXPlay(0x67A); + work->unk_68 = 0x50; + if (work->unk_60 != -1) { + HuAudFXVolSet(work->unk_60, work->unk_68); + } + if (work->unk_04 == 0) { + work->unk_64 = HuAudFXPlay(0x675); + } + else { + work->unk_64 = HuAudFXPlay(0x676); + } + if (work->unk_64 != -1) { + HuAudFXPitchSet(work->unk_64, 0); + } + } + else { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_data_1A8[var_r29].unk_04 == 0xFFFFFFFF) { + object->motion[var_r29] = CharModelMotionCreate(work->unk_38, lbl_1_data_1A8[var_r29].unk_00); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], work->unk_38 + lbl_1_data_1C8[lbl_1_data_1A8[var_r29].unk_04]); + } + if (var_r29 == 2) { + CharModelVoiceEnableSet(work->unk_38, object->motion[var_r29], 0); + } + } + work->unk_58 = 0; + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_280[work->unk_04]); + Hu3DModelLayerSet(object->model[1], 7); + Hu3DModelCameraSet(object->model[1], 3); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[1], 2.0f); + object->model[2] = Hu3DModelCreateFile(lbl_1_data_288[work->unk_04]); + Hu3DModelLayerSet(object->model[2], 6); + Hu3DModelCameraSet(object->model[2], 3); + } + CharModelMotionDataClose(work->unk_38); + object->trans.x = work->unk_18; + if (work->unk_0C == 0) { + object->trans.y = 0.0f; + } + else { + object->trans.y = 200.0f; + } + if (work->unk_04 == 0) { + object->trans.z = -100000.0f; + } + else { + object->trans.z = -101000.0f; + } + object->rot.y = 180.0f; + work->unk_20 = object->trans.y; + var_r28 = &lbl_1_bss_174[work->unk_04]; + if (work->unk_0C == 0) { + var_r28->unk_00[work->unk_0C] = work->unk_00; + if (work->unk_08 != 0) { + var_r23 = var_r28->unk_08 | 1; + var_r28->unk_08 = var_r23; + } + var_r28->unk_0C = object->trans.x; + var_r28->unk_10 = 0.0f; + var_r28->unk_14 = object->trans.z; + var_r28->unk_18 = object->trans.z; + var_r28->unk_1C = work->unk_24; + var_r28->unk_20 = 0; + lbl_1_bss_158 = 1; + } + else { + var_r28->unk_00[work->unk_0C] = work->unk_00; + if (work->unk_08 != 0) { + var_r28->unk_08 = var_r28->unk_08 | 2; + } + } + if (work->unk_0C != 0) { + var_r24 = &Hu3DData[object->model[1]]; + var_r26 = var_r24->hsfData; + for (var_r25 = var_r26->material, var_r29 = 0; var_r29 < var_r26->materialCnt; var_r29++, var_r25++) { + var_r25->flags |= 2; + } + } + object->func = fn_1_CA3C; + (void)var_r24; + (void)var_r24; +} + +void fn_1_CA3C(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + HsfData *var_r27; + HsfMaterial *var_r26; + ModelData *var_r25; + + work = object->data; + var_r28 = &lbl_1_bss_174[work->unk_04]; + work->unk_40 = 0; + work->unk_44 = 0; + work->unk_48 = 0.0f; + work->unk_4C = 0.0f; + if (work->unk_0C == 0) { + work->unk_34 = 3; + work->unk_24 = -41.000004f; + object->rot.y = 0.0f; + object->rot.z = 0.0f; + object->trans.z -= work->unk_30; + fn_1_D828(object); + if (work->unk_60 != -1) { + HuAudFXVolSet(work->unk_60, work->unk_68); + } + if (work->unk_64 != -1) { + HuAudFXPitchSet(work->unk_64, (s32)(8192.0f * (work->unk_68 / 127.0f))); + } + object->rot.y = object->rot.z = 0.0f; + if (++work->unk_10 > (60.0f * (1.5f + (0.5f * work->unk_04)))) { + work->unk_30 += 30.000002f; + var_r28->unk_18 = object->trans.z = object->trans.z + work->unk_30; + work->unk_68 += 3; + if (work->unk_68 > 0x7F) { + work->unk_68 = 0x7F; + } + } + else { + var_r28->unk_18 = object->trans.z; + } + var_f30 = work->unk_70 * sind(object->rot.y); + var_f29 = work->unk_70 * cosd(object->rot.y); + Hu3DModelPosSet(object->model[1], object->trans.x + var_f30, object->trans.y, object->trans.z + var_f29); + Hu3DModelRotSet(object->model[1], object->rot.x, object->rot.y, object->rot.z); + Hu3DModelPosSet(object->model[2], object->trans.x + var_f30, object->trans.y - 150.0f, object->trans.z + var_f29); + Hu3DModelRotSet(object->model[2], object->rot.x, 180.0f + object->rot.y, object->rot.z); + fn_1_10540(work->unk_04, 0, object->trans.x, 25.0f + object->trans.y, object->trans.z - 100.0f); + if (work->unk_10 > 30.0f) { + var_f31 = 0.016666668f * (work->unk_10 - 30.0f); + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind((90.0f * var_f31)); + var_f31 *= var_f31; + } + else { + var_f31 = 0.0f; + } + CenterM[work->unk_04].x = work->unk_18 - (var_f31 * work->unk_18); + CenterM[work->unk_04].z = (950.0f * (0.5f + (0.5f * var_f31))) + fn_1_7FBC(work->unk_04); + } + else { + work->unk_1C = 0.0f; + object->rot.y = 0.0f; + object->rot.z = 0.0f; + fn_1_E8FC(object); + work->unk_1C = 0.0f; + object->rot.y = 0.0f; + object->rot.z = 0.0f; + object->trans.y = 200.0f; + object->trans.z = var_r28->unk_18 - 300.0f; + object->rot.z = 0.0f; + for (var_r29 = 0; var_r29 < 2; var_r29++) { + Hu3DModelPosSet(object->model[var_r29 + 1], object->trans.x, 150.0f + object->trans.y, 50.0f + object->trans.z); + Hu3DModelRotSet(object->model[var_r29 + 1], object->rot.x, object->rot.y, object->rot.z); + } + fn_1_10540(work->unk_04, 1, object->trans.x, 150.0f + object->trans.y, 50.0f + object->trans.z); + if (work->unk_6C == -1) { + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z; + work->unk_6C = HuAudFXEmiterPlay(0x67B, &sp8); + } + else { + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z; + HuAudFXEmiterUpDate(work->unk_6C, &sp8); + } + } + if (fn_1_4058() == 2) { + if (work->unk_0C == 0) { + work->unk_34 = 1; + work->unk_24 = 12.500001f; + work->unk_28 = 0.0f; + work->unk_68 = 0x50; + object->trans.y = 0.0f; + } + else { + var_r25 = &Hu3DData[object->model[1]]; + var_r27 = var_r25->hsfData; + for (var_r26 = var_r27->material, var_r29 = 0; var_r29 < var_r27->materialCnt; var_r29++, var_r26++) { + var_r26->flags &= 0xFFFFFFFD; + } + if (work->unk_6C != -1) { + HuAudFXStop(work->unk_6C); + } + work->unk_6C = -1; + if (work->unk_04 == 0) { + work->unk_6C = HuAudFXPlay(0x67C); + } + else { + work->unk_6C = HuAudFXPlay(0x67D); + } + if (work->unk_6C != -1) { + HuAudFXPitchSet(work->unk_6C, -0x2000); + } + work->unk_28 = 0.0f; + object->trans.y = 200.0f; + object->rot.z = 180.0f; + } + object->trans.x *= -1.0f; + work->unk_18 *= -1.0f; + object->trans.x = work->unk_18; + object->trans.z = 0.0f; + object->rot.x = 0.0f; + object->rot.y = 180.0f; + work->unk_1C = 180.0f; + work->unk_20 = object->trans.y; + lbl_1_bss_158 = 0; + object->func = fn_1_D2D0; + } +} + +void fn_1_D2D0(omObjData *object) +{ + s32 spC; + s32 sp8; + float var_f31; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + + work = object->data; + spC = 0; + sp8 = -1; + var_r28 = &lbl_1_bss_174[work->unk_04]; + if ((lbl_1_bss_15C == 0) && (fn_1_4070() >= 2)) { + fn_1_12DF0(1); + } + if (lbl_1_bss_17C != 0) { + Hu3DModelCameraSet(object->model[0], 3); + Hu3DModelCameraSet(object->model[1], 3); + if (object->model[2] != -1) { + Hu3DModelCameraSet(object->model[2], 3); + } + } + else { + if (work->unk_04 == 0) { + var_r29 = 1; + } + else { + var_r29 = 2; + } + Hu3DModelCameraSet(object->model[0], var_r29); + Hu3DModelCameraSet(object->model[1], var_r29); + if (object->model[2] != -1) { + Hu3DModelCameraSet(object->model[2], var_r29); + } + } + if (fn_1_4070() == 2) { + work->unk_40 = HuPadBtn[work->unk_06]; + work->unk_44 = HuPadBtnDown[work->unk_06]; + work->unk_48 = HuPadStkX[work->unk_06]; + work->unk_4C = HuPadStkY[work->unk_06]; + } + else { + work->unk_40 = 0; + work->unk_44 = 0; + work->unk_48 = 0.0f; + work->unk_4C = 0.0f; + } + if (fn_1_4070() < 2) { + work->unk_1C = 180.0f; + work->unk_28 = 0.0f; + object->trans.x = work->unk_18; + object->rot.y = 180.0f; + } + if (work->unk_0C == 0) { + fn_1_D828(object); + var_f31 = (work->unk_24 - 12.500001f) / 28.500004f; + work->unk_68 = 80.0f + (47.0f * var_f31); + if (work->unk_60 != -1) { + HuAudFXVolSet(work->unk_60, work->unk_68); + } + if (work->unk_64 != -1) { + HuAudFXPitchSet(work->unk_64, (s32)(8192.0f * (work->unk_68 / 127.0f))); + } + } + else { + fn_1_E8FC(object); + var_f31 = (var_r28->unk_1C - 12.500001f) / 28.500004f; + var_f31 = 8192.0f + (-16384.0f * (1.0f - var_f31)); + if (work->unk_6C != -1) { + HuAudFXPitchSet(work->unk_6C, var_f31); + } + } + if (fn_1_4070() == 3) { + fn_1_40D0(work->unk_00); + work->unk_5C = 0; + return; + } + if (fn_1_4070() == 4) { + work->unk_0E = 2; + work->unk_10 = 0; + if (work->unk_0C == 0) { + work->unk_58 = 4; + } + else { + work->unk_58 = 1; + } + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + Hu3DModelCameraSet(object->model[0], 1); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if ((object->model[1] != -1) && (work->unk_0C != 0)) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + if (work->unk_60 != -1) { + HuAudFXStop(work->unk_60); + } + if (work->unk_64 != -1) { + HuAudFXStop(work->unk_64); + } + work->unk_60 = work->unk_64 = -1; + if (work->unk_6C != -1) { + HuAudFXStop(work->unk_6C); + } + if (object->model[2] != -1) { + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + } + fn_1_105B8(work->unk_04); + fn_1_11314(work->unk_04); + fn_1_11B94(work->unk_04); + fn_1_12550(work->unk_04); + object->func = fn_1_F0D8; + } +} + +void fn_1_D828(omObjData *var_r30) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + M430PlayerWork *var_r31; + M430PlayerBss174Struct *var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = var_r30->data; + var_r27 = -1; + var_r29 = &lbl_1_bss_174[var_r31->unk_04]; + if ((fn_1_4070() == 2) && (var_r31->unk_08 != 0)) { + fn_1_F6A0(var_r30); + } + mtxRot(sp20, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + sp20[1][0] *= var_r30->scale.y; + sp20[1][1] *= var_r30->scale.y; + sp20[1][2] *= var_r30->scale.z; + var_r30->trans.y = 0.3f * (100.0f * (var_r31->unk_24 / 41.000004f)); + if (var_r30->trans.y < 0.0f) { + var_r30->trans.y *= -0.5f; + } + var_f27 = 15.0f * (var_r31->unk_24 / 41.000004f); + if (var_r31->unk_24 < 0.0f) { + var_f27 *= -0.5f; + } + switch (var_r31->unk_0E) { + case 0: + var_r31->unk_12 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_12; + var_r31->unk_14 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_14; + var_r30->rot.x = (2.5 * sind(var_r31->unk_12)) - var_f27; + var_r30->rot.z = 2.0 * cosd(var_r31->unk_14); + for (var_r28 = 0; var_r28 < 8; var_r28++) { + sp14.x = lbl_1_data_1F8[var_r28].x; + sp14.y = lbl_1_data_1F8[var_r28].y; + sp14.z = lbl_1_data_1F8[var_r28].z; + fn_1_133DC(&sp20[0], &sp14); + var_f31 = var_r31->unk_70 * sind(var_r30->rot.y); + var_f29 = var_r31->unk_70 * cosd(var_r30->rot.y); + if (fn_1_110A8( + var_r31->unk_04, var_f31 + (sp14.x + var_r30->trans.x), sp14.y + var_r30->trans.y, var_f29 + (sp14.z + var_r30->trans.z), 1) + != 0) { + break; + } + } + if (var_r28 < 8) { + var_r31->unk_58 = 3; + CharModelMotionShiftSet(var_r31->unk_38, var_r30->motion[var_r31->unk_58], 0.0f, 10.0f, 0); + var_r31->unk_0E = 1; + var_r31->unk_10 = 0; + if (var_r31->unk_04 == 0) { + HuAudFXPlay(0x678); + } + else { + HuAudFXPlay(0x67E); + } + HuAudCharVoicePlay(var_r31->unk_38, 0x123); + omVibrate(var_r31->unk_00, 0xC, 4, 2); + var_r31->unk_2C = 5.0f; + var_r31->unk_16 = frand() & 3; + } + break; + case 1: + var_r31->unk_34 = 1; + var_r31->unk_44 = 0; + var_r31->unk_48 = 0.0f; + var_r31->unk_12 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_12; + var_r31->unk_14 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_14; + var_r30->rot.x = (2.5 * sind(var_r31->unk_12)) - var_f27; + var_r30->rot.z = 2.0 * cosd(var_r31->unk_14); + var_r31->unk_2C = 5.0f - (5.0f * (0.011111111f * var_r31->unk_10)); + var_f25 = 7.0 * (var_r31->unk_2C * sind((10.0f * var_r31->unk_10))); + if ((var_r31->unk_16 & 1) != 0) { + var_r30->rot.x += var_f25; + } + else { + var_r30->rot.x -= var_f25; + } + if ((var_r31->unk_16 & 2) != 0) { + var_r30->rot.z += var_f25; + } + else { + var_r30->rot.z -= var_f25; + } + if ((var_r31->unk_10 & 1) != 0) { + Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + if (++var_r31->unk_10 >= 90.0f) { + var_r31->unk_0E = 0; + var_r31->unk_10 = 0; + Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + break; + } + var_f24 = var_r31->unk_48; + var_f23 = var_f24; + if (fabs2(var_f23) < 8.0) { + var_f24 = 0.0f; + } + var_r31->unk_28 *= 0.98f; + var_r31->unk_28 += 0.0017499999f * var_f24; + if (var_r31->unk_28 < -8.75f) { + var_r31->unk_28 = -8.75f; + } + else if (var_r31->unk_28 > 8.75f) { + var_r31->unk_28 = 8.75f; + } + var_r30->trans.x += var_r31->unk_28; + var_f26 = 180.0f - (30.0f * (0.015625f * var_f24)); + var_r31->unk_1C = fn_1_13154(var_f26, var_r31->unk_1C, 1.0f); + var_r30->rot.y = var_r31->unk_1C; + if (var_r30->trans.x > (350.0f + var_r31->unk_18)) { + var_r30->trans.x = 350.0f + var_r31->unk_18; + } + else if (var_r30->trans.x < (var_r31->unk_18 - 350.0f)) { + var_r30->trans.x = var_r31->unk_18 - 350.0f; + } + if (var_r31->unk_0E == 0) { + if ((var_r31->unk_48 > 8.0f) && (var_r30->rot.y < 170.0f)) { + var_r27 = 1; + } + else if ((var_r31->unk_48 < -8.0f) && (var_r30->rot.y > 190.0f)) { + var_r27 = 2; + } + else { + var_r27 = 0; + } + if ((var_r27 != -1) && (var_r31->unk_58 != var_r27) && (CharModelMotionShiftIDGet(var_r31->unk_38) < 0)) { + var_r31->unk_58 = var_r27; + CharModelMotionShiftSet(var_r31->unk_38, var_r30->motion[var_r31->unk_58], 0.0f, 10.0f, 0); + } + } + if ((var_r31->unk_44 & 0x100) != 0) { + var_r31->unk_34++; + } + else if ((var_r31->unk_44 & 0x200) != 0) { + var_r31->unk_34--; + } + if (var_r31->unk_34 < 1) { + var_r31->unk_34 = 1; + } + else if (var_r31->unk_34 > 3) { + var_r31->unk_34 = 3; + } + switch (var_r31->unk_34) { + case 1: + var_f30 = 12.500001f; + (void)var_f30; + break; + case 2: + var_f30 = 27.916668f; + (void)var_f30; + break; + default: + var_f30 = 41.000004f; + break; + } + if (fabs(var_f30 - var_r31->unk_24) < 1.6666667461395264) { + var_r31->unk_24 = var_f30; + } + else if (var_f30 > var_r31->unk_24) { + var_r31->unk_24 += 1.6666667f; + } + else { + var_r31->unk_24 -= 1.6666667f; + } + var_r30->trans.z -= var_r31->unk_24; + if (fn_1_4070() >= 1) { + if ((var_r31->unk_50 -= var_r31->unk_24) < 0.0f) { + var_r31->unk_50 = 4500.0f - (500.0f * ((frand() & 0x8F) / 128.0f)); + var_f31 = var_r31->unk_18 + lbl_1_data_1DC[frand() & 7]; + fn_1_10F24(var_r31->unk_04, var_f31, var_r30->trans.y - 100.0f, -6000.0f + var_r30->trans.z); + } + if ((var_r31->unk_54 -= var_r31->unk_24) < 0.0f) { + var_r31->unk_54 = 2000.0f; + var_f31 = var_r31->unk_18 + lbl_1_data_1DC[frand() & 7]; + if ((frand() & 1) != 0) { + var_f26 = 350.0f; + } + else { + var_f26 = 500.0f; + } + if (fn_1_4070() == 2) { + fn_1_11648(var_r31->unk_04, var_f31, 50.0f + var_f26, -6000.0f + var_r30->trans.z); + } + } + } + var_r29->unk_10 = var_r30->trans.x - var_r29->unk_0C; + var_r29->unk_0C = var_r30->trans.x; + var_r29->unk_14 = var_r30->trans.z; + if (lbl_1_bss_158 == 0) { + var_r29->unk_18 = var_r30->trans.z; + } + var_r29->unk_1C = var_r31->unk_24; + fn_1_7FFC(var_r31->unk_04, var_r30->trans.z); + CenterM[var_r31->unk_04].x = var_r31->unk_18 + (0.5f * (var_r30->trans.x - var_r31->unk_18)); + CenterM[var_r31->unk_04].z = 950.0f + fn_1_7FBC(var_r31->unk_04); + var_f31 = var_r31->unk_70 * sind(var_r30->rot.y); + var_f31 = var_f31; + var_f29 = var_r31->unk_70 * cosd(var_r30->rot.y); + var_f29 = var_f29; + if (var_r31->unk_00 == 0) { + OSReport("X>%3.3f Z>%3.3f \n", var_f31, var_f29); + } + Hu3DModelPosSet(var_r30->model[1], var_r30->trans.x + var_f31, var_r30->trans.y, var_r30->trans.z + var_f29); + Hu3DModelRotSet(var_r30->model[1], var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + Hu3DModelPosSet(var_r30->model[2], var_r30->trans.x + var_f31, var_r30->trans.y - 150.0f, var_r30->trans.z + var_f29); + Hu3DModelRotSet(var_r30->model[2], var_r30->rot.x, 180.0f + var_r30->rot.y, var_r30->rot.z); + sp14.x = 0.0f; + sp14.y = 25.0f; + sp14.z = -100.0f; + fn_1_133DC(sp20, &sp14); + sp14.x += var_r30->trans.x; + sp14.y += var_r30->trans.y; + sp14.z += var_r29->unk_18; + fn_1_10540(var_r31->unk_04, 0, sp14.x, sp14.y, sp14.z); + var_f28 = var_r31->unk_24 / 41.000004f; + if (var_f28 < 0.0) { + var_f28 *= -1.0f; + } + fn_1_AEE0(var_r31->unk_04, &sp14, 180.0f + var_r30->rot.y, var_f28); + sp8.x = var_r31->unk_28; + sp8.y = 0.0f; + sp8.z = -var_r31->unk_24; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 160.0f; + fn_1_133DC(&sp20[0], &sp14); + sp14.x += var_r30->trans.x; + sp14.y += var_r30->trans.y; + sp14.z += var_r29->unk_18; + fn_1_B570(var_r31->unk_04, &sp14, var_r30->rot.y, var_f28, &sp8); +} + +s32 lbl_1_data_2A4[2] = { 1, 2 }; +Vec lbl_1_data_2AC[7] = { + { -300.0f, 30.000002f, -150.0f }, + { -150.0f, 30.000002f, 0.0f }, + { 150.0f, 30.000002f, 0.0f }, + { 300.0f, 30.000002f, -150.0f }, + { -400.0f, 0.0f, 250.0f }, + { 380.0f, 0.0f, 300.0f }, + { 0.0f, 1.0f, 0.0f }, +}; +Vec2f lbl_1_data_300 = { 0.0f, 0.0f }; +s32 lbl_1_data_308 = 0xFFA040FF; + +void fn_1_E8FC(omObjData *object) +{ + Mtx sp3C; + Vec sp30; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + M430PlayerWork *work; + M430PlayerBss174Struct *var_r29; + s32 var_r28; + + work = object->data; + var_f27 = 180.0f; + var_f31 = 0.0f; + var_f29 = 0.0f; + var_r29 = &lbl_1_bss_174[work->unk_04]; + if ((fn_1_4070() == 2) && (work->unk_08 != 0)) { + fn_1_FC9C(object); + } + if ((s32)work->unk_0E != 0) { + (void)object; + } + else if ((fn_1_4070() == 2) && (fn_1_117A4(work->unk_04, object->trans.x, 50.0f + object->trans.y, object->trans.z, 1) != -1)) { + HuAudFXPlay(7); + var_r29->unk_20++; + } + if (fabs(var_f28 = work->unk_48) < 8.0) { + var_f28 = 0.0f; + } + work->unk_28 *= 0.98f; + work->unk_28 += 0.002625f * var_f28; + if (work->unk_28 < -8.75f) { + work->unk_28 = -8.75f; + } + else if (work->unk_28 > 8.75f) { + work->unk_28 = 8.75f; + } + var_f26 = object->trans.x; + object->trans.x += work->unk_28; + if (object->trans.x > (350.0f + work->unk_18)) { + object->trans.x = 350.0f + work->unk_18; + } + else if (object->trans.x < (work->unk_18 - 350.0f)) { + object->trans.x = work->unk_18 - 350.0f; + } + var_f30 = fabs(0.0033333334f * (object->trans.y - 200.0f)); + var_f31 = 245.0f + (-105.0f * var_f30); + if (object->trans.x > (var_r29->unk_0C + var_f31)) { + object->trans.x = var_r29->unk_0C + var_f31; + } + else if (object->trans.x < (var_r29->unk_0C - var_f31)) { + object->trans.x = var_r29->unk_0C - var_f31; + } + var_f27 = 180.0f; + work->unk_1C = var_f27 - (30.0f * (0.114285715f * (object->trans.x - var_f26))); + object->rot.y = fn_1_13154(work->unk_1C, object->rot.y, 2.5f); + if (fabs(fn_1_1303C(object->rot.y, 180.0f)) < 90.0) { + object->rot.z = 0.5f * (object->rot.y - 180.0f); + } + else { + object->rot.z = 0.5f * object->rot.y; + } + object->trans.z = 300.0f + var_r29->unk_18; + if (var_r29->unk_1C < 18.75f) { + var_f29 = 200.0f; + } + else if (var_r29->unk_1C < 33.333336f) { + var_f29 = 350.0f; + } + else { + var_f29 = 500.0f; + } + var_f30 = work->unk_20 - var_f29; + if (fabs(var_f30) < 1.6666667461395264) { + work->unk_20 = var_f29; + } + else if (var_f30 > 0.0f) { + work->unk_20 -= 1.6666667f; + } + else if (var_f30 < 0.0f) { + work->unk_20 += 1.6666667f; + } + work->unk_10 += (frand() & 3) + 1; + object->trans.y = work->unk_20 + (0.10000000149011612 * (100.0 * sind(work->unk_10))); + mtxRot(&sp3C[0], object->rot.x, object->rot.y, object->rot.z); + sp3C[1][0] *= object->scale.y; + sp3C[1][1] *= object->scale.y; + sp3C[1][2] *= object->scale.z; + sp30.x = 0.0f; + sp30.y = 150.0f; + sp30.z = 50.0f; + fn_1_133DC(&sp3C[0], &sp30); + for (var_r28 = 0; var_r28 < 2; var_r28++) { + Hu3DModelPosSet(object->model[lbl_1_data_2A4[var_r28]], object->trans.x + sp30.x, object->trans.y + sp30.y, object->trans.z + sp30.z); + Hu3DModelRotSet(object->model[lbl_1_data_2A4[var_r28]], object->rot.x, object->rot.y, object->rot.z); + } + sp30.x = 0.0f; + sp30.y = 150.0f; + sp30.z = 50.0f; + fn_1_133DC(&sp3C[0], &sp30); + fn_1_10540(work->unk_04, 1, object->trans.x + sp30.x, object->trans.y + sp30.y, object->trans.z + sp30.z); + fn_1_1058C(work->unk_04, 1.0 - fabs((object->trans.x - var_r29->unk_0C) / var_f31)); +} + +void fn_1_F0D8(omObjData *object) +{ + float var_f31; + float var_f30; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + s32 var_r27; + M430PlayerBss174Struct *var_r26; + + work = object->data; + var_r28 = &lbl_1_bss_174[work->unk_04]; + var_r26 = &lbl_1_bss_174[work->unk_04 ^ 1]; + switch (work->unk_5C) { + case 0: + var_r27 = work->unk_0C + (work->unk_04 * 2); + object->trans.x = lbl_1_data_2AC[var_r27].x; + object->trans.y = lbl_1_data_2AC[var_r27].y; + object->trans.z = lbl_1_data_2AC[var_r27].z + fn_1_7FBC(0); + object->rot.x = object->rot.y = object->rot.z = 0.0f; + object->scale.x = object->scale.y = object->scale.z = 1.0f; + CenterM[0].x = 0.0f; + CenterM[0].z = 750.0f + object->trans.z; + if (work->unk_0C == 0) { + work->unk_58 = 4; + } + else { + work->unk_58 = 1; + } + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + Hu3DModelShadowSet(object->model[0]); + if (work->unk_0C == 0) { + Hu3DModelCameraSet(object->model[1], 3); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(object->model[2], 3); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + work->unk_1C = (180.0f + (40.0f * (0.007874016f * (frand() & 0x7F)))) - 20.0f; + if (work->unk_04 == 0) { + var_r29 = 4; + } + else { + var_r29 = 5; + } + Hu3DModelPosSet(object->model[1], lbl_1_data_2AC[var_r29].x, lbl_1_data_2AC[var_r29].y, lbl_1_data_2AC[var_r29].z + fn_1_7FBC(0)); + Hu3DModelPosSet( + object->model[2], lbl_1_data_2AC[var_r29].x, lbl_1_data_2AC[var_r29].y - 150.0f, lbl_1_data_2AC[var_r29].z + fn_1_7FBC(0)); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[1]); + } + if (var_r28->unk_20 > 0) { + work->unk_0E = 3; + } + else { + work->unk_0E = 4; + } + GWPlayerCoinCollectAdd(work->unk_00, var_r28->unk_20); + work->unk_5C++; + break; + case 1: + if (fn_1_4088() == 1) { + if (work->unk_00 == 0) { + if ((var_r28->unk_20 == 0) && (var_r26->unk_20 == 0)) { + HuAudSStreamPlay(4); + } + else { + HuAudSStreamPlay(1); + } + } + if (work->unk_0C == 0) { + if (work->unk_0E == 3) { + work->unk_58 = 5; + } + else { + work->unk_58 = 6; + } + } + else if (work->unk_0E == 3) { + work->unk_58 = 2; + } + else { + work->unk_58 = 3; + } + CharModelMotionShiftSet(work->unk_38, object->motion[work->unk_58], 0.0f, 8.0f, 0); + if (work->unk_0E == 3) { + HuAudCharVoicePlay(work->unk_38, 0x122); + } + work->unk_10 = 0; + work->unk_5C++; + } + break; + case 2: + if (fn_1_F62C(object) != 0) { + fn_1_4100(work->unk_00); + work->unk_5C++; + } + break; + } + if (work->unk_0C == 0) { + var_f31 = -10.0f; + var_f30 = 0.0f; + Hu3DModelRotSet(object->model[1], var_f31, work->unk_1C, var_f30); + Hu3DModelRotSet(object->model[2], var_f31, work->unk_1C, var_f30); + } +} + +s32 fn_1_F62C(omObjData *object) +{ + M430PlayerWork *work = object->data; + s32 var_r30 = 0; + if ((CharModelMotionEndCheck(work->unk_38) != 0) && (CharModelMotionShiftIDGet(work->unk_38) < 0)) { + var_r30 = 1; + } + return var_r30; +} + +void fn_1_F6A0(omObjData *object) +{ + Vec sp38; + float sp30; + float sp28; + float sp20; + float sp18; + float sp10; + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + M430PlayerWork *work; + s32 var_r29; + s32 var_r28; + M430PlayerBss168Struct *var_r27; + M430PlayerBss174Struct *var_r26; + s32 var_r25; + s32 var_r24; + + work = object->data; + var_r28 = 3; + var_r26 = &lbl_1_bss_174[work->unk_04]; + if (var_r26->unk_08 != 3) { + work->unk_0A = 3; + } + if (--work->unk_74 < 0) { + work->unk_7C = 150.0f * (3 - work->unk_0A) * ((frand() & 0x7F) / 127.0f); + if ((frand() & 1) != 0) { + work->unk_7C *= -1.0f; + } + work->unk_74 = 0x1E + (frand() % 30) + (4 - work->unk_0A) * 0x3C; + } + switch (work->unk_34) { + case 1: + var_f27 = 500.0f; + break; + case 2: + var_f27 = 1500.0f; + break; + default: + var_f27 = 3000.0f; + break; + } + var_r25 = fn_1_111BC(work->unk_04, object->trans.z, &sp38); + var_f30 = sp38.x; + var_f25 = sp38.z; + var_r29 = fn_1_11A1C(work->unk_04, object->trans.z, &sp38); + var_f29 = sp38.x; + var_f28 = sp38.z; + if (var_r29 == work->unk_78) { + var_r29 = fn_1_11A1C(work->unk_04, 100.0f + var_f28, &sp38); + var_f29 = sp38.x; + var_f28 = sp38.z; + } + else if (work->unk_78 == -1) { + var_r24 = fn_1_11A1C(work->unk_04, 100.0f + var_f28, &sp38); + var_f26 = sp38.x; + if (work->unk_0A >= 2) { + if (fabs(var_f29 - object->trans.x) > 300.0) { + if (fabs(var_f26 - object->trans.x) < 300.0) { + if ((fabs(var_f28 - object->trans.z) < 1800.0) && (work->unk_34 == 3)) { + work->unk_78 = var_r29; + var_r29 = var_r24; + var_f29 = var_f26; + } + } + } + } + } + else { + work->unk_78 = -1; + } + if (fabs(var_f25 - object->trans.z) < var_f27) { + if (var_f30 > object->trans.x) { + var_f31 = var_f30 - 200.0f; + } + else { + var_f31 = 200.0f + var_f30; + } + } + else { + if ((fabs(var_f30 - var_f29) > 200.0) || (var_r25 == -1)) { + var_f31 = var_f29; + } + else if ((var_f30 > var_f29) || (var_f30 > (250.0f + work->unk_18))) { + var_f31 = var_f30 - 200.0f; + } + else { + var_f31 = 200.0f + var_f30; + } + } + var_f31 += work->unk_7C; + if (var_f31 > (350.0f + work->unk_18)) { + var_f31 = 350.0f + work->unk_18; + } + else if (var_f31 < (work->unk_18 - 350.0f)) { + var_f31 = work->unk_18 - 350.0f; + } + if (var_r29 != -1) { + var_f31 -= object->trans.x; + if (var_f31 > 30.000002f) { + work->unk_48 = 64.0f; + } + else if (var_f31 < -30.000002f) { + work->unk_48 = -64.0f; + } + var_r27 = fn_1_11B64(var_r29); + if (var_r27 != NULL) { + if (var_r27->unk_14.y > 450.0f) { + var_r28 = 3; + } + else { + var_r28 = 2; + } + } + if (var_r28 > work->unk_34) { + work->unk_44 |= 0x100; + return; + } + if (var_r28 < work->unk_34) { + work->unk_44 |= 0x200; + } + } + else if (var_r28 > work->unk_34) { + work->unk_44 |= 0x100; + } +} + +void fn_1_FC9C(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + s32 var_r27; + + work = object->data; + var_r28 = &lbl_1_bss_174[work->unk_04]; + if (var_r28->unk_08 != 3) { + work->unk_0A = 3; + } + if (--work->unk_74 < 0) { + work->unk_7C = 75.0f * (3 - work->unk_0A) * ((frand() & 0x7F) / 127.0f); + if ((frand() & 1) != 0) { + work->unk_7C *= -1.0f; + } + work->unk_74 = 0x1E + (frand() % 60) + (4 - work->unk_0A) * 0x3C; + } + var_r29 = fn_1_11A1C(work->unk_04, object->trans.z, &sp8); + var_f31 = sp8.x; + var_f30 = sp8.z; + if (var_r29 == work->unk_78) { + var_r29 = fn_1_11A1C(work->unk_04, 100.0f + var_f30, &sp8); + var_f31 = sp8.x; + var_f30 = sp8.z; + } + else if (work->unk_78 == -1) { + var_r27 = fn_1_11A1C(work->unk_04, 100.0f + var_f30, &sp8); + var_f29 = sp8.x; + if (work->unk_0A >= 2) { + if (fabs(var_f31 - object->trans.x) > 300.0) { + if (fabs(var_f29 - object->trans.x) < 300.0) { + if ((fabs(var_f30 - object->trans.z) < 1800.0) && (work->unk_34 == 3)) { + work->unk_78 = var_r29; + var_r29 = var_r27; + var_f31 = var_f29; + } + } + } + } + } + else { + work->unk_78 = -1; + } + var_f31 += work->unk_7C; + if (var_f31 > (350.0f + work->unk_18)) { + var_f31 = 350.0f + work->unk_18; + } + else if (var_f31 < (work->unk_18 - 350.0f)) { + var_f31 = work->unk_18 - 350.0f; + } + if (var_r29 != -1) { + var_f31 -= object->trans.x; + if (var_f31 > 30.000002f) { + work->unk_48 = 64.0f; + return; + } + if (var_f31 < -30.000002f) { + work->unk_48 = -64.0f; + } + } +} + +void fn_1_100A0(void) +{ + M430PlayerBss170Struct *var_r31; + ModelData *var_r30; + s32 var_r29; + s32 var_r28; + void *var_r27; + void *var_r26; + + var_r31 = lbl_1_bss_170 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430PlayerBss170Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 2 * sizeof(M430PlayerBss170Struct)); + for (var_r28 = 0; var_r28 < 2; var_r31++) { + var_r31->unk_00 = var_r28; + var_r31->unk_04 = Hu3DHookFuncCreate(fn_1_10948); + Hu3DModelLayerSet(var_r31->unk_04, 6); + Hu3DModelCameraSet(var_r31->unk_04, 3); + var_r30 = &Hu3DData[var_r31->unk_04]; + var_r30->unk_120 = var_r31; + var_r31->unk_08 = 1; + var_r31->unk_0C = 0.0f; + var_r31->unk_10 = var_r31->unk_14 = var_r31->unk_18 = 0.0f; + var_r31->unk_1C = var_r31->unk_20 = var_r31->unk_24 = 500.0f; + var_r31->unk_28 = var_r31->unk_2C = var_r31->unk_30 = 1000.0f; + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 0.0f; + var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 1000.0f; + var_r31->unk_58 = 0; + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM); + memset(var_r31->unk_4C, 0, 0xC0); + var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM); + memset(var_r31->unk_50, 0, 0xC0); + var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x80, MEMORY_DEFAULT_NUM); + memset(var_r31->unk_54, 0, 0x80); + var_r30 = &Hu3DData[var_r31->unk_04]; + var_r27 = HuMemDirectMallocNum(HEAP_DATA, 0x200, var_r30->unk_48); + var_r26 = var_r27; + DCFlushRange(var_r27, 0x200); + GXBeginDisplayList(var_r26, 0x200); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x10); + for (var_r29 = 0; var_r29 < 0x10; var_r29++) { + GXUnknownu16(var_r29); + GXUnknownu16(0); + GXUnknownu16(var_r29); + } + var_r31->unk_5C = GXEndDisplayList(); + var_r31->unk_60 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_5C, var_r30->unk_48); + memcpy(var_r31->unk_60, var_r27, var_r31->unk_5C); + DCFlushRange(var_r31->unk_60, var_r31->unk_5C); + HuMemDirectFree(var_r27); + fn_1_1061C(var_r31); + var_r28++; + } +} + +void fn_1_1033C(void) +{ + float var_f31; + M430PlayerBss170Struct *var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r31 = lbl_1_bss_170, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + if (var_r31->unk_08 != 0) { + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 0.0f; + var_r31->unk_40 = var_r31->unk_28 - var_r31->unk_10; + var_r31->unk_44 = var_r31->unk_2C - var_r31->unk_14; + var_r31->unk_48 = var_r31->unk_30 - var_r31->unk_18; + var_f31 = 0.5f * (var_r31->unk_34 + var_r31->unk_40); + var_r31->unk_1C = var_f31 + (var_r31->unk_0C * (var_r31->unk_40 - var_f31)); + var_f31 = 0.5f * (var_r31->unk_38 + var_r31->unk_44); + var_r31->unk_20 = var_f31 + (var_r31->unk_0C * (var_r31->unk_38 - var_f31)); + var_f31 = 0.5f * (var_r31->unk_3C + var_r31->unk_48); + var_r31->unk_24 = var_f31 + (var_r31->unk_0C * (var_r31->unk_3C - var_f31)); + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + var_f31 = var_r30 / 15.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_12F20(var_f31, &var_r31->unk_34, &var_r31->unk_1C, &var_r31->unk_40, (float *)&var_r31->unk_4C[var_r30]); + } + fn_1_1061C(var_r31); + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18); + } + } +} + +void fn_1_1053C(void) { } + +void fn_1_10540(s32 arg0, s32 arg1, float arg8, float arg9, float argA) +{ + M430PlayerBss170Struct *var_r31 = &lbl_1_bss_170[arg0]; + if (arg1 == 0) { + var_r31->unk_10 = arg8; + var_r31->unk_14 = arg9; + var_r31->unk_18 = argA; + return; + } + var_r31->unk_28 = arg8; + var_r31->unk_2C = arg9; + var_r31->unk_30 = argA; +} + +void fn_1_1058C(s32 arg0, float arg8) +{ + M430PlayerBss170Struct *var_r31 = &lbl_1_bss_170[arg0]; + var_r31->unk_0C = arg8; +} + +void fn_1_105B8(s32 arg0) +{ + M430PlayerBss170Struct *var_r31 = &lbl_1_bss_170[arg0]; + if (var_r31->unk_08 != 0) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + } + var_r31->unk_08 = 0; +} + +void fn_1_1061C(M430PlayerBss170Struct *var_r31) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f27; + float var_f25; + s32 var_r30; + + var_f27 = 0.0f; + for (var_r30 = 0xF; var_r30 >= 0; var_r30--) { + var_r31->unk_50[var_r30] = var_r31->unk_4C[var_r30]; + var_r31->unk_54[var_r30] = lbl_1_data_300; + if (var_r30 == 0) { + var_f27 = 0.0f; + var_r31->unk_54[var_r30].y = var_f27; + } + else { + var_f31 = var_r31->unk_4C[var_r30 - 1].x - var_r31->unk_4C[var_r30].x; + var_f30 = var_r31->unk_4C[var_r30 - 1].y - var_r31->unk_4C[var_r30].y; + var_f29 = var_r31->unk_4C[var_r30 - 1].z - var_r31->unk_4C[var_r30].z; + var_f25 = sqrtf((var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30))); + var_f27 -= 0.01f * var_f25; + var_r31->unk_54[var_r30].y = var_f27; + } + } + DCFlushRangeNoSync(var_r31->unk_50, 0xC0); + DCFlushRangeNoSync(var_r31->unk_54, 0x80); + PPCSync(); +} + +void fn_1_10948(ModelData *var_r29, Mtx var_r30) +{ + Mtx sp8; + M430PlayerBss170Struct *var_r31 = var_r29->unk_120; + GXLoadPosMtxImm(var_r30, 0); + MTXInvXpose(var_r30, sp8); + GXLoadNrmMtxImm(sp8, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, 0, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG0); + 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, 1, GX_TEVREG0); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + GXSetLineWidth(0x10, GX_TO_ZERO); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_50, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &lbl_1_data_308, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_54, 8); + GXCallDisplayList(var_r31->unk_60, var_r31->unk_5C); +} + +void fn_1_10B88(void) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_16C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M430PlayerBss16CStruct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 0x10 * sizeof(M430PlayerBss16CStruct)); + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + var_r31->unk_00 = var_r30; + if (var_r30 == 0) { + var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x23)); + } + else { + var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_16C[0].unk_04); + } + Hu3DModelLayerSet(var_r31->unk_04, 2); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x24)); + Hu3DModelLayerSet(var_r31->unk_08, 2); + Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + var_r31->unk_14 = 0; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C.x = var_r31->unk_1C.y = var_r31->unk_1C.z = 0.0f; + var_r31->unk_28 = var_r31->unk_2C = var_r31->unk_30 = 0.0f; + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 1.0f; + } +} + +void fn_1_10D1C(void) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + M430PlayerBss174Struct *var_r29; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk_10 != 0) { + var_r29 = &lbl_1_bss_174[var_r31->unk_0C]; + switch (var_r31->unk_10) { + case 1: + if (var_r31->unk_1C.y < 0.0f) { + var_r31->unk_1C.y += 1.0f; + } + break; + case 2: + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_08, HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(var_r31->unk_08, 0.0f); + Hu3DMotionSpeedSet(var_r31->unk_08, 1.0f); + var_r31->unk_10 = 3; + break; + case 3: + break; + } + if (var_r31->unk_1C.z > (1000.0f + var_r29->unk_14)) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); + var_r31->unk_10 = 0; + } + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_28, var_r31->unk_2C, var_r31->unk_30); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_34, var_r31->unk_38, var_r31->unk_3C); + Hu3DModelPosSet(var_r31->unk_08, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + Hu3DModelRotSet(var_r31->unk_08, var_r31->unk_28, var_r31->unk_2C, var_r31->unk_30); + Hu3DModelScaleSet(var_r31->unk_08, var_r31->unk_34, var_r31->unk_38, var_r31->unk_3C); + } + } +} + +void fn_1_10F20(void) { } + +s32 fn_1_10F24(s32 var_r29, float sp8, float spC, float sp10) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk_10 == 0) { + break; + } + } + if (var_r30 >= 0x10) { + return -1; + } + if (var_r29 == 0) { + Hu3DModelCameraSet(var_r31->unk_04, 1); + Hu3DModelCameraSet(var_r31->unk_08, 1); + } + else { + Hu3DModelCameraSet(var_r31->unk_04, 2); + Hu3DModelCameraSet(var_r31->unk_08, 2); + } + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = var_r29; + var_r31->unk_10 = 1; + var_r31->unk_14 = 0; + var_r31->unk_1C.x = sp8; + var_r31->unk_1C.y = spC; + var_r31->unk_1C.z = sp10; + var_r31->unk_28 = var_r31->unk_2C = var_r31->unk_30 = 0.0f; + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 1.0f; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_28, var_r31->unk_2C, var_r31->unk_30); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_34, var_r31->unk_38, var_r31->unk_3C); +} + +s32 fn_1_110A8(s32 arg0, float arg8, float arg9, float argA, s32 arg1) +{ + float var_f31; + float var_f30; + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_10 == 1) && (var_r31->unk_0C == arg0)) { + var_f31 = arg8 - var_r31->unk_1C.x; + var_f30 = argA - var_r31->unk_1C.z; + if ((fabs(var_f31) < 50.0) && (fabs(var_f30) < 50.0)) { + break; + } + } + } + if (var_r30 >= 0x20) { + return 0; + } + if (arg1 != 0) { + var_r31->unk_18 = 50.0f; + var_r31->unk_10 = 2; + var_r31->unk_14 = 0; + } + return 1; +} + +s32 fn_1_111BC(s32 arg0, float arg8, Vec *arg1) +{ + float var_f31; + float var_f30; + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_16C; + var_r29 = -1; + var_f31 = 10000.0f; + arg1->x = arg1->y = arg1->z = 0.0f; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if ((var_r31->unk_10 == 1) && (var_r31->unk_0C == arg0) && !(var_r31->unk_1C.z > arg8)) { + var_f30 = fabs(var_r31->unk_1C.z - (arg8 - 100.0f)); + if (var_f30 < var_f31) { + var_f31 = var_f30; + var_r29 = var_r30; + } + } + } + if (var_r29 == -1) { + return -1; + } + var_r31 = &lbl_1_bss_16C[var_r29]; + *arg1 = var_r31->unk_1C; + return var_r29; +} + +void fn_1_11314(s32 arg0) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if ((var_r31->unk_10 != 0) && (var_r31->unk_0C == arg0)) { + var_r31->unk_10 = 0; + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_113AC(void) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_168 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20 * sizeof(M430PlayerBss168Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 0x20 * sizeof(M430PlayerBss168Struct)); + for (var_r30 = 0; var_r30 < 0x20; var_r31++) { + var_r31->unk_00 = var_r30; + if (var_r30 == 0) { + var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x22)); + } + else { + var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_168[0].unk_04); + } + Hu3DModelLayerSet(var_r31->unk_04, 7); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + var_r31->unk_14.x = var_r31->unk_14.y = var_r31->unk_14.z = 0.0f; + var_r31->unk_20.x = var_r31->unk_20.y = var_r31->unk_20.z = 0.0f; + var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 1.0f; + var_r30++; + } +} + +void fn_1_114F0(void) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + M430PlayerBss174Struct *var_r29; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if (var_r31->unk_0C != 0) { + switch (var_r31->unk_0C) { + case 1: + var_r31->unk_20.y += 7.5; + break; + case 2: + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + break; + } + var_r29 = &lbl_1_bss_174[var_r31->unk_08]; + if (var_r31->unk_14.z > (1000.0f + var_r29->unk_14)) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + } + else { + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_20.x, var_r31->unk_20.y, var_r31->unk_20.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + } + } + } +} + +void fn_1_11644(void) { } + +s32 fn_1_11648(s32 arg0, float arg1, float arg8, float arg9) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if (var_r31->unk_0C == 0) { + break; + } + } + if (var_r30 >= 0x20) { + return -1; + } + if (arg0 == 0) { + Hu3DModelCameraSet(var_r31->unk_04, 1); + } + else { + Hu3DModelCameraSet(var_r31->unk_04, 2); + } + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = arg0; + var_r31->unk_0C = 1; + var_r31->unk_14.x = arg1; + var_r31->unk_14.y = arg8; + var_r31->unk_14.z = arg9; + var_r31->unk_20.x = var_r31->unk_20.y = var_r31->unk_20.z = 0.0f; + var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 1.0f; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_20.x, var_r31->unk_20.y, var_r31->unk_20.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); +} + +s32 fn_1_117A4(s32 arg0, float arg8, float arg9, float argA, s32 arg1) +{ + float var_f31; + float var_f30; + float var_f27; + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_0C == 1) && (var_r31->unk_08 == arg0)) { + var_f31 = var_r31->unk_14.x - arg8; + var_f27 = var_r31->unk_14.y - arg9; + var_f30 = var_r31->unk_14.z - argA; + if ((fabs(var_f27) < 100.0) && (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f)) { + break; + } + } + } + if (var_r30 >= 0x20) { + return -1; + } + if (arg1 != 0) { + fn_1_11F90(var_r31->unk_08, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + var_r31->unk_0C = 2; + var_r31->unk_10 = 0; + } + return 1; +} + +s32 fn_1_11A1C(s32 arg0, float arg8, Vec *arg1) +{ + float var_f31; + float var_f30; + M430PlayerBss168Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_168; + var_r29 = -1; + var_f31 = 10000.0f; + arg1->x = arg1->y = arg1->z = 0.0f; + for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_0C == 1) && (var_r31->unk_08 == arg0) && !(var_r31->unk_14.z > arg8)) { + var_f30 = fabs(var_r31->unk_14.z - arg8); + if (var_f30 < var_f31) { + var_f31 = var_f30; + var_r29 = var_r30; + } + } + } + if (var_r29 == -1) { + return -1; + } + var_r31 = &lbl_1_bss_168[var_r29]; + *arg1 = var_r31->unk_14; + return var_r29; +} + +M430PlayerBss168Struct *fn_1_11B64(s32 arg0) +{ + if ((arg0 < 0) || (arg0 >= 0x20)) { + return NULL; + } + return &lbl_1_bss_168[arg0]; +} + +void fn_1_11B94(s32 arg0) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_0C != 0) && (var_r31->unk_08 == arg0)) { + var_r31->unk_0C = 0; + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_11C1C(void) +{ + M430PlayerBss164Struct *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_164 = HuMemDirectMallocNum(HEAP_SYSTEM, 8 * sizeof(M430PlayerBss164Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 8 * sizeof(M430PlayerBss164Struct)); + for (var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) { + if (var_r30 == 0) { + var_r31->unk_14 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x26), MEMORY_DEFAULT_NUM)); + } + else { + var_r31->unk_14 = lbl_1_bss_164[0].unk_14; + } + var_r31->unk_00 = var_r30; + var_r31->unk_04 = Hu3DParticleCreate(var_r31[0].unk_14, 0x20); + Hu3DModelLayerSet(var_r31->unk_04, 7); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_PARTICLE_KILL); + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + + var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 0.0f; + var_r31->unk_30.x = var_r31->unk_30.y = var_r31->unk_30.z = 1.0f; + } +} + +void fn_1_11D70(void) +{ + M430PlayerBss164Struct *var_r31; + HsfanimStruct01 *var_r30; + ParticleData *var_r29; + s32 var_r28; + s32 var_r27; + M430PlayerBss174Struct *var_r26; + ModelData *var_r25; + s32 var_r24; + + for (var_r31 = lbl_1_bss_164, var_r28 = 0; var_r28 < 8; var_r28++, var_r31++) { + if (var_r31->unk_0C != 0) { + if (var_r31->unk_10 > 1) { + var_r25 = &Hu3DData[var_r31->unk_04]; + var_r29 = var_r25->unk_120; + for (var_r30 = var_r29->unk_48, var_r27 = 0; var_r27 < var_r29->unk_30; var_r27++, var_r30++) { + if (++var_r30->unk00 > var_r30->unk02) { + var_r24 = var_r30->unk40.a - 9; + if (var_r24 < 0) { + var_r30->unk2C = 0.0f; + } + else { + var_r30->unk40.a = var_r24; + } + } + var_r30->unk2C *= 0.975; + var_r30->unk34.x += var_r30->unk08.x; + var_r30->unk34.y += var_r30->unk08.y; + var_r30->unk34.z += var_r30->unk08.z; + var_r30->unk08.y -= 0.3103333379576603; + } + } + var_r26 = &lbl_1_bss_174[var_r31->unk_08]; + var_r31->unk_18.z -= var_r26->unk_1C; + if (++var_r31->unk_10 > 0x78) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + } + else { + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_30.x, var_r31->unk_30.y, var_r31->unk_30.z); + } + } + } +} + +void fn_1_11F60(void) +{ + fn_1_133A4(lbl_1_bss_164[0].unk_14); +} + +s32 fn_1_11F90(s32 arg0, float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + M430PlayerBss164Struct *var_r31; + HsfanimStruct01 *var_r30; + s32 var_r29; + ParticleData *var_r28; + ModelData *var_r27; + + for (var_r31 = lbl_1_bss_164, var_r29 = 0; var_r29 < 8; var_r29++, var_r31++) { + if (var_r31->unk_0C == 0) { + break; + } + } + if (var_r29 >= 8) { + return -1; + } + if (arg0 == 0) { + Hu3DModelCameraSet(var_r31->unk_04, 1); + } + else { + Hu3DModelCameraSet(var_r31->unk_04, 2); + } + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = arg0; + var_r31->unk_0C = 1; + var_r31->unk_10 = 0; + var_r27 = &Hu3DData[var_r31->unk_04]; + var_r28 = var_r27->unk_120; + var_r28->unk_2C = 1; + for (var_r30 = var_r28->unk_48, var_r29 = 0; var_r29 < var_r28->unk_30; var_r29++, var_r30++) { + var_f30 = (frand() % 30) + 0x4B; + var_f29 = frand() % 360; + var_f27 = sind(var_f30); + var_f28 = cosd(var_f30); + var_f26 = 0.8f + (0.3f * (0.007874016f * (frand() % 255))); + var_f31 = 0.35f; + var_r30->unk08.x = var_f31 * (0.6499999761581421 * (50.0 * (var_f28 * sind(var_f29)))); + var_r30->unk08.y = var_f31 * (50.0f * var_f27 * var_f26); + var_r30->unk08.z = var_f31 * (0.6499999761581421 * (50.0 * (var_f28 * cosd(var_f29)))); + var_r30->unk00 = 0; + var_r30->unk02 = (frand() % 7) + 0xA; + var_r30->unk2C = 45.0f; + var_r30->unk34.x = 0.25f * ((frand() & 0x7F) - 0x40); + var_r30->unk34.y = 0.25f * ((frand() & 0x7F) - 0x40); + var_r30->unk34.z = 0.25f * ((frand() & 0x7F) - 0x40); + var_r30->unk40.r = (frand() % 64) + 0xC0; + var_r30->unk40.g = (frand() % 64) + 0xC0; + var_r30->unk40.b = (frand() % 64) + 0xC0; + var_r30->unk40.a = 0xFF; + } + var_r31->unk_18.x = arg8; + var_r31->unk_18.y = arg9; + var_r31->unk_18.z = argA; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 0.0f; + var_r31->unk_30.x = var_r31->unk_30.y = var_r31->unk_30.z = 1.0f; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_30.x, var_r31->unk_30.y, var_r31->unk_30.z); +} + +void fn_1_12550(s32 arg0) +{ + M430PlayerBss164Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_164, var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) { + if (var_r31->unk_0C != 0) { + var_r31->unk_0C = 0; + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_125C4(void) +{ + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430PlayerBss160Struct), MEMORY_DEFAULT_NUM); + lbl_1_bss_160 = var_r31; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + if (var_r29 == 0) { + var_r31->unk_00 = 0x90; + } + else { + var_r31->unk_00 = 0x1B0; + } + var_r31->unk_04 = 0x198; + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_B8 = 0x15; + var_r31->unk_BC = 0; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + switch (var_r30) { + case 0: + case 1: + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x33), 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x40); + var_r31->unk_28[var_r30][0] = (var_r30 * 0x14) + 0xB; + var_r31->unk_28[var_r30][1] = 0; + var_r31->unk_70[var_r30][0] = var_r31->unk_28[var_r30][0] - var_r31->unk_B8; + var_r31->unk_70[var_r30][1] = var_r31->unk_28[var_r30][1] - var_r31->unk_BC; + break; + case 2: + if (var_r29 == 0) { + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1B), 1, 0); + } + else { + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1C), 1, 0); + } + espPriSet(var_r31->unk_10[var_r30], 0xFF); + var_r31->unk_28[var_r30][0] = 0; + var_r31->unk_28[var_r30][1] = 0; + break; + case 3: + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1D), 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x100); + espTPLvlSet(var_r31->unk_10[var_r30], 0.6000000238418579); + espColorSet(var_r31->unk_10[var_r30], 0, 0, 0); + var_r31->unk_28[var_r30][0] = 0; + var_r31->unk_28[var_r30][1] = 0; + break; + case 4: + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x08), 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x80); + var_r31->unk_28[var_r30][0] = -0x21; + var_r31->unk_28[var_r30][1] = 0; + break; + case 5: + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_M430, 0x28), 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x80); + espZRotSet(var_r31->unk_10[var_r30], 45.0); + var_r31->unk_28[var_r30][0] = -0xA; + var_r31->unk_28[var_r30][1] = 0; + break; + } + espDispOn(var_r31->unk_10[var_r30]); + espDrawNoSet(var_r31->unk_10[var_r30], 0); + espAttrSet(var_r31->unk_10[var_r30], HUSPR_ATTR_NOANIM); + espPosSet(var_r31->unk_10[var_r30], var_r31->unk_00 + var_r31->unk_28[var_r30][0], var_r31->unk_04 + var_r31->unk_28[var_r30][1]); + espBankSet(var_r31->unk_10[var_r30], 0); + } + } + lbl_1_bss_15C = 1; + fn_1_12DF0(0); +} + +void fn_1_129CC(void) +{ + s32 sp8[4]; + float var_f31; + float var_f30; + float var_f29; + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + for (var_r31 = lbl_1_bss_160, var_r28 = 0; var_r28 < 2; var_r28++, var_r31++) { + var_r29 = lbl_1_bss_174[var_r28].unk_20; + if (lbl_1_bss_15C != 0) { + if (var_r29 != var_r31->unk_08) { + var_r31->unk_08 = var_r29; + var_r31->unk_0C = 0x14; + } + if (var_r31->unk_0C != 0) { + var_f31 = 1.0 + (0.800000011920929 * sind((180.0f * (var_r31->unk_0C / 20.0f)))); + var_r31->unk_0C--; + } + else { + var_f31 = 1.0f; + } + if ((sp8[0] = var_r29 / 10) > 9) { + sp8[0] = 9; + } + var_r29 -= sp8[0] * 0xA; + sp8[1] = var_r29; + if (var_r29 > 9) { + sp8[1] = 9; + } + for (var_r30 = 0; var_r30 < 6; var_r30++) { + if (var_r30 < 2) { + var_f30 = (var_r31->unk_00 + var_r31->unk_B8) + (var_r31->unk_70[var_r30][0] * var_f31); + var_f29 = (var_r31->unk_04 + var_r31->unk_BC) + (var_r31->unk_70[var_r30][1] * var_f31); + espBankSet(var_r31->unk_10[var_r30], sp8[var_r30]); + espScaleSet(var_r31->unk_10[var_r30], var_f31, var_f31); + } + else { + var_f30 = var_r31->unk_00 + var_r31->unk_28[var_r30][0]; + var_f29 = var_r31->unk_04 + var_r31->unk_28[var_r30][1]; + } + if (sp8[var_r30] < 0) { + sp8[var_r30] = 0; + } + espPosSet(var_r31->unk_10[var_r30], var_f30, var_f29); + } + } + } +} + +void fn_1_12D74(void) +{ + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r31 = lbl_1_bss_160, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espKill(var_r31->unk_10[var_r30]); + } + } +} + +void fn_1_12DF0(s32 arg0) +{ + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_160; + lbl_1_bss_15C = arg0; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + if (arg0 != 0) { + espAttrReset(var_r31->unk_10[var_r30], HUSPR_ATTR_DISPOFF); + } + else { + espAttrSet(var_r31->unk_10[var_r30], HUSPR_ATTR_DISPOFF); + } + } + } +} + +float fn_1_12EA8(float arg8, float arg9, float argA, float argB) +{ + float var_f31; + float var_f30; + + var_f31 = 1.0 - arg8; + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_12F20(float arg8, float *var_r3, float *var_r4, float *var_r5, float *var_r6) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *var_r6++ = fn_1_12EA8(arg8, *var_r3++, *var_r4++, *var_r5++); + } +} + +float fn_1_1303C(float arg8, float arg9) +{ + float var_f31; + + if (arg8 >= 360.0f) { + arg8 -= 360.0f; + } + else if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (arg9 >= 360.0f) { + arg9 -= 360.0f; + } + else if (arg9 < 0.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + else if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +float fn_1_13154(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f26; + + if (arg8 >= 360.0) { + arg8 -= 360.0; + } + else if (arg8 < 0.0) { + arg8 += 360.0; + } + if (arg9 >= 360.0) { + arg9 -= 360.0; + } + else if (arg9 < 0.0) { + arg9 += 360.0; + } + var_f30 = 360.0 + (arg8 - arg9); + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= argA) { + var_f31 = var_f30; + } + else { + var_f31 = argA; + } + } + else if ((360.0 - var_f30) <= argA) { + var_f31 = -(360.0 - var_f30); + } + else { + var_f31 = -argA; + } + var_f31 += arg9; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + } + else if (var_f31 < 0.0) { + var_f31 += 360.0; + } + return var_f31; +} + +void fn_1_133A4(AnimData *arg0) +{ + arg0->useNum = 0; + HuSprAnimKill(arg0); +} + +void fn_1_133DC(Mtx arg0, Vec *arg1) +{ + Vec sp8; + + sp8.x = (arg0[0][2] * arg1->z) + ((arg0[0][0] * arg1->x) + (arg0[0][1] * arg1->y)); + sp8.y = (arg0[1][2] * arg1->z) + ((arg0[1][0] * arg1->x) + (arg0[1][1] * arg1->y)); + sp8.z = (arg0[2][2] * arg1->z) + ((arg0[2][0] * arg1->x) + (arg0[2][1] * arg1->y)); + *arg1 = sp8; +} diff --git a/src/REL/m430Dll/water.c b/src/REL/m430Dll/water.c new file mode 100644 index 00000000..cfb782c7 --- /dev/null +++ b/src/REL/m430Dll/water.c @@ -0,0 +1,1821 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m430Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" + +void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, GXBool replace_mode, GXIndTexMtxID matrix_sel); +#endif + +inline double fabs2(double x) +{ + return (double)fabs(x); +} + +typedef struct M430DllUnkStruct2 { + s32 unk_00; + s16 unk_04; + char unk06[2]; + s16 unk_08; + s16 unk_0A; + Vec unk_0C; + Vec unk_18; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; +} M430DllUnkStruct2; /* size 0x3C */ + +typedef struct M430DllWork { + s32 unk_00; + Vec unk_04; + s32 unk_10; + s32 unk_14; + s16 unk_18; + s16 unk_1A; + s16 unk_1C; + s16 unk_1E; + float unk_20; + s16 unk_24[0xC]; + s32 unk_3C; + s16 unk_40[0xA]; + s16 unk_54[0xA]; + s16 unk_68[0xA]; + s32 unk_7C; + s16 unk_80[6]; + s16 unk_8C[6]; + s16 unk_98[6]; + s32 unk_A4[6]; + s32 unk_BC; + M430DllUnkStruct2 *unk_C0; +} M430DllWork; /* size 0xC4 */ + +typedef struct M430DllWork2 { + s16 unk_00; + char unk02[4]; + s16 unk_06; + Vec unk_08; + Vec unk_14; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; + float unk_3C; +} M430DllWork2; /* size 0x40 */ + +typedef struct M430DllBss60Struct { + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ u32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ Vec *unk_2C; + /* 0x30 */ Vec *unk_30; + /* 0x34 */ void *unk_34; + /* 0x38 */ void *unk_38; + /* 0x3C */ char pad_3C[4]; + /* 0x40 */ s32 unk_40; + /* 0x44 */ Vec *unk_44[2]; + /* 0x4C */ char pad_4C[8]; + /* 0x54 */ GXColor *unk_54[2]; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ void *unk_60; + /* 0x64 */ u32 unk_64; + /* 0x68 */ u32 unk_68; + /* 0x6C */ void *unk_6C; +} M430DllBss60Struct; /* size = 0x70 */ + +void fn_1_4CB4(omObjData *object); +void fn_1_5DF8(omObjData *object); +void fn_1_6180(M430DllWork *arg0); +void fn_1_6540(M430DllWork *arg0); +void fn_1_6754(M430DllWork *arg0); +void fn_1_6DC8(M430DllWork *arg0); +M430DllUnkStruct2 *fn_1_70AC(omObjData *arg0, s32 arg1, s16 arg2); +void fn_1_732C(omObjData *object, M430DllUnkStruct2 *arg1); +void fn_1_76D8(omObjData *object, M430DllUnkStruct2 *arg1); +void fn_1_7848(omObjData *object); +void fn_1_7CAC(omObjData *object); +void fn_1_7EAC(omObjData *object, M430DllWork2 *arg1); +void fn_1_803C(omObjData *object); +void fn_1_8264(omObjData *object); +void fn_1_82F4(omObjData *object, M430DllBss60Struct *arg1); +void fn_1_86B4(omObjData *object, M430DllBss60Struct *arg1); +void fn_1_8B5C(omObjData *object, M430DllBss60Struct *arg1); +void fn_1_8CE0(ModelData *model, Mtx matrix); +void fn_1_963C(ModelData *model, Mtx matrix, u32 arg2); +void fn_1_9C90(ModelData *model, Mtx matrix); +void fn_1_A3A8(ModelData *model, Mtx matrix); +void fn_1_AB98(ModelData *model, Mtx matrix); +void fn_1_AC84(ModelData *model, Mtx matrix); +void fn_1_AD04(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_B394(ModelData *model, ParticleData *particle, Mtx matrix); +float fn_1_BB54(u32 arg0); + +AnimData *lbl_1_bss_150; +AnimData *lbl_1_bss_14C; +AnimData *lbl_1_bss_148; +AnimData *lbl_1_bss_144; +AnimData *lbl_1_bss_140; +M430DllBss60Struct lbl_1_bss_60[2]; +s32 lbl_1_bss_5C; +omObjData *lbl_1_bss_58; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +float lbl_1_bss_4C; +float lbl_1_bss_48; +s32 lbl_1_bss_44; +s32 lbl_1_bss_40; + +void fn_1_4A80(Process *process) +{ + omObjData *object; + + lbl_1_bss_150 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x19), MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x1A), MEMORY_DEFAULT_NUM)); + lbl_1_bss_148 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x14), MEMORY_DEFAULT_NUM)); + lbl_1_bss_144 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x17), MEMORY_DEFAULT_NUM)); + lbl_1_bss_140 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x18), MEMORY_DEFAULT_NUM)); + object = lbl_1_bss_58 = omAddObjEx(process, 0x1E, 0x68, 0, -1, fn_1_4CB4); + object->work[0] = 0; + object = lbl_1_bss_54 = omAddObjEx(process, 0x1E, 7, 0, -1, fn_1_803C); + object->work[0] = 0; + object = lbl_1_bss_50 = omAddObjEx(process, 0x1E, 0, 0, -1, fn_1_7848); + object->work[0] = 0; + lbl_1_bss_5C = 0; + lbl_1_bss_44 = lbl_1_bss_40 = 0; + lbl_1_bss_4C = lbl_1_bss_48 = 0.0f; +} + +void fn_1_4C48(void) +{ + HuSprAnimKill(lbl_1_bss_150); + HuSprAnimKill(lbl_1_bss_14C); + HuSprAnimKill(lbl_1_bss_148); + HuSprAnimKill(lbl_1_bss_144); + HuSprAnimKill(lbl_1_bss_140); +} + +void fn_1_4CB4(omObjData *object) +{ + s32 var_r31; + M430DllWork *var_r30; + s32 var_r28; + s32 var_r27; + HsfData *var_r26; + s32 var_r25; + M430DllWork *work; + + u32 spC[1] = { DATA_MAKE_NUM(DATADIR_M430, 0x01) }; + s32 sp8[1]; + u32 sp90[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x0B), DATA_MAKE_NUM(DATADIR_M430, 0x0C), DATA_MAKE_NUM(DATADIR_M430, 0x0D), + DATA_MAKE_NUM(DATADIR_M430, 0x0E) }; + u32 sp80[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x02), DATA_MAKE_NUM(DATADIR_M430, 0x02), DATA_MAKE_NUM(DATADIR_M430, 0x03), + DATA_MAKE_NUM(DATADIR_M430, 0x03) }; + u32 sp70[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x04), DATA_MAKE_NUM(DATADIR_M430, 0x04), 0, 0 }; + u32 sp60[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x06), DATA_MAKE_NUM(DATADIR_M430, 0x07), DATA_MAKE_NUM(DATADIR_M430, 0x08), + DATA_MAKE_NUM(DATADIR_M430, 0x09) }; + s32 sp50[4]; + s32 sp40[4]; + s32 sp30[4]; + s32 sp20[4]; + s32 sp18[2] = { 1, 2 }; + s32 sp10[2]; + s32 spA0[6] = { 0, 3, 2, 1, 2, 3 }; + + object->stat |= 0x100; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430DllWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, 2 * sizeof(M430DllWork)); + for (var_r30 = work, var_r31 = 0; var_r31 < 2; var_r31++, var_r30++) { + var_r30->unk_00 = var_r31; + var_r30->unk_04.x = var_r30->unk_04.y = var_r30->unk_04.z = 0.0f; + var_r30->unk_3C = 0; + var_r30->unk_7C = 0; + var_r30->unk_BC = 0; + } + var_r30 = work; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + object->model[var_r31] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x00)); + var_r30[var_r31].unk_18 = object->model[var_r31]; + Hu3DModelLayerSet(var_r30[var_r31].unk_18, 0); + Hu3DModelScaleSet(var_r30[var_r31].unk_18, 1.15f, 1.15f, 1.15f); + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x0A)), 1); + var_r30[var_r31].unk_1A = var_r27; + Hu3DModelLayerSet(var_r27, 1); + *((s16 *)Hu3DData[var_r27].unk_120) = 1; + var_r30[var_r31].unk_1C = Hu3DTexScrollCreate(var_r30[var_r31].unk_18, "pa_sk2"); + var_r30[var_r31].unk_1E = Hu3DTexScrollCreate(var_r30[var_r31].unk_18, "pa_sk3"); + Hu3DTexScrollPosMoveSet(var_r30[var_r31].unk_1C, -0.00009166667f, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(var_r30[var_r31].unk_1E, -0.00020000001f, 0.0f, 0.0f); + var_r30[var_r31].unk_20 = 50000.0f; + var_r26 = Hu3DData[var_r30[var_r31].unk_18].hsfData; + for (var_r28 = 0; var_r28 < var_r26->materialCnt; var_r28++) { + var_r26->material[var_r28].flags &= 0xFFFFFDFF; + var_r26->material[var_r28].pass = 1; + var_r26->material[var_r28].invAlpha = 0.001f; + } + } + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x0F)); + Hu3DModelLayerSet(object->model[2], 1); + Hu3DModelScaleSet(object->model[2], 1.5f, 1.5f, 1.5f); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x10)); + Hu3DModelLayerSet(object->model[3], 2); + Hu3DModelScaleSet(object->model[3], 1.5f, 1.5f, 1.5f); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x15)), 0x64); + object->model[var_r31 + 4] = var_r27; + var_r30[var_r31].unk_10 = var_r27; + Hu3DModelLayerSet(var_r27, 2); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xFF); + Hu3DParticleHookSet(var_r27, fn_1_AD04); + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + *((s16 *)Hu3DData[var_r27].unk_120) = 0; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x15)), 0x64); + object->model[var_r31 + 6] = var_r27; + var_r30[var_r31].unk_14 = var_r27; + Hu3DModelLayerSet(var_r27, 1); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xFF); + Hu3DParticleHookSet(var_r27, fn_1_B394); + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + *((s16 *)Hu3DData[var_r27].unk_120) = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp20[var_r31] = Hu3DModelCreateFile(sp90[var_r31]); + } + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + var_r27 = sp20[var_r31 % 4]; + object->model[var_r31 + 8] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x14] = Hu3DModelLink(var_r27); + var_r30[0].unk_24[var_r31] = object->model[var_r31 + 8]; + var_r30[1].unk_24[var_r31] = object->model[var_r31 + 0x14]; + Hu3DModelLayerSet(var_r30[0].unk_24[var_r31], 1); + Hu3DModelLayerSet(var_r30[1].unk_24[var_r31], 1); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp50[var_r31] = Hu3DModelCreateFile(sp80[var_r31]); + sp40[var_r31] = -1; + sp30[var_r31] = -1; + if (sp70[var_r31] != 0) { + sp40[var_r31] = Hu3DModelCreateFile(sp70[var_r31]); + } + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + s32 sp10[2] = { 0x5C, 0x62 }; + var_r25 = spA0[var_r31]; + var_r27 = sp50[var_r25]; + for (var_r28 = 0; var_r28 < 2; var_r28++) { + object->model[var_r31 + sp10[var_r28]] = Hu3DModelLink(var_r27); + var_r30[var_r28].unk_80[var_r31] = object->model[var_r31 + sp10[var_r28]]; + Hu3DModelLayerSet(var_r30[var_r28].unk_80[var_r31], 1); + } + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r30[var_r28].unk_8C[var_r31] = -1; + var_r30[var_r28].unk_98[var_r31] = -1; + } + if (sp40[var_r25] >= 0) { + var_r27 = sp40[var_r25]; + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r30[var_r28].unk_8C[var_r31] = Hu3DModelLink(var_r27); + Hu3DModelLayerSet(var_r30[var_r28].unk_8C[var_r31], 4); + Hu3DModelAttrSet(var_r30[var_r28].unk_8C[var_r31], HU3D_ATTR_ZWRITE_OFF); + } + } + if (sp60[var_r25] != 0) { + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(sp60[var_r25]), 1); + var_r30[var_r28].unk_98[var_r31] = var_r27; + Hu3DModelLayerSet(var_r27, 5); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xFF); + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + *((s16 *)Hu3DData[var_r27].unk_120) = 1; + } + } + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + sp8[var_r31] = Hu3DModelCreateFile(spC[var_r31]); + } + for (var_r31 = 0; var_r31 < 0x1E; var_r31 += 3) { + var_r27 = sp8[frandmod(1)]; + object->model[var_r31 + 0x20] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x21] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x22] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x3E] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x3F] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x40] = Hu3DModelLink(var_r27); + var_r30->unk_40[var_r31 / 3] = object->model[var_r31 + 0x20]; + var_r30->unk_54[var_r31 / 3] = object->model[var_r31 + 0x21]; + var_r30->unk_68[var_r31 / 3] = object->model[var_r31 + 0x22]; + var_r30[1].unk_40[var_r31 / 3] = object->model[var_r31 + 0x3E]; + var_r30[1].unk_54[var_r31 / 3] = object->model[var_r31 + 0x3F]; + var_r30[1].unk_68[var_r31 / 3] = object->model[var_r31 + 0x40]; + Hu3DModelLayerSet(var_r30->unk_40[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30->unk_54[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30->unk_68[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30[1].unk_40[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30[1].unk_54[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30[1].unk_68[var_r31 / 3], 1); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30[var_r31].unk_C0 = fn_1_70AC(object, var_r31, 8); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelKill(sp20[var_r31]); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelKill(sp50[var_r31]); + if (sp40[var_r31] >= 0) { + Hu3DModelKill(sp40[var_r31]); + } + if (sp30[var_r31] >= 0) { + Hu3DModelKill(sp30[var_r31]); + } + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + Hu3DModelKill(sp8[var_r31]); + } + for (var_r30 = work, var_r31 = 0; var_r31 < 2; var_r31++, var_r30++) { + Hu3DModelCameraSet(var_r30->unk_18, sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_1A, sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_10, sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_14, sp18[var_r31]); + for (var_r28 = 0; var_r28 < 0xC; var_r28++) { + Hu3DModelCameraSet(var_r30->unk_24[var_r28], sp18[var_r31]); + } + for (var_r28 = 0; var_r28 < 6; var_r28++) { + Hu3DModelCameraSet(var_r30->unk_80[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_80[var_r28], HU3D_ATTR_DISPOFF); + if (var_r30->unk_8C[var_r28] >= 0) { + Hu3DModelCameraSet(var_r30->unk_8C[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_8C[var_r28], HU3D_ATTR_DISPOFF); + } + if (var_r30->unk_98[var_r28] >= 0) { + Hu3DModelCameraSet(var_r30->unk_98[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_98[var_r28], HU3D_ATTR_DISPOFF); + } + } + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + Hu3DModelCameraSet(var_r30->unk_40[var_r28], sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_54[var_r28], sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_68[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_40[var_r28], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->unk_54[var_r28], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->unk_68[var_r28], HU3D_ATTR_DISPOFF); + } + } + Hu3DModelCameraSet(object->model[2], sp18[0]); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(object->model[3], sp18[0]); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + object->func = fn_1_5DF8; +} + +void fn_1_5DF8(omObjData *object) +{ + M430DllWork *var_r31; + s32 var_r29; + M430DllWork *work; + + work = object->data; + if ((fn_1_4070() >= 2) && (fn_1_4030() != 0)) { + var_r31 = work; + if ((lbl_1_bss_44 == 0) && (fn_1_4130() < 5.0f)) { + lbl_1_bss_4C = var_r31[0].unk_04.x; + if (lbl_1_bss_4C > var_r31[1].unk_04.x) { + lbl_1_bss_4C = var_r31[1].unk_04.x; + } + lbl_1_bss_44 = 1; + } + if ((lbl_1_bss_40 == 0) && (fn_1_4130() < 1.8f)) { + lbl_1_bss_48 = var_r31[0].unk_04.x; + if (lbl_1_bss_48 > var_r31[1].unk_04.x) { + lbl_1_bss_48 = var_r31[1].unk_04.x; + } + lbl_1_bss_40 = 1; + } + } + for (var_r31 = work, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r31->unk_04.z = var_r31->unk_04.x; + var_r31->unk_04.x = var_r31->unk_04.y; + fn_1_6180(var_r31); + fn_1_6540(var_r31); + fn_1_6DC8(var_r31); + fn_1_6754(var_r31); + fn_1_732C(object, var_r31->unk_C0); + fn_1_76D8(object, var_r31->unk_C0); + if (var_r29 != 0) { + if (fn_1_4030() != 0) { + Hu3DModelCameraSet(var_r31->unk_10, 2); + Hu3DModelCameraSet(var_r31->unk_14, 2); + } + else { + Hu3DModelCameraSet(var_r31->unk_10, 1); + Hu3DModelCameraSet(var_r31->unk_14, 1); + } + } + } + if (lbl_1_bss_5C != 0) { + Vec sp20 = { 0.0f, 3000.0f, 0.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(object->model[2]); + Hu3DModelPosSet(object->model[2], 0.0f, 0.0f, fn_1_7FBC(0) - 400.0f); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[3], 0.0f, 0.0f, fn_1_7FBC(0) - 400.0f); + sp20.z = sp14.z = fn_1_7FBC(0) - 400.0f; + sp20.z += 100.0f; + Hu3DShadowPosSet(&sp20, &sp8, &sp14); + return; + } + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); +} + +void fn_1_6180(M430DllWork *work) +{ + Vec sp28; + Vec sp1C; + Vec sp10; + HsfanimStruct01 *var_r30; + s32 var_r29; + + float sp8[2] = { -450.0f, 450.0f }; + sp1C.x = CenterM[work->unk_00].x; + sp1C.y = CenterM[work->unk_00].y + (CZoomM[work->unk_00] * sind(-CRotM[work->unk_00].x)); + sp1C.z = CenterM[work->unk_00].z + (CZoomM[work->unk_00] * cosd(-CRotM[work->unk_00].x)); + sp28.x = sp1C.x; + sp28.y = 0.0f; + sp28.z = sp1C.z - 450000.0f; + VECSubtract(&sp28, &sp1C, &sp10); + VECNormalize(&sp10, &sp10); + VECScale(&sp10, &sp10, 6000.0f); + VECAdd(&sp1C, &sp10, &sp28); + Hu3DModelPosSetV(work->unk_18, &sp28); + if ((fn_1_4070() >= 2) && (fn_1_4030() != 0)) { + if ((lbl_1_bss_40 != 0) && (lbl_1_bss_48 >= work->unk_04.x)) { + if (work->unk_20 > 0.0f) { + work->unk_20 = fn_1_7FBC(work->unk_00) - 23000.0f; + } + sp28.x = 0.0f; + sp28.y = 0.0f; + sp28.z = work->unk_20 - fn_1_7FBC(work->unk_00); + VECSubtract(&sp28, &sp1C, &sp10); + VECNormalize(&sp10, &sp10); + VECScale(&sp10, &sp10, 5000.0f); + VECAdd(&sp1C, &sp10, &sp28); + sp28.y += 237.5f; + Hu3DModelPosSet(work->unk_1A, 0.0f, 593.75f, work->unk_20); + var_r30 = ((ParticleData *)Hu3DData[work->unk_1A].unk_120)->unk_48; + var_r30->unk34.x = var_r30->unk34.y = var_r30->unk34.z = 0.0f; + var_r30->unk2C = 2000.0f; + var_r29 = var_r30->unk40.a; + var_r29 += 2; + if (var_r29 > 0xFF) { + var_r29 = 0xFF; + } + var_r30->unk40.a = var_r29; + } + } + else { + var_r30 = ((ParticleData *)Hu3DData[work->unk_1A].unk_120)->unk_48; + var_r30->unk2C = 0.0f; + var_r30->unk40.a = 0; + } + DCStoreRange(var_r30, sizeof(HsfanimStruct01)); +} + +void fn_1_6540(M430DllWork *work) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = 1; + var_f29 = work->unk_04.x; + work->unk_3C = (s32)(fabs2(var_f29) / 1000.0) % 12; + var_r30 = work->unk_3C; + var_f31 = 1000.0f * (s32)(work->unk_04.x / 1000.0f); + var_f30 = 4000.0f; + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + if (var_r28 != 0) { + Hu3DModelAttrReset(work->unk_24[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_24[var_r30], 0.0f, 0.0f, var_f31); + var_f31 -= 1000.0f; + var_f30 -= 1000.0f; + if (var_f30 < 0.0f) { + var_r28 = 0; + } + } + else { + Hu3DModelAttrSet(work->unk_24[var_r30], HU3D_ATTR_DISPOFF); + } + var_r30 = (var_r30 + 1) % 12; + } +} + +void fn_1_6754(M430DllWork *work) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + s32 var_r30; + HsfanimStruct01 *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = 1; + { + float sp20[6] = { -1800.0f, 2000.0f, -1800.0f, 2000.0f, -1800.0f, 2000.0f }; + Vec2f sp38[6] = { + { -130.0f, 500.0f }, + { 180.0f, 70.0f }, + { 100.0f, 50.0f }, + { -30.000002f, 500.0f }, + { 100.0f, 50.0f }, + { 180.0f, 70.0f }, + }; + float sp8[6] = { 2750.0f, 1550.0f, 1450.0f, 2750.0f, 1450.0f, 1550.0f }; + if (lbl_1_bss_5C != 0) { + var_r27 = 0; + } + if ((fn_1_4070() == 0) || (fn_1_4030() == 0) || (lbl_1_bss_44 == 0) || !(lbl_1_bss_4C > work->unk_04.x)) { + for (var_r28 = 0; var_r28 < 6; var_r28++) { + work->unk_A4[var_r28] = 1; + } + } + var_f26 = work->unk_04.x; + work->unk_BC = (s32)(fabs2(var_f26) / 5000.0) % 6; + var_r30 = work->unk_BC; + var_f31 = 1000.0f + (5000.0f * (s32)(work->unk_04.x / 5000.0f)); + var_f28 = (1000.0f + work->unk_04.x) - 9000.0f; + var_f27 = (1000.0f + work->unk_04.x) - 20000.0f; + for (var_r28 = 0; var_r28 < 6; var_r28++) { + var_r25 = var_r24 = var_r23 = 1; + if ((var_r27 != 0) && (work->unk_A4[var_r30] != 0)) { + if ((var_f31 > var_f28) || ((work->unk_98[var_r30] >= 0) && (var_f31 > var_f27))) { + if (var_f31 > var_f28) { + Hu3DModelAttrReset(work->unk_80[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_80[var_r30], sp20[var_r30], 0.0f, var_f31); + if (work->unk_8C[var_r30] >= 0) { + Hu3DModelAttrReset(work->unk_8C[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_8C[var_r30], sp20[var_r30], 0.0f, var_f31); + } + var_r25 = var_r24 = 0; + } + if ((work->unk_98[var_r30] >= 0) && (var_f31 > var_f27) && (var_f31 < (1000.0f + var_f28))) { + var_r26 = work->unk_98[var_r30]; + Hu3DModelAttrReset(var_r26, HU3D_ATTR_DISPOFF); + var_r29 = ((ParticleData *)Hu3DData[var_r26].unk_120)->unk_48; + Hu3DModelPosSet(work->unk_98[var_r30], sp20[var_r30] + sp38[var_r30].x, sp38[var_r30].y, var_f31); + var_r29->unk34.x = var_r29->unk34.y = var_r29->unk34.z = 0.0f; + var_r29->unk2C = sp8[var_r30]; + var_r29->unk40.a = -1; + var_f30 = fabs(var_f27 - var_f31); + var_f29 = 1000.0f - (var_f31 - var_f28); + if (var_f30 < 2000.0f) { + var_f30 *= 0.0005f; + var_r29->unk40.a = 255.0f * var_f30; + } + else if (var_f29 < 1000.0f) { + var_f29 *= 0.001f; + var_r29->unk40.a = 255.0f * var_f29; + } + DCStoreRange(var_r29, sizeof(HsfanimStruct01)); + var_r23 = 0; + } + } + } + else { + work->unk_A4[var_r30] = 0; + } + if (var_r25 != 0) { + Hu3DModelAttrSet(work->unk_80[var_r30], HU3D_ATTR_DISPOFF); + } + if ((var_r24 != 0) && (work->unk_8C[var_r30] >= 0)) { + Hu3DModelAttrSet(work->unk_8C[var_r30], HU3D_ATTR_DISPOFF); + } + if ((var_r23 != 0) && (work->unk_98[var_r30] >= 0)) { + Hu3DModelAttrSet(work->unk_98[var_r30], HU3D_ATTR_DISPOFF); + } + var_f31 -= 5000.0f; + if (var_f31 < var_f27) { + var_r27 = 0; + } + var_r30 = (var_r30 + 1) % 6; + } + } +} + +void fn_1_6DC8(M430DllWork *work) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = 1; + if (lbl_1_bss_5C != 0) { + var_r28 = 0; + } + var_f29 = work->unk_04.x; + work->unk_7C = (s32)(fabs2(var_f29) / 1000.0) % 10; + var_r30 = work->unk_7C; + var_f31 = 1000.0f + (1000.0f * (s32)(work->unk_04.x / 1000.0f)); + var_f30 = 8000.0f; + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + if (var_r28 != 0) { + Hu3DModelAttrReset(work->unk_40[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk_54[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk_68[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_40[var_r30], -920.0f, 0.0f, var_f31); + Hu3DModelPosSet(work->unk_54[var_r30], 0.0f, 0.0f, var_f31); + Hu3DModelPosSet(work->unk_68[var_r30], 920.0f, 0.0f, var_f31); + var_f31 -= 1000.0f; + var_f30 -= 1000.0f; + if (var_f30 < 0.0f) { + var_r28 = 0; + } + } + else { + Hu3DModelAttrSet(work->unk_40[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(work->unk_54[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(work->unk_68[var_r30], HU3D_ATTR_DISPOFF); + } + var_r30 = (var_r30 + 1) % 10; + } +} + +M430DllUnkStruct2 *fn_1_70AC(omObjData *arg0, s32 var_r27, s16 var_r28) +{ + float var_f31; + float var_f30; + float var_f29; + M430DllUnkStruct2 *var_r31; + s32 var_r30; + M430DllUnkStruct2 *var_r29; + + u32 sp10[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x11), DATA_MAKE_NUM(DATADIR_M430, 0x12) }; + s32 sp8[2] = { 1, 2 }; + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r28 * sizeof(M430DllUnkStruct2), MEMORY_DEFAULT_NUM); + memset(var_r29, 0, var_r28 * 0x3C); + var_f31 = -90.0f; + for (var_r31 = var_r29, var_r30 = 0; var_r30 < var_r28; var_r30++, var_r31++) { + var_r31->unk_00 = var_r27; + var_r31->unk_04 = Hu3DModelCreateFile(sp10[var_r30 & 1]); + Hu3DModelLayerSet(var_r31->unk_04, 1); + Hu3DModelCameraSet(var_r31->unk_04, sp8[var_r31->unk_00]); + var_f30 = frandmod(0x168); + var_f29 = frandmod(0x118); + var_r31->unk_0C.x = var_f29 * sind(var_f30) + fn_1_BB54(var_r27); + var_r31->unk_0C.y = var_f31; + var_r31->unk_0C.z = var_f29 * cosd(var_f30); + var_r31->unk_2C = frandmod(0x168); + var_r31->unk_34 = 1.0f; + var_r31->unk_38 = 0.0f; + var_f31 -= 10.0f; + var_r31->unk_0A = var_r28; + } + return var_r29; +} + +void fn_1_732C(omObjData *object, M430DllUnkStruct2 *arg1) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = arg1->unk_0A; + for (var_r30 = 0; var_r30 < var_r28; var_r30++, arg1++) { + var_r29 = 0; + if (arg1->unk_34 > arg1->unk_38) { + var_r29 = 1; + } + else { + VECSubtract(&arg1->unk_18, &arg1->unk_0C, &sp8); + var_f31 = VECMag(&sp8); + if (var_f31 < 50.0f) { + var_r29 = 1; + } + } + if (var_r29 != 0) { + var_f31 = frandmod(0x168); + var_f30 = 400.0f + frandmod(0x15E); + arg1->unk_18.x = var_f30 * sind(var_f31) + fn_1_BB54(arg1->unk_00); + arg1->unk_18.z = 2.0 * (var_f30 * cosd(var_f31)); + arg1->unk_18.y = arg1->unk_0C.y; + arg1->unk_34 = 0.0f; + arg1->unk_38 = 200.0f + frandmod(0x258); + arg1->unk_28 = 400.0f; + } + VECSubtract(&arg1->unk_18, &arg1->unk_0C, &sp8); + arg1->unk_30 = atan2d(sp8.x, sp8.z); + arg1->unk_2C = fn_1_48B0(arg1->unk_2C, arg1->unk_30, 0.08f); + arg1->unk_28 += 0.05f * (300.0f - arg1->unk_28); + arg1->unk_24 += 0.2f * (arg1->unk_28 - arg1->unk_24); + arg1->unk_0C.x = arg1->unk_0C.x + ((0.016666668f * arg1->unk_24) * sind(arg1->unk_2C)); + arg1->unk_0C.z = arg1->unk_0C.z + ((0.016666668f * arg1->unk_24) * cosd(arg1->unk_2C)); + arg1->unk_34 += 0.016666668f * arg1->unk_24; + } +} + +void fn_1_76D8(omObjData *object, M430DllUnkStruct2 *arg1) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + + var_r29 = arg1->unk_0A; + if (lbl_1_bss_5C != 0) { + for (var_r30 = 0; var_r30 < var_r29; var_r30++, arg1++) { + Hu3DModelAttrSet(arg1->unk_04, HU3D_ATTR_DISPOFF); + } + return; + } + var_f31 = (s32)(0.00011111111f * (1000.0f + fn_1_7FBC(arg1->unk_00))); + var_f31 = (100.0f * (90.0f * var_f31)) - 5000.0f; + for (var_r30 = 0; var_r30 < var_r29; var_r30++, arg1++) { + Hu3DModelPosSet(arg1->unk_04, arg1->unk_0C.x, arg1->unk_0C.y, arg1->unk_0C.z + var_f31); + Hu3DModelRotSet(arg1->unk_04, 0.0f, arg1->unk_2C, 0.0f); + Hu3DModelAttrReset(arg1->unk_04, HU3D_ATTR_DISPOFF); + } +} + +void fn_1_7848(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M430DllWork2 *var_r31; + s16 var_r30; + s32 var_r29; + M430DllWork2 *work; + s32 var_r26; + + var_r30 = 0x20; + work = HuMemDirectMallocNum(HEAP_SYSTEM, var_r30 * sizeof(M430DllWork2), MEMORY_DEFAULT_NUM); + object->data = work; + memset(work, 0, var_r30 * sizeof(M430DllWork2)); + var_r26 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x13)); + var_f29 = 1000.0f; + for (var_r31 = work, var_r29 = 0; var_r29 < var_r30; var_r29++, var_r31++) { + var_r31->unk_00 = Hu3DModelLink(var_r26); + Hu3DModelLayerSet(var_r31->unk_00, 1); + Hu3DModelCameraSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); + var_r31->unk_14.x = (2.8f * frandmod(0x3E8)) - 1400.0f; + var_r31->unk_14.z = 0.7f * frandmod(0x3E8) - 350.0f; + var_r31->unk_14.y = 300.0f + (0.8f * frandmod(0x3E8)); + var_f30 = frandmod(0x168); + var_f31 = 200.0f + frandmod(0xAF); + var_r31->unk_08.x = var_f31 * sind(var_f30); + var_r31->unk_08.y = 0.0f; + var_r31->unk_08.z = var_f31 * cosd(var_f30); + VECAdd(&var_r31->unk_14, &var_r31->unk_08, &var_r31->unk_08); + var_r31->unk_38 = 60.0f - (0.13483146f * var_f31); + var_r31->unk_28 = frandmod(0x168); + if (frandmod(0x3E8) < 0x1F4) { + var_f28 = -70.0f + (0.1f * frandmod(0x32)); + } + else { + var_f28 = 70.0f - (0.1f * frandmod(0x32)); + } + var_r31->unk_3C = var_f28; + if (var_r31->unk_3C < 0.0f) { + var_r31->unk_38 = -var_r31->unk_38; + } + var_r31->unk_30 = 1.0f; + var_r31->unk_34 = 0.0f; + var_f29 -= 50.0f; + var_r31->unk_06 = var_r30; + } + (void)var_r29; + (void)object; + Hu3DModelKill(var_r26); + object->func = fn_1_7CAC; +} + +void fn_1_7CAC(omObjData *object) +{ + Vec spC; + s32 sp8; + s32 var_r29; + + M430DllWork2 *work = object->data; + s32 var_r28 = work->unk_06; + if (fn_1_4070() >= 4) { + for (var_r29 = 0; var_r29 < var_r28; var_r29++, work++) { + sp8 = 0; + VECSubtract(&work->unk_14, &work->unk_08, &spC); + work->unk_2C = atan2d(spC.x, spC.z); + work->unk_28 = fn_1_48B0(work->unk_28, work->unk_2C + work->unk_3C, 0.08f); + work->unk_24 += (0.05f * (600.0f - work->unk_24)); + work->unk_20 += (0.2f * (work->unk_24 - work->unk_20)); + work->unk_08.x += ((0.016666668f * work->unk_20) * sind(work->unk_28)); + work->unk_08.z += ((0.016666668f * work->unk_20) * cosd(work->unk_28)); + work->unk_30 += (0.016666668f * work->unk_20); + } + fn_1_7EAC(object, object->data); + } +} + +void fn_1_7EAC(omObjData *object, M430DllWork2 *var_r31) +{ + Mtx sp8; + float var_f31; + s32 var_r30; + Mtx *var_r29; + s32 var_r28; + + var_r28 = var_r31->unk_06; + var_f31 = fn_1_7FBC(0) - 2000.0f; + for (var_r30 = 0; var_r30 < var_r28; var_r30++, var_r31++) { + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z + var_f31); + var_r29 = &Hu3DData[var_r31->unk_00].unk_F0; + MTXRotRad(*var_r29, 0x59, 0.017453292f * var_r31->unk_28); + MTXRotRad(sp8, 0x5A, 0.017453292f * var_r31->unk_38); + MTXConcat(*var_r29, sp8, *var_r29); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); + } +} + +float fn_1_7FBC(s32 arg0) +{ + M430DllWork *var_r31; + M430DllWork *var_r30; + + var_r30 = lbl_1_bss_58->data; + arg0 &= 1; + var_r31 = var_r30; + return var_r31[arg0].unk_04.x; +} + +void fn_1_7FFC(s32 arg0, float arg8) +{ + M430DllWork *var_r31; + M430DllWork *var_r30; + + var_r30 = lbl_1_bss_58->data; + arg0 &= 1; + var_r31 = var_r30; + var_r31[arg0].unk_04.y = arg8; +} + +void fn_1_803C(omObjData *var_r31) +{ + var_r31->stat |= 0x100; + omSetStatBit(var_r31, 0xA0); + var_r31->model[0] = Hu3DHookFuncCreate(fn_1_8CE0); + Hu3DModelLayerSet(var_r31->model[0], 4); + Hu3DModelCameraSet(var_r31->model[0], 1); + var_r31->model[1] = Hu3DHookFuncCreate(fn_1_8CE0); + Hu3DModelLayerSet(var_r31->model[1], 4); + Hu3DModelCameraSet(var_r31->model[1], 2); + var_r31->model[2] = Hu3DHookFuncCreate(fn_1_9C90); + Hu3DModelLayerSet(var_r31->model[2], 0); + Hu3DModelCameraSet(var_r31->model[2], 1); + var_r31->model[3] = Hu3DHookFuncCreate(fn_1_9C90); + Hu3DModelLayerSet(var_r31->model[3], 0); + Hu3DModelCameraSet(var_r31->model[3], 2); + var_r31->model[4] = Hu3DHookFuncCreate(fn_1_A3A8); + Hu3DModelLayerSet(var_r31->model[4], 1); + Hu3DModelCameraSet(var_r31->model[4], 3); + var_r31->model[5] = Hu3DHookFuncCreate(fn_1_AB98); + Hu3DModelLayerSet(var_r31->model[5], 3); + Hu3DModelCameraSet(var_r31->model[5], 3); + var_r31->model[6] = Hu3DHookFuncCreate(fn_1_AC84); + Hu3DModelLayerSet(var_r31->model[6], 7); + Hu3DModelCameraSet(var_r31->model[6], 3); + lbl_1_bss_60->unk_00 = 0; + lbl_1_bss_60->unk_04 = var_r31->model[0]; + fn_1_82F4(var_r31, lbl_1_bss_60); + lbl_1_bss_60[1].unk_00 = 1; + lbl_1_bss_60[1].unk_04 = var_r31->model[1]; + fn_1_82F4(var_r31, &lbl_1_bss_60[1]); + var_r31->func = fn_1_8264; +} + +void fn_1_8264(omObjData *object) +{ + lbl_1_bss_60[0].unk_08 = lbl_1_bss_60[1].unk_08 = 0; + lbl_1_bss_60[0].unk_0C = lbl_1_bss_60[1].unk_0C = 0; + lbl_1_bss_60[0].unk_10 = lbl_1_bss_60[1].unk_10 = 0; + lbl_1_bss_60[0].unk_14 = lbl_1_bss_60[1].unk_14 = 0; + lbl_1_bss_60[0].unk_18 = lbl_1_bss_60[1].unk_18 = 0; +} + +void fn_1_82F4(omObjData *object, M430DllBss60Struct *var_r31) +{ + float var_f31; + float var_f30; + s32 var_r30; + Vec *var_r29; + GXColor *var_r28; + s32 var_r27; + + s32 sp8[8] = { 0, 0x16, 1, 0x17, 1, 0, 0x17, 0x16 }; + + var_r31->unk_2C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_30 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x14A0, MEMORY_DEFAULT_NUM); + var_r31->unk_38 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x6E0, MEMORY_DEFAULT_NUM); + var_r31->unk_40 = 0; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_44[var_r30] = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_54[var_r30] = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(GXColor), MEMORY_DEFAULT_NUM); + } + var_r31->unk_5C = 0x12D0; + var_r31->unk_60 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_5C, MEMORY_DEFAULT_NUM); + DCFlushRange(var_r31->unk_60, var_r31->unk_5C); + var_r31->unk_64 = 0; + var_r31->unk_68 = GXGetTexBufferSize(0x140, 0x1E0, 5, 0, 0); + if (var_r31->unk_00 == 0) { + var_r31->unk_68 *= 2; + } + var_r31->unk_6C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_68, MEMORY_DEFAULT_NUM); + DCFlushRange(var_r31->unk_6C, var_r31->unk_68); + var_r31->unk_1C = 0; + var_r31->unk_20 = 0; + var_r31->unk_24 = 0.0f; + var_r31->unk_28 = 0.0f; + var_r29 = var_r31->unk_2C; + var_f31 = 0.0f; + var_f30 = -2000.0f; + for (var_r30 = 0; var_r30 < 0x14; var_r30++) { + var_f31 = 65.47619f - var_f31; + for (var_r27 = 0; var_r27 < 0x16; var_r27++) { + var_r29->x = ((130.95238f * var_r27) - 1375.0f) + var_f31; + var_r29->y = 0.0f; + var_r29->z = var_f30; + var_r29++; + } + var_f30 += 210.52632f; + } + memset(var_r31->unk_30, 0, 0x1B8 * sizeof(Vec)); + for (var_r29 = var_r31->unk_30, var_r30 = 0; var_r30 < 0x1B8; var_r30++, var_r29++) { + var_r29->y = (0.05f * frandmod(0x3E8)) - 20.0f; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + memcpy(var_r31->unk_44[var_r30], var_r31->unk_2C, 0x1B8 * sizeof(Vec)); + for (var_r28 = var_r31->unk_54[var_r30], var_r27 = 0; var_r27 < 0x1B8; var_r27++, var_r28++) { + var_r28->r = 0x32; + var_r28->g = 0x8C; + var_r28->b = 0xB4; + var_r28->a = 0; + } + } + fn_1_86B4(object, var_r31); + fn_1_8B5C(object, var_r31); +} + +void fn_1_86B4(omObjData *object, M430DllBss60Struct *arg1) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + GXColor *var_r30; + s32 var_r29; + Vec *var_r28; + Vec *var_r27; + Vec *var_r26; + u32 var_r25; + s32 var_r24; + s32 var_r23; + M430DllWork *var_r22; + M430DllWork *var_r21; + + if (omPauseChk() == 0) { + arg1->unk_1C++; + } + arg1->unk_40 = 1 - arg1->unk_40; + var_r25 = arg1->unk_00; + var_r21 = lbl_1_bss_58->data; + var_r25 &= 1; + var_r22 = var_r21; + var_f29 = var_r22[var_r25].unk_04.x; + var_f28 = var_f29; + var_f30 = var_f28; + var_r24 = 0.002375f * var_f30; + arg1->unk_28 = 421.05264f * var_r24; + arg1->unk_24 = var_f30 - arg1->unk_28; + arg1->unk_20 = (var_r24 * 2) % 20; + var_r23 = (arg1->unk_20 + 0x14) % 20; + Hu3DModelPosSet(arg1->unk_04, fn_1_BB54(arg1->unk_00), 0.0f, arg1->unk_28 - 500.0f); + var_r28 = arg1->unk_2C; + var_r30 = arg1->unk_54[arg1->unk_40]; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 2000.0f + arg1->unk_24; + if (lbl_1_bss_5C != 0) { + for (var_r29 = 0; var_r29 < 0x1B8; var_r29++) { + VECSubtract(var_r28, &sp14, &sp8); + var_f31 = 0.00025f * VECMag(&sp8); + if (var_f31 < 0.3f) { + var_r30->a = -1; + } + else if (var_f31 > 0.75f) { + var_r30->a = 0; + } + else { + var_f31 = 255.0f - (566.6667f * (var_f31 - 0.3f)); + var_r30->a = var_f31; + } + var_r28++; + var_r30++; + } + } + else { + for (var_r29 = 0; var_r29 < 0x1B8; var_r29++) { + VECSubtract(var_r28, &sp14, &sp8); + var_f31 = 0.00025f * VECMag(&sp8); + if (var_f31 < 0.25f) { + var_r30->a = -0x1A; + } + else if (var_f31 > 0.85f) { + var_r30->a = 0; + } + else { + var_f31 = 230.0f - (383.3333f * (var_f31 - 0.25f)); + var_r30->a = var_f31; + } + var_r28++; + var_r30++; + } + } + if (lbl_1_bss_5C != 0) { + memcpy(arg1->unk_44[arg1->unk_40], arg1->unk_2C, 0x1B8 * sizeof(Vec)); + } + else { + var_r28 = arg1->unk_2C; + var_r26 = arg1->unk_44[arg1->unk_40]; + var_r29 = (0x14 - var_r23) * 0x16; + var_r27 = &arg1->unk_30[0x1B8 - var_r29]; + while (var_r29-- != 0) { + VECAdd(var_r28, var_r27, var_r26); + var_r28++; + var_r27++; + var_r26++; + } + var_r29 = var_r23 * 0x16; + var_r27 = arg1->unk_30; + while (var_r29-- != 0) { + VECAdd(var_r28, var_r27, var_r26); + var_r28++; + var_r27++; + var_r26++; + } + memcpy(arg1->unk_44[arg1->unk_40], arg1->unk_2C, 0x16 * sizeof(Vec)); + } + DCStoreRangeNoSync(arg1->unk_44[arg1->unk_40], 0x1B8 * sizeof(Vec)); + DCStoreRangeNoSync(arg1->unk_54[arg1->unk_40], 0x1B8 * sizeof(GXColor)); + PPCSync(); +} + +void fn_1_8B5C(omObjData *object, M430DllBss60Struct *var_r30) +{ + s32 var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + s32 sp28[5] = { 0, 0, 0, 1, 1 }; + s32 sp18[4] = { 1, 0, 0, 0 }; + s32 sp8[4] = { 0, 0, 1, 2 }; + GXBeginDisplayList(var_r30->unk_60, var_r30->unk_5C); + var_r26 = 0; + var_r31 = 0; + for (var_r29 = 0; var_r29 < 0x13; var_r29++) { + var_r24 = 0x2B - (((var_r26 * 2) + sp8[var_r31]) * 2); + var_r27 = sp18[var_r31]; + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, var_r24); + for (var_r28 = 0; var_r28 < var_r24; var_r28++) { + var_r25 = (var_r28 >> 1) + ((var_r29 + var_r27) * 0x16) + (var_r26 + sp28[var_r31 + var_r27]); + GXUnknownu16(var_r25); + GXUnknownu16(var_r25); + var_r27 = 1 - var_r27; + } + var_r31++; + if (var_r31 >= 4) { + var_r31 = 0; + var_r26++; + } + } + var_r30->unk_64 = GXEndDisplayList(); +} + +void fn_1_8CE0(ModelData *model, Mtx matrix) +{ + Mtx sp194; + Mtx sp164; + Mtx sp134; + Mtx sp104; + Mtx spD4; + Mtx spA4; + Mtx sp74; + Mtx sp44; + GXTexObj sp24; + float var_f31; + float var_f30; + M430DllBss60Struct *var_r31; + + GXColor sp20 = { 0xFF, 0xFF, 0xFF, 0xFF }; + GXColor sp1C = { 0x08, 0x08, 0x08, 0xFF }; + GXColor sp18 = { 0x00, 0x00, 0x00, 0x80 }; + GXColor sp14 = { 0xCC, 0xBF, 0xB2, 0x33 }; + GXColor sp10 = { 0xE0, 0xD8, 0xF4, 0x08 }; + var_r31 = lbl_1_bss_60; + if (var_r31->unk_10 != 0) { + var_r31 = &var_r31[1]; + } + var_r31->unk_10 = 1; + fn_1_963C(model, matrix, var_r31->unk_00); + MTXCopy(matrix, sp134); + if (fn_1_4030() != 0) { + var_f30 = 1.0f; + var_f31 = fn_1_BB54(var_r31->unk_00); + } + else { + var_f30 = 1.5f; + var_f31 = 0.0f; + } + MTXTrans(sp164, var_f31 - fn_1_BB54(var_r31->unk_00), 0.0f, 0.0f); + MTXConcat(sp134, sp164, sp134); + MTXScale(sp194, var_f30, 1.0f, 1.0f); + MTXConcat(sp134, sp194, sp134); + GXLoadPosMtxImm(sp134, 0); + MTXInvXpose(sp134, sp194); + GXLoadNrmMtxImm(sp194, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + if ((fn_1_4030() == 0) && (var_r31->unk_00 == 0)) { + GXInitTexObj(&sp24, var_r31->unk_6C, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + } + else { + GXInitTexObj(&sp24, var_r31->unk_6C, 0x140, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + } + GXInitTexObjLOD(&sp24, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&sp24, GX_TEXMAP0); + HuSprTexLoad(lbl_1_bss_150, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_148, 0, 2, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTexGens(3); + if (fn_1_4030() != 0) { + C_MTXLightPerspective(sp104, 41.5f, 0.6f, 0.5f, -0.5f, 0.5f, 0.5f); + } + else { + C_MTXLightPerspective(sp104, 41.5f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + } + MTXInverse(Hu3DCameraMtx, spD4); + MTXConcat(spD4, sp134, spD4); + MTXConcat(sp104, Hu3DCameraMtx, spA4); + MTXConcat(spA4, spD4, spD4); + GXLoadTexMtxImm(spD4, 0x1E, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + C_MTXLightPerspective(sp104, 70.0f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, sp74); + MTXConcat(sp74, sp134, sp74); + MTXConcat(sp104, Hu3DCameraMtx, sp44); + MTXConcat(sp44, sp74, sp74); + GXLoadTexMtxImm(sp74, 0x24, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX3x4, GX_TG_POS, 0x24, GX_FALSE, 0x7D); + MTXRotRad(sp164, 0x58, 1.5707964f); + var_f31 = 0.00075f * var_f30; + MTXScale(sp194, var_f31, -0.003f, 0.00075f); + MTXConcat(sp164, sp194, sp164); + MTXTrans(sp194, (var_r31->unk_1C & 0x3FF) / (1024.0f * var_f31), 0.0f, (0.7f * var_r31->unk_28) - (0.3f * var_r31->unk_24)); + MTXConcat(sp164, sp194, sp164); + sp164[0][1] = -0.001f; + GXLoadTexMtxImm(sp164, 0x21, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + GXSetNumIndStages(2); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(0, 0, GX_TRUE, GX_FALSE, 1); + MTXScale(sp164, -0.25f, -0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])sp164, -4); + GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD1, GX_TEXMAP1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(1, 1, GX_TRUE, GX_FALSE, 2); + MTXScale(sp164, 0.4f, 0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_1, (float(*)[3])sp164, -1); + GXSetNumTevStages(2); + GXSetTevColor(GX_TEVREG0, sp14); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_RASA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_ZERO, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD2, GX_TEXMAP2, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(1, GX_LEQUAL, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, var_r31->unk_44[var_r31->unk_40], sizeof(Vec)); + GXSetArray(GX_VA_CLR0, var_r31->unk_54[var_r31->unk_40], sizeof(GXColor)); + GXSetCullMode(GX_CULL_NONE); + GXCallDisplayList(var_r31->unk_60, var_r31->unk_64); + GXSetCullMode(GX_CULL_BACK); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +Vec lbl_1_data_60[6] = { + { -2750.0f, 0.0f, -2500.0f }, + { 2750.0f, 0.0f, -2500.0f }, + { -2750.0f, 0.0f, 0.0f }, + { 2750.0f, 0.0f, 0.0f }, + { -1375.0f, 0.0f, 2500.0f }, + { 1375.0f, 0.0f, 2500.0f }, +}; +GXColor lbl_1_data_A8[6] = { + { 5, 0x38, 0xA2, 0 }, + { 5, 0x38, 0xA2, 0xFF }, + { 0x14, 0x54, 0xAB, 0xFF }, + { 0x1E, 0x6D, 0xB0, 0xFF }, + { 0x2A, 0x7E, 0xB4, 0xFF }, + { 0x32, 0x8C, 0xB4, 0xFF }, +}; + +void fn_1_963C(ModelData *model, Mtx matrix, u32 var_r31) +{ + Mtx sp100; + Mtx spD0; + Mtx spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + float var_f31; + float var_f30; + + GXColor spC = { 0x32, 0x8C, 0xB4, 0x33 }; + if (fn_1_4030() != 0) { + var_f30 = 1.0f; + var_f31 = fn_1_BB54(var_r31); + } + else { + var_f30 = 1.5f; + var_f31 = 0.0f; + } + MTXTrans(spD0, var_f31, 0.0f, ((lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24) - 2500.0f) - 2000.0f); + MTXScale(sp100, var_f30, 1.0f, 1.0f); + MTXConcat(spD0, sp100, spD0); + MTXConcat(Hu3DCameraMtx, spD0, spA0); + GXLoadPosMtxImm(spA0, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_14C, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_148, 0, 1, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTexGens(2); + C_MTXLightPerspective(sp70, 70.0f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, sp40); + MTXConcat(sp40, spA0, sp40); + MTXConcat(sp70, Hu3DCameraMtx, sp10); + MTXConcat(sp10, sp40, sp40); + GXLoadTexMtxImm(sp40, 0x21, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + MTXRotRad(spD0, 0x58, 1.5707964f); + var_f31 = 0.00075f * var_f30; + MTXScale(sp100, var_f31, -0.003f, 0.00075f); + MTXConcat(spD0, sp100, spD0); + MTXTrans(sp100, (lbl_1_bss_60[var_r31].unk_1C & 0x3FF) / (1024.0f * var_f31), 0.0f, + 0.3f * (lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24)); + MTXConcat(spD0, sp100, spD0); + GXLoadTexMtxImm(spD0, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(0, 0, GX_TRUE, GX_FALSE, 1); + MTXScale(spD0, 0.5f, 0.6f, 0.6f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spD0, -1); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_60, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, lbl_1_data_A8, sizeof(GXColor)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(3); + GXPosition1x8(1); + GXColor1x8(3); + GXPosition1x8(2); + GXColor1x8(4); + GXPosition1x8(3); + GXColor1x8(4); + GXPosition1x8(4); + GXColor1x8(5); + GXPosition1x8(5); + GXColor1x8(5); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); +} + +Vec lbl_1_data_C0[8] = { + { -2750.0f, 20.0f, 0.0f }, + { 2750.0f, 20.0f, 0.0f }, + { -2750.0f, -20.0f, 0.0f }, + { 2750.0f, -20.0f, 0.0f }, + { -2750.0f, -160.0f, 0.0f }, + { 2750.0f, -160.0f, 0.0f }, + { -2750.0f, -340.0f, 0.0f }, + { 2750.0f, -340.0f, 0.0f }, +}; +Vec lbl_1_data_120[6] = { + { -700.0f, 0.0f, -1750.0f }, + { 700.0f, 0.0f, -1750.0f }, + { -700.0f, 0.0f, -1400.0f }, + { 700.0f, 0.0f, -1400.0f }, + { -700.0f, 0.0f, 700.0f }, + { 700.0f, 0.0f, 700.0f }, +}; + +void fn_1_9C90(ModelData *model, Mtx matrix) +{ + Mtx sp124; + Mtx spF4; + Mtx spC4; + Mtx sp94; + Mtx sp64; + Mtx sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + + GXColor spC = { 0x32, 0x8C, 0xB4, 0x33 }; + var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_14 != 0) { + var_r31++; + } + lbl_1_bss_60[var_r31].unk_14 = 1; + sp1C.x = CenterM[var_r31].x; + sp1C.y = CenterM[var_r31].y + (CZoomM[var_r31] * sind(-CRotM[var_r31].x)); + sp1C.z = CenterM[var_r31].z + (CZoomM[var_r31] * cosd(-CRotM[var_r31].x)); + sp28.x = sp1C.x; + sp28.y = 0.0f; + sp28.z = sp1C.z - 450000.0f; + VECSubtract(&sp28, &sp1C, &sp10); + VECNormalize(&sp10, &sp10); + VECScale(&sp10, &sp10, 8000.0f); + VECAdd(&sp1C, &sp10, &sp28); + MTXTrans(spF4, sp28.x, sp28.y, sp28.z); + var_f31 = 1.0f; + if (fn_1_4030() == 0) { + var_f31 = 1.5f; + MTXScale(sp124, var_f31, 1.0f, 1.0f); + MTXConcat(spF4, sp124, spF4); + } + MTXConcat(Hu3DCameraMtx, spF4, spC4); + GXLoadPosMtxImm(spC4, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_14C, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_148, 0, 1, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTexGens(2); + C_MTXLightPerspective(sp94, 70.0f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, sp64); + MTXConcat(sp64, spC4, sp64); + MTXConcat(sp94, Hu3DCameraMtx, sp34); + MTXConcat(sp34, sp64, sp64); + GXLoadTexMtxImm(sp64, 0x21, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + var_f30 = 0.00075f * var_f31; + MTXScale(spF4, var_f30, -0.005f, 0.00075f); + MTXTrans(sp124, (lbl_1_bss_60[var_r31].unk_1C & 0x3FF) / (1024.0f * var_f30), + 0.03f * -(lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24), 0.0f); + MTXConcat(spF4, sp124, spF4); + GXLoadTexMtxImm(spF4, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(0, 0, GX_TRUE, GX_FALSE, 1); + MTXScale(spF4, 0.5f, 0.6f, 0.6f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spF4, -1); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_C0, 0xC); + GXSetArray(GX_VA_CLR0, lbl_1_data_A8, 4); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + for (var_r30 = 0; var_r30 < 8; var_r30++) { + GXPosition1x8(var_r30); + GXColor1x8(var_r30 >> 1); + } + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); +} + +GXColor lbl_1_data_168[2] = { { 0xFF, 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0xFF, 0xFF } }; + +void fn_1_A3A8(ModelData *model, Mtx matrix) +{ + Mtx sp48; + Mtx sp18; + float var_f31; + float var_f30; + u8 *var_r30; + u8 *var_r29; + + GXColor sp14 = { 0xFF, 0xA5, 0x59, 0xB2 }; + GXColor sp10 = { 0x99, 0x72, 0x59, 0xB2 }; + s32 var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_0C != 0) { + var_r31++; + } + lbl_1_bss_60[var_r31].unk_0C = 1; + if (fn_1_4030() != 0) { + var_f30 = 1.0f; + var_f31 = fn_1_BB54(var_r31); + } + else { + var_f30 = 1.5f; + var_f31 = 0.0f; + } + if (lbl_1_bss_5C != 0) { + MTXTrans(sp18, var_f31, 0.0f, 300.0f + (lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24)); + GXSetTevColor(GX_TEVREG0, sp10); + } + else { + MTXTrans(sp18, var_f31, -150.0f, lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24); + GXSetTevColor(GX_TEVREG0, sp14); + } + MTXScale(sp48, var_f30, 1.0f, 1.0f); + MTXConcat(sp18, sp48, sp18); + MTXConcat(Hu3DCameraMtx, sp18, sp18); + GXLoadPosMtxImm(sp18, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_144, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_140, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + MTXRotRad(sp18, 0x58, 1.5707964f); + var_f31 = 0.004f * var_f30; + MTXScale(sp48, var_f31, -0.004f, 0.004f); + MTXConcat(sp18, sp48, sp18); + MTXTrans(sp48, (lbl_1_bss_60[var_r31].unk_1C & 0x3FF) / (512.0f * var_f31), 0.0f, + (1.2499999f * (lbl_1_bss_60[var_r31].unk_1C % 400)) + (lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24)); + MTXConcat(sp18, sp48, sp18); + GXLoadTexMtxImm(sp18, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + MTXRotRad(sp18, 0x58, 1.5707964f); + var_f31 = 0.004f * var_f30; + MTXScale(sp48, var_f31, -0.004f, 0.004f); + MTXConcat(sp18, sp48, sp18); + MTXTrans(sp48, (lbl_1_bss_60[var_r31].unk_1C % 300) / (150.0f * var_f31), 0.0f, lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24); + MTXConcat(sp18, sp48, sp18); + GXLoadTexMtxImm(sp18, 0x21, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_120, 0xC); + GXSetArray(GX_VA_CLR0, lbl_1_data_168, 4); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(0); + GXPosition1x8(1); + GXColor1x8(0); + GXPosition1x8(2); + GXColor1x8(1); + GXPosition1x8(3); + GXColor1x8(1); + GXPosition1x8(4); + GXColor1x8(1); + GXPosition1x8(5); + GXColor1x8(1); +} + +void fn_1_AB98(ModelData *model, Mtx matrix) +{ + s32 var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_08 != 0) { + var_r31++; + } + if ((fn_1_4030() == 0) && (var_r31 == 0)) { + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + } + else { + GXSetTexCopySrc(var_r31 * 0x140, 0, 0x140, 0x1E0); + GXSetTexCopyDst(0x140, 0x1E0, GX_TF_RGB5A3, 0); + } + GXCopyTex(lbl_1_bss_60[var_r31].unk_6C, 0); + GXPixModeSync(); + lbl_1_bss_60[var_r31].unk_08 = 1; +} + +void fn_1_AC84(ModelData *model, Mtx matrix) +{ + s32 var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_18 != 0) { + var_r31++; + } + lbl_1_bss_60[var_r31].unk_18 = 1; + fn_1_86B4(lbl_1_bss_54, &lbl_1_bss_60[var_r31]); +} + +void fn_1_AD04(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + if ((particle->unk_00 == 0) || (lbl_1_bss_5C != 0)) { + particle->unk_00++; + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + return; + } + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + VECScale(&var_r31->unk08, &var_r31->unk08, 0.97f); + if (var_r31->unk00 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + var_r31->unk2C += 1.5f; + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_AEE0(s32 arg0, Vec *arg1, float arg8, float arg9) +{ + Vec sp10; + float var_f31; + float var_f30; + float var_f28; + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + M430DllWork *var_r28; + u32 var_r27; + void *var_r26; + + var_r26 = lbl_1_bss_58->data; + var_r28 = var_r26; + var_r30 = Hu3DData[var_r28[arg0].unk_10].unk_120; + if (var_r30->unk_00 != 0) { + var_r31 = var_r30->unk_48; + if (!(frandmod(0x3E8) > (1200.0f * arg9))) { + var_r27 = 1; + var_f28 = 30.0f; + for (var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 == 0) { + var_r31->unk00 = 60.0f * (0.5f + (0.0005f * frandmod(0x3E8))); + var_f30 = (0.002f * frandmod(0x3E8)) - 1.0f; + var_f30 = arg8 + (var_f30 * var_f28); + sp10.x = sind(var_f30); + sp10.y = 0.0f; + sp10.z = cosd(var_f30); + var_r31->unk34 = *arg1; + var_r31->unk34.y = -20.0f; + var_f31 = 5.0f + arg9 * (1.6666667f * (2.0f * (0.001f * frandmod(0x3E8)))); + var_r31->unk08.x = sp10.x * var_f31; + var_r31->unk08.y = -0.2f * var_f31; + var_r31->unk08.z = sp10.z * var_f31; + var_f31 = 0.001f * frandmod(0x3E8); + var_f31 += (1.0f - var_f31) * (0.5f * arg9); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 80.0f + frandmod(0x46); + var_r31->unk40.a = frandmod(0x64) + 0x64; + var_r31->unk40.r = 150.0f + (95.0f * var_f31); + var_r31->unk40.g = 160.0f + (80.0f * var_f31); + var_r31->unk40.b = 166.0f + (60.0f * var_f31); + if (--var_r27 == 0) { + break; + } + } + } + } + } +} + +void fn_1_B394(ModelData *model, ParticleData *var_r30, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + if ((var_r30->unk_00 == 0) || (lbl_1_bss_5C != 0)) { + var_r30->unk_00++; + for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + return; + } + for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + var_r31->unk00--; + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk2C += 0.5f; + if (var_r31->unk00 < 30.0) { + var_r31->unk40.a = 0.98f * var_r31->unk40.a; + } + if ((var_r31->unk34.y < -40.0f) || (var_r31->unk00 == 0)) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_B570(s32 arg0, Vec *arg1, float arg8, float arg9, Vec *arg2) +{ + Vec sp28; + Vec sp1C; + s32 sp18; + float var_f31; + float var_f30; + float var_f28; + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + M430DllWork *var_r28; + u32 var_r27; + M430DllWork *var_r26; + + var_r26 = lbl_1_bss_58->data; + { + float sp14[2] = { -100.0f, 100.0f }; + var_r28 = var_r26; + var_r30 = Hu3DData[var_r28[arg0].unk_14].unk_120; + if (var_r30->unk_00 != 0) { + var_r31 = var_r30->unk_48; + if (!(frandmod(0x3E8) > (1000.0f * arg9))) { + var_r27 = 2; + var_f28 = 40.0f; + VECScale(arg2, &sp1C, 0.2f); + sp1C.x = 0.0f; + for (var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 == 0) { + var_r31->unk00 = 60.0f * (0.5f + (0.0005f * frandmod(0x3E8))); + var_f30 = (0.002f * frandmod(0x3E8)) - 1.0f; + var_f30 = arg8 + sp14[var_r29 & 1] + (var_f30 * var_f28); + sp28.x = sind(var_f30); + sp28.y = 0.0f; + sp28.z = cosd(var_f30); + var_r31->unk34 = *arg1; + var_r31->unk34.x = var_r31->unk34.x + ((0.05f * frandmod(0x3E8)) - 25.0f); + var_r31->unk34.z = var_r31->unk34.z + ((0.05f * frandmod(0x3E8)) - 25.0f); + var_r31->unk34.y = 40.0f; + var_f31 = 1.6666667f + (arg9 * (0.0016666667f * frandmod(0x3E8))); + var_r31->unk08.x = sp28.x * var_f31; + var_r31->unk08.z = sp28.z * var_f31; + var_r31->unk08.y = 0.0f; + VECAdd(&var_r31->unk08, &sp1C, &var_r31->unk08); + var_f31 = 0.001f * frandmod(0x3E8); + var_f31 += (1.0f - var_f31) * (0.3f * arg9); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 60.0f + frandmod(0x50); + var_r31->unk40.a = (60.0f * arg9) + frandmod(0x50); + var_r31->unk40.r = 150.0f + (95.0f * var_f31); + var_r31->unk40.g = 160.0f + (80.0f * var_f31); + var_r31->unk40.b = 166.0f + (60.0f * var_f31); + if (--var_r27 == 0) { + break; + } + } + } + } + } + } +} + +float fn_1_BB54(u32 arg0) +{ + float sp8[2] = { -450.0f, 450.0f }; + + return sp8[arg0 & 1]; +} + +float fn_1_BB88(void) +{ + return 0.0f; +} + +void fn_1_BB98(u32 arg0) +{ + lbl_1_bss_5C = 0; + if (arg0 != 0) { + lbl_1_bss_5C = 1; + } +} diff --git a/src/REL/m431Dll/main.c b/src/REL/m431Dll/main.c index 44e0cea4..4aec497d 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -2,43 +2,41 @@ #include "game/hsfmotion.h" #include "game/msm.h" +#include "game/audio.h" #include "game/object.h" #include "game/objsub.h" -#include "game/audio.h" -#include "game/wipe.h" #include "game/pad.h" +#include "game/wipe.h" -#include "game/sprite.h" -#include "game/minigame_seq.h" #include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/sprite.h" #include "ext_math.h" #include "REL/m431Dll.h" - -#include "rel_sqrt_consts.h" - +#include "version.h" typedef struct bss_5C_struct { - s16 unk0[6]; - s16 unkC[2]; - s16 unk10; - s16 unk12; - s16 unk14; - s16 unk16; - float unk18; - float unk1C; - float unk20; - float unk24; - float unk28[2]; - float unk30; - float unk34; + s16 unk0[6]; + s16 unkC[2]; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + float unk18; + float unk1C; + float unk20; + float unk24; + float unk28[2]; + float unk30; + float unk34; } Bss5CStruct; typedef struct camera_view_params { - float zoom; - Vec pos; - Vec rot; + float zoom; + Vec pos; + Vec rot; } CameraViewParams; Bss5CStruct lbl_1_bss_5C; @@ -61,212 +59,183 @@ s8 lbl_1_bss_0; Vec lbl_1_data_0 = { 800, 1300, 1000 }; Vec lbl_1_data_C = { 0, 0, 0 }; GXColor lbl_1_data_18 = { 255, 255, 255, 255 }; -Vec lbl_1_data_1C = { 10, 45, 0}; +Vec lbl_1_data_1C = { 10, 45, 0 }; Vec lbl_1_data_28 = { 1300, 2500, 1300 }; Vec lbl_1_data_34 = { 0, 1, 0 }; Vec lbl_1_data_40 = { 0, 0, -1200 }; -CameraViewParams lbl_1_data_4C[4] = { - { - 760, - { -324, -97, 0 }, - { -43, 0, 0 } - }, - { - 800, - { 325, -64, 0 }, - { -43, -20, 0 } - }, - { - 1460, - { 0, 57, 0 }, - { -37, 0, 0 } - }, - { - 880, - { -381, 25, 0 }, - { -14, 10, 0 } - } -}; +CameraViewParams lbl_1_data_4C[4] = { { 760, { -324, -97, 0 }, { -43, 0, 0 } }, { 800, { 325, -64, 0 }, { -43, -20, 0 } }, + { 1460, { 0, 57, 0 }, { -37, 0, 0 } }, { 880, { -381, 25, 0 }, { -14, 10, 0 } } }; -s32 lbl_1_data_BC[3] = { - -32, - -2, - 28 -}; +s32 lbl_1_data_BC[3] = { -32, -2, 28 }; -s32 lbl_1_data_C8[2] = { - 90, - 486 -}; +s32 lbl_1_data_C8[2] = { 90, 486 }; void fn_1_424(omObjData *object); void fn_1_A44(omObjData *object); void fn_1_2110(omObjData *object); - void ObjectSetup(void) { - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - Process *temp_r31; - LightData *temp_r30; - CameraData *temp_r29; - - Hu3DLightAllKill(); - lbl_1_bss_28 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_18); - Hu3DGLightInfinitytSet(lbl_1_bss_28); - temp_r30 = &Hu3DGlobalLight[lbl_1_bss_28]; - temp_r30->unk_00 |= 0x8000; - sp2C.x = sp2C.y = sp2C.z = 0; - Hu3DGLightPosAimSetV(lbl_1_bss_28, &lbl_1_data_0, &sp2C); - Hu3DShadowCreate(45, 20, 10000); - Hu3DShadowTPLvlSet(0.425f); - Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); - temp_r31 = omInitObjMan(50, 8192); - omGameSysInit(temp_r31); - HuAudSndGrpSet(56); - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 41.5, 5, 5000, 1.2f); - omAddObjEx(temp_r31, 32730, 0, 0, -1, omOutView); - temp_r29 = &Hu3DCamera[0]; - temp_r29->fov = -1; - sp14.x = 0; - sp14.y = 374; - sp14.z = 1086; - sp20.x = 0; - sp20.y = 568; - sp20.z = -1316; - sp8.z = sp20.x-sp14.x; - sp8.y = sp20.y-sp14.y; - sp8.x = sp20.z-sp14.z; - CRot.x = lbl_1_data_4C[0].rot.x; - CRot.y = lbl_1_data_4C[0].rot.y; - CRot.z = lbl_1_data_4C[0].rot.z; - Center.x = lbl_1_data_4C[0].pos.x; - Center.y = lbl_1_data_4C[0].pos.y; - Center.z = lbl_1_data_4C[0].pos.z; - CZoom = lbl_1_data_4C[0].zoom; - omAddObjEx(temp_r31, 1000, 0, 0, -1, fn_1_424); - lbl_1_bss_30 = omAddObjEx(temp_r31, 10, 9, 0, -1, fn_1_A44); - lbl_1_bss_2C = omAddObjEx(temp_r31, 50, 9, 9, -1, fn_1_2110); - Hu3DBGColorSet(0, 0, 0); - fn_1_7ABC(temp_r31); + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + Process *temp_r31; + LightData *temp_r30; + CameraData *temp_r29; + + Hu3DLightAllKill(); + lbl_1_bss_28 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_18); + Hu3DGLightInfinitytSet(lbl_1_bss_28); + temp_r30 = &Hu3DGlobalLight[lbl_1_bss_28]; + temp_r30->unk_00 |= 0x8000; + sp2C.x = sp2C.y = sp2C.z = 0; + Hu3DGLightPosAimSetV(lbl_1_bss_28, &lbl_1_data_0, &sp2C); + Hu3DShadowCreate(45, 20, 10000); + Hu3DShadowTPLvlSet(0.425f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + temp_r31 = omInitObjMan(50, 8192); + omGameSysInit(temp_r31); + HuAudSndGrpSet(56); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 41.5, 5, 5000, 1.2f); + omAddObjEx(temp_r31, 32730, 0, 0, -1, omOutView); + temp_r29 = &Hu3DCamera[0]; + temp_r29->fov = -1; + sp14.x = 0; + sp14.y = 374; + sp14.z = 1086; + sp20.x = 0; + sp20.y = 568; + sp20.z = -1316; + sp8.z = sp20.x - sp14.x; + sp8.y = sp20.y - sp14.y; + sp8.x = sp20.z - sp14.z; + CRot.x = lbl_1_data_4C[0].rot.x; + CRot.y = lbl_1_data_4C[0].rot.y; + CRot.z = lbl_1_data_4C[0].rot.z; + Center.x = lbl_1_data_4C[0].pos.x; + Center.y = lbl_1_data_4C[0].pos.y; + Center.z = lbl_1_data_4C[0].pos.z; + CZoom = lbl_1_data_4C[0].zoom; + omAddObjEx(temp_r31, 1000, 0, 0, -1, fn_1_424); + lbl_1_bss_30 = omAddObjEx(temp_r31, 10, 9, 0, -1, fn_1_A44); + lbl_1_bss_2C = omAddObjEx(temp_r31, 50, 9, 9, -1, fn_1_2110); + Hu3DBGColorSet(0, 0, 0); + fn_1_7ABC(temp_r31); } void fn_1_49C(omObjData *object); void fn_1_424(omObjData *object) { - if(omSysExitReq || lbl_1_bss_0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudSeqAllFadeOut(100); - object->func = fn_1_49C; - } + if (omSysExitReq || lbl_1_bss_0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqAllFadeOut(100); + object->func = fn_1_49C; + } } void fn_1_71B8(s16 arg0); void fn_1_49C(omObjData *object) { - s16 i; - if(WipeStatGet()) { - return; - } - fn_1_71B8(lbl_1_bss_30->model[0]); - for(i=0; i<6; i++) { - fn_1_71B8(lbl_1_bss_5C.unk0[i]); - } - HuSprGrpKill(lbl_1_bss_30->model[1]); - HuSprGrpKill(lbl_1_bss_30->model[2]); - HuSprGrpKill(lbl_1_bss_30->model[3]); - MGSeqKillAll(); - HuAudFadeOut(1); - omOvlReturnEx(1, 1); - + s16 i; + if (WipeStatGet()) { + return; + } + fn_1_71B8(lbl_1_bss_30->model[0]); + for (i = 0; i < 6; i++) { + fn_1_71B8(lbl_1_bss_5C.unk0[i]); + } + HuSprGrpKill(lbl_1_bss_30->model[1]); + HuSprGrpKill(lbl_1_bss_30->model[2]); + HuSprGrpKill(lbl_1_bss_30->model[3]); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); } float fn_1_65CC(float arg0, float arg1, float arg2); u8 fn_1_57C(void) { - float temp_f31; - float temp_f30; - CameraViewParams *temp_r31; - s32 temp_r30; - temp_r31 = &lbl_1_data_4C[0]; - temp_r30 = 0; - lbl_1_bss_8++; - temp_f30 = lbl_1_bss_8/90.0f; - if(lbl_1_bss_8 > 90) { - lbl_1_bss_8 = 0; - temp_f30 = 1; - temp_r30 = 1; - } - temp_f31 = sind(90*temp_f30)*sind(90*temp_f30); - CZoom = fn_1_65CC(temp_r31[0].zoom, temp_r31[2].zoom, temp_f31); - Center.x = fn_1_65CC(temp_r31[0].pos.x, temp_r31[2].pos.x, temp_f31); - Center.y = fn_1_65CC(temp_r31[0].pos.y, temp_r31[2].pos.y, temp_f31); - Center.z = fn_1_65CC(temp_r31[0].pos.z, temp_r31[2].pos.z, temp_f31); - CRot.x = fn_1_65CC(temp_r31[0].rot.x, temp_r31[2].rot.x, temp_f31); - CRot.y = fn_1_65CC(temp_r31[0].rot.y, temp_r31[2].rot.y, temp_f31); - CRot.z = fn_1_65CC(temp_r31[0].rot.z, temp_r31[2].rot.z, temp_f31); - return temp_r30; + float temp_f31; + float temp_f30; + CameraViewParams *temp_r31; + s32 temp_r30; + temp_r31 = &lbl_1_data_4C[0]; + temp_r30 = 0; + lbl_1_bss_8++; + temp_f30 = lbl_1_bss_8 / (1.5f * REFRESH_RATE); + if (lbl_1_bss_8 > (s32)(1.5f * REFRESH_RATE)) { + lbl_1_bss_8 = 0; + temp_f30 = 1; + temp_r30 = 1; + } + temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30); + CZoom = fn_1_65CC(temp_r31[0].zoom, temp_r31[2].zoom, temp_f31); + Center.x = fn_1_65CC(temp_r31[0].pos.x, temp_r31[2].pos.x, temp_f31); + Center.y = fn_1_65CC(temp_r31[0].pos.y, temp_r31[2].pos.y, temp_f31); + Center.z = fn_1_65CC(temp_r31[0].pos.z, temp_r31[2].pos.z, temp_f31); + CRot.x = fn_1_65CC(temp_r31[0].rot.x, temp_r31[2].rot.x, temp_f31); + CRot.y = fn_1_65CC(temp_r31[0].rot.y, temp_r31[2].rot.y, temp_f31); + CRot.z = fn_1_65CC(temp_r31[0].rot.z, temp_r31[2].rot.z, temp_f31); + return temp_r30; } typedef struct work_a44 { - u16 unk0; - s16 unk2; - s16 unk4; - s16 unk6[2]; - s16 unkA; - s32 unkC; - s16 unk10; - s16 unk12; - s16 unk14; - s16 unk16; + u16 unk0; + s16 unk2; + s16 unk4; + s16 unk6[2]; + s16 unkA; + s32 unkC; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; } WorkA44; s32 fn_1_7B0(void) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - CameraViewParams *temp_r31; - WorkA44 *temp_r30; - s32 temp_r29; - temp_r30 = lbl_1_bss_30->data; - temp_r31 = &lbl_1_data_4C[0]; - temp_r29 = 0; - lbl_1_bss_8++; - temp_f30 = lbl_1_bss_8/120.0f; - if(lbl_1_bss_8 > 120) { - lbl_1_bss_8 = 120; - temp_f30 = 1; - temp_r29 = 1; - } - temp_f31 = sind(90*temp_f30)*sind(90*temp_f30); - if(temp_r30->unk4 == 0) { - temp_f29 = temp_r31[3].pos.x; - temp_f28 = temp_r31[3].rot.y; - } else { - temp_f29 = -temp_r31[3].pos.x; - temp_f28 = -temp_r31[3].rot.y; - } - CZoom = fn_1_65CC(temp_r31[2].zoom, temp_r31[3].zoom, temp_f31); - Center.x = fn_1_65CC(temp_r31[2].pos.x, temp_f29, temp_f31); - Center.y = fn_1_65CC(temp_r31[2].pos.y, temp_r31[3].pos.y, temp_f31); - Center.z = fn_1_65CC(temp_r31[2].pos.z, temp_r31[3].pos.z, temp_f31); - CRot.x = fn_1_65CC(temp_r31[2].rot.x, temp_r31[3].rot.x, temp_f31); - CRot.y = fn_1_65CC(temp_r31[2].rot.y, temp_f28, temp_f31); - CRot.z = fn_1_65CC(temp_r31[2].rot.z, temp_r31[3].rot.z, temp_f31); - return temp_r29; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + CameraViewParams *temp_r31; + WorkA44 *temp_r30; + s32 temp_r29; + temp_r30 = lbl_1_bss_30->data; + temp_r31 = &lbl_1_data_4C[0]; + temp_r29 = 0; + lbl_1_bss_8++; + temp_f30 = lbl_1_bss_8 / (2.0f * REFRESH_RATE); + if (lbl_1_bss_8 > (2 * REFRESH_RATE)) { + lbl_1_bss_8 = 2 * REFRESH_RATE; + temp_f30 = 1; + temp_r29 = 1; + } + temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30); + if (temp_r30->unk4 == 0) { + temp_f29 = temp_r31[3].pos.x; + temp_f28 = temp_r31[3].rot.y; + } + else { + temp_f29 = -temp_r31[3].pos.x; + temp_f28 = -temp_r31[3].rot.y; + } + CZoom = fn_1_65CC(temp_r31[2].zoom, temp_r31[3].zoom, temp_f31); + Center.x = fn_1_65CC(temp_r31[2].pos.x, temp_f29, temp_f31); + Center.y = fn_1_65CC(temp_r31[2].pos.y, temp_r31[3].pos.y, temp_f31); + Center.z = fn_1_65CC(temp_r31[2].pos.z, temp_r31[3].pos.z, temp_f31); + CRot.x = fn_1_65CC(temp_r31[2].rot.x, temp_r31[3].rot.x, temp_f31); + CRot.y = fn_1_65CC(temp_r31[2].rot.y, temp_f28, temp_f31); + CRot.z = fn_1_65CC(temp_r31[2].rot.z, temp_r31[3].rot.z, temp_f31); + return temp_r29; } - void fn_1_6030(ModelData *arg0, Work72B4 *arg1, Mtx arg2); s16 fn_1_6C74(AnimData *arg0, s16 arg1, float arg2, s16 arg3, s16 arg4); void fn_1_7244(s16 arg0, unkHook72B4 arg1); @@ -275,89 +244,89 @@ void fn_1_10A4(omObjData *object); void fn_1_A44(omObjData *object) { - float temp_f31; - - s16 temp_r31; - s16 temp_r30; - s16 temp_r28; - - AnimData *temp_r27; - WorkA44 *temp_r26; - s16 temp_r25; - - AnimData *temp_r24; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkA44), MEMORY_DEFAULT_NUM); - temp_r26 = object->data; - temp_r26->unk0 = 4; - temp_r26->unk6[0] = 0; - temp_r26->unkA = 900; - temp_r26->unk10 = -1; - temp_r27 = HuSprAnimRead(HuDataReadNum(0x3E001A, MEMORY_DEFAULT_NUM)); - object->model[0] = fn_1_6C74(temp_r27, 1024, 25, 64, 64); - fn_1_7244(object->model[0], fn_1_6030); - Hu3DModelLayerSet(object->model[0], 7); - temp_r30 = HuSprGrpCreate(4); - object->model[3] = temp_r30; - temp_r27 = HuSprAnimRead(HuDataReadNum(0x61001B, MEMORY_DEFAULT_NUM)); - temp_r28 = HuSprCreate(temp_r27, 16, 0); - HuSprGrpMemberSet(temp_r30, 0, temp_r28); - HuSprAttrSet(temp_r30, 0, HUSPR_ATTR_DISPOFF); - temp_r27 = HuSprAnimRead(HuDataReadNum(0x61001D, MEMORY_DEFAULT_NUM)); - temp_r28 = HuSprCreate(temp_r27, 32, 0); - HuSprGrpMemberSet(temp_r30, 2, temp_r28); - HuSprAttrSet(temp_r30, 2, HUSPR_ATTR_DISPOFF); - temp_r27 = HuSprAnimRead(HuDataReadNum(0x61001C, MEMORY_DEFAULT_NUM)); - temp_r28 = HuSprCreate(temp_r27, 16, 0); - HuSprGrpMemberSet(temp_r30, 1, temp_r28); - HuSprAttrSet(temp_r30, 1, HUSPR_ATTR_DISPOFF); - temp_r27 = HuSprAnimRead(HuDataReadNum(0x61001D, MEMORY_DEFAULT_NUM)); - temp_r28 = HuSprCreate(temp_r27, 32, 0); - HuSprGrpMemberSet(temp_r30, 3, temp_r28); - HuSprAttrSet(temp_r30, 3, HUSPR_ATTR_DISPOFF); - temp_f31 = 288; - HuSprPosSet(temp_r30, 0, temp_f31-198, 64); - HuSprPosSet(temp_r30, 1, temp_f31+198, 64); - HuSprPosSet(temp_r30, 2, temp_f31-198, 64); - HuSprTPLvlSet(temp_r30, 2, 88); - HuSprColorSet(temp_r30, 2, 0, 0, 0); - HuSprPosSet(temp_r30, 3, temp_f31+198, 64); - HuSprTPLvlSet(temp_r30, 3, 88); - HuSprColorSet(temp_r30, 3, 0, 0, 0); - temp_r27 = HuSprAnimRead(HuDataReadNum(0x61000B, MEMORY_DEFAULT_NUM)); - temp_r24 = HuSprAnimRead(HuDataReadNum(0x61000A, MEMORY_DEFAULT_NUM)); - temp_r30 = HuSprGrpCreate(6); - object->model[1] = temp_r30; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r28 = HuSprCreate(temp_r27, 0, 0); - HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); - HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[0]+lbl_1_data_BC[temp_r31], 63); - HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); - } - for(temp_r31=3; temp_r31<6; temp_r31++) { - temp_r25 = temp_r31-3; - temp_r28 = HuSprCreate(temp_r24, 8, 0); - HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); - HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[0]+lbl_1_data_BC[temp_r25], 63); - HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); - } - temp_r30 = HuSprGrpCreate(6); - object->model[2] = temp_r30; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r28 = HuSprCreate(temp_r27, 0, 0); - HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); - HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[1]+lbl_1_data_BC[temp_r31], 63); - HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); - } - for(temp_r31=3; temp_r31<6; temp_r31++) { - temp_r25 = temp_r31-3; - temp_r28 = HuSprCreate(temp_r24, 8, 0); - HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); - HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[1]+lbl_1_data_BC[temp_r25], 63); - HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); - } - (void)temp_r31; - (void)temp_r31; - object->func = fn_1_10A4; + float temp_f31; + + s16 temp_r31; + s16 temp_r30; + s16 temp_r28; + + AnimData *temp_r27; + WorkA44 *temp_r26; + s16 temp_r25; + + AnimData *temp_r24; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkA44), MEMORY_DEFAULT_NUM); + temp_r26 = object->data; + temp_r26->unk0 = 4; + temp_r26->unk6[0] = 0; + temp_r26->unkA = 15 * REFRESH_RATE; + temp_r26->unk10 = -1; + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M431, 0x1A), MEMORY_DEFAULT_NUM)); + object->model[0] = fn_1_6C74(temp_r27, 1024, 25, 64, 64); + fn_1_7244(object->model[0], fn_1_6030); + Hu3DModelLayerSet(object->model[0], 7); + temp_r30 = HuSprGrpCreate(4); + object->model[3] = temp_r30; + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1B), MEMORY_DEFAULT_NUM)); + temp_r28 = HuSprCreate(temp_r27, 16, 0); + HuSprGrpMemberSet(temp_r30, 0, temp_r28); + HuSprAttrSet(temp_r30, 0, HUSPR_ATTR_DISPOFF); + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1D), MEMORY_DEFAULT_NUM)); + temp_r28 = HuSprCreate(temp_r27, 32, 0); + HuSprGrpMemberSet(temp_r30, 2, temp_r28); + HuSprAttrSet(temp_r30, 2, HUSPR_ATTR_DISPOFF); + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1C), MEMORY_DEFAULT_NUM)); + temp_r28 = HuSprCreate(temp_r27, 16, 0); + HuSprGrpMemberSet(temp_r30, 1, temp_r28); + HuSprAttrSet(temp_r30, 1, HUSPR_ATTR_DISPOFF); + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1D), MEMORY_DEFAULT_NUM)); + temp_r28 = HuSprCreate(temp_r27, 32, 0); + HuSprGrpMemberSet(temp_r30, 3, temp_r28); + HuSprAttrSet(temp_r30, 3, HUSPR_ATTR_DISPOFF); + temp_f31 = 288; + HuSprPosSet(temp_r30, 0, temp_f31 - 198, 64); + HuSprPosSet(temp_r30, 1, temp_f31 + 198, 64); + HuSprPosSet(temp_r30, 2, temp_f31 - 198, 64); + HuSprTPLvlSet(temp_r30, 2, 88); + HuSprColorSet(temp_r30, 2, 0, 0, 0); + HuSprPosSet(temp_r30, 3, temp_f31 + 198, 64); + HuSprTPLvlSet(temp_r30, 3, 88); + HuSprColorSet(temp_r30, 3, 0, 0, 0); + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x0B), MEMORY_DEFAULT_NUM)); + temp_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x0A), MEMORY_DEFAULT_NUM)); + temp_r30 = HuSprGrpCreate(6); + object->model[1] = temp_r30; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r28 = HuSprCreate(temp_r27, 0, 0); + HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); + HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[0] + lbl_1_data_BC[temp_r31], 63); + HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); + } + for (temp_r31 = 3; temp_r31 < 6; temp_r31++) { + temp_r25 = temp_r31 - 3; + temp_r28 = HuSprCreate(temp_r24, 8, 0); + HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); + HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[0] + lbl_1_data_BC[temp_r25], 63); + HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); + } + temp_r30 = HuSprGrpCreate(6); + object->model[2] = temp_r30; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r28 = HuSprCreate(temp_r27, 0, 0); + HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); + HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[1] + lbl_1_data_BC[temp_r31], 63); + HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); + } + for (temp_r31 = 3; temp_r31 < 6; temp_r31++) { + temp_r25 = temp_r31 - 3; + temp_r28 = HuSprCreate(temp_r24, 8, 0); + HuSprGrpMemberSet(temp_r30, temp_r31, temp_r28); + HuSprPosSet(temp_r30, temp_r31, lbl_1_data_C8[1] + lbl_1_data_BC[temp_r25], 63); + HuSprAttrSet(temp_r30, temp_r31, HUSPR_ATTR_DISPOFF); + } + (void)temp_r31; + (void)temp_r31; + object->func = fn_1_10A4; } void fn_1_140C(omObjData *object); @@ -368,329 +337,331 @@ void fn_1_5480(void); void fn_1_10A4(omObjData *object) { - WorkA44 *temp_r31; - s16 temp_r30; - s16 temp_r28; - CameraData *temp_r27; - temp_r31 = object->data; - temp_r30 = 99; - switch(fn_1_2090(28)) { - case 4: - if(lbl_1_bss_E == 0) { - lbl_1_bss_E = 1; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - temp_r27 = &Hu3DCamera[0]; - temp_r27->fov = 41.5f; - } - if(!WipeStatGet()) { - fn_1_2050(28, 8); - fn_1_2050(224, 32); - } - break; - - case 8: - if(fn_1_1634(object)) { - fn_1_2050(1, 0); - fn_1_2050(28, 12); - } - break; - - case 12: - if(temp_r31->unk10 != -1) { - temp_r28 = (temp_r31->unkA+59)/60; - if(temp_r28 < 0) { - temp_r28 = 0; - } - MGSeqParamSet(temp_r31->unk10, 1, temp_r28); - } - fn_1_140C(object); - if(fn_1_2090(224) == 128) { - if(lbl_1_bss_12C[0].unk138[0] == 3) { - temp_r30 = 0; - } else if(lbl_1_bss_12C[1].unk138[0] == 3) { - temp_r30 = 1; - } else { - if(temp_r31->unk6[0] == 5) { - if(lbl_1_bss_12C[0].unk138[0] == lbl_1_bss_12C[1].unk138[0]) { - temp_r30 = -1; - } else { - if(lbl_1_bss_12C[0].unk138[0] > lbl_1_bss_12C[1].unk138[0]) { - temp_r30 = 0; - } else { - temp_r30 = 1; - } - } - } - } - } - if(temp_r30 != 99) { - if(fn_1_2090(1) == 0) { - temp_r31->unk2 = MGSeqFinishCreate(); - HuAudSeqAllFadeOut(100); - } - fn_1_5480(); - fn_1_2000(temp_r30); - fn_1_2050(1, 1); - if(temp_r31->unk0 & 0x2) { - if(temp_r30 == -1) { - lbl_1_bss_A = 1; - } - fn_1_2050(28, 16); - } - if(temp_r30 != -1) { - fn_1_8474(temp_r30^1); - } else { - fn_1_8474(0); - fn_1_8474(1); - } - } - break; - - case 16: - if(fn_1_1A40(object)) { - fn_1_2050(28, 20); - } - break; - - case 20: - if(++lbl_1_bss_C > 210.0f) { - lbl_1_bss_0 = 1; - } - break; - } + WorkA44 *temp_r31; + s16 temp_r30; + s16 temp_r28; + CameraData *temp_r27; + temp_r31 = object->data; + temp_r30 = 99; + switch (fn_1_2090(28)) { + case 4: + if (lbl_1_bss_E == 0) { + lbl_1_bss_E = 1; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + temp_r27 = &Hu3DCamera[0]; + temp_r27->fov = 41.5f; + } + if (!WipeStatGet()) { + fn_1_2050(28, 8); + fn_1_2050(224, 32); + } + break; + + case 8: + if (fn_1_1634(object)) { + fn_1_2050(1, 0); + fn_1_2050(28, 12); + } + break; + + case 12: + if (temp_r31->unk10 != -1) { + temp_r28 = (temp_r31->unkA + REFRESH_RATE - 1) / REFRESH_RATE; + if (temp_r28 < 0) { + temp_r28 = 0; + } + MGSeqParamSet(temp_r31->unk10, 1, temp_r28); + } + fn_1_140C(object); + if (fn_1_2090(224) == 128) { + if (lbl_1_bss_12C[0].unk138[0] == 3) { + temp_r30 = 0; + } + else if (lbl_1_bss_12C[1].unk138[0] == 3) { + temp_r30 = 1; + } + else { + if (temp_r31->unk6[0] == 5) { + if (lbl_1_bss_12C[0].unk138[0] == lbl_1_bss_12C[1].unk138[0]) { + temp_r30 = -1; + } + else { + if (lbl_1_bss_12C[0].unk138[0] > lbl_1_bss_12C[1].unk138[0]) { + temp_r30 = 0; + } + else { + temp_r30 = 1; + } + } + } + } + } + if (temp_r30 != 99) { + if (fn_1_2090(1) == 0) { + temp_r31->unk2 = MGSeqFinishCreate(); + HuAudSeqAllFadeOut(100); + } + fn_1_5480(); + fn_1_2000(temp_r30); + fn_1_2050(1, 1); + if (temp_r31->unk0 & 0x2) { + if (temp_r30 == -1) { + lbl_1_bss_A = 1; + } + fn_1_2050(28, 16); + } + if (temp_r30 != -1) { + fn_1_8474(temp_r30 ^ 1); + } + else { + fn_1_8474(0); + fn_1_8474(1); + } + } + break; + + case 16: + if (fn_1_1A40(object)) { + fn_1_2050(28, 20); + } + break; + + case 20: + if (++lbl_1_bss_C > (3.5f * REFRESH_RATE)) { + lbl_1_bss_0 = 1; + } + break; + } } void fn_1_140C(omObjData *object) { - float temp_f31; - float temp_f30; - WorkA44 *temp_r31 = object->data; - if((temp_r31->unk0 & 0x300) == 0) { - return; - } - temp_r31->unk12++; - temp_f31 = temp_r31->unk12/18.0f; - if(temp_r31->unk12 > 18.0f) { - temp_r31->unk12 = 0; - temp_f31 = 1.0f; - temp_r31->unk12 = 18; - temp_r31->unk0 &= ~0x300; - } - temp_f30 = 1.0-cosd(90.0f*temp_f31); - - temp_f31 = 1.0+sind(180.0f*temp_f31); - HuSprAttrReset(lbl_1_bss_30->model[temp_r31->unk6[1]+1], temp_r31->unk16, HUSPR_ATTR_DISPOFF); - HuSprScaleSet(lbl_1_bss_30->model[temp_r31->unk6[1]+1], temp_r31->unk16, temp_f31, temp_f31); - HuSprTPLvlSet(lbl_1_bss_30->model[temp_r31->unk6[1]+1], temp_r31->unk16, temp_f30); - + float temp_f31; + float temp_f30; + WorkA44 *temp_r31 = object->data; + if ((temp_r31->unk0 & 0x300) == 0) { + return; + } + temp_r31->unk12++; + temp_f31 = temp_r31->unk12 / (3.0f / 10 * REFRESH_RATE); + if (temp_r31->unk12 > (3.0f / 10 * REFRESH_RATE)) { + temp_r31->unk12 = 0; + temp_f31 = 1.0f; + temp_r31->unk12 = 0.3f * REFRESH_RATE; + temp_r31->unk0 &= ~0x300; + } + temp_f30 = 1.0 - cosd(90.0f * temp_f31); + + temp_f31 = 1.0 + sind(180.0f * temp_f31); + HuSprAttrReset(lbl_1_bss_30->model[temp_r31->unk6[1] + 1], temp_r31->unk16, HUSPR_ATTR_DISPOFF); + HuSprScaleSet(lbl_1_bss_30->model[temp_r31->unk6[1] + 1], temp_r31->unk16, temp_f31, temp_f31); + HuSprTPLvlSet(lbl_1_bss_30->model[temp_r31->unk6[1] + 1], temp_r31->unk16, temp_f30); } void fn_1_2AB0(s16 arg0); u8 fn_1_1634(omObjData *object) { - WorkA44 *temp_r30 = object->data; - s32 temp_r29; - s32 temp_r27; - s32 temp_r26; - switch(lbl_1_bss_A) { - case 0: - if(fn_1_2090(224) == 64) { - fn_1_2050(1, 1); - lbl_1_bss_A++; - } - break; - - case 1: - if(fn_1_57C()) { - lbl_1_bss_A++; - } - break; - - case 2: - temp_r30->unk2 = MGSeqStartCreate(); - temp_r30->unkC = -1; - lbl_1_bss_A++; - break; - - case 3: - if(temp_r30->unk2 != -1) { - temp_r26 = MGSeqStatGet(temp_r30->unk2); - if((temp_r26 & 0x10) && temp_r30->unkC == -1) { - temp_r30->unkC = HuAudSeqPlay(72); - } - } - if(temp_r30->unk2 == -1 || temp_r26 == 0) { - temp_r27 = object->model[1]; - for(temp_r29=3; temp_r29<6; temp_r29++) { - HuSprAttrReset(temp_r27, temp_r29, HUSPR_ATTR_DISPOFF); - } - temp_r27 = object->model[2]; - for(temp_r29=3; temp_r29<6; temp_r29++) { - HuSprAttrReset(temp_r27, temp_r29, HUSPR_ATTR_DISPOFF); - } - temp_r27 = object->model[3]; - for(temp_r29=0; temp_r29<4; temp_r29++) { - HuSprAttrReset(temp_r27, temp_r29, HUSPR_ATTR_DISPOFF); - } - fn_1_2AB0(999); - lbl_1_bss_A = 0; - - return 1; - } - break; - } - return 0; + WorkA44 *temp_r30 = object->data; + s32 temp_r29; + s32 temp_r27; + s32 temp_r26; + switch (lbl_1_bss_A) { + case 0: + if (fn_1_2090(224) == 64) { + fn_1_2050(1, 1); + lbl_1_bss_A++; + } + break; + + case 1: + if (fn_1_57C()) { + lbl_1_bss_A++; + } + break; + + case 2: + temp_r30->unk2 = MGSeqStartCreate(); + temp_r30->unkC = -1; + lbl_1_bss_A++; + break; + + case 3: + if (temp_r30->unk2 != -1) { + temp_r26 = MGSeqStatGet(temp_r30->unk2); + if ((temp_r26 & 0x10) && temp_r30->unkC == -1) { + temp_r30->unkC = HuAudSeqPlay(72); + } + } + if (temp_r30->unk2 == -1 || temp_r26 == 0) { + temp_r27 = object->model[1]; + for (temp_r29 = 3; temp_r29 < 6; temp_r29++) { + HuSprAttrReset(temp_r27, temp_r29, HUSPR_ATTR_DISPOFF); + } + temp_r27 = object->model[2]; + for (temp_r29 = 3; temp_r29 < 6; temp_r29++) { + HuSprAttrReset(temp_r27, temp_r29, HUSPR_ATTR_DISPOFF); + } + temp_r27 = object->model[3]; + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + HuSprAttrReset(temp_r27, temp_r29, HUSPR_ATTR_DISPOFF); + } + fn_1_2AB0(999); + lbl_1_bss_A = 0; + + return 1; + } + break; + } + return 0; } u8 fn_1_1A40(omObjData *object) { - WorkA44 *temp_r30; - Bss12CStruct *temp_r29; - s32 temp_r28; - s32 temp_r25; - temp_r30 = object->data; - switch(lbl_1_bss_A) { - case 0: - temp_r28 = fn_1_7FB8(temp_r30->unk4); - fn_1_8474(temp_r30->unk4^1); - temp_r28 &= fn_1_7B0(); - if((u8)temp_r28) { - lbl_1_bss_4 = 1; - fn_1_A7D0(temp_r30->unk4); - HuAudSStreamPlay(1); - lbl_1_bss_C = 0; - lbl_1_bss_A++; - } - break; - - case 1: - if(temp_r30->unk4 == -1) { - temp_r28 = fn_1_8474(0); - temp_r25 = fn_1_8474(1); - if((u8)temp_r28 == 0 || (u8)temp_r25 == 0) { - return 0; - } - if(temp_r30->unk2 == -1 || !MGSeqStatGet(temp_r30->unk2)) { - temp_r30->unk2 = -1; - lbl_1_bss_4 = 1; - fn_1_A904(0); - fn_1_A904(1); - HuAudSStreamPlay(4); - lbl_1_bss_A++; - } - } else { - if(++lbl_1_bss_C > 1) { - lbl_1_bss_A++; - } - } - break; - - case 2: - if(temp_r30->unk4 != -1) { - temp_r29 = &lbl_1_bss_12C[temp_r30->unk4]; - temp_r30->unk2 = MGSeqWinCreate(GWPlayerCfg[temp_r29->unk0[0]].character, - GWPlayerCfg[temp_r29->unk0[1]].character, - -1, - -1); - GWPlayerCoinWinAdd(temp_r29->unk0[0], 10); - GWPlayerCoinWinAdd(temp_r29->unk0[1], 10); - } else { - temp_r30->unk2 = MGSeqDrawCreate(); - } - lbl_1_bss_A++; - break; - - case 3: - lbl_1_bss_A = lbl_1_bss_C = 0; - return 1; - - default: - break; - - } - return 0; + WorkA44 *temp_r30; + Bss12CStruct *temp_r29; + s32 temp_r28; + s32 temp_r25; + temp_r30 = object->data; + switch (lbl_1_bss_A) { + case 0: + temp_r28 = fn_1_7FB8(temp_r30->unk4); + fn_1_8474(temp_r30->unk4 ^ 1); + temp_r28 &= fn_1_7B0(); + if ((u8)temp_r28) { + lbl_1_bss_4 = 1; + fn_1_A7D0(temp_r30->unk4); + HuAudSStreamPlay(1); + lbl_1_bss_C = 0; + lbl_1_bss_A++; + } + break; + + case 1: + if (temp_r30->unk4 == -1) { + temp_r28 = fn_1_8474(0); + temp_r25 = fn_1_8474(1); + if ((u8)temp_r28 == 0 || (u8)temp_r25 == 0) { + return 0; + } + if (temp_r30->unk2 == -1 || !MGSeqStatGet(temp_r30->unk2)) { + temp_r30->unk2 = -1; + lbl_1_bss_4 = 1; + fn_1_A904(0); + fn_1_A904(1); + HuAudSStreamPlay(4); + lbl_1_bss_A++; + } + } + else { + if (++lbl_1_bss_C > 1) { + lbl_1_bss_A++; + } + } + break; + + case 2: + if (temp_r30->unk4 != -1) { + temp_r29 = &lbl_1_bss_12C[temp_r30->unk4]; + temp_r30->unk2 = MGSeqWinCreate(GWPlayerCfg[temp_r29->unk0[0]].character, GWPlayerCfg[temp_r29->unk0[1]].character, -1, -1); + GWPlayerCoinWinAdd(temp_r29->unk0[0], 10); + GWPlayerCoinWinAdd(temp_r29->unk0[1], 10); + } + else { + temp_r30->unk2 = MGSeqDrawCreate(); + } + lbl_1_bss_A++; + break; + + case 3: + lbl_1_bss_A = lbl_1_bss_C = 0; + return 1; + + default: + break; + } + return 0; } void fn_1_2000(s16 arg0) { - WorkA44 *temp_r31 = lbl_1_bss_30->data; - if(arg0 == -1 || temp_r31->unk6[1] == -1) { - temp_r31->unk0 |= 0x2; - } - temp_r31->unk4 = arg0; + WorkA44 *temp_r31 = lbl_1_bss_30->data; + if (arg0 == -1 || temp_r31->unk6[1] == -1) { + temp_r31->unk0 |= 0x2; + } + temp_r31->unk4 = arg0; } void fn_1_2050(u16 arg0, u16 arg1) { - WorkA44 *temp_r31 = lbl_1_bss_30->data; - temp_r31->unk0 &= ~arg0; - temp_r31->unk0 |= arg1; + WorkA44 *temp_r31 = lbl_1_bss_30->data; + temp_r31->unk0 &= ~arg0; + temp_r31->unk0 |= arg1; } u16 fn_1_2090(u16 arg0) { - WorkA44 *temp_r31 = lbl_1_bss_30->data; - if(!temp_r31) { - return 0; - } - return temp_r31->unk0 & arg0; + WorkA44 *temp_r31 = lbl_1_bss_30->data; + if (!temp_r31) { + return 0; + } + return temp_r31->unk0 & arg0; } void fn_1_20D0(s16 arg0) { - WorkA44 *temp_r31 = lbl_1_bss_30->data; - temp_r31->unk0 |= 0x100; - temp_r31->unk12 = 0; - temp_r31->unk16 = arg0; + WorkA44 *temp_r31 = lbl_1_bss_30->data; + temp_r31->unk0 |= 0x100; + temp_r31->unk12 = 0; + temp_r31->unk16 = arg0; } s32 lbl_1_data_114[2][2] = { - 0x003E0001, - 0x003E0003, - 0x003E0005, - 0x003E0006 + DATA_MAKE_NUM(DATADIR_M431, 0x01), + DATA_MAKE_NUM(DATADIR_M431, 0x03), + DATA_MAKE_NUM(DATADIR_M431, 0x05), + DATA_MAKE_NUM(DATADIR_M431, 0x06), }; s32 lbl_1_data_124[2][2] = { - 0x003E0007, - 0x003E0008, - 0x003E0009, - 0x003E000A + DATA_MAKE_NUM(DATADIR_M431, 0x07), + DATA_MAKE_NUM(DATADIR_M431, 0x08), + DATA_MAKE_NUM(DATADIR_M431, 0x09), + DATA_MAKE_NUM(DATADIR_M431, 0x0A), }; s32 lbl_1_data_134[5] = { - 0x003E000C, - 0x003E000D, - 0x003E000E, - 0x003E000F, - 0x003E0010 + DATA_MAKE_NUM(DATADIR_M431, 0x0C), + DATA_MAKE_NUM(DATADIR_M431, 0x0D), + DATA_MAKE_NUM(DATADIR_M431, 0x0E), + DATA_MAKE_NUM(DATADIR_M431, 0x0F), + DATA_MAKE_NUM(DATADIR_M431, 0x10), }; s32 lbl_1_data_148[5] = { - 0x003E001C, - 0x003E001D, - 0x003E001E, - 0x003E001F, - 0x003E0020 + DATA_MAKE_NUM(DATADIR_M431, 0x1C), + DATA_MAKE_NUM(DATADIR_M431, 0x1D), + DATA_MAKE_NUM(DATADIR_M431, 0x1E), + DATA_MAKE_NUM(DATADIR_M431, 0x1F), + DATA_MAKE_NUM(DATADIR_M431, 0x20), }; typedef struct unk2110_obj { - u32 unk0; - float unk4; - float unk8; - Vec unkC; - s16 unk18; - s16 unk1A; - s16 unk1C; - s16 unk1E; - float unk20; + u32 unk0; + float unk4; + float unk8; + Vec unkC; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; + float unk20; } Unk2110Obj; typedef struct work_2110 { - float unk0; - Unk2110Obj unk4[10]; - s16 unk16C[10]; + float unk0; + Unk2110Obj unk4[10]; + s16 unk16C[10]; } Work2110; void fn_1_2AC0(omObjData *object); @@ -700,115 +671,120 @@ void fn_1_498C(s16 arg0, Work2110 *arg1); void fn_1_2110(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f29; - s16 temp_r31; - Unk2110Obj *temp_r29; - Work2110 *temp_r28; - s16 temp_r27; - AnimData *temp_r26; - s16 temp_r25; - - object->stat |= 0x100; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 2*sizeof(Work2110), MEMORY_DEFAULT_NUM); - temp_r28 = object->data; - object->model[0] = Hu3DModelCreateFile(0x3E0000); - Hu3DModelLayerSet(object->model[0], 0); - Hu3DModelScaleSet(object->model[0], 1.2f, 1.2f, 1.2f); - temp_r31 = Hu3DModelCreateFile(0x3E0011); - Hu3DModelAttrSet(temp_r31, 0x40000001); - Hu3DModelLayerSet(temp_r31, 0); - Hu3DMotionSpeedSet(temp_r31, 0.25f); - temp_r31 = Hu3DModelCreateFile(0x3E0012); - Hu3DModelAttrSet(temp_r31, 0x40000001); - Hu3DModelLayerSet(temp_r31, 0); - Hu3DMotionSpeedSet(temp_r31, 0.25f); - temp_r31 = Hu3DModelCreateFile(0x3E0013); - object->model[5] = temp_r31; - object->motion[0] = Hu3DJointMotionFile(temp_r31, 0x3E0014); - object->motion[1] = Hu3DJointMotionFile(temp_r31, 0x3E0015); - object->motion[2] = Hu3DJointMotionFile(temp_r31, 0x3E0016); - object->motion[3] = Hu3DJointMotionFile(temp_r31, 0x3E0017); - object->motion[4] = Hu3DJointMotionFile(temp_r31, 0x3E0014); - object->motion[5] = Hu3DJointMotionFile(temp_r31, 0x3E0018); - object->motion[6] = Hu3DJointMotionFile(temp_r31, 0x3E0019); - Hu3DModelPosSet(temp_r31, 0, 0, -230); - Hu3DModelShadowSet(temp_r31); - Hu3DModelAttrSet(temp_r31, 0x40000001); - Hu3DMotionSet(temp_r31, object->motion[0]); - for(temp_r31=0; temp_r31<2; temp_r31++, temp_r28++) { - temp_r25 = Hu3DModelCreateFile(lbl_1_data_114[0][temp_r31]); - temp_f30 = (temp_r31 == 0) ? -317.0f : 317.0f; - temp_f31 = 0; - temp_f29 = 100; - Hu3DModelPosSet(temp_r25, temp_f30, temp_f31, temp_f29); - object->model[temp_r31+1] = Hu3DModelCreateFile(0x3E0002); - temp_f30 = (temp_r31 == 0) ? -317.0f : 317.0f; - temp_f31 = 0; - temp_f29 = 100; - Hu3DModelPosSet(object->model[temp_r31+1], temp_f30, temp_f31, temp_f29); - Hu3DModelAttrSet(object->model[temp_r31+1], 0x40000002); - - object->model[temp_r31+3] = Hu3DModelCreateFile(lbl_1_data_114[1][temp_r31]); - temp_f31 = 45; - Hu3DModelPosSet(object->model[temp_r31+3], temp_f30, temp_f31, temp_f29); - Hu3DModelRotSet(object->model[temp_r31+3], 0, lbl_1_data_1D0, 0); - for(temp_r27 = 0, temp_r29 = &temp_r28->unk4[0]; temp_r27<10; temp_r27++, temp_r29++) { - if(fmod((float)temp_r27, 2)) { - if(temp_r27 == 1) { - temp_r29->unk1E = Hu3DModelCreateFile(lbl_1_data_124[temp_r31][0]); - } else { - temp_r29->unk1E = Hu3DModelLink(temp_r28->unk4[1].unk1E); - } - } else { - if(temp_r27 == 0) { - temp_r29->unk1E = Hu3DModelCreateFile(lbl_1_data_124[temp_r31][1]); - } else { - temp_r29->unk1E = Hu3DModelLink(temp_r28->unk4[0].unk1E); - } - } - Hu3DModelPosSet(temp_r29->unk1E, 0, -500, 0); - if(temp_r27 == 0) { - temp_r29->unk1C = Hu3DModelCreateFile(0x3E000B); - } else { - temp_r29->unk1C = Hu3DModelLink(temp_r28->unk4[0].unk1C); - } - Hu3DData[temp_r29->unk1C].pos.y = 1000; - Hu3DModelAttrSet(temp_r29->unk1C, 1); - temp_r29->unk0 = 0; - temp_r29->unk4 = lbl_1_data_1D0+(36.0f*temp_r27); - } - temp_r28->unk0 = 0; - fn_1_48D0(temp_r28); - fn_1_498C(temp_r31, temp_r28); - } - for(temp_r31=0; temp_r31<20; temp_r31++) { - if(temp_r31 < 5) { - lbl_1_bss_34[temp_r31] = Hu3DModelCreateFile(lbl_1_data_134[temp_r31]); - } else { - temp_r27 = fmod((float)temp_r31, 5); - lbl_1_bss_34[temp_r31] = Hu3DModelLink(lbl_1_bss_34[temp_r27]); - } - Hu3DModelPosSet(lbl_1_bss_34[temp_r31], 0, -500, 0); - } - Hu3DModelShadowMapObjSet(object->model[0], "field"); - Hu3DModelShadowMapSet(object->model[1]); - Hu3DModelShadowMapSet(object->model[2]); - temp_r26 = HuSprAnimRead(HuDataReadNum(0x3E001B, MEMORY_DEFAULT_NUM)); - lbl_1_bss_5C.unk0[0] = fn_1_6C74(temp_r26, 1, 140, 0, 0); - Hu3DModelLayerSet(lbl_1_bss_5C.unk0[0], 7); - for(temp_r31=0; temp_r31<5; temp_r31++) { - temp_r26 = HuSprAnimRead(HuDataReadNum(lbl_1_data_148[temp_r31], MEMORY_DEFAULT_NUM)); - lbl_1_bss_5C.unk0[temp_r31+1] = fn_1_6C74(temp_r26, 2, 45, 0, 0); - Hu3DModelLayerSet(lbl_1_bss_5C.unk0[temp_r31+1], 7); - } - object->func = fn_1_2AC0; + float temp_f31; + float temp_f30; + float temp_f29; + s16 temp_r31; + Unk2110Obj *temp_r29; + Work2110 *temp_r28; + s16 temp_r27; + AnimData *temp_r26; + s16 temp_r25; + + object->stat |= 0x100; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(Work2110), MEMORY_DEFAULT_NUM); + temp_r28 = object->data; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M431, 0x00)); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelScaleSet(object->model[0], 1.2f, 1.2f, 1.2f); + temp_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M431, 0x11)); + Hu3DModelAttrSet(temp_r31, HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(temp_r31, 0); + Hu3DMotionSpeedSet(temp_r31, 0.25f); + temp_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M431, 0x12)); + Hu3DModelAttrSet(temp_r31, HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(temp_r31, 0); + Hu3DMotionSpeedSet(temp_r31, 0.25f); + temp_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M431, 0x13)); + object->model[5] = temp_r31; + object->motion[0] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x14)); + object->motion[1] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x15)); + object->motion[2] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x16)); + object->motion[3] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x17)); + object->motion[4] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x14)); + object->motion[5] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x18)); + object->motion[6] = Hu3DJointMotionFile(temp_r31, DATA_MAKE_NUM(DATADIR_M431, 0x19)); + Hu3DModelPosSet(temp_r31, 0, 0, -230); + Hu3DModelShadowSet(temp_r31); + Hu3DModelAttrSet(temp_r31, HU3D_MOTATTR_LOOP); + Hu3DMotionSet(temp_r31, object->motion[0]); + for (temp_r31 = 0; temp_r31 < 2; temp_r31++, temp_r28++) { + temp_r25 = Hu3DModelCreateFile(lbl_1_data_114[0][temp_r31]); + temp_f30 = (temp_r31 == 0) ? -317.0f : 317.0f; + temp_f31 = 0; + temp_f29 = 100; + Hu3DModelPosSet(temp_r25, temp_f30, temp_f31, temp_f29); + object->model[temp_r31 + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M431, 0x02)); + temp_f30 = (temp_r31 == 0) ? -317.0f : 317.0f; + temp_f31 = 0; + temp_f29 = 100; + Hu3DModelPosSet(object->model[temp_r31 + 1], temp_f30, temp_f31, temp_f29); + Hu3DModelAttrSet(object->model[temp_r31 + 1], HU3D_MOTATTR_PAUSE); + + object->model[temp_r31 + 3] = Hu3DModelCreateFile(lbl_1_data_114[1][temp_r31]); + temp_f31 = 45; + Hu3DModelPosSet(object->model[temp_r31 + 3], temp_f30, temp_f31, temp_f29); + Hu3DModelRotSet(object->model[temp_r31 + 3], 0, lbl_1_data_1D0, 0); + for (temp_r27 = 0, temp_r29 = &temp_r28->unk4[0]; temp_r27 < 10; temp_r27++, temp_r29++) { + if (fmod((float)temp_r27, 2)) { + if (temp_r27 == 1) { + temp_r29->unk1E = Hu3DModelCreateFile(lbl_1_data_124[temp_r31][0]); + } + else { + temp_r29->unk1E = Hu3DModelLink(temp_r28->unk4[1].unk1E); + } + } + else { + if (temp_r27 == 0) { + temp_r29->unk1E = Hu3DModelCreateFile(lbl_1_data_124[temp_r31][1]); + } + else { + temp_r29->unk1E = Hu3DModelLink(temp_r28->unk4[0].unk1E); + } + } + Hu3DModelPosSet(temp_r29->unk1E, 0, -500, 0); + if (temp_r27 == 0) { + temp_r29->unk1C = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M431, 0x0B)); + } + else { + temp_r29->unk1C = Hu3DModelLink(temp_r28->unk4[0].unk1C); + } + Hu3DData[temp_r29->unk1C].pos.y = 1000; + Hu3DModelAttrSet(temp_r29->unk1C, HU3D_ATTR_DISPOFF); + temp_r29->unk0 = 0; + temp_r29->unk4 = lbl_1_data_1D0 + (36.0f * temp_r27); + } + temp_r28->unk0 = 0; + fn_1_48D0(temp_r28); + fn_1_498C(temp_r31, temp_r28); + } + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + if (temp_r31 < 5) { + lbl_1_bss_34[temp_r31] = Hu3DModelCreateFile(lbl_1_data_134[temp_r31]); + } + else { + temp_r27 = fmod((float)temp_r31, 5); + lbl_1_bss_34[temp_r31] = Hu3DModelLink(lbl_1_bss_34[temp_r27]); + } + Hu3DModelPosSet(lbl_1_bss_34[temp_r31], 0, -500, 0); + } + Hu3DModelShadowMapObjSet(object->model[0], "field"); + Hu3DModelShadowMapSet(object->model[1]); + Hu3DModelShadowMapSet(object->model[2]); + temp_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M431, 0x1B), MEMORY_DEFAULT_NUM)); + lbl_1_bss_5C.unk0[0] = fn_1_6C74(temp_r26, 1, 140, 0, 0); + Hu3DModelLayerSet(lbl_1_bss_5C.unk0[0], 7); + for (temp_r31 = 0; temp_r31 < 5; temp_r31++) { + temp_r26 = HuSprAnimRead(HuDataReadNum(lbl_1_data_148[temp_r31], MEMORY_DEFAULT_NUM)); + lbl_1_bss_5C.unk0[temp_r31 + 1] = fn_1_6C74(temp_r26, 2, 45, 0, 0); + Hu3DModelLayerSet(lbl_1_bss_5C.unk0[temp_r31 + 1], 7); + } + object->func = fn_1_2AC0; } void fn_1_2AB0(s16 arg0) { - lbl_1_bss_10 = arg0; + lbl_1_bss_10 = arg0; } void fn_1_2C94(Work2110 *arg0); @@ -820,37 +796,37 @@ void fn_1_5708(void); void fn_1_2AC0(omObjData *object) { - Work2110 *temp_r31 = object->data; - if(!fn_1_2090(1)) { - if(fn_1_2090(28) == 12 || fn_1_2090(28) == 8) { - switch(fn_1_2090(224)) { - case 32: - fn_1_2C94(temp_r31); - break; - - case 64: - fn_1_30E0(temp_r31); - break; - - case 96: - fn_1_3540(temp_r31); - break; - - case 128: - if(fn_1_2090(28) == 12) { - fn_1_3D7C(temp_r31); - } - break; - - case 0: - fn_1_4028(temp_r31); - break; - } - fn_1_498C(0, &temp_r31[0]); - fn_1_498C(1, &temp_r31[1]); - } - } - fn_1_5708(); + Work2110 *temp_r31 = object->data; + if (!fn_1_2090(1)) { + if (fn_1_2090(28) == 12 || fn_1_2090(28) == 8) { + switch (fn_1_2090(224)) { + case 32: + fn_1_2C94(temp_r31); + break; + + case 64: + fn_1_30E0(temp_r31); + break; + + case 96: + fn_1_3540(temp_r31); + break; + + case 128: + if (fn_1_2090(28) == 12) { + fn_1_3D7C(temp_r31); + } + break; + + case 0: + fn_1_4028(temp_r31); + break; + } + fn_1_498C(0, &temp_r31[0]); + fn_1_498C(1, &temp_r31[1]); + } + } + fn_1_5708(); } u16 lbl_1_data_162 = 1; @@ -859,163 +835,162 @@ void fn_1_4798(Work2110 *arg0); void fn_1_2C94(Work2110 *arg0) { - float temp_f31; - float temp_f30; - Unk2110Obj *temp_r31; - s16 temp_r29; - s16 temp_r28; - WorkA44 *temp_r26; - temp_r26 = lbl_1_bss_30->data; - - switch(lbl_1_data_162) { - case 0: - if(lbl_1_bss_10 == 1) { - HuAudFXPlay(1670); - } - lbl_1_bss_10++; - temp_f31 = lbl_1_bss_10/60.0f; - if(temp_f31 >= 1.0f) { - temp_r26->unkA = 900; - lbl_1_bss_10 = 0; - temp_f31 = 1; - lbl_1_data_162++; - - } - temp_f31 = cosd(temp_f31*90.0f); - temp_f30 = -50+(95*temp_f31); - break; - - case 1: - temp_f30 = -50; - fn_1_4798(arg0); - lbl_1_data_162++; - break; - - case 2: - if(lbl_1_bss_10 == 1) { - HuAudFXPlay(1663); - } - lbl_1_bss_10++; - temp_f31 = lbl_1_bss_10/60.0f; - if(temp_f31 >= 1.0f) { - lbl_1_bss_10 = 0; - temp_f31 = 1.0f; - lbl_1_data_162++; - } - temp_f31 = sind(temp_f31*90.0f); - temp_f30 = -50+(95*temp_f31); - break; - - case 3: - temp_f30 = 45; - fn_1_2050(224, 64); - lbl_1_data_162 = 0; - break; - } - for(temp_r29=0; temp_r29<2; temp_r29++, arg0++) { - temp_r31 = &arg0->unk4[0]; - for(temp_r28=0; temp_r28<10; temp_r28++, temp_r31++) { - if(lbl_1_data_162 || -50.0f != Hu3DData[temp_r31->unk1A].pos.y) { - Hu3DModelPosSet(temp_r31->unk1A, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); - Hu3DModelRotSet(temp_r31->unk1A, 0, temp_r31->unk8, 0); - Hu3DModelPosSet(temp_r31->unk1E, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); - Hu3DModelRotSet(temp_r31->unk1E, 0, temp_r31->unk8, 0); - } - - } - } + float temp_f31; + float temp_f30; + Unk2110Obj *temp_r31; + s16 temp_r29; + s16 temp_r28; + WorkA44 *temp_r26; + temp_r26 = lbl_1_bss_30->data; + + switch (lbl_1_data_162) { + case 0: + if (lbl_1_bss_10 == 1) { + HuAudFXPlay(1670); + } + lbl_1_bss_10++; + temp_f31 = lbl_1_bss_10 / (1.0f * REFRESH_RATE); + if (temp_f31 >= 1.0f) { + temp_r26->unkA = 15 * REFRESH_RATE; + lbl_1_bss_10 = 0; + temp_f31 = 1; + lbl_1_data_162++; + } + temp_f31 = cosd(temp_f31 * 90.0f); + temp_f30 = -50 + (95 * temp_f31); + break; + + case 1: + temp_f30 = -50; + fn_1_4798(arg0); + lbl_1_data_162++; + break; + + case 2: + if (lbl_1_bss_10 == 1) { + HuAudFXPlay(1663); + } + lbl_1_bss_10++; + temp_f31 = lbl_1_bss_10 / (1.0f * REFRESH_RATE); + if (temp_f31 >= 1.0f) { + lbl_1_bss_10 = 0; + temp_f31 = 1.0f; + lbl_1_data_162++; + } + temp_f31 = sind(temp_f31 * 90.0f); + temp_f30 = -50 + (95 * temp_f31); + break; + + case 3: + temp_f30 = 45; + fn_1_2050(224, 64); + lbl_1_data_162 = 0; + break; + } + for (temp_r29 = 0; temp_r29 < 2; temp_r29++, arg0++) { + temp_r31 = &arg0->unk4[0]; + for (temp_r28 = 0; temp_r28 < 10; temp_r28++, temp_r31++) { + if (lbl_1_data_162 || -50.0f != Hu3DData[temp_r31->unk1A].pos.y) { + Hu3DModelPosSet(temp_r31->unk1A, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); + Hu3DModelRotSet(temp_r31->unk1A, 0, temp_r31->unk8, 0); + Hu3DModelPosSet(temp_r31->unk1E, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); + Hu3DModelRotSet(temp_r31->unk1E, 0, temp_r31->unk8, 0); + } + } + } } void fn_1_30E0(Work2110 *arg0) { - float temp_f31; - s16 sp8[2]; - Unk2110Obj *temp_r31; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r25; - u32 temp_r22; - switch(lbl_1_data_162) { - case 0: - lbl_1_bss_10++; - if(lbl_1_bss_10 > 60) { - lbl_1_bss_10 = 0; - lbl_1_data_162++; - } - return; - - case 1: - temp_r28 = arg0[0].unk16C[4]; - arg0[0].unk4[temp_r28].unk0 = 4; - temp_r28 = arg0[1].unk16C[4]; - arg0[1].unk4[temp_r28].unk0 = 4; - lbl_1_bss_10 = 999; - lbl_1_data_162++; - break; - - case 2: - temp_r31 = &arg0[0].unk4[arg0[0].unk16C[5]]; - if((temp_r31->unk0 & 0x1C) == 0x10) { - lbl_1_bss_10 = 0; - fn_1_2050(224, 96); - lbl_1_data_162 = 0; - return; - } - break; - } - temp_r25 = 0; - sp8[0] = sp8[1] = ++lbl_1_bss_10; - for(temp_r27=0; temp_r27<2; temp_r27++, arg0++) { - for(temp_r29=4; temp_r29>-6; temp_r29--) { - temp_r28 = (temp_r29 < 0) ? arg0->unk16C[temp_r29+10] : arg0->unk16C[temp_r29]; - temp_r31 = &arg0[0].unk4[temp_r28]; - switch(temp_r22 = temp_r31->unk0 & 0x1C) { - case 4: - if(sp8[temp_r27] > 15) { - sp8[temp_r27] = 0; - temp_r25 = 1; - if(temp_r29-1 > -6) { - temp_r28 = ((temp_r29-1) < 0) ? arg0->unk16C[(temp_r29-1)+10] : arg0->unk16C[(temp_r29-1)]; - arg0[0].unk4[temp_r28].unk0 &= ~0x1C; - arg0[0].unk4[temp_r28].unk0 |= 0x4; - } - temp_r31->unk0 &= ~0x1C; - temp_r31->unk0 |= 8; - temp_r31->unk20 = 0; - Hu3DModelAttrReset(temp_r31->unk1C, 1); - } - break; - - case 8: - case 12: - temp_f31 = Hu3DData[temp_r31->unk1C].pos.y; - temp_r31->unk20 -= 0.98f; - temp_f31 += temp_r31->unk20; - if(temp_f31 <= 50.0f) { - temp_f31 = 50.0f; - temp_r31->unk0 &= ~0x1C; - if(temp_r22 == 8) { - temp_r31->unk20 = 6; - temp_r31->unk0 |= 12; - HuAudFXPlay(1664); - } else { - temp_r31->unk20 = 0; - temp_r31->unk0 |= 16; - } - } - Hu3DModelPosSet(temp_r31->unk1C, temp_r31->unkC.x, temp_f31, temp_r31->unkC.z); - Hu3DModelRotSet(temp_r31->unk1C, 0, temp_r31->unk8, 0); - break; - - default: - break; - } - } - } - if(temp_r25) { - lbl_1_bss_10 = 0; - } + float temp_f31; + s16 sp8[2]; + Unk2110Obj *temp_r31; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r25; + u32 temp_r22; + switch (lbl_1_data_162) { + case 0: + lbl_1_bss_10++; + if (lbl_1_bss_10 > REFRESH_RATE) { + lbl_1_bss_10 = 0; + lbl_1_data_162++; + } + return; + + case 1: + temp_r28 = arg0[0].unk16C[4]; + arg0[0].unk4[temp_r28].unk0 = 4; + temp_r28 = arg0[1].unk16C[4]; + arg0[1].unk4[temp_r28].unk0 = 4; + lbl_1_bss_10 = 999; + lbl_1_data_162++; + break; + + case 2: + temp_r31 = &arg0[0].unk4[arg0[0].unk16C[5]]; + if ((temp_r31->unk0 & 0x1C) == 0x10) { + lbl_1_bss_10 = 0; + fn_1_2050(224, 96); + lbl_1_data_162 = 0; + return; + } + break; + } + temp_r25 = 0; + sp8[0] = sp8[1] = ++lbl_1_bss_10; + for (temp_r27 = 0; temp_r27 < 2; temp_r27++, arg0++) { + for (temp_r29 = 4; temp_r29 > -6; temp_r29--) { + temp_r28 = (temp_r29 < 0) ? arg0->unk16C[temp_r29 + 10] : arg0->unk16C[temp_r29]; + temp_r31 = &arg0[0].unk4[temp_r28]; + switch (temp_r22 = temp_r31->unk0 & 0x1C) { + case 4: + if (sp8[temp_r27] > (VERSION_NTSC ? 15 : 12)) { + sp8[temp_r27] = 0; + temp_r25 = 1; + if (temp_r29 - 1 > -6) { + temp_r28 = ((temp_r29 - 1) < 0) ? arg0->unk16C[(temp_r29 - 1) + 10] : arg0->unk16C[(temp_r29 - 1)]; + arg0[0].unk4[temp_r28].unk0 &= ~0x1C; + arg0[0].unk4[temp_r28].unk0 |= 0x4; + } + temp_r31->unk0 &= ~0x1C; + temp_r31->unk0 |= 8; + temp_r31->unk20 = 0; + Hu3DModelAttrReset(temp_r31->unk1C, HU3D_ATTR_DISPOFF); + } + break; + + case 8: + case 12: + temp_f31 = Hu3DData[temp_r31->unk1C].pos.y; + temp_r31->unk20 -= 0.98f; + temp_f31 += temp_r31->unk20; + if (temp_f31 <= 50.0f) { + temp_f31 = 50.0f; + temp_r31->unk0 &= ~0x1C; + if (temp_r22 == 8) { + temp_r31->unk20 = 6.0f; + temp_r31->unk0 |= 12; + HuAudFXPlay(1664); + } + else { + temp_r31->unk20 = 0; + temp_r31->unk0 |= 16; + } + } + Hu3DModelPosSet(temp_r31->unk1C, temp_r31->unkC.x, temp_f31, temp_r31->unkC.z); + Hu3DModelRotSet(temp_r31->unk1C, 0, temp_r31->unk8, 0); + break; + + default: + break; + } + } + } + if (temp_r25) { + lbl_1_bss_10 = 0; + } } s32 lbl_1_data_164 = -1; @@ -1028,476 +1003,483 @@ s32 fn_1_7A78(s32 arg0, s16 arg1); void fn_1_3540(Work2110 *arg0) { - float sp8[2]; - float temp_f31; - float temp_f30; - Unk2110Obj *temp_r30; - s16 temp_r29; - Bss61CWork *temp_r27; - s16 temp_r26; - s16 temp_r25; - temp_r25 = 0; - switch(lbl_1_data_162) { - case 0: - lbl_1_bss_20[0] = arg0[0].unk0; - lbl_1_bss_20[1] = arg0[1].unk0; - temp_r29 = rand16()%11; - temp_f31 = (temp_r29 < 5) ? 360.0f : 180.0f; - temp_f31 += temp_r29*36.0f; - lbl_1_bss_18[0] = lbl_1_bss_20[0]+temp_f31; - lbl_1_bss_18[1] = lbl_1_bss_20[1]-temp_f31; - lbl_1_bss_14 = (0.01f*temp_f31)*60; - lbl_1_data_162++; - lbl_1_data_164 = HuAudFXPlay(1665); - break; - - case 1: - if(lbl_1_bss_10 == lbl_1_bss_14) { - arg0[0].unk0 = fmod(arg0[0].unk0, 360); - arg0[1].unk0 = fmod(arg0[1].unk0, 360); - if(arg0[0].unk0 < 0.0f) { - arg0[0].unk0 += 360.0f; - } - if(arg0[1].unk0 < 0.0f) { - arg0[1].unk0 += 360.0f; - } - fn_1_48D0(&arg0[0]); - fn_1_48D0(&arg0[1]); - lbl_1_data_162++; - lbl_1_bss_10 = 0; - temp_r25 = 1; - } - break; - - case 2: - temp_r25 = 1; - fn_1_4D4C(); - fn_1_52D8(); - fn_1_566C(1); - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r27 = lbl_1_bss_61C[temp_r29]->data; - fn_1_4E30(temp_r27->unkA, temp_r27); - } - lbl_1_data_162 = 0; - fn_1_2050(224, 0); - break; - } - sp8[0] = lbl_1_data_1D0+arg0[0].unk0; - sp8[1] = lbl_1_data_1D0+arg0[1].unk0; - if(temp_r25 == 0) { - lbl_1_bss_10++; - temp_f31 = lbl_1_bss_10/(float)lbl_1_bss_14; - temp_f31 = sind(temp_f31*90.0f); - if(lbl_1_bss_10 > lbl_1_bss_14-120) { - temp_f30 = (lbl_1_bss_10-(lbl_1_bss_14-120))/120.0f; - if(temp_f30 < 0.0f) { - temp_f30 = 0.0f; - } else { - if(temp_f30 > 1.0f) { - temp_f30 = 1.0f; - } - } - if(lbl_1_data_164 != -1) { - HuAudFXPitchSet(lbl_1_data_164, -8191.0f*temp_f30); - fn_1_7A78(lbl_1_data_164, (1.0f-temp_f30)*127); - } - if(lbl_1_bss_10 >= lbl_1_bss_14) { - if(lbl_1_data_164 != -1) { - HuAudFXStop(lbl_1_data_164); - lbl_1_data_164 = -1; - HuAudFXPlay(1675); - } - } - } - if(lbl_1_bss_10 > lbl_1_bss_14) { - lbl_1_bss_10 = lbl_1_bss_14; - temp_f31 = 1; - } - arg0[0].unk0 = lbl_1_bss_20[0]+(temp_f31*(lbl_1_bss_18[0]-lbl_1_bss_20[0])); - arg0[1].unk0 = lbl_1_bss_20[1]+(temp_f31*(lbl_1_bss_18[1]-lbl_1_bss_20[1])); - } - Hu3DData[lbl_1_bss_2C->model[3]].rot.y = sp8[0]; - Hu3DData[lbl_1_bss_2C->model[4]].rot.y = sp8[1]; - for(temp_r29=0; temp_r29<2; temp_r29++, arg0++) { - temp_r30 = &arg0->unk4[0]; - for(temp_r26=0; temp_r26<10; temp_r26++, temp_r30++) { - float temp_f29 = temp_r30->unkC.x; - float temp_f28 = temp_r30->unkC.z; - Hu3DModelPosSet(temp_r30->unk1A, temp_f29, 45, temp_f28); - Hu3DModelRotSet(temp_r30->unk1A, 0, temp_r30->unk8, 0); - Hu3DModelPosSet(temp_r30->unk1E, temp_f29, 45, temp_f28); - Hu3DModelRotSet(temp_r30->unk1E, 0, temp_r30->unk8, 0); - Hu3DModelPosSet(temp_r30->unk1C, temp_f29, 50, temp_f28); - Hu3DModelRotSet(temp_r30->unk1C, 0, temp_r30->unk8, 0); - } - } + float sp8[2]; + float temp_f31; + float temp_f30; + Unk2110Obj *temp_r30; + s16 temp_r29; + Bss61CWork *temp_r27; + s16 temp_r26; + s16 temp_r25; + temp_r25 = 0; + switch (lbl_1_data_162) { + case 0: + lbl_1_bss_20[0] = arg0[0].unk0; + lbl_1_bss_20[1] = arg0[1].unk0; + temp_r29 = rand16() % 11; + temp_f31 = (temp_r29 < 5) ? 360.0f : 180.0f; + temp_f31 += temp_r29 * 36.0f; + lbl_1_bss_18[0] = lbl_1_bss_20[0] + temp_f31; + lbl_1_bss_18[1] = lbl_1_bss_20[1] - temp_f31; + lbl_1_bss_14 = (0.01f * temp_f31) * REFRESH_RATE; + lbl_1_data_162++; + lbl_1_data_164 = HuAudFXPlay(1665); + break; + + case 1: + if (lbl_1_bss_10 == lbl_1_bss_14) { + arg0[0].unk0 = fmod(arg0[0].unk0, 360); + arg0[1].unk0 = fmod(arg0[1].unk0, 360); + if (arg0[0].unk0 < 0.0f) { + arg0[0].unk0 += 360.0f; + } + if (arg0[1].unk0 < 0.0f) { + arg0[1].unk0 += 360.0f; + } + fn_1_48D0(&arg0[0]); + fn_1_48D0(&arg0[1]); + lbl_1_data_162++; + lbl_1_bss_10 = 0; + temp_r25 = 1; + } + break; + + case 2: + temp_r25 = 1; + fn_1_4D4C(); + fn_1_52D8(); + fn_1_566C(1); + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r27 = lbl_1_bss_61C[temp_r29]->data; + fn_1_4E30(temp_r27->unkA, temp_r27); + } + lbl_1_data_162 = 0; + fn_1_2050(224, 0); + break; + } + sp8[0] = lbl_1_data_1D0 + arg0[0].unk0; + sp8[1] = lbl_1_data_1D0 + arg0[1].unk0; + if (temp_r25 == 0) { + lbl_1_bss_10++; + temp_f31 = lbl_1_bss_10 / (float)lbl_1_bss_14; + temp_f31 = sind(temp_f31 * 90.0f); + if (lbl_1_bss_10 > lbl_1_bss_14 - 120) { + temp_f30 = (lbl_1_bss_10 - (lbl_1_bss_14 - 120)) / 120.0f; + if (temp_f30 < 0.0f) { + temp_f30 = 0.0f; + } + else { + if (temp_f30 > 1.0f) { + temp_f30 = 1.0f; + } + } + if (lbl_1_data_164 != -1) { + HuAudFXPitchSet(lbl_1_data_164, -8191.0f * temp_f30); + fn_1_7A78(lbl_1_data_164, (1.0f - temp_f30) * 127); + } + if (lbl_1_bss_10 >= lbl_1_bss_14) { + if (lbl_1_data_164 != -1) { + HuAudFXStop(lbl_1_data_164); + lbl_1_data_164 = -1; + HuAudFXPlay(1675); + } + } + } + if (lbl_1_bss_10 > lbl_1_bss_14) { + lbl_1_bss_10 = lbl_1_bss_14; + temp_f31 = 1; + } + arg0[0].unk0 = lbl_1_bss_20[0] + (temp_f31 * (lbl_1_bss_18[0] - lbl_1_bss_20[0])); + arg0[1].unk0 = lbl_1_bss_20[1] + (temp_f31 * (lbl_1_bss_18[1] - lbl_1_bss_20[1])); + } + Hu3DData[lbl_1_bss_2C->model[3]].rot.y = sp8[0]; + Hu3DData[lbl_1_bss_2C->model[4]].rot.y = sp8[1]; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++, arg0++) { + temp_r30 = &arg0->unk4[0]; + for (temp_r26 = 0; temp_r26 < 10; temp_r26++, temp_r30++) { + float temp_f29 = temp_r30->unkC.x; + float temp_f28 = temp_r30->unkC.z; + Hu3DModelPosSet(temp_r30->unk1A, temp_f29, 45, temp_f28); + Hu3DModelRotSet(temp_r30->unk1A, 0, temp_r30->unk8, 0); + Hu3DModelPosSet(temp_r30->unk1E, temp_f29, 45, temp_f28); + Hu3DModelRotSet(temp_r30->unk1E, 0, temp_r30->unk8, 0); + Hu3DModelPosSet(temp_r30->unk1C, temp_f29, 50, temp_f28); + Hu3DModelRotSet(temp_r30->unk1C, 0, temp_r30->unk8, 0); + } + } } void fn_1_3FD0(Unk72B4Data18 *arg0); - void fn_1_3D7C(Work2110 *arg0) { - Unk2110Obj *temp_r31; - ModelData *temp_r30; - s16 temp_r29; - WorkA44 *temp_r28; - s16 temp_r27; - switch(lbl_1_data_162) { - case 0: - if(++lbl_1_bss_10 > 60) { - lbl_1_bss_10 = 0; - lbl_1_data_162++; - } - break; - - case 1: - for(temp_r29=0; temp_r29<2; temp_r29++, arg0++) { - temp_r31 = &arg0->unk4[0]; - for(temp_r27=0; temp_r27<10; temp_r27++, temp_r31++) { - temp_r30 = &Hu3DData[temp_r31->unk1C]; - temp_r31->unk0 &= ~0x1C; - if(!(temp_r31->unk0 & 0x1)) { - fn_1_5B70(temp_r30->pos.x, 20+temp_r30->pos.y, temp_r30->pos.z, 20, fn_1_3FD0, temp_r31->unk1C); - if(temp_r29 == 0) { - HuAudFXPlay(1669); - } else { - HuAudFXPlay(1674); - } - } else { - temp_r30->pos.y = 1000; - } - temp_r31->unk0 &= ~0x3; - Hu3DModelScaleSet(temp_r31->unk1A, 1, 1, 1); - } - } - lbl_1_data_162++; - break; - - case 2: - if(++lbl_1_bss_10 > 60) { - lbl_1_bss_10 = lbl_1_data_162 = 0; - fn_1_2050(224, 32); - } - break; - } + Unk2110Obj *temp_r31; + ModelData *temp_r30; + s16 temp_r29; + WorkA44 *temp_r28; + s16 temp_r27; + switch (lbl_1_data_162) { + case 0: + if (++lbl_1_bss_10 > REFRESH_RATE) { + lbl_1_bss_10 = 0; + lbl_1_data_162++; + } + break; + + case 1: + for (temp_r29 = 0; temp_r29 < 2; temp_r29++, arg0++) { + temp_r31 = &arg0->unk4[0]; + for (temp_r27 = 0; temp_r27 < 10; temp_r27++, temp_r31++) { + temp_r30 = &Hu3DData[temp_r31->unk1C]; + temp_r31->unk0 &= ~0x1C; + if (!(temp_r31->unk0 & 0x1)) { + fn_1_5B70(temp_r30->pos.x, 20 + temp_r30->pos.y, temp_r30->pos.z, 20, fn_1_3FD0, temp_r31->unk1C); + if (temp_r29 == 0) { + HuAudFXPlay(1669); + } + else { + HuAudFXPlay(1674); + } + } + else { + temp_r30->pos.y = 1000; + } + temp_r31->unk0 &= ~0x3; + Hu3DModelScaleSet(temp_r31->unk1A, 1, 1, 1); + } + } + lbl_1_data_162++; + break; + + case 2: + if (++lbl_1_bss_10 > REFRESH_RATE) { + lbl_1_bss_10 = lbl_1_data_162 = 0; + fn_1_2050(224, 32); + } + break; + } } void fn_1_3FD0(Unk72B4Data18 *arg0) { - Hu3DData[arg0->unk2C].pos.y = 1000; - Hu3DModelAttrSet(arg0->unk2C, 1); + Hu3DData[arg0->unk2C].pos.y = 1000; + Hu3DModelAttrSet(arg0->unk2C, HU3D_ATTR_DISPOFF); } void fn_1_4028(Work2110 *arg0) { - float temp_f31; - float temp_f30; - Unk2110Obj *temp_r31; - WorkA44 *temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - Bss61CWork *temp_r24; - temp_r30 = lbl_1_bss_30->data; - temp_r27 = -1; - switch(lbl_1_data_162) { - case 0: - temp_r30->unk10 = MGSeqTimerCreate(15); - lbl_1_data_162++; - break; - - case 1: - if(lbl_1_bss_12C[0].unk134[0] && lbl_1_bss_12C[0].unk134[1]) { - temp_r27 = 0; - } - if(lbl_1_bss_12C[1].unk134[0] && lbl_1_bss_12C[1].unk134[1]) { - if(temp_r27 == 0) { - temp_r27 = (rand16() % 2) ? 0 : 1; - } else { - temp_r27 = 1; - } - } - temp_r30->unk6[1] = temp_r27; - if(temp_r27 != -1) { - fn_1_A7D0(temp_r30->unk6[1]); - fn_1_20D0(lbl_1_bss_12C[temp_r27].unk138[0]); - fn_1_5480(); - fn_1_566C(3); - lbl_1_bss_12C[temp_r27].unk138[0]++; - MGSeqParamSet(temp_r30->unk10, 2, -1); - temp_r30->unk10 = -1; - temp_r30->unk6[0]++; - lbl_1_bss_10 = 0; - lbl_1_data_162++; - } else { - if(--temp_r30->unkA < -1) { - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r24 = lbl_1_bss_61C[temp_r29]->data; - for(temp_r28=0; temp_r28<8; temp_r28++) { - temp_r24->unk5E[temp_r28] = -1; - } - } - fn_1_5480(); - fn_1_566C(4); - temp_r30->unkA = 0; - MGSeqParamSet(temp_r30->unk10, 2, -1); - - temp_r30->unk10 = -1; - temp_r30->unk6[0]++; - lbl_1_bss_10 = 0; - lbl_1_data_162++; - } - } - if(temp_r30->unk6[0] >= 5) { - if(lbl_1_bss_12C[0].unk138[0] == lbl_1_bss_12C[1].unk138[0]) { - HuAudFXPlay(11); - } - } - break; - - case 2: - if(++lbl_1_bss_10 > 90.0f) { - lbl_1_bss_10 = 0; - lbl_1_data_162 = 1; - fn_1_2050(224, 128); - } - break; - } - for(temp_r29=0; temp_r29<2; temp_r29++, arg0++) { - temp_r31 = &arg0->unk4[0]; - for(temp_r28=0; temp_r28<10; temp_r28++, temp_r31++) { - if(!(temp_r31->unk0 & 0x1)) { - continue; - } - if(temp_r31->unk0 & 0x2) { - temp_r31->unk18++; - temp_f31 = temp_r31->unk18/30.0f; - if(temp_f31 >= 1.0f) { - temp_r31->unk20 -= 1.0f; - if(temp_r31->unk20 < 0.4f) { - temp_r31->unk20 = 0.4f; - } - temp_r31->unk18 = 0; - temp_f31 = 1.0f; - } - temp_f31 = (temp_r31->unk20*0.7f)*sind(180.0f*temp_f31)+1.0f; - Hu3DModelScaleSet(temp_r31->unk1A, temp_f31, temp_f31, temp_f31); - } else { - if(!temp_r31->unk20) { - if(++temp_r31->unk18 > 30.0f) { - temp_r31->unk20 = 1; - temp_r31->unk18 = 0; - } - } else { - temp_r31->unk18++; - temp_f31 = temp_r31->unk18/54.0f; - if(temp_f31 >= 1.0f) { - temp_r31->unk18 = 54; - temp_f31 = 1.0f; - } - temp_f31 = cosd(temp_f31*90.0f); - temp_f30 = -50+(95*temp_f31); - Hu3DModelPosSet(temp_r31->unk1A, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); - Hu3DModelPosSet(temp_r31->unk1E, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); - } - } - } - } + float temp_f31; + float temp_f30; + Unk2110Obj *temp_r31; + WorkA44 *temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + Bss61CWork *temp_r24; + temp_r30 = lbl_1_bss_30->data; + temp_r27 = -1; + switch (lbl_1_data_162) { + case 0: + temp_r30->unk10 = MGSeqTimerCreate(15); + lbl_1_data_162++; + break; + + case 1: + if (lbl_1_bss_12C[0].unk134[0] && lbl_1_bss_12C[0].unk134[1]) { + temp_r27 = 0; + } + if (lbl_1_bss_12C[1].unk134[0] && lbl_1_bss_12C[1].unk134[1]) { + if (temp_r27 == 0) { + temp_r27 = (rand16() % 2) ? 0 : 1; + } + else { + temp_r27 = 1; + } + } + temp_r30->unk6[1] = temp_r27; + if (temp_r27 != -1) { + fn_1_A7D0(temp_r30->unk6[1]); + fn_1_20D0(lbl_1_bss_12C[temp_r27].unk138[0]); + fn_1_5480(); + fn_1_566C(3); + lbl_1_bss_12C[temp_r27].unk138[0]++; + MGSeqParamSet(temp_r30->unk10, 2, -1); + temp_r30->unk10 = -1; + temp_r30->unk6[0]++; + lbl_1_bss_10 = 0; + lbl_1_data_162++; + } + else { + if (--temp_r30->unkA < -1) { + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r24 = lbl_1_bss_61C[temp_r29]->data; + for (temp_r28 = 0; temp_r28 < 8; temp_r28++) { + temp_r24->unk5E[temp_r28] = -1; + } + } + fn_1_5480(); + fn_1_566C(4); + temp_r30->unkA = 0; + MGSeqParamSet(temp_r30->unk10, 2, -1); + + temp_r30->unk10 = -1; + temp_r30->unk6[0]++; + lbl_1_bss_10 = 0; + lbl_1_data_162++; + } + } + if (temp_r30->unk6[0] >= 5) { + if (lbl_1_bss_12C[0].unk138[0] == lbl_1_bss_12C[1].unk138[0]) { + HuAudFXPlay(11); + } + } + break; + + case 2: + if (++lbl_1_bss_10 > (1.5f * REFRESH_RATE)) { + lbl_1_bss_10 = 0; + lbl_1_data_162 = 1; + fn_1_2050(224, 128); + } + break; + } + for (temp_r29 = 0; temp_r29 < 2; temp_r29++, arg0++) { + temp_r31 = &arg0->unk4[0]; + for (temp_r28 = 0; temp_r28 < 10; temp_r28++, temp_r31++) { + if (!(temp_r31->unk0 & 0x1)) { + continue; + } + if (temp_r31->unk0 & 0x2) { + temp_r31->unk18++; + temp_f31 = temp_r31->unk18 / (0.5f * REFRESH_RATE); + if (temp_f31 >= 1.0f) { + temp_r31->unk20 -= 1.0f; + if (temp_r31->unk20 < 0.4f) { + temp_r31->unk20 = 0.4f; + } + temp_r31->unk18 = 0; + temp_f31 = 1.0f; + } + temp_f31 = (temp_r31->unk20 * 0.7f) * sind(180.0f * temp_f31) + 1.0f; + Hu3DModelScaleSet(temp_r31->unk1A, temp_f31, temp_f31, temp_f31); + } + else { + if (!temp_r31->unk20) { + if (++temp_r31->unk18 > (0.5f * REFRESH_RATE)) { + temp_r31->unk20 = 1; + temp_r31->unk18 = 0; + } + } + else { + temp_r31->unk18++; + temp_f31 = temp_r31->unk18 / (VERSION_NTSC ? 54.0f : 45.0f); + if (temp_f31 >= 1.0f) { + temp_r31->unk18 = VERSION_NTSC ? 54 : 45; + temp_f31 = 1.0f; + } + temp_f31 = cosd(temp_f31 * 90.0f); + temp_f30 = -50 + (95 * temp_f31); + Hu3DModelPosSet(temp_r31->unk1A, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); + Hu3DModelPosSet(temp_r31->unk1E, temp_r31->unkC.x, temp_f30, temp_r31->unkC.z); + } + } + } + } } s16 fn_1_4724(void) { - return lbl_1_data_162; + return lbl_1_data_162; } u32 fn_1_4738(s16 arg0, s16 arg1) { - Work2110 *temp_r31; - temp_r31 = lbl_1_bss_2C->data; - temp_r31 += arg0; - if(arg1 == -1) { - return 0; - } - return temp_r31->unk4[temp_r31->unk16C[arg1]].unk0; + Work2110 *temp_r31; + temp_r31 = lbl_1_bss_2C->data; + temp_r31 += arg0; + if (arg1 == -1) { + return 0; + } + return temp_r31->unk4[temp_r31->unk16C[arg1]].unk0; } void fn_1_66DC(s16 *arg0, s16 arg1, s16 arg2); void fn_1_4798(Work2110 *arg0) { - s16 temp_r31; - s16 sp10[10]; - Unk2110Obj *sp8[2]; - fn_1_66DC(sp10, 0, 10); - sp8[0] = &arg0[0].unk4[0]; - sp8[1] = &arg0[1].unk4[0]; - for(temp_r31=0; temp_r31<10; temp_r31++, sp8[0]++, sp8[1]++) { - sp8[0]->unk1A = lbl_1_bss_34[sp10[temp_r31]]; - sp8[1]->unk1A = lbl_1_bss_34[sp10[temp_r31]+10]; - sp8[0]->unk18 = sp8[1]->unk18 = (sp10[temp_r31] < 5) ? sp10[temp_r31] : sp10[temp_r31]-5; - } + s16 temp_r31; + s16 sp10[10]; + Unk2110Obj *sp8[2]; + fn_1_66DC(sp10, 0, 10); + sp8[0] = &arg0[0].unk4[0]; + sp8[1] = &arg0[1].unk4[0]; + for (temp_r31 = 0; temp_r31 < 10; temp_r31++, sp8[0]++, sp8[1]++) { + sp8[0]->unk1A = lbl_1_bss_34[sp10[temp_r31]]; + sp8[1]->unk1A = lbl_1_bss_34[sp10[temp_r31] + 10]; + sp8[0]->unk18 = sp8[1]->unk18 = (sp10[temp_r31] < 5) ? sp10[temp_r31] : sp10[temp_r31] - 5; + } } void fn_1_48D0(Work2110 *arg0) { - float temp_f31; - s16 temp_r31; - s16 temp_r30; - for(temp_r30=0; temp_r30<10; temp_r30++) { - temp_f31 = arg0->unk0+arg0->unk4[temp_r30].unk4; - temp_r31 = (temp_f31/360.0f)*10.0f; - if(temp_r31 >= 10) { - temp_r31 -= 10; - } else if(temp_r31 < 0) { - temp_r31 += 10; - } - arg0->unk16C[temp_r31] = temp_r30; - } + float temp_f31; + s16 temp_r31; + s16 temp_r30; + for (temp_r30 = 0; temp_r30 < 10; temp_r30++) { + temp_f31 = arg0->unk0 + arg0->unk4[temp_r30].unk4; + temp_r31 = (temp_f31 / 360.0f) * 10.0f; + if (temp_r31 >= 10) { + temp_r31 -= 10; + } + else if (temp_r31 < 0) { + temp_r31 += 10; + } + arg0->unk16C[temp_r31] = temp_r30; + } } void fn_1_498C(s16 arg0, Work2110 *arg1) { - float temp_f31; - Unk2110Obj *temp_r31; - Bss12CStruct *temp_r30; - s16 temp_r29; - temp_r31 = &arg1->unk4[0]; - temp_r30 = &lbl_1_bss_12C[arg0]; - for(temp_r29=0; temp_r29<10; temp_r29++, temp_r31++) { - temp_f31 = arg1->unk0+temp_r31->unk4; - if(temp_f31 >= 360.0f) { - temp_f31 -= 360.0f; - } - temp_r31->unkC.x = temp_r30->unkC.x+(153.0*sind(temp_f31)); - temp_r31->unkC.z = temp_r30->unkC.z+(153.0*cosd(temp_f31)); - temp_r31->unk8 = atan2d(temp_r30->unkC.x-temp_r31->unkC.x, temp_r30->unkC.z-temp_r31->unkC.z); - } + float temp_f31; + Unk2110Obj *temp_r31; + Bss12CStruct *temp_r30; + s16 temp_r29; + temp_r31 = &arg1->unk4[0]; + temp_r30 = &lbl_1_bss_12C[arg0]; + for (temp_r29 = 0; temp_r29 < 10; temp_r29++, temp_r31++) { + temp_f31 = arg1->unk0 + temp_r31->unk4; + if (temp_f31 >= 360.0f) { + temp_f31 -= 360.0f; + } + temp_r31->unkC.x = temp_r30->unkC.x + (153.0 * sind(temp_f31)); + temp_r31->unkC.z = temp_r30->unkC.z + (153.0 * cosd(temp_f31)); + temp_r31->unk8 = atan2d(temp_r30->unkC.x - temp_r31->unkC.x, temp_r30->unkC.z - temp_r31->unkC.z); + } } s16 fn_1_4B14(s16 arg0, s16 arg1, s16 *arg2) { - Unk2110Obj *temp_r31; - s16 temp_r30; - Work2110 *temp_r29; - temp_r29 = lbl_1_bss_2C->data; - *arg2 = 0; - temp_r29 += arg0; - temp_r31 = &temp_r29->unk4[temp_r29->unk16C[arg1]]; - if(temp_r31->unk0 & 0x1) { - return -1; - } - temp_r31->unk0 |= 0x1; - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(!lbl_1_bss_12C[arg0].unk134[temp_r30] && lbl_1_bss_5C.unkC[temp_r30] == temp_r31->unk18) { - *arg2 = 1; - lbl_1_bss_12C[arg0].unk134[temp_r30] = 1; - temp_r31->unk0 |= 0x2; - temp_r31->unk18 = 0; - temp_r31->unk20 = 1; - Hu3DMotionTimeSet(lbl_1_bss_2C->model[arg0+1], 0); - Hu3DModelAttrReset(lbl_1_bss_2C->model[arg0+1], 0x40000002); - HuAudFXPlay(9); - break; - } - - } - return temp_r31->unk1C; + Unk2110Obj *temp_r31; + s16 temp_r30; + Work2110 *temp_r29; + temp_r29 = lbl_1_bss_2C->data; + *arg2 = 0; + temp_r29 += arg0; + temp_r31 = &temp_r29->unk4[temp_r29->unk16C[arg1]]; + if (temp_r31->unk0 & 0x1) { + return -1; + } + temp_r31->unk0 |= 0x1; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (!lbl_1_bss_12C[arg0].unk134[temp_r30] && lbl_1_bss_5C.unkC[temp_r30] == temp_r31->unk18) { + *arg2 = 1; + lbl_1_bss_12C[arg0].unk134[temp_r30] = 1; + temp_r31->unk0 |= 0x2; + temp_r31->unk18 = 0; + temp_r31->unk20 = 1; + Hu3DMotionTimeSet(lbl_1_bss_2C->model[arg0 + 1], 0); + Hu3DModelAttrReset(lbl_1_bss_2C->model[arg0 + 1], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(9); + break; + } + } + return temp_r31->unk1C; } s16 fn_1_4CDC(s16 arg0, s16 arg1) { - Work2110 *temp_r31; - Unk2110Obj *temp_r30; - temp_r31 = lbl_1_bss_2C->data; - temp_r31 += arg0; - temp_r30 = &temp_r31->unk4[temp_r31->unk16C[arg1]]; - if(temp_r30->unk0 & 0x1) { - return 0; - } else { - return 1; - } + Work2110 *temp_r31; + Unk2110Obj *temp_r30; + temp_r31 = lbl_1_bss_2C->data; + temp_r31 += arg0; + temp_r30 = &temp_r31->unk4[temp_r31->unk16C[arg1]]; + if (temp_r30->unk0 & 0x1) { + return 0; + } + else { + return 1; + } } void fn_1_4D4C(void) { - lbl_1_bss_5C.unkC[0] = rand16()%5; - lbl_1_bss_5C.unkC[1] = rand16()%5; - lbl_1_bss_12C[0].unk134[0] = lbl_1_bss_12C[0].unk134[1] = 0; - lbl_1_bss_12C[1].unk134[0] = lbl_1_bss_12C[1].unk134[1] = 0; + lbl_1_bss_5C.unkC[0] = rand16() % 5; + lbl_1_bss_5C.unkC[1] = rand16() % 5; + lbl_1_bss_12C[0].unk134[0] = lbl_1_bss_12C[0].unk134[1] = 0; + lbl_1_bss_12C[1].unk134[0] = lbl_1_bss_12C[1].unk134[1] = 0; } void fn_1_6638(s16 *arg0, s16 arg1); void fn_1_4E30(s16 arg0, Bss61CWork *arg1) { - s16 sp1E[10]; - s16 spA[10]; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - Work2110 *temp_r27; - Unk2110Obj *temp_r26; - temp_r27 = lbl_1_bss_2C->data; - for(temp_r30=0; temp_r30<10; temp_r30++) { - sp1E[temp_r30] = spA[temp_r30] = 0; - } - for(temp_r30=0; temp_r30<8; temp_r30++) { - arg1->unk5E[temp_r30] = -1; - } - temp_r27 += arg0; - for(temp_r28=0, temp_r29=0; temp_r28<2; temp_r28++) { - for(temp_r30=0; temp_r30<10; temp_r30++) { - temp_r26 = &temp_r27->unk4[temp_r27->unk16C[temp_r30]]; - if(temp_r26->unk18 == lbl_1_bss_5C.unkC[temp_r28] && !sp1E[temp_r30]) { - arg1->unk5E[temp_r29++] = temp_r30; - sp1E[temp_r30] = 1; - } - } - } - for(temp_r28=0, temp_r30=0; temp_r28<10; temp_r28++) { - if(!sp1E[temp_r28]) { - spA[temp_r30++] = temp_r28; - } - } - fn_1_6638(spA, temp_r30); - temp_r30 = 0; - if(temp_r29 == 2) { - temp_r29 += 2; - } - - while(1) { - if(temp_r29 >= 8) { - break; - } - arg1->unk5E[temp_r29++] = spA[temp_r30++]; - } - arg1->unk70 = 0; - temp_r29 = arg1->unk14->unk4; - switch(GWPlayerCfg[arg1->unk4].diff) { - case 0: - arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16()%3)+2) : ((rand16()%3)+1); - arg1->unk6E = 8; - break; - - case 1: - arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16()%3)+1) : ((rand16()%3)+0); - arg1->unk6E = 7; - break; - - case 2: - arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16()%3)+0) : ((rand16()%2)+0); - arg1->unk6E = 6; - break; - - case 3: - arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16()%2)+0) : 0; - arg1->unk6E = 5; - break; - } - if(arg1->unk6E < 4) { - arg1->unk6E = 4; - } + s16 sp1E[10]; + s16 spA[10]; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + Work2110 *temp_r27; + Unk2110Obj *temp_r26; + temp_r27 = lbl_1_bss_2C->data; + for (temp_r30 = 0; temp_r30 < 10; temp_r30++) { + sp1E[temp_r30] = spA[temp_r30] = 0; + } + for (temp_r30 = 0; temp_r30 < 8; temp_r30++) { + arg1->unk5E[temp_r30] = -1; + } + temp_r27 += arg0; + for (temp_r28 = 0, temp_r29 = 0; temp_r28 < 2; temp_r28++) { + for (temp_r30 = 0; temp_r30 < 10; temp_r30++) { + temp_r26 = &temp_r27->unk4[temp_r27->unk16C[temp_r30]]; + if (temp_r26->unk18 == lbl_1_bss_5C.unkC[temp_r28] && !sp1E[temp_r30]) { + arg1->unk5E[temp_r29++] = temp_r30; + sp1E[temp_r30] = 1; + } + } + } + for (temp_r28 = 0, temp_r30 = 0; temp_r28 < 10; temp_r28++) { + if (!sp1E[temp_r28]) { + spA[temp_r30++] = temp_r28; + } + } + fn_1_6638(spA, temp_r30); + temp_r30 = 0; + if (temp_r29 == 2) { + temp_r29 += 2; + } + + while (1) { + if (temp_r29 >= 8) { + break; + } + arg1->unk5E[temp_r29++] = spA[temp_r30++]; + } + arg1->unk70 = 0; + temp_r29 = arg1->unk14->unk4; + switch (GWPlayerCfg[arg1->unk4].diff) { + case 0: + arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16() % 3) + 2) : ((rand16() % 3) + 1); + arg1->unk6E = 8; + break; + + case 1: + arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16() % 3) + 1) : ((rand16() % 3) + 0); + arg1->unk6E = 7; + break; + + case 2: + arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16() % 3) + 0) : ((rand16() % 2) + 0); + arg1->unk6E = 6; + break; + + case 3: + arg1->unk72 = (GWPlayerCfg[temp_r29].iscom) ? ((rand16() % 2) + 0) : 0; + arg1->unk6E = 5; + break; + } + if (arg1->unk6E < 4) { + arg1->unk6E = 4; + } } void fn_1_5524(void); @@ -1506,397 +1488,401 @@ Unk72B4Data18 *fn_1_6B34(s16 arg0, Vec *arg1, Vec *arg2, float arg3, GXColor *ar void fn_1_52D8(void) { - Bss5CStruct *temp_r31; - s16 temp_r30; - Unk72B4Data18 *temp_r29; - Vec sp18; - Vec spC; - GXColor sp8 = { 255, 255, 255, 255 }; - temp_r31 = &lbl_1_bss_5C; - sp18.x = 0; - sp18.y = 200; - sp18.z = -300; - spC.x = spC.z = 1; - spC.y = 0.5f; - fn_1_6B34(temp_r31->unk0[0], &sp18, &spC, 0, &sp8); - for(temp_r30=0; temp_r30<2; temp_r30++) { - sp18.x = (temp_r30 == 0) ? -60.0f : 60.0f; - sp18.y = 220; - sp18.z = -290; - spC.x = spC.y = spC.z = 1; - temp_r29 = fn_1_6B34(temp_r31->unk0[temp_r31->unkC[temp_r30]+1], &sp18, &spC, 0, &sp8); - temp_r29->unk28 = temp_r30; - } - fn_1_5524(); + Bss5CStruct *temp_r31; + s16 temp_r30; + Unk72B4Data18 *temp_r29; + Vec sp18; + Vec spC; + GXColor sp8 = { 255, 255, 255, 255 }; + temp_r31 = &lbl_1_bss_5C; + sp18.x = 0; + sp18.y = 200; + sp18.z = -300; + spC.x = spC.z = 1; + spC.y = 0.5f; + fn_1_6B34(temp_r31->unk0[0], &sp18, &spC, 0, &sp8); + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + sp18.x = (temp_r30 == 0) ? -60.0f : 60.0f; + sp18.y = 220; + sp18.z = -290; + spC.x = spC.y = spC.z = 1; + temp_r29 = fn_1_6B34(temp_r31->unk0[temp_r31->unkC[temp_r30] + 1], &sp18, &spC, 0, &sp8); + temp_r29->unk28 = temp_r30; + } + fn_1_5524(); } Work72B4 *fn_1_7218(s16 arg0); void fn_1_5480(void) { - Work72B4 *temp_r31; - Bss5CStruct *temp_r30 = &lbl_1_bss_5C; - s16 temp_r29; - temp_r31 = fn_1_7218(temp_r30->unk0[0]); - temp_r31->unk18[0].unk56 = 0; - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_r31 = fn_1_7218(temp_r30->unk0[temp_r30->unkC[temp_r29]+1]); - temp_r31->unk18[0].unk56 = temp_r31->unk18[1].unk56 = 0; - - } + Work72B4 *temp_r31; + Bss5CStruct *temp_r30 = &lbl_1_bss_5C; + s16 temp_r29; + temp_r31 = fn_1_7218(temp_r30->unk0[0]); + temp_r31->unk18[0].unk56 = 0; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_r31 = fn_1_7218(temp_r30->unk0[temp_r30->unkC[temp_r29] + 1]); + temp_r31->unk18[0].unk56 = temp_r31->unk18[1].unk56 = 0; + } } void fn_1_5524(void) { - float temp_f30; - Bss5CStruct *temp_r31; - Work72B4 *temp_r30; - s16 temp_r29; - s16 temp_r28; - temp_r31 = &lbl_1_bss_5C; - temp_r30 = fn_1_7218(temp_r31->unk0[0]); - temp_r30->unk18[0].unk48.x = temp_r31->unk18; - for(temp_r28=0; temp_r28<2; temp_r28++) { - temp_r30 = fn_1_7218(temp_r31->unk0[temp_r31->unkC[temp_r28]+1]); - for(temp_r29=0; temp_r29<2; temp_r29++) { - if(temp_r30->unk18[temp_r29].unk56) { - temp_f30 = (temp_r30->unk18[temp_r29].unk28 == 0) ? -60.0f : 60.0f; - temp_r30->unk18[temp_r29].unk48.x = temp_f30+temp_r31->unk18; - } - } - } - + float temp_f30; + Bss5CStruct *temp_r31; + Work72B4 *temp_r30; + s16 temp_r29; + s16 temp_r28; + temp_r31 = &lbl_1_bss_5C; + temp_r30 = fn_1_7218(temp_r31->unk0[0]); + temp_r30->unk18[0].unk48.x = temp_r31->unk18; + for (temp_r28 = 0; temp_r28 < 2; temp_r28++) { + temp_r30 = fn_1_7218(temp_r31->unk0[temp_r31->unkC[temp_r28] + 1]); + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + if (temp_r30->unk18[temp_r29].unk56) { + temp_f30 = (temp_r30->unk18[temp_r29].unk28 == 0) ? -60.0f : 60.0f; + temp_r30->unk18[temp_r29].unk48.x = temp_f30 + temp_r31->unk18; + } + } + } } void fn_1_566C(s16 arg0) { - ModelData *sp8 = &Hu3DData[lbl_1_bss_2C->model[5]]; - lbl_1_bss_5C.unk14 = 0; - lbl_1_bss_5C.unk12 = 0; - lbl_1_bss_5C.unk10 = arg0; - lbl_1_bss_5C.unk20 = lbl_1_bss_5C.unk34 = 0; - lbl_1_bss_5C.unk28[1] = lbl_1_bss_5C.unk28[0]; + ModelData *sp8 = &Hu3DData[lbl_1_bss_2C->model[5]]; + lbl_1_bss_5C.unk14 = 0; + lbl_1_bss_5C.unk12 = 0; + lbl_1_bss_5C.unk10 = arg0; + lbl_1_bss_5C.unk20 = lbl_1_bss_5C.unk34 = 0; + lbl_1_bss_5C.unk28[1] = lbl_1_bss_5C.unk28[0]; } void fn_1_5708(void) { - Bss5CStruct *temp_r31; - ModelData *temp_r30; - WorkA44 *temp_r29; - temp_r30 = &Hu3DData[lbl_1_bss_2C->model[5]]; - temp_r29 = lbl_1_bss_30->data; - temp_r31 = &lbl_1_bss_5C; - switch(temp_r31->unk10) { - case 0: - if(temp_r30->unk_08 != lbl_1_bss_2C->motion[0]) { - Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[0], 0, 8, 0x40000001); - } - break; - - case 1: - if(temp_r31->unk12 == 0) { - temp_r31->unk12 = 1; - Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[1], 0, 8, 0); - } else { - if(temp_r30->unk_0C == -1) { - if(temp_r30->unk_64 >= Hu3DMotionMaxTimeGet(lbl_1_bss_2C->model[5])) { - temp_r31->unk16 = rand16()%2; - temp_r31->unk12 = 0; - temp_r31->unk10 = 2; - } - } - } - break; - - case 2: - if(temp_r31->unk12 == 0) { - temp_r31->unk12 = 1; - Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[5], 0, 8, 0x40000001); - } else { - if(temp_r29->unkA < 180) { - temp_r31->unk12 = 0; - temp_r31->unk10 = 5; - } - } - break; - - case 3: - if(temp_r31->unk12 == 0) { - temp_r31->unk12 = 1; - Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[2], 0, 8, 0x40000001); - } else { - if(temp_r30->unk_0C == -1) { - if(temp_r30->unk_64 >= Hu3DMotionMaxTimeGet(lbl_1_bss_2C->model[5])-1.0f) { - if(++temp_r31->unk14 > 1) { - temp_r31->unk12 = 0; - temp_r31->unk10 = 0; - } - } - } - } - break; - - case 4: - if(temp_r31->unk12 == 0) { - temp_r31->unk12 = 1; - Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[3], 0, 8, 0); - } else { - if(temp_r30->unk_0C == -1) { - if(temp_r30->unk_64 >= Hu3DMotionMaxTimeGet(lbl_1_bss_2C->model[5])) { - temp_r31->unk12 = 0; - temp_r31->unk10 = 0; - } - } - } - break; - - case 5: - if(temp_r31->unk12 == 0) { - temp_r31->unk12 = 1; - Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[6], 0, 8, 0x40000001); - } - break; - } - temp_r30->pos.x = temp_r31->unk18; - temp_r30->rot.y = temp_r31->unk28[0]; + Bss5CStruct *temp_r31; + ModelData *temp_r30; + WorkA44 *temp_r29; + temp_r30 = &Hu3DData[lbl_1_bss_2C->model[5]]; + temp_r29 = lbl_1_bss_30->data; + temp_r31 = &lbl_1_bss_5C; + switch (temp_r31->unk10) { + case 0: + if (temp_r30->unk_08 != lbl_1_bss_2C->motion[0]) { + Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[0], 0, 8, HU3D_MOTATTR_LOOP); + } + break; + + case 1: + if (temp_r31->unk12 == 0) { + temp_r31->unk12 = 1; + Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[1], 0, 8, HU3D_MOTATTR_NONE); + } + else { + if (temp_r30->unk_0C == -1) { + if (temp_r30->unk_64 >= Hu3DMotionMaxTimeGet(lbl_1_bss_2C->model[5])) { + temp_r31->unk16 = rand16() % 2; + temp_r31->unk12 = 0; + temp_r31->unk10 = 2; + } + } + } + break; + + case 2: + if (temp_r31->unk12 == 0) { + temp_r31->unk12 = 1; + Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[5], 0, 8, HU3D_MOTATTR_LOOP); + } + else { + if (temp_r29->unkA < (3 * REFRESH_RATE)) { + temp_r31->unk12 = 0; + temp_r31->unk10 = 5; + } + } + break; + + case 3: + if (temp_r31->unk12 == 0) { + temp_r31->unk12 = 1; + Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[2], 0, 8, HU3D_MOTATTR_LOOP); + } + else { + if (temp_r30->unk_0C == -1) { + if (temp_r30->unk_64 >= Hu3DMotionMaxTimeGet(lbl_1_bss_2C->model[5]) - 1.0f) { + if (++temp_r31->unk14 > 1) { + temp_r31->unk12 = 0; + temp_r31->unk10 = 0; + } + } + } + } + break; + + case 4: + if (temp_r31->unk12 == 0) { + temp_r31->unk12 = 1; + Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[3], 0, 8, HU3D_MOTATTR_NONE); + } + else { + if (temp_r30->unk_0C == -1) { + if (temp_r30->unk_64 >= Hu3DMotionMaxTimeGet(lbl_1_bss_2C->model[5])) { + temp_r31->unk12 = 0; + temp_r31->unk10 = 0; + } + } + } + break; + + case 5: + if (temp_r31->unk12 == 0) { + temp_r31->unk12 = 1; + Hu3DMotionShiftSet(lbl_1_bss_2C->model[5], lbl_1_bss_2C->motion[6], 0, 8, HU3D_MOTATTR_LOOP); + } + break; + } + temp_r30->pos.x = temp_r31->unk18; + temp_r30->rot.y = temp_r31->unk28[0]; } void fn_1_5B70(float arg0, float arg1, float arg2, s16 arg3, unkHook72B4Data18 arg4, s16 arg5) { - Vec sp2C; - Vec sp20; - GXColor sp1A; - float temp_f31; - float temp_f30; - - Unk72B4Data18 *temp_r31; - s16 temp_r30; - temp_f30 = 360.0f/arg3; - temp_f31 = rand16()%361; - for(temp_r30=0; temp_r30model[0], &sp2C, &sp20, 0, &sp1A); - if(!temp_r31) { - break; - } - temp_r31->unk30 = arg4; - temp_r31->unk2C = arg5; - temp_r31->unk28 = 0; - temp_r31->unk2A = (rand16()%2)+2; - temp_r31->unk0.x = 3.5*sind(temp_f31); - temp_r31->unk0.y = 0.01f*((rand16()%16)+20); - temp_r31->unk0.z = 3.5*cosd(temp_f31); - temp_r31->unkC.x = temp_r31->unk0.x*0.03f; - temp_r31->unkC.y = temp_r31->unk0.y*0.03f; - temp_r31->unkC.z = temp_r31->unk0.z*0.03f; - } + Vec sp2C; + Vec sp20; + GXColor sp1A; + float temp_f31; + float temp_f30; + + Unk72B4Data18 *temp_r31; + s16 temp_r30; + temp_f30 = 360.0f / arg3; + temp_f31 = rand16() % 361; + for (temp_r30 = 0; temp_r30 < arg3; temp_r30++, temp_f31 += temp_f30) { + sp2C.x = arg0 + ((rand16() % 21) - 10); + sp2C.y = arg1 + ((rand16() % 21) - 10); + sp2C.z = arg2 + ((rand16() % 21) - 10); + sp20.x = sp20.y = sp20.z = 0.1f * ((rand16() % 11) + 15); + sp1A.r = sp1A.g = sp1A.b = (rand16() % 128) + 128; + sp1A.a = 128; + temp_r31 = fn_1_6B34(lbl_1_bss_30->model[0], &sp2C, &sp20, 0, &sp1A); + if (!temp_r31) { + break; + } + temp_r31->unk30 = arg4; + temp_r31->unk2C = arg5; + temp_r31->unk28 = 0; + temp_r31->unk2A = (rand16() % 2) + 2; + temp_r31->unk0.x = 3.5 * sind(temp_f31); + temp_r31->unk0.y = 0.01f * ((rand16() % 16) + 20); + temp_r31->unk0.z = 3.5 * cosd(temp_f31); + temp_r31->unkC.x = temp_r31->unk0.x * 0.03f; + temp_r31->unkC.y = temp_r31->unk0.y * 0.03f; + temp_r31->unkC.z = temp_r31->unk0.z * 0.03f; + } } void fn_1_6030(ModelData *arg0, Work72B4 *arg1, Mtx arg2) { - Unk72B4Data18 *temp_r31; - s16 temp_r29; - GXColor *temp_r28; - unkHook72B4Data18 temp_r27; - temp_r31 = arg1->unk18; - temp_r28 = arg1->unk24; - for(temp_r29=0; temp_r29unk0; temp_r29++, temp_r31++, temp_r28++) { - if(temp_r31->unk56 == 0){ - continue; - } - temp_r31->unk48.x += temp_r31->unk0.x; - temp_r31->unk48.y += temp_r31->unk0.y; - temp_r31->unk48.z += temp_r31->unk0.z; - temp_r31->unk0.x -= temp_r31->unkC.x; - temp_r31->unk0.y -= temp_r31->unkC.y; - temp_r31->unk0.z -= temp_r31->unkC.z; - temp_r31->unk28++; - if(temp_r31->unk28 >= temp_r31->unk2A) { - temp_r31->unk28 = 0; - temp_r31->unk54++; - } - if(temp_r31->unk54 >= arg1->unk14) { - temp_r31->unk30 = NULL; - temp_r31->unk56 = 0; - } else { - if(temp_r31->unk54 == 2 && temp_r31->unk30) { - temp_r27 = temp_r31->unk30; - temp_r27(temp_r31); - } - } - } + Unk72B4Data18 *temp_r31; + s16 temp_r29; + GXColor *temp_r28; + unkHook72B4Data18 temp_r27; + temp_r31 = arg1->unk18; + temp_r28 = arg1->unk24; + for (temp_r29 = 0; temp_r29 < arg1->unk0; temp_r29++, temp_r31++, temp_r28++) { + if (temp_r31->unk56 == 0) { + continue; + } + temp_r31->unk48.x += temp_r31->unk0.x; + temp_r31->unk48.y += temp_r31->unk0.y; + temp_r31->unk48.z += temp_r31->unk0.z; + temp_r31->unk0.x -= temp_r31->unkC.x; + temp_r31->unk0.y -= temp_r31->unkC.y; + temp_r31->unk0.z -= temp_r31->unkC.z; + temp_r31->unk28++; + if (temp_r31->unk28 >= temp_r31->unk2A) { + temp_r31->unk28 = 0; + temp_r31->unk54++; + } + if (temp_r31->unk54 >= arg1->unk14) { + temp_r31->unk30 = NULL; + temp_r31->unk56 = 0; + } + else { + if (temp_r31->unk54 == 2 && temp_r31->unk30) { + temp_r27 = temp_r31->unk30; + temp_r27(temp_r31); + } + } + } } void fn_1_6184(Vec *arg0, Bss12CInner *arg1) { - s16 temp_r31; - s16 temp_r30; - float spC[3]; - float temp_f29; - float temp_f28; - float temp_f27; - float temp_f26; - float temp_f25; - float temp_f24; - float temp_f23; - temp_f28 = arg0[1].x-arg0[0].x; - temp_f27 = arg0[1].y-arg0[0].y; - temp_f26 = arg0[1].z-arg0[0].z; - temp_f25 = arg0[2].x-arg0[0].x; - temp_f24 = arg0[2].y-arg0[0].y; - temp_f23 = arg0[2].z-arg0[0].z; - spC[0] = (temp_f27*temp_f23)-(temp_f26*temp_f24); - spC[1] = (temp_f26*temp_f25)-(temp_f28*temp_f23); - spC[2] = (temp_f28*temp_f24)-(temp_f27*temp_f25); - temp_f29 = VECMagPoint(spC[0], spC[1], spC[2]); - if(0.0f != temp_f29) { - spC[0] /= temp_f29; - spC[1] /= temp_f29; - spC[2] /= temp_f29; - } - arg1->unkC = (spC[0]*arg0[0].x)+(spC[1]*arg0[0].y)+(spC[2]*arg0[0].z); - temp_r30 = 0; - for(temp_r31=1; temp_r31<3; temp_r31++) { - if(ABS(spC[temp_r30]) < ABS(spC[temp_r31])) { - temp_r30 = temp_r31; - } - } - arg1->unk0.x = spC[0]; - arg1->unk0.y = spC[1]; - arg1->unk0.z = spC[2]; - arg1->unk10 = temp_r30; + s16 temp_r31; + s16 temp_r30; + float spC[3]; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + temp_f28 = arg0[1].x - arg0[0].x; + temp_f27 = arg0[1].y - arg0[0].y; + temp_f26 = arg0[1].z - arg0[0].z; + temp_f25 = arg0[2].x - arg0[0].x; + temp_f24 = arg0[2].y - arg0[0].y; + temp_f23 = arg0[2].z - arg0[0].z; + spC[0] = (temp_f27 * temp_f23) - (temp_f26 * temp_f24); + spC[1] = (temp_f26 * temp_f25) - (temp_f28 * temp_f23); + spC[2] = (temp_f28 * temp_f24) - (temp_f27 * temp_f25); + temp_f29 = VECMagPoint(spC[0], spC[1], spC[2]); + if (0.0f != temp_f29) { + spC[0] /= temp_f29; + spC[1] /= temp_f29; + spC[2] /= temp_f29; + } + arg1->unkC = (spC[0] * arg0[0].x) + (spC[1] * arg0[0].y) + (spC[2] * arg0[0].z); + temp_r30 = 0; + for (temp_r31 = 1; temp_r31 < 3; temp_r31++) { + if (ABS(spC[temp_r30]) < ABS(spC[temp_r31])) { + temp_r30 = temp_r31; + } + } + arg1->unk0.x = spC[0]; + arg1->unk0.y = spC[1]; + arg1->unk0.z = spC[2]; + arg1->unk10 = temp_r30; } float fn_1_6504(float arg0, float arg1, float arg2) { - float temp_f31 = arg1-arg0; - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } else if(temp_f31 < -180.0f) { - temp_f31 += 360.0f; - } - temp_f31 = arg0+(temp_f31*arg2); - if(temp_f31 >= 360.0f) { - temp_f31 -= 360.0f; - } else if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - return temp_f31; + float temp_f31 = arg1 - arg0; + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + else if (temp_f31 < -180.0f) { + temp_f31 += 360.0f; + } + temp_f31 = arg0 + (temp_f31 * arg2); + if (temp_f31 >= 360.0f) { + temp_f31 -= 360.0f; + } + else if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + return temp_f31; } float fn_1_65CC(float arg0, float arg1, float arg2) { - return arg0+(arg2*(arg1-arg0)); + return arg0 + (arg2 * (arg1 - arg0)); } float fn_1_65DC(float arg0, float arg1, float arg2, float arg3) { - float temp_f31 = 1.0f-arg3; - return (arg0*(temp_f31*temp_f31))+((2.0f*temp_f31)*arg3*arg1)+(arg2*(arg3*arg3)); + float temp_f31 = 1.0f - arg3; + return (arg0 * (temp_f31 * temp_f31)) + ((2.0f * temp_f31) * arg3 * arg1) + (arg2 * (arg3 * arg3)); } void fn_1_6638(s16 *arg0, s16 arg1) { - s16 temp_r31; - s16 spCE[99]; - s16 sp8[99]; - memcpy(sp8, arg0, arg1*sizeof(s16)); - fn_1_66DC(spCE, 0, arg1); - for(temp_r31=0; temp_r31=0; temp_r31--) { - temp_r29 = rand16()%(s16)(temp_r31+1); - temp_r28 = arg0[temp_r31]; - arg0[temp_r31] = arg0[temp_r29]; - arg0[temp_r29] = temp_r28; - } + s16 temp_r31; + s16 temp_r29; + s16 temp_r28; + for (temp_r31 = 0; temp_r31 < arg2; temp_r31++) { + arg0[temp_r31] = arg1 + temp_r31; + } + for (temp_r31 = arg2 - 1; temp_r31 >= 0; temp_r31--) { + temp_r29 = rand16() % (s16)(temp_r31 + 1); + temp_r28 = arg0[temp_r31]; + arg0[temp_r31] = arg0[temp_r29]; + arg0[temp_r29] = temp_r28; + } } void fn_1_67C0(void) { - if(HuPadBtnDown[0] & PAD_TRIGGER_L) { - lbl_1_bss_12 ^= 1; - } - if(lbl_1_bss_12 == 0) { - return; - } - if(HuPadBtn[0] & PAD_BUTTON_LEFT) { - CRot.y++; - } - if(HuPadBtn[0] & PAD_BUTTON_RIGHT) { - CRot.y--; - } - if(HuPadBtn[0] & PAD_BUTTON_UP) { - CRot.x--; - } - if(HuPadBtn[0] & PAD_BUTTON_DOWN) { - CRot.x++; - } - Center.x += HuPadSubStkX[0]; - if(HuPadBtn[0] & PAD_TRIGGER_R) { - Center.y += HuPadSubStkY[0]; - } else { - Center.z += HuPadSubStkY[0]; - } - if(HuPadBtn[0] & PAD_BUTTON_X) { - CZoom += 10; - } - if(HuPadBtn[0] & PAD_BUTTON_Y) { - CZoom -= 10; - } - if(HuPadBtnDown[0] & PAD_BUTTON_A) { - OSReport("\nCZoom = %.2f \n", CZoom); - OSReport("Center x = %.2f: y = %.2f: z = %.2f \n", Center.x, Center.y, Center.z); - OSReport("CRot x = %.2f: y = %.2f: z = %.2f \n", CRot.x, CRot.y, CRot.z); - } - + if (HuPadBtnDown[0] & PAD_TRIGGER_L) { + lbl_1_bss_12 ^= 1; + } + if (lbl_1_bss_12 == 0) { + return; + } + if (HuPadBtn[0] & PAD_BUTTON_LEFT) { + CRot.y++; + } + if (HuPadBtn[0] & PAD_BUTTON_RIGHT) { + CRot.y--; + } + if (HuPadBtn[0] & PAD_BUTTON_UP) { + CRot.x--; + } + if (HuPadBtn[0] & PAD_BUTTON_DOWN) { + CRot.x++; + } + Center.x += HuPadSubStkX[0]; + if (HuPadBtn[0] & PAD_TRIGGER_R) { + Center.y += HuPadSubStkY[0]; + } + else { + Center.z += HuPadSubStkY[0]; + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + CZoom += 10; + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + CZoom -= 10; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + OSReport("\nCZoom = %.2f \n", CZoom); + OSReport("Center x = %.2f: y = %.2f: z = %.2f \n", Center.x, Center.y, Center.z); + OSReport("CRot x = %.2f: y = %.2f: z = %.2f \n", CRot.x, CRot.y, CRot.z); + } } Unk72B4Data18 *fn_1_6B34(s16 arg0, Vec *arg1, Vec *arg2, float arg3, GXColor *arg4) { - Unk72B4Data18 *temp_r31; - Work72B4 *temp_r30; - s16 temp_r29; - ModelData *temp_r28; - temp_r28 = &Hu3DData[arg0]; - temp_r30 = temp_r28->unk_120; - for(temp_r29 = 0, temp_r31 = temp_r30->unk18; temp_r29unk0; temp_r29++, temp_r31++) { - if(!temp_r31->unk56) { - break; - } - } - if(temp_r29 == temp_r30->unk0) { - return NULL; - } - temp_r30->unk24[temp_r29].r = arg4->r; - temp_r30->unk24[temp_r29].g = arg4->g; - temp_r30->unk24[temp_r29].b = arg4->b; - temp_r30->unk24[temp_r29].a = arg4->a; - temp_r31->unk34 = temp_r29; - temp_r31->unk38 = arg3; - temp_r31->unk3C = *arg2; - temp_r31->unk48 = *arg1; - temp_r31->unk54 = 0; - temp_r31->unk30 = NULL; - temp_r31->unk56 = 1; - return temp_r31; + Unk72B4Data18 *temp_r31; + Work72B4 *temp_r30; + s16 temp_r29; + ModelData *temp_r28; + temp_r28 = &Hu3DData[arg0]; + temp_r30 = temp_r28->unk_120; + for (temp_r29 = 0, temp_r31 = temp_r30->unk18; temp_r29 < temp_r30->unk0; temp_r29++, temp_r31++) { + if (!temp_r31->unk56) { + break; + } + } + if (temp_r29 == temp_r30->unk0) { + return NULL; + } + temp_r30->unk24[temp_r29].r = arg4->r; + temp_r30->unk24[temp_r29].g = arg4->g; + temp_r30->unk24[temp_r29].b = arg4->b; + temp_r30->unk24[temp_r29].a = arg4->a; + temp_r31->unk34 = temp_r29; + temp_r31->unk38 = arg3; + temp_r31->unk3C = *arg2; + temp_r31->unk48 = *arg1; + temp_r31->unk54 = 0; + temp_r31->unk30 = NULL; + temp_r31->unk56 = 1; + return temp_r31; } void fn_1_72B4(ModelData *model, Mtx mtx); @@ -1904,136 +1890,137 @@ void fn_1_7824(HsfVector2f *arg0, s16 arg1, s16 arg2, float arg3, float arg4); s16 fn_1_6C74(AnimData *arg0, s16 arg1, float arg2, s16 arg3, s16 arg4) { - Work72B4 *temp_r31; - s16 temp_r30; - HsfVector2f *temp_r29; - ModelData *temp_r28; - GXColor *temp_r27; - Vec *temp_r25; - Unk72B4Data18 *temp_r24; - s16 temp_r22; - void *temp_r21; - s16 temp_r20; - s16 temp_r19; - void *temp_r18; - temp_r20 = Hu3DHookFuncCreate(fn_1_72B4); - temp_r28 = &Hu3DData[temp_r20]; - temp_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(Work72B4), temp_r28->unk_48); - temp_r28->unk_120 = temp_r31; - arg0->useNum++; - temp_r31->unk10 = arg0; - temp_r31->unk0 = arg1; - temp_r31->unk8 = 0; - temp_r31->unkC = 0; - temp_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1*sizeof(Unk72B4Data18), temp_r28->unk_48); - temp_r31->unk18 = temp_r24; - for(temp_r30=0; temp_r30unk54 = -1; - temp_r24->unk56 = 0; - } - temp_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1*sizeof(Vec)*4, temp_r28->unk_48); - temp_r31->unk1C = temp_r25; - for(temp_r30=0; temp_r30x = temp_r25->y = temp_r25->z = 0; - } - temp_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1*sizeof(GXColor), temp_r28->unk_48); - temp_r31->unk24 = temp_r27; - for(temp_r30=0; temp_r30r = temp_r27->g = temp_r27->b = temp_r27->a = 255; - } - temp_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1*sizeof(HsfVector2f)*4, temp_r28->unk_48); - temp_r31->unk20 = temp_r29; - for(temp_r30=0; temp_r30x = 0; - temp_r29->y = 0; - temp_r29++; - temp_r29->x = 1; - temp_r29->y = 0; - temp_r29++; - temp_r29->x = 1; - temp_r29->y = 1; - temp_r29++; - temp_r29->x = 0; - temp_r29->y = 1; - temp_r29++; - } - if(arg3 != 0 || arg4 != 0) { - temp_r22 = arg0->bmp->sizeX/arg3; - temp_r19 = arg0->bmp->sizeY/arg4; - temp_r31->unk14 = temp_r22*temp_r19; - temp_r31->unk60 = 1.0f/temp_r22; - temp_r31->unk64 = 1.0f/temp_r19; - } else { - temp_r22 = 1; - temp_r31->unk14 = 1; - temp_r31->unk60 = 1; - temp_r31->unk64 = 1; - } - temp_r31->unk5C = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk14*sizeof(HsfVector2f), temp_r28->unk_48); - fn_1_7824(temp_r31->unk5C, temp_r31->unk14, temp_r22, temp_r31->unk60, temp_r31->unk64); - temp_r31->unk2C[0].x = temp_r31->unk2C[3].x = temp_r31->unk2C[2].y = temp_r31->unk2C[3].y = -arg2; - temp_r31->unk2C[1].x = temp_r31->unk2C[2].x = temp_r31->unk2C[0].y = temp_r31->unk2C[1].y = arg2; - temp_r31->unk2C[0].z = temp_r31->unk2C[1].z = temp_r31->unk2C[2].z = temp_r31->unk2C[3].z = 0; - temp_r21 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48); - temp_r18 = temp_r21; - DCFlushRange(temp_r21, 0x20000); - GXBeginDisplayList(temp_r18, 0x20000); - GXBegin(GX_QUADS, GX_VTXFMT0, 4*arg1); - for(temp_r30=0; temp_r30unk4 = GXEndDisplayList(); - temp_r31->unk28 = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk4, temp_r28->unk_48); - memcpy(temp_r31->unk28, temp_r21, temp_r31->unk4); - DCFlushRange(temp_r31->unk28, temp_r31->unk4); - HuMemDirectFree(temp_r21); - return temp_r20; + Work72B4 *temp_r31; + s16 temp_r30; + HsfVector2f *temp_r29; + ModelData *temp_r28; + GXColor *temp_r27; + Vec *temp_r25; + Unk72B4Data18 *temp_r24; + s16 temp_r22; + void *temp_r21; + s16 temp_r20; + s16 temp_r19; + void *temp_r18; + temp_r20 = Hu3DHookFuncCreate(fn_1_72B4); + temp_r28 = &Hu3DData[temp_r20]; + temp_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(Work72B4), temp_r28->unk_48); + temp_r28->unk_120 = temp_r31; + arg0->useNum++; + temp_r31->unk10 = arg0; + temp_r31->unk0 = arg1; + temp_r31->unk8 = 0; + temp_r31->unkC = 0; + temp_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Unk72B4Data18), temp_r28->unk_48); + temp_r31->unk18 = temp_r24; + for (temp_r30 = 0; temp_r30 < arg1; temp_r30++, temp_r24++) { + temp_r24->unk54 = -1; + temp_r24->unk56 = 0; + } + temp_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, temp_r28->unk_48); + temp_r31->unk1C = temp_r25; + for (temp_r30 = 0; temp_r30 < arg1 * 4; temp_r30++, temp_r25++) { + temp_r25->x = temp_r25->y = temp_r25->z = 0; + } + temp_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(GXColor), temp_r28->unk_48); + temp_r31->unk24 = temp_r27; + for (temp_r30 = 0; temp_r30 < arg1; temp_r30++, temp_r27++) { + temp_r27->r = temp_r27->g = temp_r27->b = temp_r27->a = 255; + } + temp_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(HsfVector2f) * 4, temp_r28->unk_48); + temp_r31->unk20 = temp_r29; + for (temp_r30 = 0; temp_r30 < arg1; temp_r30++) { + temp_r29->x = 0; + temp_r29->y = 0; + temp_r29++; + temp_r29->x = 1; + temp_r29->y = 0; + temp_r29++; + temp_r29->x = 1; + temp_r29->y = 1; + temp_r29++; + temp_r29->x = 0; + temp_r29->y = 1; + temp_r29++; + } + if (arg3 != 0 || arg4 != 0) { + temp_r22 = arg0->bmp->sizeX / arg3; + temp_r19 = arg0->bmp->sizeY / arg4; + temp_r31->unk14 = temp_r22 * temp_r19; + temp_r31->unk60 = 1.0f / temp_r22; + temp_r31->unk64 = 1.0f / temp_r19; + } + else { + temp_r22 = 1; + temp_r31->unk14 = 1; + temp_r31->unk60 = 1; + temp_r31->unk64 = 1; + } + temp_r31->unk5C = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk14 * sizeof(HsfVector2f), temp_r28->unk_48); + fn_1_7824(temp_r31->unk5C, temp_r31->unk14, temp_r22, temp_r31->unk60, temp_r31->unk64); + temp_r31->unk2C[0].x = temp_r31->unk2C[3].x = temp_r31->unk2C[2].y = temp_r31->unk2C[3].y = -arg2; + temp_r31->unk2C[1].x = temp_r31->unk2C[2].x = temp_r31->unk2C[0].y = temp_r31->unk2C[1].y = arg2; + temp_r31->unk2C[0].z = temp_r31->unk2C[1].z = temp_r31->unk2C[2].z = temp_r31->unk2C[3].z = 0; + temp_r21 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48); + temp_r18 = temp_r21; + DCFlushRange(temp_r21, 0x20000); + GXBeginDisplayList(temp_r18, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, 4 * arg1); + for (temp_r30 = 0; temp_r30 < arg1; temp_r30++) { + GXPosition1x16(temp_r30 * 4); + GXColor1x16(temp_r30); + GXTexCoord1x16(temp_r30 * 4); + GXPosition1x16((temp_r30 * 4) + 1); + GXColor1x16(temp_r30); + GXTexCoord1x16((temp_r30 * 4) + 1); + GXPosition1x16((temp_r30 * 4) + 2); + GXColor1x16(temp_r30); + GXTexCoord1x16((temp_r30 * 4) + 2); + GXPosition1x16((temp_r30 * 4) + 3); + GXColor1x16(temp_r30); + GXTexCoord1x16((temp_r30 * 4) + 3); + } + temp_r31->unk4 = GXEndDisplayList(); + temp_r31->unk28 = HuMemDirectMallocNum(HEAP_DATA, temp_r31->unk4, temp_r28->unk_48); + memcpy(temp_r31->unk28, temp_r21, temp_r31->unk4); + DCFlushRange(temp_r31->unk28, temp_r31->unk4); + HuMemDirectFree(temp_r21); + return temp_r20; } void fn_1_71B8(s16 arg0) { - ModelData *temp_r31; - Work72B4 *temp_r30; - temp_r31 = &Hu3DData[arg0]; - temp_r30 = temp_r31->unk_120; - HuSprAnimKill(temp_r30->unk10); - Hu3DModelKill(arg0); + ModelData *temp_r31; + Work72B4 *temp_r30; + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->unk_120; + HuSprAnimKill(temp_r30->unk10); + Hu3DModelKill(arg0); } Work72B4 *fn_1_7218(s16 arg0) { - ModelData *temp_r31; - temp_r31 = &Hu3DData[arg0]; - return temp_r31->unk_120; + ModelData *temp_r31; + temp_r31 = &Hu3DData[arg0]; + return temp_r31->unk_120; } void fn_1_7244(s16 arg0, unkHook72B4 arg1) { - ModelData *temp_r31; - Work72B4 *temp_r30; - temp_r31 = &Hu3DData[arg0]; - temp_r30 = temp_r31->unk_120; - temp_r30->unkC = arg1; + ModelData *temp_r31; + Work72B4 *temp_r30; + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->unk_120; + temp_r30->unkC = arg1; } void fn_1_727C(s16 arg0, u8 arg1) { - ModelData *temp_r31; - Work72B4 *temp_r30; - temp_r31 = &Hu3DData[arg0]; - temp_r30 = temp_r31->unk_120; - temp_r30->unk8 = arg1; + ModelData *temp_r31; + Work72B4 *temp_r30; + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->unk_120; + temp_r30->unk8 = arg1; } void fn_1_78F0(HsfVector2f *arg0, HsfVector2f *arg1, s16 arg2, float arg3, float arg4); @@ -2043,171 +2030,175 @@ void fn_1_79FC(Mtx arg0, Mtx arg1); void fn_1_72B4(ModelData *model, Mtx mtx) { - Mtx sp128; - ROMtx spF8; - Mtx spC8; - Mtx sp98; - Vec sp68[4]; - Vec sp38[4]; - Vec sp8[4]; - Vec *temp_r31; - Work72B4 *temp_r30; - Unk72B4Data18 *temp_r29; - HsfVector2f *temp_r27; - s16 temp_r26; - s16 temp_r25; - unkHook72B4 temp_r23; - temp_r30 = model->unk_120; - GXLoadPosMtxImm(mtx, GX_PNMTX0); - GXSetNumTevStages(1); - GXSetNumTexGens(1); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - temp_r25 = temp_r30->unk10->bmp->dataFmt & ANIM_BMP_FMTMASK; - if(temp_r25 == ANIM_BMP_I8 || temp_r25 == ANIM_BMP_I4) { - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); - } - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); - if(model->attr & 0x2) { - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } else { - GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); - } - HuSprTexLoad(temp_r30->unk10, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); - GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); - GXSetZCompLoc(GX_FALSE); - switch(temp_r30->unk8) { - case 0: - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - break; - - case 1: - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - break; - - case 2: - GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVSRCCLR, GX_LO_NOOP); - break; - } - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, temp_r30->unk1C, sizeof(Vec)); - GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, temp_r30->unk24, sizeof(GXColor)); - GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f)); - fn_1_79FC(mtx, sp128); - PSMTXReorder(sp128, spF8); - if(!omPauseChk() && temp_r30->unkC) { - temp_r23 = temp_r30->unkC; - temp_r23(model, temp_r30, mtx); - } - temp_r29 = temp_r30->unk18; - temp_r31 = temp_r30->unk1C; - temp_r27 = temp_r30->unk20; - PSMTXROMultVecArray(spF8, temp_r30->unk2C, sp68, 4); - for(temp_r26=0; temp_r26unk0; temp_r26++, temp_r29++, temp_r27 += 4) { - if(temp_r29->unk56 == 0) { - temp_r31->x = temp_r31->y = temp_r31->z = 0; - temp_r31++; - temp_r31->x = temp_r31->y = temp_r31->z = 0; - temp_r31++; - temp_r31->x = temp_r31->y = temp_r31->z = 0; - temp_r31++; - temp_r31->x = temp_r31->y = temp_r31->z = 0; - temp_r31++; - } else { - if(0.0f == temp_r29->unk38) { - fn_1_7994(sp68, sp38, &temp_r29->unk3C, 4); - VECAdd(&sp38[0], &temp_r29->unk48, temp_r31++); - VECAdd(&sp38[1], &temp_r29->unk48, temp_r31++); - VECAdd(&sp38[2], &temp_r29->unk48, temp_r31++); - VECAdd(&sp38[3], &temp_r29->unk48, temp_r31++); - } else { - fn_1_7994(temp_r30->unk2C, sp38, &temp_r29->unk3C, 4); - MTXRotDeg(spC8, 'Z', temp_r29->unk38); - MTXConcat(sp128, spC8, sp98); - MTXMultVecArray(sp98, sp38, sp8, 4); - VECAdd(&sp8[0], &temp_r29->unk48, temp_r31++); - VECAdd(&sp8[1], &temp_r29->unk48, temp_r31++); - VECAdd(&sp8[2], &temp_r29->unk48, temp_r31++); - VECAdd(&sp8[3], &temp_r29->unk48, temp_r31++); - } - if(temp_r29->unk54 != -1) { - fn_1_78F0(temp_r27, temp_r30->unk5C, temp_r29->unk54, temp_r30->unk60, temp_r30->unk64); - } - } - } - DCFlushRangeNoSync(temp_r30->unk1C, (temp_r30->unk0*sizeof(Vec))*4); - DCFlushRangeNoSync(temp_r30->unk20, (temp_r30->unk0*sizeof(HsfVector2f))*4); - PPCSync(); - GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); + Mtx sp128; + ROMtx spF8; + Mtx spC8; + Mtx sp98; + Vec sp68[4]; + Vec sp38[4]; + Vec sp8[4]; + Vec *temp_r31; + Work72B4 *temp_r30; + Unk72B4Data18 *temp_r29; + HsfVector2f *temp_r27; + s16 temp_r26; + s16 temp_r25; + unkHook72B4 temp_r23; + temp_r30 = model->unk_120; + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + temp_r25 = temp_r30->unk10->bmp->dataFmt & ANIM_BMP_FMTMASK; + if (temp_r25 == ANIM_BMP_I8 || temp_r25 == ANIM_BMP_I4) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + if (model->attr & 0x2) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } + HuSprTexLoad(temp_r30->unk10, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + switch (temp_r30->unk8) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVSRCCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r30->unk1C, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, temp_r30->unk24, sizeof(GXColor)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f)); + fn_1_79FC(mtx, sp128); + PSMTXReorder(sp128, spF8); + if (!omPauseChk() && temp_r30->unkC) { + temp_r23 = temp_r30->unkC; + temp_r23(model, temp_r30, mtx); + } + temp_r29 = temp_r30->unk18; + temp_r31 = temp_r30->unk1C; + temp_r27 = temp_r30->unk20; + PSMTXROMultVecArray(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; + temp_r31++; + temp_r31->x = temp_r31->y = temp_r31->z = 0; + temp_r31++; + temp_r31->x = temp_r31->y = temp_r31->z = 0; + temp_r31++; + temp_r31->x = temp_r31->y = temp_r31->z = 0; + temp_r31++; + } + else { + if (0.0f == temp_r29->unk38) { + fn_1_7994(sp68, sp38, &temp_r29->unk3C, 4); + VECAdd(&sp38[0], &temp_r29->unk48, temp_r31++); + VECAdd(&sp38[1], &temp_r29->unk48, temp_r31++); + VECAdd(&sp38[2], &temp_r29->unk48, temp_r31++); + VECAdd(&sp38[3], &temp_r29->unk48, temp_r31++); + } + else { + fn_1_7994(temp_r30->unk2C, sp38, &temp_r29->unk3C, 4); + MTXRotDeg(spC8, 'Z', temp_r29->unk38); + MTXConcat(sp128, spC8, sp98); + MTXMultVecArray(sp98, sp38, sp8, 4); + VECAdd(&sp8[0], &temp_r29->unk48, temp_r31++); + VECAdd(&sp8[1], &temp_r29->unk48, temp_r31++); + VECAdd(&sp8[2], &temp_r29->unk48, temp_r31++); + VECAdd(&sp8[3], &temp_r29->unk48, temp_r31++); + } + if (temp_r29->unk54 != -1) { + fn_1_78F0(temp_r27, temp_r30->unk5C, temp_r29->unk54, temp_r30->unk60, temp_r30->unk64); + } + } + } + DCFlushRangeNoSync(temp_r30->unk1C, (temp_r30->unk0 * sizeof(Vec)) * 4); + DCFlushRangeNoSync(temp_r30->unk20, (temp_r30->unk0 * sizeof(HsfVector2f)) * 4); + PPCSync(); + GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); } void fn_1_7824(HsfVector2f *arg0, s16 arg1, s16 arg2, float arg3, float arg4) { - s16 temp_r30; - s16 temp_r29; - s16 temp_r31; - for(temp_r31=0; temp_r31x = temp_r30*arg3; - arg0->y = temp_r29*arg4; - } + s16 temp_r30; + s16 temp_r29; + s16 temp_r31; + for (temp_r31 = 0; temp_r31 < arg1; temp_r31++, arg0++) { + temp_r30 = temp_r31 % arg2; + temp_r29 = temp_r31 / arg2; + arg0->x = temp_r30 * arg3; + arg0->y = temp_r29 * arg4; + } } void fn_1_78F0(HsfVector2f *arg0, HsfVector2f *arg1, s16 arg2, float arg3, float arg4) { - arg0[0].x = arg1[arg2].x; - arg0[0].y = arg1[arg2].y; - arg0[1].x = arg3+arg1[arg2].x; - arg0[1].y = arg1[arg2].y; - arg0[2].x = arg3+arg1[arg2].x; - arg0[2].y = arg4+arg1[arg2].y; - arg0[3].x = arg1[arg2].x; - arg0[3].y = arg4+arg1[arg2].y; + arg0[0].x = arg1[arg2].x; + arg0[0].y = arg1[arg2].y; + arg0[1].x = arg3 + arg1[arg2].x; + arg0[1].y = arg1[arg2].y; + arg0[2].x = arg3 + arg1[arg2].x; + arg0[2].y = arg4 + arg1[arg2].y; + arg0[3].x = arg1[arg2].x; + arg0[3].y = arg4 + arg1[arg2].y; } void fn_1_7994(Vec *arg0, Vec *arg1, Vec *arg2, s16 arg3) { - s16 temp_r31; - for(temp_r31=0; temp_r31x = arg0->x*arg2->x; - arg1->y = arg0->y*arg2->y; - arg1->z = arg0->z*arg2->z; - } + s16 temp_r31; + for (temp_r31 = 0; temp_r31 < arg3; temp_r31++, arg0++, arg1++) { + arg1->x = arg0->x * arg2->x; + arg1->y = arg0->y * arg2->y; + arg1->z = arg0->z * arg2->z; + } } void fn_1_79FC(Mtx arg0, Mtx arg1) { - arg1[0][0] = arg0[0][0]; - arg1[1][0] = arg0[0][1]; - arg1[2][0] = arg0[0][2]; - arg1[0][1] = arg0[1][0]; - arg1[1][1] = arg0[1][1]; - arg1[2][1] = arg0[1][2]; - arg1[0][2] = arg0[2][0]; - arg1[1][2] = arg0[2][1]; - arg1[2][2] = arg0[2][2]; - arg1[0][3] = 0; - arg1[1][3] = 0; - arg1[2][3] = 0; + arg1[0][0] = arg0[0][0]; + arg1[1][0] = arg0[0][1]; + arg1[2][0] = arg0[0][2]; + arg1[0][1] = arg0[1][0]; + arg1[1][1] = arg0[1][1]; + arg1[2][1] = arg0[1][2]; + arg1[0][2] = arg0[2][0]; + arg1[1][2] = arg0[2][1]; + arg1[2][2] = arg0[2][2]; + arg1[0][3] = 0; + arg1[1][3] = 0; + arg1[2][3] = 0; } -s32 fn_1_7A78(s32 arg0, s16 arg1) +s32 fn_1_7A78(s32 arg0, s16 vol) { - UnkMsmStruct_01 sp10; - sp10.unk00 = 1; - sp10.unk04 = arg1; - return msmSeSetParam(arg0, &sp10); + MSM_SEPARAM seParam; + seParam.flag = MSM_SEPARAM_VOL; + seParam.vol = vol; + return msmSeSetParam(arg0, &seParam); } diff --git a/src/REL/m431Dll/object.c b/src/REL/m431Dll/object.c index 78687d3a..aaa65ed0 100644 --- a/src/REL/m431Dll/object.c +++ b/src/REL/m431Dll/object.c @@ -1,22 +1,23 @@ +#include "game/chrman.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/chrman.h" +#include "game/audio.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/audio.h" -#include "game/wipe.h" #include "game/pad.h" #include "game/sprite.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" +#include "game/wipe.h" -#include "ext_math.h" #include "REL/m431Dll.h" +#include "ext_math.h" +#include "version.h" typedef struct bss_struct_62C { - u8 unk0; - float unk4; + u8 unk0; + float unk4; } BssStruct62C; BssStruct62C lbl_1_bss_62C[10]; @@ -27,38 +28,14 @@ u32 lbl_1_bss_9C[4]; s8 lbl_1_bss_98; float lbl_1_data_1D0 = 18; -float lbl_1_data_1D4[8] = { - 30.000002f, - 0, - 20.0f, - 0, - 20.0f, - 50.0f, - 20.0f, - 30.000002f -}; +float lbl_1_data_1D4[8] = { 30.000002f, 0, 20.0f, 0, 20.0f, 50.0f, 20.0f, 30.000002f }; -u32 lbl_1_data_1F4[8] = { - 0x5F0000, - 0x5F0002, - 0x5F0003, - -1, - 0x5F0048, - 0x5F0049, - 0x5F0017, - 0x5F0072 -}; +u32 lbl_1_data_1F4[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), -1, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72) }; -char *lbl_1_data_230[8] = { - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r" -}; +char *lbl_1_data_230[8] = { "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", + "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r" }; void fn_1_858C(omObjData *object); void fn_1_9440(omObjData *object); @@ -67,69 +44,68 @@ void fn_1_B384(Process *objman); void fn_1_7ABC(Process *objman) { - Vec sp20; - Vec sp14; - Vec sp8; - Bss12CStruct *temp_r31; - s16 temp_r30; - s16 temp_r29; - BssStruct62C *temp_r28; - omObjData *temp_r26; - omMakeGroupEx(objman, 0, 4); - omGetGroupMemberListEx(objman, 0); - memset(lbl_1_bss_12C, 0, sizeof(lbl_1_bss_12C)); - for(temp_r30=0, temp_r29=0; temp_r30<4; temp_r30++) { - temp_r31 = &lbl_1_bss_12C[GWPlayerCfg[temp_r30].group]; - if(GWPlayerCfg[temp_r30].group != 0 && GWPlayerCfg[temp_r30].group != 1) { - break; - } - temp_r31->unk0[temp_r31->unk8++] = temp_r30; - if(temp_r31->unk8 == 2) { - temp_r29++; - } - } - if(temp_r29 != 2) { - GWPlayerCfg[0].group = GWPlayerCfg[1].group = 0; - GWPlayerCfg[2].group = GWPlayerCfg[3].group = 1; - lbl_1_bss_12C[0].unk0[0] = 0; - lbl_1_bss_12C[0].unk0[1] = 1; - lbl_1_bss_12C[0].unk8 = 2; - lbl_1_bss_12C[1].unk0[0] = 2; - lbl_1_bss_12C[1].unk0[1] = 3; - lbl_1_bss_12C[1].unk8 = 2; - } - for(temp_r30=0, temp_r28 = &lbl_1_bss_62C[0]; temp_r30<10; temp_r30++, temp_r28++) { - temp_r28->unk0 = 1; - temp_r28->unk4 = lbl_1_data_1D0+(temp_r30*36.0f); - } - lbl_1_bss_12C[0].unkC.x = -317; - lbl_1_bss_12C[1].unkC.x = 317; - lbl_1_bss_12C[0].unkC.y = lbl_1_bss_12C[1].unkC.y = 0; - lbl_1_bss_12C[0].unkC.z = lbl_1_bss_12C[1].unkC.z = 100; - lbl_1_bss_12C[0].unk18 = lbl_1_bss_12C[1].unk18 = 230; - for(temp_r30=0, temp_r31 = &lbl_1_bss_12C[0]; temp_r30<2; temp_r30++, temp_r31++) { - sp8.x = temp_r31->unkC.x; - sp8.y = temp_r31->unkC.y; - sp8.z = temp_r31->unkC.z; - for(temp_r29=0; temp_r29<10; temp_r29++) { - sp14.x = sp20.x = (temp_r31->unk18*sind(lbl_1_bss_62C[temp_r29].unk4))+sp8.x; - sp14.z = sp20.z = (temp_r31->unk18*cosd(lbl_1_bss_62C[temp_r29].unk4))+sp8.z; - sp14.y = sp8.y; - sp20.y = sp8.y-50; - fn_1_6184(&sp8, &temp_r31->unk1C[temp_r29]); - temp_r31->unkE4[temp_r29][0] = sp14.x; - temp_r31->unkE4[temp_r29][1] = sp14.z; - } - temp_r31->unk138[0] = 0; - } - for(temp_r30=0; temp_r30<4; temp_r30++) { - OSReport("PNo:%d Grp:%d\n", temp_r30, GWPlayerCfg[temp_r30].group); - temp_r26 = omAddObjEx(objman, 99, 0, 0, -1, fn_1_858C); - lbl_1_bss_61C[temp_r30] = omAddObjEx(objman, 100, 9, 8, 0, fn_1_9440); - lbl_1_bss_61C[temp_r30]->work[0] = temp_r26->work[0] = temp_r30; - - } - fn_1_B384(objman); + Vec sp20; + Vec sp14; + Vec sp8; + Bss12CStruct *temp_r31; + s16 temp_r30; + s16 temp_r29; + BssStruct62C *temp_r28; + omObjData *temp_r26; + omMakeGroupEx(objman, 0, 4); + omGetGroupMemberListEx(objman, 0); + memset(lbl_1_bss_12C, 0, sizeof(lbl_1_bss_12C)); + for (temp_r30 = 0, temp_r29 = 0; temp_r30 < 4; temp_r30++) { + temp_r31 = &lbl_1_bss_12C[GWPlayerCfg[temp_r30].group]; + if (GWPlayerCfg[temp_r30].group != 0 && GWPlayerCfg[temp_r30].group != 1) { + break; + } + temp_r31->unk0[temp_r31->unk8++] = temp_r30; + if (temp_r31->unk8 == 2) { + temp_r29++; + } + } + if (temp_r29 != 2) { + GWPlayerCfg[0].group = GWPlayerCfg[1].group = 0; + GWPlayerCfg[2].group = GWPlayerCfg[3].group = 1; + lbl_1_bss_12C[0].unk0[0] = 0; + lbl_1_bss_12C[0].unk0[1] = 1; + lbl_1_bss_12C[0].unk8 = 2; + lbl_1_bss_12C[1].unk0[0] = 2; + lbl_1_bss_12C[1].unk0[1] = 3; + lbl_1_bss_12C[1].unk8 = 2; + } + for (temp_r30 = 0, temp_r28 = &lbl_1_bss_62C[0]; temp_r30 < 10; temp_r30++, temp_r28++) { + temp_r28->unk0 = 1; + temp_r28->unk4 = lbl_1_data_1D0 + (temp_r30 * 36.0f); + } + lbl_1_bss_12C[0].unkC.x = -317; + lbl_1_bss_12C[1].unkC.x = 317; + lbl_1_bss_12C[0].unkC.y = lbl_1_bss_12C[1].unkC.y = 0; + lbl_1_bss_12C[0].unkC.z = lbl_1_bss_12C[1].unkC.z = 100; + lbl_1_bss_12C[0].unk18 = lbl_1_bss_12C[1].unk18 = 230; + for (temp_r30 = 0, temp_r31 = &lbl_1_bss_12C[0]; temp_r30 < 2; temp_r30++, temp_r31++) { + sp8.x = temp_r31->unkC.x; + sp8.y = temp_r31->unkC.y; + sp8.z = temp_r31->unkC.z; + for (temp_r29 = 0; temp_r29 < 10; temp_r29++) { + sp14.x = sp20.x = (temp_r31->unk18 * sind(lbl_1_bss_62C[temp_r29].unk4)) + sp8.x; + sp14.z = sp20.z = (temp_r31->unk18 * cosd(lbl_1_bss_62C[temp_r29].unk4)) + sp8.z; + sp14.y = sp8.y; + sp20.y = sp8.y - 50; + fn_1_6184(&sp8, &temp_r31->unk1C[temp_r29]); + temp_r31->unkE4[temp_r29][0] = sp14.x; + temp_r31->unkE4[temp_r29][1] = sp14.z; + } + temp_r31->unk138[0] = 0; + } + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + OSReport("PNo:%d Grp:%d\n", temp_r30, GWPlayerCfg[temp_r30].group); + temp_r26 = omAddObjEx(objman, 99, 0, 0, -1, fn_1_858C); + lbl_1_bss_61C[temp_r30] = omAddObjEx(objman, 100, 9, 8, 0, fn_1_9440); + lbl_1_bss_61C[temp_r30]->work[0] = temp_r26->work[0] = temp_r30; + } + fn_1_B384(objman); } s16 lbl_1_data_260[4] = { 0, 0, 0, 0 }; @@ -143,111 +119,118 @@ s16 fn_1_B530(s16 arg0); s32 fn_1_7FB8(s16 arg0) { - Bss61CWork *temp_r31; - Bss12CStruct *temp_r30 = &lbl_1_bss_12C[arg0]; - s16 sp18[4] = { 0, 9, 9, 0}; - - s16 sp14[2]; - s16 sp10[2]; - s16 spC[2]; - s16 spA; - s16 temp_r29; - s32 temp_r28; - if(lbl_1_bss_98 != 0) { - (void)lbl_1_bss_98; - } else { - for(temp_r29=0, temp_r28=0; temp_r29<2; temp_r29++) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r29]]->data; - if((temp_r31->unk0 & 0xC0) || (temp_r31->unk0 & 0x600)) { - temp_r28 = 1; - } - fn_1_8CC0(lbl_1_bss_61C[temp_r30->unk0[temp_r29]]); - sp10[temp_r29] = temp_r31->unk40 = fn_1_B4F8(temp_r31->unk44.y); - spC[temp_r29] = fn_1_B530(temp_r31->unk40); - - } - if(temp_r28 != 0) { - return 0; - } - if(spC[0] != spC[1]) { - if(spC[0] == 0) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data; - temp_r31->unk84 = lbl_1_data_268[0]; - temp_r31->unk14->unk84 = lbl_1_data_268[1]; - } else { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data; - temp_r31->unk84 = lbl_1_data_268[0]; - temp_r31->unk14->unk84 = lbl_1_data_268[1]; - } - } else { - if(spC[0] == 0) { - if(sp10[0] < sp10[1]) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data; - temp_r31->unk84 = lbl_1_data_268[1]; - temp_r31->unk14->unk84 = lbl_1_data_268[0]; - } else { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data; - temp_r31->unk84 = lbl_1_data_268[1]; - temp_r31->unk14->unk84 = lbl_1_data_268[0]; - } - } else { - if(sp10[0] > sp10[1]) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data; - temp_r31->unk84 = lbl_1_data_268[0]; - temp_r31->unk14->unk84 = lbl_1_data_268[1]; - } else { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data; - temp_r31->unk84 = lbl_1_data_268[0]; - temp_r31->unk14->unk84 = lbl_1_data_268[1]; - } - } - } - lbl_1_bss_98++; - } - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r29]]->data; - temp_r31->unkC = 0; - temp_r31->unk86 = 1; - temp_r31->unkB4 = 0; - temp_r31->unkB5 = 0; - sp14[temp_r29] = fn_1_8AD4(temp_r31, temp_r31->unk40, temp_r31->unk84, &spA, 0); - if(sp14[temp_r29] != 0) { - temp_r31->unkB4 = (spA == 0) ? 50 : -50; - } else { - temp_r31->unk86 = 0; - } - fn_1_8CC0(lbl_1_bss_61C[temp_r30->unk0[temp_r29]]); - sp14[temp_r29] = (temp_r31->unk0 & 0xC0) ? 1 : 0; - if(temp_r31->unk0 & 0x600) { - sp14[temp_r29] = 1; - } - } - if(sp14[0] == 0 && sp14[1] == 0) { - return 1; - } - return 0; + Bss61CWork *temp_r31; + Bss12CStruct *temp_r30 = &lbl_1_bss_12C[arg0]; + s16 sp18[4] = { 0, 9, 9, 0 }; + + s16 sp14[2]; + s16 sp10[2]; + s16 spC[2]; + s16 spA; + s16 temp_r29; + s32 temp_r28; + if (lbl_1_bss_98 != 0) { + (void)lbl_1_bss_98; + } + else { + for (temp_r29 = 0, temp_r28 = 0; temp_r29 < 2; temp_r29++) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r29]]->data; + if ((temp_r31->unk0 & 0xC0) || (temp_r31->unk0 & 0x600)) { + temp_r28 = 1; + } + fn_1_8CC0(lbl_1_bss_61C[temp_r30->unk0[temp_r29]]); + sp10[temp_r29] = temp_r31->unk40 = fn_1_B4F8(temp_r31->unk44.y); + spC[temp_r29] = fn_1_B530(temp_r31->unk40); + } + if (temp_r28 != 0) { + return 0; + } + if (spC[0] != spC[1]) { + if (spC[0] == 0) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data; + temp_r31->unk84 = lbl_1_data_268[0]; + temp_r31->unk14->unk84 = lbl_1_data_268[1]; + } + else { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data; + temp_r31->unk84 = lbl_1_data_268[0]; + temp_r31->unk14->unk84 = lbl_1_data_268[1]; + } + } + else { + if (spC[0] == 0) { + if (sp10[0] < sp10[1]) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data; + temp_r31->unk84 = lbl_1_data_268[1]; + temp_r31->unk14->unk84 = lbl_1_data_268[0]; + } + else { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data; + temp_r31->unk84 = lbl_1_data_268[1]; + temp_r31->unk14->unk84 = lbl_1_data_268[0]; + } + } + else { + if (sp10[0] > sp10[1]) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data; + temp_r31->unk84 = lbl_1_data_268[0]; + temp_r31->unk14->unk84 = lbl_1_data_268[1]; + } + else { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data; + temp_r31->unk84 = lbl_1_data_268[0]; + temp_r31->unk14->unk84 = lbl_1_data_268[1]; + } + } + } + lbl_1_bss_98++; + } + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r29]]->data; + temp_r31->unkC = 0; + temp_r31->unk86 = 1; + temp_r31->unkB4 = 0; + temp_r31->unkB5 = 0; + sp14[temp_r29] = fn_1_8AD4(temp_r31, temp_r31->unk40, temp_r31->unk84, &spA, 0); + if (sp14[temp_r29] != 0) { + temp_r31->unkB4 = (spA == 0) ? 50 : -50; + } + else { + temp_r31->unk86 = 0; + } + fn_1_8CC0(lbl_1_bss_61C[temp_r30->unk0[temp_r29]]); + sp14[temp_r29] = (temp_r31->unk0 & 0xC0) ? 1 : 0; + if (temp_r31->unk0 & 0x600) { + sp14[temp_r29] = 1; + } + } + if (sp14[0] == 0 && sp14[1] == 0) { + return 1; + } + return 0; } s32 fn_1_8474(s16 arg0) { - s32 spC[2]; - s32 temp_r31; - Bss61CWork *temp_r30; - Bss12CStruct *temp_r29; - temp_r29 = &lbl_1_bss_12C[arg0]; - for(temp_r31=0; temp_r31<2; temp_r31++) { - temp_r30 = lbl_1_bss_61C[temp_r29->unk0[temp_r31]]->data; - fn_1_8CC0(lbl_1_bss_61C[temp_r29->unk0[temp_r31]]); - if((temp_r30->unk0 & 0xC0) || (temp_r30->unk0 & 0x600) || (temp_r30->unk0 & 0x20)) { - spC[temp_r31] = 1; - } else { - spC[temp_r31] = 0; - } - } - if(spC[0] == 0 && spC[1] == 0) { - return 1; - } - return 0; + s32 spC[2]; + s32 temp_r31; + Bss61CWork *temp_r30; + Bss12CStruct *temp_r29; + temp_r29 = &lbl_1_bss_12C[arg0]; + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + temp_r30 = lbl_1_bss_61C[temp_r29->unk0[temp_r31]]->data; + fn_1_8CC0(lbl_1_bss_61C[temp_r29->unk0[temp_r31]]); + if ((temp_r30->unk0 & 0xC0) || (temp_r30->unk0 & 0x600) || (temp_r30->unk0 & 0x20)) { + spC[temp_r31] = 1; + } + else { + spC[temp_r31] = 0; + } + } + if (spC[0] == 0 && spC[1] == 0) { + return 1; + } + return 0; } void fn_1_8790(omObjData *object); @@ -256,172 +239,180 @@ u32 fn_1_ABA0(omObjData *object, u32 arg1); void fn_1_858C(omObjData *object) { - Bss61CWork *temp_r31; - u16 temp_r29; - if(lbl_1_data_260[object->work[0]] == 0) { - return; - } - temp_r31 = lbl_1_bss_61C[object->work[0]]->data; - temp_r31->unkB0 = HuPadBtn[temp_r31->unk6]; - temp_r31->unkB2 = HuPadBtnDown[temp_r31->unk6]; - temp_r31->unkB4 = HuPadStkX[temp_r31->unk6]; - temp_r31->unkB5 = HuPadStkY[temp_r31->unk6]; - if(fn_1_2090(1) != 0) { - return; - } - temp_r29 = fn_1_2090(28); - if(temp_r29 == 12 || temp_r29 == 16) { - if(fn_1_ABA0(lbl_1_bss_61C[object->work[0]], 0x600) == 0 && lbl_1_data_260[object->work[0]] != 0) { - temp_r31 = lbl_1_bss_61C[object->work[0]]->data; - if(temp_r31->unk14 == 0) { - temp_r31->unk14 = fn_1_AAF0(lbl_1_bss_61C[object->work[0]]); - } - if(GWPlayerCfg[temp_r31->unk4].iscom) { - fn_1_8790(lbl_1_bss_61C[object->work[0]]); - } - fn_1_8CC0(lbl_1_bss_61C[object->work[0]]); - } - - } + Bss61CWork *temp_r31; + u16 temp_r29; + if (lbl_1_data_260[object->work[0]] == 0) { + return; + } + temp_r31 = lbl_1_bss_61C[object->work[0]]->data; + temp_r31->unkB0 = HuPadBtn[temp_r31->unk6]; + temp_r31->unkB2 = HuPadBtnDown[temp_r31->unk6]; + temp_r31->unkB4 = HuPadStkX[temp_r31->unk6]; + temp_r31->unkB5 = HuPadStkY[temp_r31->unk6]; + if (fn_1_2090(1) != 0) { + return; + } + temp_r29 = fn_1_2090(28); + if (temp_r29 == 12 || temp_r29 == 16) { + if (fn_1_ABA0(lbl_1_bss_61C[object->work[0]], 0x600) == 0 && lbl_1_data_260[object->work[0]] != 0) { + temp_r31 = lbl_1_bss_61C[object->work[0]]->data; + if (temp_r31->unk14 == 0) { + temp_r31->unk14 = fn_1_AAF0(lbl_1_bss_61C[object->work[0]]); + } + if (GWPlayerCfg[temp_r31->unk4].iscom) { + fn_1_8790(lbl_1_bss_61C[object->work[0]]); + } + fn_1_8CC0(lbl_1_bss_61C[object->work[0]]); + } + } } void fn_1_8790(omObjData *object) { - Bss61CWork *temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - u32 temp_r26; - s16 sp18[9]; - s16 sp8[8]; - temp_r31 = object->data; - temp_r31->unkB4 = temp_r31->unkB5 = 0; - temp_r31->unkB2 = 0; - if(fn_1_2090(224)) { - return; - } - sp18[8] = 999; - for(temp_r30=0, temp_r28=0, temp_r29=8; temp_r30unk6E; temp_r30++) { - temp_r26 = fn_1_4738(temp_r31->unkA, temp_r31->unk5E[temp_r30]); - if(temp_r26 & 0x1) { - temp_r31->unk5E[temp_r30] = -1; - } - sp18[temp_r30] = fn_1_8AD4(temp_r31, temp_r31->unk40, temp_r31->unk5E[temp_r30], &sp8[temp_r30], 1); - if(sp18[temp_r30] < sp18[temp_r29]) { - temp_r29 = temp_r30; - } - if(temp_r31->unk5E[temp_r30] == -1) { - temp_r28++; - } - } - if(temp_r28 == temp_r31->unk6E) { - return; - } - if(temp_r31->unk70 < temp_r31->unk72 && temp_r29 < 4) { - for(temp_r30=4; temp_r30unk6E; temp_r30++) { - if(sp18[temp_r30] < 10) { - temp_r29 = temp_r30; - break; - } - } - } - if(temp_r31->unk7C == 0) { - if(GWPlayerCfg[temp_r31->unk14->unk4].iscom) { - if(temp_r31->unk4 > temp_r31->unk14->unk4 && (temp_r31->unk0 & 0x20)) { - temp_r31->unk7C = 1; - } - } else { - if(temp_r31->unk0 & 0x20) { - temp_r31->unk7C = 1; - } - } - } - if(temp_r31->unk7C && temp_r28 == temp_r31->unk6E-1) { - if(++temp_r31->unk7C > 120) { - temp_r31->unk7C = 0; - } - if((temp_r31->unk14->unk0 & 0xC0) == 0x40) { - sp8[temp_r29] = 0; - } else { - if((temp_r31->unk14->unk0 & 0xC0) == 0x80) { - sp8[temp_r29] = 1; - } else { - temp_r31->unk7C = 0; - } - } - } - if(sp18[temp_r29] != -1) { - temp_r31->unkB4 = (sp8[temp_r29] == 0) ? 50 : -50; - } else { - if(temp_r31->unk44.z <= 15.0f) { - temp_r31->unkB2 = PAD_BUTTON_A; - } - } + Bss61CWork *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + u32 temp_r26; + s16 sp18[9]; + s16 sp8[8]; + temp_r31 = object->data; + temp_r31->unkB4 = temp_r31->unkB5 = 0; + temp_r31->unkB2 = 0; + if (fn_1_2090(224)) { + return; + } + sp18[8] = 999; + for (temp_r30 = 0, temp_r28 = 0, temp_r29 = 8; temp_r30 < temp_r31->unk6E; temp_r30++) { + temp_r26 = fn_1_4738(temp_r31->unkA, temp_r31->unk5E[temp_r30]); + if (temp_r26 & 0x1) { + temp_r31->unk5E[temp_r30] = -1; + } + sp18[temp_r30] = fn_1_8AD4(temp_r31, temp_r31->unk40, temp_r31->unk5E[temp_r30], &sp8[temp_r30], 1); + if (sp18[temp_r30] < sp18[temp_r29]) { + temp_r29 = temp_r30; + } + if (temp_r31->unk5E[temp_r30] == -1) { + temp_r28++; + } + } + if (temp_r28 == temp_r31->unk6E) { + return; + } + if (temp_r31->unk70 < temp_r31->unk72 && temp_r29 < 4) { + for (temp_r30 = 4; temp_r30 < temp_r31->unk6E; temp_r30++) { + if (sp18[temp_r30] < 10) { + temp_r29 = temp_r30; + break; + } + } + } + if (temp_r31->unk7C == 0) { + if (GWPlayerCfg[temp_r31->unk14->unk4].iscom) { + if (temp_r31->unk4 > temp_r31->unk14->unk4 && (temp_r31->unk0 & 0x20)) { + temp_r31->unk7C = 1; + } + } + else { + if (temp_r31->unk0 & 0x20) { + temp_r31->unk7C = 1; + } + } + } + if (temp_r31->unk7C && temp_r28 == temp_r31->unk6E - 1) { + if (++temp_r31->unk7C > 2 * REFRESH_RATE) { + temp_r31->unk7C = 0; + } + if ((temp_r31->unk14->unk0 & 0xC0) == 0x40) { + sp8[temp_r29] = 0; + } + else { + if ((temp_r31->unk14->unk0 & 0xC0) == 0x80) { + sp8[temp_r29] = 1; + } + else { + temp_r31->unk7C = 0; + } + } + } + if (sp18[temp_r29] != -1) { + temp_r31->unkB4 = (sp8[temp_r29] == 0) ? 50 : -50; + } + else { + if (temp_r31->unk44.z <= 15.0f) { + temp_r31->unkB2 = PAD_BUTTON_A; + } + } } s16 fn_1_8AD4(Bss61CWork *arg0, s16 arg1, s16 arg2, s16 *arg3, u8 arg4) { - s16 temp_r31; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - - if(arg2 == -1) { - *arg3 = rand16()%2; - temp_r29 = 99; - } else if(arg1 == arg2) { - *arg3 = -1; - temp_r29 = (arg4) ? -1 : 0; - } else { - temp_r28 = temp_r27 = temp_r26 = temp_r25 = 0; - temp_r31 = arg1; - do { - temp_r31++; - temp_r28++; - if(temp_r31 >= 10) { - temp_r31 = 0; - } - if(arg4 && temp_r31 == arg0->unk14->unk40) { - temp_r26 = 99; - break; - } - } while(temp_r31 != arg2); - temp_r31 = arg1; - do { - temp_r31--; - temp_r27++; - if(temp_r31 < 0) { - temp_r31 = 9; - } - if(arg4 && temp_r31 == arg0->unk14->unk40) { - temp_r25 = 99; - break; - } - } while(temp_r31 != arg2); - if(temp_r26 != temp_r25) { - temp_r28 += temp_r26; - temp_r27 += temp_r25; - if(temp_r28 < temp_r27) { - *arg3 = 0; - temp_r29 = temp_r28; - } else { - *arg3 = 1; - temp_r29 = temp_r27; - } - } else { - if(temp_r28 < temp_r27) { - *arg3 = 0; - temp_r29 = temp_r28; - } else { - *arg3 = 1; - temp_r29 = temp_r27; - } - temp_r29 += 10; - } - } - return temp_r29; + s16 temp_r31; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + + if (arg2 == -1) { + *arg3 = rand16() % 2; + temp_r29 = 99; + } + else if (arg1 == arg2) { + *arg3 = -1; + temp_r29 = (arg4) ? -1 : 0; + } + else { + temp_r28 = temp_r27 = temp_r26 = temp_r25 = 0; + temp_r31 = arg1; + do { + temp_r31++; + temp_r28++; + if (temp_r31 >= 10) { + temp_r31 = 0; + } + if (arg4 && temp_r31 == arg0->unk14->unk40) { + temp_r26 = 99; + break; + } + } while (temp_r31 != arg2); + temp_r31 = arg1; + do { + temp_r31--; + temp_r27++; + if (temp_r31 < 0) { + temp_r31 = 9; + } + if (arg4 && temp_r31 == arg0->unk14->unk40) { + temp_r25 = 99; + break; + } + } while (temp_r31 != arg2); + if (temp_r26 != temp_r25) { + temp_r28 += temp_r26; + temp_r27 += temp_r25; + if (temp_r28 < temp_r27) { + *arg3 = 0; + temp_r29 = temp_r28; + } + else { + *arg3 = 1; + temp_r29 = temp_r27; + } + } + else { + if (temp_r28 < temp_r27) { + *arg3 = 0; + temp_r29 = temp_r28; + } + else { + *arg3 = 1; + temp_r29 = temp_r27; + } + temp_r29 += 10; + } + } + return temp_r29; } s16 fn_1_938C(omObjData *object); @@ -429,169 +420,182 @@ void fn_1_ABC0(omObjData *object, u32 arg1, u32 arg2); void fn_1_8CC0(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f28; - - Bss61CWork *temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - - - Vec sp10; - u16 sp8; - Bss12CInner *temp_r25; - temp_r31 = object->data; - if(temp_r31->unk38 == 3 || temp_r31->unk38 == 5) { - return; - } - sp8 = fn_1_2090(28); - if((temp_r31->unk0 & 0x20) || (fn_1_2090(28) != 12 && temp_r31->unk86 == 0)) { - temp_r28 = temp_r26 = 0; - } else { - temp_r28 = temp_r31->unkB4; - temp_r26 = temp_r31->unkB5; - } - temp_r30 = temp_r29 = 0; - if(temp_r31->unk52 == 0) { - switch(temp_r31->unkC) { - case 0: - if(temp_r28 > 10) { - temp_r30 = 1; - } else if(temp_r28 < -10) { - temp_r29 = 1; - } - break; - - case 1: - if(ABS(temp_r28) >= 10 || ABS(temp_r26) >= 10) { - temp_r25 = &lbl_1_bss_12C[temp_r31->unkA].unk1C[temp_r31->unk40]; - sp10.x = temp_r28+lbl_1_bss_12C[temp_r31->unkA].unkE4[temp_r31->unk40][0]; - sp10.z = lbl_1_bss_12C[temp_r31->unkA].unkE4[temp_r31->unk40][1]-temp_r26; - temp_f28 = (temp_r25->unk0.x*sp10.x)+(temp_r25->unk0.z*sp10.z)-temp_r25->unkC; - if(temp_f28 > 0.0f) { - if(temp_r31->unk50 != temp_r31->unk40) { - if(temp_r31->unk54 == 128) { - temp_r31->unk52 = 1; - } - } else { - temp_r30 = 1; - } - } else { - if(temp_f28 < 0.0f) { - if(temp_r31->unk50 != temp_r31->unk40) { - if(temp_r31->unk54 == 64) { - temp_r31->unk52 = 1; - } - - } else { - temp_r29 = 1; - } - } - } - } - break; - } - } else { - if(temp_r31->unk58 != temp_r28 || temp_r31->unk5A != temp_r26) { - temp_r31->unk52 = 0; - } - } - temp_f31 = temp_r31->unk24.x-temp_r31->unk14->unk24.x; - temp_f30 = temp_r31->unk24.z-temp_r31->unk14->unk24.z; - temp_f28 = VECMagPoint(temp_f31, 0, temp_f30); - if(temp_f28 < 90 && (temp_r31->unk0 & 0x20) == 0) { - if(fn_1_938C(object) == 0) { - temp_r30 = 0; - temp_r29 = 1; - } else { - temp_r30 = 1; - temp_r29 = 0; - } - temp_r31->unk0 |= 0x20; - } else { - if(temp_r31->unk54 == 64) { - temp_r27 = temp_r31->unk42-temp_r31->unk40; - if(temp_r27 < 0) { - temp_r27 += 10; - } - if(temp_r27 > 1) { - temp_r31->unk42 = 1; - } - } else { - temp_r27 = temp_r31->unk40-temp_r31->unk42; - if(temp_r27 < 0) { - temp_r27 += 10; - } - if(temp_r27 > 1) { - temp_r31->unk42 = 9; - } - } - } - if(temp_r30) { - temp_r30 = 0; - if(temp_r31->unk54 == 64) { - if(temp_r31->unk44.z <= 2.0f) { - temp_r30 = 1; - } - } else if(temp_r31->unk54 == 128) { - if(temp_r31->unk40 != temp_r31->unk42) { - temp_r31->unk40 = temp_r31->unk42; - } - temp_r30 = 1; - } else { - temp_r30 = 1; - } - if(temp_r30) { - fn_1_ABC0(object, 192, 64); - temp_r31->unk42 = temp_r31->unk40+1; - if(temp_r31->unk42 >= 10) { - temp_r31->unk42 = 0; - } - } - } else if(temp_r29) { - temp_r29 = 0; - if(temp_r31->unk54 == 128) { - if(temp_r31->unk44.z <= 2.0f) { - temp_r29 = 1; - } - } else if(temp_r31->unk54 == 64) { - if(temp_r31->unk40 != temp_r31->unk42) { - temp_r31->unk40 = temp_r31->unk42; - } - temp_r29 = 1; - } else { - temp_r29 = 1; - } - if(temp_r29) { - fn_1_ABC0(object, 192, 128); - temp_r31->unk42 = temp_r31->unk40-1; - if(temp_r31->unk42 < 0) { - temp_r31->unk42 = 9; - } - } - } - temp_r31->unk50 = temp_r31->unk40; - temp_r31->unk54 = fn_1_ABA0(object, 192); - temp_r31->unk58 = temp_r28; - temp_r31->unk5A = temp_r26; + float temp_f31; + float temp_f30; + float temp_f28; + + Bss61CWork *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + + Vec sp10; + u16 sp8; + Bss12CInner *temp_r25; + temp_r31 = object->data; + if (temp_r31->unk38 == 3 || temp_r31->unk38 == 5) { + return; + } + sp8 = fn_1_2090(28); + if ((temp_r31->unk0 & 0x20) || (fn_1_2090(28) != 12 && temp_r31->unk86 == 0)) { + temp_r28 = temp_r26 = 0; + } + else { + temp_r28 = temp_r31->unkB4; + temp_r26 = temp_r31->unkB5; + } + temp_r30 = temp_r29 = 0; + if (temp_r31->unk52 == 0) { + switch (temp_r31->unkC) { + case 0: + if (temp_r28 > 10) { + temp_r30 = 1; + } + else if (temp_r28 < -10) { + temp_r29 = 1; + } + break; + + case 1: + if (ABS(temp_r28) >= 10 || ABS(temp_r26) >= 10) { + temp_r25 = &lbl_1_bss_12C[temp_r31->unkA].unk1C[temp_r31->unk40]; + sp10.x = temp_r28 + lbl_1_bss_12C[temp_r31->unkA].unkE4[temp_r31->unk40][0]; + sp10.z = lbl_1_bss_12C[temp_r31->unkA].unkE4[temp_r31->unk40][1] - temp_r26; + temp_f28 = (temp_r25->unk0.x * sp10.x) + (temp_r25->unk0.z * sp10.z) - temp_r25->unkC; + if (temp_f28 > 0.0f) { + if (temp_r31->unk50 != temp_r31->unk40) { + if (temp_r31->unk54 == 128) { + temp_r31->unk52 = 1; + } + } + else { + temp_r30 = 1; + } + } + else { + if (temp_f28 < 0.0f) { + if (temp_r31->unk50 != temp_r31->unk40) { + if (temp_r31->unk54 == 64) { + temp_r31->unk52 = 1; + } + } + else { + temp_r29 = 1; + } + } + } + } + break; + } + } + else { + if (temp_r31->unk58 != temp_r28 || temp_r31->unk5A != temp_r26) { + temp_r31->unk52 = 0; + } + } + temp_f31 = temp_r31->unk24.x - temp_r31->unk14->unk24.x; + temp_f30 = temp_r31->unk24.z - temp_r31->unk14->unk24.z; + temp_f28 = VECMagPoint(temp_f31, 0, temp_f30); + if (temp_f28 < 90 && (temp_r31->unk0 & 0x20) == 0) { + if (fn_1_938C(object) == 0) { + temp_r30 = 0; + temp_r29 = 1; + } + else { + temp_r30 = 1; + temp_r29 = 0; + } + temp_r31->unk0 |= 0x20; + } + else { + if (temp_r31->unk54 == 64) { + temp_r27 = temp_r31->unk42 - temp_r31->unk40; + if (temp_r27 < 0) { + temp_r27 += 10; + } + if (temp_r27 > 1) { + temp_r31->unk42 = 1; + } + } + else { + temp_r27 = temp_r31->unk40 - temp_r31->unk42; + if (temp_r27 < 0) { + temp_r27 += 10; + } + if (temp_r27 > 1) { + temp_r31->unk42 = 9; + } + } + } + if (temp_r30) { + temp_r30 = 0; + if (temp_r31->unk54 == 64) { + if (temp_r31->unk44.z <= 2.0f) { + temp_r30 = 1; + } + } + else if (temp_r31->unk54 == 128) { + if (temp_r31->unk40 != temp_r31->unk42) { + temp_r31->unk40 = temp_r31->unk42; + } + temp_r30 = 1; + } + else { + temp_r30 = 1; + } + if (temp_r30) { + fn_1_ABC0(object, 192, 64); + temp_r31->unk42 = temp_r31->unk40 + 1; + if (temp_r31->unk42 >= 10) { + temp_r31->unk42 = 0; + } + } + } + else if (temp_r29) { + temp_r29 = 0; + if (temp_r31->unk54 == 128) { + if (temp_r31->unk44.z <= 2.0f) { + temp_r29 = 1; + } + } + else if (temp_r31->unk54 == 64) { + if (temp_r31->unk40 != temp_r31->unk42) { + temp_r31->unk40 = temp_r31->unk42; + } + temp_r29 = 1; + } + else { + temp_r29 = 1; + } + if (temp_r29) { + fn_1_ABC0(object, 192, 128); + temp_r31->unk42 = temp_r31->unk40 - 1; + if (temp_r31->unk42 < 0) { + temp_r31->unk42 = 9; + } + } + } + temp_r31->unk50 = temp_r31->unk40; + temp_r31->unk54 = fn_1_ABA0(object, 192); + temp_r31->unk58 = temp_r28; + temp_r31->unk5A = temp_r26; } s16 fn_1_938C(omObjData *object) { - Bss61CWork *temp_r31; - float temp_f31; - temp_r31 = object->data; - temp_f31 = temp_r31->unk44.y-temp_r31->unk14->unk44.y; - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } else if(temp_f31 < -180.0f) { - temp_f31 = 360.0f+temp_f31; - } - return (temp_f31 <= 0.0f) ? 0 : 1; + Bss61CWork *temp_r31; + float temp_f31; + temp_r31 = object->data; + temp_f31 = temp_r31->unk44.y - temp_r31->unk14->unk44.y; + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + else if (temp_f31 < -180.0f) { + temp_f31 = 360.0f + temp_f31; + } + return (temp_f31 <= 0.0f) ? 0 : 1; } void fn_1_98D4(omObjData *object); @@ -600,64 +604,68 @@ void fn_1_B0E8(omObjData *object, s16 arg1, u32 arg2); void fn_1_9440(omObjData *object) { - Bss61CWork *temp_r31; - Bss12CStruct *temp_r29; - s16 temp_r28; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss61CWork), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - memset(temp_r31, 0, sizeof(Bss61CWork)); - object->stat |= 0x100; - temp_r31->unk4 = object->work[0]; - temp_r31->unk6 = GWPlayerCfg[temp_r31->unk4].pad_idx; - temp_r31->unk8 = GWPlayerCfg[temp_r31->unk4].character; - temp_r31->unkA = GWPlayerCfg[temp_r31->unk4].group; - temp_r31->unkC = (GWPlayerCfg[temp_r31->unk4].iscom) ? 0 : 1; - temp_r31->unkAC = 0; - object->model[0] = CharModelCreate(temp_r31->unk8, 2); - Hu3DModelLayerSet(object->model[0], 0); - Hu3DModelShadowSet(object->model[0]); - CharModelStepTypeSet(temp_r31->unk8, 0); - for(temp_r28=0; temp_r28<8; temp_r28++) { - if(lbl_1_data_1F4[temp_r28] != -1) { - object->motion[temp_r28] = CharModelMotionCreate(temp_r31->unk8, lbl_1_data_1F4[temp_r28]); - } else { - object->motion[temp_r28] = Hu3DJointMotionFile(object->model[0], 0x3E0021+temp_r31->unk8); - } - if(temp_r28 == 4 || temp_r28 == 5) { - CharModelVoiceEnableSet(temp_r31->unk8, object->motion[temp_r28], 0); - } - } - CharModelMotionDataClose(temp_r31->unk8); - temp_r29 = &lbl_1_bss_12C[temp_r31->unkA]; - for(temp_r28=0; temp_r28<8; temp_r28++) { - temp_r31->unk5E[temp_r28] = -1; - } - if(temp_r31->unkA == 0) { - if(temp_r29->unk0[0] == object->work[0]) { - temp_r31->unk44.y = lbl_1_bss_62C[9].unk4; - } else { - temp_r31->unk44.y = lbl_1_bss_62C[4].unk4; - } - } else { - if(temp_r29->unk0[0] == object->work[0]) { - temp_r31->unk44.y = lbl_1_bss_62C[5].unk4; - } else { - temp_r31->unk44.y = lbl_1_bss_62C[0].unk4; - } - } - temp_r31->unk40 = (temp_r31->unk44.y/360.0f)*10.0f; - temp_r31->unk42 = temp_r31->unk40; - temp_r31->unk10 = lbl_1_data_1D4[temp_r31->unk8]; - temp_r31->unk24.x = ((temp_r29->unk18+temp_r31->unk10)*sind(temp_r31->unk44.y))+temp_r29->unkC.x; - temp_r31->unk24.y = temp_r29->unkC.y; - temp_r31->unk24.z = ((temp_r29->unk18+temp_r31->unk10)*cosd(temp_r31->unk44.y))+temp_r29->unkC.z; - temp_r31->unk30 = atan2d(temp_r29->unkC.x-temp_r31->unk24.x, temp_r29->unkC.z-temp_r31->unk24.z); - Hu3DModelPosSet(object->model[0], temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z); - Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0); - temp_r31->unk38 = temp_r31->unk3A = -1; - fn_1_B0E8(object, 0, 10); - lbl_1_data_260[object->work[0]] = 1; - object->func = fn_1_98D4; + Bss61CWork *temp_r31; + Bss12CStruct *temp_r29; + s16 temp_r28; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss61CWork), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + memset(temp_r31, 0, sizeof(Bss61CWork)); + object->stat |= 0x100; + temp_r31->unk4 = object->work[0]; + temp_r31->unk6 = GWPlayerCfg[temp_r31->unk4].pad_idx; + temp_r31->unk8 = GWPlayerCfg[temp_r31->unk4].character; + temp_r31->unkA = GWPlayerCfg[temp_r31->unk4].group; + temp_r31->unkC = (GWPlayerCfg[temp_r31->unk4].iscom) ? 0 : 1; + temp_r31->unkAC = 0; + object->model[0] = CharModelCreate(temp_r31->unk8, 2); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelShadowSet(object->model[0]); + CharModelStepTypeSet(temp_r31->unk8, 0); + for (temp_r28 = 0; temp_r28 < 8; temp_r28++) { + if (lbl_1_data_1F4[temp_r28] != -1) { + object->motion[temp_r28] = CharModelMotionCreate(temp_r31->unk8, lbl_1_data_1F4[temp_r28]); + } + else { + object->motion[temp_r28] = Hu3DJointMotionFile(object->model[0], DATA_MAKE_NUM(DATADIR_M431, 0x21) + temp_r31->unk8); + } + if (temp_r28 == 4 || temp_r28 == 5) { + CharModelVoiceEnableSet(temp_r31->unk8, object->motion[temp_r28], 0); + } + } + CharModelMotionDataClose(temp_r31->unk8); + temp_r29 = &lbl_1_bss_12C[temp_r31->unkA]; + for (temp_r28 = 0; temp_r28 < 8; temp_r28++) { + temp_r31->unk5E[temp_r28] = -1; + } + if (temp_r31->unkA == 0) { + if (temp_r29->unk0[0] == object->work[0]) { + temp_r31->unk44.y = lbl_1_bss_62C[9].unk4; + } + else { + temp_r31->unk44.y = lbl_1_bss_62C[4].unk4; + } + } + else { + if (temp_r29->unk0[0] == object->work[0]) { + temp_r31->unk44.y = lbl_1_bss_62C[5].unk4; + } + else { + temp_r31->unk44.y = lbl_1_bss_62C[0].unk4; + } + } + temp_r31->unk40 = (temp_r31->unk44.y / 360.0f) * 10.0f; + temp_r31->unk42 = temp_r31->unk40; + temp_r31->unk10 = lbl_1_data_1D4[temp_r31->unk8]; + temp_r31->unk24.x = ((temp_r29->unk18 + temp_r31->unk10) * sind(temp_r31->unk44.y)) + temp_r29->unkC.x; + temp_r31->unk24.y = temp_r29->unkC.y; + temp_r31->unk24.z = ((temp_r29->unk18 + temp_r31->unk10) * cosd(temp_r31->unk44.y)) + temp_r29->unkC.z; + temp_r31->unk30 = atan2d(temp_r29->unkC.x - temp_r31->unk24.x, temp_r29->unkC.z - temp_r31->unk24.z); + Hu3DModelPosSet(object->model[0], temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z); + Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0); + temp_r31->unk38 = temp_r31->unk3A = -1; + fn_1_B0E8(object, 0, 10); + lbl_1_data_260[object->work[0]] = 1; + object->func = fn_1_98D4; } void fn_1_9A04(omObjData *object); @@ -676,364 +684,399 @@ s32 fn_1_B494(s32 arg0, s32 arg1); void fn_1_98D4(omObjData *object) { - Vec sp8; - - Bss61CWork *temp_r31; - ModelData *temp_r29; - temp_r31 = object->data; - temp_r29 = &Hu3DData[object->model[0]]; - sp8.x = temp_r31->unk24.x-temp_r29->pos.x; - sp8.z = temp_r31->unk24.z-temp_r29->pos.z; - if((temp_r31->unk0 & 0x600) == 0 || 0.0f != sp8.x || 0.0f != sp8.z || (temp_r31->unk0 & 0x20)) { - fn_1_9A04(object); - fn_1_9C5C(object); - fn_1_A0F8(object); - } else { - fn_1_A450(object); - } - fn_1_B18C(object); - Hu3DModelPosSet(object->model[0], temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z); - Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0); - + Vec sp8; + + Bss61CWork *temp_r31; + ModelData *temp_r29; + temp_r31 = object->data; + temp_r29 = &Hu3DData[object->model[0]]; + sp8.x = temp_r31->unk24.x - temp_r29->pos.x; + sp8.z = temp_r31->unk24.z - temp_r29->pos.z; + if ((temp_r31->unk0 & 0x600) == 0 || 0.0f != sp8.x || 0.0f != sp8.z || (temp_r31->unk0 & 0x20)) { + fn_1_9A04(object); + fn_1_9C5C(object); + fn_1_A0F8(object); + } + else { + fn_1_A450(object); + } + fn_1_B18C(object); + Hu3DModelPosSet(object->model[0], temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z); + Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0); } +#if VERSION_NTSC +#define fn_1_9A04_CHECK (temp_r29->unk_0C == -1 && temp_r29->unk_64 == 14.0f) +#else +#define fn_1_9A04_CHECK (temp_r29->unk_0C == -1 && temp_r29->unk_64 >= 14.0f && temp_r31->unk3C_pal == 0) +#endif + void fn_1_9A04(omObjData *object) { - Bss61CWork *temp_r31; - ModelData *temp_r29; - - temp_r29 = &Hu3DData[object->model[0]]; - temp_r31 = object->data; - if(fn_1_2090(28) != 12 || fn_1_2090(224) != 0) { - return; - } - if(fn_1_4724() == 2) { - return; - } - if(fn_1_ABA0(object, 192) != 0) { - return; - } - if(temp_r31->unk38 == 0) { - if(temp_r29->unk_0C == -1 && temp_r31->unkB2 == PAD_BUTTON_A) { - if(fn_1_4CDC(temp_r31->unkA, temp_r31->unk40)) { - fn_1_B0E8(object, 3, 4); - fn_1_B130(object, 0, 8); - } - } - } else { - if(temp_r31->unk38 == 3) { - if(temp_r29->unk_0C == -1 && temp_r29->unk_64 == 14.0f) { - temp_r31->unk5C = fn_1_4B14(temp_r31->unkA, temp_r31->unk40, &temp_r31->unk7E); - if(temp_r31->unk5C != -1) { - if(temp_r31->unkA == 0) { - HuAudFXPlay(1668); - } else { - HuAudFXPlay(1673); - } - if(temp_r31->unk7E != 0) { - omVibrate(temp_r31->unk4, 12, 6, 6); - if(temp_r31->unkA == 0) { - fn_1_B494(1666, 30); - } else { - fn_1_B494(1671, 30); - } - } else { - if(temp_r31->unkA == 0) { - fn_1_B494(1667, 30); - } else { - fn_1_B494(1672, 30); - } - } - temp_r31->unk70++; - Hu3DModelPosSet(temp_r31->unk5C, 0, 0, 0); - Hu3DModelHookSet(object->model[0], lbl_1_data_230[temp_r31->unk8], temp_r31->unk5C); - fn_1_B150(object, fn_1_AA40); - } - } - } - } + Bss61CWork *temp_r31; + ModelData *temp_r29; + + temp_r29 = &Hu3DData[object->model[0]]; + temp_r31 = object->data; + if (fn_1_2090(28) != 12 || fn_1_2090(224) != 0) { + return; + } + if (fn_1_4724() == 2) { + return; + } + if (fn_1_ABA0(object, 192) != 0) { + return; + } + if (temp_r31->unk38 == 0) { + if (temp_r29->unk_0C == -1 && temp_r31->unkB2 == PAD_BUTTON_A) { + if (fn_1_4CDC(temp_r31->unkA, temp_r31->unk40)) { + fn_1_B0E8(object, 3, 4); + fn_1_B130(object, 0, 8); +#if VERSION_PAL + temp_r31->unk3C_pal = 0; +#endif + } + } + } + else { + if (temp_r31->unk38 == 3) { + if (fn_1_9A04_CHECK) { +#if VERSION_PAL + temp_r31->unk3C_pal = 1; +#endif + temp_r31->unk5C = fn_1_4B14(temp_r31->unkA, temp_r31->unk40, &temp_r31->unk7E); + if (temp_r31->unk5C != -1) { + if (temp_r31->unkA == 0) { + HuAudFXPlay(1668); + } + else { + HuAudFXPlay(1673); + } + if (temp_r31->unk7E != 0) { + omVibrate(temp_r31->unk4, 12, 6, 6); + if (temp_r31->unkA == 0) { + fn_1_B494(1666, 0.5f * REFRESH_RATE); + } + else { + fn_1_B494(1671, 0.5f * REFRESH_RATE); + } + } + else { + if (temp_r31->unkA == 0) { + fn_1_B494(1667, 0.5f * REFRESH_RATE); + } + else { + fn_1_B494(1672, 0.5f * REFRESH_RATE); + } + } + temp_r31->unk70++; + Hu3DModelPosSet(temp_r31->unk5C, 0, 0, 0); + Hu3DModelHookSet(object->model[0], lbl_1_data_230[temp_r31->unk8], temp_r31->unk5C); + fn_1_B150(object, fn_1_AA40); + } + } + } + } } void fn_1_9C5C(omObjData *object) { - float temp_f31; - Bss61CWork *temp_r31; - Bss12CStruct *temp_r30; - s8 temp_r29; - u32 temp_r27; - temp_r31 = object->data; - temp_r30 = &lbl_1_bss_12C[temp_r31->unkA]; - temp_r29 = 0; - if((temp_r27 = fn_1_ABA0(object, 192)) == 0) { - return; - } - if(temp_r27 == 192) { - temp_r29 = 1; - } else if(temp_r27 == 64) { - temp_r31->unk44.x += 0.3f; - if(temp_r31->unk44.x > 1.5f) { - temp_r31->unk44.x = 1.5f; - } - temp_r31->unk44.y += temp_r31->unk44.x; - temp_f31 = lbl_1_bss_62C[temp_r31->unk42].unk4; - if(temp_r31->unk40 == 9 && temp_r31->unk42 == 0) { - temp_f31 += 360.0f; - } else { - if(temp_r31->unk44.y >= 360.0f) { - temp_r31->unk44.y -= 360.0f; - } - } - temp_r31->unk44.z = ABS(temp_r31->unk44.y-temp_f31); - if(temp_r31->unk44.y >= temp_f31) { - temp_r29 = 1; - } - } else { - temp_r31->unk44.x -= 0.3f; - if(temp_r31->unk44.x < -1.5f) { - temp_r31->unk44.x = -1.5f; - } - temp_r31->unk44.y += temp_r31->unk44.x; - temp_f31 = lbl_1_bss_62C[temp_r31->unk42].unk4; - if(temp_r31->unk42 == 9 && temp_r31->unk40 == 0) { - if(temp_r31->unk44.y < 0.0f) { - temp_r31->unk44.y += 360.0f; - } else { - temp_f31 -= 360.0f; - } - } else { - if(temp_r31->unk42 == 0 || temp_r31->unk40 == 0) { - if(temp_r31->unk44.y < 0.0f) { - temp_r31->unk44.y += 360.0f; - temp_f31 += 360.0f; - } - } else { - if(temp_r31->unk44.y < 0.0f) { - temp_r31->unk44.y += 360.0f; - } - } - } - temp_r31->unk44.z = ABS(temp_r31->unk44.y-temp_f31); - if(temp_r31->unk44.y <= temp_f31) { - temp_r29 = 1; - } - } - if(temp_r29 != 0) { - temp_r31->unk44.x = 0; - temp_r31->unk44.y = lbl_1_bss_62C[temp_r31->unk42].unk4; - temp_r31->unk0 &= ~0xE0; - } - temp_r31->unk40 = (temp_r31->unk44.y/360.0f)*10.0f; - if(temp_r31->unk40 >= 10) { - temp_r31->unk40 -= 10; - } - temp_r31->unk24.x = ((temp_r30->unk18+temp_r31->unk10)*sind(temp_r31->unk44.y))+temp_r30->unkC.x; - temp_r31->unk24.y = temp_r30->unkC.y; - temp_r31->unk24.z = ((temp_r30->unk18+temp_r31->unk10)*cosd(temp_r31->unk44.y))+temp_r30->unkC.z; - fn_1_B0E8(object, 2, 8); + float temp_f31; + Bss61CWork *temp_r31; + Bss12CStruct *temp_r30; + s8 temp_r29; + u32 temp_r27; + temp_r31 = object->data; + temp_r30 = &lbl_1_bss_12C[temp_r31->unkA]; + temp_r29 = 0; + if ((temp_r27 = fn_1_ABA0(object, 192)) == 0) { + return; + } + if (temp_r27 == 192) { + temp_r29 = 1; + } + else if (temp_r27 == 64) { + temp_r31->unk44.x += 0.3f; + if (temp_r31->unk44.x > 1.5f) { + temp_r31->unk44.x = 1.5f; + } + temp_r31->unk44.y += temp_r31->unk44.x; + temp_f31 = lbl_1_bss_62C[temp_r31->unk42].unk4; + if (temp_r31->unk40 == 9 && temp_r31->unk42 == 0) { + temp_f31 += 360.0f; + } + else { + if (temp_r31->unk44.y >= 360.0f) { + temp_r31->unk44.y -= 360.0f; + } + } + temp_r31->unk44.z = ABS(temp_r31->unk44.y - temp_f31); + if (temp_r31->unk44.y >= temp_f31) { + temp_r29 = 1; + } + } + else { + temp_r31->unk44.x -= 0.3f; + if (temp_r31->unk44.x < -1.5f) { + temp_r31->unk44.x = -1.5f; + } + temp_r31->unk44.y += temp_r31->unk44.x; + temp_f31 = lbl_1_bss_62C[temp_r31->unk42].unk4; + if (temp_r31->unk42 == 9 && temp_r31->unk40 == 0) { + if (temp_r31->unk44.y < 0.0f) { + temp_r31->unk44.y += 360.0f; + } + else { + temp_f31 -= 360.0f; + } + } + else { + if (temp_r31->unk42 == 0 || temp_r31->unk40 == 0) { + if (temp_r31->unk44.y < 0.0f) { + temp_r31->unk44.y += 360.0f; + temp_f31 += 360.0f; + } + } + else { + if (temp_r31->unk44.y < 0.0f) { + temp_r31->unk44.y += 360.0f; + } + } + } + temp_r31->unk44.z = ABS(temp_r31->unk44.y - temp_f31); + if (temp_r31->unk44.y <= temp_f31) { + temp_r29 = 1; + } + } + if (temp_r29 != 0) { + temp_r31->unk44.x = 0; + temp_r31->unk44.y = lbl_1_bss_62C[temp_r31->unk42].unk4; + temp_r31->unk0 &= ~0xE0; + } + temp_r31->unk40 = (temp_r31->unk44.y / 360.0f) * 10.0f; + if (temp_r31->unk40 >= 10) { + temp_r31->unk40 -= 10; + } + temp_r31->unk24.x = ((temp_r30->unk18 + temp_r31->unk10) * sind(temp_r31->unk44.y)) + temp_r30->unkC.x; + temp_r31->unk24.y = temp_r30->unkC.y; + temp_r31->unk24.z = ((temp_r30->unk18 + temp_r31->unk10) * cosd(temp_r31->unk44.y)) + temp_r30->unkC.z; + fn_1_B0E8(object, 2, 8); } void fn_1_A0F8(omObjData *object) { - Vec sp8; - Bss61CWork *temp_r31; - ModelData *temp_r29; - Bss12CStruct *temp_r28; - s32 temp_r27; - temp_r29 = &Hu3DData[object->model[0]]; - temp_r31 = object->data; - temp_r28 = &lbl_1_bss_12C[temp_r31->unkA]; - temp_r27 = 0; - if(temp_r31->unk38 == 3 || temp_r31->unk38 == 5) { - return; - } - sp8.x = temp_r31->unk24.x-temp_r29->pos.x; - sp8.z = temp_r31->unk24.z-temp_r29->pos.z; - if(0.0f == sp8.x && 0.0f == sp8.z) { - if(fn_1_2090(224) == 0 && temp_r31->unk38 == 2 && (temp_r31->unkB0 & PAD_BUTTON_A)) { - temp_r31->unk7A = 1; - } - if(temp_r31->unk78 == 0) { - sp8.x = temp_r28->unkC.x-temp_r31->unk24.x; - sp8.z = temp_r28->unkC.z-temp_r31->unk24.z; - temp_r31->unk8C.x = temp_r31->unk30; - temp_r31->unk8C.y = atan2d(sp8.x, sp8.z); - temp_r31->unk8C.z = 0; - if(temp_r31->unk8C.y < 0.0f) { - temp_r31->unk8C.y += 360.0f; - } - temp_r31->unk78 = 1; - } - temp_r31->unk8C.z += 0.1f; - if(temp_r31->unk8C.z >= 1.0f) { - temp_r31->unk8C.z = 1.0f; - if(temp_r31->unk7A == 0) { - fn_1_B0E8(object, 0, 8); - } else { - if(fn_1_4CDC(temp_r31->unkA, temp_r31->unk40) && fn_1_2090(28) == 12 && fn_1_2090(224) == 0 && fn_1_4724() < 2) { - fn_1_B0E8(object, 3, 4); - fn_1_B130(object, 0, 8); - temp_r27 = 1; - } - if(temp_r27 == 0) { - fn_1_B0E8(object, 0, 8); - } - } - temp_r31->unk7A = 0; - } - temp_r31->unk30 = fn_1_6504(temp_r31->unk8C.x, temp_r31->unk8C.y, temp_r31->unk8C.z); - } else { - temp_r31->unk78 = temp_r31->unk7A = 0; - temp_r31->unk30 = atan2d(sp8.x, sp8.z); - if(temp_r31->unk30 < 0.0f) { - temp_r31->unk30 += 360.0f; - } - - } - lbl_1_bss_9C[object->work[0]] = temp_r31->unk0 & 0xC0; + Vec sp8; + Bss61CWork *temp_r31; + ModelData *temp_r29; + Bss12CStruct *temp_r28; + s32 temp_r27; + temp_r29 = &Hu3DData[object->model[0]]; + temp_r31 = object->data; + temp_r28 = &lbl_1_bss_12C[temp_r31->unkA]; + temp_r27 = 0; + if (temp_r31->unk38 == 3 || temp_r31->unk38 == 5) { + return; + } + sp8.x = temp_r31->unk24.x - temp_r29->pos.x; + sp8.z = temp_r31->unk24.z - temp_r29->pos.z; + if (0.0f == sp8.x && 0.0f == sp8.z) { + if (fn_1_2090(224) == 0 && temp_r31->unk38 == 2 && (temp_r31->unkB0 & PAD_BUTTON_A)) { + temp_r31->unk7A = 1; + } + if (temp_r31->unk78 == 0) { + sp8.x = temp_r28->unkC.x - temp_r31->unk24.x; + sp8.z = temp_r28->unkC.z - temp_r31->unk24.z; + temp_r31->unk8C.x = temp_r31->unk30; + temp_r31->unk8C.y = atan2d(sp8.x, sp8.z); + temp_r31->unk8C.z = 0; + if (temp_r31->unk8C.y < 0.0f) { + temp_r31->unk8C.y += 360.0f; + } + temp_r31->unk78 = 1; + } + temp_r31->unk8C.z += 0.1f; + if (temp_r31->unk8C.z >= 1.0f) { + temp_r31->unk8C.z = 1.0f; + if (temp_r31->unk7A == 0) { + fn_1_B0E8(object, 0, 8); + } + else { + if (fn_1_4CDC(temp_r31->unkA, temp_r31->unk40) && fn_1_2090(28) == 12 && fn_1_2090(224) == 0 && fn_1_4724() < 2) { + fn_1_B0E8(object, 3, 4); + fn_1_B130(object, 0, 8); +#if VERSION_PAL + temp_r31->unk3C_pal = 0; +#endif + temp_r27 = 1; + } + if (temp_r27 == 0) { + fn_1_B0E8(object, 0, 8); + } + } + temp_r31->unk7A = 0; + } + temp_r31->unk30 = fn_1_6504(temp_r31->unk8C.x, temp_r31->unk8C.y, temp_r31->unk8C.z); + } + else { + temp_r31->unk78 = temp_r31->unk7A = 0; + temp_r31->unk30 = atan2d(sp8.x, sp8.z); + if (temp_r31->unk30 < 0.0f) { + temp_r31->unk30 += 360.0f; + } + } + lbl_1_bss_9C[object->work[0]] = temp_r31->unk0 & 0xC0; } void fn_1_A450(omObjData *object) { - float temp_f31; - Bss61CWork *temp_r31; - s32 temp_r29; - ModelData *temp_r28; - temp_r28 = &Hu3DData[object->model[0]]; - temp_r31 = object->data; - if(temp_r31->unk38 == 3) { - return; - } - temp_r31->unk7A = 0; - switch(temp_r31->unk80) { - case 0: - temp_r31->unk9C.y += 0.05f; - if(temp_r31->unk9C.y > 1.0f) { - temp_r31->unk9C.y = 1.0f; - temp_r31->unk80++; - } - temp_r29 = fn_1_2090(28); - if(temp_r29 >= 16 && lbl_1_bss_4) { - temp_f31 = CRot.y; - } else { - temp_f31 = 0.0f; - } - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } else if(temp_f31 >= 360.0f) { - temp_f31 -= 360.0f; - } - temp_r31->unk30 = fn_1_6504(temp_r31->unk9C.x, temp_f31, temp_r31->unk9C.y); - fn_1_B0E8(object, 2, 8); - break; - - case 1: - temp_r31->unk3A = -1; - temp_r29 = fn_1_2090(28); - if(temp_r29 >= 16 && lbl_1_bss_4) { - if(temp_r31->unkAC == 0) { - fn_1_B0E8(object, 6, 4); - } else { - fn_1_B0E8(object, 7, 4); - } - temp_r31->unk80 = 99; - } else { - fn_1_B0E8(object, 4, 4); - HuAudCharVoicePlay(temp_r31->unk8, 290); - temp_r31->unk80++; - } - break; - - case 2: - if(temp_r28->unk_0C == -1) { - if(Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])-1.0f){ - fn_1_B0E8(object, 1, 8); - temp_r31->unk9C.y = 0; - temp_r31->unk80++; - } - } - break; - - case 3: - temp_r31->unk9C.y += 0.05f; - if(temp_r31->unk9C.y > 1.0f) { - if(fn_1_2090(1)) { - fn_1_2050(2, 2); - } - fn_1_B0E8(object, 0, 8); - fn_1_ABC0(object, 0x600, 0); - temp_r31->unk9C.y = 1.0f; - temp_r31->unk80++; - } - if(!temp_r31->unkAC) { - temp_r31->unk30 = fn_1_6504(0, temp_r31->unk9C.x, temp_r31->unk9C.y); - } - break; - } + float temp_f31; + Bss61CWork *temp_r31; + s32 temp_r29; + ModelData *temp_r28; + temp_r28 = &Hu3DData[object->model[0]]; + temp_r31 = object->data; + if (temp_r31->unk38 == 3) { + return; + } + temp_r31->unk7A = 0; + switch (temp_r31->unk80) { + case 0: + temp_r31->unk9C.y += 0.05f; + if (temp_r31->unk9C.y > 1.0f) { + temp_r31->unk9C.y = 1.0f; + temp_r31->unk80++; + } + temp_r29 = fn_1_2090(28); + if (temp_r29 >= 16 && lbl_1_bss_4) { + temp_f31 = CRot.y; + } + else { + temp_f31 = 0.0f; + } + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + else if (temp_f31 >= 360.0f) { + temp_f31 -= 360.0f; + } + temp_r31->unk30 = fn_1_6504(temp_r31->unk9C.x, temp_f31, temp_r31->unk9C.y); + fn_1_B0E8(object, 2, 8); + break; + + case 1: + temp_r31->unk3A = -1; + temp_r29 = fn_1_2090(28); + if (temp_r29 >= 16 && lbl_1_bss_4) { + if (temp_r31->unkAC == 0) { + fn_1_B0E8(object, 6, 4); + } + else { + fn_1_B0E8(object, 7, 4); + } + temp_r31->unk80 = 99; + } + else { + fn_1_B0E8(object, 4, 4); + HuAudCharVoicePlay(temp_r31->unk8, 290); + temp_r31->unk80++; + } + break; + + case 2: + if (temp_r28->unk_0C == -1) { + if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0]) - 1.0f) { + fn_1_B0E8(object, 1, 8); + temp_r31->unk9C.y = 0; + temp_r31->unk80++; + } + } + break; + + case 3: + temp_r31->unk9C.y += 0.05f; + if (temp_r31->unk9C.y > 1.0f) { + if (fn_1_2090(1)) { + fn_1_2050(2, 2); + } + fn_1_B0E8(object, 0, 8); + fn_1_ABC0(object, 0x600, 0); + temp_r31->unk9C.y = 1.0f; + temp_r31->unk80++; + } + if (!temp_r31->unkAC) { + temp_r31->unk30 = fn_1_6504(0, temp_r31->unk9C.x, temp_r31->unk9C.y); + } + break; + } } void fn_1_A7D0(s16 arg0) { - Bss61CWork *temp_r31; - Bss12CStruct *temp_r30; - s16 temp_r29; - s16 temp_r28; - temp_r30 = &lbl_1_bss_12C[arg0]; - if(arg0 == -1) { - return; - } - for(temp_r29=0; temp_r29<1; temp_r29++) { - if(temp_r29 == 0) { - temp_r30 = &lbl_1_bss_12C[arg0]; - } else { - temp_r30 = &lbl_1_bss_12C[arg0^1]; - } - for(temp_r28=0; temp_r28unk8; temp_r28++) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r28]]->data; - temp_r31->unk80 = 0; - temp_r31->unk9C.x = temp_r31->unk30; - temp_r31->unk9C.y = 0; - temp_r31->unk0 &= ~0x600; - - if(temp_r29 == 0) { - temp_r31->unk0 |= 0x200; - } else { - temp_r31->unk0 |= 0x400; - } - } - } + Bss61CWork *temp_r31; + Bss12CStruct *temp_r30; + s16 temp_r29; + s16 temp_r28; + temp_r30 = &lbl_1_bss_12C[arg0]; + if (arg0 == -1) { + return; + } + for (temp_r29 = 0; temp_r29 < 1; temp_r29++) { + if (temp_r29 == 0) { + temp_r30 = &lbl_1_bss_12C[arg0]; + } + else { + temp_r30 = &lbl_1_bss_12C[arg0 ^ 1]; + } + for (temp_r28 = 0; temp_r28 < temp_r30->unk8; temp_r28++) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r28]]->data; + temp_r31->unk80 = 0; + temp_r31->unk9C.x = temp_r31->unk30; + temp_r31->unk9C.y = 0; + temp_r31->unk0 &= ~0x600; + + if (temp_r29 == 0) { + temp_r31->unk0 |= 0x200; + } + else { + temp_r31->unk0 |= 0x400; + } + } + } } void fn_1_A904(s16 arg0) { - Bss61CWork *temp_r31; - Bss12CStruct *temp_r30; - s16 temp_r29; - s16 temp_r28; - temp_r30 = &lbl_1_bss_12C[arg0]; - if(arg0 == -1) { - return; - } - for(temp_r29=0; temp_r29<1; temp_r29++) { - if(temp_r29 == 0) { - temp_r30 = &lbl_1_bss_12C[arg0]; - } else { - temp_r30 = &lbl_1_bss_12C[arg0^1]; - } - for(temp_r28=0; temp_r28unk8; temp_r28++) { - temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r28]]->data; - temp_r31->unk80 = 1; - temp_r31->unk9C.x = temp_r31->unk30; - temp_r31->unk9C.y = 0; - temp_r31->unk0 &= ~0x600; - - if(temp_r29 == 0) { - temp_r31->unk0 |= 0x200; - } else { - temp_r31->unk0 |= 0x400; - } - temp_r31->unkAC = 1; - } - } + Bss61CWork *temp_r31; + Bss12CStruct *temp_r30; + s16 temp_r29; + s16 temp_r28; + temp_r30 = &lbl_1_bss_12C[arg0]; + if (arg0 == -1) { + return; + } + for (temp_r29 = 0; temp_r29 < 1; temp_r29++) { + if (temp_r29 == 0) { + temp_r30 = &lbl_1_bss_12C[arg0]; + } + else { + temp_r30 = &lbl_1_bss_12C[arg0 ^ 1]; + } + for (temp_r28 = 0; temp_r28 < temp_r30->unk8; temp_r28++) { + temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r28]]->data; + temp_r31->unk80 = 1; + temp_r31->unk9C.x = temp_r31->unk30; + temp_r31->unk9C.y = 0; + temp_r31->unk0 &= ~0x600; + + if (temp_r29 == 0) { + temp_r31->unk0 |= 0x200; + } + else { + temp_r31->unk0 |= 0x400; + } + temp_r31->unkAC = 1; + } + } } void fn_1_AC80(omObjData *object, Vec *arg1); @@ -1041,228 +1084,232 @@ void fn_1_B16C(omObjData *object); void fn_1_AA40(omObjData *object) { - Vec sp8; - Bss61CWork *temp_r30; - temp_r30 = object->data; - fn_1_AC80(object, &sp8); - fn_1_5B70(sp8.x, sp8.y, sp8.z, 20, NULL, -1); - Hu3DModelAttrSet(temp_r30->unk5C, 1); - Hu3DModelHookReset(object->model[0]); - temp_r30->unk5C = -1; - if(temp_r30->unk7E == 0) { - fn_1_B0E8(object, 5, 4); - fn_1_B130(object, 0, 8); - } - fn_1_B16C(object); + Vec sp8; + Bss61CWork *temp_r30; + temp_r30 = object->data; + fn_1_AC80(object, &sp8); + fn_1_5B70(sp8.x, sp8.y, sp8.z, 20, NULL, -1); + Hu3DModelAttrSet(temp_r30->unk5C, HU3D_ATTR_DISPOFF); + Hu3DModelHookReset(object->model[0]); + temp_r30->unk5C = -1; + if (temp_r30->unk7E == 0) { + fn_1_B0E8(object, 5, 4); + fn_1_B130(object, 0, 8); + } + fn_1_B16C(object); } Bss61CWork *fn_1_AAF0(omObjData *object) { - Bss12CStruct *temp_r31; - s16 temp_r30; - Bss61CWork *temp_r29 = object->data; - s32 sp8 = 0; - - temp_r31= &lbl_1_bss_12C[temp_r29->unkA]; - for(temp_r30=0; temp_r30unk8; temp_r30++) { - if(object->work[temp_r30] != temp_r31->unk0[temp_r30]) { - return lbl_1_bss_61C[temp_r31->unk0[temp_r30]]->data; - } - } - return NULL; + Bss12CStruct *temp_r31; + s16 temp_r30; + Bss61CWork *temp_r29 = object->data; + s32 sp8 = 0; + + temp_r31 = &lbl_1_bss_12C[temp_r29->unkA]; + for (temp_r30 = 0; temp_r30 < temp_r31->unk8; temp_r30++) { + if (object->work[temp_r30] != temp_r31->unk0[temp_r30]) { + return lbl_1_bss_61C[temp_r31->unk0[temp_r30]]->data; + } + } + return NULL; } u32 fn_1_ABA0(omObjData *object, u32 arg1) { - Bss61CWork *temp_r31 = object->data; - return temp_r31->unk0 & arg1; + Bss61CWork *temp_r31 = object->data; + return temp_r31->unk0 & arg1; } void fn_1_ABC0(omObjData *object, u32 arg1, u32 arg2) { - Bss61CWork *temp_r31 = object->data; - temp_r31->unk0 &= ~arg1; - temp_r31->unk0 |= arg2; + Bss61CWork *temp_r31 = object->data; + temp_r31->unk0 &= ~arg1; + temp_r31->unk0 |= arg2; } void fn_1_ABF0(s16 arg0, u32 arg1, u32 arg2) { - Bss12CStruct *temp_r31; - Bss61CWork *temp_r30; - s16 temp_r29; - temp_r31= &lbl_1_bss_12C[arg0]; - for(temp_r29=0; temp_r29unk8; temp_r29++) { - temp_r30 = lbl_1_bss_61C[temp_r31->unk0[temp_r29]]->data; - temp_r30->unk0 &= ~arg1; - temp_r30->unk0 |= arg2; - } + Bss12CStruct *temp_r31; + Bss61CWork *temp_r30; + s16 temp_r29; + temp_r31 = &lbl_1_bss_12C[arg0]; + for (temp_r29 = 0; temp_r29 < temp_r31->unk8; temp_r29++) { + temp_r30 = lbl_1_bss_61C[temp_r31->unk0[temp_r29]]->data; + temp_r30->unk0 &= ~arg1; + temp_r30->unk0 |= arg2; + } } void fn_1_AC80(omObjData *object, Vec *arg1) { - Bss61CWork *temp_r31; - float temp_f31; - temp_r31 = object->data; - temp_f31 = lbl_1_bss_62C[temp_r31->unk40].unk4; - arg1->x = temp_r31->unk24.x-(50.0*sind(temp_f31)); - arg1->y = temp_r31->unk24.y+100; - arg1->z = temp_r31->unk24.z-(50.0*cosd(temp_f31)); + Bss61CWork *temp_r31; + float temp_f31; + temp_r31 = object->data; + temp_f31 = lbl_1_bss_62C[temp_r31->unk40].unk4; + arg1->x = temp_r31->unk24.x - (50.0 * sind(temp_f31)); + arg1->y = temp_r31->unk24.y + 100; + arg1->z = temp_r31->unk24.z - (50.0 * cosd(temp_f31)); } float fn_1_AD88(s8 arg0) { - float temp_f31; - if(arg0 > 65) { - arg0 = 65; - } else if(arg0 < -65) { - arg0 = -65; - } - temp_f31 = arg0; - temp_f31 /= 65.0f; - return temp_f31; + float temp_f31; + if (arg0 > 65) { + arg0 = 65; + } + else if (arg0 < -65) { + arg0 = -65; + } + temp_f31 = arg0; + temp_f31 /= 65.0f; + return temp_f31; } float fn_1_AE04(s8 arg0, s8 arg1) { - float temp_f30; - temp_f30 = 0.01539*VECMagPoint(arg0, arg1, 0); - if(temp_f30 > 1.0f) { - temp_f30 = 1.0f; - } - return temp_f30; + float temp_f30; + temp_f30 = 0.01539 * VECMagPoint(arg0, arg1, 0); + if (temp_f30 > 1.0f) { + temp_f30 = 1.0f; + } + return temp_f30; } void fn_1_B0E8(omObjData *object, s16 arg1, u32 arg2) { - Bss61CWork *temp_r31 = object->data; - if(temp_r31->unk38 != arg1) { - temp_r31->unk0 &= ~0xF; - temp_r31->unk38 = arg1; - temp_r31->unk0 |= arg2; - } + Bss61CWork *temp_r31 = object->data; + if (temp_r31->unk38 != arg1) { + temp_r31->unk0 &= ~0xF; + temp_r31->unk38 = arg1; + temp_r31->unk0 |= arg2; + } } void fn_1_B130(omObjData *object, s16 arg1, u32 arg2) { - Bss61CWork *temp_r31 = object->data; - temp_r31->unk3A = arg1; - temp_r31->unk3C = arg2; + Bss61CWork *temp_r31 = object->data; + temp_r31->unk3A = arg1; + temp_r31->unk3C = arg2; } void fn_1_B150(omObjData *object, omObjFunc arg1) { - Bss61CWork *temp_r31 = object->data; - temp_r31->unk34 = arg1; + Bss61CWork *temp_r31 = object->data; + temp_r31->unk34 = arg1; } void fn_1_B16C(omObjData *object) { - fn_1_B150(object, NULL); + fn_1_B150(object, NULL); } void fn_1_B18C(omObjData *object) { - Bss61CWork *temp_r31; - u32 temp_r28; - ModelData *temp_r27; - omObjFunc temp_r25; - temp_r27 = &Hu3DData[object->model[0]]; - temp_r31 = object->data; - if(temp_r31->unk0 & 0x1) { - if(temp_r31->unk3A != -1 && temp_r27->unk_0C == -1) { - if(Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])) { - fn_1_B0E8(object, temp_r31->unk3A, temp_r31->unk3C); - temp_r31->unk3A = -1; - if(temp_r31->unk34) { - temp_r25 = temp_r31->unk34; - temp_r25(object); - } - } - } else { - return; - } - } else { - Hu3DModelAttrReset(object->model[0], 0x40000007); - switch(temp_r31->unk0 & 0xC) { - case 0: - temp_r28 = 0x40000002; - break; - - case 4: - temp_r28 = 0; - break; - - case 8: - temp_r28 = 0x40000001; - break; - } - if(temp_r31->unk0 & 0x2) { - Hu3DMotionSet(object->model[0], object->motion[temp_r31->unk38]); - Hu3DModelAttrSet(object->model[0], temp_r28); - } else { - Hu3DMotionShiftSet(object->model[0], object->motion[temp_r31->unk38], 0, 8, temp_r28); - } - temp_r31->unk0 |= 0x1; - } + Bss61CWork *temp_r31; + u32 temp_r28; + ModelData *temp_r27; + omObjFunc temp_r25; + temp_r27 = &Hu3DData[object->model[0]]; + temp_r31 = object->data; + if (temp_r31->unk0 & 0x1) { + if (temp_r31->unk3A != -1 && temp_r27->unk_0C == -1) { + if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])) { + fn_1_B0E8(object, temp_r31->unk3A, temp_r31->unk3C); + temp_r31->unk3A = -1; + if (temp_r31->unk34) { + temp_r25 = temp_r31->unk34; + temp_r25(object); + } + } + } + else { + return; + } + } + else { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + switch (temp_r31->unk0 & 0xC) { + case 0: + temp_r28 = HU3D_MOTATTR_PAUSE; + break; + + case 4: + temp_r28 = HU3D_MOTATTR_NONE; + break; + + case 8: + temp_r28 = HU3D_MOTATTR_LOOP; + break; + } + if (temp_r31->unk0 & 0x2) { + Hu3DMotionSet(object->model[0], object->motion[temp_r31->unk38]); + Hu3DModelAttrSet(object->model[0], temp_r28); + } + else { + Hu3DMotionShiftSet(object->model[0], object->motion[temp_r31->unk38], 0, 8, temp_r28); + } + temp_r31->unk0 |= 0x1; + } } void fn_1_B404(omObjData *object); void fn_1_B384(Process *objman) { - s32 *temp_r31; - s32 temp_r30; - omAddObjEx(objman, 100, 0, 0, -1, fn_1_B404); - temp_r31 = &lbl_1_bss_AC[0][0]; - for(temp_r30=0; temp_r30<16; temp_r30++, temp_r31 += 2) { - temp_r31[0] = -1; - temp_r31[1] = -1; - } + s32 *temp_r31; + s32 temp_r30; + omAddObjEx(objman, 100, 0, 0, -1, fn_1_B404); + temp_r31 = &lbl_1_bss_AC[0][0]; + for (temp_r30 = 0; temp_r30 < 16; temp_r30++, temp_r31 += 2) { + temp_r31[0] = -1; + temp_r31[1] = -1; + } } void fn_1_B404(omObjData *object) { - s32 *temp_r31; - s32 temp_r30; - temp_r31 = &lbl_1_bss_AC[0][0]; - for(temp_r30=0; temp_r30<16; temp_r30++, temp_r31 += 2) { - if(temp_r31[0] >= 0 && temp_r31[1] > 0) { - if(--temp_r31[1] <= 0) { - HuAudFXPlay(temp_r31[0]); - temp_r31[0] = -1; - temp_r31[1] = -1; - } - } - } + s32 *temp_r31; + s32 temp_r30; + temp_r31 = &lbl_1_bss_AC[0][0]; + for (temp_r30 = 0; temp_r30 < 16; temp_r30++, temp_r31 += 2) { + if (temp_r31[0] >= 0 && temp_r31[1] > 0) { + if (--temp_r31[1] <= 0) { + HuAudFXPlay(temp_r31[0]); + temp_r31[0] = -1; + temp_r31[1] = -1; + } + } + } } s32 fn_1_B494(s32 arg0, s32 arg1) { - s32 *temp_r31; - s32 temp_r30; - temp_r31 = &lbl_1_bss_AC[0][0]; - for(temp_r30=0; temp_r30<16; temp_r30++, temp_r31 += 2) { - if(temp_r31[0] == -1) { - break; - } - } - if(temp_r30 >= 16) { - return -1; - } - temp_r31[0] = arg0; - temp_r31[1] = arg1; - return temp_r30; + s32 *temp_r31; + s32 temp_r30; + temp_r31 = &lbl_1_bss_AC[0][0]; + for (temp_r30 = 0; temp_r30 < 16; temp_r30++, temp_r31 += 2) { + if (temp_r31[0] == -1) { + break; + } + } + if (temp_r30 >= 16) { + return -1; + } + temp_r31[0] = arg0; + temp_r31[1] = arg1; + return temp_r30; } s16 fn_1_B4F8(float arg0) { - return 10.0f*(arg0/360.0f); + return 10.0f * (arg0 / 360.0f); } s16 fn_1_B530(s16 arg0) { - if(arg0 >= 0 && arg0 <= 4) { - return 0; - } - return 1; + if (arg0 >= 0 && arg0 <= 4) { + return 0; + } + return 1; } diff --git a/src/REL/m432Dll/main.c b/src/REL/m432Dll/main.c new file mode 100644 index 00000000..038512c9 --- /dev/null +++ b/src/REL/m432Dll/main.c @@ -0,0 +1,3784 @@ +#include "REL/executor.h" +#include "dolphin/types.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" + +#include "game/gamework.h" +#include "game/gamework_data.h" + +#include "game/mapspace.h" +#include "game/pad.h" +#include "game/printfunc.h" + +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "game/esprite.h" +#include "game/sprite.h" + +#include "ext_math.h" + +#include "string.h" +#include "version.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/hsfex.h" + +void HuSysVWaitSet(s16 vcount); +#endif + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_5D0_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_5D0_struct *unk04; + /* 0x08 */ struct unk_bss_5D0_struct *unk08; +} UnkBss5D0Struct; // Size 0xC + +typedef struct unk_bss_5B8_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_5B8_struct *unk10; + /* 0x14 */ struct unk_bss_5B8_struct *unk14; +} UnkBss5B8Struct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; +} UnkBss428Struct; // Size 8 + +UnkBss5D0Struct lbl_1_bss_5D0; +UnkBss5B8Struct lbl_1_bss_5B8; +Process *lbl_1_bss_5B4; +Vec lbl_1_bss_5A8; +Vec lbl_1_bss_59C; +Vec lbl_1_bss_590; +Vec lbl_1_bss_584; +u32 lbl_1_bss_580; +s32 lbl_1_bss_57C; +u32 lbl_1_bss_578; // TODO maybe array? +s16 lbl_1_bss_576; +s16 lbl_1_bss_574; +s32 lbl_1_bss_570; +s32 lbl_1_bss_56C; +float lbl_1_bss_568; +s32 lbl_1_bss_528[16]; +UnkBss428Struct lbl_1_bss_428[32]; + +#if VERSION_NTSC +#define _1606_BY_REFRESH_RATE 26.766666f +#else +#define _1606_BY_REFRESH_RATE 32.120003f +#endif + +void fn_1_0(void) +{ + lbl_1_bss_5D0.unk04 = NULL; + lbl_1_bss_5D0.unk08 = NULL; +} + +void fn_1_24(u16 arg0, s16 arg1) +{ + UnkBss5D0Struct *temp_r31; + UnkBss5D0Struct *temp_r30; + UnkBss5D0Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_5D0; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +s16 fn_1_AC(s16 arg0) +{ + UnkBss5D0Struct *var_r31; + UnkBss5D0Struct *temp_r29; + UnkBss5D0Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_5D0.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +void fn_1_150(void) +{ + lbl_1_bss_5B8.unk10 = NULL; + lbl_1_bss_5B8.unk14 = NULL; +} + +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ + UnkBss5B8Struct *temp_r27; + UnkBss5B8Struct *var_r31; + UnkBss5B8Struct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_5B8; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +void fn_1_2D8(void) +{ + UnkBss5B8Struct *var_r31; + UnkBss5B8Struct *temp_r28; + UnkBss5B8Struct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_5B8.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +void fn_1_414(void) +{ + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_428[i].unk00 = 0; + lbl_1_bss_428[i].unk04 = -1; + } +} + +s16 fn_1_46C(s32 arg0) +{ + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_428[i].unk00) { + return Hu3DModelLink(lbl_1_bss_428[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_428[i].unk00 == 0) { + lbl_1_bss_428[i].unk00 = arg0; + lbl_1_bss_428[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_428[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; + } + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / REFRESH_RATE; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +void fn_1_798(s32 arg0) +{ + lbl_1_bss_568 = 0.0f; + lbl_1_bss_578 = lbl_1_bss_57C; + GWMGRecordSet(arg0, lbl_1_bss_578); + fn_1_580(lbl_1_bss_528, 7, lbl_1_bss_57C); +} + +void fn_1_9EC(void) +{ + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_528[i]); + } +} + +void fn_1_A40(void) +{ + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_568) { + lbl_1_bss_568 += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_568); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_528[i], temp_f31, temp_f31); + } + } +} + +void fn_1_B4C(float arg0, s32 arg1) +{ + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_528[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_528[15], 0.5f); + espColorSet(lbl_1_bss_528[15], 0, 0, 0); + espPosSet(lbl_1_bss_528[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_528[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_528[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_528[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_528[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_528, 7, lbl_1_bss_578); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_528[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_528[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_528, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_528[i], 0); + espDispOff(lbl_1_bss_528[i]); + espAttrSet(lbl_1_bss_528[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_528[i], 0x80 + i); + } +} + +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_5A8 = *arg0; + lbl_1_bss_590 = *arg2; +} + +s32 fn_1_13DC(float arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_5A8, &lbl_1_bss_59C, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_590, &lbl_1_bss_584, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } + else { + lbl_1_bss_56C = 1; + return 0; + } +} + +void fn_1_1710(float arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_5A8, &lbl_1_bss_59C, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_590, &lbl_1_bss_584, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_56C = 1; +} + +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + MTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + MTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + MTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +float fn_1_1E20(float arg0, float arg1, float arg2) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_1F24(s32 arg0) +{ + lbl_1_bss_570 = HuAudSeqPlay(arg0); +} + +void fn_1_1F58(s32 arg0) +{ + if (lbl_1_bss_570 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_570, arg0); + } + lbl_1_bss_570 = -1; +} + +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } + else { + var_r30 = 1; + } + } + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); +} + +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +s32 lbl_1_data_10[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +float lbl_1_data_30[0xA] = { 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 100.0f }; +float lbl_1_data_58[0xA] = { + 150.0f, + 170.0f, + 190.0f, + 170.0f, + 160.0f, + 150.0f, + 180.0f, + 200.0f, + 150.0f, + 200.0f, +}; + +// these are copied from m461Dll/main.c +typedef void (*PlayerOldHook)(omObjData *obj); +typedef Vec *(*PlayerOldPosHook)(omObjData *obj); + +typedef struct work_playerold { + omObjData *unk_00; + PlayerOldHook unk_04; + PlayerOldPosHook unk_08; + PlayerOldHook unk_0C; + PlayerOldHook unk_10; + s32 *unk_14; + s32 unk_18; + s32 unk_1C; + s32 unk_20; + s32 unk_24; + s32 unk_28; + s32 unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C; + s32 unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + Vec *unk_50; + Vec unk_54; + float unk_60; + s32 unk_64; + Vec *unk_68; + Vec unk_6C; + Vec unk_78; + Vec unk_84; + Vec unk_90; + float unk_9C; + float unk_A0; + float unk_A4; + float unk_A8; + Vec unk_AC; + float unk_B8; + float unk_BC; + float unk_C0; +} WorkPlayerOld; + +typedef WorkPlayerOld *(*PlayerOldFind)(int no); + +PlayerOldFind lbl_1_bss_424; +float lbl_1_bss_420; + +void fn_1_23B4(WorkPlayerOld *player) +{ + s32 i; + for (i = 0; i < 8; i++) { + if (player->unk_44 == player->unk_14[i]) { + player->unk_40 = lbl_1_data_10[i]; + return; + } + } + player->unk_40 = -1; +} + +void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, Vec *posB, float bYOfs) +{ + Vec pointA = *posA; + Vec pointB = *posB; + float dist; + pointA.y += aYOfs; + pointB.y += bYOfs; + dist = VECDistance(&pointA, &pointB); + if (*minDist > dist) { + *minDist = dist; + *state = stateNew; + } +} + +void fn_1_24F8(WorkPlayerOld *player1, WorkPlayerOld *player2, float *minDist, s32 *state) +{ + *minDist = 10 * (player1->unk_BC + player2->unk_BC); + fn_1_2418(minDist, state, 0, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_BC); + fn_1_2418(minDist, state, 1, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC); + fn_1_2418(minDist, state, 2, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC); + fn_1_2418(minDist, state, 3, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_BC); +} + +s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2) +{ + Vec dir; + Vec dir2; + float dist; + + player->unk_3C |= 0x1; + player->unk_90.x = player->unk_20 / 4.0f; + player->unk_90.z = -(float)player->unk_24 / 4.0f; + if (player->unk_90.x != 0.0f || player->unk_90.z != 0.0f) { + return; + } + VECSubtract(&player->unk_6C, &player2->unk_6C, &dir); + dist = VECMagXZ(&dir); + if (0.0f == dist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= dist; + dir.z /= dist; + } + VECSubtract(&player->unk_6C, &player->unk_78, &dir2); + dist = VECMagXZ(&dir2); + if (5 > dist) { + dist = 5; + } + player->unk_90.x = dir.x * dist; + player->unk_90.z = dir.z * dist; +} + +void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2) +{ + player->unk_38 = 1; + player->unk_84.y = arg1; + player->unk_A4 = arg2; + if (player->unk_3C & 0x2) { + player->unk_3C &= ~0x2; + } +} + +void fn_1_2C00(PlayerOldFind find, float yDist) +{ + lbl_1_bss_424 = find; + lbl_1_bss_420 = yDist; +} + +void fn_1_2C1C(WorkPlayerOld *player, omObjData *obj, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, Vec *pos, float arg7) +{ + player->unk_00 = obj; + player->unk_18 = arg2; + player->unk_1C = arg3; + player->unk_14 = arg4; + player->unk_04 = NULL; + player->unk_08 = NULL; + player->unk_0C = NULL; + player->unk_10 = NULL; + player->unk_50 = NULL; + player->unk_64 = 0; + player->unk_68 = 0; + player->unk_38 = 0; + player->unk_3C = 0; + player->unk_44 = arg5; + player->unk_48 = 0; + player->unk_4C = 0; + fn_1_23B4(player); + player->unk_9C = arg7; + player->unk_6C = *pos; + player->unk_78 = *pos; + player->unk_84.x = 0; + player->unk_84.y = 0; + player->unk_84.z = 0; + player->unk_B8 = 1; + player->unk_A8 = 0; + player->unk_BC = lbl_1_data_30[player->unk_1C]; + player->unk_C0 = lbl_1_data_58[player->unk_1C]; +} + +void fn_1_2DA8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_04 = func; +} + +void fn_1_2DB0(WorkPlayerOld *player, PlayerOldPosHook func) +{ + player->unk_08 = func; +} + +void fn_1_2DB8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_0C = func; +} + +void fn_1_2DC0(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_10 = func; +} + +void fn_1_2DC8(WorkPlayerOld *player, s32 count, Vec *data) +{ + player->unk_64 = count; + player->unk_68 = data; +} + +void fn_1_2DD4(WorkPlayerOld *player) +{ + omSetTra(player->unk_00, player->unk_6C.x, player->unk_6C.y, player->unk_6C.z); + omSetRot(player->unk_00, 0.0f, player->unk_9C, 0.0f); +} + +void fn_1_2E34(WorkPlayerOld *player) +{ + BOOL addTime; + s32 i; + player->unk_3C &= ~0x100; + if (player->unk_3C & 0x8) { + return; + } + if (NULL == lbl_1_bss_424) { + return; + } + addTime = FALSE; + for (i = 0; i < 4; i++) { + WorkPlayerOld *player2 = lbl_1_bss_424(i); + BOOL fixPos; + float minDist; + s32 state; + if (player == player2) { + continue; + } + if (player2->unk_3C & 0x8) { + continue; + } + fixPos = FALSE; + fn_1_24F8(player, player2, &minDist, &state); + if (minDist < player->unk_BC + player2->unk_BC) { + if (state < 2) { + fixPos = TRUE; + if (player->unk_38 == 1) { + fn_1_2824(player, player2); + } + } + else { + if (state == 2 && player->unk_38 == 1) { + fn_1_2824(player, player2); + player->unk_3C |= 0x100; + player->unk_A4 = 0; + if (!(player2->unk_3C & 0x100)) { + player->unk_84.y = _1606_BY_REFRESH_RATE; + } + } + if (state == 3) { + fixPos = TRUE; + if (player->unk_38 == 1) { + if (0.0f < player->unk_84.y) { + player->unk_84.y = 0.0f; + } + player->unk_A4 = 0; + } + } + } + } + if (fixPos) { + Vec dir; + addTime = TRUE; + VECSubtract(&player->unk_6C, &player2->unk_6C, &dir); + if (0.0f == minDist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= minDist; + dir.z /= minDist; + } + player->unk_6C.x = player2->unk_6C.x + (dir.x * (player->unk_BC + player2->unk_BC)); + player->unk_6C.z = player2->unk_6C.z + (dir.z * (player->unk_BC + player2->unk_BC)); + } + } + if (addTime) { + player->unk_4C++; + } + else { + player->unk_4C = 0; + } +} + +float fn_1_39C4(WorkPlayerOld *player, float arg2) +{ + Vec *pos; + s32 i; + AddX = 0.0f; + AddZ = 0.0f; + MapWall(player->unk_BC, player->unk_6C.x, arg2 + player->unk_BC, player->unk_6C.z); + player->unk_6C.x += AddX; + player->unk_6C.z += AddZ; + if (NULL != player->unk_68) { + for (pos = player->unk_68, i = 0; i < player->unk_64; i++, pos += 2) { + int num = 0; + if (pos[0].x == pos[1].x || pos[0].x > player->unk_6C.x || pos[1].x < player->unk_6C.x) { + num++; + } + if (pos[0].y == pos[1].y || pos[0].y > player->unk_6C.y || pos[1].y < player->unk_6C.y) { + num++; + } + if (pos[0].z == pos[1].z || pos[0].z > player->unk_6C.z || pos[1].z < player->unk_6C.z) { + num++; + } + if (num == 3) { + if (pos[0].x != pos[1].x) { + if (pos[0].x > player->unk_6C.x) { + player->unk_6C.x = pos[0].x + player->unk_BC; + } + if (pos[1].x < player->unk_6C.x) { + player->unk_6C.x = pos[1].x - player->unk_BC; + } + } + if (pos[0].y != pos[1].y) { + if (pos[0].y > player->unk_6C.y) { + player->unk_6C.y = pos[0].y; + } + if (pos[1].y < player->unk_6C.y) { + player->unk_6C.y = pos[1].y; + } + } + if (pos[0].z != pos[1].z) { + if (pos[0].z > player->unk_6C.z) { + player->unk_6C.z = pos[0].z + player->unk_BC; + } + if (pos[1].z < player->unk_6C.z) { + player->unk_6C.z = pos[1].z - player->unk_BC; + } + } + } + } + } + return ABS(AddX) + ABS(AddZ); +} + +void fn_1_3CE0(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + if (0.5f <= player->unk_A0) { + if (7.0f <= player->unk_A0) { + *state = 2; + } + else { + *state = 1; + } + } + + if (player->unk_14[3] >= 0 && (player->unk_28 & 0x100)) { + fn_1_2BD0(player, _1606_BY_REFRESH_RATE, 1); + *motAttr = HU3D_MOTATTR_NONE; + *state = 3; + } +} + +void fn_1_3DB8(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (0.0f < player->unk_A4) { + if (player->unk_2C & 0x100) { + player->unk_A4++; + if (4.0f < player->unk_A4) { + player->unk_A4 = 0; + } + else { + player->unk_84.y += 219.0f / REFRESH_RATE; + } + } + else { + player->unk_A4 = 0; + } + } + player->unk_84.y += -146.0f / REFRESH_RATE; + if (player->unk_14[5] >= 0 && (player->unk_28 & 0x140)) { + player->unk_38 = 3; + player->unk_84.y = 0; + player->unk_3C &= ~0x3; + player->unk_3C |= 0x4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 5; + } +} + +void fn_1_3ECC(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if ((player->unk_3C & 0x1000) || Hu3DMotionEndCheck(player->unk_00->model[0])) { + player->unk_3C &= ~0x3; + if (player->unk_40 == 6) { + player->unk_38 = 4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 7; + } + else { + player->unk_38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } + } +} + +void fn_1_3F84(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) { + fn_1_2BD0(player, 0.0f, 0.0f); + } +} + +void fn_1_4024(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) { + player->unk_3C &= ~0x4; + player->unk_38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } +} + +void fn_1_40C0(WorkPlayerOld *player) +{ + u32 motAttr = HU3D_MOTATTR_NONE; + s32 state = -1; + float temp_f28; + float temp_f23; + float temp_f22; + Vec *pos; + BOOL temp_r27; + if (player->unk_3C & 0x1) { + player->unk_84.x = player->unk_90.x; + player->unk_84.z = player->unk_90.z; + } + else { + player->unk_84.x = player->unk_20 / 4.0f; + player->unk_84.z = -(float)player->unk_24 / 4.0f; + if (player->unk_38 == 1 && 0.0f == player->unk_84.x && 0.0f == player->unk_84.z) { + player->unk_84.x = 0.98f * (player->unk_6C.x - player->unk_78.x); + player->unk_84.z = 0.98f * (player->unk_6C.z - player->unk_78.z); + } + if (player->unk_3C & 0x14) { + player->unk_84.x = 0; + player->unk_84.z = 0; + player->unk_28 = 0; + } + } + player->unk_78 = player->unk_6C; + player->unk_A0 = VECMagXZ(&player->unk_84); + if (0.5f <= player->unk_A0) { + if (10.0f <= player->unk_A0) { + player->unk_84.x /= player->unk_A0; + player->unk_84.z /= player->unk_A0; + player->unk_A0 = 10; + player->unk_84.x = 10 * player->unk_84.x; + player->unk_84.z = 10 * player->unk_84.z; + } + } + else { + player->unk_84.x = 0; + player->unk_84.z = 0; + player->unk_A0 = 0; + } + player->unk_84.x *= player->unk_B8; + player->unk_84.z *= player->unk_B8; + player->unk_A0 *= player->unk_B8; + if (player->unk_3C & 0x800) { + player->unk_28 |= 0x100; + player->unk_2C |= 0x100; + if (player->unk_38 == 1) { + if (0.0f == player->unk_A4) { + player->unk_3C &= ~0x800; + } + } + } + switch (player->unk_38) { + case 0: + fn_1_3CE0(player, &state, &motAttr); + break; + + case 1: + fn_1_3DB8(player, &state, &motAttr); + break; + + case 2: + fn_1_3ECC(player, &state, &motAttr); + break; + + case 3: + fn_1_3F84(player, &state, &motAttr); + break; + + case 4: + fn_1_4024(player, &state, &motAttr); + break; + + default: + OSReport("*** player action error(%d)!!\n", player->unk_38); + break; + } + if (player->unk_3C & 0x2000) { + player->unk_84.y = 0; + } + temp_f28 = 0; + if (50.0f < ABS(player->unk_84.y)) { + player->unk_84.y = 50.0f * ((0.0f > player->unk_84.y) ? -1 : 1); + } + if (player->unk_3C & 0x2) { + Mtx rotMtx; + MTXRotDeg(rotMtx, 'y', player->unk_50[2].x - player->unk_60); + MTXMultVec(rotMtx, &player->unk_54, &player->unk_54); + VECAdd(&player->unk_54, &player->unk_50[0], &player->unk_6C); + player->unk_9C += player->unk_50[2].x - player->unk_60; + } + temp_f22 = player->unk_6C.y; + VECAdd(&player->unk_6C, &player->unk_84, &player->unk_6C); + if ((player->unk_3C & 0x1) == 0 && (0.0f != player->unk_84.x || 0.0f != player->unk_84.z)) { + player->unk_9C = fn_1_1E20(player->unk_9C, atan2d(player->unk_84.x, player->unk_84.z), 0.4f * player->unk_B8); + } + temp_f28 += fn_1_39C4(player, temp_f22); + if (nMap == 0) { + player->unk_A8 = lbl_1_bss_420; + } + else { + player->unk_A8 = MapPos(player->unk_6C.x, player->unk_6C.y, player->unk_6C.z, player->unk_C0, &player->unk_AC); + } + temp_r27 = FALSE; + if (NULL != player->unk_08) { + pos = player->unk_08(player->unk_00); + if (NULL != pos) { + if (player->unk_A8 < pos[1].y) { + temp_r27 = TRUE; + player->unk_50 = pos; + player->unk_A8 = pos[1].y; + } + } + } + if (!temp_r27 && (player->unk_3C & 0x2)) { + player->unk_3C &= ~0x2; + } + if (player->unk_38 == 1 && player->unk_A8 >= player->unk_6C.y) { + player->unk_38 = 2; + player->unk_3C &= ~0x3; + player->unk_6C.y = player->unk_A8; + player->unk_84.y = 0; + motAttr = HU3D_MOTATTR_NONE; + state = 4; + if (player->unk_40 == 5) { + state = 6; + if (NULL != player->unk_10) { + player->unk_10(player->unk_00); + } + if (player->unk_18 < 4) { + omVibrate(player->unk_18, 12, 4, 2); + } + } + if (player->unk_3C & 0x200) { + state = -1; + if (NULL != player->unk_0C) { + player->unk_0C(player->unk_00); + } + } + if (temp_r27) { + player->unk_3C |= 0x2; + } + } + temp_f23 = player->unk_6C.y - player->unk_A8; + if (player->unk_38 == 0 && 10.0f < temp_f23) { + if ((player->unk_3C & 0x2000) == 0) { + if ((player->unk_3C & 0x400) != 0) { + player->unk_3C |= 0x800; + } + else { + fn_1_2BD0(player, 0.0f, 0.0f); + motAttr = HU3D_MOTATTR_NONE; + state = 3; + } + } + } + else if (temp_r27) { + if (!(player->unk_3C & 0x2)) { + player->unk_6C.y = player->unk_A8; + player->unk_3C |= 0x2; + } + } + fn_1_2E34(player); + if (NULL != player->unk_04) { + player->unk_04(player->unk_00); + } + temp_f28 += fn_1_39C4(player, player->unk_6C.y); + if (player->unk_3C & 0x2) { + player->unk_60 = player->unk_50[2].x; + VECSubtract(&player->unk_6C, &player->unk_50[0], &player->unk_54); + } + if (0.0f != temp_f28) { + player->unk_48++; + } + else { + player->unk_48 = 0; + } + if (state >= 0 && player->unk_40 != state) { + player->unk_40 = state; + player->unk_44 = player->unk_14[player->unk_40]; + if (player->unk_44 >= 0 && !(player->unk_3C & 0x20)) { + Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, motAttr); + } + } +} + +void fn_1_4ED8(WorkPlayerOld *player, s32 motNo) +{ + s32 i; + player->unk_44 = motNo; + player->unk_38 = 0; + player->unk_3C &= 0x1400; + player->unk_78 = player->unk_6C; + player->unk_84.x = 0; + player->unk_84.y = 0; + player->unk_84.z = 0; + fn_1_23B4(player); + if (player->unk_40 == 3) { + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]); + Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1); + } + else if (player->unk_40 == 5) { + player->unk_38 = 3; + player->unk_3C |= 0x4; + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]); + Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1); + } + else { + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, HU3D_MOTATTR_LOOP); + } +} + +void fn_1_5128(WorkPlayerOld *player, s32 attr) +{ + player->unk_3C |= attr; +} + +void fn_1_5138(WorkPlayerOld *player, s32 attr) +{ + player->unk_3C &= ~attr; +} + +#include "REL/m432data.h" + +typedef struct UnkBss0Struct { + /* 0x000 */ omObjData *unk_00; + /* 0x004 */ omObjData *unk_04; + /* 0x008 */ omObjData *unk_08; + /* 0x00C */ omObjData *unk_0C; + /* 0x010 */ UnkM432DllBss0SubStruct *unk_10[2]; + /* 0x018 */ s32 unk_18; + /* 0x01C */ Vec unk_1C; + /* 0x028 */ Vec unk_28; + /* 0x034 */ Vec unk_34; + /* 0x040 */ Vec unk_40; + /* 0x04C */ Vec unk_4C; + /* 0x058 */ Vec unk_58; + /* 0x064 */ float unk_64; + /* 0x068 */ float unk_68; + /* 0x06C */ float unk_6C; + /* 0x070 */ float unk_70; + /* 0x074 */ float unk_74; + /* 0x078 */ float unk_78; + /* 0x07C */ float unk_7C; + /* 0x080 */ float unk_80; + /* 0x084 */ float unk_84; + /* 0x088 */ Vec unk_88[4][3]; + /* 0x118 */ Vec unk_118; + /* 0x124 */ float unk_124; + /* 0x128 */ float unk_128; + /* 0x12C */ float unk_12C; + /* 0x130 */ Vec unk_130[8]; + /* 0x190 */ Vec unk_190; + /* 0x19C */ Vec unk_19C; + /* 0x1A8 */ Vec unk_1A8; + /* 0x1B4 */ s32 unk_1B4; + /* 0x1B8 */ s32 unk_1B8; + /* 0x1BC */ s32 unk_1BC; + /* 0x1C0 */ Vec unk_1C0; + /* 0x1CC */ s32 unk_1CC; + /* 0x1D0 */ s32 unk_1D0; + /* 0x1D4 */ float unk_1D4; + /* 0x1D8 */ s32 unk_1D8; + /* 0x1DC */ float unk_1DC; + /* 0x1E0 */ float unk_1E0; + /* 0x1E4 */ float unk_1E4; + /* 0x1E8 */ float unk_1E8; + /* 0x1EC */ float unk_1EC; + /* 0x1F0 */ float unk_1F0[2]; +} UnkBss0Struct; /* size = 0x1F8 */ + +typedef struct UnkM432DllStruct { + WorkPlayerOld unk_00; + s32 *unk_C4; + UnkM432DllBss0SubStruct *unk_C8; + UnkM432DllData1794Struct *unk_CC; + UnkM432DllBss0SubStruct *unk_D0; + s32 unk_D4[10]; + s32 unk_FC; + s32 unk_100; + float unk_104; + float unk_108; + float unk_10C; + float unk_110; + float unk_114; + s32 unk_118[9]; + Vec unk_13C; + float unk_148; + float unk_14C; + float unk_150; + float unk_154; + float unk_158; + float unk_15C; + float unk_160; + float unk_164; + s32 unk_168; + s32 unk_16C; + s32 unk_170; + s32 unk_174; + s32 unk_178; + s32 unk_17C; + s32 unk_180; + s32 unk_184; + s32 unk_188; + s32 unk_18C; + s32 unk_190; + s32 unk_194; +} UnkM432DllStruct; + +typedef struct UnkM432DllStruct2 { + Vec unk_00; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; +} UnkM432DllStruct2; /* size = 0x1C */ + +void fn_1_10250(omObjData *object); +void fn_1_153BC(void); +void fn_1_1615C(omObjData *object); +void fn_1_6F28(UnkBss0Struct *arg0); +void fn_1_93BC(UnkM432DllStruct *arg0); + +omObjData *lbl_1_bss_41C; +omObjData **lbl_1_bss_418; +omObjData *lbl_1_bss_414; +// data UnkM432DllStruct +omObjData **lbl_1_bss_410; +s32 lbl_1_bss_40C; +AnimData *lbl_1_bss_408; +s16 lbl_1_bss_404; +s16 lbl_1_bss_402; +s16 lbl_1_bss_400; +s32 lbl_1_bss_3FC; +s32 lbl_1_bss_3F8; +s32 lbl_1_bss_3F4; +float lbl_1_bss_3F0; +UnkBss0Struct lbl_1_bss_0[2]; + +void fn_1_5148(UnkM432DllStruct *arg0) +{ + s32 var_r31; + + arg0->unk_D0 = 0; + arg0->unk_FC = 0; + arg0->unk_100 = 0; + arg0->unk_10C = 0.0f; + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + arg0->unk_D4[var_r31] = -1; + } +} + +UnkM432DllStruct *fn_1_51A8(s32 arg0) +{ + s32 var_r31; + UnkM432DllStruct *var_r30; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = lbl_1_bss_410[var_r31]->data; + if (arg0 == var_r30->unk_184) { + return var_r30; + } + } + return NULL; +} + +UnkM432DllBss0SubStruct *fn_1_5208(s32 arg0, UnkM432DllBss0SubStruct *arg1) +{ + UnkM432DllBss0SubStruct *var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31 = lbl_1_bss_0[arg0].unk_10[var_r30]; + for (var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r31++) { + if (strcmp(arg1->unk_04, var_r31->unk_00) == 0) { + return var_r31; + } + } + } + return NULL; +} + +inline void fn_1_52B8_inline(Vec *arg0, float arg8, float arg9, float argA) +{ + arg0->x = arg8; + arg0->y = arg9; + arg0->z = argA; +} + +void fn_1_52B8(UnkM432DllBss0SubStruct *arg0, Vec *arg1) +{ + Mtx sp8; + + fn_1_52B8_inline(arg1, 0.0f, 0.0f, arg0->unk_1C); + MTXRotRad(sp8, 0x79, 0.017453292f * arg0->unk_18); + MTXMultVec(sp8, arg1, arg1); + VECAdd(&arg0->unk_2C, arg1, arg1); +} + +void fn_1_5364(s32 arg0, omObjData *object) +{ + if (lbl_1_bss_0[arg0].unk_1D8 >= 0) { + lbl_1_bss_0[arg0].unk_1DC -= 1.0f / REFRESH_RATE; + if (0.0f >= lbl_1_bss_0[arg0].unk_1DC) { + HuAudFXStop(lbl_1_bss_0[arg0].unk_1D8); + lbl_1_bss_0[arg0].unk_1D8 = -1; + } + else { + HuAudFXPitchSet(lbl_1_bss_0[arg0].unk_1D8, (s32)(8191.0f * lbl_1_bss_0[arg0].unk_1DC)); + HuAudFXVolSet(lbl_1_bss_0[arg0].unk_1D8, (s32)(127.0f * lbl_1_bss_0[arg0].unk_1DC)); + } + } + lbl_1_bss_0[arg0].unk_88[0][2].x = lbl_1_bss_0[arg0].unk_80; + lbl_1_bss_0[arg0].unk_88[1][2].x = lbl_1_bss_0[arg0].unk_80; + Hu3DModelRotSet(object->model[20], 0.0f, lbl_1_bss_0[arg0].unk_80, 0.0f); + fn_1_1D18(object->model[20], "m432_13-player2A", &lbl_1_bss_0[arg0].unk_88[0][1]); + fn_1_1D18(object->model[20], "m432_13-player2B", &lbl_1_bss_0[arg0].unk_88[1][1]); + lbl_1_bss_0[arg0].unk_88[2][2].x = lbl_1_bss_0[arg0].unk_84; + lbl_1_bss_0[arg0].unk_88[3][2].x = lbl_1_bss_0[arg0].unk_84; + Hu3DModelRotSet(object->model[21], 0.0f, lbl_1_bss_0[arg0].unk_84, 0.0f); + fn_1_1D18(object->model[21], "m432_13-player2C", &lbl_1_bss_0[arg0].unk_88[2][1]); + fn_1_1D18(object->model[21], "m432_13-player2C", &lbl_1_bss_0[arg0].unk_88[3][1]); +} + +void fn_1_576C(s32 arg0, omObjData *arg1) +{ + float var_f31 = lbl_1_bss_0[arg0].unk_124 * (Hu3DMotionMaxTimeGet(arg1->model[22]) / 1000.0f); + lbl_1_bss_0[arg0].unk_128 += 0.02f * (var_f31 - lbl_1_bss_0[arg0].unk_128); + Hu3DMotionTimeSet(arg1->model[22], lbl_1_bss_0[arg0].unk_128); +} + +void fn_1_5848(UnkM432DllStruct *var_r28, UnkM432DllBss0SubStruct *var_r31) +{ + s32 sp20; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + s32 var_r30; + s32 var_r27; + UnkM432DllStruct *var_r26; + UnkM432DllBss0SubStruct *var_r25; + UnkBss0Struct *var_r24; + s32 var_r21; + s32 var_r20; + char **var_r19; + u8 *var_r18; + + var_r20 = var_r31->unk_1C; + var_r26 = fn_1_51A8(var_r28->unk_184 ^ 1); + var_r24 = &lbl_1_bss_0[var_r28->unk_184 >> 1]; + sp20 = var_r24->unk_1B8; + var_r27 = 6; + var_r18 = lbl_1_data_4F0; + var_r19 = lbl_1_data_440; + if ((var_r31->unk_14 & 4) != 0) { + sp20 = var_r24->unk_1BC; + var_r27 = 0xA; + var_r18 = lbl_1_data_504; + var_r19 = lbl_1_data_4C8; + } + var_r30 = frandmod(var_r27 - 1); + for (var_r21 = 0; var_r21 < (var_r27 - 1); var_r21++) { + var_r30 = (var_r30 + 1) % (var_r27 - 1); + if ((var_r20 != var_r30) && (sp20 != var_r30) && (var_r30 != var_r18[var_r20])) { + var_r31->unk_04 = var_r19[var_r30]; + var_r25 = fn_1_5208(var_r28->unk_184 >> 1, var_r31); + var_f31 = var_r26->unk_00.unk_6C.x - var_r25->unk_2C.x; + var_f30 = var_r26->unk_00.unk_6C.z - var_r25->unk_2C.z; + if (200.0f < sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) { + break; + } + } + } + (void)var_r31; + (void)var_r31; + (void)var_r31; +} + +void fn_1_5BAC(UnkM432DllStruct *arg0, omObjData *object, UnkM432DllBss0SubStruct *arg2, UnkM432DllBss0SubStruct *arg3) +{ + Vec sp14; + Vec sp8; + float var_f31; + + var_f31 = arg2->unk_20.y; + if (25.0f <= arg3->unk_38) { + var_f31 -= 400.0f; + } + else { + var_f31 -= 8.0f * arg3->unk_38; + } + if ((arg2->unk_20.y == var_f31) && (0.0f > arg2->unk_2C.y) && (-1.0f < arg2->unk_2C.y)) { + arg2->unk_2C.y = 0.0f; + HuAudFXPlay(0x699); + } + arg2->unk_2C.y += 0.25f * (var_f31 - arg2->unk_2C.y); + if ((arg2->unk_40 < 0) && ((arg2->unk_20.y - 200.0f) > arg2->unk_2C.y)) { + fn_1_52B8_inline(&sp8, arg2->unk_2C.x - 80.0f, arg2->unk_20.y, arg2->unk_2C.z); + fn_1_52B8_inline(&sp14, 80.0f + arg2->unk_2C.x, arg2->unk_20.y, arg2->unk_2C.z); + fn_1_174(lbl_1_bss_404, &lbl_1_data_1814, 4, 4, 2, &sp8, 0); + HuAudFXPlay(0x69A); + } + Hu3DModelPosSet(object->model[arg2->unk_08], arg2->unk_2C.x, arg2->unk_2C.y, arg2->unk_2C.z); + if ((arg2->unk_20.y - 399.0f) > arg2->unk_2C.y) { + arg0->unk_17C++; + arg2->unk_14 = 0; + } +} + +void fn_1_5F2C(UnkM432DllStruct *arg0, UnkM432DllBss0SubStruct *arg1) +{ + float var_f31; + float var_f30; + UnkBss0Struct *var_r28; + s32 var_r25; + s32 var_r22; + char *var_r24; + + if ((arg0->unk_180 == 0x7D3) && !(arg1->unk_2C.y <= arg0->unk_00.unk_6C.y)) { + var_r28 = &lbl_1_bss_0[arg0->unk_184 >> 1]; + var_f31 = arg0->unk_00.unk_6C.x - arg1->unk_2C.x; + var_f30 = arg0->unk_00.unk_6C.z - arg1->unk_2C.z; + if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f) { + arg0->unk_00.unk_3C |= 0x18; + arg0->unk_180 = 0x7D7; + arg0->unk_C4 = NULL; + var_r22 = arg1->unk_1C; + var_r25 = var_r28->unk_1B8; + var_r24 = lbl_1_data_440[5]; + if (arg1->unk_14 & 4) { + var_r25 = var_r28->unk_1BC; + var_r24 = lbl_1_data_4C8[9]; + } + if (var_r22 == var_r25) { + arg1->unk_04 = var_r24; + } + else { + fn_1_5848(arg0, arg1); + } + arg0->unk_C8 = fn_1_5208(arg0->unk_184 >> 1, arg1); + arg0->unk_D4[arg0->unk_FC] = arg1->unk_44 - arg0->unk_17C; + arg0->unk_FC = (arg0->unk_FC + 1) % 10; + } + } +} + +void fn_1_623C(UnkBss0Struct *arg0, s32 arg1, UnkM432DllStruct *arg2, UnkM432DllStruct *arg3) +{ + UnkM432DllBss0SubStruct *sp3C; + float var_f29; + float var_f28; + float var_f27; + float var_f23; + UnkM432DllBss0SubStruct *var_r31; + UnkM432DllStruct *var_r29; + omObjData *var_r28; + s32 var_r26; + s32 var_r19; + + var_f29 = 0.0f; + var_f28 = 0.0f; + var_f27 = 0.0f; + var_r28 = arg0->unk_04; + for (var_r26 = 0; var_r26 < 2; var_r26++) { + var_r29 = fn_1_51A8((var_r26 + (arg1 * 2))); + for (var_r31 = arg0->unk_10[var_r26], var_r19 = 0; var_r19 < 0x1F; var_r19++, var_r31++) { + if (var_r31->unk_14 & 0x600) { + if (1.0f < var_r31->unk_3C) { + var_r31->unk_3C = 1.0f; + } + var_r31->unk_38 = var_r31->unk_38 + var_r31->unk_3C; + var_r31->unk_3C = var_r31->unk_3C - 0.05f; + if (0.0f > var_r31->unk_3C) { + var_r31->unk_3C = 0.0f; + } + if (var_r31->unk_14 & 0x400) { + var_f29 += var_r31->unk_38; + } + if (var_r31->unk_14 & 0x200) { + var_f28 += var_r31->unk_38; + } + } + if (var_r31->unk_14 & 0x800) { + var_f27 += var_r31->unk_38; + } + if (NULL != var_r31->unk_04) { + sp3C = fn_1_5208(arg1, var_r31); + switch (var_r31->unk_14) { + case 3: + break; + case 1: + fn_1_5BAC(var_r29, var_r28, var_r31, sp3C); + break; + case 2: + case 4: + fn_1_5F2C(var_r29, var_r31); + break; + } + } + } + } + arg0->unk_80 = 80.0f + -var_f29; + arg0->unk_84 = 160.0f + -var_f28; + fn_1_5364(arg1, var_r28); + arg0->unk_124 = var_f27; + if (1000.0f <= arg0->unk_124) { + arg0->unk_124 = 1000.0f; + } + var_f23 = lbl_1_bss_0[arg1].unk_124 * (Hu3DMotionMaxTimeGet(var_r28->model[22]) / 1000.0f); + lbl_1_bss_0[arg1].unk_128 += 0.02f * (var_f23 - lbl_1_bss_0[arg1].unk_128); + Hu3DMotionTimeSet(var_r28->model[22], lbl_1_bss_0[arg1].unk_128); + if ((lbl_1_bss_3FC < 0) && (1000.0f <= arg0->unk_124)) { + lbl_1_bss_3FC = arg2->unk_184 & 2; + arg2->unk_17C += 4; + arg3->unk_17C += 4; + } +} + +void fn_1_6D34(UnkBss0Struct *arg0, UnkM432DllStruct *arg1, Vec *arg2) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f27; + s32 var_r31; + + var_f27 = 100000.0f; + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_f31 = arg1->unk_00.unk_6C.x - arg0->unk_130[var_r31].x; + var_f30 = arg1->unk_00.unk_6C.z - arg0->unk_130[var_r31].z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 > var_f28) { + var_f27 = var_f28; + *arg2 = arg0->unk_130[var_r31]; + } + } +} + +void fn_1_6F28(UnkBss0Struct *arg0) +{ + float var_f31; + float var_f30; + float var_f26; + float var_f23; + + UnkM432DllStruct *var_r30 = arg0->unk_08->data; + + if (arg0->unk_1B4 < 0) { + fn_1_6D34(arg0, var_r30, &arg0->unk_190); + var_r30->unk_00.unk_3C |= 8; + var_r30->unk_180 = 0x7D9; + arg0->unk_190.y = 3000.0f; + arg0->unk_19C = arg0->unk_190; + arg0->unk_1B4 = 0; + Hu3DModelRotSet(arg0->unk_04->model[25], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(arg0->unk_04->model[25], HU3D_ATTR_DISPOFF); + } + switch (arg0->unk_1B4) { + case 0: + fn_1_40C0(&var_r30->unk_00); + var_f23 = var_r30->unk_00.unk_6C.y - arg0->unk_19C.y; + arg0->unk_190.y += 0.03f * var_f23; + if (50.0f > ABS(var_f23)) { + arg0->unk_1B4++; + arg0->unk_1A8 = arg0->unk_1C0; + arg0->unk_1A8.y += 900.0f; + arg0->unk_1A8.z -= 150.0f; + var_r30->unk_00.unk_6C = arg0->unk_19C; + var_r30->unk_00.unk_9C = 0.0f; + Hu3DMotionShiftSet(arg0->unk_08->model[0], arg0->unk_08->motion[6], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + break; + case 1: + if (50.0f > (0.0f > (arg0->unk_1A8.y - arg0->unk_190.y) ? -(arg0->unk_1A8.y - arg0->unk_190.y) : arg0->unk_1A8.y - arg0->unk_190.y)) { + arg0->unk_1B4++; + } + break; + case 2: + arg0->unk_1A8.y += 0.1f * (((900.0f + arg0->unk_1C0.y) - 200.0f) - arg0->unk_1A8.y); + if (((900.0f + arg0->unk_1C0.y) - 190.0f) > arg0->unk_1A8.y) { + arg0->unk_1B4++; + var_r30->unk_16C = 1; + var_r30->unk_180 = 0x7D3; + fn_1_4ED8(&var_r30->unk_00, 0); + var_r30->unk_00.unk_3C |= 0x210; + if (NULL != arg0->unk_0C) { + arg0->unk_1B4 = 4; + arg0->unk_08 = arg0->unk_0C; + var_r30 = arg0->unk_08->data; + fn_1_6D34(arg0, var_r30, &arg0->unk_1A8); + var_r30->unk_00.unk_3C |= 8; + var_r30->unk_180 = 0x7D9; + } + } + break; + case 3: + arg0->unk_1A8.y += 10.0f; + if ((2000.0f + arg0->unk_1C0.y) < arg0->unk_1A8.y) { + arg0->unk_08 = NULL; + Hu3DModelAttrSet(arg0->unk_04->model[25], HU3D_ATTR_DISPOFF); + return; + } + break; + case 4: + fn_1_40C0(&var_r30->unk_00); + var_f31 = arg0->unk_1A8.x - arg0->unk_190.x; + var_f30 = arg0->unk_1A8.z - arg0->unk_190.z; + arg0->unk_190.x += 0.05f * var_f31; + arg0->unk_190.y += 0.01f * (arg0->unk_1A8.y - arg0->unk_190.y); + arg0->unk_190.z += 0.05f * var_f30; + if (20.0f > sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) { + arg0->unk_19C = arg0->unk_190; + arg0->unk_1B4 = 0; + } + break; + } + if ((arg0->unk_1B4 > 0) && (arg0->unk_1B4 < 4)) { + if (arg0->unk_1B4 < 3) { + var_r30->unk_00.unk_6C = arg0->unk_19C; + fn_1_2DD4(&var_r30->unk_00); + } + var_f23 = 0.03f * (arg0->unk_1A8.y - arg0->unk_190.y); + arg0->unk_190.y += var_f23; + if (arg0->unk_1C0.y < arg0->unk_190.y) { + var_f26 = (arg0->unk_1A8.y - arg0->unk_190.y) / 900.0f; + if (0.1f > var_f26) { + var_f26 = 0.1f; + } + if (1.0f < var_f26) { + var_f26 = 1.0f; + } + var_f26 = 1.0f - var_f26; + arg0->unk_190.x += 0.03f * var_f26 * (arg0->unk_1A8.x - arg0->unk_190.x); + arg0->unk_190.z += 0.03f * var_f26 * (arg0->unk_1A8.z - arg0->unk_190.z); + } + } + Hu3DModelPosSet(arg0->unk_04->model[25], arg0->unk_190.x, arg0->unk_190.y, arg0->unk_190.z); + fn_1_1D18(arg0->unk_04->model[25], "g008m2_000-itemhook_sao", &arg0->unk_19C); +} + +void fn_1_7C1C(UnkBss0Struct *var_r31, UnkM432DllStruct *var_r30, UnkM432DllStruct *var_r29) +{ + float var_f31; + float var_f30; + + if ((var_r31->unk_7C == 0.0f) && ((0.0f < var_r31->unk_70) || (0.0f > var_r31->unk_74))) { + if (0.0f < var_r31->unk_70) { + var_r31->unk_28.y += 0.05f * (var_r31->unk_70 - var_r31->unk_28.y); + if (2.0f + > (0.0f > (var_r31->unk_70 - var_r31->unk_28.y) ? -(var_r31->unk_70 - var_r31->unk_28.y) : var_r31->unk_70 - var_r31->unk_28.y)) { + var_r31->unk_28.y = var_r31->unk_70; + var_r31->unk_70 = 0.0f; + } + } + if (0.0f > var_r31->unk_74) { + var_r31->unk_28.z += 0.05f * (var_r31->unk_74 - var_r31->unk_28.z); + if (2.0f + > (0.0f > (var_r31->unk_74 - var_r31->unk_28.z) ? -(var_r31->unk_74 - var_r31->unk_28.z) : var_r31->unk_74 - var_r31->unk_28.z)) { + var_r31->unk_28.z = var_r31->unk_74; + var_r31->unk_74 = 0.0f; + } + } + } + else { + var_f30 = var_r31->unk_1EC / var_r31->unk_1E8; + if (265.0f > var_f30) { + var_f31 = 0.2f * (265.0f - var_f30); + if (1.0f <= ABS(var_f31)) { + var_r31->unk_28.z -= var_f31; + } + } + switch (var_r31->unk_18) { + case 0: + if ((-7100.0f > var_r31->unk_28.z) && ((-7750.0f < var_r31->unk_1F0[0]) || (-7750.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -7100.0f; + } + if ((-7750.0f >= var_r31->unk_1F0[0]) && (-7750.0f >= var_r31->unk_1F0[1])) { + var_r31->unk_18++; + var_r31->unk_74 = -8700.0f; + var_r30->unk_17C += 3; + var_r30->unk_15C = -7750.0f; + var_r29->unk_17C += 3; + var_r29->unk_15C = -7750.0f; + fn_1_1D18(var_r31->unk_04->model[3], "m432_00-n1", &var_r31->unk_1C0); + return; + } + break; + case 1: + if ((-9500.0f > var_r31->unk_28.z) && ((-10200.0f < var_r31->unk_1F0[0]) || (-10200.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -9500.0f; + } + if ((-10200.0f >= var_r31->unk_1F0[0]) && (-10200.0f >= var_r31->unk_1F0[1])) { + var_r31->unk_18++; + var_r31->unk_74 = -11100.0f; + var_r30->unk_17C += 3; + var_r30->unk_15C = -10200.0f; + var_r29->unk_17C += 3; + var_r29->unk_15C = -10200.0f; + return; + } + break; + case 2: + if ((-11500.0f > var_r31->unk_28.z) && ((-12300.0f < var_r31->unk_1F0[0]) || (-12300.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -11500.0f; + } + if ((NULL != var_r30->unk_C8) && (var_r30->unk_C8->unk_14 & 8) && (NULL != var_r29->unk_C8) && ((var_r29->unk_C8->unk_14 & 8) != 0) + && (var_r30->unk_00.unk_38 == 0) && (var_r29->unk_00.unk_38 == 0)) { + var_r31->unk_18++; + var_r31->unk_1E4 = var_r30->unk_C8->unk_2C.y; + var_r31->unk_74 = -13500.0f; + var_r31->unk_70 = var_r30->unk_C8->unk_2C.y; + var_r30->unk_17C += 6; + var_r29->unk_17C += 6; + return; + } + break; + case 3: + if ((-13700.0f > var_r31->unk_28.z) && ((-14400.0f < var_r31->unk_1F0[0]) || (-14400.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -13700.0f; + } + if ((NULL != var_r30->unk_C8) && (var_r30->unk_C8->unk_14 & 0x10) && (NULL != var_r29->unk_C8) && (var_r29->unk_C8->unk_14 & 0x10) + && (var_r30->unk_00.unk_38 == 0) && (var_r29->unk_00.unk_38 == 0)) { + var_r31->unk_18++; + var_r31->unk_1E4 = var_r30->unk_C8->unk_2C.y; + var_r31->unk_74 = -15700.0f; + var_r31->unk_78 = 0.0f; + var_r31->unk_7C = 120.0f; + var_r31->unk_4C = var_r31->unk_28; + var_r31->unk_34 = var_r31->unk_1C; + var_r31->unk_58.x = var_r31->unk_28.x; + var_r31->unk_58.y = 400.0f + var_r30->unk_C8->unk_2C.y; + var_r31->unk_58.z = -15700.0f; + var_r31->unk_40 = var_r31->unk_58; + var_r31->unk_40.y = 800.0f + var_r30->unk_C8->unk_2C.y; + var_r31->unk_40.z += 3800.0f; + var_r30->unk_17C += 0xA; + var_r30->unk_148 = 0.0f; + fn_1_52B8(&lbl_1_bss_0[var_r30->unk_184 >> 1].unk_10[var_r30->unk_184 & 1][0x1B], &var_r30->unk_13C); + var_r29->unk_17C += 0xA; + var_r29->unk_148 = 0.0f; + fn_1_52B8(&lbl_1_bss_0[var_r29->unk_184 >> 1].unk_10[var_r29->unk_184 & 1][0x1B], &var_r29->unk_13C); + } + break; + } + } +} + +s32 fn_1_8540(UnkM432DllStruct *arg0) +{ + if (arg0->unk_17C >= 0x1F) { + return -1; + } + if (arg0->unk_17C >= 0x1B) { + return 3; + } + if (arg0->unk_17C >= 0xB) { + return 2; + } + if (arg0->unk_17C >= 5) { + return 1; + } + if (arg0->unk_17C >= 1) { + return 0; + } + return -1; +} + +UnkM432DllBss0SubStruct *fn_1_85AC(UnkM432DllStruct *arg0, UnkBss0Struct *arg1) +{ + UnkM432DllBss0SubStruct *var_r31 = arg1->unk_10[arg0->unk_184 & 1]; + s32 var_r30; + for (var_r30 = 0; var_r30 < 0x1F; var_r30++, var_r31++) { + if ((arg0->unk_17C <= var_r30) && (var_r31->unk_14 & 0xF00)) { + return var_r31; + } + } + return NULL; +} + +float fn_1_861C(UnkM432DllStruct *arg0, UnkBss0Struct *arg1, Vec *arg2) +{ + float var_f31; + float var_f30; + float var_f27; + float var_f28; + s32 var_r31; + + var_f28 = 100000.0f; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_f31 = arg0->unk_00.unk_6C.x - arg1->unk_88[var_r31][1].x; + var_f30 = arg0->unk_00.unk_6C.z - arg1->unk_88[var_r31][1].z; + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 > var_f27) { + var_f28 = var_f27; + *arg2 = arg1->unk_88[var_r31][1]; + } + } + return var_f28; +} + +void fn_1_8814(UnkM432DllStruct *arg0, s32 arg1, Vec *arg2) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f27; + + var_f27 = 72.0f * arg0->unk_CC->unk_04; + var_f31 = arg2->x - arg0->unk_00.unk_6C.x; + var_f30 = arg2->z - arg0->unk_00.unk_6C.z; + var_f31 *= 4.0f; + var_f30 *= 4.0f; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 < var_f28) { + var_f31 = var_f27 * (var_f31 / var_f28); + var_f30 = var_f27 * (var_f30 / var_f28); + } + arg0->unk_00.unk_20 = var_f31; + arg0->unk_00.unk_24 = -var_f30; +} + +void fn_1_8A14(UnkM432DllStruct *arg0, s32 arg1, UnkM432DllBss0SubStruct *arg2) +{ + Vec spC; + + if (NULL != arg2) { + spC = arg2->unk_2C; + if (arg2->unk_14 & 0xF00) { + fn_1_52B8(arg2, &spC); + } + fn_1_8814(arg0, 0, &spC); + } +} + +UnkM432DllBss0SubStruct *fn_1_8CB4(UnkM432DllStruct *arg0, UnkM432DllStruct *arg1, UnkBss0Struct *arg2) +{ + s32 var_r30; + UnkM432DllBss0SubStruct *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r29 = NULL; + if (arg0->unk_17C < 0x1F) { + var_r29 = &arg2->unk_10[arg0->unk_184 & 1][arg0->unk_17C]; + } + if (NULL == var_r29) { + return NULL; + } + if (var_r29->unk_14 & 2) { + var_r28 = 5; + var_r27 = arg2->unk_1B8; + var_r26 = 0; + var_r25 = 5; + } + else { + var_r28 = 9; + var_r27 = arg2->unk_1BC; + var_r26 = 0; + var_r25 = 9; + if (-14100.0f < arg0->unk_00.unk_6C.z) { + var_r26 = 3; + var_r25 = 9; + } + if (-13700.0f < arg0->unk_00.unk_6C.z) { + var_r26 = 0; + var_r25 = 6; + } + if (-13300.0f < arg0->unk_00.unk_6C.z) { + var_r26 = 0; + var_r25 = 3; + } + } + var_r30 = frandmod(var_r28); + for (var_r21 = 0; var_r21 < var_r28; var_r21++) { + var_r30 = (var_r30 + 1) % var_r28; + if ((var_r26 <= var_r30) && (var_r25 > var_r30) + && ((arg0->unk_100 != 0) || ((var_r27 != var_r30) && (((var_r29->unk_14 & 4) == 0) || (var_r30 <= 3))))) { + var_r24 = arg0->unk_FC; + var_r19 = 0; + for (var_r20 = 0; var_r20 < arg0->unk_CC->unk_18; var_r20++) { + var_r24--; + if (var_r24 < 0) { + var_r24 += 0xA; + } + if (var_r30 == arg0->unk_D4[var_r24]) { + var_r19 = 1; + } + } + if (var_r19 == 0) { + break; + } + } + } + if ((var_r21 == var_r28) || (var_r27 == var_r30)) { + var_r30 = frandmod(var_r28); + while (var_r30 == var_r27) { + var_r30 = (var_r30 + 1) % var_r28; + } + } + if (arg0->unk_CC->unk_1C < arg0->unk_100) { + var_r30 = var_r27; + } + if (NULL != arg1->unk_C8) { + if (var_r29->unk_14 & 2) { + if (arg1->unk_C8->unk_14 & 8) { + var_r30 = var_r27; + } + } + else if (arg1->unk_C8->unk_14 & 0x10) { + var_r30 = var_r27; + } + } + arg0->unk_100++; + (void)var_r26; + (void)var_r25; + return &var_r29[var_r30]; +} + +void fn_1_8F3C(UnkM432DllStruct *arg0, UnkBss0Struct *arg1, UnkM432DllBss0SubStruct *arg2, Vec *arg3) +{ + *arg3 = arg2->unk_2C; + if (arg0->unk_00.unk_48 >= 0x14) { + if (-12200.0f < arg0->unk_00.unk_6C.z) { + arg3->x = arg1->unk_28.x; + } + else if ((-13300.0f < arg0->unk_00.unk_6C.z) && (-13400.0f > arg2->unk_2C.z)) { + arg3->x = arg1->unk_28.x - 500.0f; + } + else if ((-13700.0f < arg0->unk_00.unk_6C.z) && (-13800.0f > arg2->unk_2C.z)) { + arg3->x = 500.0f + arg1->unk_28.x; + } + else if ((-13500.0f > arg0->unk_00.unk_6C.z) && (-13400.0f < arg2->unk_2C.z)) { + arg3->x = 500.0f + arg1->unk_28.x; + return; + } + } +} + +void fn_1_906C(UnkM432DllStruct *var_r31, UnkM432DllBss0SubStruct *var_r27) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = 0; + var_r29 = 0; + var_r28 = 0; + switch (var_r27->unk_14 & 0xF00) { + case 0x100: + var_r30 = 0x200; + var_r29 = 0x200; + break; + case 0x400: + var_r30 = 0x800; + var_r29 = 0x800; + var_r28 = 1; + break; + case 0x200: + var_r30 = 0x400; + var_r29 = 0x400; + var_r28 = 1; + break; + case 0x800: + if ((var_r31->unk_CC->unk_14 >= var_r31->unk_154) && (var_r31->unk_CC->unk_10 > var_r31->unk_158)) { + var_r31->unk_00.unk_34 = 0x96; + } + else if ((var_r31->unk_CC->unk_10 <= var_r31->unk_154) && (var_r31->unk_CC->unk_14 >= var_r31->unk_158)) { + var_r31->unk_00.unk_34 = 0x96; + } + else { + var_r31->unk_00.unk_30 = 0x96; + } + if (var_r31->unk_CC->unk_0C < frandf()) { + var_r31->unk_104 *= 0.99f; + } + if (var_r31->unk_CC->unk_00 > lbl_1_bss_57C) { + var_r31->unk_104 *= 0.99f; + } + else { + var_r31->unk_104 *= 1.01f; + } + if (0.5f > var_r31->unk_104) { + var_r31->unk_104 = 0.5f; + } + if (1.0f < var_r31->unk_104) { + var_r31->unk_104 = 1.0f; + } + var_r31->unk_00.unk_30 = var_r31->unk_00.unk_30 * var_r31->unk_104; + var_r31->unk_00.unk_34 = var_r31->unk_00.unk_34 * var_r31->unk_104; + break; + } + var_r31->unk_108 -= 1.0f; + if (0.0f > var_r31->unk_108) { + var_f31 = var_r31->unk_CC->unk_08; + if ((var_r28 != 0) && (GWPlayerCfg[var_r31->unk_188].diff == 3)) { + var_f31 = lbl_1_data_17D4.unk_08; + } + var_r31->unk_108 = var_f31 * (0.9f + (frandf() / 2)); + var_r31->unk_00.unk_28 |= var_r30; + var_r31->unk_00.unk_2C |= var_r29; + } +} + +void fn_1_93BC(UnkM432DllStruct *arg0) +{ + Vec spF8; + float spD0; + + float var_f31; + float var_f30; + + UnkM432DllBss0SubStruct *var_r30; + UnkBss0Struct *var_r29; + UnkM432DllBss0SubStruct *var_r28; + UnkM432DllStruct *var_r27; + s32 var_r20; + + if (NULL != arg0->unk_CC) { + var_r27 = fn_1_51A8(arg0->unk_184 ^ 1); + var_r29 = &lbl_1_bss_0[arg0->unk_184 >> 1]; + var_r20 = 1; + switch (fn_1_8540(arg0)) { + case 0: + var_r30 = fn_1_85AC(arg0, var_r29); + fn_1_8A14(arg0, 0, var_r30); + break; + case 1: + var_r28 = fn_1_85AC(arg0, var_r29); + if (NULL != var_r28) { + var_r30 = var_r28; + if (((NULL == arg0->unk_C8) && (NULL != var_r27->unk_C8)) || ((var_r28->unk_2C.z - 400.0f) > arg0->unk_00.unk_6C.z)) { + var_r30++; + } + else if ((var_r28->unk_2C.z - 1350.0f) > var_r27->unk_00.unk_6C.z) { + var_r30++; + var_r20 = 0; + } + if ((1400.0f < (var_r28->unk_2C.z - arg0->unk_00.unk_6C.z)) && (1400.0f < (var_r28->unk_2C.z - var_r27->unk_00.unk_6C.z))) { + var_r20 = 0; + arg0->unk_00.unk_24 = 0x48; + } + else { + if (((var_r28->unk_2C.z - 175.0f) > arg0->unk_00.unk_6C.z) && ((var_r28->unk_2C.z - 1350.0f) < arg0->unk_00.unk_6C.z)) { + if (((var_r29->unk_28.x - 20.0f) < arg0->unk_00.unk_6C.x) && ((20.0f + var_r29->unk_28.x) > arg0->unk_00.unk_6C.x) + && ((var_r28->unk_2C.z - 1000.0f) > arg0->unk_00.unk_6C.z)) { + arg0->unk_00.unk_24 = 0x48; + } + if ((var_r28->unk_2C.z - 1100.0f) > arg0->unk_00.unk_6C.z) { + arg0->unk_00.unk_28 |= 0x100; + arg0->unk_00.unk_2C |= 0x100; + fn_1_8A14(arg0, 0, var_r30); + } + else { + spD0 = fn_1_861C(arg0, var_r29, &spF8); + if ((arg0->unk_00.unk_BC < spD0) && (400.0f > spD0)) { + arg0->unk_00.unk_28 |= 0x100; + arg0->unk_00.unk_2C |= 0x100; + fn_1_8814(arg0, 0, &spF8); + } + } + } + else { + fn_1_8A14(arg0, 0, var_r30); + } + if (((var_r28->unk_2C.z - 175.0f) < arg0->unk_00.unk_6C.z) && (arg0->unk_00.unk_A8 < arg0->unk_00.unk_6C.y)) { + arg0->unk_00.unk_20 = 0; + arg0->unk_00.unk_24 = 0; + } + } + } + break; + case 2: + var_r20 = 0; + arg0->unk_10C -= 1.0f; + if (NULL == arg0->unk_D0) { + arg0->unk_D0 = fn_1_8CB4(arg0, var_r27, var_r29); + } + if (arg0->unk_10C == 1.0f) { + arg0->unk_D0 = fn_1_8CB4(arg0, var_r27, var_r29); + } + if (NULL != arg0->unk_D0) { + fn_1_8F3C(arg0, var_r29, arg0->unk_D0, &spF8); + fn_1_8814(arg0, 0, &spF8); + if (arg0->unk_00.unk_3C & 1) { + arg0->unk_10C = 20.0f + (20.0f * (arg0->unk_184 & 1)); + } + var_f31 = arg0->unk_00.unk_6C.x - arg0->unk_D0->unk_2C.x; + var_f30 = arg0->unk_00.unk_6C.z - arg0->unk_D0->unk_2C.z; + spD0 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if ((200.0f > spD0) || (arg0->unk_00.unk_4C > 0x14) || (arg0->unk_00.unk_48 > 0xC8)) { + arg0->unk_00.unk_28 |= 0x100; + arg0->unk_00.unk_2C |= 0x100; + } + if (50.0f > spD0) { + arg0->unk_00.unk_20 = 0; + arg0->unk_00.unk_24 = 0; + } + if (0.0f < arg0->unk_10C) { + arg0->unk_00.unk_20 = 0; + arg0->unk_00.unk_24 = 0; + arg0->unk_00.unk_28 &= 0xFFFFFEFF; + arg0->unk_00.unk_2C &= 0xFFFFFEFF; + } + } + break; + case 3: + var_r30 = fn_1_85AC(arg0, var_r29); + break; + } + if ((var_r20 != 0) && (NULL != var_r30)) { + fn_1_906C(arg0, var_r30); + } + } +} + +float fn_1_A974(UnkM432DllStruct *var_r31) +{ + Vec sp14; + Vec sp8; + + sp14 = var_r31->unk_00.unk_6C; + sp14.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.y; + Hu3D3Dto2D(&sp14, lbl_1_data_A0[var_r31->unk_184 >> 1], &sp8); + return sp8.y; +} + +WorkPlayerOld *fn_1_AA00(int no) +{ + return &((UnkM432DllStruct *)lbl_1_bss_410[no]->data)->unk_00; +} + +void fn_1_AA1C(omObjData *object) +{ + float var_f31; + UnkM432DllStruct *var_r31; + UnkM432DllBss0SubStruct *var_r30; + s32 var_r29; + + var_r31 = object->data; + var_f31 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.z - 750.0f; + if (var_f31 > var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_f31; + } + var_f31 = 900.0f + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.z; + if (var_f31 < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_f31; + } + if (var_r31->unk_15C < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_r31->unk_15C; + } + var_r30 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1]; + if ((var_r31->unk_184 & 1) != 0) { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 = 0.0f; + } + for (var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r30++) { + if ((var_r31->unk_17C <= var_r29) && ((var_r30->unk_14 & 1) != 0)) { + var_f31 = 170.0f + var_r30->unk_2C.z; + if (var_f31 > var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_f31; + } + if ((var_r31->unk_184 & 1) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 > (var_r30->unk_2C.z - 170.0f))) { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 = var_r30->unk_2C.z - 170.0f; + } + } + } + if (((var_r31->unk_184 & 1) == 0) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.x < var_r31->unk_00.unk_6C.x) + && (0.0f > lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 < var_r31->unk_00.unk_6C.z)) { + var_r31->unk_00.unk_6C.z = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0; + } +} + +Vec *fn_1_ACC8(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f27; + + UnkM432DllStruct *var_r31; + UnkBss0Struct *var_r30; + s32 var_r29; + UnkM432DllStruct *var_r28; + + var_r28 = object->data; + var_r31 = var_r28; + var_r30 = &lbl_1_bss_0[var_r28->unk_184 >> 1]; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r31->unk_00.unk_6C.y <= var_r30->unk_88[var_r29][1].y) + && ((var_r31->unk_00.unk_6C.y + (var_r31->unk_00.unk_BC / 2)) >= var_r30->unk_88[var_r29][1].y)) { + var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_88[var_r29][1].x; + var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_88[var_r29][1].z; + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 < (var_r31->unk_00.unk_BC + var_r30->unk_88[var_r29][2].y)) { + return &var_r30->unk_88[var_r29][0]; + } + } + } + return NULL; +} + +void fn_1_AF28(omObjData *object) +{ + UnkM432DllStruct *var_r31 = object->data; + var_r31->unk_16C = 0; + var_r31->unk_00.unk_3C &= 0xFFFFFFEF; + fn_1_4ED8(&var_r31->unk_00, 0); +} + +#include "src/REL/executor.c" + +void fn_1_B234(void) +{ + UnkM432DllStruct *var_r31; + s32 var_r30; + u32 var_r29; + u32 var_r28; + + if (HuPadBtn[0] & 2) { + lbl_1_bss_57C = 300 * REFRESH_RATE; + } + print8(0x18, 0x20, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_580, lbl_1_bss_41C->work[0], lbl_1_bss_576); + print8(0x18, 0x30, 1.5f, "%f %f %f %f", lbl_1_bss_0[0].unk_64, lbl_1_bss_0[0].unk_68, lbl_1_bss_0[0].unk_6C, lbl_1_bss_0[0].unk_28.z); + print8(0x18, 0x40, 1.5f, "%f %f %f %f", lbl_1_bss_0[1].unk_64, lbl_1_bss_0[1].unk_68, lbl_1_bss_0[1].unk_6C, lbl_1_bss_0[0].unk_28.z); + print8(0x18, 0x50, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = lbl_1_bss_410[var_r30]->data; + print8(0x18, (var_r30 * 0x10) + 0x70, 1.5f, "%d %d %04x %.3f (%.3f %.3f %.3f)", var_r31->unk_180, var_r31->unk_00.unk_38, + var_r31->unk_00.unk_3C, var_r31->unk_00.unk_A8, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + } +} + +void fn_1_B458(omObjData *object) +{ + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_24(0x1000, object->model[0]); + omDelObjEx(lbl_1_bss_5B4, object); + lbl_1_bss_402--; +} + +void fn_1_B518(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM432DllStruct2 *var_r31; + + var_r31 = object->data; + var_r31->unk_10 += 1.0f; + if (30.0f <= var_r31->unk_10) { + fn_1_B458(object); + return; + } + if (10.0f > var_r31->unk_10) { + var_f31 = var_r31->unk_10 / 10.0f; + var_f30 = 0.0f; + } + else { + var_f31 = 1.0f; + var_f30 = (var_r31->unk_10 - 10.0f) / 20.0f; + } + var_f29 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + var_f28 = sind((90.0f * var_f30)) * sind((90.0f * var_f30)); + omSetTra(object, var_r31->unk_00.x + (var_r31->unk_14 * var_f29), var_r31->unk_00.y, var_r31->unk_00.z + (var_r31->unk_18 * var_f28)); +} + +void fn_1_B7E4(omObjData *object) +{ + UnkM432DllStruct2 *var_r30; + UnkBss5D0Struct *var_r29; + UnkBss5D0Struct *var_r28; + UnkBss5D0Struct *var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + + var_r26 = fn_1_AC(0x1000); + if (var_r26 < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_400); + } + else { + object->model[0] = var_r26; + } + var_r30 = object->data; + var_r30->unk_10 = 0.0f; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 3); + omSetTra(object, var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z); + omSetRot(object, 0.0f, 0.0f, 0.0f); + omSetSca(object, var_r30->unk_0C, var_r30->unk_0C, var_r30->unk_0C); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_B518; +} + +void fn_1_B974(Vec *arg0, float arg8, float arg9) +{ + UnkM432DllStruct2 *var_r31; + omObjData *var_r30; + + if (lbl_1_bss_402 < 0xF0) { + lbl_1_bss_402++; + var_r30 = omAddObjEx(lbl_1_bss_5B4, 0x67, 1, 0, 3, fn_1_B7E4); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct2), 0x10000000); + var_r31 = var_r30->data; + var_r31->unk_00 = *arg0; + var_r31->unk_00.x += 30.0f * arg9; + var_r31->unk_0C = 1.0f + arg8; + var_r31->unk_14 = 70.0f * arg9; + var_r31->unk_18 = -675.0f; + } +} + +void fn_1_BAA8(UnkM432DllStruct *arg0) +{ + Vec sp20; + Vec sp14; + float var_f31; + float var_f30; + + s32 *var_r29; + s32 var_r27; + + sp20 = arg0->unk_00.unk_6C; + sp20.y += 220.0f; + fn_1_1A60(&sp20, lbl_1_data_A0[arg0->unk_184 >> 1], &sp14); + + arg0->unk_110 = sp14.x; + arg0->unk_114 = sp14.y; + if (NULL != arg0->unk_C4) { + var_f31 = 0.0f; + var_f30 = 0.0f; + for (var_r29 = arg0->unk_C4, var_r27 = 1; var_r29[0] >= 0; var_r29 += 3) { + espPosSet(arg0->unk_118[var_r29[0]], var_r29[1] + (arg0->unk_110 + var_f31), var_r29[2] + (arg0->unk_114 + var_f30)); + espDispOn(arg0->unk_118[var_r29[0]]); + if (var_r27 != 0) { + var_r27 = 0; + var_f31 = var_r29[1]; + var_f30 = var_r29[2]; + } + } + } +} + +s32 fn_1_BF08(UnkM432DllStruct *arg0) +{ + switch (arg0->unk_C8->unk_14 & 0xF00) { + case 0x100: + if (arg0->unk_00.unk_28 & 0x200) { + return 0x7D4; + } + break; + case 0x400: + if (arg0->unk_00.unk_28 & 0x800) { + return 0x7D5; + } + break; + case 0x200: + if (arg0->unk_00.unk_28 & 0x400) { + return 0x7D5; + } + break; + case 0x800: + return 0x7D6; + } + return 0x7D3; +} + +void fn_1_BF9C(UnkM432DllStruct *arg0) +{ + Vec spC; + float var_f31; + float var_f30; + float var_f26; + + UnkM432DllStruct *var_r31; + + var_r31 = arg0; + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f + arg0->unk_C8->unk_18, 0.4f); + fn_1_52B8(arg0->unk_C8, &spC); + var_f31 = spC.x - var_r31->unk_00.unk_6C.x; + var_f30 = spC.z - var_r31->unk_00.unk_6C.z; + var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (10.0f <= var_f26) { + var_f31 = 10.0f * (var_f31 / var_f26); + var_f30 = 10.0f * (var_f30 / var_f26); + } + var_r31->unk_00.unk_6C.x += var_f31; + var_r31->unk_00.unk_6C.z += var_f30; +} + +void fn_1_C33C(UnkM432DllStruct *arg0) +{ + Vec spC; + float sp8; + float var_f31; + float var_f30; + float var_f27; + UnkM432DllBss0SubStruct *var_r30; + s32 var_r29; + s32 *var_r28; + UnkM432DllStruct *var_r27; + + var_r28 = NULL; + if (arg0->unk_00.unk_38 == 0) { + for (var_r30 = lbl_1_bss_0[arg0->unk_184 >> 1].unk_10[arg0->unk_184 & 1], var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r30++) + if ((arg0->unk_17C <= var_r29) && (var_r30->unk_14 & 0xF00) && (((var_r30->unk_14 & 0x700) == 0) || !(20.0f < arg0->unk_00.unk_6C.y))) { + fn_1_52B8(var_r30, &spC); + var_f31 = spC.x - arg0->unk_00.unk_6C.x; + var_f30 = spC.z - arg0->unk_00.unk_6C.z; + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (arg0->unk_00.unk_BC > var_f27) { + var_r27 = fn_1_51A8(arg0->unk_184 ^ 1); + if ((NULL == var_r27->unk_C8) || (var_r30->unk_08 != var_r27->unk_C8->unk_08)) { + arg0->unk_C8 = var_r30; + switch (var_r30->unk_14 & 0xF00) { + case 0x100: + var_r28 = lbl_1_data_2AC; + break; + case 0x200: + var_r28 = lbl_1_data_2D0; + break; + case 0x400: + var_r28 = lbl_1_data_2F4; + break; + case 0x800: + var_r28 = lbl_1_data_318; + break; + } + break; + } + } + } + } + + if (arg0->unk_C4 != var_r28) { + arg0->unk_C4 = var_r28; + if (NULL == var_r28) { + arg0->unk_C8 = NULL; + } + for (var_r29 = 0; var_r29 < 9; var_r29++) { + espDispOff(arg0->unk_118[var_r29]); + } + } +} + +void fn_1_C724(UnkM432DllStruct *var_r31, omObjData *var_r25, omObjData *var_r24) +{ + Vec spC; + float var_f25; + + UnkBss0Struct *var_r30; + UnkM432DllStruct *var_r29; + s32 var_r28; + void *var_r27; + s32 var_r26; + float var_f19; + + var_r30 = &lbl_1_bss_0[var_r31->unk_184 >> 1]; + fn_1_BF9C(var_r31); + if (fn_1_BF08(var_r31) == 0x7D4) { + var_r30->unk_1D4 += 1.0f - (2.0f * (var_r31->unk_14C / REFRESH_RATE)); + if (0.0f > var_r30->unk_1D4) { + var_r30->unk_1D4 = 0.0f; + } + if (1.0f < var_r30->unk_1D4) { + var_r30->unk_1D4 = 1.0f; + } + var_r31->unk_14C = 0.0f; + if (25.0f <= (var_r31->unk_C8->unk_38 += 1.0f)) { + var_r31->unk_C8->unk_38 = 25.0f; + } + omVibrate(var_r31->unk_188, 0xC, 6, 6); + } + else { + var_r31->unk_14C += 1.0f; + var_r30->unk_1D4 -= 1.0f / REFRESH_RATE; + if (0.0f > var_r30->unk_1D4) { + var_r30->unk_1D4 = 0.0f; + } + if (20.0f <= var_r31->unk_14C) { + var_r31->unk_14C = 0.0f; + if (0.0f >= (var_r31->unk_C8->unk_38 -= 1.0f)) { + var_r31->unk_C8->unk_38 = 0.0f; + } + } + } + HuAudFXPitchSet(var_r30->unk_1CC, (s32)(8191.0f * var_r30->unk_1D4)); + HuAudFXPitchSet(var_r30->unk_1D0, (s32)(8191.0f * (1.0f - (var_r31->unk_C8->unk_38 / 25.0f)))); + if (Hu3DMotionShiftIDGet(var_r25->model[0]) < 0) { + var_f25 = var_r31->unk_C8->unk_38 * (Hu3DMotionMaxTimeGet(var_r25->model[0]) / 25.0f); + Hu3DMotionTimeSet(var_r25->model[0], var_f25); + var_f25 = var_r31->unk_C8->unk_38 * (Hu3DMotionMaxTimeGet((var_r24->model[var_r31->unk_C8->unk_08])) / 25.0f); + Hu3DMotionTimeSet(var_r24->model[var_r31->unk_C8->unk_08], var_f25); + } + if ((25.0f <= var_r31->unk_C8->unk_38) || (var_r31->unk_C8->unk_38 == 0.0f)) { + if (25.0f <= var_r31->unk_C8->unk_38) { + var_r31->unk_17C++; + } + var_r31->unk_180 = 0x7D3; + fn_1_4ED8(&var_r31->unk_00, 0); + HuAudFXStop(var_r30->unk_1CC); + HuAudFXStop(var_r30->unk_1D0); + var_r30->unk_1CC = -1; + var_r30->unk_1D0 = -1; + } +} + +void fn_1_D0E0(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2) +{ + fn_1_BF9C(arg0); + if (fn_1_BF08(arg0) == 0x7D5) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC += 1.0f - (2.0f * (arg0->unk_14C / REFRESH_RATE)); + if (0.0f > lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.0f; + } + if (1.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 1.0f; + } + arg0->unk_14C = 0.0f; + arg0->unk_C8->unk_3C += 3.0f; + omVibrate(arg0->unk_188, 0xC, 6, 6); + } + else { + arg0->unk_14C += 1.0f; + } + if (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) { + Hu3DMotionTimeSet(arg1->model[0], 120.0 * (fmod(arg0->unk_C8->unk_38, 360.0) / 360.0)); + Hu3DMotionTimeSet( + arg2->model[arg0->unk_C8->unk_08], Hu3DMotionMaxTimeGet(arg2->model[arg0->unk_C8->unk_08]) * (fmod(arg0->unk_C8->unk_38, 360.0) / 360.0)); + } + if (20.0f <= arg0->unk_14C) { + arg0->unk_180 = 0x7D3; + fn_1_4ED8(&arg0->unk_00, 0); + } + else if (lbl_1_bss_0[arg0->unk_184 >> 1].unk_1D8 < 0) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.5f; + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1D8 = HuAudFXPlay((arg0->unk_184 & 2) == 0 ? 0x68E : 0x68F); + } +} + +void fn_1_D9EC(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2) +{ + float var_f28; + float var_f27; + float var_f23; + + fn_1_BF9C(arg0); + if ((arg0->unk_00.unk_30 <= 0) || (arg0->unk_00.unk_34 <= 0)) { + var_f27 = 0.0f; + if (arg0->unk_00.unk_30 > 0) { + var_f27 = -(arg0->unk_00.unk_30 / 150.0f); + } + if (arg0->unk_00.unk_34 > 0) { + var_f27 = arg0->unk_00.unk_34 / 150.0f; + } + if (var_f27 != 0.0f) { + if ((0.0f > var_f27 ? -1 : 1) != (0.0f > arg0->unk_150 ? -1 : 1)) { + var_f28 = arg0->unk_158 - arg0->unk_154; + if (0.0f < var_f28) { + if (0.98f < var_f28) { + var_f28 += 0.6f; + if ((arg0->unk_184 & 2) == 0) { + HuAudFXPlay(0x692); + } + else { + HuAudFXPlay(0x693); + } + } + arg0->unk_C8->unk_38 += 10.0f * var_f28; + var_f23 = var_f28; + if (0.5f > var_f23) { + var_f23 = 0.0f; + } + fn_1_B974(&arg0->unk_C8->unk_2C, var_f23 / 2, (arg0->unk_184 & 1) ? -1.0f : 1.0f); + } + arg0->unk_154 = arg0->unk_158; + } + arg0->unk_150 = var_f27; + arg0->unk_158 = arg0->unk_158 + (0.1f * arg0->unk_150); + if (0.0f > arg0->unk_158) { + arg0->unk_158 = 0.0f; + } + if (1.0f < arg0->unk_158) { + arg0->unk_158 = 1.0f; + } + } + } + if (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) { + Hu3DMotionTimeSet(arg1->model[0], arg0->unk_158 * Hu3DMotionMaxTimeGet(arg1->model[0])); + Hu3DMotionTimeSet(arg2->model[arg0->unk_C8->unk_08], arg0->unk_158 * Hu3DMotionMaxTimeGet(arg2->model[arg0->unk_C8->unk_08])); + } + if (1000.0f <= lbl_1_bss_0[arg0->unk_184 >> 1].unk_124) { + arg0->unk_180 = 0x7D3; + fn_1_4ED8(&arg0->unk_00, 0); + } +} + +void fn_1_E3B4(UnkM432DllStruct *arg0, omObjData *arg1) +{ + float var_f31; + float var_f30; + s32 var_r28; + + if (arg0->unk_00.unk_38 != 0) { + fn_1_40C0(&arg0->unk_00); + return; + } + if (arg0->unk_C8->unk_14 & 0x18) { + if (((arg0->unk_C8->unk_14 & 8) && (arg0->unk_178 <= 0)) || ((arg0->unk_C8->unk_14 & 0x10) && (arg0->unk_178 <= 1))) { + arg0->unk_178++; + omVibrate(arg0->unk_188, 0xC, 4, 2); + if ((arg0->unk_184 & 2) == 0) { + HuAudFXPlay(0x690); + } + else { + HuAudFXPlay(0x691); + } + } + if ((arg0->unk_184 & 1) != 0) { + var_r28 = 1; + } + else { + var_r28 = -1; + } + arg0->unk_170 = var_r28 * 0x18; + arg0->unk_174 = 0x48; + arg0->unk_00.unk_9C = 180.0f; + if ((((arg0->unk_C8->unk_14 & 8) == 0) || !(-11100.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z)) + && (((arg0->unk_C8->unk_14 & 0x10) == 0) || !(-13500.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z))) { + var_f30 = 800.0f - (400.0f * (arg0->unk_184 & 1)); + if (0.0f > (lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z)) { + var_f31 = -(lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z); + } + else { + var_f31 = lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z; + } + if (!(var_f30 < var_f31)) { + fn_1_5148(arg0); + HuAudCharVoicePlay(arg0->unk_18C, 0x122); + goto block_26; + } + } + } + else { + arg0->unk_170 = 0; + arg0->unk_174 = -0x48; + arg0->unk_00.unk_9C = 0.0f; + block_26: + arg0->unk_D0 = 0; + arg0->unk_D4[arg0->unk_FC] = arg0->unk_C8->unk_44 - arg0->unk_17C; + arg0->unk_FC = (arg0->unk_FC + 1) % 10; + arg0->unk_180 = 0x7D8; + arg0->unk_00.unk_6C = arg0->unk_C8->unk_2C; + arg0->unk_00.unk_6C.y -= 200.0f; + fn_1_4ED8(&arg0->unk_00, 3); + arg0->unk_00.unk_3C |= 8; + } +} + +void fn_1_E9E4(UnkM432DllStruct *arg0) +{ + float var_f31; + float var_f30; + float var_f28; + + arg0->unk_00.unk_20 = arg0->unk_170; + arg0->unk_00.unk_24 = arg0->unk_174; + arg0->unk_00.unk_28 = 0x100; + arg0->unk_00.unk_2C = 0x100; + fn_1_40C0(&arg0->unk_00); + var_f31 = arg0->unk_C8->unk_2C.x - arg0->unk_00.unk_6C.x; + var_f30 = arg0->unk_C8->unk_2C.z - arg0->unk_00.unk_6C.z; + if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f) { + var_f28 = 0.0f; + if (arg0->unk_174 > 0) { + var_f28 = 100.0f; + } + if ((arg0->unk_C8->unk_2C.y + var_f28) > arg0->unk_00.unk_6C.y) { + arg0->unk_00.unk_84.y = _1606_BY_REFRESH_RATE; + arg0->unk_00.unk_A4 = 1.0f; + return; + } + arg0->unk_00.unk_3C &= 0xFFFFFFF7; + return; + } + if ((0.0f > arg0->unk_00.unk_84.y) && ((100.0f + arg0->unk_C8->unk_2C.y) > arg0->unk_00.unk_6C.y)) { + arg0->unk_180 = 0x7D3; + HuAudCharVoicePlay(arg0->unk_18C, 0x10D); + } +} + +void fn_1_EC7C(UnkM432DllStruct *arg0, omObjData *arg1) +{ + if ((lbl_1_bss_0[arg0->unk_184 >> 1].unk_1E4 - (arg0->unk_00.unk_BC / 2)) > arg0->unk_00.unk_6C.y) { + Hu3DModelShadowDispOff(arg1->model[0]); + return; + } + Hu3DModelShadowDispOn(arg1->model[0]); +} + +void fn_1_ED0C(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f26; + UnkBss0Struct *var_r28; + UnkM432DllStruct *var_r31; + s32 var_r26; + s32 var_r22; + + var_r31 = object->data; + var_r28 = &lbl_1_bss_0[var_r31->unk_184 >> 1]; + if (lbl_1_bss_41C->work[0] >= 0x3EC) { + if (lbl_1_bss_3FC != (var_r31->unk_184 & 2)) { + var_r26 = 1; + if (var_r31->unk_00.unk_A8 < var_r31->unk_00.unk_6C.y) { + var_r26 = 0; + } + if (var_r31->unk_180 == 0x7D7) { + var_r26 = 0; + } + if (var_r31->unk_180 == 0x7D8) { + var_r26 = 0; + } + if (var_r31->unk_180 == 0x7D9) { + var_r26 = 0; + } + if ((var_r31->unk_180 == 0x7D3) && (var_r31->unk_00.unk_38 == 1)) { + var_r26 = 0; + } + if (var_r26 != 0) { + var_r31->unk_180 = 0x7DA; + if (lbl_1_bss_3FC >= 0) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, HU3D_ATTR_NONE); + } + else { + var_r31->unk_168 = 1; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } + } + else { + var_r31->unk_180 = 0x7DB; + var_r31->unk_13C.x += 100.0f * (var_r31->unk_184 & 1 ? -1.0f : 1.0f); + var_r31->unk_13C.z += -475.0f; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + if (var_r31->unk_180 >= 0x7DA) { + for (var_r22 = 0; var_r22 < 9; var_r22++) { + espDispOff(var_r31->unk_118[var_r22]); + } + if (lbl_1_bss_3FC == (var_r31->unk_184 & 2)) { + GWPlayerCoinWinSet(var_r31->unk_188, 10); + } + object->func = fn_1_10250; + return; + } + } + if (GWPlayerCfg[var_r31->unk_188].iscom != 0) { + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + fn_1_93BC(var_r31); + } + else { + var_r31->unk_00.unk_20 = HuPadStkX[var_r31->unk_190]; + var_r31->unk_00.unk_24 = HuPadStkY[var_r31->unk_190]; + var_r31->unk_00.unk_28 = HuPadBtnDown[var_r31->unk_190]; + var_r31->unk_00.unk_2C = HuPadBtn[var_r31->unk_190]; + var_r31->unk_00.unk_30 = HuPadTrigL[var_r31->unk_190]; + var_r31->unk_00.unk_34 = HuPadTrigR[var_r31->unk_190]; + } + if ((var_r31->unk_180 == 0x7D3) && ((var_r31->unk_13C.x != 0.0f) || (var_r31->unk_13C.z != 0.0f))) { + var_f30 = var_r31->unk_13C.x - var_r31->unk_00.unk_6C.x; + var_f31 = var_r31->unk_13C.z - var_r31->unk_00.unk_6C.z; + if (var_r31->unk_00.unk_BC < ABS(var_f31)) { + var_f30 = 0.0f; + } + var_f26 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + if (10.0f <= var_f26) { + var_f30 /= var_f26; + var_f31 /= var_f26; + } + else { + var_f30 = 0.0f; + var_f31 = 0.0f; + var_r31->unk_00.unk_9C = var_r31->unk_148; + } + var_r31->unk_00.unk_20 = 72.0f * var_f30; + var_r31->unk_00.unk_24 = 72.0f * -var_f31; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + } + switch (var_r31->unk_180) { + case 0x7D3: + if ((var_r31->unk_16C != 0) && ((var_r31->unk_00.unk_3C & 0x101) != 0)) { + var_r31->unk_16C = 0; + var_r31->unk_00.unk_3C &= 0xFFFFFFEF; + fn_1_4ED8(&var_r31->unk_00, 0); + } + fn_1_40C0(&var_r31->unk_00); + fn_1_C33C(var_r31); + if ((NULL != var_r31->unk_C4) && (NULL != var_r31->unk_C8)) { + var_r31->unk_180 = fn_1_BF08(var_r31); + switch (var_r31->unk_180) { + case 0x7D4: + var_r31->unk_14C = 0.0f; + var_r31->unk_C8->unk_38 = 1.0f; + var_r28->unk_1D4 = 0.5f; + if (var_r28->unk_1CC < 0) { + var_r28->unk_1CC = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x68C : 0x68D); + } + if (var_r28->unk_1D0 < 0) { + var_r28->unk_1D0 = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x695 : 0x696); + } + Hu3DMotionShiftSet(object->model[0], object->motion[5], 0.0f, 8.0f, HU3D_MOTATTR_PAUSE); + break; + case 0x7D5: + var_r31->unk_14C = 0.0f; + var_r31->unk_C8->unk_3C += 3.0f; + if (var_r28->unk_1D8 < 0) { + var_r28->unk_1DC = 0.5f; + var_r28->unk_1D8 = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x68E : 0x68F); + } + Hu3DMotionShiftSet( + object->model[0], object->motion[7], 120.0 * (fmod(var_r31->unk_C8->unk_38, 360.0) / 360.0), 8.0f, HU3D_MOTATTR_PAUSE); + break; + case 0x7D6: + var_r31->unk_14C = 0.0f; + var_r31->unk_150 = -1.0f; + var_r31->unk_158 = 0.0f; + var_r31->unk_154 = 0.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[8], 0.0f, 8.0f, HU3D_MOTATTR_PAUSE); + break; + } + } + else if (-800.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_3C |= 0x10; + if (NULL == lbl_1_bss_0[var_r31->unk_184 >> 1].unk_08) { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_08 = object; + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1B4 = -1; + } + else { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_0C = object; + } + } + break; + case 0x7D4: + fn_1_C724(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04); + break; + case 0x7D5: + fn_1_D0E0(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04); + break; + case 0x7D6: + fn_1_D9EC(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04); + break; + case 0x7D7: + fn_1_E3B4(var_r31, object); + break; + case 0x7D8: + fn_1_E9E4(var_r31); + break; + case 0x7D9: + break; + default: + OSReport("*** player mode error(%d)!!\n", var_r31->unk_180); + break; + } + fn_1_EC7C(var_r31, object); + fn_1_BAA8(var_r31); + + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E8 += 1.0f; + + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1EC += fn_1_A974(var_r31); + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1F0[var_r31->unk_184 & 1] = var_r31->unk_00.unk_6C.z; + fn_1_2DD4(&var_r31->unk_00); +} + +void fn_1_10250(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f24; + UnkM432DllStruct *var_r31; + omObjData *var_r29; + + var_r31 = object->data; + var_r29 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04; + switch (var_r31->unk_180) { + case 0x7D0: + if (lbl_1_bss_41C->work[0] >= 0x3E9) { + var_r31->unk_180++; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + HuAudCharVoicePlay(var_r31->unk_18C, 0x125); + } + break; + case 0x7D1: + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0x48; + var_r31->unk_00.unk_28 = 0x100; + var_r31->unk_00.unk_2C = 0x100; + fn_1_40C0(&var_r31->unk_00); + if (200.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_84.y = _1606_BY_REFRESH_RATE; + var_r31->unk_00.unk_A4 = 1.0f; + } + else { + var_r31->unk_180++; + } + break; + case 0x7D2: + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + if (var_r31->unk_00.unk_38 == 1) { + var_r31->unk_00.unk_24 = 0x48; + } + fn_1_40C0(&var_r31->unk_00); + if ((var_r31->unk_00.unk_38 == 0) && (lbl_1_bss_41C->work[0] >= 0x3EB)) { + var_r31->unk_180++; + object->func = fn_1_ED0C; + } + break; + case 0x7DA: + if ((var_r31->unk_168 != 0) && (lbl_1_bss_3FC < 0) && (lbl_1_bss_41C->work[0] >= 0x3F1)) { + var_r31->unk_168 = 0; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, HU3D_ATTR_NONE); + } + break; + case 0x7DB: + var_f31 = var_r31->unk_13C.x - var_r31->unk_00.unk_6C.x; + var_f30 = var_r31->unk_13C.z - var_r31->unk_00.unk_6C.z; + if (1.0f > ABS(var_f31)) { + if (1.0f > ABS(var_f30)) { + var_r31->unk_180++; + var_r31->unk_160 = 0.0f; + var_r31->unk_164 = var_r31->unk_00.unk_6C.y; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, HU3D_ATTR_NONE); + break; + } + } + if (1.0f < ABS(var_f31)) { + var_f30 = 0.0f; + } + var_f24 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (10.0f < var_f24) { + var_f31 = 10.0f * (var_f31 / var_f24); + var_f30 = 10.0f * (var_f30 / var_f24); + } + var_r31->unk_00.unk_6C.x += var_f31; + var_r31->unk_00.unk_6C.z += var_f30; + + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(var_f31, var_f30), 0.4f); + break; + case 0x7DC: + var_r31->unk_160 += 5.0f; + var_r31->unk_00.unk_6C.z -= 10.0f; + var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y + (120.0 * sind(var_r31->unk_160)); + if (180.0f <= var_r31->unk_160) { + var_r31->unk_180++; + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0.0f, 8.0f, HU3D_ATTR_NONE); + } + break; + case 0x7DD: + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_180++; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r29->model[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r29->model[15], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r29->model[23], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(0x694); + } + break; + case 0x7DE: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 0.0f, 0.4f); + if ((Hu3DMotionEndCheck(var_r29->model[9]) != 0) && (Hu3DMotionEndCheck(var_r29->model[15]) != 0)) { + var_r31->unk_180++; + } + break; + case 0x7DF: + var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y; + if (lbl_1_bss_41C->work[0] >= 0x3F1) { + var_r31->unk_180++; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + HuAudCharVoicePlay(var_r31->unk_18C, 0x125); + } + break; + case 0x7E0: + var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y; + break; + case 0x7D3: + case 0x7D4: + case 0x7D5: + case 0x7D6: + case 0x7D7: + case 0x7D8: + case 0x7D9: + default: + OSReport("*** player mode error(%d)!!\n", var_r31->unk_180); + break; + } + fn_1_EC7C(var_r31, object); + fn_1_2DD4(&var_r31->unk_00); +} + +void fn_1_10CCC(omObjData *object) +{ + Vec sp8; + + UnkM432DllStruct *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + UnkM432DllBss0SubStruct *var_r26; + s32 var_r24; + s32 var_r23; + + var_r31 = object->data; + var_r26 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1]; + var_r31->unk_18C = GWPlayerCfg[var_r31->unk_188].character; + var_r31->unk_190 = GWPlayerCfg[var_r31->unk_188].pad_idx; + var_r31->unk_180 = 0x7D0; + var_r31->unk_168 = 0; + var_r31->unk_CC = NULL; + var_r31->unk_C4 = NULL; + var_r31->unk_C8 = NULL; + var_r31->unk_150 = 0.0f; + var_r31->unk_158 = 0.0f; + var_r31->unk_154 = 0.0f; + var_r31->unk_17C = 0; + var_r31->unk_15C = 10000.0f; + var_r31->unk_178 = 0; + var_r31->unk_16C = 0; + var_r31->unk_104 = 0.5f; + var_r31->unk_108 = 0.0f; + fn_1_5148(var_r31); + sp8 = var_r26[var_r31->unk_17C++].unk_2C; + sp8.y -= 200.0f; + fn_1_2C1C(&var_r31->unk_00, object, var_r31->unk_188, var_r31->unk_18C, lbl_1_data_268, 0, &sp8, 180.0f); + var_r31->unk_00.unk_04 = fn_1_AA1C; + var_r31->unk_00.unk_08 = fn_1_ACC8; + fn_1_2DC8(&var_r31->unk_00, 1, (var_r31->unk_184 & 2) == 0 ? lbl_1_data_354 : lbl_1_data_36C); + var_r31->unk_00.unk_0C = fn_1_AF28; + var_r31->unk_13C.x = 0.0f; + var_r31->unk_13C.y = 0.0f; + var_r31->unk_13C.z = 0.0f; + object->model[0] = CharModelCreate(lbl_1_data_0[var_r31->unk_18C], 4); + CharModelStepTypeSet(lbl_1_data_0[var_r31->unk_18C], 0); + for (var_r29 = 0; var_r29 < 0xB; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(lbl_1_data_0[var_r31->unk_18C], lbl_1_data_108[var_r31->unk_18C][var_r29]); + CharModelMotionSet(lbl_1_data_0[var_r31->unk_18C], object->motion[var_r29]); + } + Hu3DModelCameraSet(object->model[0], lbl_1_data_A0[var_r31->unk_184 >> 1]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelShadowSet(object->model[0]); + fn_1_2DD4(&var_r31->unk_00); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + var_r31->unk_118[var_r29] = espEntry(lbl_1_data_288[var_r29], 0, 0); + espDrawNoSet(var_r31->unk_118[var_r29], 0); + espDispOff(var_r31->unk_118[var_r29]); + espAttrSet(var_r31->unk_118[var_r29], HUSPR_ATTR_NOANIM); + espBankSet(var_r31->unk_118[var_r29], 0); + espPriSet(var_r31->unk_118[var_r29], 0x80 - var_r29); + } + espTPLvlSet(var_r31->unk_118[0], 0.9f); + espTPLvlSet(var_r31->unk_118[1], 0.9f); + if (GWPlayerCfg[var_r31->unk_188].iscom != 0) { + switch (GWPlayerCfg[var_r31->unk_188].diff) { + case 0: + var_r31->unk_CC = &lbl_1_data_1794; + break; + case 1: + var_r31->unk_CC = &lbl_1_data_17B4; + break; + case 2: + var_r31->unk_CC = &lbl_1_data_17D4; + break; + case 3: + default: + var_r31->unk_CC = &lbl_1_data_17F4; + break; + } + } + CharModelLayerSetAll2(5); + CharModelMotionDataClose(lbl_1_data_0[var_r31->unk_18C]); + object->func = fn_1_10250; +} + +void fn_1_113F0(omObjData *object) { } + +void fn_1_113F4(omObjData *var_r31) +{ + s32 sp48; + + UnkM432DllBss0SubStruct *var_r30; + s32 var_r28; + UnkBss0Struct *var_r22; + + var_r22 = &lbl_1_bss_0[var_r31->work[0]]; + var_r31->model[0] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x02)); + Hu3DModelCameraSet(var_r31->model[0], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[0], 0); + + var_r31->model[1] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x04)); + Hu3DModelCameraSet(var_r31->model[1], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[1], 0); + + var_r31->model[2] = fn_1_46C(lbl_1_data_528[var_r31->work[0]]); + Hu3DModelCameraSet(var_r31->model[2], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[2], 1); + + var_r31->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x01)); + Hu3DModelCameraSet(var_r31->model[3], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->model[3], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(var_r31->model[3], 0); + + var_r31->model[24] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x03)); + Hu3DModelCameraSet(var_r31->model[24], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelLayerSet(var_r31->model[24], 0); + Hu3DModelPosSet(var_r31->model[24], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(var_r31->model[24], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(var_r31->model[24], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[24], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->model[24], HU3D_MOTATTR_LOOP); + + var_r31->model[25] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x07)); + Hu3DMotionSet(var_r31->model[25], Hu3DJointMotionFile(var_r31->model[25], DATA_MAKE_NUM(DATADIR_M432, 0x08))); + Hu3DModelCameraSet(var_r31->model[25], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[25], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[25], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[25], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[25], 2); + Hu3DModelShadowSet(var_r31->model[25]); + omSetTra(var_r31, var_r22->unk_28.x, 0.0f, 0.0f); + omSetRot(var_r31, 0.0f, 0.0f, 0.0f); + for (var_r28 = 0; var_r28 < 0x1A; var_r28++) { + Hu3DModelPosSet(var_r31->model[var_r28], var_r22->unk_28.x, 0.0f, 0.0f); + Hu3DModelRotSet(var_r31->model[var_r28], 0.0f, 0.0f, 0.0f); + } + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r22->unk_10[var_r28] = HuMemDirectMallocNum(HEAP_SYSTEM, 31 * sizeof(UnkM432DllBss0SubStruct), MEMORY_DEFAULT_NUM); + memcpy(var_r22->unk_10[var_r28], var_r28 == 0 ? &lbl_1_data_5EC : &lbl_1_data_EDC, 31 * sizeof(UnkM432DllBss0SubStruct)); + for (var_r30 = var_r22->unk_10[var_r28], sp48 = 0; sp48 < 0x1F; sp48++, var_r30++) { + fn_1_1D18(var_r31->model[3], var_r30->unk_00, &var_r30->unk_20); + var_r30->unk_2C = var_r30->unk_20; + var_r30->unk_38 = 0.0f; + var_r30->unk_3C = 0.0f; + var_r30->unk_40 = -1; + var_r30->unk_44 = sp48; + if ((var_r30->unk_08 > 0) && (var_r30->unk_0C[var_r31->work[0]] != 0)) { + var_r31->model[var_r30->unk_08] = fn_1_46C(var_r30->unk_0C[var_r31->work[0]]); + Hu3DModelCameraSet(var_r31->model[var_r30->unk_08], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelLayerSet(var_r31->model[var_r30->unk_08], 0); + Hu3DModelPosSet(var_r31->model[var_r30->unk_08], var_r30->unk_2C.x, var_r30->unk_2C.y, var_r30->unk_2C.z); + Hu3DModelRotSet(var_r31->model[var_r30->unk_08], 0.0f, var_r30->unk_18, 0.0f); + Hu3DModelAttrSet(var_r31->model[var_r30->unk_08], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(var_r31->model[var_r30->unk_08], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->model[var_r30->unk_08], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[var_r30->unk_08], HU3D_ATTR_DISPOFF); + } + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + lbl_1_bss_0[var_r31->work[0]].unk_88[var_r28][2].y = 35.0f; + } + fn_1_1D18(var_r31->model[3], "m432_00-d0", &lbl_1_bss_0[var_r31->work[0]].unk_88[0][0]); + fn_1_1D18(var_r31->model[3], "m432_00-d0", &lbl_1_bss_0[var_r31->work[0]].unk_88[1][0]); + fn_1_1D18(var_r31->model[3], "m432_00-d1", &lbl_1_bss_0[var_r31->work[0]].unk_88[2][0]); + fn_1_1D18(var_r31->model[3], "m432_00-d1", &lbl_1_bss_0[var_r31->work[0]].unk_88[3][0]); + + fn_1_5364(var_r31->work[0], var_r31); + + fn_1_1D18(var_r31->model[3], "m432_00-h0", &lbl_1_bss_0[var_r31->work[0]].unk_118); + for (var_r28 = 0; var_r28 < 8; var_r28++) { + fn_1_1D18(var_r31->model[3], lbl_1_data_3DC[var_r28], &lbl_1_bss_0[var_r31->work[0]].unk_130[var_r28]); + if ((var_r28 % 4) < 2) { + lbl_1_bss_0[var_r31->work[0]].unk_130[var_r28].z -= 150.0f; + } + } + fn_1_1D18(var_r31->model[3], "m432_00-n0", &lbl_1_bss_0[var_r31->work[0]].unk_1C0); + Hu3DModelShadowMapSet(var_r31->model[0]); + Hu3DModelShadowMapSet(var_r31->model[20]); + Hu3DModelShadowMapSet(var_r31->model[21]); + Hu3DModelAttrReset(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->model[2], HU3D_ATTR_DISPOFF); + var_r31->func = fn_1_113F0; +} + +void fn_1_12800(omObjData *object) { } + +void fn_1_12804(omObjData *object) +{ + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x00)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + omSetTra(object, lbl_1_bss_0[object->work[0]].unk_28.x, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + object->func = fn_1_12800; +} + +void fn_1_128C8(omObjData *object) +{ + s32 var_r31; + UnkM432DllStruct *var_r30; + UnkM432DllStruct *var_r29; + s32 var_r28; + s32 var_r27; + void *var_r26; + void *var_r25; + omObjData *var_r24; + void *var_r23; + void *var_r22; + + if (lbl_1_bss_41C->work[0] >= 0x3EB) { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r24 = lbl_1_bss_0[var_r31].unk_04; + var_r30 = fn_1_51A8(var_r31 * 2); + var_r29 = fn_1_51A8(var_r31 * 2 + 1); + if ((var_r30->unk_180 == 0x7DF) && (var_r29->unk_180 == 0x7DF)) { + lbl_1_bss_0[var_r31].unk_12C += 0.05f; + if (12.0f < lbl_1_bss_0[var_r31].unk_12C) { + lbl_1_bss_0[var_r31].unk_12C = 12.0f; + } + lbl_1_bss_0[var_r31].unk_118.y += lbl_1_bss_0[var_r31].unk_12C; + Hu3DModelPosSet(var_r24->model[22], lbl_1_bss_0[var_r31].unk_118.x, lbl_1_bss_0[var_r31].unk_118.y, lbl_1_bss_0[var_r31].unk_118.z); + lbl_1_bss_0[var_r31].unk_28.y += 0.1f * ((500.0f + lbl_1_bss_0[var_r31].unk_118.y) - lbl_1_bss_0[var_r31].unk_28.y); + lbl_1_bss_0[var_r31].unk_1C.y += 0.01f * (1000.0f - lbl_1_bss_0[var_r31].unk_1C.y); + lbl_1_bss_0[var_r31].unk_1C.z += 0.002f * ((4000.0f + lbl_1_bss_0[var_r31].unk_118.z) - lbl_1_bss_0[var_r31].unk_1C.z); + Hu3DCameraPosSetV(lbl_1_data_A0[var_r31], &lbl_1_bss_0[var_r31].unk_1C, &lbl_1_data_C8, &lbl_1_bss_0[var_r31].unk_28); + } + else { + fn_1_623C(&lbl_1_bss_0[var_r31], var_r31, var_r30, var_r29); + if (NULL != lbl_1_bss_0[var_r31].unk_08) { + fn_1_6F28(&lbl_1_bss_0[var_r31]); + } + if ((2.0f <= lbl_1_bss_0[var_r31].unk_1E8) && (lbl_1_bss_0[var_r31].unk_1EC != 0.0f)) { + fn_1_7C1C(&lbl_1_bss_0[var_r31], var_r30, var_r29); + } + lbl_1_bss_0[var_r31].unk_0C = NULL; + lbl_1_bss_0[var_r31].unk_1E8 = 0.0f; + lbl_1_bss_0[var_r31].unk_1EC = 0.0f; + lbl_1_bss_0[var_r31].unk_1F0[0] = 0.0f; + lbl_1_bss_0[var_r31].unk_1F0[1] = 0.0f; + } + } +#if VERSION_NTSC + if (lbl_1_bss_41C->work[0] >= 0x3EC) { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_0[var_r31].unk_1CC >= 0) { + HuAudFXStop(lbl_1_bss_0[var_r31].unk_1CC); + } + if (lbl_1_bss_0[var_r31].unk_1D0 >= 0) { + HuAudFXStop(lbl_1_bss_0[var_r31].unk_1D0); + } + if (lbl_1_bss_0[var_r31].unk_1D8 >= 0) { + HuAudFXStop(lbl_1_bss_0[var_r31].unk_1D8); + } + lbl_1_bss_0[var_r31].unk_1CC = -1; + lbl_1_bss_0[var_r31].unk_1D0 = -1; + lbl_1_bss_0[var_r31].unk_1D8 = -1; + } + } +#endif + } +} + +void fn_1_12EA8(void) +{ + float var_f31; + float var_f30; + + UnkBss0Struct *var_r31; + s32 var_r30; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31 = &lbl_1_bss_0[var_r30]; + if (var_r31->unk_7C == 0.0f) { + var_r31->unk_1C = var_r31->unk_28; + var_r31->unk_1C.x = var_r31->unk_1C.x + (var_r31->unk_68 * sind(var_r31->unk_64)); + var_r31->unk_1C.y += var_r31->unk_6C; + var_r31->unk_1C.z = var_r31->unk_1C.z + (var_r31->unk_68 * cosd(var_r31->unk_64)); + } + else { + var_r31->unk_78 += 1.0f; + var_f30 = var_r31->unk_78 / var_r31->unk_7C; + var_f31 = sind((90.0f * var_f30)) * sind((90.0f * var_f30)); + + var_r31->unk_1C.x = var_r31->unk_34.x + (var_f31 * (var_r31->unk_40.x - var_r31->unk_34.x)); + var_r31->unk_1C.y = var_r31->unk_34.y + (var_f31 * (var_r31->unk_40.y - var_r31->unk_34.y)); + var_r31->unk_1C.z = var_r31->unk_34.z + (var_f31 * (var_r31->unk_40.z - var_r31->unk_34.z)); + var_r31->unk_28.x = var_r31->unk_4C.x + (var_f31 * (var_r31->unk_58.x - var_r31->unk_4C.x)); + var_r31->unk_28.y = var_r31->unk_4C.y + (var_f31 * (var_r31->unk_58.y - var_r31->unk_4C.y)); + var_r31->unk_28.z = var_r31->unk_4C.z + (var_f31 * (var_r31->unk_58.z - var_r31->unk_4C.z)); + if (var_r31->unk_7C <= var_r31->unk_78) { + var_r31->unk_68 = var_r31->unk_1C.z - var_r31->unk_28.z; + var_r31->unk_6C = var_r31->unk_1C.y - var_r31->unk_28.y; + var_r31->unk_78 = 0.0f; + var_r31->unk_7C = 0.0f; + } + } + Hu3DCameraPosSetV(lbl_1_data_A0[var_r30], &var_r31->unk_1C, &lbl_1_data_C8, &var_r31->unk_28); + } +} + +void fn_1_131A8(omObjData *var_r28) +{ + Vec sp98; + Vec sp8C; + Vec sp80; + UnkM432DllStruct *sp7C[1]; + + float var_f31; + float var_f30; + float var_f27; + float var_f26; + float var_f22; + float var_f21; + + UnkBss0Struct *var_r29; + s32 var_r26; + s32 var_r17; + + if (omSysExitReq != 0) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r28->func = fn_1_1615C; + } + lbl_1_bss_580++; + switch (var_r28->work[0]) { + case 0x3E8: + if (WipeStatGet() == 0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3E9: + lbl_1_bss_3F0 += 1.0f; + var_f31 = lbl_1_bss_3F0 / 60.0f; + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + for (var_r26 = 0; var_r26 < 2; var_r26++) { + lbl_1_bss_0[var_r26].unk_28.z = -300.0f + (-400.0f * var_f30); + } + fn_1_12EA8(); + if (60.0f <= lbl_1_bss_3F0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3EA: + if (lbl_1_bss_576 < 0) { + lbl_1_bss_576 = MGSeqCreate(3, 0); + } + else { + if ((lbl_1_bss_570 < 0) && ((MGSeqStatGet(lbl_1_bss_576) & 0x10) != 0)) { + fn_1_1F24(0x46); + } + if (MGSeqStatGet(lbl_1_bss_576) == 0) { + var_r28->work[0]++; + lbl_1_bss_57C = 0; + lbl_1_bss_576 = -1; + lbl_1_bss_3F0 = 0.0f; + } + } + break; + case 0x3EB: + lbl_1_bss_57C++; + if (lbl_1_bss_574 >= 0) { + MGSeqParamSet(lbl_1_bss_574, 1, (300 * REFRESH_RATE + REFRESH_RATE - 1 - lbl_1_bss_57C) / REFRESH_RATE); + } + else if (lbl_1_bss_57C > 270 * REFRESH_RATE) { + lbl_1_bss_574 = MGSeqCreate(1, (300 * REFRESH_RATE + REFRESH_RATE - 1 - lbl_1_bss_57C) / REFRESH_RATE, -1, -1); + MGSeqPosSet(lbl_1_bss_574, 288.0f, 400.0f); + } + fn_1_580(lbl_1_bss_528, 0, lbl_1_bss_57C); + + fn_1_12EA8(); + if ((lbl_1_bss_57C >= 300 * REFRESH_RATE) || (lbl_1_bss_3FC >= 0)) { + var_r28->work[0] = 0x3EC; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3EC: + if (lbl_1_bss_576 < 0) { + if (lbl_1_bss_574 >= 0) { + MGSeqParamSet(lbl_1_bss_574, 2, -1); + } + lbl_1_bss_574 = -1; + lbl_1_bss_3F8 = 0; + lbl_1_bss_576 = MGSeqCreate(3, 1); + fn_1_1F58(0x64); + } + else { + var_r17 = 0; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + if (((UnkM432DllStruct *)lbl_1_bss_410[var_r26]->data)->unk_180 >= 0x7DA) { + var_r17++; + } + } + if (++lbl_1_bss_3F8 > 0x78) { + var_r17 = 4; + } + lbl_1_bss_3F0 += 1.0f; + if ((var_r17 >= 4) && (60.0f <= lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) { + var_r28->work[0] = 0x3EE; + if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_57C < (VERSION_NTSC ? 5400 : 5250))) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) { + goto block_81; + } + } + else { + block_81: + GWGameStat.present[0x32] = 1; + } + } + if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_578 > lbl_1_bss_57C)) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) { + goto block_98; + } + } + else { + block_98: + var_r28->work[0] = 0x3ED; + fn_1_798(3); + } + } + lbl_1_bss_576 = -1; + lbl_1_bss_3F0 = 0.0f; + } + } + break; + case 0x3ED: + if (lbl_1_bss_576 < 0) { + lbl_1_bss_576 = MGSeqCreate(0xE, lbl_1_bss_578); + } + else if (MGSeqStatGet(lbl_1_bss_576) == 0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + lbl_1_bss_576 = -1; + } + break; + case 0x3EE: + if (lbl_1_bss_3FC < 0) { + var_r28->work[0] = 0x3F1; + lbl_1_bss_3F0 = 0.0f; + } + else if (2000.0f < lbl_1_bss_0[lbl_1_bss_3FC >> 1].unk_118.y) { + var_r28->work[0]++; + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + } + break; + case 0x3EF: + if (WipeStatGet() == 0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + omDelObjEx(lbl_1_bss_5B4, lbl_1_bss_414); + Hu3DCameraKill(lbl_1_data_A0[(lbl_1_bss_3FC >> 1) ^ 1]); + Hu3DCameraPerspectiveSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 20.0f, 20.0f, 20000.0f, 1.2f); + Hu3DCameraViewportSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 0, 0, 0x280, 0x1E0); + var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1]; + var_r29->unk_118.y = 5000.0f; + Hu3DModelPosSet(var_r29->unk_04->model[22], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z); + Hu3DModelPosSet(var_r29->unk_04->model[24], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z); + Hu3DModelAttrReset(var_r29->unk_04->model[24], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r29->unk_04->model[24], HU3D_MOTATTR_PAUSE); + var_r29->unk_28.y = 8000.0f; + var_r29->unk_1C.y = 8000.0f; + var_r29->unk_1C.z = 5000.0f + var_r29->unk_118.z; + Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28); + var_r29->unk_4C = var_r29->unk_28; + var_r29->unk_58 = var_r29->unk_28; + var_r29->unk_34 = var_r29->unk_1C; + var_r29->unk_40 = var_r29->unk_1C; + var_r29->unk_58.y = 5200.0f; + var_r29->unk_40.y = 5200.0f; + var_r29->unk_40.z = 2000.0f + var_r29->unk_118.z; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + lbl_1_bss_3F4 = HuAudFXPlay(0x69B); + } + break; + case 0x3F0: + var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1]; + lbl_1_bss_3F0 += 1.0f; + var_f31 = lbl_1_bss_3F0 / (3.0f * REFRESH_RATE); + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + var_r29->unk_28.y = var_r29->unk_4C.y + (var_f30 * (var_r29->unk_58.y - var_r29->unk_4C.y)); + var_r29->unk_1C.y = var_r29->unk_34.y + (var_f30 * (var_r29->unk_40.y - var_r29->unk_34.y)); + if ((1.5f * REFRESH_RATE) < lbl_1_bss_3F0) { + var_f31 = (lbl_1_bss_3F0 - 1.5f * REFRESH_RATE) / (1.5f * REFRESH_RATE); + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + var_r29->unk_1C.z = var_r29->unk_34.z + (var_f30 * (var_r29->unk_40.z - var_r29->unk_34.z)); + } + Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28); + if ((3 * REFRESH_RATE) <= lbl_1_bss_3F0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3F1: + if (lbl_1_bss_576 < 0) { + if (lbl_1_bss_3FC < 0) { + lbl_1_bss_576 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + else { + lbl_1_bss_576 = MGSeqCreate(5, 3, fn_1_51A8(lbl_1_bss_3FC)->unk_18C, fn_1_51A8(lbl_1_bss_3FC + 1)->unk_18C, -1, -1); + HuAudSStreamPlay(1); + } + } + else { + lbl_1_bss_3F0 += 1.0f; + if (0 <= lbl_1_bss_3FC) { } + if ((210.0f < lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) { + fn_1_1F58(-1); + lbl_1_bss_576 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r28->func = fn_1_1615C; + } + } + break; + default: + OSReport("*** main mode error(%d)!!\n", var_r28->work[0]); + break; + } + fn_1_A40(); + if ((lbl_1_bss_3FC >= 0) && (var_r28->work[0] >= 0x3F0)) { + var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1]; + var_r29->unk_118.y = 5000.0 + (10.0 * sind((lbl_1_bss_580 * 4))); + Hu3DModelPosSet(var_r29->unk_04->model[22], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z); + } + sp98.x = 0.0f; + sp98.y = 0.0f; + sp98.z = 0.0f; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + sp7C[0] = lbl_1_bss_410[var_r26]->data; + sp98.x += sp7C[0]->unk_00.unk_6C.x; + sp98.z += sp7C[0]->unk_00.unk_6C.z; + } + sp98.x *= 0.25f; + sp98.z *= 0.25f; + var_f27 = 0.0f; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + var_f26 = VECDistance(&sp98, &((UnkM432DllStruct *)lbl_1_bss_410[var_r26]->data)->unk_00.unk_6C); + if (var_f27 < var_f26) { + var_f27 = var_f26; + } + } + + fn_1_52B8_inline(&sp80, sp98.x, 0.0f, sp98.z); + + sp98.y = 6.0f * var_f27; + sp98.z += 1000.0f; + VECNormalize(&sp98, &sp8C); + Hu3DShadowPosSet(&sp98, &sp8C, &sp80); + fn_1_2D8(); +} + +void fn_1_15320(omObjData *object) +{ + s32 var_r31; + object->work[0] = 0x3E8; + fn_1_B4C(80.0f, DATA_MAKE_NUM(DATADIR_M432, 0x1E)); + fn_1_9EC(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_131A8; +} + +void ObjectSetup(void) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + UnkBss0Struct *var_r31; + s32 var_r30; + float *var_r29; + UnkM432DllStruct *var_r28; + omObjData *var_r27; + s32 var_r26; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + OSReport("******* M432 ObjectSetup *********\n"); + lbl_1_bss_5B4 = omInitObjMan(0x258, 0x2000); + omGameSysInit(lbl_1_bss_5B4); + nMap = 0; + nChar = 0; + lbl_1_bss_580 = 0; + lbl_1_bss_576 = -1; + lbl_1_bss_574 = -1; + lbl_1_bss_3FC = -1; + lbl_1_bss_3F8 = 0; + lbl_1_bss_570 = -1; + lbl_1_bss_3F4 = -1; + lbl_1_bss_57C = 0; + lbl_1_bss_578 = GWMGRecordGet(3); + lbl_1_bss_568 = -1.0f; + if (lbl_1_bss_578 == 0) { + lbl_1_bss_578 = 120 * REFRESH_RATE; + } + fn_1_414(); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + lbl_1_bss_0[var_r30].unk_08 = NULL; + lbl_1_bss_0[var_r30].unk_18 = 0; + lbl_1_bss_0[var_r30].unk_28.x = -800.0f + (1600.0f * var_r30); + lbl_1_bss_0[var_r30].unk_28.y = 0.0f; + lbl_1_bss_0[var_r30].unk_28.z = -300.0f; + lbl_1_bss_0[var_r30].unk_1E4 = 0.0f; + lbl_1_bss_0[var_r30].unk_64 = 0.0f; + lbl_1_bss_0[var_r30].unk_68 = 3900.0f; + lbl_1_bss_0[var_r30].unk_6C = 3250.0f; + lbl_1_bss_0[var_r30].unk_1E8 = 0.0f; + lbl_1_bss_0[var_r30].unk_70 = 0.0f; + lbl_1_bss_0[var_r30].unk_74 = 0.0f; + lbl_1_bss_0[var_r30].unk_78 = 0.0f; + lbl_1_bss_0[var_r30].unk_7C = 0.0f; + lbl_1_bss_0[var_r30].unk_80 = 0.0f; + lbl_1_bss_0[var_r30].unk_84 = 0.0f; + lbl_1_bss_0[var_r30].unk_124 = 0.0f; + lbl_1_bss_0[var_r30].unk_128 = 0.0f; + lbl_1_bss_0[var_r30].unk_12C = 0.0f; + lbl_1_bss_0[var_r30].unk_1B8 = frandmod(5); + lbl_1_bss_0[var_r30].unk_1BC = frandmod(9); + lbl_1_bss_0[var_r30].unk_1CC = -1; + lbl_1_bss_0[var_r30].unk_1D0 = -1; + lbl_1_bss_0[var_r30].unk_1D4 = 0.0f; + lbl_1_bss_0[var_r30].unk_1D8 = -1; + lbl_1_bss_0[var_r30].unk_1DC = 0.0f; + } + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(3, 20.0f, 20.0f, 20000.0f, 0.6f); + fn_1_12EA8(); + for (var_r29 = lbl_1_data_A8, var_r30 = 0; var_r30 < 2; var_r30++, var_r29 += 4) { + Hu3DCameraViewportSet(lbl_1_data_A0[var_r30], var_r29[0], var_r29[1], var_r29[2], var_r29[3], 0.0f, 1.0f); + Hu3DCameraScissorSet(lbl_1_data_A0[var_r30], var_r29[0], var_r29[1], var_r29[2], var_r29[3]); + } + var_r20 = Hu3DGLightCreateV(&lbl_1_data_D4, &lbl_1_data_E0, &lbl_1_data_EC); + Hu3DGLightStaticSet(var_r20, 0); + Hu3DGLightInfinitytSet(var_r20); + Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); + Hu3DShadowTPLvlSet(0.5f); + VECNormalize(&lbl_1_data_F0, &sp8); + Hu3DShadowPosSet(&lbl_1_data_F0, &sp8, &lbl_1_data_FC); + fn_1_2C00(fn_1_AA00, 0.0f); + omMakeGroupEx(lbl_1_bss_5B4, 2, 4); + lbl_1_bss_410 = omGetGroupMemberListEx(lbl_1_bss_5B4, 2); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27 = omAddObjEx(lbl_1_bss_5B4, 0x68, 1, 0xB, 2, fn_1_10CCC); + var_r27->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct), MEMORY_DEFAULT_NUM); + var_r27->work[0] = var_r30; + var_r28 = var_r27->data; + var_r28->unk_184 = -1; + var_r28->unk_188 = var_r27->work[0]; + var_r28->unk_194 = GWPlayerCfg[var_r28->unk_188].group; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r22 = -1; + var_r21 = 0x28; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + var_r28 = lbl_1_bss_410[var_r26]->data; + if (var_r28->unk_184 < 0) { + var_r23 = var_r28->unk_188 + (var_r28->unk_194 * 4); + if (var_r21 > var_r23) { + var_r21 = var_r23; + var_r22 = var_r26; + } + } + } + ((UnkM432DllStruct *)lbl_1_bss_410[var_r22]->data)->unk_184 = var_r30; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + lbl_1_bss_0[var_r30].unk_04 = omAddObjEx(lbl_1_bss_5B4, 0x64, 0x1A, 0, 0, fn_1_113F4); + lbl_1_bss_0[var_r30].unk_04->work[0] = var_r30; + lbl_1_bss_0[var_r30].unk_00 = omAddObjEx(lbl_1_bss_5B4, 0x65, 1, 0, 1, fn_1_12804); + lbl_1_bss_0[var_r30].unk_00->work[0] = var_r30; + MapObject[nMap++] = lbl_1_bss_0[var_r30].unk_00; + } + fn_1_150(); + lbl_1_bss_408 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M432, 0x28)); + HuSprAnimLock(lbl_1_bss_408); + lbl_1_bss_404 = Hu3DParManCreate(lbl_1_bss_408, 0x1F4, &lbl_1_data_1814); + Hu3DParManAttrSet(lbl_1_bss_404, 1); + lbl_1_bss_402 = 0; + fn_1_0(); + omMakeGroupEx(lbl_1_bss_5B4, 3, 0xF0); + lbl_1_bss_418 = omGetGroupMemberListEx(lbl_1_bss_5B4, 3); + lbl_1_bss_400 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x09)); + Hu3DModelAttrSet(lbl_1_bss_400, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_400, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + lbl_1_bss_414 = omAddObjEx(lbl_1_bss_5B4, 0x66, 0, 0, -1, fn_1_128C8); + lbl_1_bss_41C = omAddObjEx(lbl_1_bss_5B4, 0x69, 0x1A, 0, -1, fn_1_15320); + lbl_1_bss_41C->work[0] = 0x3E8; +} + +void fn_1_1615C(omObjData *arg0) +{ + s32 var_r31; + + if (lbl_1_bss_3F4 >= 0) { + lbl_1_bss_3F4 = -1; + HuAudFXStop(lbl_1_bss_3F4); + } + if (WipeStatGet() == 0) { + if (lbl_1_bss_576 >= 0) { + MGSeqKill(lbl_1_bss_576); + } + if (lbl_1_bss_574 >= 0) { + MGSeqKill(lbl_1_bss_574); + } + MGSeqKillAll(); + HuAudAllStop(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[var_r31].character]); + } + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m433Dll/main.c b/src/REL/m433Dll/main.c new file mode 100644 index 00000000..6e36fe20 --- /dev/null +++ b/src/REL/m433Dll/main.c @@ -0,0 +1,476 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m433Dll.h" + +void fn_1_4C0(omObjData *object); +void fn_1_618(omObjData *object); +void fn_1_798(omObjData *object); +void fn_1_AD4(omObjData *object); +void fn_1_E2C(omObjData *object); +void fn_1_1040(omObjData *object); +void fn_1_13FC(omObjData *object); +void fn_1_16D0(omObjData *object); +omObjFunc fn_1_1A3C(Process *process, omObjData *object); +void fn_1_1A48(omObjData *object); +float fn_1_26C4(float arg8, float arg9, float argA); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_4C = { 0.0f, 170.0f, 0.0f }; +Vec lbl_1_data_58 = { 0.0f, -22.0f, 850.0f }; + +char lbl_1_bss_34[0x4]; +char lbl_1_bss_30[0x4]; +char lbl_1_bss_2C[0x4]; +Process *lbl_1_bss_28; +omObjData *lbl_1_bss_24; +omObjData *lbl_1_bss_20; +char lbl_1_bss_18[8]; +s16 lbl_1_bss_16; +s16 lbl_1_bss_14; +s16 lbl_1_bss_12; +s16 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Vec sp14; + Vec sp8; + Process *var_r31; + LightData *var_r30; + + HuAudSndGrpSet(0x3A); + lbl_1_bss_C = lbl_1_bss_8 = -1; + lbl_1_bss_4 = lbl_1_bss_0 = -1; + lbl_1_data_28.x = 200.0f; + lbl_1_data_28.y = 1200.0f; + lbl_1_data_28.z = 160.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_16 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_16); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_16]; + var_r30->unk_00 |= 0x8000; + lbl_1_data_18.x = 55.74f; + lbl_1_data_18.y = 0.0f; + lbl_1_data_18.z = 3500.0f; + sp14.x = sp14.y = sp14.z = 0.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + sp8.x = 0.0f; + sp8.y = 3480.0002f; + sp8.z = 900.00006f; + Hu3DGLightPosAimSetV(lbl_1_bss_16, &sp8, &sp14); + Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14); + lbl_1_bss_14 = lbl_1_bss_12 = lbl_1_bss_10 = -1; + var_r31 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_28 = var_r31; + omGameSysInit(var_r31); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1.0f, 10.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_20 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_24 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_4C0); + fn_1_2894(var_r31); + fn_1_5904(var_r31); +} + +void fn_1_4C0(omObjData *object) +{ + M433DllWork *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433DllWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433DllWork)); + work->unk_00 = 0; + work->unk_04 = 0; + work->unk_0C = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_24 = 0; + work->unk_28 = 0; + work->unk_08 = 0; + work->unk_34 = 2; + work->unk_38 = 0; + work->unk_3C = 0; + object->func = fn_1_798; +} + +void fn_1_584(omObjData *object) +{ + M433DllWork *work = object->data; + work->unk_04++; + work->unk_10++; + work->unk_18++; + work->unk_28++; + if ((omSysExitReq != 0) && (work->unk_00 != 5)) { + work->unk_00 = 4; + fn_1_618(object); + } +} + +void fn_1_618(omObjData *object) +{ + M433DllWork *work = object->data; + if (work->unk_08 == 0) { + switch (work->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + Hu3DCameraPerspectiveSet(1, 41.5f, 10.0f, 10000.0f, 1.2f); + lbl_1_bss_C = HuAudFXPlay(0x6AC); + work->unk_00 = 1; + work->unk_10 = 0; + object->func = fn_1_29A4(lbl_1_bss_28, object); + break; + case 1: + work->unk_00 = 2; + work->unk_18 = 0; + object->func = fn_1_1040; + break; + case 2: + work->unk_00 = 3; + work->unk_28 = 0; + object->func = fn_1_1A3C(lbl_1_bss_28, object); + break; + case 3: + case 4: + work->unk_08 = 1; + work->unk_00 = 5; + object->func = fn_1_AD4; + break; + case 5: + default: + work->unk_00 = 5; + object->func = fn_1_E2C; + break; + } + work->unk_04 = 0; + } +} + +void fn_1_798(omObjData *object) +{ + fn_1_584(object); + fn_1_618(object); +} + +void fn_1_AD4(omObjData *object) +{ + M433DllWork *work = object->data; + + fn_1_584(object); + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + work->unk_08 = 0; + fn_1_618(object); + } +} + +void fn_1_E2C(omObjData *object) +{ + fn_1_584(object); + if (WipeStatGet() == 0) { + fn_1_5B74(); + fn_1_2984(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_1040(omObjData *object) +{ + M433DllWork *work = object->data; + fn_1_584(object); + switch (work->unk_14) { + case 0: + HuAudFXFadeOut(lbl_1_bss_C, 0x1E); + work->unk_1C = 0x1E; + work->unk_20 = 0x3C; + lbl_1_bss_14 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f); + Center.x = 0.0f; + Center.y = 200.0f; + Center.z = 0.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + CZoom = 1900.0f; + work->unk_14 = 1; + work->unk_18 = 0; + break; + case 1: + if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_14) & 0x10) != 0)) { + lbl_1_bss_4 = HuAudSeqPlay(0x47); + } + if ((MGSeqStatGet(lbl_1_bss_14) == 0) && (work->unk_08 == 0)) { + work->unk_14 = 2; + work->unk_18 = 0; + object->func = fn_1_13FC; + } + break; + } +} + +void fn_1_13FC(omObjData *object) +{ + + M433DllWork *work = object->data; + s32 var_r27 = 0; + fn_1_584(object); + work->unk_20++; + if (--work->unk_20 == 0) { + work->unk_20 = 0x3C; + work->unk_1C--; + if (work->unk_1C == 0) { + var_r27 = 1; + } + } + if (work->unk_34 != 2) { + var_r27 = 1; + } + if (var_r27 != 0) { + lbl_1_bss_12 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_12, 320.0f, 240.0f); + HuAudSeqFadeOut(lbl_1_bss_4, 0x64); + work->unk_14 = 3; + work->unk_18 = 0; + if (work->unk_08 == 0) { + object->func = fn_1_16D0; + } + lbl_1_bss_8 = HuAudFXPlay(0x6AC); + } +} + +void fn_1_16D0(omObjData *object) +{ + M433DllWork *work = object->data; + fn_1_584(object); + if ((MGSeqStatGet(lbl_1_bss_12) == 0) && ((work->unk_38 + 0xFFFF0000) == 0x1111)) { + work->unk_14 = 4; + work->unk_18 = 0; + fn_1_618(object); + } +} + +omObjFunc fn_1_1A3C(Process *process, omObjData *object) +{ + return fn_1_1A48; +} + +static inline s32 fn_1_1A48_inline(void) +{ + return GWSystem.mg_type; +} + +void fn_1_1A48(omObjData *object) +{ + M433DllWork *work = object->data; + float var_f31 = lbl_1_data_58.y; + if (fn_1_10FA4(1) != 0) { + var_f31 *= -1.0f; + } + Center.x += 0.15f * (lbl_1_data_4C.x - Center.x); + Center.y += 0.15f * (lbl_1_data_4C.y - Center.y); + Center.z += 0.15f * (lbl_1_data_4C.z - Center.z); + CRot.x = fn_1_26C4(CRot.x, lbl_1_data_58.x, 0.15f); + CRot.y = fn_1_26C4(CRot.y, var_f31, 0.15f); + CZoom += 0.15f * (lbl_1_data_58.z - CZoom); + fn_1_584(object); + work->unk_24 = 1; + if (lbl_1_bss_0 < 0) { + lbl_1_bss_0 = HuAudSStreamPlay(1); + } + if (lbl_1_bss_10 < 0) { + s32 spC[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; + s32 var_r26; + s32 var_r25 = 0; + s32 var_r24; + for (var_r26 = 0; var_r26 < 2; var_r26++) { + if (work->unk_2C[var_r26] >= 0) { + spC[var_r25++] = GWPlayerCfg[work->unk_2C[var_r26]].character; + GWPlayerCoinWinAdd(work->unk_2C[var_r26], 10); + } + } + if (spC[0] == -1) { + lbl_1_bss_10 = MGSeqCreate(5, 2); + return; + } + var_r24 = 3; + if (fn_1_1A48_inline() == 0) { + if (fn_1_10FA4(0) != 0) { + var_r24 = 5; + } + } + lbl_1_bss_10 = MGSeqCreate(5, var_r24, spC[0], spC[1], spC[2], spC[3]); + return; + } + if ((MGSeqStatGet(lbl_1_bss_10) == 0) && (work->unk_28 >= 210.0f)) { + HuAudFXFadeOut(lbl_1_bss_8, 0x1E); + work->unk_24 = 2; + fn_1_618(object); + } +} + +s32 fn_1_213C(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_00; +} + +s32 fn_1_2154(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_0C; +} + +u32 fn_1_216C(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_14; +} + +u32 fn_1_2184(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_24; +} + +void fn_1_219C(s32 arg0, s32 arg1, s32 arg2) +{ + M433DllWork *work = lbl_1_bss_24->data; + work->unk_34 = arg0; + work->unk_2C[0] = arg1; + work->unk_2C[1] = arg2; +} + +s32 fn_1_21CC(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_34; +} + +void fn_1_21E4(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_38 |= (1 << ((arg0 & 7) * 4)); +} + +void fn_1_2214(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_3C |= (1 << ((arg0 & 3) * 4)); +} + +s32 fn_1_2244(void) +{ + return MGSeqStatGet(lbl_1_bss_12) == 0; +} + +void fn_1_227C(Vec *arg0, Vec *arg1) +{ + Vec sp10; + + VECSubtract(arg1, arg0, &sp10); + Center = *arg1; + CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z))); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp10); +} + +void fn_1_2484(float arg8, float arg9, float argA, float argB, float argC, float argD) +{ + Vec sp3C; + Vec sp30; + + sp3C.x = arg8; + sp3C.y = arg9; + sp3C.z = argA; + sp30.x = argB; + sp30.y = argC; + sp30.z = argD; + fn_1_227C(&sp3C, &sp30); +} + +float fn_1_26C4(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_27E0(float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +s32 lbl_1_data_64[] = { + 0x00000000, + 0x00000000, + 0x45ABE000, + 0xC576E000, + 0x00000000, + 0xBF333333, + 0x3F19999A, + 0xFFFFFFFF, + 0x00000000, + 0x45ABE000, + 0xC576E000, + 0x00000000, + 0x3F800000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, +}; diff --git a/src/REL/m433Dll/map.c b/src/REL/m433Dll/map.c new file mode 100644 index 00000000..40aab323 --- /dev/null +++ b/src/REL/m433Dll/map.c @@ -0,0 +1,827 @@ +#include "dolphin/mtx.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m433Dll.h" + +typedef struct M433DllBss38Struct { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char unk01[2]; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ char unk05[3]; + /* 0x08 */ float unk_08; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ Vec unk_18; + /* 0x24 */ Vec unk_24; + /* 0x30 */ Vec unk_30; + /* 0x3C */ char unk3C[0xC]; + /* 0x48 */ Vec unk_48; + union { + struct { + /* 0x54 */ float unk_54; + /* 0x58 */ float unk_58; + char unk5C[4]; + /* 0x60 */ float unk_60; + }; + struct { + /* 0x54 */ s16 unk_54_s16[0x20]; + }; + }; +} M433DllBss38Struct; /* size = 0x94 */ + +typedef struct M433DllMapWork { + char unk00; + u8 unk_01; + u8 unk_02; + char unk03; + u8 unk_04; + char unk08[4]; + Vec unk_0C; + Vec unk_18; + char unk24[0xC]; + Vec unk_30; + Vec unk_3C; + char unk48[0xC]; + s16 unk_54; + char unk56[0x3E]; +} M433DllMapWork; /* size 0x94 */ + +typedef struct M433DllMapWork2 { + u8 unk_00; + Vec unk_04; + Vec unk_10; + Vec unk_1C; + Vec unk_28; + Vec unk_34; + Vec unk_40; + char unk4C[0xE4]; + float unk_130; + float unk_134; + float unk_138; + char unk13C[4]; + float unk_140; + float unk_144; + float unk_148; + float unk_14C[3]; + float unk_158[3]; + float unk_164[3]; + float unk_170[3]; + float unk_17C[3]; + u16 unk_188[3]; +} M433DllMapWork2; /* size 0x190 */ + +typedef struct M433DllUnkStruct { + s16 unk_00; + s16 unk_02; + s16 unk_04; + char unk06[0x42]; +} M433DllUnkStruct; /* size 0x48 */ + +void fn_1_2AC4(omObjData *object); +void fn_1_2CE0(omObjData *object); +void fn_1_32CC(omObjData *object); +void fn_1_39AC(omObjData *object); +void fn_1_3C1C(omObjData *object); +s16 fn_1_3E5C(s32 arg0, s16 arg1, ParticleHook arg2); +void fn_1_3F14(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_4A94(omObjData *object); +void fn_1_4BA0(omObjData *object); +void fn_1_4ED4(float arg8, Vec *arg0, Vec *arg1, float arg9); +void fn_1_5068(void); +void *fn_1_50A8(s32 arg0); +void fn_1_51DC(void); +s32 fn_1_5260(void); +float fn_1_52B4(float arg8, float arg9, float argA); +void fn_1_541C(Mtx arg0, float arg8, float arg9, float argA); +void fn_1_553C(Mtx arg0, Vec *arg1); +extern s32 lbl_1_bss_34; + +omObjData *lbl_1_bss_7B0; +omObjData *lbl_1_bss_7AC; +omObjData *lbl_1_bss_7A8; +void *lbl_1_bss_728[0x20]; +M433DllBss38Struct lbl_1_bss_38[0xC]; + +void fn_1_2894(Process *process) +{ + s32 var_r31; + s32 var_r29; + + lbl_1_bss_34 = 1; + lbl_1_bss_7AC = omAddObjEx(process, 0x1E, 8, 0, -1, fn_1_2CE0); + lbl_1_bss_7A8 = omAddObjEx(process, 0x1F, 3, 6, -1, fn_1_39AC); + lbl_1_bss_7B0 = omAddObjEx(process, 0x1D, 1, 0, -1, fn_1_4A94); + var_r29 = frand() & 0x1F; + for (var_r31 = 0; var_r31 < var_r29; var_r31++) { + fn_1_5260(); + } + fn_1_5068(); +} + +void fn_1_2984(void) +{ + fn_1_51DC(); +} + +omObjFunc fn_1_29A4(Process *process, omObjData *object) +{ + M433DllWork *work = object->data; + CRot.x = 54.3f; + CRot.y = 22.3f; + CRot.z = 0.0f; + Center.x = -130.1f; + Center.y = 885.0f; + Center.z = -900.3f; + CZoom = 1100.0f; + fn_1_4ED4(0.0f, &Center, &CRot, CZoom); + object->work[0] = 0xB4; + work->unk_0C = 1; + return fn_1_2AC4; +} + +void fn_1_2AC4(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + M433DllWork *work = object->data; + + fn_1_584(object); + if (object->work[0] == 120.0f) { + sp14.x = 0.0f; + sp14.y = -10.0f; + sp14.z = -207.5f; + sp8.x = -26.5f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1400.0f; + fn_1_4ED4(90.0f, &sp14, &sp8, var_f31); + } + if (object->work[0] == 48.0f) { + sp14.x = 0.0f; + sp14.y = 200.0f; + sp14.z = 0.0f; + sp8.x = -30.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1900.0f; + fn_1_4ED4(object->work[0], &sp14, &sp8, var_f31); + } + if (--object->work[0] == 0) { + work->unk_0C = 2; + fn_1_618(object); + lbl_1_bss_7B0->func = NULL; + } +} + +void fn_1_2CE0(omObjData *object) +{ + Vec sp8[0x10] = { + { 475.0f, 800.0f, -1400.0f }, + { -300.0f, 700.0f, -1400.0f }, + { 300.0f, 875.0f, -1450.0f }, + { -575.0f, 850.0f, -1550.0f }, + { 350.0f, 750.0f, -1500.0f }, + { -450.0f, 775.0f, -1550.0f }, + { 325.0f, 725.0f, -1450.0f }, + { -525.0f, 725.0f, -1500.0f }, + { 575.0f, 850.0f, -1550.0f }, + { -350.0f, 750.0f, -1500.0f }, + { 450.0f, 775.0f, -1550.0f }, + { -325.0f, 725.0f, -1450.0f }, + { 525.0f, 725.0f, -1500.0f }, + { -475.0f, 800.0f, -1400.0f }, + { 300.0f, 700.0f, -1400.0f }, + { -300.0f, 875.0f, -1450.0f }, + }; + M433DllBss38Struct *var_r31; + s32 var_r30; + M433DllUnkStruct *var_r28; + s32 i; + s32 var_r26; + + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCD)); + object->model[0] = var_r30; + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCE)); + object->model[1] = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r30, 0.5f); + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCF)); + object->model[2] = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M425, 0x05), 1, fn_1_3F14); + object->model[3] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 0; + HuDataDirClose(DATA_MAKE_NUM(DATADIR_M425, 0x05)); + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD3), 0xA, fn_1_3F14); + object->model[4] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 1; + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD2), 4, fn_1_3F14); + object->model[5] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 2; + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD1), 6, fn_1_3F14); + object->model[6] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 3; + for (i = 0; i < 0xC; i++) { + var_r31 = &lbl_1_bss_38[i]; + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M425, 0x02)); + var_r31->unk_00 = var_r30; + var_r31->unk_0C.x = sp8[i].x; + var_r31->unk_0C.y = sp8[i].y - 300.0f; + var_r31->unk_0C.z = 800.0f + sp8[i].z; + Hu3DModelPosSet(var_r30, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); + Hu3DMotionSpeedSet(var_r30, 6.0f); + var_r31->unk_03 = var_r31->unk_04 = 0; + var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 1.0f; + var_r31->unk_48.x = var_r31->unk_48.y = var_r31->unk_48.z = 0.0f; + var_r31->unk_30.x = var_r31->unk_0C.x; + var_r31->unk_30.y = var_r31->unk_0C.y; + var_r31->unk_30.z = var_r31->unk_0C.z; + if ((i & 1) != 0) { + var_r31->unk_18.y = 90.0f; + var_r31->unk_0C.y += 650.0; + var_r31->unk_0C.x -= 1000.0 + (200.0f * ((fn_1_5260() - 0x8000) / 32768.0f)); + } + else { + var_r31->unk_18.y = 90.0f; + var_r31->unk_0C.x += 200.0f * ((fn_1_5260() - 0x8000) / 32768.0f); + } + var_r31->unk_18.y += 10.0f * ((fn_1_5260() - 0x8000) / 32768.0f); + var_r31->unk_0C.z = var_r31->unk_0C.z - 400.0; + var_r31->unk_08 = 100.0f * (0.1f + (0.02f * (fn_1_5260() / 65536.0f))); + for (var_r26 = 0; var_r26 < 0x20; var_r26++) { + var_r31->unk_54_s16[var_r26] = 0; + } + var_r31->unk_60 = var_r31->unk_08; + } + HuDataDirClose(DATA_MAKE_NUM(DATADIR_M425, 0x02)); + HuAudFXPlayVol(0x6A3, 0x41); + object->func = fn_1_32CC; +} + +void fn_1_32CC(omObjData *object) +{ + Mtx sp14; + Vec sp8; + M433DllBss38Struct *var_r31; + s32 i; + + for (i = 0; i < 0xC; i++) { + var_r31 = &lbl_1_bss_38[i]; + switch (var_r31->unk_04) { + case 0: + if (var_r31->unk_08 < var_r31->unk_60) { + var_r31->unk_08 += 0.4f; + } + if ((s32)(64.0f * (fn_1_5260() / 65536.0f)) == 0) { + Hu3DMotionTimeSet(var_r31->unk_00, 0.0f); + } + if (Hu3DMotionEndCheck(var_r31->unk_00) != 0) { + var_r31->unk_48.y = -3.8933334f; + } + else { + var_r31->unk_48.y = -1.2166667f; + } + var_r31->unk_54 += 0.1f * ((fn_1_5260() - 0x8000) / 32768.0f); + var_r31->unk_58 += var_r31->unk_54; + if (var_r31->unk_58 > 180.0f) { + var_r31->unk_58 -= 180.0f; + } + if (var_r31->unk_58 < -180.0f) { + var_r31->unk_58 += 180.0f; + } + var_r31->unk_18.x = -30.0 * sind(var_r31->unk_58) * sind(var_r31->unk_18.y); + var_r31->unk_18.z = -30.0 * sind(var_r31->unk_58) * cosd(var_r31->unk_18.y); + if (var_r31->unk_0C.y <= 500.0f || fabs(var_r31->unk_0C.x) > 1600.0) { + var_r31->unk_48.y = 0.0f; + var_r31->unk_54_s16[6] = 0xB4; + var_r31->unk_08 *= 0.75f; + var_r31->unk_04++; + } + break; + case 1: + var_r31->unk_18.y += 1.0f; + var_r31->unk_18.x = 0.0f; + var_r31->unk_18.z = 60.0 * sind(var_r31->unk_54_s16[6]) * cosd(var_r31->unk_18.y); + if (--var_r31->unk_54_s16[6] == 0) { + Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 6.0f); + var_r31->unk_48.y = 4.866667f; + var_r31->unk_04++; + } + break; + case 2: + if (var_r31->unk_08 > 4.0f) { + var_r31->unk_08 -= 0.1f; + var_r31->unk_48.y += 0.73f; + } + var_r31->unk_48.y += -0.5475f; + if (var_r31->unk_48.y < 0.0f) { + Hu3DModelAttrReset(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 2.0f); + var_r31->unk_60 = 100.0f * (0.1f + (0.02f * (fn_1_5260() / 65536.0f))); + var_r31->unk_04 = 0; + } + break; + } + var_r31->unk_48.x = var_r31->unk_08 * sind(var_r31->unk_18.y); + var_r31->unk_48.z = var_r31->unk_08 * cosd(var_r31->unk_18.y); + var_r31->unk_0C.x += var_r31->unk_48.x; + var_r31->unk_0C.y += var_r31->unk_48.y; + var_r31->unk_0C.z += var_r31->unk_48.z; + if (var_r31->unk_0C.z >= -500.0f) { + var_r31->unk_0C.z = -500.0f; + } + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); + fn_1_541C(sp14, var_r31->unk_18.x, -var_r31->unk_18.y, var_r31->unk_18.z); + fn_1_553C(sp14, &sp8); + Hu3DModelRotSetV(var_r31->unk_00, &sp8); + } +} + +void fn_1_39AC(omObjData *object) +{ + s32 var_r29; + s32 var_r28; + + s32 sp18[4] = { 0x004000D4, 0x004000D5, 0x004000D6, 0x004000D7 }; + s32 sp8[4] = { 0x0040000C, 0x00400010, 0x0040000F, 0x0040000E }; + M433DllMapWork *work = fn_1_50A8(sizeof(M433DllMapWork)); + object->data = work; + if (lbl_1_bss_34 != 0) { + var_r28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0x0B)); + } + else { + var_r28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0x62)); + } + object->model[0] = var_r28; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_bss_34 != 0) { + object->motion[var_r29] = Hu3DJointMotionFile(var_r28, sp8[var_r29]); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(var_r28, sp18[var_r29]); + } + } + Hu3DMotionSet(var_r28, object->motion[0]); + Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP); + work->unk_01 = work->unk_02 = 0; + work->unk_04 = 0; + work->unk_54 = 0; + work->unk_0C.x = 0.0f; + work->unk_0C.y = 180.0f; + work->unk_0C.z = -490.0f; + work->unk_30 = work->unk_0C; + work->unk_18.x = work->unk_18.y = work->unk_18.z = 0.0f; + work->unk_3C = work->unk_18; + omSetTra(object, work->unk_0C.x, work->unk_0C.y, work->unk_0C.z); + omSetRot(object, work->unk_18.x, work->unk_18.y, work->unk_18.z); + object->func = fn_1_3C1C; +} + +void fn_1_3C1C(omObjData *object) +{ + M433DllMapWork *work; + s32 var_r29; + s32 var_r28; + + work = object->data; + var_r28 = object->model[0]; + switch (work->unk_04) { + case 0: + work->unk_01 = 0; + var_r29 = 0x40000001; + break; + case 1: + work->unk_3C.y = 0.0f; + work->unk_01 = 1; + var_r29 = 0x40000001; + if (work->unk_54++ >= 0x5A) { + work->unk_54 = 0; + work->unk_04 = 0; + } + break; + case 2: + work->unk_3C.y = 0.0f; + work->unk_01 = 2; + var_r29 = 0; + if (Hu3DMotionEndCheck(var_r28) != 0) { + work->unk_04 = 0; + } + break; + case 3: + work->unk_3C.y = 0.0f; + work->unk_01 = 3; + var_r29 = 0x40000001; + break; + case 4: + work->unk_3C.y = 0.0f; + work->unk_04 = 0; + break; + case 5: + work->unk_3C.y = 50.0f; + work->unk_04 = 0; + break; + case 6: + work->unk_3C.y = -50.0f; + work->unk_04 = 0; + break; + } + if (work->unk_01 != work->unk_02) { + work->unk_02 = work->unk_01; + Hu3DMotionShiftSet(var_r28, object->motion[work->unk_01], 0.0f, 8.0f, var_r29); + switch (work->unk_01) { + case 1: + HuAudFXPlay(0x43); + break; + case 2: + HuAudFXPlay(0x45); + break; + } + } + work->unk_18.y = fn_1_52B4(work->unk_18.y, work->unk_3C.y, 0.9f); + omSetTra(object, work->unk_0C.x, work->unk_0C.y, work->unk_0C.z); + omSetRot(object, work->unk_18.x, work->unk_18.y, work->unk_18.z); +} + +s16 fn_1_3E5C(s32 sp8, s16 spC, ParticleHook sp10) +{ + M433DllUnkStruct *var_r31; + s32 var_r30; + ParticleData *var_r29; + AnimData *var_r28; + + var_r28 = HuSprAnimRead(HuDataReadNum(sp8, MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r28, spC); + Hu3DParticleHookSet(var_r30, sp10); + var_r29 = Hu3DData[var_r30].unk_120; + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433DllUnkStruct), MEMORY_DEFAULT_NUM); + var_r29->unk_1C = var_r31; + var_r31->unk_00 = var_r30; + var_r31->unk_04 = 0; + return var_r30; +} + +void fn_1_3F14(ModelData *model, ParticleData *var_r30, Mtx matrix) +{ + float var_f29; + float var_f26; + float var_f25; + float var_f24; + HsfanimStruct01 *var_r31; + s32 var_r28; + float sp54[4] = { 1000.0f, 200.0f, 600.0f, 1200.0f }; + float sp44[4] = { 1.0f, 0.6f, 0.3f, 0.425f }; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + s16 sp8 = 0; + M433DllUnkStruct *var_r29 = var_r30->unk_1C; + switch (var_r29->unk_04) { + case 0: + var_r30->unk_00 = 0x54; + var_r31 = var_r30->unk_48; + if (var_r29->unk_02 != 0) { + sp14.x = 0.0f; + sp14.y = -4700.0f; + sp14.z = 4450.0f; + var_f29 = 1.0f / sqrtf((sp14.z * sp14.z) + ((sp14.x * sp14.x) + (sp14.y * sp14.y))); + sp14.x *= var_f29; + sp14.y *= var_f29; + sp14.z *= var_f29; + var_f24 = 4000.0f / var_r30->unk_30; + for (var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) { + var_f26 = 500.0f + ((var_f24 * var_r28) + (0.25f * var_f24 * (fn_1_5260() / 65536.0f))); + var_f25 = var_f26 / 4000.0f; + var_r31->unk14.x = var_f26; + var_r31->unk34.x = var_f26 * sp14.x; + var_r31->unk34.y = 5500.0f + (var_f26 * sp14.y); + var_r31->unk34.z = -3950.0f + (var_f26 * sp14.z); + var_r31->unk2C = (0.3f + (0.7f * (var_f25 * var_f25))) * (sp54[var_r29->unk_02] * (0.7f + (0.3f * (fn_1_5260() / 65536.0f)))); + var_r31->unk40.r = (s32)(160.0f * (fn_1_5260() / 65536.0f)) + 0x20; + var_r31->unk40.g = (s32)(96.0f * (fn_1_5260() / 65536.0f)) + 0x20; + var_r31->unk40.b = (s32)(128.0f * (fn_1_5260() / 65536.0f)) + 0x20; + var_r31->unk40.a = ((1.0 - (0.4 * var_f25)) * (255.0f * sp44[var_r29->unk_02])) - (s32)(16.0f * (fn_1_5260() / 65536.0f)); + } + var_r29->unk_04++; + } + else { + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 5500.0f; + var_r31->unk34.z = -3950.0f; + var_r31->unk2C = 1000.0f; + } + break; + case 1: + sp38.x = sind(CRot.y) * cosd(CRot.x); + sp38.y = -sind(CRot.x); + sp38.z = cosd(CRot.y) * cosd(CRot.x); + sp2C.x = -(Center.x + (1.25f * (sp38.x * CZoom))); + sp2C.y = 5500.0f - (Center.y + (sp38.y * CZoom)); + sp2C.z = -3950.0f - (Center.z + (1.25f * (sp38.z * CZoom))); + var_f29 = 1.0f / sqrtf((sp2C.z * sp2C.z) + ((sp2C.x * sp2C.x) + (sp2C.y * sp2C.y))); + sp2C.x *= var_f29; + sp2C.y *= var_f29; + sp2C.z *= var_f29; + var_f29 = -((-sp2C.z * -sp38.z) + ((-sp2C.x * -sp38.x) + (-sp2C.y * -sp38.y))); + sp20.x = -sp38.x + (-2.0f * sp2C.x * var_f29); + sp20.y = -sp38.y + (-2.0f * sp2C.y * var_f29); + sp20.z = -sp38.z + (-2.0f * sp2C.z * var_f29); + for (var_r31 = var_r30->unk_48, var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) { + var_r31->unk34.x = sp20.x * var_r31->unk14.x; + var_r31->unk34.y = 5500.0f + (sp20.y * var_r31->unk14.x); + var_r31->unk34.z = -3950.0f + (sp20.z * var_r31->unk14.x); + if (var_r30->unk_00 < 0xA) { + var_r31->unk40.a *= 0.8f; + } + } + var_r30->unk_00--; + if (var_r30->unk_00 == 0) { + Hu3DModelAttrReset(var_r29->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(var_r29->unk_00); + return; + } + break; + } + DCFlushRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_4A94(omObjData *var_r30) +{ + M433DllMapWork2 *work = fn_1_50A8(sizeof(M433DllMapWork2)); + var_r30->data = work; + work->unk_148 = work->unk_144 = 0.0f; + work->unk_140 = 1.0f; + work->unk_10.x = work->unk_28.x = -30.0f; + work->unk_10.y = work->unk_28.y = 0.0f; + work->unk_10.z = work->unk_28.z = 0.0f; + work->unk_04.x = work->unk_1C.x = 0.0f; + work->unk_04.y = work->unk_1C.y = 200.0f; + work->unk_04.z = work->unk_1C.z = 0.0f; + work->unk_130 = work->unk_134 = 1900.0f; + work->unk_188[0] = work->unk_188[1] = work->unk_188[2] = 0; + var_r30->func = fn_1_4BA0; +} + +void fn_1_4BA0(omObjData *object) +{ + float var_f31; + s32 var_r30; + M433DllMapWork2 *work = object->data; + if (work->unk_148 > 0.0f) { + work->unk_148 = work->unk_148 - work->unk_140; + var_f31 = (work->unk_144 - work->unk_148) / work->unk_144; + var_f31 = sind((90.0f * var_f31)); + if (work->unk_00 == 0) { + work->unk_04.x = work->unk_1C.x + (var_f31 * (work->unk_34.x - work->unk_1C.x)); + work->unk_04.y = work->unk_1C.y + (var_f31 * (work->unk_34.y - work->unk_1C.y)); + work->unk_04.z = work->unk_1C.z + (var_f31 * (work->unk_34.z - work->unk_1C.z)); + work->unk_10.x = work->unk_28.x + (var_f31 * (work->unk_40.x - work->unk_28.x)); + work->unk_10.y = work->unk_28.y + (var_f31 * (work->unk_40.y - work->unk_28.y)); + work->unk_10.z = work->unk_28.z + (var_f31 * (work->unk_40.z - work->unk_28.z)); + work->unk_130 = work->unk_134 + (var_f31 * (work->unk_138 - work->unk_134)); + } + } + CRot.x = work->unk_10.x; + CRot.y = work->unk_10.y; + CRot.z = work->unk_10.z; + Center.x = work->unk_04.x; + Center.y = work->unk_04.y; + Center.z = work->unk_04.z; + CZoom = work->unk_130; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + work->unk_17C[var_r30] = 0.0f; + if (work->unk_188[var_r30] != 0) { + work->unk_17C[var_r30] = work->unk_14C[var_r30] * sind(work->unk_164[var_r30]); + work->unk_164[var_r30] += work->unk_170[var_r30]; + work->unk_14C[var_r30] *= work->unk_158[var_r30]; + work->unk_188[var_r30] -= 1; + } + } + Center.x += work->unk_17C[0]; + Center.y += work->unk_17C[1]; + Center.z += work->unk_17C[2]; +} + +void fn_1_4ED4(float arg8, Vec *arg0, Vec *arg1, float arg9) +{ + M433DllMapWork2 *work = lbl_1_bss_7B0->data; + work->unk_00 = 0; + work->unk_144 = arg8; + work->unk_148 = arg8; + if (arg8 == 0.0f) { + work->unk_04.x = arg0->x; + work->unk_04.y = arg0->y; + work->unk_04.z = arg0->z; + work->unk_10.x = arg1->x; + work->unk_10.y = arg1->y; + work->unk_10.z = arg1->z; + work->unk_130 = arg9; + return; + } + work->unk_1C = work->unk_04; + work->unk_34.x = arg0->x; + work->unk_34.y = arg0->y; + work->unk_34.z = arg0->z; + work->unk_28 = work->unk_10; + work->unk_40.x = arg1->x; + work->unk_40.y = arg1->y; + work->unk_40.z = arg1->z; + work->unk_134 = work->unk_130; + work->unk_138 = arg9; +} + +void fn_1_4FC0(float arg8) +{ + M433DllMapWork2 *var_r31 = lbl_1_bss_7B0->data; + var_r31->unk_140 = arg8; +} + +void fn_1_4FE8(u8 arg0, u16 arg1, float arg8, float arg9, float argA) +{ + M433DllMapWork2 *var_r31 = lbl_1_bss_7B0->data; + var_r31->unk_188[arg0] = arg1; + var_r31->unk_14C[arg0] = arg8; + var_r31->unk_158[arg0] = arg9; + var_r31->unk_170[arg0] = argA; + var_r31->unk_164[arg0] = 90.0f; +} + +void fn_1_5068(void) +{ + s32 i; + for (i = 0; i < 0x20; i++) { + lbl_1_bss_728[i] = NULL; + } +} + +void *fn_1_50A8(s32 arg0) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (!lbl_1_bss_728[i]) { + break; + } + } + if (i == 0x20) { + return NULL; + } + lbl_1_bss_728[i] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM); + return lbl_1_bss_728[i]; +} + +void fn_1_5148(u32 sp8) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (lbl_1_bss_728[i] == (void *)sp8) { + break; + } + } + if (i != 0x20) { + HuMemDirectFree(lbl_1_bss_728[i]); + lbl_1_bss_728[i] = NULL; + } +} + +void fn_1_51DC(void) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (lbl_1_bss_728[i]) { + HuMemDirectFree(lbl_1_bss_728[i]); + lbl_1_bss_728[i] = NULL; + } + } +} + +u32 lbl_1_data_C4 = 0x41C64E6D; + +s32 fn_1_5260(void) +{ + lbl_1_data_C4 *= 0x41C64E6D; + lbl_1_data_C4 += 0x3039; + return lbl_1_data_C4 >> 0x10; +} + +float fn_1_52B4(float arg8, float arg9, float argA) +{ + float var_f31; + + if (arg8 > 180.0f) { + arg8 -= 360.0f; + } + else if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + if (arg9 > 180.0f) { + arg9 -= 360.0f; + } + else if (arg9 <= -180.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg8 = arg9 + (var_f31 * argA); + if (arg8 > 180.0f) { + return arg8 - 360.0f; + } + if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + return arg8; +} + +void fn_1_541C(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + + if (argA != 0.0f) { + MTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); + } + else { + MTXIdentity(arg0); + } + if (arg8 != 0.0f) { + MTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); + MTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + MTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); + MTXConcat(sp8, arg0, arg0); + } +} + +void fn_1_553C(Mtx arg0, Vec *arg1) +{ + float var_f29; + float var_f28; + + arg1->x = atan2d(arg0[1][2], arg0[2][2]); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } + arg1->z = atan2d(arg0[0][1], arg0[0][0]); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + var_f29 = -arg0[0][2]; + var_f28 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-(1.0 - (var_f29 * var_f29))) : (1.0 - (var_f29 * var_f29))); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod(180.0f + arg1->x, 360.0); + arg1->z = fmod(180.0f + arg1->z, 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(var_f29, var_f28); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } +} + +void fn_1_58D8(s32 arg0) +{ + M433DllMapWork *work = lbl_1_bss_7A8->data; + work->unk_04 = arg0; +} diff --git a/src/REL/m433Dll/player.c b/src/REL/m433Dll/player.c new file mode 100644 index 00000000..b6ef317c --- /dev/null +++ b/src/REL/m433Dll/player.c @@ -0,0 +1,3584 @@ +#include "datadir_enum.h" +#include "dolphin/mtx.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m433Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +typedef struct M433PlayerWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + u32 unk_10; + u32 unk_14; + u32 unk_18; + u32 unk_1C; + s32 unk_20; + float unk_24; + float unk_28; + s32 unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C; + s32 unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + char unk50[4]; + s32 unk_54; + s32 unk_58; + s32 unk_5C; + s32 unk_60; + s32 unk_64; + s32 unk_68; + s32 unk_6C; + s32 unk_70; + u32 unk_74; + u32 unk_78; + u32 unk_7C; + u32 unk_80; + u32 unk_84; + u32 unk_88; + s32 unk_8C; + u32 unk_90; + char unk94[4]; + float unk_98; + s16 unk_9C; + char unk9E[6]; + float unk_A4; + float unk_A8; + float unk_AC; + float unk_B0; + float unk_B4; + float unk_B8; + float unk_BC; + float unk_C0; + char unkC4[8]; + u32 unk_CC; + u32 unk_D0; + u32 unk_D4; + u32 unk_D8; + float unk_DC; + float unk_E0; + s32 unk_E4; + s32 unk_E8; + s32 unk_EC; + s32 unk_F0; + s32 unk_F4; + u32 unk_F8; + Vec unk_FC; + Vec unk_108; + Vec unk_114; + float unk_120; + float unk_124; + Vec unk_128; + Vec unk_134; + Vec unk_140; + omObjData *unk_14C; +} M433PlayerWork; /* size = 0x150 */ + +typedef struct M433PlayerWork2Sub { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + Vec unk_2C; + Vec unk_38; +} M433PlayerWork2Sub; /* size = 0x44 */ + +typedef struct M433PlayerWork2 { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + char unk14[4]; + u16 unk_18; + char unk1A[0x16]; + Vec unk_30; + Vec unk_3C; + float unk_48; + Vec unk_4C; + char unk58[0x14]; + u32 unk_6C; + s32 unk_70; + s32 unk_74; + u32 unk_78; + float unk_7C[2]; + float unk_84[2]; + s32 unk_8C; + u32 unk_90; + u32 unk_94; + s32 unk_98; + float unk_9C; + float unk_A0; + float unk_A4; + float unk_A8; + Vec unk_AC; + float unk_B8; + Vec unk_BC; + Mtx unk_C8; + M433PlayerWork2Sub unk_F8; +} M433PlayerWork2; /* size = 0x13C */ + +typedef struct M433PlayerWork3Sub { + s16 unk_00; + s16 unk_02[5]; +} M433PlayerWork3Sub; /* size = 0xC */ + +typedef struct M433PlayerWork3Sub2Sub { + s16 unk_00[2]; + float unk_04[2]; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; +} M433PlayerWork3Sub2Sub; /* size 0x2C */ + +typedef struct M433PlayerWork3Sub2Sub2 { + s32 unk_00[2]; + char unk08[8]; +} M433PlayerWork3Sub2Sub2; /* size 0x10 */ + +typedef struct M433PlayerWork3Sub2 { + s32 unk_00; + u32 unk_04; + u32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14[2]; + u32 unk_1C; + M433PlayerWork3Sub2Sub unk_20[4]; + M433PlayerWork3Sub2Sub2 unk_D0[3][0x14]; + M433PlayerWork3Sub2Sub2 unk_490; +} M433PlayerWork3Sub2; /* size = 0x4A0 */ + +typedef struct M433PlayerWork3 { + u32 uGameEvent; + s32 sWinGrp; + u32 uServeGrp; + u32 uPointGrp; + u32 auServeCel[2]; + u32 auEvents[2]; + u32 unk_20[2]; + u32 unk_28; + s32 unk_2C; + s32 unk_30; + u32 uContactCnt; + s32 sGroundGrp; + u32 uContactGrp; + u32 uContactCel; + u32 uTargetGrp; + u32 unk_48; + M433PlayerWork3Sub unk_4C[2]; + M433PlayerWork3Sub2 unk_64; +} M433PlayerWork3; /* size = 0x504 */ + +typedef struct M433DllPlayerData24CStruct { + /* 0x00 */ u16 unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ u32 unk_10; +} M433DllPlayerData24CStruct; /* size = 0x14 */ + +typedef struct M433DllPlayerData794Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; +} M433DllPlayerData794Struct; /* size = 0x0C */ + +void fn_1_10130(Vec *arg0, u32 arg1); +void fn_1_10260(float arg8, float arg9, u32 arg0, u32 arg1, Vec *arg2); +s32 fn_1_10614(Vec *arg0); +void fn_1_1070C(void); +u32 fn_1_10740(Vec *arg0); +u32 fn_1_107B0(Vec *arg0); +float fn_1_10848(void); +u32 fn_1_108C4(void); +u32 fn_1_10900(void); +float fn_1_10B20(float arg8, Vec *arg0); +s32 fn_1_10D24(Vec *arg0); +u32 fn_1_10EA4(void); +u32 fn_1_10ECC(u32 arg0); +s32 fn_1_10F00(u32 arg0); +u32 fn_1_10F38(u32 arg0); +s32 fn_1_10F6C(u32 arg0); +u32 fn_1_10FDC(void); +s32 fn_1_11004(u32 arg0, s32 arg1); +s32 fn_1_11060(u32 arg0); +float fn_1_11130(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_1_5B98(omObjData *object); +void fn_1_6070(omObjData *object); +void fn_1_60C0(omObjData *object); +void fn_1_682C(omObjData *object); +void fn_1_722C(omObjData *object); +void fn_1_74D4(omObjData *object); +void fn_1_8408(omObjData *object); +void fn_1_873C(omObjData *object); +s32 fn_1_8938(u32 arg0, Vec *arg1); +void fn_1_8BD0(omObjData *object); +void fn_1_8F80(omObjData *object); +void fn_1_9688(omObjData *object); +void fn_1_A618(omObjData *object); +void fn_1_AB88(omObjData *object); +void fn_1_B194(omObjData *object); +void fn_1_B4D4(omObjData *object, u32 arg1); +s32 fn_1_B6E0(omObjData *object); +s32 fn_1_B7AC(omObjData *object); +s32 fn_1_BAE0(omObjData *object, u32 arg1); +void fn_1_BD48(omObjData *object); +void fn_1_C240(omObjData *object); +void fn_1_C6AC(omObjData *object); +s32 fn_1_C6B0(omObjData *object); +void fn_1_CB98(omObjData *object); +void fn_1_CDB8(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8); +void fn_1_D180(M433PlayerWork2Sub *arg0); +void fn_1_D338(M433PlayerWork2Sub *arg0); +s32 fn_1_D4E0(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, float arg8); +void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_D888(Vec *arg0, float arg8); +void fn_1_DD70(Vec *arg0); +void fn_1_DE28(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_DF44(omObjData *object); +void fn_1_E11C(omObjData *object); +void fn_1_E5C0(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1); +void fn_1_ECFC(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1); +void fn_1_FE64(M433PlayerWork3Sub2 *arg0, s32 arg1, s32 arg2, u32 arg3); +void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3); + +s32 lbl_1_data_C8[6] = { 0, 1, 2, 3, 4, 5 }; +float lbl_1_data_E0[0xE] = { + 130.0f, + 130.0f, + 160.0f, + 130.0f, + 130.0f, + 160.0f, + 160.0f, + 180.0f, + 240.00002f, + 100.0f, + 130.0f, + 130.0f, + 120.00001f, + 130.0f, +}; +float lbl_1_data_118[0xE] = { + 50.0f, + 50.0f, + 50.0f, + 50.0f, + 50.0f, + 70.0f, + 50.0f, + 70.0f, + 110.0f, + 50.0f, + 50.0f, + 50.0f, + 50.0f, + 50.0f, +}; +s32 lbl_1_data_150[6][2] = { + { 0x3A, 0x3B }, + { 0x36, 0x38 }, + { 0x40, 0x42 }, + { 0x4B, 0x4D }, + { 0x46, 0x48 }, + { 0x3E, 0x3F }, +}; +s32 lbl_1_data_180[0x11] = { + DATA_MAKE_NUM(DATADIR_M433, 97), + DATA_MAKE_NUM(DATADIR_M433, 98), + DATA_MAKE_NUM(DATADIR_M433, 99), + DATA_MAKE_NUM(DATADIR_M433, 100), + DATA_MAKE_NUM(DATADIR_M433, 101), + DATA_MAKE_NUM(DATADIR_M433, 102), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +}; +u32 lbl_1_data_1C4[0x11] = { + 0, + 2, + 3, + DATA_MAKE_NUM(DATADIR_M433, 0x11), + DATA_MAKE_NUM(DATADIR_M433, 0x19), + DATA_MAKE_NUM(DATADIR_M433, 0x21), + DATA_MAKE_NUM(DATADIR_M433, 0x29), + DATA_MAKE_NUM(DATADIR_M433, 0x31), + DATA_MAKE_NUM(DATADIR_M433, 0x39), + DATA_MAKE_NUM(DATADIR_M433, 0x41), + DATA_MAKE_NUM(DATADIR_M433, 0x49), + DATA_MAKE_NUM(DATADIR_M433, 0x51), + DATA_MAKE_NUM(DATADIR_M433, 0x59), + 0x17, + 0x18, + 0x48, + 0x49, +}; +s32 lbl_1_data_208[0x11] = { + DATA_MAKE_NUM(DATADIR_M433, 0x67), + DATA_MAKE_NUM(DATADIR_M433, 0x6D), + DATA_MAKE_NUM(DATADIR_M433, 0x73), + DATA_MAKE_NUM(DATADIR_M433, 0x79), + DATA_MAKE_NUM(DATADIR_M433, 0x7F), + DATA_MAKE_NUM(DATADIR_M433, 0x85), + DATA_MAKE_NUM(DATADIR_M433, 0x8B), + DATA_MAKE_NUM(DATADIR_M433, 0x91), + DATA_MAKE_NUM(DATADIR_M433, 0x97), + DATA_MAKE_NUM(DATADIR_M433, 0x9D), + DATA_MAKE_NUM(DATADIR_M433, 0xA3), + DATA_MAKE_NUM(DATADIR_M433, 0xA9), + DATA_MAKE_NUM(DATADIR_M433, 0xAF), + DATA_MAKE_NUM(DATADIR_M433, 0xB5), + DATA_MAKE_NUM(DATADIR_M433, 0xC1), + DATA_MAKE_NUM(DATADIR_M433, 0xBB), + DATA_MAKE_NUM(DATADIR_M433, 0xC7), +}; +M433DllPlayerData24CStruct lbl_1_data_24C[0x15] = { + { 0, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 1, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 2, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 3, 0.15f, 0.0f, 0.0f, 0 }, + { 3, 0.02f, 0.0f, -1.0f, 0 }, + { 4, 0.02f, 0.2f, -1.0f, 0 }, + { 5, 0.05f, 0.25f, -1.0f, 0 }, + { 6, 0.1f, 0.0f, -1.0f, 0 }, + { 7, 0.02f, 0.0f, -1.0f, 0 }, + { 0xB, 0.02f, 0.4f, -1.0f, 0 }, + { 0xC, 0.02f, 0.36666667f, -1.0f, 0 }, + { 8, 0.01f, 0.2f, -1.0f, 0 }, + { 9, 0.02f, 0.0f, -1.0f, 0 }, + { 0xA, 0.02f, 0.0f, -1.0f, 0 }, + { 5, 0.08f, 0.0f, 0.25f, 0 }, + { 0xB, 0.2f, 0.0f, 0.4f, 0 }, + { 0xC, 0.08f, 0.0f, 0.3f, 0 }, + { 0xD, 0.2f, 0.0f, -1.0f, 0 }, + { 0xE, 0.2f, 0.0f, -1.0f, 0 }, + { 0xF, 0.2f, 0.0f, -1.0f, 0 }, + { 0x10, 0.2f, 0.0f, -1.0f, 0 }, +}; +u32 lbl_1_data_3F0[0xE] = { + 0x32, + 0x32, + 0x3C, + 0x32, + 0x32, + 0x5A, + 0x32, + 0x3C, + 0x64, + 0x1E, + 0x32, + 0x1E, + 0x28, + 0x32, +}; + +// M433PlayerWork +omObjData *lbl_1_bss_7D0[5]; +// M433PlayerWork2 +omObjData *lbl_1_bss_7CC; +// M433PlayerWork3 +omObjData *lbl_1_bss_7C8; +u32 lbl_1_bss_7B8[4]; + +void fn_1_5904(Process *process) +{ + u32 sp18[4]; + s32 sp8[4]; + + s16 var_r31; + s16 var_r30; + u32 var_r28; + omObjData *var_r27; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp18[var_r31] = GWPlayerCfg[var_r31].group; + sp8[var_r31] = var_r31; + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) { + if (sp18[var_r31] > sp18[var_r30]) { + var_r28 = sp18[var_r31]; + sp18[var_r31] = sp18[var_r30]; + sp18[var_r30] = var_r28; + var_r28 = sp8[var_r31]; + sp8[var_r31] = sp8[var_r30]; + sp8[var_r30] = var_r28; + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_7B8[sp8[var_r31]] = var_r31; + } + lbl_1_bss_7C8 = omAddObjEx(process, 0x14, 0, 0, 0, fn_1_DF44); + lbl_1_bss_7CC = omAddObjEx(process, 0x15, 0x1F, 0, 0, fn_1_BD48); + omMakeGroupEx(process, 0, 4); + omGetGroupMemberListEx(process, 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r27 = lbl_1_bss_7D0[var_r31] = omAddObjEx(process, 0x28, 2, 0x11, 0, fn_1_5B98); + var_r27->work[0] = var_r31; + } +} + +void fn_1_5B74(void) +{ + CharModelKill(-1); +} + +void fn_1_5B98(omObjData *object) +{ + s32 sp8; + M433PlayerWork *work; + s16 var_r29; + u32 var_r28; + s32 var_r27; + + float spC[4] = { 0.25f, 0.5f, 0.75f, 1.0f }; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433PlayerWork)); + var_r27 = object->work[0]; + var_r28 = GWPlayerCfg[var_r27].character; + work->unk_00 = var_r28; + work->unk_04 = -1; + if (var_r28 >= 8) { + work->unk_04 = var_r28 - 8; + } + sp8 = work->unk_08 = 0; + work->unk_14 = (lbl_1_bss_7B8[object->work[0]] >> 1) & 1; + work->unk_18 = lbl_1_bss_7B8[object->work[0]] & 1; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != object->work[0]) && (work->unk_14 == ((lbl_1_bss_7B8[var_r29] >> 1) & 1))) { + break; + } + } + work->unk_14C = lbl_1_bss_7D0[var_r29]; + work->unk_C0 = spC[GWPlayerCfg[var_r27].diff & 3]; + work->unk_2C = GWPlayerCfg[object->work[0]].iscom; + if (work->unk_04 < 0) { + object->model[0] = CharModelCreate(var_r28, 4); + CharModelStepTypeSet(var_r28, 2); + } + else { + object->model[0] = Hu3DModelCreateFile(lbl_1_data_180[work->unk_04]); + } + Hu3DModelShadowSet(object->model[0]); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 8)); + Hu3DModelLayerSet(object->model[1], 1); + for (var_r29 = 0; var_r29 < 0x11; var_r29++) { + if (work->unk_04 < 0) { + if (lbl_1_data_1C4[var_r29] < 0x10000) { + object->motion[var_r29] = CharModelMotionCreate(var_r28, lbl_1_data_1C4[var_r29]); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r28 + lbl_1_data_1C4[var_r29]); + } + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], work->unk_04 + lbl_1_data_208[var_r29]); + } + } + if (work->unk_04 < 0) { + CharModelVoiceEnableSet(var_r28, object->motion[16], 0); + CharModelMotionDataClose(var_r28); + } + else { + CharModelEffectNpcInitSilent(object->model[0], object->motion[1], 0); + CharModelEffectNpcInitSilent(object->model[0], object->motion[2], 1); + } + object->trans.x = work->unk_128.x = (0.4f * (700.0f * (object->work[0] + 1))) - 700.0f; + object->trans.y = work->unk_128.y = 0.0f; + object->trans.z = work->unk_128.z = 0.0f; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_A4 = work->unk_A8 = 0.0f; + work->unk_AC = 0.0f; + work->unk_B0 = 0.02f; + work->unk_120 = lbl_1_data_118[var_r28]; + work->unk_0C = -1; + work->unk_70 = -1; + fn_1_B4D4(object, 0); + work->unk_74 = 0; + object->func = fn_1_6070; +} + +void fn_1_6070(omObjData *object) +{ + M433PlayerWork *work = object->data; + fn_1_722C(object); + work->unk_74 = 0; + object->func = fn_1_60C0; +} + +void fn_1_60C0(omObjData *object) +{ + Vec spC; + float var_f31; + float var_f30; + + M433PlayerWork *work = object->data; + s32 var_r29 = 0; + M433PlayerWork *var_r28 = work->unk_14C->data; + work->unk_1C = 0; + work->unk_20 = 0; + work->unk_28 = 0.0f; + work->unk_24 = 0.0f; + if ((work->unk_30 == 0) && (work->unk_70 != fn_1_10ECC(work->unk_14))) { + work->unk_70 = fn_1_10ECC(work->unk_14); + switch (fn_1_10ECC(work->unk_14)) { + case 0: + work->unk_6C = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_74 = 0; + work->unk_38 = 0; + work->unk_3C = work->unk_40 = 0; + work->unk_128.y = 0.0f; + if (work->unk_18 == fn_1_10F38(work->unk_14)) { + if (fn_1_10F00(work->unk_14) != 0) { + work->unk_128.z = 0.0f; + work->unk_128.x = 840.00006f; + work->unk_74 = 1; + work->unk_38 = 1; + } + else { + work->unk_128.z = 140.0f; + work->unk_128.x = 540.2f; + } + } + else { + work->unk_128.z = -140.0f; + work->unk_128.x = 385.1f; + } + work->unk_A4 = work->unk_A8 = -90.0f; + work->unk_AC = 1.0f; + work->unk_B0 = 1.0f; + if (work->unk_14 == 0) { + work->unk_128.x *= -1.0f; + work->unk_A4 = work->unk_A8 = 90.0f; + } + work->unk_0C = -1; + work->unk_34 = 1; + work->unk_88 = work->unk_8C = 0; + work->unk_7C = work->unk_78 = work->unk_80 = 0; + break; + case 1: + case 2: + if (work->unk_74 == 1) { + work->unk_34 = 0; + }; + break; + case 3: + work->unk_74 = 2; + work->unk_7C = work->unk_78 = work->unk_80 = 0; + work->unk_34 = 0; + break; + case 4: + case 5: + work->unk_74 = 3; + break; + case 6: + case 7: + if (fn_1_10F6C(work->unk_14) != 0) { + fn_1_B4D4(object, 0x13); + if (work->unk_04 >= 0) { + HuAudFXPlay(lbl_1_data_150[work->unk_04][0]); + } + VECSubtract(&var_r28->unk_128, &work->unk_128, &spC); + work->unk_A8 = atan2d(spC.x, spC.z); + work->unk_AC = 0.15f; + work->unk_B0 = 0.0f; + } + else { + fn_1_B4D4(object, 0x14); + } + work->unk_74 = 4; + break; + default: + break; + } + } + if (fn_1_216C() == 2) { + if (work->unk_2C != 0) { + fn_1_74D4(object); + } + else { + work->unk_20 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_1C = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; + var_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_28 = atan2d(var_f31, var_f30); + work->unk_24 = 0.013888889f * sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (work->unk_24 > 1.0f) { + work->unk_24 = 1.0f; + } + } + } + switch (work->unk_74) { + case 0: + fn_1_B4D4(object, 0); + var_r29 = 1; + break; + case 1: + fn_1_8F80(object); + break; + case 2: + fn_1_8BD0(object); + fn_1_AB88(object); + fn_1_9688(object); + break; + case 3: + fn_1_8BD0(object); + fn_1_A618(object); + fn_1_9688(object); + break; + case 4: + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_30 = 0; + if (fn_1_B6E0(object) != 0) { + work->unk_30 = 0; + work->unk_74 = 0; + } + break; + } + VECAdd(&work->unk_128, &work->unk_134, &work->unk_128); + if (fn_1_10ECC(work->unk_14) >= 2) { + fn_1_B194(object); + } + fn_1_722C(object); + if ((fn_1_216C() == 3) && (var_r29 != 0)) { + work->unk_74 = 0; + object->func = fn_1_682C; + } +} + +void fn_1_682C(omObjData *object) +{ + Vec sp1C; + Vec sp10; + float sp8[2]; + float var_f31; + M433PlayerWork *var_r30; + M433PlayerWork *var_r29; + M433PlayerWork *var_r27; + Vec *var_r26; + s32 var_r25; + M433PlayerWork *var_r24; + s32 var_r23; + + M433PlayerWork *work = object->data; + { + Vec sp40[2] = { { 130.0f, 0.0f, -50.0f }, { 250.0f, 0.0f, 50.0f } }; + Vec sp28[2] = { { 150.0f, 0.0f, 100.0f }, { 300.0f, 0.0f, -100.0f } }; + var_r27 = work->unk_14C->data; + VECAdd(&work->unk_128, &work->unk_134, &work->unk_128); + fn_1_B194(object); + fn_1_722C(object); + switch (work->unk_74) { + case 0: + fn_1_B4D4(object, 0); + if (fn_1_2244() != 0) { + if (work->unk_18 == 0) { + var_r23 = 1; + if (work->unk_14 == 0) { + sp40[0].x *= -1.0f; + sp40[1].x *= -1.0f; + sp28[0].x *= -1.0f; + sp28[1].x *= -1.0f; + } + var_r30 = work; + var_r29 = var_r27; + var_r26 = sp40; + work->unk_84 = var_r27->unk_84 = 0; + if (lbl_1_data_3F0[var_r30->unk_00] != lbl_1_data_3F0[var_r29->unk_00]) { + if (lbl_1_data_3F0[var_r30->unk_00] < lbl_1_data_3F0[var_r29->unk_00]) { + var_r24 = var_r30; + var_r30 = var_r29; + var_r29 = var_r24; + } + var_f31 = fn_1_11130(&var_r30->unk_128, &sp40[0], &var_r29->unk_128, &sp40[1]); + sp8[0] = 0.8f * (var_r30->unk_120 + var_r29->unk_120); + if (var_f31 < sp8[0]) { + var_r26 = sp28; + work->unk_84 = var_r27->unk_84 = 1; + OSReport("Escape!\n"); + } + else { + var_r23 = 0; + OSReport("Direct!\n"); + } + } + if (var_r23 != 0) { + var_r30 = work; + var_r29 = var_r27; + for (var_r25 = 0; var_r25 < 2; var_r25++) { + sp8[var_r25] = fn_1_11130(&var_r30->unk_128, &var_r26[var_r25 & 1], &var_r29->unk_128, &var_r26[(var_r25 + 1) & 1]); + } + if (sp8[0] < sp8[1]) { + var_r24 = var_r30; + var_r30 = var_r29; + var_r29 = var_r24; + } + } + var_r30->unk_140 = var_r26[0]; + var_r30->unk_140.z -= var_r30->unk_120; + var_r29->unk_140 = var_r26[1]; + } + work->unk_30 = work->unk_60 = work->unk_34 = 0; + if (work->unk_84 != 0) { + work->unk_74++; + } + else { + work->unk_74 += 2; + } + work->unk_88 = 0; + break; + } + break; + case 1: + if (work->unk_84 == 1) { + VECSubtract(&work->unk_140, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + if (var_f31 < 20.0f) { + var_f31 = 0.01f; + work->unk_84++; + } + else { + if (VECMag(&sp10) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + } + work->unk_28 = 180.0 * (atan2(sp10.x, sp10.z) / 3.141592653589793); + work->unk_24 = var_f31; + fn_1_8BD0(object); + } + else if (work->unk_84 == 2) { + fn_1_BAE0(object, 0); + if ((work->unk_18 == 0) && (var_r27->unk_84 != 0)) { + if (work->unk_14 == 0) { + sp40[0].x *= -1.0f; + sp40[1].x *= -1.0f; + } + var_r30 = work; + var_r29 = var_r27; + if (lbl_1_data_3F0[var_r30->unk_00] < lbl_1_data_3F0[var_r29->unk_00]) { + var_r24 = var_r30; + var_r30 = var_r29; + var_r29 = var_r24; + } + var_r30->unk_140 = sp40[0]; + var_r30->unk_140.z -= var_r30->unk_120; + var_r29->unk_140 = sp40[1]; + work->unk_84 = var_r27->unk_84 = 3; + } + } + if (work->unk_84 == 3) { + work->unk_74++; + work->unk_88 = 0; + return; + } + break; + case 2: + VECSubtract(&work->unk_140, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + if (var_f31 < 10.0f) { + var_f31 = 0.01f; + } + else { + if (VECMag(&sp10) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31; + fn_1_8BD0(object); + if ((work->unk_24 < 0.02f) || (work->unk_88 > 300.0f)) { + work->unk_A8 = 0.0f; + work->unk_AC = 0.15f; + work->unk_B0 = 0.0f; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_21E4(object->work[0]); + work->unk_74++; + return; + } + break; + case 3: + if (fn_1_2184() == 1) { + if (fn_1_10FA4(work->unk_14) != 0) { + fn_1_B4D4(object, 0x11); + if (work->unk_04 >= 0) { + HuAudFXPlay(lbl_1_data_150[work->unk_04][0]); + } + } + else { + fn_1_B4D4(object, 0x12); + if (work->unk_04 >= 0) { + HuAudFXPlay(lbl_1_data_150[work->unk_04][1]); + } + } + work->unk_74++; + return; + } + fn_1_BAE0(object, 0); + return; + case 4: + if (fn_1_10FA4(work->unk_14) != 0) { + sp1C.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + sp1C.y = Center.y + (CZoom * -sind(CRot.x)); + sp1C.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); + VECSubtract(&sp1C, &work->unk_128, &sp10); + work->unk_A8 = atan2d(sp10.x, sp10.z); + } + if (fn_1_B6E0(object) != 0) { + fn_1_2214(object->work[0]); + work->unk_74++; + } + break; + } + } +} + +char *lbl_1_data_450[6] = { + "itemhook_R", + "itemhook_r", + "itemhook_R", + "itemhook_R", + "itemhook_r", + "itemhook_r", +}; +s32 lbl_1_data_468[9] = { 0, 0, 1, 1, 1, 1, 1, 0, 1 }; +float lbl_1_data_48C[0x12] = { + 0.0f, + 0.6666667f, + 2.1666667f, + 2.0f, + 1.0f, + 7.0000005f, + 1.5000001f, + 1.5000001f, + 3.0000002f, + 0.0f, + 0.0f, + 1e-45f, + 0.0f, + 0.0f, + 1e-45f, + 0.0f, + 0.0f, + 1e-45f, +}; +Vec lbl_1_data_4D4[9] = { + { 0.0f, 0.0f, 1.0f }, + { 0.0f, 1.5f, 1.0f }, + { 236.5f, 0.0f, 1300.0f }, + { 0.0f, 1.5f, 1.0f }, + { 0.0f, 1.8f, 1.0f }, + { 231.0f, 0.0f, 1500.0f }, + { 231.0f, 0.0f, 1000.0f }, + { 0.0f, 1.2f, 1.0f }, + { 0.0f, 0.8f, 1.0f }, +}; +float lbl_1_data_540[9] = { 1.0f, 1.0f, 3.0f, 1.0f, 1.0f, 4.0f, 2.0f, 1.0f, 1.0f }; + +void fn_1_722C(omObjData *object) +{ + Vec sp8; + + M433PlayerWork *work = object->data; + work->unk_9C++; + work->unk_88++; + object->trans.x = work->unk_128.x; + object->trans.y = work->unk_128.y; + object->trans.z = work->unk_128.z; + work->unk_AC = work->unk_AC + work->unk_B0; + if (work->unk_AC > 0.45f) { + work->unk_AC = 0.45f; + } + work->unk_A4 = fn_1_26C4(work->unk_A4, work->unk_A8, work->unk_AC); + object->rot.y = work->unk_A4; + Hu3DModelPosSet(object->model[1], work->unk_128.x, 11.0f, work->unk_128.z); + work->unk_BC += 3.0000002f; + if (work->unk_BC >= 360.0f) { + work->unk_BC -= 360.0f; + } + Hu3DModelRotSet(object->model[1], 0.0f, work->unk_BC, 0.0f); + work->unk_B8 = 0.0f; + if (fn_1_216C() == 2) { + if (((fn_1_10EA4() == 4) || (fn_1_10EA4() == 3)) && (work->unk_14 == fn_1_10740(&sp8)) && (fn_1_10FDC() != 0) && (fn_1_10FDC() < 3) + && (work->unk_60 == 0) && (fn_1_11004(work->unk_14, work->unk_18) != 0)) { + work->unk_B8 = 1.0f; + } + if (work->unk_74 == 1) { + work->unk_B8 = 1.0f; + } + } + work->unk_B4 += 0.1f * (work->unk_B8 - work->unk_B4); + Hu3DModelScaleSet(object->model[1], work->unk_B4, 1.0f, work->unk_B4); + if ((work->unk_B8 <= 0.0f) && (work->unk_B4 < 0.1f)) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + work->unk_B4 = 0.0f; + return; + } + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); +} + +void fn_1_74D4(omObjData *object) +{ + Vec sp1C; + Vec sp10; + M433PlayerWork *spC; + float var_f31; + + M433PlayerWork *work = object->data; + s32 var_r29 = 1; + s32 sp8 = 0; + spC = work->unk_14C->data; + switch (work->unk_74) { + case 0: + work->unk_6C = 0; + fn_1_873C(object); + break; + case 1: + if (work->unk_3C != 0) { + work->unk_1C = work->unk_1C | 0x100; + work->unk_DC = frandmod(0x168); + work->unk_E0 = 0.3f + (0.00040000002f * (work->unk_C0 * frandmod(0x3E8))); + work->unk_E4 = 0; + if (frandmod(0x3E8) > (300.0f + (500.0f * work->unk_C0))) { + work->unk_E4 = 1; + } + } + if (fn_1_10614(&sp1C) != 0) { + if (work->unk_E4 != 0) { + if ((fabs(sp1C.z) > 1.100000023841858) || (sp1C.x > 1.1f)) { + work->unk_E0 = 0.0f; + } + } + else { + if ((fabs(sp1C.z) > 0.949999988079071) || (sp1C.x > 0.95f)) { + work->unk_E0 = 0.0f; + } + } + } + work->unk_28 = work->unk_DC; + work->unk_24 = work->unk_E0; + if (work->unk_40 != 0) { + if (work->unk_D0++ >= work->unk_CC) { + work->unk_1C = work->unk_1C | 0x100; + } + } + else if (work->unk_60 != 0) { + work->unk_CC = ((60.0f * (0.35f * work->unk_C0)) / 1000.0f) * frandmod(0x3E8); + work->unk_D0 = 0; + } + fn_1_873C(object); + break; + case 2: + work->unk_F0 = 0; + if (frandmod(0x3E8) < (300.0f * work->unk_C0)) { + work->unk_F0 = 1; + } + fn_1_8408(object); + if (work->unk_F4 != 0) { + if (fn_1_10EA4() == 2) { + work->unk_F4 = 0; + work->unk_F8 = 0; + } + if (work->unk_14 == fn_1_107B0(&sp1C)) { + work->unk_D8++; + } + if ((work->unk_14 == fn_1_107B0(&sp1C)) && (work->unk_F8 == 0)) { + fn_1_10B20(0.9f, &work->unk_108); + work->unk_108.x = 115.0f; + if (work->unk_14 == 0) { + work->unk_108.x *= -1.0f; + } + work->unk_F8++; + } + if (work->unk_F8 == 1) { + if ((work->unk_D8 >= (0.5f * work->unk_D4)) && (fn_1_10D24(&work->unk_108) != 0)) { + work->unk_108.x = 115.0f; + if (work->unk_14 == 0) { + work->unk_108.x *= -1.0f; + } + work->unk_F8++; + } + } + else if ((work->unk_F8 == 2) && ((work->unk_D8 >= work->unk_D4) || (work->unk_14 == fn_1_10740(&sp1C)))) { + work->unk_1C = work->unk_1C | 0x200; + work->unk_F4 = 0; + work->unk_F8 = 0; + } + } + if ((work->unk_14 == fn_1_107B0(&sp1C)) && (fn_1_10900() >= (60.0f * (0.8f - (0.4f * work->unk_C0)))) && (work->unk_6C != 0)) { + VECSubtract(&sp1C, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + if (VECMag(&sp10) >= 20.0f) { + if (var_f31 >= 50.0f) { + var_f31 = 50.0f; + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31 / 50.0f; + } + if ((fn_1_10848() < (0.8f - (0.6f * work->unk_C0))) && ((work->unk_44 != 0) || ((work->unk_48 != 0) && (work->unk_EC != 0)))) { + work->unk_1C = work->unk_1C | 0x100; + } + var_r29 = 0; + } + if (work->unk_F8 != 0) { + VECSubtract(&work->unk_108, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + if (var_f31 >= 10.0f) { + if (var_f31 >= 50.0f) { + var_f31 = 50.0f; + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31 / 50.0f; + } + else { + work->unk_28 = 90.0f; + if (work->unk_14 != 0) { + work->unk_28 *= -1.0f; + } + work->unk_24 = 0.01f; + } + var_r29 = 0; + } + if (var_r29 != 0) { + VECSubtract(&work->unk_FC, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + var_f31 -= 100.0f * (1.25f * (2.0f - work->unk_C0)); + if (var_f31 >= 10.0f) { + if (var_f31 >= 70.0f) { + var_f31 = 70.0f; + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31 / 70.0f; + break; + } + work->unk_28 = 90.0f; + if (work->unk_14 != 0) { + work->unk_28 *= -1.0f; + break; + } + } + break; + case 3: + fn_1_8408(object); + fn_1_873C(object); + if (work->unk_14 == fn_1_10740(&sp1C)) { + if (work->unk_68 == 0) { + if (fn_1_11004(work->unk_14, work->unk_18) != 0) { + VECSubtract(&sp1C, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + if (var_f31 >= 30.000002f) { + if (var_f31 >= 70.0f) { + var_f31 = 70.0f; + } + work->unk_24 = var_f31 / 70.0f; + work->unk_28 = atan2d(sp10.x, sp10.z); + } + } + if ((((work->unk_6C == 0) && (fn_1_10EA4() == 3) && (work->unk_F0 != 0)) || ((work->unk_6C != 0) && (fn_1_10EA4() == 4))) + && (work->unk_5C != 0)) { + work->unk_1C = work->unk_1C | 0x200; + work->unk_E8 = 0; + if (frandmod(0x3E8) < (s32)(300.0f * (work->unk_C0 - 0.4f))) { + work->unk_E8 = fn_1_8938(work->unk_14, &work->unk_114); + work->unk_DC = 0.0f; + work->unk_E0 = 0.0f; + work->unk_E4 = 0; + } + if (work->unk_E8 == 0) { + work->unk_DC = frandmod(0x168); + work->unk_E0 = 0.3f + (0.00040000002f * (work->unk_C0 * frandmod(0x3E8))); + work->unk_E4 = 0; + if (frandmod(0x3E8) > (300.0f + (500.0f * work->unk_C0))) { + work->unk_E4 = 1; + } + } + } + if ((work->unk_4C != 0) || (work->unk_44 != 0) || (work->unk_48 != 0)) { + work->unk_1C = work->unk_1C | 0x100; + break; + } + } + else { + if (fn_1_10614(&sp1C) != 0) { + if (work->unk_E8 != 0) { + VECSubtract(&work->unk_114, &sp1C, &sp10); + sp10.y = 0.0f; + var_f31 = VECMag(&sp10); + if (var_f31 < 0.05f) { + work->unk_DC = 0.0f; + work->unk_E0 = 0.0f; + } + else { + if (work->unk_14 != 0) { + sp10.x *= -1.0f; + } + work->unk_DC = atan2d(sp10.x, sp10.z); + work->unk_E0 = 1.0f; + } + } + if (work->unk_E4 != 0) { + if ((fabs(sp1C.z) > 1.100000023841858) || (sp1C.x > 1.1f)) { + work->unk_E0 = 0.0f; + } + } + else { + if ((fabs(sp1C.z) > 0.949999988079071) || (sp1C.x > 0.95f)) { + work->unk_E0 = 0.0f; + } + } + } + work->unk_28 = work->unk_DC; + work->unk_24 = work->unk_E0; + if (work->unk_54 != 0) { + if (work->unk_D0++ >= work->unk_CC) { + work->unk_1C |= 0x100; + break; + } + } + else { + work->unk_CC = ((60.0f * (0.35f * work->unk_C0)) / 1000.0f) * frandmod(0x3E8); + work->unk_D0 = 0; + } + } + } + break; + } +} + +void fn_1_8408(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + M433PlayerWork *work = object->data; + M433PlayerWork *var_r30 = work->unk_14C->data; + + if (var_r30->unk_2C == 0) { + var_r30->unk_C0 = work->unk_C0 - 0.1f; + } + if ((work->unk_14 == fn_1_107B0(&sp14)) && (fn_1_108C4() >= 12.0f)) { + if (((var_r30->unk_6C == 0) && (work->unk_6C == 0)) || (fn_1_108C4() < 0x3E8)) { + if ((work->unk_30 == 0) || (var_r30->unk_30 == 0)) { + VECSubtract(&sp14, &work->unk_128, &sp8); + sp8.y = 0.0f; + var_f31 = VECMag(&sp8) - (100.0f * (2.0f * work->unk_C0)); + VECSubtract(&sp14, &var_r30->unk_128, &sp8); + sp8.y = 0.0f; + var_f30 = VECMag(&sp8) - (100.0f * (2.0f * var_r30->unk_C0)); + if ((work->unk_30 != 0) || (work->unk_60 != 0)) { + var_f31 = 2000.0f; + } + if ((var_r30->unk_30 != 0) || (var_r30->unk_60 != 0)) { + var_f30 = 2000.0f; + } + if (var_f31 >= 300.0f) { + var_r30->unk_F4 = 0; + } + if (var_f30 >= 300.0f) { + work->unk_F4 = 0; + } + if (work->unk_F4 != 0) { + var_f31 += 300.0f; + } + if (var_r30->unk_F4 != 0) { + var_f30 += 300.0f; + } + var_r30->unk_6C = work->unk_6C = 0; + if (var_f31 <= var_f30) { + work->unk_6C = 1; + work->unk_F4 = 0; + } + else { + var_r30->unk_6C = 1; + var_r30->unk_F4 = 0; + } + if (work->unk_F4 == 0) { + work->unk_F8 = 0; + } + if (var_r30->unk_F4 == 0) { + var_r30->unk_F8 = 0; + } + } + } + else if (fn_1_10FDC() == 1) { + work->unk_6C = fn_1_11004(work->unk_14, work->unk_18) == 0; + var_r30->unk_6C = work->unk_6C == 0; + } + } + else if (work->unk_14 != fn_1_10740(&sp14)) { + var_r30->unk_6C = work->unk_6C = 0; + } +} + +void fn_1_873C(omObjData *object) +{ + M433PlayerWork *work = object->data; + work->unk_EC = 0; + if (frandmod(0x3E8) < (600.0f * work->unk_C0)) { + work->unk_EC = 1; + } + work->unk_F4 = 0; + work->unk_F8 = 0; + if ((work->unk_18 != fn_1_10F38(work->unk_14)) && (work->unk_74 != 0) && (frandmod(0x3E8) < (500.0f * work->unk_C0))) { + work->unk_F4 = 1; + work->unk_D4 = ((60.0f * (0.5f * work->unk_C0)) / 1000.0f) * frandmod(0x3E8); + work->unk_D8 = 0; + } + if (work->unk_18 == fn_1_10F38(work->unk_14)) { + work->unk_FC.z = 140.0f; + work->unk_FC.x = 540.2f; + } + else { + work->unk_FC.z = -140.0f; + work->unk_FC.x = 300.5f; + } + if (work->unk_14 == 0) { + work->unk_FC.x *= -1.0f; + } +} + +s32 fn_1_8938(u32 var_r27, Vec *var_r29) +{ + Vec sp2C[2]; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + u32 var_r31; + u32 var_r30; + + for (var_r31 = 0, var_r30 = 0; (var_r30 < 4) && (var_r31 < 2); var_r30++) { + M433PlayerWork *work = lbl_1_bss_7D0[var_r30]->data; + if (work->unk_14 != var_r27) { + sp2C[var_r31] = work->unk_128; + sp2C[var_r31].y = 0.0f; + var_r31++; + } + } + if (var_r31 < 2) { + return 0; + } + if (var_r27 == 1) { + sp2C[0].x *= -1.0f; + sp2C[1].x *= -1.0f; + } + var_f29 = 47.0f; + var_f28 = 70.0f; + var_f30 = -1.0f; + sp14.z = -350.0f; + sp14.y = 0.0f; + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + sp14.x = 230.0f; + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + VECSubtract(&sp14, &sp2C[0], &sp20); + var_f31 = VECMag(&sp20); + VECSubtract(&sp14, &sp2C[1], &sp20); + var_f31 *= VECMag(&sp20); + if (var_f31 > var_f30) { + var_f30 = var_f31; + sp8 = sp14; + } + sp14.x += var_f29; + } + sp14.z += var_f28; + } + *var_r29 = sp8; + var_r29->x -= 465.0f; + var_r29->x *= 0.004255319f; + var_r29->z *= 0.0028571428f; + return 1; +} + +void fn_1_8BD0(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + M433PlayerWork *work = object->data; + s32 var_r29 = 1; + if ((work->unk_30 == 0) && (work->unk_60 == 0)) { + if ((work->unk_24 > 0.0f) && (work->unk_34 == 0)) { + work->unk_A8 = work->unk_28; + } + if ((work->unk_24 > 0.05f) && (work->unk_34 == 0)) { + work->unk_134.x = 0.01666666753590107 * (550.0 * (work->unk_24 * sind(work->unk_28))); + work->unk_134.z = 0.01666666753590107 * (550.0 * (work->unk_24 * cosd(work->unk_28))); + if (work->unk_2C != 0) { + work->unk_AC = 0.1f; + } + else { + work->unk_AC = 0.2f; + } + work->unk_B0 = 0.0f; + if (fn_1_B7AC(object) != 0) { + var_f30 = 0.5f; + if (work->unk_0C == 2) { + var_f30 = 0.45f; + } + if (work->unk_24 > var_f30) { + fn_1_B4D4(object, 2); + var_f31 = work->unk_24; + } + else { + fn_1_B4D4(object, 1); + var_f31 = work->unk_24 / var_f30; + } + if (work->unk_04 < 0) { + CharModelMotionSpeedSet(work->unk_00, var_f31); + } + else { + Hu3DMotionSpeedSet(object->model[0], var_f31); + } + } + if ((work->unk_24 > 0.5f) && (((work->unk_88 + 0xF) & 0xF) == 0)) { + fn_1_D888(&work->unk_128, 0.2f); + } + } + else { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + if ((work->unk_5C != 0) && (fn_1_10FDC() >= 2)) { + fn_1_B4D4(object, 0x10); + } + else if (work->unk_4C != 0) { + fn_1_B4D4(object, 0xF); + } + else if (work->unk_44 != 0) { + fn_1_B4D4(object, 0xE); + } + else { + fn_1_BAE0(object, 0); + } + if ((var_r29 != 0) && (work->unk_24 == 0.0f)) { + fn_1_10B20(0.0f, &sp14); + VECSubtract(&sp14, &work->unk_128, &sp8); + work->unk_A8 = atan2d(sp8.x, sp8.z); + work->unk_AC = 0.1f; + work->unk_B0 = 0.0f; + } + } + } +} + +void fn_1_8F80(omObjData *object) +{ + Vec sp1C; + Vec sp10; + float var_f31; + float var_f30; + + M433PlayerWork *work = object->data; + s32 var_r29 = work->unk_40; + { + s32 sp8[2] = { 0x6A4, 0x6A5 }; + work->unk_3C = 0; + work->unk_40 = 0; + if (work->unk_04 < 0) { + char *var_r28 = CharModelHookNameGet(work->unk_00, 4, 0); + Hu3DModelObjPosGet(object->model[0], var_r28, &sp10); + } + else { + Hu3DModelObjPosGet(object->model[0], lbl_1_data_450[work->unk_04], &sp10); + } + switch (work->unk_8C) { + case 0: + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_8C++; + work->unk_88 = 0; + + case 1: + work->unk_30 = 0; + work->unk_38 = 1; + fn_1_B4D4(object, 3); + fn_1_FE8C(&sp10, 0, work->unk_14, work->unk_18); + if (fn_1_10ECC(work->unk_14) != 1) { + work->unk_88 = 0; + break; + } + if (work->unk_34 == 0) { + work->unk_3C = 1; + if ((work->unk_1C & 0x100) || (work->unk_88 > 300.0f)) { + fn_1_B4D4(object, 4); + work->unk_30 = 1; + work->unk_8C++; + work->unk_88 = 0; + } + } + break; + case 2: + if (work->unk_60 == 0) { + work->unk_134.x = 1.6666667461395264 * (2.0 * sind((10.0f + (4.285714f * work->unk_88)))); + if (work->unk_14 != 0) { + work->unk_134.x *= -1.0f; + } + } + if ((work->unk_88 >= 9.0f) && (work->unk_38 != 0)) { + if (work->unk_14 != 0) { + var_f30 = -1.0f; + } + else { + var_f30 = 1.0f; + } + sp1C.x = object->trans.x + (250.0f * var_f30); + sp1C.y = 80.0f + object->trans.y; + sp1C.z = sp10.z; + fn_1_FE8C(&sp1C, 1, work->unk_14, work->unk_18); + work->unk_38 = 0; + } + else if (work->unk_88 >= 28.0f) { + var_f31 = 0.5f; + work->unk_124 = (2.0f * -(350.0f - lbl_1_data_E0[work->unk_00])) / (var_f31 * var_f31); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f31); + work->unk_60 = 1; + work->unk_8C++; + work->unk_88 = 0; + fn_1_D888(&work->unk_128, 0.5f); + } + if (work->unk_38 == 0) { + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, 0, &sp1C); + break; + } + fn_1_FE8C(&sp10, 0, work->unk_14, work->unk_18); + break; + case 3: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if ((work->unk_88 > 27.0f) && (work->unk_88 < 51.0f)) { + work->unk_40 = 1; + } + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_40, &sp1C); + if (((work->unk_40 != 0) && ((work->unk_1C & 0x100) != 0)) || ((work->unk_40 == 0) && (var_r29 != 0))) { + fn_1_B4D4(object, 5); + if (work->unk_40 == 0) { + fn_1_1070C(); + } + fn_1_FE8C(&sp1C, 2, work->unk_14, work->unk_18); + work->unk_40 = 0; + work->unk_8C = 5; + work->unk_88 = 0; + HuAudFXPlay(sp8[work->unk_14]); + } + break; + case 4: + if (work->unk_88 >= 12.0f) { + work->unk_60 = 0; + work->unk_8C = 1; + work->unk_88 = 0; + } + break; + case 5: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if (work->unk_128.y <= 0.0f) { + work->unk_60 = 0; + fn_1_D888(&work->unk_128, 0.5f); + work->unk_30 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + } + break; + } + } +} + +void fn_1_9688(omObjData *object) +{ + Vec sp2C; + Vec sp20; + float var_f31; + float var_f30; + float var_f29; + + M433PlayerWork *work = object->data; + s32 sp38[3][3] = { { 3, 4, 6 }, { 3, 4, 6 }, { 3, 4, 7 } }; + s32 sp18[2] = { 0x6AD, 0x6AE }; + s32 sp10[2] = { 0x6A6, 0x6A7 }; + s32 sp8[2] = { 0x6AA, 0x6AB }; + M433PlayerWork *var_r29 = work->unk_14C->data; + + work->unk_4C = 0; + work->unk_44 = 0; + work->unk_48 = 0; + if (work->unk_60 == 0) { + switch (work->unk_7C) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) + && (work->unk_30 = 0, work->unk_64 = 0, ((work->unk_34 == 0) != 0)) && (work->unk_14 == fn_1_10740(&sp2C)) + && (fn_1_11004(work->unk_14, work->unk_18) != 0) && (fn_1_10FDC() < 3)) { + work->unk_140 = sp2C; + var_f31 = fn_1_10848(); + if ((var_f31 <= 0.8f) && (var_f31 >= 0.02f) && (var_r29->unk_64 == 0)) { + VECSubtract(&sp2C, &work->unk_128, &sp20); + sp20.y = 0.0f; + var_f30 = VECMag(&sp20); + work->unk_98 = var_f30; + if (var_f30 <= 200.0f) { + if ((var_f31 >= 0.2f) && (var_f30 <= 70.0f) && (var_f31 >= (0.2f + (0.001f * var_f30))) && (fn_1_10FDC() >= 1)) { + work->unk_4C = 1; + } + if ((var_f31 >= 0.02f) && (var_f30 <= 100.0f) && (var_f31 >= (0.02f + (0.001f * var_f30)))) { + work->unk_44 = 1; + } + if ((var_f31 >= 0.1f) && (var_f31 <= 0.3f) && (var_f30 > 100.0f) && (var_f30 <= 200.0f) + && (var_f31 >= (0.1f + (0.0002f * (var_f30 - 100.0f))))) { + work->unk_48 = 1; + } + } + } + if ((work->unk_1C & 0x100) != 0) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + if (work->unk_4C != 0) { + work->unk_7C = 1; + var_f31 -= 0.12f; + work->unk_98 *= 0.014285714f; + fn_1_B4D4(object, 0xF); + fn_1_10B20(0.0f, &sp2C); + } + else if (work->unk_44 != 0) { + work->unk_7C = 2; + var_f31 -= 0.03f; + work->unk_98 *= 0.01f; + fn_1_B4D4(object, 0xE); + fn_1_10B20(0.0f, &sp2C); + } + else if (work->unk_48 != 0) { + work->unk_7C = 3; + var_f31 -= 0.03f; + work->unk_98 *= 0.005f; + fn_1_B4D4(object, 7); + fn_1_D888(&work->unk_128, 0.75f); + HuAudFXPlay(sp8[work->unk_14]); + } + else { + if (fn_1_10FDC() >= 1) { + fn_1_B4D4(object, 9); + } + else { + fn_1_B4D4(object, 6); + } + work->unk_7C = 4; + } + if (work->unk_7C < 4) { + work->unk_64 = 1; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + work->unk_90 = 60.0f * var_f31; + } + VECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + work->unk_30 = 1; + work->unk_88 = 0; + } + } + break; + case 1: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + if (fn_1_10FDC() >= 2) { + sp2C.x = 350.0f; + sp2C.y = 11.0f; + sp2C.z = 0.0f; + if (work->unk_14 != 0) { + sp2C.x *= -1.0f; + } + } + else { + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + sp2C.x *= 0.5f; + } + var_f29 = frandmod(0x168); + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + if (fn_1_10FDC() < 2) { + fn_1_10130(&sp2C, work->unk_14); + } + fn_1_FE8C(&sp2C, sp38[0][fn_1_10FDC()], work->unk_14, work->unk_18); + fn_1_D888(&work->unk_128, 0.0f); + HuAudFXPlay(sp10[work->unk_14]); + } + work->unk_64 = 0; + fn_1_B4D4(object, 9); + VECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.1f; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + break; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); + if (work->unk_64 == 0) { + work->unk_90 = 0; + } + } + else { + work->unk_134.x *= 0.7f; + work->unk_134.z *= 0.7f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + } + } + break; + case 2: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + switch (fn_1_10FDC()) { + case 0: + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + break; + case 1: + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + sp2C.x *= 0.5f; + break; + case 2: + default: + sp2C.x = 350.0f; + sp2C.y = 11.0f; + sp2C.z = 0.0f; + if (work->unk_14 != 0) { + sp2C.x *= -1.0f; + } + break; + } + var_f29 = frandmod(0x168); + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + if (fn_1_10FDC() < 2) { + fn_1_10130(&sp2C, work->unk_14); + } + fn_1_FE8C(&sp2C, sp38[1][fn_1_10FDC()], work->unk_14, work->unk_18); + fn_1_D888(&work->unk_128, 0.0f); + if (fn_1_10FDC() < 1) { + HuAudFXPlay(sp18[work->unk_14]); + } + else { + HuAudFXPlay(sp10[work->unk_14]); + } + } + work->unk_64 = 0; + fn_1_B4D4(object, 6); + VECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.1f; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + break; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); + if (work->unk_64 == 0) { + work->unk_90 = 0; + break; + } + } + else { + work->unk_134.x *= 0.7f; + work->unk_134.z *= 0.7f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + break; + } + } + break; + case 3: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + sp2C = work->unk_128; + sp2C.y = 11.0f; + VECSubtract(&var_r29->unk_128, &work->unk_128, &sp20); + var_f29 = 180.0 + (atan2d(sp20.x, sp20.z)); + var_f29 += frandmod(0xB4) - 90.0f; + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + fn_1_10130(&sp2C, work->unk_14); + fn_1_FE8C(&sp2C, sp38[2][fn_1_10FDC()], work->unk_14, work->unk_18); + if (fn_1_10FDC() < 1) { + HuAudFXPlay(sp18[work->unk_14]); + } + else { + HuAudFXPlay(sp10[work->unk_14]); + } + } + work->unk_64 = 0; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + fn_1_D888(&work->unk_128, 1.3f); + break; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.15f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.15f * (work->unk_140.z - work->unk_128.z); + break; + } + work->unk_134.x *= 0.95f; + work->unk_134.z *= 0.95f; + if (fn_1_B6E0(object) != 0) { + fn_1_B4D4(object, 8); + work->unk_7C = 4; + } + break; + case 4: + work->unk_134.x *= 0.95f; + work->unk_134.z *= 0.95f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + } + break; + } + } +} + +void fn_1_A618(omObjData *object) +{ + Vec sp20; + Vec sp14; + M433PlayerWork *sp8; + float var_f31; + float var_f30; + float var_f29; + M433PlayerWork *work = object->data; + s32 spC[2] = { 0x6A8, 0x6A9 }; + sp8 = work->unk_14C->data; + work->unk_54 = 0; + work->unk_5C = 0; + switch (work->unk_80) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) && (work->unk_30 = 0, work->unk_68 = 0, ((work->unk_34 == 0) != 0)) + && (fn_1_11004(work->unk_14, work->unk_18) != 0) && (fn_1_10FDC() < 3) && (work->unk_14 == fn_1_10740(&sp20))) { + VECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + if (!(VECMag(&sp14) > 500.0f)) { + fn_1_10B20(0.5f, &sp20); + sp20.y -= lbl_1_data_E0[work->unk_00]; + VECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + if ((VECMag(&sp14) < 200.0f) && (sp20.y >= 50.0f)) { + work->unk_5C = 1; + } + if (((work->unk_1C & 0x200) != 0) && (work->unk_5C != 0)) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_B4D4(object, 0xA); + work->unk_80 = 1; + work->unk_88 = 0; + work->unk_30 = 1; + if (work->unk_5C != 0) { + var_f30 = 0.5f; + work->unk_124 = (2.0f * -sp20.y) / (var_f30 * var_f30); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f30); + VECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + work->unk_134.x = 0.016666668f * (sp14.x / 0.5f); + work->unk_134.z = 0.016666668f * (sp14.z / 0.5f); + if (work->unk_14 != 0) { + var_f29 = -90.0f; + } + else { + var_f29 = 90.0f; + } + work->unk_A8 = var_f29; + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + work->unk_68 = 1; + } + else { + work->unk_134.y = 14.833334f; + } + work->unk_60 = 1; + fn_1_D888(&work->unk_128, 0.75f); + } + } + } + break; + case 1: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if (work->unk_68 != 0) { + var_f31 = (0.016666668f * work->unk_88) - 0.35f; + if ((var_f31 >= 0.0f) && (var_f31 < 0.4)) { + work->unk_54 = 1; + if ((work->unk_1C & 0x100) != 0) { + fn_1_B4D4(object, 0xB); + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); + fn_1_FE8C(&sp20, 5, work->unk_14, work->unk_18); + work->unk_68 = 0; + work->unk_54 = 0; + HuAudFXPlay(spC[work->unk_14]); + } + } + else if (var_f31 > 0.0f) { + work->unk_68 = 0; + work->unk_54 = 0; + } + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); + } + if (work->unk_128.y <= 0.0f) { + fn_1_D888(&work->unk_128, 0.75f); + work->unk_30 = 0; + work->unk_80 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_60 = 0; + work->unk_68 = 0; + } + break; + } +} + +void fn_1_AB88(omObjData *object) +{ + Vec sp1C; + Vec sp10; + float var_f29; + float var_f28; + + M433PlayerWork *work = object->data; + s32 var_r30 = 0; + s32 sp8[2] = { 0x6A8, 0x6A9 }; + M433PlayerWork *var_r28 = work->unk_14C->data; + + work->unk_58 = 0; + switch (work->unk_78) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) && (work->unk_30 = 0, work->unk_68 = 0, ((work->unk_34 == 0) != 0)) + && (work->unk_14 == fn_1_107B0(&sp1C)) && (fn_1_11060(work->unk_14) == 0)) { + float var_f31 = work->unk_128.x; + float var_f30; + if (work->unk_14 == 0) { + var_f31 *= -1.0f; + } + if (!(var_f31 > 230.0f) && (fn_1_10EA4() != 2)) { + if (fn_1_10D24(&sp1C) != 0) { + var_r30 = 1; + } + if (var_r30 != 0) { + var_f31 = sp1C.z - work->unk_128.z; + if (var_f31 > 100.0f) { + var_f31 = 100.0f; + } + else if (var_f31 < -100.0f) { + var_f31 = -100.0f; + } + else { + work->unk_58 = 1; + } + } + if ((work->unk_1C & 0x200) != 0) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_B4D4(object, 0xA); + work->unk_78 = 1; + work->unk_88 = 0; + work->unk_30 = 1; + if (work->unk_14 != 0) { + var_f28 = -90.0f; + } + else { + var_f28 = 90.0f; + } + work->unk_A8 = var_f28; + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + fn_1_D888(&work->unk_128, 0.75f); + var_f30 = 0.5f; + work->unk_124 = (2.0f * -(350.0f - lbl_1_data_E0[work->unk_00])) / (var_f30 * var_f30); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f30); + work->unk_134.x = 0.016666668f * (-work->unk_128.x / 0.75f); + if (var_r30 != 0) { + work->unk_134.z = 0.016666668f * (var_f31 / 0.5f); + } + work->unk_60 = 1; + work->unk_58 = 0; + } + } + } + break; + case 1: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if ((work->unk_14 == fn_1_10740(&sp1C)) && (fn_1_10FDC() == 0)) { + fn_1_10B20(0.0f, &sp1C); + if ((sp1C.x * work->unk_128.x) > 0.0f) { + sp1C.y = work->unk_128.y; + VECSubtract(&sp1C, &work->unk_128, &sp10); + if (VECMag(&sp10) < 60.000004f) { + if (frandmod(0x64) < 0x1E) { + fn_1_10740(&sp1C); + sp1C.x *= -0.5f; + fn_1_FE8C(&sp1C, 5, work->unk_14, work->unk_18); + HuAudFXPlay(sp8[work->unk_14]); + } + else { + fn_1_10740(&sp1C); + var_f29 = frandmod(0x168); + sp1C.x += 100.0 * (2.0 * sind(var_f29)); + sp1C.z += 100.0 * (2.0 * cosd(var_f29)); + fn_1_10130(&sp1C, work->unk_14); + fn_1_FE8C(&sp1C, 8, work->unk_14, work->unk_18); + HuAudFXPlay(sp8[work->unk_14]); + } + fn_1_B4D4(object, 0xD); + var_r28->unk_64 = 0; + } + } + } + if (work->unk_128.y <= 0.0f) { + fn_1_D888(&work->unk_128, 0.75f); + work->unk_30 = 0; + work->unk_78 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_60 = 0; + } + break; + } +} + +void fn_1_B194(omObjData *object) +{ + Vec sp8; + float var_f31; + M433PlayerWork *var_r31; + M433PlayerWork *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + for (var_r27 = 0; var_r27 < 2; var_r27++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = lbl_1_bss_7D0[var_r29]->data; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (var_r29 != var_r28) { + var_r30 = lbl_1_bss_7D0[var_r28]->data; + VECSubtract(&var_r31->unk_128, &var_r30->unk_128, &sp8); + sp8.y = 0.0f; + var_f31 = VECMag(&sp8); + if (var_f31 < (var_r31->unk_120 + var_r30->unk_120)) { + if (var_f31 > 0.0f) { + var_f31 = 0.5f * ((var_r31->unk_120 + var_r30->unk_120) - var_f31); + } + else { + var_f31 = 0.5f * (var_r31->unk_120 + var_r30->unk_120); + sp8.x = frandmod(0x3E8) - 0x1F4; + sp8.z = frandmod(0x3E8) - 0x1F4; + } + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&var_r31->unk_128, &sp8, &var_r31->unk_128); + VECSubtract(&var_r30->unk_128, &sp8, &var_r30->unk_128); + } + } + } + if (var_r31->unk_128.y < 0.0f) { + var_r31->unk_128.y = 0.0f; + } + if ((var_r31->unk_128.z - var_r31->unk_120) < -500.0f) { + var_r31->unk_128.z = -500.0f + var_r31->unk_120; + } + else if ((var_r31->unk_128.z + var_r31->unk_120) > 500.0f) { + var_r31->unk_128.z = 500.0f - var_r31->unk_120; + } + if (var_r31->unk_14 == 0) { + var_r31->unk_128.x *= -1.0f; + } + if ((var_r31->unk_128.x - var_r31->unk_120) < 20.0f) { + var_r31->unk_128.x = 20.0f + var_r31->unk_120; + } + else if ((60.000004f + var_r31->unk_128.x) > 800.0f) { + var_r31->unk_128.x = 740.0f; + } + if (var_r31->unk_14 == 0) { + var_r31->unk_128.x *= -1.0f; + } + } + } +} + +void fn_1_B4D4(omObjData *object, u32 arg1) +{ + M433PlayerWork *work = object->data; + if ((work->unk_0C != arg1) && (arg1 < 0x15)) { + float var_f31 = 60.0f * lbl_1_data_24C[arg1].unk_04; + if (work->unk_0C < 0) { + var_f31 = 0.0f; + } + work->unk_0C = arg1; + if (work->unk_04 < 0) { + CharModelMotionShiftSet( + work->unk_00, object->motion[lbl_1_data_24C[arg1].unk_00], 60.0f * lbl_1_data_24C[arg1].unk_08, var_f31, lbl_1_data_24C[arg1].unk_10); + } + else { + Hu3DMotionShiftSet(object->model[0], object->motion[lbl_1_data_24C[arg1].unk_00], 60.0f * lbl_1_data_24C[arg1].unk_08, var_f31, + lbl_1_data_24C[arg1].unk_10); + } + if (lbl_1_data_24C[arg1].unk_0C >= 0.0f) { + Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_24C[arg1].unk_08, 60.0f * lbl_1_data_24C[arg1].unk_0C); + } + work->unk_10 = 0; + } +} + +s32 fn_1_B6E0(omObjData *object) +{ + M433PlayerWork *work = object->data; + s32 var_r29 = 0; + if (work->unk_04 < 0) { + if (((CharModelMotionEndCheck(work->unk_00) != 0) || (work->unk_10 != 0)) && (CharModelMotionShiftIDGet(work->unk_00) < 0)) { + var_r29 = 1; + } + } + else if (((Hu3DMotionEndCheck(object->model[0]) != 0) || (work->unk_10 != 0)) && (Hu3DMotionShiftIDGet(object->model[0]) < 0)) { + var_r29 = 1; + } + return var_r29; +} + +s32 fn_1_B7AC(omObjData *object) +{ + M433PlayerWork *work = object->data; + s32 var_r30 = 0; + if (work->unk_04 < 0) { + if (CharModelMotionShiftIDGet(work->unk_00) < 0) { + var_r30 = 1; + } + } + else if (Hu3DMotionShiftIDGet(object->model[0]) < 0) { + var_r30 = 1; + } + return var_r30; +} + +s32 fn_1_B838(omObjData *object, u32 arg1) +{ + s32 var_r26 = 0; + if (fn_1_B6E0(object)) { + fn_1_B4D4(object, arg1); + var_r26 = 1; + } + return var_r26; +} + +s32 fn_1_BAE0(omObjData *object, u32 arg1) +{ + s32 var_r26 = 0; + if (fn_1_B7AC(object)) { + fn_1_B4D4(object, arg1); + var_r26 = 1; + } + return var_r26; +} + +void fn_1_BD48(omObjData *object) +{ + M433PlayerWork2 *work; + s32 var_r29; + s32 var_r28; + HsfanimStruct01 *var_r27; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork2), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433PlayerWork2)); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0)); + Hu3DModelShadowSet(object->model[0]); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 4)); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 4)); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 3)); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 7)); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 5)); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(object->model[6], 0.75f, 0.75f, 0.75f); + Hu3DModelLayerSet(object->model[6], 2); + object->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 6)); + Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(object->model[7], 0.75f, 0.75f, 0.75f); + Hu3DModelLayerSet(object->model[7], 2); + var_r28 = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(0x120002, MEMORY_DEFAULT_NUM)), 1); + object->model[8] = var_r28; + Hu3DModelLayerSet(var_r28, 2); + Hu3DParticleHookSet(var_r28, fn_1_DE28); + Hu3DModelAttrSet(var_r28, HU3D_ATTR_DISPOFF); + var_r28 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M433, 9)), 0xC8); + object->model[5] = var_r28; + Hu3DModelLayerSet(var_r28, 2); + Hu3DParticleHookSet(var_r28, fn_1_D6A8); + for (var_r27 = ((ParticleData *)Hu3DData[var_r28].unk_120)->unk_48, var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r27++) { + var_r27->unk2C = 0.0f; + var_r27->unk40.a = 0; + var_r27->unk00 = 0; + } + object->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 2)); + Hu3DModelScaleSet(object->model[9], 1.05f, 1.05f, 1.05f); + Hu3DModelAttrSet(object->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[9], 1); + Hu3DModelShadowSet(object->model[9]); + for (var_r29 = 1; var_r29 < 0x15; var_r29++) { + if (var_r29 == 0xA) { + object->model[var_r29 + 9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 1)); + } + else { + object->model[var_r29 + 9] = Hu3DModelLink(object->model[9]); + Hu3DModelLayerSet(object->model[var_r29 + 9], 1); + } + Hu3DModelShadowSet(object->model[var_r29 + 9]); + Hu3DModelScaleSet(object->model[var_r29 + 9], 1.05f, 1.05f, 1.05f); + Hu3DModelAttrSet(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + } + object->trans.x = work->unk_30.x = 0.0f; + object->trans.y = work->unk_30.y = 0.0f; + object->trans.z = work->unk_30.z = 0.0f; + work->unk_B8 = 0.0f; + work->unk_BC.x = work->unk_BC.y = 0.0f; + work->unk_BC.z = 1.0f; + MTXIdentity(work->unk_C8); + work->unk_18 = 0; + object->func = fn_1_C240; +} + +void fn_1_C240(omObjData *object) +{ + s32 var_r29; + + M433PlayerWork2 *work = object->data; + s32 sp8 = 0; + work->unk_00 = 0; + switch (work->unk_18) { + case 0: + work->unk_04 = 1; + break; + case 1: + work->unk_B8 = 0.0f; + work->unk_BC.x = work->unk_BC.y = 0.0f; + work->unk_BC.z = 1.0f; + MTXIdentity(work->unk_C8); + work->unk_00 = 1; + break; + case 10: + work->unk_00 = 1; + break; + } + work->unk_8C++; + if (work->unk_90 != 0) { + work->unk_A0 = 1.0f; + if (work->unk_94 == 2) { + work->unk_A4 += 12.000001f; + if (work->unk_A4 >= 360.0f) { + work->unk_A4 -= 360.0f; + } + work->unk_A0 = 1.5f; + work->unk_A8 += 0.015000001f; + Hu3DMotionSpeedSet(object->model[3], 2.5f); + } + else { + Hu3DMotionTimeSet(object->model[3], 0.0f); + Hu3DMotionSpeedSet(object->model[3], 0.0f); + } + Hu3DModelRotSet(object->model[3], 0.0f, work->unk_A4, 0.0f); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[3], work->unk_AC.x, 3.0f + work->unk_AC.y, work->unk_AC.z); + work->unk_98++; + work->unk_90 = 0; + } + else if (work->unk_94 != 0) { + work->unk_94 = 0; + work->unk_A0 = 0.0f; + } + work->unk_9C = work->unk_9C + (0.2f * (work->unk_A0 - work->unk_9C)); + Hu3DModelScaleSet(object->model[3], work->unk_9C, 1.0f, work->unk_9C); + if ((work->unk_A0 <= 0.0f) && (work->unk_9C < 0.1f)) { + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + work->unk_9C = 0.0f; + } + for (var_r29 = 0; var_r29 < 2; var_r29++) { + work->unk_7C[var_r29] += (0.3f * (work->unk_84[var_r29] - work->unk_7C[var_r29])); + if (work->unk_84[var_r29] > 0.0f) { + Hu3DModelAttrReset(object->model[var_r29 + 1], HU3D_ATTR_DISPOFF); + } + else if (work->unk_7C[var_r29] < 0.1f) { + Hu3DModelAttrSet(object->model[var_r29 + 1], HU3D_ATTR_DISPOFF); + } + Hu3DModelScaleSet(object->model[var_r29 + 1], work->unk_7C[var_r29], 1.0f, work->unk_7C[var_r29]); + } + fn_1_C6B0(object); + fn_1_CB98(object); + object->trans.x = work->unk_30.x; + object->trans.y = work->unk_30.y; + object->trans.z = work->unk_30.z; + if ((fn_1_216C() >= 3) && (work->unk_04 != 0) && (fn_1_2244() != 0)) { + fn_1_DD70(&work->unk_30); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_C6AC; + } +} + +void fn_1_C6AC(omObjData *object) { } + +s32 fn_1_C6B0(omObjData *object) +{ + Mtx sp14; + Vec sp8; + M433PlayerWork3 *var_r29; + s32 var_r28; + + M433PlayerWork2 *work = object->data; + if ((work->unk_00 == 0) && (work->unk_04 == 0) && (work->unk_08 == 0)) { + if (work->unk_10 == 0) { + fn_1_CDB8(&work->unk_F8, &work->unk_30, &work->unk_3C, work->unk_6C, work->unk_A8); + fn_1_D338(&work->unk_F8); + fn_1_D180(&work->unk_F8); + work->unk_B8 = work->unk_A8 * (8.0f * lbl_1_data_48C[work->unk_6C]); + VECSubtract(&work->unk_3C, &work->unk_30, &sp8); + sp8.y = 0.0f; + if (VECMag(&sp8) <= 0.0f) { + work->unk_BC.x = work->unk_BC.y = 0.0f; + work->unk_BC.z = 1.0f; + } + else { + VECNormalize(&sp8, &sp8); + work->unk_BC.x = -sp8.z; + work->unk_BC.y = 0.0f; + work->unk_BC.z = sp8.x; + } + work->unk_48 = 0.0f; + var_r28 = 0; + if (work->unk_84[0] > 0.0f) { + var_r28++; + } + Hu3DModelPosSet(object->model[var_r28 + 1], work->unk_F8.unk_38.x, 3.0f + work->unk_F8.unk_38.y, work->unk_F8.unk_38.z); + if (work->unk_9C <= 0.0f) { + work->unk_8C = 9; + } + if (lbl_1_data_468[work->unk_6C] != 0) { + work->unk_84[var_r28] = 1.0f; + } + work->unk_84[1 - var_r28] = 0.0f; + } + work->unk_10 = 1; + if (work->unk_B8 != 0.0f) { + MTXRotAxisRad(sp14, &work->unk_BC, 0.017453292f * work->unk_B8); + MTXConcat(sp14, work->unk_C8, work->unk_C8); + MTXCopy(work->unk_C8, Hu3DData[object->model[0]].unk_F0); + } + work->unk_48 += 0.016666668f; + work->unk_08 = fn_1_D4E0(&work->unk_F8, &work->unk_30, &work->unk_4C, work->unk_48); + if (work->unk_08 != 0) { + work->unk_84[0] = work->unk_84[1] = 0.0f; + if (work->unk_30.y <= 12.0f) { + var_r29 = lbl_1_bss_7C8->data; + work->unk_78 = 0; + Hu3DModelPosSetV(object->model[4], &work->unk_30); + Hu3DMotionTimeSet(object->model[4], 0.0f); + if ((work->unk_6C == 5) || (work->unk_6C == 2)) { + Hu3DMotionSpeedSet(object->model[4], 1.5f); + fn_1_D888(&work->unk_30, 1.0f); + } + else { + Hu3DMotionSpeedSet(object->model[4], 1.0f); + fn_1_D888(&work->unk_30, 0.5f); + work->unk_30.y += 11.0f; + } + work->unk_6C = 0; + work->unk_04 = 1; + var_r29->unk_2C = 1; + var_r29->sGroundGrp = -1; + if (fabs(work->unk_30.z) < 350.0) { + if (fabs(work->unk_30.x) < 700.0) { + var_r29->sGroundGrp = 0; + if (work->unk_30.x >= 0.0f) { + var_r29->sGroundGrp = 1; + } + } + } + } + } + } + else { + work->unk_10 = 0; + } + return work->unk_08; +} + +void fn_1_CB98(omObjData *object) +{ + Mtx sp50; + Mtx sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 var_r29; + + M433PlayerWork2 *work = object->data; + if (work->unk_78 != 0) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + var_f30 = work->unk_F8.unk_04; + var_f29 = var_f30; + var_f31 = var_f29 - (0.020000001f * work->unk_A8); + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_f31 = (var_f30 - var_f31) / 21.0f; + MTXCopy(work->unk_C8, sp20); + var_f28 = (work->unk_B8 * (1.2f * work->unk_A8)) / 21.0f; + MTXRotAxisRad(sp50, &work->unk_BC, MTXDegToRad(-var_f28)); + for (var_r29 = 0; var_r29 < 0x15; var_r29++) { + Hu3DModelAttrReset(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + fn_1_D4E0(&work->unk_F8, &sp14, &sp8, var_f30); + Hu3DModelPosSetV(object->model[var_r29 + 9], &sp14); + MTXCopy(sp20, Hu3DData[object->model[var_r29 + 9]].unk_F0); + MTXConcat(sp50, sp20, sp20); + var_f30 -= var_f31; + } + work->unk_F8.unk_04 = var_f29; + return; + } + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 0x15; var_r29++) { + Hu3DModelAttrSet(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_CDB8(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8) +{ + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + float var_f29; + + arg0->unk_0C = 0.0f; + arg0->unk_08 = 0.0f; + var_f31 = lbl_1_data_4D4[arg3].y; + arg0->unk_00 = var_f31; + if (arg0->unk_00 <= 0.0f) { + if (((arg2->x * arg1->x) < 0.0f) && (arg1->x != 0.0f) && (lbl_1_data_4D4[arg3].x > 0.0f)) { + arg0->unk_0C = lbl_1_data_4D4[arg3].x; + arg0->unk_08 = fabs(arg1->x / (arg2->x - arg1->x)); + var_f29 = arg1->y + (arg0->unk_08 * (arg2->y - arg1->y)); + if (var_f29 < arg0->unk_0C) { + spC.x = arg1->x + (arg0->unk_08 * (arg2->x - arg1->x)); + spC.y = arg0->unk_0C; + spC.z = arg1->z + (arg0->unk_08 * (arg2->z - arg1->z)); + VECSubtract(arg2, &spC, &sp18); + var_f30 = VECMag(&sp18); + VECSubtract(&spC, arg1, &sp18); + var_f30 += VECMag(&sp18); + } + else { + VECSubtract(arg2, arg1, &sp18); + var_f30 = VECMag(&sp18); + } + } + else { + VECSubtract(arg2, arg1, &sp18); + var_f30 = VECMag(&sp18); + } + var_f31 = var_f30 / (arg8 * lbl_1_data_4D4[arg3].z); + arg0->unk_00 = var_f31; + } + arg0->unk_04 = 0.0f; + arg0->unk_2C = *arg1; + arg0->unk_38 = *arg2; + arg0->unk_1C = arg2->y - arg1->y; + arg0->unk_24 = -980.0f; + VECSubtract(arg2, arg1, &sp18); + sp18.y = 0.0f; + arg0->unk_10 = VECMag(&sp18); + arg0->unk_18 = 0.0f; + if (var_f31 > 0.0f) { + arg0->unk_20 = (arg0->unk_1C - (0.5f * (-980.0f * (var_f31 * var_f31)))) / var_f31; + arg0->unk_14 = arg0->unk_10 / var_f31; + } + else { + arg0->unk_20 = arg0->unk_1C; + arg0->unk_14 = arg0->unk_10; + } + arg0->unk_28 = lbl_1_data_540[arg3]; +} + +void fn_1_D180(M433PlayerWork2Sub *arg0) +{ + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + s32 var_r31; + + if (!(arg0->unk_0C <= 0.0f)) { + var_f31 = arg0->unk_00; + var_f28 = arg0->unk_00; + var_f27 = 10.0f * arg0->unk_00; + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + var_f30 = 1.0f / var_f31; + sp8 = arg0->unk_10 * var_f30; + var_f26 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); + var_f29 = arg0->unk_08 * var_f31; + var_f25 = arg0->unk_2C.y + ((var_f29 * (0.5f * arg0->unk_24 * var_f29)) + (var_f26 * var_f29)); + if (arg0->unk_0C > var_f25) { + var_f28 = var_f31; + } + else { + var_f27 = var_f31; + } + var_f31 = 0.5f * (var_f28 + var_f27); + } + var_f30 = 1.0f / var_f31; + arg0->unk_00 = var_f31; + arg0->unk_14 = arg0->unk_10 * var_f30; + arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); + } +} + +void fn_1_D338(M433PlayerWork2Sub *arg0) +{ + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + s32 var_r31; + + if (!(arg0->unk_0C <= 0.0f)) { + var_f29 = arg0->unk_08 * arg0->unk_00; + var_f30 = 1.0f / arg0->unk_00; + var_f31 = arg0->unk_24; + var_f28 = arg0->unk_24; + var_f27 = arg0->unk_24 * arg0->unk_28; + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + sp8 = arg0->unk_10 * var_f30; + var_f26 = (arg0->unk_1C * var_f30) - (0.5f * var_f31 * arg0->unk_00); + var_f25 = arg0->unk_2C.y + ((var_f29 * (0.5f * var_f31 * var_f29)) + (var_f26 * var_f29)); + if (arg0->unk_0C > var_f25) { + var_f28 = var_f31; + } + else { + var_f27 = var_f31; + } + var_f31 = 0.5f * (var_f28 + var_f27); + } + arg0->unk_24 = var_f31; + arg0->unk_14 = arg0->unk_10 * var_f30; + arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * arg0->unk_00); + } +} + +s32 fn_1_D4E0(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, float arg8) +{ + Vec sp18; + Vec spC; + float var_f30; + float var_f29; + + if (arg8 < 0.0f) { + arg8 = 0.0f; + } + if (arg8 > arg0->unk_00) { + arg8 = arg0->unk_00; + } + arg0->unk_04 = arg8; + if (arg0->unk_10 > 0.0f) { + VECSubtract(&arg0->unk_38, &arg0->unk_2C, &spC); + spC.y = 0.0f; + VECNormalize(&spC, &spC); + } + else { + spC.x = spC.y = spC.z = 0.0f; + } + sp18 = *arg1; + var_f30 = (arg8 * (0.5f * arg0->unk_18 * arg8)) + (arg0->unk_14 * arg8); + var_f29 = (arg8 * (0.5f * arg0->unk_24 * arg8)) + (arg0->unk_20 * arg8); + arg1->x = arg0->unk_2C.x + (spC.x * var_f30); + arg1->y = arg0->unk_2C.y + var_f29; + arg1->z = arg0->unk_2C.z + (spC.z * var_f30); + VECSubtract(arg1, &sp18, arg2); + if (arg8 >= arg0->unk_00) { + return 1; + } + return 0; +} + +void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.x *= 0.92f; + var_r31->unk08.z *= 0.92f; + var_r31->unk08.y += -0.27222225f; + var_r31->unk2C += 2.0f; + var_r31->unk40.a *= 0.99f; + if (var_r31->unk00 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * 0x44); +} + +void fn_1_D888(Vec *arg0, float arg8) +{ + Vec sp8; + float var_f31; + float var_f30; + HsfanimStruct01 *var_r31; + s32 var_r29; + u32 var_r28; + + var_r31 = ((ParticleData *)Hu3DData[lbl_1_bss_7CC->model[5]].unk_120)->unk_48; + var_r28 = 3.0f + (12.0f * arg8); + for (var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r31++) { + if (var_r31->unk00 == 0) { + var_r31->unk00 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8))); + var_f30 = frandmod(0x168); + sp8.x = sind(var_f30); + sp8.y = 0.0f; + sp8.z = cosd(var_f30); + var_f31 = 0.030000001f * frandmod(0x3E8); + var_r31->unk34.x = arg0->x + (sp8.x * var_f31); + var_r31->unk34.y = 10.0f + (arg0->y + (0.030000001f * frandmod(0x3E8))); + var_r31->unk34.z = arg0->z + (sp8.z * var_f31); + var_f31 = 0.8333334f + (0.0016666667f * frandmod(0x3E8)); + var_f31 *= 1.0f + arg8; + var_r31->unk08.x = sp8.x * var_f31; + var_r31->unk08.z = sp8.z * var_f31; + var_r31->unk08.y = 0.50000006f + (0.0011666667f * frandmod(0x3E8)); + var_r31->unk08.y *= (1.0f + arg8); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 60.0f + frandmod(0x1E); + var_r31->unk40.a = frandmod(0x64) + 0x78; + var_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk40.r = 235.0f + (20.0f * var_f31); + var_r31->unk40.g = 180.0f + (75.0f * var_f31); + var_r31->unk40.b = 155.0f + (100.0f * var_f31); + if (--var_r28 < 1) { + break; + } + } + } +} + +void fn_1_DD70(Vec *arg0) +{ + HsfanimStruct01 *var_r30; + + ParticleData *var_r31 = Hu3DData[lbl_1_bss_7CC->model[8]].unk_120; + Hu3DModelAttrReset(lbl_1_bss_7CC->model[8], HU3D_ATTR_DISPOFF); + var_r30 = var_r31->unk_48; + var_r31->unk_00 = 0; + var_r31->unk_02 = 0x3C; + var_r30->unk2C = 100.0f; + var_r30->unk34 = *arg0; +} + +void fn_1_DE28(ModelData *var_r27, ParticleData *var_r31, Mtx matrix) +{ + HsfanimStruct01 *var_r30; + s32 var_r29; + s8 var_r28; + + if (var_r31->unk_00 == 0) { + var_r31->unk_00 = 1; + for (var_r30 = (HsfanimStruct01 *)&var_r31->unk_48, var_r29 = 0; var_r29 < var_r31->unk_30; var_r29++, var_r30++) { + var_r30->unk2C = 0.0f; + } + } + var_r28 = 0.016666668f * (var_r31->unk_02 * 0xFF); + for (var_r30 = var_r31->unk_48, var_r29 = 0; var_r29 < var_r31->unk_30; var_r29++, var_r30++) { + var_r30->unk40.a = var_r28; + } + if (--var_r31->unk_02 == 0) { + var_r27->attr |= 1; + } + DCStoreRange(var_r31->unk_48, var_r31->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_DF44(omObjData *object) +{ + M433PlayerWork3 *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork3), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433PlayerWork3)); + work->uGameEvent = 0; + work->sWinGrp = -1; + work->uServeGrp = 0; + work->auEvents[0] = work->auEvents[1] = 0; + work->unk_2C = work->unk_30 = 0; + fn_1_E5C0(work->unk_4C, &work->unk_64); + object->func = fn_1_E11C; +} + +void fn_1_DFE4(omObjData *var_r30) +{ + M433PlayerWork3 *work = var_r30->data; + OSReport("\n"); + OSReport("uGameEvent %d\n", work->uGameEvent); + OSReport("sWinGrp %d\n", work->sWinGrp); + OSReport("uServeGrp %d\n", work->uServeGrp); + OSReport("uPointGrp %d\n", work->uPointGrp); + OSReport("auServeCel[2] %d,%d\n", work->auServeCel[0], work->auServeCel[1]); + OSReport("auEvents[2] %d,%d\n", work->auEvents[0], work->auEvents[1]); + OSReport("uContactCnt %d\n", work->uContactCnt); + OSReport("sGroundGrp %d\n", work->sGroundGrp); + OSReport("uContactGrp %d\n", work->uContactGrp); + OSReport("sContactCel %d\n", work->uContactCel); + OSReport("uTargetGrp %d\n", work->uTargetGrp); + OSReport("\n"); +} + +void fn_1_E11C(omObjData *object) +{ + s32 spC[4]; + u32 var_r30; + s32 var_r29; + s32 var_r27; + s16 var_r26; + s16 var_r25; + + M433PlayerWork3 *work = object->data; + s32 sp8 = 0; + s32 var_r28 = 0; + work->unk_28++; + work->unk_4C[0].unk_00 = work->unk_20[0]; + work->unk_4C[1].unk_00 = work->unk_20[1]; + if (fn_1_216C() >= 2) { + fn_1_ECFC(work->unk_4C, &work->unk_64); + } + switch (work->uGameEvent) { + case 0: + work->uContactCnt = 0; + work->uContactCel = -1; + if (work->unk_28 == 0xC) { + fn_1_58D8(1); + } + if ((work->unk_28 >= 30.0f) && (fn_1_216C() >= 2)) { + work->uGameEvent = 1; + work->unk_28 = 0; + work->auEvents[0] = work->auEvents[1] = 1; + } + break; + case 1: + if (work->unk_30 != 0) { + work->unk_48 = 0; + work->uContactCel = -1; + work->uContactCnt = 0; + work->uGameEvent = 2; + work->unk_28 = 0; + work->auEvents[0] = work->auEvents[1] = 3; + if (work->uTargetGrp != 0) { + var_r26 = 5; + } + else { + var_r26 = 6; + } + fn_1_58D8(var_r26); + } + break; + case 2: + case 5: + if (work->unk_30 != 0) { + if (work->uContactCnt != 0) { + work->unk_48++; + work->uGameEvent = 3; + work->auEvents[work->uContactGrp] = 4; + if ((work->unk_48 >= 6) && ((work->unk_48 % 3) == 0)) { + fn_1_58D8(3); + } + } + work->unk_28 = 0; + } + var_r28 = 1; + break; + case 3: + case 4: + if (work->unk_30 != 0) { + if (work->uContactGrp == work->uTargetGrp) { + work->uGameEvent = 4; + work->auEvents[work->uContactGrp] = 5; + } + else { + work->uContactCel = -1; + work->uContactCnt = 0; + work->uGameEvent = 5; + work->auEvents[work->uContactGrp] = 3; + if (work->uTargetGrp != 0) { + var_r25 = 5; + } + else { + var_r25 = 6; + } + fn_1_58D8(var_r25); + } + work->unk_28 = 0; + } + var_r28 = 1; + break; + case 6: + if (work->unk_28 >= 120.0f) { + work->uGameEvent = 0; + work->unk_28 = 0; + work->auEvents[0] = work->auEvents[1] = 0; + } + break; + case 7: + break; + } + if ((work->unk_2C != 0) && (var_r28 != 0)) { + if (work->sGroundGrp >= 0) { + var_r30 = 1 - work->sGroundGrp; + fn_1_58D8(1); + } + else { + var_r30 = 1 - work->uContactGrp; + fn_1_58D8(2); + } + work->uPointGrp = var_r30; + work->unk_20[var_r30]++; + if (work->uServeGrp != var_r30) { + work->uServeGrp = var_r30; + work->auServeCel[work->uServeGrp] = 1 - work->auServeCel[work->uServeGrp]; + } + if (work->unk_20[var_r30] >= 5) { + work->sWinGrp = var_r30; + work->uGameEvent = 7; + work->auEvents[0] = work->auEvents[1] = 7; + var_r27 = 0; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + spC[var_r29] = -1; + if (work->sWinGrp == OM_GET_DATA_PTR(lbl_1_bss_7D0[var_r29], M433PlayerWork)->unk_14) { + spC[var_r27++] = lbl_1_bss_7D0[var_r29]->work[0]; + } + } + fn_1_219C(1, spC[0], spC[1]); + fn_1_21E4(4); + } + else { + work->uGameEvent = 6; + work->auEvents[0] = work->auEvents[1] = 6; + fn_1_FE64(&work->unk_64, work->unk_20[0], work->unk_20[1], var_r30); + HuAudFXPlay(0x16); + } + work->unk_28 = 0; + } + work->unk_2C = 0; + work->unk_30 = 0; +} + +u16 lbl_1_data_674[6] = { 0, 1, 2, 3, 3, 0 }; +s32 lbl_1_data_680[2] = { 0x61001E, 0x61001F }; +Vec2f lbl_1_data_688[5] = { + { 0.0f, 0.0f }, + { 0.0f, 0.0f }, + { -23.0f, 0.0f }, + { 1.0f, 0.0f }, + { 21.0f, 0.0f }, +}; +Vec2f lbl_1_data_6B0[2] = { { 72.0f, 56.0f }, { 504.0f, 56.0f } }; +s32 lbl_1_data_6C0[0xB][4] = { + { 0x13000B, 0, 0, 0 }, + { 0x13000C, 0, 0, 0 }, + { 0x13000D, 0, 0, 0 }, + { 0x13000E, 0, 0, 0 }, + { 0x13000F, 0, 0, 0 }, + { 0x130010, 0, 0, 0 }, + { 0x130011, 0, 0, 0 }, + { 0x130012, 0, 0, 0 }, + { 0x130013, 0, 0, 0 }, + { 0x130014, 0, 0, 0 }, + { 0x130099, 0, 0, 0 }, +}; +s32 lbl_1_data_770[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +M433DllPlayerData794Struct lbl_1_data_794[9] = { + { 0, 0, 0 }, + { 0, 0, 0 }, + { 1, 1, 0 }, + { 1, 0, 1 }, + { 1, 0, 1 }, + { 1, 1, 0 }, + { 1, 1, 0 }, + { 1, 0, 1 }, + { 1, 0, 1 }, +}; +u32 lbl_1_data_800[9] = { 0, 1, 2, 1, 1, 2, 1, 1, 1 }; + +void fn_1_E5C0(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1) +{ + s32 var_r31; + s32 var_r28; + s32 var_r27; + + for (var_r28 = 0; var_r28 < 2; var_r28++, arg0++) { + for (var_r31 = 0; (u32)var_r31 < 5; var_r31++) { + switch (lbl_1_data_674[var_r31]) { + case 0: + arg0->unk_02[var_r31] = espEntry(lbl_1_data_680[var_r28], 1, 0); + espPriSet(arg0->unk_02[var_r31], 0x100); + break; + case 1: + arg0->unk_02[var_r31] = espEntry(0x610020, 1, 0); + espPriSet(arg0->unk_02[var_r31], 0x101); + espColorSet(arg0->unk_02[var_r31], 0, 0, 0); + espTPLvlSet(arg0->unk_02[var_r31], 0.5); + break; + case 2: + arg0->unk_02[var_r31] = espEntry(DATA_MAKE_NUM(DATADIR_M433, 10), 1, 0); + espPriSet(arg0->unk_02[var_r31], 0xFF); + break; + case 3: + arg0->unk_02[var_r31] = espEntry(0x610033, 1, 0); + espPriSet(arg0->unk_02[var_r31], 0xFF); + break; + } + espDispOff(arg0->unk_02[var_r31]); + espDrawNoSet(arg0->unk_02[var_r31], 0); + espAttrSet(arg0->unk_02[var_r31], HUSPR_ATTR_NOANIM); + espAttrSet(arg0->unk_02[var_r31], HUSPR_ATTR_LINEAR); + espPosSet( + arg0->unk_02[var_r31], lbl_1_data_6B0[var_r28].x + lbl_1_data_688[var_r31].x, lbl_1_data_6B0[var_r28].y + lbl_1_data_688[var_r31].y); + } + } + HuDataDirClose(0x610000); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + for (var_r31 = 0; var_r31 < 0x14; var_r31++) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + if (lbl_1_data_6C0[var_r31 % 10][var_r27] != 0) { + arg1->unk_D0[var_r28][var_r31].unk_00[var_r27] = espEntry(lbl_1_data_6C0[var_r31 % 10][var_r27], 2, 0); + espAttrSet(arg1->unk_D0[var_r28][var_r31].unk_00[var_r27], HUSPR_ATTR_LINEAR); + espDispOff(arg1->unk_D0[var_r28][var_r31].unk_00[var_r27]); + } + else { + arg1->unk_D0[var_r28][var_r31].unk_00[var_r27] = -1; + } + } + } + } + for (var_r27 = 0; var_r27 < 2; var_r27++) { + if (lbl_1_data_6C0[10][var_r27] != 0) { + arg1->unk_490.unk_00[var_r27] = espEntry(lbl_1_data_6C0[10][var_r27], 2, 0); + espAttrSet(arg1->unk_490.unk_00[var_r27], HUSPR_ATTR_LINEAR); + espDispOff(arg1->unk_490.unk_00[var_r27]); + } + else { + arg1->unk_490.unk_00[var_r27] = -1; + } + } + for (var_r28 = 0; var_r28 < 2; var_r28++) { + arg1->unk_20[var_r28].unk_00[0] = -1; + arg1->unk_20[var_r28].unk_00[1] = -1; + } + arg1->unk_20[2].unk_00[0] = -1; + arg1->unk_20[2].unk_00[1] = -1; + arg1->unk_20[3].unk_00[0] = -1; + arg1->unk_20[3].unk_00[1] = -1; + HuDataDirClose(lbl_1_data_6C0[0][0]); +} + +void fn_1_EA8C(M433PlayerWork3Sub2Sub *var_r31) +{ + float var_f31; + float var_f30; + s32 var_r30; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r31->unk_00[var_r30] >= 0) { + espDispOn(var_r31->unk_00[var_r30]); + var_f31 = (var_r31->unk_04[var_r30] * var_r31->unk_1C) * cosd(var_r31->unk_28); + var_f30 = (var_r31->unk_04[var_r30] * var_r31->unk_1C) * sind(var_r31->unk_28); + espPosSet(var_r31->unk_00[var_r30], var_r31->unk_0C + var_f31, var_r31->unk_10 + var_f30); + espZRotSet(var_r31->unk_00[var_r30], var_r31->unk_28); + espScaleSet(var_r31->unk_00[var_r30], var_r31->unk_1C, var_r31->unk_20); + espTPLvlSet(var_r31->unk_00[var_r30], var_r31->unk_24); + } + } +} + +void fn_1_EBE4(M433PlayerWork3Sub2Sub2 *arg0, M433PlayerWork3Sub2Sub *arg1, u32 arg2) +{ + u32 var_r31; + u32 var_r30; + + var_r31 = arg2 % 10; + var_r30 = arg2 / 10; + if (var_r30 == 0) { + arg1->unk_00[0] = arg0[var_r31].unk_00[0]; + arg1->unk_00[1] = -1; + arg1->unk_04[0] = 0.0f; + } + else { + arg1->unk_00[0] = arg0[var_r30 + 0xA].unk_00[0]; + arg1->unk_00[1] = arg0[var_r31].unk_00[0]; + arg1->unk_04[0] = -23.039999f; + arg1->unk_04[1] = 23.039999f; + } + arg1->unk_0C = arg1->unk_10 = 0.0f; + arg1->unk_14 = arg1->unk_18 = 0.0f; + arg1->unk_1C = arg1->unk_20 = 1.5f; + arg1->unk_24 = 1.0f; + arg1->unk_28 = 0.0f; +} + +void fn_1_ECFC(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M433PlayerWork3Sub2Sub *var_r30; + M433PlayerWork3Sub2Sub2 *var_r29; + s32 var_r28; + s32 var_r22; + + for (var_r28 = 0; var_r28 < 2; var_r28++, arg0++) { + for (var_r22 = 0; var_r22 < 5; var_r22++) { + espDispOn(arg0->unk_02[var_r22]); + } + espBankSet(arg0->unk_02[3], arg0->unk_00 / 10); + espBankSet(arg0->unk_02[4], arg0->unk_00 % 10); + } + var_f28 = 2.88f; + if (arg1->unk_1C == 0) { + var_r30 = arg1->unk_20; + } + else { + var_r30 = &arg1->unk_20[1]; + var_f28 *= -1.0f; + } + switch (arg1->unk_00) { + case 0: + break; + case 1: + fn_1_EBE4(&arg1->unk_D0[0][0], &arg1->unk_20[0], arg1->unk_0C); + fn_1_EBE4(&arg1->unk_D0[1][0], &arg1->unk_20[1], arg1->unk_10); + fn_1_EBE4(&arg1->unk_490, &arg1->unk_20[2], 0); + fn_1_EBE4(&arg1->unk_D0[2][0], &arg1->unk_20[3], arg1->unk_14[arg1->unk_1C]); + + var_f30 = -48.0f; + arg1->unk_20[0].unk_0C = 172.8f; + arg1->unk_20[0].unk_10 = 360.0f - var_f30; + arg1->unk_20[1].unk_0C = 403.19998f; + arg1->unk_20[1].unk_10 = 360.0f - var_f30; + arg1->unk_20[2].unk_0C = 288.0f; + arg1->unk_20[2].unk_10 = 360.0f - var_f30; + arg1->unk_20[0].unk_24 = arg1->unk_20[1].unk_24 = arg1->unk_20[2].unk_24 = 0.0f; + var_f30 = var_f30 / 19.199999f; + arg1->unk_20[0].unk_18 = var_f30; + arg1->unk_20[1].unk_18 = var_f30; + arg1->unk_20[2].unk_18 = var_f30; + arg1->unk_20[3].unk_0C = 806.39996f; + arg1->unk_20[3].unk_10 = 144.0f; + arg1->unk_20[3].unk_1C += 0.5f; + arg1->unk_20[3].unk_20 -= 0.5f; + arg1->unk_20[3].unk_14 = (403.19998f - arg1->unk_20[3].unk_0C) / 24.0f; + arg1->unk_20[3].unk_18 = (360.0f - arg1->unk_20[3].unk_10) / 24.0f; + if (arg1->unk_1C == 0) { + arg1->unk_20[3].unk_0C = -230.40001f; + arg1->unk_20[3].unk_14 *= -1.0f; + } + arg1->unk_00++; + arg1->unk_04 = 0; + break; + case 2: + var_f31 = arg1->unk_20[0].unk_24; + var_f31 += 0.055555556f; + if (var_f31 > 0.95f) { + var_f31 = 1.0f; + } + arg1->unk_20[2].unk_24 = var_f31; + arg1->unk_20[1].unk_24 = var_f31; + arg1->unk_20[0].unk_24 = var_f31; + arg1->unk_20[0].unk_10 += arg1->unk_20[0].unk_18; + arg1->unk_20[1].unk_10 += arg1->unk_20[1].unk_18; + arg1->unk_20[2].unk_10 += arg1->unk_20[2].unk_18; + arg1->unk_20[3].unk_0C += arg1->unk_20[3].unk_14; + arg1->unk_20[3].unk_10 += arg1->unk_20[3].unk_18; + if (arg1->unk_04 >= 19.199999f) { + var_r30->unk_14 = var_f28; + var_r30->unk_18 = -16.0f; + arg1->unk_00++; + arg1->unk_08 = 0; + } + break; + case 3: + if (arg1->unk_04 <= 24.0f) { + arg1->unk_20[3].unk_0C += arg1->unk_20[3].unk_14; + arg1->unk_20[3].unk_10 += arg1->unk_20[3].unk_18; + } + if (arg1->unk_08 < 24.0f) { + arg1->unk_08++; + var_f31 = 33.75f * arg1->unk_08; + var_f29 = 0.041666668f * arg1->unk_08; + var_f29 = 0.5f * (1.0f - (var_f29 * var_f29)); + if (arg1->unk_08 == 24.0f) { + var_f29 = 0.0f; + } + arg1->unk_20[3].unk_1C = 1.5 + (var_f29 * cosd(var_f31)); + arg1->unk_20[3].unk_20 = 1.5 + (var_f29 * sind((var_f31 - 90.0f))); + } + var_r30->unk_1C = arg1->unk_20[3].unk_20; + var_r30->unk_20 = arg1->unk_20[3].unk_1C; + var_r30->unk_0C += var_r30->unk_14; + var_r30->unk_10 += var_r30->unk_18; + var_r30->unk_18 += 0.80000013f; + var_r30->unk_28 += 8.333334f; + var_r30->unk_24 -= 0.017833335f; + if (var_r30->unk_24 < 0.0f) { + var_r30->unk_24 = 0.0f; + } + if (fn_1_10EA4() == 0) { + arg1->unk_00++; + arg1->unk_04 = 0; + } + break; + case 4: + var_f31 = arg1->unk_20[3].unk_24; + var_f31 -= 0.055555556f; + if (var_f31 < 0.05f) { + var_f31 = 0.0f; + arg1->unk_00++; + arg1->unk_04 = 0; + } + arg1->unk_20[3].unk_24 = var_f31; + arg1->unk_20[2].unk_24 = var_f31; + arg1->unk_20[1].unk_24 = var_f31; + arg1->unk_20[0].unk_24 = var_f31; + break; + default: + for (var_r28 = 0; var_r28 < 2; var_r28++) { + arg1->unk_20[var_r28].unk_00[0] = -1; + arg1->unk_20[var_r28].unk_00[1] = -1; + } + arg1->unk_20[2].unk_00[0] = -1; + arg1->unk_20[2].unk_00[1] = -1; + arg1->unk_20[3].unk_00[0] = -1; + arg1->unk_20[3].unk_00[1] = -1; + arg1->unk_00 = 0; + break; + } + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r29 = &arg1->unk_D0[var_r28][0]; + for (var_r22 = 0; var_r22 < 0x14; var_r22++, var_r29++) { + if (var_r29->unk_00[0] >= 0) { + espDispOff(var_r29->unk_00[0]); + } + if (var_r29->unk_00[1] >= 0) { + espDispOff(var_r29->unk_00[1]); + } + } + } + var_r29 = &arg1->unk_490; + if (var_r29->unk_00[0] >= 0) { + espDispOff(var_r29->unk_00[0]); + } + if (var_r29->unk_00[1] >= 0) { + espDispOff(var_r29->unk_00[1]); + } + fn_1_EA8C(&arg1->unk_20[0]); + fn_1_EA8C(&arg1->unk_20[1]); + fn_1_EA8C(&arg1->unk_20[2]); + fn_1_EA8C(&arg1->unk_20[3]); + arg1->unk_04++; +} + +void fn_1_FE64(M433PlayerWork3Sub2 *arg0, s32 arg1, s32 arg2, u32 arg3) +{ + arg0->unk_00 = 1; + arg0->unk_0C = arg0->unk_14[0]; + arg0->unk_10 = arg0->unk_14[1]; + arg0->unk_14[0] = arg1; + arg0->unk_14[1] = arg2; + arg0->unk_1C = arg3; +} + +void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + var_r31->unk_18 = 0; + if (arg1 < 9) { + var_r31->unk_18 = lbl_1_data_770[arg1]; + if (lbl_1_data_794[arg1].unk_00 != 0) { + M433PlayerWork3 *var_r30 = lbl_1_bss_7C8->data; + var_r30->unk_30 = 1; + var_r30->uContactGrp = arg2; + var_r30->uContactCel = arg3; + var_r30->uTargetGrp = arg2; + if (lbl_1_data_794[arg1].unk_04 != 0) { + var_r30->uTargetGrp = 1 - var_r30->uTargetGrp; + } + if (lbl_1_data_794[arg1].unk_08 != 0) { + var_r30->uContactCnt++; + } + } + } + if (arg1 == 5) { + s32 var_r28 = 6; + if (var_r31->unk_6C == 5) { + var_r28++; + } + Hu3DModelPosSetV(lbl_1_bss_7CC->model[var_r28], &var_r31->unk_30); + Hu3DModelAttrReset(lbl_1_bss_7CC->model[var_r28], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); + Hu3DMotionShapeTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); + } + else if (arg1 != 2) { + var_r31->unk_A8 = 1.0f; + } + var_r31->unk_0C = 1; + var_r31->unk_10 = 0; + var_r31->unk_04 = 0; + var_r31->unk_08 = 0; + var_r31->unk_6C = arg1; + var_r31->unk_70 = arg2; + var_r31->unk_74 = arg3; + if (lbl_1_data_800[arg1] != 0) { + var_r31->unk_78 = lbl_1_data_800[arg1]; + } + else if (var_r31->unk_78 != 0) { + var_r31->unk_78--; + } + var_r31->unk_3C = *arg0; + if (arg1 == 0) { + var_r31->unk_30 = var_r31->unk_3C; + } + var_r31->unk_F8.unk_00 = 1.0f; + var_r31->unk_F8.unk_00 = 0.0f; +} + +void fn_1_10130(Vec *arg0, u32 arg1) +{ + float var_f31 = 44.0f; + if ((arg0->z - var_f31) < -500.0f) { + arg0->z = -500.0f + var_f31; + } + else if ((arg0->z + var_f31) > 500.0f) { + arg0->z = 500.0f - var_f31; + } + if (arg1 == 0) { + arg0->x *= -1.0f; + } + if ((arg0->x - var_f31) < 20.0f) { + arg0->x = 20.0f + var_f31; + } + else if ((arg0->x + var_f31) > 800.0f) { + arg0->x = 800.0f - var_f31; + } + if (arg1 == 0) { + arg0->x *= -1.0f; + } +} + +void fn_1_10260(float var_f29, float var_f30, u32 var_r30, u32 sp8, Vec *var_r29) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_f30 > 1.0f) { + var_f30 = 1.0f; + } + if (var_r31->unk_94 == 0) { + var_r31->unk_AC.x = 465.0f; + var_r31->unk_AC.y = 11.0f; + var_r31->unk_AC.z = 0.0f; + if (var_r30 != 0) { + var_r31->unk_AC.x *= -1.0f; + } + var_r31->unk_94 = 1; + var_r31->unk_98 = 0; + var_r31->unk_A4 = 0.0f; + var_r31->unk_8C = 0; + var_r31->unk_A8 = 1.0f; + } + if (sp8 != 0) { + var_r31->unk_94 = 2; + var_f30 *= 1.5f; + } + var_r31->unk_90 = 1; + var_r31->unk_AC.x += 0.01666666753590107 * (800.0 * (var_f30 * sind(var_f29))); + var_r31->unk_AC.z += 0.01666666753590107 * (800.0 * (var_f30 * cosd(var_f29))); + if (var_r30 != 0) { + var_r31->unk_AC.x *= -1.0f; + } + if (var_r31->unk_AC.x < 230.0f) { + var_r31->unk_AC.x = 230.0f; + } + if (var_r30 != 0) { + var_r31->unk_AC.x *= -1.0f; + } + fn_1_10130(&var_r31->unk_AC, 1 - var_r30); + *var_r29 = var_r31->unk_AC; +} + +s32 fn_1_10614(Vec *arg0) +{ + M433PlayerWork2 *work = lbl_1_bss_7CC->data; + + arg0->x = arg0->y = arg0->z = 0.0f; + if (work->unk_94 == 0) { + return 0; + } + *arg0 = work->unk_AC; + arg0->x = fabs(arg0->x); + arg0->x -= 465.0f; + arg0->x *= 0.004255319f; + arg0->z *= 0.0028571428f; + return 1; +} + +void fn_1_1070C(void) +{ + M433PlayerWork2 *work = lbl_1_bss_7CC->data; + work->unk_A8 = 1.0f; +} + +u32 fn_1_10740(Vec *arg0) +{ + u32 var_r30; + M433PlayerWork2 *work = lbl_1_bss_7CC->data; + *arg0 = work->unk_3C; + if (work->unk_3C.x >= 0.0f) { + var_r30 = 1; + } + else { + var_r30 = 0; + } + return var_r30; +} + +u32 fn_1_107B0(Vec *arg0) +{ + u32 var_r30; + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + *arg0 = var_r31->unk_AC; + } + else { + *arg0 = var_r31->unk_3C; + } + if (arg0->x >= 0.0f) { + var_r30 = 1; + } + else { + var_r30 = 0; + } + return var_r30; +} + +float fn_1_10848(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + return var_r31->unk_F8.unk_00 - var_r31->unk_F8.unk_04; +} + +float fn_1_10878(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + return 1.5f; + } + return var_r31->unk_F8.unk_00 - var_r31->unk_F8.unk_04; +} + +u32 fn_1_108C4(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + return var_r31->unk_98; + } + return 0x2710; +} + +u32 fn_1_10900(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + return var_r31->unk_8C; +} + +float fn_1_10928(float arg8) +{ + float var_f30; + float var_f28; + float var_f26; + M433PlayerWork2Sub *var_r31; + M433PlayerWork2 *var_r30; + + var_r30 = lbl_1_bss_7CC->data; + var_r31 = &var_r30->unk_F8; + var_f28 = 1.0f / var_r31->unk_24; + var_f30 = -var_r31->unk_20 * var_f28; + var_f26 = var_r31->unk_2C.y + ((var_f30 * (0.5f * var_r31->unk_24 * var_f30)) + (var_r31->unk_20 * var_f30)); + if (arg8 > (var_f26)) { + return -1.0f; + } + var_f30 = var_f28 * (-var_r31->unk_20 - sqrtf((var_r31->unk_20 * var_r31->unk_20) - (2.0f * var_r31->unk_24 * (var_r31->unk_2C.y - arg8)))); + var_f30 -= var_r31->unk_04; + return var_f30; +} + +float fn_1_10B20(float arg8, Vec *arg0) +{ + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M433PlayerWork2Sub *var_r31; + M433PlayerWork2 *var_r29; + + var_r29 = lbl_1_bss_7CC->data; + var_r31 = &var_r29->unk_F8; + var_f30 = var_r31->unk_04; + var_f31 = var_f30 + arg8; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + if (var_f31 > var_r31->unk_00) { + var_f31 = var_r31->unk_00; + } + var_r31->unk_04 = var_f31; + if (var_r31->unk_10 > 0.0f) { + VECSubtract(&var_r31->unk_38, &var_r31->unk_2C, &sp14); + sp14.y = 0.0f; + VECNormalize(&sp14, &sp14); + } + else { + sp14.x = sp14.y = sp14.z = 0.0f; + } + sp8 = *arg0; + var_f29 = (var_f31 * (0.5f * var_r31->unk_18 * var_f31)) + (var_r31->unk_14 * var_f31); + var_f28 = (var_f31 * (0.5f * var_r31->unk_24 * var_f31)) + (var_r31->unk_20 * var_f31); + arg0->x = var_r31->unk_2C.x + (sp14.x * var_f29); + arg0->y = var_r31->unk_2C.y + var_f28; + arg0->z = var_r31->unk_2C.z + (sp14.z * var_f29); + VECSubtract(arg0, &sp8, &sp20); + var_f31 >= var_r31->unk_00; + var_r31->unk_04 = var_f30; + return var_f30 + arg8; +} + +static inline float fn_1_10D24_inline(Vec *arg0) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + *arg0 = var_r31->unk_AC; + } + else { + *arg0 = var_r31->unk_3C; + } +} + +s32 fn_1_10D24(Vec *sp8) +{ + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + M433PlayerWork2 *var_r31; + M433PlayerWork2 *var_r30; + + var_r31 = lbl_1_bss_7CC->data; + fn_1_10D24_inline(&spC); + VECSubtract(&spC, &var_r31->unk_30, &sp18); + if ((spC.x * var_r31->unk_30.x) >= 0.0f) { + return 0; + } + if ((var_r31->unk_30.x == 0.0f) || (sp18.x == 0.0f)) { + return 0; + } + var_f31 = fabs(var_r31->unk_30.x / sp18.x); + VECScale(&sp18, &sp18, var_f31); + VECAdd(&var_r31->unk_30, &sp18, sp8); + return 1; +} + +u32 fn_1_10EA4(void) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->uGameEvent; +} + +u32 fn_1_10ECC(u32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->auEvents[arg0 & 1]; +} + +s32 fn_1_10F00(u32 arg0) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->uServeGrp == (arg0 & 1); +} + +u32 fn_1_10F38(u32 arg0) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->auServeCel[arg0 & 1]; +} + +s32 fn_1_10F6C(u32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->uPointGrp == (arg0 & 1); +} + +s32 fn_1_10FA4(s32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->sWinGrp == (arg0 & 1); +} + +u32 fn_1_10FDC(void) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->uContactCnt; +} + +s32 fn_1_11004(u32 arg0, s32 arg1) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return !((work->uContactGrp == (arg0 & 1)) && (work->uContactCel == (arg1 & 1))); +} + +s32 fn_1_11060(u32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->uContactGrp == (arg0 & 1); +} + +float fn_1_11098(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp10; + float var_f31; + float var_f30; + + VECSubtract(arg1, arg0, &sp10); + var_f31 = VECDotProduct(&sp10, arg2); + var_f30 = -VECSquareMag(arg2); + if (var_f30 != 0.0f) { + var_f31 /= var_f30; + } + return var_f31; +} + +float fn_1_11130(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + VECSubtract(arg1, arg0, &sp28); + VECSubtract(arg3, arg2, &sp1C); + VECSubtract(&sp28, &sp1C, &sp28); + if (VECMag(&sp28) <= 0.0f) { + sp34 = *arg0; + } + else { + VECSubtract(arg0, arg2, &sp10); + var_f30 = VECDotProduct(&sp10, &sp28); + var_f29 = -VECSquareMag(&sp28); + if (var_f29 != 0.0f) { + var_f30 /= var_f29; + } + var_f28 = var_f30; + var_f31 = var_f28; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + VECScale(&sp28, &sp1C, var_f31); + VECAdd(arg0, &sp1C, &sp34); + } + VECSubtract(arg2, &sp34, &sp28); + return VECMag(&sp28); +} diff --git a/src/REL/m434Dll/fish.c b/src/REL/m434Dll/fish.c index 12c5df8c..b5940faa 100644 --- a/src/REL/m434Dll/fish.c +++ b/src/REL/m434Dll/fish.c @@ -1,23 +1,26 @@ -#include "game/object.h" -#include "game/objsub.h" +#include "game/audio.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/audio.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/wipe.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" + #include "REL/m434Dll.h" -#include "math.h" #include "ext_math.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "math.h" +#include "version.h" + typedef struct bss_7480_struct { - s32 unk0; - s32 unk4; - s32 unk8; - float unkC; - float unk10; - Vec unk14; + s32 unk0; + s32 unk4; + s32 unk8; + float unkC; + float unk10; + Vec unk14; } Bss7480Struct; omObjData *lbl_1_bss_7880; @@ -32,60 +35,57 @@ void fn_1_6A88(omObjData *object); void fn_1_6860(Process *objman) { - float temp_f31; - Vec spC; - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - omObjData *temp_r28; - for(temp_r31=0; temp_r31<32; temp_r31++) { - lbl_1_bss_7480[temp_r31].unk4 = lbl_1_bss_7480[temp_r31].unk0 = 0; - lbl_1_bss_7480[temp_r31].unkC = lbl_1_bss_7480[temp_r31].unk10 = 0; - lbl_1_bss_7480[temp_r31].unk8 = -1; - } - spC.y = 0; - spC.z = -650; - for(temp_r31=0; temp_r31<32; temp_r31++) { - temp_r30 = temp_r31*32; - spC.x = -650.0f; - for(temp_r29=0; temp_r29<32; temp_r29++, temp_r30++) { - lbl_1_bss_6480[temp_r30] = 0; - lbl_1_bss_6080[temp_r30] = 0; - lbl_1_bss_5880[temp_r30] = 0; - temp_f31 = VECMag(&spC); - if(temp_f31 < 522.0f) { - lbl_1_bss_6080[temp_r30] = 1; - } - spC.x += (1300.0f/32.0f); - } - spC.z += (1300.0f/32.0f); - } - temp_r28 = lbl_1_bss_7880 = omAddObjEx(objman, 30, 1, 0, -1, fn_1_6A88); - temp_r28->work[0] = 0; + float temp_f31; + Vec spC; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + omObjData *temp_r28; + for (temp_r31 = 0; temp_r31 < 32; temp_r31++) { + lbl_1_bss_7480[temp_r31].unk4 = lbl_1_bss_7480[temp_r31].unk0 = 0; + lbl_1_bss_7480[temp_r31].unkC = lbl_1_bss_7480[temp_r31].unk10 = 0; + lbl_1_bss_7480[temp_r31].unk8 = -1; + } + spC.y = 0; + spC.z = -650; + for (temp_r31 = 0; temp_r31 < 32; temp_r31++) { + temp_r30 = temp_r31 * 32; + spC.x = -650.0f; + for (temp_r29 = 0; temp_r29 < 32; temp_r29++, temp_r30++) { + lbl_1_bss_6480[temp_r30] = 0; + lbl_1_bss_6080[temp_r30] = 0; + lbl_1_bss_5880[temp_r30] = 0; + temp_f31 = VECMag(&spC); + if (temp_f31 < 522.0f) { + lbl_1_bss_6080[temp_r30] = 1; + } + spC.x += (1300.0f / 32.0f); + } + spC.z += (1300.0f / 32.0f); + } + temp_r28 = lbl_1_bss_7880 = omAddObjEx(objman, 30, 1, 0, -1, fn_1_6A88); + temp_r28->work[0] = 0; } -void fn_1_6A84(void) -{ - -} +void fn_1_6A84(void) { } typedef struct work_6A88 { - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; - s16 unkC; - s16 unkE; - s32 unk10; - s32 unk14; - s32 unk18; - Vec unk1C; - Vec unk28; - Vec unk34; - Vec unk40; - float unk4C; + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; + s32 unk10; + s32 unk14; + s32 unk18; + Vec unk1C; + Vec unk28; + Vec unk34; + Vec unk40; + float unk4C; } Work6A88; void fn_1_6D7C(ModelData *model, Mtx mtx); @@ -95,73 +95,67 @@ s32 fn_1_8254(s32 arg0, Vec *arg1); void fn_1_6A88(omObjData *object) { - float temp_f31; - float temp_f30; - s16 sp8[2]; - Work6A88 *temp_r31; - s32 temp_r30; - s32 temp_r28; - Work6A88 *temp_r27; - temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, 20*sizeof(Work6A88), MEMORY_DEFAULT_NUM); - object->data = temp_r27; - memset(temp_r27, 0, 20*sizeof(Work6A88)); - for(temp_r30=0; temp_r30<2; temp_r30++) { - sp8[temp_r30] = Hu3DModelCreateFile(lbl_1_data_2C0[temp_r30]); - } - temp_r31 = temp_r27; - for(temp_r30=0; temp_r30<20; temp_r30++, temp_r31++) { - temp_r28 = 0; - if(temp_r30 >= 15) { - temp_r28++; - } - temp_r31->unk0 = temp_r28+1; - temp_r31->unk2 = Hu3DModelLink(sp8[temp_r28]); - Hu3DModelCameraSet(temp_r31->unk2, 4); - Hu3DModelLayerSet(temp_r31->unk2, 4); - temp_f31 = frandmod(360); - temp_f30 = frandmod(464); - temp_r31->unk4C = temp_f31; - temp_r31->unk1C.x = temp_f30*sind(temp_f31); - temp_r31->unk1C.y = -50.0f; - temp_r31->unk1C.z = temp_f30*cosd(temp_f31); - temp_r31->unk34.z = frandmod(360); - temp_r31->unk40.y = 1.0f; - temp_r31->unk40.z = 0; - temp_r31->unk10 = 1; - temp_r31->unk14 = 0; - temp_r31->unkE = -1; - temp_r31->unkC = 0; - temp_r31->unk18 = fn_1_8254(-1, &temp_r31->unk1C); - temp_r31->unkA = 20; - } - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(sp8[temp_r30] > 0) { - Hu3DModelKill(sp8[temp_r30]); - } - - - } - object->work[1] = 140; - object->model[0] = Hu3DHookFuncCreate(fn_1_6D7C); - Hu3DModelCameraSet(object->model[0], 8); - Hu3DModelLayerSet(object->model[0], 7); - object->func = fn_1_6DB8; + float temp_f31; + float temp_f30; + s16 sp8[2]; + Work6A88 *temp_r31; + s32 temp_r30; + s32 temp_r28; + Work6A88 *temp_r27; + temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(Work6A88), MEMORY_DEFAULT_NUM); + object->data = temp_r27; + memset(temp_r27, 0, 20 * sizeof(Work6A88)); + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + sp8[temp_r30] = Hu3DModelCreateFile(lbl_1_data_2C0[temp_r30]); + } + temp_r31 = temp_r27; + for (temp_r30 = 0; temp_r30 < 20; temp_r30++, temp_r31++) { + temp_r28 = 0; + if (temp_r30 >= 15) { + temp_r28++; + } + temp_r31->unk0 = temp_r28 + 1; + temp_r31->unk2 = Hu3DModelLink(sp8[temp_r28]); + Hu3DModelCameraSet(temp_r31->unk2, 4); + Hu3DModelLayerSet(temp_r31->unk2, 4); + temp_f31 = frandmod(360); + temp_f30 = frandmod(464); + temp_r31->unk4C = temp_f31; + temp_r31->unk1C.x = temp_f30 * sind(temp_f31); + temp_r31->unk1C.y = -50.0f; + temp_r31->unk1C.z = temp_f30 * cosd(temp_f31); + temp_r31->unk34.z = frandmod(360); + temp_r31->unk40.y = 1.0f; + temp_r31->unk40.z = 0; + temp_r31->unk10 = 1; + temp_r31->unk14 = 0; + temp_r31->unkE = -1; + temp_r31->unkC = 0; + temp_r31->unk18 = fn_1_8254(-1, &temp_r31->unk1C); + temp_r31->unkA = 20; + } + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (sp8[temp_r30] > 0) { + Hu3DModelKill(sp8[temp_r30]); + } + } + object->work[1] = 140; + object->model[0] = Hu3DHookFuncCreate(fn_1_6D7C); + Hu3DModelCameraSet(object->model[0], 8); + Hu3DModelLayerSet(object->model[0], 7); + object->func = fn_1_6DB8; } void fn_1_6DBC(omObjData *object); void fn_1_6D7C(ModelData *model, Mtx mtx) { - if(!omPauseChk()) { - fn_1_6DBC(lbl_1_bss_7880); - } + if (!omPauseChk()) { + fn_1_6DBC(lbl_1_bss_7880); + } } - -void fn_1_6DB8(omObjData *object) -{ - -} +void fn_1_6DB8(omObjData *object) { } void fn_1_7DF0(void); s32 fn_1_84D0(Work6A88 *arg0); @@ -169,648 +163,613 @@ void fn_1_85C4(Work6A88 *arg0, Vec *arg1); void fn_1_6DBC(omObjData *object) { - Vec sp8; - float temp_f31; - float temp_f30; - Work6A88 *temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r27; - s32 temp_r26; - s32 temp_r25; - s32 temp_r24; - Work6A88 *temp_r23; - temp_r23 = object->data; - fn_1_7DF0(); - if(object->work[1]) { - object->work[1]--; - return; - } - temp_r26 = 0; - temp_r31 = temp_r23; - for(temp_r27=0; temp_r27<20; temp_r27++, temp_r31++) { - temp_r30 = 0; - temp_r24 = 0; - switch(temp_r31->unk4) { - case 0: - if(temp_r31->unkC == 0) { - temp_r24 = fn_1_84D0(temp_r31); - if(temp_r24) { - temp_r30 = 1; - temp_r31->unkC = 60; - } - } else { - temp_r31->unkC--; - } - if(temp_r31->unkC == 0 && temp_r31->unk40.y > temp_r31->unk40.z) { - temp_r30 = 1; - } else { - VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); - temp_f31 = VECMag(&sp8); - if(temp_f31 < 50.0f) { - temp_r30 = 1; - } - } - if(temp_r30) { - if(temp_r31->unkC == 0) { - temp_f31 = frandmod(1000); - temp_f30 = frandmod(1000); - if(temp_f31 > temp_f30) { - temp_f30 = temp_f31; - } - temp_f30 = 0.53f*temp_f30; - temp_f31 = temp_r31->unk4C+((0.06f*frandmod(1000))-30); - temp_r31->unk4C = temp_f31; - temp_r31->unk28.x = temp_f30*sind(temp_f31); - temp_r31->unk28.z = temp_f30*cosd(temp_f31); - } else { - fn_1_85C4(temp_r31, &temp_r31->unk28); - } - temp_r31->unk28.y = temp_r31->unk1C.y; - temp_r31->unk40.y = 0; - temp_r31->unk40.z = frandmod(200)+100.0f; - temp_r31->unk34.y = 200; - if(temp_r31->unkC) { - temp_r31->unk34.y *= 2.0f; - } - } - VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); - temp_r31->unk40.x = atan2d(sp8.x, sp8.z); - if(temp_r31->unkC != 0) { - temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.15f); - temp_r31->unk4C = atan2d(temp_r31->unk28.x, temp_r31->unk28.z); - } else { - temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f); - } - if(temp_r31->unkC != 0) { - temp_r31->unk34.y += (300.0f-temp_r31->unk34.y)*0.02f; - } else { - temp_r31->unk34.y += (75.0f-temp_r31->unk34.y)*0.02f; - } - temp_r31->unk34.x += (temp_r31->unk34.y-temp_r31->unk34.x)*0.2f; - temp_r31->unk1C.x += sind(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x); - temp_r31->unk1C.z += cosd(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x); - temp_r31->unk40.y += (1.0f/60.0f)*temp_r31->unk34.x; - temp_r31->unk18 = fn_1_8254(temp_r31->unk18, &temp_r31->unk1C); - Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); - Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0); - break; - - case 1: - temp_r31->unk34.z += 3.0000002f; - Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); - Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0); - if(fn_1_1D54() == 4) { - Hu3DModelAttrSet(temp_r31->unk2, 1); - } - break; - - case 2: - if(temp_r31->unk14) { - if(temp_r31->unk8 == 0) { - sp8.x = (0.1f*frandmod(1000)+500.0f)-50.0f; - sp8.y = temp_r31->unk1C.y; - sp8.z = (0.1f*frandmod(1000)+500.0f)-50.0f; - if(temp_r31->unk1C.x < 0.0f) { - sp8.x = -sp8.x; - } - VECSubtract(&sp8, &temp_r31->unk1C, &sp8); - temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z); - temp_r31->unk28.x = (1.0f/60.0f)*sp8.x; - temp_r31->unk28.y = 6.666667f; - temp_r31->unk28.z = (1.0f/60.0f)*sp8.z; - temp_r31->unk8++; - HuAudFXPlay(1734); - } - temp_r29 = 0; - if(temp_r31->unk1C.y <= -15.000001f) { - temp_r29 = 1; - } - temp_r31->unk28.y += -0.27222225f; - VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C); - if(!temp_r29 && temp_r31->unk1C.y <= -15.000001f) { - fn_1_43AC(&temp_r31->unk1C); - if(temp_r31->unkE >= 0) { - omVibrate(temp_r31->unkE, 12, 6, 6); - temp_r31->unkE = -1; - } - HuAudFXPlay(1741); - } - sp8 = temp_r31->unk28; - sp8.y = 0; - temp_f31 = VECMag(&sp8); - temp_f31 = atan2d(temp_r31->unk28.y, temp_f31); - Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); - Hu3DModelRotSet(temp_r31->unk2, -temp_f31, temp_r31->unk34.z, 0); - if(temp_r31->unk1C.y <= -50.0) { - temp_r31->unk14 = 0; - temp_r31->unk40.z = 0; - temp_r31->unk40.y = 1; - temp_r31->unk4++; - } - } - - break; - - case 3: - if(temp_r31->unk40.y > temp_r31->unk40.z) { - temp_r30 = 1; - } - VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); - temp_f31 = VECMag(&sp8); - if(temp_f31 < 30.000002f) { - temp_r30 = 1; - } - if(temp_r30) { - temp_f31 = frandmod(360); - temp_f30 = (0.08f*frandmod(1000))+20; - temp_r31->unk28.x = temp_f30*sind(temp_f31); - temp_r31->unk28.z = temp_f30*cosd(temp_f31); - temp_r31->unk28.y = -50; - temp_r31->unk1C.y = temp_r31->unk28.y; - temp_r31->unk28.x += 480.00003f; - temp_r31->unk28.z += 480.00003f; - if(temp_r31->unk1C.x < 0.0f) { - temp_r31->unk28.x *= -1.0f; - } - temp_r31->unk40.y = 0; - temp_r31->unk40.z = frandmod(100)+100.0f; - temp_r31->unk34.y = 100; - if(frandmod(100) < 5) { - temp_r31->unk4++; - temp_r31->unk8 = 0; - HuAudFXPlay(1740); - } - } - VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); - temp_r31->unk40.x = atan2d(sp8.x, sp8.z); - temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f); - temp_r31->unk34.y += (50.0f-temp_r31->unk34.y)*0.02f; - temp_r31->unk34.x += (temp_r31->unk34.y-temp_r31->unk34.x)*0.2f; - temp_r31->unk1C.x += sind(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x); - temp_r31->unk1C.z += cosd(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x); - temp_r31->unk40.y += (1.0f/60.0f)*temp_r31->unk34.x; - Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); - Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0); - - break; - - case 4: - if(temp_r31->unk8 == 0) { - sp8.x = (0.1f*frandmod(1000)+480.00003f)-50.0f; - sp8.y = temp_r31->unk1C.y; - sp8.z = (0.1f*frandmod(1000)+480.00003f)-50.0f; - if(temp_r31->unk1C.x < 0) { - sp8.x = -sp8.x; - } - VECSubtract(&sp8, &temp_r31->unk1C, &sp8); - temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z); - temp_r31->unk28.x = (1.0f/60.0f)*sp8.x; - temp_r31->unk28.y = 6.666667f; - temp_r31->unk28.z = (1.0f/60.0f)*sp8.z; - temp_r31->unk8++; - } - temp_r29 = temp_r25 = 0; - if(temp_r31->unk1C.y <= -15.000001f) { - temp_r29 = 1; - } - temp_r31->unk28.y += -0.27222225f; - VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C); - if(temp_r31->unk1C.y <= -15.000001f) { - temp_r25 = 1; - } - if(temp_r29 != temp_r25) { - fn_1_43AC(&temp_r31->unk1C); - if(temp_r31->unk28.y < 0.0f) { - HuAudFXPlay(1741); - } - } - sp8 = temp_r31->unk28; - sp8.y = 0; - temp_f31 = VECMag(&sp8); - temp_f31 = atan2d(temp_r31->unk28.y*0.3f, temp_f31); - Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); - Hu3DModelRotSet(temp_r31->unk2, -temp_f31, temp_r31->unk34.z, 0); - if(temp_r31->unk1C.y <= -50.0) { - temp_r31->unk40.z = 0; - temp_r31->unk40.y = 1; - temp_r31->unk4--; - } - break; - } - if(temp_r31->unk4 < 2) { - temp_r26++; - } - } - if(temp_r26 == 0) { - fn_1_1D9C(); - } + Vec sp8; + float temp_f31; + float temp_f30; + Work6A88 *temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r27; + s32 temp_r26; + s32 temp_r25; + s32 temp_r24; + Work6A88 *temp_r23; + temp_r23 = object->data; + fn_1_7DF0(); + if (object->work[1]) { + object->work[1]--; + return; + } + temp_r26 = 0; + temp_r31 = temp_r23; + for (temp_r27 = 0; temp_r27 < 20; temp_r27++, temp_r31++) { + temp_r30 = 0; + temp_r24 = 0; + switch (temp_r31->unk4) { + case 0: + if (temp_r31->unkC == 0) { + temp_r24 = fn_1_84D0(temp_r31); + if (temp_r24) { + temp_r30 = 1; + temp_r31->unkC = 60; + } + } + else { + temp_r31->unkC--; + } + if (temp_r31->unkC == 0 && temp_r31->unk40.y > temp_r31->unk40.z) { + temp_r30 = 1; + } + else { + VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); + temp_f31 = VECMag(&sp8); + if (temp_f31 < 50.0f) { + temp_r30 = 1; + } + } + if (temp_r30) { + if (temp_r31->unkC == 0) { + temp_f31 = frandmod(1000); + temp_f30 = frandmod(1000); + if (temp_f31 > temp_f30) { + temp_f30 = temp_f31; + } + temp_f30 = 0.53f * temp_f30; + temp_f31 = temp_r31->unk4C + ((0.06f * frandmod(1000)) - 30); + temp_r31->unk4C = temp_f31; + temp_r31->unk28.x = temp_f30 * sind(temp_f31); + temp_r31->unk28.z = temp_f30 * cosd(temp_f31); + } + else { + fn_1_85C4(temp_r31, &temp_r31->unk28); + } + temp_r31->unk28.y = temp_r31->unk1C.y; + temp_r31->unk40.y = 0; + temp_r31->unk40.z = frandmod(200) + 100.0f; + temp_r31->unk34.y = 200; + if (temp_r31->unkC) { + temp_r31->unk34.y *= 2.0f; + } + } + VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); + temp_r31->unk40.x = atan2d(sp8.x, sp8.z); + if (temp_r31->unkC != 0) { + temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.15f); + temp_r31->unk4C = atan2d(temp_r31->unk28.x, temp_r31->unk28.z); + } + else { + temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f); + } + if (temp_r31->unkC != 0) { + temp_r31->unk34.y += (300.0f - temp_r31->unk34.y) * 0.02f; + } + else { + temp_r31->unk34.y += (75.0f - temp_r31->unk34.y) * 0.02f; + } + temp_r31->unk34.x += (temp_r31->unk34.y - temp_r31->unk34.x) * 0.2f; + temp_r31->unk1C.x += sind(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x); + temp_r31->unk1C.z += cosd(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x); + temp_r31->unk40.y += (1.0f / REFRESH_RATE) * temp_r31->unk34.x; + temp_r31->unk18 = fn_1_8254(temp_r31->unk18, &temp_r31->unk1C); + Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0); + break; + + case 1: + temp_r31->unk34.z += 1.0f / REFRESH_RATE * 180.0f; + Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0); + if (fn_1_1D54() == 4) { + Hu3DModelAttrSet(temp_r31->unk2, HU3D_ATTR_DISPOFF); + } + break; + + case 2: + if (temp_r31->unk14) { + if (temp_r31->unk8 == 0) { + sp8.x = (0.1f * frandmod(1000) + 500.0f) - 50.0f; + sp8.y = temp_r31->unk1C.y; + sp8.z = (0.1f * frandmod(1000) + 500.0f) - 50.0f; + if (temp_r31->unk1C.x < 0.0f) { + sp8.x = -sp8.x; + } + VECSubtract(&sp8, &temp_r31->unk1C, &sp8); + temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z); + temp_r31->unk28.x = (1.0f / REFRESH_RATE) * sp8.x; + temp_r31->unk28.y = VERSION_NTSC ? 6.666667f : 8.0f; + temp_r31->unk28.z = (1.0f / REFRESH_RATE) * sp8.z; + temp_r31->unk8++; + HuAudFXPlay(1734); + } + temp_r29 = 0; + if (temp_r31->unk1C.y <= -15.000001f) { + temp_r29 = 1; + } + temp_r31->unk28.y += VERSION_NTSC ? -0.27222225f : -0.392f; + VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C); + if (!temp_r29 && temp_r31->unk1C.y <= -15.000001f) { + fn_1_43AC(&temp_r31->unk1C); + if (temp_r31->unkE >= 0) { + omVibrate(temp_r31->unkE, 12, 6, 6); + temp_r31->unkE = -1; + } + HuAudFXPlay(1741); + } + sp8 = temp_r31->unk28; + sp8.y = 0; + temp_f31 = VECMag(&sp8); + temp_f31 = atan2d(temp_r31->unk28.y, temp_f31); + Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk2, -temp_f31, temp_r31->unk34.z, 0); + if (temp_r31->unk1C.y <= -50.0) { + temp_r31->unk14 = 0; + temp_r31->unk40.z = 0; + temp_r31->unk40.y = 1; + temp_r31->unk4++; + } + } + + break; + + case 3: + if (temp_r31->unk40.y > temp_r31->unk40.z) { + temp_r30 = 1; + } + VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); + temp_f31 = VECMag(&sp8); + if (temp_f31 < 30.000002f) { + temp_r30 = 1; + } + if (temp_r30) { + temp_f31 = frandmod(360); + temp_f30 = (0.08f * frandmod(1000)) + 20; + temp_r31->unk28.x = temp_f30 * sind(temp_f31); + temp_r31->unk28.z = temp_f30 * cosd(temp_f31); + temp_r31->unk28.y = -50; + temp_r31->unk1C.y = temp_r31->unk28.y; + temp_r31->unk28.x += 480.00003f; + temp_r31->unk28.z += 480.00003f; + if (temp_r31->unk1C.x < 0.0f) { + temp_r31->unk28.x *= -1.0f; + } + temp_r31->unk40.y = 0; + temp_r31->unk40.z = frandmod(100) + 100.0f; + temp_r31->unk34.y = 100; + if (frandmod(100) < 5) { + temp_r31->unk4++; + temp_r31->unk8 = 0; + HuAudFXPlay(1740); + } + } + VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8); + temp_r31->unk40.x = atan2d(sp8.x, sp8.z); + temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f); + temp_r31->unk34.y += (50.0f - temp_r31->unk34.y) * 0.02f; + temp_r31->unk34.x += (temp_r31->unk34.y - temp_r31->unk34.x) * 0.2f; + temp_r31->unk1C.x += sind(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x); + temp_r31->unk1C.z += cosd(temp_r31->unk34.z) * ((1.0f / REFRESH_RATE) * temp_r31->unk34.x); + temp_r31->unk40.y += (1.0f / REFRESH_RATE) * temp_r31->unk34.x; + Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0); + + break; + + case 4: + if (temp_r31->unk8 == 0) { + sp8.x = (0.1f * frandmod(1000) + 480.00003f) - 50.0f; + sp8.y = temp_r31->unk1C.y; + sp8.z = (0.1f * frandmod(1000) + 480.00003f) - 50.0f; + if (temp_r31->unk1C.x < 0) { + sp8.x = -sp8.x; + } + VECSubtract(&sp8, &temp_r31->unk1C, &sp8); + temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z); + temp_r31->unk28.x = (1.0f / REFRESH_RATE) * sp8.x; + temp_r31->unk28.y = VERSION_NTSC ? 6.666667f : 8.0f; + temp_r31->unk28.z = (1.0f / REFRESH_RATE) * sp8.z; + temp_r31->unk8++; + } + temp_r29 = temp_r25 = 0; + if (temp_r31->unk1C.y <= -15.000001f) { + temp_r29 = 1; + } + temp_r31->unk28.y += VERSION_NTSC ? -0.27222225f : -0.392f; + VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C); + if (temp_r31->unk1C.y <= -15.000001f) { + temp_r25 = 1; + } + if (temp_r29 != temp_r25) { + fn_1_43AC(&temp_r31->unk1C); + if (temp_r31->unk28.y < 0.0f) { + HuAudFXPlay(1741); + } + } + sp8 = temp_r31->unk28; + sp8.y = 0; + temp_f31 = VECMag(&sp8); + temp_f31 = atan2d(temp_r31->unk28.y * 0.3f, temp_f31); + Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C); + Hu3DModelRotSet(temp_r31->unk2, -temp_f31, temp_r31->unk34.z, 0); + if (temp_r31->unk1C.y <= -50.0) { + temp_r31->unk40.z = 0; + temp_r31->unk40.y = 1; + temp_r31->unk4--; + } + break; + } + if (temp_r31->unk4 < 2) { + temp_r26++; + } + } + if (temp_r26 == 0) { + fn_1_1D9C(); + } } void fn_1_7DF0(void) { - Vec sp14; - Vec sp8; - float temp_f31; - float temp_f30; - - Bss7480Struct *temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - s32 temp_r26; - s32 temp_r25; - s32 temp_r24; - - temp_r31 = lbl_1_bss_7480; - temp_r31 = lbl_1_bss_7480; - for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) { - if(temp_r31->unk0 == 0) { - continue; - } - temp_r31->unk0--; - if(temp_r31->unk4) { - temp_r31->unk4--; - temp_r31->unkC += (temp_r31->unk10-temp_r31->unkC)*0.2f; - } else { - if(temp_r31->unk0 < 100.0f) { - temp_r31->unkC *= 0.98f; - } - } - } - for(temp_r30=0; temp_r30<1024; temp_r30++) { - lbl_1_bss_6480[temp_r30] = 0; - } - temp_r31 = lbl_1_bss_7480; - for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) { - if(temp_r31->unk0 == 0) { - continue; - } - temp_r28 = (16.0f/650.0f)*(650.0f+(temp_r31->unk14.x-temp_r31->unkC)); - temp_r25 = 1.0f+(temp_r28+((16.0f/650.0f)*(2.0f*temp_r31->unkC))); - temp_r29 = (16.0f/650.0f)*(650.0f+(temp_r31->unk14.z-temp_r31->unkC)); - temp_r24 = 1.0f+(temp_r29+((16.0f/650.0f)*(2.0f*temp_r31->unkC))); - if(temp_r28 < 0) { - temp_r28 = 0; - } - if(temp_r25 > 32) { - temp_r25 = 32; - } - if(temp_r29 < 0) { - temp_r29 = 0; - } - if(temp_r24 > 32) { - temp_r24 = 32; - } - temp_f30 = 1.0f/temp_r31->unkC; - sp14.y = 0; - sp14.z = ((1300.0f/32.0f)*temp_r29)-650.0f; - while(temp_r29unk14, &sp14, &sp8); - temp_f31 = 1.0f-(temp_f30*VECMag(&sp8)); - if(temp_f31 > 0.0f) { - lbl_1_bss_6480[temp_r26] += temp_f31; - } - sp14.x += (1300.0f/32.0f); - } - sp14.z += (1300.0f/32.0f); - temp_r29++; - } - } - + Vec sp14; + Vec sp8; + float temp_f31; + float temp_f30; + + Bss7480Struct *temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + s32 temp_r26; + s32 temp_r25; + s32 temp_r24; + + temp_r31 = lbl_1_bss_7480; + temp_r31 = lbl_1_bss_7480; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++, temp_r31++) { + if (temp_r31->unk0 == 0) { + continue; + } + temp_r31->unk0--; + if (temp_r31->unk4) { + temp_r31->unk4--; + temp_r31->unkC += (temp_r31->unk10 - temp_r31->unkC) * 0.2f; + } + else { + if (temp_r31->unk0 < 100.0f) { + temp_r31->unkC *= 0.98f; + } + } + } + for (temp_r30 = 0; temp_r30 < 1024; temp_r30++) { + lbl_1_bss_6480[temp_r30] = 0; + } + temp_r31 = lbl_1_bss_7480; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++, temp_r31++) { + if (temp_r31->unk0 == 0) { + continue; + } + temp_r28 = (16.0f / 650.0f) * (650.0f + (temp_r31->unk14.x - temp_r31->unkC)); + temp_r25 = 1.0f + (temp_r28 + ((16.0f / 650.0f) * (2.0f * temp_r31->unkC))); + temp_r29 = (16.0f / 650.0f) * (650.0f + (temp_r31->unk14.z - temp_r31->unkC)); + temp_r24 = 1.0f + (temp_r29 + ((16.0f / 650.0f) * (2.0f * temp_r31->unkC))); + if (temp_r28 < 0) { + temp_r28 = 0; + } + if (temp_r25 > 32) { + temp_r25 = 32; + } + if (temp_r29 < 0) { + temp_r29 = 0; + } + if (temp_r24 > 32) { + temp_r24 = 32; + } + temp_f30 = 1.0f / temp_r31->unkC; + sp14.y = 0; + sp14.z = ((1300.0f / 32.0f) * temp_r29) - 650.0f; + while (temp_r29 < temp_r24) { + sp14.x = ((1300.0f / 32.0f) * temp_r28) - 650.0f; + temp_r26 = temp_r28 + (32 * temp_r29); + for (temp_r27 = temp_r28; temp_r27 < temp_r25; temp_r27++, temp_r26++) { + VECSubtract(&temp_r31->unk14, &sp14, &sp8); + temp_f31 = 1.0f - (temp_f30 * VECMag(&sp8)); + if (temp_f31 > 0.0f) { + lbl_1_bss_6480[temp_r26] += temp_f31; + } + sp14.x += (1300.0f / 32.0f); + } + sp14.z += (1300.0f / 32.0f); + temp_r29++; + } + } } void fn_1_83C8(s32 arg0); s32 fn_1_8254(s32 arg0, Vec *arg1) { - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - s32 sp8[9][2] = { - -1,-1, - 0,-1, - 1,-1, - -1,0, - 0,0, - 1,0, - -1,1, - 0,1, - 1,1 - }; - fn_1_83C8(arg0); - arg0 = -1; - temp_r29 = (16.0f/650.0f)*(650.0f+arg1->x); - temp_r30 = (16.0f/650.0f)*(650.0f+arg1->z); - if(temp_r29 >= 0 && temp_r29 < 32 && temp_r30 >= 0 && temp_r30 < 32) { - arg0 = temp_r29+(32*temp_r30); - for(temp_r31=0; temp_r31<9; temp_r31++) { - temp_r28 = temp_r29+sp8[temp_r31][0]; - temp_r27 = temp_r30+sp8[temp_r31][1]; - if(temp_r28 >= 0 && temp_r28 < 32 && temp_r27 >= 0 && temp_r27 < 32) { - lbl_1_bss_5880[temp_r28+(32*temp_r27)]++; - } - } - } - return arg0; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + s32 sp8[9][2] = { -1, -1, 0, -1, 1, -1, -1, 0, 0, 0, 1, 0, -1, 1, 0, 1, 1, 1 }; + fn_1_83C8(arg0); + arg0 = -1; + temp_r29 = (16.0f / 650.0f) * (650.0f + arg1->x); + temp_r30 = (16.0f / 650.0f) * (650.0f + arg1->z); + if (temp_r29 >= 0 && temp_r29 < 32 && temp_r30 >= 0 && temp_r30 < 32) { + arg0 = temp_r29 + (32 * temp_r30); + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + temp_r28 = temp_r29 + sp8[temp_r31][0]; + temp_r27 = temp_r30 + sp8[temp_r31][1]; + if (temp_r28 >= 0 && temp_r28 < 32 && temp_r27 >= 0 && temp_r27 < 32) { + lbl_1_bss_5880[temp_r28 + (32 * temp_r27)]++; + } + } + } + return arg0; } void fn_1_83C8(s32 arg0) { - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - s32 sp8[9][2] = { - -1,-1, - 0,-1, - 1,-1, - -1,0, - 0,0, - 1,0, - -1,1, - 0,1, - 1,1 - }; - if(arg0 < 0 || arg0 >= 1024) { - return; - } - temp_r28 = arg0%32; - temp_r27 = (arg0-temp_r28)/32; - for(temp_r31=0; temp_r31<9; temp_r31++) { - temp_r30 = temp_r28+sp8[temp_r31][0]; - temp_r29 = temp_r27+sp8[temp_r31][1]; - if(temp_r30 >= 0 && temp_r30 < 32 && temp_r29 >= 0 && temp_r29 < 32) { - lbl_1_bss_5880[temp_r30+(32*temp_r29)]--; - } - } + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + s32 sp8[9][2] = { -1, -1, 0, -1, 1, -1, -1, 0, 0, 0, 1, 0, -1, 1, 0, 1, 1, 1 }; + if (arg0 < 0 || arg0 >= 1024) { + return; + } + temp_r28 = arg0 % 32; + temp_r27 = (arg0 - temp_r28) / 32; + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + temp_r30 = temp_r28 + sp8[temp_r31][0]; + temp_r29 = temp_r27 + sp8[temp_r31][1]; + if (temp_r30 >= 0 && temp_r30 < 32 && temp_r29 >= 0 && temp_r29 < 32) { + lbl_1_bss_5880[temp_r30 + (32 * temp_r29)]--; + } + } } s32 fn_1_84D0(Work6A88 *arg0) { - float temp_f31; - Vec spC; - Bss7480Struct *temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - temp_r31 = lbl_1_bss_7480; - temp_r28 = 0; - temp_r31 = lbl_1_bss_7480; - for(temp_r29=0; temp_r29<32; temp_r29++, temp_r31++) { - if(temp_r31->unk0 == 0) { - continue; - } - VECSubtract(&temp_r31->unk14, &arg0->unk1C, &spC); - temp_f31 = 1.0f-(VECMag(&spC)/temp_r31->unkC); - if(temp_f31 < 0.3f) { - continue; - } - temp_r30 = 1; - if(temp_r31->unk4) { - temp_r30++; - } - if(temp_r28 < temp_r30) { - temp_r28 = temp_r30; - } - } - return temp_r28; + float temp_f31; + Vec spC; + Bss7480Struct *temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + temp_r31 = lbl_1_bss_7480; + temp_r28 = 0; + temp_r31 = lbl_1_bss_7480; + for (temp_r29 = 0; temp_r29 < 32; temp_r29++, temp_r31++) { + if (temp_r31->unk0 == 0) { + continue; + } + VECSubtract(&temp_r31->unk14, &arg0->unk1C, &spC); + temp_f31 = 1.0f - (VECMag(&spC) / temp_r31->unkC); + if (temp_f31 < 0.3f) { + continue; + } + temp_r30 = 1; + if (temp_r31->unk4) { + temp_r30++; + } + if (temp_r28 < temp_r30) { + temp_r28 = temp_r30; + } + } + return temp_r28; } void fn_1_85C4(Work6A88 *arg0, Vec *arg1) { - Vec sp24; - Vec sp18; - Vec spC; - float temp_f31; - float temp_f30; - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - sp18.x = sp18.y = sp18.z = 0; - temp_f30 = 5000; - sp24.y = 0; - sp24.z = -650; - for(temp_r30=0; temp_r30<32; temp_r30++) { - temp_r31 = 32*temp_r30; - sp24.x = -650; - for(temp_r29=0; temp_r29<32; temp_r29++, temp_r31++) { - if(lbl_1_bss_6480[temp_r31] < 0.15f && lbl_1_bss_6080[temp_r31]) { - VECSubtract(&arg0->unk1C, &sp24, &spC); - temp_f31 = VECMag(&spC); - if(temp_f31 > 81.25f) { - temp_f31 += 162.5f*lbl_1_bss_5880[temp_r31]; - if(temp_f31 < temp_f30) { - temp_f30 = temp_f31; - sp18 = sp24; - } - } - } - sp24.x += (1300.0f/32.0f); - } - sp24.z += (1300.0f/32.0f); - } - sp18.x += ((1300.0f/32000.0f)*frandmod(1000))-(1300.0f/64.0f); - sp18.z += ((1300.0f/32000.0f)*frandmod(1000))-(1300.0f/64.0f); - *arg1 = sp18; + Vec sp24; + Vec sp18; + Vec spC; + float temp_f31; + float temp_f30; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + sp18.x = sp18.y = sp18.z = 0; + temp_f30 = 5000; + sp24.y = 0; + sp24.z = -650; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++) { + temp_r31 = 32 * temp_r30; + sp24.x = -650; + for (temp_r29 = 0; temp_r29 < 32; temp_r29++, temp_r31++) { + if (lbl_1_bss_6480[temp_r31] < 0.15f && lbl_1_bss_6080[temp_r31]) { + VECSubtract(&arg0->unk1C, &sp24, &spC); + temp_f31 = VECMag(&spC); + if (temp_f31 > 81.25f) { + temp_f31 += 162.5f * lbl_1_bss_5880[temp_r31]; + if (temp_f31 < temp_f30) { + temp_f30 = temp_f31; + sp18 = sp24; + } + } + } + sp24.x += (1300.0f / 32.0f); + } + sp24.z += (1300.0f / 32.0f); + } + sp18.x += ((1300.0f / 32000.0f) * frandmod(1000)) - (1300.0f / 64.0f); + sp18.z += ((1300.0f / 32000.0f) * frandmod(1000)) - (1300.0f / 64.0f); + *arg1 = sp18; } s32 fn_1_8884(Vec *arg0, float arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6, s32 arg7) { - float temp_f31; - float temp_f30; - Vec sp24; - Work6A88 *temp_r31; - s32 temp_r30; - s32 temp_r28; - Work6A88 *temp_r23; - temp_r23 = lbl_1_bss_7880->data; - temp_r30 = -1; - temp_r31 = temp_r23; - for(temp_r28=0; temp_r28<20; temp_r28++, temp_r31++) { - if(temp_r31->unk10 == 0) { - continue; - } - VECSubtract(&temp_r31->unk1C, arg0, &sp24); - temp_f30 = VECMag(&sp24); - if(temp_f30 < arg1 || temp_f30 > arg2) { - continue; - } - temp_f31 = atan2d(sp24.x, sp24.z); - temp_f31 = fn_1_67AC(arg3, temp_f31); - if(temp_f31 < arg4 || temp_f31 > arg5) { - continue; - } - temp_r30++; - if(arg6) { - temp_r31->unk14 = 1; - temp_r31->unk10 = 0; - temp_r31->unk4 = 1; - fn_1_83C8(temp_r31->unk18); - temp_r31->unk18 = -1; - temp_r31->unkE = arg7; - HuAudFXPlay(1733); - temp_r30 = temp_r28; - break; - } - - } - if(!arg6) { - temp_r30++; - } - return temp_r30; + float temp_f31; + float temp_f30; + Vec sp24; + Work6A88 *temp_r31; + s32 temp_r30; + s32 temp_r28; + Work6A88 *temp_r23; + temp_r23 = lbl_1_bss_7880->data; + temp_r30 = -1; + temp_r31 = temp_r23; + for (temp_r28 = 0; temp_r28 < 20; temp_r28++, temp_r31++) { + if (temp_r31->unk10 == 0) { + continue; + } + VECSubtract(&temp_r31->unk1C, arg0, &sp24); + temp_f30 = VECMag(&sp24); + if (temp_f30 < arg1 || temp_f30 > arg2) { + continue; + } + temp_f31 = atan2d(sp24.x, sp24.z); + temp_f31 = fn_1_67AC(arg3, temp_f31); + if (temp_f31 < arg4 || temp_f31 > arg5) { + continue; + } + temp_r30++; + if (arg6) { + temp_r31->unk14 = 1; + temp_r31->unk10 = 0; + temp_r31->unk4 = 1; + fn_1_83C8(temp_r31->unk18); + temp_r31->unk18 = -1; + temp_r31->unkE = arg7; + HuAudFXPlay(1733); + temp_r30 = temp_r28; + break; + } + } + if (!arg6) { + temp_r30++; + } + return temp_r30; } void fn_1_8AEC(s16 arg0, Vec *arg1) { - Work6A88 *temp_r31; - Work6A88 *temp_r30 = lbl_1_bss_7880->data; - if(arg0 < 0 || arg0 >= 20) { - return; - } - temp_r31 = &temp_r30[arg0]; - temp_r31->unk1C = *arg1; + Work6A88 *temp_r31; + Work6A88 *temp_r30 = lbl_1_bss_7880->data; + if (arg0 < 0 || arg0 >= 20) { + return; + } + temp_r31 = &temp_r30[arg0]; + temp_r31->unk1C = *arg1; } void fn_1_8B58(s16 arg0) { - Work6A88 *temp_r31; - s32 temp_r30; - Work6A88 *temp_r28 = lbl_1_bss_7880->data; - if(arg0 < 0 || arg0 >= 20) { - return; - } - temp_r31 = &temp_r28[arg0]; - temp_r31->unk4 = 2; - temp_r31->unk8 = 0; - if(temp_r31->unk1C.x >= 0.0f) { - temp_r30 = 1; - } else { - temp_r30 = 0; - } - fn_1_1C44(temp_r30, temp_r31->unk0); + Work6A88 *temp_r31; + s32 temp_r30; + Work6A88 *temp_r28 = lbl_1_bss_7880->data; + if (arg0 < 0 || arg0 >= 20) { + return; + } + temp_r31 = &temp_r28[arg0]; + temp_r31->unk4 = 2; + temp_r31->unk8 = 0; + if (temp_r31->unk1C.x >= 0.0f) { + temp_r30 = 1; + } + else { + temp_r30 = 0; + } + fn_1_1C44(temp_r30, temp_r31->unk0); } void fn_1_8C14(s32 arg0, Vec *arg1, float arg2) { - Bss7480Struct *temp_r31; - s32 temp_r30; - temp_r31 = lbl_1_bss_7480; - for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) { - if(temp_r31->unk0 && temp_r31->unk8 == arg0) { - temp_r31->unk0 *= 0.8f; - } - } - temp_r31 = lbl_1_bss_7480; - for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) { - if(!temp_r31->unk0) { - temp_r31->unk4 = 30; - temp_r31->unk0 = (60.0f*(3.0f*arg2))+150.0f; - temp_r31->unk8 = arg0; - temp_r31->unk14 = *arg1; - temp_r31->unkC = 0; - temp_r31->unk10 = 150.0f+(250.0f*arg2); - break; - } - } + Bss7480Struct *temp_r31; + s32 temp_r30; + temp_r31 = lbl_1_bss_7480; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++, temp_r31++) { + if (temp_r31->unk0 && temp_r31->unk8 == arg0) { + temp_r31->unk0 *= 0.8f; + } + } + temp_r31 = lbl_1_bss_7480; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++, temp_r31++) { + if (!temp_r31->unk0) { + temp_r31->unk4 = 0.5 * REFRESH_RATE; + temp_r31->unk0 = (REFRESH_RATE * (3.0f * arg2)) + 2.5f * REFRESH_RATE; + temp_r31->unk8 = arg0; + temp_r31->unk14 = *arg1; + temp_r31->unkC = 0; + temp_r31->unk10 = 150.0f + (250.0f * arg2); + break; + } + } } s32 fn_1_8D78(Vec *arg0) { - s32 temp_r31; - s32 temp_r30; - s32 temp_r29 = -1; - temp_r31 = (16.0f/650.0f)*(670.3125f+arg0->x); - temp_r30 = (16.0f/650.0f)*(670.3125f+arg0->z); - if(temp_r31 >= 0 && temp_r31 < 32 && temp_r30 >= 0 && temp_r30 < 32) { - temp_r29 = temp_r31+(32*temp_r30); - } - return temp_r29; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29 = -1; + temp_r31 = (16.0f / 650.0f) * (670.3125f + arg0->x); + temp_r30 = (16.0f / 650.0f) * (670.3125f + arg0->z); + if (temp_r31 >= 0 && temp_r31 < 32 && temp_r30 >= 0 && temp_r30 < 32) { + temp_r29 = temp_r31 + (32 * temp_r30); + } + return temp_r29; } s32 fn_1_8E2C(s32 arg0, Vec *arg1) { - s32 temp_r31; - s32 temp_r30; - if(arg0 < 0 || arg0 >= 1024) { - arg1->x = arg1->y = arg1->z = 0; - return 0; - } - temp_r31 = arg0%32; - temp_r30 = (arg0-temp_r31)/32; - arg1->x = ((1300.0f/32.0f)*temp_r31)-670.3125f; - arg1->y = 0; - arg1->z = ((1300.0f/32.0f)*temp_r30)-670.3125f; - return 1; + s32 temp_r31; + s32 temp_r30; + if (arg0 < 0 || arg0 >= 1024) { + arg1->x = arg1->y = arg1->z = 0; + return 0; + } + temp_r31 = arg0 % 32; + temp_r30 = (arg0 - temp_r31) / 32; + arg1->x = ((1300.0f / 32.0f) * temp_r31) - 670.3125f; + arg1->y = 0; + arg1->z = ((1300.0f / 32.0f) * temp_r30) - 670.3125f; + return 1; } s32 fn_1_8F3C(s32 arg0) { - s32 sp8[9][2] = { - -1,-1, - 0,-1, - 1,-1, - -1,0, - 0,0, - 1,0, - -1,1, - 0,1, - 1,1 - }; - if(arg0 < 0 || arg0 >= 1024) { - return 0; - } - return lbl_1_bss_5880[arg0]; + s32 sp8[9][2] = { -1, -1, 0, -1, 1, -1, -1, 0, 0, 0, 1, 0, -1, 1, 0, 1, 1, 1 }; + if (arg0 < 0 || arg0 >= 1024) { + return 0; + } + return lbl_1_bss_5880[arg0]; } s32 fn_1_8FA0(Vec *arg0) { - s32 sp24[9][2] = { - -1,-1, - 0,-1, - 1,-1, - -1,0, - 0,0, - 1,0, - -1,1, - 0,1, - 1,1 - }; - Vec sp18; - Vec spC; - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27 = -1; - float temp_f31; - float temp_f30 = 5000; - sp18.y = 0; - sp18.z = -650; - for(temp_r31=0; temp_r31<32; temp_r31++) { - temp_r30 = temp_r31*32; - sp18.x = -650; - for(temp_r29=0; temp_r29<32; temp_r29++, temp_r30++) { - temp_r28 = lbl_1_bss_5880[temp_r30]; - if(temp_r28 > 0) { - VECSubtract(arg0, &sp18, &spC); - temp_f31 = VECMag(&spC)+(0.2f*frandmod(1000)); - temp_f31 -= 50.0f*temp_r28; - if(temp_f31 < temp_f30) { - temp_f30 = temp_f31; - temp_r27 = temp_r30; - } - } - sp18.x += (1300.0f/32.0f); - } - sp18.z += (1300.0f/32.0f); - } - return temp_r27; -} \ No newline at end of file + s32 sp24[9][2] = { -1, -1, 0, -1, 1, -1, -1, 0, 0, 0, 1, 0, -1, 1, 0, 1, 1, 1 }; + Vec sp18; + Vec spC; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27 = -1; + float temp_f31; + float temp_f30 = 5000; + sp18.y = 0; + sp18.z = -650; + for (temp_r31 = 0; temp_r31 < 32; temp_r31++) { + temp_r30 = temp_r31 * 32; + sp18.x = -650; + for (temp_r29 = 0; temp_r29 < 32; temp_r29++, temp_r30++) { + temp_r28 = lbl_1_bss_5880[temp_r30]; + if (temp_r28 > 0) { + VECSubtract(arg0, &sp18, &spC); + temp_f31 = VECMag(&spC) + (0.2f * frandmod(1000)); + temp_f31 -= 50.0f * temp_r28; + if (temp_f31 < temp_f30) { + temp_f30 = temp_f31; + temp_r27 = temp_r30; + } + } + sp18.x += (1300.0f / 32.0f); + } + sp18.z += (1300.0f / 32.0f); + } + return temp_r27; +} diff --git a/src/REL/m434Dll/main.c b/src/REL/m434Dll/main.c index 70261dd1..bfe8d0df 100644 --- a/src/REL/m434Dll/main.c +++ b/src/REL/m434Dll/main.c @@ -1,23 +1,26 @@ -#include "game/object.h" -#include "game/objsub.h" +#include "game/audio.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/audio.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/sprite.h" #include "game/wipe.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" #include "REL/m434Dll.h" -#include "math.h" #include "ext_math.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "math.h" +#include "version.h" -#include "rel_sqrt_consts.h" - +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif typedef struct camera_view { - float zoom; - Vec pos; - Vec rot; + float zoom; + Vec pos; + Vec rot; } CameraView; Vec lbl_1_data_0 = { -700, 2500, -700 }; @@ -28,7 +31,6 @@ Vec lbl_1_data_28 = { -700, 2500, 700 }; Vec lbl_1_data_34 = { 0, 1, 0 }; Vec lbl_1_data_40 = { 0, 0, 0 }; - omObjData *lbl_1_bss_3D4; omObjData *lbl_1_bss_3D0; omObjData *lbl_1_bss_3CC; @@ -61,58 +63,58 @@ void fn_1_16B4(void); void ObjectSetup(void) { - s32 i; - Process *objman; - OSReport("******* M434ObjectSetup *********\n"); - objman = omInitObjMan(50, 8192); - omGameSysInit(objman); - CZoom = 2097.6f; - Center.x = 0; - Center.y = 172; - Center.z = 361; - CRot.x = -32; - CRot.y = 0; - CRot.z = 0; - for(i=0; i<4; i++) { - CZoomM[i] = CZoom; - CenterM[i] = Center; - CRotM[i] = CRot; - } - fn_1_16B4(); - Hu3DCameraCreate(15); - Hu3DCameraPerspectiveSet(2, 30, 20, 25000, 1.2f); - Hu3DCameraViewportSet(2, 0, 0, 320, 240, 0, 1); - Hu3DCameraPerspectiveSet(13, 30, 20, 25000, 1.2f); - Hu3DCameraViewportSet(13, 0, 0, 640, 480, 0, 1); - lbl_1_bss_3CC = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); - lbl_1_bss_3CC->work[0] = 4; - HuAudSndGrpSet(59); - lbl_1_data_C.x = -lbl_1_data_0.x; - lbl_1_data_C.y = -lbl_1_data_0.y; - lbl_1_data_C.z = -lbl_1_data_0.z; - VECNormalize(&lbl_1_data_C, &lbl_1_data_C); - lbl_1_bss_3B0 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); - Hu3DGLightInfinitytSet(lbl_1_bss_3B0); - Hu3DGLightStaticSet(lbl_1_bss_3B0, 1); - for(i=0; i<4; i++) { - lbl_1_bss_3A0[i] = GWPlayerCfg[i].group; - } - lbl_1_bss_3D4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_4FC); - lbl_1_bss_3D0 = omAddObjEx(objman, 0, 1, 0, -1, fn_1_CC8); - fn_1_1DB0(objman); - fn_1_4854(objman); - fn_1_6860(objman); - fn_1_1104(objman); + s32 i; + Process *objman; + OSReport("******* M434ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + CZoom = 2097.6f; + Center.x = 0; + Center.y = 172; + Center.z = 361; + CRot.x = -32; + CRot.y = 0; + CRot.z = 0; + for (i = 0; i < 4; i++) { + CZoomM[i] = CZoom; + CenterM[i] = Center; + CRotM[i] = CRot; + } + fn_1_16B4(); + Hu3DCameraCreate(15); + Hu3DCameraPerspectiveSet(2, 30, 20, 25000, 1.2f); + Hu3DCameraViewportSet(2, 0, 0, 320, 240, 0, 1); + Hu3DCameraPerspectiveSet(13, 30, 20, 25000, 1.2f); + Hu3DCameraViewportSet(13, 0, 0, 640, 480, 0, 1); + lbl_1_bss_3CC = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); + lbl_1_bss_3CC->work[0] = 4; + HuAudSndGrpSet(59); + lbl_1_data_C.x = -lbl_1_data_0.x; + lbl_1_data_C.y = -lbl_1_data_0.y; + lbl_1_data_C.z = -lbl_1_data_0.z; + VECNormalize(&lbl_1_data_C, &lbl_1_data_C); + lbl_1_bss_3B0 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_3B0); + Hu3DGLightStaticSet(lbl_1_bss_3B0, 1); + for (i = 0; i < 4; i++) { + lbl_1_bss_3A0[i] = GWPlayerCfg[i].group; + } + lbl_1_bss_3D4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_4FC); + lbl_1_bss_3D0 = omAddObjEx(objman, 0, 1, 0, -1, fn_1_CC8); + fn_1_1DB0(objman); + fn_1_4854(objman); + fn_1_6860(objman); + fn_1_1104(objman); } void fn_1_558(omObjData *object); void fn_1_4FC(omObjData *object) { - fn_1_1D64(0); - lbl_1_bss_3AA = 0; - lbl_1_bss_3A8 = 0; - object->func = fn_1_558; + fn_1_1D64(0); + lbl_1_bss_3AA = 0; + lbl_1_bss_3A8 = 0; + object->func = fn_1_558; } s32 lbl_1_data_70 = -1; @@ -122,138 +124,138 @@ void fn_1_1638(s32 arg0); void fn_1_558(omObjData *object) { - s32 temp_r31; - s32 temp_r29; - s32 sp10[2][4]; - s32 sp8[2]; - - switch(fn_1_1D54()) { - case 0: - lbl_1_bss_3C2 = 60; - lbl_1_bss_3C0 = 60; - fn_1_1D64(1); - lbl_1_bss_10[1] = 60; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - HuAudFXPlay(1736); - break; - - case 1: - if(fn_1_10F4() == 2) { - if(lbl_1_bss_10[1] != 0) { - if(--lbl_1_bss_10[1] == 0) { - lbl_1_bss_3BC = MGSeqStartCreate(); - HuAudStreamPlay("sound/mu_047a.adp", 1); - } - } else { - if(MGSeqStatGet(lbl_1_bss_3BC) == 0) { - fn_1_1D64(2); - HuAudFXPlay(1738); - lbl_1_bss_3B8 = MGSeqTimerCreate(60); - fn_1_1638(1); - } - if(lbl_1_data_70 < 0 && (MGSeqStatGet(lbl_1_bss_3BC) & 0x10)) { - lbl_1_data_70 = HuAudSeqPlay(67); - } - } - } - break; - - case 2: - if(--lbl_1_bss_3C0 == 0) { - lbl_1_bss_3C2--; - MGSeqParamSet(lbl_1_bss_3B8, 1, lbl_1_bss_3C2); - lbl_1_bss_3C0 = 60; - } - if(!lbl_1_bss_3C2 || lbl_1_bss_3A8 == 1) { - fn_1_1D64(3); - lbl_1_bss_10[1] = 60; - lbl_1_bss_3BC = MGSeqFinishCreate(); - HuAudStreamFadeOut(30); - HuAudSeqFadeOut(lbl_1_data_70, 100); - } - break; - - case 3: - if(lbl_1_bss_3B8 >= 0) { - MGSeqParamSet(lbl_1_bss_3B8, 2, -1); - lbl_1_bss_3B8 = -1; - } - if(MGSeqStatGet(lbl_1_bss_3BC) == 0) { - fn_1_1D64(4); - lbl_1_bss_10[1] = 60; - } - break; - - case 4: - if(--lbl_1_bss_10[1] == 0) { - sp8[0] = sp8[1] = 0; - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r29 = fn_1_1D74(temp_r31); - sp10[temp_r29][sp8[temp_r29]++] = temp_r31; - } - lbl_1_bss_3AA = fn_1_1CB8(); - switch(lbl_1_bss_3AA) { - case -1: - lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[0][0]].character; - lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[0][1]].character; - MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1); - GWPlayerCoinWinSet(sp10[0][0], 10); - GWPlayerCoinWinSet(sp10[0][1], 10); - HuAudSStreamPlay(1); - break; - - case 0: - MGSeqDrawCreate(); - HuAudSStreamPlay(4); - break; - - case 1: - lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[1][0]].character; - lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[1][1]].character; - MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1); - GWPlayerCoinWinSet(sp10[1][0], 10); - GWPlayerCoinWinSet(sp10[1][1], 10); - HuAudSStreamPlay(1); - break; - } - fn_1_1D64(5); - lbl_1_bss_10[1] = 210; - } - break; - - case 5: - if(--lbl_1_bss_10[1] == 0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_C64; - } - - break; - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - CZoomM[temp_r31] = CZoom; - CRotM[temp_r31] = CRot; - CenterM[temp_r31] = Center; - - } - if(omSysExitReq && !WipeStatGet()) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_C64; - } + s32 temp_r31; + s32 temp_r29; + s32 sp10[2][4]; + s32 sp8[2]; + + switch (fn_1_1D54()) { + case 0: + lbl_1_bss_3C2 = 60; + lbl_1_bss_3C0 = REFRESH_RATE; + fn_1_1D64(1); + lbl_1_bss_10[1] = REFRESH_RATE; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + HuAudFXPlay(1736); + break; + + case 1: + if (fn_1_10F4() == 2) { + if (lbl_1_bss_10[1] != 0) { + if (--lbl_1_bss_10[1] == 0) { + lbl_1_bss_3BC = MGSeqStartCreate(); + HuAudStreamPlay("sound/mu_047a.adp", 1); + } + } + else { + if (MGSeqStatGet(lbl_1_bss_3BC) == 0) { + fn_1_1D64(2); + HuAudFXPlay(1738); + lbl_1_bss_3B8 = MGSeqTimerCreate(60); + fn_1_1638(1); + } + if (lbl_1_data_70 < 0 && (MGSeqStatGet(lbl_1_bss_3BC) & 0x10)) { + lbl_1_data_70 = HuAudSeqPlay(67); + } + } + } + break; + + case 2: + if (--lbl_1_bss_3C0 == 0) { + lbl_1_bss_3C2--; + MGSeqParamSet(lbl_1_bss_3B8, 1, lbl_1_bss_3C2); + lbl_1_bss_3C0 = REFRESH_RATE; + } + if (!lbl_1_bss_3C2 || lbl_1_bss_3A8 == 1) { + fn_1_1D64(3); + lbl_1_bss_10[1] = 60; + lbl_1_bss_3BC = MGSeqFinishCreate(); + HuAudStreamFadeOut(30); + HuAudSeqFadeOut(lbl_1_data_70, 100); + } + break; + + case 3: + if (lbl_1_bss_3B8 >= 0) { + MGSeqParamSet(lbl_1_bss_3B8, 2, -1); + lbl_1_bss_3B8 = -1; + } + if (MGSeqStatGet(lbl_1_bss_3BC) == 0) { + fn_1_1D64(4); + lbl_1_bss_10[1] = REFRESH_RATE; + } + break; + + case 4: + if (--lbl_1_bss_10[1] == 0) { + sp8[0] = sp8[1] = 0; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r29 = fn_1_1D74(temp_r31); + sp10[temp_r29][sp8[temp_r29]++] = temp_r31; + } + lbl_1_bss_3AA = fn_1_1CB8(); + switch (lbl_1_bss_3AA) { + case -1: + lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[0][0]].character; + lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[0][1]].character; + MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1); + GWPlayerCoinWinSet(sp10[0][0], 10); + GWPlayerCoinWinSet(sp10[0][1], 10); + HuAudSStreamPlay(1); + break; + + case 0: + MGSeqDrawCreate(); + HuAudSStreamPlay(4); + break; + + case 1: + lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[1][0]].character; + lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[1][1]].character; + MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1); + GWPlayerCoinWinSet(sp10[1][0], 10); + GWPlayerCoinWinSet(sp10[1][1], 10); + HuAudSStreamPlay(1); + break; + } + fn_1_1D64(5); + lbl_1_bss_10[1] = 3.5 * REFRESH_RATE; + } + break; + + case 5: + if (--lbl_1_bss_10[1] == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_C64; + } + + break; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + CZoomM[temp_r31] = CZoom; + CRotM[temp_r31] = CRot; + CenterM[temp_r31] = Center; + } + if (omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_C64; + } } void fn_1_C64(omObjData *object) { - if(WipeStatGet()) { - return; - } - fn_1_1E44(); - fn_1_4964(); - fn_1_6A84(); - fn_1_1684(); - MGSeqKillAll(); - HuAudFadeOut(1); - omOvlReturnEx(1, 1); - OSReport("******* M434Exit *********\n"); + if (WipeStatGet()) { + return; + } + fn_1_1E44(); + fn_1_4964(); + fn_1_6A84(); + fn_1_1684(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + OSReport("******* M434Exit *********\n"); } void fn_1_E44(omObjData *object); @@ -264,20 +266,19 @@ void fn_1_1A10(float arg0); void fn_1_CC8(omObjData *object) { - lbl_1_bss_8[0] = 0; - lbl_1_bss_8[1] = 140; - fn_1_16D8(); - fn_1_1950(302, 0, 125, -188, -24, 28, 0); - fn_1_1A00(1); - object->func = fn_1_E44; - omSetStatBit(object, 0x100); - object->model[0] = Hu3DModelCreateFile(0x410007); - Hu3DModelCameraSet(object->model[0], 4); - Hu3DModelLayerSet(object->model[0], 4); - Hu3DModelPosSet(object->model[0], -50, -40, -540); - Hu3DMotionSpeedSet(object->model[0], 1); - Hu3DModelRotSet(object->model[0], 0, 70, 0); - + lbl_1_bss_8[0] = 0; + lbl_1_bss_8[1] = 140; + fn_1_16D8(); + fn_1_1950(302, 0, 125, -188, -24, 28, 0); + fn_1_1A00(1); + object->func = fn_1_E44; + omSetStatBit(object, 0x100); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M434, 0x07)); + Hu3DModelCameraSet(object->model[0], 4); + Hu3DModelLayerSet(object->model[0], 4); + Hu3DModelPosSet(object->model[0], -50, -40, -540); + Hu3DMotionSpeedSet(object->model[0], 1); + Hu3DModelRotSet(object->model[0], 0, 70, 0); } s32 lbl_1_data_A4[] = { 74, 98 }; @@ -287,335 +288,327 @@ void fn_1_10BC(omObjData *object); void fn_1_E44(omObjData *object) { - ModelData *temp_r31; - s32 temp_r30; - Vec sp8; - switch(lbl_1_bss_8[0]) { - case 0: - if(--lbl_1_bss_8[1] == 0) { - Hu3DModelAttrSet(object->model[0], 1); - lbl_1_bss_8[0] = 1; - } - for(temp_r30=0; temp_r30<2u; temp_r30++) { - if(lbl_1_bss_4 == lbl_1_data_A4[temp_r30]) { - temp_r31 = &Hu3DData[object->model[0]]; - sp8.x = temp_r31->pos.x+(lbl_1_data_AC[temp_r30]*cosd(temp_r31->rot.y)); - sp8.y = -15.000001f; - sp8.z = temp_r31->pos.z-(lbl_1_data_AC[temp_r30]*sind(temp_r31->rot.y)); - if(temp_r30 == 0) { - fn_1_47EC(&sp8); - HuAudFXPlay(1731); - } else { - fn_1_43AC(&sp8); - HuAudFXPlay(1739); - } - } - } - lbl_1_bss_4++; - break; - - case 1: - lbl_1_bss_0 += 0.02f; - if(lbl_1_bss_0 >= 1.0f) { - lbl_1_bss_8[0] = 2; - lbl_1_bss_0 = 1.0f; - object->func = fn_1_10BC; - } - fn_1_1A10(lbl_1_bss_0); - break; - } + ModelData *temp_r31; + s32 temp_r30; + Vec sp8; + switch (lbl_1_bss_8[0]) { + case 0: + if (--lbl_1_bss_8[1] == 0) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + lbl_1_bss_8[0] = 1; + } + for (temp_r30 = 0; temp_r30 < 2u; temp_r30++) { + if (lbl_1_bss_4 == lbl_1_data_A4[temp_r30]) { + temp_r31 = &Hu3DData[object->model[0]]; + sp8.x = temp_r31->pos.x + (lbl_1_data_AC[temp_r30] * cosd(temp_r31->rot.y)); + sp8.y = -15.000001f; + sp8.z = temp_r31->pos.z - (lbl_1_data_AC[temp_r30] * sind(temp_r31->rot.y)); + if (temp_r30 == 0) { + fn_1_47EC(&sp8); + HuAudFXPlay(1731); + } + else { + fn_1_43AC(&sp8); + HuAudFXPlay(1739); + } + } + } + lbl_1_bss_4++; + break; + + case 1: + lbl_1_bss_0 += 0.02f; + if (lbl_1_bss_0 >= 1.0f) { + lbl_1_bss_8[0] = 2; + lbl_1_bss_0 = 1.0f; + object->func = fn_1_10BC; + } + fn_1_1A10(lbl_1_bss_0); + break; + } } void fn_1_1788(void); void fn_1_10BC(omObjData *object) { - fn_1_1788(); - fn_1_1788(); - object->func = NULL; + fn_1_1788(); + fn_1_1788(); + object->func = NULL; } s32 fn_1_10F4(void) { - return lbl_1_bss_8[0]; + return lbl_1_bss_8[0]; } void fn_1_1150(omObjData *object); -u16 lbl_1_data_B4[6] = { - 0, 1, 2, 3, 4, 4 -}; +u16 lbl_1_data_B4[6] = { 0, 1, 2, 3, 4, 4 }; -float lbl_1_data_C0[6][2] = { - 0,0, - 0,0, - -33,-2, - -9,-2, - 11,-2, - 31,-2 -}; +float lbl_1_data_C0[6][2] = { 0, 0, 0, 0, -33, -2, -9, -2, 11, -2, 31, -2 }; -float lbl_1_data_F0[2][2] = { - 104, 56, - 472, 56 -}; +float lbl_1_data_F0[2][2] = { 104, 56, 472, 56 }; typedef struct work_1150 { - s32 unk0; - s16 unk4; - s16 unk6[6]; - u16 unk12; + s32 unk0; + s16 unk4; + s16 unk6[6]; + u16 unk12; } Work1150; void fn_1_1104(Process *objman) { - lbl_1_bss_3C4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_1150); + lbl_1_bss_3C4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_1150); } void fn_1_1470(omObjData *object); void fn_1_1150(omObjData *object) { - Work1150 *temp_r31; - u32 temp_r30; - s32 temp_r29; - temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 2*sizeof(Work1150), MEMORY_DEFAULT_NUM); - object->data = temp_r31; - memset(object->data, 0, 2*sizeof(Work1150)); - for(temp_r29=0; temp_r29<2; temp_r31++, temp_r29++) { - for(temp_r30=0; temp_r30<6; temp_r30++) { - switch(lbl_1_data_B4[temp_r30]) { - case 0: - temp_r31->unk6[temp_r30] = espEntry(0x61001D, 1, 0); - espPriSet(temp_r31->unk6[temp_r30], 256); - espColorSet(temp_r31->unk6[temp_r30], 0, 0, 0); - espTPLvlSet(temp_r31->unk6[temp_r30], 0.5); - break; - - case 1: - temp_r31->unk6[temp_r30] = espEntry((temp_r29 == 0) ? 0x61001B : 0x61001C, 1, 0); - espPriSet(temp_r31->unk6[temp_r30], 256); - break; - - case 2: - temp_r31->unk6[temp_r30] = espEntry(0x41000C, 1, 0); - espPriSet(temp_r31->unk6[temp_r30], 256); - espScaleSet(temp_r31->unk6[temp_r30], 0.75, 0.75); - break; - - case 3: - temp_r31->unk6[temp_r30] = espEntry(0x41000D, 1, 0); - espPriSet(temp_r31->unk6[temp_r30], 256); - break; - - case 4: - temp_r31->unk6[temp_r30] = espEntry(0x610033, 1, 0); - espPriSet(temp_r31->unk6[temp_r30], 255); - break; - } - espDispOff(temp_r31->unk6[temp_r30]); - espDrawNoSet(temp_r31->unk6[temp_r30], 0); - espAttrSet(temp_r31->unk6[temp_r30], 1); - espPosSet(temp_r31->unk6[temp_r30], lbl_1_data_F0[temp_r29][0]+lbl_1_data_C0[temp_r30][0], lbl_1_data_F0[temp_r29][1]+lbl_1_data_C0[temp_r30][1]); - } - temp_r31->unk0 = -1; - } - HuDataDirClose(0x610000); - object->func = fn_1_1470; + Work1150 *temp_r31; + u32 temp_r30; + s32 temp_r29; + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(Work1150), MEMORY_DEFAULT_NUM); + object->data = temp_r31; + memset(object->data, 0, 2 * sizeof(Work1150)); + for (temp_r29 = 0; temp_r29 < 2; temp_r31++, temp_r29++) { + for (temp_r30 = 0; temp_r30 < 6; temp_r30++) { + switch (lbl_1_data_B4[temp_r30]) { + case 0: + temp_r31->unk6[temp_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1D), 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + espColorSet(temp_r31->unk6[temp_r30], 0, 0, 0); + espTPLvlSet(temp_r31->unk6[temp_r30], 0.5); + break; + + case 1: + temp_r31->unk6[temp_r30] + = espEntry((temp_r29 == 0) ? DATA_MAKE_NUM(DATADIR_MGCONST, 0x1B) : DATA_MAKE_NUM(DATADIR_MGCONST, 0x1C), 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + break; + + case 2: + temp_r31->unk6[temp_r30] = espEntry(DATA_MAKE_NUM(DATADIR_M434, 0x0C), 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + espScaleSet(temp_r31->unk6[temp_r30], 0.75, 0.75); + break; + + case 3: + temp_r31->unk6[temp_r30] = espEntry(DATA_MAKE_NUM(DATADIR_M434, 0x0D), 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + break; + + case 4: + temp_r31->unk6[temp_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x33), 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 255); + break; + } + espDispOff(temp_r31->unk6[temp_r30]); + espDrawNoSet(temp_r31->unk6[temp_r30], 0); + espAttrSet(temp_r31->unk6[temp_r30], HUSPR_ATTR_NOANIM); + espPosSet(temp_r31->unk6[temp_r30], lbl_1_data_F0[temp_r29][0] + lbl_1_data_C0[temp_r30][0], + lbl_1_data_F0[temp_r29][1] + lbl_1_data_C0[temp_r30][1]); + } + temp_r31->unk0 = -1; + } + HuDataDirClose(DATADIR_MGCONST); + object->func = fn_1_1470; } void fn_1_1470(omObjData *object) { - float temp_f31; - Work1150 *temp_r31; - s32 temp_r30; - s32 temp_r29; - temp_r31 = object->data; - for(temp_r29=0; temp_r29<2; temp_r29++, temp_r31++) { - if(temp_r31->unk0 >= 0) { - if(temp_r31->unk0 == 0) { - for(temp_r30=0; temp_r30<6; temp_r30++) { - espDispOn(temp_r31->unk6[temp_r30]); - } - temp_r31->unk0++; - } - if(temp_r31->unk12) { - temp_r31->unk12--; - temp_f31 = (0.5*sind((180.0f*temp_r31->unk12)/16.0f))+1.0; - espScaleSet(temp_r31->unk6[4], temp_f31, temp_f31); - espScaleSet(temp_r31->unk6[5], temp_f31, temp_f31); - } - espBankSet(temp_r31->unk6[4], temp_r31->unk4/10); - espBankSet(temp_r31->unk6[5], temp_r31->unk4%10); - } - } + float temp_f31; + Work1150 *temp_r31; + s32 temp_r30; + s32 temp_r29; + temp_r31 = object->data; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++, temp_r31++) { + if (temp_r31->unk0 >= 0) { + if (temp_r31->unk0 == 0) { + for (temp_r30 = 0; temp_r30 < 6; temp_r30++) { + espDispOn(temp_r31->unk6[temp_r30]); + } + temp_r31->unk0++; + } + if (temp_r31->unk12) { + temp_r31->unk12--; + temp_f31 = (0.5 * sind((180.0f * temp_r31->unk12) / 16.0f)) + 1.0; + espScaleSet(temp_r31->unk6[4], temp_f31, temp_f31); + espScaleSet(temp_r31->unk6[5], temp_f31, temp_f31); + } + espBankSet(temp_r31->unk6[4], temp_r31->unk4 / 10); + espBankSet(temp_r31->unk6[5], temp_r31->unk4 % 10); + } + } } void fn_1_1638(s32 arg0) { - Work1150 *temp_r31; - s32 temp_r30; - temp_r31 = lbl_1_bss_3C4->data; - for(temp_r30=0; temp_r30<2; temp_r30++, temp_r31++) { - temp_r31->unk0 = 0; - } + Work1150 *temp_r31; + s32 temp_r30; + temp_r31 = lbl_1_bss_3C4->data; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++, temp_r31++) { + temp_r31->unk0 = 0; + } } void fn_1_1684(void) { - HuMemDirectFree(lbl_1_bss_3C4->data); + HuMemDirectFree(lbl_1_bss_3C4->data); } void fn_1_16B4(void) { - lbl_1_bss_39C = 0; - lbl_1_bss_18 = 0; + lbl_1_bss_39C = 0; + lbl_1_bss_18 = 0; } void fn_1_16D8(void) { - CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++]; - temp_r31->zoom = CZoom; - temp_r31->pos.x = Center.x; - temp_r31->pos.y = Center.y; - temp_r31->pos.z = Center.z; - temp_r31->rot.x = CRot.x; - temp_r31->rot.y = CRot.y; - temp_r31->rot.z = CRot.z; + CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++]; + temp_r31->zoom = CZoom; + temp_r31->pos.x = Center.x; + temp_r31->pos.y = Center.y; + temp_r31->pos.z = Center.z; + temp_r31->rot.x = CRot.x; + temp_r31->rot.y = CRot.y; + temp_r31->rot.z = CRot.z; } void fn_1_1788(void) { - CameraView *temp_r31 = &lbl_1_bss_1C[--lbl_1_bss_39C]; - CZoom = temp_r31->zoom; - Center.x = temp_r31->pos.x; - Center.y = temp_r31->pos.y; - Center.z = temp_r31->pos.z; - CRot.x = temp_r31->rot.x; - CRot.y = temp_r31->rot.y; - CRot.z = temp_r31->rot.z; + CameraView *temp_r31 = &lbl_1_bss_1C[--lbl_1_bss_39C]; + CZoom = temp_r31->zoom; + Center.x = temp_r31->pos.x; + Center.y = temp_r31->pos.y; + Center.z = temp_r31->pos.z; + CRot.x = temp_r31->rot.x; + CRot.y = temp_r31->rot.y; + CRot.z = temp_r31->rot.z; } void fn_1_1838(CameraView *arg0) { - CameraView *temp_r30; - CameraView sp8; - sp8 = lbl_1_bss_1C[lbl_1_bss_39C++]; - temp_r30 = &sp8; - memcpy(temp_r30, arg0, sizeof(CameraView)); - CZoom = arg0->zoom; - Center.x = arg0->pos.x; - Center.y = arg0->pos.y; - Center.z = arg0->pos.z; - CRot.x = arg0->rot.x; - CRot.y = arg0->rot.y; - CRot.z = arg0->rot.z; + CameraView *temp_r30; + CameraView sp8; + sp8 = lbl_1_bss_1C[lbl_1_bss_39C++]; + temp_r30 = &sp8; + memcpy(temp_r30, arg0, sizeof(CameraView)); + CZoom = arg0->zoom; + Center.x = arg0->pos.x; + Center.y = arg0->pos.y; + Center.z = arg0->pos.z; + CRot.x = arg0->rot.x; + CRot.y = arg0->rot.y; + CRot.z = arg0->rot.z; } void fn_1_1950(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6) { - CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++]; - temp_r31->zoom = CZoom = arg0; - temp_r31->pos.x = Center.x = arg1; - temp_r31->pos.y = Center.y = arg2; - temp_r31->pos.z = Center.z = arg3; - temp_r31->rot.x = CRot.x = arg4; - temp_r31->rot.y = CRot.y = arg5; - temp_r31->rot.z = CRot.z = arg6; + CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++]; + temp_r31->zoom = CZoom = arg0; + temp_r31->pos.x = Center.x = arg1; + temp_r31->pos.y = Center.y = arg2; + temp_r31->pos.z = Center.z = arg3; + temp_r31->rot.x = CRot.x = arg4; + temp_r31->rot.y = CRot.y = arg5; + temp_r31->rot.z = CRot.z = arg6; } void fn_1_1A00(s32 arg0) { - lbl_1_bss_18 = arg0; + lbl_1_bss_18 = arg0; } -#define LERP_PARAM(view1, view2, field, weight) ((view1)->field+) +#define LERP_PARAM(view1, view2, field, weight) ((view1)->field +) void fn_1_1A10(float arg0) { - float weight; - CameraView *view1 = &lbl_1_bss_1C[lbl_1_bss_39C-1]; - CameraView *view2 = view1-1; - if(lbl_1_bss_39C < 2) { - return; - } - switch(lbl_1_bss_18) { - case 0: - weight = arg0; - break; - - case 1: - weight = sind(90.0f*arg0); - break; - - case 2: - weight = sind(90.0f*arg0); - weight *= weight; - break; - } - - CZoom = view1->zoom+(weight*(view2->zoom-view1->zoom)); - Center.x = view1->pos.x+(weight*(view2->pos.x-view1->pos.x)); - Center.y = view1->pos.y+(weight*(view2->pos.y-view1->pos.y)); - Center.z = view1->pos.z+(weight*(view2->pos.z-view1->pos.z)); - CRot.x = view1->rot.x+(weight*(view2->rot.x-view1->rot.x)); - CRot.y = view1->rot.y+(weight*(view2->rot.y-view1->rot.y)); - CRot.z = view1->rot.z+(weight*(view2->rot.z-view1->rot.z)); + float weight; + CameraView *view1 = &lbl_1_bss_1C[lbl_1_bss_39C - 1]; + CameraView *view2 = view1 - 1; + if (lbl_1_bss_39C < 2) { + return; + } + switch (lbl_1_bss_18) { + case 0: + weight = arg0; + break; + + case 1: + weight = sind(90.0f * arg0); + break; + + case 2: + weight = sind(90.0f * arg0); + weight *= weight; + break; + } + + CZoom = view1->zoom + (weight * (view2->zoom - view1->zoom)); + Center.x = view1->pos.x + (weight * (view2->pos.x - view1->pos.x)); + Center.y = view1->pos.y + (weight * (view2->pos.y - view1->pos.y)); + Center.z = view1->pos.z + (weight * (view2->pos.z - view1->pos.z)); + CRot.x = view1->rot.x + (weight * (view2->rot.x - view1->rot.x)); + CRot.y = view1->rot.y + (weight * (view2->rot.y - view1->rot.y)); + CRot.z = view1->rot.z + (weight * (view2->rot.z - view1->rot.z)); } void fn_1_1C44(s32 arg0, s32 arg1) { - Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0]; - temp_r31->unk4 += arg1; - temp_r31->unk12 = 16; + Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0]; + temp_r31->unk4 += arg1; + temp_r31->unk12 = 16; } s32 fn_1_1C88(s32 arg0) { - Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0]; - return temp_r31->unk4; + Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0]; + return temp_r31->unk4; } s32 fn_1_1CB8(void) { - s32 temp_r31 = fn_1_1C88(0); - s32 temp_r30 = fn_1_1C88(1); - if(temp_r31 == temp_r30) { - return 0; - } - if(temp_r31 > temp_r30) { - return -1; - } else { - return 1; - } + s32 temp_r31 = fn_1_1C88(0); + s32 temp_r30 = fn_1_1C88(1); + if (temp_r31 == temp_r30) { + return 0; + } + if (temp_r31 > temp_r30) { + return -1; + } + else { + return 1; + } } s16 fn_1_1D44(void) { - return lbl_1_bss_3C2; + return lbl_1_bss_3C2; } s32 fn_1_1D54(void) { - return lbl_1_bss_10[0]; + return lbl_1_bss_10[0]; } void fn_1_1D64(s32 arg0) { - lbl_1_bss_10[0] = arg0; + lbl_1_bss_10[0] = arg0; } s32 fn_1_1D74(s32 arg0) { - return lbl_1_bss_3A0[arg0]; + return lbl_1_bss_3A0[arg0]; } s32 fn_1_1D8C(void) { - return lbl_1_bss_3AA; + return lbl_1_bss_3AA; } void fn_1_1D9C(void) { - lbl_1_bss_3A8 = 1; + lbl_1_bss_3A8 = 1; } diff --git a/src/REL/m434Dll/map.c b/src/REL/m434Dll/map.c index ff42bdf1..ee77f381 100644 --- a/src/REL/m434Dll/map.c +++ b/src/REL/m434Dll/map.c @@ -1,57 +1,57 @@ +#include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfdraw.h" -#include "game/hsfmotion.h" #include "game/audio.h" -#include "game/wipe.h" -#include "game/sprite.h" #include "game/frand.h" +#include "game/hsfmotion.h" +#include "game/sprite.h" +#include "game/wipe.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" #include "REL/m434Dll.h" -#include "math.h" #include "ext_math.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "math.h" +#include "version.h" typedef struct bss_2468_data { - Vec unk0; - u16 unkC; + Vec unk0; + u16 unkC; } Bss2468Data; typedef struct bss_450_data { - void *unk0; - u32 unk4; + void *unk0; + u32 unk4; } Bss450Data; typedef struct bss_3F0_data { - void *unk0; - u16 unk4; - u16 unk6; - u16 unk8; - u16 unkA; - u32 unkC; - s32 unk10; + void *unk0; + u16 unk4; + u16 unk6; + u16 unk8; + u16 unkA; + u32 unkC; + s32 unk10; } Bss3F0Data; typedef struct struct_data100 { - u16 unk0; - u16 unk2; - u16 unk4; - u16 unk6; - u16 unk8; + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; + u16 unk8; } StructData100; StructData100 lbl_1_data_100[5] = { - { 200, 200, 200, 200, 0 }, - { 320, 240, 160, 120, 1 }, - { 640, 480, 320, 240, 1 }, - { 640, 480, 640, 480, 0 }, - { 0, 0, 0, 0, 0 }, + { 200, 200, 200, 200, 0 }, + { 320, 240, 160, 120, 1 }, + { 640, 480, 320, 240, 1 }, + { 640, 480, 640, 480, 0 }, + { 0, 0, 0, 0, 0 }, }; - omObjData *lbl_1_bss_5868; Vec lbl_1_bss_2868[1024]; Bss2468Data lbl_1_bss_2468[64]; @@ -70,17 +70,17 @@ void fn_1_1E64(omObjData *object); void fn_1_1DB0(Process *objman) { - "\0"; //Force lbl_1_data_132 to 0 - lbl_1_bss_5868 = omAddObjEx(objman, 10, 16, 0, -1, fn_1_1E64); - CenterM[1].y = -CenterM[2].y + -15.000001f; - CRotM[1].x = -CRotM[2].x; + "\0"; // Force lbl_1_data_132 to 0 + lbl_1_bss_5868 = omAddObjEx(objman, 10, 16, 0, -1, fn_1_1E64); + CenterM[1].y = -CenterM[2].y + -15.000001f; + CRotM[1].x = -CRotM[2].x; } void fn_1_28F0(void); void fn_1_1E44(void) { - fn_1_28F0(); + fn_1_28F0(); } void fn_1_26A4(omObjData *object); @@ -98,384 +98,376 @@ void fn_1_443C(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_1E64(omObjData *object) { - s32 temp_r30; - Vec *temp_r29; - HsfVector2f *temp_r28; - s32 temp_r27; - AnimData *temp_r26; - - object->model[9] = Hu3DHookFuncCreate(fn_1_3CC8); - Hu3DModelLayerSet(object->model[9], 1); - Hu3DModelCameraSet(object->model[9], 1); - object->model[1] = Hu3DModelCreateFile(0x410002); - Hu3DModelLayerSet(object->model[1], 2); - Hu3DModelCameraSet(object->model[1], 2); - object->model[0] = Hu3DModelCreateFile(0x410000); - Hu3DModelLayerSet(object->model[0], 2); - Hu3DModelCameraSet(object->model[0], 8); - object->model[8] = Hu3DModelCreateFile(0x410001); - Hu3DModelLayerSet(object->model[8], 2); - Hu3DModelCameraSet(object->model[8], 4); - object->model[3] = Hu3DModelCreateFile(0x410008); - Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000001); - Hu3DModelLayerSet(object->model[3], 2); - Hu3DModelCameraSet(object->model[3], 8); - object->model[4] = Hu3DModelCreateFile(0x410009); - Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001); - Hu3DModelLayerSet(object->model[4], 2); - Hu3DModelCameraSet(object->model[4], 8); - object->model[2] = Hu3DHookFuncCreate(fn_1_2978); - Hu3DModelLayerSet(object->model[2], 3); - Hu3DModelCameraSet(object->model[2], 8); - temp_r29 = lbl_1_bss_2868; - for(temp_r30=0; temp_r30<32; temp_r30++) { - for(temp_r27=0; temp_r27<32; temp_r29++, temp_r27++) { - temp_r29->x = -700.0f+((1400.0f*temp_r27)/31.0f); - temp_r29->y = -15.000001f; - temp_r29->z = -600.0f+((1200.0f*temp_r30)/31.0f); - if(temp_r30 & 0x1) { - temp_r29->x += 700.0f/31.0f; - } - } - } - DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868)); - temp_r28 = lbl_1_bss_464; - for(temp_r30=0; temp_r30<1024; temp_r30++, temp_r28++) { - temp_r28->x = 360.0f*((1.0f/256.0f)*frand8()); - temp_r28->y = 2.0f*((1.0f/256.0f)*frand8())+0.5f; - } - memset(lbl_1_bss_2468, 0, sizeof(lbl_1_bss_2468)); - lbl_1_bss_2464 = 0; - lbl_1_bss_450.unk4 = 16384; - lbl_1_bss_450.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_450.unk4, MEMORY_DEFAULT_NUM); - DCInvalidateRange(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); - fn_1_3004(); - lbl_1_bss_440.unk4 = 16384; - lbl_1_bss_440.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_440.unk4, MEMORY_DEFAULT_NUM); - fn_1_3128(); - lbl_1_bss_45C = HuSprAnimReadFile(0x3D0019); - lbl_1_bss_458 = HuSprAnimReadFile(0x41000A); - HuDataDirClose(0x3D0000); - for(temp_r30=0; temp_r30<4; temp_r30++) { - lbl_1_bss_3F0[temp_r30].unk4 = lbl_1_data_100[temp_r30].unk0; - lbl_1_bss_3F0[temp_r30].unk6 = lbl_1_data_100[temp_r30].unk2; - lbl_1_bss_3F0[temp_r30].unk8 = lbl_1_data_100[temp_r30].unk4; - lbl_1_bss_3F0[temp_r30].unkA = lbl_1_data_100[temp_r30].unk6; - lbl_1_bss_3F0[temp_r30].unk10 = lbl_1_data_100[temp_r30].unk8; - lbl_1_bss_3F0[temp_r30].unkC = GXGetTexBufferSize(lbl_1_bss_3F0[temp_r30].unk8, lbl_1_bss_3F0[temp_r30].unkA, GX_TF_RGB565, GX_FALSE, 0); - lbl_1_bss_3F0[temp_r30].unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_3F0[temp_r30].unkC, MEMORY_DEFAULT_NUM); - memset(lbl_1_bss_3F0[temp_r30].unk0, 0, lbl_1_bss_3F0[temp_r30].unkC); - } - object->model[5] = Hu3DHookFuncCreate(fn_1_33A4); - Hu3DModelLayerSet(object->model[5], 3); - Hu3DModelCameraSet(object->model[5], 2); - object->model[6] = Hu3DHookFuncCreate(fn_1_349C); - Hu3DModelLayerSet(object->model[6], 3); - Hu3DModelCameraSet(object->model[6], 4); - object->model[7] = Hu3DHookFuncCreate(fn_1_3594); - Hu3DModelLayerSet(object->model[7], 5); - Hu3DModelCameraSet(object->model[7], 4); - temp_r26 = HuSprAnimReadFile(0x41000B); - object->model[10] = Hu3DParticleCreate(temp_r26, 100); - Hu3DParticleHookSet(object->model[10], fn_1_443C); - Hu3DModelAttrSet(object->model[10], 1); - Hu3DModelLayerSet(object->model[10], 4); - Hu3DModelCameraSet(object->model[10], 8); - object->func = fn_1_26A4; + s32 temp_r30; + Vec *temp_r29; + HsfVector2f *temp_r28; + s32 temp_r27; + AnimData *temp_r26; + + object->model[9] = Hu3DHookFuncCreate(fn_1_3CC8); + Hu3DModelLayerSet(object->model[9], 1); + Hu3DModelCameraSet(object->model[9], 1); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M434, 0x02)); + Hu3DModelLayerSet(object->model[1], 2); + Hu3DModelCameraSet(object->model[1], 2); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M434, 0x00)); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DModelCameraSet(object->model[0], 8); + object->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M434, 0x01)); + Hu3DModelLayerSet(object->model[8], 2); + Hu3DModelCameraSet(object->model[8], 4); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M434, 0x08)); + Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000001); + Hu3DModelLayerSet(object->model[3], 2); + Hu3DModelCameraSet(object->model[3], 8); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M434, 0x09)); + Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001); + Hu3DModelLayerSet(object->model[4], 2); + Hu3DModelCameraSet(object->model[4], 8); + object->model[2] = Hu3DHookFuncCreate(fn_1_2978); + Hu3DModelLayerSet(object->model[2], 3); + Hu3DModelCameraSet(object->model[2], 8); + temp_r29 = lbl_1_bss_2868; + for (temp_r30 = 0; temp_r30 < 32; temp_r30++) { + for (temp_r27 = 0; temp_r27 < 32; temp_r29++, temp_r27++) { + temp_r29->x = -700.0f + ((1400.0f * temp_r27) / 31.0f); + temp_r29->y = -15.000001f; + temp_r29->z = -600.0f + ((1200.0f * temp_r30) / 31.0f); + if (temp_r30 & 0x1) { + temp_r29->x += 700.0f / 31.0f; + } + } + } + DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868)); + temp_r28 = lbl_1_bss_464; + for (temp_r30 = 0; temp_r30 < 1024; temp_r30++, temp_r28++) { + temp_r28->x = 360.0f * ((1.0f / 256.0f) * frand8()); + temp_r28->y = 2.0f * ((1.0f / 256.0f) * frand8()) + 0.5f; + } + memset(lbl_1_bss_2468, 0, sizeof(lbl_1_bss_2468)); + lbl_1_bss_2464 = 0; + lbl_1_bss_450.unk4 = 16384; + lbl_1_bss_450.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_450.unk4, MEMORY_DEFAULT_NUM); + DCInvalidateRange(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); + fn_1_3004(); + lbl_1_bss_440.unk4 = 16384; + lbl_1_bss_440.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_440.unk4, MEMORY_DEFAULT_NUM); + fn_1_3128(); + lbl_1_bss_45C = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x19)); + lbl_1_bss_458 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M434, 0x0A)); + HuDataDirClose(DATADIR_M430); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + lbl_1_bss_3F0[temp_r30].unk4 = lbl_1_data_100[temp_r30].unk0; + lbl_1_bss_3F0[temp_r30].unk6 = lbl_1_data_100[temp_r30].unk2; + lbl_1_bss_3F0[temp_r30].unk8 = lbl_1_data_100[temp_r30].unk4; + lbl_1_bss_3F0[temp_r30].unkA = lbl_1_data_100[temp_r30].unk6; + lbl_1_bss_3F0[temp_r30].unk10 = lbl_1_data_100[temp_r30].unk8; + lbl_1_bss_3F0[temp_r30].unkC = GXGetTexBufferSize(lbl_1_bss_3F0[temp_r30].unk8, lbl_1_bss_3F0[temp_r30].unkA, GX_TF_RGB565, GX_FALSE, 0); + lbl_1_bss_3F0[temp_r30].unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_3F0[temp_r30].unkC, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_3F0[temp_r30].unk0, 0, lbl_1_bss_3F0[temp_r30].unkC); + } + object->model[5] = Hu3DHookFuncCreate(fn_1_33A4); + Hu3DModelLayerSet(object->model[5], 3); + Hu3DModelCameraSet(object->model[5], 2); + object->model[6] = Hu3DHookFuncCreate(fn_1_349C); + Hu3DModelLayerSet(object->model[6], 3); + Hu3DModelCameraSet(object->model[6], 4); + object->model[7] = Hu3DHookFuncCreate(fn_1_3594); + Hu3DModelLayerSet(object->model[7], 5); + Hu3DModelCameraSet(object->model[7], 4); + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M434, 0x0B)); + object->model[10] = Hu3DParticleCreate(temp_r26, 100); + Hu3DParticleHookSet(object->model[10], fn_1_443C); + Hu3DModelAttrSet(object->model[10], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[10], 4); + Hu3DModelCameraSet(object->model[10], 8); + object->func = fn_1_26A4; } HsfAttribute *fn_1_2608(s16 model, char *name) { - HsfData *temp_r31; - HsfAttribute *temp_r30; - s32 temp_r29; - ModelData *temp_r28; - HsfBitmap *temp_r27; - temp_r28 = &Hu3DData[model]; - temp_r31 = temp_r28->hsfData; - temp_r30 = temp_r31->attribute; - for(temp_r29=0; temp_r29attributeCnt; temp_r29++, temp_r30++) { - temp_r27 = temp_r30->bitmap; - if(strcmp(name, temp_r27->name) == 0) { - break; - } - } - if(temp_r29 >= temp_r31->attributeCnt) { - return NULL; - } - return temp_r30; + HsfData *temp_r31; + HsfAttribute *temp_r30; + s32 temp_r29; + ModelData *temp_r28; + HsfBitmap *temp_r27; + temp_r28 = &Hu3DData[model]; + temp_r31 = temp_r28->hsfData; + temp_r30 = temp_r31->attribute; + for (temp_r29 = 0; temp_r29 < temp_r31->attributeCnt; temp_r29++, temp_r30++) { + temp_r27 = temp_r30->bitmap; + if (strcmp(name, temp_r27->name) == 0) { + break; + } + } + if (temp_r29 >= temp_r31->attributeCnt) { + return NULL; + } + return temp_r30; } void fn_1_26A4(omObjData *object) { - s32 temp_r31; - Bss2468Data *temp_r30; - HsfVector2f *temp_r29; - HsfAttribute *temp_r27; - Vec *temp_r25; - s32 temp_r23; - s32 temp_r22; - Bss2468Data *sp8[64]; - - temp_r27 = fn_1_2608(object->model[1], "sora"); - if(temp_r27 != NULL) { - temp_r27->unk30 += 0.0001f; - temp_r27->unk34 -= 0.00005f; - } - temp_r30 = lbl_1_bss_2468; - temp_r22 = 0; - for(temp_r31=0; temp_r31<64; temp_r31++, temp_r30++) { - if(temp_r30->unkC) { - sp8[temp_r22++] = temp_r30; - } - } - temp_r25 = lbl_1_bss_2868; - temp_r29 = lbl_1_bss_464; - for(temp_r31=0; temp_r31<32; temp_r31++) { - for(temp_r23=0; temp_r23<32; temp_r23++, temp_r25++, temp_r29++) { - temp_r25->y = -15.000001f+(2.0f*sind(temp_r29->x)); - temp_r29->x += temp_r29->y; - } - } - DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868)); - for(temp_r31=0; temp_r31unkC--; - } - CenterM[1].y = -15.000001f+(-CenterM[2].y); - CRotM[1].x = -CRotM[2].x; + s32 temp_r31; + Bss2468Data *temp_r30; + HsfVector2f *temp_r29; + HsfAttribute *temp_r27; + Vec *temp_r25; + s32 temp_r23; + s32 temp_r22; + Bss2468Data *sp8[64]; + + temp_r27 = fn_1_2608(object->model[1], "sora"); + if (temp_r27 != NULL) { + temp_r27->unk30 += 0.0001f; + temp_r27->unk34 -= 0.00005f; + } + temp_r30 = lbl_1_bss_2468; + temp_r22 = 0; + for (temp_r31 = 0; temp_r31 < 64; temp_r31++, temp_r30++) { + if (temp_r30->unkC) { + sp8[temp_r22++] = temp_r30; + } + } + temp_r25 = lbl_1_bss_2868; + temp_r29 = lbl_1_bss_464; + for (temp_r31 = 0; temp_r31 < 32; temp_r31++) { + for (temp_r23 = 0; temp_r23 < 32; temp_r23++, temp_r25++, temp_r29++) { + temp_r25->y = -15.000001f + (2.0f * sind(temp_r29->x)); + temp_r29->x += temp_r29->y; + } + } + DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868)); + for (temp_r31 = 0; temp_r31 < temp_r22; temp_r31++) { + temp_r30 = sp8[temp_r31]; + temp_r30->unkC--; + } + CenterM[1].y = -15.000001f + (-CenterM[2].y); + CRotM[1].x = -CRotM[2].x; } void fn_1_28F0(void) { - s32 temp_r31; - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(lbl_1_bss_3F0[temp_r31].unk0 != NULL) { - HuMemDirectFree(lbl_1_bss_3F0[temp_r31].unk0); - lbl_1_bss_3F0[temp_r31].unk0 = NULL; - } - } + s32 temp_r31; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (lbl_1_bss_3F0[temp_r31].unk0 != NULL) { + HuMemDirectFree(lbl_1_bss_3F0[temp_r31].unk0); + lbl_1_bss_3F0[temp_r31].unk0 = NULL; + } + } } GXColor lbl_1_data_139 = { 255, 255, 255, 64 }; -float lbl_1_data_140[2][3] = { - 0.012f, 0, 0, - 0, 0.012f, 0 -}; +float lbl_1_data_140[2][3] = { 0.012f, 0, 0, 0, 0.012f, 0 }; -float lbl_1_data_158[2][3] = { - 0, 0, 0.5f, - 0, 0.5f, 0 -}; +float lbl_1_data_158[2][3] = { 0, 0, 0.5f, 0, 0.5f, 0 }; void fn_1_2978(ModelData *model, Mtx mtx) { - float temp_f31; - - Mtx sp1AC; - Mtx sp17C; - Mtx sp14C; - Mtx sp11C; - Mtx spEC; - Mtx spBC; - Mtx sp8C; - Mtx sp5C; - Mtx sp2C; - GXTexObj spC; - GXLoadPosMtxImm(mtx, GX_PNMTX0); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - GXSetNumTexGens(4); - GXInitTexObj(&spC, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXLoadTexObj(&spC, GX_TEXMAP0); - GXInitTexObj(&spC, lbl_1_bss_3F0[1].unk0, lbl_1_bss_3F0[1].unk8, lbl_1_bss_3F0[1].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXLoadTexObj(&spC, GX_TEXMAP1); - MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - MTXInverse(Hu3DCameraMtx, spBC); - MTXConcat(spBC, mtx, spBC); - MTXConcat(sp1AC, Hu3DCameraMtx, sp8C); - MTXConcat(sp8C, spBC, spBC); - GXLoadTexMtxImm(spBC, GX_TEXMTX0, GX_MTX3x4); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); - MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, 0.5f, 0.5f, 0.5f); - MTXInverse(Hu3DCameraMtx, sp5C); - MTXConcat(sp5C, mtx, sp5C); - MTXConcat(sp1AC, Hu3DCameraMtx, sp2C); - MTXConcat(sp2C, sp5C, sp5C); - GXLoadTexMtxImm(sp5C, GX_TEXMTX1, GX_MTX3x4); - GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX1); - GXSetNumTevStages(2); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); - GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevColor(GX_TEVSTAGE1, lbl_1_data_139); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); - HuSprTexLoad(lbl_1_bss_45C, 0, GX_TEXMAP2, GX_REPEAT, GX_REPEAT, GX_LINEAR); - GXInitTexObj(&spC, lbl_1_bss_3F0[0].unk0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXLoadTexObj(&spC, GX_TEXMAP3); - GXSetNumIndStages(2); - MTXRotDeg(sp11C, 'X', -90.0f); - temp_f31 = 1.0f/600.0f; - MTXScale(sp14C, temp_f31, temp_f31, temp_f31); - MTXConcat(sp14C, sp11C, sp17C); - sp17C[0][1] = -0.03f; - GXLoadTexMtxImm(sp17C, GX_TEXMTX2, GX_MTX2x4); - GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX2); - GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); - GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); - GXSetIndTexMtx(GX_ITM_0, lbl_1_data_140, 0); - GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); - MTXRotDeg(sp11C, 'X', -90.0f); - temp_f31 = 1.0f/1200.0f; - MTXScale(sp14C, temp_f31, temp_f31, temp_f31); - MTXConcat(sp14C, sp11C, sp17C); - MTXTrans(spEC, 0.5f, 0.5f, 0.0f); - MTXConcat(spEC, sp17C, sp17C); - GXLoadTexMtxImm(sp17C, GX_TEXMTX3, GX_MTX2x4); - GXSetTexCoordGen(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX3); - GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD3, GX_TEXMAP3); - GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); - GXSetIndTexMtx(GX_ITM_1, lbl_1_data_158, 0); - GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetArray(GX_VA_POS, lbl_1_bss_2868, sizeof(Vec)); - GXSetCullMode(GX_CULL_BACK); - GXCallDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); - GXSetNumIndStages(0); - GXSetTevDirect(GX_TEVSTAGE0); - GXSetTevDirect(GX_TEVSTAGE1); + float temp_f31; + + Mtx sp1AC; + Mtx sp17C; + Mtx sp14C; + Mtx sp11C; + Mtx spEC; + Mtx spBC; + Mtx sp8C; + Mtx sp5C; + Mtx sp2C; + GXTexObj spC; + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetNumTexGens(4); + GXInitTexObj(&spC, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&spC, GX_TEXMAP0); + GXInitTexObj(&spC, lbl_1_bss_3F0[1].unk0, lbl_1_bss_3F0[1].unk8, lbl_1_bss_3F0[1].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&spC, GX_TEXMAP1); + MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, spBC); + MTXConcat(spBC, mtx, spBC); + MTXConcat(sp1AC, Hu3DCameraMtx, sp8C); + MTXConcat(sp8C, spBC, spBC); + GXLoadTexMtxImm(spBC, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, 0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, sp5C); + MTXConcat(sp5C, mtx, sp5C); + MTXConcat(sp1AC, Hu3DCameraMtx, sp2C); + MTXConcat(sp2C, sp5C, sp5C); + GXLoadTexMtxImm(sp5C, GX_TEXMTX1, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX1); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColor(GX_TEVSTAGE1, lbl_1_data_139); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_45C, 0, GX_TEXMAP2, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXInitTexObj(&spC, lbl_1_bss_3F0[0].unk0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&spC, GX_TEXMAP3); + GXSetNumIndStages(2); + MTXRotDeg(sp11C, 'X', -90.0f); + temp_f31 = 1.0f / 600.0f; + MTXScale(sp14C, temp_f31, temp_f31, temp_f31); + MTXConcat(sp14C, sp11C, sp17C); + sp17C[0][1] = -0.03f; + GXLoadTexMtxImm(sp17C, GX_TEXMTX2, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX2); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetIndTexMtx(GX_ITM_0, lbl_1_data_140, 0); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); + MTXRotDeg(sp11C, 'X', -90.0f); + temp_f31 = 1.0f / 1200.0f; + MTXScale(sp14C, temp_f31, temp_f31, temp_f31); + MTXConcat(sp14C, sp11C, sp17C); + MTXTrans(spEC, 0.5f, 0.5f, 0.0f); + MTXConcat(spEC, sp17C, sp17C); + GXLoadTexMtxImm(sp17C, GX_TEXMTX3, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX3); + GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD3, GX_TEXMAP3); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + GXSetIndTexMtx(GX_ITM_1, lbl_1_data_158, 0); + GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, lbl_1_bss_2868, sizeof(Vec)); + GXSetCullMode(GX_CULL_BACK); + GXCallDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); } void fn_1_3004(void) { - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - GXBeginDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); - for(temp_r30=0; temp_r30<31; temp_r30++) { - temp_r29 = temp_r30*32; - GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 64); - if(temp_r30 & 0x1) { - for(temp_r31=0; temp_r31<32; temp_r31++) { - GXPosition1x16(temp_r29+temp_r31+32); - GXPosition1x16(temp_r29+temp_r31); - } - } else { - for(temp_r31=31; temp_r31>=0; temp_r31--) { - GXPosition1x16(temp_r29+temp_r31); - GXPosition1x16(temp_r29+temp_r31+32); - - } - } - } - lbl_1_bss_450.unk4 = GXEndDisplayList(); - DCFlushRangeNoSync(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + GXBeginDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); + for (temp_r30 = 0; temp_r30 < 31; temp_r30++) { + temp_r29 = temp_r30 * 32; + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 64); + if (temp_r30 & 0x1) { + for (temp_r31 = 0; temp_r31 < 32; temp_r31++) { + GXPosition1x16(temp_r29 + temp_r31 + 32); + GXPosition1x16(temp_r29 + temp_r31); + } + } + else { + for (temp_r31 = 31; temp_r31 >= 0; temp_r31--) { + GXPosition1x16(temp_r29 + temp_r31); + GXPosition1x16(temp_r29 + temp_r31 + 32); + } + } + } + lbl_1_bss_450.unk4 = GXEndDisplayList(); + DCFlushRangeNoSync(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); } void fn_1_3128(void) { - GXBeginDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition2f32(-0.5f, -0.5f); - GXTexCoord2f32(0, 0); - GXPosition2f32(0.5f, -0.5f); - GXTexCoord2f32(1, 0); - GXPosition2f32(0.5f, 0.5f); - GXTexCoord2f32(1, 1); - GXPosition2f32(-0.5f, 0.5f); - GXTexCoord2f32(0, 1); - GXEnd(); - lbl_1_bss_440.unk4 = GXEndDisplayList(); - DCFlushRangeNoSync(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); + GXBeginDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(-0.5f, -0.5f); + GXTexCoord2f32(0, 0); + GXPosition2f32(0.5f, -0.5f); + GXTexCoord2f32(1, 0); + GXPosition2f32(0.5f, 0.5f); + GXTexCoord2f32(1, 1); + GXPosition2f32(-0.5f, 0.5f); + GXTexCoord2f32(0, 1); + GXEnd(); + lbl_1_bss_440.unk4 = GXEndDisplayList(); + DCFlushRangeNoSync(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); } void fn_1_32DC(Bss3F0Data *arg0, GXBool arg1) { - GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE); - GXSetTexCopySrc(0, 0, arg0->unk4, arg0->unk6); - GXSetTexCopyDst(arg0->unk8, arg0->unkA, GX_TF_RGB565, arg0->unk10); - GXSetCopyClear(BGColor, 0xFFFFFF); - GXCopyTex(arg0->unk0, arg1); - GXPixModeSync(); - DCFlushRange(arg0->unk0, arg0->unkC); - + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE); + GXSetTexCopySrc(0, 0, arg0->unk4, arg0->unk6); + GXSetTexCopyDst(arg0->unk8, arg0->unkA, GX_TF_RGB565, arg0->unk10); + GXSetCopyClear(BGColor, 0xFFFFFF); + GXCopyTex(arg0->unk0, arg1); + GXPixModeSync(); + DCFlushRange(arg0->unk0, arg0->unkC); } void fn_1_33A4(ModelData *model, Mtx mtx) { - fn_1_32DC(&lbl_1_bss_3F0[1], GX_TRUE); - + fn_1_32DC(&lbl_1_bss_3F0[1], GX_TRUE); } void fn_1_349C(ModelData *model, Mtx mtx) { - fn_1_32DC(&lbl_1_bss_3F0[2], GX_TRUE); + fn_1_32DC(&lbl_1_bss_3F0[2], GX_TRUE); } void fn_1_3594(ModelData *model, Mtx mtx) { - Mtx sp90; - Mtx sp60; - Mtx sp30; - GXTexObj sp10; - - fn_1_32DC(&lbl_1_bss_3F0[3], GX_FALSE); - GXLoadPosMtxImm(mtx, GX_PNMTX0); - MTXLightPerspective(sp90, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - MTXInverse(Hu3DCameraMtx, sp60); - MTXConcat(sp60, mtx, sp60); - MTXConcat(sp90, Hu3DCameraMtx, sp30); - MTXConcat(sp30, sp60, sp60); - GXLoadTexMtxImm(sp60, GX_TEXMTX0, GX_MTX3x4); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(1); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); - GXSetNumTevStages(1); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); - GXInitTexObj(&sp10, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXLoadTexObj(&sp10, GX_TEXMAP0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-1000.0f, -5.000001f, -1000.0f); - GXPosition3f32(1000.0f, -5.000001f, -1000.0f); - GXPosition3f32(1000.0f, -5.000001f, 1000.0f); - GXPosition3f32(-1000.0f, -5.000001f, 1000.0f); - GXEnd(); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-1000.0f, -70.0f, -1000.0f); - GXPosition3f32(1000.0f, -70.0f, -1000.0f); - GXPosition3f32(1000.0f, -70.0f, 1000.0f); - GXPosition3f32(-1000.0f, -70.0f, 1000.0f); - GXEnd(); - fn_1_32DC(&lbl_1_bss_3F0[2], GX_FALSE); - GXInitTexObj(&sp10, lbl_1_bss_3F0[3].unk0, lbl_1_bss_3F0[3].unk8, lbl_1_bss_3F0[3].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXLoadTexObj(&sp10, GX_TEXMAP0); - GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-1000.0f, -5.000001f, -1000.0f); - GXPosition3f32(1000.0f, -5.000001f, -1000.0f); - GXPosition3f32(1000.0f, -5.000001f, 1000.0f); - GXPosition3f32(-1000.0f, -5.000001f, 1000.0f); - GXEnd(); + Mtx sp90; + Mtx sp60; + Mtx sp30; + GXTexObj sp10; + + fn_1_32DC(&lbl_1_bss_3F0[3], GX_FALSE); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + MTXLightPerspective(sp90, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, sp60); + MTXConcat(sp60, mtx, sp60); + MTXConcat(sp90, Hu3DCameraMtx, sp30); + MTXConcat(sp30, sp60, sp60); + GXLoadTexMtxImm(sp60, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXInitTexObj(&sp10, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp10, GX_TEXMAP0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-1000.0f, -5.000001f, -1000.0f); + GXPosition3f32(1000.0f, -5.000001f, -1000.0f); + GXPosition3f32(1000.0f, -5.000001f, 1000.0f); + GXPosition3f32(-1000.0f, -5.000001f, 1000.0f); + GXEnd(); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-1000.0f, -70.0f, -1000.0f); + GXPosition3f32(1000.0f, -70.0f, -1000.0f); + GXPosition3f32(1000.0f, -70.0f, 1000.0f); + GXPosition3f32(-1000.0f, -70.0f, 1000.0f); + GXEnd(); + fn_1_32DC(&lbl_1_bss_3F0[2], GX_FALSE); + GXInitTexObj(&sp10, lbl_1_bss_3F0[3].unk0, lbl_1_bss_3F0[3].unk8, lbl_1_bss_3F0[3].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp10, GX_TEXMAP0); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-1000.0f, -5.000001f, -1000.0f); + GXPosition3f32(1000.0f, -5.000001f, -1000.0f); + GXPosition3f32(1000.0f, -5.000001f, 1000.0f); + GXPosition3f32(-1000.0f, -5.000001f, 1000.0f); + GXEnd(); } GXColor lbl_1_data_170 = { 255, 0, 0, 255 }; @@ -484,133 +476,132 @@ GXColor lbl_1_data_178 = { 0, 126, 126, 255 }; void fn_1_3CC8(ModelData *model, Mtx mtx) { - - float temp_f31; - Mtx sp44; - Mtx sp14; - Bss2468Data *temp_r31; - s32 temp_r30; - s32 temp_r29; - - MTXOrtho(sp44, 0, 480, 0, 640, 0, 100); - GXSetProjection(sp44, GX_ORTHOGRAPHIC); - MTXIdentity(sp14); - GXLoadPosMtxImm(sp14, GX_PNMTX0); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); - GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_178); - GXSetNumTexGens(0); - HuSprTexLoad(lbl_1_bss_458, 0, GX_TEXMAP0, GX_REPEAT, GX_REPEAT, GX_LINEAR); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); - - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); - GXSetNumTevStages(1); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); - GXSetScissor(0, 0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition2u16(0, 0); - GXPosition2u16(lbl_1_bss_3F0[0].unk8, 0); - GXPosition2u16(lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA); - GXPosition2u16(0, lbl_1_bss_3F0[0].unkA); - GXEnd(); - GXSetNumTexGens(1); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); - GXSetNumTevStages(1); - - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXClearVtxDesc(); - - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); - GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); - temp_r29 = lbl_1_bss_2464; - for(temp_r30=0; temp_r30<64; temp_r29 = (temp_r29+1)%64, temp_r30++) { - temp_r31 = &lbl_1_bss_2468[temp_r29]; - if(temp_r31->unkC == 0) { - continue; - } - temp_f31 = (0.2f+cosd((90.0f*temp_r31->unkC)/60.0f))*128.0f; - lbl_1_data_174.a = 255.0f*sind((90.0f*temp_r31->unkC)/60.0f); - GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_174); - MTXScale(sp14, 0.5f*temp_f31, 0.5f*temp_f31, 1.0f); - mtxTransCat(sp14, (200.0f*(600.0f+temp_r31->unk0.x))/1200.0f, (200.0f*(600.0f+temp_r31->unk0.z))/1200.0f, 0); - GXLoadPosMtxImm(sp14, GX_PNMTX0); - GXCallDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); - } - fn_1_32DC(&lbl_1_bss_3F0[0], GX_TRUE); + + float temp_f31; + Mtx sp44; + Mtx sp14; + Bss2468Data *temp_r31; + s32 temp_r30; + s32 temp_r29; + + MTXOrtho(sp44, 0, 480, 0, 640, 0, 100); + GXSetProjection(sp44, GX_ORTHOGRAPHIC); + MTXIdentity(sp14); + GXLoadPosMtxImm(sp14, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_178); + GXSetNumTexGens(0); + HuSprTexLoad(lbl_1_bss_458, 0, GX_TEXMAP0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetScissor(0, 0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(0, 0); + GXPosition2u16(lbl_1_bss_3F0[0].unk8, 0); + GXPosition2u16(lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA); + GXPosition2u16(0, lbl_1_bss_3F0[0].unkA); + GXEnd(); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXClearVtxDesc(); + + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + temp_r29 = lbl_1_bss_2464; + for (temp_r30 = 0; temp_r30 < 64; temp_r29 = (temp_r29 + 1) % 64, temp_r30++) { + temp_r31 = &lbl_1_bss_2468[temp_r29]; + if (temp_r31->unkC == 0) { + continue; + } + temp_f31 = (0.2f + cosd((90.0f * temp_r31->unkC) / REFRESH_RATE)) * 128.0f; + lbl_1_data_174.a = 255.0f * sind((90.0f * temp_r31->unkC) / REFRESH_RATE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_174); + MTXScale(sp14, 0.5f * temp_f31, 0.5f * temp_f31, 1.0f); + mtxTransCat(sp14, (200.0f * (600.0f + temp_r31->unk0.x)) / 1200.0f, (200.0f * (600.0f + temp_r31->unk0.z)) / 1200.0f, 0); + GXLoadPosMtxImm(sp14, GX_PNMTX0); + GXCallDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); + } + fn_1_32DC(&lbl_1_bss_3F0[0], GX_TRUE); } void fn_1_43AC(Vec *arg0) { - Bss2468Data *temp_r31; - temp_r31 = &lbl_1_bss_2468[lbl_1_bss_2464]; - if(temp_r31->unkC == 0) { - temp_r31->unk0.x = arg0->x; - temp_r31->unk0.y = arg0->y; - temp_r31->unk0.z = arg0->z; - temp_r31->unkC = 60; - lbl_1_bss_2464 = (lbl_1_bss_2464+1)%64; - return; - } + Bss2468Data *temp_r31; + temp_r31 = &lbl_1_bss_2468[lbl_1_bss_2464]; + if (temp_r31->unkC == 0) { + temp_r31->unk0.x = arg0->x; + temp_r31->unk0.y = arg0->y; + temp_r31->unk0.z = arg0->z; + temp_r31->unkC = REFRESH_RATE; + lbl_1_bss_2464 = (lbl_1_bss_2464 + 1) % 64; + return; + } } void fn_1_443C(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_00 == 0) { - particle->unk_00 = 1; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { - temp_r31->unk2C = 10; - temp_f31 = ((1.0f/256.0f)*frand8())*360.0f; - temp_r31->unk34.x = (0.2f*sind(temp_f31))*100.0f; - temp_r31->unk34.y = 0; - temp_r31->unk34.z = (0.2f*cosd(temp_f31))*100.0f; - temp_f30 = (100.0f*(0.025f*((1.0f/256.0f)*frand8())))+2.5f; - temp_r31->unk08.x = temp_f30*sind(temp_f31); - temp_r31->unk08.y = (100.0f*(0.025f*(((1.0f/256.0f)*(s32)(frand() & 0x1FF))-1.0f)))+7.5000005f; - temp_r31->unk08.z = temp_f30*cosd(temp_f31); - temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255; - temp_r31->unk40.a = (frand() & 0x1F)+16; - } - } - temp_r28 = 0; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk40.a == 0) { - temp_r28++; - continue; - } - temp_r31->unk34.x += temp_r31->unk08.x; - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk34.z += temp_r31->unk08.z; - temp_r31->unk08.y += -0.5f; - temp_r31->unk40.a--; - } - if(temp_r28 == particle->unk_30) { - model->attr |= 0x1; - } - DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_00 == 0) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) { + temp_r31->unk2C = 10; + temp_f31 = ((1.0f / 256.0f) * frand8()) * 360.0f; + temp_r31->unk34.x = (0.2f * sind(temp_f31)) * 100.0f; + temp_r31->unk34.y = 0; + temp_r31->unk34.z = (0.2f * cosd(temp_f31)) * 100.0f; + temp_f30 = (100.0f * (0.025f * ((1.0f / 256.0f) * frand8()))) + 2.5f; + temp_r31->unk08.x = temp_f30 * sind(temp_f31); + temp_r31->unk08.y = (100.0f * (0.025f * (((1.0f / 256.0f) * (s32)(frand() & 0x1FF)) - 1.0f))) + 7.5000005f; + temp_r31->unk08.z = temp_f30 * cosd(temp_f31); + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255; + temp_r31->unk40.a = (frand() & 0x1F) + 16; + } + } + temp_r28 = 0; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk40.a == 0) { + temp_r28++; + continue; + } + temp_r31->unk34.x += temp_r31->unk08.x; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z; + temp_r31->unk08.y += -0.5f; + temp_r31->unk40.a--; + } + if (temp_r28 == particle->unk_30) { + model->attr |= 0x1; + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_47EC(Vec *arg0) { - Hu3DModelPosSet(lbl_1_bss_5868->model[10], arg0->x, arg0->y, arg0->z); - Hu3DModelAttrReset(lbl_1_bss_5868->model[10], 1); - -} \ No newline at end of file + Hu3DModelPosSet(lbl_1_bss_5868->model[10], arg0->x, arg0->y, arg0->z); + Hu3DModelAttrReset(lbl_1_bss_5868->model[10], HU3D_ATTR_DISPOFF); +} diff --git a/src/REL/m434Dll/player.c b/src/REL/m434Dll/player.c index 7d1988e9..55ae04c8 100644 --- a/src/REL/m434Dll/player.c +++ b/src/REL/m434Dll/player.c @@ -1,143 +1,130 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/hsfman.h" +#include "game/hsfdraw.h" +#include "game/hsfmotion.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" -#include "game/audio.h" -#include "game/wipe.h" -#include "game/chrman.h" #include "game/pad.h" +#include "game/wipe.h" + -#include "game/minigame_seq.h" -#include "game/gamework_data.h" #include "REL/m434Dll.h" -#include "math.h" #include "ext_math.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "math.h" +#include "version.h" + typedef struct data_224_struct { - u16 unk0; - u16 unk2; - float unk4; - float unk8; - u32 unkC; + u16 unk0; + u16 unk2; + float unk4; + float unk8; + u32 unkC; } Data224Struct; omObjData *lbl_1_bss_5870[4]; char *lbl_1_data_190[8] = { - "dmy-itemhook-r", - "dmy-itemhook-r", - "dmy-itemhook-r", - "dmy-itemhook-r", - "dmy-itemhook-r", - "dmy-itemhook-r", - "dmy-itemhook-r", - "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", + "dmy-itemhook-r", }; char *lbl_1_data_1BC[8] = { - "itemhook-r", - "itemhook-r", - "itemhook-r", - "itemhook-r", - "itemhook-r", - "itemhook-r", - "itemhook-r", - "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", + "itemhook-r", }; -s32 lbl_1_data_1DC[2] = { - 0x410003, - 0x410004 -}; +s32 lbl_1_data_1DC[2] = { 0x410003, 0x410004 }; -Vec lbl_1_data_1E4[2] = { - { -550, 0, 550 }, - { 550, 0, 550 } -}; +Vec lbl_1_data_1E4[2] = { { -550, 0, 550 }, { 550, 0, 550 } }; -u32 lbl_1_data_1FC[10] = { - 0, - 2, - 23, - 133, - 0x41000E, - 0x410016, - 0x41001E, - 0x410026, - 0x41002E, - 0x410036 -}; +u32 lbl_1_data_1FC[10] = { 0, 2, 23, 133, 0x41000E, 0x410016, 0x41001E, 0x410026, 0x41002E, 0x410036 }; Data224Struct lbl_1_data_224[9] = { - { 0, 4, 12, 0, 0x40000001 }, - { 1, 6, 6, 0, 0x40000001 }, - { 0, 8, 6, 0, 0 }, - { 0, 5, 6, 0, 0x40000001 }, - { 1, 5, 6, 0, 0x40000001 }, - { 0, 8, 6, 30, 0 }, - { 0, 9, 6, 0, 0 }, - { 2, 0, 12, 0, 0 }, - { 3, 0, 12, 0, 0 }, + { 0, 4, 0.2f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP }, + { 1, 6, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP }, + { 0, 8, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE }, + { 0, 5, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP }, + { 1, 5, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_LOOP }, + { 0, 8, 0.1f * REFRESH_RATE, 0.5f * REFRESH_RATE, HU3D_MOTATTR_NONE }, + { 0, 9, 0.1f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE }, + { 2, 0, 0.2f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE }, + { 3, 0, 0.2f * REFRESH_RATE, 0, HU3D_MOTATTR_NONE }, }; void fn_1_4988(omObjData *object); void fn_1_4854(Process *objman) { - s16 temp_r31; - omObjData *temp_r30; - s16 temp_r29; - s32 sp8[2] = { 0, 0 }; - omMakeGroupEx(objman, 0, 4); - omGetGroupMemberListEx(objman, 0); - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r30 = lbl_1_bss_5870[temp_r31] = omAddObjEx(objman, 40, 2, 10, 0, fn_1_4988); - temp_r30->work[0] = temp_r31; - temp_r29 = fn_1_1D74(temp_r31); - temp_r30->work[1] = (temp_r29*2)+sp8[temp_r29]; - sp8[temp_r29]++; - } + s16 temp_r31; + omObjData *temp_r30; + s16 temp_r29; + s32 sp8[2] = { 0, 0 }; + omMakeGroupEx(objman, 0, 4); + omGetGroupMemberListEx(objman, 0); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r30 = lbl_1_bss_5870[temp_r31] = omAddObjEx(objman, 40, 2, 10, 0, fn_1_4988); + temp_r30->work[0] = temp_r31; + temp_r29 = fn_1_1D74(temp_r31); + temp_r30->work[1] = (temp_r29 * 2) + sp8[temp_r29]; + sp8[temp_r29]++; + } } void fn_1_4964(void) { - CharModelKill(-1); + CharModelKill(-1); } typedef struct work_4988 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - u32 unk14; - u32 unk18; - float unk1C; - float unk20; - s32 unk24; - Vec unk28; - float unk34; - u16 unk38; - s16 unk3A; - s16 unk3C; - s16 unk3E; - float unk40; - float unk44; - float unk48; - float unk4C; - float unk50; - s32 unk54; - s16 unk58[3]; - s32 unk60; - float unk64; - s32 unk68; - u16 unk6C; - s32 unk70; - Vec unk74; - s16 unk80; - float unk84; - Vec unk88; - Vec unk94; + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + u32 unk14; + u32 unk18; + float unk1C; + float unk20; + s32 unk24; + Vec unk28; + float unk34; + u16 unk38; + s16 unk3A; + s16 unk3C; + s16 unk3E; + float unk40; + float unk44; + float unk48; + float unk4C; + float unk50; + s32 unk54; + s16 unk58[3]; + s32 unk60; + float unk64; + s32 unk68; + u16 unk6C; + s32 unk70; + Vec unk74; + s16 unk80; + float unk84; + Vec unk88; + Vec unk94; } Work4988; void fn_1_4DF4(omObjData *object); @@ -145,64 +132,65 @@ void fn_1_60AC(omObjData *arg0, u32 arg1); void fn_1_4988(omObjData *object) { - Work4988 *temp_r31; - s16 temp_r29; - s32 temp_r28; - s32 temp_r27; - - float sp1C[4] = { 0.5f, 0.65f, 0.8f, 1.0f }; - s32 spC[4] = { 1, 1, 2, 2 }; - s32 sp8; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work4988), MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - memset(temp_r31, 0, sizeof(Work4988)); - temp_r27 = object->work[0]; - temp_r28 = GWPlayerCfg[temp_r27].character; - temp_r31->unk8 = temp_r28; - sp8 = temp_r31->unkC = 0; - temp_r31->unk0 = (object->work[1] >> 1) & 0x1; - temp_r31->unk4 = object->work[1] & 0x1; - temp_r31->unk6C = 0; - temp_r31->unk64 = sp1C[GWPlayerCfg[temp_r27].diff & 0x3]; - temp_r31->unk68 = spC[GWPlayerCfg[temp_r27].diff & 0x3]; - object->model[0] = CharModelCreate(temp_r28, 8); - CharModelStepTypeSet(temp_r28, 3); - Hu3DModelCameraSet(object->model[0], 4); - Hu3DModelLayerSet(object->model[0], 4); - object->model[1] = Hu3DModelCreateFile(lbl_1_data_1DC[temp_r31->unk0]); - Hu3DModelCameraSet(object->model[1], 4); - Hu3DModelLayerSet(object->model[1], 4); - Hu3DModelHookSet(object->model[0], lbl_1_data_190[temp_r31->unkC], object->model[1]); - Hu3DModelClusterAttrSet(object->model[1], 0, 0xC0000001); - for(temp_r29=0; temp_r29<10; temp_r29++) { - if(lbl_1_data_1FC[temp_r29] < 0x10000) { - object->motion[temp_r29] = CharModelMotionCreate(temp_r28, lbl_1_data_1FC[temp_r29]); - } else { - object->motion[temp_r29] = Hu3DJointMotionFile(object->model[0], temp_r28+lbl_1_data_1FC[temp_r29]); - } - } - CharModelMotionDataClose(temp_r28); - object->trans.x = temp_r31->unk88.x = ((2.0f*object->work[1])*100.0f)-300.0f; - object->trans.y = temp_r31->unk88.y = -70; - object->trans.z = temp_r31->unk88.z = 0; - temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; - temp_r31->unk40 = temp_r31->unk44 = 0; - temp_r31->unk48 = 0; - temp_r31->unk4C = 0.02f; - temp_r31->unk84 = 55; - temp_r31->unk28 = lbl_1_data_1E4[temp_r31->unk0]; - temp_r31->unk28.y = object->trans.y; - temp_r31->unk34 = 400; - temp_r31->unk54 = 0; - for(temp_r29=0; temp_r29<3; temp_r29++) { - temp_r31->unk58[temp_r29] = -1; - } - temp_r31->unk50 = 0; - temp_r31->unk10 = -1; - temp_r31->unk60 = 0; - fn_1_60AC(object, 0); - temp_r31->unk38 = 0; - object->func = fn_1_4DF4; + Work4988 *temp_r31; + s16 temp_r29; + s32 temp_r28; + s32 temp_r27; + + float sp1C[4] = { 0.5f, 0.65f, 0.8f, 1.0f }; + s32 spC[4] = { 1, 1, 2, 2 }; + s32 sp8; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work4988), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + memset(temp_r31, 0, sizeof(Work4988)); + temp_r27 = object->work[0]; + temp_r28 = GWPlayerCfg[temp_r27].character; + temp_r31->unk8 = temp_r28; + sp8 = temp_r31->unkC = 0; + temp_r31->unk0 = (object->work[1] >> 1) & 0x1; + temp_r31->unk4 = object->work[1] & 0x1; + temp_r31->unk6C = 0; + temp_r31->unk64 = sp1C[GWPlayerCfg[temp_r27].diff & 0x3]; + temp_r31->unk68 = spC[GWPlayerCfg[temp_r27].diff & 0x3]; + object->model[0] = CharModelCreate(temp_r28, 8); + CharModelStepTypeSet(temp_r28, 3); + Hu3DModelCameraSet(object->model[0], 4); + Hu3DModelLayerSet(object->model[0], 4); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_1DC[temp_r31->unk0]); + Hu3DModelCameraSet(object->model[1], 4); + Hu3DModelLayerSet(object->model[1], 4); + Hu3DModelHookSet(object->model[0], lbl_1_data_190[temp_r31->unkC], object->model[1]); + Hu3DModelClusterAttrSet(object->model[1], 0, 0xC0000001); + for (temp_r29 = 0; temp_r29 < 10; temp_r29++) { + if (lbl_1_data_1FC[temp_r29] < 0x10000) { + object->motion[temp_r29] = CharModelMotionCreate(temp_r28, lbl_1_data_1FC[temp_r29]); + } + else { + object->motion[temp_r29] = Hu3DJointMotionFile(object->model[0], temp_r28 + lbl_1_data_1FC[temp_r29]); + } + } + CharModelMotionDataClose(temp_r28); + object->trans.x = temp_r31->unk88.x = ((2.0f * object->work[1]) * 100.0f) - 300.0f; + object->trans.y = temp_r31->unk88.y = -70; + object->trans.z = temp_r31->unk88.z = 0; + temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; + temp_r31->unk40 = temp_r31->unk44 = 0; + temp_r31->unk48 = 0; + temp_r31->unk4C = 0.02f; + temp_r31->unk84 = 55; + temp_r31->unk28 = lbl_1_data_1E4[temp_r31->unk0]; + temp_r31->unk28.y = object->trans.y; + temp_r31->unk34 = 400; + temp_r31->unk54 = 0; + for (temp_r29 = 0; temp_r29 < 3; temp_r29++) { + temp_r31->unk58[temp_r29] = -1; + } + temp_r31->unk50 = 0; + temp_r31->unk10 = -1; + temp_r31->unk60 = 0; + fn_1_60AC(object, 0); + temp_r31->unk38 = 0; + object->func = fn_1_4DF4; } void fn_1_4E50(omObjData *object); @@ -210,11 +198,11 @@ void fn_1_5BEC(omObjData *object); void fn_1_4DF4(omObjData *object) { - Work4988 *temp_r31 = object->data; - fn_1_5BEC(object); - temp_r31->unk3C++; - temp_r31->unk38 = 0; - object->func = fn_1_4E50; + Work4988 *temp_r31 = object->data; + fn_1_5BEC(object); + temp_r31->unk3C++; + temp_r31->unk38 = 0; + object->func = fn_1_4E50; } void fn_1_5AB0(omObjData *object); @@ -224,453 +212,463 @@ void fn_1_64C0(omObjData *object); float fn_1_67AC(float arg0, float arg1); -//Issues with assignment of temp_f30 -//Scratch is at https://decomp.me/scratch/EqCuG void fn_1_4E50(omObjData *object) { - float temp_f31; - float temp_f30; - float temp_f28; - Work4988 *temp_r31 = object->data; - - s32 temp_r29; - s32 temp_r28; - s32 temp_r27 = 0; - Mtx sp2C; - Vec sp20; - char *sp14[3] = { - "f0", - "f1", - "f2" - }; - float spC[2] = { 0.05, 0.02 }; - temp_r31->unk14 = 0; - temp_r31->unk18 = 0; - temp_r31->unk20 = 0; - temp_r31->unk1C = 0; - if(fn_1_1D54() == 2) { - if(GWPlayerCfg[object->work[0]].iscom) { - fn_1_5C98(object); - } else { - temp_r31->unk18 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; - temp_r31->unk14 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; - temp_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; - temp_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx]; - - temp_r31->unk20 = atan2d(temp_f31, temp_f30); - temp_r31->unk1C = (1.0f/72.0f)*VECMagPoint(temp_f31, temp_f30, 0); - if(temp_r31->unk1C > 1.0f) { - temp_r31->unk1C = 1.0f; - } - } - } - temp_r31->unk60 = 0; - switch(temp_r31->unk38) { - case 0: - temp_r27 = 1; - if(temp_r31->unk1C > spC[temp_r31->unk24]) { - temp_r31->unk24 = 1; - temp_r31->unk44 = temp_r31->unk20; - temp_r31->unk94.x += 225.0f*(temp_r31->unk1C*sind(temp_r31->unk20))*(1.0f/60.0f); - temp_r31->unk94.z += 225.0f*(temp_r31->unk1C*cosd(temp_r31->unk20))*(1.0f/60.0f); - temp_r31->unk48 = 0.2f; - temp_r31->unk4C = 0; - if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { - fn_1_60AC(object, 1); - CharModelMotionSpeedSet(temp_r31->unk8, temp_r31->unk1C); - } - if(temp_r31->unk1C > 0.75f && (temp_r31->unk3A & 0x7) == 0) { - fn_1_8C14(object->work[0], &temp_r31->unk88, temp_r31->unk1C); - if((temp_r31->unk3A & 0xF) == 0) { - fn_1_43AC(&temp_r31->unk88); - } - } - } else { - temp_r31->unk24 = 0; - if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { - fn_1_60AC(object, 0); - } - } - if(temp_r31->unk14 & PAD_BUTTON_A) { - temp_r31->unk38 = 1; - temp_r31->unk3C = 0; - } else if(temp_r31->unk14 & PAD_BUTTON_B) { - temp_r31->unk38 = 3; - temp_r31->unk3C = 0; - temp_r31->unk3A = 0; - } else { - temp_r31->unk60 = 1; - } - break; - - case 1: - temp_r31->unk24 = 0; - if(temp_r31->unk3C == 0) { - fn_1_60AC(object, 2); - temp_r31->unk3A = 0; - temp_r31->unk3C++; - } else if(temp_r31->unk3C == 1 && temp_r31->unk3A > 30.0f) { - if(temp_r31->unk54 < 3) { - temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -30, 30, 1, object->work[0]); - if(temp_r28 >= 0) { - temp_r31->unk58[temp_r31->unk54++] = temp_r28; - omVibrate(object->work[0], 12, 6, 6); - } - } - temp_r31->unk38 = 2; - temp_r31->unk3A = 0; - temp_r31->unk3C = 0; - } - break; - - case 2: - if(temp_r31->unk3C == 0) { - if(!(temp_r31->unk18 & PAD_BUTTON_A)) { - temp_r31->unk24 = 0; - fn_1_60AC(object, 5); - temp_r31->unk3A = 0; - temp_r31->unk3C++; - } else { - temp_f28 = fn_1_67AC(temp_r31->unk40, temp_r31->unk20); - if(temp_f28 > 10.0f) { - temp_f28 = 10.0f; - } else if(temp_f28 < -10.0f) { - temp_f28 = -10.0f; - } - if(temp_r31->unk1C > spC[temp_r31->unk24] && fabs(temp_f28) > 5.0) { - temp_r31->unk24 = 1; - temp_r31->unk44 = temp_r31->unk40+temp_f28; - temp_r31->unk48 = 0.2f; - temp_r31->unk4C = 0; - if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { - fn_1_60AC(object, 4); - CharModelMotionSpeedSet(temp_r31->unk8, 0.5f); - } - if(temp_r31->unk54 < 3) { - temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -15, 15, 1, object->work[0]); - if(temp_r28 >= 0) { - temp_r31->unk58[temp_r31->unk54++] = temp_r28; - omVibrate(object->work[0], 12, 6, 6); - } - } - } else { - temp_r31->unk24 = 0; - if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { - fn_1_60AC(object, 3); - } - } - } - } else { - if(temp_r31->unk3A > 30.0f) { - temp_r31->unk38 = 0; - } - } - break; - - case 3: - temp_r31->unk24 = 0; - if(temp_r31->unk3C == 0) { - temp_r31->unk3E = 0; - VECSubtract(&temp_r31->unk28, &temp_r31->unk88, &sp20); - temp_r31->unk44 = atan2d(sp20.x, sp20.z); - temp_f28 = VECMag(&sp20); - if(temp_f28 < temp_r31->unk34) { - temp_r31->unk3E++; - fn_1_60AC(object, 6); - } else { - fn_1_60AC(object, 0); - } - temp_r31->unk3A = 0; - temp_r31->unk3C++; - } - if(temp_r31->unk3E) { - if(temp_r31->unk3A > 36.0f) { - for(temp_r29=0; temp_r29unk54; temp_r29++) { - fn_1_8B58(temp_r31->unk58[temp_r29]); - } - temp_r31->unk54 = 0; - temp_r31->unk3E = 0; - } - } - if(temp_r31->unk3A > 60.0f) { - temp_r31->unk38 = 0; - } - break; - } - VECAdd(&temp_r31->unk88, &temp_r31->unk94, &temp_r31->unk88); - temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; - fn_1_64C0(object); - temp_f28 = 0; - if(temp_r31->unk54) { - temp_f28 = (temp_r31->unk54*10)+10; - } - temp_r31->unk50 += (temp_f28-temp_r31->unk50)*0.3f; - Hu3DData[object->model[1]].unk_A4[0] = temp_r31->unk50; - Hu3DModelObjMtxGet(object->model[0], lbl_1_data_190[temp_r31->unkC], sp2C); - for(temp_r29=0; temp_r29unk54; temp_r29++) { - Hu3DModelObjPosGet(object->model[1], sp14[temp_r29], &sp20); - MTXMultVec(sp2C, &sp20, &sp20); - fn_1_8AEC(temp_r31->unk58[temp_r29], &sp20); - } - fn_1_5BEC(object); - if(fn_1_1D54() == 5 && temp_r27) { - temp_r31->unk38 = 0; - object->func = fn_1_5AB0; - } + float temp_f31; + float temp_f30; + float temp_f28; + Work4988 *temp_r31 = object->data; + + s32 temp_r29; + s32 temp_r28; + s32 temp_r27 = 0; + Mtx sp2C; + Vec sp20; + char *sp14[3] = { "f0", "f1", "f2" }; + float spC[2] = { 0.05, 0.02 }; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0; + temp_r31->unk20 = 0; + temp_r31->unk1C = 0; + if (fn_1_1D54() == 2) { + if (GWPlayerCfg[object->work[0]].iscom) { + fn_1_5C98(object); + } + else { + temp_r31->unk18 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + temp_r31->unk14 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + temp_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; + temp_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx]; + + temp_r31->unk20 = atan2d(temp_f31, temp_f30); + temp_r31->unk1C = (1.0f / 72.0f) * VECMagPoint(temp_f31, temp_f30, 0); + if (temp_r31->unk1C > 1.0f) { + temp_r31->unk1C = 1.0f; + } + } + } + temp_r31->unk60 = 0; + switch (temp_r31->unk38) { + case 0: + temp_r27 = 1; + if (temp_r31->unk1C > spC[temp_r31->unk24]) { + temp_r31->unk24 = 1; + temp_r31->unk44 = temp_r31->unk20; + temp_r31->unk94.x += 225.0f * (temp_r31->unk1C * sind(temp_r31->unk20)) * (1.0f / REFRESH_RATE); + temp_r31->unk94.z += 225.0f * (temp_r31->unk1C * cosd(temp_r31->unk20)) * (1.0f / REFRESH_RATE); + temp_r31->unk48 = 0.2f; + temp_r31->unk4C = 0; + if (CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { + fn_1_60AC(object, 1); + CharModelMotionSpeedSet(temp_r31->unk8, temp_r31->unk1C); + } + if (temp_r31->unk1C > 0.75f && (temp_r31->unk3A & 0x7) == 0) { + fn_1_8C14(object->work[0], &temp_r31->unk88, temp_r31->unk1C); + if ((temp_r31->unk3A & 0xF) == 0) { + fn_1_43AC(&temp_r31->unk88); + } + } + } + else { + temp_r31->unk24 = 0; + if (CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { + fn_1_60AC(object, 0); + } + } + if (temp_r31->unk14 & PAD_BUTTON_A) { + temp_r31->unk38 = 1; + temp_r31->unk3C = 0; + } + else if (temp_r31->unk14 & PAD_BUTTON_B) { + temp_r31->unk38 = 3; + temp_r31->unk3C = 0; + temp_r31->unk3A = 0; + } + else { + temp_r31->unk60 = 1; + } + break; + + case 1: + temp_r31->unk24 = 0; + if (temp_r31->unk3C == 0) { + fn_1_60AC(object, 2); + temp_r31->unk3A = 0; + temp_r31->unk3C++; + } + else if (temp_r31->unk3C == 1 && temp_r31->unk3A > (0.5f * REFRESH_RATE)) { + if (temp_r31->unk54 < 3) { + temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -30, 30, 1, object->work[0]); + if (temp_r28 >= 0) { + temp_r31->unk58[temp_r31->unk54++] = temp_r28; + omVibrate(object->work[0], 12, 6, 6); + } + } + temp_r31->unk38 = 2; + temp_r31->unk3A = 0; + temp_r31->unk3C = 0; + } + break; + + case 2: + if (temp_r31->unk3C == 0) { + if (!(temp_r31->unk18 & PAD_BUTTON_A)) { + temp_r31->unk24 = 0; + fn_1_60AC(object, 5); + temp_r31->unk3A = 0; + temp_r31->unk3C++; + } + else { + temp_f28 = fn_1_67AC(temp_r31->unk40, temp_r31->unk20); + if (temp_f28 > 10.0f) { + temp_f28 = 10.0f; + } + else if (temp_f28 < -10.0f) { + temp_f28 = -10.0f; + } + if (temp_r31->unk1C > spC[temp_r31->unk24] && fabs(temp_f28) > 5.0) { + temp_r31->unk24 = 1; + temp_r31->unk44 = temp_r31->unk40 + temp_f28; + temp_r31->unk48 = 0.2f; + temp_r31->unk4C = 0; + if (CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { + fn_1_60AC(object, 4); + CharModelMotionSpeedSet(temp_r31->unk8, 0.5f); + } + if (temp_r31->unk54 < 3) { + temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -15, 15, 1, object->work[0]); + if (temp_r28 >= 0) { + temp_r31->unk58[temp_r31->unk54++] = temp_r28; + omVibrate(object->work[0], 12, 6, 6); + } + } + } + else { + temp_r31->unk24 = 0; + if (CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { + fn_1_60AC(object, 3); + } + } + } + } + else { + if (temp_r31->unk3A > (0.5f * REFRESH_RATE)) { + temp_r31->unk38 = 0; + } + } + break; + + case 3: + temp_r31->unk24 = 0; + if (temp_r31->unk3C == 0) { + temp_r31->unk3E = 0; + VECSubtract(&temp_r31->unk28, &temp_r31->unk88, &sp20); + temp_r31->unk44 = atan2d(sp20.x, sp20.z); + temp_f28 = VECMag(&sp20); + if (temp_f28 < temp_r31->unk34) { + temp_r31->unk3E++; + fn_1_60AC(object, 6); + } + else { + fn_1_60AC(object, 0); + } + temp_r31->unk3A = 0; + temp_r31->unk3C++; + } + if (temp_r31->unk3E) { + if (temp_r31->unk3A > (VERSION_NTSC ? 36.0f : 30.000002f)) { + for (temp_r29 = 0; temp_r29 < temp_r31->unk54; temp_r29++) { + fn_1_8B58(temp_r31->unk58[temp_r29]); + } + temp_r31->unk54 = 0; + temp_r31->unk3E = 0; + } + } + if (temp_r31->unk3A > 1.0f * REFRESH_RATE) { + temp_r31->unk38 = 0; + } + break; + } + VECAdd(&temp_r31->unk88, &temp_r31->unk94, &temp_r31->unk88); + temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; + fn_1_64C0(object); + temp_f28 = 0; + if (temp_r31->unk54) { + temp_f28 = (temp_r31->unk54 * 10) + 10; + } + temp_r31->unk50 += (temp_f28 - temp_r31->unk50) * 0.3f; + Hu3DData[object->model[1]].unk_A4[0] = temp_r31->unk50; + Hu3DModelObjMtxGet(object->model[0], lbl_1_data_190[temp_r31->unkC], sp2C); + for (temp_r29 = 0; temp_r29 < temp_r31->unk54; temp_r29++) { + Hu3DModelObjPosGet(object->model[1], sp14[temp_r29], &sp20); + MTXMultVec(sp2C, &sp20, &sp20); + fn_1_8AEC(temp_r31->unk58[temp_r29], &sp20); + } + fn_1_5BEC(object); + if (fn_1_1D54() == 5 && temp_r27) { + temp_r31->unk38 = 0; + object->func = fn_1_5AB0; + } } s32 fn_1_6248(omObjData *object); void fn_1_5AB0(omObjData *object) { - Work4988 *temp_r31 = object->data; - s32 sp8[2] = { -1, 1 }; - fn_1_5BEC(object); - switch(temp_r31->unk38) { - case 0: - temp_r31->unk38++; - break; - - case 1: - Hu3DModelHookReset(object->model[0]); - Hu3DModelAttrSet(object->model[1], 1); - if(sp8[temp_r31->unk0] == fn_1_1D8C()) { - fn_1_60AC(object, 7); - } else { - fn_1_60AC(object, 8); - } - temp_r31->unk44 = 0; - temp_r31->unk48 = 0; - temp_r31->unk4C = 0.005f; - temp_r31->unk38++; - break; - - case 2: - if(fn_1_6248(object)) { - temp_r31->unk38++; - } - break; - } + Work4988 *temp_r31 = object->data; + s32 sp8[2] = { -1, 1 }; + fn_1_5BEC(object); + switch (temp_r31->unk38) { + case 0: + temp_r31->unk38++; + break; + + case 1: + Hu3DModelHookReset(object->model[0]); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + if (sp8[temp_r31->unk0] == fn_1_1D8C()) { + fn_1_60AC(object, 7); + } + else { + fn_1_60AC(object, 8); + } + temp_r31->unk44 = 0; + temp_r31->unk48 = 0; + temp_r31->unk4C = 0.005f; + temp_r31->unk38++; + break; + + case 2: + if (fn_1_6248(object)) { + temp_r31->unk38++; + } + break; + } } float fn_1_6690(float arg0, float arg1, float arg2); void fn_1_5BEC(omObjData *object) { - Work4988 *temp_r31 = object->data; - temp_r31->unk3A++; - object->trans.x = temp_r31->unk88.x; - object->trans.y = temp_r31->unk88.y; - object->trans.z = temp_r31->unk88.z; - temp_r31->unk48 += temp_r31->unk4C; - if(temp_r31->unk48 > 0.45f) { - temp_r31->unk48 = 0.45f; - } - temp_r31->unk40 = fn_1_6690(temp_r31->unk40, temp_r31->unk44, temp_r31->unk48); - object->rot.y = temp_r31->unk40; + Work4988 *temp_r31 = object->data; + temp_r31->unk3A++; + object->trans.x = temp_r31->unk88.x; + object->trans.y = temp_r31->unk88.y; + object->trans.z = temp_r31->unk88.z; + temp_r31->unk48 += temp_r31->unk4C; + if (temp_r31->unk48 > 0.45f) { + temp_r31->unk48 = 0.45f; + } + temp_r31->unk40 = fn_1_6690(temp_r31->unk40, temp_r31->unk44, temp_r31->unk48); + object->rot.y = temp_r31->unk40; } void fn_1_5C98(omObjData *object) { - Vec sp8; - Work4988 *temp_r31 = object->data; - s32 temp_r30; - s32 temp_r29 = 0; - s32 temp_r28; - switch(temp_r31->unk6C) { - case 0: - if(temp_r31->unk60) { - temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88); - if(temp_r31->unk70 < 0 || temp_r31->unk54 >= temp_r31->unk68 || fn_1_1D44() < 10) { - temp_r29 = 1; - } - if(temp_r31->unk54 && temp_r29) { - temp_r31->unk6C = 3; - temp_r31->unk80 = 0; - } else if(temp_r31->unk70 >= 0) { - temp_r31->unk6C = 1; - temp_r31->unk80 = 0; - fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74); - temp_r31->unk74.y = temp_r31->unk88.y; - } - } - break; - - case 1: - temp_r31->unk1C = 0.73f*temp_r31->unk64; - if(temp_r31->unk54 && fn_1_1D44() < 10) { - temp_r31->unk6C = 0; - } else { - temp_r28 = fn_1_8D78(&temp_r31->unk88); - if(fn_1_8F3C(temp_r28) > 0) { - temp_r31->unk6C = 2; - temp_r31->unk80 = 0; - } else { - VECSubtract(&temp_r31->unk74, &temp_r31->unk88, &sp8); - temp_r31->unk20 = fn_1_6690(temp_r31->unk40, atan2d(sp8.x, sp8.z), temp_r31->unk64*0.25f); - temp_r30 = 0; - if(VECMag(&sp8) < 50.0f) { - temp_r30 = 1; - } - if(temp_r30 && fn_1_8F3C(temp_r31->unk70) > 0) { - temp_r31->unk6C = 2; - temp_r31->unk80 = 0; - } else { - temp_r31->unk80++; - if(temp_r30 || temp_r31->unk80 > 60.0f) { - if(temp_r30 || frandmod(1000) < 10) { - temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88); - fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74); - temp_r31->unk74.y = temp_r31->unk88.y; - temp_r31->unk80 = 0; - if(temp_r31->unk70 < 0) { - temp_r31->unk6C = 0; - } - } - } - } - } - } - break; - - case 2: - temp_r31->unk80++; - if(temp_r31->unk80 < 120*temp_r31->unk64) { - temp_r31->unk1C = 0.4f; - temp_r31->unk20 = temp_r31->unk40+10.0f; - temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_A; - } else { - temp_r31->unk6C = 0; - } - break; - - case 3: - temp_r31->unk1C = 0.75f+(0.25f*temp_r31->unk64); - VECSubtract(&temp_r31->unk28, &temp_r31->unk88, &sp8); - temp_r31->unk20 = fn_1_6690(temp_r31->unk40, atan2d(sp8.x, sp8.z), 0.2f); - if(VECMag(&sp8) < temp_r31->unk34-30.000002f) { - temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_B; - temp_r31->unk6C = 0; - } - break; - } + Vec sp8; + Work4988 *temp_r31 = object->data; + s32 temp_r30; + s32 temp_r29 = 0; + s32 temp_r28; + switch (temp_r31->unk6C) { + case 0: + if (temp_r31->unk60) { + temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88); + if (temp_r31->unk70 < 0 || temp_r31->unk54 >= temp_r31->unk68 || fn_1_1D44() < 10) { + temp_r29 = 1; + } + if (temp_r31->unk54 && temp_r29) { + temp_r31->unk6C = 3; + temp_r31->unk80 = 0; + } + else if (temp_r31->unk70 >= 0) { + temp_r31->unk6C = 1; + temp_r31->unk80 = 0; + fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74); + temp_r31->unk74.y = temp_r31->unk88.y; + } + } + break; + + case 1: + temp_r31->unk1C = 0.73f * temp_r31->unk64; + if (temp_r31->unk54 && fn_1_1D44() < 10) { + temp_r31->unk6C = 0; + } + else { + temp_r28 = fn_1_8D78(&temp_r31->unk88); + if (fn_1_8F3C(temp_r28) > 0) { + temp_r31->unk6C = 2; + temp_r31->unk80 = 0; + } + else { + VECSubtract(&temp_r31->unk74, &temp_r31->unk88, &sp8); + temp_r31->unk20 = fn_1_6690(temp_r31->unk40, atan2d(sp8.x, sp8.z), temp_r31->unk64 * 0.25f); + temp_r30 = 0; + if (VECMag(&sp8) < 50.0f) { + temp_r30 = 1; + } + if (temp_r30 && fn_1_8F3C(temp_r31->unk70) > 0) { + temp_r31->unk6C = 2; + temp_r31->unk80 = 0; + } + else { + temp_r31->unk80++; + if (temp_r30 || temp_r31->unk80 > (1.0f * REFRESH_RATE)) { + if (temp_r30 || frandmod(1000) < 10) { + temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88); + fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74); + temp_r31->unk74.y = temp_r31->unk88.y; + temp_r31->unk80 = 0; + if (temp_r31->unk70 < 0) { + temp_r31->unk6C = 0; + } + } + } + } + } + } + break; + + case 2: + temp_r31->unk80++; + if (temp_r31->unk80 < (2 * REFRESH_RATE) * temp_r31->unk64) { + temp_r31->unk1C = 0.4f; + temp_r31->unk20 = temp_r31->unk40 + 10.0f; + temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_A; + } + else { + temp_r31->unk6C = 0; + } + break; + + case 3: + temp_r31->unk1C = 0.75f + (0.25f * temp_r31->unk64); + VECSubtract(&temp_r31->unk28, &temp_r31->unk88, &sp8); + temp_r31->unk20 = fn_1_6690(temp_r31->unk40, atan2d(sp8.x, sp8.z), 0.2f); + if (VECMag(&sp8) < temp_r31->unk34 - 30.000002f) { + temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_B; + temp_r31->unk6C = 0; + } + break; + } } void fn_1_60AC(omObjData *arg0, u32 arg1) { - float temp_f31; - Work4988 *temp_r30 = arg0->data; - if(temp_r30->unk10 != arg1 && arg1 < 9) { - temp_f31 = lbl_1_data_224[arg1].unk4; - if(temp_r30->unk10 < 0) { - temp_f31 = 0; - } - temp_r30->unk10 = arg1; - CharModelMotionShiftSet(temp_r30->unk8, arg0->motion[lbl_1_data_224[arg1].unk0], 0, temp_f31, lbl_1_data_224[arg1].unkC); - CharModelMotionSpeedSet(temp_r30->unk8, 1.0f); - if(lbl_1_data_224[arg1].unk2) { - Hu3DMotionOverlaySet(arg0->model[0], arg0->motion[lbl_1_data_224[arg1].unk2]); - Hu3DMotionOverlayTimeSet(arg0->model[0], lbl_1_data_224[arg1].unk8); - Hu3DData[arg0->model[0]].unk_78 = 1.0f; - } else { - Hu3DMotionOverlayReset(arg0->model[0]); - } - } + float temp_f31; + Work4988 *temp_r30 = arg0->data; + if (temp_r30->unk10 != arg1 && arg1 < 9) { + temp_f31 = lbl_1_data_224[arg1].unk4; + if (temp_r30->unk10 < 0) { + temp_f31 = 0; + } + temp_r30->unk10 = arg1; + CharModelMotionShiftSet(temp_r30->unk8, arg0->motion[lbl_1_data_224[arg1].unk0], 0, temp_f31, lbl_1_data_224[arg1].unkC); + CharModelMotionSpeedSet(temp_r30->unk8, 1.0f); + if (lbl_1_data_224[arg1].unk2) { + Hu3DMotionOverlaySet(arg0->model[0], arg0->motion[lbl_1_data_224[arg1].unk2]); + Hu3DMotionOverlayTimeSet(arg0->model[0], lbl_1_data_224[arg1].unk8); + Hu3DData[arg0->model[0]].unk_78 = 1.0f; + } + else { + Hu3DMotionOverlayReset(arg0->model[0]); + } + } } s32 fn_1_6248(omObjData *object) { - Work4988 *temp_r31 = object->data; - s32 temp_r30 = 0; - if(CharModelMotionEndCheck(temp_r31->unk8) && CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { - temp_r30 = 1; - } - return temp_r30; + Work4988 *temp_r31 = object->data; + s32 temp_r30 = 0; + if (CharModelMotionEndCheck(temp_r31->unk8) && CharModelMotionShiftIDGet(temp_r31->unk8) < 0) { + temp_r30 = 1; + } + return temp_r30; } s32 fn_1_62BC(omObjData *arg0, u32 arg1) { - s32 result = 0; - if(fn_1_6248(arg0)) { - fn_1_60AC(arg0, arg1); - result = 1; - } - return result; + s32 result = 0; + if (fn_1_6248(arg0)) { + fn_1_60AC(arg0, arg1); + result = 1; + } + return result; } s32 fn_1_649C(omObjData *object) { - Work4988 *sp8 = object->data; - s32 temp_r31 = 0; - return temp_r31; + Work4988 *sp8 = object->data; + s32 temp_r31 = 0; + return temp_r31; } - void fn_1_64C0(omObjData *object) { - float temp_f31; - Vec sp8; - Work4988 *temp_r31; - Work4988 *temp_r30; - s32 temp_r29; - s32 temp_r28; - s32 temp_r27; - for(temp_r27=0; temp_r27<2; temp_r27++) { - for(temp_r29=0; temp_r29<4; temp_r29++) { - temp_r31 = lbl_1_bss_5870[temp_r29]->data; - for(temp_r28=0; temp_r28<4; temp_r28++) { - if(temp_r29 == temp_r28) { - continue; - } - temp_r30 = lbl_1_bss_5870[temp_r28]->data; - VECSubtract(&temp_r31->unk88, &temp_r30->unk88, &sp8); - temp_f31 = VECMag(&sp8); - if(temp_f31 < temp_r31->unk84+temp_r30->unk84) { - temp_f31 = 0.5f*((temp_r31->unk84+temp_r30->unk84)-temp_f31); - VECNormalize(&sp8, &sp8); - VECScale(&sp8, &sp8, temp_f31); - VECAdd(&temp_r31->unk88, &sp8, &temp_r31->unk88); - VECSubtract(&temp_r30->unk88, &sp8, &temp_r30->unk88); - } - } - sp8 = temp_r31->unk88; - sp8.y = 0; - temp_f31 = VECMag(&sp8); - if(temp_f31 > 510.0f-temp_r31->unk84) { - VECNormalize(&sp8, &sp8); - VECScale(&sp8, &sp8, -(temp_f31-(510.0f-temp_r31->unk84))); - VECAdd(&sp8, &temp_r31->unk88, &temp_r31->unk88); - } - } - } + float temp_f31; + Vec sp8; + Work4988 *temp_r31; + Work4988 *temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + for (temp_r27 = 0; temp_r27 < 2; temp_r27++) { + for (temp_r29 = 0; temp_r29 < 4; temp_r29++) { + temp_r31 = lbl_1_bss_5870[temp_r29]->data; + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + if (temp_r29 == temp_r28) { + continue; + } + temp_r30 = lbl_1_bss_5870[temp_r28]->data; + VECSubtract(&temp_r31->unk88, &temp_r30->unk88, &sp8); + temp_f31 = VECMag(&sp8); + if (temp_f31 < temp_r31->unk84 + temp_r30->unk84) { + temp_f31 = 0.5f * ((temp_r31->unk84 + temp_r30->unk84) - temp_f31); + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, temp_f31); + VECAdd(&temp_r31->unk88, &sp8, &temp_r31->unk88); + VECSubtract(&temp_r30->unk88, &sp8, &temp_r30->unk88); + } + } + sp8 = temp_r31->unk88; + sp8.y = 0; + temp_f31 = VECMag(&sp8); + if (temp_f31 > 510.0f - temp_r31->unk84) { + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, -(temp_f31 - (510.0f - temp_r31->unk84))); + VECAdd(&sp8, &temp_r31->unk88, &temp_r31->unk88); + } + } + } } float fn_1_6690(float arg0, float arg1, float arg2) { - float temp_f31; - temp_f31 = fmodf(arg1-arg0, 360.0); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } - temp_f31 = fmodf((arg2*temp_f31)+arg0, 360.0); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - return temp_f31; + float temp_f31; + temp_f31 = fmodf(arg1 - arg0, 360.0); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + temp_f31 = fmodf((arg2 * temp_f31) + arg0, 360.0); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + return temp_f31; } float fn_1_67AC(float arg0, float arg1) { - float temp_f31; - temp_f31 = fmodf(arg1-arg0, 360.0); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } - return temp_f31; -} \ No newline at end of file + float temp_f31; + temp_f31 = fmodf(arg1 - arg0, 360.0); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + return temp_f31; +} diff --git a/src/REL/m435Dll/main.c b/src/REL/m435Dll/main.c new file mode 100755 index 00000000..df551b13 --- /dev/null +++ b/src/REL/m435Dll/main.c @@ -0,0 +1,4271 @@ +#include "REL/m435Dll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ float unk50; + /* 0x54 */ float unk54; + /* 0x58 */ StructFn19894 unk58; +} StructBssE88; // Size 0x4D8 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBssDE4; // Size 0x24 + +typedef struct { + /* 0x000 */ omObjData* unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14[3]; + /* 0x020 */ s32 unk20; + /* 0x024 */ s32 unk24; + /* 0x028 */ s32 unk28; + /* 0x02C */ s32 unk2C[3]; + /* 0x038 */ s32 unk38[3]; + /* 0x044 */ s32 unk44[3]; + /* 0x050 */ s32 unk50[3]; + /* 0x05C */ s32 unk5C[3]; + /* 0x068 */ s32 unk68[3]; + /* 0x074 */ float unk74; + /* 0x078 */ float unk78; + /* 0x07C */ float unk7C[3]; + /* 0x088 */ float unk88[3]; + /* 0x094 */ float unk94[3]; + /* 0x0A0 */ float unkA0[3]; + /* 0x0AC */ Vec unkAC[3]; + /* 0x0D0 */ Vec unkD0[3]; + /* 0x0F4 */ Vec unkF4[3]; + /* 0x118 */ Vec unk118[3]; + /* 0x13C */ Vec unk13C[3]; + /* 0x160 */ Vec unk160[3]; + /* 0x184 */ Vec unk184[3]; + /* 0x1A8 */ float unk1A8[3]; +} StructBssC30; // Size 0x1B4 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ char unk08[0xC]; + /* 0x14 */ s32 unk14; + /* 0x18 */ char unk18[0x20]; +} StructBss4F10; // Size 0x38 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; +} StructBss4EE8; // Size 0x20 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; +} StructBssC1C; // Size 0x14 + +typedef struct { + /* 0x000 */ omObjData* unk00; + /* 0x004 */ Vec unk04; + /* 0x010 */ Vec unk10; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ s32 unk24; + /* 0x028 */ s32 unk28; + /* 0x02C */ s32 unk2C; + /* 0x030 */ s32 unk30; + /* 0x034 */ s32 unk34; + /* 0x038 */ s32 unk38; + /* 0x03C */ StructFn19894 unk3C; +} StructBss2A4; // Size 0x4BC + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04[6]; + /* 0x1C */ char unk1C[0x10]; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ s32 unk54; +} StructBss144; // Size 0x58 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08[6]; + /* 0x20 */ char unk20[8]; + /* 0x28 */ float unk28[6]; + /* 0x40 */ char unk40[8]; + /* 0x48 */ float unk48[6]; + /* 0x60 */ char unk60[8]; + /* 0x68 */ float unk68[6]; + /* 0x80 */ char unk80[8]; + /* 0x88 */ float unk88[6]; + /* 0xA0 */ char unkA0[8]; +} StructBss9C; // Size 0xA8 + +void fn_1_3AF4(s32 arg0); +void fn_1_4104(s32 arg0); +void fn_1_7D50(s32 arg0); +void fn_1_8544(s32 arg0); +s32 fn_1_8E48(s32 arg0); +s32 fn_1_8F34(s32 arg0); + +StructBss4F10 lbl_1_bss_4F10; +s32 lbl_1_bss_4F08[2]; +StructBss4EE8 lbl_1_bss_4EE8; +char lbl_1_bss_21E8_pad[0x2D00]; // unused +StructBssE88 lbl_1_bss_E88[4]; +StructBssE08 lbl_1_bss_E08; +StructBssDE4 lbl_1_bss_DE4; +StructBssC30 lbl_1_bss_C30; +StructBssC1C lbl_1_bss_C1C; +StructBss2A4 lbl_1_bss_2A4[2]; +StructBss144 lbl_1_bss_144[4]; +StructBss9C lbl_1_bss_9C; +StructBss84 lbl_1_bss_84; +StructBss84 lbl_1_bss_6C; +Vec lbl_1_bss_3C[4]; +StructBss84 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; // unused +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][3] = { + { DATA_MAKE_NUM(DATADIR_M435, 27), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 0) }, + { DATA_MAKE_NUM(DATADIR_M435, 28), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 1) }, + { DATA_MAKE_NUM(DATADIR_M435, 30), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 2) }, + { DATA_MAKE_NUM(DATADIR_M435, 29), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 3) }, + { DATA_MAKE_NUM(DATADIR_M435, 32), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 4) }, + { DATA_MAKE_NUM(DATADIR_M435, 31), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 5) }, + { DATA_MAKE_NUM(DATADIR_M435, 33), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 6) }, + { DATA_MAKE_NUM(DATADIR_M435, 34), DATA_MAKE_NUM(DATADIR_M435, 26), DATA_MAKE_NUM(DATADIR_MGCONST, 7) } +}; + +char* lbl_1_data_E0[] = { + "c000m1-ske_head", + "c001m1-ske_head", + "c002m1-ske_head", + "c003m1-ske_head", + "c004m1-ske_head", + "c005m1-ske_head", + "c006m1-ske_head", + "c007m1-ske_head" +}; + +s32 lbl_1_data_100[][2] = { + { 0x00000100, 0x00000001 }, + { 0x00000100, 0x00000001 }, + { 0x00000080, 0x00000000 }, + { 0x00000080, 0x00000000 }, + { 0x00000080, 0x00000000 }, + { 0x00000100, 0x00000001 }, + { 0x00000080, 0x00000000 }, + { 0x00000080, 0x00000000 } +}; + +s32 lbl_1_data_140[][5] = { + { 91, 105, 126, 141, -1 }, + { 91, 105, 126, 141, -1 }, + { 124, 137, -1, -1, -1 }, + { 85, 100, 127, -1, -1 }, + { 124, 139, -1, -1, -1 }, + { 85, 97, 127, 139, -1 }, + { 127, 137, -1, -1, -1 }, + { 79, 95, 109, 127, -1 } +}; + +s32 lbl_1_data_1E0 = -1; +s32 lbl_1_data_1E4 = -1; +s32 lbl_1_data_1E8 = -1; + +void fn_1_0(void) { + s32 i; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_data_1E0 == -1 || lbl_1_data_1E4 == -1 || lbl_1_data_1E8 == -1 || lbl_1_data_1E4 != Hu3DMotionIDGet(lbl_1_data_1E0)) { + continue; + } + for (i = 0; i < 5; i++) { + if (lbl_1_data_140[lbl_1_data_1E8][i] != -1 && Hu3DMotionTimeGet(lbl_1_data_1E0) >= lbl_1_data_140[lbl_1_data_1E8][i]) { + OSReport("KE-System CHR:%d TIME:%d\n", lbl_1_data_1E8, lbl_1_data_140[lbl_1_data_1E8][i]); + HuAudFXPlay(0x6D8); + lbl_1_data_140[lbl_1_data_1E8][i] = -1; + } + } + } +} + +void fn_1_1A8(void) { + s32 var_r31; + + var_r31 = Hu3DGLightCreate(0.0f, 1000.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_230(s32 arg0, s32 arg1, float arg2) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk48[arg0] = arg1; + if (var_r31->unk64[arg0] < 0.0f) { + var_r31->unk64[arg0] = -arg2; + } + else { + var_r31->unk64[arg0] = arg2; + } +} + +void fn_1_298(s32 arg0, float arg1) { + fn_1_230(arg0, -1, arg1); +} + +float fn_1_304(s32 arg0) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + if (var_r31->unk64[arg0] != 0.0f) { + var_r31->unk64[arg0] *= -0.9f; + if (var_r31->unk48[arg0] == -1) { + if (var_r31->unk64[arg0] >= -0.5f && var_r31->unk64[arg0] <= 0.5f) { + var_r31->unk64[arg0] = 0.0f; + } + } + else { + var_r31->unk48[arg0]--; + if (var_r31->unk48[arg0] <= 0) { + var_r31->unk48[arg0] = 0; + var_r31->unk64[arg0] = 0.0f; + } + } + } + return var_r31->unk64[arg0]; +} + +void fn_1_434(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + if (HuPadBtn[0] & 0x200) { + if (HuPadBtn[0] & 0x100) { + var_r31->unk14 -= HuPadStkY[0] / 10.0f; + } + else { + var_r31->unk0C += HuPadStkX[0] / 10.0f; + var_r31->unk10 += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & 0x800) { + var_r31->unk24 -= HuPadStkY[0] / 100.0f; + var_r31->unk28 += HuPadStkX[0] / 100.0f; + if (var_r31->unk24 < 0.0f) { + var_r31->unk24 += 360.0f; + } + if (var_r31->unk24 >= 360.0f) { + var_r31->unk24 -= 360.0f; + } + if (var_r31->unk28 < 0.0f) { + var_r31->unk28 += 360.0f; + } + if (var_r31->unk28 >= 360.0f) { + var_r31->unk28 -= 360.0f; + } + } + if (HuPadBtn[0] & 0x400) { + var_r31->unk3C -= HuPadStkY[0] / 10.0f; + } + print8(16, 100, 1.0f, ">>>>>>>>>> CAMERA TEST <<<<<<<<<<"); + print8(16, 110, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk0C, var_r31->unk10, var_r31->unk14); + print8(16, 120, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk24, var_r31->unk28, var_r31->unk2C); + print8(16, 130, 1.0f, "ZOOM : %.2f", var_r31->unk3C); +} + +void fn_1_818(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk0C = 0.0f; + var_r31->unk10 = 225.0f; + var_r31->unk14 = 1740.0f; + var_r31->unk24 = -10.0f; + var_r31->unk28 = 0.0f; + var_r31->unk2C = 0.0f; + var_r31->unk3C = 300.0f; +} + +void fn_1_8A4(void (*arg0)(void)) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk04 = arg0; +} + +void fn_1_8C4(void (*arg0)(void)) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk08 = arg0; +} + +void fn_1_8E4(omObjData* arg0) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + if (var_r31->unk04 != NULL) { + var_r31->unk04(); + } +} + +void fn_1_92C(omObjData* arg0) { + StructBssE08* var_r23; + + var_r23 = &lbl_1_bss_E08; + fn_1_8E4(arg0); + Center.x = var_r23->unk0C + fn_1_304(0); + Center.y = var_r23->unk10 + fn_1_304(1); + Center.z = var_r23->unk14 + fn_1_304(2); + CRot.x = var_r23->unk24 + fn_1_304(3); + CRot.y = var_r23->unk28 + fn_1_304(4); + CRot.z = var_r23->unk2C + fn_1_304(5); + CZoom = var_r23->unk3C + fn_1_304(6); +} + +void fn_1_FDC(void) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 45.0f, 0.1f, 10000.0f, 1.2f); + fn_1_8A4(fn_1_818); + fn_1_8C4(fn_1_434); + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_92C); +} + +void fn_1_1110(void) { + Vec sp20 = { 0.0f, 2500.0f, 1.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_11D4(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f27; + float temp_f26; + float var_f31; + float var_f30; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + var_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (var_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + var_f31 = temp_f29 + temp_f25 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 -= 2.0f; + } + } + var_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (var_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + var_f30 = temp_f28 + temp_f24 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 -= 2.0f; + } + } + if (arg3 != 0) { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = var_f31; + var_f21 = temp_f27; + var_f22 = var_f30; + var_f20 = temp_f26; + } + else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_152D4(var_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_152D4(temp_f27, 1.0f, i, 10.0f); + } + else { + var_f22 = fn_1_152D4(var_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_152D4(temp_f26, 1.0f, i - 10, 5.0f); + } + } + else { + if (i <= 10) { + var_f22 = fn_1_152D4(temp_f28, var_f30, i, 10.0f); + var_f20 = fn_1_152D4(1.0f, temp_f26, i, 10.0f); + } + else { + var_f23 = fn_1_152D4(temp_f29, var_f31, i - 10, 5.0f); + var_f21 = fn_1_152D4(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } + else { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +void fn_1_1818(void) { + HuWinInit(1); +} + +void fn_1_183C(s32 arg0, float arg1, float arg2) { + WindowData* temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 -= 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 -= 2.0f; + } + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_152D4(var_f31, temp_f29, i, 10.0f); + temp_f21 = fn_1_152D4(temp_f25, 1.0f, i, 10.0f); + temp_f22 = fn_1_152D4(var_f30, temp_f28, i, 10.0f); + temp_f20 = fn_1_152D4(temp_f24, 1.0f, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); +} + +s32 fn_1_1C94(float arg0, float arg1, float arg2, float arg3, s32 arg4) { + s32 var_r31; + s32 sp18[][6] = { + { 0xFF, 0xFF, 0xCC, 0x00, 0x09, 0x09 }, + { 0xCC, 0xFF, 0xFF, 0x00, 0x09, 0x09 }, + { 0xFF, 0xCC, 0xFF, 0x00, 0x09, 0x09 } + }; + + var_r31 = HuWinCreate(arg0, arg1, arg2, arg3, 1); + HuSprColorSet(winData[var_r31].group, 0, sp18[arg4][0], sp18[arg4][1], sp18[arg4][2]); + winData[var_r31].mess_color = sp18[arg4][3]; + winData[var_r31].mess_shadow_color = sp18[arg4][4]; + winData[var_r31].attr |= 0x80; + HuWinBGTPLvlSet(var_r31, sp18[arg4][5] / 10.0f); + winData[var_r31].active_pad = 0; + fn_1_11D4(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +s32 fn_1_1E80(float arg0, float arg1, float arg2, float arg3, s32 arg4) { + return fn_1_1C94(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_206C(s32 arg0, float arg1, float arg2) { + WindowData* temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_1539C(temp_f29, var_f31, i, 10.0f); + temp_f21 = fn_1_1539C(1.0f, temp_f25, i, 10.0f); + temp_f22 = fn_1_1539C(temp_f28, var_f30, i, 10.0f); + temp_f20 = fn_1_1539C(1.0f, temp_f24, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); +} + +void fn_1_24C4(s32 arg0) { + HuWinMesSet(arg0, MAKE_MESSID(29, 22)); + HuPrcVSleep(); + fn_1_11D4(arg0, 0.5f, 0.5f, 0); + HuWinKill(arg0); +} + +void fn_1_252C(s32 arg0) { + fn_1_24C4(arg0); +} + +void fn_1_2594(s32 arg0, s32 arg1) { + s32 i; + s32 var_r30; + s32 temp_r28; + + var_r30 = 0; + temp_r28 = GWMessDelayGet(); + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_E88[i].unk2C == 0) { + var_r30 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r30 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_267C(s32 arg0) { + s32 var_r31; + s32 temp_r28; + s32 i; + + var_r31 = 0; + temp_r28 = GWMessDelayGet(); + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_E88[i].unk2C == 0) { + var_r31 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r31 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + var_r31 = HuWinChoiceGet(arg0, 1); + if (var_r31 == -1 || var_r31 == 1) { + lbl_1_bss_8 = 0; + } + else { + lbl_1_bss_8 = 1; + } + HuWinComKeyReset(); +} + +void fn_1_2798(s32 arg0, s32 arg1) { + winData[arg0].mess_color = 0; + winData[arg0].mess_shadow_color = 9; + winData[arg0].attr |= 0x80; + HuWinMesSet(arg0, arg1); +} + +void fn_1_281C(float* arg0, s32 arg1) { + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} + +void fn_1_288C(s32 arg0) { + if (lbl_1_bss_10 == 0) { + lbl_1_bss_10 = 1; + lbl_1_bss_C = arg0 * 60; + } +} + +s32 fn_1_28C4(void) { + if (lbl_1_bss_10 == 3) { + return 1; + } else { + return 0; + } +} + +s32 fn_1_28E8(void) { + if (lbl_1_bss_10 == 2) { + lbl_1_bss_10 = 3; + lbl_1_bss_C = 30; + } +} + +s32 lbl_1_data_26C = -1; + +void fn_1_2920(omObjData* arg0) { + switch (lbl_1_bss_10) { + case 1: + if (lbl_1_data_26C == -1) { + lbl_1_data_26C = MGSeqCreate(1, lbl_1_bss_C / 60, -1, -1); + } + lbl_1_bss_10 = 2; + break; + case 2: + lbl_1_bss_C--; + if (lbl_1_data_26C != -1) { + MGSeqParamSet(lbl_1_data_26C, 1, (lbl_1_bss_C + 59) / 60); + } + if (lbl_1_bss_C <= 0) { + lbl_1_bss_C = 30; + lbl_1_bss_10 = 3; + } + break; + case 3: + if (lbl_1_data_26C != -1) { + MGSeqParamSet(lbl_1_data_26C, 2, -1); + lbl_1_data_26C = -1; + } + lbl_1_bss_C = 0; + lbl_1_bss_10 = 0; + break; + } +} + +void fn_1_2AF0(void) { + lbl_1_bss_C = 0; + lbl_1_bss_10 = 0; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_2920); +} + +void fn_1_2B54(omObjData* arg0) { + s32 i; + + for (i = 0; i < 3; i++) { + Hu3DData[arg0->model[i + 5]].rot.y += 360.0f / (2500.0f + 2500.0f * i); + } +} + +void fn_1_2BFC(s32 arg0) { + StructBssDE4* var_r31; + + var_r31 = &lbl_1_bss_DE4; + var_r31->unk04 = arg0; +} + +void fn_1_2C1C(omObjData* arg0) { + StructBssDE4* var_r30; + + var_r30 = &lbl_1_bss_DE4; + switch (var_r30->unk04) { + case 2: + fn_1_157BC(arg0, 9, 9, 1, 0); + Hu3DModelAttrReset(arg0->model[9], 1); + var_r30->unk1C = 0; + fn_1_230(1, 10, 4.0f); + HuAudFXPlay(0x6CF); + /* fallthrough */ + case 1: + fn_1_157BC(arg0, 0, 0, 1, 0); + fn_1_157BC(arg0, 3, 3, 1, 0); + fn_1_157BC(arg0, 4, 4, 1, 0); + fn_1_157BC(arg0, 5, 5, 1, 0); + fn_1_157BC(arg0, 6, 6, 1, 0); + fn_1_157BC(arg0, 7, 7, 1, 0); + if (var_r30->unk04 == 1) { + HuAudFXPlay(0x6CE); + } + var_r30->unk04 = 20; + break; + case 3: + var_r30->unk04 = 10; + fn_1_157BC(arg0, 0, 0, 1, 0); + fn_1_157BC(arg0, 1, 1, 1, 0); + fn_1_157BC(arg0, 2, 2, 1, 0); + fn_1_157BC(arg0, 3, 3, 1, 0); + fn_1_157BC(arg0, 4, 4, 1, 0); + fn_1_157BC(arg0, 5, 5, 1, 0); + fn_1_157BC(arg0, 6, 6, 1, 0); + fn_1_157BC(arg0, 7, 7, 1, 0); + fn_1_157BC(arg0, 8, 8, 0, 0); + HuAudFXPlay(0x6D0); + Hu3DModelAttrReset(arg0->model[8], 1); + break; + case 10: + fn_1_230(6, -1, 8.0f); + if (Hu3DMotionTimeGet(arg0->model[3]) >= 30.0f) { + var_r30->unk04 = 20; + fn_1_3AF4(1); + fn_1_230(6, -1, 128.0f); + HuAudFXPlay(0x6DA); + omVibrate(fn_1_8E48(0), 12, 12, 0); + omVibrate(fn_1_8E48(1), 12, 12, 0); + omVibrate(fn_1_8E48(2), 12, 12, 0); + omVibrate(fn_1_8E48(3), 12, 12, 0); + } + break; + case 20: + if (Hu3DMotionEndCheck(arg0->model[3])) { + var_r30->unk04 = 0; + fn_1_157BC(arg0, 3, 10, 1, 1); + fn_1_157BC(arg0, 4, 11, 1, 1); + Hu3DModelAttrSet(arg0->model[8], 1); + Hu3DModelAttrSet(arg0->model[9], 1); + } + break; + } + if (Hu3DMotionTimeGet(arg0->model[9]) >= 25.0f && var_r30->unk1C == 0) { + var_r30->unk1C = 1; + fn_1_230(1, 10, 4.0f); + } else if (Hu3DMotionTimeGet(arg0->model[9]) >= 40.0f && var_r30->unk1C == 1) { + var_r30->unk1C = 2; + fn_1_230(1, 10, 4.0f); + } + if (var_r30->unk04 == 0) { + if (var_r30->unk14++ >= 300) { + var_r30->unk14 = 0; + if (rand8() % 2 != 0) { + fn_1_2BFC(1); + } + } + } +} + +void fn_1_31BC(omObjData* arg0) { + fn_1_2B54(arg0); + fn_1_2C1C(arg0); +} + +void fn_1_3288(StructBssDE4* arg0) { + omObjData* temp_r31; + + temp_r31 = arg0->unk00; + fn_1_157BC(temp_r31, 0, 0, 1, 2); + Hu3DModelPosSet(temp_r31->model[1], 0.0f, 0.0f, -680.0f); + fn_1_157BC(temp_r31, 1, 1, 1, 2); + Hu3DModelPosSet(temp_r31->model[2], 0.0f, 0.0f, -680.0f); + fn_1_157BC(temp_r31, 2, 2, 1, 2); + Hu3DModelPosSet(temp_r31->model[3], 525.0f, 0.0f, -1150.0f); + fn_1_157BC(temp_r31, 3, 10, 1, 1); + Hu3DModelPosSet(temp_r31->model[4], -525.0f, 0.0f, -1150.0f); + fn_1_157BC(temp_r31, 4, 11, 1, 1); + Hu3DModelPosSet(temp_r31->model[5], 50.0f, 150.0f, 50.0f); + fn_1_157BC(temp_r31, 5, 5, 1, 2); + Hu3DModelPosSet(temp_r31->model[6], 0.0f, 150.0f, 0.0f); + fn_1_157BC(temp_r31, 6, 6, 1, 2); + Hu3DModelPosSet(temp_r31->model[7], 0.0f, 150.0f, 0.0f); + fn_1_157BC(temp_r31, 7, 7, 1, 2); + Hu3DModelAttrSet(temp_r31->model[8], 1); + fn_1_157BC(temp_r31, 8, 8, 1, 2); + Hu3DModelAttrSet(temp_r31->model[9], 1); + fn_1_157BC(temp_r31, 9, 9, 1, 2); + temp_r31->work[0] = temp_r31->work[1] = temp_r31->work[2] = temp_r31->work[3] = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; +} + +void fn_1_3558(omObjData* arg0) { + StructBssDE4* var_r30; + + var_r30 = &lbl_1_bss_DE4; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 39)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[0]); + Hu3DModelShadowMapSet(arg0->model[0]); + fn_1_157BC(arg0, 0, 0, 1, 2); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 40)); + arg0->motion[1] = Hu3DMotionIDGet(arg0->model[1]); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -680.0f); + Hu3DModelShadowMapSet(arg0->model[1]); + fn_1_157BC(arg0, 1, 1, 1, 2); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 41)); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, -680.0f); + Hu3DModelShadowSet(arg0->model[2]); + fn_1_157BC(arg0, 2, 2, 1, 2); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 42)); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[3]); + arg0->motion[10] = Hu3DJointMotionFile(arg0->model[3], DATA_MAKE_NUM(DATADIR_M435, 44)); + Hu3DModelPosSet(arg0->model[3], 525.0f, 0.0f, -1150.0f); + Hu3DModelShadowSet(arg0->model[3]); + fn_1_157BC(arg0, 3, 10, 1, 1); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 43)); + arg0->motion[4] = Hu3DMotionIDGet(arg0->model[4]); + arg0->motion[11] = Hu3DJointMotionFile(arg0->model[4], DATA_MAKE_NUM(DATADIR_M435, 45)); + Hu3DModelPosSet(arg0->model[4], -525.0f, 0.0f, -1150.0f); + Hu3DModelShadowSet(arg0->model[4]); + fn_1_157BC(arg0, 4, 11, 1, 1); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 36)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 50.0f, 150.0f, 50.0f); + fn_1_157BC(arg0, 5, 5, 1, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 37)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelPosSet(arg0->model[6], 0.0f, 150.0f, 0.0f); + fn_1_157BC(arg0, 6, 6, 1, 2); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 38)); + arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]); + Hu3DModelPosSet(arg0->model[7], 0.0f, 150.0f, 0.0f); + fn_1_157BC(arg0, 7, 7, 1, 2); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 46)); + arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]); + Hu3DModelAttrSet(arg0->model[8], 1); + Hu3DModelLayerSet(arg0->model[8], 1); + fn_1_157BC(arg0, 8, 8, 1, 2); + arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 47)); + arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]); + Hu3DModelAttrSet(arg0->model[9], 1); + Hu3DModelLayerSet(arg0->model[9], 1); + fn_1_157BC(arg0, 9, 9, 1, 2); + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + var_r30->unk04 = var_r30->unk08 = var_r30->unk0C = var_r30->unk10 = 0; + var_r30->unk14 = var_r30->unk18 = var_r30->unk1C = var_r30->unk20 = 0; + arg0->func = fn_1_31BC; +} + +void fn_1_3AF4(s32 arg0) { + StructBssC30* var_r31; + + var_r31 = &lbl_1_bss_C30; + var_r31->unk04 = arg0; +} + +float lbl_1_data_2C4 = 270.0f; + +void fn_1_3B14(omObjData* arg0) { + Vec sp14; + Vec sp8; + ModelData* temp_r30; + StructBssC30* var_r29; + s32 var_r28; + + temp_r30 = &Hu3DData[arg0->model[1]]; + var_r29 = &lbl_1_bss_C30; + if (var_r29->unk04 == 1) { + var_r29->unk04 = 0; + fn_1_157BC(arg0, 0, 0, 1, 0); + fn_1_157BC(arg0, 1, 2, 1, 0); + Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[1], 1); + } else if (var_r29->unk04 >= 2) { + temp_r30->pos.x = 750.0 * cosd(lbl_1_data_2C4); + temp_r30->pos.z = 500.0 + 750.0 * sind(lbl_1_data_2C4); + temp_r30->rot.y += 0.2f; + if (var_r29->unk04 == 2) { + var_r29->unk04 = 3; + lbl_1_bss_4F10.unk00 = HuAudFXPlay(0x6DB); + fn_1_157BC(arg0, 1, 1, 1, 1); + } + lbl_1_data_2C4 -= 0.2f; + if (lbl_1_data_2C4 < 180.0f) { + var_r29->unk04 = 0; + HuAudFXStop(lbl_1_bss_4F10.unk00); + lbl_1_bss_4F10.unk00 = -1; + lbl_1_data_2C4 = 270.0f; + Hu3DModelPosSet(arg0->model[1], -750.0f, 0.0f, 500.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 90.0f, 0.0f); + fn_1_157BC(arg0, 1, 1, 1, 2); + fn_1_7D50(6); + } + } + sp14.x = temp_r30->pos.x; + sp14.y = temp_r30->pos.y; + sp14.z = temp_r30->pos.z; + Hu3D3Dto2D(&sp14, 1, &sp8); + var_r28 = 32.0f + sp8.x * 0.1f; + if (var_r28 <= 32) { + var_r28 = 32; + } else if (var_r28 >= 96) { + var_r28 = 96; + } + if (lbl_1_bss_4F10.unk00 != -1) { + HuAudFXPanning(lbl_1_bss_4F10.unk00, var_r28); + } +} + +void fn_1_3E84(s32 arg0) { + StructBssC30* var_r31; + + var_r31 = &lbl_1_bss_C30; + var_r31->unk08 = arg0; +} + +void fn_1_3EA4(omObjData* arg0) { + StructBssC30* var_r31; + s32 i; + + var_r31 = &lbl_1_bss_C30; + switch (var_r31->unk08) { + case 0: + var_r31->unk10 = 0; + var_r31->unk78 = 7.5f; + var_r31->unk74 = var_r31->unk74; + break; + case 1: + if (lbl_1_bss_4F10.unk14 == 0) { + lbl_1_bss_4F10.unk14 = 1; + lbl_1_bss_4F10.unk04 = HuAudFXPlay(0x6DE); + } + fn_1_4104(1); + var_r31->unk74 -= var_r31->unk78; + if (var_r31->unk74 < 0.0f) { + var_r31->unk74 += 360.0f; + } + break; + case 2: + if (lbl_1_bss_4F10.unk14 == 1) { + lbl_1_bss_4F10.unk14 = 0; + HuAudFXStop(lbl_1_bss_4F10.unk04); + } + for (i = 0; i < 3; i++) { + if (var_r31->unk2C[i] != 7) { + break; + } + } + var_r31->unk74 -= var_r31->unk78; + if (var_r31->unk74 < 0.0f) { + var_r31->unk74 += 360.0f; + } + if (i == 3) { + var_r31->unk08 = 3; + } + break; + case 3: + var_r31->unk74 -= var_r31->unk78; + if (var_r31->unk74 < 0.0f) { + var_r31->unk74 += 360.0f; + } + var_r31->unk78 -= 0.025f; + if (var_r31->unk78 < 0.0f) { + var_r31->unk78 = 0.0f; + } + break; + } + omSetRot(arg0, 0.0f, 0.0f, var_r31->unk74); +} + +void fn_1_4104(s32 arg0) { + StructBssC30* var_r31; + + var_r31 = &lbl_1_bss_C30; + if (var_r31->unk10 == 0) { + var_r31->unk10 = arg0; + } +} + +void fn_1_4130(omObjData* arg0) { + Vec spC; + StructBss4EE8* sp8; + StructBssC30* var_r31; + ModelData* temp_r28; + ModelData* temp_r29; + s32 temp_r26; + s32 i; + + sp8 = &lbl_1_bss_4EE8; + var_r31 = &lbl_1_bss_C30; + temp_r26 = lbl_1_bss_4EE8.unk10 - 1; + switch (var_r31->unk10) { + case 1: + var_r31->unk10 = 2; + if (temp_r26 < 0) { + var_r31->unk10 = 0; + break; + } + for (i = 0; i < 3; i++) { + temp_r28 = &Hu3DData[arg0->model[i + temp_r26 * 3 + 2]]; + var_r31->unk13C[i].x = temp_r28->pos.x; + var_r31->unk13C[i].y = temp_r28->pos.y; + var_r31->unk13C[i].z = temp_r28->pos.z; + var_r31->unk160[i].x = var_r31->unk13C[i].x + rand8() % 50; + var_r31->unk160[i].y = 7.5f; + var_r31->unk160[i].z = var_r31->unk13C[i].z + (rand8() % 150 - 75); + var_r31->unk184[i].x = 0.0f; + var_r31->unk184[i].y = rand8() % 120; + if (rand8() % 2 == 0) { + var_r31->unk184[i].y *= -1.0f; + } + var_r31->unk184[i].z = 5.0f + rand8() % 5; + var_r31->unk14[i] = rand8() % 10 + 15; + } + var_r31->unk20 = 0; + break; + case 2: + for (i = 0; i < 3; i++) { + temp_r29 = &Hu3DData[arg0->model[i + temp_r26 * 3 + 2]]; + spC.x = fn_1_1539C(var_r31->unk13C[i].x, var_r31->unk160[i].x, var_r31->unk20, var_r31->unk14[i]); + spC.y = fn_1_1539C(var_r31->unk13C[i].y, var_r31->unk160[i].y, var_r31->unk20, var_r31->unk14[i]); + spC.z = fn_1_1539C(var_r31->unk13C[i].z, var_r31->unk160[i].z, var_r31->unk20, var_r31->unk14[i]); + Hu3DModelPosSet(arg0->model[i + temp_r26 * 3 + 2], spC.x, spC.y, spC.z); + if (var_r31->unk20 <= var_r31->unk14[i]) { + temp_r29->rot.y = fn_1_15294(temp_r29->rot.y, var_r31->unk184[i].y, 15.0f); + temp_r29->rot.z = fn_1_15294(temp_r29->rot.z, 90.0f, 15.0f); + } else { + temp_r29->rot.z = fn_1_15294(temp_r29->rot.z, 0.0f, 3.0f); + } + } + var_r31->unk20++; + if (var_r31->unk20 >= 60) { + var_r31->unk20 = 0; + var_r31->unk10 = 3; + } + break; + } +} + +s32 fn_1_46D8(float arg0, float arg1) { + s32 sp8[] = { 90, 5, 70, 30, 50, 1, 100, 10 }; + s32 var_r31; + + if (arg0 >= 0.0f && arg0 < 45.0f) { + var_r31 = sp8[0]; + } else if (arg0 >= 45.0f && arg0 < 90.0f) { + var_r31 = sp8[1]; + } else if (arg0 >= 90.0f && arg0 < 135.0f) { + var_r31 = sp8[2]; + } else if (arg0 >= 135.0f && arg0 < 180.0f) { + var_r31 = sp8[3]; + } else if (arg0 >= 180.0f && arg0 < 225.0f) { + var_r31 = sp8[4]; + } else if (arg0 >= 225.0f && arg0 < 270.0f) { + var_r31 = sp8[5]; + } else if (arg0 >= 270.0f && arg0 < 315.0f) { + var_r31 = sp8[6]; + } else if (arg0 >= 315.0f && arg0 < 360.0f) { + var_r31 = sp8[7]; + } + if (arg1 > 75.0f) { + var_r31 = 0; + } + if (arg1 < 25.0f) { + var_r31 = -999; + } + return var_r31; +} + +void fn_1_4904(s32 arg0) { + Vec spC; + StructBssC30* var_r31; + + var_r31 = &lbl_1_bss_C30; + spC.x = -675.0f; + spC.y = var_r31->unkD0[arg0].y - 175.0f; + spC.z = var_r31->unkD0[arg0].z - 500.0f; + var_r31->unk7C[arg0] = var_r31->unk1A8[arg0] + sqrtf(spC.y * spC.y + spC.z * spC.z); + var_r31->unk94[arg0] = var_r31->unk74 - var_r31->unk78 * (var_r31->unk50[arg0] + 2) + atan2d(spC.y, spC.z); + if (var_r31->unk94[arg0] >= 360.0f) { + var_r31->unk94[arg0] -= 360.0f; + } else if (var_r31->unk94[arg0] < 0.0f) { + var_r31->unk94[arg0] += 360.0f; + } + if (var_r31->unk94[arg0] >= 360.0f) { + var_r31->unk94[arg0] -= 360.0f; + } else if (var_r31->unk94[arg0] < 0.0f) { + var_r31->unk94[arg0] += 360.0f; + } + if (var_r31->unk94[arg0] >= 360.0f) { + var_r31->unk94[arg0] -= 360.0f; + } else if (var_r31->unk94[arg0] < 0.0f) { + var_r31->unk94[arg0] += 360.0f; + } + var_r31->unk5C[arg0] = fn_1_46D8(var_r31->unk94[arg0], var_r31->unk7C[arg0]); +} + +void fn_1_4CEC(s32 arg0) { + StructBssC30* var_r31; + + var_r31 = &lbl_1_bss_C30; + if ((var_r31->unk7C[arg0] >= 23.0f && var_r31->unk7C[arg0] <= 27.0f) + || (var_r31->unk7C[arg0] >= 73.0f && var_r31->unk7C[arg0] <= 77.0f)) + { + var_r31->unk1A8[arg0] = 5.0f; + if (rand8() % 2 == 0) { + var_r31->unk1A8[arg0] *= -1.0f; + } + } +} + +void fn_1_4E08(s32 arg0) { + StructBssC30* var_r31; + float temp_f31; + + var_r31 = &lbl_1_bss_C30; + temp_f31 = var_r31->unk94[arg0]; + if ((temp_f31 >= -2.0f && temp_f31 < 2.0f) + || (temp_f31 >= 43.0f && temp_f31 < 47.0f) + || (temp_f31 >= 88.0f && temp_f31 < 92.0f) + || (temp_f31 >= 133.0f && temp_f31 < 137.0f) + || (temp_f31 >= 178.0f && temp_f31 < 182.0f) + || (temp_f31 >= 223.0f && temp_f31 < 227.0f) + || (temp_f31 >= 268.0f && temp_f31 < 272.0f) + || (temp_f31 >= 313.0f && temp_f31 < 317.0f)) + { + var_r31->unk50[arg0]++; + } +} + +s32 fn_1_4FB4(void) { + StructBssC30* var_r29; + s32 var_r28; + s32 i; + + var_r28 = 0; + var_r29 = &lbl_1_bss_C30; + for (i = 0; i < 3; i++) { + var_r28 += var_r29->unk5C[i]; + } + if (var_r28 < 0) { + return 1; + } + if (var_r29->unk24 == var_r28) { + for (i = 0; i < 3; i++) { + var_r29->unk50[i] += 3; + fn_1_4904(i); + } + return 0; + } + if (var_r29->unk24 > var_r28) { + var_r29->unk24 = var_r28; + } + return 1; +} + +s32 fn_1_5438(void) { + Vec spC; + float var_f28; + StructBssC30* var_r30; + s32 var_r29; + s32 i; + + var_r29 = 1; + var_r30 = &lbl_1_bss_C30; + for (i = 0; i < 3; i++) { + spC.x = -675.0f; + spC.y = var_r30->unkD0[i].y - 175.0f; + spC.z = var_r30->unkD0[i].z - 500.0f; + var_f28 = sqrtf(spC.y * spC.y + spC.z * spC.z); + if (var_f28 <= 30.0f) { + var_r29 = 0; + } + } + return var_r29; +} + +void fn_1_5600(s32 arg0) { + StructBssC30* var_r30; + s32 i; + + var_r30 = &lbl_1_bss_C30; + for (i = 0; i < 3; i++) { + var_r30->unk2C[i] = arg0; + } +} + +void fn_1_5644(omObjData* arg0) { + Vec sp2C; + float temp_f27; + float temp_f23; + StructBssC30* var_r31; + s32 temp_r26; + s32 i; + + var_r31 = &lbl_1_bss_C30; + temp_r26 = lbl_1_bss_4EE8.unk14; + for (i = 0; i < 3; i++) { + switch (var_r31->unk2C[i]) { + case 1: + var_r31->unkAC[i].x = var_r31->unkD0[i].x = -675.0f; + var_r31->unkAC[i].y = var_r31->unkD0[i].y = 175.0f; + var_r31->unkAC[i].z = var_r31->unkD0[i].z = 500.0f; + var_r31->unk38[i] = 0; + var_r31->unkF4[i].x = 0.0f; + var_r31->unkF4[i].y = -325.0f; + var_r31->unkF4[i].z = 500.0f; + var_r31->unk118[i].x = var_r31->unk118[i].y = var_r31->unk118[i].z = 0.0f; + var_r31->unk44[i] = 0; + var_r31->unk50[i] = i + 15; + var_r31->unk7C[i] = var_r31->unk88[i] = 0.0f; + var_r31->unk94[i] = var_r31->unkA0[i] = 0.0f; + var_r31->unk5C[i] = var_r31->unk68[i] = 0; + var_r31->unk1A8[i] = 0.0f; + Hu3DModelPosSet(arg0->model[i + temp_r26 * 3 + 2], var_r31->unkF4[i].x, var_r31->unkF4[i].y, var_r31->unkF4[i].z); + Hu3DModelRotSet(arg0->model[i + temp_r26 * 3 + 2], 0.0f, 0.0f, 0.0f); + /* fallthrough */ + case 2: + var_r31->unk2C[i] = 2; + temp_f27 = fn_1_152D4(1.5f, 0.5f, var_r31->unk38[i], 15.0f); + temp_f23 = fn_1_152D4(0.0f, 1.0f, var_r31->unk38[i], 10.0f); + Hu3DModelAttrReset(arg0->model[i + temp_r26 * 3 + 14], 1); + Hu3DModelScaleSet(arg0->model[i + temp_r26 * 3 + 14], temp_f27, temp_f27, temp_f27); + Hu3DModelTPLvlSet(arg0->model[i + temp_r26 * 3 + 14], temp_f23); + Hu3DModelPosSet(arg0->model[i + temp_r26 * 3 + 14], var_r31->unkD0[i].x, var_r31->unkD0[i].y, var_r31->unkD0[i].z); + if (var_r31->unk38[i]++ >= 20) { + var_r31->unk38[i] = 0; + var_r31->unk2C[i] = 3; + } + break; + case 3: + if (var_r31->unk38[i]++ >= 30) { + var_r31->unk38[i] = 0; + temp_f23 = 100.0f - i * 15; + temp_f27 = 2.0f * (rand8() % 180); + var_r31->unkAC[i].x = -675.0f; + var_r31->unkAC[i].y = 175.0 + temp_f23 * sind(temp_f27); + var_r31->unkAC[i].z = 500.0 + temp_f23 * cosd(temp_f27); + } + var_r31->unkD0[i].x = var_r31->unkAC[i].x; + var_r31->unkD0[i].y = fn_1_15294(var_r31->unkD0[i].y, var_r31->unkAC[i].y, 30.0f); + var_r31->unkD0[i].z = fn_1_15294(var_r31->unkD0[i].z, var_r31->unkAC[i].z, 30.0f); + Hu3DModelPosSet(arg0->model[i + temp_r26 * 3 + 14], var_r31->unkD0[i].x, var_r31->unkD0[i].y, var_r31->unkD0[i].z); + break; + case 4: + var_r31->unk2C[i] = 100; + fn_1_4904(i); + fn_1_4CEC(i); + fn_1_4E08(i); + fn_1_4904(i); + var_r31->unk28 = 0; + HuAudFXPlay(0x6DC); + /* fallthrough */ + case 100: + var_r31->unk2C[i] = 5; + if (var_r31->unk28 == 1) { + var_r31->unk2C[i] = 5; + } + if (i == 2) { + while (fn_1_4FB4() == 0) { + } + var_r31->unk28 = 1; + } + Hu3DModelAttrReset(arg0->model[i + temp_r26 * 3 + 2], 1); + break; + case 5: + var_r31->unkF4[i].x = fn_1_1526C(0.0f, -675.0f, var_r31->unk44[i], var_r31->unk50[i]); + var_r31->unkF4[i].y = fn_1_1526C(175.0f, var_r31->unkD0[i].y, var_r31->unk44[i], var_r31->unk50[i]); + var_r31->unkF4[i].z = fn_1_1526C(500.0f, var_r31->unkD0[i].z, var_r31->unk44[i], var_r31->unk50[i]); + var_r31->unk118[i].x -= 360.0f / var_r31->unk50[i]; + if (var_r31->unk118[i].x >= 360.0f) { + var_r31->unk118[i].x -= 360.0f; + } else if (var_r31->unk118[i].x < 0.0f) { + var_r31->unk118[i].x += 360.0f; + } + Hu3DModelPosSet(arg0->model[i + temp_r26 * 3 + 2], var_r31->unkF4[i].x, var_r31->unkF4[i].y, var_r31->unkF4[i].z); + Hu3DModelRotSet(arg0->model[i + temp_r26 * 3 + 2], var_r31->unk118[i].x, 0.0f, 0.0f); + if (var_r31->unk44[i]++ >= var_r31->unk50[i]) { + var_r31->unk2C[i] = 6; + var_r31->unk38[i] = 0; + } + break; + case 6: + var_r31->unk2C[i] = 7; + sp2C.x = -675.0f; + sp2C.y = var_r31->unkF4[i].y - 175.0f; + sp2C.z = var_r31->unkF4[i].z - 500.0f; + var_r31->unk88[i] = var_r31->unk1A8[i] + sqrtf(sp2C.y * sp2C.y + sp2C.z * sp2C.z); + var_r31->unkA0[i] = var_r31->unk74 + atan2d(sp2C.y, sp2C.z); + if (var_r31->unkA0[i] >= 360.0f) { + var_r31->unkA0[i] -= 360.0f; + } else if (var_r31->unkA0[i] < 0.0f) { + var_r31->unkA0[i] += 360.0f; + } + var_r31->unk118[i].y = atan2d(sp2C.y, sp2C.z); + var_r31->unk68[i] = fn_1_46D8(var_r31->unkA0[i], var_r31->unk88[i]); + if (var_r31->unk68[i] >= 0) { + HuAudFXPlay(0x6DD); + } else { + HuAudFXPlay(0x6DF); + } + fn_1_8544(7); + fn_1_3E84(2); + omVibrate(fn_1_8E48(lbl_1_bss_4EE8.unk14), 12, 6, 6); + /* fallthrough */ + case 7: + temp_f27 = fn_1_152D4(0.5f, 1.5f, var_r31->unk38[i], 15.0f); + temp_f23 = fn_1_152D4(1.0f, 0.0f, var_r31->unk38[i], 10.0f); + Hu3DModelScaleSet(arg0->model[i + temp_r26 * 3 + 14], temp_f27, temp_f27, temp_f27); + Hu3DModelTPLvlSet(arg0->model[i + temp_r26 * 3 + 14], temp_f23); + if (var_r31->unk38[i]++ >= 20) { + Hu3DModelAttrSet(arg0->model[i + temp_r26 * 3 + 14], 1); + } + var_r31->unkF4[i].x = -675.0f; + var_r31->unkF4[i].y = 175.0 + var_r31->unk88[i] * sind(var_r31->unk118[i].y); + var_r31->unkF4[i].z = 500.0 + var_r31->unk88[i] * cosd(var_r31->unk118[i].y); + Hu3DModelPosSet(arg0->model[i + temp_r26 * 3 + 2], var_r31->unkF4[i].x, var_r31->unkF4[i].y, var_r31->unkF4[i].z); + Hu3DModelRotSet(arg0->model[i + temp_r26 * 3 + 2], var_r31->unk118[i].x, 0.0f, 0.0f); + var_r31->unk118[i].z = var_r31->unk118[i].y + var_r31->unk74; + if (var_r31->unk118[i].z >= 360.0f) { + var_r31->unk118[i].z -= 360.0f; + } else if (var_r31->unk118[i].z < 0.0f) { + var_r31->unk118[i].z += 360.0f; + } + var_r31->unk118[i].x -= var_r31->unk78; + if (var_r31->unk118[i].x >= 360.0f) { + var_r31->unk118[i].x -= 360.0f; + } else if (var_r31->unk118[i].x < 0.0f) { + var_r31->unk118[i].x += 360.0f; + } + var_r31->unk118[i].y += var_r31->unk78; + if (var_r31->unk118[i].y >= 360.0f) { + var_r31->unk118[i].y -= 360.0f; + } else if (var_r31->unk118[i].y < 0.0f) { + var_r31->unk118[i].y += 360.0f; + } + break; + } + } +} + +void fn_1_725C(omObjData* arg0) { + fn_1_3B14(arg0); + fn_1_3EA4(arg0); + fn_1_5644(arg0); + fn_1_4130(arg0); +} + +void fn_1_72A4(StructBssC30* arg0) { + omObjData* temp_r29; + s32 i; + s32 j; + + temp_r29 = arg0->unk00; + Hu3DModelRotSet(temp_r29->model[0], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(temp_r29->model[0], 1); + Hu3DModelPosSet(temp_r29->model[1], 0.0f, 0.0f, -250.0f); + Hu3DModelRotSet(temp_r29->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(temp_r29->model[1], 1); + for (i = 0; i < 4; i++) { + for (j = 0; j < 3; j++) { + Hu3DModelPosSet(temp_r29->model[i + 2], 0.0f, -325.0f, 500.0f); + Hu3DModelAttrSet(temp_r29->model[j + i * 3 + 2], 1); + Hu3DModelAttrSet(temp_r29->model[j + i * 3 + 14], 1); + } + } + arg0->unk74 = 0.0f; + for (i = 0; i < 3; i++) { + arg0->unk2C[i] = 0; + arg0->unkAC[i].x = arg0->unkD0[i].x = -675.0f; + arg0->unkAC[i].y = arg0->unkD0[i].y = 175.0f; + arg0->unkAC[i].z = arg0->unkD0[i].z = 500.0f; + arg0->unk38[i] = 0; + arg0->unkF4[i].x = 0.0f; + arg0->unkF4[i].y = -325.0f; + arg0->unkF4[i].z = 500.0f; + arg0->unk118[i].x = arg0->unk118[i].y = arg0->unk118[i].z = 0.0f; + arg0->unk44[i] = 0; + arg0->unk50[i] = 0; + arg0->unk7C[i] = arg0->unk88[i] = 0.0f; + arg0->unk94[i] = arg0->unkA0[i] = 0.0f; + arg0->unk5C[i] = arg0->unk68[i] = 0; + } + arg0->unk24 = 9999; + temp_r29->work[0] = temp_r29->work[1] = temp_r29->work[2] = temp_r29->work[3] = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14[0] = arg0->unk14[1] = arg0->unk14[2] = arg0->unk20 = 0; +} + +void fn_1_7628(omObjData* arg0) { + StructBssC30* var_r30; + s32 i; + s32 j; + + var_r30 = &lbl_1_bss_C30; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 24)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[0]); + Hu3DModelRotSet(arg0->model[0], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[0], 1U); + Hu3DModelLayerSet(arg0->model[0], 1); + Hu3DModelShadowSet(arg0->model[0]); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 25)); + arg0->motion[1] = Hu3DMotionIDGet(arg0->model[1]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M435, 35)); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -250.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelLayerSet(arg0->model[1], 1); + Hu3DModelShadowSet(arg0->model[1]); + Hu3DModelHookSet(arg0->model[1], "m435a02-itemfook_d", arg0->model[0]); + for (i = 0; i < 4; i++) { + for (j = 0; j < 3; j++) { + arg0->model[j + i * 3 + 2] = Hu3DModelCreateFile(lbl_1_data_0[fn_1_8F34(i)][0]); + Hu3DModelAttrSet(arg0->model[j + i * 3 + 2], 1); + Hu3DModelShadowSet(arg0->model[j + i * 3 + 2]); + arg0->model[j + i * 3 + 14] = Hu3DModelCreateFile(lbl_1_data_0[fn_1_8F34(i)][1]); + Hu3DModelRotSet(arg0->model[j + i * 3 + 14], 0.0f, 90.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[j + i * 3 + 14], 1); + } + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + var_r30->unk04 = var_r30->unk08 = var_r30->unk0C = var_r30->unk10 = 0; + var_r30->unk14[0] = var_r30->unk14[1] = var_r30->unk14[2] = var_r30->unk20 = 0; + arg0->func = fn_1_725C; +} + +void fn_1_799C(s32 arg0) { + StructBssC1C* var_r31; + + var_r31 = &lbl_1_bss_C1C; + var_r31->unk00->work[0] = arg0; +} + +void fn_1_79C0(omObjData* arg0) { + switch (arg0->work[0]) { + case 1: + arg0->work[0] = 0; + fn_1_157BC(arg0, 0, 1, 30, 1); + break; + case 2: + arg0->work[0] = 0; + fn_1_157BC(arg0, 0, 2, 10, 0); + break; + case 3: + arg0->work[0] = 0; + fn_1_157BC(arg0, 0, 3, 10, 0); + break; + } +} + +void fn_1_7A78(StructBssC1C* arg0) { + omObjData* temp_r31; + + temp_r31 = arg0->unk00; + omSetTra(temp_r31, 0.0f, 37.0f, -565.0f); + omSetSca(temp_r31, 1.5f, 1.5f, 1.5f); + fn_1_157BC(temp_r31, 0, 1, 1, 1); + temp_r31->work[0] = temp_r31->work[1] = temp_r31->work[2] = temp_r31->work[3] = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_7B44(omObjData* arg0) { + StructBssC1C* var_r30; + + var_r30 = &lbl_1_bss_C1C; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 48)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 53)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 49)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 50)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 51)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 52)); + omSetTra(arg0, 0.0f, 37.0f, -565.0f); + omSetSca(arg0, 1.5f, 1.5f, 1.5f); + Hu3DModelShadowSet(arg0->model[0]); + fn_1_157BC(arg0, 0, 1, 1, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + var_r30->unk04 = var_r30->unk08 = var_r30->unk0C = var_r30->unk10 = 0; + arg0->func = fn_1_79C0; +} + +void fn_1_7D28(s32 arg0, s32 arg1) { + StructBss2A4* temp_r31; + + temp_r31 = &lbl_1_bss_2A4[arg0]; + temp_r31->unk1C = arg1; +} + +void fn_1_7D50(s32 arg0) { + StructBss2A4* temp_r31; + + temp_r31 = &lbl_1_bss_2A4[1]; + temp_r31->unk20 = arg0; +} + +void fn_1_7D74(omObjData* arg0) { + StructBss2A4* temp_r30; + + temp_r30 = &lbl_1_bss_2A4[arg0->work[0]]; + switch (temp_r30->unk1C) { + case 1: + temp_r30->unk1C = 0; + if (arg0->work[0] != 0) { + fn_1_157BC(arg0, 0, 0, 30, 1); + } else { + fn_1_157BC(arg0, 0, 0, 30, 1); + fn_1_157BC(arg0, 1, 5, 30, 1); + } + break; + case 2: + temp_r30->unk1C = 0; + if (arg0->work[0] != 0) { + fn_1_157BC(arg0, 0, 4, 10, 0); + } else { + fn_1_157BC(arg0, 0, 2, 10, 0); + fn_1_157BC(arg0, 1, 5, 10, 2); + } + break; + case 3: + temp_r30->unk1C = 0; + if (arg0->work[0] != 0) { + fn_1_157BC(arg0, 0, 9, 5, 0); + } + break; + } +} + +void fn_1_7ED4(omObjData* arg0) { + StructBss2A4* temp_r31; + Mtx sp38; + Mtx sp8; + + temp_r31 = &lbl_1_bss_2A4[arg0->work[0]]; + switch (temp_r31->unk20) { + case 1: + case 3: + case 6: + temp_r31->unk04.x = arg0->trans.x; + temp_r31->unk04.y = arg0->trans.y; + temp_r31->unk04.z = arg0->trans.z; + Hu3DModelObjMtxGet(lbl_1_bss_C30.unk00->model[1], "435a02-point00", sp38); + temp_r31->unk10.x = sp38[0][3]; + temp_r31->unk10.y = sp38[1][3]; + temp_r31->unk10.z = sp38[2][3]; + if (temp_r31->unk20 == 1) { + temp_r31->unk10.x = temp_r31->unk04.x - 30.0f; + } else if (temp_r31->unk20 == 6) { + temp_r31->unk10.x = (120.0f + sp38[0][3]); + temp_r31->unk10.z = (sp38[2][3] - 50.0f); + } + temp_r31->unk2C = 0; + temp_r31->unk20++; + break; + case 2: + fn_1_15934(arg0, 0, 1, 10, 1); + fn_1_195F4(arg0, 0, &temp_r31->unk04, &temp_r31->unk10, 5, temp_r31->unk2C++, 0xF); + if (temp_r31->unk2C > 15) { + temp_r31->unk20++; + } + break; + case 4: + if (temp_r31->unk2C == 25) { + fn_1_15934(arg0, 0, 0, 5, 1); + } else if (temp_r31->unk2C == 40) { + fn_1_15934(arg0, 0, 5, 30, 1); + } + fn_1_195F4(arg0, 0, &temp_r31->unk04, &temp_r31->unk10, 10, temp_r31->unk2C++, 25); + if (temp_r31->unk2C > 60) { + fn_1_3AF4(2); + temp_r31->unk20++; + } + break; + case 5: + Hu3DModelObjMtxGet(lbl_1_bss_C30.unk00->model[1], "435a02-point00", sp8); + omSetTra(arg0, sp8[0][3], sp8[1][3], sp8[2][3]); + omSetRot(arg0, 0.0f, Hu3DData[lbl_1_bss_C30.unk00->model[1]].rot.y - 90.0f, 0.0f); + break; + case 7: + fn_1_15934(arg0, 0, 1, 10, 1); + fn_1_19530(arg0, 0, &temp_r31->unk04, &temp_r31->unk10, 5, temp_r31->unk2C++, 15); + fn_1_19658(arg0, 0, 90.0f, 5); + if (temp_r31->unk2C > 15) { + temp_r31->unk20++; + } + break; + case 8: + fn_1_15934(arg0, 0, 0, 5, 1); + lbl_1_bss_14 = 1; + temp_r31->unk20 = temp_r31->unk2C = 0; + break; + } +} + +void fn_1_8250(s32 arg0) { + StructBss2A4* temp_r31; + + temp_r31 = &lbl_1_bss_2A4[1]; + temp_r31->unk24 = arg0; +} + +void fn_1_8274(omObjData* arg0) { + StructBss2A4* temp_r31; + Mtx sp8; + + temp_r31 = &lbl_1_bss_2A4[arg0->work[0]]; + switch (temp_r31->unk24) { + case 1: + case 3: + case 5: + fn_1_15934(temp_r31->unk00, 0, 1, 10, 1); + temp_r31->unk04.x = arg0->trans.x; + temp_r31->unk04.y = arg0->trans.y; + temp_r31->unk04.z = arg0->trans.z; + if (temp_r31->unk24 == 1) { + temp_r31->unk10.x = -400.0f; + temp_r31->unk10.y = arg0->trans.y; + temp_r31->unk10.z = -310.0f; + } else if (temp_r31->unk24 == 3) { + temp_r31->unk10.x = 400.0f; + temp_r31->unk10.y = arg0->trans.y; + temp_r31->unk10.z = arg0->trans.z; + } else if (temp_r31->unk24 == 5) { + temp_r31->unk10.x = 400.0f; + temp_r31->unk10.y = 37.0f; + temp_r31->unk10.z = -425.0f; + } + temp_r31->unk2C = 0; + temp_r31->unk24++; + break; + case 2: + fn_1_195F4(arg0, 0, &temp_r31->unk04, &temp_r31->unk10, 10, temp_r31->unk2C++, 90); + if (temp_r31->unk2C > 90) { + temp_r31->unk24++; + } + break; + case 4: + fn_1_195F4(arg0, 0, &temp_r31->unk04, &temp_r31->unk10, 10, temp_r31->unk2C++, 90); + if (temp_r31->unk2C > 90) { + temp_r31->unk24++; + } + break; + case 6: + fn_1_195F4(arg0, 0, &temp_r31->unk04, &temp_r31->unk10, 10, temp_r31->unk2C++, 15); + if (temp_r31->unk2C > 15) { + temp_r31->unk24++; + temp_r31->unk2C = 0; + } + break; + case 7: + fn_1_19658(arg0, 0, -15.0f, 5); + if (temp_r31->unk2C++ > 15) { + temp_r31->unk24++; + } + break; + case 8: + fn_1_15934(temp_r31->unk00, 0, 0, 10, 1); + temp_r31->unk24 = 0; + break; + case 10: + temp_r31->unk24 = 0; + Hu3DModelObjMtxGet(lbl_1_bss_C30.unk00->model[1], "435a02-point00", sp8); + arg0->trans.x = sp8[0][3]; + arg0->trans.y = sp8[1][3]; + arg0->trans.z = sp8[2][3]; + break; + } +} + +void fn_1_8544(s32 arg0) { + StructBss2A4* temp_r31; + + temp_r31 = &lbl_1_bss_2A4[1]; + fn_1_15934(temp_r31->unk00, 0, arg0, 1, 0); +} + +void fn_1_8590(omObjData* arg0) { + StructBss2A4* temp_r29; + + temp_r29 = &lbl_1_bss_2A4[arg0->work[0]]; + if (temp_r29->unk1C != 0) { + fn_1_7D74(arg0); + } + if (temp_r29->unk20 != 0) { + fn_1_7ED4(arg0); + } + fn_1_8274(arg0); +} + +void fn_1_8734(StructBss2A4* arg0) { + omObjData* temp_r30; + + temp_r30 = arg0->unk00; + if (temp_r30->work[0] != 0) { + omSetTra(temp_r30, 400.0f, 37.0f, -425.0f); + omSetRot(temp_r30, 0.0f, -15.0f, 0.0f); + fn_1_157BC(temp_r30, 0, 0, 1, 1); + fn_1_19974(&arg0->unk3C, 0); + fn_1_198F8(&arg0->unk3C, -1); + fn_1_19968(&arg0->unk3C, -1); + } else { + omSetTra(temp_r30, -400.0f, 37.0f, -425.0f); + fn_1_157BC(temp_r30, 0, 0, 1, 1); + fn_1_157BC(temp_r30, 1, 5, 1, 1); + } + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk1C = arg0->unk20 = arg0->unk24 = arg0->unk28 = 0; + arg0->unk2C = arg0->unk30 = arg0->unk34 = arg0->unk38 = 0; + lbl_1_bss_14 = 0; +} + +void fn_1_88B0(omObjData* arg0) { + StructBss2A4* temp_r30; + s32 var_r29; + + var_r29 = arg0->work[0]; + temp_r30 = &lbl_1_bss_2A4[var_r29]; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 56)); + if (arg0->work[0] != 0) { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 57)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 58)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 62)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 63)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 64)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 65)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 66)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 67)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 68)); + arg0->motion[9] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 69)); + arg0->motion[10] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 70)); + arg0->motion[11] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 71)); + arg0->motion[12] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 72)); + omSetTra(arg0, 400.0f, 37.0f, -425.0f); + omSetRot(arg0, 0.0f, -15.0f, 0.0f); + fn_1_157BC(arg0, 0, 0, 1, 1); + fn_1_1A33C(lbl_1_bss_0, &temp_r30->unk3C, arg0->model[0], "g007m0-skl_at", 0x100, 0); + fn_1_19974(&temp_r30->unk3C, 0); + fn_1_198F8(&temp_r30->unk3C, -1); + fn_1_19968(&temp_r30->unk3C, -1); + } else { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 59)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 60)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 61)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 73)); + omSetTra(arg0, -400.0f, 37.0f, -425.0f); + fn_1_157BC(arg0, 0, 0, 1, 1); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 74)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M435, 75)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M435, 76)); + Hu3DModelHookSet(arg0->model[0], "g007m0-itemhook_r", arg0->model[1]); + Hu3DModelLayerSet(arg0->model[0], 2); + Hu3DModelLayerSet(arg0->model[1], 2); + fn_1_157BC(arg0, 1, 5, 1, 1); + } + Hu3DModelShadowSet(arg0->model[0]); + arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + temp_r30->unk1C = temp_r30->unk20 = temp_r30->unk24 = temp_r30->unk28 = 0; + temp_r30->unk2C = temp_r30->unk30 = temp_r30->unk34 = temp_r30->unk38 = 0; + lbl_1_bss_14 = 0; + arg0->func = fn_1_8590; +} + +s32 fn_1_8E48(s32 arg0) { + StructBssE88* temp_r31; + + temp_r31 = &lbl_1_bss_E88[arg0]; + return temp_r31->unk24; +} + +s32 fn_1_8E70(void) { + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_E88[i].unk2C != 0) { + var_r30++; + } + } + return var_r30; +} + +s32 fn_1_8EC8(s32 arg0) { + if (lbl_1_bss_E88[arg0].unk2C != 0) { + return 1; + } else { + return 0; + } +} + +s32 fn_1_8EF4(s32 arg0) { + if (HuPadBtnDown[lbl_1_bss_E88[arg0].unk38] == 0x100) { + return 1; + } else { + return 0; + } +} + +s32 fn_1_8F34(s32 arg0) { + return lbl_1_bss_E88[arg0].unk34; +} + +void fn_1_8F4C(void) { + StructBssE88* temp_r31; + s32 sp8[4]; + s32 i; + + sp8[0] = GWPlayerCurrGet(); + for (i = 1; i < 4; i++) { + sp8[i] = sp8[i - 1] + 1; + if (sp8[i] >= 4) { + sp8[i] = 0; + } + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_E88[i]; + temp_r31->unk24 = sp8[i]; + temp_r31->unk28 = GWPlayerCfg[temp_r31->unk24].group; + temp_r31->unk2C = GWPlayerCfg[temp_r31->unk24].iscom; + temp_r31->unk30 = GWPlayerCfg[temp_r31->unk24].diff; + temp_r31->unk34 = GWPlayerCfg[temp_r31->unk24].character; + temp_r31->unk38 = GWPlayerCfg[temp_r31->unk24].pad_idx; + } +} + +void fn_1_909C(omObjData* arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6) { + StructBssE88* sp18; + float temp_f31; + float temp_f30; + float var_f26; + float var_f27; + + sp18 = &lbl_1_bss_E88[arg0->work[0]]; + temp_f31 = arg1.x - arg0->trans.x; + temp_f30 = arg0->trans.z - arg1.z; + var_f26 = 90.0 + atan2d(temp_f30, temp_f31); + var_f27 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (var_f27 <= arg4) { + temp_f31 = temp_f30 = 0.0f; + } else { + temp_f31 = 72.0f * (temp_f31 / var_f27); + temp_f30 = 72.0f * (temp_f30 / var_f27); + } + var_f27 = arg3 * (sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30) / 72.0f); + if (var_f27 >= arg3) { + var_f27 = arg3; + } else if (var_f27 <= 1.0f) { + temp_f31 = temp_f30 = var_f27 = 0.0f; + } + if (temp_f31 != 0.0f || temp_f30 != 0.0f || arg2 >= 0.0f) { + if (arg2 >= 0.0f && temp_f31 == 0.0f && temp_f30 == 0.0f) { + var_f26 = arg2; + } + if (var_f26 >= 180.0f) { + if (arg0->rot.y - var_f26 >= 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 < -180.0f) { + arg0->rot.y += 360.0f; + } + } else { + if (arg0->rot.y - var_f26 > 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 <= -180.0f) { + arg0->rot.y += 360.0f; + } + } + arg0->rot.y = (var_f26 + arg0->rot.y * (arg5 - 1.0f)) / arg5; + } + arg0->trans.x += var_f27 * sind(arg0->rot.y); + arg0->trans.z += var_f27 * cosd(arg0->rot.y); + if (var_f27 >= 6.75f) { + if (arg6 != 0) { + fn_1_15934(arg0, 0, 5, 10, 1); + } else { + fn_1_15934(arg0, 0, 2, 10, 1); + } + } else { + if (var_f27 > 0.0f) { + fn_1_15934(arg0, 0, 2, 10, 1); + } else { + fn_1_15934(arg0, 0, 0, 10, 1); + } + } +} + +void fn_1_9768(s32 arg0, s32 arg1) { + StructBssE88* temp_r31; + + temp_r31 = &lbl_1_bss_E88[arg0]; + temp_r31->unk04 = arg1; +} + +void fn_1_9790(omObjData* arg0) { + StructBssE88* temp_r31; + + temp_r31 = &lbl_1_bss_E88[arg0->work[0]]; + switch (temp_r31->unk04) { + case 0: + temp_r31->unk04 = 99; + Hu3DModelAttrSet(arg0->model[0], 1); + break; + case 1: + temp_r31->unk04 = 99; + Hu3DModelAttrReset(arg0->model[0], 1); + break; + } +} + +void fn_1_9824(s32 arg0, s32 arg1) { + StructBssE88* temp_r31; + + temp_r31 = &lbl_1_bss_E88[arg0]; + temp_r31->unk08 = arg1; +} + +void fn_1_984C(omObjData* arg0) { + StructBssE88* temp_r30; + HsfMaterial* var_r31; + HsfData* temp_r28; + char** temp_r27; + s32 var_r23; + s32 i, j; + ModelData* temp_r25; + HsfAttribute* temp_r24; + + temp_r30 = &lbl_1_bss_E88[arg0->work[0]]; + if (temp_r30->unk08 != 1) { + return; + } + var_r23 = 1; + temp_r25 = &Hu3DData[arg0->model[0]]; + temp_r28 = temp_r25->hsfData; + var_r31 = temp_r28->material; + if (temp_r30->unk34 == 3) { + for (i = 0; i < temp_r25->hsfData->materialCnt; i++, var_r31++) { + if (i == 1 || i == 2) { + continue; + } + var_r31->color[0] *= temp_r30->unk3C; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk3C; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk3C; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } else { + temp_r27 = CharModelTexNameGet(temp_r30->unk34, 2); + for (i = 0; i < temp_r28->materialCnt; i++, var_r31++) { + var_r23 = 1; + for (j = 0; j < var_r31->numAttrs; j++) { + temp_r24 = &temp_r28->attribute[var_r31->attrs[j]]; + if (strcmp(temp_r27[0], temp_r24->bitmap->name) == 0 || strcmp(temp_r27[1], temp_r24->bitmap->name) == 0) { + var_r23 = 0; + } + } + if (var_r23 == 0) { + continue; + } + var_r31->color[0] *= temp_r30->unk3C; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk3C; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk3C; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } + temp_r30->unk3C -= 0.01; + if (temp_r30->unk3C < 0.0f) { + temp_r30->unk08 = 99; + temp_r30->unk3C = 0.0f; + } +} + +void fn_1_9BCC(s32 arg0, s32 arg1) { + StructBssE88* temp_r31; + + temp_r31 = &lbl_1_bss_E88[arg0]; + temp_r31->unk0C = arg1; + temp_r31->unk1C = 15 - arg1 * 5; + temp_r31->unk20 = 0; +} + +void fn_1_9C08(omObjData* arg0) { + StructBssE88* temp_r31 = &lbl_1_bss_E88[arg0->work[0]]; + Vec sp14[] = { + { 0.0f, 0.0f, 0.0f }, + { 600.0f, 0.0f, 800.0f }, + { -200.0f, 0.0f, 800.0f }, + { -1000.0f, 0.0f, 400.0f } + }; + + if (temp_r31->unk0C >= 1) { + if (temp_r31->unk1C-- <= 0) { + temp_r31->unk20 = 1; + } + if (temp_r31->unk20 != 0) { + fn_1_909C(arg0, sp14[temp_r31->unk0C], -1.0f, 7.0f + temp_r31->unk0C, 30.0f, 5.0f, 1); + } + } +} + +void fn_1_9D88(omObjData* arg0) { + fn_1_9790(arg0); + fn_1_984C(arg0); + fn_1_9C08(arg0); +} + +void fn_1_9F7C(StructBssE88* arg0) { + omObjData* temp_r30 = arg0->unk00; + Vec sp8[] = { + { 0.0f, 0.0f, 500.0f }, + { 200.0f, 0.0f, 300.0f }, + { 200.0f, 0.0f, 450.0f }, + { 200.0f, 0.0f, 600.0f } + }; + s32 temp_r29; + + temp_r29 = temp_r30->work[0]; + omSetTra(temp_r30, sp8[temp_r29].x, sp8[temp_r29].y, sp8[temp_r29].z); + omSetRot(temp_r30, 0.0f, -90.0f, 0.0f); + Hu3DModelAttrSet(temp_r30->model[0], 1); + fn_1_15934(temp_r30, 0, 0, 0, 1); + fn_1_19974(&arg0->unk58, 0); + fn_1_198F8(&arg0->unk58, -1); + fn_1_19968(&arg0->unk58, -1); + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk40 = arg0->unk44 = arg0->unk48 = 0.0f; + arg0->unk4C = arg0->unk50 = arg0->unk54 = 0.0f; + arg0->unk3C = 1.0f; +} + +void fn_1_A148(omObjData* arg0) { + s32 temp_r29 = arg0->work[0]; + StructBssE88* temp_r31 = &lbl_1_bss_E88[temp_r29]; + Vec sp8[] = { + { 0.0f, 0.0f, 500.0f }, + { 200.0f, 0.0f, 300.0f }, + { 200.0f, 0.0f, 450.0f }, + { 200.0f, 0.0f, 600.0f } + }; + + arg0->model[0] = CharModelCreate(temp_r31->unk34, 2); + arg0->motion[0] = CharModelMotionCreate(temp_r31->unk34, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[1] = CharModelMotionCreate(temp_r31->unk34, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2)); + arg0->motion[2] = CharModelMotionCreate(temp_r31->unk34, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[6] = CharModelMotionCreate(temp_r31->unk34, DATA_MAKE_NUM(DATADIR_MARIOMOT, 28)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, temp_r31->unk34)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 8 + temp_r31->unk34)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M435, 16 + temp_r31->unk34)); + omSetTra(arg0, sp8[temp_r29].x, sp8[temp_r29].y, sp8[temp_r29].z); + omSetRot(arg0, 0.0f, -90.0f, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrSet(arg0->model[0], 1); + fn_1_15934(arg0, 0, 0, 0, 1); + fn_1_1A33C(lbl_1_bss_0, &temp_r31->unk58, arg0->model[0], lbl_1_data_E0[temp_r31->unk34], lbl_1_data_100[temp_r31->unk34][0], lbl_1_data_100[temp_r31->unk34][1]); + fn_1_19974(&temp_r31->unk58, 0); + fn_1_198F8(&temp_r31->unk58, -1); + fn_1_19968(&temp_r31->unk58, -1); + arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + temp_r31->unk04 = temp_r31->unk08 = temp_r31->unk0C = temp_r31->unk10 = 0; + temp_r31->unk14 = temp_r31->unk18 = temp_r31->unk1C = temp_r31->unk20 = 0; + temp_r31->unk40 = temp_r31->unk44 = temp_r31->unk48 = 0.0f; + temp_r31->unk4C = temp_r31->unk50 = temp_r31->unk54 = 0.0f; + temp_r31->unk3C = 1.0f; + CharModelMotionDataClose(temp_r31->unk34); + arg0->func = fn_1_9D88; +} + +void fn_1_A4B8(s32 arg0, s32 arg1) { + StructBss144* var_r31; + + var_r31 = &lbl_1_bss_144[arg0]; + var_r31->unk2C = arg1; +} + +void fn_1_A4E0(omObjData* arg0) { + StructBss144* temp_r31; + s32 i; + + temp_r31 = &lbl_1_bss_144[arg0->work[0]]; + switch (temp_r31->unk2C) { + case 0: + temp_r31->unk4C -= 0.1f; + if (temp_r31->unk4C < 0.0f) { + temp_r31->unk4C = 0.0f; + } + break; + case 1: + temp_r31->unk4C += 0.1f; + if (temp_r31->unk4C > 1.0f) { + temp_r31->unk4C = 1.0f; + } + break; + } + for (i = 0; i < 6; i++) { + if (temp_r31->unk4C > 0.0f) { + espDispOn(temp_r31->unk04[i]); + } else { + espDispOff(temp_r31->unk04[i]); + } + if (i == 5) { + espTPLvlSet(temp_r31->unk04[i], 0.5f * temp_r31->unk4C); + } else { + espTPLvlSet(temp_r31->unk04[i], temp_r31->unk4C); + } + } +} + +void fn_1_A670(s32 arg0, s32 arg1) { + StructBss144* temp_r31; + + temp_r31 = &lbl_1_bss_144[arg0]; + temp_r31->unk54 = temp_r31->unk50; + temp_r31->unk50 = arg1; + if (temp_r31->unk50 < 0) { + temp_r31->unk50 = 0; + } else if (temp_r31->unk50 > 999) { + temp_r31->unk50 = 999; + } + temp_r31->unk3C = 0; +} + +void fn_1_A6D4(omObjData* arg0) { + StructBss144* temp_r31; + s32 temp_r30; + s32 var_r29; + + temp_r31 = &lbl_1_bss_144[arg0->work[0]]; + if (temp_r31->unk3C <= 60) { + var_r29 = fn_1_152D4(temp_r31->unk54, temp_r31->unk50, temp_r31->unk3C++, 60.0f); + } else { + var_r29 = temp_r31->unk54 = temp_r31->unk50; + } + if ((temp_r30 = var_r29 / 100) == 0) { + espDispOff(temp_r31->unk04[0]); + } + espBankSet(temp_r31->unk04[0], temp_r30); + if ((temp_r30 = (var_r29 % 100) / 10) == 0 && var_r29 / 100 == 0) { + espDispOff(temp_r31->unk04[1]); + } + espBankSet(temp_r31->unk04[1], temp_r30); + temp_r30 = var_r29 % 10; + espBankSet(temp_r31->unk04[2], temp_r30); +} + +void fn_1_A8C4(omObjData* arg0) { + fn_1_A4E0(arg0); + fn_1_A6D4(arg0); +} + +void fn_1_ABFC(StructBss144* arg0) { + omObjData* temp_r30; + + temp_r30 = arg0->unk00; + espTPLvlSet(arg0->unk04[5], 0.0f); + espDispOff(arg0->unk04[5]); + espTPLvlSet(arg0->unk04[4], 0.0f); + espDispOff(arg0->unk04[4]); + espTPLvlSet(arg0->unk04[3], 0.0f); + espDispOff(arg0->unk04[3]); + espTPLvlSet(arg0->unk04[2], 0.0f); + espDispOff(arg0->unk04[2]); + espTPLvlSet(arg0->unk04[1], 0.0f); + espDispOff(arg0->unk04[1]); + espTPLvlSet(arg0->unk04[0], 0.0f); + espDispOff(arg0->unk04[0]); + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk4C = 0.0f; + arg0->unk50 = arg0->unk54 = 0; + arg0->unk2C = arg0->unk30 = arg0->unk34 = arg0->unk38 = 0; + arg0->unk3C = arg0->unk40 = arg0->unk44 = arg0->unk48 = 0; +} + +void fn_1_AD5C(omObjData* arg0) { + StructBss144* temp_r31; + StructBssE88* var_r26; + s32 temp_r27; + s32 var_r28; + s32 var_r29; + + temp_r27 = arg0->work[0]; + var_r28 = 62; + temp_r31 = &lbl_1_bss_144[temp_r27]; + var_r26 = &lbl_1_bss_E88[temp_r27]; + if (temp_r27 < 2) { + var_r29 = temp_r27 * 118 + 84; + } else { + var_r29 = (temp_r27 - 2) * 118 + 390; + } + temp_r31->unk04[5] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 21), 100, 0); + espPosSet(temp_r31->unk04[5], var_r29, var_r28); + espColorSet(temp_r31->unk04[5], 1, 1, 1); + espTPLvlSet(temp_r31->unk04[5], 0.0f); + espDispOff(temp_r31->unk04[5]); + temp_r31->unk04[4] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 20), 100, 0); + espPosSet(temp_r31->unk04[4], var_r29, var_r28); + espTPLvlSet(temp_r31->unk04[4], 0.0f); + espDispOff(temp_r31->unk04[4]); + temp_r31->unk04[3] = espEntry(lbl_1_data_0[var_r26->unk34][2], 100, 0); + espPosSet(temp_r31->unk04[3], var_r29 - 46, var_r28 - 2); + espTPLvlSet(temp_r31->unk04[3], 0.0f); + espDispOff(temp_r31->unk04[3]); + temp_r31->unk04[0] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 100, 0); + espPosSet(temp_r31->unk04[0], var_r29 - 14, var_r28 + 2); + espTPLvlSet(temp_r31->unk04[2], 0.0f); + espDispOff(temp_r31->unk04[2]); + temp_r31->unk04[1] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 100, 0); + espPosSet(temp_r31->unk04[1], var_r29 + 6, var_r28 + 2); + espTPLvlSet(temp_r31->unk04[1], 0.0f); + espDispOff(temp_r31->unk04[1]); + temp_r31->unk04[2] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 100, 0); + espPosSet(temp_r31->unk04[2], var_r29 + 26, var_r28 + 2); + espTPLvlSet(temp_r31->unk04[0], 0.0f); + espDispOff(temp_r31->unk04[0]); + arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + temp_r31->unk4C = 0.0f; + temp_r31->unk50 = temp_r31->unk54 = 0; + temp_r31->unk2C = temp_r31->unk30 = temp_r31->unk34 = temp_r31->unk38 = 0; + temp_r31->unk3C = temp_r31->unk40 = temp_r31->unk44 = temp_r31->unk48 = 0; + arg0->func = fn_1_A8C4; +} + +s32 fn_1_B1F4(omObjData* arg0) { + StructBss4EE8* var_r25; + StructBss9C* var_r31; + StructBssC1C* var_r28; + StructBssE88* temp_r26; + Mtx sp8; + s32 i; + + var_r25 = &lbl_1_bss_4EE8; + var_r31 = &lbl_1_bss_9C; + var_r28 = &lbl_1_bss_C1C; + temp_r26 = &lbl_1_bss_E88[var_r25->unk10]; + if (arg0->work[3] == 1) { + arg0->work[3] = 0; + arg0->work[1] = 1; + arg0->work[2] = 0; + var_r31->unk04 = 1; + for (i = 0; i < 6; i++) { + var_r31->unk08[i] = -(50.0f * i); + } + } + switch (arg0->work[1]) { + case 1: + arg0->work[1] = 2; + fn_1_19974(&temp_r26->unk58, 0); + fn_1_157BC(var_r28->unk00, 0, 4, 5, 0); + break; + case 2: + if (Hu3DMotionTimeGet(var_r28->unk00->model[0]) == 90.0f) { + arg0->work[1] = 3; + fn_1_157BC(temp_r26->unk00, 0, 6, 5, 0); + Hu3DMotionTimeSet(var_r28->unk00->model[0], 90.0f); + Hu3DMotionSpeedSet(var_r28->unk00->model[0], 0.0f); + HuAudCharVoicePlay(temp_r26->unk34, 0x123); + HuAudFXPlay(0x6D5); + omVibrate(temp_r26->unk24, 120, 12, 0); + } + break; + case 3: + Hu3DModelObjMtxGet(var_r28->unk00->model[0], "g000m0-itemhook_M", sp8); + fn_1_9824(var_r25->unk10, 1); + for (i = 0; i < 6; i++) { + if (var_r31->unk04 == 1 || (var_r31->unk04 == 0 && var_r31->unk08[i] > 0.0f)) { + var_r31->unk08[i] += 10.0f; + } + if (var_r31->unk08[i] > 0.0f) { + var_r31->unk48[i] += 0.1f; + var_r31->unk28[i] -= 5.0f; + if (var_r31->unk88[i] == 0.0f) { + fn_1_157BC(arg0, i + 1, i + 1, 1, 1); + } + if (var_r31->unk88[i] < 8.0f) { + var_r31->unk68[i] += 0.025f; + } else if (var_r31->unk88[i] < 23.0f) { + var_r31->unk68[i] = 0.7f; + } else if (var_r31->unk88[i] < 31.0f) { + var_r31->unk68[i] -= 0.1f; + if (var_r31->unk68[i] < 0.0f) { + var_r31->unk68[i] = 0.0f; + } + } + var_r31->unk88[i] += 1.0f; + } + Hu3DModelPosSet(arg0->model[i + 1], sp8[0][3], sp8[1][3] + var_r31->unk28[i], sp8[2][3] + var_r31->unk08[i]); + Hu3DModelScaleSet(arg0->model[i + 1], 1.5f * var_r31->unk48[i], 1.5f * var_r31->unk48[i], 1.5f * var_r31->unk48[i]); + Hu3DModelTPLvlSet(arg0->model[i + 1], var_r31->unk68[i]); + if (var_r31->unk88[i] == 31.0f) { + var_r31->unk08[i] = 0.0f; + var_r31->unk28[i] = 0.0f; + var_r31->unk48[i] = 0.0f; + var_r31->unk68[i] = 0.5f; + var_r31->unk88[i] = 0.0f; + } + } + if (arg0->work[2]++ >= 120) { + var_r31->unk04 = 0; + Hu3DMotionSpeedSet(var_r28->unk00->model[0], 1.0f); + } + if (arg0->work[2] >= 10 && arg0->work[2] <= 120) { + fn_1_230(6, -1, 8.0f); + } + break; + } +} + +void fn_1_B828(StructBss9C* arg0) { + omObjData* temp_r29; + s32 i; + + temp_r29 = arg0->unk00; + for (i = 0; i < 6; i++) { + fn_1_157BC(temp_r29, i + 1, i + 1, 5, 1); + arg0->unk08[i] = -(50.0f * i); + arg0->unk28[i] = 0.0f; + arg0->unk48[i] = 0.0f; + arg0->unk68[i] = 0.5f; + arg0->unk88[i] = 0.0f; + } + arg0->unk04 = 1; + temp_r29->work[0] = temp_r29->work[1] = temp_r29->work[2] = temp_r29->work[3] = 0; +} + +void fn_1_B950(omObjData *arg0) { + StructBss9C* var_r29; + s32 i; + + var_r29 = &lbl_1_bss_9C; + for (i = 0; i < 6; i++) { + if (i % 2 == 0) { + arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 54)); + arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]); + } + else { + arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M435, 55)); + arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]); + } + fn_1_157BC(arg0, i + 1, i + 1, 5, 1); + Hu3DModelPosSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelLayerSet(arg0->model[i + 1], 2); + var_r29->unk08[i] = -(50.0f * i); + var_r29->unk28[i] = 0.0f; + var_r29->unk48[i] = 0.0f; + var_r29->unk68[i] = 0.5f; + var_r29->unk88[i] = 0.0f; + } + var_r29->unk04 = 1; + arg0->func = (void*) fn_1_B1F4; // fn_1_B1F4 must return s32 to match +} + +void fn_1_BBE8(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk18 = 0.0f; + var_r31->unk1C = 300.0f; + var_r31->unk20 = 1740.0f; + var_r31->unk30 = -10.0f; + var_r31->unk34 = 0.0f; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 300.0f; + fn_1_161B0(var_r31, 200.0f); +} + +void fn_1_BC98(void) { + StructBssE08* var_r31; + StructBssE08 sp8; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = 0.0f; + sp8.unk10 = 200.0f; + sp8.unk14 = -50.0f; + sp8.unk24 = 5.0f; + sp8.unk28 = 0.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 200.0f; + fn_1_188E0(var_r31, &sp8, var_r31->unk44++, 30.0f, 5.0f); +} + +void fn_1_BD70(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk18 = 0.0f; + var_r31->unk1C = 200.0f; + var_r31->unk20 = -50.0f; + var_r31->unk30 = 5.0f; + var_r31->unk34 = 0.0f; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 200.0f; + fn_1_161B0(var_r31, 200.0f); +} + +void fn_1_BE20(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk18 = 0.0f; + var_r31->unk1C = 300.0f; + var_r31->unk20 = -550.0f; + var_r31->unk30 = -15.0f; + var_r31->unk34 = 0.0f; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 1200.0f; + fn_1_161B0(var_r31, 45.0f); +} + +void fn_1_BED0(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk18 = 0.0f; + var_r31->unk1C = 150.0f; + var_r31->unk20 = -550.0f; + var_r31->unk30 = -15.0f; + var_r31->unk34 = 0.0f; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 1200.0f; + fn_1_161B0(var_r31, 30.0f); +} + +void fn_1_BF80(void) { + StructBssC30* var_r29; + StructBss2A4* sp8; + StructBssE08* var_r31; + ModelData* temp_r30; + + var_r29 = &lbl_1_bss_C30; + sp8 = &lbl_1_bss_2A4[1]; + var_r31 = &lbl_1_bss_E08; + temp_r30 = &Hu3DData[var_r29->unk00->model[1]]; + var_r31->unk18 = temp_r30->pos.x; + var_r31->unk1C = temp_r30->pos.y + 175.0f; + var_r31->unk20 = temp_r30->pos.z; + var_r31->unk30 = -5.0f; + var_r31->unk34 = temp_r30->rot.y; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 600.0f; + fn_1_161B0(var_r31, 15.0f); +} + +void fn_1_C064(void) { + StructBssE08* var_r31; + StructBssE08 sp8; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = 0.0f; + sp8.unk10 = 175.0f; + sp8.unk14 = -250.0f; + sp8.unk24 = -5.0f; + sp8.unk28 = 0.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 600.0f; + fn_1_17804(var_r31, &sp8, var_r31->unk44++, 10.0f, 5.0f); +} + +void fn_1_C13C(void) { + StructBssE08* var_r31; + StructBssE08 sp8; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = 0.0f; + sp8.unk10 = 145.0f; + sp8.unk14 = 500.0f; + sp8.unk24 = -15.0f; + sp8.unk28 = 90.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 800.0f; + fn_1_17804(var_r31, &sp8, var_r31->unk44++, 60.0f, 5.0f); +} + +void fn_1_C214(void) { + StructBssE08* var_r31; + StructBssE08 sp8; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = -1000.0f; + sp8.unk10 = 150.0f; + sp8.unk14 = 435.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 90.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 800.0f; + fn_1_188E0(var_r31, &sp8, var_r31->unk44++, 30.0f, 15.0f); +} + +void fn_1_C2EC(void) { + StructBssE08* var_r31; + StructBssE08 sp8; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = -1000.0f; + sp8.unk10 = 200.0f; + sp8.unk14 = 500.0f; + sp8.unk24 = 10.0f; + sp8.unk28 = 105.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 800.0f; + fn_1_17804(var_r31, &sp8, var_r31->unk44++, 30.0f, 15.0f); +} + +void fn_1_C3C4(void) { + StructBssE08* var_r31; + StructBssE08 sp8; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = -1000.0f; + sp8.unk10 = 200.0f; + sp8.unk14 = 500.0f; + sp8.unk24 = 10.0f; + sp8.unk28 = 105.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 800.0f; + fn_1_188E0(var_r31, &sp8, var_r31->unk44++, 10.0f, 5.0f); +} + +void fn_1_C49C(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk18 = 0.0f; + var_r31->unk1C = 150.0f; + var_r31->unk20 = -550.0f; + var_r31->unk30 = -15.0f; + var_r31->unk34 = 0.0f; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 1200.0f; + fn_1_161B0(var_r31, 20.0f); +} + +void fn_1_C54C(void) { + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + var_r31->unk18 = 0.0f; + var_r31->unk1C = 300.0f; + var_r31->unk20 = -550.0f; + var_r31->unk30 = -15.0f; + var_r31->unk34 = 0.0f; + var_r31->unk38 = 0.0f; + var_r31->unk40 = 1200.0f; + fn_1_161B0(var_r31, 20.0f); +} + +void fn_1_C5FC(s32 arg0) { + StructBssE08* var_r20; + + var_r20 = &lbl_1_bss_E08; + fn_1_15E50(var_r20); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_BBE8); + break; + case 1: + fn_1_8A4(fn_1_BC98); + break; + case 2: + fn_1_8A4(fn_1_BD70); + break; + case 3: + fn_1_8A4(fn_1_BE20); + break; + case 4: + fn_1_8A4(fn_1_BED0); + break; + case 5: + fn_1_8A4(fn_1_BF80); + break; + case 6: + fn_1_8A4(fn_1_C064); + break; + case 7: + fn_1_8A4(fn_1_C13C); + break; + case 8: + fn_1_8A4(fn_1_C214); + break; + case 10: + fn_1_8A4(fn_1_C49C); + break; + case 11: + fn_1_8A4(fn_1_C54C); + break; + } +} + +void fn_1_C764(void) { + float sp1C[] = { 0.0f, 0.0f }; + s32 sp8; + + lbl_1_bss_4 = 0; + fn_1_281C(sp1C, MAKE_MESSID(29, 0)); + fn_1_281C(sp1C, MAKE_MESSID(29, 1)); + sp8 = fn_1_1E80((580.0f - sp1C[0]) / 2, 80.0f, sp1C[0], sp1C[1], 2); + HuAudFXPlay(0x6D1); + fn_1_799C(2); + fn_1_2798(sp8, MAKE_MESSID(29, 0)); + fn_1_2594(sp8, 0); + fn_1_799C(2); + fn_1_2798(sp8, MAKE_MESSID(29, 1)); + fn_1_2594(sp8, 0); + fn_1_799C(1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_CCBC(void) { + float sp1C[] = { 0.0f, 0.0f }; + s32 sp8; + + lbl_1_bss_4 = 0; + fn_1_281C(sp1C, MAKE_MESSID(29, 2)); + sp8 = fn_1_1E80((580.0f - sp1C[0]) / 2, 100.0f, sp1C[0], sp1C[1], 2); + HuAudFXPlay(0x6D2); + fn_1_799C(3); + fn_1_2798(sp8, MAKE_MESSID(29, 2)); + fn_1_2594(sp8, 60); + fn_1_2BFC(3); + fn_1_2594(sp8, 60); + fn_1_799C(1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_D05C(void) { + float sp1C[] = { 0.0f, 0.0f }; + s32 sp8; + + lbl_1_bss_4 = 0; + fn_1_281C(sp1C, MAKE_MESSID(29, 64)); + sp8 = fn_1_1E80(550.0f - sp1C[0], 340.0f, sp1C[0], sp1C[1], 1); + fn_1_7D28(1, 2); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_2798(sp8, MAKE_MESSID(29, 64)); + fn_1_267C(sp8); + fn_1_7D28(1, 1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_D498(s32 arg0) { + float sp1C[] = { 0.0f, 0.0f }; + s32 sp10[] = { + MAKE_MESSID(29, 6), + MAKE_MESSID(29, 39), + MAKE_MESSID(29, 41), + MAKE_MESSID(29, 43), + MAKE_MESSID(29, 45), + MAKE_MESSID(29, 47), + MAKE_MESSID(29, 49), + MAKE_MESSID(29, 51), + -1 + }; + s32 sp8; + + if (sp10[arg0] == -1) { + return; + } + fn_1_7D28(0, 2); + HuPrcSleep(15); + fn_1_281C(sp1C, sp10[arg0]); + sp8 = fn_1_1E80(20.0f, 360.0f, sp1C[0], sp1C[1], 0); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + fn_1_2798(sp8, sp10[arg0]); + fn_1_2594(sp8, 0); + fn_1_7D28(0, 1); + fn_1_24C4(sp8); +} + +void fn_1_D8BC(void) { + float sp64[] = { 0.0f, 0.0f }; + s32 sp10[] = { + MAKE_MESSID(29, 5), + MAKE_MESSID(29, 38), + MAKE_MESSID(29, 40), + MAKE_MESSID(29, 42), + MAKE_MESSID(29, 44), + MAKE_MESSID(29, 46), + MAKE_MESSID(29, 48), + MAKE_MESSID(29, 50), + MAKE_MESSID(29, 52) + }; + s32 var_r30; + s32 i; + + lbl_1_bss_4 = 0; + for (i = 0; i < 9; i++) { + fn_1_281C(sp64, sp10[i]); + } + var_r30 = fn_1_1E80(550.0f - sp64[0], 340.0f, sp64[0], sp64[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + for (i = 0; i < 9; i++) { + fn_1_7D28(1, 2); + fn_1_2798(var_r30, sp10[i]); + fn_1_2594(var_r30, 0); + fn_1_D498(i); + } + fn_1_7D28(1, 1); + fn_1_24C4(var_r30); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_E190(void) { + float sp1C[] = { 0.0f, 0.0f }; + s32 sp8; + + lbl_1_bss_4 = 0; + fn_1_281C(sp1C, MAKE_MESSID(29, 53)); + sp8 = fn_1_1E80((580.0f - sp1C[0]) / 2, 80.0f, sp1C[0], sp1C[1], 2); + omVibrate(fn_1_8E48(0), 12, 4, 2); + omVibrate(fn_1_8E48(1), 12, 4, 2); + omVibrate(fn_1_8E48(2), 12, 4, 2); + omVibrate(fn_1_8E48(3), 12, 4, 2); + HuAudFXPlay(0x6D2); + fn_1_799C(2); + fn_1_2798(sp8, MAKE_MESSID(29, 53)); + fn_1_2594(sp8, 0); + fn_1_799C(1); + fn_1_24C4(sp8); + lbl_1_bss_4++; + HuPrcEnd(); +} + +void fn_1_E670(void) { + float sp1C[] = { 0.0f, 0.0f }; + StructBss2A4* var_r27; + s32 sp8; + + lbl_1_bss_4 = 0; + fn_1_281C(sp1C, MAKE_MESSID(29, 54)); + sp8 = fn_1_1E80(580.0f - sp1C[0] - 40.0f, 260.0f, sp1C[0], sp1C[1], 1); + var_r27 = &lbl_1_bss_2A4[1]; + fn_1_157BC(var_r27->unk00, 0, 12, 1, 0); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + fn_1_2798(sp8, MAKE_MESSID(29, 54)); + fn_1_2594(sp8, 15); + fn_1_7D50(1); + fn_1_2594(sp8, 15); + fn_1_24C4(sp8); + fn_1_C5FC(5); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_EA54(void) { + float sp1C[] = { 0.0f, 0.0f }; + StructBss2A4* var_r27; + s32 sp8; + + fn_1_281C(sp1C, MAKE_MESSID(29, 55)); + sp8 = fn_1_1E80(40.0f, 260.0f, sp1C[0], sp1C[1], 0); + var_r27 = &lbl_1_bss_2A4[0]; + fn_1_157BC(var_r27->unk00, 0, 3, 1, 0); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_2798(sp8, MAKE_MESSID(29, 55)); + fn_1_2594(sp8, 15); + fn_1_7D28(0, 1); + fn_1_2594(sp8, 15); + fn_1_24C4(sp8); + HuPrcEnd(); +} + +void fn_1_ED94(void) { + float sp1C[] = { 0.0f, 0.0f }; + s32 sp8; + + lbl_1_bss_4 = 0; + fn_1_281C(sp1C, MAKE_MESSID(29, 56)); + fn_1_C5FC(6); + sp8 = fn_1_1E80((580.0f - sp1C[0]) / 2, 320.0f, sp1C[0], sp1C[1], 2); + HuAudFXPlay(0x6D2); + fn_1_799C(2); + fn_1_2798(sp8, MAKE_MESSID(29, 56)); + fn_1_2594(sp8, 0); + fn_1_799C(1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_F1DC(void) { +} + +s32 fn_1_F1E0(void) { + if (fn_1_15670(&lbl_1_bss_84, 0) == 80) { + fn_1_C5FC(1); + lbl_1_bss_4F08[0] = HuAudSeqPlay(6); + } + if (fn_1_15670(&lbl_1_bss_84, 0) == 115) { + fn_1_C5FC(2); + } + if (fn_1_15670(&lbl_1_bss_84, 0) == 180) { + fn_1_C5FC(3); + } + if (fn_1_15670(&lbl_1_bss_84, 0) == 0) { + fn_1_2BFC(2); + } + if (fn_1_15670(&lbl_1_bss_84, 0) == 150) { + fn_1_2BFC(1); + } + if (fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F36C(void) { + HuPrcChildCreate(fn_1_C764, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F3A8(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F404(void) { + s32 i; + + HuPrcChildCreate(fn_1_CCBC, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + fn_1_9768(i, 1); + } +} + +s32 fn_1_F47C(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F4D8(void) { + StructBssC1C* sp8; + + sp8 = &lbl_1_bss_C1C; + fn_1_C5FC(10); +} + +s32 fn_1_F534(void) { + if (fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F57C(void) { + HuPrcChildCreate(fn_1_D05C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F5B8(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_84, 1) != 0) { + if (lbl_1_bss_8 != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + fn_1_1561C(&lbl_1_bss_84, 6); + } + return 0; +} + +void fn_1_F638(void) { + StructBssC1C* var_r31; + + var_r31 = &lbl_1_bss_C1C; + fn_1_157BC(var_r31->unk00, 0, 0, 60, 1); + HuPrcChildCreate(fn_1_D8BC, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F69C(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F6F8(void) { + StructBssC1C* var_r31; + + var_r31 = &lbl_1_bss_C1C; + fn_1_C5FC(11); + fn_1_157BC(var_r31->unk00, 0, 1, 60, 1); +} + +s32 fn_1_F768(void) { + if (fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F7B0(void) { + StructBssC1C* var_r30; + StructBss2A4* var_r31; + + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_E190, 100, 0x2000, 0, HuPrcCurrentGet()); + var_r31 = &lbl_1_bss_2A4[1]; + var_r30 = &lbl_1_bss_C1C; + fn_1_19974(&var_r31->unk3C, 1); + fn_1_198F8(&var_r31->unk3C, -1); + fn_1_19968(&var_r31->unk3C, -1); + fn_1_19960(&var_r31->unk3C, var_r30->unk00->model[0]); +} + +s32 fn_1_F858(void) { + if (lbl_1_bss_4 != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F89C(void) { + HuPrcChildCreate(fn_1_E670, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_EA54, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F8F8(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F954(void) { +} + +s32 fn_1_F958(void) { + if (fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_F9A0(void) { + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_ED94, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F9EC(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_84, 1) != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_FA48(void) { + s32 i; + StructBssC30* var_r28; + StructBssC1C* var_r27; + StructBssE88* temp_r30; + StructBss2A4* var_r29; + + var_r28 = &lbl_1_bss_C30; + var_r27 = &lbl_1_bss_C1C; + fn_1_157BC(var_r27->unk00, 0, 0, 60, 1); + fn_1_C5FC(7); + for (i = 0; i < 4; i++) { + temp_r30 = &lbl_1_bss_E88[i]; + fn_1_19974(&temp_r30->unk58, 1); + fn_1_198F8(&temp_r30->unk58, -1); + fn_1_19968(&temp_r30->unk58, -1); + fn_1_19960(&temp_r30->unk58, var_r28->unk00->model[1]); + } + var_r29 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r29->unk3C, 0); + fn_1_198F8(&var_r29->unk3C, -1); + fn_1_19968(&var_r29->unk3C, -1); +} + +s32 fn_1_FB50(void) { + if (fn_1_15670(&lbl_1_bss_84, 1) != 0 && lbl_1_bss_14 != 0) { + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +void fn_1_FBAC(void) { + StructBss4EE8* var_r31; + StructBss2A4* var_r30; + StructBssE88* temp_r29; + + var_r31 = &lbl_1_bss_4EE8; + var_r30 = &lbl_1_bss_2A4[1]; + temp_r29 = &lbl_1_bss_E88[var_r31->unk10]; + var_r31->unk0C = 0; + fn_1_157BC(var_r30->unk00, 0, 6, 10, 0); + fn_1_157BC(temp_r29->unk00, 0, 4, 60, 1); + var_r31->unk14 = var_r31->unk10; + HuAudSeqFadeOut(lbl_1_bss_4F08[0], 1000); +} + +s32 fn_1_FC5C(void) { + StructBss4EE8* var_r29; + StructBss2A4* var_r30; + StructBssC30* var_r26; + StructBss2A4* var_r28; + s32 i; + + var_r29 = &lbl_1_bss_4EE8; + var_r30 = &lbl_1_bss_2A4[1]; + if (fn_1_156AC(var_r30->unk00, 0, 6, 50, 0) != 0) { + fn_1_19658(var_r30->unk00, 0, 0.0f, 10); + } else if (fn_1_156AC(var_r30->unk00, 0, 6, 50, 1) != 0) { + fn_1_19658(var_r30->unk00, 0, 90.0f, 10); + if (var_r29->unk0C == 0) { + var_r29->unk0C = 1; + for (i = 0; i < 4; i++) { + fn_1_A4B8(i, 1); + } + fn_1_3E84(1); + fn_1_5600(1); + } + } + if (fn_1_15670(&lbl_1_bss_84, 1) != 0) { + var_r26 = &lbl_1_bss_C30; + var_r28 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r28->unk3C, 1); + fn_1_198F8(&var_r28->unk3C, -1); + fn_1_19968(&var_r28->unk3C, -1); + for (i = 0; i < 3; i++) { + fn_1_19894(&var_r28->unk3C, var_r26->unk00->model[i + var_r29->unk10 * 3 + 2]); + } + fn_1_C5FC(8); + return fn_1_15520(&lbl_1_bss_84); + } + return 0; +} + +StructData3A0 lbl_1_data_3A0[] = { + { fn_1_F1DC, fn_1_F1E0, 300 }, + { fn_1_F36C, fn_1_F3A8, 60 }, + { fn_1_F404, fn_1_F47C, 60 }, + { fn_1_F4D8, fn_1_F534, 45 }, + { fn_1_F57C, fn_1_F5B8, 60 }, + { fn_1_F638, fn_1_F69C, 60 }, + { fn_1_F6F8, fn_1_F768, 45 }, + { fn_1_F7B0, fn_1_F858, 60 }, + { fn_1_F89C, fn_1_F8F8, 60 }, + { fn_1_F954, fn_1_F958, 90 }, + { fn_1_F9A0, fn_1_F9EC, 60 }, + { fn_1_FA48, fn_1_FB50, 180 }, + { fn_1_FBAC, fn_1_FC5C, 180 }, + { NULL, NULL, -1 } +}; + +void fn_1_FE64(void) { + fn_1_154C4(&lbl_1_bss_84, lbl_1_data_3A0); +} + +s32 fn_1_FE94(void) { + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_84.unk10 != NULL) { + lbl_1_bss_84.unk10(); + lbl_1_bss_84.unk10 = NULL; + } + if (lbl_1_bss_84.unk14 != NULL) { + var_r31 = lbl_1_bss_84.unk14(); + } + return var_r31; +} + +s32 fn_1_FF2C(s32 arg0, s32 arg1) { + s32 var_r31; + StructBssE88* temp_r30; + + var_r31 = 0; + temp_r30 = &lbl_1_bss_E88[arg0]; + if (temp_r30->unk2C != 0) { + switch (temp_r30->unk30) { + case 0: + if (arg1 % 60 == 1 && fn_1_5438()) { + var_r31 = 1; + } + break; + case 1: + if (arg1 % 45 == 1 && fn_1_5438()) { + var_r31 = 1; + } + break; + case 2: + if (arg1 % 30 == 1 && fn_1_5438()) { + var_r31 = 1; + } + break; + case 3: + if (arg1 % 15 == 1 && fn_1_5438()) { + var_r31 = 1; + } + break; + } + } else if (HuPadBtnDown[temp_r30->unk38] & 0x100) { + var_r31 = 1; + } + return var_r31; +} + +void fn_1_10734(void) { + StructBss2A4* spC; + StructBssE08* sp8; + + spC = &lbl_1_bss_2A4[1]; + sp8 = &lbl_1_bss_E08; +} + +void fn_1_1075C(void) { + StructBssE08 sp8; + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = 0.0f; + sp8.unk10 = 200.0f; + sp8.unk14 = -550.0f; + sp8.unk24 = 5.0f; + sp8.unk28 = 0.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 1300.0f; + fn_1_169F4(var_r31, &sp8, var_r31->unk44++, 90.0f, 10.0f); +} + +void fn_1_10834(void) { + StructBssE08 sp8; + StructBssE08* var_r31; + + var_r31 = &lbl_1_bss_E08; + sp8.unk0C = 0.0f; + sp8.unk10 = 200.0f; + sp8.unk14 = -850.0f; + sp8.unk24 = 5.0f; + sp8.unk28 = 0.0f; + sp8.unk2C = 0.0f; + sp8.unk3C = 1300.0f; + fn_1_169F4(var_r31, &sp8, var_r31->unk44++, 120.0f, 10.0f); +} + +void fn_1_1090C(s32 arg0) { + StructBssE08* var_r24; + + var_r24 = &lbl_1_bss_E08; + fn_1_15E50(var_r24); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_C13C); + break; + case 1: + fn_1_8A4(fn_1_C214); + break; + case 2: + fn_1_8A4(fn_1_C2EC); + break; + case 3: + fn_1_8A4(fn_1_C3C4); + break; + case 4: + fn_1_8A4(fn_1_10734); + break; + case 5: + fn_1_8A4(fn_1_1075C); + break; + case 6: + fn_1_8A4(fn_1_10834); + break; + } +} + +void fn_1_10A14(void) { + char sp18[8]; + float sp10[] = { 0.0f, 0.0f }; + StructBss4EE8* var_r29; + StructBssE88* temp_r27; + s32 sp8; + + var_r29 = &lbl_1_bss_4EE8; + temp_r27 = &lbl_1_bss_E88[var_r29->unk10]; + lbl_1_bss_4 = 0; + sprintf(sp18, "%d", var_r29->unk04); + HuWinInsertMesSizeGet(temp_r27->unk34, 0); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(sp18), 1); + HuWinMesMaxSizeGet(1, sp10, MAKE_MESSID(29, 63)); + sp8 = fn_1_1E80(550.0f - sp10[0], 180.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_A670(var_r29->unk10, var_r29->unk04); + HuWinInsertMesSet(sp8, MAKE_MESSID_PTR(temp_r27->unk34), 0); + HuWinInsertMesSet(sp8, MAKE_MESSID_PTR(sp18), 1); + fn_1_7D28(1, 2); + fn_1_2798(sp8, MAKE_MESSID(29, 63)); + fn_1_2594(sp8, 120); + fn_1_7D28(1, 1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_10E1C(void) { + float sp14[] = { 0.0f, 0.0f }; + s32 sp1C[][2] = { + { MAKE_MESSID(29, 60), 9 }, + { MAKE_MESSID(29, 61), 11 } + }; + StructBss2A4* var_r27; + s32 sp8; + s32 i; + + lbl_1_bss_4 = 0; + for (i = 0; i < 2; i++) { + if (i == 1) { + var_r27 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r27->unk3C, 0); + fn_1_198F8(&var_r27->unk3C, -1); + fn_1_19968(&var_r27->unk3C, -1); + } + fn_1_281C(sp14, sp1C[i][0]); + sp8 = fn_1_1E80(550.0f - sp14[0], 180.0f, sp14[0], sp14[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_8544(sp1C[i][1]); + fn_1_2798(sp8, sp1C[i][0]); + fn_1_2594(sp8, 120); + fn_1_24C4(sp8); + } + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_11220(void) { + float sp10[] = { 0.0f, 0.0f }; + float temp_f31; + float temp_f30; + s32 var_r22; + s32 sp8; + s32 i; + StructBssC1C* var_r27; + StructBss2A4* var_r28; + + lbl_1_bss_4 = 0; + fn_1_281C(sp10, MAKE_MESSID(29, 62)); + temp_f31 = 640.0f; + temp_f30 = (580.0f - sp10[0]) / 2 - 1.0f; + sp8 = fn_1_1E80(temp_f31, 100.0f, sp10[0], sp10[1], 2); + fn_1_8544(9); + var_r27 = &lbl_1_bss_C1C; + var_r28 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r28->unk3C, 1); + fn_1_198F8(&var_r28->unk3C, -1); + fn_1_19968(&var_r28->unk3C, -1); + fn_1_19960(&var_r28->unk3C, var_r27->unk00->model[0]); + var_r22 = HuAudFXPlay(0x6D6); + HuAudFXPanning(var_r22, 0x60); + fn_1_799C(2); + fn_1_2798(sp8, MAKE_MESSID(29, 62)); + HuPrcSleep(5); + for (i = 0; i < 120; i++) { + temp_f31 = fn_1_1539C(640.0f, temp_f30, i, 30.0f); + HuWinPosSet(sp8, temp_f31, 100.0f); + HuPrcVSleep(); + } + HuPrcSleep(60); + fn_1_799C(1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_116A8(void) { + float sp10[] = { 0.0f, 0.0f }; + float temp_f31; + float temp_f30; + s32 var_r22; + s32 sp8; + s32 i; + StructBssC1C* var_r27; + StructBss2A4* var_r28; + + lbl_1_bss_4 = 0; + fn_1_281C(sp10, MAKE_MESSID(29, 57)); + temp_f31 = 640.0f; + temp_f30 = (580.0f - sp10[0]) / 2 - 1.0f; + sp8 = fn_1_1E80(temp_f31, 100.0f, sp10[0], sp10[1], 2); + var_r27 = &lbl_1_bss_C1C; + var_r28 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r28->unk3C, 1); + fn_1_198F8(&var_r28->unk3C, -1); + fn_1_19968(&var_r28->unk3C, -1); + fn_1_19960(&var_r28->unk3C, var_r27->unk00->model[0]); + var_r22 = HuAudFXPlay(0x6D2); + HuAudFXPanning(var_r22, 0x60); + fn_1_799C(2); + fn_1_2798(sp8, MAKE_MESSID(29, 57)); + HuPrcSleep(5); + for (i = 0; i < 120; i++) { + temp_f31 = fn_1_1539C(640.0f, temp_f30, i, 30.0f); + HuWinPosSet(sp8, temp_f31, 100.0f); + HuPrcVSleep(); + } + fn_1_799C(1); + fn_1_24C4(sp8); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_11B04(void) { + float sp14[] = { 0.0f, 0.0f }; + s32 sp1C[] = { + MAKE_MESSID(29, 58), + MAKE_MESSID(29, 59) + }; + StructBss2A4* var_r25; + StructBss2A4* var_r28; + StructBss9C* var_r24; + s32 sp8; + s32 i; + + lbl_1_bss_4 = 0; + for (i = 0; i < 2; i++) { + if (i == 1) { + var_r25 = &lbl_1_bss_2A4[1]; + var_r28 = &lbl_1_bss_2A4[0]; + var_r24 = &lbl_1_bss_9C; + var_r24->unk00->work[3] = 1; + fn_1_157BC(var_r28->unk00, 0, 1, 30, 1); + fn_1_157BC(var_r28->unk00, 1, 6, 30, 1); + fn_1_157BC(var_r25->unk00, 0, 10, 60, 0); + lbl_1_bss_4 = 1; + } + fn_1_281C(sp14, sp1C[i]); + sp8 = fn_1_1E80((580.0f - sp14[0]) / 2 - 1.0f, 75.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D6); + if (i == 0) { + fn_1_799C(2); + } + fn_1_2798(sp8, sp1C[i]); + fn_1_2594(sp8, 60); + if (i == 0) { + fn_1_799C(1); + } + if (i == 1) { + fn_1_2594(sp8, 60); + } + fn_1_24C4(sp8); + } + HuPrcEnd(); +} + +void fn_1_11F7C(void) { +} + +s32 fn_1_11F80(void) { + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_11FC8(void) { + StructBss4EE8* var_r31; + StructBss2A4* var_r30; + StructBssE88* temp_r29; + + var_r31 = &lbl_1_bss_4EE8; + var_r30 = &lbl_1_bss_2A4[1]; + temp_r29 = &lbl_1_bss_E88[var_r31->unk10]; + var_r31->unk0C = 0; + fn_1_157BC(var_r30->unk00, 0, 6, 10, 0); + fn_1_157BC(temp_r29->unk00, 0, 4, 60, 1); + var_r31->unk14 = var_r31->unk10; +} + +s32 fn_1_12064(void) { + s32 i; + StructBss4EE8* var_r29; + StructBss2A4* var_r30; + StructBssC30* var_r26; + StructBss2A4* var_r28; + + var_r29 = &lbl_1_bss_4EE8; + var_r30 = &lbl_1_bss_2A4[1]; + if (fn_1_156AC(var_r30->unk00, 0, 6, 50, 0) != 0) { + fn_1_19658(var_r30->unk00, 0, 0.0f, 10); + } else if (fn_1_156AC(var_r30->unk00, 0, 6, 50, 1) != 0) { + fn_1_19658(var_r30->unk00, 0, 90.0f, 10); + if (var_r29->unk0C == 0) { + var_r29->unk0C = 1; + fn_1_3E84(1); + fn_1_5600(1); + } + } + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + var_r26 = &lbl_1_bss_C30; + var_r28 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r28->unk3C, 1); + fn_1_198F8(&var_r28->unk3C, -1); + fn_1_19968(&var_r28->unk3C, -1); + for (i = 0; i < 3; i++) { + fn_1_19960(&var_r28->unk3C, var_r26->unk00->model[i + var_r29->unk10 * 3 + 2]); + } + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_12210(void) { + fn_1_1090C(1); +} + +s32 fn_1_12260(void) { + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_122A8(void) { + if (lbl_1_bss_10 == 0) { + lbl_1_bss_10 = 1; + lbl_1_bss_C = 300; + } +} + +s32 fn_1_122E0(void) { + s32 var_r30; + StructBss4EE8* var_r29; + + var_r30 = 0; + var_r29 = &lbl_1_bss_4EE8; + fn_1_15670(&lbl_1_bss_6C, 1); + if (fn_1_15670(&lbl_1_bss_6C, 0) <= 10) { + return 0; + } + if (fn_1_FF2C(var_r29->unk10, fn_1_15670(&lbl_1_bss_6C, 0)) != 0) { + var_r30 = 1; + fn_1_28E8(); + } + if (var_r30 != 0 || fn_1_28C4() != 0) { + fn_1_5600(4); + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_12414(void) { + StructBss4EE8* var_r31; + + var_r31 = &lbl_1_bss_4EE8; + var_r31->unk00 = var_r31->unk04 = var_r31->unk08 = 0; +} + +s32 fn_1_12440(void) { + s32 i; + s32 j; + StructBss4EE8* var_r31; + StructBssC30* var_r28; + + var_r31 = &lbl_1_bss_4EE8; + var_r28 = &lbl_1_bss_C30; + if (var_r31->unk00 == 0) { + for (i = 0; i < 3; i++) { + if (var_r28->unk2C[i] != 7) { + break; + } + } + if (i == 3) { + var_r31->unk00 = 1; + for (j = 0; j < 3; j++) { + var_r31->unk04 += var_r28->unk68[j]; + } + } + } else if (var_r31->unk00 == 1) { + if (var_r31->unk04 < 0) { + var_r31->unk08 = 1; + fn_1_1561C(&lbl_1_bss_6C, 9); + fn_1_1090C(3); + } else if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + } + return 0; +} + +void fn_1_12574(void) { + StructBss2A4* temp_r31; + + temp_r31 = &lbl_1_bss_2A4[1]; + fn_1_157BC(temp_r31->unk00, 0, 8, 10, 1); +} + +s32 fn_1_125BC(void) { + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_12604(void) { + StructBss4EE8* var_r30; + StructBssE88* spC; + StructBss2A4* var_r29; + StructBssC30* sp8; + StructBss2A4* var_r31; + + var_r30 = &lbl_1_bss_4EE8; + spC = &lbl_1_bss_E88[var_r30->unk10]; + var_r29 = &lbl_1_bss_2A4[1]; + fn_1_157BC(var_r29->unk00, 0, 0, 10, 1); + HuPrcChildCreate(fn_1_10A14, 100, 0x2000, 0, HuPrcCurrentGet()); + fn_1_1090C(3); + sp8 = &lbl_1_bss_C30; + var_r31 = &lbl_1_bss_2A4[1]; + fn_1_19974(&var_r31->unk3C, 0); + fn_1_198F8(&var_r31->unk3C, -1); + fn_1_19968(&var_r31->unk3C, -1); +} + +s32 fn_1_126F4(void) { + StructBss4EE8* var_r31; + StructBssE88* var_r30; + + var_r31 = &lbl_1_bss_4EE8; + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + var_r30 = &lbl_1_bss_E88[var_r31->unk10]; + fn_1_157BC(var_r30->unk00, 0, 0, 1, 1); + if (var_r31->unk10 == 3) { + fn_1_1561C(&lbl_1_bss_6C, 11); + } else { + return fn_1_15520(&lbl_1_bss_6C); + } + } + return 0; +} + +void fn_1_127B4(void) { + StructBss4EE8* sp8; + + sp8 = &lbl_1_bss_4EE8; + fn_1_1090C(0); +} + +s32 fn_1_12810(void) { + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_12858(void) { + StructBss4EE8* var_r28; + StructBssE88* temp_r31; + s32 var_r30; + s32 i; + + var_r28 = &lbl_1_bss_4EE8; + var_r30 = var_r28->unk10 + 1; + if (var_r30 >= 4) { + var_r30 = 0; + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_E88[var_r30]; + lbl_1_bss_3C[i].x = temp_r31->unk00->trans.x; + lbl_1_bss_3C[i].y = temp_r31->unk00->trans.y; + lbl_1_bss_3C[i].z = temp_r31->unk00->trans.z; + temp_r31->unk14 = 0; + fn_1_15934(temp_r31->unk00, 0, 2, 10, 1); + var_r30++; + if (var_r30 >= 4) { + var_r30 = 0; + } + } +} + +s32 fn_1_12958(void) { + StructBss4EE8* var_r30 = &lbl_1_bss_4EE8; + StructBssE88* temp_r31; + s32 var_r28; + s32 var_r29; + Vec sp8[] = { + { 0.0f, 0.0f, 500.0f }, + { 200.0f, 0.0f, 300.0f }, + { 200.0f, 0.0f, 450.0f }, + { 200.0f, 0.0f, 600.0f } + }; + + var_r29 = var_r30->unk10 + 1; + if (var_r29 >= 4) { + var_r29 = 0; + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + temp_r31 = &lbl_1_bss_E88[var_r29]; + if (temp_r31->unk14++ <= 30) { + fn_1_195F4(temp_r31->unk00, 0, &lbl_1_bss_3C[var_r28], &sp8[var_r28], 5, temp_r31->unk14, 30); + } else { + fn_1_19658(temp_r31->unk00, 0, -90.0f, 10); + if (temp_r31->unk14 >= 40) { + fn_1_15934(temp_r31->unk00, 0, 0, 10, 1); + } + } + var_r29++; + if (var_r29 == 4) { + var_r29 = 0; + } + } + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + var_r30->unk10++; + if (var_r30->unk10 >= 4) { + var_r30->unk10 = 0; + } + fn_1_3E84(0); + fn_1_5600(0); + fn_1_1561C(&lbl_1_bss_6C, 0); + } + return 0; +} + +void fn_1_12B50(void) { + HuPrcChildCreate(fn_1_10E1C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_12B8C(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_12BE8(void) { + HuPrcChildCreate(fn_1_11220, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_12C24(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + fn_1_1561C(&lbl_1_bss_6C, 12); + } + return 0; +} + +void fn_1_12C80(void) { + HuPrcChildCreate(fn_1_116A8, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_12CBC(void) { + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_12D18(void) { + StructBss4EE8* var_r28; + StructBssC1C* sp10; + StructBss144* temp_r27; + s32 var_r30; + s32 i; + + var_r30 = 999; + var_r28 = &lbl_1_bss_4EE8; + sp10 = &lbl_1_bss_C1C; + for (i = 0; i < 4; i++) { + fn_1_A4B8(i, 0); + } + fn_1_8250(1); + if (var_r28->unk08 != 1) { + for (i = 0; i < 4; i++) { + temp_r27 = &lbl_1_bss_144[i]; + if (var_r30 > temp_r27->unk50) { + var_r30 = temp_r27->unk50; + var_r28->unk10 = i; + } + } + } + { + StructBssE88* temp_r29; + StructBss2A4* var_r24; + Vec sp14[] = { + { 0.0f, 0.0f, -225.0f }, + { -200.0f, 0.0f, -225.0f }, + { 200.0f, 0.0f, -225.0f }, + { 400.0f, 0.0f, -225.0f } + }; + + var_r30 = var_r28->unk10; + for (i = 0; i < 4; i++) { + temp_r29 = &lbl_1_bss_E88[var_r30]; + omSetTra(temp_r29->unk00, sp14[i].x, sp14[i].y, sp14[i].z); + omSetRot(temp_r29->unk00, 0.0f, 180.0f, 0.0f); + fn_1_157BC(temp_r29->unk00, 0, 0, 10, 1); + var_r30++; + if (var_r30 >= 4) { + var_r30 = 0; + } + var_r24 = &lbl_1_bss_2A4[1]; + fn_1_19960(&temp_r29->unk58, var_r24->unk00->model[0]); + } + } + fn_1_1090C(5); + + // Hack required to match. + if (0) { + s32 var_r25; + s32 var_r26; + + (void) var_r26; + (void) var_r26; + (void) var_r26; + (void) var_r26; + (void) var_r25; + (void) var_r25; + (void) var_r25; + (void) var_r25; + } +} + +// Unused. Mirrors the Vec array defined in fn_1_12D18. +const Vec lbl_1_rodata_48C[] = { + { 0.0f, 0.0f, -225.0f }, + { -200.0f, 0.0f, -225.0f }, + { 200.0f, 0.0f, -225.0f }, + { 400.0f, 0.0f, -225.0f } +}; + +static inline void fn_1_12F48_inline_hack(s32 arg0) { + StructBss4EE8* var_r27; + + var_r27 = &lbl_1_bss_4EE8; + (void) var_r27; + (void) var_r27; + (void) var_r27; + (void) var_r27; + + if (arg0) { + s32 var_r31; + s32 var_r30; + s32 var_r26; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 var_r18; + s32 var_r17; + + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r30; + (void) var_r26; + (void) var_r26; + (void) var_r26; + (void) var_r26; + (void) var_r23; + (void) var_r23; + (void) var_r23; + (void) var_r22; + (void) var_r22; + (void) var_r22; + (void) var_r21; + (void) var_r21; + (void) var_r21; + (void) var_r20; + (void) var_r20; + (void) var_r20; + (void) var_r19; + (void) var_r19; + (void) var_r19; + (void) var_r18; + (void) var_r18; + (void) var_r18; + (void) var_r17; + (void) var_r17; + (void) var_r17; + } +} + +s32 fn_1_12F48(void) { + StructBssC1C* var_r25; + StructBssC30* var_r24; + StructBssE88* sp8; + s32 var_r29; + s32 var_r28; + + fn_1_12F48_inline_hack(0); // Required to match. + if (fn_1_15670(&lbl_1_bss_6C, 0) == 180) { + var_r25 = &lbl_1_bss_C1C; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + sp8 = &lbl_1_bss_E88[var_r29]; + fn_1_19960(&sp8->unk58, var_r25->unk00->model[0]); + } + } + if (fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + var_r24 = &lbl_1_bss_C30; + for (var_r28 = 0; var_r28 < 14; var_r28++) { + Hu3DModelAttrSet(var_r24->unk00->model[var_r28], 1); + } + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +void fn_1_1303C(void) { + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_11B04, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_13088(void) { + s32 var_r31; + s32 i; + StructBss4EE8* var_r28; + StructBssE88* temp_r29; + + var_r28 = &lbl_1_bss_4EE8; + var_r31 = var_r28->unk10; + if (var_r31 == 4) { + var_r31 = 0; + } + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_6C, 0) == 20) { + fn_1_1090C(6); + for (i = 0; i < 4; i++) { + if (i != 0) { + temp_r29 = &lbl_1_bss_E88[var_r31]; + temp_r29->unk0C = i; + temp_r29->unk1C = 15 - i * 5; + temp_r29->unk20 = 0; + } + var_r31++; + if (var_r31 >= 4) { + var_r31 = 0; + } + } + } + if (lbl_1_bss_4 != 0 && fn_1_15670(&lbl_1_bss_6C, 1) != 0) { + return fn_1_15520(&lbl_1_bss_6C); + } + return 0; +} + +StructData3A0 lbl_1_data_468[] = { + { fn_1_11F7C, fn_1_11F80, 1 }, + { fn_1_11FC8, fn_1_12064, 120 }, + { fn_1_12210, fn_1_12260, 90 }, + { fn_1_122A8, fn_1_122E0, 120 }, + { fn_1_12414, fn_1_12440, -1 }, + { fn_1_12574, fn_1_125BC, 120 }, + { fn_1_12604, fn_1_126F4, 60 }, + { fn_1_127B4, fn_1_12810, 30 }, + { fn_1_12858, fn_1_12958, 120 }, + { fn_1_12B50, fn_1_12B8C, 60 }, + { fn_1_12BE8, fn_1_12C24, 60 }, + { fn_1_12C80, fn_1_12CBC, 60 }, + { fn_1_12D18, fn_1_12F48, 300 }, + { fn_1_1303C, fn_1_13088, 60 }, + { NULL, NULL, -1 } +}; + +void fn_1_131B0(void) { + fn_1_154C4(&lbl_1_bss_6C, lbl_1_data_468); + fn_1_1561C(&lbl_1_bss_6C, 3); +} + +s32 fn_1_131F0(void) { + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_6C.unk10 != NULL) { + lbl_1_bss_6C.unk10(); + lbl_1_bss_6C.unk10 = NULL; + } + if (lbl_1_bss_6C.unk14 != NULL) { + var_r31 = lbl_1_bss_6C.unk14(); + } + return var_r31; +} + +void fn_1_13288(void) { + StructBss4EE8* var_r30; + StructBssE88* temp_r31; + + var_r30 = &lbl_1_bss_4EE8; + temp_r31 = &lbl_1_bss_E88[var_r30->unk10]; + var_r30->unk1C = 0; + lbl_1_data_1E0 = temp_r31->unk00->model[0]; + lbl_1_data_1E4 = temp_r31->unk00->motion[3]; + lbl_1_data_1E8 = temp_r31->unk34; + HuPrcChildCreate(fn_1_0, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_13338(void) { + StructBss4EE8* var_r31; + StructBssE88* temp_r30; + + var_r31 = &lbl_1_bss_4EE8; + temp_r30 = &lbl_1_bss_E88[var_r31->unk10]; + if (fn_1_15670(&lbl_1_bss_24, 0) == 120) { + fn_1_157BC(temp_r30->unk00, 0, 3, 30, 0); + HuAudSStreamPlay(3); + } + if (fn_1_15670(&lbl_1_bss_24, 1) != 0) { + return fn_1_15520(&lbl_1_bss_24); + } + return 0; +} + +StructData3A0 lbl_1_data_51C[] = { + { fn_1_13288, fn_1_13338, 360 }, + { NULL, NULL, -1 } +}; + +void fn_1_133E4(void) { + fn_1_154C4(&lbl_1_bss_24, lbl_1_data_51C); +} + +s32 fn_1_13414(void) { + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_24.unk10 != NULL) { + lbl_1_bss_24.unk10(); + lbl_1_bss_24.unk10 = NULL; + } + if (lbl_1_bss_24.unk14 != NULL) { + var_r31 = lbl_1_bss_24.unk14(); + } + return var_r31; +} + +void fn_1_134AC(omObjData* arg0) { + StructBss4EE8* var_r30; + StructBssE88* temp_r29; + s32 i; + + if (WipeStatGet() == 0) { + CharModelKill(-1); + MGSeqKillAll(); + HuAudFadeOut(1); + var_r30 = &lbl_1_bss_4EE8; + temp_r29 = &lbl_1_bss_E88[var_r30->unk10]; + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(i, 0); + } + GWPlayerCoinWinSet(temp_r29->unk24, 1); + omOvlReturnEx(1, 1); + arg0->func = NULL; + } +} + +void fn_1_135A0(omObjData* arg0) { + if (omSysExitReq == 1) { + HuAudSeqAllFadeOut(250); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_134AC; + } +} + +void fn_1_13600(void) { + StructBss4EE8* var_r29; + s32 i; + + fn_1_3288(&lbl_1_bss_DE4); + fn_1_72A4(&lbl_1_bss_C30); + fn_1_7A78(&lbl_1_bss_C1C); + for (i = 0; i < 2; i++) { + fn_1_8734(&lbl_1_bss_2A4[i]); + } + for (i = 0; i < 4; i++) { + fn_1_9F7C(&lbl_1_bss_E88[i]); + } + for (i = 0; i < 4; i++) { + fn_1_ABFC(&lbl_1_bss_144[i]); + } + fn_1_B828(&lbl_1_bss_9C); + var_r29 = &lbl_1_bss_4EE8; + var_r29->unk00 = var_r29->unk04 = var_r29->unk08 = var_r29->unk0C = 0; + var_r29->unk10 = var_r29->unk14 = var_r29->unk18 = var_r29->unk1C = 0; + fn_1_FE64(); + fn_1_131B0(); + fn_1_133E4(); + fn_1_C5FC(0); + HuAudFXPlay(0x6D7); +} + +void fn_1_14384(omObjData* arg0) { + StructBssDE4* var_r25; + + switch (lbl_1_bss_1C) { + case 0: + fn_1_13600(); + lbl_1_bss_1C = 1; + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_1C = 2; + } + break; + case 2: + if (fn_1_FE94()) { + lbl_1_bss_1C = 3; + } + break; + case 3: + lbl_1_bss_20 = MGSeqStartCreate(); + lbl_1_bss_1C = 4; + lbl_1_bss_4F08[1] = -1; + break; + case 4: + if ((MGSeqStatGet(lbl_1_bss_20) & 0x10) && lbl_1_bss_4F08[1] == -1) { + lbl_1_bss_4F08[1] = HuAudSeqPlay(0x4D); + } + if (MGSeqStatGet(lbl_1_bss_20) == 0) { + lbl_1_bss_1C = 5; + } + break; + case 5: + if (fn_1_131F0()) { + lbl_1_bss_1C = 6; + } + break; + case 6: + lbl_1_bss_20 = MGSeqFinishCreate(); + lbl_1_bss_1C = 7; + HuAudSeqPauseAll(0); + HuAudSeqAllFadeOut(250); + break; + case 7: + if (MGSeqStatGet(lbl_1_bss_20) == 0) { + lbl_1_bss_1C = 8; + } + break; + case 8: + var_r25 = &lbl_1_bss_DE4; + var_r25->unk04 = 999; + if (fn_1_13414()) { + lbl_1_bss_1C = 9; + } + break; + case 9: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_134AC; + break; + } + fn_1_135A0(arg0); + + // Hack required to match. + if (0) { + s32 var_r31; + s32 var_r28; + + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r31; + (void) var_r28; + (void) var_r28; + (void) var_r28; + } +} + +void fn_1_14760(omObjData* arg0) { + s32 i; + + lbl_1_bss_DE4.unk00 = omAddObjEx(lbl_1_bss_0, 0x200, 16, 16, -1, fn_1_3558); + lbl_1_bss_C30.unk00 = omAddObjEx(lbl_1_bss_0, 0x300, 32, 32, -1, fn_1_7628); + lbl_1_bss_C1C.unk00 = omAddObjEx(lbl_1_bss_0, 0x400, 16, 16, -1, fn_1_7B44); + for (i = 0; i < 2; i++) { + lbl_1_bss_2A4[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x500, 16, 16, -1, fn_1_88B0); + lbl_1_bss_2A4[i].unk00->work[0] = i; + } + for (i = 0; i < 4; i++) { + lbl_1_bss_E88[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x50, 16, 16, -1, fn_1_A148); + lbl_1_bss_E88[i].unk00->work[0] = i; + } + for (i = 0; i < 4; i++) { + lbl_1_bss_144[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x800, 16, 16, -1, fn_1_AD5C); + lbl_1_bss_144[i].unk00->work[0] = i; + } + lbl_1_bss_9C.unk00 = omAddObjEx(lbl_1_bss_0, 0x700, 16, 16, -1, fn_1_B950); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_14384; +} + +#include "src/REL/executor.c" + +void fn_1_14A54(void) { + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + omGameSysInit(lbl_1_bss_0); + fn_1_1A8(); + fn_1_FDC(); + fn_1_1110(); + fn_1_1818(); + fn_1_2AF0(); + fn_1_8F4C(); + omAddObjEx(lbl_1_bss_0, 0x1000, 0, 0, -1, fn_1_14760); +} + +void ObjectSetup(void) { + fn_1_14A54(); +} diff --git a/src/REL/m435Dll/sequence.c b/src/REL/m435Dll/sequence.c new file mode 100755 index 00000000..704c4c34 --- /dev/null +++ b/src/REL/m435Dll/sequence.c @@ -0,0 +1,540 @@ +#include "REL/m435Dll.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "ext_math.h" +#include "string.h" + +float fn_1_1526C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_15294(float arg0, float arg1, float arg2) { + if (arg2 <= 1.0f) { + return arg1; + } + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_152D4(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_1539C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +void fn_1_15474(StructBss84* arg0) { + arg0->unk04 = 0; + arg0->unk08 = arg0->unk0C[arg0->unk00].unk08; + arg0->unk10 = arg0->unk0C[arg0->unk00].unk00; + arg0->unk14 = arg0->unk0C[arg0->unk00].unk04; +} + +void fn_1_154C4(StructBss84* arg0, StructData3A0* arg1) { + arg0->unk00 = 0; + arg0->unk0C = arg1; + fn_1_15474(arg0); +} + +s32 fn_1_15520(StructBss84* arg0) { + arg0->unk00++; + fn_1_15474(arg0); + if (arg0->unk10 == NULL && arg0->unk14 == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_155A8(StructBss84* arg0) { + arg0->unk00--; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_15474(arg0); + return 0; +} + +void fn_1_1561C(StructBss84* arg0, s32 arg1) { + arg0->unk00 = arg1; + fn_1_15474(arg0); +} + +s32 fn_1_15670(StructBss84* arg0, s32 arg1) { + if (arg1 == 0) { + return arg0->unk04; + } + arg0->unk04 += arg1; + if (arg0->unk04 >= arg0->unk08) { + return 1; + } + return 0; +} + +s32 fn_1_156AC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[0])) { + if (arg4 != 0) { + if (Hu3DMotionTimeGet(arg0->model[arg1]) >= arg3) { + return 1; + } + } else if (Hu3DMotionTimeGet(arg0->model[arg1]) <= arg3) { + return 1; + } + } + return 0; +} + +void fn_1_157BC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_15934(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) && arg0->motion[arg2] != Hu3DMotionShiftIDGet(arg0->model[arg1])) { + fn_1_157BC(arg0, arg1, arg2, arg3, arg4); + } +} + +void fn_1_15AFC(StructBssE08* arg0, Vec* arg1, Vec* arg2) { + float temp_f31; + float temp_f29; + float temp_f30; + float temp_f27; + + temp_f31 = arg1->x - arg2->x; + temp_f29 = arg1->y - arg2->y; + temp_f30 = arg1->z - arg2->z; + arg0->unk18 = arg2->x; + arg0->unk1C = arg2->y; + arg0->unk20 = arg2->z; + arg0->unk40 = sqrtf(temp_f31 * temp_f31 + temp_f29 * temp_f29 + temp_f30 * temp_f30); + temp_f27 = atan2d(temp_f30, temp_f31); + arg0->unk30 = -atan2d(temp_f29, temp_f31 * cosd(-temp_f27) + temp_f30 * -sind(-temp_f27)); + arg0->unk34 = -(temp_f27 - 90.0f); + arg0->unk38 = 0.0f; +} + +void fn_1_15E14(StructBssE08* arg0) { + arg0->unk0C = arg0->unk18; + arg0->unk10 = arg0->unk1C; + arg0->unk14 = arg0->unk20; + arg0->unk24 = arg0->unk30; + arg0->unk28 = arg0->unk34; + arg0->unk2C = arg0->unk38; + arg0->unk3C = arg0->unk40; +} + +void fn_1_15E50(StructBssE08* arg0) { + arg0->unk44 = 0.0f; + arg0->unk18 = arg0->unk0C; + arg0->unk1C = arg0->unk10; + arg0->unk20 = arg0->unk14; + arg0->unk30 = arg0->unk24; + arg0->unk34 = arg0->unk28; + arg0->unk38 = arg0->unk2C; + arg0->unk40 = arg0->unk3C; +} + +void fn_1_15E9C(StructBssE08* arg0, StructBssE08* arg1, float arg2) { + arg0->unk0C = fn_1_15294(arg0->unk0C, arg1->unk18, arg2); + arg0->unk10 = fn_1_15294(arg0->unk10, arg1->unk1C, arg2); + arg0->unk14 = fn_1_15294(arg0->unk14, arg1->unk20, arg2); + arg0->unk24 = fn_1_15294(arg0->unk24, arg1->unk30, arg2); + arg0->unk28 = fn_1_15294(arg0->unk28, arg1->unk34, arg2); + arg0->unk2C = fn_1_15294(arg0->unk2C, arg1->unk38, arg2); + arg0->unk3C = fn_1_15294(arg0->unk3C, arg1->unk40, arg2); +} + +void fn_1_161B0(StructBssE08* arg0, float arg1) { + fn_1_15E9C(arg0, arg0, arg1); +} + +void fn_1_164C4(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3) { + arg1->unk18 = fn_1_1526C(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_1526C(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk20 = fn_1_1526C(arg0->unk20, arg1->unk14, arg2, arg3); + arg1->unk30 = fn_1_1526C(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_1526C(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk38 = fn_1_1526C(arg0->unk38, arg1->unk2C, arg2, arg3); + arg1->unk40 = fn_1_1526C(arg0->unk40, arg1->unk3C, arg2, arg3); +} + +void fn_1_16740(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3) { + fn_1_164C4(arg0, arg1, arg2, arg3); + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk14 = arg1->unk20; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk2C = arg1->unk38; + arg0->unk3C = arg1->unk40; +} + +void fn_1_169F4(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3, float arg4) { + fn_1_164C4(arg0, arg1, arg2, arg3); + fn_1_15E9C(arg0, arg1, arg4); +} + +void fn_1_16F24(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3) { + arg1->unk18 = fn_1_152D4(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_152D4(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk20 = fn_1_152D4(arg0->unk20, arg1->unk14, arg2, arg3); + arg1->unk30 = fn_1_152D4(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_152D4(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk38 = fn_1_152D4(arg0->unk38, arg1->unk2C, arg2, arg3); + arg1->unk40 = fn_1_152D4(arg0->unk40, arg1->unk3C, arg2, arg3); +} + +void fn_1_17378(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3) { + fn_1_16F24(arg0, arg1, arg2, arg3); + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk14 = arg1->unk20; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk2C = arg1->unk38; + arg0->unk3C = arg1->unk40; +} + +void fn_1_17804(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3, float arg4) { + fn_1_16F24(arg0, arg1, arg2, arg3); + fn_1_15E9C(arg0, arg1, arg4); +} + +void fn_1_17F20(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3) { + arg1->unk18 = fn_1_1539C(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_1539C(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk20 = fn_1_1539C(arg0->unk20, arg1->unk14, arg2, arg3); + arg1->unk30 = fn_1_1539C(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_1539C(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk38 = fn_1_1539C(arg0->unk38, arg1->unk2C, arg2, arg3); + arg1->unk40 = fn_1_1539C(arg0->unk40, arg1->unk3C, arg2, arg3); +} + +void fn_1_183E4(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3) { + fn_1_17F20(arg0, arg1, arg2, arg3); + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk14 = arg1->unk20; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk2C = arg1->unk38; + arg0->unk3C = arg1->unk40; +} + +void fn_1_188E0(StructBssE08* arg0, StructBssE08* arg1, float arg2, float arg3, float arg4) { + fn_1_17F20(arg0, arg1, arg2, arg3); + fn_1_15E9C(arg0, arg1, arg4); +} + +void fn_1_1906C(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8) { + Vec sp2C; + Vec sp20; + Vec sp14; + float var_f31; + float var_f30; + float temp_f29; + float temp_f28; + + sp2C.x = arg2->x; + sp2C.y = arg2->y; + sp2C.z = arg2->z; + sp20.x = arg3->x; + sp20.y = arg3->y; + sp20.z = arg3->z; + var_f31 = Hu3DData[arg0->model[arg1]].rot.y; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } else if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + temp_f29 = arg5; + temp_f28 = arg6; + if (arg7 != 0) { + sp14.x = fn_1_1526C(sp2C.x, sp20.x, temp_f29, temp_f28); + sp14.y = fn_1_1526C(sp2C.y, sp20.y, temp_f29, temp_f28); + sp14.z = fn_1_1526C(sp2C.z, sp20.z, temp_f29, temp_f28); + if (arg1 == 0) { + omSetTra(arg0, sp14.x, sp14.y, sp14.z); + } else { + Hu3DModelPosSet(arg0->model[arg1], sp14.x, sp14.y, sp14.z); + } + } + if (arg8 == 0) { + return; + } + var_f30 = -(atan2d(sp20.z - sp2C.z, sp20.x - sp2C.x) - 90.0); + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } else if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 >= 180.0f) { + if (var_f31 - var_f30 >= 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 < -180.0f) { + var_f31 += 360.0f; + } + } else { + if (var_f31 - var_f30 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 <= -180.0f) { + var_f31 += 360.0f; + } + } + var_f31 = (var_f30 + var_f31 * (arg4 - 1)) / arg4; + if (arg1 == 0) { + arg0->rot.y = var_f31; + } else { + Hu3DData[arg0->model[arg1]].rot.y = var_f31; + } +} + +void fn_1_19530(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_1906C(arg0, arg1, arg2, arg3, 0, arg5, arg6, 1, 0); +} + +void fn_1_19590(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_1906C(arg0, arg1, arg2, arg3, arg4, arg5, arg6, 0, 1); +} + +void fn_1_195F4(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_1906C(arg0, arg1, arg2, arg3, arg4, arg5, arg6, 1, 1); +} + +void fn_1_19658(omObjData* arg0, s32 arg1, float arg2, s32 arg3) { + float var_f31; + float var_f30; + + var_f31 = Hu3DData[arg0->model[arg1]].rot.y; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } else if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + var_f30 = arg2; + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } else if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 >= 180.0f) { + if (var_f31 - var_f30 >= 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 < -180.0f) { + var_f31 += 360.0f; + } + } else { + if (var_f31 - var_f30 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 <= -180.0f) { + var_f31 += 360.0f; + } + } + var_f31 = (var_f30 + var_f31 * (arg3 - 1)) / arg3; + if (arg1 == 0) { + arg0->rot.y = var_f31; + } else { + Hu3DData[arg0->model[arg1]].rot.y = var_f31; + } +} + +void fn_1_19894(StructFn19894* arg0, s32 arg1) { + s32 var_r30; + s32 i; + + var_r30 = -1; + for (i = 0; i < 20; i++) { + if (arg0->unk414[i] == -1) { + var_r30 = i; + break; + } + } + if (var_r30 != -1) { + arg0->unk414[var_r30] = arg1; + } +} + +void fn_1_198F8(StructFn19894* arg0, s32 arg1) { + s32 i; + + for (i = 0; i < 20; i++) { + if (arg1 == -1) { + arg0->unk414[i] = -1; + } else if (arg0->unk414[i] == arg1) { + arg0->unk414[i] = -1; + } + } +} + +void fn_1_19960(StructFn19894* arg0, s32 arg1) { + arg0->unk464 = arg1; +} + +void fn_1_19968(StructFn19894* arg0, s32 arg1) { + arg0->unk464 = -1; +} + +void fn_1_19974(StructFn19894* arg0, s32 arg1) { + arg0->unk04 = arg1; +} + +float fn_1_1997C(s32 arg0, s32 arg1, s32 arg2) { + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + sp20.x = Hu3DData[arg0].pos.x; + sp20.z = Hu3DData[arg0].pos.z; + sp14.x = Hu3DData[arg1].pos.x; + sp14.z = Hu3DData[arg1].pos.z; + sp8.x = sp14.x - sp20.x; + sp8.z = sp14.z - sp20.z; + var_f30 = Hu3DData[arg0].rot.y; + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + var_f31 = atan2d(sp8.z, sp8.x) - 90.0; + if (arg2 == 0) { + var_f31 *= -1.0f; + } + if (arg2 != 0) { + var_f31 += var_f30; + } else { + var_f31 -= var_f30; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_19CC0(s32 arg0, s32 arg1) { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = Hu3DData[arg0].pos.x; + sp24.z = Hu3DData[arg0].pos.z; + sp18.x = Hu3DData[arg1].pos.x; + sp18.z = Hu3DData[arg1].pos.z; + spC.x = sp18.x - sp24.x; + spC.z = sp18.z - sp24.z; + return sqrtf(spC.x * spC.x + spC.z * spC.z); +} + +void fn_1_19E50(omObjData* arg0) { + StructFn19894* temp_r31; + float var_f30; + float var_f27; + float var_f28; + float var_f24; + s32 i; + + temp_r31 = arg0->data; + var_f30 = 0.0f; + var_f27 = 0.0f; + var_f28 = 0.0f; + var_f24 = temp_r31->unk474; + if (temp_r31->unk04 != 11) { + if (temp_r31->unk04 == 0 || temp_r31->unk04 == 10) { + temp_r31->unk04 = 10; + temp_r31->unk47C = fn_1_15294(temp_r31->unk47C, 0.0f, 5.0f); + Hu3DMotionForceSet(temp_r31->unk08, temp_r31->unk10, temp_r31->unk468, temp_r31->unk47C); + if (temp_r31->unk410++ >= 10) { + temp_r31->unk410 = 0; + temp_r31->unk04 = 11; + Hu3DMotionNoMotReset(temp_r31->unk08, temp_r31->unk10, temp_r31->unk468); + } + return; + } + if (temp_r31->unk464 >= 0) { + var_f30 = fn_1_1997C(temp_r31->unk08, temp_r31->unk464, temp_r31->unk46C); + if (var_f30 >= temp_r31->unk478 || var_f30 <= -temp_r31->unk478) { + var_f30 = 0.0f; + } + temp_r31->unk47C = fn_1_15294(temp_r31->unk47C, var_f30, temp_r31->unk470); + } else { + for (i = 0; i < 20; i++) { + if (temp_r31->unk414[i] < 0) { + continue; + } + var_f28 = fn_1_19CC0(temp_r31->unk08, temp_r31->unk414[i]); + if (var_f28 <= temp_r31->unk474) { + var_f30 = fn_1_1997C(temp_r31->unk08, temp_r31->unk414[i], temp_r31->unk46C); + if (var_f30 <= temp_r31->unk478 && var_f30 >= -temp_r31->unk478 && var_f28 <= var_f24) { + var_f27 = var_f30; + var_f24 = var_f28; + } + } + } + temp_r31->unk47C = fn_1_15294(temp_r31->unk47C, var_f27, temp_r31->unk470); + } + Hu3DMotionForceSet(temp_r31->unk08, temp_r31->unk10, temp_r31->unk468, temp_r31->unk47C); + } +} + +void fn_1_1A33C(Process* arg0, StructFn19894* arg1, s32 arg2, char* arg3, s32 arg4, s32 arg5) { + fn_1_19974(arg1, 1); + arg1->unk08 = arg2; + strcpy(arg1->unk10, arg3); + fn_1_19968(arg1, -1); + fn_1_198F8(arg1, -1); + arg1->unk470 = 5.0f; + arg1->unk474 = 10000.0f; + arg1->unk478 = 90.0f; + arg1->unk410 = 0; + arg1->unk47C = 0.0f; + arg1->unk468 = arg4; + arg1->unk46C = arg5; + arg1->unk00 = omAddObjEx(arg0, 0x3000, 0, 0, -1, fn_1_19E50); + arg1->unk00->data = arg1; +} diff --git a/src/REL/m436Dll/main.c b/src/REL/m436Dll/main.c new file mode 100755 index 00000000..95440203 --- /dev/null +++ b/src/REL/m436Dll/main.c @@ -0,0 +1,3301 @@ +#include "REL/m436Dll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" +#include "version.h" + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ float unk2C; +} StructBss3E4; // Size 0x30 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; +} StructBss4A4; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04; + /* 0x08 */ s32 unk08[15]; + /* 0x44 */ s32 unk44[15]; + /* 0x80 */ float unk80[15][2]; +} StructBss234; // Size 0xF8 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ char unk08[0xC]; +} StructBss220; // Size 0x14 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ Vec unk04[8]; +} StructBss1BC; // Size 0x64 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08[6]; + /* 0x20 */ char unk20[8]; + /* 0x28 */ float unk28[6]; + /* 0x40 */ char unk40[8]; + /* 0x48 */ float unk48[6]; + /* 0x60 */ char unk60[8]; + /* 0x68 */ float unk68[6]; + /* 0x80 */ char unk80[8]; + /* 0x88 */ float unk88[6]; + /* 0xA0 */ char unkA0[8]; +} StructBssD8; // Size 0xA8 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ char unk04[0x10]; +} StructBss1A8; // Size 0x14 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ char unk04[0x10]; +} StructBss180; // Size 0x14 + +typedef struct { + /* 0x00 */ char unk00[0x28]; + /* 0x28 */ s32 unk28; + /* 0x2C */ char unk2C[0xC]; +} StructBss3AC; // Size 0x38 + +s32 fn_1_538C(s32 arg0); + +StructBss4A4 lbl_1_bss_4A4; +StructBss3E4 lbl_1_bss_3E4[4]; +StructBss3AC lbl_1_bss_3AC; +s32 lbl_1_bss_3A4[2]; +StructBss32C lbl_1_bss_32C; +StructBss234 lbl_1_bss_234; +StructBss220 lbl_1_bss_220; +StructBss1BC lbl_1_bss_1BC; +StructBss1A8 lbl_1_bss_1A8; +StructBss180 lbl_1_bss_180[2]; +StructBssD8 lbl_1_bss_D8; +StructBssC0 lbl_1_bss_C0; +StructBssC0 lbl_1_bss_A8; +Mtx lbl_1_bss_78; +Mtx lbl_1_bss_48; +Vec lbl_1_bss_3C; +StructBssC0 lbl_1_bss_24; +s32 lbl_1_bss_20_pad; // unused +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +Process *lbl_1_bss_0; + +s32 lbl_1_data_0[] + = { DATA_MAKE_NUM(DATADIR_M436, 13), DATA_MAKE_NUM(DATADIR_M436, 14), DATA_MAKE_NUM(DATADIR_M436, 15), DATA_MAKE_NUM(DATADIR_M436, 16), + DATA_MAKE_NUM(DATADIR_M436, 17), DATA_MAKE_NUM(DATADIR_M436, 18), DATA_MAKE_NUM(DATADIR_M436, 19), DATA_MAKE_NUM(DATADIR_M436, 20) }; + +s32 lbl_1_data_20[] = { MAKE_MESSID(29, 23), MAKE_MESSID(29, 24), MAKE_MESSID(29, 30), MAKE_MESSID(29, 26), MAKE_MESSID(29, 28), MAKE_MESSID(29, 27), + MAKE_MESSID(29, 25), MAKE_MESSID(29, 29) }; + +s32 lbl_1_data_40[][5] = { { 91, 105, 126, 141, -1 }, { 91, 105, 126, 141, -1 }, { 124, 137, -1, -1, -1 }, { 85, 100, 127, -1, -1 }, + { 124, 139, -1, -1, -1 }, { 85, 97, 127, 139, -1 }, { 127, 137, -1, -1, -1 }, { 79, 95, 109, 127, -1 } }; + +s32 lbl_1_data_E0 = -1; +s32 lbl_1_data_E4 = -1; +s32 lbl_1_data_E8 = -1; + +void fn_1_0(void) +{ + s32 i; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_data_E0 == -1 || lbl_1_data_E4 == -1 || lbl_1_data_E8 == -1 || lbl_1_data_E4 != Hu3DMotionIDGet(lbl_1_data_E0)) { + continue; + } + for (i = 0; i < 5; i++) { + if (lbl_1_data_40[lbl_1_data_E8][i] != -1 && Hu3DMotionTimeGet(lbl_1_data_E0) >= lbl_1_data_40[lbl_1_data_E8][i]) { + OSReport("KE-System CHR:%d TIME:%d\n", lbl_1_data_E8, lbl_1_data_40[lbl_1_data_E8][i]); + HuAudFXPlay(0x6D8); + lbl_1_data_40[lbl_1_data_E8][i] = -1; + } + } + } +} + +void fn_1_1A8(void) +{ + s32 var_r31; + + var_r31 = Hu3DGLightCreate(0.0f, 1000.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_230(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + if (HuPadBtn[0] & 0x200) { + if (HuPadBtn[0] & 0x100) { + var_r31->unk0C -= HuPadStkY[0] / 10.0f; + } + else { + var_r31->unk04 += HuPadStkX[0] / 10.0f; + var_r31->unk08 += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & 0x800) { + var_r31->unk1C -= HuPadStkY[0] / 100.0f; + var_r31->unk20 += HuPadStkX[0] / 100.0f; + } + if (HuPadBtn[0] & 0x400) { + var_r31->unk34 -= HuPadStkY[0] / 10.0f; + } + if (var_r31->unk1C >= 360.0f) { + var_r31->unk1C -= 360.0f; + } + if (var_r31->unk1C < 0.0f) { + var_r31->unk1C += 360.0f; + } + if (var_r31->unk20 >= 360.0f) { + var_r31->unk20 -= 360.0f; + } + if (var_r31->unk20 < 0.0f) { + var_r31->unk20 += 360.0f; + } + print8(16, 100, 1.0f, ">>>>>>>>>> CAMERA TEST <<<<<<<<<<"); + print8(16, 110, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk04, var_r31->unk08, var_r31->unk0C); + print8(16, 120, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk1C, var_r31->unk20, var_r31->unk24); + print8(16, 130, 1.0f, "ZOOM : %.2f", var_r31->unk34); +} + +void fn_1_614(s32 arg0, s32 arg1, float arg2) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk40[arg0] = arg1; + if (var_r31->unk5C[arg0] < 0.0f) { + var_r31->unk5C[arg0] = -arg2; + } + else { + var_r31->unk5C[arg0] = arg2; + } +} + +void fn_1_67C(s32 arg0, float arg1) +{ + fn_1_614(arg0, -1, arg1); +} + +float fn_1_6E8(s32 arg0) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + if (var_r31->unk5C[arg0] != 0.0f) { + var_r31->unk5C[arg0] *= -0.9f; + if (var_r31->unk40[arg0] == -1) { + if (var_r31->unk5C[arg0] >= -0.5f && var_r31->unk5C[arg0] <= 0.5f) { + var_r31->unk5C[arg0] = 0.0f; + } + } + else { + var_r31->unk40[arg0]--; + if (var_r31->unk40[arg0] <= 0) { + var_r31->unk40[arg0] = 0; + var_r31->unk5C[arg0] = 0.0f; + } + } + } + return var_r31->unk5C[arg0]; +} + +void fn_1_818(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk04 = 0.0f; + var_r31->unk08 = 225.0f; + var_r31->unk0C = 1740.0f; + var_r31->unk1C = -10.0f; + var_r31->unk20 = 0.0f; + var_r31->unk24 = 0.0f; + var_r31->unk34 = 300.0f; +} + +void fn_1_8A4(void (*arg0)(void)) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk00 = arg0; +} + +void fn_1_8C4(omObjData *arg0) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk04 + fn_1_6E8(0); + Center.y = var_r31->unk08 + fn_1_6E8(1); + Center.z = var_r31->unk0C + fn_1_6E8(2); + CRot.x = var_r31->unk1C + fn_1_6E8(3); + CRot.y = var_r31->unk20 + fn_1_6E8(4); + CRot.z = var_r31->unk24 + fn_1_6E8(5); + CZoom = var_r31->unk34 + fn_1_6E8(6); +} + +void fn_1_F6C(void) +{ + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 45.0f, 0.1f, 10000.0f, 1.2f); + fn_1_8A4(fn_1_818); + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_8C4); +} + +void fn_1_1084(void) +{ + Vec sp20 = { 0.0f, 2500.0f, 1.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_1148(s32 arg0, float arg1, float arg2, s32 arg3) +{ + WindowData *temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f27; + float temp_f26; + float var_f31; + float var_f30; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + var_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (var_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + var_f31 = temp_f29 + temp_f25 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 -= 2.0f; + } + } + var_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (var_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + var_f30 = temp_f28 + temp_f24 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 -= 2.0f; + } + } + if (arg3 != 0) { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = var_f31; + var_f21 = temp_f27; + var_f22 = var_f30; + var_f20 = temp_f26; + } + else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_11164(var_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_11164(temp_f27, 1.0f, i, 10.0f); + } + else { + var_f22 = fn_1_11164(var_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_11164(temp_f26, 1.0f, i - 10, 5.0f); + } + } + else { + if (i <= 10) { + var_f22 = fn_1_11164(temp_f28, var_f30, i, 10.0f); + var_f20 = fn_1_11164(1.0f, temp_f26, i, 10.0f); + } + else { + var_f23 = fn_1_11164(temp_f29, var_f31, i - 10, 5.0f); + var_f21 = fn_1_11164(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } + else { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +void fn_1_178C(void) +{ + HuWinInit(1); +} + +void fn_1_17B0(s32 arg0, float arg1, float arg2) +{ + WindowData *temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_11164(var_f31, temp_f29, i, 10.0f); + temp_f21 = fn_1_11164(temp_f25, 1.0f, i, 10.0f); + temp_f22 = fn_1_11164(var_f30, temp_f28, i, 10.0f); + temp_f20 = fn_1_11164(temp_f24, 1.0f, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); +} + +void fn_1_1C08(s32 arg0, float arg1, float arg2) +{ + WindowData *temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_112F4(temp_f29, var_f31, i, 10.0f); + temp_f21 = fn_1_112F4(1.0f, temp_f25, i, 10.0f); + temp_f22 = fn_1_112F4(temp_f28, var_f30, i, 10.0f); + temp_f20 = fn_1_112F4(1.0f, temp_f24, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); +} + +s32 fn_1_2060(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4) +{ + s32 sp20[][5] = { { 0xFF, 0xFF, 0xCC, 0x00, 0x09 }, { 0xCC, 0xFF, 0xFF, 0x00, 0x09 }, { 0xFF, 0xCC, 0xFF, 0x00, 0x09 } }; + float sp14[] = { 0.9f, 0.9f, 0.9f }; + GXColor sp10; + s32 temp_r31; + + temp_r31 = HuWinCreate(arg0, arg1, arg2, arg3, 1); + sp10.r = sp20[arg4][0]; + sp10.g = sp20[arg4][1]; + sp10.b = sp20[arg4][2]; + HuWinBGColSet(temp_r31, &sp10); + HuWinBGTPLvlSet(temp_r31, sp14[arg4]); + fn_1_1148(temp_r31, 0.5f, 0.5f, 1); + return temp_r31; +} + +s32 fn_1_2230(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4) +{ + return fn_1_2060(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2400(s32 arg0) +{ + HuWinMesSet(arg0, MAKE_MESSID(29, 22)); + HuPrcVSleep(); + fn_1_1148(arg0, 0.5f, 0.5f, 0); + HuWinKill(arg0); +} + +void fn_1_2468(s32 arg0) +{ + fn_1_2400(arg0); +} + +void fn_1_24D0(s32 arg0, s32 arg1) +{ + s32 i; + s32 var_r30; + s32 temp_r28; + + var_r30 = 0; + temp_r28 = GWMessDelayGet(); + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_3E4[i].unk0C == 0) { + var_r30 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r30 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_25B8(s32 arg0) +{ + s32 var_r31; + s32 temp_r28; + s32 i; + + var_r31 = 0; + temp_r28 = GWMessDelayGet(); + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_3E4[i].unk0C == 0) { + var_r31 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r31 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + var_r31 = HuWinChoiceGet(arg0, 1); + if (var_r31 == -1 || var_r31 == 1) { + lbl_1_bss_8 = 0; + } + else { + lbl_1_bss_8 = 1; + } + HuWinComKeyReset(); +} + +void fn_1_26D4(float *arg0, s32 arg1) +{ + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} + +void fn_1_2744(s32 arg0, s32 arg1) +{ + winData[arg0].mess_color = 0; + winData[arg0].mess_shadow_color = 9; + winData[arg0].attr |= 0x80; + HuWinMesSet(arg0, arg1); +} + +void fn_1_27C8(s32 arg0) +{ + if (lbl_1_bss_10 == 0) { + lbl_1_bss_10 = 1; + lbl_1_bss_C = arg0 * REFRESH_RATE; + } +} + +s32 fn_1_2800(void) +{ + if (lbl_1_bss_10 == 3) { + return 1; + } + else { + return 0; + } +} + +void fn_1_2824(void) +{ + if (lbl_1_bss_10 == 2) { + lbl_1_bss_10 = 3; + lbl_1_bss_C = 30; + } +} + +s32 lbl_1_data_16C = -1; + +void fn_1_285C(omObjData *arg0) +{ + switch (lbl_1_bss_10) { + case 1: + if (lbl_1_data_16C == -1) { + lbl_1_data_16C = MGSeqCreate(1, lbl_1_bss_C / REFRESH_RATE, -1, -1); + } + lbl_1_bss_10 = 2; + break; + case 2: + lbl_1_bss_C--; + if (lbl_1_data_16C != -1) { + MGSeqParamSet(lbl_1_data_16C, 1, (lbl_1_bss_C + REFRESH_RATE - 1) / REFRESH_RATE); + } + if (lbl_1_bss_C <= 0) { + lbl_1_bss_C = 30; + lbl_1_bss_10 = 3; + } + break; + case 3: + if (lbl_1_data_16C != -1) { + MGSeqParamSet(lbl_1_data_16C, 2, -1); + lbl_1_data_16C = -1; + } + lbl_1_bss_C = 0; + lbl_1_bss_10 = 0; + break; + } +} + +void fn_1_2A2C(void) +{ + lbl_1_bss_C = 0; + lbl_1_bss_10 = 0; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_285C); +} + +void fn_1_2A90(s32 arg0) +{ + float spC[2]; + float temp_f31; + float temp_f30; + float temp_f28; + float temp_f29; + WindowData *temp_r29; + StructBss234 *var_r31; + s32 i; + + temp_r29 = &winData[arg0]; + var_r31 = &lbl_1_bss_234; + temp_f31 = temp_r29->pos_x; + temp_f30 = temp_r29->pos_y; + temp_f28 = temp_r29->h; + temp_f29 = temp_r29->w; + for (i = 0; i < var_r31->unk00; i++) { + HuWinMesMaxSizeGet(1, spC, lbl_1_data_20[var_r31->unk44[i]]); + var_r31->unk08[i] + = HuWinCreate(temp_f31 + temp_f29 + 16.0f + var_r31->unk80[i][0], temp_f30 + 26.0f + var_r31->unk80[i][1], spC[0], spC[1], 1); + winData[var_r31->unk08[i]].mess_shadow_color = 9; + HuWinMesColSet(var_r31->unk08[i], 0); + HuWinScissorSet(var_r31->unk08[i], temp_f31 + 20.0f, temp_f30, temp_f29 + 20.0f, temp_f28); + HuWinBGTPLvlSet(var_r31->unk08[i], 0.0f); + HuPrcVSleep(); + fn_1_2744(var_r31->unk08[i], lbl_1_data_20[var_r31->unk44[i]]); + } + var_r31->unk04 = 4.0f; + HuPrcVSleep(); +} + +void fn_1_2D94(s32 arg0) +{ + float sp10[2]; + float temp_f31; + float temp_f29; + float spC; + float temp_f30; + WindowData *temp_r30; + StructBss234 *var_r31; + s32 i; + + temp_r30 = &winData[arg0]; + var_r31 = &lbl_1_bss_234; + temp_f31 = temp_r30->pos_x; + temp_f29 = temp_r30->pos_y; + spC = temp_r30->h; + temp_f30 = temp_r30->w; + while (TRUE) { + for (i = 0; i < var_r31->unk00; i++) { + var_r31->unk80[i][0] -= var_r31->unk04; + HuWinPosSet(var_r31->unk08[i], temp_f31 + temp_f30 + 16.0f + var_r31->unk80[i][0], 26.0f + temp_f29 + var_r31->unk80[i][1]); + } + if (var_r31->unk00 >= 2) { + HuWinMesMaxSizeGet(1, sp10, lbl_1_data_20[var_r31->unk44[2]]); + if (temp_f31 + temp_f30 + 16.0f + var_r31->unk80[2][0] + sp10[0] <= temp_f31 + temp_f30 - 16.0f) { + var_r31->unk04 += 0.75f; + } + } + HuWinMesMaxSizeGet(1, sp10, lbl_1_data_20[var_r31->unk44[var_r31->unk00 - 1]]); + if (temp_f31 + temp_f30 + 16.0f + var_r31->unk80[var_r31->unk00 - 1][0] + sp10[0] <= temp_f31 - 16.0f) { + break; + } + HuPrcVSleep(); + } + HuPrcVSleep(); +} + +void fn_1_3020(void) +{ + s32 i; + StructBss234 *var_r30; + + var_r30 = &lbl_1_bss_234; + for (i = 0; i < var_r30->unk00; i++) { + HuWinKill(var_r30->unk08[i]); + HuPrcVSleep(); + } + HuPrcVSleep(); +} + +void fn_1_3088(void) +{ + float sp8[2]; + StructBss234 *var_r31; + s32 i; + + var_r31 = &lbl_1_bss_234; + var_r31->unk00 = rand8() % 2 + 10; + if (var_r31->unk00 >= 15) { + var_r31->unk00 = 15; + } + for (i = 0; i < 15; i++) { + var_r31->unk44[i] = -1; + } + for (i = 0; i < var_r31->unk00; i++) { + var_r31->unk44[i] = rand8() % 8; + } + var_r31->unk80[0][0] = 0.0f; + var_r31->unk80[0][1] = 0.0f; + for (i = 1; i < var_r31->unk00; i++) { + HuWinMesMaxSizeGet(1, sp8, lbl_1_data_20[var_r31->unk44[i - 1]]); + var_r31->unk80[i][0] = var_r31->unk80[i - 1][0] + sp8[0] + 8.0f; + var_r31->unk80[i][1] = var_r31->unk80[0][1]; + } +} + +void fn_1_31FC(omObjData *arg0) +{ + StructBss220 *var_r29; + ModelData *temp_r30; + s32 i; + + var_r29 = &lbl_1_bss_220; + temp_r30 = &Hu3DData[arg0->model[8]]; + for (i = 0; i < 3; i++) { + Hu3DData[arg0->model[i + 5]].rot.y += 360.0f / (2500.0f + 2500.0f * i); + } + if (arg0->work[0] == 0 && arg0->work[2]++ >= 600) { + arg0->work[2] = 0; + if (rand8() % 2 == 0) { + arg0->work[0] = 1; + } + } + switch (arg0->work[0]) { + case 10: + var_r29->unk04 = 11; + fn_1_11818(arg0, 10, 12, 1, 0); + Hu3DModelAttrReset(arg0->model[10], HU3D_ATTR_DISPOFF); + fn_1_614(1, 10, 4.0f); + HuAudFXPlay(0x6CF); + /* fallthrough */ + case 1: + case 11: + fn_1_11818(arg0, 0, 0, 1, 0); + fn_1_11818(arg0, 3, 3, 1, 0); + fn_1_11818(arg0, 4, 4, 1, 0); + fn_1_11818(arg0, 5, 5, 1, 0); + fn_1_11818(arg0, 6, 6, 1, 0); + fn_1_11818(arg0, 7, 7, 1, 0); + if (arg0->work[0] == 1) { + HuAudFXPlay(0x6CE); + } + arg0->work[0] = 99; + break; + case 2: + arg0->work[0] = 3; + fn_1_11818(arg0, 0, 0, 1, 0); + fn_1_11818(arg0, 1, 1, 1, 0); + fn_1_11818(arg0, 2, 2, 1, 0); + fn_1_11818(arg0, 3, 3, 1, 0); + fn_1_11818(arg0, 4, 4, 1, 0); + fn_1_11818(arg0, 5, 5, 1, 0); + fn_1_11818(arg0, 6, 6, 1, 0); + fn_1_11818(arg0, 7, 7, 1, 0); + fn_1_11818(arg0, 9, 9, 1, 0); + Hu3DModelAttrReset(arg0->model[9], HU3D_ATTR_DISPOFF); + HuAudFXPlay(0x6D0); + break; + case 3: + fn_1_614(6, -1, 8.0f); + if (Hu3DMotionTimeGet(arg0->model[3]) >= 30.0f) { + arg0->work[0] = 99; + fn_1_11818(arg0, 8, 8, 0, 0); + fn_1_614(6, -1, 128.0f); + HuAudFXPlay(0x6DA); + omVibrate(fn_1_538C(0), 12, 12, 0); + omVibrate(fn_1_538C(1), 12, 12, 0); + omVibrate(fn_1_538C(2), 12, 12, 0); + omVibrate(fn_1_538C(3), 12, 12, 0); + Hu3DModelAttrReset(arg0->model[8], HU3D_ATTR_DISPOFF); + } + break; + case 99: + if (Hu3DMotionEndCheck(arg0->model[3]) != 0) { + arg0->work[0] = 0; + fn_1_11818(arg0, 3, 10, 1, 1); + fn_1_11818(arg0, 4, 11, 1, 1); + Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF); + } + break; + } + if (Hu3DMotionTimeGet(arg0->model[10]) >= 25.0f && var_r29->unk04 == 0) { + var_r29->unk04 = 1; + fn_1_614(1, 10, 4.0f); + } + else if (Hu3DMotionTimeGet(arg0->model[10]) >= 40.0f && var_r29->unk04 == 1) { + var_r29->unk04 = 2; + fn_1_614(1, 10, 4.0f); + } + switch (arg0->work[1]) { + case 1: + if (arg0->work[3] >= 360.0f) { + arg0->work[3] = 0; + } + temp_r30->pos.y = fn_1_110FC(temp_r30->pos.y, fn_1_1122C(210.0f, 220.0f, arg0->work[3]++, 360.0f), 30.0f); + break; + case 2: + temp_r30->pos.y = fn_1_110FC(temp_r30->pos.y, 60.0f, 20.0f); + arg0->work[3] = 0; + break; + case 3: + temp_r30->pos.y = fn_1_110FC(temp_r30->pos.y, 260.0f, 20.0f); + arg0->work[3] = 0; + break; + } +} + +void fn_1_39B4(omObjData *arg0) +{ + fn_1_11818(arg0, 0, 0, 1, 2); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -680.0f); + fn_1_11818(arg0, 1, 1, 1, 2); + Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, -680.0f); + fn_1_11818(arg0, 2, 2, 1, 2); + Hu3DModelPosSet(arg0->model[3], 525.0f, 0.0f, -1150.0f); + fn_1_11818(arg0, 3, 10, 1, 1); + Hu3DModelPosSet(arg0->model[4], -525.0f, 0.0f, -1150.0f); + fn_1_11818(arg0, 4, 11, 1, 1); + fn_1_11818(arg0, 5, 5, 1, 2); + fn_1_11818(arg0, 6, 6, 1, 2); + fn_1_11818(arg0, 7, 7, 1, 2); + Hu3DModelPosSet(arg0->model[8], 0.0f, 210.0f, -320.0f); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + fn_1_11818(arg0, 8, 8, 1, 1); + Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF); + fn_1_11818(arg0, 9, 9, 1, 2); + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; +} + +void fn_1_3BF0(omObjData *arg0) +{ + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 21)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[0]); + Hu3DModelShadowMapSet(arg0->model[0]); + fn_1_11818(arg0, 0, 0, 1, 2); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 22)); + arg0->motion[1] = Hu3DMotionIDGet(arg0->model[1]); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -680.0f); + Hu3DModelShadowMapSet(arg0->model[1]); + fn_1_11818(arg0, 1, 1, 1, 2); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 23)); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, -680.0f); + Hu3DModelShadowSet(arg0->model[2]); + fn_1_11818(arg0, 2, 2, 1, 2); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 24)); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[3]); + arg0->motion[10] = Hu3DJointMotionFile(arg0->model[3], DATA_MAKE_NUM(DATADIR_M436, 26)); + Hu3DModelPosSet(arg0->model[3], 525.0f, 0.0f, -1150.0f); + Hu3DModelShadowSet(arg0->model[3]); + fn_1_11818(arg0, 3, 10, 1, 1); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 25)); + arg0->motion[4] = Hu3DMotionIDGet(arg0->model[4]); + arg0->motion[11] = Hu3DJointMotionFile(arg0->model[4], DATA_MAKE_NUM(DATADIR_M436, 27)); + Hu3DModelPosSet(arg0->model[4], -525.0f, 0.0f, -1150.0f); + Hu3DModelShadowSet(arg0->model[4]); + fn_1_11818(arg0, 4, 11, 1, 1); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 10)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 150.0f, 0.0f); + Hu3DModelLayerSet(arg0->model[5], 1); + fn_1_11818(arg0, 5, 5, 1, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 11)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelPosSet(arg0->model[6], 0.0f, 150.0f, 0.0f); + fn_1_11818(arg0, 6, 6, 1, 2); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 12)); + arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]); + Hu3DModelPosSet(arg0->model[7], 0.0f, 150.0f, 0.0f); + fn_1_11818(arg0, 7, 7, 1, 2); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 8)); + arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]); + Hu3DModelPosSet(arg0->model[8], 0.0f, 210.0f, -320.0f); + Hu3DModelShadowSet(arg0->model[8]); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[8], 2); + fn_1_11818(arg0, 8, 8, 1, 1); + arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 28)); + arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]); + Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[9], 2); + fn_1_11818(arg0, 9, 9, 1, 2); + arg0->model[10] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 29)); + arg0->motion[12] = Hu3DMotionIDGet(arg0->model[10]); + Hu3DModelAttrSet(arg0->model[10], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[10], 2); + fn_1_11818(arg0, 10, 12, 1, 2); + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + arg0->func = fn_1_31FC; +} + +void fn_1_420C(omObjData *arg0) +{ + s32 i; + + switch (arg0->work[0]) { + case 1: + arg0->work[0] = 0; + for (i = 0; i < 8; i++) { + Hu3DModelAttrReset(arg0->model[i + 1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[i + 9], HU3D_ATTR_DISPOFF); + fn_1_11818(arg0, i + 1, i + 1, 1, 0); + } + break; + case 2: + arg0->work[0] = 0; + Hu3DModelAttrReset(arg0->model[arg0->work[1] + 1], HU3D_ATTR_DISPOFF); + fn_1_11818(arg0, arg0->work[1] + 1, arg0->work[1] + 1, 1, 0); + break; + } +} + +void fn_1_4304(omObjData *arg0) +{ + StructBss1BC *var_r30; + s32 i; + + var_r30 = &lbl_1_bss_1BC; + for (i = 0; i < 8; i++) { + var_r30->unk04[i].x = -2000.0 * cosd(287.5f - 5.0f * i); + var_r30->unk04[i].y = 0.0f; + var_r30->unk04[i].z = -2000.0 * sind(287.5f - 5.0f * i) - 1500.0; + } + for (i = 0; i < 8; i++) { + Hu3DModelPosSet(arg0->model[i + 1], var_r30->unk04[i].x, var_r30->unk04[i].y + 65.0f, var_r30->unk04[i].z); + Hu3DModelAttrSet(arg0->model[i + 1], HU3D_ATTR_DISPOFF); + fn_1_11818(arg0, i + 1, i + 1, 1, 2); + } + for (i = 0; i < 8; i++) { + Hu3DModelPosSet(arg0->model[i + 9], var_r30->unk04[i].x, var_r30->unk04[i].y, var_r30->unk04[i].z); + Hu3DModelAttrSet(arg0->model[i + 9], HU3D_ATTR_DISPOFF); + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; +} + +void fn_1_4594(omObjData *arg0) +{ + StructBss1BC *var_r30; + s32 i; + + var_r30 = &lbl_1_bss_1BC; + for (i = 0; i < 8; i++) { + var_r30->unk04[i].x = -2000.0 * cosd(287.5f - 5.0f * i); + var_r30->unk04[i].y = 0.0f; + var_r30->unk04[i].z = -2000.0 * sind(287.5f - 5.0f * i) - 1500.0; + } + for (i = 0; i < 8; i++) { + arg0->model[i + 1] = Hu3DModelCreateFile(lbl_1_data_0[i]); + arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]); + Hu3DModelPosSet(arg0->model[i + 1], var_r30->unk04[i].x, 65.0f + var_r30->unk04[i].y, var_r30->unk04[i].z); + Hu3DModelAttrSet(arg0->model[i + 1], HU3D_ATTR_DISPOFF); + fn_1_11818(arg0, i + 1, i + 1, 1, 2); + } + for (i = 0; i < 8; i++) { + arg0->model[i + 9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 9)); + Hu3DModelPosSet(arg0->model[i + 9], var_r30->unk04[i].x, var_r30->unk04[i].y, var_r30->unk04[i].z); + Hu3DModelShadowSet(arg0->model[i + 9]); + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + arg0->func = fn_1_420C; +} + +void fn_1_48AC(omObjData *arg0) +{ + StructBss1A8 *sp8; + + sp8 = &lbl_1_bss_1A8; + switch (arg0->work[3]) { + case 1: + arg0->work[3] = 0; + fn_1_11818(arg0, 0, 2, 5, 0); + break; + case 2: + arg0->work[3] = 0; + fn_1_11818(arg0, 0, 1, 30, 1); + break; + case 3: + arg0->work[3] = 0; + fn_1_11818(arg0, 0, 3, 5, 0); + break; + case 4: + arg0->work[3] = 0; + fn_1_11818(arg0, 0, 2, 5, 1); + break; + case 5: + arg0->work[3] = 0; + fn_1_11818(arg0, 0, 2, 5, 0); + break; + } + if (arg0->work[2] == 1) { + arg0->work[2] = 0; + fn_1_11818(arg0, 1, 11, 1, 0); + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_49FC(omObjData *arg0) +{ + omSetTra(arg0, 0.0f, 37.0f, -565.0f); + omSetSca(arg0, 1.5f, 1.5f, 1.5f); + Hu3DModelHookReset(arg0->model[0]); + fn_1_11818(arg0, 0, 1, 1, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; +} + +void fn_1_4AB4(s32 arg0) +{ + ModelData *var_r28; + HsfData *temp_r31; + HsfMaterial *var_r30; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r31 = var_r28->hsfData; + var_r30 = temp_r31->material; + for (i = 0; i < temp_r31->materialCnt; i++, var_r30++) { + var_r30->flags = 0x10; + } +} + +void fn_1_4B1C(omObjData *arg0) +{ + StructBss1A8 *sp8; + + sp8 = &lbl_1_bss_1A8; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 31)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 32)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 33)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 34)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 35)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 36)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 37)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 38)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 39)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 40)); + arg0->motion[9] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 41)); + arg0->motion[10] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 42)); + arg0->motion[12] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 43)); + omSetTra(arg0, 0.0f, 37.0f, -565.0f); + omSetSca(arg0, 1.5f, 1.5f, 1.5f); + Hu3DModelShadowSet(arg0->model[0]); + fn_1_11818(arg0, 0, 1, 1, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0; + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 30)); + arg0->motion[11] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_11818(arg0, 0, 11, 1, 2); + Hu3DModelPosSet(arg0->model[1], 0.0f, 300.0f, -770.0f); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + arg0->func = fn_1_48AC; +} + +void fn_1_4EA8(omObjData *arg0) +{ + switch (arg0->work[3]) { + case 1: + arg0->work[3] = 0; + if (arg0->work[0] == 0) { + fn_1_11818(arg0, 0, 2, 5, 0); + fn_1_11818(arg0, 1, 5, 5, 2); + } + else { + fn_1_11818(arg0, 0, 3, 5, 0); + } + break; + case 2: + arg0->work[3] = 0; + if (arg0->work[0] == 0) { + fn_1_11818(arg0, 0, 0, 30, 1); + fn_1_11818(arg0, 1, 5, 30, 1); + } + else { + fn_1_11818(arg0, 0, 0, 30, 1); + } + break; + } +} + +void fn_1_4FB0(omObjData *arg0) +{ + s32 temp_r30; + + temp_r30 = arg0->work[0]; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 46)); + if (temp_r30 == 0) { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 48)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 49)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 50)); + omSetTra(arg0, -400.0f, 37.0f, -425.0f); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 58)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M436, 59)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M436, 60)); + Hu3DModelHookSet(arg0->model[0], "g007m0-itemhook_r", arg0->model[1]); + Hu3DModelLayerSet(arg0->model[0], 2); + Hu3DModelLayerSet(arg0->model[1], 2); + fn_1_11818(arg0, 0, 0, 1, 1); + fn_1_11818(arg0, 1, 5, 1, 1); + } + else { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 47)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 51)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 52)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 53)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 54)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 55)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 56)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 57)); + omSetTra(arg0, 400.0f, 37.0f, -475.0f); + omSetRot(arg0, 0.0f, -15.0f, 0.0f); + fn_1_11818(arg0, 0, 0, 1, 1); + } + Hu3DModelShadowSet(arg0->model[0]); + arg0->func = fn_1_4EA8; +} + +s32 fn_1_538C(s32 arg0) +{ + StructBss3E4 *temp_r31; + + temp_r31 = &lbl_1_bss_3E4[arg0]; + return temp_r31->unk04; +} + +s32 fn_1_53B4(void) +{ + StructBss3E4 *temp_r29; + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 4; i++) { + temp_r29 = &lbl_1_bss_3E4[i]; + if (temp_r29->unk0C != 0) { + var_r30++; + } + } + return var_r30; +} + +s32 fn_1_5414(s32 arg0) +{ + StructBss3E4 *temp_r31; + + temp_r31 = &lbl_1_bss_3E4[arg0]; + if (temp_r31->unk0C != 0) { + return 1; + } + return 0; +} + +s32 fn_1_5450(s32 arg0) +{ + StructBss3E4 *temp_r31; + + temp_r31 = &lbl_1_bss_3E4[arg0]; + if (HuPadBtnDown[temp_r31->unk18] == 0x100) { + return 1; + } + return 0; +} + +void fn_1_54A0(void) +{ + StructBss3E4 *temp_r31; + s32 sp8[4]; + s32 i; + + sp8[0] = GWPlayerCurrGet(); + for (i = 1; i < 4; i++) { + sp8[i] = sp8[i - 1] + 1; + if (sp8[i] >= 4) { + sp8[i] = 0; + } + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_3E4[i]; + temp_r31->unk04 = sp8[i]; + temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].group; + temp_r31->unk0C = GWPlayerCfg[temp_r31->unk04].iscom; + if (temp_r31->unk0C != 0) { + temp_r31->unk10 = GWPlayerCfg[temp_r31->unk04].diff; + } + else { + temp_r31->unk10 = 0; + } + temp_r31->unk14 = GWPlayerCfg[temp_r31->unk04].character; + temp_r31->unk18 = GWPlayerCfg[temp_r31->unk04].pad_idx; + } +} + +s32 fn_1_5608(omObjData *arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6) +{ + float var_f31; + float var_f30; + float var_f27; + float var_f26; + s32 var_r30; + StructBss3E4 *sp18; + + var_r30 = 0; + sp18 = &lbl_1_bss_3E4[arg0->work[0]]; + var_f31 = arg1.x - arg0->trans.x; + var_f30 = arg0->trans.z - arg1.z; + var_f26 = 90.0 + atan2d(var_f30, var_f31); + var_f27 = sqrtf(var_f31 * var_f31 + var_f30 * var_f30); + if (var_f27 <= arg4) { + var_f31 = var_f30 = 0.0f; + var_r30 = 1; + } + else { + var_f31 = 72.0f * (var_f31 / var_f27); + var_f30 = 72.0f * (var_f30 / var_f27); + } + var_f27 = arg3 * (sqrtf(var_f31 * var_f31 + var_f30 * var_f30) / 72.0f); + if (var_f27 >= arg3) { + var_f27 = arg3; + } + else if (var_f27 <= 1.0f) { + var_f31 = var_f30 = var_f27 = 0.0f; + var_r30 = 1; + } + if (var_f31 != 0.0f || var_f30 != 0.0f || arg2 >= 0.0f) { + if (arg2 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) { + var_f26 = arg2; + } + if (var_f26 >= 180.0f) { + if (arg0->rot.y - var_f26 >= 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 < -180.0f) { + arg0->rot.y += 360.0f; + } + } + else { + if (arg0->rot.y - var_f26 > 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 <= -180.0f) { + arg0->rot.y += 360.0f; + } + } + arg0->rot.y = (var_f26 + arg0->rot.y * (arg5 - 1.0f)) / arg5; + } + arg0->trans.x += var_f27 * sind(arg0->rot.y); + arg0->trans.z += var_f27 * cosd(arg0->rot.y); + if (arg6 == 0) { + if (var_f27 >= 6.75f) { + fn_1_11B18(arg0, 0, 2, 15, 1); + } + else if (var_f27 > 0.0f) { + fn_1_11B18(arg0, 0, 1, 15, 1); + } + else { + fn_1_11B18(arg0, 0, 0, 15, 1); + } + } + return var_r30; +} + +void fn_1_5CD0(omObjData *arg0) +{ + StructBss3E4 *sp8; + char **temp_r26; + s32 var_r22; + s32 i, j; + ModelData *temp_r24; + HsfData *temp_r27; + HsfMaterial *var_r31; + StructBss3E4 *temp_r30; + HsfAttribute *temp_r23; + + sp8 = &lbl_1_bss_3E4[arg0->work[0]]; + if (arg0->work[2] != 1) { + return; + } + var_r22 = 1; + temp_r24 = &Hu3DData[arg0->model[0]]; + temp_r27 = temp_r24->hsfData; + var_r31 = temp_r27->material; + temp_r30 = &lbl_1_bss_3E4[arg0->work[0]]; + if (temp_r30->unk14 == 3) { + for (i = 0; i < temp_r24->hsfData->materialCnt; i++, var_r31++) { + if (i != 1 && i != 2) { + var_r31->color[0] *= temp_r30->unk2C; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk2C; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk2C; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } + } + else { + temp_r26 = CharModelTexNameGet(temp_r30->unk14, 2); + for (i = 0; i < temp_r27->materialCnt; i++, var_r31++) { + var_r22 = 1; + for (j = 0; j < var_r31->numAttrs; j++) { + temp_r23 = &temp_r27->attribute[var_r31->attrs[j]]; + if (strcmp(temp_r26[0], temp_r23->bitmap->name) == 0 || strcmp(temp_r26[1], temp_r23->bitmap->name) == 0) { + var_r22 = 0; + } + } + if (var_r22 != 0) { + var_r31->color[0] *= temp_r30->unk2C; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk2C; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk2C; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } + } + temp_r30->unk2C -= 0.01; + if (temp_r30->unk2C < 0.0f) { + temp_r30->unk2C = 0.0f; + } +} + +void fn_1_6060(omObjData *arg0) +{ + u32 temp_r29 = arg0->work[0]; + StructBss3E4 *temp_r30 = &lbl_1_bss_3E4[temp_r29]; + Vec sp8[] = { { -600.0f, 0.0f, 300.0f }, { -600.0f, 0.0f, 150.0f }, { -450.0f, 0.0f, 150.0f }, { -300.0f, 0.0f, 150.0f } }; + + arg0->model[0] = CharModelCreate(temp_r30->unk14, 2); + arg0->motion[0] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[1] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2)); + arg0->motion[2] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[3] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 88)); + arg0->motion[4] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 89)); + arg0->motion[5] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 90)); + arg0->motion[6] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[7] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 28)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, temp_r30->unk14)); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + fn_1_11B18(arg0, 0, 0, 0, 1); + omSetTra(arg0, sp8[temp_r29].x, sp8[temp_r29].y, sp8[temp_r29].z); + CharModelMotionDataClose(temp_r30->unk14); + temp_r30->unk2C = 1.0f; + arg0->func = fn_1_5CD0; +} + +// unused +s16 gap_04_00000182_data[] = { 0, 0x43, 0, 0x43, 1, 0x43, 2, 0x43, 3, 0x43, 4, 0x43, 5, 0x43, 6, 0x43, 7 }; + +s32 fn_1_62C4(omObjData *arg0) +{ + Mtx sp8; + StructBss4A4 *var_r25; + StructBssD8 *var_r31; + StructBss1A8 *var_r28; + StructBss3E4 *temp_r27; + s32 i; + + var_r25 = &lbl_1_bss_4A4; + var_r31 = &lbl_1_bss_D8; + var_r28 = &lbl_1_bss_1A8; + temp_r27 = &lbl_1_bss_3E4[var_r25->unk00]; + if (arg0->work[3] == 1) { + arg0->work[3] = 0; + arg0->work[1] = 1; + arg0->work[2] = 0; + var_r31->unk04 = 1; + for (i = 0; i < 6; i++) { + var_r31->unk08[i] = -(50.0f * i); + } + } + switch (arg0->work[1]) { + case 1: + arg0->work[1] = 2; + fn_1_11818(var_r28->unk00, 0, 8, 5, 0); + break; + case 2: + if (Hu3DMotionTimeGet(var_r28->unk00->model[0]) == 90.0f) { + arg0->work[1] = 3; + fn_1_11818(temp_r27->unk00, 0, 7, 5, 0); + Hu3DMotionTimeSet(var_r28->unk00->model[0], 90.0f); + Hu3DMotionSpeedSet(var_r28->unk00->model[0], 0.0f); + HuAudCharVoicePlay(temp_r27->unk14, 0x123); + HuAudFXPlay(0x6D5); + omVibrate(temp_r27->unk04, 120, 12, 0); + } + break; + case 3: + Hu3DModelObjMtxGet(var_r28->unk00->model[0], "g000m0-itemhook_M", sp8); + temp_r27->unk00->work[2] = 1; + for (i = 0; i < 6; i++) { + if (var_r31->unk04 == 1 || (var_r31->unk04 == 0 && var_r31->unk08[i] > 0.0f)) { + var_r31->unk08[i] += 10.0f; + } + if (var_r31->unk08[i] > 0.0f) { + var_r31->unk48[i] += 0.1f; + var_r31->unk28[i] -= 5.0f; + if (var_r31->unk88[i] == 0.0f) { + fn_1_11818(arg0, i + 1, i + 1, 1, 1); + } + if (var_r31->unk88[i] < 8.0f) { + var_r31->unk68[i] += 0.025f; + } + else if (var_r31->unk88[i] < 23.0f) { + var_r31->unk68[i] = 0.7f; + } + else if (var_r31->unk88[i] < 31.0f) { + var_r31->unk68[i] -= 0.1f; + if (var_r31->unk68[i] < 0.0f) { + var_r31->unk68[i] = 0.0f; + } + } + var_r31->unk88[i] += 1.0f; + } + Hu3DModelPosSet(arg0->model[i + 1], sp8[0][3], sp8[1][3] + var_r31->unk28[i], sp8[2][3] + var_r31->unk08[i]); + Hu3DModelScaleSet(arg0->model[i + 1], 1.5f * var_r31->unk48[i], 1.5f * var_r31->unk48[i], 1.5f * var_r31->unk48[i]); + Hu3DModelTPLvlSet(arg0->model[i + 1], var_r31->unk68[i]); + if (var_r31->unk88[i] == 31.0f) { + var_r31->unk08[i] = 0.0f; + var_r31->unk28[i] = 0.0f; + var_r31->unk48[i] = 0.0f; + var_r31->unk68[i] = 0.5f; + var_r31->unk88[i] = 0.0f; + } + } + if (arg0->work[2]++ >= 120) { + var_r31->unk04 = 0; + Hu3DMotionSpeedSet(var_r28->unk00->model[0], 1.0f); + temp_r27->unk00->work[2] = 0; + } + if (arg0->work[2] >= 10 && arg0->work[2] <= 120) { + fn_1_67C(6, 8.0f); + } + break; + } +} + +void fn_1_68E8(omObjData *arg0) +{ + StructBss1A8 *var_r30; + + var_r30 = &lbl_1_bss_1A8; + fn_1_11818(var_r30->unk00, 0, 8, 5, 0); + arg0->func = (void *)fn_1_62C4; // fn_1_62C4 must return s32 to match +} + +void fn_1_6944(omObjData *arg0) +{ + StructBssD8 *var_r29; + s32 i; + + var_r29 = &lbl_1_bss_D8; + for (i = 0; i < 6; i++) { + if (i % 2 == 0) { + arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 44)); + arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]); + } + else { + arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 45)); + arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]); + } + fn_1_11818(arg0, i + 1, i + 1, 5, 1); + Hu3DModelPosSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelLayerSet(arg0->model[i + 1], 2); + var_r29->unk08[i] = -(50.0f * i); + var_r29->unk28[i] = 0.0f; + var_r29->unk48[i] = 0.0f; + var_r29->unk68[i] = 0.5f; + var_r29->unk88[i] = 0.0f; + } + var_r29->unk04 = 1; + arg0->func = (void *)fn_1_62C4; // fn_1_62C4 must return s32 to match +} + +void fn_1_6BDC(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 300.0f; + var_r31->unk18 = 1740.0f; + var_r31->unk28 = -10.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 300.0f; + fn_1_125F4(var_r31, 200.0f); +} + +void fn_1_6C8C(void) +{ + StructBss32C *var_r31; + StructBss32C sp8; + + var_r31 = &lbl_1_bss_32C; + sp8.unk04 = 0.0f; + sp8.unk08 = 200.0f; + sp8.unk0C = -50.0f; + sp8.unk1C = 5.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk34 = 200.0f; + fn_1_14D24(var_r31, &sp8, var_r31->unk3C++, 30.0f, 5.0f); +} + +void fn_1_6D64(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 200.0f; + var_r31->unk18 = -50.0f; + var_r31->unk28 = 5.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 200.0f; + fn_1_125F4(var_r31, 200.0f); +} + +void fn_1_6E14(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 300.0f; + var_r31->unk18 = -550.0f; + var_r31->unk28 = -15.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 1200.0f; + fn_1_125F4(var_r31, 45.0f); +} + +void fn_1_6EC4(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 150.0f; + var_r31->unk18 = -550.0f; + var_r31->unk28 = -15.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 1200.0f; + fn_1_125F4(var_r31, 30.0f); +} + +void fn_1_6F74(void) +{ + StructBss32C *var_r31; + StructBss32C sp8; + + var_r31 = &lbl_1_bss_32C; + sp8.unk04 = 0.0f; + sp8.unk08 = 100.0f; + sp8.unk0C = -550.0f; + sp8.unk1C = -20.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk34 = 2400.0f; + fn_1_13C48(var_r31, &sp8, var_r31->unk3C++, 10.0f, 5.0f); +} + +void fn_1_704C(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 150.0f; + var_r31->unk18 = -550.0f; + var_r31->unk28 = -15.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 1200.0f; + fn_1_125F4(var_r31, 20.0f); +} + +void fn_1_70FC(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 300.0f; + var_r31->unk18 = -550.0f; + var_r31->unk28 = -15.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 1200.0f; + fn_1_125F4(var_r31, 20.0f); +} + +void fn_1_71AC(s32 arg0) +{ + StructBss32C *var_r23; + + var_r23 = &lbl_1_bss_32C; + fn_1_12294(var_r23); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_6E14); + break; + case 1: + fn_1_8A4(fn_1_6EC4); + break; + case 2: + fn_1_8A4(fn_1_6F74); + break; + case 3: + fn_1_8A4(fn_1_6C8C); + break; + case 4: + fn_1_8A4(fn_1_6BDC); + break; + case 5: + fn_1_8A4(fn_1_6D64); + break; + case 10: + fn_1_8A4(fn_1_704C); + break; + case 11: + fn_1_8A4(fn_1_70FC); + break; + } +} + +void fn_1_72CC(void) +{ + float sp18[] = { 0.0f, 0.0f }; + StructBss1A8 *var_r30; + s32 var_r31; + + var_r30 = &lbl_1_bss_1A8; + fn_1_26D4(sp18, MAKE_MESSID(29, 0)); + fn_1_26D4(sp18, MAKE_MESSID(29, 1)); + var_r31 = fn_1_2230((580.0f - sp18[0]) / 2, 80.0f, sp18[0], sp18[1], 2); + HuAudFXPlay(0x6D1); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 0)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 1)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_77F0(void) +{ + float sp18[] = { 0.0f, 0.0f }; + StructBss1A8 *var_r30; + s32 var_r31; + + var_r30 = &lbl_1_bss_1A8; + fn_1_26D4(sp18, MAKE_MESSID(29, 3)); + var_r31 = fn_1_2230((580.0f - sp18[0]) / 2, 100.0f, sp18[0], sp18[1], 2); + HuAudFXPlay(0x6D2); + var_r30->unk00->work[3] = 3; + fn_1_2744(var_r31, MAKE_MESSID(29, 3)); + fn_1_24D0(var_r31, REFRESH_RATE); + lbl_1_bss_4 = 2; + fn_1_24D0(var_r31, REFRESH_RATE); + var_r30->unk00->work[3] = 2; + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_7B58(s32 arg0) +{ + float sp10[2] = { 0.0f, 0.0f }; + StructBss180 *var_r30 = &lbl_1_bss_180[0]; + s32 sp18[] = { MAKE_MESSID(29, 6), MAKE_MESSID(29, 8), MAKE_MESSID(29, 10), MAKE_MESSID(29, 12), MAKE_MESSID(29, 15), MAKE_MESSID(29, 17) }; + s32 var_r31; + + var_r30->unk00->work[3] = 1; + HuPrcSleep(15); + fn_1_26D4(sp10, sp18[arg0]); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + var_r31 = fn_1_2230(20.0f, 360.0f, sp10[0], sp10[1], 0); + fn_1_2744(var_r31, sp18[arg0]); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_2468(var_r31); +} + +void fn_1_7F1C(void) +{ + float sp2D8[2] = { 0.0f, 0.0f }; + StructBss180 *var_r30; + s32 var_r31; + + var_r30 = &lbl_1_bss_180[1]; + fn_1_26D4(sp2D8, MAKE_MESSID(29, 5)); + fn_1_26D4(sp2D8, MAKE_MESSID(29, 7)); + fn_1_26D4(sp2D8, MAKE_MESSID(29, 9)); + fn_1_26D4(sp2D8, MAKE_MESSID(29, 11)); + fn_1_26D4(sp2D8, MAKE_MESSID(29, 13)); + fn_1_26D4(sp2D8, MAKE_MESSID(29, 14)); + fn_1_26D4(sp2D8, MAKE_MESSID(29, 16)); + var_r31 = fn_1_2230(550.0f - sp2D8[0], 340.0f, sp2D8[0], sp2D8[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 5)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_7B58(0); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 7)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_7B58(1); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 9)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_7B58(2); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 11)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_7B58(3); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 13)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 14)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_7B58(4); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 16)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_7B58(5); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 18)); + fn_1_24D0(var_r31, 0); + var_r30->unk00->work[3] = 2; + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_A5A8(void) +{ + float sp9C[2] = { 0.0f, 0.0f }; + StructBss220 *sp68; + StructBss1A8 *var_r28; + s32 var_r31; + + sp68 = &lbl_1_bss_220; + var_r28 = &lbl_1_bss_1A8; + fn_1_26D4(sp9C, MAKE_MESSID(29, 19)); + fn_1_26D4(sp9C, MAKE_MESSID(29, 20)); + fn_1_26D4(sp9C, MAKE_MESSID(29, 21)); + fn_1_26D4(sp9C, MAKE_MESSID(29, 22)); + fn_1_26D4(sp9C, MAKE_MESSID(29, 37)); + var_r31 = fn_1_2230((580.0f - sp9C[0]) / 2, 80.0f, sp9C[0], sp9C[1], 2); + HuAudFXPlay(0x6D2); + var_r28->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 19)); + fn_1_24D0(var_r31, 0); + var_r28->unk00->work[3] = 2; + var_r28->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 20)); + fn_1_24D0(var_r31, 0); + var_r28->unk00->work[3] = 2; + var_r28->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 21)); + fn_1_24D0(var_r31, 3 * REFRESH_RATE); + var_r28->unk00->work[3] = 2; + sp68->unk00->work[0] = 10; + fn_1_2744(var_r31, MAKE_MESSID(29, 22)); + fn_1_24D0(var_r31, REFRESH_RATE); + var_r28->unk00->work[3] = 4; + fn_1_2A90(var_r31); + fn_1_2D94(var_r31); + fn_1_3020(); + var_r28->unk00->work[3] = 2; + HuPrcSleep(2 * REFRESH_RATE); + var_r28->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 37)); + fn_1_24D0(var_r31, 0); + var_r28->unk00->work[3] = 2; + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_B3D4(void) +{ + float sp1C[2] = { 0.0f, 0.0f }; + StructBss180 *var_r30; + s32 var_r31; + + var_r30 = &lbl_1_bss_180[1]; + lbl_1_bss_4 = 0; + fn_1_26D4(sp1C, MAKE_MESSID(29, 64)); + var_r31 = fn_1_2230(550.0f - sp1C[0], 340.0f, sp1C[0], sp1C[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + var_r30->unk00->work[3] = 1; + fn_1_2744(var_r31, MAKE_MESSID(29, 64)); + fn_1_25B8(var_r31); + var_r30->unk00->work[3] = 2; + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_B7E0(void) { } + +s32 fn_1_B7E4(void) +{ + StructBss220 *var_r31; + + var_r31 = &lbl_1_bss_220; + if (fn_1_11F04(&lbl_1_bss_C0, 0) == 80) { + fn_1_71AC(3); + lbl_1_bss_3A4[0] = HuAudSeqPlay(6); + } + if (fn_1_11F04(&lbl_1_bss_C0, 0) == 115) { + fn_1_71AC(5); + } + if (fn_1_11F04(&lbl_1_bss_C0, 0) == 180) { + fn_1_71AC(0); + } + if (fn_1_11F04(&lbl_1_bss_C0, 0) == 0) { + var_r31->unk00->work[0] = 10; + } + if (fn_1_11F04(&lbl_1_bss_C0, 0) == 150) { + var_r31->unk00->work[0] = 1; + } + if (fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +void fn_1_B968(void) +{ + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_72CC, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_B9B4(void) +{ + if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +void fn_1_BA10(void) +{ + StructBss3E4 *var_r30; + s32 i; + + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_77F0, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + var_r30 = &lbl_1_bss_3E4[i]; + Hu3DModelAttrReset(var_r30->unk00->model[0], HU3D_ATTR_DISPOFF); + } +} + +s32 fn_1_BAA4(void) +{ + StructBss220 *var_r31; + StructBss1BC *var_r30; + StructBss220 *var_r29; + + var_r31 = &lbl_1_bss_220; + var_r30 = &lbl_1_bss_1BC; + if (lbl_1_bss_4 == 2) { + lbl_1_bss_4 = 0; + var_r31->unk00->work[0] = 2; + var_r30->unk00->work[0] = 1; + } + if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 0) == 0) { + var_r29 = &lbl_1_bss_220; + var_r29->unk00->work[1] = 1; + } + if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +void fn_1_BBA4(void) +{ + fn_1_71AC(10); +} + +s32 fn_1_BBF4(void) +{ + if (fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +void fn_1_BC3C(void) +{ + HuPrcChildCreate(fn_1_B3D4, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_BC78(void) +{ + if (lbl_1_bss_4 != 0 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + if (lbl_1_bss_8 != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + fn_1_11E70(&lbl_1_bss_C0, 6); + } + return 0; +} + +void fn_1_BCF8(void) +{ + StructBss1A8 *var_r31; + + var_r31 = &lbl_1_bss_1A8; + fn_1_11818(var_r31->unk00, 0, 12, 60, 1); + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_7F1C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_BD6C(void) +{ + StructBss1A8 *var_r31; + + var_r31 = &lbl_1_bss_1A8; + if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 0) == 0) { + fn_1_11818(var_r31->unk00, 0, 1, 60, 1); + } + if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +void fn_1_BE1C(void) +{ + fn_1_71AC(11); +} + +s32 fn_1_BE6C(void) +{ + if (fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +void fn_1_BEB4(void) +{ + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_A5A8, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_BF00(void) +{ + if (lbl_1_bss_4 == 1) { + lbl_1_bss_4 = 2; + HuAudSeqFadeOut(lbl_1_bss_3A4[0], 1000); + } + if (lbl_1_bss_4 != 0 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) { + fn_1_71AC(2); + return fn_1_11D74(&lbl_1_bss_C0); + } + return 0; +} + +StructData1E8 lbl_1_data_1E8[] = { { fn_1_B7E0, fn_1_B7E4, 300 }, { fn_1_B968, fn_1_B9B4, 60 }, { fn_1_BA10, fn_1_BAA4, 60 }, + { fn_1_BBA4, fn_1_BBF4, 45 }, { fn_1_BC3C, fn_1_BC78, 60 }, { fn_1_BCF8, fn_1_BD6C, 60 }, { fn_1_BE1C, fn_1_BE6C, 45 }, + { fn_1_BEB4, fn_1_BF00, 15 }, { NULL, NULL, -1 } }; + +void fn_1_BFC8(void) +{ + fn_1_11D18(&lbl_1_bss_C0, lbl_1_data_1E8); +} + +s32 fn_1_BFF8(void) +{ + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_C0.unk10 != NULL) { + lbl_1_bss_C0.unk10(); + lbl_1_bss_C0.unk10 = NULL; + } + if (lbl_1_bss_C0.unk14 != NULL) { + var_r31 = lbl_1_bss_C0.unk14(); + } + return var_r31; +} + +s32 fn_1_C090(s32 arg0, s32 arg1, s32 arg2) +{ + StructBss4A4 *var_r28; + StructBss3E4 *temp_r31; + StructBss1BC *var_r27; + StructBss234 *var_r26; + s32 var_r29; + s32 var_r30; + s32 spC; + s32 var_r23; + s32 temp_r22; + s32 i; + + var_r29 = 0; + var_r30 = arg1; + spC = arg1; + var_r28 = &lbl_1_bss_4A4; + temp_r31 = &lbl_1_bss_3E4[arg0]; + var_r27 = &lbl_1_bss_1BC; + var_r26 = &lbl_1_bss_234; + if (temp_r31->unk0C != 0) { + if (arg2 % 27 == 2 && temp_r31->unk24 == 0) { + switch (temp_r31->unk10) { + case 0: + if (arg2 <= 2 * REFRESH_RATE) { + var_r29 = 0; + } + else if (var_r28->unk04 <= 3) { + temp_r31->unk24 = var_r29 = 1; + } + else { + var_r29 = 0; + } + break; + case 1: + if (arg2 <= 2 * REFRESH_RATE) { + var_r29 = 0; + } + else if (var_r28->unk04 <= 6) { + temp_r31->unk24 = var_r29 = 1; + } + else { + var_r29 = 0; + } + break; + case 2: + if (arg2 <= REFRESH_RATE) { + var_r29 = 0; + } + else if (var_r28->unk04 <= 9) { + temp_r31->unk24 = var_r29 = 1; + } + else { + var_r29 = 0; + } + break; + case 3: + if (arg2 <= REFRESH_RATE) { + var_r29 = 0; + } + else if (var_r28->unk04 <= 12) { + temp_r31->unk24 = var_r29 = 1; + } + else { + var_r29 = 0; + } + break; + } + if (var_r29 == 0) { + temp_r31->unk28 = rand8() % 8; + } + else { + var_r23 = 0; + for (i = 0; i <= temp_r31->unk10; i++) { + temp_r22 = rand8() % 10; + if (var_r26->unk44[temp_r22] != -1) { + temp_r31->unk28 = var_r26->unk44[temp_r22]; + var_r23 = 1; + break; + } + } + if (var_r23 == 0) { + temp_r31->unk28 = rand8() % 8; + } + } + } + if (temp_r31->unk24 == 1 && temp_r31->unk28 == var_r30) { + var_r30 = 99; + } + else if (temp_r31->unk28 > var_r30 && temp_r31->unk00->trans.x >= var_r27->unk04[var_r30].x - 7.5f && var_r30 < 7) { + var_r30++; + } + else if (temp_r31->unk28 < var_r30 && temp_r31->unk00->trans.x <= var_r27->unk04[var_r30].x + 7.5f && var_r30 > 0) { + var_r30--; + } + } + else { + var_r30 = arg1; + if (HuPadStkX[temp_r31->unk18] > 20.0f && temp_r31->unk00->trans.x >= var_r27->unk04[var_r30].x - 7.5f && var_r30 < 7) { + var_r30++; + } + else if (HuPadStkX[temp_r31->unk18] < -20.0f && temp_r31->unk00->trans.x <= var_r27->unk04[var_r30].x + 7.5f && var_r30 > 0) { + var_r30--; + } + else if (HuPadBtnDown[temp_r31->unk18] & 0x100) { + var_r30 = 99; + } + } + return var_r30; +} + +void fn_1_C4E8(void) +{ + StructBss4A4 *var_r29; + StructBss3E4 *temp_r30; + StructBss1BC *var_r28; + StructBss32C *var_r31; + + var_r29 = &lbl_1_bss_4A4; + temp_r30 = &lbl_1_bss_3E4[var_r29->unk00]; + var_r28 = &lbl_1_bss_1BC; + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = temp_r30->unk00->trans.x; + var_r31->unk14 = temp_r30->unk00->trans.y + 75.0f; + var_r31->unk18 = var_r28->unk04[0].z - 100.0f; + var_r31->unk28 = -10.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 750.0f; + fn_1_125F4(var_r31, 10.0f); +} + +void fn_1_C5E4(void) +{ + StructBss32C *var_r31; + + var_r31 = &lbl_1_bss_32C; + var_r31->unk10 = 0.0f; + var_r31->unk14 = 100.0f; + var_r31->unk18 = -550.0f; + var_r31->unk28 = -20.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk38 = 2400.0f; + fn_1_125F4(var_r31, 360.0f); +} + +void fn_1_C694(void) +{ + StructBss32C *var_r31; + StructBss32C sp8; + + var_r31 = &lbl_1_bss_32C; + sp8.unk04 = 0.0f; + sp8.unk08 = 200.0f; + sp8.unk0C = -550.0f; + sp8.unk1C = -15.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk34 = 1200.0f; + fn_1_13C48(var_r31, &sp8, var_r31->unk3C++, 10.0f, 5.0f); +} + +void fn_1_C76C(void) +{ + StructBss32C *var_r31; + StructBss32C sp8; + + var_r31 = &lbl_1_bss_32C; + sp8.unk04 = 0.0f; + sp8.unk08 = 100.0f; + sp8.unk0C = -550.0f; + sp8.unk1C = -20.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk34 = 2400.0f; + fn_1_13C48(var_r31, &sp8, var_r31->unk3C++, 60.0f, 10.0f); +} + +void fn_1_C844(s32 arg0) +{ + StructBss32C *var_r27; + + var_r27 = &lbl_1_bss_32C; + fn_1_12294(var_r27); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_C4E8); + break; + case 1: + fn_1_8A4(fn_1_C5E4); + break; + case 2: + fn_1_8A4(fn_1_C694); + break; + case 3: + fn_1_8A4(fn_1_C76C); + break; + } +} + +void fn_1_C90C(void) +{ + float sp28[] = { 0.0f, 0.0f }; + s32 var_r28; + s32 var_r31; + StructBss1A8 *var_r27 = &lbl_1_bss_1A8; + s32 sp3C[] = { MAKE_MESSID(29, 31), MAKE_MESSID(29, 32), MAKE_MESSID(29, 33) }; + + var_r28 = rand8() % 3; + HuPrcSleep(REFRESH_RATE + 10); + fn_1_26D4(sp28, sp3C[var_r28]); + var_r31 = fn_1_2230((580.0f - sp28[0]) / 2, 60.0f, sp28[0], sp28[1], 2); + var_r27->unk00->work[2] = 1; + HuAudFXPlay(0x6D2); + HuAudFXPlay(0x6E3); + fn_1_2744(var_r31, sp3C[var_r28]); + fn_1_24D0(var_r31, 2 * REFRESH_RATE); + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_CCA4(void) +{ + float sp2C[] = { 0.0f, 0.0f }; + s32 var_r28; + s32 var_r31; + s32 sp24[] = { MAKE_MESSID(29, 34), MAKE_MESSID(29, 35) }; + + var_r28 = rand8() % 2; + HuPrcSleep(40); + fn_1_26D4(sp2C, sp24[var_r28]); + var_r31 = fn_1_2230((580.0f - sp2C[0]) / 2, 60.0f, sp2C[0], sp2C[1], 2); + HuAudFXPlay(0x6D6); + HuAudFXPlay(0x6D9); + HuAudSeqAllFadeOut(100); + fn_1_2744(var_r31, sp24[var_r28]); + fn_1_24D0(var_r31, 2 * REFRESH_RATE); + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_D018(void) +{ + float sp2C[] = { 0.0f, 0.0f }; + s32 var_r31; + + HuPrcSleep(40); + fn_1_26D4(sp2C, MAKE_MESSID(29, 36)); + var_r31 = fn_1_2230((580.0f - sp2C[0]) / 2, 60.0f, sp2C[0], sp2C[1], 2); + HuAudFXPlay(0x6D6); + HuAudFXPlay(0x6D9); + HuAudSeqAllFadeOut(100); + fn_1_2744(var_r31, MAKE_MESSID(29, 36)); + fn_1_24D0(var_r31, 2 * REFRESH_RATE); + fn_1_2468(var_r31); + lbl_1_bss_4 = 1; + HuPrcEnd(); +} + +void fn_1_D344(void) +{ + StructBss4A4 *var_r30; + StructBss3E4 *temp_r31; + StructBss1A8 *var_r29; + + var_r30 = &lbl_1_bss_4A4; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + temp_r31->unk1C = temp_r31->unk20 = temp_r31->unk24 = temp_r31->unk28 = 0; + var_r29 = &lbl_1_bss_1A8; + fn_1_11818(var_r29->unk00, 0, 12, 60, 1); + fn_1_C844(0); + fn_1_27C8(5); +} + +s32 fn_1_D418(void) +{ + Vec sp14; + StructBss4A4 *var_r30; + StructBss3E4 *temp_r31; + StructBss1BC *var_r28; + StructBss180 *var_r26; + StructBss3E4 *var_r25; + s32 var_r27; + s32 i; + + var_r27 = 0; + var_r30 = &lbl_1_bss_4A4; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + var_r28 = &lbl_1_bss_1BC; + fn_1_11F04(&lbl_1_bss_A8, 1); + if (fn_1_11F04(&lbl_1_bss_A8, 0) < 10) { + return 0; + } + if (temp_r31->unk20 == 0) { + if (fn_1_2800()) { + temp_r31->unk20 = 1; + temp_r31->unk24 = 0; + } + else { + var_r27 = fn_1_C090(var_r30->unk00, temp_r31->unk1C, fn_1_11F04(&lbl_1_bss_A8, 0)); + if (var_r27 == 99) { + temp_r31->unk20 = 1; + temp_r31->unk24 = 0; + fn_1_2824(); + } + else { + temp_r31->unk1C = var_r27; + } + } + } + else if (temp_r31->unk24++ >= 60) { + return fn_1_11D74(&lbl_1_bss_A8); + } + sp14.x = var_r28->unk04[temp_r31->unk1C].x; + sp14.y = temp_r31->unk00->trans.y; + sp14.z = var_r28->unk04[0].z - 100.0f; + fn_1_5608(temp_r31->unk00, sp14, 0.0f, 9.0f, 5.0f, 2.0f, 0); + if (temp_r31->unk00->trans.z > sp14.z) { + temp_r31->unk00->trans.z = sp14.z; + } + if (temp_r31->unk00->trans.z < sp14.z) { + temp_r31->unk00->trans.z = sp14.z; + } + var_r26 = &lbl_1_bss_180[1]; + fn_1_113CC(var_r26->unk00, 0, temp_r31->unk00, 0); + for (i = 0; i < 4; i++) { + if (var_r30->unk00 != i) { + var_r25 = &lbl_1_bss_3E4[i]; + fn_1_113CC(var_r25->unk00, 0, temp_r31->unk00, 0); + } + } + return 0; +} + +void fn_1_D6C0(void) +{ + StructBss4A4 *var_r30; + + var_r30 = &lbl_1_bss_4A4; + var_r30->unk0C = 0; +} + +s32 fn_1_D6E4(void) +{ + StructBss4A4 *var_r29; + StructBss3E4 *temp_r31; + StructBss1BC *var_r30; + StructBss180 *var_r26; + StructBss3E4 *var_r25; + s32 i; + + var_r29 = &lbl_1_bss_4A4; + temp_r31 = &lbl_1_bss_3E4[var_r29->unk00]; + var_r30 = &lbl_1_bss_1BC; + if (fn_1_11F04(&lbl_1_bss_A8, 0) < 30) { + if (var_r30->unk04[temp_r31->unk1C].z - 100.0f > temp_r31->unk00->trans.z) { + temp_r31->unk00->trans.z += 9.0f; + fn_1_11B18(temp_r31->unk00, 0, 1, 10, 1); + if (var_r30->unk04[temp_r31->unk1C].z - 100.0f < temp_r31->unk00->trans.z) { + temp_r31->unk00->trans.z = var_r30->unk04[temp_r31->unk1C].z - 100.0f; + fn_1_11B18(temp_r31->unk00, 0, 0, 10, 1); + } + } + else { + fn_1_11B18(temp_r31->unk00, 0, 0, 10, 1); + } + } + else if (fn_1_11F04(&lbl_1_bss_A8, 0) == 30) { + fn_1_11990(temp_r31->unk00, 0, 5, 30, 0); + } + else if (fn_1_11708(temp_r31->unk00, 0, 5, 35, 1) != 0 && var_r29->unk0C == 0) { + var_r29->unk0C = 1; + Hu3DModelHookSet(temp_r31->unk00->model[0], CharModelHookNameGet(temp_r31->unk14, 2, 0), var_r30->unk00->model[temp_r31->unk1C + 1]); + if (temp_r31->unk14 != 7) { + Hu3DModelPosSet(var_r30->unk00->model[temp_r31->unk1C + 1], 0.0f, 5.0f, 0.0f); + } + else { + Hu3DModelPosSet(var_r30->unk00->model[temp_r31->unk1C + 1], 0.0f, -15.0f, 0.0f); + } + Hu3DModelScaleSet(var_r30->unk00->model[temp_r31->unk1C + 1], 0.75f, 0.75f, 0.75f); + omVibrate(temp_r31->unk04, 12, 4, 2); + } + var_r26 = &lbl_1_bss_180[1]; + fn_1_113CC(var_r26->unk00, 0, temp_r31->unk00, 0); + for (i = 0; i < 4; i++) { + if (var_r29->unk00 != i) { + var_r25 = &lbl_1_bss_3E4[i]; + fn_1_113CC(var_r25->unk00, 0, temp_r31->unk00, 0); + } + } + if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_A8); + } + // Required to match. + if (0) { + s32 var_r28 = 0; + (void)var_r28; + (void)var_r28; + (void)var_r28; + (void)var_r28; + (void)var_r28; + (void)var_r28; + } + return 0; +} + +void fn_1_DA60(void) +{ + StructBss4A4 *var_r30; + StructBss1A8 *sp8; + StructBss3E4 *temp_r31; + + var_r30 = &lbl_1_bss_4A4; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + sp8 = &lbl_1_bss_1A8; + var_r30->unk0C = 0; + temp_r31->unk20 = temp_r31->unk24 = temp_r31->unk28 = 0; + Hu3DMotionOverlaySet(temp_r31->unk00->model[0], temp_r31->unk00->motion[4]); + Hu3DModelAttrSet(temp_r31->unk00->model[0], HU3D_MOTATTR_OVL_LOOP); +} + +Vec lbl_1_data_254 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_260 = { 0.0f, 0.0f, 0.0f }; // unused + +s32 fn_1_DB00(void) +{ + StructBss4A4 *var_r30; + StructBss220 *var_r28; + StructBss1BC *sp8; + StructBss3E4 *temp_r31; + StructBss1A8 *var_r27; + StructBss180 *var_r26; + StructBss3E4 *var_r25; + s32 i; + + var_r30 = &lbl_1_bss_4A4; + var_r28 = &lbl_1_bss_220; + sp8 = &lbl_1_bss_1BC; + var_r27 = &lbl_1_bss_1A8; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + if (temp_r31->unk20 == 0 && fn_1_11F04(&lbl_1_bss_A8, 0) <= 180) { + lbl_1_data_254.x = 0.0f; + lbl_1_data_254.y = temp_r31->unk00->trans.y; + lbl_1_data_254.z = 300.0f; + } + else if (temp_r31->unk20 == 1 && fn_1_11F04(&lbl_1_bss_A8, 0) <= 320) { + lbl_1_data_254.x = 0.0f; + lbl_1_data_254.y = temp_r31->unk00->trans.y; + lbl_1_data_254.z = -240.0f; + } + temp_r31->unk20 += fn_1_5608(temp_r31->unk00, lbl_1_data_254, 180.0f, 8.0f, 30.0f, 5.0f, 0); + if (temp_r31->unk20 == 1 && var_r30->unk0C == 0) { + var_r30->unk0C = 1; + fn_1_C844(1); + fn_1_11B18(var_r27->unk00, 0, 1, 60, 0); + var_r28->unk00->work[1] = 2; + } + var_r26 = &lbl_1_bss_180[1]; + fn_1_113CC(var_r26->unk00, 0, temp_r31->unk00, 0); + for (i = 0; i < 4; i++) { + if (var_r30->unk00 != i) { + var_r25 = &lbl_1_bss_3E4[i]; + fn_1_113CC(var_r25->unk00, 0, temp_r31->unk00, 0); + } + } + fn_1_11F04(&lbl_1_bss_A8, 1); + if (temp_r31->unk20 == 2) { + Hu3DModelAttrReset(*temp_r31->unk00->model, HU3D_MOTATTR_OVL_LOOP); + return fn_1_11D74(&lbl_1_bss_A8); + } + return 0; +} + +void fn_1_DDBC(void) +{ + StructBss4A4 *var_r30; + StructBss1A8 *var_r29; + StructBss3E4 *temp_r31; + + var_r30 = &lbl_1_bss_4A4; + var_r29 = &lbl_1_bss_1A8; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + var_r30->unk0C = 0; + var_r29->unk00->work[3] = 0; + Hu3DMotionSet(temp_r31->unk00->model[0], temp_r31->unk00->motion[5]); + Hu3DMotionTimeSet(temp_r31->unk00->model[0], 999.0f); + Hu3DModelAttrReset(temp_r31->unk00->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(temp_r31->unk00->model[0], HU3D_MOTATTR_REV); + Hu3DMotionOverlayReset(temp_r31->unk00->model[0]); + temp_r31->unk20 = temp_r31->unk24 = temp_r31->unk28 = 0; +} + +s32 fn_1_DEB0(void) +{ + StructBss4A4 *var_r30; + StructBss220 *var_r28; + StructBss1BC *var_r29; + StructBss3E4 *temp_r31; + ModelData *temp_r27; + ModelData *temp_r26; + StructBss180 *var_r25; + + var_r30 = &lbl_1_bss_4A4; + var_r28 = &lbl_1_bss_220; + var_r29 = &lbl_1_bss_1BC; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + temp_r27 = &Hu3DData[var_r28->unk00->model[8]]; + if (fn_1_11708(temp_r31->unk00, 0, 5, 30, 0) != 0 && var_r30->unk0C == 0) { + Hu3DModelHookReset(temp_r31->unk00->model[0]); + Hu3DModelPosSet(var_r29->unk00->model[temp_r31->unk1C + 1], 0.0f, temp_r27->pos.y, -355.0f); + Hu3DModelScaleSet(var_r29->unk00->model[temp_r31->unk1C + 1], 1.0f, 1.0f, 1.0f); + var_r30->unk0C = temp_r31->unk20 = 1; + } + if (temp_r31->unk20 == 1 && temp_r31->unk24++ >= REFRESH_RATE) { + temp_r26 = &Hu3DData[var_r29->unk00->model[temp_r31->unk1C + 1]]; + var_r28->unk00->work[1] = 3; + temp_r26->pos.y = temp_r27->pos.y; + if (var_r30->unk0C == 1) { + var_r30->unk0C = 2; + var_r25 = &lbl_1_bss_180[1]; + fn_1_11818(var_r25->unk00, 0, 6, 60, 1); + } + } + if (temp_r31->unk20 == 1 && fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_A8); + } + return 0; +} + +void fn_1_E0B0(void) +{ + StructBss4A4 *var_r31; + StructBss1A8 *var_r30; + StructBss3E4 *var_r29; + + var_r31 = &lbl_1_bss_4A4; + var_r30 = &lbl_1_bss_1A8; + var_r29 = &lbl_1_bss_3E4[var_r31->unk00]; + var_r31->unk08 = var_r31->unk0C = 0; + fn_1_11990(var_r29->unk00, 0, 0, 30, 1); + fn_1_11818(var_r30->unk00, 0, 4, 1, 0); +} + +s32 fn_1_E144(void) +{ + StructBss4A4 *var_r31; + StructBss220 *var_r28; + StructBss1BC *var_r30; + StructBss1A8 *var_r27; + StructBss3E4 *temp_r29; + StructBss180 *var_r25; + + var_r31 = &lbl_1_bss_4A4; + var_r28 = &lbl_1_bss_220; + var_r30 = &lbl_1_bss_1BC; + var_r27 = &lbl_1_bss_1A8; + temp_r29 = &lbl_1_bss_3E4[var_r31->unk00]; + if (fn_1_11708(var_r27->unk00, 0, 4, 80, 1) != 0 && var_r31->unk0C == 0) { + var_r31->unk0C = 1; + Hu3DModelHookSet(var_r27->unk00->model[0], "g000m0-itemhook_R", var_r30->unk00->model[temp_r29->unk1C + 1]); + Hu3DModelPosSet(var_r30->unk00->model[temp_r29->unk1C + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(var_r30->unk00->model[temp_r29->unk1C + 1], 0.0f, 90.0f, 0.0f); + Hu3DModelScaleSet(var_r30->unk00->model[temp_r29->unk1C + 1], 0.5f, 0.5f, 0.5f); + var_r28->unk00->work[1] = 1; + } + if (fn_1_11F04(&lbl_1_bss_A8, 0) == 180) { + fn_1_C844(2); + } + if (var_r31->unk0C == 1) { + var_r25 = &lbl_1_bss_180[1]; + var_r25->unk00->rot.y = fn_1_110FC(var_r25->unk00->rot.y, 280.0f, 10.0f); + } + if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + var_r28->unk00->work[0] = 10; + return fn_1_11D74(&lbl_1_bss_A8); + } + return 0; +} + +void fn_1_E38C(void) +{ + StructBss4A4 *var_r31; + StructBss220 *sp8; + StructBss1A8 *var_r30; + + sp8 = &lbl_1_bss_220; + var_r31 = &lbl_1_bss_4A4; + var_r30 = &lbl_1_bss_1A8; + if (var_r31->unk08 == 0) { + var_r31->unk08 = 1; + if (var_r31->unk04 > 3) { + fn_1_11818(var_r30->unk00, 0, 9, 15, 0); + } + if (var_r31->unk04 > 3 && rand8() % 2 == 0) { + var_r31->unk08 = 2; + } + } + else if (var_r31->unk08 == 2) { + var_r31->unk08 = 1; + fn_1_11818(var_r30->unk00, 0, 10, 15, 0); + if (var_r31->unk04 > 6 && rand8() % 2 == 0) { + var_r31->unk08 = 3; + } + } + else if (var_r31->unk08 == 3) { + var_r31->unk08 = 1; + fn_1_11818(var_r30->unk00, 0, 10, 15, 0); + } +} + +s32 fn_1_E4CC(void) +{ + StructBss4A4 *var_r31; + StructBss1A8 *var_r30; + + var_r31 = &lbl_1_bss_4A4; + var_r30 = &lbl_1_bss_1A8; + if (Hu3DMotionEndCheck(var_r30->unk00->model[0]) && fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + if (var_r31->unk08 != 1) { + return fn_1_11E70(&lbl_1_bss_A8, 5); + } + else { + return fn_1_11D74(&lbl_1_bss_A8); + } + } + return 0; +} + +void fn_1_E56C(void) +{ + StructBss4A4 *var_r31; + StructBss234 *var_r30; + StructBss3E4 *var_r28; + s32 i; + + var_r31 = &lbl_1_bss_4A4; + var_r30 = &lbl_1_bss_234; + var_r28 = &lbl_1_bss_3E4[var_r31->unk00]; + var_r31->unk08 = 1; + for (i = 0; i < var_r30->unk00; i++) { + if (var_r30->unk44[i] == var_r28->unk1C) { + var_r31->unk08 = 0; + var_r30->unk44[i] = -1; + break; + } + } + if (var_r30->unk00 == var_r31->unk04) { + var_r31->unk08 = 2; + } +} + +s32 fn_1_E628(void) +{ + StructBss4A4 *var_r31; + + var_r31 = &lbl_1_bss_4A4; + if (var_r31->unk08 != 0) { + fn_1_11E70(&lbl_1_bss_A8, 10); + } + else { + fn_1_11D74(&lbl_1_bss_A8); + } +} + +void fn_1_E680(void) +{ + StructBss4A4 *var_r31; + StructBss1A8 *var_r30; + + var_r31 = &lbl_1_bss_4A4; + var_r30 = &lbl_1_bss_1A8; + var_r31->unk08 = var_r31->unk0C = 0; + fn_1_11818(var_r30->unk00, 0, 7, 15, 0); + lbl_1_bss_4 = 0; + HuPrcChildCreate(fn_1_C90C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_E710(void) +{ + StructBss4A4 *var_r29; + StructBss1A8 *var_r28; + StructBss1BC *var_r31; + StructBss3E4 *temp_r30; + StructBss180 *var_r27; + + var_r29 = &lbl_1_bss_4A4; + var_r31 = &lbl_1_bss_1BC; + var_r28 = &lbl_1_bss_1A8; + temp_r30 = &lbl_1_bss_3E4[var_r29->unk00]; + if (fn_1_11708(var_r28->unk00, 0, 7, 30, 1) != 0 && var_r29->unk08 == 0) { + var_r29->unk08 = 1; + } + if (fn_1_11708(var_r28->unk00, 0, 7, 40, 1) != 0 && var_r29->unk0C == 0) { + var_r29->unk0C = 1; + var_r27 = &lbl_1_bss_180[1]; + fn_1_11818(var_r27->unk00, 0, 7, 10, 0); + Hu3DModelHookReset(var_r28->unk00->model[0]); + Hu3DModelPosSet(var_r31->unk00->model[temp_r30->unk1C + 1], var_r31->unk04[temp_r30->unk1C].x, var_r31->unk04[temp_r30->unk1C].y + 65.0f, + var_r31->unk04[temp_r30->unk1C].z); + Hu3DModelRotSet(var_r31->unk00->model[temp_r30->unk1C + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r31->unk00->model[temp_r30->unk1C + 1], 1.0f, 1.0f, 1.0f); + } + if (lbl_1_bss_4 == 1) { + lbl_1_bss_4 = 2; + } + if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_A8); + } + return 0; +} + +void fn_1_E930(void) +{ + StructBss4A4 *var_r29; + StructBss3E4 *var_r28; + StructBss180 *var_r31; + s32 var_r30; + + var_r29 = &lbl_1_bss_4A4; + var_r30 = var_r29->unk00 + 1; + if (var_r30 == 4) { + var_r30 = 0; + } + var_r28 = &lbl_1_bss_3E4[var_r30]; + fn_1_11990(var_r28->unk00, 0, 1, 15, 1); + var_r31 = &lbl_1_bss_180[1]; + fn_1_11818(var_r31->unk00, 0, 0, 1, 1); + Hu3DMotionSpeedSet(var_r31->unk00->model[0], 1.0f); + fn_1_C844(3); +} + +s32 fn_1_EA04(void) +{ + Vec sp14[] = { { -600.0f, 0.0f, 300.0f }, { -600.0f, 0.0f, 150.0f }, { -450.0f, 0.0f, 150.0f }, { -300.0f, 0.0f, 150.0f } }; + StructBss4A4 *var_r30; + StructBss1BC *var_r27; + StructBss3E4 *temp_r31; + StructBss3E4 *temp_r26; + s32 i; + s32 var_r28; + + var_r30 = &lbl_1_bss_4A4; + var_r27 = &lbl_1_bss_1BC; + var_r28 = var_r30->unk00 + 1; + if (var_r28 == 4) { + var_r28 = 0; + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_3E4[var_r28]; + if (i != 0) { + fn_1_5608(temp_r31->unk00, sp14[i], 0.0f, 9.0f, 10.0f, 8.0f, 0); + } + else { + temp_r31->unk00->trans.x -= 1.0f; + temp_r31->unk00->trans.z += 5.0f; + temp_r31->unk00->rot.y = fn_1_110FC(temp_r31->unk00->rot.y, 0.0f, 10.0f); + if (temp_r31->unk00->trans.x <= -600.0f) { + temp_r31->unk00->trans.x = -600.0f; + } + if (temp_r31->unk00->trans.z >= var_r27->unk04[0].z - 100.0f) { + fn_1_11B18(temp_r31->unk00, 0, 0, 15, 1); + temp_r31->unk00->trans.z = var_r27->unk04[0].z - 100.0f; + } + } + if (i != 0 && i != 3) { + if (temp_r31->unk00->trans.z > 150.0f) { + temp_r31->unk00->trans.z = 150.0f; + } + if (temp_r31->unk00->trans.z < 150.0f) { + temp_r31->unk00->trans.z = 150.0f; + } + } + var_r28++; + if (var_r28 == 4) { + var_r28 = 0; + } + } + if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + temp_r26 = &lbl_1_bss_3E4[var_r30->unk00]; + temp_r26->unk00->rot.y = 0.0f; + var_r30->unk00++; + if (var_r30->unk00 == 4) { + var_r30->unk00 = 0; + } + var_r30->unk04++; + return fn_1_11E70(&lbl_1_bss_A8, 0); + } + return 0; +} + +void fn_1_ED4C(void) +{ + StructBss4A4 *var_r31; + StructBss1A8 *var_r30; + + var_r31 = &lbl_1_bss_4A4; + var_r30 = &lbl_1_bss_1A8; + fn_1_11818(var_r30->unk00, 0, 6, 1, 0); + lbl_1_bss_4 = 0; + if (var_r31->unk08 == 1) { + HuPrcChildCreate(fn_1_CCA4, 100, 0x2000, 0, HuPrcCurrentGet()); + } + else { + HuPrcChildCreate(fn_1_D018, 100, 0x2000, 0, HuPrcCurrentGet()); + } + var_r31->unk04 = var_r31->unk08 = var_r31->unk0C = 0; +} + +s32 fn_1_EE10(void) +{ + StructBss4A4 *var_r30; + StructBss220 *var_r26; + StructBss1BC *var_r29; + StructBss1A8 *var_r27; + StructBss180 *var_r31; + StructBss3E4 *temp_r28; + + var_r30 = &lbl_1_bss_4A4; + var_r26 = &lbl_1_bss_220; + var_r29 = &lbl_1_bss_1BC; + var_r27 = &lbl_1_bss_1A8; + var_r31 = &lbl_1_bss_180[1]; + temp_r28 = &lbl_1_bss_3E4[var_r30->unk00]; + lbl_1_bss_48[0][3] = 400.0f; + lbl_1_bss_48[1][3] = 91.0f; + lbl_1_bss_48[2][3] = -436.0f; + var_r31->unk00->rot.y = fn_1_110FC(var_r31->unk00->rot.y, 360.0f, 10.0f); + if (fn_1_11708(var_r27->unk00, 0, 6, 40, 1) != 0 && var_r30->unk0C == 0) { + var_r30->unk0C = 1; + Hu3DModelHookReset(var_r27->unk00->model[0]); + Hu3DModelObjMtxGet(var_r27->unk00->model[0], "g000m0-itemhook_R", lbl_1_bss_78); + Hu3DModelPosSet(var_r29->unk00->model[temp_r28->unk1C + 1], lbl_1_bss_78[0][3], lbl_1_bss_78[1][3], lbl_1_bss_78[2][3]); + Hu3DModelRotSet(var_r29->unk00->model[temp_r28->unk1C + 1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r29->unk00->model[temp_r28->unk1C + 1], 1.0f, 1.0f, 1.0f); + Hu3DMotionSpeedSet(var_r26->unk00->model[8], -1.0f); + var_r30->unk04 = 1; + HuAudFXPlay(0x6E0); + } + if (var_r30->unk04 == 1) { + lbl_1_bss_3C.x = fn_1_1113C(lbl_1_bss_78[0][3], lbl_1_bss_48[0][3], lbl_1_bss_14, 30.0f); + if (lbl_1_bss_14 < 13) { + lbl_1_bss_3C.y = fn_1_11164(lbl_1_bss_78[1][3], 500.0f, lbl_1_bss_14, 13.0f); + } + else { + lbl_1_bss_3C.y = fn_1_112F4(500.0f, lbl_1_bss_48[1][3], lbl_1_bss_14 - 13, 17.0f); + } + lbl_1_bss_3C.z = fn_1_1113C(lbl_1_bss_78[2][3], lbl_1_bss_48[2][3], lbl_1_bss_14, 30.0f); + if (lbl_1_bss_14 == 10) { + fn_1_11818(var_r31->unk00, 0, 4, 1, 0); + Hu3DMotionSpeedSet(var_r31->unk00->model[0], 1.0f); + } + if (fn_1_11708(var_r31->unk00, 0, 4, 21, 1) != 0 && var_r30->unk08 == 0) { + var_r30->unk08 = 1; + Hu3DMotionSpeedSet(var_r31->unk00->model[0], 0.0f); + } + else { + Hu3DModelPosSet(var_r29->unk00->model[temp_r28->unk1C + 1], lbl_1_bss_3C.x, lbl_1_bss_3C.y, lbl_1_bss_3C.z); + } + if (lbl_1_bss_14++ >= 30) { + var_r30->unk04 = 2; + } + } + else if (var_r30->unk04 == 2) { + Hu3DModelHookSet(var_r31->unk00->model[0], "g007m0-itemhook_c", var_r29->unk00->model[temp_r28->unk1C + 1]); + Hu3DModelPosSet(var_r29->unk00->model[temp_r28->unk1C + 1], 0.0f, 0.0f, 0.0f); + Hu3DMotionSpeedSet(var_r31->unk00->model[0], 1.0f); + } + if (lbl_1_bss_4 == 1 && Hu3DMotionEndCheck(var_r31->unk00->model[0])) { + lbl_1_bss_14 = 0; + fn_1_11818(var_r31->unk00, 0, 5, 1, 0); + return fn_1_11D74(&lbl_1_bss_A8); + } + return 0; +} + +void fn_1_F404(void) +{ + StructBss4A4 *var_r29; + StructBss1A8 *spC; + StructBssD8 *var_r28; + StructBss180 *var_r31; + StructBss180 *var_r30; + StructBss3E4 *sp8; + + var_r29 = &lbl_1_bss_4A4; + spC = &lbl_1_bss_1A8; + var_r28 = &lbl_1_bss_D8; + var_r31 = &lbl_1_bss_180[1]; + var_r30 = &lbl_1_bss_180[0]; + sp8 = &lbl_1_bss_3E4[var_r29->unk00]; + var_r28->unk00->work[3] = 1; + var_r31->unk00->rot.y = 0.0f; + fn_1_11818(var_r31->unk00, 0, 5, 30, 1); + fn_1_11818(var_r30->unk00, 0, 1, 30, 1); + fn_1_11818(var_r30->unk00, 1, 6, 30, 1); +} + +s32 fn_1_F4F0(void) +{ + if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_A8); + } + return 0; +} + +StructData1E8 lbl_1_data_290[] + = { { fn_1_D344, fn_1_D418, 600 }, { fn_1_D6C0, fn_1_D6E4, 90 }, { fn_1_DA60, fn_1_DB00, 300 }, { fn_1_DDBC, fn_1_DEB0, 150 }, + { fn_1_E0B0, fn_1_E144, 240 }, { fn_1_E38C, fn_1_E4CC, 90 }, { fn_1_E56C, fn_1_E628, 120 }, { fn_1_E680, fn_1_E710, 120 }, + { fn_1_E930, fn_1_EA04, 120 }, { NULL, NULL, -1 }, { fn_1_ED4C, fn_1_EE10, -1 }, { fn_1_F404, fn_1_F4F0, 60 }, { NULL, NULL, -1 } }; + +void fn_1_F538(void) +{ + fn_1_11D18(&lbl_1_bss_A8, lbl_1_data_290); +} + +s32 fn_1_F568(void) +{ + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_A8.unk10 != NULL) { + lbl_1_bss_A8.unk10(); + lbl_1_bss_A8.unk10 = NULL; + } + if (lbl_1_bss_A8.unk14 != NULL) { + var_r31 = lbl_1_bss_A8.unk14(); + } + return var_r31; +} + +void fn_1_F600(void) +{ + StructBss4A4 *var_r30; + StructBss3E4 *temp_r31; + + var_r30 = &lbl_1_bss_4A4; + temp_r31 = &lbl_1_bss_3E4[var_r30->unk00]; + var_r30->unk0C = 0; + lbl_1_data_E0 = temp_r31->unk00->model[0]; + lbl_1_data_E4 = temp_r31->unk00->motion[8]; + lbl_1_data_E8 = temp_r31->unk14; + HuPrcChildCreate(fn_1_0, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F6B0(void) +{ + StructBss4A4 *var_r31; + StructBss3E4 *temp_r30; + + var_r31 = &lbl_1_bss_4A4; + temp_r30 = &lbl_1_bss_3E4[var_r31->unk00]; + if (fn_1_11F04(&lbl_1_bss_24, 0) == 120) { + fn_1_11818(temp_r30->unk00, 0, 8, 30, 0); + HuAudSStreamPlay(3); + } + if (fn_1_11F04(&lbl_1_bss_24, 1) != 0) { + return fn_1_11D74(&lbl_1_bss_24); + } + return 0; +} + +StructData1E8 lbl_1_data_32C[] = { { fn_1_F600, fn_1_F6B0, 360 }, { NULL, NULL, -1 } }; + +void fn_1_F75C(void) +{ + fn_1_11D18(&lbl_1_bss_24, lbl_1_data_32C); +} + +s32 fn_1_F78C(void) +{ + s32 var_r31; + + var_r31 = 0; + if (lbl_1_bss_24.unk10 != NULL) { + lbl_1_bss_24.unk10(); + lbl_1_bss_24.unk10 = NULL; + } + if (lbl_1_bss_24.unk14 != NULL) { + var_r31 = lbl_1_bss_24.unk14(); + } + return var_r31; +} + +void fn_1_F824(omObjData *arg0) +{ + StructBss1A8 *sp8; + StructBss4A4 *var_r30; + StructBss3E4 *temp_r29; + s32 i; + + sp8 = &lbl_1_bss_1A8; + if (WipeStatGet() == 0) { + CharModelKill(-1); + MGSeqKillAll(); + HuAudFadeOut(1); + var_r30 = &lbl_1_bss_4A4; + temp_r29 = &lbl_1_bss_3E4[var_r30->unk00]; + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(i, 0); + } + GWPlayerCoinWinSet(temp_r29->unk04, 1); + omOvlReturnEx(1, 1); + arg0->func = NULL; + } +} + +void fn_1_F924(omObjData *arg0) +{ + if (omSysExitReq == 1) { + HuAudSeqAllFadeOut(250); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_F824; + } +} + +void fn_1_F984(void) +{ + StructBss180 *var_r21; + StructBss4A4 *var_r22; + StructBss3E4 *temp_r25; + s32 i; + + fn_1_3088(); + fn_1_39B4(lbl_1_bss_220.unk00); + fn_1_4304(lbl_1_bss_1BC.unk00); + fn_1_49FC(lbl_1_bss_1A8.unk00); + var_r21 = &lbl_1_bss_180[1]; + Hu3DModelHookReset(var_r21->unk00->model[0]); + fn_1_11818(var_r21->unk00, 0, 0, 1, 1); + var_r22 = &lbl_1_bss_4A4; + var_r22->unk00 = var_r22->unk04 = var_r22->unk08 = var_r22->unk0C = 0; + { + StructBss1BC *var_r20 = &lbl_1_bss_1BC; + Vec sp18[] = { { -600.0f, 0.0f, 300.0f }, { -600.0f, 0.0f, 150.0f }, { -450.0f, 0.0f, 150.0f }, { -300.0f, 0.0f, 150.0f } }; + + sp18[0].z = var_r20->unk04[0].z - 100.0f; + for (i = 0; i < 4; i++) { + temp_r25 = &lbl_1_bss_3E4[i]; + if (i == 0) { + sp18[i].z = var_r20->unk04[0].z - 100.0f; + } + omSetTra(temp_r25->unk00, sp18[i].x, sp18[i].y, sp18[i].z); + omSetRot(temp_r25->unk00, 0.0f, 0.0f, 0.0f); + omSetSca(temp_r25->unk00, 1.0f, 1.0f, 1.0f); + temp_r25->unk1C = temp_r25->unk20 = temp_r25->unk24 = temp_r25->unk28 = 0; + } + } + fn_1_BFC8(); + fn_1_F538(); + fn_1_F75C(); + fn_1_71AC(4); + lbl_1_bss_3AC.unk28 = HuAudFXPlay(0x6D7); +} + +void fn_1_1026C(omObjData *arg0) +{ + switch (lbl_1_bss_18) { + case 0: + fn_1_F984(); + lbl_1_bss_18 = 1; + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_18 = 2; + } + break; + case 2: + if (fn_1_BFF8()) { + lbl_1_bss_18 = 3; + } + break; + case 3: + lbl_1_bss_1C = MGSeqStartCreate(); + lbl_1_bss_18 = 4; + lbl_1_bss_3A4[1] = -1; + break; + case 4: + if ((MGSeqStatGet(lbl_1_bss_1C) & 0x10) && lbl_1_bss_3A4[1] == -1) { + lbl_1_bss_3A4[1] = HuAudSeqPlay(0x4D); + } + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18 = 5; + } + break; + case 5: + if (fn_1_F568()) { + lbl_1_bss_18 = 6; + } + break; + case 6: + lbl_1_bss_1C = MGSeqFinishCreate(); + lbl_1_bss_18 = 7; + HuAudSeqPauseAll(0); + HuAudSeqAllFadeOut(250); + break; + case 7: + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18 = 8; + } + break; + case 8: + lbl_1_bss_220.unk00->work[0] = 999; + if (fn_1_F78C()) { + lbl_1_bss_18 = 9; + } + break; + case 9: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_F824; + HuAudFXFadeOut(lbl_1_bss_3AC.unk28, 500); + break; + } + fn_1_F924(arg0); +} + +void fn_1_10670(omObjData *arg0) +{ + StructBss220 *var_r28; + StructBss1BC *var_r27; + StructBss1A8 *var_r26; + StructBss180 *temp_r30; + StructBss3E4 *temp_r29; + StructBssD8 *var_r25; + s32 i; + + var_r28 = &lbl_1_bss_220; + var_r28->unk00 = omAddObjEx(lbl_1_bss_0, 0x100, 16, 16, -1, fn_1_3BF0); + var_r27 = &lbl_1_bss_1BC; + var_r27->unk00 = omAddObjEx(lbl_1_bss_0, 0x200, 20, 20, -1, fn_1_4594); + var_r26 = &lbl_1_bss_1A8; + var_r26->unk00 = omAddObjEx(lbl_1_bss_0, 0x300, 16, 16, -1, fn_1_4B1C); + for (i = 0; i < 2; i++) { + temp_r30 = &lbl_1_bss_180[i]; + temp_r30->unk00 = omAddObjEx(lbl_1_bss_0, 0x400, 16, 16, -1, fn_1_4FB0); + temp_r30->unk00->work[0] = i; + } + for (i = 0; i < 4; i++) { + temp_r29 = &lbl_1_bss_3E4[i]; + temp_r29->unk00 = omAddObjEx(lbl_1_bss_0, 0x500, 16, 16, -1, fn_1_6060); + temp_r29->unk00->work[0] = i; + } + var_r25 = &lbl_1_bss_D8; + var_r25->unk00 = omAddObjEx(lbl_1_bss_0, 0x600, 16, 16, -1, fn_1_6944); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_1026C; +} + +#include "src/REL/executor.c" + +void fn_1_108DC(void) +{ + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + omGameSysInit(lbl_1_bss_0); + fn_1_1A8(); + fn_1_F6C(); + fn_1_1084(); + fn_1_178C(); + fn_1_2A2C(); + fn_1_54A0(); + omAddObjEx(lbl_1_bss_0, 0x1000, 0, 0, -1, fn_1_10670); +} + +void ObjectSetup(void) +{ + fn_1_108DC(); +} diff --git a/src/REL/m436Dll/sequence.c b/src/REL/m436Dll/sequence.c new file mode 100755 index 00000000..3bf58b80 --- /dev/null +++ b/src/REL/m436Dll/sequence.c @@ -0,0 +1,308 @@ +#include "REL/m436Dll.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "ext_math.h" + +float fn_1_110FC(float arg0, float arg1, float arg2) { + if (arg2 <= 1.0f) { + return arg1; + } + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_1113C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_11164(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_1122C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +float fn_1_112F4(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +void fn_1_113CC(omObjData* arg0, s32 arg1, omObjData* arg2, s32 arg3) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + sp20.x = Hu3DData[arg0->model[arg1]].pos.x; + sp20.z = Hu3DData[arg0->model[arg1]].pos.z; + sp2C.x = Hu3DData[arg2->model[arg3]].pos.x; + sp2C.z = Hu3DData[arg2->model[arg3]].pos.z; + sp14.y = Hu3DData[arg0->model[arg1]].rot.y; + sp8.x = sp2C.x - sp20.x; + sp8.z = sp2C.z - sp20.z; + sp14.x = -(atan2d(sp8.z, sp8.x) - 90.0); + if (sp14.x >= 360.0f) { + sp14.x -= 360.0f; + } + if (sp14.x < 0.0f) { + sp14.x += 360.0f; + } + if (sp14.x >= 180.0f) { + if (sp14.y - sp14.x >= 180.0f) { + sp14.y -= 360.0f; + } + if (sp14.y - sp14.x < -180.0f) { + sp14.y += 360.0f; + } + } else { + if (sp14.y - sp14.x > 180.0f) { + sp14.y -= 360.0f; + } + if (sp14.y - sp14.x <= -180.0f) { + sp14.y += 360.0f; + } + } + sp14.y = (9.0f * sp14.y + sp14.x) / 10.0f; + if (arg1 == 0) { + arg0->rot.y = sp14.y; + } else { + Hu3DData[arg0->model[arg1]].rot.y = sp14.y; + } +} + +s32 fn_1_11708(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[0])) { + if (arg4 != 0) { + if (Hu3DMotionTimeGet(arg0->model[arg1]) >= arg3) { + return 1; + } + } else if (Hu3DMotionTimeGet(arg0->model[arg1]) <= arg3) { + return 1; + } + } + return 0; +} + +void fn_1_11818(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_11990(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + arg0->work[3] = arg0->motion[arg2]; + fn_1_11818(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_11B18(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->work[3] != arg0->motion[arg2]) { + arg0->work[3] = arg0->motion[arg2]; + fn_1_11990(arg0, arg1, arg2, arg3, arg4); + } +} + +void fn_1_11CC8(StructBssC0* arg0) { + arg0->unk08 = 0; + arg0->unk0C = arg0->unk04[arg0->unk00].unk08; + arg0->unk10 = arg0->unk04[arg0->unk00].unk00; + arg0->unk14 = arg0->unk04[arg0->unk00].unk04; +} + +void fn_1_11D18(StructBssC0* arg0, StructData1E8* arg1) { + arg0->unk00 = 0; + arg0->unk04 = arg1; + fn_1_11CC8(arg0); +} + +s32 fn_1_11D74(StructBssC0* arg0) { + arg0->unk00++; + fn_1_11CC8(arg0); + if (arg0->unk10 == NULL && arg0->unk14 == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_11DFC(StructBssC0* arg0) { + arg0->unk00--; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_11CC8(arg0); + return 0; +} + +s32 fn_1_11E70(StructBssC0* arg0, s32 arg1) { + arg0->unk00 = arg1; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_11CC8(arg0); + if (arg0->unk10 == NULL && arg0->unk14 == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_11F04(StructBssC0* arg0, s32 arg1) { + if (arg1 == 0) { + return arg0->unk08; + } + arg0->unk08 += arg1; + if (arg0->unk08 >= arg0->unk0C) { + return 1; + } + return 0; +} + +void fn_1_11F40(StructBss32C* arg0, float* arg1, float* arg2) { + float temp_f31; + float temp_f29; + float temp_f30; + float temp_f27; + + temp_f31 = arg1[0] - arg2[0]; + temp_f29 = arg1[1] - arg2[1]; + temp_f30 = arg1[2] - arg2[2]; + arg0->unk10 = arg2[0]; + arg0->unk14 = arg2[1]; + arg0->unk18 = arg2[2]; + arg0->unk38 = sqrtf(temp_f31 * temp_f31 + temp_f29 * temp_f29 + temp_f30 * temp_f30); + temp_f27 = atan2d(temp_f30, temp_f31); + arg0->unk28 = -(atan2d(temp_f29, temp_f31 * cosd(-temp_f27) + temp_f30 * -sind(-temp_f27))); + arg0->unk2C = -(temp_f27 - 90.0f); + arg0->unk30 = 0.0f; +} + +void fn_1_12258(StructBss32C* arg0) { + arg0->unk04 = arg0->unk10; + arg0->unk08 = arg0->unk14; + arg0->unk0C = arg0->unk18; + arg0->unk1C = arg0->unk28; + arg0->unk20 = arg0->unk2C; + arg0->unk24 = arg0->unk30; + arg0->unk34 = arg0->unk38; +} + +void fn_1_12294(StructBss32C* arg0) { + arg0->unk3C = 0.0f; + arg0->unk10 = arg0->unk04; + arg0->unk14 = arg0->unk08; + arg0->unk18 = arg0->unk0C; + arg0->unk28 = arg0->unk1C; + arg0->unk2C = arg0->unk20; + arg0->unk30 = arg0->unk24; + arg0->unk38 = arg0->unk34; +} + +void fn_1_122E0(StructBss32C* arg0, StructBss32C* arg1, float arg2) { + arg0->unk04 = fn_1_110FC(arg0->unk04, arg1->unk10, arg2); + arg0->unk08 = fn_1_110FC(arg0->unk08, arg1->unk14, arg2); + arg0->unk0C = fn_1_110FC(arg0->unk0C, arg1->unk18, arg2); + arg0->unk1C = fn_1_110FC(arg0->unk1C, arg1->unk28, arg2); + arg0->unk20 = fn_1_110FC(arg0->unk24, arg1->unk2C, arg2); + arg0->unk24 = fn_1_110FC(arg0->unk20, arg1->unk30, arg2); + arg0->unk34 = fn_1_110FC(arg0->unk34, arg1->unk38, arg2); +} + +void fn_1_125F4(StructBss32C* arg0, float arg1) { + fn_1_122E0(arg0, arg0, arg1); +} + +void fn_1_12908(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3) { + arg1->unk10 = fn_1_1113C(arg0->unk10, arg1->unk04, arg2, arg3); + arg1->unk14 = fn_1_1113C(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_1113C(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk28 = fn_1_1113C(arg0->unk28, arg1->unk1C, arg2, arg3); + arg1->unk2C = fn_1_1113C(arg0->unk30, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_1113C(arg0->unk2C, arg1->unk24, arg2, arg3); + arg1->unk38 = fn_1_1113C(arg0->unk38, arg1->unk34, arg2, arg3); +} + +void fn_1_12B84(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3) { + fn_1_12908(arg0, arg1, arg2, arg3); + arg0->unk04 = arg1->unk10; + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk1C = arg1->unk28; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk34 = arg1->unk38; +} + +void fn_1_12E38(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3, float arg4) { + fn_1_12908(arg0, arg1, arg2, arg3); + fn_1_122E0(arg0, arg1, arg4); +} + +void fn_1_13368(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3) { + arg1->unk10 = fn_1_11164(arg0->unk10, arg1->unk04, arg2, arg3); + arg1->unk14 = fn_1_11164(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_11164(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk28 = fn_1_11164(arg0->unk28, arg1->unk1C, arg2, arg3); + arg1->unk2C = fn_1_11164(arg0->unk30, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_11164(arg0->unk2C, arg1->unk24, arg2, arg3); + arg1->unk38 = fn_1_11164(arg0->unk38, arg1->unk34, arg2, arg3); +} + +void fn_1_137BC(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3) { + fn_1_13368(arg0, arg1, arg2, arg3); + arg0->unk04 = arg1->unk10; + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk1C = arg1->unk28; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk34 = arg1->unk38; +} + +void fn_1_13C48(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3, float arg4) { + fn_1_13368(arg0, arg1, arg2, arg3); + fn_1_122E0(arg0, arg1, arg4); +} + +void fn_1_14364(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3) { + arg1->unk10 = fn_1_112F4(arg0->unk10, arg1->unk04, arg2, arg3); + arg1->unk14 = fn_1_112F4(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_112F4(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk28 = fn_1_112F4(arg0->unk28, arg1->unk1C, arg2, arg3); + arg1->unk2C = fn_1_112F4(arg0->unk30, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_112F4(arg0->unk2C, arg1->unk24, arg2, arg3); + arg1->unk38 = fn_1_112F4(arg0->unk38, arg1->unk34, arg2, arg3); +} + +void fn_1_14828(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3) { + fn_1_14364(arg0, arg1, arg2, arg3); + arg0->unk04 = arg1->unk10; + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk1C = arg1->unk28; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk34 = arg1->unk38; +} + +void fn_1_14D24(StructBss32C* arg0, StructBss32C* arg1, float arg2, float arg3, float arg4) { + fn_1_14364(arg0, arg1, arg2, arg3); + fn_1_122E0(arg0, arg1, arg4); +} diff --git a/src/REL/m437Dll/main.c b/src/REL/m437Dll/main.c new file mode 100755 index 00000000..5ca6de46 --- /dev/null +++ b/src/REL/m437Dll/main.c @@ -0,0 +1,3464 @@ +#include "REL/m437Dll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "math.h" +#include "string.h" +#include "version.h" + +typedef struct { + /* 0x000 */ omObjData *unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[4]; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ s32 unk24; + /* 0x028 */ s32 unk28; + /* 0x02C */ s32 unk2C; + /* 0x030 */ s32 unk30; + /* 0x034 */ s32 unk34; + /* 0x038 */ s32 unk38; + /* 0x03C */ s32 unk3C; + /* 0x040 */ s32 unk40; + /* 0x044 */ float unk44; + /* 0x048 */ float unk48; + /* 0x04C */ float unk4C; + /* 0x050 */ StructFn15CD0 unk50; +} StructBss1DC; // Size 0x138 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBss920; // Size 0x24 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; +} StructFn3410; // Size 0x14 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ float unk24; +} StructBss8D4; // Size 0x28 + +typedef struct { + /* 0x000 */ omObjData *unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ StructFn15CD0 unk24; +} StructBss6BC; // Size 0x10C + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBss8FC; // Size 0x24 + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ float unk24[7]; + /* 0x40 */ char unk40[4]; + /* 0x44 */ float unk44[7]; + /* 0x60 */ char unk60[4]; + /* 0x64 */ float unk64[7]; + /* 0x80 */ char unk80[4]; + /* 0x84 */ float unk84[7]; + /* 0xA0 */ char unkA0[4]; + /* 0xA4 */ float unkA4[7]; + /* 0xC0 */ char unkC0[4]; + /* 0xC4 */ float unkC4[7]; + /* 0xE0 */ char unkE0[4]; +} StructBss68; // Size 0xE4 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBss944; // Size 0x24 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ char unk08[0x38]; +} StructBss968; // Size 0x40 + +void fn_1_0(void); +void fn_1_1A8(void); +void fn_1_230(s32 arg0, s32 arg1, float arg2); +void fn_1_298(s32 arg0, float arg1); +float fn_1_304(s32 arg0); +void fn_1_434(void); +void fn_1_4C0(void); +void fn_1_8A4(void (*arg0)(void)); +void fn_1_8C4(void (*arg0)(void)); +void fn_1_8E4(omObjData *arg0); +void fn_1_F8C(void); +void fn_1_10C0(void); +void fn_1_1184(s32 arg0); +s32 fn_1_11BC(void); +void fn_1_11E0(void); +void fn_1_1218(omObjData *arg0); +void fn_1_13E8(void); +void fn_1_144C(s32 arg0, float arg1, float arg2, s32 arg3); +void fn_1_1A90(void); +void fn_1_1AB4(s32 arg0, float arg1, float arg2); +s32 fn_1_1F0C(float arg0, float arg1, float arg2, float arg3, s32 arg4); +s32 fn_1_20F8(float arg0, float arg1, float arg2, float arg3, s32 arg4); +void fn_1_22E4(s32 arg0, float arg1, float arg2); +void fn_1_273C(s32 arg0); +void fn_1_27A4(s32 arg0); +void fn_1_280C(s32 arg0, s32 arg1); +void fn_1_28F4(s32 arg0); +void fn_1_2A10(s32 arg0, s32 arg1); +void fn_1_2A94(float *arg0, s32 arg1); +void fn_1_2B04(omObjData *arg0); +void fn_1_2BAC(s32 arg0); +void fn_1_2BBC(omObjData *arg0); +void fn_1_3194(omObjData *arg0); +void fn_1_3260(StructBss920 *arg0); +void fn_1_3410(omObjData *arg0); +float fn_1_3694(void); +float fn_1_36B4(void); +void fn_1_37D4(s32 arg0); +void fn_1_37E8(omObjData *arg0); +s32 fn_1_3990(void); +void fn_1_39C4(float arg0); +void fn_1_39E4(omObjData *arg0); +void fn_1_3B50(void); +void fn_1_3B64(omObjData *arg0); +void fn_1_3CB8(s32 arg0); +void fn_1_3D40(omObjData *arg0); +void fn_1_3F44(omObjData *arg0); +void fn_1_4538(StructBss8FC *arg0); +void fn_1_46C0(omObjData *arg0); +void fn_1_4928(s32 arg0); +void fn_1_4938(omObjData *arg0); +void fn_1_4AF8(s32 arg0); +void fn_1_4BAC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_4C40(omObjData *arg0); +void fn_1_4E00(StructBss8D4 *arg0); +void fn_1_4EE0(omObjData *arg0); +void fn_1_5148(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_51DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_5270(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_5304(s32 arg0); +void fn_1_532C(omObjData *arg0); +void fn_1_5658(omObjData *arg0); +void fn_1_5984(StructBss6BC *arg0); +void fn_1_5AD8(omObjData *arg0); +void fn_1_5FBC(void); +void fn_1_610C(s32 arg0, s32 arg1); +void fn_1_6134(omObjData *arg0); +void fn_1_6198(s32 arg0, s32 arg1); +void fn_1_6200(omObjData *arg0); +void fn_1_6580(s32 arg0, s32 arg1, s32 arg2); +void fn_1_65E0(omObjData *arg0); +void fn_1_70F8(s32 arg0, s32 arg1); +void fn_1_7134(omObjData *arg0); +void fn_1_72CC(omObjData *arg0); +void fn_1_74B0(StructBss1DC *arg0); +void fn_1_7678(omObjData *arg0); +void fn_1_79E0(void); +void fn_1_7A14(omObjData *arg0); +void fn_1_82E0(omObjData *arg0); +void fn_1_8308(StructBss68 *arg0); +void fn_1_84C4(omObjData *arg0); +void fn_1_8684(void); +void fn_1_8734(void); +void fn_1_8824(void); +void fn_1_88D4(void); +void fn_1_8984(void); +void fn_1_8A34(void); +void fn_1_8B24(void); +void fn_1_8BD4(void); +void fn_1_8C84(s32 arg0); +void fn_1_8DA4(void); +void fn_1_9320(void); +void fn_1_96D8(void); +void fn_1_9B2C(s32 arg0); +void fn_1_9FA0(void); +void fn_1_A440(void); +void fn_1_A860(void); +s32 fn_1_A864(void); +void fn_1_A9E8(void); +s32 fn_1_AA24(void); +void fn_1_AA80(void); +s32 fn_1_AABC(void); +void fn_1_AB18(void); +s32 fn_1_AB68(void); +void fn_1_ABB0(void); +s32 fn_1_ABEC(void); +void fn_1_AC70(void); +s32 fn_1_ACCC(void); +void fn_1_AD28(void); +s32 fn_1_AD98(void); +void fn_1_ADE0(void); +s32 fn_1_AE1C(void); +void fn_1_AE78(void); +s32 fn_1_AF4C(void); +void fn_1_B194(void); +s32 fn_1_B1C4(void); +float fn_1_B250(void); +void fn_1_B270(void); +s32 fn_1_B3F0(s32 arg0); +float fn_1_B4F4(s32 arg0, s32 arg1); +void fn_1_B7E0(void); +void fn_1_B8D0(void); +void fn_1_BC18(void); +void fn_1_BCC8(void); +void fn_1_BDB8(s32 arg0); +void fn_1_BE80(void); +void fn_1_C248(void); +void fn_1_C610(void); +void fn_1_C9C4(void); +void fn_1_CD20(void); +void fn_1_D03C(void); +void fn_1_D3C0(void); +void fn_1_D754(void); +s32 fn_1_D930(void); +void fn_1_DCEC(void); +s32 fn_1_DEC4(void); +void fn_1_E2A8(void); +s32 fn_1_E598(void); +void fn_1_E634(void); +s32 fn_1_E944(void); +void fn_1_E9A0(void); +s32 fn_1_EAA4(void); +void fn_1_EB38(void); +s32 fn_1_EC10(void); +void fn_1_EDD4(void); +s32 fn_1_EEA0(void); +void fn_1_EFCC(void); +s32 fn_1_F0B8(void); +void fn_1_F0F8(void); +s32 fn_1_F144(void); +void fn_1_F18C(void); +s32 fn_1_F294(void); +void fn_1_F3D8(void); +s32 fn_1_F494(void); +void fn_1_F4D4(void); +s32 fn_1_F504(void); +void fn_1_F590(void); +s32 fn_1_F640(void); +void fn_1_F6EC(void); +s32 fn_1_F71C(void); +void fn_1_F7A8(omObjData *arg0); +s32 fn_1_F89C(void); +void fn_1_F8AC(void); +void fn_1_1043C(omObjData *arg0); +void fn_1_108A4(omObjData *arg0); +void fn_1_10B30(void); + +StructBss968 lbl_1_bss_968; +StructBss944 lbl_1_bss_944; +StructBss920 lbl_1_bss_920; +StructBss8FC lbl_1_bss_8FC; +StructBss8D4 lbl_1_bss_8D4; +StructBss6BC lbl_1_bss_6BC[2]; +StructBss1DC lbl_1_bss_1DC[4]; +StructBss160 lbl_1_bss_160; +float lbl_1_bss_15C; +float lbl_1_bss_158; +float lbl_1_bss_154; +float lbl_1_bss_150; +float lbl_1_bss_14C; +StructBss68 lbl_1_bss_68; +StructBss50 lbl_1_bss_50; +StructBss50 lbl_1_bss_38; +StructBss50 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +float lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +Process *lbl_1_bss_0; + +s32 lbl_1_data_0[][5] = { { 91, 105, 126, 141, -1 }, { 91, 105, 126, 141, -1 }, { 124, 137, -1, -1, -1 }, { 85, 100, 127, -1, -1 }, + { 124, 139, -1, -1, -1 }, { 85, 97, 127, 139, -1 }, { 127, 137, -1, -1, -1 }, { 79, 95, 109, 127, -1 } }; + +s32 lbl_1_data_A0 = -1; +s32 lbl_1_data_A4 = -1; +s32 lbl_1_data_A8 = -1; + +void fn_1_0(void) +{ + s32 i; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_data_A0 == -1 || lbl_1_data_A4 == -1 || lbl_1_data_A8 == -1 || lbl_1_data_A4 != Hu3DMotionIDGet(lbl_1_data_A0)) { + continue; + } + for (i = 0; i < 5; i++) { + if (lbl_1_data_0[lbl_1_data_A8][i] != -1 && Hu3DMotionTimeGet(lbl_1_data_A0) >= lbl_1_data_0[lbl_1_data_A8][i]) { + OSReport("KE-System CHR:%d TIME:%d\n", lbl_1_data_A8, lbl_1_data_0[lbl_1_data_A8][i]); + HuAudFXPlay(0x6D8); + lbl_1_data_0[lbl_1_data_A8][i] = -1; + } + } + } +} + +void fn_1_1A8(void) +{ + s32 var_r31; + + var_r31 = Hu3DGLightCreate(0.0f, 1000.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_230(s32 arg0, s32 arg1, float arg2) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk44[arg0] = arg1; + if (var_r31->unk60[arg0] < 0.0f) { + var_r31->unk60[arg0] = -arg2; + } + else { + var_r31->unk60[arg0] = arg2; + } +} + +void fn_1_298(s32 arg0, float arg1) +{ + fn_1_230(arg0, -1, arg1); +} + +float fn_1_304(s32 arg0) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + if (var_r31->unk60[arg0] != 0.0f) { + var_r31->unk60[arg0] *= -0.9f; + if (var_r31->unk44[arg0] == -1) { + if (var_r31->unk60[arg0] >= -0.5f && var_r31->unk60[arg0] <= 0.5f) { + var_r31->unk60[arg0] = 0.0f; + } + } + else { + var_r31->unk44[arg0]--; + if (var_r31->unk44[arg0] <= 0) { + var_r31->unk44[arg0] = 0; + var_r31->unk60[arg0] = 0.0f; + } + } + } + return var_r31->unk60[arg0]; +} + +void fn_1_434(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk08 = 0.0f; + var_r31->unk0C = 225.0f; + var_r31->unk10 = 1740.0f; + var_r31->unk20 = -10.0f; + var_r31->unk24 = 0.0f; + var_r31->unk28 = 0.0f; + var_r31->unk38 = 300.0f; +} + +void fn_1_4C0(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + if (HuPadBtn[0] & 0x200) { + if (HuPadBtn[0] & 0x100) { + var_r31->unk10 -= HuPadStkY[0] / 10.0f; + } + else { + var_r31->unk08 += HuPadStkX[0] / 10.0f; + var_r31->unk0C += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & 0x800) { + var_r31->unk20 -= HuPadStkY[0] / 100.0f; + var_r31->unk24 += HuPadStkX[0] / 100.0f; + if (var_r31->unk20 < 0.0f) { + var_r31->unk20 += 360.0f; + } + if (var_r31->unk20 >= 360.0f) { + var_r31->unk20 -= 360.0f; + } + if (var_r31->unk24 < 0.0f) { + var_r31->unk24 += 360.0f; + } + if (var_r31->unk24 >= 360.0f) { + var_r31->unk24 -= 360.0f; + } + } + if (HuPadBtn[0] & 0x400) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(16, 100, 1.0f, ">>>>>>>>>> CAMERA TEST <<<<<<<<<<"); + print8(16, 110, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08, var_r31->unk0C, var_r31->unk10); + print8(16, 120, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20, var_r31->unk24, var_r31->unk28); + print8(16, 130, 1.0f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_8A4(void (*arg0)(void)) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk00 = arg0; +} + +void fn_1_8C4(void (*arg0)(void)) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk04 = arg0; +} + +void fn_1_8E4(omObjData *arg0) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08 + fn_1_304(0); + Center.y = var_r31->unk0C + fn_1_304(1); + Center.z = var_r31->unk10 + fn_1_304(2); + CRot.x = var_r31->unk20 + fn_1_304(3); + CRot.y = var_r31->unk24 + fn_1_304(4); + CRot.z = var_r31->unk28 + fn_1_304(5); + CZoom = var_r31->unk38 + fn_1_304(6); +} + +void fn_1_F8C(void) +{ + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 45.0f, 0.1f, 10000.0f, 1.2f); + fn_1_8A4(fn_1_434); + fn_1_8C4(fn_1_4C0); + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_8E4); +} + +void fn_1_10C0(void) +{ + Vec sp20 = { 0.0f, 3000.0f, 1.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_1184(s32 arg0) +{ + if (lbl_1_bss_8 == 0) { + lbl_1_bss_8 = 1; + lbl_1_bss_4 = arg0 * REFRESH_RATE; + } +} + +s32 fn_1_11BC(void) +{ + if (lbl_1_bss_8 == 3) { + return 1; + } + else { + return 0; + } +} + +void fn_1_11E0(void) +{ + if (lbl_1_bss_8 == 2) { + lbl_1_bss_8 = 3; + lbl_1_bss_4 = 30; + } +} + +s32 lbl_1_data_12C = -1; + +void fn_1_1218(omObjData *arg0) +{ + switch (lbl_1_bss_8) { + case 1: + if (lbl_1_data_12C == -1) { + lbl_1_data_12C = MGSeqCreate(1, lbl_1_bss_4 / REFRESH_RATE, -1, -1); + } + lbl_1_bss_8 = 2; + break; + case 2: + lbl_1_bss_4--; + if (lbl_1_data_12C != -1) { + MGSeqParamSet(lbl_1_data_12C, 1, (lbl_1_bss_4 + REFRESH_RATE - 1) / REFRESH_RATE); + } + if (lbl_1_bss_4 <= 0) { + lbl_1_bss_4 = 30; + lbl_1_bss_8 = 3; + } + break; + case 3: + if (lbl_1_data_12C != -1) { + MGSeqParamSet(lbl_1_data_12C, 2, -1); + lbl_1_data_12C = -1; + } + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 0; + break; + } +} + +void fn_1_13E8(void) +{ + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 0; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_1218); +} + +// Identical to mgmodedll/main.c::fn_1_245CC +void fn_1_144C(s32 arg0, float arg1, float arg2, s32 arg3) +{ + WindowData *temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f27; + float temp_f26; + float var_f31; + float var_f30; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + var_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (var_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + var_f31 = temp_f29 + temp_f25 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 -= 2.0f; + } + } + var_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (var_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + var_f30 = temp_f28 + temp_f24 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 -= 2.0f; + } + } + if (arg3 != 0) { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = var_f31; + var_f21 = temp_f27; + var_f22 = var_f30; + var_f20 = temp_f26; + } + else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_113B0(var_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_113B0(temp_f27, 1.0f, i, 10.0f); + } + else { + var_f22 = fn_1_113B0(var_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_113B0(temp_f26, 1.0f, i - 10, 5.0f); + } + } + else { + if (i <= 10) { + var_f22 = fn_1_113B0(temp_f28, var_f30, i, 10.0f); + var_f20 = fn_1_113B0(1.0f, temp_f26, i, 10.0f); + } + else { + var_f23 = fn_1_113B0(temp_f29, var_f31, i - 10, 5.0f); + var_f21 = fn_1_113B0(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } + else { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +void fn_1_1A90(void) +{ + HuWinInit(1); +} + +void fn_1_1AB4(s32 arg0, float arg1, float arg2) +{ + WindowData *temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_113B0(var_f31, temp_f29, i, 10.0f); + temp_f21 = fn_1_113B0(temp_f25, 1.0f, i, 10.0f); + temp_f22 = fn_1_113B0(var_f30, temp_f28, i, 10.0f); + temp_f20 = fn_1_113B0(temp_f24, 1.0f, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); +} + +s32 fn_1_1F0C(float arg0, float arg1, float arg2, float arg3, s32 arg4) +{ + s32 var_r31; + s32 sp18[][6] = { { 0xFF, 0xFF, 0xCC, 0x00, 0x09, 0x09 }, { 0xCC, 0xFF, 0xFF, 0x00, 0x09, 0x09 }, { 0xFF, 0xCC, 0xFF, 0x00, 0x09, 0x09 } }; + + var_r31 = HuWinCreate(arg0, arg1, arg2, arg3, 1); + HuSprColorSet(winData[var_r31].group, 0, sp18[arg4][0], sp18[arg4][1], sp18[arg4][2]); + winData[var_r31].mess_color = sp18[arg4][3]; + winData[var_r31].mess_shadow_color = sp18[arg4][4]; + winData[var_r31].attr |= 0x80; + HuWinBGTPLvlSet(var_r31, sp18[arg4][5] / 10.0f); + winData[var_r31].active_pad = 0; + fn_1_144C(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +s32 fn_1_20F8(float arg0, float arg1, float arg2, float arg3, s32 arg4) +{ + return fn_1_1F0C(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_22E4(s32 arg0, float arg1, float arg2) +{ + WindowData *temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_11540(temp_f29, var_f31, i, 10.0f); + temp_f21 = fn_1_11540(1.0f, temp_f25, i, 10.0f); + temp_f22 = fn_1_11540(temp_f28, var_f30, i, 10.0f); + temp_f20 = fn_1_11540(1.0f, temp_f24, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); +} + +void fn_1_273C(s32 arg0) +{ + HuWinMesSet(arg0, MAKE_MESSID(29, 22)); + HuPrcVSleep(); + fn_1_144C(arg0, 0.5f, 0.5f, 0); + HuWinKill(arg0); +} + +void fn_1_27A4(s32 arg0) +{ + fn_1_273C(arg0); +} + +void fn_1_280C(s32 arg0, s32 arg1) +{ + s32 var_r30; + s32 temp_r28; + s32 i; + + var_r30 = 0; + temp_r28 = GWMessDelayGet(); + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1DC[i].unk34 == 0) { + var_r30 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r30 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_28F4(s32 arg0) +{ + s32 var_r31; + s32 temp_r28; + s32 i; + + var_r31 = 0; + temp_r28 = GWMessDelayGet(); + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1DC[i].unk34 == 0) { + var_r31 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r31 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + var_r31 = HuWinChoiceGet(arg0, 1); + if (var_r31 == -1 || var_r31 == 1) { + lbl_1_bss_10 = 0; + } + else { + lbl_1_bss_10 = 1; + } + HuWinComKeyReset(); +} + +void fn_1_2A10(s32 arg0, s32 arg1) +{ + winData[arg0].mess_color = 0; + winData[arg0].mess_shadow_color = 9; + winData[arg0].attr |= 0x80; + HuWinMesSet(arg0, arg1); +} + +void fn_1_2A94(float *arg0, s32 arg1) +{ + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} + +void fn_1_2B04(omObjData *arg0) +{ + s32 i; + + for (i = 0; i < 3; i++) { + Hu3DData[arg0->model[i + 5]].rot.y += 360.0f / (2500.0f + 2500.0f * i); + } +} + +void fn_1_2BAC(s32 arg0) +{ + lbl_1_bss_920.unk04 = arg0; +} + +void fn_1_2BBC(omObjData *arg0) +{ + StructBss920 *temp_r30; + + temp_r30 = arg0->data; + switch (temp_r30->unk04) { + case 2: + fn_1_119A0(arg0, 9, 9, 1, 0); + Hu3DModelAttrReset(arg0->model[9], HU3D_ATTR_DISPOFF); + temp_r30->unk1C = 0; + fn_1_230(1, 10, 4.0f); + HuAudFXPlay(0x6CF); + /* fallthrough */ + case 1: + fn_1_119A0(arg0, 0, 0, 1, 0); + fn_1_119A0(arg0, 3, 3, 1, 0); + fn_1_119A0(arg0, 4, 4, 1, 0); + fn_1_119A0(arg0, 5, 5, 1, 0); + fn_1_119A0(arg0, 6, 6, 1, 0); + fn_1_119A0(arg0, 7, 7, 1, 0); + if (temp_r30->unk04 == 1) { + HuAudFXPlay(0x6CE); + } + temp_r30->unk04 = 10; + break; + case 3: + temp_r30->unk04 = 30; + fn_1_119A0(arg0, 0, 0, 1, 0); + fn_1_119A0(arg0, 1, 1, 1, 0); + fn_1_119A0(arg0, 2, 2, 1, 0); + fn_1_119A0(arg0, 3, 3, 1, 0); + fn_1_119A0(arg0, 4, 4, 1, 0); + fn_1_119A0(arg0, 5, 5, 1, 0); + fn_1_119A0(arg0, 6, 6, 1, 0); + fn_1_119A0(arg0, 7, 7, 1, 0); + fn_1_119A0(arg0, 8, 8, 0, 0); + Hu3DModelAttrReset(arg0->model[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[9], HU3D_ATTR_DISPOFF); + HuAudFXPlay(0x6D0); + break; + case 10: + if (Hu3DMotionEndCheck(arg0->model[3])) { + temp_r30->unk04 = 0; + fn_1_119A0(arg0, 3, 13, 1, 1); + fn_1_119A0(arg0, 4, 14, 1, 1); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF); + } + break; + case 30: + fn_1_230(6, -1, 8.0f); + if (Hu3DMotionTimeGet(arg0->model[3]) >= 30.0f) { + temp_r30->unk04 = 10; + fn_1_230(6, -1, 128.0f); + HuAudFXPlay(0x6DA); + omVibrate(lbl_1_bss_1DC[0].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[1].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[2].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[3].unk2C, 12, 12, 0); + fn_1_37D4(1); + } + break; + } + if (Hu3DMotionTimeGet(arg0->model[9]) >= 25.0f && temp_r30->unk1C == 0) { + temp_r30->unk1C = 1; + fn_1_230(1, 10, 4.0f); + } + else if (Hu3DMotionTimeGet(arg0->model[9]) >= 40.0f && temp_r30->unk1C == 1) { + temp_r30->unk1C = 2; + fn_1_230(1, 10, 4.0f); + } + if (temp_r30->unk04 == 0) { + if (temp_r30->unk14++ >= 5 * REFRESH_RATE) { + temp_r30->unk14 = 0; + if (rand8() % 2 != 0) { + fn_1_2BAC(1); + } + } + } +} + +void fn_1_3194(omObjData *arg0) +{ + fn_1_2B04(arg0); + fn_1_2BBC(arg0); +} + +void fn_1_3260(StructBss920 *arg0) +{ + omObjData *temp_r29 = arg0->unk00; + s32 sp80[][3] = { { 2, -1, 0 }, { 2, -1, 0 }, { 2, -1, 0 }, { 1, 1, 0 }, { 1, 1, 0 }, { 2, -1, 0 }, { 2, -1, 0 }, { 2, -1, 0 }, { 2, -1, 1 }, + { 2, -1, 1 } }; + Vec sp8[] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, -680.0f }, { 0.0f, 0.0f, -680.0f }, { 525.0f, 0.0f, -1150.0f }, { -525.0f, 0.0f, -1150.0f }, + { 0.0f, 150.0f, 50.0f }, { 0.0f, 150.0f, 0.0f }, { 0.0f, 150.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } }; + s32 i; + + for (i = 0; i < 10; i++) { + Hu3DModelPosSet(temp_r29->model[i], sp8[i].x, sp8[i].y, sp8[i].z); + if (sp80[i][2] == 1) { + Hu3DModelAttrSet(temp_r29->model[i], HU3D_ATTR_DISPOFF); + } + if (sp80[i][1] != -1) { + fn_1_119A0(temp_r29, i, i + 10, 1, sp80[i][1]); + } + else { + fn_1_119A0(temp_r29, i, i, 1, sp80[i][1]); + } + } + temp_r29->work[0] = temp_r29->work[1] = temp_r29->work[2] = temp_r29->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_3410(omObjData *arg0) +{ + StructFn3410 sp80[] = { { DATA_MAKE_NUM(DATADIR_M437, 36), 2, -1, 1, 0 }, { DATA_MAKE_NUM(DATADIR_M437, 37), 2, -1, 1, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 38), 2, -1, 2, 0 }, { DATA_MAKE_NUM(DATADIR_M437, 39), 1, DATA_MAKE_NUM(DATADIR_M437, 41), 2, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 40), 1, DATA_MAKE_NUM(DATADIR_M437, 42), 2, 0 }, { DATA_MAKE_NUM(DATADIR_M437, 33), 2, -1, 0, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 34), 2, -1, 0, 0 }, { DATA_MAKE_NUM(DATADIR_M437, 35), 2, -1, 0, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 43), 2, -1, 0, 1 }, { DATA_MAKE_NUM(DATADIR_M437, 44), 2, -1, 0, 1 } }; + Vec sp8[] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, -680.0f }, { 0.0f, 0.0f, -680.0f }, { 525.0f, 0.0f, -1150.0f }, { -525.0f, 0.0f, -1150.0f }, + { 0.0f, 150.0f, 50.0f }, { 0.0f, 150.0f, 0.0f }, { 0.0f, 150.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } }; + s32 i; + + for (i = 0; i < 10; i++) { + arg0->model[i] = Hu3DModelCreateFile(sp80[i].unk00); + arg0->motion[i] = Hu3DMotionIDGet(arg0->model[i]); + if (sp80[i].unk08 != -1) { + arg0->motion[i + 10] = Hu3DJointMotionFile(arg0->model[i], sp80[i].unk08); + } + Hu3DModelPosSet(arg0->model[i], sp8[i].x, sp8[i].y, sp8[i].z); + if (sp80[i].unk0C == 1) { + Hu3DModelShadowMapSet(arg0->model[i]); + } + else if (sp80[i].unk0C == 2) { + Hu3DModelShadowSet(arg0->model[i]); + } + if (sp80[i].unk10 == 1) { + Hu3DModelAttrSet(arg0->model[i], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[i], 1); + } + if (sp80[i].unk08 != -1) { + fn_1_119A0(arg0, i, i + 10, 1, sp80[i].unk04); + } + else { + fn_1_119A0(arg0, i, i, 1, sp80[i].unk04); + } + } + arg0->data = &lbl_1_bss_920; + arg0->func = fn_1_3194; +} + +float fn_1_3694(void) +{ + return lbl_1_bss_150 / lbl_1_bss_154; +} + +float fn_1_36B4(void) +{ + float temp_f31; + StructBss6BC *sp8; + + temp_f31 = lbl_1_bss_150 / lbl_1_bss_154; + sp8 = &lbl_1_bss_6BC[1]; + if (lbl_1_bss_8D4.unk08 == 0) { + if (temp_f31 > 0.875f) { + fn_1_4AF8(3); + fn_1_5304(3); + fn_1_5148(3, 5, 0, 0); + fn_1_5270(5, 10, 2, 1); + } + else if (temp_f31 > 0.75f) { + fn_1_4AF8(2); + fn_1_5304(2); + } + else if (temp_f31 > 0.5f) { + fn_1_4AF8(1); + fn_1_5304(1); + } + else { + fn_1_4AF8(0); + fn_1_5304(0); + } + } + return temp_f31; +} + +void fn_1_37D4(s32 arg0) +{ + lbl_1_bss_8FC.unk04 = 1; +} + +void fn_1_37E8(omObjData *arg0) +{ + Mtx sp8; + StructBss8FC *var_r30; + + var_r30 = &lbl_1_bss_8FC; + switch (var_r30->unk04) { + case 1: + var_r30->unk04 = 2; + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + fn_1_119A0(arg0, 0, 3, 1, 0); + fn_1_119A0(arg0, 2, 10, 1, 0); + break; + case 2: + if (Hu3DMotionTimeGet(arg0->model[0]) >= 20.0f) { + arg0->trans.y -= 20.0f; + if (arg0->trans.y <= 0.0f) { + arg0->trans.y = 0.0f; + var_r30->unk04 = 3; + } + } + break; + case 3: + if (Hu3DMotionEndCheck(arg0->model[0])) { + var_r30->unk04 = 4; + Hu3DModelHookReset(arg0->model[2]); + Hu3DModelObjMtxGet(arg0->model[0], "m437a01-balloon-point", sp8); + Hu3DModelPosSet(arg0->model[1], sp8[0][3], 0.0f, -250.0f); + } + break; + } +} + +s32 fn_1_3990(void) +{ + if (lbl_1_bss_15C <= lbl_1_bss_158) { + return 1; + } + else { + return 0; + } +} + +void fn_1_39C4(float arg0) +{ + lbl_1_bss_158 += arg0; +} + +void fn_1_39E4(omObjData *arg0) +{ + if (lbl_1_bss_15C > lbl_1_bss_158) { + lbl_1_bss_150 = lbl_1_bss_158 * (lbl_1_bss_154 / lbl_1_bss_15C); + lbl_1_bss_14C = fn_1_11370(lbl_1_bss_14C, lbl_1_bss_150, 5.0f); + Hu3DMotionTimeSet(arg0->model[1], lbl_1_bss_14C); + } + else { + lbl_1_bss_158 = lbl_1_bss_15C; + lbl_1_bss_150 = lbl_1_bss_158 * (lbl_1_bss_154 / lbl_1_bss_15C); + lbl_1_bss_14C = fn_1_11370(lbl_1_bss_14C, lbl_1_bss_150, 5.0f); + Hu3DMotionTimeSet(arg0->model[1], lbl_1_bss_14C); + } +} + +void fn_1_3B50(void) +{ + lbl_1_bss_8FC.unk08 = 1; +} + +void fn_1_3B64(omObjData *arg0) +{ + Mtx sp8; + StructBss8FC *var_r30; + + var_r30 = &lbl_1_bss_8FC; + if (var_r30->unk08 == 1) { + var_r30->unk08 = 0; + Hu3DModelAttrReset(arg0->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelObjMtxGet(arg0->model[0], "m437a01-balloon-point", sp8); + Hu3DModelPosSet(arg0->model[3], sp8[0][3], 0.0f, -250.0f); + fn_1_119A0(arg0, 3, 6, 1, 0); + omVibrate(lbl_1_bss_1DC[0].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[1].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[2].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[3].unk2C, 12, 12, 0); + HuAudFXPlay(0x6F4); + HuAudSeqAllFadeOut(100); + } +} + +void fn_1_3CB8(s32 arg0) +{ + lbl_1_bss_14 += arg0; + if (lbl_1_bss_14 >= 3.0f) { + lbl_1_bss_14 = 3.0f; + } +} + +void fn_1_3D40(omObjData *arg0) +{ + float temp_f31; + StructBss8FC *sp8; + s32 temp_r31; + + sp8 = &lbl_1_bss_8FC; + temp_r31 = 100.0f * fn_1_3694(); + temp_f31 = fn_1_11478(0.0f, lbl_1_bss_14, lbl_1_bss_8FC.unk1C++, temp_r31); + if (lbl_1_bss_8FC.unk1C >= temp_r31) { + lbl_1_bss_8FC.unk1C = 0; + lbl_1_bss_14 -= 0.5f; + if (lbl_1_bss_14 <= 0.0f) { + lbl_1_bss_14 = 0.0f; + } + } + if (fn_1_3694() >= 0.2f) { + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, temp_f31); + } +} + +void fn_1_3F44(omObjData *arg0) +{ + fn_1_37E8(arg0); + fn_1_39E4(arg0); + fn_1_3D40(arg0); + fn_1_3B64(arg0); +} + +void fn_1_4538(StructBss8FC *arg0) +{ + omObjData *temp_r31; + + temp_r31 = arg0->unk00; + omSetTra(temp_r31, 0.0f, 210.0f, -250.0f); + Hu3DModelAttrSet(temp_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->model[1], HU3D_ATTR_DISPOFF); + lbl_1_bss_150 = 0.0f; + lbl_1_bss_154 = Hu3DMotionMaxTimeGet(temp_r31->model[1]); + lbl_1_bss_14C = 0.0f; + lbl_1_bss_158 = 0.0f; + lbl_1_bss_15C = rand8() % 7 + 30; + Hu3DModelAttrSet(temp_r31->model[2], HU3D_ATTR_DISPOFF); + temp_r31->work[0] = temp_r31->work[1] = temp_r31->work[2] = temp_r31->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_46C0(omObjData *arg0) +{ + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 24)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 28)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 29)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 30)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 31)); + Hu3DModelShadowMapSet(arg0->model[0]); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 26)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[1]); + Hu3DModelLayerSet(arg0->model[1], 2); + fn_1_119A0(arg0, 1, 5, 1, 2); + lbl_1_bss_15C = Hu3DMotionMaxTimeGet(arg0->model[1]); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 25)); + arg0->motion[10] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 32)); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelHookSet(arg0->model[0], "m437a01-balloon-point", arg0->model[2]); + Hu3DModelHookSet(arg0->model[2], "m437test04-b_point", arg0->model[1]); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 27)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[3]); + Hu3DModelLayerSet(arg0->model[3], 2); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + arg0->func = fn_1_3F44; +} + +void fn_1_4928(s32 arg0) +{ + lbl_1_bss_8D4.unk04 = arg0; +} + +void fn_1_4938(omObjData *arg0) +{ + float sp8; + StructBss8D4 *temp_r31; + + sp8 = 0.0f; + temp_r31 = arg0->data; + switch (temp_r31->unk04) { + case 1: + temp_r31->unk04 = 2; + temp_r31->unk14 = temp_r31->unk18 = 0; + temp_r31->unk24 = 0.0f; + /* fallthrough */ + case 2: + temp_r31->unk24 = fn_1_11478(0.0f, 10.0f, temp_r31->unk14, 30.0f); + if (temp_r31->unk14++ >= 30) { + temp_r31->unk14 = 0; + temp_r31->unk18++; + if (temp_r31->unk18 >= 2) { + temp_r31->unk04 = 3; + } + } + break; + case 3: + temp_r31->unk24 = fn_1_11370(temp_r31->unk24, 0.0f, 5.0f); + if (temp_r31->unk14++ >= 15) { + temp_r31->unk04 = 0; + temp_r31->unk14 = temp_r31->unk18 = 0; + temp_r31->unk24 = 0.0f; + Hu3DMotionNoMotReset(arg0->model[0], "g000m0-ns_ago", 0x200); + } + break; + } + if (temp_r31->unk04 != 0) { + Hu3DMotionForceSet(arg0->model[0], "g000m0-ns_ago", 0x200, temp_r31->unk24); + } +} + +void fn_1_4AF8(s32 arg0) +{ + s32 sp8[] = { 4, 5, 6, 7, 8 }; + + if (arg0 <= 3) { + fn_1_11B18(lbl_1_bss_8D4.unk00, 0, sp8[arg0], 120, 1); + } + else { + fn_1_11B18(lbl_1_bss_8D4.unk00, 0, sp8[arg0], 5, 0); + } +} + +void fn_1_4BAC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_8D4.unk00, 0, arg0, arg1, arg2); + } + else { + fn_1_11B18(lbl_1_bss_8D4.unk00, 0, arg0, arg1, arg2); + } +} + +void fn_1_4C40(omObjData *arg0) +{ + fn_1_4938(arg0); +} + +void fn_1_4E00(StructBss8D4 *arg0) +{ + omObjData *temp_r30; + + temp_r30 = arg0->unk00; + omSetTra(temp_r30, 0.0f, 37.0f, -565.0f); + omSetSca(temp_r30, 1.5f, 1.5f, 1.5f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + temp_r30->work[0] = temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_4EE0(omObjData *arg0) +{ + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 45)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 46)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 47)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 48)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 49)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 50)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 51)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 52)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 53)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 54)); + omSetTra(arg0, 0.0f, 37.0f, -565.0f); + omSetSca(arg0, 1.5f, 1.5f, 1.5f); + Hu3DModelShadowSet(arg0->model[0]); + fn_1_119A0(arg0, 0, 0, 1, 1); + arg0->data = &lbl_1_bss_8D4; + arg0->func = fn_1_4C40; +} + +void fn_1_5148(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_6BC[0].unk00, 0, arg0, arg1, arg2); + } + else { + fn_1_11B18(lbl_1_bss_6BC[0].unk00, 0, arg0, arg1, arg2); + } +} + +void fn_1_51DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_6BC[1].unk00, 0, arg0, arg1, arg2); + } + else { + fn_1_11B18(lbl_1_bss_6BC[1].unk00, 0, arg0, arg1, arg2); + } +} + +void fn_1_5270(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_6BC[0].unk00, 1, arg0, arg1, arg2); + } + else { + fn_1_11B18(lbl_1_bss_6BC[0].unk00, 1, arg0, arg1, arg2); + } +} + +void fn_1_5304(s32 arg0) +{ + StructBss6BC *var_r31; + + var_r31 = &lbl_1_bss_6BC[1]; + var_r31->unk04 = arg0 + 1; +} + +void fn_1_532C(omObjData *arg0) +{ + StructBss6BC *temp_r31 = arg0->data; + Vec sp38[] = { { 480.0f, 0.0f, -1250.0f }, { 400.0f, 37.0f, -850.0f }, { 400.0f, 37.0f, -600.0f }, { 400.0f, 37.0f, -425.0f } }; + + if (arg0->work[0] == 0) { + return; + } + if (temp_r31->unk04 == 7) { + temp_r31->unk08 = temp_r31->unk04; + } + if (temp_r31->unk04 != 4 || temp_r31->unk08 <= 4) { + temp_r31->unk08 = temp_r31->unk04; + } + switch (temp_r31->unk08) { + case 1: + case 2: + case 3: + fn_1_11CE0(arg0, sp38[4 - temp_r31->unk08], 0.0f, 6.0f, 10.0f, 10.0f, 1); + temp_r31->unk00->trans.x = 400.0f; + break; + case 4: + fn_1_11CE0(arg0, sp38[0], 0.0f, 6.0f, 10.0f, 10.0f, 1); + temp_r31->unk00->trans.x = 400.0f; + if (temp_r31->unk18++ >= 60) { + temp_r31->unk08 = 5; + temp_r31->unk18 = 0; + } + break; + case 5: + fn_1_11CE0(arg0, sp38[0], 0.0f, 6.0f, 10.0f, 10.0f, 1); + if (temp_r31->unk18++ >= 60) { + temp_r31->unk08 = 6; + temp_r31->unk18 = 0; + } + break; + case 6: + fn_1_11B18(arg0, 0, 6, 10, 0); + break; + case 7: + fn_1_11CE0(arg0, sp38[3], -15.0f, 6.0f, 10.0f, 10.0f, 1); + break; + } +} + +void fn_1_5658(omObjData *arg0) +{ + fn_1_532C(arg0); +} + +void fn_1_5984(StructBss6BC *arg0) +{ + s32 var_r29; + omObjData *temp_r30; + + var_r29 = arg0->unk00->work[0]; + temp_r30 = arg0->unk00; + if (var_r29 != 0) { + omSetTra(temp_r30, 400.0f, 37.0f, -425.0f); + omSetRot(temp_r30, 0.0f, -15.0f, 0.0f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + } + else { + omSetTra(temp_r30, -400.0f, 37.0f, -425.0f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + fn_1_119A0(temp_r30, 1, 5, 1, 1); + } + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_5AD8(omObjData *arg0) +{ + StructBss6BC *temp_r29; + s32 temp_r30; + + temp_r30 = arg0->work[0]; + temp_r29 = &lbl_1_bss_6BC[temp_r30]; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 57)); + if (temp_r30 != 0) { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 58)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 63)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 64)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 65)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 66)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 67)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 68)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 69)); + arg0->motion[9] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 71)); + omSetTra(arg0, 400.0f, 37.0f, -425.0f); + omSetRot(arg0, 0.0f, -15.0f, 0.0f); + fn_1_119A0(arg0, 0, 0, 1, 1); + fn_1_164B0(lbl_1_bss_0, &temp_r29->unk24, arg0->model[0], "g007m0-skl_at"); + fn_1_15DC8(&temp_r29->unk24); + } + else { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 60)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 61)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 62)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 70)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 72)); + omSetTra(arg0, -400.0f, 37.0f, -425.0f); + fn_1_119A0(arg0, 0, 0, 1, 1); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 73)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M437, 74)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M437, 75)); + Hu3DModelHookSet(arg0->model[0], "g007m0-itemhook_r", arg0->model[1]); + Hu3DModelLayerSet(arg0->model[0], 2); + Hu3DModelLayerSet(arg0->model[1], 2); + fn_1_119A0(arg0, 1, 5, 1, 1); + } + Hu3DModelShadowSet(arg0->model[0]); + arg0->data = &lbl_1_bss_6BC[temp_r30]; + arg0->func = fn_1_5658; +} + +void fn_1_5FBC(void) +{ + StructBss1DC *temp_r31; + s32 sp8[4]; + s32 i; + + sp8[0] = GWPlayerCurrGet(); + for (i = 1; i < 4; i++) { + sp8[i] = sp8[i - 1] + 1; + if (sp8[i] >= 4) { + sp8[i] = 0; + } + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_1DC[i]; + temp_r31->unk2C = sp8[i]; + temp_r31->unk30 = GWPlayerCfg[temp_r31->unk2C].group; + temp_r31->unk34 = GWPlayerCfg[temp_r31->unk2C].iscom; + temp_r31->unk38 = GWPlayerCfg[temp_r31->unk2C].diff; + temp_r31->unk3C = GWPlayerCfg[temp_r31->unk2C].character; + temp_r31->unk40 = GWPlayerCfg[temp_r31->unk2C].pad_idx; + } +} + +void fn_1_610C(s32 arg0, s32 arg1) +{ + StructBss1DC *temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + temp_r31->unk04 = arg1; +} + +void fn_1_6134(omObjData *arg0) +{ + StructBss1DC *var_r30; + + var_r30 = arg0->data; + if (var_r30->unk04 != 0) { + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_6198(s32 arg0, s32 arg1) +{ + StructBss1DC *temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + temp_r31->unk08 = arg1; + fn_1_15DC8(&temp_r31->unk50); + fn_1_11B18(temp_r31->unk00, 0, 2, 10, 0); +} + +void fn_1_6200(omObjData *arg0) +{ + StructBss1DC *temp_r30; + HsfMaterial *var_r31; + HsfData *temp_r28; + char **temp_r27; + s32 var_r23; + s32 i, j; + ModelData *temp_r25; + HsfAttribute *temp_r24; + + temp_r30 = &lbl_1_bss_1DC[arg0->work[0]]; + if (temp_r30->unk08 != 1) { + return; + } + var_r23 = 1; + temp_r25 = &Hu3DData[arg0->model[0]]; + temp_r28 = temp_r25->hsfData; + var_r31 = temp_r28->material; + if (temp_r30->unk3C == 3) { + for (i = 0; i < temp_r25->hsfData->materialCnt; i++, var_r31++) { + if (i == 1 || i == 2) { + continue; + } + var_r31->color[0] *= temp_r30->unk44; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk44; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk44; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } + else { + temp_r27 = CharModelTexNameGet(temp_r30->unk3C, 2); + for (i = 0; i < temp_r28->materialCnt; i++, var_r31++) { + var_r23 = 1; + for (j = 0; j < var_r31->numAttrs; j++) { + temp_r24 = &temp_r28->attribute[var_r31->attrs[j]]; + if (strcmp(temp_r27[0], temp_r24->bitmap->name) == 0 || strcmp(temp_r27[1], temp_r24->bitmap->name) == 0) { + var_r23 = 0; + } + } + if (var_r23 == 0) { + continue; + } + var_r31->color[0] *= temp_r30->unk44; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk44; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk44; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } + temp_r30->unk44 -= 0.01; + if (temp_r30->unk44 < 0.0f) { + temp_r30->unk08 = 99; + temp_r30->unk44 = 0.0f; + } +} + +void fn_1_6580(s32 arg0, s32 arg1, s32 arg2) +{ + StructBss1DC *temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + if (temp_r31->unk0C == 0) { + temp_r31->unk0C = arg1; + temp_r31->unk10 = arg2; + temp_r31->unk28 = 0; + } + else if (temp_r31->unk0C == 2) { + temp_r31->unk10 = 0; + temp_r31->unk28 = 1; + } +} + +float lbl_1_data_188 = -1.0f; + +void fn_1_65E0(omObjData *arg0) +{ + Mtx sp60; + StructBss1DC *temp_r31; + StructBss1DC *var_r26; + StructBss1DC *temp_r27; + StructBss8FC *var_r28; + StructBss8FC *spC; + s32 var_r29; + + temp_r31 = arg0->data; + switch (temp_r31->unk0C) { + case 1: + temp_r31->unk0C = 2; + temp_r31->unk48 = -1.5f; + lbl_1_data_188 = -1.0f; + fn_1_119A0(arg0, 0, 5, 15, 0); + break; + case 2: + if (temp_r31->unk48 >= 1.7f) { + temp_r31->unk48 = 1.7f; + } + arg0->trans.y += temp_r31->unk48 * temp_r31->unk48 * (temp_r31->unk48 >= 0.0f ? -25.0f : 25.0f); + if (temp_r31->unk28 != 0 && arg0->trans.y >= 25.0f + temp_r31->unk4C && temp_r31->unk10 == 0) { + temp_r31->unk0C = 5; + temp_r31->unk48 = 0.0f; + lbl_1_data_188 = arg0->trans.y - temp_r31->unk4C; + fn_1_11B18(arg0, 0, 7, 15, 0); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->work[0]) { + var_r26 = &lbl_1_bss_1DC[var_r29]; + var_r26->unk00->work[2] = rand8() % 10; + } + } + } + if (((!(HuPadBtn[temp_r31->unk40] & 0x100) && temp_r31->unk10 == 0) || temp_r31->unk10 == 2) && temp_r31->unk48 < -0.8f) { + temp_r31->unk48 = -0.8f; + } + if (arg0->trans.y <= temp_r31->unk4C && temp_r31->unk48 > 0.0f) { + arg0->trans.y = temp_r31->unk4C; + temp_r31->unk0C = 4; + temp_r31->unk48 = 0.0f; + fn_1_11B18(arg0, 0, 6, 5, 0); + } + temp_r31->unk48 += 0.09f; + break; + case 4: + if (temp_r31->unk48++ >= 15.0f) { + temp_r31->unk0C = 0; + temp_r31->unk28 = 0; + fn_1_11B18(arg0, 0, 0, 15, 1); + } + break; + case 5: + if (fn_1_36B4() > 0.75f) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->work[0]) { + temp_r27 = &lbl_1_bss_1DC[var_r29]; + if (temp_r27->unk00->work[2]-- == 0) { + fn_1_11B18(temp_r27->unk00, 0, 11, 5, 0); + } + } + } + } + if (temp_r31->unk48++ >= 25.0f) { + temp_r31->unk0C = 6; + } + break; + case 6: + if (temp_r31->unk48 >= 1.7f) { + temp_r31->unk48 = 1.7f; + } + arg0->trans.y += temp_r31->unk48 * temp_r31->unk48 * (temp_r31->unk48 >= 0.0f ? -17.5f : 17.5f); + if (arg0->trans.y <= temp_r31->unk4C && temp_r31->unk48 > 0.0f) { + arg0->trans.y = temp_r31->unk4C; + temp_r31->unk0C = 7; + temp_r31->unk48 = 0.0f; + var_r28 = &lbl_1_bss_8FC; + if (lbl_1_data_188 <= 135.0f) { + fn_1_119A0(var_r28->unk00, 0, 2, 5, 0); + } + else if (lbl_1_data_188 <= 245.0f) { + fn_1_119A0(var_r28->unk00, 0, 1, 5, 0); + } + else { + fn_1_119A0(var_r28->unk00, 0, 0, 5, 0); + } + HuAudFXPlay(0x6F5); + omVibrate(temp_r31->unk2C, 12, 6, 6); + fn_1_11B18(arg0, 0, 8, 15, 0); + } + temp_r31->unk48 += 0.1f; + break; + case 7: + if (temp_r31->unk48++ >= 15.0f) { + spC = &lbl_1_bss_8FC; + if (lbl_1_data_188 <= 135.0f) { + fn_1_39C4(1.0f); + fn_1_3CB8(1.0f); + HuAudFXPlay(0x6F6); + } + else if (lbl_1_data_188 <= 245.0f) { + fn_1_39C4(2.0f); + fn_1_3CB8(2.0f); + HuAudFXPlay(0x6F7); + } + else { + fn_1_39C4(3.0f); + fn_1_3CB8(3.0f); + HuAudFXPlay(0x6F8); + } + fn_1_11B18(arg0, 0, 9, 15, 0); + temp_r31->unk48 = 0.0f; + temp_r31->unk0C = 4; + } + break; + } + if ((temp_r31->unk0C == 4 || temp_r31->unk0C == 7) && temp_r31->unk10 == 0) { + StructBss8FC *temp = &lbl_1_bss_8FC; + Hu3DModelObjMtxGet(temp->unk00->model[0], "m437a01-chara-point", sp60); + arg0->trans.y = sp60[1][3]; + } +} + +void fn_1_70F8(s32 arg0, s32 arg1) +{ + StructBss1DC *temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + temp_r31->unk14 = arg1; + temp_r31->unk24 = 15 - arg1 * 5; + temp_r31->unk28 = 0; +} + +void fn_1_7134(omObjData *arg0) +{ + StructBss1DC *temp_r31 = &lbl_1_bss_1DC[arg0->work[0]]; + Vec sp14[] = { { 0.0f, 0.0f, 0.0f }, { -1000.0f, 0.0f, 800.0f }, { -200.0f, 0.0f, 800.0f }, { 1000.0f, 0.0f, 800.0f } }; + + if (temp_r31->unk14 < 1) { + return; + } + if (temp_r31->unk24-- <= 0) { + fn_1_11B18(arg0, 0, 4, 15, 1); + temp_r31->unk28 = 1; + } + if (temp_r31->unk28 != 0) { + fn_1_11CE0(arg0, sp14[temp_r31->unk14], -1.0f, temp_r31->unk0C + 7.0f, 30.0f, 5.0f, 0); + } +} + +void fn_1_72CC(omObjData *arg0) +{ + fn_1_6134(arg0); + fn_1_6200(arg0); + fn_1_65E0(arg0); + fn_1_7134(arg0); +} + +void fn_1_74B0(StructBss1DC *arg0) +{ + s32 var_r29; + omObjData *temp_r30; + + var_r29 = arg0->unk00->work[0]; + temp_r30 = arg0->unk00; + omSetTra(temp_r30, var_r29 * -150 - (rand8() % 100) * 2, 0.0f, (rand8() % 100) * 2 + 250); + omSetRot(temp_r30, 0.0f, 180.0f, 0.0f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + fn_1_15DC8(&arg0->unk50); + fn_1_15CD0(&arg0->unk50, lbl_1_bss_8FC.unk00->model[0]); + arg0->unk44 = 1.0f; + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk1C = arg0->unk20 = arg0->unk24 = arg0->unk28 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14 = 0; +} + +void fn_1_7678(omObjData *arg0) +{ + StructBss1DC *temp_r30; + s32 temp_r29; + + temp_r29 = arg0->work[0]; + temp_r30 = &lbl_1_bss_1DC[temp_r29]; + arg0->model[0] = CharModelCreate(temp_r30->unk3C, 2); + arg0->motion[0] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[1] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[2] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 28)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, temp_r30->unk3C)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 8 + temp_r30->unk3C)); + arg0->motion[5] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 5)); + arg0->motion[6] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 6)); + arg0->motion[7] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 8)); + arg0->motion[8] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 10)); + arg0->motion[9] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 9)); + arg0->motion[10] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2)); + arg0->motion[11] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 78)); + arg0->motion[12] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 27)); + omSetTra(arg0, temp_r29 * -150 + (rand8() % 100) * 5, 0.0f, (rand8() % 100) * 5 + 250); + omSetRot(arg0, 0.0f, 180.0f, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + fn_1_119A0(arg0, 0, 0, 1, 1); + CharModelMotionDataClose(temp_r30->unk3C); + fn_1_1660C(lbl_1_bss_0, &temp_r30->unk50, arg0->model[0], temp_r30->unk3C); + fn_1_15DC8(&temp_r30->unk50); + temp_r30->unk04 = 1; + arg0->data = &lbl_1_bss_1DC[temp_r29]; + arg0->func = fn_1_72CC; +} + +void fn_1_79E0(void) +{ + lbl_1_bss_68.unk04 = 1; + lbl_1_bss_68.unk08 = 1; + lbl_1_bss_68.unk14 = 0; +} + +void fn_1_7A14(omObjData *arg0) +{ + Mtx sp8; + StructBss68 *temp_r31; + StructBss8D4 *var_r29; + StructBss6BC *var_r25; + s32 var_r24; + s32 i; + + temp_r31 = arg0->data; + var_r29 = &lbl_1_bss_8D4; + switch (temp_r31->unk04) { + case 1: + temp_r31->unk04 = 2; + for (i = 1; i < 7; i++) { + Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + temp_r31->unk24[i] = -1.0f + rand8() % 3; + temp_r31->unk44[i] = 0.0f; + temp_r31->unk64[i] = -(50.0f * (i - 1)); + temp_r31->unk84[i] = 0.0f; + temp_r31->unkA4[i] = 0.5f; + temp_r31->unkC4[i] = 0.0f; + } + fn_1_119A0(var_r29->unk00, 0, 3, 10, 0); + var_r25 = &lbl_1_bss_6BC[0]; + fn_1_119A0(var_r25->unk00, 0, 1, 60, 1); + fn_1_119A0(var_r25->unk00, 1, 6, 60, 1); + break; + case 2: + if (fn_1_11890(var_r29->unk00, 0, 3, 90, 1) != 0) { + temp_r31->unk04 = 3; + Hu3DMotionTimeSet(var_r29->unk00->model[0], 90.0f); + Hu3DMotionSpeedSet(var_r29->unk00->model[0], 0.0f); + HuAudCharVoicePlay(lbl_1_bss_1DC[lbl_1_bss_944.unk10].unk3C, 0x123); + HuAudFXPlay(0x6D5); + omVibrate(lbl_1_bss_1DC[lbl_1_bss_944.unk10].unk2C, 120, 12, 0); + } + break; + case 3: + Hu3DModelObjMtxGet(var_r29->unk00->model[0], "g000m0-itemhook_M", sp8); + var_r24 = lbl_1_bss_944.unk10; + fn_1_6198(var_r24, 1); + for (i = 1; i < 7; i++) { + if (temp_r31->unk08 == 1 || (temp_r31->unk08 == 0 && temp_r31->unk64[i] > 0.0f)) { + temp_r31->unk64[i] += 10.0f; + } + if (temp_r31->unk64[i] > 0.0f) { + temp_r31->unk84[i] += 0.1f; + temp_r31->unk24[i] += rand8() % 5 - 2; + temp_r31->unk44[i] -= rand8() % 5 - 2 + 2.5f; + if (temp_r31->unkC4[i] == 0.0f) { + fn_1_119A0(arg0, i, i, 1, 1); + } + if (temp_r31->unkC4[i] < 8.0f) { + temp_r31->unkA4[i] += 0.025f; + } + else if (temp_r31->unkC4[i] < 23.0f) { + temp_r31->unkA4[i] = 0.7f; + } + else if (temp_r31->unkC4[i] < 31.0f) { + temp_r31->unkA4[i] -= 0.1f; + if (temp_r31->unkA4[i] < 0.0f) { + temp_r31->unkA4[i] = 0.0f; + } + } + temp_r31->unkC4[i] += 1.0f; + } + Hu3DModelPosSet(arg0->model[i], sp8[0][3] + temp_r31->unk24[i], sp8[1][3] + temp_r31->unk44[i], sp8[2][3] + temp_r31->unk64[i]); + Hu3DModelScaleSet(arg0->model[i], 1.5f * temp_r31->unk84[i], 1.5f * temp_r31->unk84[i], 1.5f * temp_r31->unk84[i]); + Hu3DModelTPLvlSet(arg0->model[i], temp_r31->unkA4[i]); + if (temp_r31->unkC4[i] >= 31.0f) { + temp_r31->unk24[i] = 0.0f; + temp_r31->unk44[i] = 0.0f; + temp_r31->unk64[i] = 0.0f; + temp_r31->unk84[i] = 0.0f; + temp_r31->unkA4[i] = 0.5f; + temp_r31->unkC4[i] = 0.0f; + } + } + if (temp_r31->unk14++ == 120) { + temp_r31->unk08 = 0; + Hu3DMotionSpeedSet(var_r29->unk00->model[0], 1.0f); + } + else if (temp_r31->unk14 >= 180) { + temp_r31->unk04 = 4; + } + break; + case 4: + temp_r31->unk04 = 0; + fn_1_119A0(var_r29->unk00, 0, 0, 30, 1); + break; + } + if (temp_r31->unk14 >= 10 && temp_r31->unk14 <= 120) { + fn_1_298(6, 8.0f); + } +} + +void fn_1_82E0(omObjData *arg0) +{ + fn_1_7A14(arg0); +} + +void fn_1_8308(StructBss68 *arg0) +{ + omObjData *temp_r29; + s32 i; + + temp_r29 = arg0->unk00; + for (i = 1; i < 7; i++) { + Hu3DModelPosSet(temp_r29->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r29->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(temp_r29->model[i], 0.0f, 0.0f, 0.0f); + fn_1_119A0(temp_r29, i, i, 1, 2); + arg0->unk24[i] = 0.0f; + arg0->unk44[i] = 0.0f; + arg0->unk64[i] = 0.0f; + arg0->unk84[i] = 0.0f; + arg0->unkA4[i] = 0.0f; + arg0->unkC4[i] = 0.0f; + } + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; +} + +void fn_1_84C4(omObjData *arg0) +{ + s32 i; + + for (i = 1; i < 7; i++) { + if (i % 2 == 0) { + arg0->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 55)); + arg0->motion[i] = Hu3DMotionIDGet(arg0->model[i]); + } + else { + arg0->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 56)); + arg0->motion[i] = Hu3DMotionIDGet(arg0->model[i]); + } + Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + fn_1_119A0(arg0, i, i, 1, 2); + Hu3DModelLayerSet(arg0->model[i], 2); + } + arg0->data = &lbl_1_bss_68; + arg0->func = fn_1_82E0; +} + +void fn_1_8684(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = 1740.0f; + var_r31->unk2C = -10.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 300.0f; + fn_1_12E14(var_r31, 200.0f); +} + +void fn_1_8734(void) +{ + StructBss160 *var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 200.0f; + sp8.unk10 = -50.0f; + sp8.unk20 = 5.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 200.0f; + fn_1_15544(var_r31, &sp8, var_r31->unk40++, 30.0f, 5.0f); +} + +void fn_1_8824(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 200.0f; + var_r31->unk1C = -50.0f; + var_r31->unk2C = 5.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 200.0f; + fn_1_12E14(var_r31, 200.0f); +} + +void fn_1_88D4(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 45.0f); +} + +void fn_1_8984(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 150.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 30.0f); +} + +void fn_1_8A34(void) +{ + StructBss160 *var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 300.0f; + sp8.unk10 = 0.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 1200.0f; + fn_1_13658(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_8B24(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 150.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 20.0f); +} + +void fn_1_8BD4(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 20.0f); +} + +void fn_1_8C84(s32 arg0) +{ + StructBss160 *var_r23; + + var_r23 = &lbl_1_bss_160; + fn_1_12ABC(var_r23); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_8684); + break; + case 1: + fn_1_8A4(fn_1_8734); + break; + case 2: + fn_1_8A4(fn_1_8824); + break; + case 3: + fn_1_8A4(fn_1_88D4); + break; + case 4: + fn_1_8A4(fn_1_8984); + break; + case 5: + fn_1_8A4(fn_1_8A34); + break; + case 10: + fn_1_8A4(fn_1_8B24); + break; + case 11: + fn_1_8A4(fn_1_8BD4); + break; + } +} + +void fn_1_8DA4(void) +{ + float sp18[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp18, MAKE_MESSID(29, 0)); + fn_1_2A94(sp18, MAKE_MESSID(29, 1)); + var_r31 = fn_1_20F8((580.0f - sp18[0]) / 2, 80.0f, sp18[0], sp18[1], 2); + HuAudFXPlay(0x6D1); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 0)); + fn_1_280C(var_r31, 0); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 1)); + fn_1_280C(var_r31, 0); + fn_1_4BAC(0, 10, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_9320(void) +{ + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 4)); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 100.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4BAC(2, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 4)); + fn_1_280C(var_r31, REFRESH_RATE); + fn_1_2BAC(3); + fn_1_280C(var_r31, REFRESH_RATE); + fn_1_4BAC(0, 30, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_96D8(void) +{ + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 64)); + var_r31 = fn_1_20F8(550.0f - sp10[0], 340.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_51DC(4, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 64)); + fn_1_28F4(var_r31); + fn_1_51DC(0, 10, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_9B2C(s32 arg0) +{ + float sp10[2] = { 0.0f, 0.0f }; + s32 sp18[] = { MAKE_MESSID(29, 6), MAKE_MESSID(29, 66), MAKE_MESSID(29, 68), MAKE_MESSID(29, 70), MAKE_MESSID(29, 72), MAKE_MESSID(29, 74), + MAKE_MESSID(29, 76), -1 }; + s32 var_r31; + + if (sp18[arg0] == -1) { + return; + } + fn_1_2A94(sp10, sp18[arg0]); + var_r31 = fn_1_20F8(20.0f, 360.0f, sp10[0], sp10[1], 0); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + fn_1_5148(2, 10, 0, 1); + fn_1_5270(5, 10, 2, 1); + fn_1_2A10(var_r31, sp18[arg0]); + fn_1_280C(var_r31, 0); + fn_1_5148(0, 10, 1, 1); + fn_1_5270(5, 10, 1, 1); + fn_1_27A4(var_r31); +} + +void fn_1_9FA0(void) +{ + float sp10[2] = { 0.0f, 0.0f }; + s32 sp18[] = { MAKE_MESSID(29, 5), MAKE_MESSID(29, 65), MAKE_MESSID(29, 67), MAKE_MESSID(29, 69), MAKE_MESSID(29, 71), MAKE_MESSID(29, 73), + MAKE_MESSID(29, 75), MAKE_MESSID(29, 77) }; + s32 i; + s32 var_r30; + + lbl_1_bss_C = 0; + for (i = 0; i < 8; i++) { + fn_1_2A94(sp10, sp18[i]); + } + var_r30 = fn_1_20F8(550.0f - sp10[0], 340.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + for (i = 0; i < 8; i++) { + fn_1_51DC(4, 10, 0, 1); + fn_1_2A10(var_r30, sp18[i]); + fn_1_280C(var_r30, 0); + fn_1_51DC(0, 10, 1, 1); + fn_1_9B2C(i); + } + fn_1_27A4(var_r30); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_A440(void) +{ + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 78)); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 80.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 78)); + fn_1_280C(var_r31, 0); + fn_1_4BAC(0, 10, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_A860(void) { } + +s32 fn_1_A864(void) +{ + if (fn_1_11854(&lbl_1_bss_50, 0) == 80) { + fn_1_8C84(1); + lbl_1_bss_968.unk00 = HuAudSeqPlay(6); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 115) { + fn_1_8C84(2); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 180) { + fn_1_8C84(3); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 0) { + fn_1_2BAC(2); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 150) { + fn_1_2BAC(1); + } + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_A9E8(void) +{ + HuPrcChildCreate(fn_1_8DA4, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_AA24(void) +{ + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AA80(void) +{ + HuPrcChildCreate(fn_1_9320, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_AABC(void) +{ + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AB18(void) +{ + fn_1_8C84(10); +} + +s32 fn_1_AB68(void) +{ + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_ABB0(void) +{ + HuPrcChildCreate(fn_1_96D8, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_ABEC(void) +{ + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + if (lbl_1_bss_10 != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + else { + return fn_1_117C0(&lbl_1_bss_50, 6); + } + } + return 0; +} + +void fn_1_AC70(void) +{ + fn_1_4BAC(4, 60, 1, 1); + HuPrcChildCreate(fn_1_9FA0, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_ACCC(void) +{ + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AD28(void) +{ + fn_1_8C84(11); + fn_1_4BAC(0, 60, 1, 0); +} + +s32 fn_1_AD98(void) +{ + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_ADE0(void) +{ + HuPrcChildCreate(fn_1_A440, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_AE1C(void) +{ + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AE78(void) +{ + StructBss6BC *var_r30; + StructBss1DC *sp8; + StructBss8FC *var_r29; + s32 i; + + fn_1_8C84(5); + for (i = 0; i < 4; i++) { + fn_1_610C(i, 1); + } + var_r30 = &lbl_1_bss_6BC[1]; + sp8 = &lbl_1_bss_1DC[i]; + var_r29 = &lbl_1_bss_8FC; + fn_1_15DC8(&var_r30->unk24); + fn_1_15CD0(&var_r30->unk24, var_r29->unk00->model[2]); + HuAudSeqFadeOut(lbl_1_bss_968.unk00, 1000); +} + +s32 fn_1_AF4C(void) +{ + Vec sp20[] = { { -200.0f, 0.0f, -250.0f }, { -340.0f, 0.0f, -250.0f }, { -490.0f, 0.0f, -250.0f }, { -640.0f, 0.0f, -250.0f } }; + s32 i; + + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1DC[i].unk3C == 7) { + fn_1_11CE0(lbl_1_bss_1DC[i].unk00, sp20[i], 90.0f, 9.0f, 30.0f, 15.0f, 3); + } + else { + fn_1_11CE0(lbl_1_bss_1DC[i].unk00, sp20[i], 90.0f, 9.0f, 30.0f, 15.0f, 1); + } + } + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + fn_1_4BAC(4, 60, 1, 1); + for (i = 0; i < 4; i++) { + fn_1_11B18(lbl_1_bss_1DC[i].unk00, 0, 0, 10, 1); + } + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +StructData204 lbl_1_data_204[] = { { fn_1_A860, fn_1_A864, 300 }, { fn_1_A9E8, fn_1_AA24, 60 }, { fn_1_AA80, fn_1_AABC, 60 }, + { fn_1_AB18, fn_1_AB68, 45 }, { fn_1_ABB0, fn_1_ABEC, 60 }, { fn_1_AC70, fn_1_ACCC, 60 }, { fn_1_AD28, fn_1_AD98, 45 }, + { fn_1_ADE0, fn_1_AE1C, 60 }, { fn_1_AE78, fn_1_AF4C, 120 }, { NULL, NULL, -1 } }; + +void fn_1_B194(void) +{ + fn_1_11668(&lbl_1_bss_50, lbl_1_data_204); +} + +s32 fn_1_B1C4(void) +{ + if (lbl_1_bss_50.unk08 != NULL) { + lbl_1_bss_50.unk08(); + lbl_1_bss_50.unk08 = NULL; + } + if (lbl_1_bss_50.unk0C != NULL) { + return lbl_1_bss_50.unk0C(); + } + return 0; +} + +float fn_1_B250(void) +{ + return lbl_1_bss_15C - lbl_1_bss_158; +} + +void fn_1_B270(void) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + if (fn_1_B250() <= 3.0f) { + temp_r31->unk00->work[1] = fn_1_B250() - 1.0f; + if (temp_r31->unk00->work[1] == 0) { + temp_r31->unk00->work[1] = rand8() % 3 + 1; + } + } + else { + temp_r31->unk00->work[1] = rand8() % 3 + 1; + } + temp_r31->unk00->work[2] = 0; + temp_r31->unk00->work[3] = rand8() % 60 + 60; +} + +s32 fn_1_B3F0(s32 arg0) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r31; + float temp_f31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + temp_f31 = temp_r31->unk00->trans.y - temp_r31->unk4C; + switch (arg0) { + case 1: + if (temp_f31 > 80.0f && temp_f31 <= 135.0f) { + return 1; + } + break; + case 2: + if (temp_f31 > 190.0f && temp_f31 <= 245.0f) { + return 1; + } + break; + case 3: + if (temp_f31 > 300.0f) { + return 1; + } + break; + } + return 0; +} + +float fn_1_B4F4(s32 arg0, s32 arg1) +{ + StructBss1DC *temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + if (temp_r31->unk34 != 0) { + if (arg1 > temp_r31->unk00->work[3]) { + if (temp_r31->unk00->work[2] == 0) { + temp_r31->unk00->work[2] = 1; + fn_1_6580(arg0, 1, 1); + } + else if (fn_1_B3F0(temp_r31->unk00->work[1]) != 0) { + fn_1_6580(arg0, 1, 0); + } + } + } + else if ((HuPadBtnDown[temp_r31->unk40] & 0x100) || ((HuPadBtnDown[temp_r31->unk40] & 0x40) && temp_r31->unk0C == 2)) { + fn_1_6580(arg0, 1, 0); + } + return temp_r31->unk0C; +} + +void fn_1_B7E0(void) +{ + StructBss160 *var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 300.0f; + sp8.unk10 = 0.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 1200.0f; + fn_1_13658(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_B8D0(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -350.0f + 450.0f * fn_1_36B4(); + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 10.0f); +} + +void fn_1_BC18(void) +{ + StructBss160 *var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -50.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 5.0f); +} + +void fn_1_BCC8(void) +{ + StructBss160 *var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 225.0f; + sp8.unk10 = -800.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 1200.0f; + fn_1_15544(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_BDB8(s32 arg0) +{ + StructBss160 *var_r27; + + var_r27 = &lbl_1_bss_160; + fn_1_12ABC(var_r27); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_B7E0); + break; + case 1: + fn_1_8A4(fn_1_B8D0); + break; + case 2: + fn_1_8A4(fn_1_BC18); + break; + case 3: + fn_1_8A4(fn_1_BCC8); + break; + } +} + +void fn_1_BE80(void) +{ + s32 sp1C[] = { MAKE_MESSID(29, 79), MAKE_MESSID(29, 80), MAKE_MESSID(29, 81), MAKE_MESSID(29, 82) }; + float sp14[2] = { 0.0f, 0.0f }; + s32 temp_r27; + s32 var_r30; + + temp_r27 = rand8() % 4; + lbl_1_bss_C = 0; + fn_1_2A94(sp14, sp1C[temp_r27]); + var_r30 = fn_1_20F8((580.0f - sp14[0]) / 2, 100.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4928(1); + fn_1_2A10(var_r30, sp1C[temp_r27]); + fn_1_280C(var_r30, REFRESH_RATE); + lbl_1_bss_C = 1; + fn_1_280C(var_r30, REFRESH_RATE); + fn_1_27A4(var_r30); + HuPrcEnd(); +} + +void fn_1_C248(void) +{ + s32 sp1C[] = { MAKE_MESSID(29, 83), MAKE_MESSID(29, 84), MAKE_MESSID(29, 85) }; + float sp14[2] = { 0.0f, 0.0f }; + s32 temp_r27; + s32 var_r31; + + temp_r27 = rand8() % 3; + lbl_1_bss_C = 0; + fn_1_2A94(sp14, sp1C[temp_r27]); + var_r31 = fn_1_20F8((580.0f - sp14[0]) / 2, 100.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4928(1); + fn_1_2A10(var_r31, sp1C[temp_r27]); + fn_1_280C(var_r31, REFRESH_RATE); + lbl_1_bss_C = 1; + fn_1_280C(var_r31, REFRESH_RATE); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_C610(void) +{ + float sp14[2] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp14, MAKE_MESSID(29, 86)); + var_r31 = fn_1_20F8((580.0f - sp14[0]) / 2, 80.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4AF8(4); + lbl_1_bss_C = 1; + fn_1_2A10(var_r31, MAKE_MESSID(29, 86)); + fn_1_280C(var_r31, 30); + fn_1_27A4(var_r31); + lbl_1_bss_C = 2; + HuPrcEnd(); +} + +void fn_1_C9C4(void) +{ + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + fn_1_2A94(sp10, MAKE_MESSID(29, 87)); + var_r31 = fn_1_20F8(580.0f - sp10[0] - 40.0f, 200.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_51DC(9, 10, 0, 0); + fn_1_2A10(var_r31, MAKE_MESSID(29, 87)); + fn_1_280C(var_r31, 30); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_CD20(void) +{ + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + fn_1_2A94(sp10, MAKE_MESSID(29, 88)); + var_r31 = fn_1_20F8(40.0f, 200.0f, sp10[0], sp10[1], 0); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + fn_1_5148(4, 10, 0, 0); + fn_1_2A10(var_r31, MAKE_MESSID(29, 88)); + fn_1_280C(var_r31, 30); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_D03C(void) +{ + s32 sp18[] = { MAKE_MESSID(29, 89), MAKE_MESSID(29, 90), MAKE_MESSID(29, 91) }; + float sp10[2] = { 0.0f, 0.0f }; + s32 temp_r28; + s32 var_r31; + + temp_r28 = rand8() % 3; + fn_1_2A94(sp10, sp18[temp_r28]); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 100.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D6); + fn_1_2A10(var_r31, sp18[temp_r28]); + fn_1_280C(var_r31, 2 * REFRESH_RATE); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_D3C0(void) +{ + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 92)); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 80.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D6); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 92)); + fn_1_280C(var_r31, 2 * REFRESH_RATE); + fn_1_4BAC(0, 30, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_D754(void) +{ + Mtx sp8; + s32 var_r26; + s32 i; + StructBss944 *var_r29; + StructBss8FC *var_r24; + StructBss1DC *temp_r27; + StructBss1DC *temp_r25; + StructBss1DC *var_r23; + + var_r29 = &lbl_1_bss_944; + var_r24 = &lbl_1_bss_8FC; + temp_r27 = &lbl_1_bss_1DC[var_r29->unk10]; + for (i = 0; i < 4; i++) { + if (i != var_r29->unk10) { + temp_r25 = &lbl_1_bss_1DC[i]; + fn_1_15DC8(&temp_r25->unk50); + fn_1_15CD0(&temp_r25->unk50, temp_r27->unk00->model[0]); + temp_r25->unk50.unkE4->trans.z = 10.0f; + } + else { + fn_1_15DC8(&temp_r27->unk50); + } + } + if (var_r29->unk20 != 0) { + lbl_1_bss_38.unk14 = 180; + var_r26 = var_r29->unk10 - 1; + if (var_r26 < 0) { + var_r26 = 3; + } + var_r23 = &lbl_1_bss_1DC[var_r26]; + var_r23->unk4C = 0.0f; + fn_1_6580(var_r26, 1, 2); + } + Hu3DModelObjMtxGet(var_r24->unk00->model[0], "m437a01-chara-point", sp8); + temp_r27->unk4C = sp8[1][3]; + fn_1_6580(var_r29->unk10, 1, 1); +} + +s32 fn_1_D930(void) +{ + s32 var_r25 = 4; + StructBss944 *var_r31 = &lbl_1_bss_944; + Vec sp5C[] = { { 5.0f, 0.0f, -250.0f }, { -175.0f, 0.0f, -250.0f }, { -325.0f, 0.0f, -250.0f }, { -490.0f, 0.0f, -250.0f } }; + StructBss1DC *temp_r27; + StructBss1DC *temp_r30; + s32 var_r28; + s32 var_r26; + s32 i; + + var_r28 = var_r31->unk10; + if (var_r31->unk20 != 0) { + var_r25 = 3; + } + for (i = 0; i < var_r25; i++) { + temp_r27 = &lbl_1_bss_1DC[var_r28]; + if (i == 0) { + fn_1_11CE0(temp_r27->unk00, sp5C[i], 0.0f, 4.5f, 10.0f, 5.0f, 0); + } + else if (fn_1_11854(&lbl_1_bss_38, 0) >= i * 5 + 10) { + fn_1_11CE0(temp_r27->unk00, sp5C[i], 90.0f, 9.0f, 30.0f, 15.0f, 2); + } + var_r28++; + if (var_r28 >= 4) { + var_r28 = 0; + } + } + if (var_r31->unk20 != 0) { + Vec sp44[] = { { 0.0f, 0.0f, -50.0f }, { -510.0f, 0.0f, -250.0f } }; + + var_r26 = var_r31->unk10 - 1; + if (var_r26 < 0) { + var_r26 = 3; + } + temp_r30 = &lbl_1_bss_1DC[var_r26]; + if (fn_1_11854(&lbl_1_bss_38, 0) <= 60) { + fn_1_11CE0(temp_r30->unk00, sp44[0], -1.0f, 9.0f, 10.0f, 15.0f, 0); + } + else if (temp_r30->unk3C == 7) { + fn_1_11CE0(temp_r30->unk00, sp44[1], 90.0f, 9.0f, 30.0f, 15.0f, 3); + } + else { + fn_1_11CE0(temp_r30->unk00, sp44[1], 90.0f, 9.0f, 30.0f, 15.0f, 1); + } + } + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + var_r31->unk20 = 1; + return fn_1_116C4(&lbl_1_bss_38); + } +} + +void fn_1_DCEC(void) +{ + fn_1_B270(); + fn_1_BDB8(1); + fn_1_1184(5); +} + +s32 fn_1_DEC4(void) +{ + StructBss944 *var_r24; + + var_r24 = &lbl_1_bss_944; + fn_1_11854(&lbl_1_bss_38, 1); + if (fn_1_11854(&lbl_1_bss_38, 0) <= 10) { + return 0; + } + if (fn_1_11BC() != 0) { + return fn_1_117C0(&lbl_1_bss_38, 8); + } + if (fn_1_B4F4(var_r24->unk10, fn_1_11854(&lbl_1_bss_38, 0)) == 5.0f) { + fn_1_11E0(); + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_E2A8(void) +{ + if (fn_1_36B4() < 0.75f) { + lbl_1_bss_38.unk14 = 60; + } + else { + lbl_1_bss_38.unk14 = 120; + } +} + +s32 fn_1_E598(void) +{ + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + if (fn_1_3990()) { + return fn_1_117C0(&lbl_1_bss_38, 5); + } + else { + return fn_1_116C4(&lbl_1_bss_38); + } + } + return 0; +} + +void fn_1_E634(void) +{ + if (fn_1_36B4() < 0.75f) { + HuPrcChildCreate(fn_1_BE80, 100, 0x2000, 0, HuPrcCurrentGet()); + } + else { + HuPrcChildCreate(fn_1_C248, 100, 0x2000, 0, HuPrcCurrentGet()); + } +} + +s32 fn_1_E944(void) +{ + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_E9A0(void) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r29; + s32 i; + + var_r30 = &lbl_1_bss_944; + temp_r29 = &lbl_1_bss_1DC[var_r30->unk10]; + fn_1_BDB8(0); + for (i = 0; i < 4; i++) { + if (i != var_r30->unk10) { + StructBss1DC *var_r28 = &lbl_1_bss_1DC[i]; + + fn_1_15DC8(&temp_r29->unk50); + fn_1_15CD0(&temp_r29->unk50, var_r28->unk00->model[0]); + } + } + for (i = 0; i < 4; i++) { + if (i != temp_r29->unk00->work[0]) { + StructBss1DC *var_r27 = &lbl_1_bss_1DC[i]; + + fn_1_11B18(var_r27->unk00, 0, 0, 15, 0); + } + } +} + +s32 fn_1_EAA4(void) +{ + StructBss944 *var_r30; + StructBss1DC *sp8; + + var_r30 = &lbl_1_bss_944; + sp8 = &lbl_1_bss_1DC[var_r30->unk10]; + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + var_r30->unk10++; + if (var_r30->unk10 >= 4) { + var_r30->unk10 = 0; + } + return fn_1_117C0(&lbl_1_bss_38, 0); + } + return 0; +} + +void fn_1_EB38(void) +{ + StructBss8D4 *sp8; + StructBss6BC *var_r31; + + lbl_1_bss_8D4.unk08 = 1; + var_r31 = &lbl_1_bss_6BC[1]; + var_r31->unk04 = 0; + var_r31->unk08 = 0; + var_r31->unk14 = 0; + lbl_1_bss_C = 0; + fn_1_3B50(); + HuPrcChildCreate(fn_1_C610, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_C9C4, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_CD20, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_EC10(void) +{ + StructBss1DC *var_r29; + StructBss8D4 *var_r31; + s32 i; + + if (lbl_1_bss_C == 1) { + lbl_1_bss_C = 0; + for (i = 0; i < 4; i++) { + var_r29 = &lbl_1_bss_1DC[i]; + fn_1_119A0(var_r29->unk00, 0, 12, 1, 0); + } + } + var_r31 = &lbl_1_bss_8D4; + if (var_r31->unk00->motion[8] == Hu3DMotionIDGet(var_r31->unk00->model[0]) && Hu3DMotionTimeGet(var_r31->unk00->model[0]) >= 5.0f) { + Hu3DMotionTimeSet(var_r31->unk00->model[0], 5.0f); + Hu3DMotionSpeedSet(var_r31->unk00->model[0], 0.0f); + fn_1_5148(0, 30, 1, 0); + fn_1_51DC(0, 30, 1, 0); + fn_1_5270(5, 10, 1, 1); + } + if (lbl_1_bss_C == 2 && fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_EDD4(void) +{ + StructBss944 *var_r30; + StructBss8D4 *var_r29; + StructBss1DC *temp_r31; + + var_r30 = &lbl_1_bss_944; + var_r29 = &lbl_1_bss_8D4; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + fn_1_4BAC(0, 60, 1, 1); + Hu3DMotionSpeedSet(var_r29->unk00->model[0], 1.0f); + temp_r31->unk00->rot.y = 0.0f; + temp_r31->unk1C = 0; + fn_1_BDB8(3); +} + +s32 fn_1_EEA0(void) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + if (temp_r31->unk1C++ == 0) { + fn_1_11B18(temp_r31->unk00, 0, 10, 30, 1); + } + else if (temp_r31->unk1C > 0) { + temp_r31->unk00->rot.y = fn_1_11348(0.0f, 180.0f, temp_r31->unk1C, 30.0f); + if (temp_r31->unk1C >= 30) { + fn_1_11B18(temp_r31->unk00, 0, 0, 30, 1); + } + } + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_EFCC(void) +{ + StructBss944 *var_r28; + s32 var_r29; + s32 i; + + fn_1_79E0(); + var_r28 = &lbl_1_bss_944; + var_r29 = var_r28->unk10; + for (i = 0; i < 4; i++) { + if (i >= 1) { + fn_1_70F8(var_r29, i); + } + var_r29++; + if (var_r29 >= 4) { + var_r29 = 0; + } + } + HuPrcChildCreate(fn_1_D03C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F0B8(void) +{ + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return 1; + } + return 0; +} + +void fn_1_F0F8(void) +{ + lbl_1_bss_8D4.unk08 = 1; + fn_1_4BAC(0, 60, 1, 1); +} + +s32 fn_1_F144(void) +{ + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_F18C(void) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + HuPrcChildCreate(fn_1_D3C0, 100, 0x2000, 0, HuPrcCurrentGet()); + temp_r31->unk00->rot.y = 0.0f; + temp_r31->unk1C = 0; + fn_1_5148(0, 10, 1, 0); + fn_1_51DC(0, 10, 1, 0); + fn_1_5270(5, 10, 1, 1); + fn_1_BDB8(3); +} + +s32 fn_1_F294(void) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + if (temp_r31->unk1C++ == 60) { + fn_1_11B18(temp_r31->unk00, 0, 10, 30, 1); + } + else if (temp_r31->unk1C > 60) { + temp_r31->unk00->rot.y = fn_1_11348(0.0f, 180.0f, temp_r31->unk1C - 60, 30.0f); + if (temp_r31->unk1C >= 90) { + fn_1_11B18(temp_r31->unk00, 0, 0, 30, 1); + } + } + if (lbl_1_bss_C != 0 && (fn_1_11854(&lbl_1_bss_38, 1) != 0)) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_F3D8(void) +{ + StructBss944 *var_r28; + s32 var_r29; + s32 i; + + fn_1_79E0(); + var_r28 = &lbl_1_bss_944; + var_r29 = var_r28->unk10; + for (i = 0; i < 4; i++) { + if (i >= 1) { + fn_1_70F8(var_r29, i); + } + var_r29++; + if (var_r29 >= 4) { + var_r29 = 0; + } + } +} + +s32 fn_1_F494(void) +{ + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return 1; + } + return 0; +} + +StructData204 lbl_1_data_27C[] = { { fn_1_D754, fn_1_D930, 60 }, { fn_1_DCEC, fn_1_DEC4, 60 }, { fn_1_E2A8, fn_1_E598, 60 }, + { fn_1_E634, fn_1_E944, 10 }, { fn_1_E9A0, fn_1_EAA4, 30 }, { fn_1_EB38, fn_1_EC10, 60 }, { fn_1_EDD4, fn_1_EEA0, 60 }, + { fn_1_EFCC, fn_1_F0B8, 90 }, { fn_1_F0F8, fn_1_F144, 60 }, { fn_1_F18C, fn_1_F294, 60 }, { fn_1_F3D8, fn_1_F494, 90 }, { NULL, NULL, -1 } }; + +void fn_1_F4D4(void) +{ + fn_1_11668(&lbl_1_bss_38, lbl_1_data_27C); +} + +s32 fn_1_F504(void) +{ + if (lbl_1_bss_38.unk08 != NULL) { + lbl_1_bss_38.unk08(); + lbl_1_bss_38.unk08 = NULL; + } + if (lbl_1_bss_38.unk0C != NULL) { + return lbl_1_bss_38.unk0C(); + } + return 0; +} + +void fn_1_F590(void) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + var_r30->unk1C = 0; + lbl_1_data_A0 = temp_r31->unk00->model[0]; + lbl_1_data_A4 = temp_r31->unk00->motion[3]; + lbl_1_data_A8 = temp_r31->unk3C; + HuPrcChildCreate(fn_1_0, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F640(void) +{ + StructBss944 *var_r31; + StructBss1DC *temp_r30; + + var_r31 = &lbl_1_bss_944; + temp_r30 = &lbl_1_bss_1DC[var_r31->unk10]; + if (fn_1_11854(&lbl_1_bss_20, 0) == 120) { + fn_1_119A0(temp_r30->unk00, 0, 3, 30, 0); + HuAudSStreamPlay(3); + } + if (fn_1_11854(&lbl_1_bss_20, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_20); + } + return 0; +} + +StructData204 lbl_1_data_30C[] = { { fn_1_F590, fn_1_F640, 360 }, { NULL, NULL, -1 } }; + +void fn_1_F6EC(void) +{ + fn_1_11668(&lbl_1_bss_20, lbl_1_data_30C); +} + +s32 fn_1_F71C(void) +{ + if (lbl_1_bss_20.unk08 != NULL) { + lbl_1_bss_20.unk08(); + lbl_1_bss_20.unk08 = NULL; + } + if (lbl_1_bss_20.unk0C != NULL) { + return lbl_1_bss_20.unk0C(); + } + return 0; +} + +void fn_1_F7A8(omObjData *arg0) +{ + StructBss944 *var_r30; + StructBss1DC *temp_r29; + s32 i; + + if (WipeStatGet() == 0) { + HuAudFadeOut(1); + CharModelKill(-1); + MGSeqKillAll(); + var_r30 = &lbl_1_bss_944; + temp_r29 = &lbl_1_bss_1DC[var_r30->unk10]; + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(i, 0); + } + GWPlayerCoinWinSet(temp_r29->unk2C, 1); + omOvlReturnEx(1, 1); + arg0->func = NULL; + } +} + +s32 fn_1_F89C(void) +{ + return omSysExitReq; +} + +void fn_1_F8AC(void) +{ + StructBss944 *var_r29; + s32 i; + + fn_1_3260(&lbl_1_bss_920); + fn_1_4538(&lbl_1_bss_8FC); + fn_1_4E00(&lbl_1_bss_8D4); + for (i = 0; i < 2; i++) { + fn_1_5984(&lbl_1_bss_6BC[i]); + } + for (i = 0; i < 4; i++) { + fn_1_74B0(&lbl_1_bss_1DC[i]); + } + fn_1_8308(&lbl_1_bss_68); + var_r29 = &lbl_1_bss_944; + var_r29->unk00 = var_r29->unk04 = var_r29->unk08 = var_r29->unk0C = 0; + var_r29->unk10 = var_r29->unk14 = var_r29->unk18 = var_r29->unk1C = 0; + fn_1_B194(); + fn_1_F4D4(); + fn_1_F6EC(); + fn_1_8C84(0); + HuAudFXPlay(0x6D7); +} + +void fn_1_1043C(omObjData *arg0) +{ + StructBss920 *var_r30; + + switch (lbl_1_bss_18) { + case 0: + fn_1_F8AC(); + lbl_1_bss_18++; + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_18++; + } + break; + case 2: + if (fn_1_B1C4() != 0) { + lbl_1_bss_18++; + } + break; + case 3: + lbl_1_bss_1C = MGSeqStartCreate(); + lbl_1_bss_18++; + lbl_1_bss_968.unk04 = -1; + break; + case 4: + if ((MGSeqStatGet(lbl_1_bss_1C) & 0x10) && lbl_1_bss_968.unk04 == -1) { + lbl_1_bss_968.unk04 = HuAudSeqPlay(0x4D); + } + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18++; + } + break; + case 5: + if (fn_1_F504() != 0) { + lbl_1_bss_18++; + } + break; + case 6: + lbl_1_bss_1C = MGSeqFinishCreate(); + lbl_1_bss_18++; + HuAudSeqPauseAll(0); + HuAudSeqAllFadeOut(0xFA); + break; + case 7: + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18++; + } + break; + case 8: + var_r30 = &lbl_1_bss_920; + var_r30->unk04 = 999; + if (fn_1_F71C() != 0) { + lbl_1_bss_18++; + } + break; + case 9: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_F7A8; + break; + case 10: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_F7A8; + break; + } + if (omSysExitReq != 0) { + HuAudSeqAllFadeOut(0xFA); + lbl_1_bss_18 = 10; + } +} + +void fn_1_108A4(omObjData *arg0) +{ + s32 i; + + lbl_1_bss_920.unk00 = omAddObjEx(lbl_1_bss_0, 0x100, 16, 16, -1, fn_1_3410); + lbl_1_bss_8FC.unk00 = omAddObjEx(lbl_1_bss_0, 0x200, 16, 16, -1, fn_1_46C0); + lbl_1_bss_8D4.unk00 = omAddObjEx(lbl_1_bss_0, 0x300, 16, 16, -1, fn_1_4EE0); + for (i = 0; i < 2; i++) { + lbl_1_bss_6BC[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x400, 16, 16, -1, fn_1_5AD8); + lbl_1_bss_6BC[i].unk00->work[0] = i; + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1DC[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x500, 16, 16, -1, fn_1_7678); + lbl_1_bss_1DC[i].unk00->work[0] = i; + } + lbl_1_bss_68.unk00 = omAddObjEx(lbl_1_bss_0, 0x600, 16, 16, -1, fn_1_84C4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_1043C; +} + +#include "src/REL/executor.c" + +void fn_1_10B30(void) +{ + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + omGameSysInit(lbl_1_bss_0); + fn_1_1A8(); + fn_1_F8C(); + fn_1_10C0(); + fn_1_13E8(); + fn_1_1A90(); + fn_1_5FBC(); + omAddObjEx(lbl_1_bss_0, 0x1000, 0, 0, -1, fn_1_108A4); +} + +void ObjectSetup(void) +{ + fn_1_10B30(); +} diff --git a/src/REL/m437Dll/sequence.c b/src/REL/m437Dll/sequence.c new file mode 100755 index 00000000..9159a819 --- /dev/null +++ b/src/REL/m437Dll/sequence.c @@ -0,0 +1,586 @@ +#include "REL/m437Dll.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "ext_math.h" +#include "string.h" + +void fn_1_11618(StructBss50* arg0); +s32 fn_1_1174C(StructBss50* arg0); +void fn_1_12494(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8); +void fn_1_12958(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_129B8(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_12A1C(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_12A80(StructBss160* arg0); +void fn_1_12B00(StructBss160* arg0, StructBss160* arg1, float arg2); +void fn_1_13128(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_133A4(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_13B88(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_13FDC(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_14468(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4); +void fn_1_14B84(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_15048(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_15D3C(StructFn15CD0* arg0, s32 arg1); +void fn_1_15DA4(StructFn15CD0* arg0, s32 arg1); +void fn_1_15DB4(StructFn15CD0* arg0); +void fn_1_15DC0(StructFn15CD0* arg0, s32 arg1); +float fn_1_15E10(s32 arg0, s32 arg1, s32 arg2); +float fn_1_16154(s32 arg0, s32 arg1); +float fn_1_162E4(s32 arg0, float arg1, float arg2); +void fn_1_16348(omObjData* arg0); +void fn_1_1634C(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3, s32 arg4, s32 arg5); + +const char* lbl_1_data_3D0[] = { + "c000m1-ske_head", + "c001m1-ske_head", + "c002m1-ske_head", + "c003m1-ske_head", + "c004m1-ske_head", + "c005m1-ske_head", + "c006m1-ske_head", + "c007m1-ske_head" +}; + +s32 lbl_1_data_3F0[][2] = { + { 0x100, 1 }, + { 0x100, 1 }, + { 0x80, 0 }, + { 0x80, 0 }, + { 0x80, 0 }, + { 0x100, 1 }, + { 0x80, 0 }, + { 0x80, 0 } +}; + +// Similar to mgmodedll/main.c::fn_1_240E4 (identical in behavior) +float fn_1_11348(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_11370(float arg0, float arg1, float arg2) { + if (arg2 <= 1.0f) { + return arg1; + } + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +// Identical to mgmodedll/main.c::fn_1_24204 +float fn_1_113B0(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +// Identical to mgmodedll/main.c::fn_1_242CC +float fn_1_11478(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +// Identical to mgmodedll/main.c::fn_1_2412C +float fn_1_11540(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +void fn_1_11618(StructBss50* arg0) { + arg0->unk10 = 0; + arg0->unk14 = arg0->unk04[arg0->unk00].unk08; + arg0->unk08 = arg0->unk04[arg0->unk00].unk00; + arg0->unk0C = arg0->unk04[arg0->unk00].unk04; +} + +void fn_1_11668(StructBss50* arg0, StructData204* arg1) { + arg0->unk00 = 0; + arg0->unk04 = arg1; + fn_1_11618(arg0); +} + +s32 fn_1_116C4(StructBss50* arg0) { + arg0->unk00++; + fn_1_11618(arg0); + if (arg0->unk08 == NULL && arg0->unk0C == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_1174C(StructBss50* arg0) { + arg0->unk00--; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_11618(arg0); + return 0; +} + +s32 fn_1_117C0(StructBss50* arg0, s32 arg1) { + arg0->unk00 = arg1; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_11618(arg0); + if (arg0->unk08 == NULL && arg0->unk0C == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_11854(StructBss50* arg0, s32 arg1) { + if (arg1 != 0) { + arg0->unk10 += arg1; + if (arg0->unk10 >= arg0->unk14) { + return 1; + } + } else { + return arg0->unk10; + } + return 0; +} + +s32 fn_1_11890(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[0])) { + if (arg4 != 0) { + if (Hu3DMotionTimeGet(arg0->model[arg1]) >= arg3) { + return 1; + } + } else if (Hu3DMotionTimeGet(arg0->model[arg1]) <= arg3) { + return 1; + } + } + return 0; +} + +void fn_1_119A0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_11B18(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) && arg0->motion[arg2] != Hu3DMotionShiftIDGet(arg0->model[arg1])) { + fn_1_119A0(arg0, arg1, arg2, arg3, arg4); + } +} + +s32 fn_1_11CE0(omObjData* arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6) { + float var_f31; + float var_f30; + float var_f26; + float var_f27; + + var_f31 = arg1.x - arg0->trans.x; + var_f30 = arg0->trans.z - arg1.z; + var_f26 = 90.0 + atan2d(var_f30, var_f31); + var_f27 = sqrtf(var_f31 * var_f31 + var_f30 * var_f30); + if (var_f27 <= arg4) { + var_f31 = var_f30 = 0.0f; + } else { + var_f31 = 72.0f * (var_f31 / var_f27); + var_f30 = 72.0f * (var_f30 / var_f27); + } + var_f27 = arg3 * (sqrtf(var_f31 * var_f31 + var_f30 * var_f30) / 72.0f); + if (var_f27 >= arg3) { + var_f27 = arg3; + } else if (var_f27 <= 1.0f) { + var_f31 = var_f30 = var_f27 = 0.0f; + } + if (var_f31 != 0.0f || var_f30 != 0.0f || arg2 >= 0.0f) { + if (arg2 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) { + var_f26 = arg2; + } + if (var_f26 >= 180.0f) { + if (arg0->rot.y - var_f26 >= 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 < -180.0f) { + arg0->rot.y += 360.0f; + } + } else { + if (arg0->rot.y - var_f26 > 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 <= -180.0f) { + arg0->rot.y += 360.0f; + } + } + arg0->rot.y = (var_f26 + arg0->rot.y * (arg5 - 1.0f)) / arg5; + } + arg0->trans.x += var_f27 * sind(arg0->rot.y); + arg0->trans.z += var_f27 * cosd(arg0->rot.y); + if (arg6 != 0) { + if (var_f27 > 0.0f) { + if (arg6 == 1 || arg6 == 3) { + if (arg0->motion[1] != Hu3DMotionIDGet(arg0->model[0]) && arg0->motion[1] != Hu3DMotionShiftIDGet(arg0->model[0])) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + } else if (arg0->motion[10] != Hu3DMotionIDGet(arg0->model[0]) && arg0->motion[10] != Hu3DMotionShiftIDGet(arg0->model[0])) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[10], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + } else { + if (arg0->motion[0] != Hu3DMotionIDGet(arg0->model[0]) && arg0->motion[0] != Hu3DMotionShiftIDGet(arg0->model[0])) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + return 1; + } + } + return 0; +} + +void fn_1_12494(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8) { + Vec sp2C; + Vec sp20; + Vec sp14; + float var_f31; + float var_f30; + float temp_f29; + float temp_f28; + + sp2C.x = arg2->x; + sp2C.y = arg2->y; + sp2C.z = arg2->z; + sp20.x = arg3->x; + sp20.y = arg3->y; + sp20.z = arg3->z; + var_f31 = Hu3DData[arg0->model[arg1]].rot.y; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } else if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + temp_f29 = arg5; + temp_f28 = arg6; + if (arg7 != 0) { + sp14.x = fn_1_11348(sp2C.x, sp20.x, temp_f29, temp_f28); + sp14.y = fn_1_11348(sp2C.y, sp20.y, temp_f29, temp_f28); + sp14.z = fn_1_11348(sp2C.z, sp20.z, temp_f29, temp_f28); + if (arg1 == 0) { + omSetTra(arg0, sp14.x, sp14.y, sp14.z); + } else { + Hu3DModelPosSet(arg0->model[arg1], sp14.x, sp14.y, sp14.z); + } + } + if (arg8 == 0) { + return; + } + var_f30 = -(atan2d(sp20.z - sp2C.z, sp20.x - sp2C.x) - 90.0); + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } else if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 >= 180.0f) { + if (var_f31 - var_f30 >= 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 < -180.0f) { + var_f31 += 360.0f; + } + } else { + if (var_f31 - var_f30 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 <= -180.0f) { + var_f31 += 360.0f; + } + } + var_f31 = (var_f30 + var_f31 * (arg4 - 1)) / arg4; + if (arg1 == 0) { + arg0->rot.y = var_f31; + } else { + Hu3DData[arg0->model[arg1]].rot.y = var_f31; + } +} + +void fn_1_12958(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_12494(arg0, arg1, arg2, arg3, 0, arg5, arg6, 1, 0); +} + +void fn_1_129B8(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_12494(arg0, arg1, arg2, arg3, arg4, arg5, arg6, 0, 1); +} + +void fn_1_12A1C(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_12494(arg0, arg1, arg2, arg3, arg4, arg5, arg6, 1, 1); +} + +void fn_1_12A80(StructBss160* arg0) { + arg0->unk08 = arg0->unk14; + arg0->unk0C = arg0->unk18; + arg0->unk10 = arg0->unk1C; + arg0->unk20 = arg0->unk2C; + arg0->unk24 = arg0->unk30; + arg0->unk28 = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_12ABC(StructBss160* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08; + arg0->unk18 = arg0->unk0C; + arg0->unk1C = arg0->unk10; + arg0->unk2C = arg0->unk20; + arg0->unk30 = arg0->unk24; + arg0->unk34 = arg0->unk28; + arg0->unk3C = arg0->unk38; +} + +void fn_1_12B00(StructBss160* arg0, StructBss160* arg1, float arg2) { + arg0->unk08 = fn_1_11370(arg0->unk08, arg1->unk14, arg2); + arg0->unk0C = fn_1_11370(arg0->unk0C, arg1->unk18, arg2); + arg0->unk10 = fn_1_11370(arg0->unk10, arg1->unk1C, arg2); + arg0->unk20 = fn_1_11370(arg0->unk20, arg1->unk2C, arg2); + arg0->unk24 = fn_1_11370(arg0->unk24, arg1->unk30, arg2); + arg0->unk28 = fn_1_11370(arg0->unk28, arg1->unk34, arg2); + arg0->unk38 = fn_1_11370(arg0->unk38, arg1->unk3C, arg2); +} + +void fn_1_12E14(StructBss160* arg0, float arg1) { + fn_1_12B00(arg0, arg0, arg1); +} + +void fn_1_13128(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_11348(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_11348(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_11348(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk2C = fn_1_11348(arg0->unk2C, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_11348(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_11348(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk3C = fn_1_11348(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_133A4(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + fn_1_13128(arg0, arg1, arg2, arg3); + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_13658(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4) { + fn_1_13128(arg0, arg1, arg2, arg3); + fn_1_12B00(arg0, arg1, arg4); +} + +void fn_1_13B88(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_113B0(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_113B0(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_113B0(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk2C = fn_1_113B0(arg0->unk2C, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_113B0(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_113B0(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk3C = fn_1_113B0(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_13FDC(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + fn_1_13B88(arg0, arg1, arg2, arg3); + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_14468(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4) { + fn_1_13B88(arg0, arg1, arg2, arg3); + fn_1_12B00(arg0, arg1, arg4); +} + +void fn_1_14B84(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_11540(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_11540(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_11540(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk2C = fn_1_11540(arg0->unk2C, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_11540(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_11540(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk3C = fn_1_11540(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_15048(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + fn_1_14B84(arg0, arg1, arg2, arg3); + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_15544(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4) { + fn_1_14B84(arg0, arg1, arg2, arg3); + fn_1_12B00(arg0, arg1, arg4); +} + +void fn_1_15CD0(StructFn15CD0* arg0, s32 arg1) { + s32 var_r30; + s32 i; + + var_r30 = -1; + for (i = 0; i < 20; i++) { + if (arg0->unk94[i] == -1) { + var_r30 = i; + break; + } + } + if (var_r30 != -1) { + arg0->unk94[var_r30] = arg1; + arg0->unk00 = 1; + } +} + +void fn_1_15D3C(StructFn15CD0* arg0, s32 arg1) { + s32 i; + + for (i = 0; i < 20; i++) { + if (arg1 == -1) { + arg0->unk94[i] = -1; + } else if (arg0->unk94[i] == arg1) { + arg0->unk94[i] = -1; + } + } +} + +void fn_1_15DA4(StructFn15CD0* arg0, s32 arg1) { + arg0->unk90 = arg1; + arg0->unk00 = 1; +} + +void fn_1_15DB4(StructFn15CD0* arg0) { + arg0->unk90 = -1; +} + +void fn_1_15DC0(StructFn15CD0* arg0, s32 arg1) { + arg0->unk00 = arg1; +} + +void fn_1_15DC8(StructFn15CD0* arg0) { + fn_1_15DC0(arg0, 0); + fn_1_15D3C(arg0, -1); + fn_1_15DB4(arg0); +} + +float fn_1_15E10(s32 arg0, s32 arg1, s32 arg2) { + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + sp20.x = Hu3DData[arg0].pos.x; + sp20.z = Hu3DData[arg0].pos.z; + sp14.x = Hu3DData[arg1].pos.x; + sp14.z = Hu3DData[arg1].pos.z; + sp8.x = sp14.x - sp20.x; + sp8.z = sp14.z - sp20.z; + var_f30 = Hu3DData[arg0].rot.y; + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + var_f31 = atan2d(sp8.z, sp8.x) - 90.0; + if (arg2 == 0) { + var_f31 *= -1.0f; + } + if (arg2 != 0) { + var_f31 += var_f30; + } else { + var_f31 -= var_f30; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_16154(s32 arg0, s32 arg1) { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = Hu3DData[arg0].pos.x; + sp24.z = Hu3DData[arg0].pos.z; + sp18.x = Hu3DData[arg1].pos.x; + sp18.z = Hu3DData[arg1].pos.z; + spC.x = sp18.x - sp24.x; + spC.z = sp18.z - sp24.z; + return sqrtf(spC.x * spC.x + spC.z * spC.z); +} + +float fn_1_162E4(s32 arg0, float arg1, float arg2) { + return (arg2 + arg1 * (arg0 - 1)) / arg0; +} + +void fn_1_16348(omObjData* arg0) { +} + +void fn_1_1634C(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3, s32 arg4, s32 arg5) { + arg1->unk00 = 0; + arg1->unk84 = arg2; + strcpy(arg1->unk04, arg3); + arg1->unk88 = arg4; + arg1->unk8C = arg5; + arg1->unk90 = -1; + fn_1_15D3C(arg1, -1); + arg1->unkE4 = omAddObjEx(arg0, 0x3000, 0, 0, -1, fn_1_16348); + arg1->unkE4->data = arg1; + arg1->unkE4->trans.x = 10.0f; + arg1->unkE4->trans.y = 10000.0f; + arg1->unkE4->trans.z = 10.0f; + arg1->unkE4->rot.x = 0.0f; + arg1->unkE4->rot.y = 0.0f; + arg1->unkE4->rot.z = 0.0f; + arg1->unkE4->work[0] = arg1->unkE4->work[1] = arg1->unkE4->work[2] = arg1->unkE4->work[3] = 0; +} + +void fn_1_164B0(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3) { + fn_1_1634C(arg0, arg1, arg2, arg3, 0x100, 0); +} + +void fn_1_1660C(Process* arg0, StructFn15CD0* arg1, s32 arg2, s32 arg3) { + fn_1_1634C(arg0, arg1, arg2, lbl_1_data_3D0[arg3], lbl_1_data_3F0[arg3][0], lbl_1_data_3F0[arg3][1]); +} diff --git a/src/REL/m438Dll/fire.c b/src/REL/m438Dll/fire.c index e69de29b..349febca 100644 --- a/src/REL/m438Dll/fire.c +++ b/src/REL/m438Dll/fire.c @@ -0,0 +1,1554 @@ +#include "REL/m438Dll.h" + +#include "game/hsfdraw.h" +#define HUSPR_USE_OLD_DEFS +#include "game/sprite.h" + +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_10F0C(s16); +s32 fn_1_110B4(s16, u8, s16); + +void fn_1_E658(s16 arg0, s16 arg1) { + M438UnkStruct2* var_r29; + s32 var_r31; + M438UnkStruct3* var_r30; + + lbl_1_bss_DE4.unk_34 = Hu3DHookFuncCreate(fn_1_F538); + Hu3DModelLayerSet(lbl_1_bss_DE4.unk_34, 6); + lbl_1_bss_DE4.unk_30 = arg0; + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(M438UnkStruct2), 0x10000000); + lbl_1_bss_DE4.unk_40 = var_r29; + 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; + } + 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) { + ModelData sp120; + Mtx spF0; + Mtx spC0; + Mtx sp90; + Mtx sp60; + Mtx sp30; + GXColor sp2C; + s16 sp8; + M438UnkStruct* var_r31; + s16 var_r29; + s16 var_r28; + s32 var_r27; + M438UnkStruct3* temp_r26; + s32 var_r25; + s32 var_r24; + s16 temp_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + 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); + mtxTransCat(sp90, arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z); + PSMTXConcat(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); + mtxTransCat(sp30, temp_r26->unk_0C.x, temp_r26->unk_0C.y, temp_r26->unk_0C.z); + switch (temp_r26->unk_04) { + case 0: + GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX2x4); + var_r22 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r27 + 4, var_r22, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + if (var_r27 == GX_TEXMAP0) { + 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 { + 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 { + 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); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + } + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + break; + case 1: + GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX2x4); + var_r21 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r27 + 4, var_r21, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + break; + case 2: + sp2C.a = 0xE0; + GXSetTevColor(GX_TEVREG1, sp2C); + GXSetTexCoordGen2(var_r28 + 1, GX_TG_BUMP0, var_r28, 0x3C, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + var_r29++; + GXSetTevOrder(var_r29, var_r28 + 1, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); + GXSetTevColorOp(var_r29, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + break; + case 3: + var_r28--; + GXLoadTexMtxImm(sp30, texMtxTbl[var_r28], GX_MTX2x4); + var_r20 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r27 + 4, var_r20, 0, 0x7D); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + GXSetTevColorIn(var_r29, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(var_r29, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + var_r28++; + 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); + 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); + 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); + GXSetTevOrder(var_r29, var_r28, var_r27, GX_COLOR0A0); + 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 { + 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); + } + GXSetTevColorOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(var_r29, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + break; + } + var_r29++; + var_r28++; + if (temp_r26->unk_4D != 0) { + HuSprTexLoad(temp_r26->unk_00, 0, var_r27, 1, 1, 1); + } else { + HuSprTexLoad(temp_r26->unk_00, 0, var_r27, 0, 0, 1); + } + } + } + GXSetNumTevStages((s16)var_r29); + GXSetNumTexGens((s16)var_r28); + var_r31 = arg0->unk_3C; + for (var_r24 = 0; var_r24 < arg0->unk_02; var_r24++, var_r31++) { + if ((var_r31->unk_38 != 0) && ((var_r31->unk_38 & 4) == 0)) { + switch (var_r31->unk_30) { + 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); + } + 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); + mtxTransCat(sp90, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + PSMTXConcat(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); + } + PSMTXConcat(sp90, sp60, sp60); + } else if (var_r31->unk_31 == 1) { + PSMTXRotRad(sp90, 0x59, MTXDegToRad(CRot.y)); + PSMTXConcat(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); + mtxTransCat(sp90, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + PSMTXConcat(spC0, sp90, spF0); + break; + } + GXLoadPosMtxImm(spF0, 0); + PSMTXInverse(spF0, sp90); + PSMTXTranspose(sp90, sp60); + GXLoadNrmMtxImm(sp60, 0); + GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk_50); + GXSetChanMatColor(GX_COLOR0A0, var_r31->unk_54); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + switch (var_r31->unk_33) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + if ((var_r31->unk_38 & 0x10) != 0) { + GXSetZMode(0, GX_LEQUAL, 1); + } else { + GXSetZMode(1, GX_LEQUAL, 0); + } + sp120.attr = 0; + temp_r23 = Hu3DLightSet(&sp120, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 0.0f); + GXSetNumChans(1); + if ((var_r31->unk_38 & 8) != 0) { + var_r25 = GX_SRC_VTX; + } else { + var_r25 = GX_SRC_REG; + } + switch (var_r31->unk_32) { + case 0: + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, var_r25, 0, GX_DF_CLAMP, GX_AF_NONE); + break; + case 1: + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_REG, var_r25, temp_r23, GX_DF_CLAMP, GX_AF_SPOT); + break; + case 2: + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_REG, var_r25, temp_r23, GX_DF_CLAMP, GX_AF_SPEC); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_44, 12); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk_48, 4); + for (var_r27 = 0; var_r27 < var_r31->unk_34; var_r27++) { + GXSetVtxDesc(var_r27 + GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(var_r27 + GX_VA_TEX0, &var_r31->unk_58[var_r27].unk_04, 8); + } + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0U); + GXSetArray(GX_VA_NRM, var_r31->unk_4C, 12); + GXCallDisplayList(var_r31->unk_40, var_r31->unk_3C); + } + } +} + +void fn_1_F538(ModelData* arg0, Mtx arg1) { + Mtx sp38; + Mtx sp8; + M438UnkStruct2* var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_DE4.unk_40; + GXLoadPosMtxImm(arg1, 0); + PSMTXInverse(arg1, sp38); + PSMTXTranspose(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; + fn_1_FD40(var_r31); + if (var_r31->unk_08 == 0) continue; + } + fn_1_E790(var_r31); + } + } +} + +M438UnkStruct2* fn_1_F664(s16 arg0) { + return &lbl_1_bss_DE4.unk_40[arg0]; +} + +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) { + return &lbl_1_bss_DE4.unk_3C[arg0]; +} + +void fn_1_F6C8(M438FireStruct** arg0, s16 arg1, f32 arg8, f32 arg9) { + s32 var_r30; + 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->unk18.x = (0.5f * arg8); + var_r31->unk18.y = (-0.5f * arg9); + var_r31->unk18.z = 0.0f; + var_r31->unk24.x = (-0.5f * arg8); + var_r31->unk24.y = (-0.5f * arg9); + var_r31->unk24.z = 0.0f; + } +} + +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); + + 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; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } + } +} + +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); + + 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; + var_r31->g = arg2->g; + var_r31->b = arg2->b; + var_r31->a = arg2->a; + } + } +} + +void fn_1_F994(Vec** arg0, s16 arg1, Vec* arg2) { + s32 var_r29; + Vec* var_r31; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), 0x10000000); + + for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } +} + +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); + + 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; + var_r31->y = arg2->y; + } + } +} + +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; + + + 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]; + } + arg0->unk_4C->x = 0.0f; + arg0->unk_4C->y = 0.0f; + arg0->unk_4C->z = 1.0f; + temp_r28 = arg0->unk_40; + 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); + GXNormal1x16(var_r31); + for (var_r29 = 0; var_r29 < arg0->unk_34; var_r29++) { + GXTexCoord1x16(var_r31); + } + } + arg0->unk_3C = GXEndDisplayList(); +} + +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 { + 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]]; + var_r31->unk_24 &= ~4; + switch (var_r31->unk_24 & 0xF) { + case 1: + var_r31->unk_2C += var_r31->unk_28; + if (var_r31->unk_2C >= 1.0f) { + var_r31->unk_00++; + var_r31->unk_2C -= 1.0f; + } + break; + case 2: + var_r31->unk_2C += var_r31->unk_28; + if (var_r31->unk_2C >= 1.0f) { + var_r31->unk_00 -= 1; + var_r31->unk_2C -= 1.0f; + } + break; + } + if (var_r31->unk_00 >= temp_r30->unk_4C) { + 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) { + var_r31->unk_24 = (var_r31->unk_24 & 0xF0) | 2; + var_r31->unk_00 -= 2; + } 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) { + 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) { + if ((var_r31->unk_24 & 0x40) != 0) { + var_r31->unk_24 = (var_r31->unk_24 & 0xF0) | 1; + var_r31->unk_00 = 1; + } else { + var_r31->unk_00 = temp_r30->unk_4C - 1; + } + } else if ((var_r31->unk_24 & 0x40) != 0) { + var_r31->unk_24 |= 8; + var_r31->unk_00 = 0; + } + var_r31->unk_24 |= 4; + } else { + var_r31->unk_24 &= ~8; + } + if (var_r31->unk_00 != var_r31->unk_01) { + var_r31->unk_08 = (var_r31->unk_00 * temp_r30->unk_58); + var_r31->unk_10 = (var_r31->unk_00 * temp_r30->unk_58); + var_r31->unk_18 = ((var_r31->unk_00 + 1) * temp_r30->unk_58); + var_r31->unk_20 = ((var_r31->unk_00 + 1) * temp_r30->unk_58); + if ((var_r31->unk_00 + 1) < temp_r30->unk_4C) { + var_r31->unk_18 -= temp_r30->unk_60; + var_r31->unk_20 -= temp_r30->unk_60; + } + var_r31->unk_01 = var_r31->unk_00; + DCFlushRangeNoSync(&var_r31->unk_04, 0x20); + } + if ((var_r31->unk_24 & 8) != 0) { + if ((var_r28->unk_38 & 0x40000000) != 0) { + var_r28->unk_38 |= 4; + if ((var_r31->unk_24 & 0x40) == 0) { + if (var_r31->unk_00 <= 0) { + var_r31->unk_00 = temp_r30->unk_4C; + } else { + var_r31->unk_00 = 0; + } + } + } else if ((var_r28->unk_38 & 0x80000000) != 0) { + fn_1_107BC(arg0->unk_00); + } + var_r27++; + } + } + } + } + if (var_r27 >= arg0->unk_02) { + if ((arg0->unk_08 & 0x40000000) != 0) { + arg0->unk_08 |= 4; + } 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; + s32 var_r29; + s32 var_r28; + 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_r29 == lbl_1_bss_DE4.unk_30) { + OSReport("OVER BILL\n"); + return 0; + } + var_r31->unk_00 = var_r29; + var_r31->unk_08 = 1; + var_r31->unk_30 = NULL; + var_r31->unk_02 = arg0; + var_r31->unk_04 = arg1; + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x98, 0x10000000); + var_r31->unk_3C = var_r30; + var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, 0x10000000); + var_r31->unk_48 = 0; + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 << 8, 0x10000000); + var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x30, 0x10000000); + var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x10, 0x10000000); + var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0xC, 0x10000000); + var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * 0x30), 0x10000000); + DCFlushRangeNoSync(var_r31->unk_4C, arg0 << 8); + var_r31->unk_0C.x = var_r31->unk_0C.y = var_r31->unk_0C.z = 0.0f; + var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 1.0f; + 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; + var_r30->unk_30 = 0; + var_r30->unk_31 = 2; + var_r30->unk_32 = 0; + var_r30->unk_33 = 0; + var_r30->unk_50.r = var_r30->unk_50.g = var_r30->unk_50.b = 0; + var_r30->unk_50.a = 0xFF; + 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; + var_r30->unk_58[var_r28].unk_2C = 0.0f; + } + var_r30->unk_00.x = var_r30->unk_00.y = var_r30->unk_00.z = 0.0f; + var_r30->unk_0C.x = var_r30->unk_0C.y = var_r30->unk_0C.z = 0.0f; + var_r30->unk_18.x = var_r30->unk_18.y = var_r30->unk_18.z = 1.0f; + var_r30->unk_6C.x = var_r30->unk_6C.y = var_r30->unk_6C.z = 0.0f; + 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; + fn_1_FAB8(var_r30); + var_r31->unk_48 += var_r30->unk_3C; + } + temp_r25 = var_r31->unk_4C; + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, 0x10000000); + memcpy(var_r31->unk_4C, temp_r25, var_r31->unk_48); + HuMemDirectFree(temp_r25); + DCFlushRangeNoSync(var_r31->unk_50, arg0 * 0x30); + DCFlushRangeNoSync(var_r31->unk_54, arg0 * 0x10); + DCFlushRangeNoSync(var_r31->unk_58, arg0 * 0xC); + 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_r31->unk_48 += var_r30->unk_3C; + } + lbl_1_bss_DE4.unk_36 = var_r31->unk_00; + lbl_1_bss_DE4.unk_38 = 0; + lbl_1_bss_DE4.unk_3A = 0; + PPCSync(); + return var_r31->unk_00; +} + +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 (temp_r31->unk_50 != NULL) { + HuMemDirectFree(temp_r31->unk_50); + } + if (temp_r31->unk_54 != NULL) { + HuMemDirectFree(temp_r31->unk_54); + } + if (temp_r31->unk_58 != NULL) { + HuMemDirectFree(temp_r31->unk_58); + } + if (temp_r31->unk_4C != NULL) { + HuMemDirectFree(temp_r31->unk_4C); + } + 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]); + } + HuMemDirectFree(temp_r31->unk_3C); + HuMemDirectFree(temp_r31->unk_34); + temp_r31->unk_08 = 0; + temp_r31->unk_00 = 0; + } + } +} + +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; +} + +#include "game/sprite.h" + +s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2) { + f32 var_f31; + f32 var_f30; + 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_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; + } + var_r31->unk_08 = arg0; + var_r31->unk_06 = 1; + if (((arg0 & 0xFFFF0000) + 0x10000) == 0) { + var_r30 = HuSprAnimMake(arg1, arg2, 2); + var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), 0x10000000); + arg1 = arg2 = 0; + } 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 { + var_f31 = arg1 / (f32)var_r30->bmp->sizeX; + var_f30 = arg2 / (f32)var_r30->bmp->sizeY; + } + var_r31->unk_00 = var_r30; + var_r31->unk_4E = arg1; + var_r31->unk_50 = arg2; + var_r31->unk_54 = var_f31; + var_r31->unk_58 = var_f30; + var_r31->unk_5C = 1.0f / var_r30->bmp->sizeX; + var_r31->unk_60 = 1.0f / var_r30->bmp->sizeY; + var_r31->unk_04 = 0; + var_r31->unk_4C = var_r30->bmp->sizeY / arg2; + if (var_r31->unk_4C < 1) { + var_r31->unk_4C = 1; + } + var_r31->unk_4D = 0; + if ((arg1 > var_r30->bmp->sizeX) || (arg2 > var_r30->bmp->sizeY)) { + var_r31->unk_4D = 1; + } + 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); + 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) { + f32 var_f31; + f32 var_f30; + M438UnkStruct3* temp_r31; + AnimData* temp_r30; + + temp_r31 = &lbl_1_bss_DE4.unk_3C[arg0]; + HuSprAnimKill(temp_r31->unk_00); + temp_r31->unk_08 |= 0xFFFF0000; + temp_r30 = HuSprAnimMake(arg2, arg3, arg1); + temp_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (temp_r30->bmp->pixSize * arg2), 0x10000000U); + var_f31 = arg4 / (f32) temp_r30->bmp->sizeX; + var_f30 = arg5 / (f32) temp_r30->bmp->sizeY; + temp_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_04 = 0; + temp_r31->unk_4C = temp_r30->bmp->sizeY / arg5; + temp_r31->unk_4D = 0; + temp_r31->unk_48.r = temp_r31->unk_48.g = temp_r31->unk_48.b = 0xFF; + temp_r31->unk_48.a = 0xFF; +} + +void fn_1_10F0C(s16 arg0) { + M438UnkStruct3* temp_r31; + + temp_r31 = &lbl_1_bss_DE4.unk_3C[arg0]; + if (temp_r31->unk_08 != 0) { + if (temp_r31->unk_06 != 0) { + temp_r31->unk_06 -= 1; + } + if (temp_r31->unk_06 == 0) { + HuSprAnimKill(temp_r31->unk_00); + temp_r31->unk_08 = 0; + } + } +} + +u8 fn_1_10F8C(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4) { + s32 var_r31; + + if (arg0 == 0) return 0; + + var_r31 = fn_1_10910(arg2, arg3, arg4); + 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 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 var_r26; + + if (arg2 == 0) { + return 0; + } + if (arg0 == 0) { + return 0; + } + temp_r28 = &lbl_1_bss_DE4.unk_40[arg0]; + temp_r28->unk_08 |= 2; + if (arg2 == temp_r28->unk_34[arg1]) { + return 1; + } + 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) { + var_r29->unk_44[0].x = -0.5f * temp_r30->unk_4E; + var_r29->unk_44[0].y = 0.5f * temp_r30->unk_50; + var_r29->unk_44[1].x = (0.5f * temp_r30->unk_4E); + var_r29->unk_44[1].y = (0.5f * temp_r30->unk_50); + var_r29->unk_44[2].x = (0.5f * temp_r30->unk_4E); + var_r29->unk_44[2].y = (-0.5f * temp_r30->unk_50); + var_r29->unk_44[3].x = (-0.5f * temp_r30->unk_4E); + var_r29->unk_44[3].y = (-0.5f * temp_r30->unk_50); + var_r29->unk_44[0].z = var_r29->unk_44[1].z = var_r29->unk_44[2].z = var_r29->unk_44[3].z = 0.0f; + } + temp_r31 = &var_r29->unk_58[arg1]; + temp_r31->unk_24 = 0; + temp_r31->unk_00 = temp_r31->unk_01 = 0; + temp_r31->unk_28 = 1.0f; + temp_r31->unk_2C = 0.0f; + temp_r31->unk_04 = temp_r31->unk_00 * temp_r30->unk_54; + temp_r31->unk_08 = temp_r31->unk_00 * temp_r30->unk_58; + temp_r31->unk_0C = (temp_r31->unk_00 + 1) * temp_r30->unk_54; + temp_r31->unk_10 = temp_r31->unk_00 * temp_r30->unk_58; + temp_r31->unk_14 = (temp_r31->unk_00 + 1) * temp_r30->unk_54; + temp_r31->unk_18 = (temp_r31->unk_00 + 1) * temp_r30->unk_58; + temp_r31->unk_1C = (temp_r31->unk_00 * temp_r30->unk_54); + temp_r31->unk_20 = (temp_r31->unk_00 + 1) * temp_r30->unk_58; + if ((temp_r31->unk_00 + 1) < temp_r30->unk_4C) { + temp_r31->unk_18 -= temp_r30->unk_60; + temp_r31->unk_20 -= temp_r30->unk_60; + } + DCFlushRangeNoSync(&temp_r31->unk_04, 0x20); + } + lbl_1_bss_DE4.unk_36 = arg0; + lbl_1_bss_DE4.unk_3A = arg1; + PPCSync(); + return 1; +} + +void fn_1_11658(void) { + M438UnkStruct2* temp_r31; + M438UnkStruct3* temp_r30; + M438UnkStruct3* temp_r29; + s32 var_r28; + s32 var_r27; + s16 var_r26; + + for (var_r28 = 1; var_r28 < lbl_1_bss_DE4.unk_30; var_r28++) { + if ((s16)var_r28 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[(s16)var_r28]; + if (temp_r31->unk_08 != 0) { + if (temp_r31->unk_50 != NULL) { + HuMemDirectFree(temp_r31->unk_50); + } + if (temp_r31->unk_54 != NULL) { + HuMemDirectFree(temp_r31->unk_54); + } + if (temp_r31->unk_58 != NULL) { + HuMemDirectFree(temp_r31->unk_58); + } + if (temp_r31->unk_4C != NULL) { + HuMemDirectFree(temp_r31->unk_4C); + } + 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]; + if (temp_r29->unk_08 != 0) { + if (temp_r29->unk_06 != 0) { + temp_r29->unk_06 -= 1; + } + if (temp_r29->unk_06 == 0) { + HuSprAnimKill(temp_r29->unk_00); + temp_r29->unk_08 = 0; + } + } + } + HuMemDirectFree(temp_r31->unk_3C); + HuMemDirectFree(temp_r31->unk_34); + temp_r31->unk_08 = 0; + temp_r31->unk_00 = 0; + } + } + } + + 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) { + if (temp_r30->unk_06 != 0) { + temp_r30->unk_06 -= 1; + } + if (temp_r30->unk_06 == 0) { + HuSprAnimKill(temp_r30->unk_00); + temp_r30->unk_08 = 0; + } + } + } + HuMemDirectFree(lbl_1_bss_DE4.unk_40); + HuMemDirectFree(lbl_1_bss_DE4.unk_3C); + Hu3DModelKill(lbl_1_bss_DE4.unk_34); +} + +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]; + temp_r31->unk_0C.x = arg8; + temp_r31->unk_0C.y = arg9; + temp_r31->unk_0C.z = argA; + if (temp_r31->unk_02 == 1) { + temp_r31->unk_3C->unk_00 = temp_r31->unk_0C; + } + } +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_00.x = arg8; + temp_r31->unk_00.y = arg9; + temp_r31->unk_00.z = argA; + } + } +} + +void fn_1_1196C(s16 arg0, f32 arg8, f32 arg9, f32 argA) { + M438UnkStruct* var_r31; + M438UnkStruct2* temp_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_00.x = arg8; + var_r31->unk_00.y = arg9; + var_r31->unk_00.z = argA; + } + } +} + +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]; + temp_r31->unk_0C.x += arg8; + temp_r31->unk_0C.y += arg9; + temp_r31->unk_0C.z += argA; + if (temp_r31->unk_02 == 1) { + temp_r31->unk_3C->unk_00 = temp_r31->unk_0C; + } + } +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_00.x += arg8; + temp_r31->unk_00.y += arg9; + temp_r31->unk_00.z += argA; + } + } +} + +void fn_1_11AEC(s16 arg0, f32 arg8, f32 arg9, f32 argA) { + M438UnkStruct* var_r31; + M438UnkStruct2* temp_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_00.x += arg8; + var_r31->unk_00.y += arg9; + var_r31->unk_00.z += argA; + } + } +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_24.x = arg8; + temp_r31->unk_24.y = arg9; + temp_r31->unk_24.z = argA; + } + } +} + +void fn_1_11BE8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { + M438UnkStruct* var_r31; + M438UnkStruct2* temp_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_24.x = arg8; + var_r31->unk_24.y = arg9; + var_r31->unk_24.z = argA; + } + } +} + +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]; + temp_r31->unk_70.x = arg8; + temp_r31->unk_70.y = arg9; + temp_r31->unk_70.z = argA; + if (temp_r31->unk_02 == 1) { + temp_r31->unk_3C->unk_6C = temp_r31->unk_70; + } + } +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_6C.x = arg8; + temp_r31->unk_6C.y = arg9; + temp_r31->unk_6C.z = argA; + } + } +} + +void fn_1_11D38(s16 arg0, f32 arg8, f32 arg9, f32 argA) { + M438UnkStruct* var_r31; + M438UnkStruct2* temp_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_6C.x = arg8; + var_r31->unk_6C.y = arg9; + var_r31->unk_6C.z = argA; + } + } +} + +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]; + temp_r31->unk_18.x = arg8; + temp_r31->unk_18.y = arg9; + temp_r31->unk_18.z = argA; + if (temp_r31->unk_02 == 1) { + temp_r31->unk_3C->unk_0C = temp_r31->unk_18; + } + } +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_0C.x = arg8; + temp_r31->unk_0C.y = arg9; + temp_r31->unk_0C.z = argA; + } + } +} + +void fn_1_11E88(s16 arg0, f32 arg8, f32 arg9, f32 argA) { + M438UnkStruct* var_r31; + M438UnkStruct2* temp_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_0C.x = arg8; + var_r31->unk_0C.y = arg9; + var_r31->unk_0C.z = argA; + } + } +} + +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]; + temp_r31->unk_24.x = arg8; + temp_r31->unk_24.y = arg9; + temp_r31->unk_24.z = argA; + if (temp_r31->unk_02 == 1) { + temp_r31->unk_3C->unk_18 = temp_r31->unk_24; + } + } +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_18.x = arg8; + temp_r31->unk_18.y = arg9; + temp_r31->unk_18.z = argA; + } + } +} + +void fn_1_11FD8(s16 arg0, f32 arg8, f32 arg9, f32 argA) { + M438UnkStruct* var_r31; + M438UnkStruct2* temp_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_18.x = arg8; + var_r31->unk_18.y = arg9; + var_r31->unk_18.z = argA; + } + } +} + +void fn_1_1204C(s16 arg0, s32 arg1) { + M438UnkStruct2* temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + temp_r31->unk_08 |= arg1; + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + temp_r30 = &temp_r31->unk_3C[arg1]; + temp_r30->unk_38 |= arg2; + } + } +} + +void fn_1_12100(s16 arg0, s32 arg1) { + M438UnkStruct2* temp_r31; + M438UnkStruct* var_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r30 = temp_r31->unk_3C; + for (var_r29 = 0; var_r29 < temp_r31->unk_02; var_r29++, var_r30++) { + var_r30->unk_38 |= arg1; + } + } +} + +void fn_1_12174(s16 arg0, u32 arg1) { + M438UnkStruct2* temp_r31; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + temp_r31->unk_08 &= ~arg1; + } +} + +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) { + 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; + s32 var_r29; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r30 = temp_r31->unk_3C; + for (var_r29 = 0; var_r29 < temp_r31->unk_02; var_r29++, var_r30++) { + var_r30->unk_38 &= ~arg1; + } + } +} + +s32 fn_1_1229C(s16 arg0, s32 arg1) { + M438UnkStruct2* var_r31; + + if (arg0 == 0) { + return 0; + } + + var_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + if ((var_r31->unk_08 & arg1) != 0) { + return 1; + } + return 0; +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + if ((var_r30->unk_38 & arg2) != 0) { + return 1; + } + arg0 = 0; + } + } + return arg0; +} + +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]; + if (temp_r30->unk_02 > arg1) { + temp_r31 = &temp_r30->unk_3C[arg1]; + temp_r31->unk_54.r = arg2; + temp_r31->unk_54.g = arg3; + temp_r31->unk_54.b = arg4; + temp_r31->unk_54.a = arg5; + } + } +} + +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) { + temp_r30 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r31 = temp_r30->unk_3C; + for (var_r29 = 0; var_r29 < temp_r30->unk_02; var_r29++, var_r31++) { + var_r31->unk_54.r = arg1; + var_r31->unk_54.g = arg2; + var_r31->unk_54.b = arg3; + var_r31->unk_54.a = arg4; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_30 = arg2; + } + } +} + +void fn_1_124CC(s16 arg0, u8 arg1) { + M438UnkStruct2* temp_r31; + M438UnkStruct* var_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r30 = temp_r31->unk_3C; + for (var_r29 = 0; var_r29 < temp_r31->unk_02; var_r29++, var_r30++) { + var_r30->unk_30 = arg1; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_31 = arg2; + } + } +} + +void fn_1_125A0(s16 arg0, u8 arg1) { + M438UnkStruct2* temp_r31; + M438UnkStruct* var_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r30 = temp_r31->unk_3C; + for (var_r29 = 0; var_r29 < temp_r31->unk_02; var_r29++, var_r30++) { + var_r30->unk_31 = arg1; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_33 = arg2; + } + } +} + +void fn_1_12674(s16 arg0, u8 arg1) { + M438UnkStruct2* temp_r31; + M438UnkStruct* var_r30; + s32 var_r29; + + if (arg0 != 0) { + temp_r31 = &lbl_1_bss_DE4.unk_40[arg0]; + var_r30 = temp_r31->unk_3C; + for (var_r29 = 0; var_r29 < temp_r31->unk_02; var_r29++, var_r30++) { + var_r30->unk_33 = arg1; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_58[0].unk_24 = arg2; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_58[arg2].unk_24 = arg3; + } + } +} + +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 + 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; + } + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_58[0].unk_28 = arg8; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_58[arg2].unk_28 = arg8; + } + } +} + +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; + } + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_58[0].unk_00 = arg2; + } + } +} + +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]; + if (temp_r31->unk_02 > arg1) { + var_r30 = &temp_r31->unk_3C[arg1]; + var_r30->unk_58[arg2].unk_00 = arg3; + } + } +} + +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; + } + } + } +} + +void fn_1_12B58(s16 arg0, u8 arg1) { + M438UnkStruct3* var_r31; + + if (arg0 != 0) { + var_r31 = &lbl_1_bss_DE4.unk_3C[arg0]; + var_r31->unk_04 = arg1; + } +} diff --git a/src/REL/m438Dll/main.c b/src/REL/m438Dll/main.c index de52de93..861c653d 100644 --- a/src/REL/m438Dll/main.c +++ b/src/REL/m438Dll/main.c @@ -5,14 +5,16 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/object.h" #include "game/objsub.h" #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" #include "REL/m438Dll.h" +#define BOARD_FABS(value) ((value < 0.0f) ? -(value) : (value)) + typedef struct M438MainWork { u8 unk_00; u8 unk_01; @@ -83,7 +85,11 @@ typedef struct M438MainWork2 { typedef struct M438MainWork3 { u8 unk_00; - Vec unk_04; + s16 unk_02; + union { + Vec unk_04; + s32 unk_04s; + }; Vec unk_10; Vec unk_1C; Vec unk_28; @@ -113,24 +119,7 @@ typedef struct M438MainWork3 { float unk_170[3]; float unk_17C[3]; u16 unk_188[3]; -} M438MainWork3; /* size = */ - -typedef struct M438MainWork4 { - s8 unk_00; - char unk04[11]; - float unk_0C; - float unk_10; - float unk_14; - float unk_18; - float unk_1C; - float unk_20; - float unk_24; - char unk28[4]; - float unk_2C; - char unk30[4]; - Vec unk_34; - char unk40[0xC]; -} M438MainWork4; /* size = 0x4C */ +} M438MainWork3; /* size = 0x190 */ typedef struct M438StructBss298 { /* 0x00 */ u8 unk_00; @@ -148,37 +137,11 @@ typedef struct M438StructBss298 { Vec unk_24; } M438StructBss298; /* size = 0x30 */ -typedef struct M438UnkStruct { - char unk00[0x5C]; - s8 unk_5C; - char unk5D[0x3B]; -} M438UnkStruct; /* size = 0x98 */ - -typedef struct M438UnkStruct2 { - char unk00[0x30]; - void *unk_30; // TODO type - char unk34[8]; - M438UnkStruct *unk_3C; - char unk40[0x3C]; - s16 unk_7C; - s16 unk_7E; - float unk_80; - float unk_84; - float unk_88; - float unk_8C; - float unk_90; - char unk94[0x28]; -} M438UnkStruct2; /* size = 0xBC */ - -typedef struct M438StructBssDE4 { - /* 0x00 */ char unk00[0x36]; - s16 unk_36; - s16 unk_38; - s16 unk_3A; - char unk3C[4]; - M438UnkStruct2 *unk_40; -} M438StructBssDE4; /* size = */ +typedef u8 M438UnkType[0x30]; +void fn_1_4DC(omObjData *object); +void fn_1_4FC(omObjData *object); +void fn_1_974(omObjData *object); void fn_1_1174(omObjData *object); void fn_1_1204(omObjData *object); void fn_1_13A0(omObjData *object); @@ -194,14 +157,12 @@ void fn_1_35C0(omObjData *object); void fn_1_4374(omObjData *object); void fn_1_4724(omObjData *object); void fn_1_4984(omObjData *object); -void fn_1_4DC(omObjData *object); void fn_1_4F50(omObjData *object); -void fn_1_4FC(omObjData *object); -void fn_1_5D4C(void *arg0); -void fn_1_62BC(void *arg0); -void fn_1_63B0(void *arg0); -void fn_1_6A3C(void *arg0); -void fn_1_7300(void *arg0); +void fn_1_5D4C(M438UnkStruct2 *arg0); +void fn_1_62BC(M438UnkStruct2 *arg0); +void fn_1_63B0(M438UnkStruct2 *arg0); +void fn_1_6A3C(M438UnkStruct2 *arg0); +void fn_1_7300(M438UnkStruct2 *arg0); void fn_1_7B58(omObjData *object); void fn_1_7BBC(void); void *fn_1_7BFC(s32 arg0); @@ -209,19 +170,18 @@ void fn_1_7D30(void); s32 fn_1_7DB4(void); void fn_1_7DD8(s32 arg0, s32 *arg1); float fn_1_7EDC(float arg8, float arg9, float argA); -void fn_1_8164(float *arg0, Vec *arg1); +void fn_1_8164(Mtx arg0, Vec *arg1); void fn_1_8C34(float *arg0, float *arg1, float *arg2, s32 arg3); -float fn_1_8EEC(float *arg0, float *arg1, float *arg2, float arg8); +float fn_1_8EEC(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3); void fn_1_9040(float *arg0, Vec *arg1, float arg2[3][3], s32 arg3); -void fn_1_9420(float *arg0, float *arg1, float arg2[3][3], float arg3[3][3], s32 arg4, float arg8); +void fn_1_9420(float arg8, float *arg0, float *arg1, float arg2[3][3], float arg3[3][3], s32 arg4); float fn_1_9634(Vec *arg0); -void fn_1_974(omObjData *object); float fn_1_9960(Vec *arg0, Vec *arg1, Vec *arg2); float fn_1_A14C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3); void fn_1_A60C(omObjData *object); void fn_1_A688(omObjData *object); void fn_1_A68C(ModelData *model, Mtx matrix); -s32 fn_1_AE18(u32 arg0, Vec *arg1, Vec *arg2); +s32 fn_1_AE18(u32 arg0, float arg8, Vec *arg1, Vec *arg2); float fn_1_B440(Vec *arg0, Vec *arg1, Vec *arg2); Vec lbl_1_data_0 = { 1000.0f, 3000.0f, 1000.0f }; @@ -231,106 +191,6 @@ Vec lbl_1_data_1C = { 500.0f, 3000.0f, 500.0f }; Vec lbl_1_data_28 = { 0.0f, 1.0f, 0.0f }; Vec lbl_1_data_34 = { 0.0f, 0.0f, 0.0f }; -s32 lbl_1_data_64 = -1; -Vec lbl_1_data_68[10][8]; // TODO not right -s32 lbl_1_data_488[0xB] = { 0, 2, 3, 8, 0xA, 9, 0x13, 0xD, 0x10, 0x17, 0x18 }; - -Vec lbl_1_data_4B4[4] = { - { -400.0f, 1600.0f, -400.0f }, - { 400.0f, 1600.0f, -400.0f }, - { -400.0f, 1600.0f, 400.0f }, - { 400.0f, 1600.0f, 400.0f }, -}; - -Vec lbl_1_data_514 = { -850.0f, 0.0f, -850.0f }; - -s32 lbl_1_data_520[0x19] = { - 0xFFFFFF9E, - 0xFFFFFF9F, - 0xFFFFFFA0, - 0xFFFFFFA1, - 0xFFFFFFA2, - 0xFFFFFFCE, - 0xFFFFFFCF, - 0xFFFFFFD0, - 0xFFFFFFD1, - 0xFFFFFFD2, - 0xFFFFFFFE, - 0xFFFFFFFF, - 0, - 1, - 2, - 0x2E, - 0x2F, - 0x30, - 0x31, - 0x32, - 0x5E, - 0x5F, - 0x60, - 0x61, - 0x62, -}; - -u32 lbl_1_data_584[0x19] = { - 0x50, - 0x64, - 0x78, - 0x64, - 0x50, - 0x64, - 0x8C, - 0xA0, - 0x8C, - 0x64, - 0x78, - 0xA0, - 0xB4, - 0xA0, - 0x78, - 0x64, - 0x8C, - 0xA0, - 0x8C, - 0x64, - 0x50, - 0x64, - 0x78, - 0x64, - 0x50, -}; - -s32 lbl_1_data_5E8[9] = { 0, 0xFFFFFFCF, 0xFFFFFFD0, 0xFFFFFFD1, 0xFFFFFFFF, 1, 0x2F, 0x30, 0x31 }; - -Vec lbl_1_data_60C[9] = { - { 0.0f, 0.0f, 0.0f }, - { -35.416668f, 0.0f, -35.416668f }, - { 0.0f, 0.0f, -35.416668f }, - { 35.416668f, 0.0f, -35.416668f }, - { -35.416668f, 0.0f, 0.0f }, - { 35.416668f, 0.0f, 0.0f }, - { -35.416668f, 0.0f, 35.416668f }, - { 0.0f, 0.0f, 35.416668f }, - { 35.416668f, 0.0f, 35.416668f }, -}; - -s32 lbl_1_data_678[9] = { 0, 0xFFFFFF9E, 0xFFFFFF70, 0xFFFFFFA2, 0xFFFFFFFD, 3, 0x5E, 0x90, 0x62 }; - -Vec lbl_1_data_69C[9] = { - { 0.0f, 0.0f, 0.0f }, - { -70.833336f, 0.0f, -70.833336f }, - { 0.0f, 0.0f, -106.25f }, - { 70.833336f, 0.0f, -70.833336f }, - { -106.25f, 0.0f, 0.0f }, - { 106.25f, 0.0f, 0.0f }, - { -70.833336f, 0.0f, 70.833336f }, - { 0.0f, 0.0f, 106.25f }, - { 70.833336f, 0.0f, 70.833336f }, -}; - -s32 lbl_1_data_708[9] = { 0, 0xFFFFFFED, 0xFFFFFFEE, 0xFFFFFFEF, 0xFFFFFFFF, 1, 0x11, 0x12, 0x13 }; -s32 lbl_1_data_72C[9] = { 0, 0xFFFFFFDA, 0xFFFFFFCA, 0xFFFFFFDE, 0xFFFFFFFD, 3, 0x22, 0x36, 0x26 }; - M438StructBssDE4 lbl_1_bss_DE4; omObjData *lbl_1_bss_DE0; omObjData *lbl_1_bss_DDC; @@ -348,12 +208,13 @@ s16 lbl_1_bss_DAA[4]; s16 lbl_1_bss_DA8; s32 lbl_1_bss_DA4; void *lbl_1_bss_BA4[0x80]; -u32 lbl_1_bss_B98; +u32 lbl_1_bss_B98[3]; M438StructBss298 lbl_1_bss_298[48]; s32 lbl_1_bss_294; u16 lbl_1_bss_C[0x144]; s32 lbl_1_bss_8; s32 lbl_1_bss_4; +static u32 lbl_1_bss_0; void ObjectSetup(void) { @@ -408,7 +269,7 @@ void ObjectSetup(void) fn_1_B4D8(var_r31); omGameSysInit(var_r31); HuAudSndGrpSet(0x40); - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); fn_1_7BBC(); fn_1_E658(0x60, 0x40); } @@ -478,11 +339,12 @@ void fn_1_4FC(omObjData *object) break; } if (omSysExitReq != 0 && WipeStatGet() == 0) { - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_1174; } } +s32 lbl_1_data_64 = -1; void fn_1_974(omObjData *object) { s32 var_r31; @@ -515,7 +377,7 @@ void fn_1_974(omObjData *object) if (lbl_1_data_64 == -1 && (MGSeqStatGet(lbl_1_bss_DB6) & 0x10) != 0) { lbl_1_data_64 = HuAudSeqPlay(0x49); } - lbl_1_bss_B98 = 0x12C; + lbl_1_bss_B98[0] = 0x12C; break; case 7: var_r29 = 0; @@ -538,8 +400,8 @@ void fn_1_974(omObjData *object) } break; case 8: - if (lbl_1_bss_B98 != 0) { - lbl_1_bss_B98--; + if (lbl_1_bss_B98[0] != 0) { + lbl_1_bss_B98[0]--; } var_r24 = 0; for (var_r31 = 0; var_r31 < 4; var_r31++) { @@ -559,7 +421,7 @@ void fn_1_974(omObjData *object) } HuAudSeqFadeOut(lbl_1_data_64, 0x3C); } - else if ((MGSeqStatGet(lbl_1_bss_DB6) == 0) && (var_r24 == 0 || lbl_1_bss_B98 == 0)) { + else if ((MGSeqStatGet(lbl_1_bss_DB6) == 0) && (var_r24 == 0 || lbl_1_bss_B98[0] == 0)) { lbl_1_bss_DB6 = -1; lbl_1_bss_DB2 = 0x3C; lbl_1_bss_DBA += 1; @@ -621,12 +483,12 @@ void fn_1_974(omObjData *object) } break; case 11: - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_1174; break; } if (omSysExitReq != 0 && WipeStatGet() == 0) { - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_1174; } } @@ -649,6 +511,51 @@ void fn_1_1174(omObjData *object) } } +Vec lbl_1_data_68[11][8] = { { + { -528.6f, 0.0f, 350.7f }, + { -375.7f, 0.0f, 243.0f }, + { -214.2f, 0.0f, 331.4f }, + { -173.3f, 0.0f, 523.7f }, + { 15.000001f, 0.0f, 505.7f }, + { 148.59999f, 0.0f, 393.0f }, + { 0.0f, 1.0f, 0.0f }, + }, + { + { -198.7f, 0.0f, -122.899994f }, + { -11.599999f, 0.0f, -177.1f }, + { 63.4f, 0.0f, -349.7f }, + { 277.09999f, 0.0f, -296.4f }, + { 397.5f, 0.0f, -470.2f }, + { 0.0f, 1.0f, 0.0f }, + }, + { + { -421.0f, 0.0f, -471.3f }, + { -270.1f, 0.0f, -460.0f }, + { -153.1f, 0.0f, -356.5f }, + { 12.4f, 0.0f, -473.99997f }, + { 0.0f, 1.0f, 0.0f }, + }, + { + { -545.10004f, 0.0f, -318.9f }, + { -469.0f, 0.0f, -154.1f }, + { -313.4, 0.0f, -170.09999f }, + { -250.0f, 0.0f, -32.8f }, + { 0.0f, 1.0f, 0.0f }, + }, + { { -155.6f, 0.0f, 19.5f }, { -34.3f, 0.0f, 96.6f }, { -63.9f, 0.0f, 240.00002f }, { 37.5f, 0.0f, 402.8f }, { 0.0f, 1.0f, 0.0f } }, + { { 207.5f, 0.0f, -163.2f }, { 270.1f, 0.0f, -104.799995f }, { 402.19998f, 0.0f, -102.4f }, { 511.49997f, 0.0f, -25.099998f }, + { 627.3f, 0.0f, -142.0f }, { 0.0f, 1.0f, 0.0f } }, + { + { -601.0f, 0.0f, 97.799995f }, + { -516.80005f, 0.0f, 60.000004f }, + { -417.7f, 0.0f, 92.9f }, + { -309.40002f, 0.0f, 76.1f }, + { 0.0f, 1.0f, 0.0f }, + }, + { { 82.8f, 0.0f, 164.2f }, { 179.40001f, 0.0f, 179.8f }, { 241.00002f, 0.0f, 87.1f }, { 323.0f, 0.0f, 38.800003f }, { 0.0f, 1.0f, 0.0f } }, + { { 243.4f, 0.0f, 573.5f }, { 227.7f, 0.0f, 461.2f }, { 319.30002f, 0.0f, 400.6f }, { 342.30002f, 0.0f, 310.0f }, { 0.0f, 1.0f, 0.0f } }, + { { 357.69998f, 0.0f, 146.8f }, { 418.80002f, 0.0f, 225.0f }, { 503.2f, 0.0f, 234.69998f }, { 548.1f, 0.0f, 321.19998f }, { 0.0f, 1.0f, 0.0f } }, + { { -100.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, -100.0f }, { 100.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f } } }; void fn_1_1204(omObjData *object) { M438StructBss298 *var_r31; @@ -668,9 +575,9 @@ void fn_1_1204(omObjData *object) var_r31->unk_01 = var_r28 + 1; var_r31->unk_18 = lbl_1_data_68[var_r30][var_r29]; - PSVECSubtract(&lbl_1_data_68[var_r30][var_r29 + 1], &lbl_1_data_68[var_r30][var_r29], &var_r31->unk_24); - var_r31->unk_14 = PSVECMag(&var_r31->unk_24); - PSVECNormalize(&var_r31->unk_24, &var_r31->unk_24); + VECSubtract(&lbl_1_data_68[var_r30][var_r29 + 1], &lbl_1_data_68[var_r30][var_r29], &var_r31->unk_24); + var_r31->unk_14 = VECMag(&var_r31->unk_24); + VECNormalize(&var_r31->unk_24, &var_r31->unk_24); var_r31->unk_08 = var_r31->unk_0A = 0; var_r31->unk_06 = 0; var_r31->unk_0C = 0.0f; @@ -701,9 +608,8 @@ void fn_1_13A0(omObjData *object) switch (lbl_1_bss_DBA) { case 0: case 1: - case 2: - case 3: case 4: + case 5: break; case 6: lbl_1_bss_294 = 0x1E; @@ -730,7 +636,7 @@ void fn_1_13A0(omObjData *object) } for (var_r28 = 0, var_r26 = 0; var_r26 < var_r27; var_r28++) { var_r25 = sp8[var_r28]; - var_r24 = (s32)(80.0f * (0.000015258789f * fn_1_7DB4())) + 0x3C; + var_r24 = (s32)(80.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 0x3C; for (var_r31 = lbl_1_bss_298, var_r30 = 0; var_r30 < 0x30; var_r30++, var_r31++) { if (var_r31->unk_02 == var_r25) { if (var_r31->unk_00 != 0) { @@ -871,7 +777,7 @@ u8 fn_1_1D60(omObjData *object) s32 var_r29; var_r30 = object->data; - sp8 = PSVECMag(&var_r30->unk_84); + sp8 = VECMag(&var_r30->unk_84); for (var_r31 = lbl_1_bss_298, var_r29 = 0; var_r29 < 0x30; var_r29++, var_r31++) { if (var_r31->unk_00 > 2 && var_r31->unk_00 < 5) { spC.x = var_r31->unk_24.x * var_r31->unk_14; @@ -946,9 +852,9 @@ void fn_1_2070(omObjData *object) var_r31->unk_130 = var_r31->unk_134 + (var_f31 * (var_r31->unk_138 - var_r31->unk_134)); } else { - fn_1_9420((float *)&var_r31->unk_04, var_r31->unk_F4, (float(*)[3]) & var_r31->unk_64, var_r31->unk_88, 3, 2.0f * var_f31); - fn_1_9420((float *)&var_r31->unk_10, var_r31->unk_100, (float(*)[3]) & var_r31->unk_AC, var_r31->unk_D0, 3, 2.0f * var_f31); - var_r31->unk_130 = fn_1_8EEC(var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 2.0f * var_f31); + fn_1_9420(2.0f * var_f31, (float *)&var_r31->unk_04, var_r31->unk_F4, (float(*)[3]) & var_r31->unk_64, var_r31->unk_88, 3); + fn_1_9420(2.0f * var_f31, (float *)&var_r31->unk_10, var_r31->unk_100, (float(*)[3]) & var_r31->unk_AC, var_r31->unk_D0, 3); + var_r31->unk_130 = fn_1_8EEC(2.0f * var_f31, var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 3); } } CRot.x = var_r31->unk_10.x; @@ -1079,6 +985,13 @@ void fn_1_28E4(u8 arg0, u16 arg1, float arg9, float argA, float arg4) var_r31->unk_164[arg0] = 90.0f; } +s32 lbl_1_data_488[11] = { 0, 2, 3, 8, 0xA, 9, 0x13, 0xD, 0x10, 0x17, 0x18 }; +Vec lbl_1_data_4B4[4] = { + { -400.0f, 1600.0f, -400.0f }, + { 400.0f, 1600.0f, -400.0f }, + { -400.0f, 1600.0f, 400.0f }, + { 400.0f, 1600.0f, 400.0f }, +}; void fn_1_2964(omObjData *object) { M438MainWork *var_r31; @@ -1114,7 +1027,7 @@ void fn_1_2964(omObjData *object) var_r31->unk_0A = 0; var_r28 = object->work[1]; var_r31->unk_6C.x = lbl_1_data_4B4[var_r28].x; - var_r31->unk_6C.y = lbl_1_data_4B4[var_r28].y + 100.0f * (0.000030517578f * (fn_1_7DB4() - 0x8000)); + var_r31->unk_6C.y = lbl_1_data_4B4[var_r28].y + 100.0f * ((1.0f / 32768.0f) * (fn_1_7DB4() - 0x8000)); var_r31->unk_6C.z = lbl_1_data_4B4[var_r28].z; var_r31->unk_84 = var_r31->unk_88 = var_r31->unk_8C = 0.0f; var_r31->unk_78 = var_r31->unk_7C = var_r31->unk_80 = 0.0f; @@ -1125,7 +1038,7 @@ void fn_1_2964(omObjData *object) memset(var_r31->unk_F0, 0, sizeof(var_r31->unk_F0)); var_r27 = CharModelCreate(var_r31->unk_01, 8); object->model[0] = var_r27; - Hu3DModelAttrSet(var_r27, 0x40000001); + Hu3DModelAttrSet(var_r27, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r27); CharModelStepTypeSet(var_r31->unk_01, 0); var_r31->unk_A4 = -1; @@ -1223,7 +1136,7 @@ void fn_1_2E4C(omObjData *object) if (var_r31->unk_20 != 7) { sp30 = var_r31->unk_6C; sp30.y = 0.0f; - var_f30 = PSVECMag(&sp30); + var_f30 = VECMag(&sp30); if (var_f30 > 700.0f) { var_f29 = -100.0f; } @@ -1259,7 +1172,7 @@ void fn_1_2E4C(omObjData *object) if (sp30.z < 0.0f) { sp30.z *= 0.25f; } - var_f30 = PSVECMag(&sp30); + var_f30 = VECMag(&sp30); Hu3D3Dto2D(&var_r31->unk_6C, 1, &sp24); sp24.x = sp24.x - 288.0f; sp24.y -= 240.0f; @@ -1269,7 +1182,7 @@ void fn_1_2E4C(omObjData *object) } if (var_r31->unk_10 != 0) { var_r31->unk_07 = 0; - Hu3DModelAttrSet(var_r25, 1); + Hu3DModelAttrSet(var_r25, HU3D_ATTR_DISPOFF); object->func = fn_1_35BC; } } @@ -1344,7 +1257,7 @@ void fn_1_35C0(omObjData *object) if (lbl_1_bss_DBA == 7) { var_r31->unk_38++; if (var_r31->unk_38 > var_r31->unk_34) { - PSVECSubtract(&var_r23->unk_34, &var_r31->unk_6C, &sp10); + VECSubtract(&var_r23->unk_34, &var_r31->unk_6C, &sp10); var_f29 = atan2d(sp10.x, sp10.z); if (fabs(fn_1_E5A4(var_r31->unk_7C, var_f29)) > 10.0) { var_r28 = 1; @@ -1439,10 +1352,10 @@ void fn_1_35C0(omObjData *object) } if ((var_r31->unk_07 & 4) != 0) { if ((var_r31->unk_0B & 2) != 0) { - Hu3DModelAttrSet(var_r25, 1); + Hu3DModelAttrSet(var_r25, HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrReset(var_r25, 1); + Hu3DModelAttrReset(var_r25, HU3D_ATTR_DISPOFF); } if (--var_r31->unk_0B == 0) { var_r31->unk_07 = var_r31->unk_07 & 0xFFFFFFFB; @@ -1461,11 +1374,17 @@ void fn_1_35C0(omObjData *object) var_r31->unk_20 = var_r28; CharModelMotionShiftSet(var_r31->unk_01, object->motion[8], 0.0f, 8.0f, var_r27); } - else if (var_r28 < 3) { - if (var_r28 < 0 || var_r31->unk_20 == 0 || CharModelMotionShiftIDGet(var_r31->unk_01) < 0) { - var_r31->unk_22 = var_r28; - var_r31->unk_20 = var_r28; - CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_20], 0.0f, 8.0f, var_r27); + else { + switch (var_r28) { + case 0: + case 1: + case 2: + if (var_r31->unk_20 != 0 && CharModelMotionShiftIDGet(var_r31->unk_01) >= 0) + break; + default: + var_r31->unk_22 = var_r28; + var_r31->unk_20 = var_r28; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_20], 0.0f, 8.0f, var_r27); } } var_r31->unk_30 = CharModelMotionMaxTimeGet(var_r31->unk_01); @@ -1511,10 +1430,10 @@ void fn_1_4374(omObjData *object) var_r31->unk_44 -= 0xB4; } if (var_r31->unk_64) { - PSVECSubtract(&var_r31->unk_58, &var_r31->unk_4C, &sp1C); - PSVECSubtract(&sp1C, &var_r31->unk_6C, &sp10); + VECSubtract(&var_r31->unk_58, &var_r31->unk_4C, &sp1C); + VECSubtract(&sp1C, &var_r31->unk_6C, &sp10); sp10.y = 0.0f; - var_f30 = PSVECMag(&sp10); + var_f30 = VECMag(&sp10); if (var_f30 > 10.0f) { if (var_f30 > 20.0f) { var_f30 = 20.0f; @@ -1555,871 +1474,715 @@ void fn_1_4724(omObjData *object) Hu3DModelScaleSet(var_r29, 1.5f, 1.5f, 1.5f); Hu3DMotionSet(var_r29, object->motion[0]); Hu3DMotionSpeedSet(var_r29, 2.0f); - Hu3DModelAttrSet(var_r29, 0x40000001); + Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r29); var_r31 = fn_1_7BFC(sizeof(M438MainWork4)); object->data = var_r31; memset(var_r31, 0, sizeof(M438MainWork4)); - var_r31->unk_10 = 0.0f; - var_r31->unk_14 = -450.0f; - var_r31->unk_18 = -1550.0f; - var_r31->unk_1C = var_r31->unk_20 = var_r31->unk_24 = 0.0f; - var_r31->unk_2C = 35.0f; + var_r31->unk_10.x = 0.0f; + var_r31->unk_10.y = -450.0f; + var_r31->unk_10.z = -1550.0f; + var_r31->unk_1C.x = var_r31->unk_1C.y = var_r31->unk_1C.z = 0.0f; + var_r31->unk_28.y = 35.0f; var_r31->unk_0C = 0.0f; var_r31->unk_00 = 0; - omSetTra(object, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18); - omSetRot(object, var_r31->unk_1C, var_r31->unk_20, var_r31->unk_24); + omSetTra(object, var_r31->unk_10.x, var_r31->unk_10.y, var_r31->unk_10.z); + omSetRot(object, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); omSetSca(object, 1.25f, 1.25f, 1.25f); object->func = fn_1_4984; } -// void fn_1_4984(omObjData *object) -// { -// float sp10; -// float spC; -// float sp8; -// float temp_f0; -// float temp_f0_2; -// float var_f31; -// omObjData *var_r29; -// s16 var_r27; -// void *var_r28; -// void *var_r30; -// void *var_r31; - -// var_r29 = object; -// var_r31 = var_r29->data; -// switch (lbl_1_bss_DBA) { -// case 1: -// if (lbl_1_bss_4 == 0) { -// lbl_1_bss_4 = fn_1_10258(0x90, 1); -// fn_1_11018(lbl_1_bss_4, 0, 0x45000A); -// *(lbl_1_bss_DE4.unk_40 + ((lbl_1_bss_4 * 0xBC) + 0x30)) = fn_1_6A3C; -// fn_1_11890(lbl_1_bss_4, var_r31->unk_10, -80.0f, var_r31->unk_18); -// fn_1_12100(lbl_1_bss_4, 4); -// fn_1_124CC(lbl_1_bss_4, 1); -// *(lbl_1_bss_DE4.unk_40 + ((lbl_1_bss_4 * 0xBC) + 0x7C)) = 0; -// } -// break; -// case 2: -// var_r31->unk_14 = var_r31->unk_14 + var_r31->unk_2C; -// var_r31->unk_2C = var_r31->unk_2C - -2.0416667f; -// if (var_r31->unk_14 >= -350.0f) { -// HuAudFXPlay(0x6FA); -// *(lbl_1_bss_DE4.unk_40 + ((lbl_1_bss_4 * 0xBC) + 0x7C)) = 1; -// } -// if (var_r31->unk_14 > 0.0f) { -// HuAudFXEmiterPlay(0x700, var_r31 + 0x10); -// lbl_1_bss_DB2 = 0x78; -// lbl_1_bss_DBA += 1; -// var_r31->unk_30 = 20.0f; -// } -// break; -// case 3: -// var_r31->unk_14 = var_r31->unk_14 + var_r31->unk_2C; -// var_r31->unk_18 = var_r31->unk_18 + var_r31->unk_30; -// var_r31->unk_2C = var_r31->unk_2C + -2.0416667f; -// if (var_r31->unk_14 < 0.0f) { -// var_r31->unk_30 = var_r31->unk_30 - 0.5f; -// if (var_r31->unk_30 < 0.0f) { -// var_r31->unk_30 = 0.0f; -// } -// var_r31->unk_14 = 0.0f; -// if (lbl_1_bss_8 == 0) { -// HuAudFXPlay(0x6FE); -// var_r28 = lbl_1_bss_DD8->data; -// var_r28->unk_18A = 0x3C; -// var_r28->unk_150 = 25.0f; -// var_r28->unk_15C = 0.95f; -// var_r28->unk_174 = 90.0f; -// var_r28->unk_168 = 90.0f; -// for (var_r27 = 0; var_r27 < 4; var_r27++) { -// omVibrate(var_r27, 0x36, 0xC, 0); -// } -// lbl_1_bss_4 = fn_1_10258(0x3C, 1); -// fn_1_11018(lbl_1_bss_4, 0, 0x45000F); -// *(lbl_1_bss_DE4.unk_40 + ((lbl_1_bss_4 * 0xBC) + 0x30)) = fn_1_5D4C; -// fn_1_11890(lbl_1_bss_4, var_r31->unk_10, 50.0f + var_r31->unk_14, var_r31->unk_18); -// fn_1_124CC(lbl_1_bss_4, 1); -// lbl_1_bss_8++; -// } -// } -// sp8 = var_r31->unk_10; -// spC = var_r31->unk_14; -// sp10 = var_r31->unk_18; -// temp_f0 = spC + 120.00001f; -// spC = temp_f0; -// temp_f0_2 = sp10 - 300.0f; -// sp10 = temp_f0_2; -// var_f31 = CZoom; -// var_r30 = lbl_1_bss_DD8->data; -// var_r30->unk_00 = 0; -// var_r30->unk_144 = 1.0f; -// var_r30->unk_148 = 1.0f; -// var_r30->unk_1C = var_r30->unk_04; -// var_r30->unk_20 = var_r30->unk_08; -// var_r30->unk_24 = var_r30->unk_0C; -// var_r30->unk_34 = sp8; -// var_r30->unk_38 = temp_f0; -// var_r30->unk_3C = temp_f0_2; -// var_r30->unk_28 = var_r30->unk_10; -// var_r30->unk_2C = var_r30->unk_14; -// var_r30->unk_30 = var_r30->unk_18; -// var_r30->unk_40 = CRot.x; -// var_r30->unk_44 = CRot.y; -// var_r30->unk_48 = CRot.z; -// var_r30->unk_134 = var_r30->unk_130; -// var_r30->unk_138 = var_f31; -// break; -// case 5: -// Hu3DModelAttrReset(*var_r29->model, 0x40000001); -// Hu3DModelAttrSet(*var_r29->model, 0x40000004); -// var_r29->func = fn_1_4F50; -// var_r29->work[0] = 0xA; -// var_r29->work[1] = 0; -// break; -// } -// omSetTra(var_r29, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18); -// omSetRot(var_r29, var_r31->unk_1C, var_r31->unk_20, var_r31->unk_24); -// } - -// void fn_1_4F50(omObjData *object) -// { -// Vec sp18; -// float var_f24; -// float var_f25; -// float var_f26; -// float var_f27; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; -// omObjData *var_r30; -// s16 temp_r0; -// s16 temp_r3_3; -// s16 temp_r6; -// s16 var_r28; -// s32 temp_r3_2; -// s32 var_r26; -// u8 temp_r3; -// void *var_r27; -// void *var_r29; -// void *var_r31; - -// var_r30 = object; -// var_r31 = var_r30->data; -// switch (lbl_1_bss_DBA) { -// case 7: -// temp_r3 = var_r31->unk_00; -// switch (temp_r3) { -// case 0: -// var_r31->unk_34 = var_r31->unk_10; -// var_r31->unk_38 = var_r31->unk_14; -// var_r31->unk_3C = var_r31->unk_18; -// Hu3DMotionShiftSet(*var_r30->model, var_r30->motion->unk_06, 0.0f, 8.0f, 0); -// var_r31->unk_00 = var_r31->unk_00 + 1; - -// case 1: -// var_r31->unk_34 = var_r31->unk_10; -// var_r31->unk_38 = var_r31->unk_14; -// var_r31->unk_3C = var_r31->unk_18; -// var_r28 = 0; -// var_r26 = 0; -// loop_21: -// if (var_r28 < 4) { -// var_r29 = lbl_1_bss_DC4[var_r28]->data; -// if ((var_r29->unk_07 != 0) && ((var_r29->unk_07 & 2) == 0)) { -// PSVECSubtract(var_r29 + 0x6C, var_r31 + 0x10, &sp18); -// temp_r3_2 = var_r26; -// var_r26++; -// (&sp8[0])[temp_r3_2] = atan2d(sp18, sp18.z); -// } -// var_r28++; -// goto loop_21; -// } -// var_r31->unk_20 = var_r31->unk_20 + (18.0f + var_r30->work[1]); -// if (var_r31->unk_20 > 180.0f) { -// var_r31->unk_20 = var_r31->unk_20 - 360.0f; -// } -// if (var_r31->unk_20 <= -180.0f) { -// var_r31->unk_20 = var_r31->unk_20 + 360.0f; -// } -// var_r28 = 0; -// loop_35: -// if (var_r28 >= var_r26) { } -// else { -// var_f31 = fn_1_E5A4((&sp8[0])[var_r28], var_r30->rot.y); -// if (var_f31 < 0.0f) { -// var_f27 = -var_f31; -// } -// else { -// var_f27 = var_f31; -// } -// if (!(var_f27 > (20.0f + var_r30->work[1])) -// && ((var_r30->work[0] -= 1, ((var_r30->work[0] == 0) != 0)) || ((fn_1_7DB4() & 0xF) == 0))) { -// var_r31->unk_08 = (&sp8[0])[var_r28]; -// var_r31->unk_20 = (&sp8[0])[var_r28]; -// var_r31->unk_2C = 16.333334f; -// var_r31->unk_0C = 6.0 + (0.5 * var_r30->work[1]); -// var_r31->unk_34 = var_r31->unk_10; -// var_r31->unk_38 = var_r31->unk_14; -// var_r31->unk_3C = var_r31->unk_18; -// var_r31->unk_40 = 20.0f; -// var_r31->unk_44 = 0.0f; -// var_r31->unk_02 = 0x1E; -// Hu3DMotionShiftSet(*var_r30->model, var_r30->motion->unk_00, 0.0f, 8.0f, 0x40000002); -// var_r31->unk_00 = var_r31->unk_00 + 1; -// } -// else { -// var_r28++; -// goto loop_35; -// } -// } -// break; -// case 2: -// var_r31->unk_44 = var_r31->unk_44 + 10.0f; -// if (var_r31->unk_44 > 90.0f) { -// var_r31->unk_44 = 0.0f; -// } -// var_f29 = cosd(var_r31->unk_44); -// var_r31->unk_1C = var_r31->unk_40 * var_f29; -// var_r31->unk_10 = var_r31->unk_34 + ((50.0f * var_f29) * sind(var_r31->unk_20)); -// var_r31->unk_18 = var_r31->unk_3C + ((50.0f * var_f29) * cosd(var_r31->unk_20)); -// temp_r0 = var_r31->unk_02 - 1; -// var_r31->unk_02 = temp_r0; -// if (temp_r0 == 0) { -// HuAudFXEmiterPlay(0x700, var_r31 + 0x10); -// Hu3DModelAttrReset(*var_r30->model, 0x40000002); -// Hu3DModelAttrSet(*var_r30->model, 0x40000001); -// var_r31->unk_1C = 0.0f; -// var_r31->unk_00 = var_r31->unk_00 + 1; -// } -// break; -// case 3: -// var_r31->unk_0C = var_r31->unk_0C + 0.5; -// var_r31->unk_2C = var_r31->unk_2C + -3.0625f; -// var_f28 = var_r31->unk_0C + (0.8f * var_r31->unk_2C); -// var_r31->unk_28 = var_f28 * sind(var_r31->unk_08); -// var_r31->unk_30 = var_f28 * cosd(var_r31->unk_08); -// var_r31->unk_10 = var_r31->unk_10 + var_r31->unk_28; -// var_r31->unk_14 = var_r31->unk_14 + var_r31->unk_2C; -// var_r31->unk_18 = var_r31->unk_18 + var_r31->unk_30; -// var_r31->unk_34 = var_r31->unk_10; -// var_r31->unk_38 = var_r31->unk_14; -// var_r31->unk_3C = var_r31->unk_18; -// if (var_r31->unk_14 < 0.0f) { -// var_r31->unk_14 = 0.0f; -// var_r31->unk_2C = 16.333334f; -// } -// sp18 = var_r31->unk_10; -// sp18.y = var_r31->unk_14; -// sp18.z = var_r31->unk_18; -// sp18.y = 0.0f; -// var_f30 = PSVECMag(&sp18); -// if (!(var_f30 <= 700.0f)) { -// var_r31->unk_02 = 1; -// if (fn_1_DA64(atan2d(sp18, sp18.z)) != 0) { -// var_r31->unk_02 = 0x78; -// for (var_r28 = 0; var_r28 < 4; var_r28++) { -// var_r29 = lbl_1_bss_DC4[var_r28]->data; -// if ((var_r29->unk_07 != 0) && ((var_r29->unk_07 & 2) == 0)) { -// omVibrate(var_r28, 0xC, 4, 2); -// } -// } -// var_r27 = lbl_1_bss_DD8->data; -// var_r27->unk_188 = 0x3C; -// var_r27->unk_14C = 25.0f; -// var_r27->unk_158 = 0.95f; -// var_r27->unk_170 = 90.0f; -// var_r27->unk_164 = 90.0f; -// HuAudFXEmiterPlay(0x6FC, var_r31 + 0x10); -// HuAudFXPlay(0x6FE); -// } -// fn_1_9634(&sp18); -// var_r31->unk_10 = 700.0f * sp18; -// var_r31->unk_18 = 700.0f * sp18.z; -// var_r31->unk_40 = var_r31->unk_1C; -// var_r31->unk_44 = var_r31->unk_20; -// var_r31->unk_48 = var_r31->unk_24; -// var_r31->unk_00 = var_r31->unk_00 + 1; -// } -// break; -// case 4: -// var_r31->unk_2C = var_r31->unk_2C + -3.0625f; -// var_r31->unk_14 = var_r31->unk_14 + var_r31->unk_2C; -// if (!(var_r31->unk_14 > 0.0f)) { -// var_r31->unk_14 = 0.0f; -// var_r31->unk_34 = var_r31->unk_10; -// var_r31->unk_38 = var_r31->unk_14; -// var_r31->unk_3C = var_r31->unk_18; -// Hu3DModelAttrReset(*var_r30->model, 0x40000001); -// Hu3DModelAttrSet(*var_r30->model, 0x40000004); -// var_r31->unk_44 = var_r31->unk_44 + 8.0f; -// var_r31->unk_40 = 10.0 * sind(var_r31->unk_44); -// var_r31->unk_48 = 10.0 * cosd(var_r31->unk_44); -// mtxRot(&sp24[0], 0.0f, 360.0f - var_r31->unk_08, var_r31->unk_48); -// mtxRotCat(&sp24[0], var_r31->unk_40, 0.0f, 0.0f); -// fn_1_8164(&sp24[0], var_r31 + 0x1C); -// temp_r3_3 = var_r31->unk_02 - 1; -// var_r31->unk_02 = temp_r3_3; -// if (temp_r3_3 == 0) { -// var_r31->unk_24 = 0.0f; -// var_r31->unk_1C = 0.0f; -// var_r31->unk_20 = var_r31->unk_08; -// var_r30->work[0] = 0.5f * (lbl_1_bss_DB4 / 60.0f); -// var_r30->work[1] += 1; -// var_r31->unk_00 = 0; -// } -// } -// break; -// } -// break; -// case 8: -// var_r31->unk_24 = 0.0f; -// var_r31->unk_1C = 0.0f; -// Hu3DModelAttrReset(*var_r30->model, 0x40000001); -// Hu3DModelAttrSet(*var_r30->model, 0x40000004); -// break; -// case 9: -// var_r31->unk_20 = fn_1_7EDC(var_r31->unk_20, 0.0f, 0.9f); -// break; -// case 10: -// if (var_r31->unk_04 == 0) { -// Hu3DModelAttrReset(*var_r30->model, 0x40000006); -// Hu3DMotionSet(*var_r30->model, var_r30->motion->unk_02); -// Hu3DMotionSpeedSet(*var_r30->model, 1.0f); -// Hu3DModelAttrSet(*var_r30->model, 0x40000001); -// var_r31->unk_04 = 1; -// } -// break; -// } -// if (lbl_1_bss_DBA == 7) { -// var_r28 = 0; -// var_r26 = 0; -// loop_72: -// if (var_r28 < 4) { -// var_r29 = lbl_1_bss_DC4[var_r28]->data; -// PSVECSubtract(var_r29 + 0x6C, var_r31 + 0x10, &sp18); -// var_f30 = PSVECMag(&sp18); -// if (!(var_f30 >= 200.0f) && (var_r29->unk_20 != 7)) { -// omVibrate(var_r29->unk_00, 0xC, 4, 2); -// var_r29->unk_07 = var_r29->unk_07 | 2; -// var_r29->unk_0D = 0; -// var_r29->unk_20 = 7; -// var_r29->unk_28 = atan2d(sp18, sp18.z); -// if (var_r29->unk_28 >= 360.0f) { -// var_r29->unk_28 = var_r29->unk_28 - 360.0f; -// } -// var_f26 = fn_1_E5A4(var_r29->unk_28, var_r29->unk_7C); -// var_f25 = fabs(var_f26); -// var_f24 = var_f25; -// if (var_f24 > 90.0) { -// var_r29->unk_7C = 180.0f + var_r29->unk_28; -// var_r29->unk_14 = 0; -// } -// else { -// var_r29->unk_7C = var_r29->unk_28; -// var_r29->unk_14 = 1; -// } -// var_r29->unk_24 = 10.0f; -// var_r29->unk_88 = 53.083336f; -// if (lbl_1_bss_DAA[var_r28] == 0) { -// temp_r6 = lbl_1_bss_DA8; -// lbl_1_bss_DA8 = temp_r6 - 1; -// lbl_1_bss_DAA[var_r28] = temp_r6; -// } -// } -// var_r28++; -// goto loop_72; -// } -// } -// omSetTra(var_r30, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18); -// omSetRot(var_r30, var_r31->unk_1C, var_r31->unk_20, var_r31->unk_24); -// } - -// void fn_1_5D4C(void *arg0) -// { -// s16 sp8; -// float var_f26; -// float var_f27; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; -// s32 var_r29; -// u8 temp_r0; -// void *var_r30; -// void *var_r31; - -// var_r30 = arg0; -// sp8 = 0; -// temp_r0 = var_r30->unk_60; -// switch (temp_r0) { -// case 0: -// var_f27 = 360.0f / var_r30->unk_02; -// for (var_r31 = var_r30->unk_3C; var_r29 = 0; var_r31 < var_r30->unk_02; var_r29++; var_r31 += 0x98) { -// var_f26 = 0.8f + (0.1f * (2.0f * (0.000030517578f * (fn_1_7DB4() - 0x8000)))); -// var_r31->unk_6C = sind((var_f27 * var_r29)) * var_f26; -// var_r31->unk_70 = 0.0f; -// var_f26 = 0.8f + (0.1f * (2.0f * (0.000030517578f * (fn_1_7DB4() - 0x8000)))); -// var_r31->unk_74 = cosd((var_f27 * var_r29)) * var_f26; -// var_r31->unk_00 = 40.0f * var_r31->unk_6C; -// var_r31->unk_04 = 6.0f; -// var_r31->unk_08 = 40.0f * var_r31->unk_74; -// var_f29 = 0.01f * (100.0f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_54 = 80.0f + (60.0f * var_f29); -// var_r31->unk_55 = 64.0f + (60.0f * var_f29); -// var_r31->unk_56 = 56.0f + (60.0f * var_f29); -// } -// var_r30->unk_7C = 0x30; -// var_r30->unk_60 = var_r30->unk_60 + 1; - -// case 1: -// var_r30->unk_7C = var_r30->unk_7C - 1; -// var_f31 = (48.0f - var_r30->unk_7C) / 48.0f; -// var_f28 = var_r30->unk_7C / 48.0f; -// for (var_r31 = var_r30->unk_3C; var_r29 = 0; var_r31 < var_r30->unk_02; var_r29++; var_r31 += 0x98) { -// var_r31->unk_00 = var_r31->unk_00 + (12.5f * var_f28 * var_r31->unk_6C); -// var_r31->unk_08 = var_r31->unk_08 + (12.5f * var_f28 * var_r31->unk_74); -// var_f30 = 2.4f + (6.0f * var_f31); -// var_r31->unk_18 = var_f30; -// var_r31->unk_1C = var_f30; -// var_r31->unk_20 = var_f30; -// var_r31->unk_57 = 96.0f * (1.0f - (var_f31 * var_f31)); -// } -// if (var_r30->unk_7C == 0) { -// var_r30->unk_60 = var_r30->unk_60 + 1; -// return; -// } -// return; -// case 2: -// fn_1_107BC(var_r30->unk_00); -// break; -// } -// } - -void fn_1_62BC(void *arg0) +void fn_1_4984(omObjData *object) { - // s16 sp8; + Vec sp8; + float var_f31; + s32 var_r27; + M438MainWork3 *var_r28; + M438MainWork3 *var_r30; + M438MainWork3 *var_r31; - // void *var_r31; - // void *var_r30; - - // var_r30 = arg0; - // sp8 = 0; - // switch (var_r30->unk_60) { - // case 0: - // var_r31 = var_r30->unk_3C; - // var_r31->unk_70 = 5.0f; - // var_r31->unk_6C *= -2.0f; - // var_r31->unk_74 *= -2.0f; - // var_r30->unk_60++; - - // case 1: - // var_r31 = var_r30->unk_3C; - // var_r31->unk_00 += var_r31->unk_6C; - // var_r31->unk_04 += var_r31->unk_70; - // var_r31->unk_08 += var_r31->unk_74; - // return; - // case 2: - // fn_1_107BC(var_r30->unk_00); - // return; - // } + var_r31 = object->data; + switch (lbl_1_bss_DBA) { + case 1: + if (lbl_1_bss_4 == 0) { + lbl_1_bss_4 = fn_1_10258(0x90, 1); + fn_1_11018(lbl_1_bss_4, 0, 0x45000A); + lbl_1_bss_DE4.unk_40[lbl_1_bss_4].unk_30 = fn_1_6A3C; + fn_1_11890(lbl_1_bss_4, var_r31->unk_10.x, -80.0f, var_r31->unk_10.z); + fn_1_12100(lbl_1_bss_4, 4); + fn_1_124CC(lbl_1_bss_4, 1); + lbl_1_bss_DE4.unk_40[lbl_1_bss_4].unk_7C = 0; + } + break; + case 2: + var_r31->unk_10.y += var_r31->unk_28.y; + var_r31->unk_28.y -= -2.0416667f; + if (var_r31->unk_10.y >= -350.0f) { + HuAudFXPlay(0x6FA); + lbl_1_bss_DE4.unk_40[lbl_1_bss_4].unk_7C = 1; + } + if (var_r31->unk_10.y > 0.0f) { + HuAudFXEmiterPlay(0x700, &var_r31->unk_10); + lbl_1_bss_DB2 = 0x78; + lbl_1_bss_DBA += 1; + var_r31->unk_28.z = 20.0f; + } + break; + case 3: + var_r31->unk_10.y += var_r31->unk_28.y; + var_r31->unk_10.z += var_r31->unk_28.z; + var_r31->unk_28.y += -2.0416667f; + if (var_r31->unk_10.y < 0.0f) { + var_r31->unk_28.z -= 0.5f; + if (var_r31->unk_28.z < 0.0f) { + var_r31->unk_28.z = 0.0f; + } + var_r31->unk_10.y = 0.0f; + if (lbl_1_bss_8 == 0) { + HuAudFXPlay(0x6FE); + fn_1_28E4(1, 0x3C, 25.0f, 0.95f, 90.0f); + for (var_r27 = 0; var_r27 < 4; var_r27++) { + omVibrate(var_r27, 0x36, 0xC, 0); + } + lbl_1_bss_4 = fn_1_10258(0x3C, 1); + fn_1_11018(lbl_1_bss_4, 0, 0x45000F); + lbl_1_bss_DE4.unk_40[lbl_1_bss_4].unk_30 = fn_1_5D4C; + fn_1_11890(lbl_1_bss_4, var_r31->unk_10.x, 50.0f + var_r31->unk_10.y, var_r31->unk_10.z); + fn_1_124CC(lbl_1_bss_4, 1); + lbl_1_bss_8++; + } + } + sp8 = var_r31->unk_10; + sp8.y += 120.00001f; + sp8.z -= 300.0f; + var_f31 = CZoom; + var_r30 = lbl_1_bss_DD8->data; + var_r30->unk_00 = 0; + var_r30->unk_148 = var_r30->unk_144 = 1.0f; + var_r30->unk_1C = var_r30->unk_04; + var_r30->unk_34.x = sp8.x; + var_r30->unk_34.y = sp8.y; + var_r30->unk_34.z = sp8.z; + var_r30->unk_28 = var_r30->unk_10; + var_r30->unk_40.x = CRot.x; + var_r30->unk_40.y = CRot.y; + var_r30->unk_40.z = CRot.z; + var_r30->unk_134 = var_r30->unk_130; + var_r30->unk_138 = var_f31; + break; + case 5: + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_REV); + object->func = fn_1_4F50; + object->work[0] = 10; + object->work[1] = 0; + break; + } + omSetTra(object, var_r31->unk_10.x, var_r31->unk_10.y, var_r31->unk_10.z); + omSetRot(object, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); } -// void fn_1_63B0(void *arg0) -// { -// float sp10; -// float spC; -// float sp8; -// float temp_f0; -// float temp_f0_2; -// float temp_f0_3; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; -// double var_f27; -// s16 temp_r0_2; -// s32 var_r29; -// u8 temp_r0; -// void *var_r30; -// void *var_r31; +void fn_1_4F50(omObjData *object) +{ + Mtx sp24; + Vec sp18; + float sp8[4]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f25; + s32 var_r26; + M438MainWork3 *var_r27; + s32 var_r28; + M438MainWork *var_r29; + M438MainWork3 *var_r31; -// var_r30 = arg0; -// for (var_r31 = var_r30->unk_3C; var_r29 = 0; var_r31 < var_r30->unk_02; var_r29++; var_r31 += 0x98) { -// temp_r0 = var_r31->unk_5C; -// switch (temp_r0) { -// case 0: -// if ((atan2d(var_r30->unk_80, var_r30->unk_84)) < 0.0) { -// var_f27 = -(atan2d(var_r30->unk_80, var_r30->unk_84)); -// } -// else { -// var_f27 = atan2d(var_r30->unk_80, var_r30->unk_84); -// } -// var_f29 = var_f27; -// if (var_f29 > 90.0f) { -// var_f29 = 180.0f - var_f29; -// } -// var_f28 = 40.0f * (0.1f + ((0.9f * var_f29) / 90.0f)); -// var_f31 = (0.5f * var_f28) + ((var_r30->unk_88 - var_f28) * (0.000015258789f * fn_1_7DB4())); -// temp_f0 = var_f31 * var_r30->unk_80; -// sp8 = temp_f0; -// temp_f0_2 = var_f31 * var_r30->unk_84; -// sp10 = temp_f0_2; -// var_r31->unk_00 = temp_f0; -// var_r31->unk_04 = 0.0f; -// var_r31->unk_08 = temp_f0_2; -// var_f31 = 0.0f; -// spC = 0.0f; -// loop_14: -// if (var_f31 < (var_r30->unk_8C - 40.0f)) { -// temp_f0_3 = spC + 0.8f; -// spC = temp_f0_3; -// var_f31 += temp_f0_3; -// goto loop_14; -// } -// var_r31->unk_6C = 0.0f; -// var_r31->unk_70 = spC + (1.5f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_74 = 0.0f; -// if ((fn_1_7DB4() & 7) != 0) { -// var_r31->unk_33 = 1; -// var_r31->unk_54 = 0x40; -// var_r31->unk_55 = 0x10; -// var_r31->unk_56 = 4; -// var_r31->unk_57 = 0xFF; -// var_f30 = 3.75f + (1.75f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_60 = var_f30 * (0.1f + ((0.9f * var_f29) / 90.0f)); -// var_r31->unk_68 = var_f30; -// var_r31->unk_64 = var_f30; -// } -// else { -// var_r31->unk_33 = 0; -// var_r31->unk_54 = 0; -// var_r31->unk_55 = 0; -// var_r31->unk_56 = 0; -// var_r31->unk_57 = 0xFF; -// var_f30 = 0.25f + (0.25f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_64 = 1.5f * var_f30; -// var_r31->unk_68 = var_f30; -// var_r31->unk_60 = var_f30; -// } -// var_r31->unk_58->unk_24 = 0; -// var_r31->unk_78 = (60.0f * (0.000015258789f * fn_1_7DB4())) + 1; -// var_r31->unk_5C = var_r31->unk_5C + 1; + var_r31 = object->data; + switch (lbl_1_bss_DBA) { + case 7: + switch (var_r31->unk_00) { + case 0: + var_r31->unk_34 = var_r31->unk_10; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0); + var_r31->unk_00++; + case 1: + var_r31->unk_34 = var_r31->unk_10; -// case 1: -// temp_r0_2 = var_r31->unk_78 - 1; -// var_r31->unk_78 = temp_r0_2; -// if (temp_r0_2 == 0) { -// var_r31->unk_58->unk_24 = 0x11; -// var_r31->unk_58->unk_28 = 0.5f; -// var_r31->unk_58->unk_2C = 0.0f; -// var_r31->unk_58->unk_00 = 0; -// var_r31->unk_5C = var_r31->unk_5C + 1; -// } -// break; -// case 2: -// var_r31->unk_00 = var_r31->unk_00 + var_r31->unk_6C; -// var_r31->unk_04 = var_r31->unk_04 + var_r31->unk_70; -// var_r31->unk_08 = var_r31->unk_08 + var_r31->unk_74; -// if (var_r31->unk_04 < 0.0f) { -// var_r31->unk_04 = 0.0f; -// } -// var_r31->unk_60 = var_r31->unk_60 * 0.95f; -// var_r31->unk_64 = var_r31->unk_64 * 0.95f; -// var_r31->unk_68 = var_r31->unk_68 * 0.95f; -// var_r31->unk_70 = var_r31->unk_70 - 0.8f; -// if ((var_r31->unk_58->unk_24 & 8) != 0) { -// var_r31->unk_5C = 0; -// } -// break; -// } -// var_r31->unk_18 = var_r31->unk_60 * var_r30->unk_90; -// var_r31->unk_1C = var_r31->unk_64 * var_r30->unk_90; -// var_r31->unk_20 = var_r31->unk_68 * var_r30->unk_90; -// } -// } + for (var_r28 = 0, var_r26 = 0; var_r28 < 4; var_r28++) { + var_r29 = lbl_1_bss_DC4[var_r28]->data; + if ((var_r29->unk_07 != 0) && ((var_r29->unk_07 & 2) == 0)) { + VECSubtract(&var_r29->unk_6C, &var_r31->unk_10, &sp18); + sp8[var_r26++] = atan2d(sp18.x, sp18.z); + } + } + var_r31->unk_1C.y += 18.0f + object->work[1]; + if (var_r31->unk_1C.y > 180.0f) { + var_r31->unk_1C.y -= 360.0f; + } + if (var_r31->unk_1C.y <= -180.0f) { + var_r31->unk_1C.y += 360.0f; + } -// void fn_1_6A3C(void *arg0) -// { -// float sp10; -// float spC; -// float sp8; -// float temp_f0; -// float temp_f0_2; -// float temp_f0_3; -// float temp_f0_4; -// float var_f29; -// float var_f30; -// float var_f31; -// s16 temp_r0_2; -// s16 var_r29; -// s32 var_r27; -// s32 var_r28; -// u8 temp_r0; -// void *var_r30; -// void *var_r31; + for (var_r28 = 0; var_r28 < var_r26; var_r28++) { + var_f31 = fn_1_E5A4(sp8[var_r28], object->rot.y); + if (var_f31 < 0.0f) { + var_f27 = -var_f31; + } + else { + var_f27 = var_f31; + } + if (var_f27 > (20.0f + object->work[1])) + continue; + object->work[0]--; + if (object->work[0] != 0 && ((fn_1_7DB4() & 0xF) != 0)) + continue; + var_r31->unk_04.y = sp8[var_r28]; + var_r31->unk_1C.y = sp8[var_r28]; + var_r31->unk_28.y = 16.333334f; + var_r31->unk_04.z = 6.0 + (0.5 * object->work[1]); + var_r31->unk_34 = var_r31->unk_10; + var_r31->unk_40.x = 20.0f; + var_r31->unk_40.y = 0.0f; + var_r31->unk_02 = 30; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000002); + var_r31->unk_00++; + break; + } + break; + case 2: + var_r31->unk_40.y += 10.0f; + if (var_r31->unk_40.y > 90.0f) { + var_r31->unk_40.y = 0.0f; + } + var_f29 = cosd(var_r31->unk_40.y); + var_r31->unk_1C.x = var_r31->unk_40.x * var_f29; + var_r31->unk_10.x = var_r31->unk_34.x + ((50.0f * var_f29) * sind(var_r31->unk_1C.y)); + var_r31->unk_10.z = var_r31->unk_34.z + ((50.0f * var_f29) * cosd(var_r31->unk_1C.y)); + if (--var_r31->unk_02 == 0) { + HuAudFXEmiterPlay(0x700, &var_r31->unk_10); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + var_r31->unk_1C.x = 0.0f; + var_r31->unk_00++; + } + break; + case 3: + var_r31->unk_04.z += 0.5; + var_r31->unk_28.y += -3.0625f; + var_f28 = var_r31->unk_04.z + (0.8f * var_r31->unk_28.y); + var_r31->unk_28.x = var_f28 * sind(var_r31->unk_04.y); + var_r31->unk_28.z = var_f28 * cosd(var_r31->unk_04.y); + var_r31->unk_10.x += var_r31->unk_28.x; + var_r31->unk_10.y += var_r31->unk_28.y; + var_r31->unk_10.z += var_r31->unk_28.z; + var_r31->unk_34 = var_r31->unk_10; + if (var_r31->unk_10.y < 0.0f) { + var_r31->unk_10.y = 0.0f; + var_r31->unk_28.y = 16.333334f; + } + sp18 = var_r31->unk_10; + sp18.y = 0.0f; + var_f30 = VECMag(&sp18); + if (var_f30 <= 700.0f) + break; + var_r31->unk_02 = 1; + if (fn_1_DA64(atan2d(sp18.x, sp18.z)) != 0) { + var_r31->unk_02 = 0x78; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r29 = lbl_1_bss_DC4[var_r28]->data; + if ((var_r29->unk_07 != 0) && ((var_r29->unk_07 & 2) == 0)) { + omVibrate(var_r28, 0xC, 4, 2); + } + } + fn_1_28E4(0, 0x3C, 25.0f, 0.95f, 90.0f); + HuAudFXEmiterPlay(0x6FC, &var_r31->unk_10); + HuAudFXPlay(0x6FE); + } + fn_1_9634(&sp18); + var_r31->unk_10.x = 700.0f * sp18.x; + var_r31->unk_10.z = 700.0f * sp18.z; + var_r31->unk_40 = var_r31->unk_1C; + var_r31->unk_00++; + break; + case 4: + var_r31->unk_28.y += -3.0625f; + var_r31->unk_10.y += var_r31->unk_28.y; + if (var_r31->unk_10.y > 0.0f) + break; + var_r31->unk_10.y = 0.0f; + var_r31->unk_34 = var_r31->unk_10; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_REV); + var_r31->unk_40.y += 8.0f; + var_r31->unk_40.x = 10.0 * sind(var_r31->unk_40.y); + var_r31->unk_40.z = 10.0 * cosd(var_r31->unk_40.y); + mtxRot(sp24, 0.0f, 360.0f - var_r31->unk_04.y, var_r31->unk_40.z); + mtxRotCat(sp24, var_r31->unk_40.x, 0.0f, 0.0f); + fn_1_8164(sp24, &var_r31->unk_1C); + if (--var_r31->unk_02 == 0) { + var_r31->unk_1C.x = var_r31->unk_1C.z = 0.0f; + var_r31->unk_1C.y = var_r31->unk_04.y; + object->work[0] = 0.5f * (lbl_1_bss_DB4 / 60.0f); + object->work[1]++; + var_r31->unk_00 = 0; + } + break; + } + break; + case 8: + var_r31->unk_1C.x = var_r31->unk_1C.z = 0.0f; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_REV); + break; + case 9: + var_r31->unk_1C.y = fn_1_7EDC(var_r31->unk_1C.y, 0.0f, 0.9f); + break; + case 10: + if (var_r31->unk_04s == 0) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + Hu3DMotionSet(object->model[0], object->motion[1]); + Hu3DMotionSpeedSet(object->model[0], 1.0f); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + var_r31->unk_04s = 1; + } + break; + } + if (lbl_1_bss_DBA == 7) { + for (var_r28 = 0, var_r26 = 0; var_r28 < 4; var_r28++) { + var_r29 = lbl_1_bss_DC4[var_r28]->data; + VECSubtract(&var_r29->unk_6C, &var_r31->unk_10, &sp18); + var_f30 = VECMag(&sp18); + if (var_f30 >= 200.0f || var_r29->unk_20 == 7) + continue; + omVibrate(var_r29->unk_00, 0xC, 4, 2); + var_r29->unk_07 |= 2; + var_r29->unk_0D = 0; + var_r29->unk_20 = 7; + var_r29->unk_28 = atan2d(sp18.x, sp18.z); + if (var_r29->unk_28 >= 360.0f) { + var_r29->unk_28 -= 360.0f; + } + if (fabs(fn_1_E5A4(var_r29->unk_28, var_r29->unk_7C)) > 90.0) { + var_r29->unk_7C = 180.0f + var_r29->unk_28; + var_r29->unk_14 = 0; + } + else { + var_r29->unk_7C = var_r29->unk_28; + var_r29->unk_14 = 1; + } + var_r29->unk_24 = 10.0f; + var_r29->unk_88 = 53.083336f; + if (lbl_1_bss_DAA[var_r28] == 0) { + lbl_1_bss_DAA[var_r28] = lbl_1_bss_DA8--; + } + } + } + omSetTra(object, var_r31->unk_10.x, var_r31->unk_10.y, var_r31->unk_10.z); + omSetRot(object, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); +} -// var_r30 = arg0; -// var_r31 = var_r30->unk_3C; -// var_r28 = 0; -// var_r27 = 0; -// loop_35: -// if (var_r27 < var_r30->unk_02) { -// if ((var_r30->unk_7C != 0) && (var_r31->unk_7A == 0)) { -// var_r31->unk_5C = 0; -// } -// temp_r0 = var_r31->unk_5C; -// switch (temp_r0) { -// case 0: -// if (var_r30->unk_7C != 0) { -// var_f30 = (180.0f * (0.000015258789f * fn_1_7DB4())) - 90.0f; -// var_f29 = 125.0f; -// temp_f0 = sind(var_f30); -// sp8 = temp_f0; -// temp_f0_2 = cosd(var_f30); -// sp10 = temp_f0_2; -// var_r31->unk_00 = 125.0f * temp_f0; -// var_r31->unk_04 = 0.0f; -// var_r31->unk_08 = 125.0f * temp_f0_2; -// spC = 25.0f; -// var_r31->unk_6C = 100.0f * (0.1f * temp_f0); -// var_r31->unk_70 = 25.0f + (2.5f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_74 = 100.0f * (0.1f * temp_f0_2); -// var_r31->unk_78 = (24.0f * (0.000015258789f * fn_1_7DB4())) + 1; -// var_r31->unk_7A = 1; -// } -// else { -// var_f30 = (180.0f * (0.000015258789f * fn_1_7DB4())) - 90.0f; -// var_f29 = 125.0f * (0.000015258789f * fn_1_7DB4()); -// temp_f0_3 = sind(var_f30); -// sp8 = temp_f0_3; -// temp_f0_4 = cosd(var_f30); -// sp10 = temp_f0_4; -// var_r31->unk_00 = var_f29 * temp_f0_3; -// var_r31->unk_04 = 0.0f; -// var_r31->unk_08 = var_f29 * temp_f0_4; -// spC = 5.0f; -// var_r31->unk_6C = 100.0 * (0.015 * temp_f0_3); -// var_r31->unk_70 = 5.0f + (0.000015258789f * fn_1_7DB4()); -// var_r31->unk_74 = 100.0f * (0.015f * temp_f0_4); -// var_r31->unk_78 = (60.0f * (0.000015258789f * fn_1_7DB4())) + 1; -// var_r31->unk_7A = 0; -// } -// var_r31->unk_38 = var_r31->unk_38 & 0xFFFFFFFB; -// if ((fn_1_7DB4() & 0xF) != 0) { -// var_r31->unk_33 = 1; -// var_r31->unk_54 = 0x40; -// var_r31->unk_55 = 0x10; -// var_r31->unk_56 = 4; -// var_r31->unk_57 = 0xFF; -// var_f31 = 1.8f + (0.000015258789f * fn_1_7DB4()); -// var_r31->unk_18 = var_f31; -// var_r31->unk_1C = var_f31; -// var_r31->unk_20 = var_f31; -// goto block_19; -// } -// if (var_r30->unk_7C != 0) { -// var_r31->unk_33 = 0; -// var_r31->unk_54 = 0; -// var_r31->unk_55 = 0; -// var_r31->unk_56 = 0; -// var_r31->unk_57 = 0xFF; -// var_f31 = 0.25f + (0.25f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_18 = var_f31; -// var_r31->unk_1C = 1.5f * var_f31; -// var_r31->unk_20 = var_f31; -// block_19: -// var_r31->unk_58->unk_24 = 0; -// var_r31->unk_5C = var_r31->unk_5C + 1; -// } -// else { -// var_r29 = fn_1_10258(8, 1); -// fn_1_11018(var_r29, 0, 0x45000A); -// *(lbl_1_bss_DE4.unk_40 + ((var_r29 * 0xBC) + 0x30)) = fn_1_7300; -// fn_1_11890(var_r29, var_r30->unk_0C + var_r31->unk_00, var_r30->unk_10 + var_r31->unk_04, var_r30->unk_14 + var_r31->unk_08); -// fn_1_12100(var_r29, 4); -// fn_1_124CC(var_r29, 1); -// var_r31->unk_38 = var_r31->unk_38 | 4; -// } -// break; -// case 1: -// if (var_r31->unk_7A != 0) { -// var_r31->unk_70 = var_r31->unk_70 - 0.5f; -// } -// temp_r0_2 = var_r31->unk_78 - 1; -// var_r31->unk_78 = temp_r0_2; -// if (temp_r0_2 == 0) { -// var_r31->unk_58->unk_24 = 0x11; -// if (var_r31->unk_7A != 0) { -// var_r31->unk_58->unk_28 = 0.5f; -// } -// else { -// var_r31->unk_58->unk_28 = 0.5f; -// } -// var_r31->unk_58->unk_2C = 0.0f; -// var_r31->unk_58->unk_00 = 0; -// var_r31->unk_5C = var_r31->unk_5C + 1; -// } -// break; -// case 2: -// var_r31->unk_00 = var_r31->unk_00 + var_r31->unk_6C; -// var_r31->unk_04 = var_r31->unk_04 + var_r31->unk_70; -// var_r31->unk_08 = var_r31->unk_08 + var_r31->unk_74; -// if (var_r31->unk_04 < 0.0f) { -// var_r31->unk_04 = 0.0f; -// } -// var_r31->unk_18 = var_r31->unk_18 * 0.95f; -// var_r31->unk_1C = var_r31->unk_1C * 0.95f; -// var_r31->unk_20 = var_r31->unk_20 * 0.95f; -// var_r31->unk_70 = var_r31->unk_70 - 1.5f; -// if ((var_r31->unk_58->unk_24 & 8) != 0) { -// if (var_r31->unk_7A != 0) { -// var_r31->unk_5C = 3; -// } -// else { -// var_r31->unk_5C = 0; -// } -// } -// break; -// case 3: -// var_r28++; -// break; -// } -// var_r27++; -// var_r31 += 0x98; -// goto loop_35; -// } -// if (var_r28 >= var_r30->unk_02) { -// fn_1_107BC(var_r30->unk_00); -// } -// } +void fn_1_5D4C(M438UnkStruct2 *arg0) +{ + s16 sp8; + f32 temp_f31; + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + f32 temp_f27; + s32 var_r29; + M438UnkStruct *var_r31; -// void fn_1_7300(void *arg0) -// { -// float sp10; -// float spC; -// float sp8; -// float temp_f0; -// float temp_f0_2; -// float temp_f0_3; -// float var_f29; -// float var_f30; -// float var_f31; -// s16 temp_r0_2; -// s32 var_r28; -// s32 var_r29; -// u8 temp_r0; -// u8 temp_r0_3; -// void *var_r30; -// void *var_r31; + sp8 = 0; + switch (arg0->unk_60) { /* irregular */ + case 0: + temp_f27 = 360.0f / arg0->unk_02; -// var_r30 = arg0; -// var_r31 = var_r30->unk_3C; -// temp_r0 = var_r30->unk_60; -// switch (temp_r0) { -// case 0: -// var_f31 = 0.01f; -// var_r30->unk_2C = 0.01f; -// var_r30->unk_28 = 0.01f; -// var_r30->unk_24 = 0.01f; -// var_r30->unk_7C = Hu3DModelCreateFile(0x45000B); -// var_r30->unk_7E = (30.0f * (0.000015258789f * fn_1_7DB4())) + 0x1E; -// var_r29 = 0; -// loop_6: -// if (var_r29 < var_r30->unk_02) { -// var_r31->unk_38 = var_r31->unk_38 | 4; -// var_r29++; -// var_r31 += 0x98; -// goto loop_6; -// } -// var_r30->unk_60 = var_r30->unk_60 + 1; + var_r31 = &arg0->unk_3C[0]; + for (var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r31++) { + var_r31->unk_6C.x = sind(temp_f27 * var_r29) * (0.8f + (0.1f * (2.0f * ((1.0f / 32768.0f) * (fn_1_7DB4() - 0x8000))))); + var_r31->unk_6C.y = 0.0f; + var_r31->unk_6C.z = cosd(temp_f27 * var_r29) * (0.8f + (0.1f * (2.0f * ((1.0f / 32768.0f) * (fn_1_7DB4() - 0x8000))))); + var_r31->unk_00.x = (40.0f * var_r31->unk_6C.x); + var_r31->unk_00.y = 6.0f; + var_r31->unk_00.z = (40.0f * var_r31->unk_6C.z); + temp_f29 = 0.01f * (100.0f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_54.r = (80.0f + 60.0f * temp_f29); + var_r31->unk_54.g = (64.0f + 60.0f * temp_f29); + var_r31->unk_54.b = (56.0f + 60.0f * temp_f29); + } + arg0->unk_7C = 0x30; + arg0->unk_60++; + case 1: + arg0->unk_7C--; + temp_f31 = (48.0f - arg0->unk_7C) / 48.0f; + temp_f28 = arg0->unk_7C / 48.0f; -// case 1: -// var_r30->unk_2C = var_r30->unk_2C + 0.008f; -// temp_f0 = var_r30->unk_2C; -// var_r30->unk_28 = temp_f0; -// var_r30->unk_24 = temp_f0; -// Hu3DModelPosSetV(var_r30->unk_7C, var_r30 + 0xC); -// Hu3DModelScaleSetV(var_r30->unk_7C, var_r30 + 0x24); -// temp_r0_2 = var_r30->unk_7E - 1; -// var_r30->unk_7E = temp_r0_2; -// if (temp_r0_2 == 0) { -// Hu3DModelKill(var_r30->unk_7C); -// var_r30->unk_7C = 0; -// var_r29 = 0; -// loop_11: -// if (var_r29 < var_r30->unk_02) { -// var_r31->unk_5C = 1; -// var_r29++; -// var_r31 += 0x98; -// goto loop_11; -// } -// var_r30->unk_80 = var_r30->unk_24; -// var_r30->unk_2C = 1.0f; -// var_r30->unk_28 = 1.0f; -// var_r30->unk_24 = 1.0f; -// var_r30->unk_60 = var_r30->unk_60 + 1; -// } -// break; -// } -// var_r28 = 0; -// for (var_r31 = var_r30->unk_3C; var_r29 = 0; var_r31 < var_r30->unk_02; var_r29++; var_r31 += 0x98) { -// temp_r0_3 = var_r31->unk_5C; -// switch (temp_r0_3) { -// case 1: -// var_r31->unk_38 = var_r31->unk_38 & 0xFFFFFFFB; -// var_r31->unk_33 = 1; -// var_r31->unk_54 = 0x60; -// var_r31->unk_55 = 0x20; -// var_r31->unk_56 = 0x10; -// var_r31->unk_57 = 0xFF; -// var_f31 = 0.4f + (0.15f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_18 = var_f31; -// var_r31->unk_1C = var_f31; -// var_r31->unk_20 = var_f31; -// var_f29 = 360.0f * (0.000015258789f * fn_1_7DB4()); -// var_f30 = 50.0f * var_r30->unk_80; -// temp_f0_2 = sind(var_f29); -// sp8 = temp_f0_2; -// temp_f0_3 = cosd(var_f29); -// sp10 = temp_f0_3; -// var_r31->unk_00 = var_f30 * temp_f0_2; -// var_r31->unk_04 = var_f30; -// var_r31->unk_08 = var_f30 * temp_f0_3; -// spC = 6.0f; -// var_r31->unk_6C = 100.0f * (0.015f * temp_f0_2); -// var_r31->unk_70 = 6.0f + (1.5f * (0.000015258789f * fn_1_7DB4())); -// var_r31->unk_74 = 100.0f * (0.015f * temp_f0_3); -// var_r31->unk_58->unk_24 = 0x11; -// var_r31->unk_58->unk_28 = 0.75f; -// var_r31->unk_5C = var_r31->unk_5C + 1; -// break; -// case 2: -// var_r31->unk_00 = var_r31->unk_00 + var_r31->unk_6C; -// var_r31->unk_04 = var_r31->unk_04 + var_r31->unk_70; -// var_r31->unk_08 = var_r31->unk_08 + var_r31->unk_74; -// var_r31->unk_70 = var_r31->unk_70 - 0.75f; -// if ((var_r31->unk_58->unk_24 & 8) != 0) { -// var_r31->unk_5C = var_r31->unk_5C + 1; -// } -// break; -// case 3: -// var_r28++; -// break; -// } -// } -// if (var_r28 >= var_r30->unk_02) { -// fn_1_107BC(var_r30->unk_00); -// } -// if (lbl_1_bss_DBA == 2) { -// if (var_r30->unk_7C != 0) { -// Hu3DModelKill(var_r30->unk_7C); -// } -// fn_1_107BC(var_r30->unk_00); -// } -// } + var_r31 = arg0->unk_3C; + for (var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r31++) { + var_r31->unk_00.x += 12.5f * temp_f28 * var_r31->unk_6C.x; + var_r31->unk_00.z += 12.5f * temp_f28 * var_r31->unk_6C.z; + temp_f30 = 2.4f + (6.0f * temp_f31); + var_r31->unk_18.x = temp_f30; + var_r31->unk_18.y = temp_f30; + var_r31->unk_18.z = temp_f30; + var_r31->unk_54.a = (96.0f * (1.0f - (temp_f31 * temp_f31))); + } + if (arg0->unk_7C == 0) { + arg0->unk_60++; + } + break; + case 2: + fn_1_107BC(arg0->unk_00); + return; + } +} + +void fn_1_62BC(M438UnkStruct2 *arg0) +{ + s16 sp8; + + M438UnkStruct *var_r31; + + sp8 = 0; + switch (arg0->unk_60) { + case 0: + var_r31 = arg0->unk_3C; + var_r31->unk_6C.y = 5.0f; + var_r31->unk_6C.x *= -2.0f; + var_r31->unk_6C.z *= -2.0f; + arg0->unk_60++; + + case 1: + var_r31 = arg0->unk_3C; + var_r31->unk_00.x += var_r31->unk_6C.x; + var_r31->unk_00.y += var_r31->unk_6C.y; + var_r31->unk_00.z += var_r31->unk_6C.z; + return; + case 2: + fn_1_107BC(arg0->unk_00); + return; + } +} + +void fn_1_63B0(M438UnkStruct2 *arg0) +{ + Vec sp8; + M438UnkStruct *var_r31; + f32 var_f31; + f32 temp_f30; + f32 var_f29; + f32 temp_f28; + s32 var_r29; + + var_r31 = arg0->unk_3C; + for (var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r31++) { + switch (var_r31->unk_5C) { + case 0: + var_f29 = atan2d(arg0->unk_80, arg0->unk_84) < 0 ? -atan2d(arg0->unk_80, arg0->unk_84) : atan2d(arg0->unk_80, arg0->unk_84); + + if (var_f29 > 90.0f) { + var_f29 = 180.0f - var_f29; + } + temp_f28 = 40.0f * (0.1f + ((0.9f * var_f29) / 90.0f)); + var_f31 = (0.5f * temp_f28) + ((arg0->unk_88 - temp_f28) * ((1.0f / 65536.0f) * fn_1_7DB4())); + sp8.x = var_f31 * arg0->unk_80; + sp8.z = var_f31 * arg0->unk_84; + var_r31->unk_00.x = sp8.x; + var_r31->unk_00.y = 0.0f; + var_r31->unk_00.z = sp8.z; + + for (var_f31 = 0.0f, sp8.y = 0.0f; var_f31 < (arg0->unk_8C - 40.0f); var_f31 += sp8.y) { + sp8.y += 0.8f; + } + var_r31->unk_6C.x = 0.0f; + var_r31->unk_6C.y = sp8.y + (1.5f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_6C.z = 0.0f; + if ((fn_1_7DB4() & 7) != 0) { + var_r31->unk_33 = 1; + var_r31->unk_54.r = 0x40; + var_r31->unk_54.g = 0x10; + var_r31->unk_54.b = 4; + var_r31->unk_54.a = 0xFF; + temp_f30 = 3.75f + (1.75f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_60.x = (temp_f30 * (0.1f + ((0.9f * var_f29) / 90.0f))); + var_r31->unk_60.y = var_r31->unk_60.z = temp_f30; + } + else { + var_r31->unk_33 = 0; + var_r31->unk_54.r = 0; + var_r31->unk_54.g = 0; + var_r31->unk_54.b = 0; + var_r31->unk_54.a = 0xFF; + temp_f30 = 0.25f + (0.25f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_60.y = (1.5f * temp_f30); + var_r31->unk_60.x = var_r31->unk_60.z = temp_f30; + } + var_r31->unk_58->unk_24 = 0; + var_r31->unk_78[0] = (s32)((60.0f * ((1.0f / 65536.0f) * fn_1_7DB4()))) + 1; + var_r31->unk_5C++; + case 1: + if (--var_r31->unk_78[0] == 0) { + var_r31->unk_58->unk_24 = 0x11U; + var_r31->unk_58->unk_28 = 0.5f; + var_r31->unk_58->unk_2C = 0.0f; + var_r31->unk_58->unk_00 = 0; + var_r31->unk_5C++; + } + break; + case 2: + var_r31->unk_00.x += var_r31->unk_6C.x; + var_r31->unk_00.y += var_r31->unk_6C.y; + var_r31->unk_00.z += var_r31->unk_6C.z; + if (var_r31->unk_00.y < 0.0f) { + var_r31->unk_00.y = 0.0f; + } + var_r31->unk_60.x *= 0.95f; + var_r31->unk_60.y *= 0.95f; + var_r31->unk_60.z *= 0.95f; + var_r31->unk_6C.y -= 0.8f; + if ((var_r31->unk_58->unk_24 & 8) != 0) { + var_r31->unk_5C = 0; + } + break; + } + var_r31->unk_18.x = var_r31->unk_60.x * arg0->unk_90; + var_r31->unk_18.y = var_r31->unk_60.y * arg0->unk_90; + var_r31->unk_18.z = var_r31->unk_60.z * arg0->unk_90; + } +} + +void fn_1_6A3C(M438UnkStruct2 *arg0) +{ + Vec sp8; + M438UnkStruct *var_r31; + f32 temp_f31; + f32 temp_f30; + f32 temp_f29; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = arg0->unk_3C; + var_r28 = 0; + + for (var_r27 = 0; var_r27 < arg0->unk_02; var_r27++, var_r31++) { + if ((arg0->unk_7C != 0) && (var_r31->unk_78[1] == 0)) { + var_r31->unk_5C = 0; + } + switch (var_r31->unk_5C) { + case 0: + if (arg0->unk_7C != 0) { + temp_f30 = (180.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) - 90.0f; + temp_f29 = 125.0f; + sp8.x = sind(temp_f30); + sp8.z = cosd(temp_f30); + var_r31->unk_00.x = temp_f29 * sp8.x; + var_r31->unk_00.y = 0.0f; + var_r31->unk_00.z = temp_f29 * sp8.z; + sp8.y = 25.0f; + var_r31->unk_6C.x = 100.0f * (0.1f * sp8.x); + var_r31->unk_6C.y = sp8.y + (2.5f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_6C.z = 100.0f * (0.1f * sp8.z); + var_r31->unk_78[0] = (s32)(24.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 1; + var_r31->unk_78[1] = 1; + } + else { + temp_f30 = (180.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) - 90.0f; + temp_f29 = 125.0f * ((1.0f / 65536.0f) * fn_1_7DB4()); + sp8.x = sind(temp_f30); + sp8.z = cosd(temp_f30); + var_r31->unk_00.x = temp_f29 * sp8.x; + var_r31->unk_00.y = 0.0f; + var_r31->unk_00.z = temp_f29 * sp8.z; + sp8.y = 5.0f; + var_r31->unk_6C.x = (100.0 * (0.015 * sp8.x)); + var_r31->unk_6C.y = sp8.y + ((1.0f / 65536.0f) * fn_1_7DB4()); + var_r31->unk_6C.z = 100.0f * (0.015f * sp8.z); + var_r31->unk_78[0] = (s32)(60.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 1; + var_r31->unk_78[1] = 0; + } + var_r31->unk_38 &= ~4; + if ((fn_1_7DB4() & 0xF) != 0) { + var_r31->unk_33 = 1; + var_r31->unk_54.r = 0x40; + var_r31->unk_54.g = 0x10; + var_r31->unk_54.b = 4; + var_r31->unk_54.a = 0xFF; + temp_f31 = 1.8f + ((1.0f / 65536.0f) * fn_1_7DB4()); + var_r31->unk_18.x = temp_f31; + var_r31->unk_18.y = temp_f31; + var_r31->unk_18.z = temp_f31; + } + else if (arg0->unk_7C != 0) { + var_r31->unk_33 = 0; + var_r31->unk_54.r = 0; + var_r31->unk_54.g = 0; + var_r31->unk_54.b = 0; + var_r31->unk_54.a = 0xFF; + temp_f31 = 0.25f + (0.25f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_18.x = temp_f31; + var_r31->unk_18.y = 1.5f * temp_f31; + var_r31->unk_18.z = temp_f31; + } + else { + var_r29 = fn_1_10258(8, 1); + fn_1_11018(var_r29, 0, 0x45000A); + lbl_1_bss_DE4.unk_40[var_r29].unk_30 = (void (*)(M438UnkStruct2 *))fn_1_7300; + fn_1_11890(var_r29, arg0->unk_0C.x + var_r31->unk_00.x, arg0->unk_0C.y + var_r31->unk_00.y, arg0->unk_0C.z + var_r31->unk_00.z); + fn_1_12100(var_r29, 4); + fn_1_124CC(var_r29, 1); + var_r31->unk_38 |= 4; + break; + } + var_r31->unk_58->unk_24 = 0; + var_r31->unk_5C++; + break; + case 1: + if (var_r31->unk_78[1] != 0) { + var_r31->unk_6C.y -= 0.5f; + } + if (--var_r31->unk_78[0] == 0) { + var_r31->unk_58->unk_24 = 0x11; + if (var_r31->unk_78[1] != 0) { + var_r31->unk_58->unk_28 = 0.5f; + } + else { + var_r31->unk_58->unk_28 = 0.5f; + } + var_r31->unk_58->unk_2C = 0.0f; + var_r31->unk_58->unk_00 = 0; + var_r31->unk_5C++; + } + break; + case 2: + var_r31->unk_00.x += var_r31->unk_6C.x; + var_r31->unk_00.y += var_r31->unk_6C.y; + var_r31->unk_00.z += var_r31->unk_6C.z; + if (var_r31->unk_00.y < 0.0f) { + var_r31->unk_00.y = 0.0f; + } + var_r31->unk_18.x *= 0.95f; + var_r31->unk_18.y *= 0.95f; + var_r31->unk_18.z *= 0.95f; + var_r31->unk_6C.y -= 1.5f; + if ((var_r31->unk_58->unk_24 & 8) != 0) { + if (var_r31->unk_78[1] != 0) { + var_r31->unk_5C = 3; + } + else { + var_r31->unk_5C = 0; + } + } + break; + case 3: + var_r28++; + break; + } + } + if (var_r28 >= arg0->unk_02) { + fn_1_107BC(arg0->unk_00); + } +} + +void fn_1_7300(M438UnkStruct2 *arg0) +{ + Vec sp8; + M438UnkStruct *var_r31; + f32 temp_f29; + f32 temp_f30; + f32 temp_f31; + s32 var_r28; + s32 var_r29; + + var_r31 = arg0->unk_3C; + + switch (arg0->unk_60) { + case 0: + arg0->unk_24.x = arg0->unk_24.y = arg0->unk_24.z = temp_f31 = 0.01f; + arg0->unk_7C = Hu3DModelCreateFile(0x45000B); + arg0->unk_7E = (s32)(30.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 30; + + for (var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r31++) { + var_r31->unk_38 |= 4; + } + arg0->unk_60++; + case 1: + arg0->unk_24.z += 0.008f; + + arg0->unk_24.x = arg0->unk_24.y = arg0->unk_24.z; + Hu3DModelPosSetV(arg0->unk_7C, &arg0->unk_0C); + Hu3DModelScaleSetV(arg0->unk_7C, &arg0->unk_24); + if (--arg0->unk_7E == 0) { + Hu3DModelKill(arg0->unk_7C); + arg0->unk_7C = 0; + + for (var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r31++) { + var_r31->unk_5C = 1; + } + arg0->unk_80 = arg0->unk_24.x; + + arg0->unk_24.x = arg0->unk_24.y = arg0->unk_24.z = 1.0f; + arg0->unk_60++; + } + break; + } + var_r28 = 0; + var_r31 = arg0->unk_3C; + + for (var_r29 = 0; var_r29 < arg0->unk_02; var_r29++, var_r31++) { + switch (var_r31->unk_5C) { + case 1: + var_r31->unk_38 &= ~4; + var_r31->unk_33 = 1; + var_r31->unk_54.r = 0x60; + var_r31->unk_54.g = 0x20; + var_r31->unk_54.b = 0x10; + var_r31->unk_54.a = 0xFF; + temp_f31 = 0.4f + (0.15f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_18.x = temp_f31; + var_r31->unk_18.y = temp_f31; + var_r31->unk_18.z = temp_f31; + temp_f29 = 360.0f * ((1.0f / 65536.0f) * fn_1_7DB4()); + temp_f30 = 50.0f * arg0->unk_80; + sp8.x = sind(temp_f29); + sp8.z = cosd(temp_f29); + var_r31->unk_00.x = temp_f30 * sp8.x; + var_r31->unk_00.y = temp_f30; + var_r31->unk_00.z = temp_f30 * sp8.z; + sp8.y = 6.0f; + var_r31->unk_6C.x = 100.0f * (0.015f * sp8.x); + var_r31->unk_6C.y = sp8.y + (1.5f * ((1.0f / 65536.0f) * fn_1_7DB4())); + var_r31->unk_6C.z = 100.0f * (0.015f * sp8.z); + var_r31->unk_58->unk_24 = 0x11; + var_r31->unk_58->unk_28 = 0.75f; + var_r31->unk_5C++; + break; + case 2: + var_r31->unk_00.x += var_r31->unk_6C.x; + var_r31->unk_00.y += var_r31->unk_6C.y; + var_r31->unk_00.z += var_r31->unk_6C.z; + var_r31->unk_6C.y -= 0.75f; + if ((var_r31->unk_58->unk_24 & 8) != 0) { + var_r31->unk_5C++; + } + break; + case 3: + var_r28++; + break; + } + } + if (var_r28 >= arg0->unk_02) { + fn_1_107BC(arg0->unk_00); + } + if (lbl_1_bss_DBA == 2) { + if (arg0->unk_7C != 0) { + Hu3DModelKill(arg0->unk_7C); + } + fn_1_107BC(arg0->unk_00); + } +} void fn_1_7858(omObjData *object) { @@ -2441,8 +2204,8 @@ void fn_1_7858(omObjData *object) if (var_r31->unk_07 == 0 || (var_r31->unk_07 & 2) != 0) { return; } - PSVECSubtract(&var_r31->unk_6C, &var_r31->unk_90, &sp2C); - var_f29 = PSVECMag(&sp2C); + VECSubtract(&var_r31->unk_6C, &var_r31->unk_90, &sp2C); + var_f29 = VECMag(&sp2C); if (var_f29 == 0.0f) { return; } @@ -2463,15 +2226,15 @@ void fn_1_7858(omObjData *object) sp8.y = var_r30->unk_6C.y; sp8.z = var_r30->unk_6C.z; sp8.y = 0.0f; - PSVECSubtract(&sp14, &sp8, &sp2C); - var_f31 = PSVECMag(&sp2C); + VECSubtract(&sp14, &sp8, &sp2C); + var_f31 = VECMag(&sp2C); if (var_f31 >= 119.40001f) { continue; } - PSVECSubtract(&var_r30->unk_6C, &var_r30->unk_90, &sp2C); - var_f28 = PSVECMag(&sp2C); - PSVECSubtract(&sp14, &sp8, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&var_r30->unk_6C, &var_r30->unk_90, &sp2C); + var_f28 = VECMag(&sp2C); + VECSubtract(&sp14, &sp8, &sp20); + VECNormalize(&sp20, &sp20); var_f31 = 120.00001f - var_f31; var_f30 = ((0.6f * var_f28) + (0.4f * var_f29)) / (var_f29 + var_f28); var_r31->unk_6C.x = var_r31->unk_6C.x + (var_f30 * (var_f31 * sp20.x)); @@ -2578,7 +2341,6 @@ void fn_1_7DD8(s32 arg0, s32 *arg1) float fn_1_7EDC(float arg8, float arg9, float argA) { - float var_f1; float var_f31; if (arg8 > 180.0f) { @@ -2600,257 +2362,123 @@ float fn_1_7EDC(float arg8, float arg9, float argA) else if (var_f31 <= -180.0f) { var_f31 += 360.0f; } - var_f1 = arg9 + (var_f31 * argA); - if (var_f1 > 180.0f) { - return var_f1 - 360.0f; + arg8 = arg9 + (var_f31 * argA); + if (arg8 > 180.0f) { + arg8 -= 360.0f; } - if (var_f1 <= -180.0f) { - var_f1 += 360.0f; + else if (arg8 <= -180.0f) { + arg8 += 360.0f; } - return var_f1; + return arg8; } -// void fn_1_8044(Mtx arg0, float arg8, float arg9, float argA) -// { -// Mtx var_r31; -// float var_f29; -// float var_f30; -// float var_f31; +void fn_1_8044(Mtx arg0, f32 arg8, f32 arg9, f32 argA) +{ + Mtx sp38; + Mtx sp8; -// var_r31 = arg0; -// var_f29 = arg8; -// var_f30 = arg9; -// var_f31 = argA; -// if (var_f31 != 0.0f) { -// PSMTXRotRad(var_r31, 0x5A, 0.017453292f * var_f31); -// } -// else { -// PSMTXIdentity(var_r31); -// } -// if (var_f29 != 0.0f) { -// PSMTXRotRad(&sp38[0], 0x58, 0.017453292f * var_f29); -// PSMTXConcat(&sp38[0], var_r31, var_r31); -// } -// if (var_f30 != 0.0f) { -// PSMTXRotRad(&sp8[0], 0x59, 0.017453292f * var_f30); -// PSMTXConcat(&sp8[0], var_r31, var_r31); -// } -// } + if (0.0f != argA) { + MTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); + } + else { + MTXIdentity(arg0); + } + if (0.0f != arg8) { + MTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); + MTXConcat(sp38, arg0, arg0); + } + if (0.0f != arg9) { + MTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); + MTXConcat(sp8, arg0, arg0); + } +} -// void fn_1_8164(float *arg0, Vec *arg1) -// { -// float sp8; -// Vec *var_r31; -// float *var_r30; -// float var_f27; -// float var_f28; -// float var_f29; -// double var_f30; -// double var_f31; +void fn_1_8164(Mtx arg0, Vec *arg1) +{ + f32 temp_f29; + f32 var_f28; -// var_r30 = arg0; -// var_r31 = arg1; -// var_r31->x = atan2d(var_r30->unk_18, var_r30->unk_28); -// if (var_r31->x < 0.0f) { -// var_r31->x += 360.0f; -// } -// var_r31->z = atan2d(var_r30->unk_04, var_r30->unk_00); -// if (var_r31->z < 0.0f) { -// var_r31->z += 360.0f; -// } -// var_f29 = -var_r30->unk_08; -// if ((1.0 - (var_f29 * var_f29)) < 0.0) { -// var_f30 = -(1.0 - (var_f29 * var_f29)); -// } -// else { -// var_f30 = 1.0 - (var_f29 * var_f29); -// } -// if (var_f30 > 0.0f) { -// var_f31 = __frsqrte(var_f30); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// sp8 = var_f30 * var_f31; -// var_f27 = sp8; -// } -// else { -// var_f27 = var_f30; -// } -// var_f28 = var_f27; -// if ((var_r31->x > 90.0f) && (var_r31->x < 270.0f) && (var_r31->z > 90.0f) && (var_r31->z < 270.0f)) { -// var_r31->x = fmod(180.0f + var_r31->x, 360.0); -// var_r31->z = fmod(180.0f + var_r31->z, 360.0); -// var_f28 = -var_f28; -// } -// var_r31->y = atan2d(var_f29, var_f28); -// if (var_r31->y < 0.0f) { -// var_r31->y += 360.0f; -// } -// } + arg1->x = atan2d(arg0[1][2], arg0[2][2]); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } + arg1->z = atan2d(arg0[0][1], arg0[0][0]); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + temp_f29 = -arg0[0][2]; + var_f28 = sqrtf(BOARD_FABS(1.0 - temp_f29 * temp_f29)); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod((180.0f + arg1->x), 360.0); + arg1->z = fmod((180.0f + arg1->z), 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(temp_f29, var_f28); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } +} -// void fn_1_8500(void *arg0, void *arg1) -// { -// float sp8; -// float var_f27; -// float var_f28; -// float var_f29; -// double var_f30; -// double var_f31; -// void *var_r30; -// void *var_r31; +void fn_1_8500(Mtx arg0, Vec *arg1) +{ + f32 temp_f29; + f32 var_f28; -// var_r31 = arg0; -// var_r30 = arg1; -// var_r30->unk_08 = atan2d(var_r31->unk_04, var_r31->unk_14); -// var_r30->unk_04 = atan2d(var_r31->unk_20, var_r31->unk_28); -// var_f29 = -var_r31->unk_24; -// if ((1.0 - (var_f29 * var_f29)) < 0.0) { -// var_f30 = -(1.0 - (var_f29 * var_f29)); -// } -// else { -// var_f30 = 1.0 - (var_f29 * var_f29); -// } -// if (var_f30 > 0.0f) { -// var_f31 = __frsqrte(var_f30); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// sp8 = var_f30 * var_f31; -// var_f28 = sp8; -// } -// else { -// var_f28 = var_f30; -// } -// var_f27 = var_f28; -// var_r30->unk_00 = atan2d(var_f29, var_f27); -// } + arg1->z = atan2d(arg0[0][1], arg0[1][1]); + arg1->y = atan2d(arg0[2][0], arg0[2][2]); + temp_f29 = -arg0[2][1]; + var_f28 = sqrtf(BOARD_FABS(1.0 - temp_f29 * temp_f29)); + arg1->x = atan2d(temp_f29, var_f28); +} -// double fn_1_8750(double arg8, float arg9, float argA, float argB) -// { -// double var_f30; -// double var_f31; +f32 fn_1_8750(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + f32 temp_f31; + f32 var_f30; -// var_f31 = 1.0 - arg8; -// var_f31 = var_f31; -// var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); -// var_f30 = var_f30; -// return var_f30; -// } + temp_f31 = (1.0 - arg8); + var_f30 = ((temp_f31 * temp_f31) * arg9) + (temp_f31 * arg8 * argA * 2.0) + ((arg8 * arg8) * argB); + return var_f30; +} -// void fn_1_87C8(float *arg0, float *arg1, float *arg2, float *arg3, double arg8) -// { -// float *var_r3; -// float *var_r4; -// float *var_r5; -// float *var_r6; -// float var_f26; -// float var_f27; -// float var_f28; -// float var_f29; -// double var_f24; -// double var_f25; -// double var_f30; -// double var_f31; -// s32 var_r31; +void fn_1_87C8(f32 *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 arg8) +{ + s32 var_r31; -// var_r3 = arg0; -// var_r4 = arg1; -// var_r5 = arg2; -// var_r6 = arg3; -// for (var_r31 = 0; var_r31 < 3; var_r31++) { -// var_f27 = *var_r5; -// var_r5 += 4; -// var_f28 = *var_r4; -// var_r4 += 4; -// var_f29 = *var_r3; -// var_r3 += 4; -// var_f26 = var_f29; -// var_f31 = 1.0 - arg8; -// var_f31 = var_f31; -// var_f30 = (var_f27 * (arg8 * arg8)) + ((var_f29 * (var_f31 * var_f31)) + (2.0 * (var_f28 * (var_f31 * arg8)))); -// var_f30 = var_f30; -// var_f25 = var_f30; -// var_f24 = var_f25; -// *var_r6 = var_f24; -// var_r6 += 4; -// } -// } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = fn_1_8750(arg8, *arg0++, *arg1++, *arg2++); + } +} -// double fn_1_88E4(float arg8, double arg9, double argA, float argB) -// { -// double var_f31; +f32 fn_1_88E4(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + f32 var_f31; -// var_f31 = 2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA))); -// var_f31 = var_f31; -// return var_f31; -// } + var_f31 = 2.0 * ((arg8 - 1.0) * arg9 + (1.0 - (2.0 * arg8)) * argA + (arg8 * argB)); + return var_f31; +} -// void fn_1_895C(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) -// { -// float sp8; -// float *temp_r6; -// float *var_r3; -// float *var_r4; -// float *var_r5; -// float *var_r6; -// float var_f23; -// float var_f24; -// float var_f25; -// float var_f26; -// float var_f28; -// float var_f29; -// float var_f30; -// double var_f21; -// double var_f22; -// double var_f27; -// double var_f31; -// s32 var_r31; +void fn_1_895C(f32 *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 arg8) +{ + f32 spC[3]; + f32 var_f29; + s32 var_r31; -// var_r3 = arg0; -// var_r4 = arg1; -// var_r5 = arg2; -// var_r6 = arg3; -// for (var_r31 = 0; var_r31 < 3; var_r31++) { -// var_f24 = *var_r5; -// var_r5 += 4; -// var_f25 = *var_r4; -// var_r4 += 4; -// var_f26 = *var_r3; -// var_r3 += 4; -// var_f23 = var_f26; -// var_f27 = 2.0 * ((arg8 * var_f24) + (((arg8 - 1.0) * var_f26) + ((1.0 - (2.0 * arg8)) * var_f25))); -// var_f27 = var_f27; -// var_f22 = var_f27; -// var_f21 = var_f22; -// (&spC[0])[var_r31] = var_f21; -// } -// var_f30 = (sp14 * sp14) + ((spC[0] * spC[0]) + (sp10 * sp10)); -// if (var_f30 > 0.0f) { -// var_f31 = __frsqrte(var_f30); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// sp8 = var_f30 * var_f31; -// var_f28 = sp8; -// } -// else { -// var_f28 = var_f30; -// } -// var_f29 = var_f28; -// if (var_f29 != 0.0f) { -// var_f29 = 1.0 / var_f29; -// var_f29 = var_f29; -// for (var_r31 = 0; var_r31 < 3; var_r31++) { -// *var_r6 = var_f29 * (&spC[0])[var_r31]; -// var_r6 += 4; -// } -// return; -// } -// *var_r6 = 0.0f; -// temp_r6 = var_r6 + 4; -// *temp_r6 = 0.0f; -// *(temp_r6 + 4) = 1.0f; -// } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_88E4(arg8, *arg0++, *arg1++, *arg2++); + } + var_f29 = sqrtf((spC[0] * spC[0]) + (spC[1] * spC[1]) + (spC[2] * spC[2])); + if (var_f29) { + var_f29 = (1.0 / var_f29); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = var_f29 * spC[var_r31]; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} void fn_1_8C34(float *arg0, float *arg1, float *arg2, s32 arg3) { @@ -2891,7 +2519,7 @@ void fn_1_8C34(float *arg0, float *arg1, float *arg2, s32 arg3) } } -float fn_1_8EEC(float *arg0, float *arg1, float *arg2, float arg8) +float fn_1_8EEC(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3) { float var_f31; float var_f30; @@ -2928,8 +2556,8 @@ void fn_1_9040(float *arg0, Vec *arg1, float arg2[3][3], s32 arg3) arg0[0] = 0.0f; for (var_r30 = 1; var_r30 < arg3; var_r30++) { - PSVECSubtract(&arg1[var_r30], &arg1[var_r30 - 1], &sp8); - arg0[var_r30] = arg0[var_r30 - 1] + PSVECMag(&sp8); + VECSubtract(&arg1[var_r30], &arg1[var_r30 - 1], &sp8); + arg0[var_r30] = arg0[var_r30 - 1] + VECMag(&sp8); } for (var_r27 = 0; var_r27 < 3; var_r27++) { for (var_r30 = 0; var_r30 < arg3; var_r30++) { @@ -2968,7 +2596,7 @@ void fn_1_9040(float *arg0, Vec *arg1, float arg2[3][3], s32 arg3) } } -void fn_1_9420(float *arg0, float *arg1, float arg2[3][3], float arg3[3][3], s32 arg4, float arg8) +void fn_1_9420(float arg8, float *arg0, float *arg1, float arg2[3][3], float arg3[3][3], s32 arg4) { float sp48[16]; float sp8[16]; @@ -2983,361 +2611,195 @@ void fn_1_9420(float *arg0, float *arg1, float arg2[3][3], float arg3[3][3], s32 sp48[var_r30] = arg2[var_r30][var_r29]; sp8[var_r30] = arg3[var_r30][var_r29]; } - arg0[var_r29] = fn_1_8EEC(arg1, sp48, sp8, arg8); + arg0[var_r29] = fn_1_8EEC(arg8, arg1, sp48, sp8, arg4); } } -// float fn_1_9634(Vec *arg0) -// { -// float sp8; -// float var_f28; -// float var_f29; -// float var_f30; -// double var_f31; +f32 fn_1_9634(Vec *arg0) +{ + f32 var_f30; + f32 var_f29; + var_f30 = (arg0->x * arg0->x) + (arg0->y * arg0->y) + (arg0->z * arg0->z); + var_f30 = sqrtf(var_f30); + if (var_f30 != 0.0f) { + var_f29 = 1.0f / var_f30; + arg0->x *= var_f29; + arg0->y *= var_f29; + arg0->z *= var_f29; + } + else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return var_f30; +} -// var_f30 = (arg0->z * arg0->z) + ((arg0->x * arg0->x) + (arg0->y * arg0->y)); -// if (var_f30 > 0.0f) { -// var_f31 = __frsqrte(var_f30); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f30 * (var_f31 * var_f31))); -// sp8 = var_f30 * var_f31; -// var_f28 = sp8; -// } -// else { -// var_f28 = var_f30; -// } -// var_f30 = var_f28; -// if (var_f30 != 0.0f) { -// var_f29 = 1.0f / var_f30; -// arg0->x *= var_f29; -// arg0->y *= var_f29; -// arg0->z *= var_f29; -// } -// else { -// arg0->z = 0.0f; -// arg0->y = 0.0f; -// arg0->x = 0.0f; -// } -// return var_f30; -// } +f32 fn_1_97CC(Vec arg0, Vec arg1, Vec *arg2, f32 arg8) +{ + if (arg8 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg8 = 0.0f; + } + else if (arg8 >= 1.0f) { + arg2->x = (arg0.x + arg1.x); + arg2->y = (arg0.y + arg1.y); + arg2->z = (arg0.z + arg1.z); + arg8 = 1.0f; + } + else { + arg2->x = (arg0.x + (arg8 * arg1.x)); + arg2->y = (arg0.y + (arg8 * arg1.y)); + arg2->z = (arg0.z + (arg8 * arg1.z)); + } + return arg8; +} -// float fn_1_97CC(void *arg0, void *arg1, void *arg2, float arg8) -// { -// if (arg8 <= 0.0f) { -// arg2->unk_00 = arg0->unk_00; -// arg2->unk_04 = arg0->unk_04; -// arg2->unk_08 = arg0->unk_08; -// return 0.0f; -// } -// if (arg8 >= 1.0f) { -// arg2->unk_00 = arg0->unk_00 + arg1->unk_00; -// arg2->unk_04 = arg0->unk_04 + arg1->unk_04; -// arg2->unk_08 = arg0->unk_08 + arg1->unk_08; -// return 1.0f; -// } -// arg2->unk_00 = arg0->unk_00 + (arg8 * arg1->unk_00); -// arg2->unk_04 = arg0->unk_04 + (arg8 * arg1->unk_04); -// arg2->unk_08 = arg0->unk_08 + (arg8 * arg1->unk_08); -// return arg8; -// } +f32 fn_1_98A4(Vec arg0, Vec arg1, Vec arg2) +{ + f32 temp_f30; + f32 var_f31; -// float fn_1_98A4(void *arg0, void *arg1, void *arg2) -// { -// float var_f30; -// float var_f31; + var_f31 = (arg2.z * (arg1.z - arg0.z)) + ((arg2.x * (arg1.x - arg0.x)) + (arg2.y * (arg1.y - arg0.y))); + temp_f30 = -((arg2.z * arg2.z) + ((arg2.x * arg2.x) + (arg2.y * arg2.y))); + if (0.0f != temp_f30) { + var_f31 /= temp_f30; + } + return var_f31; +} -// var_f31 = (arg2->unk_08 * (arg1->unk_08 - arg0->unk_08)) -// + ((arg2->unk_00 * (arg1->unk_00 - arg0->unk_00)) + (arg2->unk_04 * (arg1->unk_04 - arg0->unk_04))); -// var_f30 = -((arg2->unk_08 * arg2->unk_08) + ((arg2->unk_00 * arg2->unk_00) + (arg2->unk_04 * arg2->unk_04))); -// if (var_f30 != 0.0f) { -// var_f31 /= var_f30; -// } -// return var_f31; -// } +f32 fn_1_9960(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp44; + f32 var_f31; + f32 var_f30; + f32 temp_f29; -// float fn_1_9960(Vec *arg0, Vec *arg1, Vec *arg2) -// { -// float sp4C; -// float sp48; -// float sp44; -// float sp40; -// float sp3C; -// float sp38; -// float sp34; -// float sp30; -// float sp2C; -// float sp28; -// float sp24; -// float sp20; -// float sp1C; -// float sp18; -// float sp14; -// float sp10; -// float spC; -// float sp8; -// float var_f27; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; + if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f31 = fn_1_98A4(*arg0, *arg1, *arg2); + fn_1_97CC(*arg1, *arg2, &sp44, var_f31); + return ((arg0->z - sp44.z) * (arg0->z - sp44.z)) + (((arg0->x - sp44.x) * (arg0->x - sp44.x)) + ((arg0->y - sp44.y) * (arg0->y - sp44.y))); +} -// if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { -// return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) -// + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); -// } -// sp38 = arg0->x; -// sp3C = arg0->y; -// sp40 = arg0->z; -// sp2C = arg1->x; -// sp30 = arg1->y; -// sp34 = arg1->z; -// sp20 = arg2->x; -// sp24 = arg2->y; -// sp28 = arg2->z; -// var_f30 = (sp28 * (sp34 - sp40)) + ((sp20 * (sp2C - sp38)) + (sp24 * (sp30 - sp3C))); -// var_f29 = -((sp28 * sp28) + ((sp20 * sp20) + (sp24 * sp24))); -// if (var_f29 != 0.0f) { -// var_f30 /= var_f29; -// } -// var_f27 = var_f30; -// var_f28 = var_f27; -// var_f31 = var_f28; -// sp8 = arg2->x; -// spC = arg2->y; -// sp10 = arg2->z; -// sp14 = arg1->x; -// sp18 = arg1->y; -// sp1C = arg1->z; -// if (var_f31 <= 0.0f) { -// sp44 = sp14; -// sp48 = sp18; -// sp4C = sp1C; -// var_f31 = 0.0f; -// } -// else if (var_f31 >= 1.0f) { -// sp44 = sp14 + sp8; -// sp48 = sp18 + spC; -// sp4C = sp1C + sp10; -// var_f31 = 1.0f; -// } -// else { -// sp44 = sp14 + (var_f31 * sp8); -// sp48 = sp18 + (var_f31 * spC); -// sp4C = sp1C + (var_f31 * sp10); -// } -// return ((arg0->z - sp4C) * (arg0->z - sp4C)) + (((arg0->x - sp44) * (arg0->x - sp44)) + ((arg0->y - sp48) * (arg0->y - sp48))); -// } +f32 fn_1_9C9C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + f32 sp44; + f32 sp40; + f32 sp3C; + f32 sp38; + f32 sp34; + f32 sp30; + f32 sp2C; + f32 sp28; + f32 sp24; + Vec sp18; + f32 sp14; + f32 sp10; + f32 spC; + f32 sp8; + f32 temp_f25; + f32 temp_f26; + f32 temp_f28; + f32 var_f24; + f32 var_f27; + f64 temp_f31; + f64 temp_f31_2; + f64 temp_f31_3; -// float fn_1_9C9C(void *arg0, void *arg1, void *arg2, void *arg3, void *arg4) -// { -// float sp44; -// float sp40; -// float sp3C; -// float sp38; -// float sp34; -// float sp30; -// float sp2C; -// float sp28; -// float sp24; -// float sp20; -// float sp1C; -// float sp18; -// float sp14; -// float sp10; -// float spC; -// float sp8; -// float var_f22; -// float var_f23; -// float var_f24; -// float var_f25; -// float var_f26; -// float var_f27; -// float var_f28; -// float var_f29; -// float var_f30; -// double var_f31; + if (0.0f == ((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y)))) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f27 = fn_1_98A4(*arg0, *arg1, *arg2); + fn_1_97CC(*arg1, *arg2, arg3, var_f27); + arg4->x = (arg0->x - arg3->x); + arg4->y = (arg0->y - arg3->y); + arg4->z = (arg0->z - arg3->z); -// if (((arg2->unk_08 * arg2->unk_08) + ((arg2->unk_00 * arg2->unk_00) + (arg2->unk_04 * arg2->unk_04))) == 0.0f) { -// return ((arg0->unk_08 - arg1->unk_08) * (arg0->unk_08 - arg1->unk_08)) -// + (((arg0->unk_00 - arg1->unk_00) * (arg0->unk_00 - arg1->unk_00)) + ((arg0->unk_04 - arg1->unk_04) * (arg0->unk_04 - -// arg1->unk_04))); -// } -// sp3C = arg0->unk_00; -// sp40 = arg0->unk_04; -// sp44 = arg0->unk_08; -// sp30 = arg1->unk_00; -// sp34 = arg1->unk_04; -// sp38 = arg1->unk_08; -// sp24 = arg2->unk_00; -// sp28 = arg2->unk_04; -// sp2C = arg2->unk_08; -// var_f27 = (sp2C * (sp38 - sp44)) + ((sp24 * (sp30 - sp3C)) + (sp28 * (sp34 - sp40))); -// var_f25 = -((sp2C * sp2C) + ((sp24 * sp24) + (sp28 * sp28))); -// if (var_f25 != 0.0f) { -// var_f27 /= var_f25; -// } -// var_f22 = var_f27; -// var_f23 = var_f22; -// var_f30 = var_f23; -// spC = arg2->unk_00; -// sp10 = arg2->unk_04; -// sp14 = arg2->unk_08; -// sp18 = arg1->unk_00; -// sp1C = arg1->unk_04; -// sp20 = arg1->unk_08; -// if (var_f30 <= 0.0f) { -// arg3->unk_00 = sp18; -// arg3->unk_04 = sp1C; -// arg3->unk_08 = sp20; -// var_f30 = 0.0f; -// } -// else if (var_f30 >= 1.0f) { -// arg3->unk_00 = sp18 + spC; -// arg3->unk_04 = sp1C + sp10; -// arg3->unk_08 = sp20 + sp14; -// var_f30 = 1.0f; -// } -// else { -// arg3->unk_00 = sp18 + (var_f30 * spC); -// arg3->unk_04 = sp1C + (var_f30 * sp10); -// arg3->unk_08 = sp20 + (var_f30 * sp14); -// } -// arg4->unk_00 = arg0->unk_00 - arg3->unk_00; -// arg4->unk_04 = arg0->unk_04 - arg3->unk_04; -// arg4->unk_08 = arg0->unk_08 - arg3->unk_08; -// var_f28 = (arg4->unk_08 * arg4->unk_08) + ((arg4->unk_00 * arg4->unk_00) + (arg4->unk_04 * arg4->unk_04)); -// var_f29 = var_f28; -// if (var_f29 > 0.0f) { -// var_f31 = __frsqrte(var_f29); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); -// sp8 = var_f29 * var_f31; -// var_f24 = sp8; -// } -// else { -// var_f24 = var_f29; -// } -// var_f28 = var_f24; -// if (var_f28 != 0.0f) { -// var_f26 = 1.0f / var_f28; -// arg4->unk_00 = arg4->unk_00 * var_f26; -// arg4->unk_04 = arg4->unk_04 * var_f26; -// arg4->unk_08 = arg4->unk_08 * var_f26; -// } -// else { -// arg4->unk_08 = 0.0f; -// arg4->unk_04 = 0.0f; -// arg4->unk_00 = 0.0f; -// } -// return var_f28; -// } + return fn_1_9634(arg4); +} -// float fn_1_A14C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) -// { -// float var_f23; -// float var_f24; -// float var_f25; -// float var_f26; -// float var_f27; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; -// s32 var_r29; -// s32 var_r30; -// s32 var_r31; +f32 fn_1_A14C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + f32 temp_f31; + f32 var_f30; + f32 var_f29; + f32 var_f28; + f32 var_f27; + f32 var_f26; + s32 var_r31; + s32 var_r30; + s32 var_r29; -// var_f30 = -1.0f; -// var_r31 = 0; -// if (arg3->unk_00 < 0.0f) { -// var_f25 = -arg3->unk_00; -// } -// else { -// var_f25 = arg3->unk_00; -// } -// var_f28 = var_f25; -// if (arg3->unk_04 < 0.0f) { -// var_f24 = -arg3->unk_04; -// } -// else { -// var_f24 = arg3->unk_04; -// } -// var_f27 = var_f24; -// if (arg3->unk_08 < 0.0f) { -// var_f23 = -arg3->unk_08; -// } -// else { -// var_f23 = arg3->unk_08; -// } -// var_f26 = var_f23; -// if (var_f28 >= var_f27) { -// if (var_f28 >= var_f26) { -// var_r30 = 1; -// } -// else { -// var_r30 = 0x100; -// } -// var_r31 = var_r30; -// } -// else { -// if (var_f27 >= var_f26) { -// var_r29 = 0x10; -// } -// else { -// var_r29 = 0x100; -// } -// var_r31 = var_r29; -// } -// if ((var_r31 & 3) != 0) { -// if ((arg1->x != 0.0f) || (arg1->z != 0.0f)) { -// var_f31 = (arg3->unk_00 * arg1->z) - (arg3->unk_08 * arg1->x); -// if (var_f31 == 0.0f) { -// return -1.0f; -// } -// var_f29 = ((arg3->unk_08 * (arg0->x - arg2->x)) - (arg3->unk_00 * (arg0->z - arg2->z))) / var_f31; -// goto block_44; -// } -// var_f31 = (arg3->unk_04 * arg1->x) - (arg3->unk_00 * arg1->y); -// if (var_f31 == 0.0f) { -// return -1.0f; -// } -// var_f29 = ((arg3->unk_00 * (arg0->y - arg2->y)) - (arg3->unk_04 * (arg0->x - arg2->x))) / var_f31; -// goto block_44; -// } -// if ((var_r31 & 0x30) != 0) { -// if ((arg1->x != 0.0f) || (arg1->y != 0.0f)) { -// var_f31 = (arg3->unk_04 * arg1->x) - (arg3->unk_00 * arg1->y); -// if (var_f31 == 0.0f) { -// return -1.0f; -// } -// var_f29 = ((arg3->unk_00 * (arg0->y - arg2->y)) - (arg3->unk_04 * (arg0->x - arg2->x))) / var_f31; -// goto block_44; -// } -// var_f31 = (arg3->unk_08 * arg1->y) - (arg3->unk_04 * arg1->z); -// if (var_f31 == 0.0f) { -// return -1.0f; -// } -// var_f29 = ((arg3->unk_04 * (arg0->z - arg2->z)) - (arg3->unk_08 * (arg0->y - arg2->y))) / var_f31; -// goto block_44; -// } -// if ((arg1->x != 0.0f) || (arg1->z != 0.0f)) { -// var_f31 = (arg3->unk_00 * arg1->z) - (arg3->unk_08 * arg1->x); -// if (var_f31 == 0.0f) { -// return -1.0f; -// } -// var_f29 = ((arg3->unk_08 * (arg0->x - arg2->x)) - (arg3->unk_00 * (arg0->z - arg2->z))) / var_f31; -// goto block_44; -// } -// var_f31 = (arg3->unk_08 * arg1->y) - (arg3->unk_04 * arg1->z); -// if (var_f31 == 0.0f) { -// return -1.0f; -// } -// var_f29 = ((arg3->unk_04 * (arg0->z - arg2->z)) - (arg3->unk_08 * (arg0->y - arg2->y))) / var_f31; -// block_44: -// return var_f29; -// } + var_f30 = -1.0f; + var_r31 = 0; + + var_f28 = BOARD_FABS(arg3->x); + var_f27 = BOARD_FABS(arg3->y); + var_f26 = BOARD_FABS(arg3->z); + if (var_f28 >= var_f27) { + if (var_f28 >= var_f26) { + var_r30 = 1; + } + else { + var_r30 = 0x100; + } + var_r31 = var_r30; + } + else { + if (var_f27 >= var_f26) { + var_r29 = 0x10; + } + else { + var_r29 = 0x100; + } + var_r31 = var_r29; + } + if ((var_r31 & 3) != 0) { + if ((0.0f != arg1->x) || (0.0f != arg1->z)) { + if (0.0f == (temp_f31 = (arg3->x * arg1->z) - (arg3->z * arg1->x))) { + return var_f30; + } + var_f29 = ((arg3->z * (arg0->x - arg2->x)) - (arg3->x * (arg0->z - arg2->z))) / temp_f31; + } + else if (0.0f == (temp_f31 = (arg3->y * arg1->x) - (arg3->x * arg1->y))) { + return var_f30; + } + else { + var_f29 = ((arg3->x * (arg0->y - arg2->y)) - (arg3->y * (arg0->x - arg2->x))) / temp_f31; + } + } + else if ((var_r31 & 0x30) != 0) { + if ((0.0f != arg1->x) || (0.0f != arg1->y)) { + if (0.0f == (temp_f31 = (arg3->y * arg1->x) - (arg3->x * arg1->y))) { + return var_f30; + } + var_f29 = ((arg3->x * (arg0->y - arg2->y)) - (arg3->y * (arg0->x - arg2->x))) / temp_f31; + } + else if (0.0f == (temp_f31 = (arg3->z * arg1->y) - (arg3->y * arg1->z))) { + return var_f30; + } + else { + var_f29 = ((arg3->y * (arg0->z - arg2->z)) - (arg3->z * (arg0->y - arg2->y))) / temp_f31; + } + } + else if ((0.0f != arg1->x) || (0.0f != arg1->z)) { + if (0.0f == (temp_f31 = (arg3->x * arg1->z) - (arg3->z * arg1->x))) { + return var_f30; + } + var_f29 = ((arg3->z * (arg0->x - arg2->x)) - (arg3->x * (arg0->z - arg2->z))) / temp_f31; + } + else if (0.0f == (temp_f31 = (arg3->z * arg1->y) - (arg3->y * arg1->z))) { + return var_f30; + } + else { + var_f29 = ((arg3->y * (arg0->z - arg2->z)) - (arg3->z * (arg0->y - arg2->y))) / temp_f31; + } + return var_f29; +} void fn_1_A60C(omObjData *object) { @@ -3348,330 +2810,363 @@ void fn_1_A60C(omObjData *object) object->func = fn_1_A688; } +u32 lbl_1_data_510 = 0x41C64E6D; + void fn_1_A688(omObjData *object) { } -// void fn_1_A68C(ModelData *model, Mtx matrix) -// { -// Vec sp14; -// Vec sp8; -// ? *var_r30; -// float var_f31; -// omObjData *var_r27; -// s32 var_r24; -// s32 var_r28; -// s32 var_r29; -// u8 *var_r26; -// void *var_r25; -// void *var_r31; +Vec lbl_1_data_514 = { -850.0f, 0.0f, -850.0f }; +s32 lbl_1_data_520[25] = { + -0x62, + -0x61, + -0x60, + -0x5F, + -0x5E, + -0x32, + -0x31, + -0x30, + -0x2F, + -0x2E, + -0x2, + -0x1, + 0x0, + 0x1, + 0x2, + 0x2E, + 0x2F, + 0x30, + 0x31, + 0x32, + 0x5E, + 0x5F, + 0x60, + 0x61, + 0x62, +}; -// if (omPauseChk() == 0) { -// memset(lbl_1_bss_DBC->data, 0, 0x900); -// if (lbl_1_bss_DBA == 7) { -// for (var_r30 = &lbl_1_bss_298; var_r29 = 0; var_r30 < 0x30; var_r29++; var_r30 += 0x30) { -// if ((var_r30->unk_00 > 1) && (var_r30->unk_00 < 5)) { -// var_f31 = 0.0f; -// for (var_f31 = 0.0f; var_f31 < (35.416668f + var_r30->unk_14); var_f31 += 35.416668f) { -// PSVECScale(var_r30 + 0x24, &sp8, var_f31); -// PSVECAdd(var_r30 + 0x18, &sp8, &sp14); -// PSVECSubtract(&sp14, &lbl_1_data_514, &sp14); -// var_r24 = (0.028235294f * sp14.z) * 0x30; -// var_r25 = (0.028235294f * sp14) + var_r24; -// var_r25 += lbl_1_bss_DBC->data; -// for (var_r28 = 0; var_r28 < 0x19; var_r28++) { -// var_r26 = var_r25 + lbl_1_data_520[var_r28]; -// if (*var_r26 < lbl_1_data_584[var_r28]) { -// *var_r26 = lbl_1_data_584[var_r28]; -// } -// } -// } -// } -// } -// for (var_r29 = 0; var_r29 < 4; var_r29++) { -// if (lbl_1_bss_DC4[var_r29] != NULL) { -// var_r27 = lbl_1_bss_DC4[var_r29]; -// var_r31 = var_r27->data; -// if ((var_r31 != NULL) && (var_r31->unk_68 != 0)) { -// var_r31->unk_68 = 0; -// PSVECAdd(var_r31 + 0x6C, var_r31 + 0x4C, &sp14); -// var_r31->unk_64 = fn_1_AE18(var_r27->work[0], &sp14, var_r31 + 0x58); -// } -// } -// } -// } -// } -// } +u32 lbl_1_data_584[25] = { + 0x50, + 0x64, + 0x78, + 0x64, + 0x50, + 0x64, + 0x8C, + 0xA0, + 0x8C, + 0x64, + 0x78, + 0xA0, + 0xB4, + 0xA0, + 0x78, + 0x64, + 0x8C, + 0xA0, + 0x8C, + 0x64, + 0x50, + 0x64, + 0x78, + 0x64, + 0x50, +}; -// u16 fn_1_A8FC(Vec *arg0, float arg8) -// { -// s32 sp34; -// float sp30; -// s32 sp2C; -// Vec sp20; -// Vec sp14; -// float sp10; -// float spC; -// float sp8; -// Vec *var_r29; -// float var_f25; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; -// double var_f26; -// double var_f27; -// s32 var_r28; -// u16 var_r30; -// u8 temp_r0; -// void *var_r31; +#define getData(v, off) \ + &(&(*OM_GET_DATA_PTR(lbl_1_bss_DBC, M438UnkType))[(u32)(0.028235294f * (v.x - off))])[(u32)(0.028235294f * (v.z - off)) * 0x30] -// var_r29 = arg0; -// var_f25 = arg8; -// var_r30 = 0; -// var_r28 = 0; -// var_f28 = 100.0f * (4.5f - (2.0f * var_f25)); -// var_f31 = PSVECMag(var_r29); -// if (var_f31 > 280.0f) { -// if (var_f31 > 560.0f) { -// var_r28 = 1; -// PSVECNormalize(var_r29, &sp14); -// } -// var_f31 -= 280.0f; -// var_f31 *= 0.12987013f; -// if (var_f31 > 50.0f) { -// var_f31 = 500.0f; -// } -// var_r30 = var_f31; -// } -// if (lbl_1_bss_DBA == 7) { -// var_r31 = lbl_1_bss_DC0->data; -// sp2C = var_r31->unk_34; -// sp30 = var_r31->unk_38; -// sp34 = var_r31->unk_3C; -// sp30 = 0.0f; -// temp_r0 = var_r31->unk_00; -// if (temp_r0 < 4) { -// if (temp_r0 < 2) { -// goto block_18; -// } -// sp8 = sind(var_r31->unk_08); -// spC = 0.0f; -// sp10 = cosd(var_r31->unk_08); -// PSVECScale(&sp8, &sp20, 600.0f + (100.0f * (8.0f * var_f25))); -// var_f30 = fn_1_B440(var_r29, &sp2C, &sp20); -// if ((var_f30 > -0.2f) && (var_f30 < 1.0f)) { -// PSVECScale(&sp20, &sp20, var_f30); -// PSVECAdd(&sp2C, &sp20, &sp2C); -// PSVECSubtract(&sp2C, var_r29, &sp20); -// var_f31 = PSVECMag(&sp20); -// if (var_f31 < var_f28) { -// var_f29 = 0.0f; -// if (var_r28 != 0) { -// var_f29 = PSVECDotProduct(&sp14, &sp8); -// var_f27 = fabs(var_f29); -// var_f29 = 1.0 - var_f27; -// var_f29 = var_f29; -// } -// var_f31 = (1.0f / var_f28) * (var_f28 - var_f31); -// var_f31 = 0.5f * (var_f31 + (1.0f - ((1.0f - var_f31) * (1.0f - var_f31)))); -// var_f31 += (1.0f - var_f31) * var_f29; -// var_f31 = 100.0f + (50.0f * var_f31); -// var_f26 = fabs(var_f30); -// var_f30 = 0.5 + (0.5 * (1.0 - var_f26)); -// var_f30 = var_f30; -// var_f31 *= var_f30; -// if (var_f31 > 150.0f) { -// var_f31 = 150.0f; -// } -// var_r30 = var_r30 + var_f31; -// } -// } -// } -// else { -// block_18: -// PSVECSubtract(var_r29, &sp2C, &sp20); -// var_f31 = PSVECMag(&sp20); -// if (var_f31 < 600.0f) { -// var_f31 = 800.0f - var_f31; -// var_f31 = 20.0f + (0.1f * var_f31); -// if (var_f31 > 100.0f) { -// var_f31 = 100.0f; -// } -// var_r30 = var_r30 + var_f31; -// } -// } -// } -// return var_r30; -// } +void fn_1_A68C(ModelData *model, Mtx matrix) +{ + Vec sp14; + Vec sp8; + M438StructBss298 *var_r30; + f32 var_f31; + omObjData *temp_r27; + s32 var_r28; + s32 var_r29; + u8 *temp_r26; + u8 *var_r25; + M438MainWork *temp_r31; -// s32 fn_1_AE18(u32 arg0, Vec *arg1, Vec *arg2) -// { -// Vec sp4C; -// float sp48; -// float sp44; -// float sp40; -// Vec sp34; -// float sp30; -// float sp2C; -// s32 sp28; -// Vec sp1C; -// void *sp18; -// u32 sp14; -// u32 sp10; -// Vec *spC; -// u32 sp8; -// Vec *var_r20; -// float temp_r0; -// float temp_r3; -// float var_f22; -// float var_f23; -// float var_f24; -// float var_f25; -// float var_f26; -// float var_f27; -// float var_f28; -// float var_f29; -// float var_f30; -// float var_f31; -// s32 var_r18; -// s32 var_r23; -// s32 var_r26; -// s32 var_r28; -// s32 var_r30; -// u16 *var_r21; -// u16 *var_r27; -// u16 var_r31; -// u32 temp_r3_2; -// u32 var_r19; -// u32 var_r29; -// u8 *var_r24; -// void *var_r17; -// void *var_r22; -// void *var_r25; + if ((u8)omPauseChk() == 0) { + memset(lbl_1_bss_DBC->data, 0, 0x900); + if (lbl_1_bss_DBA == 7) { + var_r30 = lbl_1_bss_298; + for (var_r29 = 0; var_r29 < 0x30; var_r29++, var_r30++) { + if ((var_r30->unk_00 > 1U) && (var_r30->unk_00 < 5U)) { -// sp8 = arg0; -// spC = arg1; -// var_r20 = arg2; -// memset(lbl_1_bss_C, 0, 0x288); -// temp_r3 = arg1->x; -// sp40 = temp_r3; -// sp44 = arg1->y; -// temp_r0 = arg1->z; -// sp48 = temp_r0; -// temp_r3_2 = 0.028235294f * (sp40 - -850.0f); -// sp10 = temp_r3_2; -// sp14 = 0.028235294f * (sp48 - -850.0f); -// var_r17 = temp_r3_2 + (sp14 * 0x30); -// var_r17 += lbl_1_bss_DBC->data; -// sp44 = 0.0f; -// var_r20->x = temp_r3; -// var_r20->y = sp44; -// var_r20->z = temp_r0; -// var_r25 = lbl_1_bss_DC4[sp8]->data; -// var_f28 = var_r25->unk_3C; -// var_r19 = 0x2710; -// var_r18 = 0; -// for (var_r30 = 0; var_r30 < 9; var_r30++) { -// PSVECAdd(&sp40, &lbl_1_data_60C[var_r30], &sp34); -// sp18 = var_r17 + lbl_1_data_5E8[var_r30]; -// var_r21 = &lbl_1_bss_C[lbl_1_data_708[var_r30]] + 0x156; -// var_f31 = 0.0f; -// var_r29 = 0; -// var_r22 = sp18; -// sp28 = sp34; -// sp2C = sp34.y; -// sp30 = sp34.z; -// for (var_r23 = 0; var_r23 < 3; var_r23++) { -// for (var_r28 = 0; var_r28 < 9; var_r28++) { -// var_r24 = var_r22 + lbl_1_data_5E8[var_r28]; -// PSVECAdd(&sp28, &lbl_1_data_60C[var_r28], &sp4C); -// if ((lbl_1_bss_DBC->data <= var_r24) && ((lbl_1_bss_DBC->data + 0x900) > var_r24)) { -// var_f27 = sp4C; -// var_f25 = fabs(var_f27); -// var_f24 = var_f25; -// if (var_f24 < 850.0) { -// var_f26 = sp4C.z; -// var_f23 = fabs(var_f26); -// var_f22 = var_f23; -// if (var_f22 < 850.0) { -// var_f31 += 1.0f; -// var_r27 = &var_r21[lbl_1_data_708[var_r28]]; -// if (*var_r27 == 0) { -// var_r31 = fn_1_A8FC(&sp4C, var_f28); -// var_r31 += *var_r24; -// var_f29 = 0.0f; -// if (var_r31 < 0x3C) { -// var_f29 = 0.016666668f * (0x3C - var_r31); -// } -// var_f29 = 80.0f + (100.0f * (2.5f * var_f29)); -// for (var_r26 = 0; var_r26 < 4; var_r26++) { -// if (var_r26 != sp8) { -// var_r25 = lbl_1_bss_DC4[var_r26]->data; -// PSVECSubtract(&sp4C, var_r25 + 0x6C, &sp1C); -// sp1C.y = 0.0f; -// var_f30 = PSVECMag(&sp1C); -// if (var_f30 < var_f29) { -// var_f30 = var_f29 - var_f30; -// var_f30 *= 40.0f / var_f29; -// var_r31 = var_r31 + var_f30; -// } -// } -// } -// var_r31++; -// *var_r27 = var_r31; -// } -// else { -// var_r31 = *var_r27; -// } -// var_r29 += var_r31; -// if ((var_r28 == 0) && (var_r23 == 0)) { -// var_r29 += var_r31 * 3; -// var_f31 += 3.0f; -// } -// } -// } -// } -// } -// PSVECAdd(&sp28, &lbl_1_data_69C[var_r30], &sp28); -// var_r22 += lbl_1_data_678[var_r30]; -// var_r21 = &var_r21[lbl_1_data_72C[var_r30]]; -// var_f31 *= 2.0f; -// var_r29 = var_r29 * 2.0f; -// } -// if (var_f31 > 1.0f) { -// var_r29 = var_r29 / var_f31; -// } -// if (var_r19 > var_r29) { -// var_r18 = var_r30; -// var_r19 = var_r29; -// var_r20->x = sp34; -// var_r20->y = sp34.y; -// var_r20->z = sp34.z; -// } -// (&sp58[0])[var_r30] = var_r29; -// } -// if (var_r18 != 0) { -// return 1; -// } -// return 0; -// } + var_f31 = 0.0f; + for (var_f31 = 0.0f; var_f31 < (35.416668f + var_r30->unk_14); var_f31 += 35.416668f) { + VECScale(&var_r30->unk_24, &sp8, var_f31); + VECAdd(&var_r30->unk_18, &sp8, &sp14); + VECSubtract(&sp14, &lbl_1_data_514, &sp14); -// float fn_1_B440(Vec *arg0, Vec *arg1, Vec *arg2) -// { -// Vec sp10; -// Vec *spC; -// Vec *sp8; -// Vec *var_r31; -// float var_f30; -// float var_f31; + // @todo make this look nicer + // var_r25 = getData(sp14, 0); + var_r25 = getData(sp14, 0); + for (var_r28 = 0; var_r28 < 0x19; var_r28++) { + temp_r26 = &var_r25[lbl_1_data_520[var_r28]]; + if (temp_r26[0] < lbl_1_data_584[var_r28]) { + temp_r26[0] = lbl_1_data_584[var_r28]; + } + } + } + } + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((omObjData *)lbl_1_bss_DC4[var_r29]) { + temp_r27 = lbl_1_bss_DC4[var_r29]; + temp_r31 = temp_r27->data; + if ((temp_r31) && (temp_r31->unk_68 != 0)) { + temp_r31->unk_68 = 0; + VECAdd(&temp_r31->unk_6C, &temp_r31->unk_4C, &sp14); + temp_r31->unk_64 = fn_1_AE18(temp_r27->work[0], temp_r31->unk_7C, &sp14, &temp_r31->unk_58); + } + } + } + } + } +} -// sp8 = arg0; -// spC = arg1; -// var_r31 = arg2; -// PSVECSubtract(spC, sp8, &sp10); -// var_f31 = PSVECDotProduct(&sp10, var_r31); -// var_f30 = -PSVECSquareMag(var_r31); -// if (var_f30 != 0.0f) { -// var_f31 /= var_f30; -// } -// return var_f31; -// } +u32 fn_1_A8FC(Vec *arg0, f32 arg8) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 temp_f28; + s32 var_r28; + u32 var_r30; + M438MainWork4 *temp_r31; + + var_r30 = 0; + var_r28 = 0; + temp_f28 = 100.0f * (4.5f - (2.0f * arg8)); + var_f31 = VECMag(arg0); + if (var_f31 > 280.0f) { + if (var_f31 > 560.0f) { + var_r28 = 1; + VECNormalize(arg0, &sp14); + } + var_f31 -= 280.0f; + var_f31 *= 0.12987013f; + if (var_f31 > 50.0f) { + var_f31 = 500.0f; + } + var_r30 = var_f31; + } + if (lbl_1_bss_DBA == 7) { + temp_r31 = lbl_1_bss_DC0->data; + sp2C = temp_r31->unk_34; + sp2C.y = 0.0f; + switch (temp_r31->unk_00) { + case 2: + case 3: + sp8.x = sind(temp_r31->unk_08); + sp8.y = 0.0f; + sp8.z = cosd(temp_r31->unk_08); + VECScale(&sp8, &sp20, 600.0f + (100.0f * (8.0f * arg8))); + var_f30 = fn_1_B440(arg0, &sp2C, &sp20); + if (var_f30 > -0.2f && var_f30 < 1.0f) { + VECScale(&sp20, &sp20, var_f30); + VECAdd(&sp2C, &sp20, &sp2C); + VECSubtract(&sp2C, arg0, &sp20); + var_f31 = VECMag(&sp20); + if (var_f31 < temp_f28) { + var_f29 = 0.0f; + if (var_r28 != 0) { + var_f29 = VECDotProduct(&sp14, &sp8); + var_f29 = 1.0 - fabs(var_f29); + } + var_f31 = (1.0f / temp_f28) * (temp_f28 - var_f31); + var_f31 = 0.5f * (var_f31 + (1.0f - ((1.0f - var_f31) * (1.0f - var_f31)))); + var_f31 += (1.0f - var_f31) * var_f29; + var_f31 = 100.0f + 50.0f * var_f31; + var_f30 = 0.5 + 0.5 * (1.0 - fabs(var_f30)); + var_f31 *= var_f30; + if (var_f31 > 150.0f) { + var_f31 = 150.0f; + } + var_r30 += var_f31; + } + } + break; + default: + VECSubtract(arg0, &sp2C, &sp20); + var_f31 = VECMag(&sp20); + if (var_f31 < 600.0f) { + var_f31 = 800.0f - var_f31; + var_f31 = 20.0f + (0.1f * var_f31); + if (var_f31 > 100.0f) { + var_f31 = 100.0f; + } + var_r30 += var_f31; + } + break; + } + } + return var_r30; +} + +s32 lbl_1_data_5E8[9] = { 0, -49, -48, -47, -1, 1, 0x2F, 0x30, 0x31 }; + +Vec lbl_1_data_60C[9] = { + { 0.0f, 0.0f, 0.0f }, + { -35.416668f, 0.0f, -35.416668f }, + { 0.0f, 0.0f, -35.416668f }, + { 35.416668f, 0.0f, -35.416668f }, + { -35.416668f, 0.0f, 0.0f }, + { 35.416668f, 0.0f, 0.0f }, + { -35.416668f, 0.0f, 35.416668f }, + { 0.0f, 0.0f, 35.416668f }, + { 35.416668f, 0.0f, 35.416668f }, +}; + +s32 lbl_1_data_678[9] = { 0, -98, -144, -94, -3, 3, 0x5E, 0x90, 0x62 }; + +Vec lbl_1_data_69C[9] = { + { 0.0f, 0.0f, 0.0f }, + { -70.833336f, 0.0f, -70.833336f }, + { 0.0f, 0.0f, -106.25f }, + { 70.833336f, 0.0f, -70.833336f }, + { -106.25f, 0.0f, 0.0f }, + { 106.25f, 0.0f, 0.0f }, + { -70.833336f, 0.0f, 70.833336f }, + { 0.0f, 0.0f, 106.25f }, + { 70.833336f, 0.0f, 70.833336f }, +}; + +s32 lbl_1_data_708[9] = { 0, -19, -18, -17, -1, 1, 0x11, 0x12, 0x13 }; +s32 lbl_1_data_72C[9] = { 0, -38, -54, -34, -3, 3, 0x22, 0x36, 0x26 }; + +s32 fn_1_AE18(u32 arg0, f32 arg8, Vec *arg1, Vec *arg2) +{ + s32 sp58[9]; + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + u8 *sp18; + u32 sp14; + u32 sp10; + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 temp_f28; + s32 var_r31; + s32 var_r30; + u32 var_r29; + s32 var_r28; + u16 *temp_r27; + s32 var_r26; + M438MainWork *var_r25; + u8 *temp_r24; + s32 var_r23; + u8 *var_r22; + u16 *var_r21; + u32 var_r19; + u32 var_r18; + u8 *temp_r17; + + memset(lbl_1_bss_C, 0, 0x288); + sp40 = *arg1; + sp10 = 0.028235294f * (sp40.x - -850.0f); + sp14 = 0.028235294f * (sp40.z - -850.0f); + temp_r17 = &(&(*OM_GET_DATA_PTR(lbl_1_bss_DBC, M438UnkType))[sp10])[sp14 * 0x30]; + sp40.y = 0.0f; + *arg2 = sp40; + var_r25 = lbl_1_bss_DC4[arg0]->data; + temp_f28 = var_r25->unk_3C; + var_r19 = 0x2710; + var_r18 = 0; + + for (var_r30 = 0; var_r30 < 9; var_r30++) { + VECAdd(&sp40, &lbl_1_data_60C[var_r30], &sp34); + sp18 = temp_r17 + lbl_1_data_5E8[var_r30]; + (void)temp_r17; + var_r21 = &(&lbl_1_bss_C[lbl_1_data_708[var_r30]])[0xAB]; + var_f31 = 0.0f; + var_r29 = 0; + var_r22 = sp18; + sp28 = sp34; + + for (var_r23 = 0; var_r23 < 3; var_r23++) { + for (var_r28 = 0; var_r28 < 9; var_r28++) { + temp_r24 = var_r22 + lbl_1_data_5E8[var_r28]; + VECAdd(&sp28, &lbl_1_data_60C[var_r28], &sp4C); + if ((lbl_1_bss_DBC->data <= temp_r24) + && (((u8 *)lbl_1_bss_DBC->data + 0x900 > temp_r24) && (fabs(sp4C.x) < 850.0) && (fabs(sp4C.z) < 850.0))) { + var_f31++; + temp_r27 = &var_r21[lbl_1_data_708[var_r28]]; + if (*temp_r27 == 0) { + var_r31 = fn_1_A8FC(&sp4C, temp_f28); + var_r31 += *temp_r24; + var_f29 = 0.0f; + if (var_r31 < 0x3C) { + var_f29 = (1.0f / 60.0f) * (0x3C - var_r31); + } + var_f29 = 80.0f + (100.0f * (2.5f * var_f29)); + for (var_r26 = 0; var_r26 < 4; var_r26++) { + if (var_r26 != arg0) { + var_r25 = lbl_1_bss_DC4[var_r26]->data; + VECSubtract(&sp4C, &var_r25->unk_6C, &sp1C); + sp1C.y = 0.0f; + var_f30 = VECMag(&sp1C); + if (var_f30 < var_f29) { + var_f30 = var_f29 - var_f30; + var_f30 *= (40.0f / var_f29); + var_r31 += var_f30; + } + } + } + *temp_r27 = ++var_r31; + } + else { + var_r31 = *temp_r27; + } + var_r29 += var_r31; + if ((var_r28 == 0) && (var_r23 == 0)) { + var_r29 += var_r31 * 3; + var_f31 += 3.0f; + } + } + } + VECAdd(&sp28, &lbl_1_data_69C[var_r30], &sp28); + var_r22 += lbl_1_data_678[var_r30]; + var_r21 = &var_r21[lbl_1_data_72C[var_r30]]; + var_f31 *= 2.0f; + var_r29 *= 2.0f; + } + if (var_f31 > 1.0f) { + var_r29 /= var_f31; + } + if (var_r19 > var_r29) { + var_r18 = var_r30; + var_r19 = var_r29; + *arg2 = sp34; + } + sp58[var_r30] = var_r29; + } + if (var_r18 != 0) { + return 1; + } + return 0; +} + +f32 fn_1_B440(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp10; + f32 temp_f30; + f32 var_f31; + + VECSubtract(arg1, arg0, &sp10); + var_f31 = VECDotProduct(&sp10, arg2); + temp_f30 = -VECSquareMag(arg2); + if (temp_f30 != 0.0f) { + var_f31 /= temp_f30; + } + return var_f31; +} diff --git a/src/REL/m438Dll/map.c b/src/REL/m438Dll/map.c index e69de29b..ea4ba2d0 100644 --- a/src/REL/m438Dll/map.c +++ b/src/REL/m438Dll/map.c @@ -0,0 +1,705 @@ +#include "REL/m438Dll.h" + +#include "ext_math.h" +#include "game/hsfanim.h" +#include "game/hsfmotion.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "string.h" + + +// STRUCT +typedef struct M438MapStruct { + s32 unk0; + s32 unk4; + s32 unk8; + Vec unkC; + f32 unk18; + f32 unk1C; + f32 unk20; +} M438MapStruct; + +typedef struct M438MapStruct2 { + s32 unk0; + s32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + Vec unk24; + Vec unk30; + Vec unk3C; + union { + M438MainWork4 *unk48; + HsfObject *unk48o; + }; +} M438MapStruct2; + +typedef struct M438MapStruct3 { + u32 unk0; + M438MapStruct2 unk4; + char unk4C[0x934]; + M438MapStruct unk984; +} M438MapStruct3; + +// BSS +omObjData *lbl_1_bss_108C[6]; +HsfanimStruct01 *lbl_1_bss_E34[0x96]; +s32 lbl_1_bss_E30; +s32 lbl_1_bss_E2C; +s32 lbl_1_bss_E28; + +// DATA +char *lbl_1_data_848[] = { "iwa_s1", "iwa_s2", "iwa_s3", "iwa_s4", "iwa_s5", "iwa_s6", "iwa_s7", "iwa_s8", "iwa_s9", "iwa_s10", "iwa_s11", "iwa_s12", + "iwa_s13", "iwa_s14", "iwa_s15", "iwa_s16", "iwa_s17", "iwa_s18", "iwa_s19", "iwa_s20", "iwa_s21", "iwa_s22", "iwa_s23", "iwa_s24", "iwa_s25", + "iwa_s26", "iwa_s27", "iwa_s28", "iwa_s29", "iwa_s30", "iwa_s31", "iwa_s32" }; + +// PROTO +void fn_1_B54C(omObjData *); +void fn_1_BF20(omObjData *); +void fn_1_CAB0(f32); +void fn_1_C764(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_C8E8(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_D3FC(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_D57C(Vec *, f32); +void fn_1_E034(Mtx, Vec *); + +void fn_1_B4D8(Process *arg0) +{ + omObjData *var_r31; + + lbl_1_bss_E30 = 0; + var_r31 = lbl_1_bss_108C[0] = omAddObjEx(arg0, 0x20, 8, 0, -1, fn_1_B54C); + var_r31->work[0] = 0; +} + +void fn_1_B548(void) { } + +void fn_1_B54C(omObjData *arg0) +{ + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r30; + s32 var_r29; + HsfObject *var_r26; + s32 var_r27; + M438MapStruct2 *var_r28; + HsfanimStruct01 *var_r25; + M438MapStruct *var_r24; + M438MapStruct3 *temp_r23; + + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x108C, 0x10000000); + temp_r23 = arg0->data; + memset(temp_r23, 0, 0x108C); + arg0->model[0] = Hu3DModelCreateFile(0x450000); + Hu3DModelLayerSet(arg0->model[0], 0); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelShadowMapSet(arg0->model[0]); + arg0->model[1] = Hu3DModelCreateFile(0x450001); + Hu3DModelLayerSet(arg0->model[1], 1); + Hu3DModelPosSet(arg0->model[1], 0.0f, -80.0f, 0.0f); + arg0->model[2] = Hu3DModelCreateFile(0x450002); + Hu3DModelLayerSet(arg0->model[2], 0); + Hu3DModelPosSet(arg0->model[2], 0.0f, -50.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[2], 0x40000001); + Hu3DMotionSpeedSet(arg0->model[2], 0.1f); + var_r29 = Hu3DTexScrollCreate(arg0->model[1], "lavafall"); + Hu3DTexScrollPosMoveSet(var_r29, 0.0f, -0.025000002f, 0.0f); + var_r29 = Hu3DTexScrollCreate(arg0->model[1], "lafall"); + Hu3DTexScrollPosMoveSet(var_r29, 0.0f, -(1.0f / 60.0f), 0.0f); + var_r29 = 0; + + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000C), 0x32); + arg0->model[3] = var_r27; + Hu3DModelLayerSet(var_r27, 3); + Hu3DParticleHookSet(var_r27, fn_1_C764); + for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r29++) { + lbl_1_bss_E34[var_r29] = &((ParticleData *)(Hu3DData[var_r27].unk_120))->unk_48[var_r30]; + } + + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000D), 0x32); + arg0->model[4] = var_r27; + Hu3DModelLayerSet(var_r27, 3); + Hu3DParticleHookSet(var_r27, fn_1_C764); + for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r29++) { + lbl_1_bss_E34[var_r29] = &((ParticleData *)(Hu3DData[var_r27].unk_120))->unk_48[var_r30]; + } + + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000E), 0x32); + arg0->model[5] = var_r27; + Hu3DModelLayerSet(var_r27, 3); + Hu3DParticleHookSet(var_r27, fn_1_C764); + for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r29++) { + lbl_1_bss_E34[var_r29] = &((ParticleData *)(Hu3DData[var_r27].unk_120))->unk_48[var_r30]; + } + for (var_r30 = 0; var_r30 < 0x95; var_r30++) { + for (var_r29 = 1; var_r29 < 0x96; var_r29++) { + if (frandmod(0x3E8) < 0x1C2) { + var_r25 = lbl_1_bss_E34[var_r30]; + lbl_1_bss_E34[var_r30] = lbl_1_bss_E34[var_r29]; + lbl_1_bss_E34[var_r29] = var_r25; + } + } + } + + for (var_r30 = 0; var_r30 < 0x96; var_r30++) { + lbl_1_bss_E34[var_r30]->unk2C = 0.0f; + lbl_1_bss_E34[var_r30]->unk40.a = 0; + lbl_1_bss_E34[var_r30]->unk00 = 0; + } + + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x45000F), 0x32); + arg0->model[6] = var_r27; + Hu3DModelLayerSet(var_r27, 3); + Hu3DParticleHookSet(var_r27, fn_1_C8E8); + var_r25 = &((ParticleData *)(Hu3DData[var_r27].unk_120))->unk_48[0]; + for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r25++) { + var_r25->unk2C = 0.0f; + var_r25->unk40.a = 0; + var_r25->unk00 = 0; + } + + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x450010), 0x1F4); + arg0->model[7] = var_r27; + Hu3DModelLayerSet(var_r27, 2); + Hu3DParticleBlendModeSet(var_r27, 1); + Hu3DParticleHookSet(var_r27, fn_1_D3FC); + var_r25 = &((ParticleData *)(Hu3DData[var_r27].unk_120))->unk_48[0]; + for (var_r30 = 0; var_r30 < 0x1F4; var_r30++, var_r25++) { + var_r25->unk2C = 0.0f; + var_r25->unk40.a = 0; + var_r25->unk00 = 0; + } + var_r28 = &temp_r23->unk4; + for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r28++) { + var_r28->unk0 = 1; + var_r28->unk4 = 0; + var_r28->unkC = var_r28->unk10 = 0.0f; + var_r28->unk14 = var_r28->unk18 = 0.0f; + var_r28->unk1C = var_r28->unk20 = 0.0f; + var_r26 = Hu3DModelObjPtrGet(arg0->model[0], lbl_1_data_848[var_r30]); + var_r28->unk48o = var_r26; + sp14.x = sp14.y = sp14.z = -100000.0f; + sp8.x = sp8.y = sp8.z = 100000.0f; + + for (var_r29 = 0; var_r29 < var_r26->data.vertex->count; var_r29++) { + if (((Vec *)var_r26->data.vertex->data)[var_r29].x > sp14.x) { + sp14.x = ((Vec *)var_r26->data.vertex->data)[var_r29].x; + } + if (((Vec *)var_r26->data.vertex->data)[var_r29].y > sp14.y) { + sp14.y = ((Vec *)var_r26->data.vertex->data)[var_r29].y; + } + if (((Vec *)var_r26->data.vertex->data)[var_r29].z > sp14.z) { + sp14.z = ((Vec *)var_r26->data.vertex->data)[var_r29].z; + } + if (((Vec *)var_r26->data.vertex->data)[var_r29].x < sp8.x) { + sp8.x = ((Vec *)var_r26->data.vertex->data)[var_r29].x; + } + if (((Vec *)var_r26->data.vertex->data)[var_r29].y < sp8.y) { + sp8.y = ((Vec *)var_r26->data.vertex->data)[var_r29].y; + } + if (((Vec *)var_r26->data.vertex->data)[var_r29].z < sp8.z) { + sp8.z = ((Vec *)var_r26->data.vertex->data)[var_r29].z; + } + } + VECAdd(&sp14, &sp8, &sp20); + VECScale(&sp20, &sp20, 0.5f); + var_r28->unk24 = sp20; + var_r28->unk30 = var_r28->unk24; + var_r28->unk8 = (360.0 + atan2d(sp20.x, sp20.z)); + if (var_r28->unk8 >= 360.0f) { + var_r28->unk8 -= 360.0f; + } + } + var_r27 = Hu3DModelCreateFile(0x45000B); + Hu3DModelLayerSet(var_r27, 2); + var_r24 = &temp_r23->unk984; + for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r24++) { + var_r24->unk0 = 0; + var_r24->unk8 = 0; + var_r24->unk18 = 0.0f; + var_r24->unk1C = var_r24->unk20 = 0.0f; + var_r24->unk4 = Hu3DModelLink(var_r27); + Hu3DModelLayerSet(var_r24->unk4, 2); + Hu3DModelAttrSet(var_r24->unk4, 1); + } + Hu3DModelKill(var_r27); + arg0->func = fn_1_BF20; +} + +Vec lbl_1_data_8D8[4][2] = { + { + { -967.0f, -80.0f, -312.0f }, + { -867.0f, -80.0f, -485.0f }, + }, + { + { -917.0f, -80.0f, -857.0f }, + { -817.0f, -80.0f, -1030.0f }, + }, + { + { 967.0f, -80.0f, -312.0f }, + { 867.0f, -80.0f, -485.0f }, + }, + { + { 917.0f, -80.0f, -857.0f }, + { 817.0f, -80.0f, -1030.0f }, + }, +}; + +void fn_1_BF20(omObjData *arg0) +{ + Mtx sp5C; + Mtx sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + f32 temp_f29; + f32 temp_f30; + f32 temp_f31; + s32 var_r29; + M438MapStruct2 *var_r31; + M438MapStruct *var_r30; + M438MapStruct3 *temp_r28; + + temp_r28 = arg0->data; + temp_r28->unk0++; + var_r31 = &temp_r28->unk4; + + for (var_r29 = 0; var_r29 < 0x20; var_r29++, var_r31++) { + if ((var_r31->unk0 == 0) && (var_r31->unk4 != 0)) { + temp_f29 = var_r31->unk30.y; + VECAdd(&var_r31->unk30, &var_r31->unk3C, &var_r31->unk30); + var_r31->unk3C.x *= 0.92f; + var_r31->unk3C.z *= 0.92f; + var_r31->unk3C.y += -0.27222225f; + if (temp_f29 > 0.0) { + if (var_r31->unk30.y <= 0.0) { + HuAudFXEmiterPlay(0x6FF, &var_r31->unk30); + } + } + var_r31->unkC += var_r31->unk10; + var_r31->unk14 += var_r31->unk18; + var_r31->unk1C += var_r31->unk20; + sp14.x = sind(90.0f + var_r31->unk8); + sp14.z = cosd(90.0f + var_r31->unk8); + sp14.y = 0.0f; + MTXRotAxisRad(sp5C, &sp14, MTXDegToRad(var_r31->unkC)); + sp14.x = sp14.z = 0.0f; + sp14.y = 1.0f; + MTXRotAxisRad(sp2C, &sp14, MTXDegToRad(var_r31->unk14)); + MTXConcat(sp2C, sp5C, sp5C); + sp14.x = sind(var_r31->unk8); + sp14.z = cosd(var_r31->unk8); + sp14.y = 0.0f; + MTXRotAxisRad(sp2C, &sp14, MTXDegToRad(var_r31->unk1C)); + MTXConcat(sp2C, sp5C, sp5C); + fn_1_E034(sp5C, &sp20); + var_r31->unk48->unk_28.x = sp20.x; + var_r31->unk48->unk_28.y = sp20.y; + var_r31->unk48->unk_28.z = sp20.z; + MTXInverse(sp5C, sp5C); + MTXMultVec(sp5C, &var_r31->unk24, &sp8); + var_r31->unk48->unk_1C.x = (var_r31->unk30.x - sp8.x); + var_r31->unk48->unk_1C.y = (var_r31->unk30.y - sp8.y); + var_r31->unk48->unk_1C.z = (var_r31->unk30.z - sp8.z); + if (var_r31->unk30.y < -500.0f) { + var_r31->unk4 = 0; + } + } + } + if ((temp_r28->unk0 & 1) == 0) { + var_r30 = &temp_r28->unk984; + + for (var_r29 = 0; var_r29 < 0x32; var_r29++, var_r30++) { + if (var_r30->unk0 != 0) + continue; + var_r30->unk0 = 1; + var_r30->unk18 = frandmod(0x168); + if (frandmod(0x64) < 0x14) { + var_r30->unkC.x = (0.8f * (frandmod(0x7D0) - 0x3E8)); + var_r30->unkC.y = -80.0f; + var_r30->unkC.z = ((-1.2f * frandmod(0x3E8)) - 1000.0f); + } + else { + temp_f31 = frandmod(0x168); + temp_f30 = 800.0f + (0.25f * frandmod(0x3E8)); + var_r30->unkC.x = (temp_f30 * sind(temp_f31)); + var_r30->unkC.y = -80.0f; + var_r30->unkC.z = (temp_f30 * cosd(temp_f31)); + } + var_r30->unk20 = (0.1f + (0.0005f * frandmod(0x3E8))); + var_r30->unk1C = 0.0f; + Hu3DModelAttrReset(var_r30->unk4, 1); + Hu3DModelPosSetV(var_r30->unk4, &var_r30->unkC); + Hu3DModelRotSet(var_r30->unk4, 0.0f, var_r30->unk18, 0.0f); + Hu3DModelScaleSet(var_r30->unk4, var_r30->unk1C, var_r30->unk1C, var_r30->unk1C); + break; + } + } + var_r30 = &temp_r28->unk984; + for (var_r29 = 0; var_r29 < 0x32; var_r29++, var_r30++) { + if (var_r30->unk0 != 0) { + var_r30->unk1C += 0.005f; + if (var_r30->unk1C > var_r30->unk20) { + var_r30->unk0 = 0; + Hu3DModelAttrSet(var_r30->unk4, 1); + fn_1_D57C(&Hu3DData[var_r30->unk4].pos, var_r30->unk20); + } + Hu3DModelScaleSet(var_r30->unk4, var_r30->unk1C, var_r30->unk1C, var_r30->unk1C); + } + } + + for (var_r29 = 0; var_r29 < 4; var_r29++) { + VECSubtract(&lbl_1_data_8D8[var_r29][1], &lbl_1_data_8D8[var_r29][0], &sp14); + temp_f31 = 0.001f * frandmod(0x3E8); + VECScale(&sp14, &sp14, temp_f31); + VECAdd(&lbl_1_data_8D8[var_r29][0], &sp14, &sp8); + VECScale(&sp8, &sp8, 0.98f); + fn_1_D57C(&sp8, 0.03f); + } + if ((lbl_1_bss_E30 == 0) && (WipeStatGet() == 0)) { + HuAudFXPlay(0x6F9); + HuAudFXPlay(0x6FD); + lbl_1_bss_E30 = 1; + } +} + +void fn_1_C764(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + u16 temp_r0; + + var_r31 = particle->unk_48; + + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.x *= 0.95f; + var_r31->unk08.z *= 0.95f; + var_r31->unk08.y += -0.27222225f; + if (var_r31->unk00 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * 0x44); +} + +void fn_1_C8E8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + u16 temp_r0; + + var_r31 = particle->unk_48; + + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.x *= 0.92f; + var_r31->unk08.z *= 0.92f; + var_r31->unk2C += 5.0f; + var_r31->unk40.a *= 0.99f; + if (var_r31->unk00 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * 0x44); +} + +void fn_1_CAB0(f32 arg8) +{ + Vec sp8; + f32 temp_f31; + f32 temp_f30; + f32 temp_f28; + f32 temp_f27; + HsfanimStruct01 *var_r31; + s32 var_r30; + u32 var_r29; + + temp_f28 = 20.0f; + temp_f27 = 7.0f; + var_r29 = 0x19; + + for (var_r30 = 0; var_r30 < 0x96; var_r30++) { + var_r31 = lbl_1_bss_E34[var_r30]; + if (var_r31->unk00 == 0) { + var_r31->unk00 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8))); + temp_f31 = ((0.002f * frandmod(0x3E8)) - 1.0f); + temp_f31 = arg8 + (temp_f31 * temp_f28); + sp8.x = sind(temp_f31); + sp8.y = 0.0f; + sp8.z = cosd(temp_f31); + + temp_f31 = arg8 + (((0.002f * frandmod(0x3E8)) - 1.0f)) * temp_f27; + var_r31->unk34.x = 7.5 * sind(temp_f31) * 100.0; + var_r31->unk34.y = 0.2f * frandmod(0x3E8); + var_r31->unk34.z = 7.5 * cosd(temp_f31) * 100.0; + + temp_f30 = 1.6666667f * (4.0f + (0.014f * frandmod(0x3E8))); + var_r31->unk08.x = sp8.x * temp_f30; + var_r31->unk08.z = sp8.z * temp_f30; + var_r31->unk08.y = temp_f30 * ((0.0006f * frandmod(0x3E8)) - 0.2f); + + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 10.0f + frandmod(0x32); + var_r31->unk40.a = 0xFA; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF; + + var_r29--; + if (var_r29 < 1) + break; + } + } + var_r31 = ((ParticleData *)(Hu3DData[lbl_1_bss_108C[0]->model[6]].unk_120))->unk_48; + var_r29 = 0xF; + for (var_r30 = 0; var_r30 < 0x32; var_r30++, var_r31++) { + if (var_r31->unk00 == 0) { + var_r31->unk00 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8))); + temp_f31 = ((0.002f * frandmod(0x3E8)) - 1.0f); + temp_f31 = arg8 + (temp_f31 * temp_f28); + sp8.x = sind(temp_f31); + sp8.y = 0.0f; + sp8.z = cosd(temp_f31); + + temp_f31 = arg8 + (((0.002f * frandmod(0x3E8)) - 1.0f)) * temp_f27; + var_r31->unk34.x = 7.5 * sind(temp_f31) * 100.0; + var_r31->unk34.y = 0.2f * frandmod(0x3E8); + var_r31->unk34.z = 7.5 * cosd(temp_f31) * 100.0; + + temp_f30 = 1.6666667f * -(0.01f * frandmod(0x3E8)); + var_r31->unk08.x = sp8.x * temp_f30; + var_r31->unk08.z = sp8.z * temp_f30; + var_r31->unk08.y = temp_f30 * -((0.00020000001f * frandmod(0x3E8)) + 0.05f); + + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 100.0f + frandmod(0x64); + var_r31->unk40.a = 0x50 + frandmod(0x50); + temp_f31 = frandmod(0x3E8) * 0.001f; + var_r31->unk40.r = (60.0f * temp_f31) + 80.0f; + var_r31->unk40.g = (60.0f * temp_f31) + 61.0f; + var_r31->unk40.b = (60.0f * temp_f31) + 54.0f; + + var_r29--; + if (var_r29 < 1) + break; + } + } +} + +void fn_1_D3FC(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + u16 temp_r0; + + lbl_1_bss_E2C = 0; + var_r31 = particle->unk_48; + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.y += -0.27222225f; + if (var_r31->unk00 < 12.0f) { + var_r31->unk40.a = (0.8f * var_r31->unk40.a); + } + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + lbl_1_bss_E2C++; + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * 0x44); +} + +void fn_1_D57C(Vec *arg0, f32 arg1) +{ + Vec sp8; + f32 temp_f31; + f32 temp_f29; + HsfanimStruct01 *var_r31; + s32 var_r30; + u32 var_r29; + + var_r31 = ((ParticleData *)(Hu3DData[lbl_1_bss_108C[0]->model[7]].unk_120))->unk_48; + var_r29 = (u32)(3.0f + (15.0f * arg1)); + + for (var_r30 = 0; var_r30 < 0x1F4; var_r30++, var_r31++) { + if (var_r31->unk00 == 0) { + var_r31->unk00 = 60.0f * (0.3f + (0.0003f * frandmod(0x3E8))); + var_r31->unk34 = *arg0; + var_r31->unk34.x += arg1 * (0.07f * (frandmod(0x3E8) - 0x1F4)); + var_r31->unk34.z += arg1 * (0.07f * (frandmod(0x3E8) - 0x1F4)); + + temp_f31 = frandmod(0x168); + sp8.x = sind(temp_f31); + sp8.y = 0.0f; + sp8.z = cosd(temp_f31); + + temp_f29 = 1.6666667f * (0.5f + (0.001f * frandmod(0x3E8))); + var_r31->unk08.x = sp8.x * temp_f29; + var_r31->unk08.z = sp8.z * temp_f29; + var_r31->unk08.y = 1.6666667f * ((2.0f * arg1) + (1.0f + (0.002f * frandmod(0x3E8)))); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = (20.0f + frandmod(0x14)); + var_r31->unk40.a = (frandmod(0x46) + 0x64); + + temp_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk40.r = 177.0f + (78.0f * temp_f31); + var_r31->unk40.g = 60.0f + (129.0f * temp_f31); + var_r31->unk40.b = 30.0f + (122.0f * temp_f31); + + var_r29--; + if (var_r29 < 1) + break; + } + } +} + +s32 fn_1_DA64(f32 arg8) +{ + M438MapStruct3 *var_r28; + s32 var_r29; + s32 var_r30; + M438MapStruct2 *var_r31; + float var_f31; + float var_f29; + + var_r28 = lbl_1_bss_108C[0]->data; + var_r29 = 0; + var_r31 = &var_r28->unk4; + + for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + var_f31 = fn_1_E5A4(var_r31->unk8, arg8); + if ((fabs(var_f31) < 12.0) && (var_r31->unk0 != 0)) { + var_r31->unk0 = 0; + var_r31->unk4 = 1; + var_r31->unk30 = var_r31->unk24; + var_r31->unk3C.y = (1.6666667f * (2.0f + (0.002f * frandmod(0x3E8)))); + var_r31->unk3C.x = (1.6666667461395264f * (sind(var_r31->unk8) * (10.0f + (0.006f * frandmod(0x3E8))))); + var_r31->unk3C.z = (1.6666667461395264f * (cosd(var_r31->unk8) * (10.0f + (0.006f * frandmod(0x3E8))))); + var_r31->unkC = var_r31->unk14 = var_r31->unk1C = 0.0f; + var_r31->unk10 = (0.016666668f * (10.0f + (0.05f * frandmod(0x3E8)))); + var_r31->unk18 = (0.016666668f * (30.0f + (0.05f * frandmod(0x3E8)))); + var_r31->unk20 = (0.016666668f * (10.0f + (0.02f * frandmod(0x3E8)))); + if (frandmod(0x64) < 0x50) { + var_r31->unk10 *= -1.0f; + } + if (frandmod(0x64) < 0x32) { + var_r31->unk18 *= -1.0f; + } + if (frandmod(0x64) < 0x32) { + var_r31->unk20 *= -1.0f; + } + fn_1_CAB0(var_r31->unk8); + var_r29 = 1; + } + } + return var_r29; +} + +s32 fn_1_DEA0(f32 arg8) +{ + M438MapStruct3 *var_r28; + s32 var_r29; + s32 var_r30; + M438MapStruct2 *var_r31; + f32 var_f31; + + var_r28 = lbl_1_bss_108C[0]->data; + var_r29 = 0; + var_r31 = &var_r28->unk4; + + for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + var_f31 = fn_1_E5A4(var_r31->unk8, arg8); + if ((fabs(var_f31) < 8.0) && (var_r31->unk0 != 0)) { + var_r29 = 1; + break; + } + } + return var_r29; +} + +f32 fn_1_DF70(f32 arg8, f32 arg9) +{ + f32 temp_f30; + f32 var_f31; + + temp_f30 = 360.0f; + var_f31 = 180.0 * (atan2f(arg9, arg8) / M_PI); + if (var_f31 < 0.0f) { + var_f31 += temp_f30; + + } + else if (var_f31 >= temp_f30) { + var_f31 -= temp_f30; + } + return var_f31; +} + +void fn_1_E034(Mtx arg0, Vec *arg1) +{ + f32 var_f26; + f32 temp_f25; + + arg1->x = fn_1_DF70(arg0[2][2], arg0[1][2]); + arg1->z = fn_1_DF70(arg0[0][0], arg0[0][1]); + temp_f25 = -arg0[0][2]; + var_f26 = sqrtf(fabs(1.0 - (temp_f25 * temp_f25))); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod((180.0f + arg1->x), 360.0); + arg1->z = fmod((180.0f + arg1->z), 360.0); + var_f26 = -var_f26; + } + arg1->y = fn_1_DF70(var_f26, temp_f25); +} + +f32 fn_1_E488(f32 arg8, f32 arg9, f32 argA) +{ + f32 var_f31; + + var_f31 = fmodf((arg9 - arg8), 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f31 = fmodf((arg8 + (argA * var_f31)), 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +f32 fn_1_E5A4(f32 arg8, f32 arg9) +{ + f32 var_f31; + + var_f31 = fmodf((arg9 - arg8), 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} diff --git a/src/REL/m439Dll/main.c b/src/REL/m439Dll/main.c index 7cfee7b4..44c7927b 100644 --- a/src/REL/m439Dll/main.c +++ b/src/REL/m439Dll/main.c @@ -1,9 +1,9 @@ +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfanim.h" -#include "game/hsfmotion.h" -#include "game/hsfdraw.h" #include "game/init.h" @@ -11,142 +11,41 @@ #include "game/audio.h" #include "game/chrman.h" -#include "game/wipe.h" -#include "game/minigame_seq.h" -#include "game/gamework_data.h" -#include "game/sprite.h" #include "game/frand.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" #include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" - #include "REL/m439data.h" +#include "version.h" typedef struct camera_params { - float zoom; - Vec pos; - Vec rot; + float zoom; + Vec pos; + Vec rot; } CameraViewParams; CameraViewParams lbl_1_data_741C[] = { - { - 4775, - -2800, 0, -7700, - 343, 20, 0, - }, - { - 5000, - 0, 0, 0, - 290, 0, 0, - }, - { - 2800, - 0, 0, -7600, - 347, 0, 0, - }, - { - 2800, - 0, 0, -7600, - 290, 0, 0 - } + { VERSION_NTSC ? 4775.0f : 4500.0f, -2800.0f, 0.0f, -7700.0f, 343.0f, 20.0f, 0.0f }, + { 5000.0f, 0.f, 0.0f, 0.0f, 290.0f, 0.0f, 0.0f }, + { 2800.0f, 0.f, 0.0f, -7600.0f, 347.0f, 0.0f, 0.0f }, + { 2800.0f, 0.f, 0.0f, -7600.0f, 290.0f, 0.0f, 0.0f }, }; - typedef struct struct_data_748C { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC[2]; + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC[2]; } StructData748C; -StructData748C lbl_1_data_748C[16] = { - { - 0, - -1, - 1, - { 1, 0 } - }, - { - 1, - 0, - 2, - { 2, 3 } - }, - { - 2, - 1, - 1, - { 4, 0 } - }, - { - 2, - 1, - 1, - { 5, 0 } - }, - { - 3, - 2, - 2, - { 6, 7 } - }, - { - 3, - 3, - 2, - { 8, 9 } - }, - { - 4, - 4, - 1, - { 10, 0 } - }, - { - 4, - 4, - 1, - { 11, 0 } - }, - { - 4, - 5, - 1, - { 12, 0 } - }, - { - 4, - 5, - 1, - { 13, 0 } - }, - { - 5, - 6, - 0, - { 0, 0 } - }, - { - 5, - 7, - 0, - { 0, 0 } - }, - { - 5, - 8, - 0, - { 0, 0 } - }, - { - 5, - 9, - 0, - { 0, 0 } - } -}; +StructData748C lbl_1_data_748C[16] = { { 0, -1, 1, { 1, 0 } }, { 1, 0, 2, { 2, 3 } }, { 2, 1, 1, { 4, 0 } }, { 2, 1, 1, { 5, 0 } }, + { 3, 2, 2, { 6, 7 } }, { 3, 3, 2, { 8, 9 } }, { 4, 4, 1, { 10, 0 } }, { 4, 4, 1, { 11, 0 } }, { 4, 5, 1, { 12, 0 } }, { 4, 5, 1, { 13, 0 } }, + { 5, 6, 0, { 0, 0 } }, { 5, 7, 0, { 0, 0 } }, { 5, 8, 0, { 0, 0 } }, { 5, 9, 0, { 0, 0 } } }; float lbl_1_data_75CC[5] = { -700, -2200, -3600, -5200, -6600 }; s32 lbl_1_data_75E0[4] = { 1, 2, 4, 8 }; @@ -156,7 +55,6 @@ GXColor lbl_1_data_7608 = { 255, 255, 255, 255 }; Vec lbl_1_data_760C = { 700, 2500, -700 }; Vec lbl_1_data_7618 = { 0, 1, 0 }; - omObjData *lbl_1_bss_170; omObjData *lbl_1_bss_16C; omObjData *lbl_1_bss_168; @@ -195,60 +93,59 @@ void fn_1_73F4(Process *objman); void fn_1_6C08(omObjData *object); - void ObjectSetup(void) { - Process *objman; - s16 light; - - CameraData *camera = &Hu3DCamera[0]; - OSReport("******* M439ObjectSetup *********\n"); - objman = omInitObjMan(50, 8192); - omGameSysInit(objman); - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 10, 100, 15000, 1.2); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - lbl_1_bss_168 = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); - lbl_1_bss_168->work[0] = 1; - lbl_1_bss_34.x = lbl_1_data_75FC.x-lbl_1_data_75F0.x; - lbl_1_bss_34.y = lbl_1_data_75FC.y-lbl_1_data_75F0.y; - lbl_1_bss_34.z = lbl_1_data_75FC.z-lbl_1_data_75F0.z; - VECNormalize(&lbl_1_bss_34, &lbl_1_bss_34); - light = Hu3DGLightCreateV(&lbl_1_data_75F0, &lbl_1_bss_34, &lbl_1_data_7608); - Hu3DGLightInfinitytSet(light); - Hu3DGLightStaticSet(light, 1); - Hu3DShadowCreate(20, 200, 10000); - Hu3DShadowTPLvlSet(0.625f); - Hu3DShadowPosSet(&lbl_1_data_760C, &lbl_1_data_7618, &lbl_1_data_75FC); - HuAudSndGrpSet(65); - lbl_1_bss_170 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_384); - lbl_1_bss_16C = omAddObjEx(objman, 10, 0, 0, -1, fn_1_6C08); - fn_1_A18(objman); - fn_1_49C8(objman); - fn_1_5BA0(objman); - fn_1_73F4(objman); + Process *objman; + s16 light; + + CameraData *camera = &Hu3DCamera[0]; + OSReport("******* M439ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 10, 100, 15000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_1_bss_168 = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); + lbl_1_bss_168->work[0] = 1; + lbl_1_bss_34.x = lbl_1_data_75FC.x - lbl_1_data_75F0.x; + lbl_1_bss_34.y = lbl_1_data_75FC.y - lbl_1_data_75F0.y; + lbl_1_bss_34.z = lbl_1_data_75FC.z - lbl_1_data_75F0.z; + VECNormalize(&lbl_1_bss_34, &lbl_1_bss_34); + light = Hu3DGLightCreateV(&lbl_1_data_75F0, &lbl_1_bss_34, &lbl_1_data_7608); + Hu3DGLightInfinitytSet(light); + Hu3DGLightStaticSet(light, 1); + Hu3DShadowCreate(20, 200, 10000); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_760C, &lbl_1_data_7618, &lbl_1_data_75FC); + HuAudSndGrpSet(65); + lbl_1_bss_170 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_384); + lbl_1_bss_16C = omAddObjEx(objman, 10, 0, 0, -1, fn_1_6C08); + fn_1_A18(objman); + fn_1_49C8(objman); + fn_1_5BA0(objman); + fn_1_73F4(objman); } void fn_1_364(s32 arg0) { - lbl_1_bss_160 = arg0; + lbl_1_bss_160 = arg0; } s32 fn_1_374(void) { - return lbl_1_bss_160; + return lbl_1_bss_160; } void fn_1_408(omObjData *object); void fn_1_384(omObjData *object) { - fn_1_364(0); - lbl_1_bss_14C = 60; - lbl_1_bss_12E = 60; - lbl_1_bss_12C = 60; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_408; + fn_1_364(0); + lbl_1_bss_14C = REFRESH_RATE; + lbl_1_bss_12E = 60; + lbl_1_bss_12C = REFRESH_RATE; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_408; } s32 lbl_1_data_7648 = -1; @@ -261,111 +158,111 @@ void fn_1_C00(void); void fn_1_408(omObjData *object) { - switch(fn_1_374()) { - case 0: - if(lbl_1_bss_14C == 60) { - HuAudFXPlay(1797); - } - if(--lbl_1_bss_14C == 0) { - fn_1_364(1); - lbl_1_bss_14C = 120; - } - break; - - case 1: - if(--lbl_1_bss_14C == 0) { - WipeColorSet(0, 0, 0); - fn_1_364(2); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - } - break; - - case 2: - if(!WipeStatGet()) { - fn_1_364(3); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - lbl_1_data_764C = HuAudFXPlay(1798); - } - break; - - case 3: - if(!WipeStatGet()) { - fn_1_364(4); - lbl_1_bss_32 = MGSeqStartCreate(); - - } - break; - - case 4: - if(!MGSeqStatGet(lbl_1_bss_32)) { - fn_1_364(5); - lbl_1_bss_30 = MGSeqTimerCreate(60); - } - if(lbl_1_data_7648 < 0 && (MGSeqStatGet(lbl_1_bss_32) & 0x10)) { - lbl_1_data_7648 = HuAudSeqPlay(75); - } - break; - - case 5: - if(--lbl_1_bss_12C == 0) { - lbl_1_bss_12E--; - MGSeqParamSet(lbl_1_bss_30, 1, lbl_1_bss_12E); - lbl_1_bss_12C = 60; - } - if(lbl_1_bss_130 >= 3 || lbl_1_bss_12E == 0) { - fn_1_364(6); - lbl_1_bss_32 = MGSeqFinishCreate(); - HuAudSeqFadeOut(lbl_1_data_7648, 100); - } - break; - - case 6: - if(lbl_1_bss_30 >= 0) { - MGSeqParamSet(lbl_1_bss_30, 2, -1); - lbl_1_bss_30 = -1; - } - if(!MGSeqStatGet(lbl_1_bss_32)) { - fn_1_364(7); - lbl_1_bss_14C = 60; - } - break; - - case 7: - if(fn_1_B7C() && --lbl_1_bss_14C == 0) { - fn_1_C00(); - fn_1_364(9); - if(lbl_1_bss_130) { - HuAudSStreamPlay(1); - } else { - HuAudSStreamPlay(4); - } - lbl_1_bss_14C = 210; - } - break; - - case 9: - if(--lbl_1_bss_14C == 0) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - WipeColorSet(255, 255, 255); - HuAudFXStop(lbl_1_data_764C); - object->func = fn_1_9BC; - } - break; - } - if(lbl_1_bss_13A) { - s32 i; - for(i=0; ifunc = fn_1_9BC; - } + switch (fn_1_374()) { + case 0: + if (lbl_1_bss_14C == REFRESH_RATE) { + HuAudFXPlay(1797); + } + if (--lbl_1_bss_14C == 0) { + fn_1_364(1); + lbl_1_bss_14C = 2 * REFRESH_RATE; + } + break; + + case 1: + if (--lbl_1_bss_14C == 0) { + WipeColorSet(0, 0, 0); + fn_1_364(2); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + } + break; + + case 2: + if (!WipeStatGet()) { + fn_1_364(3); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + lbl_1_data_764C = HuAudFXPlay(1798); + } + break; + + case 3: + if (!WipeStatGet()) { + fn_1_364(4); + lbl_1_bss_32 = MGSeqStartCreate(); + } + break; + + case 4: + if (!MGSeqStatGet(lbl_1_bss_32)) { + fn_1_364(5); + lbl_1_bss_30 = MGSeqTimerCreate(60); + } + if (lbl_1_data_7648 < 0 && (MGSeqStatGet(lbl_1_bss_32) & 0x10)) { + lbl_1_data_7648 = HuAudSeqPlay(75); + } + break; + + case 5: + if (--lbl_1_bss_12C == 0) { + lbl_1_bss_12E--; + MGSeqParamSet(lbl_1_bss_30, 1, lbl_1_bss_12E); + lbl_1_bss_12C = REFRESH_RATE; + } + if (lbl_1_bss_130 >= 3 || lbl_1_bss_12E == 0) { + fn_1_364(6); + lbl_1_bss_32 = MGSeqFinishCreate(); + HuAudSeqFadeOut(lbl_1_data_7648, 100); + } + break; + + case 6: + if (lbl_1_bss_30 >= 0) { + MGSeqParamSet(lbl_1_bss_30, 2, -1); + lbl_1_bss_30 = -1; + } + if (!MGSeqStatGet(lbl_1_bss_32)) { + fn_1_364(7); + lbl_1_bss_14C = REFRESH_RATE; + } + break; + + case 7: + if (fn_1_B7C() && --lbl_1_bss_14C == 0) { + fn_1_C00(); + fn_1_364(9); + if (lbl_1_bss_130) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(4); + } + lbl_1_bss_14C = 3.5f * REFRESH_RATE; + } + break; + + case 9: + if (--lbl_1_bss_14C == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + WipeColorSet(255, 255, 255); + HuAudFXStop(lbl_1_data_764C); + object->func = fn_1_9BC; + } + break; + } + if (lbl_1_bss_13A) { + s32 i; + for (i = 0; i < lbl_1_bss_13A; i++) { + GWPlayerCoinWinSet(lbl_1_bss_132[i], lbl_1_bss_13C); + } + lbl_1_bss_13C += lbl_1_bss_13A; + lbl_1_bss_130 += lbl_1_bss_13A; + lbl_1_bss_13A = 0; + } + if (omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + WipeColorSet(255, 255, 255); + object->func = fn_1_9BC; + } } void fn_1_B20(void); @@ -373,133 +270,125 @@ void fn_1_5CAC(void); void fn_1_9BC(omObjData *object) { - if(!WipeStatGet()) { - fn_1_B20(); - fn_1_5CAC(); - MGSeqKillAll(); - HuAudFadeOut(1); - omOvlReturnEx(1, 1); - OSReport("******* M439Exit *********\n"); - - } + if (!WipeStatGet()) { + fn_1_B20(); + fn_1_5CAC(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + OSReport("******* M439Exit *********\n"); + } } void fn_1_D0C(omObjData *object); void fn_1_A18(Process *objman) { - s32 i; - lbl_1_bss_150[0] = lbl_1_bss_150[1] = lbl_1_bss_150[2] = lbl_1_bss_150[3] = -1; - lbl_1_bss_148 = 0; - lbl_1_bss_13C = 0; - lbl_1_bss_13A = 0; - lbl_1_bss_130 = 0; - omMakeGroupEx(objman, 0, 4); - for(i=0; i<4; i++) { - omAddObjEx(objman, 5, 3, 50, 0, fn_1_D0C); - } - lbl_1_bss_40 = HuSprAnimRead(HuDataReadNum(0x460016, MEMORY_DEFAULT_NUM)); - + s32 i; + lbl_1_bss_150[0] = lbl_1_bss_150[1] = lbl_1_bss_150[2] = lbl_1_bss_150[3] = -1; + lbl_1_bss_148 = 0; + lbl_1_bss_13C = 0; + lbl_1_bss_13A = 0; + lbl_1_bss_130 = 0; + omMakeGroupEx(objman, 0, 4); + for (i = 0; i < 4; i++) { + omAddObjEx(objman, 5, 3, 50, 0, fn_1_D0C); + } + lbl_1_bss_40 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M439, 0x16), MEMORY_DEFAULT_NUM)); } void fn_1_4978(omObjData *object); void fn_1_B20(void) { - omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - s32 i; - for(i=0; i<4; i++) { - fn_1_4978(objList[i]); - - } + omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + s32 i; + for (i = 0; i < 4; i++) { + fn_1_4978(objList[i]); + } } typedef struct work_d0c { - u16 unk0_field0 : 1; - u16 unk0_field1 : 1; - u16 unk0_field2 : 1; - u16 unk0_field3 : 1; - u16 unk0_field4 : 1; - u16 unk0_field5 : 1; - u16 unk0_field6 : 1; - u16 unk0_field7 : 1; - u16 unk0_field8 : 1; - s16 unk2; - s16 unk4; - s8 unk6; - s8 unk7; - u16 unk8; - u16 unkA; - s16 unkC; - s16 unkE; - s16 unk10; - s16 unk12; - Vec unk14; - Vec unk20; - s32 unk2C; - u32 unk30; - float unk34; - float unk38; - s16 unk3C; - s16 unk3E; - float unk40; - s16 unk44; - s16 unk46; - float unk48; - float unk4C; - Vec unk50; - Vec unk5C; - Vec unk68; - Vec unk74; - u16 unk80; - Vec unk84; - float unk90; - float unk94; - Vec unk98; - float unkA4; - float unkA8; + u16 unk0_field0 : 1; + u16 unk0_field1 : 1; + u16 unk0_field2 : 1; + u16 unk0_field3 : 1; + u16 unk0_field4 : 1; + u16 unk0_field5 : 1; + u16 unk0_field6 : 1; + u16 unk0_field7 : 1; + u16 unk0_field8 : 1; + s16 unk2; + s16 unk4; + s8 unk6; + s8 unk7; + u16 unk8; + u16 unkA; + s16 unkC; + s16 unkE; + s16 unk10; + s16 unk12; + Vec unk14; + Vec unk20; + s32 unk2C; + u32 unk30; + float unk34; + float unk38; + s16 unk3C; + s16 unk3E; + float unk40; + s16 unk44; + s16 unk46; + float unk48; + float unk4C; + Vec unk50; + Vec unk5C; + Vec unk68; + Vec unk74; + u16 unk80; + Vec unk84; + float unk90; + float unk94; + Vec unk98; + float unkA4; + float unkA8; } WorkD0C; s32 fn_1_B7C(void) { - omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - s32 i; - for(i=0; i<4; i++) { - WorkD0C *work = objList[i]->data; - if(!work->unk0_field7) { - return 0; - } - } - return 1; + omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + s32 i; + for (i = 0; i < 4; i++) { + WorkD0C *work = objList[i]->data; + if (!work->unk0_field7) { + return 0; + } + } + return 1; } void fn_1_C00(void) { - omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - s32 i; - if(lbl_1_bss_13C == 0) { - for(i=0; i<4; i++) { - GWPlayerCoinWinSet(i, 3); - } - } else { - for(i=0; i<4; i++) { - WorkD0C *work = objList[i]->data; - if(!work->unk0_field0) { - GWPlayerCoinWinSet(i, lbl_1_bss_13C); - } - } - } + omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + s32 i; + if (lbl_1_bss_13C == 0) { + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(i, 3); + } + } + else { + for (i = 0; i < 4; i++) { + WorkD0C *work = objList[i]->data; + if (!work->unk0_field0) { + GWPlayerCoinWinSet(i, lbl_1_bss_13C); + } + } + } } -s32 lbl_1_data_7694[7] = { - 0x5F0000, - 0x5F0002, - 0x5F0003, - 0x5F0014, - 0x5F0050, - 0x5F0017, - 0x5F0072 -}; +s32 lbl_1_data_7694[7] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x14), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x50), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72) }; void fn_1_4528(ModelData *model, ParticleData *particle, Mtx matrix); @@ -507,63 +396,63 @@ void fn_1_2BB4(omObjData *object); void fn_1_D0C(omObjData *object) { - WorkD0C *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkD0C), MEMORY_DEFAULT_NUM); - u32 i; - s32 charNo; - object->data = work; - memset(work, 0, sizeof(WorkD0C)); - work->unk2 = lbl_1_bss_148++; - work->unk4 = GWPlayerCfg[work->unk2].pad_idx; - charNo = GWPlayerCfg[work->unk2].character; - work->unkC = charNo; - work->unkE = GWPlayerCfg[work->unk2].diff; - work->unk10 = GWPlayerCfg[work->unk2].group; - object->model[0] = CharModelCreate(charNo, 8); - if(work->unk2 == 0) { - Hu3DModelShadowSet(object->model[0]); - } - Hu3DModelCameraSet(object->model[0], lbl_1_data_75E0[work->unk2]); - work->unk2C = 0; - work->unk30 = 0x40000001; - for(i=0; i<7; i++) { - object->motion[i] = CharModelMotionCreate(work->unkC, lbl_1_data_7694[i]); - } - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - CharModelVoiceEnableSet(work->unkC, object->motion[4], 0); - CharModelDataClose(work->unkC); - object->model[1] = Hu3DModelCreateFile(0x460012); - Hu3DModelAttrSet(object->model[1], 1); - Hu3DModelCameraSet(object->model[1], lbl_1_data_75E0[work->unk2]); - work->unk0_field3 = 1; - work->unk44 = 0; - work->unk46 = 0; - work->unk40 = 1000; - work->unk14.x = 0; - work->unk94 = work->unkA4 = 0.5f; - object->rot.y = 180; - object->model[2] = Hu3DParticleCreate(lbl_1_bss_40, 10); - Hu3DParticleHookSet(object->model[2], fn_1_4528); - Hu3DModelAttrSet(object->model[2], 1); - Hu3DModelCameraSet(object->model[2], lbl_1_data_75E0[work->unk2]); - object->func = fn_1_2BB4; + WorkD0C *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkD0C), MEMORY_DEFAULT_NUM); + u32 i; + s32 charNo; + object->data = work; + memset(work, 0, sizeof(WorkD0C)); + work->unk2 = lbl_1_bss_148++; + work->unk4 = GWPlayerCfg[work->unk2].pad_idx; + charNo = GWPlayerCfg[work->unk2].character; + work->unkC = charNo; + work->unkE = GWPlayerCfg[work->unk2].diff; + work->unk10 = GWPlayerCfg[work->unk2].group; + object->model[0] = CharModelCreate(charNo, 8); + if (work->unk2 == 0) { + Hu3DModelShadowSet(object->model[0]); + } + Hu3DModelCameraSet(object->model[0], lbl_1_data_75E0[work->unk2]); + work->unk2C = 0; + work->unk30 = HU3D_MOTATTR_LOOP; + for (i = 0; i < 7; i++) { + object->motion[i] = CharModelMotionCreate(work->unkC, lbl_1_data_7694[i]); + } + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + CharModelVoiceEnableSet(work->unkC, object->motion[4], 0); + CharModelDataClose(work->unkC); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M439, 0x12)); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(object->model[1], lbl_1_data_75E0[work->unk2]); + work->unk0_field3 = 1; + work->unk44 = 0; + work->unk46 = 0; + work->unk40 = 1000; + work->unk14.x = 0; + work->unk94 = work->unkA4 = 0.5f; + object->rot.y = 180; + object->model[2] = Hu3DParticleCreate(lbl_1_bss_40, 10); + Hu3DParticleHookSet(object->model[2], fn_1_4528); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(object->model[2], lbl_1_data_75E0[work->unk2]); + object->func = fn_1_2BB4; } float fn_1_1024(float arg0, float arg1, float arg2) { - float temp_f31 = fmod(arg1-arg0, 360); - float temp_f30; - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - if(temp_f31 > 180.0f) { - temp_f31 -= 360.0f; - } - temp_f30 = fmod(arg0+(arg2*temp_f31), 360.0); - if(temp_f30 < 0.0f) { - temp_f30 += 360.0f; - } - return temp_f30; + float temp_f31 = fmod(arg1 - arg0, 360); + float temp_f30; + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if (temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + temp_f30 = fmod(arg0 + (arg2 * temp_f31), 360.0); + if (temp_f30 < 0.0f) { + temp_f30 += 360.0f; + } + return temp_f30; } float lbl_1_data_76B0[11][2] = { @@ -582,281 +471,277 @@ float lbl_1_data_76B0[11][2] = { s32 fn_1_1128(Vec *arg0) { - float sp20[2]; - float sp18[2]; - float sp10[2]; - float temp_f29; - - u32 i; - for(i=0; i<10; i++) { - s32 temp_r30 = i+1; - - float temp_f26; - sp20[0] = lbl_1_data_76B0[temp_r30][0]-lbl_1_data_76B0[i][0]; - sp20[1] = lbl_1_data_76B0[temp_r30][1]-lbl_1_data_76B0[i][1]; - temp_f26 = (((arg0->z*sp20[1])+((arg0->x*sp20[0])-(sp20[0]*lbl_1_data_76B0[i][0])))-(sp20[1]*lbl_1_data_76B0[i][1]))/((sp20[0]*sp20[0])+(sp20[1]*sp20[1])); - if(temp_f26 >= 0.0f && temp_f26 < 1.0f) { - sp10[0] = lbl_1_data_76B0[i][0]+(sp20[0]*temp_f26); - sp10[1] = lbl_1_data_76B0[i][1]+(sp20[1]*temp_f26); - sp18[0] = arg0->x-sp10[0]; - sp18[1] = arg0->z-sp10[1]; - temp_f29 = sqrtf((sp18[0]*sp18[0])+(sp18[1]*sp18[1])); - if(temp_f29 < 130.0f) { - if(temp_f29 != 0.0f) { - sp18[0] /= temp_f29; - sp18[1] /= temp_f29; - } else { - sp18[0] = 0; - sp18[1] = 1; - } - arg0->x = sp10[0]+(130.0f*sp18[0]); - arg0->z = sp10[1]+(130.0f*sp18[1]); - } - } - } - for(i=0; i<11; i++) { - sp20[0] = arg0->x-lbl_1_data_76B0[i][0]; - sp20[1] = arg0->z-lbl_1_data_76B0[i][1]; - temp_f29 = sqrtf((sp20[0]*sp20[0])+(sp20[1]*sp20[1])); - if(temp_f29 < 130.0f) { - if(temp_f29 != 0.0f) { - sp20[0] /= temp_f29; - sp20[1] /= temp_f29; - } else { - sp20[0] = 0; - sp20[1] = 1; - } - arg0->x = lbl_1_data_76B0[i][0]+(130.0f*sp20[0]); - arg0->z = lbl_1_data_76B0[i][1]+(130.0f*sp20[1]); - } - } + float sp20[2]; + float sp18[2]; + float sp10[2]; + float temp_f29; + + u32 i; + for (i = 0; i < 10; i++) { + s32 temp_r30 = i + 1; + + float temp_f26; + sp20[0] = lbl_1_data_76B0[temp_r30][0] - lbl_1_data_76B0[i][0]; + sp20[1] = lbl_1_data_76B0[temp_r30][1] - lbl_1_data_76B0[i][1]; + temp_f26 = (((arg0->z * sp20[1]) + ((arg0->x * sp20[0]) - (sp20[0] * lbl_1_data_76B0[i][0]))) - (sp20[1] * lbl_1_data_76B0[i][1])) + / ((sp20[0] * sp20[0]) + (sp20[1] * sp20[1])); + if (temp_f26 >= 0.0f && temp_f26 < 1.0f) { + sp10[0] = lbl_1_data_76B0[i][0] + (sp20[0] * temp_f26); + sp10[1] = lbl_1_data_76B0[i][1] + (sp20[1] * temp_f26); + sp18[0] = arg0->x - sp10[0]; + sp18[1] = arg0->z - sp10[1]; + temp_f29 = sqrtf((sp18[0] * sp18[0]) + (sp18[1] * sp18[1])); + if (temp_f29 < 130.0f) { + if (temp_f29 != 0.0f) { + sp18[0] /= temp_f29; + sp18[1] /= temp_f29; + } + else { + sp18[0] = 0; + sp18[1] = 1; + } + arg0->x = sp10[0] + (130.0f * sp18[0]); + arg0->z = sp10[1] + (130.0f * sp18[1]); + } + } + } + for (i = 0; i < 11; i++) { + sp20[0] = arg0->x - lbl_1_data_76B0[i][0]; + sp20[1] = arg0->z - lbl_1_data_76B0[i][1]; + temp_f29 = sqrtf((sp20[0] * sp20[0]) + (sp20[1] * sp20[1])); + if (temp_f29 < 130.0f) { + if (temp_f29 != 0.0f) { + sp20[0] /= temp_f29; + sp20[1] /= temp_f29; + } + else { + sp20[0] = 0; + sp20[1] = 1; + } + arg0->x = lbl_1_data_76B0[i][0] + (130.0f * sp20[0]); + arg0->z = lbl_1_data_76B0[i][1] + (130.0f * sp20[1]); + } + } } - -float lbl_1_data_7708[3][2][2] = { - -99.8, -1431.8, 77.2, -1437.8, - -1499.8, -4571.8, -1322.8, -4577.8, - 1300.2, -4571.8, 1477.2, -4577.8 -}; +float lbl_1_data_7708[3][2][2] = { -99.8, -1431.8, 77.2, -1437.8, -1499.8, -4571.8, -1322.8, -4577.8, 1300.2, -4571.8, 1477.2, -4577.8 }; s32 fn_1_16B0(Vec *arg0) { - s32 i; - for(i=0; i<3; i++) { - float sp20[2]; - float sp18[2]; - float sp10[2]; - float temp_f29; - float temp_f26; - s32 j; - sp20[0] = lbl_1_data_7708[i][1][0]-lbl_1_data_7708[i][0][0]; - sp20[1] = lbl_1_data_7708[i][1][1]-lbl_1_data_7708[i][0][1]; - temp_f26 = (((arg0->z*sp20[1])+((arg0->x*sp20[0])-(sp20[0]*lbl_1_data_7708[i][0][0])))-(sp20[1]*lbl_1_data_7708[i][0][1]))/((sp20[0]*sp20[0])+(sp20[1]*sp20[1])); - if(temp_f26 >= 0.0f && temp_f26 < 1.0f) { - sp10[0] = lbl_1_data_7708[i][0][0]+(sp20[0]*temp_f26); - sp10[1] = lbl_1_data_7708[i][0][1]+(sp20[1]*temp_f26); - sp18[0] = arg0->x-sp10[0]; - sp18[1] = arg0->z-sp10[1]; - temp_f29 = sqrtf((sp18[0]*sp18[0])+(sp18[1]*sp18[1])); - if(temp_f29 < 50.0f) { - if(temp_f29 != 0.0f) { - sp18[0] /= temp_f29; - sp18[1] /= temp_f29; - } else { - sp18[0] = 0; - sp18[1] = 1; - } - arg0->x = sp10[0]+(50.0f*sp18[0]); - arg0->z = sp10[1]+(50.0f*sp18[1]); - } - } - for(j=0; j<2; j++) { - sp20[0] = arg0->x-lbl_1_data_7708[i][j][0]; - sp20[1] = arg0->z-lbl_1_data_7708[i][j][1]; - temp_f29 = sqrtf((sp20[0]*sp20[0])+(sp20[1]*sp20[1])); - if(temp_f29 < 50.0f) { - if(temp_f29 != 0.0f) { - sp20[0] /= temp_f29; - sp20[1] /= temp_f29; - } else { - sp20[0] = 0; - sp20[1] = 1; - } - arg0->x = lbl_1_data_7708[i][j][0]+(50.0f*sp20[0]); - arg0->z = lbl_1_data_7708[i][j][1]+(50.0f*sp20[1]); - } - } - } + s32 i; + for (i = 0; i < 3; i++) { + float sp20[2]; + float sp18[2]; + float sp10[2]; + float temp_f29; + float temp_f26; + s32 j; + sp20[0] = lbl_1_data_7708[i][1][0] - lbl_1_data_7708[i][0][0]; + sp20[1] = lbl_1_data_7708[i][1][1] - lbl_1_data_7708[i][0][1]; + temp_f26 = (((arg0->z * sp20[1]) + ((arg0->x * sp20[0]) - (sp20[0] * lbl_1_data_7708[i][0][0]))) - (sp20[1] * lbl_1_data_7708[i][0][1])) + / ((sp20[0] * sp20[0]) + (sp20[1] * sp20[1])); + if (temp_f26 >= 0.0f && temp_f26 < 1.0f) { + sp10[0] = lbl_1_data_7708[i][0][0] + (sp20[0] * temp_f26); + sp10[1] = lbl_1_data_7708[i][0][1] + (sp20[1] * temp_f26); + sp18[0] = arg0->x - sp10[0]; + sp18[1] = arg0->z - sp10[1]; + temp_f29 = sqrtf((sp18[0] * sp18[0]) + (sp18[1] * sp18[1])); + if (temp_f29 < 50.0f) { + if (temp_f29 != 0.0f) { + sp18[0] /= temp_f29; + sp18[1] /= temp_f29; + } + else { + sp18[0] = 0; + sp18[1] = 1; + } + arg0->x = sp10[0] + (50.0f * sp18[0]); + arg0->z = sp10[1] + (50.0f * sp18[1]); + } + } + for (j = 0; j < 2; j++) { + sp20[0] = arg0->x - lbl_1_data_7708[i][j][0]; + sp20[1] = arg0->z - lbl_1_data_7708[i][j][1]; + temp_f29 = sqrtf((sp20[0] * sp20[0]) + (sp20[1] * sp20[1])); + if (temp_f29 < 50.0f) { + if (temp_f29 != 0.0f) { + sp20[0] /= temp_f29; + sp20[1] /= temp_f29; + } + else { + sp20[0] = 0; + sp20[1] = 1; + } + arg0->x = lbl_1_data_7708[i][j][0] + (50.0f * sp20[0]); + arg0->z = lbl_1_data_7708[i][j][1] + (50.0f * sp20[1]); + } + } + } } float fn_1_1C54(s32 arg0, Vec *arg1, Vec *arg2) { - Vec *temp_r31; - Vec *temp_r30; - s32 i; - Vec sp24; - Vec sp18; - s32 sp14 = -1; - float sp10 = 1000; - float *temp_r28 = lbl_1_data_108C[arg0]; - VECSubtract(arg2, arg1, &sp18); - temp_r31 = lbl_1_data_1014[arg0][0]; - temp_r30 = lbl_1_data_1014[arg0][1]; - for(i=0; ix*sp24.x)+(sp18.y*sp24.y)-(temp_r31->y*sp24.y)+(sp18.z*sp24.z)-(temp_r31->z*sp24.z))/temp_f31; - VECSubtract(&temp_r30[1], &temp_r30[0], &sp24); - temp_f31 = VECMag2Point(&sp24); - if(temp_f31 == 0.0f) { - continue; - } - temp_f28 = ((sp18.x*sp24.x)-(temp_r30->x*sp24.x)+(sp18.y*sp24.y)-(temp_r30->y*sp24.y)+(sp18.z*sp24.z)-(temp_r30->z*sp24.z))/temp_f31; - temp_f30 = 0.5f*(temp_f29+temp_f28); - if(temp_f30 < 0.0f || temp_f30 >= 1.0f) { - continue; - } else { - return temp_r28[i]+(temp_f30*(temp_r28[i+1]-temp_r28[i])); - - } - } - return -1; + Vec *temp_r31; + Vec *temp_r30; + s32 i; + Vec sp24; + Vec sp18; + s32 sp14 = -1; + float sp10 = 1000; + float *temp_r28 = lbl_1_data_108C[arg0]; + VECSubtract(arg2, arg1, &sp18); + temp_r31 = lbl_1_data_1014[arg0][0]; + temp_r30 = lbl_1_data_1014[arg0][1]; + for (i = 0; i < lbl_1_data_1074[arg0] - 1; i++, temp_r31++, temp_r30++) { + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + VECSubtract(&temp_r31[1], &temp_r31[0], &sp24); + temp_f31 = VECMag2Point(&sp24); + if (temp_f31 == 0.0f) { + continue; + } + temp_f29 + = ((sp18.x * sp24.x) - (temp_r31->x * sp24.x) + (sp18.y * sp24.y) - (temp_r31->y * sp24.y) + (sp18.z * sp24.z) - (temp_r31->z * sp24.z)) + / temp_f31; + VECSubtract(&temp_r30[1], &temp_r30[0], &sp24); + temp_f31 = VECMag2Point(&sp24); + if (temp_f31 == 0.0f) { + continue; + } + temp_f28 + = ((sp18.x * sp24.x) - (temp_r30->x * sp24.x) + (sp18.y * sp24.y) - (temp_r30->y * sp24.y) + (sp18.z * sp24.z) - (temp_r30->z * sp24.z)) + / temp_f31; + temp_f30 = 0.5f * (temp_f29 + temp_f28); + if (temp_f30 < 0.0f || temp_f30 >= 1.0f) { + continue; + } + else { + return temp_r28[i] + (temp_f30 * (temp_r28[i + 1] - temp_r28[i])); + } + } + return -1; } void fn_1_1F3C(s32 arg0, Vec *arg1, float arg2, float arg3, Vec *arg4) { - float *temp_r30 = lbl_1_data_108C[arg0]; - s32 i; - for(i=0; ix+(temp_f31*sp8.x); - sp20.y = temp_r29->y+(temp_f31*sp8.y); - sp20.z = temp_r29->z+(temp_f31*sp8.z); - VECSubtract(&temp_r28[1], &temp_r28[0], &sp8); - sp14.x = temp_r28->x+(temp_f31*sp8.x); - sp14.y = temp_r28->y+(temp_f31*sp8.y); - sp14.z = temp_r28->z+(temp_f31*sp8.z); - arg4->x = (arg1->x+sp20.x)+(arg3*(sp14.x-sp20.x)); - arg4->y = (arg1->y+sp20.y)+(arg3*(sp14.y-sp20.y)); - arg4->z = (arg1->z+sp20.z)+(arg3*(sp14.z-sp20.z)); - } + float *temp_r30 = lbl_1_data_108C[arg0]; + s32 i; + for (i = 0; i < lbl_1_data_1074[arg0] - 1; i++) { + if (arg2 < temp_r30[i + 1]) { + break; + } + } + if (i < lbl_1_data_1074[arg0] - 1) { + float temp_f31 = (arg2 - temp_r30[i]) / (temp_r30[i + 1] - temp_r30[i]); + Vec *temp_r29 = &lbl_1_data_1014[arg0][0][i]; + Vec *temp_r28 = &lbl_1_data_1014[arg0][1][i]; + Vec sp20; + Vec sp14; + Vec sp8; + VECSubtract(&temp_r29[1], &temp_r29[0], &sp8); + sp20.x = temp_r29->x + (temp_f31 * sp8.x); + sp20.y = temp_r29->y + (temp_f31 * sp8.y); + sp20.z = temp_r29->z + (temp_f31 * sp8.z); + VECSubtract(&temp_r28[1], &temp_r28[0], &sp8); + sp14.x = temp_r28->x + (temp_f31 * sp8.x); + sp14.y = temp_r28->y + (temp_f31 * sp8.y); + sp14.z = temp_r28->z + (temp_f31 * sp8.z); + arg4->x = (arg1->x + sp20.x) + (arg3 * (sp14.x - sp20.x)); + arg4->y = (arg1->y + sp20.y) + (arg3 * (sp14.y - sp20.y)); + arg4->z = (arg1->z + sp20.z) + (arg3 * (sp14.z - sp20.z)); + } } float fn_1_2184(s32 arg0, float arg1) { - float *temp_r30 = lbl_1_data_108C[arg0]; - s32 i; - for(i=0; i= lbl_1_data_1074[arg0]-1) { - return -1; - } else { - return temp_r30[i+1]-temp_r30[i]; - } + float *temp_r30 = lbl_1_data_108C[arg0]; + s32 i; + for (i = 0; i < lbl_1_data_1074[arg0] - 1; i++) { + if (arg1 < temp_r30[i + 1]) { + break; + } + } + if (i >= lbl_1_data_1074[arg0] - 1) { + return -1; + } + else { + return temp_r30[i + 1] - temp_r30[i]; + } } -s16 lbl_1_data_7738[10][3] = { - 1, 0, 0, - 2, 1, 2, - 2, 3, 4, - 1, 5, 0, - 1, 6, 0, - 1, 7, 0, - 1, 8, 0, - 1, 9, 0, - 1, 10, 0, - 1, 11, 0 -}; +s16 lbl_1_data_7738[10][3] = { 1, 0, 0, 2, 1, 2, 2, 3, 4, 1, 5, 0, 1, 6, 0, 1, 7, 0, 1, 8, 0, 1, 9, 0, 1, 10, 0, 1, 11, 0 }; s32 lbl_1_data_7774[8] = { - 0x005F0000, - 0x005F0001, - 0x005F0002, - 0x005F0003, - 0x005F0014, - 0x005F0050, - 0x005F0017, - 0x005F0018 + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x01), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x14), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x50), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), }; typedef struct work_5cb0 { - s16 unk0; - Vec unk4; - StructData748C unk10; + s16 unk0; + Vec unk4; + StructData748C unk10; } Work5CB0; - void fn_1_223C(omObjData *object) { - float temp_f29; - WorkD0C *temp_r31; - Work5CB0 *temp_r18; - Vec sp58; - s32 sp18; - omObjData **sp14; - temp_r31 = object->data; - if(temp_r31->unk0_field4) { - temp_r31->unk0_field4 = 0; - sp14 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); - temp_r18 = sp14[temp_r31->unk2]->data; - sp18 = temp_r18[temp_r31->unk44].unk0; - temp_r31->unk80 = lbl_1_data_7738[sp18][((lbl_1_data_7738[sp18][0]*frand8()) >> 8)+1]; - temp_r31->unk84 = temp_r18[temp_r31->unk44].unk4; - temp_r31->unk90 = fn_1_1C54(temp_r31->unk80, &temp_r31->unk84, &object->trans); - if(temp_r31->unk90 < 0.0f) { - temp_r31->unk90 = 105.0f; - } - temp_r31->unk90 += 20.0f; - } else { - if(temp_r31->unk0_field5) { - temp_r31->unk94 = temp_r31->unkA4 = 0.5f; - temp_r31->unk0_field5 = 0; - temp_r31->unk0_field6 = 1; - } else { - VECSubtract(&temp_r31->unk98, &object->trans, &sp58); - if(VECMag(&sp58) < 20.0f) { - temp_r31->unk90 += 20.0f; - temp_r31->unk0_field6 = 0; - } - } - } - if(object->trans.z < -500.0f && !temp_r31->unk0_field6 && frand8() == 0) { - temp_r31->unkA4 = (0.55f*((((s32)frand() & 0x1FF)-256.0f)/256.0f))+0.5f; - } - temp_r31->unk94 += 0.05f*(temp_r31->unkA4-temp_r31->unk94); - fn_1_1F3C(temp_r31->unk80, &temp_r31->unk84, temp_r31->unk90, temp_r31->unk94, &temp_r31->unk98); - if(temp_r31->unk98.z > temp_r31->unk40) { - temp_r31->unk98.z = temp_r31->unk40; - } - VECSubtract(&temp_r31->unk98, &object->trans, &sp58); - VECNormalize(&sp58, &sp58); - temp_f29 = 10.0+(((18.0+(6.0f*temp_r31->unkE))*fn_1_2184(temp_r31->unk80, temp_r31->unk90))/200.0); - if(temp_f29 > 72) { - temp_f29 = 72; - } - temp_r31->unk6 = sp58.x*temp_f29; - temp_r31->unk7 = -sp58.z*temp_f29; + float temp_f29; + WorkD0C *temp_r31; + Work5CB0 *temp_r18; + Vec sp58; + s32 sp18; + omObjData **sp14; + temp_r31 = object->data; + if (temp_r31->unk0_field4) { + temp_r31->unk0_field4 = 0; + sp14 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); + temp_r18 = sp14[temp_r31->unk2]->data; + sp18 = temp_r18[temp_r31->unk44].unk0; + temp_r31->unk80 = lbl_1_data_7738[sp18][((lbl_1_data_7738[sp18][0] * frand8()) >> 8) + 1]; + temp_r31->unk84 = temp_r18[temp_r31->unk44].unk4; + temp_r31->unk90 = fn_1_1C54(temp_r31->unk80, &temp_r31->unk84, &object->trans); + if (temp_r31->unk90 < 0.0f) { + temp_r31->unk90 = 105.0f; + } + temp_r31->unk90 += 20.0f; + } + else { + if (temp_r31->unk0_field5) { + temp_r31->unk94 = temp_r31->unkA4 = 0.5f; + temp_r31->unk0_field5 = 0; + temp_r31->unk0_field6 = 1; + } + else { + VECSubtract(&temp_r31->unk98, &object->trans, &sp58); + if (VECMag(&sp58) < 20.0f) { + temp_r31->unk90 += 20.0f; + temp_r31->unk0_field6 = 0; + } + } + } + if (object->trans.z < -500.0f && !temp_r31->unk0_field6 && frand8() == 0) { + temp_r31->unkA4 = (0.55f * ((((s32)frand() & 0x1FF) - 256.0f) / 256.0f)) + 0.5f; + } + temp_r31->unk94 += 0.05f * (temp_r31->unkA4 - temp_r31->unk94); + fn_1_1F3C(temp_r31->unk80, &temp_r31->unk84, temp_r31->unk90, temp_r31->unk94, &temp_r31->unk98); + if (temp_r31->unk98.z > temp_r31->unk40) { + temp_r31->unk98.z = temp_r31->unk40; + } + VECSubtract(&temp_r31->unk98, &object->trans, &sp58); + VECNormalize(&sp58, &sp58); + temp_f29 = 10.0 + (((18.0 + (6.0f * temp_r31->unkE)) * fn_1_2184(temp_r31->unk80, temp_r31->unk90)) / 200.0); + if (temp_f29 > 72) { + temp_f29 = 72; + } + temp_r31->unk6 = sp58.x * temp_f29; + temp_r31->unk7 = -sp58.z * temp_f29; } void fn_1_2C84(omObjData *object); @@ -865,394 +750,405 @@ s32 fn_1_62E0(float arg0); void fn_1_2BB4(omObjData *object) { - WorkD0C *work = object->data; - Hu3DModelAttrReset(object->model[1], 1); - Hu3DModelPosSet(object->model[1], CenterM[work->unk2].x, CenterM[work->unk2].y, CenterM[work->unk2].z); - if(fn_1_374() == 3) { - Hu3DModelAttrSet(object->model[1], 1); - object->func = fn_1_2C84; - } + WorkD0C *work = object->data; + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[1], CenterM[work->unk2].x, CenterM[work->unk2].y, CenterM[work->unk2].z); + if (fn_1_374() == 3) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + object->func = fn_1_2C84; + } } typedef struct work_4aa8 { - u8 unk0 : 1; - s16 unk2; - s16 unk4; - float unk8[2]; - float unk10; - float unk14[4]; - s16 unk24; - s16 unk26; - Vec unk28; - Vec unk34; - Vec unk40; + u8 unk0 : 1; + s16 unk2; + s16 unk4; + float unk8[2]; + float unk10; + float unk14[4]; + s16 unk24; + s16 unk26; + Vec unk28; + Vec unk34; + Vec unk40; } Work4AA8; - void fn_1_3C1C(omObjData *object); s32 fn_1_6328(omObjData *object); s32 fn_1_67B4(Vec *arg0, s32 arg1, s32 arg2, Vec *arg3, Vec *arg4); void fn_1_2C84(omObjData *object) { - WorkD0C *temp_r31; - s32 temp_r29; - s32 temp_r28; - omObjData *temp_r27; - u32 temp_r26; - omObjData **temp_r25; - Work4AA8 *temp_r24; - ParticleData *temp_r23; - float temp_f31; - float temp_f30; - float temp_f28; - float temp_f26; - float temp_f25; - float temp_f23; - - Vec spC; - temp_r31 = object->data; - temp_r28 = temp_r31->unk2C; - temp_f25 = temp_r31->unk34; - temp_r26 = temp_r31->unk30; - if(fn_1_374() >= 6 && !temp_r31->unk0_field2) { - temp_r31->unk0_field7 = 1; - temp_r31->unk12 = 2; - temp_r31->unk3E = 120; - object->func = fn_1_3C1C; - return; - } - if(fn_1_374() < 5) { - return; - } - switch(temp_r31->unk12){ - case 0: - if(GWPlayerCfg[temp_r31->unk2].iscom == 0) { - temp_r31->unk6 = HuPadStkX[temp_r31->unk4]; - temp_r31->unk7 = HuPadStkY[temp_r31->unk4]; - temp_r31->unk8 = HuPadBtn[temp_r31->unk4]; - temp_r31->unkA = HuPadBtnDown[temp_r31->unk4]; - } else { - temp_r31->unk8 = temp_r31->unkA = 0; - temp_r31->unk6 = temp_r31->unk7 = 0; - fn_1_223C(object); - } - temp_f31 = temp_r31->unk6; - temp_f30 = -(float)temp_r31->unk7; - temp_f26 = VECMagPoint(temp_f31, temp_f30, 0); - if(temp_f26 > 0.0f) { - temp_f31 /= temp_f26; - temp_f30 /= temp_f26; - if(temp_f26 > 72) { - temp_f26 = 72; - } - temp_f23 = (10.0f*temp_f26)/72.0f; - temp_r31->unk20.x = temp_f31*temp_f23; - temp_r31->unk20.z = temp_f30*temp_f23; - temp_r31->unk14.y = temp_f23; - object->rot.y = fn_1_1024(object->rot.y, atan2d(temp_r31->unk20.x, temp_r31->unk20.z), 0.2f); - if(temp_r31->unk14.y < 7.5f) { - temp_r28 = 1; - temp_f25 = temp_r31->unk14.y/7.5f; - } else { - temp_r28 = 2; - temp_f25 = temp_r31->unk14.y/10.0f; - } - } else { - temp_r31->unk20.x = temp_r31->unk20.z = 0; - temp_r28 = 0; - temp_f25 = 1; - } - VECAdd(&object->trans, &temp_r31->unk20, &object->trans); - fn_1_1128(&object->trans); - fn_1_16B0(&object->trans); - if(object->trans.z > temp_r31->unk40) { - object->trans.z = temp_r31->unk40; - } else { - if(object->trans.z < -7300) { - temp_r31->unk0_field0 = 1; - temp_r31->unk0_field7 = 1; - temp_r31->unk12 = 0; - if(lbl_1_bss_130 == 0) { - temp_r31->unk0_field8 = 1; - } - lbl_1_bss_132[lbl_1_bss_13A++] = temp_r31->unk2; - object->func = fn_1_3C1C; - return; - } - } - if(fn_1_67B4(&object->trans, temp_r31->unk2, temp_r31->unk44, &temp_r31->unk5C, &temp_r31->unk74) && !temp_r31->unk0_field6) { - temp_r31->unk0_field2 = 1; - temp_r31->unk0_field1 = 1; - temp_r31->unk0_field5 = 1; - temp_r31->unk0_field3 = 0; - temp_r31->unk50.x = object->trans.x; - temp_r31->unk50.y = object->trans.y; - temp_r31->unk50.z = object->trans.z; - temp_r31->unk68.y = -2000; - temp_r31->unk12 = 2; - temp_r31->unk3E = 12; - temp_r23 = Hu3DData[object->model[2]].unk_120; - temp_r23->unk_00 = 0; - VECSubtract(&temp_r31->unk5C, &object->trans, &temp_r23->unk_04); - Hu3DModelAttrReset(object->model[2], 1); - Hu3DModelPosSet(object->model[2], object->trans.x, object->trans.y, object->trans.z); - temp_r25 = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); - temp_r25[temp_r31->unk2]->work[3] = 1; - } else { - spC.x = CenterM[temp_r31->unk2].x; - spC.z = CenterM[temp_r31->unk2].z; - spC.x += 0.1f*(object->trans.x-spC.x); - spC.z += 0.1f*(object->trans.z-spC.z); - temp_r29 = fn_1_62E0(spC.z-350.0f); - if(temp_r29 != temp_r31->unk46 && temp_r29 > 1 && temp_r29 < 6) { - spC.z = lbl_1_data_75CC[temp_r29-1]+350.0f; - } else { - temp_r29 = fn_1_62E0(spC.z+350.0f); - if(temp_r29 != temp_r31->unk46 && temp_r31->unk46 > 1 && temp_r31->unk46 < 6) { - spC.z = lbl_1_data_75CC[temp_r31->unk46-1]-350.0f; - } - } - CenterM[temp_r31->unk2].x = spC.x; - CenterM[temp_r31->unk2].z = spC.z; - temp_r29 = fn_1_62E0(object->trans.z); - if(temp_r29 != temp_r31->unk46) { - temp_r31->unk46 = temp_r29; - temp_r31->unk44 = fn_1_6328(object); - temp_r31->unk0_field4 = 01; - if(temp_r29 > 1 && temp_r29 < 6) { - temp_r31->unk12++; - temp_r31->unk3E = 30; - temp_r31->unk48 = CenterM[temp_r31->unk2].z; - temp_r31->unk4C = object->trans.z-350.0f; - temp_r31->unk40 = lbl_1_data_75CC[temp_r31->unk46-1]; - } - } - } - break; - - case 1: - if(--temp_r31->unk3E == 0) { - temp_r31->unk12 = 0; - } - CenterM[temp_r31->unk2].z = temp_r31->unk48+((temp_r31->unk4C-temp_r31->unk48)*cosd((temp_r31->unk3E*90.0f)/30.0f)); - temp_r28 = 0; - temp_f25 = 1; - break; - - case 2: - temp_r25 = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); - temp_r27 = temp_r25[temp_r31->unk2]; - temp_r24 = temp_r27->data; - switch(temp_r24->unk4) { - case 1: - temp_f28 = 1.0f-(temp_r24->unk24/90.0f); - object->trans.x = temp_r31->unk50.x+(temp_f28*(temp_r31->unk5C.x-temp_r31->unk50.x)); - object->trans.y = 100+(-2000.0f*(temp_f28-0.1f))*(temp_f28-0.1f); - object->trans.z = temp_r31->unk50.z+(temp_f28*(temp_r31->unk5C.z-temp_r31->unk50.z)); - temp_r28 = 3; - temp_r26 = 0; - break; - - case 2: - case 3: - if(temp_r24->unk0) { - object->trans.x = temp_r27->trans.x; - object->trans.y = temp_r27->trans.y-150; - object->trans.z = temp_r27->trans.z; - temp_r28 = 4; - temp_r26 = 0; - } else { - if(temp_r31->unk3E) { - temp_r31->unk3E--; - } - temp_f28 = sind((temp_r31->unk3E/30.0f)*90.0f); - object->trans.x = temp_r31->unk74.x-(temp_f28*(temp_r31->unk74.x-temp_r31->unk68.x)); - object->trans.y = temp_r31->unk74.y-(temp_f28*(temp_r31->unk74.y-temp_r31->unk68.y)); - object->trans.z = temp_r31->unk74.z-(temp_f28*(temp_r31->unk74.z-temp_r31->unk68.z)); - temp_r28 = 0; - temp_r26 = 0x40000001; - } - break; - } - if(!temp_r31->unk0_field1) { - temp_r31->unk0_field2 = 0; - temp_r31->unk12 = 0; - temp_r31->unk20.y = 0; - } - break; - } - if((temp_r28 >= 0 && temp_r28 != temp_r31->unk2C) || temp_r26 != temp_r31->unk30) { - temp_r31->unk2C = temp_r28; - temp_r31->unk30 = temp_r26; - CharModelMotionShiftSet(temp_r31->unkC, object->motion[temp_r31->unk2C], 0, 8, temp_r26); - } - CharModelMotionSpeedSet(temp_r31->unkC, temp_f25); - temp_r31->unk34 = temp_f25; - if(temp_r31->unk2 == 0) { - Hu3DShadowData.unk_20.x = object->trans.x; - Hu3DShadowData.unk_20.y = object->trans.y; - Hu3DShadowData.unk_20.z = object->trans.z; - Hu3DShadowData.unk_14.x = 700+Hu3DShadowData.unk_20.x; - Hu3DShadowData.unk_14.y = 2500+Hu3DShadowData.unk_20.y; - Hu3DShadowData.unk_14.z = Hu3DShadowData.unk_20.z-700; - } else { - lbl_1_bss_D4[temp_r31->unk2-1].x = object->trans.x; - lbl_1_bss_D4[temp_r31->unk2-1].y = object->trans.y; - lbl_1_bss_D4[temp_r31->unk2-1].z = object->trans.z; - lbl_1_bss_F8[temp_r31->unk2-1].x = 700+lbl_1_bss_D4[temp_r31->unk2-1].x; - lbl_1_bss_F8[temp_r31->unk2-1].y = 2500+lbl_1_bss_D4[temp_r31->unk2-1].y; - lbl_1_bss_F8[temp_r31->unk2-1].z = lbl_1_bss_D4[temp_r31->unk2-1].z-700; - } + WorkD0C *temp_r31; + s32 temp_r29; + s32 temp_r28; + omObjData *temp_r27; + u32 temp_r26; + omObjData **temp_r25; + Work4AA8 *temp_r24; + ParticleData *temp_r23; + float temp_f31; + float temp_f30; + float temp_f28; + float temp_f26; + float temp_f25; + float temp_f23; + + Vec spC; + temp_r31 = object->data; + temp_r28 = temp_r31->unk2C; + temp_f25 = temp_r31->unk34; + temp_r26 = temp_r31->unk30; + if (fn_1_374() >= 6 && !temp_r31->unk0_field2) { + temp_r31->unk0_field7 = 1; + temp_r31->unk12 = 2; + temp_r31->unk3E = 2 * REFRESH_RATE; + object->func = fn_1_3C1C; + return; + } + if (fn_1_374() < 5) { + return; + } + switch (temp_r31->unk12) { + case 0: + if (GWPlayerCfg[temp_r31->unk2].iscom == 0) { + temp_r31->unk6 = HuPadStkX[temp_r31->unk4]; + temp_r31->unk7 = HuPadStkY[temp_r31->unk4]; + temp_r31->unk8 = HuPadBtn[temp_r31->unk4]; + temp_r31->unkA = HuPadBtnDown[temp_r31->unk4]; + } + else { + temp_r31->unk8 = temp_r31->unkA = 0; + temp_r31->unk6 = temp_r31->unk7 = 0; + fn_1_223C(object); + } + temp_f31 = temp_r31->unk6; + temp_f30 = -(float)temp_r31->unk7; + temp_f26 = VECMagPoint(temp_f31, temp_f30, 0); + if (temp_f26 > 0.0f) { + temp_f31 /= temp_f26; + temp_f30 /= temp_f26; + if (temp_f26 > 72) { + temp_f26 = 72; + } + temp_f23 = ((600.0f / REFRESH_RATE) * temp_f26) / 72.0f; + temp_r31->unk20.x = temp_f31 * temp_f23; + temp_r31->unk20.z = temp_f30 * temp_f23; + temp_r31->unk14.y = temp_f23; + object->rot.y = fn_1_1024(object->rot.y, atan2d(temp_r31->unk20.x, temp_r31->unk20.z), 0.2f); + if (temp_r31->unk14.y < (450.0f / REFRESH_RATE)) { + temp_r28 = 1; + temp_f25 = temp_r31->unk14.y / (450.0f / REFRESH_RATE); + } + else { + temp_r28 = 2; + temp_f25 = temp_r31->unk14.y / (600.0f / REFRESH_RATE); + } + } + else { + temp_r31->unk20.x = temp_r31->unk20.z = 0; + temp_r28 = 0; + temp_f25 = 1; + } + VECAdd(&object->trans, &temp_r31->unk20, &object->trans); + fn_1_1128(&object->trans); + fn_1_16B0(&object->trans); + if (object->trans.z > temp_r31->unk40) { + object->trans.z = temp_r31->unk40; + } + else { + if (object->trans.z < -7300) { + temp_r31->unk0_field0 = 1; + temp_r31->unk0_field7 = 1; + temp_r31->unk12 = 0; + if (lbl_1_bss_130 == 0) { + temp_r31->unk0_field8 = 1; + } + lbl_1_bss_132[lbl_1_bss_13A++] = temp_r31->unk2; + object->func = fn_1_3C1C; + return; + } + } + if (fn_1_67B4(&object->trans, temp_r31->unk2, temp_r31->unk44, &temp_r31->unk5C, &temp_r31->unk74) && !temp_r31->unk0_field6) { + temp_r31->unk0_field2 = 1; + temp_r31->unk0_field1 = 1; + temp_r31->unk0_field5 = 1; + temp_r31->unk0_field3 = 0; + temp_r31->unk50.x = object->trans.x; + temp_r31->unk50.y = object->trans.y; + temp_r31->unk50.z = object->trans.z; + temp_r31->unk68.y = -2000; + temp_r31->unk12 = 2; + temp_r31->unk3E = 0.2f * REFRESH_RATE; + temp_r23 = Hu3DData[object->model[2]].unk_120; + temp_r23->unk_00 = 0; + VECSubtract(&temp_r31->unk5C, &object->trans, &temp_r23->unk_04); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[2], object->trans.x, object->trans.y, object->trans.z); + temp_r25 = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); + temp_r25[temp_r31->unk2]->work[3] = 1; + } + else { + spC.x = CenterM[temp_r31->unk2].x; + spC.z = CenterM[temp_r31->unk2].z; + spC.x += 0.1f * (object->trans.x - spC.x); + spC.z += 0.1f * (object->trans.z - spC.z); + temp_r29 = fn_1_62E0(spC.z - 350.0f); + if (temp_r29 != temp_r31->unk46 && temp_r29 > 1 && temp_r29 < 6) { + spC.z = lbl_1_data_75CC[temp_r29 - 1] + 350.0f; + } + else { + temp_r29 = fn_1_62E0(spC.z + 350.0f); + if (temp_r29 != temp_r31->unk46 && temp_r31->unk46 > 1 && temp_r31->unk46 < 6) { + spC.z = lbl_1_data_75CC[temp_r31->unk46 - 1] - 350.0f; + } + } + CenterM[temp_r31->unk2].x = spC.x; + CenterM[temp_r31->unk2].z = spC.z; + temp_r29 = fn_1_62E0(object->trans.z); + if (temp_r29 != temp_r31->unk46) { + temp_r31->unk46 = temp_r29; + temp_r31->unk44 = fn_1_6328(object); + temp_r31->unk0_field4 = 01; + if (temp_r29 > 1 && temp_r29 < 6) { + temp_r31->unk12++; + temp_r31->unk3E = 0.5f * REFRESH_RATE; + temp_r31->unk48 = CenterM[temp_r31->unk2].z; + temp_r31->unk4C = object->trans.z - 350.0f; + temp_r31->unk40 = lbl_1_data_75CC[temp_r31->unk46 - 1]; + } + } + } + break; + + case 1: + if (--temp_r31->unk3E == 0) { + temp_r31->unk12 = 0; + } + CenterM[temp_r31->unk2].z = temp_r31->unk48 + ((temp_r31->unk4C - temp_r31->unk48) * cosd((temp_r31->unk3E * 90.0f) / (0.5f * REFRESH_RATE))); + temp_r28 = 0; + temp_f25 = 1; + break; + + case 2: + temp_r25 = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); + temp_r27 = temp_r25[temp_r31->unk2]; + temp_r24 = temp_r27->data; + switch (temp_r24->unk4) { + case 1: + temp_f28 = 1.0f - (temp_r24->unk24 / (1.5f * REFRESH_RATE)); + object->trans.x = temp_r31->unk50.x + (temp_f28 * (temp_r31->unk5C.x - temp_r31->unk50.x)); + object->trans.y = 100 + (-2000.0f * (temp_f28 - 0.1f)) * (temp_f28 - 0.1f); + object->trans.z = temp_r31->unk50.z + (temp_f28 * (temp_r31->unk5C.z - temp_r31->unk50.z)); + temp_r28 = 3; + temp_r26 = HU3D_MOTATTR_NONE; + break; + + case 2: + case 3: + if (temp_r24->unk0) { + object->trans.x = temp_r27->trans.x; + object->trans.y = temp_r27->trans.y - 150; + object->trans.z = temp_r27->trans.z; + temp_r28 = 4; + temp_r26 = HU3D_MOTATTR_NONE; + } + else { + if (temp_r31->unk3E) { + temp_r31->unk3E--; + } + temp_f28 = sind((temp_r31->unk3E / (0.5f * REFRESH_RATE)) * 90.0f); + object->trans.x = temp_r31->unk74.x - (temp_f28 * (temp_r31->unk74.x - temp_r31->unk68.x)); + object->trans.y = temp_r31->unk74.y - (temp_f28 * (temp_r31->unk74.y - temp_r31->unk68.y)); + object->trans.z = temp_r31->unk74.z - (temp_f28 * (temp_r31->unk74.z - temp_r31->unk68.z)); + temp_r28 = 0; + temp_r26 = HU3D_MOTATTR_LOOP; + } + break; + } + if (!temp_r31->unk0_field1) { + temp_r31->unk0_field2 = 0; + temp_r31->unk12 = 0; + temp_r31->unk20.y = 0; + } + break; + } + if ((temp_r28 >= 0 && temp_r28 != temp_r31->unk2C) || temp_r26 != temp_r31->unk30) { + temp_r31->unk2C = temp_r28; + temp_r31->unk30 = temp_r26; + CharModelMotionShiftSet(temp_r31->unkC, object->motion[temp_r31->unk2C], 0, 8, temp_r26); + } + CharModelMotionSpeedSet(temp_r31->unkC, temp_f25); + temp_r31->unk34 = temp_f25; + if (temp_r31->unk2 == 0) { + Hu3DShadowData.unk_20.x = object->trans.x; + Hu3DShadowData.unk_20.y = object->trans.y; + Hu3DShadowData.unk_20.z = object->trans.z; + Hu3DShadowData.unk_14.x = 700 + Hu3DShadowData.unk_20.x; + Hu3DShadowData.unk_14.y = 2500 + Hu3DShadowData.unk_20.y; + Hu3DShadowData.unk_14.z = Hu3DShadowData.unk_20.z - 700; + } + else { + lbl_1_bss_D4[temp_r31->unk2 - 1].x = object->trans.x; + lbl_1_bss_D4[temp_r31->unk2 - 1].y = object->trans.y; + lbl_1_bss_D4[temp_r31->unk2 - 1].z = object->trans.z; + lbl_1_bss_F8[temp_r31->unk2 - 1].x = 700 + lbl_1_bss_D4[temp_r31->unk2 - 1].x; + lbl_1_bss_F8[temp_r31->unk2 - 1].y = 2500 + lbl_1_bss_D4[temp_r31->unk2 - 1].y; + lbl_1_bss_F8[temp_r31->unk2 - 1].z = lbl_1_bss_D4[temp_r31->unk2 - 1].z - 700; + } } void fn_1_3C1C(omObjData *object) { - WorkD0C *temp_r31; - s32 temp_r29; - u32 temp_r28; - float temp_f29; - temp_r31 = object->data; - temp_r29 = temp_r31->unk2C; - temp_f29 = temp_r31->unk34; - temp_r28 = temp_r31->unk30; - switch(temp_r31->unk12) { - case 0: - if(object->trans.z > -7600.0f) { - object->trans.z -= 3.75f; - } else { - temp_r31->unk12++; - } - object->rot.y = fn_1_1024(object->rot.y, 180.0f, 0.2f); - temp_r29 = 1; - temp_f29 = 1.0f; - temp_r28 = 0x40000001; - break; - - case 1: - if(fn_1_374() >= 9) { - temp_r29 = (temp_r31->unk0_field8) ? 5 : 6; - temp_f29 = 1.0f; - temp_r28 = 0; - } else { - object->rot.y = fn_1_1024(object->rot.y, 0.0f, 0.2f); - temp_r29 = 0; - temp_f29 = 1.0f; - temp_r28 = 0x40000001; - } - break; - - case 2: - if(--temp_r31->unk3E == 0 || fn_1_374() == 7) { - temp_r31->unk12 = 1; - } - temp_r29 = 0; - temp_f29 = 1.0f; - temp_r28 = 0x40000001; - break; - } - if(temp_r31->unk0_field0) { - CZoomM[temp_r31->unk2] += (lbl_1_data_741C[2].zoom-CZoomM[temp_r31->unk2])*0.1f; - CenterM[temp_r31->unk2].x += (object->trans.x-CenterM[temp_r31->unk2].x)*0.1f; - CenterM[temp_r31->unk2].y += ((object->trans.y+100)-CenterM[temp_r31->unk2].y)*0.1f; - CenterM[temp_r31->unk2].z += (object->trans.z-CenterM[temp_r31->unk2].z)*0.1f; - CRotM[temp_r31->unk2].x += (lbl_1_data_741C[2].rot.x-CRotM[temp_r31->unk2].x)*0.1f; - CRotM[temp_r31->unk2].y += (lbl_1_data_741C[2].rot.y-CRotM[temp_r31->unk2].y)*0.1f; - CRotM[temp_r31->unk2].z += (lbl_1_data_741C[2].rot.z-CRotM[temp_r31->unk2].z)*0.1f; - Hu3DModelAttrReset(object->model[1], 1); - Hu3DModelPosSet(object->model[1], object->trans.x, object->trans.y+200, object->trans.z); - } else { - CZoomM[temp_r31->unk2] += (lbl_1_data_741C[3].zoom-CZoomM[temp_r31->unk2])*0.1f; - CenterM[temp_r31->unk2].x += (object->trans.x-CenterM[temp_r31->unk2].x)*0.1f; - CenterM[temp_r31->unk2].y += ((object->trans.y+100)-CenterM[temp_r31->unk2].y)*0.1f; - CenterM[temp_r31->unk2].z += (object->trans.z-CenterM[temp_r31->unk2].z)*0.1f; - CRotM[temp_r31->unk2].x += (lbl_1_data_741C[3].rot.x-CRotM[temp_r31->unk2].x)*0.1f; - CRotM[temp_r31->unk2].y += (lbl_1_data_741C[3].rot.y-CRotM[temp_r31->unk2].y)*0.1f; - CRotM[temp_r31->unk2].z += (lbl_1_data_741C[3].rot.z-CRotM[temp_r31->unk2].z)*0.1f; - } - if((temp_r29 >= 0 && temp_r29 != temp_r31->unk2C) || temp_r28 != temp_r31->unk30) { - temp_r31->unk2C = temp_r29; - temp_r31->unk30 = temp_r28; - CharModelMotionShiftSet(temp_r31->unkC, object->motion[temp_r31->unk2C], 0, 8, temp_r28); - } - CharModelMotionSpeedSet(temp_r31->unkC, temp_f29); - temp_r31->unk34 = temp_f29; + WorkD0C *temp_r31; + s32 temp_r29; + u32 temp_r28; + float temp_f29; + temp_r31 = object->data; + temp_r29 = temp_r31->unk2C; + temp_f29 = temp_r31->unk34; + temp_r28 = temp_r31->unk30; + switch (temp_r31->unk12) { + case 0: + if (object->trans.z > -7600.0f) { + object->trans.z -= 225.0f / REFRESH_RATE; + } + else { + temp_r31->unk12++; + } + object->rot.y = fn_1_1024(object->rot.y, 180.0f, 0.2f); + temp_r29 = 1; + temp_f29 = 1.0f; + temp_r28 = HU3D_MOTATTR_LOOP; + break; + + case 1: + if (fn_1_374() >= 9) { + temp_r29 = (temp_r31->unk0_field8) ? 5 : 6; + temp_f29 = 1.0f; + temp_r28 = HU3D_MOTATTR_NONE; + } + else { + object->rot.y = fn_1_1024(object->rot.y, 0.0f, 0.2f); + temp_r29 = 0; + temp_f29 = 1.0f; + temp_r28 = HU3D_MOTATTR_LOOP; + } + break; + + case 2: + if (--temp_r31->unk3E == 0 || fn_1_374() == 7) { + temp_r31->unk12 = 1; + } + temp_r29 = 0; + temp_f29 = 1.0f; + temp_r28 = HU3D_MOTATTR_LOOP; + break; + } + if (temp_r31->unk0_field0) { + CZoomM[temp_r31->unk2] += (lbl_1_data_741C[2].zoom - CZoomM[temp_r31->unk2]) * 0.1f; + CenterM[temp_r31->unk2].x += (object->trans.x - CenterM[temp_r31->unk2].x) * 0.1f; + CenterM[temp_r31->unk2].y += ((object->trans.y + 100) - CenterM[temp_r31->unk2].y) * 0.1f; + CenterM[temp_r31->unk2].z += (object->trans.z - CenterM[temp_r31->unk2].z) * 0.1f; + CRotM[temp_r31->unk2].x += (lbl_1_data_741C[2].rot.x - CRotM[temp_r31->unk2].x) * 0.1f; + CRotM[temp_r31->unk2].y += (lbl_1_data_741C[2].rot.y - CRotM[temp_r31->unk2].y) * 0.1f; + CRotM[temp_r31->unk2].z += (lbl_1_data_741C[2].rot.z - CRotM[temp_r31->unk2].z) * 0.1f; + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[1], object->trans.x, object->trans.y + 200, object->trans.z); + } + else { + CZoomM[temp_r31->unk2] += (lbl_1_data_741C[3].zoom - CZoomM[temp_r31->unk2]) * 0.1f; + CenterM[temp_r31->unk2].x += (object->trans.x - CenterM[temp_r31->unk2].x) * 0.1f; + CenterM[temp_r31->unk2].y += ((object->trans.y + 100) - CenterM[temp_r31->unk2].y) * 0.1f; + CenterM[temp_r31->unk2].z += (object->trans.z - CenterM[temp_r31->unk2].z) * 0.1f; + CRotM[temp_r31->unk2].x += (lbl_1_data_741C[3].rot.x - CRotM[temp_r31->unk2].x) * 0.1f; + CRotM[temp_r31->unk2].y += (lbl_1_data_741C[3].rot.y - CRotM[temp_r31->unk2].y) * 0.1f; + CRotM[temp_r31->unk2].z += (lbl_1_data_741C[3].rot.z - CRotM[temp_r31->unk2].z) * 0.1f; + } + if ((temp_r29 >= 0 && temp_r29 != temp_r31->unk2C) || temp_r28 != temp_r31->unk30) { + temp_r31->unk2C = temp_r29; + temp_r31->unk30 = temp_r28; + CharModelMotionShiftSet(temp_r31->unkC, object->motion[temp_r31->unk2C], 0, 8, temp_r28); + } + CharModelMotionSpeedSet(temp_r31->unkC, temp_f29); + temp_r31->unk34 = temp_f29; } void fn_1_4528(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - HsfanimStruct01 *temp_r31; - s32 temp_r29; - s32 temp_r28; - if(particle->unk_00 == 0) { - particle->unk_00 = 1; - temp_r31 = particle->unk_48; - temp_f29 = atan2d(particle->unk_04.x, particle->unk_04.z); - for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { - temp_r31->unk2C = ((20.0f*frand8())+50.0f)/256.0f; - temp_f31 = (frand8()*360.0f)/256.0f; - temp_r31->unk34.x = 100.0f*(0.2f*sind(temp_f31)); - temp_r31->unk34.y = 0; - temp_r31->unk34.z = 100.0f*(0.2f*cosd(temp_f31)); - temp_f30 = ((frand8()*2.5f)/256.0f)+(5.0f/3.0f); - temp_f31 = temp_f29+(30.0f*(((s32)frand() & 0x1FF)-256.0f)/256.0f); - temp_r31->unk08.x = temp_f30*sind(temp_f31); - temp_r31->unk08.z = temp_f30*cosd(temp_f31); - temp_r31->unk08.y = (frand8()*(50.0f/3.0f))/256.0f; - temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 255; - } - } - temp_r28 = 0; - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(temp_r31->unk34.y < -2000.0f) { - temp_r28++; - } else { - temp_r31->unk08.y += -0.50000006f; - temp_r31->unk34.x += temp_r31->unk08.x; - temp_r31->unk34.y += temp_r31->unk08.y; - temp_r31->unk34.z += temp_r31->unk08.z; - } - } - if(temp_r28 == particle->unk_30) { - model->attr |= 0x1; - } - DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + float temp_f31; + float temp_f30; + float temp_f29; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + if (particle->unk_00 == 0) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + temp_f29 = atan2d(particle->unk_04.x, particle->unk_04.z); + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) { + temp_r31->unk2C = ((20.0f * frand8()) + 50.0f) / 256.0f; + temp_f31 = (frand8() * 360.0f) / 256.0f; + temp_r31->unk34.x = 100.0f * (0.2f * sind(temp_f31)); + temp_r31->unk34.y = 0; + temp_r31->unk34.z = 100.0f * (0.2f * cosd(temp_f31)); + temp_f30 = ((frand8() * (150.0f / REFRESH_RATE)) / 256.0f) + (100.0f / REFRESH_RATE); + temp_f31 = temp_f29 + (30.0f * (((s32)frand() & 0x1FF) - 256.0f) / 256.0f); + temp_r31->unk08.x = temp_f30 * sind(temp_f31); + temp_r31->unk08.z = temp_f30 * cosd(temp_f31); + temp_r31->unk08.y = (frand8() * (1000.0f / REFRESH_RATE)) / 256.0f; + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 255; + } + } + temp_r28 = 0; + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (temp_r31->unk34.y < -2000.0f) { + temp_r28++; + } + else { + temp_r31->unk08.y += VERSION_NTSC ? -0.50000006f : -0.6f; // -3.0f / REFRESH_RATE + temp_r31->unk34.x += temp_r31->unk08.x; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z; + } + } + if (temp_r28 == particle->unk_30) { + model->attr |= 0x1; + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_4978(omObjData *object) { - WorkD0C *work = object->data; - if(object->data != NULL) { - HuMemDirectFree(object->data); - object->data = NULL; - } + WorkD0C *work = object->data; + if (object->data != NULL) { + HuMemDirectFree(object->data); + object->data = NULL; + } } void fn_1_4AA8(omObjData *object); void fn_1_49C8(Process *objman) { - s32 i; - lbl_1_bss_140 = 0; - omMakeGroupEx(objman, 2, 4); - for(i=0; i<4; i++) { - omAddObjEx(objman, 6, 4, 50, 2, fn_1_4AA8); - } + s32 i; + lbl_1_bss_140 = 0; + omMakeGroupEx(objman, 2, 4); + for (i = 0; i < 4; i++) { + omAddObjEx(objman, 6, 4, 50, 2, fn_1_4AA8); + } } void fn_1_5B9C(omObjData *object); void fn_1_4A4C(void) { - omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); - s32 i; - for(i=0; i<4; i++) { - fn_1_5B9C(objList[i]); - } + omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); + s32 i; + for (i = 0; i < 4; i++) { + fn_1_5B9C(objList[i]); + } } s32 lbl_1_data_7794[1] = { 0x460014 }; @@ -1262,35 +1158,35 @@ void fn_1_4F54(omObjData *object); void fn_1_4AA8(omObjData *object) { - Work4AA8 *work; - u32 i; - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work4AA8), MEMORY_DEFAULT_NUM); - object->data = work; - memset(work, 0, sizeof(Work4AA8)); - work->unk2 = lbl_1_bss_140; - object->model[0] = Hu3DModelCreateFile(0x460013); - Hu3DModelCameraSet(object->model[0], lbl_1_data_75E0[lbl_1_bss_140]); - Hu3DModelAttrSet(object->model[0], 1); - for(i=0; i<1; i++) { - object->motion[i] = Hu3DJointMotionFile(object->model[0], lbl_1_data_7794[i]); - - } - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); - object->trans.y = 500; - object->scale.x = object->scale.y = object->scale.z = 0.25f; - if(work->unk2 == 0) { - object->trans.x = -1800; - object->trans.y = 50; - object->trans.z = -8500; - object->rot.y = -90; - object->func = fn_1_4CC0; - Hu3DMotionSpeedSet(object->model[0], 2.0f); - work->unk24 = 60; - } else { - object->func = fn_1_4F54; - } - lbl_1_bss_140++; + Work4AA8 *work; + u32 i; + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work4AA8), MEMORY_DEFAULT_NUM); + object->data = work; + memset(work, 0, sizeof(Work4AA8)); + work->unk2 = lbl_1_bss_140; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M439, 0x13)); + Hu3DModelCameraSet(object->model[0], lbl_1_data_75E0[lbl_1_bss_140]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + for (i = 0; i < 1; i++) { + object->motion[i] = Hu3DJointMotionFile(object->model[0], lbl_1_data_7794[i]); + } + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->trans.y = 500.0f; + object->scale.x = object->scale.y = object->scale.z = 0.25f; + if (work->unk2 == 0) { + object->trans.x = -1800; + object->trans.y = 50; + object->trans.z = -8500; + object->rot.y = -90; + object->func = fn_1_4CC0; + Hu3DMotionSpeedSet(object->model[0], 2.0f); + work->unk24 = REFRESH_RATE; + } + else { + object->func = fn_1_4F54; + } + lbl_1_bss_140++; } s32 lbl_1_data_7798 = 2; @@ -1298,498 +1194,443 @@ s32 lbl_1_data_779C = -1; void fn_1_4CC0(omObjData *object) { - Work4AA8 *work = object->data; - float pan; - Vec pos2D; - if(42.0f == work->unk24) { - HuAudFXPlay(1795); - } - if(work->unk24 == 0) { - object->trans.x -= 25.0f; - } else { - if(--work->unk24 == 0) { - lbl_1_data_779C = HuAudFXPlay(1796); - lbl_1_data_7798--; - } - } - if(lbl_1_data_779C >= 0) { - if(HuAudFXStatusGet(lbl_1_data_779C) == 0) { - if(lbl_1_data_7798 > 0) { - lbl_1_data_779C = HuAudFXPlay(1796); - lbl_1_data_7798--; - } else { - lbl_1_data_779C = -1; - } - } - if(lbl_1_data_779C >= 0) { - Hu3D3Dto2D(&object->trans, 1, &pos2D); - pan = 64.0f+((32.0f*pos2D.x)/576.0f); - if(pan < 32.0f) { - pan = 32.0f; - } else if(pan > 96.0f) { - pan = 96.0f; - } - HuAudFXPanning(lbl_1_data_779C, pan); - } - } - Hu3DModelAttrReset(object->model[0], 1); - if(fn_1_374() == 3) { - Hu3DMotionSpeedSet(object->model[0], 1.0f); - Hu3DModelAttrSet(object->model[0], 1); - object->func = fn_1_4F54; - } + Work4AA8 *work = object->data; + float pan; + Vec pos2D; + if ((VERSION_NTSC ? 42.0f : 35.0f) == work->unk24) { + HuAudFXPlay(1795); + } + if (work->unk24 == 0) { + object->trans.x -= 1500.0f / REFRESH_RATE; + } + else { + if (--work->unk24 == 0) { + lbl_1_data_779C = HuAudFXPlay(1796); + lbl_1_data_7798--; + } + } + if (lbl_1_data_779C >= 0) { + if (HuAudFXStatusGet(lbl_1_data_779C) == 0) { + if (lbl_1_data_7798 > 0) { + lbl_1_data_779C = HuAudFXPlay(1796); + lbl_1_data_7798--; + } + else { + lbl_1_data_779C = -1; + } + } + if (lbl_1_data_779C >= 0) { + Hu3D3Dto2D(&object->trans, 1, &pos2D); + pan = 64.0f + ((32.0f * pos2D.x) / 576.0f); + if (pan < 32.0f) { + pan = 32.0f; + } + else if (pan > 96.0f) { + pan = 96.0f; + } + HuAudFXPanning(lbl_1_data_779C, pan); + } + } + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if (fn_1_374() == 3) { + Hu3DMotionSpeedSet(object->model[0], 1.0f); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_4F54; + } } void fn_1_71EC(Vec *arg0, Vec *arg1, float arg2); void fn_1_4F54(omObjData *object) { - Work4AA8 *work = object->data; - omObjData **temp_r29; - WorkD0C *temp_r28; - Vec sp4C; - Vec sp40; - switch(work->unk4) { - case 0: - if(object->work[3]) { - work->unk4++; - work->unk24 = work->unk26 = 90; - temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - object->trans.x = work->unk28.x = temp_r29[work->unk2]->trans.x; - object->trans.y = work->unk28.y = 2000; - object->trans.z = work->unk28.z = temp_r29[work->unk2]->trans.z-100; - object->rot.y = 180; - Hu3DModelAttrReset(object->model[0], 1); - } - break; - - case 1: - temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - work->unk34.x = temp_r29[work->unk2]->trans.x; - work->unk34.y = 1500; - work->unk34.z = temp_r29[work->unk2]->trans.z; - work->unk40.x = temp_r29[work->unk2]->trans.x; - work->unk40.y = temp_r29[work->unk2]->trans.y; - work->unk40.z = temp_r29[work->unk2]->trans.z; - fn_1_71EC(&work->unk28, &sp40, 1.0f-((float)work->unk24/(float)work->unk26)); - VECSubtract(&sp40, &object->trans, &sp4C); - object->rot.x = fn_1_1024(object->rot.x, atan2d(-sp4C.y, VECMagXZ(&sp4C)), 0.2f); - object->rot.y = fn_1_1024(object->rot.y, atan2d(sp4C.x, sp4C.z), 0.2f); - object->trans.x = sp40.x; - object->trans.y = sp40.y; - object->trans.z = sp40.z; - if(--work->unk24 == 0) { - work->unk0 = 1; - work->unk4++; - work->unk24 = 90; - work->unk10 = (200.0f-object->trans.y)/work->unk24; - object->rot.x = 0; - } - if(60.0f == work->unk24) { - HuAudFXPlay(1796); - } - break; - - case 2: - object->trans.y += work->unk10; - if(--work->unk24 == 0) { - work->unk4++; - work->unk24 = work->unk26 = 48; - work->unk28.x = object->trans.x; - work->unk28.y = object->trans.y; - work->unk28.z = object->trans.z; - temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - temp_r28 = temp_r29[work->unk2]->data; - work->unk34.x = temp_r28->unk50.x; - work->unk34.y = 250; - work->unk34.z = temp_r28->unk50.z; - temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - temp_r28 = temp_r29[work->unk2]->data; - temp_r28->unk0_field3 = 1; - VECSubtract(&work->unk34, &work->unk28, &sp4C); - VECNormalize(&sp4C, &sp4C); - VECScale(&sp4C, &work->unk40, 2000.0f); - work->unk40.y = 300; - VECAdd(&work->unk28, &work->unk40, &work->unk40); - - } - break; - - case 3: - fn_1_71EC(&work->unk28, &sp40, 1.0f-((float)work->unk24/(float)work->unk26)); - VECSubtract(&sp40, &object->trans, &sp4C); - object->rot.x = fn_1_1024(object->rot.x, atan2d(-sp4C.y, VECMagXZ(&sp4C)), 0.2f); - object->rot.y = fn_1_1024(object->rot.y, atan2d(sp4C.x, sp4C.z), 0.2f); - object->trans.x = sp40.x; - object->trans.y = sp40.y; - object->trans.z = sp40.z; - if(--work->unk24 == 0) { - temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - temp_r28 = temp_r29[work->unk2]->data; - temp_r28->unk0_field1 = 0; - work->unk4 = 0; - object->work[3] = 0; - Hu3DModelAttrSet(object->model[0], 1); - } - if(work->unk24 == (int)(work->unk26-12.0f)) { - work->unk0 = 0; - temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - temp_r28 = temp_r29[work->unk2]->data; - temp_r28->unk68.x = object->trans.x; - temp_r28->unk68.y = object->trans.y; - temp_r28->unk68.z = object->trans.z; - } - break; - } + Work4AA8 *work = object->data; + omObjData **temp_r29; + WorkD0C *temp_r28; + Vec sp4C; + Vec sp40; + switch (work->unk4) { + case 0: + if (object->work[3]) { + work->unk4++; + work->unk24 = work->unk26 = 1.5f * REFRESH_RATE; + temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + object->trans.x = work->unk28.x = temp_r29[work->unk2]->trans.x; + object->trans.y = work->unk28.y = 2000; + object->trans.z = work->unk28.z = temp_r29[work->unk2]->trans.z - 100; + object->rot.y = 180; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + + case 1: + temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + work->unk34.x = temp_r29[work->unk2]->trans.x; + work->unk34.y = 1500; + work->unk34.z = temp_r29[work->unk2]->trans.z; + work->unk40.x = temp_r29[work->unk2]->trans.x; + work->unk40.y = temp_r29[work->unk2]->trans.y; + work->unk40.z = temp_r29[work->unk2]->trans.z; + fn_1_71EC(&work->unk28, &sp40, 1.0f - ((float)work->unk24 / (float)work->unk26)); + VECSubtract(&sp40, &object->trans, &sp4C); + object->rot.x = fn_1_1024(object->rot.x, atan2d(-sp4C.y, VECMagXZ(&sp4C)), 0.2f); + object->rot.y = fn_1_1024(object->rot.y, atan2d(sp4C.x, sp4C.z), 0.2f); + object->trans.x = sp40.x; + object->trans.y = sp40.y; + object->trans.z = sp40.z; + if (--work->unk24 == 0) { + work->unk0 = 1; + work->unk4++; + work->unk24 = 1.5f * REFRESH_RATE; + work->unk10 = (200.0f - object->trans.y) / work->unk24; + object->rot.x = 0; + } + if (1.0f * REFRESH_RATE == work->unk24) { + HuAudFXPlay(1796); + } + break; + + case 2: + object->trans.y += work->unk10; + if (--work->unk24 == 0) { + work->unk4++; + work->unk24 = work->unk26 = 0.8f * REFRESH_RATE; + work->unk28.x = object->trans.x; + work->unk28.y = object->trans.y; + work->unk28.z = object->trans.z; + temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r28 = temp_r29[work->unk2]->data; + work->unk34.x = temp_r28->unk50.x; + work->unk34.y = 250; + work->unk34.z = temp_r28->unk50.z; + temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r28 = temp_r29[work->unk2]->data; + temp_r28->unk0_field3 = 1; + VECSubtract(&work->unk34, &work->unk28, &sp4C); + VECNormalize(&sp4C, &sp4C); + VECScale(&sp4C, &work->unk40, 2000.0f); + work->unk40.y = 300; + VECAdd(&work->unk28, &work->unk40, &work->unk40); + } + break; + + case 3: + fn_1_71EC(&work->unk28, &sp40, 1.0f - ((float)work->unk24 / (float)work->unk26)); + VECSubtract(&sp40, &object->trans, &sp4C); + object->rot.x = fn_1_1024(object->rot.x, atan2d(-sp4C.y, VECMagXZ(&sp4C)), 0.2f); + object->rot.y = fn_1_1024(object->rot.y, atan2d(sp4C.x, sp4C.z), 0.2f); + object->trans.x = sp40.x; + object->trans.y = sp40.y; + object->trans.z = sp40.z; + if (--work->unk24 == 0) { + temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r28 = temp_r29[work->unk2]->data; + temp_r28->unk0_field1 = 0; + work->unk4 = 0; + object->work[3] = 0; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + if (work->unk24 == (int)(work->unk26 - (0.2f * REFRESH_RATE))) { + work->unk0 = 0; + temp_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r28 = temp_r29[work->unk2]->data; + temp_r28->unk68.x = object->trans.x; + temp_r28->unk68.y = object->trans.y; + temp_r28->unk68.z = object->trans.z; + } + break; + } } -void fn_1_5B9C(omObjData *object) -{ - -} +void fn_1_5B9C(omObjData *object) { } -s32 lbl_1_data_77A0[10] = { - 0x00460000, - 0x00460001, - 0x00460002, - 0x00460003, - 0x00460004, - 0x00460005, - 0x00460006, - 0x00460007, - 0x00460008, - 0x00460009 -}; +s32 lbl_1_data_77A0[10] = { 0x00460000, 0x00460001, 0x00460002, 0x00460003, 0x00460004, 0x00460005, 0x00460006, 0x00460007, 0x00460008, 0x00460009 }; void fn_1_5CB0(omObjData *object); void fn_1_6520(omObjData *object); void fn_1_5BA0(Process *objman) { - s32 i; - lbl_1_bss_144 = 0; - omMakeGroupEx(objman, 1, 4); - for(i=0; i<4; i++) { - omAddObjEx(objman, 10, 28, 0, 1, fn_1_5CB0); - } - for(i=0; i<10; i++) { - lbl_1_bss_10[i] = Hu3DModelCreateFile(lbl_1_data_77A0[i]); - Hu3DModelAttrSet(lbl_1_bss_10[i], 1); - } - omAddObjEx(objman, 10, 4, 0, 1, fn_1_6520); + s32 i; + lbl_1_bss_144 = 0; + omMakeGroupEx(objman, 1, 4); + for (i = 0; i < 4; i++) { + omAddObjEx(objman, 10, 28, 0, 1, fn_1_5CB0); + } + for (i = 0; i < 10; i++) { + lbl_1_bss_10[i] = Hu3DModelCreateFile(lbl_1_data_77A0[i]); + Hu3DModelAttrSet(lbl_1_bss_10[i], HU3D_ATTR_DISPOFF); + } + omAddObjEx(objman, 10, 4, 0, 1, fn_1_6520); } -void fn_1_5CAC(void) -{ - -} +void fn_1_5CAC(void) { } -float lbl_1_data_77C8[][2] = { - 0, 0, - 0, -700, - -1400, -2200, - 1400, -2200, - -1400, -3600, - 1400, -3600, - -2800, -5200, - 0, -5200, - 0, -5200, - 2800, -5200, - -2800, -6600, - 0, -6600, - 0, -6600, - 2800, -6600 -}; +float lbl_1_data_77C8[][2] = { 0, 0, 0, -700, -1400, -2200, 1400, -2200, -1400, -3600, 1400, -3600, -2800, -5200, 0, -5200, 0, -5200, 2800, -5200, + -2800, -6600, 0, -6600, 0, -6600, 2800, -6600 }; -s16 lbl_1_data_7838[] = { - 0, 1, -1, -1, - 2, 2, -1, -1, - -1, -1, 3, 3, - 3, 3 -}; +s16 lbl_1_data_7838[] = { 0, 1, -1, -1, 2, 2, -1, -1, -1, -1, 3, 3, 3, 3 }; void fn_1_6068(omObjData *object); void fn_1_5CB0(omObjData *object) { - u16 sp8[6] = { - 4, 7, 5, 8, 6, 9 - }; - char *sp14[10][2] = { - "road0", NULL, - "road1", "bridge1", - "road2", "bridge2", - "road3", NULL, - "road4", NULL, - "road5", NULL, - "road6", NULL, - "road7", NULL, - "road8", NULL, - "road9", NULL - }; - Work5CB0 *work; - s32 i; - s32 temp; - s32 temp_r27; - s32 temp_r26; - s32 temp_r25; - s32 temp_r24; - omSetStatBit(object, 0x100); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work5CB0)*14, MEMORY_DEFAULT_NUM); - object->data = work; - memset(work, 0, sizeof(Work5CB0)*14); - for(i=0; i<100; i++) { - temp_r27 = ((frand8()*3) >> 8)*2; - temp_r25 = ((frand8()*3) >> 8)*2; - temp = sp8[temp_r27]; - sp8[temp_r27] = sp8[temp_r25]; - sp8[temp_r25] = temp; - temp_r27 = (((frand8()*3) >> 8)*2)+1; - temp_r25 = (((frand8()*3) >> 8)*2)+1; - temp = sp8[temp_r27]; - sp8[temp_r27] = sp8[temp_r25]; - sp8[temp_r25] = temp; - } - for(i=0; i<100; i++) { - temp_r27 = ((frand8()*3) >> 8)*2; - temp = sp8[temp_r27+1]; - sp8[temp_r27+1] = sp8[temp_r27]; - sp8[temp_r27] = temp; - } - temp_r24 = 0; - for(i=0; i<14; i++, work++) { - temp_r26 = lbl_1_data_7838[i]; - if(temp_r26 < 0) { - temp_r26 = sp8[temp_r24++]; - } - object->model[i] = Hu3DModelLink(lbl_1_bss_10[temp_r26]); - Hu3DModelPosSet(object->model[i], lbl_1_data_77C8[i][0], 0, lbl_1_data_77C8[i][1]); - Hu3DModelAttrReset(object->model[i], 1); - for(temp=0; temp<2; temp++) { - if(sp14[temp_r26][temp]) { - Hu3DModelShadowMapObjSet(object->model[i], sp14[temp_r26][temp]); - } - } - work->unk0 = temp_r26; - work->unk4.x = lbl_1_data_77C8[i][0]; - work->unk4.y = 0; - work->unk4.z = lbl_1_data_77C8[i][1]; - memcpy(&work->unk10, &lbl_1_data_748C[i], sizeof(StructData748C)); - - } - object->work[0] = lbl_1_bss_144; - lbl_1_bss_144++; - object->func = fn_1_6068; + u16 sp8[6] = { 4, 7, 5, 8, 6, 9 }; + char *sp14[10][2] = { "road0", NULL, "road1", "bridge1", "road2", "bridge2", "road3", NULL, "road4", NULL, "road5", NULL, "road6", NULL, "road7", + NULL, "road8", NULL, "road9", NULL }; + Work5CB0 *work; + s32 i; + s32 temp; + s32 temp_r27; + s32 temp_r26; + s32 temp_r25; + s32 temp_r24; + omSetStatBit(object, 0x100); + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work5CB0) * 14, MEMORY_DEFAULT_NUM); + object->data = work; + memset(work, 0, sizeof(Work5CB0) * 14); + for (i = 0; i < 100; i++) { + temp_r27 = ((frand8() * 3) >> 8) * 2; + temp_r25 = ((frand8() * 3) >> 8) * 2; + temp = sp8[temp_r27]; + sp8[temp_r27] = sp8[temp_r25]; + sp8[temp_r25] = temp; + temp_r27 = (((frand8() * 3) >> 8) * 2) + 1; + temp_r25 = (((frand8() * 3) >> 8) * 2) + 1; + temp = sp8[temp_r27]; + sp8[temp_r27] = sp8[temp_r25]; + sp8[temp_r25] = temp; + } + for (i = 0; i < 100; i++) { + temp_r27 = ((frand8() * 3) >> 8) * 2; + temp = sp8[temp_r27 + 1]; + sp8[temp_r27 + 1] = sp8[temp_r27]; + sp8[temp_r27] = temp; + } + temp_r24 = 0; + for (i = 0; i < 14; i++, work++) { + temp_r26 = lbl_1_data_7838[i]; + if (temp_r26 < 0) { + temp_r26 = sp8[temp_r24++]; + } + object->model[i] = Hu3DModelLink(lbl_1_bss_10[temp_r26]); + Hu3DModelPosSet(object->model[i], lbl_1_data_77C8[i][0], 0, lbl_1_data_77C8[i][1]); + Hu3DModelAttrReset(object->model[i], HU3D_ATTR_DISPOFF); + for (temp = 0; temp < 2; temp++) { + if (sp14[temp_r26][temp]) { + Hu3DModelShadowMapObjSet(object->model[i], sp14[temp_r26][temp]); + } + } + work->unk0 = temp_r26; + work->unk4.x = lbl_1_data_77C8[i][0]; + work->unk4.y = 0; + work->unk4.z = lbl_1_data_77C8[i][1]; + memcpy(&work->unk10, &lbl_1_data_748C[i], sizeof(StructData748C)); + } + object->work[0] = lbl_1_bss_144; + lbl_1_bss_144++; + object->func = fn_1_6068; } void fn_1_6120(omObjData *object); void fn_1_6068(omObjData *object) { - s32 i; - for(i=0; i<14; i++) { - if(object->work[0] == 0 && i == 10) { - Hu3DModelCameraSet(object->model[i], lbl_1_data_75E0[0]); - } else { - Hu3DModelCameraSet(object->model[i], 0); - } - } - if(fn_1_374() == 3) { - object->func = fn_1_6120; - } + s32 i; + for (i = 0; i < 14; i++) { + if (object->work[0] == 0 && i == 10) { + Hu3DModelCameraSet(object->model[i], lbl_1_data_75E0[0]); + } + else { + Hu3DModelCameraSet(object->model[i], 0); + } + } + if (fn_1_374() == 3) { + object->func = fn_1_6120; + } } void fn_1_6120(omObjData *object) { - s32 i; - WorkD0C *temp_r29; - omObjData **temp_r28; - Work5CB0 *work = object->data; - s16 sp8[14]; - for(i=0; i<14; i++) { - sp8[i] = 0; - } - temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - temp_r29 = temp_r28[object->work[0]]->data; - lbl_1_bss_C = &work[temp_r29->unk44].unk10; - sp8[temp_r29->unk44] |= lbl_1_data_75E0[object->work[0]]; - if(lbl_1_bss_C->unk4 >= 0) { - sp8[lbl_1_bss_C->unk4] |= lbl_1_data_75E0[object->work[0]]; - } - for(i=0; iunk8; i++) { - sp8[lbl_1_bss_C->unkC[i]] |= lbl_1_data_75E0[object->work[0]]; - } - for(i=0; i<14; i++) { - Hu3DModelCameraSet(object->model[i], sp8[i]); - } + s32 i; + WorkD0C *temp_r29; + omObjData **temp_r28; + Work5CB0 *work = object->data; + s16 sp8[14]; + for (i = 0; i < 14; i++) { + sp8[i] = 0; + } + temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r29 = temp_r28[object->work[0]]->data; + lbl_1_bss_C = &work[temp_r29->unk44].unk10; + sp8[temp_r29->unk44] |= lbl_1_data_75E0[object->work[0]]; + if (lbl_1_bss_C->unk4 >= 0) { + sp8[lbl_1_bss_C->unk4] |= lbl_1_data_75E0[object->work[0]]; + } + for (i = 0; i < lbl_1_bss_C->unk8; i++) { + sp8[lbl_1_bss_C->unkC[i]] |= lbl_1_data_75E0[object->work[0]]; + } + for (i = 0; i < 14; i++) { + Hu3DModelCameraSet(object->model[i], sp8[i]); + } } s32 fn_1_62E0(float arg0) { - s32 i; - for(i=0; i<5; i++) { - if(arg0 > lbl_1_data_75CC[i]) { - break; - } - } - return i; + s32 i; + for (i = 0; i < 5; i++) { + if (arg0 > lbl_1_data_75CC[i]) { + break; + } + } + return i; } s32 fn_1_6328(omObjData *object) { - WorkD0C *work = object->data; - omObjData **temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); - Work5CB0 *temp_r29 = temp_r28[work->unk2]->data; - s32 i; - ModelData *temp_r26; - s32 temp_r25; - float temp_f31; - float temp_f30; - lbl_1_bss_8 = &temp_r29[work->unk44].unk10; - if(lbl_1_bss_8->unk8 > 0 && work->unk46 == temp_r29[lbl_1_bss_8->unkC[0]].unk10.unk0) { - temp_r25 = -1; - temp_f30 = 9999; - for(i=0; iunk8; i++) { - temp_r26 = &Hu3DData[temp_r28[work->unk2]->model[lbl_1_bss_8->unkC[i]]]; - temp_f31 = fabs(object->trans.x-temp_r26->pos.x); - if(temp_f31 < temp_f30) { - temp_f30 = temp_f31; - temp_r25 = lbl_1_bss_8->unkC[i]; - } - } - (void)i; - return temp_r25; - } else { - if(work->unk46 == temp_r29[lbl_1_bss_8->unk4].unk10.unk0) { - return lbl_1_bss_8->unk4; - } else { - return -1; - } - } + WorkD0C *work = object->data; + omObjData **temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); + Work5CB0 *temp_r29 = temp_r28[work->unk2]->data; + s32 i; + ModelData *temp_r26; + s32 temp_r25; + float temp_f31; + float temp_f30; + lbl_1_bss_8 = &temp_r29[work->unk44].unk10; + if (lbl_1_bss_8->unk8 > 0 && work->unk46 == temp_r29[lbl_1_bss_8->unkC[0]].unk10.unk0) { + temp_r25 = -1; + temp_f30 = 9999; + for (i = 0; i < lbl_1_bss_8->unk8; i++) { + temp_r26 = &Hu3DData[temp_r28[work->unk2]->model[lbl_1_bss_8->unkC[i]]]; + temp_f31 = fabs(object->trans.x - temp_r26->pos.x); + if (temp_f31 < temp_f30) { + temp_f30 = temp_f31; + temp_r25 = lbl_1_bss_8->unkC[i]; + } + } + (void)i; + return temp_r25; + } + else { + if (work->unk46 == temp_r29[lbl_1_bss_8->unk4].unk10.unk0) { + return lbl_1_bss_8->unk4; + } + else { + return -1; + } + } } -s32 lbl_1_data_78A0[8] = { - 0x0046000A, - 0x0046000B, - 0x0046000C, - 0x0046000D, - 0x0046000E, - 0x0046000F, - 0x00460010, - 0x00460011 -}; +s32 lbl_1_data_78A0[8] = { 0x0046000A, 0x0046000B, 0x0046000C, 0x0046000D, 0x0046000E, 0x0046000F, 0x00460010, 0x00460011 }; -Vec lbl_1_data_78C0[4] = { - { -2800, 0, -7700 }, - { 0, 0, -7700 }, - { 0, 0, -7700 }, - { 2800, 0, -7700 } -}; +Vec lbl_1_data_78C0[4] = { { -2800, 0, -7700 }, { 0, 0, -7700 }, { 0, 0, -7700 }, { 2800, 0, -7700 } }; void fn_1_661C(omObjData *object); void fn_1_6520(omObjData *object) { - s32 i; - omSetStatBit(object, 0x100); - for(i=0; imdlcnt; i++) { - object->model[i] = Hu3DModelCreateFile(lbl_1_data_78A0[GWPlayerCfg[i].character]); - Hu3DModelCameraSet(object->model[i], lbl_1_data_75E0[i]); - Hu3DModelClusterAttrSet(object->model[i], 0, 0xC0000001); - Hu3DModelAttrSet(object->model[i], 1); - } - object->func = fn_1_661C; + s32 i; + omSetStatBit(object, 0x100); + for (i = 0; i < object->mdlcnt; i++) { + object->model[i] = Hu3DModelCreateFile(lbl_1_data_78A0[GWPlayerCfg[i].character]); + Hu3DModelCameraSet(object->model[i], lbl_1_data_75E0[i]); + Hu3DModelClusterAttrSet(object->model[i], 0, 0xC0000001); + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + object->func = fn_1_661C; } void fn_1_66BC(omObjData *object); void fn_1_661C(omObjData *object) { - Hu3DModelAttrReset(object->model[0], 1); - Hu3DModelPosSet(object->model[0], -2800, 0, -7700); - if(fn_1_374() == 3) { - Hu3DModelAttrSet(object->model[0], 1); - object->func = fn_1_66BC; - } + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[0], -2800, 0, -7700); + if (fn_1_374() == 3) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_66BC; + } } void fn_1_66BC(omObjData *object) { - omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); - s32 i; - for(i=0; i<4; i++) { - WorkD0C *work = objList[i]->data; - if(work->unk44 >= 10 && work->unk44 <= 13) { - s32 goalNo = work->unk44-10; - Hu3DModelPosSet(object->model[i], lbl_1_data_78C0[goalNo].x, lbl_1_data_78C0[goalNo].y, lbl_1_data_78C0[goalNo].z); - Hu3DModelAttrReset(object->model[i], 1); - } else { - Hu3DModelAttrSet(object->model[i], 1); - } - } + omObjData **objList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + s32 i; + for (i = 0; i < 4; i++) { + WorkD0C *work = objList[i]->data; + if (work->unk44 >= 10 && work->unk44 <= 13) { + s32 goalNo = work->unk44 - 10; + Hu3DModelPosSet(object->model[i], lbl_1_data_78C0[goalNo].x, lbl_1_data_78C0[goalNo].y, lbl_1_data_78C0[goalNo].z); + Hu3DModelAttrReset(object->model[i], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + } } s32 fn_1_67B4(Vec *arg0, s32 arg1, s32 arg2, Vec *arg3, Vec *arg4) { - omObjData **temp_r21 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); - Work5CB0 *temp_r28 = temp_r21[arg1]->data; - s32 i; - s32 temp_r25; - - Vec sp34; - VECSubtract(arg0, &temp_r28[arg2].unk4, &sp34); - temp_r25 = temp_r28[arg2].unk0; - for(i=0; ix*sp28.x)+(sp34.y*sp28.y)-(temp_r29->y*sp28.y)+(sp34.z*sp28.z)-(temp_r29->z*sp28.z))/temp_f30; - arg3->x = (temp_r31[0].x+temp_r28[arg2].unk4.x)+(temp_f31*(temp_r31[1].x-temp_r31[0].x)); - arg3->y = (temp_r31[0].y+temp_r28[arg2].unk4.y)+(temp_f31*(temp_r31[1].y-temp_r31[0].y)); - arg3->z = (temp_r31[0].z+temp_r28[arg2].unk4.z)+(temp_f31*(temp_r31[1].z-temp_r31[0].z)); - arg4->x = (temp_r30[0].x+temp_r28[arg2].unk4.x)+(temp_f31*(temp_r30[1].x-temp_r30[0].x)); - arg4->y = (temp_r30[0].y+temp_r28[arg2].unk4.y)+(temp_f31*(temp_r30[1].y-temp_r30[0].y)); - arg4->z = (temp_r30[0].z+temp_r28[arg2].unk4.z)+(temp_f31*(temp_r30[1].z-temp_r30[0].z)); - return 1; - } - } - return 0; + omObjData **temp_r21 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); + Work5CB0 *temp_r28 = temp_r21[arg1]->data; + s32 i; + s32 temp_r25; + + Vec sp34; + VECSubtract(arg0, &temp_r28[arg2].unk4, &sp34); + temp_r25 = temp_r28[arg2].unk0; + for (i = 0; i < lbl_1_data_73B8[temp_r25]; i++) { + Vec *temp_r29 = (lbl_1_data_73CC[temp_r25])[i * 3]; + Vec *temp_r31 = *((&lbl_1_data_73CC[temp_r25][i * 3]) + 1); + Vec *temp_r30 = *((&lbl_1_data_73CC[temp_r25][i * 3]) + 2); + s32 j; + for (j = 0; j < lbl_1_data_73F4[temp_r25][i] - 1; j++, temp_r29++, temp_r31++, temp_r30++) { + Vec sp28; + Vec sp1C; + Vec sp10; + float temp_f31; + float temp_f30; + VECSubtract(&temp_r29[1], &temp_r29[0], &sp28); + VECSubtract(&sp34, &temp_r29[1], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + VECSubtract(&temp_r31[1], &temp_r29[1], &sp28); + VECSubtract(&sp34, &temp_r31[1], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + VECSubtract(&temp_r31[0], &temp_r31[1], &sp28); + VECSubtract(&sp34, &temp_r31[0], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + VECSubtract(&temp_r29[0], &temp_r31[0], &sp28); + VECSubtract(&sp34, &temp_r29[0], &sp1C); + VECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + VECSubtract(&temp_r29[1], &temp_r29[0], &sp28); + temp_f30 = VECMag2Point(&sp28); + if (0.0f == temp_f30) { + continue; + } + temp_f31 = ((sp34.x * sp28.x) - (temp_r29->x * sp28.x) + (sp34.y * sp28.y) - (temp_r29->y * sp28.y) + (sp34.z * sp28.z) + - (temp_r29->z * sp28.z)) + / temp_f30; + arg3->x = (temp_r31[0].x + temp_r28[arg2].unk4.x) + (temp_f31 * (temp_r31[1].x - temp_r31[0].x)); + arg3->y = (temp_r31[0].y + temp_r28[arg2].unk4.y) + (temp_f31 * (temp_r31[1].y - temp_r31[0].y)); + arg3->z = (temp_r31[0].z + temp_r28[arg2].unk4.z) + (temp_f31 * (temp_r31[1].z - temp_r31[0].z)); + arg4->x = (temp_r30[0].x + temp_r28[arg2].unk4.x) + (temp_f31 * (temp_r30[1].x - temp_r30[0].x)); + arg4->y = (temp_r30[0].y + temp_r28[arg2].unk4.y) + (temp_f31 * (temp_r30[1].y - temp_r30[0].y)); + arg4->z = (temp_r30[0].z + temp_r28[arg2].unk4.z) + (temp_f31 * (temp_r30[1].z - temp_r30[0].z)); + return 1; + } + } + return 0; } void fn_1_6CD0(s32 arg0, s32 arg1); @@ -1797,250 +1638,253 @@ void fn_1_6DEC(omObjData *object); void fn_1_6C08(omObjData *object) { - fn_1_6CD0(0, 0); - object->work[3] = espEntry(0x460015, 32768, 0); - espPosSet(object->work[3], 288, 240); - espDispOff(object->work[3]); - espScaleSet(object->work[3], 2.0f, 2.0f); - espColorSet(object->work[3], 0, 0, 0); - object->func = fn_1_6DEC; + fn_1_6CD0(0, 0); + object->work[3] = espEntry(0x460015, 32768, 0); + espPosSet(object->work[3], 288, 240); + espDispOff(object->work[3]); + espScaleSet(object->work[3], 2.0f, 2.0f); + espColorSet(object->work[3], 0, 0, 0); + object->func = fn_1_6DEC; } void fn_1_6CD0(s32 arg0, s32 arg1) { - CZoomM[arg0] = lbl_1_data_741C[arg1].zoom; - CenterM[arg0].x = lbl_1_data_741C[arg1].pos.x; - CenterM[arg0].y = lbl_1_data_741C[arg1].pos.y; - CenterM[arg0].z = lbl_1_data_741C[arg1].pos.z; - CRotM[arg0].x = lbl_1_data_741C[arg1].rot.x; - CRotM[arg0].y = lbl_1_data_741C[arg1].rot.y; - CRotM[arg0].z = lbl_1_data_741C[arg1].rot.z; + CZoomM[arg0] = lbl_1_data_741C[arg1].zoom; + CenterM[arg0].x = lbl_1_data_741C[arg1].pos.x; + CenterM[arg0].y = lbl_1_data_741C[arg1].pos.y; + CenterM[arg0].z = lbl_1_data_741C[arg1].pos.z; + CRotM[arg0].x = lbl_1_data_741C[arg1].rot.x; + CRotM[arg0].y = lbl_1_data_741C[arg1].rot.y; + CRotM[arg0].z = lbl_1_data_741C[arg1].rot.z; } void fn_1_6DEC(omObjData *object) { - CameraData *camera = &Hu3DCamera[0]; - s32 i; - switch(object->work[0]) { - case 0: - if(fn_1_374() <= 3) { - CRotM[0].y -= 10.0f/60.0f; - } - if(fn_1_374() == 3) { - Hu3DCameraCreate(15); - Hu3DCameraPerspectiveSet(15, 10, 20, 25000, 1.2); - Hu3DCameraViewportSet(1, 0, 0, 320, 240, 0, 1); - Hu3DCameraViewportSet(2, 320, 0, 320, 240, 0, 1); - Hu3DCameraViewportSet(4, 0, 240, 320, 240, 0, 1); - Hu3DCameraViewportSet(8, 320, 240, 320, 240, 0, 1); - Hu3DCameraScissorSet(1, 0, 0, 320, 240); - Hu3DCameraScissorSet(2, 320, 0, 640, 240); - Hu3DCameraScissorSet(4, 0, 240, 320, 480); - Hu3DCameraScissorSet(8, 320, 240, 640, 480); - for(i=0; i<4; i++) { - fn_1_6CD0(i, 1); - } - lbl_1_bss_168->work[0] = 4; - object->work[0]++; - espDispOn(object->work[3]); - } - break; - } + CameraData *camera = &Hu3DCamera[0]; + s32 i; + switch (object->work[0]) { + case 0: + if (fn_1_374() <= 3) { + CRotM[0].y -= 10.0f / REFRESH_RATE; + } + if (fn_1_374() == 3) { + Hu3DCameraCreate(15); + Hu3DCameraPerspectiveSet(15, 10, 20, 25000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 320, 240, 0, 1); + Hu3DCameraViewportSet(2, 320, 0, 320, 240, 0, 1); + Hu3DCameraViewportSet(4, 0, 240, 320, 240, 0, 1); + Hu3DCameraViewportSet(8, 320, 240, 320, 240, 0, 1); + Hu3DCameraScissorSet(1, 0, 0, 320, 240); + Hu3DCameraScissorSet(2, 320, 0, 640, 240); + Hu3DCameraScissorSet(4, 0, 240, 320, 480); + Hu3DCameraScissorSet(8, 320, 240, 640, 480); + for (i = 0; i < 4; i++) { + fn_1_6CD0(i, 1); + } + lbl_1_bss_168->work[0] = 4; + object->work[0]++; + espDispOn(object->work[3]); + } + break; + } } float fn_1_7190(float arg0, float arg1, float arg2, float arg3) { - float temp_f31 = 1.0f-arg3; - return (arg0*(temp_f31*temp_f31))+((2.0f*temp_f31)*arg3*arg1)+(arg2*(arg3*arg3)); - + float temp_f31 = 1.0f - arg3; + return (arg0 * (temp_f31 * temp_f31)) + ((2.0f * temp_f31) * arg3 * arg1) + (arg2 * (arg3 * arg3)); } void fn_1_71EC(Vec *arg0, Vec *arg1, float arg2) { - arg1->x = fn_1_7190(arg0[0].x, arg0[1].x, arg0[2].x, arg2); - arg1->y = fn_1_7190(arg0[0].y, arg0[1].y, arg0[2].y, arg2); - arg1->z = fn_1_7190(arg0[0].z, arg0[1].z, arg0[2].z, arg2); + arg1->x = fn_1_7190(arg0[0].x, arg0[1].x, arg0[2].x, arg2); + arg1->y = fn_1_7190(arg0[0].y, arg0[1].y, arg0[2].y, arg2); + arg1->z = fn_1_7190(arg0[0].z, arg0[1].z, arg0[2].z, arg2); } void fn_1_7578(s16 layer); void fn_1_73F4(Process *objman) { - s32 i; - s32 dataSize = Hu3DShadowData.unk_02*Hu3DShadowData.unk_02; - lbl_1_bss_128 = objman; - for(i=0; i<3; i++) { - lbl_1_bss_11C[i] = HuMemDirectMallocNum(HEAP_SYSTEM, dataSize, MEMORY_DEFAULT_NUM); - memset(lbl_1_bss_11C[i], 0, dataSize); - lbl_1_bss_D4[i].x = Hu3DShadowData.unk_20.x; - lbl_1_bss_D4[i].y = Hu3DShadowData.unk_20.y; - lbl_1_bss_D4[i].z = Hu3DShadowData.unk_20.z; - lbl_1_bss_F8[i].x = Hu3DShadowData.unk_14.x; - lbl_1_bss_F8[i].y = Hu3DShadowData.unk_14.y; - lbl_1_bss_F8[i].z = Hu3DShadowData.unk_14.z; - } - Hu3DLayerHookSet(0, fn_1_7578); - + s32 i; + s32 dataSize = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; + lbl_1_bss_128 = objman; + for (i = 0; i < 3; i++) { + lbl_1_bss_11C[i] = HuMemDirectMallocNum(HEAP_SYSTEM, dataSize, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_11C[i], 0, dataSize); + lbl_1_bss_D4[i].x = Hu3DShadowData.unk_20.x; + lbl_1_bss_D4[i].y = Hu3DShadowData.unk_20.y; + lbl_1_bss_D4[i].z = Hu3DShadowData.unk_20.z; + lbl_1_bss_F8[i].x = Hu3DShadowData.unk_14.x; + lbl_1_bss_F8[i].y = Hu3DShadowData.unk_14.y; + lbl_1_bss_F8[i].z = Hu3DShadowData.unk_14.z; + } + Hu3DLayerHookSet(0, fn_1_7578); } void fn_1_77E4(s32 shadowNo); void fn_1_7578(s16 layer) { - omObjData **playerList; - s32 i; - s32 dataSize = Hu3DShadowData.unk_02*Hu3DShadowData.unk_02; - if(fn_1_374() < 3) { - return; - } - if(Hu3DCameraNo == 0) { - WorkD0C *playerWork; - GXDrawDone(); - playerList = omGetGroupMemberListEx(lbl_1_bss_128, 0); - if(Hu3DData[playerList[0]->model[0]].attr & 0x4) { - Hu3DModelShadowReset(playerList[0]->model[0]); - } - for(i=0; i<3; i++) { - playerWork = playerList[i+1]->data; - if(playerWork->unk0_field3) { - Hu3DModelShadowSet(playerList[i+1]->model[0]); - } - fn_1_77E4(i); - GXDrawDone(); - DCFlushRangeNoSync(lbl_1_bss_11C[i], dataSize); - if(playerWork->unk0_field3) { - Hu3DModelShadowReset(playerList[i+1]->model[0]); - } - } - playerWork = playerList[0]->data; - if(playerWork->unk0_field3) { - Hu3DModelShadowSet(playerList[0]->model[0]); - } else { - memset(Hu3DShadowData.unk_04, 0, dataSize); - DCFlushRangeNoSync(Hu3DShadowData.unk_04, dataSize); - } - if(Hu3DShadowCamBit < 1) { - Hu3DShadowCamBit = 1; - } - } else { - MTXCopy(lbl_1_bss_44[Hu3DCameraNo-1], Hu3DShadowData.unk_38); - memcpy(Hu3DShadowData.unk_04, lbl_1_bss_11C[Hu3DCameraNo-1], dataSize); - DCFlushRangeNoSync(Hu3DShadowData.unk_04, dataSize); - } + omObjData **playerList; + s32 i; + s32 dataSize = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; + if (fn_1_374() < 3) { + return; + } + if (Hu3DCameraNo == 0) { + WorkD0C *playerWork; + GXDrawDone(); + playerList = omGetGroupMemberListEx(lbl_1_bss_128, 0); + if (Hu3DData[playerList[0]->model[0]].attr & 0x4) { + Hu3DModelShadowReset(playerList[0]->model[0]); + } + for (i = 0; i < 3; i++) { + playerWork = playerList[i + 1]->data; + if (playerWork->unk0_field3) { + Hu3DModelShadowSet(playerList[i + 1]->model[0]); + } + fn_1_77E4(i); + GXDrawDone(); + DCFlushRangeNoSync(lbl_1_bss_11C[i], dataSize); + if (playerWork->unk0_field3) { + Hu3DModelShadowReset(playerList[i + 1]->model[0]); + } + } + playerWork = playerList[0]->data; + if (playerWork->unk0_field3) { + Hu3DModelShadowSet(playerList[0]->model[0]); + } + else { + memset(Hu3DShadowData.unk_04, 0, dataSize); + DCFlushRangeNoSync(Hu3DShadowData.unk_04, dataSize); + } + if (Hu3DShadowCamBit < 1) { + Hu3DShadowCamBit = 1; + } + } + else { + MTXCopy(lbl_1_bss_44[Hu3DCameraNo - 1], Hu3DShadowData.unk_38); + memcpy(Hu3DShadowData.unk_04, lbl_1_bss_11C[Hu3DCameraNo - 1], dataSize); + DCFlushRangeNoSync(Hu3DShadowData.unk_04, dataSize); + } } void fn_1_77E4(s32 shadowNo) { - ModelData *model; - s32 dataSize; - s16 i; - Mtx transform[3]; - Mtx44 proj; - GXColor clearColor = { 0, 0, 0, 0 }; - - Hu3DDrawPreInit(); - GXSetCopyClear(clearColor, 0xFFFFFF); - MTXPerspective(proj, Hu3DShadowData.unk_08.x, 1.2f, Hu3DShadowData.unk_08.y, Hu3DShadowData.unk_08.z); - GXSetProjection(proj, GX_PERSPECTIVE); - if(Hu3DShadowData.unk_02 <= 240) { - GXSetScissor(2, 2, (Hu3DShadowData.unk_02*2)-4, (Hu3DShadowData.unk_02*2)-4); - GXSetViewport(0, 0, Hu3DShadowData.unk_02*2, Hu3DShadowData.unk_02*2, 0, 1); - dataSize = (Hu3DShadowData.unk_02/2)*(Hu3DShadowData.unk_02/2); - } else { - GXSetScissor(1, 1, Hu3DShadowData.unk_02-2, Hu3DShadowData.unk_02-2); - GXSetViewport(0, 0, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 0, 1); - dataSize = Hu3DShadowData.unk_02*Hu3DShadowData.unk_02; - } - MTXLookAt(Hu3DCameraMtx, &lbl_1_bss_F8[shadowNo], &Hu3DShadowData.unk_2C, &lbl_1_bss_D4[shadowNo]); - MTXCopy(Hu3DCameraMtx, lbl_1_bss_44[shadowNo]); - model = &Hu3DData[0]; - shadowModelDrawF = 1; - GXInvalidateTexAll(); - GXSetFog(0, 0, 0, 0, 0, BGColor); - for(i=0; i<512; i++, model++) { - s32 clusterF; - if(model->hsfData && (model->attr & 0x4) && (model->attr & 0x1) == 0 && (model->attr & 0x8000) == 0) { - if(model->attr & 0x8) { - clusterF = 0; - if(model->unk_08 != -1) { - Hu3DMotionExec(i, model->unk_08, model->unk_64, 0); - } - if(model->unk_0C != -1) { - Hu3DSubMotionExec(i); - } - if(model->unk_0A != -1) { - Hu3DMotionExec(i, model->unk_0A, model->unk_74, 1); - } - if(model->attr & 0x400) { - ClusterMotionExec(model); - clusterF = 1; - } - if(model->unk_0E != -1) { - if(model->unk_08 == -1) { - Hu3DMotionExec(i, model->unk_0E, model->unk_94, 0); - } else { - Hu3DMotionExec(i, model->unk_0E, model->unk_94, 1); - } - } - if((model->attr & 0x90) == 0 || (model->motion_attr & 0x40000002) == 0) { - clusterF = 1; - InitVtxParm(model->hsfData); - if(model->unk_0E != -1) { - ShapeProc(model->hsfData); - } - if(model->attr & 0x400) { - ClusterProc(model); - } - if(model->hsfData->cenvCnt) { - EnvelopeProc(model->hsfData); - } - PPCSync(); - } - model->attr |= 0x800; - } - mtxRot(transform[0], model->rot.x, model->rot.y, model->rot.z); - MTXScale(transform[2], model->scale.x, model->scale.y, model->scale.z); - MTXConcat(transform[0], transform[2], transform[2]); - mtxTransCat(transform[2], model->pos.x, model->pos.y, model->pos.z); - MTXConcat(Hu3DCameraMtx, transform[2], transform[1]); - MTXConcat(transform[1], model->unk_F0, transform[1]); - Hu3DDraw(model, transform[1], &model->scale); - } - } - Hu3DDrawPost(); - shadowModelDrawF = 0; - if(Hu3DShadowData.unk_02 <= 240) { - GXSetTexCopySrc(0, 0, Hu3DShadowData.unk_02*2, Hu3DShadowData.unk_02*2); - GXSetTexCopyDst(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_CTF_R8, GX_TRUE); - } else { - GXSetTexCopySrc(0, 0, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02); - GXSetTexCopyDst(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_CTF_R8, GX_FALSE); - } - GXCopyTex(lbl_1_bss_11C[shadowNo], GX_TRUE); - GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); - GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); - MTXOrtho(proj, 0, 1, 0, 1, 0, 1); - GXSetProjection(proj, GX_ORTHOGRAPHIC); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_U8, 0); - GXSetTevColor(GX_TEVREG0, BGColor); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetNumChans(0); - MTXIdentity(transform[1]); - GXLoadPosMtxImm(transform[1], GX_PNMTX0); - GXSetZMode(GX_FALSE, GX_ALWAYS, GX_TRUE); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3u8(0, 0, 0); - GXPosition3u8(1, 0, 0); - GXPosition3u8(1, 1, 0); - GXPosition3u8(0, 1, 0); + ModelData *model; + s32 dataSize; + s16 i; + Mtx transform[3]; + Mtx44 proj; + GXColor clearColor = { 0, 0, 0, 0 }; + + Hu3DDrawPreInit(); + GXSetCopyClear(clearColor, 0xFFFFFF); + MTXPerspective(proj, Hu3DShadowData.unk_08.x, 1.2f, Hu3DShadowData.unk_08.y, Hu3DShadowData.unk_08.z); + GXSetProjection(proj, GX_PERSPECTIVE); + if (Hu3DShadowData.unk_02 <= 240) { + GXSetScissor(2, 2, (Hu3DShadowData.unk_02 * 2) - 4, (Hu3DShadowData.unk_02 * 2) - 4); + GXSetViewport(0, 0, Hu3DShadowData.unk_02 * 2, Hu3DShadowData.unk_02 * 2, 0, 1); + dataSize = (Hu3DShadowData.unk_02 / 2) * (Hu3DShadowData.unk_02 / 2); + } + else { + GXSetScissor(1, 1, Hu3DShadowData.unk_02 - 2, Hu3DShadowData.unk_02 - 2); + GXSetViewport(0, 0, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 0, 1); + dataSize = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02; + } + MTXLookAt(Hu3DCameraMtx, &lbl_1_bss_F8[shadowNo], &Hu3DShadowData.unk_2C, &lbl_1_bss_D4[shadowNo]); + MTXCopy(Hu3DCameraMtx, lbl_1_bss_44[shadowNo]); + model = &Hu3DData[0]; + shadowModelDrawF = 1; + GXInvalidateTexAll(); + GXSetFog(0, 0, 0, 0, 0, BGColor); + for (i = 0; i < 512; i++, model++) { + s32 clusterF; + if (model->hsfData && (model->attr & 0x4) && (model->attr & 0x1) == 0 && (model->attr & 0x8000) == 0) { + if (model->attr & 0x8) { + clusterF = 0; + if (model->unk_08 != -1) { + Hu3DMotionExec(i, model->unk_08, model->unk_64, 0); + } + if (model->unk_0C != -1) { + Hu3DSubMotionExec(i); + } + if (model->unk_0A != -1) { + Hu3DMotionExec(i, model->unk_0A, model->unk_74, 1); + } + if (model->attr & 0x400) { + ClusterMotionExec(model); + clusterF = 1; + } + if (model->unk_0E != -1) { + if (model->unk_08 == -1) { + Hu3DMotionExec(i, model->unk_0E, model->unk_94, 0); + } + else { + Hu3DMotionExec(i, model->unk_0E, model->unk_94, 1); + } + } + if ((model->attr & 0x90) == 0 || (model->motion_attr & 0x40000002) == 0) { + clusterF = 1; + InitVtxParm(model->hsfData); + if (model->unk_0E != -1) { + ShapeProc(model->hsfData); + } + if (model->attr & 0x400) { + ClusterProc(model); + } + if (model->hsfData->cenvCnt) { + EnvelopeProc(model->hsfData); + } + PPCSync(); + } + model->attr |= 0x800; + } + mtxRot(transform[0], model->rot.x, model->rot.y, model->rot.z); + MTXScale(transform[2], model->scale.x, model->scale.y, model->scale.z); + MTXConcat(transform[0], transform[2], transform[2]); + mtxTransCat(transform[2], model->pos.x, model->pos.y, model->pos.z); + MTXConcat(Hu3DCameraMtx, transform[2], transform[1]); + MTXConcat(transform[1], model->unk_F0, transform[1]); + Hu3DDraw(model, transform[1], &model->scale); + } + } + Hu3DDrawPost(); + shadowModelDrawF = 0; + if (Hu3DShadowData.unk_02 <= 240) { + GXSetTexCopySrc(0, 0, Hu3DShadowData.unk_02 * 2, Hu3DShadowData.unk_02 * 2); + GXSetTexCopyDst(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_CTF_R8, GX_TRUE); + } + else { + GXSetTexCopySrc(0, 0, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02); + GXSetTexCopyDst(Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_CTF_R8, GX_FALSE); + } + GXCopyTex(lbl_1_bss_11C[shadowNo], GX_TRUE); + GXSetViewport(0, 0, RenderMode->fbWidth, RenderMode->xfbHeight, 0, 1); + GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); + MTXOrtho(proj, 0, 1, 0, 1, 0, 1); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_U8, 0); + GXSetTevColor(GX_TEVREG0, BGColor); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(0); + MTXIdentity(transform[1]); + GXLoadPosMtxImm(transform[1], GX_PNMTX0); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_TRUE); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3u8(0, 0, 0); + GXPosition3u8(1, 0, 0); + GXPosition3u8(1, 1, 0); + GXPosition3u8(0, 1, 0); } diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index a8b56af9..85db113d 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -1,28 +1,29 @@ #include "REL/m440Dll.h" -#include "rel_sqrt_consts.h" -#include "math.h" #include "ext_math.h" -#include "string.h" +#include "game/audio.h" #include "game/frand.h" #include "game/hsfdraw.h" #include "game/hsfmotion.h" -#include "game/wipe.h" -#include "game/audio.h" -#include "game/objsub.h" #include "game/minigame_seq.h" -#include "game/sprite.h" -#include "game/printfunc.h" +#include "game/objsub.h" #include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" + +#include "string.h" +#include "version.h" // bss -omObjData* lbl_1_bss_6C; -omObjData* lbl_1_bss_68; -unkStruct6* lbl_1_bss_64; +omObjData *lbl_1_bss_6C; +omObjData *lbl_1_bss_68; +unkStruct6 *lbl_1_bss_64; s16 lbl_1_bss_60; Mtx lbl_1_bss_30; s16 lbl_1_bss_2C; -void* lbl_1_bss_28; +void *lbl_1_bss_28; u32 lbl_1_bss_24; s16 lbl_1_bss_10[10]; s16 lbl_1_bss_E; @@ -42,10 +43,7 @@ s16 lbl_1_data_14[6] = { 1, 1, 1, 1, 1 }; Vec lbl_1_data_20 = { 0.0f, 0.0f, 0.0f }; Vec lbl_1_data_2C = { 800.0f, 1300.0f, 1000.0f }; Vec lbl_1_data_38 = { 0.0f, 0.0f, 0.0f }; -unkStruct7 lbl_1_data_44 = { - 0xFF, 0xFF, 0xFF, 0xFF, - 10.0f, 45.0f, 0.0f -}; +unkStruct7 lbl_1_data_44 = { 0xFF, 0xFF, 0xFF, 0xFF, 10.0f, 45.0f, 0.0f }; Vec lbl_1_data_54 = { 1300.0f, 2500.0f, 1300.0f }; Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f }; Vec lbl_1_data_6C = { 0.0f, 0.0f, -500.0f }; @@ -55,10 +53,11 @@ unkStruct lbl_1_data_78[3] = { { 1040.0f, { 200.0f, 21.0f, 0.0f }, { -6.0f, 0.0f, 0.0f } }, }; -void ObjectSetup(void) { +void ObjectSetup(void) +{ Vec sp8; - LightData* var_r30; - Process* var_r31; + LightData *var_r30; + Process *var_r31; Hu3DLightAllKill(); lbl_1_bss_E = Hu3DGLightCreateV(&lbl_1_data_2C, &lbl_1_data_38, &lbl_1_data_44.unk0); @@ -91,14 +90,16 @@ void ObjectSetup(void) { fn_1_AE08(var_r31); } -void fn_1_3C4(omObjData* object) { +void fn_1_3C4(omObjData *object) +{ if ((omSysExitReq != 0) || (lbl_1_bss_0 != 0)) { - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = &fn_1_434; } } -void fn_1_434(omObjData* object) { +void fn_1_434(omObjData *object) +{ if ((WipeStatGet() == 0) && (MGSeqDoneCheck() != 0)) { HuMemDirectFree(lbl_1_bss_64); fn_1_9AB0(lbl_1_bss_10[0]); @@ -108,7 +109,8 @@ void fn_1_434(omObjData* object) { } } -s32 fn_1_4A4(void) { +s32 fn_1_4A4(void) +{ f32 var_f31; unkStruct *var_r31; s32 var_r30; @@ -116,14 +118,14 @@ s32 fn_1_4A4(void) { var_r31 = &lbl_1_data_78[0]; var_r30 = 0; lbl_1_bss_4++; - var_f31 = lbl_1_bss_4 / 120.0f; + var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F); if (var_f31 > 1.0f) { lbl_1_bss_4 = 0; var_f31 = 1.0f; var_r30 = 1; } - - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + + var_f31 = sind(90.0f * var_f31) * sind(90.0f * var_f31); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -134,7 +136,8 @@ s32 fn_1_4A4(void) { return var_r30; } -s32 fn_1_6C8(void) { +s32 fn_1_6C8(void) +{ f32 var_f31; unkStruct *var_r31; s32 var_r30; @@ -142,14 +145,14 @@ s32 fn_1_6C8(void) { var_r31 = &lbl_1_data_78[1]; var_r30 = 0; lbl_1_bss_4++; - var_f31 = lbl_1_bss_4 / 120.0f; + var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F); if (var_f31 > 1.0f) { lbl_1_bss_4 = 0; var_f31 = 1.0f; var_r30 = 1; } - - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + + var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31)); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -160,47 +163,50 @@ s32 fn_1_6C8(void) { return var_r30; } -void fn_1_8F0(omObjData* arg0) { +void fn_1_8F0(omObjData *arg0) +{ s16 var_r30; - unkStruct2* temp_r31; + unkStruct2 *temp_r31; AnimData *anim; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, 0x10000000); - temp_r31 = (unkStruct2*)arg0->data; + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, MEMORY_DEFAULT_NUM); + temp_r31 = (unkStruct2 *)arg0->data; temp_r31->unk0 = 1; temp_r31->unk4 = -1; temp_r31->unk8 = -1; - temp_r31->unk6 = 0x12C; + temp_r31->unk6 = 5 * REFRESH_RATE; temp_r31->unkA = 0; temp_r31->unkC = -1; - + for (var_r30 = 1; var_r30 < 4; var_r30++) { - lbl_1_bss_10[var_r30] = Hu3DModelCreate(HuDataSelHeapReadNum(0x47000A, 0x10000000, HEAP_DATA)); - Hu3DModelAttrSet(lbl_1_bss_10[var_r30], 1); - Hu3DModelAttrSet(lbl_1_bss_10[var_r30], 0x40000002); + lbl_1_bss_10[var_r30] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x0A)); + Hu3DModelAttrSet(lbl_1_bss_10[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_10[var_r30], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(lbl_1_bss_10[var_r30], 7); Hu3DModelScaleSet(lbl_1_bss_10[var_r30], 3.0f, 3.0f, 3.0f); } - - anim = HuSprAnimRead(HuDataReadNum(0x47000B, 0x10000000)); + + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M440, 0x0B), MEMORY_DEFAULT_NUM)); lbl_1_bss_10[0] = fn_1_956C(anim, 0x40, 50.0f, 0x40, 0x40); fn_1_9B94(lbl_1_bss_10[0], fn_1_2240); Hu3DModelLayerSet(lbl_1_bss_10[0], 7); arg0->func = &fn_1_AE0; } -void fn_1_AE0(omObjData* arg0) { +void fn_1_AE0(omObjData *arg0) +{ f32 temp_f31; - unkStruct2* temp_r31; + unkStruct2 *temp_r31; temp_r31 = arg0->data; switch (fn_1_23E4(7)) { case 1: if (lbl_1_bss_A == 0) { - WipeCreate(1, 0, 0x3C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); lbl_1_bss_A = 1; } - if (WipeStatGet() != 0) break; + if (WipeStatGet() != 0) + break; fn_1_2428(7, 2); break; case 2: @@ -210,7 +216,7 @@ void fn_1_AE0(omObjData* arg0) { break; case 3: if (temp_r31->unk8 != -1) { - MGSeqParamSet(temp_r31->unk8, 1, ((temp_r31->unk6 + 0x3B) / 60)); + MGSeqParamSet(temp_r31->unk8, 1, ((temp_r31->unk6 + REFRESH_RATE - 1) / REFRESH_RATE)); } if ((temp_r31->unkC < 0) && ((MGSeqStatGet(temp_r31->unk4) & 0x10) != 0)) { temp_r31->unkC = HuAudSeqPlay(0x49); @@ -221,11 +227,12 @@ void fn_1_AE0(omObjData* arg0) { temp_f31 = (((rand8() << 8) | rand8()) % 361); Center.x = (lbl_1_data_78[1].center.x + (10.0 * sind(temp_f31))); Center.y = (lbl_1_data_78[1].center.y + (10.0 * cosd(temp_f31))); - if (temp_r31->unkA > 0x28) { + if (temp_r31->unkA > (2 * REFRESH_RATE / 3)) { temp_r31->unkA = 0; return; } - } else { + } + else { Center.x = lbl_1_data_78[1].center.x; Center.y = lbl_1_data_78[1].center.y; Center.z = lbl_1_data_78[1].center.z; @@ -245,9 +252,10 @@ void fn_1_AE0(omObjData* arg0) { } } -u8 fn_1_E14(omObjData* arg0) { +u8 fn_1_E14(omObjData *arg0) +{ f32 var_f31; - unkStruct* var_r31; + unkStruct *var_r31; u8 var_r30; switch (lbl_1_bss_6) { @@ -258,7 +266,7 @@ u8 fn_1_E14(omObjData* arg0) { lbl_1_bss_6++; break; case 1: - if (++lbl_1_bss_8 > 0x1E) { + if (++lbl_1_bss_8 > (s16)(0.5f * REFRESH_RATE_F)) { fn_1_F168(); lbl_1_bss_8 = 0; lbl_1_bss_6++; @@ -268,13 +276,13 @@ u8 fn_1_E14(omObjData* arg0) { var_r31 = lbl_1_data_78; var_r30 = 0; lbl_1_bss_4++; - var_f31 = lbl_1_bss_4 / 120.0f; + var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F); if (var_f31 > 1.0f) { lbl_1_bss_4 = 0; var_f31 = 1.0f; var_r30 = 1; } - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31)); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -292,83 +300,86 @@ u8 fn_1_E14(omObjData* arg0) { return 0; } -u8 fn_1_1138(omObjData* object) { - unkStruct2* sp8; +u8 fn_1_1138(omObjData *object) +{ + unkStruct2 *sp8; f32 var_f31; f32 var_f30; s16 temp_r29; u8 var_r28; - unkStruct3* temp_r30; - unkStruct* var_r31; + unkStruct3 *temp_r30; + unkStruct *var_r31; - sp8 = (unkStruct2*)lbl_1_bss_6C->data; + sp8 = (unkStruct2 *)lbl_1_bss_6C->data; temp_r29 = fn_1_F0FC(); - temp_r30 = (unkStruct3*)lbl_1_bss_C0[temp_r29]->data; + temp_r30 = (unkStruct3 *)lbl_1_bss_C0[temp_r29]->data; switch (lbl_1_bss_6) { - case 0: - if (lbl_1_bss_8 == 0) { - Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[1], 0.0f, 7.0f, 0x40000001); - temp_r30->unk40 = temp_r30->unk34; - } - lbl_1_bss_8++; - var_f30 = lbl_1_bss_8 / 30.0f; - if (var_f30 >= 1.0f) { - var_f30 = 1.0f; - if (lbl_1_bss_B == 0) { - lbl_1_bss_B = 1; - Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[0], 0.0f, 7.0f, 0x40000001); + case 0: + if (lbl_1_bss_8 == 0) { + Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[1], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); + temp_r30->unk40 = temp_r30->unk34; } - } - temp_r30->unk34 = (temp_r30->unk40 + (var_f30 * (360.0f - temp_r30->unk40))); - var_r31 = &lbl_1_data_78[1]; // could be fn_1_6C8 - var_r28 = 0; - lbl_1_bss_4++; - var_f31 = lbl_1_bss_4 / 120.0f; - if (var_f31 > 1.0f) { - lbl_1_bss_4 = 0; - var_f31 = 1.0f; - var_r28 = 1; - } - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); - CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); - Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); - Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); - Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31); - CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31); - CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31); - CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31); - if (var_r28 != 0) { - lbl_1_bss_8 = 0; + lbl_1_bss_8++; + var_f30 = lbl_1_bss_8 / (0.5f * REFRESH_RATE_F); + if (var_f30 >= 1.0f) { + var_f30 = 1.0f; + if (lbl_1_bss_B == 0) { + lbl_1_bss_B = 1; + Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[0], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); + } + } + temp_r30->unk34 = (temp_r30->unk40 + (var_f30 * (360.0f - temp_r30->unk40))); + var_r31 = &lbl_1_data_78[1]; // could be fn_1_6C8 + var_r28 = 0; + lbl_1_bss_4++; + var_f31 = lbl_1_bss_4 / (2 * REFRESH_RATE_F); + if (var_f31 > 1.0f) { + lbl_1_bss_4 = 0; + var_f31 = 1.0f; + var_r28 = 1; + } + var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31)); + CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); + Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); + Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); + Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31); + CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31); + CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31); + CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31); + if (var_r28 != 0) { + lbl_1_bss_8 = 0; + lbl_1_bss_6++; + } + break; + case 1: + Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[5], 0.0f, 7.0f, HU3D_MOTATTR_NONE); + HuAudSStreamPlay(1); lbl_1_bss_6++; - } - break; - case 1: - Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[5], 0.0f, 7.0f, 0); - HuAudSStreamPlay(1); - lbl_1_bss_6++; - lbl_1_bss_8 = 0; - break; - case 2: - if (++lbl_1_bss_8 > 210.0f) { - lbl_1_bss_6 = 0; - return 1; - } - break; + lbl_1_bss_8 = 0; + break; + case 2: + if (++lbl_1_bss_8 > (3.5f * REFRESH_RATE)) { + lbl_1_bss_6 = 0; + return 1; + } + break; } return 0; } -void fn_1_16D8(void) { - unkStruct2* temp_r31; +void fn_1_16D8(void) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; temp_r31->unk6--; } -void fn_1_1708(void) { - unkStruct2* temp_r31; +void fn_1_1708(void) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; if (temp_r31->unk8 != -1) { MGSeqParamSet(temp_r31->unk8, 2, -1); temp_r31->unk8 = -1; @@ -376,72 +387,82 @@ void fn_1_1708(void) { } } -void fn_1_1768(void) { - unkStruct2* temp_r31; +void fn_1_1768(void) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; if (temp_r31->unk8 == -1) { - temp_r31->unk6 = 0x12C; + temp_r31->unk6 = 5 * REFRESH_RATE; temp_r31->unk8 = MGSeqCreate(1, 5, -1, -1); } } -s16 fn_1_17CC(void) { - unkStruct2* var_r31; +s16 fn_1_17CC(void) +{ + unkStruct2 *var_r31; - var_r31 = (unkStruct2*)lbl_1_bss_6C->data; + var_r31 = (unkStruct2 *)lbl_1_bss_6C->data; return var_r31->unk6; } -s16 fn_1_17F4(void) { - unkStruct2* var_r31; +s16 fn_1_17F4(void) +{ + unkStruct2 *var_r31; - var_r31 = (unkStruct2*)lbl_1_bss_6C->data; + var_r31 = (unkStruct2 *)lbl_1_bss_6C->data; return var_r31->unk8; } -void fn_1_181C(void) { - unkStruct2* temp_r31; +void fn_1_181C(void) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; if (temp_r31->unk4 == -1) { temp_r31->unk4 = MGSeqCreate(3, 0); MGSeqPosSet(temp_r31->unk4, 320.0f, 240.0f); } } -u8 fn_1_1890(void) { - unkStruct2* temp_r31; +u8 fn_1_1890(void) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; if (temp_r31->unk4 != -1) { return MGSeqStatGet(temp_r31->unk4); - } else { + } + else { return 0; } } -void fn_1_18E0(void) { - unkStruct2* temp_r31; +void fn_1_18E0(void) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; temp_r31->unk4 = MGSeqCreate(3, 1); MGSeqPosSet(temp_r31->unk4, 320.0f, 240.0f); HuAudSeqFadeOut(temp_r31->unkC, 0x64); } -u8 fn_1_1954(void) { - unkStruct2* sp8; +u8 fn_1_1954(void) +{ + unkStruct2 *sp8; - sp8 = (unkStruct2*)lbl_1_bss_6C->data; + sp8 = (unkStruct2 *)lbl_1_bss_6C->data; if ((lbl_1_bss_2 != 0) || (lbl_1_bss_1 != 0)) { return 0; - } else { + } + else { return 1; } } -void fn_1_19B0(void) { +void fn_1_19B0(void) +{ f32 temp_f29; f32 var_f28; f32 var_f27; @@ -450,31 +471,33 @@ void fn_1_19B0(void) { s16 var_r31; var_f30 = (((rand8() << 8) | rand8()) % 361); - - for (var_r31 = 1; var_r31 < 4; var_r31++, var_f30+=120.0f) { + + for (var_r31 = 1; var_r31 < 4; var_r31++, var_f30 += 120.0f) { temp_f31 = 0.01f * ((((rand8() << 8) | rand8()) % 51) + 50); temp_f29 = (temp_f31 * (200.0 * sind(var_f30))); - var_f28 = (temp_f31 * (200.0 * cosd(var_f30))); + var_f28 = (temp_f31 * (200.0 * cosd(var_f30))); var_f27 = 0.0f; Hu3DModelPosSet(lbl_1_bss_10[var_r31], temp_f29, 300.0f + var_f28, var_f27); temp_f31 = 0.1f * ((((rand8() << 8) | rand8()) % 11) + 25); Hu3DModelScaleSet(lbl_1_bss_10[var_r31], temp_f31, temp_f31, temp_f31); - Hu3DModelAttrReset(lbl_1_bss_10[var_r31], 1); - Hu3DModelAttrReset(lbl_1_bss_10[var_r31], 0x40000002); + Hu3DModelAttrReset(lbl_1_bss_10[var_r31], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_10[var_r31], HU3D_MOTATTR_PAUSE); } } -void fn_1_1CAC(void) { +void fn_1_1CAC(void) +{ s16 var_r31; - + for (var_r31 = 1; var_r31 < 4; var_r31++) { Hu3DMotionTimeSet(lbl_1_bss_10[var_r31], 0.0f); - Hu3DModelAttrSet(lbl_1_bss_10[var_r31], 1); - Hu3DModelAttrSet(lbl_1_bss_10[var_r31], 0x40000002); + Hu3DModelAttrSet(lbl_1_bss_10[var_r31], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_10[var_r31], HU3D_MOTATTR_PAUSE); } } -void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) { +void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) +{ Vec sp30; Vec sp24; GXColor sp1E; @@ -482,8 +505,8 @@ void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) { f32 temp_f29; f32 temp_f31; s16 var_r30; - unkStruct4* var_r31; - + unkStruct4 *var_r31; + for (var_r30 = 0; var_r30 < arg0; var_r30++) { temp_f31 = argB + ((((rand8() << 8) | rand8()) % 11) - 5); temp_f30 = sind(temp_f31); @@ -495,8 +518,9 @@ void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) { sp1E.r = sp1E.g = sp1E.b = 0xFF; sp1E.a = 0x80; var_r31 = fn_1_942C(arg1, &sp30, &sp24, 0.0f, &sp1E); - if (!var_r31) break; - + if (!var_r31) + break; + var_r31->unk34 = 0; var_r31->unk36 = ((rand8() << 8) | rand8()) % 2 + 2; var_r31->unk0.x = (temp_f30 * (0.1f * ((((rand8() << 8) | rand8()) % 41) + 0x28))); @@ -511,14 +535,15 @@ void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) { } } -void fn_1_2240(ModelData* data, unkStruct5* arg1, Mtx arg2) { - unkStruct4* var_r31; - GXColor* var_r30; +void fn_1_2240(ModelData *data, unkStruct5 *arg1, Mtx arg2) +{ + unkStruct4 *var_r31; + GXColor *var_r30; s16 var_r29; var_r31 = arg1->unk18; var_r30 = arg1->unk24; - + for (var_r29 = 0; var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) { if (var_r31->unk62 != 0) { var_r31->unk54.x += var_r31->unk0.x; @@ -544,52 +569,55 @@ void fn_1_2240(ModelData* data, unkStruct5* arg1, Mtx arg2) { } } -u16 fn_1_23E4(u16 arg0) { - unkStruct2* temp_r31; +u16 fn_1_23E4(u16 arg0) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; if (!temp_r31) { return 0; } return temp_r31->unk0 & arg0; } -void fn_1_2428(u16 arg0, u16 arg1) { - unkStruct2* temp_r31; +void fn_1_2428(u16 arg0, u16 arg1) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_6C->data; temp_r31->unk0 = (temp_r31->unk0 & ~arg0); temp_r31->unk0 = (temp_r31->unk0 | arg1); } -void fn_1_2470(omObjData* arg0) { - ModelData* temp_r29; - HsfObject* temp_r28; +void fn_1_2470(omObjData *arg0) +{ + ModelData *temp_r29; + HsfObject *temp_r28; f32 temp_f31; f32 var_f30; f32 var_f29; s16 temp_r26; s16 var_r30; - unkStruct2* temp_r27; + unkStruct2 *temp_r27; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, 0x10000000); + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, MEMORY_DEFAULT_NUM); temp_r27 = arg0->data; arg0->stat |= 0x100; - arg0->model[0] = Hu3DModelCreateFile(0x470008); - arg0->model[1] = Hu3DModelCreateFile(0x470009); - arg0->model[2] = Hu3DModelCreateFile(0x470000); - arg0->model[3] = Hu3DModelCreateFile(0x470002); - arg0->model[8] = Hu3DModelCreateFile(0x470003); - arg0->model[6] = Hu3DModelCreateFile(0x470004); - arg0->model[4] = Hu3DModelCreateFile(0x470005); - arg0->model[5] = Hu3DModelCreateFile(0x470006); - arg0->model[7] = Hu3DModelCreateFile(0x470007); - temp_r26 = Hu3DModelCreateFile(0x470001); - Hu3DModelAttrSet(arg0->model[0], 0x40000001); - Hu3DModelAttrSet(arg0->model[2], 0x20000); - Hu3DModelAttrSet(arg0->model[2], 0x40000002); - Hu3DModelAttrSet(temp_r26, 1); - + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x08)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x09)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x00)); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x02)); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x03)); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x04)); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x05)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x06)); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x07)); + temp_r26 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M440, 0x01)); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_HILITE); + Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(temp_r26, HU3D_ATTR_DISPOFF); + for (var_r30 = 0; var_r30 < 8; var_r30++) { Hu3DModelLayerSet(arg0->model[var_r30], 1); } @@ -598,32 +626,32 @@ void fn_1_2470(omObjData* arg0) { Hu3DModelShadowSet(arg0->model[2]); Hu3DModelShadowSet(arg0->model[3]); Hu3DModelShadowMapSet(arg0->model[0]); - + for (var_r30 = 0; var_r30 < 5; var_r30++) { - temp_f31 = (450.0 * cos(M_PI * lbl_1_data_0[var_r30] / 180.0)); - var_f29 = (450.0 * sin(M_PI * lbl_1_data_0[var_r30] / 180.0)); - Hu3DModelPosSet(arg0->model[var_r30+4], temp_f31, 0.0f, var_f29); + temp_f31 = 450.0 * cosd(lbl_1_data_0[var_r30]); + var_f29 = 450.0 * sind(lbl_1_data_0[var_r30]); + Hu3DModelPosSet(arg0->model[var_r30 + 4], temp_f31, 0.0f, var_f29); var_f30 = 90.0f - lbl_1_data_0[var_r30]; - Hu3DModelRotSet(arg0->model[var_r30+4], 0.0f, var_f30, 0.0f); - Hu3DMotionSpeedSet(arg0->model[var_r30+4], 0.0f); + Hu3DModelRotSet(arg0->model[var_r30 + 4], 0.0f, var_f30, 0.0f); + Hu3DMotionSpeedSet(arg0->model[var_r30 + 4], 0.0f); } temp_r27->unk0 = 0; temp_r27->unk1C = 5; temp_r29 = &Hu3DData[temp_r26]; temp_r28 = temp_r29->hsfData->root; lbl_1_bss_60 = temp_r28->data.childrenCount; - lbl_1_bss_64 = HuMemDirectMalloc(HEAP_DATA, lbl_1_bss_60 * 64); + lbl_1_bss_64 = HuMemDirectMalloc(HEAP_DATA, lbl_1_bss_60 * sizeof(unkStruct6)); OSReport("Koopa Object Count %d\n", temp_r29->hsfData->objectCnt); - + for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) { lbl_1_bss_64[var_r30].unk20 = 0; } - + for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) { lbl_1_bss_64[var_r30].unk4 = var_r30; fn_1_5C2C(temp_r26, temp_r28->data.children[var_r30], &lbl_1_bss_64[var_r30], 2); if (lbl_1_bss_64[var_r30].unk20 != 0) { - Hu3DModelAttrSet(lbl_1_bss_64[var_r30].unk0, 1); + Hu3DModelAttrSet(lbl_1_bss_64[var_r30].unk0, HU3D_ATTR_DISPOFF); Hu3DModelPosSet(lbl_1_bss_64[var_r30].unk0, 0.0f, 250.0f, 0.0f); lbl_1_bss_64[var_r30].unk38 = &fn_1_57B4; } @@ -631,61 +659,65 @@ void fn_1_2470(omObjData* arg0) { arg0->func = &fn_1_2A74; } -void fn_1_2A74(omObjData* object) { +void fn_1_2A74(omObjData *object) +{ fn_1_2AB4(object); fn_1_2CA8(object); fn_1_4660(object); } -void fn_1_2AB4(omObjData* object) { - unkStruct2* sp8; +void fn_1_2AB4(omObjData *object) +{ + unkStruct2 *sp8; + + sp8 = (unkStruct2 *)object->data; - sp8 = (unkStruct2*)object->data; - switch (fn_1_4EA8(0x20)) { case 0x20: fn_1_2B04(object); } } -s16 lbl_1_data_E4[2] = {0, 0}; -s16 lbl_1_data_E8[2] = {0, 0}; -s16 lbl_1_data_EC[2] = {0, 0}; -s16 lbl_1_data_F0[2] = {0, 0}; +s16 lbl_1_data_E4[2] = { 0, 0 }; +s16 lbl_1_data_E8[2] = { 0, 0 }; +s16 lbl_1_data_EC[2] = { 0, 0 }; +s16 lbl_1_data_F0[2] = { 0, 0 }; s32 lbl_1_data_F4[4] = { 20, 60, 100, 140 }; -s16 lbl_1_data_104[2] = {0, 0}; -s16 lbl_1_data_108[2] = {0, 0}; +s16 lbl_1_data_104[2] = { 0, 0 }; +s16 lbl_1_data_108[2] = { 0, 0 }; s16 lbl_1_data_10C[9] = { 0, 3, 1, 0, 2, 3, 1, 3, 2 }; -void fn_1_2B04(omObjData* object) { +void fn_1_2B04(omObjData *object) +{ f32 temp_f31; - unkStruct* temp_r31; + unkStruct *temp_r31; - temp_r31 = (unkStruct*)object->data; + temp_r31 = (unkStruct *)object->data; switch (lbl_1_data_E4[0]) { case 0: lbl_1_data_E8[0]++; - temp_f31 = lbl_1_data_E8[0] / 360.0f; + temp_f31 = lbl_1_data_E8[0] / (6 * REFRESH_RATE_F); if (temp_f31 > 1.0f) { temp_f31 = 1.0f; - Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); lbl_1_data_E8[0] = 0; lbl_1_data_E4[0] = 0; fn_1_4EEC(0x20, 0); return; } - temp_f31 = sin((M_PI * (90.0f * temp_f31)) / 180.0); + temp_f31 = sind(90.0f * temp_f31); temp_r31->center.y = (250.0f + (1750.0f * temp_f31)); } Hu3DModelPosSet(object->model[3], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z); Hu3DModelRotSet(object->model[3], temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); } -void fn_1_2CA8(omObjData* arg0) { - unkStruct2* sp8; +void fn_1_2CA8(omObjData *arg0) +{ + unkStruct2 *sp8; + + sp8 = (unkStruct2 *)arg0->data; - sp8 = (unkStruct2*)arg0->data; - switch (fn_1_4EA8(7)) { case 1: fn_1_2D28(arg0); @@ -699,51 +731,52 @@ void fn_1_2CA8(omObjData* arg0) { } } -void fn_1_2D28(omObjData* object) { +void fn_1_2D28(omObjData *object) +{ f32 var_f31; - unkStruct* temp_r31; + unkStruct *temp_r31; - temp_r31 = (unkStruct*)object->data; + temp_r31 = (unkStruct *)object->data; switch (lbl_1_data_EC[0]) { case 0x0: temp_r31->center.x = temp_r31->center.z = 0.0f; temp_r31->center.y = 2000.0f; temp_r31->rot.x = temp_r31->rot.y = temp_r31->rot.z = 0.0f; - Hu3DModelAttrReset(object->model[2], 1); - Hu3DModelAttrReset(object->model[3], 1); - Hu3DModelAttrSet(object->model[3], 0x40000002); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_MOTATTR_PAUSE); Hu3DMotionTimeSet(object->model[3], 0.0f); - lbl_1_data_EC[0] ++; + lbl_1_data_EC[0]++; lbl_1_data_F0[0] = 0; HuAudFXPlay(0x709); HuAudFXPlay(0x711); break; case 0x1: - lbl_1_data_F0[0] ++; - var_f31 = lbl_1_data_F0[0] / 120.0f; + lbl_1_data_F0[0]++; + var_f31 = lbl_1_data_F0[0] / (2 * REFRESH_RATE_F); if (var_f31 > 1.0f) { var_f31 = 1.0f; lbl_1_data_F0[0] = 0; - lbl_1_data_F0[1] = 0xF; + lbl_1_data_F0[1] = REFRESH_RATE / 4; lbl_1_data_EC[1] = (lbl_1_data_EC[0] + 1); lbl_1_data_EC[0] = 0x63; } - if (110.0f == lbl_1_data_F0[0]) { + if ((11 * REFRESH_RATE_F / 6) == lbl_1_data_F0[0]) { HuAudFXPlay(0x70A); } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->center.y = (2000.0f + (-1750.0f * var_f31)); break; case 0x2: if (lbl_1_data_F0[0] == 0) { HuAudFXPlay(0x713); } - lbl_1_data_F0[0] ++; - var_f31 = lbl_1_data_F0[0] / 60.0f; + lbl_1_data_F0[0]++; + var_f31 = lbl_1_data_F0[0] / REFRESH_RATE_F; if (var_f31 > 1.0f) { var_f31 = 1.0f; lbl_1_data_F0[0] = 0; - lbl_1_data_F0[1] = 0xF; + lbl_1_data_F0[1] = REFRESH_RATE / 4; lbl_1_data_EC[1] = lbl_1_data_EC[0] + 1; lbl_1_data_EC[0] = 0x63; HuAudFXPlay(0x714); @@ -751,12 +784,12 @@ void fn_1_2D28(omObjData* object) { temp_r31->rot.y = (360.0f * var_f31); break; case 0x3: - Hu3DModelAttrReset(object->model[3], 0x40000002); + Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_PAUSE); Hu3DMotionSpeedSet(object->model[3], 2.0f); if (lbl_1_data_F0[0] == 0) { HuAudFXPlay(0x711); } - if (++lbl_1_data_F0[0] > 12.0) { + if (++lbl_1_data_F0[0] > (0.2 * REFRESH_RATE)) { if (fn_1_4EA8(0x40) != 0) { fn_1_4EEC(0x40, 0); fn_1_F228(); @@ -769,16 +802,16 @@ void fn_1_2D28(omObjData* object) { break; case 0x4: lbl_1_data_F0[0]++; - var_f31 = lbl_1_data_F0[0] / 360.0f; + var_f31 = lbl_1_data_F0[0] / (6 * REFRESH_RATE_F); if (var_f31 > 1.0f) { var_f31 = 1.0f; - Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); lbl_1_data_F0[0] = 0; lbl_1_data_EC[0] = 0; fn_1_4EEC(7, 2); return; } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->center.y = (250.0f + (1750.0f * var_f31)); break; case 0x63: @@ -795,10 +828,11 @@ void fn_1_2D28(omObjData* object) { return; } -void fn_1_33D4(omObjData* object) { - unkStruct2* sp10; +void fn_1_33D4(omObjData *object) +{ + unkStruct2 *sp10; - sp10 = (unkStruct2*)object->data; + sp10 = (unkStruct2 *)object->data; switch (lbl_1_data_EC[0]) { case 0: fn_1_1D54(30.0f, 500.0f, 200.0f, 12, 135.0f, lbl_1_bss_10[0]); @@ -809,48 +843,50 @@ void fn_1_33D4(omObjData* object) { } } -void fn_1_3DD8(omObjData* object) { - unkStruct* sp8; +void fn_1_3DD8(omObjData *object) +{ + unkStruct *sp8; f32 var_f29; f32 var_f28; f32 var_f27; f32 var_f26; f32 var_f30; f32 var_f31; - unkStruct2* var_r25; - omObjData** var_r24; + unkStruct2 *var_r25; + omObjData **var_r24; s16 var_r29; s16 var_r31; s32 var_r23; - s32* var_r26; - unkStruct2* var_r28; + s32 *var_r26; + unkStruct2 *var_r28; s16 var_r27; - var_r25 = (unkStruct2*)lbl_1_bss_6C->data; - sp8 = (unkStruct*)object->data; + var_r25 = (unkStruct2 *)lbl_1_bss_6C->data; + sp8 = (unkStruct *)object->data; switch (lbl_1_data_EC[0]) { case 0: - Hu3DModelAttrReset(object->model[2], 0x40000002); + Hu3DModelAttrReset(object->model[2], HU3D_MOTATTR_PAUSE); lbl_1_data_EC[0]++; return; case 1: if (++lbl_1_data_F0[0] == 0x1E) { fn_1_4EEC(0x100, 0x100); - } else if (lbl_1_data_F0[0] == 0x32) { + } + else if (lbl_1_data_F0[0] == 0x32) { fn_1_EE78(); } var_f26 = Hu3DMotionMaxTimeGet(object->model[2]); if (Hu3DMotionTimeGet(object->model[2]) >= var_f26) { - Hu3DModelAttrSet(object->model[2], 1); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { - Hu3DModelAttrReset(lbl_1_bss_64[var_r31].unk0, 1); + Hu3DModelAttrReset(lbl_1_bss_64[var_r31].unk0, HU3D_ATTR_DISPOFF); fn_1_57B4(&lbl_1_bss_64[var_r31]); } lbl_1_data_F0[0] = 0; lbl_1_data_EC[0]++; HuAudFXPlay(0x70C); } - + for (var_r31 = 0; var_r31 < 4U; var_r31++) { if (lbl_1_data_F0[0] == lbl_1_data_F4[var_r31] * 2) { HuAudFXPlay(0x70D); @@ -859,7 +895,7 @@ void fn_1_3DD8(omObjData* object) { return; case 2: var_f30 = (((rand8() << 8) | rand8()) % 361); - + for (var_r29 = 1; var_r29 < 4; var_r29++, var_f30 += 120.0f) { var_f31 = 0.01f * ((((rand8() << 8) | rand8()) % 51) + 0x32); var_f27 = (var_f31 * (200.0 * sind(var_f30))); @@ -868,8 +904,8 @@ void fn_1_3DD8(omObjData* object) { Hu3DModelPosSet(lbl_1_bss_10[var_r29], var_f27, 300.0f + var_f28, var_f29); var_f31 = 0.1f * ((((rand8() << 8) | rand8()) % 11) + 0x19); Hu3DModelScaleSet(lbl_1_bss_10[var_r29], var_f31, var_f31, var_f31); - Hu3DModelAttrReset(lbl_1_bss_10[var_r29], 1); - Hu3DModelAttrReset(lbl_1_bss_10[var_r29], 0x40000002); + Hu3DModelAttrReset(lbl_1_bss_10[var_r29], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_10[var_r29], HU3D_MOTATTR_PAUSE); } fn_1_45BC(object); fn_1_4EEC(7, 5); @@ -878,7 +914,7 @@ void fn_1_3DD8(omObjData* object) { var_r24 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); for (var_r31 = 0; var_r31 < 4; var_r31++) { if (fn_1_F4FC(var_r31) >= 0) { - var_r28 = (unkStruct2*)var_r24[fn_1_F4FC(var_r31)]->data; + var_r28 = (unkStruct2 *)var_r24[fn_1_F4FC(var_r31)]->data; switch (var_r28->unk0 & 0xF) { case 6: omVibrate(var_r28->unk4, 0x30, 0xC, 0); @@ -894,13 +930,13 @@ void fn_1_3DD8(omObjData* object) { if (lbl_1_bss_64[0].unk3C == 0) { for (var_r27 = 1; var_r27 < 4; var_r27++) { Hu3DMotionTimeSet(lbl_1_bss_10[var_r27], 0.0f); - Hu3DModelAttrSet(lbl_1_bss_10[var_r27], 1); - Hu3DModelAttrSet(lbl_1_bss_10[var_r27], 0x40000002); + Hu3DModelAttrSet(lbl_1_bss_10[var_r27], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_10[var_r27], HU3D_MOTATTR_PAUSE); } - Hu3DModelAttrSet(object->model[2], 0x40000002); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_PAUSE); Hu3DMotionTimeSet(object->model[2], 0.0f); for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { - Hu3DModelAttrSet(lbl_1_bss_64[var_r31].unk0, 1); + Hu3DModelAttrSet(lbl_1_bss_64[var_r31].unk0, HU3D_ATTR_DISPOFF); } fn_1_4558(object); if (lbl_1_data_1D8 >= 0) { @@ -909,7 +945,8 @@ void fn_1_3DD8(omObjData* object) { fn_1_4EEC(0x40, 0x40); fn_1_4EEC(7, 1); HuAudFXPlay(0x70E); - } else { + } + else { fn_1_4EEC(7, 2); var_r26 = lbl_1_bss_6C->data; var_r26[0] &= 0xFFFFFFF8; @@ -920,7 +957,8 @@ void fn_1_3DD8(omObjData* object) { } } -void fn_1_4558(omObjData* object) { +void fn_1_4558(omObjData *object) +{ s16 var_r31; for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { @@ -928,21 +966,23 @@ void fn_1_4558(omObjData* object) { } } -void fn_1_45BC(omObjData* object) { +void fn_1_45BC(omObjData *object) +{ Vec sp8; s16 var_r31; sp8.x = 0.0f; sp8.y = 250.0f; sp8.z = 0.0f; - + for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { fn_1_5010(&lbl_1_bss_64[var_r31], &sp8, 1500.0f); } } -void fn_1_4660(omObjData* object) { - void* sp8; +void fn_1_4660(omObjData *object) +{ + void *sp8; s16 temp_r3; sp8 = object->data; @@ -958,18 +998,19 @@ void fn_1_4660(omObjData* object) { } } -void fn_1_46E0(omObjData* object) { +void fn_1_46E0(omObjData *object) +{ f32 var_f31; s16 temp_r0; s16 var_r30; s32 temp_r28; - unkStruct2* temp_r31; + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)object->data; + temp_r31 = (unkStruct2 *)object->data; switch (lbl_1_data_104[0]) { case 0x0: fn_1_4E00(-1, 0.0f); - + for (var_r30 = 0; var_r30 < 5; var_r30++) { Hu3DMotionTimeSet(object->model[var_r30 + 4], 0.0f); lbl_1_data_14[var_r30] = 0; @@ -981,7 +1022,7 @@ void fn_1_46E0(omObjData* object) { break; case 0x1: lbl_1_data_108[0]++; - var_f31 = lbl_1_data_108[0] / 60.0f; + var_f31 = lbl_1_data_108[0] / REFRESH_RATE_F; if (var_f31 > 1.0f) { var_f31 = 1.0f; lbl_1_data_108[0] = 0; @@ -989,7 +1030,7 @@ void fn_1_46E0(omObjData* object) { fn_1_4EEC(0x18, 0x10); HuAudFXPlay(0x70F); } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->unk24 = (150.0f * var_f31); break; case 0x63: @@ -999,7 +1040,7 @@ void fn_1_46E0(omObjData* object) { } break; } - + for (var_r30 = 0; var_r30 < temp_r31->unk1C; var_r30++) { Hu3DData[object->model[var_r30 + 4]].pos.y = temp_r31->unk24; lbl_1_data_14[var_r30] = 1; @@ -1007,13 +1048,14 @@ void fn_1_46E0(omObjData* object) { Hu3DData[object->model[1]].pos.y = temp_r31->unk24; } -void fn_1_4A20(omObjData* object) { - ModelData* temp_r31; +void fn_1_4A20(omObjData *object) +{ + ModelData *temp_r31; s16 temp_r28; - unkStruct2* temp_r30; + unkStruct2 *temp_r30; f32 var_f31; - temp_r30 = (unkStruct2*)object->data; + temp_r30 = (unkStruct2 *)object->data; temp_r28 = temp_r30->unk2E; if (temp_r28 != -1) { temp_r31 = &Hu3DData[object->model[temp_r28 + 4]]; @@ -1024,34 +1066,36 @@ void fn_1_4A20(omObjData* object) { temp_r31->unk_64 = 0.0f; } } - } else { + } + else { var_f31 = Hu3DMotionMaxTimeGet(object->model[temp_r28 + 4]); temp_r31->unk_64 = var_f31 * temp_r30->unk30; } } } -void fn_1_4B44(omObjData* object) { +void fn_1_4B44(omObjData *object) +{ f32 var_f31; s16 var_r30; - unkStruct2* temp_r31; + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)object->data; + temp_r31 = (unkStruct2 *)object->data; switch (lbl_1_data_104[0]) { case 0: lbl_1_data_108[0]++; - var_f31 = lbl_1_data_108[0] / 60.0f; + var_f31 = lbl_1_data_108[0] / REFRESH_RATE_F; if (var_f31 > 1.0f) { var_f31 = 1.0f; lbl_1_data_108[0] = 0; lbl_1_data_104[0]++; } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->unk24 = (150.0f + (-150.0f * var_f31)); break; case 1: lbl_1_data_108[0]++; - var_f31 = (lbl_1_data_108[0] / 30.0f); + var_f31 = (lbl_1_data_108[0] / (0.5f * REFRESH_RATE_F)); if (var_f31 >= 1.0f) { lbl_1_data_108[0] = 0; lbl_1_data_104[0] = 0; @@ -1062,7 +1106,7 @@ void fn_1_4B44(omObjData* object) { } break; } - + for (var_r30 = 0; var_r30 < temp_r31->unk1C; var_r30++) { Hu3DData[object->model[var_r30 + 4]].pos.y = temp_r31->unk24; lbl_1_data_14[var_r30] = 1; @@ -1070,25 +1114,28 @@ void fn_1_4B44(omObjData* object) { Hu3DData[object->model[1]].pos.y = temp_r31->unk24; } -void fn_1_4E00(s16 arg0, f32 arg8) { - unkStruct2* temp_r31; +void fn_1_4E00(s16 arg0, f32 arg8) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_68->data; temp_r31->unk2E = arg0; temp_r31->unk30 = arg8; } -s16 fn_1_4E2C(void) { - unkStruct2* var_r31; +s16 fn_1_4E2C(void) +{ + unkStruct2 *var_r31; - var_r31 = (unkStruct2*)lbl_1_bss_68->data; + var_r31 = (unkStruct2 *)lbl_1_bss_68->data; return var_r31->unk1C; } -s16 fn_1_4E54(s16 arg0) { - unkStruct2* temp_r31; +s16 fn_1_4E54(s16 arg0) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_68->data; if (arg0 == -1) { return temp_r31->unk2C; } @@ -1098,27 +1145,30 @@ s16 fn_1_4E54(s16 arg0) { return 0; } -u16 fn_1_4EA8(u16 arg0) { - unkStruct2* temp_r31; +u16 fn_1_4EA8(u16 arg0) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_68->data; if (!temp_r31) { return 0; } return temp_r31->unk0 & arg0; } -void fn_1_4EEC(u16 arg0, u16 arg1) { - unkStruct2* temp_r31; +void fn_1_4EEC(u16 arg0, u16 arg1) +{ + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_68->data; temp_r31->unk0 &= ~arg0; temp_r31->unk0 |= arg1; } -void fn_1_4F34(unkStruct6* arg0) { +void fn_1_4F34(unkStruct6 *arg0) +{ s16 var_r30; - unkStruct8* var_r31; + unkStruct8 *var_r31; var_r31 = arg0->unk24; if (arg0->unk20 != 0) { @@ -1135,21 +1185,22 @@ void fn_1_4F34(unkStruct6* arg0) { } } -void fn_1_5010(unkStruct6* arg0, Vec* arg1, f32 arg8) { +void fn_1_5010(unkStruct6 *arg0, Vec *arg1, f32 arg8) +{ Vec sp14; - ModelData* temp_r29; + ModelData *temp_r29; f32 var_f25; f32 var_f28; f32 var_f27; f32 var_f26; s32 var_r27; - unkStruct8* var_r31; - + unkStruct8 *var_r31; + var_r31 = arg0->unk24; if (arg0->unk20 != 0) { temp_r29 = &Hu3DData[arg0->unk0]; arg0->unk2 |= 4; - + for (var_r27 = 0; var_r27 < arg0->unk20; var_r27++, var_r31++) { sp14.x = (var_r31->unk7C.x + temp_r29->pos.x) - arg1->x; sp14.y = (var_r31->unk7C.y + temp_r29->pos.y) - arg1->y; @@ -1158,7 +1209,7 @@ void fn_1_5010(unkStruct6* arg0, Vec* arg1, f32 arg8) { sp14.x /= var_f25; sp14.y /= var_f25; sp14.z /= var_f25; - + var_f25 = (1.0f - (var_f25 / arg8)); if (var_f25 < 0.0f) { var_f25 = 0.0f; @@ -1179,18 +1230,19 @@ void fn_1_5010(unkStruct6* arg0, Vec* arg1, f32 arg8) { } } -void fn_1_57B4(unkStruct6* arg0) { +void fn_1_57B4(unkStruct6 *arg0) +{ Mtx sp14; Vec sp8; s16 var_r29; - Vec* temp_r26; + Vec *temp_r26; s32 var_r27; s32 var_r28; - unkStruct8* var_r31; + unkStruct8 *var_r31; var_r31 = arg0->unk24; temp_r26 = arg0->unk10; - + for (var_r27 = 0; var_r27 < arg0->unk20; var_r27++, var_r31++) { var_r31->unkAC.y = (var_r31->unkAC.y - var_r31->unkC4.y); var_r31->unk94.x = (var_r31->unk94.x + var_r31->unkAC.x); @@ -1215,7 +1267,8 @@ void fn_1_57B4(unkStruct6* arg0) { var_r31->unkAC.z = 0.0f; var_r31->unkB8.x = 0.0f; var_r31->unkB8.z = 0.0f; - } else { + } + else { var_r31->unkAC.x *= 0.5f; var_r31->unkAC.y = -(0.3f * var_r31->unkAC.y); var_r31->unkAC.z *= 0.5f; @@ -1223,54 +1276,56 @@ void fn_1_57B4(unkStruct6* arg0) { var_r31->unkB8.z *= 0.5f; } } - PSMTXScale(sp14, var_r31->unk88.x, var_r31->unk88.y, var_r31->unk88.z); + MTXScale(sp14, var_r31->unk88.x, var_r31->unk88.y, var_r31->unk88.z); mtxTransCat(sp14, -var_r31->unk7C.x, -var_r31->unk7C.y, -var_r31->unk7C.z); mtxRotCat(sp14, var_r31->unkA0.x, var_r31->unkA0.y, var_r31->unkA0.z); mtxTransCat(sp14, var_r31->unk94.x + var_r31->unk7C.x, var_r31->unk94.y + var_r31->unk7C.y, var_r31->unk94.z + var_r31->unk7C.z); - + for (var_r28 = 0; var_r28 < 3; var_r28++) { if ((arg0->unk2 & 1) != 0) { var_r29 = var_r31->unk0[var_r28].unk0; - } else { + } + else { var_r29 = var_r31->unk18[var_r28]; } - PSMTXMultVec(sp14, &temp_r26[var_r29], &sp8); + MTXMultVec(sp14, &temp_r26[var_r29], &sp8); arg0->unkC[var_r29].x = sp8.x; arg0->unkC[var_r29].y = sp8.y; arg0->unkC[var_r29].z = sp8.z; } if ((arg0->unk2 & 2) != 0) { var_r29 = var_r31->unk1E; - PSMTXMultVec(sp14, &temp_r26[var_r29], &sp8); + MTXMultVec(sp14, &temp_r26[var_r29], &sp8); arg0->unkC[var_r29].x = sp8.x; arg0->unkC[var_r29].y = sp8.y; arg0->unkC[var_r29].z = sp8.z; } } if ((arg0->unk2 & 4) != 0) { - if (++arg0->unk3E > 0x50) { + if (++arg0->unk3E > (4 * REFRESH_RATE / 3)) { arg0->unk3C = ((arg0->unk3C - 10) < 0) ? 0 : arg0->unk3C - 10; } } DCFlushRangeNoSync(arg0->unkC, arg0->unk8 * 0xC); } -void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { +void fn_1_5C2C(s16 arg0, HsfObject *arg1, unkStruct6 *arg2, u16 arg3) +{ Mtx sp68; Vec sp44[3]; Vec sp38; Vec sp2C; - ModelData* sp1C; + ModelData *sp1C; GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0xFF }; - Vec* var_r21; - Vec* var_r19; + Vec *var_r21; + Vec *var_r19; s16 var_r20; - HsfVector2f* var_r22; + HsfVector2f *var_r22; s16 var_r24; s16 var_r23; - HsfTransform* var_r25; + HsfTransform *var_r25; s16 var_r27; - ModelData* var_r29; + ModelData *var_r29; s16 var_r28; s16 var_r30; @@ -1281,10 +1336,10 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { arg2->unk0 = var_r30; Hu3DModelLayerSet(var_r30, 1); var_r29 = &Hu3DData[var_r30]; - var_r29->unk_120 = (ParticleData* ) arg2; + var_r29->unk_120 = (ParticleData *)arg2; var_r29->unk_58.x = var_r29->unk_58.z = var_r29->unk_58.y = 1.0f; arg2->unk2 = arg3; - arg2->unk28 = &arg1->data.material[((s16*)(arg1->data.face->data))[1] & 0xFFF]; + arg2->unk28 = &arg1->data.material[((s16 *)(arg1->data.face->data))[1] & 0xFFF]; arg2->unk2C = arg1->data.attribute; arg2->unk38 = NULL; arg2->unk3C = 0xFF; @@ -1298,27 +1353,29 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { if (arg2->unk28->numAttrs != 0) { arg2->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg1->data.st->count * 8, var_r29->unk_48); var_r22 = arg1->data.st->data; - } else { + } + else { arg2->unk1C = NULL; var_r22 = NULL; } var_r25 = &arg1->data.base; - PSMTXScale(sp68, var_r25->scale.x, var_r25->scale.y, var_r25->scale.z); + MTXScale(sp68, var_r25->scale.x, var_r25->scale.y, var_r25->scale.z); mtxRotCat(sp68, var_r25->rot.x, var_r25->rot.y, var_r25->rot.z); mtxTransCat(sp68, var_r25->pos.x, var_r25->pos.y, var_r25->pos.z); for (var_r30 = 0; var_r30 < arg2->unk20; var_r30++) { sp2C.x = sp2C.y = sp2C.z = 0.0f; - + for (var_r28 = 0; var_r28 < 3; var_r28++) { if ((arg2->unk2 & 1) != 0) { var_r23 = arg2->unk24[var_r30].unk0[var_r28].unk0; var_r27 = var_r23; - } else { + } + else { var_r27 = arg2->unk24[var_r30].unk18[var_r28]; var_r23 = arg2->unk24[var_r30].unk0[var_r28].unk0; } - PSMTXMultVec(sp68, &((Vec*)(arg1->data.vertex->data))[var_r23], &sp38); + MTXMultVec(sp68, &((Vec *)(arg1->data.vertex->data))[var_r23], &sp38); arg2->unkC[var_r27] = sp38; sp44[var_r28] = arg2->unkC[var_r27]; arg2->unk14[var_r27] = arg2->unk18[var_r23]; @@ -1353,13 +1410,14 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { GXBeginDisplayList(var_r19, 0x20000); if ((arg2->unk2 & 2) != 0) { GXBegin(GX_TRIANGLES, GX_VTXFMT0, (arg2->unk20 * 0xC)); - + for (var_r30 = 0; var_r30 < arg2->unk20; var_r30++) { - + for (var_r28 = 0; var_r28 < 3; var_r28++) { if ((arg2->unk2 & 1) != 0) { var_r27 = arg2->unk24[var_r30].unk0[var_r28].unk0; - } else { + } + else { var_r27 = arg2->unk24[var_r30].unk18[var_r28]; } GXPosition1x16(var_r27); @@ -1368,7 +1426,7 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { GXTexCoord1x16(arg2->unk24[var_r30].unk0[var_r28].unk6); } } - + for (var_r24 = 0; var_r24 < 9; var_r24++) { if (var_r20 < arg2->unk24[var_r30].unk20[var_r24].unk0) { var_r20 = arg2->unk24[var_r30].unk20[var_r24].unk0; @@ -1380,13 +1438,15 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { } } } - } else { + } + else { GXBegin(GX_TRIANGLES, GX_VTXFMT0, (arg2->unk20 * 3)); for (var_r30 = 0; var_r30 < arg2->unk20; var_r30++) { for (var_r28 = 0; var_r28 < 3; var_r28++) { if ((arg2->unk2 & 1) != 0) { var_r27 = arg2->unk24[var_r30].unk0[var_r28].unk0; - } else { + } + else { var_r27 = arg2->unk24[var_r30].unk18[var_r28]; } GXPosition1x16(var_r27); @@ -1406,28 +1466,29 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { } } -void fn_1_6554(unkStruct6* arg0, HsfObject* arg1) { +void fn_1_6554(unkStruct6 *arg0, HsfObject *arg1) +{ Vec sp20[3]; f32 spC[5]; f32 var_f28; - HsfBuffer* temp_r26; + HsfBuffer *temp_r26; s16 var_r28; s16 var_r29; - unkStruct10* var_r30; + unkStruct10 *var_r30; temp_r26 = arg1->data.face; - + for (var_r28 = 0; var_r28 < arg1->data.vertex->count; var_r28++) { arg0->unk18[var_r28].x = 0.0f; arg0->unk18[var_r28].y = 0.0f; arg0->unk18[var_r28].z = 0.0f; } - var_r30 = (unkStruct10*)temp_r26->data; - + var_r30 = (unkStruct10 *)temp_r26->data; + for (var_r28 = 0; var_r28 < temp_r26->count; var_r28++, var_r30++) { - sp20[0] = ((Vec*)(arg1->data.vertex->data))[var_r30->unk4[0].unk0]; - sp20[1] = ((Vec*)(arg1->data.vertex->data))[var_r30->unk4[1].unk0]; - sp20[2] = ((Vec*)(arg1->data.vertex->data))[var_r30->unk4[2].unk0]; + sp20[0] = ((Vec *)(arg1->data.vertex->data))[var_r30->unk4[0].unk0]; + sp20[1] = ((Vec *)(arg1->data.vertex->data))[var_r30->unk4[1].unk0]; + sp20[2] = ((Vec *)(arg1->data.vertex->data))[var_r30->unk4[2].unk0]; fn_1_91A4(&sp20[0], &sp20[1], &sp20[2], spC); spC[0] = -spC[0]; spC[1] = -spC[1]; @@ -1461,7 +1522,7 @@ void fn_1_6554(unkStruct6* arg0, HsfObject* arg1) { break; } } - + for (var_r28 = 0; var_r28 < arg1->data.vertex->count; var_r28++) { sp20[0].x = arg0->unk18[var_r28].x; sp20[0].y = arg0->unk18[var_r28].y; @@ -1473,24 +1534,25 @@ void fn_1_6554(unkStruct6* arg0, HsfObject* arg1) { } } -void fn_1_6B58(unkStruct6* arg0, HsfObject* arg1) { - HsfBuffer* temp_r25; +void fn_1_6B58(unkStruct6 *arg0, HsfObject *arg1) +{ + HsfBuffer *temp_r25; s32 var_r28; s32 var_r30; u8 var_r24; - ModelData* var_r22; - unkStruct8* var_r31; + ModelData *var_r22; + unkStruct8 *var_r31; unkStruct11 *temp_r26; - unkStruct10* var_r29; + unkStruct10 *var_r29; var_r22 = &Hu3DData[arg0->unk0]; temp_r25 = arg1->data.face; var_r24 = ((arg0->unk2 & 1) != 0) ? 1 : 0; arg0->unk20 = 0; - + var_r28 = 0; - var_r29 = (unkStruct10*)temp_r25->data; - for (;var_r28 < temp_r25->count;var_r28++, var_r29++) { + var_r29 = (unkStruct10 *)temp_r25->data; + for (; var_r28 < temp_r25->count; var_r28++, var_r29++) { switch (var_r29->unk0 & 7) { case 2: arg0->unk20 += 1; @@ -1507,13 +1569,14 @@ void fn_1_6B58(unkStruct6* arg0, HsfObject* arg1) { var_r31 = arg0->unk24; if (var_r24 != 0) { var_r30 = arg1->data.vertex->count; - } else { + } + else { var_r30 = 0; } - + var_r28 = 0; - var_r29 = (unkStruct10*)temp_r25->data;\ - for (;var_r28 < temp_r25->count; var_r28++, var_r29++) { + var_r29 = (unkStruct10 *)temp_r25->data; + for (; var_r28 < temp_r25->count; var_r28++, var_r29++) { switch (var_r29->unk0 & 7) { case 2: var_r31->unk0[0] = var_r29->unk4[0]; @@ -1562,21 +1625,24 @@ void fn_1_6B58(unkStruct6* arg0, HsfObject* arg1) { var_r31++; var_r28 = 0; temp_r26 = var_r29->unk20; - for (;var_r28 < var_r29->unk1C; var_r28++) { + for (; var_r28 < var_r29->unk1C; var_r28++) { if (var_r28 == 0) { var_r31->unk0[0] = var_r31->unk0[1]; var_r31->unk0[1] = var_r31->unk0[2]; var_r31->unk0[2] = temp_r26[0]; - } else if (var_r28 == 1) { + } + else if (var_r28 == 1) { var_r31->unk0[0] = var_r31->unk0[2]; var_r31->unk0[1] = temp_r26[1]; var_r31->unk0[2] = temp_r26[0]; - } else { + } + else { if ((var_r28 % 2) != 0) { var_r31->unk0[0] = temp_r26[var_r28 - 2]; var_r31->unk0[1] = temp_r26[var_r28 - 0]; var_r31->unk0[2] = temp_r26[var_r28 - 1]; - } else { + } + else { var_r31->unk0[0] = temp_r26[var_r28 - 2]; var_r31->unk0[1] = temp_r26[var_r28 - 1]; var_r31->unk0[2] = temp_r26[var_r28 - 0]; @@ -1596,24 +1662,26 @@ void fn_1_6B58(unkStruct6* arg0, HsfObject* arg1) { arg0->unk8 = var_r30; } -void fn_1_71FC(unkStruct6* arg0, Vec* arg1, s16 arg2, Vec arg3) { +void fn_1_71FC(unkStruct6 *arg0, Vec *arg1, s16 arg2, Vec arg3) +{ Vec sp40; Vec sp34; Vec sp28[3]; Vec sp1C; - unkStruct8* temp_r30 = &arg0->unk24[arg2]; + unkStruct8 *temp_r30 = &arg0->unk24[arg2]; s16 sp10[3][2] = { { 0, 1 }, { 0, 2 }, { 1, 2 } }; f32 var_f31; f32 var_f30; f32 var_f29; f32 var_f27; s16 var_r31; - + if ((arg0->unk2 & 1) != 0) { sp28[0] = arg0->unkC[temp_r30->unk0[0].unk0]; sp28[1] = arg0->unkC[temp_r30->unk0[1].unk0]; sp28[2] = arg0->unkC[temp_r30->unk0[2].unk0]; - } else { + } + else { sp28[0] = arg0->unkC[temp_r30->unk18[0]]; sp28[1] = arg0->unkC[temp_r30->unk18[1]]; sp28[2] = arg0->unkC[temp_r30->unk18[2]]; @@ -1621,22 +1689,18 @@ void fn_1_71FC(unkStruct6* arg0, Vec* arg1, s16 arg2, Vec arg3) { sp1C.x = temp_r30->unk68[0]; sp1C.y = temp_r30->unk68[1]; sp1C.z = temp_r30->unk68[2]; - PSVECNormalize(&sp1C, &sp1C); + VECNormalize(&sp1C, &sp1C); var_f31 = var_f30 = var_f29 = 0.0f; - - for (var_r31 = 0; var_r31 < 3; var_r31++) { - var_f31 += (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x < 0.0f) - ? -(sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x) - : (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x); - - - var_f30 += (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y < 0.0f) - ? -(sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y) - : (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y); - var_f29 += (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z < 0.0f) - ? -(sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z) - : (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 += (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x < 0.0f) ? -(sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x) + : (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x); + + var_f30 += (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y < 0.0f) ? -(sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y) + : (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y); + + var_f29 += (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z < 0.0f) ? -(sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z) + : (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z); } var_f31 *= 0.3333f; var_f30 *= 0.3333f; @@ -1650,16 +1714,17 @@ void fn_1_71FC(unkStruct6* arg0, Vec* arg1, s16 arg2, Vec arg3) { arg1->z = (sp28[0].z - (sp1C.z * var_f27)); } -void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) { +void fn_1_7934(unkStruct6 *arg0, unkStruct8 *arg1, Vec *arg2) +{ Vec sp2C[3]; f32 sp18[5]; s16 sp10[4]; s16 sp8[4]; s16 var_r28; - Vec* temp_r30; - Vec* temp_r4; - Vec* temp_r4_2; - Vec* temp_r4_3; + Vec *temp_r30; + Vec *temp_r4; + Vec *temp_r4_2; + Vec *temp_r4_3; arg1->unk88.x = arg1->unk88.y = arg1->unk88.z = 1.0f; arg1->unk94.x = arg1->unk94.y = arg1->unk94.z = 0.0f; @@ -1667,12 +1732,13 @@ void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) { arg1->unkAC.x = arg1->unkAC.y = arg1->unkAC.z = 0.0f; arg1->unkB8.x = arg1->unkB8.y = arg1->unkB8.z = 0.0f; arg1->unkC4.x = arg1->unkC4.y = arg1->unkC4.z = 0.0f; - + if ((arg0->unk2 & 2) != 0) { arg2->x *= 0.25f; arg2->y *= 0.25f; arg2->z *= 0.25f; - } else { + } + else { arg2->x /= 3.0f; arg2->y /= 3.0f; arg2->z /= 3.0f; @@ -1685,7 +1751,8 @@ void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) { sp10[0] = arg1->unk0[0].unk0; sp10[1] = arg1->unk0[1].unk0; sp10[2] = arg1->unk0[2].unk0; - } else { + } + else { sp10[0] = arg1->unk18[0]; sp10[1] = arg1->unk18[1]; sp10[2] = arg1->unk18[2]; @@ -1695,14 +1762,14 @@ void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) { sp8[1] = arg1->unk0[1].unk6; sp8[2] = arg1->unk0[2].unk6; sp8[3] = arg1->unk0[0].unk6; - + for (var_r28 = 0; var_r28 < 9; var_r28++) { arg1->unk20[var_r28].unk0 = sp10[lbl_1_data_10C[var_r28]]; arg1->unk20[var_r28].unk6 = sp8[lbl_1_data_10C[var_r28]]; } temp_r30 = &arg0->unk14[arg1->unk1E]; temp_r30->x = temp_r30->y = temp_r30->z = 0.0f; - + for (var_r28 = 0; var_r28 < 3; var_r28++) { sp2C[0] = arg0->unkC[sp10[lbl_1_data_10C[var_r28]]]; sp2C[1] = arg0->unkC[sp10[lbl_1_data_10C[var_r28 + 1]]]; @@ -1718,7 +1785,8 @@ void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) { } } -void fn_1_7D60(unkStruct15* arg0, unkStruct13* arg1, s16 arg2) { +void fn_1_7D60(unkStruct15 *arg0, unkStruct13 *arg1, s16 arg2) +{ GXTexObj sp1C; GXTlutObj sp10; s32 sp8; @@ -1750,7 +1818,8 @@ void fn_1_7D60(unkStruct15* arg0, unkStruct13* arg1, s16 arg2) { GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB565, arg0->unkE); GXLoadTlut(&sp10, arg2); GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C4, var_r27, var_r26, GX_FALSE, arg2); - } else { + } + else { GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB565, arg0->unkE); GXLoadTlut(&sp10, arg2); GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C8, var_r27, var_r26, GX_FALSE, arg2); @@ -1761,7 +1830,8 @@ void fn_1_7D60(unkStruct15* arg0, unkStruct13* arg1, s16 arg2) { GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB5A3, arg0->unkE); GXLoadTlut(&sp10, arg2); GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C4, var_r27, var_r26, GX_FALSE, arg2); - } else { + } + else { GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB5A3, arg0->unkE); GXLoadTlut(&sp10, arg2); GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C8, var_r27, var_r26, GX_FALSE, arg2); @@ -1776,20 +1846,21 @@ void fn_1_7D60(unkStruct15* arg0, unkStruct13* arg1, s16 arg2) { return; } -void fn_1_806C(ModelData* arg0, Mtx arg1) { +void fn_1_806C(ModelData *arg0, Mtx arg1) +{ Mtx sp14; GXColor sp10; - unkStruct13* temp_r29; - unkStruct14* temp_r31; + unkStruct13 *temp_r29; + unkStruct14 *temp_r31; m440Func14 temp_r27; - temp_r31 = (unkStruct14*)arg0->unk_120; + temp_r31 = (unkStruct14 *)arg0->unk_120; if (((u8)omPauseChk() == 0) && (temp_r31->unk38)) { temp_r27 = temp_r31->unk38; temp_r27(temp_r31); } GXLoadPosMtxImm(arg1, 0); - PSMTXInvXpose(arg1, sp14); + MTXInvXpose(arg1, sp14); GXLoadNrmMtxImm(sp14, 0); fn_1_8AC4(arg1); sp10.r = (temp_r31->unk28->unkB[0] * arg0->unk_58.x); @@ -1804,11 +1875,11 @@ void fn_1_806C(ModelData* arg0, Mtx arg1) { GXSetChanMatColor(GX_COLOR0A0, sp10); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r31->unkC, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r31->unkC, 12); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r31->unk14, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r31->unk14, 12); lbl_1_bss_C = temp_r31->unk3C; if (temp_r31->unk28->unk34 == 0) { GXSetNumTevStages(1); @@ -1819,9 +1890,10 @@ void fn_1_806C(ModelData* arg0, Mtx arg1) { GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetNumTexGens(0); GXSetNumChans(0); - } else { + } + else { GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetArray(GX_VA_TEX0, temp_r31->unk1C, 8); temp_r29 = &temp_r31->unk2C[temp_r31->unk28->unk38[0]]; fn_1_7D60(temp_r29->unk80, temp_r29, 0); @@ -1836,7 +1908,8 @@ void fn_1_806C(ModelData* arg0, Mtx arg1) { GXCallDisplayList(temp_r31->unk30, temp_r31->unk34); } -void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { +void fn_1_8470(unkStruct12 *arg0, unkStruct13 *arg1) +{ ModelData sp40; Mtx sp10; GXColor spC; @@ -1854,11 +1927,13 @@ void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { temp_r24 = arg0->unk30; if ((arg0->unkA == 2) || (arg0->unkA == 3)) { var_r27 = 1; - } else { + } + else { var_r27 = 0; if ((arg0->unkA == 0) || (arg0->unkA == 5)) { var_r25 = 0; - } else { + } + else { var_r25 = 1; } } @@ -1873,14 +1948,16 @@ void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r31++; - } else { + } + else { GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); } - } else { + } + else { GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); } if (var_r27 != 0) { @@ -1897,18 +1974,20 @@ void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { if (var_f31 < 0.1) { var_f31 = 0.1f; } - PSMTXCopy(lbl_1_bss_30, sp10); + MTXCopy(lbl_1_bss_30, sp10); mtxScaleCat(sp10, var_f31, var_f31, var_f31); GXLoadTexMtxImm(sp10, 0x24, GX_MTX2x4); var_r31++; var_r28++; var_r27 = 0; var_r25 = 1; - } else { + } + else { if (1.0f == arg1->unk20) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevOrder(var_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR1A1); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_CPREV); } @@ -1917,7 +1996,8 @@ void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); var_r31++; } - } else if (0.0f != arg0->unk1C) { + } + else if (0.0f != arg0->unk1C) { GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -1929,7 +2009,8 @@ void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { GXSetNumTevStages(var_r31); if (var_r27 != 0) { var_f30 = arg0->unk14; - } else { + } + else { var_f30 = 0.0f; } temp_r29 = Hu3DLightSet(&sp40, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); @@ -1952,67 +2033,71 @@ void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { GXSetChanCtrl(GX_COLOR0A0, var_r25, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_SPOT); } -void fn_1_8AC4(Mtx arg0) { +void fn_1_8AC4(Mtx arg0) +{ Mtx spA0; Mtx sp70; Mtx sp40; Vec sp34; Vec sp28; Vec sp1C; - Vec sp10 = {0, 0, -1}; + Vec sp10 = { 0, 0, -1 }; f32 var_f29; f32 var_f30; - LightData* var_r29; + LightData *var_r29; s16 temp_r31; var_r29 = &Hu3DGlobalLight[0]; sp34 = var_r29->unk_28; if ((var_r29->unk_00 & 0x8000) != 0) { - PSMTXMultVecSR(Hu3DCameraMtx, &sp34, &sp34); + MTXMultVecSR(Hu3DCameraMtx, &sp34, &sp34); } - var_f30 = PSVECDotProduct(&sp34, &sp10); + var_f30 = VECDotProduct(&sp34, &sp10); var_f30 *= 10000.0f; OSf32tos16(&var_f30, &temp_r31); if (temp_r31 == -0x2710) { - PSMTXScale(lbl_1_bss_30, 0.0f, 0.0f, 0.0f); + MTXScale(lbl_1_bss_30, 0.0f, 0.0f, 0.0f); return; } - C_VECHalfAngle( &sp34, &sp10, &sp28); + C_VECHalfAngle(&sp34, &sp10, &sp28); sp28.x = -sp28.x; sp28.y = -sp28.y; sp28.z = -sp28.z; - PSMTXInvXpose(arg0, sp70); + MTXInvXpose(arg0, sp70); if (temp_r31 == 0x2710) { - PSMTXIdentity(sp40); - } else { - PSVECCrossProduct(&sp28, &sp10, &sp1C); - var_f29 = acosf(PSVECDotProduct(&sp10, &sp28)); - PSMTXRotAxisRad(sp40, &sp1C, var_f29); + MTXIdentity(sp40); } - PSMTXConcat(sp40, sp70, spA0); - PSMTXTrans(sp40, 0.5f, 0.5f, 0.0f); - PSMTXConcat(sp40, spA0, lbl_1_bss_30); + else { + VECCrossProduct(&sp28, &sp10, &sp1C); + var_f29 = acosf(VECDotProduct(&sp10, &sp28)); + MTXRotAxisRad(sp40, &sp1C, var_f29); + } + MTXConcat(sp40, sp70, spA0); + MTXTrans(sp40, 0.5f, 0.5f, 0.0f); + MTXConcat(sp40, spA0, lbl_1_bss_30); } -void fn_1_8D1C(void) { +void fn_1_8D1C(void) +{ Mtx44 sp60; Mtx sp30; GXTexObj sp10; GXColor spC; u16 var_r30; - unkStruct2* temp_r31; + unkStruct2 *temp_r31; - temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31 = (unkStruct2 *)lbl_1_bss_68->data; if (!temp_r31) { var_r30 = 0; - } else { + } + else { var_r30 = temp_r31->unk0 & 7; } - + if (var_r30 == 5) { C_MTXOrtho(sp60, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 10.0f); GXSetProjection(sp60, GX_ORTHOGRAPHIC); - PSMTXIdentity(sp30); + MTXIdentity(sp30); GXLoadPosMtxImm(sp30, 0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); @@ -2049,7 +2134,8 @@ void fn_1_8D1C(void) { DCFlushRange(lbl_1_bss_28, lbl_1_bss_24); } -void fn_1_91A4(Vec* arg0, Vec* arg1, Vec* arg2, f32 arg3[5]) { +void fn_1_91A4(Vec *arg0, Vec *arg1, Vec *arg2, f32 arg3[5]) +{ Vec sp14; Vec sp8; @@ -2064,25 +2150,29 @@ void fn_1_91A4(Vec* arg0, Vec* arg1, Vec* arg2, f32 arg3[5]) { arg3[2] = -((sp14.x * sp8.y) - (sp14.y * sp8.x)); } -f32 fn_1_927C(f32 arg8, f32 arg9, f32 argA) { +f32 fn_1_927C(f32 arg8, f32 arg9, f32 argA) +{ f32 var_f31; var_f31 = arg9 - arg8; if (var_f31 > 180.0f) { var_f31 -= 360.0f; - } else if (var_f31 < -180.0f) { + } + else if (var_f31 < -180.0f) { var_f31 += 360.0f; } var_f31 = arg8 + (var_f31 * argA); if (var_f31 >= 360.0f) { var_f31 -= 360.0f; - } else if (var_f31 < 0.0f) { + } + else if (var_f31 < 0.0f) { var_f31 += 360.0f; } return var_f31; } -void fn_1_9344(Mtx arg0, Mtx arg1) { +void fn_1_9344(Mtx arg0, Mtx arg1) +{ arg1[0][0] = arg0[0][0]; arg1[1][0] = arg0[0][1]; arg1[2][0] = arg0[0][2]; @@ -2097,29 +2187,33 @@ void fn_1_9344(Mtx arg0, Mtx arg1) { arg1[2][3] = 0.0f; } -f32 fn_1_93C0(f32 arg0, f32 arg1, f32 arg2) { +f32 fn_1_93C0(f32 arg0, f32 arg1, f32 arg2) +{ return arg0 + (arg2 * (arg1 - arg0)); } -f32 fn_1_93D0(f32 arg8, f32 arg9, f32 argA, f32 argB) { +f32 fn_1_93D0(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ f32 temp_f31; temp_f31 = 1.0f - argB; return (argA * (argB * argB)) + ((arg8 * (temp_f31 * temp_f31)) + (arg9 * (2.0f * temp_f31 * argB))); } -unkStruct4* fn_1_942C(s16 arg0, Vec* arg1, Vec* arg2, f32 arg3, GXColor* arg4) { - ModelData* var_r28; +unkStruct4 *fn_1_942C(s16 arg0, Vec *arg1, Vec *arg2, f32 arg3, GXColor *arg4) +{ + ModelData *var_r28; s16 var_r29; - unkStruct4* var_r31; - unkStruct14* temp_r30; + unkStruct4 *var_r31; + unkStruct14 *temp_r30; var_r28 = &Hu3DData[arg0]; temp_r30 = var_r28->unk_120; var_r29 = 0; var_r31 = temp_r30->unk18; - for (;var_r29 < temp_r30->unk0; var_r29++, var_r31++) { - if (var_r31->unk62 == 0) break; + for (; var_r29 < temp_r30->unk0; var_r29++, var_r31++) { + if (var_r31->unk62 == 0) + break; } if (var_r29 == temp_r30->unk0) { return NULL; @@ -2138,20 +2232,21 @@ unkStruct4* fn_1_942C(s16 arg0, Vec* arg1, Vec* arg2, f32 arg3, GXColor* arg4) { return var_r31; } -s16 fn_1_956C(AnimData* arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) { - ModelData* temp_r28; +s16 fn_1_956C(AnimData *arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) +{ + ModelData *temp_r28; s16 var_r20; s16 var_r22; s16 var_r19; - HsfVector2f* var_r29; + HsfVector2f *var_r29; s16 var_r30; - unkStruct5* var_r31; - void* var_r21; - void* var_r18; - unkStruct4* var_r24; - Vec* var_r25; - GXColor* var_r27; - + unkStruct5 *var_r31; + void *var_r21; + void *var_r18; + unkStruct4 *var_r24; + Vec *var_r25; + GXColor *var_r27; + var_r20 = Hu3DHookFuncCreate(fn_1_9C04); temp_r28 = &Hu3DData[var_r20]; var_r31 = HuMemDirectMallocNum(HEAP_DATA, 0x68, temp_r28->unk_48); @@ -2163,26 +2258,26 @@ s16 fn_1_956C(AnimData* arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) { var_r31->unkC = NULL; var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0x64, temp_r28->unk_48); var_r31->unk18 = var_r24; - + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) { var_r24->unk60 = -1; var_r24->unk62 = 0; } var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0xC * 4, temp_r28->unk_48); var_r31->unk1C = var_r25; - + for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) { var_r25->x = var_r25->y = var_r25->z = 0.0f; } var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 4, temp_r28->unk_48); var_r31->unk24 = var_r27; - + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) { var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF; } var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 8 * 4, temp_r28->unk_48); var_r31->unk20 = var_r29; - + for (var_r30 = 0; var_r30 < arg1; var_r30++) { var_r29->x = 0.0f; var_r29->y = 0.0f; @@ -2203,7 +2298,8 @@ s16 fn_1_956C(AnimData* arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) { var_r31->unk14 = (var_r22 * var_r19); var_r31->unk60 = (1.0f / var_r22); var_r31->unk64 = (1.0f / var_r19); - } else { + } + else { var_r22 = 1; var_r31->unk14 = 1; var_r31->unk60 = 1.0f; @@ -2218,7 +2314,7 @@ s16 fn_1_956C(AnimData* arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) { var_r18 = var_r21; GXBeginDisplayList(var_r18, 0x20000); GXBegin(GX_QUADS, GX_VTXFMT0, (arg1 * 4)); - + for (var_r30 = 0; var_r30 < arg1; var_r30++) { GXPosition1x16(var_r30 * 4); GXColor1x16(var_r30); @@ -2242,30 +2338,33 @@ s16 fn_1_956C(AnimData* arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) { return var_r20; } -void fn_1_9AB0(s16 arg0) { - ModelData* data; - unkStruct5* temp2; +void fn_1_9AB0(s16 arg0) +{ + ModelData *data; + unkStruct5 *temp2; data = &Hu3DData[arg0]; - temp2 = (unkStruct5*)data->unk_120; + temp2 = (unkStruct5 *)data->unk_120; HuSprAnimKill(temp2->unk10); Hu3DModelKill(arg0); } -unkStruct5* fn_1_9B10(s16 arg0) { - ModelData* data; +unkStruct5 *fn_1_9B10(s16 arg0) +{ + ModelData *data; data = &Hu3DData[arg0]; - return (unkStruct5*)data->unk_120; + return (unkStruct5 *)data->unk_120; } -unkStruct4* fn_1_9B3C(s16 arg0, s16 arg1) { - ModelData* data; - unkStruct5* temp; +unkStruct4 *fn_1_9B3C(s16 arg0, s16 arg1) +{ + ModelData *data; + unkStruct5 *temp; data = &Hu3DData[arg0]; - temp = (unkStruct5*)data->unk_120; - + temp = (unkStruct5 *)data->unk_120; + if (arg1 == -1) { return 0; } @@ -2273,25 +2372,28 @@ unkStruct4* fn_1_9B3C(s16 arg0, s16 arg1) { return &temp->unk18[arg1]; } -void fn_1_9B94(s16 arg0, m440Func5 arg1) { - ModelData* data; - unkStruct5* temp; +void fn_1_9B94(s16 arg0, m440Func5 arg1) +{ + ModelData *data; + unkStruct5 *temp; data = &Hu3DData[arg0]; - temp = (unkStruct5*)data->unk_120; + temp = (unkStruct5 *)data->unk_120; temp->unkC = arg1; } -void fn_1_9BCC(s16 arg0, u8 arg1) { - ModelData* data; - unkStruct5* temp; +void fn_1_9BCC(s16 arg0, u8 arg1) +{ + ModelData *data; + unkStruct5 *temp; data = &Hu3DData[arg0]; - temp = (unkStruct5*)data->unk_120; + temp = (unkStruct5 *)data->unk_120; temp->unk8 = arg1; } -void fn_1_9C04(ModelData* arg0, Mtx arg1) { +void fn_1_9C04(ModelData *arg0, Mtx arg1) +{ Mtx sp128; ROMtx spF8; Mtx spC8; @@ -2305,16 +2407,16 @@ void fn_1_9C04(ModelData* arg0, Mtx arg1) { Vec sp20; Vec sp14; Vec sp8; - Vec* var_r31; + Vec *var_r31; s16 temp_r0; u8 temp_r0_2; - unkStruct5* temp_r30; - HsfVector2f* var_r27; + unkStruct5 *temp_r30; + HsfVector2f *var_r27; s16 var_r26; - unkStruct4* var_r29; + unkStruct4 *var_r29; m440Func5 var_r23; - temp_r30 = (unkStruct5*)arg0->unk_120; + temp_r30 = (unkStruct5 *)arg0->unk_120; GXLoadPosMtxImm(arg1, 0); GXSetNumTevStages(1); GXSetNumTexGens(1); @@ -2323,7 +2425,8 @@ void fn_1_9C04(ModelData* arg0, Mtx arg1) { temp_r0 = temp_r30->unk10->bmp->dataFmt & 0xF; if ((temp_r0 == 7) || (temp_r0 == 8)) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); @@ -2365,9 +2468,9 @@ 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); - - for (var_r26 = 0; var_r26 < temp_r30->unk0; var_r26++, var_r29++, var_r27+=4) { + PSMTXROMultVecArray(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) { var_r31->x = var_r31->y = var_r31->z = 0.0f; var_r31++; @@ -2377,22 +2480,24 @@ void fn_1_9C04(ModelData* arg0, Mtx arg1) { var_r31++; var_r31->x = var_r31->y = var_r31->z = 0.0f; var_r31++; - } else { + } + else { if (0.0f == var_r29->unk44) { - fn_1_A328((Vec*)&sp68[0], &sp38, &var_r29->unk48, 4); - PSVECAdd(&sp38, &var_r29->unk54, var_r31++); - PSVECAdd(&sp44, &var_r29->unk54, var_r31++); - PSVECAdd(&sp50, &var_r29->unk54, var_r31++); - PSVECAdd(&sp5C, &var_r29->unk54, var_r31++); - } else { + fn_1_A328((Vec *)&sp68[0], &sp38, &var_r29->unk48, 4); + VECAdd(&sp38, &var_r29->unk54, var_r31++); + VECAdd(&sp44, &var_r29->unk54, var_r31++); + VECAdd(&sp50, &var_r29->unk54, var_r31++); + VECAdd(&sp5C, &var_r29->unk54, var_r31++); + } + else { fn_1_A328(&temp_r30->unk2C, &sp38, &var_r29->unk48, 4); - PSMTXRotRad(spC8, 0x5A, 0.017453292f * var_r29->unk44); - PSMTXConcat(sp128, spC8, sp98); - PSMTXMultVecArray(sp98, &sp38, &sp8, 4); - PSVECAdd(&sp8, &var_r29->unk54, var_r31++); - PSVECAdd(&sp14, &var_r29->unk54, var_r31++); - PSVECAdd(&sp20, &var_r29->unk54, var_r31++); - PSVECAdd(&sp2C, &var_r29->unk54, var_r31++); + MTXRotRad(spC8, 0x5A, 0.017453292f * var_r29->unk44); + MTXConcat(sp128, spC8, sp98); + MTXMultVecArray(sp98, &sp38, &sp8, 4); + VECAdd(&sp8, &var_r29->unk54, var_r31++); + VECAdd(&sp14, &var_r29->unk54, var_r31++); + VECAdd(&sp20, &var_r29->unk54, var_r31++); + VECAdd(&sp2C, &var_r29->unk54, var_r31++); } if (var_r29->unk60 != -1) { fn_1_A284(var_r27, temp_r30->unk5C, var_r29->unk60, temp_r30->unk60, temp_r30->unk64); @@ -2404,11 +2509,12 @@ void fn_1_9C04(ModelData* arg0, Mtx arg1) { GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); } -void fn_1_A1B8(HsfVector2f* arg0, s16 arg1, s16 arg2, f32 arg8, f32 arg9) { +void fn_1_A1B8(HsfVector2f *arg0, s16 arg1, s16 arg2, f32 arg8, f32 arg9) +{ s16 var_r31; s16 var_r30; s16 var_r29; - + for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) { var_r30 = (var_r31 % arg2); var_r29 = (var_r31 / arg2); @@ -2417,7 +2523,8 @@ void fn_1_A1B8(HsfVector2f* arg0, s16 arg1, s16 arg2, f32 arg8, f32 arg9) { } } -void fn_1_A284(HsfVector2f* arg0, HsfVector2f* arg1, s16 arg2, f32 arg3, f32 arg4) { +void fn_1_A284(HsfVector2f *arg0, HsfVector2f *arg1, s16 arg2, f32 arg3, f32 arg4) +{ arg0[0].x = arg1[arg2].x; arg0[0].y = arg1[arg2].y; arg0[1].x = (arg3 + arg1[arg2].x); @@ -2428,9 +2535,10 @@ void fn_1_A284(HsfVector2f* arg0, HsfVector2f* arg1, s16 arg2, f32 arg3, f32 arg arg0[3].y = (arg4 + arg1[arg2].y); } -void fn_1_A328(Vec* arg0, Vec* arg1, Vec* arg2, s16 arg3) { +void fn_1_A328(Vec *arg0, Vec *arg1, Vec *arg2, s16 arg3) +{ s16 var_r31; - + for (var_r31 = 0; var_r31 < arg3; var_r31++, arg0++, arg1++) { arg1->x = (arg0->x * arg2->x); arg1->y = (arg0->y * arg2->y); @@ -2440,13 +2548,15 @@ void fn_1_A328(Vec* arg0, Vec* arg1, Vec* arg2, s16 arg3) { static s8 lbl_1_data_148 = 0xFF; -void fn_1_A390(ModelData* arg0, Mtx arg1) { +void fn_1_A390(ModelData *arg0, Mtx arg1) +{ if (lbl_1_bss_2 == 0) { if ((HuPadBtnDown[0] & 0x10) != 0) { lbl_1_bss_1 ^= 1; } - if (lbl_1_bss_1 == 0) return; - + if (lbl_1_bss_1 == 0) + return; + if ((HuPadBtn[0] & 1) != 0) { lbl_1_data_20.x -= 4.0f; } @@ -2462,7 +2572,8 @@ void fn_1_A390(ModelData* arg0, Mtx arg1) { lbl_1_data_20.y += 4.0f; } lbl_1_data_2C.y += HuPadSubStkY[0]; - } else { + } + else { if ((HuPadBtn[0] & 8) != 0) { lbl_1_data_20.z -= 4.0f; } @@ -2481,7 +2592,7 @@ void fn_1_A390(ModelData* arg0, Mtx arg1) { Hu3DGLightPosAimSetV(lbl_1_bss_E, &lbl_1_data_2C, &lbl_1_data_20); Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_6C); } - + print8(8, 0x64, 1.5f, "InterXYZ: %.2f %.2f %.2f", lbl_1_data_20.x, lbl_1_data_20.y, lbl_1_data_20.z); print8(8, 0x70, 1.5f, "PositionXYZ: %.2f %.2f %.2f", lbl_1_data_2C.x, lbl_1_data_2C.y, lbl_1_data_2C.z); GXLoadPosMtxImm(arg1, 0); @@ -2489,7 +2600,7 @@ void fn_1_A390(ModelData* arg0, Mtx arg1) { GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); @@ -2506,7 +2617,8 @@ void fn_1_A390(ModelData* arg0, Mtx arg1) { GXColor4u8(0xFF, 0x00, 0x00, 0xFF); } -void fn_1_AA94(void) { +void fn_1_AA94(void) +{ if ((HuPadBtnDown[0] & 0x40) != 0) { lbl_1_bss_2 ^= 1; } @@ -2526,7 +2638,8 @@ void fn_1_AA94(void) { Center.x += HuPadSubStkX[0]; if ((HuPadBtn[0] & 0x20) != 0) { Center.y += HuPadSubStkY[0]; - } else { + } + else { Center.z += HuPadSubStkY[0]; } if ((HuPadBtn[0] & 0x400) != 0) { diff --git a/src/REL/m440Dll/object.c b/src/REL/m440Dll/object.c index d26d048a..5eb6cb5c 100644 --- a/src/REL/m440Dll/object.c +++ b/src/REL/m440Dll/object.c @@ -1,16 +1,21 @@ #include "REL/m440Dll.h" -#include "string.h" -#include "math.h" #include "ext_math.h" +#include "game/chrman.h" #include "game/flag.h" #include "game/gamework_data.h" -#include "game/chrman.h" #include "game/hsfmotion.h" #include "game/pad.h" +#include "math.h" +#include "string.h" +#include "version.h" + +#ifdef __MWERKS__ +#include "game/audio.h" +#endif // bss -omObjData* lbl_1_bss_C0[4]; +omObjData *lbl_1_bss_C0[4]; s16 lbl_1_bss_B8[4]; Vec lbl_1_bss_88[4]; f32 lbl_1_bss_84; @@ -22,29 +27,21 @@ s16 lbl_1_bss_70; // data s16 lbl_1_data_1D8 = 2; s16 lbl_1_data_1DA = -1; -u32 lbl_1_data_1DC[8][2] = { - { 0x5F0000, 0 }, - { 0x5F0002, 0 }, - { 0x5F0003, 0 }, - { 0x5F0038, 0 }, - { 0x5F0048, 0 }, - { 0x5F0017, 0 }, - { 0x47000C, 1 }, - { 0x5F0036, 0 } -}; -f32 lbl_1_data_21C[4] = { - 210.0f, 190.0f, 170.0f, 0.0f -}; +u32 lbl_1_data_1DC[8][2] = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), 0 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x38), 0 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0 }, { 0x47000C, 1 }, { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36), 0 } }; +f32 lbl_1_data_21C[4] = { 210.0f, 190.0f, 170.0f, 0.0f }; // prototypes -void fn_1_B180(omObjData*); +void fn_1_B180(omObjData *); -void fn_1_AE08(Process* arg0) { +void fn_1_AE08(Process *arg0) +{ s16 var_r31; omMakeGroupEx(arg0, 0, 4); omGetGroupMemberListEx(arg0, 0); - + for (var_r31 = 0; var_r31 < 4; var_r31++) { lbl_1_bss_C0[var_r31] = omAddObjEx(arg0, 0x64, 9, 8, 0, fn_1_AEE4); lbl_1_bss_C0[var_r31]->work[0] = var_r31; @@ -52,14 +49,15 @@ void fn_1_AE08(Process* arg0) { omAddObjEx(arg0, 0x65, 0, 0, -1, fn_1_B180); } -void fn_1_AEE4(omObjData* arg0) { +void fn_1_AEE4(omObjData *arg0) +{ f32 var_f31; s32 temp_r28; s16 var_r29; - unkObjStruct* temp_r31; + unkObjStruct *temp_r31; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x78, 0x10000000); - temp_r31 = (unkObjStruct*)arg0->data; + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x78, MEMORY_DEFAULT_NUM); + temp_r31 = (unkObjStruct *)arg0->data; memset(temp_r31, 0, 0x78); arg0->stat |= 0x100; temp_r31->unk4 = arg0->work[0]; @@ -68,11 +66,12 @@ void fn_1_AEE4(omObjData* arg0) { arg0->model[0] = CharModelCreate(temp_r31->unk8, 4); Hu3DModelLayerSet(arg0->model[0], 1); Hu3DModelShadowSet(arg0->model[0]); - + for (var_r29 = 0; var_r29 < 8; var_r29++) { if (lbl_1_data_1DC[var_r29][1] == 0) { arg0->motion[var_r29] = CharModelMotionCreate(temp_r31->unk8, lbl_1_data_1DC[var_r29][0]); - } else { + } + else { arg0->motion[var_r29] = CharModelMotionCreate(temp_r31->unk8, temp_r31->unk8 + lbl_1_data_1DC[var_r29][0]); } } @@ -83,11 +82,12 @@ void fn_1_AEE4(omObjData* arg0) { temp_r31->unk30.x = temp_r31->unk30.y = temp_r31->unk30.z = 0.0f; temp_r31->unk3C.y = 90.0f; temp_r31->unkC = 0; - temp_r31->unkE = 0x78; + temp_r31->unkE = 2 * REFRESH_RATE_F; temp_r31->unk10 = temp_r31->unk12 = temp_r31->unk14 = 0; if (temp_r31->unk8 == 5) { var_f31 = 350.0f; - } else { + } + else { var_f31 = 410.0f; } temp_r31->unk5C = var_f31; @@ -98,37 +98,39 @@ void fn_1_AEE4(omObjData* arg0) { arg0->func = fn_1_B17C; } -void fn_1_B17C(omObjData* arg0) { +void fn_1_B17C(omObjData *arg0) +{ return; } -void fn_1_B180(omObjData* arg0) { +void fn_1_B180(omObjData *arg0) +{ s16 var_r29; s16 var_r31; s32 var_r28; u32 temp_r0; u32 temp_r3; u32 temp_r3_2; - unkObjStruct* temp_r30; + unkObjStruct *temp_r30; var_r28 = GWSystem.player_curr; if (var_r28 < 0) { var_r28 = 0; } var_r29 = var_r28; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { lbl_1_bss_B8[var_r31] = var_r29; var_r29 = (var_r29 + 1) % 4; } - lbl_1_bss_88->x = (700.0f * cos(M_PI/2 - M_PI/9)); - lbl_1_bss_88->z = (700.0f * sin(M_PI/2 - M_PI/9)); - + lbl_1_bss_88->x = (700.0f * cos(M_PI / 2 - M_PI / 9)); + lbl_1_bss_88->z = (700.0f * sin(M_PI / 2 - M_PI / 9)); + for (var_r31 = 1; var_r31 < 4; var_r31++) { lbl_1_bss_88[var_r31].x = lbl_1_bss_88[var_r31 - 1].x - 150.0f; lbl_1_bss_88[var_r31].z = lbl_1_bss_88->z; } - + for (var_r31 = 0; var_r31 < 4; var_r31++) { temp_r30 = lbl_1_bss_C0[lbl_1_bss_B8[var_r31]]->data; temp_r30->unkA = var_r31; @@ -139,21 +141,22 @@ void fn_1_B180(omObjData* arg0) { arg0->func = fn_1_B3A4; } -void fn_1_B3A4(omObjData* arg0) { +void fn_1_B3A4(omObjData *arg0) +{ f32 sp14; - ModelData* sp8; + ModelData *sp8; f32 var_f31; s16 var_r28; s16 var_r29; - omObjData* var_r30; - unkObjStruct* var_r31; - + omObjData *var_r30; + unkObjStruct *var_r31; + for (var_r29 = 0; var_r29 < 4; var_r29++) { if (lbl_1_bss_B8[var_r29] != -1) { var_r30 = lbl_1_bss_C0[lbl_1_bss_B8[var_r29]]; sp8 = &Hu3DData[var_r30->model[0]]; - var_r31 = (unkObjStruct*)var_r30->data; - switch(var_r31->unk0 & 0xF) { + var_r31 = (unkObjStruct *)var_r30->data; + switch (var_r31->unk0 & 0xF) { case 1: var_r31->unkC++; var_f31 = (f32)var_r31->unkC / var_r31->unkE; @@ -163,9 +166,10 @@ void fn_1_B3A4(omObjData* arg0) { if (lbl_1_bss_72 == 0) { lbl_1_bss_72 = 1; fn_1_F228(); - } else { + } + else { fn_1_F4D4(var_r31, 15, 7); - Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[1], 0.0f, 7.0f, 0x40000001); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[1], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); } } var_r28 = (var_r31->unkA == -1) ? 0 : var_r31->unkA; @@ -173,7 +177,7 @@ void fn_1_B3A4(omObjData* arg0) { var_r31->unk18.y = 0.0f; var_r31->unk18.z = var_r31->unk24.z + (lbl_1_bss_88[var_r28].z - var_r31->unk24.z) * var_f31; var_r31->unk14++; - var_f31 = var_r31->unk14 / 20.0f; + var_f31 = var_r31->unk14 / (REFRESH_RATE_F / 3.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; } @@ -181,12 +185,12 @@ void fn_1_B3A4(omObjData* arg0) { break; case 7: var_r31->unkC++; - var_f31 = (f32)var_r31->unkC / 40.0f; + var_f31 = (f32)var_r31->unkC / (2.0f * REFRESH_RATE_F / 3); if (var_f31 >= 1.0f) { var_f31 = 1.0f; var_r31->unkC = 0; fn_1_F4D4(var_r31, 15, 8); - Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[0], 0.0f, 7.0f, 0x40000001); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[0], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); } var_r31->unk30.y = 90.0f + (lbl_1_data_21C[var_r31->unkA] - 90.0f) * var_f31; var_r31->unk3C = var_r31->unk30; @@ -225,8 +229,9 @@ void fn_1_B3A4(omObjData* arg0) { f32 lbl_1_data_250 = 70.0f; -void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { - s16 sp8[5] = {3, 1, 0, 2, 4}; +void fn_1_B884(omObjData *arg0, unkObjStruct *arg1) +{ + s16 sp8[5] = { 3, 1, 0, 2, 4 }; f32 var_f29; f32 var_f28; f32 var_f31; @@ -238,7 +243,7 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { switch (lbl_1_bss_74) { case 0: - lbl_1_data_250 -= 0.5f; + lbl_1_data_250 -= (REFRESH_RATE_F / 120); if (lbl_1_data_250 <= 45.0f) { lbl_1_data_250 = 45.0f; lbl_1_bss_74++; @@ -248,7 +253,7 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { arg1->unk18.z = (700.0 * sind(lbl_1_data_250)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -257,19 +262,19 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { return; case 1: arg1->unkE++; - var_f31 = arg1->unkE / 10.0f; + var_f31 = arg1->unkE / (REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; } var_f30 = 225.0f; arg1->unk30.y = arg1->unk68 + (var_f31 * (var_f30 - arg1->unk68)); arg1->unkC++; - var_f31 = arg1->unkC / 50.0f; + var_f31 = arg1->unkC / (5.0f * REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; arg1->unkC = arg1->unkE = 0; arg1->unk68 = arg1->unk30.y; - + for (var_r30 = 0; var_r30 < 5; var_r30++) { if (lbl_1_data_14[sp8[var_r30]] != 0) { arg1->unk4A = arg1->unk60 = sp8[var_r30]; @@ -279,8 +284,8 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { lbl_1_bss_74++; } var_f29 = 700.0f + ((arg1->unk5C - 700.0f) * var_f31); - arg1->unk18.x = (var_f29 * cos(M_PI/4)); - arg1->unk18.z = (var_f29 * sin(M_PI/4)); + arg1->unk18.x = (var_f29 * cos(M_PI / 4)); + arg1->unk18.z = (var_f29 * sin(M_PI / 4)); var_f29 = 0.1f; var_f28 = 0.6f; if (var_f31 >= var_f29) { @@ -293,7 +298,7 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { } break; case 2: - lbl_1_data_250++; + lbl_1_data_250 += REFRESH_RATE_F / 60.0f; if (lbl_1_data_250 >= lbl_1_data_0[arg1->unk60]) { lbl_1_data_250 = lbl_1_data_0[arg1->unk60]; lbl_1_bss_74++; @@ -303,34 +308,35 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { arg1->unk18.z = (arg1->unk5C * sind(lbl_1_data_250)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } arg1->unkC++; - var_f31 = arg1->unkC / 10.0f; + var_f31 = arg1->unkC / (REFRESH_RATE_F / 6.0f); if (var_f31 < 1.0f) { arg1->unk30.y = arg1->unk68 + (var_f31 * (var_f30 - arg1->unk68)); - } else { + } + else { arg1->unk30.y = var_f30; } arg1->unk6C = arg1->unk30.y; return; case 3: arg1->unkE++; - var_f31 = arg1->unkE / 10.0f; + var_f31 = arg1->unkE / (REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; arg1->unkC = arg1->unkE = 0; lbl_1_bss_74++; - Hu3DMotionShiftSet(*arg0->model, *arg0->motion, 0.0f, 7.0f, 0x40000001U); + Hu3DMotionShiftSet(*arg0->model, *arg0->motion, 0.0f, 7.0f, HU3D_MOTATTR_LOOP); } var_f30 = 90.0f - lbl_1_data_0[arg1->unk60]; arg1->unk30.y = fn_1_927C(arg1->unk6C, var_f30, var_f31); return; case 4: - if (++arg1->unkC > 15) { + if (++arg1->unkC > (REFRESH_RATE / 4)) { lbl_1_bss_74++; } break; @@ -345,7 +351,8 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { lbl_1_data_1DA++; return; } - } else { + } + else { lbl_1_bss_74 = 0; lbl_1_data_250 = 70.0f; arg1->unk48 = 0; @@ -361,7 +368,8 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) { } } -void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) { +void fn_1_C1D4(omObjData *arg0, unkObjStruct *arg1) +{ s16 sp12[5]; s16 sp8[5]; f32 var_f28; @@ -381,18 +389,18 @@ void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) { HuPadTrigR[arg1->unk6] = 0; HuPadBtn[arg1->unk6] = 0; switch (GWPlayerCfg[arg1->unk4].diff) { - case 0: - var_f31 = 0.3f; - break; - case 1: - var_f31 = 0.3f; - break; - case 2: - var_f31 = 0.3f; - break; - case 3: - var_f31 = 0.3f; - break; + case 0: + var_f31 = 0.3f; + break; + case 1: + var_f31 = 0.3f; + break; + case 2: + var_f31 = 0.3f; + break; + case 3: + var_f31 = 0.3f; + break; } var_f31 += (0.1f * lbl_1_bss_70); @@ -405,7 +413,8 @@ void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) { if (arg1->unk50 == -1) { if (arg1->unk4C < var_f31) { arg1->unk50 = fn_1_4E54(-1); - } else { + } + else { for (var_r30 = 0, var_r28 = 0; var_r30 < 5; var_r30++) { if ((var_r30 != fn_1_4E54(-1)) && (lbl_1_data_14[var_r30] != 0)) { sp12[var_r28++] = var_r30; @@ -432,12 +441,13 @@ void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) { if (arg1->unk68 > lbl_1_data_0[arg1->unk50]) { HuPadStkX[arg1->unk6] = 0x2D; } - } else { + } + else { var_f30 = ABS(arg1->unk68 - lbl_1_data_0[arg1->unk52]); if (var_f30 < 5.0f) { if (arg1->unk5A != 0) { arg1->unk56++; - var_f31 = arg1->unk56 / 40.0f; + var_f31 = arg1->unk56 / (2.0f * REFRESH_RATE_F / 3.0f); if (var_f31 > 1.0f) { var_f31 = 1.0f; arg1->unk5A = 0; @@ -445,7 +455,7 @@ void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) { var_r30 = (((rand8() << 8) | rand8()) % (s16)(var_r29 + 1)); arg1->unk52 = sp8[var_r30]; } - HuPadTrigR[arg1->unk6] = (u8) (arg1->unk58 * var_f31); + HuPadTrigR[arg1->unk6] = (u8)(arg1->unk58 * var_f31); return; } if ((((rand8() << 8) | rand8()) % 101) < 0x32) { @@ -470,7 +480,8 @@ void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) { } } -void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { +void fn_1_C944(omObjData *arg0, unkObjStruct *arg1) +{ s16 sp8; f32 var_f26; f32 var_f25; @@ -489,7 +500,8 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { HuPadStkY[arg1->unk6] = 0; HuPadTrigR[arg1->unk6] = 0x96; HuPadBtn[arg1->unk6] = 0x20; - } else { + } + else { var_r29 = HuPadStkX[arg1->unk6]; sp8 = HuPadStkY[arg1->unk6]; } @@ -497,11 +509,13 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { var_r30 = -1; if (ABS(var_r29) < 7) { var_r30 = fn_1_CFAC(arg1, 0); - } else { + } + else { if (var_r29 > 0) { arg1->unk48 = arg1->unk48 & 0xFFFFFFFD; arg1->unk48 = arg1->unk48 | 1; - } else { + } + else { arg1->unk48 = arg1->unk48 & 0xFFFFFFFE; arg1->unk48 = arg1->unk48 | 2; } @@ -513,14 +527,15 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { } } if ((arg1->unk48 & 1) != 0) { - arg1->unk68 -= 1.0f; + arg1->unk68 -= REFRESH_RATE_F / 60.0f; if ((var_r30 != -1) && (lbl_1_data_0[var_r30] > arg1->unk68)) { arg1->unk68 = lbl_1_data_0[var_r30]; arg1->unk4A = var_r30; arg1->unk48 = arg1->unk48 & 0xFFFFFFFE; } - } else if ((arg1->unk48 & 2) != 0) { - arg1->unk68++; + } + else if ((arg1->unk48 & 2) != 0) { + arg1->unk68 += REFRESH_RATE_F / 60.0f; if ((var_r30 != -1) && (lbl_1_data_0[var_r30] < arg1->unk68)) { arg1->unk68 = lbl_1_data_0[var_r30]; arg1->unk4A = var_r30; @@ -534,12 +549,13 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { arg1->unk48 = arg1->unk48 & ~4; var_f26 = (arg1->unk18.x - arg1->unk24.x); var_f25 = (arg1->unk18.z - arg1->unk24.z); - var_f29 = (180.0 * (atan2(var_f26, var_f25) / M_PI)); + var_f29 = atan2d(var_f26, var_f25); if (var_f29 < 0.0f) { var_f29 += 360.0f; } fn_1_D24C(arg1, arg1->unk30.y, var_f29); - } else { + } + else { arg1->unk48 |= 4; var_f29 = 90.0f - lbl_1_data_0[arg1->unk4A]; fn_1_D24C(arg1, arg1->unk30.y, var_f29); @@ -550,12 +566,14 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { arg1->unkC = arg1->unkE; var_f28 = 1.0f; if ((arg1->unk48 & 4) != 0) { - fn_1_ED88(arg0, 0, 0x40000001); - } else { - fn_1_ED88(arg0, 2, 0x40000001); + fn_1_ED88(arg0, 0, HU3D_MOTATTR_LOOP); } - } else { - fn_1_ED88(arg0, 2, 0x40000001); + else { + fn_1_ED88(arg0, 2, HU3D_MOTATTR_LOOP); + } + } + else { + fn_1_ED88(arg0, 2, HU3D_MOTATTR_LOOP); } if ((arg1->unk48 & 4) != 0) { arg1->unk30.y = fn_1_927C(arg1->unk6C, arg1->unk70, var_f28); @@ -567,13 +585,15 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { if (var_f31 > temp_f27) { var_f31 -= 360.0f; } - } else if (((arg1->unk48 & 2) != 0) && (var_f31 < temp_f27)) { + } + else if (((arg1->unk48 & 2) != 0) && (var_f31 < temp_f27)) { var_f31 += 360.0f; } var_f30 = var_f31 + (var_f28 * (temp_f27 - var_f31)); if (var_f30 < 0.0f) { var_f30 += 360.0f; - } else { + } + else { if (var_f30 >= 360.0f) { var_f30 -= 360.0f; } @@ -582,7 +602,8 @@ void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) { } } -s16 fn_1_CFAC(unkObjStruct* arg0, u8 arg1) { +s16 fn_1_CFAC(unkObjStruct *arg0, u8 arg1) +{ f32 var_f31; s16 var_r30; s16 var_r31; @@ -596,7 +617,8 @@ s16 fn_1_CFAC(unkObjStruct* arg0, u8 arg1) { if (lbl_1_data_0[var_r31] > arg0->unk68) { continue; } - } else if (lbl_1_data_0[var_r31] >= arg0->unk68) { + } + else if (lbl_1_data_0[var_r31] >= arg0->unk68) { continue; } if (var_f31 > (arg0->unk68 - lbl_1_data_0[var_r31])) { @@ -605,14 +627,16 @@ s16 fn_1_CFAC(unkObjStruct* arg0, u8 arg1) { } } } - } else if ((arg0->unk48 & 2) != 0) { + } + else if ((arg0->unk48 & 2) != 0) { for (var_r31 = 0; var_r31 < 5; var_r31++) { if (lbl_1_data_14[var_r31] != 0) { if (arg1 == 0) { if (lbl_1_data_0[var_r31] < arg0->unk68) { continue; } - } else if (lbl_1_data_0[var_r31] <= arg0->unk68) { + } + else if (lbl_1_data_0[var_r31] <= arg0->unk68) { continue; } if (var_f31 > (lbl_1_data_0[var_r31] - arg0->unk68)) { @@ -632,13 +656,14 @@ s16 fn_1_CFAC(unkObjStruct* arg0, u8 arg1) { return var_r30; } -void fn_1_D24C(unkObjStruct* arg0, f32 arg1, f32 arg2) { +void fn_1_D24C(unkObjStruct *arg0, f32 arg1, f32 arg2) +{ f32 var_f28; f32 var_f29; f32 var_f30; f32 var_f31; - var_f28 = 10.0f; + var_f28 = REFRESH_RATE_F / 6.0f; arg0->unk6C = arg1; arg0->unk70 = arg2; var_f31 = ABS(arg1 - arg2); @@ -650,8 +675,9 @@ void fn_1_D24C(unkObjStruct* arg0, f32 arg1, f32 arg2) { arg0->unkE = ((var_f28 / 90.0f) * var_f31); } -void fn_1_D34C(omObjData* arg0, unkObjStruct* arg1) { - ModelData* temp_r30; +void fn_1_D34C(omObjData *arg0, unkObjStruct *arg1) +{ + ModelData *temp_r30; f32 temp_f28; f32 temp_f29; f32 temp_f30; @@ -664,22 +690,23 @@ void fn_1_D34C(omObjData* arg0, unkObjStruct* arg1) { temp_f30 = HuPadTrigR[arg1->unk6]; if ((temp_r30->unk_0C == -1) && (temp_r30->unk_08 == arg0->motion[0]) && ((arg1->unk48 & 8) == 0) && (temp_f30 > 10.0f)) { arg1->unk48 |= 8; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 7.0f, 0U); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 7.0f, HU3D_MOTATTR_NONE); } if ((arg1->unk48 & 8) != 0) { if (temp_f30 <= 10.0f) { fn_1_4E00(arg1->unk4A, -1.0f); arg1->unk48 &= ~8; temp_r30->unk_68 = 1.0f; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, 0x40000001U); - } else if (temp_f30 > 10.0f) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); + } + else if (temp_f30 > 10.0f) { if ((HuPadBtn[arg1->unk6] & 0x20) != 0) { arg1->unk60 = 0; arg1->unk68 = temp_f30; arg1->unk6C = 0.0f; arg1->unk48 = 0; lbl_1_data_14[arg1->unk4A] = 0; - if (fn_1_17CC() < 270.0f) { + if (fn_1_17CC() < (4.5f * REFRESH_RATE)) { fn_1_1708(); } fn_1_F4D4(arg1, 15, 4); @@ -697,7 +724,8 @@ void fn_1_D34C(omObjData* arg0, unkObjStruct* arg1) { } if (temp_r30->unk_64 < var_f31) { temp_r30->unk_64 += 1.0f; - } else if (temp_r30->unk_64 > var_f31) { + } + else if (temp_r30->unk_64 > var_f31) { temp_r30->unk_64 -= 1.0f; } var_f31 = (temp_r30->unk_64 - temp_f29) / temp_f28; @@ -709,8 +737,9 @@ void fn_1_D34C(omObjData* arg0, unkObjStruct* arg1) { } } -void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { - ModelData* temp_r29; +void fn_1_D7F8(omObjData *arg0, unkObjStruct *arg1) +{ + ModelData *temp_r29; f32 temp_f28; f32 temp_f29; f32 var_f26; @@ -732,7 +761,8 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { var_f30 = 0.01f * (arg1->unk68 - 130.0f); if (var_f30 > 0.19999999f) { var_f30 = 0.19999999f; - } else if (var_f30 < 0.0f) { + } + else if (var_f30 < 0.0f) { var_f30 = 0.0f; } var_f31 += var_f30; @@ -743,7 +773,8 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { } if (temp_r29->unk_64 < var_f31) { temp_r29->unk_64 += 3.0f; - } else if (temp_r29->unk_64 > var_f31) { + } + else if (temp_r29->unk_64 > var_f31) { temp_r29->unk_64 -= 3.0f; } var_f31 = (temp_r29->unk_64 - temp_f29) / temp_f28; @@ -766,13 +797,14 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { } break; case 1: - if (++arg1->unkC > 0xA) { + if (++arg1->unkC > (REFRESH_RATE / 6)) { arg1->unkC = 0; Hu3DMotionSpeedSet(arg0->model[0], 2.0f); if ((arg1->unk6C - arg1->unk68) > 0.0f) { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[7], 64.0f, 7.0f, 0U); - } else { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[7], 4.0f, 7.0f, 0U); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[7], 64.0f, 7.0f, HU3D_MOTATTR_NONE); + } + else { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[7], 4.0f, 7.0f, HU3D_MOTATTR_NONE); } Hu3DMotionShiftSpeedSet(arg0->model[0], 2.0f); arg1->unk60++; @@ -780,15 +812,16 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { break; case 2: arg1->unkC++; - var_f31 = arg1->unkC / 30.0f; + var_f31 = arg1->unkC / (0.5f * REFRESH_RATE_F); arg1->unk18.x = ((410.0f + (var_f31 * (arg1->unk5C - 410.0f))) * cosd(lbl_1_data_0[arg1->unk4A])); arg1->unk18.z = ((410.0f + (var_f31 * (arg1->unk5C - 410.0f))) * sind(lbl_1_data_0[arg1->unk4A])); if (var_f31 >= 1.0f) { arg1->unkC = 0; var_f31 = 1.0f; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, 0x40000001U); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); arg1->unk60++; - } else if (((arg1->unk6C - arg1->unk68) < 0.0f) && (Hu3DMotionShiftIDGet(arg0->model[0]) < 0)) { + } + else if (((arg1->unk6C - arg1->unk68) < 0.0f) && (Hu3DMotionShiftIDGet(arg0->model[0]) < 0)) { if (Hu3DMotionTimeGet(arg0->model[0]) >= 60.0f) { Hu3DMotionSpeedSet(arg0->model[0], 0.0f); } @@ -796,10 +829,11 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { arg1->unk30.y = fn_1_927C(arg1->unk68, arg1->unk6C, var_f31); break; case 3: - if (++arg1->unkC > 0x3C) { + if (++arg1->unkC > (s32)REFRESH_RATE_F) { if (fn_1_4E54(arg1->unk4A) == 0) { fn_1_4EEC(7U, 3U); - } else { + } + else { fn_1_4EEC(7U, 4U); } arg1->unkC = 0; @@ -811,7 +845,8 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { fn_1_4EEC(0x100U, 0U); if (fn_1_4E54(arg1->unk4A) == 0) { fn_1_F4D4(arg1, 15, 5); - } else { + } + else { fn_1_F4D4(arg1, 15, 6); } arg1->unkC = arg1->unkE = 0; @@ -821,7 +856,7 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { break; } if (fn_1_17F4() >= 0) { - if (fn_1_17CC() < 270.0f) { + if (fn_1_17CC() < (4.5f * REFRESH_RATE)) { fn_1_1708(); return; } @@ -829,8 +864,9 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) { } } -void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { - ModelData* temp_r27; +void fn_1_E034(omObjData *arg0, unkObjStruct *arg1) +{ + ModelData *temp_r27; f32 var_f28; f32 var_f29; f32 var_f30; @@ -842,16 +878,20 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { switch (arg1->unk60) { case 0: lbl_1_bss_84 = lbl_1_data_0[arg1->unk4A]; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 7.0f, 0x40000001); +#if VERSION_NTSC + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); +#else + Hu3DMotionSet(arg0->model[0], arg0->motion[4]); +#endif HuAudCharVoicePlay(arg1->unk8, 0x125); arg1->unk60++; break; case 1: if (temp_r27->unk_64 >= (Hu3DMotionMaxTimeGet(arg0->model[0]) - 1.0f)) { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 7.0f, 0x40000001U); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); arg1->unkC = arg1->unkE = 0; arg1->unk68 = arg1->unk30.y; - + for (var_r29 = 0, var_r28 = -1; var_r29 < 5; var_r29++) { if (lbl_1_data_14[var_r29] != 0) { var_r28++; @@ -866,7 +906,7 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { } break; case 2: - lbl_1_bss_84++; + lbl_1_bss_84 += REFRESH_RATE_F / 60.0f; if (lbl_1_bss_84 >= 135.0f) { lbl_1_bss_84 = 135.0f; arg1->unkE = arg1->unk10 = 0; @@ -878,12 +918,12 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { arg1->unk18.z = (arg1->unk5C * sind(lbl_1_bss_84)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } arg1->unkC++; - var_f31 = arg1->unkC / 10.0f; + var_f31 = arg1->unkC / (REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; } @@ -892,14 +932,14 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { break; case 3: arg1->unkE++; - var_f31 = arg1->unkE / 10.0f; + var_f31 = arg1->unkE / (REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; } var_f30 = 315.0f; arg1->unk30.y = arg1->unk6C + (var_f31 * (var_f30 - arg1->unk6C)); arg1->unk10++; - var_f31 = arg1->unk10 / 50.0f; + var_f31 = arg1->unk10 / (5.0f * REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; arg1->unkC = arg1->unkE = arg1->unk10 = 0; @@ -907,8 +947,8 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { arg1->unk60++; } var_f29 = arg1->unk5C + ((700.0f - arg1->unk5C) * var_f31); - arg1->unk18.x = (var_f29 * cos(2.356194490192345)); // atan2(1.0, -1.0) - arg1->unk18.z = (var_f29 * sin(2.356194490192345)); + arg1->unk18.x = var_f29 * cosd(135); + arg1->unk18.z = var_f29 * sind(135); var_f29 = 0.3f; var_f28 = 0.6f; if (var_f31 >= var_f29) { @@ -921,12 +961,12 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { } break; case 4: - lbl_1_bss_84 -= 0.5f; + lbl_1_bss_84 -= REFRESH_RATE_F / 120; if (lbl_1_bss_84 <= 110.0f) { lbl_1_bss_84 = 110.0f; arg1->unk60 = 0; arg1->unkC = 0; - arg1->unkE = (3 - lbl_1_data_1D8) * 0x1E; + arg1->unkE = (3 - lbl_1_data_1D8) * (s32)(0.5f * REFRESH_RATE_F); arg1->unk14 = 0; arg1->unk3C.y = 90.0f; fn_1_F4D4(arg1, 15, 1); @@ -936,12 +976,12 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { arg1->unk18.z = (700.0 * sind(lbl_1_bss_84)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } arg1->unk10++; - var_f31 = arg1->unk10 / 10.0f; + var_f31 = arg1->unk10 / (REFRESH_RATE_F / 6.0f); if (var_f31 >= 1.0f) { var_f31 = 1.0f; } @@ -950,8 +990,9 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) { } } -u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) { - ModelData* temp_r29; +u8 fn_1_E8AC(omObjData *arg0, unkObjStruct *arg1) +{ + ModelData *temp_r29; f32 var_f31; s32 temp_r28; s16 temp_r27; @@ -960,13 +1001,13 @@ u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) { switch (arg1->unk60) { case 0: lbl_1_bss_70 = 0; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 7.0f, 0); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 7.0f, HU3D_MOTATTR_NONE); HuAudCharVoicePlay(arg1->unk8, 0x12E); arg1->unk60++; break; case 1: if (fn_1_4EA8(7U) == 5) { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, 0x40000001); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); arg1->unkC = 0; arg1->unk68 = arg1->unk30.y; var_f31 = lbl_1_data_0[arg1->unk4A]; @@ -975,13 +1016,14 @@ u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) { arg1->unk24.x = (840.0000610351563 * cosd(var_f31)); arg1->unk24.y = 0.0f; arg1->unk24.z = (840.0000610351563 * sind(var_f31)); - } else { + } + else { arg1->unk24.x = (1050.0 * cosd(var_f31)); arg1->unk24.y = 0.0f; arg1->unk24.z = (1050.0 * sind(var_f31)); } arg1->unk30.y = 0.0f; - PSMTXRotRad(temp_r29->unk_F0, 0x59, 0.017453292f * arg1->unk68); + MTXRotRad(temp_r29->unk_F0, 0x59, 0.017453292f * arg1->unk68); arg1->unk60++; if (lbl_1_data_1D8 == 0) { fn_1_18E0(); @@ -991,7 +1033,7 @@ u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) { case 2: arg1->unkC++; arg1->unk68 += 40.0f; - var_f31 = arg1->unkC / 90.0f; + var_f31 = arg1->unkC / (1.5f * REFRESH_RATE_F); if (var_f31 >= 1.0f) { var_f31 = 1.0f; arg1->unk60++; @@ -1000,11 +1042,11 @@ u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) { arg1->unk18.y = fn_1_93D0(lbl_1_bss_78.y, 1400.0f + lbl_1_bss_78.y, 0.0f, var_f31); arg1->unk18.z = lbl_1_bss_78.z + (var_f31 * (arg1->unk24.z - lbl_1_bss_78.x)); arg1->unk30.x = 180.0f * var_f31; - PSMTXRotRad(temp_r29->unk_F0, 0x59, 0.017453292f * arg1->unk68); + MTXRotRad(temp_r29->unk_F0, 0x59, 0.017453292f * arg1->unk68); break; case 3: fn_1_F4D4(arg1, 15, 8); - Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); temp_r27 = lbl_1_data_1D8 + 1; temp_r28 = arg1->unk4; GWPlayerCoinWinSet(temp_r28, temp_r27); @@ -1014,7 +1056,8 @@ u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) { return 0; } -s32 fn_1_ED88(omObjData* arg0, s16 arg1, u32 arg2) { +s32 fn_1_ED88(omObjData *arg0, s16 arg1, u32 arg2) +{ s16 var_r28; s16 var_r29; @@ -1025,39 +1068,42 @@ s32 fn_1_ED88(omObjData* arg0, s16 arg1, u32 arg2) { } } -void fn_1_EE78(void) { +void fn_1_EE78(void) +{ s16 var_r31; - unkObjStruct* var_r30; - + unkObjStruct *var_r30; + for (var_r31 = 0; var_r31 < 4; var_r31++) { - var_r30 = (unkObjStruct*)lbl_1_bss_C0[var_r31]->data; + var_r30 = (unkObjStruct *)lbl_1_bss_C0[var_r31]->data; if (fn_1_F4C0(var_r30, 15) == 8) { - Hu3DMotionShiftSet(lbl_1_bss_C0[var_r31]->model[0], lbl_1_bss_C0[var_r31]->motion[6], 0.0f, 7.0f, 0); + Hu3DMotionShiftSet(lbl_1_bss_C0[var_r31]->model[0], lbl_1_bss_C0[var_r31]->motion[6], 0.0f, 7.0f, HU3D_MOTATTR_NONE); } } } -void fn_1_EF50(void) { - unkObjStruct* var_r30; +void fn_1_EF50(void) +{ + unkObjStruct *var_r30; s16 var_r28; s16 var_r29; s16 var_r31; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { - var_r30 = (unkObjStruct*)lbl_1_bss_C0[var_r31]->data; + var_r30 = (unkObjStruct *)lbl_1_bss_C0[var_r31]->data; if (fn_1_F4C0(var_r30, 15) == 8) { var_r28 = Hu3DData[lbl_1_bss_C0[var_r31]->model[0]].unk_08; var_r29 = Hu3DData[lbl_1_bss_C0[var_r31]->model[0]].unk_0C; if ((var_r29 != lbl_1_bss_C0[var_r31]->motion[0]) && (var_r28 != lbl_1_bss_C0[var_r31]->motion[0])) { - Hu3DMotionShiftSet(lbl_1_bss_C0[var_r31]->model[0], lbl_1_bss_C0[var_r31]->motion[0], 0.0f, 7.0f, 0x40000001); + Hu3DMotionShiftSet(lbl_1_bss_C0[var_r31]->model[0], lbl_1_bss_C0[var_r31]->motion[0], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); } } } } -s16 fn_1_F0FC(void) { +s16 fn_1_F0FC(void) +{ s16 var_r31; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { if (lbl_1_bss_B8[var_r31] != -1) { return lbl_1_bss_B8[var_r31]; @@ -1066,21 +1112,23 @@ s16 fn_1_F0FC(void) { return 0; } -void fn_1_F168(void) { - omObjData* temp_r31; +void fn_1_F168(void) +{ + omObjData *temp_r31; s16 var_r30; - unkObjStruct* var_r29; - + unkObjStruct *var_r29; + for (var_r30 = 0; var_r30 < 4; var_r30++) { temp_r31 = lbl_1_bss_C0[lbl_1_bss_B8[var_r30]]; - var_r29 = (unkObjStruct*)temp_r31->data; + var_r29 = (unkObjStruct *)temp_r31->data; fn_1_F4D4(var_r29, 15, 1); - Hu3DMotionShiftSet(temp_r31->model[0], temp_r31->motion[2], 0.0f, 7.0f, 0x40000001); + Hu3DMotionShiftSet(temp_r31->model[0], temp_r31->motion[2], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); } } -void fn_1_F228(void) { - omObjData* temp_r30; +void fn_1_F228(void) +{ + omObjData *temp_r30; s16 temp_r0; s16 var_r29; s32 temp_r27; @@ -1089,12 +1137,12 @@ void fn_1_F228(void) { u32 temp_r0_2; u32 temp_r3; u32 temp_r3_2; - unkObjStruct* temp_r31; - + unkObjStruct *temp_r31; + for (var_r29 = 0; var_r29 < 4; var_r29++) { if (lbl_1_bss_B8[var_r29] != -1) { temp_r30 = lbl_1_bss_C0[lbl_1_bss_B8[var_r29]]; - temp_r31 = (unkObjStruct*)temp_r30->data; + temp_r31 = (unkObjStruct *)temp_r30->data; if (temp_r31->unkA == 0) { switch (GWPlayerCfg[temp_r31->unk4].diff) { case 0: @@ -1117,32 +1165,37 @@ void fn_1_F228(void) { temp_r31->unkA = -1; temp_r31->unkC = temp_r31->unkE = 0; fn_1_F4D4(temp_r31, 15, 2); - } else if (temp_r31->unkA == -1) { + } + else if (temp_r31->unkA == -1) { temp_r31->unkA = lbl_1_data_1D8; - } else { + } + else { temp_r31->unkA--; temp_r31->unk24 = temp_r31->unk18; temp_r31->unkC = 0; - temp_r31->unkE = 0x1E; + temp_r31->unkE = (s32)(0.5f * REFRESH_RATE_F); temp_r31->unk14 = 0; fn_1_F4D4(temp_r31, 15, 1); } if (temp_r30->motion[2] != Hu3DData[temp_r30->model[0]].unk_08) { - Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 0.0f, 7.0f, 0x40000001U); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 0.0f, 7.0f, HU3D_MOTATTR_LOOP); } } } } -u16 fn_1_F4C0(unkObjStruct* arg0, u16 arg1) { +u16 fn_1_F4C0(unkObjStruct *arg0, u16 arg1) +{ return arg0->unk0 & arg1; } -void fn_1_F4D4(unkObjStruct* arg0, u16 arg1, u16 arg2) { +void fn_1_F4D4(unkObjStruct *arg0, u16 arg1, u16 arg2) +{ arg0->unk0 &= ~arg1; arg0->unk0 |= arg2; } -s32 fn_1_F4FC(s32 arg0) { +s32 fn_1_F4FC(s32 arg0) +{ return lbl_1_bss_B8[arg0]; -} \ No newline at end of file +} diff --git a/src/REL/m441Dll/main.c b/src/REL/m441Dll/main.c index b5545366..bc0d7e77 100644 --- a/src/REL/m441Dll/main.c +++ b/src/REL/m441Dll/main.c @@ -1,28 +1,27 @@ #include "REL/executor.h" #include "game/chrman.h" +#include "game/frand.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/frand.h" #include "game/wipe.h" -#include "game/minigame_seq.h" #include "game/gamework_data.h" +#include "game/mapspace.h" #include "game/pad.h" #include "game/printfunc.h" -#include "game/mapspace.h" -#include "game/hsfman.h" -#include "game/hsfmotion.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/esprite.h" #include "game/sprite.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" - +#include "version.h" #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -66,12 +65,14 @@ float lbl_1_bss_190; s32 lbl_1_bss_150[16]; UnkBss1B0Struct lbl_1_bss_50[32]; -void fn_1_0(void) { +void fn_1_0(void) +{ lbl_1_bss_1F8.unk04 = NULL; lbl_1_bss_1F8.unk08 = NULL; } -void fn_1_24(u16 arg0, s16 arg1) { +void fn_1_24(u16 arg0, s16 arg1) +{ UnkBss1F8Struct *temp_r31; UnkBss1F8Struct *temp_r30; UnkBss1F8Struct *temp_r29; @@ -89,7 +90,8 @@ void fn_1_24(u16 arg0, s16 arg1) { temp_r31->unk08 = temp_r29; } -s16 fn_1_AC(s16 arg0) { +s16 fn_1_AC(s16 arg0) +{ UnkBss1F8Struct *var_r31; UnkBss1F8Struct *temp_r29; UnkBss1F8Struct *temp_r30; @@ -113,12 +115,14 @@ s16 fn_1_AC(s16 arg0) { return -1; } -void fn_1_150(void) { +void fn_1_150(void) +{ lbl_1_bss_1E0.unk10 = NULL; lbl_1_bss_1E0.unk14 = NULL; } -void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ UnkBss1E0Struct *temp_r27; UnkBss1E0Struct *var_r31; UnkBss1E0Struct *temp_r28; @@ -148,7 +152,8 @@ void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec var_r31->unk14 = temp_r27; } -void fn_1_2D8(void) { +void fn_1_2D8(void) +{ UnkBss1E0Struct *var_r31; UnkBss1E0Struct *temp_r28; UnkBss1E0Struct *temp_r29; @@ -183,7 +188,8 @@ void fn_1_2D8(void) { } } -void fn_1_414(void) { +void fn_1_414(void) +{ s32 i; for (i = 0; i < 32; i++) { @@ -192,7 +198,8 @@ void fn_1_414(void) { } } -s16 fn_1_46C(s32 arg0) { +s16 fn_1_46C(s32 arg0) +{ s32 i; for (i = 0; i < 32; i++) { @@ -210,37 +217,40 @@ s16 fn_1_46C(s32 arg0) { return Hu3DModelCreateFile(arg0); } -void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ s32 var_r30; espBankSet(arg0[arg1 + 1], 10); espBankSet(arg0[arg1 + 4], 11); - if (36000 <= arg2) { - arg2 = 35999; + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; } - var_r30 = arg2 / 3600; - arg2 -= var_r30 * 3600; + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); if (var_r30 > 9) { var_r30 = 9; } espBankSet(arg0[arg1], var_r30); - var_r30 = arg2 / 60; - arg2 -= var_r30 * 60; + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; espBankSet(arg0[arg1 + 2], var_r30 / 10); espBankSet(arg0[arg1 + 3], var_r30 % 10); - var_r30 = 101.5f * arg2 / 60.0f; + var_r30 = 101.5f * arg2 / REFRESH_RATE; espBankSet(arg0[arg1 + 5], var_r30 / 10); espBankSet(arg0[arg1 + 6], var_r30 % 10); } -void fn_1_798(s32 arg0) { +void fn_1_798(s32 arg0) +{ lbl_1_bss_190 = 0.0f; lbl_1_bss_1A0 = lbl_1_bss_1A4; GWMGRecordSet(arg0, lbl_1_bss_1A0); fn_1_580(lbl_1_bss_150, 7, lbl_1_bss_1A4); } -void fn_1_9EC(void) { +void fn_1_9EC(void) +{ s32 i; for (i = 0; i < 16; i++) { @@ -248,7 +258,8 @@ void fn_1_9EC(void) { } } -void fn_1_A40(void) { +void fn_1_A40(void) +{ float temp_f31; s32 i; @@ -261,7 +272,8 @@ void fn_1_A40(void) { } } -void fn_1_B4C(float arg0, s32 arg1) { +void fn_1_B4C(float arg0, s32 arg1) +{ float temp_f30; float temp_f31; s32 i; @@ -298,7 +310,8 @@ void fn_1_B4C(float arg0, s32 arg1) { } } -void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ float temp_f31; if (1.0f < arg0) { @@ -310,13 +323,15 @@ void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); } -void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ Hu3DCameraPosSetV(1, arg0, arg1, arg2); lbl_1_bss_1D0 = *arg0; lbl_1_bss_1B8 = *arg2; } -s32 fn_1_13DC(float arg0, Vec *arg1) { +s32 fn_1_13DC(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -325,13 +340,15 @@ s32 fn_1_13DC(float arg0, Vec *arg1) { Hu3DCameraPosSetV(1, &sp18, arg1, &spC); if (1.0f <= arg0) { return 1; - } else { + } + else { lbl_1_bss_194 = 1; return 0; } } -void fn_1_1710(float arg0, Vec *arg1) { +void fn_1_1710(float arg0, Vec *arg1) +{ Vec sp18; Vec spC; @@ -341,7 +358,8 @@ void fn_1_1710(float arg0, Vec *arg1) { lbl_1_bss_194 = 1; } -void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ Mtx sp1C; Vec sp10; float temp_f30; @@ -368,7 +386,8 @@ void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { arg2->z = 0.0f; } -void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ Mtx sp10; Hu3DModelObjMtxGet(arg0, arg1, sp10); @@ -377,22 +396,24 @@ void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { arg2->z = sp10[2][3]; } -void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ Mtx spC; ModelData *var_r30; var_r30 = &Hu3DData[arg0]; Hu3DModelObjMtxGet(arg0, arg1, spC); - PSMTXConcat(var_r30->unk_F0, spC, spC); + MTXConcat(var_r30->unk_F0, spC, spC); if (NULL != arg3) { - PSMTXCopy(spC, arg3); + MTXCopy(spC, arg3); } arg2->x = spC[0][3]; arg2->y = spC[1][3]; arg2->z = spC[2][3]; } -float fn_1_1E20(float arg0, float arg1, float arg2) { +float fn_1_1E20(float arg0, float arg1, float arg2) +{ float var_f31; float var_f30; @@ -410,11 +431,13 @@ float fn_1_1E20(float arg0, float arg1, float arg2) { return var_f30; } -void fn_1_1F24(s32 arg0) { +void fn_1_1F24(s32 arg0) +{ lbl_1_bss_198 = HuAudSeqPlay((s32)arg0); } -void fn_1_1F58(s32 arg0) { +void fn_1_1F58(s32 arg0) +{ if (lbl_1_bss_198 >= 0) { if (arg0 < 0) { arg0 = 1000; @@ -424,7 +447,8 @@ void fn_1_1F58(s32 arg0) { lbl_1_bss_198 = -1; } -void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ Vec sp18; float var_f28; s32 var_r30; @@ -433,7 +457,7 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { sp18.y = 0.0f; sp18.z = 0.0f; sp18.x = arg2 / 4.0f; - sp18.z = -(float) arg3 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; var_r30 = 0; var_f28 = VECMagXZ(&sp18); if (0.5f <= var_f28) { @@ -447,11 +471,12 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); if (8.0f <= var_f28) { var_r30 = 2; - } else { + } + else { var_r30 = 1; } } - PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); } omObjData *lbl_1_bss_4C; @@ -475,10 +500,7 @@ float lbl_1_bss_8; float lbl_1_bss_4; float lbl_1_bss_0; -s16 lbl_1_data_0[8] = { - 0, 1, 2, 3, - 4, 5, 6, 7 -}; +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; Vec lbl_1_data_10 = { 0, 100, 400 }; Vec lbl_1_data_1C = { 0, 1, 0 }; @@ -496,572 +518,498 @@ Vec lbl_1_data_98 = { 0, 3000, 1000 }; Vec lbl_1_data_A4 = { 0, 0, 0 }; s32 lbl_1_data_B0[8][16] = { - { - 0x005F0000, - 0x00480000, - 0x00480008, - 0x00480010, - 0x00480018, - 0x00480020, - 0x005F0000, - 0x00480030, - 0x00480028, - 0x005F0017, - 0x005F0018 - }, - { - 0x001A0000, - 0x00480001, - 0x00480009, - 0x00480011, - 0x00480019, - 0x00480021, - 0x001A0000, - 0x00480031, - 0x00480029, - 0x001A0017, - 0x001A0018 - }, - { - 0x006D0000, - 0x00480002, - 0x0048000A, - 0x00480012, - 0x0048001A, - 0x00480022, - 0x006D0000, - 0x00480032, - 0x0048002A, - 0x006D0017, - 0x006D0018 - }, - { - 0x008A0000, - 0x00480003, - 0x0048000B, - 0x00480013, - 0x0048001B, - 0x00480023, - 0x008A0000, - 0x00480033, - 0x0048002B, - 0x008A0017, - 0x008A0018 - }, - { - 0x00850000, - 0x00480004, - 0x0048000C, - 0x00480014, - 0x0048001C, - 0x00480024, - 0x00850000, - 0x00480034, - 0x0048002C, - 0x00850017, - 0x00850018 - }, - { - 0x00110000, - 0x00480005, - 0x0048000D, - 0x00480015, - 0x0048001D, - 0x00480025, - 0x00110000, - 0x00480035, - 0x0048002D, - 0x00110017, - 0x00110018 - }, - { - 0x000D0000, - 0x00480006, - 0x0048000E, - 0x00480016, - 0x0048001E, - 0x00480026, - 0x000D0000, - 0x00480036, - 0x0048002E, - 0x000D0017, - 0x000D0018 - }, - { - 0x00810000, - 0x00480007, - 0x0048000F, - 0x00480017, - 0x0048001F, - 0x00480027, - 0x00810000, - 0x00480037, - 0x0048002F, - 0x00810017, - 0x00810018 - } + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x08), + DATA_MAKE_NUM(DATADIR_M441, 0x10), + DATA_MAKE_NUM(DATADIR_M441, 0x18), + DATA_MAKE_NUM(DATADIR_M441, 0x20), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x30), + DATA_MAKE_NUM(DATADIR_M441, 0x28), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x01), + DATA_MAKE_NUM(DATADIR_M441, 0x09), + DATA_MAKE_NUM(DATADIR_M441, 0x11), + DATA_MAKE_NUM(DATADIR_M441, 0x19), + DATA_MAKE_NUM(DATADIR_M441, 0x21), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x31), + DATA_MAKE_NUM(DATADIR_M441, 0x29), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x02), + DATA_MAKE_NUM(DATADIR_M441, 0x0A), + DATA_MAKE_NUM(DATADIR_M441, 0x12), + DATA_MAKE_NUM(DATADIR_M441, 0x1A), + DATA_MAKE_NUM(DATADIR_M441, 0x22), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x32), + DATA_MAKE_NUM(DATADIR_M441, 0x2A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x03), + DATA_MAKE_NUM(DATADIR_M441, 0x0B), + DATA_MAKE_NUM(DATADIR_M441, 0x13), + DATA_MAKE_NUM(DATADIR_M441, 0x1B), + DATA_MAKE_NUM(DATADIR_M441, 0x23), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x33), + DATA_MAKE_NUM(DATADIR_M441, 0x2B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x04), + DATA_MAKE_NUM(DATADIR_M441, 0x0C), + DATA_MAKE_NUM(DATADIR_M441, 0x14), + DATA_MAKE_NUM(DATADIR_M441, 0x1C), + DATA_MAKE_NUM(DATADIR_M441, 0x24), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x34), + DATA_MAKE_NUM(DATADIR_M441, 0x2C), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x05), + DATA_MAKE_NUM(DATADIR_M441, 0x0D), + DATA_MAKE_NUM(DATADIR_M441, 0x15), + DATA_MAKE_NUM(DATADIR_M441, 0x1D), + DATA_MAKE_NUM(DATADIR_M441, 0x25), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x35), + DATA_MAKE_NUM(DATADIR_M441, 0x2D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x06), + DATA_MAKE_NUM(DATADIR_M441, 0x0E), + DATA_MAKE_NUM(DATADIR_M441, 0x16), + DATA_MAKE_NUM(DATADIR_M441, 0x1E), + DATA_MAKE_NUM(DATADIR_M441, 0x26), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x36), + DATA_MAKE_NUM(DATADIR_M441, 0x2E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x18), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x07), + DATA_MAKE_NUM(DATADIR_M441, 0x0F), + DATA_MAKE_NUM(DATADIR_M441, 0x17), + DATA_MAKE_NUM(DATADIR_M441, 0x1F), + DATA_MAKE_NUM(DATADIR_M441, 0x27), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_M441, 0x37), + DATA_MAKE_NUM(DATADIR_M441, 0x2F), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x18), + }, }; -s32 lbl_1_data_2B0[2] = { - 0x00480040, - 0x00480041 -}; +s32 lbl_1_data_2B0[2] = { DATA_MAKE_NUM(DATADIR_M441, 0x40), DATA_MAKE_NUM(DATADIR_M441, 0x41) }; s32 lbl_1_data_2B8[3] = { - 0x00480043, - 0x00480044, - 0x00480045 + DATA_MAKE_NUM(DATADIR_M441, 0x43), + DATA_MAKE_NUM(DATADIR_M441, 0x44), + DATA_MAKE_NUM(DATADIR_M441, 0x45), }; s32 lbl_1_data_2C4[4] = { - 0x00610022, - 0x00610021, - 0x0061002F, - 0x0061002F + DATA_MAKE_NUM(DATADIR_MGCONST, 0x22), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x21), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x2F), + DATA_MAKE_NUM(DATADIR_MGCONST, 0x2F), }; -float lbl_1_data_2D4[4][4] = { - -350, 0, 350, 135, - 350, 0, 350, 225, - 350, 0, -350, 315, - -350, 0, -350, 45 -}; +float lbl_1_data_2D4[4][4] = { -350, 0, 350, 135, 350, 0, 350, 225, 350, 0, -350, 315, -350, 0, -350, 45 }; s32 lbl_1_data_314[3] = { - 0x0048003D, - 0x0048003C, - 0x0048003B + DATA_MAKE_NUM(DATADIR_M441, 0x3D), + DATA_MAKE_NUM(DATADIR_M441, 0x3C), + DATA_MAKE_NUM(DATADIR_M441, 0x3B), }; s16 lbl_1_data_320[3] = { 10, 5, 2 }; s16 lbl_1_data_326[3] = { 1, 2, 3 }; -Vec lbl_1_data_32C[3] = { - { 0.5f, 0.5f, 0.5f }, - { 0.7f, 0.7f, 0.7f }, - { 0.9f, 0.9f, 0.9f } -}; +Vec lbl_1_data_32C[3] = { { 0.5f, 0.5f, 0.5f }, { 0.7f, 0.7f, 0.7f }, { 0.9f, 0.9f, 0.9f } }; -float lbl_1_data_350[3][2] = { - 0.5f, 4.0f, - 0.5f, 4.0f, - 2.0f, 6.0f -}; +float lbl_1_data_350[3][2] = { 0.5f, 4.0f, 0.5f, 4.0f, 2.0f, 6.0f }; -s32 lbl_1_data_368[1] = { 0x0048003E }; +s32 lbl_1_data_368[1] = { DATA_MAKE_NUM(DATADIR_M441, 0x3E) }; float lbl_1_data_36C[3] = { 0.7f, 85.0f, 22.0f }; float lbl_1_data_378[3] = { 0.8f, 70.0f, 27.0f }; float lbl_1_data_384[3] = { 0.9f, 55.0f, 32.0f }; float lbl_1_data_390[3] = { 1.0f, 40.0f, 37.0f }; -HsfanimStruct00 lbl_1_data_39C = { - 20, - { 0, 0 }, - 1, - 30, - 0, - { 0, -0.05f, 0 }, - 1.0f, - 0.99f, - 20.0f, - 0.98f, - 4, - { - { 128, 128, 128, 255 }, - { 255, 0, 255, 255 }, - { 0, 255, 255, 255 }, - { 255, 255, 255, 255 } - }, - { - { 128, 128, 128, 0 }, - { 255, 0, 255, 0 }, - { 0, 255, 255, 0 }, - { 255, 255, 255, 0 } - } -}; +HsfanimStruct00 lbl_1_data_39C = { 20, { 0, 0 }, 1, 30, 0, { 0, -0.05f, 0 }, 1.0f, 0.99f, 20.0f, 0.98f, 4, + { { 128, 128, 128, 255 }, { 255, 0, 255, 255 }, { 0, 255, 255, 255 }, { 255, 255, 255, 255 } }, + { { 128, 128, 128, 0 }, { 255, 0, 255, 0 }, { 0, 255, 255, 0 }, { 255, 255, 255, 0 } } }; -HsfanimStruct00 lbl_1_data_3EC = { - 30, - { 0, 0 }, - 1, - 0, - 360, - { 0, -0.05f, 0 }, - 10.0f, - 0.98f, - 20.0f, - 1.05f, - 4, - { - { 128, 128, 128, 255 }, - { 255, 0, 255, 255 }, - { 0, 255, 255, 255 }, - { 255, 255, 255, 255 } - }, - { - { 128, 128, 128, 0 }, - { 255, 0, 255, 0 }, - { 0, 255, 255, 0 }, - { 255, 255, 255, 0 } - } -}; +HsfanimStruct00 lbl_1_data_3EC = { 30, { 0, 0 }, 1, 0, 360, { 0, -0.05f, 0 }, 10.0f, 0.98f, 20.0f, 1.05f, 4, + { { 128, 128, 128, 255 }, { 255, 0, 255, 255 }, { 0, 255, 255, 255 }, { 255, 255, 255, 255 } }, + { { 128, 128, 128, 0 }, { 255, 0, 255, 0 }, { 0, 255, 255, 0 }, { 255, 255, 255, 0 } } }; HsfanimStruct00 lbl_1_data_43C = { - 60, - { 0, 0 }, - 1, - 0, - 360, - { 0, -0.05f, 0 }, - 10.0f, - 0.99f, - 30.0f, - 0.98f, - 1, - { - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 } - }, - { - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 } - }, + 60, + { 0, 0 }, + 1, + 0, + 360, + { 0, -0.05f, 0 }, + 10.0f, + 0.99f, + 30.0f, + 0.98f, + 1, + { { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, { 255, 255, 255, 255 } }, + { { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 } }, }; HsfanimStruct00 lbl_1_data_48C = { - 30, - { 0, 0 }, - 1, - 10, - 360, - { 0, 0.1f, 0 }, - 1.0f, - 1.0f, - 30.0f, - 1.05f, - 1, - { - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 }, - { 255, 255, 255, 255 } - }, - { - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 }, - { 255, 255, 255, 0 } - }, + 30, + { 0, 0 }, + 1, + 10, + 360, + { 0, 0.1f, 0 }, + 1.0f, + 1.0f, + 30.0f, + 1.05f, + 1, + { { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, { 255, 255, 255, 255 } }, + { { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 } }, }; #include "src/REL/executor.c" void fn_1_2454(omObjData *object) { - HuSysVWaitSet(1); - if(HuPadBtn[0] & PAD_BUTTON_X) { - lbl_1_bss_1A4 = -1; - } - print8(24, 32, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_1A8, lbl_1_bss_4C->work[0], lbl_1_bss_19E); - print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_0, lbl_1_bss_8, lbl_1_bss_4); - print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM)-HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemHeapSizeGet(HEAP_DATA)-HuMemUsedMallocSizeGet(HEAP_DATA)); - lbl_1_bss_4 -= HuPadSubStkX[0]/59.0f; - lbl_1_bss_8 -= 4.0f*(HuPadSubStkY[0]/59.0f); - lbl_1_bss_0 -= (HuPadTrigL[0]/150.0f)*4.0f; - lbl_1_bss_0 += (HuPadTrigR[0]/150.0f)*4.0f; + HuSysVWaitSet(1); + if (HuPadBtn[0] & PAD_BUTTON_X) { + lbl_1_bss_1A4 = -1; + } + print8(24, 32, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_1A8, lbl_1_bss_4C->work[0], lbl_1_bss_19E); + print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_0, lbl_1_bss_8, lbl_1_bss_4); + print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + lbl_1_bss_4 -= HuPadSubStkX[0] / 59.0f; + lbl_1_bss_8 -= 4.0f * (HuPadSubStkY[0] / 59.0f); + lbl_1_bss_0 -= (HuPadTrigL[0] / 150.0f) * 4.0f; + lbl_1_bss_0 += (HuPadTrigR[0] / 150.0f) * 4.0f; } typedef struct work_53E8 { - float *unk0; - Vec unk4; - Vec unk10; - Vec unk1C; - Vec unk28; - Vec unk34; - Vec unk40; - Vec unk4C; - float unk58; - float unk5C; - float unk60; - Vec unk64; - Vec unk70; - Vec unk7C; - float unk88; - float unk8C; - s32 unk90; - s32 unk94; - s32 unk98; - s32 unk9C; - s32 unkA0; - s32 unkA4; - s32 unkA8; - s32 unkAC; - s32 unkB0; - s32 unkB4; - s32 unkB8; - s32 unkBC; - s32 unkC0; - s32 unkC4[3]; - s32 unkD0[4]; - s16 unkE0; - float unkE4; + float *unk0; + Vec unk4; + Vec unk10; + Vec unk1C; + Vec unk28; + Vec unk34; + Vec unk40; + Vec unk4C; + float unk58; + float unk5C; + float unk60; + Vec unk64; + Vec unk70; + Vec unk7C; + float unk88; + float unk8C; + s32 unk90; + s32 unk94; + s32 unk98; + s32 unk9C; + s32 unkA0; + s32 unkA4; + s32 unkA8; + s32 unkAC; + s32 unkB0; + s32 unkB4; + s32 unkB8; + s32 unkBC; + s32 unkC0; + s32 unkC4[3]; + s32 unkD0[4]; + s16 unkE0; + float unkE4; } Work53E8; - void fn_1_273C(Work53E8 *arg0) { - float temp_f31 = arg0->unk4.x; - float temp_f30 = arg0->unk4.z; - float temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(600.0f-arg0->unk60 < temp_f28) { - temp_f31 /= temp_f28; - temp_f30 /= temp_f28; - arg0->unk4.x = temp_f31*(600.0f-arg0->unk60); - arg0->unk4.z = temp_f30*(600.0f-arg0->unk60); - } + float temp_f31 = arg0->unk4.x; + float temp_f30 = arg0->unk4.z; + float temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (600.0f - arg0->unk60 < temp_f28) { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + arg0->unk4.x = temp_f31 * (600.0f - arg0->unk60); + arg0->unk4.z = temp_f30 * (600.0f - arg0->unk60); + } } void fn_1_2904(Work53E8 *arg0, s32 arg1) { - s32 i; - for(i=0; i<4; i++) { - Work53E8 *temp_r31 = lbl_1_bss_48[i]->data; - if(arg0->unkB0 != temp_r31->unkB0) { - float temp_f31 = arg0->unk4.x-temp_r31->unk4.x; - float temp_f30 = arg0->unk4.z-temp_r31->unk4.z; - float temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(temp_f28 < arg0->unk60+temp_r31->unk60) { - if(arg1 && arg0->unk1C.z == temp_r31->unk1C.z) { - arg0->unk1C.z += 55.0f*((0 > arg0->unk4.z) ? -1 : 1); - } - if(0.0f == temp_f28) { - temp_f31 = 0.0f; - temp_f30 = -1.0f; - } else { - temp_f31 /= temp_f28; - temp_f30 /= temp_f28; - } - arg0->unk4.x = temp_r31->unk4.x+(temp_f31*(arg0->unk60+temp_r31->unk60)); - arg0->unk4.z = temp_r31->unk4.z+(temp_f30*(arg0->unk60+temp_r31->unk60)); - } - } - - } + s32 i; + for (i = 0; i < 4; i++) { + Work53E8 *temp_r31 = lbl_1_bss_48[i]->data; + if (arg0->unkB0 != temp_r31->unkB0) { + float temp_f31 = arg0->unk4.x - temp_r31->unk4.x; + float temp_f30 = arg0->unk4.z - temp_r31->unk4.z; + float temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (temp_f28 < arg0->unk60 + temp_r31->unk60) { + if (arg1 && arg0->unk1C.z == temp_r31->unk1C.z) { + arg0->unk1C.z += 55.0f * ((0 > arg0->unk4.z) ? -1 : 1); + } + if (0.0f == temp_f28) { + temp_f31 = 0.0f; + temp_f30 = -1.0f; + } + else { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + } + arg0->unk4.x = temp_r31->unk4.x + (temp_f31 * (arg0->unk60 + temp_r31->unk60)); + arg0->unk4.z = temp_r31->unk4.z + (temp_f30 * (arg0->unk60 + temp_r31->unk60)); + } + } + } } void fn_1_2BD4(Work53E8 *arg0, omObjData *arg1, s32 arg2) { - s32 temp_r29; - if(!arg2) { - arg0->unk10.x = 0; - arg0->unk10.y = 0; - arg0->unk10.z = 0; - arg0->unk10.x = arg0->unkA4/4.0f; - arg0->unk10.z = -((float)arg0->unkA8)/4.0f; - } - temp_r29 = 1; - arg0->unk5C = VECMagXZ(&arg0->unk10); - if(0.5f <= arg0->unk5C) { - if(10.0f <= arg0->unk5C) { - arg0->unk10.x /= arg0->unk5C; - arg0->unk10.z /= arg0->unk5C; - arg0->unk5C = 10.0f; - arg0->unk10.x = 10.0f*arg0->unk10.x; - arg0->unk10.z = 10.0f*arg0->unk10.z; - } - arg0->unk58 = fn_1_1E20(arg0->unk58, atan2d(arg0->unk10.x, arg0->unk10.z), 0.4f); - if(8.0f <= arg0->unk5C) { - temp_r29 = 3; - } else { - temp_r29 = 2; - } - } - VECAdd(&arg0->unk4, &arg0->unk10, &arg0->unk4); - fn_1_273C(arg0); - fn_1_2904(arg0, arg2); - if(arg2) { - temp_r29 += 6; - if(temp_r29 > 6) { - temp_r29 = 7; - } - } - if(temp_r29 >= 0 && arg0->unk9C != temp_r29) { - arg0->unk9C = temp_r29; - Hu3DMotionShiftSet(arg1->model[0], arg1->motion[arg0->unk9C], 0, 8, 0x40000001); - } + s32 temp_r29; + if (!arg2) { + arg0->unk10.x = 0; + arg0->unk10.y = 0; + arg0->unk10.z = 0; + arg0->unk10.x = arg0->unkA4 / 4.0f; + arg0->unk10.z = -((float)arg0->unkA8) / 4.0f; + } + temp_r29 = 1; + arg0->unk5C = VECMagXZ(&arg0->unk10); + if (0.5f <= arg0->unk5C) { + if (10.0f <= arg0->unk5C) { + arg0->unk10.x /= arg0->unk5C; + arg0->unk10.z /= arg0->unk5C; + arg0->unk5C = 10.0f; + arg0->unk10.x = 10.0f * arg0->unk10.x; + arg0->unk10.z = 10.0f * arg0->unk10.z; + } + arg0->unk58 = fn_1_1E20(arg0->unk58, atan2d(arg0->unk10.x, arg0->unk10.z), 0.4f); + if (8.0f <= arg0->unk5C) { + temp_r29 = 3; + } + else { + temp_r29 = 2; + } + } + VECAdd(&arg0->unk4, &arg0->unk10, &arg0->unk4); + fn_1_273C(arg0); + fn_1_2904(arg0, arg2); + if (arg2) { + temp_r29 += 6; + if (temp_r29 > 6) { + temp_r29 = 7; + } + } + if (temp_r29 >= 0 && arg0->unk9C != temp_r29) { + arg0->unk9C = temp_r29; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[arg0->unk9C], 0, 8, HU3D_MOTATTR_LOOP); + } } void fn_1_3404(Work53E8 *arg0) { - float temp_f31; - float temp_f30; - float temp_f27; - float temp_f26; - float temp_f25; - - if(NULL == arg0->unk0) { - return; - } - temp_f31 = 0; - temp_f30 = 0; - if(arg0->unk94 == 0) { - temp_f31 = arg0->unk7C.x-arg0->unk4.x; - temp_f30 = arg0->unk7C.z-arg0->unk4.z; - temp_f27 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(10.0f <= temp_f27) { - temp_f31 /= temp_f27; - temp_f30 /= temp_f27; - } else { - temp_f31 = 0; - temp_f30 = 0; - } - if(170.0f < temp_f27 && 224.0f > temp_f27) { - if(200.0f > arg0->unk7C.y) { - arg0->unkAC |= PAD_BUTTON_B; - } else { - arg0->unkAC |= PAD_BUTTON_A; - } - arg0->unk94 = 1; - arg0->unk8C = arg0->unk0[1]+((frandf()*arg0->unk0[1])/2); - temp_f25 = 1.0f-(lbl_1_bss_1A4/3600.0f); - if(0.25f < temp_f25) { - arg0->unk8C *= arg0->unk90/(arg0->unk0[2]*temp_f25); - } - if(arg0->unk8C < frandmod(100)) { - arg0->unk94 = 0; - } - } - } else { - if(arg0->unk94 == 1) { - arg0->unk94 = 2; - temp_f26 = 360.0f*frandf(); - temp_f27 = (600.0f-arg0->unk60)*frandf(); - arg0->unk70.x = temp_f27*sind(temp_f26); - arg0->unk70.y = 0; - arg0->unk70.z = temp_f27*cosd(temp_f26); - } - temp_f31 = arg0->unk70.x-arg0->unk4.x; - temp_f30 = arg0->unk70.z-arg0->unk4.z; - temp_f27 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(10.0f <= temp_f27) { - temp_f31 /= temp_f27; - temp_f30 /= temp_f27; - } else { - temp_f31 = 0; - temp_f30 = 0; - arg0->unk94 = 1; - } - arg0->unk8C--; - if(0.0f > arg0->unk8C) { - arg0->unk94 = 0; - } - } - arg0->unkA4 = (72.0f*temp_f31)*arg0->unk0[0]; - arg0->unkA8 = (72.0f*-temp_f30)*arg0->unk0[0]; - if(ABS(arg0->unkA4) > 72) { - arg0->unkA4 = ((arg0->unkA4 < 0) ? -1 : 1)*72; - } - if(ABS(arg0->unkA8) > 72) { - arg0->unkA8 = ((arg0->unkA8 < 0) ? -1 : 1)*72; - } + float temp_f31; + float temp_f30; + float temp_f27; + float temp_f26; + float temp_f25; + + if (NULL == arg0->unk0) { + return; + } + temp_f31 = 0; + temp_f30 = 0; + if (arg0->unk94 == 0) { + temp_f31 = arg0->unk7C.x - arg0->unk4.x; + temp_f30 = arg0->unk7C.z - arg0->unk4.z; + temp_f27 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (10.0f <= temp_f27) { + temp_f31 /= temp_f27; + temp_f30 /= temp_f27; + } + else { + temp_f31 = 0; + temp_f30 = 0; + } + if (170.0f < temp_f27 && 224.0f > temp_f27) { + if (200.0f > arg0->unk7C.y) { + arg0->unkAC |= PAD_BUTTON_B; + } + else { + arg0->unkAC |= PAD_BUTTON_A; + } + arg0->unk94 = 1; + arg0->unk8C = arg0->unk0[1] + ((frandf() * arg0->unk0[1]) / 2); + temp_f25 = 1.0f - (lbl_1_bss_1A4 / (60.0f * REFRESH_RATE)); + if (0.25f < temp_f25) { + arg0->unk8C *= arg0->unk90 / (arg0->unk0[2] * temp_f25); + } + if (arg0->unk8C < frandmod(100)) { + arg0->unk94 = 0; + } + } + } + else { + if (arg0->unk94 == 1) { + arg0->unk94 = 2; + temp_f26 = 360.0f * frandf(); + temp_f27 = (600.0f - arg0->unk60) * frandf(); + arg0->unk70.x = temp_f27 * sind(temp_f26); + arg0->unk70.y = 0; + arg0->unk70.z = temp_f27 * cosd(temp_f26); + } + temp_f31 = arg0->unk70.x - arg0->unk4.x; + temp_f30 = arg0->unk70.z - arg0->unk4.z; + temp_f27 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (10.0f <= temp_f27) { + temp_f31 /= temp_f27; + temp_f30 /= temp_f27; + } + else { + temp_f31 = 0; + temp_f30 = 0; + arg0->unk94 = 1; + } + arg0->unk8C--; + if (0.0f > arg0->unk8C) { + arg0->unk94 = 0; + } + } + arg0->unkA4 = (72.0f * temp_f31) * arg0->unk0[0]; + arg0->unkA8 = (72.0f * -temp_f30) * arg0->unk0[0]; + if (ABS(arg0->unkA4) > 72) { + arg0->unkA4 = ((arg0->unkA4 < 0) ? -1 : 1) * 72; + } + if (ABS(arg0->unkA8) > 72) { + arg0->unkA8 = ((arg0->unkA8 < 0) ? -1 : 1) * 72; + } } void fn_1_3B04(Work53E8 *arg0, omObjData *arg1) { - arg0->unk64.z++; - if(10.0f >= arg0->unk64.z) { - float temp_f31 = (0.3f*sind(180.0f*(arg0->unk64.z/10.0f)))+1.5f; - Hu3DModelScaleSet(arg1->model[2], temp_f31, temp_f31, temp_f31); - } + arg0->unk64.z++; + if (10.0f >= arg0->unk64.z) { + float temp_f31 = (0.3f * sind(180.0f * (arg0->unk64.z / 10.0f))) + 1.5f; + Hu3DModelScaleSet(arg1->model[2], temp_f31, temp_f31, temp_f31); + } } void fn_1_40A8(omObjData *object); void fn_1_3C00(omObjData *object) { - Work53E8 *work = object->data; - Mtx hookMtx; - Vec netOfs; - if(work->unk98 == 2004 && lbl_1_bss_4C->work[0] >= 1005) { - work->unk98 = 2007; - work->unk64.x = 20; - Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 20, 0x40000001); - object->func = fn_1_40A8; - return; - } - work->unk88 = 10000; - if(GWPlayerCfg[work->unkB0].iscom) { - work->unkA4 = 0; - work->unkA8 = 0; - work->unkAC = 0; - fn_1_3404(work); - } else { - work->unkA4 = HuPadStkX[work->unkB8]; - work->unkA8 = HuPadStkY[work->unkB8]; - work->unkAC = HuPadBtnDown[work->unkB8]; - } - switch(work->unk98) { - case 2004: - fn_1_2BD4(work, object, 0); - if(work->unkAC & PAD_BUTTON_A) { - work->unk98 = 2005; - work->unk64.x = 10; - work->unkE4 = 0; - Hu3DModelAttrReset(object->model[0], 0x40000001); - Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, 0); - Hu3DMotionSet(object->model[1], object->motion[11]); - HuAudFXEmiterPlay(1814, &work->unk4); - } - if(work->unkAC & PAD_BUTTON_B) { - work->unk98 = 2005; - work->unk64.x = 10; - work->unkE4 = 0; - Hu3DModelAttrReset(object->model[0], 0x40000001); - Hu3DMotionShiftSet(object->model[0], object->motion[5], 0, 8, 0); - Hu3DMotionSet(object->model[1], object->motion[11]); - HuAudFXEmiterPlay(1814, &work->unk4); - } - break; - - case 2005: - work->unk64.x--; - if(0.0f > work->unk64.x && 20.0f < Hu3DMotionTimeGet(object->model[0])) { - work->unk98++; - } - work->unkE4++; - if(240.0f < work->unkE4) { - work->unk98 = 2006; - } - break; - - case 2006: - work->unkE4++; - if(240.0f < work->unkE4 || Hu3DMotionEndCheck(object->model[0])) { - work->unk98 = 2004; - work->unk9C = 1; - Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 8, 0x40000001); - } - break; - - default: - OSReport("*** player mode error(%d)!!\n", work->unk98); - break; - } - omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); - omSetRot(object, 0, work->unk58, 0); - netOfs.x = 0; - netOfs.y = 0; - netOfs.z = 170; - Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), hookMtx); - MTXMultVec(hookMtx, &netOfs, &work->unk28); - + Work53E8 *work = object->data; + Mtx hookMtx; + Vec netOfs; + if (work->unk98 == 2004 && lbl_1_bss_4C->work[0] >= 1005) { + work->unk98 = 2007; + work->unk64.x = 20; + Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 20, HU3D_MOTATTR_LOOP); + object->func = fn_1_40A8; + return; + } + work->unk88 = 10000; + if (GWPlayerCfg[work->unkB0].iscom) { + work->unkA4 = 0; + work->unkA8 = 0; + work->unkAC = 0; + fn_1_3404(work); + } + else { + work->unkA4 = HuPadStkX[work->unkB8]; + work->unkA8 = HuPadStkY[work->unkB8]; + work->unkAC = HuPadBtnDown[work->unkB8]; + } + switch (work->unk98) { + case 2004: + fn_1_2BD4(work, object, 0); + if (work->unkAC & PAD_BUTTON_A) { + work->unk98 = 2005; + work->unk64.x = 10; + work->unkE4 = 0; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, HU3D_MOTATTR_NONE); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + if (work->unkAC & PAD_BUTTON_B) { + work->unk98 = 2005; + work->unk64.x = 10; + work->unkE4 = 0; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(object->model[0], object->motion[5], 0, 8, HU3D_MOTATTR_NONE); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + break; + + case 2005: + work->unk64.x--; + if (0.0f > work->unk64.x && 20.0f < Hu3DMotionTimeGet(object->model[0])) { + work->unk98++; + } + work->unkE4++; + if (240.0f < work->unkE4) { + work->unk98 = 2006; + } + break; + + case 2006: + work->unkE4++; + if (240.0f < work->unkE4 || Hu3DMotionEndCheck(object->model[0])) { + work->unk98 = 2004; + work->unk9C = 1; + Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 8, HU3D_MOTATTR_LOOP); + } + break; + + default: + OSReport("*** player mode error(%d)!!\n", work->unk98); + break; + } + omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); + omSetRot(object, 0, work->unk58, 0); + netOfs.x = 0; + netOfs.y = 0; + netOfs.z = 170; + Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), hookMtx); + MTXMultVec(hookMtx, &netOfs, &work->unk28); } -static inline void fn_1_40A8InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { +static inline void fn_1_40A8InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) +{ arg0->x = arg1; arg0->y = arg2; arg0->z = arg3; @@ -1071,1089 +1019,1103 @@ void fn_1_892C(s16 arg0, s16 arg1, Vec *arg2); void fn_1_40A8(omObjData *object) { - float angle; - Mtx hookMtx; - Vec pos3D; - Vec pos2D; - Work53E8 *work = object->data; - s32 i; - - switch(work->unk98) { - case 2000: - if(lbl_1_bss_4C->work[0] == 1002 && 90.0f < lbl_1_bss_28) { - work->unk98++; - work->unk64.x = 10.0f; - Hu3DModelAttrReset(object->model[0], 0x40000003); - Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 10, 0); - Hu3DMotionSet(object->model[1], object->motion[11]); - HuAudFXEmiterPlay(1814, &work->unk4); - } - break; - - case 2001: - work->unk64.x--; - if(0.0f > work->unk64.x && Hu3DMotionEndCheck(object->model[0])) { - work->unk98++; - work->unk64.x = 10.0f; - Hu3DMotionShiftSet(object->model[0], object->motion[5], 0, 10, 0); - Hu3DMotionSet(object->model[1], object->motion[11]); - HuAudFXEmiterPlay(1814, &work->unk4); - } - break; - - case 2002: - work->unk64.x--; - if(0.0f > work->unk64.x && Hu3DMotionEndCheck(object->model[0])) { - work->unk98++; - Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 10, 0x40000001); - } - break; - - case 2003: - if(lbl_1_bss_4C->work[0] >= 1004) { - work->unk98++; - object->func = fn_1_3C00; - } - break; - - case 2007: - work->unk64.x--; - if(0.0f > work->unk64.x && lbl_1_bss_4C->work[0] == 1006) { - work->unk98++; - work->unk64.x = 40; - Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), hookMtx); - Hu3DMtxTransGet(hookMtx, &work->unk28); - Hu3DMtxRotGet(hookMtx, &work->unk34); - Hu3DMtxScaleGet(hookMtx, &work->unk40); - Hu3DModelPosSet(object->model[1], work->unk28.x, work->unk28.y, work->unk28.z); - Hu3DModelRotSet(object->model[1], work->unk34.x, work->unk34.y, work->unk34.z); - Hu3DModelScaleSet(object->model[1], work->unk40.x, work->unk40.y, work->unk40.z); - Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0)); - } - break; - - case 2008: - work->unk28.y += 4; - work->unk34.x += 24.0f; - work->unk40.x *= 0.95f; - work->unk40.y *= 0.95f; - work->unk40.z *= 0.95f; - Hu3DModelPosSet(object->model[1], work->unk28.x, work->unk28.y, work->unk28.z); - Hu3DModelRotSet(object->model[1], work->unk34.x, work->unk34.y, work->unk34.z); - Hu3DModelScaleSet(object->model[1], work->unk40.x, work->unk40.y, work->unk40.z); - work->unk64.x--; - if(0.0f > work->unk64.x) { - float temp_f24; - work->unk98++; - work->unk64.x = 0; - temp_f24 = (work->unkB0*160.0f)-240.0f; - work->unk1C.x = temp_f24; - work->unk1C.y = 0; - work->unk1C.z = 0; - Hu3DModelAttrSet(object->model[1], 1); - work->unkE0 = Hu3DParManLink(lbl_1_bss_2C, &lbl_1_data_48C); - Hu3DParManPosSet(work->unkE0, work->unk28.x, work->unk28.y, work->unk28.z); - Hu3DParManAttrReset(work->unkE0, 1); - Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unkE0), 1); - Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unkE0), 4); - HuAudFXPlay(1815); - - } - break; - - case 2009: - work->unk64.x++; - if(10.0f == work->unk64.x) { - Hu3DParManAttrSet(work->unkE0, 1); - } - work->unk10.x = 0; - work->unk10.y = 0; - work->unk10.z = 0; - work->unk10.x = work->unk1C.x-work->unk4.x; - work->unk10.z = work->unk1C.z-work->unk4.z; - if(10.0f < work->unk64.x && 0.0f == work->unk10.x && 0.0f == work->unk10.z && 0.0f == work->unk1C.z) { - work->unk98++; - work->unkA0 = 1; - } else { - fn_1_2BD4(work, object, 1); - if(0.0f != work->unk1C.z) { - work->unk1C.z -= ((0.0f > work->unk1C.z) ? -1 : 1)*5.0f; - } - } - break; - - case 2010: - work->unk58 = fn_1_1E20(work->unk58, 0.0f, 0.5f); - angle = fmod(-work->unk58, 360.0f); - if(-180.0f > angle) { - angle += 360.0f; - } - if(work->unkA0) { - if(8.0f > ABS(angle)) { - work->unkA0 = 0; - Hu3DModelPosSet(object->model[2], 0, 0, -10); - Hu3DMotionShiftSet(object->model[0], object->motion[6], 0, 4, 0x40000001); - } - } - if(lbl_1_bss_4C->work[0] == 1007) { - work->unk98++; - work->unk64.x = 10.0f; - Hu3DModelAttrReset(object->model[0], 0x40000001); - Hu3DMotionShiftSet(object->model[0], object->motion[8], 0, 8, 0); - work->unk64.y = -90; - fn_1_40A8InlineFunc(&pos3D, work->unk4.x, 250, work->unk4.z); - Hu3D3Dto2D(&pos3D, 1, &pos2D); - espTPLvlSet(work->unkD0[0], 0.5f); - espPosSet(work->unkD0[0], pos2D.x, pos2D.y); - espPosSet(work->unkD0[1], pos2D.x, pos2D.y); - espPosSet(work->unkD0[2], pos2D.x-14, 10+pos2D.y); - espPosSet(work->unkD0[3], (pos2D.x-14)+28, 10+pos2D.y); - for(i=0; i<4; i++) { - espScaleSet(work->unkD0[i], 0.1f, 0.1f); - espBankSet(work->unkD0[i], 0); - espDispOn(work->unkD0[i]); - } - work->unkE0 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_43C); - Hu3DParManPosSet(work->unkE0, pos3D.x, pos3D.y, pos3D.z); - } - break; - - case 2011: - work->unk64.y += 18.0f; - if(180.0f >= work->unk64.y) { - for(i=0; i<4; i++) { - espScaleSet(work->unkD0[i], sind(work->unk64.y)+1, sind(work->unk64.y)+1); - } - } - work->unk64.x--; - if(0.0f > work->unk64.x) { - float motTime = Hu3DMotionTimeGet(object->model[0]); - if(18.0f == motTime) { - Hu3DParManAttrSet(work->unkE0, 1); - Hu3DModelPosSet(object->model[2], 0, 0, 0); - Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 4)); - Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), object->model[2]); - } - if(40.0f == motTime) { - work->unk64.z = 0; - Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0)); - fn_1_1D18(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), &work->unk4C); - work->unk4C.z += 20.0f; - Hu3DModelPosSet(object->model[2], work->unk4C.x, work->unk4C.y, work->unk4C.z); - } - if(40.0f <= motTime) { - work->unk64.z++; - if(12.0f >= work->unk64.z) { - float scale = sind(150.0f*(work->unk64.z/12.0f))+1.0; - Hu3DModelScaleSet(object->model[2], scale, scale, scale); - } - } - if(Hu3DMotionEndCheck(object->model[0])) { - work->unk98++; - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DMotionSet(object->model[2], object->motion[14]); - for(i=0; i<4; i++) { - espScaleSet(work->unkD0[i], 1.0f, 1.0f); - } - } - } - break; - - case 2012: - if(Hu3DMotionEndCheck(object->model[2])) { - work->unk98++; - work->unk64.x = 0; - } - break; - - case 2013: - work->unk64.x--; - if(0.0f > work->unk64.x) { - s32 choType; - work->unk64.x = (20.0f*frandf())+20.0f; - choType = -1; - for(i=0; i<3; i++) { - if(choType < 0 && work->unkC4[i] > 0) { - choType = i; - } - } - if(choType < 0) { - work->unk98++; - work->unk64.x = 0; - } else { - lbl_1_bss_20++; - work->unkBC += lbl_1_data_326[choType]; - if(work->unkBC > 99) { - work->unkBC = 99; - } - work->unkC4[choType]--; - fn_1_892C(work->unkB0, choType, &work->unk4C); - HuAudFXPlay(1816); - espBankSet(work->unkD0[2], work->unkBC/10); - espBankSet(work->unkD0[3], work->unkBC%10); - work->unk64.z = 0; - } - } - break; - - case 2014: - work->unk64.x++; - if(30.0f == work->unk64.x) { - Hu3DModelAttrSet(object->model[2], 1); - work->unkE0 = Hu3DParManLink(lbl_1_bss_2C, &lbl_1_data_48C); - Hu3DParManPosSet(work->unkE0, work->unk4C.x, work->unk4C.y+20, work->unk4C.z); - Hu3DParManAttrReset(work->unkE0, 1); - Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unkE0), 1); - Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unkE0), 4); - HuAudFXPlay(1815); - } - if(40.0f == work->unk64.x) { - Hu3DParManAttrSet(work->unkE0, 1); - } - if(60.0f < work->unk64.x && work->unkC0 >= 0) { - work->unk98++; - if(work->unkC0 == 1) { - Hu3DMotionShiftSet(object->model[0], object->motion[9], 0, 20, 0); - } else { - Hu3DMotionShiftSet(object->model[0], object->motion[10], 0, 20, 0); - } - } - break; - - default: - OSReport("*** player mode error(%d)!!\n", work->unk98); - break; + float angle; + Mtx hookMtx; + Vec pos3D; + Vec pos2D; + Work53E8 *work = object->data; + s32 i; - case 2015: - break; - } - omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); - omSetRot(object, 0, work->unk58, 0); + switch (work->unk98) { + case 2000: + if (lbl_1_bss_4C->work[0] == 1002 && 90.0f < lbl_1_bss_28) { + work->unk98++; + work->unk64.x = 10.0f; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 10, HU3D_MOTATTR_NONE); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + break; + + case 2001: + work->unk64.x--; + if (0.0f > work->unk64.x && Hu3DMotionEndCheck(object->model[0])) { + work->unk98++; + work->unk64.x = 10.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[5], 0, 10, HU3D_MOTATTR_NONE); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + break; + + case 2002: + work->unk64.x--; + if (0.0f > work->unk64.x && Hu3DMotionEndCheck(object->model[0])) { + work->unk98++; + Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 10, HU3D_MOTATTR_LOOP); + } + break; + + case 2003: + if (lbl_1_bss_4C->work[0] >= 1004) { + work->unk98++; + object->func = fn_1_3C00; + } + break; + + case 2007: + work->unk64.x--; + if (0.0f > work->unk64.x && lbl_1_bss_4C->work[0] == 1006) { + work->unk98++; + work->unk64.x = 40; + Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), hookMtx); + Hu3DMtxTransGet(hookMtx, &work->unk28); + Hu3DMtxRotGet(hookMtx, &work->unk34); + Hu3DMtxScaleGet(hookMtx, &work->unk40); + Hu3DModelPosSet(object->model[1], work->unk28.x, work->unk28.y, work->unk28.z); + Hu3DModelRotSet(object->model[1], work->unk34.x, work->unk34.y, work->unk34.z); + Hu3DModelScaleSet(object->model[1], work->unk40.x, work->unk40.y, work->unk40.z); + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0)); + } + break; + + case 2008: + work->unk28.y += 4; + work->unk34.x += 24.0f; + work->unk40.x *= 0.95f; + work->unk40.y *= 0.95f; + work->unk40.z *= 0.95f; + Hu3DModelPosSet(object->model[1], work->unk28.x, work->unk28.y, work->unk28.z); + Hu3DModelRotSet(object->model[1], work->unk34.x, work->unk34.y, work->unk34.z); + Hu3DModelScaleSet(object->model[1], work->unk40.x, work->unk40.y, work->unk40.z); + work->unk64.x--; + if (0.0f > work->unk64.x) { + float temp_f24; + work->unk98++; + work->unk64.x = 0; + temp_f24 = (work->unkB0 * 160.0f) - 240.0f; + work->unk1C.x = temp_f24; + work->unk1C.y = 0; + work->unk1C.z = 0; + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + work->unkE0 = Hu3DParManLink(lbl_1_bss_2C, &lbl_1_data_48C); + Hu3DParManPosSet(work->unkE0, work->unk28.x, work->unk28.y, work->unk28.z); + Hu3DParManAttrReset(work->unkE0, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unkE0), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unkE0), 4); + HuAudFXPlay(1815); + } + break; + + case 2009: + work->unk64.x++; + if (10.0f == work->unk64.x) { + Hu3DParManAttrSet(work->unkE0, 1); + } + work->unk10.x = 0; + work->unk10.y = 0; + work->unk10.z = 0; + work->unk10.x = work->unk1C.x - work->unk4.x; + work->unk10.z = work->unk1C.z - work->unk4.z; + if (10.0f < work->unk64.x && 0.0f == work->unk10.x && 0.0f == work->unk10.z && 0.0f == work->unk1C.z) { + work->unk98++; + work->unkA0 = 1; + } + else { + fn_1_2BD4(work, object, 1); + if (0.0f != work->unk1C.z) { + work->unk1C.z -= ((0.0f > work->unk1C.z) ? -1 : 1) * 5.0f; + } + } + break; + + case 2010: + work->unk58 = fn_1_1E20(work->unk58, 0.0f, 0.5f); + angle = fmod(-work->unk58, 360.0f); + if (-180.0f > angle) { + angle += 360.0f; + } + if (work->unkA0) { + if (8.0f > ABS(angle)) { + work->unkA0 = 0; + Hu3DModelPosSet(object->model[2], 0, 0, -10); + Hu3DMotionShiftSet(object->model[0], object->motion[6], 0, 4, HU3D_MOTATTR_LOOP); + } + } + if (lbl_1_bss_4C->work[0] == 1007) { + work->unk98++; + work->unk64.x = 10.0f; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(object->model[0], object->motion[8], 0, 8, HU3D_MOTATTR_NONE); + work->unk64.y = -90; + fn_1_40A8InlineFunc(&pos3D, work->unk4.x, 250, work->unk4.z); + Hu3D3Dto2D(&pos3D, 1, &pos2D); + espTPLvlSet(work->unkD0[0], 0.5f); + espPosSet(work->unkD0[0], pos2D.x, pos2D.y); + espPosSet(work->unkD0[1], pos2D.x, pos2D.y); + espPosSet(work->unkD0[2], pos2D.x - 14, 10 + pos2D.y); + espPosSet(work->unkD0[3], (pos2D.x - 14) + 28, 10 + pos2D.y); + for (i = 0; i < 4; i++) { + espScaleSet(work->unkD0[i], 0.1f, 0.1f); + espBankSet(work->unkD0[i], 0); + espDispOn(work->unkD0[i]); + } + work->unkE0 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_43C); + Hu3DParManPosSet(work->unkE0, pos3D.x, pos3D.y, pos3D.z); + } + break; + + case 2011: + work->unk64.y += 18.0f; + if (180.0f >= work->unk64.y) { + for (i = 0; i < 4; i++) { + espScaleSet(work->unkD0[i], sind(work->unk64.y) + 1, sind(work->unk64.y) + 1); + } + } + work->unk64.x--; + if (0.0f > work->unk64.x) { + float motTime = Hu3DMotionTimeGet(object->model[0]); + if (18.0f == motTime) { + Hu3DParManAttrSet(work->unkE0, 1); + Hu3DModelPosSet(object->model[2], 0, 0, 0); + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 4)); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), object->model[2]); + } + if (40.0f == motTime) { + work->unk64.z = 0; + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0)); + fn_1_1D18(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), &work->unk4C); + work->unk4C.z += 20.0f; + Hu3DModelPosSet(object->model[2], work->unk4C.x, work->unk4C.y, work->unk4C.z); + } + if (40.0f <= motTime) { + work->unk64.z++; + if (12.0f >= work->unk64.z) { + float scale = sind(150.0f * (work->unk64.z / 12.0f)) + 1.0; + Hu3DModelScaleSet(object->model[2], scale, scale, scale); + } + } + if (Hu3DMotionEndCheck(object->model[0])) { + work->unk98++; + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DMotionSet(object->model[2], object->motion[14]); + for (i = 0; i < 4; i++) { + espScaleSet(work->unkD0[i], 1.0f, 1.0f); + } + } + } + break; + + case 2012: + if (Hu3DMotionEndCheck(object->model[2])) { + work->unk98++; + work->unk64.x = 0; + } + break; + + case 2013: + work->unk64.x--; + if (0.0f > work->unk64.x) { + s32 choType; + work->unk64.x = (20.0f * frandf()) + 20.0f; + choType = -1; + for (i = 0; i < 3; i++) { + if (choType < 0 && work->unkC4[i] > 0) { + choType = i; + } + } + if (choType < 0) { + work->unk98++; + work->unk64.x = 0; + } + else { + lbl_1_bss_20++; + work->unkBC += lbl_1_data_326[choType]; + if (work->unkBC > 99) { + work->unkBC = 99; + } + work->unkC4[choType]--; + fn_1_892C(work->unkB0, choType, &work->unk4C); + HuAudFXPlay(1816); + espBankSet(work->unkD0[2], work->unkBC / 10); + espBankSet(work->unkD0[3], work->unkBC % 10); + work->unk64.z = 0; + } + } + break; + + case 2014: + work->unk64.x++; + if (30.0f == work->unk64.x) { + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + work->unkE0 = Hu3DParManLink(lbl_1_bss_2C, &lbl_1_data_48C); + Hu3DParManPosSet(work->unkE0, work->unk4C.x, work->unk4C.y + 20, work->unk4C.z); + Hu3DParManAttrReset(work->unkE0, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unkE0), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unkE0), 4); + HuAudFXPlay(1815); + } + if (40.0f == work->unk64.x) { + Hu3DParManAttrSet(work->unkE0, 1); + } + if (60.0f < work->unk64.x && work->unkC0 >= 0) { + work->unk98++; + if (work->unkC0 == 1) { + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0, 20, HU3D_MOTATTR_NONE); + } + else { + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0, 20, HU3D_MOTATTR_NONE); + } + } + break; + + default: + OSReport("*** player mode error(%d)!!\n", work->unk98); + break; + + case 2015: + break; + } + omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); + omSetRot(object, 0, work->unk58, 0); } void fn_1_53E8(omObjData *object) { - Work53E8 *work = object->data; - s32 i; - - work->unk0 = NULL; - work->unk88 = 10000; - work->unk8C = 0; - work->unk90 = 0; - work->unk94 = 0; - work->unk7C.x = 0; - work->unk7C.y = 0; - work->unk7C.z = 0; - work->unkB0 = object->work[0]; - work->unkB4 = GWPlayerCfg[work->unkB0].character; - work->unkB8 = GWPlayerCfg[work->unkB0].pad_idx; - work->unk98 = 2000; - work->unkBC = 0; - work->unkC0 = -1; - for(i=0; i<3; i++) { - work->unkC4[i] = 0; - } - work->unk9C = 1; - work->unk60 = 50; - work->unk4.x = lbl_1_data_2D4[work->unkB0][0]; - work->unk4.y = lbl_1_data_2D4[work->unkB0][1]; - work->unk4.z = lbl_1_data_2D4[work->unkB0][2]; - work->unk58 = lbl_1_data_2D4[work->unkB0][3]; - work->unk4C.x = 0; - work->unk4C.y = 0; - work->unk4C.z = 0; - object->model[0] = CharModelCreate(lbl_1_data_0[work->unkB4], 2); - CharModelStepTypeSet(lbl_1_data_0[work->unkB4], 0); - for(i=0; i<16; i++) { - object->motion[i] = CharModelMotionCreate(lbl_1_data_0[work->unkB4], lbl_1_data_B0[work->unkB4][i]); - CharModelMotionSet(lbl_1_data_0[work->unkB4], object->motion[i]); - } - CharModelMotionIndexSet(work->unkB4, object->motion[2], 0x5F0002); - CharModelMotionIndexSet(work->unkB4, object->motion[7], 0x5F0002); - CharModelMotionIndexSet(work->unkB4, object->motion[3], 0x5F0003); - Hu3DModelAttrSet(object->model[0], 1); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelLayerSet(object->model[0], 2); - Hu3DMotionSet(object->model[0], object->motion[1]); - object->model[1] = Hu3DModelCreateFile(0x48003F); - for(i=11; i<=12; i++) { - object->motion[i] = Hu3DJointMotionFile(object->model[1], lbl_1_data_2B0[i-11]); - } - Hu3DModelAttrSet(object->model[1], 1); - Hu3DModelAttrReset(object->model[1], 0x40000001); - Hu3DModelLayerSet(object->model[1], 2); - Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), object->model[1]); - object->model[2] = Hu3DModelCreateFile(0x480042); - for(i=13; i<=15; i++) { - object->motion[i] = Hu3DJointMotionFile(object->model[2], lbl_1_data_2B8[i-13]); - } - Hu3DModelAttrSet(object->model[2], 1); - Hu3DModelAttrReset(object->model[2], 0x40000001); - Hu3DModelLayerSet(object->model[2], 2); - Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 4), object->model[2]); - for(i=0; i<4; i++) { - work->unkD0[i] = espEntry(lbl_1_data_2C4[i], 0, 0); - espDrawNoSet(work->unkD0[i], 0x40); - espDispOff(work->unkD0[i]); - espAttrSet(work->unkD0[i], HUSPR_ATTR_NOANIM); - espBankSet(work->unkD0[i], 0); - espPriSet(work->unkD0[i], 128-i); - espPosSet(work->unkD0[i], 0, 0); - if(i == 0) { - espColorSet(work->unkD0[i], 0, 0, 0); - } - } - omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); - omSetRot(object, 0, work->unk58, 0); - for(i=0; i<3; i++) { - Hu3DModelShadowSet(object->model[i]); - } - for(i=0; i<3; i++) { - Hu3DModelAttrReset(object->model[i], 1); - } - if(GWPlayerCfg[work->unkB0].iscom) { - switch(GWPlayerCfg[work->unkB0].diff) { - case 0: - work->unk0 = lbl_1_data_36C; - break; - - case 1: - work->unk0 = lbl_1_data_378; - break; - - case 2: - work->unk0 = lbl_1_data_384; - break; - - case 3: - default: - work->unk0 = lbl_1_data_390; - break; - } - } - CharModelLayerSetAll2(6); - CharModelMotionDataClose(lbl_1_data_0[work->unkB4]); - object->func = fn_1_40A8; + Work53E8 *work = object->data; + s32 i; + + work->unk0 = NULL; + work->unk88 = 10000; + work->unk8C = 0; + work->unk90 = 0; + work->unk94 = 0; + work->unk7C.x = 0; + work->unk7C.y = 0; + work->unk7C.z = 0; + work->unkB0 = object->work[0]; + work->unkB4 = GWPlayerCfg[work->unkB0].character; + work->unkB8 = GWPlayerCfg[work->unkB0].pad_idx; + work->unk98 = 2000; + work->unkBC = 0; + work->unkC0 = -1; + for (i = 0; i < 3; i++) { + work->unkC4[i] = 0; + } + work->unk9C = 1; + work->unk60 = 50; + work->unk4.x = lbl_1_data_2D4[work->unkB0][0]; + work->unk4.y = lbl_1_data_2D4[work->unkB0][1]; + work->unk4.z = lbl_1_data_2D4[work->unkB0][2]; + work->unk58 = lbl_1_data_2D4[work->unkB0][3]; + work->unk4C.x = 0; + work->unk4C.y = 0; + work->unk4C.z = 0; + object->model[0] = CharModelCreate(lbl_1_data_0[work->unkB4], 2); + CharModelStepTypeSet(lbl_1_data_0[work->unkB4], 0); + for (i = 0; i < 16; i++) { + object->motion[i] = CharModelMotionCreate(lbl_1_data_0[work->unkB4], lbl_1_data_B0[work->unkB4][i]); + CharModelMotionSet(lbl_1_data_0[work->unkB4], object->motion[i]); + } + CharModelMotionIndexSet(work->unkB4, object->motion[2], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + CharModelMotionIndexSet(work->unkB4, object->motion[7], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + CharModelMotionIndexSet(work->unkB4, object->motion[3], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], object->motion[1]); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M441, 0x3F)); + for (i = 11; i <= 12; i++) { + object->motion[i] = Hu3DJointMotionFile(object->model[1], lbl_1_data_2B0[i - 11]); + } + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[1], 2); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), object->model[1]); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M441, 0x42)); + for (i = 13; i <= 15; i++) { + object->motion[i] = Hu3DJointMotionFile(object->model[2], lbl_1_data_2B8[i - 13]); + } + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[2], 2); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 4), object->model[2]); + for (i = 0; i < 4; i++) { + work->unkD0[i] = espEntry(lbl_1_data_2C4[i], 0, 0); + espDrawNoSet(work->unkD0[i], 0x40); + espDispOff(work->unkD0[i]); + espAttrSet(work->unkD0[i], HUSPR_ATTR_NOANIM); + espBankSet(work->unkD0[i], 0); + espPriSet(work->unkD0[i], 128 - i); + espPosSet(work->unkD0[i], 0, 0); + if (i == 0) { + espColorSet(work->unkD0[i], 0, 0, 0); + } + } + omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); + omSetRot(object, 0, work->unk58, 0); + for (i = 0; i < 3; i++) { + Hu3DModelShadowSet(object->model[i]); + } + for (i = 0; i < 3; i++) { + Hu3DModelAttrReset(object->model[i], HU3D_ATTR_DISPOFF); + } + if (GWPlayerCfg[work->unkB0].iscom) { + switch (GWPlayerCfg[work->unkB0].diff) { + case 0: + work->unk0 = lbl_1_data_36C; + break; + + case 1: + work->unk0 = lbl_1_data_378; + break; + + case 2: + work->unk0 = lbl_1_data_384; + break; + + case 3: + default: + work->unk0 = lbl_1_data_390; + break; + } + } + CharModelLayerSetAll2(6); + CharModelMotionDataClose(lbl_1_data_0[work->unkB4]); + object->func = fn_1_40A8; } typedef struct work_713C { - Vec unk0; - Vec unkC; - Vec unk18; - Vec unk24; - s16 unk30; - s32 unk34; - s32 unk38; + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + s16 unk30; + s32 unk34; + s32 unk38; } Work713C; void fn_1_5B2C(omObjData *object) { - Hu3DModelAttrSet(object->model[0], 1); - fn_1_24(object->work[0]+4096, object->model[0]); - lbl_1_bss_18[object->work[0]]--; - Hu3DParManKill(((Work713C *)object->data)->unk30); - omDelObjEx(lbl_1_bss_1DC, object); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_24(object->work[0] + 4096, object->model[0]); + lbl_1_bss_18[object->work[0]]--; + Hu3DParManKill(((Work713C *)object->data)->unk30); + omDelObjEx(lbl_1_bss_1DC, object); } void fn_1_74F4(s32 arg0); void fn_1_5C04(omObjData *object) { - Work713C *temp_r31; - Work53E8 *temp_r29; - omObjData *temp_r28; - float *temp_r24; - - s32 temp_r23; - s32 temp_r22; - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f23; - float sp78; - temp_r31 = object->data; - if(lbl_1_bss_4C->work[0] < 1002) { - return; - } - if(temp_r31->unk38) { - if(lbl_1_bss_4C->work[0] >= 1006) { - fn_1_5B2C(object); - } else { - temp_r31->unk24.z--; - if(20.0f == temp_r31->unk24.z) { - Hu3DParManAttrSet(temp_r31->unk30, 1); - } - if(0.0f > temp_r31->unk24.z) { - fn_1_5B2C(object); - fn_1_74F4(1); - } - } - return; - } else { - if(lbl_1_bss_4C->work[0] >= 1006) { - temp_r31->unk18.y += 0.1f; - temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, (180.0f > temp_r31->unk18.x) ? 90.0f : 270.0f, 0.05f); - temp_r31->unk0.x += temp_r31->unk18.y*sind(temp_r31->unk18.x); - temp_r31->unk0.z += temp_r31->unk18.y*cosd(temp_r31->unk18.x); - if(1200.0f < ABS(temp_r31->unk0.x)) { - fn_1_5B2C(object); - return; - } - } else { - if(temp_r31->unk34) { - temp_f31 = -temp_r31->unk0.x; - temp_f30 = -temp_r31->unk0.z; - temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, atan2d(temp_f31, temp_f30), 0.05f); - temp_r31->unk0.x += temp_r31->unk18.y*sind(temp_r31->unk18.x); - temp_r31->unk0.z += temp_r31->unk18.y*cosd(temp_r31->unk18.x); - temp_f31 = -temp_r31->unk0.x; - temp_f30 = -temp_r31->unk0.z; - temp_f23 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(600.0f >= temp_f23) { - temp_r31->unk34 = 0; - } - } else { - temp_r31->unk18.x += ((frandf()*2.0f)-1.0f)*3.0f; - temp_r31->unk18.y += ((frandf()*2.0f)-1.0f)*0.1f; - temp_r24 = &lbl_1_data_350[object->work[0]][0]; - if(temp_r24[0] > temp_r31->unk18.y) { - temp_r31->unk18.y = temp_r24[0]; - } - if(temp_r24[1] < temp_r31->unk18.y) { - temp_r31->unk18.y = temp_r24[1]; - } - temp_r31->unk0.x += temp_r31->unk18.y*sind(temp_r31->unk18.x); - temp_r31->unk0.z += temp_r31->unk18.y*cosd(temp_r31->unk18.x); - temp_f31 = -temp_r31->unk0.x; - temp_f30 = -temp_r31->unk0.z; - temp_f23 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); - if(600.0f < temp_f23) { - temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, atan2d(temp_f31, temp_f30), 0.05f); - } - } - } - temp_f23 = ABS(temp_r31->unk24.y-temp_r31->unk0.y); - if(2.0f > temp_f23) { - temp_r31->unk24.x--; - if(0.0f > temp_r31->unk24.x) { - temp_r31->unk24.x = 60.0f; - if(frandmod(100) > 50) { - temp_r31->unk24.y = (frandf()*220.0f)+80.0f; - } - } - } else { - temp_r31->unk0.y += (temp_r31->unk24.y > temp_r31->unk0.y) ? 1.0f : -1.0f; - } - temp_r31->unk18.z += (frandf()*4.0f)+4.0f; - omSetTra(object, temp_r31->unk0.x, (sind(temp_r31->unk18.z)*10.0)+temp_r31->unk0.y, temp_r31->unk0.z); - omSetRot(object, 0, temp_r31->unk18.x+180.0f, 0); - if(temp_r31->unk30 >= 0) { - temp_f31 = sind(temp_r31->unk18.x+180.0f)*30; - temp_f30 = cosd(temp_r31->unk18.x+180.0f)*30; - Hu3DParManPosSet(temp_r31->unk30, temp_r31->unk0.x+temp_f31, temp_r31->unk0.y, temp_r31->unk0.z+temp_f30); - Hu3DParManVecSet(temp_r31->unk30, temp_r31->unk18.y*sind(temp_r31->unk18.x+180.0f), 0, temp_r31->unk18.y*cosd(temp_r31->unk18.x+180.0f)); - } - temp_r22 = -1; - for(temp_r23=0; temp_r23<4; temp_r23++) { - temp_r29 = lbl_1_bss_48[temp_r23]->data; - if(600.0f > VECMagXZ(&temp_r31->unk0)) { - temp_f31 = temp_r29->unk4.x-temp_r31->unk0.x; - temp_f30 = temp_r29->unk4.z-temp_r31->unk0.z; - temp_f23 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30))-170; - if(0.0f < temp_f23 && temp_r29->unk88 > temp_f23) { - temp_r29->unk88 = temp_f23; - temp_r29->unk7C = temp_r31->unk0; - } - } - if(temp_r29->unk98 == 2005) { - temp_f31 = temp_r29->unk28.x-temp_r31->unk0.x; - temp_f29 = temp_r29->unk28.y-temp_r31->unk0.y; - temp_f30 = temp_r29->unk28.z-temp_r31->unk0.z; - temp_f23 = VECMagPoint(temp_f31, temp_f29, temp_f30); - if(60.0f > temp_f23) { - if(temp_r22 < 0) { - temp_r22 = temp_r23; - } else if(frandmod(100) > 50) { - temp_r22 = temp_r23; - } - } - } - } - if(temp_r22 >= 0) { - temp_r31->unk38 = 1; - temp_r31->unk24.z = 30; - Hu3DParManKill(temp_r31->unk30); - temp_r31->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_3EC); - Hu3DParManPosSet(temp_r31->unk30, temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); - Hu3DParManColorSet(temp_r31->unk30, object->work[0]); - Hu3DModelAttrSet(object->model[0], 1); - temp_r28 = lbl_1_bss_48[temp_r22]; - temp_r29 = temp_r28->data; - temp_r29->unkC4[object->work[0]]++; - temp_r29->unk90 += lbl_1_data_326[object->work[0]]; - sp78 = Hu3DMotionTimeGet(temp_r28->model[1]); - Hu3DMotionSet(temp_r28->model[1], temp_r28->motion[12]); - Hu3DMotionTimeSet(temp_r28->model[1], sp78); - Hu3DMotionSet(temp_r28->model[2], temp_r28->motion[13]); - omVibrate(temp_r29->unkB0, 12, 6, 6); - HuAudFXEmiterPlay(1813, &temp_r31->unk0); - } - } + Work713C *temp_r31; + Work53E8 *temp_r29; + omObjData *temp_r28; + float *temp_r24; + + s32 temp_r23; + s32 temp_r22; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f23; + float sp78; + temp_r31 = object->data; + if (lbl_1_bss_4C->work[0] < 1002) { + return; + } + if (temp_r31->unk38) { + if (lbl_1_bss_4C->work[0] >= 1006) { + fn_1_5B2C(object); + } + else { + temp_r31->unk24.z--; + if (20.0f == temp_r31->unk24.z) { + Hu3DParManAttrSet(temp_r31->unk30, 1); + } + if (0.0f > temp_r31->unk24.z) { + fn_1_5B2C(object); + fn_1_74F4(1); + } + } + return; + } + else { + if (lbl_1_bss_4C->work[0] >= 1006) { + temp_r31->unk18.y += 0.1f; + temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, (180.0f > temp_r31->unk18.x) ? 90.0f : 270.0f, 0.05f); + temp_r31->unk0.x += temp_r31->unk18.y * sind(temp_r31->unk18.x); + temp_r31->unk0.z += temp_r31->unk18.y * cosd(temp_r31->unk18.x); + if (1200.0f < ABS(temp_r31->unk0.x)) { + fn_1_5B2C(object); + return; + } + } + else { + if (temp_r31->unk34) { + temp_f31 = -temp_r31->unk0.x; + temp_f30 = -temp_r31->unk0.z; + temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, atan2d(temp_f31, temp_f30), 0.05f); + temp_r31->unk0.x += temp_r31->unk18.y * sind(temp_r31->unk18.x); + temp_r31->unk0.z += temp_r31->unk18.y * cosd(temp_r31->unk18.x); + temp_f31 = -temp_r31->unk0.x; + temp_f30 = -temp_r31->unk0.z; + temp_f23 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (600.0f >= temp_f23) { + temp_r31->unk34 = 0; + } + } + else { + temp_r31->unk18.x += ((frandf() * 2.0f) - 1.0f) * 3.0f; + temp_r31->unk18.y += ((frandf() * 2.0f) - 1.0f) * 0.1f; + temp_r24 = &lbl_1_data_350[object->work[0]][0]; + if (temp_r24[0] > temp_r31->unk18.y) { + temp_r31->unk18.y = temp_r24[0]; + } + if (temp_r24[1] < temp_r31->unk18.y) { + temp_r31->unk18.y = temp_r24[1]; + } + temp_r31->unk0.x += temp_r31->unk18.y * sind(temp_r31->unk18.x); + temp_r31->unk0.z += temp_r31->unk18.y * cosd(temp_r31->unk18.x); + temp_f31 = -temp_r31->unk0.x; + temp_f30 = -temp_r31->unk0.z; + temp_f23 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + if (600.0f < temp_f23) { + temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, atan2d(temp_f31, temp_f30), 0.05f); + } + } + } + temp_f23 = ABS(temp_r31->unk24.y - temp_r31->unk0.y); + if (2.0f > temp_f23) { + temp_r31->unk24.x--; + if (0.0f > temp_r31->unk24.x) { + temp_r31->unk24.x = 1.0f * REFRESH_RATE; + if (frandmod(100) > 50) { + temp_r31->unk24.y = (frandf() * 220.0f) + 80.0f; + } + } + } + else { + temp_r31->unk0.y += (temp_r31->unk24.y > temp_r31->unk0.y) ? 1.0f : -1.0f; + } + temp_r31->unk18.z += (frandf() * 4.0f) + 4.0f; + omSetTra(object, temp_r31->unk0.x, (sind(temp_r31->unk18.z) * 10.0) + temp_r31->unk0.y, temp_r31->unk0.z); + omSetRot(object, 0, temp_r31->unk18.x + 180.0f, 0); + if (temp_r31->unk30 >= 0) { + temp_f31 = sind(temp_r31->unk18.x + 180.0f) * 30; + temp_f30 = cosd(temp_r31->unk18.x + 180.0f) * 30; + Hu3DParManPosSet(temp_r31->unk30, temp_r31->unk0.x + temp_f31, temp_r31->unk0.y, temp_r31->unk0.z + temp_f30); + Hu3DParManVecSet( + temp_r31->unk30, temp_r31->unk18.y * sind(temp_r31->unk18.x + 180.0f), 0, temp_r31->unk18.y * cosd(temp_r31->unk18.x + 180.0f)); + } + temp_r22 = -1; + for (temp_r23 = 0; temp_r23 < 4; temp_r23++) { + temp_r29 = lbl_1_bss_48[temp_r23]->data; + if (600.0f > VECMagXZ(&temp_r31->unk0)) { + temp_f31 = temp_r29->unk4.x - temp_r31->unk0.x; + temp_f30 = temp_r29->unk4.z - temp_r31->unk0.z; + temp_f23 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)) - 170; + if (0.0f < temp_f23 && temp_r29->unk88 > temp_f23) { + temp_r29->unk88 = temp_f23; + temp_r29->unk7C = temp_r31->unk0; + } + } + if (temp_r29->unk98 == 2005) { + temp_f31 = temp_r29->unk28.x - temp_r31->unk0.x; + temp_f29 = temp_r29->unk28.y - temp_r31->unk0.y; + temp_f30 = temp_r29->unk28.z - temp_r31->unk0.z; + temp_f23 = VECMagPoint(temp_f31, temp_f29, temp_f30); + if (60.0f > temp_f23) { + if (temp_r22 < 0) { + temp_r22 = temp_r23; + } + else if (frandmod(100) > 50) { + temp_r22 = temp_r23; + } + } + } + } + if (temp_r22 >= 0) { + temp_r31->unk38 = 1; + temp_r31->unk24.z = 30; + Hu3DParManKill(temp_r31->unk30); + temp_r31->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_3EC); + Hu3DParManPosSet(temp_r31->unk30, temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); + Hu3DParManColorSet(temp_r31->unk30, object->work[0]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + temp_r28 = lbl_1_bss_48[temp_r22]; + temp_r29 = temp_r28->data; + temp_r29->unkC4[object->work[0]]++; + temp_r29->unk90 += lbl_1_data_326[object->work[0]]; + sp78 = Hu3DMotionTimeGet(temp_r28->model[1]); + Hu3DMotionSet(temp_r28->model[1], temp_r28->motion[12]); + Hu3DMotionTimeSet(temp_r28->model[1], sp78); + Hu3DMotionSet(temp_r28->model[2], temp_r28->motion[13]); + omVibrate(temp_r29->unkB0, 12, 6, 6); + HuAudFXEmiterPlay(1813, &temp_r31->unk0); + } + } } void fn_1_713C(omObjData *object) { - Work713C *work = object->data; - s16 mdlId = fn_1_AC(object->work[0]+4096); - Vec *scale; - if(mdlId < 0) { - object->model[0] = Hu3DModelLink(lbl_1_bss_12[object->work[0]]); - } else { - object->model[0] = mdlId; - } - Hu3DModelAttrSet(object->model[0], 1); - Hu3DModelAttrSet(object->model[0], 0x40000003); - Hu3DModelLayerSet(object->model[0], 3); - Hu3DModelShadowSet(object->model[0]); - scale = &lbl_1_data_32C[object->work[0]]; - omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); - omSetRot(object, 0, work->unk18.x+180, 0); - omSetSca(object, scale->x, scale->y, scale->z); - work->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_39C); - if(work->unk30 >= 0) { - float x = sind(work->unk18.x+180)*30.0; - float y = cosd(work->unk18.x+180)*30.0; - Hu3DParManPosSet(work->unk30, work->unk0.x+x, work->unk0.y, work->unk0.z+y); - Hu3DParManVecSet(work->unk30, work->unk18.y*sind(work->unk18.x+180.0f), 0, work->unk18.y*cosd(work->unk18.x+180.0f)); - Hu3DParManAttrSet(work->unk30, 0x804); - Hu3DParManAttrReset(work->unk30, 1); - Hu3DParManColorSet(work->unk30, object->work[0]); - Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unk30), 1); - Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unk30), 4); - - } - Hu3DModelAttrReset(object->model[0], 0x40000002); - Hu3DModelAttrReset(object->model[0], 1); - object->func = fn_1_5C04; + Work713C *work = object->data; + s16 mdlId = fn_1_AC(object->work[0] + 4096); + Vec *scale; + if (mdlId < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_12[object->work[0]]); + } + else { + object->model[0] = mdlId; + } + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelShadowSet(object->model[0]); + scale = &lbl_1_data_32C[object->work[0]]; + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 0, work->unk18.x + 180, 0); + omSetSca(object, scale->x, scale->y, scale->z); + work->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_39C); + if (work->unk30 >= 0) { + float x = sind(work->unk18.x + 180) * 30.0; + float y = cosd(work->unk18.x + 180) * 30.0; + Hu3DParManPosSet(work->unk30, work->unk0.x + x, work->unk0.y, work->unk0.z + y); + Hu3DParManVecSet(work->unk30, work->unk18.y * sind(work->unk18.x + 180.0f), 0, work->unk18.y * cosd(work->unk18.x + 180.0f)); + Hu3DParManAttrSet(work->unk30, 0x804); + Hu3DParManAttrReset(work->unk30, 1); + Hu3DParManColorSet(work->unk30, object->work[0]); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unk30), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unk30), 4); + } + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_5C04; } void fn_1_74F4(s32 arg0) { - s16 no = -1; - s16 i; - omObjData *object; - Work713C *work; - float radius; - for(i=0; i<3; i++) { - if(lbl_1_data_320[i] > lbl_1_bss_18[i]) { - no = i; - } - } - if(no < 0) { - return; - } - lbl_1_bss_18[no]++; - object = omAddObjEx(lbl_1_bss_1DC, 101, 1, 0, 1, fn_1_713C); - object->work[0] = no; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work713C), MEMORY_DEFAULT_NUM); - work = object->data; - work->unk34 = arg0; - work->unk18.z = 0; - work->unk38 = 0; - work->unk18.y = 2; - work->unk24.x = (frandf()*180.0f)+180.0f; - if(arg0) { - work->unk18.y = 3; - work->unk18.x = 180.0f-(frandf()*120.0f); - if(frandmod(100) > 50) { - work->unk18.x = 360.0f-work->unk18.x; - } - radius = 1200; - work->unk0.x = radius*sind(work->unk18.x+180.0f); - work->unk0.y = (frandf()*220.0f)+80.0f; - work->unk0.z = radius*cosd(work->unk18.x+180.0f); - } else { - if(lbl_1_bss_C) { - lbl_1_bss_C = 0; - work->unk18.x = 45.0f+(frandf()*90.0f); - if(frandmod(100) > 50) { - work->unk18.x += 180.0f; - } - work->unk0.x = 0; - work->unk0.y = 80; - work->unk0.z = 0; - } else { - repeat: - radius = 300; - radius += radius*frandf(); - work->unk18.x = 360.0f*frandf(); - work->unk0.x = radius*sind(work->unk18.x); - work->unk0.y = (frandf()*220.0f)+80.0f; - work->unk0.z = radius*cosd(work->unk18.x); - if(0.0f < work->unk0.y) { - if(150.0f > ABS(work->unk0.x)) { - goto repeat; - } - } - } - } - work->unk24.y = work->unk0.y; + s16 no = -1; + s16 i; + omObjData *object; + Work713C *work; + float radius; + for (i = 0; i < 3; i++) { + if (lbl_1_data_320[i] > lbl_1_bss_18[i]) { + no = i; + } + } + if (no < 0) { + return; + } + lbl_1_bss_18[no]++; + object = omAddObjEx(lbl_1_bss_1DC, 101, 1, 0, 1, fn_1_713C); + object->work[0] = no; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work713C), MEMORY_DEFAULT_NUM); + work = object->data; + work->unk34 = arg0; + work->unk18.z = 0; + work->unk38 = 0; + work->unk18.y = 2; + work->unk24.x = (frandf() * (3.0f * REFRESH_RATE)) + (3.0f * REFRESH_RATE); + if (arg0) { + work->unk18.y = 3; + work->unk18.x = 180.0f - (frandf() * 120.0f); + if (frandmod(100) > 50) { + work->unk18.x = 360.0f - work->unk18.x; + } + radius = 1200; + work->unk0.x = radius * sind(work->unk18.x + 180.0f); + work->unk0.y = (frandf() * 220.0f) + 80.0f; + work->unk0.z = radius * cosd(work->unk18.x + 180.0f); + } + else { + if (lbl_1_bss_C) { + lbl_1_bss_C = 0; + work->unk18.x = 45.0f + (frandf() * 90.0f); + if (frandmod(100) > 50) { + work->unk18.x += 180.0f; + } + work->unk0.x = 0; + work->unk0.y = 80; + work->unk0.z = 0; + } + else { + repeat: + radius = 300; + radius += radius * frandf(); + work->unk18.x = 360.0f * frandf(); + work->unk0.x = radius * sind(work->unk18.x); + work->unk0.y = (frandf() * 220.0f) + 80.0f; + work->unk0.z = radius * cosd(work->unk18.x); + if (0.0f < work->unk0.y) { + if (150.0f > ABS(work->unk0.x)) { + goto repeat; + } + } + } + } + work->unk24.y = work->unk0.y; } void fn_1_7958(omObjData *object) { - Hu3DModelAttrSet(object->model[0], 1); - fn_1_24(object->work[0]+4096, object->model[0]); - Hu3DParManKill(((Work713C *)object->data)->unk30); - omDelObjEx(lbl_1_bss_1DC, object); - lbl_1_bss_1E--; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_24(object->work[0] + 4096, object->model[0]); + Hu3DParManKill(((Work713C *)object->data)->unk30); + omDelObjEx(lbl_1_bss_1DC, object); + lbl_1_bss_1E--; } void fn_1_7A2C(omObjData *object) { - Work713C *work = object->data; - float x = work->unkC.x-work->unk0.x; - float y = work->unkC.y-work->unk0.y; - float len = sqrtf((x*x)+(y*y)); - if(10.0f > len) { - work->unk18.y--; - if(0.0f > work->unk18.y) { - work->unk18.y = 0; - } - work->unk18.x = fn_1_1E20(work->unk18.x, 0.0f, 0.05f); - } else { - work->unk18.y += 0.1f; - if(3.0f < work->unk18.y) { - work->unk18.y = 3.0f; - } - work->unk18.x = fn_1_1E20(work->unk18.x, atan2d(-x, y), 0.05f); - } - work->unk0.x -= work->unk18.y*sind(work->unk18.x); - work->unk0.y += work->unk18.y*cosd(work->unk18.x); - omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); - omSetRot(object, 90, 0, work->unk18.x); - if(work->unk30 >= 0) { - Hu3DParManPosSet(work->unk30, work->unk0.x, work->unk0.y, work->unk0.z); - Hu3DParManVecSet(work->unk30, -2*sind(work->unk18.x+180.0f), 2*cosd(work->unk18.x+180.0f), 0); - } + Work713C *work = object->data; + float x = work->unkC.x - work->unk0.x; + float y = work->unkC.y - work->unk0.y; + float len = sqrtf((x * x) + (y * y)); + if (10.0f > len) { + work->unk18.y--; + if (0.0f > work->unk18.y) { + work->unk18.y = 0; + } + work->unk18.x = fn_1_1E20(work->unk18.x, 0.0f, 0.05f); + } + else { + work->unk18.y += 0.1f; + if (3.0f < work->unk18.y) { + work->unk18.y = 3.0f; + } + work->unk18.x = fn_1_1E20(work->unk18.x, atan2d(-x, y), 0.05f); + } + work->unk0.x -= work->unk18.y * sind(work->unk18.x); + work->unk0.y += work->unk18.y * cosd(work->unk18.x); + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 90, 0, work->unk18.x); + if (work->unk30 >= 0) { + Hu3DParManPosSet(work->unk30, work->unk0.x, work->unk0.y, work->unk0.z); + Hu3DParManVecSet(work->unk30, -2 * sind(work->unk18.x + 180.0f), 2 * cosd(work->unk18.x + 180.0f), 0); + } } void fn_1_803C(omObjData *object) { - Work713C *work = object->data; - float x; - float y; - work->unk18.y -= 0.1f; - if(2.0f > work->unk18.y) { - work->unk18.y = 2.0f; - if(work->unkC.y > work->unk0.y) { - x = work->unkC.x-work->unk0.x; - y = work->unkC.y-work->unk0.y; - work->unk18.x = fn_1_1E20(work->unk18.x, atan2d(-x, y), 0.05f); - } - } - - work->unk0.x -= work->unk18.y*sind(work->unk18.x); - work->unk0.y += work->unk18.y*cosd(work->unk18.x); - omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); - omSetRot(object, 90, 0, work->unk18.x); - if(work->unk30 >= 0) { - x = sind(work->unk18.x+180)*-20.0; - y = cosd(work->unk18.x+180)*20.0; - Hu3DParManPosSet(work->unk30, work->unk0.x+x, work->unk0.y+y, work->unk0.z); - Hu3DParManVecSet(work->unk30, -work->unk18.y*sind(work->unk18.x+180.0f), work->unk18.y*cosd(work->unk18.x+180.0f), 0); - } - if(450.0f < work->unk0.y) { - fn_1_7958(object); - } + Work713C *work = object->data; + float x; + float y; + work->unk18.y -= 0.1f; + if (2.0f > work->unk18.y) { + work->unk18.y = 2.0f; + if (work->unkC.y > work->unk0.y) { + x = work->unkC.x - work->unk0.x; + y = work->unkC.y - work->unk0.y; + work->unk18.x = fn_1_1E20(work->unk18.x, atan2d(-x, y), 0.05f); + } + } + + work->unk0.x -= work->unk18.y * sind(work->unk18.x); + work->unk0.y += work->unk18.y * cosd(work->unk18.x); + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 90, 0, work->unk18.x); + if (work->unk30 >= 0) { + x = sind(work->unk18.x + 180) * -20.0; + y = cosd(work->unk18.x + 180) * 20.0; + Hu3DParManPosSet(work->unk30, work->unk0.x + x, work->unk0.y + y, work->unk0.z); + Hu3DParManVecSet(work->unk30, -work->unk18.y * sind(work->unk18.x + 180.0f), work->unk18.y * cosd(work->unk18.x + 180.0f), 0); + } + if (450.0f < work->unk0.y) { + fn_1_7958(object); + } } void fn_1_8518(omObjData *object) { - Work713C *work; - s16 mdlId = fn_1_AC(object->work[0]+4096); - Vec *scale; - if(mdlId < 0) { - object->model[0] = Hu3DModelLink(lbl_1_bss_12[object->work[0]]); - } else { - object->model[0] = mdlId; - } - work = object->data; - work->unk18.y = 6.0f; - work->unk18.x = (frandf()*60.0f)-30.0f; - Hu3DModelAttrSet(object->model[0], 1); - Hu3DModelAttrSet(object->model[0], 0x40000003); - Hu3DModelLayerSet(object->model[0], 3); - Hu3DModelShadowSet(object->model[0]); - scale = &lbl_1_data_32C[object->work[0]]; - omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); - omSetRot(object, 90, 0, work->unk18.x); - omSetSca(object, scale->x*0.5f, scale->y*0.5f, scale->z*0.5f); - work->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_39C); - if(work->unk30 >= 0) { - float x = sind(work->unk18.x+180)*-20.0; - float y = cosd(work->unk18.x+180)*20.0; - Hu3DParManPosSet(work->unk30, work->unk0.x+x, work->unk0.y+y, work->unk0.z); - Hu3DParManVecSet(work->unk30, -work->unk18.y*sind(work->unk18.x+180.0f), work->unk18.y*cosd(work->unk18.x+180.0f), 0); - Hu3DParManAttrSet(work->unk30, 0x804); - Hu3DParManAttrReset(work->unk30, 1); - Hu3DParManColorSet(work->unk30, object->work[0]); - Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unk30), 1); - Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unk30), 4); - - } - Hu3DModelAttrReset(object->model[0], 0x40000002); - Hu3DModelAttrReset(object->model[0], 1); - object->func = fn_1_803C; + Work713C *work; + s16 mdlId = fn_1_AC(object->work[0] + 4096); + Vec *scale; + if (mdlId < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_12[object->work[0]]); + } + else { + object->model[0] = mdlId; + } + work = object->data; + work->unk18.y = 6.0f; + work->unk18.x = (frandf() * 60.0f) - 30.0f; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelShadowSet(object->model[0]); + scale = &lbl_1_data_32C[object->work[0]]; + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 90, 0, work->unk18.x); + omSetSca(object, scale->x * 0.5f, scale->y * 0.5f, scale->z * 0.5f); + work->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_39C); + if (work->unk30 >= 0) { + float x = sind(work->unk18.x + 180) * -20.0; + float y = cosd(work->unk18.x + 180) * 20.0; + Hu3DParManPosSet(work->unk30, work->unk0.x + x, work->unk0.y + y, work->unk0.z); + Hu3DParManVecSet(work->unk30, -work->unk18.y * sind(work->unk18.x + 180.0f), work->unk18.y * cosd(work->unk18.x + 180.0f), 0); + Hu3DParManAttrSet(work->unk30, 0x804); + Hu3DParManAttrReset(work->unk30, 1); + Hu3DParManColorSet(work->unk30, object->work[0]); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unk30), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unk30), 4); + } + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_803C; } void fn_1_892C(s16 arg0, s16 arg1, Vec *arg2) { - omObjData *object; - Work713C *work; - float x; - float y; - float z; - if(lbl_1_bss_1E >= 400) { - OSReport("over!!\n"); - return; - } - lbl_1_bss_1E++; - object = omAddObjEx(lbl_1_bss_1DC, 102, 1, 0, 2, fn_1_8518); - object->work[0] = arg1; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work713C), MEMORY_DEFAULT_NUM); - work = object->data; - fn_1_40A8InlineFunc(&work->unk0, arg2->x, arg2->y+10, arg2->z+8); - fn_1_40A8InlineFunc(&work->unkC, arg2->x, 250, arg2->z); + omObjData *object; + Work713C *work; + float x; + float y; + float z; + if (lbl_1_bss_1E >= 400) { + OSReport("over!!\n"); + return; + } + lbl_1_bss_1E++; + object = omAddObjEx(lbl_1_bss_1DC, 102, 1, 0, 2, fn_1_8518); + object->work[0] = arg1; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work713C), MEMORY_DEFAULT_NUM); + work = object->data; + fn_1_40A8InlineFunc(&work->unk0, arg2->x, arg2->y + 10, arg2->z + 8); + fn_1_40A8InlineFunc(&work->unkC, arg2->x, 250, arg2->z); } s32 fn_1_8AA0(s32 arg0) { - float angle = 12.0f*(arg0%30); - float radius = 730.0f+(60.0f*(arg0/30)); - if(arg0/30 >= 2 && (100.0f > angle || 260.0f < angle)) { - return 0; - } else { - s16 model = Hu3DModelLink(lbl_1_bss_10[0]); - Hu3DModelAttrSet(model, 0x4001); - Hu3DModelAttrSet(model, 0x40000003); - Hu3DModelLayerSet(model, 1); - Hu3DMotionTimeSet(model, Hu3DMotionMaxTimeGet(model)*frandf()); - Hu3DModelPosSet(model, ((radius*sind(angle))+(frandf()*20.0f))-10, -60.0f, radius*cosd(angle)); - Hu3DModelScaleSet(model, 2, 2, 2); - Hu3DModelAttrReset(model, 0x40000002); - Hu3DModelAttrReset(model, 1); - return 1; - } + float angle = 12.0f * (arg0 % 30); + float radius = 730.0f + (60.0f * (arg0 / 30)); + if (arg0 / 30 >= 2 && (100.0f > angle || 260.0f < angle)) { + return 0; + } + else { + s16 model = Hu3DModelLink(lbl_1_bss_10[0]); + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(model, 1); + Hu3DMotionTimeSet(model, Hu3DMotionMaxTimeGet(model) * frandf()); + Hu3DModelPosSet(model, ((radius * sind(angle)) + (frandf() * 20.0f)) - 10, -60.0f, radius * cosd(angle)); + Hu3DModelScaleSet(model, 2, 2, 2); + Hu3DModelAttrReset(model, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(model, HU3D_ATTR_DISPOFF); + return 1; + } } void fn_1_AA4C(omObjData *object); void fn_1_8D58(omObjData *object) { - Vec sp38; - s32 i; - - if(omSysExitReq) { - fn_1_1F58(-1); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_AA4C; - } - lbl_1_bss_24 += (1.0f/60.0f); - if(360.0f <= lbl_1_bss_24) { - lbl_1_bss_24 -= 360.0f; - } - Hu3DModelRotSet(object->model[2], 0, lbl_1_bss_24, 0); - lbl_1_bss_1A8++; - switch(object->work[0]) { - case 1000: - if(!WipeStatGet()) { - object->work[0]++; - lbl_1_bss_28 = 0; - } - break; - - case 1001: - lbl_1_bss_28++; - if(60.0f < lbl_1_bss_28) { - object->work[0]++; - lbl_1_bss_28 = 0; - lbl_1_bss_1C4 = lbl_1_data_34; - lbl_1_bss_1AC = lbl_1_data_4C; - VECSubtract(&lbl_1_bss_1AC, &lbl_1_bss_1C4, &sp38); - VECNormalize(&sp38, &sp38); - HuAudFXListnerSetEX(&lbl_1_bss_1C4, &sp38, 10000.0, 36000.0, 0.0, 300.0, 300.0); - } - break; - - case 1002: - lbl_1_bss_28++; - fn_1_13DC(lbl_1_bss_28/180.0f, &lbl_1_data_40); - if(180.0f <= lbl_1_bss_28) { - object->work[0]++; - fn_1_1350(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); - } - - break; - - case 1003: - if(lbl_1_bss_19E < 0) { - lbl_1_bss_19E = MGSeqStartCreate(); - Hu3DModelAttrSet(lbl_1_bss_4C->model[2], 1); - } else { - if(lbl_1_bss_198 < 0 && (MGSeqStatGet(lbl_1_bss_19E) & 0x10)) { - fn_1_1F24(69); - } - if(!MGSeqStatGet(lbl_1_bss_19E)) { - object->work[0]++; - lbl_1_bss_1A4 = 3600; - lbl_1_bss_19C = MGSeqTimerCreate(lbl_1_bss_1A4/60); - lbl_1_bss_19E = -1; - } - } - break; - - case 1004: - MGSeqParamSet(lbl_1_bss_19C, 1, (lbl_1_bss_1A4+59)/60); - lbl_1_bss_1A4--; - if(lbl_1_bss_1A4 < 0) { - object->work[0] = 1005; - lbl_1_bss_1A4 = 3600; - lbl_1_bss_28 = 0; - } - break; - - case 1005: - if(lbl_1_bss_19E < 0) { - MGSeqParamSet(lbl_1_bss_19C, 2, -1); - lbl_1_bss_19C = -1; - lbl_1_bss_19E = MGSeqFinishCreate(); - fn_1_1F58(100); - Hu3DModelAttrReset(lbl_1_bss_4C->model[2], 1); - } else { - for(i=0; i<4; i++) { - if(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2007) { - break; - } - } - if(i == 4 && !MGSeqStatGet(lbl_1_bss_19E)) { - object->work[0]++; - lbl_1_bss_19E = -1; - lbl_1_bss_20 = 0; - lbl_1_bss_28 = 0; - lbl_1_bss_1C4 = lbl_1_data_58; - lbl_1_bss_1AC = lbl_1_data_70; - } - } - break; - - case 1006: - lbl_1_bss_28++; - fn_1_13DC(lbl_1_bss_28/120.0f, &lbl_1_data_64); - if(120.0f <= lbl_1_bss_28) { - lbl_1_bss_28 = 120.0f; - for(i=0; i<4; i++) { - float temp; - if(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2010) { - break; - } - temp = OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk58; - if(2.0f < temp && 358.0f > temp) { - break; - } - } - if(i == 4) { - object->work[0]++; - lbl_1_bss_28 = 60; - } - } - break; - - case 1007: - for(i=0; i<4; i++) { - if(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2014) { - break; - } - } - if(i == 4) { - if(0.0f > lbl_1_bss_28--) { - object->work[0]++; - lbl_1_bss_28 = 0; - if(lbl_1_bss_20 == 0) { - HuAudSStreamPlay(4); - for(i=0; i<4; i++) { - OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkC0 = 4; - } - } else { - s32 temp_r27; - HuAudSStreamPlay(1); - temp_r27 = -1; - for(i=0; i<4; i++) { - s32 temp_r22 = -1; - s32 temp_r26 = -1; - Work53E8 *temp_r29; - s32 j; - for(j=0; j<4; j++) { - temp_r29 = lbl_1_bss_48[j]->data; - if(temp_r29->unkC0 < 0 && temp_r22 < temp_r29->unkBC) { - temp_r22 = temp_r29->unkBC; - temp_r26 = j; - } - } - temp_r29 = lbl_1_bss_48[temp_r26]->data; - temp_r29->unkC0 = i+1; - if(temp_r27 >= 0 && temp_r29->unkBC == OM_GET_DATA_PTR(lbl_1_bss_48[temp_r27], Work53E8)->unkBC) { - temp_r29->unkC0 = OM_GET_DATA_PTR(lbl_1_bss_48[temp_r27], Work53E8)->unkC0; - } - temp_r27 = temp_r26; - } - } - for(i=0; i<4; i++) { - GWPlayerCoinWinSet(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkB0, OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkC0-1); - } - } - - } - break; - - case 1008: - lbl_1_bss_28++; - if(210.0f < lbl_1_bss_28) { - fn_1_1F58(-1); - lbl_1_bss_19E = -1; - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_AA4C; - } - - break; - - default: - OSReport("*** main mode error(%d)!!\n", object->work[0]); - break; - } + Vec sp38; + s32 i; + + if (omSysExitReq) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_AA4C; + } + lbl_1_bss_24 += (1.0f / REFRESH_RATE); + if (360.0f <= lbl_1_bss_24) { + lbl_1_bss_24 -= 360.0f; + } + Hu3DModelRotSet(object->model[2], 0, lbl_1_bss_24, 0); + lbl_1_bss_1A8++; + switch (object->work[0]) { + case 1000: + if (!WipeStatGet()) { + object->work[0]++; + lbl_1_bss_28 = 0; + } + break; + + case 1001: + lbl_1_bss_28++; + if (60.0f < lbl_1_bss_28) { + object->work[0]++; + lbl_1_bss_28 = 0; + lbl_1_bss_1C4 = lbl_1_data_34; + lbl_1_bss_1AC = lbl_1_data_4C; + VECSubtract(&lbl_1_bss_1AC, &lbl_1_bss_1C4, &sp38); + VECNormalize(&sp38, &sp38); + HuAudFXListnerSetEX(&lbl_1_bss_1C4, &sp38, 10000.0, 36000.0, 0.0, 300.0, 300.0); + } + break; + + case 1002: + lbl_1_bss_28++; + fn_1_13DC(lbl_1_bss_28 / (3.0f * REFRESH_RATE), &lbl_1_data_40); + if ((3.0f * REFRESH_RATE) <= lbl_1_bss_28) { + object->work[0]++; + fn_1_1350(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + } + + break; + + case 1003: + if (lbl_1_bss_19E < 0) { + lbl_1_bss_19E = MGSeqStartCreate(); + Hu3DModelAttrSet(lbl_1_bss_4C->model[2], HU3D_ATTR_DISPOFF); + } + else { + if (lbl_1_bss_198 < 0 && (MGSeqStatGet(lbl_1_bss_19E) & 0x10)) { + fn_1_1F24(69); + } + if (!MGSeqStatGet(lbl_1_bss_19E)) { + object->work[0]++; + lbl_1_bss_1A4 = 60 * REFRESH_RATE; + lbl_1_bss_19C = MGSeqTimerCreate(lbl_1_bss_1A4 / REFRESH_RATE); + lbl_1_bss_19E = -1; + } + } + break; + + case 1004: + MGSeqParamSet(lbl_1_bss_19C, 1, (lbl_1_bss_1A4 + REFRESH_RATE - 1) / REFRESH_RATE); + lbl_1_bss_1A4--; + if (lbl_1_bss_1A4 < 0) { + object->work[0] = 1005; + lbl_1_bss_1A4 = 60 * REFRESH_RATE; + lbl_1_bss_28 = 0; + } + break; + + case 1005: + if (lbl_1_bss_19E < 0) { + MGSeqParamSet(lbl_1_bss_19C, 2, -1); + lbl_1_bss_19C = -1; + lbl_1_bss_19E = MGSeqFinishCreate(); + fn_1_1F58(100); + Hu3DModelAttrReset(lbl_1_bss_4C->model[2], HU3D_ATTR_DISPOFF); + } + else { + for (i = 0; i < 4; i++) { + if (OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2007) { + break; + } + } + if (i == 4 && !MGSeqStatGet(lbl_1_bss_19E)) { + object->work[0]++; + lbl_1_bss_19E = -1; + lbl_1_bss_20 = 0; + lbl_1_bss_28 = 0; + lbl_1_bss_1C4 = lbl_1_data_58; + lbl_1_bss_1AC = lbl_1_data_70; + } + } + break; + + case 1006: + lbl_1_bss_28++; + fn_1_13DC(lbl_1_bss_28 / (2.0f * REFRESH_RATE), &lbl_1_data_64); + if ((2.0f * REFRESH_RATE) <= lbl_1_bss_28) { + lbl_1_bss_28 = 2.0f * REFRESH_RATE; + for (i = 0; i < 4; i++) { + float temp; + if (OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2010) { + break; + } + temp = OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk58; + if (2.0f < temp && 358.0f > temp) { + break; + } + } + if (i == 4) { + object->work[0]++; + lbl_1_bss_28 = 60; + } + } + break; + + case 1007: + for (i = 0; i < 4; i++) { + if (OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2014) { + break; + } + } + if (i == 4) { + if (0.0f > lbl_1_bss_28--) { + object->work[0]++; + lbl_1_bss_28 = 0; + if (lbl_1_bss_20 == 0) { + HuAudSStreamPlay(4); + for (i = 0; i < 4; i++) { + OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkC0 = 4; + } + } + else { + s32 temp_r27; + HuAudSStreamPlay(1); + temp_r27 = -1; + for (i = 0; i < 4; i++) { + s32 temp_r22 = -1; + s32 temp_r26 = -1; + Work53E8 *temp_r29; + s32 j; + for (j = 0; j < 4; j++) { + temp_r29 = lbl_1_bss_48[j]->data; + if (temp_r29->unkC0 < 0 && temp_r22 < temp_r29->unkBC) { + temp_r22 = temp_r29->unkBC; + temp_r26 = j; + } + } + temp_r29 = lbl_1_bss_48[temp_r26]->data; + temp_r29->unkC0 = i + 1; + if (temp_r27 >= 0 && temp_r29->unkBC == OM_GET_DATA_PTR(lbl_1_bss_48[temp_r27], Work53E8)->unkBC) { + temp_r29->unkC0 = OM_GET_DATA_PTR(lbl_1_bss_48[temp_r27], Work53E8)->unkC0; + } + temp_r27 = temp_r26; + } + } + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkB0, OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkC0 - 1); + } + } + } + break; + + case 1008: + lbl_1_bss_28++; + if (210.0f < lbl_1_bss_28) { + fn_1_1F58(-1); + lbl_1_bss_19E = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_AA4C; + } + + break; + + default: + OSReport("*** main mode error(%d)!!\n", object->work[0]); + break; + } } void fn_1_9F40(omObjData *object) { - s32 singleNo; - s32 i; - s32 angleNo; - lbl_1_bss_24 = 0; - object->work[0] = 1000; - object->model[0] = Hu3DModelCreateFile(0x480038); - Hu3DModelAttrSet(object->model[0], 0x4001); - Hu3DModelAttrSet(object->model[0], 0x40000002); - Hu3DModelLayerSet(object->model[0], 0); - Hu3DModelAttrReset(object->model[0], 1); - Hu3DModelShadowMapSet(object->model[0]); - omSetTra(object, 0, -31, 0); - object->model[1] = Hu3DModelCreateFile(0x480039); - Hu3DModelAttrSet(object->model[1], 0x4001); - Hu3DModelAttrSet(object->model[1], 0x40000002); - Hu3DModelLayerSet(object->model[1], 0); - Hu3DModelPosSet(object->model[1], 0, -31, 0); - Hu3DModelAttrReset(object->model[1], 1); - object->model[2] = Hu3DModelCreateFile(0x48003A); - Hu3DModelAttrSet(object->model[2], 0x4001); - Hu3DModelAttrSet(object->model[2], 0x40000002); - Hu3DModelLayerSet(object->model[2], 0); - Hu3DModelPosSet(object->model[2], 0, -31, 0); - Hu3DModelAttrReset(object->model[2], 1); - for(singleNo=0; singleNo<1; singleNo++) { - lbl_1_bss_10[singleNo] = Hu3DModelCreateFile(lbl_1_data_368[singleNo]); - Hu3DModelAttrSet(lbl_1_bss_10[singleNo], 0x4001); - Hu3DModelAttrSet(lbl_1_bss_10[singleNo], 0x40000003); - } - for(i=0, angleNo=0; i<30;) { - if(fn_1_8AA0(angleNo++) != 0) { - i++; - } - } - HuAudFXPlay(1818); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - object->func = fn_1_8D58; + s32 singleNo; + s32 i; + s32 angleNo; + lbl_1_bss_24 = 0; + object->work[0] = 1000; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M441, 0x38)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(object->model[0]); + omSetTra(object, 0, -31, 0); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M441, 0x39)); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[1], 0); + Hu3DModelPosSet(object->model[1], 0, -31, 0); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M441, 0x3A)); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[2], 0); + Hu3DModelPosSet(object->model[2], 0, -31, 0); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + for (singleNo = 0; singleNo < 1; singleNo++) { + lbl_1_bss_10[singleNo] = Hu3DModelCreateFile(lbl_1_data_368[singleNo]); + Hu3DModelAttrSet(lbl_1_bss_10[singleNo], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(lbl_1_bss_10[singleNo], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + for (i = 0, angleNo = 0; i < 30;) { + if (fn_1_8AA0(angleNo++) != 0) { + i++; + } + } + HuAudFXPlay(1818); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_8D58; } void ObjectSetup(void) { - Vec shadowDir; - s32 i; - omObjData *object; - s32 glight; - OSReport("******* M441 ObjectSetup *********\n"); - lbl_1_bss_1DC = omInitObjMan(600, 8192); - omGameSysInit(lbl_1_bss_1DC); - lbl_1_bss_1A8 = 0; - lbl_1_bss_19E = -1; - lbl_1_bss_19C = -1; - lbl_1_bss_1E = 0; - lbl_1_bss_198 = -1; - lbl_1_bss_4 = 0; - lbl_1_bss_8 = 2100; - lbl_1_bss_0 = 1200; - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - Hu3DCameraPerspectiveSet(1, 30, 20, 20000, 1.2); - fn_1_1350(&lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); + Vec shadowDir; + s32 i; + omObjData *object; + s32 glight; + OSReport("******* M441 ObjectSetup *********\n"); + lbl_1_bss_1DC = omInitObjMan(600, 8192); + omGameSysInit(lbl_1_bss_1DC); + lbl_1_bss_1A8 = 0; + lbl_1_bss_19E = -1; + lbl_1_bss_19C = -1; + lbl_1_bss_1E = 0; + lbl_1_bss_198 = -1; + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 2100; + lbl_1_bss_0 = 1200; + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraPerspectiveSet(1, 30, 20, 20000, 1.2); + fn_1_1350(&lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); - glight = Hu3DGLightCreateV(&lbl_1_data_7C, &lbl_1_data_88, &lbl_1_data_94); - Hu3DGLightStaticSet(glight, 1); - Hu3DGLightInfinitytSet(glight); - Hu3DShadowCreate(30, 20, 20000); - Hu3DShadowTPLvlSet(0.8); - VECNormalize(&lbl_1_data_98, &shadowDir); - Hu3DShadowPosSet(&lbl_1_data_98, &shadowDir, &lbl_1_data_A4); - HuSprExecLayerSet(64, 5); - omMakeGroupEx(lbl_1_bss_1DC, 0, 4); - lbl_1_bss_48 = omGetGroupMemberListEx(lbl_1_bss_1DC, 0); - for(i=0; i<4; i++) { - object = omAddObjEx(lbl_1_bss_1DC, 100, 3, 16, 0, fn_1_53E8); - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work53E8), MEMORY_DEFAULT_NUM); - object->work[0] = i; - } - fn_1_0(); - lbl_1_bss_C = 1; - omMakeGroupEx(lbl_1_bss_1DC, 1, 20); - lbl_1_bss_44 = omGetGroupMemberListEx(lbl_1_bss_1DC, 1); - for(i=0; i<3; i++) { - lbl_1_bss_18[i] = 0; - lbl_1_bss_12[i] = Hu3DModelCreateFile(lbl_1_data_314[i]); - Hu3DModelAttrSet(lbl_1_bss_12[i], 1); - Hu3DModelAttrSet(lbl_1_bss_12[i], 0x40000003); - } - for(i=0; i<20; i++) { - fn_1_74F4(0); - } - omMakeGroupEx(lbl_1_bss_1DC, 2, 400); - lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1DC, 2); - lbl_1_bss_38 = HuSprAnimReadFile(0x480046); - HuSprAnimLock(lbl_1_bss_38); - lbl_1_bss_34 = Hu3DParManCreate(lbl_1_bss_38, 500, &lbl_1_data_39C); - Hu3DParManAttrSet(lbl_1_bss_34, 1); - lbl_1_bss_30 = HuSprAnimReadFile(0x480047); - HuSprAnimLock(lbl_1_bss_30); - lbl_1_bss_2C = Hu3DParManCreate(lbl_1_bss_30, 20, &lbl_1_data_48C); - Hu3DParManAttrSet(lbl_1_bss_2C, 1); - lbl_1_bss_4C = omAddObjEx(lbl_1_bss_1DC, 103, 3, 0, -1, fn_1_9F40); + glight = Hu3DGLightCreateV(&lbl_1_data_7C, &lbl_1_data_88, &lbl_1_data_94); + Hu3DGLightStaticSet(glight, 1); + Hu3DGLightInfinitytSet(glight); + Hu3DShadowCreate(30, 20, 20000); + Hu3DShadowTPLvlSet(0.8); + VECNormalize(&lbl_1_data_98, &shadowDir); + Hu3DShadowPosSet(&lbl_1_data_98, &shadowDir, &lbl_1_data_A4); + HuSprExecLayerSet(64, 5); + omMakeGroupEx(lbl_1_bss_1DC, 0, 4); + lbl_1_bss_48 = omGetGroupMemberListEx(lbl_1_bss_1DC, 0); + for (i = 0; i < 4; i++) { + object = omAddObjEx(lbl_1_bss_1DC, 100, 3, 16, 0, fn_1_53E8); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work53E8), MEMORY_DEFAULT_NUM); + object->work[0] = i; + } + fn_1_0(); + lbl_1_bss_C = 1; + omMakeGroupEx(lbl_1_bss_1DC, 1, 20); + lbl_1_bss_44 = omGetGroupMemberListEx(lbl_1_bss_1DC, 1); + for (i = 0; i < 3; i++) { + lbl_1_bss_18[i] = 0; + lbl_1_bss_12[i] = Hu3DModelCreateFile(lbl_1_data_314[i]); + Hu3DModelAttrSet(lbl_1_bss_12[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_12[i], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + for (i = 0; i < 20; i++) { + fn_1_74F4(0); + } + omMakeGroupEx(lbl_1_bss_1DC, 2, 400); + lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1DC, 2); + lbl_1_bss_38 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M441, 0x46)); + HuSprAnimLock(lbl_1_bss_38); + lbl_1_bss_34 = Hu3DParManCreate(lbl_1_bss_38, 500, &lbl_1_data_39C); + Hu3DParManAttrSet(lbl_1_bss_34, 1); + lbl_1_bss_30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M441, 0x47)); + HuSprAnimLock(lbl_1_bss_30); + lbl_1_bss_2C = Hu3DParManCreate(lbl_1_bss_30, 20, &lbl_1_data_48C); + Hu3DParManAttrSet(lbl_1_bss_2C, 1); + lbl_1_bss_4C = omAddObjEx(lbl_1_bss_1DC, 103, 3, 0, -1, fn_1_9F40); } void fn_1_AA4C(omObjData *object) { - s32 i; - if(WipeStatGet()) { - return; - } - if(lbl_1_bss_19E >= 0) { - MGSeqKill(lbl_1_bss_19E); - } - if(lbl_1_bss_19C >= 0) { - MGSeqKill(lbl_1_bss_19C); - } - MGSeqKillAll(); - HuAudAllStop(); - for(i=0; i<4; i++) { - CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); - } - omOvlReturnEx(1, 1); - + s32 i; + if (WipeStatGet()) { + return; + } + if (lbl_1_bss_19E >= 0) { + MGSeqKill(lbl_1_bss_19E); + } + if (lbl_1_bss_19C >= 0) { + MGSeqKill(lbl_1_bss_19C); + } + MGSeqKillAll(); + HuAudAllStop(); + for (i = 0; i < 4; i++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); + } + omOvlReturnEx(1, 1); } diff --git a/src/REL/m442Dll/main.c b/src/REL/m442Dll/main.c index dd8dfc2d..53dd649a 100644 --- a/src/REL/m442Dll/main.c +++ b/src/REL/m442Dll/main.c @@ -1,7 +1,10 @@ +#include "version.h" #define HUSPR_USE_OLD_DEFS #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" +#include "game/gamework.h" + #include "game/gamework_data.h" #include "game/hsfdraw.h" #include "game/hsfmotion.h" @@ -10,7 +13,6 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" #include "REL/m442Dll.h" @@ -123,9 +125,6 @@ typedef struct M442MainWork2 { /* 0x18 */ float unk_18; } M442MainWork2; /* size = 0x1C */ -void GWMGRecordSet(s32 index, s32 value); -u32 GWMGRecordGet(s32 index); - void fn_1_A30(omObjData *object); void fn_1_A90(Process *arg0); void fn_1_D9C(void); @@ -215,6 +214,9 @@ M442StructBssC084 lbl_1_bss_C084[11][11]; M442StructBssC05C lbl_1_bss_C05C[2]; M442StructBss5C lbl_1_bss_5C[0x400]; float lbl_1_bss_20[0xF]; +#if VERSION_PAL +s32 lbl_1_bss_20_pal; +#endif Vec lbl_1_bss_14; s16 lbl_1_bss_12; s16 lbl_1_bss_10; @@ -237,7 +239,7 @@ void ObjectSetup(void) lbl_1_bss_14.x = lbl_1_data_60.x - lbl_1_data_54.x; lbl_1_bss_14.y = lbl_1_data_60.y - lbl_1_data_54.y; lbl_1_bss_14.z = lbl_1_data_60.z - lbl_1_data_54.z; - PSVECNormalize(&lbl_1_bss_14, &lbl_1_bss_14); + VECNormalize(&lbl_1_bss_14, &lbl_1_bss_14); var_r29 = Hu3DGLightCreateV(&lbl_1_data_54, &lbl_1_bss_14, &lbl_1_data_6C); Hu3DGLightInfinitytSet(var_r29); Hu3DGLightStaticSet(var_r29, 1); @@ -250,7 +252,7 @@ void ObjectSetup(void) fn_1_A90(var_r31); fn_1_3E64(var_r31); fn_1_6BB4(var_r31); - if (!GWMGRecordGet(4)) { + if (GWMGRecordGet(4) == 0) { GWMGRecordSet(4, 0); } fn_1_91AC(var_r31, GWMGRecordGet(4)); @@ -270,13 +272,13 @@ u32 fn_1_384(void) void fn_1_394(omObjData *object) { lbl_1_bss_11F30 = 0; - lbl_1_bss_11F24 = 60; + lbl_1_bss_11F24 = REFRESH_RATE; lbl_1_bss_11F1C = 60; - lbl_1_bss_11F1A = 60; + lbl_1_bss_11F1A = REFRESH_RATE; lbl_1_bss_11F18 = -1; lbl_1_bss_11F16 = 0; lbl_1_bss_11EE8 = 0; - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); object->func = fn_1_448; } @@ -288,19 +290,19 @@ void fn_1_448(omObjData *object) switch (lbl_1_bss_11F30) { case 0: - if (lbl_1_bss_11F24 == 60) { + if (lbl_1_bss_11F24 == REFRESH_RATE) { HuAudFXPlay(0x71B); HuAudFXPlay(0x71F); } if (--lbl_1_bss_11F24 == 0) { lbl_1_bss_11F30 = 1; - lbl_1_bss_11F24 = 0x78; + lbl_1_bss_11F24 = 2 * REFRESH_RATE; } break; case 1: if (--lbl_1_bss_11F24 == 0) { lbl_1_bss_11F30 = 2; - lbl_1_bss_11F24 = 0x78; + lbl_1_bss_11F24 = 2 * REFRESH_RATE; } break; case 2: @@ -322,7 +324,7 @@ void fn_1_448(omObjData *object) if (--lbl_1_bss_11F1A == 0) { lbl_1_bss_11F1C -= 1; MGSeqParamSet(lbl_1_bss_10, 1, lbl_1_bss_11F1C); - lbl_1_bss_11F1A = 0x3C; + lbl_1_bss_11F1A = REFRESH_RATE; } if (lbl_1_bss_11F1C == 0 || lbl_1_bss_11EE4 == 0) { lbl_1_bss_11F30 = 5; @@ -339,13 +341,13 @@ void fn_1_448(omObjData *object) if (GWMGRecordGet(4) < lbl_1_bss_11EE8) { GWMGRecordSet(4, lbl_1_bss_11EE8); lbl_1_bss_11F30 = 6; - lbl_1_bss_11F24 = 60; + lbl_1_bss_11F24 = REFRESH_RATE; lbl_1_bss_12 = MGSeqCreate(0xE, lbl_1_bss_11EE8); fn_1_94AC(1); } else { lbl_1_bss_11F30 = 9; - lbl_1_bss_11F24 = 60; + lbl_1_bss_11F24 = REFRESH_RATE; } mgRecordExtra = lbl_1_bss_11EE8; } @@ -353,7 +355,7 @@ void fn_1_448(omObjData *object) case 6: if (MGSeqStatGet(lbl_1_bss_12) == 0) { lbl_1_bss_11F30 = 9; - lbl_1_bss_11F24 = 60; + lbl_1_bss_11F24 = REFRESH_RATE; } break; case 9: @@ -365,12 +367,12 @@ void fn_1_448(omObjData *object) else { HuAudSStreamPlay(4); } - lbl_1_bss_11F24 = 0xD2; + lbl_1_bss_11F24 = 3.5f * REFRESH_RATE; } break; case 11: if (--lbl_1_bss_11F24 == 0) { - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_A30; } break; @@ -383,7 +385,7 @@ void fn_1_448(omObjData *object) lbl_1_bss_11F16 = 0; } if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_A30; } } @@ -412,6 +414,10 @@ void fn_1_A90(Process *arg0) lbl_1_bss_11F28[0] = lbl_1_bss_11F28[1] = lbl_1_bss_11F28[2] = lbl_1_bss_11F28[3] = -1; lbl_1_bss_11F20 = 0; +#if VERSION_PAL + lbl_1_bss_20_pal = fn_1_90FC(); +#endif + for (var_r31 = 0; var_r31 < 4; var_r31++) { if (GWPlayerCfg[var_r31].iscom != 1) { break; @@ -422,7 +428,7 @@ void fn_1_A90(Process *arg0) for (var_r31 = 0; var_r31 < 1; var_r31++) { omAddObjEx(arg0, 5, 0xA, 0x32, 0, fn_1_E88); } - lbl_1_bss_11F00 = HuSprAnimRead(HuDataReadNum(0x49000A, MEMORY_DEFAULT_NUM)); + lbl_1_bss_11F00 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M442, 0x0A), MEMORY_DEFAULT_NUM)); for (var_r31 = 0; var_r31 < 4; var_r31++) { lbl_1_bss_11EEC[var_r31] = HuSprAnimRead(HuDataReadNum(sp8[var_r31], MEMORY_DEFAULT_NUM)); } @@ -466,13 +472,13 @@ s32 fn_1_E04(void) } s32 lbl_1_data_FC[7] = { - 0x5F0000, - 0x5F0002, - 0x5F0003, - 0x5F0005, - 0x5F002B, - 0x5F0048, - 0x5F0018, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), }; s32 lbl_1_data_118[2] = { 0x490010, 0x490018 }; @@ -497,7 +503,11 @@ void fn_1_E88(omObjData *object) memset(var_r30, 0, sizeof(M442MainWork)); var_r30->unk_02 = lbl_1_bss_11F20++; var_r30->unk_04 = GWPlayerCfg[var_r30->unk_02].pad_idx; +#if VERSION_NTSC var_r30->unk_0C = fn_1_90FC(); +#else + var_r30->unk_0C = lbl_1_bss_20_pal; +#endif var_r26 = GWPlayerCfg[var_r30->unk_02].character; var_r30->unk_10 = var_r26; var_r30->unk_12 = GWPlayerCfg[var_r30->unk_02].diff; @@ -505,7 +515,7 @@ void fn_1_E88(omObjData *object) object->model[0] = CharModelCreate(var_r26, 8); Hu3DModelLayerSet(object->model[0], 1); Hu3DModelShadowSet(object->model[0]); - object->model[1] = Hu3DModelCreateFile(0x490001); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M442, 0x01)); Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); var_r30->unk_30 = 0; for (var_r29 = 0; var_r29 < 7; var_r29++) { @@ -515,7 +525,7 @@ void fn_1_E88(omObjData *object) object->motion[var_r29 + var_r28] = CharModelMotionCreate(var_r30->unk_10, var_r30->unk_10 + lbl_1_data_118[var_r28]); } Hu3DMotionSet(object->model[0], object->motion[0]); - Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); Hu3DMotionOverlaySet(object->model[0], object->motion[7]); CharModelVoiceEnableSet(var_r30->unk_10, object->motion[5], 0); object->trans.x = lbl_1_data_120[var_r30->unk_02].x; @@ -523,13 +533,13 @@ void fn_1_E88(omObjData *object) object->trans.z = lbl_1_data_120[var_r30->unk_02].z; object->model[2] = Hu3DParticleCreate(lbl_1_bss_11F00, 0x32); Hu3DParticleHookSet(object->model[2], fn_1_7890); - Hu3DModelAttrSet(object->model[2], 1); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(object->model[2], 1); var_r30->unk_5C = -1; var_r30->unk_40 = -1; object->model[3] = Hu3DHookFuncCreate(fn_1_5EDC); Hu3DModelLayerSet(object->model[3], 7); - Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); var_r27 = &Hu3DData[object->model[3]]; var_r27->unk_120 = var_r30; CharModelDataClose(var_r30->unk_10); @@ -597,8 +607,8 @@ void fn_1_1230(omObjData *object) var_r30 = object->data; var_f28 = 1.0f; - PSVECSubtract(&var_r30->unk_70, &object->trans, &sp18); - var_f30 = PSVECMag(&sp18); + VECSubtract(&var_r30->unk_70, &object->trans, &sp18); + var_f30 = VECMag(&sp18); if (var_f30 < 300.0f) { if (var_f30 < 140.0f) { if ((frand() & 1) == 0) { @@ -610,7 +620,7 @@ void fn_1_1230(omObjData *object) } else { var_f29 = 32.0f; - PSVECNormalize(&sp18, &sp18); + VECNormalize(&sp18, &sp18); var_r30->unk_06 = sp18.x * var_f29; var_r30->unk_07 = -sp18.z * var_f29; } @@ -627,8 +637,8 @@ void fn_1_1230(omObjData *object) var_r27 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); for (var_r28 = 0; var_r28 < 1; var_r28++) { if (var_r27[var_r28] != object) { - PSVECSubtract(&lbl_1_bss_C084[var_r31 + 1][var_r29 + 1].unk_00, &var_r27[var_r28]->trans, &sp18); - var_f30 = PSVECMag(&sp18); + VECSubtract(&lbl_1_bss_C084[var_r31 + 1][var_r29 + 1].unk_00, &var_r27[var_r28]->trans, &sp18); + var_f30 = VECMag(&sp18); if (var_f30 < 800.0f) { var_f31 = cosd(((90.0f * var_f30) / 800.0f)); var_f31 *= var_f31; @@ -642,8 +652,8 @@ void fn_1_1230(omObjData *object) for (var_r28 = 0; var_r28 < 15; var_r28++) { var_r19 = var_r27[var_r28]->data; if (var_r19->unk_00_field0) { - PSVECSubtract(&lbl_1_bss_C084[var_r31 + 1][var_r29 + 1].unk_00, &var_r27[var_r28]->trans, &sp18); - var_f30 = PSVECMag(&sp18); + VECSubtract(&lbl_1_bss_C084[var_r31 + 1][var_r29 + 1].unk_00, &var_r27[var_r28]->trans, &sp18); + var_f30 = VECMag(&sp18); if (var_f30 < 800.0f) { var_f31 = cosd(((90.0f * var_f30) / 800.0f)); var_f31 *= var_f31; @@ -735,14 +745,14 @@ void fn_1_1230(omObjData *object) } } } while (var_r22 != 0); - PSVECSubtract(&lbl_1_bss_C084[sp24[3] + 1][sp24[2] + 1].unk_00, &object->trans, &sp18); - var_f30 = PSVECMag(&sp18); + VECSubtract(&lbl_1_bss_C084[sp24[3] + 1][sp24[2] + 1].unk_00, &object->trans, &sp18); + var_f30 = VECMag(&sp18); var_f29 = 64.0f + (0.2f * (32.0f * var_r30->unk_12)); var_r30->unk_18 = fn_1_85E8(var_r30->unk_18, atan2d(sp18.x, sp18.z), 0.1f); var_r30->unk_06 = var_f29 * sind(var_r30->unk_18); var_r30->unk_07 = var_f29 * -cosd(var_r30->unk_18); - if (++var_r30->unk_7C > 300) { + if (++var_r30->unk_7C > 5 * REFRESH_RATE) { var_r30->unk_00_field2 = 1; var_r30->unk_7C = 0; } @@ -865,18 +875,18 @@ void fn_1_2254(omObjData *object) if (var_f27 > 72.0f) { var_f27 = 72.0f; } - var_f26 = (10.0f * var_f27) / 72.0f; + var_f26 = ((VERSION_NTSC ? 10.0f : 12.0f) * var_f27) / 72.0f; var_r31->unk_24.x = var_f31 * var_f26; var_r31->unk_24.z = var_f30 * var_f26; var_r31->unk_1C = var_f26; object->rot.y = fn_1_85E8(object->rot.y, atan2d(var_r31->unk_24.x, var_r31->unk_24.z), 0.5f); - if (var_r31->unk_1C < 7.5f) { + if (var_r31->unk_1C < (450.0f / REFRESH_RATE)) { var_r29 = 1; - var_f28 = var_r31->unk_1C / 7.5f; + var_f28 = var_r31->unk_1C / (450.0f / REFRESH_RATE); } else { var_r29 = 2; - var_f28 = var_r31->unk_1C / 10.0f; + var_f28 = var_r31->unk_1C / (VERSION_NTSC ? 10.0f : 12.0f); } } else { @@ -884,7 +894,7 @@ void fn_1_2254(omObjData *object) var_r29 = 0; var_f28 = 1.0f; } - var_r28 = 0x40000001; + var_r28 = HU3D_MOTATTR_LOOP; object->trans.x += var_r31->unk_24.x; object->trans.z += var_r31->unk_24.z; fn_1_37B8(object); @@ -900,7 +910,7 @@ void fn_1_2254(omObjData *object) else { spC = lbl_1_bss_C9F8[var_r31->unk_48].unk_00; } - Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); if ((fn_1_3AE4(object, &spC) == 1) && ((var_r31->unk_48 >= 0 && ((lbl_1_bss_C9F8[var_r31->unk_48].unk_10 == object) || (lbl_1_bss_C9F8[var_r31->unk_48].unk_10 == NULL))) @@ -937,7 +947,7 @@ void fn_1_2254(omObjData *object) } if ((var_r31->unk_48 >= 0) && (lbl_1_bss_C9F8[var_r31->unk_48].unk_0C < 3)) { lbl_1_bss_C9F8[var_r31->unk_48].unk_0C += 1; - lbl_1_bss_C9F8[var_r31->unk_48].unk_0E = 120; + lbl_1_bss_C9F8[var_r31->unk_48].unk_0E = 2 * REFRESH_RATE; HuAudFXPlay(0x71C); if (lbl_1_bss_C9F8[var_r31->unk_48].unk_0C == 3) { var_r31->unk_00_field2 = 1; @@ -948,14 +958,14 @@ void fn_1_2254(omObjData *object) var_r26 = Hu3DData[object->model[2]].unk_120; *(s16 *)var_r26 = 0; (void)var_r26; - Hu3DModelAttrReset(object->model[2], 1); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); Hu3DModelPosSet(object->model[2], object->trans.x + (140.0 * sind(object->rot.y)), object->trans.y, object->trans.z + (140.0 * cosd(object->rot.y))); } } var_r29 = 8; var_f28 = 1.0f; - var_r28 = 0; + var_r28 = HU3D_MOTATTR_NONE; object->trans.x += 0.2f * (var_r31->unk_4C - object->trans.x); object->trans.z += 0.2f * (var_r31->unk_54 - object->trans.z); object->rot.y = fn_1_85E8(object->rot.y, var_r31->unk_58, 0.2f); @@ -970,7 +980,7 @@ void fn_1_2254(omObjData *object) } var_r29 = 8; var_f28 = var_r31->unk_3C < (var_r31->unk_3E / 2) ? 0.0f : 1.0f; - var_r28 = 0; + var_r28 = HU3D_MOTATTR_NONE; object->trans.x += 0.2f * (var_r31->unk_4C - object->trans.x); object->trans.z += 0.2f * (var_r31->unk_54 - object->trans.z); object->rot.y = fn_1_85E8(object->rot.y, var_r31->unk_58, 0.2f); @@ -996,32 +1006,38 @@ void fn_1_2254(omObjData *object) } if (var_r31->unk_40 >= 0) { if (var_r31->unk_0C == 0) { - Hu3DModelAttrReset(object->model[3], 1); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); } switch (var_r31->unk_40) { case 0: - var_r31->unk_44 = 0.75 + sind(((90.0f * (var_r31->unk_42 % 15)) / 15.0f)); - if ((var_r31->unk_42 % 20) == 0) { - omVibrate(var_r31->unk_02, 0xC, 0xC, 0); + var_r31->unk_44 = 0.75 + sind(((90.0f * (var_r31->unk_42 % (REFRESH_RATE / 4))) / (float)(REFRESH_RATE / 4))); + if (VERSION_NTSC ? 1 : var_r31->unk_0C == 1) { + if ((var_r31->unk_42 % (REFRESH_RATE / 3)) == 0) { + omVibrate(var_r31->unk_02, 0xC, 0xC, 0); + } } break; case 1: - var_r31->unk_44 = 0.75 + (0.75 * sind(((90.0f * (var_r31->unk_42 % 30)) / 30.0f))); - if ((var_r31->unk_42 % 20) == 0) { - omVibrate(var_r31->unk_02, 0xC, 4, 2); + var_r31->unk_44 = 0.75 + (0.75 * sind(((90.0f * (var_r31->unk_42 % (REFRESH_RATE / 2))) / (0.5f * REFRESH_RATE)))); + if (VERSION_NTSC ? 1 : var_r31->unk_0C == 1) { + if ((var_r31->unk_42 % (REFRESH_RATE / 3)) == 0) { + omVibrate(var_r31->unk_02, 0xC, 4, 2); + } } break; case 2: - var_r31->unk_44 = 0.75 + (0.5 * sind(((90.0f * (var_r31->unk_42 % 60)) / 60.0f))); - if ((var_r31->unk_42 % 20) == 0) { - omVibrate(var_r31->unk_02, 12, 6, 6); + var_r31->unk_44 = 0.75 + (0.5 * sind(((90.0f * (var_r31->unk_42 % REFRESH_RATE)) / (1.0f * REFRESH_RATE)))); + if (VERSION_NTSC ? 1 : var_r31->unk_0C == 1) { + if ((var_r31->unk_42 % (REFRESH_RATE / 3)) == 0) { + omVibrate(var_r31->unk_02, 12, 6, 6); + } } break; } var_r31->unk_42++; } else { - Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); } Hu3DModelPosSet(object->model[3], object->trans.x, 300.0f + object->trans.y, object->trans.z); if ((var_r29 >= 0 && var_r29 != var_r31->unk_30) || var_r28 != var_r31->unk_34) { @@ -1061,11 +1077,11 @@ s16 fn_1_31FC(omObjData *object) sp20.z = object->trans.z + (140.0f * sp8.z); if (sp20.x >= -800.0f && sp20.x < 800.0f && sp20.z >= -800.0f && sp20.z < 800.0f) { for (var_r27 = lbl_1_bss_C9F8, var_r28 = 0; var_r28 < lbl_1_bss_119F8; var_r28++, var_r27++) { - PSVECSubtract(&var_r27->unk_00, &sp20, &sp14); - var_f31 = PSVECMag(&sp14); - PSVECSubtract(&var_r27->unk_00, &object->trans, &sp14); - PSVECNormalize(&sp14, &sp14); - var_f29 = PSVECDotProduct(&sp14, &sp8); + VECSubtract(&var_r27->unk_00, &sp20, &sp14); + var_f31 = VECMag(&sp14); + VECSubtract(&var_r27->unk_00, &object->trans, &sp14); + VECNormalize(&sp14, &sp14); + var_f29 = VECDotProduct(&sp14, &sp8); if (var_f31 < var_f30 && var_f29 >= 0.0f) { var_f30 = var_f31; var_r29 = var_r28; @@ -1076,8 +1092,8 @@ s16 fn_1_31FC(omObjData *object) var_r26 = 1; } if (var_r29 >= 0 && lbl_1_bss_C9F8[var_r29].unk_0C < 3) { - PSVECSubtract(&object->trans, &lbl_1_bss_C9F8[var_r29].unk_00, &sp14); - PSVECNormalize(&sp14, &sp14); + VECSubtract(&object->trans, &lbl_1_bss_C9F8[var_r29].unk_00, &sp14); + VECNormalize(&sp14, &sp14); var_r31->unk_4C = (140.0f * sp14.x) + lbl_1_bss_C9F8[var_r29].unk_00.x; var_r31->unk_50 = 0.0f; var_r31->unk_54 = (140.0f * sp14.z) + lbl_1_bss_C9F8[var_r29].unk_00.z; @@ -1132,12 +1148,12 @@ void fn_1_3658(omObjData *object) for (var_r30 = 0; var_r30 < 15; var_r30++) { var_r28 = var_r29[var_r30]->data; if (var_r28->unk_00_field0) { - PSVECSubtract(&object->trans, &var_r29[var_r30]->trans, &spC); - var_f31 = PSVECMag(&spC); + VECSubtract(&object->trans, &var_r29[var_r30]->trans, &spC); + var_f31 = VECMag(&spC); if (var_f31 < 70.0f) { var_f30 = 70.0f - var_f31; if (var_f31 != 0.0f) { - PSVECNormalize(&spC, &spC); + VECNormalize(&spC, &spC); } else { spC.x = 0.0f; @@ -1169,12 +1185,12 @@ void fn_1_37B8(omObjData *object) var_r29 = var_r28[var_r30]; if (object != var_r29) { sp8 = var_r29->data; - PSVECSubtract(&object->trans, &var_r29->trans, &sp10); - var_f31 = PSVECMag(&sp10); + VECSubtract(&object->trans, &var_r29->trans, &sp10); + var_f31 = VECMag(&sp10); if (var_f31 < 100.0f) { var_f30 = 100.0f - var_f31; if (var_f31 != 0.0f) { - PSVECNormalize(&sp10, &sp10); + VECNormalize(&sp10, &sp10); } else { sp10.x = 0.0f; @@ -1210,12 +1226,12 @@ void fn_1_3908(omObjData *object) var_r31 = var_r28[var_r29]; if (object != var_r31) { var_r26 = var_r31->data; - PSVECSubtract(&object->trans, &var_r31->trans, &sp8); - var_f27 = PSVECMag(&sp8); + VECSubtract(&object->trans, &var_r31->trans, &sp8); + var_f27 = VECMag(&sp8); if (var_f27 < 100.0f) { var_f31 = 100.0f - var_f27; - var_f29 = PSVECMag(&var_r27->unk_24); - var_f26 = PSVECMag(&var_r26->unk_24); + var_f29 = VECMag(&var_r27->unk_24); + var_f26 = VECMag(&var_r26->unk_24); if (var_f29 + var_f26 == 0.0f) { var_f30 = var_f28 = 0.5f; } @@ -1223,7 +1239,7 @@ void fn_1_3908(omObjData *object) var_f30 = var_f29 / (var_f29 + var_f26); var_f28 = 1.0f - var_f30; } - PSVECNormalize(&sp8, &sp8); + VECNormalize(&sp8, &sp8); object->trans.x += var_f28 * (sp8.x * var_f31); object->trans.z += var_f28 * (sp8.z * var_f31); var_r31->trans.x += var_f30 * (-sp8.x * var_f31); @@ -1247,17 +1263,17 @@ s32 fn_1_3AE4(omObjData *object, Vec *arg1) s32 var_r28; sp8 = object->data; - PSVECSubtract(arg1, &object->trans, &spC); - PSVECNormalize(&spC, &spC); + VECSubtract(arg1, &object->trans, &spC); + VECNormalize(&spC, &spC); var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); var_r28 = 1; for (var_r31 = 0; var_r31 < 1; var_r31++) { if (object != var_r30[var_r31]) { - PSVECSubtract(&var_r30[var_r31]->trans, arg1, &sp18); - var_f30 = PSVECMag(&sp18); - PSVECSubtract(&var_r30[var_r31]->trans, &object->trans, &sp18); - PSVECNormalize(&sp18, &sp18); - var_f31 = PSVECDotProduct(&sp18, &spC); + VECSubtract(&var_r30[var_r31]->trans, arg1, &sp18); + var_f30 = VECMag(&sp18); + VECSubtract(&var_r30[var_r31]->trans, &object->trans, &sp18); + VECNormalize(&sp18, &sp18); + var_f31 = VECDotProduct(&sp18, &spC); if (var_f31 >= 0.0f && var_f30 < 80.0f) { var_r28 = 0; } @@ -1273,9 +1289,9 @@ void fn_1_3C20(omObjData *object) var_r30 = object->data; Hu3DMotionOverlayReset(object->model[0]); - Hu3DModelAttrSet(object->model[1], 1); - Hu3DModelAttrSet(object->model[3], 1); - var_r30->unk_3C = 10; + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + var_r30->unk_3C = REFRESH_RATE / 5.5; object->func = fn_1_3C94; } @@ -1296,14 +1312,14 @@ void fn_1_3C94(omObjData *object) if (var_r27 < 11) { var_r29 = 0; var_f31 = 1.0f; - var_r28 = 0x40000001; + var_r28 = HU3D_MOTATTR_LOOP; } else { object->rot.y = fn_1_85E8(object->rot.y, 0.0f, 0.2f); if (lbl_1_bss_11EE8 != 0) { var_r29 = 5; var_f31 = 1.0f; - var_r28 = 0; + var_r28 = HU3D_MOTATTR_NONE; if (var_r31->unk_3C != 0) { if (--var_r31->unk_3C == 0) { HuAudCharVoicePlay(var_r31->unk_10, 0x125); @@ -1313,7 +1329,7 @@ void fn_1_3C94(omObjData *object) else { var_r29 = 6; var_f31 = 1.0f; - var_r28 = 0; + var_r28 = HU3D_MOTATTR_NONE; } } if ((var_r29 >= 0 && var_r29 != var_r31->unk_30) || var_r28 != var_r31->unk_34) { @@ -1386,7 +1402,7 @@ void fn_1_3EC0(omObjData *object) fn_1_4444(var_r31); } object->model[3] = Hu3DHookFuncCreate(fn_1_485C); - lbl_1_bss_11F10 = HuSprAnimRead(HuDataSelHeapReadNum(0x49000B, MEMORY_DEFAULT_NUM, HEAP_DATA)); + lbl_1_bss_11F10 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M442, 0x0B)); object->model[4] = Hu3DHookFuncCreate(fn_1_54C8); Hu3DModelLayerSet(object->model[4], 6); for (var_r31 = 0; var_r31 < 15; var_r31++) { @@ -1394,7 +1410,7 @@ void fn_1_3EC0(omObjData *object) } memset(lbl_1_bss_119FC, 0, 0x271); for (var_r31 = 0; var_r31 < 3; var_r31++) { - lbl_1_bss_11F04[var_r31] = HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_1A0[var_r31], MEMORY_DEFAULT_NUM, HEAP_DATA)); + lbl_1_bss_11F04[var_r31] = HuSprAnimReadFile(lbl_1_data_1A0[var_r31]); } object->model[5] = Hu3DHookFuncCreate(fn_1_5A48); Hu3DModelLayerSet(object->model[5], 2); @@ -1416,7 +1432,7 @@ void fn_1_4444(s32 arg0) lbl_1_bss_5C[arg0].unk_04 = 0.0f; lbl_1_bss_5C[arg0].unk_08 = 100.0f * (18.0f * ((frand() & 0x1FF) - 256.0f)) / 256; lbl_1_bss_5C[arg0].unk_0C = lbl_1_bss_5C[arg0].unk_00; - lbl_1_bss_5C[arg0].unk_10 = 0.41666666f + (1.6666666f * (frand() & 0xFF) / 256); + lbl_1_bss_5C[arg0].unk_10 = (25.0f / REFRESH_RATE) + ((100.0f / REFRESH_RATE) * (frand() & 0xFF) / 256); lbl_1_bss_5C[arg0].unk_18 = lbl_1_bss_5C[arg0].unk_1A = (frand() & 0x3F) + 0x20; lbl_1_bss_5C[arg0].unk_1C = 0.1f + (0.9f * (frand() & 0xFF) / 256); lbl_1_bss_5C[arg0].unk_20 = 360.0f * (frand() & 0xFF) / 256; @@ -1473,7 +1489,7 @@ void fn_1_485C(ModelData *model, Mtx mtx) var_r29 = Hu3DCamera; C_MTXOrtho(sp100, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 100.0f); GXSetProjection(sp100, GX_ORTHOGRAPHIC); - PSMTXIdentity(spD0); + MTXIdentity(spD0); GXLoadPosMtxImm(spD0, 0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); @@ -1513,7 +1529,7 @@ void fn_1_485C(ModelData *model, Mtx mtx) GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); C_MTXPerspective(sp40, var_r29->fov, var_r29->aspect, var_r29->near, var_r29->far); GXSetProjection(sp40, GX_PERSPECTIVE); - PSMTXInverse(mtx, spA0); + 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); @@ -1569,7 +1585,7 @@ void fn_1_54C8(ModelData *model, Mtx mtx) fn_1_8520(&lbl_1_bss_C05C[1], 0); C_MTXOrtho(sp5C, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 100.0f); GXSetProjection(sp5C, GX_ORTHOGRAPHIC); - PSMTXIdentity(sp2C); + MTXIdentity(sp2C); GXLoadPosMtxImm(sp2C, 0); GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); GXSetNumTexGens(2); @@ -1639,8 +1655,8 @@ s32 fn_1_59C0(Vec *arg0) s32 var_r31; for (var_r31 = 0; var_r31 < lbl_1_bss_119F8; var_r31++) { - PSVECSubtract(&lbl_1_bss_C9F8[var_r31].unk_00, arg0, &spC); - if (PSVECMag(&spC) < 50.0f) { + VECSubtract(&lbl_1_bss_C9F8[var_r31].unk_00, arg0, &spC); + if (VECMag(&spC) < 50.0f) { return var_r31; } } @@ -1718,9 +1734,9 @@ void fn_1_5EDC(ModelData *model, float (*mtx)[4]) s32 var_r30; var_r31 = model->unk_120; - PSMTXInverse(mtx, spC); + MTXInverse(mtx, spC); spC[0][3] = spC[1][3] = spC[2][3] = 0.0f; - PSMTXConcat(mtx, &spC[0], mtx); + MTXConcat(mtx, &spC[0], mtx); GXLoadPosMtxImm(mtx, 0); GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GXSetNumTexGens(1); @@ -1804,7 +1820,7 @@ void fn_1_64B4(ModelData *model, ParticleData *particle, Mtx matrix) var_r31->unk08.x = 20.0f; var_r31->unk08.y = 100.0f; var_r31->unk08.z = 0.0f; - PSVECNormalize(&var_r31->unk08, &var_r31->unk08); + VECNormalize(&var_r31->unk08, &var_r31->unk08); var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xFF; } var_r31 = var_r29->unk_48; @@ -1840,7 +1856,7 @@ void fn_1_64B4(ModelData *model, ParticleData *particle, Mtx matrix) sp20.x = sp38.x + (2500.0f * sp8.x); sp20.y = sp38.y + (2500.0f * sp8.y); sp20.z = sp38.z + (2500.0f * sp8.z); - var_f31 = -PSVECDotProduct(&var_r31->unk08, &sp14); + var_f31 = -VECDotProduct(&var_r31->unk08, &sp14); if (var_f31 >= 0.0f) { espTPLvlSet(particle->unk_02, 0.5f * var_f31 * var_f31); } @@ -1913,14 +1929,14 @@ void fn_1_6D24(omObjData *object) memset(var_r29, 0, sizeof(M442MainWork2)); var_r29->unk_16 = lbl_1_bss_11EE0++; var_r29->unk_18 = 1.0f; - object->model[0] = Hu3DModelCreateFile(0x490002); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M442, 0x02)); Hu3DModelLayerSet(object->model[0], 7); - Hu3DModelAttrSet(object->model[0], 0x40000001); - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); object->model[1] = Hu3DParticleCreate(lbl_1_bss_11EFC, 0x64); Hu3DParticleHookSet(object->model[1], fn_1_7EBC); Hu3DModelLayerSet(object->model[1], 7); - Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); for (var_r27 = 0, var_r30 = 1; var_r30 < 24; var_r30++) { for (var_r28 = 1; var_r28 < 24; var_r28++) { if (*(lbl_1_bss_11C6D + (var_r30 * 0x19) + var_r28) == 0) { @@ -1963,11 +1979,11 @@ void fn_1_72C4(omObjData *object) switch (var_r31->unk_02) { case 0: if (var_r31->unk_00_field0) { - Hu3DModelAttrReset(object->model[0], 1); - Hu3DModelAttrReset(object->model[1], 1); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); var_r31->unk_02 = 1; var_r31->unk_18 = 0.0f; - var_r31->unk_0C = 60; + var_r31->unk_0C = REFRESH_RATE; } break; case 1: @@ -1975,7 +1991,7 @@ void fn_1_72C4(omObjData *object) var_r31->unk_18 += 0.05f; } var_r31->unk_02 = 2; - var_r31->unk_0C = var_r31->unk_0E = 45; + var_r31->unk_0C = var_r31->unk_0E = 0.75 * REFRESH_RATE; var_r31->unk_10 = HuAudFXPlay(lbl_1_data_23C[var_r31->unk_14]); break; case 2: @@ -2016,8 +2032,8 @@ s32 fn_1_75DC(Vec *arg0) for (var_r30 = 0; var_r30 < 15; var_r30++) { var_r28 = var_r29[var_r30]->data; if (var_r28->unk_00_field0 == 0) { - PSVECSubtract(&var_r29[var_r30]->trans, arg0, &spC); - var_f31 = PSVECMag(&spC); + VECSubtract(&var_r29[var_r30]->trans, arg0, &spC); + var_f31 = VECMag(&spC); if (var_f31 < 100.0f) { return var_r30; } @@ -2072,11 +2088,11 @@ void fn_1_7890(ModelData *model, ParticleData *particle, Mtx matrix) var_r31->unk34.x = 100.0 * (0.20000000298023224 * sind(var_f31)); var_r31->unk34.y = 0.0f; var_r31->unk34.z = 100.0 * (0.20000000298023224 * cosd(var_f31)); - var_f30 = 1.6666666f + (2.5f * (frand() & 0xFF) / 256); + var_f30 = (100.0f / REFRESH_RATE) + ((150.0f / REFRESH_RATE) * (frand() & 0xFF) / 256); var_f31 = 360.0f * (frand() & 0xFF) / 256; var_r31->unk08.x = var_f30 * sind(var_f31); var_r31->unk08.z = var_f30 * cosd(var_f31); - var_r31->unk08.y = 16.666666f * (frand() & 0xFF) / 256; + var_r31->unk08.y = (1000.0f / REFRESH_RATE) * (frand() & 0xFF) / 256; var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xFF; } } @@ -2087,7 +2103,7 @@ void fn_1_7890(ModelData *model, ParticleData *particle, Mtx matrix) var_r28++; } else { - var_r31->unk08.y += -0.50000006f; + var_r31->unk08.y += VERSION_NTSC ? -0.50000006f : -0.6f; var_r31->unk34.x += var_r31->unk08.x; var_r31->unk34.y += var_r31->unk08.y; var_r31->unk34.z += var_r31->unk08.z; @@ -2212,7 +2228,7 @@ void fn_1_8988(omObjData *arg0) case 1: fn_1_8738(0, 1, sind((90.0f * lbl_1_data_250[0]))); if (lbl_1_data_250[0] < 1.0f) { - lbl_1_data_250[0] += 0.016666668f; + lbl_1_data_250[0] += 1.0f / REFRESH_RATE; if (lbl_1_data_250[0] > 1.0f) { lbl_1_data_250[0] = 1.0f; return; @@ -2224,7 +2240,7 @@ void fn_1_8988(omObjData *arg0) case 2: fn_1_8738(1, 2, 1.0 - cosd((90.0f * lbl_1_data_250[1]))); if (lbl_1_data_250[1] < 1.0f) { - lbl_1_data_250[1] += 0.016666668f; + lbl_1_data_250[1] += 1.0f / REFRESH_RATE; if (lbl_1_data_250[1] > 1.0f) { lbl_1_data_250[1] = 1.0f; return; diff --git a/src/REL/m442Dll/score.c b/src/REL/m442Dll/score.c index 08e37259..6fd5b7c8 100644 --- a/src/REL/m442Dll/score.c +++ b/src/REL/m442Dll/score.c @@ -39,25 +39,25 @@ s32 fn_1_91AC(Process *arg0, s16 arg1) var_r31 = lbl_1_bss_11F48->data; var_r31->unk_08 = arg1; var_r31->unk_0A = 0; - var_r31->unk_18 = espEntry(0x610023, 2, 0); + var_r31->unk_18 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x23), 2, 0); espTPLvlSet(var_r31->unk_18, 0.5f); espPosSet(var_r31->unk_18, 508.0f, 64.0f); espColorSet(var_r31->unk_18, 0, 0, 0); - var_r31->unk_1A = espEntry(0x610037, 1, 0); + var_r31->unk_1A = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x37), 1, 0); espPosSet(var_r31->unk_1A, 480.0f, 56.0f); for (var_r30 = 0; var_r30 < 3; var_r30++) { - var_r31->unk_0C[var_r30] = espEntry(0x610030, 0, 0); + var_r31->unk_0C[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x30), 0, 0); espPosSet(var_r31->unk_0C[var_r30], (var_r30 * 0x10) + 0x1F4, 56.0f); espDispOff(var_r31->unk_0C[var_r30]); } for (var_r30 = 0; var_r30 < 3; var_r30++) { - var_r31->unk_0C[var_r30 + 3] = espEntry(0x610031, 1, 0); + var_r31->unk_0C[var_r30 + 3] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x31), 1, 0); espPosSet(var_r31->unk_0C[var_r30 + 3], (var_r30 * 0x10) + 0x1F4, 74.0f); } for (var_r30 = 0; var_r30 < 8; var_r30++) { espDispOff(var_r31->unk_0C[var_r30]); } - HuDataDirClose(0x610000); + HuDataDirClose(DATADIR_MGCONST); return fn_1_9520(0); } diff --git a/src/REL/m443Dll/main.c b/src/REL/m443Dll/main.c new file mode 100644 index 00000000..acf8f914 --- /dev/null +++ b/src/REL/m443Dll/main.c @@ -0,0 +1,1164 @@ +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" + +#include "string.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +#include "REL/m443Dll.h" + +typedef struct M443DllWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + u32 unk_14; + u32 unk_18; + u32 unk_1C; + u32 unk_20; + char unk24[4]; + s32 unk_28; + u32 unk_2C; + s32 unk_30; + s32 unk_34[4]; + float unk_44[4]; + u32 unk_54; + u32 unk_58; + s32 unk_5C; +} M443DllWork; /* size = 0x60 */ + +typedef struct M443DllData108Struct { + u32 unk_00; + s32 unk_04; +} M443DllData108Struct; /* size = 0x08 */ + +typedef struct M443DllUnkStruct { + s32 unk_00; + s32 unk_04; + float unk_08; + float unk_0C; + u32 unk_10; + u32 unk_14; + u32 unk_18; + s16 unk_1C[0x10]; +} M443DllUnkStruct; /* size = 0x3C */ + +void fn_1_1294(omObjData *); +void fn_1_17D8(omObjData *arg0); +omObjFunc fn_1_1C98(Process *arg0, omObjData *arg1); +void fn_1_1D8C(omObjData *); +omObjFunc fn_1_2490(Process *arg0, omObjData *arg1); +void fn_1_25A4(omObjData *); +void fn_1_2DD8(M443DllUnkStruct *arg0); +void fn_1_2F54(M443DllUnkStruct *arg0); +void fn_1_32C0(Process *arg0); +void fn_1_3370(omObjData *object); +void fn_1_3710(omObjData *); +void fn_1_3770(omObjData *object); +void fn_1_3D78(ModelData *, float[3][4]); +void fn_1_420(omObjData *object); +void fn_1_584(omObjData *arg0); +void fn_1_6D0(omObjData *); +void fn_1_9B0(omObjData *); +void fn_1_CE0(omObjData *); +void fn_1_ECC(omObjData *); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; + +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; + +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; + +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; + +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; + +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; + +Process *lbl_1_bss_74; +omObjData *lbl_1_bss_70; +omObjData *lbl_1_bss_6C; +omObjData *lbl_1_bss_68; +s16 lbl_1_bss_64; +s16 lbl_1_bss_5C[4]; +s16 lbl_1_bss_5A; +s16 lbl_1_bss_58; +s16 lbl_1_bss_56; +s16 lbl_1_bss_54; +s32 lbl_1_bss_50; +M443DllUnkStruct lbl_1_bss_14; +s16 lbl_1_bss_10[1]; // why only 1 long? +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Vec sp14; + Vec sp8; + Process *var_r31; + LightData *var_r30; + + HuAudSndGrpSet(0x45); + lbl_1_bss_C = lbl_1_bss_8 = -1; + lbl_1_bss_4 = lbl_1_bss_0 = -1; + lbl_1_bss_5C[0] = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_5C[0]); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_5C[0]]; + var_r30->unk_00 |= 0x8000; + + lbl_1_data_18.x = 55.74f; + lbl_1_data_18.y = 0.0f; + lbl_1_data_18.z = 3500.0f; + + sp14.x = sp14.y = sp14.z = 0.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + sp8.x = 0.0f; + sp8.y = 3480.0002f; + sp8.z = 900.00006f; + Hu3DGLightPosAimSetV(lbl_1_bss_5C[0], &sp8, &sp14); + + lbl_1_data_28.x = 100.0f; + lbl_1_data_28.y = 2000.0f; + lbl_1_data_28.z = 2000.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 700.0f; + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_5A = lbl_1_bss_58 = lbl_1_bss_56 = lbl_1_bss_54 = -1; + lbl_1_bss_50 = 0; + var_r31 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_74 = var_r31; + omGameSysInit(var_r31); + fn_1_2DD8(&lbl_1_bss_14); + fn_1_32C0(var_r31); + lbl_1_bss_70 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_420); + fn_1_4A5C(var_r31); + fn_1_5444(var_r31); +} + +void fn_1_420(omObjData *object) +{ + M443DllWork *var_r31; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M443DllWork), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + memset(var_r31, 0, sizeof(M443DllWork)); + var_r31->unk_00 = 0; + var_r31->unk_04 = 0; + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + var_r31->unk_14 = 0; + var_r31->unk_18 = 0; + var_r31->unk_28 = 0; + var_r31->unk_2C = 0; + var_r31->unk_08 = 0; + var_r31->unk_54 = 2; + var_r31->unk_58 = 0; + var_r31->unk_5C = 0; + object->func = fn_1_6D0; +} + +void fn_1_4E4(omObjData *object) +{ + M443DllWork *var_r31; + + var_r31 = object->data; + var_r31->unk_04++; + var_r31->unk_10++; + var_r31->unk_18++; + var_r31->unk_2C++; + fn_1_2F54(&lbl_1_bss_14); + if ((omSysExitReq != 0) && (var_r31->unk_00 != 5)) { + var_r31->unk_00 = 4; + fn_1_584(object); + } +} + +void fn_1_584(omObjData *object) +{ + M443DllWork *var_r31 = object->data; + + if (var_r31->unk_08 == 0) { + switch (var_r31->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_14.unk_00 = 1; + var_r31->unk_00 = 1; + var_r31->unk_10 = 0; + object->func = fn_1_1C98(lbl_1_bss_74, object); + break; + case 1: + var_r31->unk_00 = 2; + var_r31->unk_18 = 0; + fn_1_3FE8(4); + object->func = fn_1_ECC; + break; + case 2: + var_r31->unk_00 = 3; + var_r31->unk_2C = 0; + object->func = fn_1_2490(lbl_1_bss_74, object); + break; + case 3: + case 4: + var_r31->unk_08 = 1; + var_r31->unk_00 = 5; + object->func = fn_1_9B0; + break; + case 5: + default: + var_r31->unk_00 = 5; + object->func = fn_1_CE0; + break; + } + var_r31->unk_04 = 0; + } +} + +void fn_1_6D0(omObjData *object) +{ + fn_1_4E4(object); + fn_1_584(object); +} + +void fn_1_9B0(omObjData *object) +{ + M443DllWork *var_r27 = object->data; + + fn_1_4E4(object); + + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + if (lbl_1_bss_8 >= 0) { + HuAudFXStop(lbl_1_bss_8); + lbl_1_bss_8 = -1; + } + var_r27->unk_08 = 0; + fn_1_584(object); + } +} + +void fn_1_CE0(omObjData *object) +{ + fn_1_4E4(object); + + if (WipeStatGet() == 0) { + fn_1_565C(); + fn_1_4AB0(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_ECC(omObjData *object) +{ + M443DllWork *var_r29 = object->data; + + fn_1_4E4(object); + switch (var_r29->unk_14) { + case 0: + var_r29->unk_1C = 0x12C; + var_r29->unk_20 = 0x3C; + lbl_1_bss_5A = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_5A, 320.0f, 240.0f); + lbl_1_bss_64 = -1; + Center.x = 0.0f; + Center.y = 200.0f; + Center.z = 0.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + CZoom = 1900.0f; + lbl_1_bss_14.unk_00 = 1; + var_r29->unk_14 = 1; + var_r29->unk_18 = 0; + break; + case 1: + if ((var_r29->unk_18 > 60.0f) && (lbl_1_bss_C >= 0)) { + HuAudFXFadeOut(lbl_1_bss_C, 0x1E); + lbl_1_bss_C = -1; + } + if ((MGSeqStatGet(lbl_1_bss_5A) == 0) && (var_r29->unk_08 == 0)) { + var_r29->unk_14 = 2; + var_r29->unk_18 = 0; + object->func = fn_1_1294; + } + break; + } +} + +void fn_1_1294(omObjData *object) +{ + s32 sp8[4]; + + float var_f31; + + s32 var_r30; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + M443DllWork *var_r31 = object->data; + var_r25 = 0; + fn_1_4E4(object); + lbl_1_bss_14.unk_14++; + if (--var_r31->unk_20 == 0) { + var_r31->unk_20 = 0x3C; + var_r31->unk_1C--; + if (var_r31->unk_1C == 0) { + var_r31->unk_54 = 0; + var_r25 = 1; + } + } + if (var_r31->unk_1C <= 5) { + if (lbl_1_bss_64 < 0) { + lbl_1_bss_64 = MGSeqCreate(1, var_r31->unk_1C, -1, -1); + } + MGSeqParamSet(lbl_1_bss_64, 1, var_r31->unk_1C); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r31->unk_44[var_r30] >= 40000.0f) { + var_r31->unk_54 = 1; + } + } + if (var_r31->unk_54 != 2) { + var_r25 = 1; + } + if (var_r25 != 0) { + if (var_r31->unk_54 == 1) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp8[var_r30] = var_r30; + } + for (var_r24 = 0; var_r24 < 0xA; var_r24++) { + for (var_r30 = 0; var_r30 < 3; var_r30++) { + for (var_r26 = var_r30 + 1; var_r26 < 4; var_r26++) { + if ((var_r31->unk_44[var_r30] < var_r31->unk_44[var_r26]) + || ((var_r31->unk_44[var_r30] == var_r31->unk_44[var_r26]) && (frandmod(0x3E8) < 0x2BC))) { + var_f31 = var_r31->unk_44[var_r30]; + var_r31->unk_44[var_r30] = var_r31->unk_44[var_r26]; + var_r31->unk_44[var_r26] = var_f31; + var_r23 = sp8[var_r30]; + sp8[var_r30] = sp8[var_r26]; + sp8[var_r26] = var_r23; + } + } + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_34[sp8[var_r30]] = var_r30; + } + var_r31->unk_30 = sp8[0]; + } + lbl_1_bss_58 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_58, 320.0f, 240.0f); + if (GWPlayerCfg[var_r31->unk_30].iscom == 0) { + if (lbl_1_bss_14.unk_14 < lbl_1_bss_14.unk_10) { + GWMGRecordSet(5, lbl_1_bss_14.unk_14); + lbl_1_bss_50 = 1; + } + if (lbl_1_bss_14.unk_14 <= 0x258) { + GWGameStat.present[0x39] = 1; + OSReport("Present For You!!!\n"); + } + } + lbl_1_bss_8 = HuAudFXPlay(0x735); + fn_1_3FE8(3); + var_r31->unk_14 = 3; + var_r31->unk_18 = 0; + if (var_r31->unk_08 == 0) { + object->func = fn_1_17D8; + } + } +} + +void fn_1_17D8(omObjData *object) +{ + M443DllWork *var_r27 = object->data; + s32 var_r25 = 0; + + if (lbl_1_bss_64 >= 0) { + MGSeqParamSet(lbl_1_bss_64, 2, -1); + lbl_1_bss_64 = -1; + } + fn_1_4E4(object); + if (var_r27->unk_14 == 3) { + if (var_r27->unk_54 == 1) { + M443DllCameraStruct *var_r31 = fn_1_4148(var_r27->unk_30 + 1); + if (var_r31->unk_A0 == 0) { + var_r31->unk_78 = var_r31->unk_44; + var_r31->unk_7C = var_r31->unk_48; + var_r31->unk_80 = var_r31->unk_40; + var_r31->unk_04 = 0x3E8; + } + if (var_r31->unk_A0 <= 0x3C) { + float var_f31 = 0.016666668f * var_r31->unk_A0; + var_r31->unk_44 = var_r31->unk_78 + ((320.0f - var_r31->unk_78) * var_f31); + var_r31->unk_48 = var_r31->unk_7C + ((240.0f - var_r31->unk_7C) * var_f31); + var_r31->unk_40 = var_r31->unk_80 + ((2.0f - var_r31->unk_80) * var_f31); + } + else { + var_r25 = 1; + } + var_r31->unk_A0 = var_r31->unk_A0 + 1; + } + else { + var_r25 = 1; + } + if ((MGSeqStatGet(lbl_1_bss_58) == 0) && (var_r27->unk_58 == 0x1111) && (var_r25 != 0)) { + if (var_r27->unk_08 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + } + var_r27->unk_14 = 4; + var_r27->unk_18 = 0; + } + } + else if (WipeStatGet() == 0) { + var_r27->unk_14 = 5; + var_r27->unk_18 = 0; + fn_1_584(object); + } +} + +omObjFunc fn_1_1C98(Process *process, omObjData *object) +{ + CRot.x = -80.5f; + CRot.y = CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = 0.0f; + CZoom = 1000.0f; + object->work[0] = object->work[1] = 0; + fn_1_3FE8(1); + lbl_1_bss_C = HuAudFXPlay(0x734); + + return fn_1_1D8C; +} + +Vec lbl_1_data_60[6] = { + { -500.0f, 150.0f, 350.0f }, + { -500.0f, 150.0f, 350.0f }, + { 500.0f, 150.0f, 350.0f }, + { 500.0f, 150.0f, 350.0f }, + { 0.0f, 150.0f, 350.0f }, + { 0.0f, 150.0f, 350.0f }, +}; + +Vec lbl_1_data_A8[6] = { + { -1.5f, -40.0f, 880.0f }, + { -1.5f, -40.0f, 880.0f }, + { -20.0f, 40.0f, 1000.0f }, + { -40.0f, 130.0f, 1300.0f }, + { -40.0f, 180.0f, 1500.0f }, + { -40.0f, 180.0f, 1500.0f }, +}; + +s32 lbl_1_data_F0[6] = { 0x3C, 0x5A, 0x6C, 0x96, 0x6C, 0 }; + +void fn_1_1D8C(omObjData *object) +{ + Vec sp8; + + float var_f31; + M443DllCameraStruct *var_r27; + + M443DllWork *var_r26 = object->data; + fn_1_4E4(object); + var_r26->unk_0C = 1; + object->work[0]++; + if ((object->work[1] == 1) && (lbl_1_bss_4 < 0)) { + lbl_1_bss_4 = HuAudSStreamPlay(0xB); + } + var_f31 = (float)object->work[0] / lbl_1_data_F0[object->work[1]]; + VECSubtract(&lbl_1_data_60[object->work[1] + 1], &lbl_1_data_60[object->work[1]], &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&lbl_1_data_60[object->work[1]], &sp8, &sp8); + Center.x = sp8.x; + Center.y = sp8.y; + Center.z = sp8.z; + VECSubtract(&lbl_1_data_A8[object->work[1] + 1], &lbl_1_data_A8[object->work[1]], &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&lbl_1_data_A8[object->work[1]], &sp8, &sp8); + CRot.x = sp8.x; + CRot.y = sp8.y; + CRot.z = 0.0f; + CZoom = sp8.z; + var_r27 = fn_1_4148(0); + var_r27->unk_1C = Center; + var_r27->unk_28 = CRot; + var_r27->unk_34 = CZoom; + if (object->work[1] == 3) { + fn_1_3FE8(2); + } + if (var_f31 >= 1.0f) { + object->work[0] = 0; + object->work[1] += 1; + if (lbl_1_data_F0[object->work[1]] == 0) { + var_r26->unk_0C = 2; + fn_1_584(object); + } + } +} + +omObjFunc fn_1_2490(Process *process, omObjData *object) +{ + M443DllCameraStruct *var_r31; + M443DllWork *var_r30 = object->data; + + if (var_r30->unk_08 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + } + fn_1_3FE8(1); + var_r31 = fn_1_4148(0); + if (var_r30->unk_54 == 1) { + var_r31->unk_1C.x = 70.0f; + var_r31->unk_1C.y = 250.0f; + var_r31->unk_1C.z = 500.0f; + } + else { + var_r31->unk_1C.x = 0.0f; + var_r31->unk_1C.y = 150.0f; + var_r31->unk_1C.z = 1000.0f; + } + var_r31->unk_28.x = -10.0f; + var_r31->unk_28.y = 0.0f; + + var_r31->unk_34 = 800.0f; + return fn_1_25A4; +} + +void fn_1_25A4(omObjData *object) +{ + M443DllWork *var_r28 = object->data; + s32 var_r22 = 1; + + fn_1_4E4(object); + if (lbl_1_bss_50 != 0) { + var_r22 = 0; + if (lbl_1_bss_56 < 0) { + lbl_1_bss_56 = MGSeqCreate(0xE, lbl_1_bss_14.unk_14); + lbl_1_bss_14.unk_04 = 1; + } + else if (MGSeqStatGet(lbl_1_bss_56) == 0) { + var_r22 = 1; + lbl_1_bss_50 = 0; + } + } + if ((WipeStatGet() != 0) || (var_r22 == 0)) { + var_r28->unk_2C = 0; + return; + } + var_r28->unk_28 = 1; + if (lbl_1_bss_0 < 0) { + if (var_r28->unk_54 == 1) { + lbl_1_bss_0 = HuAudSStreamPlay(1); + } + else { + lbl_1_bss_0 = HuAudSStreamPlay(4); + } + } + if (lbl_1_bss_54 < 0) { + if (var_r28->unk_54 == 1) { + lbl_1_bss_54 = MGSeqCreate(5, 3, GWPlayerCfg[var_r28->unk_30].character, -1, -1, -1); + GWPlayerCoinWinAdd(var_r28->unk_30, 10); + } + else { + lbl_1_bss_54 = MGSeqCreate(5, 2); + } + } + else if ((MGSeqStatGet(lbl_1_bss_54) == 0) && (var_r28->unk_2C >= 210.0f)) { + var_r28->unk_28 = 2; + fn_1_584(object); + } +} + +M443DllData108Struct lbl_1_data_108[0x10] = { + { 0x4A001F, 0x10E }, + { 0x610037, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, +}; + +void fn_1_2DD8(M443DllUnkStruct *arg0) +{ + s32 var_r30; + + memset(arg0, 0, sizeof(M443DllUnkStruct)); + arg0->unk_10 = GWMGRecordGet(5); + if (arg0->unk_10 == 0) { + arg0->unk_10 = 0xE10; + } + arg0->unk_08 = 320.0f; + arg0->unk_0C = 64.0f; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + arg0->unk_1C[var_r30] = -1; + if (lbl_1_data_108[var_r30].unk_00 != 0) { + arg0->unk_1C[var_r30] = espEntry(lbl_1_data_108[var_r30].unk_00, lbl_1_data_108[var_r30].unk_04, 0); + espAttrSet(arg0->unk_1C[var_r30], HUSPR_ATTR_LINEAR); + espDispOff(arg0->unk_1C[var_r30]); + } + } + espColorSet(arg0->unk_1C[0], 0, 0, 0); + espTPLvlSet(arg0->unk_1C[0], 0.699999988079071); + espBankSet(arg0->unk_1C[7], 0xB); + espBankSet(arg0->unk_1C[8], 0xA); + espBankSet(arg0->unk_1C[14], 0xB); + espBankSet(arg0->unk_1C[15], 0xA); +} + +Vec2f lbl_1_data_188[0x10] = { + { 0.0f, 0.0f }, + { -52.0f, -9.0f }, + { 53.0f, -8.0f }, + { 35.0f, -8.0f }, + { 9.0f, -8.0f }, + { -9.0f, -8.0f }, + { -31.0f, -8.0f }, + { 23.0f, -8.0f }, + { -17.0f, -8.0f }, + { 53.0f, 8.0f }, + { 35.0f, 8.0f }, + { 9.0f, 8.0f }, + { -9.0f, 8.0f }, + { -31.0f, 8.0f }, + { 23.0f, 8.0f }, + { -17.0f, 8.0f }, +}; + +void fn_1_2F54(M443DllUnkStruct *arg0) +{ + u32 sp8[3]; + float var_f31; + + s32 var_r30; + u32 var_r29; + s32 var_r28; + s32 var_r27; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + if (arg0->unk_1C[var_r30] >= 0) { + if (arg0->unk_00 == 0) { + espDispOff(arg0->unk_1C[var_r30]); + } + else { + espDispOn(arg0->unk_1C[var_r30]); + espPosSet(arg0->unk_1C[var_r30], 0.9f * (arg0->unk_08 + lbl_1_data_188[var_r30].x), arg0->unk_0C + lbl_1_data_188[var_r30].y); + } + } + } + arg0->unk_18++; + if (arg0->unk_04 != 0) { + var_r29 = arg0->unk_14; + arg0->unk_10 = var_r29; + var_f31 = 1.100000023841858 + (0.10000000149011612 * sind((22.5f * (arg0->unk_18 & 0xF)))); + espScaleSet(arg0->unk_1C[1], var_f31, var_f31); + for (var_r30 = 2; var_r30 <= 6; var_r30++) { + espScaleSet(arg0->unk_1C[var_r30], var_f31, var_f31); + } + for (var_r30 = 7; var_r30 <= 8; var_r30++) { + espScaleSet(arg0->unk_1C[var_r30], var_f31, var_f31); + } + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r30 != 0) { + var_r29 = arg0->unk_14; + var_r27 = 9; + } + else { + var_r29 = arg0->unk_10; + var_r27 = 2; + } + sp8[0] = var_r29 % 60; + var_r29 = (var_r29 - sp8[0]) / 60; + sp8[0] = 100.0f * (0.016666668f * sp8[0]); + sp8[1] = var_r29 % 60; + var_r29 = (var_r29 - sp8[1]) / 60; + sp8[2] = var_r29; + for (var_r28 = 0; var_r28 < 3; var_r28++) { + espBankSet(arg0->unk_1C[var_r27++], sp8[var_r28] % 10); + if (var_r28 < 2) { + espBankSet(arg0->unk_1C[var_r27++], sp8[var_r28] / 10); + } + } + } +} + +void fn_1_32C0(Process *process) +{ + Hu3DCameraCreate(0x1F); + lbl_1_bss_6C = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_6C->work[0] = 5; + lbl_1_bss_68 = omAddObjEx(process, 0xC, 1, 0, -1, fn_1_3370); + lbl_1_bss_68->work[0] = 0; +} + +void fn_1_3370(omObjData *object) +{ + M443DllCameraStruct *var_r31; + s32 var_r30; + M443DllCameraStruct *var_r28; + + float sp1C[5][4] = { + { 320.0f, 240.0f, 640.0f, 416.0f }, + { 160.0f, 136.0f, 320.0f, 208.0f }, + { 480.0f, 136.0f, 320.0f, 208.0f }, + { 160.0f, 344.0f, 320.0f, 208.0f }, + { 480.0f, 344.0f, 320.0f, 208.0f }, + }; + s32 sp8[5] = { 1, 2, 4, 8, 16 }; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 10 * sizeof(M443DllCameraStruct), MEMORY_DEFAULT_NUM); + var_r28 = object->data; + memset(var_r28, 0, 10 * sizeof(M443DllCameraStruct)); + object->model[0] = Hu3DHookFuncCreate(fn_1_3D78); + Hu3DModelLayerSet(*object->model, 0); + Hu3DModelCameraSet(*object->model, 0x1E); + for (var_r31 = var_r28, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + var_r31->unk_00 = 1; + var_r31->unk_04 = var_r30 * 0x64; + var_r31->unk_10 = 41.5f; + var_r31->unk_14 = 100.0f; + var_r31->unk_18 = 60000.0f; + var_r31->unk_1C.x = 0.0f; + var_r31->unk_1C.y = 0.0f; + var_r31->unk_1C.z = 0.0f; + var_r31->unk_28.x = -15.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_34 = 1000.0f; + var_r31->unk_40 = 1.0f; + var_r31->unk_44 = sp1C[var_r30][0]; + var_r31->unk_48 = sp1C[var_r30][1]; + var_r31->unk_4C = sp1C[var_r30][2]; + var_r31->unk_50 = sp1C[var_r30][3]; + var_r31->unk_3C = var_r31->unk_0C = sp8[var_r30]; + var_r31->unk_08 = var_r30; + var_r31->unk_38 = var_r30; + } + object->work[1] = 0; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + lbl_1_bss_10[var_r30] = espEntry(0x4A001E, 0x12C, 0); + espPosSet(lbl_1_bss_10[var_r30], 288.0, 240.0); + if (var_r30 != 0) { + espScaleSet(lbl_1_bss_10[var_r30], 0.22499999403953552, 60.0); + } + else { + espScaleSet(lbl_1_bss_10[var_r30], 72.0, 0.25); + } + espColorSet(lbl_1_bss_10[var_r30], 0, 0, 0); + espTPLvlSet(lbl_1_bss_10[var_r30], 1.0); + espDispOff(lbl_1_bss_10[var_r30]); + } + object->work[0]++; + fn_1_3770(object); + object->func = fn_1_3710; +} + +void fn_1_3710(omObjData *arg0) +{ + M443DllWork *sp8 = arg0->data; + s32 spC[4] = { 0x100, 0x200, 0x400, 0x800 }; + fn_1_3770(arg0); +} + +void fn_1_3770(omObjData *arg0) +{ + float var_f31; + + M443DllCameraStruct *var_r31; + s32 var_r30; + s32 var_r29; + M443DllCameraStruct *var_r28; + s32 var_r26; + u32 var_r25; + s32 var_r24; + s32 var_r23; + u32 var_r22; + u32 var_r21; + + var_r28 = arg0->data; + { + s32 sp40[4] = { 2, 4, 8, 16 }; + u32 sp30[4]; + s32 sp20[4]; + float sp18[2]; + float sp10[2]; + float sp8[2]; + + var_r24 = 0; + var_r26 = 0; + memcpy(&var_r28[5], var_r28, 5 * sizeof(M443DllCameraStruct)); + switch (arg0->work[1]) { + case 0: + break; + case 1: + var_r26 |= 1; + break; + case 2: + var_r26 |= 1; + case 3: + var_r24 = 1; + case 4: + var_r26 |= 0x1E; + break; + } + if (var_r24 != 0) { + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp30[var_r30] = var_r28[var_r30 + 6].unk_04; + sp20[var_r30] = var_r30; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + for (var_r29 = var_r30 + 1; var_r29 < 4; var_r29++) { + if ((var_r30 != var_r29) && (sp30[var_r30] > sp30[var_r29])) { + var_r25 = sp30[var_r30]; + sp30[var_r30] = sp30[var_r29]; + sp30[var_r29] = var_r25; + var_r25 = sp20[var_r30]; + sp20[var_r30] = sp20[var_r29]; + sp20[var_r29] = var_r25; + } + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r28[sp20[var_r30] + 6].unk_3C = sp40[var_r30]; + var_r28[sp20[var_r30] + 6].unk_38 = var_r30 + 1; + } + Hu3DCamera[5].fov = -1.0f; + for (var_r31 = &var_r28[5], var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_00 == 0) || ((var_r26 & var_r31->unk_0C) == 0)) { + Hu3DCamera[var_r31->unk_38].fov = -1.0f; + } + else { + var_f31 = 1.2f * ((var_r31->unk_4C / 640.0f) / (var_r31->unk_50 / 480.0f)); + sp18[0] = var_r31->unk_4C * var_r31->unk_40; + sp18[1] = var_r31->unk_50 * var_r31->unk_40; + Hu3DCameraPerspectiveSet(var_r31->unk_3C, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18, var_f31); + Hu3DCameraViewportSet( + var_r31->unk_3C, var_r31->unk_44 - (0.5f * sp18[0]), var_r31->unk_48 - (0.5f * sp18[1]), sp18[0], sp18[1], 0.0f, 1.0f); + sp10[0] = var_r31->unk_44 - (0.5f * sp18[0]); + sp10[1] = var_r31->unk_48 - (0.5f * sp18[1]); + sp8[0] = var_r31->unk_44 + (0.5f * sp18[0]); + sp8[1] = var_r31->unk_48 + (0.5f * sp18[1]); + if (sp10[0] < 0.0f) { + sp10[0] = 0.0f; + } + if (sp10[1] < 0.0f) { + sp10[1] = 0.0f; + } + if (sp8[0] > 640.0f) { + sp8[0] = 640.0f; + } + if (sp8[1] > 480.0f) { + sp8[1] = 480.0f; + } + sp8[0] -= sp10[0]; + sp8[1] -= sp10[1]; + Hu3DCameraScissorSet(var_r31->unk_3C, sp10[0], sp10[1], sp8[0], sp8[1]); + var_r29 = var_r31->unk_38; + CenterM[var_r29].x = var_r31->unk_1C.x; + CenterM[var_r29].y = var_r31->unk_1C.y; + CenterM[var_r29].z = var_r31->unk_1C.z; + CRotM[var_r29].x = var_r31->unk_28.x; + CRotM[var_r29].y = var_r31->unk_28.y; + CRotM[var_r29].z = var_r31->unk_28.z; + CZoomM[var_r29] = var_r31->unk_34; + } + } + } + if (arg0->work[1] == 4) { + espDispOn(lbl_1_bss_10[0]); + espDispOn(lbl_1_bss_10[1]); + return; + } + espDispOff(lbl_1_bss_10[0]); + espDispOff(lbl_1_bss_10[1]); +} + +GXColor lbl_1_data_208 = { 0x00, 0x00, 0x00, 0x00 }; + +void fn_1_3D78(ModelData *arg0, Mtx arg1) +{ + Mtx spC; + + MTXIdentity(spC); + GXLoadPosMtxImm(spC, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, lbl_1_data_208); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-45000.0f, 30000.0f, -59900.0f); + GXPosition3f32(45000.0f, 30000.0f, -59900.0f); + GXPosition3f32(45000.0f, -30000.0f, -59900.0f); + GXPosition3f32(-45000.0f, -30000.0f, -59900.0f); +} + +void fn_1_3FE8(u32 arg0) +{ + lbl_1_bss_68->work[1] = arg0; +} + +u32 fn_1_3FFC(void) +{ + return lbl_1_bss_68->work[1]; +} + +M443DllCameraStruct *fn_1_4010(s32 arg0) +{ + M443DllCameraStruct *var_r31; + s32 var_r30; + M443DllCameraStruct *var_r29; + + var_r29 = lbl_1_bss_68->data; + for (var_r31 = var_r29, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if (var_r31->unk_0C & arg0) { + break; + } + } + if (var_r30 >= 5) { + OSReport("M443:Camera Flag Error!!\n"); + return NULL; + } + return var_r31; +} + +M443DllCameraStruct *fn_1_40AC(s32 arg0) +{ + M443DllCameraStruct *var_r31; + s32 var_r30; + M443DllCameraStruct *var_r29; + + var_r29 = lbl_1_bss_68->data; + for (var_r31 = &var_r29[5], var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if (var_r31->unk_0C & arg0) { + break; + } + } + if (var_r30 >= 5) { + OSReport("M443:Camera Flag Error!!\n"); + return NULL; + } + return var_r31; +} + +// Get camera +M443DllCameraStruct *fn_1_4148(u32 arg0) +{ + M443DllCameraStruct *var_r31 = lbl_1_bss_68->data; + if (arg0 >= 5) { + OSReport("M443:Camera No. Error!!\n"); + return NULL; + } + return &var_r31[arg0]; +} + +M443DllCameraStruct *fn_1_41B0(u32 arg0) +{ + M443DllCameraStruct *var_r31 = lbl_1_bss_68->data; + if (arg0 >= 5) { + OSReport("M443:Camera No. Error!!\n"); + return NULL; + } + return &var_r31[arg0 + 5]; +} + +void fn_1_421C(s32 arg0, s32 arg1) +{ + M443DllCameraStruct *var_r31; + s32 var_r30; + M443DllCameraStruct *var_r28; + M443DllCameraStruct *var_r27; + + s32 var_r29 = 0; + if (arg0 >= 0) { + var_r27 = lbl_1_bss_68->data; + var_r28 = &var_r27[5]; + for (var_r31 = var_r28, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if (var_r31->unk_0C & arg1) { + var_r29 |= var_r31->unk_3C; + } + } + Hu3DModelCameraSet(arg0, var_r29); + } +} + +s32 fn_1_42B4(void) +{ + return ((M443DllWork *)lbl_1_bss_70->data)->unk_00; +} + +u32 fn_1_42CC(void) +{ + return ((M443DllWork *)lbl_1_bss_70->data)->unk_0C; +} + +u32 fn_1_42E4(void) +{ + return ((M443DllWork *)lbl_1_bss_70->data)->unk_14; +} + +u32 fn_1_42FC(void) +{ + return ((M443DllWork *)lbl_1_bss_70->data)->unk_28; +} + +void fn_1_4314(s32 arg0, float arg8) +{ + M443DllWork *var_r31 = lbl_1_bss_70->data; + + if (fn_1_42E4() == 2) { + var_r31->unk_44[arg0] = arg8; + } +} + +s32 fn_1_4368(s32 arg0) +{ + M443DllWork *var_r31 = lbl_1_bss_70->data; + + if (var_r31->unk_54 == 1) { + return var_r31->unk_34[arg0]; + } + return -1; +} + +void fn_1_43AC(s32 arg0) +{ + ((M443DllWork *)lbl_1_bss_70->data)->unk_58 |= (1 << ((arg0 & 7) * 4)); +} + +void fn_1_43DC(s32 arg0) +{ + ((M443DllWork *)lbl_1_bss_70->data)->unk_5C |= (1 << ((arg0 & 3) * 4)); +} + +s32 fn_1_440C(void) +{ + return MGSeqStatGet(lbl_1_bss_58) == 0; +} + +void fn_1_4444(Vec *arg0, Vec *arg1) +{ + Vec sp10; + float var_f30; + + VECSubtract(arg1, arg0, &sp10); + Center = *arg1; + var_f30 = (sp10.x * sp10.x) + (sp10.z * sp10.z); + CRot.x = atan2d(sp10.y, sqrtf(var_f30)); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp10); +} + +void fn_1_464C(float arg8, float arg9, float argA, float argB, float argC, float argD) +{ + Vec sp3C; + Vec sp30; + Vec sp24; + float var_f30; + + sp3C.x = arg8; + sp3C.y = arg9; + sp3C.z = argA; + sp30.x = argB; + sp30.y = argC; + sp30.z = argD; + VECSubtract(&sp30, &sp3C, &sp24); + Center = sp30; + var_f30 = (sp24.x * sp24.x) + (sp24.z * sp24.z); + CRot.x = atan2d(sp24.y, sqrtf(var_f30)); + CRot.y = atan2d(-sp24.x, -sp24.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp24); +} + +float fn_1_488C(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_49A8(float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} diff --git a/src/REL/m443Dll/map.c b/src/REL/m443Dll/map.c new file mode 100644 index 00000000..d79414dc --- /dev/null +++ b/src/REL/m443Dll/map.c @@ -0,0 +1,183 @@ +#include "datadir_enum.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "REL/m443Dll.h" + +void fn_1_4AB4(omObjData *object); +void fn_1_4D14(omObjData *object); + +s32 lbl_1_data_240[5] = { 1, 2, 4, 8, 0x10 }; + +void fn_1_4A5C(Process *process) +{ + omObjData *var_r31 = omAddObjEx(process, 0x1E, 0xD, 0, -1, fn_1_4AB4); + var_r31->work[0] = 0; +} + +void fn_1_4AB0(void) { } + +void fn_1_4AB4(omObjData *object) +{ + s32 var_r30; + + omSetTra(object, 0.0f, 0.0f, 0.0f); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 0)); + Hu3DModelLayerSet(object->model[0], 2); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 2)); + Hu3DModelLayerSet(object->model[2], 2); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 4)); + Hu3DModelLayerSet(object->model[3], 2); + Hu3DMotionSpeedSet(object->model[3], 0.0f); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 3)); + Hu3DModelLayerSet(object->model[4], 2); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + object->model[var_r30 + 5] = Hu3DModelLink(object->model[4]); + Hu3DModelLayerSet(object->model[var_r30 + 5], 2); + Hu3DModelScaleSet(object->model[var_r30 + 5], 0.93f, 0.93f, 0.93f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + object->model[var_r30 + 9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 1)); + Hu3DModelLayerSet(object->model[var_r30 + 9], 2); + Hu3DMotionSpeedSet(object->model[var_r30 + 9], 0.0f); + } + object->work[0] = 0; + object->work[1] = 0; + object->work[2] = 0; + object->work[3] = 0; + object->func = fn_1_4D14; +} + +typedef struct M443DllMapUnkStruct { + Vec unk_00[4]; + float unk_30; +} M443DllMapUnkStruct; /* size = 0x34 */ + +void fn_1_4D14(omObjData *object) +{ + float var_f31; + float var_f30; + + M443DllCameraStruct *var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = 1; + { + Mtx sp5C; + Vec sp20; + Vec sp14; + Vec sp8 = { 0.0f, 0.0f, 0.0f }; + Vec sp2C[4] = { + { -50.0f, 0.0f, -150.0f }, + { 50.0f, 0.0f, -150.0f }, + { -50.0f, 0.0f, -150.0f }, + { 50.0f, 0.0f, -150.0f }, + }; + + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r30 = fn_1_40AC(lbl_1_data_240[var_r29]); + sp20.x = var_r30->unk_1C.x + (var_r30->unk_34 * (sind(var_r30->unk_28.y) * cosd(var_r30->unk_28.x))); + sp20.y = var_r30->unk_1C.y + (var_r30->unk_34 * -sind(var_r30->unk_28.x)); + sp20.z = var_r30->unk_1C.z + (var_r30->unk_34 * (cosd(var_r30->unk_28.y) * cosd(var_r30->unk_28.x))); + Hu3DModelPosSetV(object->model[var_r29 + 4], &sp20); + fn_1_421C(object->model[var_r29 + 4], lbl_1_data_240[var_r29]); + } + object->work[1] += 1; + var_f31 = 150.0f; + switch (object->work[0]) { + case 0: + if (fn_1_3FFC() == 4) { + object->work[0] += 1; + object->work[1] = 0; + } + break; + case 1: + var_f30 = 1.0f - (0.016666668f * object->work[1]); + if (var_f30 <= 0.0f) { + object->work[0] += 1; + object->work[1] = 0; + var_f30 = 0.0f; + } + var_f31 = var_f31 * var_f30; + break; + case 2: + var_f31 = 0.0f; + if (fn_1_42E4() < 2) { + object->work[1] = 0; + } + if (object->work[1] >= 60.0f) { + object->work[0] += 1; + object->work[1] = 0; + } + break; + case 3: + var_f30 = 0.016666668f * object->work[1]; + if (var_f30 > 1.0f) { + object->work[0] += 1; + object->work[1] = 0; + var_r28 = 0; + } + var_f31 = var_f31 * var_f30; + break; + default: + var_r28 = 0; + break; + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r30 = fn_1_40AC(lbl_1_data_240[var_r29 + 1]); + mtxRot(sp5C, var_r30->unk_28.x, var_r30->unk_28.y, 0.0f); + sp8.z = var_r30->unk_34; + MTXMultVec(sp5C, &sp8, &sp14); + VECAdd(&var_r30->unk_1C, &sp14, &sp20); + sp2C[var_r29].y += var_f31; + MTXMultVec(sp5C, &sp2C[var_r29], &sp14); + VECAdd(&sp20, &sp14, &sp20); + Hu3DModelPosSetV(object->model[var_r29 + 9], &sp20); + Hu3DModelRotSet(object->model[var_r29 + 9], var_r30->unk_28.x, var_r30->unk_28.y, 0.0f); + Hu3DModelScaleSet(object->model[var_r29 + 9], 0.15f, 0.15f, 0.15f); + fn_1_421C(object->model[var_r29 + 9], lbl_1_data_240[var_r29 + 1]); + if (fn_1_42E4() >= 1) { + if (object->work[2] == 0) { + object->work[2] = 1; + object->work[3] = 0; + } + Hu3DMotionSpeedSet(object->model[var_r29 + 9], 0.95f); + if (var_r28 == 0) { + Hu3DModelAttrSet(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + } + } + } + if (object->work[2] != 0) { + object->work[3] += 1; + if (object->work[3] >= 60.0f) { + switch (object->work[2]) { + case 1: + case 2: + HuAudFXPlay(0x725); + break; + case 3: + HuAudFXPlay(0x726); + break; + } + object->work[2] += 1; + object->work[3] = 0; + } + } + if (fn_1_42E4() == 2) { + Hu3DMotionSpeedSet(object->model[3], 1.0f); + } + else if (fn_1_42E4() == 5) { + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + } + if (fn_1_42E4() == 5) { + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelShadowMapSet(object->model[2]); + } + } +} diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c new file mode 100644 index 00000000..9ed45b12 --- /dev/null +++ b/src/REL/m443Dll/player.c @@ -0,0 +1,1226 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "string.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +#include "REL/m443Dll.h" + +typedef struct M443DllUnkStruct { + s32 unk0; + s32 unk4; + s32 unk8; + Vec2f unkC; + s16 unk14[11]; +} M443DllUnkStruct; + +typedef struct M443DllWorkStruct { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + u32 unk10; + s32 unk14; + f32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + char unk28[0xC]; + u16 unk34; + s32 unk38; + char unk3C[0x4]; + s16 unk40; + f32 unk44; + f32 unk48; + f32 unk4C; + f32 unk50; + f32 unk54; + f32 unk58; + f32 unk5C; + s32 unk60; + f32 unk64; + u32 unk68; + f32 unk6C; + f32 unk70; + u32 unk74; + f32 unk78; + f32 unk7C; + u32 unk80; + u32 unk84; + f32 unk88; + char unk8C[0x4]; + f32 unk90; + f32 unk94; + f32 unk98; + f32 unk9C; + f32 unkA0; + f32 unkA4; + s32 unkA8; + s32 unkAC; + s32 unkB0; + s32 unkB4; + s32 unkB8; + f32 unkBC; + f32 unkC0; + Vec unkC4; + Vec unkD0; + Vec unkDC; + Vec unkE8; + char unkF4[0xC]; + M443DllCameraStruct *unk100; + M443DllCameraStruct *unk104; + union { + M443DllUnkStruct unk108s; + struct { + s32 unk108; + s32 unk10C; + }; + }; +} M443DllWorkStruct; /* size = 0x134 */ + +typedef struct M443DllStruct8 { + u16 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + u32 unk10; +} M443DllStruct8; // copy of UnkM417Struct8 + +void fn_1_5680(omObjData *object); +void fn_1_5BD4(omObjData *object); +void fn_1_6458(omObjData *object); +void fn_1_6674(omObjData *object); +void fn_1_6750(omObjData *object); +void fn_1_69B4(omObjData *object); +void fn_1_6B90(omObjData *object); +void fn_1_6DA8(omObjData *object); +void fn_1_7130(omObjData *object); +void fn_1_7340(omObjData *object); +void fn_1_8138(omObjData *, u32); +s32 fn_1_82C4(omObjData *object); +void fn_1_8508(omObjData *); +void fn_1_8680(omObjData *object); +f32 fn_1_8AC8(u32, f32); +f32 fn_1_8C68(f32); +f32 fn_1_8C8C(s32, f32); +f32 fn_1_8D00(u32, f32); +f32 fn_1_8D74(f32); +void fn_1_8E34(s32); +void fn_1_8FFC(u32, Vec *, f32, f32); +void fn_1_95A4(u32); + +omObjData *lbl_1_bss_90[4]; +s32 lbl_1_bss_78[6]; + +char *lbl_1_data_264[0x8] = { "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r" }; +u32 lbl_1_data_284[8][2] = { + { 0x4A0005, 0x4A0006 }, + { 0x4A0007, 0x4A0008 }, + { 0x4A0009, 0x4A000A }, + { 0x4A000B, 0x4A000C }, + { 0x4A000D, 0x4A000E }, + { 0x4A000F, 0x4A0010 }, + { 0x4A0011, 0x4A0012 }, + { 0x4A0013, 0x4A0014 }, +}; +u32 lbl_1_data_2C4[4] = { 0, 0x4A0020, 0x17, 0x72 }; + +M443DllStruct8 lbl_1_data_2D4[4] = { { 0x0, 0.2f, 0.0f, -1.0f, 0x40000001 }, { 0x1, 0.2f, 0.0f, -1.0f, 0x40000001 }, { 0x2, 0.2f, 0.0f, -1.0f, 0x0 }, + { 0x3, 0.2f, 0.0f, -1.0f, 0x0 } }; + +s32 lbl_1_data_324[4] = { + 0x727, + 0x728, + 0x729, + 0x72A, +}; +s32 lbl_1_data_334[4] = { + 0x72B, + 0x72C, + 0x72D, + 0x72E, +}; +s32 lbl_1_data_344[4] = { + 0x72F, + 0x730, + 0x731, + 0x732, +}; +s32 lbl_1_data_354[4] = { + 0x736, + 0x737, + 0x738, + 0x739, +}; +Vec lbl_1_data_364[4] = { { 0.0f, 180.0f, 500.0f }, { -150.0f, 110.0f, 500.0f }, { 170.0f, 80.0f, 500.0f }, { 350.0f, 0.0f, 500.0f } }; +Vec lbl_1_data_394[4] = { { -225.0f, 0.0f, 1000.0f }, { -75.0f, 0.0f, 1000.0f }, { 75.0f, 0.0f, 1000.0f }, { 225.0f, 0.0f, 1000.0f } }; +Vec lbl_1_data_3C4[4] = { { 250.0f, 0.0f, -1000.0f }, { -350.0f, 0.0f, -1700.0f }, { 450.0f, 0.0f, -2200.0f }, { 0.0f, 0.0f, -3000.0f } }; + +void fn_1_5444(Process *arg0) +{ + u32 sp18[4]; + u32 sp8[4]; + omObjData *var_r28; + u32 var_r29; + s16 var_r30; + s16 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp18[var_r31] = GWPlayerCfg[var_r31].group; + sp8[var_r31] = var_r31; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) { + if (sp18[var_r31] > sp18[var_r30]) { + var_r29 = sp18[var_r31]; + sp18[var_r31] = sp18[var_r30]; + sp18[var_r30] = var_r29; + var_r29 = sp8[var_r31]; + sp8[var_r31] = sp8[var_r30]; + sp8[var_r30] = var_r29; + } + } + } + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_78[sp8[var_r31]] = (s16)var_r31; + } + omMakeGroupEx(arg0, 0, 4); + omGetGroupMemberListEx(arg0, 0); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = lbl_1_bss_90[var_r31] = omAddObjEx(arg0, 0x28, 5, 4, 0, fn_1_5680); + var_r28->work[0] = var_r31; + } +} + +void fn_1_565C(void) +{ + CharModelKill(-1); +} + +void fn_1_5680(omObjData *object) +{ + f32 spC[4] = { 0.25f, 0.5f, 0.75f, 1.0f }; + s32 sp8; + f32 temp_f0; + s32 temp_r27; + s32 temp_r3; + s32 var_r29; + u32 temp_r25; + M443DllWorkStruct *temp_r31; + HsfanimStruct01 *var_r28; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x134, MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + memset(temp_r31, 0, 0x134); + object->stat |= 0x100; + temp_r25 = object->work[0]; + temp_r27 = GWPlayerCfg[temp_r25].character; + temp_r31->unk0 = temp_r27; + sp8 = temp_r31->unk4 = 0; + temp_r31->unkC = lbl_1_bss_78[object->work[0]]; + temp_r31->unk5C = spC[GWPlayerCfg[temp_r25].diff & 3]; + temp_r31->unk24 = GWPlayerCfg[object->work[0]].iscom; + object->model[0] = CharModelCreate(temp_r27, 8); + Hu3DModelLayerSet(object->model[0], 4); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_284[temp_r27][0]); + Hu3DModelLayerSet(object->model[1], 4); + Hu3DMotionSpeedSet(object->model[1], 0.0f); + object->model[2] = Hu3DModelCreateFile(lbl_1_data_284[temp_r27][1]); + Hu3DModelLayerSet(object->model[2], 4); + Hu3DMotionSpeedSet(object->model[2], 0.0f); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_data_2C4[var_r29] < 0x10000) { + object->motion[var_r29] = CharModelMotionCreate(temp_r27, lbl_1_data_2C4[var_r29]); + } + else { + object->motion[var_r29] + = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r27 + lbl_1_data_2C4[var_r29], 0x10000000, HEAP_DATA)); + } + } + CharModelMotionDataClose(temp_r27); + temp_r3 = Hu3DParticleCreate(HuSprAnimReadFile(0x4A001D), 0xC8); + object->model[3] = temp_r3; + Hu3DModelLayerSet(temp_r3, 4); + var_r28 = ((ParticleData *)Hu3DData[temp_r3].unk_120)->unk_48; + + for (var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r28++) { + var_r28->unk2C = 0.0f; + var_r28->unk40.a = 0; + var_r28->unk00 = 0; + } + + object->trans.x = temp_r31->unkC4.x = temp_r31->unkDC.x = (100.0f * (4.0f * object->work[0])) - 600.0f; + object->trans.y = temp_r31->unkC4.y = temp_r31->unkDC.y = 0.0f; + object->trans.z = temp_r31->unkC4.z = temp_r31->unkDC.z = 0.0f; + + temp_r31->unkD0.x = temp_r31->unkD0.y = temp_r31->unkD0.z = 0.0f; + temp_r31->unkE8.x = temp_r31->unkE8.y = temp_r31->unkE8.z = 0.0f; + temp_r31->unk48 = temp_r31->unk4C = 0.0f; + temp_r31->unk50 = 0.0f; + temp_r31->unk54 = 0.02f; + temp_r31->unk58 = 180.0f; + temp_r31->unkC0 = 50.0f; + temp_r31->unkBC = 350.0f; + temp_r31->unk8 = -1; + temp_r31->unk1C = 1; + temp_r31->unk20 = 0; + temp_r31->unk9C = 1.0f; + temp_r31->unk98 = 0.0f; + temp_r31->unkA0 = 0.0f; + temp_r31->unkA4 = 0.0f; + temp_r31->unk88 = 1000.0f; + temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88); + temp_r31->unkA8 = temp_r31->unkAC = -1; + temp_r31->unkB0 = temp_r31->unkB4 = temp_r31->unkB8 = -1; + temp_r31->unkB4 = HuAudFXPlay(lbl_1_data_334[object->work[0]]); + temp_r31->unk68 = -1; + temp_r31->unk60 = 0; + temp_r31->unk100 = fn_1_4148(object->work[0] + 1); + temp_r31->unk104 = fn_1_41B0(object->work[0] + 1); + temp_r31->unk100->unk_00 = 0; + fn_1_8508(object); + temp_r31->unk34 = 0; + object->func = fn_1_5BD4; +} + +void fn_1_5BD4(omObjData *object) +{ + Vec sp8; + f32 var_f29; + f32 var_f30; + f32 var_f31; + M443DllWorkStruct *temp_r31; + + temp_r31 = object->data; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0.0f; + if (temp_r31->unk108 != 0) { + if (temp_r31->unk24 != 0) { + fn_1_6DA8(object); + } + else { + temp_r31->unk14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + temp_r31->unk10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f29 = HuPadTrigR[GWPlayerCfg[object->work[0]].pad_idx]; + if (var_f29 > 140.0f) { + var_f29 = 140.0f; + } + temp_r31->unk18 = (1.0f / 140.0f) * var_f29; + } + } + switch (temp_r31->unk34) { + case 0: + temp_r31->unk100->unk_1C = temp_r31->unkDC; + temp_r31->unk100->unk_54.y = 150.0f; + temp_r31->unk100->unk_1C.y += temp_r31->unk100->unk_54.y; + temp_r31->unk100->unk_28.x = -30.0f; + temp_r31->unk100->unk_28.y = 90.0f; + temp_r31->unk100->unk_34 = 500.0f; + temp_r31->unk100->unk_6C = -20.0f - frandmod(10); + temp_r31->unk100->unk_70 = 160.0f + frandmod(0x28); + temp_r31->unk100->unk_78 = temp_r31->unk100->unk_44; + temp_r31->unk100->unk_7C = temp_r31->unk100->unk_48; + temp_r31->unk100->unk_80 = temp_r31->unk100->unk_40; + if ((temp_r31->unk40 < 120.0f) && ((temp_r31->unk40 % 60) > 10)) { + temp_r31->unk18 = 1.0f; + } + if (fn_1_3FFC() == 2) { + temp_r31->unk34++; + temp_r31->unk40 = 0; + temp_r31->unkB0 = HuAudFXPlay(lbl_1_data_324[object->work[0]]); + } + break; + case 1: + temp_r31->unk100->unk_00 = 1; + var_f31 = (5.0f / 600.0f) * temp_r31->unk40; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f30 = 2.0f * (var_f31 - 0.5f); + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + var_f30 = var_f30 * var_f30; + sp8.x = 320.0 + 160.0 * (var_f31 * cosd(450.0f * var_f31 + 90.0f * object->work[0])); + sp8.y = 240.0 + 120.0 * (var_f31 * sind(450.0f * var_f31 + 90.0f * object->work[0])); + temp_r31->unk100->unk_44 = sp8.x + (var_f30 * (temp_r31->unk100->unk_78 - sp8.x)); + temp_r31->unk100->unk_48 = sp8.y + (var_f30 * (temp_r31->unk100->unk_7C - sp8.y)); + temp_r31->unk100->unk_40 = 0.01f + ((temp_r31->unk100->unk_80 - 0.01f) * var_f31); + temp_r31->unk100->unk_28.y = 90.0f + ((temp_r31->unk100->unk_70 - 90.0f) * var_f31); + temp_r31->unk100->unk_34 = 500.0f + (-200.0f * var_f30); + if (var_f31 >= 1.0f) { + temp_r31->unk108 = 1; + if (temp_r31->unk40 >= 150.0f) { + fn_1_3FE8(4); + temp_r31->unk34++; + temp_r31->unk40 = 0; + } + } + break; + case 2: + var_f31 = (5.0f / 600.0f) * temp_r31->unk40; + if (var_f31 > 0.2f) { + var_f31 = 0.2f; + } + temp_r31->unk100->unk_28.x = fn_1_488C(temp_r31->unk100->unk_28.x, -12.0f, var_f31); + temp_r31->unk100->unk_28.y = fn_1_488C(temp_r31->unk100->unk_28.y, 0.0f, var_f31); + temp_r31->unk100->unk_34 += ((1000.0f - temp_r31->unk100->unk_34) * (0.5f * var_f31)); + break; + } + fn_1_7340(object); + VECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + + if (fn_1_42CC() == 2) { + temp_r31->unk100->unk_1C = temp_r31->unkDC; + temp_r31->unk100->unk_1C.y += 150.0f; + temp_r31->unk100->unk_54.y = 150.0f; + temp_r31->unk100->unk_28.x = -12.0f; + temp_r31->unk100->unk_28.y = 0.0f; + temp_r31->unk100->unk_34 = 1000.0f; + temp_r31->unk34 = 0; + object->func = &fn_1_6458; + } +} + +void fn_1_6458(omObjData *object) +{ + f32 var_f31; + s32 var_r29; + M443DllWorkStruct *temp_r31; + void *temp_r4; + + temp_r31 = object->data; + var_r29 = 0; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0.0f; + if (temp_r31->unk24 != 0) { + fn_1_6DA8(object); + } + else { + temp_r31->unk14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + temp_r31->unk10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f31 = HuPadTrigR[GWPlayerCfg[object->work[0]].pad_idx]; + if (var_f31 > 140.0f) { + var_f31 = 140.0f; + } + temp_r31->unk18 = (1.0f / 140.0f) * var_f31; + } + switch (temp_r31->unk34) { + case 0: + fn_1_8138(object, 1); + var_r29 = 1; + } + fn_1_7340(object); + VECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + temp_r31->unk100->unk_1C = temp_r31->unkDC; + VECAdd(&temp_r31->unk100->unk_1C, &temp_r31->unk100->unk_54, &temp_r31->unk100->unk_1C); + if ((fn_1_42E4() == 3) && (var_r29 != 0)) { + fn_1_43AC(object->work[0]); + temp_r31->unk108 = 0; + temp_r31->unk34 = 0; + object->func = fn_1_6674; + } +} + +void fn_1_6674(omObjData *object) +{ + M443DllWorkStruct *temp_r31; + void *temp_r4; + + temp_r31 = object->data; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0.0f; + fn_1_7340(object); + VECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + temp_r31->unk100->unk_1C = temp_r31->unkDC; + VECAdd(&temp_r31->unk100->unk_1C, &temp_r31->unk100->unk_54, &temp_r31->unk100->unk_1C); + if (fn_1_42E4() == 5) { + temp_r31->unk1C = 0; + temp_r31->unk34 = 0; + object->func = fn_1_6750; + } +} + +void fn_1_6750(omObjData *object) +{ + M443DllWorkStruct *temp_r31; + + temp_r31 = object->data; + VECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + switch (temp_r31->unk34) { + case 0: + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + fn_1_95A4(object->work[0]); + Hu3DModelShadowSet(object->model[0]); + temp_r31->unk8 = -1; + fn_1_8138(object, 0); + if (fn_1_4368(object->work[0]) >= 0) { + temp_r31->unkC4 = lbl_1_data_364[fn_1_4368(object->work[0])]; + temp_r31->unkDC = lbl_1_data_3C4[fn_1_4368(object->work[0])]; + temp_r31->unk58 = 30.0f; + } + else { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + temp_r31->unkC4 = lbl_1_data_394[object->work[0]]; + } + temp_r31->unk34++; + break; + case 1: + temp_r31->unk4C = 0.0f; + temp_r31->unk50 = 0.15f; + temp_r31->unk54 = 0.0f; + temp_r31->unkD0.x = temp_r31->unkD0.y = temp_r31->unkD0.z = 0.0f; + fn_1_43AC(object->work[0]); + temp_r31->unk34++; + break; + case 2: + if (fn_1_42FC() == 1) { + if (fn_1_4368(object->work[0]) == 0) { + fn_1_8138(object, 2); + } + else { + fn_1_8138(object, 3); + } + temp_r31->unk34++; + } + break; + case 3: + if (fn_1_82C4(object) != 0) { + fn_1_43DC(object->work[0]); + temp_r31->unk34++; + } + break; + } +} + +void fn_1_69B4(omObjData *object) +{ + M443DllWorkStruct *temp_r31; + + temp_r31 = object->data; + temp_r31->unk40++; + temp_r31->unk38++; + object->trans.x = temp_r31->unkC4.x; + object->trans.y = temp_r31->unkC4.y; + object->trans.z = temp_r31->unkC4.z; + temp_r31->unk50 += temp_r31->unk54; + if (temp_r31->unk50 > 0.45f) { + temp_r31->unk50 = 0.45f; + } + temp_r31->unk48 = fn_1_488C(temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + object->rot.y = temp_r31->unk48; + if (temp_r31->unk1C != 0) { + if (temp_r31->unk20 == 0) { + Hu3DModelHookSet(object->model[1], "hook", object->model[0]); + } + + temp_r31->unkDC.z = temp_r31->unkC4.z = -(temp_r31->unk78 - temp_r31->unkBC); + fn_1_8138(object, 1); + } + else { + if (temp_r31->unk20 != 0) { + Hu3DModelHookReset(object->model[1]); + } + Hu3DModelPosSetV(object->model[0], &temp_r31->unkC4); + Hu3DModelRotSet(object->model[0], 0.0f, temp_r31->unk48, 0.0f); + } + temp_r31->unk20 = temp_r31->unk1C; + Hu3DModelPosSetV(object->model[1], &temp_r31->unkDC); + Hu3DModelRotSet(object->model[1], 0.0f, temp_r31->unk58, 0.0f); + Hu3DModelPosSetV(object->model[2], &temp_r31->unkDC); + Hu3DModelRotSet(object->model[2], 0.0f, temp_r31->unk58, 0.0f); +} + +void fn_1_6B90(omObjData *object) +{ + M443DllWorkStruct *temp_r29; + M443DllWorkStruct *temp_r27 = object->data; + s32 sp28[4][4] = { + { 0, 1, 2, 3 }, + { 1, 0, 1, 2 }, + { 2, 1, 0, 1 }, + { 3, 2, 1, 0 }, + }; + f32 sp18[4] = { 0.0f, -700.0f, 600.0f, 1200.0f }; + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8[4] = { 2, 4, 8, 16 }; + f32 var_f31; + s32 var_r28; + u32 var_r30; + + var_r28 = sp8[object->work[0]] | 1; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 != object->work[0]) { + temp_r29 = lbl_1_bss_90[var_r30]->data; + var_f31 = temp_r29->unk78; + if (temp_r29->unk74 != temp_r27->unk74) { + var_f31 += 1.6666667f * temp_r29->unk7C; + } + var_f31 = temp_r27->unk78 - var_f31; + if (var_f31 > sp18[sp28[object->work[0]][var_r30]]) { + var_r28 |= sp8[var_r30]; + } + } + } + fn_1_421C(object->model[0], var_r28); + fn_1_421C(object->model[1], var_r28); + fn_1_421C(object->model[2], var_r28); + fn_1_421C(object->model[3], var_r28); +} + +void fn_1_6DA8(omObjData *object) +{ + f32 var_f31; + M443DllWorkStruct *temp_r31; + + temp_r31 = object->data; + switch (temp_r31->unk60) { + case 0: + var_f31 = 1.25f - temp_r31->unk5C; + var_f31 *= 0.6f + (0.00040000002f * frandmod(0x3E8)); + if (frandmod(0x3E8) < 0x1F4) { + var_f31 *= -1.0f; + } + temp_r31->unk64 = (3000.0f + (2000.0f * var_f31)); + temp_r31->unk60++; + /* fallthrough */ + case 1: + if (temp_r31->unk88 < temp_r31->unk64) { + temp_r31->unk18 = 1.0f; + } + if (temp_r31->unkA0 >= 1.0f) { + temp_r31->unk60 = (s32)(temp_r31->unk60 + 1); + } + break; + case 2: + temp_r31->unk18 = 1.0f; + if (temp_r31->unk80 != temp_r31->unk68) { + temp_r31->unk6C = temp_r31->unk70 = 0.0f; + if (frandmod(0x3E8) < 0x1F4) { + var_f31 = 1.2f - temp_r31->unk5C; + var_f31 *= (0.5f + 0.0005f * frandmod(0x3E8)); + temp_r31->unk6C = 8000.0f - 1500.0f * var_f31; + } + else { + var_f31 = 1.2f - temp_r31->unk5C; + var_f31 *= (0.5f + 0.0005f * frandmod(0x3E8)); + temp_r31->unk70 = 0.016666668f + var_f31; + } + } + temp_r31->unk68 = temp_r31->unk80; + if (temp_r31->unk6C > 0.0f) { + if (temp_r31->unk88 > temp_r31->unk6C) { + temp_r31->unk10 = (s32)(temp_r31->unk10 | 0x100); + temp_r31->unk6C = 0.0f; + break; + } + } + else if (temp_r31->unk70 > 0.0f) { + if (temp_r31->unk88 >= 8000.0f) { + temp_r31->unk70 = (temp_r31->unk70 - 0.016666668f); + if (temp_r31->unk70 <= 0.0f) { + temp_r31->unk10 = (s32)(temp_r31->unk10 | 0x100); + temp_r31->unk70 = 0.0f; + } + } + } + break; + } +} + +void fn_1_7130(omObjData *object) +{ + Vec sp8; + f32 var_f31; + s32 var_r27; + s32 var_r29; + s32 var_r28; + M443DllWorkStruct *temp_r30; + M443DllWorkStruct *temp_r31; + + for (var_r27 = 0; var_r27 < 2; var_r27++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + temp_r31 = lbl_1_bss_90[var_r29]->data; + + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (var_r29 != var_r28) { + temp_r30 = lbl_1_bss_90[var_r28]->data; + VECSubtract(&temp_r31->unkC4, &temp_r30->unkC4, &sp8); + sp8.y = 0.0f; + var_f31 = VECMag(&sp8); + if (var_f31 < (temp_r31->unkC0 + temp_r30->unkC0)) { + if (var_f31 > 0.0f) { + var_f31 = 0.5f * ((temp_r31->unkC0 + temp_r30->unkC0) - var_f31); + } + else { + var_f31 = 0.5f * (temp_r31->unkC0 + temp_r30->unkC0); + sp8.x = (frandmod(0x3E8) - 0x1F4); + sp8.z = (frandmod(0x3E8) - 0x1F4); + } + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, var_f31); + VECAdd(&temp_r31->unkC4, &sp8, &temp_r31->unkC4); + VECSubtract(&temp_r30->unkC4, &sp8, &temp_r30->unkC4); + } + } + } + if (temp_r31->unkC4.y < 0.0f) { + temp_r31->unkC4.y = 0.0f; + } + } + } +} + +void fn_1_7340(omObjData *object) +{ + M443DllWorkStruct *temp_r31 = object->data; + HsfObject *var_r29; + f32 sp28[8] = { 0.0f, 40.0f, 0.0f, 0.0f, -16.0f, 40.0f, -16.0f, 0.0f }; + f32 var_f31; + f32 var_f29; + u32 temp_r24; + + temp_r24 = temp_r31->unk80; + if (temp_r31->unk88 > 3300.0f) { + if (fn_1_42E4() == 2) { + temp_r31->unk10C = 0; + if (temp_r31->unk84 == 0) { + if ((temp_r31->unk10 & 0x100) != 0) { + if (temp_r31->unk80 < 3) { + temp_r31->unk80++; + temp_r31->unk84 = 30; + } + } + else { + if (temp_r31->unk88 >= 8000.0f) { + temp_r31->unk10C = 1; + } + } + } + else { + temp_r31->unk84--; + } + } + } + else if ((temp_r31->unk88 < 1500.0f) && (temp_r31->unk80 != 0)) { + temp_r31->unk80--; + temp_r31->unk84 = 30; + } + if (temp_r31->unk80 != temp_r24) { + temp_r31->unk88 = fn_1_8D00(temp_r31->unk80, temp_r31->unk90); + omVibrate(object->work[0], 0xC, 4, 2); + } + var_f31 = (1.5f * temp_r31->unk18) - 0.5f; + if (var_f31 < -0.4f) { + var_f31 = -1.0f; + } + var_f29 = 0.75f; + if ((var_f31 > -0.5f) && (temp_r31->unkA0 < 1.0f)) { + var_f29 += 0.25f * (1.0f - temp_r31->unkA0); + } + var_f31 = var_f31 * fn_1_8AC8(temp_r31->unk80, temp_r31->unk88); + var_f31 -= temp_r31->unkA0 * fn_1_8D74(fn_1_8C8C(temp_r31->unk80, temp_r31->unk88)); + var_f31 = var_f29 * fn_1_8C68(var_f31); + temp_r31->unk90 += 0.016666668f * var_f31; + temp_r31->unk7C += temp_r31->unkA0 * (temp_r31->unk90 - temp_r31->unk7C); + var_f31 = temp_r31->unk90 + temp_r31->unkA0 * (temp_r31->unk7C - temp_r31->unk90); + temp_r31->unk88 = fn_1_8D00(temp_r31->unk80, var_f31); + if (fn_1_42E4() <= 2) { + if (fn_1_42E4() == 2) { + if (temp_r31->unk18 <= 0.0f) { + temp_r31->unk90 *= 0.98f; + } + } + if ((temp_r31->unk88 > 8000.0f) && ((temp_r31->unk40 & 0xF) == 0)) { + omVibrate(object->work[0], 0xC, 6, 6); + } + } + if (temp_r31->unk88 > 9500.0f) { + temp_r31->unk88 = 9000.0f; + temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88); + } + else if (temp_r31->unk88 < 1000.0f) { + temp_r31->unk88 = 1000.0f; + temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88); + } + temp_r31->unk94 = (0.31206876f * temp_r31->unk90); + if (temp_r31->unkA0 < 1.0f) { + var_f31 = temp_r31->unk90 - temp_r31->unk7C; + if (var_f31 > 2.0f) { + var_f31 = 1.0f - (0.02f * var_f31); + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_f31 = (1.0f - var_f31 * var_f31); + temp_r31->unkA0 += (1.0f / 3000.0f) * (1.0f - 1.5f * var_f31); + if (temp_r31->unkA0 > 0.9f) { + temp_r31->unkA0 = 1.0f; + } + if (temp_r31->unkA0 < 0.0001f) { + temp_r31->unkA0 = 0.0001f; + } + } + else { + temp_r31->unkA0 = 1.0f; + } + } + temp_r31->unk78 += 1.6666667f * temp_r31->unk7C; + if (fn_1_42E4() < 2) { + temp_r31->unk7C = 0.0f; + temp_r31->unk78 = 0.0f; + temp_r31->unkA0 = 0.0f; + } + if (temp_r31->unk78 >= 40000.0f) { + if (temp_r31->unk7C >= 30.0f) { + Hu3DMotionSpeedSet(object->model[2], 1.0f); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + if (fn_1_42E4() == 2) { + HuAudFXPlay(0x733); + } + } + } + fn_1_8680(object); + temp_r31->unk74 = 1 - temp_r31->unk74; + var_f31 = 22.5f * (temp_r31->unk40 & 0xF); + var_r29 = Hu3DModelObjPtrGet(object->model[2], "ballon"); + var_r29->data.base.rot.z = var_f31; + var_r29 = Hu3DModelObjPtrGet(object->model[1], "r_tire"); + if ((temp_r31->unk7C <= 0.0f) && (temp_r31->unk94 < 1.5f)) { + temp_r31->unk94 = 0.0f; + } + var_r29->data.base.rot.x += 6.0000005f * temp_r31->unk94; + var_r29->data.base.rot.x = fmod(var_r29->data.base.rot.x, 360.0); + var_r29 = Hu3DModelObjPtrGet(object->model[1], "f_tire"); + var_r29->data.base.rot.x += 6.0000005f * (0.003978877f * (100.0f * temp_r31->unk7C)); + var_r29->data.base.rot.x = fmod(var_r29->data.base.rot.x, 360.0); + var_f31 = 0.110999994f * temp_r31->unk94; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + Hu3DMotionTimeSet(object->model[1], 30.0f * var_f31); + fn_1_4314(object->work[0], temp_r31->unk78); + fn_1_6B90(object); + if (temp_r31->unkA0 < 1.0f) { + var_f31 = (320.4422f * temp_r31->unk94) - (100.0f * temp_r31->unk7C); + if (var_f31 > 0.0f) { + var_f31 *= 0.0002f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_8FFC(object->work[0], &temp_r31->unkDC, var_f31, 100.0f * temp_r31->unk7C); + } + } + fn_1_8E34(object->model[3]); + if (temp_r31->unkB4 >= 0) { + HuAudFXPitchSet(temp_r31->unkB4, (8191.0f * (0.0001f * temp_r31->unk88))); + if (fn_1_42E4() >= 5) { + HuAudFXFadeOut(temp_r31->unkB4, 0x3C); + temp_r31->unkB4 = -1; + } + } + if (fn_1_42E4() < 2) { + if (temp_r31->unkA8 < 0) { + temp_r31->unkA8 = HuAudFXPlay(lbl_1_data_344[object->work[0]]); + } + if (temp_r31->unkA8 >= 0) { + var_f31 = fn_1_8C8C(temp_r31->unk80, 10000.0f); + var_f31 = (1.0f / (0.31206876f * var_f31)); + HuAudFXPitchSet(temp_r31->unkA8, (8191.0f * (temp_r31->unk94 * var_f31))); + var_f31 = 127.0f; + if (temp_r31->unk94 < 0.1f) { + var_f31 = 0.0f; + } + HuAudFXVolSet(temp_r31->unkA8, var_f31); + } + } + else if (fn_1_42E4() <= 2) { + if (temp_r31->unkA8 < 0) { + temp_r31->unkA8 = HuAudFXPlay(lbl_1_data_344[object->work[0]]); + } + if (temp_r31->unkA8 >= 0) { + HuAudFXPitchSet(temp_r31->unkA8, (8191.0f * (0.0001f * temp_r31->unk88) * (1.0f - temp_r31->unkA0))); + var_f31 = 127.0f; + if (temp_r31->unkA0 >= 1.0f) { + var_f31 = 0.0f; + } + HuAudFXVolSet(temp_r31->unkA8, var_f31); + } + } + else if (temp_r31->unkA8 >= 0) { + HuAudFXStop(temp_r31->unkA8); + temp_r31->unkA8 = -1; + } + if ((fn_1_42E4() >= 1) && (temp_r31->unkB0 >= 0)) { + HuAudFXFadeOut(temp_r31->unkB0, 30); + temp_r31->unkB0 = -1; + } + if ((fn_1_42E4() == 2) && (temp_r31->unkB8 < 0)) { + temp_r31->unkB8 = HuAudFXPlay(lbl_1_data_354[object->work[0]]); + } + if (temp_r31->unkB8 >= 0) { + var_f31 = 0.012048192f * temp_r31->unk7C; + HuAudFXPitchSet(temp_r31->unkB8, ((2.0f * (8191.0f * var_f31)) - 8191.0f)); + HuAudFXVolSet(temp_r31->unkB8, (127.0f * var_f31)); + if (fn_1_42E4() >= 5U) { + HuAudFXFadeOut(temp_r31->unkB8, 0x3C); + temp_r31->unkB8 = -1; + } + } +} + +void fn_1_8138(omObjData *object, u32 arg1) +{ // near replica of fn_1_B8A0 of m417Dll + f32 var_f31; + M443DllWorkStruct *temp_r30; + + temp_r30 = object->data; + if ((temp_r30->unk8 != arg1) && (arg1 < 4)) { + var_f31 = 60.0f * lbl_1_data_2D4[arg1].unk4; + if (temp_r30->unk8 < 0) { + var_f31 = 0.0f; + } + temp_r30->unk8 = arg1; + CharModelMotionShiftSet( + temp_r30->unk0, object->motion[lbl_1_data_2D4[arg1].unk0], 60.0f * lbl_1_data_2D4[arg1].unk8, var_f31, lbl_1_data_2D4[arg1].unk10); + if (lbl_1_data_2D4[arg1].unkC >= 0.0f) { + Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_2D4[arg1].unk8, 60.0f * lbl_1_data_2D4[arg1].unkC); + } + } +} + +s32 fn_1_82C4(omObjData *object) +{ + s32 var_r30; + M443DllWorkStruct *temp_r31; + + temp_r31 = object->data; + var_r30 = 0; + if ((CharModelMotionEndCheck(temp_r31->unk0) != 0) && (CharModelMotionShiftIDGet(temp_r31->unk0) < 0)) { + var_r30 = 1; + } + return var_r30; +} + +s32 fn_1_8338(omObjData *object, u32 arg1) +{ + s32 var_r27; + s32 var_r26; + M443DllWorkStruct *temp_r31; + + var_r27 = 0; + temp_r31 = object->data; + var_r26 = 0; + if ((CharModelMotionEndCheck(temp_r31->unk0) != 0) && (CharModelMotionShiftIDGet(temp_r31->unk0) < 0)) { + var_r26 = 1; + } + + if (var_r26 != 0) { + fn_1_8138(object, arg1); + var_r27 = 1; + } + return var_r27; +} + +u32 lbl_1_data_410[11][2] = { + { 0x4A0015, 0xFA }, + { 0x4A0016, 0xF0 }, + { 0x4A0017, 0xE6 }, + { 0x4A0018, 0xF0 }, + { 0x4A0019, 0xF0 }, + { 0x4A001A, 0xF0 }, + { 0x4A001B, 0xF0 }, + { 0x61002E, 0xF0 }, + { 0x61002E, 0xF0 }, + { 0x61002E, 0xF0 }, + { 0x4A001C, 0xF0 }, +}; + +Vec2f lbl_1_data_468[4] = { + { 64.0f, 54.0f }, + { 46.0f, 54.0f }, + { 64.0f, 44.0f }, + { 46.0f, 44.0f }, +}; + +void fn_1_8508(omObjData *object) +{ + s32 var_r30; + M443DllWorkStruct *temp_r28; + M443DllUnkStruct *temp_r31; + f32 *temp_r4; + + temp_r28 = object->data; + temp_r31 = &temp_r28->unk108s; + + for (var_r30 = 0; var_r30 < 11; var_r30++) { + temp_r31->unk14[var_r30] = -1; + if (lbl_1_data_410[var_r30][0] != 0) { + temp_r31->unk14[var_r30] = espEntry(lbl_1_data_410[var_r30][0], lbl_1_data_410[var_r30][1], 0); + espAttrSet(temp_r31->unk14[var_r30], HUSPR_ATTR_LINEAR); + espDispOff(temp_r31->unk14[var_r30]); + } + } + espColorSet(temp_r31->unk14[0], 0, 0, 0); + espTPLvlSet(temp_r31->unk14[0], 0.5); + espScaleSet(temp_r31->unk14[1], 0.75, 0.75); + espScaleSet(temp_r31->unk14[2], 0.75, 0.75); + temp_r31->unkC = lbl_1_data_468[object->work[0]]; +} + +f32 lbl_1_data_488[][2] = { + { 20.0f, 4.0f }, + { 18.0f, 6.0f }, + { 46.0f, 33.0f }, + { 72.0f, 32.0f }, + { 72.0f, 14.0f }, + { 72.0f, -4.0f }, + { 72.0f, -22.0f }, + { -140.0f, 32.0f }, + { -158.0f, 32.0f }, + { -176.0f, 32.0f }, + { -96.0f, 32.0f }, +}; + +void fn_1_8680(omObjData *object) +{ + f32 var_f31; + s32 var_r27; + s32 var_r30; + u32 var_r28; + M443DllWorkStruct *temp_r29; + M443DllUnkStruct *temp_r31; + + temp_r29 = object->data; + temp_r31 = &temp_r29->unk108s; + temp_r31->unk8++; + + for (var_r30 = 0; var_r30 < 11; var_r30++) { + if (temp_r31->unk14[var_r30] >= 0) { + if (temp_r31->unk0 == 0) { + espDispOff(temp_r31->unk14[var_r30]); + } + else { + espDispOn(temp_r31->unk14[var_r30]); + espPosSet(temp_r31->unk14[var_r30], 0.9f * (temp_r29->unk104->unk_44 + temp_r31->unkC.x + lbl_1_data_488[var_r30][0]), + temp_r29->unk104->unk_48 + temp_r31->unkC.y + lbl_1_data_488[var_r30][1]); + } + } + } + var_f31 = 0.0f; + if (temp_r29->unk88 > 8000.0f) { + var_f31 = (0.004f * frandmod(0x3E8)) - 2.0f; + } + espZRotSet(temp_r31->unk14[2], (90.0f * (0.0001f * temp_r29->unk88)) + var_f31); + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27 = 0; + if (temp_r29->unk80 == var_r30) { + var_r27 = 2; + } + else if (((temp_r29->unk80 + 1) == var_r30) && (temp_r31->unk4 != 0)) { + var_r27 += (temp_r31->unk8 >> 1) & 1; + } + espBankSet(temp_r31->unk14[var_r30 + 3], var_r27); + } + var_r28 = (3.6f * temp_r29->unk7C); + var_r30 = var_r28 % 10; + espBankSet(temp_r31->unk14[7], var_r30); + var_r28 = (var_r28 - var_r30) / 10; + var_r30 = var_r28 % 10; + espBankSet(temp_r31->unk14[8], var_r30); + var_r28 = (var_r28 - var_r30) / 10; + var_r30 = var_r28 % 10; + espBankSet(temp_r31->unk14[9], var_r30); +} + +f32 lbl_1_data_4E0[4] = { 18.5f, 9.25f, 6.66f, 5.55f }; + +f32 fn_1_8958(u32 arg0) +{ + if (arg0 >= 4) { + if (arg0 >= 4) { } + } + return lbl_1_data_4E0[arg0]; +} + +f32 fn_1_8990(f32 arg8) +{ + f32 var_f30; + f32 var_f31; + + var_f30 = 0.8f * (0.00016666666f * (6000.0f - arg8)); + var_f30 = 0.6f * (1.0f - (var_f30 * var_f30)); + var_f31 = 0.000400000002f * (6500.0f - arg8); + var_f31 = 0.4f * (1.0f - (var_f31 * var_f31)); + if (var_f31 > 0.0f) { + var_f30 += var_f31; + } + var_f31 = arg8 - 8000.0f; + if (var_f31 > 0.0f) { + var_f31 = 1.0f - (0.00033333333f * var_f31); + var_f30 = var_f31 * (var_f30 * var_f31); + } + return 55.0f * var_f30; +} + +f32 fn_1_8AC8(u32 arg0, f32 arg1) +{ + return 1.7647059f * (fn_1_8990(arg1) * fn_1_8958(arg0)); +} + +f32 fn_1_8C68(f32 arg0) +{ + return 9.8f * (0.0012820513f * arg0); +} + +f32 fn_1_8C8C(s32 arg0, f32 arg1) +{ + return 3.204422f * ((0.016666668f * arg1) / fn_1_8958(arg0)); +} + +f32 fn_1_8D00(u32 arg0, f32 arg1) +{ + return 0.31206876f * (60.0f * arg1) * fn_1_8958(arg0); +} + +f32 fn_1_8D74(f32 arg0) +{ + return 0.024899999f * (arg0 * arg0); +} + +f32 fn_1_8D8C(u32 arg0, f32 arg8) +{ + return arg8 / fn_1_8958(arg0); +} +f32 fn_1_8DE0(u32 arg0, f32 arg8) +{ + return arg8 * fn_1_8958(arg0); +} + +void fn_1_8E34(s32 arg0) +{ + s32 var_r29; + ParticleData *temp_r30; + HsfanimStruct01 *var_r31; + + temp_r30 = Hu3DData[arg0].unk_120; + var_r31 = temp_r30->unk_48; + + for (var_r29 = 0; var_r29 < temp_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.z -= 0.3f; + var_r31->unk2C += 2.0f; + var_r31->unk40.a *= 0.98f; + if (var_r31->unk00 < 24.0f) { + var_r31->unk40.a = var_r31->unk40.a * 0.9f; + } + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(temp_r30->unk_48, temp_r30->unk_30 * 0x44); +} + +static inline f32 isEven(u32 arg) +{ + if ((arg & 1) != 0) { + return 1.0f; + } + else { + return -1.0f; + } +} + +void fn_1_8FFC(u32 arg0, Vec *arg1, f32 arg2, f32 arg3) +{ + f32 temp_f31; + f32 var_f29; + ParticleData *temp_r29; + s32 var_r28; + u32 var_r27; + HsfanimStruct01 *var_r31; + + temp_r29 = Hu3DData[lbl_1_bss_90[arg0]->model[3]].unk_120; + if (frandmod(0x3E8) > 1000.0f * arg2) + return; + + var_r27 = 2; + var_r31 = temp_r29->unk_48; + + for (var_r28 = 0; var_r28 < temp_r29->unk_30; var_r28++, var_r31++) { + if (var_r31->unk00 != 0) + continue; + + var_r31->unk00 = (60.0f * (0.6f + (0.0005f * frandmod(0x3E8)))); + var_f29 = isEven(var_r27); + temp_f31 = 0.030000001f * frandmod(0x3E8); + var_r31->unk34.x = arg1->x + var_f29 * (70.0f + (0.07f * frandmod(0x3E8))); + var_r31->unk34.y = 10.0f + (arg1->y + (0.02f * frandmod(0x3E8))); + var_r31->unk34.z = (250.0f + arg1->z); + temp_f31 = 0.8333334f + 0.0016666667f * frandmod(0x3E8); + temp_f31 *= 1.0f + arg2; + var_r31->unk08.x = (0.0025f * frandmod(0x3E8) - 1.25f); + var_r31->unk08.y = (3.3333335f + 0.0016666667f * frandmod(0x3E8)); + var_r31->unk08.z = ((4.166667f + (0.0016666667f * frandmod(0x3E8))) - (0.016666668f * (0.5f * arg3))); + var_r31->unk30 = frandmod(0x168); + temp_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk2C = (50.0f + (100.0f * temp_f31)); + var_r31->unk40.a = (70.0f + (80.0f * (1.0f - temp_f31))); + var_r31->unk40.r = (50.0f + (145.0f * temp_f31)); + var_r31->unk40.g = (55.0f + (140.0f * temp_f31)); + var_r31->unk40.b = (70.0f + (125.0f * temp_f31)); + if (--var_r27 < 1) + break; + } +} + +void fn_1_95A4(u32 arg0) +{ + s32 var_r29; + ParticleData *temp_r30; + HsfanimStruct01 *var_r31; + + temp_r30 = Hu3DData[lbl_1_bss_90[arg0]->model[3]].unk_120; + var_r31 = temp_r30->unk_48; + + for (var_r29 = 0; var_r29 < temp_r30->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } +} diff --git a/src/REL/m444dll/datalist.c b/src/REL/m444dll/datalist.c index 3b4fbbaf..6d2e69f2 100644 --- a/src/REL/m444dll/datalist.c +++ b/src/REL/m444dll/datalist.c @@ -1,5 +1,9 @@ #include "REL/m444dll.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + s16 lbl_1_bss_199C2[90]; s16 lbl_1_bss_1990E[90]; s16 lbl_1_bss_1990A[2]; @@ -177,4 +181,4 @@ void fn_1_D950(void) espKill(lbl_1_bss_1990A[i]); } } -} \ No newline at end of file +} diff --git a/src/REL/m444dll/main.c b/src/REL/m444dll/main.c index 60a338ec..27ef0821 100644 --- a/src/REL/m444dll/main.c +++ b/src/REL/m444dll/main.c @@ -1,75 +1,69 @@ -#include "game/object.h" -#include "game/objsub.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/pad.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/audio.h" -#include "game/esprite.h" -#include "game/chrman.h" #include "game/board/ui.h" -#include "game/gamework_data.h" #include "game/gamework.h" +#include "game/gamework_data.h" #include "REL/m444dll.h" #include "ext_math.h" #include "math.h" -#include "rel_sqrt_consts.h" - typedef struct camera_view_params { - Vec rot; - Vec pos; - float zoom; + Vec rot; + Vec pos; + float zoom; } CameraViewParams; CameraViewParams lbl_1_data_0[] = { - { { -55, 0, 0 }, { 0, 60, -57 }, 806 }, - { { -71, 0, 0 }, { 0, 100, -131 }, 900 }, - { { -87, 0, 0 }, { 0, 46, -117 }, 566 }, - { { -87, 0, 0 }, { 0, 46, -117 }, 566 }, - { { -90, 0, 0 }, { -22, 39, -153 }, 432 }, - { { -40, 0, 0 }, { 0, 130, -186 }, 6530 }, - { { -23, 0, 0 }, { -9, 1, -70 }, 1318 }, - { { -25, 0, 0 }, { 0, 242, 90 }, 343 }, - { { -30, 0, 0 }, { 0, 223, -60 }, 505 }, - { { -23, 0, 0 }, { 0, 65, -97 }, 1318 }, + { { -55, 0, 0 }, { 0, 60, -57 }, 806 }, + { { -71, 0, 0 }, { 0, 100, -131 }, 900 }, + { { -87, 0, 0 }, { 0, 46, -117 }, 566 }, + { { -87, 0, 0 }, { 0, 46, -117 }, 566 }, + { { -90, 0, 0 }, { -22, 39, -153 }, 432 }, + { { -40, 0, 0 }, { 0, 130, -186 }, 6530 }, + { { -23, 0, 0 }, { -9, 1, -70 }, 1318 }, + { { -25, 0, 0 }, { 0, 242, 90 }, 343 }, + { { -30, 0, 0 }, { 0, 223, -60 }, 505 }, + { { -23, 0, 0 }, { 0, 65, -97 }, 1318 }, }; DataListSprite lbl_1_data_118[] = { - { 0x4B0022, 0, 10, 288, -200, { 255, 255, 255, 255 } }, - { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } } + { DATA_MAKE_NUM(DATADIR_M444, 0x22), 0, 10, 288, -200, { 255, 255, 255, 255 } }, + { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, }; -float lbl_1_data_140[] = { - 90, 250, 420 -}; +float lbl_1_data_140[] = { 90, 250, 420 }; Vec lbl_1_data_14C[] = { - { -75, -300, 0 }, - { 25, -300, 0 }, - { -75, -300, 0 }, - { 25, -300, 0 }, - { -25, -400, 0 }, + { -75, -300, 0 }, + { 25, -300, 0 }, + { -75, -300, 0 }, + { 25, -300, 0 }, + { -25, -400, 0 }, }; -s16 lbl_1_data_188[] = { - 1, 1, 2, 2, 2 -}; +s16 lbl_1_data_188[] = { 1, 1, 2, 2, 2 }; s32 lbl_1_data_194[] = { - 0x4B0024, - 0x4B0025, - 0x4B0026, - 0x4B0027, - 0x4B0028, - 0x4B0029, - 0x4B002A, - 0x4B002B + DATA_MAKE_NUM(DATADIR_M444, 0x24), + DATA_MAKE_NUM(DATADIR_M444, 0x25), + DATA_MAKE_NUM(DATADIR_M444, 0x26), + DATA_MAKE_NUM(DATADIR_M444, 0x27), + DATA_MAKE_NUM(DATADIR_M444, 0x28), + DATA_MAKE_NUM(DATADIR_M444, 0x29), + DATA_MAKE_NUM(DATADIR_M444, 0x2A), + DATA_MAKE_NUM(DATADIR_M444, 0x2B), }; omObjData *lbl_1_bss_30C; @@ -92,6 +86,7 @@ Vec lbl_1_bss_290[2]; float lbl_1_bss_288[2]; s16 lbl_1_bss_148[20][8]; s16 lbl_1_bss_8[20][8]; +s16 lbl_1_bss_6; s16 lbl_1_bss_4; s32 lbl_1_bss_0; @@ -102,39 +97,42 @@ void fn_1_7290(omObjData *object); void ObjectSetup(void) { - s32 light; - OSReport("******* M444 ObjectSetup *********\n"); - lbl_1_bss_308 = omInitObjMan(50, 8192); - omGameSysInit(lbl_1_bss_308); - lbl_1_bss_2A8[0].x = -70; - lbl_1_bss_2A8[0].y = 0; - lbl_1_bss_2A8[0].z = 0; - lbl_1_bss_290[0].x = 0; - lbl_1_bss_290[0].y = 130; - lbl_1_bss_290[0].z = -186; - lbl_1_bss_288[0] = 1360; - lbl_1_bss_2F0 = lbl_1_bss_2A8[0]; - lbl_1_bss_2E4 = lbl_1_bss_290[0]; - lbl_1_bss_2E0 = lbl_1_bss_288[0]; - lbl_1_bss_2FC = 0; - lbl_1_bss_2D6 = -2; - lbl_1_bss_2D4 = -2; - lbl_1_bss_2D2 = -2; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2f); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - light = Hu3DGLightCreate(-1000, 1000, 0, 1, -1, 0, 255, 255, 255); - Hu3DGLightInfinitytSet(light); - Hu3DGLightStaticSet(light, 1); - light = Hu3DGLightCreate(0, 50, 1000, 0, -0.05f, -1, 96, 96, 96); - Hu3DGLightInfinitytSet(light); - HuPrcChildCreate(fn_1_470, 100, 12288, 0, lbl_1_bss_308); - HuPrcChildCreate(fn_1_6E3C, 200, 4096, 0, lbl_1_bss_308); - lbl_1_bss_30C = omAddObjEx(lbl_1_bss_308, 32730, 0, 0, -1, fn_1_6EDC); - omAddObjEx(lbl_1_bss_308, 0, 32, 32, -1, fn_1_7290); - Hu3DBGColorSet(0, 0, 0); - HuWinInit(1); - BoardStatusCreate(); + s32 light; + OSReport("******* M444 ObjectSetup *********\n"); + lbl_1_bss_308 = omInitObjMan(50, 8192); + omGameSysInit(lbl_1_bss_308); + lbl_1_bss_2A8[0].x = -70; + lbl_1_bss_2A8[0].y = 0; + lbl_1_bss_2A8[0].z = 0; + lbl_1_bss_290[0].x = 0; + lbl_1_bss_290[0].y = 130; + lbl_1_bss_290[0].z = -186; + lbl_1_bss_288[0] = 1360; + lbl_1_bss_2F0 = lbl_1_bss_2A8[0]; + lbl_1_bss_2E4 = lbl_1_bss_290[0]; + lbl_1_bss_2E0 = lbl_1_bss_288[0]; + lbl_1_bss_2FC = 0; + lbl_1_bss_2D6 = -2; + lbl_1_bss_2D4 = -2; + lbl_1_bss_2D2 = -2; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30, 20, 15000, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + light = Hu3DGLightCreate(-1000, 1000, 0, 1, -1, 0, 255, 255, 255); + Hu3DGLightInfinitytSet(light); + Hu3DGLightStaticSet(light, 1); + light = Hu3DGLightCreate(0, 50, 1000, 0, -0.05f, -1, 96, 96, 96); + Hu3DGLightInfinitytSet(light); + HuPrcChildCreate(fn_1_470, 100, 12288, 0, lbl_1_bss_308); + HuPrcChildCreate(fn_1_6E3C, 200, 4096, 0, lbl_1_bss_308); + lbl_1_bss_30C = omAddObjEx(lbl_1_bss_308, 32730, 0, 0, -1, fn_1_6EDC); + omAddObjEx(lbl_1_bss_308, 0, 32, 32, -1, fn_1_7290); + Hu3DBGColorSet(0, 0, 0); +#if VERSION_JP + GWGameStat.language = 0; +#endif + HuWinInit(1); + BoardStatusCreate(); } void fn_1_3B7C(void); @@ -150,796 +148,808 @@ float fn_1_82FC(void); void fn_1_470(void) { - float temp_f31; - float temp_f30; - - s16 temp_r31; - s16 temp_r30; - s16 temp_r29; - u32 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - u32 temp_r24; - ModelData *temp_r23; - - Vec sp1C; - Vec sp10; - float sp8[2]; - - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(GWPlayerCfg[temp_r31].group == 0) { - break; - } - } - lbl_1_bss_2DC = temp_r31; - lbl_1_bss_2D8 = GWPlayerCfg[temp_r31].pad_idx; - lbl_1_bss_2DA = GWPlayerCfg[temp_r31].character; - fn_1_655C(); - fn_1_8210(5); - fn_1_8180(6); - Hu3DModelPosSet(lbl_1_bss_2D0, 0, 0, 250); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - HuAudSeqPlay(76); - while(WipeStatGet()) { - HuPrcVSleep(); - } - while(fn_1_82FC() > 10.0f) { - HuPrcVSleep(); - } - Hu3DModelAttrReset(lbl_1_bss_199C2[18], 1); - Hu3DMotionSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20]); - Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, 90, 0); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - if(temp_r31 <= 30) { - espPosSet(lbl_1_bss_1990A[0], 288, (200.0*sind(3.0*temp_r31))-100.0); - } - Hu3DModelPosSet(lbl_1_bss_199C2[18], (-300.0*cosd(1.5*temp_r31))+(-160.0), 0, 155); - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<=30; temp_r31++) { - if(temp_r31 <= 20) { - Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, (30.0*(1.0-(temp_r31/20.0f)))+60.0, 0); - } - if(temp_r31 > 10) { - temp_r29 = temp_r31-10; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (-(temp_r29/20.0f))*120.0f, 0); - } - if(temp_r31 == 10) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[19], 0, 16, 0x40000001); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 8, 0x40000001); - } - HuPrcVSleep(); - } - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 8, 0x40000001); - HuWinMesMaxSizeGet(1, sp8, 0x1C0000); - temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); - HuWinExAnimIn(temp_r30); - HuWinMesPalSet(temp_r30, 7, 0, 0, 0); - fn_1_6D80(temp_r30); - HuWinMesSet(temp_r30, 0x1C0000); - HuWinMesWait(temp_r30); - HuWinExAnimOut(temp_r30); - HuWinExCleanup(temp_r30); - HuWinComKeyReset(); - Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<=20; temp_r31++) { - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<=30; temp_r31++) { - if(temp_r31 <= 10) { - Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, 30.0f-((temp_r31/10.0f)*120.0f), 0); - } - if(temp_r31 <= 20) { - espPosSet(lbl_1_bss_1990A[0], 288, (200.0*cosd(temp_r31*4.5))-100.0); - } - Hu3DModelPosSet(lbl_1_bss_199C2[18], ((1.0-cosd(temp_r31*3.0))*-200.0)+ -160.0, 0, 155); - HuPrcVSleep(); - } - Hu3DModelAttrSet(lbl_1_bss_199C2[18], 1); - Hu3DModelAttrReset(lbl_1_bss_199C2[22], 1); - Hu3DMotionSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24]); - Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, 90, 0); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - Hu3DModelPosSet(lbl_1_bss_199C2[22], (-300.0*cosd(1.5*temp_r31))+(-160.0), 0, 155); - if(temp_r31 > 20) { - temp_r29 = temp_r31-40; - Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (30.0*(1.0-(temp_r29/20.0f)))+60.0, 0); - } - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[23], 0, 10, 0x40000001); - } - if(temp_r31 > 40) { - temp_r29 = temp_r31-40; - for(temp_r27=0; temp_r27<3; temp_r27++) { - lbl_1_bss_34C[temp_r27].y = (180.0*sind(4.5*temp_r29))-100.0; - } - } - HuPrcVSleep(); - } - HuWinMesMaxSizeGet(1, sp8, 0x1C0001); - temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); - HuWinExAnimIn(temp_r30); - HuWinMesPalSet(temp_r30, 7, 0, 0, 0); - fn_1_6D80(temp_r30); - HuWinMesSet(temp_r30, 0x1C0001); - HuWinMesWait(temp_r30); - HuWinExAnimOut(temp_r30); - HuWinExCleanup(temp_r30); - HuWinComKeyReset(); - Hu3DModelAttrReset(lbl_1_bss_199C2[11], 0x40000002); - HuAudFXPlay(1854); - Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f31 = temp_r31/20.0f; - Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (150.0f*temp_f31)+30.0f, 0); - HuPrcVSleep(); - } - Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[23], 0, 10, 0x40000001); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f31 = temp_r31/20.0f; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, -120.0f-(60.0f*temp_f31), 0); - HuPrcVSleep(); - } - HuAudFXPlay(1855); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - while(Hu3DMotionEndCheck(lbl_1_bss_199C2[11]) == 0) { - HuPrcVSleep(); - } - HuAudFXPlay(1856); - fn_1_861C(0); - Hu3DModelAttrReset(lbl_1_bss_199C2[9], 0x40000002); - HuAudFXPlay(1863); - while(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) < lbl_1_data_140[0]) { - HuPrcVSleep(); - } - HuAudFXPlay(1857); - Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_140[0]); - Hu3DModelAttrSet(lbl_1_bss_199C2[9], 0x40000002); - HuPrcSleep(20); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 8, 0x40000001); - sp1C.x = 124; - sp1C.y = 0; - sp1C.z = -180; - for(temp_r31=0; temp_r31<=40; temp_r31++) { - temp_f31 = temp_r31/40.0f; - Hu3DModelPosSet(lbl_1_bss_2D0, temp_f31*sp1C.x, temp_f31*sp1C.y, (temp_f31*sp1C.z)+250.0f); - if(temp_r31 <= 20) { - temp_f30 = atan2d(sp1C.x, sp1C.z)-180.0; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f30*(temp_r31/20.0))+180.0, 0); - } - if(temp_r31 > 30) { - temp_r29 = temp_r31-30; - temp_f30 = atan2d(sp1C.x, sp1C.z)-180.0; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f30*(1.0-(temp_r29/10.0)))+180.0, 0); - } - HuPrcVSleep(); - } - lbl_1_bss_2D6 = -1; - fn_1_9418(0); - temp_r26 = fn_1_8DD0(0); - lbl_1_bss_2D6 = lbl_1_bss_320[temp_r26]; - HuAudFXPlay(1859); - fn_1_9CAC(0, temp_r26); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - lbl_1_bss_328[0].x = lbl_1_bss_328[0].y = lbl_1_bss_328[0].z = (0.1*sind(temp_r31*18.0))+0.3; - HuPrcVSleep(); - } - HuPrcSleep(40); - Hu3DModelAttrSet(lbl_1_bss_199C2[64], 1); - fn_1_8180(9); - Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<=30; temp_r31++) { - if(temp_r31 <= 10) { - Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (90.0*(temp_r31/10.0))+180.0, 0); - } - if(temp_r31 == 10) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - } - if(temp_r31 > 10 && temp_r31 <= 25) { - temp_r29 = temp_r31-10; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (90.0*(temp_r29/15.0))+180.0, 0); - } - if(temp_r31 == 25) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - } - Hu3DModelPosSet(lbl_1_bss_199C2[22], (-300.0*(1.0-cosd(3.0*temp_r31)))+(-160.0), 0, 155); - HuPrcVSleep(); - } - Hu3DModelAttrSet(lbl_1_bss_199C2[22], 1); - Hu3DModelAttrReset(lbl_1_bss_199C2[26], 1); - Hu3DMotionSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28]); - Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, 90, 0); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - Hu3DModelPosSet(lbl_1_bss_199C2[26], (-300.0*cosd(1.5*temp_r31))+(-160.0), 0, 155); - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[27], 0, 10, 0x40000001); - } - HuPrcVSleep(); - } - HuWinMesMaxSizeGet(1, sp8, 0x1C0002); - temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); - HuWinExAnimIn(temp_r30); - HuWinMesPalSet(temp_r30, 7, 0, 0, 0); - fn_1_6D80(temp_r30); - HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D6].character, 0); - HuWinMesSet(temp_r30, 0x1C0002); - HuWinMesWait(temp_r30); - HuWinExAnimOut(temp_r30); - HuWinExCleanup(temp_r30); - HuWinComKeyReset(); - Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f31 = temp_r31/20.0f; - Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, (temp_f31*90.0f)+90.0f, 0); - HuPrcVSleep(); - } - Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[27], 0, 10, 0x40000001); - fn_1_861C(1); - Hu3DModelAttrReset(lbl_1_bss_199C2[9], 0x40000002); - HuAudFXPlay(1862); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f31 = 1.0-(temp_r31/20.0f); - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f31*90.0f)+180.0f, 0); - HuPrcVSleep(); - } - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - while(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) < lbl_1_data_140[1]) { - if(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 128.0f) { - HuAudFXPlay(1850); - } - if(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 200.0f) { - HuAudFXPlay(1863); - } - HuPrcVSleep(); - } - HuAudFXPlay(1857); - Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_140[1]); - Hu3DModelAttrSet(lbl_1_bss_199C2[9], 0x40000002); - HuPrcSleep(20); - lbl_1_bss_2D4 = -1; - fn_1_9418(1); - temp_r26 = fn_1_8DD0(1); - lbl_1_bss_2D4 = lbl_1_bss_320[temp_r26]; - HuAudFXPlay(1860); - fn_1_9CAC(1, temp_r26); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - lbl_1_bss_328[1].x = lbl_1_bss_328[1].y = lbl_1_bss_328[1].z = (0.1*sind(temp_r31*18.0))+0.3; - HuPrcVSleep(); - } - HuPrcSleep(40); - Hu3DModelAttrSet(lbl_1_bss_199C2[64], 1); - fn_1_8180(9); - Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<=30; temp_r31++) { - if(temp_r31 <= 10) { - Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, (90.0*(temp_r31/10.0))+180.0, 0); - } - if(temp_r31 == 10) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - } - if(temp_r31 > 10 && temp_r31 <= 25) { - temp_r29 = temp_r31-10; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (90.0*(temp_r29/15.0))+180.0, 0); - } - if(temp_r31 == 25) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - } - Hu3DModelPosSet(lbl_1_bss_199C2[26], (-400.0*(1.0-cosd(3.0*temp_r31)))+(-160.0), 0, 155); - HuPrcVSleep(); - } - Hu3DModelAttrSet(lbl_1_bss_199C2[26], 1); - Hu3DModelAttrReset(lbl_1_bss_199C2[30], 1); - Hu3DMotionSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32]); - Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, 90, 0); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - Hu3DModelPosSet(lbl_1_bss_199C2[30], (-400.0*cosd(1.5*temp_r31))+(-160.0), 100, 155); - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[31], 0, 10, 0x40000001); - } - HuPrcVSleep(); - } - HuWinMesMaxSizeGet(1, sp8, 0x1C0003); - temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); - HuWinExAnimIn(temp_r30); - HuWinMesPalSet(temp_r30, 7, 0, 0, 0); - fn_1_6D80(temp_r30); - HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D6].character, 0); - HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D4].character, 2); - HuWinMesSet(temp_r30, 0x1C0003); - HuWinMesWait(temp_r30); - HuWinExAnimOut(temp_r30); - HuWinExCleanup(temp_r30); - HuWinComKeyReset(); - Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f31 = temp_r31/20.0f; - Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, (temp_f31*90.0f)+90.0f, 0); - HuPrcVSleep(); - } - Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[31], 0, 10, 0x40000001); - fn_1_861C(2); - Hu3DModelAttrReset(lbl_1_bss_199C2[9], 0x40000002); - HuAudFXPlay(1862); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f31 = 1.0-(temp_r31/20.0f); - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f31*90.0f)+180.0f, 0); - HuPrcVSleep(); - } - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - while(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) < lbl_1_data_140[2]) { - if(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 300.0f) { - HuAudFXPlay(1850); - } - if(Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 372.0f) { - HuAudFXPlay(1863); - } - HuPrcVSleep(); - } - HuAudFXPlay(1857); - Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_140[2]); - Hu3DModelAttrSet(lbl_1_bss_199C2[9], 0x40000002); - HuPrcSleep(20); - lbl_1_bss_2D2 = -1; - fn_1_9418(2); - temp_r26 = fn_1_8DD0(2); - lbl_1_bss_2D2 = temp_r26; - HuAudFXPlay(1861); - fn_1_9CAC(2, temp_r26); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - lbl_1_bss_328[2].x = lbl_1_bss_328[2].y = lbl_1_bss_328[2].z = (0.1*sind(temp_r31*18.0))+0.3; - HuPrcVSleep(); - } - HuPrcSleep(40); - Hu3DModelAttrSet(lbl_1_bss_199C2[64], 1); - fn_1_8180(9); - Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32], 0, 10, 0x40000001); - for(temp_r31=0; temp_r31<=30; temp_r31++) { - if(temp_r31 <= 10) { - Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, (90.0*(temp_r31/10.0))+180.0, 0); - } - if(temp_r31 == 10) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - } - if(temp_r31 > 10 && temp_r31 <= 25) { - temp_r29 = temp_r31-10; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, (90.0*(temp_r29/15.0))+180.0, 0); - } - if(temp_r31 == 25) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - } - Hu3DModelPosSet(lbl_1_bss_199C2[30], (-400.0*(1.0-cosd(3.0*temp_r31)))+(-160.0), 100, 155); - HuPrcVSleep(); - } - HuAudFXPlay(1862); - Hu3DModelAttrReset(lbl_1_bss_199C2[9], 0x40000002); - while(Hu3DMotionEndCheck(lbl_1_bss_199C2[9]) == 0) { - HuPrcVSleep(); - } - Hu3DModelAttrReset(lbl_1_bss_199C2[11], 0x40000002); - HuAudFXPlay(1855); - Hu3DModelAttrSet(lbl_1_bss_199C2[11], 0x40000004); - while(Hu3DMotionTimeGet(lbl_1_bss_199C2[11]) > 0.0f) { - if(Hu3DMotionTimeGet(lbl_1_bss_199C2[11]) == 25.0f) { - HuAudFXPlay(1854); - } - HuPrcVSleep(); - } - HuAudFXPlay(1856); - Hu3DModelAttrReset(lbl_1_bss_199C2[34], 1); - Hu3DMotionSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[36]); - Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, 90, 0); - for(temp_r31=0; temp_r31<=60; temp_r31++) { - Hu3DModelPosSet(lbl_1_bss_199C2[34], -154.0+(-500.0*(1.0-(temp_r31/60.0f))), 0, -403); - if(temp_r31 > 20) { - temp_r29 = temp_r31-40; - Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, (30.0*(1.0-(temp_r29/20.0f)))+60.0, 0); - } - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[35], 0, 10, 0x40000001); - } - if(temp_r31 == 40) { - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - } - if(temp_r31 >= 40) { - temp_r29 = temp_r31-40; - Hu3DModelRotSet(lbl_1_bss_2D0, 0, -90.0-(45.0*(temp_r29/20.0)), 0); - } - HuPrcVSleep(); - } - fn_1_8180(7); - temp_r23 = &Hu3DData[lbl_1_bss_2D0]; - sp1C.x = 0; - sp1C.y = 0; - sp1C.z = -200; - sp10 = temp_r23->pos; - VECSubtract(&sp1C, &sp10, &sp1C); - for(temp_r31=0; temp_r31<=30; temp_r31++) { - temp_f31 = temp_r31/30.0; - Hu3DModelPosSet(lbl_1_bss_2D0, (temp_f31*sp1C.x)+sp10.x, (temp_f31*sp1C.y)+sp10.y, (temp_f31*sp1C.z)+sp10.z); - HuPrcVSleep(); - } - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - BoardStatusShowSet(lbl_1_bss_2D6, 1); - BoardStatusShowSet(lbl_1_bss_2D4, 1); - sp1C.x = -112; - sp1C.y = 200; - sp1C.z = 0; - BoardStatusPosSet(lbl_1_bss_2D6, &sp1C); - sp1C.x = 688; - sp1C.y = 200; - sp1C.z = 0; - BoardStatusPosSet(lbl_1_bss_2D4, &sp1C); - for(temp_r31=0; temp_r31<=20; temp_r31++) { - if(temp_r31 > 10) { - temp_r29 = temp_r31-10; - sp1C.x = 138.0-(250.0*cosd(temp_r29*9.0)); - sp1C.y = 200; - sp1C.z = 0; - BoardStatusTargetPosSet(lbl_1_bss_2D6, &sp1C); - sp1C.x = 438.0+(250.0*cosd(temp_r29*9.0)); - sp1C.y = 200; - sp1C.z = 0; - BoardStatusTargetPosSet(lbl_1_bss_2D4, &sp1C); - } - HuPrcVSleep(); - } - temp_r25 = 1; - switch(lbl_1_bss_2D2) { - case 0: - if(GWPlayer[lbl_1_bss_2D6].coins <= 0 && GWPlayer[lbl_1_bss_2D4].coins <= 0) { - temp_r28 = 0x1C0016; - temp_r25 = 0; - - } else { - temp_r28 = 0x1C0006; - } - temp_r24 = 0x1C0009; - break; - - case 1: - if(GWPlayer[lbl_1_bss_2D6].coins <= 0 && GWPlayer[lbl_1_bss_2D4].coins <= 0 - && GWPlayer[lbl_1_bss_2D6].stars <= 0 && GWPlayer[lbl_1_bss_2D4].stars <= 0) { - temp_r25 = 0; - temp_r28 = 0x1C0017; - } else { - temp_r28 = 0x1C0006; - } - temp_r24 = 0x1C000D; - break; - - case 2: - if(GWPlayer[lbl_1_bss_2D6].stars > 0) { - temp_r28 = 0x1C0004; - } else { - temp_r28 = 0x1C0008; - temp_r25 = 0; - } - temp_r24 = 0x1C000A; - break; - - case 3: - if(GWPlayer[lbl_1_bss_2D6].stars <= 0 && GWPlayer[lbl_1_bss_2D4].stars <= 0) { - temp_r25 = 0; - temp_r28 = 0x1C0015; - } else { - temp_r28 = 0x1C0006; - } - temp_r24 = 0x1C000E; - break; - - case 4: - if(GWPlayer[lbl_1_bss_2D6].stars > 0) { - temp_r28 = 0x1C0004; - } else { - temp_r28 = 0x1C0008; - temp_r25 = 0; - } - temp_r24 = 0x1C000C; - break; - - case 5: - case 6: - if(GWPlayer[lbl_1_bss_2D6].coins > 0) { - temp_r28 = 0x1C0004; - } else { - temp_r28 = 0x1C0007; - temp_r25 = 0; - } - temp_r24 = 0x1C000B; - break; - - default: - break; - } - HuWinInsertMesSizeGet((u32)GWPlayerCfg[lbl_1_bss_2D6].character, 0); - HuWinInsertMesSizeGet(temp_r24, 1); - HuWinInsertMesSizeGet((u32)GWPlayerCfg[lbl_1_bss_2D4].character, 2); - HuWinMesMaxSizeGet(1, sp8, temp_r28); - temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); - HuWinExAnimIn(temp_r30); - HuWinMesPalSet(temp_r30, 7, 0, 0, 0); - HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D6].character, 0); - HuWinInsertMesSet(temp_r30, temp_r24, 1); - HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D4].character, 2); - fn_1_6D80(temp_r30); - HuWinMesSet(temp_r30, temp_r28); - HuWinMesWait(temp_r30); - HuWinExAnimOut(temp_r30); - HuWinExCleanup(temp_r30); - HuWinComKeyReset(); - if(temp_r25) { - fn_1_4DEC(); - HuPrcSleep(60); - } else { - HuPrcSleep(30); - } - sp1C.x = -112; - sp1C.y = 200; - sp1C.z = 0; - BoardStatusTargetPosSet(lbl_1_bss_2D6, &sp1C); - sp1C.x = 688; - sp1C.y = 200; - sp1C.z = 0; - BoardStatusTargetPosSet(lbl_1_bss_2D4, &sp1C); - while(!BoardStatusStopCheck(lbl_1_bss_2D6)) { - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<=20; temp_r31++) { - for(temp_r27=0; temp_r27<3; temp_r27++) { - lbl_1_bss_34C[temp_r27].y = (180.0*cosd(4.5*temp_r29))-100.0; - } - HuPrcVSleep(); - } - fn_1_3B7C(); - lbl_1_bss_2FC = 1; - while(1) { - lbl_1_bss_288[0] += 10.0f; - HuPrcVSleep(); - } + float temp_f31; + float temp_f30; + + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + u32 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + u32 temp_r24; + ModelData *temp_r23; + + Vec sp1C; + Vec sp10; + float sp8[2]; + + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (GWPlayerCfg[temp_r31].group == 0) { + break; + } + } + lbl_1_bss_2DC = temp_r31; + lbl_1_bss_2D8 = GWPlayerCfg[temp_r31].pad_idx; + lbl_1_bss_2DA = GWPlayerCfg[temp_r31].character; + fn_1_655C(); + fn_1_8210(5); + fn_1_8180(6); + Hu3DModelPosSet(lbl_1_bss_2D0, 0, 0, 250); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + HuAudSeqPlay(76); + while (WipeStatGet()) { + HuPrcVSleep(); + } + while (fn_1_82FC() > 10.0f) { + HuPrcVSleep(); + } + Hu3DModelAttrReset(lbl_1_bss_199C2[18], HU3D_ATTR_DISPOFF); + Hu3DMotionSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20]); + Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, 90, 0); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + if (temp_r31 <= 30) { + espPosSet(lbl_1_bss_1990A[0], 288, (200.0 * sind(3.0 * temp_r31)) - 100.0); + } + Hu3DModelPosSet(lbl_1_bss_199C2[18], (-300.0 * cosd(1.5 * temp_r31)) + (-160.0), 0, 155); + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 20) { + Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, (30.0 * (1.0 - (temp_r31 / 20.0f))) + 60.0, 0); + } + if (temp_r31 > 10) { + temp_r29 = temp_r31 - 10; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (-(temp_r29 / 20.0f)) * 120.0f, 0); + } + if (temp_r31 == 10) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[19], 0, 16, HU3D_MOTATTR_LOOP); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 8, HU3D_MOTATTR_LOOP); + } + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 8, HU3D_MOTATTR_LOOP); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1C, 0x00)); + temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); + HuWinExAnimIn(temp_r30); + HuWinMesPalSet(temp_r30, 7, 0, 0, 0); + fn_1_6D80(temp_r30); + HuWinMesSet(temp_r30, MAKE_MESSID(0x1C, 0x00)); + HuWinMesWait(temp_r30); + HuWinExAnimOut(temp_r30); + HuWinExCleanup(temp_r30); + HuWinComKeyReset(); + Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 10) { + Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, 30.0f - ((temp_r31 / 10.0f) * 120.0f), 0); + } + if (temp_r31 <= 20) { + espPosSet(lbl_1_bss_1990A[0], 288, (200.0 * cosd(temp_r31 * 4.5)) - 100.0); + } + Hu3DModelPosSet(lbl_1_bss_199C2[18], ((1.0 - cosd(temp_r31 * 3.0)) * -200.0) + -160.0, 0, 155); + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_199C2[18], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_199C2[22], HU3D_ATTR_DISPOFF); + Hu3DMotionSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24]); + Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, 90, 0); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + Hu3DModelPosSet(lbl_1_bss_199C2[22], (-300.0 * cosd(1.5 * temp_r31)) + (-160.0), 0, 155); + if (temp_r31 > 20) { + temp_r29 = temp_r31 - 40; + Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (30.0 * (1.0 - (temp_r29 / 20.0f))) + 60.0, 0); + } + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[23], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 > 40) { + temp_r29 = temp_r31 - 40; + for (temp_r27 = 0; temp_r27 < 3; temp_r27++) { + lbl_1_bss_34C[temp_r27].y = (180.0 * sind(4.5 * temp_r29)) - 100.0; + } + } + HuPrcVSleep(); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1C, 0x01)); + temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); + HuWinExAnimIn(temp_r30); + HuWinMesPalSet(temp_r30, 7, 0, 0, 0); + fn_1_6D80(temp_r30); + HuWinMesSet(temp_r30, MAKE_MESSID(0x1C, 0x01)); + HuWinMesWait(temp_r30); + HuWinExAnimOut(temp_r30); + HuWinExCleanup(temp_r30); + HuWinComKeyReset(); + Hu3DModelAttrReset(lbl_1_bss_199C2[11], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(1854); + Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_f31 = temp_r31 / 20.0f; + Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (150.0f * temp_f31) + 30.0f, 0); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[23], 0, 10, HU3D_MOTATTR_LOOP); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_f31 = temp_r31 / 20.0f; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, -120.0f - (60.0f * temp_f31), 0); + HuPrcVSleep(); + } + HuAudFXPlay(1855); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + while (Hu3DMotionEndCheck(lbl_1_bss_199C2[11]) == 0) { + HuPrcVSleep(); + } + HuAudFXPlay(1856); + fn_1_861C(0); + Hu3DModelAttrReset(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(1863); + while (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) < lbl_1_data_140[0]) { + HuPrcVSleep(); + } + HuAudFXPlay(1857); + Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_140[0]); + Hu3DModelAttrSet(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + HuPrcSleep(20); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 8, HU3D_MOTATTR_LOOP); + sp1C.x = 124; + sp1C.y = 0; + sp1C.z = -180; + for (temp_r31 = 0; temp_r31 <= 40; temp_r31++) { + temp_f31 = temp_r31 / 40.0f; + Hu3DModelPosSet(lbl_1_bss_2D0, temp_f31 * sp1C.x, temp_f31 * sp1C.y, (temp_f31 * sp1C.z) + 250.0f); + if (temp_r31 <= 20) { + temp_f30 = atan2d(sp1C.x, sp1C.z) - 180.0; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f30 * (temp_r31 / 20.0)) + 180.0, 0); + } + if (temp_r31 > 30) { + temp_r29 = temp_r31 - 30; + temp_f30 = atan2d(sp1C.x, sp1C.z) - 180.0; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f30 * (1.0 - (temp_r29 / 10.0))) + 180.0, 0); + } + HuPrcVSleep(); + } + lbl_1_bss_2D6 = -1; + fn_1_9418(0); + temp_r26 = fn_1_8DD0(0); + lbl_1_bss_2D6 = lbl_1_bss_320[temp_r26]; + HuAudFXPlay(1859); + fn_1_9CAC(0, temp_r26); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + lbl_1_bss_328[0].x = lbl_1_bss_328[0].y = lbl_1_bss_328[0].z = (0.1 * sind(temp_r31 * 18.0)) + 0.3; + HuPrcVSleep(); + } + HuPrcSleep(40); + Hu3DModelAttrSet(lbl_1_bss_199C2[64], HU3D_ATTR_DISPOFF); + fn_1_8180(9); + Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 10) { + Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (90.0 * (temp_r31 / 10.0)) + 180.0, 0); + } + if (temp_r31 == 10) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 > 10 && temp_r31 <= 25) { + temp_r29 = temp_r31 - 10; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (90.0 * (temp_r29 / 15.0)) + 180.0, 0); + } + if (temp_r31 == 25) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + } + Hu3DModelPosSet(lbl_1_bss_199C2[22], (-300.0 * (1.0 - cosd(3.0 * temp_r31))) + (-160.0), 0, 155); + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_199C2[22], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_199C2[26], HU3D_ATTR_DISPOFF); + Hu3DMotionSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28]); + Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, 90, 0); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + Hu3DModelPosSet(lbl_1_bss_199C2[26], (-300.0 * cosd(1.5 * temp_r31)) + (-160.0), 0, 155); + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[27], 0, 10, HU3D_MOTATTR_LOOP); + } + HuPrcVSleep(); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1C, 0x02)); + temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); + HuWinExAnimIn(temp_r30); + HuWinMesPalSet(temp_r30, 7, 0, 0, 0); + fn_1_6D80(temp_r30); + HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D6].character, 0); + HuWinMesSet(temp_r30, MAKE_MESSID(0x1C, 0x02)); + HuWinMesWait(temp_r30); + HuWinExAnimOut(temp_r30); + HuWinExCleanup(temp_r30); + HuWinComKeyReset(); + Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_f31 = temp_r31 / 20.0f; + Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, (temp_f31 * 90.0f) + 90.0f, 0); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[27], 0, 10, HU3D_MOTATTR_LOOP); + fn_1_861C(1); + Hu3DModelAttrReset(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(1862); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_f31 = 1.0 - (temp_r31 / 20.0f); + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f31 * 90.0f) + 180.0f, 0); + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + while (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) < lbl_1_data_140[1]) { + if (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 128.0f) { + HuAudFXPlay(1850); + } + if (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 200.0f) { + HuAudFXPlay(1863); + } + HuPrcVSleep(); + } + HuAudFXPlay(1857); + Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_140[1]); + Hu3DModelAttrSet(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + HuPrcSleep(20); + lbl_1_bss_2D4 = -1; + fn_1_9418(1); + temp_r26 = fn_1_8DD0(1); + lbl_1_bss_2D4 = lbl_1_bss_320[temp_r26]; + HuAudFXPlay(1860); + fn_1_9CAC(1, temp_r26); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + lbl_1_bss_328[1].x = lbl_1_bss_328[1].y = lbl_1_bss_328[1].z = (0.1 * sind(temp_r31 * 18.0)) + 0.3; + HuPrcVSleep(); + } + HuPrcSleep(40); + Hu3DModelAttrSet(lbl_1_bss_199C2[64], HU3D_ATTR_DISPOFF); + fn_1_8180(9); + Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 10) { + Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, (90.0 * (temp_r31 / 10.0)) + 180.0, 0); + } + if (temp_r31 == 10) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 > 10 && temp_r31 <= 25) { + temp_r29 = temp_r31 - 10; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (90.0 * (temp_r29 / 15.0)) + 180.0, 0); + } + if (temp_r31 == 25) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + } + Hu3DModelPosSet(lbl_1_bss_199C2[26], (-400.0 * (1.0 - cosd(3.0 * temp_r31))) + (-160.0), 0, 155); + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_199C2[26], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_199C2[30], HU3D_ATTR_DISPOFF); + Hu3DMotionSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32]); + Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, 90, 0); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + Hu3DModelPosSet(lbl_1_bss_199C2[30], (-400.0 * cosd(1.5 * temp_r31)) + (-160.0), 100, 155); + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[31], 0, 10, HU3D_MOTATTR_LOOP); + } + HuPrcVSleep(); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1C, 0x03)); + temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); + HuWinExAnimIn(temp_r30); + HuWinMesPalSet(temp_r30, 7, 0, 0, 0); + fn_1_6D80(temp_r30); + HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D6].character, 0); + HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D4].character, 2); + HuWinMesSet(temp_r30, MAKE_MESSID(0x1C, 0x03)); + HuWinMesWait(temp_r30); + HuWinExAnimOut(temp_r30); + HuWinExCleanup(temp_r30); + HuWinComKeyReset(); + Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_f31 = temp_r31 / 20.0f; + Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, (temp_f31 * 90.0f) + 90.0f, 0); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[31], 0, 10, HU3D_MOTATTR_LOOP); + fn_1_861C(2); + Hu3DModelAttrReset(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(1862); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_f31 = 1.0 - (temp_r31 / 20.0f); + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (temp_f31 * 90.0f) + 180.0f, 0); + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + while (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) < lbl_1_data_140[2]) { + if (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 300.0f) { + HuAudFXPlay(1850); + } + if (Hu3DMotionTimeGet(lbl_1_bss_199C2[9]) == 372.0f) { + HuAudFXPlay(1863); + } + HuPrcVSleep(); + } + HuAudFXPlay(1857); + Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_140[2]); + Hu3DModelAttrSet(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + HuPrcSleep(20); + lbl_1_bss_2D2 = -1; + fn_1_9418(2); + temp_r26 = fn_1_8DD0(2); + lbl_1_bss_2D2 = temp_r26; + HuAudFXPlay(1861); + fn_1_9CAC(2, temp_r26); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + lbl_1_bss_328[2].x = lbl_1_bss_328[2].y = lbl_1_bss_328[2].z = (0.1 * sind(temp_r31 * 18.0)) + 0.3; + HuPrcVSleep(); + } + HuPrcSleep(40); + Hu3DModelAttrSet(lbl_1_bss_199C2[64], HU3D_ATTR_DISPOFF); + fn_1_8180(9); + Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32], 0, 10, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 10) { + Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, (90.0 * (temp_r31 / 10.0)) + 180.0, 0); + } + if (temp_r31 == 10) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 > 10 && temp_r31 <= 25) { + temp_r29 = temp_r31 - 10; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, (90.0 * (temp_r29 / 15.0)) + 180.0, 0); + } + if (temp_r31 == 25) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + } + Hu3DModelPosSet(lbl_1_bss_199C2[30], (-400.0 * (1.0 - cosd(3.0 * temp_r31))) + (-160.0), 100, 155); + HuPrcVSleep(); + } + HuAudFXPlay(1862); + Hu3DModelAttrReset(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + while (Hu3DMotionEndCheck(lbl_1_bss_199C2[9]) == 0) { + HuPrcVSleep(); + } + Hu3DModelAttrReset(lbl_1_bss_199C2[11], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(1855); + Hu3DModelAttrSet(lbl_1_bss_199C2[11], HU3D_MOTATTR_REV); + while (Hu3DMotionTimeGet(lbl_1_bss_199C2[11]) > 0.0f) { + if (Hu3DMotionTimeGet(lbl_1_bss_199C2[11]) == 25.0f) { + HuAudFXPlay(1854); + } + HuPrcVSleep(); + } + HuAudFXPlay(1856); + Hu3DModelAttrReset(lbl_1_bss_199C2[34], HU3D_ATTR_DISPOFF); + Hu3DMotionSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[36]); + Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, 90, 0); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + Hu3DModelPosSet(lbl_1_bss_199C2[34], -154.0 + (-500.0 * (1.0 - (temp_r31 / 60.0f))), 0, -403); + if (temp_r31 > 20) { + temp_r29 = temp_r31 - 40; + Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, (30.0 * (1.0 - (temp_r29 / 20.0f))) + 60.0, 0); + } + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[35], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 == 40) { + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 >= 40) { + temp_r29 = temp_r31 - 40; + Hu3DModelRotSet(lbl_1_bss_2D0, 0, -90.0 - (45.0 * (temp_r29 / 20.0)), 0); + } + HuPrcVSleep(); + } + fn_1_8180(7); + temp_r23 = &Hu3DData[lbl_1_bss_2D0]; + sp1C.x = 0; + sp1C.y = 0; + sp1C.z = -200; + sp10 = temp_r23->pos; + VECSubtract(&sp1C, &sp10, &sp1C); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + temp_f31 = temp_r31 / 30.0; + Hu3DModelPosSet(lbl_1_bss_2D0, (temp_f31 * sp1C.x) + sp10.x, (temp_f31 * sp1C.y) + sp10.y, (temp_f31 * sp1C.z) + sp10.z); + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + BoardStatusShowSet(lbl_1_bss_2D6, 1); + BoardStatusShowSet(lbl_1_bss_2D4, 1); + sp1C.x = -112; + sp1C.y = 200; + sp1C.z = 0; + BoardStatusPosSet(lbl_1_bss_2D6, &sp1C); + sp1C.x = 688; + sp1C.y = 200; + sp1C.z = 0; + BoardStatusPosSet(lbl_1_bss_2D4, &sp1C); + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + if (temp_r31 > 10) { + temp_r29 = temp_r31 - 10; + sp1C.x = 138.0 - (250.0 * cosd(temp_r29 * 9.0)); + sp1C.y = 200; + sp1C.z = 0; + BoardStatusTargetPosSet(lbl_1_bss_2D6, &sp1C); + sp1C.x = 438.0 + (250.0 * cosd(temp_r29 * 9.0)); + sp1C.y = 200; + sp1C.z = 0; + BoardStatusTargetPosSet(lbl_1_bss_2D4, &sp1C); + } + HuPrcVSleep(); + } + temp_r25 = 1; + switch (lbl_1_bss_2D2) { + case 0: + if (GWPlayer[lbl_1_bss_2D6].coins <= 0 && GWPlayer[lbl_1_bss_2D4].coins <= 0) { + temp_r28 = MAKE_MESSID(0x1C, 0x16); + temp_r25 = 0; + } + else { + temp_r28 = MAKE_MESSID(0x1C, 0x06); + } + temp_r24 = MAKE_MESSID(0x1C, 0x09); + break; + + case 1: + if (GWPlayer[lbl_1_bss_2D6].coins <= 0 && GWPlayer[lbl_1_bss_2D4].coins <= 0 && GWPlayer[lbl_1_bss_2D6].stars <= 0 + && GWPlayer[lbl_1_bss_2D4].stars <= 0) { + temp_r25 = 0; + temp_r28 = MAKE_MESSID(0x1C, 0x17); + } + else { + temp_r28 = MAKE_MESSID(0x1C, 0x06); + } + temp_r24 = MAKE_MESSID(0x1C, 0x0D); + break; + + case 2: + if (GWPlayer[lbl_1_bss_2D6].stars > 0) { + temp_r28 = MAKE_MESSID(0x1C, 0x04); + } + else { + temp_r28 = MAKE_MESSID(0x1C, 0x08); + temp_r25 = 0; + } + temp_r24 = MAKE_MESSID(0x1C, 0x0A); + break; + + case 3: + if (GWPlayer[lbl_1_bss_2D6].stars <= 0 && GWPlayer[lbl_1_bss_2D4].stars <= 0) { + temp_r25 = 0; + temp_r28 = MAKE_MESSID(0x1C, 0x15); + } + else { + temp_r28 = MAKE_MESSID(0x1C, 0x06); + } + temp_r24 = MAKE_MESSID(0x1C, 0x0E); + break; + + case 4: + if (GWPlayer[lbl_1_bss_2D6].stars > 0) { + temp_r28 = MAKE_MESSID(0x1C, 0x04); + } + else { + temp_r28 = MAKE_MESSID(0x1C, 0x08); + temp_r25 = 0; + } + temp_r24 = MAKE_MESSID(0x1C, 0x0C); + break; + + case 5: + case 6: + if (GWPlayer[lbl_1_bss_2D6].coins > 0) { + temp_r28 = MAKE_MESSID(0x1C, 0x04); + } + else { + temp_r28 = MAKE_MESSID(0x1C, 0x07); + temp_r25 = 0; + } + temp_r24 = MAKE_MESSID(0x1C, 0x0B); + break; + + default: + break; + } + HuWinInsertMesSizeGet((8 + GWPlayerCfg[lbl_1_bss_2D6].character) - 8, 0); + HuWinInsertMesSizeGet(temp_r24, 1); + HuWinInsertMesSizeGet((8 + GWPlayerCfg[lbl_1_bss_2D4].character) - 8, 2); + HuWinMesMaxSizeGet(1, sp8, temp_r28); + temp_r30 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); + HuWinExAnimIn(temp_r30); + HuWinMesPalSet(temp_r30, 7, 0, 0, 0); + HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D6].character, 0); + HuWinInsertMesSet(temp_r30, temp_r24, 1); + HuWinInsertMesSet(temp_r30, GWPlayerCfg[lbl_1_bss_2D4].character, 2); + fn_1_6D80(temp_r30); + HuWinMesSet(temp_r30, temp_r28); + HuWinMesWait(temp_r30); + HuWinExAnimOut(temp_r30); + HuWinExCleanup(temp_r30); + HuWinComKeyReset(); + if (temp_r25) { + fn_1_4DEC(); + HuPrcSleep(60); + } + else { + HuPrcSleep(30); + } + sp1C.x = -112; + sp1C.y = 200; + sp1C.z = 0; + BoardStatusTargetPosSet(lbl_1_bss_2D6, &sp1C); + sp1C.x = 688; + sp1C.y = 200; + sp1C.z = 0; + BoardStatusTargetPosSet(lbl_1_bss_2D4, &sp1C); + while (!BoardStatusStopCheck(lbl_1_bss_2D6)) { + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + for (temp_r27 = 0; temp_r27 < 3; temp_r27++) { + lbl_1_bss_34C[temp_r27].y = (180.0 * cosd(4.5 * temp_r31)) - 100.0; + } + HuPrcVSleep(); + } + fn_1_3B7C(); + lbl_1_bss_2FC = 1; + while (1) { + lbl_1_bss_288[0] += 10.0f; + HuPrcVSleep(); + } } void fn_1_3B7C(void) { - float temp_f31; - s16 temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - float sp8[2]; - fn_1_8180(8); - for(temp_r30=0; temp_r30<100; temp_r30++) { - temp_r31 = temp_r30; - if(temp_r31 == 0) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[36], 0, 10, 0x40000001); - } - if(temp_r31 <= 20) { - Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, (30.0*(temp_r31/20.0))+60.0, 0); - } - if(temp_r31 > 10 && temp_r31 <= 60) { - temp_r29 = temp_r31-10; - Hu3DModelPosSet(lbl_1_bss_199C2[34], -154.0f+(354.0*(temp_r29/50.0)), 0, -403); - } - if(temp_r31 > 50 && temp_r31 <= 70) { - temp_r29 = temp_r31-50; - Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, (110.0*(1.0-(temp_r29/20.0)))+ -20.0, 0); - } - if(temp_r31 == 70) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[35], 0, 10, 0x40000001); - } - temp_r31 = temp_r30; - if(temp_r31 == 0) { - Hu3DMotionSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20]); - temp_f31 = atan2d(400.0, 200.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, temp_f31, 0); - Hu3DModelAttrReset(lbl_1_bss_199C2[18], 1); - } - if(temp_r31 <= 50) { - Hu3DModelPosSet(lbl_1_bss_199C2[18], 400.0*(1.0-(temp_r31/50.0)), 0, -553.0+(200.0*(1.0-(temp_r31/50.0)))); - } - if(temp_r31 > 40 && temp_r31 <= 60) { - temp_r29 = temp_r31-40; - temp_f31 = atan2d(400.0, 200.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, temp_f31*(1.0-(temp_r29/20.0)), 0); - } - if(temp_r31 == 60) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[19], 0, 10, 0x40000001); - } - if(temp_r30 >= 20) { - temp_r31 = temp_r30-20; - if(temp_r31 == 0) { - Hu3DMotionSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28]); - temp_f31 = atan2d(-300.0, 200.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, temp_f31, 0); - Hu3DModelAttrReset(lbl_1_bss_199C2[26], 1); - } - if(temp_r31 <= 40) { - Hu3DModelPosSet(lbl_1_bss_199C2[26], -100.0+(-300.0*(1.0-(temp_r31/40.0))), 0, -478.0+(200.0*(1.0-(temp_r31/40.0)))); - } - if(temp_r31 > 30 && temp_r31 <= 50) { - temp_r29 = temp_r31-30; - temp_f31 = atan2d(-300.0, 200.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, (temp_f31-10.0f)*(1.0-(temp_r29/20.0))+10.0, 0); - } - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[27], 0, 10, 0x40000001); - } - } - if(temp_r30 >= 30) { - temp_r31 = temp_r30-30; - if(temp_r31 == 0) { - Hu3DMotionSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32]); - temp_f31 = atan2d(200.0, 500.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, temp_f31, 0); - Hu3DModelAttrReset(lbl_1_bss_199C2[30], 1); - } - if(temp_r31 <= 40) { - Hu3DModelPosSet(lbl_1_bss_199C2[30], 100.0+(200.0*(1.0-(temp_r31/40.0))), 100, -478.0+(500.0*(1.0-(temp_r31/40.0)))); - } - if(temp_r31 > 30 && temp_r31 <= 50) { - temp_r29 = temp_r31-30; - temp_f31 = atan2d(200.0, 500.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, (temp_f31- -10.0f)*(1.0-(temp_r29/20.0))+ -10.0, 0); - } - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[31], 0, 10, 0x40000001); - } - } - if(temp_r30 >= 40) { - temp_r31 = temp_r30-40; - if(temp_r31 == 0) { - Hu3DMotionSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24]); - temp_f31 = atan2d(-300.0, 100.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, temp_f31, 0); - Hu3DModelAttrReset(lbl_1_bss_199C2[22], 1); - } - if(temp_r31 <= 40) { - Hu3DModelPosSet(lbl_1_bss_199C2[22], -200.0+(-300.0*(1.0-(temp_r31/40.0))), 0, -403.0+(100.0*(1.0-(temp_r31/40.0)))); - } - if(temp_r31 > 30 && temp_r31 <= 50) { - temp_r29 = temp_r31-30; - temp_f31 = atan2d(-300.0, 100.0)+180.0; - Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (temp_f31-20.0f)*(1.0-(temp_r29/20.0))+20.0, 0); - } - if(temp_r31 == 50) { - Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[23], 0, 10, 0x40000001); - } - } - if(temp_r30 >= 30) { - temp_r31 = temp_r30-30; - if(temp_r31 == 0) { - Hu3DMotionShiftSet(lbl_1_bss_2D0, lbl_1_bss_2C0[1], 0, 10, 0x40000001); - } - if(temp_r31 <= 20) { - Hu3DModelRotSet(lbl_1_bss_2D0, 0, -135.0-(45.0*(temp_r31/20.0)), 0); - } - if(temp_r31 == 20) { - Hu3DMotionShiftSet(lbl_1_bss_2D0, lbl_1_bss_2C0[0], 0, 10, 0x40000001); - } - } - HuPrcVSleep(); - } - HuWinMesMaxSizeGet(1, sp8, 0x1C0005); - temp_r28 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); - HuWinExAnimIn(temp_r28); - HuWinMesPalSet(temp_r28, 7, 0, 0, 0); - fn_1_6D80(temp_r28); - HuAudFXPlay(55); - HuAudFXPlay(64); - HuAudFXPlay(67); - HuAudFXPlay(70); - HuAudFXPlay(75); - HuWinMesSet(temp_r28, 0x1C0005); - HuWinMesWait(temp_r28); - HuWinExAnimOut(temp_r28); - HuWinExCleanup(temp_r28); - HuWinComKeyReset(); - Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[21], 0, 10, 0x40000001); - HuPrcSleep(5); - Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[25], 0, 10, 0x40000001); - Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[29], 0, 10, 0x40000001); - HuPrcSleep(10); - Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[33], 0, 10, 0x40000001); - HuPrcSleep(10); - Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[37], 0, 10, 0x40000001); + float temp_f31; + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + float sp8[2]; + fn_1_8180(8); + for (temp_r30 = 0; temp_r30 < 100; temp_r30++) { + temp_r31 = temp_r30; + if (temp_r31 == 0) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[36], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 <= 20) { + Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, (30.0 * (temp_r31 / 20.0)) + 60.0, 0); + } + if (temp_r31 > 10 && temp_r31 <= 60) { + temp_r29 = temp_r31 - 10; + Hu3DModelPosSet(lbl_1_bss_199C2[34], -154.0f + (354.0 * (temp_r29 / 50.0)), 0, -403); + } + if (temp_r31 > 50 && temp_r31 <= 70) { + temp_r29 = temp_r31 - 50; + Hu3DModelRotSet(lbl_1_bss_199C2[34], 0, (110.0 * (1.0 - (temp_r29 / 20.0))) + -20.0, 0); + } + if (temp_r31 == 70) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[35], 0, 10, HU3D_MOTATTR_LOOP); + } + temp_r31 = temp_r30; + if (temp_r31 == 0) { + Hu3DMotionSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20]); + temp_f31 = atan2d(400.0, 200.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, temp_f31, 0); + Hu3DModelAttrReset(lbl_1_bss_199C2[18], HU3D_ATTR_DISPOFF); + } + if (temp_r31 <= 50) { + Hu3DModelPosSet(lbl_1_bss_199C2[18], 400.0 * (1.0 - (temp_r31 / 50.0)), 0, -553.0 + (200.0 * (1.0 - (temp_r31 / 50.0)))); + } + if (temp_r31 > 40 && temp_r31 <= 60) { + temp_r29 = temp_r31 - 40; + temp_f31 = atan2d(400.0, 200.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[18], 0, temp_f31 * (1.0 - (temp_r29 / 20.0)), 0); + } + if (temp_r31 == 60) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[19], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r30 >= 20) { + temp_r31 = temp_r30 - 20; + if (temp_r31 == 0) { + Hu3DMotionSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28]); + temp_f31 = atan2d(-300.0, 200.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, temp_f31, 0); + Hu3DModelAttrReset(lbl_1_bss_199C2[26], HU3D_ATTR_DISPOFF); + } + if (temp_r31 <= 40) { + Hu3DModelPosSet(lbl_1_bss_199C2[26], -100.0 + (-300.0 * (1.0 - (temp_r31 / 40.0))), 0, -478.0 + (200.0 * (1.0 - (temp_r31 / 40.0)))); + } + if (temp_r31 > 30 && temp_r31 <= 50) { + temp_r29 = temp_r31 - 30; + temp_f31 = atan2d(-300.0, 200.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[26], 0, (temp_f31 - 10.0f) * (1.0 - (temp_r29 / 20.0)) + 10.0, 0); + } + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[27], 0, 10, HU3D_MOTATTR_LOOP); + } + } + if (temp_r30 >= 30) { + temp_r31 = temp_r30 - 30; + if (temp_r31 == 0) { + Hu3DMotionSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[32]); + temp_f31 = atan2d(200.0, 500.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, temp_f31, 0); + Hu3DModelAttrReset(lbl_1_bss_199C2[30], HU3D_ATTR_DISPOFF); + } + if (temp_r31 <= 40) { + Hu3DModelPosSet(lbl_1_bss_199C2[30], 100.0 + (200.0 * (1.0 - (temp_r31 / 40.0))), 100, -478.0 + (500.0 * (1.0 - (temp_r31 / 40.0)))); + } + if (temp_r31 > 30 && temp_r31 <= 50) { + temp_r29 = temp_r31 - 30; + temp_f31 = atan2d(200.0, 500.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[30], 0, (temp_f31 - -10.0f) * (1.0 - (temp_r29 / 20.0)) + -10.0, 0); + } + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[31], 0, 10, HU3D_MOTATTR_LOOP); + } + } + if (temp_r30 >= 40) { + temp_r31 = temp_r30 - 40; + if (temp_r31 == 0) { + Hu3DMotionSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24]); + temp_f31 = atan2d(-300.0, 100.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, temp_f31, 0); + Hu3DModelAttrReset(lbl_1_bss_199C2[22], HU3D_ATTR_DISPOFF); + } + if (temp_r31 <= 40) { + Hu3DModelPosSet(lbl_1_bss_199C2[22], -200.0 + (-300.0 * (1.0 - (temp_r31 / 40.0))), 0, -403.0 + (100.0 * (1.0 - (temp_r31 / 40.0)))); + } + if (temp_r31 > 30 && temp_r31 <= 50) { + temp_r29 = temp_r31 - 30; + temp_f31 = atan2d(-300.0, 100.0) + 180.0; + Hu3DModelRotSet(lbl_1_bss_199C2[22], 0, (temp_f31 - 20.0f) * (1.0 - (temp_r29 / 20.0)) + 20.0, 0); + } + if (temp_r31 == 50) { + Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[23], 0, 10, HU3D_MOTATTR_LOOP); + } + } + if (temp_r30 >= 30) { + temp_r31 = temp_r30 - 30; + if (temp_r31 == 0) { + Hu3DMotionShiftSet(lbl_1_bss_2D0, lbl_1_bss_2C0[1], 0, 10, HU3D_MOTATTR_LOOP); + } + if (temp_r31 <= 20) { + Hu3DModelRotSet(lbl_1_bss_2D0, 0, -135.0 - (45.0 * (temp_r31 / 20.0)), 0); + } + if (temp_r31 == 20) { + Hu3DMotionShiftSet(lbl_1_bss_2D0, lbl_1_bss_2C0[0], 0, 10, HU3D_MOTATTR_LOOP); + } + } + HuPrcVSleep(); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1C, 0x05)); + temp_r28 = HuWinExCreateStyled(-10000, 340, sp8[0], sp8[1], -1, 1); + HuWinExAnimIn(temp_r28); + HuWinMesPalSet(temp_r28, 7, 0, 0, 0); + fn_1_6D80(temp_r28); + HuAudFXPlay(55); + HuAudFXPlay(64); + HuAudFXPlay(67); + HuAudFXPlay(70); + HuAudFXPlay(75); + HuWinMesSet(temp_r28, MAKE_MESSID(0x1C, 0x05)); + HuWinMesWait(temp_r28); + HuWinExAnimOut(temp_r28); + HuWinExCleanup(temp_r28); + HuWinComKeyReset(); + Hu3DMotionShiftSet(lbl_1_bss_199C2[18], lbl_1_bss_1990E[21], 0, 10, HU3D_MOTATTR_LOOP); + HuPrcSleep(5); + Hu3DMotionShiftSet(lbl_1_bss_199C2[22], lbl_1_bss_1990E[25], 0, 10, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(lbl_1_bss_199C2[26], lbl_1_bss_1990E[29], 0, 10, HU3D_MOTATTR_LOOP); + HuPrcSleep(10); + Hu3DMotionShiftSet(lbl_1_bss_199C2[30], lbl_1_bss_1990E[33], 0, 10, HU3D_MOTATTR_LOOP); + HuPrcSleep(10); + Hu3DMotionShiftSet(lbl_1_bss_199C2[34], lbl_1_bss_1990E[37], 0, 10, HU3D_MOTATTR_LOOP); } void fn_1_55B0(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4); void fn_1_4DEC(void) { - s16 coins; - s16 stars; - switch(lbl_1_bss_2D2) { - case 0: - lbl_1_bss_4 = 2; - if(GWPlayer[lbl_1_bss_2D6].coins >= GWPlayer[lbl_1_bss_2D4].coins) { - fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 1); - fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 0); - } else { - fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 0); - fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 1); - } - break; - - case 1: - lbl_1_bss_4 = 2; - if(GWPlayer[lbl_1_bss_2D6].coins >= GWPlayer[lbl_1_bss_2D4].coins) { - fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 1); - fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 0); - } else { - fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 0); - fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 1); - } - while(lbl_1_bss_4 != 0) { - HuPrcVSleep(); - } - lbl_1_bss_4 = 2; - if(GWPlayer[lbl_1_bss_2D6].stars >= GWPlayer[lbl_1_bss_2D4].stars) { - fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 1); - fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 0); - } else { - fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 0); - fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 1); - } - break; - - case 2: - lbl_1_bss_4 = 1; - fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, 1, 1); - break; - - case 3: - lbl_1_bss_4 = 2; - if(GWPlayer[lbl_1_bss_2D6].stars >= GWPlayer[lbl_1_bss_2D4].stars) { - fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 1); - fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 0); - } else { - fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 0); - fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 1); - } - break; - - case 4: - lbl_1_bss_4 = 1; - if(GWPlayer[lbl_1_bss_2D6].stars < 2) { - stars = GWPlayer[lbl_1_bss_2D6].stars; - } else { - stars = 2; - } - fn_1_55B0(1, lbl_1_bss_2D6, lbl_1_bss_2D4, stars, 1); - break; - - case 5: - case 6: - lbl_1_bss_4 = 1; - if(GWPlayer[lbl_1_bss_2D6].coins < 20) { - coins = GWPlayer[lbl_1_bss_2D6].coins; - } else { - coins = 20; - } - fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, coins, 1); - break; - - default: - break; - } - while(lbl_1_bss_4 > 0) { - HuPrcVSleep(); - } + s16 coins; + s16 stars; + switch (lbl_1_bss_2D2) { + case 0: + lbl_1_bss_4 = 2; + if (GWPlayer[lbl_1_bss_2D6].coins >= GWPlayer[lbl_1_bss_2D4].coins) { + fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 1); + fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 0); + } + else { + fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 0); + fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 1); + } + break; + + case 1: + lbl_1_bss_4 = 2; + if (GWPlayer[lbl_1_bss_2D6].coins >= GWPlayer[lbl_1_bss_2D4].coins) { + fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 1); + fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 0); + } + else { + fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].coins, 0); + fn_1_55B0(3, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].coins, 1); + } + while (lbl_1_bss_4 != 0) { + HuPrcVSleep(); + } + lbl_1_bss_4 = 2; + if (GWPlayer[lbl_1_bss_2D6].stars >= GWPlayer[lbl_1_bss_2D4].stars) { + fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 1); + fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 0); + } + else { + fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 0); + fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 1); + } + break; + + case 2: + lbl_1_bss_4 = 1; + fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, 1, 1); + break; + + case 3: + lbl_1_bss_4 = 2; + if (GWPlayer[lbl_1_bss_2D6].stars >= GWPlayer[lbl_1_bss_2D4].stars) { + fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 1); + fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 0); + } + else { + fn_1_55B0(0, lbl_1_bss_2D6, lbl_1_bss_2D4, GWPlayer[lbl_1_bss_2D6].stars, 0); + fn_1_55B0(1, lbl_1_bss_2D4, lbl_1_bss_2D6, GWPlayer[lbl_1_bss_2D4].stars, 1); + } + break; + + case 4: + lbl_1_bss_4 = 1; + if (GWPlayer[lbl_1_bss_2D6].stars < 2) { + stars = GWPlayer[lbl_1_bss_2D6].stars; + } + else { + stars = 2; + } + fn_1_55B0(1, lbl_1_bss_2D6, lbl_1_bss_2D4, stars, 1); + break; + + case 5: + case 6: + lbl_1_bss_4 = 1; + if (GWPlayer[lbl_1_bss_2D6].coins < 20) { + coins = GWPlayer[lbl_1_bss_2D6].coins; + } + else { + coins = 20; + } + fn_1_55B0(2, lbl_1_bss_2D6, lbl_1_bss_2D4, coins, 1); + break; + + default: + break; + } + while (lbl_1_bss_4 > 0) { + HuPrcVSleep(); + } } typedef struct work_5774 { - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6[20]; - s16 unk2E[20]; - float unk58; - s32 unk5C; + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6[20]; + s16 unk2E[20]; + float unk58; + s32 unk5C; } Work5774; void fn_1_5774(void); @@ -947,552 +957,558 @@ void fn_1_5E68(void); void fn_1_55B0(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4) { - Work5774 *work; - Process *newProcess; - float temp_f31; - - if(arg3 == 0) { - lbl_1_bss_4--; - return; - } - switch(arg0) { - case 0: - newProcess = HuPrcChildCreate(fn_1_5774, 100, 8192, 0, lbl_1_bss_308); - temp_f31 = -100; - break; - - case 1: - newProcess = HuPrcChildCreate(fn_1_5774, 100, 8192, 0, lbl_1_bss_308); - temp_f31 = -50; - break; - - case 2: - newProcess = HuPrcChildCreate(fn_1_5E68, 100, 8192, 0, lbl_1_bss_308); - temp_f31 = -100; - break; - - case 3: - newProcess = HuPrcChildCreate(fn_1_5E68, 100, 8192, 0, lbl_1_bss_308); - temp_f31 = -50; - break; - } - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work5774), MEMORY_DEFAULT_NUM); - newProcess->user_data = work; - work->unk0 = arg1; - work->unk2 = arg2; - work->unk4 = arg3; - work->unk58 = temp_f31; - work->unk5C = arg4; + Work5774 *work; + Process *newProcess; + float temp_f31; + + if (arg3 == 0) { + lbl_1_bss_4--; + return; + } + switch (arg0) { + case 0: + newProcess = HuPrcChildCreate(fn_1_5774, 100, 8192, 0, lbl_1_bss_308); + temp_f31 = -100; + break; + + case 1: + newProcess = HuPrcChildCreate(fn_1_5774, 100, 8192, 0, lbl_1_bss_308); + temp_f31 = -50; + break; + + case 2: + newProcess = HuPrcChildCreate(fn_1_5E68, 100, 8192, 0, lbl_1_bss_308); + temp_f31 = -100; + break; + + case 3: + newProcess = HuPrcChildCreate(fn_1_5E68, 100, 8192, 0, lbl_1_bss_308); + temp_f31 = -50; + break; + } + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work5774), MEMORY_DEFAULT_NUM); + newProcess->user_data = work; + work->unk0 = arg1; + work->unk2 = arg2; + work->unk4 = arg3; + work->unk58 = temp_f31; + work->unk5C = arg4; } void fn_1_5774(void) { - float temp_f31; - float temp_f30; - - Work5774 *temp_r31; - s16 temp_r30; - s16 temp_r29; - Process *temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - s16 temp_r23; - s32 temp_r22; - s32 temp_r21; - - Vec sp20; - Vec sp14; - Vec sp8; - - temp_r28 = HuPrcCurrentGet(); - temp_r31 = temp_r28->user_data; - temp_r23 = 0; - BoardStatusPosGet(temp_r31->unk0, &sp20); - BoardStatusPosGet(temp_r31->unk2, &sp14); - for(temp_r30=0; temp_r30<20; temp_r30++) { - temp_r31->unk6[temp_r30] = -1; - } - temp_r25 = temp_r31->unk4; - temp_r27 = temp_r25; - temp_f31 = 300/temp_r27; - if(temp_f31 < 15.0f) { - temp_r24 = 1; - } else { - temp_r24 = 3; - } - temp_f31 -= temp_r24+1; - if(temp_f31 < 15.0f) { - temp_f31 = 15.0f; - } - if(temp_f31 > 40.0f) { - temp_f31 = 40.0f; - } - if(temp_r31->unk5C) { - temp_r22 = HuAudFXPlay(1864); - temp_r21 = HuAudFXPlay(24); - } - while(1) { - if(temp_r25 > 0) { - if(((temp_r23++) & temp_r24) == 0) { - for(temp_r30=0; temp_r30<20; temp_r30++) { - if(lbl_1_bss_148[temp_r30][1] == 0) { - break; - } - } - if(temp_r30 != 20) { - for(temp_r29=0; temp_r29<20; temp_r29++) { - if(temp_r31->unk6[temp_r29] == -1) { - lbl_1_bss_148[temp_r30][1] = 1; - temp_r31->unk6[temp_r29] = temp_r30; - temp_r31->unk2E[temp_r29] = 0; - GWStarsSet(temp_r31->unk0, GWPlayer[temp_r31->unk0].stars-1); - temp_r25--; - break; - } - } - } - } - } - for(temp_r30=0; temp_r30<20; temp_r30++) { - if(temp_r31->unk6[temp_r30] == -1) { - continue; - } - temp_r26 = lbl_1_bss_148[temp_r31->unk6[temp_r30]][0]; - Hu3DModelAttrReset(temp_r26, 1); - temp_r31->unk2E[temp_r30]++; - if(temp_r31->unk2E[temp_r30] > temp_f31) { - Hu3DModelAttrSet(temp_r26, 1); - lbl_1_bss_148[temp_r31->unk6[temp_r30]][1] = 0; - temp_r31->unk6[temp_r30] = -1; - GWStarsSet(temp_r31->unk2, GWPlayer[temp_r31->unk2].stars+1); - temp_r27--; - } else { - temp_f30 = 0.1f; - if(temp_r31->unk2E[temp_r30] < temp_f31/2.0f) { - temp_f30 = 0.1*sind((90.0/(temp_f31/2.0f))*temp_r31->unk2E[temp_r30]); - } - if(temp_r31->unk2E[temp_r30] > temp_f31/2.0f) { - temp_f30 = 0.1*cosd((90.0/(temp_f31/2.0f))*(temp_r31->unk2E[temp_r30]-(temp_f31/2.0f))); - } - Hu3DModelScaleSet(temp_r26, temp_f30, temp_f30, temp_f30); - sp8.x = (sp14.x-sp20.x)*(temp_r31->unk2E[temp_r30]/temp_f31)+sp20.x; - sp8.y = sp20.y+(temp_r31->unk58*sind((180.0/temp_f31)*temp_r31->unk2E[temp_r30])); - sp8.z = 200; - Hu3D2Dto3D(&sp8, 1, &sp8); - Hu3DModelPosSetV(temp_r26, &sp8); - } - } - if(temp_r27 <= 0) { - break; - } - HuPrcVSleep(); - } - HuAudFXPlay(8); - if(temp_r31->unk5C) { - HuAudFXStop(temp_r22); - HuAudFXStop(temp_r21); - } - lbl_1_bss_4--; - HuMemDirectFree(temp_r28->user_data); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + float temp_f31; + float temp_f30; + + Work5774 *temp_r31; + s16 temp_r30; + s16 temp_r29; + Process *temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + s32 temp_r22; + s32 temp_r21; + + Vec sp20; + Vec sp14; + Vec sp8; + + temp_r28 = HuPrcCurrentGet(); + temp_r31 = temp_r28->user_data; + temp_r23 = 0; + BoardStatusPosGet(temp_r31->unk0, &sp20); + BoardStatusPosGet(temp_r31->unk2, &sp14); + for (temp_r30 = 0; temp_r30 < 20; temp_r30++) { + temp_r31->unk6[temp_r30] = -1; + } + temp_r25 = temp_r31->unk4; + temp_r27 = temp_r25; + temp_f31 = 300 / temp_r27; + if (temp_f31 < 15.0f) { + temp_r24 = 1; + } + else { + temp_r24 = 3; + } + temp_f31 -= temp_r24 + 1; + if (temp_f31 < 15.0f) { + temp_f31 = 15.0f; + } + if (temp_f31 > 40.0f) { + temp_f31 = 40.0f; + } + if (temp_r31->unk5C) { + temp_r22 = HuAudFXPlay(1864); + temp_r21 = HuAudFXPlay(24); + } + while (1) { + if (temp_r25 > 0) { + if (((temp_r23++) & temp_r24) == 0) { + for (temp_r30 = 0; temp_r30 < 20; temp_r30++) { + if (lbl_1_bss_148[temp_r30][1] == 0) { + break; + } + } + if (temp_r30 != 20) { + for (temp_r29 = 0; temp_r29 < 20; temp_r29++) { + if (temp_r31->unk6[temp_r29] == -1) { + lbl_1_bss_148[temp_r30][1] = 1; + temp_r31->unk6[temp_r29] = temp_r30; + temp_r31->unk2E[temp_r29] = 0; + GWStarsSet(temp_r31->unk0, GWPlayer[temp_r31->unk0].stars - 1); + temp_r25--; + break; + } + } + } + } + } + for (temp_r30 = 0; temp_r30 < 20; temp_r30++) { + if (temp_r31->unk6[temp_r30] == -1) { + continue; + } + temp_r26 = lbl_1_bss_148[temp_r31->unk6[temp_r30]][0]; + Hu3DModelAttrReset(temp_r26, HU3D_ATTR_DISPOFF); + temp_r31->unk2E[temp_r30]++; + if (temp_r31->unk2E[temp_r30] > temp_f31) { + Hu3DModelAttrSet(temp_r26, HU3D_ATTR_DISPOFF); + lbl_1_bss_148[temp_r31->unk6[temp_r30]][1] = 0; + temp_r31->unk6[temp_r30] = -1; + GWStarsSet(temp_r31->unk2, GWPlayer[temp_r31->unk2].stars + 1); + temp_r27--; + } + else { + temp_f30 = 0.1f; + if (temp_r31->unk2E[temp_r30] < temp_f31 / 2.0f) { + temp_f30 = 0.1 * sind((90.0 / (temp_f31 / 2.0f)) * temp_r31->unk2E[temp_r30]); + } + if (temp_r31->unk2E[temp_r30] > temp_f31 / 2.0f) { + temp_f30 = 0.1 * cosd((90.0 / (temp_f31 / 2.0f)) * (temp_r31->unk2E[temp_r30] - (temp_f31 / 2.0f))); + } + Hu3DModelScaleSet(temp_r26, temp_f30, temp_f30, temp_f30); + sp8.x = (sp14.x - sp20.x) * (temp_r31->unk2E[temp_r30] / temp_f31) + sp20.x; + sp8.y = sp20.y + (temp_r31->unk58 * sind((180.0 / temp_f31) * temp_r31->unk2E[temp_r30])); + sp8.z = 200; + Hu3D2Dto3D(&sp8, 1, &sp8); + Hu3DModelPosSetV(temp_r26, &sp8); + } + } + if (temp_r27 <= 0) { + break; + } + HuPrcVSleep(); + } + HuAudFXPlay(8); + if (temp_r31->unk5C) { + HuAudFXStop(temp_r22); + HuAudFXStop(temp_r21); + } + lbl_1_bss_4--; + HuMemDirectFree(temp_r28->user_data); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } void fn_1_5E68(void) { - float temp_f31; - float temp_f30; - - Work5774 *temp_r31; - s16 temp_r30; - s16 temp_r29; - Process *temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - s16 temp_r23; - s32 temp_r22; - s32 temp_r21; - - Vec sp20; - Vec sp14; - Vec sp8; - - temp_r28 = HuPrcCurrentGet(); - temp_r31 = temp_r28->user_data; - temp_r23 = 0; - BoardStatusPosGet(temp_r31->unk0, &sp20); - BoardStatusPosGet(temp_r31->unk2, &sp14); - for(temp_r30=0; temp_r30<20; temp_r30++) { - temp_r31->unk6[temp_r30] = -1; - } - temp_r25 = temp_r31->unk4; - temp_r27 = temp_r25; - temp_f31 = 300/temp_r27; - if(temp_f31 < 15.0f) { - temp_r24 = 1; - } else { - temp_r24 = 3; - } - temp_f31 -= temp_r24+1; - if(temp_f31 < 15.0f) { - temp_f31 = 15.0f; - } - if(temp_f31 > 40.0f) { - temp_f31 = 40.0f; - } - if(temp_r31->unk5C) { - temp_r22 = HuAudFXPlay(1864); - temp_r21 = HuAudFXPlay(23); - } - while(1) { - if(temp_r25 > 0) { - if(((temp_r23++) & temp_r24) == 0) { - for(temp_r30=0; temp_r30<20; temp_r30++) { - if(lbl_1_bss_8[temp_r30][1] == 0) { - break; - } - } - if(temp_r30 != 20) { - for(temp_r29=0; temp_r29<20; temp_r29++) { - if(temp_r31->unk6[temp_r29] == -1) { - lbl_1_bss_8[temp_r30][1] = 1; - temp_r31->unk6[temp_r29] = temp_r30; - temp_r31->unk2E[temp_r29] = 0; - GWCoinsSet(temp_r31->unk0, GWPlayer[temp_r31->unk0].coins-1); - temp_r25--; - break; - } - } - } - } - } - for(temp_r30=0; temp_r30<20; temp_r30++) { - if(temp_r31->unk6[temp_r30] == -1) { - continue; - } - temp_r26 = lbl_1_bss_8[temp_r31->unk6[temp_r30]][0]; - Hu3DModelAttrReset(temp_r26, 1); - temp_r31->unk2E[temp_r30]++; - if(temp_r31->unk2E[temp_r30] > temp_f31) { - Hu3DModelAttrSet(temp_r26, 1); - lbl_1_bss_8[temp_r31->unk6[temp_r30]][1] = 0; - temp_r31->unk6[temp_r30] = -1; - GWCoinsSet(temp_r31->unk2, GWPlayer[temp_r31->unk2].coins+1); - temp_r27--; - } else { - temp_f30 = 0.1f; - if(temp_r31->unk2E[temp_r30] < temp_f31/2.0f) { - temp_f30 = 0.1*sind((90.0/(temp_f31/2.0f))*temp_r31->unk2E[temp_r30]); - } - if(temp_r31->unk2E[temp_r30] > temp_f31/2.0f) { - temp_f30 = 0.1*cosd((90.0/(temp_f31/2.0f))*(temp_r31->unk2E[temp_r30]-(temp_f31/2.0f))); - } - Hu3DModelScaleSet(temp_r26, temp_f30, temp_f30, temp_f30); - sp8.x = (sp14.x-sp20.x)*(temp_r31->unk2E[temp_r30]/temp_f31)+sp20.x; - sp8.y = sp20.y+(temp_r31->unk58*sind((180.0/temp_f31)*temp_r31->unk2E[temp_r30])); - sp8.z = 200; - Hu3D2Dto3D(&sp8, 1, &sp8); - Hu3DModelPosSetV(temp_r26, &sp8); - } - } - if(temp_r27 <= 0) { - break; - } - HuPrcVSleep(); - } - HuAudFXPlay(7); - if(temp_r31->unk5C) { - HuAudFXStop(temp_r22); - HuAudFXStop(temp_r21); - } - lbl_1_bss_4--; - HuMemDirectFree(temp_r28->user_data); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + float temp_f31; + float temp_f30; + + Work5774 *temp_r31; + s16 temp_r30; + s16 temp_r29; + Process *temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + s32 temp_r22; + s32 temp_r21; + + Vec sp20; + Vec sp14; + Vec sp8; + + temp_r28 = HuPrcCurrentGet(); + temp_r31 = temp_r28->user_data; + temp_r23 = 0; + BoardStatusPosGet(temp_r31->unk0, &sp20); + BoardStatusPosGet(temp_r31->unk2, &sp14); + for (temp_r30 = 0; temp_r30 < 20; temp_r30++) { + temp_r31->unk6[temp_r30] = -1; + } + temp_r25 = temp_r31->unk4; + temp_r27 = temp_r25; + temp_f31 = 300 / temp_r27; + if (temp_f31 < 15.0f) { + temp_r24 = 1; + } + else { + temp_r24 = 3; + } + temp_f31 -= temp_r24 + 1; + if (temp_f31 < 15.0f) { + temp_f31 = 15.0f; + } + if (temp_f31 > 40.0f) { + temp_f31 = 40.0f; + } + if (temp_r31->unk5C) { + temp_r22 = HuAudFXPlay(1864); + temp_r21 = HuAudFXPlay(23); + } + while (1) { + if (temp_r25 > 0) { + if (((temp_r23++) & temp_r24) == 0) { + for (temp_r30 = 0; temp_r30 < 20; temp_r30++) { + if (lbl_1_bss_8[temp_r30][1] == 0) { + break; + } + } + if (temp_r30 != 20) { + for (temp_r29 = 0; temp_r29 < 20; temp_r29++) { + if (temp_r31->unk6[temp_r29] == -1) { + lbl_1_bss_8[temp_r30][1] = 1; + temp_r31->unk6[temp_r29] = temp_r30; + temp_r31->unk2E[temp_r29] = 0; + GWCoinsSet(temp_r31->unk0, GWPlayer[temp_r31->unk0].coins - 1); + temp_r25--; + break; + } + } + } + } + } + for (temp_r30 = 0; temp_r30 < 20; temp_r30++) { + if (temp_r31->unk6[temp_r30] == -1) { + continue; + } + temp_r26 = lbl_1_bss_8[temp_r31->unk6[temp_r30]][0]; + Hu3DModelAttrReset(temp_r26, HU3D_ATTR_DISPOFF); + temp_r31->unk2E[temp_r30]++; + if (temp_r31->unk2E[temp_r30] > temp_f31) { + Hu3DModelAttrSet(temp_r26, HU3D_ATTR_DISPOFF); + lbl_1_bss_8[temp_r31->unk6[temp_r30]][1] = 0; + temp_r31->unk6[temp_r30] = -1; + GWCoinsSet(temp_r31->unk2, GWPlayer[temp_r31->unk2].coins + 1); + temp_r27--; + } + else { + temp_f30 = 0.1f; + if (temp_r31->unk2E[temp_r30] < temp_f31 / 2.0f) { + temp_f30 = 0.1 * sind((90.0 / (temp_f31 / 2.0f)) * temp_r31->unk2E[temp_r30]); + } + if (temp_r31->unk2E[temp_r30] > temp_f31 / 2.0f) { + temp_f30 = 0.1 * cosd((90.0 / (temp_f31 / 2.0f)) * (temp_r31->unk2E[temp_r30] - (temp_f31 / 2.0f))); + } + Hu3DModelScaleSet(temp_r26, temp_f30, temp_f30, temp_f30); + sp8.x = (sp14.x - sp20.x) * (temp_r31->unk2E[temp_r30] / temp_f31) + sp20.x; + sp8.y = sp20.y + (temp_r31->unk58 * sind((180.0 / temp_f31) * temp_r31->unk2E[temp_r30])); + sp8.z = 200; + Hu3D2Dto3D(&sp8, 1, &sp8); + Hu3DModelPosSetV(temp_r26, &sp8); + } + } + if (temp_r27 <= 0) { + break; + } + HuPrcVSleep(); + } + HuAudFXPlay(7); + if (temp_r31->unk5C) { + HuAudFXStop(temp_r22); + HuAudFXStop(temp_r21); + } + lbl_1_bss_4--; + HuMemDirectFree(temp_r28->user_data); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } void fn_1_655C(void) { - s16 i; - s16 model; - - Vec pos; - Vec target; - Vec up; - Hu3DShadowCreate(20, 100, 5000); - Hu3DShadowTPLvlSet(0.3f); - Hu3DShadowSizeSet(192); - target.x = target.y = target.z = 0; - pos.x = -800; - pos.z = 1600; - pos.y = 3200; - up.x = 0; - up.y = 1; - up.z = 0; - Hu3DShadowPosSet(&pos, &up, &target); - Hu3DReflectMapSet(HuDataSelHeapReadNum(0x4B0023, MEMORY_DEFAULT_NUM, HEAP_DATA)); - for(i=0; i<4; i++) { - lbl_1_data_470[i+47].datanum = lbl_1_data_470[i+51].datanum = lbl_1_data_194[GWPlayerCfg[i].character]; - } - fn_1_D588(lbl_1_data_470); - fn_1_D818(lbl_1_data_118); - Hu3DModelHookSet(lbl_1_bss_199C2[9], "itemhook1", lbl_1_bss_199C2[3]); - Hu3DModelHookSet(lbl_1_bss_199C2[9], "itemhook2", lbl_1_bss_199C2[5]); - Hu3DModelHookSet(lbl_1_bss_199C2[9], "itemhook3", lbl_1_bss_199C2[7]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook1", lbl_1_bss_199C2[47]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook2", lbl_1_bss_199C2[48]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook3", lbl_1_bss_199C2[49]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook4", lbl_1_bss_199C2[50]); - Hu3DModelHookSet(lbl_1_bss_199C2[11], "L_itemhook", lbl_1_bss_199C2[13]); - Hu3DModelHookSet(lbl_1_bss_199C2[11], "R_itemhook", lbl_1_bss_199C2[14]); - Hu3DModelAttrSet(lbl_1_bss_199C2[13], 0x40000001); - Hu3DModelAttrSet(lbl_1_bss_199C2[14], 0x40000001); - for(i=0; i<4; i++) { - Hu3DModelAttrSet(lbl_1_bss_199C2[i+51], 1); - } - fn_1_D1E0(lbl_1_bss_199C2[4]); - model = CharModelCreate(lbl_1_bss_2DA, 2); - lbl_1_bss_2D0 = model; - lbl_1_bss_2C0[0] = CharModelMotionCreate(lbl_1_bss_2DA, 0x5F0000); - lbl_1_bss_2C0[1] = CharModelMotionCreate(lbl_1_bss_2DA, 0x5F0002); - lbl_1_bss_2C0[2] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA+0x4B0045); - lbl_1_bss_2C0[3] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA+0x4B004D); - CharModelMotionSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0]); - Hu3DModelPosSet(model, 0, 0, 200); - Hu3DModelAttrSet(model, 0x40000001); - Hu3DModelShadowSet(model); - HuPrcChildCreate(fn_1_C214, 50, 12288, 0, lbl_1_bss_308); - HuPrcChildCreate(fn_1_A060, 50, 12288, 0, lbl_1_bss_308); - Hu3DModelAttrSet(lbl_1_bss_199C2[18], 1); - Hu3DModelShadowSet(lbl_1_bss_199C2[18]); - Hu3DModelAttrSet(lbl_1_bss_199C2[26], 1); - Hu3DModelShadowSet(lbl_1_bss_199C2[26]); - Hu3DModelAttrSet(lbl_1_bss_199C2[30], 1); - Hu3DModelShadowSet(lbl_1_bss_199C2[30]); - Hu3DModelAttrSet(lbl_1_bss_199C2[22], 1); - Hu3DModelShadowSet(lbl_1_bss_199C2[22]); - Hu3DModelAttrSet(lbl_1_bss_199C2[34], 1); - Hu3DModelShadowSet(lbl_1_bss_199C2[34]); - Hu3DModelShadowMapSet(lbl_1_bss_199C2[15]); - Hu3DModelShadowMapSet(lbl_1_bss_199C2[9]); - Hu3DModelShadowMapSet(lbl_1_bss_199C2[11]); - Hu3DModelShadowMapSet(lbl_1_bss_199C2[3]); - Hu3DModelShadowMapSet(lbl_1_bss_199C2[5]); - Hu3DModelShadowMapSet(lbl_1_bss_199C2[7]); - CharModelLayerSetAll(1); - CharModelEffectNpcInit(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20], 0, 9); - CharModelEffectNpcInit(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28], 0, 10); - CharModelEffectNpcInit(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24], 0, 14); - CharModelEffectNpcInit(lbl_1_bss_199C2[34], lbl_1_bss_1990E[36], 0, 12); - fn_1_8424(); - for(i=0; i<20; i++) { - if(i == 0) { - model = Hu3DModelCreateFile(0x4B0013); - } else { - model = Hu3DModelLink(lbl_1_bss_148[0][0]); - } - lbl_1_bss_148[i][0] = model; - lbl_1_bss_148[i][1] = 0; - Hu3DModelAttrSet(model, 1); - Hu3DModelScaleSet(model, 0.2, 0.2, 0.2); - Hu3DModelLayerSet(model, 7); - } - for(i=0; i<20; i++) { - if(i == 0) { - model = Hu3DModelCreateFile(0x4B0012); - } else { - model = Hu3DModelLink(lbl_1_bss_8[0][0]); - } - lbl_1_bss_8[i][0] = model; - lbl_1_bss_8[i][1] = 0; - Hu3DModelAttrSet(model, 1); - Hu3DModelScaleSet(model, 0.2, 0.2, 0.2); - Hu3DModelLayerSet(model, 7); - } - fn_1_D9C8(); + s16 i; + s16 model; + + Vec pos; + Vec target; + Vec up; + Hu3DShadowCreate(20, 100, 5000); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowSizeSet(192); + target.x = target.y = target.z = 0; + pos.x = -800; + pos.z = 1600; + pos.y = 3200; + up.x = 0; + up.y = 1; + up.z = 0; + Hu3DShadowPosSet(&pos, &up, &target); + Hu3DReflectMapSet(HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M444, 0x23), MEMORY_DEFAULT_NUM, HEAP_DATA)); + for (i = 0; i < 4; i++) { + lbl_1_data_470[i + 47].datanum = lbl_1_data_470[i + 51].datanum = lbl_1_data_194[GWPlayerCfg[i].character]; + } + fn_1_D588(lbl_1_data_470); + fn_1_D818(lbl_1_data_118); + Hu3DModelHookSet(lbl_1_bss_199C2[9], "itemhook1", lbl_1_bss_199C2[3]); + Hu3DModelHookSet(lbl_1_bss_199C2[9], "itemhook2", lbl_1_bss_199C2[5]); + Hu3DModelHookSet(lbl_1_bss_199C2[9], "itemhook3", lbl_1_bss_199C2[7]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook1", lbl_1_bss_199C2[47]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook2", lbl_1_bss_199C2[48]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook3", lbl_1_bss_199C2[49]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook4", lbl_1_bss_199C2[50]); + Hu3DModelHookSet(lbl_1_bss_199C2[11], "L_itemhook", lbl_1_bss_199C2[13]); + Hu3DModelHookSet(lbl_1_bss_199C2[11], "R_itemhook", lbl_1_bss_199C2[14]); + Hu3DModelAttrSet(lbl_1_bss_199C2[13], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(lbl_1_bss_199C2[14], HU3D_MOTATTR_LOOP); + for (i = 0; i < 4; i++) { + Hu3DModelAttrSet(lbl_1_bss_199C2[i + 51], HU3D_ATTR_DISPOFF); + } + fn_1_D1E0(lbl_1_bss_199C2[4]); + model = CharModelCreate(lbl_1_bss_2DA, 2); + lbl_1_bss_2D0 = model; + lbl_1_bss_2C0[0] = CharModelMotionCreate(lbl_1_bss_2DA, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + lbl_1_bss_2C0[1] = CharModelMotionCreate(lbl_1_bss_2DA, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + lbl_1_bss_2C0[2] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA + DATA_MAKE_NUM(DATADIR_M444, 0x45)); + lbl_1_bss_2C0[3] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA + DATA_MAKE_NUM(DATADIR_M444, 0x4D)); + CharModelMotionSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0]); + Hu3DModelPosSet(model, 0, 0, 200); + Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(model); + HuPrcChildCreate(fn_1_C214, 50, 12288, 0, lbl_1_bss_308); + HuPrcChildCreate(fn_1_A060, 50, 12288, 0, lbl_1_bss_308); + Hu3DModelAttrSet(lbl_1_bss_199C2[18], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(lbl_1_bss_199C2[18]); + Hu3DModelAttrSet(lbl_1_bss_199C2[26], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(lbl_1_bss_199C2[26]); + Hu3DModelAttrSet(lbl_1_bss_199C2[30], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(lbl_1_bss_199C2[30]); + Hu3DModelAttrSet(lbl_1_bss_199C2[22], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(lbl_1_bss_199C2[22]); + Hu3DModelAttrSet(lbl_1_bss_199C2[34], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(lbl_1_bss_199C2[34]); + Hu3DModelShadowMapSet(lbl_1_bss_199C2[15]); + Hu3DModelShadowMapSet(lbl_1_bss_199C2[9]); + Hu3DModelShadowMapSet(lbl_1_bss_199C2[11]); + Hu3DModelShadowMapSet(lbl_1_bss_199C2[3]); + Hu3DModelShadowMapSet(lbl_1_bss_199C2[5]); + Hu3DModelShadowMapSet(lbl_1_bss_199C2[7]); + CharModelLayerSetAll(1); + CharModelEffectNpcInit(lbl_1_bss_199C2[18], lbl_1_bss_1990E[20], 0, 9); + CharModelEffectNpcInit(lbl_1_bss_199C2[26], lbl_1_bss_1990E[28], 0, 10); + CharModelEffectNpcInit(lbl_1_bss_199C2[22], lbl_1_bss_1990E[24], 0, 14); + CharModelEffectNpcInit(lbl_1_bss_199C2[34], lbl_1_bss_1990E[36], 0, 12); + fn_1_8424(); + for (i = 0; i < 20; i++) { + if (i == 0) { + model = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M444, 0x13)); + } + else { + model = Hu3DModelLink(lbl_1_bss_148[0][0]); + } + lbl_1_bss_148[i][0] = model; + lbl_1_bss_148[i][1] = 0; + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(model, 0.2, 0.2, 0.2); + Hu3DModelLayerSet(model, 7); + } + for (i = 0; i < 20; i++) { + if (i == 0) { + model = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M444, 0x12)); + } + else { + model = Hu3DModelLink(lbl_1_bss_8[0][0]); + } + lbl_1_bss_8[i][0] = model; + lbl_1_bss_8[i][1] = 0; + Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(model, 0.2, 0.2, 0.2); + Hu3DModelLayerSet(model, 7); + } + fn_1_D9C8(); } void fn_1_6D80(s16 window) { - s16 i; - WindowData *winPtr = &winData[window]; - winPtr->active_pad = 1 << lbl_1_bss_2D8; - if(GWPlayerCfg[lbl_1_bss_2DC].iscom) { - for(i=0; i<10; i++) { - HuWinComKeyWait(256, 256, 256, 256, GWMessDelayGet()); - } - } + s16 i; + WindowData *winPtr = &winData[window]; + winPtr->active_pad = 1 << lbl_1_bss_2D8; + if (GWPlayerCfg[lbl_1_bss_2DC].iscom) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(256, 256, 256, 256, GWMessDelayGet()); + } + } } void fn_1_6E3C(void) { - while(1) { - if(lbl_1_bss_2FC || omSysExitReq) { - break; - } - HuPrcVSleep(); - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudFadeOut(1000); - while(WipeStatGet()) { - HuPrcVSleep(); - } - BoardStatusKill(); - omOvlReturnEx(1, 1); - HuPrcEnd(); + while (1) { + if (lbl_1_bss_2FC || omSysExitReq) { + break; + } + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + while (WipeStatGet()) { + HuPrcVSleep(); + } + BoardStatusKill(); + omOvlReturnEx(1, 1); + HuPrcEnd(); } -u16 lbl_1_data_240[] = { - 1, 2 -}; - +u16 lbl_1_data_240[] = { 1, 2 }; void fn_1_6EDC(omObjData *object) { - s16 i; - for(i=0; i<1; i++) { - Vec pos, target, up; - float x, y, z; - - x = lbl_1_bss_2A8[i].x; - y = lbl_1_bss_2A8[i].y; - z = lbl_1_bss_2A8[i].z; - - pos.x = (((sind(y)*cosd(x))*lbl_1_bss_288[i])+lbl_1_bss_290[i].x); - pos.y = (-sind(x)*lbl_1_bss_288[i])+lbl_1_bss_290[i].y; - pos.z = ((cosd(y)*cosd(x))*lbl_1_bss_288[i])+lbl_1_bss_290[i].z; - target.x = lbl_1_bss_290[i].x; - target.y = lbl_1_bss_290[i].y; - target.z = lbl_1_bss_290[i].z; - up.x = sind(y)*sind(x); - up.y = cosd(x); - up.z = cosd(y)*sind(x); - Hu3DCameraPosSet(lbl_1_data_240[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } + s16 i; + for (i = 0; i < 1; i++) { + Vec pos, target, up; + float x, y, z; + + x = lbl_1_bss_2A8[i].x; + y = lbl_1_bss_2A8[i].y; + z = lbl_1_bss_2A8[i].z; + + pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_288[i]) + lbl_1_bss_290[i].x); + pos.y = (-sind(x) * lbl_1_bss_288[i]) + lbl_1_bss_290[i].y; + pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_288[i]) + lbl_1_bss_290[i].z; + target.x = lbl_1_bss_290[i].x; + target.y = lbl_1_bss_290[i].y; + target.z = lbl_1_bss_290[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(lbl_1_data_240[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } } void fn_1_7EBC(void); void fn_1_7290(omObjData *object) { - Vec pos; + Vec pos; Vec offset; Vec dir; Vec y_offset; - + f32 z_rot; s8 stick_pos; - if(lbl_1_bss_0 == 0) { - fn_1_7EBC(); - return; - } - lbl_1_bss_2A8[0].y += 0.1f * HuPadStkX[0]; - lbl_1_bss_2A8[0].x += 0.1f * HuPadStkY[0]; - lbl_1_bss_288[0] += HuPadTrigL[0] / 2; - lbl_1_bss_288[0] -= HuPadTrigR[0] / 2; - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - OSReport("%f,%f,%f\n", lbl_1_bss_2A8[0].x, lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); - OSReport("%f,%f,%f\n", lbl_1_bss_290[0].x, lbl_1_bss_290[0].y, lbl_1_bss_290[0].z); - OSReport("%f\n", lbl_1_bss_288[0]); - } - if (lbl_1_bss_288[0] < 100.0f) { - lbl_1_bss_288[0] = 100.0f; - } - pos.x = lbl_1_bss_290[0].x + (lbl_1_bss_288[0] * (sind(lbl_1_bss_2A8[0].y) * cosd(lbl_1_bss_2A8[0].x))); - pos.y = (lbl_1_bss_290[0].y + (lbl_1_bss_288[0] * -sind(lbl_1_bss_2A8[0].x))); - pos.z = (lbl_1_bss_290[0].z + (lbl_1_bss_288[0] * (cosd(lbl_1_bss_2A8[0].y) * cosd(lbl_1_bss_2A8[0].x)))); - offset.x = lbl_1_bss_290[0].x - pos.x; - offset.y = lbl_1_bss_290[0].y - pos.y; - offset.z = lbl_1_bss_290[0].z - pos.z; - dir.x = (sind(lbl_1_bss_2A8[0].y) * sind(lbl_1_bss_2A8[0].x)); - dir.y = cosd(lbl_1_bss_2A8[0].x); - dir.z = (cosd(lbl_1_bss_2A8[0].y) * sind(lbl_1_bss_2A8[0].x)); - z_rot = lbl_1_bss_2A8[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 (lbl_1_bss_0 == 0) { + fn_1_7EBC(); + return; + } + lbl_1_bss_2A8[0].y += 0.1f * HuPadStkX[0]; + lbl_1_bss_2A8[0].x += 0.1f * HuPadStkY[0]; + lbl_1_bss_288[0] += HuPadTrigL[0] / 2; + lbl_1_bss_288[0] -= HuPadTrigR[0] / 2; + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + OSReport("%f,%f,%f\n", lbl_1_bss_2A8[0].x, lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); + OSReport("%f,%f,%f\n", lbl_1_bss_290[0].x, lbl_1_bss_290[0].y, lbl_1_bss_290[0].z); + OSReport("%f\n", lbl_1_bss_288[0]); + } + if (lbl_1_bss_288[0] < 100.0f) { + lbl_1_bss_288[0] = 100.0f; + } + pos.x = lbl_1_bss_290[0].x + (lbl_1_bss_288[0] * (sind(lbl_1_bss_2A8[0].y) * cosd(lbl_1_bss_2A8[0].x))); + pos.y = (lbl_1_bss_290[0].y + (lbl_1_bss_288[0] * -sind(lbl_1_bss_2A8[0].x))); + pos.z = (lbl_1_bss_290[0].z + (lbl_1_bss_288[0] * (cosd(lbl_1_bss_2A8[0].y) * cosd(lbl_1_bss_2A8[0].x)))); + offset.x = lbl_1_bss_290[0].x - pos.x; + offset.y = lbl_1_bss_290[0].y - pos.y; + offset.z = lbl_1_bss_290[0].z - pos.z; + dir.x = (sind(lbl_1_bss_2A8[0].y) * sind(lbl_1_bss_2A8[0].x)); + dir.y = cosd(lbl_1_bss_2A8[0].x); + dir.z = (cosd(lbl_1_bss_2A8[0].y) * sind(lbl_1_bss_2A8[0].x)); + z_rot = lbl_1_bss_2A8[0].z; + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); + 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)); - PSVECCrossProduct(&dir, &offset, &offset); - PSVECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_290[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_290[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_290[0].z += 0.05f * (offset.z * stick_pos); - } - PSVECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_290[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_290[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_290[0].z += 0.05f * (offset.z * stick_pos); - } + 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) { + lbl_1_bss_290[0].x += 0.05f * (offset.x * stick_pos); + lbl_1_bss_290[0].y += 0.05f * (offset.y * stick_pos); + lbl_1_bss_290[0].z += 0.05f * (offset.z * stick_pos); + } + VECNormalize(&y_offset, &offset); + stick_pos = -(HuPadSubStkY[0] & 0xF8); + if (stick_pos != 0) { + lbl_1_bss_290[0].x += 0.05f * (offset.x * stick_pos); + lbl_1_bss_290[0].y += 0.05f * (offset.y * stick_pos); + lbl_1_bss_290[0].z += 0.05f * (offset.z * stick_pos); + } } void fn_1_7EBC(void) { - Vec dist; - float dist_zoom; - if(lbl_1_bss_2FC != 0) { - return; - } - VECSubtract(&lbl_1_bss_2F0, &lbl_1_bss_2A8[0], &dist); - if(VECMag(&dist) > 0.2) { - VECScale(&dist, &dist, 0.05f); - VECAdd(&lbl_1_bss_2A8[0], &dist, &lbl_1_bss_2A8[0]); - } else { - lbl_1_bss_2A8[0] = lbl_1_bss_2F0; - } - VECSubtract(&lbl_1_bss_2E4, &lbl_1_bss_290[0], &dist); - if(VECMag(&dist) > 0.2) { - VECScale(&dist, &dist, 0.05f); - VECAdd(&lbl_1_bss_290[0], &dist, &lbl_1_bss_290[0]); - } else { - lbl_1_bss_290[0] = lbl_1_bss_2E4; - } - dist_zoom = lbl_1_bss_2E0-lbl_1_bss_288[0]; - if(sqrtf(dist_zoom*dist_zoom) > 0.2) { - dist_zoom *= 0.05f; - lbl_1_bss_288[0] += dist_zoom; - } else { - lbl_1_bss_288[0] = lbl_1_bss_2E0; - } + Vec dist; + float dist_zoom; + if (lbl_1_bss_2FC != 0) { + return; + } + VECSubtract(&lbl_1_bss_2F0, &lbl_1_bss_2A8[0], &dist); + if (VECMag(&dist) > 0.2) { + VECScale(&dist, &dist, 0.05f); + VECAdd(&lbl_1_bss_2A8[0], &dist, &lbl_1_bss_2A8[0]); + } + else { + lbl_1_bss_2A8[0] = lbl_1_bss_2F0; + } + VECSubtract(&lbl_1_bss_2E4, &lbl_1_bss_290[0], &dist); + if (VECMag(&dist) > 0.2) { + VECScale(&dist, &dist, 0.05f); + VECAdd(&lbl_1_bss_290[0], &dist, &lbl_1_bss_290[0]); + } + else { + lbl_1_bss_290[0] = lbl_1_bss_2E4; + } + dist_zoom = lbl_1_bss_2E0 - lbl_1_bss_288[0]; + if (sqrtf(dist_zoom * dist_zoom) > 0.2) { + dist_zoom *= 0.05f; + lbl_1_bss_288[0] += dist_zoom; + } + else { + lbl_1_bss_288[0] = lbl_1_bss_2E0; + } } void fn_1_8180(s16 view) { - lbl_1_bss_2F0 = lbl_1_data_0[view].rot; - lbl_1_bss_2E4 = lbl_1_data_0[view].pos; - lbl_1_bss_2E0 = lbl_1_data_0[view].zoom; + lbl_1_bss_2F0 = lbl_1_data_0[view].rot; + lbl_1_bss_2E4 = lbl_1_data_0[view].pos; + lbl_1_bss_2E0 = lbl_1_data_0[view].zoom; } void fn_1_8210(s16 view) { - lbl_1_bss_2A8[0] = lbl_1_data_0[view].rot; - lbl_1_bss_2F0 = lbl_1_bss_2A8[0]; - lbl_1_bss_290[0] = lbl_1_data_0[view].pos; - lbl_1_bss_2E4 = lbl_1_bss_290[0]; - lbl_1_bss_2E0 = lbl_1_bss_288[0] = lbl_1_data_0[view].zoom; + lbl_1_bss_2A8[0] = lbl_1_data_0[view].rot; + lbl_1_bss_2F0 = lbl_1_bss_2A8[0]; + lbl_1_bss_290[0] = lbl_1_data_0[view].pos; + lbl_1_bss_2E4 = lbl_1_bss_290[0]; + lbl_1_bss_2E0 = lbl_1_bss_288[0] = lbl_1_data_0[view].zoom; } float fn_1_82FC(void) { - float zoom = lbl_1_bss_2E0-lbl_1_bss_288[0]; - return sqrtf(zoom*zoom); + float zoom = lbl_1_bss_2E0 - lbl_1_bss_288[0]; + return sqrtf(zoom * zoom); } diff --git a/src/REL/m444dll/pinball.c b/src/REL/m444dll/pinball.c index e4f9b3d7..a455a9f4 100644 --- a/src/REL/m444dll/pinball.c +++ b/src/REL/m444dll/pinball.c @@ -1,27 +1,29 @@ -#include "game/object.h" -#include "game/objsub.h" -#include "game/hsfman.h" #include "game/hsfdraw.h" #include "game/hsfex.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" #include "game/hsfmotion.h" #include "game/pad.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/audio.h" -#include "game/esprite.h" -#include "game/chrman.h" #include "game/board/ui.h" -#include "game/gamework_data.h" #include "game/gamework.h" +#include "game/gamework_data.h" #include "REL/m444dll.h" #include "ext_math.h" +#include "version.h" #include "math.h" + s16 lbl_1_bss_198F0[5][2]; Vec lbl_1_bss_D8F0[4096]; Vec lbl_1_bss_18F0[4096]; @@ -45,125 +47,117 @@ Vec lbl_1_bss_314; s16 lbl_1_bss_312; u8 lbl_1_bss_310; -float lbl_1_data_258[3] = { - 90, 250, 420 -}; +float lbl_1_data_258[3] = { 90, 250, 420 }; -Vec lbl_1_data_264[5] = { - { -75, -300, 0 }, - { 25, -300, 0 }, - { -75, -300, 0 }, - { 25, -300, 0 }, - { -25, -400, 0 } -}; +Vec lbl_1_data_264[5] = { { -75, -300, 0 }, { 25, -300, 0 }, { -75, -300, 0 }, { 25, -300, 0 }, { -25, -400, 0 } }; -float lbl_1_data_2A0[5*2] = { - -100, -60, - 10, 50, - -100, -60, - 10, 50, - -50, 0 -}; +float lbl_1_data_2A0[5 * 2] = { -100, -60, 10, 50, -100, -60, 10, 50, -50, 0 }; s16 lbl_1_data_2C8[5] = { - 1, 1, 2, 2, 2, + 1, + 1, + 2, + 2, + 2, }; void fn_1_8424(void) { - s16 i; - for(i=0; i<5; i++) { - lbl_1_bss_18B4[i] = lbl_1_data_264[i]; - lbl_1_bss_824[i].x = lbl_1_bss_18B4[i].x; - lbl_1_bss_824[i].y = 215; - lbl_1_bss_824[i].z = lbl_1_bss_18B4[i].y; - lbl_1_bss_198F0[i][0] = 10; - lbl_1_bss_198F0[i][1] = 0; - } - for(i=0; i<3; i++) { - lbl_1_bss_860[i].x = 128; - lbl_1_bss_860[i].y = 230; - lbl_1_bss_860[i].z = -100; - MTXIdentity(lbl_1_bss_794[i]); - lbl_1_bss_788[i] = 0; - } + s16 i; + for (i = 0; i < 5; i++) { + lbl_1_bss_18B4[i] = lbl_1_data_264[i]; + lbl_1_bss_824[i].x = lbl_1_bss_18B4[i].x; + lbl_1_bss_824[i].y = 215; + lbl_1_bss_824[i].z = lbl_1_bss_18B4[i].y; + lbl_1_bss_198F0[i][0] = 10; + lbl_1_bss_198F0[i][1] = 0; + } + for (i = 0; i < 3; i++) { + lbl_1_bss_860[i].x = 128; + lbl_1_bss_860[i].y = 230; + lbl_1_bss_860[i].z = -100; + MTXIdentity(lbl_1_bss_794[i]); + lbl_1_bss_788[i] = 0; + } } void fn_1_861C(s16 arg0) { - s16 temp_r31; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - lbl_1_bss_312 = 0; - for(temp_r31=0; temp_r31<256; temp_r31++) { - lbl_1_bss_370[temp_r31] = 1000000.0f; - } - lbl_1_bss_1894.x = 128; - lbl_1_bss_1894.y = -100; - lbl_1_bss_1894.z = 0; - lbl_1_bss_1888.x = lbl_1_bss_1888.z = 0; - lbl_1_bss_1888.y = -30; - lbl_1_bss_860[arg0].x = lbl_1_bss_1894.x; - lbl_1_bss_860[arg0].y = 230; - lbl_1_bss_860[arg0].z = lbl_1_bss_1894.y; - fn_1_D1E0(lbl_1_bss_199C2[(arg0*2)+4]); - if(arg0 == 0) { - for(temp_r31=0; temp_r31<4; temp_r31++) { - lbl_1_bss_320[temp_r31] = temp_r31; - } - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_r29 = frandmod(4); - temp_r28 = frandmod(4); - temp_r27 = lbl_1_bss_320[temp_r29]; - lbl_1_bss_320[temp_r29] = lbl_1_bss_320[temp_r28]; - lbl_1_bss_320[temp_r28] = temp_r27; - } - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook1", lbl_1_bss_199C2[lbl_1_bss_320[0]+47]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook2", lbl_1_bss_199C2[lbl_1_bss_320[1]+47]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook3", lbl_1_bss_199C2[lbl_1_bss_320[2]+47]); - Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook4", lbl_1_bss_199C2[lbl_1_bss_320[3]+47]); - for(temp_r31=0; temp_r31<4; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+51], 1); - } - } else if(arg0 == 1) { - for(temp_r31=temp_r29=0; temp_r31<4; temp_r31++) { - if(temp_r31 != lbl_1_bss_2D6) { - lbl_1_bss_320[temp_r29] = temp_r31; - temp_r29++; - } - } - for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_r29 = frandmod(3); - temp_r28 = frandmod(3); - temp_r27 = lbl_1_bss_320[temp_r29]; - lbl_1_bss_320[temp_r29] = lbl_1_bss_320[temp_r28]; - lbl_1_bss_320[temp_r28] = temp_r27; - } - Hu3DModelAttrReset(lbl_1_bss_199C2[lbl_1_bss_320[0]+51], 1); - Hu3DModelAttrReset(lbl_1_bss_199C2[lbl_1_bss_320[1]+51], 1); - Hu3DModelAttrReset(lbl_1_bss_199C2[lbl_1_bss_320[2]+51], 1); - Hu3DModelAttrSet(lbl_1_bss_199C2[lbl_1_bss_2D6+51], 1); - Hu3DModelHookSet(lbl_1_bss_199C2[5], "d2_itemhook1", lbl_1_bss_199C2[lbl_1_bss_320[0]+51]); - Hu3DModelHookSet(lbl_1_bss_199C2[5], "d2_itemhook2", lbl_1_bss_199C2[lbl_1_bss_320[1]+51]); - Hu3DModelHookSet(lbl_1_bss_199C2[5], "d2_itemhook3", lbl_1_bss_199C2[lbl_1_bss_320[2]+51]); - } - Hu3DModelAttrSet(lbl_1_bss_199C2[arg0+65], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_199C2[arg0+65], 0); - Hu3DModelAttrSet(lbl_1_bss_199C2[arg0+55], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_199C2[arg0+55], 0); - Hu3DMotionSpeedSet(lbl_1_bss_199C2[arg0+55], 2); - Hu3DMotionSet(lbl_1_bss_199C2[arg0+58], lbl_1_bss_1990E[61]); - Hu3DModelAttrSet(lbl_1_bss_199C2[arg0+58], 0x40000001); - for(temp_r31=0; temp_r31<5; temp_r31++) { - if(arg0 == lbl_1_data_2C8[temp_r31]) { - lbl_1_bss_18A0[temp_r31] = 1; - } else { - lbl_1_bss_18A0[temp_r31] = 0; - } - lbl_1_bss_198F0[temp_r31][0] = 10; - lbl_1_bss_198F0[temp_r31][1] = 0; - } + s16 temp_r31; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + lbl_1_bss_312 = 0; + for (temp_r31 = 0; temp_r31 < 256; temp_r31++) { + lbl_1_bss_370[temp_r31] = 1000000.0f; + } + lbl_1_bss_1894.x = 128; + lbl_1_bss_1894.y = -100; + lbl_1_bss_1894.z = 0; + lbl_1_bss_1888.x = lbl_1_bss_1888.z = 0; + lbl_1_bss_1888.y = -30; + lbl_1_bss_860[arg0].x = lbl_1_bss_1894.x; + lbl_1_bss_860[arg0].y = 230; + lbl_1_bss_860[arg0].z = lbl_1_bss_1894.y; + fn_1_D1E0(lbl_1_bss_199C2[(arg0 * 2) + 4]); + if (arg0 == 0) { + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + lbl_1_bss_320[temp_r31] = temp_r31; + } + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_r29 = frandmod(4); + temp_r28 = frandmod(4); + temp_r27 = lbl_1_bss_320[temp_r29]; + lbl_1_bss_320[temp_r29] = lbl_1_bss_320[temp_r28]; + lbl_1_bss_320[temp_r28] = temp_r27; + } + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook1", lbl_1_bss_199C2[lbl_1_bss_320[0] + 47]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook2", lbl_1_bss_199C2[lbl_1_bss_320[1] + 47]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook3", lbl_1_bss_199C2[lbl_1_bss_320[2] + 47]); + Hu3DModelHookSet(lbl_1_bss_199C2[3], "d1_itemhook4", lbl_1_bss_199C2[lbl_1_bss_320[3] + 47]); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 51], HU3D_ATTR_DISPOFF); + } + } + else if (arg0 == 1) { + for (temp_r31 = temp_r29 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r31 != lbl_1_bss_2D6) { + lbl_1_bss_320[temp_r29] = temp_r31; + temp_r29++; + } + } + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + temp_r29 = frandmod(3); + temp_r28 = frandmod(3); + temp_r27 = lbl_1_bss_320[temp_r29]; + lbl_1_bss_320[temp_r29] = lbl_1_bss_320[temp_r28]; + lbl_1_bss_320[temp_r28] = temp_r27; + } + Hu3DModelAttrReset(lbl_1_bss_199C2[lbl_1_bss_320[0] + 51], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_199C2[lbl_1_bss_320[1] + 51], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_199C2[lbl_1_bss_320[2] + 51], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_199C2[lbl_1_bss_2D6 + 51], HU3D_ATTR_DISPOFF); + Hu3DModelHookSet(lbl_1_bss_199C2[5], "d2_itemhook1", lbl_1_bss_199C2[lbl_1_bss_320[0] + 51]); + Hu3DModelHookSet(lbl_1_bss_199C2[5], "d2_itemhook2", lbl_1_bss_199C2[lbl_1_bss_320[1] + 51]); + Hu3DModelHookSet(lbl_1_bss_199C2[5], "d2_itemhook3", lbl_1_bss_199C2[lbl_1_bss_320[2] + 51]); + } + Hu3DModelAttrSet(lbl_1_bss_199C2[arg0 + 65], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_199C2[arg0 + 65], 0); + Hu3DModelAttrSet(lbl_1_bss_199C2[arg0 + 55], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_199C2[arg0 + 55], 0); + Hu3DMotionSpeedSet(lbl_1_bss_199C2[arg0 + 55], 2); + Hu3DMotionSet(lbl_1_bss_199C2[arg0 + 58], lbl_1_bss_1990E[61]); + Hu3DModelAttrSet(lbl_1_bss_199C2[arg0 + 58], HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 < 5; temp_r31++) { + if (arg0 == lbl_1_data_2C8[temp_r31]) { + lbl_1_bss_18A0[temp_r31] = 1; + } + else { + lbl_1_bss_18A0[temp_r31] = 0; + } + lbl_1_bss_198F0[temp_r31][0] = 10; + lbl_1_bss_198F0[temp_r31][1] = 0; + } } void fn_1_ABD0(s16 arg0, s16 arg1); @@ -171,552 +165,550 @@ s16 fn_1_B1E8(Vec *arg0, Vec *arg1, s16 arg2); s16 fn_1_8DD0(s16 arg0) { - s16 temp_r30; - s16 temp_r29; - s32 temp_r28; - s16 temp_r27; - Mtx sp24; - Vec sp18; - Vec spC; - float sp8 = 0; - Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_258[arg0]); - Hu3DModelAttrSet(lbl_1_bss_199C2[9], 0x40000002); - Hu3DModelAttrReset(lbl_1_bss_199C2[arg0+65], 0x40000002); - Hu3DMotionSpeedSet(lbl_1_bss_199C2[arg0+65], 0.1*(-lbl_1_bss_1888.y-14.0f)+1.0); - temp_r28 = 0; - spC.z = spC.y = spC.x = 0; - fn_1_8180(1); - while(1) { - temp_r27 = fn_1_B1E8(&lbl_1_bss_1894, &lbl_1_bss_1888, arg0); - lbl_1_bss_860[arg0].x = lbl_1_bss_1894.x; - lbl_1_bss_860[arg0].y = 230; - lbl_1_bss_860[arg0].z = lbl_1_bss_1894.y; - if(VECMag(&lbl_1_bss_1888)) { - sp18.x = 0; - sp18.y = 0; - sp18.z = 1; - VECCrossProduct(&sp18, &lbl_1_bss_1888, &sp18); - sp18.z = sp18.y; - sp18.y = 0; - MTXRotAxisDeg(sp24, &sp18, 360.0*(VECMag(&lbl_1_bss_1888)/81.68140899333463)); - MTXConcat(lbl_1_bss_794[arg0], sp24, lbl_1_bss_794[arg0]); - } - lbl_1_bss_2E4.z = lbl_1_bss_860[arg0].z; - for(temp_r30=temp_r29=0; temp_r30<5; temp_r30++) { - if(arg0 == lbl_1_data_2C8[temp_r30]) { - fn_1_ABD0(temp_r30, arg0); - if(lbl_1_bss_198F0[temp_r30][1] & 0x2) { - temp_r29++; - } - } - } - if(temp_r29) { - if(Hu3DMotionIDGet(lbl_1_bss_199C2[arg0+58]) != lbl_1_bss_1990E[62]) { - Hu3DMotionSet(lbl_1_bss_199C2[arg0+58], lbl_1_bss_1990E[62]); - } - } else { - if(Hu3DMotionIDGet(lbl_1_bss_199C2[arg0+58]) != lbl_1_bss_1990E[61]) { - Hu3DMotionSet(lbl_1_bss_199C2[arg0+58], lbl_1_bss_1990E[61]); - } - } - if(temp_r27 != -1) { - break; - } - if(lbl_1_bss_1894.x < 85.0f && temp_r28 == 0) { - lbl_1_bss_D8F0[lbl_1_bss_1884].x = 100; - lbl_1_bss_D8F0[lbl_1_bss_1884].y = 100; - lbl_1_bss_D8F0[lbl_1_bss_1884].z = 0; - lbl_1_bss_18F0[lbl_1_bss_1884].x = 100; - lbl_1_bss_18F0[lbl_1_bss_1884].y = -500; - lbl_1_bss_18F0[lbl_1_bss_1884].z = 0; - lbl_1_bss_1884++; - Hu3DModelAttrReset(lbl_1_bss_199C2[arg0+55], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_199C2[arg0+55], 0); - temp_r28 = 1; - } - HuPrcVSleep(); - } - for(temp_r30=0; temp_r30<5; temp_r30++) { - if(arg0 == lbl_1_data_2C8[temp_r30]) { - lbl_1_bss_198F0[temp_r30][1] = 4; - fn_1_ABD0(temp_r30, arg0); - } - } - HuAudFXPlay(1851); - return temp_r27; + s16 temp_r30; + s16 temp_r29; + s32 temp_r28; + s16 temp_r27; + Mtx sp24; + Vec sp18; + Vec spC; + float sp8 = 0; + Hu3DMotionTimeSet(lbl_1_bss_199C2[9], lbl_1_data_258[arg0]); + Hu3DModelAttrSet(lbl_1_bss_199C2[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_199C2[arg0 + 65], HU3D_MOTATTR_PAUSE); + Hu3DMotionSpeedSet(lbl_1_bss_199C2[arg0 + 65], 0.1 * (-lbl_1_bss_1888.y - 14.0f) + 1.0); + temp_r28 = 0; + spC.z = spC.y = spC.x = 0; + fn_1_8180(1); + while (1) { + temp_r27 = fn_1_B1E8(&lbl_1_bss_1894, &lbl_1_bss_1888, arg0); + lbl_1_bss_860[arg0].x = lbl_1_bss_1894.x; + lbl_1_bss_860[arg0].y = 230; + lbl_1_bss_860[arg0].z = lbl_1_bss_1894.y; + if (VECMag(&lbl_1_bss_1888)) { + sp18.x = 0; + sp18.y = 0; + sp18.z = 1; + VECCrossProduct(&sp18, &lbl_1_bss_1888, &sp18); + sp18.z = sp18.y; + sp18.y = 0; + MTXRotAxisDeg(sp24, &sp18, 360.0 * (VECMag(&lbl_1_bss_1888) / 81.68140899333463)); + MTXConcat(lbl_1_bss_794[arg0], sp24, lbl_1_bss_794[arg0]); + } + lbl_1_bss_2E4.z = lbl_1_bss_860[arg0].z; + for (temp_r30 = temp_r29 = 0; temp_r30 < 5; temp_r30++) { + if (arg0 == lbl_1_data_2C8[temp_r30]) { + fn_1_ABD0(temp_r30, arg0); + if (lbl_1_bss_198F0[temp_r30][1] & 0x2) { + temp_r29++; + } + } + } + if (temp_r29) { + if (Hu3DMotionIDGet(lbl_1_bss_199C2[arg0 + 58]) != lbl_1_bss_1990E[62]) { + Hu3DMotionSet(lbl_1_bss_199C2[arg0 + 58], lbl_1_bss_1990E[62]); + } + } + else { + if (Hu3DMotionIDGet(lbl_1_bss_199C2[arg0 + 58]) != lbl_1_bss_1990E[61]) { + Hu3DMotionSet(lbl_1_bss_199C2[arg0 + 58], lbl_1_bss_1990E[61]); + } + } + if (temp_r27 != -1) { + break; + } + if (lbl_1_bss_1894.x < 85.0f && temp_r28 == 0) { + lbl_1_bss_D8F0[lbl_1_bss_1884].x = 100; + lbl_1_bss_D8F0[lbl_1_bss_1884].y = 100; + lbl_1_bss_D8F0[lbl_1_bss_1884].z = 0; + lbl_1_bss_18F0[lbl_1_bss_1884].x = 100; + lbl_1_bss_18F0[lbl_1_bss_1884].y = -500; + lbl_1_bss_18F0[lbl_1_bss_1884].z = 0; + lbl_1_bss_1884++; + Hu3DModelAttrReset(lbl_1_bss_199C2[arg0 + 55], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_199C2[arg0 + 55], 0); + temp_r28 = 1; + } + HuPrcVSleep(); + } + for (temp_r30 = 0; temp_r30 < 5; temp_r30++) { + if (arg0 == lbl_1_data_2C8[temp_r30]) { + lbl_1_bss_198F0[temp_r30][1] = 4; + fn_1_ABD0(temp_r30, arg0); + } + } + HuAudFXPlay(1851); + return temp_r27; } void fn_1_9418(s16 arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - - s16 temp_r31; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - s16 temp_r23; - float sp8[2]; - temp_f31 = 0; - fn_1_8180(0); - Hu3DModelPosSet(lbl_1_bss_2D0, 124, 0, 70); - Hu3DModelRotSet(lbl_1_bss_2D0, 0, 180, 0); - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[3], 0, 4, 0x40000020); - HuPrcSleep(12); - HuWinMesMaxSizeGet(1, sp8, 0x1C000F); - temp_r29 = HuWinCreate(-10000, 340, sp8[0], sp8[1], 1); - HuWinMesSpeedSet(temp_r29, 0); - HuWinBGTPLvlSet(temp_r29, 0); - HuWinMesSet(temp_r29, 0x1C000F); - CharModelMotionSet(lbl_1_bss_2DA, lbl_1_bss_2C0[2]); - Hu3DModelAttrSet(lbl_1_bss_2D0, 0x40000002); - temp_f29 = Hu3DMotionTimeGet(lbl_1_bss_2D0); - temp_f28 = Hu3DMotionMaxTimeGet(lbl_1_bss_2D0); - if(GWPlayerCfg[lbl_1_bss_2DC].iscom) { - temp_r27 = frandmod(100)+20; - } - while(1) { - temp_r26 = HuPadBtnDown[lbl_1_bss_2D8]; - temp_r23 = HuPadBtn[lbl_1_bss_2D8]; - temp_r25 = HuPadStkY[lbl_1_bss_2D8]; - if(GWPlayerCfg[lbl_1_bss_2DC].iscom) { - temp_r23 = 0; - if(temp_r27 != 0) { - temp_r27--; - temp_r25 = -72; - } else { - temp_r26 = PAD_BUTTON_A; - } - } - if((temp_r26 & PAD_BUTTON_A) && lbl_1_bss_788[arg0] > 0) { - break; - } - if(HuPadTrigR[lbl_1_bss_2D8] > 10) { - if(temp_f31 < 90.0f) { - temp_f31 += 5.0f; - } - fn_1_8180(arg0+2); - } else { - fn_1_8180(0); - if(temp_f31 > 0.0f) { - temp_f31 -= 5.0f; - } - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_34C[temp_r31].y = 80.0-(150.0*sind(temp_f31)); - } - temp_f30 = -(temp_r25 >> 3); - temp_f30 /= 20.0f; - if(temp_f30) { - if(temp_f30+lbl_1_bss_788[arg0] < 0.0f) { - temp_f30 = -lbl_1_bss_788[arg0]; - } else { - if(temp_f30+lbl_1_bss_788[arg0] > 50.0f) { - temp_f30 = 50.0f-lbl_1_bss_788[arg0]; - } - } - temp_f29 += temp_f30; - if(temp_f29 >= temp_f28) { - temp_f29 -= temp_f28; - } - } else { - temp_f30 = -0.3f; - if(temp_f30+lbl_1_bss_788[arg0] < 0.0f) { - temp_f30 = -lbl_1_bss_788[arg0]; - } - } - Hu3DMotionTimeSet(lbl_1_bss_2D0, temp_f29); - lbl_1_bss_788[arg0] += temp_f30; - Hu3DModelPosSet(lbl_1_bss_2D0, 124, 0, 70+lbl_1_bss_788[arg0]); - for(temp_r31=0; temp_r31<5; temp_r31++) { - if(arg0 == lbl_1_data_2C8[temp_r31]) { - fn_1_ABD0(temp_r31, arg0); - } - } - HuPrcVSleep(); - } - if(temp_f31 > 0) { - fn_1_8180(0); - for(temp_r28=0; temp_r28<10; temp_r28++) { - temp_f31 -= 10.0f; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_34C[temp_r31].y = 80.0-(150.0*sind(temp_f31)); - } - if(temp_f31 == 0.0f) { - break; - } - HuPrcVSleep(); - } - } - CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[3], 0, 8, 0x0); - HuPrcSleep(4); - temp_r24 = lbl_1_bss_788[arg0]/4; - lbl_1_bss_1888.y = (-15-temp_r24)+(0.1*(float)frandmod(10)); - lbl_1_bss_788[arg0] = 0; - HuWinExCleanup(temp_r29); - HuAudFXPlay(1852); + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + s16 temp_r31; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + float sp8[2]; + temp_f31 = 0; + fn_1_8180(0); + Hu3DModelPosSet(lbl_1_bss_2D0, 124, 0, 70); + Hu3DModelRotSet(lbl_1_bss_2D0, 0, 180, 0); + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[3], 0, 4, HU3D_MOTATTR_SHIFT_REV); + HuPrcSleep(12); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1C, 0x0F)); + temp_r29 = HuWinCreate(-10000, 340, sp8[0], sp8[1], 1); + HuWinMesSpeedSet(temp_r29, 0); + HuWinBGTPLvlSet(temp_r29, 0); + HuWinMesSet(temp_r29, MAKE_MESSID(0x1C, 0x0F)); + CharModelMotionSet(lbl_1_bss_2DA, lbl_1_bss_2C0[2]); + Hu3DModelAttrSet(lbl_1_bss_2D0, HU3D_MOTATTR_PAUSE); + temp_f29 = Hu3DMotionTimeGet(lbl_1_bss_2D0); + temp_f28 = Hu3DMotionMaxTimeGet(lbl_1_bss_2D0); + if (GWPlayerCfg[lbl_1_bss_2DC].iscom) { + temp_r27 = frandmod(100) + 20; + } + while (1) { + temp_r26 = HuPadBtnDown[lbl_1_bss_2D8]; + temp_r23 = HuPadBtn[lbl_1_bss_2D8]; + temp_r25 = HuPadStkY[lbl_1_bss_2D8]; + if (GWPlayerCfg[lbl_1_bss_2DC].iscom) { + temp_r23 = 0; + if (temp_r27 != 0) { + temp_r27--; + temp_r25 = -72; + } + else { + temp_r26 = PAD_BUTTON_A; + } + } + if ((temp_r26 & PAD_BUTTON_A) && lbl_1_bss_788[arg0] > 0) { + break; + } + if (HuPadTrigR[lbl_1_bss_2D8] > 10) { + if (temp_f31 < 90.0f) { + temp_f31 += 5.0f; + } + fn_1_8180(arg0 + 2); + } + else { + fn_1_8180(0); + if (temp_f31 > 0.0f) { + temp_f31 -= 5.0f; + } + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_34C[temp_r31].y = 80.0 - (150.0 * sind(temp_f31)); + } + temp_f30 = -(temp_r25 >> 3); + temp_f30 /= 20.0f; + if (temp_f30) { + if (temp_f30 + lbl_1_bss_788[arg0] < 0.0f) { + temp_f30 = -lbl_1_bss_788[arg0]; + } + else { + if (temp_f30 + lbl_1_bss_788[arg0] > 50.0f) { + temp_f30 = 50.0f - lbl_1_bss_788[arg0]; + } + } + temp_f29 += temp_f30; + if (temp_f29 >= temp_f28) { + temp_f29 -= temp_f28; + } + } + else { + temp_f30 = -0.3f; + if (temp_f30 + lbl_1_bss_788[arg0] < 0.0f) { + temp_f30 = -lbl_1_bss_788[arg0]; + } + } + Hu3DMotionTimeSet(lbl_1_bss_2D0, temp_f29); + lbl_1_bss_788[arg0] += temp_f30; + Hu3DModelPosSet(lbl_1_bss_2D0, 124, 0, 70 + lbl_1_bss_788[arg0]); + for (temp_r31 = 0; temp_r31 < 5; temp_r31++) { + if (arg0 == lbl_1_data_2C8[temp_r31]) { + fn_1_ABD0(temp_r31, arg0); + } + } + HuPrcVSleep(); + } + if (temp_f31 > 0) { + fn_1_8180(0); + for (temp_r28 = 0; temp_r28 < 10; temp_r28++) { + temp_f31 -= 10.0f; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_34C[temp_r31].y = 80.0 - (150.0 * sind(temp_f31)); + } + if (temp_f31 == 0.0f) { + break; + } + HuPrcVSleep(); + } + } + CharModelMotionShiftSet(lbl_1_bss_2DA, lbl_1_bss_2C0[3], 0, 8, HU3D_MOTATTR_NONE); + HuPrcSleep(4); + temp_r24 = lbl_1_bss_788[arg0] / 4; + lbl_1_bss_1888.y = (-15 - temp_r24) + (0.1 * (float)frandmod(10)); + lbl_1_bss_788[arg0] = 0; + HuWinExCleanup(temp_r29); + HuAudFXPlay(1852); } void fn_1_9CAC(s16 arg0, s16 arg1) { - Mtx sp38; - Mtx sp8; - ModelData *temp_r29; - - Hu3DMotionSet(lbl_1_bss_199C2[arg0+58], lbl_1_bss_1990E[63]); - Hu3DModelAttrSet(lbl_1_bss_199C2[arg0+58], 0x40000001); - Hu3DModelAttrReset(lbl_1_bss_199C2[64], 0x1); - Hu3DModelAttrSet(lbl_1_bss_199C2[64], 0x40000001); - Hu3DMotionTimeSet(lbl_1_bss_199C2[64], 0); - MTXTrans(sp8, 0, -150, 0); - if(arg0 == 0) { - switch(arg1) { - case 0: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook1", sp38); - break; - - case 1: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook2", sp38); - break; - - case 2: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook3", sp38); - break; - - case 3: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook4", sp38); - break; - } - } else if(arg0 == 1) { - switch(arg1) { - case 0: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[5], "d2_itemhook1", sp38); - break; - - case 1: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[5], "d2_itemhook2", sp38); - break; - - case 2: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[5], "d2_itemhook3", sp38); - break; - } - } else { - switch(arg1) { - case 0: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook1", sp38); - break; - - case 1: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook4", sp38); - break; - - case 2: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook2", sp38); - break; - - case 3: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook7", sp38); - break; - - case 4: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook6", sp38); - break; - - case 5: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook3", sp38); - break; - - case 6: - Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook5", sp38); - break; - } - mtxScaleCat(sp8, 0.8, 1, 0.8); - } - temp_r29 = &Hu3DData[lbl_1_bss_199C2[64]]; - MTXConcat(sp38, sp8, sp38); - MTXCopy(sp38, temp_r29->unk_F0); + Mtx sp38; + Mtx sp8; + ModelData *temp_r29; + + Hu3DMotionSet(lbl_1_bss_199C2[arg0 + 58], lbl_1_bss_1990E[63]); + Hu3DModelAttrSet(lbl_1_bss_199C2[arg0 + 58], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(lbl_1_bss_199C2[64], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_199C2[64], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(lbl_1_bss_199C2[64], 0); + MTXTrans(sp8, 0, -150, 0); + if (arg0 == 0) { + switch (arg1) { + case 0: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook1", sp38); + break; + + case 1: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook2", sp38); + break; + + case 2: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook3", sp38); + break; + + case 3: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[3], "d1_itemhook4", sp38); + break; + } + } + else if (arg0 == 1) { + switch (arg1) { + case 0: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[5], "d2_itemhook1", sp38); + break; + + case 1: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[5], "d2_itemhook2", sp38); + break; + + case 2: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[5], "d2_itemhook3", sp38); + break; + } + } + else { + switch (arg1) { + case 0: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook1", sp38); + break; + + case 1: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook4", sp38); + break; + + case 2: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook2", sp38); + break; + + case 3: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook7", sp38); + break; + + case 4: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook6", sp38); + break; + + case 5: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook3", sp38); + break; + + case 6: + Hu3DModelObjMtxGet(lbl_1_bss_199C2[7], "d3_itemhook5", sp38); + break; + } + mtxScaleCat(sp8, 0.8, 1, 0.8); + } + temp_r29 = &Hu3DData[lbl_1_bss_199C2[64]]; + MTXConcat(sp38, sp8, sp38); + MTXCopy(sp38, temp_r29->unk_F0); } void fn_1_A060(void) { - s16 temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - Vec sp20; - Vec sp14; - float sp8[3] = { 0, 40, 60 }; - for(temp_r30=0; temp_r30<3; temp_r30++) { - lbl_1_bss_34C[temp_r30].y = -100; - lbl_1_bss_34C[temp_r30].z = 200; - lbl_1_bss_328[temp_r30].x = lbl_1_bss_328[temp_r30].y = lbl_1_bss_328[temp_r30].z = 0.3f; - Hu3DModelAttrReset(lbl_1_bss_199C2[temp_r30+71], 1); - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r30+71], 0x40000001); - } - lbl_1_bss_34C[0].x = 188; - lbl_1_bss_34C[1].x = 388; - lbl_1_bss_34C[2].x = 288; - temp_r29 = temp_r27 = 0; - while(1) { - for(temp_r30=0; temp_r30<3; temp_r30++) { - sp14 = lbl_1_bss_34C[temp_r30]; - sp14.y += 5.0*sind(sp8[temp_r30]); - Hu3D2Dto3D(&sp14, 1, &sp20); - Hu3DModelPosSet(lbl_1_bss_199C2[temp_r30+71], sp20.x, sp20.y, sp20.z); - Hu3DModelRotSet(lbl_1_bss_199C2[temp_r30+71], lbl_1_bss_2A8[0].x , lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); - Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r30+71], lbl_1_bss_328[temp_r30].x/2.0, lbl_1_bss_328[temp_r30].y/2.0, lbl_1_bss_328[temp_r30].z/2.0); - switch(temp_r30) { - case 0: - for(temp_r31=0; temp_r31<4; temp_r31++) { - Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r31+74], lbl_1_bss_328[temp_r30].x*1.2, lbl_1_bss_328[temp_r30].y*1.2, lbl_1_bss_328[temp_r30].z*1.2); - } - if(lbl_1_bss_2D6 != -2) { - if(lbl_1_bss_2D6 == -1) { - if((temp_r27 & 0x7) == 0 && (++temp_r29) >= 4) { - temp_r29 = 0; - } - temp_r27++; - temp_r28 = lbl_1_bss_199C2[temp_r29+74]; - for(temp_r31=0; temp_r31<4; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+74], 1); - } - Hu3DModelAttrReset(temp_r28, 1); - } else { - temp_r28 = lbl_1_bss_199C2[lbl_1_bss_2D6+74]; - for(temp_r31=0; temp_r31<4; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+74], 1); - } - Hu3DModelAttrReset(temp_r28, 1); - } - Hu3DModelPosSet(temp_r28, sp20.x, sp20.y, sp20.z); - Hu3DModelRotSet(temp_r28, 90.0f+lbl_1_bss_2A8[0].x , lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); - } - break; - - case 1: - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(temp_r31 == lbl_1_bss_2D6) { - continue; - } - Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r31+74], lbl_1_bss_328[temp_r30].x*1.2, lbl_1_bss_328[temp_r30].y*1.2, lbl_1_bss_328[temp_r30].z*1.2); - } - if(lbl_1_bss_2D4 != -2) { - if(lbl_1_bss_2D4 == -1) { - if((temp_r27 & 0x7) == 0) { - temp_r29++; - if(temp_r29 == lbl_1_bss_2D6) { - temp_r29++; - } - if(temp_r29 >= 4) { - temp_r29 = 0; - if(lbl_1_bss_2D6 == 0) { - temp_r29++; - } - } - - } else { - if(temp_r29 == lbl_1_bss_2D6) { - temp_r29++; - if(temp_r29 >= 4) { - temp_r29 = 0; - } - } - } - temp_r27++; - temp_r28 = lbl_1_bss_199C2[temp_r29+74]; - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(temp_r31 != lbl_1_bss_2D6) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+74], 1); - } - - } - Hu3DModelAttrReset(temp_r28, 1); - } else { - temp_r28 = lbl_1_bss_199C2[lbl_1_bss_2D4+74]; - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(temp_r31 != lbl_1_bss_2D6) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+74], 1); - } - - } - Hu3DModelAttrReset(temp_r28, 1); - } - Hu3DModelPosSet(temp_r28, sp20.x, sp20.y, sp20.z); - Hu3DModelRotSet(temp_r28, 90.0f+lbl_1_bss_2A8[0].x , lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); - } - break; - - case 2: - for(temp_r31=0; temp_r31<7; temp_r31++) { - Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r31+78], lbl_1_bss_328[temp_r30].x*1.2, lbl_1_bss_328[temp_r30].y*1.2, lbl_1_bss_328[temp_r30].z*1.2); - } - if(lbl_1_bss_2D2 != -2) { - if(lbl_1_bss_2D2 == -1) { - if((temp_r27 & 0x7) == 0 && (++temp_r29) >= 7) { - temp_r29 = 0; - } - temp_r27++; - temp_r28 = lbl_1_bss_199C2[temp_r29+78]; - for(temp_r31=0; temp_r31<7; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+78], 1); - } - Hu3DModelAttrReset(temp_r28, 1); - } else { - temp_r28 = lbl_1_bss_199C2[lbl_1_bss_2D2+78]; - for(temp_r31=0; temp_r31<7; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31+78], 1); - } - Hu3DModelAttrReset(temp_r28, 1); - } - Hu3DModelPosSet(temp_r28, sp20.x, sp20.y, sp20.z); - Hu3DModelRotSet(temp_r28, 90.0f+lbl_1_bss_2A8[0].x , lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); - } - break; - } - sp8[temp_r30] += 4.0*(1.0+(temp_r30*0.05)); - if(sp8[temp_r30] > 360.0f) { - sp8[temp_r30] -= 360.0f; - } - } - HuPrcVSleep(); - } - + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + Vec sp20; + Vec sp14; + float sp8[3] = { 0, 40, 60 }; + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + lbl_1_bss_34C[temp_r30].y = -100; + lbl_1_bss_34C[temp_r30].z = 200; + lbl_1_bss_328[temp_r30].x = lbl_1_bss_328[temp_r30].y = lbl_1_bss_328[temp_r30].z = 0.3f; + Hu3DModelAttrReset(lbl_1_bss_199C2[temp_r30 + 71], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r30 + 71], HU3D_MOTATTR_LOOP); + } + lbl_1_bss_34C[0].x = 188; + lbl_1_bss_34C[1].x = 388; + lbl_1_bss_34C[2].x = 288; + temp_r29 = temp_r27 = 0; + while (1) { + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + sp14 = lbl_1_bss_34C[temp_r30]; + sp14.y += 5.0 * sind(sp8[temp_r30]); + Hu3D2Dto3D(&sp14, 1, &sp20); + Hu3DModelPosSet(lbl_1_bss_199C2[temp_r30 + 71], sp20.x, sp20.y, sp20.z); + Hu3DModelRotSet(lbl_1_bss_199C2[temp_r30 + 71], lbl_1_bss_2A8[0].x, lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); + Hu3DModelScaleSet( + lbl_1_bss_199C2[temp_r30 + 71], lbl_1_bss_328[temp_r30].x / 2.0, lbl_1_bss_328[temp_r30].y / 2.0, lbl_1_bss_328[temp_r30].z / 2.0); + switch (temp_r30) { + case 0: + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r31 + 74], lbl_1_bss_328[temp_r30].x * 1.2, lbl_1_bss_328[temp_r30].y * 1.2, + lbl_1_bss_328[temp_r30].z * 1.2); + } + if (lbl_1_bss_2D6 != -2) { + if (lbl_1_bss_2D6 == -1) { + if ((temp_r27 & 0x7) == 0 && (++temp_r29) >= 4) { + temp_r29 = 0; + } + temp_r27++; + temp_r28 = lbl_1_bss_199C2[temp_r29 + 74]; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 74], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(temp_r28, HU3D_ATTR_DISPOFF); + } + else { + temp_r28 = lbl_1_bss_199C2[lbl_1_bss_2D6 + 74]; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 74], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(temp_r28, HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(temp_r28, sp20.x, sp20.y, sp20.z); + Hu3DModelRotSet(temp_r28, 90.0f + lbl_1_bss_2A8[0].x, lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); + } + break; + + case 1: + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r31 == lbl_1_bss_2D6) { + continue; + } + Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r31 + 74], lbl_1_bss_328[temp_r30].x * 1.2, lbl_1_bss_328[temp_r30].y * 1.2, + lbl_1_bss_328[temp_r30].z * 1.2); + } + if (lbl_1_bss_2D4 != -2) { + if (lbl_1_bss_2D4 == -1) { + if ((temp_r27 & 0x7) == 0) { + temp_r29++; + if (temp_r29 == lbl_1_bss_2D6) { + temp_r29++; + } + if (temp_r29 >= 4) { + temp_r29 = 0; + if (lbl_1_bss_2D6 == 0) { + temp_r29++; + } + } + } + else { + if (temp_r29 == lbl_1_bss_2D6) { + temp_r29++; + if (temp_r29 >= 4) { + temp_r29 = 0; + } + } + } + temp_r27++; + temp_r28 = lbl_1_bss_199C2[temp_r29 + 74]; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r31 != lbl_1_bss_2D6) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 74], HU3D_ATTR_DISPOFF); + } + } + Hu3DModelAttrReset(temp_r28, HU3D_ATTR_DISPOFF); + } + else { + temp_r28 = lbl_1_bss_199C2[lbl_1_bss_2D4 + 74]; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r31 != lbl_1_bss_2D6) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 74], HU3D_ATTR_DISPOFF); + } + } + Hu3DModelAttrReset(temp_r28, HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(temp_r28, sp20.x, sp20.y, sp20.z); + Hu3DModelRotSet(temp_r28, 90.0f + lbl_1_bss_2A8[0].x, lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); + } + break; + + case 2: + for (temp_r31 = 0; temp_r31 < 7; temp_r31++) { + Hu3DModelScaleSet(lbl_1_bss_199C2[temp_r31 + 78], lbl_1_bss_328[temp_r30].x * 1.2, lbl_1_bss_328[temp_r30].y * 1.2, + lbl_1_bss_328[temp_r30].z * 1.2); + } + if (lbl_1_bss_2D2 != -2) { + if (lbl_1_bss_2D2 == -1) { + if ((temp_r27 & 0x7) == 0 && (++temp_r29) >= 7) { + temp_r29 = 0; + } + temp_r27++; + temp_r28 = lbl_1_bss_199C2[temp_r29 + 78]; + for (temp_r31 = 0; temp_r31 < 7; temp_r31++) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 78], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(temp_r28, HU3D_ATTR_DISPOFF); + } + else { + temp_r28 = lbl_1_bss_199C2[lbl_1_bss_2D2 + 78]; + for (temp_r31 = 0; temp_r31 < 7; temp_r31++) { + Hu3DModelAttrSet(lbl_1_bss_199C2[temp_r31 + 78], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(temp_r28, HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(temp_r28, sp20.x, sp20.y, sp20.z); + Hu3DModelRotSet(temp_r28, 90.0f + lbl_1_bss_2A8[0].x, lbl_1_bss_2A8[0].y, lbl_1_bss_2A8[0].z); + } + break; + } + sp8[temp_r30] += 4.0 * (1.0 + (temp_r30 * 0.05)); + if (sp8[temp_r30] > 360.0f) { + sp8[temp_r30] -= 360.0f; + } + } + HuPrcVSleep(); + } } void fn_1_ABD0(s16 arg0, s16 arg1) { - float temp_f31; - float temp_f30; - float temp_f29; - s16 *temp_r31; - s16 temp_r29; - s16 temp_r28; - Vec sp14; - Vec sp8; - temp_r31 = &lbl_1_bss_198F0[arg0][0]; - temp_r29 = lbl_1_bss_199C2[arg0+38]; - if(temp_r31[1] & 0x2) { - if(temp_r31[0] == 85) { - if(Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[45] && Hu3DMotionShiftIDGet(temp_r29) != lbl_1_bss_1990E[45]) { - Hu3DMotionShiftSet(temp_r29, lbl_1_bss_1990E[45], 0, 8, 0); - } - } else { - if(Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[46] && Hu3DMotionShiftIDGet(temp_r29) != lbl_1_bss_1990E[46]) { - Hu3DMotionShiftSet(temp_r29, lbl_1_bss_1990E[46], 0, 8, 0x40000001); - } - } - temp_r31[0]--; - if(temp_r31[0] <= 0) { - temp_r31[1] &= ~0x2; - temp_r31[1] |= 0x4; - temp_r31[0] = 20; - } - } else { - if(temp_r31[1] & 0x4) { - if(Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[43] && Hu3DMotionShiftIDGet(temp_r29) != lbl_1_bss_1990E[43]) { - Hu3DMotionShiftSet(temp_r29, lbl_1_bss_1990E[43], 0, 16, 0x40000001); - } - temp_r31[0]--; - if(temp_r31[0] <= 0) { - temp_r31[1] &= ~0x4; - temp_r31[0] = frandmod(30)+30; - } - } else { - temp_r31[0]--; - if(temp_r31[0] <= 0) { - temp_r31[1] |= 4; - temp_r31[0] = 60; - } else { - if(Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[44] ) { - Hu3DMotionSet(temp_r29, lbl_1_bss_1990E[44]); - } - if(temp_r31[1] & 0x1) { - temp_f31 = -1; - temp_f30 = -90; - } else { - temp_f31 = 1; - temp_f30 = 90; - } - sp8 = lbl_1_bss_18B4[arg0]; - sp8.x += temp_f31; - for(temp_r28=0; temp_r28<5; temp_r28++) { - if(temp_r28 == arg0 || lbl_1_bss_18A0[temp_r28] == 0) { - continue; - } - VECSubtract(&sp8, &lbl_1_bss_18B4[temp_r28], &sp14); - if(VECMag(&sp14) < 55.0f) { - break; - } - } - if(temp_r28 == 5) { - lbl_1_bss_18B4[arg0].x += temp_f31; - if(lbl_1_bss_18B4[arg0].x < lbl_1_data_2A0[(arg0*2)]) { - lbl_1_bss_18B4[arg0].x = lbl_1_data_2A0[(arg0*2)]; - temp_r31[1] ^= 0x1; - temp_r31[1] |= 0x4; - temp_r31[0] = 60; - } - if(lbl_1_bss_18B4[arg0].x > lbl_1_data_2A0[(arg0*2)+1]) { - lbl_1_bss_18B4[arg0].x = lbl_1_data_2A0[(arg0*2)+1]; - temp_r31[1] ^= 0x1; - temp_r31[1] |= 0x4; - temp_r31[0] = 60; - } - } else { - temp_r31[1] ^= 0x1; - temp_r31[1] |= 0x4; - temp_r31[0] = 60; - } - } - } - } - lbl_1_bss_824[arg0].x = lbl_1_bss_18B4[arg0].x; - lbl_1_bss_824[arg0].y = 215; - lbl_1_bss_824[arg0].z = lbl_1_bss_18B4[arg0].y; + float temp_f31; + float temp_f30; + float temp_f29; + s16 *temp_r31; + s16 temp_r29; + s16 temp_r28; + Vec sp14; + Vec sp8; + temp_r31 = &lbl_1_bss_198F0[arg0][0]; + temp_r29 = lbl_1_bss_199C2[arg0 + 38]; + if (temp_r31[1] & 0x2) { + if (temp_r31[0] == 85) { + if (Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[45] && Hu3DMotionShiftIDGet(temp_r29) != lbl_1_bss_1990E[45]) { + Hu3DMotionShiftSet(temp_r29, lbl_1_bss_1990E[45], 0, 8, HU3D_MOTATTR_NONE); + } + } + else { + if (Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[46] && Hu3DMotionShiftIDGet(temp_r29) != lbl_1_bss_1990E[46]) { + Hu3DMotionShiftSet(temp_r29, lbl_1_bss_1990E[46], 0, 8, HU3D_MOTATTR_LOOP); + } + } + temp_r31[0]--; + if (temp_r31[0] <= 0) { + temp_r31[1] &= ~0x2; + temp_r31[1] |= 0x4; + temp_r31[0] = 20; + } + } + else { + if (temp_r31[1] & 0x4) { + if (Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[43] && Hu3DMotionShiftIDGet(temp_r29) != lbl_1_bss_1990E[43]) { + Hu3DMotionShiftSet(temp_r29, lbl_1_bss_1990E[43], 0, 16, HU3D_MOTATTR_LOOP); + } + temp_r31[0]--; + if (temp_r31[0] <= 0) { + temp_r31[1] &= ~0x4; + temp_r31[0] = frandmod(30) + 30; + } + } + else { + temp_r31[0]--; + if (temp_r31[0] <= 0) { + temp_r31[1] |= 4; + temp_r31[0] = 60; + } + else { + if (Hu3DMotionIDGet(temp_r29) != lbl_1_bss_1990E[44]) { + Hu3DMotionSet(temp_r29, lbl_1_bss_1990E[44]); + } + if (temp_r31[1] & 0x1) { + temp_f31 = -1; + temp_f30 = -90; + } + else { + temp_f31 = 1; + temp_f30 = 90; + } + sp8 = lbl_1_bss_18B4[arg0]; + sp8.x += temp_f31; + for (temp_r28 = 0; temp_r28 < 5; temp_r28++) { + if (temp_r28 == arg0 || lbl_1_bss_18A0[temp_r28] == 0) { + continue; + } + VECSubtract(&sp8, &lbl_1_bss_18B4[temp_r28], &sp14); + if (VECMag(&sp14) < 55.0f) { + break; + } + } + if (temp_r28 == 5) { + lbl_1_bss_18B4[arg0].x += temp_f31; + if (lbl_1_bss_18B4[arg0].x < lbl_1_data_2A0[(arg0 * 2)]) { + lbl_1_bss_18B4[arg0].x = lbl_1_data_2A0[(arg0 * 2)]; + temp_r31[1] ^= 0x1; + temp_r31[1] |= 0x4; + temp_r31[0] = 60; + } + if (lbl_1_bss_18B4[arg0].x > lbl_1_data_2A0[(arg0 * 2) + 1]) { + lbl_1_bss_18B4[arg0].x = lbl_1_data_2A0[(arg0 * 2) + 1]; + temp_r31[1] ^= 0x1; + temp_r31[1] |= 0x4; + temp_r31[0] = 60; + } + } + else { + temp_r31[1] ^= 0x1; + temp_r31[1] |= 0x4; + temp_r31[0] = 60; + } + } + } + } + lbl_1_bss_824[arg0].x = lbl_1_bss_18B4[arg0].x; + lbl_1_bss_824[arg0].y = 215; + lbl_1_bss_824[arg0].z = lbl_1_bss_18B4[arg0].y; } -s16 lbl_1_data_3A4[] = { - 4, 3, 7 -}; +s16 lbl_1_data_3A4[] = { 4, 3, 7 }; -Vec lbl_1_data_3AC[] = { - { -118.75, -70, 0}, - { -56.25, -70, 0 }, - { 6.25, -70, 0 }, - { 68.75, -70, 0} -}; +Vec lbl_1_data_3AC[] = { { -118.75, -70, 0 }, { -56.25, -70, 0 }, { 6.25, -70, 0 }, { 68.75, -70, 0 } }; Vec lbl_1_data_3DC[] = { - { -108.35, -70, 0}, - { -25.05, -70, 0 }, - { 58.25, -70, 0 }, + { -108.35, -70, 0 }, + { -25.05, -70, 0 }, + { 58.25, -70, 0 }, }; -Vec lbl_1_data_400[] = { - { -125, -70, 0 }, - { -75, -70, 0 }, - { -25, -70, 0 }, - { 25, -70, 0 }, - { 75, -70, 0 }, - { -85, -190, 0 }, - { 35, -190, 0 } -}; +Vec lbl_1_data_400[] = { { -125, -70, 0 }, { -75, -70, 0 }, { -25, -70, 0 }, { 25, -70, 0 }, { 75, -70, 0 }, { -85, -190, 0 }, { 35, -190, 0 } }; -Vec *lbl_1_data_454[] = { - lbl_1_data_3AC, - lbl_1_data_3DC, - lbl_1_data_400 -}; +Vec *lbl_1_data_454[] = { lbl_1_data_3AC, lbl_1_data_3DC, lbl_1_data_400 }; Vec *fn_1_CA30(Vec *arg0, Vec *arg1, Vec *arg2); @@ -724,478 +716,509 @@ float fn_1_CB70(Vec *arg0, Vec *arg1, Vec *arg2); s16 fn_1_B1E8(Vec *arg0, Vec *arg1, s16 arg2) { - float temp_f31; - float temp_f30; - float temp_f28; - float temp_f27; - - s16 temp_r30; - Vec *temp_r28; - s32 temp_r27; - Vec *temp_r25; - u8 temp_r24; - s16 temp_r23; - Vec sp4C; - - Vec sp40; - Vec sp34; - Vec sp28; - Vec sp1C; - Vec sp10; - s32 spC; - - temp_r23 = -1; - spC = 1; - temp_f28 = VECMag(arg1); - sp1C = *arg1; - temp_r27 = 0; - sp10 = *arg0; - temp_r24 = lbl_1_bss_310-120; - for(temp_r30=temp_f30=0; temp_r30<120; temp_r30++, temp_r24++) { - temp_f30 += lbl_1_bss_370[temp_r24]; - } - if(temp_f30 < 120.0f*sqrtf(6.0f)) { - lbl_1_bss_312 = 10; - } - while(temp_f28 > 0.0f) { - if(temp_f28 > 3.0f) { - temp_f28 -= 3.0f; - temp_f31 = 3.0f; - } else { - temp_f31 = temp_f28; - temp_f28 = 0; - } - VECNormalize(&sp1C, &sp1C); - VECScale(&sp1C, &sp1C, temp_f31); - VECAdd(arg0, &sp1C, &sp4C); - temp_f31 = VECMag(&sp1C); - if(lbl_1_bss_312 == 0) { - for(temp_r30=0; temp_r30<5; temp_r30++) { - if(lbl_1_bss_18A0[temp_r30] == 0) { - continue; - } - VECSubtract(&sp4C, &lbl_1_bss_18B4[temp_r30], &sp34); - temp_f30 = VECMag(&sp34); - if(temp_f30 < 33.0) { - VECNormalize(&sp34, &sp34); - VECScale(&sp34, &sp28, 33.0f); - VECAdd(&lbl_1_bss_18B4[temp_r30], &sp28, &sp4C); - VECScale(&sp1C, &sp28, -1.0f); - temp_f27 = (sp28.x*sp34.x)+(sp28.y*sp34.y); - sp34.x = (2.0*sp34.x*temp_f27)-sp28.x; - sp34.y = (2.0*sp34.y*temp_f27)-sp28.y; - sp34.z = 0; - VECNormalize(&sp34, &sp34); - VECScale(&sp34, &sp1C, temp_f31); - VECAdd(&sp4C, &sp1C, &sp34); - temp_f30 = VECSquareDistance(&sp34, &lbl_1_bss_18B4[temp_r30]); - if(temp_f30 < 1089.0) { - VECScale(&sp1C, &sp1C, -1.0f); - } - lbl_1_bss_198F0[temp_r30][1] = 2; - lbl_1_bss_198F0[temp_r30][0] = 100; - temp_r27 = 1; - } - } - } else { - lbl_1_bss_312--; - } - for(temp_r30=0; temp_r30= 169.0f && VECSquareDistance(&lbl_1_bss_18F0[temp_r30], &sp4C) >= 169.0f) { - VECSubtract(temp_r25, &lbl_1_bss_D8F0[temp_r30], &sp34); - if(VECMag2Point(&sp34) > VECMag2Point(&sp40)) { - continue; - } - VECSubtract(temp_r25, &lbl_1_bss_18F0[temp_r30], &sp34); - if(VECMag2Point(&sp34) > VECMag2Point(&sp40)) { - continue; - } - } - VECSubtract(&sp4C, temp_r25, &sp34); - VECNormalize(&sp34, &sp34); - VECScale(&sp34, &sp34, 13.0f); - VECAdd(temp_r25, &sp34, &sp4C); - VECSubtract(arg0, &sp4C, &sp34); - *arg0 = sp4C; - temp_f31 -= VECMag(&sp34); - if(temp_f31 < 0.0f) { - temp_f28 -= temp_f31; - temp_f31 = ABS(temp_f31); - } - sp34 = sp40; - sp34.z = 1; - VECCrossProduct(&sp34, &sp40, &sp34); - VECNormalize(&sp34, &sp34); - VECScale(&sp1C, &sp28, -1.0f); - temp_f27 = (sp28.x*sp34.x)+(sp28.y*sp34.y); - sp34.x = (1.5*sp34.x*temp_f27)-sp28.x; - sp34.y = (1.5*sp34.y*temp_f27)-sp28.y; - sp34.z = 0; - VECNormalize(&sp34, &sp34); - VECScale(&sp34, &sp1C, temp_f31); - lbl_1_bss_884[temp_r30] = 10; - VECScale(arg1, arg1, 0.96f); - VECNormalize(&sp1C, &sp34); - VECNormalize(arg1, &sp28); - if(VECDotProduct(&sp34, &sp28) < 0.5) { - temp_r27 = 1; - } - } - } - VECAdd(arg0, &sp1C, arg0); - if(arg0->x >= lbl_1_bss_77C.x-13.0f) { - arg0->x = lbl_1_bss_77C.x-13.0f-1.0f; - } - if(arg0->y >= lbl_1_bss_77C.y-13.0f) { - arg0->y = lbl_1_bss_77C.y-13.0f-1.0f; - } - if(arg0->x <= lbl_1_bss_770.x+13.0f) { - arg0->x = lbl_1_bss_770.x+13.0f+1.0f; - } - if(arg0->y <= lbl_1_bss_770.y+13.0f) { - arg0->y = lbl_1_bss_770.y+13.0f+1.0f; - } - } - temp_f31 = VECMag(arg1); - VECNormalize(&sp1C, &sp1C); - VECScale(&sp1C, arg1, temp_f31); - if(temp_r27 != 0) { - HuAudFXPlay(1853); - } - if(arg2 < 0 || arg2 >= 3) { - arg2 = 0; - } - temp_r28 = lbl_1_data_454[arg2]; - for(temp_r30=0; temp_r30x = arg1->y = arg1->z = 0; - *arg0 = *temp_r28; - temp_r23= temp_r30; - break; - } - if(temp_f30 < 20.0f) { - VECScale(arg1, arg1, 0.9f); - VECNormalize(&sp34, &sp34); - VECScale(&sp34, &sp34, 0.1*(20.0f-temp_f30)); - VECAdd(arg1, &sp34, arg1); - break; - } - } - if(temp_r30 == lbl_1_data_3A4[arg2]) { - arg1->y += 0.3; - } - if(arg0->x >= lbl_1_bss_77C.x-13.0f) { - arg0->x = lbl_1_bss_77C.x-13.0f-1.0f; - } - if(arg0->y >= lbl_1_bss_77C.y-13.0f) { - arg0->y = lbl_1_bss_77C.y-13.0f-1.0f; - } - if(arg0->x <= lbl_1_bss_770.x+13.0f) { - arg0->x = lbl_1_bss_770.x+13.0f+1.0f; - } - if(arg0->y <= lbl_1_bss_770.y+13.0f) { - arg0->y = lbl_1_bss_770.y+13.0f+1.0f; - } - VECSubtract(arg0, &sp10, &sp34); - lbl_1_bss_370[lbl_1_bss_310++] = VECMag(&sp34); - return temp_r23; + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + s32 spC; + + float temp_f31; + float temp_f30; + float temp_f28; + float temp_f27; + + s16 temp_r30; + Vec *temp_r28; + s32 temp_r27; + Vec *temp_r25; + u8 temp_r24; + + s16 temp_r23 = -1; + spC = 1; + temp_f28 = VECMag(arg1); + sp1C = *arg1; + temp_r27 = 0; + sp10 = *arg0; + temp_r24 = lbl_1_bss_310 - 120; + for (temp_r30 = temp_f30 = 0; temp_r30 < 120; temp_r30++, temp_r24++) { + temp_f30 += lbl_1_bss_370[temp_r24]; + } + if (temp_f30 < 120.0f * sqrtf(6.0f)) { + lbl_1_bss_312 = 10; + } + while (temp_f28 > 0.0f) { + if (temp_f28 > 3.0f) { + temp_f28 -= 3.0f; + temp_f31 = 3.0f; + } + else { + temp_f31 = temp_f28; + temp_f28 = 0; + } + VECNormalize(&sp1C, &sp1C); + VECScale(&sp1C, &sp1C, temp_f31); + VECAdd(arg0, &sp1C, &sp4C); + temp_f31 = VECMag(&sp1C); + if (lbl_1_bss_312 == 0) { + for (temp_r30 = 0; temp_r30 < 5; temp_r30++) { + if (lbl_1_bss_18A0[temp_r30] == 0) { + continue; + } + VECSubtract(&sp4C, &lbl_1_bss_18B4[temp_r30], &sp34); + temp_f30 = VECMag(&sp34); + if (temp_f30 < 33.0) { + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp28, 33.0f); + VECAdd(&lbl_1_bss_18B4[temp_r30], &sp28, &sp4C); + VECScale(&sp1C, &sp28, -1.0f); + temp_f27 = (sp28.x * sp34.x) + (sp28.y * sp34.y); + sp34.x = (2.0 * sp34.x * temp_f27) - sp28.x; + sp34.y = (2.0 * sp34.y * temp_f27) - sp28.y; + sp34.z = 0; + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp1C, temp_f31); + VECAdd(&sp4C, &sp1C, &sp34); + temp_f30 = VECSquareDistance(&sp34, &lbl_1_bss_18B4[temp_r30]); + if (temp_f30 < 1089.0) { + VECScale(&sp1C, &sp1C, -1.0f); + } + lbl_1_bss_198F0[temp_r30][1] = 2; + lbl_1_bss_198F0[temp_r30][0] = 100; + temp_r27 = 1; + } + } + } + else { + lbl_1_bss_312--; + } + for (temp_r30 = 0; temp_r30 < lbl_1_bss_1884; temp_r30++) { + if (VECSquareDistance(&lbl_1_bss_D8F0[temp_r30], &sp4C) <= 169.0f) { + VECSubtract(&sp4C, &lbl_1_bss_D8F0[temp_r30], &sp34); + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp34, 13.05f); + VECAdd(&lbl_1_bss_D8F0[temp_r30], &sp34, &sp4C); + VECScale(arg1, arg1, 0.96f); + temp_r27 = 1; + } + else { + if (VECSquareDistance(&lbl_1_bss_18F0[temp_r30], &sp4C) <= 169.0f) { + VECSubtract(&sp4C, &lbl_1_bss_18F0[temp_r30], &sp34); + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp34, 13.05f); + VECAdd(&lbl_1_bss_18F0[temp_r30], &sp34, &sp4C); + VECScale(arg1, arg1, 0.96f); + temp_r27 = 1; + } + else { + continue; + } + } + *arg0 = sp4C; + break; + } + if (temp_f31 == 0.0) { + continue; + } + for (temp_r30 = 0; temp_r30 < lbl_1_bss_1884; temp_r30++) { + VECSubtract(&lbl_1_bss_18F0[temp_r30], &lbl_1_bss_D8F0[temp_r30], &sp40); + temp_f30 = fn_1_CB70(&sp4C, &lbl_1_bss_D8F0[temp_r30], &sp40); + if (temp_f30 < 13.0f) { + temp_r25 = fn_1_CA30(&sp4C, &lbl_1_bss_D8F0[temp_r30], &sp40); + if (VECSquareDistance(&lbl_1_bss_D8F0[temp_r30], &sp4C) >= 169.0f && VECSquareDistance(&lbl_1_bss_18F0[temp_r30], &sp4C) >= 169.0f) { + VECSubtract(temp_r25, &lbl_1_bss_D8F0[temp_r30], &sp34); + if (VECMag2Point(&sp34) > VECMag2Point(&sp40)) { + continue; + } + VECSubtract(temp_r25, &lbl_1_bss_18F0[temp_r30], &sp34); + if (VECMag2Point(&sp34) > VECMag2Point(&sp40)) { + continue; + } + } + VECSubtract(&sp4C, temp_r25, &sp34); + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp34, 13.0f); + VECAdd(temp_r25, &sp34, &sp4C); + VECSubtract(arg0, &sp4C, &sp34); + *arg0 = sp4C; + temp_f31 -= VECMag(&sp34); + if (temp_f31 < 0.0f) { + temp_f28 -= temp_f31; + temp_f31 = ABS(temp_f31); +#if VERSION_REV1 + if (temp_f31 == 0.0) { + sp1C.x = sp1C.y = sp1C.z = 0.0f; + break; + } +#endif + } + sp34 = sp40; + sp34.z = 1; + VECCrossProduct(&sp34, &sp40, &sp34); + VECNormalize(&sp34, &sp34); + VECScale(&sp1C, &sp28, -1.0f); + temp_f27 = (sp28.x * sp34.x) + (sp28.y * sp34.y); + sp34.x = (1.5 * sp34.x * temp_f27) - sp28.x; + sp34.y = (1.5 * sp34.y * temp_f27) - sp28.y; + sp34.z = 0; + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp1C, temp_f31); + lbl_1_bss_884[temp_r30] = 10; + VECScale(arg1, arg1, 0.96f); + VECNormalize(&sp1C, &sp34); + VECNormalize(arg1, &sp28); + if (VECDotProduct(&sp34, &sp28) < 0.5) { + temp_r27 = 1; + } + } + } + VECAdd(arg0, &sp1C, arg0); + if (arg0->x >= lbl_1_bss_77C.x - 13.0f) { + arg0->x = lbl_1_bss_77C.x - 13.0f - 1.0f; + } + if (arg0->y >= lbl_1_bss_77C.y - 13.0f) { + arg0->y = lbl_1_bss_77C.y - 13.0f - 1.0f; + } + if (arg0->x <= lbl_1_bss_770.x + 13.0f) { + arg0->x = lbl_1_bss_770.x + 13.0f + 1.0f; + } + if (arg0->y <= lbl_1_bss_770.y + 13.0f) { + arg0->y = lbl_1_bss_770.y + 13.0f + 1.0f; + } + } + temp_f31 = VECMag(arg1); +#if VERSION_REV1 + if (VECMag(&sp1C) == 0.0) { + sp1C.x = 0.0f; + sp1C.y = 1.0f; + sp1C.z = 0.0f; + } +#endif + VECNormalize(&sp1C, &sp1C); + VECScale(&sp1C, arg1, temp_f31); + if (temp_r27 != 0) { + HuAudFXPlay(1853); + } + if (arg2 < 0 || arg2 >= 3) { + arg2 = 0; + } + temp_r28 = lbl_1_data_454[arg2]; + for (temp_r30 = 0; temp_r30 < lbl_1_data_3A4[arg2]; temp_r30++, temp_r28++) { + VECSubtract(temp_r28, arg0, &sp34); + temp_f30 = VECMag(&sp34); + if (temp_f30 < 3.0f && VECMag(arg1) < 1.0f) { + arg1->x = arg1->y = arg1->z = 0.0f; + *arg0 = *temp_r28; + temp_r23 = temp_r30; + break; + } + if (temp_f30 < 20.0f +#if VERSION_REV1 + && !(temp_f30 < 0.000001) +#endif + ) { + VECScale(arg1, arg1, 0.9f); + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp34, 0.1 * (20.0f - temp_f30)); + VECAdd(arg1, &sp34, arg1); + break; + } + } + if (temp_r30 == lbl_1_data_3A4[arg2]) { + arg1->y += 0.3; +#if VERSION_REV1 + if (VECMag((Vec *)&arg1) < 0.000001) { + arg1->y += 0.3; + } +#endif + } + if (arg0->x >= lbl_1_bss_77C.x - 13.0f) { + arg0->x = lbl_1_bss_77C.x - 13.0f - 1.0f; + } + if (arg0->y >= lbl_1_bss_77C.y - 13.0f) { + arg0->y = lbl_1_bss_77C.y - 13.0f - 1.0f; + } + if (arg0->x <= lbl_1_bss_770.x + 13.0f) { + arg0->x = lbl_1_bss_770.x + 13.0f + 1.0f; + } + if (arg0->y <= lbl_1_bss_770.y + 13.0f) { + arg0->y = lbl_1_bss_770.y + 13.0f + 1.0f; + } + VECSubtract(arg0, &sp10, &sp34); + lbl_1_bss_370[lbl_1_bss_310++] = VECMag(&sp34); + return temp_r23; } void fn_1_C214(void) { - Mtx sp98; - Mtx sp68; - Mtx sp38; - Mtx sp8; - ModelData *temp_r31; - s16 temp_r30; - s16 temp_r29; - MTXRotDeg(sp8, 'z', 120); - while(1) { - temp_r31 = &Hu3DData[lbl_1_bss_199C2[9]]; - Hu3DMotionExec(lbl_1_bss_199C2[9], temp_r31->unk_08, temp_r31->unk_64, 0); - Hu3DModelObjMtxGet(lbl_1_bss_199C2[9], "kaitendai-r_dai", sp38); - for(temp_r30=0; temp_r30<3; temp_r30++) { - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30]]; - MTXTrans(sp68, lbl_1_bss_860[temp_r30].x, lbl_1_bss_860[temp_r30].y, lbl_1_bss_860[temp_r30].z); - MTXConcat(sp68, lbl_1_bss_794[temp_r30], sp68); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30+55]]; - MTXTrans(sp68, 0, 150, 0); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30+58]]; - MTXTrans(sp68, 0, 150, 0); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30+65]]; - MTXTrans(sp68, 0, 150, 0); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30+68]]; - MTXTrans(sp68, 0, 150, lbl_1_bss_788[temp_r30]-5.0f); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - for(temp_r29=0; temp_r29<5; temp_r29++) { - if(temp_r30 != lbl_1_data_2C8[temp_r29]) { - continue; - } - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r29+38]]; - MTXTrans(sp68, lbl_1_bss_824[temp_r29].x, lbl_1_bss_824[temp_r29].y, lbl_1_bss_824[temp_r29].z); - mtxScaleCat(sp68, 0.35f, 0.35f, 0.35f); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r29+85]]; - MTXTrans(sp68, lbl_1_bss_824[temp_r29].x, lbl_1_bss_824[temp_r29].y+1.0f, lbl_1_bss_824[temp_r29].z); - mtxScaleCat(sp68, 0.5f, 0.5f, 0.5f); - MTXConcat(sp38, sp68, sp98); - MTXCopy(sp98, temp_r31->unk_F0); - } - MTXConcat(sp38, sp8, sp38); - } - HuPrcVSleep(); - } - + Mtx sp98; + Mtx sp68; + Mtx sp38; + Mtx sp8; + ModelData *temp_r31; + s16 temp_r30; + s16 temp_r29; + MTXRotDeg(sp8, 'z', 120); + while (1) { + temp_r31 = &Hu3DData[lbl_1_bss_199C2[9]]; + Hu3DMotionExec(lbl_1_bss_199C2[9], temp_r31->unk_08, temp_r31->unk_64, 0); + Hu3DModelObjMtxGet(lbl_1_bss_199C2[9], "kaitendai-r_dai", sp38); + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30]]; + MTXTrans(sp68, lbl_1_bss_860[temp_r30].x, lbl_1_bss_860[temp_r30].y, lbl_1_bss_860[temp_r30].z); + MTXConcat(sp68, lbl_1_bss_794[temp_r30], sp68); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30 + 55]]; + MTXTrans(sp68, 0, 150, 0); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30 + 58]]; + MTXTrans(sp68, 0, 150, 0); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30 + 65]]; + MTXTrans(sp68, 0, 150, 0); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r30 + 68]]; + MTXTrans(sp68, 0, 150, lbl_1_bss_788[temp_r30] - 5.0f); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + for (temp_r29 = 0; temp_r29 < 5; temp_r29++) { + if (temp_r30 != lbl_1_data_2C8[temp_r29]) { + continue; + } + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r29 + 38]]; + MTXTrans(sp68, lbl_1_bss_824[temp_r29].x, lbl_1_bss_824[temp_r29].y, lbl_1_bss_824[temp_r29].z); + mtxScaleCat(sp68, 0.35f, 0.35f, 0.35f); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + temp_r31 = &Hu3DData[lbl_1_bss_199C2[temp_r29 + 85]]; + MTXTrans(sp68, lbl_1_bss_824[temp_r29].x, lbl_1_bss_824[temp_r29].y + 1.0f, lbl_1_bss_824[temp_r29].z); + mtxScaleCat(sp68, 0.5f, 0.5f, 0.5f); + MTXConcat(sp38, sp68, sp98); + MTXCopy(sp98, temp_r31->unk_F0); + } + MTXConcat(sp38, sp8, sp38); + } + HuPrcVSleep(); + } } void fn_1_C73C(ModelData *model, Mtx matrix) { - s16 temp_r31; - u8 temp_r30; - u8 temp_r29; - u8 temp_r28; - - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_S8, 0); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); - GXLoadPosMtxImm(matrix, GX_PNMTX0); - temp_r30 = temp_r29 = temp_r28 = 255; - for(temp_r31=0; temp_r31x*(b)->x)-((a)->x*(c)->x))+(((a)->y*(b)->y)-((a)->y*(c)->y))+(((a)->z*(b)->z)-((a)->z*(c)->z))) +#define VECDistance2XYZ3(a, b, c) \ + ((((a)->x * (b)->x) - ((a)->x * (c)->x)) + (((a)->y * (b)->y) - ((a)->y * (c)->y)) + (((a)->z * (b)->z) - ((a)->z * (c)->z))) Vec *fn_1_CA30(Vec *arg0, Vec *arg1, Vec *arg2) { - float temp_f31; - Vec spC; - VECNormalize(arg2, &spC); - temp_f31 = -VECDistance2XYZ3(&spC, arg1, arg0); - temp_f31 /= VECMag2Point(&spC); - lbl_1_bss_314.x = (arg1->x+(spC.x*temp_f31)); - lbl_1_bss_314.y = (arg1->y+(spC.y*temp_f31)); - lbl_1_bss_314.z = (arg1->z+(spC.z*temp_f31)); - return &lbl_1_bss_314; + float temp_f31; + Vec spC; + VECNormalize(arg2, &spC); + temp_f31 = -VECDistance2XYZ3(&spC, arg1, arg0); + temp_f31 /= VECMag2Point(&spC); + lbl_1_bss_314.x = (arg1->x + (spC.x * temp_f31)); + lbl_1_bss_314.y = (arg1->y + (spC.y * temp_f31)); + lbl_1_bss_314.z = (arg1->z + (spC.z * temp_f31)); + return &lbl_1_bss_314; } float fn_1_CB70(Vec *arg0, Vec *arg1, Vec *arg2) { - Vec *temp_r31 = fn_1_CA30(arg0, arg1, arg2); - temp_r31->x -= arg0->x; - temp_r31->y -= arg0->y; - temp_r31->z -= arg0->z; - return sqrtf(VECMag2Point(temp_r31)); - + Vec *temp_r31 = fn_1_CA30(arg0, arg1, arg2); + temp_r31->x -= arg0->x; + temp_r31->y -= arg0->y; + temp_r31->z -= arg0->z; + return sqrtf(VECMag2Point(temp_r31)); } s32 fn_1_CE08(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) { - float temp_f31; - float temp_f30; - s32 sp8 = 1; - temp_f31 = (arg1->x*(arg2->y-arg0->y))-(arg1->y*(arg2->x-arg0->x)); - if(0.0f != (arg3->x*arg1->y)-(arg3->y*arg1->x)) { - temp_f31 /= (arg3->x*arg1->y)-(arg3->y*arg1->x); - } else { - return 0; - } - if(arg1->x != 0.0) { - temp_f30 = (((temp_f31*arg3->x)+arg2->x)-arg0->x)/arg1->x; - } else if(arg1->y != 0.0) { - temp_f30 = (((temp_f31*arg3->y)+arg2->y)-arg0->y)/arg1->y; - } else { - temp_f30 = (((temp_f31*arg3->z)+arg2->z)-arg0->z)/arg1->z; - } - arg4->x = (temp_f30*arg1->x)+arg0->x; - arg4->y = (temp_f30*arg1->y)+arg0->y; - arg4->z = (temp_f30*arg1->z)+arg0->z; - return 1; + float temp_f31; + float temp_f30; + s32 sp8 = 1; + temp_f31 = (arg1->x * (arg2->y - arg0->y)) - (arg1->y * (arg2->x - arg0->x)); + if (0.0f != (arg3->x * arg1->y) - (arg3->y * arg1->x)) { + temp_f31 /= (arg3->x * arg1->y) - (arg3->y * arg1->x); + } + else { + return 0; + } + if (arg1->x != 0.0) { + temp_f30 = (((temp_f31 * arg3->x) + arg2->x) - arg0->x) / arg1->x; + } + else if (arg1->y != 0.0) { + temp_f30 = (((temp_f31 * arg3->y) + arg2->y) - arg0->y) / arg1->y; + } + else { + temp_f30 = (((temp_f31 * arg3->z) + arg2->z) - arg0->z) / arg1->z; + } + arg4->x = (temp_f30 * arg1->x) + arg0->x; + arg4->y = (temp_f30 * arg1->y) + arg0->y; + arg4->z = (temp_f30 * arg1->z) + arg0->z; + return 1; } s32 fn_1_CF9C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) { - float temp_f31; - float temp_f30; - Vec sp14; - Vec sp8; - sp14.x = arg1->x-arg0->x; - sp14.y = arg1->y-arg0->y; - sp14.z = arg1->z-arg0->z; - sp8.x = arg3->x-arg2->x; - sp8.y = arg3->y-arg2->y; - sp8.z = arg3->z-arg2->z; - temp_f31 = (sp14.x*(arg2->y-arg0->y))-(sp14.y*(arg2->x-arg0->x)); - if(0.0f != (sp8.x*sp14.y)-(sp8.y*sp14.x)) { - temp_f31 /= (sp8.x*sp14.y)-(sp8.y*sp14.x); - } else { - return 0; - } - if(sp14.x != 0.0) { - temp_f30 = (((temp_f31*sp8.x)+arg2->x)-arg0->x)/sp14.x; - } else if(sp14.y != 0.0) { - temp_f30 = (((temp_f31*sp8.y)+arg2->y)-arg0->y)/sp14.y; - } else { - temp_f30 = (((temp_f31*sp8.z)+arg2->z)-arg0->z)/sp14.z; - } - if(temp_f30 < 0.0f || temp_f30 > 1.0f || temp_f31 < 0.0f || temp_f31 > 1.0f) { - return 0; - } - arg4->x = (temp_f30*sp14.x)+arg0->x; - arg4->y = (temp_f30*sp14.y)+arg0->y; - arg4->z = (temp_f30*sp14.z)+arg0->z; - return 1; + float temp_f31; + float temp_f30; + Vec sp14; + Vec sp8; + sp14.x = arg1->x - arg0->x; + sp14.y = arg1->y - arg0->y; + sp14.z = arg1->z - arg0->z; + sp8.x = arg3->x - arg2->x; + sp8.y = arg3->y - arg2->y; + sp8.z = arg3->z - arg2->z; + temp_f31 = (sp14.x * (arg2->y - arg0->y)) - (sp14.y * (arg2->x - arg0->x)); + if (0.0f != (sp8.x * sp14.y) - (sp8.y * sp14.x)) { + temp_f31 /= (sp8.x * sp14.y) - (sp8.y * sp14.x); + } + else { + return 0; + } + if (sp14.x != 0.0) { + temp_f30 = (((temp_f31 * sp8.x) + arg2->x) - arg0->x) / sp14.x; + } + else if (sp14.y != 0.0) { + temp_f30 = (((temp_f31 * sp8.y) + arg2->y) - arg0->y) / sp14.y; + } + else { + temp_f30 = (((temp_f31 * sp8.z) + arg2->z) - arg0->z) / sp14.z; + } + if (temp_f30 < 0.0f || temp_f30 > 1.0f || temp_f31 < 0.0f || temp_f31 > 1.0f) { + return 0; + } + arg4->x = (temp_f30 * sp14.x) + arg0->x; + arg4->y = (temp_f30 * sp14.y) + arg0->y; + arg4->z = (temp_f30 * sp14.z) + arg0->z; + return 1; } void fn_1_D1E0(s16 model) { - Vec sp14[4]; - Vec sp8; - s32 temp_r31; - s32 temp_r30; - HsfData *temp_r29; - HsfBuffer *temp_r28; - HsfFace *temp_r27; - s32 temp_r26; - s32 temp_r25; - s32 temp_r24; - s32 temp_r23; - HsfBuffer *temp_r22; - temp_r29 = Hu3DData[model].hsfData; - lbl_1_bss_77C.x = lbl_1_bss_77C.y = -100000; - lbl_1_bss_770.x = lbl_1_bss_770.y = 100000; - temp_r28 = temp_r29->face; - for(temp_r24=temp_r31=0; temp_r24faceCnt; temp_r24++, temp_r28++) { - temp_r27 = temp_r28->data; - for(temp_r23=0; temp_r23count; temp_r23++, temp_r27++) { - switch(temp_r27->type & 0x7) { - case 0: - case 1: - case 2: - break; - - case 3: - temp_r22 = temp_r29->vertex; - for(temp_r26=temp_r25=0; temp_r26<4; temp_r26++) { - sp8 = ((Vec *)temp_r22->data)[temp_r27->indices[temp_r26][0]]; - for(temp_r30=0; temp_r30 lbl_1_bss_77C.x) { - lbl_1_bss_77C.x = sp14[0].x; - } - if(sp14[0].z > lbl_1_bss_77C.y) { - lbl_1_bss_77C.y = sp14[0].z; - } - if(sp14[0].x < lbl_1_bss_770.x) { - lbl_1_bss_770.x = sp14[0].x; - } - if(sp14[0].z < lbl_1_bss_770.y) { - lbl_1_bss_770.y = sp14[0].z; - } - lbl_1_bss_18F0[temp_r31].x = sp14[1].x; - lbl_1_bss_18F0[temp_r31].y = sp14[1].z; - lbl_1_bss_18F0[temp_r31].z = 0; - - if(sp14[1].x > lbl_1_bss_77C.x) { - lbl_1_bss_77C.x = sp14[1].x; - } - if(sp14[1].z > lbl_1_bss_77C.y) { - lbl_1_bss_77C.y = sp14[1].z; - } - if(sp14[1].x < lbl_1_bss_770.x) { - lbl_1_bss_770.x = sp14[1].x; - } - if(sp14[1].z < lbl_1_bss_770.y) { - lbl_1_bss_770.y = sp14[1].z; - } - temp_r31++; - break; - - case 4: - break; - - default: - break; - } - } - } - lbl_1_bss_1884 = temp_r31; -} \ No newline at end of file + Vec sp14[4]; + Vec sp8; + s32 temp_r31; + s32 temp_r30; + HsfData *temp_r29; + HsfBuffer *temp_r28; + HsfFace *temp_r27; + s32 temp_r26; + s32 temp_r25; + s32 temp_r24; + s32 temp_r23; + HsfBuffer *temp_r22; + temp_r29 = Hu3DData[model].hsfData; + lbl_1_bss_77C.x = lbl_1_bss_77C.y = -100000; + lbl_1_bss_770.x = lbl_1_bss_770.y = 100000; + temp_r28 = temp_r29->face; + for (temp_r24 = temp_r31 = 0; temp_r24 < temp_r29->faceCnt; temp_r24++, temp_r28++) { + temp_r27 = temp_r28->data; + for (temp_r23 = 0; temp_r23 < temp_r28->count; temp_r23++, temp_r27++) { + switch (temp_r27->type & 0x7) { + case 0: + case 1: + case 2: + break; + + case 3: + temp_r22 = temp_r29->vertex; + for (temp_r26 = temp_r25 = 0; temp_r26 < 4; temp_r26++) { + sp8 = ((Vec *)temp_r22->data)[temp_r27->indices[temp_r26][0]]; + for (temp_r30 = 0; temp_r30 < temp_r25; temp_r30++) { + if (sp8.y != sp14[temp_r30].y) { + break; + } + } + if (temp_r30 == temp_r25) { + sp14[temp_r30].x = sp8.x; + sp14[temp_r30].y = sp8.y; + sp14[temp_r30].z = sp8.z; + temp_r25++; + } + } + lbl_1_bss_D8F0[temp_r31].x = sp14[0].x; + lbl_1_bss_D8F0[temp_r31].y = sp14[0].z; + lbl_1_bss_D8F0[temp_r31].z = 0; + if (sp14[0].x > lbl_1_bss_77C.x) { + lbl_1_bss_77C.x = sp14[0].x; + } + if (sp14[0].z > lbl_1_bss_77C.y) { + lbl_1_bss_77C.y = sp14[0].z; + } + if (sp14[0].x < lbl_1_bss_770.x) { + lbl_1_bss_770.x = sp14[0].x; + } + if (sp14[0].z < lbl_1_bss_770.y) { + lbl_1_bss_770.y = sp14[0].z; + } + lbl_1_bss_18F0[temp_r31].x = sp14[1].x; + lbl_1_bss_18F0[temp_r31].y = sp14[1].z; + lbl_1_bss_18F0[temp_r31].z = 0; + + if (sp14[1].x > lbl_1_bss_77C.x) { + lbl_1_bss_77C.x = sp14[1].x; + } + if (sp14[1].z > lbl_1_bss_77C.y) { + lbl_1_bss_77C.y = sp14[1].z; + } + if (sp14[1].x < lbl_1_bss_770.x) { + lbl_1_bss_770.x = sp14[1].x; + } + if (sp14[1].z < lbl_1_bss_770.y) { + lbl_1_bss_770.y = sp14[1].z; + } + temp_r31++; + break; + + case 4: + break; + + default: + break; + } + } + } + lbl_1_bss_1884 = temp_r31; +} diff --git a/src/REL/m444dll/shadow.c b/src/REL/m444dll/shadow.c new file mode 100644 index 00000000..9351f3e6 --- /dev/null +++ b/src/REL/m444dll/shadow.c @@ -0,0 +1,59 @@ +#include "game/hsfman.h" +#include "game/object.h" + +#include "game/window.h" + +#include "ext_math.h" + +void fn_1_D9F4(s16); + +void fn_1_D9C8(void) +{ + Hu3DLayerHookSet(7, fn_1_D9F4); +} + +void fn_1_D9F4(s16 arg0) +{ + Mtx44 sp64; + Mtx sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + GXColor spC; + CameraData *var_r31; + + var_r31 = &Hu3DCamera[0]; + C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); + GXSetProjection(sp64, GX_PERSPECTIVE); + GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + GXSetScissor(0, 0, 0x280, 0x1E0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + spC.a = 0xFF; + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetCullMode(GX_CULL_NONE); + GXSetAlphaCompare(GX_GEQUAL, 0, GX_AOP_AND, GX_GEQUAL, 0); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + sp28.x = sp28.y = sp28.z = 0.0f; + sp1C.x = sp1C.y = 0.0f; + sp1C.z = -100.0f; + sp10.x = sp10.z = 0.0f; + sp10.y = 1.0f; + C_MTXLookAt(sp34, &sp28, &sp10, &sp1C); + GXLoadPosMtxImm(sp34, 0); + sp28.x = 1.2f * (10000.0 * -sin(var_r31->fov / 2)); + sp28.y = (2.5f / 3) * (10000.0 * -sin(var_r31->fov / 2)); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-sp28.x, -sp28.y, -10000.0f); + GXPosition3f32(sp28.x, -sp28.y, -10000.0f); + GXPosition3f32(sp28.x, sp28.y, -10000.0f); + GXPosition3f32(-sp28.x, sp28.y, -10000.0f); +} diff --git a/src/REL/m445Dll/main.c b/src/REL/m445Dll/main.c new file mode 100755 index 00000000..831d1e69 --- /dev/null +++ b/src/REL/m445Dll/main.c @@ -0,0 +1,2107 @@ +#include "REL/executor.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/mapspace.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02[3]; + /* 0x08 */ char unk08[4]; + /* 0x0C */ s16 unk0C; + /* 0x0E */ s16 unk0E; + /* 0x10 */ s16 unk10; + /* 0x12 */ char unk12[2]; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20[2]; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ float unk50[2]; + /* 0x58 */ float unk58[2]; +} UnkM445Struct_00; // Size 0x60 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ s16 unk08[16]; + /* 0x28 */ s16 unk28; + /* 0x2A */ char unk2A[2]; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; +} UnkM445Struct_01; // Size 0x38 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; + /* 0x08 */ s16 unk08[8]; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ float unk50; + /* 0x54 */ float unk54; + /* 0x58 */ float unk58; + /* 0x5C */ float unk5C; + /* 0x60 */ float unk60; + /* 0x64 */ char unk64[0xC]; + /* 0x70 */ Vec unk70; + /* 0x7C */ s8 unk7C; + /* 0x7D */ s8 unk7D; + /* 0x7E */ s8 unk7E; + /* 0x7F */ s8 unk7F; + /* 0x80 */ u16 unk80; + /* 0x82 */ u16 unk82; + /* 0x84 */ float unk84; + /* 0x88 */ float unk88; + /* 0x8C */ char unk8C[4]; + /* 0x90 */ s32 unk90; + /* 0x94 */ char unk94[4]; + /* 0x98 */ s32 unk98; +} UnkM445Struct_02; // Size 0x9C + +typedef struct { + /* 0x00 */ char unk00[0x18]; + /* 0x18 */ float unk18; + /* 0x1C */ char unk1C[4]; + /* 0x20 */ float unk20; +} UnkM445Struct_03; // Size unknown + +typedef struct { + /* 0x00 */ UnkM445Struct_03 *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; +} UnkM445Struct_04; // Size unknown + +void ObjectSetup(void); +void fn_1_4B8(float arg0, float arg1, s32 arg2); +void fn_1_50C(omObjData *arg0); +void fn_1_510(omObjData *arg0); +BOOL fn_1_520(s32 arg0); +void fn_1_550(void); +float fn_1_1858(float arg0); +UnkM445Struct_01 *fn_1_18D8(void); +void fn_1_1934(void); +void fn_1_1968(void); +s32 fn_1_1AD0(s32 arg0); +void fn_1_1B0C(void); +void fn_1_1C64(void); +s8 fn_1_2BF4(s32 arg0, s32 arg1); +void fn_1_2CAC(Vec *arg0, float arg1, float arg2); +s8 fn_1_2E68(s32 arg0, s32 arg1); +u8 fn_1_2F38(s32 arg0, s32 arg1); +u16 fn_1_3010(s32 arg0); +u16 fn_1_3094(s32 arg0); +s32 fn_1_3114(UnkM445Struct_02 *arg0, float arg1, float arg2, float arg3); +s32 fn_1_3334(UnkM445Struct_02 *arg0, s32 *arg1); +void fn_1_3548(UnkM445Struct_02 *arg0); +float fn_1_42A0(float arg0, float arg1, float arg2); +BOOL fn_1_43A4(UnkM445Struct_02 *arg0, float arg1, float arg2); +void fn_1_45D0(UnkM445Struct_02 *arg0); +void fn_1_557C(void); +void fn_1_55F0(void); +void fn_1_5664(UnkM445Struct_02 *arg0, s32 arg1); +void fn_1_5700(UnkM445Struct_02 *arg0); +void fn_1_6268(void); +void fn_1_7FC0(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_8320(void); +void fn_1_8938(void); +void fn_1_89B8(void); +void fn_1_8A18(void); + +s16 lbl_1_bss_6E6; +char lbl_1_bss_6E4_pad[2]; // Unused. +s16 lbl_1_bss_6E2; +s16 lbl_1_bss_6E0; +s32 lbl_1_bss_6DC; +s32 lbl_1_bss_6D8; +s32 lbl_1_bss_6CC[3]; +s32 lbl_1_bss_6C8; +s32 lbl_1_bss_6C4; +char lbl_1_bss_6C0_pad[4]; // Unused. +UnkM445Struct_02 lbl_1_bss_588[2]; +UnkM445Struct_00 lbl_1_bss_288[8]; +UnkM445Struct_01 lbl_1_bss_58[10]; +Process *lbl_1_bss_54; +char lbl_1_bss_30_pad[0x24]; // Unused. +omObjData *lbl_1_bss_2C; +Vec lbl_1_bss_20; +Vec lbl_1_bss_14; +Vec lbl_1_bss_8; +s32 lbl_1_bss_4; +float lbl_1_bss_0; + +s32 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +// Unused. +s32 lbl_1_data_20[] = { DATADIR_MARIOMOT, DATADIR_LUIGIMOT, DATADIR_PEACHMOT, DATADIR_YOSHIMOT, DATADIR_WARIOMOT, DATADIR_DONKEYMOT, DATADIR_DAISYMOT, + DATADIR_WALUIGIMOT }; + +s32 lbl_1_data_40[] + = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), DATA_MAKE_NUM(DATADIR_M445, 0), + DATA_MAKE_NUM(DATADIR_M445, 8), DATA_MAKE_NUM(DATADIR_M445, 16), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) }; + +Vec lbl_1_data_60[] = { { -100.0f, 75.0f, 60.0f }, { 100.0f, 75.0f, -60.0f } }; + +Vec lbl_1_data_78[] = { { 0.0f, 0.0f, -79.5f }, { 180.0f, 0.0f, -100.5f } }; + +float lbl_1_data_90[][2] = { { 471.0f, 280.0f }, { -461.5f, 299.5f }, { 271.7f, -482.6f }, { -373.1f, -457.1f }, { 462.8f, -128.5f }, + { 0.0f, -495.4f }, { -40.8f, 632.3f }, { -477.7f, -110.0f } }; + +float lbl_1_data_D0[][2] = { { 467.0f, 393.0f }, { -461.5f, 395.5f }, { 367.7f, -492.1f }, { -268.9f, -467.0f }, { 462.8f, -128.5f }, + { 0.0f, -495.4f }, { -40.8f, 632.3f }, { -477.7f, -110.0f } }; + +s32 lbl_1_data_110[][2] = { { 360, 306 }, { -360, 341 }, { 326, -360 }, { -326, -360 }, { 321, -122 }, { 0, -332 }, { -50, 500 }, { -334, -110 } }; + +char *lbl_1_data_220[][2] = { { "tansu_w_itemhook1", "tansu_w_itemhook2" }, { "sidebord_itemhook1", "sidebord_itemhook2" }, + { "pinkshelf_itemhook1", "pinkshelf_itemhook2" }, { "green_itemhook1", "green_itemhook2" }, { "bookshelf_itemhook", "bookshelf_itemhook" }, + { "clock_itemhook", "clock_itemhook" }, { "book_itemhook", "book_itemhook" }, { "tv_itemhook", "tv_itemhook" } }; + +s32 lbl_1_data_260[] = { 2, 2, 2, 2, 1, 1, 1, 1 }; + +void ObjectSetup(void) +{ + lbl_1_bss_54 = omInitObjMan(50, 0x2000); + omGameSysInit(lbl_1_bss_54); + HuWinInit(1); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 40.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 640, 480); + lbl_1_bss_2C = omAddObjEx(lbl_1_bss_54, 32730, 0, 0, -1, omOutViewMulti); + lbl_1_bss_2C->work[0] = 1; + CRotM[0].x = -12.5f; + CRotM[0].y = 0.0f; + CRotM[0].z = 0.0f; + CenterM[0].x = 0.0f; + CenterM[0].y = 345.0f; + CenterM[0].z = -250.0f; + CZoomM[0] = 520.0f; + Hu3DLighInit(); + lbl_1_bss_6E6 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightPosAimSet(lbl_1_bss_6E6, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_6E6); + lbl_1_bss_20.x = -200.0f; + lbl_1_bss_20.y = 4000.0f; + lbl_1_bss_20.z = 0.0f; + lbl_1_bss_14.x = lbl_1_bss_14.z = 0.0f; + lbl_1_bss_14.y = 1.0f; + lbl_1_bss_8.x = 0.0f; + lbl_1_bss_8.y = 0.0f; + lbl_1_bss_8.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowPosSet(&lbl_1_bss_20, &lbl_1_bss_14, &lbl_1_bss_8); + Hu3DBGColorSet(0, 0, 0); + fn_1_550(); + HuPrcChildCreate(fn_1_8A18, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); +} + +void fn_1_4B8(float arg0, float arg1, s32 arg2) +{ + Vec sp14; + + sp14.x = arg0; + sp14.y = 0.0f; + sp14.z = arg1; + HuAudFXEmiterPlay(arg2, &sp14); +} + +void fn_1_50C(omObjData *arg0) { } + +void fn_1_510(omObjData *arg0) +{ + arg0->func = fn_1_50C; +} + +BOOL fn_1_520(s32 arg0) +{ + return (GWPlayerCfg[arg0].character == 9); +} + +void fn_1_550(void) +{ + float var_f31; + float var_f30; + float var_f29; + UnkM445Struct_00 *temp_r26; + UnkM445Struct_01 *temp_r25; + UnkM445Struct_02 *temp_r31; + omObjData *temp_r24; + Process *var_r22; + AnimData *var_r20; + AnimData *sp38[4]; + void *var_r29; + s16 var_r30; + s32 var_r23; + s32 var_r21; + Vec sp2C; + Vec sp20; + s32 i; + s32 j; + + nMap = 0; + HuAudSndGrpSet(0x47); + sp2C.x = 0.0f; + sp2C.y = 998.0f; + sp2C.z = 1551.0f; + sp20.x = 0.0f; + sp20.y = -0.5f; + sp20.z = -1.0f; + HuAudFXListnerSetEX(&sp2C, &sp20, 10000.0f, 0.5666667f, 0.0f, 300.0f, 300.0f); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 24), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(var_r30, 0); + Hu3DModelShadowMapSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 25), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + temp_r24 = omAddObjEx(lbl_1_bss_54, 0x100, 1, 0, -1, fn_1_510); + MapObject[nMap++] = temp_r24; + temp_r24->model[0] = var_r30; + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 26), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(var_r30, 0); + Hu3DModelShadowSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 27), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelLayerSet(var_r30, 0); + Hu3DModelShadowMapSet(var_r30); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + temp_r24 = omAddObjEx(lbl_1_bss_54, 0x100, 1, 0, -1, fn_1_510); + MapObject[nMap++] = temp_r24; + temp_r24->model[0] = var_r30; + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 100), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_6E0 = Hu3DModelCreate(var_r29); + Hu3DModelAttrSet(lbl_1_bss_6E0, HU3D_ATTR_DISPOFF); + for (i = 0; i < 8; i++) { + temp_r26 = &lbl_1_bss_288[i]; + temp_r26->unk14 = i; + temp_r26->unk30 = 0; + var_r23 = DATA_MAKE_NUM(DATADIR_M445, 38 + i * 5); + var_r29 = HuDataSelHeapReadNum(var_r23, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r26->unk00 = var_r30; + for (j = 0, var_r23++; j < 3; j++) { + var_r29 = HuDataSelHeapReadNum(var_r23++, MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26->unk02[j] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DModelShadowSet(var_r30); + Hu3DMotionSet(var_r30, temp_r26->unk02[0]); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + temp_r26->unk48 = lbl_1_data_110[i][0]; + temp_r26->unk4C = lbl_1_data_110[i][1]; + temp_r26->unk50[0] = lbl_1_data_90[i][0]; + temp_r26->unk58[0] = lbl_1_data_90[i][1]; + temp_r26->unk50[1] = lbl_1_data_D0[i][0]; + temp_r26->unk58[1] = lbl_1_data_D0[i][1]; + if (i == 5) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 81), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_6E2 = Hu3DJointMotion(var_r30, var_r29); + Hu3DMotionSet(var_r30, lbl_1_bss_6E2); + Hu3DMotionTimeSet(var_r30, 61.0f); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE); + } + if (i == 6) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 78), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26->unk0E = Hu3DJointMotion(var_r30, var_r29); + } + if (i == 7) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 79), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26->unk0E = Hu3DJointMotion(var_r30, var_r29); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 80), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26->unk10 = Hu3DJointMotion(var_r30, var_r29); + } + temp_r26->unk18 = nMap; + var_r29 = HuDataSelHeapReadNum(var_r23, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + temp_r24 = MapObject[nMap++] = omAddObjEx(lbl_1_bss_54, 0x100, 1, 0, -1, fn_1_510); + temp_r24->model[0] = var_r30; + temp_r24->trans.x = temp_r26->unk48; + temp_r24->trans.y = 0.0f; + temp_r24->trans.z = temp_r26->unk4C; + var_r22 = HuPrcChildCreate(fn_1_1C64, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r22->user_data = temp_r26; + } + HuPrcChildCreate(fn_1_1B0C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 10; i++) { + temp_r25 = &lbl_1_bss_58[i]; + temp_r25->unk2C = i; + temp_r25->unk30 = -1; + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 82), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r25->unk00 = var_r30; + for (j = 0; j < 4; j++) { + var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 83), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r25->unk08[j] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 82), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r25->unk04 = var_r30; + for (j = 0; j < 4; j++) { + var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 87), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r25->unk08[j + 4] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 91), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r25->unk02 = var_r30; + for (j = 0; j < 4; j++) { + var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 92), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r25->unk08[j + 8] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 91), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r25->unk06 = var_r30; + for (j = 0; j < 4; j++) { + var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 96), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r25->unk08[j + 12] = Hu3DJointMotion(var_r30, var_r29); + } + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 2; i++) { + temp_r31 = &lbl_1_bss_588[i]; + temp_r31->unk18 = i; + temp_r31->unk1C = i; + temp_r31->unk20 = GWPlayerCfg[i].pad_idx; + if (fn_1_520(temp_r31->unk18) == FALSE) { + temp_r31->unk00 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); + } + else { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 29), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk00 = Hu3DModelCreate(var_r29); + } + Hu3DModelLayerSet(temp_r31->unk00, 0); + CharModelStepTypeSet(lbl_1_data_0[GWPlayerCfg[i].character], 1); + CharModelLayerSetAll(3); + temp_r31->unk48 = temp_r31->unk50 = 0.0f; + if (i != 0) { + var_f31 = temp_r31->unk4C = fn_1_1858(-90.0f); + } + else { + temp_r31->unk4C = var_f31 = 90.0f; + } + temp_r31->unk60 = temp_r31->unk4C; + if (i != 0) { + var_f30 = temp_r31->unk34 = 160.0f; + } + else { + var_f30 = temp_r31->unk34 = -160.0f; + } + temp_r31->unk38 = 0.0f; + if (i != 0) { + var_f29 = temp_r31->unk3C = -45.0f; + } + else { + var_f29 = temp_r31->unk3C = 45.0f; + } + temp_r31->unk54 = 50.0f; + temp_r31->unk5C = temp_r31->unk58 = 0.0f; + HuSetVecF(&temp_r31->unk70, 0.0, 0.0, 0.0); + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + Hu3DModelShadowSet(temp_r31->unk00); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 37), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r31->unk06 = var_r30; + Hu3DModelLayerSet(var_r30, 0); + Hu3DModelShadowSet(var_r30); + Hu3DModelPosSet(var_r30, lbl_1_data_60[i].x, lbl_1_data_60[i].y, lbl_1_data_60[i].z); + Hu3DModelRotSet(var_r30, lbl_1_data_78[i].x, lbl_1_data_78[i].y, lbl_1_data_78[i].z); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 101), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r29); + temp_r31->unk02 = var_r30; + Hu3DMotionSpeedSet(var_r30, 1.4f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + if (fn_1_520(temp_r31->unk18) == FALSE) { + for (j = 0; j < 8; j++) { + var_r21 = lbl_1_data_40[j]; + if ((var_r21 & ~0xFFFF) == DATADIR_M445) { + var_r21 += GWPlayerCfg[i].character; + } + temp_r31->unk08[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], var_r21); + } + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk08[0]); + } + else { + for (j = 0; j < 7; j++) { + var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 30), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk08[j] = Hu3DJointMotion(temp_r31->unk00, var_r29); + } + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk08[0]); + CharModelEffectNpcInit(temp_r31->unk00, temp_r31->unk08[1], 0, 9); + CharModelEffectNpcInit(temp_r31->unk00, temp_r31->unk08[2], 1, 9); + } + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + if (i == 0) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 22), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp38[0] = HuSprAnimRead(var_r29); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 23), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp38[1] = HuSprAnimRead(var_r29); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 51), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp38[3] = HuSprAnimRead(var_r29); + } + if (fn_1_520(temp_r31->unk18) == FALSE) { + var_r29 = HuDataSelHeapReadNum(GWPlayerCfg[i].character + DATADIR_MGCONST, MEMORY_DEFAULT_NUM, HEAP_DATA); + } + else { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 102), MEMORY_DEFAULT_NUM, HEAP_DATA); + } + sp38[2] = HuSprAnimRead(var_r29); + temp_r31->unk04 = HuSprGrpCreate(5); + var_r30 = HuSprCreate(sp38[0], 0x1000, 0); + HuSprGrpMemberSet(temp_r31->unk04, 0, var_r30); + HuSprPosSet(temp_r31->unk04, 0, 0.0f, 0.0f); + var_r30 = HuSprCreate(sp38[1], 0x1001, 0); + HuSprGrpMemberSet(temp_r31->unk04, 1, var_r30); + HuSprPosSet(temp_r31->unk04, 1, 0.0f, 0.0f); + HuSprTPLvlSet(temp_r31->unk04, 1, 0.5f); + HuSprColorSet(temp_r31->unk04, 1, 0, 0, 0); + var_r30 = HuSprCreate(sp38[2], 0x1000, 0); + HuSprGrpMemberSet(temp_r31->unk04, 2, var_r30); + HuSprPosSet(temp_r31->unk04, 2, -36.0f, -2.0f); + var_r30 = HuSprCreate(sp38[3], 0x1000, 0); + HuSprGrpMemberSet(temp_r31->unk04, 3, var_r30); + HuSprPosSet(temp_r31->unk04, 3, 16.0f, 2.0f); + var_r30 = HuSprCreate(sp38[3], 0x1000, 0); + HuSprGrpMemberSet(temp_r31->unk04, 4, var_r30); + HuSprPosSet(temp_r31->unk04, 4, -4.0f, 2.0f); + HuSprAttrSet(temp_r31->unk04, 4, 4); + HuSprGrpPosSet(temp_r31->unk04, i * 438 + 73, 61.0f); + temp_r31->unk30 = 0; + fn_1_5664(temp_r31, temp_r31->unk30); + fn_1_55F0(); + CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); + var_r22 = HuPrcChildCreate(fn_1_6268, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r22->user_data = temp_r31; + } + var_r20 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 3), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r20, 3); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 4); + Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, fn_1_7FC0); + HuDataDirClose(DATADIR_EFFECT); + lbl_1_bss_6C8 = 0; + lbl_1_bss_6CC[0] = frandmod(25); + lbl_1_bss_6CC[1] = frandmod(25) + 30; + lbl_1_bss_6CC[2] = 1000; + HuPrcChildCreate(fn_1_89B8, 0x1000, 0x1000, 0, HuPrcCurrentGet()); +} + +float fn_1_1858(float arg0) +{ + while (arg0 >= 360.0f || arg0 < 0.0f) { + if (arg0 >= 360.0f) { + arg0 -= 360.0f; + } + if (arg0 < 0.0f) { + arg0 += 360.0f; + } + } + return arg0; +} + +UnkM445Struct_01 *fn_1_18D8(void) +{ + UnkM445Struct_01 *var_r30; + s32 i; + + for (i = 0; i < 10; i++) { + var_r30 = &lbl_1_bss_58[i]; + if (var_r30->unk30 == -1) { + break; + } + } + if (i >= 10) { + var_r30 = NULL; + } + return var_r30; +} + +void fn_1_1934(void) +{ + UnkM445Struct_04 *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + HuMemDirectFree(var_r31); +} + +void fn_1_1968(void) +{ + float var_f31; + float var_f30; + UnkM445Struct_04 *temp_r31; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + HuPrcDestructorSet(fn_1_1934); + switch (temp_r31->unk04) { + case 0: + var_f31 = -140.0f / temp_r31->unk0C; + var_f30 = 0.0f / temp_r31->unk0C; + break; + default: + var_f31 = 0.0f; + var_f30 = 0.0f; + break; + } + for (i = temp_r31->unk0C; i != 0; i--) { + temp_r31->unk00->unk18 += var_f31; + temp_r31->unk00->unk20 += var_f30; + HuPrcVSleep(); + } + while (temp_r31->unk08 == 0) { + HuPrcVSleep(); + } + for (i = temp_r31->unk0C; i != 0; i--) { + temp_r31->unk00->unk18 -= var_f31; + temp_r31->unk00->unk20 -= var_f30; + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_1AD0(s32 arg0) +{ + s32 var_r31; + + if (arg0 < 20) { + var_r31 = 3; + } + else if (arg0 < 40) { + var_r31 = 4; + } + else { + var_r31 = 5; + } + return var_r31; +} + +void fn_1_1B0C(void) +{ + UnkM445Struct_00 *temp_r30; + s32 spC; + s32 sp8; + s32 var_r29; + s32 var_r28; + s32 i; + + spC = -1; + sp8 = 0; + while (lbl_1_bss_6DC < 3) { + HuPrcVSleep(); + } + while (TRUE) { + if (lbl_1_bss_6DC >= 4) { + break; + } + for (i = 0, var_r28 = 0; i < 8; i++) { + temp_r30 = &lbl_1_bss_288[i]; + if (temp_r30->unk34 != 0) { + var_r28++; + } + } + if (var_r28 < fn_1_1AD0(lbl_1_bss_6D8 / 60)) { + var_r29 = frandmod(8) + 1; + i = 0; + while (TRUE) { + temp_r30 = &lbl_1_bss_288[i]; + if (temp_r30->unk34 == 0) { + var_r29--; + } + if (var_r29 == 0) { + break; + } + i++; + if (i >= 8) { + i = 0; + } + } + temp_r30->unk34 = 1; + HuPrcSleep(60); + } + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1C64(void) +{ + UnkM445Struct_00 *temp_r31; + UnkM445Struct_01 *var_r25; + UnkM445Struct_01 *var_r29; + s32 var_r23; + s32 var_r26; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk1C = 0; + temp_r31->unk34 = 0; + while (TRUE) { + while (temp_r31->unk34 == 0) { + HuPrcVSleep(); + } + temp_r31->unk20[0] = temp_r31->unk20[1] = 0; + temp_r31->unk0C = 0; + if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) { + temp_r31->unk0C = 4; + } + var_r25 = fn_1_18D8(); + var_r25->unk30 = temp_r31->unk14; + var_r25->unk34 = 0; + temp_r31->unk3C = var_r25->unk2C; + temp_r31->unk40 = -1; + if (lbl_1_bss_6CC[lbl_1_bss_6C8] < lbl_1_bss_6D8 / 60) { + temp_r31->unk38 = 1; + if (lbl_1_data_260[temp_r31->unk14] == 1) { + lbl_1_bss_6C8++; + } + if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) { + var_r25->unk28 = var_r25->unk04; + } + else { + var_r25->unk28 = var_r25->unk00; + } + } + else { + temp_r31->unk38 = 0; + if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) { + var_r25->unk28 = var_r25->unk06; + } + else { + var_r25->unk28 = var_r25->unk02; + } + temp_r31->unk0C += 8; + } + Hu3DModelAttrReset(var_r25->unk28, HU3D_ATTR_DISPOFF); + Hu3DModelHookSet(temp_r31->unk00, lbl_1_data_220[temp_r31->unk14][0], var_r25->unk28); + Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C]); + if (lbl_1_data_260[temp_r31->unk14] > 1) { + var_r29 = fn_1_18D8(); + var_r29->unk30 = temp_r31->unk14; + var_r29->unk34 = 0; + temp_r31->unk40 = var_r29->unk2C; + if (lbl_1_bss_6CC[lbl_1_bss_6C8] < lbl_1_bss_6D8 / 60) { + lbl_1_bss_6C8++; + if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) { + var_r29->unk28 = var_r29->unk04; + } + else { + var_r29->unk28 = var_r29->unk00; + } + } + else { + if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) { + var_r29->unk28 = var_r29->unk06; + } + else { + var_r29->unk28 = var_r29->unk02; + } + } + Hu3DModelAttrReset(var_r29->unk28, HU3D_ATTR_DISPOFF); + Hu3DModelHookSet(temp_r31->unk00, lbl_1_data_220[temp_r31->unk14][1], var_r29->unk28); + Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C]); + } + temp_r31->unk1C = 1; + temp_r31->unk44 = 0; + switch (temp_r31->unk14) { + case 0: + case 1: + case 3: + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x751); + break; + case 6: + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x753); + break; + default: + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x752); + break; + } + if (temp_r31->unk14 == 7 && temp_r31->unk38 == 0) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk0E); + } + else { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[1]); + } + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + temp_r31->unk44++; + HuPrcVSleep(); + } + if (lbl_1_bss_6DC >= 4) { + break; + } + if (temp_r31->unk14 == 7 && temp_r31->unk38 == 0) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk10); + } + else if (temp_r31->unk14 == 6 && temp_r31->unk38 == 0) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk0E); + } + else { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[2]); + } + var_r23 = 150; + Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 1]); + Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_PAUSE); + if (temp_r31->unk14 == 6) { + HuPrcSleep(12); + Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + if (temp_r31->unk38 != 0) { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x758); + } + else { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x757); + } + } + if (temp_r31->unk14 == 7) { + HuPrcSleep(11); + Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x754); + Hu3DModelAttrReset(lbl_1_bss_6E0, HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_6E0, 0.0f); + } + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + temp_r31->unk44++; + HuPrcVSleep(); + } + if (temp_r31->unk14 != 6) { + if (temp_r31->unk38 != 0) { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x758); + } + else { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x757); + } + Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + if (lbl_1_data_260[temp_r31->unk14] > 1) { + Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 1]); + Hu3DModelAttrReset(var_r29->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + } + } + while (!Hu3DMotionEndCheck(var_r25->unk28)) { + HuPrcVSleep(); + } + var_r25->unk34 = 1; + Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 2]); + Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_LOOP); + if (lbl_1_data_260[temp_r31->unk14] > 1) { + var_r29->unk34 = 1; + Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 2]); + Hu3DModelAttrSet(var_r29->unk28, HU3D_MOTATTR_LOOP); + } + temp_r31->unk1C = 2; + var_r26 = var_r23; + while (TRUE) { + if (temp_r31->unk20[0] == 1) { + temp_r31->unk20[0] = 2; + Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 3]); + Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_LOOP); + if (temp_r31->unk38 != 0) { + if (temp_r31->unk28 != 0) { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75C); + } + else { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75A); + } + } + else { + if (temp_r31->unk28 != 0) { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75B); + } + else { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x759); + } + } + } + if (temp_r31->unk20[1] == 1) { + temp_r31->unk20[1] = 2; + Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 3]); + Hu3DModelAttrReset(var_r29->unk28, HU3D_MOTATTR_LOOP); + if (temp_r31->unk38 != 0) { + if (temp_r31->unk2C != 0) { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75C); + } + else { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75A); + } + } + else { + if (temp_r31->unk2C != 0) { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75B); + } + else { + fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x759); + } + } + } + if (temp_r31->unk14 == 6 && temp_r31->unk20[0] == 2 && Hu3DMotionTimeGet(var_r25->unk28) == 12.0f) { + break; + } + if (lbl_1_data_260[temp_r31->unk14] > 1) { + if (var_r26 <= 0) { + break; + } + if (Hu3DMotionEndCheck(var_r25->unk28) && Hu3DMotionEndCheck(var_r29->unk28)) { + break; + } + } + else { + if (var_r26 <= 0) { + break; + } + if (Hu3DMotionEndCheck(var_r25->unk28)) { + break; + } + } + HuPrcVSleep(); + var_r26--; + } + temp_r31->unk1C = 0; + var_r25->unk34 = 0; + if (temp_r31->unk14 != 6) { + if (temp_r31->unk20[0] == 0) { + Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 1]); + Hu3DMotionTimeSet(var_r25->unk28, Hu3DMotionMaxTimeGet(var_r25->unk28)); + Hu3DMotionSpeedSet(var_r25->unk28, 2.0f); + Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_REV); + Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_LOOP); + } + if (lbl_1_data_260[temp_r31->unk14] > 1 && temp_r31->unk20[1] == 0) { + var_r29->unk34 = 0; + Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 1]); + Hu3DMotionTimeSet(var_r29->unk28, Hu3DMotionMaxTimeGet(var_r29->unk28)); + Hu3DMotionSpeedSet(var_r29->unk28, 2.0f); + Hu3DModelAttrSet(var_r29->unk28, HU3D_MOTATTR_REV); + Hu3DModelAttrReset(var_r29->unk28, HU3D_MOTATTR_LOOP); + } + if (lbl_1_data_260[temp_r31->unk14] > 1) { + while (!Hu3DMotionEndCheck(var_r25->unk28) || !Hu3DMotionEndCheck(var_r29->unk28)) { + HuPrcVSleep(); + } + } + else { + while (!Hu3DMotionEndCheck(var_r25->unk28)) { + HuPrcVSleep(); + } + } + } + Hu3DMotionSpeedSet(var_r25->unk28, 1.0f); + if (lbl_1_data_260[temp_r31->unk14] > 1) { + Hu3DMotionSpeedSet(var_r29->unk28, 1.0f); + } + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_REV); + if (temp_r31->unk14 == 6 && temp_r31->unk20[0] == 0) { + HuPrcSleep(26); + Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 1]); + Hu3DMotionTimeSet(var_r25->unk28, Hu3DMotionMaxTimeGet(var_r25->unk28)); + Hu3DMotionSpeedSet(var_r25->unk28, 2.0f); + Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_REV); + Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_LOOP); + } + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + var_r25->unk30 = -1; + Hu3DModelAttrSet(var_r25->unk28, HU3D_ATTR_DISPOFF); + if (lbl_1_data_260[temp_r31->unk14] > 1) { + var_r29->unk30 = -1; + Hu3DModelAttrSet(var_r29->unk28, HU3D_ATTR_DISPOFF); + } + Hu3DModelHookReset(temp_r31->unk00); + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[0]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + temp_r31->unk34 = 0; + HuPrcVSleep(); + } +} + +// identical to m411Dll/main.c::fn_1_5D58 +s8 fn_1_2BF4(s32 arg0, s32 arg1) +{ + UnkM445Struct_02 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_588[arg0]; + if (!GWPlayerCfg[arg0].iscom) { + (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk20]) : (var_r30 = HuPadStkX[temp_r31->unk20]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk7D) : (var_r30 = temp_r31->unk7C); + } + return var_r30; +} + +void fn_1_2CAC(Vec *arg0, float arg1, float arg2) +{ + float temp_f29; + + temp_f29 = sqrtf(arg0->x * arg0->x + arg0->z * arg0->z); + temp_f29 *= arg2; + arg0->x = temp_f29 * sind(arg1); + arg0->z = temp_f29 * cosd(arg1); +} + +// similar to m414Dll/main.c::fn_1_5554 +// TODO: update other files (m414 and m411). +s8 fn_1_2E68(s32 arg0, s32 arg1) +{ + UnkM445Struct_02 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_588[arg0]; + var_r30 = 0; + if (!GWPlayerCfg[arg0].iscom && lbl_1_bss_6DC < 4) { + (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk20]) : (var_r30 = HuPadStkX[temp_r31->unk20]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk7D) : (var_r30 = temp_r31->unk7C); + } + return var_r30; +} + +u8 fn_1_2F38(s32 arg0, s32 arg1) +{ + UnkM445Struct_02 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_588[arg0]; + var_r30 = 0; + if (lbl_1_bss_6DC < 4) { + if (!GWPlayerCfg[arg0].iscom) { + (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk20]) : (var_r30 = HuPadTrigL[temp_r31->unk20]); + } + else { + (arg1 != 0) ? (var_r30 = temp_r31->unk7E) : (var_r30 = temp_r31->unk7F); + } + } + return var_r30; +} + +u16 fn_1_3010(s32 arg0) +{ + UnkM445Struct_02 *temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_588[arg0]; + var_r30 = 0; + if (lbl_1_bss_6DC < 4) { + if (!GWPlayerCfg[arg0].iscom) { + var_r30 = HuPadBtnDown[temp_r31->unk20]; + } + else { + var_r30 = temp_r31->unk82; + } + } + return var_r30; +} + +u16 fn_1_3094(s32 arg0) +{ + UnkM445Struct_02 *temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_588[arg0]; + if (lbl_1_bss_6DC < 4) { + if (!GWPlayerCfg[arg0].iscom) { + var_r30 = HuPadBtn[temp_r31->unk20]; + } + else { + var_r30 = temp_r31->unk80; + } + } + return var_r30; +} + +s32 fn_1_3114(UnkM445Struct_02 *arg0, float arg1, float arg2, float arg3) +{ + Vec sp30; + Vec sp24; + Vec sp18; + s32 var_r28; + float var_f27; + float var_f28; + UnkM445Struct_02 *temp_r31; + s32 i; + + var_r28 = -1; + for (i = 0, var_f28 = 10000.0f; i < 2; i++) { + if (i == arg0->unk18) { + continue; + } + temp_r31 = &lbl_1_bss_588[i]; + HuSetVecF(&sp30, arg1, arg2, arg3); + HuSetVecF(&sp24, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C); + HuSubVecF(&sp18, &sp30, &sp24); + if ((var_f27 = sqrtf(sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z)) < arg0->unk54 + temp_r31->unk54 && var_f27 < var_f28) { + var_f28 = var_f27; + var_r28 = i; + } + } + return var_r28; +} + +s32 fn_1_3334(UnkM445Struct_02 *arg0, s32 *arg1) +{ + Vec sp30; + Vec sp24; + Vec sp18; + float var_f27; + float var_f28; + UnkM445Struct_02 *temp_r31; + s32 var_r27; + s32 var_r28; + s32 i; + + var_r27 = -1; + for (i = 0, var_f28 = 10000.0f, var_r28 = 0; i < 2; i++) { + if (i == arg0->unk18) { + continue; + } + temp_r31 = &lbl_1_bss_588[i]; + HuSetVecF(&sp30, arg0->unk34, arg0->unk38, arg0->unk3C); + HuSetVecF(&sp24, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C); + HuSubVecF(&sp18, &sp30, &sp24); + if ((var_f27 = sqrtf(sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z)) < arg0->unk54 + temp_r31->unk54) { + var_r28++; + if (var_f27 < var_f28) { + var_f28 = var_f27; + var_r27 = i; + } + } + } + *arg1 = var_r28; + return var_r27; +} + +void fn_1_3548(UnkM445Struct_02 *arg0) +{ + Vec spA8; + Vec sp9C; + Vec sp90; + s32 sp68; + s32 var_r25; + s32 temp_r24; + float sp64; + float sp60; + float sp5C; + float sp58; + float sp54; + float sp50; + float sp4C; + float var_f20; + float var_f27; + float var_f26; + float var_f25; + UnkM445Struct_02 *var_r30; + UnkM445Struct_02 *temp_r27; + s32 i; + + temp_r24 = fn_1_3334(arg0, &sp68); + if (temp_r24 == -1) { + return; + } + var_f20 = fn_1_1858(atan2d(arg0->unk34 - arg0->unk40, arg0->unk3C - arg0->unk44)); + sp58 = var_f27 = arg0->unk40; + sp54 = var_f26 = arg0->unk44; + sp4C = 1.0f; + var_r25 = 1.0f + 10.0f / sp4C; + while (var_r25 != 0) { + var_f27 += sp4C * sind(var_f20); + var_f26 += sp4C * cosd(var_f20); + HuSetVecF(&spA8, var_f27, arg0->unk38, var_f26); + for (i = 0; i < 2; i++) { + if (i != arg0->unk18) { + var_r30 = &lbl_1_bss_588[i]; + HuSetVecF(&sp9C, var_r30->unk34, var_r30->unk38, var_r30->unk3C); + HuSubVecF(&sp90, &spA8, &sp9C); + if (sqrtf(sp90.x * sp90.x + sp90.y * sp90.y + sp90.z * sp90.z) < arg0->unk54 + var_r30->unk54) { + break; + } + } + } + if (i < 2) { + break; + } + AddX = 0.0f; + AddZ = 0.0f; + MapWall(arg0->unk54, var_f27, arg0->unk38 + arg0->unk54, var_f26); + if (AddX + AddZ != 0.0f) { + goto block_end; + } + sp58 = var_f27; + sp54 = var_f26; + var_r25--; + } + var_f20 = fn_1_1858(atan2d(arg0->unk34 - arg0->unk40, arg0->unk3C - arg0->unk44)); + var_f25 = fn_1_1858(atan2d(var_r30->unk34 - arg0->unk40, var_r30->unk3C - arg0->unk44)); + sp60 = var_f20 - var_f25; + if (sp60 > 0.0f) { + sp5C = -0.5f; + } + else { + sp5C = 0.5f; + } + if (ABS_INV(var_f20 - var_f25) > 180.0f) { + sp5C = -sp5C; + } + var_f25 = fn_1_1858(atan2d(arg0->unk40 - var_r30->unk34, arg0->unk44 - var_r30->unk3C)); + sp50 = 0.8f * arg0->unk58; + temp_r24 = var_r30->unk18; + sp64 = arg0->unk54 + var_r30->unk54 + 1.0f; + while (TRUE) { + var_f27 = var_r30->unk34 + sp64 * sind(var_f25); + var_f26 = var_r30->unk3C + sp64 * cosd(var_f25); + HuSetVecF(&spA8, var_f27, 0.0, var_f26); + for (i = 0; i < 2; i++) { + if (i != arg0->unk18 && i != temp_r24) { + temp_r27 = &lbl_1_bss_588[i]; + HuSetVecF(&sp9C, temp_r27->unk34, 0.0, temp_r27->unk3C); + HuSubVecF(&sp90, &spA8, &sp9C); + if (sqrtf(sp90.x * sp90.x + sp90.z * sp90.z) < arg0->unk54 + temp_r27->unk54) { + break; + } + } + } + if (i < 2) { + break; + } + AddX = 0.0f; + AddZ = 0.0f; + MapWall(arg0->unk54, var_f27, arg0->unk38 + arg0->unk54, var_f26); + if (AddX + AddZ >= 5.0f) { + break; + } + sp58 = var_f27; + sp54 = var_f26; + HuSetVecF(&spA8, arg0->unk40, 0.0, arg0->unk44); + HuSetVecF(&sp9C, var_f27, 0.0, var_f26); + HuSubVecF(&sp90, &spA8, &sp9C); + if (sqrtf(sp90.x * sp90.x + sp90.z * sp90.z) > sp50) { + break; + } + var_f25 += sp5C; + } +block_end: + arg0->unk34 = sp58; + arg0->unk3C = sp54; +} + +float fn_1_42A0(float arg0, float arg1, float arg2) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +BOOL fn_1_43A4(UnkM445Struct_02 *arg0, float arg1, float arg2) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + BOOL var_r30; + + var_r30 = FALSE; + HuSetVecF(&sp2C, arg0->unk34 + 120.0 * sind(arg0->unk4C), 0.0, arg0->unk3C + 120.0 * cosd(arg0->unk4C)); + HuSetVecF(&sp20, arg1, 0.0, arg2); + HuSubVecF(&sp14, &sp2C, &sp20); + if (sqrtf(sp14.x * sp14.x + sp14.z * sp14.z) < 80.0f) { + var_r30 = TRUE; + } + return var_r30; +} + +void fn_1_45D0(UnkM445Struct_02 *arg0) +{ + Vec spC8; + Vec spBC; + Vec spB0; + float sp64; + float sp60; + float sp5C; + float sp58; + float sp54; + float var_f24; + UnkM445Struct_00 *temp_r30; + UnkM445Struct_02 *var_r28; + u32 var_r27; + s32 i; + + arg0->unk7C = arg0->unk7D = 0; + arg0->unk7F = arg0->unk7E = 0; + arg0->unk80 = arg0->unk82 = 0; + if (arg0->unk18 != 0) { + var_r28 = &lbl_1_bss_588[0]; + } + else { + var_r28 = &lbl_1_bss_588[1]; + } + switch (GWPlayerCfg[arg0->unk18].diff) { + case 0: + var_r27 = 90; + sp58 = 90.0f; + sp54 = 0.4f; + break; + case 1: + var_r27 = 95; + sp58 = 60.0f; + sp54 = 0.6f; + break; + case 2: + var_r27 = 99; + sp58 = 30.0f; + sp54 = 0.8f; + break; + default: + var_r27 = 100; + sp58 = 10.0f; + sp54 = 1.0f; + break; + } + for (i = 0, sp5C = 10000.0f; i < 8; i++) { + temp_r30 = &lbl_1_bss_288[i]; + if (temp_r30->unk1C >= 1 && !(temp_r30->unk44 < sp58)) { + HuSetVecF(&spC8, arg0->unk34, 0.0, arg0->unk3C); + HuSetVecF(&spBC, temp_r30->unk48, 0.0, temp_r30->unk4C); + HuSubVecF(&spB0, &spC8, &spBC); + var_f24 = sqrtf(spB0.x * spB0.x + spB0.z * spB0.z); + sp60 = sqrtf(arg0->unk34 * arg0->unk34 + arg0->unk3C * arg0->unk3C); + if (sp60 < 200.0f) { + sp60 = 400.0f; + } + else { + sp60 = 600.0f; + } + if (sp5C > var_f24 && var_f24 < sp60) { + HuSetVecF(&spC8, var_r28->unk34, 0.0, var_r28->unk3C); + HuSetVecF(&spBC, temp_r30->unk48, 0.0, temp_r30->unk4C); + HuSubVecF(&spB0, &spC8, &spBC); + if (sqrtf(spB0.x * spB0.x + spB0.z * spB0.z) > 50.0f) { + arg0->unk98 = i; + sp5C = var_f24; + } + } + } + } + if (arg0->unk98 == -1) { + for (i = 0, sp5C = 10000.0f; i < 8; i++) { + temp_r30 = &lbl_1_bss_288[i]; + HuSetVecF(&spC8, arg0->unk34, 0.0, arg0->unk3C); + HuSetVecF(&spBC, temp_r30->unk48, 0.0, temp_r30->unk4C); + HuSubVecF(&spB0, &spC8, &spBC); + var_f24 = sqrtf(spB0.x * spB0.x + spB0.z * spB0.z); + if (sp5C > var_f24 && var_f24 > 200.0f) { + arg0->unk98 = i; + sp5C = var_f24; + sp54 = 0.3f; + } + } + } + if (arg0->unk98 != -1) { + temp_r30 = &lbl_1_bss_288[arg0->unk98]; + arg0->unk84 = temp_r30->unk48; + arg0->unk88 = temp_r30->unk4C; + HuSetVecF(&spC8, arg0->unk34, 0.0, arg0->unk3C); + HuSetVecF(&spBC, arg0->unk84, 0.0, arg0->unk88); + HuSubVecF(&spB0, &spC8, &spBC); + var_f24 = sqrtf(spB0.x * spB0.x + spB0.z * spB0.z); + if (var_f24 > 20.0f) { + sp64 = atan2d(arg0->unk84 - arg0->unk34, arg0->unk88 - arg0->unk3C); + arg0->unk7C = 50.0 * sind(sp64) * sp54; + arg0->unk7D = -50.0 * cosd(sp64) * sp54; + } + else { + if (temp_r30->unk1C == 2) { + for (i = 0; i < lbl_1_data_260[temp_r30->unk14]; i++) { + if (temp_r30->unk20[i] == 0) { + sp64 = atan2d(temp_r30->unk50[i] - arg0->unk34, temp_r30->unk58[i] - arg0->unk3C); + arg0->unk7C = 15.0 * sind(sp64); + arg0->unk7D = -15.0 * cosd(sp64); + } + } + } + if (frandmod(100) > var_r27) { + arg0->unk82 |= 0x100; + } + arg0->unk98 = -1; + } + if (temp_r30->unk1C == 2) { + if (fn_1_43A4(arg0, temp_r30->unk50[0], temp_r30->unk58[0]) && temp_r30->unk20[0] == 0) { + arg0->unk82 |= 0x100; + } + if (lbl_1_data_260[temp_r30->unk14] > 1 && fn_1_43A4(arg0, temp_r30->unk50[1], temp_r30->unk58[1]) && temp_r30->unk20[1] == 0) { + arg0->unk82 |= 0x100; + } + } + } +} + +void fn_1_557C(void) +{ + s32 j; + s32 i; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 5; j++) { + HuSprAttrReset(lbl_1_bss_588[i].unk04, j, HUSPR_ATTR_DISPOFF); + } + } +} + +void fn_1_55F0(void) +{ + s32 j; + s32 i; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 5; j++) { + HuSprAttrSet(lbl_1_bss_588[i].unk04, j, HUSPR_ATTR_DISPOFF); + } + } +} + +void fn_1_5664(UnkM445Struct_02 *arg0, s32 arg1) +{ + HuSprBankSet(arg0->unk04, 3, arg1 % 10); + HuSprBankSet(arg0->unk04, 4, arg1 / 10); + HuSprAttrReset(arg0->unk04, 4, HUSPR_ATTR_DISPOFF); +} + +void fn_1_5700(UnkM445Struct_02 *arg0) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + float temp_f27; + float var_f26; + float var_f21; + float var_f20; + UnkM445Struct_02 *var_r27; + s32 i; + s32 var_r28; + + if (lbl_1_bss_6DC == 4) { + arg0->unk28 = 1; + for (i = 10, var_f21 = 1.0f; i != 0; i--, var_f21 -= 0.1f) { + Hu3DModelScaleSet(arg0->unk06, var_f21, var_f21, var_f21); + HuPrcVSleep(); + } + Hu3DModelAttrSet(arg0->unk06, HU3D_ATTR_DISPOFF); + arg0->unk06 = -1; + Hu3DMotionOverlayReset(arg0->unk00); + if (lbl_1_bss_588[0].unk06 == -1 && lbl_1_bss_588[1].unk06 == -1) { + lbl_1_bss_6DC = 5; + } + return; + } + Hu3DMotionOverlayReset(arg0->unk00); + arg0->unk7C = arg0->unk7D = 0; + arg0->unk7F = arg0->unk7E = 0; + arg0->unk80 = arg0->unk82 = 0; + var_r28 = 0; + if (arg0->unk18 == 0) { + if (arg0->unk34 <= -152.0f) { + arg0->unk84 = -230.0f; + arg0->unk88 = 45.0f; + var_r28 = 1; + } + else if (arg0->unk3C > 203.0f || arg0->unk3C < -203.0f) { + arg0->unk84 = -170.0f; + arg0->unk88 = arg0->unk3C; + } + else { + arg0->unk84 = arg0->unk34; + if (arg0->unk3C > 0.0f) { + arg0->unk88 = 210.0f; + } + else { + arg0->unk88 = -210.0f; + } + } + } + else { + if (arg0->unk34 >= 152.0f) { + arg0->unk84 = 230.0f; + arg0->unk88 = -45.0f; + var_r28 = 1; + } + else if (arg0->unk3C > 203.0f || arg0->unk3C < -203.0f) { + arg0->unk84 = 170.0f; + arg0->unk88 = arg0->unk3C; + } + else { + arg0->unk84 = arg0->unk34; + if (arg0->unk3C > 0.0f) { + arg0->unk88 = 210.0f; + } + else { + arg0->unk88 = -210.0f; + } + } + } + var_r27 = (arg0->unk18 != 0) ? &lbl_1_bss_588[0] : &lbl_1_bss_588[1]; + HuSetVecF(&sp38, arg0->unk34, 0.0, arg0->unk3C); + HuSetVecF(&sp2C, var_r27->unk34, 0.0, var_r27->unk3C); + HuSubVecF(&sp20, &sp38, &sp2C); + var_f26 = sqrtf(sp20.x * sp20.x + sp20.z * sp20.z); + if (var_f26 <= 110.0f) { + var_f26 = sqrtf(arg0->unk34 * arg0->unk34 + arg0->unk3C * arg0->unk3C); + var_f20 = sqrtf(var_r27->unk34 * var_r27->unk34 + var_r27->unk3C * var_r27->unk3C); + if (lbl_1_bss_4 == -1) { + temp_f27 = atan2d(arg0->unk34, arg0->unk3C); + if (var_f26 < 400.0f) { + if (var_f26 > var_f20) { + lbl_1_bss_4 = arg0->unk18; + lbl_1_bss_0 = temp_f27; + arg0->unk84 = arg0->unk34 + 100.0 * sind(temp_f27); + arg0->unk88 = arg0->unk3C + 100.0 * cosd(temp_f27); + } + } + else { + if (var_f26 < var_f20) { + temp_f27 += 180.0f; + lbl_1_bss_4 = arg0->unk18; + lbl_1_bss_0 = temp_f27; + arg0->unk84 = arg0->unk34 + 100.0 * sind(temp_f27); + arg0->unk88 = arg0->unk3C + 100.0 * cosd(temp_f27); + } + } + } + else if (arg0->unk18 == lbl_1_bss_4) { + OSReport("pno %d dir %f\n", arg0->unk18, lbl_1_bss_0); + arg0->unk84 = arg0->unk34 + 100.0 * sind(lbl_1_bss_0); + arg0->unk88 = arg0->unk3C + 100.0 * cosd(lbl_1_bss_0); + } + } + HuSetVecF(&sp38, arg0->unk34, 0.0, arg0->unk3C); + HuSetVecF(&sp2C, arg0->unk84, 0.0, arg0->unk88); + HuSubVecF(&sp20, &sp38, &sp2C); + var_f26 = sqrtf(sp20.x * sp20.x + sp20.z * sp20.z); + if (var_f26 < 20.0f && var_r28 != 0) { + arg0->unk24 = 4; + } + temp_f27 = atan2d(arg0->unk84 - arg0->unk34, arg0->unk88 - arg0->unk3C); + arg0->unk7C = 50.0 * sind(temp_f27); + arg0->unk7D = -50.0 * cosd(temp_f27); +} + +void fn_1_6268(void) +{ + Vec sp1D8; + s32 sp120; + float sp11C; + float var_f19; + UnkM445Struct_02 *temp_r31; + UnkM445Struct_00 *temp_r30; + u32 var_r24; + s32 var_r26; + s32 var_r28; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk24 = 0; + temp_r31->unk90 = 0; + temp_r31->unk98 = -1; + temp_r31->unk28 = 1; + lbl_1_bss_4 = -1; + while (lbl_1_bss_6DC == 0) { + HuPrcVSleep(); + } + lbl_1_bss_6DC = 2; + while (lbl_1_bss_6DC == 2) { + HuPrcVSleep(); + } + while (TRUE) { + temp_r31->unk40 = temp_r31->unk34; + temp_r31->unk44 = temp_r31->unk3C; + if (GWPlayerCfg[temp_r31->unk18].iscom == 1) { + fn_1_45D0(temp_r31); + } + if (lbl_1_bss_6DC >= 4) { + fn_1_5700(temp_r31); + } + switch (temp_r31->unk24) { + case 4: + goto block_exit_loop; + } + if (fn_1_3010(temp_r31->unk18) & 0x100) { + if (fn_1_520(temp_r31->unk18) == FALSE) { + Hu3DMotionOverlayReset(temp_r31->unk00); + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[5]); + } + else { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk08[4]); + Hu3DMotionSpeedSet(temp_r31->unk00, 1.0f); + } + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); + HuPrcSleep(15); + if (temp_r31->unk18 != 0) { + fn_1_4B8(temp_r31->unk34, temp_r31->unk3C, 0x75F); + } + else { + fn_1_4B8(temp_r31->unk34, temp_r31->unk3C, 0x75E); + } + HuPrcSleep(15); + HuSetVecF(&sp1D8, temp_r31->unk34 + 120.0 * sind(temp_r31->unk4C), 0.0, temp_r31->unk3C + 120.0 * cosd(temp_r31->unk4C)); + for (i = 0; i < 8; i++) { + temp_r30 = &lbl_1_bss_288[i]; + if (temp_r30->unk1C == 2) { + sp120 = 0; + if (fn_1_43A4(temp_r31, temp_r30->unk50[0], temp_r30->unk58[0]) && temp_r30->unk20[0] == 0) { + sp120 = 1; + temp_r30->unk20[0] = 1; + temp_r30->unk28 = temp_r31->unk18; + if (temp_r31->unk18 != 0) { + fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x75D); + } + else { + fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x750); + } + Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(temp_r31->unk02, 0.0f); + Hu3DModelPosSet(temp_r31->unk02, sp1D8.x, 160.0f, sp1D8.z + 100.0f); + if (temp_r30->unk38 != 0) { + temp_r31->unk30 += 2; + } + else { + temp_r31->unk30++; + } + fn_1_5664(temp_r31, temp_r31->unk30); + } + if (lbl_1_data_260[temp_r30->unk14] > 1 && fn_1_43A4(temp_r31, temp_r30->unk50[1], temp_r30->unk58[1]) + && temp_r30->unk20[1] == 0) { + temp_r30->unk20[1] = 1; + temp_r30->unk2C = temp_r31->unk18; + if (temp_r31->unk18 != 0) { + fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x75D); + } + else { + fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x750); + } + Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(temp_r31->unk02, 0.0f); + Hu3DModelPosSet(temp_r31->unk02, sp1D8.x, 160.0f, sp1D8.z + 100.0f); + if (temp_r30->unk38 != 0) { + temp_r31->unk30 += 2; + } + else { + temp_r31->unk30++; + } + fn_1_5664(temp_r31, temp_r31->unk30); + } + } + } + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + temp_r31->unk24 = 0; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP); + if (lbl_1_bss_6DC < 5) { + Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP); + } + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); + } + } + else { + HuSetVecF(&sp1D8, fn_1_2E68(temp_r31->unk18, 0) / 4.0f, 0.0, -fn_1_2E68(temp_r31->unk18, 1) / 4.0f); + temp_r31->unk5C = sqrtf(sp1D8.x * sp1D8.x + sp1D8.y * sp1D8.y + sp1D8.z * sp1D8.z); + if (temp_r31->unk5C >= 0.5f) { + if (temp_r31->unk5C >= 10.0f) { + sp1D8.x /= temp_r31->unk5C; + sp1D8.z /= temp_r31->unk5C; + temp_r31->unk5C = 10.0f; + sp1D8.x = 10.0f * sp1D8.x; + sp1D8.z = 10.0f * sp1D8.z; + } + temp_r31->unk4C = fn_1_1858(fn_1_42A0(temp_r31->unk4C, atan2d(sp1D8.x, sp1D8.z), 0.4f)); + if (temp_r31->unk5C >= 8.0f) { + if (temp_r31->unk24 != 2) { + temp_r31->unk24 = 2; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionShiftSet( + lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + if (lbl_1_bss_6DC < 5) { + Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP); + } + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + } + } + else if (temp_r31->unk24 != 1) { + temp_r31->unk24 = 1; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionShiftSet( + lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + if (lbl_1_bss_6DC < 5) { + Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP); + } + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + } + } + else if (temp_r31->unk24 != 0) { + temp_r31->unk24 = 0; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP); + if (lbl_1_bss_6DC < 5) { + Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP); + } + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); + } + } + temp_r31->unk70.x = sp1D8.x; + temp_r31->unk70.z = sp1D8.z; + temp_r31->unk58 = temp_r31->unk5C; + temp_r31->unk34 += temp_r31->unk70.x; + temp_r31->unk3C += temp_r31->unk70.z; + } + if ((temp_r31->unk2C = fn_1_3114(temp_r31, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C)) != -1) { + fn_1_3548(temp_r31); + } + AddX = 0.0f; + AddZ = 0.0f; + MapWall(temp_r31->unk54, temp_r31->unk34, temp_r31->unk38 + temp_r31->unk54, temp_r31->unk3C); + temp_r31->unk34 += AddX; + temp_r31->unk3C += AddZ; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + } +block_exit_loop: + lbl_1_bss_6DC = 6; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); + } + var_f19 = 10.0f; + i = (360.0f - fn_1_1858(temp_r31->unk4C)) / var_f19; + if (temp_r31->unk4C < 180.0f) { + i = fn_1_1858(temp_r31->unk4C) / var_f19; + var_f19 = -var_f19; + } + for (; i != 0; i--) { + temp_r31->unk4C += var_f19; + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + } + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, 0.0f, temp_r31->unk50); + while (lbl_1_bss_6DC < 7) { + HuPrcVSleep(); + } + if (lbl_1_bss_588->unk30 == lbl_1_bss_588[1].unk30) { + var_r26 = -1; + } + if (lbl_1_bss_588->unk30 < lbl_1_bss_588[1].unk30) { + var_r26 = 1; + } + if (lbl_1_bss_588->unk30 > lbl_1_bss_588[1].unk30) { + var_r26 = 0; + } + var_r24 = HU3D_MOTATTR_NONE; + if (temp_r31->unk18 != 0) { + if (fn_1_520(1) == FALSE) { + if (var_r26 != -1) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(4); + } + } + else { + if (var_r26 == 0) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(3); + } + } + } + if (var_r26 == -1) { + if (fn_1_520(temp_r31->unk18) == FALSE) { + var_r28 = 7; + } + else { + var_r28 = 6; + } + } + else { + GWPlayerCoinWinSet(var_r26, 10); + if (var_r26 == temp_r31->unk18) { + var_r28 = 6; + } + else { + var_r28 = 7; + } + } + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[var_r28], 0.0f, 8.0f, var_r24); + } + else { + if (var_r28 == 6) { + var_r28 = 5; + var_r24 = HU3D_MOTATTR_LOOP; + } + else { + var_r28 = 6; + var_r24 = HU3D_MOTATTR_NONE; + } + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[var_r28], 0.0f, 8.0f, var_r24); + if (var_r28 == 6) { + for (i = 10, sp11C = 30.0f / i; i != 0; i--) { + temp_r31->unk4C += sp11C; + Hu3DModelRotSet(temp_r31->unk00, 0.0f, temp_r31->unk4C, 0.0f); + HuPrcVSleep(); + } + } + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_7FC0(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + UnkM445Struct_02 *temp_r29; + float var_f31; + s16 var_r27; + s16 var_r28; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + for (var_r27 = 0; var_r27 < 2; var_r27++) { + temp_r29 = &lbl_1_bss_588[var_r27]; + if (temp_r29->unk28 != 0) { + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (var_r28 == particle->unk_30) { + break; + } + var_r31->unk34.x = temp_r29->unk34 + 50.0 * sind(temp_r29->unk4C - 90.0f); + var_r31->unk34.y = temp_r29->unk38 + 98.0f; + var_r31->unk34.z = temp_r29->unk3C + 50.0 * cosd(temp_r29->unk4C - 90.0f); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 100.0f; + var_r31->unk14.y = 10.0f; + var_r31->unk40.a = 200; + var_r31->unk14.z = 17.0f; + temp_r29->unk28 = 0; + } + } + var_r31 = particle->unk_48; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 0.2f; + } + var_f31 = var_r31->unk40.a; + var_f31 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_f31; + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_8320(void) +{ + float sp20[2]; + GXColor sp1C; + WindowData *var_r26; + UnkM445Struct_02 *temp_r31; + s16 temp_r25; + s16 var_r29; + u32 var_r27; + s32 temp_r28; + s32 var_r24; + s32 i; + + HuPrcSleep(30); + HuAudFXPlay(0x755); + temp_r28 = lbl_1_bss_288[5].unk00; + Hu3DModelAttrReset(temp_r28, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + while (!Hu3DMotionEndCheck(temp_r28)) { + HuPrcVSleep(); + } + HuAudFXPlay(0x756); + Hu3DMotionSet(temp_r28, lbl_1_bss_288[5].unk02[0]); + Hu3DModelAttrSet(temp_r28, HU3D_MOTATTR_LOOP); + HuPrcSleep(30); + for (i = 30; i != 0; i--) { + CRotM[0].x += -0.55f; + CenterM[0].y += -11.5f; + CZoomM[0] += 51.333332f; + HuPrcVSleep(); + } + if (fn_1_520(1) == TRUE) { + temp_r25 = HuAudSeqPlay(0x3D); + HuWinMesMaxSizeGet(8, sp20, MAKE_MESSID(41, 1), MAKE_MESSID(41, 2), MAKE_MESSID(41, 3), MAKE_MESSID(41, 4), MAKE_MESSID(41, 5), + MAKE_MESSID(41, 6), MAKE_MESSID(41, 7), MAKE_MESSID(41, 8)); + var_r29 = HuWinCreate(-10000.0f, 40.0f, sp20[0], sp20[1], 1); + HuWinPriSet(var_r29, 0x100); + sp1C.r = sp1C.g = sp1C.b = 0xFF; + HuWinBGColSet(var_r29, &sp1C); + HuWinBGTPLvlSet(var_r29, 0.9f); + HuWinMesColSet(var_r29, 0); + var_r26 = &winData[var_r29]; + var_r26->mess_shadow_color = 9; + HuWinMesSpeedSet(var_r29, 0); + HuWinDisablePlayerSet(var_r29, (1 << GWPlayerCfg->pad_idx) ^ 0xF); + HuWinExAnimIn(var_r29); + HuWinMesSet(var_r29, MAKE_MESSID(41, 1)); + HuWinMesWait(var_r29); + HuWinMesColSet(var_r29, 0); + HuWinMesSet(var_r29, MAKE_MESSID(41, 2)); + var_r24 = HuWinChoiceGet(var_r29, 0); + if (var_r24 == 0) { + i = 5; + var_r27 = MAKE_MESSID(41, 3); + } + else { + i = 1; + var_r27 = MAKE_MESSID(41, 8); + } + for (; i != 0; i--) { + HuWinMesColSet(var_r29, 0); + HuWinMesSet(var_r29, var_r27++); + HuWinMesWait(var_r29); + } + HuAudSeqFadeOut(temp_r25, 1000); + HuWinExAnimOut(var_r29); + HuWinAllKill(); + } + for (i = 0; i < 2; i++) { + temp_r31 = &lbl_1_bss_588[i]; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk08[3]); + } + else { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk08[3]); + } + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); + } + HuPrcSleep(20); + for (i = 0; i < 2; i++) { + temp_r31 = &lbl_1_bss_588[i]; + Hu3DModelPosSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f); + if (fn_1_520(temp_r31->unk18) == FALSE) { + Hu3DModelHookSet(temp_r31->unk00, CharModelHookNameGet(GWPlayerCfg[i].character, 2, 0), temp_r31->unk06); + } + else { + Hu3DModelHookSet(temp_r31->unk00, "itemhook_r", temp_r31->unk06); + } + } + HuPrcSleep(20); + for (i = 0; i < 2; i++) { + temp_r31 = &lbl_1_bss_588[i]; + if (fn_1_520(temp_r31->unk18) == FALSE) { + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } +} + +void fn_1_8938(void) +{ + s32 i; + + while (lbl_1_bss_6DC < 6) { + HuPrcVSleep(); + } + for (i = 30; i != 0; i--) { + CZoomM[0] += -27.7f; + HuPrcVSleep(); + } +} + +void fn_1_89B8(void) +{ + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_8A18(void) +{ + s16 temp_r28; + s16 var_r31; + s16 temp_r26; + s32 var_r25; + s32 i; + + lbl_1_bss_6DC = 0; + fn_1_8320(); + HuPrcSleep(30); + lbl_1_bss_6DC = 1; + while (lbl_1_bss_6DC == 1) { + HuPrcVSleep(); + } + var_r25 = HuAudSeqPlay(0x3E); + temp_r28 = MGSeqStartCreate(); + while (MGSeqStatGet(temp_r28) != 0) { + HuPrcVSleep(); + } + fn_1_557C(); + var_r31 = 3659; + temp_r26 = MGSeqTimerCreate(var_r31 / 60); + lbl_1_bss_6DC = 3; + while (TRUE) { + if (var_r31 < 59) { + break; + } + MGSeqParamSet(temp_r26, 1, var_r31-- / 60); + lbl_1_bss_6D8++; + HuPrcVSleep(); + } + lbl_1_bss_6C4 = -1; + if (lbl_1_bss_588->unk30 != lbl_1_bss_588[1].unk30) { + lbl_1_bss_6C4 = 0; + if (lbl_1_bss_588->unk30 < lbl_1_bss_588[1].unk30) { + lbl_1_bss_6C4 = 1; + } + } + lbl_1_bss_6DC = 4; + HuAudSeqFadeOut(var_r25, 100); + MGSeqParamSet(temp_r26, 2, -1); + temp_r28 = MGSeqFinishCreate(); + while (MGSeqStatGet(temp_r28) != 0) { + HuPrcVSleep(); + } + while (lbl_1_bss_588->unk24 != 4 || lbl_1_bss_588[1].unk24 != 4) { + HuPrcVSleep(); + } + while (lbl_1_bss_6DC < 6) { + HuPrcVSleep(); + } + for (i = 30; i != 0; i--) { + CZoomM[0] += -27.7f; + HuPrcVSleep(); + } + lbl_1_bss_6DC = 7; + HuPrcSleep(210); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } +} diff --git a/src/REL/m446Dll/camera.c b/src/REL/m446Dll/camera.c index ef322bf3..8a49a82f 100644 --- a/src/REL/m446Dll/camera.c +++ b/src/REL/m446Dll/camera.c @@ -51,7 +51,7 @@ void fn_1_68DC(void) { f32 temp_f31; if (lbl_1_bss_38 != 0) { - temp_f31 = sin((M_PI * (90.0f * lbl_1_bss_40)) / 180.0); + temp_f31 = sind(90.0f * lbl_1_bss_40); temp_f31 *= temp_f31; lbl_1_bss_8C.x = lbl_1_bss_54.x + (temp_f31 * (lbl_1_bss_70.x - lbl_1_bss_54.x)); lbl_1_bss_8C.y = lbl_1_bss_54.y + (temp_f31 * (lbl_1_bss_70.y - lbl_1_bss_54.y)); @@ -138,4 +138,4 @@ void fn_1_709C(void) { print8(0x20, 0x84, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.x, lbl_1_bss_8C.y, lbl_1_bss_8C.z); print8(0x20, 0x94, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_80.x, lbl_1_bss_80.y, lbl_1_bss_80.z); print8(0x20, 0xA4, 1.5f, "ZOOM : %.2f", lbl_1_bss_7C); -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/card.c b/src/REL/m446Dll/card.c index 8f4c5f72..fa45170f 100644 --- a/src/REL/m446Dll/card.c +++ b/src/REL/m446Dll/card.c @@ -1,24 +1,25 @@ #include "REL/m446Dll.h" #include "game/hsfman.h" -#include "math.h" +#include "ext_math.h" // data -m446Func4 lbl_1_data_150[3] = {NULL, fn_1_2AA8, fn_1_2DA8}; -static const s32 lbl_1_rodata_58[5] = {0x4D0001, 0x4D0002, 0x4D0003, 0x4D0004, 0x4D0000}; -static const s32 lbl_1_rodata_6C[5] = {0x4D001B, 0x4D001C, 0x4D001D, 0x4D001E, 0x4D001E}; +m446Func4 lbl_1_data_150[3] = { NULL, fn_1_2AA8, fn_1_2DA8 }; +static const s32 lbl_1_rodata_58[5] = { 0x4D0001, 0x4D0002, 0x4D0003, 0x4D0004, 0x4D0000 }; +static const s32 lbl_1_rodata_6C[5] = { 0x4D001B, 0x4D001C, 0x4D001D, 0x4D001E, 0x4D001E }; // bss -unkStruct3* lbl_1_bss_18; +unkStruct3 *lbl_1_bss_18; -unkStruct2* fn_1_1C64(s32 arg0) { - unkStruct2* temp_r3; +unkStruct2 *fn_1_1C64(s32 arg0) +{ + unkStruct2 *temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, 0x10000000U); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, MEMORY_DEFAULT_NUM); if (!temp_r3) { return NULL; } - temp_r3->unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 4, 0x10000000U); + temp_r3->unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 4, MEMORY_DEFAULT_NUM); if (!temp_r3->unk0) { HuMemDirectFree(temp_r3); return NULL; @@ -28,54 +29,64 @@ unkStruct2* fn_1_1C64(s32 arg0) { return temp_r3; } -void fn_1_1CF8(unkStruct2* arg0) { +void fn_1_1CF8(unkStruct2 *arg0) +{ HuMemDirectFree(arg0->unk0); HuMemDirectFree(arg0); } -s32 fn_1_1D30(unkStruct2* arg0, void* arg1) { +s32 fn_1_1D30(unkStruct2 *arg0, void *arg1) +{ if (arg0->unk4 <= arg0->unk8) { return 0; - } else { + } + else { arg0->unk0[arg0->unk8] = arg1; arg0->unk8++; return 1; } } -s32 fn_1_1D6C(unkStruct2* arg0, unkStruct4** arg1) { +s32 fn_1_1D6C(unkStruct2 *arg0, unkStruct4 **arg1) +{ if (arg0->unk8 <= 0) { return 0; - } else { + } + else { arg0->unk8--; *arg1 = arg0->unk0[arg0->unk8]; return 1; } } -s32 fn_1_1DA8(unkStruct2* arg0, void** arg1) { +s32 fn_1_1DA8(unkStruct2 *arg0, void **arg1) +{ if (arg0->unk8 <= 0) { return 0; - } else { + } + else { *arg1 = *(&arg0->unk0[arg0->unk8] - 1); return 1; } } -BOOL fn_1_1DDC(unkStruct2* arg0) { +BOOL fn_1_1DDC(unkStruct2 *arg0) +{ return arg0->unk8 == 0; } -s32 fn_1_1DEC(unkStruct2* arg0) { +s32 fn_1_1DEC(unkStruct2 *arg0) +{ return arg0->unk8; } #pragma dont_inline on -unkStruct3* fn_1_1DF4(void* arg0) { - unkStruct3* temp_r3; +unkStruct3 *fn_1_1DF4(void *arg0) +{ + unkStruct3 *temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, 0x10000000); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, MEMORY_DEFAULT_NUM); if (!temp_r3) { return NULL; } @@ -85,17 +96,20 @@ unkStruct3* fn_1_1DF4(void* arg0) { return temp_r3; } -void fn_1_1E5C(unkStruct3* arg0) { +void fn_1_1E5C(unkStruct3 *arg0) +{ HuMemDirectFree(arg0); } -void fn_1_1E84(unkStruct3** arg0) { +void fn_1_1E84(unkStruct3 **arg0) +{ unkStruct3 *temp = *arg0; HuMemDirectFree(temp); *arg0 = NULL; } -void fn_1_1EC8(unkStruct3* arg0, unkStruct3* arg1) { +void fn_1_1EC8(unkStruct3 *arg0, unkStruct3 *arg1) +{ if (arg0) { arg1->unk8 = arg0->unk8; arg1->unk4 = arg0; @@ -103,13 +117,15 @@ void fn_1_1EC8(unkStruct3* arg0, unkStruct3* arg1) { if (arg1->unk8) { arg1->unk8->unk4 = arg1; } - } else { + } + else { arg1->unk4 = arg1; arg1->unk8 = arg1; } } -void fn_1_1F04(unkStruct3* arg0) { +void fn_1_1F04(unkStruct3 *arg0) +{ if (arg0->unk8) { arg0->unk8->unk4 = arg0->unk4; } @@ -120,9 +136,10 @@ void fn_1_1F04(unkStruct3* arg0) { #pragma dont_inline reset -void fn_1_1F38(u8* arg0, u8* arg1, s32 arg2) { - u8* var_r30 = arg0; - u8* var_r31 = arg1; +void fn_1_1F38(u8 *arg0, u8 *arg1, s32 arg2) +{ + u8 *var_r30 = arg0; + u8 *var_r31 = arg1; if (arg2 <= 0) { return; } @@ -132,8 +149,9 @@ void fn_1_1F38(u8* arg0, u8* arg1, s32 arg2) { } } -void fn_1_1F84(u8* arg0, s8 arg1, s32 arg2) { - u8* var_r30 = arg0; +void fn_1_1F84(u8 *arg0, s8 arg1, s32 arg2) +{ + u8 *var_r30 = arg0; if (arg2 <= 0) { return; } @@ -143,8 +161,9 @@ void fn_1_1F84(u8* arg0, s8 arg1, s32 arg2) { } } -void fn_1_1FC0(u8* arg0, s32 arg1) { - u8* var_r30 = arg0; +void fn_1_1FC0(u8 *arg0, s32 arg1) +{ + u8 *var_r30 = arg0; if (arg1 <= 0) { return; } @@ -154,10 +173,11 @@ void fn_1_1FC0(u8* arg0, s32 arg1) { } } -s32 fn_1_1FFC(s8* arg0, s8* arg1, s32 arg2) { - s8* var_r30 = arg0; - s8* var_r31 = arg1; - +s32 fn_1_1FFC(s8 *arg0, s8 *arg1, s32 arg2) +{ + s8 *var_r30 = arg0; + s8 *var_r31 = arg1; + if (arg2 <= 0) { return 0; } @@ -168,14 +188,16 @@ s32 fn_1_1FFC(s8* arg0, s8* arg1, s32 arg2) { return *var_r30 - *var_r31; } -s32 fn_1_2064(void) { +s32 fn_1_2064(void) +{ lbl_1_bss_18 = 0; return 1; } -void fn_1_207C(void) { - unkStruct4* var_r30; - unkStruct3* var_r31; +void fn_1_207C(void) +{ + unkStruct4 *var_r30; + unkStruct3 *var_r31; var_r31 = lbl_1_bss_18; if (var_r31) { @@ -187,12 +209,13 @@ void fn_1_207C(void) { } } -void fn_1_20D4(void) { +void fn_1_20D4(void) +{ m446Func1 *temp_r4; f32 temp_f31; s32 temp_r5; - unkStruct4* temp_r31; - unkStruct3* var_r30; + unkStruct4 *temp_r31; + unkStruct3 *var_r30; var_r30 = lbl_1_bss_18; if (var_r30) { @@ -204,8 +227,9 @@ void fn_1_20D4(void) { if (temp_r31->unk70 != 0) { if (temp_r31->unk7C > 0) { temp_r31->unk7C--; - } else { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk80)) / 180.0); + } + else { + temp_f31 = sind(90.0f * temp_r31->unk80); temp_r31->unk10.x = temp_r31->unk1C.x + (temp_f31 * (temp_r31->unk28.x - temp_r31->unk1C.x)); temp_r31->unk10.y = temp_r31->unk1C.y + (temp_f31 * (temp_r31->unk28.y - temp_r31->unk1C.y)); temp_r31->unk10.z = temp_r31->unk1C.z + (temp_f31 * (temp_r31->unk28.z - temp_r31->unk1C.z)); @@ -219,7 +243,7 @@ void fn_1_20D4(void) { } } if (temp_r31->unk74 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk88)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk88); temp_r31->unk34.x = (temp_r31->unk40.x + (temp_f31 * (temp_r31->unk4C.x - temp_r31->unk40.x))); temp_r31->unk34.y = (temp_r31->unk40.y + (temp_f31 * (temp_r31->unk4C.y - temp_r31->unk40.y))); temp_r31->unk34.z = (temp_r31->unk40.z + (temp_f31 * (temp_r31->unk4C.z - temp_r31->unk40.z))); @@ -232,7 +256,7 @@ void fn_1_20D4(void) { } } if (temp_r31->unk78 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk90)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk90); temp_r31->unk58 = (temp_r31->unk5C + (temp_f31 * (temp_r31->unk60 - temp_r31->unk5C))); temp_r31->unk90 = (temp_r31->unk90 + temp_r31->unk94); if (temp_r31->unk90 >= 1.0f) { @@ -246,11 +270,12 @@ void fn_1_20D4(void) { } } -unkStruct4* m446CardCreate(s32 arg0) { - unkStruct4* temp_r31; - unkStruct3* temp_r30; +unkStruct4 *m446CardCreate(s32 arg0) +{ + unkStruct4 *temp_r31; + unkStruct3 *temp_r30; - temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x98, 0x10000000U); + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x98, MEMORY_DEFAULT_NUM); if (!temp_r31) { OSReport("[!] m446CardCreate ERROR...\n"); return NULL; @@ -277,7 +302,7 @@ unkStruct4* m446CardCreate(s32 arg0) { Hu3DModelLayerSet(temp_r31->unkA[0], 0); temp_r31->unkA[1] = Hu3DModelCreateFile(lbl_1_rodata_6C[arg0]); Hu3DModelAmbSet(temp_r31->unkA[1], 1.0f, 1.0f, 1.0f); - Hu3DModelAttrSet(temp_r31->unkA[1], 0x40000001U); + Hu3DModelAttrSet(temp_r31->unkA[1], HU3D_MOTATTR_LOOP); Hu3DModelLayerSet(temp_r31->unkA[0], 0); fn_1_2A58(temp_r31); fn_1_2EC0(temp_r31, 1); @@ -289,14 +314,16 @@ unkStruct4* m446CardCreate(s32 arg0) { } if (lbl_1_bss_18) { fn_1_1EC8(lbl_1_bss_18, temp_r30); - } else { + } + else { lbl_1_bss_18 = temp_r30; } return temp_r31; } -void fn_1_2688(unkStruct4* arg0) { - unkStruct3* var_r31 = lbl_1_bss_18; +void fn_1_2688(unkStruct4 *arg0) +{ + unkStruct3 *var_r31 = lbl_1_bss_18; do { if (arg0 == var_r31->unk0) { if (var_r31 == lbl_1_bss_18) { @@ -313,7 +340,8 @@ void fn_1_2688(unkStruct4* arg0) { } while (var_r31); } -void fn_1_272C(unkStruct4* arg0) { +void fn_1_272C(unkStruct4 *arg0) +{ Vec sp8; sp8 = arg0->unk34; @@ -322,7 +350,8 @@ void fn_1_272C(unkStruct4* arg0) { fn_1_2928(arg0, &sp8, 0x1E); } -void fn_1_2794(unkStruct4* arg0) { +void fn_1_2794(unkStruct4 *arg0) +{ Vec sp8; sp8 = arg0->unk34; @@ -331,7 +360,8 @@ void fn_1_2794(unkStruct4* arg0) { fn_1_2928(arg0, &sp8, 0x3C); } -void fn_1_27FC(unkStruct4* arg0, Vec* arg1, s32 arg2) { +void fn_1_27FC(unkStruct4 *arg0, Vec *arg1, s32 arg2) +{ arg0->unk7C = 0; arg0->unk28 = *arg1; arg0->unk1C = arg0->unk10; @@ -340,7 +370,8 @@ void fn_1_27FC(unkStruct4* arg0, Vec* arg1, s32 arg2) { arg0->unk70 = 1; } -void fn_1_2890(unkStruct4* arg0, Vec* arg1, s32 arg2, s32 arg3) { +void fn_1_2890(unkStruct4 *arg0, Vec *arg1, s32 arg2, s32 arg3) +{ arg0->unk7C = 0; arg0->unk28 = *arg1; arg0->unk1C = arg0->unk10; @@ -350,7 +381,8 @@ void fn_1_2890(unkStruct4* arg0, Vec* arg1, s32 arg2, s32 arg3) { arg0->unk7C = arg3; } -void fn_1_2928(unkStruct4* arg0, Vec* arg1, s32 arg2) { +void fn_1_2928(unkStruct4 *arg0, Vec *arg1, s32 arg2) +{ arg0->unk4C = *arg1; arg0->unk40 = arg0->unk34; arg0->unk88 = 0.0f; @@ -358,7 +390,8 @@ void fn_1_2928(unkStruct4* arg0, Vec* arg1, s32 arg2) { arg0->unk74 = 1; } -void fn_1_29B4(unkStruct4* arg0, f32 arg8, s32 arg1) { +void fn_1_29B4(unkStruct4 *arg0, f32 arg8, s32 arg1) +{ arg0->unk60 = arg8; arg0->unk5C = arg0->unk58; arg0->unk90 = 0.0f; @@ -366,28 +399,32 @@ void fn_1_29B4(unkStruct4* arg0, f32 arg8, s32 arg1) { arg0->unk78 = 1; } -void fn_1_2A1C(unkStruct4* arg0) { - Hu3DModelAttrReset(arg0->unkA[1], 1); +void fn_1_2A1C(unkStruct4 *arg0) +{ + Hu3DModelAttrReset(arg0->unkA[1], HU3D_ATTR_DISPOFF); arg0->unk6C = 1; } -void fn_1_2A58(unkStruct4* arg0) { - Hu3DModelAttrSet(arg0->unkA[1], 1); +void fn_1_2A58(unkStruct4 *arg0) +{ + Hu3DModelAttrSet(arg0->unkA[1], HU3D_ATTR_DISPOFF); arg0->unk6C = 0; } -void fn_1_2A94(unkStruct4* arg0) { +void fn_1_2A94(unkStruct4 *arg0) +{ arg0->unk4 = 1; arg0->unk8 = 0; } -void fn_1_2AA8(unkStruct4* arg0) { +void fn_1_2AA8(unkStruct4 *arg0) +{ Vec sp8; - + switch (arg0->unk8) { case 0: arg0->unk8 = 1; - Hu3DModelAttrReset(arg0->unkA[1], 1); + Hu3DModelAttrReset(arg0->unkA[1], HU3D_ATTR_DISPOFF); arg0->unk6C = 1; arg0->unk8 = 1; // ? case 1: @@ -398,9 +435,10 @@ void fn_1_2AA8(unkStruct4* arg0) { arg0->unk78 = 1; arg0->unk8 = 2; // ????? break; - + case 2: - if (arg0->unk78 != 0) break; + if (arg0->unk78 != 0) + break; arg0->unk8 = 3; // ?????????? case 3: arg0->unk60 = 1.5f; @@ -410,9 +448,10 @@ void fn_1_2AA8(unkStruct4* arg0) { arg0->unk78 = 1; arg0->unk8 = 4; break; - + case 4: - if (arg0->unk78 != 0) break; + if (arg0->unk78 != 0) + break; arg0->unk8 = 5; case 5: arg0->unk60 = 2.5f; @@ -422,9 +461,10 @@ void fn_1_2AA8(unkStruct4* arg0) { arg0->unk78 = 1; arg0->unk8 = 6; break; - + case 6: - if (arg0->unk78 != 0) break; + if (arg0->unk78 != 0) + break; arg0->unk8 = 8; case 7: arg0->unk60 = 1.5f; @@ -434,7 +474,8 @@ void fn_1_2AA8(unkStruct4* arg0) { arg0->unk78 = 1; arg0->unk8 = 8; case 8: - if (arg0->unk78 != 0) break; + if (arg0->unk78 != 0) + break; arg0->unk8 = 9; case 9: sp8 = arg0->unk34; @@ -452,24 +493,27 @@ void fn_1_2AA8(unkStruct4* arg0) { arg0->unk8 = 10; break; case 10: - if (arg0->unk78 != 0) break; + if (arg0->unk78 != 0) + break; arg0->unk4 = 0; arg0->unk8 = 0; - Hu3DModelAttrSet(arg0->unkA[1], 1); + Hu3DModelAttrSet(arg0->unkA[1], HU3D_ATTR_DISPOFF); arg0->unk6C = 0; return; } } -void fn_1_2D94(unkStruct4* arg0) { +void fn_1_2D94(unkStruct4 *arg0) +{ arg0->unk4 = 2; arg0->unk8 = 0; } -void fn_1_2DA8(unkStruct4* arg0) { +void fn_1_2DA8(unkStruct4 *arg0) +{ f32 var_f31; f32 var_f30; - + switch (arg0->unk8) { case 0: arg0->unk8 = 1; @@ -498,7 +542,8 @@ void fn_1_2DA8(unkStruct4* arg0) { } } -void fn_1_2EC0(unkStruct4* arg0, s32 arg1) { +void fn_1_2EC0(unkStruct4 *arg0, s32 arg1) +{ if (arg1 != 0) { Hu3DModelShadowDispOn(arg0->unkA[0]); Hu3DModelAmbSet(arg0->unkA[0], 0.0f, 0.0f, 0.0f); @@ -508,11 +553,13 @@ void fn_1_2EC0(unkStruct4* arg0, s32 arg1) { Hu3DModelAmbSet(arg0->unkA[0], 1.0f, 1.0f, 1.0f); } -void fn_1_2F64(unkStruct4* arg0) { +void fn_1_2F64(unkStruct4 *arg0) +{ if ((arg0->unk58 > 1.0f) || (arg0->unk58 < 1.0f)) { Hu3DModelLayerSet(arg0->unkA[0], 1); Hu3DModelLayerSet(arg0->unkA[1], 1); - } else { + } + else { Hu3DModelLayerSet(arg0->unkA[0], 0); Hu3DModelLayerSet(arg0->unkA[1], 0); } @@ -521,4 +568,4 @@ void fn_1_2F64(unkStruct4* arg0) { Hu3DModelScaleSet(arg0->unkA[0], arg0->unk58, arg0->unk58, arg0->unk58); Hu3DModelScaleSet(arg0->unkA[1], arg0->unk58, arg0->unk58, arg0->unk58); Hu3DModelRotSet(arg0->unkA[0], arg0->unk34.x, arg0->unk34.y, arg0->unk34.z); -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/cursor.c b/src/REL/m446Dll/cursor.c index 6c67c262..c57da258 100644 --- a/src/REL/m446Dll/cursor.c +++ b/src/REL/m446Dll/cursor.c @@ -1,27 +1,25 @@ #include "REL/m446Dll.h" -#include "math.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "ext_math.h" // bss -unkStruct3* lbl_1_bss_98; +unkStruct3 *lbl_1_bss_98; // data -s32 lbl_1_data_3C8[9] = { - 0x4D0012, 0x4D0013, 0x4D0014, - 0x4D0015, 0x4D0016, 0x4D0017, - 0x4D0018, 0x4D0019, 0x4D001A -}; +s32 lbl_1_data_3C8[9] = { 0x4D0012, 0x4D0013, 0x4D0014, 0x4D0015, 0x4D0016, 0x4D0017, 0x4D0018, 0x4D0019, 0x4D001A }; -s32 fn_1_72E0(void) { +s32 fn_1_72E0(void) +{ lbl_1_bss_98 = NULL; return 1; } -void fn_1_72F8(void) { - unkStruct3* var_r31; - unkStruct7* var_r30; +void fn_1_72F8(void) +{ + unkStruct3 *var_r31; + unkStruct7 *var_r30; var_r31 = lbl_1_bss_98; if (var_r31) { @@ -33,17 +31,18 @@ void fn_1_72F8(void) { } } -void fn_1_7350(void) { +void fn_1_7350(void) +{ f32 temp_f31; - unkStruct3* var_r30; - unkStruct7* temp_r31; + unkStruct3 *var_r30; + unkStruct7 *temp_r31; var_r30 = lbl_1_bss_98; if (var_r30) { do { temp_r31 = var_r30->unk0; if (temp_r31->field00_bit1 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk4C)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk4C); temp_f31 *= temp_f31; temp_r31->unk20.x = (temp_r31->unk2C.x + (temp_f31 * (temp_r31->unk38.x - temp_r31->unk2C.x))); temp_r31->unk20.y = (temp_r31->unk2C.y + (temp_f31 * (temp_r31->unk38.y - temp_r31->unk2C.y))); @@ -65,12 +64,13 @@ void fn_1_7350(void) { } } -unkStruct7* m446CursorCreate(s32 arg0) { +unkStruct7 *m446CursorCreate(s32 arg0) +{ s32 var_r30; - unkStruct7* var_r31; - unkStruct3* var_r29; + unkStruct7 *var_r31; + unkStruct3 *var_r29; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, 0x10000000); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } @@ -84,7 +84,7 @@ unkStruct7* m446CursorCreate(s32 arg0) { var_r31->field00_bit3 = 0; var_r31->unk8 = arg0; var_r31->unk48 = 0; - var_r31->unkC[0] = Hu3DModelCreateFile(0x4D0009); + var_r31->unkC[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M446, 0x09)); Hu3DModelLayerSet(var_r31->unkC[0], 6); if (var_r31->unk8 == 0) { for (var_r30 = 0; var_r30 < 9; var_r30++) { @@ -101,15 +101,17 @@ unkStruct7* m446CursorCreate(s32 arg0) { } if (lbl_1_bss_98) { fn_1_1EC8(lbl_1_bss_98, var_r29); - } else { + } + else { lbl_1_bss_98 = var_r29; } return var_r31; } -void fn_1_76E8(unkStruct7* arg0) { +void fn_1_76E8(unkStruct7 *arg0) +{ s32 var_r29; - unkStruct3* var_r31; + unkStruct3 *var_r31; var_r31 = lbl_1_bss_98; if (var_r31) { @@ -134,36 +136,40 @@ void fn_1_76E8(unkStruct7* arg0) { } } -void fn_1_77C8(unkStruct7* arg0, u8 arg1) { +void fn_1_77C8(unkStruct7 *arg0, u8 arg1) +{ s32 var_r30; arg0->field00_bit0 = 1; arg0->unk48 = arg1; - Hu3DModelAttrReset(arg0->unkC[0], 1); + Hu3DModelAttrReset(arg0->unkC[0], HU3D_ATTR_DISPOFF); if (arg0->unk8 == 0) { for (var_r30 = 0; var_r30 < 9; var_r30++) { if (var_r30 == arg1) { - Hu3DModelAttrReset(arg0->unkC[var_r30 + 1], 1); - } else { - Hu3DModelAttrSet(arg0->unkC[var_r30 + 1], 1); + Hu3DModelAttrReset(arg0->unkC[var_r30 + 1], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(arg0->unkC[var_r30 + 1], HU3D_ATTR_DISPOFF); } } } } -void fn_1_7884(unkStruct7* arg0) { +void fn_1_7884(unkStruct7 *arg0) +{ s32 var_r30; arg0->field00_bit0 = 0; - Hu3DModelAttrSet(arg0->unkC[0], 1); + Hu3DModelAttrSet(arg0->unkC[0], HU3D_ATTR_DISPOFF); if (arg0->unk8 == 0) { for (var_r30 = 0; var_r30 < 9; var_r30++) { - Hu3DModelAttrSet(arg0->unkC[var_r30 + 1], 1); + Hu3DModelAttrSet(arg0->unkC[var_r30 + 1], HU3D_ATTR_DISPOFF); } } } -void fn_1_7908(unkStruct7* arg0, Vec* arg1, s32 arg2) { +void fn_1_7908(unkStruct7 *arg0, Vec *arg1, s32 arg2) +{ arg0->unk38 = *arg1; arg0->unk2C = arg0->unk20; arg0->unk4C = 0.0f; @@ -171,30 +177,33 @@ void fn_1_7908(unkStruct7* arg0, Vec* arg1, s32 arg2) { arg0->field00_bit1 = 1; } -void fn_1_799C(unkStruct7* arg0) { +void fn_1_799C(unkStruct7 *arg0) +{ s32 var_r30; if (arg0->unk8 == 0) { for (var_r30 = 0; var_r30 < 9; var_r30++) { - Hu3DModelAttrReset(arg0->unkC[var_r30 + 1], 0x40000002); + Hu3DModelAttrReset(arg0->unkC[var_r30 + 1], HU3D_MOTATTR_PAUSE); Hu3DMotionTimeSet(arg0->unkC[var_r30 + 1], 0.0f); } } arg0->field00_bit3 = 1; } -void fn_1_7A38(unkStruct7* arg0) { +void fn_1_7A38(unkStruct7 *arg0) +{ s32 var_r31; if (arg0->unk8 == 0) { for (var_r31 = 0; var_r31 < 9; var_r31++) { - Hu3DModelAttrSet(arg0->unkC[var_r31 + 1], 0x40000002); + Hu3DModelAttrSet(arg0->unkC[var_r31 + 1], HU3D_MOTATTR_PAUSE); } } arg0->field00_bit3 = 0; } -void fn_1_7AB4(unkStruct7* arg0) { +void fn_1_7AB4(unkStruct7 *arg0) +{ f32 var_f31; s32 temp_r29; s32 var_r30; @@ -208,10 +217,11 @@ void fn_1_7AB4(unkStruct7* arg0) { Hu3DModelScaleSet(arg0->unkC[temp_r29], arg0->unk44, arg0->unk44, arg0->unk44); if (arg0->field00_bit2 != 0) { var_f31 = 180.0f; - } else { + } + else { var_f31 = 0.0f; } Hu3DModelRotSet(arg0->unkC[temp_r29], 0.0f, var_f31, 0.0f); } } -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/deck.c b/src/REL/m446Dll/deck.c index dfa9d846..83e541ee 100644 --- a/src/REL/m446Dll/deck.c +++ b/src/REL/m446Dll/deck.c @@ -18,7 +18,7 @@ unkStruct5* fn_1_3064(void) { s32 var_r30; unkStruct5* temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, 0x10000000); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, MEMORY_DEFAULT_NUM); if (!temp_r3) { return NULL; } @@ -184,4 +184,4 @@ void fn_1_38E0(u32 arg0) { s32 fn_1_38F0(void) { return ((lbl_1_bss_20 = (lbl_1_bss_20 * 0x41C64E6D) + 0x3039) >> 16) % 32768; -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index c81335ae..b73f19e3 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -1,22 +1,22 @@ #include "REL/m446Dll.h" -#include "rel_sqrt_consts.h" +#include "math.h" +#include "game/audio.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfman.h" -#include "game/audio.h" #include "game/jmp.h" +#include "game/minigame_seq.h" #include "game/window.h" #include "game/wipe.h" -#include "game/frand.h" -#include "game/minigame_seq.h" // bss s32 lbl_1_bss_14; s32 lbl_1_bss_10; -Process* lbl_1_bss_C; +Process *lbl_1_bss_C; omObjData *lbl_1_bss_8; s32 lbl_1_bss_4; -unkStruct* lbl_1_bss_0; +unkStruct *lbl_1_bss_0; // data Vec lbl_1_data_0 = { 0.0f, 90.0f, 0.0f }; @@ -25,18 +25,13 @@ f32 lbl_1_data_18 = 1260.0f; Vec lbl_1_data_1C = { 0.0f, 90.0f, 0.0f }; Vec lbl_1_data_28 = { -90.0f, 0.0f, 0.0f }; f32 lbl_1_data_34 = 260.0f; -Vec lbl_1_data_38[2] = { - { 0.0f, 100.0f, 120.0f }, - { 0.0f, 100.0f, 120.0f } -}; -Vec lbl_1_data_50[2] = { - { -30.0f, 0.0f, 0.0f }, - { -30.0f, 0.0f, 0.0f } -}; +Vec lbl_1_data_38[2] = { { 0.0f, 100.0f, 120.0f }, { 0.0f, 100.0f, 120.0f } }; +Vec lbl_1_data_50[2] = { { -30.0f, 0.0f, 0.0f }, { -30.0f, 0.0f, 0.0f } }; f32 lbl_1_data_68[2] = { 600.0f, 600.0f }; s32 lbl_1_data_70[2][2] = { { 0x46, 0x1A4 }, { 0x1F4, 0x3C } }; -void ObjectSetup(void) { +void ObjectSetup(void) +{ lbl_1_bss_C = omInitObjMan(5, 0x2000); omGameSysInit(lbl_1_bss_C); lbl_1_bss_8 = omAddObjEx(lbl_1_bss_C, 0x3E8, 0x32U, 0x32U, 0, fn_1_13C); @@ -44,7 +39,8 @@ void ObjectSetup(void) { lbl_1_bss_4 = 0; } -void fn_1_13C(omObjData* arg0) { +void fn_1_13C(omObjData *arg0) +{ switch (lbl_1_bss_4) { case 0: HuWinInit(1); @@ -68,9 +64,10 @@ void fn_1_13C(omObjData* arg0) { fn_1_7350(); fn_1_20D4(); fn_1_68DC(); - if (lbl_1_bss_0->unk0 != 5) break; + if (lbl_1_bss_0->unk0 != 5) + break; lbl_1_bss_4 = 3; - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); case 2: break; case 3: @@ -92,11 +89,12 @@ void fn_1_13C(omObjData* arg0) { } } -unkStruct* m446FlowCreate(void) { +unkStruct *m446FlowCreate(void) +{ s32 var_r30; - unkStruct* temp_r3; + unkStruct *temp_r3; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x9C, 0x10000000); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x9C, MEMORY_DEFAULT_NUM); if (temp_r3 == 0) { OSReport("[!] m446FlowCreate() ERROR...\n"); return NULL; @@ -108,14 +106,14 @@ unkStruct* m446FlowCreate(void) { temp_r3->unk10 = 0; temp_r3->unk98 = NULL; temp_r3->unk18 = -1; - + for (var_r30 = 0; var_r30 < 23; var_r30++) { temp_r3->unk38[var_r30] = 0; } temp_r3->unk24 = m446StageCreate(); temp_r3->unk20 = fn_1_39D0(); lbl_1_bss_10 = 0; - + for (var_r30 = 0; var_r30 < 2; var_r30++) { temp_r3->unk2C[var_r30] = m446PlayerCreate(var_r30, temp_r3->unk20); if (temp_r3->unk2C[var_r30]->unk68 != 0) { @@ -123,11 +121,12 @@ unkStruct* m446FlowCreate(void) { } } temp_r3->unk28 = fn_1_3064(); - WipeCreate(1, 0, 0x3C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); return temp_r3; } -void fn_1_3FC(unkStruct* arg0) { +void fn_1_3FC(unkStruct *arg0) +{ s32 var_r30; if (arg0->unk98) { @@ -139,7 +138,7 @@ void fn_1_3FC(unkStruct* arg0) { if (arg0->unk6 == -1) { MGSeqParamSet(arg0->unk6, 2, -1); } - + for (var_r30 = 0; var_r30 < 2; var_r30++) { fn_1_509C(arg0->unk2C[var_r30]); } @@ -149,9 +148,10 @@ void fn_1_3FC(unkStruct* arg0) { HuMemDirectFree(arg0); } -m446Func1 lbl_1_data_A0[5] = {fn_1_53C, fn_1_B78, fn_1_CA0, fn_1_C0C, fn_1_958}; +m446Func1 lbl_1_data_A0[5] = { fn_1_53C, fn_1_B78, fn_1_CA0, fn_1_C0C, fn_1_958 }; -void fn_1_4B4(unkStruct* arg0) { +void fn_1_4B4(unkStruct *arg0) +{ if (lbl_1_data_A0[arg0->unk0]) { lbl_1_data_A0[arg0->unk0](arg0); } @@ -160,10 +160,11 @@ void fn_1_4B4(unkStruct* arg0) { } } -void fn_1_53C(unkStruct* arg0) { +void fn_1_53C(unkStruct *arg0) +{ s32 var_r30; s32 var_r29; - + switch (arg0->unk10) { case 0: fn_1_6EA0(&lbl_1_data_0); @@ -177,11 +178,13 @@ void fn_1_53C(unkStruct* arg0) { if (arg0->unk14 == 20) { fn_1_84AC(arg0->unk24); } - if (arg0->unk14++ < 0xB4) break; + if (arg0->unk14++ < 0xB4) + break; arg0->unk18 = HuAudSeqPlay(0x3D); if (arg0->unk2C[1]->unk64 == 8) { arg0->unk10 = 2; - } else { + } + else { arg0->unk10 = 4; } break; @@ -201,7 +204,8 @@ void fn_1_53C(unkStruct* arg0) { arg0->unk10 = 5; break; case 5: - if (fn_1_708C()) break; + if (fn_1_708C()) + break; fn_1_860C(arg0->unk24); for (var_r30 = 0; var_r30 < 2; var_r30++) { fn_1_637C(arg0->unk2C[var_r30], 1); @@ -214,13 +218,15 @@ void fn_1_53C(unkStruct* arg0) { arg0->unk14 = 0; break; case 7: - if (arg0->unk14++ < 0x78) break; + if (arg0->unk14++ < 0x78) + break; fn_1_34A0(arg0->unk28, &arg0->unk38[0], arg0->unk94, 1); arg0->unk10 = 8; arg0->unk14 = 0; break; case 8: - if (arg0->unk14++ < 0x78) break; + if (arg0->unk14++ < 0x78) + break; for (var_r29 = 0; var_r29 < 2; var_r29++) { for (var_r30 = 0; var_r30 < 3; var_r30++) { @@ -233,10 +239,14 @@ void fn_1_53C(unkStruct* arg0) { arg0->unk10 = 9; break; case 9: - if (arg0->unk34->unk70 != 0) break; - if (arg0->unk34->unk78 != 0) break; - if (arg0->unk34->unk74 != 0) break; - if (arg0->unk34->unk4 != 0) break; + if (arg0->unk34->unk70 != 0) + break; + if (arg0->unk34->unk78 != 0) + break; + if (arg0->unk34->unk74 != 0) + break; + if (arg0->unk34->unk4 != 0) + break; for (var_r29 = 0; var_r29 < 2; var_r29++) { for (var_r30 = 0; var_r30 < 3; var_r30++) { @@ -247,10 +257,14 @@ void fn_1_53C(unkStruct* arg0) { arg0->unk10 = 10; break; case 10: - if (arg0->unk34->unk70 != 0) break; - if (arg0->unk34->unk78 != 0) break; - if (arg0->unk34->unk74 != 0) break; - if (arg0->unk34->unk4 != 0) break; + if (arg0->unk34->unk70 != 0) + break; + if (arg0->unk34->unk78 != 0) + break; + if (arg0->unk34->unk74 != 0) + break; + if (arg0->unk34->unk4 != 0) + break; fn_1_46AC(arg0->unk20); while (m446DeckPopCard(&arg0->unk28->unk0, &arg0->unk34) != 0) { @@ -264,14 +278,16 @@ void fn_1_53C(unkStruct* arg0) { arg0->unk14 = 0; break; case 11: - if (arg0->unk14++ < 0x78) break; + if (arg0->unk14++ < 0x78) + break; arg0->unk0 = 1; arg0->unk10 = 0; break; } } -void fn_1_958(unkStruct* arg0) { +void fn_1_958(unkStruct *arg0) +{ s32 temp_r3; s32 temp_r3_2; s32 temp_r3_3; @@ -300,20 +316,24 @@ void fn_1_958(unkStruct* arg0) { if (arg0->unk2C[1]->unk64 == 8) { fn_1_5B34(arg0->unk2C[1]); HuAudSStreamPlay(3); - } else { + } + else { fn_1_5C10(arg0->unk2C[1]); HuAudSStreamPlay(4); } - } else if (arg0->unk2C[0]->unk24 != 0) { + } + else if (arg0->unk2C[0]->unk24 != 0) { fn_1_5B34(arg0->unk2C[0]); fn_1_5C10(arg0->unk2C[1]); HuAudSStreamPlay(1); - } else if (arg0->unk2C[1]->unk24 != 0) { + } + else if (arg0->unk2C[1]->unk24 != 0) { fn_1_5B34(arg0->unk2C[1]); fn_1_5C10(arg0->unk2C[0]); if (arg0->unk2C[1]->unk64 == 8) { HuAudSStreamPlay(3); - } else { + } + else { HuAudSStreamPlay(1); } } @@ -330,7 +350,8 @@ void fn_1_958(unkStruct* arg0) { } } -void fn_1_B78(unkStruct* arg0) { +void fn_1_B78(unkStruct *arg0) +{ switch (arg0->unk10) { case 0: arg0->unk18 = HuAudSeqPlay(0x3F); @@ -348,7 +369,8 @@ void fn_1_B78(unkStruct* arg0) { } } -void fn_1_C0C(unkStruct* arg0) { +void fn_1_C0C(unkStruct *arg0) +{ switch (arg0->unk10) { case 0: HuAudSeqFadeOut(arg0->unk18, 0x64); @@ -366,7 +388,8 @@ void fn_1_C0C(unkStruct* arg0) { } } -void fn_1_CA0(unkStruct* arg0) { +void fn_1_CA0(unkStruct *arg0) +{ s32 var_r29; unkStruct8 *var_r30; @@ -390,7 +413,8 @@ void fn_1_CA0(unkStruct* arg0) { arg0->unk10 = 3; arg0->unk14 = 0; } - } else { + } + else { arg0->unk10 = 4; } break; @@ -420,7 +444,9 @@ void fn_1_CA0(unkStruct* arg0) { MGSeqPosSet(arg0->unk6, lbl_1_data_70[arg0->unk1C][0], lbl_1_data_70[arg0->unk1C][1]); fn_1_4000(arg0->unk20, arg0->unk1C == 1 >> 5); arg0->unk10 = 7; - } else break; + } + else + break; case 7: if (fn_1_4088(arg0->unk20, var_r30->unk64, var_r30->unk66, arg0->unk1C == 1, &arg0->unk34, 0) == 0) { if ((--arg0->unkC % 60) == 0) { @@ -433,7 +459,9 @@ void fn_1_CA0(unkStruct* arg0) { arg0->unk14 = 0; break; } - } else break; + } + else + break; } arg0->unk10 = 9; break; @@ -455,7 +483,8 @@ void fn_1_CA0(unkStruct* arg0) { if (arg0->unk34->unk70 == 0 && arg0->unk34->unk78 == 0 && arg0->unk34->unk74 == 0 && arg0->unk34->unk4 == 0) { if (arg0->unk34->unk0 == 4) { arg0->unk10 = 13; - } else { + } + else { m446PlayerAppendCard(var_r30, arg0->unk34, 4); arg0->unk10 = 11; } @@ -465,7 +494,8 @@ void fn_1_CA0(unkStruct* arg0) { if (arg0->unk34->unk70 == 0 && arg0->unk34->unk78 == 0 && arg0->unk34->unk74 == 0 && arg0->unk34->unk4 == 0) { if (var_r30->unk24 != 0) { arg0->unk10 = 24; - } else { + } + else { arg0->unk10 = 12; } } @@ -475,9 +505,11 @@ void fn_1_CA0(unkStruct* arg0) { arg0->unk1C = 1; arg0->unk10 = 25; break; - } else if (arg0->unk1C == 0) { + } + else if (arg0->unk1C == 0) { arg0->unk1C = 1; - } else { + } + else { arg0->unk1C = 0; } arg0->unk10 = 1; @@ -599,24 +631,29 @@ void fn_1_CA0(unkStruct* arg0) { } } -s32 fn_1_17FC(unkStruct* arg0) { +s32 fn_1_17FC(unkStruct *arg0) +{ return MGSeqStatGet(arg0->unk4) != 0; } -void fn_1_183C(unkStruct* arg0) { +void fn_1_183C(unkStruct *arg0) +{ MGSeqKill(arg0->unk4); arg0->unk4 = -1; } -void fn_1_1874(unkStruct* arg0) { +void fn_1_1874(unkStruct *arg0) +{ arg0->unk4 = MGSeqCreate(3, 0); } -void fn_1_18B0(unkStruct* arg0) { +void fn_1_18B0(unkStruct *arg0) +{ arg0->unk4 = MGSeqCreate(3, 1); } -void fn_1_18EC(s16 arg0, s32 arg1) { +void fn_1_18EC(s16 arg0, s32 arg1) +{ HuWinComKeyReset(); if (lbl_1_bss_10 == 2) { HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, arg1); @@ -625,22 +662,23 @@ void fn_1_18EC(s16 arg0, s32 arg1) { HuWinMesWait(arg0); } -s32 fn_1_1970(s16 arg0, s32 arg1, s32 arg2, s32 arg3) { +s32 fn_1_1970(s16 arg0, s32 arg1, s32 arg2, s32 arg3) +{ if (lbl_1_bss_10 == 2) { HuPrcSleep(arg3); return arg2; - } else { + } + else { return HuWinChoiceGet(arg0, arg1); } } -static const s32 lbl_1_rodata_18[12] = { - 0x180003, 0x180004, 0x180005, 0x180006, - 0x180007, 0x180008, 0x180009, 0x18000A, - 0x18000B, 0x18000C, 0x18000D, 0 -}; +static const s32 lbl_1_rodata_18[12] = { MAKE_MESSID(0x18, 0x03), MAKE_MESSID(0x18, 0x04), MAKE_MESSID(0x18, 0x05), MAKE_MESSID(0x18, 0x06), + MAKE_MESSID(0x18, 0x07), MAKE_MESSID(0x18, 0x08), MAKE_MESSID(0x18, 0x09), MAKE_MESSID(0x18, 0x0A), MAKE_MESSID(0x18, 0x0B), + MAKE_MESSID(0x18, 0x0C), MAKE_MESSID(0x18, 0x0D), 0 }; -void fn_1_19D4(void) { +void fn_1_19D4(void) +{ s16 temp_r3; s16 var_r30; s32 temp_r0; @@ -652,13 +690,14 @@ void fn_1_19D4(void) { HuWinBGTPLvlSet(temp_r3, 0.8f); HuWinMesSpeedSet(temp_r3, 1); HuWinMesColSet(temp_r3, 0); - HuWinMesSet(temp_r3, 0x180001); + HuWinMesSet(temp_r3, MAKE_MESSID(0x18, 0x01)); fn_1_18EC(temp_r3, 0x3C); if (lbl_1_bss_10 < 2) { HuWinMesColSet(temp_r3, 0); - HuWinMesSet(temp_r3, 0x180002); + HuWinMesSet(temp_r3, MAKE_MESSID(0x18, 0x02)); var_r30 = fn_1_1970(temp_r3, 0, 1, 0x3C); - } else { + } + else { var_r30 = 1; } if (var_r30 == 0) { @@ -668,9 +707,10 @@ void fn_1_19D4(void) { HuWinMesSet(temp_r3, temp_r27); fn_1_18EC(temp_r3, 0x3C); } - } else { + } + else { HuWinMesColSet(temp_r3, 0); - HuWinMesSet(temp_r3, 0x18000D); + HuWinMesSet(temp_r3, MAKE_MESSID(0x18, 0x0D)); fn_1_18EC(temp_r3, 0x3C); } HuWinExAnimOut(temp_r3); diff --git a/src/REL/m446Dll/player.c b/src/REL/m446Dll/player.c index 6055f092..ecf62fa9 100644 --- a/src/REL/m446Dll/player.c +++ b/src/REL/m446Dll/player.c @@ -1,48 +1,102 @@ #include "REL/m446Dll.h" -#include "math.h" +#include "game/chrman.h" #include "game/gamework_data.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/chrman.h" -#include "game/pad.h" #include "game/objsub.h" +#include "game/pad.h" +#include "ext_math.h" // cursor.c extern unkStruct7 *m446CursorCreate(s32); -extern void fn_1_76E8(unkStruct7*); -extern void fn_1_77C8(unkStruct7*, u8); +extern void fn_1_76E8(unkStruct7 *); +extern void fn_1_77C8(unkStruct7 *, u8); // bss unkStruct3 *lbl_1_bss_30; // data s32 lbl_1_data_228[9] = { - 0x4D000A, 0x4D000B, 0x4D000C, - 0x4D000D, 0x4D000E, 0x4D000F, - 0x4D0010, 0x4D0011, 0x4D0021 + DATA_MAKE_NUM(DATADIR_M446, 10), + DATA_MAKE_NUM(DATADIR_M446, 11), + DATA_MAKE_NUM(DATADIR_M446, 12), + DATA_MAKE_NUM(DATADIR_M446, 13), + DATA_MAKE_NUM(DATADIR_M446, 14), + DATA_MAKE_NUM(DATADIR_M446, 15), + DATA_MAKE_NUM(DATADIR_M446, 16), + DATA_MAKE_NUM(DATADIR_M446, 17), + DATA_MAKE_NUM(DATADIR_M446, 33), }; -s32 lbl_1_data_24C[9][4] = { - { 0x5F0000, 0x5F0036, 0x5F0017, 0x5F0072 }, - { 0x1A0000, 0x1A0036, 0x1A0017, 0x1A0072 }, - { 0x6D0000, 0x6D0036, 0x6D0017, 0x6D0072 }, - { 0x8A0000, 0x8A0036, 0x8A0017, 0x8A0072 }, - { 0x850000, 0x850036, 0x850017, 0x850072 }, - { 0x110000, 0x110036, 0x110017, 0x110072 }, - { 0x0D0000, 0x0D0036, 0x0D0017, 0x0D0072 }, - { 0x810000, 0x810036, 0x810017, 0x810072 }, - { 0x4D0022, 0x4D0023, 0x4D0025, 0x4D0024 } -}; -m446Func8 lbl_1_data_2DC[5] = {NULL, fn_1_5B48, fn_1_5C24, fn_1_5D00, fn_1_6074}; -s32 fn_1_480C(void) { +s32 lbl_1_data_24C[9][4] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 54), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 54), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 54), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 23), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 54), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 54), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 23), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 54), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 54), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 23), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 54), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 114), + }, + { + DATA_MAKE_NUM(DATADIR_M446, 0x22), + DATA_MAKE_NUM(DATADIR_M446, 0x23), + DATA_MAKE_NUM(DATADIR_M446, 0x25), + DATA_MAKE_NUM(DATADIR_M446, 0x24), + }, +}; +m446Func8 lbl_1_data_2DC[5] = { NULL, fn_1_5B48, fn_1_5C24, fn_1_5D00, fn_1_6074 }; + +s32 fn_1_480C(void) +{ lbl_1_bss_30 = 0; return 1; } -void fn_1_4824(void) { - unkStruct3* var_r31; - void* var_r30; +void fn_1_4824(void) +{ + unkStruct3 *var_r31; + void *var_r30; var_r31 = lbl_1_bss_30; if (var_r31) { @@ -54,10 +108,11 @@ void fn_1_4824(void) { } } -void fn_1_487C(void) { +void fn_1_487C(void) +{ f32 temp_f31; - unkStruct8* temp_r31; - unkStruct3* var_r30; + unkStruct8 *temp_r31; + unkStruct3 *var_r30; var_r30 = lbl_1_bss_30; if (var_r30) { @@ -67,7 +122,7 @@ void fn_1_487C(void) { lbl_1_data_2DC[temp_r31->unk18](temp_r31); } if (temp_r31->unkB4 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unkC0)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unkC0); temp_f31 *= temp_f31; temp_r31->unk48.x = (temp_r31->unk9C.x + (temp_f31 * (temp_r31->unkA8.x - temp_r31->unk9C.x))); temp_r31->unk48.y = (temp_r31->unk9C.y + (temp_f31 * (temp_r31->unkA8.y - temp_r31->unk9C.y))); @@ -81,7 +136,7 @@ void fn_1_487C(void) { } } if (temp_r31->unk98 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unkB8)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unkB8); temp_f31 *= temp_f31; temp_r31->unk54.x = (temp_r31->unk80.x + (temp_f31 * (temp_r31->unk8C.x - temp_r31->unk80.x))); temp_r31->unk54.y = (temp_r31->unk80.y + (temp_f31 * (temp_r31->unk8C.y - temp_r31->unk80.y))); @@ -100,43 +155,48 @@ void fn_1_487C(void) { } } -unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { +unkStruct8 *m446PlayerCreate(s32 arg0, unkStruct6 *arg1) +{ f32 var_f31; s32 var_r27; s32 var_r26; s16 var_r25; s16 var_r24; - unkStruct3* var_r28; + unkStruct3 *var_r28; s32 var_r30; - unkStruct8* var_r31; + unkStruct8 *var_r31; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xCC, 0x10000000); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xCC, MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } var_r31->unk0 = arg0; if (GWPlayerCfg[arg0].iscom != 0) { var_r27 = 1; - } else { + } + else { var_r27 = 0; } var_r31->unk68 = var_r27; var_r31->unk4 = arg1; if (GWPlayerCfg[arg0].character == 0xB) { var_r26 = 1; - } else { + } + else { var_r26 = 0; } var_r31->unk70 = var_r26; if (var_r31->unk70 != 0) { var_r25 = 8; - } else { + } + else { var_r25 = GWPlayerCfg[arg0].character; } var_r31->unk64 = var_r25; if (var_r31->unk68 != 0) { var_r24 = 4; - } else { + } + else { var_r24 = GWPlayerCfg[arg0].pad_idx; } var_r31->unk66 = var_r24; @@ -147,7 +207,8 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { var_r31->unk48.x = 0.0f; if (var_r31->unk70 != 0) { var_f31 = 70.0f; - } else { + } + else { var_f31 = 0.0f; } var_r31->unk48.y = var_f31; @@ -163,7 +224,7 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { var_r31->unk1C = 0; var_r31->unk98 = 0; var_r31->unkB4 = 0; - + for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r31->unk2C[var_r30] = NULL; } @@ -174,19 +235,20 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { } fn_1_7884(var_r31->unk8); switch (var_r31->unk0) { - case 0: - var_r31->unk48.z = 150.0f; - var_r31->unk54.y = 180.0f; - break; - case 1: - var_r31->unk48.z = -150.0f; - var_r31->unk54.y = 0.0f; - break; + case 0: + var_r31->unk48.z = 150.0f; + var_r31->unk54.y = 180.0f; + break; + case 1: + var_r31->unk48.z = -150.0f; + var_r31->unk54.y = 0.0f; + break; } if (var_r31->unk70 != 0) { - var_r31->unk3C[0] = Hu3DModelCreateFile(0x4D0020); - var_r31->unk3C[1] = Hu3DModelCreateFile(0x4D0021); - } else { + var_r31->unk3C[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M446, 0x20)); + var_r31->unk3C[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M446, 0x21)); + } + else { var_r31->unk3C[0] = CharModelCreate(var_r31->unk64, 2); var_r31->unk3C[1] = Hu3DModelCreateFile(lbl_1_data_228[var_r31->unk64]); } @@ -195,15 +257,16 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { Hu3DModelShadowSet(var_r31->unk3C[0]); Hu3DModelShadowSet(var_r31->unk3C[1]); Hu3DModelPosSet(var_r31->unk3C[1], 0.0f, 100.0f, 0.0f); - Hu3DModelAttrReset(var_r31->unk3C[1], 0x40000001); - Hu3DModelAttrSet(var_r31->unk3C[1], 1); + Hu3DModelAttrReset(var_r31->unk3C[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(var_r31->unk3C[1], HU3D_ATTR_DISPOFF); Hu3DModelPosSet(var_r31->unk3C[1], 2000.0f, 2000.0f, 2000.0f); fn_1_637C(var_r31, 0); - + for (var_r30 = 0; var_r30 < 4; var_r30++) { if (var_r31->unk70 != 0) { var_r31->unk40[var_r30] = Hu3DJointMotionFile(var_r31->unk3C[0], lbl_1_data_24C[var_r31->unk64][var_r30]); - } else { + } + else { var_r31->unk40[var_r30] = CharModelMotionCreate(var_r31->unk64, lbl_1_data_24C[var_r31->unk64][var_r30]); } } @@ -212,10 +275,11 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { } if (var_r31->unk70 != 0) { Hu3DMotionSet(var_r31->unk3C[0], var_r31->unk40[0]); - } else { + } + else { CharModelMotionSet(var_r31->unk64, var_r31->unk40[0]); } - Hu3DModelAttrSet(var_r31->unk3C[0], 0x40000001); + Hu3DModelAttrSet(var_r31->unk3C[0], HU3D_MOTATTR_LOOP); var_r28 = fn_1_1DF4(var_r31); if (!var_r28) { OSReport("[!] m446PlayerCreate ERROR...\n"); @@ -224,18 +288,20 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { } if (lbl_1_bss_30) { fn_1_1EC8(lbl_1_bss_30, var_r28); - } else { + } + else { lbl_1_bss_30 = var_r28; } return var_r31; } -void fn_1_509C(unkStruct8* arg0) { +void fn_1_509C(unkStruct8 *arg0) +{ s32 var_r29; - unkStruct3* var_r30; + unkStruct3 *var_r30; var_r30 = lbl_1_bss_30; - + do { if (arg0 == var_r30->unk0) { if (var_r30 == lbl_1_bss_30) { @@ -243,18 +309,20 @@ void fn_1_509C(unkStruct8* arg0) { } fn_1_1F04(var_r30); fn_1_1E5C(var_r30); - + for (var_r29 = 0; var_r29 < 4; var_r29++) { if (arg0->unk70 != 0) { Hu3DMotionKill(arg0->unk40[var_r29]); - } else { + } + else { CharModelMotionKill(arg0->unk64, arg0->unk40[var_r29]); } } if (arg0->unk70 != 0) { Hu3DModelKill(arg0->unk3C[0]); Hu3DModelKill(arg0->unk3C[1]); - } else { + } + else { CharModelKill(arg0->unk64); Hu3DModelKill(arg0->unk3C[1]); } @@ -266,7 +334,8 @@ void fn_1_509C(unkStruct8* arg0) { } while (var_r30); } -s32 m446PlayerAppendCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { +s32 m446PlayerAppendCard(unkStruct8 *arg0, unkStruct4 *arg1, s32 arg2) +{ Vec sp18; Vec spC; s32 temp_r0_2; @@ -278,13 +347,13 @@ s32 m446PlayerAppendCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { OSReport("m446PlayerAppendCard ERROR...\n"); return 0; } - + for (var_r29 = 0; var_r29 < 3; var_r29++) { if (!arg0->unk2C[var_r29]) { break; } } - + if (var_r29 == 3) { OSReport("m446PlayerAppendCard ERROR...\n"); return 0; @@ -302,15 +371,15 @@ s32 m446PlayerAppendCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { sp18.z = -45.0f; break; } - + spC = arg1->unk34; switch (arg0->unk0) { - case 0: - spC.y = 0.0f; - break; - case 1: - spC.y = 180.0f; - break; + case 0: + spC.y = 0.0f; + break; + case 1: + spC.y = 180.0f; + break; } switch (arg2) { case 0: @@ -336,14 +405,16 @@ s32 m446PlayerAppendCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { if ((arg0->unk24 != 0) && (temp_r28 == 0)) { HuAudFXPlay(0x76B); fn_1_64BC(arg0, 1, 0x3C); - } else if ((arg0->unk20 != 0) && (temp_r27 == 0)) { + } + else if ((arg0->unk20 != 0) && (temp_r27 == 0)) { HuAudFXPlay(0x76B); fn_1_64BC(arg0, 0, 0x3C); } return 1; } -s32 m446PlayerRemoveCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { +s32 m446PlayerRemoveCard(unkStruct8 *arg0, unkStruct4 *arg1, s32 arg2) +{ Vec spC; s32 var_r30; @@ -351,7 +422,7 @@ s32 m446PlayerRemoveCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { OSReport("m446PlayerRemoveCard ERROR...\n"); return 0; } - + for (var_r30 = 0; var_r30 < 3; var_r30++) { if (arg0->unk2C[var_r30] == arg1) { break; @@ -377,7 +448,8 @@ s32 m446PlayerRemoveCard(unkStruct8* arg0, unkStruct4* arg1, s32 arg2) { return 1; } -s32 fn_1_5648(unkStruct8* arg0, s32 arg1, unkStruct4** arg2) { +s32 fn_1_5648(unkStruct8 *arg0, s32 arg1, unkStruct4 **arg2) +{ if ((arg1 < 0) || (arg1 >= 3)) { return 0; } @@ -385,7 +457,8 @@ s32 fn_1_5648(unkStruct8* arg0, s32 arg1, unkStruct4** arg2) { return 1; } -s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { +s32 fn_1_5678(unkStruct8 *arg0, unkStruct4 **arg1, s32 arg2) +{ s32 sp14[3]; Vec sp8; s32 var_r28; @@ -394,7 +467,7 @@ s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { s32 var_r24; s32 var_r27; s32 var_r26; - unkStruct4* var_r29; + unkStruct4 *var_r29; var_r27 = 0; var_r26 = 0; @@ -412,14 +485,15 @@ s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { break; } } - } else { + } + else { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r29 = arg0->unk2C[var_r30]; if (var_r29->unk0 != arg0->unk28) { break; } } - + var_r24 = fn_1_4720(arg0->unk4, var_r29->unk0); if (var_r24 >= 2) { for (var_r30 = 0; var_r30 < 3; var_r30++) { @@ -429,11 +503,13 @@ s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { break; } } - } else { + } + else { arg0->unk74 = (fn_1_38F0() % 3); } } - } else { + } + else { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r29 = arg0->unk2C[var_r30]; sp14[var_r30] = fn_1_4720(arg0->unk4, var_r29->unk0); @@ -450,7 +526,8 @@ s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { } if (var_r28 == 5) { arg0->unk74 = (fn_1_38F0() % 3); - } else { + } + else { arg0->unk74 = var_r30; } } @@ -459,22 +536,24 @@ s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { } if (arg0->unk7C > 0) { arg0->unk7C--; - } else { + } + else { var_r27 = arg0->unk74 < arg0->unk10; var_r26 = arg0->unk74 > arg0->unk10; var_r25 = arg0->unk74 == arg0->unk10; arg0->unk7C = 0x12; } - } else { + } + else { switch (arg0->unk0) { - case 0: - var_r27 = (HuPadDStkRep[arg0->unk66] & 1) != 0; - var_r26 = (HuPadDStkRep[arg0->unk66] & 2) != 0; - break; - case 1: - var_r27 = (HuPadDStkRep[arg0->unk66] & 2) != 0; - var_r26 = (HuPadDStkRep[arg0->unk66] & 1) != 0; - break; + case 0: + var_r27 = (HuPadDStkRep[arg0->unk66] & 1) != 0; + var_r26 = (HuPadDStkRep[arg0->unk66] & 2) != 0; + break; + case 1: + var_r27 = (HuPadDStkRep[arg0->unk66] & 2) != 0; + var_r26 = (HuPadDStkRep[arg0->unk66] & 1) != 0; + break; } var_r25 = (HuPadBtnDown[arg0->unk66] & 0x100) != 0; } @@ -513,20 +592,23 @@ s32 fn_1_5678(unkStruct8* arg0, unkStruct4** arg1, s32 arg2) { return 0; } -void fn_1_5B34(unkStruct8* arg0) { +void fn_1_5B34(unkStruct8 *arg0) +{ arg0->unk18 = 1; arg0->unk1C = 0; } -static const s32 lbl_1_rodata_1C8[4] = {0, 1, 2, 3}; +static const s32 lbl_1_rodata_1C8[4] = { 0, 1, 2, 3 }; -void fn_1_5B48(unkStruct8* arg0) { +void fn_1_5B48(unkStruct8 *arg0) +{ switch (arg0->unk1C) { case 0: if (arg0->unk70 != 0) { - Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[2], 0.0f, 10.0f, 0); - } else { - CharModelMotionShiftSet(arg0->unk64, arg0->unk40[2], 0.0f, 10.0f, 0); + Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + } + else { + CharModelMotionShiftSet(arg0->unk64, arg0->unk40[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } arg0->unk1C = 1; break; @@ -537,18 +619,21 @@ void fn_1_5B48(unkStruct8* arg0) { } } -void fn_1_5C10(unkStruct8* arg0) { +void fn_1_5C10(unkStruct8 *arg0) +{ arg0->unk18 = 2; arg0->unk1C = 0; } -void fn_1_5C24(unkStruct8* arg0) { +void fn_1_5C24(unkStruct8 *arg0) +{ switch (arg0->unk1C) { case 0: if (arg0->unk70 != 0) { - Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[3], 0.0f, 10.0f, 0); - } else { - CharModelMotionShiftSet(arg0->unk64, arg0->unk40[3], 0.0f, 10.0f, 0); + Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + } + else { + CharModelMotionShiftSet(arg0->unk64, arg0->unk40[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } arg0->unk1C = 1; break; @@ -559,12 +644,14 @@ void fn_1_5C24(unkStruct8* arg0) { } } -void fn_1_5CEC(unkStruct8* arg0) { +void fn_1_5CEC(unkStruct8 *arg0) +{ arg0->unk18 = 3; arg0->unk1C = 0; } -void fn_1_5D00(unkStruct8* arg0) { +void fn_1_5D00(unkStruct8 *arg0) +{ Vec sp8; sp8 = arg0->unk54; @@ -572,9 +659,10 @@ void fn_1_5D00(unkStruct8* arg0) { case 0: Hu3DModelAmbSet(arg0->unk3C[0], 0.8f, 0.8f, 0.8f); if (arg0->unk70 != 0) { - Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[1], 0.0f, 10.0f, 0U); - } else { - CharModelMotionShiftSet(arg0->unk64, arg0->unk40[1], 0.0f, 10.0f, 0x40000001U); + Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[1], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + } + else { + CharModelMotionShiftSet(arg0->unk64, arg0->unk40[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); Hu3DMotionStartEndSet(arg0->unk3C[0], 0.0f, 59.0f); } sp8.y = 0.0f; @@ -589,7 +677,8 @@ void fn_1_5D00(unkStruct8* arg0) { } } -void fn_1_5E54(unkStruct8* arg0, s32 arg1) { +void fn_1_5E54(unkStruct8 *arg0, s32 arg1) +{ Vec sp14; Vec sp8; f32 var_f31; @@ -598,11 +687,12 @@ void fn_1_5E54(unkStruct8* arg0, s32 arg1) { if (arg0->unk70 != 0) { var_f31 = 95.0f; - } else { + } + else { var_f31 = 80.0f; } sp14.y = var_f31; - + switch (arg0->unk0) { case 0: sp14.x = -30.0f + (30.0f * arg1); @@ -615,14 +705,16 @@ void fn_1_5E54(unkStruct8* arg0, s32 arg1) { sp14.x = 30.0f - (30.0f * arg1); if (arg0->unk70 != 0) { var_f30 = 30.0f; - } else { + } + else { var_f30 = 55.0f; } sp14.z = -50.0f - var_f30; sp8.x = 0.0f; if (arg0->unk70 != 0) { var_f29 = 180.0f; - } else { + } + else { var_f29 = -90.0f; } sp8.y = var_f29; @@ -635,11 +727,12 @@ void fn_1_5E54(unkStruct8* arg0, s32 arg1) { arg0->unk1C = 0; } -void fn_1_6074(unkStruct8* arg0) { +void fn_1_6074(unkStruct8 *arg0) +{ Vec sp8; f32 var_f31; f32 var_f30; - + switch (arg0->unk1C) { case 0: arg0->unk1C = 1; @@ -648,7 +741,8 @@ void fn_1_6074(unkStruct8* arg0) { sp8 = arg0->unk48; if (arg0->unk0 == 0) { var_f31 = -25.0f; - } else { + } + else { var_f31 = 25.0f; } sp8.z += var_f31; @@ -658,24 +752,27 @@ void fn_1_6074(unkStruct8* arg0) { arg0->unk14 = 0; break; case 2: - if (arg0->unk14++ < 0x1E) break; + if (arg0->unk14++ < 0x1E) + break; arg0->unk1C = 3; case 3: - Hu3DModelAttrSet(arg0->unk3C[1], 0x40000001); + Hu3DModelAttrSet(arg0->unk3C[1], HU3D_MOTATTR_LOOP); arg0->unk1C = 4; arg0->unk14 = 0; break; case 4: if (arg0->unk14 == 1) { - Hu3DModelAttrReset(arg0->unk3C[1], 0x40000001); + Hu3DModelAttrReset(arg0->unk3C[1], HU3D_MOTATTR_LOOP); } - if (arg0->unk14++ < 0x1E) break; + if (arg0->unk14++ < 0x1E) + break; arg0->unk1C = 5; case 5: sp8 = arg0->unk48; if (arg0->unk0 == 0) { var_f30 = -50.0f; - } else { + } + else { var_f30 = 50.0f; } sp8.z -= var_f30; @@ -691,7 +788,8 @@ void fn_1_6074(unkStruct8* arg0) { } } -void fn_1_6264(unkStruct8* arg0, Vec* arg1, s32 arg2) { +void fn_1_6264(unkStruct8 *arg0, Vec *arg1, s32 arg2) +{ arg0->unk8C = *arg1; arg0->unk80 = arg0->unk54; arg0->unkB8 = 0.0f; @@ -699,7 +797,8 @@ void fn_1_6264(unkStruct8* arg0, Vec* arg1, s32 arg2) { arg0->unk98 = 1; } -void fn_1_62F0(unkStruct8* arg0, Vec* arg1, s32 arg2) { +void fn_1_62F0(unkStruct8 *arg0, Vec *arg1, s32 arg2) +{ arg0->unkA8 = *arg1; arg0->unk9C = arg0->unk48; arg0->unkC0 = 0.0f; @@ -707,19 +806,21 @@ void fn_1_62F0(unkStruct8* arg0, Vec* arg1, s32 arg2) { arg0->unkB4 = 1; } -void fn_1_637C(unkStruct8* arg0, s32 arg1) { +void fn_1_637C(unkStruct8 *arg0, s32 arg1) +{ f32 var_f31; arg0->unkC8 = arg1; switch (arg1) { case 0: - Hu3DModelAttrReset(arg0->unk3C[0], 1); - Hu3DModelAttrSet(arg0->unk3C[0], 0x40000001); - Hu3DModelAttrSet(arg0->unk3C[1], 1); + Hu3DModelAttrReset(arg0->unk3C[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk3C[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->unk3C[1], HU3D_ATTR_DISPOFF); arg0->unk48.x = 0.0f; if (arg0->unk70 != 0) { var_f31 = 70.0f; - } else { + } + else { var_f31 = 0.0f; } arg0->unk48.y = var_f31; @@ -732,40 +833,44 @@ void fn_1_637C(unkStruct8* arg0, s32 arg1) { arg0->unk48.z = -150.0f; arg0->unk54.y = 0.0f; return; - } - break; + } + break; case 1: - Hu3DModelAttrReset(arg0->unk3C[1], 1); - Hu3DModelAttrSet(arg0->unk3C[0], 1); + Hu3DModelAttrReset(arg0->unk3C[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk3C[0], HU3D_ATTR_DISPOFF); break; } } -void fn_1_64BC(unkStruct8* arg0, s32 arg1, s32 arg2) { +void fn_1_64BC(unkStruct8 *arg0, s32 arg1, s32 arg2) +{ if (arg0->unk70 == 0) { switch (arg1) { - case 0: - omVibrate(arg0->unk0, arg2, 6, 6); - return; - case 1: - omVibrate(arg0->unk0, arg2, 4, 2); - return; - case 2: - omVibrate(arg0->unk0, arg2, 12, 0); - break; + case 0: + omVibrate(arg0->unk0, arg2, 6, 6); + return; + case 1: + omVibrate(arg0->unk0, arg2, 4, 2); + return; + case 2: + omVibrate(arg0->unk0, arg2, 12, 0); + break; } } } -static inline unkStruct8UnkC8(unkStruct8* arg0) { +static inline unkStruct8UnkC8(unkStruct8 *arg0) +{ if (arg0->unkC8 == 0) { return 0; - } else { + } + else { return 1; } } -void fn_1_6578(unkStruct8* arg0) { +void fn_1_6578(unkStruct8 *arg0) +{ s32 var_r30; var_r30 = unkStruct8UnkC8(arg0); @@ -774,16 +879,17 @@ void fn_1_6578(unkStruct8* arg0) { Hu3DModelScaleSet(arg0->unk3C[var_r30], arg0->unk60, arg0->unk60, arg0->unk60); } -void fn_1_6620(unkStruct8* arg0) { +void fn_1_6620(unkStruct8 *arg0) +{ s32 var_r26; - unkStruct4* temp_r27; - unkStruct4* temp_r30; + unkStruct4 *temp_r27; + unkStruct4 *temp_r30; s32 var_r29; s32 var_r28; arg0->unk20 = 0; arg0->unk24 = 0; - + for (var_r29 = 0; var_r29 < 3; var_r29++) { temp_r30 = arg0->unk2C[var_r29]; if (temp_r30) { @@ -794,7 +900,7 @@ void fn_1_6620(unkStruct8* arg0) { var_r26 = 0; temp_r30 = arg0->unk2C[var_r29]; if (temp_r30) { - + for (var_r28 = 0; var_r28 < 3; var_r28++) { temp_r27 = arg0->unk2C[var_r28]; if ((var_r29 != var_r28) && (temp_r27) && (temp_r30->unk0 == temp_r27->unk0)) { @@ -805,10 +911,11 @@ void fn_1_6620(unkStruct8* arg0) { arg0->unk28 = temp_r30->unk0; if (var_r26 == 1) { arg0->unk20 = 1; - } else if (var_r26 == 2) { + } + else if (var_r26 == 2) { arg0->unk24 = 1; } - + for (var_r28 = 0; var_r28 < 3; var_r28++) { temp_r27 = arg0->unk2C[var_r28]; if ((temp_r27) && (temp_r30->unk0 == temp_r27->unk0)) { @@ -819,4 +926,4 @@ void fn_1_6620(unkStruct8* arg0) { } } } -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/stage.c b/src/REL/m446Dll/stage.c index 11fbfee3..19f9d91f 100644 --- a/src/REL/m446Dll/stage.c +++ b/src/REL/m446Dll/stage.c @@ -4,7 +4,7 @@ #include "game/hsfmotion.h" // bss -unkStruct3* lbl_1_bss_A0; +unkStruct3 *lbl_1_bss_A0; // data s32 lbl_1_data_410[5] = { 0x4D0008, 0x4D0007, 0x4D0006, 0x4D001F, 0x4D001F }; @@ -15,52 +15,41 @@ Vec lbl_1_data_424[5] = { { 160.0f, 160.0f, 0.0f }, { -160.0f, 160.0f, 0.0f }, }; -unkStruct10 lbl_1_data_460[3] = { - { - { 160.0f, 160.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }, - { - { -160.0f, 160.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }, - { - { 0.0f, 160.0f, 500.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0xB0, 0xB0, 0xB0, 0xFF } - } -}; +unkStruct10 lbl_1_data_460[3] = { { { 160.0f, 160.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { -160.0f, 160.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 0.0f, 160.0f, 500.0f }, { 0.0f, 0.0f, 0.0f }, { 0xB0, 0xB0, 0xB0, 0xFF } } }; Vec lbl_1_data_4B4[3] = { { 1.0f, 3000.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }; -s32 fn_1_7BF0(void) { +s32 fn_1_7BF0(void) +{ lbl_1_bss_A0 = 0; return 1; } -void fn_1_7C08(void) { - unkStruct3* var_r31; - unkStruct9* var_r30; +void fn_1_7C08(void) +{ + unkStruct3 *var_r31; + unkStruct9 *var_r30; var_r31 = lbl_1_bss_A0; if (var_r31) { do { var_r30 = var_r31->unk0; - fn_1_2688((unkStruct4*)var_r30); // ??? + fn_1_2688((unkStruct4 *)var_r30); // ??? var_r31 = var_r31->unk8; } while (var_r31); } } -void fn_1_7C60(void) { +void fn_1_7C60(void) +{ s32 var_r30; - unkStruct3* var_r29; - unkStruct9* temp_r31; + unkStruct3 *var_r29; + unkStruct9 *temp_r31; var_r29 = lbl_1_bss_A0; if (var_r29) { @@ -70,7 +59,8 @@ void fn_1_7C60(void) { if ((temp_r31->unk14 += 0.002f) > 1.0f) { temp_r31->unk14 = 1.0f; } - Hu3DGLightColorSet(temp_r31->unkA[2], lbl_1_data_460[2].unk18.r * temp_r31->unk14, lbl_1_data_460[2].unk18.g * temp_r31->unk14, lbl_1_data_460[2].unk18.b * temp_r31->unk14, lbl_1_data_460[2].unk18.a * temp_r31->unk14); + Hu3DGLightColorSet(temp_r31->unkA[2], lbl_1_data_460[2].unk18.r * temp_r31->unk14, lbl_1_data_460[2].unk18.g * temp_r31->unk14, + lbl_1_data_460[2].unk18.b * temp_r31->unk14, lbl_1_data_460[2].unk18.a * temp_r31->unk14); } if (temp_r31->unk24 != 0) { for (var_r30 = 0; var_r30 <= 1; var_r30++) { @@ -78,22 +68,24 @@ void fn_1_7C60(void) { if ((temp_r31->unk10 += 0.002f) > 1.0f) { temp_r31->unk10 = 1.0f; } - Hu3DGLightColorSet(temp_r31->unkA[var_r30], temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.r, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.g, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.b, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.a); + Hu3DGLightColorSet(temp_r31->unkA[var_r30], temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.r, + temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.g, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.b, + temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.a); } } if ((temp_r31->unk18 == 0) && (Hu3DMotionEndCheck(temp_r31->unk0[2]) != 0)) { Hu3DMotionStartEndSet(temp_r31->unk0[2], 180.0f, 359.0f); - Hu3DModelAttrSet(temp_r31->unk0[2], 0x40000001); + Hu3DModelAttrSet(temp_r31->unk0[2], HU3D_MOTATTR_LOOP); temp_r31->unk18 = 1; } if ((temp_r31->unk1C == 0) && (Hu3DMotionEndCheck(temp_r31->unk0[3]) != 0)) { Hu3DMotionStartEndSet(temp_r31->unk0[3], 120.0f, 159.0f); - Hu3DModelAttrSet(temp_r31->unk0[3], 0x40000001); + Hu3DModelAttrSet(temp_r31->unk0[3], HU3D_MOTATTR_LOOP); temp_r31->unk1C = 1; } if ((temp_r31->unk20 == 0) && (Hu3DMotionEndCheck(temp_r31->unk0[4]) != 0)) { Hu3DMotionStartEndSet(temp_r31->unk0[4], 120.0f, 159.0f); - Hu3DModelAttrSet(temp_r31->unk0[4], 0x40000001); + Hu3DModelAttrSet(temp_r31->unk0[4], HU3D_MOTATTR_LOOP); temp_r31->unk20 = 1; } } @@ -102,13 +94,14 @@ void fn_1_7C60(void) { } } -unkStruct9* m446StageCreate(void) { +unkStruct9 *m446StageCreate(void) +{ s32 var_r30; - unkStruct3* var_r29; - unkStruct3* temp_ret; - unkStruct9* var_r31; + unkStruct3 *var_r29; + unkStruct3 *temp_ret; + unkStruct9 *var_r31; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, 0x10000000); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } @@ -120,19 +113,19 @@ unkStruct9* m446StageCreate(void) { var_r31->unk24 = 0; var_r31->unk28 = 0; var_r31->unk2C = 0; - + for (var_r30 = 0; var_r30 < 5; var_r30++) { var_r31->unk0[var_r30] = Hu3DModelCreateFile(lbl_1_data_410[var_r30]); Hu3DModelPosSet(var_r31->unk0[var_r30], lbl_1_data_424[var_r30].x, lbl_1_data_424[var_r30].y, lbl_1_data_424[var_r30].z); } - Hu3DModelAttrSet(var_r31->unk0[3], 1); - Hu3DModelAttrSet(var_r31->unk0[4], 1); - Hu3DModelAttrSet(var_r31->unk0[3], 0x40000002); - Hu3DModelAttrSet(var_r31->unk0[4], 0x40000002); - Hu3DModelAttrReset(var_r31->unk0[3], 0x40000001); - Hu3DModelAttrReset(var_r31->unk0[4], 0x40000001); - Hu3DModelAttrReset(var_r31->unk0[2], 0x40000001); - + Hu3DModelAttrSet(var_r31->unk0[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk0[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk0[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(var_r31->unk0[4], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->unk0[3], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->unk0[4], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->unk0[2], HU3D_MOTATTR_LOOP); + for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r31->unkA[var_r30] = Hu3DGLightCreateV(&lbl_1_data_460[var_r30].unk0, &lbl_1_data_460[var_r30].unkC, &lbl_1_data_460[var_r30].unk18); Hu3DGLightStaticSet(var_r31->unkA[var_r30], 1); @@ -152,15 +145,17 @@ unkStruct9* m446StageCreate(void) { } if (lbl_1_bss_A0) { fn_1_1EC8(lbl_1_bss_A0, var_r29); - } else { + } + else { lbl_1_bss_A0 = var_r29; } return var_r31; } -void fn_1_83F0(unkStruct9* arg0) { +void fn_1_83F0(unkStruct9 *arg0) +{ s32 var_r30; - unkStruct3* var_r31; + unkStruct3 *var_r31; var_r31 = lbl_1_bss_A0; do { @@ -170,33 +165,35 @@ void fn_1_83F0(unkStruct9* arg0) { } fn_1_1F04(var_r31); fn_1_1E5C(var_r31); - + for (var_r30 = 0; var_r30 < 5; var_r30++) { Hu3DModelKill(arg0->unk0[var_r30]); } HuMemDirectFree(arg0); return; - } - var_r31 = var_r31->unk8; + } + var_r31 = var_r31->unk8; } while (var_r31); } -void fn_1_84AC(unkStruct9* arg0) { - Hu3DModelAttrReset(arg0->unk0[3], 1); - Hu3DModelAttrReset(arg0->unk0[4], 1); - Hu3DModelAttrReset(arg0->unk0[3], 0x40000002); - Hu3DModelAttrReset(arg0->unk0[4], 0x40000002); +void fn_1_84AC(unkStruct9 *arg0) +{ + Hu3DModelAttrReset(arg0->unk0[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->unk0[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->unk0[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk0[4], HU3D_MOTATTR_PAUSE); arg0->unk24 = 1; arg0->unk1C = 0; arg0->unk20 = 0; arg0->unk18 = 0; } -void fn_1_852C(unkStruct9* arg0) { - Hu3DModelAttrSet(arg0->unk0[3], 1U); - Hu3DModelAttrSet(arg0->unk0[4], 1U); - Hu3DModelAttrSet(arg0->unk0[3], 0x40000002U); - Hu3DModelAttrSet(arg0->unk0[4], 0x40000002U); +void fn_1_852C(unkStruct9 *arg0) +{ + Hu3DModelAttrSet(arg0->unk0[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk0[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk0[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->unk0[4], HU3D_MOTATTR_PAUSE); Hu3DMotionStartEndSet(arg0->unk0[2], 0.0f, 359.0f); Hu3DMotionStartEndSet(arg0->unk0[3], 0.0f, 119.0f); Hu3DMotionStartEndSet(arg0->unk0[4], 0.0f, 119.0f); @@ -206,6 +203,7 @@ void fn_1_852C(unkStruct9* arg0) { arg0->unk18 = 0; } -void fn_1_860C(unkStruct9* arg0) { +void fn_1_860C(unkStruct9 *arg0) +{ arg0->unk28 = 1; -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/table.c b/src/REL/m446Dll/table.c index 56d45462..ea79e3b9 100644 --- a/src/REL/m446Dll/table.c +++ b/src/REL/m446Dll/table.c @@ -3,16 +3,18 @@ #include "game/pad.h" // bss -unkStruct3* lbl_1_bss_28; +unkStruct3 *lbl_1_bss_28; -s32 fn_1_3924(void) { +s32 fn_1_3924(void) +{ lbl_1_bss_28 = NULL; return 1; } -void fn_1_393C(void) { - unkStruct3* var_r31; - unkStruct6* var_r30; +void fn_1_393C(void) +{ + unkStruct3 *var_r31; + unkStruct6 *var_r30; var_r31 = lbl_1_bss_28; if (var_r31) { @@ -24,9 +26,10 @@ void fn_1_393C(void) { } } -void fn_1_3994(void) { - unkStruct4* sp8; - unkStruct3* var_r31; +void fn_1_3994(void) +{ + unkStruct4 *sp8; + unkStruct3 *var_r31; var_r31 = lbl_1_bss_28; if (var_r31) { @@ -37,16 +40,17 @@ void fn_1_3994(void) { } } -unkStruct6* fn_1_39D0(void) { +unkStruct6 *fn_1_39D0(void) +{ s32 var_r30; - unkStruct3* var_r29; - unkStruct6* var_r31; + unkStruct3 *var_r29; + unkStruct6 *var_r31; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x70, 0x10000000); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x70, MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } - var_r31->unk4 = Hu3DModelCreateFile(0x4D0005); + var_r31->unk4 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M446, 0x05)); Hu3DModelAmbSet(var_r31->unk4, 0.0f, 0.0f, 0.0f); Hu3DModelShadowMapSet(var_r31->unk4); Hu3DModelLayerSet(var_r31->unk4, 0); @@ -55,7 +59,7 @@ unkStruct6* fn_1_39D0(void) { var_r31->unk60 = 10; var_r31->unk5C = 0; var_r31->unk6C = 0; - + for (var_r30 = 0; var_r30 < 21; var_r30++) { var_r31->unk8[var_r30] = NULL; } @@ -68,14 +72,16 @@ unkStruct6* fn_1_39D0(void) { } if (lbl_1_bss_28) { fn_1_1EC8(lbl_1_bss_28, var_r29); - } else { + } + else { lbl_1_bss_28 = var_r29; } return var_r31; } -void fn_1_3B4C(unkStruct6* arg0) { - unkStruct3* var_r31; +void fn_1_3B4C(unkStruct6 *arg0) +{ + unkStruct3 *var_r31; var_r31 = lbl_1_bss_28; do { @@ -94,11 +100,12 @@ void fn_1_3B4C(unkStruct6* arg0) { } while (var_r31); } -s32 fn_1_3BF0(unkStruct6* arg0, unkStruct4* arg1, s32 arg2) { +s32 fn_1_3BF0(unkStruct6 *arg0, unkStruct4 *arg1, s32 arg2) +{ Vec sp18; Vec spC; s32 temp_r29; - + if (arg0->unk5C >= 21) { return 0; } @@ -138,10 +145,11 @@ s32 fn_1_3BF0(unkStruct6* arg0, unkStruct4* arg1, s32 arg2) { return 1; } -s32 fn_1_3EB4(unkStruct6* arg0, unkStruct4* arg1, s32 arg2) { +s32 fn_1_3EB4(unkStruct6 *arg0, unkStruct4 *arg1, s32 arg2) +{ Vec spC; s32 var_r31; - + for (var_r31 = 0; var_r31 < 0x15; var_r31++) { if (arg0->unk8[var_r31] == arg1) { arg0->unk8[var_r31] = NULL; @@ -165,7 +173,8 @@ s32 fn_1_3EB4(unkStruct6* arg0, unkStruct4* arg1, s32 arg2) { return 1; } -s32 fn_1_3FD0(unkStruct6* arg0, s32 arg1, unkStruct4** arg2) { +s32 fn_1_3FD0(unkStruct6 *arg0, s32 arg1, unkStruct4 **arg2) +{ if ((arg1 < 0) || (arg1 >= 0x15)) { return 0; } @@ -173,21 +182,24 @@ s32 fn_1_3FD0(unkStruct6* arg0, s32 arg1, unkStruct4** arg2) { return 1; } -void fn_1_4000(unkStruct6* arg0, s32 arg1) { +void fn_1_4000(unkStruct6 *arg0, s32 arg1) +{ s32 var_r31; - unkStruct4* var_r30; + unkStruct4 *var_r30; for (var_r31 = 0; var_r31 < 21; var_r31++) { if (arg1 != 0) { var_r30 = arg0->unk8[20 - var_r31]; - } else { + } + else { var_r30 = arg0->unk8[var_r31]; } if ((var_r30) && (var_r30->unk64 == 0)) { if (arg1 != 0) { arg0->unk60 = (0x14 - var_r31); return; - } else { + } + else { arg0->unk60 = var_r31; return; } @@ -195,11 +207,12 @@ void fn_1_4000(unkStruct6* arg0, s32 arg1) { } } -s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s32 arg5) { +s32 fn_1_4088(unkStruct6 *arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4 **arg4, s32 arg5) +{ Vec sp10; s32 var_r28; s32 var_r27; - unkStruct4* temp_r26; + unkStruct4 *temp_r26; s32 var_r25; s32 var_r24; s32 var_r23; @@ -214,19 +227,22 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s *arg4 = NULL; if (arg2 >= 4) { if (arg0->unk6C == 0) { - arg0->unk64 = (s32) (fn_1_38F0() % 21); + arg0->unk64 = (s32)(fn_1_38F0() % 21); do { if (!(temp_r26 = arg0->unk8[arg0->unk64]) || temp_r26->unk64 != 0) { arg0->unk64 = ++arg0->unk64 % 21; - } else break; + } + else + break; (void)temp_r26; } while (TRUE); arg0->unk6C = 1; arg0->unk68 = 0x1E; } if ((arg0->unk68 > 0) && (arg5 == 0)) { - arg0->unk68 = (arg0->unk68 - 1); - } else { + arg0->unk68--; + } + else { var_r28 = (arg0->unk64 / 7) < (arg0->unk60 / 7); var_r27 = (arg0->unk64 / 7) > (arg0->unk60 / 7); if ((var_r28 == 0) && (var_r27 == 0)) { @@ -236,7 +252,8 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s var_r23 = arg0->unk64 == arg0->unk60; arg0->unk68 = 0x12; } - } else if (arg5 == 0) { + } + else if (arg5 == 0) { var_r25 = (HuPadDStkRep[arg2] & 1) != 0; var_r24 = (HuPadDStkRep[arg2] & 2) != 0; var_r28 = (HuPadDStkRep[arg2] & 8) != 0; @@ -246,7 +263,8 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s if (var_r25 != 0) { if ((arg0->unk60 % 7) == 0) { arg0->unk60 = (arg0->unk60 + 6); - } else { + } + else { arg0->unk60 = (arg0->unk60 - 1); } HuAudFXPlay(0); @@ -254,7 +272,8 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s if (var_r24 != 0) { if ((arg0->unk60 % 7) == 6) { arg0->unk60 = (arg0->unk60 - 6); - } else { + } + else { arg0->unk60 = (arg0->unk60 + 1); } HuAudFXPlay(0); @@ -262,7 +281,8 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s if (var_r28 != 0) { if ((arg0->unk60 / 7) == 0) { arg0->unk60 = (arg0->unk60 + 0xE); - } else { + } + else { arg0->unk60 = (arg0->unk60 - 7); } HuAudFXPlay(0); @@ -270,7 +290,8 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s if (var_r27 != 0) { if ((arg0->unk60 / 7) == 2) { arg0->unk60 = (arg0->unk60 - 0xE); - } else { + } + else { arg0->unk60 = (arg0->unk60 + 7); } HuAudFXPlay(0); @@ -295,36 +316,39 @@ s32 fn_1_4088(unkStruct6* arg0, u8 arg1, u8 arg2, s32 arg3, unkStruct4** arg4, s return 1; } HuAudFXPlay(4); - } else { - HuAudFXPlay(4); + } + else { + HuAudFXPlay(4); } } return 0; } -void fn_1_46AC(unkStruct6* arg0) { - arg0->unk8[0] = (unkStruct4*)-1; - arg0->unk8[6] = (unkStruct4*)-1; - arg0->unk8[14] = (unkStruct4*)-1; - arg0->unk8[20] = (unkStruct4*)-1; +void fn_1_46AC(unkStruct6 *arg0) +{ + arg0->unk8[0] = (unkStruct4 *)-1; + arg0->unk8[6] = (unkStruct4 *)-1; + arg0->unk8[14] = (unkStruct4 *)-1; + arg0->unk8[20] = (unkStruct4 *)-1; } -void fn_1_46D0(unkStruct6* arg0) { +void fn_1_46D0(unkStruct6 *arg0) +{ s32 var_r31; - + for (var_r31 = 0; var_r31 < 21; var_r31++) { - if (arg0->unk8[var_r31] == (unkStruct4*)-1) { + if (arg0->unk8[var_r31] == (unkStruct4 *)-1) { arg0->unk8[var_r31] = 0; } } } -s32 fn_1_4720(unkStruct6* arg0, s32 arg1) { +s32 fn_1_4720(unkStruct6 *arg0, s32 arg1) +{ s32 var_r29; s32 var_r30; - unkStruct4* temp_r31; + unkStruct4 *temp_r31; - for (var_r29 = 0, var_r30 = 0; var_r30 < 21; var_r30++) { temp_r31 = arg0->unk8[var_r30]; if ((temp_r31) && (temp_r31->unk64 == 0) && ((temp_r31->unk0 == arg1) || (arg1 == 5))) { @@ -334,15 +358,15 @@ s32 fn_1_4720(unkStruct6* arg0, s32 arg1) { return var_r29; } -void fn_1_4798(unkStruct6* arg0) { - unkStruct4* temp_r31; +void fn_1_4798(unkStruct6 *arg0) +{ + unkStruct4 *temp_r31; s32 var_r30; - for (var_r30 = 0; var_r30 < 0x15; var_r30++) { temp_r31 = arg0->unk8[var_r30]; if (temp_r31 && (temp_r31->unk64 != 0)) { fn_1_2794(temp_r31); } } -} \ No newline at end of file +} diff --git a/src/REL/m447dll/block.c b/src/REL/m447dll/block.c new file mode 100755 index 00000000..335a8091 --- /dev/null +++ b/src/REL/m447dll/block.c @@ -0,0 +1,451 @@ +#include "REL/m447dll.h" +#include "game/audio.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/sprite.h" + +#include "ext_math.h" + +void fn_1_8F7C(void *arg0); +void fn_1_910C(void); +void fn_1_9158(UnkM447Struct_01 *arg0); +void fn_1_9320(UnkM447Struct_01 *arg0); +void fn_1_9374(UnkM447Struct_01 *arg0); +void fn_1_9538(UnkM447Struct_01 *arg0); +void fn_1_953C(UnkM447Struct_01 *arg0); +void fn_1_9758(UnkM447Struct_01 *arg0); +void fn_1_991C(UnkM447Struct_01 *arg0); +void fn_1_9BCC(UnkM447Struct_01 *arg0); +void fn_1_9CEC(UnkM447Struct_01 *arg0); +void fn_1_9EEC(UnkM447Struct_01 *arg0); +void fn_1_9F40(ModelData *model, ParticleData *particle, Mtx matrix); + +u32 lbl_1_bss_B8; // Maybe part of another file with fn_1_A230 and fn_1_A240. +UnkM447Struct_01 *lbl_1_bss_A4[5]; +s32 lbl_1_bss_A0; + +const s32 lbl_1_rodata_5F8[] + = { DATA_MAKE_NUM(DATADIR_M447, 12), DATA_MAKE_NUM(DATADIR_M447, 13), DATA_MAKE_NUM(DATADIR_M447, 10), DATA_MAKE_NUM(DATADIR_M447, 11), + DATA_MAKE_NUM(DATADIR_M447, 4), DATA_MAKE_NUM(DATADIR_M447, 5), DATA_MAKE_NUM(DATADIR_M447, 16), DATA_MAKE_NUM(DATADIR_M447, 17), + DATA_MAKE_NUM(DATADIR_M447, 8), DATA_MAKE_NUM(DATADIR_M447, 9), DATA_MAKE_NUM(DATADIR_M447, 6), DATA_MAKE_NUM(DATADIR_M447, 7), + DATA_MAKE_NUM(DATADIR_M447, 18), DATA_MAKE_NUM(DATADIR_M447, 19), DATA_MAKE_NUM(DATADIR_M447, 20), DATA_MAKE_NUM(DATADIR_M447, 21), + DATA_MAKE_NUM(DATADIR_M447, 22), DATA_MAKE_NUM(DATADIR_M447, 23), DATA_MAKE_NUM(DATADIR_M447, 14), DATA_MAKE_NUM(DATADIR_M447, 15) }; + +const float lbl_1_rodata_648[20] + = { 30.0f, 30.0f, 80.0f, 30.0f, 80.0f, 80.0f, 60.0f, 60.0f, 80.0f, 80.0f, 30.0f, 30.0f, 45.0f, 45.0f, 50.0f, 50.0f, 30.0f, 30.0f, 75.0f, 50.0f }; + +UnkM447Struct_01 *fn_1_8DF8(void) +{ + UnkM447Struct_01 *temp_r3; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + if (!temp_r3) { + OSReport("M447BlockCreate ERROR...\n"); + return NULL; + } + temp_r3->unk04 = 0; + temp_r3->unk00 = 0; + temp_r3->unk08 = 0; + temp_r3->unk0C = 0; + temp_r3->unk10.x = 0.0f; + temp_r3->unk10.y = 0.0f; + temp_r3->unk10.z = 0.0f; + temp_r3->unk40 = 0.0f; + temp_r3->unk44 = 0.0f; + temp_r3->unk48 = 0.0f; + temp_r3->unk4C = 0.0f; + temp_r3->unk50 = 0.0f; + temp_r3->unk54 = 0.0f; + temp_r3->unk1C.x = 0.0f; + temp_r3->unk1C.y = 0.0f; + temp_r3->unk1C.z = 0.0f; + temp_r3->unk8C = 1.0f; + fn_1_9158(temp_r3); + temp_r3->unkA4 = HuPrcChildCreate(fn_1_910C, 105, 0x3000, 0, lbl_1_bss_4); + temp_r3->unkA4->user_data = temp_r3; + return temp_r3; +} + +void fn_1_8F7C(void *arg0) +{ + fn_1_8F7C(arg0); + HuMemDirectFree(arg0); +} + +void fn_1_8FF4(UnkM447Struct_01 *arg0, s32 arg1) +{ + arg0->unk04 = arg1; + arg0->unk0C = 0; +} + +void fn_1_9004(UnkM447Struct_01 *arg0, s32 arg1, s32 arg2) +{ + if (lbl_1_bss_A0 != 0) { + arg0->unk00 = arg1 * 2 + (arg2 != 0 ? 0 : 1); + } + else { + arg0->unk00 = arg1 * 2 + (arg2 != 0 ? 1 : 0); + } + arg0->unk08 = arg2; + arg0->unk8C = 1.0f; + arg0->unk4C = 1.0f; + arg0->unk50 = 1.0f; + arg0->unk54 = 1.0f; + Hu3DModelAttrSet(arg0->unk58[arg0->unk00], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk58[21], HU3D_ATTR_DISPOFF); +} + +void fn_1_90FC(s32 arg0) +{ + lbl_1_bss_A0 = arg0; +} + +void (*lbl_1_data_294[])(UnkM447Struct_01 *) = { fn_1_9538, fn_1_953C, fn_1_9758, fn_1_991C, fn_1_9BCC, fn_1_9CEC }; + +void fn_1_910C(void) +{ + UnkM447Struct_01 *temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + lbl_1_data_294[temp_r31->unk04](temp_r31); + fn_1_9374(temp_r31); + HuPrcVSleep(); + } +} + +void fn_1_9158(UnkM447Struct_01 *arg0) +{ + s32 i; + + for (i = 0; i <= 19; i++) { + arg0->unk58[i] = Hu3DModelCreateFile(lbl_1_rodata_5F8[i]); + Hu3DModelAttrSet(arg0->unk58[i], HU3D_ATTR_ZWRITE_OFF); + Hu3DModelLayerSet(arg0->unk58[i], 7); + } + arg0->unk58[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 30)); + Hu3DModelLayerSet(arg0->unk58[20], 7); + arg0->unk58[21] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 25)); + Hu3DModelLayerSet(arg0->unk58[21], 7); + arg0->unkA0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M447, 57)); + arg0->unk58[22] = Hu3DParticleCreate(arg0->unkA0, 64); + Hu3DParticleHookSet(arg0->unk58[22], fn_1_9F40); + Hu3DParticleBlendModeSet(arg0->unk58[22], 1); + Hu3DModelLayerSet(arg0->unk58[22], 6); + Hu3DModelAttrSet(arg0->unk58[22], HU3D_ATTR_DISPOFF); + for (i = 0; i <= 19; i++) { + Hu3DModelAttrSet(arg0->unk58[i], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(arg0->unk58[arg0->unk00], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk58[20], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk58[21], HU3D_ATTR_DISPOFF); + for (i = 0; i <= 19; i++) { + Hu3DModelShadowSet(arg0->unk58[i]); + } +} + +void fn_1_9320(UnkM447Struct_01 *arg0) +{ + s32 i; + + for (i = 0; i < 23; i++) { + Hu3DModelKill(arg0->unk58[i]); + } +} + +void fn_1_9374(UnkM447Struct_01 *arg0) +{ + ModelData *temp_r30; + Mtx sp8; + + temp_r30 = &Hu3DData[arg0->unk58[arg0->unk00]]; + MTXIdentity(temp_r30->unk_F0); + MTXRotRad(sp8, 'x', MTXDegToRad(arg0->unk1C.x)); + MTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0); + MTXRotRad(sp8, 'y', MTXDegToRad(arg0->unk1C.y)); + MTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0); + MTXRotRad(sp8, 'z', MTXDegToRad(arg0->unk1C.z)); + MTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0); + Hu3DModelPosSet(arg0->unk58[arg0->unk00], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z); + Hu3DModelPosSet(arg0->unk58[20], arg0->unk10.x, arg0->unk10.y - 100.0f, arg0->unk10.z); + Hu3DModelPosSet(arg0->unk58[21], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z + 120.0f * arg0->unk54); + Hu3DModelRotSet(arg0->unk58[arg0->unk00], arg0->unk40, arg0->unk44, arg0->unk48); + Hu3DModelScaleSet(arg0->unk58[arg0->unk00], arg0->unk4C, arg0->unk50, arg0->unk54); + Hu3DModelScaleSet(arg0->unk58[21], arg0->unk4C, arg0->unk50, arg0->unk54); + Hu3DModelTPLvlSet(arg0->unk58[arg0->unk00], arg0->unk8C); +} + +void fn_1_9538(UnkM447Struct_01 *arg0) { } + +void fn_1_953C(UnkM447Struct_01 *arg0) +{ + float temp_f31; + + switch (arg0->unk0C) { + case 0: + arg0->unk90 = 0.0f; + arg0->unk98 = 0.016666668f; + arg0->unk10.y = -100.0f; + arg0->unk44 = 0.0f; + arg0->unk4C = 0.0f; + arg0->unk50 = 0.0f; + arg0->unk54 = 0.0f; + arg0->unk88 = -50.0f; + Hu3DModelAttrReset(arg0->unk58[arg0->unk00], HU3D_ATTR_DISPOFF); + arg0->unk0C = 1; + /* fallthrough */ + case 1: + arg0->unk44 += arg0->unk88; + temp_f31 = sind(90.0f * arg0->unk90); + arg0->unk10.y = -100.0f + 500.0f * temp_f31; + arg0->unk4C = arg0->unk90; + arg0->unk50 = arg0->unk90; + arg0->unk54 = arg0->unk90; + arg0->unk8C = temp_f31; + arg0->unk90 += arg0->unk98; + if (arg0->unk90 < 1.0f) { + break; + } + arg0->unk10.y = 400.0f; + arg0->unk4C = 1.0f; + arg0->unk50 = 1.0f; + arg0->unk54 = 1.0f; + arg0->unk8C = 1.0f; + arg0->unk0C = 2; + /* fallthrough */ + case 2: + fn_1_8FF4(arg0, 2); + break; + } +} + +void fn_1_9758(UnkM447Struct_01 *arg0) +{ + float temp_f31; + + switch (arg0->unk0C) { + case 0: + arg0->unk90 = 0.1f * (fn_1_A240() % 10); + arg0->unk98 = 0.011111111f; + arg0->unk0C = 1; + /* fallthrough */ + case 1: + if (arg0->unk88 < -8.0f) { + arg0->unk88 += 0.05f; + } + temp_f31 = sind(180.0f * arg0->unk90); + temp_f31 *= temp_f31; + arg0->unk10.y = 400.0f + temp_f31 * 25.0f; + arg0->unk44 += arg0->unk88; + arg0->unk90 += arg0->unk98; + if (arg0->unk90 < 1.0f) { + break; + } + arg0->unk90 = 0.0f; + break; + case 2: + fn_1_8FF4(arg0, 0); + break; + } +} + +void fn_1_991C(UnkM447Struct_01 *arg0) +{ + float temp_f31; + + switch (arg0->unk0C) { + case 0: + arg0->unk90 = 0.0f; + arg0->unk98 = 0.5f; + arg0->unk94 = 0.0f; + arg0->unk9C = 0.05f; + arg0->unk8C = 1.0f; + arg0->unk10.y = 400.0f; + arg0->unk28 = arg0->unk1C; + arg0->unk34 = 0.0f; + arg0->unk38 = arg0->unk1C.y; + arg0->unk3C = 0.0f; + arg0->unk0C = 1; + /* fallthrough */ + case 1: + temp_f31 = arg0->unk94; + arg0->unk1C.x = arg0->unk28.x + temp_f31 * (arg0->unk34 - arg0->unk28.x); + arg0->unk1C.y = arg0->unk28.y + temp_f31 * (arg0->unk38 - arg0->unk28.y); + arg0->unk1C.z = arg0->unk28.z + temp_f31 * (arg0->unk3C - arg0->unk28.z); + if (arg0->unk94 < 1.0f) { + arg0->unk94 += arg0->unk9C; + if (arg0->unk94 > 1.0f) { + arg0->unk94 = 1.0f; + } + } + temp_f31 = arg0->unk90; + arg0->unk10.y = 400.0 + 50.0f * temp_f31 * sind(90) - 4.9f * temp_f31 * temp_f31; + arg0->unk90 += arg0->unk98; + if (arg0->unk10.y >= lbl_1_rodata_648[arg0->unk00]) { + break; + } + arg0->unk10.y = lbl_1_rodata_648[arg0->unk00]; + HuAudFXPlay(0x785); + fn_1_1FEC(lbl_1_bss_10, 30); + arg0->unk0C = 2; + /* fallthrough */ + case 2: + Hu3DModelAttrReset(arg0->unk58[20], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(arg0->unk58[20], 0.0f); + fn_1_8FF4(arg0, 4); + break; + } +} + +void fn_1_9BCC(UnkM447Struct_01 *arg0) +{ + switch (arg0->unk0C) { + case 0: + arg0->unk90 = 0.0f; + arg0->unk98 = 0.016666668f; + arg0->unk0C = 1; + /* fallthrough */ + case 1: + arg0->unk8C = 1.0 - sind(90.0f * arg0->unk90); + arg0->unk90 += arg0->unk98; + if (arg0->unk90 < 1.0f) { + break; + } + arg0->unk0C = 2; + /* fallthrough */ + case 2: + Hu3DModelAttrSet(arg0->unk58[arg0->unk00], HU3D_ATTR_DISPOFF); + fn_1_8FF4(arg0, 0); + break; + } +} + +void fn_1_9CEC(UnkM447Struct_01 *arg0) +{ + float temp_f31; + + switch (arg0->unk0C) { + case 0: + arg0->unk90 = 0.0f; + arg0->unk98 = 0.008333334f; + Hu3DModelAttrReset(arg0->unk58[21], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(arg0->unk58[21], 0.0f); + Hu3DModelAttrSet(arg0->unk58[21], HU3D_MOTATTR_LOOP); + arg0->unkA8 = arg0->unk10; + arg0->unkB4 = 0.0f; + arg0->unkB8 = 200.0f; + arg0->unkBC = -700.0f - arg0->unk10.z / 2; + arg0->unkC0 = 0.0f; + arg0->unkC4 = 400.0f; + arg0->unkC8 = -700.0f; + fn_1_9EEC(arg0); + HuAudFXPlay(0x781); + arg0->unk0C = 1; + /* fallthrough */ + case 1: + temp_f31 = arg0->unk90; + arg0->unk4C = 1.0f - temp_f31; + arg0->unk50 = 1.0f - temp_f31; + arg0->unk54 = 1.0f - temp_f31; + fn_1_7B54(&arg0->unk10, &arg0->unkA8, 3, temp_f31); + arg0->unk90 += arg0->unk98; + if (arg0->unk90 < 1.0f) { + break; + } + arg0->unk0C = 2; + /* fallthrough */ + case 2: + fn_1_1EB0(lbl_1_bss_10, 2); + fn_1_8FF4(arg0, 0); + break; + } +} + +void fn_1_9EEC(UnkM447Struct_01 *arg0) +{ + ModelData *temp_r30; + ParticleData *temp_r31; + + temp_r30 = &Hu3DData[arg0->unk58[22]]; + temp_r31 = temp_r30->unk_120; + temp_r30->attr &= ~1; + temp_r31->unk_00 = 0; + temp_r31->unk_02 = 1; + temp_r31->unk_1C = arg0; +} + +void fn_1_9F40(ModelData *model, ParticleData *particle, Mtx matrix) +{ + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + UnkM447Struct_01 *temp_r29; + HsfanimStruct01 *var_r31; + s32 var_r27; + s32 i; + + if (particle->unk_02 == 0) { + return; + } + temp_r29 = particle->unk_1C; + if (particle->unk_00 == 0) { + particle->unk_00 = 1; + for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00 = i * 5; + var_r31->unk02 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.r = sp8.r; + var_r31->unk40.g = sp8.g; + var_r31->unk40.b = sp8.b; + var_r31->unk40.a = sp8.a; + } + } + for (i = 0, var_r27 = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) { + if (var_r31->unk00 > 0 && --var_r31->unk00 > 0) { + continue; + } + if (var_r31->unk02 == 0 && temp_r29->unk04 == 5 && temp_r29->unk10.z > -700.0f) { + var_r31->unk34.x = temp_r29->unk10.x; + var_r31->unk34.y = temp_r29->unk10.y; + var_r31->unk34.z = temp_r29->unk10.z; + var_r31->unk2C = 20.0f; + var_r31->unk02 = 1; + } + else if (var_r31->unk02 == 1) { + var_r31->unk34.y -= 1.0f; + var_r31->unk34.z += 3.0f; + var_r31->unk2C = 20.0f + fn_1_A240() % 60; + if (var_r31->unk40.a > 10) { + var_r31->unk40.a -= 4; + } + else { + var_r31->unk40.a = 0; + var_r31->unk02 = 2; + } + } + else { + var_r27++; + } + } + if (var_r27 == particle->unk_30) { + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + OSReport("*****************************************************\n"); + particle->unk_02 = 0; + } +} + +void fn_1_A230(s32 arg0) +{ + lbl_1_bss_B8 = arg0; +} + +s32 fn_1_A240(void) +{ + return ((lbl_1_bss_B8 = lbl_1_bss_B8 * 0x41C64E6D + 0x3039) >> 16) % (1 << 15); +} diff --git a/src/REL/m447dll/camera.c b/src/REL/m447dll/camera.c new file mode 100755 index 00000000..25e58b5b --- /dev/null +++ b/src/REL/m447dll/camera.c @@ -0,0 +1,151 @@ +#include "REL/m447dll.h" +#include "game/hsfman.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ Vec unk0C; + /* 0x18 */ float unk18; +} UnkM447Struct_05; // Size 0x1C + +void fn_1_3564(void); +void fn_1_3C7C(void); +void fn_1_3EA8(void); + +Process* lbl_1_bss_90; +UnkM447Struct_05 lbl_1_bss_74; +UnkM447Struct_05 lbl_1_bss_58; +UnkM447Struct_05 lbl_1_bss_3C; +s32 lbl_1_bss_38; +s32 lbl_1_bss_34; +s32 lbl_1_bss_30; +float lbl_1_bss_2C; +float lbl_1_bss_28; +float lbl_1_bss_24; +float lbl_1_bss_20; +float lbl_1_bss_1C; +float lbl_1_bss_18; + +s32 fn_1_3130(void) { + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 55.0f, 10.0f, 8000.0f, 1.2f); + lbl_1_bss_74.unk00.x = 0.0f; + lbl_1_bss_74.unk00.y = 400.0f; + lbl_1_bss_74.unk00.z = 0.0f; + lbl_1_bss_74.unk0C.x = 0.0f; + lbl_1_bss_74.unk0C.y = 0.0f; + lbl_1_bss_74.unk0C.z = 0.0f; + lbl_1_bss_74.unk18 = 200.0f; + lbl_1_bss_38 = 0; + lbl_1_bss_34 = 0; + lbl_1_bss_30 = 0; + lbl_1_bss_90 = HuPrcChildCreate(fn_1_3564, 100, 0x2000, 0, lbl_1_bss_4); + return 1; +} + +void fn_1_32E0(void) { + HuPrcKill(lbl_1_bss_90); +} + +void fn_1_330C(const Vec* arg0, s32 arg1) { + lbl_1_bss_3C.unk00 = *arg0; + lbl_1_bss_58.unk00 = lbl_1_bss_74.unk00; + lbl_1_bss_2C = 0.0f; + lbl_1_bss_20 = 1.0f / arg1; + lbl_1_bss_38 = 1; +} + +void fn_1_33C8(const Vec* arg0, s32 arg1) { + lbl_1_bss_3C.unk0C = *arg0; + lbl_1_bss_58.unk0C = lbl_1_bss_74.unk0C; + lbl_1_bss_28 = 0.0f; + lbl_1_bss_1C = 1.0f / arg1; + lbl_1_bss_34 = 1; +} + +void fn_1_3484(float arg0, s32 arg1) { + lbl_1_bss_3C.unk18 = arg0; + lbl_1_bss_58.unk18 = lbl_1_bss_74.unk18; + lbl_1_bss_24 = 0.0f; + lbl_1_bss_18 = 1.0f / arg1; + lbl_1_bss_30 = 1; +} + +void fn_1_351C(Vec* arg0) { + *arg0 = lbl_1_bss_74.unk00; +} + +void fn_1_3540(Vec* arg0) { + lbl_1_bss_74.unk00 = *arg0; +} + +void fn_1_3564(void) { + Vec sp28; + Vec sp1C; + Vec sp10; + float temp_f31; + + while (TRUE) { + if (lbl_1_bss_38 != 0) { + temp_f31 = sind(90.0f * lbl_1_bss_2C); + temp_f31 *= temp_f31; + lbl_1_bss_74.unk00.x = lbl_1_bss_58.unk00.x + temp_f31 * (lbl_1_bss_3C.unk00.x - lbl_1_bss_58.unk00.x); + lbl_1_bss_74.unk00.y = lbl_1_bss_58.unk00.y + temp_f31 * (lbl_1_bss_3C.unk00.y - lbl_1_bss_58.unk00.y); + lbl_1_bss_74.unk00.z = lbl_1_bss_58.unk00.z + temp_f31 * (lbl_1_bss_3C.unk00.z - lbl_1_bss_58.unk00.z); + if ((lbl_1_bss_2C += lbl_1_bss_20) >= 1.0f) { + lbl_1_bss_74.unk00 = lbl_1_bss_3C.unk00; + lbl_1_bss_38 = 0; + } + } + if (lbl_1_bss_34 != 0) { + temp_f31 = sind(90.0f * lbl_1_bss_28); + temp_f31 *= temp_f31; + lbl_1_bss_74.unk0C.x = lbl_1_bss_58.unk0C.x + temp_f31 * (lbl_1_bss_3C.unk0C.x - lbl_1_bss_58.unk0C.x); + lbl_1_bss_74.unk0C.y = lbl_1_bss_58.unk0C.y + temp_f31 * (lbl_1_bss_3C.unk0C.y - lbl_1_bss_58.unk0C.y); + lbl_1_bss_74.unk0C.z = lbl_1_bss_58.unk0C.z + temp_f31 * (lbl_1_bss_3C.unk0C.z - lbl_1_bss_58.unk0C.z); + if ((lbl_1_bss_28 += lbl_1_bss_1C) >= 1.0f) { + lbl_1_bss_74.unk0C = lbl_1_bss_3C.unk0C; + lbl_1_bss_34 = 0; + } + } + if (lbl_1_bss_30 != 0) { + temp_f31 = sind(90.0f * lbl_1_bss_24); + temp_f31 *= temp_f31; + lbl_1_bss_74.unk18 = lbl_1_bss_58.unk18 + temp_f31 * (lbl_1_bss_3C.unk18 - lbl_1_bss_58.unk18); + if ((lbl_1_bss_24 += lbl_1_bss_18) >= 1.0f) { + lbl_1_bss_74.unk18 = lbl_1_bss_3C.unk18; + lbl_1_bss_30 = 0; + } + } + sp28.x = lbl_1_bss_74.unk00.x + sind(lbl_1_bss_74.unk0C.y) * cosd(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18; + sp28.y = lbl_1_bss_74.unk00.y + -sind(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18; + sp28.z = lbl_1_bss_74.unk00.z + cosd(lbl_1_bss_74.unk0C.y) * cosd(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18; + sp10.x = sind(lbl_1_bss_74.unk0C.y) * sind(lbl_1_bss_74.unk0C.x); + sp10.y = cosd(lbl_1_bss_74.unk0C.x); + sp10.z = cosd(lbl_1_bss_74.unk0C.y) * sind(lbl_1_bss_74.unk0C.x); + sp1C = lbl_1_bss_74.unk00; + Hu3DCameraPosSet(1, sp28.x, sp28.y, sp28.z, sp10.x, sp10.y, sp10.z, sp1C.x, sp1C.y, sp1C.z); + HuPrcVSleep(); + } +} + +void fn_1_3C7C(void) { + if (HuPadBtn[0] & 4) { + lbl_1_bss_74.unk00.x += 0.02f * HuPadStkX[0]; + lbl_1_bss_74.unk00.y += 0.02f * HuPadStkY[0]; + lbl_1_bss_74.unk0C.y -= 0.02f * HuPadSubStkX[0]; + lbl_1_bss_74.unk0C.x += 0.02f * HuPadSubStkY[0]; + lbl_1_bss_74.unk18 += 0.02f * HuPadTrigL[0]; + lbl_1_bss_74.unk18 -= 0.02f * HuPadTrigR[0]; + } +} + +void fn_1_3EA8(void) { + print8(32, 132, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_74.unk00.x, lbl_1_bss_74.unk00.y, lbl_1_bss_74.unk00.z); + print8(32, 148, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_74.unk0C.x, lbl_1_bss_74.unk0C.y, lbl_1_bss_74.unk0C.z); + print8(32, 164, 1.5f, "ZOOM : x=%.2f", lbl_1_bss_74.unk18); +} diff --git a/src/REL/m447dll/main.c b/src/REL/m447dll/main.c new file mode 100755 index 00000000..eeb86fd4 --- /dev/null +++ b/src/REL/m447dll/main.c @@ -0,0 +1,713 @@ +#include "REL/m447dll.h" +#include "REL/executor.h" +#include "game/esprite.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "math.h" + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ char unk02[2]; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; +} UnkM447Struct_03; // Size 0xC + +void fn_1_12C(void); +UnkM447Struct_00* fn_1_1B8(void); +void fn_1_43C(UnkM447Struct_00* arg0); +BOOL fn_1_490(UnkM447Struct_00* arg0); +void fn_1_4A0(UnkM447Struct_00* arg0, s32 arg1); +void fn_1_4B0(void); +void fn_1_544(UnkM447Struct_00* arg0); +void fn_1_7A8(UnkM447Struct_00* arg0); +void fn_1_B5C(UnkM447Struct_00* arg0); +void fn_1_F34(UnkM447Struct_00* arg0); +void fn_1_1068(UnkM447Struct_00* arg0); +void fn_1_1394(UnkM447Struct_00* arg0, s16 arg1, s32 arg2); +s32 fn_1_141C(UnkM447Struct_00* arg0, s16 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_1484(void); +void fn_1_1754(UnkM447Struct_00* arg0); +void fn_1_1830(UnkM447Struct_00* arg0); +void fn_1_1884(UnkM447Struct_00* arg0); +void fn_1_1AFC(UnkM447Struct_00* arg0, s32 arg1, s32 arg2); +void fn_1_1BF8(void); +void fn_1_1CE0(UnkM447Struct_00* arg0); +void fn_1_1D34(UnkM447Struct_00* arg0); + +UnkM447Struct_06* lbl_1_bss_10; +char lbl_1_bss_C_pad[4]; +UnkM447Struct_00* lbl_1_bss_8; +Process* lbl_1_bss_4; +Process* lbl_1_bss_0; + +const s32 lbl_1_rodata_10[] = { + DATA_MAKE_NUM(DATADIR_M447, 53), + DATA_MAKE_NUM(DATADIR_M447, 53), + DATA_MAKE_NUM(DATADIR_M447, 54), + DATA_MAKE_NUM(DATADIR_M447, 54), + DATA_MAKE_NUM(DATADIR_M447, 55), + DATA_MAKE_NUM(DATADIR_M447, 55), + DATA_MAKE_NUM(DATADIR_M447, 55), + DATA_MAKE_NUM(DATADIR_M447, 56), + DATA_MAKE_NUM(DATADIR_M447, 56), + DATA_MAKE_NUM(DATADIR_M447, 56), + DATA_MAKE_NUM(DATADIR_M447, 55), + DATA_MAKE_NUM(DATADIR_M447, 55), + DATA_MAKE_NUM(DATADIR_M447, 55), + DATA_MAKE_NUM(DATADIR_M447, 56), + DATA_MAKE_NUM(DATADIR_M447, 56), + DATA_MAKE_NUM(DATADIR_M447, 56), + DATA_MAKE_NUM(DATADIR_M447, 44), + DATA_MAKE_NUM(DATADIR_M447, 45), + DATA_MAKE_NUM(DATADIR_M447, 46), + DATA_MAKE_NUM(DATADIR_M447, 47), + DATA_MAKE_NUM(DATADIR_M447, 48), + DATA_MAKE_NUM(DATADIR_M447, 49), + DATA_MAKE_NUM(DATADIR_M447, 50), + DATA_MAKE_NUM(DATADIR_M447, 51), + DATA_MAKE_NUM(DATADIR_M447, 52) +}; + +void ObjectSetup(void) { + lbl_1_bss_4 = omInitObjMan(10, 0x2000); + omGameSysInit(lbl_1_bss_4); + HuWinInit(1); + lbl_1_bss_0 = HuPrcChildCreate(fn_1_12C, 1000, 0x2000, 0, lbl_1_bss_4); + lbl_1_bss_8 = fn_1_1B8(); +} + +void fn_1_12C(void) { + while (omSysExitReq == 0) { + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuAudFadeOut(100); + fn_1_43C(lbl_1_bss_8); + HuPrcVSleep(); + omOvlReturnEx(1, 1); + HuPrcEnd(); +} + +UnkM447Struct_00* fn_1_1B8(void) { + Vec sp2C; + Vec sp20 = { 0.0f, 3000.0f, 1.0f }; + Vec sp14 = { 0.0f, 1.0f, 0.0f }; + Vec sp8 = { 0.0f, 0.0f, 0.0f }; + UnkM447Struct_00* temp_r3; + s32 i; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + if (!temp_r3) { + OSReport("M447FlowCreate ERROR...\n"); + return NULL; + } + Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); + Hu3DShadowTPLvlSet(0.45f); + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + fn_1_A230(frand()); + temp_r3->unk08 = 0; + fn_1_3130(); + lbl_1_bss_10 = fn_1_1D90(); + sp2C.x = 0.0f; + sp2C.y = -1000.0f; + sp2C.z = 0.0f; + for (i = 0; i < 5; i++) { + lbl_1_bss_A4[i] = fn_1_8DF8(); + lbl_1_bss_A4[i]->unk10 = sp2C; + } + fn_1_3F84(); + for (i = 0; i < 2; i++) { + lbl_1_bss_98[i] = fn_1_3FC4(i); + } + fn_1_1D34(temp_r3); + fn_1_1754(temp_r3); + temp_r3->unk14 = 0; + temp_r3->unk1C = 0; + temp_r3->unk24 = 0; + temp_r3->unk28 = 0; + temp_r3->unk2C = 0; + temp_r3->unk10 = 0; + temp_r3->unk70 = -1; + temp_r3->unk30 = -1; + temp_r3->unk32 = -1; + temp_r3->unk00 = HuPrcChildCreate(fn_1_4B0, 100, 0x4000, 0, lbl_1_bss_4); + temp_r3->unk00->user_data = temp_r3; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + return temp_r3; +} + +void fn_1_43C(UnkM447Struct_00* arg0) { + fn_1_1830(arg0); + fn_1_1E70(lbl_1_bss_10); + fn_1_32E0(); + HuPrcKill(arg0->unk00); + HuMemDirectFree(arg0); +} + +BOOL fn_1_490(UnkM447Struct_00* arg0) { + return arg0->unk08 == 0; +} + +void fn_1_4A0(UnkM447Struct_00* arg0, s32 arg1) { + arg0->unk14 = arg1; + arg0->unk1C = 0; +} + +void (*lbl_1_data_1C[])(UnkM447Struct_00*) = { + fn_1_544, + fn_1_7A8, + fn_1_B5C, + fn_1_F34, + fn_1_1068 +}; + +void fn_1_4B0(void) { + UnkM447Struct_00* temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + while (omSysExitReq == 0 || !fn_1_490(temp_r31)) { + lbl_1_data_1C[temp_r31->unk14](temp_r31); + HuPrcVSleep(); + } + omSysExitReq = 1; + temp_r31->unk08 = 1; + HuPrcEnd(); +} + +const Vec lbl_1_rodata_B0[2] = { + { 0.0f, 300.0f, 0.0f }, + { -0.12f, 176.0f, 0.0f } +}; + +void fn_1_544(UnkM447Struct_00* arg0) { + s32 i; + + switch (arg0->unk1C) { + case 0: + arg0->unk20 = 0; + arg0->unk1C = 1; + break; + case 1: + WipeStatGet(); + arg0->unk1C = 2; + break; + case 2: + if (arg0->unk20++ >= 60) { + arg0->unk1C = 3; + } + break; + case 3: + fn_1_1EB0(lbl_1_bss_10, 1); + arg0->unk20 = 0; + arg0->unk1C = 4; + break; + case 4: + if (!fn_1_1EC0(lbl_1_bss_10)) { + arg0->unk1C = 5; + } + break; + case 5: + if (lbl_1_bss_98[1]->unk18 == 8) { + arg0->unk70 = HuAudSeqPlay(0x3D); + } + fn_1_3484(860.0f, 60); + fn_1_330C(&lbl_1_rodata_B0[1], 60); + arg0->unk20 = 0; + arg0->unk1C = 6; + break; + case 6: + if (arg0->unk20++ >= 60) { + if (lbl_1_bss_98[1]->unk18 == 8) { + arg0->unk1C = 7; + } else { + arg0->unk1C = 9; + } + } + break; + case 7: + arg0->unk04 = HuPrcChildCreate(fn_1_1484, 100, 0x2000, 0, lbl_1_bss_4); + arg0->unk04->user_data = arg0; + arg0->unk0C = 1; + arg0->unk1C = 8; + break; + case 8: + if (arg0->unk0C != 0) { + break; + } + arg0->unk04 = NULL; + arg0->unk1C = 9; + /* fallthrough */ + case 9: + if (arg0->unk70 != -1) { + HuAudSeqFadeOut(arg0->unk70, 1000); + } + fn_1_3484(1150.0f, 60); + fn_1_330C(&lbl_1_rodata_B0[0], 60); + for (i = 0; i < 2; i++) { + fn_1_43CC(lbl_1_bss_98[i], 6); + } + fn_1_4A0(arg0, 1); + break; + } +} + +void fn_1_7A8(UnkM447Struct_00* arg0) { + Vec sp14; + Vec sp8; + s32 temp_r29; + s32 temp_r28; + s32 i; + + switch (arg0->unk1C) { + case 0: + arg0->unk1C = 1; + /* fallthrough */ + case 1: + fn_1_1EB0(lbl_1_bss_10, 3); + arg0->unk20 = 0; + arg0->unk1C = 2; + /* fallthrough */ + case 2: + if (arg0->unk20++ < 110) { + break; + } + arg0->unk1C = 3; + /* fallthrough */ + case 3: + fn_1_90FC(fn_1_A240() % 10 > 5); + temp_r29 = arg0->unk2C * 2 + fn_1_A240() % 2; + temp_r28 = fn_1_A240() % 5; + for (i = 0; i < 5; i++) { + fn_1_9004(lbl_1_bss_A4[i], temp_r29, temp_r28 == i); + fn_1_1ED4(i, &sp8); + lbl_1_bss_A4[i]->unk10 = sp8; + sp14.x = fn_1_A240() % 360; + sp14.y = 0.0f; + sp14.z = fn_1_A240() % 360; + lbl_1_bss_A4[i]->unk1C = sp14; + fn_1_8FF4(lbl_1_bss_A4[i], 1); + } + arg0->unk20 = 0; + arg0->unk1C = 4; + /* fallthrough */ + case 4: + if (arg0->unk20++ < 60) { + break; + } + for (i = 0; i < 5; i++) { + fn_1_8FF4(lbl_1_bss_A4[i], 2); + } + /* fallthrough */ + arg0->unk1C = 5; + case 5: + fn_1_1EB0(lbl_1_bss_10, 4); + arg0->unk20 = 0; + arg0->unk1C = 6; + /* fallthrough */ + case 6: + if (!fn_1_1EC0(lbl_1_bss_10)) { + if (arg0->unk10 != 0) { + arg0->unk1C = 9; + } else { + arg0->unk1C = 7; + } + } + break; + case 7: + arg0->unk70 = HuAudSeqPlay(0x3E); + arg0->unk30 = MGSeqStartCreate(); + arg0->unk1C = 8; + /* fallthrough */ + case 8: + if (MGSeqStatGet(arg0->unk30) != 0) { + break; + } + arg0->unk10 = 1; + arg0->unk1C = 9; + /* fallthrough */ + case 9: + fn_1_4A0(arg0, 2); + break; + } +} + +void fn_1_B5C(UnkM447Struct_00* arg0) { + s32 temp_r26; + s32 var_r27; + s32 i; + + switch (arg0->unk1C) { + case 0: + fn_1_1884(arg0); + arg0->unk24 = 900; + arg0->unk32 = MGSeqCreate(1, arg0->unk24 / 60, -1, -1); + for (i = 0; i < 2; i++) { + fn_1_43CC(lbl_1_bss_98[i], 1); + lbl_1_bss_98[i]->unk04 = 1; + } + arg0->unk1C = 1; + /* fallthrough */ + case 1: + temp_r26 = fn_1_1F9C(lbl_1_bss_10); + if (arg0->unk24 > 0 && temp_r26 > 0 && --arg0->unk24 % 60 == 0) { + MGSeqParamSet(arg0->unk32, 1, arg0->unk24 / 60); + } + if (arg0->unk24 > 0 && temp_r26 > 0) { + break; + } + arg0->unk1C = 2; + /* fallthrough */ + case 2: + for (i = 0; i < 2; i++) { + lbl_1_bss_98[i]->unk04 = 0; + fn_1_7A6C(lbl_1_bss_98[i]); + } + arg0->unk1C = 3; + break; + case 3: + if (arg0->unk32 != -1) { + MGSeqParamSet(arg0->unk32, 2, -1); + arg0->unk32 = -1; + } + for (i = 0; i < 2; i++) { + if (lbl_1_bss_98[i]->unk24 != 1 && lbl_1_bss_98[i]->unk24 != 0) { + return; + } + } + for (i = 0; i < 5; i++) { + if (lbl_1_bss_A4[i]->unk04 != 0 && lbl_1_bss_A4[i]->unk04 != 2) { + return; + } + } + arg0->unk1C = 4; + /* fallthrough */ + case 4: + for (i = 0; i < 2; i++) { + if (lbl_1_bss_98[i]->unk14 != 0) { + fn_1_1AFC(arg0, i, lbl_1_bss_98[i]->unk1B - 1); + } + } + arg0->unk2C++; + for (i = 0, var_r27 = 0; i < 2; i++) { + if (lbl_1_bss_98[i]->unk1B > var_r27) { + var_r27 = lbl_1_bss_98[i]->unk1B; + } + } + if (var_r27 >= 3 || arg0->unk2C >= 5) { + fn_1_4A0(lbl_1_bss_8, 4); + } else { + fn_1_4A0(lbl_1_bss_8, 3); + } + break; + } +} + +void fn_1_F34(UnkM447Struct_00* arg0) { + s32 i; + + switch (arg0->unk1C) { + case 0: + for (i = 0; i < 2; i++) { + fn_1_43CC(lbl_1_bss_98[i], 6); + } + arg0->unk1C = 1; + /* fallthrough */ + case 1: + for (i = 0; i < 5; i++) { + if (lbl_1_bss_A4[i]->unk04 != 0) { + fn_1_8FF4(lbl_1_bss_A4[i], 4); + } + } + arg0->unk20 = 0; + arg0->unk1C = 2; + /* fallthrough */ + case 2: + if (arg0->unk20++ < 160) { + break; + } + arg0->unk1C = 3; + /* fallthrough */ + case 3: + fn_1_4A0(lbl_1_bss_8, 1); + break; + } +} + +const Vec lbl_1_rodata_D8 = { 0.0f, 150.0f, 0.0f }; +const Vec lbl_1_rodata_E4 = { 6.0f, 0.0f, 0.0f }; + +void fn_1_1068(UnkM447Struct_00* arg0) { + s32 temp_r29; + s32 temp_r28; + s32 i; + + switch (arg0->unk1C) { + case 0: + for (i = 0; i < 5; i++) { + if (lbl_1_bss_A4[i]->unk04 != 0) { + fn_1_8FF4(lbl_1_bss_A4[i], 4); + } + } + arg0->unk1C = 1; + /* fallthrough */ + case 1: + // Bug: HuAudSeqFadeOut takes two arguments. + HuAudSeqFadeOut(arg0->unk70); + arg0->unk30 = MGSeqCreate(3, 1); + arg0->unk1C = 2; + /* fallthrough */ + case 2: + if (MGSeqStatGet(arg0->unk30) != 0) { + break; + } + arg0->unk1C = 3; + /* fallthrough */ + case 3: + for (i = 0; i < 2; i++) { + fn_1_43CC(lbl_1_bss_98[i], 7); + } + fn_1_330C(&lbl_1_rodata_D8, 180); + fn_1_3484(300.0f, 180); + fn_1_33C8(&lbl_1_rodata_E4, 180); + arg0->unk20 = 0; + arg0->unk1C = 4; + /* fallthrough */ + case 4: + if (arg0->unk20++ < 180) { + break; + } + arg0->unk1C = 5; + /* fallthrough */ + case 5: + temp_r29 = lbl_1_bss_98[0]->unk1B; + temp_r28 = lbl_1_bss_98[1]->unk1B; + if (lbl_1_bss_98[1]->unk18 != 8 && temp_r29 == temp_r28) { + fn_1_43CC(lbl_1_bss_98[0], 10); + fn_1_43CC(lbl_1_bss_98[1], 10); + HuAudSStreamPlay(4); + } else if (temp_r29 > temp_r28) { + fn_1_43CC(lbl_1_bss_98[0], 9); + fn_1_43CC(lbl_1_bss_98[1], 10); + GWPlayerCoinWinAdd(0, 10); + HuAudSStreamPlay(1); + } else { + fn_1_43CC(lbl_1_bss_98[0], 10); + fn_1_43CC(lbl_1_bss_98[1], 9); + GWPlayerCoinWinAdd(1, 10); + if (lbl_1_bss_98[1]->unk18 == 8) { + HuAudSStreamPlay(3); + } else { + HuAudSStreamPlay(1); + } + } + arg0->unk20 = 0; + arg0->unk1C = 6; + /* fallthrough */ + case 6: + if (arg0->unk20++ < 210) { + break; + } + arg0->unk1C = 7; + /* fallthrough */ + case 7: + omSysExitReq = 1; + arg0->unk08 = 1; + break; + } +} + +void fn_1_1394(UnkM447Struct_00* arg0, s16 arg1, s32 arg2) { + HuWinComKeyReset(); + if (arg0->unk18 == 2) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, arg2); + } + winData[arg1].active_pad = 1; + HuWinMesWait(arg1); +} + +s32 fn_1_141C(UnkM447Struct_00* arg0, s16 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->unk18 == 2) { + HuPrcSleep(arg4); + return arg3; + } + return HuWinChoiceGet(arg1, arg2); +} + +const s32 lbl_1_rodata_F4[] = { + MAKE_MESSID(42, 3), + MAKE_MESSID(42, 4), + MAKE_MESSID(42, 5), + MAKE_MESSID(42, 6), + MAKE_MESSID(42, 7), + 0 +}; + +void fn_1_1484(void) { + UnkM447Struct_00* temp_r30; + s16 temp_r3; + s16 var_r29; + s32 var_r28; + u32 temp_r26; + + temp_r30 = HuPrcCurrentGet()->user_data; + temp_r3 = HuWinExCreateStyled(-10000.0f, 40.0f, 280, 120, -1, 1); + HuWinExAnimIn(temp_r3); + HuWinBGTPLvlSet(temp_r3, 0.8f); + HuWinMesSpeedSet(temp_r3, 1); + HuWinMesColSet(temp_r3, 0); + HuWinMesSet(temp_r3, MAKE_MESSID(42, 1)); + fn_1_1394(temp_r30, temp_r3, 60); + if (temp_r30->unk18 < 2) { + HuWinMesColSet(temp_r3, 0); + HuWinMesSet(temp_r3, MAKE_MESSID(42, 2)); + var_r29 = fn_1_141C(temp_r30, temp_r3, 0, 1, 60); + } else { + var_r29 = 1; + } + if (var_r29 == 0) { + var_r28 = 0; + while ((temp_r26 = lbl_1_rodata_F4[var_r28++]) != 0) { + HuWinMesColSet(temp_r3, 0); + HuWinMesSet(temp_r3, temp_r26); + fn_1_1394(temp_r30, temp_r3, 60); + } + HuWinMesColSet(temp_r3, 0); + HuWinMesSet(temp_r3, MAKE_MESSID(42, 8)); + fn_1_1394(temp_r30, temp_r3, 60); + } else { + HuWinMesColSet(temp_r3, 0); + HuWinMesSet(temp_r3, MAKE_MESSID(42, 9)); + fn_1_1394(temp_r30, temp_r3, 60); + } + HuWinExAnimOut(temp_r3); + HuWinExCleanup(temp_r3); + temp_r30->unk0C = 0; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1754(UnkM447Struct_00* arg0) { + s32 i; + + for (i = 0; i < 25; i++) { + arg0->unk34[i] = espEntry(lbl_1_rodata_10[i], 0, 0); + espDispOff(arg0->unk34[i]); + espPriSet(arg0->unk34[i], 100); + } + espPriSet(arg0->unk34[7], 99); + espPriSet(arg0->unk34[8], 99); + espPriSet(arg0->unk34[9], 99); + espPriSet(arg0->unk34[13], 99); + espPriSet(arg0->unk34[14], 99); + espPriSet(arg0->unk34[15], 99); +} + +void fn_1_1830(UnkM447Struct_00* arg0) { + s32 i; + + for (i = 0; i < 25; i++) { + espKill(arg0->unk34[i]); + } +} + +void fn_1_1884(UnkM447Struct_00* arg0) { + s16 temp_r28; + s32 sp8; + s32 i; + s32 j; + + espDispOn(arg0->unk34[0]); + espPosSet(arg0->unk34[0], 96.0f, 64.0f); + espDispOn(arg0->unk34[2]); + espPosSet(arg0->unk34[2], 96.0f, 63.0f); + espTPLvlSet(arg0->unk34[2], 0.5f); + espColorSet(arg0->unk34[2], 0, 0, 0); + espDispOn(arg0->unk34[1]); + espPosSet(arg0->unk34[1], 480.0f, 64.0f); + espDispOn(arg0->unk34[3]); + espPosSet(arg0->unk34[3], 480.0f, 63.0f); + espTPLvlSet(arg0->unk34[3], 0.5f); + espColorSet(arg0->unk34[3], 0, 0, 0); + for (i = 0; i < 2; i++) { + temp_r28 = lbl_1_bss_98[i]->unk18 + 16; + espDispOn(arg0->unk34[temp_r28]); + espPosSet(arg0->unk34[temp_r28], i * 384 + 46, 63.0f); + } + for (j = 0; j < 2; j++) { + sp8 = lbl_1_bss_98[j]->unk1B; + for (i = 0; i < 3; i++) { + temp_r28 = i + 4 + j * 6; + espDispOn(arg0->unk34[temp_r28]); + espPosSet(arg0->unk34[temp_r28], j * 384 + 80 + i * 32, 63.0f); + } + } +} + +void fn_1_1AFC(UnkM447Struct_00* arg0, s32 arg1, s32 arg2) { + UnkM447Struct_03* temp_r3; + Process* var_r30; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + temp_r3->unk00 = arg0->unk34[arg2 + 7 + arg1 * 6]; + espPosSet(temp_r3->unk00, arg1 * 384 + 80 + arg2 * 32, 63.0f); + temp_r3->unk04 = 0.0f; + temp_r3->unk08 = 0.05f; + var_r30 = HuPrcChildCreate(fn_1_1BF8, 100, 0x1000, 0, lbl_1_bss_4); + var_r30->user_data = temp_r3; +} + +void fn_1_1BF8(void) { + float temp_f31; + UnkM447Struct_03* temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + espDispOn(temp_r31->unk00); + while (TRUE) { + if ((temp_r31->unk04 += temp_r31->unk08) > 1.0f) { + temp_r31->unk04 = 1.0f; + break; + } + temp_f31 = 1.0f + 1.5f * (1.0f - temp_r31->unk04); + espScaleSet(temp_r31->unk00, temp_f31, temp_f31); + HuPrcVSleep(); + } + espScaleSet(temp_r31->unk00, 1.0f, 1.0f); + HuAudFXPlay(9); + HuMemDirectFree(temp_r31); + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1CE0(UnkM447Struct_00* arg0) { + s32 i; + + for (i = 0; i <= 25; i++) { + espDispOff(arg0->unk34[i]); + } +} + +void fn_1_1D34(UnkM447Struct_00* arg0) { + s32 i; + + arg0->unk18 = 0; + for (i = 0; i < 2; i++) { + if (lbl_1_bss_98[i]->unk08 != 0) { + arg0->unk18++; + } + } +} diff --git a/src/REL/m447dll/player.c b/src/REL/m447dll/player.c new file mode 100755 index 00000000..a4744d53 --- /dev/null +++ b/src/REL/m447dll/player.c @@ -0,0 +1,1018 @@ +#include "REL/m447dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" + +#include "ext_math.h" + +void fn_1_4300(UnkM447Struct_04 *arg0); +float fn_1_43DC(UnkM447Struct_04 *arg0); +void fn_1_43F8(void); +void fn_1_4444(UnkM447Struct_04 *arg0); +void fn_1_44B0(UnkM447Struct_04 *arg0); +void fn_1_4590(UnkM447Struct_04 *arg0); +void fn_1_4638(UnkM447Struct_04 *arg0); +void fn_1_4680(UnkM447Struct_04 *arg0); +void fn_1_470C(UnkM447Struct_04 *arg0); +void fn_1_4760(UnkM447Struct_04 *arg0); +void fn_1_4764(UnkM447Struct_04 *arg0); +void fn_1_4C84(UnkM447Struct_04 *arg0); +float fn_1_4F7C(float arg0, float arg1, float arg2); +void fn_1_5080(UnkM447Struct_04 *arg0); +void fn_1_5298(UnkM447Struct_04 *arg0); +void fn_1_5520(UnkM447Struct_04 *arg0); +void fn_1_5760(UnkM447Struct_04 *arg0); +void fn_1_59D8(UnkM447Struct_04 *arg0); +void fn_1_5AF0(UnkM447Struct_04 *arg0); +void fn_1_5BD0(UnkM447Struct_04 *arg0); +void fn_1_5C78(UnkM447Struct_04 *arg0); +void fn_1_671C(UnkM447Struct_04 *arg0); +void fn_1_70BC(UnkM447Struct_04 *arg0); +void fn_1_717C(UnkM447Struct_04 *arg0, s32 arg1, s32 arg2); +void fn_1_71FC(UnkM447Struct_04 *arg0, s32 arg1, float arg2, float arg3, s32 arg4); +void fn_1_72A8(UnkM447Struct_04 *arg0); +void fn_1_7688(UnkM447Struct_04 *arg0); +void fn_1_78A8(UnkM447Struct_04 *arg0); +s32 fn_1_7984(UnkM447Struct_04 *arg0); +void fn_1_7A34(UnkM447Struct_04 *arg0); + +UnkM447Struct_04 *lbl_1_bss_98[2]; + +const s32 lbl_1_rodata_2A0[][9] + = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 113), DATA_MAKE_NUM(DATADIR_MARIOMOT, 31), DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 72), DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 2), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 3), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 113), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 31), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 72), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), DATA_MAKE_NUM(DATADIR_PEACHMOT, 2), DATA_MAKE_NUM(DATADIR_PEACHMOT, 3), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 113), DATA_MAKE_NUM(DATADIR_PEACHMOT, 31), DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 72), DATA_MAKE_NUM(DATADIR_PEACHMOT, 23), DATA_MAKE_NUM(DATADIR_PEACHMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 2), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 3), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 113), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 31), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 72), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), DATA_MAKE_NUM(DATADIR_WARIOMOT, 2), DATA_MAKE_NUM(DATADIR_WARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 113), DATA_MAKE_NUM(DATADIR_WARIOMOT, 31), DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 72), DATA_MAKE_NUM(DATADIR_WARIOMOT, 23), DATA_MAKE_NUM(DATADIR_WARIOMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 2), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 3), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 113), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 31), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 72), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), DATA_MAKE_NUM(DATADIR_DAISYMOT, 2), DATA_MAKE_NUM(DATADIR_DAISYMOT, 3), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 113), DATA_MAKE_NUM(DATADIR_DAISYMOT, 31), DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 72), DATA_MAKE_NUM(DATADIR_DAISYMOT, 23), DATA_MAKE_NUM(DATADIR_DAISYMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 2), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 3), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 113), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 31), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 72), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 24) }, + { DATA_MAKE_NUM(DATADIR_M447, 32), DATA_MAKE_NUM(DATADIR_M447, 33), DATA_MAKE_NUM(DATADIR_M447, 34), DATA_MAKE_NUM(DATADIR_M447, 41), + DATA_MAKE_NUM(DATADIR_M447, 39), DATA_MAKE_NUM(DATADIR_M447, 38), DATA_MAKE_NUM(DATADIR_M447, 37), DATA_MAKE_NUM(DATADIR_M447, 36), + DATA_MAKE_NUM(DATADIR_M447, 40) } }; + +const float lbl_1_rodata_3E4[] = { 150.0f, 170.0f, 188.0f, 169.0f, 164.0f, 140.0f, 180.0f, 145.0f, 150.0f }; + +const float lbl_1_rodata_408[][6] = { { -150.0f, 0.0f, 350.0f, 0.0f, 90.0f, 0.0f }, { 150.0f, 0.0f, 350.0f, 0.0f, -90.0f, 0.0f }, + { -150.0f, 0.0f, -200.0f, 0.0f, 90.0f, 0.0f }, { 150.0f, 0.0f, -200.0f, 0.0f, -90.0f, 0.0f } }; + +const u8 lbl_1_rodata_468[][5] = { { 5, 6, 7, 8, 9 }, { 4, 5, 6, 7, 8 }, { 3, 4, 5, 6, 7 }, { 2, 3, 4, 5, 6 } }; + +void fn_1_3F84(void) +{ + s32 i; + + for (i = 0; i < 2; i++) { + lbl_1_bss_98[i] = NULL; + } +} + +UnkM447Struct_04 *fn_1_3FC4(s32 arg0) +{ + UnkM447Struct_04 *temp_r3; + s16 var_r28; + s16 var_r27; + s32 i; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + if (!temp_r3) { + OSReport("M447PlayerCreate ERROR...\n"); + return NULL; + } + temp_r3->unk00 = arg0; + temp_r3->unk19 = GWPlayerCfg[arg0].diff; + temp_r3->unk08 = GWPlayerCfg[arg0].iscom; + if (temp_r3->unk08 != 0) { + var_r28 = 4; + } + else { + var_r28 = GWPlayerCfg[arg0].pad_idx; + } + temp_r3->unk1A = var_r28; + temp_r3->unk1C = (GWPlayerCfg[arg0].character == 10); + if (temp_r3->unk1C != 0) { + var_r27 = 8; + } + else { + var_r27 = GWPlayerCfg[arg0].character; + } + temp_r3->unk18 = var_r27; + temp_r3->unk24 = 0; + temp_r3->unk20 = 0; + temp_r3->unk1B = 0; + temp_r3->unk28.x = lbl_1_rodata_408[arg0][0]; + temp_r3->unk28.y = lbl_1_rodata_408[arg0][1]; + temp_r3->unk28.z = lbl_1_rodata_408[arg0][2]; + temp_r3->unk34 = lbl_1_rodata_408[arg0][3]; + temp_r3->unk38 = lbl_1_rodata_408[arg0][4]; + temp_r3->unk3C = lbl_1_rodata_408[arg0][5]; + temp_r3->unk44 = 0.0f; + temp_r3->unk48 = 0.0f; + temp_r3->unk4C = 0.0f; + temp_r3->unk50 = 50.0f; + temp_r3->unk04 = 0; + temp_r3->unkB0 = NULL; + temp_r3->unkB4 = NULL; + fn_1_4444(temp_r3); + Hu3DModelLayerSet(temp_r3->unk68, 6); + fn_1_44B0(temp_r3); + fn_1_4590(temp_r3); + fn_1_717C(temp_r3, 0, 0x40000001); + if (temp_r3->unk1C == 0) { + CharModelMotionDataClose(temp_r3->unk18); + } + if (temp_r3->unk1C != 0) { + temp_r3->unkB0 = (Process *)CharModelEffectNpcInit(temp_r3->unk68, temp_r3->unk6A[2], 1, 10); + temp_r3->unkB4 = (Process *)CharModelEffectNpcInit(temp_r3->unk68, temp_r3->unk6A[1], 0, 10); + } + CharModelLayerSetAll(2); + temp_r3->unkAC = HuPrcChildCreate(fn_1_43F8, 102, 0x3000, 0, lbl_1_bss_4); + temp_r3->unkAC->user_data = temp_r3; + for (i = 0; i < 2; i++) { + if (!lbl_1_bss_98[i]) { + lbl_1_bss_98[i] = temp_r3; + break; + } + } + return temp_r3; +} + +void fn_1_4300(UnkM447Struct_04 *arg0) +{ + s32 i; + + if (arg0->unkB0) { + HuPrcKill(arg0->unkB0); + } + if (arg0->unkB4) { + HuPrcKill(arg0->unkB4); + } + fn_1_470C(arg0); + fn_1_4680(arg0); + fn_1_4638(arg0); + HuPrcKill(arg0->unkAC); + for (i = 0; i < 2; i++) { + if (lbl_1_bss_98[i] == arg0) { + lbl_1_bss_98[i] = NULL; + break; + } + } + HuMemDirectFree(arg0); +} + +void fn_1_43CC(UnkM447Struct_04 *arg0, s32 arg1) +{ + arg0->unk24 = arg1; + arg0->unk20 = 0; +} + +float fn_1_43DC(UnkM447Struct_04 *arg0) +{ + return lbl_1_rodata_3E4[arg0->unk18]; +} + +void (*lbl_1_data_1CC[])(UnkM447Struct_04 *) + = { fn_1_4760, fn_1_4764, fn_1_5080, fn_1_5298, fn_1_5520, fn_1_5760, fn_1_5C78, fn_1_671C, fn_1_59D8, fn_1_5AF0, fn_1_5BD0 }; + +void fn_1_43F8(void) +{ + UnkM447Struct_04 *temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + lbl_1_data_1CC[temp_r31->unk24](temp_r31); + fn_1_70BC(temp_r31); + HuPrcVSleep(); + } +} + +void fn_1_4444(UnkM447Struct_04 *arg0) +{ + if (arg0->unk1C != 0) { + arg0->unk68 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 31)); + } + else { + arg0->unk68 = CharModelCreate(arg0->unk18, 2); + } + Hu3DModelShadowSet(arg0->unk68); +} + +void fn_1_44B0(UnkM447Struct_04 *arg0) +{ + s32 i; + + if (arg0->unk1C != 0) { + for (i = 0; i < 9; i++) { + arg0->unk6A[i] = Hu3DJointMotionFile(arg0->unk68, lbl_1_rodata_2A0[arg0->unk18][i]); + } + } + else { + for (i = 0; i < 9; i++) { + arg0->unk6A[i] = CharModelMotionCreate(arg0->unk18, lbl_1_rodata_2A0[arg0->unk18][i]); + } + } +} + +void fn_1_4590(UnkM447Struct_04 *arg0) +{ + arg0->unk7C[0] = espEntry(DATA_MAKE_NUM(DATADIR_M447, 42), 0, 0); + espPriSet(arg0->unk7C[0], arg0->unk00 * 10); + arg0->unk7C[1] = espEntry(DATA_MAKE_NUM(DATADIR_M447, 43), 0, 0); + espPriSet(arg0->unk7C[1], arg0->unk00 * 10 + 1); + espDispOff(arg0->unk7C[0]); + espDispOff(arg0->unk7C[1]); + espTPLvlSet(arg0->unk7C[1], 0.8f); +} + +void fn_1_4638(UnkM447Struct_04 *arg0) +{ + if (arg0->unk1C != 0) { + Hu3DModelKill(arg0->unk68); + } + else { + CharModelKill(arg0->unk18); + } +} + +void fn_1_4680(UnkM447Struct_04 *arg0) +{ + s32 i; + + if (arg0->unk1C != 0) { + for (i = 0; i < 9; i++) { + Hu3DMotionKill(arg0->unk6A[i]); + } + } + else { + for (i = 0; i < 9; i++) { + CharModelMotionKill(arg0->unk18, arg0->unk6A[i]); + } + } +} + +void fn_1_470C(UnkM447Struct_04 *arg0) +{ + s32 i; + + for (i = 0; i < 2; i++) { + espKill(arg0->unk7C[i]); + } +} + +void fn_1_4760(UnkM447Struct_04 *arg0) { } + +void fn_1_4764(UnkM447Struct_04 *arg0) +{ + Vec sp8; + float temp_f31; + s32 var_r29; + s32 var_r28; + s32 i; + + switch (arg0->unk20) { + case 0: + arg0->unk0C = 0; + arg0->unk10 = 0; + arg0->unk28.y = 0.0f; + arg0->unk20 = 1; + arg0->unk14 = 0; + /* fallthrough */ + case 1: + if (arg0->unk04 != 0) { + if (arg0->unk08 != 0) { + if (arg0->unk0C == 0 && arg0->unk10 == 0) { + arg0->unk44 = 0.0f; + arg0->unk48 = 0.0f; + arg0->unk4C = 0.0f; + if (fn_1_A240() % lbl_1_rodata_468[arg0->unk19][lbl_1_bss_8->unk2C] == 0) { + var_r29 = 5; + for (i = 0; i < 5; i++) { + if (lbl_1_bss_10->unk54[i] == 0 && lbl_1_bss_A4[i]->unk08 != 0) { + var_r29 = i; + break; + } + } + } + else { + for (i = 0; i < 10; i++) { + var_r29 = fn_1_A240() % 5; + if (lbl_1_bss_10->unk54[var_r29] == 0) { + break; + } + } + if (i == 10) { + var_r29 = 5; + } + } + if (var_r29 < 5) { + fn_1_1ED4(var_r29, &sp8); + temp_f31 = 10.0f - 0.1f * (fn_1_A240() % 10); + arg0->unk44 = (sp8.x - arg0->unk28.x) / temp_f31; + arg0->unk4C = (sp8.z - arg0->unk28.z) / temp_f31; + arg0->unk48 = 0.0f; + arg0->unk64 = fn_1_A240() % 20 + 10; + arg0->unk0C = 1; + } + } + } + else { + arg0->unk44 = (float)HuPadStkX[arg0->unk1A] / 4; + arg0->unk4C = -(float)HuPadStkY[arg0->unk1A] / 4; + } + var_r28 = 0; + var_r29 = fn_1_7984(arg0); + if (var_r29 != 5) { + if (lbl_1_bss_10->unk68[var_r29] == 0) { + fn_1_7A34(arg0); + if (arg0->unk08 != 0) { + arg0->unk10 = 1; + arg0->unk44 = 0.0f; + arg0->unk48 = 0.0f; + arg0->unk4C = 0.0f; + if (arg0->unk64-- <= 0) { + var_r28 = 1; + } + } + else if (HuPadBtnDown[arg0->unk1A] & 0x100) { + var_r28 = 1; + } + if (var_r28 != 0) { + arg0->unk44 = 0.0f; + arg0->unk4C = 0.0f; + lbl_1_bss_10->unk68[var_r29] = 1; + fn_1_43CC(arg0, 2); + arg0->unk10 = 0; + } + } + } + else { + if (arg0->unk10 != 0) { + arg0->unk10 = 0; + arg0->unk0C = 0; + } + fn_1_7A6C(arg0); + } + } + else { + arg0->unk44 = 0.0f; + arg0->unk48 = 0.0f; + arg0->unk4C = 0.0f; + } + fn_1_4C84(arg0); + break; + } +} + +void fn_1_4C84(UnkM447Struct_04 *arg0) +{ + s16 var_r30; + + var_r30 = 0; + arg0->unk40 = sqrtf(arg0->unk44 * arg0->unk44 + arg0->unk4C * arg0->unk4C); + if (0.5f <= arg0->unk40) { + if (10.0f <= arg0->unk40) { + arg0->unk44 /= arg0->unk40; + arg0->unk4C /= arg0->unk40; + arg0->unk40 = 10.0f; + arg0->unk44 = arg0->unk44 * 10.0f; + arg0->unk4C = arg0->unk4C * 10.0f; + } + arg0->unk38 = fn_1_4F7C(arg0->unk38, atan2d(arg0->unk44, arg0->unk4C), 0.4f); + if (8.0f <= arg0->unk40) { + var_r30 = 2; + } + else { + var_r30 = 1; + } + } + arg0->unk28.x += arg0->unk44; + arg0->unk28.z += arg0->unk4C; + switch (arg0->unk24) { + case 1: + fn_1_72A8(arg0); + fn_1_78A8(arg0); + fn_1_7688(arg0); + break; + case 6: + case 7: + fn_1_78A8(arg0); + fn_1_7688(arg0); + break; + } + if (var_r30 >= 0 && arg0->unkA4 != var_r30) { + fn_1_71FC(arg0, var_r30, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } +} + +float fn_1_4F7C(float arg0, float arg1, float arg2) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_5080(UnkM447Struct_04 *arg0) +{ + Vec sp14; + Vec sp8; + s32 var_r30; + + switch (arg0->unk20) { + case 0: + fn_1_7A6C(arg0); + var_r30 = fn_1_7984(arg0); + fn_1_1ED4(var_r30, &sp14); + VECSubtract(&sp14, &arg0->unk28, &sp8); + arg0->unk38 = fn_1_4F7C(arg0->unk38, atan2d(sp8.x, sp8.z), 1.0f); + fn_1_71FC(arg0, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + arg0->unk20 = 1; + /* fallthrough */ + case 1: + if (!Hu3DMotionEndCheck(arg0->unk68)) { + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + fn_1_43CC(arg0, 3); + break; + } +} + +void fn_1_5298(UnkM447Struct_04 *arg0) +{ + Vec sp8; + s32 temp_r29; + UnkM447Struct_01 *temp_r28; + s32 i; + + switch (arg0->unk20) { + case 0: + temp_r29 = fn_1_7984(arg0); + fn_1_717C(arg0, 0, 0x40000001); + fn_1_1ED4(temp_r29, &sp8); + arg0->unk28.x = sp8.x; + arg0->unk28.z = sp8.z; + arg0->unk28.y = 30.0f; + fn_1_1F00(lbl_1_bss_10, temp_r29); + HuAudFXPlay(0x784); + arg0->unk60 = 0; + arg0->unk20 = 1; + /* fallthrough */ + case 1: + arg0->unk28.y -= 1.0f; + if (arg0->unk60++ >= 30) { + arg0->unk28.y = 2.0f; + arg0->unk20 = 2; + temp_r29 = fn_1_7984(arg0); + arg0->unkA8 = lbl_1_bss_A4[temp_r29]; + if (arg0->unkA8->unk08 != 0) { + fn_1_8FF4(arg0->unkA8, 5); + for (i = 0; i < 5; i++) { + temp_r28 = lbl_1_bss_A4[i]; + if (temp_r28 != arg0->unkA8 && lbl_1_bss_10->unk68[i] == 0) { + fn_1_1F00(lbl_1_bss_10, i); + if (temp_r28->unk04 == 2) { + fn_1_8FF4(temp_r28, 4); + } + } + } + for (i = 0; i < 2; i++) { + if (lbl_1_bss_98[i] != arg0) { + lbl_1_bss_98[i]->unk04 = 0; + } + } + arg0->unk1B++; + arg0->unk14 = 1; + fn_1_43CC(arg0, 5); + } + else { + fn_1_8FF4(arg0->unkA8, 3); + fn_1_43CC(arg0, 4); + } + } + break; + case 2: + fn_1_43CC(arg0, 1); + break; + } +} + +const s32 lbl_1_rodata_4EC[] = { 0x0000012A, 0x0000016A, 0x000001AA, 0x000001EA, 0x0000022A, 0x0000026A, 0x000002AA, 0x000002EA }; + +void fn_1_5520(UnkM447Struct_04 *arg0) +{ + Vec sp8; + float var_f31; + float var_f30; + + switch (arg0->unk20) { + case 0: + fn_1_71FC(arg0, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + arg0->unk60 = 0; + arg0->unk20 = 1; + /* fallthrough */ + case 1: + var_f30 = lbl_1_rodata_3E4[arg0->unk18]; + var_f31 = var_f30; // inline? + sp8 = arg0->unkA8->unk10; + if (var_f31 + lbl_1_rodata_648[arg0->unkA8->unk00] + 120.0f < sp8.y) { + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + fn_1_717C(arg0, 4, 0); + arg0->unk60 = 0; + arg0->unk20 = 3; + fn_1_7AA4(arg0, 1, 60); + if (arg0->unk18 == 8) { + HuAudFXPlay(0x42); + } + else { + HuAudFXPlay(lbl_1_rodata_4EC[arg0->unk18]); + } + /* fallthrough */ + case 3: + if (arg0->unk60++ < 40) { + break; + } + arg0->unk60 = 0; + arg0->unk20 = 4; + /* fallthrough */ + case 4: + Hu3DModelAttrSet(arg0->unk68, HU3D_MOTATTR_PAUSE); + arg0->unk60 = 0; + arg0->unk20 = 5; + /* fallthrough */ + case 5: + if (arg0->unk60++ < 20) { + break; + } + arg0->unk20 = 6; + /* fallthrough */ + case 6: + Hu3DModelAttrReset(arg0->unk68, HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->unk68, HU3D_MOTATTR_LOOP); + arg0->unk60 = 0; + arg0->unk20 = 7; + /* fallthrough */ + case 7: + if (arg0->unk60++ < 40) { + break; + } + arg0->unk20 = 8; + case 8: + /* fallthrough */ + fn_1_43CC(arg0, 1); + break; + } +} + +void fn_1_5760(UnkM447Struct_04 *arg0) +{ + Vec sp14; + Vec sp8; + s32 var_r30; + + switch (arg0->unk20) { + case 0: + Hu3DModelAttrReset(arg0->unk68, HU3D_MOTATTR_LOOP); + fn_1_71FC(arg0, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + arg0->unk60 = 0; + arg0->unk20 = 1; + /* fallthrough */ + case 1: + var_r30 = fn_1_7984(arg0); + sp14 = lbl_1_bss_A4[var_r30]->unk10; + VECSubtract(&sp14, &arg0->unk28, &sp8); + arg0->unk38 = fn_1_4F7C(arg0->unk38, atan2d(sp8.x, sp8.z), 0.1f); + if (arg0->unk60++ < 30) { + break; + } + arg0->unk20 = 2; + case 2: + fn_1_71FC(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + fn_1_43CC(arg0, 8); + break; + } +} + +const s32 lbl_1_rodata_510[] = { 0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2, 0x00000124, + 0x00000164, 0x000001A4, 0x000001E4, 0x00000224, 0x00000264, 0x000002A4, 0x000002E4, 0x00000121, 0x00000161, 0x000001A1, 0x000001E1, 0x00000221, + 0x00000261, 0x000002A1, 0x000002E1 }; + +void fn_1_59D8(UnkM447Struct_04 *arg0) +{ + switch (arg0->unk20) { + case 0: + if (arg0->unk18 == 8) { + HuAudFXPlay(0x40); + } + else { + HuAudFXPlay(lbl_1_rodata_510[arg0->unk18]); + } + fn_1_71FC(arg0, 6, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + arg0->unk20 = 1; + /* fallthrough */ + case 1: + if (!Hu3DMotionEndCheck(arg0->unk68)) { + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + fn_1_71FC(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + fn_1_43CC(arg0, 0); + fn_1_7AA4(arg0, 0, 60); + break; + } +} + +void fn_1_5AF0(UnkM447Struct_04 *arg0) +{ + switch (arg0->unk20) { + case 0: + if (arg0->unk1C != 0) { + HuAudFXPlay(0x40); + } + fn_1_71FC(arg0, 7, 0.0f, 8.0f, (arg0->unk1C != 0) ? HU3D_MOTATTR_LOOP : HU3D_MOTATTR_NONE); + arg0->unk20 = 1; + /* fallthrough */ + case 1: + if (!Hu3DMotionEndCheck(arg0->unk68)) { + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + fn_1_43CC(arg0, 0); + break; + } +} + +void fn_1_5BD0(UnkM447Struct_04 *arg0) +{ + switch (arg0->unk20) { + case 0: + fn_1_71FC(arg0, 8, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + arg0->unk20 = 1; + /* fallthrough */ + case 1: + if (!Hu3DMotionEndCheck(arg0->unk68)) { + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + fn_1_43CC(arg0, 0); + break; + } +} + +void fn_1_5C78(UnkM447Struct_04 *arg0) +{ + float temp_f22; + float temp_f21; + float temp_f25; + + switch (arg0->unk20) { + case 0: + fn_1_7A6C(arg0); + temp_f22 = arg0->unk28.x - lbl_1_rodata_408[arg0->unk00][0]; + temp_f21 = arg0->unk28.z - lbl_1_rodata_408[arg0->unk00][2] - 25.0f; + if (ABS(temp_f22) < 5.0f && ABS(temp_f21) < 5.0f && 180.0f == arg0->unk38) { + arg0->unk20 = 3; + } + else { + arg0->unk20 = 1; + } + /* fallthrough */ + case 1: + temp_f25 = 8.0f; + arg0->unk44 = (lbl_1_rodata_408[arg0->unk00][0] - arg0->unk28.x) / temp_f25; + arg0->unk4C = (lbl_1_rodata_408[arg0->unk00][2] - arg0->unk28.z) / temp_f25; + arg0->unk48 = 0.0f; + if (!(arg0->unk44 > -0.1f && arg0->unk44 < 0.1f && arg0->unk4C > -0.1f && arg0->unk4C < 0.1f)) { + fn_1_4C84(arg0); + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + temp_f25 = 8.0f; + arg0->unk44 = (lbl_1_rodata_408[arg0->unk00][0] - arg0->unk28.x) / temp_f25; + arg0->unk4C = (lbl_1_rodata_408[arg0->unk00][2] - 25.0f - arg0->unk28.z) / temp_f25; + arg0->unk48 = 0.0f; + if (!(arg0->unk44 > -0.1f && arg0->unk44 < 0.1f && arg0->unk4C > -0.1f && arg0->unk4C < 0.1f)) { + fn_1_4C84(arg0); + break; + } + arg0->unk20 = 3; + /* fallthrough */ + case 3: + fn_1_43CC(arg0, 1); + break; + } +} + +void fn_1_671C(UnkM447Struct_04 *arg0) +{ + float var_f25; + + switch (arg0->unk20) { + case 0: + fn_1_7A6C(arg0); + arg0->unk20 = 1; + /* fallthrough */ + case 1: + var_f25 = 8.0f; + arg0->unk44 = (lbl_1_rodata_408[arg0->unk00][12] - arg0->unk28.x) / var_f25; + arg0->unk4C = (lbl_1_rodata_408[arg0->unk00][14] - 25.0f - arg0->unk28.z) / var_f25; + arg0->unk48 = 0.0f; + fn_1_4C84(arg0); + if (!(arg0->unk44 > -0.1f && arg0->unk44 < 0.1f && arg0->unk4C > -0.1f && arg0->unk4C < 0.1f)) { + break; + } + arg0->unk20 = 2; + /* fallthrough */ + case 2: + var_f25 = 8.0f; + arg0->unk44 = (lbl_1_rodata_408[arg0->unk00][12] - arg0->unk28.x) / var_f25; + arg0->unk4C = (lbl_1_rodata_408[arg0->unk00][14] - arg0->unk28.z) / var_f25; + arg0->unk48 = 0.0f; + fn_1_4C84(arg0); + if (!(arg0->unk44 > -0.1f && arg0->unk44 < 0.1f && arg0->unk4C > -0.1f && arg0->unk4C < 0.1f)) { + break; + } + arg0->unk20 = 3; + /* fallthrough */ + case 3: + fn_1_43CC(arg0, 1); + break; + } +} + +void fn_1_70BC(UnkM447Struct_04 *arg0) +{ + Vec sp14; + Vec sp8; + + Hu3DModelPosSet(arg0->unk68, arg0->unk28.x, arg0->unk28.y, arg0->unk28.z); + Hu3DModelRotSet(arg0->unk68, arg0->unk34, arg0->unk38, arg0->unk3C); + sp14 = arg0->unk28; + sp14.y += 300.0f; + Hu3D3Dto2D(&sp14, 1, &sp8); + espPosSet(arg0->unk7C[1], sp8.x, sp8.y + 3.0f); + espPosSet(arg0->unk7C[0], sp8.x, sp8.y); +} + +void fn_1_717C(UnkM447Struct_04 *arg0, s32 arg1, s32 arg2) +{ + if (arg0->unk1C != 0) { + Hu3DMotionSet(arg0->unk68, arg0->unk6A[arg1]); + } + else { + CharModelMotionSet(arg0->unk18, arg0->unk6A[arg1]); + } + Hu3DModelAttrSet(arg0->unk68, arg2); + arg0->unkA4 = arg1; +} + +void fn_1_71FC(UnkM447Struct_04 *arg0, s32 arg1, float arg2, float arg3, s32 arg4) +{ + if (arg0->unk1C != 0) { + Hu3DMotionShiftSet(arg0->unk68, arg0->unk6A[arg1], arg2, arg3, arg4); + } + else { + CharModelMotionShiftSet(arg0->unk18, arg0->unk6A[arg1], arg2, arg3, arg4); + } + arg0->unkA4 = arg1; +} + +float lbl_1_data_21C[][4] = { { -700.0f, -700.0f, -700.0f, 700.0f }, { 700.0f, -700.0f, 700.0f, 700.0f }, { -800.0f, 450.0f, 800.0f, 450.0f }, + { -700.0f, -700.0f, 700.0f, -700.0f } }; + +// Vec[]? +float lbl_1_data_25C[][3] = { { -700.0f, -700.0f, 200.0f }, { 700.0f, -700.0f, 200.0f } }; + +void fn_1_72A8(UnkM447Struct_04 *arg0) +{ + float sp28[3]; // Vec? + float sp18[4]; + float spC[3]; // Vec? + float temp_f31; + float temp_f30; + float var_f28; + s32 i; + + sp28[0] = arg0->unk28.x; + sp28[1] = arg0->unk28.z; + sp28[2] = 95.0f; + for (i = 0; i < 4; i++) { + if (fn_1_80BC(sp28, lbl_1_data_21C[i], sp18) == 0) { + continue; + } + if (i / 2 == 0) { + if (lbl_1_data_21C[i][0] < 0.0f) { + arg0->unk28.x = sp28[2] + lbl_1_data_21C[i][0]; + } + else { + arg0->unk28.x = lbl_1_data_21C[i][0] - sp28[2]; + } + } + else { + if (lbl_1_data_21C[i][1] < 0.0f) { + arg0->unk28.z = sp28[2] + lbl_1_data_21C[i][1]; + } + else { + arg0->unk28.z = lbl_1_data_21C[i][1] - sp28[2]; + } + } + arg0->unk0C = 0; + } + spC[0] = arg0->unk28.x; + spC[1] = arg0->unk28.z; + spC[2] = arg0->unk50; + for (i = 0; i < 2; i++) { + if (fn_1_879C(spC, lbl_1_data_25C[i], 1, 0) != 0) { + arg0->unk28.x = spC[0]; + arg0->unk28.z = spC[1]; + arg0->unk0C = 0; + } + } + if (arg0->unk28.z > 0.0f) { + temp_f31 = arg0->unk28.x; + temp_f30 = arg0->unk28.z - -120.0f; + var_f28 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (700.0f - arg0->unk50 < var_f28) { + temp_f31 /= var_f28; + temp_f30 /= var_f28; + arg0->unk28.x = temp_f31 * (700.0f - arg0->unk50); + arg0->unk28.z = -120.0f + temp_f30 * (700.0f - arg0->unk50); + } + } +} + +void fn_1_7688(UnkM447Struct_04 *arg0) +{ + float sp14[3]; // Vec? + float sp8[3]; // Vec? + UnkM447Struct_04 *temp_r30; + s32 var_r26; + s32 i; + + for (i = 0; i < 2; i++) { + temp_r30 = lbl_1_bss_98[i]; + if (!temp_r30 || temp_r30 == arg0) { + continue; + } + sp14[0] = arg0->unk28.x; + sp14[1] = arg0->unk28.z; + sp14[2] = arg0->unk50; + sp8[0] = temp_r30->unk28.x; + sp8[1] = temp_r30->unk28.z; + sp8[2] = temp_r30->unk50; + var_r26 = (temp_r30->unk24 == 1) ? 1 : 0; + if (fn_1_879C(sp14, sp8, 1, var_r26) == 0) { + continue; + } + switch (arg0->unk24) { + case 1: + arg0->unk28.x = sp14[0]; + arg0->unk28.z = sp14[1]; + temp_r30->unk28.x = sp8[0]; + temp_r30->unk28.z = sp8[1]; + arg0->unk0C = 0; + break; + case 6: + case 7: + arg0->unk28.x = sp14[0]; + arg0->unk28.z = sp14[1]; + if (ABS(arg0->unk28.z - temp_r30->unk28.z) < 2.0f) { + arg0->unk28.z += 55.0f * (0.0f > arg0->unk28.z ? -1 : 1); + } + arg0->unk0C = 0; + break; + } + switch (arg0->unk24) { + case 1: + fn_1_72A8(arg0); + fn_1_72A8(temp_r30); + break; + } + } +} + +void fn_1_78A8(UnkM447Struct_04 *arg0) +{ + float sp20[3]; // Vec? + float sp14[3]; // Vec? + Vec sp8; + s32 i; + + sp20[0] = arg0->unk28.x; + sp20[1] = arg0->unk28.z; + sp20[2] = arg0->unk50; + for (i = 0; i < 5; i++) { + if (lbl_1_bss_10->unk54[i] != 0) { + continue; + } + fn_1_1ED4(i, &sp8); + sp14[0] = sp8.x; + sp14[1] = sp8.z; + sp14[2] = 35.0f; + if (fn_1_879C(sp20, sp14, 1, 0) != 0) { + arg0->unk28.x = sp20[0]; + arg0->unk28.z = sp20[1]; + arg0->unk0C = 0; + } + } +} + +s32 fn_1_7984(UnkM447Struct_04 *arg0) +{ + float sp20[3]; // Vec? + float sp14[3]; // Vec? + Vec sp8; + s32 i; + + sp20[0] = arg0->unk28.x; + sp20[1] = arg0->unk28.z; + sp20[2] = arg0->unk50; + for (i = 0; i < 5; i++) { + fn_1_1ED4(i, &sp8); + sp14[0] = sp8.x; + sp14[1] = sp8.z; + sp14[2] = 40.0f; + if (fn_1_879C(sp20, sp14, 0, 0) != 0) { + return i; + } + } + return 5; +} + +void fn_1_7A34(UnkM447Struct_04 *arg0) +{ + espDispOn(arg0->unk7C[1]); + espDispOn(arg0->unk7C[0]); +} + +void fn_1_7A6C(UnkM447Struct_04 *arg0) +{ + espDispOff(arg0->unk7C[1]); + espDispOff(arg0->unk7C[0]); +} + +void fn_1_7AA4(UnkM447Struct_04 *arg0, s32 arg1, s32 arg2) +{ + if (arg0->unk1C == 0) { + switch (arg1) { + case 0: + omVibrate(arg0->unk00, arg2, 6, 6); + return; + case 1: + omVibrate(arg0->unk00, arg2, 4, 2); + return; + case 2: + omVibrate(arg0->unk00, arg2, 12, 0); + break; + } + } +} diff --git a/src/REL/m447dll/player_col.c b/src/REL/m447dll/player_col.c new file mode 100755 index 00000000..0bd2216a --- /dev/null +++ b/src/REL/m447dll/player_col.c @@ -0,0 +1,199 @@ +#include "REL/m447dll.h" + +#include "ext_math.h" + +float fn_1_7D94(float* arg0, float* arg1); +void fn_1_7F64(float* arg0, float arg1, float* arg2, float* arg3); +s32 fn_1_89BC(float* arg0, float* arg1); + +void fn_1_7B54(Vec* arg0, Vec* arg1, s32 arg2, float arg3) { + float temp_f29; + float var_f30; + float var_f31; + s32 temp_r29; + s32 var_r30; + s32 i; + + temp_r29 = arg2 - 1; + arg0->x = 0.0f; + arg0->y = 0.0f; + arg0->z = 0.0f; + arg3 = (arg2 + 1) * arg3 - 1.0f; + for (i = -2; i <= temp_r29 + 2; i++) { + var_r30 = i; + if (i < 0) { + var_r30 = 0; + } + if (i > temp_r29) { + var_r30 = temp_r29; + } + var_f31 = arg3 - i; + if (var_f31 < 0.0f) { + var_f31 = -var_f31; + } + if (var_f31 < 1.0f) { + var_f30 = (3.0f * var_f31 * var_f31 * var_f31 - 6.0f * var_f31 * var_f31 + 4.0f) / 6.0f; + } else if (var_f31 < 2.0f) { + temp_f29 = var_f31 - 2.0f; + var_f30 = -temp_f29 * temp_f29 * temp_f29 / 6.0f; + } else { + var_f30 = 0.0f; + } + arg0->x += var_f30 * arg1[var_r30].x; + arg0->y += var_f30 * arg1[var_r30].y; + arg0->z += var_f30 * arg1[var_r30].z; + } +} + +float fn_1_7D94(float* arg0, float* arg1) { + float var_f30; + float var_f31; + float temp_f29; + float var_f28; + s32 var_r31; + + var_f30 = arg1[0] - arg0[0]; + var_f31 = arg1[1] - arg0[1]; + if (var_f30 >= 0.0f) { + if (var_f31 >= 0.0f) { + var_r31 = 0; + } else { + var_r31 = 3; + temp_f29 = var_f30; + var_f30 = -var_f31; + var_f31 = temp_f29; + } + } else { + if (var_f31 >= 0.0f) { + var_r31 = 1; + temp_f29 = var_f30; + var_f30 = var_f31; + var_f31 = -temp_f29; + } else { + var_r31 = 2; + var_f30 = -var_f30; + var_f31 = -var_f31; + } + } + if (var_f31 > var_f30) { + var_f28 = M_PI / 2 - atan2d(var_f30, var_f31); + } else { + var_f28 = atan2d(var_f31, var_f30); + } + return var_f28 + (M_PI / 2) * var_r31; +} + +void fn_1_7F64(float* arg0, float arg1, float* arg2, float* arg3) { + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + // 57.29578 = 180 / M_PI (1 rad in degrees) + temp_f31 = cosd(-(57.29578f * arg1)); + temp_f30 = sind(-(57.29578f * arg1)); + temp_f29 = arg2[0] - arg0[0]; + temp_f28 = arg2[1] - arg0[1]; + arg3[0] = temp_f29 * temp_f31 + temp_f28 * temp_f30 + arg0[0]; + arg3[1] = -temp_f29 * temp_f30 + temp_f28 * temp_f31 + arg0[1]; +} + +s32 fn_1_80BC(float* arg0, float* arg1, float* arg2) { + float sp40[2]; + float sp38[2]; + float sp30[2]; + float sp2C; + float var_f26; + + sp40[0] = 0.0f; + sp40[1] = 0.0f; + sp38[0] = arg0[0] - arg1[0]; + sp38[1] = arg0[1] - arg1[1]; + sp2C = fn_1_7D94(arg1, &arg1[2]); + fn_1_7F64(sp40, -sp2C, sp38, sp30); + if (ABS(sp30[1]) > arg0[2]) { + return 0; + } + var_f26 = sqrtf(arg0[2] * arg0[2] - sp30[1] * sp30[1]); + sp38[0] = arg0[0] + var_f26; + sp38[1] = arg0[1] - sp30[1]; + fn_1_7F64(arg0, sp2C, sp38, arg2); + if (var_f26 == 0.0f) { + return 1; + } + sp38[0] = arg0[0] - var_f26; + sp38[1] = arg0[1] - sp30[1]; + fn_1_7F64(arg0, sp2C, sp38, &arg2[2]); + return 2; +} + +s32 fn_1_879C(float* arg0, float* arg1, s32 arg2, s32 arg3) { + float spC[2]; + float var_f28; + + spC[0] = arg0[0] - arg1[0]; + spC[1] = arg0[1] - arg1[1]; + var_f28 = sqrtf(spC[0] * spC[0] + spC[1] * spC[1]); + if (var_f28 < arg0[2] + arg1[2]) { + if (var_f28 == 0.0f) { + spC[0] = 0.0f; + spC[1] = -1.0f; + } else { + spC[0] /= var_f28; + spC[1] /= var_f28; + if (arg3 != 0) { + arg1[0] -= spC[0]; + arg1[1] -= spC[1]; + } + } + if (arg2 != 0) { + arg0[0] = arg1[0] + spC[0] * (arg0[2] + arg1[2]); + arg0[1] = arg1[1] + spC[1] * (arg0[2] + arg1[2]); + } + return 1; + } + return 0; +} + +s32 fn_1_89BC(float* arg0, float* arg1) { + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f26; + float temp_f27; + float temp_f24; + + temp_f26 = arg0[2] * arg0[2] - 2.0f * arg0[0] * arg0[2] + arg0[0] * arg0[0] + arg0[3] * arg0[3] - 2.0f * arg0[1] * arg0[3] + arg0[1] * arg0[1]; + temp_f27 = 2.0f * (arg0[0] * arg0[2] - arg0[2] * arg1[0] + arg0[0] * arg0[0] + arg0[1] * arg0[3] - arg0[3] * arg1[1] + arg0[1] * arg0[1]); + temp_f24 = arg0[0] * arg0[0] - 2.0f * arg0[0] * arg1[0] + arg1[0] * arg1[0] + arg0[1] * arg0[1] - 2.0f * arg0[1] * arg1[1] + arg1[1] * arg1[1] - arg1[2] * arg1[2]; + if (temp_f26 == 0.0f) { + if (temp_f27 != 0.0f) { + return 1; + } else { + return 0; + } + } + temp_f30 = temp_f27 * temp_f27 - 4.0f * temp_f26 * temp_f24; + if (temp_f30 < 0.0f) { + return 0; + } + temp_f30 = sqrtf(temp_f30); + temp_f29 = (-temp_f27 + temp_f30) / (2.0f * temp_f26); + temp_f28 = (-temp_f27 - temp_f30) / (2.0f * temp_f26); + if (temp_f29 < temp_f28) { + if (temp_f29 >= 0.0f && temp_f29 > 1.0f) { + return 1; + } + if (temp_f28 >= 0.0f && temp_f28 < 1.0f) { + return 1; + } + } else { + if (temp_f28 >= 0.0f && temp_f28 < 1.0f) { + return 1; + } + if (temp_f29 >= 0.0f && temp_f29 < 1.0f) { + return 1; + } + } + return 0; +} diff --git a/src/REL/m447dll/stage.c b/src/REL/m447dll/stage.c new file mode 100755 index 00000000..f1a456fa --- /dev/null +++ b/src/REL/m447dll/stage.c @@ -0,0 +1,461 @@ +#include "REL/m447dll.h" +#include "game/audio.h" +#include "game/data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/process.h" +#include "game/sprite.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ Vec unk0C; + /* 0x18 */ GXColor unk18; +} UnkM447Struct_07; // Size 0x1C + +void fn_1_1FF4(void); +void fn_1_2164(UnkM447Struct_06 *arg0); +void fn_1_231C(UnkM447Struct_06 *arg0); +void fn_1_236C(UnkM447Struct_06 *arg0); +void fn_1_2490(UnkM447Struct_06 *arg0); +void fn_1_2494(UnkM447Struct_06 *arg0); +void fn_1_25E4(UnkM447Struct_06 *arg0); +void fn_1_2700(UnkM447Struct_06 *arg0); +void fn_1_2A3C(UnkM447Struct_06 *arg0); +void fn_1_2D08(UnkM447Struct_06 *arg0); +void fn_1_2DAC(ModelData *model, ParticleData *particle, Mtx matrix); + +const s32 lbl_1_rodata_138[] = { DATA_MAKE_NUM(DATADIR_M447, 0), DATA_MAKE_NUM(DATADIR_M447, 2), DATA_MAKE_NUM(DATADIR_M447, 3), + DATA_MAKE_NUM(DATADIR_M447, 1), DATA_MAKE_NUM(DATADIR_M447, 1), DATA_MAKE_NUM(DATADIR_M447, 1), DATA_MAKE_NUM(DATADIR_M447, 1), + DATA_MAKE_NUM(DATADIR_M447, 1), DATA_MAKE_NUM(DATADIR_M447, 24), DATA_MAKE_NUM(DATADIR_M447, 24), DATA_MAKE_NUM(DATADIR_M447, 24), + DATA_MAKE_NUM(DATADIR_M447, 24), DATA_MAKE_NUM(DATADIR_M447, 24), DATA_MAKE_NUM(DATADIR_M447, 25), DATA_MAKE_NUM(DATADIR_M447, 26), + DATA_MAKE_NUM(DATADIR_M447, 28), DATA_MAKE_NUM(DATADIR_M447, 29), DATA_MAKE_NUM(DATADIR_M447, 29), DATA_MAKE_NUM(DATADIR_M447, 29), + DATA_MAKE_NUM(DATADIR_M447, 29), DATA_MAKE_NUM(DATADIR_M447, 29), 0 }; + +const Vec lbl_1_rodata_190[] + = { { 0.0f, 0.1f, 0.0f }, { 400.0f, 0.1f, 0.0f }, { -400.0f, 0.1f, 0.0f }, { 200.0f, 0.1f, -400.0f }, { -200.0f, 0.1f, -400.0f } }; + +UnkM447Struct_07 lbl_1_data_A0[] = { { { 0.0f, 2500.0f, 0.0f }, { 0.0f, -0.5f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 0.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 400.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { -400.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 200.0f, -100.0f, -400.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { -200.0f, -100.0f, -400.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } } }; + +UnkM447Struct_06 *fn_1_1D90(void) +{ + UnkM447Struct_06 *temp_r3; + s32 i; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + if (!temp_r3) { + return NULL; + } + temp_r3->unk38 = 0; + temp_r3->unk50 = NULL; + temp_r3->unk44 = 0; + for (i = 0; i < 5; i++) { + temp_r3->unk54[i] = 0; + temp_r3->unk68[i] = 0; + } + fn_1_2164(temp_r3); + fn_1_236C(temp_r3); + temp_r3->unk7C = HuPrcChildCreate(fn_1_1FF4, 0x65, 0x3000, 0, lbl_1_bss_4); + temp_r3->unk7C->user_data = temp_r3; + return temp_r3; +} + +void fn_1_1E70(UnkM447Struct_06 *arg0) +{ + fn_1_231C(arg0); + HuPrcKill(arg0->unk7C); + HuMemDirectFree(arg0); +} + +void fn_1_1EB0(UnkM447Struct_06 *arg0, s32 arg1) +{ + arg0->unk38 = arg1; + arg0->unk3C = 0; +} + +BOOL fn_1_1EC0(UnkM447Struct_06 *arg0) +{ + return arg0->unk38 != 0; +} + +void fn_1_1ED4(s32 arg0, Vec *arg1) +{ + *arg1 = lbl_1_rodata_190[arg0]; +} + +void fn_1_1F00(UnkM447Struct_06 *arg0, s32 arg1) +{ + s16 temp_r31; + + temp_r31 = arg0->unk00[arg1 + 3]; + Hu3DModelAttrReset(temp_r31, HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(temp_r31, 0.0f); + Hu3DMotionStartEndSet(temp_r31, 0.0f, 40.0f); + arg0->unk54[arg1] = 1; +} + +s32 fn_1_1F9C(UnkM447Struct_06 *arg0) +{ + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 5; i++) { + if (arg0->unk54[i] == 0) { + var_r30++; + } + } + return var_r30; +} + +void fn_1_1FEC(UnkM447Struct_06 *arg0, s32 arg1) +{ + arg0->unk44 = arg1; +} + +void (*lbl_1_data_148[])(UnkM447Struct_06 *) = { + fn_1_2490, fn_1_2494, fn_1_25E4, fn_1_2700, fn_1_2A3C, + NULL // padding? +}; + +void fn_1_1FF4(void) +{ + Vec sp8; + UnkM447Struct_06 *temp_r31; + s16 temp_r29; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + if (lbl_1_data_148[temp_r31->unk38]) { + lbl_1_data_148[temp_r31->unk38](temp_r31); + } + for (i = 0; i < 5; i++) { + temp_r29 = temp_r31->unk00[i + 3]; + if (Hu3DMotionEndCheck(temp_r29)) { + Hu3DMotionStartEndSet(temp_r29, 20.0f, 40.0f); + Hu3DModelAttrSet(temp_r29, HU3D_MOTATTR_LOOP); + } + } + if (temp_r31->unk44 > 0) { + fn_1_351C(&sp8); + if (--temp_r31->unk44 == 0) { + sp8.y = 300.0f; + } + else { + sp8.y = fn_1_A240() % 20 - 10 + 300.0f; + } + fn_1_3540(&sp8); + } + HuPrcVSleep(); + } +} + +void fn_1_2164(UnkM447Struct_06 *arg0) +{ + s32 i; + + for (i = 0; i <= 20; i++) { + arg0->unk00[i] = Hu3DModelCreateFile(lbl_1_rodata_138[i]); + Hu3DModelLayerSet(arg0->unk00[i], 0); + } + arg0->unk50 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M447, 57)); + arg0->unk00[21] = Hu3DParticleCreate(arg0->unk50, 64); + Hu3DParticleHookSet(arg0->unk00[21], fn_1_2DAC); + Hu3DParticleBlendModeSet(arg0->unk00[21], 1); + Hu3DModelLayerSet(arg0->unk00[21], 0); + Hu3DModelAttrSet(arg0->unk00[21], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(arg0->unk00[2]); + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z); + Hu3DModelAttrSet(arg0->unk00[i + 3], HU3D_MOTATTR_PAUSE); + Hu3DModelShadowMapSet(arg0->unk00[i + 3]); + } + for (i = 8; i <= 15; i++) { + Hu3DModelAttrSet(arg0->unk00[i], HU3D_ATTR_DISPOFF); + } + for (i = 16; i <= 20; i++) { + Hu3DModelAttrSet(arg0->unk00[i], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_231C(UnkM447Struct_06 *arg0) +{ + s32 i; + + for (i = 0; i < 22; i++) { + Hu3DModelKill(arg0->unk00[i]); + } +} + +void fn_1_236C(UnkM447Struct_06 *arg0) +{ + s32 i; + + Hu3DLighInit(); + for (i = 0; i < 6; i++) { + arg0->unk2C[i] = Hu3DGLightCreateV(&lbl_1_data_A0[i].unk00, &lbl_1_data_A0[i].unk0C, &lbl_1_data_A0[i].unk18); + switch (i) { + case 0: + Hu3DGLightInfinitytSet(arg0->unk2C[i]); + Hu3DGLightStaticSet(arg0->unk2C[i], 1); + break; + case 1: + case 2: + case 3: + case 4: + case 5: + Hu3DGLightStaticSet(arg0->unk2C[i], 1); + Hu3DGLightSpotSet(arg0->unk2C[i], 20.0f, 2); + Hu3DGLightColorSet(arg0->unk2C[i], 0, 0, 0, 0); + break; + } + } +} + +void fn_1_2490(UnkM447Struct_06 *arg0) { } + +void fn_1_2494(UnkM447Struct_06 *arg0) +{ + s32 i; + + switch (arg0->unk3C) { + case 0: + arg0->unk3C = 1; + break; + case 1: + Hu3DModelPosSet(arg0->unk00[14], 0.0f, 0.0f, 0.0f); + Hu3DMotionTimeSet(arg0->unk00[14], 0.0f); + Hu3DModelAttrReset(arg0->unk00[14], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk00[14], HU3D_MOTATTR_LOOP); + arg0->unk40 = 0; + arg0->unk3C = 2; + HuAudFXPlay(0x77E); + for (i = 0; i < 2; i++) { + fn_1_7AA4(lbl_1_bss_98[i], 0, 0x3C); + } + break; + case 2: + if (arg0->unk40++ >= 60) { + arg0->unk3C = 3; + } + break; + case 3: + Hu3DModelAttrSet(arg0->unk00[14], HU3D_ATTR_DISPOFF); + arg0->unk38 = 0; + arg0->unk3C = 0; + break; + } +} + +void fn_1_25E4(UnkM447Struct_06 *arg0) +{ + switch (arg0->unk3C) { + case 0: + arg0->unk3C = 1; + break; + case 1: + fn_1_2D08(arg0); + Hu3DModelPosSet(arg0->unk00[15], 0.0f, 0.0f, 0.0f); + Hu3DMotionTimeSet(arg0->unk00[15], 0.0f); + Hu3DModelAttrReset(arg0->unk00[15], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->unk00[15], HU3D_MOTATTR_LOOP); + arg0->unk40 = 0; + arg0->unk3C = 2; + HuAudFXPlay(0x782); + break; + case 2: + if (arg0->unk40++ >= 60) { + arg0->unk3C = 3; + } + break; + case 3: + Hu3DModelAttrSet(arg0->unk00[15], HU3D_ATTR_DISPOFF); + arg0->unk38 = 0; + arg0->unk3C = 0; + break; + } +} + +void fn_1_2700(UnkM447Struct_06 *arg0) +{ + float temp_f31; + s16 temp_r29; + s32 i; + + switch (arg0->unk3C) { + case 0: + arg0->unk48 = 0.0f; + arg0->unk4C = 0.011111111f; + arg0->unk3C = 1; + HuAudFXPlay(0x77F); + break; + case 1: + temp_f31 = -90.0f * arg0->unk48; + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, temp_f31, lbl_1_rodata_190[i].z); + } + arg0->unk48 += arg0->unk4C; + if (arg0->unk48 < 1.0f) { + break; + } + for (i = 0; i < 5; i++) { + Hu3DMotionTimeSet(arg0->unk00[i + 3], 0.0f); + Hu3DModelAttrSet(arg0->unk00[i + 3], HU3D_MOTATTR_PAUSE); + arg0->unk54[i] = 0; + arg0->unk68[i] = 0; + } + arg0->unk3C = 2; + break; + case 2: + for (i = 0; i < 5; i++) { + temp_r29 = arg0->unk00[i + 8]; + Hu3DModelPosSet(temp_r29, lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z); + Hu3DMotionTimeSet(temp_r29, 0.0f); + Hu3DModelAttrReset(temp_r29, HU3D_ATTR_DISPOFF); + Hu3DGLightColorSet(arg0->unk2C[i + 1], lbl_1_data_A0[i + 1].unk18.r, lbl_1_data_A0[i + 1].unk18.g, lbl_1_data_A0[i + 1].unk18.b, + lbl_1_data_A0[i + 1].unk18.a); + } + arg0->unk40 = 0; + arg0->unk3C = 3; + HuAudFXPlay(0x780); + break; + case 3: + if (arg0->unk40++ >= 60) { + for (i = 0; i < 5; i++) { + Hu3DModelAttrSet(arg0->unk00[i + 8], HU3D_ATTR_DISPOFF); + Hu3DGLightColorSet(arg0->unk2C[i + 1], 0, 0, 0, 0); + } + arg0->unk3C = 4; + } + break; + case 4: + arg0->unk38 = 0; + arg0->unk3C = 0; + break; + } +} + +void fn_1_2A3C(UnkM447Struct_06 *arg0) +{ + float temp_f31; + s16 temp_r29; + s32 i; + + switch (arg0->unk3C) { + case 0: + arg0->unk48 = 0.0f; + arg0->unk4C = 0.033333335f; + arg0->unk3C = 1; + HuAudFXPlay(0x77F); + break; + case 1: + temp_f31 = 90.0f * arg0->unk48 + -90.0f + 0.1f; + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, temp_f31, lbl_1_rodata_190[i].z); + } + arg0->unk48 += arg0->unk4C; + if (arg0->unk48 < 1.0f) { + break; + } + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z); + } + HuAudFXPlay(0x783); + arg0->unk3C = 2; + break; + case 2: + for (i = 0; i < 5; i++) { + temp_r29 = arg0->unk00[i + 16]; + Hu3DModelPosSet(temp_r29, lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z); + Hu3DMotionTimeSet(temp_r29, 0.0f); + Hu3DModelAttrReset(temp_r29, HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(temp_r29, HU3D_ATTR_DISPOFF); + } + arg0->unk40 = 0; + arg0->unk3C = 3; + break; + case 3: + if (arg0->unk40++ >= 20) { + for (i = 0; i < 5; i++) { + Hu3DModelAttrSet(arg0->unk00[i + 16], HU3D_ATTR_DISPOFF); + } + arg0->unk3C = 4; + break; + } + break; + case 4: + arg0->unk38 = 0; + arg0->unk3C = 0; + break; + } +} + +void fn_1_2D08(UnkM447Struct_06 *arg0) +{ + ModelData *temp_r30; + ParticleData *temp_r31; + + temp_r30 = &Hu3DData[arg0->unk00[21]]; + temp_r31 = temp_r30->unk_120; + temp_r30->attr &= ~1; + temp_r31->unk_00 = 0; + temp_r31->unk_02 = 1; + temp_r31->unk_04.x = 0.0f; + temp_r31->unk_04.y = 350.0f; + temp_r31->unk_04.z = -700.0f; + HuAudFXPlay(0x780); +} + +void fn_1_2DAC(ModelData *model, ParticleData *particle, Mtx matrix) +{ + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + HsfanimStruct01 *var_r31; + s32 i; + + if (particle->unk_02 == 0) { + return; + } + if (particle->unk_00 == 0) { + particle->unk_00 = 1; + particle->unk_04.z = 0.0f; + particle->unk_10.z = 0.016666668f; + for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk2C = 20.0f; + var_r31->unk40.r = sp8.r; + var_r31->unk40.g = sp8.g; + var_r31->unk40.b = sp8.b; + var_r31->unk40.a = sp8.a; + var_r31->unk34.x = particle->unk_04.x; + var_r31->unk34.y = particle->unk_04.y; + var_r31->unk34.z = particle->unk_04.z; + var_r31->unk08.x = -8.0f + 0.1f * (fn_1_A240() % 160); + var_r31->unk08.y = -8.0f + 0.1f * (fn_1_A240() % 160); + var_r31->unk08.z = 0.0f; + } + } + for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) { + if (var_r31->unk00 < 0) { + continue; + } + var_r31->unk34.x += var_r31->unk08.x; + var_r31->unk34.y += var_r31->unk08.y; + var_r31->unk34.z = -700.0 + 500.0 * sind(90.0f * particle->unk_04.z); + var_r31->unk40.a = 255.0f * (1.0f - particle->unk_04.z); + var_r31->unk2C = 20.0f + fn_1_A240() % 30; + } + particle->unk_04.z += particle->unk_10.z; + if (particle->unk_04.z >= 1.0f) { + model->attr |= 1; + particle->unk_02 = 0; + } +} diff --git a/src/REL/m448Dll/main.c b/src/REL/m448Dll/main.c new file mode 100755 index 00000000..961f27be --- /dev/null +++ b/src/REL/m448Dll/main.c @@ -0,0 +1,1855 @@ +#include "REL/executor.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" +#include "version.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ char unk14[4]; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; +} UnkM448Struct_00; // Size 0x4C + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ char unk14[4]; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} UnkM448Struct_01; // Size 0x24 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04[3]; +} UnkM448Struct_02; // Size 0x10 + +void fn_1_A0(void); +void fn_1_38C(void); +void fn_1_478(void); +void fn_1_4FC(ModelData *model, Mtx matrix); +void fn_1_1338(omObjData *arg0); +void fn_1_4310(omObjData *arg0); +void fn_1_6DAC(void); +void fn_1_7148(omObjData *arg0); +void fn_1_7DC4(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_81C0(omObjData *arg0); +void fn_1_8DD0(omObjData *arg0); +void fn_1_9508(omObjData *arg0); +void ObjectSetup(void); +void fn_1_9B00(omObjData *arg0); + +UnkM448Struct_01 lbl_1_bss_16C[20]; +UnkM448Struct_02 lbl_1_bss_9C[13]; +omObjData *lbl_1_bss_98; +omObjData *lbl_1_bss_94; +omObjData *lbl_1_bss_8C[2]; +omObjData *lbl_1_bss_88; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; +s32 lbl_1_bss_7C; +s32 lbl_1_bss_78; +s32 lbl_1_bss_74; +Process *lbl_1_bss_70; +s32 lbl_1_bss_6C; +s32 lbl_1_bss_68; +s32 lbl_1_bss_64; +s32 lbl_1_bss_60; +GXTexObj lbl_1_bss_40; +char lbl_1_bss_3C_pad[4]; +float lbl_1_bss_38; +s32 lbl_1_bss_34; +char lbl_1_bss_30_pad[4]; +void *lbl_1_bss_2C; +void *lbl_1_bss_28; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +char lbl_1_bss_8_pad[8]; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +s32 lbl_1_data_0[] = { DATA_MAKE_NUM(DATADIR_MGCONST, 23), DATA_MAKE_NUM(DATADIR_MGCONST, 22), DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), DATADIR_MGCONST, DATA_MAKE_NUM(DATADIR_MGCONST, 23), DATA_MAKE_NUM(DATADIR_MGCONST, 22), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), DATA_MAKE_NUM(DATADIR_MGCONST, 51), DATADIR_MGCONST }; + +s32 lbl_1_data_28[10] = { 0 }; + +s32 lbl_1_data_50[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), DATA_MAKE_NUM(DATADIR_MARIOMOT, 8), DATA_MAKE_NUM(DATADIR_MARIOMOT, 10), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 9), DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) }; + +s32 lbl_1_data_7C[] = { DATA_MAKE_NUM(DATADIR_M448, 19), DATA_MAKE_NUM(DATADIR_M448, 20), DATA_MAKE_NUM(DATADIR_M448, 21), + DATA_MAKE_NUM(DATADIR_M448, 24), DATA_MAKE_NUM(DATADIR_M448, 25), DATA_MAKE_NUM(DATADIR_M448, 26), DATA_MAKE_NUM(DATADIR_M448, 27), + DATA_MAKE_NUM(DATADIR_M448, 28), DATA_MAKE_NUM(DATADIR_M448, 19), DATA_MAKE_NUM(DATADIR_M448, 22), DATA_MAKE_NUM(DATADIR_M448, 23) }; + +u8 lbl_1_data_A8[11] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; +u8 lbl_1_data_B3[11] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1 }; +s32 lbl_1_data_C0[11] = { 8, 8, 8, 0, 0, 0, 8, 8, 2, 8, 8 }; +s32 lbl_1_data_EC[11] = { 0, 0, 0, 3, 5, 0, 0, 0, 0, 0, 0 }; +s32 lbl_1_data_118[11] = { 8, 8, 8, 0, 2, 0, 0, 0, 0, 8, 8 }; +s32 lbl_1_data_144[11] = { 0 }; // unused +s32 lbl_1_data_170[2] = { 0 }; +s32 lbl_1_data_178[] = { 1, 1, 0, 0, 0, 1, 0, 0 }; +s16 lbl_1_data_198 = -1; +s16 lbl_1_data_19A = -1; +s16 lbl_1_data_19C = -1; +s32 lbl_1_data_1A0 = -1; +s32 lbl_1_data_1A4[2] = { 0 }; +s32 lbl_1_data_1AC[2] = { 0 }; +s32 lbl_1_data_1B4[2] = { 0 }; + +float lbl_1_data_1BC[][4] = { { -90.0f, 2.0f, 525.0f, 180.0f }, { 90.0f, 2.0f, 525.0f, 180.0f } }; + +float lbl_1_data_1DC[] = { 0.0f, 0.0f, 0.0f, 1.0f }; + +void fn_1_A0(void) +{ + Center.x += 10.0 * (((HuPadBtn[0] & 2) != 0) - ((HuPadBtn[0] & 1) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & 8) != 0) - ((HuPadBtn[0] & 4) != 0)); + Center.y += 30.0 * ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0); + CZoom += 25.0 * (((HuPadBtn[0] & 0x400) != 0) - ((HuPadBtn[0] & 0x800) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; +} + +void fn_1_38C(void) +{ + lbl_1_bss_64 = GXGetTexBufferSize(640, 480, GX_TF_RGB565, GX_FALSE, 0); + lbl_1_bss_60 = GXGetTexBufferSize(160, 120, GX_TF_RGB565, GX_FALSE, 0); + lbl_1_bss_28 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_64, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_28, 0, lbl_1_bss_64); + lbl_1_bss_2C = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_60, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_2C, 0, lbl_1_bss_60); +} + +void fn_1_478(void) +{ + if (lbl_1_bss_28) { + HuMemDirectFree(lbl_1_bss_28); + } + lbl_1_bss_28 = NULL; + if (lbl_1_bss_2C) { + HuMemDirectFree(lbl_1_bss_2C); + } + lbl_1_bss_2C = NULL; +} + +void fn_1_4FC(ModelData *model, Mtx matrix) +{ + Mtx spC8; + Mtx sp98; + float temp_f31; + float temp_f29; + float temp_f30; + float temp_f28; + s32 sp10; + void *spC; + s32 var_r29; + s32 var_r20; + void *var_r28; + s32 i; + s32 j; + + sp10 = lbl_1_bss_64; + spC = lbl_1_bss_28; + if (!lbl_1_bss_28) { + return; + } + GXSetScissor(0, 0, 640, 480); + GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + C_MTXOrtho(sp98, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); + GXSetProjection(sp98, GX_ORTHOGRAPHIC); + MTXIdentity(spC8); + GXLoadPosMtxImm(spC8, GX_PNMTX0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + for (i = 0; i < 0; i++) { + s32 sp84[5] = { 0, 1, 1, 0, 1 }; + float sp70[5] = { 1.0f, 2.0f, 2.5f, 0.0f, 0.0f }; + float sp5C[5] = { 1.0f, 4.0f, 5.0f, 1.0f, 5.0f }; + float sp48[5] = { 2.0f, 2.5f, 0.0f, 1.0f, 1.0f }; + float sp34[5] = { 0.5f, -0.5f, 0.0f, 0.0f, 0.0f }; + + var_r20 = (sp84[i] == 0) ? lbl_1_bss_64 : lbl_1_bss_60; + var_r28 = (sp84[i] == 0) ? lbl_1_bss_28 : lbl_1_bss_2C; + if (sp70[i] > 0.0f) { + GXSetTexCopySrc(0, 0, 640.0f / sp70[i], 480.0f / sp70[i]); + GXSetTexCopyDst( + (sp84[i] == 0 ? 640 : 320) / sp70[i], (sp84[i] == 0 ? 480 : 240) / sp70[i], GX_TF_RGB565, sp84[i] == 0 ? GX_FALSE : GX_TRUE); + GXSetCopyClear(BGColor, 0xFFFFFF); + GXCopyTex(var_r28, GX_FALSE); + DCFlushRange(var_r28, var_r20); + GXPixModeSync(); + } + if (sp48[i] > 0.0f) { + GXInitTexObj(&lbl_1_bss_40, var_r28, 640.0f / sp5C[i], 480.0f / sp5C[i], GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&lbl_1_bss_40, GX_TEXMAP0); + for (j = 0; j < (i != 4 ? 1 : 4); j++) { + float sp24[4] = { 16.5f, -8.5f, -16.5f, 8.5f }; + float sp14[4] = { -8.5f, -16.5f, 8.5f, 16.5f }; + + temp_f31 = 0.0015625 * (0.5 * sp24[j]); + temp_f29 = 0.0f; + temp_f30 = 0.0015625 * (0.6666666666666666 * sp14[j]); + temp_f28 = 0.0f; + var_r29 = 16 - j * 5; + var_r29 = (i != 4) ? 0xFF : 0xB1; + if (i != 4) { + temp_f31 = 0.0f; + temp_f30 = 0.0f; + } + if (i == 3) { + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_TEXC, GX_CC_ZERO); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ZERO, GX_LO_NOOP); + } + else if (i == 4) { + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_SUBHALF, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ONE, GX_LO_NOOP); + } + else { + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_TEXC, GX_CC_ZERO); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ZERO, GX_LO_NOOP); + } + temp_f31 = 0.0015625 * sp34[i]; + temp_f30 = 0.0015625 * sp34[i]; + temp_f31 = 0.0f; + temp_f30 = 0.0f; + temp_f29 += 0.5 * (1.0f / (640.0f / sp5C[i])); + temp_f28 += 0.5 * (1.0f / (640.0f / sp5C[i])); + temp_f31 = temp_f30 = temp_f29 = temp_f28 = 0.0f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(temp_f31 + 1.25 * (0.0f / sp48[i]), temp_f30 + 1.25 * (0.0f / sp48[i]), 0.0f); + GXColor4u8(0xFF, 0xFF, 0xFF, var_r29); + GXPosition2f32(temp_f29 + 0.0, temp_f28 + 0.0); + GXPosition3f32(temp_f31 + 1.25 * (1.0f / sp48[i]), temp_f30 + 1.25 * (0.0f / sp48[i]), 0.0f); + GXColor4u8(0xFF, 0xFF, 0xFF, var_r29); + GXPosition2f32(temp_f29 + 1.25, temp_f28 + 0.0); + GXPosition3f32(temp_f31 + 1.25 * (1.0f / sp48[i]), temp_f30 + 1.25 * (1.0f / sp48[i]), 0.0f); + GXColor4u8(0xFF, 0xFF, 0xFF, var_r29); + GXPosition2f32(temp_f29 + 1.25, temp_f28 + 1.25); + GXPosition3f32(temp_f31 + 1.25 * (0.0f / sp48[i]), temp_f30 + 1.25 * (1.0f / sp48[i]), 0.0f); + GXColor4u8(0xFF, 0xFF, 0xFF, var_r29); + GXPosition2f32(temp_f29 + 0.0, temp_f28 + 1.25); + GXEnd(); + } + } + } +} + +const Vec lbl_1_rodata_100 = { 0.0f, 0.0f, 0.0f }; + +void fn_1_1338(omObjData *arg0) +{ + Mtx sp184; + Vec sp178; + s32 var_r24; + UnkM448Struct_00 *temp_r31; + UnkM448Struct_00 *sp11C; + UnkM448Struct_00 *temp_r23; + UnkM448Struct_00 *temp_r25; + UnkM448Struct_01 *temp_r28; + UnkM448Struct_01 *temp_r27; + float var_f29; + float var_f20; + float sp118; + float sp114; + float sp110; + float sp10C; + float sp108; + float sp104; + float sp100; + float spFC; + float spF8; + float spF4; + float spF0; + s32 var_r17; + s32 spEC; + float spE8; + s32 spE4; + float spE0; + float spDC; + float spD8; + float spD4; + float spD0; + float spCC; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f26; + float temp_f25; + float temp_f27; + float temp_f31; + float temp_f30; + float var_f28; + s16 var_r29; + s32 var_r21; + s32 var_r26; + s32 var_r20; + s32 var_r19; + s32 var_r18; + s32 var_r22; + + temp_r31 = arg0->data; + sp11C = lbl_1_bss_8C[1 - arg0->work[0]]->data; + var_f29 = 0.0f; + var_f20 = 0.0f; + sp118 = 0.0f; + sp114 = 0.0f; + sp110 = 0.0f; + var_r29 = -1; + if (temp_r31->unk20 != 3) { + temp_r31->unk40 = temp_r31->unk48 = 0.0f; + } + temp_r31->unk38++; + switch (temp_r31->unk34) { + case 0: + if (lbl_1_bss_80 == 1001 && lbl_1_bss_84 == 45 && temp_r31->unk08 != -1) { + var_r20 = 8; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r20], lbl_1_data_EC[var_r20], 45.0f, + (lbl_1_data_A8[var_r20] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + temp_r31->unk20 = var_r20; + } + if (lbl_1_bss_80 == 1001 && lbl_1_bss_84 == 210 && temp_r31->unk08 != -1) { + var_r19 = 0; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r19], lbl_1_data_EC[var_r19], 30.0f, + (lbl_1_data_A8[var_r19] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + temp_r31->unk20 = var_r19; + } + if (lbl_1_bss_80 == 1003 && temp_r31->unk08 != -1) { + arg0->rot.y = 0.9 * (arg0->rot.y - (temp_r31->unk00 == 0 ? 90 : -90)) + (temp_r31->unk00 == 0 ? 90 : -90); + } + if (lbl_1_bss_80 == 1005) { + temp_r31->unk34 = (lbl_1_bss_14 == temp_r31->unk00) ? 1 : 3; + } + break; + case 1: + if (temp_r31->unk38 == 1 && temp_r31->unk08 != -1) { + Hu3DMotionNoMotReset(arg0->model[0], "ske_head", (lbl_1_data_178[temp_r31->unk08] != 0) ? 0x100 : 0x80); + } + sp118 = (lbl_1_bss_1C < 90) ? 0 : 0x48; + if (arg0->trans.z < 250.0f) { + temp_r31->unk34 = 2; + lbl_1_bss_0 = 600; + if (lbl_1_data_19A != -1) { + MGSeqKill(lbl_1_data_19A); + } + lbl_1_data_19A = MGSeqCreate(1, lbl_1_bss_0 / 60, -1, -1); + for (var_r17 = 0; var_r17 < 10; var_r17++) { + espDispOn(lbl_1_data_28[var_r17]); + } + if (temp_r31->unk0C == -1) { + var_r24 = 0; + temp_r31->unk18 = temp_r31->unk1C = -1; + for (var_r26 = 0; var_r26 < 20; var_r26++) { + var_r24 += (lbl_1_bss_16C[var_r26].unk18 != 9); + } + if (var_r24 != 0) { + var_r24 = rand8() % var_r24; + for (var_r26 = 0; var_r26 < 20; var_r26++) { + if (lbl_1_bss_16C[var_r26].unk18 != 9) { + if (var_r24 <= 0) { + temp_r31->unk18 = lbl_1_bss_16C[var_r26].unk00; + temp_r31->unk1C = lbl_1_bss_16C[var_r26].unk04; + break; + } + var_r24--; + } + } + } + } + } + break; + case 6: + var_f20 = 4.0f * (0.5f + lbl_1_data_1BC[temp_r31->unk00][0] - arg0->trans.x); + sp118 = 4.0f * -(0.5f + lbl_1_data_1BC[temp_r31->unk00][2] - arg0->trans.z); + if (lbl_1_bss_80 == 1005) { + var_f20 = 0.0f; + } + if (arg0->trans.z >= lbl_1_data_1BC[temp_r31->unk00][2]) { + temp_r31->unk34 = (lbl_1_bss_80 < 1005) ? 0 : ((lbl_1_bss_68 == -1) ? 3 : 7); + temp_r31->unk38 = 0; + if (temp_r31->unk34 == 0) { + arg0->rot.y = 180.0f; + } + } + break; + case 2: + if (lbl_1_bss_14 != temp_r31->unk00) { + OSReport("m448 player turn error!\n"); + } + if (lbl_1_bss_0 > 0 && lbl_1_bss_18 < 18000) { + if (temp_r31->unk0C != -1) { + var_f20 = HuPadStkX[temp_r31->unk0C]; + sp118 = HuPadStkY[temp_r31->unk0C]; + sp114 = (HuPadBtn[temp_r31->unk0C] & 0x100) > 0; + sp110 = (HuPadBtnDown[temp_r31->unk0C] & (temp_r31->unk20 == 3 ? 320 : 256)) > 0; + sp178 = lbl_1_rodata_100; + sp178.x = var_f20; + sp178.z = -sp118; + MTXRotRad(sp184, 'y', MTXDegToRad(CRot.y)); + MTXMultVec(sp184, &sp178, &sp178); + var_f20 = sp178.x; + sp118 = -sp178.z; + } + else { + if (temp_r31->unk20 == 3) { + if (temp_r31->unk44 < 0.0f && temp_r31->unk08 != -1) { + sp110 = sp114 = 1.0f; + } + else { + sp114 = 1.0f; + } + } + if (temp_r31->unk18 != -1 && temp_r31->unk1C != -1) { + temp_f26 = 100.0 + 200.0 * (temp_r31->unk18 - 2.5) - arg0->trans.x; + temp_f25 = 100.0 + 200.0 * (temp_r31->unk1C - 2.0) - arg0->trans.z; + sp10C = sqrtf(temp_f26 * temp_f26 + temp_f25 * temp_f25); + if (temp_r31->unk08 != -1 && temp_r31->unk20 != 3) { + if (sp10C < 60.0f) { + sp110 = sp114 = 1.0f; + } + else { + var_f20 = temp_f26; + sp118 = -temp_f25; + } + } + else if (sp10C < 277.5) { + if (temp_r31->unk20 != 3) { + sp110 = sp114 = 1.0f; + } + var_f20 = (temp_f26 / 37.0) / 0.25; + sp118 = (-temp_f25 / 37.0) / 0.25; + } + else { + var_f20 = temp_f26; + sp118 = -temp_f25; + } + } + } + } + arg0->trans.x = (arg0->trans.x < -450.0f) ? -450.0f : (arg0->trans.x > 450.0f) ? 450.0f : arg0->trans.x; + arg0->trans.z = (arg0->trans.z < -350.0f) ? -350.0f : (arg0->trans.z > 350.0f) ? 350.0f : arg0->trans.z; + if ((lbl_1_bss_0 <= 0 || lbl_1_bss_18 >= 18000) && temp_r31->unk20 == 0) { + temp_r31->unk34 = 5; + temp_r31->unk38 = 0; + lbl_1_bss_1C = 0; + if (lbl_1_bss_18 >= 18000) { + temp_r23 = lbl_1_bss_8C[1 - temp_r31->unk00]->data; + lbl_1_bss_68 = (temp_r31->unk08 == -1) ? temp_r31->unk00 : (temp_r23->unk08 == -1) ? temp_r23->unk00 : 4; + temp_r23->unk34 = 7; + temp_r23->unk38 = 0; + } + } + break; + case 3: + spFC = (arg0->rot.y > 0.0f) ? -180 : 180; + sp104 = lbl_1_bss_8C[1 - temp_r31->unk00]->trans.x; + sp100 = lbl_1_bss_8C[1 - temp_r31->unk00]->trans.z; + sp108 = atan2d(sp104 - arg0->trans.x, sp100 - arg0->trans.z); + arg0->rot.y = 0.3 * (arg0->rot.y + spFC) - spFC; + if (temp_r31->unk08 != -1) { + Hu3DMotionForceSet(arg0->model[0], "ske_head", (lbl_1_data_178[temp_r31->unk08] != 0) ? 0x100 : 0x80, + (lbl_1_data_178[temp_r31->unk08] != 0) ? 180.0f + -sp108 : 180.0f + sp108); + } + break; + case 5: + if (arg0->trans.z >= 400.0f) { + temp_r25 = lbl_1_bss_8C[1 - temp_r31->unk00]->data; + temp_r31->unk34 = 6; + temp_r31->unk38 = 0; + sp118 = -40.0f; + if (lbl_1_bss_68 == -1) { + temp_r25->unk34 = 1; + temp_r25->unk38 = 0; + if (temp_r25->unk08 != -1) { + Hu3DMotionForceSet( + lbl_1_bss_8C[1 - temp_r31->unk00]->model[0], "ske_head", (lbl_1_data_178[temp_r25->unk08] != 0) ? 0x100 : 0x80, 180.0f); + Hu3DMotionNoMotReset( + lbl_1_bss_8C[1 - temp_r31->unk00]->model[0], "ske_head", (lbl_1_data_178[temp_r25->unk08] != 0) ? 0x100 : 0x80); + } + } + lbl_1_bss_14 = 1 - lbl_1_bss_14; + } + else { + spF8 = lbl_1_data_1BC[temp_r31->unk00][0] - arg0->trans.x; + spF4 = 400.0f - arg0->trans.z; + spF0 = atan2d(lbl_1_data_1BC[temp_r31->unk00][0] - arg0->trans.x, 400.0f - arg0->trans.z); + var_f20 = 10.0 * sind(spF0) / 0.25; + sp118 = 10.0 * -cosd(spF0) / 0.25; + if (fabs(var_f20) > fabs(4.0f * (lbl_1_data_1BC[temp_r31->unk00][0] - arg0->trans.x))) { + var_f20 = 4.0f * (lbl_1_data_1BC[temp_r31->unk00][0] - arg0->trans.x); + } + } + break; + case 7: + if (temp_r31->unk38 == 1 && temp_r31->unk08 != -1) { + Hu3DMotionForceSet(arg0->model[0], "ske_head", (lbl_1_data_178[temp_r31->unk08] != 0) ? 0x100 : 0x80, 180.0f); + Hu3DMotionNoMotReset(arg0->model[0], "ske_head", (lbl_1_data_178[temp_r31->unk08] != 0) ? 0x100 : 0x80); + } + arg0->rot.y *= 0.3; + if (lbl_1_bss_80 == 1007 && temp_r31->unk20 == 0) { + temp_r31->unk24 = (lbl_1_bss_68 == temp_r31->unk00) ? 9 : 10; + } + break; + } + switch (temp_r31->unk20) { + case 4: + case 7: + case 8: + if ((temp_r31->unk08 != -1) ? CharModelMotionEndCheck(temp_r31->unk08) : Hu3DMotionEndCheck(arg0->model[0])) { + var_r29 = 0; + } + /* fallthrough */ + case 0: + case 1: + case 2: + temp_f31 = 0.25 * var_f20; + temp_f30 = 0.25 * -sp118; + var_f29 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (var_f29 >= 0.5f) { + if (var_f29 < 10.0f) { + temp_r31->unk40 = temp_f31; + temp_r31->unk48 += temp_f30; + } + else { + temp_f31 = temp_f31 / var_f29; + temp_f30 = temp_f30 / var_f29; + var_f29 = 10.0f; + if (temp_r31->unk20 != 3) { + temp_r31->unk40 = temp_f31 * var_f29; + temp_r31->unk48 = temp_f30 * var_f29; + } + else { + temp_r31->unk40 = 0.875 * temp_r31->unk40 + temp_f31 * var_f29 * 0.125; + temp_r31->unk48 = 0.875 * temp_r31->unk48 + temp_f30 * var_f29 * 0.125; + } + } + temp_r31->unk3C = var_f29; + arg0->rot.y = atan2d(temp_r31->unk40, temp_r31->unk48); + if (temp_r31->unk3C >= 8.0f) { + var_r29 = 2; + } + else { + var_r29 = 1; + } + } + else if (temp_r31->unk20 != 7 && temp_r31->unk20 != 4 && temp_r31->unk20 != 8) { + var_r29 = 0; + } + temp_r31->unk44 = 0.0f; + if (sp110) { + temp_r31->unk2C = 0; + temp_r31->unk28 = 1; + temp_r31->unk44 = 26.766666f; + var_r29 = 3; + } + break; + case 3: + if (temp_r31->unk08 != -1) { + temp_f31 = 0.25 * var_f20; + temp_f30 = 0.25 * -sp118; + var_f29 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (var_f29 >= 0.5f) { + if (var_f29 < 10.0f) { + temp_r31->unk40 = temp_f31; + temp_r31->unk48 = temp_f30; + } + else { + temp_f31 = temp_f31 / var_f29; + temp_f30 = temp_f30 / var_f29; + var_f29 = 10.0f; + if (temp_r31->unk20 != 3) { + temp_r31->unk40 = temp_f31 * var_f29; + temp_r31->unk48 = temp_f30 * var_f29; + } + else { + temp_r31->unk40 = 0.875 * temp_r31->unk40 + temp_f31 * var_f29 * 0.125; + temp_r31->unk48 = 0.875 * temp_r31->unk48 + temp_f30 * var_f29 * 0.125; + } + } + temp_r31->unk3C = var_f29; + arg0->rot.y = atan2d(temp_r31->unk40, temp_r31->unk48); + } + else { + // Required to match. + 0.875 * temp_r31->unk40; + 0.875 * temp_r31->unk48; + } + } + if (temp_r31->unk28 != 0) { + if (sp114) { + if (++temp_r31->unk28 > 4) { + temp_r31->unk28 = 0; + } + else { + temp_r31->unk44 += 4.866667f; + } + } + else { + temp_r31->unk28 = 0; + } + } + temp_r31->unk44 += -2.4333334f; + if (temp_r31->unk2C != 0) { + temp_r31->unk44 = 0.0f; + temp_r31->unk2C = 1; + var_r29 = 4; + if (temp_r31->unk08 != -1) { + break; + } + temp_r31->unk44 = 9.733334f; + temp_r31->unk44 = 0.0f; + temp_r31->unk2C = 0; + var_r29 = 6; + if (temp_r31->unk34 != 2) { + break; + } + for (spEC = 0; spEC < 20; spEC++) { + temp_r28 = &lbl_1_bss_16C[spEC]; + temp_f24 = 100.0 + 200.0 * (temp_r28->unk00 - 2.5) - arg0->trans.x; + temp_f23 = 100.0 + 200.0 * (temp_r28->unk04 - 2.0) - arg0->trans.z; + spE8 = sqrtf(temp_f24 * temp_f24 + temp_f23 * temp_f23); + if (temp_r28->unk0C == -1 && spE8 <= 100.0) { + temp_r31->unk34 = 4; + temp_r31->unk38 = 0; + temp_r28->unk18 = 8; + temp_r28->unk1C = 0; + temp_r28->unk0C = temp_r31->unk00; + MGSeqParamSet(lbl_1_data_19A, 2, -1); + lbl_1_data_19A = -1; + lbl_1_bss_1C = 0; + } + } + } + else if (sp110) { + temp_r31->unk44 = 0.0f; + temp_r31->unk30 = 0; + var_r29 = 5; + } + break; + case 5: + if ((Hu3DData[arg0->model[0]].unk_0C == -1 && temp_r31->unk08 != -1) ? CharModelMotionEndCheck(temp_r31->unk08) + : Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk44 += -2.4333334f; + } + else { + temp_r31->unk44 = 0.0f; + } + if (temp_r31->unk44 < 0.0f && temp_r31->unk2C != 0) { + if (temp_r31->unk30 != 0) { + temp_r31->unk44 = 0.0f; + temp_r31->unk30 = 0; + var_r29 = 7; + } + else { + temp_r31->unk44 = 9.733334f; + temp_r31->unk2C = 0; + var_r29 = 6; + if (temp_r31->unk0C != -1) { + omVibrate(temp_r31->unk04, 12, 6, 6); + } + if (temp_r31->unk34 == 2) { + for (spE4 = 0; spE4 < 20; spE4++) { + temp_r27 = &lbl_1_bss_16C[spE4]; + temp_f22 = 100.0 + 200.0 * (temp_r27->unk00 - 2.5) - arg0->trans.x; + temp_f21 = 100.0 + 200.0 * (temp_r27->unk04 - 2.0) - arg0->trans.z; + spE0 = sqrtf(temp_f22 * temp_f22 + temp_f21 * temp_f21); + if (temp_r27->unk0C == -1 && spE0 <= 100.0) { + temp_r31->unk34 = 4; + temp_r31->unk38 = 0; + temp_r27->unk18 = 8; + temp_r27->unk1C = 0; + temp_r27->unk0C = temp_r31->unk00; + MGSeqParamSet(lbl_1_data_19A, 2, -1); + lbl_1_data_19A = -1; + lbl_1_bss_1C = 0; + } + } + } + } + } + break; + case 6: + temp_r31->unk44 += -2.4333334f; + if (temp_r31->unk2C != 0) { + if ((temp_r31->unk08 != -1) ? CharModelMotionEndCheck(temp_r31->unk08) : Hu3DMotionEndCheck(arg0->model[0])) { + var_r29 = 7; + } + } + break; + case 9: + case 10: + break; + } + arg0->trans.x += temp_r31->unk40; + if (temp_r31->unk2C == 0) { + arg0->trans.y += temp_r31->unk44; + } + arg0->trans.z += temp_r31->unk48; + for (var_r22 = 1; var_r22 < 2; var_r22++) { + temp_f27 = lbl_1_bss_8C[var_r22]->trans.x - arg0->trans.x; + var_f28 = lbl_1_bss_8C[var_r22]->trans.z - arg0->trans.z; + if (var_r22 != temp_r31->unk00) { + if (temp_f27 == 0.0f && var_f28 == 0.0f) { + var_f28 = -1.0f; + } + spDC = sqrtf(temp_f27 * temp_f27 + var_f28 * var_f28); + if (spDC < 100.0f) { + temp_f27 *= 100.0f / spDC; + var_f28 *= 100.0f / spDC; + arg0->trans.x = lbl_1_bss_8C[var_r22]->trans.x - temp_f27; + arg0->trans.z = lbl_1_bss_8C[var_r22]->trans.z - var_f28; + } + } + } + if (arg0->trans.y < 0.0f) { + arg0->trans.y = (temp_r31->unk34 == 7) ? 2.5f : 0.0f; + temp_r31->unk2C = 1; + } + if (temp_r31->unk24 >= 0) { + var_r29 = temp_r31->unk24; + } + if (var_r29 >= 0 && var_r29 != temp_r31->unk20) { + var_r18 = (temp_r31->unk08 == -1 && (var_r29 == 9 || var_r29 == 10)) ? 0 : var_r29; + if (temp_r31->unk08 != -1) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r18], lbl_1_data_EC[var_r18], lbl_1_data_C0[var_r18], + (lbl_1_data_A8[var_r18] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + } + else { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r29], lbl_1_data_EC[var_r29], lbl_1_data_118[var_r29], + (lbl_1_data_B3[var_r29] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + if (var_r29 == 3) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 15.0f, 33.0f, HU3D_MOTATTR_PAUSE); + } + } + temp_r31->unk20 = var_r29; + } + espBankSet(lbl_1_data_28[temp_r31->unk00 * 5 + 2], lbl_1_data_1A4[temp_r31->unk00] % 10); + espBankSet(lbl_1_data_28[temp_r31->unk00 * 5 + 3], (lbl_1_data_1A4[temp_r31->unk00] / 10) % 10); + lbl_1_data_1B4[temp_r31->unk00] += (lbl_1_data_1B4[temp_r31->unk00] < 256) ? 1 : 0; + if (lbl_1_data_1B4[temp_r31->unk00] <= 15) { + spD8 = 1.0 - lbl_1_data_1B4[temp_r31->unk00] / 15.0; + spD4 = 1.0f; + spD0 = 0.0f; + spCC = 0.0f; + for (var_r21 = 0; var_r21 < 2; var_r21++) { + if (lbl_1_data_1AC[temp_r31->unk00] > 0) { + float sp1B4[21] = { 0.0f, 0.0f, 0.0f, 5.0f, 0.0f, 7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 15.0f }; + + spD8 = (lbl_1_data_1B4[temp_r31->unk00] < 10) ? 1.0 - lbl_1_data_1B4[temp_r31->unk00] / 10.0 : 0.0; + spD4 = 1.0 + (spD8 * 0.5 + spD8 * spD8 * 0.5) * sp1B4[lbl_1_data_1AC[temp_r31->unk00]] / 10.0; + espScaleSet(lbl_1_data_28[(var_r21 == 0 ? 2 : 3) + temp_r31->unk00 * 5], spD4, spD4); + } + else if (lbl_1_data_1AC[temp_r31->unk00] < 0) { + s32 sp168[4] = { 100, 485, 16, -4 }; + + spD0 = spD8 * lbl_1_data_1AC[temp_r31->unk00] * (rand8() / 255.0 - 0.5); + spCC = spD8 * lbl_1_data_1AC[temp_r31->unk00] * (rand8() / 255.0 - 0.5); + espPosSet( + lbl_1_data_28[(var_r21 == 0 ? 2 : 3) + temp_r31->unk00 * 5], (&sp168[var_r21])[2] + sp168[temp_r31->unk00] + spD0, 72.0f + spCC); + } + } + } +} + +s32 lbl_1_data_25C = -1; +float lbl_1_data_260 = 2775.0f; +float lbl_1_data_264 = 314.0f; +float lbl_1_data_268 = -100.0f; +float lbl_1_data_26C = -38.75f; + +void fn_1_4310(omObjData *arg0) +{ + UnkM448Struct_00 *spC8[2]; + float spB0; + float spAC; + float temp_f19; + float var_f18; + float spA8; + float spA4; + float spA0; + float sp9C; + float sp98; + float sp94; + float sp90; + float sp8C; + float sp88; + float sp84; + float sp80; + float sp7C; + float sp78; + float sp74; + float sp70; + float sp6C; + ModelData *temp_r23; + ModelData *temp_r22; + ModelData *temp_r26; + ModelData *temp_r29; + UnkM448Struct_01 *temp_r31; + float temp_f21; + float temp_f20; + float temp_f26; + float temp_f30; + float temp_f29; + float var_f28; + float var_f27; + float var_f22; + float var_f23; + float var_f31; + s32 temp_r21; + s32 var_r25; + s32 var_r20; + s32 var_r19; + s32 var_r24; + s32 i; + + for (i = 0; i < 2; i++) { + spC8[i] = lbl_1_bss_8C[i]->data; + } + lbl_1_bss_4++; + lbl_1_bss_1C++; + if (lbl_1_bss_80 == 1005) { + lbl_1_bss_18++; + if (lbl_1_bss_18 == 16200) { + lbl_1_data_19C = MGSeqCreate(1, (18060 - lbl_1_bss_18) / 60, -1, -1); + MGSeqPosSet(lbl_1_data_19C, 288.0f, 400.0f); + } + if (lbl_1_data_19C != -1) { + MGSeqParamSet(lbl_1_data_19C, 1, (18060 - lbl_1_bss_18) / 60); + } + } + lbl_1_data_1DC[0] = lbl_1_data_1DC[1] = lbl_1_data_1DC[2] = 0.0f; + if (lbl_1_bss_80 == 1004 && lbl_1_bss_84 == 0) { + lbl_1_bss_84++; + lbl_1_bss_78 = 1; + lbl_1_bss_74 = 0; + for (i = 0; i < 20; i++) { + lbl_1_bss_16C[i].unk18 = 2; + lbl_1_bss_16C[i].unk1C = 0; + lbl_1_bss_16C[i].unk08 = rand8() % 16; + lbl_1_bss_16C[i].unk10 = -40.0f; + } + } + switch (lbl_1_bss_78) { + case 1: + lbl_1_bss_74++; + if (lbl_1_bss_74 == 1) { + spC8[0]->unk34 = spC8[1]->unk34 = 6; + spC8[0]->unk38 = spC8[1]->unk38 = 0; + } + var_r20 = 0; + for (i = 0; i < 20; i++) { + var_r20 += (lbl_1_bss_16C[i].unk10 == 0.0f); + } + if (var_r20 >= 20) { + lbl_1_bss_78 = 2; + lbl_1_bss_74 = 0; + } + break; + case 2: + lbl_1_bss_74++; + if (lbl_1_bss_74 >= 30) { + lbl_1_bss_78 = 0; + lbl_1_bss_74 = 0; + for (i = 0; i < 20; i++) { + lbl_1_bss_16C[i].unk18 = 3; + lbl_1_bss_16C[i].unk1C = 0; + } + if (lbl_1_bss_9C[8].unk00 < 3) { + lbl_1_bss_9C[8].unk04[lbl_1_bss_9C[8].unk00] = 0.0f; + lbl_1_bss_9C[8].unk00++; + } + } + break; + case 3: + lbl_1_bss_74++; + if (lbl_1_bss_74 == 1) { + s32 var_r27 = 0; + s32 sp170[20] = { 0 }; + + for (var_r27 = 0; var_r27 < 20; var_r27++) { + temp_r23 = &Hu3DData[arg0->model[var_r27 + 7]]; + temp_r22 = &Hu3DData[arg0->model[var_r27 + 27]]; + do { + do { + var_r25 = rand8(); + } while (var_r25 >= 240); + } while (sp170[var_r25 % 20] != 0); + sp170[var_r25 % 20] = 1; + lbl_1_bss_16C[var_r27].unk00 = (var_r25 % 20) % 5; + lbl_1_bss_16C[var_r27].unk04 = ((var_r25 % 20) / 5) % 4; + temp_r23->pos.x = temp_r22->pos.x = 100.0 + 200.0 * (lbl_1_bss_16C[var_r27].unk00 - 2.5); + temp_r23->pos.z = temp_r22->pos.z = 100.0 + 200.0 * (lbl_1_bss_16C[var_r27].unk04 - 2.0); + } + } + if (lbl_1_bss_74 >= 10) { + lbl_1_bss_78 = 4; + lbl_1_bss_74 = 0; + lbl_1_data_170[0] = 1; + } + break; + case 4: + if (lbl_1_bss_74 == 0 && lbl_1_bss_9C[0].unk00 < 3) { + lbl_1_bss_9C[0].unk04[lbl_1_bss_9C[0].unk00] = 0.0f; + lbl_1_bss_9C[0].unk00++; + } + lbl_1_bss_74++; + if (lbl_1_bss_74 % 4 == 1) { + spB0 = 10000.0f; + var_r24 = -1; + var_r19 = 0; + for (i = 0; i < 20; i++) { + var_r19 = (lbl_1_bss_16C[i].unk18 == 6 || !(lbl_1_bss_16C[i].unk00 == 0 && lbl_1_bss_16C[i].unk04 == 0)) ? 1 : var_r19; + if (lbl_1_bss_16C[i].unk18 != 6 && (lbl_1_bss_16C[i].unk00 != 0 || lbl_1_bss_16C[i].unk04 != 0)) { + temp_f20 = lbl_1_bss_16C[i].unk00 * lbl_1_bss_16C[i].unk00 + lbl_1_bss_16C[i].unk04 * lbl_1_bss_16C[i].unk04; + spAC = sqrtf(temp_f20) + (rand8() / 256.0) * 0.01; + if (spB0 > spAC) { + var_r24 = i; + spB0 = spAC; + } + } + } + if (var_r24 != -1) { + lbl_1_bss_16C[var_r24].unk18 = 6; + lbl_1_bss_16C[var_r24].unk1C = 0; + lbl_1_data_170[0]++; + lbl_1_bss_16C[var_r24].unk08 = lbl_1_data_170[0] - 1; + } + if (var_r19 == 0) { + lbl_1_bss_78 = 5; + lbl_1_bss_74 = 0; + } + } + break; + case 5: + lbl_1_bss_74++; + if (lbl_1_bss_74 == 5 && lbl_1_bss_9C[1].unk00 < 3) { + lbl_1_bss_9C[1].unk04[lbl_1_bss_9C[1].unk00] = 0.0f; + lbl_1_bss_9C[1].unk00++; + } + if (lbl_1_bss_74 == 5) { + s32 sp120[20] = { 0 }; + + for (i = 0; i < 20; i++) { + lbl_1_bss_16C[i].unk18 = 7; + lbl_1_bss_16C[i].unk1C = (19 - lbl_1_bss_16C[i].unk08) * 3; + do { + temp_r21 = rand8() % 20; + } while (sp120[temp_r21] != 0); + sp120[temp_r21] = 1; + lbl_1_bss_16C[i].unk00 = temp_r21 % 5; + lbl_1_bss_16C[i].unk04 = temp_r21 / 5; + } + } + if (lbl_1_bss_74 == 115 && lbl_1_data_1A0 != -1) { + HuAudSeqFadeOut(lbl_1_data_1A0, 1000); + lbl_1_data_1A0 = -1; + } + if (lbl_1_bss_74 == 145) { + lbl_1_bss_84++; + } + break; + } + for (i = 0; i < 20; i++) { + temp_r29 = &Hu3DData[arg0->model[i + 7]]; + temp_r26 = &Hu3DData[arg0->model[i + 27]]; + var_f18 = temp_r29->pos.x; + var_f31 = temp_r29->pos.y; + spA8 = temp_r29->pos.z; + var_f23 = temp_r29->rot.x; + spA4 = temp_r29->rot.y; + temp_r31 = &lbl_1_bss_16C[i]; + switch (lbl_1_bss_16C[i].unk18) { + case 2: + temp_r31->unk1C++; + temp_r31->unk08 -= (temp_r31->unk08 > 0); + var_f23 = 180.0f; + if (temp_r31->unk08 == 0) { + if (var_f31 > 0.0f && var_f31 + temp_r31->unk10 <= 0.0f && lbl_1_bss_9C[7].unk00 < 3) { + lbl_1_bss_9C[7].unk04[lbl_1_bss_9C[7].unk00] = 0.0f; + lbl_1_bss_9C[7].unk00++; + } + var_f31 += temp_r31->unk10; + } + if (var_f31 < 150.0 * sind(ABS(var_f23))) { + temp_r31->unk10 = 0.0f; + var_f31 = 150.0 * sind(ABS(var_f23)); + } + break; + case 3: + temp_r31->unk1C++; + var_f31 = 2.0 * (temp_r31->unk1C / 35.0) - 1.0; + var_f31 = 1.0f - var_f31 * var_f31; + var_f31 *= 200.0f; + var_f23 = 180.0 + 360.0 * (temp_r31->unk1C / 35.0) * 0.5; + if (temp_r31->unk1C >= 35) { + var_f31 = 0.0f; + temp_r31->unk18 = 4; + temp_r31->unk1C = 0; + } + break; + case 4: + temp_r31->unk1C++; + var_f23 = 0.0f; + if (lbl_1_bss_16C->unk18 == 4) { + temp_r31->unk1C = lbl_1_bss_16C->unk1C; + } + if (temp_r31->unk1C > 120) { + temp_r31->unk18++; + temp_r31->unk1C = 0; + } + break; + case 5: + if (i == 0 && temp_r31->unk1C == 0 && lbl_1_bss_9C[9].unk00 < 3) { + lbl_1_bss_9C[9].unk04[lbl_1_bss_9C[9].unk00] = 0.0f; + lbl_1_bss_9C[9].unk00++; + } + temp_r31->unk1C++; + var_f31 = 2.0 * (temp_r31->unk1C / 45.0) - 1.0; + var_f31 = 1.0f - var_f31 * var_f31; + var_f31 *= 200.0f; + var_f23 = 360.0 * (temp_r31->unk1C / 45.0) * 1.5; + if (temp_r31->unk1C >= 45) { + var_f31 = 0.0f; + lbl_1_bss_78 = 3; + lbl_1_bss_74 = 0; + temp_r31->unk18 = 0; + temp_r31->unk1C = 0; + } + break; + case 6: + temp_r31->unk1C++; + spA0 = 20.0f; + temp_f30 = 100.0 + 200.0 * (temp_r31->unk00 - 2.5); + temp_f29 = 100.0 + 200.0 * (temp_r31->unk04 - 2.0); + var_f28 = -400.0f; + var_f27 = -300.0f; + sp9C = sqrtf((temp_f30 - var_f28) * (temp_f30 - var_f28) + (temp_f29 - var_f27) * (temp_f29 - var_f27)); + temp_f19 = sp9C / spA0; + temp_f26 = temp_r31->unk1C * spA0; + temp_f26 = (temp_f26 >= sp9C) ? 1.0f : (temp_f26 / sp9C); + temp_f26 = 0.75 * temp_f26 + 0.25 * (1.0f - (1.0f - temp_f26) * (1.0f - temp_f26)); + sp98 = 1.0f - temp_f26; + var_f18 = temp_f30 * sp98 + var_f28 * temp_f26; + spA8 = temp_f29 * sp98 + var_f27 * temp_f26; + var_f31 = (temp_r31->unk08 * 10 < temp_r31->unk1C * spA0) ? temp_r31->unk08 * 10 : temp_r31->unk1C * spA0; + temp_f19 = 4.0f * (temp_r31->unk1C / temp_f19) - 2.0f; + temp_f19 = 4.0f - temp_f19 * temp_f19; + var_f31 = temp_f19 / 4.0 * temp_f26 * 0.5 * (temp_r31->unk08 * 10 + 100) + temp_f26 * temp_r31->unk08 * 10.0f; + if (temp_f26 >= 1.0f) { + temp_r31->unk18 = 0; + temp_r31->unk1C = 0; + temp_r31->unk00 = 0; + temp_r31->unk04 = 0; + var_f31 = temp_r31->unk08 * 10; + } + break; + case 7: + temp_r31->unk1C++; + if (temp_r31->unk1C == 60 && i != 0) { + lbl_1_data_170[0]--; + } + if (temp_r31->unk1C >= 60) { + sp94 = 100.0 + 200.0 * (temp_r31->unk00 - 2.5); + sp90 = 100.0 + 200.0 * (temp_r31->unk04 - 2.0); + sp8C = -400.0f; + sp88 = -300.0f; + temp_f21 = (temp_r31->unk1C - 60) / 50.0; + // Cast required to match. + temp_f21 = (double)(1.0f - (1.0f - temp_f21) * (1.0f - temp_f21)); + sp84 = 1.0f - temp_f21; + var_f18 = sp8C * sp84 + sp94 * temp_f21; + spA8 = sp88 * sp84 + sp90 * temp_f21; + var_f31 = temp_r31->unk08 * 10 * sp84; + if (temp_f21 >= 1.0f) { + temp_r31->unk18 = 0; + temp_r31->unk1C = 0; + temp_r31->unk08 = 0; + lbl_1_data_170[0] = 0; + } + } + break; + case 8: + if (temp_r31->unk1C == 0) { + if (lbl_1_bss_9C[(temp_r31->unk20 > 0) ? 3 : 4].unk00 < 3) { + lbl_1_bss_9C[(temp_r31->unk20 > 0) ? 3 : 4].unk04[lbl_1_bss_9C[(temp_r31->unk20 > 0) ? 3 : 4].unk00] = 0.0f; + lbl_1_bss_9C[(temp_r31->unk20 > 0) ? 3 : 4].unk00++; + } + } + temp_r31->unk1C++; + var_f31 = 2.0 * (temp_r31->unk1C / 75.0) - 1.0; + var_f31 = 1.0f - var_f31 * var_f31; + var_f31 *= 400.0f; + var_f23 = 360.0 * (temp_r31->unk1C / 75.0) * 3.0; + if (temp_r31->unk1C == 1) { + Hu3DParticleCntSet(lbl_1_bss_88->model[5], 0); + } + sp80 = 100.0 + 200.0 * (temp_r31->unk00 - 2.5); + sp7C = 100.0 + 200.0 * (temp_r31->unk04 - 2.0); + sp78 = (temp_r31->unk0C == 0) ? -640.0 : 640.0; + sp74 = (temp_r31->unk0C == 0) ? 0.0 : 0.0; + sp70 = temp_r31->unk1C / 75.0; + sp6C = 1.0f - sp70; + var_f31 += sp70 * (lbl_1_data_170[temp_r31->unk0C] * 10 + 33); + var_f18 = sp80 * sp6C + sp78 * sp70; + spA8 = sp7C * sp6C + sp74 * sp70; + lbl_1_data_1DC[0] = var_f18; + lbl_1_data_1DC[1] = var_f31; + lbl_1_data_1DC[2] = spA8; + if (temp_r31->unk1C >= 75) { + var_f31 = lbl_1_data_170[temp_r31->unk0C] * 10 + 33; + lbl_1_data_170[temp_r31->unk0C]++; + lbl_1_data_1A4[temp_r31->unk0C] += temp_r31->unk20; + lbl_1_data_1AC[temp_r31->unk0C] = temp_r31->unk20; + lbl_1_data_1B4[temp_r31->unk0C] = 0; + lbl_1_data_1A4[temp_r31->unk0C] = (lbl_1_data_1A4[temp_r31->unk0C] < 0) ? 0 : lbl_1_data_1A4[temp_r31->unk0C]; + spC8[temp_r31->unk0C]->unk34 = 5; + spC8[temp_r31->unk0C]->unk38 = 0; + temp_r31->unk18 = 9; + temp_r31->unk1C = 0; + if (lbl_1_bss_9C[(temp_r31->unk20) > 0 ? 5 : 6].unk00 < 3) { + lbl_1_bss_9C[(temp_r31->unk20) > 0 ? 5 : 6].unk04[lbl_1_bss_9C[(temp_r31->unk20) > 0 ? 5 : 6].unk00] = 0.0f; + lbl_1_bss_9C[(temp_r31->unk20) > 0 ? 5 : 6].unk00++; + } + if (lbl_1_data_1A4[temp_r31->unk0C] >= 50 || lbl_1_data_170[0] + lbl_1_data_170[1] >= 20) { + lbl_1_bss_68 = (lbl_1_data_1A4[temp_r31->unk0C] >= 50) ? temp_r31->unk0C + : (lbl_1_data_1A4[0] > lbl_1_data_1A4[1]) ? 0 + : (lbl_1_data_1A4[0] < lbl_1_data_1A4[1]) ? 1 + : 4; + spC8[1 - temp_r31->unk0C]->unk34 = 7; + spC8[1 - temp_r31->unk0C]->unk38 = 0; + } + } + break; + } + temp_r29->pos.x = temp_r26->pos.x = var_f18; + temp_r29->pos.y = var_f31; + temp_r29->pos.z = temp_r26->pos.z = spA8; + temp_r29->rot.x = temp_r26->rot.x = var_f23; + temp_r29->rot.y = spA4; + if (temp_r29->pos.y <= 0.0f || temp_r31->unk18 == 9) { + Hu3DModelAttrSet(arg0->model[i + 7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[i + 27], HU3D_ATTR_DISPOFF); + temp_r26->pos.y = (temp_r31->unk18 != 9) ? 0.0f : temp_r29->pos.y; + } + else { + Hu3DModelAttrReset(arg0->model[i + 7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[i + 27], HU3D_ATTR_DISPOFF); + } + } + { + s32 var_r18 = lbl_1_data_25C; + float spD0[][4] = { { 2500.0f, 0.0f, -100.0f, -40.0f }, { 2775.0f, 314.0f, -100.0f, -38.75f }, { 875.0f, 116.0f, -100.0f, -15.0f }, + { 1625.0f, -416.0f, -340.0f, -30.25f }, { 875.0f, 116.0f, -100.0f, -30.0f } }; + + if (lbl_1_data_25C == -1) { + lbl_1_data_25C = 1; + lbl_1_bss_34 = 0; + lbl_1_bss_38 = 0.0f; + } + if (lbl_1_bss_80 == 1003 && lbl_1_bss_84 == 1) { + lbl_1_data_25C = 2; + lbl_1_bss_34 = 0; + lbl_1_bss_38 = 0.0f; + } + if (lbl_1_bss_80 == 1004 && lbl_1_data_25C != 0) { + lbl_1_data_25C = 0; + lbl_1_bss_34 = 1; + lbl_1_bss_38 = 0.0f; + } + if (lbl_1_bss_80 == 1007 && lbl_1_bss_84 == 1) { + lbl_1_data_25C = 3; + lbl_1_bss_34 = 0; + lbl_1_bss_38 = 0.0f; + } + if (var_r18 != lbl_1_data_25C && var_r18 != -1) { + lbl_1_data_260 = CZoom; + lbl_1_data_264 = Center.y; + lbl_1_data_268 = Center.z; + lbl_1_data_26C = CRot.x; + } + if (lbl_1_bss_38 < 1.0f) { + if (lbl_1_bss_34 == 0) { + lbl_1_bss_38 = 1.0 - 0.95 * (1.0f - lbl_1_bss_38); + var_f22 = lbl_1_bss_38; + } + else { + lbl_1_bss_38 += 0.011111111111111112; + lbl_1_bss_38 = (lbl_1_bss_38 > 1.0f) ? 1.0f : lbl_1_bss_38; + var_f22 = 0.5 + -0.5 * cosd(180.0f * lbl_1_bss_38); + } + lbl_1_bss_38 = (lbl_1_bss_38 > 1.0f) ? 1.0f : lbl_1_bss_38; + CZoom = var_f22 * spD0[lbl_1_data_25C][0] + lbl_1_data_260 * (1.0f - var_f22); + Center.y = var_f22 * spD0[lbl_1_data_25C][1] + lbl_1_data_264 * (1.0f - var_f22); + Center.z = var_f22 * spD0[lbl_1_data_25C][2] + lbl_1_data_268 * (1.0f - var_f22); + CRot.x = var_f22 * spD0[lbl_1_data_25C][3] + lbl_1_data_26C * (1.0f - var_f22); + } + } +} + +const s32 lbl_1_rodata_408[] = { MAKE_MESSID(43, 3), MAKE_MESSID(43, 4), MAKE_MESSID(43, 5), MAKE_MESSID(43, 6), MAKE_MESSID(43, 7), + MAKE_MESSID(43, 8), MAKE_MESSID(43, 9), MAKE_MESSID(43, 10), 0 }; + +void fn_1_6DAC(void) +{ + UnkM448Struct_00 *sp8[2]; + s16 var_r29; + s16 temp_r31; + u32 temp_r26; + s32 i; + + var_r29 = 0; + for (i = 0; i < 2; i++) { + sp8[i] = lbl_1_bss_8C[i]->data; + } + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + HuWinComKeyReset(); + temp_r31 = HuWinExCreateStyled(-10000.0f, 60.0f, 280, 120, -1, 1); + HuWinExAnimIn(temp_r31); + HuWinBGTPLvlSet(temp_r31, 0.8f); + HuWinMesSpeedSet(temp_r31, 1); + HuWinDisablePlayerSet( + temp_r31, 0xF & ((sp8[0]->unk0C != -1) ? ~(1 << sp8[0]->unk0C) : 0xF) & ((sp8[1]->unk0C != -1) ? ~(1 << sp8[1]->unk0C) : 0xF)); + HuWinMesColSet(temp_r31, 0); + HuWinMesSet(temp_r31, MAKE_MESSID(43, 1)); + if (((sp8[0]->unk0C == -1) || (sp8[0]->unk08 == -1)) && ((sp8[1]->unk0C == -1) || (sp8[1]->unk08 == -1))) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(temp_r31); + if (sp8[0]->unk0C != -1 || sp8[1]->unk0C != -1) { + HuWinMesColSet(temp_r31, 0); + HuWinMesSet(temp_r31, MAKE_MESSID(43, 2)); + if (sp8[0]->unk0C == -1 && sp8[1]->unk0C == -1) { + HuPrcSleep(60); + var_r29 = 1; + } + else { + var_r29 = HuWinChoiceGet(temp_r31, 0); + } + } + else { + var_r29 = 1; + } + if (var_r29 == 0) { + i = 0; + while ((temp_r26 = lbl_1_rodata_408[i++]) != 0) { + HuWinMesColSet(temp_r31, 0); + HuWinMesSet(temp_r31, temp_r26); + if ((sp8[0]->unk0C == -1 || sp8[0]->unk08 == -1) && (sp8[1]->unk0C == -1 || sp8[1]->unk08 == -1)) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(temp_r31); + } + } + else { + HuWinMesColSet(temp_r31, 0); + HuWinMesSet(temp_r31, MAKE_MESSID(43, 10)); + if ((sp8[0]->unk0C == -1 || sp8[0]->unk08 == -1) && (sp8[1]->unk0C == -1 || sp8[1]->unk08 == -1)) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(temp_r31); + } + HuWinExAnimOut(temp_r31); + HuWinExCleanup(temp_r31); + lbl_1_bss_10 = 0; + HuPrcEnd(); +} + +void fn_1_7148(omObjData *arg0) +{ + float temp_f31; + UnkM448Struct_00 *spC[2]; + s32 sp8; + s32 i; + + for (i = 0; i < 13; i++) { + s32 sp14[] = { 0x0000078E, 0x0000078F, 0x00000790, 0x00000791, 0x00000792, 0x00000793, 0x00000794, 0x00000795, 0x00000796, 0x00000797, + 0x00000798, 0x00000799, 0x0000079A }; + + if (lbl_1_bss_9C[i].unk00 > 3) { + lbl_1_bss_9C[i].unk00 = 3; + } + if (lbl_1_bss_9C[i].unk00 > 0) { + sp8 = HuAudFXPlay(sp14[i]); + lbl_1_bss_9C[i].unk00--; + } + } + for (i = 0; i < 2; i++) { + spC[i] = lbl_1_bss_8C[i]->data; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9B00; + } + switch (lbl_1_bss_80) { + case 1000: + if (WipeStatGet() == 0) { + lbl_1_bss_80++; + lbl_1_bss_84 = 0; + } + break; + case 1001: + lbl_1_bss_84++; + if (lbl_1_bss_84 == 1) { + Hu3DModelAttrReset(lbl_1_bss_88->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_88->model[2], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_84 > 0 && lbl_1_bss_84 <= 40 && lbl_1_bss_84 % 10 == 0 && lbl_1_bss_9C[12].unk00 < 3) { + lbl_1_bss_9C[12].unk04[lbl_1_bss_9C[12].unk00] = 0.0f; + lbl_1_bss_9C[12].unk00++; + } + if (lbl_1_bss_84 == 50 && lbl_1_bss_9C[10].unk00 < 3) { + lbl_1_bss_9C[10].unk04[lbl_1_bss_9C[10].unk00] = 0.0f; + lbl_1_bss_9C[10].unk00++; + } + if (lbl_1_bss_84 == 200 && lbl_1_bss_9C[11].unk00 < 3) { + lbl_1_bss_9C[11].unk04[lbl_1_bss_9C[11].unk00] = 0.0f; + lbl_1_bss_9C[11].unk00++; + } + if (lbl_1_bss_84 >= 210) { + temp_f31 = (lbl_1_bss_84 - 210) / 30.0; + Hu3DModelAmbSet(lbl_1_bss_8C[0]->model[0], temp_f31, temp_f31, temp_f31); + Hu3DModelAmbSet(lbl_1_bss_8C[1]->model[0], temp_f31, temp_f31, temp_f31); + } + if (lbl_1_bss_84 > 240) { + lbl_1_bss_80++; + lbl_1_bss_84 = 0; + Hu3DModelAttrSet(lbl_1_bss_88->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_88->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_88->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAmbSet(lbl_1_bss_8C[0]->model[0], 1.0f, 1.0f, 1.0f); + Hu3DModelAmbSet(lbl_1_bss_8C[1]->model[0], 1.0f, 1.0f, 1.0f); + } + break; + case 1002: + lbl_1_bss_84++; + if (lbl_1_bss_84 > 60) { + lbl_1_bss_80++; + if (spC[0]->unk08 != -1 && spC[1]->unk08 != -1) { + lbl_1_bss_80++; + } + lbl_1_bss_7C = 0; + lbl_1_bss_84 = 0; + if (lbl_1_data_1A0 == -1) { + lbl_1_data_1A0 = HuAudSeqPlay(0x3D); + } + } + break; + case 1003: + lbl_1_bss_84++; + if (lbl_1_bss_84 == 1) { + HuPrcChildCreate(fn_1_6DAC, 100, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_10 = 1; + } + else if (lbl_1_bss_10 == 0) { + lbl_1_bss_80++; + lbl_1_bss_84 = 0; + } + break; + case 1004: + lbl_1_bss_84 += (lbl_1_bss_84 >= 2); + if (lbl_1_bss_84 == 5 && lbl_1_data_198 < 0) { + lbl_1_data_198 = MGSeqCreate(3, 0); + } + if (lbl_1_bss_84 >= 5 && lbl_1_data_1A0 == -1 && (MGSeqStatGet(lbl_1_data_198) & 0x10)) { + lbl_1_data_1A0 = HuAudSeqPlay(0x3E); + } + if (lbl_1_bss_84 >= 5 && MGSeqStatGet(lbl_1_data_198) == 0 && lbl_1_data_198 >= 0) { + lbl_1_bss_80++; + lbl_1_data_198 = -1; + lbl_1_bss_84 = 0; + } + break; + case 1005: + lbl_1_bss_84++; + if (lbl_1_data_19A != -1) { + MGSeqParamSet(lbl_1_data_19A, 1, ((lbl_1_bss_0 < 0 ? 0 : lbl_1_bss_0) + REFRESH_RATE - 1) / REFRESH_RATE); + lbl_1_bss_0--; + if (lbl_1_bss_0 <= -30) { + MGSeqParamSet(lbl_1_data_19A, 2, -1); + lbl_1_data_19A = -1; + } + } + if (lbl_1_bss_68 != -1) { + lbl_1_bss_80 = 1006; + lbl_1_bss_84 = 0; + } + break; + case 1006: + lbl_1_bss_84++; + if (lbl_1_data_198 < 0 && lbl_1_bss_84 == 1) { + if (lbl_1_data_19A != -1) { + MGSeqParamSet(lbl_1_data_19A, 2, -1); + } + if (lbl_1_data_19C != -1) { + MGSeqParamSet(lbl_1_data_19C, 2, -1); + } + lbl_1_data_198 = MGSeqCreate(3, 1); + if (lbl_1_data_1A0 == -1) { + break; + } + HuAudSeqFadeOut(lbl_1_data_1A0, 100); + lbl_1_data_1A0 = -1; + } + else if (MGSeqStatGet(lbl_1_data_198) == 0) { + lbl_1_bss_80++; + lbl_1_bss_84 = 0; + } + break; + case 1007: + lbl_1_bss_84++; + if (lbl_1_bss_84 == 1) { + if (lbl_1_bss_68 != 4) { + if (spC[lbl_1_bss_68]->unk08 != -1) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(3); + } + GWPlayerCoinWinSet(spC[lbl_1_bss_68]->unk04, 10); + } + else if (lbl_1_bss_68 == 4) { + HuAudSStreamPlay(4); + } + } + if (210.0f < lbl_1_bss_84) { + lbl_1_data_198 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9B00; + } + break; + } +} + +void fn_1_7DC4(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s16 i; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00 = i * 2 + 100; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (var_r31->unk00 == 100) { + var_r31->unk00 = (lbl_1_data_1DC[0] == 0.0f && lbl_1_data_1DC[1] == 0.0f && lbl_1_data_1DC[2] == 0.0f) ? 0 : var_r31->unk00; + var_r31->unk34.x = lbl_1_data_1DC[0] + 75.0 * (rand8() / 255.0); + var_r31->unk34.y = lbl_1_data_1DC[1] + 75.0 * (rand8() / 255.0); + var_r31->unk34.z = lbl_1_data_1DC[2] + 75.0 * (rand8() / 255.0); + var_r31->unk40.r = 0xFF; + var_r31->unk40.g = 0xF0; + var_r31->unk40.b = 0xA0; + var_r31->unk40.a = 0xFF; + var_r31->unk30 = 0.785f; + var_r31->unk2C = 40.0f; + } + if (var_r31->unk00 <= 100) { + var_r31->unk34.y -= 3.0f; + var_r31->unk2C = ((var_r31->unk00 > 50) ? (var_r31->unk00 - 50) / 50.0 : 0.0) * (rand8() * 80 / 255.0); + } + if (var_r31->unk00 == 0) { + var_r31->unk2C = 0.0f; + } + var_r31->unk00 -= (var_r31->unk00 > 0); + } +} + +void fn_1_81C0(omObjData *arg0) +{ + UnkM448Struct_00 *temp_r26; + UnkM448Struct_00 *temp_r23; + s32 temp_r29; + s32 temp_r25; + s32 i, j, k; + s32 var_r27; + + memset(lbl_1_bss_16C, 0, sizeof(lbl_1_bss_16C)); + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M448, 0)); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(arg0->model[0], 0); + Hu3DMotionTimeSet(arg0->model[0], 20.0f); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + arg0->model[6] = Hu3DHookFuncCreate(fn_1_4FC); + Hu3DModelLayerSet(arg0->model[6], 6); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M448, 1)); + Hu3DModelShadowMapSet(arg0->model[1]); + Hu3DModelLayerSet(arg0->model[1], 0); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_PAUSE); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M448, 2)); + Hu3DModelShadowMapSet(arg0->model[2]); + Hu3DModelLayerSet(arg0->model[2], 0); + Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_PAUSE); + { + s32 sp9C[] = { DATA_MAKE_NUM(DATADIR_M448, 9), DATA_MAKE_NUM(DATADIR_M448, 10), DATA_MAKE_NUM(DATADIR_M448, 11), + DATA_MAKE_NUM(DATADIR_M448, 12), DATA_MAKE_NUM(DATADIR_M448, 13), DATA_MAKE_NUM(DATADIR_M448, 14), DATA_MAKE_NUM(DATADIR_M448, 16), + DATA_MAKE_NUM(DATADIR_M448, 15), DATA_MAKE_NUM(DATADIR_M448, 17) }; + + for (i = 0; i < 2; i++) { + temp_r26 = lbl_1_bss_8C[i]->data; + arg0->model[i + 3] = Hu3DModelCreateFile(sp9C[(temp_r26->unk08 == -1) ? 8 : temp_r26->unk08]); + Hu3DModelShadowMapSet(arg0->model[i + 3]); + Hu3DModelLayerSet(arg0->model[i + 3], 0); + Hu3DModelRotSet(arg0->model[i + 3], 0.0f, (temp_r26->unk08 == -1) ? (1 - i) * 180 : i * 180, 0.0f); + } + } + { + s32 sp110[] = { -10, -5, -5, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 20, 20 }; + s32 spC0[] = { 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5 }; + s32 sp34[] = { DATA_MAKE_NUM(DATADIR_M448, 3), DATA_MAKE_NUM(DATADIR_M448, 4), DATA_MAKE_NUM(DATADIR_M448, 5), DATA_MAKE_NUM(DATADIR_M448, 6), + DATA_MAKE_NUM(DATADIR_M448, 7), DATA_MAKE_NUM(DATADIR_M448, 8) }; + s32 sp1C[] = { -1, -1, -1, -1, -1, -1 }; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 5; j++) { + temp_r29 = j + i * 5; + lbl_1_bss_16C[temp_r29].unk00 = j; + lbl_1_bss_16C[temp_r29].unk04 = i; + lbl_1_bss_16C[temp_r29].unk08 = 0; + lbl_1_bss_16C[temp_r29].unk0C = -1; + lbl_1_bss_16C[temp_r29].unk18 = 1; + temp_r25 = 19 - temp_r29; + lbl_1_bss_16C[temp_r29].unk20 = sp110[temp_r25]; + sp110[temp_r25] = 0; + lbl_1_bss_16C[temp_r29].unk1C = 0; + for (k = 0; k < 2; k++) { + var_r27 = (k == 0) ? 7 : 27; + if (sp1C[spC0[temp_r25]] == -1) { + if (k == 1) { + sp1C[spC0[temp_r25]] = temp_r29; + } + arg0->model[var_r27 + temp_r29] = Hu3DModelCreateFile(sp34[spC0[temp_r25]]); + } + else { + arg0->model[var_r27 + temp_r29] = Hu3DModelLink(arg0->model[var_r27 + sp1C[spC0[temp_r25]]]); + } + Hu3DModelPosSet(arg0->model[var_r27 + temp_r29], 100.0 + 200.0 * (lbl_1_bss_16C[temp_r29].unk00 - 2.5), (k == 0) ? 4000 : 0, + 100.0 + 200.0 * (lbl_1_bss_16C[temp_r29].unk04 - 2.0)); + if (k == 0) { + Hu3DModelShadowSet(arg0->model[var_r27 + temp_r29]); + } + else { + Hu3DModelAttrSet(arg0->model[var_r27 + temp_r29], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(arg0->model[var_r27 + temp_r29]); + } + } + } + } + } + arg0->model[5] = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M448, 30), MEMORY_DEFAULT_NUM)), 70); + Hu3DModelPosSet(arg0->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[5], 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(arg0->model[5], 3); + Hu3DModelAttrReset(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DParticleColSet(arg0->model[5], 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(arg0->model[5], 1.0f); + Hu3DParticleHookSet(arg0->model[5], fn_1_7DC4); + Hu3DParticleCntSet(arg0->model[5], 0); + Hu3DParticleBlendModeSet(arg0->model[5], 1); + for (i = 0; i < 10; i++) { + s32 sp14[] = { 100, 485 }; + s32 sp74[] = { 0, 0, 16, -4, -36, 0, 0, 16, -4, -36 }; + s32 sp4C[] = { 0, 0, 2, 2, -2, 0, 0, 2, 2, -2 }; + + if (lbl_1_data_0[i] == DATADIR_MGCONST) { + temp_r23 = lbl_1_bss_8C[i == 4 ? 0 : (i == 9 ? 1 : 0)]->data; + lbl_1_data_28[i] + = espEntry((temp_r23->unk08 == -1) ? DATA_MAKE_NUM(DATADIR_M448, 29) : DATA_MAKE_NUM(lbl_1_data_0[i], temp_r23->unk08), 0, 0); + } + else { + lbl_1_data_28[i] = espEntry(lbl_1_data_0[i], 0, 0); + } + espDrawNoSet(lbl_1_data_28[i], 0); + espAttrSet(lbl_1_data_28[i], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_data_28[i], 0); + espPriSet(lbl_1_data_28[i], 128 - i); + espPosSet(lbl_1_data_28[i], sp74[i] + sp14[i < 5 ? 0 : 1], sp4C[i] + 70); + if (((i >= 5) ? i - 5 : i) != 0) { + (void)1; // Required to match. + } + else { + espTPLvlSet(lbl_1_data_28[i], 0.5f); + espColorSet(lbl_1_data_28[i], 0, 0, 0); + } + } + arg0->func = fn_1_4310; +} + +void fn_1_8DD0(omObjData *arg0) +{ + s32 var_r28; + s32 var_r27; + UnkM448Struct_00 *temp_r31; + UnkM448Struct_00 *sp30; + s32 var_r26; + s32 i; + + var_r28 = -1; + var_r27 = -1; + temp_r31 = arg0->data; + sp30 = lbl_1_bss_8C[1 - arg0->work[0]]->data; + memset(temp_r31, 0, sizeof(*temp_r31)); + temp_r31->unk00 = arg0->work[0]; + if (GWPlayerCfg->character == 14 || GWPlayerCfg[1].character == 14 || GWPlayerCfg[2].character == 14 || GWPlayerCfg[3].character == 14) { + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == 14) { + var_r28 = i; + } + } + var_r27 = (GWPlayerCfg[var_r28].group == 0) ? 1 : 0; + if (temp_r31->unk00 == 0) { + temp_r31->unk04 = var_r27; + var_r26 = var_r28; + } + else { + temp_r31->unk04 = var_r28; + var_r26 = var_r27; + } + } + else { + temp_r31->unk04 = (GWPlayerCfg[0].group == temp_r31->unk00) ? 0 + : GWPlayerCfg[1].group == temp_r31->unk00 ? 1 + : GWPlayerCfg[2].group == temp_r31->unk00 ? 2 + : GWPlayerCfg[3].group == temp_r31->unk00 ? 3 + : 4; + var_r26 = (GWPlayerCfg[0].group == 1 - temp_r31->unk00) ? 0 + : (GWPlayerCfg[1].group == 1 - temp_r31->unk00) ? 1 + : (GWPlayerCfg[2].group == 1 - temp_r31->unk00) ? 2 + : (GWPlayerCfg[3].group == 1 - temp_r31->unk00) ? 3 + : 4; + } + if (temp_r31->unk04 == 4) { + OSReport("m448:wrong player group\n"); + temp_r31->unk04 = temp_r31->unk00; + } + temp_r31->unk08 = (var_r28 != -1 && temp_r31->unk00 == 1) ? -1 : GWPlayerCfg[temp_r31->unk04].character; + temp_r31->unk0C = (temp_r31->unk08 == -1 || GWPlayerCfg[temp_r31->unk04].iscom) ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx; + temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff; + temp_r31->unk34 = 0; + if (temp_r31->unk08 != -1) { + arg0->model[0] = CharModelCreate(temp_r31->unk08, 2); + } + else { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M448, 18)); + } + Hu3DModelLayerSet(arg0->model[0], 0); + CharModelLayerSetAll2(1); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAmbSet(arg0->model[0], 0.0f, 0.0f, 0.0f); + for (i = 0; i < 11; i++) { + if (temp_r31->unk08 != -1) { + arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_50[i]); + } + else { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_7C[i]); + } + } + temp_r31->unk20 = (temp_r31->unk08 != -1) ? 0 : 0; + temp_r31->unk24 = -1; + Hu3DMotionSet(arg0->model[0], arg0->motion[temp_r31->unk20]); + if (temp_r31->unk08 != -1) { + Hu3DMotionTimeSet(arg0->model[0], (temp_r31->unk00 == 0) ? 0 : 80); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + } + else { + lbl_1_bss_20 = CharModelEffectNpcInit(arg0->model[0], arg0->motion[2], 1, 14); + lbl_1_bss_24 = CharModelEffectNpcInit(arg0->model[0], arg0->motion[6], 5, 14); + } + arg0->trans.x = lbl_1_data_1BC[temp_r31->unk00][0]; + arg0->trans.y = lbl_1_data_1BC[temp_r31->unk00][1]; + arg0->trans.z = 0.0f; + arg0->rot.y = (temp_r31->unk00 == 0) ? 90 : 270; + arg0->rot.y = (temp_r31->unk08 != -1) ? 0 : (temp_r31->unk00 == 0) ? 90 : 270; + arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f; + arg0->rot.x = arg0->rot.z = 0.0f; + arg0->func = fn_1_1338; +} + +void fn_1_9508(omObjData *arg0) +{ + lbl_1_bss_80 = 1000; + lbl_1_bss_84 = 0; + lbl_1_bss_78 = 0; + lbl_1_bss_74 = 0; + lbl_1_bss_64 = GXGetTexBufferSize(640, 480, GX_TF_RGB565, GX_FALSE, 0); + lbl_1_bss_60 = GXGetTexBufferSize(160, 120, GX_TF_RGB565, GX_FALSE, 0U); + lbl_1_bss_28 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_64, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_28, 0, lbl_1_bss_64); + lbl_1_bss_2C = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_60, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_2C, 0, lbl_1_bss_60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_7148; +} + +void ObjectSetup(void) +{ + omObjData *var_r30; + s32 i; + + OSReport("******* M448 ObjectSetup *********\n"); + lbl_1_bss_70 = omInitObjMan(600, 0x2000); + omGameSysInit(lbl_1_bss_70); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 2500.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -40.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec sp3C = { 0.0f, 10000.0f, 0.0f }; + Vec sp30 = { 0.0f, -1.0f, 0.0f }; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + + lbl_1_bss_6C = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + Hu3DGLightStaticSet(lbl_1_bss_6C, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_6C); + lbl_1_bss_6C = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + Hu3DGLightStaticSet(lbl_1_bss_6C, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_6C); + } + { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = 0.0f; + sp24.y = 10000.0f; + sp24.z = 0.0f; + sp18.x = 0.0f; + sp18.y = 1.0f; + sp18.z = 0.0f; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = 0.5f; + Hu3DShadowCreate(8.0f, 9000.0f, 11500.0f); + Hu3DShadowTPLvlSet(0.75f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + lbl_1_data_198 = -1; + lbl_1_bss_68 = -1; + HuWinInit(1); + lbl_1_bss_88 = omAddObjEx(lbl_1_bss_70, 101, 47, 0, 1, fn_1_81C0); + for (i = 0; i < 2; i++) { + var_r30 = lbl_1_bss_8C[i] = omAddObjEx(lbl_1_bss_70, 100, 1, 11, 0, fn_1_8DD0); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM448Struct_00), MEMORY_DEFAULT_NUM); + var_r30->work[0] = i; + } + lbl_1_bss_94 = omAddObjEx(lbl_1_bss_70, 32730, 0, 0, -1, omOutView); + lbl_1_bss_98 = omAddObjEx(lbl_1_bss_70, 103, 0, 0, -1, fn_1_9508); +} + +void fn_1_9B00(omObjData *arg0) +{ + s32 i; + UnkM448Struct_00 *temp_r30; + + if (WipeStatGet() != 0) { + return; + } + if (lbl_1_bss_28) { + HuMemDirectFree(lbl_1_bss_28); + } + lbl_1_bss_28 = NULL; + if (lbl_1_bss_2C) { + HuMemDirectFree(lbl_1_bss_2C); + } + lbl_1_bss_2C = NULL; + for (i = 0; i < 2; i++) { + temp_r30 = lbl_1_bss_8C[i]->data; + if (temp_r30->unk08 != -1) { + CharModelKill(temp_r30->unk08); + } + } + if (lbl_1_data_198 >= 0) { + MGSeqKill(lbl_1_data_198); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); +} diff --git a/src/REL/m449Dll/main.c b/src/REL/m449Dll/main.c new file mode 100644 index 00000000..02d13d79 --- /dev/null +++ b/src/REL/m449Dll/main.c @@ -0,0 +1,2014 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/pad.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#ifndef __MWERKS__ +#include "game/hsfex.h" +#endif + +s32 rand8(void); + +typedef struct UnkCameraStruct { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; +} UnkCameraStruct; /* size = 0x18 */ + +typedef struct M449DllUnkStruct { + /* 0x00 */ s32 unk_00[4]; + /* 0x10 */ s32 unk_10[4]; +} M449DllUnkStruct; /* size = 0x20 */ + +typedef struct M449DllWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + s32 unk_18; + s32 unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + float unk_3C; + float unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + s32 unk_50; + s32 unk_54; + float unk_58; + float unk_5C; + float unk_60[4]; + float unk_70[4]; + float unk_80[4]; + float unk_90[4]; + float unk_A0[4]; + float unk_B0[4]; + float unk_C0[4]; + float unk_D0[4]; + float unk_E0[4]; + s32 unk_F0[4]; + s32 unk_100[4]; + s32 unk_110[4]; + s32 unk_120[4]; + s32 unk_130[4]; + s32 unk_140[4]; + s32 unk_150[4]; + float unk_160[4]; + float unk_170[4]; + s32 unk_180[4]; + s32 unk_190; + float unk_194[4]; + float unk_1A4[4]; + s32 unk_1B4[4]; + s32 unk_1C4[4]; + char unk1D4[0x30]; + s32 unk_204; + s32 unk_208; + s32 unk_20C; + s32 unk_210; + s32 unk_214; +} M449DllWork; /* size = 0x218 */ + +typedef struct UnkBss64Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ float unk_04[2]; +} UnkBss64Struct; /* size = 0x0C */ + +void fn_1_9A38(omObjData *arg0); + +s32 lbl_1_data_0[0x12] = { + 0x50001A, + 0x500019, + 0x500016, + 0x500016, + 0x500016, + 0x500017, + 0x500017, + 0x500017, + 0x610000, + 0x50001A, + 0x500019, + 0x500016, + 0x500016, + 0x500016, + 0x500017, + 0x500017, + 0x500017, + 0x610000, +}; +s32 lbl_1_data_48[0x12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +s32 lbl_1_data_90[4] + = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0x500000, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x85) }; +s32 lbl_1_data_A0[4] = { 0x50001C, 0x50001E, 0x50001D, 0x50001F }; +u8 lbl_1_data_B0[0x38] = { 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 + +}; +char lbl_1_data_E8[4][20] = { + "m432_00-a00", + "m432_00-b00", + "m432_00-player00", + "m432_00-player01", +}; +char lbl_1_data_138[4][20] = { + "m449_01a-a00", + "m449_01a-a1", + "m449_01a-a2", + "m449_01a-a3", +}; +char lbl_1_data_188[4][20] = { + "m449_01a-b00", + "m449_01a-b1", + "m449_01a-b2", + "m449_01a-b3", +}; +char lbl_1_data_1D8[4][20] = { + "m449_01a-c00", + "m449_01a-c1", + "m449_01a-c2", + "m449_01a-c3", +}; +s16 lbl_1_data_228 = -1; +s16 lbl_1_data_22A = -1; +s32 lbl_1_data_22C = -1; +s32 lbl_1_data_230[3] = { -1, -1, -1 }; +s32 lbl_1_data_23C[0xA] = { + 0, + 1, + 0xC2B40000, + 0, + 0x44034000, + 0x43340000, + 0x42B40000, + 0, + 0x44034000, + 0x43340000, +}; + +UnkBss64Struct lbl_1_bss_64[12]; +omObjData *lbl_1_bss_60; +omObjData *lbl_1_bss_5C; +omObjData *lbl_1_bss_58; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +s32 lbl_1_bss_4C; +s32 lbl_1_bss_48; +s32 lbl_1_bss_44; +s32 lbl_1_bss_40; +s32 lbl_1_bss_3C; +Process *lbl_1_bss_38; +s32 lbl_1_bss_34; +s32 lbl_1_bss_30; +s32 lbl_1_bss_2C; +float lbl_1_bss_28; +float lbl_1_bss_24; +float lbl_1_bss_20; +s32 lbl_1_bss_1C; +float lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +static const s32 lbl_1_rodata_10[4] = { 0x8C, 0x6E, 0x3C, 0 }; + +void fn_1_A0(void) +{ + if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { + Center.x = lbl_1_bss_54->trans.x; + Center.y = lbl_1_bss_54->trans.y; + Center.z = lbl_1_bss_54->trans.z; + } + Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); + Center.y += (30.0 * ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0)); + CZoom += 25.0 * (((HuPadBtn[0] & PAD_BUTTON_X) != 0) - ((HuPadBtn[0] & PAD_BUTTON_Y) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; +} + +void fn_1_3F8(s32 arg0, Mtx sp8) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + + GXLoadPosMtxImm(sp8, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(0); + GXSetZMode(1, GX_LEQUAL, 1); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0x12); + GXPosition3f32(0.0f, 0.0f, 0.0f); + GXColor4u8(0xFF, 0xFF, 0x00, 0xFF); + for (var_r31 = 0; var_r31 < 0x11; var_r31++) { + var_f30 = (var_r30 == 0 ? 1 : -1) * (75.0 * cosd((360.0 * (var_r31 / 16.0)))); + var_f31 = 75.0 * sind((360.0 * (var_r31 / 16.0))); + GXPosition3f32(var_f31, var_r30 * 10, var_f30); + GXColor4u8(0xFF, 0xFF, 0x00, 0xFF); + } + } +} + +void fn_1_758(omObjData *var_r29) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + + M449DllWork *var_r31; + s32 var_r30; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + ModelData *var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + ModelData *var_r19; + s32 var_r18; + s32 var_r17; + + Vec sp3C4[3]; + Vec sp394[4]; + Mtx sp364; + Mtx sp334; + Mtx sp304; + Vec sp2D8; + Vec sp2CC; + Vec sp2C0; + Vec sp2B4; + Vec sp2A8; + void *sp238; + s32 sp234; + s32 sp230; + float sp22C; + float sp228; + float sp224; + s32 sp220; + float sp21C; + float sp218; + s32 sp214; + float sp210; + float sp20C; + float sp208; + s32 sp204; + s32 sp200; + s32 sp1FC; + float sp1F8; + s32 sp1F4; + float sp1F0; + float sp1EC; + float sp1E8; + float sp1E4; + float sp1E0; + float sp1DC; + float sp1D8; + float sp1D4; + float sp1D0; + float sp1CC; + float sp1C8; + float sp1C4; + float sp1C0; + float sp1BC; + float sp1B8; + float sp1B4; + float sp1B0; + float sp1AC; + float sp1A8; + float sp1A4; + float sp1A0; + float sp19C; + float sp198; + float sp194; + float sp190; + float sp18C; + float sp188; + float sp184; + float sp180; + float sp17C; + float sp178; + float sp174; + float sp170; + float sp16C; + float sp168; + float sp164; + s32 sp160; + float sp15C; + float sp158; + s32 sp154; + float sp150; + float sp14C; + float sp148; + float sp144; + float sp140; + float sp13C; + float sp138; + float sp134; + float sp130; + float sp12C; + float sp128; + float sp124; + + { + s32 sp568[4][4][3] = { + { + { 2, 5, 5 }, + { 2, 7, 11 }, + { 0, 4, 7 }, + { 0, 7, 8 }, + }, + { + { 1, 6, 3 }, + { 1, 1, 2 }, + { 8, 2, 3 }, + { 8, 12, 16 }, + }, + { + { 3, 5, 5 }, + { 1, 6, 13 }, + { 1, 3, 4 }, + { 3, 8, 12 }, + }, + { + { 2, 3, 4 }, + { 1, 2, 3 }, + { 0, 1, 3 }, + { 2, 3, 3 }, + }, + }; + s32 sp4A8[4][4][3] = { + { + { 0, 44, 23 }, + { 32, -64, -29 }, + { 0, 52, -60 }, + { 0, -51, 56 }, + }, + { + { -29, 28, -52 }, + { 32, 31, -22 }, + { 0, 20, -49 }, + { 0, 0, 0 }, + }, + { + { 56, 59, -37 }, + { -36, 33, 47 }, + { 27, 39, 28 }, + { 55, -31, 0 }, + }, + { + { -52, -61, 31 }, + { 42, -55, 30 }, + { 0, 22, -24 }, + { -48, 25, 61 }, + }, + }; + + s32 sp3E8[4][4][3] = { + { + { 0, -44, 23 }, + { -32, 64, 29 }, + { 0, -52, -60 }, + { 0, -51, -56 }, + }, + { + { -29, 28, 52 }, + { 32, -31, -22 }, + { 0, 20, 49 }, + { 0, 0, 0 }, + }, + { + { -56, 59, -37 }, + { 36, 33, -47 }, + { -27, 39, -28 }, + { -55, -31, 0 }, + }, + { + { 52, -61, -31 }, + { -42, 55, -30 }, + { 0, -22, -24 }, + { 48, 25, -61 }, + }, + }; + var_r31 = var_r29->data; + sp238 = (&lbl_1_bss_54)[1 - var_r29->work[0]]->data; + var_f29 = 0.0f; + var_f28 = 0.0f; + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00], &sp2D8); + for (var_r30 = 0; var_r30 < (lbl_1_data_230[var_r31->unk_190] == 2 ? 2 : 3); var_r30++) { + Hu3DModelObjPosGet(var_r29->model[var_r31->unk_190 + 4], lbl_1_data_188[var_r30], &sp3C4[var_r30]); + sp3C4[var_r30].x -= sp2D8.x; + sp3C4[var_r30].y -= sp2D8.y; + sp3C4[var_r30].z -= sp2D8.z; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelObjPosGet(var_r29->model[var_r31->unk_190 + 4], lbl_1_data_1D8[var_r30], &sp394[var_r30]); + sp394[var_r30].x -= sp2D8.x; + sp394[var_r30].y -= sp2D8.y; + sp394[var_r30].z -= sp2D8.z; + } + switch (var_r31->unk_4C) { + case 0: + if (lbl_1_bss_48 == 0x3EC) { + var_r31->unk_4C = 1; + var_r31->unk_14 = var_r31->unk_204 % 4; + var_r31->unk_14 = var_r31->unk_1C = var_r31->unk_30 = var_r31->unk_34 = var_r31->unk_38 = 0; + var_r31->unk_18 = -1; + var_r31->unk_3C = var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 0; + var_r31->unk_208 = var_r31->unk_0C == -1 ? 1 : 0; + if (var_r31->unk_0C == -1) { + var_r17 = lbl_1_data_23C[var_r31->unk_00]; + var_r31->unk_204 = sp568[lbl_1_data_230[var_r31->unk_190]][var_r31->unk_10][var_r17]; + var_r31->unk_20C = sp4A8[lbl_1_data_230[var_r31->unk_190]][var_r31->unk_10][var_r17]; + var_r31->unk_210 = sp3E8[lbl_1_data_230[var_r31->unk_190]][var_r31->unk_10][var_r17]; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_90[var_r30] = var_r31->unk_A0[var_r30] = var_r31->unk_B0[var_r30] = var_r31->unk_D0[var_r30] + = var_r31->unk_E0[var_r30] = 0.0f; + var_r31->unk_F0[var_r30] = var_r31->unk_100[var_r30] = var_r31->unk_110[var_r30] = var_r31->unk_120[var_r30] + = var_r31->unk_130[var_r30] = var_r31->unk_140[var_r30] = 0; + var_r31->unk_160[var_r30] = var_r31->unk_170[var_r30] = var_r31->unk_150[var_r30] = 0; + } + } + break; + case 1: + if (lbl_1_bss_30 != -1) { + var_r31->unk_4C = 3; + if ((lbl_1_bss_30 == var_r31->unk_00) && (var_r31->unk_F0[0] != 0) && (var_r31->unk_F0[1] != 0) && (var_r31->unk_F0[2] != 0) + && (var_r31->unk_F0[3] != 0)) { + var_r31->unk_54 = 0x1E; + HuAudFXPlay(9); + } + } + else if ((var_r31->unk_190 < 2) && (var_r31->unk_F0[0] != 0) && (var_r31->unk_F0[1] != 0) && (var_r31->unk_F0[2] != 0) + && (var_r31->unk_F0[3] != 0)) { + if (lbl_1_bss_64[3].unk_00 < 2) { + lbl_1_bss_64[3].unk_04[lbl_1_bss_64[3].unk_00] = 0.0f; + lbl_1_bss_64[3].unk_00++; + } + var_r31->unk_4C = 2; + var_r31->unk_50 = 0; + Hu3DMotionSpeedSet(var_r29->model[var_r31->unk_190 + 1], -1.0f); + var_r31->unk_14 = var_r31->unk_1C = var_r31->unk_30 = var_r31->unk_34 = var_r31->unk_38 = 0; + var_r31->unk_18 = -1; + var_r31->unk_3C = var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 0; + var_r31->unk_208 = var_r31->unk_0C == -1 ? 1 : 0; + if (var_r31->unk_0C == -1) { + sp234 = (var_r31->unk_190 + lbl_1_data_23C[var_r31->unk_00] + 1) % 3; + var_r31->unk_204 = sp568[lbl_1_data_230[var_r31->unk_190 + 1]][var_r31->unk_10][sp234]; + var_r31->unk_20C = sp4A8[lbl_1_data_230[var_r31->unk_190 + 1]][var_r31->unk_10][sp234]; + var_r31->unk_210 = sp3E8[lbl_1_data_230[var_r31->unk_190 + 1]][var_r31->unk_10][sp234]; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_90[var_r30] = var_r31->unk_A0[var_r30] = var_r31->unk_B0[var_r30] = var_r31->unk_D0[var_r30] + = var_r31->unk_E0[var_r30] = 0.0f; + var_r31->unk_F0[var_r30] = var_r31->unk_100[var_r30] = var_r31->unk_110[var_r30] = var_r31->unk_120[var_r30] + = var_r31->unk_130[var_r30] = var_r31->unk_140[var_r30] = 0; + var_r31->unk_160[var_r30] = var_r31->unk_170[var_r30] = var_r31->unk_150[var_r30] = 0; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp230 = -1; + sp22C = 10000.0f; + Hu3DModelObjPosGet(var_r29->model[4], lbl_1_data_138[var_r30], &sp2CC); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp228 = sp2CC.x - var_r31->unk_60[var_r28]; + sp224 = sp2CC.z - var_r31->unk_80[var_r28]; + if ((var_r31->unk_F0[var_r28] == 0) && (sqrtf((sp228 * sp228) + (sp224 * sp224)) < sp22C)) { + sp230 = var_r28; + sp22C = sqrtf((sp228 * sp228) + (sp224 * sp224)); + } + } + var_r31->unk_1B4[sp230] = var_r30; + var_r31->unk_F0[sp230] = 1; + var_r31->unk_194[var_r30] = var_r31->unk_60[var_r30]; + var_r31->unk_1A4[var_r30] = var_r31->unk_80[var_r30]; + } + var_r31->unk_F0[0] = var_r31->unk_F0[1] = var_r31->unk_F0[2] = var_r31->unk_F0[3] = 0; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp220 = var_r30 + 7; + var_r19 = &Hu3DData[var_r29->model[var_r30 + 0xC]]; + Hu3DModelPosSet(var_r29->model[sp220], var_r19->pos.x, 0.0f, var_r19->pos.z); + Hu3DModelAttrReset(var_r29->model[sp220], HU3D_ATTR_DISPOFF); + Hu3DParticleCntSet(var_r29->model[sp220], 0); + } + if (lbl_1_bss_30 == -1) { + var_r31->unk_54 = 0x1E; + HuAudFXPlay(9); + } + } + break; + case 2: + var_r31->unk_50++; + if (var_r31->unk_50 == 0xA) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelAttrSet(var_r29->model[var_r30 + 0xC], HU3D_ATTR_DISPOFF); + } + } + if (var_r31->unk_50 <= 0x3C) { + sp21C = var_r31->unk_50 / 60.0; + for (var_r30 = 0; var_r30 < 4; var_r30++) { } + } + var_r31->unk_50 == 0x3C; + if ((var_r31->unk_50 >= 0) && (var_r31->unk_50 <= 0x3C)) { + sp218 = var_r31->unk_50 / 60.0; + var_f21 = 0.5 + (-0.5 * cosd((180.0f * sp218))); + var_f21 = sp218 < 0.75 ? 0 : 1; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelObjPosGet(var_r29->model[var_r31->unk_190 + 5], lbl_1_data_138[var_r30], &sp2C0); + var_r31->unk_60[var_r30] = (var_f21 * (sp2C0.x - sp2D8.x)) + (var_r31->unk_194[var_r30] * (1.0f - var_f21)); + var_r31->unk_80[var_r30] = (var_f21 * (sp2C0.z - sp2D8.z)) + (var_r31->unk_1A4[var_r30] * (1.0f - var_f21)); + var_r31->unk_70[var_r30] = 300.0 * sind((180.0f * sp218)); + var_r31->unk_70[var_r30] = -25.0f * (1.0f - var_f21); + } + } + if (var_r31->unk_50 == 0x3C) { + Hu3DMotionSpeedSet(var_r29->model[var_r31->unk_190 + 1], 1.0f); + Hu3DModelAttrSet(var_r29->model[var_r31->unk_190 + 1], HU3D_ATTR_DISPOFF); + var_r31->unk_190++; + Hu3DModelAttrReset(var_r29->model[var_r31->unk_190 + 1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r29->model[var_r31->unk_190 + 1], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(var_r29->model[var_r31->unk_190 + 1], 0.0f); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp214 = var_r30 + 7; + var_r24 = &Hu3DData[var_r29->model[var_r30 + 0xC]]; + Hu3DModelPosSet(var_r29->model[sp214], var_r24->pos.x, var_r24->pos.y, var_r24->pos.z); + Hu3DModelAttrReset(var_r29->model[sp214], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r29->model[var_r30 + 0xC], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(var_r29->model[var_r30 + 0xC], 0.0f, 0.0f, 0.0f); + Hu3DParticleCntSet(var_r29->model[sp214], 0); + } + } + if ((var_r31->unk_50 >= 0x3E) && (var_r31->unk_50 <= 0x78)) { + sp210 = (var_r31->unk_50 - 0x3E) / 58.0; + sp20C = sp210 < 0.25 ? (sp210 / 0.25) : 1.0; + sp20C = var_r31->unk_50 < 0x46 ? 0 : 1; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelScaleSet(var_r29->model[var_r30 + 0xC], sp20C, sp20C, sp20C); + } + } + if (var_r31->unk_50 == 0x78) { + var_r31->unk_4C = 1; + var_r31->unk_50 = 0; + } + break; + case 3: + break; + } + if (var_r31->unk_54 > 0) { + var_f26 = 1.0 - ((var_r31->unk_54 - 1) / 30.0); + sp204 = var_r31->unk_190 + 5 + (var_r31->unk_00 * 9); + var_f26 = (0.5 * var_f26) + (0.5 * (1.0f - ((1.0f - var_f26) * (1.0f - var_f26)))); + sp208 = var_f26 < 0.75 ? (var_f26 / 0.75) : 1.0; + var_f26 = 1.0f - ((1.0f - var_f26) * (1.0f - var_f26)); + sp208 = 1.0f - ((1.0f - sp208) * (1.0f - sp208)); + if (var_r31->unk_54 == 0x1E) { + espDispOn(lbl_1_data_48[sp204]); + espDispOff(lbl_1_data_48[var_r31->unk_190 + 2 + (var_r31->unk_00 * 9)]); + } + espTPLvlSet(lbl_1_data_48[sp204], sp208); + espScaleSet(lbl_1_data_48[sp204], 4.0f - (3.0f * var_f26), 4.0f - (3.0f * var_f26)); + var_r31->unk_54--; + } + if (var_r31->unk_4C == 1) { + if (var_r31->unk_0C != -1) { + var_f29 = HuPadStkX[var_r31->unk_0C]; + var_f28 = HuPadStkY[var_r31->unk_0C]; + var_f29 /= 40.0f; + var_f28 /= 40.0f; + } + else if (var_r31->unk_208 != 0) { + var_f29 = 3.0f * -var_r31->unk_58; + var_f28 = -3.0f * -var_r31->unk_5C; + } + else if ((var_r31->unk_0C == -1) && ((var_r31->unk_20C != 0) || (var_r31->unk_210 != 0))) { + var_f29 = var_r31->unk_20C < 0 ? -1 : (var_r31->unk_20C > 0 ? 1 : 0); + var_f28 = var_r31->unk_210 < 0 ? -1 : (var_r31->unk_210 > 0 ? 1 : 0); + var_r31->unk_20C = var_r31->unk_20C + (var_r31->unk_20C < 0 ? 1 : (var_r31->unk_20C > 0 ? -1 : 0)); + var_r31->unk_210 = var_r31->unk_210 + (var_r31->unk_210 < 0 ? 1 : (var_r31->unk_210 > 0 ? -1 : 0)); + } + else if ((var_r31->unk_F0[0] == 0) || (var_r31->unk_F0[1] == 0) || (((var_r31->unk_F0[2] == 0) != 0)) || (var_r31->unk_F0[3] == 0)) { + if (var_r31->unk_F0[var_r31->unk_14] != 0) { + var_r23 = -1; + sp1FC = var_r31->unk_F0[3] + (var_r31->unk_F0[0] + var_r31->unk_F0[1] + var_r31->unk_F0[2]); + for (sp200 = 0; sp200 <= (sp1FC == 1 ? ((var_r31->unk_204 / 4) % 3) : (sp1FC == 2 ? (((var_r31->unk_204 / 4) / 3) % 2) : 0)); + sp200++) { + for (var_r23++; var_r31->unk_F0[var_r23] != 0; var_r23++) { } + } + var_r31->unk_14 = var_r23; + } + var_r25 = var_r31->unk_14; + if (var_r25 != -1) { + var_f30 = var_r31->unk_60[var_r25] + var_r31->unk_90[var_r25]; + var_f31 = var_r31->unk_80[var_r25] + var_r31->unk_B0[var_r25]; + var_r22 = -1; + sp1F8 = -1.0f; + sp1F4 = var_r31->unk_1C; + if (var_r31->unk_100[var_r31->unk_18] != 0) { + var_r31->unk_1C = 0; + var_r31->unk_18 = -1; + } + if (var_r31->unk_1C != 0) { + for (var_r26 = 0; var_r26 < 4; var_r26++) { + sp1F0 = var_r31->unk_60[var_r26] + var_r31->unk_90[var_r26]; + sp1EC = var_r31->unk_80[var_r26] + var_r31->unk_B0[var_r26]; + if (var_r31->unk_F0[var_r26] == 0) { + if (var_r31->unk_28 != 0.0f && !(var_r31->unk_28 < 0.0f ? (sp1F0 < var_r31->unk_20) : (sp1F0 > var_r31->unk_20))) { } + else { + if (var_r31->unk_2C != 0.0f + && !(var_r31->unk_2C < 0.0f ? (sp1EC < var_r31->unk_24) : (sp1EC > var_r31->unk_24))) { } + else { + var_r31->unk_1C = 0; + var_r31->unk_14 = var_r26; + var_r25 = var_r26; + var_f30 = sp1F0; + var_f31 = sp1EC; + } + } + } + } + } + switch (lbl_1_data_230[var_r31->unk_190]) { + case 0: + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 == 1) && (var_f31 > 0.0f) && (var_f30 < 0.0f)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 == 1) && (var_f31 > 100.0f) && (var_f30 < 150.0f)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_1C == 0) && (sp1F4 == 1)) { + var_r31->unk_1C = 2; + var_r31->unk_24 = -50.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = -1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 >= 2) && (var_f30 < -100.0f) && (var_f31 < -120.0f)) { + var_r31->unk_1C = 3; + var_r31->unk_24 = -120.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0) && (var_f30 < 0.0f) + && (var_f31 < 0.0f)) { + var_r31->unk_1C = 4; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = -120.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0) && (sp1F4 == 3)) { + var_r31->unk_1C = 5; + var_r31->unk_20 = 190.0f; + var_r31->unk_24 = 190.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_1C == 0) && (sp1F4 == 5) && (var_r31->unk_18 == 3)) { + var_r31->unk_1C = 6; + var_r31->unk_20 = 0.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 0.0f; + } + break; + case 1: + if ((var_r31->unk_18 == 3) && (var_f31 > 75.0f) && ((var_f30 < -150.0f) || (var_f30 > 150.0f))) { + var_r31->unk_1C = 1; + var_r31->unk_24 = 75.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = -1.0f; + } + if ((var_r31->unk_100[1] != 0) && (var_f31 < -120.0f) && (var_f30 > 100.0f)) { + var_r31->unk_1C = 2; + var_r31->unk_24 = -120.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_18 == 2) && (var_r31->unk_100[0] != 0) && (var_f31 < -120.0f) && (var_f30 < -120.0f)) { + var_r31->unk_1C = 3; + if (var_f30 < var_f31) { + var_r31->unk_20 = -150.0f; + var_r31->unk_24 = -80.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_24 = -150.0f; + var_r31->unk_20 = -80.0f; + var_r31->unk_2C = -1.0f; + var_r31->unk_28 = 1.0f; + } + } + break; + case 2: + if ((var_r31->unk_100[3] != 0) && (var_f31 > 100.0f) && (var_f30 < -75.0f)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = -75.0f; + var_r31->unk_24 = 175.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[3] != 0) && (var_f31 < -50.0f) && (var_f30 < -150.0f)) { + var_r31->unk_1C = 2; + var_r31->unk_20 = -200.0f; + var_r31->unk_24 = -25.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_18 == 2) && (var_r31->unk_100[2] != 0) && ((var_f30 + var_f31) > 300.0f)) { + var_r31->unk_1C = 3; + if (var_f30 > var_f31) { + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = 80.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = -1.0f; + } + else { + var_r31->unk_24 = 200.0f; + var_r31->unk_20 = 80.0f; + var_r31->unk_2C = 1.0f; + var_r31->unk_28 = -1.0f; + } + } + if ((var_r31->unk_18 == 1) && (var_r31->unk_100[2] != 0) && ((var_f30 - var_f31) > 300.0f)) { + var_r31->unk_1C = 4; + if (var_f30 > -var_f31) { + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = -80.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_24 = -200.0f; + var_r31->unk_20 = 80.0f; + var_r31->unk_2C = -1.0f; + var_r31->unk_28 = -1.0f; + } + } + break; + case 3: + if ((var_f31 > 200.0f) && (var_f30 > 200.0f) && (var_r31->unk_18 != 3)) { + var_r31->unk_1C = 2; + if (var_r31->unk_18 == 2) { + var_r31->unk_20 = -150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = -150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = -1.0f; + } + } + if ((var_f31 > 0.0f) && (var_f30 > 0.0f) && (!(var_f30 < 100.0f) || !(var_f31 < 100.0f)) && (var_r31->unk_18 != 3) + && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = 200.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 > 200.0f) && (var_f30 < -200.0f) && (var_r31->unk_18 != 2)) { + var_r31->unk_1C = 4; + if (var_r31->unk_18 == 3) { + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_20 = -150.0f; + var_r31->unk_24 = -150.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = -1.0f; + } + } + if ((var_f31 > 0.0f) && (var_f30 < 0.0f) && (var_r31->unk_18 != 2) && (var_r31->unk_1C == 0) + && ((var_r31->unk_100[0] != 0) || (var_r31->unk_18 == 3))) { + var_r31->unk_1C = 3; + var_r31->unk_20 = -200.0f; + var_r31->unk_24 = 200.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 < -200.0f) && (var_f30 > 200.0f) && (var_r31->unk_18 == 3) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 9; + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = 0.0; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 < -200.0f) && (var_f30 < -200.0f) && (var_r31->unk_18 == 2) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 8; + var_r31->unk_20 = -200.0f; + var_r31->unk_24 = 0.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 < -200.0f) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 7; + var_r31->unk_24 = -200.0f; + var_r31->unk_2C = -1.0f; + if (var_r31->unk_18 == 3) { + var_r31->unk_20 = 200.0f; + var_r31->unk_28 = 1.0f; + } + else { + var_r31->unk_20 = -200.0f; + var_r31->unk_28 = -1.0f; + } + } + if ((var_f31 < 0.0f) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 6; + var_r31->unk_24 = -200.0f; + var_r31->unk_28 = 0.0; + var_r31->unk_2C = -1.0f; + } + if ((var_f31 < -175.0f) && (var_f30 > 175.0f) && ((var_r31->unk_18 == 0) || (var_r31->unk_18 == 2)) + && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 0xA; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = -200.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = -1.0f; + } + break; + } + if (var_r31->unk_18 == -1) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r31->unk_100[var_r30] == 0) + && ((sp1E8 = sp394[var_r30].x - var_r31->unk_60[var_r25], sp1E4 = sp394[var_r30].z - var_r31->unk_80[var_r25], + ((var_r22 == -1) != 0)) + || (((sp1E8 * sp1E8) + (sp1E4 * sp1E4)) < sp1F8))) { + var_r22 = var_r30; + sp1F8 = (sp1E8 * sp1E8) + (sp1E4 * sp1E4); + } + } + if (var_r22 != -1) { + var_r31->unk_18 = var_r22; + } + } + else { + var_r22 = var_r31->unk_18; + } + if ((var_r31->unk_18 != -1) && (var_r31->unk_1C == 0)) { + if (((var_r31->unk_58 < -0.95) || (var_r31->unk_58 > 0.95)) && ((var_r31->unk_5C < -0.95) || (var_r31->unk_5C > 0.95)) + && (var_r31->unk_34 > 0xF) && (var_r31->unk_38 < 0x3C)) { + var_f29 = var_f30 < sp394[var_r31->unk_18].x ? 1 : (var_f30 > sp394[var_r31->unk_18].x ? -1 : 0); + var_f28 = var_f31 < sp394[var_r31->unk_18].z ? 1 : (var_f31 > sp394[var_r31->unk_18].z ? -1 : 0); + } + else { + var_f29 = var_f30 < sp394[var_r31->unk_18].x ? 1 : (var_f30 > sp394[var_r31->unk_18].x ? -1 : 0); + var_f28 = var_f31 < sp394[var_r31->unk_18].z ? 1 : (var_f31 > sp394[var_r31->unk_18].z ? -1 : 0); + } + } + else if (var_r31->unk_1C != 0) { + if (var_r31->unk_28 != 0.0f && !(var_r31->unk_28 < 0.0f ? (var_f30 < var_r31->unk_20) : (var_f30 > var_r31->unk_20))) { + var_f29 = var_r31->unk_28 < 0.0f ? (var_f30 > var_r31->unk_20 ? -1 : 0) : (var_f30 < var_r31->unk_20 ? 1 : 0); + } + else { + var_f29 = var_r31->unk_58 < -0.1 ? 1.0f : (var_r31->unk_58 > 0.1 ? -1.0f : (-10.0f * var_r31->unk_58)); + } + if (var_r31->unk_2C != 0.0f && (var_r31->unk_2C < 0.0f ? (var_f31 < var_r31->unk_24) : (var_f31 > var_r31->unk_24)) == 0) { + var_f28 = var_r31->unk_2C < 0.0f ? (var_f31 > var_r31->unk_24 ? -1 : 0) : (var_f31 < var_r31->unk_24 ? 1 : 0); + } + else { + var_f28 = var_r31->unk_5C < -0.1 ? 1.0f : (var_r31->unk_5C > 0.1 ? -1.0f : (-10.0f * var_r31->unk_5C)); + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp1E0 = var_r31->unk_60[var_r30] - var_r31->unk_160[var_r30]; + sp1DC = var_r31->unk_80[var_r30] - var_r31->unk_170[var_r30]; + if (((sp1E0 * sp1E0) + (sp1DC * sp1DC)) < 9.0f) { + var_r31->unk_150[var_r30]++; + } + else { + var_r31->unk_160[var_r30] = var_r31->unk_60[var_r30]; + var_r31->unk_170[var_r30] = var_r31->unk_80[var_r30]; + var_r31->unk_150[var_r30] = 0; + } + } + if (var_r31->unk_44 <= 0) { + var_r31->unk_3C = var_f29; + var_r31->unk_40 = var_f28; + var_r31->unk_44 = var_r31->unk_48; + var_r31->unk_48 -= (var_r31->unk_48 >= (var_r31->unk_48 / 10) ? (var_r31->unk_48 / 10) : 0); + } + else { + var_f29 = var_r31->unk_3C; + var_f28 = var_r31->unk_40; + var_r31->unk_44--; + } + var_f29 *= 0.5; + var_f28 *= -0.5; + } + } + if (((var_f29 * var_f29) + (var_f28 * var_f28)) > 1.0f) { + sp1D8 = sqrt((var_f29 * var_f29) + (var_f28 * var_f28)); + var_f29 *= 1.0f / sp1D8; + var_f28 *= 1.0f / sp1D8; + } + if ((((var_f29 * var_f29) + (var_f28 * var_f28)) < 0.0625) && (var_r31->unk_208 == 0)) { + var_f29 = 0.0f; + var_f28 = 0.0f; + } + } + sp1D4 = var_r31->unk_58; + sp1D0 = var_r31->unk_5C; + var_r31->unk_58 = var_r31->unk_58 + (var_f29 / 3.0f); + var_r31->unk_58 = var_r31->unk_58 < -1.0f ? -1.0f : (var_r31->unk_58 > 1.0f ? 1.0f : var_r31->unk_58); + var_r31->unk_5C = var_r31->unk_5C + (-var_f28 / 3.0f); + var_r31->unk_5C = var_r31->unk_5C < -1.0f ? -1.0f : (var_r31->unk_5C > 1.0f ? 1.0f : var_r31->unk_5C); + var_r31->unk_208 = ((var_r31->unk_58 == 0.0f) && (var_r31->unk_5C == 0.0f)) ? 0 : var_r31->unk_208; + if ((lbl_1_bss_48 == 0x3EC) && ((sp1D4 != var_r31->unk_58) || (sp1D0 != var_r31->unk_5C))) { + if (var_r31->unk_214 == -1) { + var_r31->unk_214 = HuAudFXPlay(0x7A6); + } + } + else { + if (var_r31->unk_214 != -1) { + HuAudFXStop(var_r31->unk_214); + } + var_r31->unk_214 = -1; + } + if (lbl_1_bss_48 >= 0x3ED) { + sp1CC = 0.666f; + sp1C8 = 0.9f; + var_r31->unk_5C = var_r31->unk_5C > sp1CC + ? ((var_r31->unk_5C * sp1C8) + (sp1CC * (1.0f - sp1C8))) + : (var_r31->unk_5C < -sp1CC ? ((var_r31->unk_5C * sp1C8) - (sp1CC * (1.0f - sp1C8))) : var_r31->unk_5C); + } + if (var_r31->unk_4C != 2) { + for (var_r18 = 0; var_r18 < 2; var_r18++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_110[var_r30] = var_r31->unk_120[var_r30] = var_r31->unk_130[var_r30] = var_r31->unk_140[var_r30] = 0; + if (var_r31->unk_F0[var_r30] == 0) { + var_r31->unk_90[var_r30] += 0.13888888888888887 * var_r31->unk_58 * (var_r31->unk_208 != 0 ? 0 : 1) + * (var_r31->unk_70[var_r30] >= 0.0f ? 1.0f : (1.0f - (var_r31->unk_70[var_r30] / -25.0f))); + var_r31->unk_B0[var_r30] += 0.13888888888888887 * var_r31->unk_5C * (var_r31->unk_208 != 0 ? 0 : 1) + * (var_r31->unk_70[var_r30] >= 0.0f ? 1.0f : (1.0f - (var_r31->unk_70[var_r30] / -25.0f))); + var_r31->unk_70[var_r30] += var_r31->unk_A0[var_r30]; + var_r31->unk_38 += var_r31->unk_38 < 0x8000; + var_f27 + = sqrtf((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + sp1C4 = var_r31->unk_90[var_r30]; + sp1C0 = var_r31->unk_B0[var_r30]; + if (var_f27 > 0.0f) { + if (var_f27 > 7.59375) { + var_r31->unk_90[var_r30] *= 7.5 / var_f27; + var_r31->unk_B0[var_r30] *= 7.5 / var_f27; + } + else { + var_r31->unk_90[var_r30] *= (var_f27 < 0.09375 ? 0.0 : (var_f27 - 0.09375)) / var_f27; + var_r31->unk_B0[var_r30] *= (var_f27 < 0.09375 ? 0.0 : (var_f27 - 0.09375)) / var_f27; + } + } + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + var_f27 + = sqrtf((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp1BC = var_r31->unk_60[var_r30] - var_r31->unk_60[var_r28]; + sp1B8 = var_r31->unk_80[var_r30] - var_r31->unk_80[var_r28]; + var_f24 = sqrtf((sp1BC * sp1BC) + (sp1B8 * sp1B8)); + if ((var_r30 != var_r28) && (var_r31->unk_F0[var_r28] == 0) && (var_f24 > 0.0f) && (var_f24 < 62.5)) { + var_f20 = sp1BC / var_f24; + var_f19 = sp1B8 / var_f24; + sp1B4 = var_r31->unk_90[var_r30]; + sp1B0 = var_r31->unk_B0[var_r30]; + var_f18 = (var_r31->unk_90[var_r30] + var_r31->unk_90[var_r28]) / 2.0; + sp1A4 = (var_r31->unk_B0[var_r30] + var_r31->unk_B0[var_r28]) / 2.0; + sp1AC = (var_f20 * -(var_r31->unk_90[var_r30] - var_f18)) - (var_f19 * (var_r31->unk_B0[var_r30] - sp1A4)); + sp1A8 = (-var_f20 * -(var_r31->unk_90[var_r28] - var_f18)) - (-var_f19 * (var_r31->unk_B0[var_r28] - sp1A4)); + var_r31->unk_60[var_r30] += var_f20 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_80[var_r30] += var_f19 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_60[var_r28] -= var_f20 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_80[var_r28] -= var_f19 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_90[var_r30] = var_f18 + (0.75 * ((var_r31->unk_90[var_r30] - var_f18) + (2.0f * var_f20 * sp1AC))); + var_r31->unk_B0[var_r30] = sp1A4 + (0.75 * ((var_r31->unk_B0[var_r30] - sp1A4) + (2.0f * var_f19 * sp1AC))); + var_r31->unk_90[var_r28] = var_f18 + (0.75 * ((var_r31->unk_90[var_r28] - var_f18) + (2.0f * -var_f20 * sp1A8))); + var_r31->unk_B0[var_r28] = sp1A4 + (0.75 * ((var_r31->unk_B0[var_r28] - sp1A4) + (2.0f * -var_f19 * sp1A8))); + var_r31->unk_110[var_r30] = 1 << var_r28; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (var_r31->unk_1C4[var_r28] > 0xF) && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + var_r31->unk_1C4[var_r28] = 0; + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp1A0 = var_r31->unk_60[var_r30] - var_r31->unk_60[var_r28]; + sp19C = var_r31->unk_80[var_r30] - var_r31->unk_80[var_r28]; + sp198 = sqrtf((sp1A0 * sp1A0) + (sp19C * sp19C)); + if ((var_r31->unk_F0[var_r28] != 0) && (var_f27 > 0.0f)) { + if (sp198 < 62.5) { + sp194 = sp1A0 / sp198; + sp190 = sp19C / sp198; + sp18C = var_r31->unk_90[var_r30]; + sp188 = var_r31->unk_B0[var_r30]; + sp184 = (-sp18C * sp194) - (sp188 * sp190); + var_r31->unk_60[var_r30] += sp194 * (0.1 + (62.5 - sp198)); + var_r31->unk_80[var_r30] += sp190 * (0.1 + (62.5 - sp198)); + var_r31->unk_90[var_r30] = 0.75 * (sp18C + (2.0f * sp194 * sp184)); + var_r31->unk_B0[var_r30] = 0.75 * (sp188 + (2.0f * sp190 * sp184)); + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + var_r31->unk_34 = var_r31->unk_30 == (var_r28 + 1) ? (var_r31->unk_34 + 1) : 1; + var_r31->unk_30 = var_r28 + 1; + var_r31->unk_38 = 0; + var_r31->unk_120[var_r30] = 1 << var_r28; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (var_r31->unk_1C4[var_r28] > 0xF) && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + var_r31->unk_1C4[var_r28] = 0; + } + } + } + for (var_r28 = 0; var_r28 < (lbl_1_data_230[var_r31->unk_190] == 2 ? 2 : 3); var_r28++) { + sp180 = var_r31->unk_60[var_r30] - sp3C4[var_r28].x; + sp17C = var_r31->unk_80[var_r30] - sp3C4[var_r28].z; + sp178 = sqrtf((sp180 * sp180) + (sp17C * sp17C)); + if ((sp178 > 0.0f) && (sp178 < 62.5)) { + sp174 = sp180 / sp178; + sp170 = sp17C / sp178; + sp16C = var_r31->unk_90[var_r30]; + sp168 = var_r31->unk_B0[var_r30]; + sp164 = (-sp16C * sp174) - (sp168 * sp170); + var_r31->unk_60[var_r30] += sp174 * (0.1 + (62.5 - sp178)); + var_r31->unk_80[var_r30] += sp170 * (0.1 + (62.5 - sp178)); + var_r31->unk_90[var_r30] = 0.75 * (sp16C + (2.0f * sp174 * sp164)); + var_r31->unk_B0[var_r30] = 0.75 * (sp168 + (2.0f * sp170 * sp164)); + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + var_r31->unk_34 = var_r31->unk_30 == (var_r28 + 5) ? (var_r31->unk_34 + 1) : 1; + var_r31->unk_30 = var_r28 + 5; + var_r31->unk_38 = 0; + var_r31->unk_130[var_r30] = 1 << var_r28; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + } + } + if (((var_r31->unk_60[var_r30] - 37.5) < -250.0) || ((37.5 + var_r31->unk_60[var_r30]) > 250.0)) { + var_r31->unk_60[var_r30] = (var_r31->unk_60[var_r30] - 37.5) < -250.0 ? -212.5 : 212.5; + var_r31->unk_90[var_r30] *= -0.75; + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + } + if (((var_r31->unk_80[var_r30] - 37.5) < -250.0) || ((37.5 + var_r31->unk_80[var_r30]) > 250.0)) { + var_r31->unk_80[var_r30] = (var_r31->unk_80[var_r30] - 37.5) < -250.0 ? -212.5 : 212.5; + var_r31->unk_B0[var_r30] *= -0.75; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + } + var_r21 = 0; + for (var_r21 = 0; var_r21 < 0x10; var_r21++) { + var_r31->unk_1C4[var_r21]++; + } + sp160 = 0; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp15C = var_r31->unk_60[var_r30] - sp394[var_r28].x; + sp158 = ((sp15C == 0.0f) && (var_r31->unk_80[var_r30] == sp394[var_r28].z)) + ? 1e-10 + : (var_r31->unk_80[var_r30] - sp394[var_r28].z); + var_f23 = sqrtf((sp15C * sp15C) + (sp158 * sp158)); + sp154 = 0; + for (var_r20 = 0; var_r20 < 4; var_r20++) { + if (((var_r31->unk_110[var_r30] & (1 << var_r20)) != 0) && (var_r31->unk_130[var_r20] != 0)) { + sp154 = 1; + } + } + if ((var_r31->unk_0C != -1) && (lbl_1_data_230[var_r31->unk_190] == 1) && (var_r28 == 3)) { + if (var_r31->unk_180[var_r30] > 0) { + var_f23 = 1000.0f; + var_r31->unk_180[var_r30]--; + } + for (var_r27 = 0; var_r27 < 4; var_r27++) { + if ((var_r31->unk_00 == 0) && ((HuPadBtn[0] & PAD_BUTTON_B) != 0)) { + OSReport("%d | %d\n%d | %d\n%f,%f\n%f,%f\n", var_r31->unk_110[var_r30], 1 << var_r27, + var_r31->unk_110[var_r27], 1 << var_r30, var_r31->unk_60[var_r30], var_r31->unk_80[var_r30], + var_r31->unk_60[var_r27], var_r31->unk_80[var_r27]); + } + if ((((var_r31->unk_110[var_r30] & (1 << var_r27)) != 0) || ((var_r31->unk_110[var_r27] & (1 << var_r30)) != 0)) + && (var_r31->unk_80[var_r27] > var_r31->unk_80[var_r30]) && (var_r31->unk_60[var_r30] < 100.0f) + && (var_r31->unk_60[var_r30] > -100.0f) && (var_r31->unk_80[var_r30] > 150.0f) + && (var_r31->unk_60[var_r27] < 100.0f) && (var_r31->unk_60[var_r27] > -100.0f) + && (var_r31->unk_80[var_r27] > 150.0f)) { + var_f23 = 1000.0f; + var_r31->unk_180[var_r30] = 3; + } + } + } + if ((sp154 == 0) && (var_f23 < 37.5)) { + sp150 = sp15C / var_f23; + sp14C = sp158 / var_f23; + sp148 = 37.5 * sind((90.0 * (-var_r31->unk_70[var_r30] / 37.5))); + sp144 = var_r31->unk_70[var_r30] <= -37.5 ? 90.0 : (asind(1.0 + (var_r31->unk_70[var_r30] / 37.5))); + var_r31->unk_140[var_r30] = 1 << var_r28; + sp140 = sqrtf((var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30]) + + ((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + + (var_r31->unk_A0[var_r30] * var_r31->unk_A0[var_r30]))); + sp13C = sqrtf( + (var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + sp138 = atan2d(var_r31->unk_A0[var_r30], sp13C); + var_r31->unk_90[var_r30] -= 0.375 * sp150; + var_r31->unk_B0[var_r30] -= 0.375 * sp14C; + var_r31->unk_60[var_r30] -= 0.375 * sp150; + var_r31->unk_80[var_r30] -= 0.375 * sp14C; + if (var_r31->unk_70[var_r30] < (-25.0 * sind((90.0 * (1.0 - (var_f23 / 37.5)))))) { + var_r31->unk_70[var_r30] = -25.0 * sind((90.0 * (1.0 - (var_f23 / 37.5)))); + } + if ((var_r31->unk_70[var_r30] <= -24.5) && (var_f23 < 0.75)) { + var_r31->unk_70[var_r30] = -25.0f; + var_r31->unk_A0[var_r30] = 0.0f; + var_r31->unk_F0[var_r30] = 1; + var_r31->unk_100[var_r28] = 1; + var_r31->unk_48 = lbl_1_rodata_10[var_r31->unk_10]; + if (lbl_1_bss_64[2].unk_00 < 2) { + lbl_1_bss_64[2].unk_04[lbl_1_bss_64[2].unk_00] = 0.0f; + lbl_1_bss_64[2].unk_00++; + } + omVibrate(var_r31->unk_04, 0xC, 6, 6); + } + } + else { + sp160++; + } + if (var_r28 == 3) { + if ((sp160 == 4) && (var_r31->unk_70[var_r30] < 0.0f)) { + var_r31->unk_70[var_r30] = 0.0f; + var_r31->unk_A0[var_r30] *= -0.0; + } + else { + var_r31->unk_A0[var_r30] += -0.1875; + } + } + } + sp134 = atan2d(sp1C4, sp1C0); + sp130 = atan2d(var_r31->unk_90[var_r30], var_r31->unk_B0[var_r30]); + var_f22 + = sqrtf((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + var_f25 = sp130 - sp134; + var_f25 += var_f25 < -180.0f ? 0x168 : (var_f25 > 180.0f ? -0x168 : 0); + var_f25 += var_f25 < -180.0f ? 0x168 : (var_f25 > 180.0f ? -0x168 : 0); + var_f22 = var_f22 <= (1.03125 * sqrt(0.03858024691358024)) ? 0.0f : var_f22; + var_r31->unk_D0[var_r30] + -= (2.625 * ((var_f22 * (var_f25 < -90.0f ? -1.0 : (var_f25 > 90.0f ? 1.0 : (var_f25 / 90.0)))) / 3.75)); + var_r31->unk_D0[var_r30] = var_r31->unk_D0[var_r30] >= 7.875 ? 7.875 : var_r31->unk_D0[var_r30]; + var_r31->unk_C0[var_r30] += var_r31->unk_D0[var_r30]; + var_r31->unk_C0[var_r30] += var_r31->unk_C0[var_r30] < -180.0f ? 0xB4 : (var_r31->unk_C0[var_r30] > 180.0f ? -0xB4 : 0); + if (fabs(var_f22) < fabs(var_r31->unk_E0[var_r30])) { + var_r31->unk_D0[var_r30] + = var_r31->unk_E0[var_r30] == 0.0f ? 0.0f : ((var_r31->unk_D0[var_r30] * var_f22) / var_r31->unk_E0[var_r30]); + } + var_r31->unk_E0[var_r30] = var_f22; + } + } + } + } + Hu3DModelRotSet(var_r29->model[var_r31->unk_190 + 1], 10.0f * var_r31->unk_5C, 0.0f, 10.0f * -var_r31->unk_58); + Hu3DModelRotSet(var_r29->model[11], 10.0f * var_r31->unk_5C, 0.0f, 10.0f * -(var_r31->unk_58)); + if (lbl_1_bss_48 == 0x3EB) { + sp12C = var_r29->rot.y; + sp128 = 180.0 + ((8.0f * var_r31->unk_58) * (0.125 + ((0.6 + var_r31->unk_5C) / 0.875))); + var_r29->rot.y = (3.0f + sp12C) < sp128 ? (3.0f + sp12C) : ((sp12C - 3.0f) > sp128 ? (sp12C - 3.0f) : sp128); + if (lbl_1_bss_4C == 0xA) { + Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[1], 39.0 * (0.5 + (0.5 * var_r31->unk_5C)), 20.0f, HU3D_MOTATTR_PAUSE); + } + } + else if (lbl_1_bss_48 == 0x3EC) { + omSetRot(var_r29, 0.0f, 180.0 + ((8.0f * var_r31->unk_58) * (0.125 + ((0.6 + var_r31->unk_5C) / 0.875))), 0.0f); + Hu3DMotionTimeSet(var_r29->model[0], 39.0 * (0.5 + (0.5 * var_r31->unk_5C))); + } + else if (lbl_1_bss_48 == 0x3ED) { + if (lbl_1_bss_4C == 1) { + Hu3DModelAttrReset(var_r29->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[0], 0.0f, 12.0f, HU3D_MOTATTR_LOOP); + } + if (lbl_1_bss_4C >= 0x19) { + var_r29->rot.y *= 0.8; + } + } + else if (lbl_1_bss_48 >= 0x3EE) { + var_r29->rot.y = 0.0f; + if ((lbl_1_bss_4C == 1) && (lbl_1_bss_48 == 0x3EE)) { + if ((var_r31->unk_00 != lbl_1_bss_30) && (var_r31->unk_08 != -1)) { + s32 sp2E4[8] = { 0x121, 0x161, 0x1A1, 0x1E1, 0x221, 0x261, 0x2A1, 0x2E1 }; + HuAudFXPlay(sp2E4[var_r31->unk_08]); + } + Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[var_r31->unk_00 == lbl_1_bss_30 ? 2 : 3], 0.0f, 8.0f, + ((var_r31->unk_00 == lbl_1_bss_30) && (var_r31->unk_08 == -1)) ? 0x40000001 : 0); + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_18 = var_r31->unk_C0[var_r30]; + lbl_1_bss_18 = lbl_1_bss_18 < -180.0f ? (360.0f + lbl_1_bss_18) : (lbl_1_bss_18 > 180.0f ? (lbl_1_bss_18 - 360.0f) : lbl_1_bss_18); + sp124 = ((-90.175 <= lbl_1_bss_18) && (lbl_1_bss_18 <= -90.0f)) != 0 + ? -90.175 + : ((-90.0f <= lbl_1_bss_18) && (lbl_1_bss_18 <= -89.825) ? -89.825 : lbl_1_bss_18); + MTXRotRad(sp304, 0x78, 0.017453292f * (10.0f * var_r31->unk_5C)); + MTXRotRad(sp364, 0x7A, 0.017453292f * (10.0f * -var_r31->unk_58)); + MTXConcat(sp364, sp304, sp364); + MTXRotRad(sp304, 0x79, 0.017453292f * sp124); + MTXRotRad(sp334, 0x78, 0.017453292f * (15.0f * var_r31->unk_5C)); + MTXConcat(sp334, sp304, sp334); + MTXRotRad(sp304, 0x7A, 0.017453292f * (15.0f * -var_r31->unk_58)); + MTXConcat(sp304, sp334, sp334); + Hu3DMtxRotGet(sp334, &sp2A8); + sp2B4.x = var_r31->unk_60[var_r30]; + sp2B4.y = var_r31->unk_70[var_r30]; + sp2B4.z = var_r31->unk_80[var_r30]; + MTXMultVec(sp364, &sp2B4, &sp2B4); + Hu3DModelPosSet(var_r29->model[var_r30 + 0xC], sp2D8.x + sp2B4.x, sp2D8.y + sp2B4.y, sp2D8.z + sp2B4.z); + Hu3DModelRotSet(var_r29->model[var_r30 + 0xC], 10.0f * var_r31->unk_5C, 0.0f, 10.0f * -var_r31->unk_58); + Hu3DModelRotSet(var_r29->model[var_r30 + 0xC], sp2A8.x, sp2A8.y, sp2A8.z); + } + } +} + +s32 lbl_1_data_284 = -1; +float lbl_1_data_288 = 700.0f; +float lbl_1_data_28C = 314.0f; +float lbl_1_data_290 = -100.0f; +float lbl_1_data_294 = -30.0f; + +void fn_1_6850(omObjData *object) +{ + M449DllWork *sp20[2]; + s32 sp1C; + s32 sp18; + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8; + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + sp20[var_r31] = (&lbl_1_bss_54)[var_r31]->data; + } + lbl_1_bss_4++; + if (lbl_1_bss_48 == 0x3EC) { + lbl_1_bss_14++; + } + var_r27 = 0; + var_r26 = 0; + var_r25 = 0; + var_r24 = 0; + if ((sp20[0]->unk_190 == 2) && (sp20[0]->unk_F0[0] != 0)) { + var_r24 = 1; + } + if ((var_r24 != 0) && (sp20[0]->unk_F0[1] != 0)) { + var_r25 = 1; + } + if ((var_r25 != 0) && (sp20[0]->unk_F0[2] != 0)) { + var_r26 = 1; + } + if ((var_r26 != 0) && (sp20[0]->unk_F0[3] != 0)) { + var_r27 = 1; + } + var_r30 = var_r27; + var_r23 = 0; + var_r22 = 0; + var_r21 = 0; + var_r20 = 0; + if ((sp20[1]->unk_190 == 2) && (sp20[1]->unk_F0[0] != 0)) { + var_r20 = 1; + } + if ((var_r20 != 0) && (sp20[1]->unk_F0[1] != 0)) { + var_r21 = 1; + } + if ((var_r21 != 0) && (sp20[1]->unk_F0[2] != 0)) { + var_r22 = 1; + } + if ((var_r22 != 0) && (sp20[1]->unk_F0[3] != 0)) { + var_r23 = 1; + } + var_r29 = var_r23; + lbl_1_bss_30 = lbl_1_bss_30 == -1 ? ((var_r30 != 0) && (var_r29 != 0) ? (rand8() % 2) : (var_r30 != 0 ? 0 : (var_r29 != 0 ? 1 : lbl_1_bss_30))) + : lbl_1_bss_30; + lbl_1_bss_30 = ((lbl_1_bss_30 == -1) && (lbl_1_bss_14 >= 0x4650)) != 0 + ? (sp20[0]->unk_190 > sp20[1]->unk_190 ? 0 : (sp20[0]->unk_190 < sp20[1]->unk_190 ? 1 : 4)) + : lbl_1_bss_30; + var_r28 = lbl_1_data_284; + { + UnkCameraStruct sp28[4] = { + { 2500.0f, 0.0f, 0.0f, -100.0f, -40.0f, 0.0f }, + { 700.0f, 0.0f, 0.0f, -750.0f, -30.0f, 0.0f }, + { 775.0f, -350.0f, -27.0f, 400.0f, -25.0f, -7.0f }, + { 775.0f, 350.0f, -27.0f, 400.0f, -25.0f, 7.0f }, + }; + if (lbl_1_data_284 == -1) { + lbl_1_data_284 = 1; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if ((lbl_1_bss_48 == 0x3E9) && (lbl_1_data_284 == 1)) { + lbl_1_data_284 = 0; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 0.0f; + } + if ((lbl_1_bss_48 == 0x3EE) && (lbl_1_bss_4C == 1) && (lbl_1_bss_30 == 0)) { + lbl_1_data_284 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if ((lbl_1_bss_48 == 0x3EE) && (lbl_1_bss_4C == 1) && (lbl_1_bss_30 == 1) && (sp20[1]->unk_08 != -1)) { + lbl_1_data_284 = 3; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if ((var_r28 != lbl_1_data_284) && (var_r28 != -1)) { + lbl_1_data_288 = CZoom; + lbl_1_data_28C = Center.y; + lbl_1_data_290 = Center.z; + lbl_1_data_294 = CRot.x; + } + if (lbl_1_bss_20 <= 1.0f) { + if (lbl_1_bss_1C == 0) { + lbl_1_bss_20 = 1.0 - (0.95 * (1.0f - lbl_1_bss_20)); + var_f31 = lbl_1_bss_20; + } + else { + lbl_1_bss_20 += 0.008333333333333333; + lbl_1_bss_20 = lbl_1_bss_20 > 1.0f ? 1.0f : lbl_1_bss_20; + var_f31 = 0.5 + (-0.5 * cosd((180.0f * lbl_1_bss_20))); + } + lbl_1_bss_20 = lbl_1_bss_20 > 1.0f ? 1.0f : lbl_1_bss_20; + CZoom = (var_f31 * sp28[lbl_1_data_284].unk_00) + (lbl_1_data_288 * (1.0f - var_f31)); + Center.x = (var_f31 * sp28[lbl_1_data_284].unk_04) + (lbl_1_bss_24 * (1.0f - var_f31)); + Center.y = (var_f31 * sp28[lbl_1_data_284].unk_08) + (lbl_1_data_28C * (1.0f - var_f31)); + Center.z = (var_f31 * sp28[lbl_1_data_284].unk_0C) + (lbl_1_data_290 * (1.0f - var_f31)); + CRot.x = (var_f31 * sp28[lbl_1_data_284].unk_10) + (lbl_1_data_294 * (1.0f - var_f31)); + CRot.y = (var_f31 * sp28[lbl_1_data_284].unk_14) + (lbl_1_bss_28 * (1.0f - var_f31)); + } + } +} + +static const u32 lbl_1_rodata_580[6] = { 0x2C0003, 0x2C0004, 0x2C0005, 0x2C0006, 0x2C0007, 0 }; + +void fn_1_71A8(void) +{ + M449DllWork *sp8[2]; + + s16 var_r31; + s32 var_r30; + s16 var_r29; + s32 var_r28; + s32 var_r27; + u32 var_r26; + + var_r29 = 0; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + sp8[var_r30] = (&lbl_1_bss_54)[var_r30]->data; + } + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyReset(); + var_r31 = HuWinExCreateStyled(-10000.0f, 60.0f, 0x118, 0x78, -1, 1); + HuWinExAnimIn(var_r31); + HuWinBGTPLvlSet(var_r31, 0.8f); + HuWinMesSpeedSet(var_r31, 1); + HuWinDisablePlayerSet( + var_r31, 0xF & ((sp8[0]->unk_0C != -1) ? ~(1 << sp8[0]->unk_0C) : 0xF) & ((sp8[1]->unk_0C != -1) ? ~(1 << sp8[1]->unk_0C) : 0xF)); + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, 0x2C0001); + if (((sp8[0]->unk_0C == -1) || (sp8[0]->unk_08 == -1)) && ((sp8[1]->unk_0C == -1) || (sp8[1]->unk_08 == -1))) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + } + HuWinMesWait(var_r31); + if ((sp8[0]->unk_0C != -1) || (sp8[1]->unk_0C != -1)) { + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, 0x2C0002); + if ((sp8[0]->unk_0C == -1) && (sp8[1]->unk_0C == -1)) { + HuPrcSleep(0x3C); + var_r29 = 1; + } + else { + var_r29 = HuWinChoiceGet(var_r31, 0); + } + } + else { + var_r29 = 1; + } + if (var_r29 == 0) { + var_r30 = 0; + while ((var_r26 = lbl_1_rodata_580[var_r30++]) != 0) { + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, var_r26); + if ((sp8[0]->unk_0C == -1 || sp8[0]->unk_08 == -1) && (sp8[1]->unk_0C == -1 || sp8[1]->unk_08 == -1)) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(var_r31); + } + } + else { + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, 0x2C0008); + if (((sp8[0]->unk_0C == -1) || (sp8[0]->unk_08 == -1)) && ((sp8[1]->unk_0C == -1) || (sp8[1]->unk_08 == -1))) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(var_r31); + } + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + lbl_1_bss_10 = 0; + HuPrcEnd(); +} + +void fn_1_7544(omObjData *var_r29) +{ + M449DllWork *spC[2]; + s32 sp8; + + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + s32 sp14[12] = { 0x7A2, 0x7A3, 0x7A4, 0x7A5, 0, 0, 0, 0, 0, 0, 0, 0 }; + if (lbl_1_bss_64[var_r31].unk_00 > 3) { + lbl_1_bss_64[var_r31].unk_00 = 3; + } + if ((lbl_1_bss_64[var_r31].unk_00 > 0) && (var_r31 != 1)) { + sp8 = HuAudFXPlay(sp14[var_r31]); + lbl_1_bss_64[var_r31].unk_00--; + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + spC[var_r31] = (&lbl_1_bss_54)[var_r31]->data; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + var_r29->func = fn_1_9A38; + } + switch (lbl_1_bss_48) { + case 0x3E8: + if (WipeStatGet() == 0) { + lbl_1_bss_48++; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3E9: + lbl_1_bss_4C++; + if (lbl_1_bss_4C > 0x78) { + lbl_1_bss_48++; + if ((spC[0]->unk_08 != -1) && (spC[1]->unk_08 != -1)) { + lbl_1_bss_48++; + } + lbl_1_bss_44 = 0; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3EA: + lbl_1_bss_4C++; + if (lbl_1_bss_4C == 1) { + HuPrcChildCreate(fn_1_71A8, 0x64, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_10 = 1; + if (lbl_1_data_22C == -1) { + lbl_1_data_22C = HuAudSeqPlay(0x3D); + return; + } + } + else if (lbl_1_bss_10 == 0) { + lbl_1_bss_48++; + if (lbl_1_data_22C != -1) { + HuAudSeqFadeOut(lbl_1_data_22C, 0x3E8); + lbl_1_data_22C = -1; + } + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3EB: + lbl_1_bss_4C++; + if ((lbl_1_bss_4C == 5) && (lbl_1_data_228 < 0)) { + lbl_1_data_228 = MGSeqCreate(3, 0); + } + if ((lbl_1_bss_4C >= 5) && (lbl_1_data_22C == -1) && ((MGSeqStatGet(lbl_1_data_228) & 0x10) != 0)) { + lbl_1_data_22C = HuAudSeqPlay(0x3E); + } + if ((lbl_1_bss_4C >= 5) && (MGSeqStatGet(lbl_1_data_228) == 0) && (lbl_1_data_228 >= 0)) { + for (var_r30 = 0; var_r30 < 0x12; var_r30++) { + if (((var_r30 % 9) < 5) || ((var_r30 % 9) > 7)) { + espDispOn(lbl_1_data_48[var_r30]); + } + } + lbl_1_bss_48++; + lbl_1_data_228 = -1; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3EC: + lbl_1_bss_4C++; + if (lbl_1_bss_14 == 0x3F48) { + lbl_1_data_22A = MGSeqCreate(1, 0x1E, -1, -1); + } + if (lbl_1_data_22A != -1) { + MGSeqParamSet(lbl_1_data_22A, 1, (0x468B - lbl_1_bss_14) / 60); + } + if (lbl_1_bss_30 != -1) { + lbl_1_bss_48 = 0x3ED; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3ED: + lbl_1_bss_4C++; + if ((lbl_1_data_228 < 0) && (lbl_1_bss_4C == 1)) { + if (lbl_1_data_22A != -1) { + MGSeqParamSet(lbl_1_data_22A, 2, -1); + } + lbl_1_data_228 = MGSeqCreate(3, 1); + if (lbl_1_data_22C != -1) { + HuAudSeqFadeOut(lbl_1_data_22C, 0x64); + lbl_1_data_22C = -1; + return; + } + } + else if (MGSeqStatGet(lbl_1_data_228) == 0) { + lbl_1_bss_48++; + lbl_1_bss_4C = 0; + if (lbl_1_bss_30 == 4) { + lbl_1_bss_30 = spC[0]->unk_08 == -1 ? 0 : (spC[1]->unk_08 == -1 ? 1 : lbl_1_bss_30); + return; + } + } + break; + case 0x3EE: + lbl_1_bss_4C++; + if (lbl_1_bss_4C == 1) { + if (lbl_1_bss_30 != 4) { + if (spC[lbl_1_bss_30]->unk_08 != -1) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(3); + } + GWPlayerCoinWinSet(spC[lbl_1_bss_30]->unk_04, 10); + } + else if (lbl_1_bss_30 == 4) { + HuAudSStreamPlay(4); + } + } + if ((210.0f + (lbl_1_bss_30 == 4 ? 0x1E : 0)) < lbl_1_bss_4C) { + lbl_1_data_228 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r29->func = fn_1_9A38; + } + break; + } +} + +void fn_1_7ECC(omObjData *var_r31) +{ + var_r31->model[0] = Hu3DModelCreateFile(0x500008); + Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowMapSet(var_r31->model[0]); + var_r31->model[1] = Hu3DModelCreateFile(0x500009); + var_r31->model[2] = Hu3DModelCreateFile(0x50000A); + Hu3DModelAttrSet(var_r31->model[2], HU3D_MOTATTR_LOOP); + var_r31->func = fn_1_6850; +} + +void fn_1_7F94(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float var_f31; + float var_f30; + float var_f29; + + HsfanimStruct01 *var_r31; + s16 var_r29; + + if (particle->unk_34 == 0) { + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + if (particle->unk_34 >= 0xFF) { + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0xFF; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 == 1) { + var_f31 = ((frand() & 0xFF) * 0x168) >> 8; + var_f30 = 0.5 + (1.5 * (rand8() / 256.0)); + var_r31->unk08.x = 2.5 * (var_f30 * sind(var_f31)); + var_r31->unk08.y = 4.5 * (var_f30 * cosd(var_f31)); + var_r31->unk08.y *= var_r31->unk08.y < 0.0f ? -0.5 : 1.0; + var_r31->unk08.x = (12.0 * (rand8() / 255.0)) - 6.0; + var_r31->unk08.y = 12.0 * (rand8() / 255.0); + var_r31->unk08.z = (rand8() / 255.0) - 0.5; + var_r31->unk34.x = 2.0f * var_r31->unk08.x; + var_r31->unk34.y = 10.0f + (2.0f * var_r31->unk08.y); + var_r31->unk34.z = 50.0f + (2.0f * var_r31->unk08.z); + var_r31->unk40.r = 0xFF; + var_r31->unk40.g = 0xFF; + var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 0xFF; + var_r31->unk2C = 50.0f; + } + if (var_r31->unk00 < 0xF0) { + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.9f; + var_r31->unk08.z *= 0.9f; + var_r31->unk08.y *= 0.9f; + var_r31->unk40.a = (var_r31->unk40.a * 0xB) / 12; + var_r31->unk2C += 1.01f; + if (var_r31->unk2C <= 0.0f) { + var_r31->unk2C = 0.0f; + } + if (var_r31->unk40.a == 0) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31->unk00 += var_r31->unk00 < 0x8000; + if (var_r31->unk00 >= 0xF0) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } +} + +void fn_1_8538(omObjData *var_r30) +{ + Vec sp60; + Vec sp54; + void *sp48; + + M449DllWork *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + M449DllWork *var_r25; + s32 var_r24; + s32 var_r23; + + var_r26 = -1; + var_r24 = -1; + var_r31 = var_r30->data; + sp48 = (&lbl_1_bss_54)[1 - var_r30->work[0]]->data; + memset(var_r31, 0, sizeof(M449DllWork)); + var_r31->unk_00 = var_r30->work[0]; + if ((GWPlayerCfg->character == 0xC) || (GWPlayerCfg[1].character == 0xC) || (GWPlayerCfg[2].character == 0xC) + || (GWPlayerCfg[3].character == 0xC)) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (GWPlayerCfg[var_r29].character == 0xC) { + var_r26 = var_r29; + } + } + var_r24 = GWPlayerCfg[var_r26].group == 0 ? 1 : 0; + if (var_r31->unk_00 == 0) { + var_r31->unk_04 = var_r24; + var_r23 = var_r26; + } + else { + var_r31->unk_04 = var_r26; + var_r23 = var_r24; + } + } + else { + var_r31->unk_04 = GWPlayerCfg[0].group == var_r31->unk_00 + ? 0 + : (GWPlayerCfg[1].group == var_r31->unk_00 + ? 1 + : (GWPlayerCfg[2].group == var_r31->unk_00 ? 2 : (GWPlayerCfg[3].group == var_r31->unk_00 ? 3 : 4))); + var_r23 = GWPlayerCfg->group == (1 - var_r31->unk_00) + ? 0 + : (GWPlayerCfg[1].group == (1 - var_r31->unk_00) + ? 1 + : (GWPlayerCfg[2].group == (1 - var_r31->unk_00) ? 2 : (GWPlayerCfg[3].group == (1 - var_r31->unk_00) ? 3 : 4))); + } + if (var_r31->unk_04 == 4) { + OSReport("m448:wrong player group\n"); + var_r31->unk_04 = var_r31->unk_00; + } + var_r31->unk_08 = ((var_r26 != -1) && (var_r31->unk_00 == 1)) != 0 ? -1 : GWPlayerCfg[var_r31->unk_04].character; + var_r31->unk_0C = ((var_r31->unk_08 == -1) || (GWPlayerCfg[var_r31->unk_04].iscom != 0)) != 0 ? -1 : GWPlayerCfg[var_r31->unk_04].pad_idx; + var_r31->unk_10 = var_r31->unk_0C != -1 ? 0 : GWPlayerCfg[var_r31->unk_04].diff; + var_r31->unk_18 = -1; + var_r31->unk_1C = 0; + var_r31->unk_48 = lbl_1_rodata_10[var_r31->unk_10]; + var_r31->unk_4C = 0; + var_r31->unk_214 = -1; + if (var_r31->unk_08 != -1) { + var_r30->model[0] = CharModelCreate(var_r31->unk_08, 1); + } + else { + var_r30->model[0] = Hu3DModelCreateFile(0x50001B); + } + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00 + 2], &sp54); + omSetTra(var_r30, sp54.x, sp54.y, sp54.z); + if (var_r30->trans.x == -360.0f) { + var_r30->trans.x = -350.0f; + } + omSetRot(var_r30, 0.0f, (var_r31->unk_00 * 0xB4) + 0x5A, 0.0f); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r31->unk_08 != -1) { + var_r30->motion[var_r29] + = CharModelMotionCreate(var_r31->unk_08, lbl_1_data_90[var_r29] + (lbl_1_data_B0[var_r29] != 0 ? var_r31->unk_08 : 0)); + } + else { + var_r30->motion[var_r29] = Hu3DJointMotionFile(var_r30->model[0], lbl_1_data_A0[var_r29]); + } + } + Hu3DMotionSet(var_r30->model[0], var_r30->motion[0]); + Hu3DMotionTimeSet(var_r30->model[0], 20.0f); + Hu3DModelAttrSet(var_r30->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30->model[0]); + CharModelVoiceEnableSet(var_r31->unk_08, var_r30->motion[3], 0); + lbl_1_data_23C[var_r31->unk_00] = var_r31->unk_00 == 0 ? (rand8() % 3) : ((lbl_1_data_23C[0] + ((rand8() % 2)) + 1) % 3); + if (var_r31->unk_00 == 0) { + for (var_r29 = 0; var_r29 < 3; var_r29++) { + M449DllUnkStruct sp6C = { + { 0x0050000B, 0x0050000D, 0x0050000F, 0x00500011 }, + { 0x0050000C, 0x0050000E, 0x00500010, 0x00500012 }, + }; + do { + while (TRUE) { + var_r27 = rand8() % 4; + if (lbl_1_data_230[0] == var_r27) { + continue; + } + if (lbl_1_data_230[1] == var_r27) { + continue; + } + break; + } + } while (lbl_1_data_230[2] == var_r27); + lbl_1_data_230[var_r29] = var_r27; + var_r30->model[var_r29 + 1] = Hu3DModelCreateFile(sp6C.unk_00[var_r27]); + var_r30->model[var_r29 + 4] = Hu3DModelCreateFile(sp6C.unk_10[var_r27]); + } + var_r30->model[11] = Hu3DModelCreateFile(0x500013); + } + else { + for (var_r29 = 0; var_r29 < 3; var_r29++) { + var_r30->model[var_r29 + 1] = Hu3DModelLink(lbl_1_bss_54->model[var_r29 + 1]); + var_r30->model[var_r29 + 4] = Hu3DModelLink(lbl_1_bss_54->model[var_r29 + 4]); + } + var_r30->model[11] = Hu3DModelLink(lbl_1_bss_54->model[11]); + } + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00], &sp54); + for (var_r29 = 0; var_r29 < 3; var_r29++) { + if (var_r29 != 0) { + Hu3DModelAttrSet(var_r30->model[var_r29 + 1], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(var_r30->model[var_r29 + 1], sp54.x, sp54.y, sp54.z); + Hu3DModelPosSet(var_r30->model[var_r29 + 4], sp54.x, sp54.y, sp54.z); + Hu3DModelShadowSet(var_r30->model[var_r29 + 1]); + } + Hu3DModelPosSet(var_r30->model[11], sp54.x, sp54.y, sp54.z); + Hu3DModelShadowSet(var_r30->model[11]); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 == 0) { + var_r30->model[var_r29 + 0xC] = Hu3DModelCreateFile(var_r31->unk_00 == 0 ? 0x500014 : 0x500015); + } + else { + var_r30->model[var_r29 + 0xC] = Hu3DModelLink(var_r30->model[12]); + } + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00], &sp54); + Hu3DModelObjPosGet(var_r30->model[4], lbl_1_data_138[var_r29], &sp60); + var_r31->unk_60[var_r29] = sp60.x - sp54.x; + var_r31->unk_80[var_r29] = sp60.z - sp54.z; + var_r31->unk_90[var_r29] = var_r31->unk_B0[var_r29] = 0.0f; + Hu3DModelPosSet(var_r30->model[var_r29 + 0xC], sp60.x, sp60.y, sp60.z); + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r28 = var_r29 + 7; + Hu3DModelObjPosGet(var_r30->model[4], lbl_1_data_138[var_r29], &sp60); + var_r30->model[var_r28] = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(0x120003, 0x10000000)), 0x32); + Hu3DModelPosSet(var_r30->model[var_r28], 2000.0f, -2000.0f, -2000.0f); + Hu3DModelScaleSet(var_r30->model[var_r28], 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30->model[var_r28], 3); + Hu3DModelAttrReset(var_r30->model[var_r28], HU3D_ATTR_DISPOFF); + Hu3DParticleColSet(var_r30->model[var_r28], 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30->model[var_r28], 5.0f); + Hu3DParticleHookSet(var_r30->model[var_r28], fn_1_7F94); + Hu3DParticleCntSet(var_r30->model[var_r28], 0xFF); + } + if (var_r31->unk_00 == 1) { + for (var_r29 = 0; var_r29 < 0x12; var_r29++) { + s32 sp4C[2] = { 0x64, 0x1E5 }; + s32 spD4[0x12] = { 0, 0, -14, 16, 46, -14, 16, 46, -50, 0, 0, -14, 16, 46, -14, 16, 46, -50 }; + s32 sp8C[0x12] = { 0, 0, -2, -2, -2, -2, -2, -2, 0, 0, 0, -2, -2, -2, -2, -2, -2, 0 }; + if ((lbl_1_data_0[var_r29] + 0xFF9F0000) == 0) { + var_r25 = (&lbl_1_bss_54)[var_r29 == 8 ? 0 : (var_r29 == 0x11 ? 1 : 0)]->data; + lbl_1_data_48[var_r29] = espEntry(var_r25->unk_08 == -1 ? 0x500018 : (var_r25->unk_08 + lbl_1_data_0[var_r29]), 0, 0); + } + else { + lbl_1_data_48[var_r29] = espEntry(lbl_1_data_0[var_r29], 0, 0); + } + espDrawNoSet(lbl_1_data_48[var_r29], 0); + espAttrSet(lbl_1_data_48[var_r29], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_data_48[var_r29], 0); + espPriSet(lbl_1_data_48[var_r29], 0x80 - var_r29); + espPosSet(lbl_1_data_48[var_r29], spD4[var_r29] + sp4C[var_r29 < 9 ? 0 : 1], sp8C[var_r29] + 0x46); + if ((var_r29 >= 9 ? (var_r29 - 9) : var_r29) != 0) { + (void)var_r29; + continue; + } + else { + espTPLvlSet(lbl_1_data_48[var_r29], 0.5f); + espColorSet(lbl_1_data_48[var_r29], 0, 0, 0); + } + } + } + var_r30->func = fn_1_758; +} + +void fn_1_94F8(omObjData *var_r31) +{ + lbl_1_bss_48 = 0x3E8; + lbl_1_bss_4C = 0; + lbl_1_bss_40 = 0; + lbl_1_bss_3C = 0; + if (lbl_1_bss_64[0].unk_00 < 2) { + lbl_1_bss_64[0].unk_04[lbl_1_bss_64[0].unk_00] = 0.0f; + lbl_1_bss_64[0].unk_00++; + } + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + var_r31->func = fn_1_7544; +} + +void ObjectSetup(void) +{ + s32 var_r31; + omObjData *var_r30; + + OSReport("******* M449 ObjectSetup *********\n"); + lbl_1_bss_38 = omInitObjMan(0x258, 0x2000); + omGameSysInit(lbl_1_bss_38); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 2500.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -40.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec sp3C = { 0.0f, 0.0f, 0.0f }; + Vec sp30 = { -0.5850064f, -0.788462f, 0.1545085f }; + Vec sp24; + Vec sp18; + Vec spC; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + lbl_1_bss_34 = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + Hu3DGLightStaticSet(lbl_1_bss_34, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_34); + sp24.x = 0.0f; + sp24.y = 10000.0f; + sp24.z = 0.0f; + sp18.x = 0.0f; + sp18.y = 1.0f; + sp18.z = 0.0f; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = 0.5f; + Hu3DShadowCreate(6.0f, 9000.0f, 11500.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + Hu3DShadowSizeSet(0xE0); + lbl_1_data_228 = -1; + lbl_1_bss_30 = -1; + HuWinInit(1); + lbl_1_bss_50 = omAddObjEx(lbl_1_bss_38, 0x64, 3, 0, 1, fn_1_7ECC); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = (&lbl_1_bss_54)[var_r31] = omAddObjEx(lbl_1_bss_38, 0x65, 0x14, 4, 0, fn_1_8538); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M449DllWork), MEMORY_DEFAULT_NUM); + var_r30->work[0] = var_r31; + } + lbl_1_bss_5C = omAddObjEx(lbl_1_bss_38, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_60 = omAddObjEx(lbl_1_bss_38, 0x67, 0, 0, -1, fn_1_94F8); +} + +void fn_1_9A38(omObjData *arg0) +{ + void *sp8; + s32 var_r31; + + if (WipeStatGet() == 0) { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + sp8 = (&lbl_1_bss_54)[var_r31]->data; + } + if (lbl_1_data_228 >= 0) { + MGSeqKill(lbl_1_data_228); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c new file mode 100644 index 00000000..4610c4b3 --- /dev/null +++ b/src/REL/m450Dll/main.c @@ -0,0 +1,7747 @@ +#include "REL/executor.h" +#include "datadir_enum.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/mtx/GeoTypes.h" +#include "dolphin/pad.h" +#include "dolphin/types.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" + +#include "game/gamework.h" +#include "game/gamework_data.h" + +#include "game/mapspace.h" +#include "game/pad.h" +#include "game/printfunc.h" + +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "game/esprite.h" +#include "game/sprite.h" + +#include "ext_math.h" + +#include "game/window.h" +#include "string.h" +#include "version.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/hsfex.h" + +void HuSysVWaitSet(s16 vcount); +#endif + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_358_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_358_struct *unk04; + /* 0x08 */ struct unk_bss_358_struct *unk08; +} UnkBss358Struct; // Size 0xC + +typedef struct unk_bss_340_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_340_struct *unk10; + /* 0x14 */ struct unk_bss_340_struct *unk14; +} UnkBss340Struct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; +} UnkBss1B0Struct; // Size 8 + +UnkBss358Struct lbl_1_bss_358; +UnkBss340Struct lbl_1_bss_340; +Process *lbl_1_bss_33C; +Vec lbl_1_bss_330; +Vec lbl_1_bss_324; +Vec lbl_1_bss_318; +Vec lbl_1_bss_30C; +u32 lbl_1_bss_308; +s32 lbl_1_bss_304; +u32 lbl_1_bss_300; +s16 lbl_1_bss_2FE; +s16 lbl_1_bss_2FC; +s32 lbl_1_bss_2F8; +s32 lbl_1_bss_2F4; +float lbl_1_bss_2F0; +s32 lbl_1_bss_2B0[16]; +UnkBss1B0Struct lbl_1_bss_1B0[32]; + +void fn_1_0(void) +{ + lbl_1_bss_358.unk04 = NULL; + lbl_1_bss_358.unk08 = NULL; +} + +void fn_1_24(u16 arg0, s16 arg1) +{ + UnkBss358Struct *temp_r31; + UnkBss358Struct *temp_r30; + UnkBss358Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_358; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +s16 fn_1_AC(s16 arg0) +{ + UnkBss358Struct *var_r31; + UnkBss358Struct *temp_r29; + UnkBss358Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_358.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +void fn_1_150(void) +{ + lbl_1_bss_340.unk10 = NULL; + lbl_1_bss_340.unk14 = NULL; +} + +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ + UnkBss340Struct *temp_r27; + UnkBss340Struct *var_r31; + UnkBss340Struct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_340; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +void fn_1_2D8(void) +{ + UnkBss340Struct *var_r31; + UnkBss340Struct *temp_r28; + UnkBss340Struct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_340.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +void fn_1_414(void) +{ + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_1B0[i].unk00 = 0; + lbl_1_bss_1B0[i].unk04 = -1; + } +} + +s16 fn_1_46C(s32 arg0) +{ + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_1B0[i].unk00) { + return Hu3DModelLink(lbl_1_bss_1B0[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_1B0[i].unk00 == 0) { + lbl_1_bss_1B0[i].unk00 = arg0; + lbl_1_bss_1B0[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_1B0[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; + } + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / REFRESH_RATE; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +void fn_1_798(s32 arg0) +{ + lbl_1_bss_2F0 = 0.0f; + lbl_1_bss_300 = lbl_1_bss_304; + GWMGRecordSet(arg0, lbl_1_bss_300); + fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_304); +} + +void fn_1_9EC(void) +{ + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_2B0[i]); + } +} + +void fn_1_A40(void) +{ + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_2F0) { + lbl_1_bss_2F0 += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_2F0); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_2B0[i], temp_f31, temp_f31); + } + } +} + +void fn_1_B4C(float arg0, s32 arg1) +{ + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_2B0[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_2B0[15], 0.5f); + espColorSet(lbl_1_bss_2B0[15], 0, 0, 0); + espPosSet(lbl_1_bss_2B0[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_2B0[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_2B0[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_2B0[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_2B0[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_300); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_2B0[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_2B0[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_2B0, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_2B0[i], 0); + espDispOff(lbl_1_bss_2B0[i]); + espAttrSet(lbl_1_bss_2B0[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_2B0[i], 0x80 + i); + } +} + +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_330 = *arg0; + lbl_1_bss_318 = *arg2; +} + +s32 fn_1_13DC(float arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_330, &lbl_1_bss_324, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_318, &lbl_1_bss_30C, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } + else { + lbl_1_bss_2F4 = 1; + return 0; + } +} + +void fn_1_1710(float arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_330, &lbl_1_bss_324, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_318, &lbl_1_bss_30C, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_2F4 = 1; +} + +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + MTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + MTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + MTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +float fn_1_1E20(float arg0, float arg1, float arg2) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_1F24(s32 arg0) +{ + lbl_1_bss_2F8 = HuAudSeqPlay((s32)arg0); +} + +void fn_1_1F58(s32 arg0) +{ + if (lbl_1_bss_2F8 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_2F8, arg0); + } + lbl_1_bss_2F8 = -1; +} + +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } + else { + var_r30 = 1; + } + } + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); +} + +typedef struct UnkData1380Struct { + /* 0x00 */ char **unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ s32 *unk_24; + /* 0x28 */ s32 *unk_28; + /* 0x2C */ s32 *unk_2C; + /* 0x30 */ Vec *unk_30; + /* 0x34 */ Vec *unk_34; +} UnkData1380Struct; /* size = 0x38 */ + +typedef struct UnkData1450Struct { + /* 0x00 */ char *unk_00; + /* 0x04 */ Vec unk_04; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; +} UnkData1450Struct; /* size = 0x24 */ + +typedef struct UnkData5CCStruct { + /* 0x00 */ char *unk_00; + /* 0x04 */ u32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ float unk_0C; +} UnkData5CCStruct; /* size = 0x10 */ + +typedef struct UnkDataA0CStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 *unk_18; +} UnkDataA0CStruct; /* size = 0x1C */ + +typedef struct UnkData94CStruct { + /* 0x00 */ s32 unk_00; + /* 0x00 */ float unk_04; + /* 0x00 */ float unk_08; + /* 0x00 */ float unk_0C; + /* 0x00 */ u32 unk_10; +} UnkData94CStruct; /* size = 0x14 */ + +typedef struct UnkDataA80Struct { + char *unk_00; + Vec unk_04; + s32 unk_10; + float unk_14; + Vec unk_18; + s32 unk_24; + s32 unk_28; +} UnkDataA80Struct; /* size = 0x2C */ + +typedef struct UnkData204Struct { + float unk_00; + s32 unk_04; +} UnkData204Struct; /* size = 0x08 */ + +// these are copied from m461Dll/main.c +typedef void (*PlayerOldHook)(omObjData *obj); +typedef Vec *(*PlayerOldPosHook)(omObjData *obj); + +typedef struct work_playerold { + omObjData *unk_00; + PlayerOldHook unk_04; + PlayerOldPosHook unk_08; + PlayerOldHook unk_0C; + PlayerOldHook unk_10; + s32 *unk_14; + s32 unk_18; + s32 unk_1C; + s32 unk_20; + s32 unk_24; + s32 unk_28; + s32 unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C; + s32 unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + Vec *unk_50; + Vec unk_54; + float unk_60; + s32 unk_64; + Vec *unk_68; + Vec unk_6C; + Vec unk_78; + Vec unk_84; + Vec unk_90; + float unk_9C; + float unk_A0; + float unk_A4; + float unk_A8; + Vec unk_AC; + float unk_B8; + float unk_BC; + float unk_C0; +} WorkPlayerOld; + +typedef WorkPlayerOld *(*PlayerOldFind)(int no); + +typedef struct UnkM450Struct5 { + WorkPlayerOld unk_00; + UnkData94CStruct *unk_C4; + float unk_C8; + float unk_CC; + Vec unk_D0; + Vec unk_DC; + float unk_E8; + float unk_EC; + s32 unk_F0; + s32 unk_F4; + float unk_F8; + u32 unk_FC; + s32 unk_100; + s32 unk_104; + s32 unk_108; + s32 unk_10C; + s32 unk_110; + s32 unk_114; + s32 unk_118; + s32 unk_11C; + s32 unk_120; +} UnkM450Struct5; /* size = 0x124 */ + +typedef struct UnkM450Struct4 { + Vec unk_00; + Vec unk_0C; + Vec unk_18; + Vec unk_24; + Vec unk_30; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + float unk_4C; + float unk_50; + s32 unk_54; + s32 unk_58; + float unk_5C; + float unk_60; + Vec unk_64; + s32 unk_70; + s32 unk_74; + s32 unk_78; + s32 unk_7C; +} UnkM450Struct4; /* size = 0x80 */ + +typedef struct UnkM450Struct3 { + WorkPlayerOld unk_00; + UnkData204Struct *unk_C4; + Vec2f *unk_C8; + char *unk_CC; + float *unk_D0; + Vec unk_D4; + float unk_E0; + float unk_E4; + float unk_E8; + float unk_EC; + float unk_F0; + float unk_F4; + s32 unk_F8; + s32 unk_FC; + float unk_100; + float unk_104; + float unk_108; + s32 unk_10C; + s32 unk_110; + Vec unk_114; + Vec unk_120; + s32 unk_12C; + s32 unk_130; + s32 unk_134; + s32 unk_138; + s32 unk_13C; + s32 unk_140; + float unk_144; + s32 unk_148; + s32 unk_14C; + s32 unk_150; + u32 unk_154; +} UnkM450Struct3; /* size = 0x158 */ + +typedef struct UnkM450Struct2 { + s32 unk_00; + Vec unk_04; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + Vec unk_30; + s16 unk_3C; + s16 unk_3E; +} UnkM450Struct2; /* size = 0x40 */ + +typedef void (*UnkM450ModelFunc)(ModelData *, struct UnkM450Struct *, Mtx); + +typedef struct UnkM450Struct { + UnkM450ModelFunc unk_00; + AnimData *unk_04; + Vec *unk_08; + float *unk_0C; + UnkM450Struct2 *unk_10; + Vec *unk_14; + Vec2f *unk_18; + Vec2f *unk_1C; + GXColor *unk_20; + void *unk_24; + Vec unk_28; + float unk_34; + float unk_38; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + float unk_4C; + float unk_50; + float unk_54; + u32 unk_58; + float unk_5C; + float unk_60; + s16 unk_64; + s16 unk_66; + s16 unk_68; + u8 unk_6A; + u8 unk_6B; +} UnkM450Struct; /* size = 0x6C */ + +s32 fn_1_125C0(s32 arg0, s32 arg1); +s32 fn_1_13B90(s32 arg0); +Vec *fn_1_16314(s32 arg0); +void fn_1_16BC4(Vec *arg0, Vec *arg1, s32 arg2); +void fn_1_17360(Vec *arg0, float arg8); +void fn_1_17970(s32 arg0, s32 arg1, float arg8); +void fn_1_18424(s32 arg0, Vec *arg1); +void fn_1_186A8(); +s32 fn_1_1964C(Vec *arg0, Vec *arg1); +s32 fn_1_19798(); +s32 fn_1_19A10(WorkPlayerOld *arg0, Vec *arg1); +s32 fn_1_1B4C8(UnkM450Struct5 *arg0); +void fn_1_1B510(s32 arg0); +s32 fn_1_1C39C(UnkM450Struct5 *arg0); +void fn_1_20170(omObjData *object); +void fn_1_2902C(); +void fn_1_298EC(omObjData *object); +void fn_1_A968(s32 arg0, float arg8, u32 arg1, s32 arg2, float arg9); +s32 fn_1_E0E8(s32 arg0, s32 arg1); +s32 fn_1_E178(s32 arg0, s32 arg1); +void fn_1_E1A8(s32 arg0, s32 arg1, float arg8, u32 arg2, s32 arg3, float arg9); + +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_10[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +float lbl_1_data_30[0xA] = { 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 100.0f }; + +float lbl_1_data_58[0xA] = { + 150.0f, + 170.0f, + 190.0f, + 170.0f, + 160.0f, + 150.0f, + 180.0f, + 200.0f, + 150.0f, + 200.0f, +}; + +PlayerOldFind lbl_1_bss_1AC; +float lbl_1_bss_1A8; +omObjData *lbl_1_bss_1A4; +omObjData *lbl_1_bss_1A0; +omObjData *lbl_1_bss_144[0x17]; +omObjData **lbl_1_bss_140; +omObjData **lbl_1_bss_13C; +// data: UnkM450Struct5 +omObjData *lbl_1_bss_138; +// data: UnkM450Struct3 +omObjData *lbl_1_bss_134; +// data: UnkM450Struct3 +omObjData **lbl_1_bss_130; +float lbl_1_bss_12C; +float lbl_1_bss_128; +float lbl_1_bss_124; +s32 lbl_1_bss_120; +s32 lbl_1_bss_11C; +s32 lbl_1_bss_118; +s32 lbl_1_bss_114; +s32 lbl_1_bss_110; +s32 lbl_1_bss_10C; +s32 lbl_1_bss_108; +UnkDataA80Struct *lbl_1_bss_104; +s32 lbl_1_bss_100; +UnkData1380Struct *lbl_1_bss_FC; +s32 lbl_1_bss_F8; +Vec lbl_1_bss_EC; +void *lbl_1_bss_E8[1]; +UnkM450Struct4 *lbl_1_bss_E4[1]; +UnkM450Struct4 *lbl_1_bss_DC[2]; +s32 lbl_1_bss_D8; +Vec lbl_1_bss_CC; +float lbl_1_bss_C8; +s32 lbl_1_bss_C4; +s32 lbl_1_bss_B8[3]; +Mtx lbl_1_bss_88; +Vec lbl_1_bss_4C[5]; +Vec lbl_1_bss_34[2]; +s16 lbl_1_bss_2C[4]; +AnimData *lbl_1_bss_28; +s16 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +AnimData *lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +#if VERSION_NTSC +#define _1606_BY_REFRESH_RATE 26.766666f +#else +#define _1606_BY_REFRESH_RATE 32.120003f +#endif + +void fn_1_23B4(WorkPlayerOld *player) +{ + s32 i; + for (i = 0; i < 8; i++) { + if (player->unk_44 == player->unk_14[i]) { + player->unk_40 = lbl_1_data_10[i]; + return; + } + } + player->unk_40 = -1; +} + +void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, Vec *posB, float bYOfs) +{ + Vec pointA = *posA; + Vec pointB = *posB; + float dist; + pointA.y += aYOfs; + pointB.y += bYOfs; + dist = VECDistance(&pointA, &pointB); + if (*minDist > dist) { + *minDist = dist; + *state = stateNew; + } +} + +void fn_1_24F8(WorkPlayerOld *player1, WorkPlayerOld *player2, float *minDist, s32 *state) +{ + *minDist = 10 * (player1->unk_BC + player2->unk_BC); + fn_1_2418(minDist, state, 0, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_BC); + fn_1_2418(minDist, state, 1, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC); + fn_1_2418(minDist, state, 2, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC); + fn_1_2418(minDist, state, 3, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_BC); +} + +s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2) +{ + Vec dir; + Vec dir2; + float dist; + + player->unk_3C |= 0x1; + player->unk_90.x = player->unk_20 / 4.0f; + player->unk_90.z = -(float)player->unk_24 / 4.0f; + if (player->unk_90.x != 0.0f || player->unk_90.z != 0.0f) { + return; + } + VECSubtract(&player->unk_6C, &player2->unk_6C, &dir); + dist = VECMagXZ(&dir); + if (0.0f == dist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= dist; + dir.z /= dist; + } + VECSubtract(&player->unk_6C, &player->unk_78, &dir2); + dist = VECMagXZ(&dir2); + if (5 > dist) { + dist = 5; + } + player->unk_90.x = dir.x * dist; + player->unk_90.z = dir.z * dist; +} + +void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2) +{ + player->unk_38 = 1; + player->unk_84.y = arg1; + player->unk_A4 = arg2; + if (player->unk_3C & 0x2) { + player->unk_3C &= ~0x2; + } +} + +void fn_1_2C00(PlayerOldFind find, float yDist) +{ + lbl_1_bss_1AC = find; + lbl_1_bss_1A8 = yDist; +} + +void fn_1_2C1C(WorkPlayerOld *player, omObjData *obj, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, Vec *pos, float arg7) +{ + player->unk_00 = obj; + player->unk_18 = arg2; + player->unk_1C = arg3; + player->unk_14 = arg4; + player->unk_04 = NULL; + player->unk_08 = NULL; + player->unk_0C = NULL; + player->unk_10 = NULL; + player->unk_50 = NULL; + player->unk_64 = 0; + player->unk_68 = NULL; + player->unk_38 = 0; + player->unk_3C = 0; + player->unk_44 = arg5; + player->unk_48 = 0; + player->unk_4C = 0; + fn_1_23B4(player); + player->unk_9C = arg7; + player->unk_6C = *pos; + player->unk_78 = *pos; + player->unk_84.x = 0; + player->unk_84.y = 0; + player->unk_84.z = 0; + player->unk_B8 = 1; + player->unk_A8 = 0; + player->unk_BC = lbl_1_data_30[player->unk_1C]; + player->unk_C0 = lbl_1_data_58[player->unk_1C]; +} + +void fn_1_2DA8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_04 = func; +} + +void fn_1_2DB0(WorkPlayerOld *player, PlayerOldPosHook func) +{ + player->unk_08 = func; +} + +void fn_1_2DB8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_0C = func; +} + +void fn_1_2DC0(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_10 = func; +} + +void fn_1_2DC8(WorkPlayerOld *player, s32 count, Vec *data) +{ + player->unk_64 = count; + player->unk_68 = data; +} + +void fn_1_2DD4(WorkPlayerOld *player) +{ + omSetTra(player->unk_00, player->unk_6C.x, player->unk_6C.y, player->unk_6C.z); + omSetRot(player->unk_00, 0.0f, player->unk_9C, 0.0f); +} + +void fn_1_2E34(WorkPlayerOld *player) +{ + BOOL addTime; + s32 i; + player->unk_3C &= ~0x100; + if (player->unk_3C & 0x8) { + return; + } + if (NULL == lbl_1_bss_1AC) { + return; + } + addTime = FALSE; + for (i = 0; i < 4; i++) { + WorkPlayerOld *player2 = lbl_1_bss_1AC(i); + BOOL fixPos; + float minDist; + s32 state; + if (player == player2) { + continue; + } + if (player2->unk_3C & 0x8) { + continue; + } + fixPos = FALSE; + fn_1_24F8(player, player2, &minDist, &state); + if (minDist < player->unk_BC + player2->unk_BC) { + if (state < 2) { + fixPos = TRUE; + if (player->unk_38 == 1) { + fn_1_2824(player, player2); + } + } + else { + if (state == 2 && player->unk_38 == 1) { + fn_1_2824(player, player2); + player->unk_3C |= 0x100; + player->unk_A4 = 0; + if (!(player2->unk_3C & 0x100)) { + player->unk_84.y = _1606_BY_REFRESH_RATE; + } + } + if (state == 3) { + fixPos = TRUE; + if (player->unk_38 == 1) { + if (0.0f < player->unk_84.y) { + player->unk_84.y = 0.0f; + } + player->unk_A4 = 0; + } + } + } + } + if (fixPos) { + Vec dir; + addTime = TRUE; + VECSubtract(&player->unk_6C, &player2->unk_6C, &dir); + if (0.0f == minDist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= minDist; + dir.z /= minDist; + } + player->unk_6C.x = player2->unk_6C.x + (dir.x * (player->unk_BC + player2->unk_BC)); + player->unk_6C.z = player2->unk_6C.z + (dir.z * (player->unk_BC + player2->unk_BC)); + } + } + if (addTime) { + player->unk_4C++; + } + else { + player->unk_4C = 0; + } +} + +float fn_1_39C4(WorkPlayerOld *player, float arg2) +{ + Vec *pos; + s32 i; + AddX = 0.0f; + AddZ = 0.0f; + MapWall(player->unk_BC, player->unk_6C.x, arg2 + player->unk_BC, player->unk_6C.z); + player->unk_6C.x += AddX; + player->unk_6C.z += AddZ; + if (NULL != player->unk_68) { + for (pos = player->unk_68, i = 0; i < player->unk_64; i++, pos += 2) { + int num = 0; + if (pos[0].x == pos[1].x || pos[0].x > player->unk_6C.x || pos[1].x < player->unk_6C.x) { + num++; + } + if (pos[0].y == pos[1].y || pos[0].y > player->unk_6C.y || pos[1].y < player->unk_6C.y) { + num++; + } + if (pos[0].z == pos[1].z || pos[0].z > player->unk_6C.z || pos[1].z < player->unk_6C.z) { + num++; + } + if (num == 3) { + if (pos[0].x != pos[1].x) { + if (pos[0].x > player->unk_6C.x) { + player->unk_6C.x = pos[0].x + player->unk_BC; + } + if (pos[1].x < player->unk_6C.x) { + player->unk_6C.x = pos[1].x - player->unk_BC; + } + } + if (pos[0].y != pos[1].y) { + if (pos[0].y > player->unk_6C.y) { + player->unk_6C.y = pos[0].y; + } + if (pos[1].y < player->unk_6C.y) { + player->unk_6C.y = pos[1].y; + } + } + if (pos[0].z != pos[1].z) { + if (pos[0].z > player->unk_6C.z) { + player->unk_6C.z = pos[0].z + player->unk_BC; + } + if (pos[1].z < player->unk_6C.z) { + player->unk_6C.z = pos[1].z - player->unk_BC; + } + } + } + } + } + return ABS(AddX) + ABS(AddZ); +} + +void fn_1_3CE0(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + if (0.5f <= player->unk_A0) { + if (7.0f <= player->unk_A0) { + *state = 2; + } + else { + *state = 1; + } + } + + if (player->unk_14[3] >= 0 && (player->unk_28 & 0x100)) { + fn_1_2BD0(player, _1606_BY_REFRESH_RATE, 1.0f); + *motAttr = HU3D_MOTATTR_NONE; + *state = 3; + } +} + +void fn_1_3DB8(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (0.0f < player->unk_A4) { + if (player->unk_2C & 0x100) { + player->unk_A4++; + if (4.0f < player->unk_A4) { + player->unk_A4 = 0; + } + else { + player->unk_84.y += 219.0f / REFRESH_RATE; + } + } + else { + player->unk_A4 = 0; + } + } + player->unk_84.y += -146.0f / REFRESH_RATE; + if (player->unk_14[5] >= 0 && (player->unk_28 & 0x140)) { + player->unk_38 = 3; + player->unk_84.y = 0; + player->unk_3C &= ~0x3; + player->unk_3C |= 0x4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 5; + } +} + +void fn_1_3ECC(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if ((player->unk_3C & 0x1000) || Hu3DMotionEndCheck(player->unk_00->model[0])) { + player->unk_3C &= ~0x3; + if (player->unk_40 == 6) { + player->unk_38 = 4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 7; + } + else { + player->unk_38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } + } +} + +void fn_1_3F84(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) { + fn_1_2BD0(player, 0.0f, 0.0f); + } +} + +void fn_1_4024(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) { + player->unk_3C &= ~0x4; + player->unk_38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } +} + +void fn_1_40C0(WorkPlayerOld *player) +{ + u32 motAttr = HU3D_MOTATTR_NONE; + s32 state = -1; + float temp_f28; + float temp_f23; + float temp_f22; + Vec *pos; + BOOL temp_r27; + if (player->unk_3C & 0x1) { + player->unk_84.x = player->unk_90.x; + player->unk_84.z = player->unk_90.z; + } + else { + player->unk_84.x = player->unk_20 / 4.0f; + player->unk_84.z = -(float)player->unk_24 / 4.0f; + if (player->unk_38 == 1 && 0.0f == player->unk_84.x && 0.0f == player->unk_84.z) { + player->unk_84.x = 0.98f * (player->unk_6C.x - player->unk_78.x); + player->unk_84.z = 0.98f * (player->unk_6C.z - player->unk_78.z); + } + if (player->unk_3C & 0x14) { + player->unk_84.x = 0; + player->unk_84.z = 0; + player->unk_28 = 0; + } + } + player->unk_78 = player->unk_6C; + player->unk_A0 = VECMagXZ(&player->unk_84); + if (0.5f <= player->unk_A0) { + if (10.0f <= player->unk_A0) { + player->unk_84.x /= player->unk_A0; + player->unk_84.z /= player->unk_A0; + player->unk_A0 = 10; + player->unk_84.x = 10 * player->unk_84.x; + player->unk_84.z = 10 * player->unk_84.z; + } + } + else { + player->unk_84.x = 0; + player->unk_84.z = 0; + player->unk_A0 = 0; + } + player->unk_84.x *= player->unk_B8; + player->unk_84.z *= player->unk_B8; + player->unk_A0 *= player->unk_B8; + if (player->unk_3C & 0x800) { + player->unk_28 |= 0x100; + player->unk_2C |= 0x100; + if (player->unk_38 == 1) { + if (0.0f == player->unk_A4) { + player->unk_3C &= ~0x800; + } + } + } + switch (player->unk_38) { + case 0: + fn_1_3CE0(player, &state, &motAttr); + break; + + case 1: + fn_1_3DB8(player, &state, &motAttr); + break; + + case 2: + fn_1_3ECC(player, &state, &motAttr); + break; + + case 3: + fn_1_3F84(player, &state, &motAttr); + break; + + case 4: + fn_1_4024(player, &state, &motAttr); + break; + + default: + OSReport("*** player action error(%d)!!\n", player->unk_38); + break; + } + if (player->unk_3C & 0x2000) { + player->unk_84.y = 0; + } + temp_f28 = 0.0f; + if (50.0f < ABS(player->unk_84.y)) { + player->unk_84.y = 50.0f * ((0.0f > player->unk_84.y) ? -1 : 1); + } + if (player->unk_3C & 0x2) { + Mtx rotMtx; + MTXRotDeg(rotMtx, 'y', player->unk_50[2].x - player->unk_60); + MTXMultVec(rotMtx, &player->unk_54, &player->unk_54); + VECAdd(&player->unk_54, &player->unk_50[0], &player->unk_6C); + player->unk_9C += player->unk_50[2].x - player->unk_60; + } + temp_f22 = player->unk_6C.y; + VECAdd(&player->unk_6C, &player->unk_84, &player->unk_6C); + if ((player->unk_3C & 0x1) == 0 && (0.0f != player->unk_84.x || 0.0f != player->unk_84.z)) { + player->unk_9C = fn_1_1E20(player->unk_9C, atan2d(player->unk_84.x, player->unk_84.z), 0.4f * player->unk_B8); + } + temp_f28 += fn_1_39C4(player, temp_f22); + if (nMap == 0) { + player->unk_A8 = lbl_1_bss_1A8; + } + else { + player->unk_A8 = MapPos(player->unk_6C.x, player->unk_6C.y, player->unk_6C.z, player->unk_C0, &player->unk_AC); + } + temp_r27 = FALSE; + if (NULL != player->unk_08) { + pos = player->unk_08(player->unk_00); + if (NULL != pos) { + if (player->unk_A8 < pos[1].y) { + temp_r27 = TRUE; + player->unk_50 = pos; + player->unk_A8 = pos[1].y; + } + } + } + if (!temp_r27 && (player->unk_3C & 0x2)) { + player->unk_3C &= ~0x2; + } + if (player->unk_38 == 1 && player->unk_A8 >= player->unk_6C.y) { + player->unk_38 = 2; + player->unk_3C &= ~0x3; + player->unk_6C.y = player->unk_A8; + player->unk_84.y = 0; + motAttr = HU3D_MOTATTR_NONE; + state = 4; + if (player->unk_40 == 5) { + state = 6; + if (NULL != player->unk_10) { + player->unk_10(player->unk_00); + } + if (player->unk_18 < 4) { + omVibrate(player->unk_18, 12, 4, 2); + } + } + if (player->unk_3C & 0x200) { + state = -1; + if (NULL != player->unk_0C) { + player->unk_0C(player->unk_00); + } + } + if (temp_r27) { + player->unk_3C |= 0x2; + } + } + temp_f23 = player->unk_6C.y - player->unk_A8; + if (player->unk_38 == 0 && 10.0f < temp_f23) { + if ((player->unk_3C & 0x2000) == 0) { + if ((player->unk_3C & 0x400) != 0) { + player->unk_3C |= 0x800; + } + else { + fn_1_2BD0(player, 0.0f, 0.0f); + + motAttr = HU3D_MOTATTR_NONE; + state = 3; + } + } + } + else if (temp_r27) { + if (!(player->unk_3C & 0x2)) { + player->unk_6C.y = player->unk_A8; + player->unk_3C |= 0x2; + } + } + fn_1_2E34(player); + if (NULL != player->unk_04) { + player->unk_04(player->unk_00); + } + temp_f28 += fn_1_39C4(player, player->unk_6C.y); + if (player->unk_3C & 0x2) { + player->unk_60 = player->unk_50[2].x; + VECSubtract(&player->unk_6C, &player->unk_50[0], &player->unk_54); + } + if (0.0f != temp_f28) { + player->unk_48++; + } + else { + player->unk_48 = 0; + } + if (state >= 0 && player->unk_40 != state) { + player->unk_40 = state; + player->unk_44 = player->unk_14[player->unk_40]; + if (player->unk_44 >= 0 && !(player->unk_3C & 0x20)) { + Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, motAttr); + } + } +} + +void fn_1_4ED8(WorkPlayerOld *player, s32 motNo) +{ + s32 i; + player->unk_44 = motNo; + player->unk_38 = 0; + player->unk_3C &= 0x1400; + player->unk_78 = player->unk_6C; + player->unk_84.x = 0; + player->unk_84.y = 0; + player->unk_84.z = 0; + fn_1_23B4(player); + if (player->unk_40 == 3) { + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]); + Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1); + } + else if (player->unk_40 == 5) { + player->unk_38 = 3; + player->unk_3C |= 0x4; + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]); + Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1); + } + else { + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, HU3D_MOTATTR_LOOP); + } +} + +void fn_1_5128(WorkPlayerOld *player, s32 attr) +{ + player->unk_3C |= attr; +} + +void fn_1_5138(WorkPlayerOld *player, s32 attr) +{ + player->unk_3C &= ~attr; +} + +void fn_1_5148(ModelData *model, UnkM450Struct *arg1, Mtx matrix) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + UnkM450Struct2 *var_r31; + WorkPlayerOld *var_r29; + GXColor *var_r28; + s16 var_r27; + UnkM450Struct5 *var_r26; + + var_r26 = lbl_1_bss_138->data; + var_r29 = &var_r26->unk_00; + var_r31 = arg1->unk_10; + var_r28 = arg1->unk_20; + arg1->unk_66 = 0; + for (var_r27 = 0; var_r27 < arg1->unk_64; var_r27++, var_r31++, var_r28++) { + if (var_r31->unk_3E >= 0) { + var_r31->unk_10 += var_r31->unk_1C; + if (var_r31->unk_20 < var_r31->unk_10) { + var_r31->unk_3E = -1; + } + else { + arg1->unk_66++; + if (NULL != arg1->unk_08) { + var_r31->unk_04 = *arg1->unk_08; + } + if (NULL != arg1->unk_0C) { + var_r31->unk_14 = *arg1->unk_0C; + } + var_r31->unk_30.x = var_r31->unk_04.x + (var_r31->unk_10 * sind((var_r31->unk_14 + var_r31->unk_18))); + var_r31->unk_30.y = var_r31->unk_30.y + (0.03f * (var_r31->unk_24 - var_r31->unk_30.y)); + var_r31->unk_30.z = var_r31->unk_04.z + (var_r31->unk_10 * cosd((var_r31->unk_14 + var_r31->unk_18))); + var_f31 = var_r31->unk_10 / var_r31->unk_20; + var_f29 = 512.0 * cosd((90.0f * var_f31)); + var_r28->a = 255.0f < var_f29 ? 255.0f : var_f29; + var_r31->unk_3C = arg1->unk_68 * var_f31; + if (arg1->unk_68 <= var_r31->unk_3C) { + var_r31->unk_3C = arg1->unk_68 - 1; + } + var_f31 *= 2.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_r31->unk_2C = sind((100.0f * var_f31)); + var_f30 = (26.666666f * var_r31->unk_2C) + var_r29->unk_BC; + sp14 = var_r29->unk_6C; + sp14.y += var_f30; + sp8 = var_r29->unk_6C; + sp8.y += var_r29->unk_C0 - var_f30; + if ((var_r31->unk_3C < 0xC) + && ((var_f30 > VECDistance(&sp14, &var_r31->unk_30)) || (var_f30 > VECDistance(&sp8, &var_r31->unk_30)))) { + var_r26->unk_FC |= 0x20; + } + } + } + } +} +void fn_1_5548(Vec *arg0, float *arg1) +{ + arg1[0] = arg0[0].x; + arg1[4] = arg0[0].y; + arg1[8] = arg0[0].z; + arg1[1] = arg0[1].y; + arg1[5] = arg0[1].z; + arg1[9] = arg0[2].x; + arg1[2] = arg0[2].z; + arg1[6] = arg0[3].x; + arg1[10] = arg0[3].y; + arg1[3] = 0.0f; + arg1[7] = 0.0f; + arg1[11] = 0.0f; +} + +void fn_1_55C4(Vec *arg0, Vec *arg1, s16 arg2, float arg8) +{ + s16 var_r31; + for (var_r31 = 0; var_r31 < arg2; var_r31++, arg0++, arg1++) { + arg1->x = arg0->x * arg8; + arg1->y = arg0->y * arg8; + arg1->z = arg0->z * arg8; + } +} + +void fn_1_5620(Vec2f *arg0, Vec2f *arg1, s16 arg2, float arg8, float arg9) +{ + arg0[0].x = arg1[arg2].x; + arg0[0].y = arg1[arg2].y; + arg0[1].x = arg8 + arg1[arg2].x; + arg0[1].y = arg1[arg2].y; + arg0[2].x = arg8 + arg1[arg2].x; + arg0[2].y = arg9 + arg1[arg2].y; + arg0[3].x = arg1[arg2].x; + arg0[3].y = arg9 + arg1[arg2].y; +} + +void fn_1_56C4(ModelData *arg0, Mtx arg1) +{ + Mtx sp130; + ROMtx sp100; + Mtx spD0; + Mtx spA0; + Vec sp70[4]; + Vec sp64; + Vec sp58; + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + UnkM450ModelFunc spC; + s16 sp8; + + UnkM450Struct *var_r31; + Vec *var_r30; + UnkM450Struct2 *var_r29; + Vec2f *var_r27; + s16 var_r19; + + var_r31 = arg0->unk_120; + if ((var_r31->unk_6B == 0) || (var_r31->unk_66 != 0)) { + GXLoadPosMtxImm(arg1, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + sp8 = var_r31->unk_04->bmp->dataFmt & 0xF; + if ((sp8 == 8) || (sp8 == 7)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + if ((arg0->attr & 2) != 0) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + HuSprTexLoad(var_r31->unk_04, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + switch (var_r31->unk_6A) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk_20, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_18, 8); + sp130[0][0] = arg1[0][0]; + sp130[1][0] = arg1[0][1]; + sp130[2][0] = arg1[0][2]; + sp130[0][1] = arg1[1][0]; + sp130[1][1] = arg1[1][1]; + sp130[2][1] = arg1[1][2]; + sp130[0][2] = arg1[2][0]; + sp130[1][2] = arg1[2][1]; + sp130[2][2] = arg1[2][2]; + sp130[0][3] = 0.0f; + sp130[1][3] = 0.0f; + sp130[2][3] = 0.0f; + PSMTXReorder(sp130, sp100); + if ((omPauseChk() == 0) && (var_r31->unk_00)) { + spC = var_r31->unk_00; + spC(arg0, var_r31, 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); + 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; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } + else { + if (var_r29->unk_28 == 0.0f) { + fn_1_55C4(sp70, &sp40, 4, var_r29->unk_2C); + VECAdd(&sp40, &var_r29->unk_30, var_r30++); + VECAdd(&sp4C, &var_r29->unk_30, var_r30++); + VECAdd(&sp58, &var_r29->unk_30, var_r30++); + VECAdd(&sp64, &var_r29->unk_30, var_r30++); + } + else { + fn_1_55C4(&var_r31->unk_28, &sp40, 4, var_r29->unk_2C); + MTXRotRad(spD0, 0x5A, 0.017453292f * var_r29->unk_28); + MTXConcat(sp130, spD0, spA0); + MTXMultVecArray(spA0, &sp40, &sp10, 4); + VECAdd(&sp10, &var_r29->unk_30, var_r30++); + VECAdd(&sp1C, &var_r29->unk_30, var_r30++); + VECAdd(&sp28, &var_r29->unk_30, var_r30++); + VECAdd(&sp34, &var_r29->unk_30, var_r30++); + } + if (var_r29->unk_3C != -1) { + fn_1_5620(var_r27, var_r31->unk_1C, var_r29->unk_3C, var_r31->unk_5C, var_r31->unk_60); + } + } + } + DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * 0xC * 4); + DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * 8 * 4); + GXCallDisplayList(var_r31->unk_24, var_r31->unk_58); + } +} + +void fn_1_5E0C(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9) +{ + s16 var_r31; + s16 var_r30; + s16 var_r29; + + (void)arg9; + (void)arg9; + (void)arg9; + (void)arg8; + (void)arg8; + (void)arg8; + + for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) { + var_r30 = var_r31 % arg2; + var_r29 = var_r31 / arg2; + arg0->x = var_r30 * arg8; + arg0->y = var_r29 * arg9; + } +} + +s16 fn_1_5ED8(AnimData *arg0, Vec *arg1, float *arg2, s16 arg3, float arg8, s16 arg4, s16 arg5) +{ + void *sp1C; + + UnkM450Struct *var_r31; + s16 var_r30; + Vec2f *var_r29; + ModelData *var_r28; + GXColor *var_r26; + Vec *var_r25; + UnkM450Struct2 *var_r24; + s16 var_r21; + void *var_r19; + s16 var_r18; + s16 var_r17; + + var_r18 = Hu3DHookFuncCreate(fn_1_56C4); + var_r28 = &Hu3DData[var_r18]; + var_r28->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkM450Struct), var_r28->unk_48); + var_r31 = var_r28->unk_120; + arg0->useNum++; + var_r31->unk_04 = arg0; + var_r31->unk_08 = arg1; + var_r31->unk_0C = arg2; + var_r31->unk_64 = arg3; + var_r31->unk_6A = 0; + var_r31->unk_00 = 0; + var_r31->unk_66 = arg3; + var_r31->unk_6B = 0; + var_r31->unk_10 = HuMemDirectMallocNum(HEAP_DATA, arg3 * 0x40, var_r28->unk_48); + for (var_r24 = var_r31->unk_10, var_r30 = 0; var_r30 < arg3; var_r30++, var_r24++) { + var_r24->unk_3E = -1; + var_r24->unk_3C = -1; + } + var_r31->unk_14 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(Vec) * 4, var_r28->unk_48); + for (var_r25 = var_r31->unk_14, var_r30 = 0; var_r30 < (arg3 * 4); var_r30++, var_r25++) { + var_r25->x = 0.0f; + var_r25->y = 0.0f; + var_r25->z = 0.0f; + } + var_r31->unk_20 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(GXColor), var_r28->unk_48); + for (var_r26 = var_r31->unk_20, var_r30 = 0; var_r30 < arg3; var_r30++, var_r26++) { + var_r26->r = 0xFF; + var_r26->g = 0xFF; + var_r26->b = 0xFF; + var_r26->a = 0xFF; + } + var_r31->unk_18 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(Vec2f) * 4, var_r28->unk_48); + var_r29 = var_r31->unk_18; + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + if ((arg4 != 0) || (arg5 != 0)) { + var_r21 = arg0->bmp->sizeX / arg4; + var_r17 = arg0->bmp->sizeY / arg5; + var_r31->unk_68 = var_r21 * var_r17; + var_r31->unk_5C = 1.0f / var_r21; + var_r31->unk_60 = 1.0f / var_r17; + } + else { + var_r21 = 1; + var_r31->unk_68 = 1; + var_r31->unk_5C = 1.0f; + var_r31->unk_60 = 1.0f; + } + var_r31->unk_1C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_68 * sizeof(Vec2f), var_r28->unk_48); + fn_1_5E0C(var_r31->unk_1C, var_r31->unk_68, var_r21, var_r31->unk_5C, var_r31->unk_60); + var_r31->unk_28.x = var_r31->unk_4C = var_r31->unk_44 = var_r31->unk_50 = -arg8; + var_r31->unk_38 = arg8; + var_r31->unk_28.y = arg8; + var_r31->unk_40 = arg8; + var_r31->unk_34 = arg8; + var_r31->unk_28.z = var_r31->unk_3C = var_r31->unk_48 = var_r31->unk_54 = 0.0f; + var_r19 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, var_r28->unk_48); + sp1C = var_r19; + GXBeginDisplayList(sp1C, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg3 * 4); + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + // TODO is this right? + GXPosition1x16(var_r30 * 4); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4); + + GXPosition1x16(var_r30 * 4 + 1); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 1); + + GXPosition1x16(var_r30 * 4 + 2); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 2); + + GXPosition1x16(var_r30 * 4 + 3); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 3); + } + var_r31->unk_58 = GXEndDisplayList(); + DCFlushRangeNoSync(var_r19, var_r31->unk_58); + var_r31->unk_24 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_58, var_r28->unk_48); + memcpy(var_r31->unk_24, var_r19, var_r31->unk_58); + DCFlushRangeNoSync(var_r31->unk_24, var_r31->unk_58); + HuMemDirectFree(var_r19); + return var_r18; +} + +UnkM450Struct2 *fn_1_6530(s16 arg0, Vec *arg1, GXColor *arg2, float arg8, float arg9) +{ + UnkM450Struct2 *var_r31; + UnkM450Struct *var_r30; + s16 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[arg0]; + var_r30 = var_r28->unk_120; + if (var_r30->unk_6B != 0) { + return NULL; + } + + for (var_r29 = 0, var_r31 = var_r30->unk_10; var_r29 < var_r30->unk_64; var_r29++, var_r31++) { + if (var_r31->unk_3E < 0) { + break; + } + } + if (var_r29 == var_r30->unk_64) { + return NULL; + } + var_r30->unk_20[var_r29] = *arg2; + var_r31->unk_30 = *arg1; + var_r31->unk_2C = arg8; + var_r31->unk_28 = arg9; + var_r31->unk_3C = 0; + var_r31->unk_00 = 0; + var_r31->unk_3E = var_r29; + return var_r31; +} + +void fn_1_6638(s16 arg0, UnkM450ModelFunc arg1) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + UnkM450Struct *var_r30 = var_r31->unk_120; + var_r30->unk_00 = arg1; +} + +void fn_1_6670(s16 arg0, u8 arg1) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + ((UnkM450Struct *)var_r31->unk_120)->unk_6A = arg1; +} + +void fn_1_66A0(s16 arg0) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + UnkM450Struct *var_r30 = var_r31->unk_120; + var_r30->unk_6B = 1; +} + +s32 fn_1_66DC(s16 arg0) +{ + ModelData *var_r30 = &Hu3DData[arg0]; + UnkM450Struct *var_r31 = var_r30->unk_120; + + if ((var_r31->unk_6B != 0) && (var_r31->unk_66 == 0)) { + HuMemDirectFree(var_r31->unk_10); + HuMemDirectFree(var_r31->unk_14); + HuMemDirectFree(var_r31->unk_20); + HuMemDirectFree(var_r31->unk_18); + HuMemDirectFree(var_r31->unk_1C); + HuMemDirectFree(var_r31->unk_24); + HuSprAnimKill(var_r31->unk_04); + HuMemDirectFree(var_r30->unk_120); + Hu3DModelKill(arg0); + return 1; + } + return 0; +} + +void fn_1_6798(s16 arg0, s16 arg1, Vec *arg2, float arg8, float arg9, float argA) +{ + UnkM450Struct2 *var_r31; + s16 var_r27; + + GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0xFF }; + for (var_r27 = 0; var_r27 < arg1; var_r27++) { + var_r31 = fn_1_6530(arg0, arg2, &sp18, 0.0f, 0.0f); + if (!var_r31) { + break; + } + var_r31->unk_04 = *arg2; + var_r31->unk_10 = 0.0f; + var_r31->unk_14 = arg8; + var_r31->unk_1C = 5.0f; + var_r31->unk_20 = arg9; + var_r31->unk_24 = argA; + var_r31->unk_18 = (20.0f * frandf()) - 10.0f; + var_r31->unk_1C = var_r31->unk_1C * (0.8f + (0.4f * frandf())); + var_r31->unk_20 = var_r31->unk_20 * (0.9f + (0.3f * frandf())); + } +} + +s16 fn_1_69F8(Vec *arg0, float *arg1, s16 arg2) +{ + s16 var_r31; + void *var_r30; + ModelData *var_r29; + ModelData *var_r28; + + var_r31 = fn_1_5ED8(lbl_1_bss_14, arg0, arg1, arg2, 80.0f, 0x40, 0x40); + fn_1_6638(var_r31, fn_1_5148); + fn_1_6670(var_r31, 1); + Hu3DModelLayerSet(var_r31, 5); + return var_r31; +} + +float fn_1_6AC8(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + ((arg9 - arg8) * sind(((90.0f / argB) * argA))); +} + +float fn_1_6B90(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + ((arg9 - arg8) * (1.0 - cosd(((90.0f / argB) * argA)))); +} + +void fn_1_6C68(s32 arg0) +{ + lbl_1_bss_10 = 0; + lbl_1_bss_C = arg0; + HuWinInit(1); +} + +void fn_1_6CB0(void (*arg0)(), s32 arg1) +{ + if ((arg1 < 0) || (fn_1_13B90(arg1) == 0)) { + lbl_1_bss_10++; + HuPrcChildCreate(arg0, 0x64, 0x2000, 0, HuPrcCurrentGet()); + } +} + +void fn_1_6D2C(void) +{ + lbl_1_bss_10--; + HuPrcEnd(); +} + +void fn_1_6D68(float *arg0, s32 arg1) +{ + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} + +GXColor lbl_1_data_9F[3] = { + { 0xFF, 0xFF, 0xCC, 0xE6 }, + { 0xCC, 0xFF, 0xFF, 0xE6 }, + { 0xFF, 0xCC, 0xFF, 0xE6 }, +}; + +s32 lbl_1_data_AC[2] = { DATA_MAKE_NUM(DATADIR_M450, 0x2C), DATA_MAKE_NUM(DATADIR_M450, 0x2D) }; + +s32 lbl_1_data_B4[0x13] = { + DATA_MAKE_NUM(DATADIR_M450, 0x2E), + DATA_MAKE_NUM(DATADIR_M450, 0x2F), + DATA_MAKE_NUM(DATADIR_M450, 0x30), + DATA_MAKE_NUM(DATADIR_M450, 0x31), + DATA_MAKE_NUM(DATADIR_M450, 0x32), + DATA_MAKE_NUM(DATADIR_M450, 0x33), + DATA_MAKE_NUM(DATADIR_M450, 0x34), + DATA_MAKE_NUM(DATADIR_M450, 0x35), + DATA_MAKE_NUM(DATADIR_M450, 0x36), + DATA_MAKE_NUM(DATADIR_M450, 0x37), + DATA_MAKE_NUM(DATADIR_M450, 0x38), + DATA_MAKE_NUM(DATADIR_M450, 0x39), + DATA_MAKE_NUM(DATADIR_M450, 0x3A), + DATA_MAKE_NUM(DATADIR_M450, 0x3B), + DATA_MAKE_NUM(DATADIR_M450, 0x3C), + DATA_MAKE_NUM(DATADIR_M450, 0x3D), + DATA_MAKE_NUM(DATADIR_M450, 0x3E), + DATA_MAKE_NUM(DATADIR_M450, 0x3F), + DATA_MAKE_NUM(DATADIR_M450, 0x40), +}; + +s32 lbl_1_data_100[5] = { + DATA_MAKE_NUM(DATADIR_M450, 0x41), + DATA_MAKE_NUM(DATADIR_M450, 0x42), + DATA_MAKE_NUM(DATADIR_M450, 0x43), + DATA_MAKE_NUM(DATADIR_M450, 0x44), + DATA_MAKE_NUM(DATADIR_M450, 0x45), +}; +s32 lbl_1_data_114[0xF] = { + DATA_MAKE_NUM(DATADIR_M450, 0x46), + DATA_MAKE_NUM(DATADIR_M450, 0x47), + DATA_MAKE_NUM(DATADIR_M450, 0x47), + DATA_MAKE_NUM(DATADIR_M450, 0x49), + DATA_MAKE_NUM(DATADIR_M450, 0x4A), + DATA_MAKE_NUM(DATADIR_M450, 0x4B), + DATA_MAKE_NUM(DATADIR_M450, 0x4C), + DATA_MAKE_NUM(DATADIR_M450, 0x4D), + DATA_MAKE_NUM(DATADIR_M450, 0x4E), + DATA_MAKE_NUM(DATADIR_M450, 0x4F), + DATA_MAKE_NUM(DATADIR_M450, 0x50), + DATA_MAKE_NUM(DATADIR_M450, 0x51), + DATA_MAKE_NUM(DATADIR_M450, 0x52), + DATA_MAKE_NUM(DATADIR_M450, 0x53), + DATA_MAKE_NUM(DATADIR_M450, 0x54), +}; +s32 lbl_1_data_150[0xF] = { + DATA_MAKE_NUM(DATADIR_M450, 0x55), + DATA_MAKE_NUM(DATADIR_M450, 0x56), + DATA_MAKE_NUM(DATADIR_M450, 0x56), + DATA_MAKE_NUM(DATADIR_M450, 0x58), + DATA_MAKE_NUM(DATADIR_M450, 0x59), + DATA_MAKE_NUM(DATADIR_M450, 0x5A), + DATA_MAKE_NUM(DATADIR_M450, 0x5B), + DATA_MAKE_NUM(DATADIR_M450, 0x55), + DATA_MAKE_NUM(DATADIR_M450, 0x5C), + DATA_MAKE_NUM(DATADIR_M450, 0x5D), + DATA_MAKE_NUM(DATADIR_M450, 0x5E), + DATA_MAKE_NUM(DATADIR_M450, 0x5F), + DATA_MAKE_NUM(DATADIR_M450, 0x60), + DATA_MAKE_NUM(DATADIR_M450, 0x61), + DATA_MAKE_NUM(DATADIR_M450, 0x62), +}; +s32 lbl_1_data_18C[8] = { 0, 1, 2, 1, 1, -1, -1, -1 }; +s32 lbl_1_data_1AC[8] = { 0, 1, 2, 1, 1, -1, -1, -1 }; +s32 lbl_1_data_1CC[4] = { 0x3E, 0x65, 0x3F, 0x66 }; +UnkData204Struct lbl_1_data_1DC[5] = { + { 8.5f * REFRESH_RATE, 0 }, + { 5.0f * REFRESH_RATE, 1 }, + { 5.0f * REFRESH_RATE, 0 }, + { 5.0f * REFRESH_RATE, 1 }, + { 0.0f, 0 }, +}; +UnkData204Struct lbl_1_data_204[6] = { + { 3.5f * REFRESH_RATE, 0 }, + { 5.0f * REFRESH_RATE, 1 }, + { 5.0f * REFRESH_RATE, 0 }, + { 5.0f * REFRESH_RATE, 1 }, + { 5.0f * REFRESH_RATE, 0 }, + { 0.0f, 0 }, +}; +Vec2f lbl_1_data_234[4] = { + { 5.0f * REFRESH_RATE, 5.0f * REFRESH_RATE }, + { 5.0f * REFRESH_RATE, 4.0f * REFRESH_RATE }, + { 5.0f * REFRESH_RATE, 3.5f * REFRESH_RATE }, + { 5.0f * REFRESH_RATE, 3.0f * REFRESH_RATE }, +}; +float lbl_1_data_254[5] = { 0.4f, 0.35f, 0.3f, 0.25f, 0.2f }; +float lbl_1_data_268[5] = { 0.45f, 0.4f, 0.35f, 0.3f, 0.25f }; +float lbl_1_data_27C[5] = { 0.5f, 0.45f, 0.4f, 0.35f, 0.3f }; +float lbl_1_data_290[5] = { 0.55f, 0.5f, 0.45f, 0.4f, 0.35f }; + +s32 fn_1_6DD8(float arg8, float arg9, float argA, float argB, s32 arg0) +{ + float spC[2]; + + float var_f30; + float var_f29; + float var_f25; + float var_f24; + float var_f19; + float var_f18; + + s32 var_r31; + WindowData *var_r30; + GXColor *var_r29; + s32 var_r28; + + if (555.0f < (arg8 + argA)) { + arg8 = 555.0f - argA; + } + if (21.0f > arg8) { + arg8 = 21.0f; + } + lbl_1_bss_10++; + var_r28 = HuWinCreate(arg8, arg9, argA, argB, 1); + var_r30 = &winData[var_r28]; + var_r29 = &lbl_1_data_9F[arg0]; + HuWinBGTPLvlSet(var_r28, var_r29->a / 255.0f); + HuSprColorSet(var_r30->group, 0, var_r29->r, var_r29->g, var_r29->b); + var_r30->mess_color = 0; + var_r30->mess_shadow_color = 9; + var_r30->attr |= 0x80; + var_r30->active_pad = 0; + var_f30 = arg8 + (0.5f * argA); + var_f25 = 4.0f / argA; + if (((4.0f + var_f30) - (arg8 + argA)) >= 0.0f) { + var_f30 = (arg8 + argA) - 4.0f; + } + else if ((arg8 - (var_f30 - 2.0f)) >= 0.0f) { + var_f30 = arg8; + } + else { + var_f30 -= 2.0f; + } + var_f29 = arg9 + (0.5f * argB); + var_f24 = 4.0f / argB; + if (((4.0f + var_f29) - (arg9 + argB)) >= 0.0f) { + var_f29 = (arg9 + argB) - 4.0f; + } + else if ((arg9 - (var_f29 - 2.0f)) >= 0.0f) { + var_f29 = arg9; + } + else { + var_f29 -= 2.0f; + } + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + var_f19 = fn_1_6AC8(var_f30, arg8, var_r31, 10.0f); + spC[1] = fn_1_6AC8(var_f25, 1.0f, var_r31, 10.0f); + var_f18 = fn_1_6AC8(var_f29, arg9, var_r31, 10.0f); + spC[0] = fn_1_6AC8(var_f24, 1.0f, var_r31, 10.0f); + HuWinPosSet(var_r28, var_f19, var_f18); + HuWinScaleSet(var_r28, spC[1], spC[0]); + HuPrcVSleep(); + } + HuWinPosSet(var_r28, arg8, arg9); + HuWinScaleSet(var_r28, 1.0f, 1.0f); + HuPrcVSleep(); + return var_r28; +} + +void fn_1_74EC(s32 arg0) +{ + float sp8[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f25; + float var_f26; + float var_f24; + float var_f19; + float var_f18; + + s32 var_r31; + WindowData *var_r30; + + HuWinMesSet(arg0, 0x1D0016); + HuPrcVSleep(); + var_r30 = &winData[arg0]; + var_f29 = var_r30->pos_x; + var_f28 = var_r30->pos_y; + var_f27 = var_r30->w; + var_f26 = var_r30->h; + var_f31 = var_f29 + (0.5f * var_f27); + var_f25 = 4.0f / var_f27; + if (((4.0f + var_f31) - (var_f29 + var_f27)) >= 0.0f) { + var_f31 = (var_f29 + var_f27) - 4.0f; + } + else if ((var_f29 - (var_f31 - 2.0f)) >= 0.0f) { + var_f31 = var_f29; + } + else { + var_f31 -= 2.0f; + } + var_f30 = var_f28 + (0.5f * var_f26); + var_f24 = 4.0f / var_f26; + if (((4.0f + var_f30) - (var_f28 + var_f26)) >= 0.0f) { + var_f30 = (var_f28 + var_f26) - 4.0f; + } + else if ((var_f28 - (var_f30 - 2.0f)) >= 0.0f) { + var_f30 = var_f28; + } + else { + var_f30 -= 2.0f; + } + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + var_f19 = fn_1_6B90(var_f29, var_f31, var_r31, 10.0f); + sp8[1] = fn_1_6B90(1.0f, var_f25, var_r31, 10.0f); + var_f18 = fn_1_6B90(var_f28, var_f30, var_r31, 10.0f); + sp8[0] = fn_1_6B90(1.0f, var_f24, var_r31, 10.0f); + HuWinPosSet(arg0, var_f19, var_f18); + HuWinScaleSet(arg0, sp8[1], sp8[0]); + HuPrcVSleep(); + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, var_f25, var_f24); + HuPrcVSleep(); + HuWinKill(arg0); + lbl_1_bss_10--; +} + +void fn_1_7B90(s32 arg0, u32 arg1) +{ + winData[arg0].mess_color = 0; + winData[arg0].mess_shadow_color = 9; + winData[arg0].attr |= 0x80; + HuWinMesSet(arg0, arg1); +} + +void fn_1_7C14(s32 arg0, s32 arg1) +{ + HuWinComKeyReset(); + if (arg1 > 0) { + HuPrcSleep(arg1); + } + else { + winData[arg0].active_pad = 1 << lbl_1_bss_C; + HuWinMesWait(arg0); + } + HuWinComKeyReset(); +} + +void fn_1_7C98(s32 arg0) +{ + s32 var_r31; + + HuWinComKeyReset(); + winData[arg0].active_pad = 1 << lbl_1_bss_C; + var_r31 = HuWinChoiceGet(arg0, 1); + if ((var_r31 == -1) || (var_r31 == 1)) { + lbl_1_bss_8 = 0; + } + else { + lbl_1_bss_8 = 1; + } + HuWinComKeyReset(); +} + +void fn_1_7D40(void) +{ + Vec sp18; + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + + float sp10[2] = { 0.0f, 0.0f }; + s32 sp24[22] = { + 0x002D0003, + 0x0000003E, + 0x002D0009, + 0x0000003E, + 0x002D000B, + 0x0000003E, + 0x002D000D, + 0x0000003E, + 0x002D000F, + 0x0000003E, + 0x002D0011, + 0x0000003E, + 0x002D0013, + 0x0000003E, + 0x002D0015, + 0x0000003E, + 0x002D0017, + 0x0000003E, + 0x002D0019, + 0x0000003E, + 0x002D001B, + 0x0000003F, + }; + fn_1_E178(0, 1); + fn_1_6D68(sp10, sp24[lbl_1_bss_4 * 2]); + sp18 = lbl_1_bss_34[0]; + sp18.y += 200.0f; + Hu3D3Dto2D(&sp18, 1, &sp18); + if (sp24[(lbl_1_bss_4 * 2) + 1] >= 0) { + var_f30 = 32.0f + (64.0f * (sp18.x / 576.0f)); + if (32.0f > var_f30) { + var_f30 = 32.0f; + } + if (96.0f < var_f30) { + var_f30 = 96.0f; + } + HuAudFXPanning(fn_1_E0E8(0, sp24[(lbl_1_bss_4 * 2) + 1]), (s32)var_f30); + } + var_f31 = sp18.x - (sp10[0] / 2); + var_f29 = 72.0f; + if (lbl_1_bss_4 >= 5) { + if (var_f29 > var_f31) { + var_f31 = var_f29; + } + if ((576.0f - var_f29) < (var_f31 + sp10[0])) { + var_f31 = (576.0f - var_f29) - sp10[0]; + } + } + var_r31 = fn_1_6DD8(var_f31, sp18.y - sp10[1], sp10[0], sp10[1], 0); + fn_1_7B90(var_r31, sp24[lbl_1_bss_4 * 2]); + fn_1_7C14(var_r31, lbl_1_bss_0); + fn_1_74EC(var_r31); + fn_1_E178(0, 0); + fn_1_6D2C(); +} + +void fn_1_8120(void) +{ + Vec sp18; + + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + + float sp10[2] = { 0.0f, 0.0f }; + s32 sp24[22] = { + 0x002D0002, + 0x0000003E, + 0x002D0008, + 0x0000003E, + 0x002D000A, + 0x0000003E, + 0x002D000C, + 0x0000003E, + 0x002D000E, + 0x0000003E, + 0x002D0010, + 0x0000003E, + 0x002D0012, + 0x0000003E, + 0x002D0014, + 0x0000003E, + 0x002D0016, + 0x0000003E, + 0x002D0018, + 0x0000003F, + 0x002D001A, + 0x0000003F, + }; + fn_1_E178(1, 1); + fn_1_6D68(sp10, sp24[lbl_1_bss_4 * 2]); + sp18 = lbl_1_bss_34[1]; + sp18.y += 200.0f; + Hu3D3Dto2D(&sp18, 1, &sp18); + if (sp24[(lbl_1_bss_4 * 2) + 1] >= 0) { + var_f30 = 32.0f + (64.0f * (sp18.x / 576.0f)); + if (32.0f > var_f30) { + var_f30 = 32.0f; + } + if (96.0f < var_f30) { + var_f30 = 96.0f; + } + HuAudFXPanning(fn_1_E0E8(1, sp24[(lbl_1_bss_4 * 2) + 1]), (s32)var_f30); + } + var_f31 = sp18.x - (sp10[0] / 2); + var_f29 = 72.0f; + if (lbl_1_bss_4 >= 5) { + if (var_f29 > var_f31) { + var_f31 = var_f29; + } + if ((576.0f - var_f29) < (var_f31 + sp10[0])) { + var_f31 = (576.0f - var_f29) - sp10[0]; + } + } + var_r31 = fn_1_6DD8(var_f31, sp18.y - sp10[1], sp10[0], sp10[1], 1); + fn_1_7B90(var_r31, sp24[lbl_1_bss_4 * 2]); + fn_1_7C14(var_r31, lbl_1_bss_0); + fn_1_74EC(var_r31); + fn_1_E178(1, 0); + fn_1_6D2C(); +} + +void fn_1_8500(void) +{ + float sp28; + float sp20; + float sp18; + float sp10; + float sp8; + + s32 var_r31; + + float sp30[2] = { 0.0f, 0.0f }; + fn_1_6D68(sp30, 0x2D0001); + fn_1_6D68(sp30, 0x2D0004); + fn_1_6D68(sp30, 0x2D0005); + fn_1_6D68(sp30, 0x2D0006); + fn_1_6D68(sp30, 0x2D0007); + var_r31 = fn_1_6DD8((576.0f - sp30[0]) / 2, 48.0f, sp30[0], sp30[1], 2); + HuAudFXPlay(0x3A); + fn_1_A968(3, 8.0f, 0, 0, 0.0f); + fn_1_7B90(var_r31, 0x2D0001); + fn_1_7C14(var_r31, -1); + lbl_1_bss_4 = 0; + lbl_1_bss_0 = 0x78; + fn_1_E1A8(0, 8, 8.0f, 0, 7, 0.0f); + fn_1_E1A8(1, 8, 8.0f, 0, 7, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + + while (lbl_1_bss_10 > 2) { + HuPrcVSleep(); + } + HuAudFXPlay(0x3B); + fn_1_A968(4, 8.0f, 0, 0, REFRESH_RATE); + fn_1_E1A8(0, 9, 8.0f, 0, 7, REFRESH_RATE); + fn_1_E1A8(1, 9, 8.0f, 0, 7, REFRESH_RATE); + fn_1_7B90(var_r31, 0x2D0004); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D0005); + fn_1_7C14(var_r31, -1); + fn_1_7B90(var_r31, 0x2D0006); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3A); + fn_1_7B90(var_r31, 0x2D0007); + fn_1_7C14(var_r31, -1); + fn_1_74EC(var_r31); + fn_1_6D2C(); +} + +void fn_1_8BDC(void) +{ + s32 var_r31; + + lbl_1_bss_4 = 2; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 3; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + fn_1_1F58(0x3E8); + lbl_1_bss_4 = 4; + lbl_1_bss_0 = 0x1E; + fn_1_E1A8(0, 0xC, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(1, 0xC, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_6D2C(); +} + +void fn_1_9074(void) +{ + lbl_1_bss_4 = 5; + lbl_1_bss_0 = 0x1E; + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + lbl_1_bss_4 = 6; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 7; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 8; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xE, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xE, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 9; + lbl_1_bss_0 = 0x1E; + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_6D2C(); +} + +void fn_1_96C0(void) +{ + lbl_1_bss_4 = 0xA; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 4, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 4, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_6D2C(); +} + +void fn_1_9824(void) +{ + s32 var_r31; + + float sp20[2] = { 0.0f, 0.0f }; + fn_1_6D68(sp20, 0x2D001C); + fn_1_6D68(sp20, 0x2D001D); + fn_1_6D68(sp20, 0x2D001E); + var_r31 = fn_1_6DD8((576.0f - sp20[0]) / 2, 132.0f, sp20[0], sp20[1], 2); + fn_1_A968(8, 8.0f, 0, 7, 0.0f); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D001C); + fn_1_7C14(var_r31, -1); + fn_1_7B90(var_r31, 0x2D001D); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D001E); + fn_1_7C14(var_r31, -1); + fn_1_74EC(var_r31); + fn_1_6D2C(); +} + +void fn_1_9BA4(void) +{ + s32 var_r31; + float sp20[2] = { 0.0f, 0.0f }; + + fn_1_6D68(sp20, 0x2D001F); + fn_1_6D68(sp20, 0x2D0020); + fn_1_6D68(sp20, 0x2D0021); + var_r31 = fn_1_6DD8((576.0f - sp20[0]) / 2, 48.0f, sp20[0], sp20[1], 2); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D001F); + fn_1_7C14(var_r31, -1); + fn_1_A968(5, 8.0f, 0, 6, 0.0f); + fn_1_7B90(var_r31, 0x2D0020); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D0021); + fn_1_7C14(var_r31, -1); + fn_1_A968(0, 8.0f, 0, -1, 0.0f); + fn_1_74EC(var_r31); + fn_1_6D2C(); +} + +void fn_1_9F4C(UnkM450Struct3 *arg0, s32 arg1, Vec *arg2, s8 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + + s32 var_r29; + s32 var_r28; + s32 var_r27; + + if (90.0f <= arg0->unk_E4) { + arg0->unk_00.unk_6C.y -= 10.0f; + return; + } + var_r29 = 1; + if (arg3 == 0x78) { + if (arg2->x > arg0->unk_00.unk_6C.x) { + var_r29 = 0; + } + } + else if (arg2->z < arg0->unk_00.unk_6C.z) { + var_r29 = 0; + } + if (var_r29 != 0) { + arg0->unk_E4 += 5.0f; + if (0.0f > arg2->x) { + var_f30 = -arg2->x; + } + else { + var_f30 = arg2->x; + } + var_f31 = var_f30; + if (0.0f > arg2->y) { + var_f29 = -arg2->y; + } + else { + var_f29 = arg2->y; + } + if (var_f31 < var_f29) { + if (0.0f > arg2->y) { + var_f28 = -arg2->y; + } + else { + var_f28 = arg2->y; + } + var_f31 = var_f28; + } + if (0.0f > arg2->z) { + var_f27 = -arg2->z; + } + else { + var_f27 = arg2->z; + } + if (var_f31 < var_f27) { + if (0.0f > arg2->z) { + var_f26 = -arg2->z; + } + else { + var_f26 = arg2->z; + } + var_f31 = var_f26; + } + var_f31 = 1500.0f - var_f31; + if (arg3 == 0x78) { + if (0.0f > arg2->x) { + var_r28 = -1; + } + else { + var_r28 = 1; + } + arg0->unk_00.unk_6C.x = arg2->x + ((var_f31 * var_r28) * sind(arg0->unk_E4)); + } + else { + if (0.0f > arg2->z) { + var_r27 = -1; + } + else { + var_r27 = 1; + } + arg0->unk_00.unk_6C.z = arg2->z + ((var_f31 * var_r27) * sind(arg0->unk_E4)); + } + MTXRotRad(Hu3DData[arg1].unk_F0, 0x58, 0.017453292f * arg0->unk_E4); + arg0->unk_00.unk_6C.y = arg2->y + (var_f31 * cosd(arg0->unk_E4)); + return; + } + if (arg3 == 0x78) { + arg0->unk_00.unk_20 = 0x48; + } + else { + arg0->unk_00.unk_24 = 0x48; + } + if (arg0->unk_154 & 0x200) { + var_f31 = arg0->unk_F0 - arg0->unk_00.unk_6C.x; + if (0.0f > var_f31) { + var_f25 = -var_f31; + } + else { + var_f25 = var_f31; + } + if (10.0f > var_f25) { + arg0->unk_154 &= ~0x200; + } + if (0.0f <= var_f31) { + arg0->unk_00.unk_20 = 0x48; + } + else { + arg0->unk_00.unk_20 = -0x48; + } + } + fn_1_40C0(&arg0->unk_00); +} + +void fn_1_A3C4(omObjData *object, Vec *arg1, s32 arg2) +{ + s32 var_r31; + + if (1495.0f > arg1->y) { + for (var_r31 = 0; var_r31 < arg2; var_r31++) { + Hu3DModelShadowDispOff(object->model[var_r31]); + } + return; + } + for (var_r31 = 0; var_r31 < arg2; var_r31++) { + Hu3DModelShadowDispOn(object->model[var_r31]); + } +} + +void fn_1_A470(UnkM450Struct3 *arg0, omObjData *arg1, char *arg2, s32 arg3) +{ + s32 var_r30; + + arg0->unk_CC = arg2; + arg0->unk_154 |= 1; + omSetTra(arg1, 0.0f, 0.0f, 0.0f); + omSetRot(arg1, 0.0f, 0.0f, 0.0f); + omSetSca(arg1, 1.0f, 1.0f, 1.0f); + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + Hu3DModelPosSet(arg1->model[var_r30], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg1->model[var_r30], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg1->model[var_r30], 1.0f, 1.0f, 1.0f); + } +} + +void fn_1_A600(UnkM450Struct3 *arg0, omObjData *arg1, char *arg2, s32 arg3) +{ + s32 var_r29; + + arg0->unk_CC = arg2; + arg0->unk_154 &= ~1; + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_CC, &arg0->unk_00.unk_6C, NULL); + omSetTra(arg1, 0.0f, 0.0f, 0.0f); + omSetRot(arg1, 0.0f, 0.0f, 0.0f); + for (var_r29 = 0; var_r29 < arg3; var_r29++) { + MTXIdentity(Hu3DData[arg1->model[var_r29]].unk_F0); + Hu3DModelPosSet(arg1->model[var_r29], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg1->model[var_r29], 0.0f, 0.0f, 0.0f); + } +} + +s32 fn_1_A7CC(UnkM450Struct3 *arg0) +{ + if (fn_1_19A10(&arg0->unk_00, &arg0->unk_D4) != 0) { + arg0->unk_150 += 1; + return 1; + } + fn_1_40C0(&arg0->unk_00); + return 0; +} + +void fn_1_A828(UnkM450Struct3 *arg0, float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + + arg0->unk_E0 += 1.0f; + var_f31 = arg0->unk_E0 / arg8; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + arg0->unk_00.unk_6C.y = arg9 + ((var_f30) * (argA - arg9)); +} + +void fn_1_A968(s32 arg0, float arg8, u32 arg1, s32 arg2, float arg9) +{ + UnkM450Struct3 *var_r31; + + if (arg8 == 0.0f) { + Hu3DMotionSet(lbl_1_bss_134->model[0], lbl_1_bss_134->motion[arg0]); + } + else { + Hu3DMotionShiftSet(lbl_1_bss_134->model[0], lbl_1_bss_134->motion[arg0], 0.0f, arg8, arg1); + } + var_r31 = lbl_1_bss_134->data; + var_r31->unk_140 = -1; + var_r31->unk_154 &= ~0x2100; + if (arg2 >= 0) { + var_r31->unk_140 = arg2; + var_r31->unk_144 = arg9; + var_r31->unk_154 |= 0x100; + if (arg0 == 4 || arg0 == 5) { + var_r31->unk_154 |= 0x2000; + } + } +} + +s32 lbl_1_data_F6C[6]; +UnkDataA0CStruct lbl_1_data_A0C[2]; + +void fn_1_AAB0(UnkM450Struct3 *arg0, Vec2f *arg1, s32 arg2) +{ + float var_f30; + float var_f31 = 1.0f; + if (arg2 != 0) { + var_f31 = arg0->unk_F4; + if ((lbl_1_data_F6C[lbl_1_bss_118] - lbl_1_bss_304) > 60 * REFRESH_RATE) { + arg0->unk_F4 = arg0->unk_F4 - 0.1f; + if (0.0f > arg0->unk_F4) { + arg0->unk_F4 = 0.0f; + } + } + } + var_f30 = arg1->x - arg1->y; + arg0->unk_100 = arg1->y + (var_f30 * var_f31); +} + +float fn_1_AB88(UnkM450Struct3 *arg0) +{ + s32 var_r31 = lbl_1_data_A0C[1].unk_14 - 1; + if (var_r31 > 4) { + var_r31 = 4; + } + if (var_r31 < 0) { + var_r31 = 0; + } + return arg0->unk_D0[var_r31]; +} + +void fn_1_ABD0(omObjData *object) +{ + float var_f29; + UnkM450Struct3 *var_r31 = object->data; + + var_r31->unk_138 = 0; + var_f29 = sqrtf((var_r31->unk_00.unk_6C.x * var_r31->unk_00.unk_6C.x) + (var_r31->unk_00.unk_6C.z * var_r31->unk_00.unk_6C.z)); + if (680.0f < var_f29) { + var_r31->unk_138 = 1; + var_r31->unk_00.unk_6C.x = 680.0f * (var_r31->unk_00.unk_6C.x / var_f29); + var_r31->unk_00.unk_6C.z = 680.0f * (var_r31->unk_00.unk_6C.z / var_f29); + } +} + +void fn_1_AD58(omObjData *object) +{ + Mtx sp1F8; + Vec spFC; + Vec spF0; + Vec spE4; + Vec spD8; + float spCC; + float spC8; + + UnkM450Struct3 *var_r31; + Vec2f *var_r25; + s32 var_r20; + + var_r20 = 0; + spE4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C; + var_r31 = object->data; + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + switch (var_r31->unk_150) { + case 0xBB8: + if (lbl_1_bss_1A4->work[0] >= 0x3EF) { + var_r31->unk_150++; + var_r31->unk_E4 = 0.0f; + var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFEFF; + } + break; + case 0xBB9: + fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A); + if (1000.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_150++; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + case 0xBBA: + if (lbl_1_bss_1A4->work[0] >= 0x402) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_9C = 270.0f; + fn_1_A470(var_r31, object, "m450mex06-s4kuppa", 2); + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + case 0xBBB: + if (lbl_1_bss_1A4->work[0] >= 0x403) { + var_r31->unk_E0 += 1.0f; + if (30.0f < var_r31->unk_E0) { + var_r31->unk_150++; + var_r31->unk_E4 = 0.0f; + fn_1_A600(var_r31, object, "m450mex06-s4kuppa", 2); + omSetSca(object, 1.5f, 1.5f, 1.5f); + var_r31->unk_00.unk_9C = 270.0f; + var_r31->unk_00.unk_6C.y = 1505.0f; + } + } + break; + case 0xBBC: + fn_1_9F4C(var_r31, object->model[0], &lbl_1_bss_4C[3], 0x78); + if (1000.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_150++; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + lbl_1_bss_1A4->work[0] = 0x404; + lbl_1_bss_128 = 0.0f; + } + break; + case 0xBBD: + if (lbl_1_bss_1A4->work[0] >= 0x409) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_E8 = 360.0f * frandf(); + var_r31->unk_154 |= 2; + MTXIdentity(Hu3DData[object->model[0]].unk_F0); + omSetSca(object, 1.0f, 1.0f, 1.0f); + Hu3DModelScaleSet(object->model[1], 1.5f, 1.5f, 1.5f); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelHookSet(object->model[1], "g000i00-itemhook_A", object->model[0]); + var_r31->unk_00.unk_6C.x = 0.0f; + var_r31->unk_00.unk_6C.y = 3000.0f; + var_r31->unk_00.unk_6C.z = 0.0f; + var_r31->unk_00.unk_9C = 270.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + var_r31->unk_00.unk_3C |= 0x2020; + Hu3DMotionSet(object->model[0], object->motion[7]); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + case 0xBBE: + fn_1_A828(var_r31, 2 * REFRESH_RATE, 3000.0f, 1605.0f); + if (lbl_1_bss_1A4->work[0] >= 0x40B) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_D4.x = 1200.0f; + var_r31->unk_D4.y = var_r31->unk_00.unk_6C.y; + var_r31->unk_D4.z = 0.0f; + } + break; + case 0xBBF: + fn_1_A828(var_r31, 60.0f, var_r31->unk_D4.y, 1605.0f); + if ((fn_1_A7CC(var_r31) != 0) && (lbl_1_bss_1A4->work[0] < 0x40C)) { + lbl_1_bss_1A4->work[0] = 0x40C; + lbl_1_bss_128 = 0.0f; + } + break; + case 0xBC0: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.05f); + if (lbl_1_bss_1A4->work[0] >= 0x40D) { + var_r31->unk_150++; + var_r31->unk_EC = 0.0f; + var_r31->unk_104 = 0.0f; + fn_1_AAB0(var_r31, var_r31->unk_C8, 0); + var_r31->unk_D4 = var_r31->unk_00.unk_6C; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001); + } + break; + case 0xBC1: + if ((var_r31->unk_154 & 0x80) != 0) { + var_r31->unk_100 += 1.0f; + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFF7F; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001); + } + } + else if ((var_r31->unk_134 > lbl_1_data_A0C[0].unk_14) || (lbl_1_data_A0C[0].unk_14 <= 0)) { + var_r31->unk_100 += 1.0f; + var_r31->unk_154 |= 0x80; + Hu3DMotionShiftSet(object->model[0], object->motion[8], 0.0f, 8.0f, 0); + } + VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spF0); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spF0.x, spF0.z), 0.4f); + var_r31->unk_100 -= 1.0f; + if (0.0f > var_r31->unk_100) { + var_r31->unk_150 = 0xBC2; + var_r31->unk_154 |= 0x10; + fn_1_AAB0(var_r31, var_r31->unk_C8, 0); + fn_1_17970(object->model[0], object->model[1], var_r31->unk_00.unk_9C - 45.0f); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0); + } + var_r31->unk_EC += 0.5f; + if (360.0f <= var_r31->unk_EC) { + var_r31->unk_EC -= 360.0f; + } + var_r31->unk_00.unk_6C.x + = var_r31->unk_D4.x - (400.0 * (1.0 - (0.0 > cosd(var_r31->unk_EC) ? -cosd(var_r31->unk_EC) : cosd(var_r31->unk_EC)))); + var_r31->unk_00.unk_6C.z = var_r31->unk_D4.z + (800.0 * sind(var_r31->unk_EC)); + if ((var_r31->unk_150 == 0xBC1) && (lbl_1_bss_1A4->work[0] >= 0x40E)) { + var_r31->unk_150 = 0xBC3; + var_r31->unk_D4 = var_r31->unk_00.unk_6C; + var_r31->unk_D4.z = -1800.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[7], 0.0f, 8.0f, 0x40000001); + } + break; + case 0xBC2: + var_r31->unk_154 &= ~0x80; + if (((var_r31->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[7], 0.0f, 8.0f, 0x40000001); + } + var_r31->unk_100 -= 1.0f; + if (0.0f > var_r31->unk_100) { + var_r31->unk_150 = 0xBC1; + var_r31->unk_154 &= ~0x30; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001); + fn_1_AAB0(var_r31, var_r31->unk_C8, 1); + } + break; + case 0xBC3: + if (lbl_1_bss_1A4->work[0] >= 0x40F) { + if ((var_r31->unk_154 & 0x1000) == 0) { + var_r31->unk_154 |= 0x1000; + HuAudFXPlay(0x3B); + } + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) { + var_r31->unk_150++; + var_r31->unk_154 &= ~2; + Hu3DModelHookObjReset(object->model[1], "g000i00-itemhook_A"); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + lbl_1_bss_1A4->work[0] = 0x410; + lbl_1_bss_128 = 0.0f; + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0xBC4: + if (lbl_1_bss_1A4->work[0] >= 0x411) { + var_r31->unk_150++; + var_r31->unk_00.unk_9C = 0.0f; + fn_1_A470(var_r31, object, "m450mex06-s6kuppa01", 2); + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + case 0xBC5: + if (lbl_1_bss_1A4->work[0] >= 0x415) { + var_r31->unk_150 = 0xBC7; + var_r31->unk_E0 = 0.0f; + fn_1_A600(var_r31, object, "m450mex06-s6kuppa01", 2); + omSetSca(object, 1.5f, 1.5f, 1.5f); + var_r31->unk_00.unk_9C = 0.0f; + var_r31->unk_00.unk_6C.y = 1505.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + var_r31->unk_00.unk_04 = fn_1_ABD0; + } + break; + case 0xBC6: + var_r31->unk_E0 += 1.0f; + if (120.0f < var_r31->unk_E0) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_3C &= ~0x20; + fn_1_4ED8(&var_r31->unk_00, 0); + } + break; + case 0xBC7: + var_r31->unk_00.unk_B8 = fn_1_AB88(var_r31); + fn_1_19A10(&var_r31->unk_00, &spE4); + fn_1_40C0(&var_r31->unk_00); + var_r31->unk_E0 += 1.0f; + spC8 = (REFRESH_RATE * (3.0f + lbl_1_data_A0C[1].unk_14)); + if (spC8 < var_r31->unk_E0) { + var_r31->unk_150++; + var_r31->unk_154 &= ~0x70; + var_r31->unk_E0 = 0.0f; + var_r31->unk_114 = spE4; + if (frandmod(0x64) < 0x1E) { + var_r31->unk_110 = 0xBC9; + } + else if (500.0f > VECDistance(&var_r31->unk_00.unk_6C, &spE4)) { + var_r31->unk_110 = 0xBCA; + if (lbl_1_data_A0C[1].unk_14 <= 2) { + var_r31->unk_110 = 0xBCB; + } + } + else { + var_r31->unk_110 = 0xBCC; + } + fn_1_4ED8(&var_r31->unk_00, 0); + } + break; + case 0xBC8: + VECSubtract(&var_r31->unk_114, &var_r31->unk_00.unk_6C, &spF0); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spF0.x, spF0.z), 0.4f); + var_r31->unk_E0 += 1.0f; + var_r31->unk_114 = spE4; + if (60.0f < var_r31->unk_E0) { + var_r31->unk_150 = var_r31->unk_110; + var_r31->unk_154 &= ~0x30; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_3C |= 0x20; + } + break; + case 0xBC9: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + Hu3DMotionShiftSet(object->model[0], object->motion[15], 0.0f, 8.0f, 0x40000001); + } + else { + var_r31->unk_00.unk_B8 = 1.5f; + if ((fn_1_19A10(&var_r31->unk_00, &var_r31->unk_114) != 0) || (var_r31->unk_00.unk_48 > 0)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + } + else { + fn_1_40C0(&var_r31->unk_00); + } + } + break; + case 0xBCA: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + var_r31->unk_12C = fn_1_69F8(NULL, NULL, 0x200); + var_r31->unk_130 = HuAudFXPlay(0x7BC); + Hu3DMotionShiftSet(object->model[0], object->motion[12], 0.0f, 8.0f, 0); + } + else if (Hu3DMotionShiftIDGet(object->model[0]) < 0) { + if (45.0f < Hu3DMotionTimeGet(object->model[0])) { + var_r20 = 1; + } + if (var_r20 != 0) { + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + Hu3DMotionTimeSet(object->model[0], 50.0f); + } + var_r31->unk_E0 += 1.0f; + if (3 * REFRESH_RATE < var_r31->unk_E0) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 30.0f, 0x40000001); + fn_1_66A0(var_r31->unk_12C); + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + } + } + } + break; + case 0xBCB: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + var_r31->unk_12C = fn_1_69F8(NULL, NULL, 0x200); + var_r31->unk_130 = HuAudFXPlay(0x7BC); + Hu3DMotionShiftSet(object->model[0], object->motion[13], 0.0f, 8.0f, 0); + } + else if ((var_r31->unk_154 & 0x40) == 0) { + if (Hu3DMotionShiftIDGet(object->model[0]) < 0) { + if (52.0f < Hu3DMotionTimeGet(object->model[0])) { + var_r20 = 1; + } + if (Hu3DMotionEndCheck(object->model[0]) != 0) { + var_r31->unk_154 |= 0x40; + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(object->model[0], object->motion[14]); + } + } + } + else { + var_r20 = 1; + var_r31->unk_00.unk_B8 = 0.25f; + fn_1_19A10(&var_r31->unk_00, &spE4); + fn_1_40C0(&var_r31->unk_00); + var_r31->unk_E0 += 1.0f; + if (3 * REFRESH_RATE < var_r31->unk_E0) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + fn_1_66A0(var_r31->unk_12C); + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + } + } + break; + case 0xBCC: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + fn_1_18424(object->model[0], &var_r31->unk_114); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(object->model[0], object->motion[11]); + } + else if (((var_r31->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) + && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + if (((var_r31->unk_154 & 0x40) == 0) && (lbl_1_data_A0C[1].unk_14 <= 2)) { + var_r31->unk_150 = 0xBCD; + var_r31->unk_154 |= 0x40; + } + } + break; + case 0xBCD: + var_r31->unk_E0 += 1.0f; + if (10.0f < var_r31->unk_E0) { + var_r31->unk_150 = 0xBC8; + var_r31->unk_110 = 0xBCC; + var_r31->unk_114 = spE4; + var_r31->unk_154 &= ~0x30; + var_r31->unk_E0 = 0.0f; + } + break; + case 0xBCE: + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 &= ~0x8000; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_ATTR_DISPOFF); + } + break; + case 0xBCF: + if ((var_r31->unk_154 & 0x2000) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (128.0f < Hu3DMotionTimeGet(object->model[0]))) { + var_r31->unk_154 &= ~0x2000; + HuAudFXPlay(0x7BD); + } + break; + default: + OSReport("*** kuppa mode error(%d)!!\n", var_r31->unk_150); + break; + } + + if ((var_r31->unk_150 >= 0xBC6) && (var_r31->unk_150 <= 0xBCD)) { + if (var_r31->unk_154 & 0x8000) { + var_r31->unk_E0 = 0.0f; + if (var_r31->unk_12C >= 0) { + fn_1_66A0(var_r31->unk_12C); + } + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + if (fn_1_125C0(1, 1) <= 0) { + var_r31->unk_150 = 0xBCF; + var_r31->unk_154 |= 0x2000; + Hu3DMotionShiftSet(object->model[0], object->motion[17], 0.0f, 8.0f, 0); + HuAudFXPlay(0x3B); + } + else { + var_r31->unk_150 = 0xBCE; + Hu3DMotionShiftSet(object->model[0], object->motion[16], 0.0f, 8.0f, 0); + HuAudFXPlay(0x3B); + Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, + 150.0f + var_r31->unk_00.unk_6C.z); + Hu3DModelScaleSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 2.0f, 2.0f, 2.0f); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 0.0f); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_ATTR_DISPOFF); + } + } + if (var_r31->unk_150 != 0xBCF) { + if ((var_r31->unk_150 < 0xBCE) && ((lbl_1_data_A0C[0].unk_14 <= 0) || (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7EB))) { + var_r31->unk_150 = 0xBCF; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0x40000001); + HuAudFXPlay(0x3A); + if (var_r31->unk_12C >= 0) { + fn_1_66A0(var_r31->unk_12C); + } + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + } + else if (((var_r31->unk_138 != 0) || (fn_1_19798() != 0)) && (var_r31->unk_150 == 0xBC9)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + } + } + } + if ((var_r31->unk_154 & 0x100) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + if (var_r31->unk_154 & 0x2000) { + var_r31->unk_154 &= ~0x2000; + HuAudFXPlay(0x7BE); + } + var_r31->unk_144 -= 1.0f; + if (0.0f > var_r31->unk_144) { + var_r31->unk_154 &= ~0x100; + Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_140], 0.0f, 8.0f, 0x40000001); + } + } + if (var_r31->unk_12C >= 0) { + if (var_r20 != 0) { + fn_1_1D18(object->model[0], "g000m0-itemhook_M", &spFC); + fn_1_1D18(object->model[0], "g000m0-ns_hed", &spD8); + VECSubtract(&spFC, &spD8, &spF0); + fn_1_6798(var_r31->unk_12C, 1, &spFC, atan2d(spF0.x, spF0.z), 700.0f, 1550.0f); + } + if (fn_1_66DC(var_r31->unk_12C) != 0) { + var_r31->unk_12C = -1; + } + } + var_r31->unk_134 = lbl_1_data_A0C[0].unk_14; + spFC = var_r31->unk_00.unk_6C; + if (var_r31->unk_154 & 2) { + var_r31->unk_E8 += 4.0f; + if (360.0f <= var_r31->unk_E8) { + var_r31->unk_E8 -= 360.0f; + } + spCC = var_r31->unk_00.unk_6C.y + (8.0 * sind(var_r31->unk_E8)); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(object->model[1], var_r31->unk_00.unk_6C.x, spCC, var_r31->unk_00.unk_6C.z); + Hu3DModelRotSet(object->model[1], 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + else if (var_r31->unk_154 & 1) { + fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_CC, &spFC, Hu3DData[object->model[0]].unk_F0); + MTXScale(sp1F8, 1.5f, 1.5f, 1.5f); + MTXConcat(Hu3DData[object->model[0]].unk_F0, sp1F8, Hu3DData[object->model[0]].unk_F0); + } + else { + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + fn_1_A3C4(object, &spFC, 2); +} + +void fn_1_DBF0(omObjData *object) +{ + Vec sp8; + + UnkM450Struct3 *var_r31; + s32 var_r29; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct3), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + var_r31->unk_150 = 0xBB8; + var_r31->unk_154 = 0; + var_r31->unk_14C = 0; + var_r31->unk_12C = -1; + var_r31->unk_130 = -1; + sp8.x = 0.0f; + sp8.y = 1500.0f; + sp8.z = -800.0f; + fn_1_2C1C(&var_r31->unk_00, object, 4, 9, lbl_1_data_18C, 0, &sp8, 0.0f); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_AC[var_r29]); + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[var_r29], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(object->model[var_r29], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[var_r29], 3); + Hu3DModelShadowSet(object->model[var_r29]); + } + for (var_r29 = 0; var_r29 < 0x13; var_r29++) { + object->motion[var_r29] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(lbl_1_data_B4[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + Hu3DMotionSet(object->model[0], object->motion[0]); + CharModelEffectNpcInit(object->model[0], object->motion[1], 2, 8); + CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 8); + CharModelEffectNpcInit(object->model[0], object->motion[15], 3, 8); + var_r31->unk_F4 = 1.0f; + switch (GWPlayerCfg[lbl_1_bss_120].diff) { + case 0: + var_r31->unk_C8 = &lbl_1_data_234[0]; + var_r31->unk_D0 = lbl_1_data_254; + break; + case 1: + var_r31->unk_C8 = &lbl_1_data_234[1]; + var_r31->unk_D0 = lbl_1_data_268; + break; + case 2: + var_r31->unk_C8 = &lbl_1_data_234[2]; + var_r31->unk_D0 = lbl_1_data_27C; + break; + case 3: + default: + var_r31->unk_C8 = &lbl_1_data_234[3]; + var_r31->unk_D0 = lbl_1_data_290; + break; + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + omSetSca(object, 1.5f, 1.5f, 1.5f); + Hu3DModelAttrReset(*object->model, HU3D_ATTR_DISPOFF); + object->func = (omObjFunc)fn_1_AD58; +} + +s32 fn_1_E0E8(s32 arg0, s32 arg1) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (arg1 == lbl_1_data_1CC[var_r31 * 2]) { + return HuAudFXPlay(lbl_1_data_1CC[arg0 + (var_r31 * 2)]); + } + } + + return -1; +} + +s32 fn_1_E178(s32 arg0, s32 arg1) +{ + UnkM450Struct3 *var_r31 = lbl_1_bss_130[arg0]->data; + var_r31->unk_14C = arg1; + return arg0; +} + +void fn_1_E1A8(s32 arg0, s32 arg1, float arg8, u32 arg2, s32 arg3, float arg9) +{ + UnkM450Struct3 *var_r31; + omObjData *var_r30; + + var_r30 = lbl_1_bss_130[arg0]; + if (arg8 == 0.0f) { + Hu3DMotionSet(var_r30->model[0], var_r30->motion[arg1]); + } + else { + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[arg1], 0.0f, arg8, arg2); + } + var_r31 = var_r30->data; + var_r31->unk_140 = -1; + var_r31->unk_154 &= ~0x100; + if (arg3 >= 0) { + var_r31->unk_140 = arg3; + var_r31->unk_144 = arg9; + var_r31->unk_154 |= 0x100; + } + var_r31->unk_148 = arg1; +} + +void fn_1_E2BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + lbl_1_bss_4 = arg0; + lbl_1_bss_0 = arg1; + if (arg2 == 0) { + fn_1_6CB0(fn_1_7D40, arg3); + } + else { + fn_1_6CB0(fn_1_8120, arg3); + } +} + +void fn_1_E3C8(UnkM450Struct3 *arg0, omObjData *arg1, s32 arg2) +{ + s32 var_r30; + if (arg2 != 0) { + if (arg1->work[0] == 0) { + Hu3DModelAttrReset(arg1->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(arg1->model[0], HU3D_ATTR_DISPOFF); + } + else { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DModelAttrSet(arg1->model[var_r30], HU3D_ATTR_DISPOFF); + } + } + arg0->unk_00.unk_3C &= ~0xC00; +} + +UnkData1380Struct lbl_1_data_1380; +UnkData1380Struct lbl_1_data_13B8; + +void fn_1_E478(UnkM450Struct3 *arg0, omObjData *arg1) +{ + s32 var_r29; + float var_f31; + UnkData1380Struct *var_r30 = &lbl_1_data_1380; + float var_f30; + + arg0->unk_F8 = -1; + arg0->unk_154 &= ~0x30; + arg0->unk_120.x = 0.0f; + arg0->unk_120.y = 0.0f; + arg0->unk_120.z = 0.0f; + if (arg1->work[0] != 0) { + var_r29 = frandmod(var_r30->unk_08); + while (var_r30->unk_24[var_r29] < 0) { + var_r29 = (var_r29 + 1) % var_r30->unk_08; + } + arg0->unk_F8 = var_r30->unk_24[var_r29]; + var_f31 = 200.0f * frandf(); + var_f30 = 360.0f * frandf(); + arg0->unk_120.x = var_f31 * sind(var_f30); + arg0->unk_120.z = var_f31 * cosd(var_f30); + } +} + +void fn_1_E604(UnkM450Struct3 *arg0, omObjData *arg1) +{ + Vec spC; + float sp8; + + arg0->unk_D4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C; + if (((arg0->unk_154 & 0x10) != 0) && ((arg0->unk_154 & 0x20) == 0)) { + if ((Hu3DMotionShiftIDGet(arg1->model[0]) < 0) && (20.0f < Hu3DMotionTimeGet(arg1->model[0]))) { + arg0->unk_154 |= 0x20; + spC = arg0->unk_00.unk_6C; + spC.x += (200.0 * sind(arg0->unk_00.unk_9C)); + spC.y += 100.0f; + spC.z += (200.0 * cosd(arg0->unk_00.unk_9C)); + fn_1_17360(&spC, arg0->unk_00.unk_9C); + } + } + else { + fn_1_19A10(&arg0->unk_00, &arg0->unk_D4); + fn_1_40C0(&arg0->unk_00); + VECSubtract(&arg0->unk_00.unk_6C, &arg0->unk_D4, &spC); + if ((300.0f > sqrtf((spC.x * spC.x) + (spC.z * spC.z))) && ((arg0->unk_154 & 0x10) == 0)) { + arg0->unk_154 |= 0x10; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0.0f, 8.0f, 0); + } + } +} + +void fn_1_E918(UnkM450Struct3 *arg0, omObjData *arg1) +{ + arg0->unk_D4 = *fn_1_16314(arg0->unk_F8); + VECAdd(&arg0->unk_120, &arg0->unk_D4, &arg0->unk_D4); + if ((arg0->unk_154 & 0x10) && ((arg0->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) + && (Hu3DMotionEndCheck(*arg1->model) != 0)) { + arg0->unk_154 |= 0x20; + fn_1_16BC4(&arg0->unk_00.unk_6C, &arg0->unk_120, arg0->unk_F8); + } + if (fn_1_19A10(&arg0->unk_00, &arg0->unk_D4) != 0) { + if ((arg0->unk_154 & 0x10) == 0) { + arg0->unk_154 |= 0x10; + Hu3DMotionShiftSet(*arg1->model, arg1->motion[5], 0.0f, 8.0f, 0); + } + } + else { + fn_1_40C0(&arg0->unk_00); + } +} + +void fn_1_EA50(UnkM450Struct3 *arg0, omObjData *arg1) +{ + arg0->unk_150 = 0xFAD; + arg0->unk_E0 = 0.0f; + Hu3DMotionShiftSet(*arg1->model, *arg1->motion, 0.0f, 8.0f, 0); + fn_1_1D70(lbl_1_bss_1A0->model[0], arg1->work[0] == 0 ? "m450mex06-s3mini2" : "m450mex06-s3mini1", &arg0->unk_D4, NULL); +} + +HsfanimStruct00 lbl_1_data_1504; + +void fn_1_EB6C(UnkM450Struct3 *arg0, omObjData *arg1) +{ + s32 var_r29; + s16 var_r28; + u32 var_r27; + + fn_1_1D18(arg1->model[4], "g007i03-itemhook_M", &arg0->unk_00.unk_6C); + Hu3DModelHookObjReset(arg1->model[4], "g007i03-itemhook_M"); + Hu3DModelAttrSet(arg1->model[4], HU3D_ATTR_DISPOFF); + arg0->unk_150 = 0xFAE; + arg0->unk_154 &= 0xFFFFFFFD; + arg0->unk_108 = 19.6f; + arg0->unk_E0 = 0.0f; + Hu3DMotionSet(arg1->model[0], arg1->motion[6]); + Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg1->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(arg1->model[0], 1.0f); + arg0->unk_13C = Hu3DParManLink(lbl_1_bss_24, &lbl_1_data_1504); + Hu3DParManPosSet(arg0->unk_13C, arg0->unk_00.unk_6C.x, arg0->unk_00.unk_6C.y, arg0->unk_00.unk_6C.z); + Hu3DParManAttrReset(arg0->unk_13C, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(arg0->unk_13C), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(arg0->unk_13C), 5); + fn_1_E0E8(arg1->work[0], 0x3F); +} + +void fn_1_ED4C(omObjData *object) +{ + Vec spEC; + float spDC; + + UnkM450Struct3 *var_r31; + Vec *var_r29; + UnkM450Struct3 *var_r18; + + var_r18 = lbl_1_bss_130[object->work[0] ^ 1]->data; + var_r31 = object->data; + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + + switch (var_r31->unk_150) { + case 0xFA0: + if ((lbl_1_bss_1A4->work[0] >= 0x3EF) && (30.0f < lbl_1_bss_128)) { + var_r31->unk_150++; + var_r31->unk_E4 = 0.0f; + var_r31->unk_154 &= ~0x100; + var_r31->unk_154 |= 0x200; + var_r31->unk_F0 = var_r31->unk_00.unk_6C.x - (100.0f * (0.0f > var_r31->unk_00.unk_6C.x ? -1 : 1)); + } + if ((object->work[0] == 0) && (var_r31->unk_148 == 7)) { + var_r31->unk_00.unk_9C = 0.0f; + } + else { + VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spEC); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spEC.x, spEC.z), 0.4f); + } + break; + case 0xFA1: + fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A); + if (-1100.0f > var_r31->unk_00.unk_6C.z) { + var_r31->unk_150++; + fn_1_E2BC(1, 0x1E, object->work[0], 0); + fn_1_E1A8(object->work[0], 12, 8.0f, 0, 1, 0.0f); + } + break; + case 0xFA2: + if (lbl_1_bss_10 == 0) { + fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A); + if (1000.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_150++; + var_r31->unk_154 &= ~0x200; + fn_1_E3C8(var_r31, object, 0); + } + } + else { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 0.0f, 0.4f); + } + break; + case 0xFA3: + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7D5) { + var_r31->unk_150++; + fn_1_A470(var_r31, object, object->work[0] == 0 ? "m450mex06-s2kuppa01" : "m450mex06-s2kuppa02", 5); + fn_1_4ED8(&var_r31->unk_00, 0); + fn_1_E3C8(var_r31, object, 1); + } + break; + case 0xFA4: + if (lbl_1_bss_1A4->work[0] >= 0x3F2) { + var_r31->unk_150 = var_r31->unk_150 + 1; + var_r31->unk_00.unk_9C = 0.0f; + fn_1_A600(var_r31, object, object->work[0] == 0 ? "m450mex06-s2kuppa01" : "m450mex06-s2kuppa02", 5); + var_r31->unk_00.unk_6C.y = 1505.0f; + var_r31->unk_00.unk_3C |= 0x400; + fn_1_1D70(lbl_1_bss_1A0->model[0], "m450mex06-s2hook04", &var_r31->unk_D4, NULL); + var_r31->unk_D4.x += (-100.0f + (300.0f * (object->work[0] ^ 1))); + var_r31->unk_D4.z += (100.0f - (200.0f * (object->work[0] ^ 1))); + } + break; + case 0xFA5: + if (fn_1_A7CC(var_r31) != 0) { + var_r31->unk_D4.x = 1200.0f; + var_r31->unk_D4.z = 150.0f - (300.0f * (object->work[0] ^ 1)); + } + break; + case 0xFA6: + if (fn_1_A7CC(var_r31)) { + fn_1_E3C8(var_r31, object, 0); + } + break; + case 0xFA7: + if (lbl_1_bss_1A4->work[0] >= 0x3F7) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_E8 = 360.0f * frandf(); + var_r31->unk_154 |= 2; + Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[4], HU3D_MOTATTR_PAUSE); + Hu3DModelHookSet(object->model[4], "g007i03-itemhook_M", object->model[0]); + var_r31->unk_00.unk_6C.x = 0.0f; + var_r31->unk_00.unk_6C.y = 3000.0f; + var_r31->unk_00.unk_6C.z = -300.0f + (600.0f * object->work[0]); + var_r31->unk_00.unk_9C = 270.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + var_r31->unk_00.unk_3C |= 0x2020; + fn_1_E3C8(var_r31, object, 1); + } + break; + case 0xFA8: + fn_1_A828(var_r31, 2 * REFRESH_RATE, 3000.0f, 1605.0f); + if (lbl_1_bss_1A4->work[0] >= 0x3F9) { + var_r31->unk_150 = var_r31->unk_150 + 1; + var_r31->unk_E0 = 0.0f; + var_r31->unk_D4.x = 800.0f; + var_r31->unk_D4.y = var_r31->unk_00.unk_6C.y; + var_r31->unk_D4.z = -400.0f + (800.0f * object->work[0]); + } + break; + case 0xFA9: + fn_1_A828(var_r31, 60.0f, var_r31->unk_D4.y, 2055.0f); + if ((fn_1_A7CC(var_r31) != 0) && (lbl_1_bss_1A4->work[0] < 0x3FA)) { + lbl_1_bss_1A4->work[0] = 0x3FA; + lbl_1_bss_128 = 0.0f; + } + break; + case 0xFAA: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.05f); + if (lbl_1_bss_1A4->work[0] >= 0x3FB) { + var_r31->unk_150++; + var_r31->unk_FC = 0; + var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00; + var_r31->unk_D4 = var_r31->unk_00.unk_6C; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001); + } + break; + case 0xFAB: + if (var_r31->unk_154 & 0x80) { + var_r31->unk_100 += 1.0f; + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFF7F; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001); + } + } + else if ((var_r31->unk_134 > lbl_1_data_A0C[0].unk_14) || (lbl_1_data_A0C[0].unk_14 <= 0)) { + var_r31->unk_100 += 1.0f; + if (lbl_1_data_A0C[0].unk_14 > 0) { + var_r31->unk_154 |= 0x80; + Hu3DMotionShiftSet(object->model[0], object->motion[11], 0.0f, 8.0f, 0); + } + else { + var_r31->unk_150 = 0xFB0; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0); + } + } + var_r31->unk_154 &= ~4; + var_r31->unk_100 -= 1.0f; + if ((var_r18->unk_154 & 4) && (0.0f > var_r31->unk_100)) { + var_r31->unk_FC++; + if (var_r31->unk_C4[var_r31->unk_FC].unk_00 == 0.0f) { + var_r31->unk_FC -= 2; + } + var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00; + if (var_r31->unk_C4[var_r31->unk_FC].unk_04) { + var_r31->unk_150 = 0xFAC; + fn_1_E478(var_r31, object); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0); + } + } + else if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) { + var_r31->unk_154 |= 4; + VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spEC); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spEC.x, spEC.z), 0.4f); + } + else { + fn_1_40C0(&var_r31->unk_00); + } + if (lbl_1_bss_1A4->work[0] >= 0x3FC) { + fn_1_EA50(var_r31, object); + } + break; + case 0xFAC: + var_r31->unk_154 &= ~0x84; + var_r31->unk_100 -= 1.0f; + if (0.0f > var_r31->unk_100) { + var_r31->unk_FC++; + if (var_r31->unk_C4[var_r31->unk_FC].unk_00 == 0.0f) { + var_r31->unk_FC -= 2; + } + var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00; + if (var_r31->unk_C4[var_r31->unk_FC].unk_04 == 0) { + var_r31->unk_150 = 0xFAB; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001); + var_r31->unk_D4.x = 800.0f; + if (0.0f > var_r18->unk_00.unk_6C.z) { + var_r31->unk_D4.z = 200.0f; + } + else { + var_r31->unk_D4.z = -200.0f; + } + var_r31->unk_D4.z += var_r31->unk_D4.z * frandf(); + } + } + else { + if (object->work[0] == 0) { + fn_1_E604(var_r31, object); + } + else { + fn_1_E918(var_r31, object); + } + if ((((var_r31->unk_154 & 0x10) == 0) || (var_r31->unk_154 & 0x20)) && (lbl_1_bss_1A4->work[0] == 0x3E8)) { + var_r31->unk_100 = 0.0f; + } + } + if (lbl_1_bss_1A4->work[0] >= 0x3FC) { + fn_1_EA50(var_r31, object); + } + break; + case 0xFAD: + if (lbl_1_bss_1A4->work[0] >= 0x3FD) { + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.4f); + if ((object->work[0] + 0x3FE) == lbl_1_bss_1A4->work[0]) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0; + } + if (lbl_1_bss_1A4->work[0] > 0x3FF) { + fn_1_EB6C(var_r31, object); + } + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0xFAE: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.4f); + var_r31->unk_00.unk_6C.x += 0.1f * (var_r31->unk_D4.x - var_r31->unk_00.unk_6C.x); + var_r31->unk_00.unk_6C.z += 0.1f * (var_r31->unk_D4.z - var_r31->unk_00.unk_6C.z); + if (1505.0f < var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_6C.y += var_r31->unk_108; + var_r31->unk_108 = var_r31->unk_108 - 0.98f; + if (1505.0f >= var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_6C.y = 1505.0f; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + } + } + else if (((var_r31->unk_154 & 0x400) == 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 |= 0x400; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + } + if (lbl_1_bss_1A4->work[0] >= 0x402) { + var_r31->unk_150 = var_r31->unk_150 + 1; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_3C &= ~0x2020; + fn_1_A470(var_r31, object, object->work[0] == 0 ? "m450mex06-s3mini2" : "m450mex06-s3mini1", 5); + } + var_r31->unk_E0 += 1.0f; + if (var_r31->unk_E0 == 10.0f) { + Hu3DParManAttrSet(var_r31->unk_13C, 1); + } + break; + case 0xFAF: + if (lbl_1_bss_1A4->work[0] >= 0x403) { + var_r31->unk_150 = var_r31->unk_150 + 1; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + break; + case 0xFB0: + break; + default: + OSReport("*** minik mode error(%d)!!\n", var_r31->unk_150); + break; + } + + if ((var_r31->unk_154 & 0x100) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_144 -= 1.0f; + if (0.0f > var_r31->unk_144) { + var_r31->unk_154 &= ~0x100; + var_r31->unk_148 = var_r31->unk_140; + Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_140], 0.0f, 8.0f, 0x40000001); + } + } + var_r31->unk_134 = lbl_1_data_A0C[0].unk_14; + var_r29 = &lbl_1_bss_34[object->work[0]]; + if (var_r31->unk_154 & 2) { + *var_r29 = var_r31->unk_00.unk_6C; + var_r29->y += 100.0f; + var_r31->unk_E8 += 4.0f; + if (360.0f <= var_r31->unk_E8) { + var_r31->unk_E8 -= 360.0f; + } + spDC = var_r31->unk_00.unk_6C.y + (8.0 * sind(var_r31->unk_E8)); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(object->model[4], var_r31->unk_00.unk_6C.x, spDC, var_r31->unk_00.unk_6C.z); + Hu3DModelRotSet(object->model[4], 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + else if ((var_r31->unk_154 & 1) != 0) { + fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_CC, var_r29, Hu3DData[object->model[0]].unk_F0); + } + else { + *var_r29 = var_r31->unk_00.unk_6C; + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + fn_1_A3C4(object, var_r29, 5); + if (var_r31->unk_14C != 0) { + lbl_1_bss_D8++; + VECAdd(&lbl_1_bss_CC, &var_r31->unk_00.unk_6C, &lbl_1_bss_CC); + } +} + +void fn_1_11D5C(omObjData *object) +{ + Vec sp8; + + UnkM450Struct3 *var_r31; + s32 var_r29; + s32 var_r27; // ! - uninitialized + s32 *var_r26; + + (void)var_r27; + (void)var_r27; + (void)var_r27; + (void)var_r27; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct3), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + var_r31->unk_150 = 0xFA0; + var_r31->unk_154 = 0; + var_r31->unk_14C = 0; + var_r31->unk_13C = -1; + var_r31->unk_148 = 7; + sp8.x = -300.0f + (600.0f * object->work[0]); + sp8.y = 1500.0f; + sp8.z = -600.0f; + fn_1_2C1C(&var_r31->unk_00, object, 4, 8, lbl_1_data_1AC, 0, &sp8, 0.0f); + var_r31->unk_00.unk_3C |= 0x1000; + for (var_r29 = 0; var_r29 < 5; var_r29++) { + object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_100[var_r29]); + Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[var_r29], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[var_r29], 3); + Hu3DModelShadowSet(object->model[var_r29]); + } + var_r31->unk_F4 = 1.0f; + var_r31->unk_C4 = lbl_1_data_204; + var_r26 = lbl_1_data_150; + if (object->work[0] == 0) { + var_r31->unk_C4 = lbl_1_data_1DC; + var_r26 = lbl_1_data_114; + Hu3DModelHookSet(object->model[0], "g007m0-itemhook_r", object->model[1]); + } + for (var_r29 = 0; var_r29 < 0xF; var_r29++) { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r26[var_r29]); + } + Hu3DMotionSet(object->model[0], object->motion[7]); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + if (object->work[0] == 0) { + CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xD); + CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xD); + } + else { + CharModelEffectNpcInit(object->model[0], object->motion[1], 2, 0xD); + CharModelEffectNpcInit(object->model[0], object->motion[2], 3, 0xD); + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + if (object->work[0] == 0) { + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + var_r31->unk_00.unk_3C &= ~0xC00; + object->func = (omObjFunc)fn_1_ED4C; +} + +Vec lbl_1_data_464 = { 7000.0f, 7000.0f, 7000.0f }; +Vec lbl_1_data_470 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_47C = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_488 = { 0.0f, 2200.0f, 1500.0f }; +Vec lbl_1_data_494 = { 0.0f, 1800.0f, 0.0f }; +Vec lbl_1_data_4A0 = { 0.0f, 1800.f, 650.0f }; +Vec lbl_1_data_4AC = { 0.0f, 1700.0f, -650.0f }; +Vec lbl_1_data_4B8 = { 0.0f, 1850.0f, 450.0f }; +Vec lbl_1_data_4C4 = { 0.0f, 1775.0f, -50.0f }; +Vec lbl_1_data_4D0 = { 0.0f, 1850.0f, 550.0f }; +Vec lbl_1_data_4DC = { 0.0f, 1775.0f, -50.0f }; +Vec lbl_1_data_4E8 = { 0.0f, 3000.0f, 1000.0f }; +Vec lbl_1_data_4F4 = { 0.0f, -3.0f, -1.0f }; +GXColor lbl_1_data_500 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_504 = { 0.0f, 8000.0f, 1000.0f }; +Vec lbl_1_data_510 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_51C[4] = { + { 1500.0f, 700.0f, 300.0f }, + { 1500.0f, 1200.0f, 200.0f }, + { 2400.0f, 1400.0f, 400.0f }, + { 2500.0f, 800.0f, -200.0f }, +}; + +s32 lbl_1_data_9EC[8]; + +void fn_1_12234(void) +{ + UnkDataA0CStruct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + lbl_1_data_A0C[0].unk_0C = lbl_1_data_9EC[GWPlayerCfg[lbl_1_bss_120].character]; + for (var_r31 = lbl_1_data_A0C, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r27 = var_r31->unk_10 + 3; + var_r31->unk_18 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 4, MEMORY_DEFAULT_NUM); + var_r31->unk_18[0] = espEntry(var_r31->unk_00, 0, 0); + var_r31->unk_18[1] = espEntry(var_r31->unk_04, 0, 0); + var_r31->unk_18[2] = espEntry(var_r31->unk_0C, 0, 0); + for (var_r30 = 3; var_r30 < var_r27; var_r30++) { + var_r31->unk_18[var_r30] = espEntry(var_r31->unk_08, 0, 0); + } + var_r28 = 0x30; + if (var_r29 != 0) { + var_r28 = 0x210; + } + for (var_r30 = 0; var_r30 < var_r27; var_r30++) { + espDrawNoSet(var_r31->unk_18[var_r30], 0); + espDispOff(var_r31->unk_18[var_r30]); + espAttrSet(var_r31->unk_18[var_r30], HUSPR_ATTR_NOANIM); + espBankSet(var_r31->unk_18[var_r30], 0); + espPriSet(var_r31->unk_18[var_r30], 0x80 - var_r29); + espPosSet(var_r31->unk_18[var_r30], var_r28, 225.0f); + } + espTPLvlSet(var_r31->unk_18[0], 0.5f); + espColorSet(var_r31->unk_18[0], 0, 0, 0); + espPosSet(var_r31->unk_18[2], var_r28 - 2, 83.0f); + for (var_r30 = 3; var_r30 < var_r27; var_r30++) { + espPosSet(var_r31->unk_18[var_r30], var_r28 - 1, ((var_r30 - 3) * 0x1A) + 0x7B); + } + } +} + +void fn_1_12540(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < (lbl_1_data_A0C[arg0].unk_10 + 3); var_r31++) { + espDispOn(lbl_1_data_A0C[arg0].unk_18[var_r31]); + } +} + +s32 fn_1_125C0(s32 arg0, s32 arg1) +{ + UnkDataA0CStruct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_data_A0C[arg0]; + if (arg1 == 0) { + arg1 = var_r31->unk_10 + 1; + } + var_r31->unk_14 -= arg1; + arg1 = var_r31->unk_14; + if (var_r31->unk_14 < 0) { + var_r31->unk_14 = 0; + } + for (var_r30 = 0; var_r30 < var_r31->unk_10; var_r30++) { + if (var_r31->unk_14 <= var_r30) { + espBankSet(var_r31->unk_18[var_r30 + 3], 1); + } + } + return arg1; +} + +void fn_1_12688(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + CameraData *var_r30; + + var_f30 = 1.0f; + var_f31 = 1.0f; + if (lbl_1_bss_1A4->work[0] > 0x3EC) { + var_f30 = 0.8f; + var_f31 = 0.4f; + } + if (object->work[0] != 0) { + if (lbl_1_bss_1A4->work[0] <= 0x3EB) { + object->work[0] = object->work[0] - (3.0f - (lbl_1_bss_128 / 120.0f)); + if (object->work[0] > 10 * REFRESH_RATE) { + object->work[0] = 1; + } + } + if (--object->work[0] == 0) { + var_r30 = Hu3DCamera; + VECSubtract(&var_r30->pos, &var_r30->target, &sp8); + var_f29 = (atan2d(sp8.x, sp8.z)) + ((90.0f * frandf()) - 45.0f); + omSetRot(object, 0.0f, var_f29, 0.0f); + omSetSca(object, var_f31, var_f30, var_f31); + Hu3DMotionTimeSet(object->model[0], 0.0f); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(0x7C0); + } + } + else if (Hu3DMotionEndCheck(object->model[0]) != 0) { + object->work[0] = frandmod(10 * REFRESH_RATE); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + } +} + +void fn_1_1291C(omObjData *object) +{ + object->work[0] = frandmod(10 * REFRESH_RATE); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M450, 0x22)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 1); + object->func = fn_1_12688; +} + +UnkData5CCStruct lbl_1_data_5CC[8] = { + { "c000m1-ske_head", 0x100, 1, 183.0f }, + { "c001m1-ske_head", 0x100, 1, 183.0f }, + { "c002m1-ske_head", 0x80, 0, 100.0f }, + { "c003m1-ske_head", 0x80, 0, 90.0f }, + { "c004m1-ske_head", 0x80, 0, 83.0f }, + { "c005m1-ske_head", 0x80, 0, 112.0f }, + { "c006m1-ske_head", 0x80, 0, 100.0f }, + { "c007m1-ske_head", 0x80, 0, 70.0f }, +}; +s32 lbl_1_data_64C[8][0x17] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x09), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x13), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x19), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x10), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x11), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x08), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x09), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x13), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x16), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x19), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x01), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x10), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x11), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x05), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x06), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x08), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x09), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x13), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x16), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x19), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x36), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x10), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x11), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x08), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x09), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x13), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x16), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x10), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x11), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x08), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x09), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x13), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x16), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x19), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x04), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x10), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x11), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x06), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x08), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x09), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x13), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x16), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x19), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x36), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x05), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x10), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x11), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x06), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x08), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x09), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x13), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x16), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x19), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x36), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x06), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x10), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x11), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x08), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x09), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x13), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x16), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x19), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x07), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x10), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x11), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x7F), + }, +}; +s32 lbl_1_data_92C[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +UnkData94CStruct lbl_1_data_94C[8] = { + { 9, 1.0f, 8.0f, 0.0f, 0 }, + { 0xA, 1.0f, 0.0f, 0.0f, 0 }, + { 0xB, 2.5f, 8.0f, 0.0f, 0 }, + { 0xC, 1.0f, 8.0f, 61.0f, 0x40000002 }, + { -1, 1.0f, 0.0f, 0.0f, 0 }, + { 0xD, 1.0f, 8.0f, 0.0f, 0 }, + { 0, 1.0f, 16.0f, 0.0f, 0x40000001 }, + { -1, 1.0f, 0.0f, 0.0f, 0 }, +}; +s32 lbl_1_data_9EC[8] = { + 0x610000, + 0x610001, + 0x610002, + 0x610003, + 0x610004, + 0x610005, + 0x610006, + 0x610007, +}; +UnkDataA0CStruct lbl_1_data_A0C[2] = { + { 0x00510065, DATA_MAKE_NUM(DATADIR_M450, 0x64), DATA_MAKE_NUM(DATADIR_M450, 0x68), DATA_MAKE_NUM(DATADIR_M450, 0x6B), 0xA, 0xA, NULL }, + { 0x00510067, DATA_MAKE_NUM(DATADIR_M450, 0x66), DATA_MAKE_NUM(DATADIR_M450, 0x69), DATA_MAKE_NUM(DATADIR_M450, 0x6A), 5, 5, NULL }, +}; +UnkDataA80Struct lbl_1_data_A80[9] = { + { "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, 36.0f / REFRESH_RATE, 350.0f }, -1, 0 }, + { "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 }, + { "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -36.0f / REFRESH_RATE, 350.0f }, -1, 0 }, + { "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -36.0f / REFRESH_RATE, 350.0f }, -2, 0 }, + { "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 36.0f / REFRESH_RATE, 350.0f }, -1, 0 }, + { "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 }, + { "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 }, + { "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 36.0f / REFRESH_RATE, 300.0f }, -1, 0 }, + { "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, 36.0f / REFRESH_RATE, 300.0f }, -2, 0 }, +}; +UnkDataA80Struct lbl_1_data_C58[0xA] = { + { "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 60.0f, -36.0f / REFRESH_RATE, 300.0f }, -1, 0 }, + { "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 }, + { "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 300.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 }, + { "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, -72.0f / REFRESH_RATE, 300.0f }, -1, 0 }, + { "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, -72.0f / REFRESH_RATE, 300.0f }, -2, 0 }, + { "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -36.0f / REFRESH_RATE, 300.0f }, -1, 0 }, + { "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 }, + { "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 72.0f / REFRESH_RATE, 300.0f }, -1, 0 }, + { "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 72.0f / REFRESH_RATE, 300.0f }, -2, 0 }, + { "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 72.0f / REFRESH_RATE, 300.0f }, -2, 0 }, +}; +char *lbl_1_data_E68[5] = { + "m450m01-from1to2", + "m450m01-from2to3", + "m450m01-from3to4", + "m450m01-from4to5", + "m450m01-from5to6", +}; +s32 lbl_1_data_E7C[0x21] = { + DATA_MAKE_NUM(DATADIR_M450, 0x10), + DATA_MAKE_NUM(DATADIR_M450, 0x11), + DATA_MAKE_NUM(DATADIR_M450, 0x12), + DATA_MAKE_NUM(DATADIR_M450, 0x13), + DATA_MAKE_NUM(DATADIR_M450, 0x14), + DATA_MAKE_NUM(DATADIR_M450, 0x15), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x17), + DATA_MAKE_NUM(DATADIR_M450, 0x18), + DATA_MAKE_NUM(DATADIR_M450, 0x19), + DATA_MAKE_NUM(DATADIR_M450, 0x1A), + DATA_MAKE_NUM(DATADIR_M450, 0x1B), + DATA_MAKE_NUM(DATADIR_M450, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x1D), + DATA_MAKE_NUM(DATADIR_M450, 0x1E), + DATA_MAKE_NUM(DATADIR_M450, 0x1F), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x20), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x28), + DATA_MAKE_NUM(DATADIR_M450, 0x28), + DATA_MAKE_NUM(DATADIR_M450, 0x28), + DATA_MAKE_NUM(DATADIR_M450, 0x29), + DATA_MAKE_NUM(DATADIR_M450, 0x2A), + DATA_MAKE_NUM(DATADIR_M450, 0x2A), + DATA_MAKE_NUM(DATADIR_M450, 0x2B), + DATA_MAKE_NUM(DATADIR_M450, 0x2B), +}; +s32 lbl_1_data_F00[0x17] = { + DATA_MAKE_NUM(DATADIR_M450, 0x08), + DATA_MAKE_NUM(DATADIR_M450, 0x09), + DATA_MAKE_NUM(DATADIR_M450, 0x0B), + DATA_MAKE_NUM(DATADIR_M450, 0x0C), + DATA_MAKE_NUM(DATADIR_M450, 0x0E), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), +}; +s32 lbl_1_data_F5C[4] + = { DATA_MAKE_NUM(DATADIR_M450, 0x24), DATA_MAKE_NUM(DATADIR_M450, 0x25), DATA_MAKE_NUM(DATADIR_M450, 0x26), DATA_MAKE_NUM(DATADIR_M450, 0x27) }; +s32 lbl_1_data_F6C[6] = { 0, 60 * REFRESH_RATE, 300 * REFRESH_RATE, 60 * REFRESH_RATE, 300 * REFRESH_RATE, 300 * REFRESH_RATE }; +float lbl_1_data_F84[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f }; +float lbl_1_data_F98[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f }; +float *lbl_1_data_FAC[6] = { NULL, lbl_1_data_F84, NULL, lbl_1_data_F98, NULL, NULL }; +s32 lbl_1_data_FC4[5] = { 5, 4, 3, 2, 0 }; +s32 lbl_1_data_FD8[5] = { 3, 4, 5, 2, 2 }; +s32 lbl_1_data_FEC[5] = { 3, 4, 2, 5, 3 }; +s32 lbl_1_data_1000[5] = { 4, 2, 3, 5, 3 }; +s32 lbl_1_data_1014[0xA] = { 9, 0x10, 0xA, 8, 0xC, 0xD, 0xB, 0xE, 0xF, 1 }; +s32 lbl_1_data_103C[0xA] = { 9, 0x10, 0xA, 8, 0xB, 0xC, 0xE, 0xF, 0xD, 1 }; +s32 lbl_1_data_1064[0xA] = { 8, 0xC, 9, 0xB, 0xA, 0x10, 0xE, 0xF, 0xD, 5 }; +s32 lbl_1_data_108C[0xA] = { 8, 0xC, 9, 0xB, 0xF, 0xA, 0x10, 0xE, 0xD, 6 }; +s32 lbl_1_data_10B4[0xA] = { 8, 0xA, 0x10, 0xC, 9, 0xD, 0xB, 0xE, 0xF, 2 }; +s32 lbl_1_data_10DC[0xA] = { 8, 0xA, 0xC, 0xB, 9, 0xD, 0xE, 0xF, 0x10, 8 }; +s32 lbl_1_data_1104[0xA] = { 8, 0xC, 9, 0x10, 0xF, 0xA, 0xB, 0xE, 0xD, 3 }; +s32 lbl_1_data_112C[0xA] = { 0xB, 8, 0xA, 9, 0xD, 0x10, 0xE, 0xC, 0xF, 5 }; +s32 lbl_1_data_1154[0xA] = { 9, 0xC, 0xA, 8, 0xD, 0x10, 0xB, 0xE, 0xF, 5 }; +s32 lbl_1_data_117C[0xA] = { 9, 0xB, 0xA, 8, 0xF, 0xC, 0x10, 0xE, 0xD, 6 }; +s32 lbl_1_data_11A4[0xA] = { 8, 9, 0x10, 0xE, 0xD, 0xA, 0xC, 0xB, 0xF, 2 }; +s32 lbl_1_data_11CC[0xA] = { 0xB, 8, 0xA, 0xE, 9, 0xD, 0xC, 0xF, 0x10, 8 }; +s32 *lbl_1_data_11F4[4] = { lbl_1_data_FC4, lbl_1_data_FD8, lbl_1_data_FEC, lbl_1_data_1000 }; +s32 *lbl_1_data_1204[3] = { lbl_1_data_1014, lbl_1_data_103C, lbl_1_data_1064 }; +s32 *lbl_1_data_1210[3] = { lbl_1_data_108C, lbl_1_data_10B4, lbl_1_data_10DC }; +s32 *lbl_1_data_121C[3] = { lbl_1_data_1104, lbl_1_data_112C, lbl_1_data_1154 }; +s32 *lbl_1_data_1228[3] = { lbl_1_data_117C, lbl_1_data_11A4, lbl_1_data_11CC }; +s32 lbl_1_data_1234[8] = { 0xFFFFFFFF, 0, 1, 0, 0, 0xFFFFFFFF, 0, 1 }; + +char *lbl_1_data_12A0[4] = { + "m450mex06-s3hook01", + "m450mex06-s3hook02", + "m450mex06-s3hook03", + "m450mex06-s3hook04", +}; + +char *lbl_1_data_135C[9] = { + "m450mex06-s5hook03", + "m450mex06-s5hook02", + "m450mex06-s5hook01", + "m450mex06-s5hook06", + "m450mex06-s5hook05", + "m450mex06-s5hook04", + "m450mex06-s5hook09", + "m450mex06-s5hook08", + "m450mex06-s5hook07", +}; +UnkData1380Struct lbl_1_data_1380 = { lbl_1_data_12A0, 300.0f, 4, 2, -1, 0, 1, 0, 2, NULL, NULL, NULL, NULL, NULL }; +UnkData1380Struct lbl_1_data_13B8 = { lbl_1_data_135C, 200.0f, 9, 3, -1, 0, 1, 0, 8, NULL, NULL, NULL, NULL, NULL }; +UnkData1450Struct lbl_1_data_1450[5] = { + { "m450mex06-s6hook01", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook02", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook03", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook04", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook05", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, +}; + +HsfanimStruct00 lbl_1_data_1504 = { + 0x1E, + { 0, 0 }, + 1.0f, + 30.0f, + 360.0f, + { 0.0f, 0.1f, 0.0f }, + 1.0f, + 1.0f, + 50.0f, + 1.08f, + 1, + { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + }, + { + { 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0 }, + }, +}; + +void fn_1_12A1C(omObjData *object) +{ + float var_f31; + float var_f30; + + if (object->work[0] != 0) { + if (lbl_1_bss_108 != 0) { + if (--object->work[0] == 0) { + var_f31 = (1500.0f * frandf()) - 750.0f; + var_f30 = (1500.0f * frandf()) - 750.0f; + omSetTra(object, var_f31, 1380.0f, var_f30); + Hu3DMotionTimeSet(object->model[0], 0.0f); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + } + } + } + else if (Hu3DMotionEndCheck(object->model[0]) != 0) { + object->work[0] = frandmod(3 * REFRESH_RATE); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + } +} + +void fn_1_12B80(omObjData *object) +{ + s32 var_r30; + s16 var_r29; + + object->work[0] = frandmod(3 * REFRESH_RATE); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + + object->model[0] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M450, 0x23)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 1); + object->func = fn_1_12A1C; +} + +void fn_1_12D78(omObjData *object) { } + +void fn_1_12D7C(omObjData *object) +{ + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + object->model[0] = Hu3DModelCreateFile(lbl_1_data_F00[object->work[0]]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + object->func = fn_1_12D78; +} + +void fn_1_12E5C(s32 var_r30, s32 var_r29, s32 var_r31) +{ + Vec sp8 = lbl_1_data_1450[var_r30].unk_04; + + VECAdd(&lbl_1_data_1450[var_r29].unk_04, &sp8, &sp8); + VECScale(&sp8, &sp8, 0.5f); + sp8.y = 1501.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r31], sp8.x, sp8.y, sp8.z); + Hu3DModelRotSet( + lbl_1_bss_1A0->model[var_r31], 0.0f, atan2d(lbl_1_data_1450[var_r30].unk_04.x - sp8.x, lbl_1_data_1450[var_r30].unk_04.z - sp8.z), 0.0f); + Hu3DModelScaleSet( + lbl_1_bss_1A0->model[var_r31], 1.0f, 1.0f, VECDistance(&lbl_1_data_1450[var_r30].unk_04, &lbl_1_data_1450[var_r29].unk_04) / 1000.0f); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31], HU3D_ATTR_DISPOFF); +} + +void fn_1_130A4(Vec *arg0, s32 var_r30) +{ + Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r30], arg0->x, arg0->y, arg0->z); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r30], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r30], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r30], HU3D_ATTR_DISPOFF); + HuAudFXPlay(0x7B7); +} + +void fn_1_13174(UnkData1380Struct *arg0) +{ + s32 var_r30; + s32 var_r27; + + if (arg0->unk_14 != 0) { + arg0->unk_14 = 0; + arg0->unk_18 = 0; + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_24[var_r30] >= 0) { + var_r27 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]]; + MTXIdentity(Hu3DData[var_r27].unk_F0); + if (arg0->unk_08 == 4) { + Hu3DModelRotSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 0.0f, 90.0f, 0.0f); + } + else { + Hu3DModelRotSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 0.0f, -90.0f, 0.0f); + } + } + } + } + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_18 != 0) { + if (arg0->unk_24[var_r30] < 0) { + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], NULL); + } + else { + var_r27 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]]; + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], Hu3DData[var_r27].unk_F0); + } + } + else if (arg0->unk_24[var_r30] >= 0) { + Hu3DModelPosSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], arg0->unk_30[var_r30].x, arg0->unk_30[var_r30].y, arg0->unk_30[var_r30].z); + } + } + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_28[var_r30] >= 0) { + omSetTra(lbl_1_bss_144[arg0->unk_28[var_r30]], arg0->unk_30[var_r30].x, arg0->unk_30[var_r30].y, arg0->unk_30[var_r30].z); + } + } +} + +void fn_1_13560(UnkData1380Struct *arg0, s32 *arg1, s32 arg2) +{ + s32 var_r30; + Vec *var_r28; + + arg0->unk_30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(Vec), MEMORY_DEFAULT_NUM); + arg0->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(Vec), MEMORY_DEFAULT_NUM); + arg0->unk_24 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(s32), MEMORY_DEFAULT_NUM); + arg0->unk_28 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(s32), MEMORY_DEFAULT_NUM); + arg0->unk_2C = arg1; + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + arg0->unk_24[var_r30] = *arg1++; + arg0->unk_28[var_r30] = arg2++; + var_r28 = &arg0->unk_34[var_r30]; + var_r28->x = 0.0f; + var_r28->y = 0.0f; + var_r28->z = 0.0f; + } + arg0->unk_10 = arg0->unk_24[*arg1]; + arg0->unk_24[*arg1] = -1; + arg0->unk_28[*arg1] = -1; + fn_1_13174(arg0); + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_24[var_r30] >= 0) { + Hu3DModelAttrReset(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_13714(void) +{ + Vec sp8; + s32 var_r31; + s32 var_r30; + + if ((0 > lbl_1_bss_F8) || (NULL == lbl_1_bss_FC)) { + return; + } + VECSubtract(&lbl_1_bss_EC, &lbl_1_bss_FC->unk_30[lbl_1_bss_F8], &sp8); + if (10.0f < VECMag(&sp8)) { + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, 10.0f); + } + lbl_1_bss_FC->unk_34[lbl_1_bss_F8] = sp8; + VECAdd(&sp8, &lbl_1_bss_FC->unk_30[lbl_1_bss_F8], &lbl_1_bss_FC->unk_30[lbl_1_bss_F8]); + if ((sp8.x == 0.0f) && (sp8.z == 0.0f)) { + for (var_r30 = lbl_1_bss_FC->unk_20, var_r31 = 0; var_r31 < lbl_1_bss_FC->unk_08; var_r31++, var_r30++) { + if ((lbl_1_bss_FC->unk_24[var_r31] >= 0) && (var_r30 != lbl_1_bss_FC->unk_24[var_r31])) { + break; + } + } + if (lbl_1_bss_FC->unk_08 == var_r31) { + lbl_1_bss_FC->unk_1C = 1; + } + lbl_1_bss_FC->unk_30[lbl_1_bss_F8] = lbl_1_bss_EC; + lbl_1_bss_F8 = -1; + lbl_1_bss_FC = NULL; + HuAudFXPlay(0x7B9); + } +} + +void fn_1_139B0(UnkData1380Struct *arg0, s32 arg1) +{ + s32 var_r30; + s32 var_r28; + + arg0->unk_18 = 1; + arg0->unk_24[arg0->unk_08 - 1] = arg1; + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + var_r28 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]]; + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], Hu3DData[var_r28].unk_F0); + Hu3DModelPosSet(var_r28, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(var_r28, 0.0f, 0.0f, 0.0f); + } +} + +void fn_1_13B4C(UnkData1380Struct *arg0) +{ + arg0->unk_14 = 1; +} + +void fn_1_13B58(s32 arg0) +{ + if (arg0 > GWMGTypeGet()) { + GWMGTypeSet(arg0); + } +} + +s32 fn_1_13B90(s32 arg0) +{ + if (arg0 > GWMGTypeGet()) { + return 0; + } + return 1; +} + +void fn_1_13BC4(s32 arg0) +{ + s32 var_r31; + UnkData1380Struct *var_r30; + s16 var_r29; + + nMap = 0; + lbl_1_bss_118 = arg0; + lbl_1_bss_F8 = -1; + lbl_1_bss_FC = NULL; + lbl_1_bss_110 = 1; + lbl_1_bss_304 = lbl_1_data_F6C[arg0]; + var_r30 = NULL; + switch (arg0) { + case 1: + MapObject[nMap++] = lbl_1_bss_144[0]; + break; + case 2: + lbl_1_bss_110 = 2; + var_r30 = &lbl_1_data_1380; + lbl_1_data_1380.unk_14 = 1; + MapObject[nMap++] = lbl_1_bss_144[1]; + break; + case 3: + MapObject[nMap++] = lbl_1_bss_144[2]; + break; + case 4: + lbl_1_bss_110 = 2; + var_r30 = &lbl_1_data_13B8; + lbl_1_data_13B8.unk_14 = 1; + MapObject[nMap++] = lbl_1_bss_144[3]; + break; + case 5: + lbl_1_bss_110 = 3; + MapObject[nMap++] = lbl_1_bss_144[4]; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + MapObject[nMap++] = lbl_1_bss_144[var_r31 + 0x12]; + } + break; + } + fn_1_13B58(arg0); + if (NULL != var_r30) { + for (var_r31 = 0; var_r31 < var_r30->unk_08; var_r31++) { + if (var_r30->unk_28[var_r31] >= 0) { + MapObject[nMap++] = lbl_1_bss_144[var_r30->unk_28[var_r31]]; + } + } + } +} + +void fn_1_13F28(omObjData *object) +{ + Vec sp30; + float var_f31; + + UnkData1450Struct *var_r31; + s32 var_r29; + s32 var_r28; + Vec *var_r27; + Vec *var_r26; + + for (var_r29 = 0; var_r29 < lbl_1_data_1380.unk_08; var_r29++) { + var_r27 = &lbl_1_data_1380.unk_34[var_r29]; + var_r27->x = 0.0f; + var_r27->y = 0.0f; + var_r27->z = 0.0f; + } + for (var_r29 = 0; var_r29 < lbl_1_data_13B8.unk_08; var_r29++) { + var_r26 = &lbl_1_data_13B8.unk_34[var_r29]; + var_r26->x = 0.0f; + var_r26->y = 0.0f; + var_r26->z = 0.0f; + } + fn_1_13714(); + fn_1_13174(&lbl_1_data_1380); + fn_1_13174(&lbl_1_data_13B8); + var_r28 = object->model[6]; + fn_1_1D70(object->model[0], "m450mex06-s3hook06", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[7]; + fn_1_1D70(object->model[0], "m450mex06-s3hook05", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[17]; + fn_1_1D70(object->model[0], "m450mex06-s5hook11", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[18]; + fn_1_1D70(object->model[0], "m450mex06-s5hook10", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[19]; + fn_1_1D70(object->model[0], "m450m01-from5to6", &sp30, Hu3DData[var_r28].unk_F0); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r31 = &lbl_1_data_1450[var_r29]; + var_r31->unk_10 = var_r31->unk_04.y; + var_r28 = object->model[var_r29 + 0x14]; + fn_1_1D70(object->model[0], var_r31->unk_00, &var_r31->unk_04, Hu3DData[var_r28].unk_F0); + fn_1_1D18(object->model[var_r29 + 0x14], "m450_s6a1-s6a1hook", &sp30); + VECAdd(&sp30, &var_r31->unk_04, &var_r31->unk_04); + if (1560.0f > var_r31->unk_04.y) { + var_r31->unk_04.y = 1560.0f; + } + omSetTra(lbl_1_bss_144[var_r29 + 0x12], var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z); + var_r31->unk_10 = var_r31->unk_04.y - var_r31->unk_10; + if (var_r31->unk_18 != 0) { + if (var_r31->unk_1C != 0) { + var_f31 = Hu3DMotionTimeGet(object->model[var_r29 + 0x14]); + if ((10.0f <= var_f31) && (40.0f >= var_f31)) { + var_r31->unk_10 = 0.0f; + } + if (40.0f <= var_f31) { + Hu3DMotionTimeSet(object->model[var_r29 + 0x14], 10.0f); + if (var_r31->unk_20 != 0) { + var_r31->unk_20 = 0; + } + } + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_10C < 3) { + var_r31->unk_14 += 1.0f; + if (20 * REFRESH_RATE < var_r31->unk_14) { + var_r31->unk_1C = 0; + fn_1_1B510(var_r29); + } + } + } + else if (Hu3DMotionEndCheck(object->model[var_r29 + 0x14]) != 0) { + var_r31->unk_18 = 0; + } + } + } +} + +void fn_1_148B0(float arg8, s8 arg0) +{ + Mtx spC; + ModelData *var_r30; + s32 var_r31; + + if (lbl_1_bss_114 == 0) { + if (arg0 == 0x78) { + MTXRotRad(spC, 0x5A, 0.017453292f * arg8); + } + else { + MTXRotRad(spC, 0x58, 0.017453292f * arg8); + } + MTXConcat(spC, lbl_1_bss_88, spC); + for (var_r31 = 0; var_r31 <= 1; var_r31++) { + var_r30 = &Hu3DData[lbl_1_bss_1A0->model[var_r31]]; + MTXCopy(spC, var_r30->unk_F0); + } + fn_1_13F28(lbl_1_bss_1A0); + } +} + +void fn_1_149C0(s8 arg0) +{ + Mtx spC; + s32 var_r31; + ModelData *var_r30; + + lbl_1_bss_114 = 1; + if (arg0 == 0x78) { + MTXRotRad(spC, 0x5A, 1.5707964f); + } + else { + MTXRotRad(spC, 0x58, 1.5707964f); + } + MTXConcat(spC, lbl_1_bss_88, lbl_1_bss_88); + for (var_r31 = 0; var_r31 <= 1; var_r31++) { + var_r30 = &Hu3DData[lbl_1_bss_1A0->model[var_r31]]; + MTXCopy(lbl_1_bss_88, var_r30->unk_F0); + } + fn_1_13F28(lbl_1_bss_1A0); +} + +void fn_1_14AB8(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + fn_1_1D70(lbl_1_bss_1A0->model[0], lbl_1_data_E68[var_r31], &lbl_1_bss_4C[var_r31], NULL); + } +} + +void fn_1_14BC8(UnkDataA80Struct *arg0, s32 arg1) +{ + s32 var_r31; + + lbl_1_bss_104 = arg0; + lbl_1_bss_100 = arg1; + for (var_r31 = 0; var_r31 < lbl_1_bss_100; var_r31++, arg0++) { + arg0->unk_10 = -1; + arg0->unk_28 = 1; + } +} + +void fn_1_14C28(void) +{ + UnkDataA80Struct *var_r31; + s32 var_r30; + + if (NULL != lbl_1_bss_104) { + for (var_r31 = lbl_1_bss_104, var_r30 = 0; var_r30 < lbl_1_bss_100; var_r30++, var_r31++) { + if (var_r31->unk_10 >= 0) { + fn_1_66A0(var_r31->unk_10); + } + if (var_r31->unk_24 >= 0) { + HuAudFXStop(var_r31->unk_24); + var_r31->unk_24 = -2; + } + } + } +} + +void fn_1_14CE8(omObjData *object) +{ + UnkDataA80Struct *var_r31; + s32 var_r25; + s32 var_r22; + s32 var_r19; + s32 var_r18; + + if (NULL != lbl_1_bss_104) { + var_r19 = 1; + var_r18 = 1; + var_r25 = 0; + for (var_r31 = lbl_1_bss_104, var_r22 = 0; var_r22 < lbl_1_bss_100; var_r22++, var_r31++) { + if ((var_r18 != 0) && (var_r31->unk_28 != 0)) { + var_r25++; + var_r18 = 0; + var_r31->unk_28 = 0; + var_r31->unk_14 = var_r31->unk_18.x; + fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_00, &var_r31->unk_04, NULL); + var_r31->unk_10 = fn_1_69F8(NULL, &var_r31->unk_14, 0x40); + } + else if (var_r31->unk_10 >= 0) { + var_r25++; + var_r31->unk_14 += var_r31->unk_18.y; + if (0.0f > var_r31->unk_14) { + var_r31->unk_14 += 360.0f; + } + if (360.0f <= var_r31->unk_14) { + var_r31->unk_14 -= 360.0f; + } + if ((lbl_1_bss_308 & 1) == 0) { + fn_1_6798(var_r31->unk_10, 1, &var_r31->unk_04, 0.0f, var_r31->unk_18.z, var_r31->unk_04.y); + if ((var_r19 != 0) && (var_r31->unk_24 < 0) && (var_r31->unk_24 > -2)) { + var_r19 = 0; + var_r31->unk_24 = HuAudFXEmiterPlay(var_r31->unk_18.z == 350.0f ? 0x7BF : 0x7AD, &var_r31->unk_04); + } + } + if (fn_1_66DC(var_r31->unk_10) != 0) { + var_r31->unk_10 = -1; + } + } + } + if (var_r25 == 0) { + lbl_1_bss_104 = NULL; + } + } + fn_1_13F28(object); + fn_1_186A8(); +} + +void fn_1_15308(omObjData *object) +{ + s32 var_r30; + s32 **var_r22; + + lbl_1_bss_104 = NULL; + MTXIdentity(lbl_1_bss_88); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + for (var_r30 = 0; var_r30 < 0x21; var_r30++) { + object->model[var_r30] = Hu3DModelCreateFile(lbl_1_data_E7C[var_r30]); + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(object->model[var_r30], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(object->model[var_r30], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[var_r30], 0); + Hu3DModelPosSet(object->model[var_r30], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(object->model[var_r30], 0.0f, 0.0f, 0.0f); + if (var_r30 != 1) { + Hu3DModelShadowMapSet(object->model[var_r30]); + } + } + Hu3DMotionSpeedSet(object->model[1], 0.1f); + switch (GWPlayerCfg[lbl_1_bss_120].diff) { + case 0: + var_r22 = lbl_1_data_1204; + break; + case 1: + var_r22 = lbl_1_data_1210; + break; + case 2: + var_r22 = lbl_1_data_121C; + break; + case 3: + default: + var_r22 = lbl_1_data_1228; + break; + } + fn_1_13560(&lbl_1_data_1380, lbl_1_data_11F4[frandmod(4)], 5); + fn_1_13560(&lbl_1_data_13B8, var_r22[frandmod(3)], 9); + fn_1_14AB8(); + + for (var_r30 = 0; var_r30 <= 1; var_r30++) { + Hu3DModelAttrReset(object->model[var_r30], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(object->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[17], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[19], HU3D_ATTR_DISPOFF); + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30 + 0x14], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[var_r30 + 0x14], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(object->model[var_r30 + 0x14], HU3D_ATTR_DISPOFF); + } + object->func = fn_1_14CE8; +} + +float fn_1_15B48(s32 arg0, float arg8, float arg9) +{ + return (arg9 + (arg8 * (arg0 - 1))) / arg0; +} + +void fn_1_15BAC(Vec *arg0, Vec *arg1, float arg8, s32 arg2, float *arg3, float *arg4) +{ + Vec sp14; + + VECSubtract(arg1, arg0, &sp14); + if (360.0f <= arg8) { + arg8 -= 360.0f; + } + else if (0.0f > arg8) { + arg8 += 360.0f; + } + if (360.0f <= arg8) { + arg8 -= 360.0f; + } + else if (0.0f > arg8) { + arg8 += 360.0f; + } + if (360.0f <= arg8) { + arg8 -= 360.0f; + } + else if (0.0f > arg8) { + arg8 += 360.0f; + } + *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; + } + if (arg2 != 0) { + *arg3 += arg8; + } + else { + *arg3 -= arg8; + } + if (180.0f <= *arg3) { + *arg3 -= 360.0f; + } + else if (-180.0f > *arg3) { + *arg3 += 360.0f; + } + if (180.0f <= *arg3) { + *arg3 -= 360.0f; + } + else if (-180.0f > *arg3) { + *arg3 += 360.0f; + } + if (180.0f <= *arg3) { + *arg3 -= 360.0f; + } + else if (-180.0f > *arg3) { + *arg3 += 360.0f; + } + if (60.0f <= *arg3) { + *arg3 = 60.0f; + } + if (-60.0f >= *arg3) { + *arg3 = -60.0f; + } + if (45.0f <= *arg4) { + *arg4 = 45.0f; + } + if (-45.0f >= *arg4) { + *arg4 = -45.0f; + } +} + +void fn_1_160AC(UnkM450Struct5 *arg0, omObjData *object, Vec *arg2) +{ + float spC; + float sp8; + UnkData5CCStruct *var_r30; + + arg0->unk_FC |= 0x8000; + var_r30 = &lbl_1_data_5CC[arg0->unk_11C]; + if (NULL == arg2) { + spC = 0.0f; + sp8 = 0.0f; + } + else { + fn_1_15BAC(&arg0->unk_00.unk_6C, arg2, arg0->unk_00.unk_9C, var_r30->unk_08, &spC, &sp8); + } + arg0->unk_C8 = fn_1_15B48(10, arg0->unk_C8, spC); + arg0->unk_CC = fn_1_15B48(10, arg0->unk_CC, sp8); + Hu3DMotionForceSet(object->model[0], var_r30->unk_00, var_r30->unk_04, arg0->unk_C8); + Hu3DMotionForceSet(object->model[0], var_r30->unk_00, 0x200, var_r30->unk_0C - arg0->unk_CC); +} + +void fn_1_16280(UnkM450Struct5 *arg0, omObjData *object) +{ + UnkData5CCStruct *var_r31; + + if (arg0->unk_FC & 0x8000) { + arg0->unk_FC &= ~0x8000; + var_r31 = &lbl_1_data_5CC[arg0->unk_11C]; + Hu3DMotionNoMotReset(object->model[0], var_r31->unk_00, var_r31->unk_04); + Hu3DMotionNoMotReset(object->model[0], var_r31->unk_00, 0x200); + } +} + +Vec *fn_1_16314(s32 arg0) +{ + UnkData1380Struct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_data_1380; + for (var_r30 = 0; var_r30 < var_r31->unk_08; var_r30++) { + if (arg0 == var_r31->unk_24[var_r30]) { + return &var_r31->unk_30[var_r30]; + } + } + return var_r31->unk_30; +} + +void fn_1_16378(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + UnkM450Struct4 *var_r31; + s32 var_r30; + + var_r31 = object->data; + var_r31->unk_48 += 0.98f; + if (1555.0f < var_r31->unk_00.y) { + var_r31->unk_00.y -= var_r31->unk_48; + } + if (1555.0f >= var_r31->unk_00.y) { + if (10.0f < var_r31->unk_48) { + var_r31->unk_48 = 10.0f; + } + var_r31->unk_00.y = 1555.0f; + if (0.0f > (var_r31->unk_48 / 1.5f)) { + var_f30 = -(var_r31->unk_48 / 1.5f); + } + else { + var_f30 = var_r31->unk_48 / 1.5f; + } + var_r31->unk_48 = -var_f30; + if (0.0f > var_r31->unk_48) { + var_f29 = -var_r31->unk_48; + } + else { + var_f29 = var_r31->unk_48; + } + if (1.0f < var_f29) { + var_r31->unk_00.y += 1.0f; + } + if (var_r31->unk_74 != 0) { + var_r31->unk_74 = 0; + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudFXPlay(0x7AE); + } + } + if (Hu3DMotionEndCheck(object->model[0]) != 0) { + var_r31->unk_78 = 1; + } + if ((var_r31->unk_74 == 0) && (lbl_1_bss_1A4->work[0] > 0x3FB)) { + var_r31->unk_78 = 1; + } + if ((var_r31->unk_74 == 0) && (lbl_1_bss_1A4->work[0] == 0x3E8)) { + var_r31->unk_78 = 1; + } + if (var_r31->unk_78 != 0) { + var_r31->unk_50 = var_r31->unk_50 - 1.0f; + if ((lbl_1_bss_308 & 1) != 0) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); + } + } + else { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrReset(object->model[var_r30], HU3D_ATTR_DISPOFF); + } + } + if (0.0f > var_r31->unk_50) { + Hu3DModelShadowReset(object->model[0]); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); + } + fn_1_24(0x1000, object->model[0]); + fn_1_24(0x2000, object->model[1]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (var_r31->unk_78 == 0) { + for (var_r30 = 0; var_r30 < 1; var_r30++) { + if (NULL == lbl_1_bss_E8[var_r30]) { + lbl_1_bss_E8[var_r30] = var_r31; + break; + } + } + } + var_f31 = (var_r31->unk_00.y - 1555.0f) / 300.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_f31 = 1.0f - var_f31; + var_f31 = 1.0f; + sp8 = *fn_1_16314(var_r31->unk_70); + VECAdd(&var_r31->unk_64, &sp8, &sp8); + var_r31->unk_00.x += var_f31 * (sp8.x - var_r31->unk_00.x); + var_r31->unk_00.z += var_f31 * (sp8.z - var_r31->unk_00.z); + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelPosSet(object->model[var_r30], var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + } +} + +void fn_1_16910(omObjData *object) +{ + UnkM450Struct4 *var_r30; + s32 var_r27; + s32 var_r26; + + var_r30 = object->data; + var_r30->unk_48 = 0.0f; + var_r30->unk_50 = 30.0f; + var_r26 = fn_1_AC(0x1000); + if (var_r26 < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_2C[0]); + } + else { + object->model[0] = var_r26; + } + var_r26 = fn_1_AC(0x2000); + if (var_r26 < 0) { + object->model[1] = Hu3DModelLink(lbl_1_bss_2C[1]); + } + else { + object->model[1] = var_r26; + } + for (var_r27 = 0; var_r27 < 2; var_r27++) { + Hu3DModelAttrSet(object->model[var_r27], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[var_r27], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[var_r27], 4); + Hu3DMotionTimeSet(object->model[var_r27], 0.0f); + Hu3DModelPosSet(object->model[var_r27], var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z); + Hu3DModelRotSet(object->model[var_r27], 0.0f, 0.0f, 0.0f); + } + omSetTra(object, var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelShadowSet(object->model[0]); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + object->func = fn_1_16378; +} + +void fn_1_16BC4(Vec *arg0, Vec *arg1, s32 arg2) +{ + UnkData1380Struct *spC; + + UnkM450Struct4 *var_r31; + s32 var_r30; + omObjData *var_r29; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (lbl_1_data_1CC[var_r30 * 2] == 0x3E) { + HuAudFXPlay(lbl_1_data_1CC[(var_r30 * 2) + 1]); + break; + } + } + var_r29 = omAddObjEx(lbl_1_bss_33C, 0x6A, 2, 0, -1, fn_1_16910); + var_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + spC = &lbl_1_data_1380; + var_r31 = var_r29->data; + var_r31->unk_74 = 1; + var_r31->unk_78 = 0; + var_r31->unk_7C = 0; + var_r31->unk_70 = arg2; + var_r31->unk_00 = *arg0; + var_r31->unk_64 = *arg1; +} + +void fn_1_16CF4(omObjData *object) +{ + float spC; + float sp8; + + UnkM450Struct4 *var_r31 = object->data; + UnkM450Struct5 *var_r30 = lbl_1_bss_138->data; + spC = var_r30->unk_00.unk_6C.x - var_r31->unk_00.x; + sp8 = var_r30->unk_00.unk_6C.z - var_r31->unk_00.z; + var_r31->unk_00.y += (0.1f * (1505.0f - var_r31->unk_00.y)); + if ((lbl_1_bss_1A4->work[0] > 0x3FB) || (lbl_1_bss_1A4->work[0] == 0x3E8)) { + var_r31->unk_78 = 1; + } + if (var_r31->unk_78 != 0) { + var_r31->unk_40 = var_r31->unk_40 - 0.1f; + if (0.0f > var_r31->unk_40) { + Hu3DModelAttrSet(*object->model, HU3D_ATTR_DISPOFF); + fn_1_24(0x3000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + else { + var_r31->unk_50 += 1.0f; + if (var_r31->unk_7C != 0) { + if (60.0f < var_r31->unk_50) { + var_r31->unk_78 = 1; + } + var_r31->unk_00.x += (0.1f * (var_r30->unk_00.unk_6C.x - var_r31->unk_00.x)); + var_r31->unk_00.z += (0.1f * (var_r30->unk_00.unk_6C.z - var_r31->unk_00.z)); + var_r31->unk_44 *= 1.01f; + } + else { + if (240.0f < var_r31->unk_50) { + var_r31->unk_78 = 1; + } + var_r31->unk_00.x += (11.0 * sind(var_r31->unk_3C)); + var_r31->unk_00.z += (11.0 * cosd(var_r31->unk_3C)); + var_r31->unk_3C = fn_1_1E20( + var_r31->unk_3C, atan2d(var_r30->unk_00.unk_6C.x - var_r31->unk_00.x, var_r30->unk_00.unk_6C.z - var_r31->unk_00.z), 0.05f); + } + } + if ((var_r31->unk_78 == 0) && (1605.0f > var_r31->unk_00.y)) { + s32 var_r27; + for (var_r27 = 0; var_r27 < 1; var_r27++) { + if (NULL == lbl_1_bss_E4[var_r27]) { + lbl_1_bss_E4[var_r27] = var_r31; + break; + } + } + } + Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40); + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + omSetSca(object, var_r31->unk_44, var_r31->unk_44, var_r31->unk_44); +} + +void fn_1_171C4(omObjData *object) +{ + UnkM450Struct4 *var_r29; + s16 var_r26; + + var_r29 = object->data; + var_r29->unk_40 = 1.0f; + var_r29->unk_44 = 1.0f; + var_r29->unk_50 = 0.0f; + var_r26 = fn_1_AC(0x3000); + if (var_r26 < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_2C[2]); + } + else { + object->model[0] = var_r26; + } + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 4); + omSetTra(object, var_r29->unk_00.x, var_r29->unk_00.y, var_r29->unk_00.z); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_16CF4; +} + +void fn_1_17360(Vec *arg0, float arg8) +{ + omObjData *var_r29; + s32 var_r30; + UnkM450Struct4 *var_r31; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (lbl_1_data_1CC[var_r30 * 2] == 0x3E) { + HuAudFXPlay(lbl_1_data_1CC[var_r30 * 2]); + break; + } + } + var_r29 = omAddObjEx(lbl_1_bss_33C, 0x6B, 1, 0, -1, fn_1_171C4); + var_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + var_r31 = var_r29->data; + var_r31->unk_78 = 0; + var_r31->unk_7C = 0; + var_r31->unk_00 = *arg0; + var_r31->unk_3C = arg8; + HuAudFXPlay(0x7AF); +} + +void fn_1_17474(omObjData *object) +{ + Mtx spB0; + Mtx sp80; + Mtx sp50; + Vec sp14; + Vec sp8; + float var_f31; + + UnkM450Struct4 *var_r31 = object->data; + if (var_r31->unk_74 != 0) { + fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &sp8); + if (Hu3DMotionShiftIDGet(var_r31->unk_54) < 0) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if (165.0f <= Hu3DMotionTimeGet(var_r31->unk_54)) { + HuAudFXPlay(0x7B0); + var_r31->unk_74 = 0; + var_r31->unk_3C = 0.0f; + var_r31->unk_4C = VECDistance(&sp8, &var_r31->unk_0C); + Hu3DModelObjMtxGet(var_r31->unk_58, "g000i00-itemhook_A", sp80); + Hu3DModelObjMtxGet(var_r31->unk_54, "g000m0-itemhook_R", sp50); + MTXConcat(sp80, sp50, sp80); + var_r31->unk_00.x = sp80[0][3]; + var_r31->unk_00.y = sp80[1][3]; + var_r31->unk_00.z = sp80[2][3]; + Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R"); + MTXIdentity(Hu3DData[object->model[0]].unk_F0); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_HOOK); + } + } + var_r31->unk_0C = sp8; + } + if (var_r31->unk_74 == 0) { + if (lbl_1_bss_1A4->work[0] > 0x40D) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + } + var_f31 = var_r31->unk_4C; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = var_f31; + MTXRotRad(spB0, 0x59, 0.017453292f * (var_r31->unk_5C + var_r31->unk_60)); + MTXMultVec(spB0, &sp14, &sp14); + VECAdd(&var_r31->unk_00, &sp14, &var_r31->unk_00); + var_r31->unk_00.y += 0.1f * (1575.0f - var_r31->unk_00.y); + var_r31->unk_4C += 0.05f * (30.0f - var_r31->unk_4C); + var_r31->unk_3C += var_r31->unk_4C; + var_r31->unk_60 += 0.08f * var_r31->unk_4C; + if (360.0f <= var_r31->unk_60) { + var_r31->unk_60 = 360.0f; + } + sp14.x = 0.0f; + sp14.y = 1575.0f; + sp14.z = 0.0f; + if ((360.0f <= var_r31->unk_60) && (1500.0f < VECDistance(&sp14, &var_r31->unk_00))) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + if (0.0f > var_r31->unk_40) { + Hu3DModelShadowReset(object->model[0]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_24(0x4000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (1.0f <= var_r31->unk_40) { + s32 var_r28; + for (var_r28 = 0; var_r28 < 2; var_r28++) { + if (NULL == lbl_1_bss_DC[var_r28]) { + lbl_1_bss_DC[var_r28] = var_r31; + break; + } + } + } + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + omSetRot(object, 0.0f, var_r31->unk_3C, 0.0f); + } + Hu3DModelShadowDispOn(object->model[0]); + Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40); +} + +void fn_1_17970(s32 arg0, s32 arg1, float arg8) +{ + omObjData *var_r31; + UnkM450Struct4 *var_r30; + s16 var_r26; + + HuAudFXPlay(0x3A); + var_r31 = omAddObjEx(lbl_1_bss_33C, 0x6C, 1, 0, -1, fn_1_17474); + var_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + var_r30 = var_r31->data; + var_r30->unk_40 = 1.0f; + var_r30->unk_50 = 0.0f; + var_r30->unk_74 = 1; + var_r30->unk_78 = 0; + var_r30->unk_7C = 0; + var_r30->unk_54 = arg0; + var_r30->unk_58 = arg1; + var_r30->unk_5C = arg8; + var_r30->unk_60 = 0.0f; + + var_r26 = fn_1_AC(0x4000); + if (var_r26 < 0) { + var_r31->model[0] = Hu3DModelLink(lbl_1_bss_2C[3]); + } + else { + var_r31->model[0] = var_r26; + } + Hu3DModelAttrSet(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[0], 4); + omSetTra(var_r31, 0.0f, 0.0f, 0.0f); + omSetRot(var_r31, 0.0f, 0.0f, 0.0f); + Hu3DModelHookSet(var_r30->unk_54, "g000m0-itemhook_R", var_r31->model[0]); + Hu3DModelShadowSet(var_r31->model[0]); + Hu3DModelShadowDispOff(var_r31->model[0]); +} + +void fn_1_17BBC(omObjData *object) +{ + Mtx sp84; + Vec sp18; + Vec spC; + float sp8; + float var_f31; + float var_f30; + float var_f28; + + UnkM450Struct4 *var_r31; + s32 var_r27; + UnkM450Struct3 *var_r22; + + var_r31 = object->data; + var_r22 = lbl_1_bss_134->data; + if (var_r31->unk_74 != 0) { + fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &spC); + if ((Hu3DMotionShiftIDGet(var_r31->unk_54) < 0) && (165.0f <= Hu3DMotionTimeGet(var_r31->unk_54))) { + HuAudFXPlay(0x7B0); + var_r31->unk_74 = 0; + var_r31->unk_3C = 0.0f; + var_r31->unk_4C = VECDistance(&spC, &var_r31->unk_0C); + fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &var_r31->unk_00); + Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R"); + MTXIdentity(Hu3DData[*object->model].unk_F0); + Hu3DModelAttrReset(*object->model, HU3D_ATTR_HOOK); + var_f31 = var_r31->unk_00.x - var_r31->unk_24.x; + var_f30 = var_r31->unk_00.z - var_r31->unk_24.z; + var_r31->unk_30.x = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 2; + var_r31->unk_30.z = 150.0f + var_r31->unk_00.y; + VECAdd(&var_r31->unk_00, &var_r31->unk_24, &var_r31->unk_24); + VECScale(&var_r31->unk_24, &var_r31->unk_24, 0.5f); + var_r31->unk_24.y = var_r31->unk_00.y; + var_r31->unk_30.y = atan2d(var_r31->unk_00.x - var_r31->unk_24.x, var_r31->unk_00.z - var_r31->unk_24.z); + } + var_r31->unk_0C = spC; + if ((var_r31->unk_74 != 0) && (var_r22->unk_150 >= 0xBCE)) { + Hu3DModelShadowReset(object->model[0]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R"); + fn_1_24(0x4000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (var_r31->unk_74 == 0) { + if (lbl_1_bss_1A4->work[0] > 0x415) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + } + var_f28 = 1575.0f; + if (180.0f < var_r31->unk_60) { + var_f28 = var_r31->unk_30.z; + } + var_r31->unk_00.y += (0.05f * (var_f28 - var_r31->unk_00.y)); + var_r31->unk_4C += 0.05f * (30.0f - var_r31->unk_4C); + var_r31->unk_3C += var_r31->unk_4C; + var_r31->unk_60 += 0.08f * var_r31->unk_4C; + if (360.0f <= var_r31->unk_60) { + var_r31->unk_60 = 360.0f; + VECAdd(&var_r31->unk_18, &var_r31->unk_00, &var_r31->unk_00); + } + else { + spC = var_r31->unk_00; + sp18.x = (0.6666667f * var_r31->unk_30.x) * sind(var_r31->unk_60); + sp18.z = var_r31->unk_30.x * cosd(var_r31->unk_60); + MTXRotRad(sp84, 0x59, 0.017453292f * var_r31->unk_30.y); + MTXMultVec(sp84, &sp18, &sp18); + var_r31->unk_00.x = var_r31->unk_24.x + sp18.x; + var_r31->unk_00.z = var_r31->unk_24.z + sp18.z; + VECSubtract(&var_r31->unk_00, &spC, &var_r31->unk_18); + } + sp18.x = 0.0f; + sp18.y = 1575.0f; + sp18.z = 0.0f; + if ((360.0f <= var_r31->unk_60) && (1500.0f < VECDistance(&sp18, &var_r31->unk_00))) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + if (0.0f > var_r31->unk_40) { + Hu3DModelShadowReset(*object->model); + Hu3DModelAttrSet(*object->model, HU3D_ATTR_DISPOFF); + fn_1_24(0x4000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (1.0f <= var_r31->unk_40) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + if (NULL == lbl_1_bss_DC[var_r27]) { + lbl_1_bss_DC[var_r27] = var_r31; + break; + } + } + } + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + omSetRot(object, 0.0f, var_r31->unk_3C, 0.0f); + omSetSca(object, 1.0f, 1.0f, 1.0f); + } + Hu3DModelShadowDispOn(object->model[0]); + Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40); +} + +void fn_1_18424(s32 arg0, Vec *arg1) +{ + UnkBss358Struct *var_r27; + UnkBss358Struct *var_r28; + UnkBss358Struct *var_r29; + omObjData *var_r31; + s16 var_r24; + s16 var_r25; + s16 var_r26; + UnkM450Struct4 *var_r30; + + var_r31 = omAddObjEx(lbl_1_bss_33C, 0x6C, 1, 0, -1, fn_1_17BBC); + var_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + var_r30 = var_r31->data; + var_r30->unk_54 = arg0; + var_r30->unk_40 = 1.0f; + var_r30->unk_50 = 0.0f; + var_r30->unk_74 = 1; + var_r30->unk_78 = 0; + var_r30->unk_7C = 0; + var_r30->unk_60 = 0.0f; + var_r30->unk_24 = *arg1; + + var_r26 = fn_1_AC(0x4000); + if (var_r26 < 0) { + var_r31->model[0] = Hu3DModelLink(lbl_1_bss_2C[3]); + } + else { + var_r31->model[0] = var_r26; + } + Hu3DModelAttrSet(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[0], 4); + omSetTra(var_r31, 0.0f, 0.0f, 0.0f); + omSetRot(var_r31, 0.0f, 0.0f, 0.0f); + omSetSca(var_r31, 1.0f, 1.0f, 1.0f); + Hu3DModelHookSet(var_r30->unk_54, "g000m0-itemhook_R", var_r31->model[0]); + Hu3DModelAttrReset(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(var_r31->model[0]); + Hu3DModelShadowDispOff(var_r31->model[0]); +} + +void fn_1_186A8(void) +{ + Vec sp14[3]; + Vec sp8; + float var_f31; + + s32 var_r31; + UnkM450Struct5 *var_r30; + UnkM450Struct3 *var_r29; + HsfBuffer *var_r28; + s32 var_r27; + ModelData *var_r26; + HsfObject *var_r25; + + if (lbl_1_bss_C4 >= 0) { + var_r30 = lbl_1_bss_138->data; + var_r29 = lbl_1_bss_134->data; + switch (lbl_1_bss_C4) { + case 0x1388: + for (var_r31 = 0x19; var_r31 <= 0x1B; var_r31++) { + if (Hu3DMotionEndCheck(lbl_1_bss_1A0->model[var_r31]) == 0) { + return; + } + } + lbl_1_bss_C4++; + lbl_1_bss_C8 = 0.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[28], 0.0f, 1501.0f, 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[28], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 0.0f); + var_r26 = &Hu3DData[lbl_1_bss_1A0->model[28]]; + var_r25 = var_r26->hsfData->object; + var_r28 = var_r25->data.vertex; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + ((Vec *)var_r28->data)[var_r31].x = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04.x; + ((Vec *)var_r28->data)[var_r31].z = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04.z; + DCFlushRange(&((Vec *)var_r28->data)[var_r31], sizeof(Vec)); + } + + break; + case 0x1389: + var_f31 = lbl_1_bss_C8 / 30.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], var_f31); + lbl_1_bss_C8 += 1.0f; + if ((120.0f < lbl_1_bss_C8) && (var_r30->unk_00.unk_38 == 0)) { + lbl_1_bss_C4++; + lbl_1_bss_C8 = 0.0f; + var_r27 = 0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp14[var_r31] = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04; + } + if ((fn_1_1C39C(var_r30) != 0) && (fn_1_1964C(&var_r30->unk_00.unk_6C, sp14) != 0)) { + var_r27++; + var_r30->unk_110 = 0x1D; + var_r30->unk_FC |= 0x20000; + fn_1_130A4(&var_r30->unk_00.unk_6C, 29); + } + if (fn_1_1964C(&var_r29->unk_00.unk_6C, sp14) != 0) { + var_r27++; + var_r29->unk_10C = 0x1E; + var_r29->unk_154 |= 0x8000; + fn_1_130A4(&var_r29->unk_00.unk_6C, 30); + } + if (var_r27 == 0) { + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + VECAdd(&sp14[var_r31], &sp8, &sp8); + } + VECScale(&sp8, &sp8, 0.33333334f); + fn_1_130A4(&sp8, 29); + return; + } + } + break; + case 0x138A: + if (45.0f < lbl_1_bss_C8) { + var_f31 = (lbl_1_bss_C8 - 45.0f) / 15.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 1.0f - var_f31); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1.0f - var_f31); + } + } + lbl_1_bss_C8 += 1.0f; + if (60.0f <= lbl_1_bss_C8) { + lbl_1_bss_C4 = -1; + Hu3DModelAttrSet(lbl_1_bss_1A0->model[28], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 1.0f); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[29], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[30], HU3D_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_data_1450[lbl_1_bss_B8[0]].unk_1C = 0; + fn_1_1B510(lbl_1_bss_B8[0]); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31 + 0x19], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1.0f); + } + fn_1_1B4C8(var_r30); + return; + } + break; + default: + OSReport("*** thunder attack mode error(%d)!!\n", lbl_1_bss_C4); + break; + } + } +} + +void fn_1_18F30(UnkM450Struct5 *arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + float var_f28; + float var_f27; + + if (NULL != arg1) { + sp18 = *arg1; + var_f27 = arg0->unk_00.unk_C0; + if ((arg0->unk_00.unk_38 == 3) || (arg0->unk_00.unk_38 == 4)) { + var_f27 *= 0.5f; + } + var_f31 = arg0->unk_00.unk_6C.x - sp18.x; + var_f30 = arg0->unk_00.unk_6C.z - sp18.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (((sp18.y - 50.0f) < (arg0->unk_00.unk_6C.y + var_f27)) && (arg0->unk_00.unk_BC > var_f28)) { + if (var_f28 == 0.0f) { + var_f31 = 0.0f; + var_f30 = -1.0f; + } + else { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + arg0->unk_00.unk_6C.x = sp18.x + (var_f31 * arg0->unk_00.unk_BC); + arg0->unk_00.unk_6C.z = sp18.z + (var_f30 * arg0->unk_00.unk_BC); + } + if ((arg0->unk_FC & 0x220) == 0) { + spC = arg0->unk_00.unk_6C; + spC.y += var_f27 - arg0->unk_00.unk_BC; + var_f28 = VECDistance(&spC, &sp18); + if ((spC.y < sp18.y) && ((50.0f + arg0->unk_00.unk_BC) > var_f28)) { + arg0->unk_FC |= 0x200; + return; + } + spC = arg0->unk_00.unk_6C; + spC.y += arg0->unk_00.unk_BC; + var_f28 = VECDistance(&spC, &sp18); + if ((50.0f + arg0->unk_00.unk_BC) > var_f28) { + arg0->unk_FC |= 0x20; + } + } + } +} + +void fn_1_192AC(UnkM450Struct5 *arg0, UnkM450Struct4 *arg1) +{ + Vec sp8; + float var_f31; + + if ((NULL != arg1) && (arg0->unk_00.unk_38 == 0) && ((arg0->unk_FC & 0x2000) == 0)) { + sp8 = arg0->unk_00.unk_6C; + sp8.y += arg0->unk_00.unk_BC; + var_f31 = VECDistance(&sp8, &arg1->unk_00); + if ((50.0f + arg0->unk_00.unk_BC) > var_f31) { + arg0->unk_FC |= 0x2000; + arg1->unk_7C = 1; + arg1->unk_50 = 0.0f; + } + } +} + +void fn_1_19390(UnkM450Struct5 *var_r31, UnkM450Struct4 *var_r30) +{ + Vec sp8; + float var_f31; + + if ((NULL != var_r30) && ((var_r31->unk_FC & 0x20) == 0)) { + sp8 = var_r31->unk_00.unk_6C; + sp8.y += var_r31->unk_00.unk_BC; + var_f31 = VECDistance(&sp8, &var_r30->unk_00); + if ((70.0f + var_r31->unk_00.unk_BC) > var_f31) { + var_r31->unk_FC |= 0x20; + } + } +} + +void fn_1_19450(UnkM450Struct5 *var_r31) +{ + s32 var_r30; + + for (var_r30 = 0; var_r30 < 1; var_r30++) { + fn_1_18F30(var_r31, lbl_1_bss_E8[var_r30]); + } + for (var_r30 = 0; var_r30 < 1; var_r30++) { + fn_1_192AC(var_r31, lbl_1_bss_E4[var_r30]); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + fn_1_19390(var_r31, lbl_1_bss_DC[var_r30]); + } +} + +s32 fn_1_1964C(Vec *arg0, Vec *arg1) +{ + Vec sp74; + Vec sp68; + Vec sp5C; + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + VECSubtract(&arg1[1], &arg1[0], &sp74); + VECSubtract(&arg1[2], &arg1[1], &sp68); + VECSubtract(&arg1[0], &arg1[2], &sp5C); + VECCrossProduct(&sp74, &sp68, &sp50); + VECSubtract(arg0, &arg1[0], &sp44); + VECSubtract(arg0, &arg1[1], &sp38); + VECSubtract(arg0, &arg1[2], &sp2C); + VECCrossProduct(&sp74, &sp50, &sp20); + VECCrossProduct(&sp68, &sp50, &sp14); + VECCrossProduct(&sp5C, &sp50, &sp8); + if ((0.0f >= VECDotProduct(&sp20, &sp44)) && (0.0f >= VECDotProduct(&sp14, &sp38)) && (0.0f >= VECDotProduct(&sp8, &sp2C))) { + return 1; + } + return 0; +} + +s32 fn_1_19798(void) +{ + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + UnkM450Struct5 *var_r31 = lbl_1_bss_138->data; + UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; + + var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_00.unk_6C.x; + var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_00.unk_6C.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if ((150.0f + var_r31->unk_00.unk_BC) > var_f28) { + if (var_f28 == 0.0f) { + var_f31 = 0.0f; + var_f30 = -1.0f; + } + else { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + var_r31->unk_FC |= 0x200000; + if (var_r30->unk_150 != 0xBC9) { + var_r31->unk_FC |= 4; + } + var_r31->unk_00.unk_6C.x = var_r30->unk_00.unk_6C.x + (var_f31 * (150.0f + var_r31->unk_00.unk_BC)); + var_r31->unk_00.unk_6C.z = var_r30->unk_00.unk_6C.z + (var_f30 * (150.0f + var_r31->unk_00.unk_BC)); + return 1; + } + return 0; +} + +s32 fn_1_19A10(WorkPlayerOld *arg0, Vec *arg1) +{ + float var_f31; + float var_f30; + float var_f28; + + var_f31 = arg1->x - arg0->unk_6C.x; + var_f30 = arg1->z - arg0->unk_6C.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (10.0f <= var_f28) { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + else { + var_f31 = 0.0f; + var_f30 = 0.0f; + return 1; + } + arg0->unk_20 = 72.0f * var_f31; + arg0->unk_24 = 72.0f * -var_f30; + return 0; +} + +void fn_1_19C18(omObjData *object) +{ + UnkM450Struct5 *var_r31 = object->data; + + if ((var_r31->unk_FC & 1) != 0) { + if (1250.0f < var_r31->unk_00.unk_6C.x) { + var_r31->unk_00.unk_6C.x = 1250.0f; + } + if (-1250.0f > var_r31->unk_00.unk_6C.x) { + var_r31->unk_00.unk_6C.x = -1250.0f; + } + if (1250.0f < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = 1250.0f; + } + if (-1250.0f > var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = -1250.0f; + } + } +} + +void fn_1_19CE0(omObjData *object) +{ + UnkM450Struct5 *var_r31 = object->data; + + if (var_r31->unk_FC & 0x10) { + var_r31->unk_FC |= 0x42; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000002); + } + if (var_r31->unk_FC & 0x100) { + var_r31->unk_FC |= 0x402; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(object->model[0], object->motion[14]); + Hu3DMotionTimeSet(object->model[0], 48.0f); + } + if (var_r31->unk_FC & 0x1000) { + var_r31->unk_FC |= 0x4002; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0); + } + if (var_r31->unk_FC & 0x10000) { + var_r31->unk_FC |= 0x40002; + Hu3DMotionShiftSet(object->model[0], object->motion[16], 0.0f, 8.0f, 0); + Hu3DModelPosSet( + lbl_1_bss_1A0->model[var_r31->unk_110 + 2], var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, 50.0f + var_r31->unk_00.unk_6C.z); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 0.0f); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_ATTR_DISPOFF); + } + if (var_r31->unk_FC & 0x100000) { + var_r31->unk_FC |= 0x400002; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0); + } + var_r31->unk_FC &= ~0x30; + var_r31->unk_FC &= ~0x300; + var_r31->unk_FC &= ~0x3000; + var_r31->unk_FC &= ~0x30000; + var_r31->unk_FC &= ~0x300000; + var_r31->unk_100 = 2 * REFRESH_RATE; + var_r31->unk_F8 = 0.0f; + var_r31->unk_00.unk_3C &= ~0x210; +} + +void fn_1_1A014(omObjData *arg0) +{ + UnkM450Struct5 *var_r31 = arg0->data; + + if (var_r31->unk_FC & 0x555550) { + var_r31->unk_FC &= ~0x800; + return; + } + var_r31->unk_FC |= 0x800; +} + +void fn_1_1A060(void) +{ + Vec sp8; + + Vec *var_r31; + UnkM450Struct5 *var_r30 = lbl_1_bss_138->data; + + sp8 = var_r30->unk_00.unk_6C; + if (lbl_1_bss_10C == 0) { + sp8.y = 1500.0f; + } + lbl_1_bss_324 = sp8; + lbl_1_bss_30C = sp8; + var_r31 = &lbl_1_data_51C[lbl_1_bss_110]; + lbl_1_bss_324.x += (var_r31->x * sind((180.0f + var_r30->unk_00.unk_9C))); + lbl_1_bss_324.z += (var_r31->x * cosd((180.0f + var_r30->unk_00.unk_9C))); + lbl_1_bss_324.y += var_r31->y; + lbl_1_bss_30C.y += var_r31->z; +} + +void fn_1_1A21C(float var_f30, float var_f31) +{ + Vec sp8; + Vec *var_r31; + UnkM450Struct5 *var_r30 = lbl_1_bss_138->data; + + sp8 = var_r30->unk_00.unk_6C; + if (lbl_1_bss_10C == 0) { + sp8.y = 1500.0f; + } + if (var_f31 != 0.0f) { + sp8.y = var_f31; + } + lbl_1_bss_324 = sp8; + lbl_1_bss_30C = sp8; + var_r31 = &lbl_1_data_51C[lbl_1_bss_110]; + lbl_1_bss_324.x += var_r31->x * sind(var_f30); + lbl_1_bss_324.z += var_r31->x * cosd(var_f30); + lbl_1_bss_324.y += var_r31->y; + lbl_1_bss_30C.y += var_r31->z; +} + +void fn_1_1A3F0(void) +{ + float var_f31; + float var_f30; + float var_f28; + UnkM450Struct5 *var_r31 = lbl_1_bss_138->data; + UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; + + var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_00.unk_6C.x; + var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_00.unk_6C.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + var_f31 = 800.0f * (var_f31 / var_f28); + var_f30 = 800.0f * (var_f30 / var_f28); + lbl_1_bss_324 = var_r31->unk_00.unk_6C; + lbl_1_bss_30C = var_r31->unk_00.unk_6C; + lbl_1_bss_324.x += var_f31; + lbl_1_bss_324.y += 350.0f; + lbl_1_bss_324.z += var_f30; + lbl_1_bss_30C.y += 150.0f; +} + +#include "src/REL/executor.c" + +void fn_1_1A714(void) +{ + UnkM450Struct5 *var_r31; + + HuSysVWaitSet(1); + if (HuPadBtn[0] & PAD_BUTTON_X) { + lbl_1_bss_304 = -1; + } + print8(0x18, 0x20, 1.5f, "%d COUNT:%d MODE:%d MES:%d CAM:%d", GWMGTypeGet(), lbl_1_bss_308, lbl_1_bss_1A4->work[0], lbl_1_bss_2FE, lbl_1_bss_110); + print8(0x18, 0x30, 1.5f, "%f %f %f", lbl_1_bss_330.x, lbl_1_bss_330.y, lbl_1_bss_330.z); + print8(0x18, 0x40, 1.5f, "%f %f %f", lbl_1_bss_318.x, lbl_1_bss_318.y, lbl_1_bss_318.z); + print8(0x18, 0x50, 1.5f, "H:%x M:%x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + var_r31 = lbl_1_bss_138->data; + print8(0x18, 0x60, 1.5f, "%f (%f %f %f)", var_r31->unk_00.unk_A8, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + print8(0x18, 0x70, 1.5f, "%d %d", var_r31->unk_104, var_r31->unk_108); +} + +void fn_1_1A940(UnkM450Struct5 *var_r30, Vec *var_r31, s8 var_r27) +{ + Mtx spD0; + float var_f31; + + s32 var_r23; + + nMap = 0; + var_r23 = 1; + lbl_1_bss_10C = 1; + if (var_r30->unk_E8 == 0.0f) { + lbl_1_bss_114 = 0; + if (var_r27 == 0x78) { + if (var_r31->x > var_r30->unk_00.unk_6C.x) { + var_r23 = 0; + } + } + else if (var_r31->z < var_r30->unk_00.unk_6C.z) { + var_r23 = 0; + } + } + if (var_r23 != 0) { + CharModelEffectEnableSet(var_r30->unk_11C, 0); + var_r30->unk_E8 += 1.0f; + var_f31 = 0.0f > var_r31->x ? -var_r31->x : var_r31->x; + if (var_f31 < (0.0f > var_r31->y ? -var_r31->y : var_r31->y)) { + var_f31 = 0.0f > var_r31->y ? -var_r31->y : var_r31->y; + } + if (var_f31 < (0.0f > var_r31->z ? -var_r31->z : var_r31->z)) { + var_f31 = 0.0f > var_r31->z ? -var_r31->z : var_r31->z; + } + var_f31 = 1505.0f - var_f31; + if (var_r27 == 0x78) { + fn_1_148B0(var_r30->unk_E8, var_r27); + MTXRotRad(spD0, 0x5A, 0.017453292f * var_r30->unk_E8); + var_r30->unk_00.unk_6C.x = var_r31->x + ((var_f31 * (0.0f > var_r31->x ? -1 : 1)) * sind(var_r30->unk_E8)); + } + else { + fn_1_148B0(var_r30->unk_E8, var_r27); + MTXRotRad(spD0, 0x58, 0.017453292f * var_r30->unk_E8); + var_r30->unk_00.unk_6C.z = var_r31->z + ((var_f31 * (0.0f > var_r31->z ? -1 : 1)) * sind(var_r30->unk_E8)); + } + var_r30->unk_00.unk_6C.y = var_r31->y + (var_f31 * cosd(var_r30->unk_E8)); + MTXMultVec(&spD0[0], &var_r30->unk_00.unk_6C, &var_r30->unk_00.unk_6C); + } + else { + if (var_r27 == 0x78) { + var_r30->unk_00.unk_20 = 0x48; + } + else { + var_r30->unk_00.unk_24 = 0x48; + } + fn_1_40C0(&var_r30->unk_00); + } + if (90.0f <= var_r30->unk_E8) { + if (lbl_1_bss_114 == 0) { + fn_1_149C0(var_r27); + } + fn_1_14AB8(); + } +} + +s32 fn_1_1B0C4(float *arg0, UnkM450Struct5 *arg1) +{ + if (arg1->unk_00.unk_38 != 0) { + return 0; + } + if (((arg0[0] - arg0[3]) <= arg1->unk_00.unk_6C.x) && ((arg0[0] + arg0[3]) >= arg1->unk_00.unk_6C.x) + && ((arg0[2] - arg0[4]) <= arg1->unk_00.unk_6C.z) && ((arg0[2] + arg0[4]) >= arg1->unk_00.unk_6C.z)) { + return 1; + } + return 0; +} + +void fn_1_1B158(UnkM450Struct5 *arg0, UnkData1380Struct *arg1) +{ + s32 var_r31; + + arg0->unk_104 = -1; + if (NULL != arg1) { + if ((arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) { + return; + } + if ((!(1505.0f < arg0->unk_00.unk_6C.y) && !(1495.0f > arg0->unk_00.unk_6C.y)) || (arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) { + for (var_r31 = 0; var_r31 < arg1->unk_08; var_r31++) { + if ((0 <= arg1->unk_24[var_r31]) && ((arg1->unk_30[var_r31].x - arg1->unk_04) <= arg0->unk_00.unk_6C.x) + && ((arg1->unk_04 + arg1->unk_30[var_r31].x) >= arg0->unk_00.unk_6C.x) + && ((arg1->unk_30[var_r31].z - arg1->unk_04) <= arg0->unk_00.unk_6C.z) + && ((arg1->unk_04 + arg1->unk_30[var_r31].z) >= arg0->unk_00.unk_6C.z)) { + arg0->unk_104 = var_r31; + } + } + } + } +} + +void fn_1_1B2AC(UnkM450Struct5 *var_r30, UnkData1380Struct *var_r31) +{ + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + if ((var_r30->unk_FC & 0x800) != 0) { + if ((NULL == var_r31) || (var_r30->unk_104 < 0) || (lbl_1_bss_F8 >= 0) || (var_r31->unk_1C != 0)) { + return; + } + var_r25 = var_r30->unk_104 % var_r31->unk_0C; + var_r24 = var_r30->unk_104 / var_r31->unk_0C; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r27 = var_r25 + lbl_1_data_1234[var_r28 * 2]; + var_r26 = var_r24 + lbl_1_data_1234[(var_r28 * 2) + 1]; + if ((var_r27 >= 0) && (var_r31->unk_0C > var_r27) && (var_r26 >= 0) && (var_r31->unk_0C > var_r26)) { + var_r29 = var_r27 + (var_r26 * var_r31->unk_0C); + if (var_r31->unk_24[var_r29] < 0) { + lbl_1_bss_FC = var_r31; + lbl_1_bss_F8 = var_r29; + var_r31->unk_24[var_r29] = var_r31->unk_24[var_r30->unk_104]; + var_r31->unk_24[var_r30->unk_104] = -1; + var_r31->unk_28[var_r29] = var_r31->unk_28[var_r30->unk_104]; + var_r31->unk_28[var_r30->unk_104] = -1; + lbl_1_bss_EC = var_r31->unk_30[var_r29]; + var_r31->unk_30[var_r29] = var_r31->unk_30[var_r30->unk_104]; + HuAudFXPlay(0x7B8); + return; + } + } + } + } +} + +s32 fn_1_1B4C8(UnkM450Struct5 *arg0) +{ + s32 var_r31; + + arg0->unk_10C = 0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_bss_B8[var_r31] = -1; + } +} + +void fn_1_1B510(s32 sp8) +{ + s32 var_r31; + s32 var_r30; + UnkM450Struct5 *var_r29 = lbl_1_bss_138->data; + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (sp8 == lbl_1_bss_B8[var_r30]) { + var_r29->unk_10C--; + lbl_1_bss_B8[var_r30] = -1; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31 + 0x19], HU3D_ATTR_DISPOFF); + } + for (var_r31 = var_r30; var_r31 < 2; var_r31++) { + lbl_1_bss_B8[var_r31] = lbl_1_bss_B8[var_r31 + 1]; + lbl_1_bss_B8[var_r31 + 1] = -1; + } + } + } +} + +void fn_1_1B644(UnkM450Struct5 *arg0) +{ + s32 var_r31; + + arg0->unk_108 = -1; + if (lbl_1_bss_118 == 5) { + if ((arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) { + return; + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + float var_f31; + float var_f30; + UnkData1450Struct *var_r30 = &lbl_1_data_1450[var_r31]; + var_f31 = arg0->unk_00.unk_6C.x - var_r30->unk_04.x; + var_f30 = arg0->unk_00.unk_6C.z - var_r30->unk_04.z; + if (100.0f > sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) { + arg0->unk_108 = var_r31; + } + } + } +} + +void fn_1_1B830(UnkM450Struct5 *arg0) +{ + s32 var_r30; + + if (arg0->unk_FC & 0x800) { + if ((lbl_1_bss_118 != 5) || (arg0->unk_108 < 0)) { + return; + } + if ((arg0->unk_10C < 3) && (lbl_1_data_1450[arg0->unk_108].unk_18 == 0)) { + for (var_r30 = 0; var_r30 < arg0->unk_10C; var_r30++) { + if (arg0->unk_108 == lbl_1_bss_B8[var_r30]) { + return; + } + } + lbl_1_data_1450[arg0->unk_108].unk_14 = 0.0f; + lbl_1_data_1450[arg0->unk_108].unk_18 = 1; + lbl_1_data_1450[arg0->unk_108].unk_1C = 1; + lbl_1_data_1450[arg0->unk_108].unk_20 = 1; + lbl_1_bss_B8[arg0->unk_10C++] = arg0->unk_108; + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[arg0->unk_108 + 0x14], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[arg0->unk_108 + 0x14], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + if (arg0->unk_10C == 2) { + fn_1_12E5C(lbl_1_bss_B8[0], lbl_1_bss_B8[1], 25); + HuAudFXPlay(0x7B4); + } + if (arg0->unk_10C == 3) { + lbl_1_bss_C8 = 0.0f; + lbl_1_bss_C4 = 0x1388; + fn_1_12E5C(lbl_1_bss_B8[0], lbl_1_bss_B8[2], 26); + fn_1_12E5C(lbl_1_bss_B8[1], lbl_1_bss_B8[2], 27); + HuAudFXPlay(0x7B5); + HuAudFXPlay(0x7B6); + } + } + } +} + +void fn_1_1C060(UnkM450Struct5 *arg0) +{ + UnkData1450Struct *var_r31; + + fn_1_1B644(arg0); + if (arg0->unk_108 >= 0) { + var_r31 = &lbl_1_data_1450[arg0->unk_108]; + if ((arg0->unk_00.unk_38 != 1) && (arg0->unk_00.unk_38 != 3) && (1560.0f > arg0->unk_00.unk_6C.y)) { + arg0->unk_00.unk_6C.y = 1565.0f; + arg0->unk_00.unk_78.y = 1565.0f; + } + if (0.0f != var_r31->unk_10) { + arg0->unk_00.unk_6C.y = 5.0f + var_r31->unk_04.y; + arg0->unk_00.unk_78.y = 5.0f + var_r31->unk_04.y; + } + } +} + +s32 fn_1_1C2D4(UnkM450Struct5 *arg0) +{ + if ((arg0->unk_FC & 0x50) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x5000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x50000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500000) != 0) { + return 0; + } + if (lbl_1_data_A0C[0].unk_14 <= 0) { + return 0; + } + if ((arg0->unk_FC & 0x80000) != 0) { + return 0; + } + if (arg0->unk_00.unk_38 != 0) { + return 0; + } + return 1; +} + +s32 fn_1_1C39C(UnkM450Struct5 *arg0) +{ + if ((arg0->unk_FC & 0x50) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x5000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x50000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500000) != 0) { + return 0; + } + if ((arg0->unk_FC & 2) != 0) { + return 0; + } + return 1; +} + +void fn_1_1C434(UnkM450Struct5 *arg0, omObjData *arg1) +{ + s32 var_r30; + + arg0->unk_118++; + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + fn_1_4ED8(&arg0->unk_00, 0); + Hu3DModelAttrReset(arg1->model[0], HU3D_ATTR_DISPOFF); + arg1->func = fn_1_20170; +} + +void fn_1_1C6E4(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 1; var_r31++) { + lbl_1_bss_E8[var_r31] = NULL; + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + lbl_1_bss_E4[var_r31] = NULL; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_DC[var_r31] = NULL; + } +} + +void fn_1_1C77C(UnkM450Struct5 *arg0) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; + + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 1.0f; + MTXRotRad(sp20, 0x59, 0.017453292f * arg0->unk_00.unk_9C); + MTXMultVec(sp20, &sp14, &sp14); + VECNormalize(&sp14, &sp14); + VECSubtract(&arg0->unk_00.unk_6C, &var_r30->unk_00.unk_6C, &arg0->unk_DC); + VECNormalize(&arg0->unk_DC, &arg0->unk_DC); + VECSubtract(&var_r30->unk_00.unk_6C, &arg0->unk_00.unk_6C, &sp8); + VECNormalize(&sp8, &sp8); + if (0.0f <= VECDotProduct(&sp14, &sp8)) { + arg0->unk_114 = 0x11; + return; + } + arg0->unk_114 = 0x13; +} + +s32 fn_1_1C898(UnkM450Struct5 *var_r31, omObjData *var_r30) +{ + s32 sp3C; + float var_f31; + + if (var_r31->unk_FC & 2) { + if (var_r31->unk_FC & 0x40) { + var_r31->unk_F8 += 1.0f; + if (var_r31->unk_F8 == 15.0f) { + Hu3DModelAttrReset(var_r30->model[0], HU3D_MOTATTR_PAUSE); + } + if ((15.0f < var_r31->unk_F8) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_FC &= ~0x40; + fn_1_4ED8(&var_r31->unk_00, 0); + } + return 0; + } + if (var_r31->unk_FC & 0x400) { + var_r31->unk_F8 += 1.0f; + if (var_r31->unk_F8 == 15.0f) { + Hu3DModelAttrReset(var_r30->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + if ((15.0f < var_r31->unk_F8) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_FC &= ~0x400; + fn_1_4ED8(&var_r31->unk_00, 0); + } + return 0; + } + if (var_r31->unk_FC & 0x4000) { + var_r31->unk_F8 += 1.0f; + if (120.0f < var_r31->unk_F8) { + var_r31->unk_FC &= ~0x4000; + fn_1_4ED8(&var_r31->unk_00, 0); + } + return 0; + } + if (var_r31->unk_FC & 0x40000) { + var_r31->unk_F8 += 1.0f; + if (120.0f < var_r31->unk_F8) { + var_r31->unk_FC &= ~0x40000; + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_ATTR_DISPOFF); + } + return 0; + } + if (var_r31->unk_FC & 0x400000) { + if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + if (var_r31->unk_F8 == 0.0f) { + var_r31->unk_F8 = 1.0f; + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[var_r31->unk_114 + 1], 0.0f, 8.0f, 0); + } + else { + var_r31->unk_FC &= ~0x400000; + fn_1_4ED8(&var_r31->unk_00, 0); + } + } + return 0; + } + if ((var_r31->unk_100 & 1) == 0) { + Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + if (--var_r31->unk_100 < 0) { + var_r31->unk_FC &= ~0x70; + var_r31->unk_FC &= ~0x700; + var_r31->unk_FC &= ~0x7000; + var_r31->unk_FC &= ~0x70000; + var_r31->unk_FC &= ~0x700004; + var_r31->unk_FC &= ~0x2; + Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + return 1; + } + if (var_r31->unk_FC & 0x110) { + fn_1_40C0(&var_r31->unk_00); + return 0; + } + if ((var_r31->unk_FC & 0x1000) != 0) { + if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_00.unk_9C += (10.0 + (8.0 * sind((180.0f * (var_r31->unk_F8 / 60.0f))))); + if (360.0f <= var_r31->unk_00.unk_9C) { + var_r31->unk_00.unk_9C -= 360.0f; + } + var_r31->unk_F8 += 1.0f; + if (60.0f < var_r31->unk_F8) { + fn_1_19CE0(var_r30); + } + } + return 0; + } + if (var_r31->unk_FC & 0x10000) { + fn_1_19CE0(var_r30); + return 0; + } + if (var_r31->unk_FC & 0x100000) { + var_r31->unk_00.unk_20 = 72.0f * var_r31->unk_DC.x; + var_r31->unk_00.unk_24 = -(72.0f * var_r31->unk_DC.z); + fn_1_40C0(&var_r31->unk_00); + return 0; + } + if ((var_r31->unk_FC & 0x20) != 0) { + if (lbl_1_bss_118 < 4) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + } + else { + omVibrate(lbl_1_bss_120, 0xC, 0xC, 0); + } + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_FC |= 0x10; + var_r31->unk_00.unk_3C |= 0x210; + fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 48.179995f : 57.816f, 0.0f); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[8], 0.0f, 8.0f, 0); + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if (var_r31->unk_FC & 0x200) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_FC |= 0x100; + var_r31->unk_00.unk_3C |= 0x210; + fn_1_2BD0(&var_r31->unk_00, 0.0f, 0.0f); + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if (var_r31->unk_FC & 0x2000) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_F8 = 0.0f; + var_r31->unk_FC |= 0x1000; + var_r31->unk_00.unk_3C |= 0x10; + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[15], 0.0f, 8.0f, 0); + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if (var_r31->unk_FC & 0x20000) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_F8 = 0.0f; + var_r31->unk_FC |= 0x10000; + var_r31->unk_00.unk_3C |= 0x10; + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if ((var_r31->unk_FC & 0x200000) != 0) { + omVibrate(lbl_1_bss_120, 0xC, 0xC, 0); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_F8 = 0.0f; + var_r31->unk_FC |= 0x100000; + var_r31->unk_00.unk_3C |= 0x200; + var_r31->unk_00.unk_3C &= ~0x10; + var_f31 = VERSION_NTSC ? 40.15f : 48.180005f; + if (var_r31->unk_FC & 4) { + var_f31 = var_f31 / 2; + } + fn_1_1C77C(var_r31); + fn_1_2BD0(&var_r31->unk_00, var_f31, 0.0f); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[var_r31->unk_114], 0.0f, 8.0f, 0); + sp3C = 1; + if ((var_r31->unk_FC & 4) != 0) { + sp3C = 1; + } + if (fn_1_125C0(0, sp3C) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + return 1; +} + +void fn_1_1E150(omObjData *var_r29) +{ + s32 sp70; + float var_f20; + + UnkM450Struct5 *var_r31 = var_r29->data; + UnkData1380Struct *var_r30; + + var_r31->unk_FC |= 1; + var_r31->unk_FC &= 0xFFFFF7FF; + fn_1_1C060(var_r31); + sp70 = 1; + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + if (lbl_1_bss_118 == 5) { + fn_1_19798(); + } + sp70 = fn_1_1C898(var_r31, var_r29); + if (sp70 != 0) { + if (((var_r31->unk_FC & 0x80000) || (lbl_1_bss_304 < 0)) && (var_r31->unk_00.unk_38 == 0)) { + var_r31->unk_118 = 0x7EB; + Hu3DModelAttrReset(*var_r29->model, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(*var_r29->model, var_r29->motion[22], 0.0f, 8.0f, 0); + Hu3DModelAttrReset(*var_r29->model, HU3D_ATTR_DISPOFF); + var_r29->func = fn_1_20170; + return; + } + if (NULL != lbl_1_data_FAC[lbl_1_bss_118]) { + if (fn_1_1B0C4(lbl_1_data_FAC[lbl_1_bss_118], var_r31) != 0) { + if (fn_1_1C2D4(var_r31) != 0) { + fn_1_1C434(var_r31, var_r29); + return; + } + } + } + var_r31->unk_00.unk_20 = HuPadStkX[var_r31->unk_120]; + var_r31->unk_00.unk_24 = HuPadStkY[var_r31->unk_120]; + var_r31->unk_00.unk_28 = HuPadBtnDown[var_r31->unk_120]; + var_r31->unk_00.unk_2C = HuPadBtn[var_r31->unk_120]; + var_r31->unk_00.unk_30 = HuPadTrigL[var_r31->unk_120]; + var_r31->unk_00.unk_34 = HuPadTrigR[var_r31->unk_120]; + if ((lbl_1_bss_118 >= 2) && (lbl_1_bss_118 <= 4)) { + var_r31->unk_00.unk_20 = HuPadStkY[var_r31->unk_120]; + var_r31->unk_00.unk_24 = -HuPadStkX[var_r31->unk_120]; + } + fn_1_40C0(&var_r31->unk_00); + } + if ((1490.0f > var_r31->unk_00.unk_6C.y) && (var_r31->unk_00.unk_38 != 1) && (var_r31->unk_00.unk_38 != 3)) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_FC |= 0x800000; + var_r31->unk_118 = 0x7EB; + fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 53.533333f : 64.240005f, 0.0f); + Hu3DMotionSet(var_r29->model[0], var_r29->motion[8]); + Hu3DModelAttrReset(var_r29->model[0], HU3D_ATTR_DISPOFF); + fn_1_125C0(0, 0); + var_r29->func = fn_1_20170; + return; + } + fn_1_19450(var_r31); + + var_r30 = NULL; + if (lbl_1_bss_118 == 2) { + var_r30 = &lbl_1_data_1380; + } + if (lbl_1_bss_118 == 4) { + var_r30 = &lbl_1_data_13B8; + } + fn_1_1B158(var_r31, var_r30); + fn_1_1B2AC(var_r31, var_r30); + if (NULL != var_r30) { + if ((var_r31->unk_104 >= 0) && (((var_r30->unk_34[var_r31->unk_104].x) != 0.0f) || (var_r30->unk_34[var_r31->unk_104].z != 0.0f))) { + VECAdd(&var_r30->unk_34[var_r31->unk_104], &var_r31->unk_00.unk_6C, &var_r31->unk_00.unk_6C); + var_r31->unk_00.unk_78 = var_r31->unk_00.unk_6C; + } + if (var_r30->unk_1C != 0) { + if (fn_1_1C2D4(var_r31) != 0) { + fn_1_1C434(var_r31, var_r29); + return; + } + } + } + if ((lbl_1_bss_118 == 5) && (lbl_1_data_A0C[1].unk_14 <= 0)) { + if (fn_1_1C2D4(var_r31) != 0) { + lbl_1_bss_11C = lbl_1_bss_120; + fn_1_1C434(var_r31, var_r29); + fn_1_1F58(0x3E8); + return; + } + } + fn_1_1B644(var_r31); + fn_1_1B830(var_r31); + if (lbl_1_bss_118 < 5) { + var_f20 = 0.0; + if ((lbl_1_bss_118 >= 2) && (lbl_1_bss_118 <= 4)) { + var_f20 = 270.0f; + } + fn_1_1A21C(var_f20, 1500.0f); + fn_1_1710(0.5f, &lbl_1_data_470); + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + fn_1_1C6E4(); +} + +void fn_1_200BC(UnkM450Struct5 *arg0, omObjData *object) +{ + s32 var_r31; + + arg0->unk_118++; + arg0->unk_FC &= ~0x802; + arg0->unk_FC &= ~0x70; + arg0->unk_FC &= ~0x700; + arg0->unk_FC &= ~0x7000; + arg0->unk_FC &= ~0x70000; + arg0->unk_FC &= ~0x700004; + fn_1_1B4C8(arg0); + object->func = fn_1_1E150; +} + +void fn_1_20170(omObjData *var_r30) +{ + Vec sp1CC; + float sp1C8; + float sp1C4; + float var_f31; + float var_f30; + + UnkM450Struct5 *var_r31; + UnkM450Struct5 *var_r29; + UnkData94CStruct *var_r28; + s32 var_r25; + + var_r31 = var_r30->data; + var_r31->unk_FC &= 0xFFFFFFFE; + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + CharModelEffectEnableSet(var_r31->unk_11C, 1); + lbl_1_bss_10C = 0; + switch (var_r31->unk_118) { + case 0x7D0: + if (lbl_1_bss_1A4->work[0] > 0x3EC) { + var_r31->unk_118++; + Hu3DModelShadowSet(var_r30->model[0]); + if (fn_1_13B90(0) != 0) { + var_r31->unk_00.unk_9C = 180.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + } + else { + var_r31->unk_00.unk_9C = 0.0f; + fn_1_4ED8(&var_r31->unk_00, 5); + } + var_r31->unk_00.unk_3C |= 0x20; + } + break; + case 0x7D1: + fn_1_40C0(&var_r31->unk_00); + if (var_r31->unk_00.unk_38 == 2) { + var_r31->unk_118++; + var_r31->unk_F0 = 0; + var_r31->unk_F4 = -1; + var_r31->unk_C4 = lbl_1_data_94C; + var_r31->unk_EC = 360.0f; + omVibrate(lbl_1_bss_120, 0xC, 0xC, 0); + if (fn_1_13B90(0) != 0) { + var_r31->unk_118 = 0x7D4; + var_r31->unk_E8 = 0.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + } + var_r31->unk_00.unk_3C &= ~0x20; + } + break; + case 0x7D2: + case 0x7DA: + if (var_r31->unk_EC != 360.0f) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, var_r31->unk_EC, 0.05f); + } + if (var_r31->unk_F4 < 0) { + var_r31->unk_F4 = var_r31->unk_F0; + var_r31->unk_F0++; + var_r28 = &var_r31->unk_C4[var_r31->unk_F4]; + if (var_r28->unk_08 == 0.0f) { + Hu3DMotionSet(var_r30->model[0], var_r30->motion[var_r28->unk_00]); + Hu3DMotionTimeSet(var_r30->model[0], var_r28->unk_0C); + } + else { + Hu3DMotionShiftSet( + var_r30->model[0], var_r30->motion[var_r28->unk_00], var_r28->unk_0C, var_r28->unk_08, var_r28->unk_10 & 0xBFFFFFFD); + } + Hu3DMotionSpeedSet(var_r30->model[0], var_r28->unk_04); + Hu3DMotionShiftSpeedSet(var_r30->model[0], var_r28->unk_04); + if (var_r28->unk_10 & 0x40000003) { + var_r31->unk_118++; + Hu3DMotionSpeedSet(var_r30->model[0], 1.0f); + Hu3DMotionShiftSpeedSet(var_r30->model[0], 1.0f); + } + } + else if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_F4 = -1; + if (var_r31->unk_C4[var_r31->unk_F0].unk_00 < 0) { + var_r31->unk_118++; + Hu3DMotionSpeedSet(var_r30->model[0], 1.0f); + Hu3DMotionShiftSpeedSet(var_r30->model[0], 1.0f); + } + } + break; + case 0x7D3: + if (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) { + sp1C4 = Hu3DMotionTimeGet(var_r30->model[0]) / Hu3DMotionMaxTimeGet(var_r30->model[0]); + if (0.5f > sp1C4) { + sp1C4 = 0.5f; + } + var_r31->unk_00.unk_9C = 180.0f * (2.0f * (sp1C4 - 0.5f)); + if (Hu3DMotionEndCheck(var_r30->model[0]) != 0) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[0], 0.0f, 8.0f, 0x40000001); + } + } + break; + case 0x7D4: + if ((lbl_1_bss_1A4->work[0] >= 0x3EF) && (120.0f < lbl_1_bss_128)) { + var_r31->unk_118++; + } + break; + case 0x7D5: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, lbl_1_bss_4C, 0x7A); + } + else { + if (lbl_1_bss_1A4->work[0] < 0x3F0) { + lbl_1_bss_1A4->work[0] = 0x3F0; + lbl_1_bss_128 = 0.0f; + lbl_1_bss_324 = lbl_1_data_4B8; + lbl_1_bss_30C = lbl_1_data_4C4; + } + if ((lbl_1_bss_4C->z - 100.0f) < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_24 = 0x48; + fn_1_40C0(&var_r31->unk_00); + } + else { + var_r31->unk_118++; + fn_1_4ED8(&var_r31->unk_00, 0); + } + } + break; + case 0x7D6: + if (lbl_1_bss_1A4->work[0] >= 0x3F3) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7D8: + var_r31->unk_D0.x = 1200.0f; + var_r31->unk_D0.z = 0.0f; + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + if (lbl_1_bss_1A4->work[0] >= 0x3F5) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + var_r31->unk_00.unk_6C.z = 0.0f; + } + else { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f); + var_r31->unk_00.unk_6C.z = 0.0f; + } + } + fn_1_40C0(&var_r31->unk_00); + break; + case 0x7D9: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[1], 0x78); + } + else { + if ((-1000.0f < var_r31->unk_00.unk_6C.x) && (lbl_1_bss_1A4->work[0] < 0x3F6)) { + lbl_1_bss_1A4->work[0] = 0x3F6; + lbl_1_bss_128 = 0.0f; + } + if (lbl_1_bss_1A4->work[0] >= 0x3F7) { + var_r31->unk_118 = 0x7DB; + fn_1_4ED8(&var_r31->unk_00, 0); + } + if (lbl_1_data_1380.unk_24[2] >= 0) { + var_r31->unk_D0 = lbl_1_data_1380.unk_30[2]; + } + else { + var_r31->unk_D0 = lbl_1_data_1380.unk_30[3]; + } + var_r31->unk_D0.z *= 0.5f; + fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0); + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7DB: + if ((lbl_1_bss_1A4->work[0] <= 0x3F9) && (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (lbl_1_bss_D8 > 0)) { + VECScale(&lbl_1_bss_CC, &lbl_1_bss_CC, 1.0f / lbl_1_bss_D8); + fn_1_160AC(var_r31, var_r30, &lbl_1_bss_CC); + } + if (lbl_1_bss_1A4->work[0] >= 0x3FA) { + fn_1_160AC(var_r31, var_r30, NULL); + } + if (lbl_1_bss_1A4->work[0] >= 0x3FB) { + fn_1_16280(var_r31, var_r30); + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7DD: + var_r31->unk_D0.x = 300.0f; + var_r31->unk_D0.z = 0.0f; + if (lbl_1_bss_1A4->work[0] >= 0x3FD) { + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f); + if (lbl_1_bss_1A4->work[0] <= 0x3FD) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + if (lbl_1_bss_1A4->work[0] >= 0x402) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + } + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7DE: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[2], 0x78); + } + else if ((100.0f + lbl_1_bss_4C[2].x) > var_r31->unk_00.unk_6C.x) { + var_r31->unk_00.unk_20 = 0x48; + fn_1_40C0(&var_r31->unk_00); + } + else { + var_r31->unk_118++; + fn_1_4ED8(&var_r31->unk_00, 0); + lbl_1_bss_1A4->work[0] = 0x403; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x7DF: + if (lbl_1_bss_1A4->work[0] >= 0x405) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7E1: + var_r31->unk_D0.x = 1200.0f; + var_r31->unk_D0.z = 0.0f; + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + if (lbl_1_bss_1A4->work[0] >= 0x407) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + var_r31->unk_00.unk_6C.z = 0.0f; + } + else { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f); + var_r31->unk_00.unk_6C.z = 0.0f; + } + } + fn_1_40C0(&var_r31->unk_00); + break; + case 0x7E2: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[3], 0x78); + } + else { + if ((-1000.0f < var_r31->unk_00.unk_6C.x) && (lbl_1_bss_1A4->work[0] < 0x408)) { + lbl_1_bss_1A4->work[0] = 0x408; + lbl_1_bss_128 = 0.0f; + } + if (lbl_1_bss_1A4->work[0] >= 0x409) { + var_r31->unk_118++; + } + var_r31->unk_D0 = lbl_1_data_13B8.unk_30[7]; + + fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0); + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7E3: + if (lbl_1_bss_1A4->work[0] >= 0x40D) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7E5: + var_r31->unk_D0.x = 0.0f; + var_r31->unk_D0.z = -400.0f; + if (lbl_1_bss_1A4->work[0] >= 0x410) { + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f, 0.4f); + if ((lbl_1_bss_1A4->work[0] <= 0x410) && (120.0f <= lbl_1_bss_128)) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + + fn_1_139B0(&lbl_1_data_13B8, 0x10); + fn_1_1F58(0x3E8); + } + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7E6: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[4], 0x7A); + } + else { + if (lbl_1_bss_1A4->work[0] <= 0x411) { + lbl_1_bss_1A4->work[0] = 0x412; + lbl_1_bss_128 = 0.0f; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_324 = lbl_1_data_4D0; + lbl_1_bss_30C = lbl_1_data_4DC; + } + var_r31->unk_D0.x = 0.0f; + var_r31->unk_D0.z = 600.0f; + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + ++var_r31->unk_118; + fn_1_4ED8(&var_r31->unk_00, 0); + } + else { + fn_1_40C0(&var_r31->unk_00); + } + } + break; + case 0x7E7: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f, 0.4f); + if (lbl_1_bss_1A4->work[0] >= 0x415) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7E9: + if (lbl_1_bss_1A4->work[0] >= 0x417) { + if ((VERSION_NTSC ? 100.0f : 80.0f) < lbl_1_bss_128) { + var_r31->unk_118++; + GWPlayerCoinWinSet(lbl_1_bss_120, 10); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[21], 0.0f, 8.0f, 0); + lbl_1_bss_18 = HuAudSStreamPlay(0xD); + } + } + if ((lbl_1_bss_1A4->work[0] == 0x416) && (240.0f < lbl_1_bss_128)) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x7EA: + VECSubtract(&((UnkM450Struct3 *)lbl_1_bss_134->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &sp1CC); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0 + (atan2d(sp1CC.x, sp1CC.z)), 0.4f); + break; + case 0x7EB: + if (var_r31->unk_FC & 0x800000) { + var_r29 = var_r31; + var_r29->unk_00.unk_84.y += -146.0f / REFRESH_RATE; + var_r29->unk_00.unk_6C.y += var_r29->unk_00.unk_84.y; + var_r29->unk_00.unk_A8 = MapPos( + var_r29->unk_00.unk_6C.x, var_r29->unk_00.unk_6C.y, var_r29->unk_00.unk_6C.z, var_r29->unk_00.unk_C0, &var_r29->unk_00.unk_AC); + if (var_r29->unk_00.unk_A8 > var_r29->unk_00.unk_6C.y) { + fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 53.533333f : 64.240005f, 0.0f); + } + var_f31 = var_r29->unk_00.unk_6C.x; + var_f30 = var_r29->unk_00.unk_6C.z; + sp1C8 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (sp1C8 == 0.0f) { + var_f31 = 0.0f; + var_f30 = -1.0f; + } + else { + var_f31 /= sp1C8; + var_f30 /= sp1C8; + } + var_r29->unk_00.unk_84.x = 72.0f * var_f31 / 4; + var_r29->unk_00.unk_84.z = 72.0f * var_f30 / 4; + var_r29->unk_00.unk_6C.x += var_r29->unk_00.unk_84.x; + var_r29->unk_00.unk_6C.z += var_r29->unk_00.unk_84.z; + var_r29->unk_00.unk_9C = fn_1_1E20(var_r29->unk_00.unk_9C, atan2d(var_r29->unk_00.unk_84.x, var_r29->unk_00.unk_84.z), 0.4f); + } + break; + default: + OSReport("*** player mode error(%d)!!\n", var_r31->unk_118); + break; + } + if ((var_r31->unk_118 >= 0x7E9) && (var_r31->unk_118 <= 0x7EA)) { + fn_1_1C060(var_r31); + } + if (1495.0f > var_r31->unk_00.unk_6C.y) { + for (var_r25 = 0; var_r25 < 1; var_r25++) { + Hu3DModelShadowDispOff(var_r30->model[var_r25]); + } + } + else { + for (var_r25 = 0; var_r25 < 1; var_r25++) { + Hu3DModelShadowDispOn(var_r30->model[var_r25]); + } + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); +} + +void fn_1_23330(omObjData *object) +{ + Vec sp8; + UnkM450Struct5 *var_r31; + s32 var_r29; + s32 var_r27; + s32 var_r26; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct5), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + var_r31->unk_FC = 0; + var_r31->unk_11C = GWPlayerCfg[lbl_1_bss_120].character; + var_r31->unk_120 = GWPlayerCfg[lbl_1_bss_120].pad_idx; + var_r31->unk_118 = 0x7D0; + var_r31->unk_C8 = 0.0f; + var_r31->unk_CC = 0.0f; + sp8.x = 0.0f; + sp8.y = 4000.0f; + sp8.z = 0.0f; + var_r26 = var_r31->unk_11C; + var_r27 = lbl_1_bss_120; + fn_1_2C1C(&var_r31->unk_00, object, var_r27, var_r26, lbl_1_data_92C, 0, &sp8, 0.0f); + var_r31->unk_00.unk_04 = fn_1_19C18; + var_r31->unk_00.unk_0C = fn_1_19CE0; + var_r31->unk_00.unk_10 = fn_1_1A014; + object->model[0] = CharModelCreate(lbl_1_data_0[var_r31->unk_11C], 2); + CharModelStepTypeSet(lbl_1_data_0[var_r31->unk_11C], 0); + for (var_r29 = 0; var_r29 < 0x17; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(lbl_1_data_0[var_r31->unk_11C], lbl_1_data_64C[var_r31->unk_11C][var_r29]); + CharModelMotionSet(lbl_1_data_0[var_r31->unk_11C], object->motion[var_r29]); + } + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], *object->motion); + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + CharModelLayerSetAll2(6); + CharModelMotionDataClose(lbl_1_data_0[var_r31->unk_11C]); + object->func = fn_1_20170; +} + +void fn_1_23770(omObjData *object, s32 arg1) +{ + lbl_1_bss_108 = 1; + lbl_1_bss_128 += 1.0f; + if ((fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) && (MGSeqStatGet(lbl_1_bss_2FE) == 0)) { + lbl_1_bss_2FE = -1; + object->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_12540(0); + if (lbl_1_bss_118 == 5) { + fn_1_12540(1); + } + } + if ((arg1 >= 0) && (lbl_1_bss_2F8 < 0) && ((MGSeqStatGet(lbl_1_bss_2FE) & 0x10) != 0)) { + fn_1_1F24(arg1); + } +} + +void fn_1_23CA0(omObjData *arg0, float arg8, float arg9) +{ + lbl_1_bss_108 = 0; + lbl_1_bss_110 = 0; + if (lbl_1_bss_2FE < 0) { + nMap = 0; + fn_1_14C28(); + MGSeqParamSet(lbl_1_bss_2FC, 2, -1); + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FC = -1; + lbl_1_bss_2FE = MGSeqCreate(3, 1); + return; + } + lbl_1_bss_128 += 1.0f; + if (lbl_1_bss_118 < 5) { + fn_1_1A21C(arg8, 1500.0f); + } + else { + fn_1_1A3F0(); + } + fn_1_13DC(lbl_1_bss_128 / arg9, &lbl_1_data_470); + + if ((arg9 < lbl_1_bss_128) && (MGSeqStatGet(lbl_1_bss_2FE) == 0)) { + arg0->work[0] += 1; + lbl_1_bss_128 = 0.0f; + lbl_1_bss_124 = 0.0f; + lbl_1_bss_2FE = -1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + } +} + +void fn_1_24620(omObjData *var_r31) +{ + Vec sp280; + s32 sp120; + s32 sp11C; + CameraData *sp118; + float var_f31; + UnkData1380Struct *var_r30; + + if (omSysExitReq != 0) { + fn_1_1F58(0x64); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + var_r31->func = fn_1_298EC; + } + lbl_1_bss_308++; + switch (var_r31->work[0]) { + case 0x3E8: + if (lbl_1_bss_2FE < 0) { + fn_1_1F58(0x64); + MGSeqParamSet(lbl_1_bss_2FC, 2, -1); + lbl_1_bss_2FC = -1; + lbl_1_bss_2FE = MGSeqCreate(3, 1); + lbl_1_bss_1C = -1; + } + else { + lbl_1_bss_128 += 1.0f; + sp11C = 0; + if (lbl_1_bss_1C < 0) { + if (120.0f < lbl_1_bss_128) { + lbl_1_bss_1C = HuAudSStreamPlay(3); + } + } + else if (HuAudSStreamStatGet(lbl_1_bss_1C) == 0) { + sp11C = 1; + } + if ((sp11C != 0) || (1200.0f < lbl_1_bss_128)) { + fn_1_1F58(0x64); + lbl_1_bss_2FE = -1; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + var_r31->func = fn_1_298EC; + } + } + break; + case 0x3E9: + lbl_1_bss_128 += 1.0f; + if (60.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + HuAudFXPlay(0x7B2); + } + break; + case 0x3EA: + if (WipeStatGet() == 0) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x3EB: + lbl_1_bss_128 += 1.0f; + if (120.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + lbl_1_bss_324 = lbl_1_data_488; + lbl_1_bss_30C = lbl_1_data_494; + fn_1_1F24(0x41); + } + break; + case 0x3EC: + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_324 = lbl_1_data_4A0; + lbl_1_bss_30C = lbl_1_data_4AC; + } + break; + case 0x3ED: + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7D3) { + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_6CB0(fn_1_8500, 0); + } + } + break; + case 0x3EE: + case 0x3F1: + case 0x3F8: + case 0x401: + case 0x40A: + case 0x413: + if (lbl_1_bss_10 == 0) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x3EF: + lbl_1_bss_128 += 1.0f; + if (120.0f < lbl_1_bss_128) { + fn_1_1A060(); + fn_1_1710((lbl_1_bss_128 - 120.0f) / 240.0f, &lbl_1_data_470); + } + break; + case 0x3F0: + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_6CB0(fn_1_8BDC, 1); + } + if (fn_1_13B90(1) != 0) { + fn_1_1F58(0x3E8); + } + break; + case 0x3F2: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_14BC8(&lbl_1_data_A80[0], 9); + fn_1_13BC4(1); + fn_1_1A060(); + } + else { + fn_1_23770(var_r31, 0x40); + } + break; + case 0x3F3: + case 0x3FB: + case 0x405: + case 0x40D: + case 0x415: + if (lbl_1_bss_2FC >= 0) { + MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + REFRESH_RATE - 1) / REFRESH_RATE); + } + else { + sp120 = 0; + if ((lbl_1_bss_118 == 2) || (lbl_1_bss_118 == 4) || (lbl_1_bss_118 == 5)) { + if (lbl_1_bss_304 < 30 * REFRESH_RATE) { + sp120 = 1; + } + } + else { + sp120 = 1; + } + if (sp120 != 0) { + lbl_1_bss_2FC = MGSeqCreate(1, lbl_1_bss_304 / REFRESH_RATE, -1, -1); + } + } + lbl_1_bss_304--; + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7EB) { + var_r31->work[0] = 0x3E8; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x3F4: + fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE); + break; + case 0x3F5: + lbl_1_bss_128 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x3F6: + lbl_1_bss_128 += 1.0f; + if (90.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_20 = -1; + break; + case 0x3F7: + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[6], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f); + if (2 * REFRESH_RATE < lbl_1_bss_128) { + var_r31->work[0] += 1; + fn_1_6CB0(fn_1_9074, 2); + HuAudFXPlay(0x7BB); + } + break; + case 0x3F9: + break; + case 0x3FA: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_13BC4(2); + fn_1_1A21C(270.0f, 0.0f); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x3FC: + var_f31 = lbl_1_bss_128 / (2 * REFRESH_RATE); + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_r30 = &lbl_1_data_1380; + Hu3DModelAttrReset(lbl_1_bss_1A0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelRotSet(lbl_1_bss_1A0->model[5], 0.0f, 90.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_1A0->model[5], var_r30->unk_30[3].x, var_r30->unk_30[3].y, var_r30->unk_30[3].z); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[5], var_f31); + fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE); + break; + case 0x3FD: + case 0x3FE: + case 0x3FF: + lbl_1_bss_124 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_1710(lbl_1_bss_124 / 120.0f, &lbl_1_data_470); + lbl_1_bss_20 = -1; + break; + case 0x400: + lbl_1_bss_124 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_1710(lbl_1_bss_124 / 120.0f, &lbl_1_data_470); + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + Hu3DModelAttrReset(lbl_1_bss_1A0->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_1A0->model[7], 0.0f, -(60.0f - (lbl_1_bss_128 / 2)), 0.0f); + if (120.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0; + fn_1_6CB0(fn_1_96C0, -1); + fn_1_139B0(&lbl_1_data_1380, 5); + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + HuAudFXPlay(0x7BB); + } + break; + case 0x402: + lbl_1_bss_128 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x403: + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + break; + case 0x404: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_14BC8(&lbl_1_data_C58[0], 10); + fn_1_13BC4(3); + fn_1_1A21C(270.0f, 0.0f); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x406: + fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE); + break; + case 0x407: + lbl_1_bss_128 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x408: + lbl_1_bss_128 += 1.0f; + if (90.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_20 = -1; + break; + case 0x409: + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[17], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f); + if (2 * REFRESH_RATE < lbl_1_bss_128) { + var_r31->work[0] += 1; + fn_1_6CB0(fn_1_9824, 4); + HuAudFXPlay(0x7BB); + } + break; + case 0x40B: + break; + case 0x40C: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_13BC4(4); + fn_1_1A21C(270.0f, 0.0f); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x40E: + var_f31 = lbl_1_bss_128 / (2 * REFRESH_RATE); + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_r30 = &lbl_1_data_13B8; + Hu3DModelAttrReset(lbl_1_bss_1A0->model[16], HU3D_ATTR_DISPOFF); + Hu3DModelRotSet(lbl_1_bss_1A0->model[16], 0.0f, -90.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_1A0->model[16], var_r30->unk_30[8].x, var_r30->unk_30[8].y, var_r30->unk_30[8].z); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[16], var_f31); + fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE); + break; + case 0x40F: + lbl_1_bss_20 = -1; + break; + case 0x410: + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + if (120.0f <= lbl_1_bss_128) { + lbl_1_bss_128 = 120.0f; + } + Hu3DModelAttrReset(lbl_1_bss_1A0->model[18], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_1A0->model[18], 0.0f, -(60.0f - (lbl_1_bss_128 / 2)), 0.0f); + fn_1_1A21C(0.0f, 0.0f); + fn_1_1710(lbl_1_bss_128 / 120.0f, &lbl_1_data_470); + break; + case 0x411: + if (lbl_1_bss_20 >= 0) { + lbl_1_bss_20 = -1; + HuAudFXPlay(0x7BB); + } + lbl_1_bss_128 += 1.0f; + fn_1_1A060(); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x412: + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_6CB0(fn_1_9BA4, 5); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[19], HU3D_ATTR_DISPOFF); + } + break; + case 0x414: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_13BC4(5); + fn_1_1A21C(0.0f, 2000.0f); + fn_1_1F24(0x42); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x416: + lbl_1_bss_128 += 1.0f; + break; + case 0x417: + fn_1_23CA0(var_r31, 0.0f, 2 * REFRESH_RATE); + break; + case 0x418: + lbl_1_bss_128 += 1.0f; + sp11C = 0; + if (HuAudSStreamStatGet(lbl_1_bss_18) == 0) { + sp11C = 1; + } + if ((sp11C != 0) || (1200.0f < lbl_1_bss_128)) { + fn_1_1F58(0x64); + lbl_1_bss_2FE = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + var_r31->func = fn_1_298EC; + } + break; + default: + OSReport("*** main mode error(%d)!!\n", var_r31->work[0]); + break; + } + + sp118 = Hu3DCamera; + VECSubtract(&sp118->target, &sp118->pos, &sp280); + VECNormalize(&sp280, &sp280); + HuAudFXListnerUpdate(&sp118->pos, &sp280); + lbl_1_bss_D8 = 0; + lbl_1_bss_CC.x = 0.0f; + lbl_1_bss_CC.y = 0.0f; + lbl_1_bss_CC.z = 0.0f; +} + +void ObjectSetup(void) +{ + Vec sp14; + Vec sp8; + s32 var_r31; + s32 var_r29; + omObjData *var_r28; + s32 var_r27; + + OSReport("******* M450 ObjectSetup *********\n"); + lbl_1_bss_33C = omInitObjMan(0x3E8, 0x2000); + omGameSysInit(lbl_1_bss_33C); + nMap = 0; + nChar = 0; + lbl_1_bss_120 = 0; + lbl_1_bss_11C = -1; + lbl_1_bss_118 = 0; + lbl_1_bss_110 = 0; + lbl_1_bss_10C = 0; + lbl_1_bss_108 = 0; + lbl_1_bss_308 = 0; + lbl_1_bss_2FE = -1; + lbl_1_bss_2FC = -1; + lbl_1_bss_2F8 = -1; + lbl_1_bss_1C = -1; + lbl_1_bss_18 = -1; + lbl_1_bss_D8 = 0; + lbl_1_bss_F8 = -1; + lbl_1_bss_FC = NULL; + lbl_1_bss_C4 = -1; + fn_1_1C6E4(); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 30000.0f, 1.2f); + fn_1_1350(&lbl_1_data_464, &lbl_1_data_470, &lbl_1_data_47C); + VECSubtract(&lbl_1_data_47C, &lbl_1_data_464, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerSetEX(&lbl_1_data_464, &sp8, 5800.0, 1000.0, 100.0, 300.0, 300.0); + var_r27 = Hu3DGLightCreateV(&lbl_1_data_4E8, &lbl_1_data_4F4, &lbl_1_data_500); + Hu3DGLightStaticSet(var_r27, 1); + Hu3DGLightInfinitytSet(var_r27); + Hu3DShadowCreate(30.0f, 20.0f, 30000.0f); + Hu3DShadowTPLvlSet(0.5f); + VECNormalize(&lbl_1_data_504, &sp14); + Hu3DShadowPosSet(&lbl_1_data_504, &sp14, &lbl_1_data_510); + fn_1_6C68(lbl_1_bss_120); + lbl_1_bss_14 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M450, 0x63), 0x10000000)); + HuSprAnimLock(lbl_1_bss_14); + fn_1_12234(); + for (var_r29 = 0; var_r29 < 0x20; var_r29++) { + lbl_1_bss_1B0[var_r29].unk00 = 0; + lbl_1_bss_1B0[var_r29].unk04 = -1; + } + lbl_1_bss_1A0 = omAddObjEx(lbl_1_bss_33C, 0x64, 0x21, 0, -1, fn_1_15308); + for (var_r31 = 0; var_r31 < 0x17; var_r31++) { + lbl_1_bss_144[var_r31] = omAddObjEx(lbl_1_bss_33C, 0x65, 1, 0, -1, fn_1_12D7C); + lbl_1_bss_144[var_r31]->work[0] = var_r31; + } + omMakeGroupEx(lbl_1_bss_33C, 0, 1); + lbl_1_bss_140 = omGetGroupMemberListEx(lbl_1_bss_33C, 0); + for (var_r31 = 0; var_r31 < 1; var_r31++) { + var_r28 = omAddObjEx(lbl_1_bss_33C, 0x66, 1, 0, 0, fn_1_1291C); + } + omMakeGroupEx(lbl_1_bss_33C, 1, 0xA); + lbl_1_bss_13C = omGetGroupMemberListEx(lbl_1_bss_33C, 1); + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + var_r28 = omAddObjEx(lbl_1_bss_33C, 0x67, 1, 0, 1, fn_1_12B80); + } + fn_1_2C00(NULL, 1505.0f); + lbl_1_bss_138 = omAddObjEx(lbl_1_bss_33C, 0x6D, 1, 0x17, -1, fn_1_23330); + lbl_1_bss_134 = omAddObjEx(lbl_1_bss_33C, 0x68, 2, 0x13, -1, fn_1_DBF0); + omMakeGroupEx(lbl_1_bss_33C, 2, 2); + lbl_1_bss_130 = omGetGroupMemberListEx(lbl_1_bss_33C, 2); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r28 = omAddObjEx(lbl_1_bss_33C, 0x69, 5, 0xF, 2, fn_1_11D5C); + var_r28->work[0] = var_r31; + } + lbl_1_bss_358.unk04 = NULL; + lbl_1_bss_358.unk08 = NULL; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_2C[var_r31] = Hu3DModelCreateFile(lbl_1_data_F5C[var_r31]); + Hu3DModelAttrSet(lbl_1_bss_2C[var_r31], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_2C[var_r31], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + lbl_1_bss_28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M450, 0x6C)); + HuSprAnimLock(lbl_1_bss_28); + lbl_1_bss_24 = Hu3DParManCreate(lbl_1_bss_28, 0x14, &lbl_1_data_1504); + Hu3DParManAttrSet(lbl_1_bss_24, 1); + lbl_1_bss_1A4 = omAddObjEx(lbl_1_bss_33C, 0x6E, 0, 0, -1, fn_1_24620); + lbl_1_bss_1A4->work[0] = 0x3E9; + lbl_1_bss_128 = 0.0f; +} + +void fn_1_298EC(omObjData *object) +{ + s32 var_r31; + + if (WipeStatGet() == 0) { + if (lbl_1_bss_2FE >= 0) { + MGSeqKill(lbl_1_bss_2FE); + } + if (lbl_1_bss_2FC >= 0) { + MGSeqKill(lbl_1_bss_2FC); + } + MGSeqKillAll(); + HuAudAllStop(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[var_r31].character]); + } + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m451Dll/m451.c b/src/REL/m451Dll/m451.c index 423baf5e..4f55107a 100644 --- a/src/REL/m451Dll/m451.c +++ b/src/REL/m451Dll/m451.c @@ -1,53 +1,51 @@ -#include "game/frand.h" -#include "game/object.h" -#include "game/hsfman.h" -#include "game/wipe.h" -#include "game/sprite.h" #include "game/audio.h" +#include "game/frand.h" #include "game/hsfanim.h" +#include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/object.h" #include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" -#include "math.h" #include "ext_math.h" +#include "math.h" -#include "game/objsub.h" #include "game/gamework.h" +#include "game/objsub.h" #include "game/gamework_data.h" -#include "rel_sqrt_consts.h" - typedef struct bss_348_data { - s16 unk0[5]; - s16 unkA; - s16 unkC[20]; - s32 unk34; - s32 unk38; - s32 unk3C; - s32 unk40; - s32 unk44; - float unk48[9]; - HsfObject *unk6C[40]; - HsfObject *unk10C[40]; - HsfObject *unk1AC[40]; - HsfTransform unk24C[40]; - u32 unk7EC[2]; - s8 unk7F4; - s8 unk7F5; - s8 unk7F6; - s8 unk7F7; - u16 unk7F8; - s16 unk7FA[5]; - s32 unk804; - s32 unk808; + s16 unk0[5]; + s16 unkA; + s16 unkC[20]; + s32 unk34; + s32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + float unk48[9]; + HsfObject *unk6C[40]; + HsfObject *unk10C[40]; + HsfObject *unk1AC[40]; + HsfTransform unk24C[40]; + u32 unk7EC[2]; + s8 unk7F4; + s8 unk7F5; + s8 unk7F6; + s8 unk7F7; + u16 unk7F8; + s16 unk7FA[5]; + s32 unk804; + s32 unk808; } Bss348Data; typedef struct camera_view_params { - Vec rot; - Vec pos; - float zoom; + Vec rot; + Vec pos; + float zoom; } CameraViewParams; s16 lbl_1_bss_CB4; @@ -68,177 +66,157 @@ omObjData *lbl_1_bss_8; Process *lbl_1_bss_4[1]; s32 lbl_1_bss_0; +CameraViewParams lbl_1_data_0[3] + = { { { -64, 0, 0 }, { 0, 0, 0 }, 5000 }, { { -9.5, 0, 0 }, { 0, 0, -510 }, 1860 }, { { -5, 0, 0 }, { 0, 0, -2870 }, 5060 } }; -CameraViewParams lbl_1_data_0[3] = { - { { -64, 0, 0 }, { 0, 0, 0 }, 5000 }, - { { -9.5, 0, 0 }, { 0, 0, -510 }, 1860 }, - { { -5, 0, 0 }, { 0, 0, -2870 }, 5060 } -}; +s32 lbl_1_data_54[3] = { DATA_MAKE_NUM(DATADIR_M451, 0x01), DATA_MAKE_NUM(DATADIR_M451, 0x02), DATA_MAKE_NUM(DATADIR_M451, 0x03) }; -s32 lbl_1_data_54[3] = { - 0x520001, - 0x520002, - 0x520003 -}; +s32 lbl_1_data_60[3] = { DATA_MAKE_NUM(DATADIR_M451, 0x05), DATA_MAKE_NUM(DATADIR_M451, 0x06), DATA_MAKE_NUM(DATADIR_M451, 0x07) }; -s32 lbl_1_data_60[3] = { - 0x520005, - 0x520006, - 0x520007 -}; - -char *lbl_1_data_78[3] = { - "puzzle00", - "puzzle00", - "puzzle00" -}; +char *lbl_1_data_78[3] = { "puzzle00", "puzzle00", "puzzle00" }; char *lbl_1_data_464[3][40] = { - { - "puzzle2001", - "puzzle2002", - "puzzle2003", - "puzzle2004", - "puzzle2005", - "puzzle2006", - "puzzle2007", - "puzzle2008", - "puzzle2009", - "puzzle2010", - "puzzle2011", - "puzzle2012", - "puzzle2013", - "puzzle2014", - "puzzle2015", - "puzzle2016", - "puzzle2017", - "puzzle2018", - "puzzle2019", - "puzzle2020", - }, - { - "puzzle3001", - "puzzle3002", - "puzzle3003", - "puzzle3004", - "puzzle3005", - "puzzle3006", - "puzzle3007", - "puzzle3008", - "puzzle3009", - "puzzle3010", - "puzzle3011", - "puzzle3012", - "puzzle3013", - "puzzle3014", - "puzzle3015", - "puzzle3016", - "puzzle3017", - "puzzle3018", - "puzzle3019", - "puzzle3020", - "puzzle3021", - "puzzle3022", - "puzzle3023", - "puzzle3024", - "puzzle3025", - "puzzle3026", - "puzzle3027", - "puzzle3028", - "puzzle3029", - "puzzle3030", - }, - { - "puzzle4001", - "puzzle4002", - "puzzle4003", - "puzzle4004", - "puzzle4005", - "puzzle4006", - "puzzle4007", - "puzzle4008", - "puzzle4009", - "puzzle4010", - "puzzle4011", - "puzzle4012", - "puzzle4013", - "puzzle4014", - "puzzle4015", - "puzzle4016", - "puzzle4017", - "puzzle4018", - "puzzle4019", - "puzzle4020", - "puzzle4021", - "puzzle4022", - "puzzle4023", - "puzzle4024", - "puzzle4025", - "puzzle4026", - "puzzle4027", - "puzzle4028", - "puzzle4029", - "puzzle4030", - "puzzle4031", - "puzzle4032", - "puzzle4033", - "puzzle4034", - "puzzle4035", - "puzzle4036", - "puzzle4037", - "puzzle4038", - "puzzle4039", - "puzzle4040", - }, + { + "puzzle2001", + "puzzle2002", + "puzzle2003", + "puzzle2004", + "puzzle2005", + "puzzle2006", + "puzzle2007", + "puzzle2008", + "puzzle2009", + "puzzle2010", + "puzzle2011", + "puzzle2012", + "puzzle2013", + "puzzle2014", + "puzzle2015", + "puzzle2016", + "puzzle2017", + "puzzle2018", + "puzzle2019", + "puzzle2020", + }, + { + "puzzle3001", + "puzzle3002", + "puzzle3003", + "puzzle3004", + "puzzle3005", + "puzzle3006", + "puzzle3007", + "puzzle3008", + "puzzle3009", + "puzzle3010", + "puzzle3011", + "puzzle3012", + "puzzle3013", + "puzzle3014", + "puzzle3015", + "puzzle3016", + "puzzle3017", + "puzzle3018", + "puzzle3019", + "puzzle3020", + "puzzle3021", + "puzzle3022", + "puzzle3023", + "puzzle3024", + "puzzle3025", + "puzzle3026", + "puzzle3027", + "puzzle3028", + "puzzle3029", + "puzzle3030", + }, + { + "puzzle4001", + "puzzle4002", + "puzzle4003", + "puzzle4004", + "puzzle4005", + "puzzle4006", + "puzzle4007", + "puzzle4008", + "puzzle4009", + "puzzle4010", + "puzzle4011", + "puzzle4012", + "puzzle4013", + "puzzle4014", + "puzzle4015", + "puzzle4016", + "puzzle4017", + "puzzle4018", + "puzzle4019", + "puzzle4020", + "puzzle4021", + "puzzle4022", + "puzzle4023", + "puzzle4024", + "puzzle4025", + "puzzle4026", + "puzzle4027", + "puzzle4028", + "puzzle4029", + "puzzle4030", + "puzzle4031", + "puzzle4032", + "puzzle4033", + "puzzle4034", + "puzzle4035", + "puzzle4036", + "puzzle4037", + "puzzle4038", + "puzzle4039", + "puzzle4040", + }, }; s32 lbl_1_data_644[] = { - 0, 1, 2, 3, - 4, 5, 6, 7, - 0x5E0000, 0x190000, 0x6C0000, 0x890000, - 0x840000, 0x100000, 0x0C0000, 0x800000, - 0x5F0000, 0x5F0001, 0x5F0002, 0x5F0005, - 0x5F0006, 0x5F001B, 0x5F0020, 0x5F0021, - 0x5F0017, 0x5F0000, 0x1A0000, 0x6D0000, - 0x8A0000, 0x850000, 0x110000, 0x0D0000, - 0x810000, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x01), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x20), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x21), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), }; -s32 lbl_1_data_6C8[] = { - 6, - 7, - 8 -}; +s32 lbl_1_data_6C8[] = { 6, 7, 8 }; -float lbl_1_data_6D4[][2] = { - -52, -9, - 53, -8, - 35, -8, - 23, -8, - 9, -8, - -9, -8, - -17, -8, - -31, -8, - 53, 8, - 35, 8, - 23, 8, - 9, 8, - -9, 8, - -17, 8, - -31, 8 -}; +float lbl_1_data_6D4[][2] = { -52, -9, 53, -8, 35, -8, 23, -8, 9, -8, -9, -8, -17, -8, -31, -8, 53, 8, 35, 8, 23, 8, 9, 8, -9, 8, -17, 8, -31, 8 }; -s32 lbl_1_data_74C[] = { - 3600, - 7200, - 10800 -}; +s32 lbl_1_data_74C[] = { 3600, 7200, 10800 }; -s32 lbl_1_data_758[] = { - 58, - 54, - 48 -}; +s32 lbl_1_data_758[] = { 58, 54, 48 }; void fn_1_7BC(void); void fn_1_B2C(void); @@ -246,141 +224,143 @@ void fn_1_48C4(void); void ObjectSetup(void) { - Vec pos; - Vec up; - Vec target; - s32 i; - Process *objman; - s32 type; - type = GWSystem.mg_type; - lbl_1_bss_B60 = type; - if(type == -1) { - lbl_1_bss_B60 = frandmod(3); - } - lbl_1_bss_B5C = lbl_1_bss_B60; - switch(lbl_1_bss_B5C) { - case 0: - lbl_1_bss_B58 = 20; - break; - - case 1: - lbl_1_bss_B58 = 30; - break; - - default: - lbl_1_bss_B58 = 40; - break; - } - objman = omInitObjMan(50, 8192); - omGameSysInit(objman); - Hu3DCameraCreate(3); - Hu3DCameraPerspectiveSet(1, 15, 20, 25000, 1.2); - Hu3DCameraPerspectiveSet(2, 15, 20, 25000, 1.2); - Hu3DCameraViewportSet(1, 0, 0, 320, 240, 0, 1); - Hu3DCameraViewportSet(2, 0, 0, 640, 480, 0, 1); - Hu3DCameraScissorSet(1, 0, 0, 320, 240); - Hu3DCameraScissorSet(2, 0, 0, 640, 480); - lbl_1_bss_8 = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); - lbl_1_bss_8->work[0] = 2; - for(i=0; i<1; i++) { - CRotM[i].x = lbl_1_data_0[lbl_1_bss_B60].rot.x; - CRotM[i].y = lbl_1_data_0[lbl_1_bss_B60].rot.y; - CRotM[i].z = lbl_1_data_0[lbl_1_bss_B60].rot.z; - CenterM[i].x = lbl_1_data_0[lbl_1_bss_B60].pos.x; - CenterM[i].y = lbl_1_data_0[lbl_1_bss_B60].pos.y; - CenterM[i].z = lbl_1_data_0[lbl_1_bss_B60].pos.z; - CZoomM[i] = lbl_1_data_0[lbl_1_bss_B60].zoom; - } - for(i=1; iwork[0]; i++) { - CRotM[i].x = 0; - CRotM[i].y = 0; - CRotM[i].z = 0; - CenterM[i].x = 0; - CenterM[i].y = 10; - CenterM[i].z = 0; - CZoomM[i] = 1900; - } - Hu3DLighInit(); - lbl_1_bss_CB4 = Hu3DGLightCreate(10000, 0, 10000, -1, 0, -1, 255, 255, 255); - Hu3DGLightPosAimSet(lbl_1_bss_CB4, 0, 6796.88f, 9706.95f, 0, 0, 0); - Hu3DGLightInfinitytSet(lbl_1_bss_CB4); - pos.x = -1800; - pos.y = 3600; - pos.z = 0; - up.x = up.z = 0; - up.y = 1; - target.x = -100; - target.y = 0; - target.z = 0; - Hu3DShadowCreate(30, 20, 10000); - Hu3DShadowTPLvlSet(0.4f); - Hu3DShadowPosSet(&pos, &up, &target); - Hu3DBGColorSet(0, 0, 0); - fn_1_B2C(); - HuPrcSetStat(HuPrcChildCreate(fn_1_7BC, 4096, 4096, 0, HuPrcCurrentGet()), 12); - HuPrcChildCreate(fn_1_48C4, 4096, 8192, 0, HuPrcCurrentGet()); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + Vec pos; + Vec up; + Vec target; + s32 i; + Process *objman; + s32 type; + type = GWSystem.mg_type; + lbl_1_bss_B60 = type; + if (type == -1) { + lbl_1_bss_B60 = frandmod(3); + } + lbl_1_bss_B5C = lbl_1_bss_B60; + switch (lbl_1_bss_B5C) { + case 0: + lbl_1_bss_B58 = 20; + break; + + case 1: + lbl_1_bss_B58 = 30; + break; + + default: + lbl_1_bss_B58 = 40; + break; + } + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(1, 15, 20, 25000, 1.2); + Hu3DCameraPerspectiveSet(2, 15, 20, 25000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 320, 240, 0, 1); + Hu3DCameraViewportSet(2, 0, 0, 640, 480, 0, 1); + Hu3DCameraScissorSet(1, 0, 0, 320, 240); + Hu3DCameraScissorSet(2, 0, 0, 640, 480); + lbl_1_bss_8 = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); + lbl_1_bss_8->work[0] = 2; + for (i = 0; i < 1; i++) { + CRotM[i].x = lbl_1_data_0[lbl_1_bss_B60].rot.x; + CRotM[i].y = lbl_1_data_0[lbl_1_bss_B60].rot.y; + CRotM[i].z = lbl_1_data_0[lbl_1_bss_B60].rot.z; + CenterM[i].x = lbl_1_data_0[lbl_1_bss_B60].pos.x; + CenterM[i].y = lbl_1_data_0[lbl_1_bss_B60].pos.y; + CenterM[i].z = lbl_1_data_0[lbl_1_bss_B60].pos.z; + CZoomM[i] = lbl_1_data_0[lbl_1_bss_B60].zoom; + } + for (i = 1; i < lbl_1_bss_8->work[0]; i++) { + CRotM[i].x = 0; + CRotM[i].y = 0; + CRotM[i].z = 0; + CenterM[i].x = 0; + CenterM[i].y = 10; + CenterM[i].z = 0; + CZoomM[i] = 1900; + } + Hu3DLighInit(); + lbl_1_bss_CB4 = Hu3DGLightCreate(10000, 0, 10000, -1, 0, -1, 255, 255, 255); + Hu3DGLightPosAimSet(lbl_1_bss_CB4, 0, 6796.88f, 9706.95f, 0, 0, 0); + Hu3DGLightInfinitytSet(lbl_1_bss_CB4); + pos.x = -1800; + pos.y = 3600; + pos.z = 0; + up.x = up.z = 0; + up.y = 1; + target.x = -100; + target.y = 0; + target.z = 0; + Hu3DShadowCreate(30, 20, 10000); + Hu3DShadowTPLvlSet(0.4f); + Hu3DShadowPosSet(&pos, &up, &target); + Hu3DBGColorSet(0, 0, 0); + fn_1_B2C(); + HuPrcSetStat(HuPrcChildCreate(fn_1_7BC, 4096, 4096, 0, HuPrcCurrentGet()), 12); + HuPrcChildCreate(fn_1_48C4, 4096, 8192, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); } void fn_1_7BC(void) { - Bss348Data *data = &lbl_1_bss_348[0]; - while(1) { - if(omPauseChk()) { - Hu3DModelAttrSet(data->unk0[0], 1); - Hu3DModelAttrSet(data->unk0[1], 1); - Hu3DModelAttrSet(data->unk0[2], 1); - HuSprAttrSet(data->unkA, 0, HUSPR_ATTR_DISPOFF); - } else { - Hu3DModelAttrReset(data->unk0[0], 1); - Hu3DModelAttrReset(data->unk0[1], 1); - Hu3DModelAttrReset(data->unk0[2], 1); - HuSprAttrReset(data->unkA, 0, HUSPR_ATTR_DISPOFF); - } - HuPrcVSleep(); - } + Bss348Data *data = &lbl_1_bss_348[0]; + while (1) { + if (omPauseChk()) { + Hu3DModelAttrSet(data->unk0[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(data->unk0[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(data->unk0[2], HU3D_ATTR_DISPOFF); + HuSprAttrSet(data->unkA, 0, HUSPR_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(data->unk0[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(data->unk0[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(data->unk0[2], HU3D_ATTR_DISPOFF); + HuSprAttrReset(data->unkA, 0, HUSPR_ATTR_DISPOFF); + } + HuPrcVSleep(); + } } void fn_1_858(void) { - s32 i; - float angle = 0; - while(1) { - float scale; - angle += 16.0f; - scale = (0.2f*sind(angle))+1.0; - for(i=0; i<8; i++) { - HuSprScaleSet(lbl_1_bss_CAE, i+1, scale, scale); - } - HuPrcVSleep(); - } + s32 i; + float angle = 0; + while (1) { + float scale; + angle += 16.0f; + scale = (0.2f * sind(angle)) + 1.0; + for (i = 0; i < 8; i++) { + HuSprScaleSet(lbl_1_bss_CAE, i + 1, scale, scale); + } + HuPrcVSleep(); + } } void fn_1_918(s16 group, s16 base_member, u32 value, s32 state) { - s32 member; - u32 time[3]; - if(state != 2) { - time[0] = (value % 60); - value = (value-time[0])/60; - time[0] = 100.0f*(time[0]/60.0f); - time[1] = value%60; - value = (value-time[1])/60; - time[2] = value; - } else { - time[0] = 99; - time[1] = 59; - time[2] = 9; - } - member = base_member; - if(state != 0) { - member += 7; - } - HuSprBankSet(group, member, time[0]%10); - HuSprBankSet(group, member+1, time[0]/10); - HuSprBankSet(group, member+3, time[1]%10); - HuSprBankSet(group, member+4, time[1]/10); - HuSprBankSet(group, member+6, time[2]%10); + s32 member; + u32 time[3]; + if (state != 2) { + time[0] = (value % 60); + value = (value - time[0]) / 60; + time[0] = 100.0f * (time[0] / 60.0f); + time[1] = value % 60; + value = (value - time[1]) / 60; + time[2] = value; + } + else { + time[0] = 99; + time[1] = 59; + time[2] = 9; + } + member = base_member; + if (state != 0) { + member += 7; + } + HuSprBankSet(group, member, time[0] % 10); + HuSprBankSet(group, member + 1, time[0] / 10); + HuSprBankSet(group, member + 3, time[1] % 10); + HuSprBankSet(group, member + 4, time[1] / 10); + HuSprBankSet(group, member + 6, time[2] % 10); } void fn_1_1B64(ModelData *model, ParticleData *particle, Mtx matrix); @@ -389,1030 +369,1054 @@ void fn_1_4864(void); void fn_1_B2C(void) { - Bss348Data *temp_r31; - s32 temp_r30; - void *temp_r29; - s32 temp_r28; - HsfTransform *temp_r27; - s16 temp_r26; - HsfTransform *temp_r25; - Process *temp_r18; - s32 temp_r17; - AnimData *sp2C[4]; - s32 sp10; - AnimData *spC; - AnimData *sp8; - HuAudSndGrpSet(36); - for(temp_r30=0; temp_r30<1; temp_r30++) { - temp_r31 = &lbl_1_bss_348[temp_r30]; - temp_r31->unk34 = temp_r30; - temp_r31->unk3C = GWPlayerCfg[temp_r30].pad_idx; - temp_r31->unk38 = temp_r30+1; - temp_r31->unk44 = 0; - temp_r31->unk804 = -1; - temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); - temp_r31->unk0[0] = Hu3DModelCreate(temp_r29); - temp_r29 = HuDataSelHeapReadNum(lbl_1_data_60[lbl_1_bss_B60], MEMORY_DEFAULT_NUM, HEAP_DATA); - Hu3DAnimCreate(temp_r29, temp_r31->unk0[0], lbl_1_data_78[lbl_1_bss_B5C]); - Hu3DModelCameraSet(temp_r31->unk0[0], 1 << temp_r31->unk38); - Hu3DModelPosSet(temp_r31->unk0[0], 0, 0, 0); - Hu3DModelRotSet(temp_r31->unk0[0], 0, 0, 0); - Hu3DModelAttrSet(temp_r31->unk0[0], 0x4000); - temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); - temp_r31->unk0[1] = Hu3DModelCreate(temp_r29); - temp_r29 = HuDataSelHeapReadNum(0x52000D, MEMORY_DEFAULT_NUM, HEAP_DATA); - Hu3DAnimCreate(temp_r29, temp_r31->unk0[1], lbl_1_data_78[lbl_1_bss_B5C]); - Hu3DModelCameraSet(temp_r31->unk0[1], 1 << temp_r31->unk38); - Hu3DModelPosSet(temp_r31->unk0[1], 0, 0, 0); - Hu3DModelRotSet(temp_r31->unk0[1], 0, 0, 0); - temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); - temp_r31->unk0[2] = Hu3DModelCreate(temp_r29); - Hu3DModelCameraSet(temp_r31->unk0[2], 1 << temp_r31->unk38); - Hu3DModelPosSet(temp_r31->unk0[2], 0, 0, 0); - Hu3DModelRotSet(temp_r31->unk0[2], 0, 0, 0); - Hu3DModelTPLvlSet(temp_r31->unk0[2], 128); - Hu3DModelAttrSet(temp_r31->unk0[2], 0x4000); - for(temp_r28=0; temp_r28unk6C[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[0], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); - if(!temp_r31->unk6C[temp_r28]) { - OSReport("PeaceNo %d\n", lbl_1_bss_B5C); - OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); - OSPanic("m451.c", 543, "ObjPtr1"); - } - temp_r25 = &temp_r31->unk24C[temp_r28]; - temp_r27 = &temp_r31->unk6C[temp_r28]->data.base; - temp_r27->pos.z += -10; - temp_r25->pos.x = temp_r27->pos.x; - temp_r25->pos.y = temp_r27->pos.y; - temp_r25->pos.z = temp_r27->pos.z; - temp_r25->rot.x = temp_r27->rot.x; - temp_r25->rot.y = temp_r27->rot.y; - temp_r25->rot.z = temp_r27->rot.z; - temp_r25->scale.x = temp_r27->scale.x; - temp_r25->scale.y = temp_r27->scale.y; - temp_r25->scale.z = temp_r27->scale.z; - temp_r31->unk10C[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[2], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); - if(!temp_r31->unk10C[temp_r28]) { - OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); - OSPanic("m451.c", 555, "ObjPtr2"); - } - temp_r31->unk1AC[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[1], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); - if(!temp_r31->unk1AC[temp_r28]) { - OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); - OSPanic("m451.c", 561, "ObjPtr3"); - } - } - temp_r29 = HuDataSelHeapReadNum(0x520000, MEMORY_DEFAULT_NUM, HEAP_DATA); - temp_r26 = Hu3DModelCreate(temp_r29); - Hu3DModelCameraSet(temp_r26, 1 << temp_r31->unk38); - Hu3DModelPosSet(temp_r26, 0, 0, 0); - Hu3DModelRotSet(temp_r26, 0, 0, 0); - temp_r29 = HuDataSelHeapReadNum(0x520004, MEMORY_DEFAULT_NUM, HEAP_DATA); - temp_r31->unk0[4] = Hu3DModelCreate(temp_r29); - Hu3DModelCameraSet(temp_r31->unk0[4], 1 << temp_r31->unk38); - Hu3DModelPosSet(temp_r31->unk0[4], 0, 0, 0); - Hu3DModelRotSet(temp_r31->unk0[4], 0, 0, 0); - temp_r29 = HuDataSelHeapReadNum(0x520008+lbl_1_bss_B5C, MEMORY_DEFAULT_NUM, HEAP_DATA); - Hu3DAnimCreate(temp_r29, temp_r31->unk0[4], "s3puzzle00"); - temp_r29 = HuDataSelHeapReadNum(0x610038+GWPlayerCfg[temp_r30].character, MEMORY_DEFAULT_NUM, HEAP_DATA); - spC = HuSprAnimRead(temp_r29); - temp_r26 = HuSprCreate(spC, 16384, 0); - temp_r31->unkA = HuSprGrpCreate(1); - HuSprGrpMemberSet(temp_r31->unkA, 0, temp_r26); - HuSprAttrSet(temp_r31->unkA, 0, 7); - sp8 = HuSprAnimRead(HuDataReadNum(0x52000C, MEMORY_DEFAULT_NUM)); - temp_r26 = Hu3DParticleCreate(sp8, 100); - Hu3DModelPosSet(temp_r26, 0, 0, 0); - Hu3DModelScaleSet(temp_r26, 1, 1, 1); - Hu3DModelLayerSet(temp_r26, 1); - Hu3DParticleHookSet(temp_r26, fn_1_1B64); - Hu3DModelCameraSet(temp_r26, 1 << temp_r31->unk38); - temp_r18 = HuPrcChildCreate(fn_1_37C4, 8192, 12288, 0, HuPrcCurrentGet()); - temp_r18->user_data = temp_r31; - lbl_1_bss_4[temp_r30] = temp_r18; - } - temp_r29 = HuDataSelHeapReadNum(0x610030, MEMORY_DEFAULT_NUM, HEAP_DATA); - sp2C[0] = HuSprAnimRead(temp_r29); - temp_r29 = HuDataSelHeapReadNum(0x610031, MEMORY_DEFAULT_NUM, HEAP_DATA); - sp2C[1] = HuSprAnimRead(temp_r29); - temp_r29 = HuDataSelHeapReadNum(0x610037, MEMORY_DEFAULT_NUM, HEAP_DATA); - sp2C[2] = HuSprAnimRead(temp_r29); - temp_r29 = HuDataSelHeapReadNum(0x52000B, MEMORY_DEFAULT_NUM, HEAP_DATA); - sp2C[3] = HuSprAnimRead(temp_r29); - lbl_1_bss_CAE = HuSprGrpCreate(16); - temp_r26 = HuSprCreate(sp2C[3], 16385, 0); - HuSprGrpMemberSet(lbl_1_bss_CAE, 0, temp_r26); - HuSprPosSet(lbl_1_bss_CAE, 0, 0, 0); - HuSprTPLvlSet(lbl_1_bss_CAE, 0, 0.5f); - HuSprColorSet(lbl_1_bss_CAE, 0, 0, 0, 0); - for(temp_r30=0; temp_r30<14; temp_r30++) { - if(temp_r30 >= 7) { - temp_r26 = HuSprCreate(sp2C[1], 16384, 0); - } else { - temp_r26 = HuSprCreate(sp2C[0], 16384, 0); - } - HuSprGrpMemberSet(lbl_1_bss_CAE, temp_r30+2, temp_r26); - HuSprPosSet(lbl_1_bss_CAE, temp_r30+2, lbl_1_data_6D4[temp_r30+1][0], lbl_1_data_6D4[temp_r30+1][1]); - temp_r28 = 0; - if(temp_r30 == 2 || temp_r30 == 9) { - temp_r28 = 11; - } - if(temp_r30 == 5 || temp_r30 == 12) { - temp_r28 = 10; - } - HuSprBankSet(lbl_1_bss_CAE, temp_r30+2, temp_r28); - } - temp_r26 = HuSprCreate(sp2C[2], 16384, 0); - HuSprGrpMemberSet(lbl_1_bss_CAE, 1, temp_r26); - HuSprPosSet(lbl_1_bss_CAE, 1, lbl_1_data_6D4[0][0], lbl_1_data_6D4[0][1]); - HuSprGrpPosSet(lbl_1_bss_CAE, 280, 61); - fn_1_918(lbl_1_bss_CAE, 2, GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C]), 0); - fn_1_918(lbl_1_bss_CAE, 2, 0, 1); - for(temp_r30=0; temp_r30unk34 = temp_r30; + temp_r31->unk3C = GWPlayerCfg[temp_r30].pad_idx; + temp_r31->unk38 = temp_r30 + 1; + temp_r31->unk44 = 0; + temp_r31->unk804 = -1; + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[0] = Hu3DModelCreate(temp_r29); + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_60[lbl_1_bss_B60], MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(temp_r29, temp_r31->unk0[0], lbl_1_data_78[lbl_1_bss_B5C]); + Hu3DModelCameraSet(temp_r31->unk0[0], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[0], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[0], 0, 0, 0); + Hu3DModelAttrSet(temp_r31->unk0[0], HU3D_ATTR_NOCULL); + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[1] = Hu3DModelCreate(temp_r29); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M451, 0x0D), MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(temp_r29, temp_r31->unk0[1], lbl_1_data_78[lbl_1_bss_B5C]); + Hu3DModelCameraSet(temp_r31->unk0[1], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[1], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[1], 0, 0, 0); + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[2] = Hu3DModelCreate(temp_r29); + Hu3DModelCameraSet(temp_r31->unk0[2], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[2], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[2], 0, 0, 0); + Hu3DModelTPLvlSet(temp_r31->unk0[2], 128); + Hu3DModelAttrSet(temp_r31->unk0[2], HU3D_ATTR_NOCULL); + for (temp_r28 = 0; temp_r28 < lbl_1_bss_B58; temp_r28++) { + temp_r31->unk6C[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[0], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + if (!temp_r31->unk6C[temp_r28]) { + OSReport("PeaceNo %d\n", lbl_1_bss_B5C); + OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + OSPanic("m451.c", 543, "ObjPtr1"); + } + temp_r25 = &temp_r31->unk24C[temp_r28]; + temp_r27 = &temp_r31->unk6C[temp_r28]->data.base; + temp_r27->pos.z += -10; + temp_r25->pos.x = temp_r27->pos.x; + temp_r25->pos.y = temp_r27->pos.y; + temp_r25->pos.z = temp_r27->pos.z; + temp_r25->rot.x = temp_r27->rot.x; + temp_r25->rot.y = temp_r27->rot.y; + temp_r25->rot.z = temp_r27->rot.z; + temp_r25->scale.x = temp_r27->scale.x; + temp_r25->scale.y = temp_r27->scale.y; + temp_r25->scale.z = temp_r27->scale.z; + temp_r31->unk10C[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[2], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + if (!temp_r31->unk10C[temp_r28]) { + OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + OSPanic("m451.c", 555, "ObjPtr2"); + } + temp_r31->unk1AC[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[1], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + if (!temp_r31->unk1AC[temp_r28]) { + OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + OSPanic("m451.c", 561, "ObjPtr3"); + } + } + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M451, 0x00), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26 = Hu3DModelCreate(temp_r29); + Hu3DModelCameraSet(temp_r26, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r26, 0, 0, 0); + Hu3DModelRotSet(temp_r26, 0, 0, 0); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M451, 0x04), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[4] = Hu3DModelCreate(temp_r29); + Hu3DModelCameraSet(temp_r31->unk0[4], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[4], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[4], 0, 0, 0); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M451, 0x08) + lbl_1_bss_B5C, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(temp_r29, temp_r31->unk0[4], "s3puzzle00"); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x38) + GWPlayerCfg[temp_r30].character, MEMORY_DEFAULT_NUM, HEAP_DATA); + spC = HuSprAnimRead(temp_r29); + temp_r26 = HuSprCreate(spC, 16384, 0); + temp_r31->unkA = HuSprGrpCreate(1); + HuSprGrpMemberSet(temp_r31->unkA, 0, temp_r26); + HuSprAttrSet(temp_r31->unkA, 0, 7); + sp8 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M451, 0x0C), MEMORY_DEFAULT_NUM)); + temp_r26 = Hu3DParticleCreate(sp8, 100); + Hu3DModelPosSet(temp_r26, 0, 0, 0); + Hu3DModelScaleSet(temp_r26, 1, 1, 1); + Hu3DModelLayerSet(temp_r26, 1); + Hu3DParticleHookSet(temp_r26, fn_1_1B64); + Hu3DModelCameraSet(temp_r26, 1 << temp_r31->unk38); + temp_r18 = HuPrcChildCreate(fn_1_37C4, 8192, 12288, 0, HuPrcCurrentGet()); + temp_r18->user_data = temp_r31; + lbl_1_bss_4[temp_r30] = temp_r18; + } + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x30), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[0] = HuSprAnimRead(temp_r29); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x31), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[1] = HuSprAnimRead(temp_r29); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 0x37), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[2] = HuSprAnimRead(temp_r29); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M451, 0x0B), MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[3] = HuSprAnimRead(temp_r29); + lbl_1_bss_CAE = HuSprGrpCreate(16); + temp_r26 = HuSprCreate(sp2C[3], 16385, 0); + HuSprGrpMemberSet(lbl_1_bss_CAE, 0, temp_r26); + HuSprPosSet(lbl_1_bss_CAE, 0, 0, 0); + HuSprTPLvlSet(lbl_1_bss_CAE, 0, 0.5f); + HuSprColorSet(lbl_1_bss_CAE, 0, 0, 0, 0); + for (temp_r30 = 0; temp_r30 < 14; temp_r30++) { + if (temp_r30 >= 7) { + temp_r26 = HuSprCreate(sp2C[1], 16384, 0); + } + else { + temp_r26 = HuSprCreate(sp2C[0], 16384, 0); + } + HuSprGrpMemberSet(lbl_1_bss_CAE, temp_r30 + 2, temp_r26); + HuSprPosSet(lbl_1_bss_CAE, temp_r30 + 2, lbl_1_data_6D4[temp_r30 + 1][0], lbl_1_data_6D4[temp_r30 + 1][1]); + temp_r28 = 0; + if (temp_r30 == 2 || temp_r30 == 9) { + temp_r28 = 11; + } + if (temp_r30 == 5 || temp_r30 == 12) { + temp_r28 = 10; + } + HuSprBankSet(lbl_1_bss_CAE, temp_r30 + 2, temp_r28); + } + temp_r26 = HuSprCreate(sp2C[2], 16384, 0); + HuSprGrpMemberSet(lbl_1_bss_CAE, 1, temp_r26); + HuSprPosSet(lbl_1_bss_CAE, 1, lbl_1_data_6D4[0][0], lbl_1_data_6D4[0][1]); + HuSprGrpPosSet(lbl_1_bss_CAE, 280, 61); + fn_1_918(lbl_1_bss_CAE, 2, GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C]), 0); + fn_1_918(lbl_1_bss_CAE, 2, 0, 1); + for (temp_r30 = 0; temp_r30 < lbl_1_bss_B58; temp_r30++) { + lbl_1_bss_C04[temp_r30] = temp_r30; + lbl_1_bss_B64[temp_r30] = frandmod(4); + } + for (temp_r30 = 0; temp_r30 < 50; temp_r30++) { + temp_r28 = frandmod(lbl_1_bss_B58); + temp_r17 = frandmod(lbl_1_bss_B58); + sp10 = lbl_1_bss_C04[temp_r28]; + lbl_1_bss_C04[temp_r28] = lbl_1_bss_C04[temp_r17]; + lbl_1_bss_C04[temp_r17] = sp10; + } + HuPrcChildCreate(fn_1_4864, 4096, 4096, 0, HuPrcCurrentGet()); } void fn_1_1B64(ModelData *model, ParticleData *particle, Mtx matrix) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - - HsfanimStruct01 *temp_r31; - s16 temp_r29; - Bss348Data *temp_r28; - s16 temp_r27; - s16 temp_r26; - s32 temp_r25; - - if(particle->unk_34 == 0) { - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - temp_r31->unk14.x = temp_r31->unk2C = 0; - temp_r31->unk40.r = 255; - temp_r31->unk40.g = 255; - temp_r31->unk40.b = 0; - } - } - temp_r31 = particle->unk_48; - temp_r28 = &lbl_1_bss_348[0]; - if(temp_r28->unk44 == 1) { - for(temp_r27=0; temp_r27<4; temp_r27++) { - temp_f28 = 1.0f; - for(temp_r26=0, temp_f30=0; temp_r26<24; temp_r26++, temp_f30 += 15.0f) { - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(0.0f == temp_r31->unk14.x) { - break; - } - } - if(temp_r29 == particle->unk_30) { - break; - } - temp_f31 = temp_f30; - temp_f29 = temp_f28+(5.0f*frandf()); - temp_r31->unk34.x = temp_r28->unk48[7]+((temp_r27*10.0f)*sind(temp_f31)); - temp_r31->unk34.y = temp_r28->unk48[8]+((temp_r27*10.0f)*cosd(temp_f31)); - temp_r31->unk34.z = 50; - temp_r31->unk08.x = temp_f29*sind(temp_f31); - temp_r31->unk08.y = temp_f29*cosd(temp_f31); - temp_r31->unk08.z = 0; - temp_r31->unk14.x = 30.0f; - temp_r31->unk14.y = 360.0f*frandf(); - temp_r31->unk14.z = 225; - temp_r31->unk2C = (5.0f*frandf())+25.0f; - temp_r31->unk40.r = 255; - temp_r31->unk40.g = 255; - temp_r31->unk40.b = 0; - temp_r31->unk40.a = 255; - - } - } - temp_r28->unk44++; - DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - } - temp_r31 = particle->unk_48; - for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { - if(0.0f == temp_r31->unk14.x) { - continue; - } - VECAdd(&temp_r31->unk08, &temp_r31->unk34, &temp_r31->unk34); - temp_r31->unk08.x *= 0.95f; - temp_r31->unk08.y *= 0.95f; - temp_r31->unk14.y += 20.0f; - if(temp_r31->unk14.y >= 180.0f && temp_r31->unk14.y < 200.0f) { - temp_r31->unk14.z *= 0.4f; - } - if(temp_r31->unk14.y >= 360.0f && temp_r31->unk14.y < 380.0f) { - temp_r31->unk14.z *= 0.4f; - } - if(temp_r31->unk14.y >= 360.0f) { - temp_r31->unk14.y -= 360.0f; - } - temp_r25 = (30.0*sind(temp_r31->unk14.y))+temp_r31->unk14.z; - if(temp_r25 < 0) { - temp_r25 = 0; - temp_r31->unk14.x = 0; - } - temp_r31->unk40.a = temp_r25; - if(0.0f == temp_r31->unk14.x) { - temp_r31->unk2C = 0; - } - } - PPCSync(); + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + HsfanimStruct01 *temp_r31; + s16 temp_r29; + Bss348Data *temp_r28; + s16 temp_r27; + s16 temp_r26; + s32 temp_r25; + + if (particle->unk_34 == 0) { + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + temp_r31->unk14.x = temp_r31->unk2C = 0; + temp_r31->unk40.r = 255; + temp_r31->unk40.g = 255; + temp_r31->unk40.b = 0; + } + } + temp_r31 = particle->unk_48; + temp_r28 = &lbl_1_bss_348[0]; + if (temp_r28->unk44 == 1) { + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + temp_f28 = 1.0f; + for (temp_r26 = 0, temp_f30 = 0; temp_r26 < 24; temp_r26++, temp_f30 += 15.0f) { + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (0.0f == temp_r31->unk14.x) { + break; + } + } + if (temp_r29 == particle->unk_30) { + break; + } + temp_f31 = temp_f30; + temp_f29 = temp_f28 + (5.0f * frandf()); + temp_r31->unk34.x = temp_r28->unk48[7] + ((temp_r27 * 10.0f) * sind(temp_f31)); + temp_r31->unk34.y = temp_r28->unk48[8] + ((temp_r27 * 10.0f) * cosd(temp_f31)); + temp_r31->unk34.z = 50; + temp_r31->unk08.x = temp_f29 * sind(temp_f31); + temp_r31->unk08.y = temp_f29 * cosd(temp_f31); + temp_r31->unk08.z = 0; + temp_r31->unk14.x = 30.0f; + temp_r31->unk14.y = 360.0f * frandf(); + temp_r31->unk14.z = 225; + temp_r31->unk2C = (5.0f * frandf()) + 25.0f; + temp_r31->unk40.r = 255; + temp_r31->unk40.g = 255; + temp_r31->unk40.b = 0; + temp_r31->unk40.a = 255; + } + } + temp_r28->unk44++; + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + } + temp_r31 = particle->unk_48; + for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) { + if (0.0f == temp_r31->unk14.x) { + continue; + } + VECAdd(&temp_r31->unk08, &temp_r31->unk34, &temp_r31->unk34); + temp_r31->unk08.x *= 0.95f; + temp_r31->unk08.y *= 0.95f; + temp_r31->unk14.y += 20.0f; + if (temp_r31->unk14.y >= 180.0f && temp_r31->unk14.y < 200.0f) { + temp_r31->unk14.z *= 0.4f; + } + if (temp_r31->unk14.y >= 360.0f && temp_r31->unk14.y < 380.0f) { + temp_r31->unk14.z *= 0.4f; + } + if (temp_r31->unk14.y >= 360.0f) { + temp_r31->unk14.y -= 360.0f; + } + temp_r25 = (30.0 * sind(temp_r31->unk14.y)) + temp_r31->unk14.z; + if (temp_r25 < 0) { + temp_r25 = 0; + temp_r31->unk14.x = 0; + } + temp_r31->unk40.a = temp_r25; + if (0.0f == temp_r31->unk14.x) { + temp_r31->unk2C = 0; + } + } + PPCSync(); } s8 fn_1_20FC(s32 arg0, s32 arg1) { - Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; - s8 temp_r30; - s8 temp_r29; - s8 temp_r28; - if(!GWPlayerCfg[arg0].iscom) { - if(arg1) { - temp_r29 = temp_r30 = HuPadStkY[temp_r31->unk3C]; - } else { - temp_r29 = temp_r30 = HuPadStkX[temp_r31->unk3C]; - } - (void)temp_r29; - } else { - if(arg1) { - temp_r28 = temp_r30 = temp_r31->unk7F5; - } else { - temp_r28 = temp_r30 = temp_r31->unk7F4; - } - } - return temp_r30; + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + s8 temp_r29; + s8 temp_r28; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + temp_r29 = temp_r30 = HuPadStkY[temp_r31->unk3C]; + } + else { + temp_r29 = temp_r30 = HuPadStkX[temp_r31->unk3C]; + } + (void)temp_r29; + } + else { + if (arg1) { + temp_r28 = temp_r30 = temp_r31->unk7F5; + } + else { + temp_r28 = temp_r30 = temp_r31->unk7F4; + } + } + return temp_r30; } u8 fn_1_21B4(s32 arg0, s32 arg1) { - Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; - s8 temp_r30; - s8 temp_r29; - s8 temp_r28; - if(!GWPlayerCfg[arg0].iscom) { - if(arg1) { - temp_r29 = temp_r30 = HuPadTrigR[temp_r31->unk3C]; - } else { - temp_r29 = temp_r30 = HuPadTrigL[temp_r31->unk3C]; - } - (void)temp_r29; - } else { - if(arg1) { - temp_r28 = temp_r30 = temp_r31->unk7F6; - } else { - temp_r28 = temp_r30 = temp_r31->unk7F7; - } - } - return temp_r30; + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + s8 temp_r29; + s8 temp_r28; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + temp_r29 = temp_r30 = HuPadTrigR[temp_r31->unk3C]; + } + else { + temp_r29 = temp_r30 = HuPadTrigL[temp_r31->unk3C]; + } + (void)temp_r29; + } + else { + if (arg1) { + temp_r28 = temp_r30 = temp_r31->unk7F6; + } + else { + temp_r28 = temp_r30 = temp_r31->unk7F7; + } + } + return temp_r30; } static inline s8 fn_1_20FC_inline(s32 arg0, s32 arg1) { - Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; - s8 temp_r30; - if(!GWPlayerCfg[arg0].iscom) { - if(arg1) { - temp_r30 = HuPadStkY[temp_r31->unk3C]; - } else { - temp_r30 = HuPadStkX[temp_r31->unk3C]; - } - } else { - if(arg1) { - temp_r30 = temp_r31->unk7F5; - } else { - temp_r30 = temp_r31->unk7F4; - } - } - return temp_r30; + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + temp_r30 = HuPadStkY[temp_r31->unk3C]; + } + else { + temp_r30 = HuPadStkX[temp_r31->unk3C]; + } + } + else { + if (arg1) { + temp_r30 = temp_r31->unk7F5; + } + else { + temp_r30 = temp_r31->unk7F4; + } + } + return temp_r30; } static inline u8 fn_1_21B4_inline(s32 arg0, s32 arg1) { - Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; - s8 temp_r30; - if(!GWPlayerCfg[arg0].iscom) { - if(arg1) { - temp_r30 = HuPadTrigR[temp_r31->unk3C]; - } else { - temp_r30 = HuPadTrigL[temp_r31->unk3C]; - } - } else { - if(arg1) { - temp_r30 = temp_r31->unk7F6; - } else { - temp_r30 = temp_r31->unk7F7; - } - } - return temp_r30; + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + temp_r30 = HuPadTrigR[temp_r31->unk3C]; + } + else { + temp_r30 = HuPadTrigL[temp_r31->unk3C]; + } + } + else { + if (arg1) { + temp_r30 = temp_r31->unk7F6; + } + else { + temp_r30 = temp_r31->unk7F7; + } + } + return temp_r30; } - u16 fn_1_2274(s32 arg0) { - Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; - u16 temp_r30; - - //Hacks to stop spilling in fn_1_37C4 - (void)temp_r31; - (void)temp_r31; - (void)temp_r31; - (void)temp_r31; - - if(!GWPlayerCfg[arg0].iscom) { - temp_r30 = HuPadBtnDown[temp_r31->unk3C]; - } else { - temp_r30 = temp_r31->unk7F8; - } - return temp_r30; + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + u16 temp_r30; + + // Hacks to stop spilling in fn_1_37C4 + (void)temp_r31; + (void)temp_r31; + (void)temp_r31; + (void)temp_r31; + + if (!GWPlayerCfg[arg0].iscom) { + temp_r30 = HuPadBtnDown[temp_r31->unk3C]; + } + else { + temp_r30 = temp_r31->unk7F8; + } + return temp_r30; } void fn_1_22E0(Bss348Data *arg0, s32 arg1) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - float temp_f27; - - Vec *temp_r31; - Vec *temp_r29; - Vec *temp_r28; - s32 temp_r27; - Vec *temp_r26; - s32 temp_r25; - - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - temp_r31 = &arg0->unk6C[arg1]->data.base.pos; - temp_r26 = &arg0->unk10C[arg1]->data.base.pos; - temp_r28 = &arg0->unk1AC[arg1]->data.base.pos; - temp_r29 = &arg0->unk24C[arg1].pos; - temp_f29 = (temp_r29->x-temp_r31->x)/15.0f; - temp_f27 = (temp_r29->z-temp_r31->z)/30.0f; - temp_f28 = (temp_r29->y-temp_r31->y)/15.0f; - temp_f31 = 20; - temp_f30 = -20; - HuSprAttrSet(arg0->unkA, 0, 64); - omVibrate(arg0->unk34, 12, 6, 6); - temp_r25 =0; - for(temp_r27=0; temp_r27<30; temp_r27++) { - temp_r31->z += temp_f27; - temp_r28->z = temp_r26->z = temp_r31->z-5.0f; - if(temp_r27 < 15) { - temp_r31->x += temp_f29; - temp_r31->y += temp_f28; - temp_r28->x = temp_r31->x; - temp_r28->y = temp_r31->y; - sp2C.x = 30.0f+temp_r31->x; - sp2C.z = 50.0f; - sp2C.y = -30.0f+temp_r31->y; - Hu3D3Dto2D(&sp2C, (1 << arg0->unk38), &sp20); - HuSprGrpPosSet(arg0->unkA, sp20.x, sp20.y); - } - temp_r26->x = temp_r31->x+temp_f31; - temp_r26->y = temp_r31->y+temp_f30; - temp_f31 -= (4.0f/7.0f); - temp_f30 -= (-4.0f/7.0f); - temp_r28->z += 10.0f; - if(temp_r27 < 14) { - temp_r25 += 17; - } else if(temp_r27 < 28) { - temp_r25 -= 17; - } - Hu3DModelTPLvlSet(arg0->unk0[1], 255-temp_r25); - HuPrcVSleep(); - } - temp_r31->x = temp_r29->x; - temp_r31->y = temp_r29->y; - temp_r31->z = temp_r29->z; - sp14.x = 30.0f+temp_r31->x; - sp14.z = 50; - sp14.y = -30.0f+temp_r31->y; - Hu3D3Dto2D(&sp14, (1 << arg0->unk38), &sp8); - HuSprGrpPosSet(arg0->unkA, sp8.x, sp8.y); - temp_r28->x = 5000; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + + Vec *temp_r31; + Vec *temp_r29; + Vec *temp_r28; + s32 temp_r27; + Vec *temp_r26; + s32 temp_r25; + + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + temp_r31 = &arg0->unk6C[arg1]->data.base.pos; + temp_r26 = &arg0->unk10C[arg1]->data.base.pos; + temp_r28 = &arg0->unk1AC[arg1]->data.base.pos; + temp_r29 = &arg0->unk24C[arg1].pos; + temp_f29 = (temp_r29->x - temp_r31->x) / 15.0f; + temp_f27 = (temp_r29->z - temp_r31->z) / 30.0f; + temp_f28 = (temp_r29->y - temp_r31->y) / 15.0f; + temp_f31 = 20; + temp_f30 = -20; + HuSprAttrSet(arg0->unkA, 0, 64); + omVibrate(arg0->unk34, 12, 6, 6); + temp_r25 = 0; + for (temp_r27 = 0; temp_r27 < 30; temp_r27++) { + temp_r31->z += temp_f27; + temp_r28->z = temp_r26->z = temp_r31->z - 5.0f; + if (temp_r27 < 15) { + temp_r31->x += temp_f29; + temp_r31->y += temp_f28; + temp_r28->x = temp_r31->x; + temp_r28->y = temp_r31->y; + sp2C.x = 30.0f + temp_r31->x; + sp2C.z = 50.0f; + sp2C.y = -30.0f + temp_r31->y; + Hu3D3Dto2D(&sp2C, (1 << arg0->unk38), &sp20); + HuSprGrpPosSet(arg0->unkA, sp20.x, sp20.y); + } + temp_r26->x = temp_r31->x + temp_f31; + temp_r26->y = temp_r31->y + temp_f30; + temp_f31 -= (4.0f / 7.0f); + temp_f30 -= (-4.0f / 7.0f); + temp_r28->z += 10.0f; + if (temp_r27 < 14) { + temp_r25 += 17; + } + else if (temp_r27 < 28) { + temp_r25 -= 17; + } + Hu3DModelTPLvlSet(arg0->unk0[1], 255 - temp_r25); + HuPrcVSleep(); + } + temp_r31->x = temp_r29->x; + temp_r31->y = temp_r29->y; + temp_r31->z = temp_r29->z; + sp14.x = 30.0f + temp_r31->x; + sp14.z = 50; + sp14.y = -30.0f + temp_r31->y; + Hu3D3Dto2D(&sp14, (1 << arg0->unk38), &sp8); + HuSprGrpPosSet(arg0->unkA, sp8.x, sp8.y); + temp_r28->x = 5000; } void fn_1_263C(Bss348Data *arg0, s32 arg1) { - HsfTransform *temp_r31; - HsfTransform *temp_r30; - HsfTransform *temp_r29; - float temp_f31; - temp_r31 = &arg0->unk6C[arg1]->data.base; - temp_r29 = &arg0->unk10C[arg1]->data.base; - temp_r30 = &arg0->unk24C[arg1]; - for(temp_f31 = 0; temp_f31<180; temp_f31 += 10) { - temp_r31->scale.x = (temp_r30->scale.x*0.8f)+(0.2f*(temp_r30->scale.x*(1.0-sind(temp_f31)))); - temp_r31->scale.y = (temp_r30->scale.y*0.8f)+(0.2f*(temp_r30->scale.y*(1.0-sind(temp_f31)))); - temp_r31->scale.z = (temp_r30->scale.z*0.8f)+(0.2f*(temp_r30->scale.z*(1.0-sind(temp_f31)))); - temp_r29->scale.x = temp_r31->scale.x; - temp_r29->scale.y = temp_r31->scale.y; - temp_r29->scale.z = 0.8f*temp_r31->scale.z; - HuPrcVSleep(); - } - for(temp_f31 = 180; temp_f31<360; temp_f31 += 20) { - temp_r31->scale.x = (temp_r30->scale.x*0.9f)+(0.1f*(temp_r30->scale.x*(1.0-sind(temp_f31)))); - temp_r31->scale.y = (temp_r30->scale.y*0.9f)+(0.1f*(temp_r30->scale.y*(1.0-sind(temp_f31)))); - temp_r31->scale.z = (temp_r30->scale.z*0.9f)+(0.1f*(temp_r30->scale.z*(1.0-sind(temp_f31)))); - temp_r29->scale.x = temp_r31->scale.x; - temp_r29->scale.y = temp_r31->scale.y; - temp_r29->scale.z = 0.8f*temp_r31->scale.z; - HuPrcVSleep(); - } - temp_r31->scale.x = temp_r30->scale.x; - temp_r31->scale.y = temp_r30->scale.y; - temp_r31->scale.z = temp_r30->scale.z; - temp_r29->scale.x = temp_r31->scale.x; - temp_r29->scale.y = temp_r31->scale.y; - temp_r29->scale.z = 0.8f*temp_r31->scale.z; + HsfTransform *temp_r31; + HsfTransform *temp_r30; + HsfTransform *temp_r29; + float temp_f31; + temp_r31 = &arg0->unk6C[arg1]->data.base; + temp_r29 = &arg0->unk10C[arg1]->data.base; + temp_r30 = &arg0->unk24C[arg1]; + for (temp_f31 = 0; temp_f31 < 180; temp_f31 += 10) { + temp_r31->scale.x = (temp_r30->scale.x * 0.8f) + (0.2f * (temp_r30->scale.x * (1.0 - sind(temp_f31)))); + temp_r31->scale.y = (temp_r30->scale.y * 0.8f) + (0.2f * (temp_r30->scale.y * (1.0 - sind(temp_f31)))); + temp_r31->scale.z = (temp_r30->scale.z * 0.8f) + (0.2f * (temp_r30->scale.z * (1.0 - sind(temp_f31)))); + temp_r29->scale.x = temp_r31->scale.x; + temp_r29->scale.y = temp_r31->scale.y; + temp_r29->scale.z = 0.8f * temp_r31->scale.z; + HuPrcVSleep(); + } + for (temp_f31 = 180; temp_f31 < 360; temp_f31 += 20) { + temp_r31->scale.x = (temp_r30->scale.x * 0.9f) + (0.1f * (temp_r30->scale.x * (1.0 - sind(temp_f31)))); + temp_r31->scale.y = (temp_r30->scale.y * 0.9f) + (0.1f * (temp_r30->scale.y * (1.0 - sind(temp_f31)))); + temp_r31->scale.z = (temp_r30->scale.z * 0.9f) + (0.1f * (temp_r30->scale.z * (1.0 - sind(temp_f31)))); + temp_r29->scale.x = temp_r31->scale.x; + temp_r29->scale.y = temp_r31->scale.y; + temp_r29->scale.z = 0.8f * temp_r31->scale.z; + HuPrcVSleep(); + } + temp_r31->scale.x = temp_r30->scale.x; + temp_r31->scale.y = temp_r30->scale.y; + temp_r31->scale.z = temp_r30->scale.z; + temp_r29->scale.x = temp_r31->scale.x; + temp_r29->scale.y = temp_r31->scale.y; + temp_r29->scale.z = 0.8f * temp_r31->scale.z; } void fn_1_2A34(Bss348Data *arg0, s32 arg1, s32 arg2) { - HsfTransform *temp_r31; - HsfTransform *temp_r30; - s32 temp_r28; - - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - - temp_r31 = &arg0->unk6C[arg1]->data.base; - temp_r30 = &arg0->unk10C[arg1]->data.base; - temp_f30 = temp_r31->scale.x; - temp_f29 = temp_r31->scale.y; - temp_f28 = temp_r31->scale.z; - temp_r31->scale.x = temp_r31->scale.y = temp_r31->scale.z = 0; - temp_r30->scale.x = temp_r30->scale.y = temp_r30->scale.z = 0; - for(temp_r28=0, temp_f31=0; temp_r28<30; temp_r28++, temp_f31 += (1.0f/30.0f)) { - temp_r31->scale.x += temp_f30/30.0f; - temp_r31->scale.y += temp_f29/30.0f; - temp_r31->scale.z += temp_f28/30.0f; - temp_r30->scale.x = temp_r31->scale.x; - temp_r30->scale.y = temp_r31->scale.y; - temp_r30->scale.z = 0.8f*temp_r31->scale.z; - if(arg2 == 0) { - HuSprGrpScaleSet(arg0->unkA, temp_f31, temp_f31); - } - HuPrcVSleep(); - } - temp_r31->scale.x = temp_f30; - temp_r31->scale.y = temp_f29; - temp_r31->scale.z = temp_f28; - temp_r30->scale.x = temp_r31->scale.x; - temp_r30->scale.y = temp_r31->scale.y; - temp_r30->scale.z = 0.8f*temp_r31->scale.z; - if(arg2 == 0) { - HuSprAttrReset(arg0->unkA, 0, 1); - HuSprGrpScaleSet(arg0->unkA, 1, 1); - } else { - HuSprAttrReset(arg0->unkA, 0, 64); - } + HsfTransform *temp_r31; + HsfTransform *temp_r30; + s32 temp_r28; + + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + temp_r31 = &arg0->unk6C[arg1]->data.base; + temp_r30 = &arg0->unk10C[arg1]->data.base; + temp_f30 = temp_r31->scale.x; + temp_f29 = temp_r31->scale.y; + temp_f28 = temp_r31->scale.z; + temp_r31->scale.x = temp_r31->scale.y = temp_r31->scale.z = 0; + temp_r30->scale.x = temp_r30->scale.y = temp_r30->scale.z = 0; + for (temp_r28 = 0, temp_f31 = 0; temp_r28 < 30; temp_r28++, temp_f31 += (1.0f / 30.0f)) { + temp_r31->scale.x += temp_f30 / 30.0f; + temp_r31->scale.y += temp_f29 / 30.0f; + temp_r31->scale.z += temp_f28 / 30.0f; + temp_r30->scale.x = temp_r31->scale.x; + temp_r30->scale.y = temp_r31->scale.y; + temp_r30->scale.z = 0.8f * temp_r31->scale.z; + if (arg2 == 0) { + HuSprGrpScaleSet(arg0->unkA, temp_f31, temp_f31); + } + HuPrcVSleep(); + } + temp_r31->scale.x = temp_f30; + temp_r31->scale.y = temp_f29; + temp_r31->scale.z = temp_f28; + temp_r30->scale.x = temp_r31->scale.x; + temp_r30->scale.y = temp_r31->scale.y; + temp_r30->scale.z = 0.8f * temp_r31->scale.z; + if (arg2 == 0) { + HuSprAttrReset(arg0->unkA, 0, HUSPR_ATTR_NOANIM); + HuSprGrpScaleSet(arg0->unkA, 1, 1); + } + else { + HuSprAttrReset(arg0->unkA, 0, HUSPR_ATTR_REVERSE); + } } typedef struct work_2C50 { - Bss348Data *unk0; - s32 unk4; - s32 unk8; - s32 *unkC; + Bss348Data *unk0; + s32 unk4; + s32 unk8; + s32 *unkC; } Work2C50; void fn_1_2C50(void) { - HsfTransform *temp_r31; - Work2C50 *temp_r30; - s32 temp_r29; - HsfTransform *temp_r28; - s32 temp_r27; - - float temp_f31; - float temp_f30; - float temp_f29; - temp_r30 = HuPrcCurrentGet()->user_data; - temp_r31 = &temp_r30->unk0->unk6C[temp_r30->unk4]->data.base; - temp_r28 = &temp_r30->unk0->unk10C[temp_r30->unk4]->data.base; - HuAudFXPlay(1401); - if(temp_r30->unk8) { - temp_f30 = temp_r31->rot.z+90.0f; - } else { - temp_f30 = temp_r31->rot.z-90.0f; - } - if(temp_f30 >= 360.0f) { - temp_f30 -= 360.0f; - } - if(temp_f30 < 0.0f) { - temp_f30 += 360.0f; - } - temp_f29 = temp_r31->rot.z; - temp_f31 = 0; - for(temp_r29=0, temp_r27=15; temp_r29unk8) { - temp_r31->rot.z = temp_f29+(100.0*sind(temp_f31)); - } else { - temp_r31->rot.z = temp_f29-(100.0*sind(temp_f31)); - } - temp_r28->rot.z = temp_r31->rot.z; - temp_f31 += 6.0f; - HuPrcVSleep(); - } - temp_f31 = 90.0f; - for(temp_r29=0, temp_r27=3; temp_r29unk8) { - temp_r31->rot.z = temp_f29+(100.0*sind(temp_f31)); - } else { - temp_r31->rot.z = temp_f29-(100.0*sind(temp_f31)); - } - temp_r28->rot.z = temp_r31->rot.z; - HuPrcVSleep(); - } - temp_r31->rot.z = temp_r28->rot.z = temp_f30; - *temp_r30->unkC = 0; - HuPrcKill(HuPrcCurrentGet()); - while(1) { - HuPrcVSleep(); - } + HsfTransform *temp_r31; + Work2C50 *temp_r30; + s32 temp_r29; + HsfTransform *temp_r28; + s32 temp_r27; + + float temp_f31; + float temp_f30; + float temp_f29; + temp_r30 = HuPrcCurrentGet()->user_data; + temp_r31 = &temp_r30->unk0->unk6C[temp_r30->unk4]->data.base; + temp_r28 = &temp_r30->unk0->unk10C[temp_r30->unk4]->data.base; + HuAudFXPlay(1401); + if (temp_r30->unk8) { + temp_f30 = temp_r31->rot.z + 90.0f; + } + else { + temp_f30 = temp_r31->rot.z - 90.0f; + } + if (temp_f30 >= 360.0f) { + temp_f30 -= 360.0f; + } + if (temp_f30 < 0.0f) { + temp_f30 += 360.0f; + } + temp_f29 = temp_r31->rot.z; + temp_f31 = 0; + for (temp_r29 = 0, temp_r27 = 15; temp_r29 < temp_r27; temp_r29++) { + if (temp_r30->unk8) { + temp_r31->rot.z = temp_f29 + (100.0 * sind(temp_f31)); + } + else { + temp_r31->rot.z = temp_f29 - (100.0 * sind(temp_f31)); + } + temp_r28->rot.z = temp_r31->rot.z; + temp_f31 += 6.0f; + HuPrcVSleep(); + } + temp_f31 = 90.0f; + for (temp_r29 = 0, temp_r27 = 3; temp_r29 < temp_r27; temp_r29++) { + temp_f31 -= (25.0f / 3.0f); + if (temp_r30->unk8) { + temp_r31->rot.z = temp_f29 + (100.0 * sind(temp_f31)); + } + else { + temp_r31->rot.z = temp_f29 - (100.0 * sind(temp_f31)); + } + temp_r28->rot.z = temp_r31->rot.z; + HuPrcVSleep(); + } + temp_r31->rot.z = temp_r28->rot.z = temp_f30; + *temp_r30->unkC = 0; + HuPrcKill(HuPrcCurrentGet()); + while (1) { + HuPrcVSleep(); + } } void fn_1_2F08(void) { - Vec *temp_r31 = HuPrcCurrentGet()->user_data; - float temp_f31; - float temp_f30; - HuPrcSleep(frandmod(24)); - temp_f30 = temp_r31->x/100.0f; - temp_f31 = -7.0f; - while(1) { - temp_r31->y -= temp_f31; - if(temp_r31->y < -500.0f) { - break; - } - temp_f31 += 0.5f; - if(temp_f31 > 20.0f) { - temp_f31 = 20.0f; - } - temp_r31->x += temp_f30; - temp_r31->z += 10.0f; - HuPrcVSleep(); - } - HuPrcKill(HuPrcCurrentGet()); - while(1) { - HuPrcVSleep(); - } + Vec *temp_r31 = HuPrcCurrentGet()->user_data; + float temp_f31; + float temp_f30; + HuPrcSleep(frandmod(24)); + temp_f30 = temp_r31->x / 100.0f; + temp_f31 = -7.0f; + while (1) { + temp_r31->y -= temp_f31; + if (temp_r31->y < -500.0f) { + break; + } + temp_f31 += 0.5f; + if (temp_f31 > 20.0f) { + temp_f31 = 20.0f; + } + temp_r31->x += temp_f30; + temp_r31->z += 10.0f; + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (1) { + HuPrcVSleep(); + } } void fn_1_2FEC(Bss348Data *arg0, s32 arg1) { - Vec *temp_r31 = &arg0->unk6C[arg1]->data.base.pos; - if(temp_r31->x > 230.0f) { - temp_r31->x = 230.0f; - } - if(temp_r31->x < -230.0f) { - temp_r31->x = -230.0f; - } - if(temp_r31->y > 170.0f) { - temp_r31->y = 170.0f; - } - if(temp_r31->y < -170.0f) { - temp_r31->y = -170.0f; - } + Vec *temp_r31 = &arg0->unk6C[arg1]->data.base.pos; + if (temp_r31->x > 230.0f) { + temp_r31->x = 230.0f; + } + if (temp_r31->x < -230.0f) { + temp_r31->x = -230.0f; + } + if (temp_r31->y > 170.0f) { + temp_r31->y = 170.0f; + } + if (temp_r31->y < -170.0f) { + temp_r31->y = -170.0f; + } } void fn_1_30B0(s32 arg0, s32 arg1) { - switch(GWPlayerCfg[arg0].diff) { - case 0: - arg1 *= 8; - break; - - case 1: - arg1 *= 4; - break; - - case 2: - arg1 *= 2; - break; - } - if(arg1 <= 1) { - HuPrcVSleep(); - } else { - HuPrcSleep(frandmod(arg1/2)+arg1); - } + switch (GWPlayerCfg[arg0].diff) { + case 0: + arg1 *= 8; + break; + + case 1: + arg1 *= 4; + break; + + case 2: + arg1 *= 2; + break; + } + if (arg1 <= 1) { + HuPrcVSleep(); + } + else { + HuPrcSleep(frandmod(arg1 / 2) + arg1); + } } void fn_1_3154(Bss348Data *arg0, s32 arg1, s32 arg2) { - HsfTransform *temp_r30; - s32 temp_r29; - HsfTransform *temp_r25; - s32 temp_r23; - float temp_f29; - Vec sp24; - Vec sp18; - Vec spC; - arg1 = lbl_1_bss_C04[arg2]; - temp_r30 = &arg0->unk6C[arg1]->data.base; - arg0->unk7F4 = arg0->unk7F5 = 0; - arg0->unk7F7 = arg0->unk7F6 = 0; - arg0->unk7F8 = 0; - switch(GWPlayerCfg[arg0->unk34].diff) { - case 0: - temp_r29 = (arg2*2)+60; - break; - - case 1: - temp_r29 = arg2+80; - break; - - case 2: - temp_r29 = arg2+90; - break; - - default: - temp_r29 = arg2+95; - break; - } - if(temp_r29 > 100) { - temp_r29 = 100; - } - if(arg0->unk804 == -1) { - if(frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2+1) { - arg0->unk804 = arg1; - } else { - temp_r23 = frandmod(lbl_1_bss_B58-arg2); - arg0->unk804 = lbl_1_bss_C04[arg2+temp_r23]; - } - arg0->unk808 = -1; - if(GWPlayerCfg[arg0->unk34].diff == 2 || GWPlayerCfg[arg0->unk34].diff == 3) { - if(frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2+1) { - arg0->unk808 = 10; - } - } - fn_1_30B0(arg0->unk34, 10); - } - temp_r25 = &arg0->unk24C[arg0->unk804]; - HuSetVecF(&sp24, temp_r25->pos.x, temp_r25->pos.y, 0.0); - HuSetVecF(&sp18, temp_r30->pos.x, temp_r30->pos.y, 0.0); - HuSubVecF(&spC, &sp24, &sp18); - if(VECMagXY(&spC) >= 40.0f) { - temp_f29 = atan2d(spC.x, spC.y); - arg0->unk7F4 = 50*sind(temp_f29); - arg0->unk7F5 = 50*cosd(temp_f29); - if(arg0->unk808 >= 0 && arg0->unk808-- == 0 && temp_r30->rot.z != 0.0f) { - arg0->unk808 = 10; - if(0.0f == (temp_r30->rot.z-90.0f)) { - arg0->unk7F6 = 50; - } else { - arg0->unk7F7 = 50; - } - } - } else { - fn_1_30B0(arg0->unk34, 1); - if(frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2+1) { - if(0.0f != temp_r30->rot.z) { - if(0.0f == (temp_r30->rot.z-90.0f)) { - arg0->unk7F6 = 50; - } else { - arg0->unk7F7 = 50; - } - } else { - arg0->unk7F8 = PAD_BUTTON_A; - arg0->unk804 = -1; - } - - } else { - switch(frandmod(3)) { - case 0: - arg0->unk7F6 = 50; - break; - - case 1: - arg0->unk7F6 = 50; - break; - - default: - arg0->unk7F8 = PAD_BUTTON_A; - arg0->unk804 = -1; - break; - } - if(frandmod(100) < temp_r29) { - arg0->unk804 = -1; - } - } - } + HsfTransform *temp_r30; + s32 temp_r29; + HsfTransform *temp_r25; + s32 temp_r23; + float temp_f29; + Vec sp24; + Vec sp18; + Vec spC; + arg1 = lbl_1_bss_C04[arg2]; + temp_r30 = &arg0->unk6C[arg1]->data.base; + arg0->unk7F4 = arg0->unk7F5 = 0; + arg0->unk7F7 = arg0->unk7F6 = 0; + arg0->unk7F8 = 0; + switch (GWPlayerCfg[arg0->unk34].diff) { + case 0: + temp_r29 = (arg2 * 2) + 60; + break; + + case 1: + temp_r29 = arg2 + 80; + break; + + case 2: + temp_r29 = arg2 + 90; + break; + + default: + temp_r29 = arg2 + 95; + break; + } + if (temp_r29 > 100) { + temp_r29 = 100; + } + if (arg0->unk804 == -1) { + if (frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2 + 1) { + arg0->unk804 = arg1; + } + else { + temp_r23 = frandmod(lbl_1_bss_B58 - arg2); + arg0->unk804 = lbl_1_bss_C04[arg2 + temp_r23]; + } + arg0->unk808 = -1; + if (GWPlayerCfg[arg0->unk34].diff == 2 || GWPlayerCfg[arg0->unk34].diff == 3) { + if (frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2 + 1) { + arg0->unk808 = 10; + } + } + fn_1_30B0(arg0->unk34, 10); + } + temp_r25 = &arg0->unk24C[arg0->unk804]; + HuSetVecF(&sp24, temp_r25->pos.x, temp_r25->pos.y, 0.0); + HuSetVecF(&sp18, temp_r30->pos.x, temp_r30->pos.y, 0.0); + HuSubVecF(&spC, &sp24, &sp18); + if (VECMagXY(&spC) >= 40.0f) { + temp_f29 = atan2d(spC.x, spC.y); + arg0->unk7F4 = 50 * sind(temp_f29); + arg0->unk7F5 = 50 * cosd(temp_f29); + if (arg0->unk808 >= 0 && arg0->unk808-- == 0 && temp_r30->rot.z != 0.0f) { + arg0->unk808 = 10; + if (0.0f == (temp_r30->rot.z - 90.0f)) { + arg0->unk7F6 = 50; + } + else { + arg0->unk7F7 = 50; + } + } + } + else { + fn_1_30B0(arg0->unk34, 1); + if (frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2 + 1) { + if (0.0f != temp_r30->rot.z) { + if (0.0f == (temp_r30->rot.z - 90.0f)) { + arg0->unk7F6 = 50; + } + else { + arg0->unk7F7 = 50; + } + } + else { + arg0->unk7F8 = PAD_BUTTON_A; + arg0->unk804 = -1; + } + } + else { + switch (frandmod(3)) { + case 0: + arg0->unk7F6 = 50; + break; + + case 1: + arg0->unk7F6 = 50; + break; + + default: + arg0->unk7F8 = PAD_BUTTON_A; + arg0->unk804 = -1; + break; + } + if (frandmod(100) < temp_r29) { + arg0->unk804 = -1; + } + } + } } void fn_1_37C4(void) { - Bss348Data *temp_r31; - HsfTransform *temp_r30; - s32 temp_r29; - HsfTransform *temp_r28; - s32 temp_r26; - HsfTransform *temp_r25; - Process *temp_r24; - s32 temp_r23; - Vec spCC; - Vec spC0; - Vec spB4; - Work2C50 spA4; - Vec sp98; - Vec sp8C; - Vec sp80; - Vec sp74; - s32 sp70; - s32 sp58; - s32 sp48; - float temp_f27; - float temp_f26; - - - - temp_r31 = HuPrcCurrentGet()->user_data; - temp_r31->unk40 = 0; - for(temp_r29=0; temp_r29unk10C[temp_r29]->data.base; - temp_r30->pos.x = 5000; - temp_r30 = &temp_r31->unk1AC[temp_r29]->data.base; - temp_r30->pos.x = 5000; - } - while(lbl_1_bss_CA8 == 0) { - HuPrcVSleep(); - } - HuPrcSleep(180); - HuAudFXPlay(1391); - for(temp_r29=0; temp_r29unk6C[temp_r29]->data.base; - temp_f26 = atan2d(temp_r30->pos.x, temp_r30->pos.y); - temp_f27 = VECMagXY(&temp_r30->pos); - temp_f27 *= 1.05f; - temp_r30->pos.x = temp_f27*sind(temp_f26); - temp_r30->pos.y = temp_f27*cosd(temp_f26); - } - omVibrate(temp_r31->unk34, 12, 6, 6); - HuPrcSleep(30); - HuAudFXPlay(1387); - for(temp_r29=0; temp_r29unk6C[temp_r29]->data.base; - temp_r24->user_data = temp_r30; - } - HuPrcSleep(120); - lbl_1_bss_CA8 = 2; - for(temp_r29=0; temp_r29unk44 = 0; - temp_r31->unk804 = -1; - temp_r26 = lbl_1_bss_C04[temp_r29]; - temp_r30 = &temp_r31->unk6C[temp_r26]->data.base; - temp_r28 = &temp_r31->unk10C[temp_r26]->data.base; - if(temp_r29 != 0) { - temp_r25 = &temp_r31->unk24C[lbl_1_bss_C04[temp_r29-1]]; - temp_r30->pos.x = temp_r25->pos.x; - temp_r30->pos.y = temp_r25->pos.y; - temp_r28->pos.x = 20+temp_r30->pos.x; - temp_r28->pos.y = -20+temp_r30->pos.y; - } else { - temp_r30->pos.x = temp_r30->pos.y = 0; - temp_r28->pos.x = 20+temp_r30->pos.x; - temp_r28->pos.y = -20+temp_r30->pos.y; - sp98.x = temp_r30->pos.x+30; - sp98.z = 50; - sp98.y = -30+temp_r30->pos.y; - Hu3D3Dto2D(&sp98, (1 << temp_r31->unk38), &sp8C); - HuSprGrpPosSet(temp_r31->unkA, sp8C.x, sp8C.y); - HuSprAttrReset(temp_r31->unkA, 0, HUSPR_ATTR_DISPOFF); - } - temp_r30->pos.z = 50; - temp_r28->pos.z = temp_r30->pos.z-5; - temp_r30->rot.z = temp_r28->rot.z = 90.0f*lbl_1_bss_B64[temp_r29]; - fn_1_2A34(temp_r31, temp_r26, temp_r29); - if(temp_r29 == 0) { - while(lbl_1_bss_CA8 != 3) { - HuPrcVSleep(); - } - } - while(1) { - if(GWPlayerCfg[temp_r31->unk34].iscom == 1) { - fn_1_3154(temp_r31, temp_r26, temp_r29); - } - if(!sp70) { - temp_r23 = -1; - if(fn_1_21B4_inline(temp_r31->unk34, 0) > 20) { - temp_r23 = 1; - } - if(fn_1_21B4_inline(temp_r31->unk34, 1) > 20) { - temp_r23 = 0; - } - if(temp_r23 != -1) { - sp70 = 1; - temp_r24 = HuPrcChildCreate(fn_1_2C50, 8192, 8192, 0, HuPrcCurrentGet()); - temp_r24->user_data = &spA4; - spA4.unk0 = temp_r31; - spA4.unk4 = temp_r26; - spA4.unk8 = temp_r23; - spA4.unkC = &sp70; - } - } - if((fn_1_2274(temp_r31->unk34) & PAD_BUTTON_A) && !sp70) { - if(0.0f == temp_r30->rot.z) { - temp_r25 = &temp_r31->unk24C[temp_r26]; - HuSetVecF(&spCC, temp_r25->pos.x, temp_r25->pos.y, 0.0f); - HuSetVecF(&spC0, temp_r30->pos.x, temp_r30->pos.y, 0.0f); - HuSubVecF(&spB4, &spCC, &spC0); - if(VECMagXY(&spB4) < 40.0f) { - HuAudFXPlay(1402); - temp_r31->unk44 = 1; - temp_r31->unk48[7] = temp_r30->pos.x; - temp_r31->unk48[8] = temp_r30->pos.y; - fn_1_22E0(temp_r31, temp_r26); - goto end; - } - } - fn_1_263C(temp_r31, temp_r26); - } - temp_r31->unk48[6] = -1.0f; - if(ABS_INV(fn_1_20FC_inline(temp_r31->unk34, 0)) > 20 || ABS_INV(fn_1_20FC_inline(temp_r31->unk34,1)) > 20) { - temp_r31->unk48[6] = atan2d(fn_1_20FC_inline(temp_r31->unk34, 0), fn_1_20FC_inline(temp_r31->unk34, 1)); - } - if(-1.0f != temp_r31->unk48[6]) { - temp_r30->pos.x += 5.0f*sind(temp_r31->unk48[6]); - temp_r30->pos.y += 5.0f*cosd(temp_r31->unk48[6]); - fn_1_2FEC(temp_r31, temp_r26); - temp_r28->pos.x = 20.0f+temp_r30->pos.x; - temp_r28->pos.y = -20.0f+temp_r30->pos.y; - sp80.x = 30.0f+temp_r30->pos.x; - sp80.z = 50; - sp80.y = -30.0f+temp_r30->pos.y; - Hu3D3Dto2D(&sp80, (1 << temp_r31->unk38), &sp74); - HuSprGrpPosSet(temp_r31->unkA, sp74.x, sp74.y); - } - HuPrcVSleep(); - } - - end: - (void)temp_r31; - } - temp_r31->unk40 = 4; - //Hacks to Stop Spilling - (void)temp_r26; - (void)temp_r26; - (void)temp_r24; - (void)temp_r24; - (void)temp_r24; - (void)temp_r23; - (void)temp_r23; - (void)temp_r23; - (void)temp_r23; - while(1) { - HuPrcVSleep(); - } + Bss348Data *temp_r31; + HsfTransform *temp_r30; + s32 temp_r29; + HsfTransform *temp_r28; + s32 temp_r26; + HsfTransform *temp_r25; + Process *temp_r24; + s32 temp_r23; + Vec spCC; + Vec spC0; + Vec spB4; + Work2C50 spA4; + Vec sp98; + Vec sp8C; + Vec sp80; + Vec sp74; + s32 sp70; + s32 sp58; + s32 sp48; + float temp_f27; + float temp_f26; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk40 = 0; + for (temp_r29 = 0; temp_r29 < lbl_1_bss_B58; temp_r29++) { + temp_r30 = &temp_r31->unk10C[temp_r29]->data.base; + temp_r30->pos.x = 5000; + temp_r30 = &temp_r31->unk1AC[temp_r29]->data.base; + temp_r30->pos.x = 5000; + } + while (lbl_1_bss_CA8 == 0) { + HuPrcVSleep(); + } + HuPrcSleep(180); + HuAudFXPlay(1391); + for (temp_r29 = 0; temp_r29 < lbl_1_bss_B58; temp_r29++) { + temp_r30 = &temp_r31->unk6C[temp_r29]->data.base; + temp_f26 = atan2d(temp_r30->pos.x, temp_r30->pos.y); + temp_f27 = VECMagXY(&temp_r30->pos); + temp_f27 *= 1.05f; + temp_r30->pos.x = temp_f27 * sind(temp_f26); + temp_r30->pos.y = temp_f27 * cosd(temp_f26); + } + omVibrate(temp_r31->unk34, 12, 6, 6); + HuPrcSleep(30); + HuAudFXPlay(1387); + for (temp_r29 = 0; temp_r29 < lbl_1_bss_B58; temp_r29++) { + temp_r24 = HuPrcChildCreate(fn_1_2F08, 8192, 4096, 0, HuPrcCurrentGet()); + temp_r30 = &temp_r31->unk6C[temp_r29]->data.base; + temp_r24->user_data = temp_r30; + } + HuPrcSleep(120); + lbl_1_bss_CA8 = 2; + for (temp_r29 = 0; temp_r29 < lbl_1_bss_B58; temp_r29++) { + sp70 = 0; + temp_r31->unk44 = 0; + temp_r31->unk804 = -1; + temp_r26 = lbl_1_bss_C04[temp_r29]; + temp_r30 = &temp_r31->unk6C[temp_r26]->data.base; + temp_r28 = &temp_r31->unk10C[temp_r26]->data.base; + if (temp_r29 != 0) { + temp_r25 = &temp_r31->unk24C[lbl_1_bss_C04[temp_r29 - 1]]; + temp_r30->pos.x = temp_r25->pos.x; + temp_r30->pos.y = temp_r25->pos.y; + temp_r28->pos.x = 20 + temp_r30->pos.x; + temp_r28->pos.y = -20 + temp_r30->pos.y; + } + else { + temp_r30->pos.x = temp_r30->pos.y = 0; + temp_r28->pos.x = 20 + temp_r30->pos.x; + temp_r28->pos.y = -20 + temp_r30->pos.y; + sp98.x = temp_r30->pos.x + 30; + sp98.z = 50; + sp98.y = -30 + temp_r30->pos.y; + Hu3D3Dto2D(&sp98, (1 << temp_r31->unk38), &sp8C); + HuSprGrpPosSet(temp_r31->unkA, sp8C.x, sp8C.y); + HuSprAttrReset(temp_r31->unkA, 0, HUSPR_ATTR_DISPOFF); + } + temp_r30->pos.z = 50; + temp_r28->pos.z = temp_r30->pos.z - 5; + temp_r30->rot.z = temp_r28->rot.z = 90.0f * lbl_1_bss_B64[temp_r29]; + fn_1_2A34(temp_r31, temp_r26, temp_r29); + if (temp_r29 == 0) { + while (lbl_1_bss_CA8 != 3) { + HuPrcVSleep(); + } + } + while (1) { + if (GWPlayerCfg[temp_r31->unk34].iscom == 1) { + fn_1_3154(temp_r31, temp_r26, temp_r29); + } + if (!sp70) { + temp_r23 = -1; + if (fn_1_21B4_inline(temp_r31->unk34, 0) > 20) { + temp_r23 = 1; + } + if (fn_1_21B4_inline(temp_r31->unk34, 1) > 20) { + temp_r23 = 0; + } + if (temp_r23 != -1) { + sp70 = 1; + temp_r24 = HuPrcChildCreate(fn_1_2C50, 8192, 8192, 0, HuPrcCurrentGet()); + temp_r24->user_data = &spA4; + spA4.unk0 = temp_r31; + spA4.unk4 = temp_r26; + spA4.unk8 = temp_r23; + spA4.unkC = &sp70; + } + } + if ((fn_1_2274(temp_r31->unk34) & PAD_BUTTON_A) && !sp70) { + if (0.0f == temp_r30->rot.z) { + temp_r25 = &temp_r31->unk24C[temp_r26]; + HuSetVecF(&spCC, temp_r25->pos.x, temp_r25->pos.y, 0.0f); + HuSetVecF(&spC0, temp_r30->pos.x, temp_r30->pos.y, 0.0f); + HuSubVecF(&spB4, &spCC, &spC0); + if (VECMagXY(&spB4) < 40.0f) { + HuAudFXPlay(1402); + temp_r31->unk44 = 1; + temp_r31->unk48[7] = temp_r30->pos.x; + temp_r31->unk48[8] = temp_r30->pos.y; + fn_1_22E0(temp_r31, temp_r26); + goto end; + } + } + fn_1_263C(temp_r31, temp_r26); + } + temp_r31->unk48[6] = -1.0f; + if (ABS_INV(fn_1_20FC_inline(temp_r31->unk34, 0)) > 20 || ABS_INV(fn_1_20FC_inline(temp_r31->unk34, 1)) > 20) { + temp_r31->unk48[6] = atan2d(fn_1_20FC_inline(temp_r31->unk34, 0), fn_1_20FC_inline(temp_r31->unk34, 1)); + } + if (-1.0f != temp_r31->unk48[6]) { + temp_r30->pos.x += 5.0f * sind(temp_r31->unk48[6]); + temp_r30->pos.y += 5.0f * cosd(temp_r31->unk48[6]); + fn_1_2FEC(temp_r31, temp_r26); + temp_r28->pos.x = 20.0f + temp_r30->pos.x; + temp_r28->pos.y = -20.0f + temp_r30->pos.y; + sp80.x = 30.0f + temp_r30->pos.x; + sp80.z = 50; + sp80.y = -30.0f + temp_r30->pos.y; + Hu3D3Dto2D(&sp80, (1 << temp_r31->unk38), &sp74); + HuSprGrpPosSet(temp_r31->unkA, sp74.x, sp74.y); + } + HuPrcVSleep(); + } + + end: + (void)temp_r31; + } + temp_r31->unk40 = 4; + // Hacks to Stop Spilling + (void)temp_r26; + (void)temp_r26; + (void)temp_r24; + (void)temp_r24; + (void)temp_r24; + (void)temp_r23; + (void)temp_r23; + (void)temp_r23; + (void)temp_r23; + while (1) { + HuPrcVSleep(); + } } void fn_1_4768(s32 arg0) { - float temp_f31; - s32 temp_r31; - s32 temp_r30; - Bss348Data *spC = &lbl_1_bss_348[arg0]; - Bss348Data *temp_r29; - - for(temp_r31=0, temp_f31=1; temp_r31<15; temp_r31++) { - temp_f31 -= (1.0f/15.0f); - for(temp_r30=0; temp_r30<1; temp_r30++) { - temp_r29 = &lbl_1_bss_348[temp_r30]; - HuSprGrpScaleSet(temp_r29->unkA, temp_f31, temp_f31); - } - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<1; temp_r31++) { - HuSprAttrSet(lbl_1_bss_348[temp_r31].unkA, 0, HUSPR_ATTR_DISPOFF); - } + float temp_f31; + s32 temp_r31; + s32 temp_r30; + Bss348Data *spC = &lbl_1_bss_348[arg0]; + Bss348Data *temp_r29; + + for (temp_r31 = 0, temp_f31 = 1; temp_r31 < 15; temp_r31++) { + temp_f31 -= (1.0f / 15.0f); + for (temp_r30 = 0; temp_r30 < 1; temp_r30++) { + temp_r29 = &lbl_1_bss_348[temp_r30]; + HuSprGrpScaleSet(temp_r29->unkA, temp_f31, temp_f31); + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 1; temp_r31++) { + HuSprAttrSet(lbl_1_bss_348[temp_r31].unkA, 0, HUSPR_ATTR_DISPOFF); + } } void fn_1_4864(void) { - while(1) { - if(omSysExitReq == 1) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudFadeOut(1000); - HuPrcSleep(60); - MGSeqKillAll(); - omOvlReturnEx(1, 1); - while(1) { - HuPrcVSleep(); - } - } - HuPrcVSleep(); - } + while (1) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (1) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } } void fn_1_48C4(void) { - u32 temp_r31; - s32 temp_r30; - s32 temp_r29; - s16 temp_r21; - s32 sp14; - s32 sp10; - - lbl_1_bss_CA8 = 0; - temp_r31 = 0; - lbl_1_bss_CA8 = 1; - while(lbl_1_bss_CA8 == 1) { - HuPrcVSleep(); - } - sp10 = HuAudSeqPlay(69); - temp_r21 = MGSeqStartCreate(); - while(MGSeqStatGet(temp_r21)) { - HuPrcVSleep(); - } - lbl_1_bss_CA8 = 3; - while(1) { - for(temp_r30=0, sp14=0; temp_r30<1; temp_r30++) { - if(lbl_1_bss_348[temp_r30].unk40 == 4) { - temp_r29 = temp_r30; - sp14++; - } - } - if(sp14 != 0) { - break; - } - temp_r31++; - fn_1_918(lbl_1_bss_CAE, 2, temp_r31, 1); - if(temp_r31 >= 35999) { - temp_r29 = -1; - break; - } - HuPrcVSleep(); - } - if(temp_r29 == -1) { - fn_1_918(lbl_1_bss_CAE, 2, 0, 2); - } - HuAudSeqFadeOut(sp10, 100); - for(temp_r30=0; temp_r30<1; temp_r30++) { - HuPrcKill(lbl_1_bss_4[temp_r30]); - } - temp_r21 = MGSeqFinishCreate(); - while(MGSeqStatGet(temp_r21)) { - HuPrcVSleep(); - } - if(temp_r29 == -1 || temp_r31 >= GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C])) { - if(temp_r29 != -1) { - HuAudSStreamPlay(1); - } else { - HuAudSStreamPlay(4); - } - } - if(temp_r29 != -1) { - lbl_1_bss_CA8 = 4; - lbl_1_bss_CA4 = temp_r29; - fn_1_4768(temp_r29); - } - mgRecordExtra = temp_r31; - if(temp_r29 != -1) { - if(lbl_1_data_74C[lbl_1_bss_B5C] >= temp_r31) { - GWGameStat.present[lbl_1_data_758[lbl_1_bss_B5C]] = 1; - OSReport("time %d no %d\n", lbl_1_data_74C[lbl_1_bss_B5C], lbl_1_data_758[lbl_1_bss_B5C]); - } - if(temp_r31 < GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C])) { - GWMGRecordSet(lbl_1_data_6C8[lbl_1_bss_B5C], temp_r31); - temp_r21 = MGSeqRecordCreate(temp_r31); - HuPrcChildCreate(fn_1_858, 4096, 4096, 0, HuPrcCurrentGet()); - fn_1_918(lbl_1_bss_CAE, 2, temp_r31, 0); - while(MGSeqStatGet(temp_r21)) { - HuPrcVSleep(); - } - HuAudSStreamPlay(1); - } - HuPrcSleep(180); - } else { - mgRecordExtra = 36000; - HuPrcSleep(210); - } - HuPrcSleep(30); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuPrcSleep(60); - HuAudFadeOut(1); - MGSeqKillAll(); - omOvlReturnEx(1, 1); - while(1) { - HuPrcVSleep(); - } + u32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s16 temp_r21; + s32 sp14; + s32 sp10; + + lbl_1_bss_CA8 = 0; + temp_r31 = 0; + lbl_1_bss_CA8 = 1; + while (lbl_1_bss_CA8 == 1) { + HuPrcVSleep(); + } + sp10 = HuAudSeqPlay(69); + temp_r21 = MGSeqStartCreate(); + while (MGSeqStatGet(temp_r21)) { + HuPrcVSleep(); + } + lbl_1_bss_CA8 = 3; + while (1) { + for (temp_r30 = 0, sp14 = 0; temp_r30 < 1; temp_r30++) { + if (lbl_1_bss_348[temp_r30].unk40 == 4) { + temp_r29 = temp_r30; + sp14++; + } + } + if (sp14 != 0) { + break; + } + temp_r31++; + fn_1_918(lbl_1_bss_CAE, 2, temp_r31, 1); + if (temp_r31 >= 35999) { + temp_r29 = -1; + break; + } + HuPrcVSleep(); + } + if (temp_r29 == -1) { + fn_1_918(lbl_1_bss_CAE, 2, 0, 2); + } + HuAudSeqFadeOut(sp10, 100); + for (temp_r30 = 0; temp_r30 < 1; temp_r30++) { + HuPrcKill(lbl_1_bss_4[temp_r30]); + } + temp_r21 = MGSeqFinishCreate(); + while (MGSeqStatGet(temp_r21)) { + HuPrcVSleep(); + } + if (temp_r29 == -1 || temp_r31 >= GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C])) { + if (temp_r29 != -1) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(4); + } + } + if (temp_r29 != -1) { + lbl_1_bss_CA8 = 4; + lbl_1_bss_CA4 = temp_r29; + fn_1_4768(temp_r29); + } + mgRecordExtra = temp_r31; + if (temp_r29 != -1) { + if (lbl_1_data_74C[lbl_1_bss_B5C] >= temp_r31) { + GWGameStat.present[lbl_1_data_758[lbl_1_bss_B5C]] = 1; + OSReport("time %d no %d\n", lbl_1_data_74C[lbl_1_bss_B5C], lbl_1_data_758[lbl_1_bss_B5C]); + } + if (temp_r31 < GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C])) { + GWMGRecordSet(lbl_1_data_6C8[lbl_1_bss_B5C], temp_r31); + temp_r21 = MGSeqRecordCreate(temp_r31); + HuPrcChildCreate(fn_1_858, 4096, 4096, 0, HuPrcCurrentGet()); + fn_1_918(lbl_1_bss_CAE, 2, temp_r31, 0); + while (MGSeqStatGet(temp_r21)) { + HuPrcVSleep(); + } + HuAudSStreamPlay(1); + } + HuPrcSleep(180); + } + else { + mgRecordExtra = 36000; + HuPrcSleep(210); + } + HuPrcSleep(30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (1) { + HuPrcVSleep(); + } } diff --git a/src/REL/m453Dll/main.c b/src/REL/m453Dll/main.c new file mode 100644 index 00000000..9db313c7 --- /dev/null +++ b/src/REL/m453Dll/main.c @@ -0,0 +1,1758 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "string.h" + +#include "REL/m453Dll.h" + +typedef struct M453DllWork { + /* 0x00 */ u8 unk_00; + /* 0x04 */ Vec unk_04; + /* 0x10 */ Vec unk_10; + /* 0x1C */ Vec unk_1C; + /* 0x28 */ Vec unk_28; + /* 0x34 */ Vec unk_34; + /* 0x40 */ Vec unk_40; + /* 0x4C */ Vec unk_4C; + /* 0x58 */ Vec unk_58; + /* 0x64 */ Vec unk_64[3]; + /* 0x88 */ Vec unk_88[3]; + /* 0xAC */ Vec unk_AC[3]; + /* 0xD0 */ Vec unk_D0[3]; + /* 0xF4 */ float unk_F4[3]; + /* 0x100 */ float unk_100[3]; + /* 0x10C */ float unk_10C[3]; + /* 0x118 */ float unk_118[3]; + /* 0x124 */ float unk_124[3]; + /* 0x130 */ float unk_130; + /* 0x134 */ float unk_134; + /* 0x138 */ float unk_138; + /* 0x13C */ float unk_13C; + /* 0x140 */ float unk_140; + /* 0x144 */ float unk_144; + /* 0x148 */ float unk_148; +} M453DllWork; /* size 0x14C */ + +typedef struct M453DllUnkStruct { + s16 unk_00; + s16 unk_02; + float unk_04; + float unk_08; + char unk0C[0x34]; +} M453DllUnkStruct; /* 0x40 */ + +typedef struct M453DllWork2 { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + char unk08[2]; + u8 unk_0A; + char unk0B; + u8 unk_0C; + u8 unk_0D; + u8 unk_0E; + s16 unk_10; + s16 unk_12; + s16 unk_14; + s16 unk_16; + s16 unk_18; + s16 unk_1A; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + Vec unk_2C; + Vec unk_38; + float unk_44; + float unk_48; + float unk_4C; + Vec unk_50; + M453DllUnkStruct unk_5C; + u8 unk_9C; + s32 unk_A0; +} M453DllWork2; /* size 0xA4 */ // same as Unkm403Struct_01 + +void fn_1_440(omObjData *object); +void fn_1_460(omObjData *object); +void fn_1_848(omObjData *object); +void fn_1_FFC(omObjData *object); +void fn_1_105C(omObjData *object); +void fn_1_1248(omObjData *object); +void fn_1_14F8(omObjData *object); +void fn_1_15FC(omObjData *object); +void fn_1_1870(float arg8, Vec *arg0, Vec *arg1, float arg9); +void fn_1_1910(float arg8, Vec *arg0, Vec *arg1, float arg9, Vec *arg2, Vec *arg3, float argA); +void fn_1_1BF0(omObjData *object); +void fn_1_1FA0(omObjData *object); +void fn_1_20EC(omObjData *object); +void fn_1_23E0(omObjData *object); +void fn_1_2E24(omObjData *object); +s32 fn_1_36DC(void); +void fn_1_39C8(omObjData *object); +void fn_1_3C94(omObjData *object); +s16 fn_1_3E9C(s32 arg0, s16 arg1, ParticleHook); +void fn_1_3F38(ModelData *model, ParticleData *particle, Mtx matrix); +s32 fn_1_43B8(void); +float fn_1_440C(float arg8, float arg9, float argA); +void fn_1_4E84(float *arg0, float *arg1, float *arg2, s32 arg3); +float fn_1_513C(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3); +void fn_1_5290(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 arg3); +void fn_1_5670(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*arg3)[3], s32 arg4); +float fn_1_5884(Vec *arg0); +s32 fn_1_63AC(void); +void fn_1_6448(void); + +s16 lbl_1_data_0 = -1; + +Vec lbl_1_data_4 = { 0.0f, 4000.0f, 4000.0f }; + +Vec lbl_1_data_10 = { 0.0f, -0.7f, -0.6f }; + +GXColor lbl_1_data_1C[0xA] = { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0, 0, 0, 0 }, + { 0x45, 0x7A, 0, 0 }, + { 0xC4, 0xFA, 0, 0 }, + { 0, 0, 0, 0 }, + { 0x3F, 0x80, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, +}; + +omObjData *lbl_1_bss_58; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +omObjData *lbl_1_bss_4C; +omObjData *lbl_1_bss_3C[4]; +u16 lbl_1_bss_3A; +s16 lbl_1_bss_38; +s16 lbl_1_bss_36; +s16 lbl_1_bss_34; +s16 lbl_1_bss_32; +s16 lbl_1_bss_1E[0xA]; +s16 lbl_1_bss_1C; +s16 lbl_1_bss_18[2]; +s32 lbl_1_bss_14; +s32 lbl_1_bss_8[3]; +s16 lbl_1_bss_2[3]; +s16 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Process *var_r31; + s32 var_r30; + omObjData *var_r29; + LightData *var_r28; + s32 var_r27; + s32 var_r26; + + OSReport("******* M453ObjectSetup *********\n"); + Hu3DLighInit(); + var_r26 = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, lbl_1_data_1C); + Hu3DGLightInfinitytSet(var_r26); + var_r28 = Hu3DGlobalLight; + var_r28->unk_00 |= 0x8000; + var_r31 = omInitObjMan(0x32, 0x2000); + var_r27 = frand() & 0x1F; + for (var_r30 = 0; var_r30 < var_r27; var_r30++) { + fn_1_43B8(); + } + CRot.x = -23.5f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 320.0f; + Center.z = 147.0f; + CZoom = 1720.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 400.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_54 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_58 = omAddObjEx(var_r31, 0x10, 8, 0, -1, fn_1_440); + lbl_1_bss_4C = omAddObjEx(var_r31, 0x20, 0x10, 0, -1, fn_1_105C); + lbl_1_bss_50 = omAddObjEx(var_r31, 0x50, 0x10, 0, -1, fn_1_14F8); + omAddObjEx(var_r31, 0x60, 0, 0, -1, fn_1_39C8); + fn_1_64E8(var_r31); + fn_1_7C2C(3); + omMakeGroupEx(var_r31, 0, 4); + omGetGroupMemberListEx(var_r31, 0); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r29 = omAddObjEx(var_r31, 0x30, 2, 8, 0, fn_1_1BF0); + lbl_1_bss_3C[var_r30] = var_r29; + var_r29->work[0] = var_r30; + var_r29->work[1] = var_r30; + } + omGameSysInit(var_r31); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + HuAudSndGrpSet(0x1C); + lbl_1_bss_2[0] = 1; + if (GWMGRecordGet(9) == 0) { + GWMGRecordSet(9, 0); + } + fn_1_8F48(var_r31, GWMGRecordGet(9)); + fn_1_924C(0); +} + +void fn_1_440(omObjData *object) +{ + lbl_1_bss_3A = 0; + object->func = fn_1_460; +} + +void fn_1_460(omObjData *object) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + + switch (lbl_1_bss_3A) { + case 0: + sp2C.x = 0.0f; + sp2C.y = 0.0f; + sp2C.z = -50.0f; + sp20.x = -90.0f; + sp20.y = 90.0f; + sp20.z = 0.0f; + var_f31 = 2200.0f; + fn_1_1870(1.0f, &sp2C, &sp20, var_f31); + lbl_1_bss_32 = 0x3C; + lbl_1_bss_3A += 1; + break; + case 1: + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 2: + if (lbl_1_bss_32 == 0) { + fn_1_7C3C(); + lbl_1_bss_32 = 0x5A; + sp2C.x = 200.0f; + sp2C.y = 100.0f; + sp2C.z = -50.0f; + sp20.x = -50.0f; + sp20.y = 90.0f; + sp20.z = 0.0f; + var_f31 = 2000.0f; + sp14.x = 0.0f; + sp14.y = 320.0f; + sp14.z = 147.0f; + sp8.x = -23.5f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f30 = 1720.0f; + fn_1_1910(180.0f, &sp14, &sp8, var_f30, &sp2C, &sp20, var_f31); + } + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 3: + if (lbl_1_bss_32 == 0) { + lbl_1_bss_32 = 0x5A; + } + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 4: + lbl_1_bss_3A = 5; + lbl_1_bss_38 = lbl_1_bss_36 = -1; + object->func = fn_1_848; + HuSprAnimRead(HuDataReadNum(0x220013, 0x10000000)); + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_FFC; + } +} + +s32 lbl_1_data_68[9] = { + -1, + 0x610000, + 0x610001, + 0x610002, + 0x610003, + 0x610004, + 0x610005, + 0x610006, + 0x610007, +}; + +void fn_1_848(omObjData *object) +{ + Vec sp1C; + Vec sp10; + s16 sp8[4]; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r28; + + switch (lbl_1_bss_3A) { + case 5: + if (lbl_1_bss_36 == -1) { + lbl_1_bss_34 = 0x708; + lbl_1_bss_36 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_36, 320.0f, 240.0f); + } + else if (MGSeqStatGet(lbl_1_bss_36) == 0) { + lbl_1_bss_36 = -1; + lbl_1_bss_3A += 1; + lbl_1_bss_32 = 0; + lbl_1_data_0 = 4; + } + if ((lbl_1_data_68[0] == -1) && ((MGSeqStatGet(lbl_1_bss_36) & 0x10) != 0)) { + lbl_1_data_68[0] = HuAudSeqPlay(0x48); + } + break; + case 6: + var_r30 = 0; + if ((lbl_1_data_0 == 0) && (fn_1_8240() == 0)) { + var_r30++; + } + if (var_r30 != 0) { + lbl_1_bss_3A += 1; + } + break; + case 7: + if (lbl_1_bss_36 == -1) { + lbl_1_bss_36 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_36, 320.0f, 240.0f); + MGSeqKill(lbl_1_bss_38); + HuAudSeqFadeOut(lbl_1_data_68[0], 0x64); + } + else if (MGSeqStatGet(lbl_1_bss_36) == 0) { + lbl_1_bss_36 = -1; + if (lbl_1_bss_2[0] == 0) { + if (lbl_1_data_0 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_07 != 0) { + break; + } + } + sp1C.x = lbl_1_bss_3C[var_r31]->trans.x; + sp1C.y = 100.0f; + sp1C.z = lbl_1_bss_3C[var_r31]->trans.z; + sp10.x = -18.0f; + sp10.y = 0.0f; + sp10.z = 0.0f; + var_f31 = 600.0f; + fn_1_1870(45.0f, &sp1C, &sp10, var_f31); + } + lbl_1_bss_3A = 9; + lbl_1_bss_32 = 0x5A; + } + else { + if ((lbl_1_bss_14 != 0) && (lbl_1_bss_0 >= 0xF)) { + GWGameStat.present[0x31] = 1; + } + if ((lbl_1_bss_14 != 0) && ((s32)GWMGRecordGet(9) < lbl_1_bss_0)) { + GWMGRecordSet(9, lbl_1_bss_0); + lbl_1_bss_3A = 8; + fn_1_924C(1); + } + else { + lbl_1_bss_36 = -1; + lbl_1_bss_3A = 9; + lbl_1_bss_32 = 0x5A; + } + fn_1_6448(); + } + } + break; + case 8: + if (lbl_1_bss_36 == -1) { + lbl_1_bss_36 = MGSeqCreate(0xE, lbl_1_bss_0); + } + else if (MGSeqStatGet(lbl_1_bss_36) == 0) { + lbl_1_bss_36 = -1; + lbl_1_bss_32 = 0x5A; + lbl_1_bss_3A = 9; + } + break; + case 9: + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 10: + if (lbl_1_bss_2[0] == 0) { + if (lbl_1_bss_36 == -1) { + if (lbl_1_data_0 == 0) { + lbl_1_bss_36 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp8[var_r31] = -1; + } + for (var_r31 = 0, var_r28 = 0; var_r31 < 4; var_r31++) { + if (((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_07 != 0) { + sp8[var_r28++] = GWPlayerCfg[var_r31].character; + } + } + lbl_1_bss_36 = MGSeqCreate(5, 3, sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + } + lbl_1_bss_36 = -1; + lbl_1_bss_32 = 0xD2; + lbl_1_bss_3A += 1; + } + else { + if (lbl_1_data_0 != 0) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(4); + } + lbl_1_bss_36 = -1; + lbl_1_bss_32 = 0xD2; + lbl_1_bss_3A += 1; + } + break; + case 11: + if (--lbl_1_bss_32 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_FFC; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_FFC; + } +} + +void fn_1_FFC(omObjData *object) +{ + if (WipeStatGet() == 0) { + fn_1_6748(); + CharModelKill(-1); + MGSeqKill(lbl_1_bss_38); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_105C(omObjData *object) +{ + Hu3DLightAllKill(); + lbl_1_bss_18[0] = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, lbl_1_data_1C); + Hu3DGLightStaticSet(lbl_1_bss_18[0], 1); + Hu3DGLightInfinitytSet(lbl_1_bss_18[0]); + lbl_1_bss_18[1] = Hu3DGLightCreate(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0, 0, 0); + Hu3DGLightStaticSet(lbl_1_bss_18[1], 1); + Hu3DGLightPointSet(lbl_1_bss_18[1], 0.0f, 0.0f, 3); + Hu3DGLightColorSet(lbl_1_bss_18[0], 0, 0, 0, 0xFF); + Hu3DGLightPosSet(lbl_1_bss_18[1], -1470.0f, 800.0f, -2000.0f, 0.0f, -1.0f, 0.0f); + Hu3DGLightColorSet(lbl_1_bss_18[1], 0, 0, 0, 0xFF); + Hu3DGLightPointSet(lbl_1_bss_18[1], 1200.0f, 0.6f, 3); + object->func = fn_1_1248; +} + +void fn_1_1248(omObjData *object) +{ + s32 var_r30; + + s8 sp11[9] = { 0x01, 0x00, 0x02, 0x01, 0x00, 0x03, 0x02, 0x01, 0x00 }; + s8 sp8[9] = { 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03 }; + + switch (lbl_1_bss_3A) { + case 0: + break; + case 1: + Hu3DGLightColorSet(lbl_1_bss_18[0], 0xF0, 0xF0, 0xF0, 0xFF); + break; + case 3: + Hu3DGLightColorSet(lbl_1_bss_18[1], 0xFF, 0xE0, 0xD0, 0xFF); + break; + case 5: + object->work[0] = 0x1E; + object->work[1] = 0x11; + lbl_1_bss_8[0] = 1; + break; + case 6: + if (fn_1_8240() == 0) { + if (lbl_1_bss_8[0] == 0) { + lbl_1_bss_8[0] = 0x1E; + lbl_1_bss_0++; + lbl_1_bss_14 = fn_1_63AC(); + if (lbl_1_bss_0 == 0x63) { + lbl_1_bss_3A = 7; + return; + } + } + lbl_1_bss_8[0]--; + if (lbl_1_bss_8[0] == 0) { + var_r30 = (object->work[1] - 2) >> 1; + if (var_r30 < 0) { + var_r30 = 0; + } + fn_1_864C(sp11[var_r30]); + fn_1_7C2C(sp8[var_r30]); + fn_1_7C0C(0.01f * object->work[0]); + object->work[0] += 5; + if (object->work[1] > 2) { + object->work[1] -= 1; + } + } + } + break; + } +} + +void fn_1_14F8(omObjData *object) +{ + M453DllWork *var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453DllWork), MEMORY_DEFAULT_NUM); + object->data = var_r31; + var_r31->unk_148 = var_r31->unk_144 = 0.0f; + var_r31->unk_140 = 1.0f; + var_r31->unk_10.x = var_r31->unk_28.x = -23.5f; + var_r31->unk_10.y = var_r31->unk_28.y = 0.0f; + var_r31->unk_10.z = var_r31->unk_28.z = 0.0f; + var_r31->unk_04.x = var_r31->unk_1C.x = 0.0f; + var_r31->unk_04.y = var_r31->unk_1C.y = 320.0f; + var_r31->unk_04.z = var_r31->unk_1C.z = 147.0f; + var_r31->unk_130 = var_r31->unk_134 = 1720.0f; + object->func = fn_1_15FC; +} + +void fn_1_15FC(omObjData *object) +{ + float var_f31; + M453DllWork *var_r31 = object->data; + + if (var_r31->unk_148 > 0.0f) { + var_r31->unk_148 = var_r31->unk_148 - var_r31->unk_140; + var_f31 = (var_r31->unk_144 - var_r31->unk_148) / var_r31->unk_144; + var_f31 = sind((90.0f * var_f31)); + if (var_r31->unk_00 == 0) { + var_r31->unk_04.x = var_r31->unk_1C.x + (var_f31 * (var_r31->unk_34.x - var_r31->unk_1C.x)); + var_r31->unk_04.y = var_r31->unk_1C.y + (var_f31 * (var_r31->unk_34.y - var_r31->unk_1C.y)); + var_r31->unk_04.z = var_r31->unk_1C.z + (var_f31 * (var_r31->unk_34.z - var_r31->unk_1C.z)); + var_r31->unk_10.x = var_r31->unk_28.x + (var_f31 * (var_r31->unk_40.x - var_r31->unk_28.x)); + var_r31->unk_10.y = var_r31->unk_28.y + (var_f31 * (var_r31->unk_40.y - var_r31->unk_28.y)); + var_r31->unk_10.z = var_r31->unk_28.z + (var_f31 * (var_r31->unk_40.z - var_r31->unk_28.z)); + var_r31->unk_130 = var_r31->unk_134 + (var_f31 * (var_r31->unk_138 - var_r31->unk_134)); + } + else { + fn_1_5670(2.0f * var_f31, (float *)&var_r31->unk_04, var_r31->unk_F4, (float(*)[3])var_r31->unk_64, (float(*)[3])var_r31->unk_88, 3); + fn_1_5670(2.0f * var_f31, (float *)&var_r31->unk_10, var_r31->unk_100, (float(*)[3])var_r31->unk_AC, (float(*)[3])var_r31->unk_D0, 3); + var_r31->unk_130 = fn_1_513C(2.0f * var_f31, var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 3); + } + } + CRot.x = var_r31->unk_10.x; + CRot.y = var_r31->unk_10.y; + CRot.z = var_r31->unk_10.z; + Center.x = var_r31->unk_04.x; + Center.y = var_r31->unk_04.y; + Center.z = var_r31->unk_04.z; + CZoom = var_r31->unk_130; +} + +void fn_1_1870(float arg8, Vec *arg0, Vec *arg1, float arg9) +{ + M453DllWork *var_r31; + + var_r31 = lbl_1_bss_50->data; + var_r31->unk_00 = 0; + var_r31->unk_144 = arg8; + var_r31->unk_148 = arg8; + var_r31->unk_1C = var_r31->unk_04; + var_r31->unk_34.x = arg0->x; + var_r31->unk_34.y = arg0->y; + var_r31->unk_34.z = arg0->z; + var_r31->unk_28 = var_r31->unk_10; + var_r31->unk_40.x = arg1->x; + var_r31->unk_40.y = arg1->y; + var_r31->unk_40.z = arg1->z; + var_r31->unk_134 = var_r31->unk_130; + var_r31->unk_138 = arg9; +} + +void fn_1_1910(float arg8, Vec *arg0, Vec *arg1, float arg9, Vec *arg2, Vec *arg3, float argA) +{ + float var_f31; + float var_f30; + M453DllWork *var_r31 = lbl_1_bss_50->data; + + var_r31->unk_00 = 1; + var_r31->unk_148 = var_r31->unk_144 = arg8; + var_r31->unk_1C = var_r31->unk_04; + var_r31->unk_34.x = arg0->x; + var_r31->unk_34.y = arg0->y; + var_r31->unk_34.z = arg0->z; + var_r31->unk_4C.x = arg2->x; + var_r31->unk_4C.y = arg2->y; + var_r31->unk_4C.z = arg2->z; + var_r31->unk_28 = var_r31->unk_10; + var_r31->unk_40.x = arg1->x; + var_r31->unk_40.y = arg1->y; + var_r31->unk_40.z = arg1->z; + var_r31->unk_58.x = arg3->x; + var_r31->unk_58.y = arg3->y; + var_r31->unk_58.z = arg3->z; + var_r31->unk_134 = var_r31->unk_130; + var_r31->unk_138 = arg9; + var_r31->unk_13C = argA; + var_r31->unk_64[0] = var_r31->unk_1C; + var_r31->unk_64[1] = var_r31->unk_4C; + var_r31->unk_64[2] = var_r31->unk_34; + var_r31->unk_AC[0] = var_r31->unk_28; + var_r31->unk_AC[1] = var_r31->unk_58; + var_r31->unk_AC[2] = var_r31->unk_40; + var_r31->unk_10C[0] = var_r31->unk_134; + var_r31->unk_10C[1] = var_r31->unk_13C; + var_r31->unk_10C[2] = var_r31->unk_138; + var_r31->unk_124[0] = 0.0f; + if ((var_r31->unk_10C[1] - var_r31->unk_10C[0]) < 0.0f) { + var_f31 = -(var_r31->unk_10C[1] - var_r31->unk_10C[0]); + } + else { + var_f31 = var_r31->unk_10C[1] - var_r31->unk_10C[0]; + } + var_r31->unk_124[1] = var_f31; + if ((var_r31->unk_10C[2] - var_r31->unk_10C[1]) < 0.0f) { + var_f30 = -(var_r31->unk_10C[2] - var_r31->unk_10C[1]); + } + else { + var_f30 = var_r31->unk_10C[2] - var_r31->unk_10C[1]; + } + var_r31->unk_124[2] = var_r31->unk_124[1] + var_f30; + fn_1_5290(var_r31->unk_F4, (float(*)[3])var_r31->unk_64, (float(*)[3])var_r31->unk_88, 3); + fn_1_5290(var_r31->unk_100, (float(*)[3])var_r31->unk_AC, (float(*)[3])var_r31->unk_D0, 3); + fn_1_4E84(var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 3); +} + +void fn_1_1BC8(float arg8) +{ + M453DllWork *var_r31 = lbl_1_bss_50->data; + var_r31->unk_140 = arg8; +} + +s32 lbl_1_data_C4[8] = { 0, 2, 3, 8, 0xA, 9, 0x17, 0x18 }; + +Vec lbl_1_data_E4[4] = { + { -300.0f, 2200.0f, 0.0f }, + { -100.0f, 2200.0f, 0.0f }, + { 100.0f, 2200.0f, 0.0f }, + { 300.0f, 2200.0f, 0.0f }, +}; + +void fn_1_1BF0(omObjData *object) +{ + M453DllWork2 *var_r31; + s32 var_r29; + s32 var_r28; + u32 var_r27; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453DllWork2), MEMORY_DEFAULT_NUM); + object->data = var_r31; + var_r31->unk_00 = object->work[0]; + var_r31->unk_01 = GWPlayerCfg[var_r31->unk_00].character; + var_r31->unk_02 = var_r31->unk_00 >> 1; + var_r31->unk_03 = var_r31->unk_00 & 1; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_00].pad_idx; + var_r31->unk_05 = GWPlayerCfg[var_r31->unk_00].iscom; + var_r31->unk_06 = GWPlayerCfg[var_r31->unk_00].diff; + var_r31->unk_18 = var_r31->unk_1A = 0; + var_r31->unk_07 = 1; + var_r31->unk_0C = 1; + var_r31->unk_0D = 0; + var_r31->unk_0E = 0; + var_r31->unk_0A = 0; + var_r31->unk_9C = 0; + var_r27 = object->work[1]; + var_r31->unk_2C.x = lbl_1_data_E4[var_r27].x; + var_r31->unk_2C.y = lbl_1_data_E4[var_r27].y + (100.0f * ((fn_1_43B8() - 0x8000) / 32768.0f)); + var_r31->unk_2C.z = lbl_1_data_E4[var_r27].z; + var_r31->unk_44 = var_r31->unk_48 = var_r31->unk_4C = 0.0f; + var_r31->unk_38.x = var_r31->unk_38.y = var_r31->unk_38.z = 0.0f; + var_r31->unk_20 = var_r31->unk_38.y; + var_r31->unk_24 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r31->unk_28 = 1.0f; + memset(&var_r31->unk_5C, 0, sizeof(M453DllUnkStruct)); + var_r31->unk_A0 = 1; + if ((lbl_1_bss_2[0] != 0) && (var_r31->unk_05 == 0)) { + lbl_1_bss_1E[lbl_1_bss_1C++] = var_r31->unk_00; + } + var_r28 = CharModelCreate(var_r31->unk_01, 4); + object->model[0] = var_r28; + Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r28); + for (var_r29 = 0; var_r29 < 8; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_01, lbl_1_data_C4[var_r29]); + } + CharModelMotionDataClose(var_r31->unk_01); + CharModelMotionSet(var_r31->unk_01, object->motion[var_r31->unk_18]); + omSetTra(object, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + Hu3DModelPosSet(var_r28, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + Hu3DModelRotSet(var_r28, 0.0f, 30.0f, 0.0f); + CharModelStepTypeSet(var_r31->unk_01, 1); + CharModelVoiceEnableSet(var_r31->unk_01, object->motion[3], 0); + object->func = fn_1_1FA0; +} + +void fn_1_1FA0(omObjData *object) +{ + s32 sp8 = *object->model; + M453DllWork2 *var_r31 = object->data; + var_r31->unk_10 = var_r31->unk_12 = 0; + var_r31->unk_14 = var_r31->unk_16 = 0; + switch (lbl_1_bss_3A) { + case 3: + break; + case 2: + if (!(lbl_1_bss_32 < 60.0f)) { + case 1: + var_r31->unk_18 = 3; + var_r31->unk_48 = 0.0f; + var_r31->unk_0C = 0; + } + break; + case 5: + object->func = fn_1_20EC; + break; + } + if (var_r31->unk_2C.y < 10.0f) { + omVibrate(var_r31->unk_00, 0xC, 6, 6); + var_r31->unk_2C.y = 10.0f; + var_r31->unk_0C = 1; + } + fn_1_2E24(object); +} + +void fn_1_20EC(omObjData *object) +{ + M453DllWork2 *var_r31; + s32 var_r29; + s32 var_r28; + + var_r29 = object->model[0]; + var_r31 = object->data; + if (var_r31->unk_07 != 0) { + if ((lbl_1_bss_3A == 6) && ((var_r31->unk_07 & 2) == 0)) { + if (var_r31->unk_05 != 0) { + fn_1_23E0(object); + } + else { + var_r31->unk_10 = HuPadStkX[var_r31->unk_04]; + var_r31->unk_12 = HuPadStkY[var_r31->unk_04]; + var_r31->unk_14 = HuPadBtnDown[var_r31->unk_04]; + var_r31->unk_16 = HuPadBtn[var_r31->unk_04]; + } + } + else { + var_r31->unk_10 = var_r31->unk_12 = 0; + var_r31->unk_14 = var_r31->unk_16 = 0; + } + switch (lbl_1_bss_3A) { + case 5: + case 6: + case 8: + break; + case 7: + case 9: + object->scale.y += 0.2f * (1.0f - object->scale.y); + var_r31->unk_38.y = fn_1_440C(var_r31->unk_38.y, 0.0f, 0.9f); + break; + case 10: + if (var_r31->unk_18 != 6) { + var_r31->unk_18 = 6; + } + break; + } + if ((var_r31->unk_07 & 2) != 0) { + var_r31->unk_10 = var_r31->unk_12 = 0; + var_r31->unk_14 = var_r31->unk_16 = 0; + if (object->scale.y < 0.2f) { + omVibrate(var_r31->unk_00, 0xC, 4, 2); + HuAudFXPlay(0x523); + var_r31->unk_07 = 0; + Hu3DModelShadowReset(var_r29); + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + lbl_1_data_0--; + var_r28 = fn_1_3E9C(0x220013, 0x64, fn_1_3F38); + Hu3DModelPosSet(var_r28, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + Hu3DModelLayerSet(var_r28, 2); + } + } + if (fn_1_8240() != 0) { + var_r31->unk_A0 = 0; + } + else if (((var_r31->unk_07 & 2) == 0) && (var_r31->unk_A0 == 0)) { + omVibrate(var_r31->unk_00, 0xC, 6, 6); + var_r31->unk_A0 = 1; + } + fn_1_2E24(object); + } +} + +void fn_1_23E0(omObjData *object) +{ + Vec sp38[6]; + float sp20[6]; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + M453DllWork2 *var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s16 var_r21; + s16 var_r20; + + var_r22 = 0; + var_r30 = 0; + var_r29 = 0; + for (; var_r30 < 4; var_r30++) { + var_r31 = lbl_1_bss_3C[var_r30]->data; + if ((var_r31->unk_05 == 0) && (var_r31->unk_07 != 0)) { + break; + } + } + var_r31 = object->data; + if ((var_r30 >= 4) && (var_r31->unk_9C == 0)) { + var_r22 = 1; + } + var_r28 = var_r31->unk_06; + var_r27 = var_r26 = var_r21 = var_r20 = 0; + switch (var_r31->unk_5C.unk_00) { + case 0: + if (fn_1_8240() != 0) { + var_r31->unk_5C.unk_00 = 1; + } + break; + case 1: + var_r31->unk_5C.unk_00 = 2; + var_r31->unk_5C.unk_02 = (s32)(60.0f * (1.2f - (0.2f * var_r28)) * (fn_1_43B8() / 65536.0f)); + var_r31->unk_5C.unk_04 = 500.0f * ((fn_1_43B8() - 0x8000) / 32768.0f); + var_r31->unk_5C.unk_08 = 200.0f * ((fn_1_43B8() - 0x8000) / 32768.0f); + var_r27 = var_r31->unk_10; + var_r26 = var_r31->unk_12; + break; + case 2: + sp8.x = var_r31->unk_5C.unk_04 - var_r31->unk_2C.x; + sp8.y = 0.0f; + sp8.z = var_r31->unk_5C.unk_08 - var_r31->unk_2C.z; + var_f31 = fn_1_5884(&sp8); + if (var_f31 < 20.0f) { + var_r31->unk_5C.unk_00 = 3; + } + else { + if (var_f31 >= 100.0f) { + var_f28 = 0.8f; + } + else { + var_f28 = 0.4f; + } + var_f30 = fn_1_440C(var_r31->unk_38.y, atan2d(sp8.x, sp8.z), var_f28); + var_f29 = 48.0f + (4.0f * var_r28); + var_r27 = var_f29 * sind(var_f30); + var_r26 = var_f29 * -cosd(var_f30); + if (fn_1_8240() == 0) { + var_r31->unk_5C.unk_00 = 0; + if (var_r31->unk_5C.unk_02 == 0) { + var_r31->unk_5C.unk_02 = -1; + } + } + else if (var_r31->unk_5C.unk_02 >= 0) { + if (var_r31->unk_5C.unk_02 == 0) { + if ((var_f31 < 150.0f) && (var_r31->unk_0E != 0)) { + var_r31->unk_5C.unk_00 = 3; + } + else if (((s32)((var_r28 + 2) * (fn_1_43B8() / 65536.0f)) != 0) && (var_r22 == 0)) { + var_r31->unk_5C.unk_00 = 4; + } + else { + var_r31->unk_5C.unk_00 = 1; + } + } + else { + var_r31->unk_5C.unk_02--; + } + } + } + break; + case 3: + sp8.x = var_r31->unk_5C.unk_04 - var_r31->unk_2C.x; + sp8.y = 0.0f; + sp8.z = var_r31->unk_5C.unk_08 - var_r31->unk_2C.z; + if ((fn_1_5884(&sp8) >= 30.000002f) && (var_r31->unk_0E == 0)) { + var_r31->unk_5C.unk_00 = 2; + } + else if (fn_1_8240() == 0) { + var_r31->unk_5C.unk_00 = 0; + } + else { + if (var_r31->unk_5C.unk_02 > 0) { + var_r31->unk_5C.unk_02--; + } + if (var_r31->unk_5C.unk_02 == 0) { + if (((s32)((var_r28 + 2) * (fn_1_43B8() / 65536.0f)) != 0) && (var_r22 == 0)) { + var_r31->unk_5C.unk_00 = 4; + } + else { + var_r31->unk_5C.unk_00 = 1; + } + } + } + break; + case 4: + var_r24 = fn_1_82AC(sp38); + for (var_r30 = 0; var_r30 < var_r24; var_r30++) { + VECSubtract(&sp38[var_r30], &var_r31->unk_2C, &sp8); + sp20[var_r30] = VECMag(&sp8); + } + for (var_r30 = 0; var_r30 < (var_r24 - 1); var_r30++) { + for (var_r29 = var_r30 + 1; var_r29 < var_r24; var_r29++) { + if (sp20[var_r30] > sp20[var_r29]) { + sp14 = sp38[var_r30]; + sp38[var_r30] = sp38[var_r29]; + sp38[var_r29] = sp14; + var_f31 = sp20[var_r30]; + sp20[var_r30] = sp20[var_r29]; + sp20[var_r29] = var_f31; + } + } + } + var_r25 = 0x3E8; + var_r23 = var_r25 * (fn_1_43B8() / 65536.0f); + for (var_r30 = 0; var_r30 < (var_r24 - 1); var_r30++) { + var_r25 = 0.1f * (var_r25 * (5.0f + var_r28)); + var_r23 -= var_r25; + if (var_r23 < 0) { + break; + } + } + var_r31->unk_5C.unk_04 = sp38[var_r30].x + (100.0f * (0.5f - (0.15f * var_r28)) * ((fn_1_43B8() - 0x8000) / 32768.0f)); + var_r31->unk_5C.unk_08 = sp38[var_r30].z + (100.0f * (0.5f - (0.15f * var_r28)) * ((fn_1_43B8() - 0x8000) / 32768.0f)); + var_r31->unk_5C.unk_00 = 2; + var_r31->unk_5C.unk_02 = -1; + var_r27 = var_r31->unk_10; + var_r26 = var_r31->unk_12; + break; + } + var_r31->unk_10 = var_r27; + var_r31->unk_12 = var_r26; + var_r31->unk_14 = var_r21; + var_r31->unk_16 = var_r20; +} + +void fn_1_2E24(omObjData *object) +{ + s16 spA; + s16 sp8; + float var_f29; + + M453DllWork2 *var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r28; + s16 var_r27; + s32 var_r25; + + var_r31 = object->data; + var_r25 = object->model[0]; + var_r28 = var_r31->unk_18; + var_r31->unk_50 = var_r31->unk_2C; + var_r30 = var_r31->unk_10; + var_r29 = var_r31->unk_12; + spA = var_r31->unk_14; + sp8 = var_r31->unk_16; + switch (var_r31->unk_18) { + case 0: + case 1: + case 2: + var_r31->unk_1C = 0.14f * sqrtf((var_r30 * var_r30) + (var_r29 * var_r29)); + if (var_r31->unk_1C > 0.1f) { + if (var_r31->unk_1C >= 6.0f) { + var_r28 = 2; + var_r27 = 1; + } + else { + var_r28 = 1; + var_r27 = 1; + } + var_f29 = atan2d(var_r30, -var_r29); + var_r31->unk_38.y = fn_1_440C(var_r31->unk_38.y, var_f29, 0.5f); + var_r31->unk_20 = var_r31->unk_38.y; + var_r31->unk_24 += 1.0f; + if (var_r31->unk_24 >= (0.5f * var_r31->unk_28)) { + var_r31->unk_24 = var_r31->unk_24 - (0.5f * var_r31->unk_28); + } + var_r31->unk_1C = var_r31->unk_1C * (1.0 + (0.25 * cosd((90.0f * (var_r31->unk_24 / (0.5f * var_r31->unk_28)))))); + } + else { + var_r31->unk_24 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r28 = 0; + var_r27 = 1; + } + var_r31->unk_48 = -2.4333334f; + break; + case 3: + var_r27 = 0; + if ((Hu3DData[var_r25].unk_0C == -1) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r31->unk_48 += -2.4333334f; + } + else { + var_r31->unk_48 = 0.0f; + } + if (var_r31->unk_0C != 0) { + if (var_r31->unk_0D != 0) { + var_r31->unk_48 = 0.0f; + var_r31->unk_0D = 0; + var_r28 = 5; + var_r27 = 0; + } + else { + var_r31->unk_48 *= -0.1f; + var_r31->unk_0C = 0; + var_r28 = 4; + var_r27 = 0; + } + } + break; + case 4: + var_r31->unk_48 += -2.4333334f; + if ((var_r31->unk_0C != 0) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r28 = 5; + var_r27 = 0; + } + break; + case 5: + if (CharModelMotionEndCheck(var_r31->unk_01) != 0) { + var_r28 = 0; + var_r27 = 1; + } + break; + case 6: + case 7: + var_r27 = 0; + var_r31->unk_48 = -2.4333334f; + break; + } + if (var_r31->unk_07 & 4) { + if (var_r31->unk_0A & 2) { + Hu3DModelAttrSet(var_r25, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(var_r25, HU3D_ATTR_DISPOFF); + } + if (--var_r31->unk_0A == 0) { + var_r31->unk_07 = var_r31->unk_07 & 0xFFFFFFFB; + } + } + var_r31->unk_44 = var_r31->unk_1C * sind(var_r31->unk_20); + var_r31->unk_4C = var_r31->unk_1C * cosd(var_r31->unk_20); + var_r31->unk_2C.x += var_r31->unk_44; + if (var_r31->unk_0C == 0) { + var_r31->unk_2C.y = var_r31->unk_2C.y + var_r31->unk_48; + } + var_r31->unk_2C.z += var_r31->unk_4C; + if (var_r28 != var_r31->unk_1A) { + var_r31->unk_1A = var_r28; + var_r31->unk_18 = var_r28; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_18], 0.0f, 8.0f, var_r27); + var_r31->unk_28 = CharModelMotionMaxTimeGet(var_r31->unk_01); + } + omSetTra(object, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + omSetRot(object, var_r31->unk_38.x, var_r31->unk_38.y, var_r31->unk_38.z); +} + +void fn_1_3648(void) +{ + s32 var_r31; + M453DllWork2 *var_r30; + s32 var_r29; + + var_r29 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = lbl_1_bss_3C[var_r31]->data; + if (var_r30->unk_07 != 0) { + var_r30->unk_0E = 0; + } + } + while ((fn_1_36DC() != 0) && (var_r29 < 0x32)) { + var_r29++; + } +} + +s32 fn_1_36DC(void) +{ + Vec sp14[4]; + Vec sp8; + float var_f30; + float var_f31; + + M453DllWork2 *var_r31; + s32 var_r30; + s32 var_r29; + M453DllWork2 *var_r28; + M453DllWork2 *var_r27; + s32 var_r26; + omObjData *var_r25; + + var_r26 = 0; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp14[var_r30].x = sp14[var_r30].y = sp14[var_r30].z = 0.0f; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r28 = lbl_1_bss_3C[var_r30]->data; + if (var_r28->unk_07 != 0) { + for (var_r29 = var_r30 + 1; var_r29 < 4; var_r29++) { + var_r27 = lbl_1_bss_3C[var_r29]->data; + if (var_r27->unk_07 != 0) { + VECSubtract(&var_r28->unk_2C, &var_r27->unk_2C, &sp8); + var_f31 = VECMag(&sp8); + if (var_f31 < 80.0f) { + VECNormalize(&sp8, &sp8); + var_f30 = 0.0001f + (0.5f * (80.0f - var_f31)); + VECScale(&sp8, &sp8, var_f30); + VECAdd(&sp14[var_r30], &sp8, &sp14[var_r30]); + VECSubtract(&sp14[var_r29], &sp8, &sp14[var_r29]); + var_r28->unk_0E++; + var_r27->unk_0E++; + var_r26++; + } + } + } + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r25 = lbl_1_bss_3C[var_r30]; + var_r31 = var_r25->data; + if (var_r31->unk_07 != 0) { + VECAdd(&var_r31->unk_2C, &sp14[var_r30], &var_r31->unk_2C); + if (var_r31->unk_2C.x > 660.0f) { + var_r31->unk_2C.x = 660.0f; + } + if (var_r31->unk_2C.x < -660.0f) { + var_r31->unk_2C.x = -660.0f; + } + if (var_r31->unk_2C.z > 360.0f) { + var_r31->unk_2C.z = 360.0f; + } + if (var_r31->unk_2C.z < -360.0f) { + var_r31->unk_2C.z = -360.0f; + } + omSetTra(var_r25, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + } + } + return var_r26; +} + +void fn_1_39C8(omObjData *object) +{ + s32 sp8[4]; + + s32 var_r31; + s32 var_r30; + M453DllWork2 *var_r29; + s32 var_r28; + s32 var_r27; + + if (lbl_1_bss_3A >= 6) { + if (fn_1_8240() != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_3C94(lbl_1_bss_3C[var_r31]); + } + } + else { + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + ((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_9C = 0; + if (((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_07 != 0) { + sp8[var_r30++] = var_r31; + } + } + if (var_r30 != 0) { + var_r31 = sp8[(s32)(var_r30 * (fn_1_43B8() / 65536.0f))]; + ((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_9C = 1; + } + } + var_r27 = 0; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r29 = lbl_1_bss_3C[var_r28]->data; + if (var_r29->unk_07 != 0) { + var_r29->unk_0E = 0; + } + } + while ((fn_1_36DC() != 0) && (var_r27 < 0x32)) { + var_r27++; + } + } +} + +void fn_1_3BB4(Vec *arg0, Vec *arg1) +{ + Vec sp18[6]; + Vec spC; + float var_f31; + float var_f30; + + s32 var_r31; + s32 var_r30; + + var_r30 = fn_1_844C(sp18); + var_f31 = 2000.0f; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + VECSubtract(&sp18[var_r31], arg0, &spC); + var_f30 = VECMag(&spC); + if (!(var_f30 >= var_f31)) { + var_f31 = var_f30; + *arg1 = sp18[var_r31]; + } + } +} + +float lbl_1_data_114[8] = { 40.0f, 40.0f, 40.0f, 40.0f, 40.0f, 100.0f, 40.0f, 80.0f }; + +float lbl_1_data_134[8] = { 160.0f, 160.0f, 180.0f, 160.0f, 160.0f, 180.0f, 180.0f, 200.0f }; + +void fn_1_3C94(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + + M453DllWork2 *var_r31; + s32 var_r29; + s16 var_r28; + + var_r31 = object->data; + if (var_r31->unk_07 != 0) { + var_f30 = fn_1_80B0(&var_r31->unk_2C, lbl_1_data_114[var_r31->unk_01]) - 10.0f; + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + if ((var_r31->unk_07 & 2) == 0) { + var_f31 = 1.0f; + if (var_f30 < lbl_1_data_134[var_r31->unk_01]) { + if (fn_1_867C(&var_r31->unk_2C, &sp8) != 0) { + var_r31->unk_2C.x = sp8.x; + var_r31->unk_2C.z = sp8.z; + } + else { + if ((fn_1_7F54(var_r31->unk_2C.x, var_r31->unk_2C.z) - 10.0f) < 100.0f) { + var_r31->unk_07 = var_r31->unk_07 | 2; + var_r28 = lbl_1_bss_0; + var_r29 = var_r31->unk_00; + GWPlayerCoinWinSet(var_r29, var_r28); + } + var_f31 = var_f30 / lbl_1_data_134[var_r31->unk_01]; + } + } + } + else { + var_f31 = var_f30 / lbl_1_data_134[var_r31->unk_01]; + } + if (object->scale.y < var_f31) { + var_f31 = object->scale.y + (0.2f * (var_f31 - object->scale.y)); + } + object->scale.y = var_f31; + } +} + +s16 fn_1_3E9C(s32 arg0, s16 arg1, ParticleHook arg2) +{ + ParticleData *var_r31; + s32 var_r30; + AnimData *var_r29; + + var_r29 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000)); + var_r30 = Hu3DParticleCreate(var_r29, arg1); + Hu3DParticleHookSet(var_r30, arg2); + var_r31 = Hu3DData[var_r30].unk_120; + var_r31->unk_2E = var_r30; + var_r31->unk_00 = var_r31->unk_02 = 0; + return var_r30; +} + +void fn_1_3F38(ModelData *model, ParticleData *particle, Mtx matrix) +{ + s16 sp8 = 0; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + HsfanimStruct01 *var_r31; + s32 var_r29; + + switch (particle->unk_00) { + case 0: + var_f29 = 360.0f / particle->unk_30; + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk08.x = sind((var_f29 * var_r29)) * (1.0f + (0.1f * (6.0f * ((fn_1_43B8() - 0x8000) / 32768.0f)))); + var_r31->unk08.y = 0.0f; + var_r31->unk08.z = cosd((var_f29 * var_r29)) * (1.0f + (0.1f * (6.0f * ((fn_1_43B8() - 0x8000) / 32768.0f)))); + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 0.0f; + var_r31->unk34.z = 0.0f; + } + particle->unk_02 = 0x1E; + particle->unk_00++; + case 1: + particle->unk_02--; + var_f31 = (30.0f - particle->unk_02) / 30.0f; + var_f30 = particle->unk_02 / 30.0f; + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk34.x += 5.0f * var_f30 * var_r31->unk08.x; + var_r31->unk34.y = 20.0f; + var_r31->unk34.z += 5.0f * var_f30 * var_r31->unk08.z; + var_r31->unk2C = 20.0f + (60.0f * var_f31); + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 64.0f * (1.0f - (var_f31 * var_f31)); + } + if (particle->unk_02 == 0) { + particle->unk_00++; + } + break; + case 2: + Hu3DModelKill(particle->unk_2E); + return; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +u32 lbl_1_data_154 = 0x41C64E6D; + +s32 fn_1_43B8(void) +{ + lbl_1_data_154 *= 0x41C64E6D; + lbl_1_data_154 += 0x3039; + return lbl_1_data_154 >> 0x10; +} + +float fn_1_440C(float arg8, float arg9, float argA) +{ + float var_f31; + + if (arg8 > 180.0f) { + arg8 -= 360.0f; + } + else if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + if (arg9 > 180.0f) { + arg9 -= 360.0f; + } + else if (arg9 <= -180.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg8 = arg9 + (var_f31 * argA); + if (arg8 > 180.0f) { + return arg8 - 360.0f; + } + if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + return arg8; +} + +void fn_1_4574(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + if (argA != 0.0f) { + MTXRotRad(arg0, 0x5A, 0.017453292f * argA); + } + else { + MTXIdentity(arg0); + } + if (arg8 != 0.0f) { + MTXRotRad(sp38, 0x58, 0.017453292f * arg8); + MTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + MTXRotRad(sp8, 0x59, 0.017453292f * arg9); + MTXConcat(sp8, arg0, arg0); + } +} +// TODO figue out type of arg0 +void fn_1_4694(float *arg0, Vec *arg1) +{ + float var_f29; + float var_f28; + + arg1->x = atan2d(arg0[10], arg0[6]); + arg1->z = atan2d(arg0[0], arg0[1]); + var_f29 = -arg0[2]; + var_f28 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? -(1.0 - (var_f29 * var_f29)) : 1.0 - (var_f29 * var_f29)); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod(180.0f + arg1->x, 360.0); + arg1->z = fmod(180.0f + arg1->z, 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(var_f28, var_f29); +} + +float fn_1_49A0(float arg8, float arg9, float argA, float argB) +{ + float var_f31; + float var_f30; + + var_f31 = 1.0 - arg8; + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_4A18(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + s32 i; + + for (i = 0; i < 3; i++) { + *arg3 = fn_1_49A0(arg8, *arg0++, *arg1++, *arg2++); + arg3++; + } +} + +float fn_1_4B34(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA))); + return var_f31; +} + +void fn_1_4BAC(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + float spC[3]; + float sp8; + float var_f31; + float var_f30; + float var_f28; + float var_f29; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_4B34(arg8, *arg0++, *arg1++, *arg2++); + } + + var_f30 = (spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1])); + var_f29 = sqrtf(var_f30); + if (var_f29) { + var_f29 = 1.0 / var_f29; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3 = var_f29 * spC[var_r31]; + arg3++; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} + +void fn_1_4E84(float *arg0, float *arg1, float *arg2, s32 arg3) +{ + float sp48[16]; + float sp8[16]; + double var_f31; + + s32 var_r31; + + arg2[0] = 0.0f; + arg2[arg3 - 1] = 0.0f; + for (var_r31 = 0; var_r31 < (arg3 - 1); var_r31++) { + sp48[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp48[var_r31] == 0.0f) { + sp8[var_r31 + 1] = 0.0f; + } + else { + sp8[var_r31 + 1] = (arg1[var_r31 + 1] - arg1[var_r31]) / sp48[var_r31]; + } + } + arg2[1] = sp8[2] - sp8[1]; + sp8[1] = 2.0f * (arg0[2] - arg0[0]); + for (var_r31 = 1; var_r31 < (arg3 - 2); var_r31++) { + var_f31 = sp48[var_r31] / sp8[var_r31]; + arg2[var_r31 + 1] = (sp8[var_r31 + 2] - sp8[var_r31 + 1]) - (var_f31 * arg2[var_r31]); + sp8[var_r31 + 1] = (2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (var_f31 * sp48[var_r31]); + } + arg2[arg3 - 2] -= sp48[arg3 - 2] * arg2[arg3 - 1]; + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (sp8[var_r31] == 0.0f) { + arg2[var_r31] = 0.0f; + } + else { + arg2[var_r31] = (arg2[var_r31] - (sp48[var_r31] * arg2[var_r31 + 1])) / sp8[var_r31]; + } + } +} + +float fn_1_513C(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31 = arg8; + arg8 = arg8 - var_r31; + var_f31 = arg0[var_r31 + 1] - arg0[var_r31]; + var_f30 = var_f31 * arg8; + var_f29 = arg1[var_r31] + + (var_f30 + * ((var_f30 * ((3.0f * arg2[var_r31]) + ((var_f30 * (arg2[var_r31 + 1] - arg2[var_r31])) / var_f31))) + + (((arg1[var_r31 + 1] - arg1[var_r31]) / var_f31) - (var_f31 * ((2.0f * arg2[var_r31]) + arg2[var_r31 + 1]))))); + if (var_f31 == 0.0f) { + var_f29 = arg1[var_r31]; + } + return var_f29; +} + +void fn_1_5290(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 arg3) +{ + float spD4[16]; + float sp94[16]; + float sp54[16]; + float sp14[16]; + Vec sp8; + double var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r27; + + arg0[0] = 0.0f; + for (var_r30 = 1; var_r30 < arg3; var_r30++) { + VECSubtract((Vec *)&arg1[var_r30], (Vec *)&arg1[var_r30 - 1], &sp8); + arg0[var_r30] = arg0[var_r30 - 1] + VECMag(&sp8); + } + for (var_r27 = 0; var_r27 < 3; var_r27++) { + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + spD4[var_r30] = arg1[var_r30][var_r27]; + } + sp94[0] = 0.0f; + sp94[arg3 - 1] = 0.0f; + for (var_r31 = 0; var_r31 < (arg3 - 1); var_r31++) { + sp14[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp14[var_r31] == 0.0f) { + sp54[var_r31 + 1] = 0.0f; + } + else { + sp54[var_r31 + 1] = (spD4[var_r31 + 1] - spD4[var_r31]) / sp14[var_r31]; + } + } + sp94[1] = sp54[2] - sp54[1]; + sp54[1] = 2.0f * (arg0[2] - arg0[0]); + for (var_r31 = 1; var_r31 < (arg3 - 2); var_r31++) { + var_f31 = sp14[var_r31] / sp54[var_r31]; + sp94[var_r31 + 1] = (sp54[var_r31 + 2] - sp54[var_r31 + 1]) - (var_f31 * sp94[var_r31]); + sp54[var_r31 + 1] = (2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (var_f31 * sp14[var_r31]); + } + sp94[arg3 - 2] -= sp14[arg3 - 2] * sp94[arg3 - 1]; + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (sp54[var_r31] == 0.0f) { + sp94[var_r31] = 0.0f; + } + else { + sp94[var_r31] = (sp94[var_r31] - (sp14[var_r31] * sp94[var_r31 + 1])) / sp54[var_r31]; + } + } + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + arg2[var_r30][var_r27] = sp94[var_r30]; + } + } +} + +void fn_1_5670(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*arg3)[3], s32 arg4) +{ + float sp48[16]; + float sp8[16]; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + for (var_r30 = 0; var_r30 < arg4; var_r30++) { + sp48[var_r30] = arg2[var_r30][var_r29]; + sp8[var_r30] = arg3[var_r30][var_r29]; + } + arg0[var_r29] = fn_1_513C(arg8, arg1, sp48, sp8, 3); + } +} + +float fn_1_5884(Vec *arg0) +{ + float sp8; + float var_f30; + float var_f29; + + var_f30 = (arg0->z * arg0->z) + ((arg0->x * arg0->x) + (arg0->y * arg0->y)); + var_f30 = sqrtf(var_f30); + if (var_f30 != 0.0f) { + var_f29 = 1.0f / var_f30; + arg0->x *= var_f29; + arg0->y *= var_f29; + arg0->z *= var_f29; + } + else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return var_f30; +} + +float fn_1_5A1C(Vec arg0, Vec arg1, Vec *arg2, float arg8) +{ + if (arg8 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg8 = 0.0f; + return arg8; + } + if (arg8 >= 1.0f) { + arg2->x = arg0.x + arg1.x; + arg2->y = arg0.y + arg1.y; + arg2->z = arg0.z + arg1.z; + arg8 = 1.0f; + return arg8; + } + arg2->x = arg0.x + (arg8 * arg1.x); + arg2->y = arg0.y + (arg8 * arg1.y); + arg2->z = arg0.z + (arg8 * arg1.z); + return arg8; +} + +float fn_1_5AF4(Vec arg0, Vec arg1, Vec arg2) +{ + float var_f31 = (arg2.z * (arg1.z - arg0.z)) + ((arg2.x * (arg1.x - arg0.x)) + (arg2.y * (arg1.y - arg0.y))); + float var_f30 = -((arg2.z * arg2.z) + ((arg2.x * arg2.x) + (arg2.y * arg2.y))); + if (var_f30 != 0.0f) { + var_f31 /= var_f30; + } + return var_f31; +} + +float fn_1_5BB0(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp44; + float var_f28; + + if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f28 = fn_1_5AF4(*arg0, *arg1, *arg2); + fn_1_5A1C(*arg1, *arg2, &sp44, var_f28); + return ((arg0->z - sp44.z) * (arg0->z - sp44.z)) + (((arg0->x - sp44.x) * (arg0->x - sp44.x)) + ((arg0->y - sp44.y) * (arg0->y - sp44.y))); +} + +float fn_1_5EEC(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + float var_f30; + if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f30 = fn_1_5AF4(*arg0, *arg1, *arg2); + fn_1_5A1C(*arg1, *arg2, arg3, var_f30); + + arg4->x = arg3->x - arg0->x; + arg4->y = arg3->y - arg0->y; + arg4->z = arg3->z - arg0->z; + + return fn_1_5884(arg4); +} + +s32 fn_1_639C(void) +{ + return lbl_1_bss_0; +} + +s32 fn_1_63AC(void) +{ + s32 var_r31; + omObjData **var_r30; + M453DllWork2 *var_r29; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < lbl_1_bss_1C; var_r31++) { + var_r29 = var_r30[lbl_1_bss_1E[var_r31]]->data; + if (var_r29->unk_07 != 0) { + return 1; + } + } + return 0; +} + +void fn_1_6448(void) +{ + s32 var_r31; + M453DllWork2 *var_r30; + omObjData **var_r29; + s32 var_r28; + s16 var_r27; + + var_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = var_r29[var_r31]->data; + if (var_r30->unk_07 != 0) { + var_r27 = lbl_1_bss_0; + var_r28 = var_r30->unk_00; + GWPlayerCoinWinSet(var_r28, var_r27); + } + } +} diff --git a/src/REL/m453Dll/map.c b/src/REL/m453Dll/map.c new file mode 100644 index 00000000..6771a755 --- /dev/null +++ b/src/REL/m453Dll/map.c @@ -0,0 +1,1091 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" +#include "string.h" + +#include "REL/m453Dll.h" + +typedef struct M453MapUnkStruct { + struct { + u8 unk_00_field0 : 1; + }; + s32 unk_04; + float unk_08; + s32 unk_0C[6]; + s32 unk_24[0xC]; +} M453MapUnkStruct; /* size = 0x54 */ + +void fn_1_6768(omObjData *object); +void fn_1_67EC(omObjData *object); +void fn_1_67F0(omObjData *object); +void fn_1_695C(omObjData *object); +void fn_1_6C74(omObjData *object); +void fn_1_6EB4(omObjData *object); +void fn_1_6FC4(omObjData *object); +void fn_1_73C4(omObjData *object); +void fn_1_7978(void); +void fn_1_7A74(s16 arg0); + +Vec lbl_1_data_158[0x10] = { + { 92.39f, 0.0f, 38.27f }, + { 100.0f, 0.0f, 0.0f }, + { 92.39f, 0.0f, -38.27f }, + { 70.71f, 0.0f, -70.71f }, + { 38.27f, 0.0f, -92.39f }, + { 0.0f, 0.0f, -100.0f }, + { -38.27f, 0.0f, -92.39f }, + { -70.71f, 0.0f, -70.71f }, + { -92.39f, 0.0f, -38.27f }, + { -100.0f, 0.0f, 0.0f }, + { -92.39f, 0.0f, 38.27f }, + { -70.71f, 0.0f, 70.71f }, + { -38.27f, 0.0f, 92.39f }, + { 0.0f, 0.0f, 100.0f }, + { 38.27f, 0.0f, 92.39f }, + { 70.71f, 0.0f, 70.71f }, +}; + +Vec lbl_1_data_218[0x10] = { + { 55.43f, 0.0f, 22.96f }, + { 60.0f, 0.0f, 0.0f }, + { 55.43f, 0.0f, -22.96f }, + { 42.43f, 0.0f, -42.43f }, + { 22.96f, 0.0f, -55.43f }, + { 0.0f, 0.0f, -60.0f }, + { -22.96f, 0.0f, -55.43f }, + { -42.43f, 0.0f, -42.43f }, + { -55.43f, 0.0f, -22.96f }, + { -60.0f, 0.0f, 0.0f }, + { -55.43f, 0.0f, 22.96f }, + { -42.43f, 0.0f, 42.43f }, + { -22.96f, 0.0f, 55.43f }, + { 0.0f, 0.0f, 60.0f }, + { 22.96f, 0.0f, 55.43f }, + { 42.43f, 0.0f, 42.43f }, +}; + +Vec lbl_1_data_2D8[0xA] = { + { 38.79f, 0.0f, -53.4f }, + { 0.0f, 0.0f, -120.0f }, + { -38.79f, 0.0f, -53.4f }, + { -114.13f, 0.0f, -37.08f }, + { -62.77f, 0.0f, 20.4f }, + { -70.53f, 0.0f, 97.08f }, + { 0.0f, 0.0f, 66.0f }, + { 70.53f, 0.0f, 97.08f }, + { 62.77f, 0.0f, 20.4f }, + { 114.13f, 0.0f, -37.08f }, +}; + +Vec lbl_1_data_350[0xA] = { + { 21.34f, 0.0f, -29.37f }, + { 0.0f, 0.0f, -66.0f }, + { -21.34f, 0.0f, -29.37f }, + { -62.77f, 0.0f, -20.4f }, + { -34.52f, 0.0f, 11.22f }, + { -38.79f, 0.0f, 53.4f }, + { 0.0f, 0.0f, 36.3f }, + { 38.79f, 0.0f, 53.4f }, + { 34.52f, 0.0f, 11.22f }, + { 62.77f, 0.0f, -20.4f }, +}; + +Vec lbl_1_data_3C8[0x10] = { + { 110.87f, 0.0f, 45.92f }, + { 120.0f, 0.0f, 0.0f }, + { 110.87f, 0.0f, -45.92f }, + { 84.85f, 0.0f, -84.85f }, + { 45.92f, 0.0f, -110.87f }, + { 0.0f, 0.0f, -120.0f }, + { -45.92f, 0.0f, -110.87f }, + { -84.85f, 0.0f, -84.85f }, + { -110.87f, 0.0f, -45.92f }, + { -120.0f, 0.0f, 0.0f }, + { -110.87f, 0.0f, 45.92f }, + { -84.85f, 0.0f, 84.85f }, + { -45.92f, 0.0f, 110.87f }, + { 0.0f, 0.0f, 120.0f }, + { 45.92f, 0.0f, 110.87f }, + { 84.85f, 0.0f, 84.85f }, +}; + +Vec lbl_1_data_488[0x10] = { + { 73.17f, 0.0f, 30.31f }, + { 79.2f, 0.0f, 0.0f }, + { 73.17f, 0.0f, -30.31f }, + { 56.0f, 0.0f, -56.0f }, + { 30.31f, 0.0f, -73.17f }, + { 0.0f, 0.0f, -79.2f }, + { -30.31f, 0.0f, -73.17f }, + { -56.0f, 0.0f, -56.0f }, + { -73.17f, 0.0f, -30.31f }, + { -79.2f, 0.0f, 0.0f }, + { -73.17f, 0.0f, 30.31f }, + { -56.0f, 0.0f, 56.0f }, + { -30.31f, 0.0f, 73.17f }, + { 0.0f, 0.0f, 79.2f }, + { 30.31f, 0.0f, 73.17f }, + { 56.0f, 0.0f, 56.0f }, +}; + +Vec lbl_1_data_548[0xA] = { + { 48.49f, 0.0f, -66.74f }, + { 0.0f, 0.0f, -150.0f }, + { -48.49f, 0.0f, -66.74f }, + { -142.66f, 0.0f, -46.35f }, + { -78.46f, 0.0f, 25.49f }, + { -88.17f, 0.0f, 121.35f }, + { 0.0f, 0.0f, 82.5f }, + { 88.17f, 0.0f, 121.35f }, + { 78.46f, 0.0f, 25.49f }, + { 142.66f, 0.0f, -46.35f }, +}; + +Vec lbl_1_data_5C0[0xA] = { + { 29.09f, 0.0f, -40.05f }, + { 0.0f, 0.0f, -90.0f }, + { -29.09f, 0.0f, -40.05f }, + { -85.59f, 0.0f, -27.81f }, + { -47.08f, 0.0f, 15.3f }, + { -52.9f, 0.0f, 72.81f }, + { 0.0f, 0.0f, 49.5f }, + { 52.9f, 0.0f, 72.81f }, + { 47.08f, 0.0f, 15.3f }, + { 85.59f, 0.0f, -27.81f }, +}; + +Vec lbl_1_data_638[0x16] = { + { 129.1f, 0.0f, 54.6f }, + { 140.0f, 0.0f, 0.0f }, + { 129.3f, 0.0f, -53.6f }, + { 99.0f, 0.0f, -99.0f }, + { 53.6f, 0.0f, -129.3f }, + { 0.0f, 0.0f, -140.0f }, + { -53.6f, 0.0f, -129.3f }, + { -99.0f, 0.0f, -99.0f }, + { -129.4f, 0.0f, -53.5f }, + { -140.0f, 0.0f, 0.0f }, + { -136.0f, 0.0f, 20.4f }, + { -102.1f, 0.0f, -7.6f }, + { -70.0f, 0.0f, -14.0f }, + { -37.8f, 0.0f, -7.6f }, + { -10.6f, 0.0f, 10.6f }, + { 7.6f, 0.0f, 37.8f }, + { 14.0f, 0.0f, 70.0f }, + { 7.6f, 0.0f, 102.2f }, + { -20.4f, 0.0f, 136.0f }, + { 0.1f, 0.0f, 140.1f }, + { 53.9f, 0.0f, 129.5f }, + { 99.5f, 0.0f, 99.0f }, +}; + +Vec lbl_1_data_740[0x16] = { + { 95.9f, 0.0f, 42.9f }, + { 106.6f, 0.0f, 0.4f }, + { 98.4f, 0.0f, -37.2f }, + { 81.7f, 0.0f, -65.9f }, + { 55.4f, 0.0f, -89.6f }, + { 11.5f, 0.0f, -101.7f }, + { -24.5f, 0.0f, -99.9f }, + { -60.9f, 0.0f, -88.6f }, + { -98.7f, 0.0f, -64.4f }, + { -110.4f, 0.0f, -41.5f }, + { -110.4f, 0.0f, -30.8f }, + { -90.4f, 0.0f, -42.3f }, + { -53.8f, 0.0f, -48.5f }, + { -14.6f, 0.0f, -40.5f }, + { 17.1f, 0.0f, -16.3f }, + { 35.8f, 0.0f, 28.2f }, + { 35.8f, 0.0f, 65.6f }, + { 24.7f, 0.0f, 101.6f }, + { 19.6f, 0.0f, 114.6f }, + { 34.9f, 0.0f, 114.5f }, + { 62.9f, 0.0f, 99.0f }, + { 83.0f, 0.0f, 73.2f }, +}; + +Vec lbl_1_data_848[0x16] = { + { 110.9f, 0.0f, 45.9f }, + { 120.0f, 0.0f, 0.0f }, + { 110.9f, 0.0f, -45.8f }, + { 84.8f, 0.0f, -84.9f }, + { 45.9f, 0.0f, -110.9f }, + { 0.0f, 0.0f, -120.0f }, + { -45.9f, 0.0f, -110.9f }, + { -84.9f, 0.0f, -84.8f }, + { -110.9f, 0.0f, -45.9f }, + { -120.0f, 0.0f, 0.0f }, + { -116.5f, 0.0f, 17.5f }, + { -87.6f, 0.0f, -6.6f }, + { -60.0f, 0.0f, -12.0f }, + { -32.4f, 0.0f, -6.5f }, + { -9.1f, 0.0f, 9.1f }, + { 6.5f, 0.0f, 32.5f }, + { 12.0f, 0.0f, 60.0f }, + { 6.5f, 0.0f, 87.6f }, + { -17.5f, 0.0f, 116.5f }, + { 0.0f, 0.0f, 120.0f }, + { 45.9f, 0.0f, 110.9f }, + { 84.8f, 0.0f, 84.9f }, +}; + +Vec lbl_1_data_950[0x16] = { + { 80.0f, 0.0f, 31.0f }, + { 83.9f, 0.0f, -0.1f }, + { 77.2f, 0.0f, -31.7f }, + { 60.4f, 0.0f, -56.8f }, + { 35.6f, 0.0f, -77.4f }, + { -0.5f, 0.0f, -84.1f }, + { -31.5f, 0.0f, -82.9f }, + { -58.9f, 0.0f, -71.4f }, + { -86.3f, 0.0f, -49.4f }, + { -91.5f, 0.0f, -36.4f }, + { -91.5f, 0.0f, -27.3f }, + { -82.1f, 0.0f, -29.8f }, + { -54.7f, 0.0f, -36.2f }, + { -21.9f, 0.0f, -30.9f }, + { 13.3f, 0.0f, -10.2f }, + { 28.3f, 0.0f, 18.3f }, + { 33.4f, 0.0f, 58.4f }, + { 28.0f, 0.0f, 81.6f }, + { 20.7f, 0.0f, 93.3f }, + { 30.4f, 0.0f, 93.3f }, + { 55.4f, 0.0f, 82.2f }, + { 70.4f, 0.0f, 59.3f }, +}; + +s32 lbl_1_data_A58[0xC] = { + 0x220004, + 0x220005, + 0x220006, + 0x220009, + 0x22000C, + 0x22000F, + 0x220007, + 0x220008, + 0x22000A, + 0x22000B, + 0x22000D, + 0x22000E, +}; + +Vec lbl_1_data_A88[6] = { + { -400.0f, 0.0f, 300.0f }, + { 0.0f, 0.0f, 300.0f }, + { 400.0f, 0.0f, 300.0f }, + { -400.0f, 0.0f, 700.0f }, + { 0.0f, 0.0f, 700.0f }, + { 400.0f, 0.0f, 700.0f }, +}; + +s32 lbl_1_data_AD0[3] = { 6, 8, 0xA }; + +s32 lbl_1_data_ADC[3] = { 7, 9, 0xB }; + +s32 lbl_1_data_AE8[5] = { 1, 2, 3, 4, 5 }; + +Vec *lbl_1_data_AFC[6] = { + lbl_1_data_3C8, + lbl_1_data_158, + lbl_1_data_548, + lbl_1_data_2D8, + lbl_1_data_638, + lbl_1_data_848, +}; + +s32 lbl_1_data_B14[6] = { 0x10, 0x10, 0xA, 0xA, 0x16, 0x16 }; + +Vec lbl_1_data_B2C[6] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, -20.0f }, + { 0.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f }, +}; + +Vec *lbl_1_data_B74[6][2] = { + { lbl_1_data_3C8, lbl_1_data_488 }, + { lbl_1_data_158, lbl_1_data_218 }, + { lbl_1_data_548, lbl_1_data_5C0 }, + { lbl_1_data_2D8, lbl_1_data_350 }, + { lbl_1_data_638, lbl_1_data_740 }, + { lbl_1_data_848, lbl_1_data_950 }, +}; + +s32 lbl_1_data_BA4[6] = { 0x10, 0x10, 0xA, 0xA, 0x16, 0x16 }; + +omObjData *lbl_1_bss_BC; +omObjData *lbl_1_bss_B8; +omObjData *lbl_1_bss_A4[5]; +s32 lbl_1_bss_A0; +s32 lbl_1_bss_9C; +s32 lbl_1_bss_98; +s32 lbl_1_bss_94; +s32 lbl_1_bss_90; +s32 lbl_1_bss_8C; +float lbl_1_bss_88; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; +s32 lbl_1_bss_7C; +s32 lbl_1_bss_78; +s32 lbl_1_bss_60[6]; + +void fn_1_64E8(Process *process) +{ + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r31; + + sp20.x = 0.0f; + sp20.y = 3000.0f; + sp20.z = 50.0f; + sp14.x = 0.0f; + sp14.y = 1.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + lbl_1_bss_BC = omAddObjEx(process, 0xA, 2, 0, -1, fn_1_6768); + lbl_1_bss_B8 = omAddObjEx(process, 0xC, 4, 0, -1, fn_1_67F0); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_A4[var_r31] = omAddObjEx(process, 0xE, 7, 0, -1, fn_1_6C74); + } + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.65f); + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + lbl_1_bss_A0 = 0; + lbl_1_bss_9C = lbl_1_bss_98 = 2; + lbl_1_bss_8C = 0; + lbl_1_bss_90 = 0; + lbl_1_bss_88 = 0.75f; + lbl_1_bss_7C = 3; + lbl_1_bss_78 = 0; + lbl_1_bss_84 = 0; + lbl_1_bss_80 = 0; + memset(lbl_1_bss_60, 0, 0x18); +} + +void fn_1_6748(void) +{ + fn_1_7978(); +} + +void fn_1_6768(omObjData *object) +{ + object->stat |= 0x100; + object->model[0] = Hu3DModelCreateFile(0x220010); + object->model[1] = Hu3DModelCreateFile(0x220011); + object->func = fn_1_67EC; +} + +void fn_1_67EC(omObjData *object) { } + +void fn_1_67F0(omObjData *object) +{ + object->stat |= 0x100; + object->model[0] = Hu3DModelCreateFile(0x220000); + object->model[1] = Hu3DModelCreateFile(0x220003); + object->model[2] = Hu3DModelCreateFile(0x220001); + object->model[3] = Hu3DModelCreateFile(0x220002); + Hu3DMotionSpeedSet(object->model[2], 0.0f); + Hu3DModelShadowSet(object->model[1]); + Hu3DModelPosSet(object->model[1], 0.0f, 0.0f, -500.0f); + Hu3DData[object->model[3]].unk_94 = 0.0f; + Hu3DData[object->model[3]].unk_98 = 2.0f; + object->work[3] = 0x1E; + object->func = fn_1_695C; +} + +void fn_1_695C(omObjData *object) +{ + ModelData *var_r30; + M453MapUnkStruct *var_r29; + + if (lbl_1_bss_84 != 0) { + if (lbl_1_bss_80 == 0) { + if (object->work[0] < 60.0f) { + object->work[0] += 1; + var_r30 = &Hu3DData[object->model[1]]; + var_r30->rot.x = (-120.0f * object->work[0]) / 60.0f; + } + else { + lbl_1_bss_80 ^= 1; + lbl_1_bss_84 = 0; + } + } + else if (object->work[0] != 0) { + object->work[0] -= 1; + var_r30 = &Hu3DData[object->model[1]]; + var_r30->rot.x = (-120.0f * object->work[0]) / 60.0f; + } + else { + lbl_1_bss_80 ^= 1; + lbl_1_bss_84 = 0; + } + } + var_r29 = lbl_1_bss_A4[lbl_1_bss_9C]->data; + if (lbl_1_bss_94 != 0) { + lbl_1_bss_94 = 0; + lbl_1_bss_90 = 1; + } + if (lbl_1_bss_9C != lbl_1_bss_98) { + lbl_1_bss_90 = 0; + lbl_1_bss_8C = 0; + } + lbl_1_bss_98 = lbl_1_bss_9C; + if (var_r29->unk_00_field0) { + lbl_1_bss_9C = (lbl_1_bss_9C + 1) % 5; + lbl_1_bss_8C = 1; + } + if (object->work[3] != 0) { + if (--object->work[3] == 0) { + HuAudFXPlay(0x521); + } + } +} + +void fn_1_6C74(omObjData *object) +{ + s32 var_r31; + M453MapUnkStruct *var_r29; + + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, 0x10000000); + object->data = var_r29; + memset(object->data, 0, 0x54); + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + var_r29->unk_24[var_r31] = -1; + } + for (var_r31 = 0; (u32)var_r31 < 0xC; var_r31++) { + var_r29->unk_24[var_r31] = Hu3DModelCreateFile(lbl_1_data_A58[var_r31]); + Hu3DModelAttrSet(var_r29->unk_24[var_r31], HU3D_ATTR_DISPOFF); + } + object->model[0] = var_r29->unk_24[0]; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + var_r29->unk_00_field0 = 0; + var_r29->unk_04 = 4 - lbl_1_bss_A0; + fn_1_6FC4(object); + object->trans.y = 5.0f; + object->trans.z = -500.0f; + switch (var_r29->unk_04) { + case 0: + case 1: + break; + case 2: + for (var_r31 = 0; var_r31 < 7; var_r31++) { + Hu3DModelShadowSet(object->model[var_r31]); + } + break; + case 3: + for (var_r31 = 0; var_r31 < 7; var_r31++) { + Hu3DModelShadowMapSet(object->model[var_r31]); + } + object->trans.y = 2.5f; + break; + case 4: + for (var_r31 = 0; var_r31 < 7; var_r31++) { + Hu3DModelShadowMapSet(object->model[var_r31]); + } + object->trans.y = 0.0f; + break; + } + fn_1_6EB4(object); + lbl_1_bss_A0++; + object->func = fn_1_73C4; +} + +void fn_1_6EB4(omObjData *object) +{ + Mtx sp38; + Mtx sp8; + s32 var_r30; + + MTXTrans(sp38, object->trans.x, object->trans.y, object->trans.z); + mtxRot(sp8, object->rot.x, object->rot.y, object->rot.z); + MTXConcat(sp38, sp8, sp38); + for (var_r30 = 0; var_r30 < 6; var_r30++) { + MTXTrans(sp8, lbl_1_data_A88[var_r30].x, lbl_1_data_A88[var_r30].y, lbl_1_data_A88[var_r30].z); + MTXConcat(sp38, sp8, sp8); + Hu3DModelPosSet(object->model[var_r30 + 1], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(object->model[var_r30 + 1], object->rot.x, object->rot.y, object->rot.z); + } +} + +void fn_1_6FC4(omObjData *object) +{ + s32 sp8[6]; + + s32 var_r31; + M453MapUnkStruct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = object->data; + for (var_r31 = 0; var_r31 < 0x64; var_r31++) { + var_r29 = ((u8)frand() * 3) >> 8; + var_r28 = ((u8)frand() * 3) >> 8; + var_r26 = lbl_1_data_AD0[var_r29]; + lbl_1_data_AD0[var_r29] = lbl_1_data_AD0[var_r28]; + lbl_1_data_AD0[var_r28] = var_r26; + var_r29 = ((u8)frand() * 3) >> 8; + var_r28 = ((u8)frand() * 3) >> 8; + var_r26 = lbl_1_data_ADC[var_r29]; + lbl_1_data_ADC[var_r29] = lbl_1_data_ADC[var_r28]; + lbl_1_data_ADC[var_r28] = var_r26; + var_r29 = ((u8)frand() * 5) >> 8; + var_r28 = ((u8)frand() * 5) >> 8; + var_r26 = lbl_1_data_AE8[var_r29]; + lbl_1_data_AE8[var_r29] = lbl_1_data_AE8[var_r28]; + lbl_1_data_AE8[var_r28] = var_r26; + } + var_r25 = 0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (lbl_1_bss_60[var_r31] < 6) { + sp8[var_r25++] = var_r31; + } + } + for (var_r31 = 0; var_r31 < 0x64; var_r31++) { + var_r29 = (var_r25 * (u8)frand()) >> 8; + var_r28 = (var_r25 * (u8)frand()) >> 8; + var_r26 = sp8[var_r29]; + sp8[var_r29] = sp8[var_r28]; + sp8[var_r28] = var_r26; + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + var_r30->unk_0C[var_r31] = 0; + } + for (var_r31 = 0; var_r31 < lbl_1_bss_78; var_r31++) { + var_r30->unk_0C[sp8[var_r31]] = lbl_1_data_ADC[var_r31]; + } + while (var_r31 < lbl_1_bss_7C) { + var_r30->unk_0C[sp8[var_r31]] = lbl_1_data_AD0[var_r31]; + var_r31++; + } + var_r24 = 0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (var_r30->unk_0C[var_r31] == 0) { + var_r30->unk_0C[var_r31] = lbl_1_data_AE8[var_r24++]; + } + } + memcpy(lbl_1_bss_60, &var_r30->unk_0C, 0x18); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (object->model[var_r31 + 1] >= 0) { + Hu3DModelAttrSet(object->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + } + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + object->model[var_r31 + 1] = var_r30->unk_24[var_r30->unk_0C[var_r31]]; + Hu3DModelAttrReset(object->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_73C4(omObjData *object) +{ + Mtx sp38; + Mtx sp8; + M453MapUnkStruct *var_r30; + s32 var_r29; + s32 var_r28; + ModelData *var_r27; + + var_r30 = object->data; + if (lbl_1_bss_90 == 0) { + if ((lbl_1_bss_84 != 0) && (var_r30->unk_04 < 3)) { + var_r27 = &Hu3DData[lbl_1_bss_B8->model[1]]; + object->rot.x = var_r27->rot.x; + switch (var_r30->unk_04) { + case 0: + object->trans.z = -500.0f + ((2.5f * lbl_1_bss_B8->work[0]) / 60.0f); + break; + case 1: + object->trans.z = -500.0f + ((5.0f * lbl_1_bss_B8->work[0]) / 60.0f); + break; + case 2: + object->trans.z = -500.0f + ((7.5f * lbl_1_bss_B8->work[0]) / 60.0f); + break; + } + } + else { + return; + } + } + else { + switch (var_r30->unk_04) { + case 0: + if (lbl_1_bss_8C != 0) { + object->trans.z = -495.0f; + var_r30->unk_04++; + } + break; + case 1: + if (lbl_1_bss_8C != 0) { + object->trans.z = -492.5f; + var_r30->unk_00_field0 = 0; + var_r30->unk_04++; + var_r30->unk_08 = 0.0f; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelShadowSet(object->model[var_r29]); + } + } + break; + case 2: + if (lbl_1_bss_8C != 0) { + var_r30->unk_04 = var_r30->unk_04 + 1; + object->trans.y = 2.5f; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelShadowReset(object->model[var_r29]); + Hu3DModelShadowMapSet(object->model[var_r29]); + } + } + else { + var_r30->unk_08 = var_r30->unk_08 + lbl_1_bss_88; + if (var_r30->unk_08 > 90.0f) { + var_r30->unk_00_field0 = 1; + var_r30->unk_08 = 90.0f; + HuAudFXPlay(0x522); + } + object->rot.x = -120.0 * cosd(var_r30->unk_08); + object->trans.z = -500.0 + (7.5 * cosd(var_r30->unk_08)); + } + break; + case 3: + if (lbl_1_bss_8C != 0) { + var_r30->unk_04++; + object->trans.y = 0.0f; + } + break; + case 4: + if (lbl_1_bss_8C != 0) { + var_r30->unk_04 = 0; + object->trans.y = 5.0f; + object->trans.z = -497.5f; + object->rot.x = -120.0f; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + fn_1_7A74(object->model[var_r29]); + } + fn_1_6FC4(object); + } + break; + } + } + MTXTrans(sp8, object->trans.x, object->trans.y, object->trans.z); + mtxRot(sp38, object->rot.x, object->rot.y, object->rot.z); + MTXConcat(sp8, sp38, sp8); + for (var_r28 = 0; var_r28 < 6; var_r28++) { + MTXTrans(sp38, lbl_1_data_A88[var_r28].x, lbl_1_data_A88[var_r28].y, lbl_1_data_A88[var_r28].z); + MTXConcat(sp8, sp38, sp38); + Hu3DModelPosSet(object->model[var_r28 + 1], sp38[0][3], sp38[1][3], sp38[2][3]); + Hu3DModelRotSet(object->model[var_r28 + 1], object->rot.x, object->rot.y, object->rot.z); + } +} + +void fn_1_7978(void) +{ + s32 var_r31; + omObjData *var_r30; + M453MapUnkStruct *var_r29; + s32 var_r28; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + var_r30 = lbl_1_bss_A4[var_r31]; + var_r29 = var_r30->data; + if (var_r29 != NULL) { + for (var_r28 = 0; var_r28 < 0xC; var_r28++) { + if (var_r29->unk_24[var_r28] >= 0) { + Hu3DModelKill(var_r29->unk_24[var_r28]); + } + } + HuMemDirectFree(var_r29); + lbl_1_bss_A4[var_r31]->data = NULL; + } + for (var_r31 = 0; var_r31 < var_r30->mdlcnt; var_r31++) { + var_r30->model[var_r31] = -1; + } + } +} + +void fn_1_7A74(s16 arg0) +{ + HsfData *var_r31; + HsfObject *var_r30; + s16 var_r29; + HsfObject *var_r28; + HsfConstData *var_r27; + + var_r31 = Hu3DData[arg0].hsfData; + for (var_r28 = var_r31->object, var_r29 = 0; var_r29 < var_r31->objectCnt; var_r29++, var_r28++) { + var_r30 = var_r28; + if (var_r30->constData) { + var_r27 = var_r30->constData; + var_r27->flags &= 0xFFFFFFF7; + } + } +} + +s32 fn_1_7AFC(float arg8, float arg9) +{ + s32 var_r31; + s32 var_r30; + + var_r31 = (600.0f + arg8) / 400.0f; + var_r30 = (400.0f + arg9) / 400.0f; + if (var_r31 < 0) { + var_r31 = 0; + } + else if (var_r31 > 2) { + var_r31 = 2; + } + if (var_r30 < 0) { + var_r30 = 0; + } + else if (var_r30 > 1) { + var_r30 = 1; + } + return var_r31 + (var_r30 * 3); +} + +void fn_1_7BB0(s32 arg0, Vec *arg1) +{ + arg1->x = lbl_1_data_A88[arg0].x; + arg1->y = lbl_1_data_A88[arg0].y; + arg1->z = lbl_1_data_A88[arg0].z; +} + +s32 fn_1_7BFC(M453MapUnkStruct *arg0, s32 arg1) +{ + return arg0->unk_0C[arg1]; +} + +void fn_1_7C0C(float arg8) +{ + lbl_1_bss_94 = 1; + lbl_1_bss_88 = arg8; +} + +void fn_1_7C2C(s32 arg0) +{ + lbl_1_bss_7C = arg0; +} + +void fn_1_7C3C(void) +{ + float var_f31; + float var_f30; + + lbl_1_bss_84 = 1; + if (lbl_1_bss_80 == 0) { + var_f31 = 1.6666666f; + } + else { + var_f31 = -1.6666666f; + } + var_f30 = var_f31; + Hu3DMotionSpeedSet(lbl_1_bss_B8->model[2], var_f30); + HuAudFXPlay(0x524); +} + +s32 fn_1_7CE0(float arg8, float arg9, Vec *arg0) +{ + Mtx sp4C; + Mtx sp1C; + Vec sp10; + + omObjData *var_r31; + Vec *var_r30; + s32 var_r28; + s32 var_r27; + s32 var_r24; + s32 var_r23; + M453MapUnkStruct *var_r22; + + var_r31 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r22 = var_r31->data; + var_r27 = fn_1_7AFC(arg8, arg9); + var_r28 = fn_1_7BFC(var_r22, var_r27); + if (var_r28 < 6) { + return 0; + } + var_r28 -= 6; + fn_1_7BB0(var_r27, &sp10); + sp10 = lbl_1_data_A88[var_r27]; + MTXTrans(sp4C, var_r31->trans.x, var_r31->trans.y, var_r31->trans.z); + mtxRot(sp1C, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + MTXConcat(sp4C, sp1C, sp4C); + MTXTrans(sp1C, sp10.x, sp10.y, sp10.z); + MTXConcat(sp4C, sp1C, sp4C); + var_r30 = lbl_1_data_AFC[var_r28]; + var_r23 = lbl_1_data_B14[var_r28]; + for (var_r24 = 0; var_r24 < var_r23; var_r24++) { + MTXTrans(sp1C, var_r30->x, var_r30->y, var_r30->z); + MTXConcat(sp4C, sp1C, sp1C); + arg0->x = sp1C[0][3]; + arg0->y = sp1C[1][3]; + arg0->z = sp1C[2][3]; + arg0++; + var_r30++; + } + return var_r23; +} + +float fn_1_7F54(float arg8, float arg9) +{ + float var_f31; + + omObjData *var_r31 = lbl_1_bss_A4[lbl_1_bss_9C]; + float var_f30 = -(arg9 - var_r31->trans.z); + if (cosd(var_r31->rot.x) <= 0.0) { + var_f31 = 9999.0f; + } + else { + var_f31 = (var_f30 * sind(var_r31->rot.x)) / cosd(var_r31->rot.x); + if (var_f31 > 9999.0f) { + var_f31 = 9999.0f; + } + } + return var_f31; +} + +float fn_1_80B0(Vec *arg0, float arg8) +{ + return fn_1_7F54(0.0f, arg0->z - arg8); +} + +s32 fn_1_8230(void) +{ + return lbl_1_bss_84; +} + +s32 fn_1_8240(void) +{ + return lbl_1_bss_90; +} + +s32 fn_1_8250(M453MapUnkStruct *arg0, s32 *arg1) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = 0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (arg0->unk_0C[var_r31] >= 6) { + arg1[var_r30++] = var_r31; + } + } + return var_r30; +} + +s32 fn_1_82AC(Vec *arg0) +{ + s32 sp8[6]; + + omObjData *var_r31; + s32 var_r30; + M453MapUnkStruct *var_r28; + s32 var_r27; + s32 var_r24; + + var_r31 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r28 = var_r31->data; + var_r24 = fn_1_8250(var_r28, sp8); + for (var_r30 = 0; var_r30 < var_r24; var_r30++) { + fn_1_7BB0(sp8[var_r30], arg0); + var_r27 = fn_1_7BFC(var_r28, sp8[var_r30]) - 6; + arg0->x += var_r31->trans.x + lbl_1_data_B2C[var_r27].x; + arg0->y += var_r31->trans.y + lbl_1_data_B2C[var_r27].y; + arg0->z += var_r31->trans.z + lbl_1_data_B2C[var_r27].z; + arg0++; + } + return var_r24; +} + +s32 fn_1_844C(Vec *arg0) +{ + Mtx sp50; + Mtx sp20; + s32 sp8[6]; + + omObjData *var_r30; + s32 var_r29; + M453MapUnkStruct *var_r27; + s32 var_r26; + s32 var_r23; + + var_r30 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r27 = var_r30->data; + var_r23 = fn_1_8250(var_r27, sp8); + MTXTrans(sp50, var_r30->trans.x, var_r30->trans.y, var_r30->trans.z); + mtxRot(sp20, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + MTXConcat(sp50, sp20, sp50); + for (var_r29 = 0; var_r29 < var_r23; var_r29++) { + fn_1_7BB0(sp8[var_r29], arg0); + var_r26 = fn_1_7BFC(var_r27, sp8[var_r29]) - 6; + arg0->x += lbl_1_data_B2C[var_r26].x; + arg0->y += lbl_1_data_B2C[var_r26].y; + arg0->z += lbl_1_data_B2C[var_r26].z; + MTXTrans(sp20, arg0->x, arg0->y, arg0->z); + MTXConcat(sp50, sp20, sp20); + arg0->x = sp20[0][3]; + arg0->y = sp20[1][3]; + arg0->z = sp20[2][3]; + arg0++; + } + return var_r23; +} + +void fn_1_864C(s32 arg0) +{ + if (arg0 > lbl_1_bss_7C) { + arg0 = lbl_1_bss_7C; + } + lbl_1_bss_78 = arg0; +} + +s32 fn_1_867C(Vec *arg0, Vec *arg1) +{ + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + + s32 var_r31; + Vec *var_r30; + Vec *var_r29; + omObjData *var_r28; + s32 var_r27; + s32 var_r24; + s32 var_r21; + s32 var_r20; + s32 var_r19; + M453MapUnkStruct *var_r18; + + var_r28 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r18 = var_r28->data; + if ((var_r28->rot.x > 0.0f) || (var_r28->rot.x <= -90.0f)) { + return 0; + } + VECSubtract(arg0, &var_r28->trans, &sp3C); + sp3C.z = sp3C.z / cosd(var_r28->rot.x); + var_f24 = arg0->z; + var_f25 = arg0->x; + var_r19 = fn_1_7AFC(var_f25, var_f24); + var_r24 = fn_1_7BFC(var_r18, var_r19); + if (var_r24 < 6) { + return 0; + } + var_r24 -= 6; + sp48 = lbl_1_data_A88[var_r19]; + VECSubtract(&sp3C, &sp48, &sp3C); + var_r30 = lbl_1_data_B74[var_r24][0]; + var_r29 = lbl_1_data_B74[var_r24][1]; + var_r21 = lbl_1_data_BA4[var_r24]; + for (var_r31 = 0; var_r31 < var_r21; var_r31++) { + var_r27 = (var_r31 + 1) % var_r21; + VECSubtract(var_r30 + var_r27, var_r30 + var_r31, &sp24); + VECSubtract(&sp3C, var_r30 + var_r27, &sp18); + VECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + VECSubtract(var_r29 + var_r27, var_r30 + var_r27, &sp24); + VECSubtract(&sp3C, var_r29 + var_r27, &sp18); + VECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + VECSubtract(var_r29 + var_r31, var_r29 + var_r27, &sp24); + VECSubtract(&sp3C, var_r29 + var_r31, &sp18); + VECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + VECSubtract(var_r30 + var_r31, var_r29 + var_r31, &sp24); + VECSubtract(&sp3C, var_r30 + var_r31, &sp18); + VECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + VECSubtract(var_r30 + var_r27, var_r30 + var_r31, &sp24); + var_f30 = (((sp3C.z * sp24.z) + + (((sp3C.y * sp24.y) + ((sp3C.x * sp24.x) - (sp24.x * var_r30[var_r31].x))) - (sp24.y * var_r30[var_r31].y))) + - (sp24.z * var_r30[var_r31].z)) + / ((sp24.z * sp24.z) + ((sp24.x * sp24.x) + (sp24.y * sp24.y))); + sp30.x = var_r30[var_r31].x + (var_f30 * sp24.x); + sp30.y = var_r30[var_r31].y + (var_f30 * sp24.y); + sp30.z = var_r30[var_r31].z + (var_f30 * sp24.z); + VECSubtract(&sp30, &sp3C, &spC); + var_f28 = VECMag(&spC); + VECSubtract(var_r29 + var_r27, var_r29 + var_r31, &sp18); + var_f29 = (((sp3C.z * sp18.z) + + (((sp3C.y * sp18.y) + ((sp3C.x * sp18.x) - (sp18.x * var_r29[var_r31].x))) - (sp18.y * var_r29[var_r31].y))) + - (sp18.z * var_r29[var_r31].z)) + / ((sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y))); + sp30.x = var_r29[var_r31].x + (var_f29 * sp18.x); + sp30.y = var_r29[var_r31].y + (var_f29 * sp18.y); + sp30.z = var_r29[var_r31].z + (var_f29 * sp18.z); + VECSubtract(&sp30, &sp3C, &spC); + var_f27 = VECMag(&spC); + if (var_f28 == 0.0f) { + var_f31 = var_f30; + } + else if (var_f27 == 0.0f) { + var_f31 = var_f29; + } + else { + var_f26 = 1.0f - (var_f28 / (var_f28 + var_f27)); + var_f31 = (var_f30 * var_f26) + (var_f29 * (1.0f - var_f26)); + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + sp3C.x = var_r29[var_r31].x + (var_f31 * sp18.x); + sp3C.y = var_r29[var_r31].y + (var_f31 * sp18.y); + sp3C.z = var_r29[var_r31].z + (var_f31 * sp18.z); + arg1->x = sp3C.x + (var_r28->trans.x + sp48.x); + arg1->y = sp3C.y + (var_r28->trans.y + sp48.y); + arg1->z = var_r28->trans.z + ((sp48.z + sp3C.z) * cosd(var_r28->rot.x)); + return 1; + } + } + } + } + } + var_r20 = 0; + for (var_r31 = 0; var_r31 < var_r21; var_r31++) { + var_r27 = (var_r31 + 1) % var_r21; + var_f31 = (sp3C.z - var_r30[var_r31].z) / (var_r30[var_r27].z - var_r30[var_r31].z); + spC.x = var_r30[var_r31].x + (var_f31 * (var_r30[var_r27].x - var_r30[var_r31].x)); + if ((var_f31 >= 0.0f) && (var_f31 < 1.0f) && (spC.x > sp3C.x)) { + var_r20++; + } + } + if ((var_r20 & 1) != 0) { + arg1->x = arg0->x; + arg1->y = arg0->y; + arg1->z = arg0->z; + return 1; + } + return 0; +} diff --git a/src/REL/m453Dll/score.c b/src/REL/m453Dll/score.c new file mode 100644 index 00000000..a588ca07 --- /dev/null +++ b/src/REL/m453Dll/score.c @@ -0,0 +1,188 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "REL/m453Dll.h" + +typedef struct M453ScoreUnkStruct { + s32 unk_00; + s32 unk_04; + s16 unk_08; + s16 unk_0A; + s16 unk_0C[4]; + s16 unk_14; + s16 unk_16; + s32 unk_18; + float unk_1C; +} M453ScoreUnkStruct; /* size = 0x20 */ + +typedef void (*M453ScoreUnkFunc)(void); + +void fn_1_92C0(s32 arg0); +void fn_1_92F0(omObjData *object); +void fn_1_940C(void); +void fn_1_9484(void); +void fn_1_9510(void); + +M453ScoreUnkFunc lbl_1_data_BC0[3] = { fn_1_940C, fn_1_9484, fn_1_9510 }; + +Process *lbl_1_bss_C4; +omObjData *lbl_1_bss_C0; + +void fn_1_8F48(Process *arg0, s16 arg1) +{ + M453ScoreUnkStruct *var_r31; + u32 var_r30; + + lbl_1_bss_C4 = arg0; + lbl_1_bss_C0 = omAddObjEx(lbl_1_bss_C4, 0x800, 0, 0, 7, fn_1_92F0); + lbl_1_bss_C0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453ScoreUnkStruct), MEMORY_DEFAULT_NUM); + var_r31 = lbl_1_bss_C0->data; + var_r31->unk_08 = arg1; + var_r31->unk_0A = 0; + var_r31->unk_14 = espEntry(0x530000, 2, 0); + espTPLvlSet(var_r31->unk_14, 0.5f); + espPosSet(var_r31->unk_14, 520.0f, 64.0f); + espColorSet(var_r31->unk_14, 0, 0, 0); + var_r31->unk_16 = espEntry(0x610037, 1, 0); + espPosSet(var_r31->unk_16, 501.0f, 55.0f); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_0C[var_r30] = espEntry(0x610030, 0, 0); + espPosSet(var_r31->unk_0C[var_r30], (var_r30 * 0x12) + 0x20A, 56.0f); + espDispOff(var_r31->unk_0C[var_r30]); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_0C[var_r30 + 2] = espEntry(0x610031, 1, 0); + espPosSet(var_r31->unk_0C[var_r30 + 2], (var_r30 * 0x12) + 0x20A, 72.0f); + } + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOff(var_r31->unk_0C[var_r30]); + } + HuDataDirClose(0x530000); + HuDataDirClose(0x610000); + fn_1_92C0(0); +} + +void fn_1_91D8(void) +{ + s32 var_r31; + M453ScoreUnkStruct *var_r30 = lbl_1_bss_C0->data; + + for (var_r31 = 0; var_r31 < 7; var_r31++) { + espKill(var_r30->unk_0C[var_r31]); + } + HuMemDirectFree(lbl_1_bss_C0->data); +} + +void fn_1_924C(s32 arg0) +{ + switch (arg0) { + case 0: + fn_1_92C0(1); + break; + case 1: + fn_1_92C0(2); + break; + } +} + +void fn_1_929C(void) +{ + fn_1_92C0(0); +} + +void fn_1_92C0(s32 arg0) +{ + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + var_r31->unk_00 = arg0; + var_r31->unk_04 = 0; +} + +void fn_1_92F0(omObjData *arg0) +{ + s16 var_r30; + + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + lbl_1_data_BC0[var_r31->unk_00](); + var_r30 = var_r31->unk_08; + espBankSet(var_r31->unk_0C[0], var_r30 / 10); + var_r30 -= (var_r30 / 10) * 10; + espBankSet(var_r31->unk_0C[1], var_r30); + var_r30 = var_r31->unk_0A; + espBankSet(var_r31->unk_0C[2], var_r30 / 10); + var_r30 -= (var_r30 / 10) * 10; + espBankSet(var_r31->unk_0C[3], var_r30); +} + +void fn_1_940C(void) +{ + s32 var_r30; + + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + if (var_r31->unk_04 == 0) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOff(var_r31->unk_0C[var_r30]); + } + var_r31->unk_04 = var_r31->unk_04 + 1; + } +} + +void fn_1_9484(void) +{ + s16 var_r30; + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + if (var_r31->unk_04 == 0) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOn(var_r31->unk_0C[var_r30]); + } + var_r31->unk_04 = var_r31->unk_04 + 1; + } + var_r31->unk_0A = fn_1_639C(); +} + +void fn_1_9510(void) +{ + s32 var_r30; + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + if (var_r31->unk_04 == 0) { + var_r31->unk_18 = 0; + var_r31->unk_1C = 1.0f; + if (var_r31->unk_0A > var_r31->unk_08) { + var_r31->unk_08 = var_r31->unk_0A; + } + var_r31->unk_04 = var_r31->unk_04 + 1; + } + if (var_r31->unk_18 == 0) { + if ((var_r31->unk_1C += 0.02f) >= 1.2f) { + var_r31->unk_1C = 1.2f; + var_r31->unk_18 = 1; + } + } + else { + if ((var_r31->unk_1C -= 0.04f) <= 1.0f) { + var_r31->unk_1C = 1.0f; + var_r31->unk_18 = 0; + } + } + for (var_r30 = 0; var_r30 <= 1; var_r30++) { + espScaleSet(var_r31->unk_0C[var_r30], var_r31->unk_1C, var_r31->unk_1C); + } + espScaleSet(var_r31->unk_16, var_r31->unk_1C, var_r31->unk_1C); +} diff --git a/src/REL/m455Dll/main.c b/src/REL/m455Dll/main.c new file mode 100644 index 00000000..36c27f42 --- /dev/null +++ b/src/REL/m455Dll/main.c @@ -0,0 +1,809 @@ +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" + +#include "game/hsfmotion.h" +#include "game/pad.h" + +#include "REL/m455Dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/wipe.h" + +#include "ext_math.h" +#include "math.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +typedef struct camera_view_params { + float zoom; + Vec pos; + Vec rot; +} CameraViewParams; + +CameraViewParams lbl_1_data_0[2] = { { 500, { 0, 1000, 0 }, { 40, 0, 0 } }, { 1985, { 0, 300, 0 }, { -6, 0, 0 } } }; +Vec lbl_1_data_38 = { 700, 2500, -700 }; +Vec lbl_1_data_44 = { 0, 0, 0 }; +GXColor lbl_1_data_50 = { 255, 255, 255, 255 }; +Vec lbl_1_data_54 = { 200, 15000, -200 }; +Vec lbl_1_data_60 = { 0, 1, 0 }; + +omObjData *lbl_1_bss_40; +omObjData *lbl_1_bss_3C; +omObjData *lbl_1_bss_38; +s32 lbl_1_bss_34; +s32 lbl_1_bss_30; +s32 lbl_1_bss_2C; +s32 lbl_1_bss_28; +s16 lbl_1_bss_26; +s16 lbl_1_bss_24; +s16 lbl_1_bss_22; +s16 lbl_1_bss_20; +s16 lbl_1_bss_18[4]; +s16 lbl_1_bss_16; +s16 lbl_1_bss_14; +Vec lbl_1_bss_8; +s16 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void fn_1_330(omObjData *object); +void fn_1_B94(Process *objman); +void fn_1_2A90(Process *objman); + +void ObjectSetup(void) +{ + Process *objman; + CameraData *camera = &Hu3DCamera[0]; + s16 light; + OSReport("******* M455ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + Hu3DCameraCreate(HU3D_CAM0); + Hu3DCameraPerspectiveSet(HU3D_CAM0, -1, 20, 25000, 1.2f); + Hu3DCameraViewportSet(HU3D_CAM0, 0, 0, 640, 480, 0, 1); + lbl_1_bss_3C = omAddObjEx(objman, 32730, 0, 0, -1, omOutView); + lbl_1_bss_8.x = lbl_1_data_44.x - lbl_1_data_38.x; + lbl_1_bss_8.y = lbl_1_data_44.y - lbl_1_data_38.y; + lbl_1_bss_8.z = lbl_1_data_44.z - lbl_1_data_38.z; + VECNormalize(&lbl_1_bss_8, &lbl_1_bss_8); + light = Hu3DGLightCreateV(&lbl_1_data_38, &lbl_1_bss_8, &lbl_1_data_50); + Hu3DGLightInfinitytSet(light); + Hu3DGLightStaticSet(light, 1); + Hu3DShadowCreate(10, camera->near, camera->far); + Hu3DShadowTPLvlSet(0.7f); + Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_44); + HuAudSndGrpSet(77); + lbl_1_bss_38 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_330); + fn_1_2A90(objman); + fn_1_B94(objman); + fn_1_32C4(objman); +} + +void fn_1_310(s32 arg0) +{ + lbl_1_bss_34 = arg0; +} + +s32 fn_1_320(void) +{ + return lbl_1_bss_34; +} + +void fn_1_478(omObjData *object); + +void fn_1_330(omObjData *object) +{ + CameraData *camera = &Hu3DCamera[0]; + lbl_1_bss_34 = 0; + lbl_1_bss_2C = 60; + lbl_1_bss_30 = -1; + lbl_1_bss_26 = 30; + lbl_1_bss_24 = 60; + lbl_1_bss_22 = -1; + lbl_1_bss_20 = 0; + lbl_1_bss_16 = ((frand16() * 270.0f) / 65536.0f) + 30.0f; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + camera->fov = 30.0f; + object->func = fn_1_478; +} + +void fn_1_B38(omObjData *object); +void fn_1_C28(void); +s32 fn_1_C90(void); + +typedef struct m455_player { + u8 field0 : 1; + u8 field1 : 1; + u8 field2 : 1; + s16 unk2; + s16 unk4; + s8 unk6; + s8 unk7; + u16 unk8; + u16 unkA; + s32 unkC; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + s32 unk18; + s32 unk1C; + u32 unk20; + s16 unk24; + s16 unk26; + s16 unk28; + s16 unk2A; + s16 unk2C; + s16 unk2E; + s16 unk30; + Vec unk34[2]; + Vec unk4C; + s16 unk58; + s32 unk5C[4]; +} M455Player; + +s16 lbl_1_data_90 = -1; +s32 lbl_1_data_94 = -1; +s32 lbl_1_data_98 = -1; + +void fn_1_478(omObjData *object) +{ + s32 i; + omObjData **playerList; + M455Player *player; + + switch (fn_1_320()) { + case 0: + if (lbl_1_data_98 < 0) { + lbl_1_data_98 = HuAudFXPlay(1985); + } + if (--lbl_1_bss_2C == 0) { + fn_1_310(1); + lbl_1_bss_2C = 120; + } + break; + + case 1: + if (--lbl_1_bss_2C == 0) { + fn_1_310(2); + lbl_1_bss_4 = MGSeqStartCreate(); + } + break; + + case 2: + if (!MGSeqStatGet(lbl_1_bss_4)) { + fn_1_310(3); + } + if (lbl_1_data_94 < 0 && (MGSeqStatGet(lbl_1_bss_4) & 0x10)) { + lbl_1_data_94 = HuAudSeqPlay(60); + } + break; + + case 3: + if (--lbl_1_bss_24 == 0) { + lbl_1_bss_26--; + if (lbl_1_data_90 >= 0) { + MGSeqParamSet(lbl_1_data_90, 1, lbl_1_bss_26); + } + lbl_1_bss_24 = 60; + if (lbl_1_bss_26 == 10) { + lbl_1_data_90 = MGSeqTimerCreate(10); + } + } + if (lbl_1_bss_16 >= 0) { + lbl_1_bss_16--; + } + if (lbl_1_bss_26 == 0 || fn_1_C90()) { + fn_1_310(4); + lbl_1_bss_4 = MGSeqFinishCreate(); + HuAudSeqFadeOut(lbl_1_data_94, 100); + } + break; + + case 4: + if (lbl_1_data_90 >= 0) { + MGSeqParamSet(lbl_1_data_90, 2, -1); + lbl_1_data_90 = -1; + } + if (!MGSeqStatGet(lbl_1_bss_4)) { + fn_1_310(7); + lbl_1_bss_2C = 120; + } + break; + + case 7: + if (--lbl_1_bss_2C == 0) { + fn_1_310(9); + if (lbl_1_bss_30 >= 0) { + HuAudSStreamPlay(1); + playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (i = 0; i < 4; i++) { + player = playerList[i]->data; + if (player->unk28 < 0) { + GWPlayerCoinWinSet(i, lbl_1_bss_22 + 1); + } + } + } + else { + HuAudSStreamPlay(4); + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(i, 3); + } + } + lbl_1_bss_2C = 210; + } + break; + + case 9: + if (--lbl_1_bss_2C == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFXStop(lbl_1_data_98); + object->func = fn_1_B38; + } + break; + } + if (lbl_1_bss_20) { + if (lbl_1_bss_20 >= 2) { + for (i = 0; i < 100; i++) { + s32 srcIdx = (frand8() * lbl_1_bss_20) >> 8; + s32 dstIdx = (frand8() * lbl_1_bss_20) >> 8; + s32 temp = lbl_1_bss_18[srcIdx]; + lbl_1_bss_18[srcIdx] = lbl_1_bss_18[dstIdx]; + lbl_1_bss_18[dstIdx] = temp; + } + } + playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (i = 0; i < lbl_1_bss_20; i++) { + lbl_1_bss_22++; + GWPlayerCoinWinSet(lbl_1_bss_18[i], lbl_1_bss_22); + player = playerList[lbl_1_bss_18[i]]->data; + player->unk28 = lbl_1_bss_22; + } + lbl_1_bss_20 = 0; + } + if (omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_B38; + } +} + +void fn_1_B38(omObjData *object) +{ + if (WipeStatGet()) { + return; + } + fn_1_C28(); + fn_1_340C(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + OSReport("******* M455Exit *********\n"); +} + +void fn_1_D14(omObjData *object); + +void fn_1_B94(Process *objman) +{ + s32 i; + lbl_1_bss_28 = 0; + lbl_1_bss_14 = 3; + omMakeGroupEx(objman, 0, 4); + for (i = 0; i < 4; i++) { + omAddObjEx(objman, 5, 10, 50, 0, fn_1_D14); + } +} + +void fn_1_2010(omObjData *object); + +void fn_1_C28(void) +{ + s32 i; + omObjData **playerList; + playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + if (playerList == NULL) { + return; + } + for (i = 0; i < 4; i++) { + fn_1_2010(playerList[i]); + } +} + +s32 fn_1_C90(void) +{ + s32 i; + omObjData **playerList; + playerList = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (i = 0; i < 4; i++) { + M455Player *player = playerList[i]->data; + if (!player->field1) { + return 0; + } + } + return 1; +} + +s32 fn_1_3214(void); + +u32 lbl_1_data_E0[5][2] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + 0, + 0x540024, + 1, + 0x54001C, + 1, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + 0, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + 0, +}; + +Vec lbl_1_data_108[4] = { + { -300, 0, -100 }, + { -100, 0, -100 }, + { 100, 0, -100 }, + { 300, 0, -100 }, +}; + +void fn_1_1444(omObjData *object); + +void fn_1_2060(ModelData *arg0, Mtx arg1); + +void fn_1_D14(omObjData *object) +{ + M455Player *player; + s32 charNo; + u32 i; + player = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M455Player), MEMORY_DEFAULT_NUM); + object->data = player; + memset(player, 0, sizeof(M455Player)); + player->unk2 = lbl_1_bss_28++; + player->unk4 = GWPlayerCfg[player->unk2].pad_idx; + player->unkC = fn_1_3214(); + charNo = GWPlayerCfg[player->unk2].character; + player->unk10 = charNo; + player->unk12 = GWPlayerCfg[player->unk2].diff; + player->unk14 = GWPlayerCfg[player->unk2].group; + object->model[0] = CharModelCreate(charNo, 8); + Hu3DModelShadowSet(object->model[0]); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelCameraSet(object->model[0], HU3D_CAM0); + object->model[1] = Hu3DModelCreateFile(0x540002); + Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_SHAPE_PAUSE | HU3D_MOTATTR_PAUSE); + player->unk1C = 1; + for (i = 0; i < 5; i++) { + if (lbl_1_data_E0[i][1] == 0) { + object->motion[i] = CharModelMotionCreate(player->unk10, lbl_1_data_E0[i][0]); + } + else { + object->motion[i] = CharModelMotionCreate(player->unk10, player->unk10 + lbl_1_data_E0[i][0]); + } + } + Hu3DMotionSet(object->model[0], object->motion[player->unk1C]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->trans.x = lbl_1_data_108[player->unk2].x; + object->trans.y = lbl_1_data_108[player->unk2].y; + object->trans.z = lbl_1_data_108[player->unk2].z; + player->unk2A = espEntry(0x54000C, 0x8000, 0); + espDispOff(player->unk2A); + object->model[3] = Hu3DHookFuncCreate(fn_1_2060); + Hu3DModelLayerSet(object->model[3], 3); + Hu3DModelCameraSet(object->model[3], HU3D_CAM0); + Hu3DData[object->model[3]].unk_120 = object; + object->model[4] = Hu3DModelCreateFile(0x54000A); + Hu3DModelLayerSet(object->model[4], 3); + Hu3DModelCameraSet(object->model[4], HU3D_CAM0); + Hu3DModelShadowSet(object->model[4]); + i = Hu3DMotionCreateFile(0x54000B); + Hu3DMotionSet(object->model[4], i); + Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_PAUSE); + player->unk4C.x = object->trans.x + (50.0f * ((((s32)frand() & 0x1FF) - 256.0f) / 256.0f)); + player->unk4C.y = -200; + player->unk4C.z = -1500; + Hu3DModelPosSetV(object->model[4], &player->unk4C); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + player->unk34[0].x = object->trans.x; + player->unk34[0].y = 0; + player->unk34[0].z = -500; + player->unk34[1].x = object->trans.x; + player->unk34[1].y = -200; + player->unk34[1].z = -1000; + CharModelDataClose(player->unk10); + object->rot.y = 180; + if (((s32)frand() & 0x1F) < 4 - player->unk12) { + player->unk58 = lbl_1_bss_16 - (60.0f * (0.05f * (4 - player->unk12))) - ((frand8() / 256.0f) * 6.0f); + if (player->unk58 < 0) { + player->unk58 = 0; + } + } + else { + player->unk58 = lbl_1_bss_16 + (60.0f * (0.1f * (4 - player->unk12))) + ((frand8() / 256.0f) * 30.0f) + 6.0f; + } + player->unk28 = -1; + object->func = fn_1_1444; +} + +void fn_1_1400(omObjData *object) +{ + M455Player *player = object->data; + if (player->unk58 != 0) { + player->unk58--; + } + else { + player->unkA |= PAD_BUTTON_A; + } +} + +float lbl_1_data_154[4] = { -350, -170, 170, 350 }; + +float lbl_1_data_164[3] = { 1.5f, 1.0f, 0.5f }; + +float fn_1_2390(float arg0, float arg1, float arg2); +s32 fn_1_24F0(Vec *arg0, Vec *arg1, float arg2); + +void fn_1_1444(omObjData *object) +{ + M455Player *temp_r31; + s32 temp_r29; + u32 temp_r28; + Vec sp24[3]; + Vec sp18; + Vec spC; + float temp_f31; + + temp_r31 = object->data; + temp_r29 = temp_r31->unk1C; + temp_r28 = temp_r31->unk20; + object->trans.y = fn_1_687C(); + if (fn_1_320() < 3) { + return; + } + switch (temp_r31->unk16) { + case 0: + if (fn_1_320() == 4 || lbl_1_bss_14 == 0) { + temp_r31->field1 = 1; + temp_r31->unk16 = 2; + espDispOff(temp_r31->unk2A); + return; + } + if (!GWPlayerCfg[temp_r31->unk2].iscom) { + temp_r31->unk6 = HuPadStkX[temp_r31->unk4]; + temp_r31->unk7 = HuPadStkY[temp_r31->unk4]; + temp_r31->unk8 = HuPadBtn[temp_r31->unk4]; + temp_r31->unkA = HuPadBtnDown[temp_r31->unk4]; + } + else { + temp_r31->unk8 = temp_r31->unkA = 0; + temp_r31->unk6 = temp_r31->unk7 = 0; + fn_1_1400(object); + } + if (lbl_1_bss_16 == 0) { + if (temp_r31->unkC) { + omVibrate(temp_r31->unk2, 12, 12, 0); + } + else { + sp18.x = object->trans.x; + sp18.y = object->trans.y + 300; + sp18.z = object->trans.z; + Hu3D3Dto2D(&sp18, HU3D_CAM0, &sp18); + espPosSet(temp_r31->unk2A, sp18.x, sp18.y); + espDispOn(temp_r31->unk2A); + temp_r31->unk30 = 0; + } + temp_r31->unk2C = temp_r31->unk2E = 30; + } + + if (temp_r31->unkA & PAD_BUTTON_A) { + temp_r31->unk16 = 1; + temp_r31->unk24 = temp_r31->unk26 = 90; + temp_r31->unk2C = -1; + if (lbl_1_bss_16 <= 0) { + lbl_1_bss_18[lbl_1_bss_20++] = temp_r31->unk2; + } + Hu3DModelAttrReset(object->model[1], HU3D_MOTATTR_SHAPE_PAUSE | HU3D_MOTATTR_PAUSE); + Hu3DMotionSpeedSet(object->model[1], 1.2f); + Hu3DMotionShapeSpeedSet(object->model[1], 1.2f); + HuAudFXPlay(1986); + } + temp_r29 = 1; + temp_r28 = HU3D_MOTATTR_LOOP; + break; + + case 1: + temp_r29 = 2; + temp_r28 = HU3D_MOTATTR_NONE; + if (!temp_r31->field0) { + if (temp_r31->unk28 >= 0 && temp_r31->unk28 < 3) { + temp_r31->field0 = 1; + if (temp_r31->unk28 == 0) { + lbl_1_bss_30 = temp_r31->unk2; + } + temp_f31 = lbl_1_data_164[temp_r31->unk28]; + Hu3DModelScaleSet(object->model[4], temp_f31, temp_f31, temp_f31); + Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF); + } + } + temp_f31 = 1.0f - ((float)temp_r31->unk24 / temp_r31->unk26); + sp24[0].x = temp_r31->unk4C.x; + sp24[0].y = temp_r31->unk4C.y; + sp24[0].z = temp_r31->unk4C.z; + sp24[1].x = object->trans.x; + sp24[1].y = object->trans.y + 1500; + sp24[1].z = object->trans.z - 200; + sp24[2].x = lbl_1_data_154[temp_r31->unk2]; + sp24[2].y = 0; + sp24[2].z = 150; + fn_1_24F0(sp24, &sp18, temp_f31); + VECSubtract(&sp18, &Hu3DData[object->model[4]].pos, &spC); + Hu3DModelRotSet(object->model[4], atan2d(-spC.y, VECMagXZ(&spC)), atan2d(spC.x, spC.z), 0); + Hu3DModelPosSetV(object->model[4], &sp18); + if (sp18.y > 0.0f) { + if (!temp_r31->field2 && temp_r31->field0) { + fn_1_6CB0(&sp18, -1); + fn_1_6698(&sp18, -1, -1, -1); + temp_r31->field2 = 1; + } + } + temp_r31->unk34[0].x = temp_f31 * (2.0f * lbl_1_data_154[temp_r31->unk2]); + temp_r31->unk34[0].y = -200.0f + (-400.0f * temp_f31); + temp_r31->unk34[0].z = -500.0f + (-1500.0f * temp_f31); + temp_r31->unk34[1].x = temp_f31 * lbl_1_data_154[temp_r31->unk2]; + temp_r31->unk34[1].y = -200.0f + (400.0f * temp_f31); + temp_r31->unk34[1].z = -1000.0f + (750.0f * temp_f31); + if (--temp_r31->unk24 == 0) { + temp_r31->unk16 = 2; + temp_r31->field1 = 1; + if (temp_r31->field0) { + Hu3DModelAttrReset(object->model[4], HU3D_MOTATTR_PAUSE); + Hu3DModelRotSet(object->model[4], 0, 0, 0); + lbl_1_bss_14--; + } + } + break; + + case 2: + if (fn_1_320() == 7) { + temp_r31->unk16 = 3; + Hu3DModelObjPosGet(object->model[0], "test11_tex_we-itemhook-r", &sp18); + CharModelEffectCreate(1, &sp18); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + } + break; + + case 3: + if (fn_1_320() < 9) { + temp_r29 = 0; + temp_r28 = HU3D_MOTATTR_LOOP; + } + else { + object->rot.y = fn_1_2390(object->rot.y, 0, 0.2f); + if (temp_r31->unk2 == lbl_1_bss_30) { + temp_r29 = 3; + temp_r28 = HU3D_MOTATTR_NONE; + } + else { + temp_r29 = 4; + temp_r28 = HU3D_MOTATTR_NONE; + } + } + break; + + default: + break; + } + if (temp_r31->unk2C) { + if (temp_r31->unk2C >= 0) { + temp_f31 = (0.5 * sind((90.0f * (float)temp_r31->unk2C) / (float)temp_r31->unk2E)) + 0.5; + espScaleSet(temp_r31->unk2A, temp_f31, temp_f31); + if (--temp_r31->unk2C == 0) { + temp_r31->unk2C = temp_r31->unk2E; + } + temp_r31->unk30++; + } + else { + if (temp_r31->unk30 > 30.0f) { + espDispOff(temp_r31->unk2A); + temp_r31->unk2C = 0; + } + else { + temp_r31->unk30++; + } + } + } + if (temp_r31->unk16 >= 2 && temp_r31->unk16 <= 3 && temp_r31->field0) { + Hu3DData[object->model[4]].rot.y += 2.0f; + if (0.0f == Hu3DData[object->model[4]].unk_64) { + HuAudFXPlay(1987); + } + } + if ((temp_r29 >= 0 && temp_r29 != temp_r31->unk1C) || temp_r28 != temp_r31->unk20) { + temp_r31->unk1C = temp_r29; + temp_r31->unk20 = temp_r28; + CharModelMotionShiftSet(temp_r31->unk10, object->motion[temp_r31->unk1C], 0, 8, temp_r28); + } +} + +void fn_1_2010(omObjData *object) +{ + M455Player *player = object->data; + if (object->data != NULL) { + HuMemDirectFree(object->data); + object->data = NULL; + } +} + +GXColor lbl_1_data_170 = { 255, 255, 255, 255 }; + +void fn_1_27A0(Vec *arg0, Vec *arg1, float arg2); + +void fn_1_2060(ModelData *arg0, Mtx arg1) +{ + Vec vtxPos[4]; + Mtx mtxHook; + + Vec pos; + Vec itemHookPos; + s32 i; + omObjData *object = arg0->unk_120; + M455Player *player = object->data; + ModelData *modelPuku = &Hu3DData[object->model[4]]; + GXLoadPosMtxImm(arg1, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_170); + GXSetNumTexGens(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", mtxHook); + Hu3DModelObjPosGet(object->model[1], "hook", &pos); + MTXMultVec(mtxHook, &pos, &vtxPos[0]); + for (i = 0; i < 2; i++) { + vtxPos[i + 1].x = player->unk34[i].x; + vtxPos[i + 1].y = player->unk34[i].y; + vtxPos[i + 1].z = player->unk34[i].z; + } + if (player->field0) { + Mtx hookMtx; + Vec hookPos; + Hu3DModelObjMtxGet(object->model[4], "itemhook_C", hookMtx); + hookPos.x = 0; + hookPos.y = -60.000004f; + hookPos.z = 35.0f; + MTXMultVec(hookMtx, &hookPos, &vtxPos[3]); + } + else { + vtxPos[3].x = modelPuku->pos.x; + vtxPos[3].y = modelPuku->pos.y; + vtxPos[3].z = modelPuku->pos.z; + } + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 20); + for (i = 0; i < 20; i++) { + fn_1_27A0(vtxPos, &pos, i / 19.0f); + GXPosition3f32(pos.x, pos.y, pos.z); + } + GXEnd(); +} + +float fn_1_2390(float arg0, float arg1, float arg2) +{ + float temp_f31 = fmod(arg1 - arg0, 360); + float temp_f30; + if (temp_f31 < 0) { + temp_f31 += 360.0f; + } + if (temp_f31 > 180) { + temp_f31 -= 360.0f; + } + temp_f30 = fmod(arg0 + (arg2 * temp_f31), 360); + if (temp_f30 < 0) { + temp_f30 += 360.0f; + } + return temp_f30; +} + +float fn_1_2494(float arg0, float arg1, float arg2, float arg3) +{ + float temp_f31 = 1.0f - arg3; + return (arg0 * (temp_f31 * temp_f31)) + ((2.0f * temp_f31) * arg3 * arg1) + (arg2 * (arg3 * arg3)); +} + +s32 fn_1_24F0(Vec *arg0, Vec *arg1, float arg2) +{ + arg1->x = fn_1_2494(arg0[0].x, arg0[1].x, arg0[2].x, arg2); + arg1->y = fn_1_2494(arg0[0].y, arg0[1].y, arg0[2].y, arg2); + arg1->z = fn_1_2494(arg0[0].z, arg0[1].z, arg0[2].z, arg2); +} + +float fn_1_26F8(float arg0, float arg1, float arg2, float arg3, float arg4) +{ + float temp_f31 = 1.0f - arg0; + float temp_f30 = temp_f31 * temp_f31; + float temp_f29 = temp_f31 * temp_f31 * temp_f31; + return (arg4 * (arg0 * (arg0 * arg0))) + ((arg3 * (arg0 * (3.0f * temp_f31 * arg0))) + ((temp_f29 * arg1) + (arg2 * (3.0f * temp_f30 * arg0)))); +} + +void fn_1_27A0(Vec *arg0, Vec *arg1, float arg2) +{ + arg1->x = fn_1_26F8(arg2, arg0[0].x, arg0[1].x, arg0[2].x, arg0[3].x); + arg1->y = fn_1_26F8(arg2, arg0[0].y, arg0[1].y, arg0[2].y, arg0[3].y); + arg1->z = fn_1_26F8(arg2, arg0[0].z, arg0[1].z, arg0[2].z, arg0[3].z); +} + +float lbl_1_data_184[2] = {}; + +void fn_1_2AF4(s32 arg0, s32 arg1, float arg2); + +void fn_1_2D44(omObjData *object); + +void fn_1_2A90(Process *objman) +{ + fn_1_2AF4(0, 0, 0); + lbl_1_bss_40 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_2D44); +} + +void fn_1_2AF4(s32 arg0, s32 arg1, float arg2) +{ + CZoom = lbl_1_data_0[arg0].zoom + (arg2 * (lbl_1_data_0[arg1].zoom - lbl_1_data_0[arg0].zoom)); + Center.x = lbl_1_data_0[arg0].pos.x + (arg2 * (lbl_1_data_0[arg1].pos.x - lbl_1_data_0[arg0].pos.x)); + Center.y = lbl_1_data_0[arg0].pos.y + (arg2 * (lbl_1_data_0[arg1].pos.y - lbl_1_data_0[arg0].pos.y)); + Center.z = lbl_1_data_0[arg0].pos.z + (arg2 * (lbl_1_data_0[arg1].pos.z - lbl_1_data_0[arg0].pos.z)); + CRot.x = lbl_1_data_0[arg0].rot.x + (arg2 * (lbl_1_data_0[arg1].rot.x - lbl_1_data_0[arg0].rot.x)); + CRot.y = lbl_1_data_0[arg0].rot.y + (arg2 * (lbl_1_data_0[arg1].rot.y - lbl_1_data_0[arg0].rot.y)); + CRot.z = lbl_1_data_0[arg0].rot.z + (arg2 * (lbl_1_data_0[arg1].rot.z - lbl_1_data_0[arg0].rot.z)); +} + +void fn_1_2D44(omObjData *object) +{ + CameraData *camera = &Hu3DCamera[0]; + switch (fn_1_320()) { + case 1: + fn_1_2AF4(0, 1, sind(lbl_1_data_184[0] * 90.0f)); + if (lbl_1_data_184[0] < 1.0f) { + lbl_1_data_184[0] += 1.0f / 60.0f; + if (lbl_1_data_184[0] > 1.0f) { + lbl_1_data_184[0] = 1.0f; + } + } + break; + + case 6: + fn_1_2AF4(1, 1, 0); + break; + + case 4: + case 5: + case 7: + break; + } +} + +u32 lbl_1_data_18C[4] = { PAD_CHAN0_BIT, PAD_CHAN1_BIT, PAD_CHAN2_BIT, PAD_CHAN3_BIT }; +s32 fn_1_3214(void) +{ + s32 rumble = HuPadRumbleGet(); + s32 i; + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + if ((rumble & lbl_1_data_18C[GWPlayerCfg[i].pad_idx]) == 0) { + return 0; + } + } + } + return GWGameStat.rumble; +} + +float lbl_1_data_19C[] = { 0, 355, 0, 0, 0, 275, 128, 950, 6, 0, 0, 0, 190, 0, 550 }; diff --git a/src/REL/m455Dll/stage.c b/src/REL/m455Dll/stage.c new file mode 100644 index 00000000..ff708c84 --- /dev/null +++ b/src/REL/m455Dll/stage.c @@ -0,0 +1,1807 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfdraw.h" +#include "game/hsfanim.h" + +#include "game/hsfmotion.h" +#include "game/pad.h" + +#include "game/wipe.h" +#include "game/frand.h" +#include "game/audio.h" +#include "game/minigame_seq.h" +#include "game/gamework_data.h" +#include "game/chrman.h" +#include "game/sprite.h" + +#include "REL/m455Dll.h" + +#include "ext_math.h" +#include "math.h" + +Process *lbl_1_bss_70; +omObjData *lbl_1_bss_6C; +omObjData *lbl_1_bss_68; +omObjData *lbl_1_bss_64; +omObjData *lbl_1_bss_60; +omObjData *lbl_1_bss_5C; +omObjData *lbl_1_bss_58; +Vec lbl_1_bss_4C; + +typedef struct struct_bss48 { + AnimData *unk0[4]; + s32 unk10[4]; + Vec unk20; +} StructBss48; + +StructBss48 *lbl_1_bss_48; + +Vec lbl_1_data_1D8[4] = { + { -460, 0, 150 }, + { 460, 0, 150 }, + { -460, 0, -150 }, + { 460, 0, -150 }, +}; + +GXColor lbl_1_data_208 = { 255, 255, 255, 255 }; + +typedef struct struct_data20C { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + BOOL unk10; +} StructData20C; + +StructData20C lbl_1_data_20C[4] = { + { 400, 400, 400, 400, FALSE }, + { 640, 480, 320, 240, TRUE }, + { 640, 480, 640, 480, FALSE }, + { 640, 480, 320, 240, TRUE }, +}; + +void fn_1_8EAC(void); + +void fn_1_6914(omObjData *object); +void fn_1_7280(omObjData *object); +void fn_1_75C0(omObjData *object); +void fn_1_7C48(omObjData *object); +void fn_1_891C(omObjData *object); + +omObjData *fn_1_347C(void); + +void fn_1_32C4(Process *objman) +{ + lbl_1_bss_70 = objman; + fn_1_8EAC(); + lbl_1_bss_68 = omAddObjEx(lbl_1_bss_70, 50, 0, 0, -1, fn_1_6914); + lbl_1_bss_64 = omAddObjEx(lbl_1_bss_70, 50, 8, 0, -1, fn_1_7280); + lbl_1_bss_60 = omAddObjEx(lbl_1_bss_70, 50, 1, 0, -1, fn_1_75C0); + lbl_1_bss_5C = omAddObjEx(lbl_1_bss_70, 50, 0, 0, -1, fn_1_7C48); + lbl_1_bss_58 = omAddObjEx(lbl_1_bss_70, 50, 0, 0, -1, fn_1_891C); + lbl_1_bss_6C = fn_1_347C(); +} + +void fn_1_4104(omObjData *object); + +void fn_1_6C60(omObjData *object); +void fn_1_7430(omObjData *object); +void fn_1_7974(omObjData *object); +void fn_1_8474(omObjData *object); + +void fn_1_9168(void); + +void fn_1_340C(void) +{ + fn_1_4104(lbl_1_bss_6C); + fn_1_9168(); + fn_1_6C60(lbl_1_bss_68); + fn_1_7430(lbl_1_bss_64); + fn_1_7974(lbl_1_bss_60); + fn_1_8474(lbl_1_bss_5C); +} + +typedef struct work_347C_unk4 { + void *unk0; + u32 unk4; + BOOL unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; +} Work347CUnk4; + +typedef struct work_347C_unk74 { + Vec unk0; + Vec unkC; + float unk18; + u16 unk1C; + u16 unk1E; +} Work347CUnk74; + +typedef struct work_347C { + s32 unk0; + Work347CUnk4 unk4[4]; + Work347CUnk74 unk74[64]; + float unk874[26][2]; + float unk944[26][2]; + void *unkA14; + u32 unkA18; + AnimData *unkA1C[9]; + float unkA40; + float unkA44; + u32 unkA48; + u32 unkA4C; + u32 unkA50; + float unkA54; + float unkA58; +} Work347C; + +void fn_1_3DDC(omObjData *object); + +void fn_1_4180(ModelData *model, Mtx matrix); +void fn_1_49AC(ModelData *model, Mtx matrix); +void fn_1_4E64(ModelData *model, Mtx matrix); + +omObjData *fn_1_347C(void) +{ + omObjData *object = omAddObjEx(lbl_1_bss_70, 127, 15, 0, -1, fn_1_3DDC); + Work347C *work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work347C), MEMORY_DEFAULT_NUM); + Work347C *work2 = work; + Work347CUnk74 *workUnk74 = &work->unk74[0]; + Work347CUnk4 *workUnk4; + s32 id; + ModelData *modelP; + s32 i; + + work->unkA40 = 0; + work->unkA44 = 0; + work->unkA48 = 0; + work->unkA4C = 0; + work->unkA50 = 0; + work->unkA54 = 0; + work->unkA58 = 0; + + object->model[0] = id = Hu3DHookFuncCreate(fn_1_4E64); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 5); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work->unkA1C[4] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 21), MEMORY_DEFAULT_NUM)); + work->unkA1C[5] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 22), MEMORY_DEFAULT_NUM)); + work->unkA1C[6] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 23), MEMORY_DEFAULT_NUM)); + work->unkA1C[7] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 24), MEMORY_DEFAULT_NUM)); + work->unkA1C[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 17), MEMORY_DEFAULT_NUM)); + work->unkA1C[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 18), MEMORY_DEFAULT_NUM)); + work->unkA1C[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 19), MEMORY_DEFAULT_NUM)); + work->unkA1C[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 20), MEMORY_DEFAULT_NUM)); + work->unkA1C[8] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 25), MEMORY_DEFAULT_NUM)); + object->model[1] = id = Hu3DHookFuncCreate(fn_1_4180); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 0); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work2->unkA18 = 16384; + work2->unkA14 = HuMemDirectMallocNum(HEAP_SYSTEM, work2->unkA18, MEMORY_DEFAULT_NUM); + DCFlushRange(work2->unkA14, 16384); + GXBeginDisplayList(work2->unkA14, work2->unkA18); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(-0.5f, -0.5f); + GXTexCoord2f32(0, 0); + GXPosition2f32(0.5f, -0.5f); + GXTexCoord2f32(1, 0); + GXPosition2f32(0.5f, 0.5f); + GXTexCoord2f32(1, 1); + GXPosition2f32(-0.5f, 0.5f); + GXTexCoord2f32(0, 1); + work2->unkA18 = GXEndDisplayList(); + for(i=0; i<26; i++) { + work2->unk874[i][0] = 0; + work2->unk874[i][1] = 0; + work2->unk944[i][0] = 0; + work2->unk944[i][1] = 0; + } + + object->model[3] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 5)); + Hu3DModelPosSet(id, 0, 0, -5000); + Hu3DModelScaleSet(id, 2, 2, 2); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + id = Hu3DTexScrollCreate(object->model[3], "S3TCsk"); + Hu3DTexScrollPosMoveSet(id, -0.00009166667f, 0, 0); + id = Hu3DTexScrollCreate(object->model[3], "pa_sk3"); + Hu3DTexScrollPosMoveSet(id, -0.00020833335f, 0, 0); + + object->model[4] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 6)); + Hu3DModelPosSet(id, 0, 0, -3000); + Hu3DModelScaleSet(id, 1.2f, 1.2f, 1.2f); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + + object->model[8] = id = Hu3DHookFuncCreate(fn_1_49AC); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 2); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + + object->model[10] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 0)); + Hu3DModelPosSet(id, 0, 0, 0); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 3); + Hu3DModelShadowMapSet(object->model[10]); + for(i=0; i<4; i++) { + + object->model[i+11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 1)); + Hu3DModelCameraSet(object->model[i+11], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i+11], 3); + Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + Hu3DModelAttrSet(object->model[i+11], HU3D_MOTATTR_SHAPE_LOOP); + Hu3DMotionShapeTimeSet(object->model[i+11], (0.25*i)*Hu3DMotionShapeMaxTimeGet(object->model[i+11])); + } + modelP = &Hu3DData[object->model[0]]; + workUnk4 = &work2->unk4[0]; + for(i=0; i<4; i++, workUnk4++) { + workUnk4->unkC = lbl_1_data_20C[i].unk0; + workUnk4->unk10 = lbl_1_data_20C[i].unk4; + workUnk4->unk14 = lbl_1_data_20C[i].unk8; + workUnk4->unk18 = lbl_1_data_20C[i].unkC; + workUnk4->unk8 = lbl_1_data_20C[i].unk10; + workUnk4->unk4 = GXGetTexBufferSize(workUnk4->unk14, workUnk4->unk18, GX_TF_RGB565, GX_FALSE, GX_FALSE); + workUnk4->unk0 = HuMemDirectMallocNum(HEAP_DATA, workUnk4->unk4, modelP->unk_48); + memset(workUnk4->unk0, 0, workUnk4->unk4); + DCFlushRange(workUnk4->unk0, workUnk4->unk4); + } + for(i=0; i<64; i++, workUnk74++) { + workUnk74->unk0.x = workUnk74->unk0.y = workUnk74->unk0.z = 0; + workUnk74->unkC.x = 0; + workUnk74->unkC.y = 0; + workUnk74->unkC.z = 1; + workUnk74->unk18 = 0.016666668f; + workUnk74->unk1C = 60; + workUnk74->unk1E = 0; + } + return object; +} + +void fn_1_9CFC(float arg0); + +void fn_1_3DDC(omObjData *object) +{ + Work347C *work = object->data; + Work347C *work2 = work; + s32 i; + if((work->unkA50 = work->unkA50+(0.007874016f*((s32)frand() & 0x7F)*3.0f)) > 360) { + work->unkA50 -= 360; + } + work->unkA44 = (25+work->unkA40)+(5.0*sind(work->unkA50)); + Hu3DModelPosSet(object->model[10], 0, work->unkA44, 0); + for(i=0; i<4; i++) { + Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, work->unkA44+lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + } + work->unkA54 += 0.001f; + work->unkA58 += 0.001f; + work->unkA48++; + work->unkA4C++; + if(work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { + float time = 1-((work->unkA4C-60.0f)/21.0f); + if(time < 0.0f) { + time = 0.0f; + } + fn_1_9CFC(time); + } +} + +void fn_1_4104(omObjData *object) +{ + Work347C *work = object->data; + HuSprAnimKill(work->unkA1C[0]); + HuSprAnimKill(work->unkA1C[1]); + HuSprAnimKill(work->unkA1C[2]); + HuSprAnimKill(work->unkA1C[3]); + HuSprAnimKill(work->unkA1C[6]); + HuSprAnimKill(work->unkA1C[7]); + HuSprAnimKill(work->unkA1C[4]); + HuSprAnimKill(work->unkA1C[5]); + HuSprAnimKill(work->unkA1C[8]); +} + +GXColor lbl_1_data_26A = { 255, 255, 255, 32 }; +GXColor lbl_1_data_26E = { 255, 255, 255, 10 }; +GXColor lbl_1_data_272 = { 0, 126, 126, 255 }; +Vec lbl_1_data_278[4] = { + -1000, 50, 1000, + -1000, 50, -1000, + 1000, 50, -1000, + 1000, 50, 1000 +}; + +Vec lbl_1_data_2A8[26] = { + -1500, 0, 1000, + -1400, 0, 1000, + 0, 0, 1000, + 1400, 0, 1000, + 1500, 0, 1000, + -1500, 0, -500, + -1400, 0, -500, + 0, 0, -500, + 1400, 0, -500, + 1500, 0, -500, + -1500, 0, -2000, + -1400, 0, -2000, + 0, 0, -2000, + 1400, 0, -2000, + 1500, 0, -2000, + -1500, 0, -5000, + -1400, 0, -5000, + 0, 0, -5000, + 1400, 0, -5000, + 1500, 0, -5000, + -2000, 0, -500, + -2500, 0, -2000, + -3000, 0, -5000, + 2000, 0, -500, + 2500, 0, -2000, + 3000, 0, -5000 +}; + +GXColor lbl_1_data_3E0[26] = { + { 96, 128, 255, 255 }, + { 128, 160, 255, 32 }, + { 128, 160, 255, 32 }, + { 128, 160, 255, 32 }, + { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, + { 96, 128, 255, 32 }, + { 128, 160, 255, 32 }, + { 96, 128, 255, 32 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 } +}; + +float lbl_1_data_448[26][2] = { + 0, 1, + 0.033333335, 1, + 0.5, 1, + 0.96666664, 1, + 1, 1, + 0, 0.5, + 0.033333335, 0.5, + 0.5, 0.5, + 0.96666664, 0.5, + 1, 0.5, + 0, 0, + 0.033333335, 0, + 0.5, 0, + 0.96666664, 0, + 1, 0, + 0, 0, + 0.033333335, 0, + 0.5, 0, + 0.96666664, 0, + 1, 0, + -0.15, 0.5, + -0.33, 0, + -0.49, 0, + 1.15, 0.5, + 1.33, 0, + 1.49, 0 +}; + +float lbl_1_data_518[26][2] = { + 0, 30, + 0.5, 30, + 7.5, 30, + 14.5, 30, + 15, 30, + 0, 15, + 0.5, 15, + 7.5, 15, + 14.5, 15, + 15, 15, + 0, 7.5, + 0.5, 7.5, + 7.5, 7.5, + 14.5, 7.5, + 15, 7.5, + 0, 0, + 0.5, 0, + 7.5, 0, + 14.5, 0, + 15, 0, + -2.25, 15, + -4.9500003, 7.5, + -7.3500004, 0, + 17.25, 15, + 19.95, 7.5, + 22.35, 0 +}; + +float lbl_1_data_5E8[2][3] = { + 0, 0, 0.5, + 0, 0.5, 0 +}; + +GXColor lbl_1_data_600 = { 80, 80, 80, 80 }; + +Vec lbl_1_data_604[9] = { + -1500, 0, -5000, + 0, 0, -5000, + 1500, 0, -5000, + -1500, 0, -3000, + 0, 0, -3000, + 1500, 0, -3000, + -1500, 0, 1000, + 0, 0, 1000, + 1500, 0, 1000 +}; + +GXColor lbl_1_data_670[9] = { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, +}; + +GXColor lbl_1_data_694 = { 255, 165, 89, 178 }; +GXColor lbl_1_data_698 = { 153, 114, 89, 178 }; +GXColor lbl_1_data_69C = { 0, 0, 0, 255 }; + +void fn_1_6088(Work347CUnk4 *arg0, s32 arg1); + +void fn_1_4180(ModelData *model, Mtx matrix) +{ + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk74 *workUnk74 = &work2->unk74[0]; + Work347CUnk4 *workUnk4 = &work2->unk4[0]; + s32 i; + Mtx proj; + Mtx modelview; + MTXOrtho(proj, 0, 480, 0, 640, 0, 100); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_272); + GXSetTevColor(GX_TEVREG0, lbl_1_data_26E); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetScissor(0, 0, 400, 400); + HuSprTexLoad(work->unkA1C[4], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(0, 0); + GXTexCoord2f32(work->unkA54, work->unkA58); + GXPosition2u16(400, 0); + GXTexCoord2f32(work->unkA54+7, work->unkA58); + GXPosition2u16(400, 400); + GXTexCoord2f32(work->unkA54+7, work->unkA58+7); + GXPosition2u16(0, 400); + GXTexCoord2f32(work->unkA54, work->unkA58+7); + GXEnd(); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + HuSprTexLoad(work->unkA1C[8], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + workUnk74 = &work2->unk74[0]; + for(i=0; i<64; i++, workUnk74++) { + float scale; + float accel; + if(workUnk74->unk1E == 0) { + continue; + } + scale = 128*(workUnk74->unkC.x*(0.2f+cosd(workUnk74->unk1E*workUnk74->unk18*90.0f))); + accel = workUnk74->unk1E*workUnk74->unk18; + lbl_1_data_26A.a = workUnk74->unkC.z*sind((accel*accel)*90.0f)*255.0; + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_26A); + MTXScale(modelview, 0.5f*scale, 0.5f*scale, 1.0f); + mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); + mtxTransCat(modelview, 400*(workUnk74->unk0.x+1500)/3000, 400*(workUnk74->unk0.z - -2000)/3000, 0); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXCallDisplayList(work2->unkA14, work2->unkA18); + if(!omPauseChk()) { + workUnk74->unk1E--; + } + } + workUnk4 = &work2->unk4[0]; + fn_1_6088(workUnk4, 1); +} + +void fn_1_59A0(ModelData *model, Mtx matrix); + +void fn_1_49AC(ModelData *model, Mtx matrix) +{ + Work347C *work; + Work347C *work2; + Work347CUnk4 *workUnk4; + fn_1_59A0(model, matrix); + work = model->unk_120; + work2 = work; + workUnk4 = &work2->unk4[1]; + fn_1_6088(workUnk4, 0); +} + +void fn_1_6144(Work347CUnk4 *arg0, float arg1, float arg2, float arg3); + +void fn_1_4A14(ModelData *model, Mtx matrix) +{ + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk4 *workUnk4 = &work2->unk4[0]; + + fn_1_6144(workUnk4, 200, 0, 0.5f); + workUnk4 = &work2->unk4[1]; + fn_1_6144(workUnk4, 0, 0, 0.5f); + workUnk4 = &work2->unk4[2]; + fn_1_6144(workUnk4, 0, 150, 0.25f); + workUnk4 = &work2->unk4[3]; + fn_1_6144(workUnk4, 0, 300, 0.5f); +} + +void fn_1_6594(s16 arg0, Work347CUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4); + +void fn_1_4B1C(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk4 *workUnk4 = &work2->unk4[2]; + float fov; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + s16 lightMask; + s16 i; + + fn_1_6088(workUnk4, 0); + GXLoadPosMtxImm(matrix, GX_PNMTX0); + fov = cameraP->fov; + if(fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + lightMask = Hu3DLightSet(model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 4); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_208); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + workUnk4 = &work2->unk4[1]; + fn_1_6594(0, workUnk4, 0, 0, 0); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetArray(GX_VA_POS, lbl_1_data_278, sizeof(Vec)); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for(i=0; i<4; i++) { + GXPosition1x16(i); + } + GXEnd(); + workUnk4 = &work2->unk4[3]; + fn_1_6088(workUnk4, 0); + workUnk4 = &work2->unk4[2]; + fn_1_6594(0, workUnk4, 0, 0, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for(i=0; i<4; i++) { + GXPosition1x16(i); + } + GXEnd(); +} + +void fn_1_4E64(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk4 *workUnk4 = &work2->unk4[2]; + Mtx invXPose; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + float sp14; + float sp10; + float fov; + s16 i; + fn_1_4B1C(model, matrix); + sp14 = 1.5f; + sp10 = 0; + GXLoadPosMtxImm(matrix, GX_PNMTX0); + MTXInvXpose(matrix, invXPose); + GXLoadNrmMtxImm(invXPose, GX_PNMTX0); + fov = cameraP->fov; + if(fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY); + GXSetNumTevStages(2); + GXSetNumTexGens(3); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_RASC, GX_CC_RASA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColor(GX_TEVREG0, lbl_1_data_600); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_C0, GX_CC_TEXA, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_208); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + workUnk4 = &work2->unk4[3]; + fn_1_6594(0, workUnk4, 0, 0, 0); + HuSprTexLoad(work->unkA1C[3], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + workUnk4 = &work2->unk4[0]; + fn_1_6594(2, workUnk4, 0, 0, 1); + GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_1); + GXSetIndTexMtx(GX_ITM_1, lbl_1_data_5E8, -1); + for(i=0; i<26; i++) { + work2->unk944[i][0] -= 0.007874016f*((s32)frand() & 0x7F)*0.005f; + work2->unk944[i][1] += 0.007874016f*((s32)frand() & 0x7F)*0.005f; + work2->unk874[i][0] = work2->unk944[i][0]+lbl_1_data_518[i][0]; + work2->unk874[i][1] = work2->unk944[i][1]+lbl_1_data_518[i][1]; + } + DCFlushRange(&work2->unk874[0][0], sizeof(work2->unk874)); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + + GXSetArray(GX_VA_POS, lbl_1_data_2A8, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, lbl_1_data_3E0, sizeof(GXColor)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, lbl_1_data_448, sizeof(float)*2); + GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX1, &work2->unk874[0][0], sizeof(float)*2); + GXBegin(GX_QUADS, GX_VTXFMT0, 48); + for(i=0; i<12; i++) { + s16 index; + if(i == 4) { + index = 12; + } else if(i == 9) { + index = 13; + } else { + index = i; + } + GXPosition1x16(index+0); + GXColor1x16(index+0); + GXTexCoord1x16(index+0); + GXTexCoord1x16(index+0); + GXPosition1x16(index+5); + GXColor1x16(index+5); + GXTexCoord1x16(index+5); + GXTexCoord1x16(index+5); + GXPosition1x16(index+6); + GXColor1x16(index+6); + GXTexCoord1x16(index+6); + GXTexCoord1x16(index+6); + GXPosition1x16(index+1); + GXColor1x16(index+1); + GXTexCoord1x16(index+1); + GXTexCoord1x16(index+1); + } + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(22); + GXColor1x16(22); + GXTexCoord1x16(22); + GXTexCoord1x16(22); + GXPosition1x16(15); + GXColor1x16(15); + GXTexCoord1x16(15); + GXTexCoord1x16(15); + GXPosition1x16(21); + GXColor1x16(21); + GXTexCoord1x16(21); + GXTexCoord1x16(21); + GXPosition1x16(10); + GXColor1x16(10); + GXTexCoord1x16(10); + GXTexCoord1x16(10); + GXPosition1x16(20); + GXColor1x16(20); + GXTexCoord1x16(20); + GXTexCoord1x16(20); + GXPosition1x16(5); + GXColor1x16(5); + GXTexCoord1x16(5); + GXTexCoord1x16(5); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(19); + GXColor1x16(19); + GXTexCoord1x16(19); + GXTexCoord1x16(19); + GXPosition1x16(25); + GXColor1x16(25); + GXTexCoord1x16(25); + GXTexCoord1x16(25); + GXPosition1x16(14); + GXColor1x16(14); + GXTexCoord1x16(14); + GXTexCoord1x16(14); + GXPosition1x16(24); + GXColor1x16(24); + GXTexCoord1x16(24); + GXTexCoord1x16(24); + GXPosition1x16(9); + GXColor1x16(9); + GXTexCoord1x16(9); + GXTexCoord1x16(9); + GXPosition1x16(23); + GXColor1x16(23); + GXTexCoord1x16(23); + GXTexCoord1x16(23); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXEnd(); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +void fn_1_59A0(ModelData *model, Mtx matrix) +{ + s32 sp10 = 0; + Work347C *work = model->unk_120; + float scale = 1.5f; + float x = 0; + Mtx temp; + Mtx final; + MTXTrans(final, x, -300, 0); + GXSetTevColor(GX_TEVREG0, lbl_1_data_694); + MTXScale(temp, scale, 1, 1); + MTXConcat(final, temp, final); + MTXConcat(Hu3DCameraMtx, final, final); + GXLoadPosMtxImm(final, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_208); + HuSprTexLoad(work->unkA1C[0], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(work->unkA1C[1], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f*scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48%1024)/(512.0f*x), 0, 1.2499999f*(work->unkA48%400)); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX0); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f*scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48%300)/(150.0f*x), 0, 0); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX1, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX1); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_604, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, lbl_1_data_670, sizeof(GXColor)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(0); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(3); + GXColor1x8(3); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(6); + GXColor1x8(6); + GXPosition1x8(7); + GXColor1x8(7); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(2); + GXColor1x8(2); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(5); + GXColor1x8(5); + GXPosition1x8(7); + GXColor1x8(7); + GXPosition1x8(8); + GXColor1x8(8); + GXEnd(); +} + +void fn_1_6088(Work347CUnk4 *arg0, s32 arg1) +{ + GXSetTexCopySrc(0, 0, arg0->unkC, arg0->unk10); + GXSetTexCopyDst(arg0->unk14, arg0->unk18, GX_TF_RGB565, arg0->unk8); + GXSetCopyClear(lbl_1_data_69C, GX_MAX_Z24); + GXCopyTex(arg0->unk0, arg1); + +} + +void fn_1_6144(Work347CUnk4 *fbWork, float x1, float y1, float scale) +{ + float x2 = x1+(fbWork->unk14*scale); + float y2 = y1+(fbWork->unk18*scale); + Mtx44 proj; + Mtx modelview; + GXTexObj texObj; + GXColor color; + GXInitTexObj(&texObj, fbWork->unk0, fbWork->unk14, fbWork->unk18, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&texObj, GX_TEXMAP0); + MTXOrtho(proj, 0, 480, 0, 640, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + color.a = 255; + GXSetTevColor(GX_TEVREG0, color); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(x1, y1, 0); + GXTexCoord2f32(0, 0); + GXPosition3f32(x2, y1, 0); + GXTexCoord2f32(1, 0); + GXPosition3f32(x2, y2, 0); + GXTexCoord2f32(1, 1); + GXPosition3f32(x1, y2, 0); + GXTexCoord2f32(0, 1); + GXEnd(); +} + +void fn_1_6594(s16 arg0, Work347CUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4) +{ + GXTexObj texObj; + GXInitTexObj(&texObj, arg1->unk0, arg1->unk14, arg1->unk18, GX_TF_RGB565, arg2, arg2, FALSE); + if(arg4) { + GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } else { + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&texObj, arg0); +} + +s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3) +{ + Work347C *work; + Work347C *work2; + Work347CUnk74 *workUnk74; + s32 i; + if(!lbl_1_bss_6C) { + return -1; + } + work = lbl_1_bss_6C->data; + work2 = work; + workUnk74 = &work->unk74[0]; + for(i=0; i<64; i++, workUnk74++) { + if(workUnk74->unk1E == 0) { + break; + } + } + if(i >= 64) { + return -1; + } + workUnk74->unk0 = *arg0; + if(arg1 < 0.0f) { + workUnk74->unkC.x = 1; + } else { + workUnk74->unkC.x = arg1; + } + if(arg2 < 0.0f) { + workUnk74->unkC.z = 1; + } else { + workUnk74->unkC.z = arg2; + } + if(arg3 < 0) { + workUnk74->unk1C = 60; + } else { + workUnk74->unk1C = arg3; + } + workUnk74->unkC.y = (s32)frand()%360; + workUnk74->unk1E = workUnk74->unk1C; + workUnk74->unk18 = 1.0f/workUnk74->unk1C; + return i; +} + +float fn_1_687C(void) +{ + if(!lbl_1_bss_6C) { + return 0; + } else { + Work347C *work = lbl_1_bss_6C->data; + return work->unkA44; + } +} + +float fn_1_68C8(void) +{ + if(!lbl_1_bss_6C) { + return 0; + } else { + Work347C *work = lbl_1_bss_6C->data; + return work->unkA40; + } +} + +typedef struct work6914 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + AnimData *unk10; + Vec unk14; + Vec unk20; + Vec unk2C; +} Work6914; + +void fn_1_6A6C(omObjData *object); + +void fn_1_6914(omObjData *object) +{ + Work6914 *work; + s32 i; + AnimData *anim; + work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914)*8, MEMORY_DEFAULT_NUM); + memset(work, 0, sizeof(Work6914)*8); + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); + for(i=0; i<8; i++, work++) { + work->unk10 = anim; + work->unk0 = i; + work->unk4 = Hu3DParticleCreate(work->unk10, 32); + Hu3DModelCameraSet(work->unk4, HU3D_CAM0); + Hu3DModelLayerSet(work->unk4, 6); + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_PARTICLE_KILL); + work->unk8 = 0; + work->unkC = 0; + work->unk14.x = work->unk14.y = work->unk14.z = 0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = 1; + } + object->func = fn_1_6A6C; +} + +void fn_1_6A6C(omObjData *object) +{ + Work6914 *work = object->data; + s32 i; + for(i=0; i<8; i++, work++) { + if(work->unk8 == 0) { + continue; + } + if(work->unkC > 1) { + ModelData *modelP = &Hu3DData[work->unk4]; + ParticleData *particleP = modelP->unk_120; + HsfanimStruct01 *data = particleP->unk_48; + s32 j; + for(j=0; junk_30; j++, data++) { + if(++data->unk00 > data->unk02) { + s32 alpha = data->unk40.a-1; + if(alpha < 0) { + data->unk2C = 0; + } else { + data->unk40.a = alpha; + } + } + data->unk2C *= 0.975; + data->unk34.x += data->unk08.x; + data->unk34.y += data->unk08.y; + data->unk34.z += data->unk08.z; + data->unk08.y -= 0.3103333379576603; + } + } + if(++work->unkC > 90.0f) { + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 0; + } else { + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + } + } +} + +void fn_1_6C60(omObjData *object) +{ + Work6914 *work = object->data; + AnimData *anim = work->unk10; + anim->useNum = 0; + HuSprAnimKill(anim); +} + +s32 fn_1_6CB0(Vec *arg0, float arg1) +{ + Work6914 *work = lbl_1_bss_68->data; + s32 i; + ModelData *temp_r27; + ParticleData *temp_r28; + HsfanimStruct01 *temp_r30; + + for(i=0; i<8; i++, work++) { + if(work->unk8 == 0) { + break; + } + } + if(i >= 8) { + return -1; + } + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 1; + work->unkC = 0; + temp_r27 = &Hu3DData[work->unk4]; + temp_r28 = temp_r27->unk_120; + temp_r28->unk_2C = 1; + temp_r30 = temp_r28->unk_48; + for(i=0; iunk_30; i++, temp_r30++) { + float temp_f30 = ((s32)frand()%20)+90; + float temp_f29 = (s32)frand()%360; + float temp_f26 = sind(temp_f30); + float temp_f28 = cosd(temp_f30); + float temp_f25 = 0.75f+0.15f*(0.007874016f*((s32)frand() & 0x7F)); + float temp_f31 = 0.15f; + temp_r30->unk08.x = temp_f31*(0.65f*(50.0*(temp_f28*sind(temp_f29)))); + temp_r30->unk08.z = temp_f31*(0.65f*(50.0*(temp_f28*cosd(temp_f29)))); + temp_r30->unk08.y = temp_f31*(50*temp_f26*temp_f25); + temp_r30->unk00 = 0; + temp_r30->unk02 = ((s32)frand()%16)+45; + temp_r30->unk30 = (s32)frand()%360; + temp_r30->unk2C = 145; + temp_r30->unk34.x = 0.05f*(((s32)frand() & 0x7F)-64); + temp_r30->unk34.y = 0.65f*(((s32)frand() & 0x7F)-64); + temp_r30->unk34.z = 0.05f*(((s32)frand() & 0x7F)-64); + temp_r30->unk40.r = ((s32)frand()%64)+192; + temp_r30->unk40.g = ((s32)frand()%64)+192; + temp_r30->unk40.b = ((s32)frand()%64)+192; + temp_r30->unk40.a = 64; + } + if(arg1 < 0.0f) { + arg1 = 1.0f; + } + work->unk14 = *arg0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = arg1; + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + return i; +} + +void fn_1_7368(omObjData *object); + +void fn_1_7280(omObjData *object) +{ + s32 i; + for(i=0; imdlcnt; i++) { + if(i == 0) { + object->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 9)); + } else { + object->model[i] = Hu3DModelLink(object->model[0]); + } + Hu3DModelCameraSet(object->model[i], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i], 6); + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + + } + object->stat |= 0x100; + object->func = fn_1_7368; +} + +void fn_1_7368(omObjData *object) +{ + s32 i; + for(i=0; imdlcnt; i++) { + ModelData *modelP = &Hu3DData[object->model[i]]; + if(!(modelP->attr & HU3D_ATTR_DISPOFF)) { + if(Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + } + } +} + +void fn_1_7430(omObjData *object) +{ + +} + +s32 fn_1_7434(Vec *pos, float scale) +{ + s32 i; + for(i=0; imdlcnt; i++) { + ModelData *modelP = &Hu3DData[lbl_1_bss_64->model[i]]; + if(modelP->attr & HU3D_ATTR_DISPOFF) { + break; + } + } + if(i >= lbl_1_bss_64->mdlcnt) { + return -1; + } + Hu3DMotionTimeSet(lbl_1_bss_64->model[i], 0); + Hu3DMotionSpeedSet(lbl_1_bss_64->model[i], 1); + Hu3DModelPosSet(lbl_1_bss_64->model[i], pos->x, pos->y, pos->z); + Hu3DModelScaleSet(lbl_1_bss_64->model[i], scale, scale, scale); + Hu3DModelAttrReset(lbl_1_bss_64->model[i], HU3D_ATTR_DISPOFF); + return i; +} + +void fn_1_76B0(omObjData *object); + +void fn_1_75C0(omObjData *object) +{ + ParticleData *temp_r30; + HsfanimStruct01 *temp_r29; + s32 i; + ModelData *modelP; + AnimData *anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); + + object->data = anim; + object->model[0] = Hu3DParticleCreate(anim, 64); + Hu3DModelCameraSet(object->model[0], HU3D_CAM0); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_PARTICLE_KILL); + modelP = &Hu3DData[object->model[0]]; + temp_r30 = modelP->unk_120; + temp_r29 = temp_r30->unk_48; + temp_r30->unk_2C = 1; + for(i=0; iunk_30; i++, temp_r29++) { + temp_r29->unk2C = 0; + } + object->func = fn_1_76B0; +} + +void fn_1_76B0(omObjData *object) +{ + ModelData *modelP = &Hu3DData[object->model[0]]; + ParticleData *temp_r29 = modelP->unk_120; + HsfanimStruct01 *temp_r30 = temp_r29->unk_48; + s32 i; + for(i=0; iunk_30; i++, temp_r30++) { + if(temp_r30->unk2C <= 0.0f) { + continue; + } + if(++temp_r30->unk00 > 360) { + temp_r30->unk00 -= 360; + } + temp_r30->unk34.x += temp_r30->unk08.x*sind(2.0f*temp_r30->unk00); + temp_r30->unk34.y += temp_r30->unk08.y; + if(temp_r30->unk34.y >= 0.0f) { + fn_1_6698(&temp_r30->unk34, 0.00625f*temp_r30->unk2C, 1, 15); + temp_r30->unk2C = 0; + } + + } +} + +void fn_1_7974(omObjData *object) +{ + AnimData *anim = object->data; + HuSprAnimKill(anim); + Hu3DModelKill(object->model[0]); + object->model[0] = -1; +} + +s32 fn_1_79C8(Vec *pos, float scale) +{ + s32 i; + ModelData *modelP = &Hu3DData[lbl_1_bss_60->model[0]]; + ParticleData *temp_r30 = modelP->unk_120; + HsfanimStruct01 *temp_r31 = temp_r30->unk_48; + for(i=0; iunk_30; i++, temp_r31++) { + if(temp_r31->unk2C <= 0.0f) { + break; + } + } + if(i >= temp_r30->unk_30) { + return -1; + } + if(scale <= 0.0f) { + scale = 1.0f; + } + temp_r31->unk34 = *pos; + temp_r31->unk08.x = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*0.5f; + temp_r31->unk08.z = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F)))); + temp_r31->unk08.y = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*2.0f; + temp_r31->unk00 = (s32)frand()%360; + temp_r31->unk2C = 20*scale; + return i; +} + + +typedef struct work7C48 { + s32 unk0; + s32 unk4; + s32 unk8; + float unkC; + float unk10; + Vec unk14; + Vec unk20; +} Work7C48; + +void fn_1_8050(omObjData *object); + +void fn_1_7C48(omObjData *object) +{ + Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48)*8, MEMORY_DEFAULT_NUM); + Work7C48 *workP = workBase; + s32 i; + memset(workP, 0, 8*sizeof(Work7C48)); + for(i=0; i<8; i++, workP++) { + switch(i) { + case 0: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); + break; + + case 1: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); + break; + + default: + if(i & 0x1) { + workP->unk0 = Hu3DModelLink(workBase[0].unk0); + } else { + workP->unk0 = Hu3DModelLink(workBase[1].unk0); + } + break; + } + Hu3DModelScaleSet(workP->unk0, 0.5f, 0.5f, 0.5f); + Hu3DModelCameraSet(workP->unk0, HU3D_CAM0); + Hu3DModelLayerSet(workP->unk0, 1); + workP->unk4 = 0; + workP->unk8 = 0; + workP->unkC = 2; + workP->unk10 = (s32)frand() % 360; + workP->unk14.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.y = -250+(100*(0.3f*i)); + workP->unk20.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + } + object->func = fn_1_8050; +} + +float fn_1_9F18(float start, float end, float weight); + +void fn_1_8050(omObjData *object) +{ + Work7C48 *workP = object->data; + s32 i; + for(i=0; i<8; i++, workP++) { + float dx; + float dz; + float vel; + float angle; + if(workP->unk4 == 0) { + vel = 1+(0.5*sind((workP->unk8*5)%180)); + } else { + vel = 3; + } + workP->unk14.x += vel*(workP->unkC*sind(workP->unk10)); + workP->unk14.z += vel*(workP->unkC*cosd(workP->unk10)); + dx = workP->unk20.x-workP->unk14.x; + dz = workP->unk20.z-workP->unk14.z; + angle = atan2d(dx, dz); + workP->unk10 = fn_1_9F18(angle, workP->unk10, 3.5f); + if((dx*dx)+(dz*dz) < 10000.0f) { + if(workP->unk4 == 0) { + workP->unk20.x = 2000*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 700*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } else { + if(workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } + } + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + workP->unk8 += frand()&0x3; + } +} + +void fn_1_8474(omObjData *object) +{ + +} + +void fn_1_8478(void) +{ + Work7C48 *workP = lbl_1_bss_5C->data; + s32 i; + for(i=0; i<8; i++, workP++) { + workP->unk4 = 1; + if(workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } +} + +typedef struct work891C { + s16 unk0; + s16 unk2[2]; + s16 unk6; + Vec unk8; + Vec unk14; + float unk20; + float unk24; + float unk28; + float unk2C; + float unk30; + float unk34; + float unk38; + float unk3C; +} Work891C; + +void fn_1_8578(omObjData *object, Work891C *workP) +{ + s32 num = workP[0].unk6; + float ofsZ = -2000; + s32 i; + for(i=0; iunk0, workP->unk8.x, workP->unk8.y, workP->unk8.z+ofsZ); + modelMtx = &Hu3DData[workP->unk0].unk_F0; + MTXRotDeg(*modelMtx, 'Y', workP->unk28); + MTXRotDeg(rotZ, 'Z', workP->unk38); + MTXConcat(*modelMtx, rotZ, *modelMtx); + Hu3DModelAttrReset(workP->unk0, HU3D_ATTR_DISPOFF); + } +} + +float fn_1_8D90(float start, float end, float weight); + +void fn_1_867C(omObjData *object) +{ + Work891C *workP = object->data; + s32 num = workP[0].unk6; + s32 i; + for(i=0; iunk14, &workP->unk8, &diff); + workP->unk2C = atan2d(diff.x, diff.z); + workP->unk28 = fn_1_8D90(workP->unk28, workP->unk2C+workP->unk3C, 0.08f); + workP->unk24 += 0.05f*(600.0f-workP->unk24); + workP->unk20 += 0.2f*(workP->unk24-workP->unk20); + workP->unk8.x += (workP->unk20*0.016666668f)*sind(workP->unk28); + workP->unk8.z += (workP->unk20*0.016666668f)*cosd(workP->unk28); + workP->unk30 += workP->unk20*0.016666668f; + } + fn_1_8578(object, object->data); + +} + +void fn_1_891C(omObjData *object) +{ + s16 num = 12; + Work891C *workBase; + s32 modelId; + Work891C *work; + float radius; + float angle; + float ofsZ; + s32 i; + object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num*sizeof(Work891C), MEMORY_DEFAULT_NUM); + memset(workBase, 0, num*sizeof(Work891C)); + modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 8)); + ofsZ = 1500; + work = workBase; + for(i=0; iunk0 = Hu3DModelLink(modelId); + Hu3DModelLayerSet(work->unk0, 6); + Hu3DModelCameraSet(work->unk0, 1); + Hu3DModelScaleSet(work->unk0, 7, 7, 7); + work->unk14.x = ((s32)frandmod(1000)*4.0f)-2000; + work->unk14.z = ((s32)frandmod(1000))-500.0f; + work->unk14.y = ((s32)frandmod(1000)*0.8f)+300; + angle = (s32)frandmod(360); + radius = ((s32)frandmod(250))+200.0f; + work->unk8.x = radius*sind(angle); + work->unk8.y = 0; + work->unk8.z = radius*cosd(angle); + VECAdd(&work->unk14, &work->unk8, &work->unk8); + work->unk38 = 60-((6.0f/55.0f)*radius); + work->unk28 = (s32)frandmod(360); + + work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f+((s32)frandmod(50)*0.1f)) : (70.0f-((s32)frandmod(50)*0.1f)); + if(work->unk3C < 0.0f) { + work->unk38 = -work->unk38; + } + work->unk30 = 1; + work->unk34 = 0; + ofsZ -= 50.0f; + work->unk6 = num; + } + Hu3DModelKill(modelId); + object->func = fn_1_867C; +} + +float fn_1_8D90(float start, float end, float weight) +{ + float angle = fmodf(end-start, 360); + if(angle < 0.0f) { + angle += 360.0f; + } + if(angle > 180.0f) { + angle -= 360.0f; + } + angle = fmodf(start+(weight*angle), 360); + if(angle < 0.0f) { + angle += 360.0f; + } + return angle; +} + +void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_8EAC(void) +{ + StructBss48 *workP = lbl_1_bss_48 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss48), MEMORY_DEFAULT_NUM); + ParticleData *particle; + ModelData *modelP; + s16 *newWork; + s32 modelId; + memset(workP, 0, sizeof(StructBss48)); + workP->unk0[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 13), MEMORY_DEFAULT_NUM)); + workP->unk0[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 14), MEMORY_DEFAULT_NUM)); + workP->unk0[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 15), MEMORY_DEFAULT_NUM)); + workP->unk0[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 16), MEMORY_DEFAULT_NUM)); + workP->unk20.y = 1; + workP->unk20.z = 0; + workP->unk10[0] = modelId = Hu3DParticleCreate(workP->unk0[0], 1); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 0; + workP->unk10[1] = modelId = Hu3DParticleCreate(workP->unk0[3], 10); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 1; + workP->unk10[2] = modelId = Hu3DParticleCreate(workP->unk0[2], 4); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 2; + workP->unk10[3] = modelId = Hu3DParticleCreate(workP->unk0[1], 6); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 3; +} + +void fn_1_9168(void) +{ + StructBss48 *workP = lbl_1_bss_48; + HuSprAnimKill(workP->unk0[0]); + HuSprAnimKill(workP->unk0[1]); + HuSprAnimKill(workP->unk0[2]); + HuSprAnimKill(workP->unk0[3]); +} + +float lbl_1_data_6A0[4] = { + 1000, + 200, + 600, + 1200 +}; + +float lbl_1_data_6B0[4] = { + 1, + 0.6, + 0.3, + 0.425 +}; + +void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + s16 unk8 = 0; + StructBss48 *workP = lbl_1_bss_48; + s16 *newWorkP = particle->unk_1C; + s32 unk14 = 0; + Vec pos = Center; + Vec rot = CRot; + float temp_f26; + float temp_f25; + float zoom = CZoom; + HsfanimStruct01 *temp_r31; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + float temp_f29; + float temp_f23; + s32 i; + switch(newWorkP[2]) { + case 0: + temp_r31 = particle->unk_48; + if(newWorkP[1]) { + sp18.x = 2000; + sp18.y = -300; + sp18.z = 500; + temp_f29 = 1/VECMagPoint(sp18.x, sp18.y, sp18.z); + sp18.x *= temp_f29; + sp18.y *= temp_f29; + sp18.z *= temp_f29; + temp_f23 = 3200.0f/particle->unk_30; + for(i=0; iunk_30; i++, temp_r31++) { + temp_f26 = 500.0+((temp_f23*i)+((0.25f*temp_f23)*((float)((s32)frand() & 0xFFFF)*0.0000152587890625))); + temp_f25 = temp_f26/3200; + temp_r31->unk14.x = temp_f26; + temp_r31->unk34.x = 1000+(temp_f26*sp18.x); + temp_r31->unk34.y = 4800+(temp_f26*sp18.y); + temp_r31->unk34.z = -3500+(temp_f26*sp18.z); + temp_r31->unk2C = ((0.7f*(temp_f25*temp_f25))+0.3f)*(lbl_1_data_6A0[newWorkP[1]]*(0.7f+(0.3f*((float)((s32)frand() & 0xFFFF)*0.0000152587890625)))); + temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*160.0)+32; + temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*96.0)+32; + temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*128.0)+32; + temp_r31->unk40.a = (255*lbl_1_data_6B0[newWorkP[1]]*(1.0-(0.4*temp_f25)))-(s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*16.0); + temp_r31->unk14.z = temp_r31->unk40.a; + } + newWorkP[2]++; + } else { + temp_r31->unk34.x = 1000; + temp_r31->unk34.y = 4800; + temp_r31->unk34.z = -3500; + temp_r31->unk2C = 1000; + } + break; + + case 1: + sp3C.x = sind(rot.y)*cosd(rot.x); + sp3C.y = -sind(rot.x); + sp3C.z = cosd(rot.y)*cosd(rot.x); + sp30.x = 1000-(pos.x+(1.25f*(sp3C.x*zoom))); + sp30.y = 4800-(pos.y+(sp3C.y*zoom)); + sp30.z = -3500-(pos.z+(1.25f*(sp3C.z*zoom))); + temp_f29 = 1/VECMagPoint(sp30.x, sp30.y, sp30.z); + sp30.x *= temp_f29; + sp30.y *= temp_f29; + sp30.z *= temp_f29; + temp_f29 = -((-sp30.x*-sp3C.x)+(-sp30.y*-sp3C.y)+(-sp30.z*-sp3C.z)); + sp24.x = -sp3C.x+((-2.0f*sp30.x)*temp_f29); + sp24.y = -sp3C.y+((-2.0f*sp30.y)*temp_f29); + sp24.z = -sp3C.z+((-2.0f*sp30.z)*temp_f29); + temp_r31 = particle->unk_48; + for(i=0; iunk_30; i++, temp_r31++) { + temp_r31->unk34.x = 1000+(sp24.x*temp_r31->unk14.x); + temp_r31->unk34.y = 4800+(sp24.y*temp_r31->unk14.x); + temp_r31->unk34.z = -3500+(sp24.z*temp_r31->unk14.x); + temp_r31->unk40.a = temp_r31->unk14.z*workP->unk20.y; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + +} + +void fn_1_9CFC(float arg0) +{ + StructBss48 *workP = lbl_1_bss_48; + workP->unk20.y = arg0; + if(workP->unk20.y > 1.0f) { + workP->unk20.y = 1.0f; + } + if(workP->unk20.y <= 0.0f) { + Hu3DModelAttrSet(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[3], HU3D_ATTR_DISPOFF); + } else { + Hu3DModelAttrReset(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[3], HU3D_ATTR_DISPOFF); + } +} + +float fn_1_9E00(float start, float end) +{ + float angleDiff; + if(start >= 360.0f) { + start -= 360.0f; + } else if(start < 0.0f) { + start += 360.0f; + } + if(end >= 360.0f) { + end -= 360.0f; + } else if(end < 0.0f) { + end += 360.0f; + } + angleDiff = start-end; + if(angleDiff <= -180.0f) { + angleDiff += 360.0f; + } else if(angleDiff >= 180.0f) { + angleDiff -= 360.0f; + } + return angleDiff; +} + +float fn_1_9F18(float start, float end, float max) +{ + float angle; + float diff; + + if(start >= 360.0) { + start -= 360.0; + } else if(start < 0.0) { + start += 360.0; + } + if(end >= 360.0) { + end -= 360.0; + } else if(end < 0.0) { + end += 360.0; + } + diff = 360.0+(start-end); + if(fabs(diff) >= 360.0) { + diff = fmod(diff, 360.0); + } + if(diff < 180.0) { + if(diff <= max) { + angle = diff; + } else { + angle = max; + } + } else if(360.0-diff <= max) { + angle = -(360.0-diff); + } else { + angle = -max; + } + angle += end; + if(angle >= 360.0) { + angle -= 360.0; + } else if(angle < 0.0) { + angle += 360.0; + } + + return angle; +} diff --git a/src/REL/m456Dll/main.c b/src/REL/m456Dll/main.c new file mode 100644 index 00000000..97e8ffb5 --- /dev/null +++ b/src/REL/m456Dll/main.c @@ -0,0 +1,969 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m456Dll.h" +#include "version.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +typedef struct M456DllMainWork { + struct { + u8 unk_00_field0 : 1; + u8 unk_00_field1 : 1; + u8 unk_00_field2 : 1; + u8 unk_00_field3 : 1; + }; + s16 unk_02; + s16 unk_04; + s8 unk_06; + s8 unk_07; + u16 unk_08; + u16 unk_0A; + s32 unk_0C; + s32 unk_10; + s16 unk_14; + s16 unk_16; + s16 unk_18; + s16 unk_1A; + char unk1C[4]; + s32 unk_20; + s32 unk_24; + s16 unk_28; + s16 unk_2A; + s16 unk_2C; + s16 unk_2E; + s16 unk_30; +} M456DllMainWork; /* size = 0x34 */ + +typedef struct M456DllData0Struct { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; + /* 0x18 */ float unk_18; +} M456DllData0Struct; /* size = 0x1C */ + +typedef struct M456DllData1B0Struct { + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; +} M456DllData1B0Struct; /* size = 0x08 */ + +typedef struct M456DllDataE4Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ u32 unk_04; +} M456DllDataE4Struct; /* size = 0x08 */ + +typedef struct M456DllBss18Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + float unk_0C; + float unk_10; + s32 unk_14; + s32 unk_18; + float unk_1C; + s16 unk_20[0x10]; +} M456DllBss18Struct; /* size 0x40 */ + +void fn_1_1304(omObjData *object); +void fn_1_2040(omObjData *object); +float fn_1_2090(float arg8, float arg9, float argA); +void fn_1_2194(Process *process); +void fn_1_21F8(s32 arg0, s32 arg1, float arg8); +void fn_1_2448(omObjData *object); +void fn_1_2918(Process *process); +void fn_1_2AC4(omObjData *object); +void fn_1_3C0(omObjData *object); +void fn_1_498(omObjData *); +void fn_1_BE4(omObjData *); +void fn_1_C40(Process *process); +void fn_1_CC4(void); +s32 fn_1_D2C(void); +s32 fn_1_F4C(void); +void fn_1_FD0(omObjData *object); + +M456DllData0Struct lbl_1_data_0[2] = { + { 500.0f, 0.0f, 1000.0f, 0.0f, 40.0f, 0.0f, 0.0f }, + { 1985.0f, 0.0f, 100.0f, 100.0f, -13.0f, 0.0f, 0.0f }, +}; +Vec lbl_1_data_38 = { 700.0f, 2500.0f, -700.0f }; +Vec lbl_1_data_44 = { 0.0f, 0.0f, 0.0f }; +GXColor lbl_1_data_50 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_54 = { 200.0f, 15000.0f, -200.0f }; +Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f }; + +omObjData *lbl_1_bss_8C; +omObjData *lbl_1_bss_88; +omObjData *lbl_1_bss_84; +s32 lbl_1_bss_80; +s32 lbl_1_bss_70[4]; +s32 lbl_1_bss_6C; +s32 lbl_1_bss_68; +s32 lbl_1_bss_64; +s16 lbl_1_bss_62; +s16 lbl_1_bss_60; +u32 lbl_1_bss_5C; +u32 lbl_1_bss_58; +M456DllBss18Struct lbl_1_bss_18; +u32 lbl_1_bss_14; +Vec lbl_1_bss_8; +s16 lbl_1_bss_6; +s16 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Process *var_r31; + CameraData *var_r30; + s16 var_r29; + + var_r30 = Hu3DCamera; + OSReport("******* M456ObjectSetup *********\n"); + var_r31 = omInitObjMan(0x32, 0x2000); + omGameSysInit(var_r31); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_88 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_8.x = lbl_1_data_44.x - lbl_1_data_38.x; + lbl_1_bss_8.y = lbl_1_data_44.y - lbl_1_data_38.y; + lbl_1_bss_8.z = lbl_1_data_44.z - lbl_1_data_38.z; + VECNormalize(&lbl_1_bss_8, &lbl_1_bss_8); + var_r29 = Hu3DGLightCreateV(&lbl_1_data_38, &lbl_1_bss_8, &lbl_1_data_50); + Hu3DGLightInfinitytSet(var_r29); + Hu3DGLightStaticSet(var_r29, 1); + Hu3DShadowCreate(10.0f, var_r30->near, var_r30->far); + Hu3DShadowTPLvlSet(0.7f); + Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_44); + HuAudSndGrpSet(0x4E); + lbl_1_bss_84 = omAddObjEx(var_r31, 0, 0, 0, -1, fn_1_3C0); + fn_1_2194(var_r31); + fn_1_C40(var_r31); + fn_1_2DF4(var_r31); + lbl_1_bss_5C = GWMGRecordGet(0xA); + if (lbl_1_bss_5C == 0) { + lbl_1_bss_5C = 5 * REFRESH_RATE; + } + lbl_1_bss_58 = 0; + fn_1_2918(var_r31); + lbl_1_bss_18.unk_14 = lbl_1_bss_5C; + lbl_1_bss_18.unk_00 = 1; + lbl_1_bss_18.unk_0C = 536.0f; +} + +s32 lbl_1_data_90 = -1; +s32 lbl_1_data_94 = -1; + +void fn_1_3A0(u32 arg0) +{ + lbl_1_bss_80 = arg0; +} + +s32 fn_1_3B0(void) +{ + return lbl_1_bss_80; +} + +void fn_1_3C0(omObjData *object) +{ + CameraData *var_r31 = Hu3DCamera; + fn_1_3A0(0); + lbl_1_bss_6C = REFRESH_RATE; + lbl_1_bss_70[0] = lbl_1_bss_70[1] = lbl_1_bss_70[2] = lbl_1_bss_70[3] = -1; + lbl_1_bss_62 = 5; + lbl_1_bss_60 = REFRESH_RATE; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + var_r31->fov = 30.0f; + object->func = fn_1_498; +} + +void fn_1_498(omObjData *object) +{ + s16 sp8[4]; + + s32 var_r31; + omObjData **var_r29; + M456DllMainWork *var_r28; + + switch (fn_1_3B0()) { + case 0: + if (lbl_1_data_94 < 0) { + lbl_1_data_94 = HuAudFXPlay(0x7D1); + } + if (--lbl_1_bss_6C == 0) { + fn_1_3A0(1); + lbl_1_bss_6C = 2 * REFRESH_RATE; + } + break; + case 1: + if (--lbl_1_bss_6C == 0) { + fn_1_3A0(2); + lbl_1_bss_6 = MGSeqCreate(3, 0); + } + break; + case 2: + if (MGSeqStatGet(lbl_1_bss_6) == 0) { + fn_1_3A0(3); + lbl_1_bss_4 = MGSeqCreate(1, 5, -1, -1); + } + if ((lbl_1_data_90 < 0) && ((MGSeqStatGet(lbl_1_bss_6) & 0x10) != 0)) { + lbl_1_data_90 = HuAudSeqPlay(0x43); + } + break; + case 3: + if (--lbl_1_bss_60 == 0) { + lbl_1_bss_62--; + MGSeqParamSet(lbl_1_bss_4, 1, lbl_1_bss_62); + lbl_1_bss_60 = REFRESH_RATE; + } + if (lbl_1_bss_62 == 0) { + lbl_1_bss_64 = fn_1_D2C(); + if (lbl_1_bss_64 == 0) { + fn_1_3A0(5); + lbl_1_bss_6 = MGSeqCreate(3, 1); + HuAudSeqFadeOut(lbl_1_data_90, 0x64); + } + else { + fn_1_3A0(4); + HuAudFXPlay(0x11); + lbl_1_bss_6C = 2 * REFRESH_RATE; + } + } + break; + case 4: + if (lbl_1_bss_4 >= 0) { + MGSeqParamSet(lbl_1_bss_4, 2, -1); + lbl_1_bss_4 = -1; + } + if (lbl_1_bss_6C != 0) { + lbl_1_bss_6C--; + } + else if (lbl_1_bss_18.unk_18 < lbl_1_bss_14) { + lbl_1_bss_18.unk_18++; + } + if (fn_1_F4C() != 0) { + fn_1_3A0(5); + lbl_1_bss_6 = MGSeqCreate(3, 1); + HuAudSeqFadeOut(lbl_1_data_90, 0x64); + } + break; + case 5: + if (lbl_1_bss_4 >= 0) { + MGSeqParamSet(lbl_1_bss_4, 2, -1); + lbl_1_bss_4 = -1; + } + if (MGSeqStatGet(lbl_1_bss_6) == 0) { + if (lbl_1_bss_58 == 0) { + fn_1_3A0(9); + lbl_1_bss_6C = 2 * REFRESH_RATE; + } + else { + fn_1_3A0(6); + lbl_1_bss_6 = MGSeqCreate(0xE, lbl_1_bss_58); + GWMGRecordSet(0xA, lbl_1_bss_58); + lbl_1_bss_18.unk_04 = 1; + lbl_1_bss_18.unk_14 = lbl_1_bss_18.unk_18; + } + } + break; + case 6: + if (MGSeqStatGet(lbl_1_bss_6) == 0) { + fn_1_3A0(9); + lbl_1_bss_6C = 2 * REFRESH_RATE; + } + break; + case 9: + if (lbl_1_bss_6C != 0) { + lbl_1_bss_6C--; + } + if (lbl_1_bss_6C == 0) { + if (fn_1_F4C() != 0) { + fn_1_3A0(0xB); + if (lbl_1_bss_64 != 0) { + var_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < lbl_1_bss_64; var_r31++) { + var_r28 = var_r29[lbl_1_bss_70[var_r31]]->data; + sp8[var_r31] = var_r28->unk_14; + GWPlayerCoinWinSet(lbl_1_bss_70[var_r31], 10); + } + for (; var_r31 < 4; var_r31++) { + sp8[var_r31] = -1; + } + lbl_1_bss_6 = MGSeqCreate(5, 3, sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + else { + lbl_1_bss_6 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + lbl_1_bss_6C = 3.5 * REFRESH_RATE; + } + } + break; + case 11: + if (--lbl_1_bss_6C == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + HuAudFXStop(lbl_1_data_94); + object->func = fn_1_BE4; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + object->func = fn_1_BE4; + } +} + +void fn_1_BE4(omObjData *object) +{ + if (WipeStatGet() == 0) { + fn_1_CC4(); + fn_1_2F3C(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + OSReport("******* M456Exit *********\n"); + } +} + +void fn_1_C40(Process *process) +{ + s32 var_r31; + + lbl_1_bss_68 = 0; + omMakeGroupEx(process, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + omAddObjEx(process, 5, 0xA, 0x32, 0, fn_1_FD0); + } +} + +void fn_1_CC4(void) +{ + s32 var_r31; + omObjData **var_r30; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + if (var_r30 != NULL) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_2040(var_r30[var_r31]); + } + } +} + +s32 fn_1_D2C(void) +{ + s32 sp8[4]; + + s32 var_r31; + M456DllMainWork *var_r30; + s32 var_r29; + u32 var_r28; + omObjData **var_r27; + + var_r29 = 0; + var_r28 = 0; + var_r27 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = var_r27[var_r31]->data; + if ((var_r30->unk_30 != 0) && (var_r30->unk_30 < 5)) { + var_r30->unk_30 = 5; + } + if (var_r30->unk_30 > var_r28) { + var_r28 = var_r30->unk_30; + var_r29 = 0; + sp8[var_r29++] = var_r31; + } + else if (var_r30->unk_30 == var_r28) { + sp8[var_r29++] = var_r31; + } + } + if (var_r28 == 0) { + lbl_1_bss_70[var_r31] = -1; + return 0; + } + lbl_1_bss_14 = (var_r28 * REFRESH_RATE) / 5; + for (var_r31 = 0; var_r31 < var_r29; var_r31++) { + if (GWPlayerCfg[sp8[var_r31]].iscom == 0) { + break; + } + } + if (var_r31 < var_r29) { + if (lbl_1_bss_14 > lbl_1_bss_5C) { + lbl_1_bss_58 = lbl_1_bss_14; + } + if (lbl_1_bss_14 >= 7.5f * REFRESH_RATE) { + GWGameStat.present[0x33] = 1; + } + } + for (var_r31 = 0; var_r31 < var_r29; var_r31++) { + lbl_1_bss_70[var_r31] = sp8[var_r31]; + } + return var_r29; +} + +s32 fn_1_F4C(void) +{ + s32 var_r31; + omObjData **var_r30; + M456DllMainWork *var_r29; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = var_r30[var_r31]->data; + if (var_r29->unk_00_field2 == 0) { + return 0; + } + } + return 1; +} + +M456DllDataE4Struct lbl_1_data_E4[0xA] = { + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x1C), 1 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x24), 1 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x2C), 1 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x34), 1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2A), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), 0 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x3C), 1 }, +}; +Vec lbl_1_data_134[4] = { + { -300.0f, 0.0f, 0.0f }, + { -100.0f, 0.0f, 0.0f }, + { 100.0f, 0.0f, 0.0f }, + { 300.0f, 0.0f, 0.0f }, +}; +float lbl_1_data_164[8] = { -50.0f, -50.0f, -50.0f, -50.0f, -50.0f, -50.0f, -50.0f, -50.0f }; +u16 lbl_1_data_184[2] = { 0x40, 0x20 }; + +void fn_1_FD0(omObjData *object) +{ + M456DllMainWork *var_r31; + u32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M456DllMainWork), MEMORY_DEFAULT_NUM); + object->data = var_r31; + memset(var_r31, 0, sizeof(M456DllMainWork)); + var_r31->unk_02 = lbl_1_bss_68++; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_02].pad_idx; + var_r27 = GWGameStat.rumble; + var_r31->unk_10 = var_r27; + var_r28 = GWPlayerCfg[var_r31->unk_02].character; + var_r31->unk_14 = var_r28; + var_r31->unk_16 = GWPlayerCfg[var_r31->unk_02].diff; + var_r31->unk_18 = GWPlayerCfg[var_r31->unk_02].group; + var_r31->unk_0C = -1; + object->model[0] = CharModelCreate(var_r28, 8); + Hu3DModelShadowSet(object->model[0]); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelCameraSet(object->model[0], 1); + var_r31->unk_20 = 0; + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + if (lbl_1_data_E4[var_r29].unk_04 == 0) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_14, lbl_1_data_E4[var_r29].unk_00); + } + else { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_14, var_r31->unk_14 + lbl_1_data_E4[var_r29].unk_00); + } + } + Hu3DMotionSet(object->model[0], object->motion[var_r31->unk_20]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + CharModelVoiceEnableSet(var_r31->unk_14, object->motion[5], 0); + CharModelVoiceEnableSet(var_r31->unk_14, object->motion[6], 0); + var_r31->unk_2E = REFRESH_RATE; + object->trans.x = lbl_1_data_134[var_r31->unk_02].x; + object->trans.y = lbl_1_data_134[var_r31->unk_02].y; + object->trans.z = lbl_1_data_134[var_r31->unk_02].z; + object->rot.y = 0.0f; + CharModelDataClose(var_r31->unk_14); + object->func = fn_1_1304; +} + +#if VERSION_PAL +#define fn_1_1288_COND (((var_r31->unk_16 + 4) * 60) / 50.0f) +#else +#define fn_1_1288_COND (var_r31->unk_16 + 4) +#endif + +void fn_1_1288(omObjData *object) +{ + M456DllMainWork *var_r31 = object->data; + + if ((frand() & 0x3F) < fn_1_1288_COND) { + if (var_r31->unk_0C <= 0) { + var_r31->unk_0A |= 0x40; + return; + } + var_r31->unk_0A |= 0x20; + } +} + +void fn_1_1304(omObjData *var_r30) +{ + Vec sp14; + Vec sp8; + float var_f31; + + M456DllMainWork *var_r31; + s32 var_r29; + u32 var_r28; + void *var_r27; + s32 var_r26; + omObjData **var_r25; + s32 var_r24; + + var_r31 = var_r30->data; + var_r29 = var_r31->unk_20; + var_r28 = var_r31->unk_24; + if (var_r31->unk_00_field0 == 0) { + var_r30->trans.y = fn_1_63AC(); + } + if (fn_1_3B0() < 3) { + return; + } + switch (var_r31->unk_1A) { + case 0: + if (fn_1_3B0() == 5) { + var_r31->unk_00_field2 = 1; + var_r31->unk_1A = 6; + return; + } + if (fn_1_3B0() == 4) { + if (var_r31->unk_30 != 0) { + var_r31->unk_1A = 1; + var_r31->unk_28 = REFRESH_RATE; + } + else { + var_r31->unk_1A = 6; + var_r31->unk_00_field2 = 1; + } + return; + } + if (GWPlayerCfg[var_r31->unk_02].iscom == 0) { + var_r31->unk_06 = HuPadStkX[var_r31->unk_04]; + var_r31->unk_07 = HuPadStkY[var_r31->unk_04]; + var_r31->unk_08 = HuPadBtn[var_r31->unk_04]; + var_r31->unk_0A = HuPadBtnDown[var_r31->unk_04] & 0xFFFF9FFF; + } + else { + var_r31->unk_08 = var_r31->unk_0A = 0; + var_r31->unk_06 = var_r31->unk_07 = 0; + fn_1_1288(var_r30); + } + if (var_r31->unk_2C != 0) { + if (--var_r31->unk_2C == 0) { + var_r29 = 0; + var_r28 = 0x40000001; + } + } + if ((var_r31->unk_0A & 0x60) != 0) { + if (var_r31->unk_0C < 0) { + var_r31->unk_0C = (var_r31->unk_0A & 0x40) ? 0 : 1; + } + if (((var_r31->unk_0A & lbl_1_data_184[var_r31->unk_0C]) != 0) && ((var_r31->unk_0A & ~lbl_1_data_184[var_r31->unk_0C]) == 0)) { + var_r31->unk_30++; + var_r31->unk_2C = var_r31->unk_2E; + var_r29 = 1; + var_r28 = 0x40000001; + var_r31->unk_0C ^= 1; + } + } + break; + case 1: + if (--var_r31->unk_28 == 0) { + var_r31->unk_00_field0 = 1; + var_r31->unk_1A = 2; + var_r31->unk_28 = var_r31->unk_2A = REFRESH_RATE; + } + var_r29 = 2; + var_r28 = 0; + break; + case 2: + var_r29 = 3; + var_r28 = 0; + if (var_r31->unk_28 < (var_r31->unk_2A - 0xF)) { + var_f31 = (float)var_r31->unk_28 / (var_r31->unk_2A - 0xF); + var_r30->trans.y = -300.0 * cosd((270.0f * var_f31)); + var_r30->trans.z = 400.0f + (-400.0f * var_f31); + if ((var_r31->unk_00_field1 == 0) && (var_f31 < 0.35f)) { + var_r31->unk_00_field1 = 1; + fn_1_67E0(&var_r30->trans, -1.0f); + fn_1_61C8(&var_r30->trans, -1.0f, -1.0f, -1); + fn_1_7F78(); + HuAudFXPlay(0x7D2); + } + } + if (--var_r31->unk_28 == 0) { + var_r30->trans.y = -300.0f; + var_r30->trans.z = 400.0f; + var_r31->unk_1A = 3; + var_r31->unk_28 = (var_r31->unk_30 * REFRESH_RATE) / 5; + for (var_r26 = 0; var_r26 < lbl_1_bss_64; var_r26++) { + if (var_r31->unk_02 == lbl_1_bss_70[var_r26]) { + break; + } + } + if (var_r26 < lbl_1_bss_64) { + var_r31->unk_00_field3 = 1; + var_r31->unk_28 -= VERSION_PAL ? 16.5f : 19.800001f; + } + else { + var_r31->unk_28 -= 0.8f * REFRESH_RATE; + } + var_r31->unk_2A = var_r31->unk_28; + } + break; + case 3: + var_r29 = 5; + var_r28 = 0x40000001; + if (var_r31->unk_28 < 1.0f * REFRESH_RATE) { + if ((frand() & 3) == 0) { + sp14.x = var_r30->trans.x; + sp14.y = 100.0f + var_r30->trans.y; + sp14.z = var_r30->trans.z; + fn_1_74F8(&sp14, -1.0f); + } + } + else if ((frand() & 0xF) == 0) { + sp14.x = var_r30->trans.x; + sp14.y = 100.0f + var_r30->trans.y; + sp14.z = var_r30->trans.z; + fn_1_74F8(&sp14, -1.0f); + } + if (--var_r31->unk_28 == 0) { + var_r31->unk_00_field1 = 0; + if (var_r31->unk_00_field3 == 0) { + var_r31->unk_1A = 4; + var_r31->unk_28 = var_r31->unk_2A = REFRESH_RATE / 1.25; + } + else { + var_r31->unk_1A = 5; + var_r31->unk_28 = var_r31->unk_2A = REFRESH_RATE; + } + } + break; + case 4: + var_r29 = 4; + var_r28 = 0x40000001; + var_f31 = (float)var_r31->unk_28 / var_r31->unk_2A; + var_r30->trans.y = -300.0 * sind((90.0f * var_f31)); + if ((frand() & 3) == 0) { + fn_1_74F8(&var_r30->trans, -1.0f); + } + if ((var_r31->unk_00_field1 == 0) && (var_f31 < 0.2f)) { + var_r31->unk_00_field1 = 1; + fn_1_67E0(&var_r30->trans, -1.0f); + fn_1_61C8(&var_r30->trans, -1.0f, -1.0f, -1); + HuAudFXPlay(0x7D3); + } + if (--var_r31->unk_28 == 0) { + var_r31->unk_00_field2 = 1; + var_r31->unk_1A = 6; + var_r30->trans.y = lbl_1_data_164[var_r31->unk_14]; + } + break; + case 5: + var_r29 = 6; + var_r28 = 0; + var_f31 = (float)var_r31->unk_28 / var_r31->unk_2A; + var_r30->trans.y = -300.0 * -sind((270.0f * var_f31)); + if ((var_r31->unk_00_field1 == 0) && (var_f31 < 0.7f)) { + var_r31->unk_00_field1 = 1; + fn_1_67E0(&var_r30->trans, 5.0f); + fn_1_61C8(&var_r30->trans, -1.0f, -1.0f, -1); + HuAudFXPlay(0x7D3); + HuAudCharVoicePlay(var_r31->unk_14, 0x125); + } + if (--var_r31->unk_28 == 0) { + var_r31->unk_00_field2 = 1; + var_r31->unk_1A = 6; + var_r30->trans.y = lbl_1_data_164[var_r31->unk_14]; + fn_1_67E0(&var_r30->trans, -1.0f); + fn_1_61C8(&var_r30->trans, -1.0f, -1.0f, -1); + } + break; + case 6: + if (var_r31->unk_00_field0 == 0) { + var_r29 = 0; + } + else { + var_r29 = 5; + } + var_r28 = 0x40000001; + if ((fn_1_3B0() == 5) && (var_r31->unk_00_field3 == 0) && (lbl_1_bss_64 == 1)) { + var_r25 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + VECSubtract(&var_r25[*lbl_1_bss_70]->trans, &var_r30->trans, &sp8); + var_r30->rot.y = fn_1_2090(var_r30->rot.y, atan2d(sp8.x, sp8.z), 0.1f); + } + if (fn_1_3B0() == 0xB) { + var_r31->unk_1A = 7; + if (var_r31->unk_00_field3 != 0) { + Hu3DMotionOverlaySet(var_r30->model[0], var_r30->motion[9]); + HuAudCharVoicePlay(var_r31->unk_14, 0x124); + } + } + break; + case 7: + if (var_r31->unk_00_field3 != 0) { + var_r29 = 5; + var_r28 = 0x40000001; + if (73.0f <= Hu3DMotionOverlayTimeGet(var_r30->model[0])) { + Hu3DMotionOverlayTimeSet(var_r30->model[0], 35.0f); + Hu3DModelAttrReset(var_r30->model[0], HU3D_MOTATTR_OVL_PAUSE); + } + } + else if (var_r31->unk_00_field0 == 0) { + var_r29 = 8; + var_r28 = 0; + } + break; + } + if ((var_r31->unk_00_field0 != 0) && (var_r31->unk_1A >= 6) && (var_r31->unk_1A <= 7) && ((frand() & 0x3F) == 0)) { + fn_1_61C8(&var_r30->trans, 0.3f, -1.0f, -1); + } + if ((var_r29 != var_r31->unk_20) || (var_r28 != var_r31->unk_24)) { + var_r31->unk_20 = var_r29; + var_r31->unk_24 = var_r28; + CharModelMotionShiftSet(var_r31->unk_14, var_r30->motion[var_r31->unk_20], 0.0f, 8.0f, var_r28); + } +} + +void fn_1_2040(omObjData *object) +{ + M456DllMainWork *sp8 = object->data; + if (object->data != NULL) { + HuMemDirectFree(object->data); + object->data = NULL; + } +} + +float fn_1_2090(float var_f29, float sp8, float spC) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(sp8 - var_f29, 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f30 = fmod(var_f29 + (spC * var_f31), 360.0); + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_2194(Process *process) +{ + fn_1_21F8(0, 0, 0.0f); + lbl_1_bss_8C = omAddObjEx(process, 0xA, 0, 0, -1, fn_1_2448); +} + +void fn_1_21F8(s32 arg0, s32 arg1, float arg8) +{ + CZoom = lbl_1_data_0[arg0].unk_00 + (arg8 * (lbl_1_data_0[arg1].unk_00 - lbl_1_data_0[arg0].unk_00)); + Center.x = lbl_1_data_0[arg0].unk_04 + (arg8 * (lbl_1_data_0[arg1].unk_04 - lbl_1_data_0[arg0].unk_04)); + Center.y = lbl_1_data_0[arg0].unk_08 + (arg8 * (lbl_1_data_0[arg1].unk_08 - lbl_1_data_0[arg0].unk_08)); + Center.z = lbl_1_data_0[arg0].unk_0C + (arg8 * (lbl_1_data_0[arg1].unk_0C - lbl_1_data_0[arg0].unk_0C)); + CRot.x = lbl_1_data_0[arg0].unk_10 + (arg8 * (lbl_1_data_0[arg1].unk_10 - lbl_1_data_0[arg0].unk_10)); + CRot.y = lbl_1_data_0[arg0].unk_14 + (arg8 * (lbl_1_data_0[arg1].unk_14 - lbl_1_data_0[arg0].unk_14)); + CRot.z = lbl_1_data_0[arg0].unk_18 + (arg8 * (lbl_1_data_0[arg1].unk_18 - lbl_1_data_0[arg0].unk_18)); +} + +float lbl_1_data_1A8[2] = { 0.0f, 0.0f }; + +void fn_1_2448(omObjData *object) +{ + CameraData *sp8 = Hu3DCamera; + + switch (fn_1_3B0()) { + case 1: + fn_1_21F8(0, 1, sind((90.0f * lbl_1_data_1A8[0]))); + if (lbl_1_data_1A8[0] < 1.0f) { + lbl_1_data_1A8[0] += 1.0f / REFRESH_RATE; + if (lbl_1_data_1A8[0] > 1.0f) { + lbl_1_data_1A8[0] = 1.0f; + break; + } + } + break; + case 4: + case 5: + case 6: + case 7: + break; + case 8: + fn_1_21F8(1, 1, 0.0f); + break; + case 9: + break; + } +} + +M456DllData1B0Struct lbl_1_data_1B0[0x10] = { + { DATA_MAKE_NUM(DATADIR_M456, 0x44), 0x10E }, + { 0x610037, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610030, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, + { 0x610031, 0xFA }, +}; + +Vec2f lbl_1_data_230[0x17] = { + { 0.0f, 0.0f }, + { -52.0f, -9.0f }, + { 53.0f, -8.0f }, + { 35.0f, -8.0f }, + { 9.0f, -8.0f }, + { -9.0f, -8.0f }, + { -31.0f, -8.0f }, + { 23.0f, -8.0f }, + { -17.0f, -8.0f }, + { 53.0f, 8.0f }, + { 35.0f, 8.0f }, + { 9.0f, 8.0f }, + { -9.0f, 8.0f }, + { -31.0f, 8.0f }, + { 23.0f, 8.0f }, + { -17.0f, 8.0f }, + { 355.0f, 0.0f }, + { 0.0f, 0.0f }, + { 275.0f, 128.0f }, + { 950.0f, 6.0f }, + { 0.0f, 0.0f }, + { 0.0f, 190.0f }, + { 0.0f, 550.0f }, +}; + +void fn_1_2918(Process *sp8) +{ + M456DllBss18Struct *var_r31; + s32 var_r30; + omObjData *var_r29; + + var_r29 = omAddObjEx(sp8, 0x7FD9, 0, 0, -1, fn_1_2AC4); + var_r31 = &lbl_1_bss_18; + var_r29->data = var_r31; + memset(var_r31, 0, sizeof(M456DllBss18Struct)); + var_r31->unk_14 = 60 * REFRESH_RATE; + var_r31->unk_0C = 320.0f; + var_r31->unk_10 = 64.0f; + var_r31->unk_1C = 1.0f; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + var_r31->unk_20[var_r30] = -1; + if (lbl_1_data_1B0[var_r30].unk_00 != 0) { + var_r31->unk_20[var_r30] = espEntry(lbl_1_data_1B0[var_r30].unk_00, lbl_1_data_1B0[var_r30].unk_04, 0); + espAttrSet(var_r31->unk_20[var_r30], HUSPR_ATTR_LINEAR); + espDispOff(var_r31->unk_20[var_r30]); + } + } + espColorSet(var_r31->unk_20[0], 0, 0, 0); + espTPLvlSet(var_r31->unk_20[0], 0.699999988079071); + espBankSet(var_r31->unk_20[7], 0xB); + espBankSet(var_r31->unk_20[8], 0xA); + espBankSet(var_r31->unk_20[14], 0xB); + espBankSet(var_r31->unk_20[15], 0xA); +} + +void fn_1_2AC4(omObjData *var_r26) +{ + u32 sp8[3]; + + M456DllBss18Struct *var_r31; + s32 var_r30; + u32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = var_r26->data; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + if (var_r31->unk_20[var_r30] >= 0) { + if (var_r31->unk_00 == 0) { + espDispOff(var_r31->unk_20[var_r30]); + } + else { + espDispOn(var_r31->unk_20[var_r30]); + espPosSet( + var_r31->unk_20[var_r30], 0.9f * (var_r31->unk_0C + lbl_1_data_230[var_r30].x), var_r31->unk_10 + lbl_1_data_230[var_r30].y); + } + } + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r30 != 0) { + var_r29 = var_r31->unk_18; + var_r27 = 9; + } + else { + var_r29 = var_r31->unk_14; + var_r27 = 2; + } + sp8[0] = var_r29 % REFRESH_RATE; + var_r29 = (var_r29 - sp8[0]) / REFRESH_RATE; +#if VERSION_PAL + sp8[0] = 100.0f * (sp8[0] / (float)REFRESH_RATE); +#else + sp8[0] = 100.0f * (1.0f / REFRESH_RATE * sp8[0]); +#endif + sp8[1] = var_r29 % 60; + var_r29 = (var_r29 - sp8[1]) / 60; + sp8[2] = var_r29; + for (var_r28 = 0; var_r28 < 3; var_r28++) { + espBankSet(var_r31->unk_20[var_r27++], sp8[var_r28] % 10); + if (var_r28 < 2) { + espBankSet(var_r31->unk_20[var_r27++], sp8[var_r28] / 10); + } + } + } + if (var_r31->unk_04 != 0) { + if (var_r31->unk_08 == 0) { + if ((var_r31->unk_1C += 0.02f) >= 1.2f) { + var_r31->unk_1C = 1.2f; + var_r31->unk_08 = 1; + } + } + else { + if ((var_r31->unk_1C -= 0.04f) <= 1.0f) { + var_r31->unk_1C = 1.0f; + var_r31->unk_08 = 0; + } + } + for (var_r30 = 1; var_r30 < 9; var_r30++) { + espScaleSet(var_r31->unk_20[var_r30], var_r31->unk_1C, var_r31->unk_1C); + } + } +} diff --git a/src/REL/m456Dll/stage.c b/src/REL/m456Dll/stage.c new file mode 100644 index 00000000..8e13a6cf --- /dev/null +++ b/src/REL/m456Dll/stage.c @@ -0,0 +1,1713 @@ +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" + +#include "game/hsfmotion.h" +#include "game/pad.h" + +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "REL/m456Dll.h" + +#include "ext_math.h" +#include "math.h" +#include "version.h" + +#if !VERSION_PAL +#include "game/frand.h" +#endif + +Process *lbl_1_bss_B8; +omObjData *lbl_1_bss_B4; +omObjData *lbl_1_bss_B0; +omObjData *lbl_1_bss_AC; +omObjData *lbl_1_bss_A8; +omObjData *lbl_1_bss_A4; +omObjData *lbl_1_bss_A0; +Vec lbl_1_bss_94; + +typedef struct struct_bss90 { + AnimData *unk0[4]; + s32 unk10[4]; + Vec unk20; +} StructBss90; + +StructBss90 *lbl_1_bss_90; + +Vec lbl_1_data_2E8[4] = { + { -460, 0, 150 }, + { 460, 0, 150 }, + { -460, 0, -150 }, + { 460, 0, -150 }, +}; + +GXColor lbl_1_data_318 = { 255, 255, 255, 255 }; + +typedef struct struct_data31C { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + BOOL unk10; +} StructData31C; + +StructData31C lbl_1_data_31C[4] = { + { 400, 400, 400, 400, FALSE }, + { 640, 480, 320, 240, TRUE }, + { 640, 480, 640, 480, FALSE }, + { 640, 480, 320, 240, TRUE }, +}; + +void fn_1_89AC(void); + +void fn_1_6444(omObjData *object); +void fn_1_6DB0(omObjData *object); +void fn_1_70F0(omObjData *object); +void fn_1_7778(omObjData *object); +void fn_1_841C(omObjData *object); + +omObjData *fn_1_2FAC(void); + +void fn_1_2DF4(Process *objman) +{ + lbl_1_bss_B8 = objman; + fn_1_89AC(); + lbl_1_bss_B0 = omAddObjEx(lbl_1_bss_B8, 50, 0, 0, -1, fn_1_6444); + lbl_1_bss_AC = omAddObjEx(lbl_1_bss_B8, 50, 8, 0, -1, fn_1_6DB0); + lbl_1_bss_A8 = omAddObjEx(lbl_1_bss_B8, 50, 1, 0, -1, fn_1_70F0); + lbl_1_bss_A4 = omAddObjEx(lbl_1_bss_B8, 50, 0, 0, -1, fn_1_7778); + lbl_1_bss_A0 = omAddObjEx(lbl_1_bss_B8, 50, 0, 0, -1, fn_1_841C); + lbl_1_bss_B4 = fn_1_2FAC(); +} + +void fn_1_3C34(omObjData *object); + +void fn_1_6790(omObjData *object); +void fn_1_6F60(omObjData *object); +void fn_1_74A4(omObjData *object); +void fn_1_7F74(omObjData *object); + +void fn_1_8C68(void); + +void fn_1_2F3C(void) +{ + fn_1_3C34(lbl_1_bss_B4); + fn_1_8C68(); + fn_1_6790(lbl_1_bss_B0); + fn_1_6F60(lbl_1_bss_AC); + fn_1_74A4(lbl_1_bss_A8); + fn_1_7F74(lbl_1_bss_A4); +} + +typedef struct work_2FAC_unk4 { + void *unk0; + u32 unk4; + BOOL unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; +} Work2FACUnk4; + +typedef struct work_2FAC_unk74 { + Vec unk0; + Vec unkC; + float unk18; + u16 unk1C; + u16 unk1E; +} Work2FACUnk74; + +typedef struct work_2FAC { + s32 unk0; + Work2FACUnk4 unk4[4]; + Work2FACUnk74 unk74[64]; + float unk874[26][2]; + float unk944[26][2]; + void *unkA14; + u32 unkA18; + AnimData *unkA1C[9]; + float unkA40; + float unkA44; + u32 unkA48; + u32 unkA4C; + u32 unkA50; + float unkA54; + float unkA58; +} Work2FAC; + +void fn_1_390C(omObjData *object); + +void fn_1_3CB0(ModelData *model, Mtx matrix); +void fn_1_44DC(ModelData *model, Mtx matrix); +void fn_1_4994(ModelData *model, Mtx matrix); + +omObjData *fn_1_2FAC(void) +{ + omObjData *object = omAddObjEx(lbl_1_bss_B8, 127, 15, 0, -1, fn_1_390C); + Work2FAC *work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FAC), MEMORY_DEFAULT_NUM); + Work2FAC *work2 = work; + Work2FACUnk74 *workUnk74 = &work->unk74[0]; + Work2FACUnk4 *workUnk4; + s32 id; + ModelData *modelP; + s32 i; + + work->unkA40 = 0; + work->unkA44 = 0; + work->unkA48 = 0; + work->unkA4C = 0; + work->unkA50 = 0; + work->unkA54 = 0; + work->unkA58 = 0; + + object->model[0] = id = Hu3DHookFuncCreate(fn_1_4994); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 5); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work->unkA1C[4] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 21), MEMORY_DEFAULT_NUM)); + work->unkA1C[5] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 22), MEMORY_DEFAULT_NUM)); + work->unkA1C[6] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 23), MEMORY_DEFAULT_NUM)); + work->unkA1C[7] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 24), MEMORY_DEFAULT_NUM)); + work->unkA1C[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 17), MEMORY_DEFAULT_NUM)); + work->unkA1C[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 18), MEMORY_DEFAULT_NUM)); + work->unkA1C[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 19), MEMORY_DEFAULT_NUM)); + work->unkA1C[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 20), MEMORY_DEFAULT_NUM)); + work->unkA1C[8] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 25), MEMORY_DEFAULT_NUM)); + object->model[1] = id = Hu3DHookFuncCreate(fn_1_3CB0); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 0); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work2->unkA18 = 16384; + work2->unkA14 = HuMemDirectMallocNum(HEAP_SYSTEM, work2->unkA18, MEMORY_DEFAULT_NUM); + DCFlushRange(work2->unkA14, 16384); + GXBeginDisplayList(work2->unkA14, work2->unkA18); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(-0.5f, -0.5f); + GXTexCoord2f32(0, 0); + GXPosition2f32(0.5f, -0.5f); + GXTexCoord2f32(1, 0); + GXPosition2f32(0.5f, 0.5f); + GXTexCoord2f32(1, 1); + GXPosition2f32(-0.5f, 0.5f); + GXTexCoord2f32(0, 1); + work2->unkA18 = GXEndDisplayList(); + for (i = 0; i < 26; i++) { + work2->unk874[i][0] = 0; + work2->unk874[i][1] = 0; + work2->unk944[i][0] = 0; + work2->unk944[i][1] = 0; + } + + object->model[3] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 5)); + Hu3DModelPosSet(id, 0, 0, -5000); + Hu3DModelScaleSet(id, 2, 2, 2); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + id = Hu3DTexScrollCreate(object->model[3], "S3TCsk"); + Hu3DTexScrollPosMoveSet(id, VERSION_PAL ? -0.00010999999f : -0.00009166667f, 0, 0); + id = Hu3DTexScrollCreate(object->model[3], "pa_sk3"); + Hu3DTexScrollPosMoveSet(id, VERSION_PAL ? -0.00025f : -0.00020833335f, 0, 0); + + object->model[4] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 6)); + Hu3DModelPosSet(id, 0, 0, -3000); + Hu3DModelScaleSet(id, 1.2f, 1.2f, 1.2f); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + + object->model[8] = id = Hu3DHookFuncCreate(fn_1_44DC); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 2); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + + object->model[10] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 0)); + Hu3DModelPosSet(id, 0, 0, 0); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 3); + Hu3DModelShadowMapSet(object->model[10]); + for (i = 0; i < 4; i++) { + + object->model[i + 11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 1)); + Hu3DModelCameraSet(object->model[i + 11], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i + 11], 3); + Hu3DModelPosSet(object->model[i + 11], lbl_1_data_2E8[i].x, lbl_1_data_2E8[i].y, lbl_1_data_2E8[i].z); + Hu3DModelAttrSet(object->model[i + 11], HU3D_MOTATTR_SHAPE_LOOP); + Hu3DMotionShapeTimeSet(object->model[i + 11], (0.25 * i) * Hu3DMotionShapeMaxTimeGet(object->model[i + 11])); + } + modelP = &Hu3DData[object->model[0]]; + workUnk4 = &work2->unk4[0]; + for (i = 0; i < 4; i++, workUnk4++) { + workUnk4->unkC = lbl_1_data_31C[i].unk0; + workUnk4->unk10 = lbl_1_data_31C[i].unk4; + workUnk4->unk14 = lbl_1_data_31C[i].unk8; + workUnk4->unk18 = lbl_1_data_31C[i].unkC; + workUnk4->unk8 = lbl_1_data_31C[i].unk10; + workUnk4->unk4 = GXGetTexBufferSize(workUnk4->unk14, workUnk4->unk18, GX_TF_RGB565, GX_FALSE, GX_FALSE); + workUnk4->unk0 = HuMemDirectMallocNum(HEAP_DATA, workUnk4->unk4, modelP->unk_48); + memset(workUnk4->unk0, 0, workUnk4->unk4); + DCFlushRange(workUnk4->unk0, workUnk4->unk4); + } + for (i = 0; i < 64; i++, workUnk74++) { + workUnk74->unk0.x = workUnk74->unk0.y = workUnk74->unk0.z = 0; + workUnk74->unkC.x = 0; + workUnk74->unkC.y = 0; + workUnk74->unkC.z = 1; + workUnk74->unk18 = 1.0f / REFRESH_RATE; + workUnk74->unk1C = REFRESH_RATE; + workUnk74->unk1E = 0; + } + return object; +} + +void fn_1_97FC(float arg0); + +void fn_1_390C(omObjData *object) +{ + Work2FAC *work = object->data; + Work2FAC *work2 = work; + s32 i; + if ((work->unkA50 = work->unkA50 + (0.007874016f * ((s32)frand() & 0x7F) * 3.0f)) > 360) { + work->unkA50 -= 360; + } + work->unkA44 = (25 + work->unkA40) + (5.0 * sind(work->unkA50)); + Hu3DModelPosSet(object->model[10], 0, work->unkA44, 0); + for (i = 0; i < 4; i++) { + Hu3DModelPosSet(object->model[i + 11], lbl_1_data_2E8[i].x, work->unkA44 + lbl_1_data_2E8[i].y, lbl_1_data_2E8[i].z); + } + work->unkA54 += VERSION_PAL ? 0.0012f : 0.001f; // 0.06f / REFRESH_RATE + work->unkA58 += VERSION_PAL ? 0.0012f : 0.001f; + work->unkA48++; + work->unkA4C++; + if (work->unkA4C >= (float)REFRESH_RATE && work->unkA4C <= (VERSION_PAL ? 67.5f : 81.0f)) { + float time = 1 - ((work->unkA4C - (float)REFRESH_RATE) / (VERSION_PAL ? 17.5f : 21.0f)); + if (time < 0.0f) { + time = 0.0f; + } + fn_1_97FC(time); + } +} + +void fn_1_3C34(omObjData *object) +{ + Work2FAC *work = object->data; + HuSprAnimKill(work->unkA1C[0]); + HuSprAnimKill(work->unkA1C[1]); + HuSprAnimKill(work->unkA1C[2]); + HuSprAnimKill(work->unkA1C[3]); + HuSprAnimKill(work->unkA1C[6]); + HuSprAnimKill(work->unkA1C[7]); + HuSprAnimKill(work->unkA1C[4]); + HuSprAnimKill(work->unkA1C[5]); + HuSprAnimKill(work->unkA1C[8]); +} + +GXColor lbl_1_data_37A = { 255, 255, 255, 32 }; +GXColor lbl_1_data_37E = { 255, 255, 255, 10 }; +GXColor lbl_1_data_382 = { 0, 126, 126, 255 }; +Vec lbl_1_data_388[4] = { -1000, 50, 1000, -1000, 50, -1000, 1000, 50, -1000, 1000, 50, 1000 }; + +Vec lbl_1_data_3B8[26] = { -1500, 0, 1000, -1400, 0, 1000, 0, 0, 1000, 1400, 0, 1000, 1500, 0, 1000, -1500, 0, -500, -1400, 0, -500, 0, 0, -500, 1400, + 0, -500, 1500, 0, -500, -1500, 0, -2000, -1400, 0, -2000, 0, 0, -2000, 1400, 0, -2000, 1500, 0, -2000, -1500, 0, -5000, -1400, 0, -5000, 0, 0, + -5000, 1400, 0, -5000, 1500, 0, -5000, -2000, 0, -500, -2500, 0, -2000, -3000, 0, -5000, 2000, 0, -500, 2500, 0, -2000, 3000, 0, -5000 }; + +GXColor lbl_1_data_4F0[26] = { { 96, 128, 255, 255 }, { 128, 160, 255, 32 }, { 128, 160, 255, 32 }, { 128, 160, 255, 32 }, { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, { 96, 128, 255, 32 }, { 128, 160, 255, 32 }, { 96, 128, 255, 32 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, { 96, 128, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 } }; + +float lbl_1_data_558[26][2] + = { 0, 1, 0.033333335, 1, 0.5, 1, 0.96666664, 1, 1, 1, 0, 0.5, 0.033333335, 0.5, 0.5, 0.5, 0.96666664, 0.5, 1, 0.5, 0, 0, 0.033333335, 0, 0.5, 0, + 0.96666664, 0, 1, 0, 0, 0, 0.033333335, 0, 0.5, 0, 0.96666664, 0, 1, 0, -0.15, 0.5, -0.33, 0, -0.49, 0, 1.15, 0.5, 1.33, 0, 1.49, 0 }; + +float lbl_1_data_628[26][2] = { 0, 30, 0.5, 30, 7.5, 30, 14.5, 30, 15, 30, 0, 15, 0.5, 15, 7.5, 15, 14.5, 15, 15, 15, 0, 7.5, 0.5, 7.5, 7.5, 7.5, + 14.5, 7.5, 15, 7.5, 0, 0, 0.5, 0, 7.5, 0, 14.5, 0, 15, 0, -2.25, 15, -4.9500003, 7.5, -7.3500004, 0, 17.25, 15, 19.95, 7.5, 22.35, 0 }; + +float lbl_1_data_6F8[2][3] = { 0, 0, 0.5, 0, 0.5, 0 }; + +GXColor lbl_1_data_710 = { 80, 80, 80, 80 }; + +Vec lbl_1_data_714[9] + = { -1500, 0, -5000, 0, 0, -5000, 1500, 0, -5000, -1500, 0, -3000, 0, 0, -3000, 1500, 0, -3000, -1500, 0, 1000, 0, 0, 1000, 1500, 0, 1000 }; + +GXColor lbl_1_data_780[9] = { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, +}; + +GXColor lbl_1_data_7A4 = { 255, 165, 89, 178 }; +GXColor lbl_1_data_7A8 = { 153, 114, 89, 178 }; +GXColor lbl_1_data_7AC = { 0, 0, 0, 255 }; + +void fn_1_5BB8(Work2FACUnk4 *arg0, s32 arg1); + +void fn_1_3CB0(ModelData *model, Mtx matrix) +{ + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk74 *workUnk74 = &work2->unk74[0]; + Work2FACUnk4 *workUnk4 = &work2->unk4[0]; + s32 i; + Mtx proj; + Mtx modelview; + MTXOrtho(proj, 0, 480, 0, 640, 0, 100); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_382); + GXSetTevColor(GX_TEVREG0, lbl_1_data_37E); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetScissor(0, 0, 400, 400); + HuSprTexLoad(work->unkA1C[4], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(0, 0); + GXTexCoord2f32(work->unkA54, work->unkA58); + GXPosition2u16(400, 0); + GXTexCoord2f32(work->unkA54 + 7, work->unkA58); + GXPosition2u16(400, 400); + GXTexCoord2f32(work->unkA54 + 7, work->unkA58 + 7); + GXPosition2u16(0, 400); + GXTexCoord2f32(work->unkA54, work->unkA58 + 7); + GXEnd(); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + HuSprTexLoad(work->unkA1C[8], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + workUnk74 = &work2->unk74[0]; + for (i = 0; i < 64; i++, workUnk74++) { + float scale; + float accel; + if (workUnk74->unk1E == 0) { + continue; + } + scale = 128 * (workUnk74->unkC.x * (0.2f + cosd(workUnk74->unk1E * workUnk74->unk18 * 90.0f))); + accel = workUnk74->unk1E * workUnk74->unk18; + lbl_1_data_37A.a = workUnk74->unkC.z * sind((accel * accel) * 90.0f) * 255.0; + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_37A); + MTXScale(modelview, 0.5f * scale, 0.5f * scale, 1.0f); + mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); + mtxTransCat(modelview, 400 * (workUnk74->unk0.x + 1500) / 3000, 400 * (workUnk74->unk0.z - -2000) / 3000, 0); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXCallDisplayList(work2->unkA14, work2->unkA18); + if (!omPauseChk()) { + workUnk74->unk1E--; + } + } + workUnk4 = &work2->unk4[0]; + fn_1_5BB8(workUnk4, 1); +} + +void fn_1_54D0(ModelData *model, Mtx matrix); + +void fn_1_44DC(ModelData *model, Mtx matrix) +{ + Work2FAC *work; + Work2FAC *work2; + Work2FACUnk4 *workUnk4; + fn_1_54D0(model, matrix); + work = model->unk_120; + work2 = work; + workUnk4 = &work2->unk4[1]; + fn_1_5BB8(workUnk4, 0); +} + +void fn_1_5C74(Work2FACUnk4 *arg0, float arg1, float arg2, float arg3); + +void fn_1_4544(ModelData *model, Mtx matrix) +{ + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk4 *workUnk4 = &work2->unk4[0]; + + fn_1_5C74(workUnk4, 200, 0, 0.5f); + workUnk4 = &work2->unk4[1]; + fn_1_5C74(workUnk4, 0, 0, 0.5f); + workUnk4 = &work2->unk4[2]; + fn_1_5C74(workUnk4, 0, 150, 0.25f); + workUnk4 = &work2->unk4[3]; + fn_1_5C74(workUnk4, 0, 300, 0.5f); +} + +void fn_1_60C4(s16 arg0, Work2FACUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4); + +void fn_1_464C(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk4 *workUnk4 = &work2->unk4[2]; + float fov; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + s16 lightMask; + s16 i; + + fn_1_5BB8(workUnk4, 0); + GXLoadPosMtxImm(matrix, GX_PNMTX0); + fov = cameraP->fov; + if (fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + lightMask = Hu3DLightSet(model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 4); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_318); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + workUnk4 = &work2->unk4[1]; + fn_1_60C4(0, workUnk4, 0, 0, 0); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetArray(GX_VA_POS, lbl_1_data_388, sizeof(Vec)); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for (i = 0; i < 4; i++) { + GXPosition1x16(i); + } + GXEnd(); + workUnk4 = &work2->unk4[3]; + fn_1_5BB8(workUnk4, 0); + workUnk4 = &work2->unk4[2]; + fn_1_60C4(0, workUnk4, 0, 0, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for (i = 0; i < 4; i++) { + GXPosition1x16(i); + } + GXEnd(); +} + +void fn_1_4994(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk4 *workUnk4 = &work2->unk4[2]; + Mtx invXPose; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + float sp14; + float sp10; + float fov; + s16 i; + fn_1_464C(model, matrix); + sp14 = 1.5f; + sp10 = 0; + GXLoadPosMtxImm(matrix, GX_PNMTX0); + MTXInvXpose(matrix, invXPose); + GXLoadNrmMtxImm(invXPose, GX_PNMTX0); + fov = cameraP->fov; + if (fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY); + GXSetNumTevStages(2); + GXSetNumTexGens(3); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_RASC, GX_CC_RASA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColor(GX_TEVREG0, lbl_1_data_710); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_C0, GX_CC_TEXA, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_318); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + workUnk4 = &work2->unk4[3]; + fn_1_60C4(0, workUnk4, 0, 0, 0); + HuSprTexLoad(work->unkA1C[3], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + workUnk4 = &work2->unk4[0]; + fn_1_60C4(2, workUnk4, 0, 0, 1); + GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_1); + GXSetIndTexMtx(GX_ITM_1, lbl_1_data_6F8, -1); + for (i = 0; i < 26; i++) { + work2->unk944[i][0] -= 0.007874016f * ((s32)frand() & 0x7F) * 0.005f; + work2->unk944[i][1] += 0.007874016f * ((s32)frand() & 0x7F) * 0.005f; + work2->unk874[i][0] = work2->unk944[i][0] + lbl_1_data_628[i][0]; + work2->unk874[i][1] = work2->unk944[i][1] + lbl_1_data_628[i][1]; + } + DCFlushRange(&work2->unk874[0][0], sizeof(work2->unk874)); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + + GXSetArray(GX_VA_POS, lbl_1_data_3B8, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, lbl_1_data_4F0, sizeof(GXColor)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, lbl_1_data_558, sizeof(float) * 2); + GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX1, &work2->unk874[0][0], sizeof(float) * 2); + GXBegin(GX_QUADS, GX_VTXFMT0, 48); + for (i = 0; i < 12; i++) { + s16 index; + if (i == 4) { + index = 12; + } + else if (i == 9) { + index = 13; + } + else { + index = i; + } + GXPosition1x16(index + 0); + GXColor1x16(index + 0); + GXTexCoord1x16(index + 0); + GXTexCoord1x16(index + 0); + GXPosition1x16(index + 5); + GXColor1x16(index + 5); + GXTexCoord1x16(index + 5); + GXTexCoord1x16(index + 5); + GXPosition1x16(index + 6); + GXColor1x16(index + 6); + GXTexCoord1x16(index + 6); + GXTexCoord1x16(index + 6); + GXPosition1x16(index + 1); + GXColor1x16(index + 1); + GXTexCoord1x16(index + 1); + GXTexCoord1x16(index + 1); + } + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(22); + GXColor1x16(22); + GXTexCoord1x16(22); + GXTexCoord1x16(22); + GXPosition1x16(15); + GXColor1x16(15); + GXTexCoord1x16(15); + GXTexCoord1x16(15); + GXPosition1x16(21); + GXColor1x16(21); + GXTexCoord1x16(21); + GXTexCoord1x16(21); + GXPosition1x16(10); + GXColor1x16(10); + GXTexCoord1x16(10); + GXTexCoord1x16(10); + GXPosition1x16(20); + GXColor1x16(20); + GXTexCoord1x16(20); + GXTexCoord1x16(20); + GXPosition1x16(5); + GXColor1x16(5); + GXTexCoord1x16(5); + GXTexCoord1x16(5); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(19); + GXColor1x16(19); + GXTexCoord1x16(19); + GXTexCoord1x16(19); + GXPosition1x16(25); + GXColor1x16(25); + GXTexCoord1x16(25); + GXTexCoord1x16(25); + GXPosition1x16(14); + GXColor1x16(14); + GXTexCoord1x16(14); + GXTexCoord1x16(14); + GXPosition1x16(24); + GXColor1x16(24); + GXTexCoord1x16(24); + GXTexCoord1x16(24); + GXPosition1x16(9); + GXColor1x16(9); + GXTexCoord1x16(9); + GXTexCoord1x16(9); + GXPosition1x16(23); + GXColor1x16(23); + GXTexCoord1x16(23); + GXTexCoord1x16(23); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXEnd(); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +void fn_1_54D0(ModelData *model, Mtx matrix) +{ + s32 sp10 = 0; + Work2FAC *work = model->unk_120; + float scale = 1.5f; + float x = 0; + Mtx temp; + Mtx final; + MTXTrans(final, x, -300, 0); + GXSetTevColor(GX_TEVREG0, lbl_1_data_7A4); + MTXScale(temp, scale, 1, 1); + MTXConcat(final, temp, final); + MTXConcat(Hu3DCameraMtx, final, final); + GXLoadPosMtxImm(final, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_318); + HuSprTexLoad(work->unkA1C[0], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(work->unkA1C[1], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f * scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48 % 1024) / (512.0f * x), 0, 1.2499999f * (work->unkA48 % 400)); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX0); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f * scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48 % 300) / (150.0f * x), 0, 0); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX1, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX1); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_714, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, lbl_1_data_780, sizeof(GXColor)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(0); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(3); + GXColor1x8(3); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(6); + GXColor1x8(6); + GXPosition1x8(7); + GXColor1x8(7); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(2); + GXColor1x8(2); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(5); + GXColor1x8(5); + GXPosition1x8(7); + GXColor1x8(7); + GXPosition1x8(8); + GXColor1x8(8); + GXEnd(); +} + +void fn_1_5BB8(Work2FACUnk4 *arg0, s32 arg1) +{ + GXSetTexCopySrc(0, 0, arg0->unkC, arg0->unk10); + GXSetTexCopyDst(arg0->unk14, arg0->unk18, GX_TF_RGB565, arg0->unk8); + GXSetCopyClear(lbl_1_data_7AC, GX_MAX_Z24); + GXCopyTex(arg0->unk0, arg1); +} + +void fn_1_5C74(Work2FACUnk4 *fbWork, float x1, float y1, float scale) +{ + float x2 = x1 + (fbWork->unk14 * scale); + float y2 = y1 + (fbWork->unk18 * scale); + Mtx44 proj; + Mtx modelview; + GXTexObj texObj; + GXColor color; + GXInitTexObj(&texObj, fbWork->unk0, fbWork->unk14, fbWork->unk18, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&texObj, GX_TEXMAP0); + MTXOrtho(proj, 0, 480, 0, 640, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + color.a = 255; + GXSetTevColor(GX_TEVREG0, color); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(x1, y1, 0); + GXTexCoord2f32(0, 0); + GXPosition3f32(x2, y1, 0); + GXTexCoord2f32(1, 0); + GXPosition3f32(x2, y2, 0); + GXTexCoord2f32(1, 1); + GXPosition3f32(x1, y2, 0); + GXTexCoord2f32(0, 1); + GXEnd(); +} + +void fn_1_60C4(s16 arg0, Work2FACUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4) +{ + GXTexObj texObj; + GXInitTexObj(&texObj, arg1->unk0, arg1->unk14, arg1->unk18, GX_TF_RGB565, arg2, arg2, FALSE); + if (arg4) { + GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + else { + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&texObj, arg0); +} + +s32 fn_1_61C8(Vec *arg0, float arg1, float arg2, s32 arg3) +{ + Work2FAC *work; + Work2FAC *work2; + Work2FACUnk74 *workUnk74; + s32 i; + if (!lbl_1_bss_B4) { + return -1; + } + work = lbl_1_bss_B4->data; + work2 = work; + workUnk74 = &work->unk74[0]; + for (i = 0; i < 64; i++, workUnk74++) { + if (workUnk74->unk1E == 0) { + break; + } + } + if (i >= 64) { + return -1; + } + workUnk74->unk0 = *arg0; + if (arg1 < 0.0f) { + workUnk74->unkC.x = 1; + } + else { + workUnk74->unkC.x = arg1; + } + if (arg2 < 0.0f) { + workUnk74->unkC.z = 1; + } + else { + workUnk74->unkC.z = arg2; + } + if (arg3 < 0) { + workUnk74->unk1C = REFRESH_RATE; + } + else { + workUnk74->unk1C = arg3; + } + workUnk74->unkC.y = (s32)frand() % 360; + workUnk74->unk1E = workUnk74->unk1C; + workUnk74->unk18 = 1.0f / workUnk74->unk1C; + return i; +} + +float fn_1_63AC(void) +{ + if (!lbl_1_bss_B4) { + return 0; + } + else { + Work2FAC *work = lbl_1_bss_B4->data; + return work->unkA44; + } +} + +float fn_1_63F8(void) +{ + if (!lbl_1_bss_B4) { + return 0; + } + else { + Work2FAC *work = lbl_1_bss_B4->data; + return work->unkA40; + } +} + +typedef struct work6914 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + AnimData *unk10; + Vec unk14; + Vec unk20; + Vec unk2C; +} Work6914; + +void fn_1_659C(omObjData *object); + +void fn_1_6444(omObjData *object) +{ + Work6914 *work; + s32 i; + AnimData *anim; + work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914) * 8, MEMORY_DEFAULT_NUM); + memset(work, 0, sizeof(Work6914) * 8); + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 26), MEMORY_DEFAULT_NUM)); + for (i = 0; i < 8; i++, work++) { + work->unk10 = anim; + work->unk0 = i; + work->unk4 = Hu3DParticleCreate(work->unk10, 32); + Hu3DModelCameraSet(work->unk4, HU3D_CAM0); + Hu3DModelLayerSet(work->unk4, 6); + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_PARTICLE_KILL); + work->unk8 = 0; + work->unkC = 0; + work->unk14.x = work->unk14.y = work->unk14.z = 0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = 1; + } + object->func = fn_1_659C; +} + +void fn_1_659C(omObjData *object) +{ + Work6914 *work = object->data; + s32 i; + for (i = 0; i < 8; i++, work++) { + if (work->unk8 == 0) { + continue; + } + if (work->unkC > 1) { + ModelData *modelP = &Hu3DData[work->unk4]; + ParticleData *particleP = modelP->unk_120; + HsfanimStruct01 *data = particleP->unk_48; + s32 j; + for (j = 0; j < particleP->unk_30; j++, data++) { + if (++data->unk00 > data->unk02) { + s32 alpha = data->unk40.a - 1; + if (alpha < 0) { + data->unk2C = 0; + } + else { + data->unk40.a = alpha; + } + } + data->unk2C *= 0.975; + data->unk34.x += data->unk08.x; + data->unk34.y += data->unk08.y; + data->unk34.z += data->unk08.z; + data->unk08.y -= 0.3103333379576603; + } + } + if (++work->unkC > (1.5f * REFRESH_RATE)) { + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 0; + } + else { + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + } + } +} + +void fn_1_6790(omObjData *object) +{ + Work6914 *work = object->data; + AnimData *anim = work->unk10; + anim->useNum = 0; + HuSprAnimKill(anim); +} + +s32 fn_1_67E0(Vec *arg0, float arg1) +{ + Work6914 *work = lbl_1_bss_B0->data; + s32 i; + ModelData *temp_r27; + ParticleData *temp_r28; + HsfanimStruct01 *temp_r30; + + for (i = 0; i < 8; i++, work++) { + if (work->unk8 == 0) { + break; + } + } + if (i >= 8) { + return -1; + } + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 1; + work->unkC = 0; + temp_r27 = &Hu3DData[work->unk4]; + temp_r28 = temp_r27->unk_120; + temp_r28->unk_2C = 1; + temp_r30 = temp_r28->unk_48; + for (i = 0; i < temp_r28->unk_30; i++, temp_r30++) { + float temp_f30 = ((s32)frand() % 20) + 90; + float temp_f29 = (s32)frand() % 360; + float temp_f26 = sind(temp_f30); + float temp_f28 = cosd(temp_f30); + float temp_f25 = 0.75f + 0.15f * (0.007874016f * ((s32)frand() & 0x7F)); + float temp_f31 = 0.15f; + temp_r30->unk08.x = temp_f31 * (0.65f * (50.0 * (temp_f28 * sind(temp_f29)))); + temp_r30->unk08.z = temp_f31 * (0.65f * (50.0 * (temp_f28 * cosd(temp_f29)))); + temp_r30->unk08.y = temp_f31 * (50 * temp_f26 * temp_f25); + temp_r30->unk00 = 0; + temp_r30->unk02 = ((s32)frand() % 16) + 45; + temp_r30->unk30 = (s32)frand() % 360; + temp_r30->unk2C = 145.0f; + temp_r30->unk34.x = 0.05f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk34.y = 0.65f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk34.z = 0.05f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk40.r = ((s32)frand() % 64) + 192; + temp_r30->unk40.g = ((s32)frand() % 64) + 192; + temp_r30->unk40.b = ((s32)frand() % 64) + 192; + temp_r30->unk40.a = 64; + } + if (arg1 < 0.0f) { + arg1 = 1.0f; + } + work->unk14 = *arg0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = arg1; + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + return i; +} + +void fn_1_6E98(omObjData *object); + +void fn_1_6DB0(omObjData *object) +{ + s32 i; + for (i = 0; i < object->mdlcnt; i++) { + if (i == 0) { + object->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 9)); + } + else { + object->model[i] = Hu3DModelLink(object->model[0]); + } + Hu3DModelCameraSet(object->model[i], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i], 6); + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + object->stat |= 0x100; + object->func = fn_1_6E98; +} + +void fn_1_6E98(omObjData *object) +{ + s32 i; + for (i = 0; i < object->mdlcnt; i++) { + ModelData *modelP = &Hu3DData[object->model[i]]; + if (!(modelP->attr & HU3D_ATTR_DISPOFF)) { + if (Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + } + } +} + +void fn_1_6F60(omObjData *object) { } + +s32 fn_1_6F64(Vec *pos, float scale) +{ + s32 i; + for (i = 0; i < lbl_1_bss_AC->mdlcnt; i++) { + ModelData *modelP = &Hu3DData[lbl_1_bss_AC->model[i]]; + if (modelP->attr & HU3D_ATTR_DISPOFF) { + break; + } + } + if (i >= lbl_1_bss_AC->mdlcnt) { + return -1; + } + Hu3DMotionTimeSet(lbl_1_bss_AC->model[i], 0); + Hu3DMotionSpeedSet(lbl_1_bss_AC->model[i], 1); + Hu3DModelPosSet(lbl_1_bss_AC->model[i], pos->x, pos->y, pos->z); + Hu3DModelScaleSet(lbl_1_bss_AC->model[i], scale, scale, scale); + Hu3DModelAttrReset(lbl_1_bss_AC->model[i], HU3D_ATTR_DISPOFF); + return i; +} + +void fn_1_71E0(omObjData *object); + +void fn_1_70F0(omObjData *object) +{ + ParticleData *temp_r30; + HsfanimStruct01 *temp_r29; + s32 i; + ModelData *modelP; + AnimData *anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 26), MEMORY_DEFAULT_NUM)); + + object->data = anim; + object->model[0] = Hu3DParticleCreate(anim, 64); + Hu3DModelCameraSet(object->model[0], HU3D_CAM0); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_PARTICLE_KILL); + modelP = &Hu3DData[object->model[0]]; + temp_r30 = modelP->unk_120; + temp_r29 = temp_r30->unk_48; + temp_r30->unk_2C = 1; + for (i = 0; i < temp_r30->unk_30; i++, temp_r29++) { + temp_r29->unk2C = 0; + } + object->func = fn_1_71E0; +} + +void fn_1_71E0(omObjData *object) +{ + ModelData *modelP = &Hu3DData[object->model[0]]; + ParticleData *temp_r29 = modelP->unk_120; + HsfanimStruct01 *temp_r30 = temp_r29->unk_48; + s32 i; + for (i = 0; i < temp_r29->unk_30; i++, temp_r30++) { + if (temp_r30->unk2C <= 0.0f) { + continue; + } + if (++temp_r30->unk00 > 360) { + temp_r30->unk00 -= 360; + } + temp_r30->unk34.x += temp_r30->unk08.x * sind(2.0f * temp_r30->unk00); + temp_r30->unk34.y += temp_r30->unk08.y; + if (temp_r30->unk34.y >= 0.0f) { + fn_1_61C8(&temp_r30->unk34, 0.00625f * temp_r30->unk2C, 1, REFRESH_RATE / 4); + temp_r30->unk2C = 0; + } + } +} + +void fn_1_74A4(omObjData *object) +{ + AnimData *anim = object->data; + HuSprAnimKill(anim); + Hu3DModelKill(object->model[0]); + object->model[0] = -1; +} + +s32 fn_1_74F8(Vec *pos, float scale) +{ + s32 i; + ModelData *modelP = &Hu3DData[lbl_1_bss_A8->model[0]]; + ParticleData *temp_r30 = modelP->unk_120; + HsfanimStruct01 *temp_r31 = temp_r30->unk_48; + for (i = 0; i < temp_r30->unk_30; i++, temp_r31++) { + if (temp_r31->unk2C <= 0.0f) { + break; + } + } + if (i >= temp_r30->unk_30) { + return -1; + } + if (scale <= 0.0f) { + scale = 1.0f; + } + temp_r31->unk34 = *pos; +#if VERSION_PAL + temp_r31->unk08.x = (1.2f * (1.5f + (0.2f * (0.007874016f * (frand() & 0x7F))))) * 0.5f; + temp_r31->unk08.z = (1.5f + (0.2f * (0.007874016f * (frand() & 0x7F)))) * 1.2f; + temp_r31->unk08.y = (1.2f * (1.5f + (0.2f * (0.007874016f * (frand() & 0x7F))))) * 2.0f; +#else + temp_r31->unk08.x = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))) * 0.5f; + temp_r31->unk08.z = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))); + temp_r31->unk08.y = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))) * 2.0f; +#endif + temp_r31->unk00 = (s32)frand() % 360; + temp_r31->unk2C = 20 * scale; + return i; +} + +typedef struct work7C48 { + s32 unk0; + s32 unk4; + s32 unk8; + float unkC; + float unk10; + Vec unk14; + Vec unk20; +} Work7C48; + +void fn_1_7B50(omObjData *object); + +void fn_1_7778(omObjData *object) +{ + Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48) * 8, MEMORY_DEFAULT_NUM); + Work7C48 *workP = workBase; + s32 i; + memset(workP, 0, 8 * sizeof(Work7C48)); + for (i = 0; i < 8; i++, workP++) { + switch (i) { + case 0: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 3)); + break; + + case 1: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 4)); + break; + + default: + if (i & 0x1) { + workP->unk0 = Hu3DModelLink(workBase[0].unk0); + } + else { + workP->unk0 = Hu3DModelLink(workBase[1].unk0); + } + break; + } + Hu3DModelCameraSet(workP->unk0, HU3D_CAM0); + Hu3DModelLayerSet(workP->unk0, 1); + workP->unk4 = 0; + workP->unk8 = 0; + workP->unkC = 2; + workP->unk10 = (s32)frand() % 360; + workP->unk14.x = 1500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk14.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk14.y = -250 + (100 * (0.3f * i)); + workP->unk20.x = 1500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.y = workP->unk14.y; + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + } + object->func = fn_1_7B50; +} + +float fn_1_9A18(float start, float end, float weight); + +void fn_1_7B50(omObjData *object) +{ + Work7C48 *workP = object->data; + s32 i; + for (i = 0; i < 8; i++, workP++) { + float dx; + float dz; + float vel; + float angle; + if (workP->unk4 == 0) { + vel = 1 + (0.5 * sind((workP->unk8 * 5) % 180)); + } + else { + vel = 3; + } + // TODO replace with 60.0 / REFRESH_RATE +#if VERSION_PAL + workP->unk14.x += (1.2000000476837158 * (vel * (workP->unkC * sind(workP->unk10)))); + workP->unk14.z += (1.2000000476837158 * (vel * (workP->unkC * cosd(workP->unk10)))); +#else + workP->unk14.x += vel * (workP->unkC * sind(workP->unk10)); + workP->unk14.z += vel * (workP->unkC * cosd(workP->unk10)); +#endif + dx = workP->unk20.x - workP->unk14.x; + dz = workP->unk20.z - workP->unk14.z; + angle = atan2d(dx, dz); + workP->unk10 = fn_1_9A18(angle, workP->unk10, 3.5f); + if ((dx * dx) + (dz * dz) < 10000.0f) { + if (workP->unk4 == 0) { + workP->unk20.x = 2000 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.z = 700 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.y = workP->unk14.y; + } + else { + if (workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } + else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.y = workP->unk14.y; + } + } + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + workP->unk8 += frand() & 0x3; + } +} + +void fn_1_7F74(omObjData *object) { } + +void fn_1_7F78(void) +{ + Work7C48 *workP = lbl_1_bss_A4->data; + s32 i; + for (i = 0; i < 8; i++, workP++) { + workP->unk4 = 1; + if (workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } + else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.y = workP->unk14.y; + } +} + +typedef struct work891C { + s16 unk0; + s16 unk2[2]; + s16 unk6; + Vec unk8; + Vec unk14; + float unk20; + float unk24; + float unk28; + float unk2C; + float unk30; + float unk34; + float unk38; + float unk3C; +} Work891C; + +void fn_1_8078(omObjData *object, Work891C *workP) +{ + s32 num = workP[0].unk6; + float ofsZ = -2000; + s32 i; + for (i = 0; i < num; i++, workP++) { + Mtx *modelMtx; + Mtx rotZ; + Hu3DModelPosSet(workP->unk0, workP->unk8.x, workP->unk8.y, workP->unk8.z + ofsZ); + modelMtx = &Hu3DData[workP->unk0].unk_F0; + MTXRotDeg(*modelMtx, 'Y', workP->unk28); + MTXRotDeg(rotZ, 'Z', workP->unk38); + MTXConcat(*modelMtx, rotZ, *modelMtx); + Hu3DModelAttrReset(workP->unk0, HU3D_ATTR_DISPOFF); + } +} + +float fn_1_8890(float start, float end, float weight); + +void fn_1_817C(omObjData *object) +{ + Work891C *workP = object->data; + s32 num = workP[0].unk6; + s32 i; + for (i = 0; i < num; i++, workP++) { + Vec diff; + s32 unk8 = 0; + VECSubtract(&workP->unk14, &workP->unk8, &diff); + workP->unk2C = atan2d(diff.x, diff.z); + workP->unk28 = fn_1_8890(workP->unk28, workP->unk2C + workP->unk3C, 0.08f); + workP->unk24 += 0.05f * (600.0f - workP->unk24); + workP->unk20 += 0.2f * (workP->unk24 - workP->unk20); + workP->unk8.x += (workP->unk20 * (1.0f / REFRESH_RATE)) * sind(workP->unk28); + workP->unk8.z += (workP->unk20 * (1.0f / REFRESH_RATE)) * cosd(workP->unk28); + workP->unk30 += workP->unk20 * (1.0f / REFRESH_RATE); + } + fn_1_8078(object, object->data); +} + +void fn_1_841C(omObjData *object) +{ + s16 num = 12; + Work891C *workBase; + s32 modelId; + Work891C *work; + float radius; + float angle; + float ofsZ; + s32 i; + object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num * sizeof(Work891C), MEMORY_DEFAULT_NUM); + memset(workBase, 0, num * sizeof(Work891C)); + modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 8)); + ofsZ = 1500; + work = workBase; + for (i = 0; i < num; i++, work++) { + + work->unk0 = Hu3DModelLink(modelId); + Hu3DModelLayerSet(work->unk0, 6); + Hu3DModelCameraSet(work->unk0, 1); + Hu3DModelScaleSet(work->unk0, 7, 7, 7); + work->unk14.x = ((s32)frandmod(1000) * 4.0f) - 2000; + work->unk14.z = ((s32)frandmod(1000)) - 500.0f; + work->unk14.y = ((s32)frandmod(1000) * 0.8f) + 300; + angle = (s32)frandmod(360); + radius = ((s32)frandmod(250)) + 200.0f; + work->unk8.x = radius * sind(angle); + work->unk8.y = 0; + work->unk8.z = radius * cosd(angle); + VECAdd(&work->unk14, &work->unk8, &work->unk8); + work->unk38 = 60 - ((6.0f / 55.0f) * radius); + work->unk28 = (s32)frandmod(360); + + work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f + ((s32)frandmod(50) * 0.1f)) : (70.0f - ((s32)frandmod(50) * 0.1f)); + if (work->unk3C < 0.0f) { + work->unk38 = -work->unk38; + } + work->unk30 = 1; + work->unk34 = 0; + ofsZ -= 50.0f; + work->unk6 = num; + } + Hu3DModelKill(modelId); + object->func = fn_1_817C; +} + +float fn_1_8890(float start, float end, float weight) +{ + float angle = fmodf(end - start, 360); + if (angle < 0.0f) { + angle += 360.0f; + } + if (angle > 180.0f) { + angle -= 360.0f; + } + angle = fmodf(start + (weight * angle), 360); + if (angle < 0.0f) { + angle += 360.0f; + } + return angle; +} + +void fn_1_8CB8(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_89AC(void) +{ + StructBss90 *workP = lbl_1_bss_90 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss90), MEMORY_DEFAULT_NUM); + ParticleData *particle; + ModelData *modelP; + s16 *newWork; + s32 modelId; + memset(workP, 0, sizeof(StructBss90)); + workP->unk0[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 13), MEMORY_DEFAULT_NUM)); + workP->unk0[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 14), MEMORY_DEFAULT_NUM)); + workP->unk0[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 15), MEMORY_DEFAULT_NUM)); + workP->unk0[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 16), MEMORY_DEFAULT_NUM)); + workP->unk20.y = 1; + workP->unk20.z = 0; + workP->unk10[0] = modelId = Hu3DParticleCreate(workP->unk0[0], 1); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); + newWork[1] = 0; + workP->unk10[1] = modelId = Hu3DParticleCreate(workP->unk0[3], 10); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); + newWork[1] = 1; + workP->unk10[2] = modelId = Hu3DParticleCreate(workP->unk0[2], 4); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); + newWork[1] = 2; + workP->unk10[3] = modelId = Hu3DParticleCreate(workP->unk0[1], 6); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); + newWork[1] = 3; +} + +void fn_1_8C68(void) +{ + StructBss90 *workP = lbl_1_bss_90; + HuSprAnimKill(workP->unk0[0]); + HuSprAnimKill(workP->unk0[1]); + HuSprAnimKill(workP->unk0[2]); + HuSprAnimKill(workP->unk0[3]); +} + +float lbl_1_data_7B0[4] = { 1000, 200, 600, 1200 }; + +float lbl_1_data_7C0[4] = { 1, 0.6, 0.3, 0.425 }; + +void fn_1_8CB8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + s16 unk8 = 0; + StructBss90 *workP = lbl_1_bss_90; + s16 *newWorkP = particle->unk_1C; + s32 unk14 = 0; + Vec pos = Center; + Vec rot = CRot; + float temp_f26; + float temp_f25; + float zoom = CZoom; + HsfanimStruct01 *temp_r31; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + float temp_f29; + float temp_f23; + s32 i; + switch (newWorkP[2]) { + case 0: + temp_r31 = particle->unk_48; + if (newWorkP[1]) { + sp18.x = 2000; + sp18.y = -300; + sp18.z = 500; + temp_f29 = 1 / VECMagPoint(sp18.x, sp18.y, sp18.z); + sp18.x *= temp_f29; + sp18.y *= temp_f29; + sp18.z *= temp_f29; + temp_f23 = 3200.0f / particle->unk_30; + for (i = 0; i < particle->unk_30; i++, temp_r31++) { + temp_f26 = 500.0 + ((temp_f23 * i) + ((0.25f * temp_f23) * ((float)((s32)frand() & 0xFFFF) * 0.0000152587890625))); + temp_f25 = temp_f26 / 3200; + temp_r31->unk14.x = temp_f26; + temp_r31->unk34.x = 1000 + (temp_f26 * sp18.x); + temp_r31->unk34.y = 4800 + (temp_f26 * sp18.y); + temp_r31->unk34.z = -3500 + (temp_f26 * sp18.z); + temp_r31->unk2C = ((0.7f * (temp_f25 * temp_f25)) + 0.3f) + * (lbl_1_data_7B0[newWorkP[1]] * (0.7f + (0.3f * ((float)((s32)frand() & 0xFFFF) * 0.0000152587890625)))); + temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 160.0) + 32; + temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 96.0) + 32; + temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 128.0) + 32; + temp_r31->unk40.a = (255 * lbl_1_data_7C0[newWorkP[1]] * (1.0 - (0.4 * temp_f25))) + - (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 16.0); + temp_r31->unk14.z = temp_r31->unk40.a; + } + newWorkP[2]++; + } + else { + temp_r31->unk34.x = 1000; + temp_r31->unk34.y = 4800; + temp_r31->unk34.z = -3500; + temp_r31->unk2C = 1000; + } + break; + + case 1: + sp3C.x = sind(rot.y) * cosd(rot.x); + sp3C.y = -sind(rot.x); + sp3C.z = cosd(rot.y) * cosd(rot.x); + sp30.x = 1000 - (pos.x + (1.25f * (sp3C.x * zoom))); + sp30.y = 4800 - (pos.y + (sp3C.y * zoom)); + sp30.z = -3500 - (pos.z + (1.25f * (sp3C.z * zoom))); + temp_f29 = 1 / VECMagPoint(sp30.x, sp30.y, sp30.z); + sp30.x *= temp_f29; + sp30.y *= temp_f29; + sp30.z *= temp_f29; + temp_f29 = -((-sp30.x * -sp3C.x) + (-sp30.y * -sp3C.y) + (-sp30.z * -sp3C.z)); + sp24.x = -sp3C.x + ((-2.0f * sp30.x) * temp_f29); + sp24.y = -sp3C.y + ((-2.0f * sp30.y) * temp_f29); + sp24.z = -sp3C.z + ((-2.0f * sp30.z) * temp_f29); + temp_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, temp_r31++) { + temp_r31->unk34.x = 1000 + (sp24.x * temp_r31->unk14.x); + temp_r31->unk34.y = 4800 + (sp24.y * temp_r31->unk14.x); + temp_r31->unk34.z = -3500 + (sp24.z * temp_r31->unk14.x); + temp_r31->unk40.a = temp_r31->unk14.z * workP->unk20.y; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_97FC(float arg0) +{ + StructBss90 *workP = lbl_1_bss_90; + workP->unk20.y = arg0; + if (workP->unk20.y > 1.0f) { + workP->unk20.y = 1.0f; + } + if (workP->unk20.y <= 0.0f) { + Hu3DModelAttrSet(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[3], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[3], HU3D_ATTR_DISPOFF); + } +} + +float fn_1_9900(float start, float end) +{ + float angleDiff; + if (start >= 360.0f) { + start -= 360.0f; + } + else if (start < 0.0f) { + start += 360.0f; + } + if (end >= 360.0f) { + end -= 360.0f; + } + else if (end < 0.0f) { + end += 360.0f; + } + angleDiff = start - end; + if (angleDiff <= -180.0f) { + angleDiff += 360.0f; + } + else if (angleDiff >= 180.0f) { + angleDiff -= 360.0f; + } + return angleDiff; +} + +float fn_1_9A18(float start, float end, float max) +{ + float angle; + float diff; + + if (start >= 360.0) { + start -= 360.0; + } + else if (start < 0.0) { + start += 360.0; + } + if (end >= 360.0) { + end -= 360.0; + } + else if (end < 0.0) { + end += 360.0; + } + diff = 360.0 + (start - end); + if (fabs(diff) >= 360.0) { + diff = fmod(diff, 360.0); + } + if (diff < 180.0) { + if (diff <= max) { + angle = diff; + } + else { + angle = max; + } + } + else if (360.0 - diff <= max) { + angle = -(360.0 - diff); + } + else { + angle = -max; + } + angle += end; + if (angle >= 360.0) { + angle -= 360.0; + } + else if (angle < 0.0) { + angle += 360.0; + } + + return angle; +} diff --git a/src/REL/m457Dll/main.c b/src/REL/m457Dll/main.c new file mode 100755 index 00000000..4e570c51 --- /dev/null +++ b/src/REL/m457Dll/main.c @@ -0,0 +1,1691 @@ +#include "dolphin/pad.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "ext_math.h" +#include "version.h" + +s32 rand8(void); + +#define MSM_SE_BOWSER_LAUGH 0x3A +#define MSM_SE_BOWSER_HOWL 0x3E +#define MSM_SE_KOOPA_KID_DROP 0x5B +#define MSM_SE_PLAYER_DROP 0x33D +#define MSM_SE_WIND 0x6D7 +#define MSM_SE_INVINCIBILITY 0x7E6 + +#define MSM_MUS_BACKGROUND 0x4D + +#define MODEL_ID_PLAYER_PLAYER 0 + +#define MODEL_ID_GAME_SKY 0 +#define MODEL_ID_GAME_RING 1 +#define MODEL_ID_GAME_MUSHROOM 2 +#define MODEL_ID_GAME_INVINCE_SHINING 3 +#define MODEL_ID_GAME_INVINCE_SPARKS 4 +#define MODEL_ID_GAME_KOOPA_KID 5 +#define MODEL_ID_GAME_WAR_FAN 6 + +#define CHARACTER_BOWSER -1 +#define PAD_IDX_COM -1 + +#define PLAYER_STATE_INITIAL_ADVANCE 2 // TODO is this right? +#define PLAYER_STATE_FALLING 16 + +#define PREV_TRIG_L 0 +#define PREV_TRIG_R 1 + +typedef struct PlayerData { + /* 0x00 */ s32 group; + /* 0x04 */ s32 player; + /* 0x08 */ s32 character; + /* 0x0C */ s32 padIdx; + /* 0x10 */ s32 diff; + /* 0x14 */ s32 state; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 invinceTime; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 stamina; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 prevTrig; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ float unk48; + /* 0x4C */ s32 unk4C; +} PlayerData; // Size 0x50 + +typedef struct StructBss78 { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04[3]; +} StructBss78; // Size 0x10 + +typedef struct StructData28C { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; +} StructData28C; // Size 0x18 + +typedef struct SparkData { + /* 0x00 */ float scale; + /* 0x04 */ float xOffset; + /* 0x08 */ float yOffset; +} SparkData; // Size 0x0C + +static void M457Exit(omObjData *object); + +static StructBss78 lbl_1_bss_78[5]; +static omObjData *mainObj; +static omObjData *omViewObj; +static omObjData *playerObj[2]; +static omObjData *gameObj; +static s32 lbl_1_bss_60; +static s32 gameState; +static char lbl_1_bss_58[4]; // unused +static s32 lbl_1_bss_54; +static s32 lbl_1_bss_50; +static Process *objman; +static s32 lightId; +static s32 lbl_1_bss_44; +static s32 lbl_1_bss_40; +static s32 lbl_1_bss_3C; +static char lbl_1_bss_38[4]; // unused +static float lbl_1_bss_34; +static float lbl_1_bss_30; +static float lbl_1_bss_2C; +static float lbl_1_bss_28; +static s32 lbl_1_bss_24; +static s32 lbl_1_bss_20; +static s32 lbl_1_bss_1C; +static s32 lbl_1_bss_18; +static BOOL againstBrowserF; +static s32 m457MesEndF; +static char lbl_1_bss_8[8]; // unused +static s32 lbl_1_bss_4; +static char lbl_1_bss_0[4]; // unused + +s32 sprDataNumTbl[] = { DATA_MAKE_NUM(DATADIR_M457, 23), DATA_MAKE_NUM(DATADIR_M457, 22), DATA_MAKE_NUM(DATADIR_M457, 24), + DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), + DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_M457, 23), DATA_MAKE_NUM(DATADIR_M457, 22), DATA_MAKE_NUM(DATADIR_M457, 24), + DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), + DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_M457, 27), DATA_MAKE_NUM(DATADIR_M457, 28), DATA_MAKE_NUM(DATADIR_M457, 25), + DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25) }; + +s32 sprIdTbl[23] = { 0 }; + +s32 lbl_1_data_B8[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 112), DATA_MAKE_NUM(DATADIR_MARIOMOT, 111), DATA_MAKE_NUM(DATADIR_M457, 8), DATA_MAKE_NUM(DATADIR_M457, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 12), DATA_MAKE_NUM(DATADIR_MARIOMOT, 13), DATA_MAKE_NUM(DATADIR_MARIOMOT, 21), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) }; + +u32 lbl_1_data_E8[] = { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 }; + +u32 lbl_1_data_118[] = { DATA_MAKE_NUM(DATADIR_BKOOPA, 8), DATA_MAKE_NUM(DATADIR_BKOOPA, 10), 0, DATA_MAKE_NUM(DATADIR_M457, 31), + DATA_MAKE_NUM(DATADIR_M457, 32), DATA_MAKE_NUM(DATADIR_M457, 33), DATA_MAKE_NUM(DATADIR_M457, 34), DATA_MAKE_NUM(DATADIR_M457, 35), + DATA_MAKE_NUM(DATADIR_M457, 36), DATA_MAKE_NUM(DATADIR_M457, 37), DATA_MAKE_NUM(DATADIR_M457, 29), DATA_MAKE_NUM(DATADIR_M457, 30) }; + +u8 lbl_1_data_148[12] = { 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1 }; +s32 lbl_1_data_154[12] = { 8, 0, 0, 8, 5, 8, 4, 2, 2, 8, 8, 8 }; +s32 lbl_1_data_184[12] = { 0 }; + +float lbl_1_data_1B4[9][3] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 20.0f, 60.0f, 20.0f }, { 20.0f, 70.0f, 20.0f }, { 20.0f, 20.0f, 20.0f }, + { 50.0f, -70.0f, 0.0f }, { 20.0f, 60.0f, 20.0f }, { 100.0f, 0.0f, 50.0f }, { -70.0f, -70.0f, -70.0f } }; + +SparkData sparkDataTbl[9] = { { 1.5f, 45.0f, 270.0f }, { 1.7f, 45.0f, 270.0f }, { 1.8f, 45.0f, 270.0f }, { 1.6f, 45.0f, 270.0f }, + { 1.7f, 5.0f, 270.0f }, { 2.0f, -85.0f, 295.0f }, { 1.8f, 45.0f, 270.0f }, { 2.0f, 40.0f, 330.0f }, { 2.25f, -30.0f, 300.0f } }; + +StructData28C lbl_1_data_28C = { 0 }; + +s16 lbl_1_data_2A4 = -1; +s16 lbl_1_data_2A6 = -1; +s32 backgroundMusNo = -1; +s32 windSeNo = -1; +s16 lbl_1_data_2B0 = -1; +s32 invincibilitySeNo = -1; +s32 lbl_1_data_2B8 = 10 * REFRESH_RATE; + +static void CameraPrintDebug(void) +{ + Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); + Center.y += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_Y) != 0) - ((HuPadBtn[0] & PAD_BUTTON_X) != 0)); + CZoom += 25.0 * (((HuPadBtn[0] & PAD_BUTTON_X) != 0) - ((HuPadBtn[0] & PAD_BUTTON_Y) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; + print8(64, 392, 1.0f, "%f,%f,%f", Center.x, Center.y, Center.z); + print8(64, 408, 1.0f, "%f,%f,%f", CRot.x, CRot.y, CRot.z); + print8(64, 424, 1.0f, "%f", CZoom); +} + +static void M457PlayerExec(omObjData *object) +{ + PlayerData *playerData = object->data; + PlayerData *opponentData = playerObj[1 - object->work[0]]->data; + float unused = 0.0f; + float unused2 = 0.0f; + float unused3 = 0.0f; + s32 unused4 = 0; + s16 var_r29 = -1; + s16 var_r26 = -1; + s16 var_r22 = -1; + BOOL aPressedF = (playerData->padIdx == PAD_IDX_COM) ? 0 : ((HuPadBtnDown[playerData->padIdx] & PAD_BUTTON_A) > 0); + BOOL rPressedF = (playerData->padIdx == PAD_IDX_COM) ? 0 : ((HuPadBtnDown[playerData->padIdx] & PAD_TRIGGER_R) > 0); + BOOL lPressedF = (playerData->padIdx == PAD_IDX_COM) ? 0 : ((HuPadBtnDown[playerData->padIdx] & PAD_TRIGGER_L) > 0); + s32 i; + + if (playerData->padIdx == PAD_IDX_COM) { + playerData->unk3C--; + if (playerData->unk3C <= 0) { + if (playerData->state == 1) { + aPressedF = TRUE; + } + else { + rPressedF = lPressedF = TRUE; + } + if (playerData->state >= 8 || (playerData->state >= 3 && playerData->unk18 >= 10)) { + switch (playerData->diff) { + case 0: + playerData->unk3C = rand8() % 14 + 4 + (playerData->state != 8 ? 28 - playerData->unk18 : 0); + break; + case 1: + playerData->unk3C = rand8() % 9 + 4 + (playerData->state != 8 ? 28 - playerData->unk18 : 0); + break; + case 2: + playerData->unk3C = rand8() % 10 + 12 + + ((playerData->state != 8 && playerData->unk18 >= 9 && playerData->unk18 <= 13) ? 13 - playerData->unk18 : 0); + break; + case 3: + playerData->unk3C = rand8() % 5 + 4 + + ((playerData->state != 8 && playerData->unk18 >= 2 && playerData->unk18 <= 17) ? 17 - playerData->unk18 : 0); + if (opponentData->invinceTime > 0 || playerData->state == 7) { + // don't waste stamina + lPressedF = rPressedF = 0; + } + break; + } + } + } + } + if (playerData->prevTrig == PREV_TRIG_L) { + lPressedF = FALSE; + } + if (playerData->prevTrig == PREV_TRIG_R) { + rPressedF = FALSE; + } + if (playerData->unk20 > 0) { + aPressedF = FALSE; + playerData->unk20--; + } + else if (aPressedF) { + playerData->unk20 = 20; + } + if (playerData->unk24 > 0) { + lPressedF = FALSE; + playerData->unk24--; + } + else if (lPressedF) { + playerData->unk24 = 6; + } + if (playerData->unk28 > 0) { + rPressedF = FALSE; + playerData->unk28--; + } + else if (rPressedF) { + playerData->unk28 = 6; + } + if (gameState == 1008 && playerData->state >= 8 && playerData->state <= 14) { + s32 prevStamina = playerData->stamina; + if (lPressedF) { + playerData->stamina -= 7; + } + if (rPressedF) { + playerData->stamina -= 7; + } + if (prevStamina > 0 && playerData->stamina <= 0) { + // cap at -1 + playerData->stamina = -1; + playerData->unk4C = 1; + } + } + if (lbl_1_bss_20 == 0 && gameState == 1008 && playerData->state >= 7 && playerData->state <= 14 && (lPressedF || rPressedF)) { + playerData->prevTrig = lPressedF ? PREV_TRIG_L : rPressedF ? PREV_TRIG_R : PREV_TRIG_L; + } + if (playerData->group == 0) { + playerObj[0]->trans.x -= playerData->unk48; + playerObj[1]->trans.x -= opponentData->unk48; + } + switch (gameState) { + case 1001: + if (lbl_1_bss_60 == 0) { + Hu3DModelAttrReset(object->model[MODEL_ID_PLAYER_PLAYER], HU3D_ATTR_DISPOFF); + } + if (lbl_1_bss_60 <= 30) { + if (playerData->character == CHARACTER_BOWSER) { + Hu3DMotionTimeSet(object->model[MODEL_ID_PLAYER_PLAYER], 138.0f); + } + object->trans.y = 2400.0 * (1.0 - lbl_1_bss_60 / 30.0); + } + if (playerData->character != CHARACTER_BOWSER && lbl_1_bss_60 == 30) { + var_r29 = 2; + } + if (lbl_1_bss_60 == 40 && playerData->character != CHARACTER_BOWSER) { + var_r29 = 0; + } + if (lbl_1_bss_60 == 45 && playerData->character == CHARACTER_BOWSER) { + var_r29 = 0; + Hu3DMotionShiftSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[var_r29], lbl_1_data_184[var_r29], 35.0f, HU3D_MOTATTR_LOOP); + playerData->unk40 = var_r29; + } + if (lbl_1_bss_60 == 30) { + lbl_1_data_28C.unk04 += 50; + } + if (lbl_1_bss_60 == 30) { + HuAudFXPlay(MSM_SE_PLAYER_DROP); + } + break; + case 1005: + if (lbl_1_bss_60 == 0) { + var_r29 = 3; + } + if (lbl_1_bss_60 == (s32)((21.0f / 18) * REFRESH_RATE)) { + var_r29 = 4; + } + break; + case 1006: + if (lbl_1_bss_60 == 5) { + var_r29 = 5; + } + break; + case 1010: + if (lbl_1_bss_44 == playerData->group && lbl_1_bss_60 >= 15) { + if (lbl_1_bss_60 == 15) { + playerData->state = 0; + playerData->unk18 = 0; + if (playerData->character == CHARACTER_BOWSER) { + HuAudFXPlay(MSM_SE_BOWSER_LAUGH); + } + } + var_r29 = 10; + if (object->rot.y > 180.0f) { + object->rot.y -= 360.0f; + } + object->rot.y *= 0.9; + } + if (lbl_1_bss_44 == 2 && lbl_1_bss_60 >= 15) { + if (lbl_1_bss_60 == 15) { + playerData->state = 0; + playerData->unk18 = 0; + } + var_r29 = 11; + if (object->rot.y > 180.0f) { + object->rot.y -= 360.0f; + } + object->rot.y *= 0.9; + } + break; + } + playerData->unk18 += (playerData->unk18 < 0x10000); + if (playerData->state == 3 || playerData->state == 5) { + if (playerData->unk18 == 1 && lbl_1_data_2B0 != -1) { + HuWinExCleanup(lbl_1_data_2B0); + lbl_1_data_2B0 = -1; + } + if ((playerData->state == 3 && playerData->unk18 == 23) || (playerData->state == 5 && playerData->unk18 == 15)) { + float spFC[2]; + HuWinMesMaxSizeGet(1, spFC, MAKE_MESSID(48, 35)); + if (lbl_1_data_2B0 == -1) { + lbl_1_data_2B0 = HuWinCreate(-10000.0f, 400.0f, spFC[0], spFC[1], 1); + } + HuWinBGTPLvlSet(lbl_1_data_2B0, 0.0f); + HuWinMesSpeedSet(lbl_1_data_2B0, 0); + HuWinMesSet(lbl_1_data_2B0, MAKE_MESSID(48, 35)); + } + } + switch (playerData->state) { + case 0: + if (gameState == 1008) { + playerData->state = 1; + playerData->unk18 = 0; + } + break; + case 1: + if (playerData->unk18 == 1 && playerData->padIdx == PAD_IDX_COM) { + switch (playerData->diff) { + case 0: + playerData->unk3C = rand8() % 5 + 15; + break; + case 1: + playerData->unk3C = rand8() % 5 + 12; + break; + case 2: + playerData->unk3C = rand8() % 5 + 10; + break; + case 3: + playerData->unk3C = rand8() % 4 + 9; + break; + } + } + // initial advance + if (aPressedF) { + playerData->state = PLAYER_STATE_INITIAL_ADVANCE; + playerData->unk18 = 0; + var_r29 = 6; + object->trans.x += (playerData->group == 0) ? ((rand8() % 2) * 2 - 1) : 0; + } + break; + case PLAYER_STATE_INITIAL_ADVANCE: + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + break; + case 3: + object->trans.x += 4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 4: + if (playerData->unk18 == 1) { + var_r29 = 7; + } + object->trans.x += -4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 5: + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 15) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 6: + if (playerData->unk18 == 1) { + var_r29 = 8; + } + object->trans.x += -8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 7) { + playerData->state = 8; + playerData->unk18 = 0; + var_r26 = 7; + var_r29 = 4; + } + if (playerData->unk18 >= 15) { + playerData->state = 8; + playerData->unk18 = 0; + } + break; + case 8: + if (playerData->stamina == 0) { + var_r26 = 0; + playerData->state = 7; + playerData->unk18 = 1; + playerData->unk34 = 0; + } + else { + if (!lPressedF && !rPressedF) { + break; + } + playerData->state = 9; + playerData->unk18 = 0; + var_r26 = 3; + var_r22 = (playerData->prevTrig == PREV_TRIG_L ? 0 : 11) + 5; + var_r29 = 6; + if (lbl_1_bss_20 == 1) { + playerData->prevTrig = lPressedF ? PREV_TRIG_L : rPressedF ? PREV_TRIG_R : PREV_TRIG_L; + } + break; + } + /* fallthrough */ + case 7: + if (playerData->unk18 == 1) { + s32 noStaminaSeIdTbl[] = { 0x12A, 0x16A, 0x1AA, 0x1EA, 0x22A, 0x26A, 0x2AA, 0x2EA, 0x03B }; + HuAudFXPlay(noStaminaSeIdTbl[playerData->character == CHARACTER_BOWSER ? 8 : playerData->character]); + var_r29 = 9; + playerData->unk4C = 0; + } + if (playerData->stamina > 0) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 9: + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 12: + if (playerData->unk18 == 7) { + var_r26 = 0; + var_r22 = 7; + var_r29 = 7; + } + if (playerData->unk18 == 15) { + var_r26 = 5; + var_r29 = 4; + } + if (playerData->unk18 >= 20) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 10: + object->trans.x += 4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 11: + object->trans.x += -4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 == 1) { + var_r29 = 7; + } + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 13: + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + var_r29 = 4; + } + break; + case 14: + object->trans.x += -8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 == 1) { + var_r29 = 8; + } + if (playerData->unk18 == 11) { + var_r26 = 11; + var_r29 = 4; + } + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; + } + if (playerData->unk34 < 8) { + playerData->unk34 = 8; + } + break; + case 15: + if (playerData->unk18 == 1 && playerData->invinceTime > 4) { + playerData->invinceTime = 4; + } + if (playerData->unk18 == 1 && lbl_1_data_2B0 != -1) { + HuWinExCleanup(lbl_1_data_2B0); + lbl_1_data_2B0 = -1; + } + if (playerData->unk18 == 7) { + var_r29 = 4; + var_r26 = 20; + } + if (playerData->unk18 == REFRESH_RATE) { + lbl_1_bss_44 = playerData->group; + playerData->invinceTime = 0; + } + break; + case PLAYER_STATE_FALLING: + // make the player fall down in the correct direction + object->trans.x += -39.130432f * (playerData->group == 0 ? 1 : -1); + object->trans.y += 39.130432f; + if (playerData->unk18 == 1) { + s32 fallSeIdTbl[] = { 0x123, 0x163, 0x1A3, 0x1E3, 0x223, 0x263, 0x2A3, 0x2E3, 0x03C }; + HuAudFXPlay(fallSeIdTbl[playerData->character == CHARACTER_BOWSER ? 8 : playerData->character]); + var_r29 = 8; + var_r26 = 0; + var_r22 = 6; + } + object->rot.z = (playerData->group == 0) ? -20 : 20; + break; + case 17: + if (playerData->unk18 == 1 && playerData->invinceTime > 4) { + playerData->invinceTime = 4; + } + if (playerData->unk18 == 1 && lbl_1_data_2B0 != -1) { + HuWinExCleanup(lbl_1_data_2B0); + lbl_1_data_2B0 = -1; + } + if (playerData->unk18 == 7) { + var_r29 = 0; + var_r26 = 10; + } + if (playerData->unk18 >= 7 && playerData->unk18 < 17) { + object->trans.x += (playerData->group == 0 ? -1 : 1) * 2; + } + if (playerData->unk18 == REFRESH_RATE) { + lbl_1_bss_44 = 2; + playerData->invinceTime = 0; + } + break; + } + switch (playerData->state) { + case 12: + if (playerData->group == 0) { + break; + } + /* fallthrough */ + case 3: + case 5: + case 10: + case 13: { + Vec sp104; + s32 temp_r21; + char *var_r18; + + s32 temp_r19 = Hu3DMotionTimeGet(object->model[MODEL_ID_PLAYER_PLAYER]); + if ((opponentData->state != 4 && opponentData->state != 6) || opponentData->unk18 != 1) { + if ((temp_r19 + 1) % 11 != 0 || (playerData->state == 12 && temp_r19 + 1 > 11)) { + break; + } + } + temp_r21 = ((temp_r19 + 1) / 11 - 1) % 2; + { + char sp1D8[][50] = { "g000mN-itemhook_R", "g000mN-itemhook_L" }; + + if (playerData->character != CHARACTER_BOWSER) { + var_r18 = CharModelHookNameGet(playerData->character, 1, (temp_r21 % 2 == 0) ? 0 : 1); + } + else { + var_r18 = (temp_r21 % 2 == 0) ? sp1D8[0] : sp1D8[1]; + } + } + Hu3DModelObjPosGet(object->model[MODEL_ID_PLAYER_PLAYER], var_r18, &sp104); + Hu3DModelPosSet(gameObj->model[temp_r21 + 7], sp104.x + (playerData->group == 0 ? 1 : -1) * 50, sp104.y, 75.0f + sp104.z); + Hu3DMotionTimeSet(gameObj->model[temp_r21 + 7], 2.0f); + Hu3DModelAttrReset(gameObj->model[temp_r21 + 7], 1); + if (lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0].unk00 < 3) { + lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0] + .unk04[lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0].unk00] + = 0.0f; + lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0].unk00++; + } + // bounds check + if (fabs(playerObj[1 - playerData->group]->trans.x) >= 800.0 && (opponentData->state == 11 || opponentData->state == 14)) { + playerData->state = 15; + opponentData->state = PLAYER_STATE_FALLING; + playerData->unk18 = opponentData->unk18 = 0; + if (lbl_1_bss_78[4].unk00 < 3) { + lbl_1_bss_78[4].unk04[lbl_1_bss_78[4].unk00] = 0.0f; + lbl_1_bss_78[4].unk00++; + } + if (backgroundMusNo != -1) { + HuAudSeqFadeOut(backgroundMusNo, 100); + backgroundMusNo = -1; + } + } + } break; + } + playerData->unk34++; + if (playerData->state != PLAYER_STATE_FALLING && playerData->state != 15 && playerData->state != 17 && gameState == 1008 + && playerData->unk34 >= 30 && (playerData->unk34 - 30) % 30 == 0) { + // regen stamina + playerData->stamina += (playerData->unk4C == 0 || playerData->state == 7) ? 10 : 0; + } + // apply invincibility to stamina and cap it + playerData->stamina = (playerData->invinceTime > 0 || playerData->stamina >= 100) ? 100 : (playerData->stamina < 0) ? 0 : playerData->stamina; + for (i = 0; i < 5; i++) { + float scale = (playerData->stamina >= i * 20 + 20) ? 1.0 : (playerData->stamina <= i * 20) ? 0.0 : (playerData->stamina - i * 20) / 20.0; + espScaleSet(sprIdTbl[i + (playerData->group == 0 ? 2 : 10)], scale, scale); + if (playerData->invinceTime > 0) { + // stamina bar mushroom start positions/offsets + s32 posXTbl[] = { 106, 469 }; + s32 posYTbl[] = { 78, 78 }; + s32 ofsXTbl[] = { 0, 0, -33, -9, 15, 39, 63, -68, 0, 0, -33, -9, 15, 39, 63, -68 }; // second half is unused + s32 ofsYTbl[] = { 0, 0, -1, -1, -1, -1, -1, -2, 0, 0, -1, -1, -1, -1, -1, -2 }; + + // make the mushrooms in the stamina bar glow + espPosSet(sprIdTbl[i + 18], posXTbl[playerData->group] + ofsXTbl[i + 2], posYTbl[playerData->group] + ofsYTbl[i + 2]); + espScaleSet(sprIdTbl[i + 18], (playerData->invinceTime % 4 == 0) ? 1.1 : 1.0, (playerData->invinceTime % 4 == 0) ? 1.1 : 1.0); + espTPLvlSet(sprIdTbl[i + 18], (playerData->invinceTime % 4 < 2) ? 1.0 : (var_r22 % 4 == 2) ? 0.5 : 0.0); + espDispOn(sprIdTbl[i + 18]); + } + else if (opponentData->invinceTime == 0) { + espDispOff(sprIdTbl[i + 18]); + } + } + if (playerData->invinceTime > 0) { + s32 sp20 = (playerData->character != CHARACTER_BOWSER) ? playerData->character : 8; + // make the player shine + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], + object->trans.x + sparkDataTbl[sp20].xOffset * (playerData->group == 0 ? 1 : -1), object->trans.y + sparkDataTbl[sp20].yOffset, + 150.0f + object->trans.z); + Hu3DModelScaleSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], 0.75 * sparkDataTbl[sp20].scale, 0.75 * sparkDataTbl[sp20].scale, + 0.75 * sparkDataTbl[sp20].scale); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], 1); + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_ATTR_ZCMP_OFF); + // add sparks + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], + object->trans.x + sparkDataTbl[sp20].xOffset * (playerData->group == 0 ? 1 : -1), object->trans.y + sparkDataTbl[sp20].yOffset, + 150.0f + object->trans.z); + Hu3DModelScaleSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], 0.75 * sparkDataTbl[sp20].scale, 0.75 * sparkDataTbl[sp20].scale, + 0.75 * sparkDataTbl[sp20].scale); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], 1); + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_ATTR_ZCMP_OFF); + playerData->invinceTime--; + if (playerData->invinceTime == 0) { + HuAudFXStop(invincibilitySeNo); + } + } + else if (opponentData->invinceTime == 0) { + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_ATTR_DISPOFF); + } + if (playerData->unk44 >= 0) { + var_r29 = playerData->unk44; + } + if (var_r29 >= 0 && var_r29 != playerData->unk40) { + if (var_r26 == 0) { + Hu3DMotionSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[var_r29]); + Hu3DMotionTimeSet(object->model[MODEL_ID_PLAYER_PLAYER], (var_r22 == -1) ? 0 : var_r22); + } + else { + Hu3DMotionShiftSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[var_r29], (var_r22 != -1) ? var_r22 : lbl_1_data_184[var_r29], + (var_r26 != -1) ? var_r26 : lbl_1_data_154[var_r29], lbl_1_data_148[var_r29] ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + } + playerData->unk40 = var_r29; + } + if (playerData->group == 1) { + ModelData *playerModel = &Hu3DData[object->model[MODEL_ID_PLAYER_PLAYER]]; + } +} + +s32 lbl_1_data_33C = -1; +float lbl_1_data_340 = 3500.0f; +float lbl_1_data_344 = 100.0f; +float lbl_1_data_348 = -59.0f; + +static void M457GameExec(omObjData *object) +{ + PlayerData *sp158[2]; + omObjData *sp150[2]; + PlayerData *sp148[2]; + s32 sp140[2]; + omObjData *playerObjLocal[2]; + PlayerData *playerData[2]; + ModelData *temp_r24; + ModelData *temp_r27; + ModelData *mushroomModel; + ModelData *temp_r29; + float spAC; + float spA8; + float spA4; + float temp_f20; + float var_f19; + float temp_f24; + float temp_f23; + float temp_f22; + float var_f21; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f28; + float temp_f29; + float var_f31; + s32 invinciblePlayerId; + s32 var_r26; + s32 var_r25; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 i; + + for (i = 0; i < 2; i++) { + sp158[i] = playerObj[i]->data; + } + lbl_1_bss_4++; + switch (gameState) { + case 1003: + temp_f27 = 1800.0 * (1.0 - lbl_1_bss_60 / 30.0); + temp_f27 = (temp_f27 < 0.0f) ? 0.0f : temp_f27; + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, temp_f27, 0.0f); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_KOOPA_KID], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_60 == 31) { + HuAudFXPlay(MSM_SE_KOOPA_KID_DROP); + } + if (lbl_1_bss_60 >= 31 && lbl_1_bss_60 <= 38) { + temp_f24 = 1.0 - (lbl_1_bss_60 - 31) / 7.0; + Hu3DModelRotSet(object->model[MODEL_ID_GAME_KOOPA_KID], 25.0 * (temp_f24 * 0.5 + temp_f24 * temp_f24 * 0.5), 0.0f, 0.0f); + } + break; + case 1002: + if (lbl_1_bss_60 == 0) { + lbl_1_bss_3C = 0; + } + if (lbl_1_bss_60 == (VERSION_NTSC ? 20 : 15)) { + espAttrReset(sprIdTbl[16], HUSPR_ATTR_DISPOFF); + } + if ((lbl_1_bss_60 >= (VERSION_NTSC ? 20 : 15) && lbl_1_bss_60 <= REFRESH_RATE - 10) + || (lbl_1_bss_60 >= 3 * REFRESH_RATE && lbl_1_bss_60 <= (s32)(3.5 * REFRESH_RATE))) { + spAC = (lbl_1_bss_60 <= 120) ? (lbl_1_bss_60 - (VERSION_NTSC ? 20 : 15)) / (0.5 * REFRESH_RATE) + : (1.0 - (lbl_1_bss_60 - 3 * REFRESH_RATE) / (0.5 * REFRESH_RATE)); + espTPLvlSet(sprIdTbl[16], spAC); + } + if (lbl_1_bss_60 == (s32)(3.5 * REFRESH_RATE)) { + espAttrSet(sprIdTbl[16], HUSPR_ATTR_DISPOFF); + } + break; + case 1006: + if (lbl_1_bss_60 == 0) { + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[2]); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); + } + if (lbl_1_bss_60 == 15) { + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_PAUSE); + } + break; + case 1008: + if (lbl_1_bss_60 == 1) { + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_PAUSE); + for (i = 0; i < 16; i++) { + espDispOn(sprIdTbl[i]); + } + } +#if VERSION_NTSC + if (lbl_1_bss_60 <= 25) { + temp_f28 = lbl_1_bss_60 / 25.0; + temp_f26 = 1.0f - (1.0f - temp_f28) * (1.0f - temp_f28) * (1.0f - temp_f28); + temp_f26 = 0.25 + 1.375 * temp_f26; + temp_f23 = 1.0f - (1.0f - temp_f28) * (1.0f - temp_f28); + temp_f23 = 2.0f * (1.0f - temp_f28); + espAttrReset(sprIdTbl[17], HU3D_ATTR_SHADOW); +#if VERSION_ENG + espScaleSet(sprIdTbl[17], 0.85 * temp_f26, 0.85 * temp_f26); +#else + espScaleSet(sprIdTbl[17], temp_f26, temp_f26); +#endif + espTPLvlSet(sprIdTbl[17], (temp_f23 > 1.0f) ? 1.0f : temp_f23); + } + else { + espAttrSet(sprIdTbl[17], HUSPR_ATTR_DISPOFF); + } +#endif + for (i = 0; i < 2; i++) { + sp150[i] = playerObj[i]; + sp148[i] = playerObj[i]->data; + } + for (i = 0; i < 2; i++) { + sp140[i] = (sp148[1 - i]->invinceTime > 0) ? 2 + : (sp148[i]->state == 8) ? 2 + : (sp148[i]->state == 1) ? 1 + : (sp148[i]->state == 9) ? (sp148[i]->unk18 >= 0 ? 3 : 2) + : (sp148[i]->state == 2) ? 4 + : (sp148[i]->state == 7) ? 0 + : -1; + } + if (sp140[0] >= 0 && sp140[1] >= 0 && fabs(sp150[0]->trans.x - sp150[1]->trans.x) < 300.0) { + sp150[0]->trans.x = (sp148[0]->invinceTime > 0) ? sp150[0]->trans.x + : (sp148[1]->invinceTime > 0) ? (sp150[1]->trans.x - 300.0f) + : ((sp150[0]->trans.x + sp150[1]->trans.x) / 2.0 - 150.0); + sp150[0]->trans.x = (sp150[0]->trans.x >= 650.0) ? 650.0 : (sp150[0]->trans.x <= -950.0) ? -950.0 : sp150[0]->trans.x; + sp150[1]->trans.x = sp150[0]->trans.x + 300.0f; + if (sp140[0] >= 3 || sp140[1] >= 3) { + var_r26 = (sp140[0] >= 3) ? 0 : 1; + var_r25 = 1 - var_r26; + switch (sp140[var_r25]) { + case 4: + if (sp150[var_r26]->trans.x * (var_r26 == 0 ? 1 : -1) < sp150[var_r25]->trans.x * (var_r25 == 0 ? 1 : -1)) { + var_r26 = 1 - var_r26; + var_r25 = 1 - var_r25; + } + sp148[var_r26]->state = 3; + sp148[var_r25]->state = 4; + break; + case 1: + sp148[var_r26]->state = 5; + sp148[var_r25]->state = 6; + break; + case 3: + sp148[var_r26]->state = 12; + sp148[var_r25]->state = 12; + break; + case 2: + sp148[var_r26]->state = 10; + sp148[var_r25]->state = 11; + break; + case 0: + sp148[var_r26]->state = 13; + sp148[var_r25]->state = 14; + break; + } + sp148[0]->unk18 = sp148[1]->unk18 = 0; + } + } + /* fallthrough */ + case 1009: + if (gameState != 1008 && lbl_1_bss_40 == 0) { + break; + } + for (i = 0; i < 2; i++) { + playerObjLocal[i] = playerObj[i]; + playerData[i] = playerObj[i]->data; + } + switch (lbl_1_bss_18) { + case 0: + if (lbl_1_bss_40 == 0 && lbl_1_bss_18 == 0 && (playerObjLocal[0]->trans.x > -150.0f || playerObjLocal[1]->trans.x < 150.0f)) { + lbl_1_bss_18 = (-playerObjLocal[0]->trans.x < playerObjLocal[1]->trans.x ? 1 : 2); + Hu3DModelPosSet(gameObj->model[9], 0.0f, 100.0f, 0.0f); + Hu3DMotionTimeSet(gameObj->model[9], 0.0f); + Hu3DModelAttrReset(gameObj->model[9], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_78[4].unk00 < 3) { + lbl_1_bss_78[4].unk04[lbl_1_bss_78[4].unk00] = 0.0f; + lbl_1_bss_78[4].unk00++; + } + } + if (lbl_1_bss_18 == 0) { + break; + } + /* fallthrough */ + case 1: + case 2: + temp_r27 = &Hu3DData[object->model[MODEL_ID_GAME_KOOPA_KID]]; + temp_r27->rot.y += (lbl_1_bss_18 == 1 ? 18 : -18); + temp_r27->rot.z = (lbl_1_bss_18 == 1 ? -20 : 20); + temp_r27->pos.x += 5.130000000000001 * (lbl_1_bss_18 == 1 ? 1 : -1); + temp_r27->pos.y += 47.0; + temp_r27->pos.z += -20.0f; + if (temp_r27->pos.y > 1800.0f) { + lbl_1_bss_18 += 2; + } + break; + } + switch (lbl_1_bss_1C) { + case 0: + case 2: + lbl_1_data_2B8 -= (lbl_1_bss_18 >= 3 && playerData[0]->state < 16 && playerData[1]->state < 16); + if (lbl_1_data_2B8 != 0) { + break; + } + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[MODEL_ID_GAME_MUSHROOM], + (lbl_1_bss_1C == 0) ? 0.0 : (2.0 * ((rand8() % 256) / 255.0 - 0.5) * 400.0), 1500.0f, 0.0f); + lbl_1_bss_1C = 1; + /* fallthrough */ + case 1: + mushroomModel = &Hu3DData[object->model[MODEL_ID_GAME_MUSHROOM]]; + // descend mushroom + mushroomModel->pos.y -= 10.0f; + if (mushroomModel->pos.y <= 225.0f) { + float playerDistsToMushroom[] = { 100000000.0f, 100000000.0f }; + // make sure it doesn't fall through the ring + mushroomModel->pos.y = (mushroomModel->pos.y < 100.0f) ? 100.0f : mushroomModel->pos.y; + for (i = 0; i < 2; i++) { + if (fabs(playerObjLocal[i]->trans.x + (i == 0 ? 40 : -40) - mushroomModel->pos.x) < 180.0) { + playerDistsToMushroom[i] = fabs(playerObjLocal[i]->trans.x + (i == 0 ? 40 : -40) - mushroomModel->pos.x); + } + } + if (playerDistsToMushroom[0] != playerDistsToMushroom[1]) { + invinciblePlayerId = (playerDistsToMushroom[0] < playerDistsToMushroom[1]) ? 0 : 1; + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + lbl_1_bss_1C = 2; + lbl_1_data_2B8 = 10 * REFRESH_RATE; + playerData[invinciblePlayerId]->invinceTime = 5 * REFRESH_RATE; + playerData[invinciblePlayerId]->unk4C = 0; + if (lbl_1_bss_78[3].unk00 < 3) { + lbl_1_bss_78[3].unk04[lbl_1_bss_78[3].unk00] = 0.0f; + lbl_1_bss_78[3].unk00++; + } + invincibilitySeNo = HuAudFXPlay(MSM_SE_INVINCIBILITY); + } + } + if (playerData[0]->state >= 16 || playerData[1]->state >= 16 || lbl_1_bss_40 != 0) { + lbl_1_bss_1C = 3; + lbl_1_data_2B8 = 0; + } + if (lbl_1_bss_1C == 1) { + break; + } + /* fallthrough */ + case 3: + lbl_1_data_2B8++; + if (lbl_1_data_2B8 < REFRESH_RATE && lbl_1_data_2B8 % 2 == 0) { + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + } + break; + } + break; + } + switch (gameState) { + case 1009: + if (lbl_1_bss_40 == 0) { + if (lbl_1_bss_60 <= 30) { + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, (30 - lbl_1_bss_60) * 50 * 0.94, 0.0f); + Hu3DModelRotSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, 0.0f, lbl_1_bss_18 == 3 ? -20 : 20); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_KOOPA_KID], HU3D_ATTR_DISPOFF); + } + if (lbl_1_bss_60 == 30) { + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[0]); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); + } + if (lbl_1_bss_60 == 30) { + HuAudFXPlay(MSM_SE_KOOPA_KID_DROP); + } + if (lbl_1_bss_60 >= 30 && lbl_1_bss_60 <= 37) { + temp_f22 = 1.0 - (lbl_1_bss_60 - 30) / 7.0; + Hu3DModelRotSet(object->model[MODEL_ID_GAME_KOOPA_KID], 25.0 * (temp_f22 * 0.5 + temp_f22 * temp_f22 * 0.5), 0.0f, 0.0f); + } + } + else if (lbl_1_bss_18 == 0) { + Hu3DMotionSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], object->motion[0]); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); + } + break; + case 1010: + if (lbl_1_bss_40 == 0) { + if (lbl_1_bss_60 == 1) { + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[3]); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); + } + temp_r24 = &Hu3DData[object->model[MODEL_ID_GAME_KOOPA_KID]]; + temp_f20 = (playerObj[lbl_1_bss_44]->trans.x < 0.0f) ? -90 : 90; + temp_r24->rot.y = temp_f20 + 0.8 * (temp_r24->rot.y - temp_f20); + } + break; + } + var_r22 = lbl_1_data_33C; + { + float sp160[][6] = { { 3500.0f, 0.0f, 100.0f, 0.0f, -59.0f, 0.0f }, { 3200.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 2100.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, { 2000.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, + { 800.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, { 1800.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f } }; + + if (lbl_1_bss_44 != -1 && lbl_1_bss_40 == 0) { + sp160[2][1] = playerObj[lbl_1_bss_44]->trans.x; + } + if (lbl_1_data_33C == -1) { + lbl_1_data_33C = 0; + lbl_1_bss_24 = 1; + lbl_1_bss_28 = 1.0f; + } + if (lbl_1_data_33C == 0) { + lbl_1_data_33C = 1; + lbl_1_bss_24 = 1; + lbl_1_bss_28 = 0.5f; + } + if (gameState == 1010 && lbl_1_bss_44 != 2 && lbl_1_bss_60 >= 15 && lbl_1_data_33C == 1) { + lbl_1_data_33C = 2; + lbl_1_bss_24 = 0; + lbl_1_bss_28 = 0.0f; + } + if (var_r22 != lbl_1_data_33C && var_r22 != -1) { + lbl_1_data_340 = CZoom; + lbl_1_data_344 = Center.y; + lbl_1_bss_30 = Center.z; + lbl_1_data_348 = CRot.x; + lbl_1_bss_34 = CRot.y; + } + if (lbl_1_bss_28 <= 1.0f) { + if (lbl_1_bss_24 == 0) { + lbl_1_bss_28 = 1.0 - 0.95 * (1.0f - lbl_1_bss_28); + var_f31 = lbl_1_bss_28; + } + else { + lbl_1_bss_28 += 0.008333333333333333; + lbl_1_bss_28 = (lbl_1_bss_28 > 1.0f) ? 1.0f : lbl_1_bss_28; + var_f31 = 0.5 + -0.5 * cosd(180.0f * lbl_1_bss_28); + } + lbl_1_bss_28 = (lbl_1_bss_28 > 1.0f) ? 1.0f : lbl_1_bss_28; + CZoom = var_f31 * sp160[lbl_1_data_33C][0] + lbl_1_data_340 * (1.0f - var_f31); + Center.x = var_f31 * sp160[lbl_1_data_33C][1] + lbl_1_bss_2C * (1.0f - var_f31); + Center.y = var_f31 * sp160[lbl_1_data_33C][2] + lbl_1_data_344 * (1.0f - var_f31); + Center.z = var_f31 * sp160[lbl_1_data_33C][3] + lbl_1_bss_30 * (1.0f - var_f31); + CRot.x = var_f31 * sp160[lbl_1_data_33C][4] + lbl_1_data_348 * (1.0f - var_f31); + CRot.y = var_f31 * sp160[lbl_1_data_33C][5] + lbl_1_bss_34 * (1.0f - var_f31); + } + } + if (gameState == 1001) { + var_f21 = 0.0f; + temp_f25 = 0.0f; + if (lbl_1_data_28C.unk00 % 2 >= 0) { + lbl_1_data_28C.unk08 = lbl_1_data_28C.unk10; + lbl_1_data_28C.unk0C = lbl_1_data_28C.unk14; + do { + lbl_1_data_28C.unk10 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_28C.unk14 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_28C.unk10 = 0.0f; + temp_f29 = (lbl_1_data_28C.unk10 - lbl_1_data_28C.unk08) * (lbl_1_data_28C.unk10 - lbl_1_data_28C.unk08) + + (lbl_1_data_28C.unk14 - lbl_1_data_28C.unk0C) * (lbl_1_data_28C.unk14 - lbl_1_data_28C.unk0C); + } while (sqrtf(temp_f29) < 0.75); + } + var_f21 = lbl_1_data_28C.unk08; + temp_f25 = lbl_1_data_28C.unk0C; + var_f21 *= lbl_1_data_28C.unk04 * 2; + temp_f25 *= lbl_1_data_28C.unk04 * 2; + lbl_1_data_28C.unk00 = !lbl_1_data_28C.unk00; + lbl_1_data_28C.unk04 = (lbl_1_data_28C.unk04 > 24) ? 23 : (lbl_1_data_28C.unk04 - 1 > 0) ? (lbl_1_data_28C.unk04 - 1) : 0; + Center.x = 0.0f; + Center.y = 100.0f + temp_f25; + } + if (gameState >= 1008) { + for (i = 0; i < 2; i++) { + temp_r29 = &Hu3DData[playerObj[i]->model[MODEL_ID_PLAYER_PLAYER]]; + var_r21 = (sp158[i]->character != CHARACTER_BOWSER) ? sp158[i]->character : 8; + var_r20 = (temp_r29->unk_08 == playerObj[i]->motion[4]) ? 0 + : (temp_r29->unk_08 == playerObj[i]->motion[6]) ? 1 + : (temp_r29->unk_08 == playerObj[i]->motion[7]) ? 2 + : -1; + var_r19 = (temp_r29->unk_0C == playerObj[i]->motion[4]) ? 0 + : (temp_r29->unk_0C == playerObj[i]->motion[6]) ? 1 + : (temp_r29->unk_0C == playerObj[i]->motion[7]) ? 2 + : -1; + spA8 = (var_r20 == -1) ? 0.0f : lbl_1_data_1B4[var_r21][var_r20]; + spA4 = (var_r19 == -1) ? 0.0f : lbl_1_data_1B4[var_r21][var_r19]; + var_f19 = (temp_r29->unk_0C == -1) ? 0.0f : (temp_r29->unk_80 == 0.0f) ? 1.0f : (temp_r29->unk_7C / temp_r29->unk_80); + sp158[i]->unk48 = (i == 0 ? 1 : -1) * (spA8 * (1.0f - var_f19) + spA4 * var_f19); + playerObj[i]->trans.x += sp158[i]->unk48; + Hu3DModelPosSet(playerObj[i]->model[MODEL_ID_PLAYER_PLAYER], playerObj[i]->trans.x, playerObj[i]->trans.y, playerObj[i]->trans.z); + } + } +} + +static void WrestleMesMain(void) +{ + PlayerData *playerData[2]; + s16 unk; + s16 window; + s32 i; + + unk = 0; + for (i = 0; i < 2; i++) { + playerData[i] = playerObj[i]->data; + } + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, REFRESH_RATE); + HuWinComKeyReset(); + window = HuWinExCreateStyled(36.0f, 344.0f, 504, 96, 6, 0); + HuWinBGTPLvlSet(window, 0.8f); + HuWinMesSpeedSet(window, 1); + HuWinExAnimIn(window); + HuWinDisablePlayerSet(window, + 0xF & ((playerData[0]->padIdx != PAD_IDX_COM) ? ~(1 << playerData[0]->padIdx) : 0xF) + & ((playerData[1]->padIdx != PAD_IDX_COM) ? ~(1 << playerData[1]->padIdx) : 0xF)); + HuWinMesSet(window, MAKE_MESSID(48, 31)); + if ((playerData[0]->padIdx == PAD_IDX_COM || playerData[0]->character == CHARACTER_BOWSER) + && (playerData[1]->padIdx == PAD_IDX_COM || playerData[1]->character == CHARACTER_BOWSER)) { + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, VERSION_JP ? 48 : REFRESH_RATE); + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, VERSION_JP ? 90 : REFRESH_RATE); + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, VERSION_JP ? 72 : REFRESH_RATE); + } + HuWinMesWait(window); + HuWinExAnimOut(window); + HuWinExCleanup(window); + m457MesEndF = 0; + HuPrcEnd(); +} + +static void ShoveMesMain(void) +{ + float var_f31; + s16 temp_r31; + WindowData *temp_r30; + PlayerData *spC[2]; +#if VERSION_PAL + float var_f30; + double var_f29; + double var_f28; + float sp14[2]; + float spC_2[2]; + WindowData *var_r29; +#endif + s32 var_r28; + s16 sp8; + s32 var_r26; + s32 i; + + sp8 = 0; + for (i = 0; i < 2; i++) { + spC[i] = playerObj[i]->data; + } + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, REFRESH_RATE); + HuWinComKeyReset(); +#if VERSION_NTSC + temp_r31 = HuWinCreate(215.0f, 100.0f, 130, 37, 1); +#else + HuWinMesMaxSizeGet(1, sp14, MAKE_MESSID(48, 32)); + temp_r31 = HuWinCreate(-10000.0f, 100.0f, sp14[0], 0x25, 1); +#endif + HuSprColorSet(winData[temp_r31].group, 0, 0xFF, 0xFF, 0xCC); + HuWinBGTPLvlSet(temp_r31, 0.9f); + temp_r30 = &winData[temp_r31]; +#if VERSION_PAL + var_f29 = temp_r30->pos_x; +#endif + temp_r30->mess_color = 0; + temp_r30->mess_shadow_color = 9; + temp_r30->attr |= 0x80; + for (var_r28 = 15, var_f31 = 0.0f; var_r28 != 0; var_r28--, var_f31 += 2.0f / 30) { + HuWinScaleSet(temp_r31, 1.0f, 1.0 * (1.0f - (1.0f - var_f31) * (1.0f - var_f31))); +#if VERSION_NTSC + HuWinPosSet(temp_r31, 215.0f, 100.0 + 37.0 * (1.0f - (1.0f - var_f31) * (1.0f - var_f31)) / -4.0); +#else + HuWinPosSet(temp_r31, var_f29, 100.0 + 37.0 * (1.0f - (1.0f - var_f31) * (1.0f - var_f31)) / -4.0); +#endif + HuPrcVSleep(); + } + HuWinScaleSet(temp_r31, 1.0f, 1.0f); + HuWinMesSet(temp_r31, MAKE_MESSID(48, 32)); + HuPrcSleep(REFRESH_RATE); + HuWinExAnimOut(temp_r31); + HuWinExCleanup(temp_r31); +#if VERSION_PAL + temp_r31 = 0; +#endif + m457MesEndF = 0; +#if VERSION_PAL + while (gameState != 1008) { + HuPrcVSleep(); + } + HuWinMesMaxSizeGet(1, spC_2, MAKE_MESSID(48, 33)); + temp_r31 = HuWinCreate(-10000.0f, 100.0f, spC_2[0], spC_2[1], 1); + HuSprColorSet(winData[temp_r31].group, 0, 0xFF, 0xFF, 0xCC); + HuWinBGTPLvlSet(temp_r31, 0.9f); + var_r29 = &winData[temp_r31]; + var_f28 = var_r29->pos_x; + var_r29->mess_color = 0; + var_r29->mess_shadow_color = 9; + var_r29->attr |= 0x80; + for (var_r26 = 5, var_f30 = 0.0f; var_r26 != 0; var_r26--, var_f30 += 0.2f) { + HuWinScaleSet(temp_r31, 1.0f, (double)(1.0f - ((1.0f - var_f30) * (1.0f - var_f30)))); + HuWinPosSet(temp_r31, var_f28, 100.0 + (((double)spC_2[1] * (1.0f - ((1.0f - var_f30) * (1.0f - var_f30)))) / -4.0)); + HuPrcVSleep(); + } + HuWinScaleSet(temp_r31, 1.0f, 1.0f); + HuWinMesSet(temp_r31, MAKE_MESSID(48, 33)); + HuWinMesSpeedSet(temp_r31, 0); + HuPrcSleep(0x32); + HuWinExAnimOut(temp_r31); + HuWinExCleanup(temp_r31); + temp_r31 = 0; +#endif + HuPrcEnd(); +} + +static void M457Main(omObjData *object) +{ + PlayerData *playerData[2]; + float spC[2]; + s32 sp8; + s32 i; + + for (i = 0; i < 5; i++) { + s32 shoveSeIdTbl[] = { 0x7E1, 0x7E2, 0x7E3, 0x7E4, 0x7E5 }; + + if (lbl_1_bss_78[i].unk00 > 3) { + lbl_1_bss_78[i].unk00 = 3; + } + if (lbl_1_bss_78[i].unk00 > 0) { + sp8 = HuAudFXPlay(shoveSeIdTbl[i]); + lbl_1_bss_78[i].unk00--; + } + } + for (i = 0; i < 2; i++) { + playerData[i] = playerObj[i]->data; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = M457Exit; + } + switch (gameState) { + case 1000: + if (WipeStatGet() == 0) { + gameState++; + lbl_1_bss_60 = 0; + } + break; + case 1001: + lbl_1_bss_60++; + if (lbl_1_bss_60 == 60) { + gameState = (againstBrowserF ? 1002 : 1003); + lbl_1_bss_60 = 0; + } + break; + case 1002: + lbl_1_bss_60++; + if (lbl_1_bss_60 > (s32)(3.5 * REFRESH_RATE)) { + gameState++; + lbl_1_bss_60 = 0; + } + break; + case 1003: + lbl_1_bss_60++; + if (lbl_1_bss_60 == 60) { + gameState = (againstBrowserF ? 1004 : 1005); + lbl_1_bss_60 = 0; + } + break; + case 1004: + if (lbl_1_bss_60 == 0) { + HuPrcChildCreate(WrestleMesMain, 100, 0x2000, 0, HuPrcCurrentGet()); + m457MesEndF = 1; + lbl_1_bss_60++; + } + else if (m457MesEndF == 0) { + lbl_1_bss_60++; + if (playerData[0]->state == 0) { + gameState++; + lbl_1_bss_60 = 0; + } + } + break; + case 1005: + lbl_1_bss_60++; + if (lbl_1_bss_60 == (VERSION_NTSC ? 180 : 128)) { + gameState++; + lbl_1_bss_60 = 0; + } + break; + case 1006: + if (lbl_1_bss_60 == 0) { + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(48, 34)); + lbl_1_data_2B0 = HuWinCreate(-10000.0f, 400.0f, spC[0], spC[1], 1); + HuWinBGTPLvlSet(lbl_1_data_2B0, 0.0f); + HuWinMesSpeedSet(lbl_1_data_2B0, 0); + HuWinMesSet(lbl_1_data_2B0, MAKE_MESSID(48, 34)); + HuPrcChildCreate(ShoveMesMain, 100, 0x2000, 0, HuPrcCurrentGet()); + m457MesEndF = 1; + lbl_1_bss_60++; + } + else if (m457MesEndF == 0) { + lbl_1_bss_60++; + if (playerData[0]->state == 0) { + gameState++; + lbl_1_bss_60 = rand8() * (REFRESH_RATE / 2) % 5 + REFRESH_RATE; + } + } + else { + lbl_1_bss_60++; + } + break; + case 1007: + lbl_1_bss_60 -= 1; + if (lbl_1_bss_60 <= 0) { + gameState++; + lbl_1_bss_60 = 0; +#if VERSION_NTSC + HuAudFXPlay(MSM_SE_BOWSER_HOWL); +#endif + } + break; + case 1008: + lbl_1_bss_60++; + if (lbl_1_bss_44 != -1) { + gameState = 1009; + lbl_1_bss_60 = 0; + break; + } + if (lbl_1_data_2A6 == -1 && lbl_1_bss_60 >= 270 * REFRESH_RATE && playerData[0]->state < 16 && playerData[1]->state < 16) { + lbl_1_data_2A6 = MGSeqTimerCreate(30); + } + if (lbl_1_data_2A6 == -1) { + break; + } + if (playerData[0]->state < 16 && playerData[1]->state < 16) { + MGSeqParamSet(lbl_1_data_2A6, 1, (301 * REFRESH_RATE - 1 - lbl_1_bss_60) / REFRESH_RATE); + if (lbl_1_bss_60 > 300 * REFRESH_RATE) { + MGSeqParamSet(lbl_1_data_2A6, 2, -1); + lbl_1_data_2A6 = -1; + } + } + if (lbl_1_bss_60 > 300 * REFRESH_RATE && playerData[0]->state < 16 && playerData[1]->state < 16) { + gameState = 1009; + lbl_1_bss_60 = 0; + lbl_1_bss_40 = 1; + playerData[0]->state = playerData[1]->state = 17; + playerData[0]->unk18 = playerData[1]->unk18 = 0; + MGSeqFinishCreate(); + if (backgroundMusNo != -1) { + HuAudSeqFadeOut(backgroundMusNo, 100); + backgroundMusNo = -1; + } + } + break; + case 1009: + if (lbl_1_bss_60 == 1 && lbl_1_data_2A6 != -1) { + MGSeqParamSet(lbl_1_data_2A6, 2, -1); + lbl_1_data_2A6 = -1; + } + lbl_1_bss_60++; + if (lbl_1_bss_60 >= 2 * REFRESH_RATE) { + gameState++; + lbl_1_bss_60 = 0; + } + break; + case 1010: + lbl_1_bss_60++; + if (lbl_1_bss_60 == 15) { + if (lbl_1_bss_44 != 2) { + if (playerData[lbl_1_bss_44]->character != CHARACTER_BOWSER) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(3); + } + if (againstBrowserF) { + if (lbl_1_bss_44 == 0) { + _SetFlag(FLAG_ID_MAKE(1, 7)); + } + } + else { + GWPlayerCoinWinSet(playerData[lbl_1_bss_44]->player, 10); + } + } + else if (lbl_1_bss_44 == 2) { + HuAudSStreamPlay(4); + } + } + if ((VERSION_NTSC ? 225.0f : 190.0f) < lbl_1_bss_60) { + if (windSeNo != -1) { + HuAudFXStop(windSeNo); + windSeNo = -1; + } + lbl_1_data_2A4 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = M457Exit; + } + break; + } +} + +static void M457GameSetup(omObjData *object) +{ + s32 i; + + for (i = 0; i < 2; i++) { + PlayerData *playerData[2]; + playerData[i] = playerObj[i]->data; + } + object->model[MODEL_ID_GAME_KOOPA_KID] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 14)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); + object->model[MODEL_ID_GAME_WAR_FAN] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 38)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_WAR_FAN], HU3D_MOTATTR_LOOP); + Hu3DModelHookSet(object->model[MODEL_ID_GAME_KOOPA_KID], "g007m0-itemhook_r", object->model[MODEL_ID_GAME_WAR_FAN]); + Hu3DModelPosSet(object->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(object->model[MODEL_ID_GAME_KOOPA_KID], 15.0f, 0.0f, 0.0f); + object->motion[0] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 39)); + object->motion[1] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 40)); + object->motion[2] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 41)); + object->motion[3] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 42)); + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[0]); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_WAR_FAN], 2); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_KOOPA_KID], 2); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[MODEL_ID_GAME_WAR_FAN]); + Hu3DModelShadowSet(object->model[MODEL_ID_GAME_KOOPA_KID]); + object->model[MODEL_ID_GAME_SKY] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 16)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_SKY], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[MODEL_ID_GAME_SKY], 0.1f); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_SKY], 1); + object->model[MODEL_ID_GAME_RING] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 17)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_RING], HU3D_MOTATTR_LOOP); + Hu3DModelShadowMapSet(object->model[MODEL_ID_GAME_RING]); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_RING], 1); + Hu3DModelScaleSet(object->model[MODEL_ID_GAME_RING], 1.0f, 1.0f, 1.0f); + object->model[MODEL_ID_GAME_MUSHROOM] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 21)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_MUSHROOM], 2); + object->model[MODEL_ID_GAME_INVINCE_SHINING] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 19)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_INVINCE_SHINING], 2); + object->model[MODEL_ID_GAME_INVINCE_SPARKS] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 20)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_INVINCE_SPARKS], 4); + for (i = 0; i < 3; i++) { + object->model[i + 7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 18)); + Hu3DModelLayerSet(object->model[i + 7], 4); + Hu3DModelAttrSet(object->model[i + 7], HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 16; i++) { + s32 sp10[] = { 106, 469 }; + s32 sp8[] = { 78, 78 }; + s32 sp60[] = { 0, 0, -33, -9, 15, 39, 63, -68, 0, 0, -33, -9, 15, 39, 63, -68 }; + s32 sp20[] = { 0, 0, -1, -1, -1, -1, -1, -2, 0, 0, -1, -1, -1, -1, -1, -2 }; + + if (sprDataNumTbl[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 0)) { + PlayerData *player = playerObj[i == 7 ? 0 : 1]->data; + sprIdTbl[i] + = espEntry((player->character == CHARACTER_BOWSER) ? DATA_MAKE_NUM(DATADIR_M457, 26) : (sprDataNumTbl[i] + player->character), 0, 0); + } + else { + sprIdTbl[i] = espEntry(sprDataNumTbl[i], 0, 0); + } + espDrawNoSet(sprIdTbl[i], 0); + espDispOff(sprIdTbl[i]); + espAttrSet(sprIdTbl[i], HUSPR_ATTR_NOANIM); + espBankSet(sprIdTbl[i], 0); + espPriSet(sprIdTbl[i], 128 - i); + espPosSet(sprIdTbl[i], sp60[i] + sp10[i < 8 ? 0 : 1], sp20[i] + sp8[i < 8 ? 0 : 1]); + if ((i >= 8 ? i - 8 : i) != 0) { + (void)1; // Required to match. + } + else { + espTPLvlSet(sprIdTbl[i], 0.5f); + espColorSet(sprIdTbl[i], 0, 0, 0); + } + } + for (i = 16; i < 23; i++) { + s32 temp_r28 = i - 16; + s32 spFC[23] = { 288, 288 }; + s32 spA0[23] = { 240, 240 }; + + sprIdTbl[i] = espEntry(sprDataNumTbl[i], 0, 0); + espDrawNoSet(sprIdTbl[i], 0); + espAttrSet(sprIdTbl[i], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(sprIdTbl[i], 0); + espPriSet(sprIdTbl[i], 128 - i); + espPosSet(sprIdTbl[i], spFC[temp_r28], spA0[temp_r28]); + espTPLvlSet(sprIdTbl[i], 1.0f); + } + object->func = M457GameExec; +} + +static void M457PlayerSetup(omObjData *object) +{ + s32 opponentPlayerGroup; + PlayerData *playerData; + PlayerData *opponentData; + s32 i; + + playerData = object->data; + opponentData = playerObj[1 - object->work[0]]->data; + memset(playerData, 0, sizeof(*playerData)); + playerData->group = object->work[0]; + playerData->player = (GWPlayerCfg[0].group == playerData->group) ? 0 + : (GWPlayerCfg[1].group == playerData->group) ? 1 + : (GWPlayerCfg[2].group == playerData->group) ? 2 + : (GWPlayerCfg[3].group == playerData->group) ? 3 + : 4; + opponentPlayerGroup = (GWPlayerCfg[0].group == 1 - playerData->group) ? 0 + : (GWPlayerCfg[1].group == 1 - playerData->group) ? 1 + : (GWPlayerCfg[2].group == 1 - playerData->group) ? 2 + : (GWPlayerCfg[3].group == 1 - playerData->group) ? 3 + : 4; + if (playerData->player == 4) { + OSReport("m457:wrong player group\n"); + playerData->player = playerData->group; + } + if (playerData->group == 1 && againstBrowserF) { + playerData->character = -1; + playerData->padIdx = PAD_IDX_COM; + playerData->player = -1; + playerData->diff = 1; + } + else { + playerData->character = GWPlayerCfg[playerData->player].character; + playerData->padIdx = (playerData->character == CHARACTER_BOWSER || GWPlayerCfg[playerData->player].iscom) + ? PAD_IDX_COM + : GWPlayerCfg[playerData->player].pad_idx; + playerData->diff = (playerData->padIdx != PAD_IDX_COM) ? 0 : GWPlayerCfg[playerData->player].diff; + } + playerData->state = 0; + playerData->stamina = 100; + playerData->unk34 = 0; + playerData->prevTrig = -1; + playerData->unk2C = -1; + playerData->unk3C = 10000; + playerData->unk40 = 1; + playerData->unk44 = -1; + if (playerData->character != CHARACTER_BOWSER) { + object->model[MODEL_ID_PLAYER_PLAYER] = CharModelCreate(playerData->character, 1); + } + else { + object->model[MODEL_ID_PLAYER_PLAYER] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 7)); + } + omSetTra(object, 0.0f, playerData->group == 0 ? 0 : 300, 0.0f); + if (playerData->character != CHARACTER_BOWSER) { + omSetSca(object, 2.5f, 2.5f, 2.5f); + } + else { + omSetSca(object, 2.0f, 2.0f, 2.0f); + } + for (i = 0; i < 12; i++) { + if (playerData->character != CHARACTER_BOWSER) { + object->motion[i] = CharModelMotionCreate(playerData->character, lbl_1_data_B8[i] + (lbl_1_data_E8[i] != 0 ? playerData->character : 0)); + } + else if (lbl_1_data_118[i] != 0) { + object->motion[i] = Hu3DJointMotionFile(object->model[MODEL_ID_PLAYER_PLAYER], lbl_1_data_118[i]); + } + } + Hu3DMotionSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[playerData->unk40]); + Hu3DMotionTimeSet(object->model[MODEL_ID_PLAYER_PLAYER], 10.0f); + Hu3DModelAttrReset(object->model[MODEL_ID_PLAYER_PLAYER], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(object->model[MODEL_ID_PLAYER_PLAYER]); + Hu3DModelAttrSet(object->model[MODEL_ID_PLAYER_PLAYER], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_PLAYER_PLAYER], 3); + CharModelLayerSetAll2(4); + object->rot.y = playerData->group * 180 + 90; + object->trans.x = (playerData->group == 0 ? -1 : 1) * 300; + object->func = M457PlayerExec; +} + +static void M457Setup(omObjData *object) +{ + gameState = 1000; + lbl_1_bss_60 = 0; + lbl_1_bss_54 = 0; + lbl_1_bss_50 = 0; + if (backgroundMusNo == -1) { + backgroundMusNo = HuAudSeqPlay(MSM_MUS_BACKGROUND); + } + windSeNo = HuAudFXPlay(MSM_SE_WIND); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = M457Main; +} + +void ObjectSetup(void) +{ + omObjData *object; + s32 i; + + OSReport("******* M457 ObjectSetup *********\n"); + objman = omInitObjMan(600, 0x2000); + omGameSysInit(objman); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 3200.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec pos = { 0.0f, 0.0f, 0.0f }; + Vec destination = { 0.25f, -0.75f, -0.45f }; + GXColor color = { 0xFF, 0xFF, 0xFF, 0xFF }; + + lightId = Hu3DGLightCreateV(&pos, &destination, &color); + } + Hu3DGLightStaticSet(lightId, 1); + Hu3DGLightInfinitytSet(lightId); + { + Vec camPos; + Vec camUp; + Vec camTarget; + + camPos.x = 0.0f; + camPos.y = 10000.0f; + camPos.z = 0.0f; + camUp.x = 0.0f; + camUp.y = 1.0f; + camUp.z = 0.0f; + camTarget.x = 0.0f; + camTarget.y = 0.0f; + camTarget.z = 0.5f; + Hu3DShadowCreate(12.0f, 9000.0f, 10010.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&camPos, &camUp, &camTarget); + } + Hu3DShadowSizeSet(224); + lbl_1_data_2A4 = -1; + lbl_1_bss_44 = -1; + againstBrowserF = _CheckFlag(FLAG_ID_MAKE(1, 0)) != 0; + HuWinInit(1); + gameObj = omAddObjEx(objman, 101, 10, 4, 1, M457GameSetup); + for (i = 0; i < 2; i++) { + object = playerObj[i] = omAddObjEx(objman, 100, 1, 12, 0, M457PlayerSetup); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(PlayerData), MEMORY_DEFAULT_NUM); + object->work[0] = i; + } + omViewObj = omAddObjEx(objman, 0x7FDA, 0, 0, -1, omOutView); + mainObj = omAddObjEx(objman, 103, 0, 0, -1, M457Setup); +} + +static void M457Exit(omObjData *object) +{ + PlayerData *playerData; + s32 i; + + if (WipeStatGet() == 0) { + for (i = 0; i < 2; i++) { + playerData = playerObj[i]->data; + } + if (lbl_1_data_2A4 >= 0) { + MGSeqKill(lbl_1_data_2A4); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m458Dll/main.c b/src/REL/m458Dll/main.c new file mode 100644 index 00000000..3b261cd0 --- /dev/null +++ b/src/REL/m458Dll/main.c @@ -0,0 +1,1531 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "game/frand.h" + +extern s32 rand8(void); + +typedef struct UnkCameraStruct { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; +} UnkCameraStruct; /* size = 0x18 */ + +typedef struct UnkBssCCStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ float unk_04[3]; +} UnkBssCCStruct; /* size = 0x10 */ + +typedef struct UnkBss28CStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ s32 unk_0C; +} UnkBss28CStruct; /* size = 0x10 */ + +typedef struct UnkData114Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; +} UnkData114Struct; /* size = 0x18 */ + +typedef struct M458DllWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + s32 unk_18; + s32 unk_1C; + s32 unk_20; + s32 unk_24; + float unk_28; + float unk_2C; + char unk30[4]; + float unk_34; + s32 unk_38; + s32 unk_3C; + s32 unk_40; +} M458DllWork; /* size = 0x44 */ + +s16 fn_1_4BE8(); +void fn_1_6D9C(omObjData *arg0); + +s32 lbl_1_data_0[2] = { 0x570025, 0x570026 }; +s32 lbl_1_data_8[2] = { 0, 0 }; +s32 lbl_1_data_10[0xA] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2F), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A), + 0x570000, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), +}; +u32 lbl_1_data_38[0xA] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; +u32 lbl_1_data_60[0xA] = { 0x30008, 0, 0, 0x3000A, 0, 0, 0x57002A, 0x570028, 0x570029, 0x570027 }; +u8 lbl_1_data_88[0xA] = { 0, 0, 0, 1, 1, 1, 1, 0, 1, 1 }; +u8 lbl_1_data_92[0xA] = { 0, 0, 0, 1, 1, 1, 1, 0, 1, 1 }; +s32 lbl_1_data_9C[0xA] = { 8, 8, 8, 0, 0, 0, 8, 8, 8, 8 }; +s32 lbl_1_data_C4[0xA] = { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }; +s32 lbl_1_data_EC[0xA] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 }; +UnkData114Struct lbl_1_data_114 = { 0, 0, 0.0f, 0.0f, 0.0f, 0.0f }; +s16 lbl_1_data_12C = -1; +s16 lbl_1_data_12E = -1; +s32 lbl_1_data_130 = -1; +s32 lbl_1_data_134 = -1; +s16 lbl_1_data_138[0x12] = { + -1, + 0, + -0x3D4C, + 0, + 0, + 0, + 0x4403, + 0x4000, + 0x4334, + 0, + 0x42B4, + 0, + 0, + 0, + 0x4403, + 0x4000, + 0x4334, + 0, +}; +s32 lbl_1_data_15C = -1; + +UnkBss28CStruct lbl_1_bss_28C[9]; +UnkBssCCStruct lbl_1_bss_CC[0x1C]; +omObjData *lbl_1_bss_C8; +omObjData *lbl_1_bss_C4; +omObjData *lbl_1_bss_C0; +omObjData *lbl_1_bss_BC; +omObjData *lbl_1_bss_B8; +s32 lbl_1_bss_B4; +s32 lbl_1_bss_B0; +s32 lbl_1_bss_AC; +s32 lbl_1_bss_A8; +s32 lbl_1_bss_A4; +Process *lbl_1_bss_A0; +s32 lbl_1_bss_9C; +s32 lbl_1_bss_98; +s32 lbl_1_bss_94; +s32 lbl_1_bss_90; +s32 lbl_1_bss_8C; +HsfanimStruct00 lbl_1_bss_3C; +float lbl_1_bss_38; +float lbl_1_bss_34; +float lbl_1_bss_30; +float lbl_1_bss_2C; +float lbl_1_bss_28; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s16 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void fn_1_A0(void) +{ + if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { + Center.x = lbl_1_bss_BC->trans.x; + Center.y = lbl_1_bss_BC->trans.y; + Center.z = lbl_1_bss_BC->trans.z; + } + Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); + Center.y += (30.0 * ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0)); + CZoom += 25.0 * (((HuPadBtn[0] & PAD_BUTTON_X) != 0) - ((HuPadBtn[0] & PAD_BUTTON_Y) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; + print8(0x40, 0x188, 1.0f, "%f,%f,%f", Center.x, Center.y, Center.z); + print8(0x40, 0x198, 1.0f, "%f,%f,%f", CRot.x, CRot.y, CRot.z); + print8(0x40, 0x1A8, 1.0f, "%f", CZoom); +} + +s32 lbl_1_data_16C = -1; + +void fn_1_4C8(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + + M458DllWork *var_r31; + ModelData *var_r29; + s16 var_r28; + M458DllWork *var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + ModelData *var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 var_r18; + s32 var_r17; + + Mtx sp1E0; + float sp1A8[2]; + float sp1A0[2]; + s32 spD0; + s32 spCC; + s32 spC8; + s32 spC4; + s32 spC0; + float spBC; + s32 spB8; + ModelData *spB4; + float spB0; + float spAC; + s32 spA8; + s32 spA4; + + var_r31 = object->data; + var_r27 = (&lbl_1_bss_BC)[1 - object->work[0]]->data; + var_f23 = 0.0f; + var_f22 = 0.0f; + var_f28 = 0.0f; + var_r22 = 0; + var_r28 = -1; + var_r31->unk_2C = var_r31->unk_34 = 0.0f; + if ((lbl_1_bss_B0 == (var_r31->unk_00 == 0 ? 0x3F1 : 0x3F2)) && (var_r31->unk_18 == 3) && (var_r31->unk_1C >= 0x168)) { + if (var_r31->unk_1C == 0x168) { + var_r31->unk_14 = rand8() % 15; + } + if (var_r31->unk_0C != -1) { + var_r22 = (HuPadBtnDown[var_r31->unk_0C] & 0x100) != 0 ? 1 : 0; + } + else { + var_r31->unk_14 += var_r31->unk_14 < 0x10000; + if (var_r31->unk_14 == 0x1E) { + var_r22 = 1; + } + } + } + if (lbl_1_bss_B0 == (var_r31->unk_00 == 0 ? 0x3ED : 0x3EF)) { + var_r25 = 0; + var_r24 = 0; + if (var_r31->unk_0C != -1) { + var_r25 = HuPadStkX[var_r31->unk_0C] < -0x14 ? -1 : (HuPadStkX[var_r31->unk_0C] > 0x14 ? 1 : 0); + var_r24 = -HuPadStkY[var_r31->unk_0C] < -0x14 ? -1 : (-HuPadStkY[var_r31->unk_0C] > 0x14 ? 1 : 0); + var_r22 = (HuPadBtnDown[var_r31->unk_0C] & 0x100) != 0 ? 1 : 0; + } + else { + var_r31->unk_14 += var_r31->unk_14 < 0x10000; + if (var_r31->unk_14 == 0x1E) { + lbl_1_bss_94 = rand8() % (var_r31->unk_00 + 2); + lbl_1_bss_90 = rand8() % (var_r31->unk_00 + 2); + } + if (fabs((500.0 * var_r31->unk_3C) - object->trans.x) < 10.0) { + var_r25 = lbl_1_bss_94 > 0 ? (var_r31->unk_00 == 0 ? (((rand8() % 2) * 2) - 1) : -1) : 0; + lbl_1_bss_94 -= lbl_1_bss_94 > 0; + } + if (fabs((500.0 * var_r31->unk_40) - object->trans.z) < 10.0) { + var_r24 = lbl_1_bss_90 > 0 ? (var_r31->unk_00 == 0 ? (((rand8() % 2) * 2) - 1) : -1) : 0; + lbl_1_bss_90 -= lbl_1_bss_90 > 0; + } + if ((var_r31->unk_14 >= 0x2D) && ((var_r31->unk_14 % 30) == 0xF) && (lbl_1_bss_94 == 0) && (lbl_1_bss_90 == 0)) { + var_r22 = 1; + } + } + if (lbl_1_bss_B4 >= 0x32) { + var_r25 = var_r24 = 0; + } + if (var_r31->unk_00 == 1) { + spC4 = 0; + spC0 = 0; + if (fabs((500.0 * var_r31->unk_3C) - object->trans.x) < 10.0) { + var_r17 = spD0 = object->trans.x < -250.0 ? -1 : (object->trans.x > 250.0 ? 1 : 0); + } + else { + var_r17 = (object->trans.x < 0.0f ? -1 : 0); + spD0 = var_r17 + 1; + } + if (fabs((500.0 * var_r31->unk_40) - object->trans.z) < 10.0) { + spCC = spC8 = object->trans.z < -250.0 ? -1 : (object->trans.z > 250.0 ? 1 : 0); + } + else { + spCC = object->trans.z < 0.0f ? -1 : 0; + spC8 = spCC + 1; + } + for (var_r21 = var_r17; var_r21 <= spD0; var_r21++) { + for (var_r20 = spCC; var_r20 <= spC8; var_r20++) { + if (var_r27->unk_38 == 1 + var_r21 + var_r25 + (1 + var_r20 + var_r24) * 3) { + var_r25 = var_r24 = 0; + } + if (var_r27->unk_38 == 1 + var_r21 + var_r25 + (var_r20 + 1) * 3) { + var_r25 = 0; + } + if (var_r27->unk_38 == 1 + var_r21 + (1 + var_r20 + var_r24) * 3) { + var_r24 = 0; + } + } + } + } + if ((var_r25 * ((500.0 * var_r31->unk_3C) - object->trans.x)) < 0.0) { + var_r31->unk_3C = var_r31->unk_3C + var_r25; + } + if ((fabs((500.0 * var_r31->unk_3C) - object->trans.x) < 10.0) && (var_r25 != 0) && ((var_r31->unk_3C + var_r25) >= -1) + && ((var_r31->unk_3C + var_r25) <= 1)) { + var_r31->unk_3C = var_r31->unk_3C + var_r25; + } + var_f23 = (((500.0 * var_r31->unk_3C) - object->trans.x) / 0.25) / 1.75; + if ((var_r24 * ((500.0 * var_r31->unk_40) - object->trans.z)) < 0.0) { + var_r31->unk_40 = var_r31->unk_40 + var_r24; + } + if ((fabs((500.0 * var_r31->unk_40) - object->trans.z) < 10.0) && (var_r24 != 0) && ((var_r31->unk_40 + var_r24) >= -1) + && ((var_r31->unk_40 + var_r24) <= 1)) { + var_r31->unk_40 = var_r31->unk_40 + var_r24; + } + var_f22 = (((500.0 * var_r31->unk_40) - object->trans.z) / -0.25) / 1.75; + } + if (((var_r31->unk_00 != 1) || (var_r31->unk_08 != -1)) && (var_r31->unk_18 == 0)) { + if ((lbl_1_bss_B0 > (var_r31->unk_00 == 0 ? 0x3E9 : 0x3EE)) && (lbl_1_bss_B0 < 0x3F3)) { + var_f31 = 0.25 * var_f23; + var_f30 = 0.25 * -var_f22; + { + Vec sp1B0 = { 0.0f, 0.0f, 0.0f }; + sp1B0.x = var_f31; + sp1B0.z = var_f30; + MTXRotRad(sp1E0, 0x79, 0.017453292f * CRot.y); + MTXMultVec(sp1E0, &sp1B0, &sp1B0); + var_f31 = sp1B0.x; + var_f30 = sp1B0.z; + } + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 >= 0.5f) { + if (var_f28 < 10.0f) { + var_r31->unk_2C = var_f31; + var_r31->unk_34 += var_f30; + } + else { + var_f31 = var_f31 / var_f28; + var_f30 = var_f30 / var_f28; + var_f28 = 10.0f; + var_r31->unk_2C = var_f31 * var_f28; + var_r31->unk_34 = var_f30 * var_f28; + } + var_r31->unk_28 = var_f28; + object->rot.y = atan2d(var_r31->unk_2C, var_r31->unk_34); + if (var_r31->unk_28 >= 8.0f) { + var_r28 = 2; + } + else { + var_r28 = 2; + } + } + else { + var_r28 = 0; + } + } + } + object->trans.x += 1.75f * var_r31->unk_2C; + object->trans.z += 1.75f * var_r31->unk_34; + switch (lbl_1_bss_B0) { + case 0x3E9: + case 0x3EE: + if (lbl_1_bss_B0 == (var_r31->unk_00 == 0 ? 0x3E9 : 0x3EE)) { + if (lbl_1_bss_B4 == 0) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if (var_r31->unk_00 == 0) { + object->trans.x = 0.0f; + object->trans.z = 0.0f; + } + else if (var_r31->unk_08 != -1) { + var_r31->unk_3C = -2; + for (var_r18 = 2; var_r18 >= 0; var_r18--) { + for (var_r19 = 2; var_r19 >= 0; var_r19--) { + if (var_r27->unk_38 != (var_r18 + (var_r19 * 3))) { + var_r31->unk_3C = var_r19 - 1; + var_r31->unk_40 = var_r18 - 1; + object->trans.x = 500.0 * var_r31->unk_3C; + object->trans.z = 500.0 * var_r31->unk_40; + break; + } + } + if (var_r31->unk_3C != -2) { + break; + } + } + } + else { + do { + var_r31->unk_38 = rand8() % 9; + } while (var_r27->unk_38 == var_r31->unk_38); + var_r31->unk_3C = (var_r31->unk_38 % 3) - 1; + var_r31->unk_40 = (var_r31->unk_38 / 3) - 1; + object->trans.x = 500.0 * var_r31->unk_3C; + object->trans.z = 500.0 * var_r31->unk_40; + } + } + if (lbl_1_bss_B4 <= 0x1E) { + if (var_r31->unk_08 == -1) { + Hu3DMotionTimeSet(object->model[0], 138.0f); + } + object->trans.y = 2400.0 * (1.0 - (lbl_1_bss_B4 / 30.0)); + } + if ((var_r31->unk_08 != -1) && (lbl_1_bss_B4 == 0x1E)) { + var_r28 = 4; + } + if (lbl_1_bss_B4 == ((var_r31->unk_08 != -1 ? 0xA : 0x3C) + 0x1E)) { + var_r28 = 0; + } + if (lbl_1_bss_B4 == 0x1E) { + lbl_1_data_114.unk_04 += 0x32; + } + if (lbl_1_bss_B4 == 0x1E) { + HuAudFXPlay(0x33D); + } + } + break; + case 0x3EB: + if ((lbl_1_bss_B4 == 0) && (var_r31->unk_00 == 0)) { + var_r31->unk_18 = 1; + var_r31->unk_1C = 0; + } + break; + case 0x3ED: + case 0x3EF: + if (lbl_1_bss_B0 == (var_r31->unk_00 == 0 ? 0x3ED : 0x3EF)) { + if (lbl_1_bss_B4 == 0) { + lbl_1_bss_0 = 0x12C; + lbl_1_data_12E = MGSeqCreate(1, 0xA, -1, -1); + HuWinMesMaxSizeGet(1, sp1A8, 0x280019); + lbl_1_bss_C = HuWinCreate(-10000.0f, 400.0f, sp1A8[0], sp1A8[1], 1); + HuWinBGTPLvlSet(lbl_1_bss_C, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C, 0); + HuWinMesSet(lbl_1_bss_C, 0x280019); + } + if (lbl_1_data_12E != -1) { + MGSeqParamSet(lbl_1_data_12E, 1, (lbl_1_bss_0 + 0x3A) / 60); + } + lbl_1_bss_0--; + if ((var_r22 != 0) || (lbl_1_bss_0 == 0)) { + lbl_1_bss_B4 = 0x32; + MGSeqKill(lbl_1_data_12E); + lbl_1_data_12E = -1; + HuWinExCleanup(lbl_1_bss_C); + } + if (lbl_1_bss_B4 == 0x32) { + if (fabs((500.0 * var_r31->unk_3C) - object->trans.x) < 1.0) { + if (fabs((500.0 * var_r31->unk_40) - object->trans.z) < 1.0) { + lbl_1_bss_B4 = 0x3C; + object->rot.y = 0.0f; + var_r31->unk_38 = 1 + var_r31->unk_3C + ((var_r31->unk_40 + 1) * 3); + } + } + } + } + break; + case 0x3F1: + case 0x3F2: + if ((lbl_1_bss_B0 == (var_r31->unk_00 == 0 ? 0x3F1 : 0x3F2)) && (lbl_1_bss_B4 == 0) && (var_r31->unk_08 != -1)) { + HuWinMesMaxSizeGet(1, sp1A0, 0x300025); + lbl_1_bss_C = HuWinCreate(-10000.0f, 400.0f, sp1A0[0], sp1A0[1], 1); + HuWinBGTPLvlSet(lbl_1_bss_C, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C, 0); + HuWinMesSet(lbl_1_bss_C, 0x300025); + } + break; + case 0x3F3: + if (lbl_1_bss_98 != var_r31->unk_00) { + if (lbl_1_bss_B4 == 1) { + var_r28 = 7; + } + if (lbl_1_bss_B4 == 0x78) { + Hu3DModelAttrReset(lbl_1_bss_B8->model[var_r31->unk_38 + 4], HU3D_MOTATTR_PAUSE); + if (lbl_1_bss_CC[0].unk_00 < 3) { + lbl_1_bss_CC[0].unk_04[lbl_1_bss_CC[0].unk_00] = 0.0f; + lbl_1_bss_CC[0].unk_00++; + } + } + if (lbl_1_bss_B4 == 0x99) { + Hu3DModelAttrSet(lbl_1_bss_B8->model[var_r31->unk_38 + 4], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_B4 == 0xB7) { + Hu3DModelAttrReset(lbl_1_bss_B8->model[var_r31->unk_38 + 4], HU3D_MOTATTR_PAUSE); + } + if ((lbl_1_bss_B4 == 0xBC) && (lbl_1_bss_CC[1].unk_00 < 3)) { + lbl_1_bss_CC[1].unk_04[lbl_1_bss_CC[1].unk_00] = 0.0f; + lbl_1_bss_CC[1].unk_00++; + } + if (lbl_1_bss_B4 == 0xD2) { + var_r28 = 8; + espAttrReset(lbl_1_data_8[1], HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_CC[(var_r31->unk_08 != -1 ? var_r31->unk_08 : 8) + 2].unk_00 < 3) { + lbl_1_bss_CC[(var_r31->unk_08 != -1 ? var_r31->unk_08 : 8) + 2] + .unk_04[lbl_1_bss_CC[(var_r31->unk_08 != -1 ? var_r31->unk_08 : 8) + 2].unk_00] + = 0.0f; + lbl_1_bss_CC[(var_r31->unk_08 != -1 ? var_r31->unk_08 : 8) + 2].unk_00++; + } + if (lbl_1_data_130 != -1) { + HuAudSeqFadeOut(lbl_1_data_130, 0x64); + lbl_1_data_130 = -1; + } + } + if ((lbl_1_bss_B4 >= 0xD2) && (lbl_1_bss_B4 <= 0xD6)) { + s32 sp1BC[9] = { 0, -12, -36, 0, 0, -12, -36, -48, 0 }; + spBC = (lbl_1_bss_B4 - 0xD2) / 4.0; + var_f26 = (lbl_1_bss_B4 - 0xD2) / 4.0; + var_f26 = var_f26 > 1.0f ? 1.0f : var_f26; + espPosSet(lbl_1_data_8[1], 290.0f, (64.0f * (1.0f - spBC)) + (sp1BC[(var_r31->unk_08 != -1 ? var_r31->unk_08 : 8)] + 0x8C)); + espScaleSet(lbl_1_data_8[1], var_f26, var_f26); + } + if (lbl_1_bss_B4 == 0x10E) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_data_8[1], HUSPR_ATTR_DISPOFF); + } + if (lbl_1_bss_B4 == 0x122) { + spB8 = HuAudFXPlay((var_r31->unk_08 != -1 ? var_r31->unk_08 : 8) + 0x800); + HuAudFXFadeOut(spB8, 0x9C4); + } + if (lbl_1_bss_B4 >= 0x13B) { + object->trans.y -= 77.0f; + } + } + else if ((lbl_1_bss_B4 == 0x3C) && (lbl_1_data_138[0] != -1)) { + Hu3DParManKill(lbl_1_data_138[0]); + lbl_1_data_138[0] = -1; + } + break; + case 0x3F4: + if (var_r31->unk_00 == lbl_1_bss_98) { + if ((lbl_1_bss_B4 == 1) && (var_r31->unk_08 == -1)) { + HuAudFXPlay(0x3A); + } + var_r28 = 9; + } + break; + } + switch (var_r31->unk_18) { + case 0: + var_r31->unk_1C++; + break; + case 1: + var_r31->unk_1C++; + if (var_r31->unk_1C <= 0x3C) { + var_r28 = 5; + object->rot.y = -180.0 * (var_r31->unk_1C / 60.0); + } + else { + Hu3DMotionTimeSet(object->model[0], 120.0f); + var_r28 = 0; + var_r31->unk_18 = 0; + var_r31->unk_1C = 0; + } + break; + case 2: + var_r31->unk_1C++; + break; + case 3: + if (var_r31->unk_1C == 0) { + lbl_1_data_15C = 6; + } + if (var_r31->unk_1C < 0x168) { + var_r23 = &Hu3DData[lbl_1_bss_B8->model[3]]; + if (var_r31->unk_1C == 0) { + Hu3DModelAttrReset(lbl_1_bss_B8->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_B8->model[3], object->trans.x, 625.0f + object->trans.y, object->trans.z); + Hu3DModelScaleSet(lbl_1_bss_B8->model[3], 0.1f, 0.1f, 0.1f); + Hu3DModelTPLvlSet(lbl_1_bss_B8->model[3], 1.0f); + lbl_1_bss_1C = 0; + HuAudFXPlay(0x7F4); + lbl_1_data_16C = HuAudFXPlay(0x7F3); + } + var_r23->rot.y = lbl_1_bss_1C % 360; + lbl_1_bss_1C += 0x19; + if (var_r31->unk_1C < 0xB4) { + var_f20 = 0.0f; + var_f21 = 1.0f; + } + else { + var_f20 = 1.0f; + var_f21 = 0.5f; + } + var_r23->scale.x = var_f20 + (var_f21 * sind((float)(var_r31->unk_1C % 180))); + var_r23->scale.y = var_r23->scale.z = var_r23->scale.x; + if (var_r31->unk_1C < 0xB4) { + var_r31->unk_1C += 6; + } + else { + var_r31->unk_1C = var_r31->unk_1C + 0x12; + } + if (var_r31->unk_1C >= 0x168) { + var_r31->unk_1C = 0x168; + Hu3DModelRotSet(lbl_1_bss_B8->model[3], 0.0f, 0.0f, 0.0f); + } + } + else { + spB4 = &Hu3DData[lbl_1_bss_B8->model[3]]; + var_r31->unk_1C = var_r31->unk_1C + 4; + if (var_r31->unk_1C > 0x2D0) { + var_r31->unk_1C -= 0x168; + } + spB4->pos.y += (0.20000000298023224 * sind((var_r31->unk_1C - 0x168))); + if (var_r22 != 0) { + lbl_1_bss_B4 = 0x32; + var_r31->unk_18 = 4; + var_r31->unk_1C = 0; + var_r28 = 6; + } + } + break; + case 4: + var_r31->unk_1C++; + if (var_r31->unk_1C >= 0x1B) { + var_r29 = &Hu3DData[lbl_1_bss_B8->model[3]]; + var_r26 = var_r31->unk_1C - 0x1B; + if (var_r26 == 0) { + if (var_r31->unk_04 != -1) { + omVibrate(var_r31->unk_04, 0xC, 4, 2); + } + HuWinExCleanup(lbl_1_bss_C); + lbl_1_data_15C = -1; + if (lbl_1_data_16C != -1) { + HuAudFXStop(lbl_1_data_16C); + lbl_1_data_16C = -1; + } + HuAudFXPlay(0x7F5); + } + if (var_r26 == 8) { + if (lbl_1_data_138[0] == -1) { + lbl_1_data_138[0] = fn_1_4BE8(); + Hu3DParManPosSet(lbl_1_data_138[0], var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + } + Hu3DModelAttrSet(lbl_1_bss_B8->model[3], HU3D_ATTR_DISPOFF); + } + else if (var_r26 > 8) { + if (var_r31->unk_20 == 6) { + if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])) { + var_r28 = 0; + } + } + if (var_r26 <= 0x1C) { + var_f27 = (var_r26 - 8) / 10.0; + spB0 = ((var_r26 - 8) * 0x12); + var_f27 = var_f27 > 1.0f ? 2.5 : 2.5 * var_f27; + Hu3DModelAttrReset(lbl_1_bss_B8->model[lbl_1_bss_18 + 0xD], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_B8->model[lbl_1_bss_18 + 0xD], var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + Hu3DModelScaleSet(lbl_1_bss_B8->model[lbl_1_bss_18 + 0xD], var_f27, var_f27, var_f27); + } + if ((var_r26 >= 0x2D) && (var_r26 <= 0x41)) { + var_f25 = (var_r26 - 0x2D) / 5.0; + spAC = (var_r26 - 0x2D) * 0x12; + var_f25 = var_f25 > 1.0f ? 1.0f : var_f25; + var_f25 = 0.0; + Hu3DModelAttrReset(lbl_1_bss_B8->model[lbl_1_bss_18 + 0xD], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_B8->model[lbl_1_bss_18 + 0xD], var_r29->pos.x, var_r29->pos.y - (30.0f * var_f25), var_r29->pos.z); + var_r31->unk_1C += 5; + } + if (var_r26 == 0x62) { + Hu3DModelAttrSet(lbl_1_bss_B8->model[lbl_1_bss_18 + 0xD], HU3D_ATTR_DISPOFF); + lbl_1_bss_18 = lbl_1_bss_18 >= 9 ? var_r27->unk_38 : lbl_1_bss_18; + if (lbl_1_bss_18 == var_r27->unk_38) { + lbl_1_bss_98 = var_r31->unk_00; + } + else if (lbl_1_bss_18 == var_r31->unk_38) { + lbl_1_bss_98 = var_r27->unk_00; + } + var_r31->unk_18 = lbl_1_bss_98 == -1 ? 5 : 0; + var_r31->unk_1C = 0; + } + } + else { + if (var_r26 < 4) { + var_r29->pos.y += 10.0f + (0.5f * var_r26); + var_r29->scale.x += 0.10000000149011612 * sind((4.0f * var_r26)); + var_r29->scale.y = var_r29->scale.z = var_r29->scale.x; + } + else { + var_f24 = (0xFF - (var_r26 << 5)); + var_f24 = var_f24 * 0.003921569f; // 1 / 255 + Hu3DModelTPLvlSet(lbl_1_bss_B8->model[3], var_f24); + } + var_r29->pos.y += -0.49f * var_r26 * var_r26; + } + } + break; + case 5: + if (var_r31->unk_1C == 0) { + Hu3DModelAttrReset(lbl_1_bss_B8->model[lbl_1_bss_18 + 4], HU3D_MOTATTR_PAUSE); + lbl_1_bss_28C[lbl_1_bss_18].unk_0C = 0; + if (lbl_1_bss_CC[0].unk_00 < 3) { + lbl_1_bss_CC[0].unk_04[lbl_1_bss_CC->unk_00] = 0.0f; + lbl_1_bss_CC[0].unk_00++; + } + } + var_r31->unk_1C++; + if ((var_r31->unk_1C == 0x3C) && (*lbl_1_data_138 != -1)) { + Hu3DParManKill(*lbl_1_data_138); + lbl_1_data_138[0] = -1; + } + if (var_r31->unk_1C == 0x21) { + Hu3DModelAttrSet(lbl_1_bss_B8->model[lbl_1_bss_18 + 4], HU3D_MOTATTR_PAUSE); + } + if (var_r31->unk_1C == 0x3F) { + Hu3DModelAttrReset(lbl_1_bss_B8->model[lbl_1_bss_18 + 4], HU3D_MOTATTR_PAUSE); + } + if ((var_r31->unk_1C == 0x44) && (lbl_1_bss_CC[1].unk_00 < 3)) { + lbl_1_bss_CC[1].unk_04[lbl_1_bss_CC[1].unk_00] = 0.0f; + lbl_1_bss_CC[1].unk_00++; + } + if (var_r31->unk_1C == 0x82) { + var_r31->unk_18 = 0; + var_r31->unk_1C = 0; + } + break; + } + if (((var_r31->unk_18 == 3) || (var_r31->unk_18 == 4)) && (lbl_1_data_15C >= 0)) { + lbl_1_data_15C++; + if (lbl_1_data_15C >= 6) { + spA4 = lbl_1_bss_18; + for (spA8 = 0; spA8 < 0x32; spA8++) { + do { + lbl_1_bss_18 = rand8() % 11; + } while ((lbl_1_bss_18 >= 9 && lbl_1_bss_18 == var_r31->unk_00 + 9) || (lbl_1_bss_18 < 9 && lbl_1_bss_28C[lbl_1_bss_18].unk_0C == 0)); + if (spA4 != lbl_1_bss_18) { + break; + } + } + spA4 = lbl_1_bss_18 >= 9 ? (var_r27->unk_08 == -1 ? 0x11 : (var_r27->unk_08 + 9)) : lbl_1_bss_18; + lbl_1_data_15C = 0; + Hu3DMotionTimeSet(lbl_1_bss_B8->model[3], 0.5 + spA4); + } + } + if (var_r31->unk_24 >= 0) { + var_r28 = var_r31->unk_24; + } + if ((var_r28 >= 0) && (var_r28 != var_r31->unk_20)) { + Hu3DMotionShiftSet(object->model[0], object->motion[var_r28], lbl_1_data_C4[var_r28], + (var_r31->unk_08 != -1 ? lbl_1_data_9C[var_r28] : lbl_1_data_EC[var_r28]), + (var_r28 == 8 ? 0x40000002 + : (var_r31->unk_08 != -1 ? lbl_1_data_88[var_r28] : lbl_1_data_92[var_r28]) != 0 ? 0 + : 0x40000001)); + var_r31->unk_20 = var_r28; + } +} + +s32 lbl_1_data_1A0 = -1; +float lbl_1_data_1A4 = 3500.0f; +float lbl_1_data_1A8 = 100.0f; +float lbl_1_data_1AC = -59.0f; + +void fn_1_350C(omObjData *var_r27) +{ + M458DllWork *spC[2]; + float var_f31; + float var_f29; + float var_f27; + float var_f26; + float var_f25; + float var_f19; + + s32 var_r31; + s32 var_r30; + ModelData *var_r29; + ModelData *var_r28; + ModelData *var_r26; + s32 var_r25; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + spC[var_r31] = (&lbl_1_bss_BC)[var_r31]->data; + } + lbl_1_bss_4++; + switch (lbl_1_bss_B0) { + case 0x3EA: + if (lbl_1_bss_B4 <= 0x77) { + var_f27 = lbl_1_bss_B4 / 119.0; + var_f27 = var_f27 > 1.0f ? 1.0f : var_f27; + Hu3DModelPosSet(lbl_1_bss_B8->model[2], 0.0f, 100.0f + (-1500.0f * (1.0f - var_f27)), -950.0f); + Hu3DModelAttrReset(lbl_1_bss_B8->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_B8->model[2], HU3D_ATTR_DISPOFF); + } + break; + case 0x3EB: + if (lbl_1_bss_B4 == 0) { + lbl_1_bss_8C = 0; + } + if (lbl_1_bss_B4 == 0x14) { + espAttrReset(lbl_1_data_8[0], HUSPR_ATTR_DISPOFF); + } + if (((lbl_1_bss_B4 >= 0x14) && (lbl_1_bss_B4 <= 0x32)) || ((lbl_1_bss_B4 >= 0xB4) && (lbl_1_bss_B4 <= 0xD2))) { + var_f19 = lbl_1_bss_B4 <= 0x78 ? ((lbl_1_bss_B4 - 0x14) / 30.0) : (1.0 - ((lbl_1_bss_B4 - 0xB4) / 30.0)); + espTPLvlSet(lbl_1_data_8[0], var_f19); + } + if (lbl_1_bss_B4 == 0xD2) { + espAttrSet(lbl_1_data_8[0], HUSPR_ATTR_DISPOFF); + } + case 0x3EC: + case 0x3ED: + lbl_1_bss_8C++; + lbl_1_bss_8C %= 0x168; + if (lbl_1_bss_14 != 0) { + Hu3DModelPosSet(lbl_1_bss_B8->model[2], 0.0f, 100.0 + (25.0 * sind((360.0 * ((lbl_1_bss_8C % 360) / 360.0)))), -950.0f); + } + break; + case 0x3EE: + if (lbl_1_bss_14 != 0) { + var_r26 = &Hu3DData[lbl_1_bss_B8->model[2]]; + if (lbl_1_bss_B4 >= 7) { + var_r26->pos.y += 12.5; + } + if (lbl_1_bss_B4 == 0) { + Hu3DMotionShiftSet(var_r27->model[1], var_r27->motion[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } + else { + var_r29 = &Hu3DData[lbl_1_bss_B8->model[spC[0]->unk_38 + 4]]; + if (lbl_1_bss_20 == 0) { + lbl_1_bss_20 = 1; + HuAudFXPlay(0x7F6); + } + if (lbl_1_bss_B4 == 1) { + lbl_1_bss_28C[spC[0]->unk_38].unk_08 = 83.333336f; + } + var_r29->pos.y = (0.9 * var_r29->pos.y) + (0.1 * lbl_1_bss_28C[spC[0]->unk_38].unk_08); + lbl_1_bss_BC->trans.y = var_r29->pos.y - -16.666666666666668; + } + break; + case 0x3F0: + Hu3DModelAttrSet(lbl_1_bss_B8->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_B8->model[2], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_B4 <= 0x3C) { + var_f29 = lbl_1_bss_B4 / 60.0; + var_f29 = var_f29; + var_f29 = 1.0f - ((1.0f - var_f29) * (1.0f - var_f29)); + if (lbl_1_bss_B4 == 0) { + lbl_1_bss_28C[spC[0]->unk_38].unk_08 = -16.666666f; + } + for (var_r31 = 0; var_r31 < 9; var_r31++) { + var_r28 = &Hu3DData[lbl_1_bss_B8->model[var_r31 + 4]]; + Hu3DModelPosSet(lbl_1_bss_B8->model[var_r31 + 4], (500.0 + (200.0f * var_f29)) * (lbl_1_bss_28C[var_r31].unk_00 - 1), + (0.9 * var_r28->pos.y) + (0.1 * lbl_1_bss_28C[spC[0]->unk_38].unk_08), + (500.0 + (200.0f * var_f29)) * (lbl_1_bss_28C[var_r31].unk_04 - 1)); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r31 == spC[var_r30]->unk_38) { + (&lbl_1_bss_BC)[var_r30]->trans.x = (500.0 + (200.0f * var_f29)) * (lbl_1_bss_28C[var_r31].unk_00 - 1); + (&lbl_1_bss_BC)[var_r30]->trans.y = var_r28->pos.y - -16.666666666666668; + (&lbl_1_bss_BC)[var_r30]->trans.z = (500.0 + (200.0f * var_f29)) * (lbl_1_bss_28C[var_r31].unk_04 - 1); + } + } + } + } + break; + } + var_r25 = lbl_1_data_1A0; + { + UnkCameraStruct sp14[6] = { + { 3500.0f, 0.0f, 100.0f, 0.0f, -59.0f, 0.0f }, + { 3200.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 3800.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 2000.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, + { 800.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, + { 1800.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, + }; + + if (lbl_1_bss_98 != -1) { + sp14[3].unk_04 = (&lbl_1_bss_BC)[1 - lbl_1_bss_98]->trans.x; + sp14[3].unk_0C = (&lbl_1_bss_BC)[1 - lbl_1_bss_98]->trans.z; + sp14[4].unk_04 = (&lbl_1_bss_BC)[1 - lbl_1_bss_98]->trans.x; + sp14[4].unk_0C = (&lbl_1_bss_BC)[1 - lbl_1_bss_98]->trans.z; + sp14[5].unk_04 = (&lbl_1_bss_BC)[lbl_1_bss_98]->trans.x; + sp14[5].unk_0C = (&lbl_1_bss_BC)[lbl_1_bss_98]->trans.z; + } + if (lbl_1_data_1A0 == -1) { + lbl_1_data_1A0 = 0; + lbl_1_bss_24 = 1; + lbl_1_bss_28 = 1.0f; + } + if (lbl_1_data_1A0 == 0) { + lbl_1_data_1A0 = 1; + lbl_1_bss_24 = 1; + lbl_1_bss_28 = 0.5f; + } + if ((lbl_1_bss_B0 == 0x3F0) && (lbl_1_bss_B4 >= 1) && (lbl_1_data_1A0 == 1)) { + lbl_1_data_1A0 = 2; + lbl_1_bss_24 = 0; + lbl_1_bss_28 = 0.0f; + } + if ((lbl_1_bss_B0 == 0x3F3) && (lbl_1_data_1A0 == 2)) { + lbl_1_data_1A0 = 3; + lbl_1_bss_24 = 0; + lbl_1_bss_28 = 0.0f; + } + if ((lbl_1_bss_B0 == 0x3F3) && (lbl_1_bss_B4 >= 0x12C) && (lbl_1_data_1A0 == 3)) { + lbl_1_data_1A0 = 4; + lbl_1_bss_24 = 1; + lbl_1_bss_28 = 1.0f; + } + if ((lbl_1_bss_B0 == 0x3F4) && (lbl_1_data_1A0 == 4)) { + lbl_1_data_1A0 = 5; + lbl_1_bss_24 = 0; + lbl_1_bss_28 = 0.0f; + } + if ((var_r25 != lbl_1_data_1A0) && (var_r25 != -1)) { + lbl_1_data_1A4 = CZoom; + lbl_1_data_1A8 = Center.y; + lbl_1_bss_30 = Center.z; + lbl_1_data_1AC = CRot.x; + lbl_1_bss_34 = CRot.y; + } + if (lbl_1_bss_28 <= 1.0f) { + if (lbl_1_bss_24 == 0) { + lbl_1_bss_28 = 1.0 - (0.95 * (1.0f - lbl_1_bss_28)); + var_f31 = lbl_1_bss_28; + } + else { + lbl_1_bss_28 += 0.008333333333333333; + lbl_1_bss_28 = lbl_1_bss_28 > 1.0f ? 1.0f : lbl_1_bss_28; + var_f31 = 0.5 + (-0.5 * cosd((180.0f * lbl_1_bss_28))); + var_f31 = var_f31; + } + lbl_1_bss_28 = lbl_1_bss_28 > 1.0f ? 1.0f : lbl_1_bss_28; + CZoom = (var_f31 * sp14[lbl_1_data_1A0].unk_00) + (lbl_1_data_1A4 * (1.0f - var_f31)); + Center.x = (var_f31 * sp14[lbl_1_data_1A0].unk_04) + (lbl_1_bss_2C * (1.0f - var_f31)); + Center.y = (var_f31 * sp14[lbl_1_data_1A0].unk_08) + (lbl_1_data_1A8 * (1.0f - var_f31)); + Center.z = (var_f31 * sp14[lbl_1_data_1A0].unk_0C) + (lbl_1_bss_30 * (1.0f - var_f31)); + CRot.x = (var_f31 * sp14[lbl_1_data_1A0].unk_10) + (lbl_1_data_1AC * (1.0f - var_f31)); + CRot.y = (var_f31 * sp14[lbl_1_data_1A0].unk_14) + (lbl_1_bss_34 * (1.0f - var_f31)); + } + } + if ((lbl_1_bss_B0 == 0x3E9) || (lbl_1_bss_B0 == 0x3EE)) { + var_f25 = 0.0f; + var_f26 = 0.0f; + if ((lbl_1_data_114.unk_00 % 2) >= 0) { + lbl_1_data_114.unk_08 = lbl_1_data_114.unk_10; + lbl_1_data_114.unk_0C = lbl_1_data_114.unk_14; + do { + lbl_1_data_114.unk_10 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_114.unk_14 = (2.0 * (rand8() / 255.0)) - 1.0; + lbl_1_data_114.unk_10 = 0.0f; + } while (sqrtf(((lbl_1_data_114.unk_10 - lbl_1_data_114.unk_08) * (lbl_1_data_114.unk_10 - lbl_1_data_114.unk_08)) + + ((lbl_1_data_114.unk_14 - lbl_1_data_114.unk_0C) * (lbl_1_data_114.unk_14 - lbl_1_data_114.unk_0C))) + < 0.75); + } + var_f25 = lbl_1_data_114.unk_08; + var_f26 = lbl_1_data_114.unk_0C; + var_f25 *= lbl_1_data_114.unk_04 * 2; + var_f26 *= lbl_1_data_114.unk_04 * 2; + lbl_1_data_114.unk_00 = !lbl_1_data_114.unk_00; + lbl_1_data_114.unk_04 = (lbl_1_data_114.unk_04 > 24) ? 23 : (lbl_1_data_114.unk_04 - 1 > 0) ? (lbl_1_data_114.unk_04 - 1) : 0; + Center.x = 0.0f; + Center.y = 100.0f + var_f26; + } +} + +const HsfanimStruct00 lbl_1_rodata_2A0 = { + 0x0096, + { 0x00, 0x00 }, + 50.0f, + 0.0f, + 65.0f, + { 0.0f, -0.195f, 0.0f }, + 100.0f, + 0.99f, + 40.0f, + 0.999f, + 4, + { + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + }, +}; + +s16 fn_1_4BE8(void) +{ + s16 var_r31; + s16 var_r30; + AnimData *var_r29; + void *var_r28; + + HsfanimStruct00 sp8 = lbl_1_rodata_2A0; + lbl_1_bss_3C = sp8; + var_r28 = HuDataSelHeapReadNum(0x7006B, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = HuSprAnimRead(var_r28); + var_r31 = Hu3DParManCreate(var_r29, 0x64, &lbl_1_bss_3C); + Hu3DParManAttrSet(var_r31, 0x108); + Hu3DParManRotSet(var_r31, 0.0f, 0.0f, 0.0f); + Hu3DParManVecSet(var_r31, 0.0f, 0.4f, 0.2f); + var_r30 = Hu3DParManModelIDGet(var_r31); + Hu3DModelLayerSet(var_r30, 2); + Hu3DParticleBlendModeSet(var_r30, 0); + return var_r31; +} + +void fn_1_4D44(void) +{ + M458DllWork *spC[2]; + s16 sp8; + s16 var_r31; + s32 var_r30; + WindowData *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + sp8 = 0; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + spC[var_r30] = (&lbl_1_bss_BC)[var_r30]->data; + } + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyReset(); + var_r31 = HuWinExCreateStyled(36.0f, 344.0f, 0x1F8, 0x60, 6, 0); + var_r29 = &winData[var_r31]; + if (spC[1]->unk_0C != -1) { + var_r28 = 1 << spC[1]->unk_0C; + } + else { + if (spC[1]->unk_08 != -1) { + var_r27 = 1 << GWPlayerCfg[spC[1]->unk_04].pad_idx; + } + else { + var_r27 = 0; + } + var_r28 = var_r27; + } + if (spC[0]->unk_0C != -1) { + var_r26 = 1 << spC[0]->unk_0C; + } + else { + if (spC[0]->unk_08 != -1) { + var_r25 = 1 << GWPlayerCfg[spC[0]->unk_04].pad_idx; + } + else { + var_r25 = 0; + } + var_r26 = var_r25; + } + var_r29->active_pad = var_r26 | var_r28; + OSReport("%d\n", var_r29->active_pad); + HuWinBGTPLvlSet(var_r31, 0.8f); + HuWinMesSpeedSet(var_r31, 1); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, 0x300024); + if (((spC[0]->unk_0C == -1) || (spC[0]->unk_08 == -1)) && ((spC[1]->unk_0C == -1) || (spC[1]->unk_08 == -1))) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + } + HuWinMesWait(var_r31); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + lbl_1_bss_10 = 0; + HuPrcEnd(); +} + +void fn_1_5014(omObjData *var_r30) +{ + M458DllWork *spC[2]; + s32 sp8; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 0x1C; var_r31++) { + s32 sp14[] = { + 0x7F1, + 0x7F2, + 0x7F7, + 0x7F8, + 0x7F9, + 0x7FA, + 0x7FB, + 0x7FC, + 0x7FD, + 0x7FE, + 0x7FF, + 0x800, + 0x801, + 0x802, + 0x803, + 0x804, + 0x7FB, + 0x7FC, + 0x7FD, + 0x7FE, + 0x7FF, + 0x800, + 0x801, + 0x802, + 0x803, + 0x804, + 0x7FB, + 0x7FC, + }; + if (lbl_1_bss_CC[var_r31].unk_00 > 3) { + lbl_1_bss_CC[var_r31].unk_00 = 3; + } + if (lbl_1_bss_CC[var_r31].unk_00 > 0) { + sp8 = HuAudFXPlay(sp14[var_r31]); + lbl_1_bss_CC[var_r31].unk_00--; + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + spC[var_r31] = (&lbl_1_bss_BC)[var_r31]->data; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + var_r30->func = fn_1_6D9C; + } + switch (lbl_1_bss_B0) { + case 0x3E8: + if (WipeStatGet() == 0) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + if (lbl_1_data_138[0] != -1) { + Hu3DParManKill(*lbl_1_data_138); + lbl_1_data_138[0] = -1; + } + } + default: + break; + case 0x3E9: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 == ((lbl_1_bss_14 == 0 ? 0x1E : 0) + 0x3C)) { + lbl_1_bss_B0 = lbl_1_bss_14 != 0 ? 0x3EA : 0x3ED; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3EA: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 == 0x78) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3EB: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 > 0xD2) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3EC: + if (lbl_1_bss_B4 == 0) { + HuPrcChildCreate(fn_1_4D44, 0x64, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_10 = 1; + lbl_1_bss_B4++; + break; + } + if (lbl_1_bss_10 == 0) { + lbl_1_bss_B4++; + if (spC[0]->unk_18 == 0) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + } + break; + case 0x3ED: + lbl_1_bss_B4 += lbl_1_bss_B4 < 0x1E; + if (lbl_1_bss_B4 >= 0x3C) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3EE: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 == ((spC[1]->unk_08 == -1 ? 0x78 : 0x3C) + (lbl_1_bss_14 == 0 ? 0x1E : 0))) { + lbl_1_bss_B0++; + if (spC[1]->unk_08 == -1) { + lbl_1_bss_B0++; + } + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3EF: + lbl_1_bss_B4 += lbl_1_bss_B4 < 0x1E; + if (lbl_1_bss_B4 >= 0x3C) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3F0: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 == 0x5A) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3F1: + case 0x3F2: + if (lbl_1_bss_B4 == 0) { + spC[lbl_1_bss_B0 == 0x3F1 ? 0 : 1]->unk_18 = 3; + spC[lbl_1_bss_B0 == 0x3F1 ? 0 : 1]->unk_1C = 0; + } + lbl_1_bss_B4++; + if (spC[lbl_1_bss_B0 == 0x3F1 ? 0 : 1]->unk_18 == 0) { + if (lbl_1_bss_98 != -1) { + lbl_1_bss_B0 = 0x3F3; + } + else { + lbl_1_bss_B0 = lbl_1_bss_B0 == 0x3F1 ? 0x3F2 : 0x3F1; + } + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3F3: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 >= 0x1E0) { + lbl_1_bss_B0++; + lbl_1_bss_B4 = 0.0f; + } + break; + case 0x3F4: + lbl_1_bss_B4++; + if (lbl_1_bss_B4 == 1) { + if (lbl_1_bss_98 != 4) { + if (spC[lbl_1_bss_98]->unk_08 != -1) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(3); + } + if (lbl_1_bss_14 != 0) { + if (lbl_1_bss_98 == 0) { + _SetFlag(0x10007); + } + } + else { + GWPlayerCoinWinSet(spC[lbl_1_bss_98]->unk_04, 10); + } + } + else { + lbl_1_bss_98 == 4; + } + } + if (210.0f < lbl_1_bss_B4) { + if (lbl_1_data_134 != -1) { + HuAudFXStop(lbl_1_data_134); + lbl_1_data_134 = -1; + } + lbl_1_data_12C = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r30->func = fn_1_6D9C; + } + break; + } +} + +s32 lbl_1_data_1E8[0xB] = { + 0x570013, + 0x570014, + 0x570015, + 0x570016, + 0x570017, + 0x570018, + 0x570019, + 0x57001A, + 0x57001B, + 0x57001C, + 0x57001D, +}; + +void fn_1_59DC(omObjData *object) +{ + M458DllWork *sp18[2]; + + s32 var_r30; + s16 var_r29; + s16 var_r28; + s32 var_r27; + void *var_r26; + AnimData *var_r25; + s16 var_r24; + s16 var_r23; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + sp18[var_r30] = (&lbl_1_bss_BC)[var_r30]->data; + } + object->model[1] = Hu3DModelCreateFile(0x3000E); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + object->model[2] = Hu3DModelCreateFile(0x30000); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelHookSet(object->model[2], "minik01", object->model[1]); + Hu3DModelPosSet(object->model[2], 0.0f, -750.0f, -700.0f); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + object->motion[0] = Hu3DJointMotionFile(object->model[1], 0x3000F); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x30012); + Hu3DMotionSet(object->model[1], object->motion[0]); + Hu3DModelLayerSet(object->model[2], 1); + Hu3DModelLayerSet(object->model[1], 1); + object->model[0] = Hu3DModelCreateFile(0x570008); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[0], 0.1f); + object->model[3] = Hu3DModelCreateFile(0x570009); + Hu3DModelAttrSet(object->model[3], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(object->model[3], 0.0f, 400.0f, 0.0f); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[3], 1); + Hu3DMotionSpeedSet(object->model[3], 0.0f); + for (var_r30 = 0; var_r30 < 9; var_r30++) { + object->model[var_r30 + 4] = Hu3DModelCreateFile(var_r30 + 0x57000A); + lbl_1_bss_28C[var_r30].unk_00 = var_r30 % 3; + lbl_1_bss_28C[var_r30].unk_04 = var_r30 / 3; + lbl_1_bss_28C[var_r30].unk_08 = 0.0f; + lbl_1_bss_28C[var_r30].unk_0C = 1; + Hu3DModelPosSet( + lbl_1_bss_B8->model[var_r30 + 4], 500.0 * (lbl_1_bss_28C[var_r30].unk_00 - 1), -16.666666f, 500.0 * (lbl_1_bss_28C[var_r30].unk_04 - 1)); + Hu3DModelScaleSet(lbl_1_bss_B8->model[var_r30 + 4], 1.6666666f, 1.6666666f, 1.6666666f); + Hu3DModelAttrSet(object->model[var_r30 + 4], HU3D_MOTATTR_PAUSE); + Hu3DModelShadowMapSet(object->model[var_r30 + 4]); + Hu3DModelLayerSet(object->model[var_r30 + 4], 1); + } + for (var_r30 = 0; var_r30 < 0xB; var_r30++) { + if ((var_r30 == 9) || (var_r30 == 0xA)) { + if (sp18[var_r30 - 9]->unk_08 != -1) { + var_r27 = sp18[var_r30 - 9]->unk_08 + 0x57001C; + } + else { + var_r27 = 0x570024; + } + lbl_1_data_1E8[var_r30] = var_r27; + } + object->model[var_r30 + 0xD] = Hu3DModelCreateFile(lbl_1_data_1E8[var_r30]); + Hu3DMotionTimeSet(object->model[var_r30 + 0xD], 10.0f); + Hu3DMotionSpeedSet(object->model[var_r30 + 0xD], 0.0f); + Hu3DModelAttrSet(object->model[var_r30 + 0xD], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[var_r30 + 0xD], 1); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + s32 sp10[2] = { 0x120, 0x122 }; + s32 sp8[2] = { 0xF0, 0x8C }; + lbl_1_data_8[var_r30] = espEntry(lbl_1_data_0[var_r30], 0, 0); + espDrawNoSet(lbl_1_data_8[var_r30], 0); + espAttrSet(lbl_1_data_8[var_r30], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_data_8[var_r30], 0); + espPriSet(lbl_1_data_8[var_r30], 0x80 - var_r30); + espPosSet(lbl_1_data_8[var_r30], sp10[var_r30], sp8[var_r30]); + espTPLvlSet(lbl_1_data_8[var_r30], 1.0f); + } + { + HsfanimStruct00 sp20 = lbl_1_rodata_2A0; + lbl_1_bss_3C = sp20; + } + var_r26 = HuDataSelHeapReadNum(0x7006B, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r25 = HuSprAnimRead(var_r26); + var_r29 = Hu3DParManCreate(var_r25, 0x64, &lbl_1_bss_3C); + Hu3DParManAttrSet(var_r29, 0x108); + Hu3DParManRotSet(var_r29, 0.0f, 0.0f, 0.0f); + Hu3DParManVecSet(var_r29, 0.0f, 0.4f, 0.2f); + var_r28 = Hu3DParManModelIDGet(var_r29); + Hu3DModelLayerSet(var_r28, 2); + Hu3DParticleBlendModeSet(var_r28, 0); + var_r24 = var_r29; + var_r23 = var_r24; + lbl_1_data_138[0] = var_r23; + Hu3DParManPosSet(lbl_1_data_138[0], 10000.0f, -10000.0f, 10000.0f); + object->func = fn_1_350C; +} + +void fn_1_6314(omObjData *object) +{ + s32 sp10; + void *spC; + M458DllWork *work; + s32 var_r29; + + work = object->data; + spC = (&lbl_1_bss_BC)[1 - object->work[0]]->data; + memset(work, 0, sizeof(M458DllWork)); + work->unk_00 = object->work[0]; + work->unk_04 = GWPlayerCfg->group == work->unk_00 + ? 0 + : (GWPlayerCfg[1].group == work->unk_00 ? 1 : (GWPlayerCfg[2].group == work->unk_00 ? 2 : (GWPlayerCfg[3].group == work->unk_00 ? 3 : 4))); + sp10 = GWPlayerCfg->group == (1 - work->unk_00) + ? 0 + : (GWPlayerCfg[1].group == (1 - work->unk_00) + ? 1 + : (GWPlayerCfg[2].group == (1 - work->unk_00) ? 2 : (GWPlayerCfg[3].group == (1 - work->unk_00) ? 3 : 4))); + if (work->unk_04 == 4) { + OSReport("m458:wrong player group\n"); + work->unk_04 = work->unk_00; + } + if ((work->unk_00 == 1) && (lbl_1_bss_14 != 0)) { + work->unk_08 = -1; + work->unk_0C = -1; + work->unk_04 = -1; + work->unk_10 = 0; + } + else { + work->unk_08 = GWPlayerCfg[work->unk_04].character; + work->unk_0C = ((work->unk_08 == -1) || (GWPlayerCfg[work->unk_04].iscom != 0)) ? -1 : GWPlayerCfg[work->unk_04].pad_idx; + work->unk_10 = work->unk_0C != -1 ? 0 : GWPlayerCfg[work->unk_04].diff; + } + work->unk_18 = 0; + work->unk_20 = 3; + work->unk_24 = -1; + if (work->unk_08 != -1) { + object->model[0] = CharModelCreate(work->unk_08, 1); + } + else { + object->model[0] = Hu3DModelCreateFile(0x30007); + } + omSetTra(object, 0.0f, work->unk_00 == 0 ? 0 : 0x12C, 0.0f); + if (work->unk_08 != -1) { + omSetSca(object, 2.5f, 2.5f, 2.5f); + } + else { + omSetSca(object, 2.0f, 2.0f, 2.0f); + } + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + if (work->unk_08 != -1) { + object->motion[var_r29] = CharModelMotionCreate(work->unk_08, lbl_1_data_10[var_r29] + (lbl_1_data_38[var_r29] != 0 ? work->unk_08 : 0)); + } + else if (lbl_1_data_60[var_r29] != 0) { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], lbl_1_data_60[var_r29]); + } + } + Hu3DMotionSet(object->model[0], object->motion[work->unk_20]); + Hu3DMotionTimeSet(object->model[0], 10.0f); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(object->model[0]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[0], 1); + CharModelLayerSetAll2(1); + object->func = fn_1_4C8; +} + +void fn_1_685C(omObjData *object) +{ + lbl_1_bss_B0 = 0x3E8; + lbl_1_bss_B4 = 0.0f; + lbl_1_bss_A8 = 0; + lbl_1_bss_A4 = 0; + if (lbl_1_data_130 == -1) { + lbl_1_data_130 = HuAudSeqPlay(0x4D); + } + lbl_1_data_134 = HuAudFXPlay(0x6D7); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_5014; +} + +void ObjectSetup(void) +{ + s32 i; + omObjData *object; + + OSReport("******* M458 ObjectSetup *********\n"); + lbl_1_bss_A0 = omInitObjMan(0x258, 0x2000); + omGameSysInit(lbl_1_bss_A0); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 3200.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec sp3C = { 0.0f, 0.0f, 0.0f }; + Vec sp30 = { 0.25f, -0.75f, -0.45f }; + GXColor sp8 = { 255, 255, 255, 255 }; + lbl_1_bss_9C = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + Hu3DGLightStaticSet(lbl_1_bss_9C, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_9C); + } + { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = 0.0f; + sp24.y = 10000.0f; + sp24.z = 0.0f; + sp18.x = 0.0f; + sp18.y = 1.0f; + sp18.z = 0.0f; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = 0.5f; + Hu3DShadowCreate(12.0f, 9000.0f, 10010.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + Hu3DShadowSizeSet(0xE0); + lbl_1_data_12C = -1; + lbl_1_bss_98 = -1; + lbl_1_bss_14 = _CheckFlag(0x10000) != 0; + HuWinInit(1); + lbl_1_bss_B8 = omAddObjEx(lbl_1_bss_A0, 0x65, 0x18, 2, 1, fn_1_59DC); + for (i = 0; i < 2; i++) { + object = (&lbl_1_bss_BC)[i] = omAddObjEx(lbl_1_bss_A0, 0x64, 0xB, 0xA, 0, fn_1_6314); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M458DllWork), MEMORY_DEFAULT_NUM); + object->work[0] = i; + } + lbl_1_bss_C4 = omAddObjEx(lbl_1_bss_A0, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_C8 = omAddObjEx(lbl_1_bss_A0, 0x67, 0, 0, -1, fn_1_685C); +} + +void fn_1_6D9C(omObjData *object) +{ + if (lbl_1_data_138[0] != -1) { + Hu3DParManKill(lbl_1_data_138[0]); + lbl_1_data_138[0] = -1; + } + if (WipeStatGet() == 0) { + s32 i; + for (i = 0; i < 2; i++) { + void *sp8 = (&lbl_1_bss_BC)[i]->data; + } + if (lbl_1_data_12C >= 0) { + MGSeqKill(lbl_1_data_12C); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m459dll/main.c b/src/REL/m459dll/main.c new file mode 100644 index 00000000..c8c96218 --- /dev/null +++ b/src/REL/m459dll/main.c @@ -0,0 +1,2138 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/gamework.h" +#include "game/hsfex.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/wipe.h" + +// #ifndef __MWERKS__ +#include "game/frand.h" +// #endif + +typedef struct M459DllBss18Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s16 unk_04[8]; + /* 0x14 */ s16 unk_14[8]; + /* 0x24 */ u8 unk_24[2]; + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; +} M459DllBss18Struct; /* size = 0x30 */ + +typedef struct M459DllBss4CStruct { + /* 0x00 */ s16 unk_00[6]; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; +} M459DllBss4CStruct; /* size = 0x18 */ + +typedef struct M459DllBss64Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s16 unk_08; +} M459DllBss64Struct; /* size = 0xC */ + +typedef struct M459DllBss70Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s16 unk_04; + /* 0x08 */ s32 unk_08; +} M459DllBss70Struct; /* size = 0xC */ + +typedef struct M459DllBss7CStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ u32 unk_08; + /* 0x0C */ s16 unk_0C[2]; +} M459DllBss7CStruct; /* size = 0x10 */ + +typedef struct M459DllBssCCStruct { + /* 0x000 */ s32 unk_00; + /* 0x004 */ s32 unk_04; + /* 0x008 */ s32 unk_08; + /* 0x00C */ Vec unk_0C; + /* 0x018 */ float unk_18; + /* 0x01C */ float unk_1C; + /* 0x020 */ float unk_20; + /* 0x024 */ char pad_24[0x4]; + /* 0x028 */ s32 unk_28[5]; + /* 0x03C */ s32 unk_3C[5]; + /* 0x050 */ float unk_50; + /* 0x054 */ float unk_54; + /* 0x058 */ float unk_58; + /* 0x05C */ float unk_5C; + /* 0x060 */ s16 unk_60; + /* 0x062 */ s16 unk_62[0xC]; + /* 0x07A */ s16 unk_7A[0xC][6]; + /* 0x10A */ s16 unk_10A[2]; + /* 0x10E */ char pad_10E[2]; +} M459DllBssCCStruct; /* size = 0x110 */ + +typedef struct M459DllBss61CStruct { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ float unk_18; + /* 0x1C */ float unk_1C; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x24 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ float unk_30; + /* 0x34 */ float unk_34; + /* 0x38 */ float unk_38; + /* 0x3C */ char unk3C[0xC]; + /* 0x48 */ Vec unk_48; + /* 0x54 */ Vec unk_54; + /* 0x60 */ char unk60[0xC]; + /* 0x6C */ float unk_6C; + /* 0x70 */ float unk_70; + /* 0x74 */ float unk_74; + /* 0x78 */ float unk_78; +} M459DllBss61CStruct; /* size = 0x7C */ + +typedef struct M459DllData70Struct { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ GXColor unk_18; +} M459DllData70Struct; /* size = 0x1C */ + +void fn_1_11DC(float arg8, float arg9, float argA); +void fn_1_1204(float arg8, float arg9, float argA); +void fn_1_122C(void); +void fn_1_14B8(void); +void fn_1_19B4(M459DllBssCCStruct *arg0); +void fn_1_1A00(M459DllBssCCStruct *arg0); +void fn_1_1D8(void); +void fn_1_1FDC(M459DllBssCCStruct *arg0); +void fn_1_2044(M459DllBssCCStruct *arg0); +void fn_1_21AC(M459DllBssCCStruct *arg0); +void fn_1_23AC(M459DllBssCCStruct *arg0); +void fn_1_25C8(M459DllBssCCStruct *arg0); +void fn_1_27C8(M459DllBssCCStruct *arg0); +void fn_1_2930(M459DllBssCCStruct *arg0); +void fn_1_2B24(M459DllBssCCStruct *arg0); +void fn_1_2F18(M459DllBssCCStruct *arg0); +void fn_1_3004(M459DllBssCCStruct *arg0); +void fn_1_338C(M459DllBssCCStruct *arg0, float arg8); +void fn_1_3700(M459DllBssCCStruct *arg0); +void fn_1_4160(M459DllBssCCStruct *arg0); +float fn_1_4210(float arg8, float arg9, float argA); +void fn_1_4314(s32 arg0, u32 arg1); +void fn_1_4530(void); +void fn_1_45EC(void); +void fn_1_4764(void); +void fn_1_47E4(void); +void fn_1_4850(void); +void fn_1_48E4(void); +void fn_1_4A74(void); +void fn_1_4B68(void); +void fn_1_4C1C(void); +void fn_1_4CD0(void); +s32 fn_1_4E54(void); +void fn_1_4E64(s32 arg0); +void fn_1_4E98(void); +void fn_1_4EAC(void); +void fn_1_4F8C(s32 arg0); +s32 fn_1_4FAC(void); +void fn_1_4FC8(void); +void fn_1_52D8(s32 arg0); +s32 fn_1_52F0(void); +s32 fn_1_5300(void); +s32 fn_1_5310(void); +void fn_1_535C(void); +void fn_1_5490(void); +void fn_1_556C(M459DllBss18Struct *arg0); +void fn_1_55B0(M459DllBss18Struct *arg0); +void fn_1_5A78(M459DllBss18Struct *arg0); +void fn_1_5E3C(M459DllBss18Struct *arg0); +void fn_1_5EAC(void); +void fn_1_5F40(M459DllBss7CStruct *arg0); +void fn_1_5F84(M459DllBss7CStruct *arg0); +void fn_1_6198(M459DllBss7CStruct *arg0); +void fn_1_640(void); +void fn_1_6458(M459DllBss7CStruct *arg0); +void fn_1_73C(void); +void fn_1_E78(void); + +Process *lbl_1_bss_6E4; +Process *lbl_1_bss_698[0x13]; +M459DllBss61CStruct lbl_1_bss_61C; +M459DllBssCCStruct lbl_1_bss_CC[5]; +M459DllBss7CStruct lbl_1_bss_7C[5]; +M459DllBss70Struct lbl_1_bss_70; +M459DllBss64Struct lbl_1_bss_64; +M459DllBss4CStruct lbl_1_bss_4C; +s16 lbl_1_bss_48[1]; +M459DllBss18Struct lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +u8 lbl_1_bss_2; +s16 lbl_1_bss_0; + +static const s32 lbl_1_rodata_10[0xC] = { + DATA_MAKE_NUM(DATADIR_M459, 0x05), + DATA_MAKE_NUM(DATADIR_M459, 0x03), + DATA_MAKE_NUM(DATADIR_M459, 0x04), + DATA_MAKE_NUM(DATADIR_M459, 0x01), + DATA_MAKE_NUM(DATADIR_M459, 0x02), + DATA_MAKE_NUM(DATADIR_M459, 0x05), + DATA_MAKE_NUM(DATADIR_M459, 0x03), + DATA_MAKE_NUM(DATADIR_M459, 0x04), + DATA_MAKE_NUM(DATADIR_M459, 0x01), + DATA_MAKE_NUM(DATADIR_M459, 0x02), + DATA_MAKE_NUM(DATADIR_M459, 0x0E), + DATA_MAKE_NUM(DATADIR_M459, 0x0F), +}; +static const s32 lbl_1_rodata_40[5][6] = { + { + DATA_MAKE_NUM(DATADIR_M459, 0x28), + DATA_MAKE_NUM(DATADIR_M459, 0x29), + DATA_MAKE_NUM(DATADIR_M459, 0x2A), + DATA_MAKE_NUM(DATADIR_M459, 0x2C), + DATA_MAKE_NUM(DATADIR_M459, 0x2B), + DATA_MAKE_NUM(DATADIR_M459, 0x2D), + }, + { + DATA_MAKE_NUM(DATADIR_M459, 0x1C), + DATA_MAKE_NUM(DATADIR_M459, 0x1D), + DATA_MAKE_NUM(DATADIR_M459, 0x1E), + DATA_MAKE_NUM(DATADIR_M459, 0x20), + DATA_MAKE_NUM(DATADIR_M459, 0x1F), + DATA_MAKE_NUM(DATADIR_M459, 0x21), + }, + { + DATA_MAKE_NUM(DATADIR_M459, 0x22), + DATA_MAKE_NUM(DATADIR_M459, 0x23), + DATA_MAKE_NUM(DATADIR_M459, 0x24), + DATA_MAKE_NUM(DATADIR_M459, 0x26), + DATA_MAKE_NUM(DATADIR_M459, 0x25), + DATA_MAKE_NUM(DATADIR_M459, 0x27), + }, + { + DATA_MAKE_NUM(DATADIR_M459, 0x10), + DATA_MAKE_NUM(DATADIR_M459, 0x11), + DATA_MAKE_NUM(DATADIR_M459, 0x12), + DATA_MAKE_NUM(DATADIR_M459, 0x14), + DATA_MAKE_NUM(DATADIR_M459, 0x13), + DATA_MAKE_NUM(DATADIR_M459, 0x15), + }, + { + DATA_MAKE_NUM(DATADIR_M459, 0x16), + DATA_MAKE_NUM(DATADIR_M459, 0x17), + DATA_MAKE_NUM(DATADIR_M459, 0x18), + DATA_MAKE_NUM(DATADIR_M459, 0x1A), + DATA_MAKE_NUM(DATADIR_M459, 0x19), + DATA_MAKE_NUM(DATADIR_M459, 0x1B), + }, +}; +static const s32 lbl_1_rodata_B8[2] = { DATA_MAKE_NUM(DATADIR_M459, 0x3C), DATA_MAKE_NUM(DATADIR_M459, 0x3D) }; +static const s32 lbl_1_rodata_C0[2] = { DATA_MAKE_NUM(DATADIR_M459, 0x3A), DATA_MAKE_NUM(DATADIR_M459, 0x3B) }; +static const s32 lbl_1_rodata_C8[6] = { + DATA_MAKE_NUM(DATADIR_M459, 0x30), + DATA_MAKE_NUM(DATADIR_M459, 0x30), + DATA_MAKE_NUM(DATADIR_M459, 0x2F), + DATA_MAKE_NUM(DATADIR_M459, 0x2F), + DATA_MAKE_NUM(DATADIR_M459, 0x31), + DATA_MAKE_NUM(DATADIR_M459, 0x2E), +}; +static const s32 lbl_1_rodata_E0[1] = { DATA_MAKE_NUM(DATADIR_M459, 0x00) }; +static const s32 lbl_1_rodata_E4[8] = { + DATA_MAKE_NUM(DATADIR_M459, 0x06), + DATA_MAKE_NUM(DATADIR_M459, 0x07), + DATA_MAKE_NUM(DATADIR_M459, 0x08), + DATA_MAKE_NUM(DATADIR_M459, 0x09), + DATA_MAKE_NUM(DATADIR_M459, 0x0A), + DATA_MAKE_NUM(DATADIR_M459, 0x0B), + DATA_MAKE_NUM(DATADIR_M459, 0x0C), + DATA_MAKE_NUM(DATADIR_M459, 0x0D), +}; +static const s32 lbl_1_rodata_104[8] = { + DATA_MAKE_NUM(DATADIR_M459, 0x32), + DATA_MAKE_NUM(DATADIR_M459, 0x33), + DATA_MAKE_NUM(DATADIR_M459, 0x34), + DATA_MAKE_NUM(DATADIR_M459, 0x35), + DATA_MAKE_NUM(DATADIR_M459, 0x36), + DATA_MAKE_NUM(DATADIR_M459, 0x37), + DATA_MAKE_NUM(DATADIR_M459, 0x38), + DATA_MAKE_NUM(DATADIR_M459, 0x39), +}; +static const s32 lbl_1_rodata_124[0x63] = { 0x14, 0x13, 0x12, 0x11, 0x10, 0xF, 0xE, 0xD, 0xC, 0xB, 0xA, 9, 8, 7, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; + +static const s32 lbl_1_rodata_2B0[4] = {0x80000000, 0x40000000, 0x20000000, 0x10000000}; + +void ObjectSetup(void) +{ + s32 var_r31; + u32 var_r30; + + lbl_1_bss_6E4 = omInitObjMan(1, 0x2000); + omGameSysInit(lbl_1_bss_6E4); + fn_1_1D8(); + var_r30 = HuPadRumbleGet(); + if ((var_r30 & 0x80000000) != 0) { + lbl_1_bss_8 = GWGameStat.rumble; + } + else { + lbl_1_bss_8 = 0; + } + lbl_1_bss_4 = 0; + for (var_r31 = 0; var_r31 < 0x13; var_r31++) { + lbl_1_bss_698[var_r31] = NULL; + } + lbl_1_bss_698[0] = HuPrcChildCreate(fn_1_640, 0x100, 0x1000, 0, lbl_1_bss_6E4); + lbl_1_bss_698[1] = HuPrcChildCreate(fn_1_73C, 0x101, 0x3000, 0, lbl_1_bss_6E4); +} + +void fn_1_1D8(void) +{ + M459DllBssCCStruct *var_r29; + s32 var_r31; + s32 var_r30; + M459DllBss18Struct *var_r28; + s16 *var_r27; + s32 var_r26; + s16 *var_r25; + M459DllBss7CStruct *var_r24; + + for (var_r30 = 0; var_r30 < 5; var_r30++) { + var_r29 = &lbl_1_bss_CC[var_r30]; + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + if ((var_r31 >= 5) && (var_r31 <= 9)) { + var_r29->unk_62[var_r31] = Hu3DModelLink(var_r29->unk_62[var_r31 - 5]); + } + else { + var_r29->unk_62[var_r31] = Hu3DModelCreateFile(lbl_1_rodata_10[var_r31]); + } + if ((var_r31 >= 0) && (var_r31 <= 4)) { + Hu3DModelLayerSet(var_r29->unk_62[var_r31], 2); + } + else if ((var_r31 >= 5) && (var_r31 <= 9)) { + Hu3DModelLayerSet(var_r29->unk_62[var_r31], 0); + Hu3DModelAttrSet(var_r29->unk_62[var_r31], HU3D_ATTR_CULL_FRONT); + } + else { + Hu3DModelLayerSet(var_r29->unk_62[var_r31], 3); + } + if (var_r31 == 0xA) { + Hu3DModelAttrSet(var_r29->unk_62[var_r31], HU3D_ATTR_ZWRITE_OFF); + } + if ((var_r31 >= 0) && (var_r31 <= 4)) { + Hu3DModelShadowSet(var_r29->unk_62[var_r31]); + } + Hu3DModelAttrSet(var_r29->unk_62[var_r31], HU3D_ATTR_DISPOFF); + } + for (var_r26 = 0; var_r26 < 5; var_r26++) { + for (var_r31 = 0; var_r31 < 6; var_r31++) { + var_r29->unk_7A[var_r26][var_r31] = Hu3DJointMotionFile(var_r29->unk_62[var_r26], lbl_1_rodata_40[var_r26][var_r31]); + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29->unk_10A[var_r31] = espEntry(lbl_1_rodata_B8[var_r31], 0, 0); + espDispOff(var_r29->unk_10A[var_r31]); + } + } + CharModelLayerSetAll(3); + for (var_r30 = 0; var_r30 < 5; var_r30++) { + var_r24 = &lbl_1_bss_7C[var_r30]; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r24->unk_0C[var_r31] = espEntry(lbl_1_rodata_C0[var_r31], 0, 0); + espDispOff(var_r24->unk_0C[var_r31]); + } + } + var_r25 = lbl_1_bss_4C.unk_00; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + var_r25[var_r30] = espEntry(lbl_1_rodata_C8[var_r30], 0, 0); + } + espColorSet(var_r25[5], 0, 0, 0); + var_r27 = lbl_1_bss_48; + for (var_r30 = 0; var_r30 < 1; var_r30++) { + var_r27[var_r30] = Hu3DModelCreateFile(lbl_1_rodata_E0[var_r30]); + Hu3DModelLayerSet(var_r27[var_r30], 1); + Hu3DModelShadowMapSet(var_r27[var_r30]); + } + var_r28 = &lbl_1_bss_18; + for (var_r30 = 0; var_r30 < 8; var_r30++) { + var_r28->unk_14[var_r30] = Hu3DModelCreateFile(lbl_1_rodata_E4[var_r30]); + Hu3DModelLayerSet(var_r28->unk_14[var_r30], 2); + Hu3DModelAttrSet(var_r28->unk_14[var_r30], HU3D_ATTR_ZWRITE_OFF); + Hu3DModelAttrSet(var_r28->unk_14[var_r30], HU3D_ATTR_DISPOFF); + } + for (var_r30 = 0; var_r30 < 8; var_r30++) { + var_r28->unk_04[var_r30] = espEntry(lbl_1_rodata_104[var_r30], 0, 0); + espDispOff(var_r28->unk_04[var_r30]); + } +} + +void fn_1_640(void) +{ + s32 var_r31; + + while (omSysExitReq == 0) { + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuAudFadeOut(0x3E8); + for (var_r31 = 0; var_r31 < 0x13; var_r31++) { + if ((var_r31 != 0) && lbl_1_bss_698[var_r31]) { + HuPrcKill(lbl_1_bss_698[var_r31]); + lbl_1_bss_698[var_r31] = NULL; + } + } + HuPrcVSleep(); + omOvlReturnEx(1, 1); + HuPrcEnd(); + lbl_1_bss_698[0] = NULL; +} + +void fn_1_73C(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + lbl_1_bss_698[2] = HuPrcChildCreate(fn_1_E78, 0xFF, 0x1000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_698[var_r31 + 3] = HuPrcChildCreate(fn_1_14B8, 0x102, 0x3000, 0, HuPrcCurrentGet()); + *((s32 *)&lbl_1_bss_698[var_r31 + 3]->user_data) = var_r31; + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_698[var_r31 + 8] = HuPrcChildCreate(fn_1_5EAC, 0x105, 0x1000, 0, HuPrcCurrentGet()); + *((s32 *)&lbl_1_bss_698[var_r31 + 8]->user_data) = var_r31; + } + lbl_1_bss_698[0x11] = HuPrcChildCreate(fn_1_5490, 0x103, 0x2000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + fn_1_4314(var_r31, frandmod(5)); + } + lbl_1_bss_698[0xD] = HuPrcChildCreate(fn_1_4CD0, 0x200, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_698[0xE] = HuPrcChildCreate(fn_1_4EAC, 0x103, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_698[0xF] = HuPrcChildCreate(fn_1_4FC8, 0x104, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_698[0x10] = HuPrcChildCreate(fn_1_535C, 0x110, 0x2000, 0, HuPrcCurrentGet()); + HuPrcVSleep(); + fn_1_1204(0.0f, 90.0f, -400.0f); + fn_1_11DC(0.0f, 300.0f, 1100.0f); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_4530, 0x100, 0x4000, 0, HuPrcCurrentGet()); + + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + while (TRUE) { + lbl_1_bss_10 = frandmod(5); + var_r29 = frandmod(5); + var_r30 = frandmod(5); + if (var_r29 == var_r30) { + var_r30 = (var_r30 + 1) % 5; + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + if (var_r31 != lbl_1_bss_10) { + lbl_1_bss_7C[var_r31].unk_08 = var_r29; + } + } + lbl_1_bss_7C[lbl_1_bss_10].unk_08 = var_r30; + if (fn_1_52F0() > 0) { + for (var_r31 = 0; var_r31 < 5; var_r31++) { + fn_1_4314(var_r31, frandmod(5)); + } + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_4C1C, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + HuPrcSleep(0x3C); + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_4764, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + } + var_r28 = lbl_1_rodata_124[fn_1_52F0()] * 0x3C; + fn_1_4E64(var_r28); + lbl_1_bss_18.unk_00 = 1; + while (TRUE) { + if ((lbl_1_bss_18.unk_00 == 0) || (fn_1_4E54() <= 0)) { + break; + } + HuPrcVSleep(); + } + fn_1_4E98(); + if (lbl_1_bss_18.unk_00 != 0) { + lbl_1_bss_18.unk_00 = 2; + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_4A74, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + } + else { + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_47E4, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + if (lbl_1_bss_14 == lbl_1_bss_10) { + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_4850, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + goto label; + } + else { + + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_48E4, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + if(0) { + label: + fn_1_52D8(1); + if (fn_1_52F0() != 0x63) { + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_4B68, 0x100, 0x4000, 0, HuPrcCurrentGet()); + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + continue; + } + } + } + } + break; + } + lbl_1_bss_698[0x12] = HuPrcChildCreate(fn_1_45EC, 0x100, 0x4000, 0, HuPrcCurrentGet()); + + while (lbl_1_bss_698[0x12]) { + HuPrcVSleep(); + } + mgRecordExtra = fn_1_52F0(); + omSysExitReq = 1; + HuPrcEnd(); + lbl_1_bss_698[1] = NULL; + lbl_1_bss_698[1] = NULL; +} + +void fn_1_E78(void) +{ + float sp8; + float var_f31; + M459DllBss61CStruct *var_r31; + + var_r31 = &lbl_1_bss_61C; + var_r31->unk_00.x = 0.0f; + var_r31->unk_00.y = 300.0f; + var_r31->unk_00.z = 1100.0f; + var_r31->unk_0C.x = 90.0f; + var_r31->unk_0C.y = -400.0f; + var_r31->unk_0C.z = 0.0f; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C = 1.0f; + var_r31->unk_20 = 0.0f; + var_r31->unk_74 = 1.0f; + var_r31->unk_6C = 1.0f; + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 10.0f, 8000.0f, 1.2f); + while (TRUE) { + fn_1_122C(); + if (var_r31->unk_6C < 1.0f) { + var_f31 = sind((90.0f * var_r31->unk_6C)); + var_r31->unk_00.x = var_r31->unk_24 + (var_f31 * (var_r31->unk_48.x - var_r31->unk_24)); + var_r31->unk_00.y = var_r31->unk_28 + (var_f31 * (var_r31->unk_48.y - var_r31->unk_28)); + var_r31->unk_00.z = var_r31->unk_2C + (var_f31 * (var_r31->unk_48.z - var_r31->unk_2C)); + if ((var_r31->unk_6C += var_r31->unk_70) >= 1.0f) { + var_r31->unk_00 = var_r31->unk_48; + } + } + if (var_r31->unk_74 < 1.0f) { + var_f31 = sind((90.0f * var_r31->unk_74)); + var_r31->unk_0C.x = var_r31->unk_30 + (var_f31 * (var_r31->unk_54.x - var_r31->unk_30)); + var_r31->unk_0C.y = var_r31->unk_34 + (var_f31 * (var_r31->unk_54.y - var_r31->unk_34)); + var_r31->unk_0C.z = var_r31->unk_38 + (var_f31 * (var_r31->unk_54.z - var_r31->unk_38)); + if ((var_r31->unk_74 += var_r31->unk_78) >= 1.0f) { + var_r31->unk_0C = var_r31->unk_54; + } + } + Hu3DCameraPosSet(1, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z, var_r31->unk_18, var_r31->unk_1C, var_r31->unk_20, + var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); + HuPrcVSleep(); + } +} + +void fn_1_11DC(float arg8, float arg9, float argA) +{ + M459DllBss61CStruct *var_r31 = &lbl_1_bss_61C; + var_r31->unk_00.x = arg8; + var_r31->unk_00.y = arg9; + var_r31->unk_00.z = argA; +} + +void fn_1_1204(float arg8, float arg9, float argA) +{ + M459DllBss61CStruct *var_r31 = &lbl_1_bss_61C; + var_r31->unk_0C.x = arg8; + var_r31->unk_0C.y = arg9; + var_r31->unk_0C.z = argA; +} + +void fn_1_122C(void) +{ + M459DllBss61CStruct *var_r31; + + if (lbl_1_bss_4 != 0) { + var_r31 = &lbl_1_bss_61C; + var_r31->unk_0C.x += (0.25f * HuPadStkX[0]); + var_r31->unk_0C.y += (0.25f * HuPadStkY[0]); + var_r31->unk_00.z += (0.25f * HuPadTrigL[0]); + var_r31->unk_00.z -= (0.25f * HuPadTrigR[0]); + var_r31->unk_00.x += (0.25f * HuPadSubStkX[0]); + var_r31->unk_00.y += (0.25f * HuPadSubStkY[0]); + } +} + +void fn_1_142C(void) +{ + M459DllBss61CStruct *var_r31 = &lbl_1_bss_61C; + print8(0x20, 0x40, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); + print8(0x20, 0x50, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); +} + +static const u8 lbl_1_rodata_31C[8] = { 9, 0xE, 0xC, 0xA, 0xB }; + +void fn_1_14B8(void) +{ + M459DllBssCCStruct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r29 = (s32)HuPrcCurrentGet()->user_data; + var_r31 = &lbl_1_bss_CC[var_r29]; + var_r31->unk_00 = var_r29; + var_r31->unk_04 = 0; + var_r31->unk_0C.x = -260.0f + (130.0f * var_r29); + var_r31->unk_0C.y = 0.0f; + var_r31->unk_0C.z = 0.0f; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r31->unk_20 = 0.0f; + var_r31->unk_50 = 0.0f; + var_r31->unk_54 = 0.0f; + var_r31->unk_58 = 0.0f; + Hu3DMotionSet(var_r31->unk_62[var_r31->unk_08], var_r31->unk_7A[var_r31->unk_08][var_r31->unk_60 = 0]); + Hu3DModelAttrSet(var_r31->unk_62[var_r31->unk_08], HU3D_MOTATTR_LOOP); + for (var_r30 = 0; var_r30 < 5; var_r30++) { + var_r31->unk_28[var_r30] = CharModelEffectNpcInit(var_r31->unk_62[var_r30], var_r31->unk_7A[var_r30][2], 1, lbl_1_rodata_31C[var_r30]); + var_r31->unk_3C[var_r30] = CharModelEffectNpcInit(var_r31->unk_62[var_r30], var_r31->unk_7A[var_r30][1], 0, lbl_1_rodata_31C[var_r30]); + } + while (TRUE) { + switch (var_r31->unk_04) { + case 0: + fn_1_19B4(var_r31); + break; + case 1: + fn_1_1A00(var_r31); + break; + case 3: + fn_1_1FDC(var_r31); + lbl_1_bss_7C[var_r31->unk_00].unk_04 = 3; + break; + case 4: + fn_1_2044(var_r31); + break; + case 5: + fn_1_21AC(var_r31); + break; + case 6: + fn_1_23AC(var_r31); + break; + case 7: + fn_1_27C8(var_r31); + break; + case 8: + fn_1_2930(var_r31); + break; + case 9: + fn_1_2B24(var_r31); + break; + case 10: + fn_1_3004(var_r31); + break; + case 11: + fn_1_2F18(var_r31); + break; + case 12: + fn_1_25C8(var_r31); + break; + case 13: + fn_1_3700(var_r31); + break; + } + } +} + +void fn_1_1778(M459DllBssCCStruct *arg0, s16 arg1, float arg8, float arg9, u32 arg2) +{ + Hu3DMotionShiftSet(arg0->unk_62[arg0->unk_08], arg0->unk_7A[arg0->unk_08][arg0->unk_60 = arg1], arg8, arg9, arg2); + Hu3DMotionShiftSet(arg0->unk_62[arg0->unk_08 + 5], arg0->unk_7A[arg0->unk_08][arg1], arg8, arg9, arg2); + Hu3DModelScaleSet(arg0->unk_62[arg0->unk_08 + 5], 1.0f, -1.0f, 1.0f); +} + +void fn_1_189C(M459DllBssCCStruct *arg0, s16 arg1, u32 arg2) +{ + Hu3DMotionSet(arg0->unk_62[arg0->unk_08], arg0->unk_7A[arg0->unk_08][arg0->unk_60 = arg1]); + Hu3DMotionSet(arg0->unk_62[arg0->unk_08 + 5], arg0->unk_7A[arg0->unk_08][arg1]); + Hu3DModelScaleSet(arg0->unk_62[arg0->unk_08 + 5], 1.0f, -1.0f, 1.0f); + Hu3DModelAttrSet(arg0->unk_62[arg0->unk_08], arg2); + Hu3DModelAttrSet(arg0->unk_62[arg0->unk_08 + 5], arg2); +} + +void fn_1_19B4(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + do { + var_r30 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + } while (arg0->unk_04 == var_r30); +} + +static const s32 lbl_1_rodata_330[5] = { 0x36, 0x44, 0x47, 0x41, 0x4C }; + +void fn_1_1A00(M459DllBssCCStruct *var_r31) +{ + Vec sp8; + float var_f31; + + s32 var_r30; + s16 var_r29; + s16 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + if (var_r31->unk_00 == 0) { + HuAudFXPlay(0x30D); + } + var_r29 = var_r31->unk_62[10]; + Hu3DModelAttrReset(var_r29, HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f); + Hu3DModelTPLvlSet(var_r29, 1.0f); + sp8 = var_r31->unk_0C; + for (var_r30 = 0; var_r30 < 0x28; var_r30++) { + var_f31 = sind((2.25f * var_r30)); + sp8.y = 170.0f + (350.0f - (350.0f * var_f31)); + Hu3DModelPosSet(var_r29, sp8.x, sp8.y, sp8.z); + var_r27 = var_r31->unk_04; + fn_1_4160(var_r31); + HuPrcVSleep(); + if (var_r31->unk_04 != var_r27) { + return; + } + } + if (var_r31->unk_00 == 0) { + HuAudFXPlay(0x312); + HuAudFXPlay(0x314); + } + for (var_r30 = 0; var_r30 < 0x14; var_r30++) { + var_f31 = sind((4.5f * var_r30)); + var_f31 = 1.0f - var_f31; + Hu3DModelScaleSet(var_r29, var_f31, var_f31, var_f31); + Hu3DModelTPLvlSet(var_r29, var_f31); + sp8.y = 170.0f - (2.0f * var_r30); + Hu3DModelPosSet(var_r29, sp8.x, sp8.y, sp8.z); + var_r26 = var_r31->unk_04; + fn_1_4160(var_r31); + HuPrcVSleep(); + if (var_r31->unk_04 != var_r26) { + return; + } + } + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + HuAudFXPlay(lbl_1_rodata_330[var_r31->unk_08]); + var_r28 = var_r31->unk_10A[0]; + sp8 = var_r31->unk_0C; + sp8.y = 200.0f; + Hu3D3Dto2D(&sp8, 1, &sp8); + espPosSet(var_r28, sp8.x, sp8.y); + espTPLvlSet(var_r28, 1.0f); + espDispOn(var_r28); + fn_1_1778(var_r31, 3, 0.0f, 8.0f, HU3D_ATTR_NONE); + for (var_r30 = 0; var_r30 < 0x3C; var_r30++) { + var_r25 = var_r31->unk_04; + fn_1_4160(var_r31); + HuPrcVSleep(); + if (var_r31->unk_04 != var_r25) { + return; + } + } + fn_1_1778(var_r31, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + espTPLvlSet(var_r28, 1.0f - (0.1f * var_r30)); + var_r24 = var_r31->unk_04; + fn_1_4160(var_r31); + HuPrcVSleep(); + if (var_r31->unk_04 != var_r24) { + return; + } + } + espDispOff(var_r28); + lbl_1_bss_CC[var_r31->unk_00].unk_04 = 0; +} + +void fn_1_1FDC(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + + lbl_1_bss_7C[arg0->unk_00].unk_04 = 1; + do { + var_r30 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + } while (arg0->unk_04 == var_r30); +} + +void fn_1_2044(M459DllBssCCStruct *var_r31) +{ + Vec sp8; + + s32 var_r30; + s16 var_r29; + s32 var_r28; + s32 var_r27; + + var_r29 = var_r31->unk_10A[0]; + sp8 = var_r31->unk_0C; + sp8.y = 200.0f; + Hu3D3Dto2D(&sp8, 1, &sp8); + espPosSet(var_r29, sp8.x, sp8.y); + espTPLvlSet(var_r29, 1.0f); + espDispOn(var_r29); + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + var_r28 = var_r31->unk_04; + fn_1_4160(var_r31); + HuPrcVSleep(); + if (var_r31->unk_04 != var_r28) { + return; + } + } + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + espTPLvlSet(var_r29, 1.0f - (0.1f * var_r30)); + var_r27 = var_r31->unk_04; + fn_1_4160(var_r31); + HuPrcVSleep(); + if (var_r31->unk_04 != var_r27) { + return; + } + } + espDispOff(var_r29); + lbl_1_bss_CC[var_r31->unk_00].unk_04 = 0; +} + +void fn_1_21AC(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (lbl_1_bss_C > arg0->unk_00) { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_50 = 0.0001f; + fn_1_338C(arg0, 0.1f); + var_r29 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r29) { + return; + } + } + } + else { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_50 = -0.0001f; + fn_1_338C(arg0, 0.1f); + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + } + } + fn_1_1778(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +static const s32 lbl_1_rodata_36C[5] = { 0x38, 0x44, 0x47, 0x41, 0x4C }; + +void fn_1_23AC(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (lbl_1_bss_C > arg0->unk_00) { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_50 = 0.0001f; + fn_1_338C(arg0, 0.1f); + var_r29 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r29) { + return; + } + } + } + else { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_50 = -0.0001f; + fn_1_338C(arg0, 0.1f); + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + } + } + HuAudFXPlay(lbl_1_rodata_36C[arg0->unk_08]); + fn_1_1778(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +void fn_1_25C8(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (lbl_1_bss_C > arg0->unk_00) { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_58 = 0.0001f; + fn_1_338C(arg0, 0.1f); + var_r29 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r29) { + return; + } + } + } + else { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_58 = 0.0001f; + fn_1_338C(arg0, 0.1f); + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + } + } + fn_1_1778(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +void fn_1_27C8(M459DllBssCCStruct *arg0) +{ + Vec sp8; + + s32 var_r30; + s16 var_r29; + s32 var_r28; + s32 var_r27; + + var_r29 = arg0->unk_10A[1]; + sp8 = arg0->unk_0C; + sp8.y = 200.0f; + Hu3D3Dto2D(&sp8, 1, &sp8); + espPosSet(var_r29, sp8.x, sp8.y); + espTPLvlSet(var_r29, 1.0f); + espDispOn(var_r29); + for (var_r30 = 0; var_r30 < 0x3C; var_r30++) { + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + } + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + espTPLvlSet(var_r29, 1.0f - (0.1f * var_r30)); + var_r27 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r27) { + return; + } + } + espDispOff(var_r29); + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +static const s32 lbl_1_rodata_380[5] = { 0x38, 0x44, 0x47, 0x41, 0x4C }; + +void fn_1_2930(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + var_r29 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r29) { + return; + } + } + for (var_r30 = 0; var_r30 < 0xF; var_r30++) { + arg0->unk_58 = 0.0001f; + fn_1_338C(arg0, 0.2f); + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + } + HuAudFXPlay(lbl_1_rodata_380[arg0->unk_08]); + fn_1_1778(arg0, 5, 0.0f, 8.0f, HU3D_ATTR_NONE); + for (var_r30 = 0; var_r30 < 0x8C; var_r30++) { + var_r27 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r27) { + return; + } + } + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +static const s32 lbl_1_rodata_398[5] = { 0x39, 0x43, 0x46, 0x40, 0x4B }; + +void fn_1_2B24(M459DllBssCCStruct *arg0) +{ + Vec sp8; + + s16 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r30 = arg0->unk_62[11]; + sp8 = arg0->unk_0C; + sp8.y = 80.0f; + sp8.z = -50.0f; + Hu3DModelPosSet(var_r30, sp8.x, sp8.y, sp8.z); + Hu3DMotionTimeSet(var_r30, 0.0f); + Hu3DModelAttrReset(var_r30, HU3D_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 0x1E; var_r29++) { + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + } + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + HuAudFXPlay(lbl_1_rodata_398[arg0->unk_08]); + fn_1_1778(arg0, 4, 0.0f, 8.0f, HU3D_ATTR_NONE); + while (Hu3DMotionEndCheck(arg0->unk_62[arg0->unk_08]) == 0) { + var_r27 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r27) { + return; + } + } + + if (arg0->unk_08 == 4) { + fn_1_189C(arg0, 0, HU3D_MOTATTR_LOOP); + } + else { + fn_1_1778(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +void fn_1_2F18(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + for (var_r30 = 0; var_r30 < (arg0->unk_00 * 8); var_r30++) { + var_r29 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r29) { + return; + } + } + while (TRUE) { + arg0->unk_50 = -8.0f; + fn_1_338C(arg0, 0.2f); + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 == var_r28) { + if (arg0->unk_0C.x < -600.0f) { + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; + break; + } + } + else { + break; + } + } +} + +void fn_1_3004(M459DllBssCCStruct *arg0) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + arg0->unk_0C.x = 600.0f; + arg0->unk_0C.z = 0.0f; + arg0->unk_0C.y = 0.0f; + var_f31 = -260.0f + (130.0f * arg0->unk_00); + for (var_r30 = 0; var_r30 < (arg0->unk_00 * 0x1E); var_r30++) { + var_r29 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r29) { + return; + } + } +loop_1: + arg0->unk_50 = -8.0f; + fn_1_338C(arg0, 0.2f); + if (arg0->unk_0C.x < var_f31) { + arg0->unk_0C.x = var_f31; + } + else { + var_r28 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r28) { + return; + } + goto loop_1; + } + fn_1_1778(arg0, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + for (var_r30 = 0; var_r30 < 0xF; var_r30++) { + arg0->unk_58 = 0.0001f; + fn_1_338C(arg0, 0.2f); + var_r27 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r27) { + return; + } + } + arg0->unk_1C = 0.0f; + fn_1_1778(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +void fn_1_338C(M459DllBssCCStruct *arg0, float arg8) +{ + float spC; + float var_f31; + float var_f30; + float var_f29; + s16 var_r30; + + var_r30 = 0; + arg0->unk_5C = sqrtf((arg0->unk_50 * arg0->unk_50) + (arg0->unk_58 * arg0->unk_58)); + if (0.0001f <= arg0->unk_5C) { + if (10.0f <= arg0->unk_5C) { + arg0->unk_50 /= arg0->unk_5C; + arg0->unk_58 /= arg0->unk_5C; + arg0->unk_5C = 10.0f; + arg0->unk_50 = 10.0f * arg0->unk_50; + arg0->unk_58 = 10.0f * arg0->unk_58; + } + arg0->unk_1C = fn_1_4210(arg0->unk_1C, atan2d(arg0->unk_50, arg0->unk_58), arg8); + if (8.0f <= arg0->unk_5C) { + var_r30 = 2; + } + else { + var_r30 = 1; + } + } + arg0->unk_0C.x += arg0->unk_50; + arg0->unk_0C.z += arg0->unk_58; + if (arg0->unk_60 != var_r30) { + fn_1_1778(arg0, var_r30, 0.0f, 4.0f, HU3D_MOTATTR_LOOP); + } + arg0->unk_50 = 0.0f; + arg0->unk_58 = 0.0f; +} + +void fn_1_3700(M459DllBssCCStruct *arg0) +{ + s32 var_r30; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + if (lbl_1_bss_C > arg0->unk_00) { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_58 = 0.0001f; + fn_1_338C(arg0, 0.4f); + var_r25 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r25) { + return; + } + } + } + else { + for (var_r30 = 0; var_r30 < 0x1E; var_r30++) { + arg0->unk_58 = 0.0001f; + fn_1_338C(arg0, 0.4f); + var_r24 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r24) { + return; + } + } + } + fn_1_1778(arg0, 4, 0.0f, 8.0f, HU3D_ATTR_NONE); + while (Hu3DMotionEndCheck(arg0->unk_62[arg0->unk_08]) == 0) { + var_r23 = arg0->unk_04; + fn_1_4160(arg0); + HuPrcVSleep(); + if (arg0->unk_04 != var_r23) { + return; + } + } + if (arg0->unk_08 == 4) { + fn_1_189C(arg0, 0, HU3D_MOTATTR_LOOP); + } + else { + fn_1_1778(arg0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + lbl_1_bss_CC[arg0->unk_00].unk_04 = 0; +} + +void fn_1_4160(M459DllBssCCStruct *arg0) +{ + Hu3DModelPosSet(arg0->unk_62[arg0->unk_08], arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z); + Hu3DModelPosSet(arg0->unk_62[arg0->unk_08 + 5], arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z); + Hu3DModelRotSet(arg0->unk_62[arg0->unk_08], arg0->unk_18, arg0->unk_1C, arg0->unk_20); + Hu3DModelRotSet(arg0->unk_62[arg0->unk_08 + 5], arg0->unk_18, arg0->unk_1C, arg0->unk_20); +} + +float fn_1_4210(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg9 - arg8, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg8 + (var_f31 * argA), 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_4314(s32 arg0, u32 arg1) +{ + M459DllBssCCStruct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_bss_CC[arg0]; + var_r31->unk_08 = arg1; + for (var_r30 = 0; var_r30 < 5; var_r30++) { + if (var_r30 != var_r31->unk_08) { + Hu3DModelAttrSet(var_r31->unk_62[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_62[var_r30 + 5], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(var_r31->unk_62[var_r30], 0.0f, 0.0f, -1000.0f); + Hu3DModelPosSet(var_r31->unk_62[var_r30 + 5], 0.0f, 0.0f, -1000.0f); + } + Hu3DModelAttrReset(var_r31->unk_62[var_r31->unk_08], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_62[var_r31->unk_08 + 5], HU3D_ATTR_DISPOFF); + fn_1_1778(var_r31, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); +} + +void fn_1_4530(void) +{ + s32 var_r31; + + HuPrcSleep(0x3C); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_CC[var_r31].unk_04 = 1; + } + while (lbl_1_bss_CC->unk_04 != 0) { + HuPrcVSleep(); + } + lbl_1_bss_0 = HuAudSeqPlay(0x43); + fn_1_4F8C(0); + while (fn_1_4FAC() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_45EC(void) +{ + s32 var_r31; + s32 var_r30; + s16 var_r29; + s32 var_r28; + + HuAudSeqFadeOut(lbl_1_bss_0, 0x64); + HuAudFXPlay(0x814); + var_r28 = fn_1_5300(); + if (fn_1_52F0() > var_r28) { + fn_1_4F8C(1); + while (fn_1_4FAC() != 0) { + HuPrcVSleep(); + } + var_r30 = fn_1_52F0(); + GWMGRecordSet(0xB, var_r30); + var_r29 = MGSeqCreate(0xE, var_r30); + HuAudFXPlay(0x26); + fn_1_5310(); + while (MGSeqStatGet(var_r29) != 0) { + HuPrcVSleep(); + } + } + else { + fn_1_4F8C(1); + while (fn_1_4FAC() != 0) { + HuPrcVSleep(); + } + } + HuAudSStreamPlay(3); + if (fn_1_52F0() >= 0x63) { + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_CC[var_r31].unk_04 = 0xD; + } + while (lbl_1_bss_CC[var_r31].unk_04 == 0xD) { + HuPrcVSleep(); + } + } + HuPrcSleep(0xD2); + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_4764(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_CC[var_r31].unk_04 = 1; + } + while (lbl_1_bss_CC->unk_04 != 0) { + HuPrcVSleep(); + } + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_47E4(void) +{ + HuPrcSleep(0x1E); + HuAudFXPlay(0x30D); + lbl_1_bss_18.unk_00 = 3; + while (lbl_1_bss_18.unk_00 != 0) { + HuPrcVSleep(); + } + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_4850(void) +{ + HuAudFXPlay(9); + lbl_1_bss_CC[lbl_1_bss_14].unk_04 = 9; + while (lbl_1_bss_CC[lbl_1_bss_14].unk_04 == 9) { + HuPrcVSleep(); + } + HuPrcSleep(8); + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_48E4(void) +{ + s32 var_r31; + + lbl_1_bss_CC[lbl_1_bss_14].unk_04 = 7; + HuPrcSleep(0x1E); + lbl_1_bss_CC[lbl_1_bss_10].unk_04 = 8; + HuPrcSleep(0x50); + lbl_1_bss_C = lbl_1_bss_10; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + if ((var_r31 != lbl_1_bss_10) && (var_r31 != lbl_1_bss_14)) { + lbl_1_bss_CC[var_r31].unk_04 = 6; + } + } + while (lbl_1_bss_CC[lbl_1_bss_14].unk_04 == 7) { + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + lbl_1_bss_CC[lbl_1_bss_14].unk_04 = 5; + while (lbl_1_bss_CC[lbl_1_bss_14].unk_04 == 5) { + HuPrcVSleep(); + } + HuPrcSleep(0x3C); + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_4A74(void) +{ + s32 var_r31; + + lbl_1_bss_CC[lbl_1_bss_10].unk_04 = 8; + HuPrcSleep(0x6E); + lbl_1_bss_C = lbl_1_bss_10; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + if (var_r31 != lbl_1_bss_10) { + lbl_1_bss_CC[var_r31].unk_04 = 5; + } + } + while (lbl_1_bss_CC[lbl_1_bss_10].unk_04 != 8) { + HuPrcVSleep(); + } + HuPrcSleep(0x3C); + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_4B68(void) +{ + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_CC[var_r31].unk_04 = 0xB; + } + while (TRUE) { + var_r30 = 0; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + if (lbl_1_bss_CC[var_r31].unk_04 != 0) { + var_r30++; + } + } + if (var_r30 != 0) { + HuPrcVSleep(); + } + else { + break; + } + } + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_4C1C(void) +{ + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_CC[var_r31].unk_04 = 0xA; + } + while (TRUE) { + var_r30 = 0; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + if (lbl_1_bss_CC[var_r31].unk_04 != 0) { + var_r30++; + } + } + if (var_r30 != 0) { + HuPrcVSleep(); + } + else { + break; + } + } + lbl_1_bss_698[0x12] = NULL; + HuPrcEnd(); +} + +void fn_1_4CD0(void) +{ + M459DllBss70Struct *var_r31; + + var_r31 = &lbl_1_bss_70; + var_r31->unk_00 = 0; + var_r31->unk_08 = 0; + var_r31->unk_04 = -1; + while (TRUE) { + switch (var_r31->unk_00) { + case 4: + case 0: + break; + case 1: + if (var_r31->unk_04 == -1) { + var_r31->unk_04 = MGSeqCreate(1, var_r31->unk_08 / 60, -1, -1); + } + var_r31->unk_00 = 2; + break; + case 3: + if (var_r31->unk_04 != -1) { + MGSeqParamSet(var_r31->unk_04, 2, -1); + var_r31->unk_04 = -1; + } + var_r31->unk_00 = 0; + break; + case 2: + if ((var_r31->unk_04 != -1) && (var_r31->unk_08 > 0)) { + if (--var_r31->unk_08 <= 0) { + var_r31->unk_08 = 0; + var_r31->unk_00 = 3; + } + if ((var_r31->unk_08 % 60) == 0) { + MGSeqParamSet(var_r31->unk_04, 1, var_r31->unk_08 / 60); + } + } + break; + } + HuPrcVSleep(); + } +} + +s32 fn_1_4E54(void) +{ + return lbl_1_bss_70.unk_08; +} + +void fn_1_4E64(s32 arg0) +{ + lbl_1_bss_70.unk_08 = arg0; + lbl_1_bss_70.unk_00 = 1; +} + +void fn_1_4E84(void) +{ + lbl_1_bss_70.unk_00 = 4; +} + +void fn_1_4E98(void) +{ + lbl_1_bss_70.unk_00 = 3; +} + +void fn_1_4EAC(void) +{ + M459DllBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + var_r31->unk_00 = 0; + var_r31->unk_08 = -1; + while (TRUE) { + switch (var_r31->unk_00) { + case 0: + break; + case 2: + if (var_r31->unk_08 == -1) { + switch (var_r31->unk_04) { + case 0: + var_r31->unk_08 = MGSeqCreate(3, 0); + break; + case 1: + var_r31->unk_08 = MGSeqCreate(3, 1); + break; + } + } + var_r31->unk_00 = 1; + break; + case 1: + if (MGSeqStatGet(var_r31->unk_08) == 0) { + MGSeqKill(var_r31->unk_08); + var_r31->unk_08 = -1; + var_r31->unk_00 = 0; + } + break; + } + HuPrcVSleep(); + } +} + +void fn_1_4F8C(s32 arg0) +{ + lbl_1_bss_64.unk_00 = 2; + lbl_1_bss_64.unk_04 = arg0; +} + +s32 fn_1_4FAC(void) +{ + return lbl_1_bss_64.unk_00 != 0; +} + +void fn_1_4FC8(void) +{ + float var_f31; + M459DllBss4CStruct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = &lbl_1_bss_4C; + var_r31->unk_0C = 0; + var_r31->unk_10 = (s16)GWMGRecordGet(0xB); + var_r31->unk_14 = 0; + espPosSet(var_r31->unk_00[5], 508.0f, 64.0f); + espPosSet(var_r31->unk_00[4], 488.0f, 56.0f); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + espPosSet(var_r31->unk_00[var_r30 + 2], (var_r30 * 0x10) + 0x1FC, 57.0f); + espPosSet(var_r31->unk_00[var_r30], (var_r30 * 0x10) + 0x1FC, 75.0f); + } + espTPLvlSet(var_r31->unk_00[5], 0.5f); + espPriSet(var_r31->unk_00[5], 0x65); + espPriSet(var_r31->unk_00[4], 0x64); + espPriSet(var_r31->unk_00[2], 0x64); + espPriSet(var_r31->unk_00[3], 0x64); + espPriSet(var_r31->unk_00[0], 0x64); + espPriSet(var_r31->unk_00[1], 0x64); + var_f31 = 1.0f; + while (TRUE) { + if (var_r31->unk_14 != 0) { + if (var_r28 != 0) { + var_f31 += 0.02; + var_f31 = var_f31; + if (var_f31 >= 1.2f) { + var_f31 = 1.2f; + var_r28 = 0; + } + } + else { + var_f31 -= 0.02; + var_f31 = var_f31; + if (var_f31 <= 1.0f) { + var_f31 = 1.0f; + var_r28 = 1; + } + } + espScaleSet(var_r31->unk_00[4], var_f31, var_f31); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + espScaleSet(var_r31->unk_00[var_r30 + 2], var_f31, var_f31); + } + } + var_r29 = var_r31->unk_0C; + espBankSet(var_r31->unk_00[0], var_r29 / 10); + var_r29 = var_r29 % 10; + espBankSet(var_r31->unk_00[1], var_r29); + var_r29 = var_r31->unk_10; + espBankSet(var_r31->unk_00[2], var_r29 / 10); + var_r29 = var_r29 % 10; + espBankSet(var_r31->unk_00[3], var_r29); + HuPrcVSleep(); + } +} + +void fn_1_52D8(s32 arg0) +{ + lbl_1_bss_4C.unk_0C += arg0; +} + +s32 fn_1_52F0(void) +{ + return lbl_1_bss_4C.unk_0C; +} + +s32 fn_1_5300(void) +{ + return lbl_1_bss_4C.unk_10; +} + +s32 fn_1_5310(void) +{ + if (lbl_1_bss_4C.unk_10 < lbl_1_bss_4C.unk_0C) { + lbl_1_bss_4C.unk_10 = lbl_1_bss_4C.unk_0C; + lbl_1_bss_4C.unk_14 = 1; + } +} + +M459DllData70Struct lbl_1_data_70 = { { 0.0f, 300.0f, 0.0f }, { 0.0f, -300.0f, -600.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }; + +void fn_1_535C(void) +{ + LightData *sp8; + s16 *var_r31; + + var_r31 = lbl_1_bss_48; + Hu3DLighInit(); + var_r31[1] = Hu3DGLightCreateV(&lbl_1_data_70.unk_00, &lbl_1_data_70.unk_0C, &lbl_1_data_70.unk_18); + Hu3DGLightInfinitytSet(var_r31[1]); + sp8 = &Hu3DGlobalLight[var_r31[1]]; + { + Vec sp24 = { 0.0f, 3000.0f, 1.0f }; + Vec sp18 = { 0.0f, 1.0f, 0.0f }; + Vec spC = { 0.0f, 0.0f, 0.0f }; + Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); + Hu3DShadowTPLvlSet(0.45f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + Hu3DShadowTPLvlSet(0.3f); + Hu3DModelAttrSet(var_r31[0], HU3D_MOTATTR_LOOP); + while (TRUE) { + HuPrcVSleep(); + } +} + +static const s32 lbl_1_rodata_458[6][3]; + +void fn_1_5490(void) +{ + M459DllBss18Struct *var_r31; + + var_r31 = &lbl_1_bss_18; + var_r31->unk_00 = 0; + var_r31->unk_24[0] = GWPlayerCfg->pad_idx; + var_r31->unk_24[1] = GWPlayerCfg->character; + var_r31->unk_28 = GWPlayerCfg->iscom; + var_r31->unk_2C = 0x14; + lbl_1_bss_14 = 0; + lbl_1_bss_2 = var_r31->unk_24[0]; + while (TRUE) { + switch (var_r31->unk_00) { + case 0: + fn_1_556C(var_r31); + continue; + case 1: + fn_1_55B0(var_r31); + continue; + case 2: + break; + case 3: + fn_1_5A78(var_r31); + continue; + default: + continue; + } + fn_1_5E3C(var_r31); + } +} + +void fn_1_556C(M459DllBss18Struct *arg0) +{ + s32 var_r30; + + do { + var_r30 = arg0->unk_00; + HuPrcVSleep(); + } while (arg0->unk_00 == var_r30); +} + +void fn_1_55B0(M459DllBss18Struct *var_r31) +{ + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + + u8 var_r30; + s16 var_r29; + s32 var_r28; + u16 var_r27; + s32 var_r26; + M459DllBssCCStruct *var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + lbl_1_bss_14 = 0; + var_r28 = -1; + var_r29 = var_r31->unk_04[var_r31->unk_24[1]]; + espDispOn(var_r29); + var_r23 = 0; + while(1) { + var_r30 = 0; + var_r27 = 0; + if (var_r31->unk_28 != 0) { + if (var_r31->unk_2C <= 0) { + var_r20 = lbl_1_bss_70.unk_08; + if ((var_r20 > 0xB4) && (var_r23 == 0)) { + var_r24 = frandmod(0xA); + if (var_r24 >= 5) { + var_r30 |= 1; + } + else if (var_r24 > 1) { + var_r30 |= 2; + } + else { + var_r23 = 1; + } + } + else { + if (lbl_1_bss_14 > lbl_1_bss_10) { + var_r30 |= 1; + } + else if (lbl_1_bss_14 < lbl_1_bss_10) { + var_r30 |= 2; + } + if (lbl_1_bss_14 == lbl_1_bss_10) { + var_r27 |= 0x100; + } + } + var_r31->unk_2C = 0x1E; + } + else { + var_r31->unk_2C--; + } + } + else { + var_r30 = HuPadDStkRep[var_r31->unk_24[0]]; + var_r27 = HuPadBtnDown[var_r31->unk_24[0]]; + } + if (var_r28 != -1) { + if ((var_r27 & 0x100) != 0) { + HuAudFXPlay(2); + break; + } + else { + if ((var_r30 & 1) != 0) { + if (--lbl_1_bss_14 < 0) { + lbl_1_bss_14 = 4; + } + HuAudFXPlay(0); + } + else if ((var_r30 & 2) != 0) { + if (++lbl_1_bss_14 >= 5) { + lbl_1_bss_14 = 0; + } + HuAudFXPlay(0); + } + goto block_30; + } + } + else { + block_30: + if (var_r28 != lbl_1_bss_14) { + var_r25 = &lbl_1_bss_CC[lbl_1_bss_14]; + sp14 = sp20; + sp20 = var_r25->unk_0C; + sp20.y = 40.0f; + espPriSet(var_r29, 0x32); + if (var_r28 == -1) { + sp14 = sp20; + } + else { + lbl_1_bss_7C[var_r28].unk_04 = 3; + } + for (var_r26 = 0; var_r26 <= 4; var_r26++) { + var_f31 = sind((90.0f * (0.25f * var_r26))); + var_f31 *= var_f31 * var_f31; + sp8.x = sp14.x + (var_f31 * (sp20.x - sp14.x)); + sp8.y = sp14.y + (var_f31 * (sp20.y - sp14.y)); + sp8.z = sp14.z + (var_f31 * (sp20.z - sp14.z)); + Hu3D3Dto2D(&sp8, 1, &sp8); + espPosSet(var_r29, sp8.x, sp8.y); + var_r22 = var_r31->unk_00; + HuPrcVSleep(); + if (var_r31->unk_00 != var_r22) { + return; + } + } + espPosSet(var_r29, sp8.x, sp8.y); + lbl_1_bss_7C[lbl_1_bss_14].unk_04 = 1; + } + var_r28 = lbl_1_bss_14; + var_r21 = var_r31->unk_00; + HuPrcVSleep(); + if (var_r31->unk_00 != var_r21) { + return; + } + } + } + lbl_1_bss_7C[lbl_1_bss_14].unk_04 = 3; + espDispOff(var_r29); + lbl_1_bss_18.unk_00 = 0; +} + +void fn_1_5A78(M459DllBss18Struct *arg0) +{ + Vec sp8; + float var_f31; + + s32 var_r31; + s16 var_r29; + M459DllBssCCStruct *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r28 = &lbl_1_bss_CC[lbl_1_bss_14]; + lbl_1_bss_CC[lbl_1_bss_14].unk_04 = 4; + for (var_r31 = 0; var_r31 < 0x3C; var_r31++) { + var_r27 = arg0->unk_00; + HuPrcVSleep(); + if (arg0->unk_00 != var_r27) { + return; + } + } + var_r29 = arg0->unk_14[arg0->unk_24[1]]; + Hu3DModelAttrReset(var_r29, HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(var_r29, 1.0f); + Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f); + sp8 = var_r28->unk_0C; + for (var_r31 = 0; var_r31 < 0x3C; var_r31++) { + var_f31 = sind((1.5000001f * var_r31)); + sp8.y = 170.0f + (350.0f - (350.0f * var_f31)); + Hu3DModelPosSet(var_r29, sp8.x, sp8.y, sp8.z); + var_r26 = arg0->unk_00; + HuPrcVSleep(); + if (arg0->unk_00 != var_r26) { + return; + } + } + for (var_r31 = 0; var_r31 < 0x14; var_r31++) { + var_f31 = sind((4.5f * var_r31)); + var_f31 = 1.0f - var_f31; + Hu3DModelScaleSet(var_r29, var_f31, var_f31, var_f31); + Hu3DModelTPLvlSet(var_r29, var_f31); + Hu3DModelRotSet(var_r29, 0.0f, 540.0f * var_f31, 0.0f); + sp8.y = 170.0f - (2.0f * var_r31); + Hu3DModelPosSet(var_r29, sp8.x, sp8.y, sp8.z); + var_r25 = arg0->unk_00; + HuPrcVSleep(); + if (arg0->unk_00 != var_r25) { + return; + } + } + Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF); + lbl_1_bss_C = lbl_1_bss_14; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + if (var_r31 != lbl_1_bss_14) { + lbl_1_bss_CC[var_r31].unk_04 = 5; + } + } + for (var_r31 = 0; var_r31 < 0x78; var_r31++) { + var_r24 = arg0->unk_00; + HuPrcVSleep(); + if (arg0->unk_00 != var_r24) { + return; + } + } + lbl_1_bss_18.unk_00 = 0; +} + +void fn_1_5E3C(M459DllBss18Struct *arg0) +{ + lbl_1_bss_7C[lbl_1_bss_14].unk_04 = 3; + espDispOff(arg0->unk_04[arg0->unk_24[1]]); + lbl_1_bss_18.unk_00 = 0; +} + +void fn_1_5EAC(void) +{ + M459DllBss7CStruct *var_r31; + s32 var_r30; + + var_r30 = (s32)HuPrcCurrentGet()->user_data; + var_r31 = &lbl_1_bss_7C[var_r30]; + var_r31->unk_00 = var_r30; + var_r31->unk_04 = 0; + while (TRUE) { + switch (var_r31->unk_04) { + case 0: + fn_1_5F40(var_r31); + break; + case 1: + fn_1_5F84(var_r31); + break; + case 2: + fn_1_6198(var_r31); + break; + case 3: + fn_1_6458(var_r31); + break; + } + + } +} + +void fn_1_5F40(M459DllBss7CStruct *arg0) +{ + s32 var_r30; + + do { + var_r30 = arg0->unk_04; + HuPrcVSleep(); + } while (arg0->unk_04 == var_r30); +} + +void fn_1_5F84(M459DllBss7CStruct *arg0) +{ + Vec sp8; + float var_f31; + + M459DllBssCCStruct *var_r27; + s16 var_r30; + s16 var_r29; + s32 var_r28; + s32 var_r26; + + var_r29 = arg0->unk_0C[1]; + var_r30 = arg0->unk_0C[0]; + var_r27 = &lbl_1_bss_CC[arg0->unk_00]; + sp8 = var_r27->unk_0C; + sp8.y = 200.0f; + Hu3D3Dto2D(&sp8, 1, &sp8); + espPosSet(var_r29, sp8.x, sp8.y); + espPosSet(var_r30, sp8.x, sp8.y); + espScaleSet(var_r30, 0.0f, 0.0f); + espPriSet(var_r29, 0x32); + espPriSet(var_r30, 0x31); + if (lbl_1_bss_8 == 0) { + espScaleSet(var_r29, 1.0f, 1.0f); + espScaleSet(var_r30, 0.5f, 0.5f); + espDispOn(var_r29); + espDispOn(var_r30); + } + var_f31 = 0.0f; + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + espTPLvlSet(var_r29, var_f31); + espTPLvlSet(var_r30, var_f31); + var_f31 = 0.08f * var_r28; + var_r26 = arg0->unk_04; + HuPrcVSleep(); + if (arg0->unk_04 != var_r26) { + return; + } + } + espTPLvlSet(var_r29, 0.8f); + espTPLvlSet(var_r30, 0.8f); + lbl_1_bss_7C[arg0->unk_00].unk_04 = 2; +} + +static const s32 lbl_1_rodata_458[6][3] = { + { 0, 0xF, 0xF }, + { 1, 0xA, 0xA }, + { 1, 0x14, 5 }, + { 2, 0x14, 0xA }, + { 2, 5, 0xA }, + { 0x3F000000, 0x3F000000, 0x3F000000 }, +}; + +void fn_1_6198(M459DllBss7CStruct *var_r31) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r28 = var_r31->unk_0C[0]; + var_r27 = lbl_1_rodata_458[var_r31->unk_08][0]; + var_r29 = lbl_1_rodata_458[var_r31->unk_08][1]; + var_r26 = lbl_1_rodata_458[var_r31->unk_08][2]; + while (TRUE) { + if (lbl_1_bss_8 != 0) { + switch (var_r27) { + case 0: + omVibrate(0, var_r29, 6, 6); + break; + case 1: + omVibrate(0, var_r29, 4, 2); + break; + case 2: + omVibrate(0, var_r29, 0xC, 0); + break; + } + } + switch (var_r27) { + case 0: + var_f30 = 0.4f; + break; + case 1: + var_f30 = 0.55f; + break; + case 2: + var_f30 = 0.7f; + break; + } + for (var_r30 = 0; var_r30 < var_r29; var_r30++) { + var_f31 = var_r30 * (var_f30 * (1.0f / var_r29)); + var_f31 += 0.5f; + espScaleSet(var_r28, var_f31, var_f31); + var_r25 = var_r31->unk_04; + HuPrcVSleep(); + if (var_r31->unk_04 != var_r25) { + return; + } + } + + for (var_r30 = 0; var_r30 < var_r26; var_r30++) { + var_f31 = var_f30 - (var_r30 * (var_f30 * (1.0f / var_r26))); + var_f31 += 0.5f; + espScaleSet(var_r28, var_f31, var_f31); + var_r24 = var_r31->unk_04; + HuPrcVSleep(); + if (var_r31->unk_04 != var_r24) { + return; + } + } + } +} + +void fn_1_6458(M459DllBss7CStruct *arg0) +{ + float var_f31; + s32 var_r30; + s16 var_r29; + s16 var_r28; + s32 var_r27; + + var_r29 = arg0->unk_0C[1]; + var_r28 = arg0->unk_0C[0]; + if (lbl_1_bss_8 != 0) { + HuPadRumbleStop(lbl_1_bss_2); + } + var_f31 = 0.8f; + for (var_r30 = 0; var_r30 < 0xA; var_r30++) { + espTPLvlSet(var_r29, var_f31); + espTPLvlSet(var_r28, var_f31); + var_f31 = 0.8f - (0.08f * var_r30); + var_r27 = arg0->unk_04; + HuPrcVSleep(); + if (arg0->unk_04 != var_r27) { + return; + } + } + espDispOff(var_r29); + espDispOff(var_r28); + lbl_1_bss_7C[arg0->unk_00].unk_04 = 0; +} diff --git a/src/REL/m460Dll/main.c b/src/REL/m460Dll/main.c new file mode 100644 index 00000000..52ca989b --- /dev/null +++ b/src/REL/m460Dll/main.c @@ -0,0 +1,1015 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/gamework.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m460Dll.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + +typedef struct M460DllWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + s32 unk_10; + u32 unk_14; + u32 unk_18; + u32 unk_1C; + u32 unk_20; + u32 unk_24; + s32 unk_28; + u32 unk_2C; + s32 unk_30; + char unk34[0x4]; + u32 unk_38; + s32 unk_3C; + s32 unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + u32 unk_50; + s32 unk_54[4]; + s32 unk_64[4]; + s32 unk_74; + s32 unk_78; + s32 unk_7C; + s32 unk_80; + char unk84[4]; + s32 unk_88; + u32 unk_8C; + u32 unk_90; + s32 unk_94; +} M460DllWork; /* size = 0x98 */ + +void fn_1_11EC(omObjData *object); +void fn_1_1548(omObjData *object); +void fn_1_197C(omObjData *object); +void fn_1_201C(omObjData *object); +omObjFunc fn_1_24F4(Process *arg1, omObjData *object); +void fn_1_2564(omObjData *object); +omObjFunc fn_1_2D64(Process *process, omObjData *object); +void fn_1_2D70(omObjData *object); +void fn_1_32CC(Process *process); +void fn_1_337C(omObjData *object); +void fn_1_35F0(omObjData *object); +void fn_1_3618(omObjData *object); +void fn_1_3BC0(ModelData *model, Mtx mtx); +M460DllCameraStruct *fn_1_3E90(s32 arg0); +M460DllCameraStruct *fn_1_3F2C(s32 arg0); +void fn_1_42BC(u32 arg0); +s32 fn_1_4358(void); +void fn_1_4C8(omObjData *object); +void fn_1_7FC(omObjData *object); +void fn_1_948(omObjData *object); +void fn_1_D7C(omObjData *object); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_4C[3] = { + { 0.0f, 442.0f, -927.00006f }, + { 0.0f, 442.0f, -927.00006f }, + { 0.0f, 325.0f, -600.0f }, +}; +Vec lbl_1_data_70[3] = { + { 4.5f, 0.0f, 450.0f }, + { 4.5f, 0.0f, 450.0f }, + { 9.75f, 0.0f, 1275.0f }, +}; +float lbl_1_data_94[3] = { 70.0f, 70.0f, 41.5f }; +float lbl_1_data_A0[3] = { 0.0f, 0.016666668f, 0.0f }; +s32 lbl_1_data_AC[3] = { -0x3C, 0x3C, 0 }; +GXColor lbl_1_data_B8 = { 0, 0, 0, 0 }; + +Process *lbl_1_bss_30; +// M460DllWork2 +omObjData *lbl_1_bss_2C; +omObjData *lbl_1_bss_28; +// M460DllWork2 +omObjData *lbl_1_bss_24; +s16 lbl_1_bss_20; +s16 lbl_1_bss_1A[3]; +s16 lbl_1_bss_18; +s16 lbl_1_bss_16; +s16 lbl_1_bss_14; +s16 lbl_1_bss_12; +s16 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Mtx sp2C; + Process *var_r31; + LightData *var_r30; + + Vec sp20 = { 0.0f, 0.0f, 0.0f }; + Vec sp14 = { 0.0f, 0.0f, -1.0f }; + Vec sp8; + + lbl_1_bss_C = 0; + HuAudSndGrpSet(0x53); + HuAudFXListnerSetEX(&sp20, &sp14, 10000.0f, 566.6667f, 0.0f, 300.0f, 300.0f); + lbl_1_bss_8 = lbl_1_bss_4 = -1; + lbl_1_bss_20 = -1; + lbl_1_bss_0 = 1; + lbl_1_data_28.x = 200.0f; + lbl_1_data_28.y = 1200.0f; + lbl_1_data_28.z = 160.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_1A[0] = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_1A[0]); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_1A[0]]; + var_r30->unk_00 |= 0x8000; + lbl_1_data_18.x = 160.0f; + lbl_1_data_18.y = 0.0f; + lbl_1_data_18.z = 4200.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + mtxRot(sp2C, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f); + MTXMultVec(sp2C, &sp8, &lbl_1_data_28); + Hu3DGLightPosAimSetV(lbl_1_bss_1A[0], &lbl_1_data_28, &lbl_1_data_40); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_18 = lbl_1_bss_16 = lbl_1_bss_14 = lbl_1_bss_12 = lbl_1_bss_10 = -1; + var_r31 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_30 = var_r31; + omGameSysInit(var_r31); + fn_1_32CC(var_r31); + lbl_1_bss_2C = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_4C8); + fn_1_67B4(var_r31); + fn_1_49A0(var_r31); +} + +void fn_1_4C8(omObjData *var_r30) +{ + M460DllWork *work; + + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M460DllWork), MEMORY_DEFAULT_NUM); + work = var_r30->data; + memset(work, 0, sizeof(M460DllWork)); + work->unk_00 = 0; + work->unk_04 = 0; + work->unk_0C = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_4C = 0; + work->unk_50 = 0; + work->unk_08 = 0; + work->unk_88 = 0; + work->unk_74 = work->unk_78 = work->unk_7C = work->unk_80 = -1; + work->unk_8C = 0; + work->unk_94 = 0; + work->unk_30 = 0; + work->unk_30 = GWMGRecordGet(0xC); + work->unk_28 = (work->unk_30 >> 0x10) & 0xFF; + work->unk_24 = (work->unk_30 >> 0x18) & 0xFF; + work->unk_30 = (u16)work->unk_30; + fn_1_8CAC(lbl_1_bss_30, work->unk_30); + var_r30->func = fn_1_948; +} + +void fn_1_5F0(omObjData *var_r29) +{ + Vec sp14; + Vec sp8; + M460DllCameraStruct *var_r31; + M460DllWork *work; + + work = var_r29->data; + work->unk_04++; + work->unk_10++; + work->unk_18++; + work->unk_50++; + if ((omSysExitReq != 0) && (work->unk_00 != 5)) { + work->unk_00 = 4; + fn_1_7FC(var_r29); + } + var_r31 = fn_1_3F2C(1); + sp8.x = -(sind(var_r31->unk_28.y) * cosd(var_r31->unk_28.x)); + sp8.y = -(-sind(var_r31->unk_28.x)); + sp8.z = -(cosd(var_r31->unk_28.y) * cosd(var_r31->unk_28.x)); + sp14.x = var_r31->unk_1C.x - (sp8.x * var_r31->unk_34); + sp14.y = var_r31->unk_1C.y - (sp8.y * var_r31->unk_34); + sp14.z = var_r31->unk_1C.z - (sp8.z * var_r31->unk_34); + HuAudFXListnerUpdate(&sp14, &sp8); +} + +void fn_1_7FC(omObjData *object) +{ + M460DllWork *work = object->data; + + if (work->unk_08 == 0) { + switch (work->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + lbl_1_bss_0 = 1; + fn_1_8FAC(0); + work->unk_00 = 1; + work->unk_10 = 0; + object->func = fn_1_24F4(lbl_1_bss_30, object); + break; + case 1: + work->unk_00 = 2; + work->unk_18 = 0; + object->func = fn_1_1548; + break; + case 2: + work->unk_00 = 3; + work->unk_50 = 0; + object->func = fn_1_2D64(lbl_1_bss_30, object); + break; + case 3: + case 4: + work->unk_08 = 1; + work->unk_00 = 5; + object->func = fn_1_D7C; + break; + case 5: + default: + work->unk_00 = 5; + object->func = fn_1_11EC; + } + work->unk_04 = 0; + } +} + +void fn_1_948(omObjData *object) +{ + fn_1_5F0(object); + fn_1_7FC(object); +} + +void fn_1_D7C(omObjData *object) +{ + M460DllWork *work = object->data; + fn_1_5F0(object); + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + WipeColorSet(0xFF, 0xFF, 0xFF); + work->unk_08 = 0; + fn_1_7FC(object); + } +} + +void fn_1_11EC(omObjData *object) +{ + fn_1_5F0(object); + if (WipeStatGet() == 0) { + fn_1_4BE4(); + fn_1_6814(); + fn_1_8F38(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_1548(omObjData *object) +{ + M460DllWork *work = object->data; + fn_1_5F0(object); + switch (work->unk_14) { + case 0: + work->unk_1C = 0x3C; + work->unk_20 = 0x3C; + lbl_1_bss_18 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_18, 320.0f, 240.0f); + work->unk_14 = 1; + work->unk_18 = 0; + break; + case 1: + if ((lbl_1_bss_8 < 0) && ((MGSeqStatGet(lbl_1_bss_18) & 0x10) != 0)) { + lbl_1_bss_8 = HuAudSeqPlay(0x49); + } + if (MGSeqStatGet(lbl_1_bss_18) == 0) { + work->unk_2C = 0; + work->unk_44 = 0; + if (work->unk_08 == 0) { + work->unk_18 = 0; + object->func = fn_1_197C; + } + } + break; + } +} + +void fn_1_197C(omObjData *object) +{ + M460DllWork *work = object->data; + s32 var_r26 = 0; + s32 sp8 = 0; + fn_1_5F0(object); + switch (work->unk_14) { + case 1: + if (WipeStatGet() == 0) { + work->unk_38 = 3; + work->unk_3C = 0; + work->unk_40 = 0; + work->unk_1C = 0x3C; + work->unk_20 = 0x3C; + work->unk_14 = 2; + work->unk_18 = 0; + } + break; + case 2: + if (work->unk_38 == 3) { + if ((--work->unk_20) == 0) { + work->unk_20 = 0x3C; + work->unk_1C--; + if (work->unk_1C == 0) { + work->unk_44 = 1; + fn_1_42BC(frandmod(2)); + } + } + if ((lbl_1_bss_16 < 0) && (work->unk_1C < 0xA)) { + lbl_1_bss_16 = MGSeqCreate(1, work->unk_1C, -1, -1); + } + MGSeqParamSet(lbl_1_bss_16, 1, work->unk_1C); + } + else { + if (lbl_1_bss_16 >= 0) { + MGSeqParamSet(lbl_1_bss_16, 2, -1); + lbl_1_bss_16 = -1; + } + if (frandmod(0x3E8) < 0x1F4) { + work->unk_44 = 1; + } + if (work->unk_2C >= 0x1E) { + work->unk_44 = 1; + } + if (work->unk_44 != 0) { + work->unk_44 = 1; + work->unk_88 = 1; + } + work->unk_14 = 3; + work->unk_18 = 0; + } + break; + case 3: + if (fn_1_4358() != 0) { + if (work->unk_44 != 0) { + var_r26 = 1; + } + else if (work->unk_18 > 60.0f) { + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x1E); + WipeColorSet(0, 0, 0); + } + work->unk_14 = 4; + work->unk_18 = 0; + } + } + else { + work->unk_18 = 0; + } + break; + case 4: + if (WipeStatGet() == 0) { + work->unk_2C++; + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x1E); + } + work->unk_14 = 1; + work->unk_18 = 0; + } + break; + } + if (var_r26 != 0) { + lbl_1_bss_14 = MGSeqCreate(3, 1); + HuAudSeqFadeOut(lbl_1_bss_8, 0x64); + work->unk_24++; + if (work->unk_24 > 0xFF) { + work->unk_24 = 0xFF; + } + if (work->unk_2C > work->unk_30) { + work->unk_28 = work->unk_24; + work->unk_30 = work->unk_2C; + work->unk_48 = 1; + GWMGRecordSet(0xC, work->unk_30); + } + mgRecordExtra = work->unk_2C; + work->unk_14 = 5; + work->unk_18 = 0; + if (work->unk_08 == 0) { + object->func = fn_1_201C; + } + } +} + +void fn_1_201C(omObjData *object) +{ + M460DllWork *work = object->data; + + if (lbl_1_bss_16 >= 0) { + MGSeqParamSet(lbl_1_bss_16, 2, -1); + lbl_1_bss_16 = -1; + } + fn_1_5F0(object); + if (MGSeqStatGet(lbl_1_bss_14) == 0) { + if (work->unk_48 != 0) { + fn_1_8FAC(1); + lbl_1_bss_12 = MGSeqCreate(0xE, work->unk_30); + work->unk_48 = 0; + } + work->unk_14 = 6; + work->unk_18 = 0; + fn_1_7FC(object); + } +} + +omObjFunc fn_1_24F4(Process *process, omObjData *object) +{ + M460DllCameraStruct *var_r31; + + object->work[0] = object->work[1] = 0; + fn_1_3E68(1); + var_r31 = fn_1_3E90(1); + var_r31->unk_84 = 1.0f; + var_r31->unk_94 = 0; + return fn_1_2564; +} + +void fn_1_2564(omObjData *object) +{ + Vec sp20; + M460DllCameraStruct *var_r26; + M460DllWork *work; + s32 var_r24; + float var_f31; + + work = object->data; + fn_1_5F0(object); + object->work[0]++; + var_f31 = lbl_1_data_AC[object->work[1]]; + var_r24 = 1; + if (var_f31 < 0.0f) { + var_r24 = 0; + var_f31 *= -1.0f; + } + var_f31 = object->work[0] / var_f31; + VECSubtract(&lbl_1_data_4C[object->work[1] + var_r24], &lbl_1_data_4C[object->work[1]], &sp20); + VECScale(&sp20, &sp20, var_f31); + VECAdd(&lbl_1_data_4C[object->work[1]], &sp20, &sp20); + Center.x = sp20.x; + Center.y = sp20.y; + Center.z = sp20.z; + VECSubtract(&lbl_1_data_70[object->work[1] + var_r24], &lbl_1_data_70[object->work[1]], &sp20); + VECScale(&sp20, &sp20, var_f31); + VECAdd(&lbl_1_data_70[object->work[1]], &sp20, &sp20); + CRot.x = sp20.x; + CRot.y = sp20.y; + CRot.z = 0.0f; + CZoom = sp20.z; + var_r26 = fn_1_3E90(1); + var_r26->unk_1C = Center; + var_r26->unk_28 = CRot; + var_r26->unk_34 = CZoom; + var_r26->unk_10 = lbl_1_data_94[object->work[1]] + (var_f31 * (lbl_1_data_94[object->work[1] + var_r24] - lbl_1_data_94[object->work[1]])); + if (var_f31 >= 1.0f) { + object->work[0] = 0; + object->work[1]++; + if (lbl_1_data_A0[object->work[1]] > 0.0f) { + fn_1_8BA0(lbl_1_data_A0[object->work[1]]); + } + if (lbl_1_data_AC[object->work[1]] == 0) { + work->unk_0C = 2; + fn_1_7FC(object); + } + else if (lbl_1_data_AC[object->work[1] + 1] == 0) { + work->unk_0C = 1; + } + } +} + +omObjFunc fn_1_2D64(Process *process, omObjData *object) +{ + return fn_1_2D70; +} + +void fn_1_2D70(omObjData *object) +{ + M460DllWork *work = object->data; + s32 var_r23 = 1; + fn_1_5F0(object); + if (lbl_1_bss_12 >= 0) { + if (MGSeqStatGet(lbl_1_bss_12) != 0) { + var_r23 = 0; + } + else { + lbl_1_bss_12 = -1; + } + } + if (work->unk_8C != 1) { + var_r23 = 0; + } + if (var_r23 != 0) { + work->unk_4C = 1; + if (lbl_1_bss_4 < 0) { + lbl_1_bss_4 = HuAudSStreamPlay(4); + } + if (work->unk_50 >= 210.0f) { + work->unk_4C = 2; + fn_1_7FC(object); + } + } + else { + work->unk_50 = 0; + } +} + +void fn_1_32CC(Process *process) +{ + Hu3DCameraCreate(0x1F); + lbl_1_bss_28 = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_28->work[0] = 5; + lbl_1_bss_24 = omAddObjEx(process, 0xC, 1, 0, -1, fn_1_337C); + lbl_1_bss_24->work[0] = 0; +} + +void fn_1_337C(omObjData *object) +{ + UnkM460DllStruct sp1C[5] = { + { 320.0f, 240.0f, 640.0f, 480.0f }, + { 160.0f, 120.0f, 320.0f, 240.0f }, + { 160.0f, 360.0f, 320.0f, 240.0f }, + { 480.0f, 120.0f, 320.0f, 240.0f }, + { 480.0f, 360.0f, 320.0f, 240.0f }, + }; + s32 sp8[5] = { 1, 2, 4, 8, 16 }; + M460DllCameraStruct *var_r31; + s32 var_r29; + M460DllCameraStruct *var_r28; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 10 * sizeof(M460DllCameraStruct), MEMORY_DEFAULT_NUM); + var_r28 = object->data; + memset(var_r28, 0, 10 * sizeof(M460DllCameraStruct)); + object->model[0] = Hu3DHookFuncCreate(fn_1_3BC0); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelCameraSet(object->model[0], 0x1E); + for (var_r31 = var_r28, var_r29 = 0; var_r29 < 5; var_r29++, var_r31++) { + var_r31->unk_00 = 0; + var_r31->unk_04 = var_r29 * 0x64; + var_r31->unk_10 = 41.5f; + var_r31->unk_14 = 100.0f; + var_r31->unk_18 = 5500.0f; + var_r31->unk_1C.x = 0.0f; + var_r31->unk_1C.y = 0.0f; + var_r31->unk_1C.z = 0.0f; + var_r31->unk_28.x = -15.0f; + var_r31->unk_28.y = 0.0f; + var_r31->unk_28.z = 0.0f; + var_r31->unk_34 = 1000.0f; + var_r31->unk_40 = 1.0f; + var_r31->unk_44.unk_00 = sp1C[var_r29].unk_00; + var_r31->unk_44.unk_04 = sp1C[var_r29].unk_04; + var_r31->unk_44.unk_08 = sp1C[var_r29].unk_08; + var_r31->unk_44.unk_0C = sp1C[var_r29].unk_0C; + var_r31->unk_3C = var_r31->unk_0C = sp8[var_r29]; + var_r31->unk_08 = var_r29; + var_r31->unk_38 = var_r29; + } + var_r31 = var_r28; + var_r31->unk_00 = 1; + object->work[1] = object->work[2] = 0; + object->work[0]++; + fn_1_3618(object); + object->func = fn_1_35F0; +} + +void fn_1_35F0(omObjData *object) +{ + fn_1_3618(object); +} + +void fn_1_3618(omObjData *var_r28) +{ + float var_f31; + M460DllCameraStruct *var_r31; + s32 var_r30; + s32 var_r29; + M460DllCameraStruct *var_r27; + u32 var_r26; + u32 var_r25; + s32 var_r24; + u32 var_r23; + u32 var_r22; + u32 var_r21; + + var_r27 = var_r28->data; + { + s32 sp40[4] = { 2, 4, 8, 16 }; + u32 sp30[4]; + s32 sp20[4]; + float sp10[4]; + float sp8[2]; + var_r24 = 0; + var_r26 = 0; + memcpy(&var_r27[5], var_r27, 5 * sizeof(M460DllCameraStruct)); + var_r28->work[1] = var_r28->work[2]; + switch (var_r28->work[1]) { + case 0: + break; + case 1: + var_r26 |= 1; + break; + case 2: + var_r26 |= 1; + case 3: + var_r24 = 1; + case 4: + var_r26 |= 0x1E; + break; + } + if (var_r24 != 0) { + Hu3DModelAttrReset(var_r28->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(var_r28->model[0], HU3D_ATTR_DISPOFF); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp30[var_r30] = var_r27[var_r30 + 6].unk_04; + sp20[var_r30] = var_r30; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + for (var_r29 = var_r30 + 1; var_r29 < 4; var_r29++) { + if ((var_r30 != var_r29) && (sp30[var_r30] > sp30[var_r29])) { + var_r25 = sp30[var_r30]; + sp30[var_r30] = sp30[var_r29]; + sp30[var_r29] = var_r25; + var_r25 = sp20[var_r30]; + sp20[var_r30] = sp20[var_r29]; + sp20[var_r29] = var_r25; + } + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27[sp20[var_r30] + 6].unk_3C = sp40[var_r30]; + var_r27[sp20[var_r30] + 6].unk_38 = var_r30 + 1; + } + + for (var_r31 = &var_r27[5], var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_00 == 0) || ((var_r26 & var_r31->unk_0C) == 0)) { + Hu3DCamera[var_r31->unk_38].fov = -1.0f; + } + else { + var_f31 = 1.2f * ((var_r31->unk_44.unk_08 / 640.0f) / (var_r31->unk_44.unk_0C / 480.0f)); + sp10[2] = var_r31->unk_44.unk_08 * var_r31->unk_40; + sp10[3] = var_r31->unk_44.unk_0C * var_r31->unk_40; + Hu3DCameraPerspectiveSet(var_r31->unk_3C, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18, var_f31); + Hu3DCameraViewportSet(var_r31->unk_3C, var_r31->unk_44.unk_00 - (0.5f * sp10[2]), var_r31->unk_44.unk_04 - (0.5f * sp10[3]), sp10[2], + sp10[3], 0.0f, 1.0f); + sp10[0] = var_r31->unk_44.unk_00 - (0.5f * sp10[2]); + sp10[1] = var_r31->unk_44.unk_04 - (0.5f * sp10[3]); + sp8[0] = var_r31->unk_44.unk_00 + (0.5f * sp10[2]); + sp8[1] = var_r31->unk_44.unk_04 + (0.5f * sp10[3]); + if (sp10[0] < 0.0f) { + sp10[0] = 0.0f; + } + if (sp10[1] < 0.0f) { + sp10[1] = 0.0f; + } + if (sp8[0] > 640.0f) { + sp8[0] = 640.0f; + } + if (sp8[1] > 480.0f) { + sp8[1] = 480.0f; + } + sp8[0] -= sp10[0]; + sp8[1] -= sp10[1]; + var_r21 = sp8[1]; + var_r22 = sp8[0]; + var_r23 = sp10[1]; + Hu3DCameraScissorSet(var_r31->unk_3C, sp10[0], var_r23, var_r22, var_r21); + var_r29 = var_r31->unk_38; + CenterM[var_r29].x = var_r31->unk_1C.x; + CenterM[var_r29].y = var_r31->unk_1C.y; + CenterM[var_r29].z = var_r31->unk_1C.z; + CRotM[var_r29].x = var_r31->unk_28.x; + CRotM[var_r29].y = var_r31->unk_28.y; + CRotM[var_r29].z = var_r31->unk_28.z; + CZoomM[var_r29] = var_r31->unk_34; + } + } + } +} + +void fn_1_3BC0(ModelData *model, Mtx mtx) +{ + Mtx sp3C; + Mtx spC; + float var_f31; + float var_f30; + float var_f29; + + DCStoreRange(&lbl_1_data_B8, 4); + C_MTXPerspective(spC, 41.5f, 1.2f, 100.0f, 5500.0f); + GXSetProjection(spC, GX_PERSPECTIVE); + MTXIdentity(sp3C); + GXLoadPosMtxImm(sp3C, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, lbl_1_data_B8); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + var_f31 = 4125.0f; + var_f30 = 2750.0f; + var_f29 = 2530.0f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-var_f31, var_f30, -var_f29); + GXPosition3f32(var_f31, var_f30, -var_f29); + GXPosition3f32(var_f31, -var_f30, -var_f29); + GXPosition3f32(-var_f31, -var_f30, -var_f29); +} + +void fn_1_3E68(u32 arg0) +{ + lbl_1_bss_24->work[2] = arg0; +} + +u32 fn_1_3E7C(void) +{ + return lbl_1_bss_24->work[1]; +} + +M460DllCameraStruct *fn_1_3E90(s32 arg0) +{ + M460DllCameraStruct *var_r31; + s32 var_r30; + M460DllCameraStruct *var_r29; + + var_r29 = lbl_1_bss_24->data; + for (var_r31 = var_r29, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_0C & arg0) != 0) { + break; + } + } + if (var_r30 >= 5) { + OSReport("M460:Camera Flag Error!!\n"); + return NULL; + } + return var_r31; +} + +M460DllCameraStruct *fn_1_3F2C(s32 arg0) +{ + M460DllCameraStruct *var_r31; + s32 var_r30; + M460DllCameraStruct *var_r29; + + var_r29 = lbl_1_bss_24->data; + for (var_r31 = &var_r29[5], var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_0C & arg0) != 0) { + break; + } + } + if (var_r30 >= 5) { + OSReport("M460:Camera Flag Error!!\n"); + return NULL; + } + return var_r31; +} + +M460DllCameraStruct *fn_1_3FC8(u32 arg0) +{ + M460DllCameraStruct *var_r31 = lbl_1_bss_24->data; + if (arg0 >= 5) { + OSReport("M460:Camera No. Error!!\n"); + return NULL; + } + return &var_r31[arg0]; +} + +M460DllCameraStruct *fn_1_4030(u32 arg0) +{ + M460DllCameraStruct *var_r31 = lbl_1_bss_24->data; + if (arg0 >= 5) { + OSReport("M460:Camera No. Error!!\n"); + return NULL; + } + return &var_r31[arg0 + 5]; +} + +void fn_1_409C(s32 arg0, s32 arg1) +{ + M460DllCameraStruct *var_r31; + s32 var_r30; + s32 var_r29; + M460DllCameraStruct *var_r28; + M460DllCameraStruct *var_r27; + + var_r29 = 0; + if (arg0 >= 0) { + var_r27 = lbl_1_bss_24->data; + var_r28 = &var_r27[5]; + for (var_r31 = var_r28, var_r30 = 0; var_r30 < 5; var_r30++, var_r31++) { + if ((var_r31->unk_0C & arg1) != 0) { + var_r29 |= var_r31->unk_3C; + } + } + Hu3DModelCameraSet(arg0, var_r29); + } +} + +s32 fn_1_4134(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_00; +} + +u32 fn_1_414C(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_0C; +} + +u32 fn_1_4164(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_14; +} + +s32 fn_1_417C(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_4C; +} + +s32 fn_1_4194(void) +{ + return 1; +} + +s32 fn_1_419C(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_88; +} + +void fn_1_41B4(s32 arg0, s32 arg1, s32 arg2) +{ + M460DllWork *work = lbl_1_bss_2C->data; + work->unk_64[arg0 &= 3] = arg1; + work->unk_54[arg0] = arg2; +} + +void fn_1_41F4(s32 arg0) +{ + ((M460DllWork *)lbl_1_bss_2C->data)->unk_8C |= (1 << ((arg0 & 7) * 4)); +} + +void fn_1_4224(s32 arg0) +{ + ((M460DllWork *)lbl_1_bss_2C->data)->unk_90 |= (1 << ((arg0 & 3) * 4)); +} + +void fn_1_4254(s32 arg0) +{ + ((M460DllWork *)lbl_1_bss_2C->data)->unk_94 |= (1 << ((arg0 & 3) * 4)); +} + +s32 fn_1_4284(void) +{ + return MGSeqStatGet(lbl_1_bss_14) == 0; +} + +void fn_1_42BC(u32 arg0) +{ + M460DllWork *work = lbl_1_bss_2C->data; + if (work->unk_38 == 3) { + work->unk_38 = arg0; + } +} + +s32 fn_1_42F0(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_38; +} + +void fn_1_4308(void) +{ + ((M460DllWork *)lbl_1_bss_2C->data)->unk_3C = 1; +} + +s32 fn_1_4324(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_3C; +} + +void fn_1_433C(void) +{ + ((M460DllWork *)lbl_1_bss_2C->data)->unk_40 = 1; +} + +s32 fn_1_4358(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_40; +} + +u32 fn_1_4370(void) +{ + return ((M460DllWork *)lbl_1_bss_2C->data)->unk_2C; +} + +void fn_1_4388(Vec *sp8, Vec *var_r31) +{ + Vec sp10; + float var_f30; + float var_f29; + + VECSubtract(var_r31, sp8, &sp10); + Center = *var_r31; + CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z))); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp10); +} + +void fn_1_4590(float arg8, float arg9, float argA, float argB, float argC, float argD) +{ + Vec sp3C; + Vec sp30; + Vec sp24; + + sp3C.x = arg8; + sp3C.y = arg9; + sp3C.z = argA; + sp30.x = argB; + sp30.y = argC; + sp30.z = argD; + VECSubtract(&sp30, &sp3C, &sp24); + Center = sp30; + CRot.x = atan2d(sp24.y, sqrtf((sp24.x * sp24.x) + (sp24.z * sp24.z))); + CRot.y = atan2d(-sp24.x, -sp24.z); + CRot.z = 0.0f; + CZoom = VECMag(&sp24); +} + +float fn_1_47D0(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_48EC(float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} diff --git a/src/REL/m460Dll/map.c b/src/REL/m460Dll/map.c new file mode 100644 index 00000000..15fa7f53 --- /dev/null +++ b/src/REL/m460Dll/map.c @@ -0,0 +1,547 @@ +#include "datadir_enum.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "string.h" + +#include "REL/m460Dll.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + +typedef struct UnkM460MapWork { + s32 unk_00; + u32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + s32 unk_18; + s32 unk_1C; + char unk20[4]; + u32 unk_24; + s32 unk_28; + s32 unk_2C; + u32 unk_30; + float unk_34; + float unk_38; + Vec unk_3C; + Vec unk_48; + HsfObject *unk_54; + u32 unk_58; + void *unk_5C; +} UnkM460MapWork; /* size = 0x60 */ + +void fn_1_6818(omObjData *object); +void fn_1_6C00(omObjData *object); +void fn_1_73F8(omObjData *object); +u32 fn_1_76C4(u32 arg0, u32 arg1); +void fn_1_7724(ModelData *model, Mtx mtx); +void fn_1_7790(ModelData *model, Mtx mtx); +void fn_1_7B94(s32 arg0); +void fn_1_7DA8(omObjData *object, Vec *arg1, u32 arg2); + +float lbl_1_data_1E8[8][8] = { + { 0.0f, 325.0f, -387.0f, -8.25f, 15.0f, 0.0f, 1208.0f, 38.65f }, + { 0.0f, 325.0f, -387.0f, -8.25f, -15.0f, 0.0f, 1208.0f, 38.65f }, + { 0.0f, 325.0f, -700.0f, -45.0f, 18.0f, 0.0f, 1500.0f, 41.5f }, + { 0.0f, 325.0f, -700.0f, -45.0f, 0.0f, 0.0f, 1500.0f, 41.5f }, + { 0.0f, 325.0f, -700.0f, -45.0f, -18.0f, 0.0f, 925.0f, 68.0f }, + { 0.0f, 302.0f, -783.0f, 14.25f, 28.5f, 0.0f, 833.0f, 61.0f }, + { 0.0f, 302.0f, -783.0f, 14.25f, 0.0f, 0.0f, 833.0f, 61.0f }, + { 0.0f, 302.0f, -783.0f, 14.25f, -28.5f, 0.0f, 833.0f, 61.0f }, +}; +float lbl_1_data_2E8[2][8] = { + { -250.0f, 200.0f, -1000.0f, -10.0f, 0.0f, 0.0f, 1200.0f, 41.5f }, + { 250.0f, 200.0f, -1000.0f, -10.0f, 0.0f, 0.0f, 1200.0f, 41.5f }, +}; +s32 lbl_1_data_328[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x00), DATA_MAKE_NUM(DATADIR_M460, 0x01), DATA_MAKE_NUM(DATADIR_M460, 0x02) }; +s32 lbl_1_data_334[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x03), DATA_MAKE_NUM(DATADIR_M460, 0x04), DATA_MAKE_NUM(DATADIR_M460, 0x05) }; +s32 lbl_1_data_340[3] = { DATA_MAKE_NUM(DATADIR_M460, 0x06), DATA_MAKE_NUM(DATADIR_M460, 0x07), DATA_MAKE_NUM(DATADIR_M460, 0x08) }; +s32 lbl_1_data_34C[2] = { DATA_MAKE_NUM(DATADIR_M460, 0x09), DATA_MAKE_NUM(DATADIR_M460, 0x0A) }; +s32 lbl_1_data_354[2] = { DATA_MAKE_NUM(DATADIR_M460, 0x0B), DATA_MAKE_NUM(DATADIR_M460, 0x0C) }; + +// UnkM460MapWork +omObjData *lbl_1_bss_48; + +void fn_1_67B4(Process *process) +{ + omObjData *var_r31 = omAddObjEx(process, 0x1E, 0x10, 0, -1, fn_1_6818); + lbl_1_bss_48 = var_r31; + var_r31->work[0] = 0; +} + +void fn_1_6814(void) { } + +void fn_1_6818(omObjData *object) +{ + s32 var_r31; + s32 var_r30; + UnkM460MapWork *var_r28; + HsfanimStruct01 *var_r27; + + var_r28 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460MapWork), MEMORY_DEFAULT_NUM); + memset(var_r28, 0, sizeof(UnkM460MapWork)); + omSetTra(object, 0.0f, 0.0f, 0.0f); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r30 = Hu3DModelCreateFile(lbl_1_data_328[var_r31]); + object->model[var_r31] = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r30 = Hu3DModelCreateFile(lbl_1_data_334[var_r31]); + object->model[var_r31 + 3] = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r30 = Hu3DModelCreateFile(lbl_1_data_340[var_r31]); + object->model[var_r31 + 6] = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = Hu3DModelCreateFile(lbl_1_data_34C[var_r31]); + object->model[var_r31 + 9] = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = Hu3DModelCreateFile(lbl_1_data_354[var_r31]); + object->model[var_r31 + 0xB] = var_r30; + Hu3DModelLayerSet(var_r30, 3); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + } + var_r28->unk_08 = 8; + fn_1_73F8(object); + var_r30 = Hu3DHookFuncCreate(fn_1_7724); + object->model[13] = var_r30; + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 7); + var_r30 = Hu3DHookFuncCreate(fn_1_7790); + object->model[14] = var_r30; + Hu3DModelCameraSet(var_r30, 2); + Hu3DModelLayerSet(var_r30, 7); + var_r28->unk_58 = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0); + var_r28->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r28->unk_58, MEMORY_DEFAULT_NUM); + DCFlushRange(var_r28->unk_5C, var_r28->unk_58); + var_r30 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M460, 0x23)), 0x100); + object->model[15] = var_r30; + Hu3DModelLayerSet(var_r30, 4); + for (var_r27 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_48, var_r31 = 0; var_r31 < 0x100; var_r31++, var_r27++) { + var_r27->unk2C = 0.0f; + var_r27->unk40.a = 0; + var_r27->unk00 = 0; + } + DCStoreRange(((ParticleData *)Hu3DData[var_r30].unk_120)->unk_48, 0x4400); + var_r28->unk_28 = 1; + var_r28->unk_2C = -1; + object->func = fn_1_6C00; +} + +void fn_1_6C00(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + UnkM460MapWork *var_r31; + M460DllCameraStruct *var_r30; + M460DllCameraStruct *var_r28; + u32 var_r27; + s32 var_r26; + s32 var_r25; + + var_r31 = object->data; + var_r30 = fn_1_3E90(1); + var_r28 = fn_1_3E90(2); + switch (fn_1_4164()) { + case 1: + var_r31->unk_18 = 0; + var_r31->unk_1C = 0; + var_r31->unk_24 = 0; + if (var_r31->unk_00 != 0) { + fn_1_73F8(object); + var_r31->unk_00 = 0; + } + break; + case 3: + var_r27 = fn_1_42F0(); + Hu3DMotionSpeedSet(object->model[var_r27 + 9], 1.5f); + if (var_r31->unk_18 == 0) { + if (fn_1_4324() != 0) { + var_r31->unk_18 = 1; + if (var_r27 == 0) { + var_r31->unk_2C = object->model[var_r31->unk_14 + 3]; + var_r31->unk_54 = Hu3DModelObjPtrGet(var_r31->unk_2C, "door_l"); + } + else if (var_r27 == 1) { + var_r31->unk_2C = object->model[var_r31->unk_10 + 6]; + var_r31->unk_54 = Hu3DModelObjPtrGet(var_r31->unk_2C, "door_r"); + } + var_r31->unk_28 = 0; + var_r31->unk_30 = 0; + Hu3DModelAttrReset(object->model[var_r27 + 0xB], HU3D_ATTR_DISPOFF); + } + } + else if (var_r31->unk_28 != 0) { + fn_1_433C(); + var_r30->unk_10 -= 0.116666675f; + } + if (var_r31->unk_1C == 0) { + var_r31->unk_24++; + if (var_r31->unk_24 > 102.0f) { + var_r31->unk_1C = 1; + fn_1_8BA0(0.041666668f); + var_r30->unk_1C.x = lbl_1_data_2E8[var_r27][0]; + var_r30->unk_1C.y = lbl_1_data_2E8[var_r27][1]; + var_r30->unk_1C.z = lbl_1_data_2E8[var_r27][2]; + var_r30->unk_28.x = lbl_1_data_2E8[var_r27][3]; + var_r30->unk_28.y = lbl_1_data_2E8[var_r27][4]; + var_r30->unk_28.z = lbl_1_data_2E8[var_r27][5]; + var_r30->unk_34 = lbl_1_data_2E8[var_r27][6]; + var_r30->unk_10 = lbl_1_data_2E8[var_r27][7]; + } + } + break; + case 4: + var_r30->unk_10 -= 0.116666675f; + var_r31->unk_00 = 1; + break; + } + if ((var_r31->unk_28 == 0) && (var_r31->unk_2C >= 0)) { + if (var_r31->unk_30 == 0) { + var_r31->unk_34 = 0.0f; + var_r31->unk_38 = 0.0f; + var_r31->unk_3C.x = var_r31->unk_3C.y = var_r31->unk_3C.z = 0.0f; + var_r31->unk_48 = var_r31->unk_3C; + var_r31->unk_38 = 2.9166667f; + if (var_r31->unk_54) { + sp14.x = var_r31->unk_54->data.base.pos.x; + sp14.y = 10.0f + var_r31->unk_54->data.base.pos.y; + sp14.z = 20.0f + var_r31->unk_54->data.base.pos.z; + fn_1_7DA8(object, &sp14, 0); + } + HuAudFXPlay(0x818); + } + if (var_r31->unk_30 < 24.0f) { + var_r31->unk_38 *= 0.93f; + } + else { + var_f31 = 3.888889f; + var_r31->unk_38 = var_r31->unk_38 + (0.033333335f * var_f31); + if (var_r31->unk_38 > var_f31) { + var_r31->unk_38 = var_f31; + } + } + var_r26 = 0.5f + (0.2f * var_r31->unk_34); + var_r31->unk_34 = var_r31->unk_34 + var_r31->unk_38; + if (var_r31->unk_34 >= 350.0f) { + var_r31->unk_34 = 350.0f; + var_r31->unk_28 = 1; + HuAudFXPlay(0x819); + if (var_r31->unk_54) { + sp14.x = var_r31->unk_54->data.base.pos.x; + sp14.y = (var_r31->unk_54->data.base.pos.y + var_r31->unk_34) - 15.000001f; + sp14.z = 10.0f + var_r31->unk_54->data.base.pos.z; + fn_1_7DA8(object, &sp14, 2); + } + } + var_r25 = 0.5f + (0.2f * var_r31->unk_34); + if (var_r26 != var_r25) { + var_r31->unk_48.x = 100.0f * ((0.00003f * frandmod(0x3E8)) - 0.015f); + var_r31->unk_48.y = 100.0f * ((0.00006f * frandmod(0x3E8)) - 0.03f); + var_r31->unk_48.z = 100.0f * ((0.00006f * frandmod(0x3E8)) - 0.03f); + if (var_r31->unk_54) { + sp14.x = var_r31->unk_54->data.base.pos.x; + sp14.y = (var_r31->unk_54->data.base.pos.y + var_r31->unk_34) - 15.000001f; + sp14.z = 15.000001f + var_r31->unk_54->data.base.pos.z; + fn_1_7DA8(object, &sp14, 1); + } + } + VECSubtract(&var_r31->unk_48, &var_r31->unk_3C, &sp8); + VECScale(&sp8, &sp8, 0.4f); + VECAdd(&var_r31->unk_3C, &sp8, &sp14); + sp14.y += var_r31->unk_34; + Hu3DModelPosSetV(var_r31->unk_2C, &sp14); + var_r31->unk_30++; + } + fn_1_7B94(object->model[15]); + if (var_r28->unk_00 != 0) { + var_r28->unk_90 = var_r28->unk_90 + var_r28->unk_8C; + if (var_r28->unk_90 > 1.0f) { + var_r28->unk_00 = 0; + var_r28->unk_90 = 1.0f; + fn_1_3E68(1); + } + } +} + +Vec lbl_1_data_36C = { 0.0f, 0.0f, 0.0f }; +GXColor lbl_1_data_378 = { 0, 0, 0, 0x80 }; + +void fn_1_73F8(omObjData *object) +{ + UnkM460MapWork *var_r31; + M460DllCameraStruct *var_r29; + u32 var_r28; + + var_r31 = object->data; + Hu3DModelAttrSet(object->model[var_r31->unk_0C], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[var_r31->unk_10 + 6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[var_r31->unk_14 + 3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[12], HU3D_ATTR_DISPOFF); + if (var_r31->unk_04 != 0) { + var_r31->unk_0C = fn_1_76C4(3, var_r31->unk_0C); + var_r31->unk_14 = fn_1_76C4(3, var_r31->unk_14); + var_r31->unk_10 = fn_1_76C4(3, var_r31->unk_10); + var_r29 = fn_1_3E90(1); + var_r28 = var_r31->unk_08 = fn_1_76C4(8, var_r31->unk_08); + var_r29->unk_1C.x = lbl_1_data_1E8[var_r28][0]; + var_r29->unk_1C.y = lbl_1_data_1E8[var_r28][1]; + var_r29->unk_1C.z = lbl_1_data_1E8[var_r28][2]; + var_r29->unk_28.x = lbl_1_data_1E8[var_r28][3]; + var_r29->unk_28.y = lbl_1_data_1E8[var_r28][4]; + var_r29->unk_28.z = lbl_1_data_1E8[var_r28][5]; + var_r29->unk_34 = lbl_1_data_1E8[var_r28][6]; + var_r29->unk_10 = lbl_1_data_1E8[var_r28][7]; + } + Hu3DMotionTimeSet(object->model[9], 0.0f); + Hu3DMotionSpeedSet(object->model[9], 0.0f); + Hu3DMotionTimeSet(object->model[10], 0.0f); + Hu3DMotionSpeedSet(object->model[10], 0.0f); + Hu3DModelAttrReset(object->model[var_r31->unk_0C], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[var_r31->unk_14 + 3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[var_r31->unk_10 + 6], HU3D_ATTR_DISPOFF); + Hu3DModelPosSetV(object->model[var_r31->unk_14 + 3], &lbl_1_data_36C); + Hu3DModelPosSetV(object->model[var_r31->unk_10 + 6], &lbl_1_data_36C); + var_r31->unk_04++; +} + +u32 fn_1_76C4(u32 arg0, u32 arg8) +{ + u32 var_r31 = frandmod(arg0); + if (var_r31 == arg8) { + var_r31++; + } + var_r31 %= arg0; + return var_r31; +} + +void fn_1_7724(ModelData *model, Mtx mtx) +{ + UnkM460MapWork *var_r31 = lbl_1_bss_48->data; + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + GXCopyTex(var_r31->unk_5C, 0); + GXPixModeSync(); +} + +void fn_1_7790(ModelData *model, Mtx mtx) +{ + Mtx sp5C; + Mtx sp2C; + GXTexObj spC; + float var_f31; + float var_f30; + float var_f29; + UnkM460MapWork *var_r31; + M460DllCameraStruct *var_r30; + + var_r31 = lbl_1_bss_48->data; + var_r30 = fn_1_3F2C(2); + lbl_1_data_378.a = 255.0f * var_r30->unk_90; + DCStoreRange(&lbl_1_data_378, 4); + C_MTXPerspective(sp2C, 41.5f, 1.2f, 100.0f, 5500.0f); + GXSetProjection(sp2C, GX_PERSPECTIVE); + MTXIdentity(sp5C); + GXLoadPosMtxImm(sp5C, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXInitTexObj(&spC, var_r31->unk_5C, 0x280, 0x1E0, 5, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&spC, GX_TEXMAP0); + C_MTXLightPerspective(sp2C, 41.5f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + GXLoadTexMtxImm(sp2C, 0x1E, GX_MTX3x4); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, 0, 0x7D); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, lbl_1_data_378); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET); + GXSetZMode(0, GX_LEQUAL, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + var_f31 = 4125.0f; + var_f30 = 2750.0f; + var_f29 = 2530.0f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-var_f31, var_f30, -var_f29); + GXPosition3f32(var_f31, var_f30, -var_f29); + GXPosition3f32(var_f31, -var_f30, -var_f29); + GXPosition3f32(-var_f31, -var_f30, -var_f29); +} + +void fn_1_7B94(s32 arg0) +{ + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + + var_r30 = Hu3DData[arg0].unk_120; + for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00 != 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + switch (var_r31->unk02) { + case 0: + var_r31->unk2C += 1.0f; + var_r31->unk20 *= 0.99f; + var_r31->unk08.y += 0.019444447f; + break; + case 1: + var_r31->unk2C += 2.0f; + var_r31->unk20 *= 0.98f; + break; + case 2: + var_r31->unk2C += 1.0f; + var_r31->unk20 *= 0.995f; + break; + } + if (var_r31->unk00 < 12.0f) { + var_r31->unk20 = 0.9f * var_r31->unk20; + } + var_r31->unk40.a = var_r31->unk20; + if (--var_r31->unk00 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(var_r30->unk_48, var_r30->unk_30 * 0x44); +} + +void fn_1_7DA8(omObjData *object, Vec *arg1, u32 arg2) +{ + Vec sp1C; + float var_f31; + + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r28; + u32 var_r27; + + GXColor spC = { 0xA2, 0x97, 0x7B, 0x80 }; + GXColor sp8 = { 0xE7, 0xDD, 0xC0, 0xFF }; + s32 sp10[3] = { 0x00000032, 4, 0x00000046 }; + + var_r30 = Hu3DData[object->model[15]].unk_120; + if (arg2 > 2) { + arg2 = 1; + } + var_r27 = sp10[arg2]; + for (var_r31 = var_r30->unk_48, var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) { + if (var_r31->unk00 == 0) { + var_r31->unk02 = arg2; + sp1C.x = 100.0f * ((0.0026f * frandmod(0x3E8)) - 1.3f); + sp1C.y = 0.0f; + sp1C.z = 100.0f * ((0.000100000005f * frandmod(0x3E8)) - 0.05f); + VECAdd(&sp1C, arg1, &var_r31->unk34); + var_r31->unk30 = 0.0031415902f * frandmod(0x3E8); + switch (arg2) { + case 0: + var_r31->unk00 = 60.0f * (0.8f + (0.0007f * frandmod(0x3E8))); + var_r31->unk08.x = 1.6666667f * (0.000100000005f * frandmod(0x3E8) - 0.05f); + var_r31->unk08.y = 1.6666667f * (0.05f + (0.00020000001f * frandmod(0x3E8))); + var_r31->unk08.z = 1.6666667f * (0.1f + (0.0006f * frandmod(0x3E8))); + var_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk2C = 30.0f + (30.0f * var_f31); + var_r31->unk40.a = 40.0f + (40.0f * (1.0f - var_f31)); + var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r)); + var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g)); + var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b)); + break; + case 1: + sp1C.x = 100.0f * (1.1f + (0.00020000001f * frandmod(0x3E8))); + sp1C.y = 100.0f * (0.2f + (0.0005f * frandmod(0x3E8))); + if (frandmod(0x3E8) < 0x1F4) { + sp1C.x *= -1.0f; + } + VECAdd(&sp1C, arg1, &var_r31->unk34); + var_r31->unk00 = 60.0f * (0.2f + (0.0005f * frandmod(0x3E8))); + var_r31->unk08.x = 1.6666667f * ((0.000100000005f * frandmod(0x3E8)) - 0.05f); + var_r31->unk08.y = -1.6666667f * (0.2f + (0.0003f * frandmod(0x3E8))); + var_r31->unk08.z = 1.6666667f * (0.05f + (0.000100000005f * frandmod(0x3E8))); + var_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk2C = 20.0f + (30.0f * var_f31); + var_r31->unk40.a = 8.0f + (13.0f * (1.0f - var_f31)); + var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r)); + var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g)); + var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b)); + break; + case 2: + var_r31->unk00 = 60.0f * (0.9f + (0.00080000004f * frandmod(0x3E8))); + var_r31->unk08.x = 1.6666667f * ((0.00020000001f * frandmod(0x3E8)) - 0.1f); + var_r31->unk08.y = -1.6666667f * (0.1f + (0.0007f * frandmod(0x3E8))); + var_r31->unk08.z = 1.6666667f * ((0.00020000001f * frandmod(0x3E8)) - 0.1f); + var_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk2C = 40.0f + (60.0f * var_f31); + var_r31->unk40.a = 8.0f + (10.0f * (1.0f - var_f31)); + var_r31->unk40.r = spC.r + (var_f31 * (sp8.r - spC.r)); + var_r31->unk40.g = spC.g + (var_f31 * (sp8.g - spC.g)); + var_r31->unk40.b = spC.b + (var_f31 * (sp8.b - spC.b)); + break; + } + var_r31->unk20 = var_r31->unk40.a; + var_r27--; + if (var_r27 < 1) { + break; + } + } + } + + DCStoreRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_8BA0(float arg8) +{ + M460DllCameraStruct *var_r31; + M460DllCameraStruct *var_r30; + + var_r30 = fn_1_3E90(1); + var_r31 = fn_1_3E90(2); + var_r31->unk_00 = 1; + var_r31->unk_1C = var_r30->unk_1C; + var_r31->unk_28 = var_r30->unk_28; + var_r31->unk_34 = var_r30->unk_34; + var_r31->unk_10 = var_r30->unk_10; + var_r31->unk_44 = var_r30->unk_44; + var_r31->unk_40 = var_r30->unk_40; + var_r31->unk_8C = arg8; + var_r31->unk_90 = 0.0f; + fn_1_3E68(2); +} + +s32 fn_1_8C78(void) +{ + M460DllCameraStruct *var_r31 = fn_1_3E90(2); + return var_r31->unk_00; +} diff --git a/src/REL/m460Dll/player.c b/src/REL/m460Dll/player.c new file mode 100644 index 00000000..ccb4b58e --- /dev/null +++ b/src/REL/m460Dll/player.c @@ -0,0 +1,658 @@ +#include "datadir_enum.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/object.h" +#include "game/pad.h" +#include "string.h" + +#include "REL/m460Dll.h" + +#ifndef __MWERKS__ +#include "game/frand.h" +#endif + +typedef struct UnkData110Struct { + /* 0x00 */ u16 unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ u32 unk_10; +} UnkData110Struct; /* size = 0x14 */ + +typedef struct UnkM460DllPlayerWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + u32 unk_14; + u32 unk_18; + float unk_1C; + float unk_20; + s32 unk_24; + s32 unk_28; + u16 unk_2C; + s32 unk_30; + char unk34[0x4]; + s16 unk_38; + char unk3A[6]; + s32 unk_40; + float unk_44; + float unk_48; + float unk_4C; + float unk_50; + float unk_54; + s32 unk_58; + float unk_5C; + Vec unk_60; + Vec unk_6C; + Vec unk_78; + s32 unk_84; +} UnkM460DllPlayerWork; /* size = 0x88 */ + +void fn_1_4C08(omObjData *object); +void fn_1_4F6C(omObjData *object); +void fn_1_5168(omObjData *object); +void fn_1_55EC(omObjData *object); +void fn_1_57D8(omObjData *object); +s32 fn_1_58C8(omObjData *object, float arg8, float arg9); +void fn_1_5A14(omObjData *object); +void fn_1_5C88(omObjData *object); +void fn_1_5CE0(omObjData *object, u32 arg1); +s32 fn_1_5E6C(omObjData *object); +void fn_1_60B0(omObjData *object); +void fn_1_61F4(omObjData *object); + +u32 lbl_1_data_F0[8] = { 0, 2, 3, 0x590015, 0x59000D, 0x17, 0x18, 0x1A }; +struct UnkData110Struct lbl_1_data_110[8] = { + { 0, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 1, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 2, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 3, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 4, 0.2f, 0.0f, -1.0f, 0 }, + { 5, 0.2f, 0.0f, -1.0f, 0 }, + { 6, 0.2f, 0.0f, -1.0f, 0 }, + { 7, 0.2f, 0.0f, -1.0f, 0x40000001 }, +}; + +omObjData *lbl_1_bss_40[1]; +omObjData *lbl_1_bss_3C; +s32 lbl_1_bss_38[1]; + +void fn_1_49A0(Process *process) +{ + u32 spC[1]; + u32 sp8[1]; + + s16 var_r31; + s16 var_r30; + u32 var_r29; + omObjData *var_r27; + + for (var_r31 = 0; var_r31 < 1; var_r31++) { + spC[var_r31] = GWPlayerCfg[var_r31].group; + sp8[var_r31] = var_r31; + } + for (var_r31 = 0; var_r31 < 0; var_r31++) { + for (var_r30 = var_r31 + 1; var_r30 < 1; var_r30++) { + if (spC[var_r31] > spC[var_r30]) { + var_r29 = spC[var_r31]; + spC[var_r31] = spC[var_r30]; + spC[var_r30] = var_r29; + var_r29 = sp8[var_r31]; + sp8[var_r31] = sp8[var_r30]; + sp8[var_r30] = var_r29; + } + } + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + lbl_1_bss_38[sp8[var_r31]] = var_r31; + } + omMakeGroupEx(process, 0, 1); + omGetGroupMemberListEx(process, 0); + for (var_r31 = 0; var_r31 < 1; var_r31++) { + var_r27 = lbl_1_bss_40[var_r31] = omAddObjEx(process, 0x28, 1, 8, 0, fn_1_4C08); + var_r27->work[0] = var_r31; + } + lbl_1_bss_3C = omAddObjEx(process, 0x28, 1, 5, -1, fn_1_60B0); +} + +void fn_1_4BE4(void) +{ + CharModelKill(-1); +} + +void fn_1_4C08(omObjData *object) +{ + UnkM460DllPlayerWork *var_r31; + s32 var_r29; + + float sp8[4] = { 0.25f, 0.5f, 0.75f, 1.0f }; + Vec sp18[4] = { + { 0.0f, 0.0f, 300.0f }, + { -450.0f, 0.0f, -50.0f }, + { 0.0f, 0.0f, -350.0f }, + { 450.0f, 0.0f, -50.0f }, + }; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460DllPlayerWork), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + memset(var_r31, 0, sizeof(UnkM460DllPlayerWork)); + object->stat |= 0x100; + var_r31->unk_00 = GWPlayerCfg[object->work[0]].character; + var_r31->unk_08 = lbl_1_bss_38[object->work[0]]; + fn_1_41B4(object->work[0], var_r31->unk_08, var_r31->unk_00); + var_r31->unk_54 = sp8[GWPlayerCfg[object->work[0]].diff & 3]; + var_r31->unk_24 = GWPlayerCfg[object->work[0]].iscom; + object->model[0] = CharModelCreate(var_r31->unk_00, 2); + Hu3DModelLayerSet(object->model[0], 1); + CharModelLayerSetAll(2); + Hu3DModelShadowSet(object->model[0]); + for (var_r29 = 0; var_r29 < 8; var_r29++) { + if (lbl_1_data_F0[var_r29] < 0x10000) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_00, lbl_1_data_F0[var_r29]); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r31->unk_00 + lbl_1_data_F0[var_r29]); + } + } + CharModelMotionDataClose(var_r31->unk_00); + CharModelEffectNpcInitSilent(object->model[0], object->motion[3], 1); + object->trans.x = var_r31->unk_60.x = sp18[var_r31->unk_08].x; + object->trans.y = var_r31->unk_60.y = sp18[var_r31->unk_08].y; + object->trans.z = var_r31->unk_60.z = sp18[var_r31->unk_08].z; + var_r31->unk_44 = var_r31->unk_48 = 0.0f; + var_r31->unk_4C = 0.0f; + var_r31->unk_50 = 0.02f; + var_r31->unk_5C = 50.0f; + var_r31->unk_58 = 0; + var_r31->unk_2C = 0; + var_r31->unk_04 = -1; + fn_1_5CE0(object, 0); + var_r31->unk_84 = -1; + object->func = fn_1_4F6C; +} + +void fn_1_4F6C(omObjData *object) +{ + UnkM460DllPlayerWork *var_r31; + s32 var_r29; + + var_r31 = object->data; + var_r31->unk_14 = var_r31->unk_18 = 0; + var_r31->unk_0C = var_r31->unk_10 = 0; + var_r31->unk_1C = 0.0f; + var_r31->unk_20 = 0.0f; + switch (var_r31->unk_2C) { + case 0: + var_r31->unk_44 = var_r31->unk_48 = 180.0f; + var_r31->unk_60.x = 0.0f; + var_r31->unk_60.y = 0.0f; + var_r31->unk_60.z = -450.0f; + fn_1_5CE0(object, 7); + var_r31->unk_2C = 1; + var_r31->unk_30 = 0; + break; + case 1: + if (fn_1_414C() == 1) { + var_r31->unk_60.x = 0.0f; + var_r31->unk_60.y = 0.0f; + var_r31->unk_60.z = -100.0f; + var_r31->unk_78.x = 0.0f; + var_r31->unk_78.y = 0.0f; + var_r31->unk_78.z = -450.0f; + var_r31->unk_2C = 2; + var_r31->unk_30 = 0; + } + break; + case 2: + var_r29 = fn_1_58C8(object, 0.5f, 20.0f); + fn_1_5A14(object); + if (var_r29 != 0) { + var_r31->unk_2C = 3; + var_r31->unk_30 = 0; + } + break; + } + VECAdd(&var_r31->unk_60, &var_r31->unk_6C, &var_r31->unk_60); + fn_1_57D8(object); + if (fn_1_414C() == 2) { + var_r31->unk_2C = 0; + object->func = fn_1_5168; + } +} + +void fn_1_5168(omObjData *object) +{ + UnkM460DllPlayerWork *var_r31; + s32 var_r29; + u32 var_r28; + s32 var_r27; + + var_r31 = object->data; + var_r27 = 0; + { + Vec sp20[2] = { + { -250.0f, 0.0f, -900.0f }, + { 250.0f, 0.0f, -900.0f }, + }; + + Vec sp8[2] = { + { -250.0f, 0.0f, -1400.0f }, + { 250.0f, 0.0f, -1400.0f }, + }; + var_r31->unk_14 = var_r31->unk_18 = 0; + var_r31->unk_0C = var_r31->unk_10 = 0; + var_r31->unk_1C = 0.0f; + var_r31->unk_20 = 0.0f; + if (fn_1_4164() == 2) { + if (var_r31->unk_24 != 0) { + fn_1_5C88(object); + } + else { + if (HuPadTrigL[GWPlayerCfg[object->work[0]].pad_idx] > 0x28) { + var_r31->unk_14 = 1; + } + if (HuPadTrigR[GWPlayerCfg[object->work[0]].pad_idx] > 0x28) { + var_r31->unk_18 = 1; + } + } + } + switch (var_r31->unk_2C) { + case 0: + if (fn_1_4370() != 0) { + var_r31->unk_60.x = -140.0f; + var_r31->unk_60.y = 0.0f; + var_r31->unk_60.z = -150.0f; + } + var_r31->unk_78.x = 0.0f; + var_r31->unk_78.y = 0.0f; + var_r31->unk_78.z = -450.0f; + var_r31->unk_40 = 3; + var_r31->unk_2C = 4; + case 4: + var_r29 = fn_1_58C8(object, 0.5f, 20.0f); + fn_1_5A14(object); + if ((var_r29 != 0) && (fn_1_4164() == 2)) { + var_r31->unk_48 = 180.0f; + var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f; + var_r31->unk_2C = 5; + } + break; + case 5: + var_r29 = 0; + fn_1_5A14(object); + if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) { + var_r29 = 1; + } + var_r28 = fn_1_42F0(); + if (var_r28 == 3) { + if (var_r29 != 0) { + if (var_r31->unk_14 != 0) { + var_r28 = 0; + } + else if (var_r31->unk_18 != 0) { + var_r28 = 1; + } + if (var_r28 != 3) { + fn_1_42BC(var_r28); + } + } + } + else { + var_r31->unk_40 = var_r28; + var_r31->unk_78 = sp20[var_r31->unk_40]; + var_r31->unk_2C = 6; + } + break; + case 6: + var_r29 = fn_1_58C8(object, 1.0f, 20.0f); + fn_1_5A14(object); + if (var_r29 != 0) { + fn_1_4308(); + var_r31->unk_48 = 180.0f; + var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f; + var_r31->unk_2C = 7; + } + break; + case 7: + fn_1_5A14(object); + if (fn_1_4358() != 0) { + if (fn_1_419C() == 0) { + var_r31->unk_78 = sp8[var_r31->unk_40]; + var_r31->unk_2C = 8; + } + else { + var_r27 = 1; + } + } + break; + case 8: + var_r29 = fn_1_58C8(object, 0.5f, 20.0f); + fn_1_5A14(object); + + default: + if (fn_1_4164() == 1) { + var_r31->unk_2C = 0; + } + var_r27 = 1; + break; + } + } + VECAdd(&var_r31->unk_60, &var_r31->unk_6C, &var_r31->unk_60); + fn_1_57D8(object); + if ((fn_1_4164() == 5) && (var_r27 != 0)) { + var_r31->unk_2C = 0; + object->func = fn_1_55EC; + } +} + +void fn_1_55EC(omObjData *object) +{ + Vec sp8; + UnkM460DllPlayerWork *var_r31; + s32 var_r29; + + var_r31 = object->data; + var_r29 = 0; + switch (var_r31->unk_2C) { + case 0: + fn_1_41F4(object->work[0]); + fn_1_5CE0(object, 4); + sp8 = var_r31->unk_60; + sp8.y += 160.0f; + var_r31->unk_2C = 9; + break; + case 9: + if (fn_1_5E6C(object) != 0) { + var_r31->unk_78.x = 0.0f; + var_r31->unk_78.y = 0.0f; + var_r31->unk_78.z = 500.0f; + fn_1_4224(object->work[0]); + HuAudCharVoicePlay(var_r31->unk_00, 0x128); + var_r31->unk_28 = 1; + var_r31->unk_2C = 0xA; + } + break; + case 10: + var_r29 = fn_1_58C8(object, 1.0f, 20.0f); + fn_1_5A14(object); + if (var_r29 != 0) { + var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f; + var_r31->unk_2C = 0xB; + } + break; + case 11: + fn_1_5CE0(object, 0); + break; + } + VECAdd(&var_r31->unk_60, &var_r31->unk_6C, &var_r31->unk_60); + fn_1_57D8(object); + if (var_r31->unk_84 >= 0) { + sp8 = var_r31->unk_60; + sp8.y += 160.0f; + HuAudFXEmiterUpDate(var_r31->unk_84, &sp8); + } +} + +void fn_1_57D8(omObjData *object) +{ + UnkM460DllPlayerWork *var_r31 = object->data; + var_r31->unk_38++; + var_r31->unk_30++; + object->trans.x = var_r31->unk_60.x; + object->trans.y = var_r31->unk_60.y; + object->trans.z = var_r31->unk_60.z; + var_r31->unk_4C = var_r31->unk_4C + var_r31->unk_50; + if (var_r31->unk_4C > 0.45f) { + var_r31->unk_4C = 0.45f; + } + var_r31->unk_44 = fn_1_47D0(var_r31->unk_44, var_r31->unk_48, var_r31->unk_4C); + object->rot.y = var_r31->unk_44; + Hu3DModelPosSetV(object->model[0], &var_r31->unk_60); + Hu3DModelRotSet(object->model[0], 0.0f, var_r31->unk_44, 0.0f); +} + +s32 fn_1_58C8(omObjData *object, float arg8, float arg9) +{ + Vec spC; + float var_f31; + UnkM460DllPlayerWork *var_r31; + s32 var_r30; + + var_r31 = object->data; + var_r30 = 0; + VECSubtract(&var_r31->unk_78, &var_r31->unk_60, &spC); + spC.y = 0.0f; + var_f31 = VECMag(&spC); + if (var_f31 < arg9) { + var_f31 = 0.0f; + var_r30 = 1; + } + else { + if (VECMag(&spC) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + } + var_r31->unk_1C = atan2d(spC.x, spC.z); + var_r31->unk_20 = var_f31; + if (var_r31->unk_20 > arg8) { + var_r31->unk_20 = arg8; + } + return var_r30; +} + +void fn_1_5A14(omObjData *object) +{ + float var_f31; + float var_f30; + + UnkM460DllPlayerWork *var_r31 = object->data; + if (var_r31->unk_20 > 0.0f) { + var_r31->unk_48 = var_r31->unk_1C; + } + if (var_r31->unk_20 > 0.05f) { + // 1 / REFRESH_RATE? + var_r31->unk_6C.x = 0.01666666753590107 * (550.0 * (var_r31->unk_20 * sind(var_r31->unk_1C))); + var_r31->unk_6C.z = 0.01666666753590107 * (550.0 * (var_r31->unk_20 * cosd(var_r31->unk_1C))); + if (var_r31->unk_28 != 0) { + var_r31->unk_6C.x *= 1.5f; + var_r31->unk_6C.z *= 1.5f; + } + var_r31->unk_4C = 0.2f; + var_r31->unk_50 = 0.0f; + if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) { + var_f31 = 0.5f; + if (var_r31->unk_04 == 2) { + var_f31 = 0.45f; + } + if (var_r31->unk_20 > var_f31) { + if (var_r31->unk_28 != 0) { + fn_1_5CE0(object, 3); + } + else { + fn_1_5CE0(object, 2); + } + var_f30 = var_r31->unk_20; + } + else { + fn_1_5CE0(object, 1); + var_f30 = var_r31->unk_20 / var_f31; + } + CharModelMotionSpeedSet(var_r31->unk_00, var_f30); + } + } + else { + var_r31->unk_6C.x = var_r31->unk_6C.y = var_r31->unk_6C.z = 0.0f; + if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) { + fn_1_5CE0(object, 0); + } + } +} + +void fn_1_5C88(omObjData *object) +{ + UnkM460DllPlayerWork *var_r31 = object->data; + if (frandmod(0x3E8) < 0x1F4) { + var_r31->unk_14 = 1; + return; + } + var_r31->unk_18 = 1; +} + +void fn_1_5CE0(omObjData *object, u32 arg1) +{ + UnkM460DllPlayerWork *var_r30 = object->data; + if ((var_r30->unk_04 != arg1) && (arg1 < 8)) { + float var_f31 = 60.0f * lbl_1_data_110[arg1].unk_04; + if (var_r30->unk_04 < 0) { + var_f31 = 0.0f; + } + var_r30->unk_04 = arg1; + CharModelMotionShiftSet( + var_r30->unk_00, object->motion[lbl_1_data_110[arg1].unk_00], 60.0f * lbl_1_data_110[arg1].unk_08, var_f31, lbl_1_data_110[arg1].unk_10); + if (lbl_1_data_110[arg1].unk_0C >= 0.0f) { + Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_110[arg1].unk_08, 60.0f * lbl_1_data_110[arg1].unk_0C); + } + } +} + +s32 fn_1_5E6C(omObjData *object) +{ + M460DllCameraStruct *var_r31 = object->data; + s32 var_r30 = 0; + if ((CharModelMotionEndCheck(var_r31->unk_00) != 0) && (CharModelMotionShiftIDGet(var_r31->unk_00) < 0)) { + var_r30 = 1; + } + return var_r30; +} + +s32 fn_1_5EE0(omObjData *object, u32 arg1) +{ + s32 var_r27 = 0; + if (fn_1_5E6C(object)) { + fn_1_5CE0(object, arg1); + var_r27 = 1; + } + return var_r27; +} + +s32 lbl_1_data_1D4[5] = { + DATA_MAKE_NUM(DATADIR_M460, 0x1E), + DATA_MAKE_NUM(DATADIR_M460, 0x1F), + DATA_MAKE_NUM(DATADIR_M460, 0x20), + DATA_MAKE_NUM(DATADIR_M460, 0x21), + DATA_MAKE_NUM(DATADIR_M460, 0x22), +}; + +void fn_1_60B0(omObjData *object) +{ + s32 var_r30; + s32 var_r29; + + omSetTra(object, 0.0f, 0.0f, 0.0f); + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M460, 0x1D)); + object->model[0] = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowSet(var_r30); + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + object->motion[var_r29] = Hu3DJointMotionFile(var_r30, lbl_1_data_1D4[var_r29]); + } + CharModelEffectNpcInitSilent(var_r30, object->motion[1], 0); + CharModelEffectNpcInitSilent(var_r30, object->motion[2], 1); + CharModelEffectNpcInitSilent(var_r30, object->motion[3], 1); + object->work[1] = 0; + object->func = fn_1_61F4; +} + +void fn_1_61F4(omObjData *object) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + + Vec sp1C[2] = { + { -250.0f, 0.0f, -2200.0f }, + { 250.0f, 0.0f, -2200.0f }, + }; + Vec sp10; + s32 sp8[2] = { 6, 21 }; + switch (object->work[1]) { + case 0: + if ((fn_1_4164() == 3) && (fn_1_419C() != 0) && (fn_1_4324() != 0)) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP); + var_r30 = fn_1_42F0(); + object->trans.x = sp1C[var_r30].x; + object->trans.y = sp1C[var_r30].y; + object->trans.z = sp1C[var_r30].z; + object->rot.y = 0.0f; + object->work[1] = 1; + object->work[2] = 0; + } + break; + case 1: + object->work[2]++; + if (object->work[2] > 18.0f) { + Hu3DMotionShiftSet(object->model[0], object->motion[2], 0.0f, 30.0f, HU3D_MOTATTR_LOOP); + object->work[1] = 2; + } + break; + case 2: + sp10.x = (*lbl_1_bss_40)->trans.x - object->trans.x; + sp10.y = 0.0f; + sp10.z = (*lbl_1_bss_40)->trans.z - object->trans.z; + object->rot.y = fn_1_47D0(object->rot.y, atan2d(sp10.x, sp10.z), 0.1f); + object->trans.z += 6.666667f; + if (fn_1_4358() != 0) { + HuAudFXPlay(0x3C); + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 30.0f, HU3D_MOTATTR_LOOP); + object->work[1] = 3; + object->work[3] = 0x3C; + } + break; + case 3: + Hu3DMotionSpeedSet(object->model[0], 0.9f); + var_r29 = Hu3DMotionTimeGet(object->model[0]); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r29 == sp8[var_r30]) { + var_f30 = 2.1166666f * object->work[3]; + HuAudFXPlayVol(0x6B, var_f30); + } + } + sp10.x = (*lbl_1_bss_40)->trans.x - object->trans.x; + sp10.y = 0.0f; + sp10.z = (*lbl_1_bss_40)->trans.z - object->trans.z; + object->rot.y = fn_1_47D0(object->rot.y, atan2d(sp10.x, sp10.z), 0.1f); + if (object->trans.z < -900.0f) { + // depending on refresh rate? + object->trans.z += 11.666667f; + } + else { + var_f31 = VECMag(&sp10); + if (var_f31 < 20.0f) { + var_f31 = 0.0f; + } + else { + if (VECMag(&sp10) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + var_f31 *= 11.666667f; + } + object->trans.x = object->trans.x + (var_f31 * sind(object->rot.y)); + object->trans.z = object->trans.z + (var_f31 * cosd(object->rot.y)); + } + if ((object->trans.z > 450.0f) && (object->work[3] != 0)) { + object->work[3]--; + } + break; + } +} diff --git a/src/REL/m460Dll/score.c b/src/REL/m460Dll/score.c new file mode 100644 index 00000000..357c2d8c --- /dev/null +++ b/src/REL/m460Dll/score.c @@ -0,0 +1,183 @@ +#include "datadir_enum.h" +#include "game/data.h" + +#include "REL/m460Dll.h" +#include "game/memory.h" + +#include "game/esprite.h" +#ifndef __MWERKS__ +#endif + +typedef struct UnkM460DllScoreWork { + s32 unk_00; + s32 unk_04; + s16 unk_08; + s16 unk_0A; + s16 unk_0C[6]; + s32 unk_18; + float unk_1C; +} UnkM460DllScoreWork; /* size = 0x20 */ + +typedef void (*UnkM460DllScoreFunc)(void); + +void fn_1_9020(s32 arg0); +void fn_1_9050(omObjData *object); +void fn_1_916C(void); +void fn_1_91E4(void); +void fn_1_9270(void); + +UnkM460DllScoreFunc lbl_1_data_380[3] = { fn_1_916C, fn_1_91E4, fn_1_9270 }; + +Process *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +// ? lbl_1_rodata_3D0; + +void fn_1_8CAC(Process *process, s16 arg1) +{ + UnkM460DllScoreWork *var_r31; + u32 var_r30; + + lbl_1_bss_54 = process; + lbl_1_bss_50 = omAddObjEx(lbl_1_bss_54, 0x800, 0, 0, 7, fn_1_9050); + lbl_1_bss_50->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM460DllScoreWork), MEMORY_DEFAULT_NUM); + var_r31 = lbl_1_bss_50->data; + var_r31->unk_08 = arg1; + var_r31->unk_0A = 0; + var_r31->unk_0C[4] = espEntry(0x590024, 2, 0); + espColorSet(var_r31->unk_0C[4], 0, 0, 0); + espTPLvlSet(var_r31->unk_0C[4], 0.5f); + espPosSet(var_r31->unk_0C[4], 508.0f, 64.0f); + var_r31->unk_0C[5] = espEntry(0x610037, 1, 0); + espPosSet(var_r31->unk_0C[5], 490.0f, 56.0f); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_0C[var_r30] = espEntry(0x610030, 0, 0); + espPosSet(var_r31->unk_0C[var_r30], (var_r30 * 0x10) + 0x1FE, 56.0f); + espDispOff(var_r31->unk_0C[var_r30]); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_0C[var_r30 + 2] = espEntry(0x610031, 1, 0); + espPosSet(var_r31->unk_0C[var_r30 + 2], (var_r30 * 0x10) + 0x1FE, 74.0f); + } + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOff(var_r31->unk_0C[var_r30]); + } + HuDataDirClose(DATA_MAKE_NUM(DATADIR_MGCONST, 0)); + fn_1_9020(0); +} + +void fn_1_8F38(void) +{ + s32 var_r31; + UnkM460DllScoreWork *var_r30 = lbl_1_bss_50->data; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + espKill(var_r30->unk_0C[var_r31]); + } + HuMemDirectFree(lbl_1_bss_50->data); +} + +void fn_1_8FAC(s32 arg0) +{ + s32 sp8; + s32 var_r3; + + switch (arg0) { + case 0: + fn_1_9020(1); + break; + case 1: + fn_1_9020(2); + break; + } +} + +void fn_1_8FFC(void) +{ + fn_1_9020(0); +} + +void fn_1_9020(s32 arg0) +{ + UnkM460DllScoreWork *var_r31; + + var_r31 = lbl_1_bss_50->data; + var_r31->unk_00 = arg0; + var_r31->unk_04 = 0; +} + +void fn_1_9050(omObjData *arg0) +{ + UnkM460DllScoreWork *var_r31; + s16 var_r30; + + var_r31 = lbl_1_bss_50->data; + lbl_1_data_380[var_r31->unk_00](); + var_r30 = var_r31->unk_08; + espBankSet(var_r31->unk_0C[0], var_r30 / 10); + var_r30 -= (var_r30 / 10) * 10; + espBankSet(var_r31->unk_0C[1], var_r30); + var_r30 = var_r31->unk_0A; + espBankSet(var_r31->unk_0C[2], var_r30 / 10); + var_r30 -= (var_r30 / 10) * 10; + espBankSet(var_r31->unk_0C[3], var_r30); +} + +void fn_1_916C(void) +{ + UnkM460DllScoreWork *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_50->data; + if (var_r31->unk_04 == 0) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOff(var_r31->unk_0C[var_r30]); + } + var_r31->unk_04++; + } +} + +void fn_1_91E4(void) +{ + UnkM460DllScoreWork *var_r31; + s16 var_r30; + + var_r31 = lbl_1_bss_50->data; + if (var_r31->unk_04 == 0) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOn(var_r31->unk_0C[var_r30]); + } + var_r31->unk_04++; + } + var_r31->unk_0A = fn_1_4370(); +} + +void fn_1_9270(void) +{ + UnkM460DllScoreWork *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_50->data; + if (var_r31->unk_04 == 0) { + var_r31->unk_18 = 0; + var_r31->unk_1C = 1.0f; + if (var_r31->unk_0A > var_r31->unk_08) { + var_r31->unk_08 = var_r31->unk_0A; + } + var_r31->unk_04++; + } + if (var_r31->unk_18 == 0) { + if ((var_r31->unk_1C += 0.02f) >= 1.2f) { + var_r31->unk_1C = 1.2f; + var_r31->unk_18 = 1; + } + } + else { + if ((var_r31->unk_1C -= 0.04f) <= 1.0f) { + var_r31->unk_1C = 1.0f; + var_r31->unk_18 = 0; + } + } + for (var_r30 = 0; var_r30 <= 1; var_r30++) { + espScaleSet(var_r31->unk_0C[var_r30], var_r31->unk_1C, var_r31->unk_1C); + } + espScaleSet(var_r31->unk_0C[5], var_r31->unk_1C, var_r31->unk_1C); +} diff --git a/src/REL/m461Dll/main.c b/src/REL/m461Dll/main.c new file mode 100644 index 00000000..1c4b57cc --- /dev/null +++ b/src/REL/m461Dll/main.c @@ -0,0 +1,2335 @@ +#include "REL/executor.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" + +#include "game/gamework_data.h" + +#include "game/mapspace.h" +#include "game/pad.h" +#include "game/printfunc.h" + +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "game/esprite.h" +#include "game/sprite.h" + +#include "ext_math.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#endif + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_358_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_358_struct *unk04; + /* 0x08 */ struct unk_bss_358_struct *unk08; +} UnkBss254Struct; // Size 0xC + +typedef struct unk_bss_340_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_340_struct *unk10; + /* 0x14 */ struct unk_bss_340_struct *unk14; +} UnkBss23CStruct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; +} UnkBssACStruct; // Size 8 + +UnkBss254Struct lbl_1_bss_254; +UnkBss23CStruct lbl_1_bss_23C; +Process *lbl_1_bss_238; +Vec lbl_1_bss_22C; +Vec lbl_1_bss_220; +Vec lbl_1_bss_214; +Vec lbl_1_bss_208; +u32 lbl_1_bss_204; +s32 lbl_1_bss_200; +u32 lbl_1_bss_1FC; +s16 lbl_1_bss_1FA; +s16 lbl_1_bss_1F8; +s32 lbl_1_bss_1F4; +s32 lbl_1_bss_1F0; +float lbl_1_bss_1EC; +s32 lbl_1_bss_1AC[16]; +UnkBssACStruct lbl_1_bss_AC[32]; + +void fn_1_0(void) +{ + lbl_1_bss_254.unk04 = NULL; + lbl_1_bss_254.unk08 = NULL; +} + +void fn_1_24(u16 arg0, s16 arg1) +{ + UnkBss254Struct *temp_r31; + UnkBss254Struct *temp_r30; + UnkBss254Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_254; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +s16 fn_1_AC(s16 arg0) +{ + UnkBss254Struct *var_r31; + UnkBss254Struct *temp_r29; + UnkBss254Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_254.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +void fn_1_150(void) +{ + lbl_1_bss_23C.unk10 = NULL; + lbl_1_bss_23C.unk14 = NULL; +} + +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) +{ + UnkBss23CStruct *temp_r27; + UnkBss23CStruct *var_r31; + UnkBss23CStruct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_23C; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +void fn_1_2D8(void) +{ + UnkBss23CStruct *var_r31; + UnkBss23CStruct *temp_r28; + UnkBss23CStruct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_23C.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +void fn_1_414(void) +{ + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_AC[i].unk00 = 0; + lbl_1_bss_AC[i].unk04 = -1; + } +} + +s16 fn_1_46C(s32 arg0) +{ + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_AC[i].unk00) { + return Hu3DModelLink(lbl_1_bss_AC[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_AC[i].unk00 == 0) { + lbl_1_bss_AC[i].unk00 = arg0; + lbl_1_bss_AC[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_AC[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) +{ + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (600 * REFRESH_RATE <= arg2) { + arg2 = 600 * REFRESH_RATE - 1; + } + var_r30 = arg2 / (60 * REFRESH_RATE); + arg2 -= var_r30 * (60 * REFRESH_RATE); + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / REFRESH_RATE; + arg2 -= var_r30 * REFRESH_RATE; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / REFRESH_RATE; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +void fn_1_798(s32 arg0) +{ + lbl_1_bss_1EC = 0.0f; + lbl_1_bss_1FC = lbl_1_bss_200; + GWMGRecordSet(arg0, lbl_1_bss_1FC); + fn_1_580(lbl_1_bss_1AC, 7, lbl_1_bss_200); +} + +void fn_1_9EC(void) +{ + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_1AC[i]); + } +} + +void fn_1_A40(void) +{ + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_1EC) { + lbl_1_bss_1EC += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_1EC); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_1AC[i], temp_f31, temp_f31); + } + } +} + +void fn_1_B4C(float arg0, s32 arg1) +{ + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_1AC[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_1AC[15], 0.5f); + espColorSet(lbl_1_bss_1AC[15], 0, 0, 0); + espPosSet(lbl_1_bss_1AC[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_1AC[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_1AC[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_1AC[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_1AC[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_1AC, 7, lbl_1_bss_1FC); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_1AC[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_1AC[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_1AC, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_1AC[i], 0); + espDispOff(lbl_1_bss_1AC[i]); + espAttrSet(lbl_1_bss_1AC[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_1AC[i], 0x80 + i); + } +} + +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_22C = *arg0; + lbl_1_bss_214 = *arg2; +} + +s32 fn_1_13DC(float arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_22C, &lbl_1_bss_220, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_214, &lbl_1_bss_208, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } + else { + lbl_1_bss_1F0 = 1; + return 0; + } +} + +void fn_1_1710(float arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_22C, &lbl_1_bss_220, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_214, &lbl_1_bss_208, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_1F0 = 1; +} + +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) +{ + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + MTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) +{ + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) +{ + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + MTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + MTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +float fn_1_1E20(float arg0, float arg1, float arg2) +{ + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_1F24(s32 arg0) +{ + lbl_1_bss_1F4 = HuAudSeqPlay((s32)arg0); +} + +void fn_1_1F58(s32 arg0) +{ + if (lbl_1_bss_1F4 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_1F4, arg0); + } + lbl_1_bss_1F4 = -1; +} + +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) +{ + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float)arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } + else { + var_r30 = 1; + } + } + VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); +} + +typedef void (*PlayerOldHook)(omObjData *obj); +typedef Vec *(*PlayerOldPosHook)(omObjData *obj); + +typedef struct work_playerold { + omObjData *unk0; + PlayerOldHook unk4; + PlayerOldPosHook unk8; + PlayerOldHook unkC; + PlayerOldHook unk10; + s32 *unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; + s32 unk30; + s32 unk34; + s32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; + s32 unk4C; + Vec *unk50; + Vec unk54; + float unk60; + s32 unk64; + Vec *unk68; + Vec unk6C; + Vec unk78; + Vec unk84; + Vec unk90; + float unk9C; + float unkA0; + float unkA4; + float unkA8; + Vec unkAC; + float unkB8; + float unkBC; + float unkC0; +} WorkPlayerOld; + +typedef WorkPlayerOld *(*PlayerOldFind)(int no); + +PlayerOldFind lbl_1_bss_A8; +float lbl_1_bss_A4; +omObjData *lbl_1_bss_A0; +omObjData *lbl_1_bss_9C; +omObjData *lbl_1_bss_4C[20]; +int lbl_1_bss_48; +int lbl_1_bss_3C[3]; +int lbl_1_bss_2C[4]; +s32 lbl_1_bss_28; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +float lbl_1_bss_1C; +BOOL lbl_1_bss_18; +BOOL lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +float lbl_1_bss_8; +float lbl_1_bss_4; +float lbl_1_bss_0; + +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_10[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +float lbl_1_data_30[10] = { 70, 70, 70, 70, 70, 70, 70, 70, 70, 100 }; + +float lbl_1_data_58[10] = { 150, 170, 190, 170, 160, 150, 180, 200, 150, 200 }; + +void fn_1_23B4(WorkPlayerOld *player) +{ + s32 i; + for (i = 0; i < 8; i++) { + if (player->unk44 == player->unk14[i]) { + player->unk40 = lbl_1_data_10[i]; + return; + } + } + player->unk40 = -1; +} + +void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, Vec *posB, float bYOfs) +{ + Vec pointA = *posA; + Vec pointB = *posB; + float dist; + pointA.y += aYOfs; + pointB.y += bYOfs; + dist = VECDistance(&pointA, &pointB); + if (*minDist > dist) { + *minDist = dist; + *state = stateNew; + } +} + +void fn_1_24F8(WorkPlayerOld *player1, WorkPlayerOld *player2, float *minDist, s32 *state) +{ + *minDist = 10 * (player1->unkBC + player2->unkBC); + fn_1_2418(minDist, state, 0, &player1->unk6C, player1->unkBC, &player2->unk6C, player2->unkBC); + fn_1_2418(minDist, state, 1, &player1->unk6C, player1->unkC0 - player1->unkBC, &player2->unk6C, player2->unkC0 - player2->unkBC); + fn_1_2418(minDist, state, 2, &player1->unk6C, player1->unkBC, &player2->unk6C, player2->unkC0 - player2->unkBC); + fn_1_2418(minDist, state, 3, &player1->unk6C, player1->unkC0 - player1->unkBC, &player2->unk6C, player2->unkBC); +} + +s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2) +{ + Vec dir; + Vec dir2; + float dist; + + player->unk3C |= 0x1; + player->unk90.x = player->unk20 / 4.0f; + player->unk90.z = -(float)player->unk24 / 4.0f; + if (player->unk90.x != 0.0f || player->unk90.z != 0.0f) { + return; + } + VECSubtract(&player->unk6C, &player2->unk6C, &dir); + dist = VECMagXZ(&dir); + if (0.0f == dist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= dist; + dir.z /= dist; + } + VECSubtract(&player->unk6C, &player->unk78, &dir2); + dist = VECMagXZ(&dir2); + if (5 > dist) { + dist = 5; + } + player->unk90.x = dir.x * dist; + player->unk90.z = dir.z * dist; +} + +void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2) +{ + player->unk38 = 1; + player->unk84.y = arg1; + player->unkA4 = arg2; + if (player->unk3C & 0x2) { + player->unk3C &= ~0x2; + } +} + +void fn_1_2C00(PlayerOldFind find, float yDist) +{ + lbl_1_bss_A8 = find; + lbl_1_bss_A4 = yDist; +} + +void fn_1_2C1C(WorkPlayerOld *player, omObjData *obj, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, Vec *pos, float arg7) +{ + player->unk0 = obj; + player->unk18 = arg2; + player->unk1C = arg3; + player->unk14 = arg4; + player->unk4 = NULL; + player->unk8 = NULL; + player->unkC = NULL; + player->unk10 = NULL; + player->unk50 = NULL; + player->unk64 = 0; + player->unk68 = 0; + player->unk38 = 0; + player->unk3C = 0; + player->unk44 = arg5; + player->unk48 = 0; + player->unk4C = 0; + fn_1_23B4(player); + player->unk9C = arg7; + player->unk6C = *pos; + player->unk78 = *pos; + player->unk84.x = 0; + player->unk84.y = 0; + player->unk84.z = 0; + player->unkB8 = 1; + player->unkA8 = 0; + player->unkBC = lbl_1_data_30[player->unk1C]; + player->unkC0 = lbl_1_data_58[player->unk1C]; +} + +void fn_1_2DA8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk4 = func; +} + +void fn_1_2DB0(WorkPlayerOld *player, PlayerOldPosHook func) +{ + player->unk8 = func; +} + +void fn_1_2DB8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unkC = func; +} + +void fn_1_2DC0(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk10 = func; +} + +void fn_1_2DC8(WorkPlayerOld *player, s32 count, Vec *data) +{ + player->unk64 = count; + player->unk68 = data; +} + +void fn_1_2DD4(WorkPlayerOld *player) +{ + omSetTra(player->unk0, player->unk6C.x, player->unk6C.y, player->unk6C.z); + omSetRot(player->unk0, 0.0f, player->unk9C, 0.0f); +} + +void fn_1_2E34(WorkPlayerOld *player) +{ + BOOL addTime; + s32 i; + player->unk3C &= ~0x100; + if (player->unk3C & 0x8) { + return; + } + if (NULL == lbl_1_bss_A8) { + return; + } + addTime = FALSE; + for (i = 0; i < 4; i++) { + WorkPlayerOld *player2 = lbl_1_bss_A8(i); + BOOL fixPos; + float minDist; + s32 state; + if (player == player2) { + continue; + } + if (player2->unk3C & 0x8) { + continue; + } + fixPos = FALSE; + fn_1_24F8(player, player2, &minDist, &state); + if (minDist < player->unkBC + player2->unkBC) { + if (state < 2) { + fixPos = TRUE; + if (player->unk38 == 1) { + fn_1_2824(player, player2); + } + } + else { + if (state == 2 && player->unk38 == 1) { + fn_1_2824(player, player2); + player->unk3C |= 0x100; + player->unkA4 = 0; + if (!(player2->unk3C & 0x100)) { + player->unk84.y = 26.766666f; + } + } + if (state == 3) { + fixPos = TRUE; + if (player->unk38 == 1) { + if (0.0f < player->unk84.y) { + player->unk84.y = 0.0f; + } + player->unkA4 = 0; + } + } + } + } + if (fixPos) { + Vec dir; + addTime = TRUE; + VECSubtract(&player->unk6C, &player2->unk6C, &dir); + if (0.0f == minDist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= minDist; + dir.z /= minDist; + } + player->unk6C.x = player2->unk6C.x + (dir.x * (player->unkBC + player2->unkBC)); + player->unk6C.z = player2->unk6C.z + (dir.z * (player->unkBC + player2->unkBC)); + } + } + if (addTime) { + player->unk4C++; + } + else { + player->unk4C = 0; + } +} + +float fn_1_39C4(WorkPlayerOld *player, float arg2) +{ + Vec *pos; + s32 i; + AddX = 0; + AddZ = 0; + if (NULL != player->unk68) { + for (pos = player->unk68, i = 0; i < player->unk64; i++, pos += 2) { + int num = 0; + if (pos[0].x == pos[1].x || pos[0].x > player->unk6C.x || pos[1].x < player->unk6C.x) { + num++; + } + if (pos[0].y == pos[1].y || pos[0].y > player->unk6C.y || pos[1].y < player->unk6C.y) { + num++; + } + if (pos[0].z == pos[1].z || pos[0].z > player->unk6C.z || pos[1].z < player->unk6C.z) { + num++; + } + if (num == 3) { + if (pos[0].x != pos[1].x) { + if (pos[0].x > player->unk6C.x) { + player->unk6C.x = pos[0].x + player->unkBC; + } + if (pos[1].x < player->unk6C.x) { + player->unk6C.x = pos[1].x - player->unkBC; + } + } + if (pos[0].y != pos[1].y) { + if (pos[0].y > player->unk6C.y) { + player->unk6C.y = pos[0].y; + } + if (pos[1].y < player->unk6C.y) { + player->unk6C.y = pos[1].y; + } + } + if (pos[0].z != pos[1].z) { + if (pos[0].z > player->unk6C.z) { + player->unk6C.z = pos[0].z + player->unkBC; + } + if (pos[1].z < player->unk6C.z) { + player->unk6C.z = pos[1].z - player->unkBC; + } + } + } + } + } + return ABS(AddX) + ABS(AddZ); +} + +void fn_1_3C74(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + if (0.5f <= player->unkA0) { + if (7.0f <= player->unkA0) { + *state = 2; + } + else { + *state = 1; + } + } + + if (player->unk14[3] >= 0 && (player->unk28 & 0x100)) { + fn_1_2BD0(player, 26.766666f, 1.0f); + *motAttr = HU3D_MOTATTR_NONE; + *state = 3; + } +} + +void fn_1_3D4C(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (0.0f < player->unkA4) { + if (player->unk2C & 0x100) { + player->unkA4++; + if (4.0f < player->unkA4) { + player->unkA4 = 0; + } + else { + player->unk84.y += 3.65f; + } + } + else { + player->unkA4 = 0; + } + } + player->unk84.y += -2.4333334f; + if (player->unk14[5] >= 0 && (player->unk28 & 0x140)) { + player->unk38 = 3; + player->unk84.y = 0.0f; + player->unk3C &= ~0x3; + player->unk3C |= 0x4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 5; + } +} + +void fn_1_3E60(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if ((player->unk3C & 0x1000) || Hu3DMotionEndCheck(player->unk0->model[0])) { + player->unk3C &= ~0x3; + if (player->unk40 == 6) { + player->unk38 = 4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 7; + } + else { + player->unk38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } + } +} + +void fn_1_3F18(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk0->model[0]) < 0 && Hu3DMotionEndCheck(player->unk0->model[0])) { + fn_1_2BD0(player, 0.0f, 0.0f); + } +} + +void fn_1_3FB8(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk0->model[0]) < 0 && Hu3DMotionEndCheck(player->unk0->model[0])) { + player->unk3C &= ~0x4; + player->unk38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } +} + +void fn_1_4054(WorkPlayerOld *player) +{ + u32 motAttr = HU3D_MOTATTR_NONE; + s32 state = -1; + float temp_f28; + float temp_f23; + float temp_f22; + Vec *pos; + BOOL temp_r27; + if (player->unk3C & 0x1) { + player->unk84.x = player->unk90.x; + player->unk84.z = player->unk90.z; + } + else { + player->unk84.x = player->unk20 / 4.0f; + player->unk84.z = -(float)player->unk24 / 4.0f; + if (player->unk38 == 1 && 0.0f == player->unk84.x && 0.0f == player->unk84.z) { + player->unk84.x = 0.98f * (player->unk6C.x - player->unk78.x); + player->unk84.z = 0.98f * (player->unk6C.z - player->unk78.z); + } + if (player->unk3C & 0x14) { + player->unk84.x = 0; + player->unk84.z = 0; + player->unk28 = 0; + } + } + player->unk78 = player->unk6C; + player->unkA0 = VECMagXZ(&player->unk84); + if (0.5f <= player->unkA0) { + if (10.0f <= player->unkA0) { + player->unk84.x /= player->unkA0; + player->unk84.z /= player->unkA0; + player->unkA0 = 10; + player->unk84.x = 10 * player->unk84.x; + player->unk84.z = 10 * player->unk84.z; + } + } + else { + player->unk84.x = 0; + player->unk84.z = 0; + player->unkA0 = 0; + } + player->unk84.x *= player->unkB8; + player->unk84.z *= player->unkB8; + player->unkA0 *= player->unkB8; + if (player->unk3C & 0x800) { + player->unk28 |= 0x100; + player->unk2C |= 0x100; + if (player->unk38 == 1) { + if (0.0f == player->unkA4) { + player->unk3C &= ~0x800; + } + } + } + switch (player->unk38) { + case 0: + fn_1_3C74(player, &state, &motAttr); + break; + + case 1: + fn_1_3D4C(player, &state, &motAttr); + break; + + case 2: + fn_1_3E60(player, &state, &motAttr); + break; + + case 3: + fn_1_3F18(player, &state, &motAttr); + break; + + case 4: + fn_1_3FB8(player, &state, &motAttr); + break; + + default: + OSReport("*** player action error(%d)!!\n", player->unk38); + break; + } + if (player->unk3C & 0x2000) { + player->unk84.y = 0; + } + temp_f28 = 0; + if (50.0f < ABS(player->unk84.y)) { + player->unk84.y = 50.0f * ((0.0f > player->unk84.y) ? -1 : 1); + } + if (player->unk3C & 0x2) { + Mtx rotMtx; + MTXRotDeg(rotMtx, 'y', player->unk50[2].x - player->unk60); + MTXMultVec(rotMtx, &player->unk54, &player->unk54); + VECAdd(&player->unk54, &player->unk50[0], &player->unk6C); + player->unk9C += player->unk50[2].x - player->unk60; + } + temp_f22 = player->unk6C.y; + VECAdd(&player->unk6C, &player->unk84, &player->unk6C); + if ((player->unk3C & 0x1) == 0 && (0.0f != player->unk84.x || 0.0f != player->unk84.z)) { + player->unk9C = fn_1_1E20(player->unk9C, atan2d(player->unk84.x, player->unk84.z), 0.4f * player->unkB8); + } + temp_f28 += fn_1_39C4(player, temp_f22); + if (nMap == 0) { + player->unkA8 = lbl_1_bss_A4; + } + else { + player->unkA8 = MapPos(player->unk6C.x, player->unk6C.y, player->unk6C.z, player->unkC0, &player->unkAC); + } + temp_r27 = FALSE; + if (NULL != player->unk8) { + pos = player->unk8(player->unk0); + if (NULL != pos) { + if (player->unkA8 < pos[1].y) { + temp_r27 = TRUE; + player->unk50 = pos; + player->unkA8 = pos[1].y; + } + } + } + if (!temp_r27 && (player->unk3C & 0x2)) { + player->unk3C &= ~0x2; + } + if (player->unk38 == 1 && player->unkA8 >= player->unk6C.y) { + player->unk38 = 2; + player->unk3C &= ~0x3; + player->unk6C.y = player->unkA8; + player->unk84.y = 0; + motAttr = HU3D_MOTATTR_NONE; + state = 4; + if (player->unk40 == 5) { + state = 6; + if (NULL != player->unk10) { + player->unk10(player->unk0); + } + if (player->unk18 < 4) { + omVibrate(player->unk18, 12, 4, 2); + } + } + if (player->unk3C & 0x200) { + state = -1; + if (NULL != player->unkC) { + player->unkC(player->unk0); + } + } + if (temp_r27) { + player->unk3C |= 0x2; + } + } + temp_f23 = player->unk6C.y - player->unkA8; + if (player->unk38 == 0 && 10.0f < temp_f23) { + if (!(player->unk3C & 0x2000) && (player->unk3C & 0x400)) { + player->unk3C |= 0x800; + } + } + else if (temp_r27) { + if (!(player->unk3C & 0x2)) { + player->unk6C.y = player->unkA8; + player->unk3C |= 0x2; + } + } + fn_1_2E34(player); + if (NULL != player->unk4) { + player->unk4(player->unk0); + } + temp_f28 += fn_1_39C4(player, player->unk6C.y); + if (player->unk3C & 0x2) { + player->unk60 = player->unk50[2].x; + VECSubtract(&player->unk6C, &player->unk50[0], &player->unk54); + } + if (0.0f != temp_f28) { + player->unk48++; + } + else { + player->unk48 = 0; + } + if (state >= 0 && player->unk40 != state) { + player->unk40 = state; + player->unk44 = player->unk14[player->unk40]; + if (player->unk44 >= 0 && !(player->unk3C & 0x20)) { + Hu3DMotionShiftSet(player->unk0->model[0], player->unk0->motion[player->unk44], 0, 8, motAttr); + } + } +} + +void fn_1_4E1C(WorkPlayerOld *player, s32 motNo) +{ + s32 i; + player->unk44 = motNo; + player->unk38 = 0; + player->unk3C &= 0x1400; + player->unk78 = player->unk6C; + player->unk84.x = 0; + player->unk84.y = 0; + player->unk84.z = 0; + fn_1_23B4(player); + if (player->unk40 == 3) { + Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk0->model[0], player->unk0->motion[player->unk44]); + Hu3DMotionTimeSet(player->unk0->model[0], Hu3DMotionMaxTimeGet(player->unk0->model[0]) - 1); + } + else if (player->unk40 == 5) { + player->unk38 = 3; + player->unk3C |= 0x4; + Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk0->model[0], player->unk0->motion[player->unk44]); + Hu3DMotionTimeSet(player->unk0->model[0], Hu3DMotionMaxTimeGet(player->unk0->model[0]) - 1); + } + else { + Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(player->unk0->model[0], player->unk0->motion[player->unk44], 0, 8, HU3D_MOTATTR_LOOP); + } +} + +void fn_1_506C(WorkPlayerOld *player, s32 attr) +{ + player->unk3C |= attr; +} + +void fn_1_507C(WorkPlayerOld *player, s32 attr) +{ + player->unk3C &= ~attr; +} + +#include "src/REL/executor.c" + +Vec lbl_1_data_A0 = { 0, 600, 600 }; +Vec lbl_1_data_AC = { 0, 1, 0 }; +Vec lbl_1_data_B8 = { 0, 100, 0 }; + +Vec lbl_1_data_C4 = { 0, 2300, 2200 }; +Vec lbl_1_data_D0 = { 0, 1, 0 }; +Vec lbl_1_data_DC = { 0, 0, 0 }; + +Vec lbl_1_data_E8 = { -1500, 4000, 1500 }; +Vec lbl_1_data_F4 = { 1.5, -4, -1.5 }; +GXColor lbl_1_data_100 = { 255, 255, 255, 255 }; + +Vec lbl_1_data_104 = { -1500, 4000, 1500 }; +Vec lbl_1_data_110 = { 0, 0, 0 }; +Vec lbl_1_data_11C = { 0, 1, 0 }; + +s32 lbl_1_data_128[8][5] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x14), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x14), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x14), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x14), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x14), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x14), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x14), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x14), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), +}; + +s32 lbl_1_data_1C8[3] = { DATA_MAKE_NUM(DATADIR_M461, 0x02), DATA_MAKE_NUM(DATADIR_M461, 0x03), DATA_MAKE_NUM(DATADIR_M461, 0x08) }; + +s32 lbl_1_data_1D4[4] + = { DATA_MAKE_NUM(DATADIR_M461, 0x04), DATA_MAKE_NUM(DATADIR_M461, 0x05), DATA_MAKE_NUM(DATADIR_M461, 0x06), DATA_MAKE_NUM(DATADIR_M461, 0x07) }; + +float lbl_1_data_1E4[3] = { 0.3f, 0.5f, 0.9f }; + +float lbl_1_data_1F0[10][2] = { 0, 60, 1860, 60, 3660, 50, 5460, 50, 7260, 40, 9060, 40, 10860, 30, 12660, 20, 14460, 10, -1, 10 }; + +Vec lbl_1_data_240[3] = { { 0, 0, 2800 }, { 2800, 0, 0 }, { -2800, 0, 0 } }; + +s32 lbl_1_data_264[3] = { 70, 30, 0 }; + +typedef struct data270_struct { + Vec unk0; + float unkC; +} Data270Struct; + +Data270Struct lbl_1_data_270[8] = { { { 200, 0, 1400 }, 180 }, { { -200, 0, 1400 }, 180 }, { { 200, 0, -1400 }, 0 }, { { -200, 0, -1400 }, 0 }, + { { 1400, 0, 200 }, 270 }, { { 1400, 0, -200 }, 270 }, { { -1400, 0, 200 }, 90 }, { { -1400, 0, -200 }, 90 } }; + +Vec lbl_1_data_2F0[4] = { { 600, 0, 600 }, { 600, 0, -600 }, { -600, 0, 600 }, { -600, 0, -600 } }; + +void fn_1_512C(void) +{ + if (HuPadBtn[0] & PAD_BUTTON_X) { + lbl_1_bss_200 = 35999; + } + print8(24, 32, 1.5f, "COUNT:%d MODE:%d MES:%d %d/%d %02x", lbl_1_bss_204, lbl_1_bss_A0->work[0], lbl_1_bss_1FA, lbl_1_bss_20, lbl_1_bss_24, + lbl_1_bss_28); + print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_0, lbl_1_bss_8, lbl_1_bss_4); + print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + lbl_1_bss_4 -= HuPadSubStkX[0] / 59.0f; + lbl_1_bss_8 -= 4.0f * (HuPadSubStkY[0] / 59.0f); + lbl_1_bss_0 -= (HuPadTrigL[0] / 150.0f) * 4.0f; + lbl_1_bss_0 += (HuPadTrigR[0] / 150.0f) * 4.0f; +} + +typedef struct work_player { + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + Vec unk30; + Vec unk3C; + float unk48; + s32 unk4C; + s32 unk50; + s32 unk54; + s32 unk58; + s32 unk5C; + s32 unk60; +} WorkPlayer; + +typedef struct work_bomhei { + Vec unk0; + Vec unkC; + Vec unk18; + float unk24; + s32 unk28; + s32 unk2C; + s32 unk30; + s32 unk34; +} WorkBomhei; + +void fn_1_5438(Vec *pos) +{ + float dist = VECDistance(pos, &((WorkPlayer *)lbl_1_bss_9C->data)->unk0); + if (2000 < dist) { + return; + } + if (1000 < dist) { + omVibrate(lbl_1_bss_18, 12, 6, 6); + } + else if (300 < dist) { + omVibrate(lbl_1_bss_18, 12, 4, 2); + } + else { + omVibrate(lbl_1_bss_18, 12, 12, 0); + } +} + +BOOL fn_1_5528(Vec *pos, float offset) +{ + BOOL result = FALSE; + float ofs = 700 - offset; + Mtx rotMtx; + + if (ofs < pos->x) { + pos->x = ofs; + } + if (ofs < pos->z) { + pos->z = ofs; + } + if (-ofs > pos->x) { + pos->x = -ofs; + } + if (-ofs > pos->z) { + pos->z = -ofs; + } + if (ofs == ABS(pos->x) || ofs == ABS(pos->z)) { + result = TRUE; + } + MTXRotDeg(rotMtx, 'Y', 45); + MTXMultVec(rotMtx, pos, pos); + ofs = (550 * sqrtf(2)) - offset; + if (ofs < pos->x) { + pos->x = ofs; + } + if (ofs < pos->z) { + pos->z = ofs; + } + if (-ofs > pos->x) { + pos->x = -ofs; + } + if (-ofs > pos->z) { + pos->z = -ofs; + } + if (ofs == ABS(pos->x) || ofs == ABS(pos->z)) { + result = TRUE; + } + MTXRotDeg(rotMtx, 'Y', -45); + MTXMultVec(rotMtx, pos, pos); + return result; +} + +void fn_1_5894(Vec *pos1, Vec *pos2, float radius1, float radius2) +{ + float dx = pos1->x - pos2->x; + float dz = pos1->z - pos2->z; + float dist = sqrtf((dx * dx) + (dz * dz)); + if (radius1 + radius2 > dist) { + if (0.0f == dist) { + dx = 0; + dz = -1; + } + else { + dx /= dist; + dz /= dist; + } + pos1->x = pos2->x + (dx * (radius1 + radius2)); + pos1->z = pos2->z + (dz * (radius1 + radius2)); + } +} + +void fn_1_5A7C(WorkPlayer *player, omObjData *obj) +{ + float distMin; + s32 i; + player->unk58 = 2002; + Hu3DMotionShiftSet(obj->model[0], obj->motion[3], 0, 8, HU3D_MOTATTR_NONE); + distMin = 100000; + for (i = 0; i < 3; i++) { + float dist = VECDistance(&lbl_1_data_240[i], &player->unk0); + if (distMin > dist) { + distMin = dist; + player->unk3C = lbl_1_data_240[i]; + } + } + player->unk24 = player->unk0; + player->unk30 = player->unk0; + player->unk48 = 15; + lbl_1_bss_10 = HuAudFXEmiterPlay(2084, &player->unk0); + lbl_1_bss_C = HuAudCharVoicePlayPos(player->unk5C, 291, &player->unk0); +} + +void fn_1_5BF4(WorkPlayer *player, omObjData *obj) +{ + s32 i; + s32 action; + player->unkC.x = 0; + player->unkC.y = 0; + player->unkC.z = 0; + player->unkC.x = player->unk4C / 4.0f; + player->unkC.z = -(float)player->unk50 / 4.0f; + action = 0; + player->unk18.z = VECMagXZ(&player->unkC); + if (0.5f <= player->unk18.z) { + if (10.0f <= player->unk18.z) { + player->unkC.x /= player->unk18.z; + player->unkC.z /= player->unk18.z; + player->unk18.z = 10; + player->unkC.x = 10 * player->unkC.x; + player->unkC.z = 10 * player->unkC.z; + } + player->unk18.y = fn_1_1E20(player->unk18.y, atan2d(player->unkC.x, player->unkC.z), 0.4f); + if (7.0f <= player->unk18.z) { + action = 2; + } + else { + action = 1; + } + } + VECAdd(&player->unk0, &player->unkC, &player->unk0); + fn_1_5528(&player->unk0, 70); + for (i = 0; i < 20; i++) { + WorkBomhei *bomhei; + if (NULL == lbl_1_bss_4C[i]) { + continue; + } + bomhei = lbl_1_bss_4C[i]->data; + if (bomhei->unk34 == 3004 && 30 > Hu3DMotionTimeGet(lbl_1_bss_4C[i]->model[2])) { + float dx = player->unk0.x - bomhei->unk0.x; + float dz = player->unk0.z - bomhei->unk0.z; + if (200 > sqrtf((dx * dx) + (dz * dz))) { + lbl_1_bss_14 = 1; + } + } + else { + fn_1_5894(&player->unk0, &bomhei->unk0, 70, 70); + } + } + fn_1_5528(&player->unk0, 70); + if (player->unk54 != action) { + player->unk54 = action; + Hu3DMotionShiftSet(obj->model[0], obj->motion[player->unk54], 0, 8, HU3D_MOTATTR_LOOP); + } +} + +void fn_1_6A00(omObjData *obj) +{ + WorkPlayer *player = obj->data; + float dx; + float dz; + float dist; + switch (player->unk58) { + case 2000: + if (lbl_1_bss_A0->work[0] >= 1004) { + player->unk58++; + } + break; + + case 2001: + player->unk4C = HuPadStkX[player->unk60]; + player->unk50 = HuPadStkY[player->unk60]; + fn_1_5BF4(player, obj); + if (lbl_1_bss_A0->work[0] >= 1005) { + if (lbl_1_bss_14) { + fn_1_5A7C(player, obj); + } + else { + player->unk58 = 2003; + Hu3DMotionShiftSet(obj->model[0], obj->motion[0], 0, 8, HU3D_MOTATTR_LOOP); + } + } + break; + + case 2002: + dx = player->unk3C.x - player->unk0.x; + dz = player->unk3C.z - player->unk0.z; + dist = sqrtf((dx * dx) + (dz * dz)); + if (player->unk48 < dist) { + dx = player->unk48 * (dx / dist); + dz = player->unk48 * (dz / dist); + } + player->unk18.x -= player->unk48; + if (0.0f > player->unk18.x) { + player->unk18.x += 360; + } + player->unk18.y = fn_1_1E20(player->unk18.y, atan2d(dx, dz) + 180.0, 0.4f); + player->unk0.x += dx; + player->unk0.z += dz; + dist = VECDistance(&player->unk3C, &player->unk0) / VECDistance(&player->unk3C, &player->unk30); + player->unk0.y = 500 * sind(dist * 180); + player->unk48 *= 1.05f; + if (lbl_1_bss_10 >= 0) { + HuAudFXEmiterUpDate(lbl_1_bss_10, &player->unk0); + } + if (lbl_1_bss_C >= 0) { + HuAudFXEmiterUpDate(lbl_1_bss_C, &player->unk0); + } + fn_1_5438(&player->unk24); + if (lbl_1_bss_A0->work[0] >= 1007) { + player->unk58 = 2005; + HuAudSStreamPlay(4); + } + break; + + case 2003: + if (lbl_1_bss_A0->work[0] >= 1007) { + player->unk58 = 2004; + HuAudSStreamPlay(1); + Hu3DMotionShiftSet(obj->model[0], obj->motion[4], 0, 8, HU3D_MOTATTR_NONE); + } + break; + + case 2004: + player->unk18.y = fn_1_1E20(player->unk18.y, 0, 0.4f); + break; + + case 2005: + break; + + default: + OSReport("*** player mode error(%d)!!\n", player->unk58); + break; + } + omSetTra(obj, player->unk0.x, player->unk0.y, player->unk0.z); + omSetRot(obj, player->unk18.x, player->unk18.y, 0); +} + +void fn_1_7328(omObjData *obj) +{ + WorkPlayer *player; + s32 i; + obj->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkPlayer), MEMORY_DEFAULT_NUM); + player = obj->data; + player->unk5C = GWPlayerCfg[lbl_1_bss_18].character; + player->unk60 = GWPlayerCfg[lbl_1_bss_18].pad_idx; + player->unk58 = 2000; + player->unk54 = 0; + obj->model[0] = CharModelCreate(lbl_1_data_0[player->unk5C], 2); + CharModelStepTypeSet(lbl_1_data_0[player->unk5C], 0); + for (i = 0; i < 5; i++) { + obj->motion[i] = CharModelMotionCreate(lbl_1_data_0[player->unk5C], lbl_1_data_128[player->unk5C][i]); + CharModelMotionSet(lbl_1_data_0[player->unk5C], obj->motion[i]); + } + Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(obj->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(obj->model[0], 2); + Hu3DMotionSet(obj->model[0], obj->motion[0]); + Hu3DModelShadowSet(obj->model[0]); + player->unk18.x = 0; + player->unk18.y = 0; + player->unk0.x = 0; + player->unk0.y = 0; + player->unk0.z = 0; + omSetTra(obj, player->unk0.x, player->unk0.y, player->unk0.z); + omSetRot(obj, player->unk18.x, player->unk18.y, 0); + Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); + CharModelLayerSetAll2(6); + CharModelMotionDataClose(lbl_1_data_0[player->unk5C]); + obj->func = fn_1_6A00; +} + +void fn_1_75B0(WorkBomhei *bomhei, omObjData *obj) +{ + float *data1F0; + bomhei->unk34 = 3003; + bomhei->unk24 = 10; + for (data1F0 = &lbl_1_data_1F0[0][0]; 0.0f <= data1F0[0]; data1F0 += 2) { + if (data1F0[0] <= lbl_1_bss_200) { + bomhei->unk24 = data1F0[1]; + } + } + Hu3DModelAttrSet(obj->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(obj->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(obj->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_DISPOFF); + HuAudFXEmiterPlay(2087, &bomhei->unk0); +} + +BOOL fn_1_76CC(WorkBomhei *bomhei) +{ + if (bomhei->unk34 == 3002) { + if (fn_1_5528(&bomhei->unk0, 70)) { + return TRUE; + } + } + else { + float ofs = 700 - 70; + + if (ofs > bomhei->unk0.x && -ofs < bomhei->unk0.x) { + if (ofs > bomhei->unk0.z && -ofs < bomhei->unk0.z) { + if (bomhei->unk28 >= 0) { + lbl_1_bss_28 = lbl_1_bss_28 & ~(u32)(1 << bomhei->unk28); + bomhei->unk28 = -1; + } + } + } + } + return FALSE; +} + +void fn_1_7AD8(WorkBomhei *bomhei, omObjData *obj) +{ + float radius = 10 * lbl_1_data_1E4[bomhei->unk30]; + Vec playerOfs; + Vec angle; + + s32 i; + s32 state; + BOOL temp_r25; + + angle.x = bomhei->unkC.y; + if (bomhei->unk34 == 3002) { + switch (bomhei->unk30) { + case 0: + bomhei->unk18.x--; + if (0.0f > bomhei->unk18.x) { + radius = 0; + if (-bomhei->unk18.y > bomhei->unk18.x) { + bomhei->unk18.y = frandmod(120) + 120; + bomhei->unk18.x = frandmod(120) + 120; + } + } + else { + bomhei->unk18.z--; + if (0.0f > bomhei->unk18.z) { + bomhei->unk18.z = frandmod(120) + 120; + bomhei->unkC.z = frandf() * 360; + } + } + angle.x = bomhei->unkC.z; + break; + + case 1: + case 2: + VECSubtract(&((WorkPlayer *)lbl_1_bss_9C->data)->unk0, &bomhei->unk0, &playerOfs); + angle.x = atan2d(playerOfs.x, playerOfs.z); + break; + } + } + bomhei->unkC.y = fn_1_1E20(bomhei->unkC.y, angle.x, 0.05f); + angle.z = radius * sind(bomhei->unkC.y); + angle.y = radius * cosd(bomhei->unkC.y); + bomhei->unk0.x += angle.z; + bomhei->unk0.z += angle.y; + if (0.0f < radius) { + bomhei->unkC.x = fn_1_1E20(bomhei->unkC.x, atan2d(angle.z, angle.y), 0.2f); + } + state = 0; + if (0.5f <= radius) { + if (7.0f <= radius) { + state = 2; + } + else { + state = 1; + } + } + temp_r25 = FALSE; + if (fn_1_76CC(bomhei)) { + temp_r25 = TRUE; + } + fn_1_5894(&bomhei->unk0, &((WorkPlayer *)lbl_1_bss_9C->data)->unk0, 70, 70); + for (i = 0; i < 20; i++) { + WorkBomhei *bomhei2; + if (NULL == lbl_1_bss_4C[i]) { + continue; + } + if (obj == lbl_1_bss_4C[i]) { + continue; + } + bomhei2 = lbl_1_bss_4C[i]->data; + if (bomhei2->unk34 != 3004) { + fn_1_5894(&bomhei->unk0, &bomhei2->unk0, 70, 70); + } + } + if (fn_1_76CC(bomhei)) { + temp_r25 = TRUE; + } + if (temp_r25 && bomhei->unk30 == 0) { + float radius = frandf() * 350; + float angle2 = frandf() * 360; + bomhei->unkC.z = atan2d((radius * sind(angle2)) - bomhei->unk0.x, (radius * cosd(angle2)) - bomhei->unk0.z); + bomhei->unk18.z = frandmod(120) + 120; + } + if (bomhei->unk2C != state) { + bomhei->unk2C = state; + Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk2C], 0, 8, HU3D_MOTATTR_LOOP); + } +} + +void fn_1_9724(omObjData *obj); + +void fn_1_8D08(omObjData *obj) +{ + WorkBomhei *bomhei = obj->data; + s32 i; + switch (bomhei->unk34) { + case 3000: + if (lbl_1_bss_A0->work[0] >= 1004) { + bomhei->unk34 = 3002; + } + break; + + case 3001: + fn_1_7AD8(bomhei, obj); + if (bomhei->unk28 < 0) { + bomhei->unk34 = 3002; + } + break; + + case 3002: + fn_1_7AD8(bomhei, obj); + bomhei->unk24--; + if (0.0f > bomhei->unk24) { + fn_1_75B0(bomhei, obj); + } + break; + + case 3003: + bomhei->unk24--; + if (0.0f > bomhei->unk24) { + bomhei->unk34++; + Hu3DModelAttrSet(obj->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(obj->model[2], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(obj->model[2], HU3D_ATTR_DISPOFF); + HuAudFXEmiterPlay(2082, &bomhei->unk0); + fn_1_5438(&bomhei->unk0); + } + break; + + case 3004: + if (Hu3DMotionEndCheck(obj->model[2])) { + fn_1_9724(obj); + return; + } + break; + + case 3005: + break; + + default: + OSReport("*** bomhei mode error(%d)!!\n", bomhei->unk34); + break; + } + if (bomhei->unk34 != 3004 && lbl_1_bss_A0->work[0] >= 1005) { + bomhei->unk34 = 3005; + Hu3DMotionShiftSet(obj->model[0], obj->motion[0], 0, 8, HU3D_MOTATTR_LOOP); + } + omSetTra(obj, bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); + omSetRot(obj, 0, bomhei->unkC.x, 0); + for (i = 0; i < 3; i++) { + Hu3DModelPosSet(obj->model[i], bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); + Hu3DModelRotSet(obj->model[i], 0, bomhei->unkC.x, 0); + } +} + +void fn_1_9164(omObjData *obj) +{ + WorkBomhei *bomhei = obj->data; + s32 modelId; + s32 i; + omSetTra(obj, bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); + omSetRot(obj, 0, bomhei->unkC.x, 0); + modelId = fn_1_AC(0x1000); + if (modelId < 0) { + obj->model[0] = Hu3DModelLink(lbl_1_bss_3C[0]); + } + else { + obj->model[0] = modelId; + } + modelId = fn_1_AC(0x2000); + if (modelId < 0) { + obj->model[1] = Hu3DModelLink(lbl_1_bss_3C[1]); + } + else { + obj->model[1] = modelId; + } + modelId = fn_1_AC(0x3000); + if (modelId < 0) { + obj->model[2] = Hu3DModelLink(lbl_1_bss_3C[2]); + } + else { + obj->model[2] = modelId; + } + for (i = 0; i < 4; i++) { + obj->motion[i] = lbl_1_bss_2C[i]; + } + for (i = 0; i < 3; i++) { + Hu3DModelAttrSet(obj->model[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(obj->model[i], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(obj->model[i], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(obj->model[i], 3); + Hu3DMotionTimeSet(obj->model[i], 0); + Hu3DModelPosSet(obj->model[i], bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); + Hu3DModelRotSet(obj->model[i], 0, bomhei->unkC.x, 0); + } + Hu3DModelLayerSet(obj->model[2], 4); + Hu3DModelShadowSet(obj->model[0]); + Hu3DModelShadowSet(obj->model[1]); + for (i = 0; i < 20; i++) { + if (NULL == lbl_1_bss_4C[i]) { + lbl_1_bss_4C[i] = obj; + break; + } + } + Hu3DMotionSet(obj->model[0], obj->motion[0]); + Hu3DModelAttrSet(obj->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); + obj->func = fn_1_8D08; +} + +void fn_1_956C(Vec *pos, float rotY, s32 type, s32 mode, s32 time) +{ + WorkBomhei *bomhei; + omObjData *obj; + lbl_1_bss_20++; + obj = omAddObjEx(lbl_1_bss_238, 101, 3, 4, -1, fn_1_9164); + obj->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkBomhei), MEMORY_DEFAULT_NUM); + bomhei = obj->data; + bomhei->unk0 = *pos; + bomhei->unkC.x = rotY; + bomhei->unk30 = type; + bomhei->unk34 = mode; + bomhei->unk28 = time; + bomhei->unkC.y = bomhei->unkC.x; + bomhei->unkC.z = bomhei->unkC.x; + bomhei->unk18.x = frandmod(120) + 120; + bomhei->unk18.y = frandmod(120) + 120; + bomhei->unk18.z = frandmod(120) + 120; + bomhei->unk24 = frandmod(300) + 180; + bomhei->unk2C = 0; +} + +void fn_1_9724(omObjData *obj) +{ + s32 i; + lbl_1_bss_20--; + for (i = 0; i < 20; i++) { + if (obj == lbl_1_bss_4C[i]) { + lbl_1_bss_4C[i] = NULL; + break; + } + } + for (i = 0; i < 3; i++) { + Hu3DModelAttrSet(obj->model[i], HU3D_ATTR_DISPOFF); + fn_1_24((i * 4096) + 4096, obj->model[i]); + } + omDelObjEx(lbl_1_bss_238, obj); +} + +typedef struct work_bomhei2 { + omObjData *unk0; + omObjData *unk4; + Vec unk8; + Vec unk14; + Vec unk20; + float unk2C; + float unk30; + float unk34; + BOOL unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + float unk48; +} WorkBomhei2; + +void fn_1_9854(void) +{ + if (lbl_1_bss_200 % 900 == 0) { + if (++lbl_1_bss_24 >= 20) { + lbl_1_bss_24 = 20; + } + } + if (lbl_1_bss_200 % 1800 == 0) { + if (lbl_1_data_264[2] < 40) { + lbl_1_data_264[2] += 10; + if (lbl_1_data_264[2] > 100) { + lbl_1_data_264[2] = 100; + } + lbl_1_data_264[1] -= 5; + if (lbl_1_data_264[1] < 0) { + lbl_1_data_264[1] = 0; + lbl_1_data_264[0] -= 5; + } + lbl_1_data_264[0] -= 5; + if (lbl_1_data_264[0] < 0) { + lbl_1_data_264[0] = 0; + } + } + } + if (lbl_1_bss_24 > lbl_1_bss_20) { + Data270Struct *data270 = NULL; + s32 bitNum = frandmod(8); + s32 i; + for (i = 0; i < 8; i++) { + if (((1 << bitNum) & lbl_1_bss_28) == 0) { + data270 = &lbl_1_data_270[bitNum]; + lbl_1_bss_28 |= (1 << bitNum); + (void)i; + break; + } + bitNum++; + if (bitNum >= 8) { + bitNum -= 8; + } + } + if (NULL != data270) { + s32 type = 2; + s32 chance = frandmod(100); + Vec pos; + for (i = 0; i < 3; i++) { + if (lbl_1_data_264[i] > chance) { + type = i; + break; + } + chance -= lbl_1_data_264[i]; + } + pos.x = data270->unk0.x; + pos.y = data270->unk0.y; + pos.z = data270->unk0.z; + fn_1_956C(&pos, data270->unkC, type, 3001, bitNum); + } + } +} + +WorkBomhei2 *fn_1_9CAC(omObjFunc func, s32 prio) +{ + omObjData *obj = omAddObjEx(lbl_1_bss_238, prio, 1, 4, -1, func); + WorkBomhei2 *bomhei; + s32 i; + s32 modelId; + obj->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkBomhei2), MEMORY_DEFAULT_NUM); + bomhei = obj->data; + bomhei->unk38 = 1; + bomhei->unk3C = 0; + bomhei->unk0 = obj; + bomhei->unk4 = NULL; + bomhei->unk2C = 0; + bomhei->unk8.x = 0; + bomhei->unk8.y = 10; + bomhei->unk8.z = 0; + modelId = fn_1_AC(0x1000); + if (modelId < 0) { + obj->model[0] = Hu3DModelLink(lbl_1_bss_3C[0]); + } + else { + obj->model[0] = modelId; + } + for (i = 0; i < 4; i++) { + obj->motion[i] = lbl_1_bss_2C[i]; + } + omSetTra(obj, bomhei->unk8.x, bomhei->unk8.y, bomhei->unk8.z); + omSetRot(obj, 0, bomhei->unk2C, 0); + Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(obj->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(obj->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(obj->model[0], 3); + Hu3DMotionSet(obj->model[0], obj->motion[0]); + Hu3DModelShadowSet(obj->model[0]); + return bomhei; +} + +void fn_1_9EF4(omObjData *obj) +{ + float dist; + WorkBomhei2 *bomhei = obj->data; + WorkBomhei2 *parent = bomhei->unk4->data; + float vel = 3; + float dx; + float dz; + + s32 state; + switch (bomhei->unk44) { + case 0: + if (bomhei->unk3C != 1) { + bomhei->unk3C = 1; + Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk3C], 0, 8, HU3D_MOTATTR_LOOP); + } + dx = bomhei->unk14.x - bomhei->unk8.x; + dz = bomhei->unk14.z - bomhei->unk8.z; + dist = sqrtf((dx * dx) + (dz * dz)); + if (vel < dist) { + dx = vel * (dx / dist); + dz = vel * (dz / dist); + } + bomhei->unk8.x += dx; + bomhei->unk8.z += dz; + bomhei->unk2C = fn_1_1E20(bomhei->unk2C, atan2d(dx, dz), 0.4f); + bomhei->unk30 = bomhei->unk2C; + if (vel > dist) { + switch (bomhei->unk40) { + case 1: + case 2: + bomhei->unk44 = 1; + bomhei->unk34 = 0; + bomhei->unk3C = 0; + Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk3C], 0, 8, HU3D_MOTATTR_LOOP); + break; + + default: + bomhei->unk44 = 3; + break; + } + } + break; + + case 1: + bomhei->unk2C = fn_1_1E20(bomhei->unk2C, atan2d(parent->unk8.x - bomhei->unk8.x, parent->unk8.z - bomhei->unk8.z), 0.05f); + bomhei->unk30 = bomhei->unk2C; + parent->unk2C = fn_1_1E20(parent->unk2C, atan2d(bomhei->unk8.x - parent->unk8.x, bomhei->unk8.z - parent->unk8.z), 0.05f); + parent->unk30 = parent->unk2C; + bomhei->unk34++; + if (180.0f < bomhei->unk34) { + bomhei->unk44 = 3; + if (bomhei->unk40 == 2) { + bomhei->unk44 = 2; + } + } + break; + + case 2: { + Vec temp = parent->unk8; + float tempAngle = parent->unk2C; + parent->unk20 = parent->unk8; + parent->unk8 = bomhei->unk8; + parent->unk2C = bomhei->unk2C; + bomhei->unk8 = temp; + bomhei->unk2C = tempAngle; + bomhei->unk30 = tempAngle; + bomhei->unk34 = 0; + bomhei->unk44 = 3; + } break; + + case 3: + bomhei->unk30 = fn_1_1E20(bomhei->unk30, atan2d(bomhei->unk20.x - bomhei->unk14.x, bomhei->unk20.z - bomhei->unk14.z), 0.2f); + bomhei->unk2C = bomhei->unk30; + bomhei->unk8.x += vel * sind(bomhei->unk30); + bomhei->unk8.z += vel * cosd(bomhei->unk30); + if (bomhei->unk3C != 1) { + bomhei->unk3C = 1; + Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk3C], 0, 8, HU3D_MOTATTR_LOOP); + } + parent->unk2C = fn_1_1E20(parent->unk2C, atan2d(-parent->unk8.x, -parent->unk8.z), 0.05f); + bomhei->unk34++; + if (bomhei->unk40 == 2 && 60.0f < bomhei->unk34) { + dx = parent->unk20.x - parent->unk8.x; + dz = parent->unk20.z - parent->unk8.z; + dist = sqrtf((dx * dx) + (dz * dz)); + if (vel < dist) { + dx = vel * (dx / dist); + dz = vel * (dz / dist); + } + parent->unk8.x += dx; + parent->unk8.z += dz; + state = 0; + if (0.0f < dist) { + state = 1; + } + if (state != parent->unk3C) { + parent->unk3C = state; + Hu3DMotionShiftSet(parent->unk0->model[0], parent->unk0->motion[parent->unk3C], 0, 8, HU3D_MOTATTR_LOOP); + } + } + if (1750 < VECMagXZ(&bomhei->unk8)) { + parent->unk4 = NULL; + Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_DISPOFF); + fn_1_24(0x1000, obj->model[0]); + omDelObjEx(lbl_1_bss_238, obj); + return; + } + break; + } + omSetTra(obj, bomhei->unk8.x, bomhei->unk8.y, bomhei->unk8.z); + omSetRot(obj, 0, bomhei->unk2C, 0); + if (bomhei->unk38) { + bomhei->unk38 = 0; + Hu3DMotionTimeSet(obj->model[0], Hu3DMotionMaxTimeGet(obj->model[0]) * frandf()); + Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); + } +} + +s32 fn_1_ADDC(WorkBomhei2 *parent, WorkBomhei2 *bomhei) +{ + parent->unk4 = bomhei->unk0; + bomhei->unk4 = parent->unk0; + bomhei->unk40 = frandmod(3); + bomhei->unk44 = 0; + bomhei->unk14.x = 750.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk14.z = 750.0f * ((0 > parent->unk8.z) ? -1 : 1); + if (lbl_1_bss_204 & 0x1) { + bomhei->unk8.x = 1400.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk8.z = 750.0f * ((0 > parent->unk8.z) ? -1 : 1); + bomhei->unk20.x = 750.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk20.z = 1400.0f * ((0 > parent->unk8.z) ? -1 : 1); + } + else { + bomhei->unk8.x = 750.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk8.z = 1400.0f * ((0 > parent->unk8.z) ? -1 : 1); + bomhei->unk20.x = 1400.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk20.z = 750.0f * ((0 > parent->unk8.z) ? -1 : 1); + } + bomhei->unk2C = atan2d(bomhei->unk14.x - bomhei->unk8.x, bomhei->unk14.z - bomhei->unk8.z); + bomhei->unk30 = bomhei->unk2C; +} + +void fn_1_B234(omObjData *obj) +{ + WorkBomhei2 *bomhei = obj->data; + if (NULL == bomhei->unk4) { + bomhei->unk2C = atan2d(-bomhei->unk8.x, -bomhei->unk8.z); + bomhei->unk48--; + if (0.0f > bomhei->unk48) { + WorkBomhei2 *bomheiNew; + bomhei->unk48 = frandmod(1200) + 300; + bomheiNew = fn_1_9CAC(fn_1_9EF4, 102); + fn_1_ADDC(bomhei, bomheiNew); + } + } + omSetTra(obj, bomhei->unk8.x, bomhei->unk8.y, bomhei->unk8.z); + omSetRot(obj, 0, bomhei->unk2C, 0); + if (bomhei->unk38) { + bomhei->unk38 = 0; + Hu3DMotionTimeSet(obj->model[0], Hu3DMotionMaxTimeGet(obj->model[0]) * frandf()); + Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_D70C(omObjData *obj); + +void fn_1_BA2C(omObjData *obj) +{ + if (omSysExitReq) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + obj->func = fn_1_D70C; + } + lbl_1_bss_204++; + switch (obj->work[0]) { + case 1000: + if (!WipeStatGet()) { + Vec dir; + obj->work[0]++; + lbl_1_bss_1C = 0; + lbl_1_bss_220 = lbl_1_data_C4; + lbl_1_bss_208 = lbl_1_data_DC; + VECSubtract(&lbl_1_bss_208, &lbl_1_bss_220, &dir); + VECNormalize(&dir, &dir); + HuAudFXListnerSetEX(&lbl_1_bss_220, &dir, 14000.0, 36000.0, 1000.0, 300.0, 300.0); + } + + break; + + case 1001: + lbl_1_bss_1C++; + if (30.0f < lbl_1_bss_1C) { + obj->work[0]++; + lbl_1_bss_1C = 0; + } + break; + + case 1002: + lbl_1_bss_1C++; + fn_1_13DC(lbl_1_bss_1C / 120, &lbl_1_data_D0); + if (120.0f <= lbl_1_bss_1C) { + obj->work[0]++; + lbl_1_bss_1C = 0; + fn_1_1350(&lbl_1_data_C4, &lbl_1_data_D0, &lbl_1_data_DC); + } + break; + + case 1003: + if (lbl_1_bss_1FA < 0) { + lbl_1_bss_1FA = MGSeqStartCreate(); + } + else { + if (lbl_1_bss_1F4 < 0 && (MGSeqStatGet(lbl_1_bss_1FA) & 0x10)) { + fn_1_1F24(70); + } + if (MGSeqStatGet(lbl_1_bss_1FA) == 0) { + obj->work[0]++; + lbl_1_bss_1FA = -1; + } + } + break; + + case 1004: + lbl_1_bss_200++; + fn_1_580(lbl_1_bss_1AC, 0, lbl_1_bss_200); + if (lbl_1_bss_14 || 35999 <= lbl_1_bss_200) { + obj->work[0] = 1005; + lbl_1_bss_1C = 0; + } + fn_1_9854(); + break; + + case 1005: + if (lbl_1_bss_1FA < 0) { + lbl_1_bss_1FA = MGSeqFinishCreate(); + fn_1_1F58(100); + mgRecordExtra = lbl_1_bss_200; + } + else { + lbl_1_bss_1C++; + if (60.0f < lbl_1_bss_1C && !MGSeqStatGet(lbl_1_bss_1FA)) { + obj->work[0] = 1007; + if (lbl_1_bss_1FC < lbl_1_bss_200) { + obj->work[0] = 1006; + fn_1_798(13); + } + lbl_1_bss_1FA = -1; + lbl_1_bss_1C = 0; + } + } + break; + + case 1006: + if (lbl_1_bss_1FA < 0) { + lbl_1_bss_1FA = MGSeqRecordCreate(lbl_1_bss_1FC); + } + else { + if (!MGSeqStatGet(lbl_1_bss_1FA)) { + obj->work[0]++; + lbl_1_bss_1C = 0; + lbl_1_bss_1FA = -1; + } + } + break; + + case 1007: + lbl_1_bss_1C++; + if (210.0f < lbl_1_bss_1C) { + fn_1_1F58(-1); + lbl_1_bss_1FA = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + obj->func = fn_1_D70C; + } + break; + + default: + OSReport("*** main mode error(%d)!!\n", obj->work[0]); + break; + } + fn_1_A40(); +} + +void fn_1_C970(omObjData *obj) +{ + s32 i; + obj->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M461, 0x00)); + Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_NOCULL | HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(obj->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(obj->model[0], 0); + Hu3DModelShadowMapSet(obj->model[0]); + omSetTra(obj, 0, 0, 0); + omSetRot(obj, 0, 0, 0); + obj->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M461, 0x01)); + Hu3DModelAttrSet(obj->model[1], HU3D_ATTR_NOCULL | HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(obj->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(obj->model[1], 1); + Hu3DModelShadowSet(obj->model[1]); + Hu3DModelPosSet(obj->model[1], 0, 0, 0); + Hu3DModelRotSet(obj->model[1], 0, 0, 0); + fn_1_B4C(64, DATA_MAKE_NUM(DATADIR_M461, 0x09)); + fn_1_9EC(); + for (i = 0; i < 2; i++) { + Hu3DModelAttrReset(obj->model[i], HU3D_ATTR_DISPOFF); + } + HuAudFXPlay(2085); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + obj->func = fn_1_BA2C; +} + +void ObjectSetup(void) +{ + s32 i; + s32 light; + float angle; + float radius; + float radiusPrev; + OSReport("******* M461 ObjectSetup *********\n"); + lbl_1_bss_238 = omInitObjMan(200, 8192); + omGameSysInit(lbl_1_bss_238); + lbl_1_bss_14 = FALSE; + lbl_1_bss_18 = FALSE; + lbl_1_bss_204 = 0; + lbl_1_bss_1FA = -1; + lbl_1_bss_1F8 = -1; + lbl_1_bss_1F4 = -1; + lbl_1_bss_10 = -1; + lbl_1_bss_C = -1; + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 2200; + lbl_1_bss_0 = 2300; + lbl_1_bss_200 = 0; + lbl_1_bss_1FC = GWMGRecordGet(13); + lbl_1_bss_1EC = -1; + Hu3DCameraViewportSet(HU3D_CAM0, 0, 0, 640, 480, 0, 1); + Hu3DCameraPerspectiveSet(HU3D_CAM0, 30, 20, 30000, 1.2f); + fn_1_1350(&lbl_1_data_A0, &lbl_1_data_AC, &lbl_1_data_B8); + light = Hu3DGLightCreateV(&lbl_1_data_E8, &lbl_1_data_F4, &lbl_1_data_100); + Hu3DGLightStaticSet(light, 1); + Hu3DGLightInfinitytSet(light); + Hu3DShadowCreate(30, 20, 30000); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_data_104, &lbl_1_data_11C, &lbl_1_data_110); + fn_1_0(); + for (i = 0; i < 20; i++) { + s32 modelId; + lbl_1_bss_4C[i] = NULL; + modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M461, 0x08)); + Hu3DModelAttrSet(modelId, HU3D_ATTR_DISPOFF); + fn_1_24(12288, modelId); + } + for (i = 0; i < 3; i++) { + lbl_1_bss_3C[i] = Hu3DModelCreateFile(lbl_1_data_1C8[i]); + Hu3DModelAttrSet(lbl_1_bss_3C[i], HU3D_ATTR_NOCULL | HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_2C[i] = Hu3DJointMotionFile(lbl_1_bss_3C[0], lbl_1_data_1D4[i]); + } + lbl_1_bss_28 = 0; + lbl_1_bss_20 = 0; + lbl_1_bss_24 = 10; + angle = 360.0f * frandf(); + radiusPrev = -1; + for (i = 0; i < lbl_1_bss_24; i++) { + Vec pos; + do { + radius = frandmod(5); + } while (radiusPrev == radius); + radiusPrev = radius; + pos.x = (200 + (100 * radius)) * sind(angle); + pos.y = 0; + pos.z = (200 + (100 * radius)) * cosd(angle); + fn_1_956C(&pos, 360.0f * frandf(), (i == 0) ? 1 : 0, 3000, -1); + angle += 36; + if (360.0f <= angle) { + angle -= 360.0f; + } + } + for (i = 0; i < 4; i++) { + WorkBomhei2 *bomhei2 = fn_1_9CAC(fn_1_B234, 103); + bomhei2->unk8 = lbl_1_data_2F0[i]; + bomhei2->unk2C = atan2d(-bomhei2->unk8.x, -bomhei2->unk8.z); + bomhei2->unk48 = frandmod(1200) + 300; + } + lbl_1_bss_9C = omAddObjEx(lbl_1_bss_238, 100, 1, 5, -1, fn_1_7328); + lbl_1_bss_A0 = omAddObjEx(lbl_1_bss_238, 104, 2, 0, -1, fn_1_C970); + lbl_1_bss_A0->work[0] = 1000; + lbl_1_bss_1C = 0; +} + +void fn_1_D70C(omObjData *obj) +{ + s32 i; + if (WipeStatGet()) { + return; + } + if (lbl_1_bss_1FA >= 0) { + MGSeqKill(lbl_1_bss_1FA); + } + if (lbl_1_bss_1F8 >= 0) { + MGSeqKill(lbl_1_bss_1F8); + } + MGSeqKillAll(); + HuAudAllStop(); + for (i = 0; i < 4; i++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); + } + omOvlReturnEx(1, 1); +} diff --git a/src/REL/m462Dll/main.c b/src/REL/m462Dll/main.c new file mode 100755 index 00000000..4b10f621 --- /dev/null +++ b/src/REL/m462Dll/main.c @@ -0,0 +1,1697 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06[8]; + /* 0x16 */ s16 unk16[4]; + /* 0x1E */ s16 unk1E; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ char unk38[4]; + /* 0x3C */ s32 unk3C; + /* 0x40 */ char unk40[4]; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ Vec unk4C; + /* 0x58 */ float unk58; + /* 0x5C */ float unk5C; + /* 0x60 */ Vec unk60; + /* 0x6C */ float unk6C; + /* 0x70 */ float unk70; + /* 0x74 */ float unk74; + /* 0x78 */ Vec unk78; + /* 0x84 */ float unk84; + /* 0x88 */ float unk88; + /* 0x8C */ float unk8C; + /* 0x90 */ float unk90; + /* 0x94 */ float unk94; +} StructBss340; // Size 0x98 + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s16 unk04[3]; + /* 0x0A */ char unk0A[2]; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ Vec unk14; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; +} StructBss70; // Size 0x48 + +void fn_1_4A0(void); +float fn_1_14B4(float arg0); +void fn_1_174C(void); +void fn_1_17A0(s32 arg0, s32 arg1); +void fn_1_44D8(void); +void fn_1_4BC4(void); +void fn_1_69C0(void); +void fn_1_7D40(void); +void fn_1_545C(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_594C(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_5DE4(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_7DA0(void); +s32 fn_1_1880(float arg0, float arg1, float arg2, s32 arg3, s32 arg4); + +s16 lbl_1_bss_3EA; +s16 lbl_1_bss_3E8; +s32 lbl_1_bss_3E4; +s32 lbl_1_bss_3E0; +s32 lbl_1_bss_3DC; +s32 lbl_1_bss_3D8; +StructBss340 lbl_1_bss_340[1]; +StructBss70 lbl_1_bss_70[10]; +StructBss70 lbl_1_bss_28; +omObjData *lbl_1_bss_24; +Vec lbl_1_bss_18; +Vec lbl_1_bss_C; +Vec lbl_1_bss_0; + +s32 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_20[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 79), DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 22) }; + +Vec lbl_1_data_30[] = { { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, + { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f } }; + +Vec lbl_1_data_90[] = { { -900.0f, 143.0f, -1020.0f }, { -677.0f, 143.0f, -1020.0f }, { 900.0f, 0.0f, -1150.0f }, { -307.0f, 182.0f, -1575.0f } }; + +s32 lbl_1_data_C0[][5] = { { 50, 80, 90, 95, 100 }, { 5, 55, 85, 95, 100 }, { 0, 5, 55, 90, 100 } }; + +float lbl_1_data_FC[] = { 0.3f, 0.5f, 0.7f, 0.9f, 1.0f }; + +void ObjectSetup(void) +{ + Process *temp_r3; + + temp_r3 = omInitObjMan(50, 0x2000); + omGameSysInit(temp_r3); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 640, 480); + lbl_1_bss_24 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_24->work[0] = 1; + CRotM->x = -26.0f; + CRotM->y = 0.0f; + CRotM->z = 0.0f; + CenterM->x = 0.0f; + CenterM->y = 0.0f; + CenterM->z = -295.0f; + CZoomM[0] = 3030.0f; + Hu3DLighInit(); + lbl_1_bss_3EA = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 255, 50, 0); + Hu3DGLightPosAimSet(lbl_1_bss_3EA, -2500.0f, 3535.5f, 2500.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_3EA); + lbl_1_bss_18.x = -2500.0f; + lbl_1_bss_18.y = 3535.5f; + lbl_1_bss_18.z = 2500.0f; + lbl_1_bss_C.x = lbl_1_bss_C.z = 0.0f; + lbl_1_bss_C.y = 1.0f; + lbl_1_bss_0.x = 0.0f; + lbl_1_bss_0.y = 0.0f; + lbl_1_bss_0.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_bss_18, &lbl_1_bss_C, &lbl_1_bss_0); + Hu3DBGColorSet(0, 0, 0); + fn_1_4A0(); + HuPrcChildCreate(fn_1_7DA0, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_4A0(void) +{ + float temp_f31; + float temp_f30; + void *var_r27; + StructBss340 *temp_r31; + StructBss70 *temp_r29; + Process *var_r25; + AnimData *var_r24; + AnimData *spC[4]; + s16 var_r30; + s16 var_r23; + s16 sp8; + s32 i; + s32 j; + + lbl_1_bss_3E0 = 0; + lbl_1_bss_3D8 = 0; + HuAudSndGrpSet(0x2C); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 0), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + lbl_1_bss_3E8 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowMapSet(var_r30); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + i = 0; + temp_r31 = &lbl_1_bss_340[i]; + temp_r31->unk20 = i; + temp_r31->unk24 = i; + temp_r31->unk28 = GWPlayerCfg[i].pad_idx; + temp_r31->unk02 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); + Hu3DModelLayerSet(temp_r31->unk00, 1); + CharModelLayerSetAll(2); + temp_r31->unk78.x = lbl_1_data_30[GWPlayerCfg[i].character].x; + temp_r31->unk78.y = lbl_1_data_30[GWPlayerCfg[i].character].y; + temp_r31->unk78.z = lbl_1_data_30[GWPlayerCfg[i].character].z; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk78.x, temp_r31->unk78.y, temp_r31->unk78.z); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 1), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk00 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(temp_r31->unk00, 1); + temp_r31->unk60.x = temp_r31->unk60.z = 0.0f; + temp_r31->unk60.y = 180.0f; + temp_r31->unk4C.x = 0.0f; + temp_r31->unk4C.y = 0.0f; + temp_r31->unk4C.z = 0.0f; + temp_r31->unk60.y = fn_1_14B4(temp_r31->unk60.y + 180.0f); + temp_r31->unk94 = temp_r31->unk60.y; + temp_r31->unk84 = 200.0f; + temp_r31->unk88 = 6.75f; + temp_r31->unk8C = 1.0f; + temp_r31->unk90 = 1.0f; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, temp_r31->unk60.y, temp_r31->unk60.z); + Hu3DModelShadowSet(temp_r31->unk00); + Hu3DModelHookSet(temp_r31->unk00, "itemhook_c", temp_r31->unk02); + for (j = 0; j < 4; j++) { + temp_r31->unk16[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], lbl_1_data_20[j]); + } + CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk16[0]); + CharModelMotionTimeSet(lbl_1_data_0[GWPlayerCfg[i].character], 60.0f); + CharModelVoiceEnableSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk16[2], 0); + for (j = 0; j < 8; j++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 2 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk06[j] = Hu3DJointMotion(temp_r31->unk00, var_r27); + } + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[0]); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); + Hu3DMotionSpeedSet(temp_r31->unk00, 1.0f); + Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 10), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk04 = Hu3DModelCreate(var_r27); + Hu3DModelLayerSet(temp_r31->unk04, 1); + Hu3DModelAttrSet(temp_r31->unk04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->unk04, HU3D_MOTATTR_PAUSE); + CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); + var_r25 = HuPrcChildCreate(fn_1_69C0, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r25->user_data = temp_r31; + var_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r24, 50); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 3); + Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, fn_1_545C); + var_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r24, 50); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 3); + Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, fn_1_594C); + var_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r24, 50); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 3); + Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, fn_1_5DE4); + HuDataDirClose(DATADIR_EFFECT); + for (i = 0; i < 10; i++) { + temp_r29 = &lbl_1_bss_70[i]; + temp_r29->unk30 = 50.0f; + do { + temp_f31 = 1380.0f * frandf() - 690.0f; + temp_f30 = 1380.0f * frandf() - 690.0f; + } while (fn_1_1880(temp_f31, temp_f30, 50.0f, i, -1) != 0); + temp_r29->unk24 = temp_f31; + temp_r29->unk14.x = temp_f31; + temp_r29->unk14.y = 0.0f; + temp_r29->unk28 = temp_f30; + temp_r29->unk14.z = temp_f30; + } + for (i = 0; i < 10; i++) { + temp_r29 = &lbl_1_bss_70[i]; + if (i == 0) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 12), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r23 = var_r30; + } + else { + var_r30 = Hu3DModelLink(var_r23); + } + temp_r29->unk00 = var_r30; + temp_r29->unk0C = i; + temp_r29->unk30 = 50.0f; + temp_r29->unk10 = 0; + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelShadowSet(var_r30); + Hu3DModelPosSet(var_r30, temp_r29->unk14.x, temp_r29->unk14.y, temp_r29->unk14.z); + temp_r29->unk20 = 0.0f; + temp_r29->unk34 = 6.75f * lbl_1_data_FC[0]; + for (j = 0; j < 3; j++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 13 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r29->unk04[j] = Hu3DJointMotion(var_r30, var_r27); + } + Hu3DMotionSet(var_r30, temp_r29->unk04[1]); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 11), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + sp8 = var_r30; + temp_r29->unk02 = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(var_r30, 3); + var_r25 = HuPrcChildCreate(fn_1_4BC4, 0x1000, 0x3000, 0, HuPrcCurrentGet()); + var_r25->user_data = temp_r29; + } + for (i = 0; i < 2; i++) { + var_r30 = Hu3DModelLink(var_r23); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 16), MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + Hu3DModelPosSet(var_r30, lbl_1_data_90[i].x, lbl_1_data_90[i].y, lbl_1_data_90[i].z); + if (i != 0) { + Hu3DMotionTimeSet(var_r30, Hu3DMotionMaxTimeGet(var_r30) / 2.0f); + } + } + var_r30 = Hu3DModelLink(var_r23); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 19), MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + Hu3DModelPosSet(var_r30, lbl_1_data_90[3].x, lbl_1_data_90[3].y, lbl_1_data_90[3].z); + Hu3DMotionSpeedSet(var_r30, 0.7f); + temp_r29 = &lbl_1_bss_28; + var_r30 = Hu3DModelLink(var_r23); + temp_r29->unk00 = var_r30; + for (j = 0; j < 2; j++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 17 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r29->unk04[j] = Hu3DJointMotion(var_r30, var_r27); + } + Hu3DMotionSet(var_r30, temp_r29->unk04[0]); + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30); + temp_r29->unk14.x = lbl_1_data_90[2].x; + temp_r29->unk14.y = lbl_1_data_90[2].y; + temp_r29->unk14.z = lbl_1_data_90[2].z; + Hu3DModelPosSet(var_r30, temp_r29->unk14.x, temp_r29->unk14.y, temp_r29->unk14.z); + var_r25 = HuPrcChildCreate(fn_1_44D8, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + var_r25->user_data = temp_r29; + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 44), MEMORY_DEFAULT_NUM, HEAP_DATA); + spC[0] = HuSprAnimRead(var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 55), MEMORY_DEFAULT_NUM, HEAP_DATA); + spC[1] = HuSprAnimRead(var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 48), MEMORY_DEFAULT_NUM, HEAP_DATA); + spC[2] = HuSprAnimRead(var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 49), MEMORY_DEFAULT_NUM, HEAP_DATA); + spC[3] = HuSprAnimRead(var_r27); + lbl_1_bss_3DC = HuSprGrpCreate(6); + var_r30 = HuSprCreate(spC[0], 0x4000, 0); + HuSprGrpMemberSet(lbl_1_bss_3DC, 0, var_r30); + HuSprPosSet(lbl_1_bss_3DC, 0, 0.0f, 0.0f); + HuSprTPLvlSet(lbl_1_bss_3DC, 0, 0.5f); + HuSprColorSet(lbl_1_bss_3DC, 0, 0, 0, 0); + var_r30 = HuSprCreate(spC[1], 0x4000, 0); + HuSprGrpMemberSet(lbl_1_bss_3DC, 1, var_r30); + HuSprPosSet(lbl_1_bss_3DC, 1, -19.0f, -9.0f); + var_r30 = HuSprCreate(spC[2], 0x4000, 0); + HuSprGrpMemberSet(lbl_1_bss_3DC, 2, var_r30); + HuSprPosSet(lbl_1_bss_3DC, 2, 20.0f, -8.0f); + var_r30 = HuSprCreate(spC[2], 0x4000, 0); + HuSprGrpMemberSet(lbl_1_bss_3DC, 3, var_r30); + HuSprPosSet(lbl_1_bss_3DC, 3, 2.0f, -8.0f); + var_r30 = HuSprCreate(spC[3], 0x4000, 0); + HuSprGrpMemberSet(lbl_1_bss_3DC, 4, var_r30); + HuSprPosSet(lbl_1_bss_3DC, 4, 20.0f, 8.0f); + var_r30 = HuSprCreate(spC[3], 0x4000, 0); + HuSprGrpMemberSet(lbl_1_bss_3DC, 5, var_r30); + HuSprPosSet(lbl_1_bss_3DC, 5, 2.0f, 8.0f); + HuSprGrpPosSet(lbl_1_bss_3DC, 511.0f, 61.0f); + fn_1_17A0(lbl_1_bss_3D8, 0); + fn_1_17A0(GWMGRecordGet(14), 1); + fn_1_174C(); + HuPrcChildCreate(fn_1_7D40, 0x1000, 0x1000, 0, HuPrcCurrentGet()); +} + +float fn_1_14B4(float arg0) +{ + while (arg0 >= 360.0f || arg0 < 0.0f) { + if (arg0 >= 360.0f) { + arg0 -= 360.0f; + } + if (arg0 < 0.0f) { + arg0 += 360.0f; + } + } + return arg0; +} + +float fn_1_1534(float arg0, float arg1) +{ + float var_f31; + + if (arg0 > 750.0f - arg1) { + var_f31 = 750.0f; + } + else if (arg0 < -(750.0f - arg1)) { + var_f31 = 750.0f; + } + else { + var_f31 = 750.0f; + } + return var_f31; +} + +float fn_1_15B4(float arg0, float arg1) +{ + return fn_1_1534(arg0, arg1); +} + +void fn_1_1634(void) +{ + float var_f31; + float temp_f30; + s32 i; + + var_f31 = 0.0f; + while (TRUE) { + var_f31 += 16.0f; + temp_f30 = 1.0 + 0.2f * sind(var_f31); + for (i = 0; i < 3; i++) { + HuSprScaleSet(lbl_1_bss_3DC, i + 1, temp_f30, temp_f30); + } + HuPrcVSleep(); + } +} + +void fn_1_16F8(void) +{ + s32 i; + + for (i = 0; i < 6; i++) { + HuSprAttrReset(lbl_1_bss_3DC, i, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_174C(void) +{ + s32 i; + + for (i = 0; i < 6; i++) { + HuSprAttrSet(lbl_1_bss_3DC, i, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_17A0(s32 arg0, s32 arg1) +{ + s32 var_r31; + + if (arg1 != 0) { + var_r31 = 2; + } + else { + var_r31 = 4; + } + HuSprBankSet(lbl_1_bss_3DC, var_r31, arg0 % 10); + HuSprBankSet(lbl_1_bss_3DC, var_r31 + 1, arg0 / 10); + HuSprAttrReset(lbl_1_bss_3DC, var_r31 + 1, HUSPR_ATTR_DISPOFF); +} + +s32 fn_1_1880(float arg0, float arg1, float arg2, s32 arg3, s32 arg4) +{ + Vec sp34; + Vec sp28; + Vec sp1C; + s32 i; + StructBss70 *temp_r30; + StructBss340 *var_r29; + + if (arg3 > 10) { + arg3 = 10; + } + HuSetVecF(&sp34, arg0, 0.0, arg1); + for (i = 0; i < arg3; i++) { + if (arg4 == i) { + continue; + } + temp_r30 = &lbl_1_bss_70[i]; + HuSetVecF(&sp28, temp_r30->unk14.x, 0.0, temp_r30->unk14.z); + HuSubVecF(&sp1C, &sp34, &sp28); + if (VECMagXZ(&sp1C) < temp_r30->unk30 + arg2) { + break; + } + } + if (i < arg3) { + return 1; + } + var_r29 = &lbl_1_bss_340[0]; + HuSetVecF(&sp28, var_r29->unk4C.x, 0.0, var_r29->unk4C.z); + HuSubVecF(&sp1C, &sp34, &sp28); + if (VECMagXZ(&sp1C) < var_r29->unk84 + arg2) { + return 1; + } + return 0; +} + +s32 fn_1_1BD4(StructBss70 *arg0) +{ + float var_f31; + float var_f30; + s32 var_r31; + + var_r31 = 0; + var_f31 = fn_1_1534(arg0->unk14.z, arg0->unk30); + var_f30 = fn_1_1534(arg0->unk14.x, arg0->unk30); + if (arg0->unk14.x > var_f31 - arg0->unk30) { + var_r31 = 1; + arg0->unk14.x = var_f31 - arg0->unk30; + } + if (arg0->unk14.x < -(var_f31 - arg0->unk30)) { + var_r31 = 1; + arg0->unk14.x = -(var_f31 - arg0->unk30); + } + if (arg0->unk14.z > var_f30 - arg0->unk30) { + var_r31 = 1; + arg0->unk14.z = var_f30 - arg0->unk30; + } + if (arg0->unk14.z < -(var_f30 - arg0->unk30)) { + var_r31 = 1; + arg0->unk14.z = -(var_f30 - arg0->unk30); + } + return var_r31; +} + +void fn_1_1E10(StructBss70 *arg0) +{ + Vec sp104; + Vec spF8; + Vec spEC; + float temp_f21; + float temp_f20; + float var_f19; + float var_f26; + float spC4; + float spC0; + float spBC; + float spB8; + float spB4; + float spB0; + float spAC; + float spA0; + StructBss70 *var_r30; + StructBss70 *temp_r28; + s32 temp_r19; + s32 var_r21; + s32 i; + + if (fn_1_1880(arg0->unk14.x, arg0->unk14.z, 50.0f, 10, arg0->unk0C) == 0) { + return; + } + var_f19 = fn_1_14B4(atan2d(arg0->unk14.x - arg0->unk24, arg0->unk14.z - arg0->unk28)); + temp_f21 = spB8 = arg0->unk24; + temp_f20 = spB4 = arg0->unk28; + spAC = 1.0f; + for (var_r21 = 1.0f + arg0->unk34 / spAC; var_r21 != 0; var_r21--) { + temp_f21 += spAC * sind(var_f19); + temp_f20 += spAC * cosd(var_f19); + HuSetVecF(&sp104, temp_f21, arg0->unk14.y, temp_f20); + for (i = 0; i < 10; i++) { + if (i == arg0->unk0C) { + continue; + } + var_r30 = &lbl_1_bss_70[i]; + HuSetVecF(&spF8, var_r30->unk14.x, var_r30->unk14.y, var_r30->unk14.z); + HuSubVecF(&spEC, &sp104, &spF8); + if (VECMagXYZ(&spEC) < arg0->unk30 + var_r30->unk30) { + break; + } + } + if (i < 10) { + break; + } + if (fn_1_1BD4(arg0)) { + goto block_end; + } + spB8 = temp_f21; + spB4 = temp_f20; + } + var_f19 = fn_1_14B4(atan2d(arg0->unk14.x - arg0->unk24, arg0->unk14.z - arg0->unk28)); + var_f26 = fn_1_14B4(atan2d(var_r30->unk14.x - arg0->unk24, var_r30->unk14.z - arg0->unk28)); + spC0 = var_f19 - var_f26; + if (spC0 > 0.0f) { + spBC = -0.5f; + } + else { + spBC = 0.5f; + } + if (ABS_INV(var_f19 - var_f26) > 180.0f) { + spBC = -spBC; + } + var_f26 = fn_1_14B4(atan2d(arg0->unk24 - var_r30->unk14.x, arg0->unk28 - var_r30->unk14.z)); + spB0 = 0.8f * arg0->unk34; + temp_r19 = var_r30->unk0C; + spC4 = arg0->unk30 + var_r30->unk30 + 1.0f; + while (TRUE) { + temp_f21 = var_r30->unk14.x + spC4 * sind(var_f26); + temp_f20 = var_r30->unk14.z + spC4 * cosd(var_f26); + HuSetVecF(&sp104, temp_f21, 0.0, temp_f20); + for (i = 0; i < 10; i++) { + if (i == arg0->unk0C || i == temp_r19) { + continue; + } + temp_r28 = &lbl_1_bss_70[i]; + HuSetVecF(&spF8, temp_r28->unk14.x, 0.0, temp_r28->unk14.z); + HuSubVecF(&spEC, &sp104, &spF8); + if (VECMagXZ(&spEC) < arg0->unk30 + temp_r28->unk30) { + break; + } + } + if (i < 10 || fn_1_1BD4(arg0)) { + break; + } + spB8 = temp_f21; + spB4 = temp_f20; + HuSetVecF(&sp104, arg0->unk24, 0.0, arg0->unk28); + HuSetVecF(&spF8, temp_f21, 0.0, temp_f20); + HuSubVecF(&spEC, &sp104, &spF8); + if (VECMagXZ(&spEC) > spB0) { + break; + } + var_f26 += spBC; + } +block_end: + arg0->unk14.x = spB8; + arg0->unk14.z = spB4; +} + +void fn_1_2FDC(StructBss70 *arg0) +{ + Vec spF0; + Vec spE4; + Vec spD8; + s32 i; + StructBss340 *var_r30; + StructBss70 *temp_r25; + float var_f31; + s32 var_r23; + s32 var_r20; + s32 spAC[2]; + + var_r30 = &lbl_1_bss_340[0]; + arg0->unk24 = arg0->unk14.x; + arg0->unk28 = arg0->unk14.z; + switch (arg0->unk38) { + case 0: + var_r20 = 0; + HuSetVecF(&spF0, var_r30->unk4C.x, 0.0, var_r30->unk4C.z); + HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); + HuSubVecF(&spD8, &spF0, &spE4); + if (VECMagXZ(&spD8) < var_r30->unk84 + arg0->unk30 + 100.0f) { + var_r20 = 80; + } + if (frandmod(100) < var_r20) { + var_f31 = fn_1_14B4(atan2d(arg0->unk14.x - var_r30->unk4C.x, arg0->unk14.z - var_r30->unk4C.z)); + var_f31 += 30.0f * frandf() - 60.0f; + var_f31 = fn_1_14B4(var_f31); + arg0->unk20 = var_f31; + } + else if (ABS_INV(arg0->unk14.x) > 550.0f) { + var_f31 = fn_1_14B4(180.0 + atan2d(arg0->unk14.x, 0.0)); + var_f31 += 10.0f * frandf() - 20.0f; + var_f31 = fn_1_14B4(var_f31); + arg0->unk20 = var_f31; + } + else if (frandmod(3) != 0) { + for (i = 0, var_r23 = 0; i < 10; i++) { + if (i == arg0->unk0C) { + continue; + } + temp_r25 = &lbl_1_bss_70[i]; + HuSetVecF(&spF0, temp_r25->unk14.x, 0.0, temp_r25->unk14.z); + HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); + HuSubVecF(&spD8, &spF0, &spE4); + if (VECMagXZ(&spD8) < 150.0f) { + spAC[var_r23++] = arg0->unk0C; + if (var_r23 >= 2) { + break; + } + } + } + if (var_r23 == 1 && ABS_INV(var_r30->unk4C.x) < 650.0f) { + temp_r25 = &lbl_1_bss_70[spAC[0]]; + var_f31 = fn_1_14B4(atan2d(arg0->unk40 - arg0->unk14.x, arg0->unk44 - arg0->unk14.z)); + } + else { + var_f31 = fn_1_14B4(180.0 + atan2d(arg0->unk14.x, arg0->unk14.z)); + var_f31 += 30.0f * frandf() - 60.0f; + var_f31 = fn_1_14B4(var_f31); + arg0->unk20 = var_f31; + } + } + else { + var_f31 = 360.0f * frandf(); + arg0->unk20 = var_f31; + } + arg0->unk40 = arg0->unk14.x + 100.0 * sind(var_f31); + arg0->unk44 = arg0->unk14.z + 100.0 * cosd(var_f31); + arg0->unk38 = 10; + arg0->unk3C = 60; + break; + case 10: + if (arg0->unk3C-- == 0) { + arg0->unk38 = 0; + } + if (arg0->unk3C < 50) { + HuSetVecF(&spF0, var_r30->unk4C.x, 0.0, var_r30->unk4C.z); + HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); + HuSubVecF(&spD8, &spF0, &spE4); + if (VECMagXZ(&spD8) < var_r30->unk84 + arg0->unk30 + 100.0f) { + arg0->unk38 = 0; + } + } + HuSetVecF(&spF0, arg0->unk40, 0.0, arg0->unk44); + HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); + HuSubVecF(&spD8, &spF0, &spE4); + if (VECMagXZ(&spD8) > 10.0f) { + var_f31 = fn_1_14B4(atan2d(arg0->unk40 - arg0->unk14.x, arg0->unk44 - arg0->unk14.z)); + arg0->unk14.x += arg0->unk34 * sind(var_f31); + arg0->unk14.z += arg0->unk34 * cosd(var_f31); + if (fn_1_1BD4(arg0)) { } + if (fn_1_1880(arg0->unk14.x, arg0->unk14.z, 50.0f, 10, arg0->unk0C) != 0) { + arg0->unk14.x = arg0->unk24; + arg0->unk14.z = arg0->unk28; + arg0->unk38 = 100; + arg0->unk3C = 0; + } + } + else { + arg0->unk38 = 100; + arg0->unk3C = 0; + } + break; + case 100: + if (arg0->unk3C == 0) { + arg0->unk38 = 0; + } + arg0->unk3C--; + break; + } +} + +void fn_1_44D8(void) +{ + StructBss70 *temp_r31; + float temp_f30; + float var_f31; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_f30 = temp_r31->unk14.x; + while (TRUE) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[0]); + for (i = 0, var_f31 = 0.0f; i < 60; i++) { + temp_r31->unk14.x = temp_f30 - 300.0 * sind(var_f31); + var_f31 += 1.5f; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); + HuPrcVSleep(); + } + HuPrcSleep(30); + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[1]); + for (i = 0, var_f31 = 90.0f; i < 60; i++) { + temp_r31->unk14.x = temp_f30 - 300.0 * sind(var_f31); + var_f31 -= 1.5f; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); + HuPrcVSleep(); + } + HuPrcSleep(30); + } +} + +void fn_1_4644(StructBss70 *arg0) +{ + float temp_f26; + float temp_f25; + float var_f27; + float var_f24; + float temp_f23; + s32 i; + + do { + temp_f26 = 5.0f; + if (frandmod(2) != 0) { + arg0->unk14.x = -700.0f + temp_f26; + arg0->unk20 = 90.0f; + var_f27 = -700.0f + temp_f26 - 500.0f; + var_f24 = 8.333333f; + } + else { + arg0->unk14.x = 700.0f - temp_f26; + arg0->unk20 = 270.0f; + var_f27 = 700.0f - temp_f26 + 500.0f; + var_f24 = -8.333333f; + } + arg0->unk14.y = 0.0f; + temp_f23 = 550.0f; + temp_f25 = temp_f23 * frandf() * 2.0f - temp_f23; + arg0->unk14.z = temp_f25; + arg0->unk24 = arg0->unk14.x; + arg0->unk28 = arg0->unk14.z; + } while (fn_1_1880(arg0->unk14.x, arg0->unk14.z, 50.0f, 10, arg0->unk0C) != 0); + Hu3DMotionSet(arg0->unk00, arg0->unk04[2]); + Hu3DModelRotSet(arg0->unk00, 0.0f, arg0->unk20, 0.0f); + for (i = 0; i < 60; i++) { + var_f27 += var_f24; + Hu3DModelPosSet(arg0->unk00, var_f27, 0.0f, temp_f25); + if (lbl_1_bss_3E4 >= 4) { + break; + } + HuPrcVSleep(); + } + if (lbl_1_bss_3E4 >= 4) { + arg0->unk14.x = var_f27; + arg0->unk14.z = temp_f25; + } + Hu3DModelPosSet(arg0->unk00, arg0->unk14.x, 0.0f, arg0->unk14.z); +} + +void fn_1_4BC4(void) +{ + s32 spC; + float sp8; + float temp_f23; + float var_f27; + float var_f28; + float var_f30; + float var_f29; + StructBss70 *temp_r31; + StructBss340 *var_r28; + StructBss340 *var_r30; + s32 temp_r27; + s32 temp_r24; + s32 var_r26; + s32 var_r25; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk10 = 0; +loop_1: + temp_r27 = lbl_1_bss_3E0 / 60; + var_r25 = 0; + if (temp_r27 > 10) { + var_r25 = 1; + } + if (temp_r27 > 20) { + var_r25 = 2; + } + temp_r27 = frandmod(100); + for (i = 0; i < 5; i++) { + if (lbl_1_data_C0[var_r25][i] > temp_r27) { + break; + } + } + if (i > 4) { + while (TRUE) + ; + } + temp_r31->unk34 = 6.75f * lbl_1_data_FC[i]; + temp_r31->unk38 = 0; + while (TRUE) { + switch (temp_r31->unk10) { + case 2: + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[1]); + fn_1_4644(temp_r31); + temp_r31->unk10 = 0; + if (FALSE) { + default: + fn_1_2FDC(temp_r31); + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); + Hu3DModelRotSet(temp_r31->unk00, 0.0f, temp_r31->unk20, 0.0f); + if (lbl_1_bss_3E4 < 4) { + HuPrcVSleep(); + break; + } + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[0]); + HuPrcSleep(60); + var_r28 = &lbl_1_bss_340[0]; + if (ABS_INV(var_r28->unk4C.z - temp_r31->unk14.z) > 250.0f) { + if (temp_r31->unk14.x > 0.0f) { + var_f30 = 10.0f; + } + else { + var_f30 = -10.0f; + } + } + else { + if (var_r28->unk4C.x > temp_r31->unk14.x) { + var_f30 = -10.0f; + } + else { + var_f30 = 10.0f; + } + } + if (var_f30 > 0.0f) { + Hu3DModelRotSet(temp_r31->unk00, 0.0f, 90.0f, 0.0f); + } + else { + Hu3DModelRotSet(temp_r31->unk00, 0.0f, 270.0f, 0.0f); + } + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[1]); + while (ABS_INV(temp_r31->unk14.x) < 1500.0f) { + temp_r31->unk14.x += var_f30; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); + HuPrcVSleep(); + } + while (TRUE) { + HuPrcVSleep(); + } + break; + case 3: + lbl_1_bss_3D8++; + if (lbl_1_bss_3D8 > 99) { + lbl_1_bss_3D8 = 99; + } + temp_r24 = lbl_1_bss_3D8; + var_r26 = 4; + HuSprBankSet(lbl_1_bss_3DC, var_r26, temp_r24 % 10); + HuSprBankSet(lbl_1_bss_3DC, var_r26 + 1, temp_r24 / 10); + HuSprAttrReset(lbl_1_bss_3DC, var_r26 + 1, HUSPR_ATTR_DISPOFF); + omVibrate(0, 12, 6, 6); + HuAudFXPlay(0x45); + HuAudFXPlay(0x5EE); + var_r30 = &lbl_1_bss_340[0]; + temp_r31->unk2C = fn_1_14B4(atan2d(temp_r31->unk14.x - var_r30->unk4C.x, temp_r31->unk14.z - var_r30->unk4C.z)); + Hu3DMotionTimeSet(temp_r31->unk02, 0.0f); + Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(temp_r31->unk02, var_r30->unk4C.x + var_r30->unk84 * sind(temp_r31->unk2C), temp_r31->unk14.y + 50.0f, + var_r30->unk4C.z + var_r30->unk84 * cosd(temp_r31->unk2C)); + i = 0; + var_f29 = temp_r31->unk14.x; + var_f28 = temp_r31->unk14.z; + while (TRUE) { + var_f29 += 30.0 * sind(var_r30->unk94); + var_f28 += 30.0 * cosd(var_r30->unk94); + if (ABS_INV(var_f29) > 1500.0f || var_f28 > 1300.0f || var_f28 < -2000.0f) { + break; + } + i++; + } + sp8 = temp_r31->unk14.y; + var_f27 = 0.0f; + temp_f23 = 180.0f / i; + spC = 0; + for (; i != 0; i--) { + temp_r31->unk14.x += 30.0 * sind(temp_r31->unk2C); + temp_r31->unk14.y = 400.0 * sind(var_f27); + temp_r31->unk14.z += 30.0 * cosd(temp_r31->unk2C); + var_f27 += temp_f23; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); + HuPrcVSleep(); + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, -1000.0f, temp_r31->unk14.z); + temp_r31->unk10 = 2; + Hu3DModelAttrSet(temp_r31->unk02, HU3D_ATTR_DISPOFF); + goto loop_1; + } + } +} + +void fn_1_545C(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + StructBss340 *temp_r28; + float var_f30; + float var_f31; + float temp_f29; + s32 var_r27; + s16 i; + s16 j; + s16 k; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < 1; i++) { + temp_r28 = &lbl_1_bss_340[i]; + if (!(temp_r28->unk30 & 1)) { + continue; + } + for (j = 0, var_f30 = 0.0f; j < 16; j++, var_f30 += 22.5f) { + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (k == particle->unk_30) { + break; + } + var_f31 = var_f30; + temp_f29 = 125.0f + 70.0f * frandf(); + var_r31->unk34.x = temp_r28->unk6C + temp_f29 * sind(var_f31); + var_r31->unk34.y = temp_r28->unk70 + 50.0f * frandf(); + var_r31->unk34.z = temp_r28->unk74 + temp_f29 * cosd(var_f31); + var_r31->unk08.x = 5.0 * sind(var_f31); + var_r31->unk08.y = 9.0f + 2.0f * frandf(); + var_r31->unk08.z = 5.0 * cosd(var_f31); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 80.0f + 20.0f * frandf(); + var_r31->unk14.y = 15.0f; + var_r31->unk40.a = 0xC8; + var_r31->unk14.z = 17.0f; + } + temp_r28->unk30 &= ~1; + } + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + continue; + } + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.95f; + var_r31->unk08.z *= 0.95f; + if (var_r31->unk08.y > 0.1f) { + var_r31->unk08.y -= 0.2f; + } + if (var_r31->unk08.y < 0.0f) { + var_r31->unk08.y = 0.0f; + } + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 1.5f; + } + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } +} + +void fn_1_594C(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + StructBss340 *temp_r28; + float temp_f31; + float temp_f30; + s32 var_r27; + s16 i; + s16 j; + s16 k; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + var_r31->unk20 = -1.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < 1; i++) { + temp_r28 = &lbl_1_bss_340[i]; + if (!(temp_r28->unk30 & 2)) { + continue; + } + for (j = 0; j < 10; j++) { + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (k == particle->unk_30) { + break; + } + temp_f31 = 400.0f * frandf() - 200.0f; + temp_f30 = 400.0f * frandf() - 200.0f; + var_r31->unk34.x = temp_r28->unk6C + temp_f31; + var_r31->unk34.y = temp_r28->unk70 + 50.0f; + var_r31->unk34.z = temp_r28->unk74 + temp_f30; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 7.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20 = frandmod(10); + var_r31->unk24 = 0.0f; + var_r31->unk14.x = 100.0f; + var_r31->unk2C = 0.0f; + var_r31->unk14.y = 7.0f; + var_r31->unk40.a = 0xFF; + var_r31->unk14.z = 10.0f; + } + temp_r28->unk30 &= ~2; + } + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk20 > 0.0f) { + var_r31->unk20 -= 1.0f; + } + if (var_r31->unk20 == 0.0f) { + var_r31->unk24 = 1.0f; + var_r31->unk2C = 100.0f + 100.0f * frandf(); + var_r31->unk20 = -1.0f; + } + if (var_r31->unk14.x == 0.0f || var_r31->unk24 == 0.0f) { + continue; + } + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + if (var_r31->unk08.y > 1.0f) { + var_r31->unk08.y -= 0.3f; + } + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 0.4f; + } + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } +} + +void fn_1_5DE4(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + StructBss340 *temp_r28; + float temp_f31; + float temp_f30; + s32 var_r27; + s16 i; + s16 j; + s16 k; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + var_r31->unk20 = -1.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < 1; i++) { + temp_r28 = &lbl_1_bss_340[i]; + if (!(temp_r28->unk30 & 4)) { + continue; + } + for (j = 0; j < 10; j++) { + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (k == particle->unk_30) { + break; + } + temp_f31 = 400.0f * frandf() - 200.0f; + temp_f30 = 400.0f * frandf() - 200.0f; + var_r31->unk34.x = temp_r28->unk6C + temp_f31; + var_r31->unk34.y = temp_r28->unk70 + 50.0f; + var_r31->unk34.z = temp_r28->unk74 + temp_f30; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 7.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20 = frandmod(10); + var_r31->unk24 = 0.0f; + var_r31->unk14.x = 100.0f; + var_r31->unk2C = 0.0f; + var_r31->unk14.y = 7.0f; + var_r31->unk40.a = 0xFF; + var_r31->unk14.z = 10.0f; + } + temp_r28->unk30 &= ~4; + } + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk20 > 0.0f) { + var_r31->unk20 -= 1.0f; + } + if (var_r31->unk20 == 0.0f) { + var_r31->unk24 = 1.0f; + var_r31->unk2C = 100.0f + 100.0f * frandf(); + var_r31->unk20 = -1.0f; + } + if (var_r31->unk14.x == 0.0f || var_r31->unk24 == 0.0f) { + continue; + } + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + if (var_r31->unk08.y > 1.0f) { + var_r31->unk08.y -= 0.3f; + } + var_r31->unk2C += var_r31->unk14.y; + if (var_r31->unk14.y > 2.0f) { + var_r31->unk14.y -= 0.4f; + } + var_r27 = var_r31->unk40.a; + var_r27 -= var_r31->unk14.z; + if (var_r31->unk14.z > 3.0f) { + var_r31->unk14.z -= 1.0f; + } + if (var_r27 < 0) { + var_r27 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r27; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } +} + +s8 fn_1_627C(s32 arg0, s32 arg1) +{ + StructBss340 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_340[arg0]; + (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk28]) : (var_r30 = HuPadStkX[temp_r31->unk28]); + return var_r30; +} + +u8 fn_1_62F0(s32 arg0, s32 arg1) +{ + StructBss340 *temp_r31; + s8 var_r30; + + temp_r31 = &lbl_1_bss_340[arg0]; + (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk28]) : (var_r30 = HuPadTrigL[temp_r31->unk28]); + return var_r30; +} + +u16 fn_1_636C(s32 arg0) +{ + StructBss340 *temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_340[arg0]; + var_r30 = HuPadBtnDown[temp_r31->unk28]; + return var_r30; +} + +u16 fn_1_63B4(s32 arg0) +{ + StructBss340 *temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_340[arg0]; + var_r30 = HuPadBtn[temp_r31->unk28]; + return var_r30; +} + +s32 fn_1_63FC(StructBss340 *arg0) +{ + Vec sp24; + Vec sp18; + Vec spC; + StructBss70 *temp_r31; + s32 var_r28; + s32 i; + + var_r28 = -1; + HuSetVecF(&sp24, arg0->unk4C.x, arg0->unk4C.y, arg0->unk4C.z); + for (i = 0; i < 10; i++) { + temp_r31 = &lbl_1_bss_70[i]; + HuSetVecF(&sp18, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); + HuSubVecF(&spC, &sp24, &sp18); + if (VECMagXYZ(&spC) < arg0->unk84 + temp_r31->unk30) { + temp_r31->unk10 = 3; + var_r28 = i; + } + } + return var_r28; +} + +s32 fn_1_65D0(StructBss340 *arg0) +{ + float var_f31; + float var_f30; + s32 sp8; // ! - uninitialized + + var_f31 = fn_1_1534(arg0->unk4C.z, arg0->unk84); + var_f30 = fn_1_1534(arg0->unk4C.x, arg0->unk84); + if (arg0->unk4C.x > var_f31 - arg0->unk84) { + arg0->unk4C.x = var_f31 - arg0->unk84; + } + if (arg0->unk4C.x < -(var_f31 - arg0->unk84)) { + arg0->unk4C.x = -(var_f31 - arg0->unk84); + } + if (arg0->unk4C.z > var_f30 - arg0->unk84) { + arg0->unk4C.z = var_f30 - arg0->unk84; + } + if (arg0->unk4C.z < -(var_f30 - arg0->unk84)) { + arg0->unk4C.z = -(var_f30 - arg0->unk84); + } + return sp8; +} + +float fn_1_67F0(float arg0, float arg1, float arg2) +{ + float var_f30; + float var_f31; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_68F4(void) +{ + StructBss340 *temp_r31; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + for (i = 0; i < 20; i++) { + temp_r31->unk78.z -= 4.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk78.x, temp_r31->unk78.y, temp_r31->unk78.z); + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_6964(StructBss340 *arg0) +{ + return (arg0->unk2C == 4 || arg0->unk2C == 5 || arg0->unk2C == 6); +} + +void fn_1_69C0(void) +{ + float var_f23; + float var_f27; + float var_f26; + StructBss340 *temp_r31; + s16 var_r29; + s32 var_r24; + s32 var_r23; + Process *var_r22; + s32 var_r26; + s32 var_r25; + s32 var_r28; + s32 spA4; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk2C = 0; + temp_r31->unk48 = 0; + temp_r31->unk30 = 0; + while (lbl_1_bss_3E4 == 0) { + HuPrcVSleep(); + } + lbl_1_bss_3E4 = 2; + while (lbl_1_bss_3E4 == 2) { + HuPrcVSleep(); + } + var_r29 = -1; + while (TRUE) { + temp_r31->unk58 = temp_r31->unk4C.x; + temp_r31->unk5C = temp_r31->unk4C.z; + if (temp_r31->unk16[4] != 0) { + break; + } + switch (temp_r31->unk2C) { + case 8: + if (temp_r31->unk3C != 0) { + temp_r31->unk3C--; + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + temp_r31->unk2C = 0; + } + break; + case 4: + omVibrate(temp_r31->unk20, 12, 4, 2); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + temp_r31->unk3C = 90; + temp_r31->unk44 = 30; + temp_r31->unk2C = 5; + break; + case 5: + if (temp_r31->unk44-- == 0) { + temp_r31->unk6C = temp_r31->unk4C.x; + temp_r31->unk70 = temp_r31->unk4C.y; + temp_r31->unk74 = temp_r31->unk4C.z; + temp_r31->unk30 |= 1; + } + if (temp_r31->unk3C != 0) { + temp_r31->unk3C--; + } + else { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[5]); + Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); + temp_r31->unk2C = 6; + } + break; + case 6: + if (Hu3DMotionEndCheck(temp_r31->unk00) == TRUE) { + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[0]); + temp_r31->unk2C = 0; + } + break; + default: + if (fn_1_627C(temp_r31->unk20, 0) > 20) { + temp_r31->unk94 -= temp_r31->unk90; + if (temp_r31->unk94 < 0.0f) { + temp_r31->unk94 += 360.0f; + } + temp_r31->unk60.y = temp_r31->unk94; + } + if (fn_1_627C(temp_r31->unk20, 0) < -20) { + temp_r31->unk94 += temp_r31->unk90; + if (temp_r31->unk94 > 360.0f) { + temp_r31->unk94 -= 360.0f; + } + temp_r31->unk60.y = temp_r31->unk94; + } + if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_A) { + temp_r31->unk4C.x += temp_r31->unk88 * sind(temp_r31->unk94); + temp_r31->unk4C.z += temp_r31->unk88 * cosd(temp_r31->unk94); + } + if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_B) { + temp_r31->unk4C.x -= temp_r31->unk88 * sind(temp_r31->unk94); + temp_r31->unk4C.z -= temp_r31->unk88 * cosd(temp_r31->unk94); + } + if (fn_1_63B4(temp_r31->unk20) & (PAD_BUTTON_A | PAD_BUTTON_B)) { + if (temp_r31->unk34 != 1) { + if (temp_r31->unk2C != 2) { + temp_r31->unk2C = 2; + if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_A) { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + if (var_r29 != -1) { + HuAudFXStop(var_r29); + } + } + } + else { + if (temp_r31->unk2C != 3) { + temp_r31->unk2C = 3; + temp_r31->unk48 = 0; + if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_A) { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); + } + if (var_r29 != -1) { + HuAudFXStop(var_r29); + } + } + } + if (temp_r31->unk34 != 1) { + var_r24 = 8; + var_r23 = 32; + } + else { + var_r24 = 7; + var_r23 = 22; + } + if (temp_r31->unk48 == var_r24) { + HuAudFXPlay(0x5E0); + } + if (temp_r31->unk48 == var_r23) { + HuAudFXPlay(0x5E0); + } + temp_r31->unk48++; + if (temp_r31->unk34 != 1) { + if (temp_r31->unk48 >= 50) { + temp_r31->unk48 -= 50; + } + } + else { + if (temp_r31->unk48 >= 30) { + temp_r31->unk48 -= 30; + } + } + } + else { + if (ABS_INV(fn_1_627C(temp_r31->unk20, 0)) <= 20) { + if (temp_r31->unk2C != 0) { + temp_r31->unk2C = 0; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + if (var_r29 != -1) { + HuAudFXStop(var_r29); + } + } + } + else { + if (temp_r31->unk2C != 1) { + temp_r31->unk2C = 1; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.5f); + var_r29 = HuAudFXPlay(0x5EB); + } + } + } + if (fn_1_63FC(temp_r31) != -1) { } + if ((spA4 = fn_1_65D0(temp_r31)) != -1) { } + break; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, temp_r31->unk60.y, temp_r31->unk60.z); + HuPrcVSleep(); + } + if (var_r29 != -1) { + HuAudFXStop(var_r29); + } + if (lbl_1_bss_3D8 == 0) { + HuAudFXPlay(0x5EA); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + HuPrcSleep(90); + Hu3DModelAttrReset(temp_r31->unk04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->unk04, HU3D_MOTATTR_PAUSE); + Hu3DModelPosSet(temp_r31->unk04, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[7], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + HuAudFXPlay(0x5E3); + HuPrcSleep(15); + HuPrcSleep(30); + temp_r31->unk6C = temp_r31->unk4C.x; + temp_r31->unk70 = temp_r31->unk4C.y; + temp_r31->unk74 = temp_r31->unk4C.z; + temp_r31->unk30 |= 2; + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk20].character], temp_r31->unk16[3], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + Hu3DModelHookReset(temp_r31->unk00); + Hu3DModelShadowSet(temp_r31->unk02); + var_f27 = 50.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk4C.x, temp_r31->unk4C.y + var_f27, temp_r31->unk4C.z); + HuPrcSleep(60); + for (var_r26 = 0, var_r25 = 0; var_r26 < 90; var_r26++) { + if (var_r25 & 1) { + Hu3DModelAttrReset(temp_r31->unk00, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(temp_r31->unk04, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(temp_r31->unk04, HU3D_ATTR_DISPOFF); + } + var_r25++; + HuPrcVSleep(); + } + Hu3DModelAttrSet(temp_r31->unk04, HU3D_ATTR_DISPOFF); + for (var_r28 = 0, var_f23 = 1.0f; var_r28 < 30; var_r28++) { + var_f23 -= 0.033333335f; + Hu3DModelTPLvlSet(temp_r31->unk00, var_f23); + if (var_f27 > 0.0f) { + var_f27 -= 5.0f; + Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk4C.x, temp_r31->unk4C.y + var_f27, temp_r31->unk4C.z); + } + HuPrcVSleep(); + } + Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF); + HuAudSStreamPlay(4); + HuPrcSleep(180); + } + else { + var_f26 = temp_r31->unk90; + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + if (fn_1_14B4(temp_r31->unk60.y) != 0.0f) { + var_r28 = (360.0f - fn_1_14B4(temp_r31->unk60.y)) / var_f26; + if (temp_r31->unk60.y < 180.0f) { + var_r28 = temp_r31->unk60.y / var_f26; + var_f26 = -var_f26; + } + for (; var_r28 != 0; var_r28--) { + temp_r31->unk60.y += var_f26; + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, temp_r31->unk60.y, temp_r31->unk60.z); + HuPrcVSleep(); + } + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, 0.0f, temp_r31->unk60.z); + } + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); + while (lbl_1_bss_3E4 < 5) { + HuPrcVSleep(); + } + HuAudSStreamPlay(1); + var_r22 = HuPrcChildCreate(fn_1_68F4, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + var_r22->user_data = temp_r31; + HuAudPlayerVoicePlay(temp_r31->unk20, 0x122); + CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk20].character], temp_r31->unk16[2], 0.0f, 2.0f, HU3D_MOTATTR_NONE); + temp_r31->unk2C = 10; + HuPrcSleep(180); + } + lbl_1_bss_3E4 = 6; + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_7D3C(void) { } + +void fn_1_7D40(void) +{ + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_7DA0(void) +{ + s16 temp_r31; + s16 var_r30; + s16 temp_r26; + s32 var_r24; + s32 i; + + lbl_1_bss_3E4 = 0; + lbl_1_bss_3E4 = 1; + while (lbl_1_bss_3E4 == 1) { + HuPrcVSleep(); + } + var_r24 = HuAudSeqPlay(0x46); + temp_r31 = MGSeqStartCreate(); + while (MGSeqStatGet(temp_r31) != 0) { + HuPrcVSleep(); + } + fn_1_16F8(); + var_r30 = 1859; + temp_r26 = MGSeqTimerCreate(var_r30 / 60); + lbl_1_bss_3E4 = 3; + while (TRUE) { + if (var_r30 < 59) { + break; + } + MGSeqParamSet(temp_r26, 1, var_r30-- / 60); + lbl_1_bss_3E0++; + HuPrcVSleep(); + } + for (i = 0; i < 1; i++) { + lbl_1_bss_340[i].unk1E = 1; + } + lbl_1_bss_3E4 = 4; + HuAudSeqFadeOut(var_r24, 6); + MGSeqParamSet(temp_r26, 2, -1); + temp_r31 = MGSeqFinishCreate(); + while (MGSeqStatGet(temp_r31) != 0) { + HuPrcVSleep(); + } + mgRecordExtra = lbl_1_bss_3D8; + if (GWMGRecordGet(14) < lbl_1_bss_3D8) { + GWMGRecordSet(14, lbl_1_bss_3D8); + temp_r31 = MGSeqRecordCreate(lbl_1_bss_3D8); + HuPrcChildCreate(fn_1_1634, 0x1000, 0x1000, 0, HuPrcCurrentGet()); + fn_1_17A0(lbl_1_bss_3D8, 1); + while (MGSeqStatGet(temp_r31) != 0) { + HuPrcVSleep(); + } + lbl_1_bss_3E4 = 5; + } + else { + lbl_1_bss_3E4 = 5; + } + while (lbl_1_bss_3E4 < 6) { + HuPrcVSleep(); + } + HuPrcSleep(30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } +} diff --git a/src/REL/m463Dll/main.c b/src/REL/m463Dll/main.c new file mode 100755 index 00000000..159940f0 --- /dev/null +++ b/src/REL/m463Dll/main.c @@ -0,0 +1,1388 @@ +// Panel Panic 9 Player + +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08; + /* 0x0C */ s32 unk0C; +} StructBss51C; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04[3]; +} StructBss35C; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 player; + /* 0x00 */ s32 playerCfg; + /* 0x08 */ s32 character; + /* 0x0C */ s32 padIdx; + /* 0x10 */ s32 diff; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ float unk28; + /* 0x2C */ Vec unk2C; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x48 */ s32 unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ s16 parMan; + /* 0x58 */ s32 parManTimer; + /* 0x5C */ s32 unk5C; +} M463PlayerData; // Size 0x60 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; +} StructData134; // Size 0x18 + +s16 fn_1_4474(void); +void fn_1_659C(omObjData *arg0); + +StructBss51C lbl_1_bss_51C[9]; +StructBss35C lbl_1_bss_35C[28]; +omObjData *lbl_1_bss_358; +omObjData *lbl_1_bss_354; +omObjData *playerObjs[9]; +omObjData *lbl_1_bss_32C; +HsfanimStruct00 lbl_1_bss_5C[9]; +s32 lbl_1_bss_58; +s32 lbl_1_bss_54; +s32 lbl_1_bss_50; //// TODO: setup enum when what this is gets figured out +char lbl_1_bss_4C[4]; // unused +s32 lbl_1_bss_48; +s32 lbl_1_bss_44; +Process *lbl_1_bss_40; +s32 lbl_1_bss_3C; +s32 lbl_1_bss_38; +s32 lbl_1_bss_34; +char lbl_1_bss_30[4]; // unused +float lbl_1_bss_2C; +float lbl_1_bss_28; +float lbl_1_bss_24; +float lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +char lbl_1_bss_E[6]; // unused +s16 lbl_1_bss_C; +char lbl_1_bss_8[4]; // unused +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +s32 lbl_1_data_0[9] = { DATA_MAKE_NUM(DATADIR_M458, 38), DATA_MAKE_NUM(DATADIR_M458, 38), DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), DATA_MAKE_NUM(DATADIR_M458, 38), DATA_MAKE_NUM(DATADIR_M458, 38), DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), DATA_MAKE_NUM(DATADIR_M458, 38) }; + +s32 lbl_1_data_24[9] = { 0 }; + +s32 lbl_1_data_48[9] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 47), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_M458, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), +}; + +u32 lbl_1_data_6C[9] = { 0, 0, 0, 0, 0, 0, 0, 1, 0 }; + +u32 lbl_1_data_90[] = { DATA_MAKE_NUM(DATADIR_BKOOPA, 8), 0, 0, DATA_MAKE_NUM(DATADIR_BKOOPA, 10), 0, DATA_MAKE_NUM(DATADIR_M458, 42), + DATA_MAKE_NUM(DATADIR_M458, 40), DATA_MAKE_NUM(DATADIR_M458, 41), DATA_MAKE_NUM(DATADIR_M458, 39) }; + +u8 lbl_1_data_B4[9] = { 0, 0, 0, 1, 1, 1, 0, 1, 1 }; +u8 lbl_1_data_BD[9] = { 0, 0, 0, 1, 1, 1, 0, 1, 1 }; +s32 lbl_1_data_C8[9] = { 8, 8, 8, 0, 0, 8, 8, 8, 8 }; +s32 lbl_1_data_EC[9] = { 0, 0, 0, 0, 3, 0, 0, 0, 0 }; +s32 lbl_1_data_110[9] = { 8, 8, 8, 8, 8, 8, 8, 8, 8 }; + +StructData134 lbl_1_data_134 = { 0 }; + +s16 lbl_1_data_14C = -1; +s16 lbl_1_data_14E = -1; +s32 lbl_1_data_150 = -1; +s32 lbl_1_data_154 = -1; + +// unused +float lbl_1_data_158[] = { -90.0f, 0.0f, 525.0f, 180.0f, 90.0f, 0.0f, 525.0f, 180.0f }; + +void fn_1_A0(void) +{ + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + Center.x = playerObjs[0]->trans.x; + Center.y = playerObjs[0]->trans.y; + Center.z = playerObjs[0]->trans.z; + } + Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); + Center.y += 30.0 * ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0); + CZoom += 25.0 * (((HuPadBtn[0] & PAD_BUTTON_X) != 0) - ((HuPadBtn[0] & PAD_BUTTON_Y) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; + print8(64, 392, 1.0f, "%f,%f,%f", Center.x, Center.y, Center.z); + print8(64, 408, 1.0f, "%f,%f,%f", CRot.x, CRot.y, CRot.z); + print8(64, 424, 1.0f, "%f", CZoom); +} + +s32 lbl_1_data_184 = -1; + +void fn_1_4C8(omObjData *object) +{ + ModelData *model; + ModelData *model2; + float temp_f31; + float temp_f30; + float var_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + M463PlayerData *data; + s16 var_r28; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r23; + s32 var_r22; + M463PlayerData *iPlayerData; + s32 var_r20; + s32 var_r19; + M463PlayerData *temp_r18; + s32 player; + float sp180[2]; + s32 spE0; + s32 spDC; + s32 spD8; + s32 spD4; + s32 spD0; + s32 spCC; + s32 spC8; + M463PlayerData *spC4; + s32 spC0; + s32 spBC; + M463PlayerData *spB8; + s32 spB4; + u32 spB0; + float spAC; + s32 spA8; + s32 spA4; + s32 spA0; + M463PlayerData *sp9C; + ModelData *sp98; + float sp94; + float sp90; + s32 sp8C; + s32 sp88; + + data = object->data; + var_f23 = 0.0f; + var_f22 = 0.0f; + var_f28 = 0.0f; + var_r22 = 0; + var_r28 = -1; + data->unk2C.x = data->unk2C.z = 0.0f; + if (lbl_1_bss_50 == 1005 && data->unk18 == 3 && data->unk1C >= 360) { + if (data->unk1C == 360) { + data->unk14 = rand8() % 15; + } + if (data->padIdx != -1) { + var_r22 = (HuPadBtnDown[data->padIdx] & PAD_BUTTON_A) ? 1 : 0; + } + else { + data->unk14 += (data->unk14 < 0x10000); + if (data->unk14 == 30) { + var_r22 = 1; + } + } + } + if (data->player < 4 && lbl_1_bss_50 == 1002) { + var_r26 = 0; + var_r25 = 0; + if (data->padIdx != -1) { + var_r26 = (HuPadStkX[data->padIdx] < -20) ? -1 : (HuPadStkX[data->padIdx] > 20) ? 1 : 0; + var_r25 = (-HuPadStkY[data->padIdx] < -20) ? -1 : (-HuPadStkY[data->padIdx] > 20) ? 1 : 0; + var_r22 = (HuPadBtnDown[data->padIdx] & PAD_BUTTON_A) ? 1 : 0; + } + else { + if (lbl_1_bss_54 == 1) { + data->unk14 = rand8() % 64 + 30; + } + data->unk14 -= (data->unk14 > 0); + if (data->unk14 == 1) { + var_r26 = (data->unk3C > 0 ? -1 : 1) * (rand8() % 2); + var_r25 = (data->unk40 > 0 ? -1 : 1) * (rand8() % 2); + } + if (data->unk14 == 0) { + var_r22 = (rand8() % 64 == 1) ? 1 : 0; + } + } + if (lbl_1_bss_54 >= 50 || data->unk50 != 0) { + var_r26 = var_r25 = 0; + } + for (player = 0; player < 4; player++) { + iPlayerData = playerObjs[player]->data; + spD0 = 0; + spCC = 0; + if (player != data->player) { + if (fabs(500.0 * data->unk3C - object->trans.x) < 10.0) { + spE0 = spDC = (object->trans.x < -250.0) ? -1 : (object->trans.x > 250.0) ? 1 : 0; + } + else { + spE0 = (object->trans.x < 0.0f) ? -1 : 0; + spDC = spE0 + 1; + } + if (fabs(500.0 * data->unk40 - object->trans.z) < 10.0) { + spD8 = spD4 = (object->trans.z < -250.0) ? -1 : (object->trans.z > 250.0) ? 1 : 0; + } + else { + spD8 = (object->trans.z < 0.0f) ? -1 : 0; + spD4 = spD8 + 1; + } + for (var_r20 = spE0; var_r20 <= spDC; var_r20++) { + for (var_r19 = spD8; var_r19 <= spD4; var_r19++) { + if (iPlayerData->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19 + var_r25) * 3) { + var_r26 = var_r25 = 0; + } + if (iPlayerData->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19) * 3) { + var_r26 = 0; + } + if (iPlayerData->unk38 == (1 + var_r20) + (1 + var_r19 + var_r25) * 3) { + var_r25 = 0; + } + } + } + } + } + if (var_r26 * (500.0 * data->unk3C - object->trans.x) < 0.0) { + data->unk3C += var_r26; + } + if (fabs(500.0 * data->unk3C - object->trans.x) < 10.0 && var_r26 != 0 && data->unk3C + var_r26 >= -1 + && data->unk3C + var_r26 <= 1) { + data->unk3C += var_r26; + } + var_f23 = ((500.0 * data->unk3C - object->trans.x) / 0.25) / 1.75; + if (var_r25 * (500.0 * data->unk40 - object->trans.z) < 0.0) { + data->unk40 += var_r25; + } + if (fabs(500.0 * data->unk40 - object->trans.z) < 10.0 && var_r25 != 0 && data->unk40 + var_r25 >= -1 + && data->unk40 + var_r25 <= 1) { + data->unk40 += var_r25; + } + var_f22 = ((500.0 * data->unk40 - object->trans.z) / -0.25) / 1.75; + data->unk38 = (data->unk3C + 1) + (data->unk40 + 1) * 3; + } + if (data->unk18 == 0) { + if (lbl_1_bss_50 > (data->player < 4 ? 1001 : 1003) && lbl_1_bss_50 < 1006) { + temp_f31 = 0.25 * var_f23; + temp_f30 = 0.25 * -var_f22; + { + Vec sp1A0 = { 0.0f, 0.0f, 0.0f }; + Mtx sp1D0; + + sp1A0.x = temp_f31; + sp1A0.z = temp_f30; + MTXRotRad(sp1D0, 'y', MTXDegToRad(CRot.y)); + MTXMultVec(sp1D0, &sp1A0, &sp1A0); + temp_f31 = sp1A0.x; + temp_f30 = sp1A0.z; + var_f28 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (var_f28 >= 0.5f) { + if (var_f28 < 10.0f) { + data->unk2C.x = temp_f31; + data->unk2C.z += temp_f30; + } + else { + temp_f31 /= var_f28; + temp_f30 /= var_f28; + var_f28 = 10.0f; + data->unk2C.x = temp_f31 * var_f28; + data->unk2C.z = temp_f30 * var_f28; + } + data->unk28 = var_f28; + object->rot.y = atan2d(data->unk2C.x, data->unk2C.z); + if (data->unk28 >= 8.0f) { + var_r28 = 2; + } + else { + var_r28 = 2; + } + } + else { + var_r28 = 0; + } + } + } + } + object->trans.x += 1.75f * data->unk2C.x; + object->trans.z += 1.75f * data->unk2C.z; + switch (lbl_1_bss_50) { + case 1001: + case 1003: + if (lbl_1_bss_50 != (data->player < 4 ? 1001 : 1003)) { + break; + } + if (lbl_1_bss_54 == 0) { + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if (data->player < 4) { + data->unk38 = (data->player == 0) ? 0 : (data->player == 1) ? 2 : (data->player == 2) ? 6 : 8; + data->unk3C = data->unk38 % 3 - 1; + data->unk40 = data->unk38 / 3 - 1; + object->trans.x = 500.0 * data->unk3C; + object->trans.z = 500.0 * data->unk40; + } + else { + do { + data->unk38 = rand8() % 9; + for (spC8 = 0; spC8 < data->player; spC8++) { + spC4 = playerObjs[spC8]->data; + if (data->unk38 == spC4->unk38) { + break; + } + } + } while (spC8 != data->player); + data->unk3C = data->unk38 % 3 - 1; + data->unk40 = data->unk38 / 3 - 1; + object->trans.x = 500.0 * data->unk3C; + object->trans.z = 500.0 * data->unk40; + } + } + if (lbl_1_bss_54 <= 30) { + if (data->character == -1) { + Hu3DMotionTimeSet(object->model[0], 138.0f); + } + object->trans.y = 2400.0 * (1.0 - lbl_1_bss_54 / 30.0); + } + if (data->character != -1 && lbl_1_bss_54 == 30) { + var_r28 = 4; + } + if (lbl_1_bss_54 == (data->character != -1 ? 10 : 60) + 30) { + var_r28 = 0; + } + if (lbl_1_bss_54 == 30) { + lbl_1_data_134.unk04 += 50; + } + if (lbl_1_bss_54 == 30 && (data->player == 0 || data->player == 4)) { + HuAudFXPlay(0x33D); + } + break; + case 1002: + if (lbl_1_bss_54 != 0 && data->player < 4 && (var_r22 != 0 || lbl_1_bss_0 == 0) && data->unk50 == 0) { + data->unk50 = 1; + lbl_1_bss_14++; + lbl_1_bss_51C[data->unk38].unk08 = 83.333336f; + } + if (data->player != 0) { + break; + } + if (lbl_1_bss_54 == 0) { + lbl_1_bss_0 = 300; + lbl_1_data_14E = MGSeqTimerCreate(10); + HuWinMesMaxSizeGet(1, sp180, MAKE_MESSID(40, 25)); + lbl_1_bss_C = HuWinCreate(-10000.0f, 400.0f, sp180[0], sp180[1], 1); + HuWinBGTPLvlSet(lbl_1_bss_C, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C, 0); + HuWinMesSet(lbl_1_bss_C, MAKE_MESSID(40, 25)); + } + lbl_1_bss_0--; + if (lbl_1_data_14E != -1) { + MGSeqParamSet(lbl_1_data_14E, 1, (lbl_1_bss_0 + 59) / 60); + } + if (lbl_1_bss_14 >= 4) { + lbl_1_bss_54 = 50; + MGSeqParamSet(lbl_1_data_14E, 2, -1); + lbl_1_data_14E = -1; + HuWinExCleanup(lbl_1_bss_C); + } + if (lbl_1_bss_54 == 50) { + for (var_r23 = 0; var_r23 < 4; var_r23++) { + temp_r18 = playerObjs[var_r23]->data; + if (!(fabs(500.0 * temp_r18->unk3C - playerObjs[var_r23]->trans.x) < 1.0) + || !(fabs(500.0 * temp_r18->unk40 - playerObjs[var_r23]->trans.z) < 1.0) || temp_r18->unk20 != 0) { + break; + } + } + if (var_r23 == 4) { + lbl_1_bss_54 = 60; + } + } + break; + case 1005: + if (data->unk5C != 0) { + if (object->trans.y < -15000.0f) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + else { + object->trans.y -= 77.0f; + } + } + break; + case 1006: + if (lbl_1_bss_54 <= 1) { + Hu3DModelAttrSet(object->model[data->unk44 + 2], HU3D_ATTR_DISPOFF); + lbl_1_bss_51C[data->unk44].unk0C = 0; + } + if (lbl_1_bss_51C[data->unk38].unk0C != 0 || data->unk5C != 0) { + break; + } + if (lbl_1_bss_54 == 120) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk38 + 1], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_54 == 153) { + Hu3DModelAttrSet(lbl_1_bss_32C->model[data->unk38 + 1], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_54 == 183) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk38 + 1], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_54 == 210) { + spBC = 0; + for (spC0 = 0; spC0 < 9; spC0++) { + spB8 = playerObjs[spC0]->data; + spBC += (lbl_1_bss_51C[spB8->unk38].unk0C == 0 && spB8->unk5C == 0); + } + var_r28 = 7; + HuAudFXPlayVol(0x7F7 + (data->character != -1 ? data->character : 8), 1651 / (spBC + 12)); + } + if (lbl_1_bss_54 >= 210 && lbl_1_bss_54 <= 214) { + s32 sp1AC[] = { 0, -12, -36, 0, 0, -12, -36, -48, 0 }; + float sp194[] = { 150.0f, 175.0f, 205.0f }; + float sp188[] = { 100.0f, 170.0f, 260.0f }; + + spB4 = data->unk38 % 3 - 1; + spB0 = data->unk38 / 3; + spAC = (lbl_1_bss_54 - 210) / 4.0; + temp_f26 = (lbl_1_bss_54 - 210) / 4.0; + temp_f26 = (temp_f26 > 1.0f) ? 1.0f : temp_f26; + espAttrReset(lbl_1_data_24[data->unk38], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_data_24[data->unk38], 290.0f + spB4 * sp194[spB0], + sp188[spB0] + 0.5 * (64.0f * (1.0f - spAC) * 0.5 + sp1AC[data->character != -1 ? data->character : 8])); + espScaleSet(lbl_1_data_24[data->unk38], 0.5 * temp_f26, 0.5 * temp_f26); + } + if (lbl_1_bss_54 == 270) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_data_24[data->unk38], HUSPR_ATTR_DISPOFF); + } + if (lbl_1_bss_54 == 290) { + spA0 = 0; + for (spA4 = 0; spA4 < 9; spA4++) { + sp9C = playerObjs[spA4]->data; + spA0 += (lbl_1_bss_51C[sp9C->unk38].unk0C == 0 && sp9C->unk5C == 0); + } + spA8 = HuAudFXPlayVol(0x800 + (data->character != -1 ? data->character : 8), 1651 / (spA0 + 12)); + HuAudFXFadeOut(spA8, 0x9C4); + } + if (lbl_1_bss_54 >= 315) { + object->trans.y -= 77.0f; + } + break; + case 1007: + if (data->player == lbl_1_bss_38) { + var_r28 = 8; + if (data->player >= 4 && data->character != -1 && lbl_1_bss_54 == 1) { + HuAudFXPlay(0x809 + data->character); + } + if (data->character == -1 && lbl_1_bss_54 == 1) { + HuAudFXPlay(0x3A); + } + } + else if (object->trans.y < -40000.0f) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + } + else { + object->trans.y -= 77.0f; + } + break; + } + switch (data->unk18) { + case 0: + data->unk1C++; + break; + case 1: + data->unk1C++; + if (data->unk1C <= 60) { + object->rot.y = -180.0 * (data->unk1C / 60.0); + } + else { + Hu3DMotionTimeSet(object->model[0], 120.0f); + var_r28 = 0; + data->unk18 = 0; + data->unk1C = 0; + } + break; + case 2: + data->unk1C++; + break; + case 3: + if (data->unk1C == 0) { + data->unk48 = 6; + data->unk4C = 0; + } + if (data->unk1C < 360) { + model = &Hu3DData[object->model[1]]; + if (data->unk1C == 0) { + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[1], object->trans.x, object->trans.y + 625.0f, object->trans.z); + Hu3DModelScaleSet(object->model[1], 0.1f, 0.1f, 0.1f); + Hu3DModelTPLvlSet(object->model[1], 1.0f); + data->unk4C = 0; + if (lbl_1_bss_18 == 0) { + HuAudFXPlay(0x7F4); + lbl_1_data_184 = HuAudFXPlay(0x7F3); + } + lbl_1_bss_18++; + } + model->rot.y = data->unk4C % 360; + data->unk4C += 25; + if (data->unk1C < 180) { + var_f20 = 0.0f; + var_f21 = 1.0f; + } + else { + var_f20 = 1.0f; + var_f21 = 0.5f; + } + model->scale.x = var_f20 + var_f21 * sind((float)(data->unk1C % 180)); + model->scale.y = model->scale.z = model->scale.x; + if (data->unk1C < 180) { + data->unk1C += 6; + } + else { + data->unk1C += 18; + } + if (data->unk1C >= 360) { + data->unk1C = 360; + Hu3DModelRotSet(object->model[1], 0.0f, 0.0f, 0.0f); + } + } + else { + sp98 = &Hu3DData[object->model[1]]; + data->unk1C += 4; + if (data->unk1C > 720) { + data->unk1C -= 360; + } + sp98->pos.y += 0.2f * sind(data->unk1C - 360); + if (var_r22 != 0 || lbl_1_bss_0 == 0) { + lbl_1_bss_54 = 50; + data->unk18 = 4; + data->unk1C = 0; + var_r28 = 5; + } + } + break; + case 4: + data->unk1C++; + if (data->unk1C < 27) { + break; + } + model2 = &Hu3DData[object->model[1]]; + temp_r27 = data->unk1C - 27; + if (temp_r27 == 0) { + if (data->playerCfg != -1) { + omVibrate(data->playerCfg, 12, 4, 2); + } + data->unk48 = -1; + lbl_1_bss_18--; + if (lbl_1_bss_18 == 0 && lbl_1_data_184 != -1) { + HuAudFXStop(lbl_1_data_184); + lbl_1_data_184 = -1; + } + HuAudFXPlay(0x7F5); + } + if (temp_r27 == 8) { + if (data->parMan == -1) { + lbl_1_bss_58 = data->player; + data->parMan = fn_1_4474(); + Hu3DParManPosSet(data->parMan, model2->pos.x, model2->pos.y, model2->pos.z); + data->parManTimer = 150; + } + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + else if (temp_r27 > 8) { + if (data->unk20 == 5) { + if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])) { + var_r28 = 0; + } + } + if (temp_r27 <= 28) { + temp_f27 = (temp_r27 - 8) / 10.0; + sp94 = (temp_r27 - 8) * 18; + temp_f27 = (temp_f27 > 1.0f) ? 2.5 : (2.5 * temp_f27); + Hu3DModelAttrReset(object->model[data->unk44 + 2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[data->unk44 + 2], model2->pos.x, model2->pos.y, model2->pos.z); + Hu3DModelScaleSet(object->model[data->unk44 + 2], temp_f27, temp_f27, temp_f27); + } + if (temp_r27 >= 45 && temp_r27 <= 65) { + temp_f25 = (temp_r27 - 45) / 5.0; + sp90 = (temp_r27 - 45) * 18; + temp_f25 = (temp_f25 > 1.0f) ? 1.0f : temp_f25; + temp_f25 = 0.0f; + Hu3DModelAttrReset(object->model[data->unk44 + 2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[data->unk44 + 2], model2->pos.x, model2->pos.y - 30.0f * temp_f25, model2->pos.z); + data->unk1C += 5; + } + if (temp_r27 == 158) { + data->unk18 = 0; + data->unk1C = 0; + } + } + else { + if (temp_r27 < 4) { + model2->pos.y += 10.0f + 0.5f * temp_r27; + model2->scale.x += 0.1f * sind(4.0f * temp_r27); + model2->scale.y = model2->scale.z = model2->scale.x; + } + else { + var_f24 = 255 - (temp_r27 << 5); + var_f24 = var_f24 * (1.0f / 255); + Hu3DModelTPLvlSet(object->model[1], var_f24); + } + model2->pos.y += -0.49f * temp_r27 * temp_r27; + } + break; + case 5: + if (data->unk1C == 0) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk44 + 1], HU3D_MOTATTR_PAUSE); + lbl_1_bss_51C[data->unk44].unk0C = 0; + if (lbl_1_bss_35C->unk00 < 3) { + lbl_1_bss_35C->unk04[lbl_1_bss_35C->unk00] = 0.0f; + lbl_1_bss_35C->unk00++; + } + } + data->unk1C++; + if (data->unk1C == 60 && data->parMan != -1) { + Hu3DParManKill(data->parMan); + data->parMan = -1; + } + if (data->unk1C == 33) { + Hu3DModelAttrSet(lbl_1_bss_32C->model[data->unk44 + 1], HU3D_MOTATTR_PAUSE); + } + if (data->unk1C == 63) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk44 + 1], HU3D_MOTATTR_PAUSE); + } + if (data->unk1C == 68 && lbl_1_bss_35C[1].unk00 < 3) { + lbl_1_bss_35C[1].unk04[lbl_1_bss_35C[1].unk00] = 0.0f; + lbl_1_bss_35C[1].unk00++; + } + if (data->unk1C == 130) { + data->unk18 = 0; + data->unk1C = 0; + } + break; + } + if ((data->unk18 == 3 || data->unk18 == 4) && data->unk48 >= 0) { + data->unk48++; + if (data->unk48 >= 6) { + sp88 = data->unk44; + for (sp8C = 0; sp8C < 50; sp8C++) { + do { + data->unk44 = rand8() % 9; + if (data->unk44 >= 9) { + break; + } + } while (lbl_1_bss_51C[data->unk44].unk0C == 0); + if (sp88 != data->unk44) { + break; + } + } + sp88 = data->unk44; + data->unk48 = 0; + Hu3DMotionTimeSet(object->model[1], 0.5 + sp88); + } + } + if (data->unk24 >= 0) { + var_r28 = data->unk24; + } + if (var_r28 >= 0 && var_r28 != data->unk20) { + Hu3DMotionShiftSet(object->model[0], object->motion[var_r28], lbl_1_data_EC[var_r28], + (data->character != -1) ? lbl_1_data_C8[var_r28] : lbl_1_data_110[var_r28], + (var_r28 == 7) ? HU3D_MOTATTR_PAUSE + : (data->character != -1 ? lbl_1_data_B4[var_r28] : lbl_1_data_BD[var_r28]) ? 0 + : HU3D_MOTATTR_LOOP); + data->unk20 = var_r28; + } + data->parManTimer -= (data->parManTimer > -1); + if (data->parManTimer == 0) { + if (data->parMan != -1) { + Hu3DParManKill(data->parMan); + data->parMan = -1; + } + data->parManTimer = -1; + } +} + +s32 lbl_1_data_1A4[4] = { 0 }; +s32 lbl_1_data_1B4 = -1; +float lbl_1_data_1B8 = 3500.0f; +float lbl_1_data_1BC = 100.0f; +float lbl_1_data_1C0 = -59.0f; + +static inline void fn3264_unkInline(void) { + float var_f31; + s32 var_r26 = lbl_1_data_1B4; + float sp30[][6] = { { 3500.0f, 0.0f, 100.0f, 0.0f, -59.0f, 0.0f }, { 3200.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 3800.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, { 2000.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, + { 4000.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, { 2700.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f } }; + + if (lbl_1_bss_38 != -1 && lbl_1_bss_38 != 9) { + sp30[5][1] = playerObjs[lbl_1_bss_38]->trans.x; + sp30[5][3] = playerObjs[lbl_1_bss_38]->trans.z; + } + if (lbl_1_data_1B4 == -1) { + lbl_1_data_1B4 = 0; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if (lbl_1_data_1B4 == 0) { + lbl_1_data_1B4 = 1; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 0.5f; + } + if (lbl_1_bss_50 == 1004 && lbl_1_bss_54 >= 1 && lbl_1_data_1B4 == 1) { + lbl_1_data_1B4 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (lbl_1_bss_50 == 1006 && lbl_1_bss_54 >= 270 && lbl_1_data_1B4 == 2) { + lbl_1_data_1B4 = 4; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if (lbl_1_bss_50 == 1005 && lbl_1_data_1B4 == 4) { + lbl_1_data_1B4 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (lbl_1_bss_50 == 1007 && lbl_1_bss_38 != 9 && lbl_1_data_1B4 == 4) { + lbl_1_data_1B4 = 5; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (var_r26 != lbl_1_data_1B4 && var_r26 != -1) { + lbl_1_data_1B8 = CZoom; + lbl_1_data_1BC = Center.y; + lbl_1_bss_28 = Center.z; + lbl_1_data_1C0 = CRot.x; + lbl_1_bss_2C = CRot.y; + } + if (lbl_1_bss_20 <= 1.0f) { + if (lbl_1_bss_1C == 0) { + lbl_1_bss_20 = 1.0 - 0.95 * (1.0f - lbl_1_bss_20); + var_f31 = lbl_1_bss_20; + } + else { + lbl_1_bss_20 += 0.008333333333333333; + lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; + var_f31 = 0.5 + -0.5 * cosd(180.0f * lbl_1_bss_20); + } + lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; + CZoom = var_f31 * sp30[lbl_1_data_1B4][0] + lbl_1_data_1B8 * (1.0f - var_f31); + Center.x = var_f31 * sp30[lbl_1_data_1B4][1] + lbl_1_bss_24 * (1.0f - var_f31); + Center.y = var_f31 * sp30[lbl_1_data_1B4][2] + lbl_1_data_1BC * (1.0f - var_f31); + Center.z = var_f31 * sp30[lbl_1_data_1B4][3] + lbl_1_bss_28 * (1.0f - var_f31); + CRot.x = var_f31 * sp30[lbl_1_data_1B4][4] + lbl_1_data_1C0 * (1.0f - var_f31); + CRot.y = var_f31 * sp30[lbl_1_data_1B4][5] + lbl_1_bss_2C * (1.0f - var_f31); + } +} + +void fn_1_3264(omObjData *arg0) +{ + float temp_f29; + float temp_f26; + float temp_f27; + float temp_f28; + M463PlayerData *spC[9]; + ModelData *temp_r29; + ModelData *temp_r28; + s32 var_r27; + s32 i; + s32 j; + + for (i = 0; i < 9; i++) { + spC[i] = playerObjs[i]->data; + } + lbl_1_bss_4++; + switch (lbl_1_bss_50) { + case 1002: + lbl_1_bss_34++; + lbl_1_bss_34 %= 360; + /* fallthrough */ + case 1003: + var_r27 = 0; + for (i = 0; i < 4; i++) { + if (spC[i]->unk50 == 0 || spC[i]->unk20 != 0) { + continue; + } + temp_r29 = &Hu3DData[lbl_1_bss_32C->model[spC[i]->unk38 + 1]]; + if (var_r27 == 0 && lbl_1_data_1A4[i] == 0) { + lbl_1_data_1A4[i] = 1; + var_r27 = 1; + HuAudFXPlay(0x7F6); + } + temp_r29->pos.y = 0.9 * temp_r29->pos.y + 0.1 * lbl_1_bss_51C[spC[i]->unk38].unk08; + playerObjs[i]->trans.y = temp_r29->pos.y - -16.666666666666668; + playerObjs[i]->rot.y = 0.0f; + } + break; + case 1004: + if (lbl_1_bss_54 <= 60) { + temp_f29 = lbl_1_bss_54 / 60.0; + temp_f29 = 1.0f - (1.0f - temp_f29) * (1.0f - temp_f29); + if (lbl_1_bss_54 == 0) { + lbl_1_bss_51C[spC[0]->unk38].unk08 = -16.666666f; + } + for (i = 0; i < 9; i++) { + temp_r28 = &Hu3DData[lbl_1_bss_32C->model[i + 1]]; + Hu3DModelPosSet(lbl_1_bss_32C->model[i + 1], (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk00 - 1), + 0.9 * temp_r28->pos.y + 0.1 * lbl_1_bss_51C[spC[0]->unk38].unk08, (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1)); + for (j = 0; j < 9; j++) { + if (i == spC[j]->unk38) { + playerObjs[j]->trans.x = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk00 - 1); + playerObjs[j]->trans.y = temp_r28->pos.y - -16.666666666666668; + playerObjs[j]->trans.z = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1); + } + } + } + } + break; + } + fn3264_unkInline(); + if (lbl_1_bss_50 == 1001 || lbl_1_bss_50 == 1003) { + temp_f26 = 0.0f; + temp_f27 = 0.0f; + if (lbl_1_data_134.unk00 % 2 >= 0) { + lbl_1_data_134.unk08 = lbl_1_data_134.unk10; + lbl_1_data_134.unk0C = lbl_1_data_134.unk14; + do { + lbl_1_data_134.unk10 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_134.unk14 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_134.unk10 = 0.0f; + temp_f28 = (lbl_1_data_134.unk10 - lbl_1_data_134.unk08) * (lbl_1_data_134.unk10 - lbl_1_data_134.unk08) + + (lbl_1_data_134.unk14 - lbl_1_data_134.unk0C) * (lbl_1_data_134.unk14 - lbl_1_data_134.unk0C); + } while (sqrtf(temp_f28) < 0.75); + } + lbl_1_data_134.unk04 = (lbl_1_data_134.unk04 > 24) ? 24 : (lbl_1_data_134.unk04 > 0) ? lbl_1_data_134.unk04 : 0; + temp_f26 = lbl_1_data_134.unk08; + temp_f27 = lbl_1_data_134.unk0C; + temp_f26 *= lbl_1_data_134.unk04 * 2; + temp_f27 *= lbl_1_data_134.unk04 * 2; + lbl_1_data_134.unk00 = !lbl_1_data_134.unk00; + lbl_1_data_134.unk04 = (lbl_1_data_134.unk04 > 24) ? 23 : (lbl_1_data_134.unk04 - 1 > 0) ? (lbl_1_data_134.unk04 - 1) : 0; + Center.x = 0.0f; + Center.y = 100.0f + temp_f27; + } +} + +s16 fn_1_4474(void) +{ + AnimData *var_r29; + void *var_r28; + s16 var_r31; + s16 var_r30; + HsfanimStruct00 sp8 = { 0x96, { 0x00, 0x00 }, 50.0f, 0.0f, 65.0f, { 0.0f, -0.195f, 0.0f }, 80.0f, 0.99f, 40.0f, 0.999f, 4, + { { 0xFF, 0xFF, 0x20, 0xFF }, { 0xFF, 0xFF, 0x00, 0xFF }, { 0xFF, 0xFF, 0x80, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 } } }; + + lbl_1_bss_5C[lbl_1_bss_58] = sp8; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 107), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = HuSprAnimRead(var_r28); + var_r31 = Hu3DParManCreate(var_r29, 40, &lbl_1_bss_5C[lbl_1_bss_58]); + Hu3DParManAttrSet(var_r31, 8 | 0x100); + Hu3DParManRotSet(var_r31, 0.0f, 0.0f, 0.0f); + Hu3DParManVecSet(var_r31, 0.0f, 0.4f, 0.2f); + var_r30 = Hu3DParManModelIDGet(var_r31); + Hu3DModelLayerSet(var_r30, 2); + Hu3DParticleBlendModeSet(var_r30, 0); + return var_r31; +} + +void fn_1_45F8(omObjData *arg0) +{ + M463PlayerData *sp14[9]; + float spC[2]; + s32 sp8; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r30; + s32 i; + + for (i = 0; i < 28; i++) { + s32 sp38[] = { 0x7F1, 0x7F2, 0x7F7, 0x7F8, 0x7F9, 0x7FA, 0x7FB, 0x7FC, 0x7FD, 0x7FE, 0x7FF, 0x800, 0x801, 0x802, 0x803, 0x804, 0x7FB, 0x7FC, + 0x7FD, 0x7FE, 0x7FF, 0x800, 0x801, 0x802, 0x803, 0x804, 0x7FB, 0x7FC }; + + if (lbl_1_bss_35C[i].unk00 > 3) { + lbl_1_bss_35C[i].unk00 = 3; + } + if (lbl_1_bss_35C[i].unk00 > 0) { + sp8 = HuAudFXPlay(sp38[i]); + lbl_1_bss_35C[i].unk00--; + } + } + for (i = 0; i < 9; i++) { + sp14[i] = playerObjs[i]->data; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_659C; + } + switch (lbl_1_bss_50) { + case 1000: + if (WipeStatGet() != 0) { + break; + } + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + for (i = 0; i < 9; i++) { + if (sp14[i]->parMan != -1) { + Hu3DParManKill(sp14[i]->parMan); + sp14[i]->parMan = -1; + } + } + break; + case 1001: + lbl_1_bss_54++; + if (lbl_1_bss_54 == 90 && lbl_1_data_14C < 0) { + lbl_1_data_14C = MGSeqStartCreate(); + } + if (lbl_1_bss_54 >= 90 && lbl_1_data_150 == -1 && (MGSeqStatGet(lbl_1_data_14C) & 0x10)) { + lbl_1_data_150 = HuAudSeqPlay(0x49); + } + if (lbl_1_bss_54 >= 90 && MGSeqStatGet(lbl_1_data_14C) == 0 && lbl_1_data_14C >= 0) { + lbl_1_bss_50 = 1002; + lbl_1_bss_54 = 0; + } + break; + case 1002: + lbl_1_bss_54 += (lbl_1_bss_54 < 30); + if (lbl_1_bss_54 >= 60) { + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + } + break; + case 1003: + lbl_1_bss_54++; + if (lbl_1_bss_54 == (sp14[1]->character == -1 ? 120 : 60) + 30) { + lbl_1_bss_50++; + if (sp14[1]->character == -1) { + lbl_1_bss_50++; + } + lbl_1_bss_54 = 0; + } + break; + case 1004: + lbl_1_bss_54++; + if (lbl_1_bss_54 == 90) { + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + } + break; + case 1005: + if (lbl_1_bss_54 == 0) { + for (i = 0; i < 9; i++) { + if (lbl_1_bss_51C[sp14[i]->unk38].unk0C != 0) { + sp14[i]->unk18 = 3; + sp14[i]->unk1C = 0; + } + else { + sp14[i]->unk5C = 1; + } + } + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(48, 37)); + lbl_1_bss_C = HuWinCreate(-10000.0f, 400.0f, spC[0], spC[1], 1); + HuWinBGTPLvlSet(lbl_1_bss_C, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C, 0); + HuWinMesSet(lbl_1_bss_C, MAKE_MESSID(48, 37)); + lbl_1_bss_0 = 180; + } + lbl_1_bss_54++; + if (lbl_1_bss_54 == 30) { + lbl_1_data_14E = MGSeqTimerCreate(10); + MGSeqPosSet(lbl_1_data_14E, 489.6f, 64.0f); + } + if (lbl_1_bss_54 >= 30 && lbl_1_data_14E != -1) { + var_r29 = 0; + for (i = 0; i < 9; i++) { + if (lbl_1_bss_51C[sp14[i]->unk38].unk0C == 0 || sp14[i]->unk18 == 4 || sp14[i]->unk18 == 0) { + var_r29++; + } + } + if (var_r29 >= 9 || lbl_1_bss_0 == 0) { + MGSeqParamSet(lbl_1_data_14E, 2, -1); + lbl_1_data_14E = -1; + } + else { + lbl_1_bss_0 -= (lbl_1_bss_0 > 0); + MGSeqParamSet(lbl_1_data_14E, 1, (lbl_1_bss_0 + 59) / 60); + } + } + var_r28 = 0; + for (i = 0; i < 9; i++) { + if (lbl_1_bss_51C[sp14[i]->unk38].unk0C == 0 || sp14[i]->unk18 == 0) { + var_r28++; + } + } + if (var_r28 >= 9) { + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + } + break; + case 1006: + if (lbl_1_bss_54 == 1) { + HuWinExCleanup(lbl_1_bss_C); + } + lbl_1_bss_54++; + if (lbl_1_bss_54 == 3) { + lbl_1_bss_54 = 118; + } + if (lbl_1_bss_54 == 223) { + lbl_1_bss_54 = 233; + } + if (lbl_1_bss_54 == 120 && lbl_1_bss_35C->unk00 < 3) { + lbl_1_bss_35C->unk04[lbl_1_bss_35C->unk00] = 0.0f; + lbl_1_bss_35C->unk00++; + } + if (lbl_1_bss_54 == 188 && lbl_1_bss_35C[1].unk00 < 3) { + lbl_1_bss_35C[1].unk04[lbl_1_bss_35C[1].unk00] = 0.0f; + lbl_1_bss_35C[1].unk00++; + } + if (lbl_1_bss_54 == 360) { + var_r30 = 0; + var_r27 = -1; + for (i = 0; i < 9; i++) { + var_r30 += lbl_1_bss_51C[i].unk0C; + var_r27 = (lbl_1_bss_51C[sp14[i]->unk38].unk0C != 0) ? i : var_r27; + } + if (var_r30 <= 1) { + lbl_1_bss_38 = (var_r30 == 0) ? 9 : var_r27; + } + if (lbl_1_bss_38 != -1) { + lbl_1_data_14C = MGSeqFinishCreate(); + if (lbl_1_data_150 != -1) { + HuAudSeqFadeOut(lbl_1_data_150, 100); + } + } + } + if (lbl_1_bss_54 >= 480) { + if (lbl_1_bss_38 != -1) { + if (MGSeqStatGet(lbl_1_data_14C) == 0 && lbl_1_bss_54 >= 510) { + lbl_1_bss_50 = 1007; + lbl_1_bss_54 = 0; + } + } + else { + lbl_1_bss_50 = 1005; + lbl_1_bss_54 = 0; + } + } + break; + case 1007: + lbl_1_bss_54++; + if (lbl_1_bss_54 == 1) { + if (lbl_1_bss_38 != 9) { + if (lbl_1_bss_38 < 9) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(1); + } + if (lbl_1_bss_38 < 4 && sp14[lbl_1_bss_38]->playerCfg != -1) { + GWPlayerCoinWinSet(sp14[lbl_1_bss_38]->playerCfg, 10); + } + } + else if (lbl_1_bss_38 == 9) { + HuAudSStreamPlay(4); + } + } + if (210.0f + (lbl_1_bss_38 == 9 ? 60 : 0) < lbl_1_bss_54) { + if (lbl_1_data_154 != -1) { + HuAudFXStop(lbl_1_data_154); + lbl_1_data_154 = -1; + } + lbl_1_data_14C = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_659C; + } + break; + } +} + +void fn_1_53A0(omObjData *arg0) +{ + M463PlayerData *sp50[9]; + s32 i; + + for (i = 0; i < 9; i++) { + sp50[i] = playerObjs[i]->data; + } + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 8)); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(arg0->model[0], 0.1f); + for (i = 0; i < 9; i++) { + arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 10 + i)); + lbl_1_bss_51C[i].unk00 = i % 3; + lbl_1_bss_51C[i].unk04 = i / 3; + lbl_1_bss_51C[i].unk08 = 0.0f; + lbl_1_bss_51C[i].unk0C = 1; + Hu3DModelPosSet(lbl_1_bss_32C->model[i + 1], 500.0 * (lbl_1_bss_51C[i].unk00 - 1), -16.666666f, 500.0 * (lbl_1_bss_51C[i].unk04 - 1)); + Hu3DModelScaleSet(lbl_1_bss_32C->model[i + 1], 1.6666666f, 1.6666666f, 1.6666666f); + Hu3DModelAttrSet(arg0->model[i + 1], HU3D_MOTATTR_PAUSE); + Hu3DModelShadowMapSet(arg0->model[i + 1]); + Hu3DModelLayerSet(arg0->model[i + 1], 1); + } + for (i = 0; i < 9; i++) { + s32 sp2C[9] = { 288, 290 }; + s32 sp8[9] = { 240, 140 }; + + lbl_1_data_24[i] = espEntry(lbl_1_data_0[i], 0, 0); + espDrawNoSet(lbl_1_data_24[i], 0); + espAttrSet(lbl_1_data_24[i], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_data_24[i], 0); + espPriSet(lbl_1_data_24[i], 0x80 - i); + espPosSet(lbl_1_data_24[i], 290.0f, 140.0f); + espTPLvlSet(lbl_1_data_24[i], 1.0f); + } + arg0->func = fn_1_3264; +} + +s32 lbl_1_data_1E4[] = { DATA_MAKE_NUM(DATADIR_M458, 19), DATA_MAKE_NUM(DATADIR_M458, 20), DATA_MAKE_NUM(DATADIR_M458, 21), + DATA_MAKE_NUM(DATADIR_M458, 22), DATA_MAKE_NUM(DATADIR_M458, 23), DATA_MAKE_NUM(DATADIR_M458, 24), DATA_MAKE_NUM(DATADIR_M458, 25), + DATA_MAKE_NUM(DATADIR_M458, 26), DATA_MAKE_NUM(DATADIR_M458, 27), DATA_MAKE_NUM(DATADIR_M458, 28), DATA_MAKE_NUM(DATADIR_M458, 29) }; + +void fn_1_5850(omObjData *arg0) +{ + M463PlayerData *data; + s32 sp10[] = { 0, 1, 2, 3 }; + s32 var_r25; + s32 var_r28; + s32 i; + s32 j; + + var_r25 = 0; + data = arg0->data; + memset(data, 0, sizeof(*data)); + data->player = arg0->work[0]; + if (data->player >= 4) { + var_r28 = -1; + for (i = 0; i <= data->player - 4; i++) { + do { + var_r28++; + } while (GWPlayerCfg[0].character == var_r28 || GWPlayerCfg[1].character == var_r28 || GWPlayerCfg[2].character == var_r28 + || GWPlayerCfg[3].character == var_r28); + } + data->character = (var_r28 == 8) ? -1 : var_r28; + data->padIdx = -1; + data->playerCfg = -1; + data->diff = 0; + } + else { + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == GWPlayerCfg[j].group) { + sp10[var_r25] = j; + var_r25++; + } + } + } + data->player = arg0->work[0]; + data->playerCfg = sp10[data->player]; + if (data->playerCfg == 4) { + OSReport("m463:wrong player group\n"); + data->playerCfg = data->player; + } + data->character = GWPlayerCfg[data->playerCfg].character; + data->padIdx = (data->character == -1 || GWPlayerCfg[data->playerCfg].iscom) ? -1 : GWPlayerCfg[data->playerCfg].pad_idx; + data->diff = (data->padIdx != -1) ? 0 : GWPlayerCfg[data->playerCfg].diff; + } + data->unk18 = 0; + data->unk20 = 3; + data->unk24 = -1; + data->unk48 = -1; + if (data->character != -1) { + arg0->model[0] = CharModelCreate(data->character, 4); + } + else { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 7)); + } + omSetTra(arg0, 0.0f, data->player == 0 ? 0 : 300, 0.0f); + if (data->character != -1) { + omSetSca(arg0, 2.5f, 2.5f, 2.5f); + } + else { + omSetSca(arg0, 2.0f, 2.0f, 2.0f); + } + for (i = 0; i < 9; i++) { + if (data->character != -1) { + if (data->player < 4 || (i != 1 && i != 2)) { + arg0->motion[i] = CharModelMotionCreate(data->character, lbl_1_data_48[i] + (lbl_1_data_6C[i] ? data->character : 0)); + } + } + else if (lbl_1_data_90[i] != 0) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_90[i]); + } + } + Hu3DMotionSet(arg0->model[0], arg0->motion[data->unk20]); + Hu3DMotionTimeSet(arg0->model[0], 10.0f); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrSet(arg0->model[0], 1U); + Hu3DModelLayerSet(arg0->model[0], 1); + CharModelLayerSetAll2(1); + if (data->character != -1) { + CharModelDataClose(data->character); + } + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 9)); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(arg0->model[1], 0.0f, 400.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[1], 1); + Hu3DMotionSpeedSet(arg0->model[1], 0.0f); + for (i = 0; i < 9; i++) { + if (data->player == 0) { + arg0->model[i + 2] = Hu3DModelCreateFile(lbl_1_data_1E4[i]); + } + else { + arg0->model[i + 2] = Hu3DModelLink(playerObjs[0]->model[i + 2]); + } + Hu3DMotionTimeSet(arg0->model[i + 2], 10.0f); + Hu3DMotionSpeedSet(arg0->model[i + 2], 0.0f); + Hu3DModelAttrSet(arg0->model[i + 2], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[i + 2], 1); + } + lbl_1_bss_58 = data->player; + data->parMan = fn_1_4474(); + Hu3DParManPosSet(data->parMan, 10000.0f, -10000.0f, 10000.0f); + arg0->func = fn_1_4C8; +} + +void fn_1_60A4(omObjData *arg0) +{ + lbl_1_bss_50 = 1000; + lbl_1_bss_54 = 0; + lbl_1_bss_48 = 0; + lbl_1_bss_44 = 0; + lbl_1_data_154 = HuAudFXPlay(0x6D7); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_45F8; +} + +void ObjectSetup(void) +{ + omObjData *var_r30; + s32 i; + + OSReport("******* M463 ObjectSetup *********\n"); + lbl_1_bss_40 = omInitObjMan(600, 0x2000); + omGameSysInit(lbl_1_bss_40); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 3200.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec sp3C = { 0.0f, 0.0f, 0.0f }; + Vec sp30 = { 0.25f, -0.75f, -0.45f }; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + + lbl_1_bss_3C = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + } + Hu3DGLightStaticSet(lbl_1_bss_3C, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_3C); + { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = 0.0f; + sp24.y = 10000.0f; + sp24.z = 0.0f; + sp18.x = 0.0f; + sp18.y = 1.0f; + sp18.z = 0.0f; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = 0.5f; + Hu3DShadowCreate(12.0f, 9000.0f, 10010.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + Hu3DShadowSizeSet(0xE0); + lbl_1_data_14C = -1; + lbl_1_bss_38 = -1; + HuWinInit(1); + lbl_1_bss_32C = omAddObjEx(lbl_1_bss_40, 0x65, 10, 0, 1, fn_1_53A0); + for (i = 0; i < 9; i++) { + var_r30 = playerObjs[i] = omAddObjEx(lbl_1_bss_40, 100, 11, 9, 0, fn_1_5850); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M463PlayerData), MEMORY_DEFAULT_NUM); + var_r30->work[0] = i; + } + lbl_1_bss_354 = omAddObjEx(lbl_1_bss_40, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_358 = omAddObjEx(lbl_1_bss_40, 103, 0, 0, -1, fn_1_60A4); +} + +void fn_1_659C(omObjData *arg0) +{ + M463PlayerData *spC[9]; + void *sp8; + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 9; var_r31++) { + spC[var_r31] = playerObjs[var_r31]->data; + if (spC[var_r31]->parMan != -1) { + Hu3DParManKill(spC[var_r31]->parMan); + spC[var_r31]->parMan = -1; + } + } + if (WipeStatGet() == 0) { + for (var_r30 = 0; var_r30 < 9; var_r30++) { + sp8 = playerObjs[var_r30]->data; + } + if (lbl_1_data_14C >= 0) { + MGSeqKill(lbl_1_data_14C); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/mentDll/common.c b/src/REL/mentDll/common.c new file mode 100644 index 00000000..59f44912 --- /dev/null +++ b/src/REL/mentDll/common.c @@ -0,0 +1,1022 @@ +#include "REL/mentDll.h" +#include "ext_math.h" +#include "game/board/tutorial.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "math.h" + +Process *lbl_1_bss_0; +// TODO: unknown type +extern s32 lbl_1_bss_A8[]; + +s32 lbl_1_data_0[][4] = { + { 0x00000037, 0x00000038, 0x00000036, 0x00000039 }, + { 0x00000043, 0x00000045, 0x00000044, 0x00000043 }, + { 0x00000040, 0x00000042, 0x00000041, 0x00000040 }, + { 0x0000004B, 0x0000004D, 0x0000004C, 0x0000004B }, + { 0x00000046, 0x00000048, 0x00000047, 0x00000046 }, + { 0x0000003E, 0x0000003F, 0x0000003E, 0x0000003E }, + { 0x0000003A, 0x0000003B, 0x0000003C, 0xFFFFFFFF }, +}; + +s32 lbl_1_data_70 = -1; + +// char lbl_1_data_74[] = ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"; +// char lbl_1_data_96[] = "CENTER : %.2f, %.2f, %.2f"; +// char lbl_1_data_B0[] = "ROT : %.2f, %.2f, %.2f"; +// char lbl_1_data_CA[] = "ZOOM : %.2f"; + +extern s32 _prolog(); +extern void _epilog(); +void fn_1_144(void); +void fn_1_2318(s32); +typedef void (*VoidFunc)(void); +extern const VoidFunc _ctors[]; +extern const VoidFunc _dtors[]; + +void fn_1_0(omObjData *arg0) +{ + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData *object) +{ + if (omSysExitReq != 0) { + object->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +s32 _prolog(void) +{ + const VoidFunc *ctors = _ctors; + while (*ctors != 0) { + (**ctors)(); + ctors++; + } + fn_1_144(); + return 0; +} + +void _epilog(void) +{ + const VoidFunc *dtors = _dtors; + while (*dtors != 0) { + (**dtors)(); + dtors++; + } +} + +void fn_1_144(void) +{ + _ClearFlag(0x1000BU); + boardTutorialF = 0; + lbl_1_bss_0 = omInitObjMan(0x3E, 0x2000); + omGameSysInit(lbl_1_bss_0); + lbl_1_bss_A8[0] = omovlevtno; + lbl_1_bss_A8[1] = omovlstat; + fn_1_658C(lbl_1_bss_0); + omAddObjEx(lbl_1_bss_0, 0x2000, 0U, 0U, -1, fn_1_4C); +} + +f32 fn_1_20C(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + if (argB <= argA) { + return arg9; + } + return arg8 + ((argA / argB) * (arg9 - arg8)); +} + +f32 fn_1_234(f32 arg8, f32 arg9, f32 argA) +{ + return (arg9 + (arg8 * (argA - 1.0f))) / argA; +} + +// fn_1_254 +f32 fn_1_254(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + if (argA >= argB) { + return arg9; + } + return (arg8 + ((arg9 - arg8) * (1.0 - cosd((90.0f / argB) * argA)))); +} + +// fn_1_32C +f32 fn_1_32C(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + (arg9 - arg8) * sind((90.0f / argB) * argA); +} + +f32 fn_1_3F4(f32 arg8, f32 arg9, f32 argA, f32 argB) +{ + if (argA >= argB) { + return arg8; + } + return (arg8 + ((arg9 - arg8) * sind((360.0f / argB) * argA))); +} + +void fn_1_4B0(s32 arg0) +{ + HuPrcSleep(arg0); +} + +void fn_1_4D8(void) +{ + HuPrcVSleep(); +} + +void fn_1_4F8(void) +{ + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_50C(void) +{ + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, 255, 255, 255); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); +} + +void fn_1_5E8(s32 arg0) +{ + Vec sp24 = { 0.0f, 3000.0f, 800.0f }; + Vec sp18 = { 0.0f, 0.0f, 640.0f }; + Vec spC = { 0.0f, 1.0f, 0.0f }; + + if (arg0 == 3) { + sp24.x = sp18.x = 1200.0f; + } + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp24, &spC, &sp18); +} + +void fn_1_6D0(void) +{ + HuWinInit(1); +} + +void fn_1_6F4(s32 window, f32 centerX, f32 centerY, s32 toSmallF) +{ + WindowData *winPtr; + f32 smallPosX; + f32 smallPosY; + f32 winPosX; + f32 winPosY; + f32 width; + f32 height; + f32 smallScaleX; + f32 smallScaleY; + f32 posX; + f32 posY; + f32 scaleX; + f32 scaleY; + s32 time; + + winPtr = (WindowData *)&winData[window]; + winPosX = winPtr->pos_x; + winPosY = winPtr->pos_y; + width = winPtr->w; + height = winPtr->h; + smallPosX = winPosX + (width * centerX); + smallScaleX = 4.0f / width; + + // adjust horizontal position + if (((4.0f + smallPosX) - (winPosX + width)) >= 0.0f) { + smallPosX = (winPosX + width) - 4.0f; + } + else { + if ((winPosX - (smallPosX - 2.0f)) >= 0.0f) { + smallPosX = winPosX; + } + else { + smallPosX = smallPosX - 2.0f; + } + } + + smallPosY = winPosY + (height * centerY); + smallScaleY = 4.0f / height; + + // adjust vertical position + if (((4.0f + smallPosY) - (winPosY + height)) >= 0.0f) { + smallPosY = (winPosY + height) - 4.0f; + } + else { + if ((winPosY - (smallPosY - 2.0f)) >= 0.0f) { + smallPosY = winPosY; + } + else { + smallPosY = smallPosY - 2.0f; + } + } + + if (toSmallF != 0) { + HuWinPosSet(window, smallPosX, smallPosY); + HuWinScaleSet(window, smallScaleX, smallScaleY); + posX = smallPosX; + scaleX = smallScaleX; + posY = smallPosY; + scaleY = smallScaleY; + } + else { + HuWinPosSet(window, winPosX, winPosY); + HuWinScaleSet(window, 1.0f, 1.0f); + posX = winPosX; + scaleX = 1.0f; + posY = winPosY; + scaleY = 1.0f; + } + HuWinDispOn(window); + + // animation loop + for (time = 0; time <= 15; ++time) { + HuPrcVSleep(); + if (toSmallF != 0) { + if (time <= 0xA) { + posX = (time >= 10.0f) ? winPosX : (f32)(smallPosX + ((winPosX - smallPosX) * sind(9.0f * time))); + scaleX = (time >= 10.0f) ? 1.0f : (f32)(smallScaleX + ((1.0f - smallScaleX) * sind(9.0f * time))); + } + else { + posY = ((time - 0xA) >= 5.0f) ? winPosY : (f32)(smallPosY + ((winPosY - smallPosY) * sind(18.0f * (time - 0xA)))); + scaleY = ((time - 0xA) >= 5.0f) ? 1.0f : (f32)(smallScaleY + ((1.0f - smallScaleY) * sind(18.0f * (time - 0xA)))); + } + } + else if (time <= 0xA) { + posY = (time >= 10.0f) ? smallPosY : (f32)(winPosY + ((smallPosY - winPosY) * sind(9.0f * time))); + scaleY = (time >= 10.0f) ? smallScaleY : (f32)(1.0 + ((smallScaleY - 1.0f) * sind(9.0f * time))); + } + else { + posX = ((time - 0xA) >= 5.0f) ? smallPosX : (f32)(winPosX + ((smallPosX - winPosX) * sind(18.0f * (time - 0xA)))); + scaleX = ((time - 0xA) >= 5.0f) ? smallScaleX : (f32)(1.0 + ((smallScaleX - 1.0f) * sind(18.0f * (time - 0xA)))); + } + HuWinPosSet(window, posX, posY); + HuWinScaleSet(window, scaleX, scaleY); + } + + if (toSmallF != 0) { + HuWinPosSet(window, winPosX, winPosY); + HuWinScaleSet(window, 1.0f, 1.0f); + } + else { + HuWinPosSet(window, smallPosX, smallPosY); + HuWinScaleSet(window, smallScaleX, smallScaleY); + } + HuPrcVSleep(); +} + +s32 fn_1_113C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 arg8, f32 arg9, s32 arg6, s32 arg4, s32 arg5) +{ + f32 sp14[2]; + s32 temp_r30; + + if (arg6 % 2 == 0) { + arg2 = (arg2 * 0x15) + 0x10; + arg3 = (arg3 * 0x1A) + 0x10; + arg1 = (445.0f - arg3); + switch (arg0) { + case -1: + arg0 = 0x10; + break; + case 0: + arg0 = (1.0f + ((576.0f - arg2) / 2)); + break; + case 1: + arg0 = (556.0f - arg2); + break; + } + } + else { + HuWinMesMaxSizeGet(1, sp14, arg5); + arg2 = sp14[0]; + arg3 = sp14[1]; + arg0 = (556.0f - arg2); + arg1 = (445.0f - arg3); + } + temp_r30 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + if (arg6 == 1) { + HuWinAttrSet(temp_r30, 0x10U); + } + HuWinMesPalSet(temp_r30, 7U, 0U, 0U, 0U); + winData[temp_r30].active_pad = 1; + fn_1_6F4(temp_r30, arg8, arg9, 1); + return temp_r30; +} + +s32 fn_1_1434(s32 arg0, s32 arg1, s32 arg2) +{ + return fn_1_113C(arg0, 0, 0x15, 2, 0.5f, 0.5f, 2, 0, 0); +} + +void fn_1_164C(s32 arg0, f32 arg8, f32 arg9) +{ + HuWinMesSet(arg0, 0x250004); + HuPrcVSleep(); + fn_1_6F4(arg0, arg8, arg9, 0); + HuWinExCleanup(arg0); +} + +void fn_1_16AC(s32 arg0) +{ + HuWinMesSet(arg0, 0x250004); + HuPrcVSleep(); + fn_1_6F4(arg0, 0.5f, 0.5f, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1714(s32 arg0, s32 arg1) +{ + if ((arg1 == -999) || (arg1 == 0)) { + return; + } + if (arg1 == -1000) { + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) == 1); + return; + } + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_17A4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 i; + s32 temp_r28 = 0; + s32 var_r30 = 0; + + (void)arg0; + + temp_r28 = HuWinKeyWaitNumGet(arg1); + if ((arg2 == -1) || (arg2 >= (s32)(temp_r28 - 1))) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + for (i = 0; i < temp_r28; i++) { + var_r30 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r30 = 1; + } + + while (1) { + HuPrcVSleep(); + if (var_r30 != 0) { + if (var_r30 == 1 && HuWinStatGet(arg0) != 1) { + var_r30 = 2; + } + else if (var_r30 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } + else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); + HuWinComKeyReset(); +} + +s32 fn_1_18D8(s32 arg0, s32 arg1) +{ + s32 temp_r31; + + HuWinComKeyReset(); + temp_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + return temp_r31; +} + +void fn_1_1928(s32 arg0, s32 arg1, s32 arg2) +{ + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1968(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + if (arg3 == -999) { + HuWinMesSpeedSet(arg0, 0); + } + else { + HuWinMesSpeedSet(arg0, 1); + } + HuWinMesSet(arg0, arg1); + if (arg2 == -1) { + if ((arg3 != -999) && (arg3 != 0)) { + if (arg3 == -1000) { + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) == 1); + return; + } + if (arg3 > 0) { + HuPrcSleep(arg3); + return; + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); + } + } + else { + fn_1_17A4(arg0, arg1, arg2, arg3); + } +} + +s32 fn_1_1A5C(s32 arg0, s32 arg1, s32 arg2) +{ + s32 var_r28; + s32 var_r25 = 0; + + var_r28 = fn_1_113C(0, 0, 0, 0, 0.5f, 0.5f, arg1, 0, arg0); + HuWinMesSet(var_r28, arg0); + var_r25 = fn_1_18D8(var_r28, 0); + fn_1_164C(var_r28, 0.5f, 0.5f); + return var_r25; +} + +s32 fn_1_1DD8(s32 arg0, s32 arg1, s32 arg2) +{ + s32 var_r28; + s32 var_r25 = 0; + + var_r28 = fn_1_113C(0, 0, 0, 0, 0.5f, 0.5f, arg1, 0, arg0); + HuWinMesSet(var_r28, arg0); + var_r25 = fn_1_18D8(var_r28, 1); + fn_1_164C(var_r28, 0.5f, 0.5f); + return var_r25; +} + +s32 fn_1_2154(s32 arg0) +{ + f32 sp8[2]; + f32 temp_f29; + f32 temp_f28; + s32 ret; + f32 sizeX; + f32 sizeY; + + HuWinMesMaxSizeGet(1, sp8, arg0); + sizeX = sp8[0]; + sizeY = sp8[1]; + temp_f29 = (576.0f - sizeX) / 2; + temp_f28 = 385.0f - sizeY; + if (lbl_1_data_70 == -1) { + lbl_1_data_70 = ret = HuWinExCreateStyled(temp_f29, temp_f28, sizeX, sizeY, -1, 1); + } + else { + fn_1_2318(0); + lbl_1_data_70 = ret = HuWinExCreateStyled(temp_f29, temp_f28, sizeX, sizeY, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_70, 0.0f); + HuWinMesSet(lbl_1_data_70, arg0); + HuWinMesSpeedSet(lbl_1_data_70, 0); + HuWinDispOn(lbl_1_data_70); + return lbl_1_data_70; +} + +void fn_1_2318(s32 arg0) +{ + if (lbl_1_data_70 != -1) { + HuWinExCleanup(lbl_1_data_70); + lbl_1_data_70 = -1; + } +} + +void fn_1_236C(f32 arg9) +{ + MentDllUnkBss64Struct *temp = &lbl_1_bss_64; + + if ((HuPadBtn[0] & 0x200)) { + if ((HuPadBtn[0] & 0x20)) { + temp->center.z = temp->center.z - (HuPadStkY[0] / 10.0f); + } + else { + temp->center.x += HuPadStkX[0] / 10.0f; + temp->center.y = temp->center.y + (HuPadStkY[0] / 10.0f); + } + } + if ((HuPadBtn[0] & 0x800)) { + temp->rot.x -= HuPadStkY[0] / 100.0f; + temp->rot.y = temp->rot.y + (HuPadStkX[0] / 100.0f); + if (temp->rot.x < 0.0f) { + temp->rot.x += 360.0f; + } + + if (temp->rot.x >= 360.0f) { + temp->rot.x -= 360.0f; + } + if (temp->rot.y < 0.0f) { + temp->rot.y += 360.0f; + } + if (temp->rot.y >= 360.0f) { + temp->rot.y -= 360.0f; + } + } + if ((HuPadBtn[0] & 0x400)) { + temp->zoom = temp->zoom - (HuPadStkY[0] / 10.0f); + } + print8(0x18, 0x28, 1.0f, ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"); + print8(0x18, 0x32, 1.0f, "CENTER : %.2f, %.2f, %.2f", temp->center.x, temp->center.y, temp->center.z); + print8(0x18, 0x3C, 1.0f, "ROT : %.2f, %.2f, %.2f", temp->rot.x, temp->rot.y, temp->rot.z); + print8(0x18, 0x46, 1.0f, "ZOOM : %.2f", temp->zoom); +} + +void fn_1_2750(omObjData *obj) +{ + MentDllUnkBss64Struct *temp = &lbl_1_bss_64; + if (temp->func != NULL) { + temp->func(); + } + Center.x = temp->center.x; + Center.y = temp->center.y; + Center.z = temp->center.z; + CRot.x = temp->rot.x; + CRot.y = temp->rot.y; + CRot.z = temp->rot.z; + CZoom = temp->zoom; +} + +void fn_1_2808(void (*arg0)(void)) +{ + fn_1_29A0(&lbl_1_bss_64); + lbl_1_bss_64.func = arg0; +} + +void fn_1_2844(Process *arg0, void (*arg1)(void)) +{ + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 20.0f, 5000.0f, 1.2f); + lbl_1_bss_64.func = arg1; + lbl_1_bss_64.func2 = &fn_1_236C; + omAddObjEx(arg0, 0x7FDA, 0U, 0U, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0U, 0U, -1, fn_1_2750); +} + +void fn_1_2964(MentDllUnkBss64Struct *arg0) +{ + arg0->center.x = arg0->prevCenter.x; + arg0->center.y = arg0->prevCenter.y; + arg0->center.z = arg0->prevCenter.z; + arg0->rot.x = arg0->prevRot.x; + arg0->rot.y = arg0->prevRot.y; + arg0->rot.z = arg0->prevRot.z; + arg0->zoom = arg0->prevZoom; +} + +void fn_1_29A0(MentDllUnkBss64Struct *arg0) +{ + arg0->unk_40 = 0.0f; + arg0->prevCenter.x = arg0->center.x; + arg0->prevCenter.y = arg0->center.y; + arg0->prevCenter.z = arg0->center.z; + arg0->prevRot.x = arg0->rot.x; + arg0->prevRot.y = arg0->rot.y; + arg0->prevRot.z = arg0->rot.z; + arg0->prevZoom = arg0->zoom; +} + +static inline f32 SmoothInterpolate(f32 arg0, f32 arg1, f32 arg2) +{ + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +void fn_1_29E4(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8) +{ + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, arg8); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, arg8); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, arg8); + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, arg8); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, arg8); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, arg8); + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, arg8); +} + +void fn_1_2C50(MentDllUnkBss64Struct *arg0, f32 arg8) +{ + arg0->center.x = SmoothInterpolate(arg0->center.x, arg0->prevCenter.x, arg8); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg0->prevCenter.y, arg8); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg0->prevCenter.z, arg8); + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg0->prevRot.x, arg8); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg0->prevRot.y, arg8); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg0->prevRot.z, arg8); + arg0->zoom = SmoothInterpolate(arg0->zoom, arg0->prevZoom, arg8); +} + +inline f32 LinearInterpolation(f32 arg0, f32 arg1, f32 arg8, f32 arg9) +{ + if (arg9 <= arg8) { + return arg1; + } + else { + return arg0 + ((arg8 / arg9) * (arg1 - arg0)); + } +} + +void fn_1_2EBC(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9) +{ + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_3138(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9) +{ + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + arg0->zoom = arg1->prevZoom; +} + +void fn_1_33EC(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9, f32 argA) +{ + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_3858(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9) +{ + arg1->prevCenter.x = fn_1_32C(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_32C(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_32C(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_32C(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_32C(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_32C(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_32C(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_3CAC(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9) +{ + arg1->prevCenter.x = fn_1_32C(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_32C(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_32C(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_32C(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_32C(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_32C(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_32C(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + + arg0->zoom = arg1->prevZoom; +} + +void fn_1_4138(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9, f32 argA) +{ + arg1->prevCenter.x = fn_1_32C(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_32C(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_32C(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_32C(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_32C(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_32C(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_32C(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_4790(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9) +{ + arg1->prevCenter.x = fn_1_254(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_254(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_254(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_254(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_254(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_254(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_254(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_4C54(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9) +{ + arg1->prevCenter.x = fn_1_254(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_254(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_254(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_254(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_254(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_254(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_254(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + + arg0->zoom = arg1->prevZoom; +} + +void fn_1_5150(MentDllUnkBss64Struct *arg0, MentDllUnkBss64Struct *arg1, f32 arg8, f32 arg9, f32 argA) +{ + arg1->prevCenter.x = fn_1_254(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_254(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_254(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_254(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_254(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_254(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_254(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_5818(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) +{ + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; +} + +void fn_1_59A0(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) +{ + if (arg0->work[3] != arg0->motion[arg2]) { + arg0->work[3] = arg0->motion[arg2]; + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_5B50(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + (void)arg1; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[arg1], 0.0f, arg3, 0); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; +} + +void fn_1_5C08(omObjData *arg0) +{ + s32 temp; + + if (arg0->work[0] != 0) { + if (arg0->work[2] != 0) { + arg0->work[2] -= 1; + return; + } + if ((arg0->work[2] == 0) && (Hu3DMotionEndCheck(arg0->model[1]) != 0)) { + temp = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[temp], 0.0f, 15.0f, 0x40000001); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } + } +} + +void fn_1_5CDC(omObjData *arg0, s32 arg1, s32 arg2) +{ + HuPrcSleep(arg2 + 1); + do { + HuPrcVSleep(); + } while (Hu3DMotionEndCheck(arg0->model[arg1]) == 0); +} + +void fn_1_5D38(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4) +{ + s32 temp_r29 = 0; + s32 temp_r28 = 0; + + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp1C.x = Hu3DData[arg0->model[arg1]].rot.x; + sp1C.y = Hu3DData[arg0->model[arg1]].rot.y; + sp1C.z = Hu3DData[arg0->model[arg1]].rot.z; + sp10.x = 0; + sp10.y = arg8; + sp10.z = 0; + if (sp34.x - sp40.x >= 0.0f) { + temp_r29 = 1; + } + else { + temp_r29 = 0; + } + if (sp34.z - sp40.z >= 0.0f) { + temp_r28 = 1; + } + else { + temp_r28 = 0; + } + while (arg3) { + fn_1_4D8(); + sp28.y = -(atan2d(sp34.z - sp40.z, sp34.x - sp40.x) - 90); + if (sp28.y < 0.0f) { + sp28.y += 360.0f; + } + else if (sp28.y >= 360.0f) { + sp28.y -= 360.0f; + } + if (arg4) { + if (sp28.y >= 180.0f) { + if (sp1C.y - sp28.y >= 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp28.y < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if (sp1C.y - sp28.y > 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp28.y <= -180.0f) { + sp1C.y += 360.0f; + } + } + } + sp4C.x = sp40.x = sp40.x + (arg9 * sind(sp28.y)); + sp4C.z = sp40.z = sp40.z + (arg9 * cosd(sp28.y)); + if (temp_r29 == 1) { + if (sp40.x >= sp34.x) { + sp4C.x = sp40.x = sp34.x; + temp_r29 = 2; + } + } + else if (temp_r29 == 0) { + if (sp40.x <= sp34.x) { + sp4C.x = sp40.x = sp34.x; + temp_r29 = 2; + } + } + if (temp_r28 == 1) { + if (sp40.z >= sp34.z) { + sp4C.z = sp40.z = sp34.z; + temp_r28 = 2; + } + } + else if (temp_r28 == 0) { + if (sp40.z <= sp34.z) { + sp4C.z = sp40.z = sp34.z; + temp_r28 = 2; + } + } + if (arg4) { + sp1C.y = fn_1_234(sp1C.y, sp28.y, argA); + } + Hu3DModelPosSet(arg0->model[arg1], sp4C.x, sp40.y, sp4C.z); + Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp1C.y, sp1C.z); + if (temp_r29 == 2 && temp_r28 == 2) { + break; + } + } + sp1C.y = Hu3DData[arg0->model[arg1]].rot.y; + if (arg4) { + s32 temp_r27; + for (temp_r27 = 0; temp_r27 <= argA; temp_r27++) { + fn_1_4D8(); + if (sp10.y >= 180.0f) { + if (sp1C.y - sp10.y >= 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp10.y < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if (sp1C.y - sp10.y > 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp10.y <= -180.0f) { + sp1C.y += 360.0f; + } + } + sp10.z = fn_1_20C(sp1C.y, sp10.y, temp_r27, argA); + Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp10.z, sp1C.z); + } + } +} + +void fn_1_6534(s32 grpId, s32 memberNo, float posX, float posY) +{ + HuSprPosSet(grpId, memberNo, posX, posY + 0.5f); +} diff --git a/src/REL/mentDll/main.c b/src/REL/mentDll/main.c new file mode 100644 index 00000000..db8375f3 --- /dev/null +++ b/src/REL/mentDll/main.c @@ -0,0 +1,6579 @@ +#include "game/board/main.h" +#include "REL/mentDll.h" +#include "ext_math.h" +#include "game/armem.h" +#include "game/chrman.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct MentDllUnkBssE4Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; + /* 0x18 */ float unk_18; +} MentDllUnkBssE4Struct; /* size = 0x1C */ + +typedef struct MentDllUnkBss16C4Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; + /* 0x18 */ float unk_18; + /* 0x1C */ float unk_1C; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; +} MentDllUnkBss16C4Struct; /* size = 0x30 */ + +typedef void (*MentDllUnkFunc)(omObjData *, ...); + +typedef struct MentDllUnkBss3114Struct { + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ MentDllUnkFunc unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ char pad_10[0x48]; /* maybe part of unk_0C[0x13]? */ + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ s32 unk_60; + /* 0x64 */ s32 unk_64; + /* 0x68 */ s32 unk_68; + /* 0x6C */ s32 unk_6C; + /* 0x70 */ s32 unk_70[4]; + /* 0x80 */ s32 unk_80[4]; +} MentDllUnkBss3114Struct; /* size = 0x90 */ + +typedef struct MentDllUnkBss33ACStruct { // maybe the same as the other one? + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ MentDllUnkFunc unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ char pad_10[0x20]; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ char pad_38[0x20]; +} MentDllUnkBss33ACStruct; /* size = 0x58 */ + +typedef struct MentDllUnkBss35BCStruct { + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ MentDllUnkFunc unk_04; + /* 0x08 */ s32 unk_08[5]; + /* 0x1C */ s32 unk_1C[5]; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ s32 unk_40; + /* 0x44 */ s32 unk_44[5]; +} MentDllUnkBss35BCStruct; /* size = 0x58 */ + +void fn_1_116F4(void); +void fn_1_1184C(omObjData *arg0, MentDllUnkBss35BCStruct *arg1); +void fn_1_11908(omObjData *arg0, s32 arg1); +void fn_1_121D8(void); +void fn_1_127FC(omObjData *arg0, MentDllUnkBss33ACStruct *arg1); +void fn_1_12E40(void); +void fn_1_134A8(void); +void fn_1_13970(void); +void fn_1_13D60(void); +void fn_1_13DEC(void); +void fn_1_13EDC(void); +void fn_1_13F68(void); +void fn_1_14058(void); +void fn_1_14148(void); +void fn_1_14238(void); +void fn_1_14328(void); +void fn_1_14418(void); +void fn_1_146D0(void); +void fn_1_147C0(void); +void fn_1_148B0(void); +void fn_1_149A0(void); +void fn_1_14A2C(void); +void fn_1_14AB8(void); +void fn_1_14BA8(void); +void fn_1_14CE0(void); +void fn_1_15098(void); +void fn_1_151B8(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_15950(void); +void fn_1_15CB4(omObjData *arg0, MentDllUnkBss3114Struct *arg1); +s32 fn_1_1648C(MentDllUnkBss3114Struct *arg0); +void fn_1_16B68(omObjData *arg0, MentDllUnkBss3114Struct *arg1); +void fn_1_173FC(MentDllUnkBss3114Struct *arg0); +void fn_1_17914(MentDllUnkBss3114Struct *arg0); +void fn_1_179DC(void); +void fn_1_17CC8(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_1811C(void); +void fn_1_1850C(void); +void fn_1_1872C(void); +void fn_1_18788(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_18A54(s32 arg0); +void fn_1_18DCC(void); +void fn_1_18F74(omObjData *arg0, MentDllUnkBss35BCStruct *arg1); +void fn_1_190E8(void); +void fn_1_19C98(omObjData *arg0, MentDllUnkBss35BCStruct *arg1); +void fn_1_1BB2C(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_1C554(void); +void fn_1_1C674(void); +void fn_1_1C754(void); +void fn_1_1C990(void); +void fn_1_1CF68(void); +void fn_1_1D4FC(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_1DED8(void); +void fn_1_1DF48(void); +void fn_1_1DFB8(void); +void fn_1_1E1B4(void); +void fn_1_1E404(omObjData *arg0, MentDllUnkBss3114Struct *arg1); +void fn_1_1E8A4(omObjData *arg0, MentDllUnkBss35BCStruct *arg1); +void fn_1_1F6B8(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_1F868(void); +void fn_1_1FA34(void); +void fn_1_1FC54(void); +void fn_1_1FF4C(omObjData *arg0, MentDllUnkBss35BCStruct *arg1); +void fn_1_2055C(s32 arg0); +void fn_1_207BC(void); +void fn_1_208F4(void); +void fn_1_20A24(void); +void fn_1_20B54(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_21724(omObjData *object); +void fn_1_2342C(omObjData *object); +void fn_1_C174(s32 arg0); +void fn_1_E654(s32 arg0); +void fn_1_E71C(s32 arg0); + +Vec lbl_1_data_D8[6] = { + { 0.0f, 0.0f, 460.0f }, + { -240.0f, 0.0f, 460.0f }, + { -120.0f, 0.0f, 460.0f }, + { 120.0f, 50.0f, 460.0f }, + { 240.0f, 0.0f, 460.0f }, + { 1200.0f, 0.0f, 460.0f }, +}; + +float lbl_1_data_120[6] = { 0.0f, 20.0f, 10.0f, -10.0f, -20.0f, 0.0f }; + +MentDllUnkBss35BCStruct lbl_1_bss_366C; +MentDllUnkBss35BCStruct lbl_1_bss_35BC[2]; +MentDllUnkBss33ACStruct lbl_1_bss_33AC[6]; +MentDllUnkBss33ACStruct lbl_1_bss_3354; +MentDllUnkBss3114Struct lbl_1_bss_3114[4]; +omObjData *lbl_1_bss_3108[3]; +omObjData *lbl_1_bss_3104; +MentDllUnkBss16C4Struct lbl_1_bss_16C4[0x8C]; +MentDllUnkBssE4Struct lbl_1_bss_E4[0xC8]; +s32 lbl_1_bss_E0; +s32 lbl_1_bss_DC; +s32 lbl_1_bss_D8; +s32 lbl_1_bss_D4; +s32 lbl_1_bss_D0; +s32 lbl_1_bss_CC; +Process *lbl_1_bss_C8; +s32 lbl_1_bss_A8[8]; +MentDllUnkBss64Struct lbl_1_bss_64; +s32 lbl_1_bss_24[16]; +s32 lbl_1_bss_14[4]; +s32 lbl_1_bss_8[3]; + +void fn_1_658C(Process *arg0) +{ + s32 var_r31; + + lbl_1_bss_C8 = arg0; + fn_1_6D0(); + fn_1_50C(); + fn_1_5E8(lbl_1_bss_A8[0]); + if (lbl_1_bss_A8[0] != 0xB) { + CharKill(-1); + } + lbl_1_bss_A8[4] = GWGameStat.open_w06; + lbl_1_bss_A8[5] = GWGameStat.veryHardUnlock; + lbl_1_bss_A8[6] = GWGameStat.customPackEnable; + switch (lbl_1_bss_A8[0]) { + case 0: + HuAudSndGrpSetSet(7); + if (lbl_1_bss_A8[1] == 0) { + fn_1_2844(lbl_1_bss_C8, fn_1_13D60); + } + else { + fn_1_2844(lbl_1_bss_C8, fn_1_13EDC); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuPrcChildCreate(fn_1_12E40, 0x64, 0x3000, 0, HuPrcCurrentGet()); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_13970, 0x64, 0x3000, 0, HuPrcCurrentGet()); + } + if (lbl_1_bss_A8[1] == 0) { + lbl_1_bss_3108[0] = omAddObjEx(lbl_1_bss_C8, 0x1000, 0x8D, 0x10, -1, fn_1_21724); + } + break; + case 1: + HuAudSndGrpSetSet(7); + if (lbl_1_bss_A8[1] == 0) { + fn_1_2844(lbl_1_bss_C8, fn_1_13D60); + } + else { + fn_1_2844(lbl_1_bss_C8, fn_1_13EDC); + } + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + HuPrcChildCreate(fn_1_12E40, 0x64, 0x3000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_13970, 0x64, 0x3000, 0, HuPrcCurrentGet()); + if (lbl_1_bss_A8[1] == 0) { + lbl_1_bss_3108[0] = omAddObjEx(lbl_1_bss_C8, 0x1000, 0x8D, 0x10, -1, fn_1_21724); + } + lbl_1_bss_3104 = omAddObjEx(lbl_1_bss_C8, 0x1000, 0xC9, 0x10, -1, fn_1_2342C); + break; + case 3: + HuAudSndCommonGrpSet(0x56, 1); + HuAudSndCommonGrpSet(0x6B, 0); + fn_1_2844(lbl_1_bss_C8, fn_1_13D60); + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + lbl_1_bss_D0 = 4; + HuPrcChildCreate(fn_1_12E40, 0x64, 0x3000, 0, HuPrcCurrentGet()); + lbl_1_bss_3108[0] = omAddObjEx(lbl_1_bss_C8, 0x1000, 0x8D, 0x10, -1, fn_1_21724); + break; + case 4: + HuAudSndGrpSetSet(3); + fn_1_2844(lbl_1_bss_C8, fn_1_13D60); + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + lbl_1_bss_D0 = 2; + HuPrcChildCreate(fn_1_12E40, 0x64, 0x3000, 0, HuPrcCurrentGet()); + lbl_1_bss_3108[0] = omAddObjEx(lbl_1_bss_C8, 0x1000, 0x8D, 0x10, -1, fn_1_21724); + break; + case 5: + fn_1_2844(lbl_1_bss_C8, fn_1_13D60); + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + lbl_1_bss_D0 = 3; + HuPrcChildCreate(fn_1_12E40, 0x64, 0x3000, 0, HuPrcCurrentGet()); + lbl_1_bss_3108[0] = omAddObjEx(lbl_1_bss_C8, 0x1000, 0x8D, 0x10, -1, fn_1_21724); + break; + case 10: + HuAudSndGrpSetSet(7); + fn_1_2844(lbl_1_bss_C8, fn_1_149A0); + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + HuPrcChildCreate(fn_1_12E40, 0x64, 0x3000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_13970, 0x64, 0x3000, 0, HuPrcCurrentGet()); + break; + case 11: + lbl_1_bss_CC = 1; + HuAudSndGrpSetSet(7); + fn_1_2844(lbl_1_bss_C8, fn_1_14A2C); + HuPrcChildCreate(fn_1_121D8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_134A8, 0x64, 0x3000, 0, HuPrcCurrentGet()); + fn_1_4B0(2); + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_13970, 0x64, 0x3000, 0, HuPrcCurrentGet()); + break; + } + HuPrcChildCreate(fn_1_116F4, 0xC8, 0x3000, 0, HuPrcCurrentGet()); +} + +void fn_1_6C4C(void) +{ + s32 var_r31; + s32 var_r30 = 0x10; + s32 var_r29 = 0x28; + s32 var_r28 = 0; + { + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + while (1) { + fn_1_4D8(); + if (HuPadBtnDown[0] & PAD_TRIGGER_R) { + var_r28++; + var_r28 = var_r28 % 2; + } + if (var_r28 == 0) { + continue; + } + printWin(var_r30, var_r29, 0xDC, 0x122, &sp10); + if (lbl_1_bss_366C.unk_04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } + else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_35BC[var_r31].unk_04 == NULL) { + print8(var_r30, var_r29 + 0x14 + (var_r31 * 0xA), 1.0f, "PROC_MAP%d -> FALSE", var_r31); + } + else { + print8(var_r30, var_r29 + 0x14 + (var_r31 * 0xA), 1.0f, "PROC_MAP%d -> TRUE", var_r31); + } + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (lbl_1_bss_33AC[var_r31].unk_04 == NULL) { + print8(var_r30, var_r29 + 0x32 + (var_r31 * 0xA), 1.0f, "PROC_SUB%d -> FALSE", var_r31); + } + else { + print8(var_r30, var_r29 + 0x32 + (var_r31 * 0xA), 1.0f, "PROC_SUB%d -> TRUE", var_r31); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_04 == NULL) { + print8(var_r30, var_r29 + 0x78 + (var_r31 * 0xA), 1.0f, "PROC_PLAYER%d -> FALSE", var_r31); + } + else { + print8(var_r30, var_r29 + 0x78 + (var_r31 * 0xA), 1.0f, "PROC_PLAYER%d -> TRUE", var_r31); + } + } + print8(var_r30, var_r29 + 0xAA, 1.0f, "MODE:%d MAP:%d", lbl_1_bss_A8[0], lbl_1_bss_A8[2]); + print8(var_r30, var_r29 + 0xBE, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + + print8(var_r30, var_r29 + 0xC8 + (var_r31 * 0xA), 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, lbl_1_bss_3114[var_r31].unk_58, + lbl_1_bss_3114[var_r31].unk_5C, lbl_1_bss_3114[var_r31].unk_60, lbl_1_bss_3114[var_r31].unk_64, lbl_1_bss_3114[var_r31].unk_6C, lbl_1_bss_3114[var_r31].unk_68); + } + print8(var_r30, var_r29 + 0xF0, 1.0f, "NO) FG0:FG1:FG2:FG3"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + print8(var_r30, var_r29 + 0xFA + (var_r31 * 0xA), 1.0f, "%2d) %3d:%3d:%3d:%3d", var_r31, lbl_1_bss_3114[var_r31].unk_70[0], + lbl_1_bss_3114[var_r31].unk_70[1], lbl_1_bss_3114[var_r31].unk_70[2], lbl_1_bss_3114[var_r31].unk_70[3]); + } + } + } +} + +s32 fn_1_7124(void) +{ + s32 var_r31 = 0; + + if (_CheckFlag(FLAG_ID_MAKE(0, 2)) != 0) { + var_r31++; + } + if (_CheckFlag(FLAG_ID_MAKE(0, 3)) != 0) { + var_r31++; + } + if (_CheckFlag(FLAG_ID_MAKE(0, 4)) != 0) { + var_r31++; + } + if (_CheckFlag(FLAG_ID_MAKE(0, 5)) != 0) { + var_r31++; + } + if (_CheckFlag(FLAG_ID_MAKE(0, 6)) != 0) { + var_r31++; + } + if (_CheckFlag(FLAG_ID_MAKE(0, 7)) != 0) { + var_r31++; + } + OSReport("DIF OMAKASE MAP %d\n", var_r31); + var_r31 = var_r31 / 2; + if (var_r31 < 0) { + var_r31 = 0; + } + else if (var_r31 > 3) { + var_r31 = 3; + } + OSReport("DIF OMAKASE DIF %d\n", var_r31); + return var_r31; +} + +s32 lbl_1_data_2B4[0xF] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, + DATADIR_MARIOMDL1, + DATADIR_LUIGIMDL1, + DATADIR_PEACHMDL1, + DATADIR_YOSHIMDL1, + DATADIR_WARIOMDL1, + DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, + DATADIR_WALUIGIMDL1, +}; + +void fn_1_7218(void) +{ + s32 var_r31 = HuDataDirReadAsync(DATADIR_BOARD); + + if (var_r31 != -1) { + while (HuDataGetAsyncStat(var_r31) == 0) { + HuPrcVSleep(); + } + } + HuAR_MRAMtoARAM(DATADIR_BOARD); + while (HuARDMACheck() != 0) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_BOARD); + if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { + var_r31 = HuDataDirReadAsync(DATADIR_W10); + } + else { + var_r31 = HuDataDirReadAsync(lbl_1_data_2B4[GWSystem.board]); + } + if (var_r31 != -1) { + while (HuDataGetAsyncStat(var_r31) == 0) { + HuPrcVSleep(); + } + } + lbl_1_bss_D8 = 1; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_7304(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_68 = -1; + lbl_1_bss_3114[var_r31].unk_6C = var_r31; + lbl_1_bss_3114[var_r31].unk_60 = 1; + } + for (var_r31 = 1; var_r31 < 4; var_r31++) { + do { + lbl_1_bss_3114[var_r31].unk_68 = rand8() % 8; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r31 != var_r29) && (lbl_1_bss_3114[var_r29].unk_68 != -1) + && (lbl_1_bss_3114[var_r31].unk_68 == lbl_1_bss_3114[var_r29].unk_68)) { + break; + } + } + } while (var_r29 != 4); + } + GWSystem.diff_story = lbl_1_bss_35BC[0].unk_1C[0]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_64 = GWSystem.diff_story; + if (GWSystem.diff_story == 4) { + lbl_1_bss_3114[var_r31].unk_64 = fn_1_7124(); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCfg[var_r31].character = lbl_1_bss_3114[var_r31].unk_68; + GWPlayerCfg[var_r31].pad_idx = lbl_1_bss_3114[var_r31].unk_6C; + GWPlayerCfg[var_r31].diff = lbl_1_bss_3114[var_r31].unk_64; + GWPlayerCfg[var_r31].group = 0; + GWPlayerCfg[var_r31].iscom = lbl_1_bss_3114[var_r31].unk_60; + } + BoardSaveInit(lbl_1_bss_A8[2]); + CharKill(-1); +} + +void fn_1_7684(void) +{ + s32 spC[7] = { 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F }; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + { + omOvlHisData *sp8 = omOvlHisGet(0); + } + omOvlHisChg(0, OVL_MSTORY3, 0, 0); + do { + fn_1_4D8(); + } while (lbl_1_bss_D8 != 1); + HuAudSeqAllFadeOut(0x3E8); + HuAudSStreamAllFadeOut(0x3E8); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + omOvlCallEx(spC[GWSystem.board], 1, 0, 0); + while (1) { + fn_1_4D8(); + } +} + +void fn_1_77C0(void) +{ + s32 var_r31; + + fn_1_2808(fn_1_13DEC); + fn_1_4B0(0xF0); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + lbl_1_bss_3108[0]->work[0] = 1; + fn_1_2808(fn_1_13F68); + fn_1_4B0(0x8C); +} + +void fn_1_7858(void) +{ + s32 var_r31; + + fn_1_4B0(0x3C); + lbl_1_bss_14[0] = HuAudSeqPlay(0x30); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_4B0(0x3C); +} + +void fn_1_7900(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = lbl_1_bss_DC; + sp8.center.y = 60.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 850.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); +} + +s32 lbl_1_data_2F0 = -1; + +void fn_1_7A14(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + + _ClearFlag(2); + _ClearFlag(3); + _ClearFlag(4); + _ClearFlag(5); + _ClearFlag(6); + _ClearFlag(7); + _ClearFlag(1); + _ClearFlag(9); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + fn_1_59A0(lbl_1_bss_33AC[var_r31].unk_00, 1, 6, 5, 1); + } + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + lbl_1_bss_3104->work[0] = 1; + var_r29 = -1; + var_r29 = HuAudFXPlay(0x43); + HuAudFXPanning(var_r29, 0x20); + var_r29 = HuAudFXPlay(0x40); + HuAudFXPanning(var_r29, 0x30); + var_r29 = HuAudFXPlay(0x37); + HuAudFXPanning(var_r29, 0x40); + var_r29 = HuAudFXPlay(0x4B); + HuAudFXPanning(var_r29, 0x4C); + var_r29 = HuAudFXPlay(0x46); + HuAudFXPanning(var_r29, 0x60); + HuAudFXPlay(0x9A); + HuAudFXPlay(0x306); + fn_1_4B0(0x96); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + lbl_1_bss_33AC[var_r31].unk_04 = (MentDllUnkFunc)fn_1_127FC; + } + lbl_1_bss_33AC->unk_08 = 1; + fn_1_4B0(0x3C); + for (var_r31 = 1; var_r31 < 5; var_r31++) { + fn_1_59A0(lbl_1_bss_33AC[var_r31].unk_00, 1, 1, 0x1E, 1); + } + var_r30 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + HuWinInsertMesSet(var_r30, lbl_1_bss_3114->unk_68, 0); + fn_1_1968(var_r30, 0x1E005F, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r30); + fn_1_4B0(0x1E); + for (var_r31 = 1; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + } + lbl_1_bss_33AC[3].unk_08 = 1; + lbl_1_bss_64.unk_40 = 0; + lbl_1_bss_DC = lbl_1_data_D8[3].x; + fn_1_2808(fn_1_7900); + fn_1_4B0(0x1E); + var_r30 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 6, 0xF, 1); + fn_1_1968(var_r30, 0x1E0060, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r30); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + } + lbl_1_bss_33AC[1].unk_08 = 1; + lbl_1_bss_64.unk_40 = 0; + lbl_1_bss_DC = lbl_1_data_D8[1].x; + fn_1_4B0(0x1E); + var_r30 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[1].unk_00, 1, 6, 0xF, 1); + fn_1_1968(var_r30, 0x1E0061, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[1].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r30); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + } + lbl_1_bss_33AC[4].unk_08 = 1; + lbl_1_bss_64.unk_40 = 0; + lbl_1_bss_DC = lbl_1_data_D8[4].x; + fn_1_4B0(0x1E); + var_r30 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[4].unk_00, 1, 6, 0xF, 1); + fn_1_1968(var_r30, 0x1E0062, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[4].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r30); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + } + lbl_1_bss_33AC[2].unk_08 = 1; + lbl_1_bss_64.unk_40 = 0; + lbl_1_bss_DC = lbl_1_data_D8[2].x; + fn_1_4B0(0x1E); + var_r30 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[2].unk_00, 1, 1, 0xF, 1); + fn_1_1968(var_r30, 0x1E0063, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[2].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r30); + lbl_1_bss_3104->work[0] = 3; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + } + lbl_1_bss_33AC->unk_08 = 1; + fn_1_2808(fn_1_13F68); + fn_1_4B0(0x3C); + var_r30 = fn_1_1434(0, 0, 0); + lbl_1_data_2F0 = var_r30; + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r30, 0x1E0064, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_04 = NULL; + } +} + +void fn_1_81A8(omObjData *arg0, void *arg1, void *arg2) +{ + fn_1_1F868(); + lbl_1_bss_3114->unk_04 = NULL; +} + +void fn_1_81D8(void) +{ + lbl_1_bss_3114[0].unk_04 = (MentDllUnkFunc)fn_1_81A8; +} + +void fn_1_81F0(void) +{ + fn_1_4B0(0x3C); + HuAudSStreamPlay(0xC); + OSReport("########### ME_MainProcFunc000\n"); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); +} + +void fn_1_824C(void) +{ + s32 var_r31; + + fn_1_4B0(0x3C); + lbl_1_bss_14[0] = HuAudSeqPlay(0x30); + if (lbl_1_bss_A8[0] == 0) { + for (var_r31 = 0; var_r31 < 6; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + } + else { + for (var_r31 = 0; var_r31 < 5; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + } + Hu3DModelPosSet(lbl_1_bss_33AC[0].unk_00->model[1], 0.0f, 0.0f, 560.0f); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 2, 0, 2); + Hu3DModelAttrSet(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + OSReport("########### ME_MainProcFunc400\n"); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_4B0(0x3C); +} + +void fn_1_83CC(void) +{ + s32 var_r31; + + Vec sp14 = { 0.0f, 0.0f, 560.0f }; + fn_1_2808(fn_1_13DEC); + fn_1_4B0(0x5A); + if (lbl_1_bss_A8[0] == 0) { + for (var_r31 = 0; var_r31 < 6; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + } + else { + for (var_r31 = 0; var_r31 < 5; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + } + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + fn_1_4B0(0x96); + lbl_1_bss_3108[0]->work[0] = 1; + fn_1_2808(fn_1_13F68); + fn_1_4B0(0x5A); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 2, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[0].unk_00, 1, sp14, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + Hu3DModelAttrSet(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + fn_1_4B0(0x1E); +} + +void fn_1_85C8(void) +{ + s32 var_r31; + s32 var_r30; + + lbl_1_bss_14[0] = HuAudSeqPlay(0x30); + var_r31 = fn_1_1434(0, 0, 0); + HuAudFXPlay(lbl_1_data_0[0][0]); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1A0000, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + saveExecF = 0; + if (GWGameStat.party_continue == 1) { + var_r31 = fn_1_1434(0, 0, 0); + while (1) { + fn_1_4D8(); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1A0001, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r30 = fn_1_1A5C(0x1E0035, 3, 0); + if (var_r30 == -1) { + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1A0003, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r30 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r30 == 0) { + fn_1_16AC(var_r31); + fn_1_C174(0); + } + continue; + } + if (var_r30 == 0) { + HuAudFXPlay(lbl_1_data_0[0][3]); + saveExecF = 1; + SLLoadBoard(); + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + fn_1_16AC(var_r31); + fn_1_C174(1); + continue; + } + if (var_r30 == 1) { + break; + } + } + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1A0002, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + } +} + +void fn_1_88A4(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = fn_1_1434(0, 0, 0); + HuAudFXPlay(lbl_1_data_0[0][3]); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r30, 0x1A0004, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r29 = fn_1_1DD8(0x1E0035, 3, 0); + fn_1_16AC(var_r30); + if (var_r29 == 0) { + s32 spC[4] = { 3, 0, 2, 4 }; + _SetFlag(0x1000B); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCfg[var_r31].character = spC[var_r31]; + GWPlayerCfg[var_r31].pad_idx = var_r31; + GWPlayerCfg[var_r31].diff = 0; + GWPlayerCfg[var_r31].group = 0; + GWPlayerCfg[var_r31].iscom = 1; + OSReport("ID-%d CHR-%d PAD-%d DIF-%d GRP-%d COM-%d\n", var_r31, GWPlayerCfg[var_r31].character, GWPlayerCfg[var_r31].pad_idx, + GWPlayerCfg[var_r31].diff, GWPlayerCfg[var_r31].group, GWPlayerCfg[var_r31].iscom); + } + BoardSaveInit(6); + GWSystem.max_turn = 0x14; + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + { + omOvlHisData *sp8 = omOvlHisGet(0); + } + omOvlHisChg(0, OVL_MENT, 0, 1); + fn_1_C174(2); + } + else { + _ClearFlag(0x1000B); + } + fn_1_14BA8(); +} + +void fn_1_8B40(s32 arg0) +{ + fn_1_2055C(arg0); +} + +s32 fn_1_8B68(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + s32 var_r27; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r30 = 0; + var_r23 = 0; + var_r28 = 0; + if (lbl_1_bss_A8[0] == 5) { + var_r28 = 3; + } + var_r27 = fn_1_1434(0, 0, 0); + HuAudFXPlay(lbl_1_data_0[var_r28][2]); + while (1) { + fn_1_4D8(); + fn_1_4D8(); + fn_1_5818(lbl_1_bss_33AC[var_r28].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r27, 0x1A0005, -1, -1); + fn_1_5818(lbl_1_bss_33AC[var_r28].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0021); + fn_1_208F4(); + lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_1FF4C; + var_r25 = 0x63; + var_r23 = 0; + while (1) { + fn_1_4D8(); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_70[3] == 0) { + var_r30++; + } + } + if (var_r25 != var_r30) { + var_r25 = var_r30; + fn_1_1968(var_r27, var_r30 + 0x1A001B, -1, -0x3E7); + } + if (lbl_1_bss_35BC[0].unk_1C[0] != 0) { + continue; + } + if (HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_A) { + var_r29 = 1; + HuAudFXPlay(2); + lbl_1_bss_35BC[0].unk_04 = NULL; + fn_1_4B0(2); + var_r26 = 0; + var_r30 = var_r26; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 == 0) { + var_r26++; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r30 < var_r26) { + if (HuPadStatGet(var_r31) != -1) { + var_r30++; + lbl_1_bss_3114[var_r31].unk_60 = 0; + } + else { + lbl_1_bss_3114[var_r31].unk_60 = 1; + } + } + } + break; + } + else if (HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B) { + var_r29 = 0; + HuAudFXPlay(3); + break; + } + } + fn_1_20A24(); + lbl_1_bss_35BC[0].unk_04 = NULL; + fn_1_2318(0); + if (var_r29 == 0) { + fn_1_59A0(lbl_1_bss_33AC[var_r28].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r27, 0x1A0003, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[var_r28].unk_00, 1, 1, 0xF, 1); + var_r24 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r24 == 0) { + fn_1_16AC(var_r27); + fn_1_C174(0); + } + } + else if (var_r29 == 1) { + break; + } + } + fn_1_16AC(var_r27); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 == 0) { + var_r30++; + } + } + if (var_r30 == 0) { + var_r29 = 2; + } + else { + var_r29 = 1; + } + return var_r29; +} + +void fn_1_8F44(void) +{ + s32 var_r31; + + fn_1_207BC(); + fn_1_15950(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_68 = var_r31; + } +} + +void fn_1_8F98(void) +{ + fn_1_14CE0(); +} + +s32 fn_1_8FB8(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = 0; + var_r29 = 0; + if (lbl_1_bss_A8[0] == 5) { + var_r29 = 3; + } + fn_1_15950(); + var_r27 = fn_1_1434(0, 0, 0); + HuWinPushKeySet(var_r27, 0x300); + HuAudFXPlay(lbl_1_data_0[var_r29][2]); + fn_1_4D8(); + fn_1_5818(lbl_1_bss_33AC[var_r29].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r27, 0x1A0009, -1, -1); + fn_1_5818(lbl_1_bss_33AC[var_r29].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0020); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 == 0) { + lbl_1_bss_3114[var_r31].unk_04 = (MentDllUnkFunc)fn_1_15CB4; + } + } + while (1) { + fn_1_4D8(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if ((lbl_1_bss_3114[var_r31].unk_60 == 0) && (HuPadBtnDown[lbl_1_bss_3114[var_r31].unk_6C] & PAD_BUTTON_A)) { + var_r26 = 1; + } + } + if ((lbl_1_bss_3114[0].unk_70[0] == 0) && (HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B)) { + HuAudFXPlay(3); + var_r30 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if ((lbl_1_bss_3114[var_r31].unk_60 == 0) && (lbl_1_bss_3114[var_r31].unk_70[0] != 1)) { + break; + } + } + if (var_r31 == 4) { + var_r30 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_04 = NULL; + } + fn_1_2318(0); + fn_1_16AC(var_r27); + if (var_r30 == 2) { + var_r28 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 != 0) { + lbl_1_bss_3114[var_r31].unk_68 = 0; + var_r28++; + } + } + if (var_r28 == 0) { + var_r30 = 3; + } + else { + var_r30 = 2; + } + } + else { + var_r30 = 0; + } + return var_r30; +} + +s32 fn_1_92CC(void) +{ + s32 sp8; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r26 = -1; + var_r24 = -1; + sp8 = 0; + var_r25 = 0; + if (lbl_1_bss_A8[0] == 5) { + var_r25 = 3; + } + var_r27 = fn_1_1434(0, 0, 0); + HuAudFXPlay(lbl_1_data_0[var_r25][3]); + var_r28 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 != 0) { + var_r28++; + } + } + HuWinInsertMesSet(var_r27, var_r28 + 0x1A0023, 1); + fn_1_59A0(lbl_1_bss_33AC[var_r25].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r27, 0x1A0007, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[var_r25].unk_00, 1, 1, 0xF, 1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 != 0) { + lbl_1_bss_3114[var_r31].unk_68 = lbl_1_bss_3114[var_r31].unk_64 = 0; + } + } + while (1) { + fn_1_4D8(); + fn_1_2154(0x1A0020); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if ((lbl_1_bss_3114[var_r31].unk_60 != 0) && (lbl_1_bss_3114[var_r31].unk_70[0] == 0)) { + var_r30 = var_r31; + lbl_1_bss_3114[var_r31].unk_70[1] = var_r26; + fn_1_173FC(&lbl_1_bss_3114[var_r31]); + lbl_1_bss_3114[var_r31].unk_04 = (MentDllUnkFunc)fn_1_16B68; + break; + } + } + while (1) { + fn_1_4D8(); + if ((var_r24 != lbl_1_bss_3114[var_r30].unk_68) && (lbl_1_bss_3114[var_r30].unk_70[0] == 0)) { + var_r24 = lbl_1_bss_3114[var_r30].unk_68; + fn_1_1968(var_r27, lbl_1_bss_3114[var_r30].unk_68 + 0x1B0008, -1, -0x3E7); + } + if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B) && (lbl_1_bss_3114[var_r30].unk_70[0] == 0)) { + HuAudFXPlay(3); + if (var_r26 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_3114[var_r30].unk_70[0] == 1) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_70[0] == 0) { + lbl_1_bss_3114[var_r31].unk_68 = 0; + } + } + lbl_1_bss_3114[var_r30].unk_04 = NULL; + fn_1_1968(var_r27, 0x1A0022, -1, -0x3E7); + fn_1_2154(0x1A0023); + var_r29 = fn_1_1648C(&lbl_1_bss_3114[var_r30]); + if (var_r29 == 1) { + lbl_1_bss_3114[var_r30].unk_70[2] = 1; + var_r29 = 4; + var_r26 = var_r30; + } + else { + lbl_1_bss_3114[var_r30].unk_70[2] = 0; + var_r29 = 4; + lbl_1_bss_3114[var_r30].unk_70[0] = 0; + fn_1_17914(&lbl_1_bss_3114[var_r30]); + fn_1_173FC(&lbl_1_bss_3114[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_70[0] == 0) { + break; + } + } + if (var_r31 == 4) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_173FC(&lbl_1_bss_3114[var_r30]); + fn_1_17914(&lbl_1_bss_3114[var_r30]); + fn_1_173FC(&lbl_1_bss_3114[lbl_1_bss_3114[var_r30].unk_70[1]]); + var_r26 = lbl_1_bss_3114[lbl_1_bss_3114[var_r30].unk_70[1]].unk_70[1]; + lbl_1_bss_3114[lbl_1_bss_3114[var_r30].unk_70[1]].unk_70[0] = 0; + } + else if (var_r29 == 4) { + } + else if (var_r29 == 0) { + fn_1_17914(&lbl_1_bss_3114[var_r30]); + break; + } + else { + break; + } + } + var_r24 = -1; + } + fn_1_2318(0); + fn_1_16AC(var_r27); + if (var_r29 == 0) { + var_r28 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 == 0) { + var_r28++; + } + } + if (var_r28 != 0) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + } + return var_r29; +} + +void fn_1_98E4(void) +{ + s32 var_r31; + s32 var_r30; + + fn_1_15098(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (lbl_1_bss_3114[var_r31].unk_60 == 1) { + lbl_1_bss_3114[var_r31].unk_70[var_r30] = 0; + lbl_1_bss_3114[var_r31].unk_80[var_r30] = 0; + fn_1_17914(&lbl_1_bss_3114[var_r31]); + } + } + } +} + +void fn_1_99AC(void) +{ + fn_1_1811C(); +} + +s32 fn_1_99CC(void) +{ + s32 var_r26; + s32 temp_r27; + s32 var_r28; + s32 var_r29; + s32 var_r30; + s32 i; + + s32 sp8[6] = { + 0x00000001, + 0x00000002, + 0x00000000, + 0x00000003, + 0x00000004, + 0x00000005, + }; + + var_r30 = 2; + temp_r27 = fn_1_1434(0, 0, 0); + while (1) { + fn_1_4D8(); + var_r28 = 0; + lbl_1_bss_33AC->unk_34 = 1; + HuAudFXPlay(lbl_1_data_0[0][3]); + fn_1_59A0(lbl_1_bss_33AC[sp8[var_r30]].unk_00, 1, 4, 0xF, 1); + fn_1_1968(temp_r27, 0x1A0008U, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[sp8[var_r30]].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0020U); + + for (i = 0; i < 6; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + lbl_1_bss_33AC[i].unk_04 = (void (*)(omObjData *, ...))fn_1_127FC; + } + + lbl_1_bss_33AC[sp8[var_r30]].unk_08 = 1; + lbl_1_bss_35BC->unk_04 = (void (*)(omObjData *, ...))fn_1_18F74; + while (1) { + fn_1_4D8(); + for (i = 0; i < 6; i++) { + if (lbl_1_bss_33AC[i].unk_08 != 2) { + break; + } + } + + if (i == 6 && var_r28 >= 0x15) { + if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & 0x200)) { + HuAudFXPlay(3); + var_r29 = 0; + break; + } + else if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & 0x100)) { + HuAudFXPlay(2); + var_r29 = 2; + break; + } + else { + if ((HuPadStkX[lbl_1_bss_3114->unk_6C] >= 50) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 2))) { + if (lbl_1_bss_A8[4] == 1) { + if (++var_r30 > 5) { + var_r30 = 5; + } + else { + var_r28 = 0; + } + } + else { + if (++var_r30 > 4) { + var_r30 = 4; + } + else { + var_r28 = 0; + } + } + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] <= -50) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 1))) { + if (--var_r30 < 0) { + var_r30 = 0; + } + else { + var_r28 = 0; + } + } + } + } + if (var_r28 == 0) { + if (var_r30 != 5) { + fn_1_2808(fn_1_14058); + } + else { + fn_1_2808(fn_1_14148); + } + for (i = 0; i < 6; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + } + lbl_1_bss_33AC[sp8[var_r30]].unk_08 = 1; + } + if (var_r28++ == 0x14) { + var_r28 = 0x15; + fn_1_18A54(sp8[var_r30]); + fn_1_1968(temp_r27, sp8[var_r30] + 0x1B0001, -1, -999); + if ((s32)sp8[var_r30] != 0) { + HuAudFXPlay(lbl_1_data_0[sp8[var_r30]][0]); + } + else { + HuAudFXPlay(lbl_1_data_0[sp8[var_r30]][2]); + } + } + } + fn_1_2318(0); + if (var_r29 == 0) { + fn_1_2808(fn_1_14058); + if (var_r30 != 2) { + var_r30 = 2; + for (i = 0; i < 6; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + } + + lbl_1_bss_33AC[sp8[var_r30]].unk_08 = 1; + } + fn_1_18DCC(); + fn_1_4B0(0x1E); + } + else if (var_r29 == 1) { + fn_1_2808(fn_1_14058); + if (var_r30 != 2) { + var_r30 = 2; + for (i = 0; i < 6; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + } + lbl_1_bss_33AC[sp8[var_r30]].unk_08 = 1; + } + fn_1_18DCC(); + fn_1_4B0(0x1E); + fn_1_59A0(lbl_1_bss_33AC->unk_00, 1, 4, 0xF, 1); + fn_1_1968(temp_r27, 0x1A0003U, -1, 5); + fn_1_59A0(lbl_1_bss_33AC->unk_00, 1, 1, 0xF, 1); + var_r26 = fn_1_1DD8(0x1E0035U, 3, 0); + if (var_r26 == 0) { + fn_1_16AC(temp_r27); + fn_1_C174(0); + } + continue; + } + else if (var_r29 == 2) { + for (i = 0; i < 6; i++) { + lbl_1_bss_33AC[i].unk_04 = NULL; + } + lbl_1_bss_A8[2] = sp8[var_r30]; + } + else { + continue; + } + break; + } + + fn_1_16AC(temp_r27); + + if (var_r29 == 0) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_3114[i].unk_60 != 0) { + break; + } + } + if (i != 4) { + var_r29 = 2; + } + else { + var_r29 = 1; + } + } + else { + var_r29 = 3; + } + return var_r29; +} + +void fn_1_A0A4(void) +{ + fn_1_1850C(); +} + +void fn_1_A0C4(void) +{ + s32 var_r31; + + var_r31 = lbl_1_bss_A8[2]; + fn_1_1850C(); + HuAudFXPlay(lbl_1_data_0[var_r31][3]); + if (var_r31 != 5) { + Vec sp2C = { -350.0f, 0.0f, 800.0f }; + fn_1_2808(fn_1_14238); + fn_1_5818(lbl_1_bss_33AC[var_r31].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[var_r31].unk_00, 1, sp2C, 30.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[var_r31].unk_00, 1, 1, 0xF, 1); + Hu3DModelAttrReset(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 2, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[0].unk_00, 2, 0); + } + else { + Vec sp20 = { 850.0f, 0.0f, 800.0f }; + fn_1_2808(fn_1_14328); + fn_1_5818(lbl_1_bss_33AC[var_r31].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[var_r31].unk_00, 1, sp20, 30.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[var_r31].unk_00, 1, 1, 0xF, 1); + Hu3DModelAttrReset(lbl_1_bss_35BC[1].unk_00->model[2], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[1].unk_00, 2, 2, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[1].unk_00, 2, 0); + } +} + +void fn_1_A39C(void) +{ + fn_1_1C754(); +} + +s32 fn_1_A3BC(void) +{ + char sp8[10]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r27 = -1; + var_r26 = -1; + var_r30 = lbl_1_bss_A8[2]; + var_r31 = fn_1_1434(0, 0, 0); + if (var_r30 == 0) { + HuAudFXPlay(lbl_1_data_0[var_r30][2]); + } + else { + HuAudFXPlay(lbl_1_data_0[var_r30][0]); + } +loop_3: + fn_1_4D8(); + var_r27 = var_r26 = -1; + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, var_r30 + 0x1A000A, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0021); + lbl_1_bss_35BC[0].unk_08[1] = 0; + fn_1_1C554(); + lbl_1_bss_35BC[1].unk_04 = (MentDllUnkFunc)fn_1_19C98; +loop_4: + fn_1_4D8(); + if ((var_r27 != lbl_1_bss_35BC[1].unk_08[0]) || var_r26 != lbl_1_bss_35BC[1].unk_1C[lbl_1_bss_35BC[1].unk_08[0]]) { + var_r27 = lbl_1_bss_35BC[1].unk_08[0]; + var_r26 = lbl_1_bss_35BC[1].unk_1C[lbl_1_bss_35BC[1].unk_08[0]]; + switch (lbl_1_bss_35BC[1].unk_08[0]) { + case 0: + switch (lbl_1_bss_35BC[1].unk_1C[0]) { + case 0: + fn_1_1968(var_r31, 0x1B0015, -1, -0x3E7); + break; + case 1: + HuWinInsertMesSet(var_r31, 0x1B001E, 0); + HuWinInsertMesSet(var_r31, 0x1B001F, 1); + HuWinInsertMesSet(var_r31, 0x1B0020, 2); + fn_1_1968(var_r31, 0x1B0016, -1, -0x3E7); + break; + case 2: + HuWinInsertMesSet(var_r31, 0x1B001F, 0); + HuWinInsertMesSet(var_r31, 0x1B001E, 1); + HuWinInsertMesSet(var_r31, 0x1B0020, 2); + fn_1_1968(var_r31, 0x1B0016, -1, -0x3E7); + break; + case 3: + HuWinInsertMesSet(var_r31, 0x1B0020, 0); + HuWinInsertMesSet(var_r31, 0x1B001E, 1); + HuWinInsertMesSet(var_r31, 0x1B001F, 2); + fn_1_1968(var_r31, 0x1B0016, -1, -0x3E7); + break; + } + break; + case 1: + sprintf(sp8, "%d", lbl_1_bss_35BC[1].unk_1C[1]); + HuWinInsertMesSet(var_r31, MAKE_MESSID_PTR(sp8), 0); + fn_1_1968(var_r31, 0x1B0017, -1, -0x3E7); + break; + case 2: + fn_1_1968(var_r31, lbl_1_bss_35BC[1].unk_1C[2] + 0x1B0018, -1, -0x3E7); + break; + case 3: + fn_1_1968(var_r31, lbl_1_bss_35BC[1].unk_1C[3] + 0x1B001B, -1, -0x3E7); + break; + case 4: + HuWinInsertMesSet(var_r31, lbl_1_bss_3114[lbl_1_bss_35BC[1].unk_1C[4]].unk_68, 0); + fn_1_1968(var_r31, 0x1B001D, -1, -0x3E7); + break; + } + } + if (lbl_1_bss_35BC[0].unk_08[3] != 0) { + goto loop_4; + } + if (lbl_1_bss_35BC[0].unk_08[1] == -1) { + fn_1_1C674(); + var_r29 = 0; + } + else if (lbl_1_bss_35BC[0].unk_08[1] == 1) { + fn_1_1C674(); + var_r29 = 2; + } + else { + goto loop_4; + } + fn_1_2318(0); + lbl_1_bss_35BC[1].unk_04 = NULL; + fn_1_1C674(); + if (var_r29 == 0) { + var_r29 = 1; + } + else if (var_r29 == 1) { + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1A0003, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 1, 0xF, 1); + var_r28 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r28 == 0) { + fn_1_16AC(var_r31); + fn_1_C174(0); + } + goto loop_3; + } + else if (var_r29 == 2) { + HuAudFXPlay(lbl_1_data_0[var_r30][2]); + fn_1_1968(var_r31, 0x1B0000, -1, 5); + var_r28 = fn_1_1A5C(0x1E0035, 3, 0); + if (var_r28 == 0) { + var_r29 = 0x63; + } + else { + fn_1_1968(var_r31, 0x1B0007, -1, 5); + var_r28 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r28 == 0) { + var_r29 = 0; + } + else { + goto loop_3; + } + } + } + else { + goto loop_3; + } + fn_1_16AC(var_r31); + return var_r29; +} + +void fn_1_A990(void) +{ + fn_1_1C990(); +} + +void fn_1_A9B0(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = lbl_1_bss_A8[2]; + { + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + if (lbl_1_bss_A8[2] == 5) { + var_r31 = 1; + } + else { + var_r31 = 0; + } + for (var_r29 = 0; var_r29 < 6; var_r29++) { + Hu3DModelAttrSet(lbl_1_bss_33AC[var_r29].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r30].unk_00->model[1], HU3D_ATTR_DISPOFF); + fn_1_11908(lbl_1_bss_35BC[var_r31].unk_00, lbl_1_bss_A8[2]); + Hu3DModelAttrReset(lbl_1_bss_35BC[var_r31].unk_00->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_35BC[var_r31].unk_00->model[5], HU3D_ATTR_DISPOFF); + lbl_1_bss_35BC[var_r31].unk_04 = (MentDllUnkFunc)fn_1_1184C; + if (var_r30 == 5) { + sp14.x += 1200.0f; + } + fn_1_5818(lbl_1_bss_33AC[var_r30].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[var_r30].unk_00, 1, sp14, 5.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[var_r30].unk_00, 1, 1, 0xF, 1); + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + fn_1_4B0(0x1E); + fn_1_5818(lbl_1_bss_35BC[var_r31].unk_00, 2, 3, 0, 0); + var_r28 = fn_1_1434(0, 0, 0); + HuAudFXPlay(lbl_1_data_0[var_r30][0]); + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 5, 0xF, 1); + fn_1_1968(var_r28, var_r30 + 0x1A0010, -1, -1); + fn_1_16AC(var_r28); + HuAudSeqFadeOut(lbl_1_bss_14[0], 0xBB8); + fn_1_5CDC(lbl_1_bss_35BC[var_r31].unk_00, 2, 0); + Hu3DModelAttrSet(lbl_1_bss_35BC[var_r31].unk_00->model[2], HU3D_ATTR_DISPOFF); + fn_1_2808(fn_1_14418); + fn_1_4B0(0xA); + HuAudFXPlay(GWPlayerCfg->character + 0x75); + HuAudFXPlay(GWPlayerCfg[1].character + 0x75); + HuAudFXPlay(GWPlayerCfg[2].character + 0x75); + HuAudFXPlay(GWPlayerCfg[3].character + 0x75); + fn_1_4B0(0x8C); + } +} + +void fn_1_AD78(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + s32 sp20[6] = { 1, 2, 0, 3, 4, 5 }; + var_r30 = lbl_1_bss_A8[2]; + var_r29 = lbl_1_bss_A8[2]; + if (var_r30 != 5) { + var_r28 = 0; + } + else { + var_r28 = 1; + } + fn_1_5818(lbl_1_bss_35BC[var_r28].unk_00, 2, 3, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[var_r28].unk_00, 2, 0); + Hu3DModelAttrSet(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_35BC[1].unk_00->model[2], HU3D_ATTR_DISPOFF); + if (var_r30 != 5) { + fn_1_2808(fn_1_146D0); + } + else { + fn_1_2808(fn_1_147C0); + } + { + Vec sp14 = { 0.0f, 0.0f, 560.0f }; + sp14.x = lbl_1_data_D8[var_r30].x; + fn_1_5818(lbl_1_bss_33AC[var_r30].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[var_r30].unk_00, 1, sp14, lbl_1_data_120[var_r30], 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[var_r30].unk_00, 1, 1, 0xF, 1); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + lbl_1_bss_33AC[var_r31].unk_04 = (MentDllUnkFunc)fn_1_127FC; + } + lbl_1_bss_33AC[sp20[var_r29]].unk_08 = 1; + fn_1_2808(fn_1_14058); + if (var_r29 != 2) { + var_r29 = 2; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + lbl_1_bss_33AC[var_r31].unk_08 = 0; + } + lbl_1_bss_33AC[sp20[var_r29]].unk_08 = 1; + } + fn_1_18DCC(); + fn_1_4B0(0x1E); + } +} + +void fn_1_B084(void) +{ + s32 sp28; + s32 sp24; + s32 sp20; + s32 sp1C; + s32 sp18; + float sp14; + s32 sp10; + s32 spC; + s32 sp8; + s32 var_r31; + MentDllUnkBss3114Struct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + MentDllUnkBss3114Struct *var_r26; + MentDllUnkBss33ACStruct *var_r25; + MentDllUnkBss35BCStruct *var_r24; + + var_r28 = lbl_1_bss_A8[2]; + if (var_r28 != 5) { + var_r27 = 0; + } + else { + var_r27 = 1; + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (var_r31 != var_r28) { + Hu3DModelAttrSet(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + } + fn_1_5818(lbl_1_bss_35BC[var_r27].unk_00, 2, 3, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[var_r27].unk_00, 2, 0); + if (var_r28 != 5) { + fn_1_2808(fn_1_146D0); + } + else { + fn_1_2808(fn_1_147C0); + } + { + Vec sp2C = { 0.0f, 0.0f, 460.0f }; + + if (var_r28 == 5) { + sp2C.x = 1200.0f; + } + fn_1_5818(lbl_1_bss_33AC[var_r28].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[var_r28].unk_00, 1, sp2C, 0.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[var_r28].unk_00, 1, 1, 0xF, 1); + fn_1_5818(lbl_1_bss_35BC[var_r27].unk_00, 2, 2, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[var_r27].unk_00, 2, 0); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 2); + Hu3DModelAttrReset(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + if (var_r28 == 5) { + fn_1_2808(fn_1_14058); + } + fn_1_4B0(0x1E); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_3114[var_r31]; + var_r26 = &lbl_1_bss_3114[var_r31]; + var_r30->unk_58 = var_r31; + var_r30->unk_5C = 0; + var_r30->unk_60 = var_r30->unk_58; + if (var_r30->unk_60 > 0) { + var_r30->unk_60 = 1; + } + var_r30->unk_64 = 0; + var_r30->unk_68 = var_r30->unk_58; + var_r30->unk_6C = var_r30->unk_58; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r30->unk_70[0] = var_r30->unk_70[1] = 0; + } + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r26->unk_08 = var_r26->unk_0C = 0; + } + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + var_r25 = &lbl_1_bss_33AC[var_r31]; + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r25->unk_08 = var_r25->unk_0C = 0; + } + Hu3DModelPosSet(lbl_1_bss_33AC[var_r31].unk_00->model[1], lbl_1_data_D8[var_r31].x, lbl_1_data_D8[var_r31].y, lbl_1_data_D8[var_r31].z); + Hu3DModelRotSet(lbl_1_bss_33AC[var_r31].unk_00->model[1], 0.0f, lbl_1_data_120[var_r31], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r24 = &lbl_1_bss_35BC[var_r31]; + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r24->unk_08[0] = var_r24->unk_08[1] = 0; + } + Hu3DModelAttrSet(lbl_1_bss_35BC[1].unk_00->model[2], HU3D_ATTR_DISPOFF); + } + fn_1_14BA8(); + fn_1_179DC(); + fn_1_1872C(); + fn_1_190E8(); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[0].unk_00, 2, 0); + Hu3DModelAttrSet(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + { + Vec sp20 = { 0.0f, 0.0f, 560.0f }; + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 2, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[0].unk_00, 1, sp20, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + } + } +} + +void fn_1_B654(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + var_r30 = 0xA; + var_r29 = 0; + if (lbl_1_bss_A8[1] == 0) { + fn_1_81F0(); + fn_1_83CC(); + fn_1_85C8(); + fn_1_88A4(); + } + else { + fn_1_824C(); + fn_1_88A4(); + } + do { + fn_1_4D8(); + switch (var_r30) { + case 10: + var_r30 = 0; + fn_1_2055C(var_r29); + var_r29 = fn_1_8B68(); + fn_1_8F44(); + break; + case 0: + var_r30 = 1; + fn_1_14CE0(); + while (1) { + fn_1_4D8(); + switch (var_r29) { + case 1: + var_r29 = fn_1_8FB8(); + break; + case 2: + var_r29 = fn_1_92CC(); + break; + } + if (var_r29 == 0) { + var_r30 = 0xA; + break; + } + else if (var_r29 == 3) { + break; + } + } + fn_1_98E4(); + break; + case 1: + var_r30 = 2; + fn_1_1811C(); + var_r29 = fn_1_99CC(); + if (var_r29 != 3) { + fn_1_1850C(); + var_r30 = 0; + } + else { + fn_1_A0C4(); + } + break; + case 2: + fn_1_1C754(); + var_r30 = fn_1_A3BC(); + fn_1_1C990(); + switch (var_r30) { + case 0: + var_r30 = 0xA; + var_r29 = 0; + fn_1_B084(); + break; + case 1: + var_r30 = 1; + fn_1_AD78(); + break; + } + break; + } + } while (var_r30 != 0x63); + if (lbl_1_bss_35BC[1].unk_1C[0] == 0) { + var_r21 = 0; + } + else { + var_r21 = 1; + } + if (lbl_1_bss_35BC[1].unk_1C[3] == 0) { + var_r20 = 1; + } + else { + var_r20 = 0; + } + switch (lbl_1_bss_35BC[1].unk_1C[2]) { + case 0: + var_r22 = 0; + break; + case 1: + var_r22 = 1; + break; + case 2: + var_r22 = 2; + break; + default: + var_r22 = 0; + break; + } + { + s32 var_r19 = lbl_1_bss_35BC[1].unk_1C[1]; + s32 var_r18 = lbl_1_bss_35BC[1].unk_08[1]; + s32 var_r17 = lbl_1_bss_35BC[1].unk_08[2]; + s32 sp18 = lbl_1_bss_35BC[1].unk_08[3]; + s32 sp14 = lbl_1_bss_35BC[1].unk_08[4]; + BoardPartyConfigSet(var_r21, var_r20, var_r22, var_r19, var_r18, var_r17, sp18, sp14); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCfg[var_r31].character = lbl_1_bss_3114[var_r31].unk_68; + GWPlayerCfg[var_r31].pad_idx = lbl_1_bss_3114[var_r31].unk_6C; + GWPlayerCfg[var_r31].diff = lbl_1_bss_3114[var_r31].unk_64; + GWPlayerCfg[var_r31].group = 0; + GWPlayerCfg[var_r31].iscom = lbl_1_bss_3114[var_r31].unk_60; + } + if (var_r21 == 1) { + switch (lbl_1_bss_35BC[1].unk_1C[0]) { + case 1: + GWPlayerCfg[2].group = GWPlayerCfg[3].group = 1; + break; + case 2: + GWPlayerCfg[1].group = GWPlayerCfg[3].group = 1; + break; + case 3: + GWPlayerCfg[1].group = GWPlayerCfg[2].group = 1; + break; + default: + GWPlayerCfg[2].group = GWPlayerCfg[3].group = 1; + break; + } + } + BoardSaveInit(lbl_1_bss_A8[2]); + fn_1_A9B0(); + if (lbl_1_bss_A8[2] != 5) { + WipeColorSet(0xFF, 0xFF, 0xFF); + } + else { + WipeColorSet(0, 0, 0); + } + fn_1_C174(3); +} + +void fn_1_C174(s32 arg0) +{ + s32 spC[7] = { 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F }; + if (arg0 == 0 || arg0 == 1 || arg0 == 2) { + fn_1_4B0(0x3C); + HuAudSeqFadeOut(lbl_1_bss_14[0], 0x3E8); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + + if (arg0 != 0) { + if (arg0 == 1 || arg0 == 3) { + omOvlHisData *sp8 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY3, 0, 0); + } + do { + fn_1_4D8(); + } while (lbl_1_bss_D8 != 1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudSeqAllFadeOut(0x3E8); + HuAudSStreamAllFadeOut(0x3E8); + } + + switch (arg0) { + case 0: + omOvlReturnEx(1, 1); + break; + case 2: + omOvlCallEx(spC[6], 1, 0, 0); + break; + case 1: + case 3: + omOvlCallEx(spC[GWSystem.board], 1, 0, 0); + break; + } + while (1) { + fn_1_4D8(); + } +} + +s32 fn_1_C354(s32 arg0) +{ + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2)) != 0) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3)) != 0) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4)) != 0) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5)) != 0) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6)) != 0) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7)) != 0) { + return 1; + } + return 0; +} + +s32 fn_1_C440(void) +{ + if ((_CheckFlag(FLAG_ID_MAKE(0, 2)) != 0) && (_CheckFlag(FLAG_ID_MAKE(0, 3)) != 0) && (_CheckFlag(FLAG_ID_MAKE(0, 4)) != 0) + && (_CheckFlag(FLAG_ID_MAKE(0, 5)) != 0) && (_CheckFlag(FLAG_ID_MAKE(0, 6)) != 0)) { + return 1; + } + return 0; +} + +void fn_1_C4B8(void) +{ + s32 var_r31; + s32 var_r28; + + var_r31 = fn_1_1434(0, 0, 0); + lbl_1_bss_14[0] = HuAudSeqPlay(0x30); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E005C, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + saveExecF = 0; + if (GWGameStat.story_continue != 1) { + return; + } + var_r31 = fn_1_1434(0, 0, 0); + while (1) { + fn_1_4D8(); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E0001, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r28 = fn_1_1A5C(0x1E0035, 3, 0); + if (var_r28 == -1) { + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E0003, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r28 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r28 == 0) { + fn_1_16AC(var_r31); + fn_1_C174(0); + } + continue; + } + if (var_r28 == 0) { + fn_1_16AC(var_r31); + SLLoadBoardStory(); + if (_CheckFlag(FLAG_ID_MAKE(0, 7)) != 0 && _CheckFlag(FLAG_ID_MAKE(0, 9)) != 0) { + OSReport("########## Next to Ending\n"); + fn_1_E654(1); + omOvlGotoEx(OVL_MSTORY2, 1, 4, 0); + } + else { + if (_CheckFlag(0x10000) != 0) { + OSReport("########### Next to Turn\n"); + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + fn_1_4D8(); + fn_1_E71C(0); + } + else { + if (fn_1_C354(GWSystem.board) != 0) { + if (_CheckFlag(FLAG_ID_MAKE(0, 9)) != 0) { + if (fn_1_C440() != 0) { + OSReport("########## Next to MapSelect KoopaEvent\n"); + fn_1_E654(1); + omOvlGotoEx(OVL_MSTORY2, 1, 0, 0); + } + else { + OSReport("########## Next to MapSelect NormalEvent\n"); + fn_1_E654(1); + omOvlGotoEx(OVL_MENT, 1, 0xA, 0); + } + } + else if (GWSystem.board == 5) { + OSReport("########## Next to BoardClear KoopaEvent\n"); + fn_1_E654(0); + omOvlGotoEx(OVL_MSTORY2, 1, 1, 0); + } + else { + OSReport("########## Next to BoardClear NormalEvent\n"); + fn_1_E654(0); + omOvlGotoEx(OVL_MSTORY, 1, 0, 0); + } + } + else { + if (_CheckFlag(FLAG_ID_MAKE(0, 9)) != 0) { + if (GWSystem.board == 5) { + OSReport("########## Next to BoardMiss KoopaEvent\n"); + fn_1_E654(0); + omOvlGotoEx(OVL_MSTORY2, 1, 2, 0); + } + else { + OSReport("########### Next to BoardMiss NormalEvent\n"); + fn_1_E654(0); + omOvlGotoEx(OVL_MSTORY, 1, 1, 0); + } + } + else { + OSReport("########### Next to Turn\n"); + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + fn_1_4D8(); + fn_1_E71C(0); + } + } + } + } + while (1) { + fn_1_4D8(); + } + } + if (var_r28 == 1) { + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E0002, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + break; + } + } +} + +void fn_1_CAE4(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r30, 0x1A0004, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r29 = fn_1_1DD8(0x1E0035, 3, 0); + fn_1_16AC(var_r30); + if (var_r29 == 0) { + s32 spC[4] = { 3, 0, 2, 4 }; + _SetFlag(0x1000B); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCfg[var_r31].character = spC[var_r31]; + GWPlayerCfg[var_r31].pad_idx = var_r31; + GWPlayerCfg[var_r31].diff = 0; + GWPlayerCfg[var_r31].group = 0; + GWPlayerCfg[var_r31].iscom = 1; + OSReport("ID-%d CHR-%d PAD-%d DIF-%d GRP-%d COM-%d\n", var_r31, GWPlayerCfg[var_r31].character, GWPlayerCfg[var_r31].pad_idx, + GWPlayerCfg[var_r31].diff, GWPlayerCfg[var_r31].group, GWPlayerCfg[var_r31].iscom); + } + BoardSaveInit(6); + GWSystem.max_turn = 0x14; + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + { + omOvlHisData *sp8 = omOvlHisGet(0); + } + omOvlHisChg(0, OVL_MENT, 1, 1); + fn_1_C174(2); + } + else { + _ClearFlag(0x1000B); + } +} + +void fn_1_CD6C(void) +{ + fn_1_1DFB8(); +} + +s32 fn_1_CD8C(void) +{ + s32 sp8; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + sp8 = 0; + fn_1_1CF68(); + var_r31 = fn_1_1434(0, 0, 0); + while (1) { + fn_1_4D8(); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E005E, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0020); + lbl_1_bss_3114->unk_04 = (MentDllUnkFunc)fn_1_1E404; + while (1) { + if (lbl_1_bss_3114->unk_70[0] == 1) { + var_r30 = 1; + break; + } + else if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B) != 0) { + HuAudFXPlay(3); + lbl_1_bss_3114->unk_04 = NULL; + var_r30 = 0; + break; + } + else { + fn_1_4D8(); + } + } + lbl_1_bss_3114->unk_04 = NULL; + fn_1_2318(0); + if (var_r30 != 0) { + break; + } + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E0005, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r29 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r29 == 0) { + fn_1_16AC(var_r31); + fn_1_C174(0); + } + } + fn_1_16AC(var_r31); + fn_1_4B0(0x1E); + return var_r30; +} + +s32 fn_1_CF8C(void) +{ + s32 sp8; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + sp8 = 0; + var_r28 = -1; + var_r27 = -1; + var_r31 = fn_1_1434(0, 0, 0); + while (1) { + fn_1_4D8(); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E0009, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0021); + lbl_1_bss_35BC[1].unk_08[1] = 0; + fn_1_1DED8(); + lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_1E8A4; + while (1) { + fn_1_4D8(); + if ((var_r28 != lbl_1_bss_35BC[0].unk_08[0]) || (var_r27 != lbl_1_bss_35BC[0].unk_1C[lbl_1_bss_35BC[0].unk_08[0] - 1])) { + var_r28 = lbl_1_bss_35BC[0].unk_08[0]; + var_r27 = lbl_1_bss_35BC[0].unk_1C[lbl_1_bss_35BC[0].unk_08[0] - 1]; + switch (lbl_1_bss_35BC[0].unk_08[0]) { + case 1: + HuWinInsertMesSet(var_r31, lbl_1_bss_35BC[0].unk_1C[0] + 0x1B0028, 0); + fn_1_1968(var_r31, 0x1B0027, -1, -0x3E7); + break; + case 2: + fn_1_1968(var_r31, lbl_1_bss_35BC[0].unk_1C[1] + 0x1B0018, -1, -0x3E7); + break; + } + } + if (lbl_1_bss_35BC[0].unk_08[3] != 0) { + continue; + } + if (lbl_1_bss_35BC[1].unk_08[1] == 1) { + var_r30 = 2; + break; + } + else if (lbl_1_bss_35BC[1].unk_08[1] == -1) { + var_r30 = 0; + break; + } + } + fn_1_1DF48(); + lbl_1_bss_35BC[0].unk_04 = NULL; + fn_1_2318(0); + if (var_r30 == 1) { + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x1E0005, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + var_r29 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r29 == 0) { + fn_1_16AC(var_r31); + fn_1_C174(0); + } + } + else if (var_r30 == 2) { + fn_1_1968(var_r31, 0x1B0000, -1, 5); + var_r29 = fn_1_1A5C(0x1E0035, 3, 0); + if (var_r29 == 0) { + break; + } + fn_1_1968(var_r31, 0x1B0007, -1, 5); + var_r29 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r29 == 0) { + fn_1_1CF68(); + var_r30 = 0; + break; + } + else { + var_r28 = -1; + var_r27 = -1; + } + } + else { + var_r30 = 0; + break; + } + } + lbl_1_bss_E0 = lbl_1_bss_35BC[0].unk_1C[1]; + fn_1_16AC(var_r31); + return var_r30; +} + +void fn_1_D310(void) +{ + fn_1_1E1B4(); +} + +void fn_1_D330(void) +{ + fn_1_1F868(); +} + +void fn_1_D350(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + + fn_1_4B0(0x3C); + var_r29 = fn_1_1434(0, 0, 0); + lbl_1_bss_3104->work[0] = 1; + var_r31 = -1; + var_r31 = HuAudFXPlay(0x43); + HuAudFXPanning(var_r31, 0x20); + var_r31 = HuAudFXPlay(0x40); + HuAudFXPanning(var_r31, 0x30); + var_r31 = HuAudFXPlay(0x37); + HuAudFXPanning(var_r31, 0x40); + var_r31 = HuAudFXPlay(0x4B); + HuAudFXPanning(var_r31, 0x4C); + var_r31 = HuAudFXPlay(0x46); + HuAudFXPanning(var_r31, 0x60); + HuAudFXPlay(0x9A); + for (var_r30 = 0; var_r30 < 5; var_r30++) { + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 6, 5, 1); + } + HuWinInsertMesSet(var_r29, lbl_1_bss_3114->unk_68, 0); + fn_1_1968(var_r29, 0x1E0006, 0, 0xB4); + for (var_r30 = 0; var_r30 < 5; var_r30++) { + fn_1_59A0(lbl_1_bss_33AC[var_r30].unk_00, 1, 1, 0xF, 1); + } + fn_1_4B0(0x1E); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + HuWinInsertMesSet(var_r29, lbl_1_bss_3114->unk_68, 0); + fn_1_1968(var_r29, 0x1E0007, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_2808(fn_1_148B0); + HuAudFXPlay(0x39); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r29, 0x1E0008, 0, 0x78); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); + fn_1_2808(fn_1_13F68); + fn_1_16AC(var_r29); + fn_1_4B0(0x78); + lbl_1_bss_3104->func = NULL; + _ClearFlag(2); + _ClearFlag(3); + _ClearFlag(4); + _ClearFlag(5); + _ClearFlag(6); + _ClearFlag(7); + _ClearFlag(1); + _ClearFlag(9); +} + +void fn_1_D634(void) +{ + s32 var_r31; + s32 i; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + s32 sp8[6] = { 1, 2, 0, 3, 4, 5 }; + var_r28 = 0; + var_r31 = 2; + + if (lbl_1_data_2F0 == -1) { + var_r29 = fn_1_1434(0, 0, 0); + } + else { + var_r29 = lbl_1_data_2F0; + lbl_1_data_2F0 = -1; + } + while (1) { + fn_1_4D8(); + var_r28 = 0; + lbl_1_bss_33AC[0].unk_34 = 1; + HuAudFXPlay(lbl_1_data_0[0][3]); + fn_1_59A0(lbl_1_bss_33AC[sp8[var_r31]].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r29, 0x1A0008, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[sp8[var_r31]].unk_00, 1, 1, 0xF, 1); + fn_1_2154(0x1A0020); + for (i = 0; i < 5; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + lbl_1_bss_33AC[i].unk_04 = (MentDllUnkFunc)fn_1_127FC; + } + lbl_1_bss_33AC[sp8[var_r31]].unk_08 = 1; + lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_18F74; + while (1) { + fn_1_4D8(); + for (i = 0; i < 5; i++) { + if (lbl_1_bss_33AC[i].unk_08 != 2) { + break; + } + } + if (i == 5 && var_r28 >= 0x15) { + if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & 0x100)) { + HuAudFXPlay(2); + var_r26 = 2; + break; + } + + if ((HuPadStkX[lbl_1_bss_3114[0].unk_6C] >= 0x32) || ((HuPadBtn[lbl_1_bss_3114[0].unk_6C] & PAD_BUTTON_RIGHT) != 0)) { + var_r31++; + if (var_r31 > 4) { + var_r31 = 4; + } + else { + var_r28 = 0; + } + } + else if ((HuPadStkX[lbl_1_bss_3114[0].unk_6C] <= -50) || ((HuPadBtn[lbl_1_bss_3114[0].unk_6C] & PAD_BUTTON_LEFT) != 0)) { + var_r31--; + if (var_r31 < 0) { + var_r31 = 0; + } + else { + var_r28 = 0; + } + } + else if ((HuPadBtnDown[0] & 0x200)) { + var_r26 = 1; + break; + } + } + if (var_r28 == 0) { + for (i = 0; i < 5; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + } + lbl_1_bss_33AC[sp8[var_r31]].unk_08 = 1; + } + if (var_r28++ == 0x14) { + var_r28 = 0x15; + fn_1_18A54(sp8[var_r31]); + fn_1_1968(var_r29, sp8[var_r31] + 0x1B0001, -1, -0x3E7); + if (sp8[var_r31] != 0) { + HuAudFXPlay(lbl_1_data_0[sp8[var_r31]][0]); + } + else { + HuAudFXPlay(lbl_1_data_0[sp8[var_r31]][2]); + } + } + } + fn_1_2318(0); + if (var_r26 == 1) { + fn_1_2808(fn_1_14058); + if (var_r31 != 2) { + var_r31 = 2; + for (i = 0; i < 5; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + } + lbl_1_bss_33AC[sp8[var_r31]].unk_08 = 1; + lbl_1_bss_33AC[sp8[var_r31]].unk_34 = 1; + } + fn_1_18DCC(); + fn_1_4B0(0x1E); + fn_1_1968(var_r29, 0x1E0005, -1, 5); + var_r27 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r27 == 0) { + fn_1_16AC(var_r29); + fn_1_C174(0); + } + continue; + } + if (var_r26 != 2) { + continue; + } + if (((sp8[var_r31] == 0) && (_CheckFlag(FLAG_ID_MAKE(0, 2)) != 0)) || ((sp8[var_r31] == 1) && (_CheckFlag(FLAG_ID_MAKE(0, 3)) != 0)) + || ((sp8[var_r31] == 2) && (_CheckFlag(FLAG_ID_MAKE(0, 4)) != 0)) || ((sp8[var_r31] == 3) && (_CheckFlag(FLAG_ID_MAKE(0, 5)) != 0)) + || ((sp8[var_r31] == 4) && (_CheckFlag(FLAG_ID_MAKE(0, 6)) != 0))) { + fn_1_59A0(lbl_1_bss_33AC[sp8[var_r31]].unk_00, 1, 4, 0xF, 1); + HuWinInsertMesSet(var_r29, sp8[var_r31] + 0x1B0021, 1); + fn_1_1968(var_r29, sp8[var_r31] + 0x1E0052, -1, -1); + fn_1_1968(var_r29, sp8[var_r31] + 0x1E0057, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[sp8[var_r31]].unk_00, 1, 1, 0xF, 1); + var_r27 = fn_1_1DD8(0x1E0035, 3, 0); + if (var_r27 == 0) { + for (i = 0; i < 5; i++) { + lbl_1_bss_33AC[i].unk_04 = NULL; + } + lbl_1_bss_A8[2] = sp8[var_r31]; + } + else { + if (var_r31 != 2) { + var_r31 = 2; + for (i = 0; i < 5; i++) { + lbl_1_bss_33AC[i].unk_08 = 0; + } + lbl_1_bss_33AC[sp8[var_r31]].unk_08 = 1; + lbl_1_bss_33AC[sp8[var_r31]].unk_34 = 1; + } + fn_1_18DCC(); + fn_1_4B0(0x1E); + continue; + } + } + else { + for (i = 0; i < 5; i++) { + lbl_1_bss_33AC[i].unk_04 = NULL; + } + lbl_1_bss_A8[2] = sp8[var_r31]; + } + break; + } + fn_1_16AC(var_r29); +} + +void fn_1_DE60(void) +{ + s32 var_r31 = lbl_1_bss_A8[2]; + { + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + + fn_1_1FA34(); + fn_1_2808(fn_1_14238); + fn_1_5818(lbl_1_bss_33AC[var_r31].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[var_r31].unk_00, 1, sp14, 5.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[var_r31].unk_00, 1, 1, 0xF, 1); + Hu3DModelAttrReset(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 2, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[0].unk_00, 2, 0); + fn_1_4B0(0x3C); + } +} + +void fn_1_DFDC(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = 0; + var_r29 = lbl_1_bss_A8[2]; + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DModelAttrSet(lbl_1_bss_33AC[var_r30].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrReset(lbl_1_bss_33AC[var_r29].unk_00->model[1], HU3D_ATTR_DISPOFF); + fn_1_11908(lbl_1_bss_35BC[var_r31].unk_00, lbl_1_bss_A8[2]); + Hu3DModelAttrReset(lbl_1_bss_35BC[var_r31].unk_00->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_35BC[var_r31].unk_00->model[5], HU3D_ATTR_DISPOFF); + lbl_1_bss_35BC[var_r31].unk_04 = (MentDllUnkFunc)fn_1_1184C; + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + fn_1_5818(lbl_1_bss_35BC[var_r31].unk_00, 2, 3, 0, 0); + var_r28 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[var_r29].unk_00, 1, 5, 0xF, 1); + fn_1_1968(var_r28, var_r29 + 0x1E000C, -1, -1); + fn_1_16AC(var_r28); + fn_1_5CDC(lbl_1_bss_35BC[var_r31].unk_00, 2, 0); + Hu3DModelAttrSet(lbl_1_bss_35BC[var_r31].unk_00->model[2], HU3D_ATTR_DISPOFF); + HuAudSeqFadeOut(lbl_1_bss_14[0], 0xBB8); + fn_1_2808(fn_1_14418); + fn_1_4B0(0xA); + HuAudFXPlay(GWPlayerCfg->character + 0x75); + fn_1_4B0(0x8C); +} + +void fn_1_E244(void) +{ + lbl_1_bss_14[0] = HuAudSeqPlay(0x30); + OSReport("########### ME_MainProcFunc200\n"); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + fn_1_4B0(0x3C); +} + +void fn_1_E2B4(void) +{ + Vec sp14 = { 0.0f, 0.0f, 560.0f }; + Hu3DModelAttrReset(lbl_1_bss_35BC[0].unk_00->model[2], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + fn_1_5CDC(lbl_1_bss_35BC[0].unk_00, 2, 0); + fn_1_D330(); + fn_1_2808(fn_1_146D0); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 2, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[0].unk_00, 1, sp14, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); +} + +void fn_1_E3FC(void) +{ + lbl_1_bss_14[0] = HuAudSeqPlay(6); + OSReport("########### ME_MainProcFunc300\n"); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + fn_1_D330(); + lbl_1_bss_35BC[1].unk_04 = (MentDllUnkFunc)fn_1_18F74; + fn_1_18A54(5); + fn_1_4B0(0x3C); +} + +void fn_1_E48C(void) +{ + s32 var_r31; + + lbl_1_bss_A8[2] = 5; + var_r31 = fn_1_1434(0, 0, 0); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1968(var_r31, 0x1F0008, 0, 0x3C); + fn_1_59A0(lbl_1_bss_3354.unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + fn_1_1FC54(); + fn_1_4B0(0x3C); + Hu3DModelAttrReset(lbl_1_bss_35BC[1].unk_00->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_35BC[1].unk_00->model[5], HU3D_ATTR_DISPOFF); + fn_1_7304(); + HuDataDirClose(DATADIR_MENT); + HuPrcChildCreate(fn_1_7218, 0x64, 0x3000, 0, lbl_1_bss_C8); + fn_1_59A0(lbl_1_bss_3354.unk_00, 1, 2, 0xF, 1); + fn_1_5818(lbl_1_bss_35BC[1].unk_00, 2, 3, 0, 0); + fn_1_4B0(0x3C); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_5CDC(lbl_1_bss_35BC[1].unk_00, 2, 0); + Hu3DModelAttrSet(lbl_1_bss_35BC[1].unk_00->model[2], HU3D_ATTR_DISPOFF); + HuAudSeqFadeOut(lbl_1_bss_14[0], 0xBB8); + fn_1_2808(fn_1_14418); + fn_1_4B0(0xA); + fn_1_4B0(0x8C); +} + +void fn_1_E654(s32 arg0) +{ + fn_1_4B0(0x3C); + HuAudSeqFadeOut(lbl_1_bss_14[0], 0x3E8); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + HuAudAllStop(); + HuDataDirClose(DATADIR_MENT); + CharARAMOpen(GWPlayerCfg[0].character); + if (arg0 == 0) { + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + } +} + +void fn_1_E71C(s32 arg0) +{ + s32 spC[7] = { 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F }; + fn_1_4B0(0x3C); + HuAudSeqFadeOut(lbl_1_bss_14[0], 0x3E8); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + { + omOvlHisData *sp8 = omOvlHisGet(0); + } + omOvlHisChg(0, OVL_MSTORY3, 0, 0); + do { + fn_1_4D8(); + } while (lbl_1_bss_D8 != 1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudSeqAllFadeOut(0x3E8); + HuAudSStreamAllFadeOut(0x3E8); + omOvlCallEx(spC[GWSystem.board], 1, 0, 0); + while (1) { + fn_1_4D8(); + } +} + +void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + s32 var_r31; + s32 var_r29; + s32 var_r27; + s32 var_r25; + s32 var_r24; + s32 var_r18; + + var_r25 = 0; + if (lbl_1_bss_A8[1] == 0) { + fn_1_81F0(); + fn_1_77C0(); + fn_1_C4B8(); + fn_1_CAE4(); + } + else { + fn_1_7858(); + fn_1_CAE4(); + } + fn_1_1DFB8(); + do { + fn_1_4D8(); + switch (var_r25) { + case 0: + var_r25 = fn_1_CD8C(); + break; + case 1: + var_r25 = fn_1_CF8C(); + break; + } + } while (var_r25 != 2); + fn_1_D310(); + fn_1_81D8(); + fn_1_7A14(); + fn_1_D634(); + fn_1_DE60(); + switch (lbl_1_bss_E0) { + case 0: + var_r24 = 0; + break; + case 1: + var_r24 = 1; + break; + case 2: + var_r24 = 2; + break; + default: + var_r24 = 0; + break; + } + if (lbl_1_bss_35BC[0].unk_1C[0] == 4) { + var_r18 = 1; + } + else { + var_r18 = 0; + } + BoardStoryConfigSet(var_r24, var_r18); + GWStoryCharSet(lbl_1_bss_3114[0].unk_68); + // looks a bit similar to fn_1_7304 + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_68 = -1; + lbl_1_bss_3114[var_r31].unk_6C = var_r31; + lbl_1_bss_3114[var_r31].unk_60 = 1; + } + for (var_r31 = 1; var_r31 < 4; var_r31++) { + do { + lbl_1_bss_3114[var_r31].unk_68 = rand8() % 8; + for (var_r27 = 0; var_r27 < 4; var_r27++) { + if ((var_r31 != var_r27) && (lbl_1_bss_3114[var_r27].unk_68 != -1) + && (lbl_1_bss_3114[var_r31].unk_68 == lbl_1_bss_3114[var_r27].unk_68)) { + break; + } + } + } while (var_r27 != 4); + } + GWSystem.diff_story = lbl_1_bss_35BC[0].unk_1C[0]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_64 = GWSystem.diff_story; + if (GWSystem.diff_story == 4) { + lbl_1_bss_3114[var_r31].unk_64 = fn_1_7124(); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_3114[var_r31].unk_68; + GWPlayer[var_r31].port = GWPlayerCfg[var_r31].pad_idx = lbl_1_bss_3114[var_r31].unk_6C; + GWPlayer[var_r31].diff = GWPlayerCfg[var_r31].diff = lbl_1_bss_3114[var_r31].unk_64; + GWPlayerCfg[var_r31].group = 0; + GWPlayer[var_r31].com = GWPlayerCfg[var_r31].iscom = lbl_1_bss_3114[var_r31].unk_60; + } + BoardSaveInit(lbl_1_bss_A8[2]); + fn_1_DFDC(); + fn_1_E71C(0); +} + +void fn_1_F83C(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + _ClearFlag(FLAG_ID_MAKE(0, 9)); + lbl_1_bss_35BC[0].unk_1C[0] = GWSystem.diff_story; + fn_1_E244(); + fn_1_E2B4(); + fn_1_D634(); + fn_1_DE60(); + fn_1_7304(); + fn_1_DFDC(); + WipeColorSet(0xFF, 0xFF, 0xFF); + fn_1_7684(); +} + +void fn_1_FEAC(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + _ClearFlag(9); + lbl_1_bss_35BC[0].unk_1C[0] = GWSystem.diff_story; + fn_1_E3FC(); + fn_1_E48C(); + WipeColorSet(0, 0, 0); + fn_1_7684(); +} + +void fn_1_10234(void) +{ + s32 var_r31; + + Vec sp2C = { 0.0f, 0.0f, 560.0f }; + Vec sp20 = { -120.0f, 0.0f, 670.0f }; + fn_1_2808(fn_1_13DEC); + fn_1_4B0(0x5A); + Hu3DModelAttrReset(lbl_1_bss_33AC[4].unk_00->model[1], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + fn_1_4B0(0x96); + lbl_1_bss_3108[0]->work[0] = 1; + fn_1_2808(fn_1_13F68); + fn_1_4B0(0x5A); + fn_1_59A0(lbl_1_bss_33AC[4].unk_00, 1, 2, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[4].unk_00, 1, sp2C, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_59A0(lbl_1_bss_33AC[4].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + HuAudSeqPlay(0x2D); + var_r31 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[4].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x2F0000, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[4].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + fn_1_5818(lbl_1_bss_33AC[4].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[4].unk_00, 1, sp20, 5.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[4].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + fn_1_5818(lbl_1_bss_33AC[4].unk_00, 1, 5, 0xF, 1); + fn_1_2808(fn_1_14AB8); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 1, 0, 0, 0); +} + +void fn_1_1053C(void) +{ + fn_1_4B0(0x6E); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + HuAudFXAllStop(); + HuAudSStreamAllStop(); + omOvlGotoEx(OVL_OPTION, 1, 0, 0); + while (1) { + fn_1_4D8(); + } +} + +void fn_1_105B8(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + fn_1_81F0(); + fn_1_10234(); + fn_1_1053C(); +} + +void fn_1_10954(void) +{ + s32 var_r31; + + Vec sp2C = { 0.0f, 0.0f, 560.0f }; + Vec sp20 = { -120.0f, 0.0f, 670.0f }; + fn_1_2808(fn_1_13DEC); + fn_1_4B0(0x5A); + Hu3DModelAttrReset(lbl_1_bss_33AC[2].unk_00->model[1], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + fn_1_4B0(0x96); + lbl_1_bss_3108[0]->work[0] = 1; + fn_1_2808(fn_1_13F68); + fn_1_4B0(0x5A); + fn_1_59A0(lbl_1_bss_33AC[2].unk_00, 1, 2, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[2].unk_00, 1, sp2C, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_59A0(lbl_1_bss_33AC[2].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + HuAudSeqPlay(0x2F); + var_r31 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[2].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x320000, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[2].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + fn_1_5818(lbl_1_bss_33AC[2].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[2].unk_00, 1, sp20, 5.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[2].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + fn_1_5818(lbl_1_bss_33AC[2].unk_00, 1, 5, 0xF, 1); + fn_1_2808(fn_1_14AB8); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 1, 0, 0, 0); +} + +void fn_1_10C5C(void) +{ + fn_1_4B0(0x6E); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + HuAudFXAllStop(); + HuAudSStreamAllStop(); + omOvlGotoEx(OVL_PRESENT, 1, 0, 0); + while (1) { + fn_1_4D8(); + } +} + +void fn_1_10CD8(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + fn_1_81F0(); + fn_1_10954(); + fn_1_10C5C(); +} + +void fn_1_11074(void) +{ + s32 var_r31; + s32 var_r30; + + Vec sp14 = { 0.0f, 0.0f, 560.0f }; + fn_1_2808(fn_1_13DEC); + fn_1_4B0(0x5A); + Hu3DModelAttrReset(lbl_1_bss_33AC[3].unk_00->model[1], HU3D_ATTR_DISPOFF); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 2, 3, 0, 0); + fn_1_4B0(0x96); + lbl_1_bss_3108[0]->work[0] = 1; + fn_1_2808(fn_1_13F68); + fn_1_4B0(0x5A); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 2, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[3].unk_00, 1, sp14, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + var_r31 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x330000, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + var_r31 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x330001, -1, 5); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 1, 0xF, 1); + var_r30 = fn_1_1A5C(0x1E0035, 3, 0); + fn_1_16AC(var_r31); + if (var_r30 == 0) { + var_r31 = fn_1_1434(0, 0, 0); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 4, 0xF, 1); + fn_1_1968(var_r31, 0x330002, -1, -1); + fn_1_59A0(lbl_1_bss_33AC[3].unk_00, 1, 1, 0xF, 1); + fn_1_16AC(var_r31); + } +} + +void fn_1_11368(void) +{ + + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + fn_1_5818(lbl_1_bss_33AC[3].unk_00, 1, 3, 0xF, 1); + fn_1_5D38(lbl_1_bss_33AC[3].unk_00, 1, sp14, 5.0f, 6.0f, 10.0f, 1, 1); + fn_1_5818(lbl_1_bss_33AC[3].unk_00, 1, 1, 0xF, 1); + fn_1_4B0(0x1E); + fn_1_5818(lbl_1_bss_33AC[3].unk_00, 1, 5, 0xF, 1); + fn_1_2808(fn_1_14AB8); + fn_1_5818(lbl_1_bss_35BC[0].unk_00, 1, 0, 0, 0); +} + +void fn_1_114A0(void) +{ + fn_1_4B0(0x6E); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_4D8(); + } + CharModelKill(-1); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + while (1) { + fn_1_4D8(); + } +} + +void fn_1_11514(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + s32 spC = 0xA; + s32 sp8 = 0; + fn_1_81F0(); + fn_1_11074(); + fn_1_11368(); + fn_1_114A0(); +} + +void fn_1_116F4(void) +{ + omObjData *var_r31; + + var_r31 = omAddObjEx(lbl_1_bss_C8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_366C.unk_00 = var_r31; + switch (lbl_1_bss_A8[0]) { + case 0: + case 20: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_B654; + break; + case 1: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_E874; + break; + case 3: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_105B8; + break; + case 4: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_10CD8; + break; + case 5: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_11514; + break; + case 10: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_F83C; + break; + case 11: + lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_FEAC; + break; + } + while (1) { + fn_1_4D8(); + if (lbl_1_bss_366C.unk_04 == NULL) { + continue; + } + lbl_1_bss_366C.unk_04(var_r31, &lbl_1_bss_366C); + } +} + +void fn_1_1184C(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + Hu3DData[arg0->model[4]].pos.y = fn_1_3F4(80.0f, 90.0f, arg1->unk_1C[0]++, 360.0f); + if (arg1->unk_1C[0] >= 0x168) { + arg1->unk_1C[0] = 0; + } +} + +void fn_1_11908(omObjData *arg0, s32 arg1) +{ + arg0->model[4] = Hu3DModelCreateFile(arg1 + DATA_MAKE_NUM(DATADIR_MENT, 0xD)); + if (arg1 != 5) { + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x13)); + } + else { + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x14)); + } + arg0->motion[4] = Hu3DMotionIDGet(arg0->model[4]); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + fn_1_59A0(arg0, 4, 4, 0, 2); + fn_1_59A0(arg0, 5, 5, 0, 2); + if (arg1 != 5) { + Hu3DModelPosSet(arg0->model[4], 0.0f, 80.0f, 460.0f); + Hu3DModelHookSet(arg0->model[4], "partybox_fix2-effect_fook1", arg0->model[5]); + } + else { + Hu3DModelPosSet(arg0->model[4], 1200.0f, 80.0f, 460.0f); + Hu3DModelHookSet(arg0->model[4], "koopabox_fix-effect_fook2", arg0->model[5]); + } + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[4]); +} + +void fn_1_11AD0(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x61)); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x69)); + if (lbl_1_bss_A8[0] < 0xA) { + object->model[3] = Hu3DModelCreateFile(lbl_1_bss_A8[0] + DATA_MAKE_NUM(DATADIR_MENT, 0x63)); + } + else { + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x64)); + } + if ((lbl_1_bss_A8[4] == 1) && ((lbl_1_bss_A8[0] == 0) || (lbl_1_bss_A8[0] == 0x14))) { + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x6C)); + Hu3DModelLayerSet(object->model[6], 2); + Hu3DModelPosSet(object->model[6], 50.0f, 0.0f, -100.0f); + object->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x6D)); + Hu3DModelLayerSet(object->model[7], 2); + Hu3DModelPosSet(object->model[7], 1150.0f, 0.0f, -100.0f); + } + object->motion[0] = Hu3DMotionIDGet(object->model[1]); + object->motion[1] = Hu3DMotionIDGet(object->model[3]); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MENT, 0x6A)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MENT, 0x6B)); + if (lbl_1_bss_A8[0] == 0xA) { + fn_1_59A0(object, 2, 3, 0, 2); + } + else { + fn_1_59A0(object, 2, 3, 0, 2); + } + fn_1_59A0(object, 3, 1, 0, 1); + fn_1_59A0(object, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); +} + +void fn_1_11DA4(omObjData *object, s32 arg1, s32 arg2, s32 arg3) +{ + + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x62)); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x69)); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MENT, 0x6A)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MENT, 0x6B)); + if (lbl_1_bss_A8[0] == 0xB) { + fn_1_59A0(object, 2, 3, 0, 2); + } + else { + fn_1_59A0(object, 2, 2, 0, 2); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + } + fn_1_59A0(object, 1, 1, 0, 1); + Hu3DModelPosSet(object->model[1], 1200.0f, 0.0f, 0.0f); + Hu3DModelPosSet(object->model[2], 1200.0f, 0.0f, 0.0f); + if (lbl_1_bss_A8[0] == 3) { + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x12)); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x14)); + object->motion[4] = Hu3DMotionIDGet(object->model[4]); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + fn_1_59A0(object, 4, 4, 0, 2); + fn_1_59A0(object, 5, 5, 0, 2); + Hu3DModelPosSet(object->model[4], 1200.0f, 80.0f, 460.0f); + Hu3DModelHookSet(object->model[4], "koopabox_fix-effect_fook2", object->model[5]); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[4]); + Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[5], HU3D_ATTR_DISPOFF); + lbl_1_bss_35BC[1].unk_04 = (MentDllUnkFunc)fn_1_1184C; + } + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + if (lbl_1_bss_A8[0] == 0xB) { + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x12)); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x14)); + object->motion[4] = Hu3DMotionIDGet(object->model[4]); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + fn_1_59A0(object, 4, 4, 0, 2); + fn_1_59A0(object, 5, 5, 0, 2); + Hu3DModelPosSet(object->model[4], 1200.0f, 80.0f, 460.0f); + Hu3DModelHookSet(object->model[4], "koopabox_fix-effect_fook2", object->model[5]); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[4]); + } +} + +void fn_1_121D8(void) +{ + omObjData *var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_CC; + lbl_1_bss_CC = var_r30 + 1; + var_r31 = omAddObjEx(lbl_1_bss_C8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_35BC[var_r30].unk_00 = var_r31; + lbl_1_bss_35BC[var_r30].unk_04 = NULL; + if (var_r30 == 0) { + fn_1_11AD0(var_r31); + switch (lbl_1_bss_A8[0]) { + case 0: + fn_1_20B54(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_151B8(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_17CC8(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_18788(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_1BB2C(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + break; + case 1: + fn_1_1D4FC(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_1F6B8(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_18788(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + break; + case 10: + if (GWSystem.mg_list == 3) { + GWSystem.mg_list = 0; + } + var_r29 = GWSystem.mg_list; + lbl_1_bss_35BC[0].unk_1C[1] = var_r29; + lbl_1_bss_35BC[0].unk_1C[0] = GWPlayerCfg[0].diff; + fn_1_1F6B8(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_18788(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + break; + case 5: + fn_1_20B54(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + fn_1_151B8(&lbl_1_bss_35BC[var_r30], 0, 0, 0); + break; + } + } + else { + fn_1_11DA4(var_r31, 0, 0, 0); + if (lbl_1_bss_A8[0] == 0xB) { + fn_1_1F6B8(lbl_1_bss_35BC, 0, 0, 0); + fn_1_18788(lbl_1_bss_35BC, 0, 0, 0); + } + } + while (1) { + fn_1_4D8(); + if (lbl_1_bss_35BC[var_r30].unk_04 == NULL) { + continue; + } + lbl_1_bss_35BC[var_r30].unk_04(var_r31, &lbl_1_bss_35BC[var_r30]); + } +} + +void fn_1_127FC(omObjData *arg0, MentDllUnkBss33ACStruct *arg1) +{ + float var_f31; + float var_f30; + + var_f31 = 0.0f; + var_f30 = 0.0f; + var_f31 = Hu3DData[arg0->model[1]].pos.z; + var_f30 = Hu3DData[arg0->model[1]].rot.y; + if (arg1->unk_08 == 1) { + if (var_f31 > 560.0f) { + arg1->unk_08 = 2; + fn_1_59A0(arg0, 1, 1, 0xF, 1); + } + else { + var_f31 += 5.0f; + fn_1_59A0(arg0, 1, 2, 0xF, 1); + var_f30 = fn_1_234(var_f30, 0.0f, 10.0f); + } + } + else if (arg1->unk_08 == 0) { + if (var_f31 <= 460.0f) { + arg1->unk_08 = 2; + fn_1_59A0(arg0, 1, 1, 0xF, 1); + } + else { + var_f31 -= 5.0f; + fn_1_59A0(arg0, 1, 2, 0xF, 1); + var_f30 = fn_1_234(var_f30, lbl_1_data_120[arg1->unk_30], 10.0f); + } + } + Hu3DData[arg0->model[1]].pos.z = var_f31; + Hu3DData[arg0->model[1]].rot.y = var_f30; +} + +void fn_1_12A0C(omObjData *object, s32 arg1) +{ + s32 sp20[6] = { + DATA_MAKE_NUM(DATADIR_MENT, 0x6E), + DATA_MAKE_NUM(DATADIR_MENT, 0x75), + DATA_MAKE_NUM(DATADIR_MENT, 0x7C), + DATA_MAKE_NUM(DATADIR_MENT, 0x83), + DATA_MAKE_NUM(DATADIR_MENT, 0x89), + DATA_MAKE_NUM(DATADIR_MENT, 0x90), + }; + s32 sp38[6][6] = { + DATA_MAKE_NUM(DATADIR_MENT, 0x6F), + DATA_MAKE_NUM(DATADIR_MENT, 0x70), + DATA_MAKE_NUM(DATADIR_MENT, 0x71), + DATA_MAKE_NUM(DATADIR_MENT, 0x72), + DATA_MAKE_NUM(DATADIR_MENT, 0x73), + DATA_MAKE_NUM(DATADIR_MENT, 0x74), + DATA_MAKE_NUM(DATADIR_MENT, 0x76), + DATA_MAKE_NUM(DATADIR_MENT, 0x77), + DATA_MAKE_NUM(DATADIR_MENT, 0x78), + DATA_MAKE_NUM(DATADIR_MENT, 0x79), + DATA_MAKE_NUM(DATADIR_MENT, 0x7A), + DATA_MAKE_NUM(DATADIR_MENT, 0x7B), + DATA_MAKE_NUM(DATADIR_MENT, 0x7D), + DATA_MAKE_NUM(DATADIR_MENT, 0x7E), + DATA_MAKE_NUM(DATADIR_MENT, 0x7F), + DATA_MAKE_NUM(DATADIR_MENT, 0x80), + DATA_MAKE_NUM(DATADIR_MENT, 0x81), + DATA_MAKE_NUM(DATADIR_MENT, 0x82), + DATA_MAKE_NUM(DATADIR_MENT, 0x84), + DATA_MAKE_NUM(DATADIR_MENT, 0x85), + DATA_MAKE_NUM(DATADIR_MENT, 0x85), + DATA_MAKE_NUM(DATADIR_MENT, 0x86), + DATA_MAKE_NUM(DATADIR_MENT, 0x87), + DATA_MAKE_NUM(DATADIR_MENT, 0x88), + DATA_MAKE_NUM(DATADIR_MENT, 0x8A), + DATA_MAKE_NUM(DATADIR_MENT, 0x8B), + DATA_MAKE_NUM(DATADIR_MENT, 0x8C), + DATA_MAKE_NUM(DATADIR_MENT, 0x8D), + DATA_MAKE_NUM(DATADIR_MENT, 0x8E), + DATA_MAKE_NUM(DATADIR_MENT, 0x8F), + DATA_MAKE_NUM(DATADIR_MENT, 0x91), + DATA_MAKE_NUM(DATADIR_MENT, 0x92), + DATA_MAKE_NUM(DATADIR_MENT, 0x93), + DATA_MAKE_NUM(DATADIR_MENT, 0x94), + DATA_MAKE_NUM(DATADIR_MENT, 0x95), + DATA_MAKE_NUM(DATADIR_MENT, 0x91), + }; + object->model[1] = Hu3DModelCreateFile(sp20[arg1]); + object->motion[1] = Hu3DJointMotionFile(object->model[1], sp38[arg1][0]); + object->motion[2] = Hu3DJointMotionFile(object->model[1], sp38[arg1][1]); + object->motion[3] = Hu3DJointMotionFile(object->model[1], sp38[arg1][2]); + object->motion[4] = Hu3DJointMotionFile(object->model[1], sp38[arg1][3]); + object->motion[5] = Hu3DJointMotionFile(object->model[1], sp38[arg1][4]); + object->motion[6] = Hu3DJointMotionFile(object->model[1], sp38[arg1][5]); + { + s32 sp8[6] = { 9, 14, 10, 11, 12, 13 }; + if (arg1 != 3) { + CharModelEffectNpcInit(object->model[1], object->motion[2], 0, sp8[arg1]); + CharModelEffectNpcInit(object->model[1], object->motion[3], 1, sp8[arg1]); + } + } + fn_1_59A0(object, 1, 1, 0, 1); + Hu3DModelPosSet(object->model[1], lbl_1_data_D8[arg1].x, lbl_1_data_D8[arg1].y, lbl_1_data_D8[arg1].z); + Hu3DModelRotSet(object->model[1], 0.0f, lbl_1_data_120[arg1], 0.0f); + if (lbl_1_bss_A8[0] >= 2 && lbl_1_bss_A8[0] < 0xA) { + Hu3DModelPosSet(object->model[1], lbl_1_data_D8[0].x, lbl_1_data_D8[0].y, lbl_1_data_D8[0].z); + Hu3DModelRotSet(object->model[1], 0.0f, 0.0f, 0.0f); + if (lbl_1_bss_A8[0] == 5) { + Hu3DModelPosSet(object->model[1], lbl_1_data_D8[0].x, 50.0f + lbl_1_data_D8[0].y, lbl_1_data_D8[0].z); + } + } + if (lbl_1_bss_A8[0] < 0xA) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelShadowSet(object->model[1]); + Hu3DModelLayerSet(object->model[1], 2); +} + +void fn_1_12E40(void) +{ + omObjData *var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_D0; + lbl_1_bss_D0 = var_r30 + 1; + var_r31 = omAddObjEx(lbl_1_bss_C8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_33AC[var_r30].unk_00 = var_r31; + lbl_1_bss_33AC[var_r30].unk_04 = NULL; + lbl_1_bss_33AC[var_r30].unk_30 = var_r30; + fn_1_12A0C(var_r31, var_r30); + while (1) { + fn_1_4D8(); + if (lbl_1_bss_33AC[var_r30].unk_04 != NULL) { + lbl_1_bss_33AC[var_r30].unk_04(var_r31, &lbl_1_bss_33AC[var_r30]); + } + if (var_r31->work[0] != 1) { + continue; + } + fn_1_5C08(var_r31); + } +} + +void fn_1_13348(omObjData *arg0) +{ + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x96)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MENT, 0x97)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MENT, 0x98)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MENT, 0x99)); + fn_1_59A0(arg0, 1, 3, 0, 1); + Hu3DModelPosSet(arg0->model[1], 1020.0f, 0.0f, 800.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 60.0f, 0.0f); + Hu3DModelShadowSet(arg0->model[1]); + Hu3DModelLayerSet(arg0->model[1], 2); +} + +void fn_1_134A8(void) +{ + omObjData *var_r31; + + var_r31 = omAddObjEx(lbl_1_bss_C8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_3354.unk_00 = var_r31; + lbl_1_bss_3354.unk_04 = NULL; + fn_1_13348(var_r31); + while (1) { + fn_1_4D8(); + if (lbl_1_bss_3354.unk_04 != NULL) { + lbl_1_bss_3354.unk_04(var_r31, &lbl_1_bss_3354); + } + if (var_r31->work[0] != 1) { + continue; + } + fn_1_5C08(var_r31); + } +} + +void fn_1_1368C(omObjData *arg0, s32 arg1) +{ + MentDllUnkBss3114Struct *var_r31; + + var_r31 = &lbl_1_bss_3114[arg1]; + var_r31->unk_58 = arg1; + var_r31->unk_5C = 0; + var_r31->unk_60 = var_r31->unk_58; + if (var_r31->unk_60 > 0) { + var_r31->unk_60 = 1; + } + var_r31->unk_64 = 0; + var_r31->unk_68 = var_r31->unk_58; + var_r31->unk_6C = var_r31->unk_58; +} + +void fn_1_136F0(omObjData *arg0, s32 arg1) +{ + MentDllUnkBss3114Struct *var_r31; + + var_r31 = &lbl_1_bss_3114[arg1]; + var_r31->unk_58 = arg1; + var_r31->unk_5C = GWPlayerCfg[var_r31->unk_58].group; + var_r31->unk_60 = GWPlayerCfg[var_r31->unk_58].iscom; + var_r31->unk_64 = GWPlayerCfg[var_r31->unk_58].diff; + var_r31->unk_68 = GWPlayerCfg[var_r31->unk_58].character; + var_r31->unk_6C = GWPlayerCfg[var_r31->unk_58].pad_idx; +} + +void fn_1_137A4(omObjData *arg0, s32 arg1) +{ + MentDllUnkBss3114Struct *var_r31; + + var_r31 = &lbl_1_bss_3114[arg1]; + var_r31->unk_58 = arg1; + var_r31->unk_5C = GWPlayerCfg[var_r31->unk_58].group; + var_r31->unk_60 = GWPlayerCfg[var_r31->unk_58].iscom; + var_r31->unk_64 = GWPlayerCfg[var_r31->unk_58].diff; + var_r31->unk_68 = GWPlayerCfg[var_r31->unk_58].character; + var_r31->unk_6C = GWPlayerCfg[var_r31->unk_58].pad_idx; + arg0->model[1] = CharModelCreate(var_r31->unk_68, 1); + arg0->motion[1] = CharModelMotionCreate(var_r31->unk_68, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], var_r31->unk_68 + DATA_MAKE_NUM(DATADIR_MENT, 0x00)); + fn_1_59A0(arg0, 1, 2, 0, 1); + Hu3DModelPosSet(arg0->model[1], 1320.0f, 0.0f, 800.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, -60.0f, 0.0f); + Hu3DModelShadowSet(arg0->model[1]); + Hu3DModelLayerSet(arg0->model[1], 2); +} + +void fn_1_13970(void) +{ + MentDllUnkBss3114Struct *var_r28; + omObjData *var_r27; + s32 var_r26; + + var_r26 = lbl_1_bss_D4; + lbl_1_bss_D4 = var_r26 + 1; + var_r27 = omAddObjEx(lbl_1_bss_C8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_3114[var_r26].unk_00 = var_r27; + lbl_1_bss_3114[var_r26].unk_04 = NULL; + if (lbl_1_bss_A8[0] <= 1) { + fn_1_1368C(var_r27, var_r26); + } + else if (lbl_1_bss_A8[0] == 0xA) { + fn_1_136F0(var_r27, 0); + } + else if (lbl_1_bss_A8[0] == 0xB) { + fn_1_137A4(var_r27, 0); + } + else { + fn_1_1368C(var_r27, var_r26); + } + while (1) { + fn_1_4D8(); + if (lbl_1_bss_3114[var_r26].unk_04 == NULL) { + continue; + } + lbl_1_bss_3114[var_r26].unk_04(var_r27, &lbl_1_bss_3114[var_r26]); + } +} + +void fn_1_13D60(void) +{ + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + var_r31->center.x = 0.0f; + var_r31->center.y = 0.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -10.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 2900.0f; +} + +void fn_1_13DEC(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 0.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -10.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1150.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 180.0f, 15.0f); +} + +void fn_1_13EDC(void) +{ + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + var_r31->center.x = 0.0f; + var_r31->center.y = 215.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = 0.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1600.0f; +} + +void fn_1_13F68(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 60.0f, 10.0f); +} + +void fn_1_14058(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); +} + +void fn_1_14148(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 1200.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); +} + +void fn_1_14238(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 125.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1750.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); +} + +void fn_1_14328(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 1200.0f; + sp8.center.y = 125.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1750.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); +} + +void fn_1_14418(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_A8[2] / 5; + var_r31 = &lbl_1_bss_64; + if (var_r31->unk_40 == 0x32) { + fn_1_5818(lbl_1_bss_35BC[var_r30].unk_00, 4, 4, 0, 0); + fn_1_5818(lbl_1_bss_35BC[var_r30].unk_00, 5, 5, 0, 0); + HuAudFXPlay(0x7D); + } + sp8.center.x = 0.0f; + if (var_r30 == 1) { + sp8.center.x = 1200.0f; + } + sp8.center.y = 100.0f; + sp8.center.z = 460.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 125.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40, 180.0f, 10.0f); + if (var_r31->unk_40++ >= 90) { + if (var_r31->unk_40 == 91) { + if (var_r30 == 0) { + lbl_1_bss_24[10] = HuAudFXPlay(0x22); + } + else { + lbl_1_bss_24[10] = HuAudFXPlay(0x23); + } + } + var_r31->rot.x = fn_1_20C(var_r31->rot.x, -45.0f, var_r31->unk_40 - 0x5A, 90.0f); + Hu3DData[lbl_1_bss_35BC[var_r30].unk_00->model[4]].rot.x = fn_1_20C(0.0f, 45.0f, var_r31->unk_40 - 0x5A, 90.0f); + } +} + +void fn_1_146D0(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); +} + +void fn_1_147C0(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 1200.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); +} + +void fn_1_148B0(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 30.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1100.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); +} + +void fn_1_149A0(void) +{ + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + var_r31->center.x = 0.0f; + var_r31->center.y = 125.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -5.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1750.0f; +} + +void fn_1_14A2C(void) +{ + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + var_r31->center.x = 1200.0f; + var_r31->center.y = 125.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -5.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1750.0f; +} + +void fn_1_14AB8(void) +{ + MentDllUnkBss64Struct sp8; + MentDllUnkBss64Struct *var_r31; + + var_r31 = &lbl_1_bss_64; + sp8.center.x = 0.0f; + sp8.center.y = 125.0f; + sp8.center.z = 460.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 125.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 120.0f, 10.0f); +} + +void fn_1_14BA8(void) +{ + s32 var_r31; + s32 var_r30; + var_r30 = lbl_1_bss_35BC[0].unk_30; + for (var_r31 = 0; var_r31 < 0x35; var_r31++) { + HuSprAttrSet(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31, 0); + HuSprAttrReset(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 8, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 0x28, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 0x10, 0); + HuSprBankSet(var_r30, var_r31 + 0x14, 0); + HuSprAttrReset(var_r30, var_r31 + 0x29, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 0x2D, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); +} + +s32 lbl_1_data_57C[4][4] = { + { 0xA8, 0x5A, 0x78, 0x33 }, + { 0xF8, 0xBE, 0x1CA, 0x33 }, + { 0x148, 0x5A, 0x78, 0xDE }, + { 0x198, 0xBE, 0x1CA, 0xDE }, +}; +s32 lbl_1_data_5BC[4][2] = { + { 0x1B, 0x18 }, + { 0x49, 0x18 }, + { 0x77, 0x18 }, + { 0xA5, 0x18 }, +}; + +#if VERSION_NTSC +float lbl_1_data_5DC[5][5] = { + { 262.0f, 119.0f, 1.3f, 227.0f, 455.0f }, + { 314.0f, 168.0f, 0.75f, 265.0f, 416.0f }, + { 366.0f, 204.0f, 0.75f, 240.0f, 440.0f }, + { 418.0f, 240.0f, 0.75f, 300.0f, 381.0f }, + { -1.0f, 289.0f, 1.3f, 220.0f, 460.0f }, +}; +#else +float lbl_1_data_5DC[5][5] = { + { 262.0f, 119.0f, 1.3f, 227.0f, 455.0f }, + { 314.0f, 168.0f, 0.75f, 300.0f, 381.0f }, + { 366.0f, 204.0f, 0.75f, 240.0f, 440.0f }, + { 418.0f, 240.0f, 0.75f, 300.0f, 381.0f }, + { -1.0f, 289.0f, 1.3f, 220.0f, 460.0f }, +}; +#endif + +s32 lbl_1_data_640[4][5] = { + { 0xB4, 0x60, 0x87, 0, 0 }, + { 0xFC, 0xB8, 0xF6, 0xD4, 0x1D4 }, + { 0x144, 0x60, 0x11A, 0xE6, 0x1C2 }, + { 0x18C, 0xB8, 0, 0, 0 }, +}; +s32 lbl_1_data_690[4][4] = { + { 0xB1, 0x68, 0x78, 0x37 }, + { 0xFB, 0x68, 0x1CA, 0x37 }, + { 0x145, 0x68, 0x78, 0x8E }, + { 0x18F, 0x68, 0x1CA, 0x8E }, +}; + +void fn_1_14CE0(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_3114[var_r31].unk_60 != 0) { + HuSprAttrSet(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x10, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x14, HUSPR_ATTR_DISPOFF); + } + else { + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x10, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x14, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x10, lbl_1_data_57C[lbl_1_bss_3114[var_r31].unk_68 % 4][0], + lbl_1_data_57C[lbl_1_bss_3114[var_r31].unk_68 / 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x14, lbl_1_data_57C[lbl_1_bss_3114[var_r31].unk_68 % 4][0], + lbl_1_data_57C[lbl_1_bss_3114[var_r31].unk_68 / 4][1]); + } + for (var_r31 = 0; var_r31 <= 60; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0x32) { + var_f31 = fn_1_32C(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_254(10.0f, 2.06f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_30, 0.0f, var_f31); + } +} + +void fn_1_15098(void) +{ + float var_f31; + s32 var_r31; + + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = fn_1_32C(2.06f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_254(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_30, 0.0f, var_f31); + } +} + +void fn_1_151B8(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + AnimData *var_r26; + AnimData *var_r25; + AnimData *var_r24; + AnimData *var_r23; + AnimData *var_r22; + + var_r30 = HuSprGrpCreate(0x35); + arg0->unk_30 = var_r30; + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x22)); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r29 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x1A)), 0x3E8, 0); + HuSprGrpMemberSet(var_r30, var_r31, var_r29); + HuSprPosSet(var_r30, var_r31, lbl_1_data_57C[var_r31 % 4][0], lbl_1_data_57C[var_r31 / 4][1]); + var_r29 = HuSprCreate(var_r26, 0x3F2, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 8, var_r29); + HuSprTPLvlSet(var_r30, var_r31 + 8, 0.5f); + HuSprPosSet(var_r30, var_r31 + 8, lbl_1_data_57C[var_r31 % 4][0] + 1, lbl_1_data_57C[var_r31 / 4][1] + 2); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x23)), 0, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x10, var_r29); + var_r29 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x28)), 0xA, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x14, var_r29); + } + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x27)); + var_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x2C)); + var_r24 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x2D)); + var_r23 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x2F)); + var_r22 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x2E)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(var_r26, 0, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x18, var_r29); + var_r29 = HuSprCreate(var_r25, 0x1E, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x1C, var_r29); + var_r29 = HuSprCreate(var_r24, 0xA, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x20, var_r29); + var_r29 = HuSprCreate(var_r23, 0x14, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x24, var_r29); + HuSprTPLvlSet(var_r30, var_r31 + 0x24, 0.5f); + var_r29 = HuSprCreate(var_r22, 0x14, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x31, var_r29); + } + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x17)), 0x7D0, 0); + HuSprGrpMemberSet(var_r30, 0x28, var_r29); + HuSprTPLvlSet(var_r30, 0x28, 0.8f); + fn_1_6534(var_r30, 0x28, 288.0f, 240.0f); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x18)); + var_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x19)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(var_r26, 0x7BC, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x29, var_r29); + HuSprBankSet(var_r30, var_r31 + 0x29, var_r31); + fn_1_6534(var_r30, var_r31 + 0x29, lbl_1_data_57C[var_r31][2], lbl_1_data_57C[var_r31][3]); + var_r29 = HuSprCreate(var_r25, 0x7C6, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x2D, var_r29); + HuSprBankSet(var_r30, var_r31 + 0x2D, var_r31); + HuSprTPLvlSet(var_r30, var_r31 + 0x2D, 0.5f); + fn_1_6534(var_r30, var_r31 + 0x2D, lbl_1_data_57C[var_r31][2] + 1, lbl_1_data_57C[var_r31][3] + 6); + } + var_r27 = lbl_1_bss_35BC[0].unk_30; + for (var_r28 = 0; var_r28 < 0x35; var_r28++) { + HuSprAttrSet(var_r27, var_r28, HUSPR_ATTR_DISPOFF); + } + for (var_r28 = 0; var_r28 < 8; var_r28++) { + HuSprBankSet(var_r27, var_r28, 0); + HuSprAttrReset(var_r27, var_r28, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r27, var_r28 + 8, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r27, 0x28, HUSPR_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + HuSprBankSet(var_r27, var_r28 + 0x10, 0); + HuSprBankSet(var_r27, var_r28 + 0x14, 0); + HuSprAttrReset(var_r27, var_r28 + 0x29, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r27, var_r28 + 0x2D, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(var_r27, 0.0f, -500.0f); +} + +void fn_1_15950(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + MentDllUnkBss3114Struct *var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_35BC[0].unk_30; + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r29, var_r31, 0); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r29, var_r31 + 0x10, 0); + HuSprBankSet(var_r29, var_r31 + 0x14, 0); + HuSprBankSet(var_r29, var_r31 + 0x18, 0); + HuSprBankSet(var_r29, var_r31 + 0x1C, 0); + HuSprBankSet(var_r29, var_r31 + 0x20, 0); + } + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + fn_1_4D8(); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r30 = &lbl_1_bss_3114[var_r28]; + var_f31 = fn_1_32C(lbl_1_data_57C[var_r30->unk_68 % 4][0], lbl_1_data_57C[var_r30->unk_58 % 4][0], var_r31, 10.0f); + var_f30 = fn_1_32C(lbl_1_data_57C[var_r30->unk_68 / 4][1], lbl_1_data_57C[var_r30->unk_58 / 4][1], var_r31, 10.0f); + HuSprPosSet(var_r29, var_r30->unk_58 + 0x10, var_f31, var_f30); + HuSprPosSet(var_r29, var_r30->unk_58 + 0x14, var_f31, var_f30); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_3114[var_r31].unk_68 = lbl_1_bss_3114[var_r31].unk_58; + lbl_1_bss_3114[var_r31].unk_70[0] = 0; + } +} + +void fn_1_15CB4(omObjData *arg0, MentDllUnkBss3114Struct *arg1) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r25 = lbl_1_bss_35BC[0].unk_30; + var_r27 = 0; + var_r26 = 0; + var_r30 = arg1->unk_68 % 4; + var_r24 = var_r30; + var_r29 = arg1->unk_68 / 4; + var_r23 = var_r29; + if (arg1->unk_70[0] == 0) { + if ((HuPadBtnDown[arg1->unk_6C] & PAD_BUTTON_A) != 0) { + arg1->unk_70[0] = 1; + HuSprBankSet(var_r25, arg1->unk_68, 1); + HuSprBankSet(var_r25, arg1->unk_58 + 0x10, 1); + HuSprBankSet(var_r25, arg1->unk_58 + 0x14, 1); + HuAudFXPlay(arg1->unk_68 + 0x6D); + } + else { + if ((HuPadStkX[arg1->unk_6C] >= 5) || ((HuPadBtn[arg1->unk_6C] & 2) != 0)) { + var_r30++; + var_r27 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if ((HuPadStkX[arg1->unk_6C] <= -5) || ((HuPadBtn[arg1->unk_6C] & 1) != 0)) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if ((HuPadStkY[arg1->unk_6C] <= -5) || ((HuPadBtn[arg1->unk_6C] & 4) != 0)) { + var_r29++; + var_r26 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if ((HuPadStkY[arg1->unk_6C] >= 5) || ((HuPadBtn[arg1->unk_6C] & 8) != 0)) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if ((HuPadBtnDown[arg1->unk_6C] & PAD_BUTTON_B) != 0) { + arg1->unk_70[0] = 0; + HuSprBankSet(var_r25, arg1->unk_68, 0); + HuSprBankSet(var_r25, arg1->unk_58 + 0x10, 0); + HuSprBankSet(var_r25, arg1->unk_58 + 0x14, 0); + HuAudFXPlay(3); + } + if (arg1->unk_68 != (var_r30 + (var_r29 * 4))) { + do { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_58) && (lbl_1_bss_3114[var_r28].unk_60 == 0) + && ((var_r30 + (var_r29 * 4)) == lbl_1_bss_3114[var_r28].unk_68)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 3) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r24; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 1) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r23; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 3) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 1) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r24; + var_r29 = var_r23; + } + break; + } + } + } while (var_r28 != 4); + if (arg1->unk_68 != (var_r30 + (var_r29 * 4))) { + arg1->unk_68 = var_r30 + (var_r29 * 4); + HuAudFXPlay(0); + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_4D8(); + var_f31 = fn_1_32C(lbl_1_data_57C[var_r24][0], lbl_1_data_57C[var_r30][0], var_r28, 10.0f); + var_f30 = fn_1_32C(lbl_1_data_57C[var_r23][1], lbl_1_data_57C[var_r29][1], var_r28, 10.0f); + HuSprPosSet(var_r25, arg1->unk_58 + 0x10, var_f31, var_f30); + HuSprPosSet(var_r25, arg1->unk_58 + 0x14, var_f31, var_f30); + } + } + } +} + +void fn_1_162A0(MentDllUnkBss3114Struct *arg0) +{ + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + arg0->unk_64 = 0; + HuSprBankSet(var_r30, arg0->unk_58 + 0x20, arg0->unk_64); + HuSprPosSet(var_r30, arg0->unk_58 + 0x20, lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_58 + 0x24, lbl_1_data_57C[arg0->unk_68 % 4][0] + 1, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x25); + HuSprAttrReset(var_r30, arg0->unk_58 + 0x20, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, arg0->unk_58 + 0x24, HUSPR_ATTR_DISPOFF); +} + +s32 fn_1_1648C(MentDllUnkBss3114Struct *arg0) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r28 = 0; + var_r29 = lbl_1_bss_35BC[0].unk_30; + while (1) { + fn_1_4D8(); + var_r28 = 0; + var_r26 = arg0->unk_64; + if (HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5 || (HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_RIGHT)) { + if (lbl_1_bss_A8[5] == 1) { + arg0->unk_64++; + var_r28 = 1; + if (arg0->unk_64 > 3) { + arg0->unk_64 = 0; + } + } + else { + arg0->unk_64++; + var_r28 = 1; + if (arg0->unk_64 > 2) { + arg0->unk_64 = 0; + } + } + } + else if (HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5 || (HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_LEFT)) { + if (lbl_1_bss_A8[5] == 1) { + arg0->unk_64--; + var_r28 = -1; + if (arg0->unk_64 < 0) { + arg0->unk_64 = 3; + } + } + else { + arg0->unk_64--; + var_r28 = -1; + if (arg0->unk_64 < 0) { + arg0->unk_64 = 2; + } + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_A) { + var_r27 = 1; + HuAudFXPlay(2); + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + var_r27 = 0; + HuAudFXPlay(3); + break; + } + if (arg0->unk_64 != var_r26) { + HuAudFXPlay(0); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_4D8(); + var_f31 = fn_1_32C(lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 % 4][0] + (var_r28 * 10), var_r30, 5); + HuSprPosSet(var_r29, arg0->unk_58 + 32, var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 35); + HuSprPosSet(var_r29, arg0->unk_58 + 36, 1 + var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 37); + } + HuSprBankSet(var_r29, arg0->unk_58 + 32, arg0->unk_64); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_4D8(); + var_f31 = fn_1_32C(lbl_1_data_57C[arg0->unk_68 % 4][0] + (var_r28 * 10), lbl_1_data_57C[arg0->unk_68 % 4][0], var_r30, 5); + HuSprPosSet(var_r29, arg0->unk_58 + 32, var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 35); + HuSprPosSet(var_r29, arg0->unk_58 + 36, 1 + var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 37); + } + } + } + if (var_r27 == 1) { + HuSprPosSet(var_r29, arg0->unk_58 + 49, lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 / 4][1] + 35); + HuSprBankSet(var_r29, arg0->unk_58 + 49, arg0->unk_64); + HuSprAttrReset(var_r29, arg0->unk_58 + 49, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r29, arg0->unk_58 + 32, HUSPR_ATTR_DISPOFF); + } + + return var_r27; +} + +void fn_1_16B68(omObjData *arg0, MentDllUnkBss3114Struct *arg1) +{ + s32 sp8; + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r23; + s32 var_r22; + + var_r27 = lbl_1_bss_35BC[0].unk_30; + var_r26 = 0; + var_r25 = 0; + sp8 = arg1->unk_64; + var_r23 = var_r30 = arg1->unk_68 % 4; + var_r29 = arg1->unk_68 / 4; + var_r22 = var_r29; + if (arg1->unk_70[0] == 0) { + if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_A) != 0) { + arg1->unk_70[0] = 1; + HuSprBankSet(var_r27, arg1->unk_68, 1); + HuSprBankSet(var_r27, arg1->unk_58 + 0x18, 1); + HuSprBankSet(var_r27, arg1->unk_58 + 0x1C, 1); + HuAudFXPlay(arg1->unk_68 + 0x6D); + fn_1_162A0(arg1); + } + else { + if ((HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 2) != 0)) { + var_r30++; + var_r26 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 1) != 0)) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if ((HuPadStkY[lbl_1_bss_3114->unk_6C] <= -5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 4) != 0)) { + var_r29++; + var_r25 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if ((HuPadStkY[lbl_1_bss_3114->unk_6C] >= 5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 8) != 0)) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B) != 0) { + arg1->unk_70[0] = arg1->unk_70[2] = 0; + HuSprBankSet(var_r27, arg1->unk_68, 0); + HuSprBankSet(var_r27, arg1->unk_58 + 0x18, 0); + HuSprBankSet(var_r27, arg1->unk_58 + 0x1C, 0); + HuSprAttrSet(var_r27, arg1->unk_58 + 0x20, 4); + HuSprAttrSet(var_r27, arg1->unk_58 + 0x24, 4); + HuAudFXPlay(3); + } + if (arg1->unk_68 != (var_r30 + (var_r29 * 4))) { + do { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_58) && (lbl_1_bss_3114[var_r28].unk_70[0] == 1) + && ((var_r30 + (var_r29 * 4)) == lbl_1_bss_3114[var_r28].unk_68)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 3) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 1) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 3) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 1) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + } while (var_r28 != 4); + if (arg1->unk_68 != (var_r30 + (var_r29 * 4))) { + arg1->unk_68 = var_r30 + (var_r29 * 4); + HuAudFXPlay(0); + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_4D8(); + var_f31 = fn_1_32C(lbl_1_data_57C[var_r23][0], lbl_1_data_57C[var_r30][0], var_r28, 10.0f); + var_f30 = fn_1_32C(lbl_1_data_57C[var_r22][1], lbl_1_data_57C[var_r29][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_58 + 0x18, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_58 + 0x1C, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_58 + 0x20, var_f31, 35.0f + var_f30); + HuSprPosSet(var_r27, arg1->unk_58 + 0x24, 1.0f + var_f31, 37.0f + var_f30); + } + } + } + (void)var_r30; +} + +void fn_1_173FC(MentDllUnkBss3114Struct *arg0) +{ + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + do { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != arg0->unk_58) && (lbl_1_bss_3114[var_r29].unk_70[0] == 1) && (arg0->unk_68 == lbl_1_bss_3114[var_r29].unk_68)) { + arg0->unk_68++; + break; + } + } + } while (var_r29 != 4); + arg0->unk_64 = 0; + HuSprBankSet(var_r30, arg0->unk_68, 0); + HuSprBankSet(var_r30, arg0->unk_58 + 0x18, 0); + HuSprBankSet(var_r30, arg0->unk_58 + 0x1C, 0); + HuSprBankSet(var_r30, arg0->unk_58 + 0x20, arg0->unk_64); + HuSprBankSet(var_r30, arg0->unk_58 + 0x31, arg0->unk_64); + HuSprPosSet(var_r30, arg0->unk_58 + 0x18, lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 / 4][1]); + HuSprPosSet(var_r30, arg0->unk_58 + 0x1C, lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 / 4][1]); + HuSprPosSet(var_r30, arg0->unk_58 + 0x20, lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_58 + 0x24, lbl_1_data_57C[arg0->unk_68 % 4][0] + 1, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x25); + HuSprPosSet(var_r30, arg0->unk_58 + 0x31, lbl_1_data_57C[arg0->unk_68 % 4][0] + 1, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x25); + arg0->unk_70[2] = 0; + HuSprAttrReset(var_r30, arg0->unk_58 + 0x18, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, arg0->unk_58 + 0x1C, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x20, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x24, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x31, HUSPR_ATTR_DISPOFF); +} + +void fn_1_17914(MentDllUnkBss3114Struct *arg0) +{ + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + HuSprBankSet(var_r30, arg0->unk_68, 0); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x18, 4); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x1C, 4); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x20, 4); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x24, 4); + HuSprAttrSet(var_r30, arg0->unk_58 + 0x31, 4); +} + +void fn_1_179DC(void) +{ + MentDllUnkBss3114Struct *var_r31; + s32 var_r29; + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_34; + for (var_r29 = 0; var_r29 < 0x11; var_r29++) { + HuSprAttrSet(var_r30, var_r29, HUSPR_ATTR_DISPOFF); + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_3114[var_r29]; + HuSprPosSet(var_r30, var_r31->unk_68, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1]); + HuSprAttrReset(var_r30, var_r31->unk_68, HUSPR_ATTR_DISPOFF); + if (var_r31->unk_60 == 0) { + HuSprBankSet(var_r30, var_r31->unk_58 + 8, var_r31->unk_58); + HuSprPosSet(var_r30, var_r31->unk_58 + 8, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1] + 0x19); + HuSprAttrReset(var_r30, var_r31->unk_58 + 8, HUSPR_ATTR_DISPOFF); + } + else { + HuSprBankSet(var_r30, var_r31->unk_58 + 0xC, var_r31->unk_64); + HuSprPosSet(var_r30, var_r31->unk_58 + 0xC, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1] + 0x19); + HuSprAttrReset(var_r30, var_r31->unk_58 + 0xC, HUSPR_ATTR_DISPOFF); + } + } + HuSprAttrReset(var_r30, 0x10, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(var_r30, 16.0f, -500.0f); +} + +void fn_1_17CC8(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + MentDllUnkBss3114Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + AnimData *var_r25; + AnimData *var_r24; + + var_r26 = HuSprGrpCreate(0x11); + arg0->unk_34 = var_r26; + for (var_r30 = 0; var_r30 < 8; var_r30++) { + var_r27 = HuSprCreate(HuSprAnimReadFile(var_r30 + DATA_MAKE_NUM(DATADIR_MENT, 0x31)), 0x3E8, 0); + HuSprGrpMemberSet(var_r26, var_r30, var_r27); + } + var_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3A)); + var_r24 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3B)); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27 = HuSprCreate(var_r25, 0x3DE, 0); + HuSprGrpMemberSet(var_r26, var_r30 + 8, var_r27); + var_r27 = HuSprCreate(var_r24, 0x3DE, 0); + HuSprGrpMemberSet(var_r26, var_r30 + 0xC, var_r27); + } + var_r27 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x30)), 0x7D0, 0); + HuSprGrpMemberSet(var_r26, 0x10, var_r27); + HuSprTPLvlSet(var_r26, 0x10, 0.8f); + HuSprPosSet(var_r26, 0x10, 96.0f, 32.0f); + var_r29 = lbl_1_bss_35BC[0].unk_34; + for (var_r28 = 0; var_r28 < 0x11; var_r28++) { + HuSprAttrSet(var_r29, var_r28, HUSPR_ATTR_DISPOFF); + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31 = &lbl_1_bss_3114[var_r28]; + HuSprPosSet(var_r29, var_r31->unk_68, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1]); + HuSprAttrReset(var_r29, var_r31->unk_68, HUSPR_ATTR_DISPOFF); + if (var_r31->unk_60 == 0) { + HuSprBankSet(var_r29, var_r31->unk_58 + 8, var_r31->unk_58); + HuSprPosSet(var_r29, var_r31->unk_58 + 8, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1] + 0x19); + HuSprAttrReset(var_r29, var_r31->unk_58 + 8, HUSPR_ATTR_DISPOFF); + } + else { + HuSprBankSet(var_r29, var_r31->unk_58 + 0xC, var_r31->unk_64); + HuSprPosSet(var_r29, var_r31->unk_58 + 0xC, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1] + 0x19); + HuSprAttrReset(var_r29, var_r31->unk_58 + 0xC, HUSPR_ATTR_DISPOFF); + } + } + HuSprAttrReset(var_r29, 0x10, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(var_r29, 16.0f, -500.0f); +} + +void fn_1_1811C(void) +{ + float var_f31; + MentDllUnkBss3114Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = lbl_1_bss_35BC[0].unk_34; + for (var_r29 = 0; var_r29 < 0x11; var_r29++) { + HuSprAttrSet(var_r30, var_r29, HUSPR_ATTR_DISPOFF); + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_3114[var_r29]; + HuSprPosSet(var_r30, var_r31->unk_68, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1]); + HuSprAttrReset(var_r30, var_r31->unk_68, HUSPR_ATTR_DISPOFF); + if (var_r31->unk_60 == 0) { + HuSprBankSet(var_r30, var_r31->unk_58 + 8, var_r31->unk_58); + HuSprPosSet(var_r30, var_r31->unk_58 + 8, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1] + 0x19); + HuSprAttrReset(var_r30, var_r31->unk_58 + 8, HUSPR_ATTR_DISPOFF); + } + else { + HuSprBankSet(var_r30, var_r31->unk_58 + 0xC, var_r31->unk_64); + HuSprPosSet(var_r30, var_r31->unk_58 + 0xC, lbl_1_data_5BC[var_r31->unk_58][0], lbl_1_data_5BC[var_r31->unk_58][1] + 0x19); + HuSprAttrReset(var_r30, var_r31->unk_58 + 0xC, HUSPR_ATTR_DISPOFF); + } + } + HuSprAttrReset(var_r30, 0x10, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(var_r30, 16.0f, -500.0f); + for (var_r28 = 0; var_r28 <= 0x3C; var_r28++) { + fn_1_4D8(); + if (var_r28 <= 0x32) { + var_f31 = fn_1_32C(-500.0f, 50.0f, var_r28, 50.0f); + } + else { + var_f31 = fn_1_254(50.0f, 40.0f, var_r28 - 0x32, 10.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_34, 16.0f, var_f31); + } +} + +void fn_1_1850C(void) +{ + float var_f31; + s32 var_r31; + + lbl_1_bss_35BC[0].unk_08[0] = -1; + lbl_1_bss_35BC[0].unk_04 = NULL; + for (var_r31 = 0; var_r31 <= 0x4B; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = fn_1_32C(40.0f, 50.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_254(50.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_34, 16.0f, var_f31); + if (var_r31 >= 0xF) { + var_f31 = fn_1_254(210.0f, -500.0f, var_r31 - 0xF, 60.0f); + HuSprGrpData[lbl_1_bss_35BC[0].unk_38].y = (s32)fn_1_234(HuSprGrpData[lbl_1_bss_35BC[0].unk_38].y, var_f31, 10.0f); + } + } +} + +void fn_1_1872C(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_38; + for (var_r31 = 0; var_r31 < 7; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } +} + +void fn_1_18788(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = HuSprGrpCreate(7); + arg0->unk_38 = var_r31; + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3C)), 0x7DA, 0); + HuSprGrpMemberSet(var_r31, 0, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3D)), 0x7C6, 0); + HuSprGrpMemberSet(var_r31, 1, var_r30); + HuSprPosSet(var_r31, 1, 0.0f, -80.0f); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3E)), 0x7D0, 0); + HuSprGrpMemberSet(var_r31, 2, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3F)), 0x7D0, 0); + HuSprGrpMemberSet(var_r31, 3, var_r30); + HuSprPosSet(var_r31, 3, 0.0f, -80.0f); + if (lbl_1_bss_A8[0] != 0) { + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x5A)), 0x7BC, 0); + HuSprGrpMemberSet(var_r31, 4, var_r30); + HuSprPosSet(var_r31, 4, -140.0f, -86.0f); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x5B)), 0x7BC, 0); + HuSprGrpMemberSet(var_r31, 5, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x5C)), 0x7D0, 0); + HuSprGrpMemberSet(var_r31, 6, var_r30); + HuSprScaleSet(var_r31, 6, 1.0f, 0.875f); + HuSprTPLvlSet(var_r31, 6, 0.5f); + } + HuSprExecLayerSet(0x40, 1); + HuSprGrpDrawNoSet(var_r31, 0x40); + var_r28 = lbl_1_bss_35BC[0].unk_38; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + HuSprAttrSet(var_r28, var_r29, 4); + } +} + +void fn_1_18A54(s32 arg0) +{ + float var_f31; + float var_f30; + s32 var_r31; + + var_r31 = lbl_1_bss_35BC[0].unk_38; + if (arg0 != 5) { + HuSprBankSet(var_r31, 0, arg0); + HuSprBankSet(var_r31, 1, arg0); + HuSprAttrSet(var_r31, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r31, 3, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r31, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r31, 1, HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_A8[0] != 0) { + if ((arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2)) != 0) || (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3)) != 0) + || (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4)) != 0) || (arg0 == 3 && (_CheckFlag(FLAG_ID_MAKE(0, 5)) != 0)) + || (arg0 == 4 && (_CheckFlag(FLAG_ID_MAKE(0, 6)) != 0))) { + HuSprAttrReset(var_r31, 4, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r31, 5, HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(var_r31, 5, 0.8f); + HuSprAttrReset(var_r31, 6, HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(var_r31, 6, 0.5f); + } + else { + HuSprAttrSet(var_r31, 4, 4); + HuSprAttrSet(var_r31, 5, 4); + HuSprAttrSet(var_r31, 6, 4); + } + } + } + else { + HuSprAttrSet(var_r31, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r31, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r31, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r31, 3, HUSPR_ATTR_DISPOFF); + } + lbl_1_bss_35BC[0].unk_08[0] = arg0; + lbl_1_bss_35BC[0].unk_1C[1] = (rand8() % 10) * 0x24; + HuSprGrpScaleSet(var_r31, 0.0f, 0.0f); + for (arg0 = 0; arg0 <= 0xF; arg0++) { + fn_1_4D8(); + if (arg0 <= 0xA) { + var_f31 = fn_1_32C(0.0f, 1.0f, arg0, 10.0f); + var_f30 = 0.01f; + } + else { + var_f31 = 1.0f; + var_f30 = fn_1_32C(0.01f, 1.0f, arg0 - 0xA, 5.0f); + } + HuSprGrpScaleSet(var_r31, var_f31, var_f30); + } +} + +void fn_1_18DCC(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_35BC[0].unk_38; + for (var_r31 = 0; var_r31 <= 0xF; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = 1.0f; + var_f30 = fn_1_32C(1.0f, 0.01f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_32C(1.0f, 0.0f, var_r31 - 0xA, 5.0f); + var_f30 = 0.01f; + } + HuSprGrpScaleSet(var_r29, var_f31, var_f30); + } + var_r28 = lbl_1_bss_35BC[0].unk_38; + for (var_r30 = 0; var_r30 < 7; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + lbl_1_bss_35BC[0].unk_08[0] = -1; + lbl_1_bss_35BC[0].unk_04 = NULL; +} + +void fn_1_18F74(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + Vec sp14; + Vec sp8; + s32 var_r31; + + var_r31 = lbl_1_bss_35BC[0].unk_38; + if (lbl_1_bss_35BC[0].unk_08[0] != -1) { + sp14.x = lbl_1_data_D8[lbl_1_bss_35BC[0].unk_08[0]].x; + sp14.y = 0.0f; + sp14.z = lbl_1_data_D8[lbl_1_bss_35BC[0].unk_08[0]].z; + Hu3D3Dto2D(&sp14, 1, &sp8); + sp8.y = fn_1_3F4(210.0f, 220.0f, lbl_1_bss_35BC[0].unk_1C[1]++, 360.0f); + if (lbl_1_bss_35BC[0].unk_1C[1] >= 0x168) { + lbl_1_bss_35BC[0].unk_1C[1] = 0; + } + HuSprGrpPosSet(var_r31, sp8.x, (s32)sp8.y); + } +} + +#if VERSION_PAL + +#define POSX1 353 +#define POSX2 325 + +#else + +#define POSX1 321 +#define POSX2 295 + +#endif + +void fn_1_190E8(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_3C; + for (var_r31 = 0; var_r31 < 0x5B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + } + if (lbl_1_bss_A8[2] != 5) { + HuSprBankSet(var_r30, 0, lbl_1_bss_A8[2]); + HuSprAttrReset(var_r30, 0, HUSPR_ATTR_DISPOFF); + } + else { + HuSprAttrReset(var_r30, 1, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 2, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 2, 288.0f, lbl_1_data_5DC[0][1]); + HuSprScaleSet(var_r30, 2, 1.0f, lbl_1_data_5DC[0][2]); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5DC[0][var_r31 + 3], lbl_1_data_5DC[0][1]); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r31].unk_68 + 7, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r31].unk_68 + 7, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], lbl_1_data_5DC[0][1]); + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0xF, HUSPR_ATTR_DISPOFF); + HuSprPosSet( + var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0xF, 1.0f + lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], 2.0f + lbl_1_data_5DC[0][1]); + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r31].unk_68 + 0x1F, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r31].unk_68 + 0x1F, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], lbl_1_data_5DC[4][1] - 9.0f); + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x27, HUSPR_ATTR_DISPOFF); + HuSprPosSet( + var_r30, lbl_1_bss_3114[var_r31].unk_58 + 0x27, 1.0f + lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], lbl_1_data_5DC[4][1] - 7.0f); + if (lbl_1_bss_3114[var_r31].unk_60 != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x1B, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, var_r31 + 0x1B, lbl_1_bss_3114[var_r31].unk_64); + HuSprPosSet(var_r30, var_r31 + 0x1B, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], 21.0f + lbl_1_data_5DC[0][1]); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x17, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, var_r31 + 0x17, lbl_1_bss_3114[var_r31].unk_58); + HuSprPosSet(var_r30, var_r31 + 0x17, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0] - 8.0f, lbl_1_data_5DC[0][1] - 21.0f); + } + HuSprPosSet(var_r30, var_r31 + 0x2F, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], 20.0f + lbl_1_data_5DC[4][1]); + HuSprAttrReset(var_r30, var_r31 + 0x2F, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, var_r31 + 0x33, 10.0f + lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], 21.0f + lbl_1_data_5DC[4][1]); + HuSprAttrReset(var_r30, var_r31 + 0x33, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, var_r31 + 0x33, 0); + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r31].unk_68 + 0x37, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], lbl_1_data_5DC[4][1] - 7.0f); + HuSprPosSet(var_r30, var_r31 + 0x3F, lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], 23.0f + lbl_1_data_5DC[4][1]); + HuSprPosSet(var_r30, var_r31 + 0x43, 14.0f + lbl_1_data_5DC[lbl_1_bss_3114[var_r31].unk_58][0], 24.0f + lbl_1_data_5DC[4][1]); + HuSprBankSet(var_r30, var_r31 + 0x43, 0); + } + HuSprPosSet(var_r30, 0x47, 340.0f, lbl_1_data_5DC[0][1]); + HuSprScaleSet(var_r30, 0x47, 0.0f, 0.0f); + HuSprAttrReset(var_r30, 0x47, HUSPR_ATTR_DISPOFF); + #if VERSION_NTSC + HuSprAttrReset(var_r30, 0x48, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 0x48, 366.0f, lbl_1_data_5DC[1][1]); + HuSprAttrReset(var_r30, 0x49, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 0x49, 367.0f, 2.0f + lbl_1_data_5DC[1][1]); + #endif + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 0x4A, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, var_r31 + 0x4A, POSX1 - (var_r31 * (POSX1-POSX2)), lbl_1_data_5DC[1][1]); + HuSprBankSet(var_r30, var_r31 + 0x4A, var_r31); + HuSprAttrReset(var_r30, var_r31 + 0x4C, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, var_r31 + 0x4C, POSX1+1 - (var_r31 * (POSX1-POSX2)), 2.0f + lbl_1_data_5DC[1][1]); + HuSprBankSet(var_r30, var_r31 + 0x4C, var_r31); + } + HuSprAttrReset(var_r30, 0x4E, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 0x4E, 340.0f, lbl_1_data_5DC[2][1]); + HuSprBankSet(var_r30, 0x4E, 0); + HuSprAttrReset(var_r30, 0x4F, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 0x4F, 341.0f, 2.0f + lbl_1_data_5DC[2][1]); + HuSprBankSet(var_r30, 0x4F, 0); + HuSprAttrReset(var_r30, 0x50, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 0x50, 340.0f, lbl_1_data_5DC[3][1]); + HuSprBankSet(var_r30, 0x50, 0); + HuSprAttrReset(var_r30, 0x51, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r30, 0x51, 341.0f, 2.0f + lbl_1_data_5DC[3][1]); + HuSprBankSet(var_r30, 0x51, 0); + HuSprAttrReset(var_r30, 0x52, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 0x53, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 0x57, HUSPR_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + HuWinPosSet(lbl_1_bss_35BC[0].unk_44[var_r31], 100.0f, -500.0f + (lbl_1_data_5DC[var_r31][1] - 21.0f)); + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_35BC[1].unk_08[var_r31] = lbl_1_bss_35BC[1].unk_1C[var_r31] = 0; + } + lbl_1_bss_35BC[1].unk_1C[1] = 0x14; + HuSprBankSet(var_r30, 0x4A, 0); + HuSprBankSet(var_r30, 0x4C, 0); + HuSprBankSet(var_r30, 0x4B, 2); + HuSprBankSet(var_r30, 0x4D, 2); + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); +} + +void fn_1_19C98(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + float sp8[2]; + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = 0; + var_r30 = lbl_1_bss_35BC[0].unk_3C; + { + s32 sp10[4][4] = { + { 0x106, 0x106, 0x106, 0x106 }, + { 0x13A, 0x133, 0x175, 0x175 }, + { 0x16E, 0x175, 0x133, 0x1A2 }, + { 0x1A2, 0x1A2, 0x1A2, 0x133 }, + }; + lbl_1_bss_35BC[0].unk_08[3] = 0; + var_r27 = arg1->unk_08[0]; + sp8[0] = HuSprData[HuSprGrpData[var_r30].members[3]].x; + sp8[1] = HuSprData[HuSprGrpData[var_r30].members[4]].x; + if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_A) != 0) { + arg1->unk_08[0]++; + HuAudFXPlay(2); + if (arg1->unk_08[0] > 4) { + lbl_1_bss_35BC[0].unk_08[1] = 1; + arg1->unk_08[0] = 4; + fn_1_1C674(); + } + lbl_1_bss_35BC[0].unk_08[3] = 1; + } + else if ((HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B) != 0) { + arg1->unk_08[0]--; + HuAudFXPlay(3); + if (arg1->unk_08[0] < 0) { + lbl_1_bss_35BC[0].unk_08[1] = -1; + arg1->unk_08[0] = 0; + fn_1_1C674(); + } + lbl_1_bss_35BC[0].unk_08[3] = 1; + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_RIGHT) != 0)) { + var_r26 = 1; + lbl_1_bss_35BC[0].unk_08[3] = 1; + HuAudFXPlay(0); + switch (arg1->unk_08[0]) { + case 0: + arg1->unk_1C[0] += 1; + if (arg1->unk_1C[0] > 3) { + arg1->unk_1C[0] = 0; + } + break; + case 1: + arg1->unk_1C[1] += 5; + if (arg1->unk_1C[1] > 0x32) { + arg1->unk_1C[1] = 0xA; + } + break; + case 2: + if (lbl_1_bss_A8[6] == 1) { + arg1->unk_1C[2]++; + if (arg1->unk_1C[2] > 2) { + arg1->unk_1C[2] = 0; + } + } + else { + arg1->unk_1C[2]++; + if (arg1->unk_1C[2] > 1) { + arg1->unk_1C[2] = 0; + } + } + break; + case 3: + arg1->unk_1C[3]++; + if (arg1->unk_1C[3] > 1) { + arg1->unk_1C[3] = 0; + } + break; + case 4: + arg1->unk_1C[4] += 1; + if (arg1->unk_1C[4] > 3) { + arg1->unk_1C[4] = 0; + } + break; + } + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_LEFT) != 0)) { + var_r26 = -1; + lbl_1_bss_35BC[0].unk_08[3] = 1; + HuAudFXPlay(0); + switch (arg1->unk_08[0]) { + case 0: + arg1->unk_1C[0] -= 1; + if (arg1->unk_1C[0] < 0) { + arg1->unk_1C[0] = 3; + } + break; + case 1: + arg1->unk_1C[1] -= 5; + if (arg1->unk_1C[1] < 0xA) { + arg1->unk_1C[1] = 0x32; + } + break; + case 2: + if (lbl_1_bss_A8[6] == 1) { + arg1->unk_1C[2]--; + if (arg1->unk_1C[2] < 0) { + arg1->unk_1C[2] = 2; + } + } + else { + arg1->unk_1C[2]--; + if (arg1->unk_1C[2] < 0) { + arg1->unk_1C[2] = 1; + } + } + break; + case 3: + arg1->unk_1C[3]--; + if (arg1->unk_1C[3] < 0) { + arg1->unk_1C[3] = 1; + } + break; + case 4: + arg1->unk_1C[4] -= 1; + if (arg1->unk_1C[4] < 0) { + arg1->unk_1C[4] = 3; + } + break; + } + } + else if (arg1->unk_08[0] == 4) { + if ((HuPadStkY[lbl_1_bss_3114->unk_6C] >= 0x1E) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_UP) != 0)) { + lbl_1_bss_35BC[0].unk_08[3] = 1; + HuAudFXPlay(0); + for (var_r29 = 0; var_r29 <= 0xA; var_r29++) { + fn_1_4D8(); + if (var_r29 <= 5) { + var_f29 = fn_1_32C(0.0f, 10.0f, var_r29, 5.0f); + } + else { + var_f29 = fn_1_32C(10.0f, 0.0f, var_r29 - 5, 5.0f); + } + HuSprPosSet(var_r30, 5, lbl_1_data_5DC[arg1->unk_1C[4]][0], (lbl_1_data_5DC[4][1] - 48.0f) - var_f29); + if (var_r29 == 3) { + arg1->unk_08[arg1->unk_1C[4] + 1]--; + if (arg1->unk_08[arg1->unk_1C[4] + 1] < 0) { + arg1->unk_08[arg1->unk_1C[4] + 1] = 9; + } + HuSprBankSet(var_r30, arg1->unk_1C[4] + 0x33, arg1->unk_08[arg1->unk_1C[4] + 1]); + HuSprBankSet(var_r30, arg1->unk_1C[4] + 0x43, arg1->unk_08[arg1->unk_1C[4] + 1]); + } + } + } + else if ((HuPadStkY[lbl_1_bss_3114->unk_6C] <= -0x1E) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 4) != 0)) { + lbl_1_bss_35BC[0].unk_08[3] = 1; + HuAudFXPlay(0); + for (var_r29 = 0; var_r29 <= 0xA; var_r29++) { + fn_1_4D8(); + if (var_r29 <= 5) { + var_f29 = fn_1_32C(0.0f, 10.0f, var_r29, 5.0f); + } + else { + var_f29 = fn_1_32C(10.0f, 0.0f, var_r29 - 5, 5.0f); + } + HuSprPosSet(var_r30, 6, lbl_1_data_5DC[arg1->unk_1C[4]][0], 49.0f + lbl_1_data_5DC[4][1] + var_f29); + if (var_r29 == 3) { + arg1->unk_08[arg1->unk_1C[4] + 1]++; + if (arg1->unk_08[arg1->unk_1C[4] + 1] > 9) { + arg1->unk_08[arg1->unk_1C[4] + 1] = 0; + } + HuSprBankSet(var_r30, arg1->unk_1C[4] + 0x33, arg1->unk_08[arg1->unk_1C[4] + 1]); + HuSprBankSet(var_r30, arg1->unk_1C[4] + 0x43, arg1->unk_08[arg1->unk_1C[4] + 1]); + } + } + } + } + if (var_r26 != 0) { + for (var_r29 = 0; var_r29 <= 0xA; var_r29++) { + fn_1_4D8(); + if (var_r29 <= 5) { + var_f31 = fn_1_32C(0.0f, 10.0f, var_r29, 5.0f); + var_f30 = fn_1_32C(1.0f, 0.0f, var_r29, 5.0f); + } + else { + var_f31 = fn_1_32C(10.0f, 0.0f, var_r29 - 5, 5.0f); + var_f30 = fn_1_32C(0.0f, 1.0f, var_r29 - 5, 5.0f); + } + if (arg1->unk_08[0] != 4) { + if (var_r26 == 1) { + HuSprPosSet(var_r30, 4, var_f31 + lbl_1_data_5DC[arg1->unk_08[0]][4], lbl_1_data_5DC[arg1->unk_08[0]][1]); + } + else { + HuSprPosSet(var_r30, 3, lbl_1_data_5DC[arg1->unk_08[0]][3] - var_f31, lbl_1_data_5DC[arg1->unk_08[0]][1]); + } + } + switch (arg1->unk_08[0]) { + case 0: + var_r27 = arg1->unk_1C[0] - var_r26; + if (var_r27 > 3) { + var_r27 = 0; + } + else if (var_r27 < 0) { + var_r27 = 3; + } + if (arg1->unk_1C[0] != 0) { + var_f30 = fn_1_32C(0.0f, 1.0f, var_r29, 10.0f); + } + else { + var_f30 = fn_1_32C(1.0f, 0.0f, var_r29, 10.0f); + } + HuSprScaleSet(var_r30, 0x47, var_f30, var_f30); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_f31 = fn_1_32C( + sp10[lbl_1_bss_3114[var_r28].unk_58][var_r27], sp10[lbl_1_bss_3114[var_r28].unk_58][arg1->unk_1C[0]], var_r29, 10.0f); + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r28].unk_68 + 7, var_f31, lbl_1_data_5DC[0][1]); + HuSprPosSet(var_r30, lbl_1_bss_3114[var_r28].unk_68 + 0xF, 1.0f + var_f31, 2.0f + lbl_1_data_5DC[0][1]); + if (lbl_1_bss_3114[var_r28].unk_60 != 0) { + HuSprPosSet(var_r30, var_r28 + 0x1B, var_f31, 21.0f + lbl_1_data_5DC[0][1]); + } + else { + HuSprPosSet(var_r30, var_r28 + 0x17, var_f31 - 8.0f, lbl_1_data_5DC[0][1] - 21.0f); + } + } + break; + case 1: + if (var_r26 == 1) { + #if VERSION_NTSC + HuSprPosSet(var_r30, 0x48, 366.0f + var_f31, lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x49, 367.0f + var_f31, 2.0f + lbl_1_data_5DC[1][1]); + #endif + HuSprPosSet(var_r30, 0x4A, POSX1 + var_f31, lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x4C, POSX1+1 + var_f31, 2.0f + lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x4B, POSX2 + var_f31, lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x4D, POSX2+1 + var_f31, 2.0f + lbl_1_data_5DC[1][1]); + } + else { + #if VERSION_NTSC + HuSprPosSet(var_r30, 0x48, 366.0f - var_f31, lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x49, 367.0f - var_f31, 2.0f + lbl_1_data_5DC[1][1]); + #endif + HuSprPosSet(var_r30, 0x4A, POSX1 - var_f31, lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x4C, POSX1+1 - var_f31, 2.0f + lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x4B, POSX2 - var_f31, lbl_1_data_5DC[1][1]); + HuSprPosSet(var_r30, 0x4D, POSX2+1 - var_f31, 2.0f + lbl_1_data_5DC[1][1]); + } + #if VERSION_NTSC + HuSprScaleSet(var_r30, 0x48, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x49, 1.0f, var_f30); + #endif + HuSprScaleSet(var_r30, 0x4A, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x4C, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x4B, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x4D, 1.0f, var_f30); + break; + case 2: + if (var_r26 == 1) { + HuSprPosSet(var_r30, 0x4E, 340.0f + var_f31, lbl_1_data_5DC[2][1]); + HuSprPosSet(var_r30, 0x4F, 341.0f + var_f31, 2.0f + lbl_1_data_5DC[2][1]); + } + else { + HuSprPosSet(var_r30, 0x4E, 340.0f - var_f31, lbl_1_data_5DC[2][1]); + HuSprPosSet(var_r30, 0x4F, 341.0f - var_f31, 2.0f + lbl_1_data_5DC[2][1]); + } + HuSprScaleSet(var_r30, 0x4E, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x4F, 1.0f, var_f30); + break; + case 3: + if (var_r26 == 1) { + HuSprPosSet(var_r30, 0x50, 340.0f + var_f31, lbl_1_data_5DC[3][1]); + HuSprPosSet(var_r30, 0x51, 341.0f + var_f31, 2.0f + lbl_1_data_5DC[3][1]); + } + else { + HuSprPosSet(var_r30, 0x50, 340.0f - var_f31, lbl_1_data_5DC[3][1]); + HuSprPosSet(var_r30, 0x51, 341.0f - var_f31, 2.0f + lbl_1_data_5DC[3][1]); + } + HuSprScaleSet(var_r30, 0x50, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x51, 1.0f, var_f30); + break; + case 4: + var_f31 = fn_1_32C(sp8[0], lbl_1_data_5DC[arg1->unk_1C[4]][0] - 32.0f, var_r29, 10.0f); + HuSprPosSet(var_r30, 3, var_f31, lbl_1_data_5DC[4][1]); + var_f31 = fn_1_32C(sp8[1], 33.0f + lbl_1_data_5DC[arg1->unk_1C[4]][0], var_r29, 10.0f); + HuSprPosSet(var_r30, 4, var_f31, lbl_1_data_5DC[4][1]); + var_f31 = fn_1_32C(32.0f + sp8[0], lbl_1_data_5DC[arg1->unk_1C[4]][0], var_r29, 10.0f); + HuSprPosSet(var_r30, 5, var_f31, lbl_1_data_5DC[4][1] - 48.0f); + HuSprPosSet(var_r30, 6, var_f31, 49.0f + lbl_1_data_5DC[4][1]); + if (var_r29 == 3) { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + HuSprAttrSet(var_r30, lbl_1_bss_3114[var_r28].unk_68 + 0x37, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, var_r28 + 0x3F, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, var_r28 + 0x43, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, lbl_1_bss_3114[arg1->unk_1C[4]].unk_68 + 0x37, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, arg1->unk_1C[4] + 0x3F, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, arg1->unk_1C[4] + 0x43, HUSPR_ATTR_DISPOFF); + } + break; + } + if (var_r29 == 6) { + switch (arg1->unk_08[0]) { + case 1: + HuSprBankSet(var_r30, 0x4A, arg1->unk_1C[1] % 10); + HuSprBankSet(var_r30, 0x4C, arg1->unk_1C[1] % 10); + HuSprBankSet(var_r30, 0x4B, arg1->unk_1C[1] / 10); + HuSprBankSet(var_r30, 0x4D, arg1->unk_1C[1] / 10); + break; + case 2: + HuSprBankSet(var_r30, 0x4E, arg1->unk_1C[2]); + HuSprBankSet(var_r30, 0x4F, arg1->unk_1C[2]); + break; + case 3: + HuSprBankSet(var_r30, 0x50, arg1->unk_1C[3]); + HuSprBankSet(var_r30, 0x51, arg1->unk_1C[3]); + break; + } + } + } + } + else if (var_r27 != arg1->unk_08[0]) { + for (var_r29 = 0; var_r29 <= 0xA; var_r29++) { + fn_1_4D8(); + var_f29 = fn_1_32C(lbl_1_data_5DC[var_r27][1], lbl_1_data_5DC[arg1->unk_08[0]][1], var_r29, 10.0f); + var_f30 = fn_1_32C(lbl_1_data_5DC[var_r27][2], lbl_1_data_5DC[arg1->unk_08[0]][2], var_r29, 10.0f); + HuSprPosSet(var_r30, 2, 288.0f, var_f29); + HuSprScaleSet(var_r30, 2, 1.0f, var_f30); + if (arg1->unk_08[0] != 4) { + var_f31 = fn_1_32C(sp8[0], lbl_1_data_5DC[arg1->unk_08[0]][3], var_r29, 10.0f); + HuSprPosSet(var_r30, 3, var_f31, var_f29); + var_f31 = fn_1_32C(sp8[1], lbl_1_data_5DC[arg1->unk_08[0]][4], var_r29, 10.0f); + HuSprPosSet(var_r30, 4, var_f31, var_f29); + var_f30 = fn_1_32C(1.0f, 0.0f, var_r29, 10.0f); + HuSprTPLvlSet(var_r30, 5, var_f30); + HuSprTPLvlSet(var_r30, 6, var_f30); + var_f29 = fn_1_32C(0.0f, 20.0f, var_r29, 10.0f); + HuSprPosSet(var_r30, 5, lbl_1_data_5DC[arg1->unk_1C[4]][0], (lbl_1_data_5DC[4][1] - var_f29) - 48.0f); + HuSprPosSet(var_r30, 6, lbl_1_data_5DC[arg1->unk_1C[4]][0], 49.0f + (lbl_1_data_5DC[4][1] + var_f29)); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + HuSprAttrSet(var_r30, lbl_1_bss_3114[var_r28].unk_68 + 0x37, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, var_r28 + 0x3F, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, var_r28 + 0x43, HUSPR_ATTR_DISPOFF); + } + } + else { + var_f31 = fn_1_32C(sp8[0], lbl_1_data_5DC[arg1->unk_1C[4]][0] - 32.0f, var_r29, 10.0f); + HuSprPosSet(var_r30, 3, var_f31, var_f29); + var_f31 = fn_1_32C(sp8[1], 33.0f + lbl_1_data_5DC[arg1->unk_1C[4]][0], var_r29, 10.0f); + HuSprPosSet(var_r30, 4, var_f31, var_f29); + HuSprAttrReset(var_r30, 5, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, 6, HUSPR_ATTR_DISPOFF); + var_f30 = fn_1_32C(0.0f, 1.0f, var_r29, 10.0f); + HuSprTPLvlSet(var_r30, 5, var_f30); + HuSprTPLvlSet(var_r30, 6, var_f30); + var_f29 = fn_1_32C(20.0f, 0.0f, var_r29, 10.0f); + HuSprPosSet(var_r30, 5, lbl_1_data_5DC[arg1->unk_1C[4]][0], (lbl_1_data_5DC[4][1] - var_f29) - 48.0f); + HuSprPosSet(var_r30, 6, lbl_1_data_5DC[arg1->unk_1C[4]][0], 49.0f + (lbl_1_data_5DC[4][1] + var_f29)); + if (var_r29 == 3) { + HuSprAttrReset(var_r30, lbl_1_bss_3114[arg1->unk_1C[4]].unk_68 + 0x37, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, arg1->unk_1C[4] + 0x3F, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, arg1->unk_1C[4] + 0x43, HUSPR_ATTR_DISPOFF); + } + } + } + if (arg1->unk_08[0] != 4) { + HuSprAttrSet(var_r30, 5, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, 6, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_35BC[0].unk_08[3] = 0; + } +} + +#undef POSX2 +#undef POSX1 + +void fn_1_1BB2C(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r26; + AnimData *var_r25; + + s32 sp8[4][2] = { + { 0x00000070, 0x00000060 }, + { 0x000001D2, 0x00000060 }, + { 0x00000070, 0x0000012D }, + { 0x000001D2, 0x0000012D }, + }; + var_r29 = HuSprGrpCreate(0x5B); + arg0->unk_3C = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3D)), 0x7C6, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + HuSprPosSet(var_r29, 0, 288.0f, 54.0f); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3F)), 0x7C6, 0); + HuSprGrpMemberSet(var_r29, 1, var_r30); + HuSprPosSet(var_r29, 1, 288.0f, 54.0f); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x41)), 0x7BC, 0); + HuSprGrpMemberSet(var_r29, 2, var_r30); + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x42)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 3, var_r30); + HuSprBankSet(var_r29, var_r31 + 3, var_r31); + } + var_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x39)); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r28 = HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x31)); + var_r26 = HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x4E)); + var_r30 = HuSprCreate(var_r28, 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 7, var_r30); + var_r30 = HuSprCreate(var_r25, 0x3F2, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0xF, var_r30); + var_r30 = HuSprCreate(var_r28, 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x1F, var_r30); + var_r30 = HuSprCreate(var_r25, 0x3F2, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x27, var_r30); + var_r30 = HuSprCreate(var_r26, 0x3DE, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x37, var_r30); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3A)); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x3B)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x3DE, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x17, var_r30); + var_r30 = HuSprCreate(var_r26, 0x3DE, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x1B, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x43)), 0x3DE, 0); + HuSprGrpMemberSet(var_r29, 0x47, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x44)), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, 0x48, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x46)), 0x3F2, 0); + HuSprGrpMemberSet(var_r29, 0x49, var_r30); + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x45)); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x47)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x4A, var_r30); + var_r30 = HuSprCreate(var_r26, 0x3F2, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x4C, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x48)), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, 0x4E, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x49)), 0x3F2, 0); + HuSprGrpMemberSet(var_r29, 0x4F, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x4A)), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, 0x50, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x4B)), 0x3F2, 0); + HuSprGrpMemberSet(var_r29, 0x51, var_r30); + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x4C)); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x4D)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x3DE, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2F, var_r30); + var_r30 = HuSprCreate(var_r26, 0x3D4, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x33, var_r30); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x56)); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x57)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x3CA, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x3F, var_r30); + var_r30 = HuSprCreate(var_r26, 0x3C0, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x43, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x40)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 0x52, var_r30); + HuSprTPLvlSet(var_r29, 0x52, 0.8f); + fn_1_6534(var_r29, 0x52, 288.0f, 240.0f); + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x18)); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x19)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x7BC, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x53, var_r30); + HuSprBankSet(var_r29, var_r31 + 0x53, var_r31); + fn_1_6534(var_r29, var_r31 + 0x53, sp8[var_r31][0], sp8[var_r31][1]); + var_r30 = HuSprCreate(var_r26, 0x7C6, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x57, var_r30); + HuSprBankSet(var_r29, var_r31 + 0x57, var_r31); + HuSprTPLvlSet(var_r29, var_r31 + 0x57, 0.5f); + fn_1_6534(var_r29, var_r31 + 0x57, sp8[var_r31][0] + 1, sp8[var_r31][1] + 6); + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + arg0->unk_44[var_r31] = HuWinExCreateStyled(0.0f, 0.0f, 0xC8, 0xC8, -1, 1); + HuWinBGTPLvlSet(arg0->unk_44[var_r31], 0.0f); + HuWinMesSet(arg0->unk_44[var_r31], var_r31 + 0x1B0010); + HuWinMesSpeedSet(arg0->unk_44[var_r31], 0); + HuWinDispOn(arg0->unk_44[var_r31]); + winData[arg0->unk_44[var_r31]].mess_shadow_color = 0; + } + fn_1_190E8(); +} + +void fn_1_1C554(void) +{ + s32 var_r31; + s32 var_r30; + MentDllUnkBss35BCStruct *var_r29; + + var_r30 = lbl_1_bss_35BC[0].unk_3C; + var_r29 = &lbl_1_bss_35BC[1]; + HuSprAttrReset(var_r30, 2, HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_35BC[1].unk_08[0] == 4) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, lbl_1_bss_3114[var_r29->unk_1C[4]].unk_68 + 0x37, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r29->unk_1C[4] + 0x3F, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r29->unk_1C[4] + 0x43, HUSPR_ATTR_DISPOFF); + return; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_1C674(void) +{ + MentDllUnkBss35BCStruct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_35BC[0].unk_3C; + var_r31 = &lbl_1_bss_35BC[1]; + HuSprAttrSet(var_r30, 2, HUSPR_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + HuSprAttrSet(var_r30, var_r29 + 3, HUSPR_ATTR_DISPOFF); + } + HuSprAttrSet(var_r30, lbl_1_bss_3114[var_r31->unk_1C[4]].unk_68 + 0x37, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, var_r31->unk_1C[4] + 0x3F, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r30, var_r31->unk_1C[4] + 0x43, HUSPR_ATTR_DISPOFF); +} + +void fn_1_1C754(void) +{ + float var_f31; + s32 var_r31; + MentDllUnkBss35BCStruct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + fn_1_190E8(); + var_r28 = lbl_1_bss_35BC[0].unk_3C; + var_r30 = &lbl_1_bss_35BC[1]; + HuSprAttrSet(var_r28, 2, 4); + for (var_r27 = 0; var_r27 < 4; var_r27++) { + HuSprAttrSet(var_r28, var_r27 + 3, 4); + } + HuSprAttrSet(var_r28, lbl_1_bss_3114[var_r30->unk_1C[4]].unk_68 + 0x37, 4); + HuSprAttrSet(var_r28, var_r30->unk_1C[4] + 0x3F, 4); + HuSprAttrSet(var_r28, var_r30->unk_1C[4] + 0x43, 4); + for (var_r31 = 0; var_r31 <= 60; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0x32) { + var_f31 = fn_1_32C(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_254(10.0f, 0.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_3C, 0.0f, var_f31); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + HuWinPosSet(lbl_1_bss_35BC->unk_44[var_r29], 100.0f, lbl_1_data_5DC[var_r29][1] - 21.0f + var_f31); + } + } +} + +void fn_1_1C990(void) +{ + float var_f31; + s32 var_r31; + MentDllUnkBss35BCStruct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r28 = lbl_1_bss_35BC[0].unk_3C; + var_r30 = &lbl_1_bss_35BC[1]; + HuSprAttrSet(var_r28, 2, 4); + for (var_r27 = 0; var_r27 < 4; var_r27++) { + HuSprAttrSet(var_r28, var_r27 + 3, 4); + } + HuSprAttrSet(var_r28, lbl_1_bss_3114[var_r30->unk_1C[4]].unk_68 + 0x37, 4); + HuSprAttrSet(var_r28, var_r30->unk_1C[4] + 0x3F, 4); + HuSprAttrSet(var_r28, var_r30->unk_1C[4] + 0x43, 4); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = fn_1_32C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_254(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_3C, 0.0f, var_f31); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + HuWinPosSet(lbl_1_bss_35BC->unk_44[var_r29], 100.0f, lbl_1_data_5DC[var_r29][1] - 21.0f + var_f31); + } + } +} + +void fn_1_1CBC8(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + for (var_r31 = 0; var_r31 < 0x22; var_r31++) { + HuSprAttrSet(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 0, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 1, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 5, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet(var_r30, 0x1B, 288.0f, lbl_1_data_640[1][2]); + HuSprScaleSet(var_r30, 0x1B, 1.0f, 0.75f); + HuSprPosSet(var_r30, 0x1C, lbl_1_data_640[1][3], lbl_1_data_640[1][2]); + HuSprPosSet(var_r30, 0x1D, lbl_1_data_640[1][4], lbl_1_data_640[1][2]); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 9, 0); + HuSprAttrReset(var_r30, var_r31 + 9, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 0x11, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 0x19, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, 0x1A, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, 0x1E, 0); + HuSprAttrReset(var_r30, 0x1E, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, 0x1F, 0); + HuSprAttrReset(var_r30, 0x1F, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, 0x20, 0); + HuSprAttrReset(var_r30, 0x20, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, 0x21, 0); + HuSprAttrReset(var_r30, 0x21, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuWinPosSet(lbl_1_bss_35BC->unk_44[var_r31], 100.0f, lbl_1_data_640[var_r31][2] - 0x209); + } + lbl_1_bss_35BC[0].unk_08[0] = 1; + lbl_1_bss_35BC[0].unk_1C[0] = lbl_1_bss_35BC[0].unk_1C[0] = 0; + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); +} + +void fn_1_1CF68(void) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_35BC[0].unk_30; + for (var_r30 = 0; var_r30 < 8; var_r30++) { + HuSprBankSet(var_r31, var_r30 + 9, 0); + } + HuSprBankSet(var_r31, 0x19, 0); + HuSprBankSet(var_r31, 0x1A, 0); + HuSprPosSet(var_r31, 0x1B, 288.0f, lbl_1_data_640[1][2]); + HuSprScaleSet(var_r31, 0x1B, 1.0f, 0.75f); + HuSprPosSet(var_r31, 0x1C, lbl_1_data_640[1][3], lbl_1_data_640[1][2]); + HuSprPosSet(var_r31, 0x1D, lbl_1_data_640[1][4], lbl_1_data_640[1][2]); + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + fn_1_4D8(); + if (var_r30 <= 5) { + var_f31 = fn_1_32C(1.0f, 0.0f, var_r30, 5.0f); + } + else { + var_f31 = fn_1_32C(0.0f, 1.0f, var_r30 - 5, 5.0f); + } + if (lbl_1_bss_3114->unk_68 != 0) { + var_f30 = fn_1_32C(lbl_1_data_640[lbl_1_bss_3114->unk_68 % 4][0], lbl_1_data_640[0][0], var_r30, 10.0f); + var_f29 = fn_1_32C(lbl_1_data_640[lbl_1_bss_3114->unk_68 / 4][1], lbl_1_data_640[0][1], var_r30, 10.0f); + HuSprPosSet(var_r31, 0x19, var_f30, var_f29); + HuSprPosSet(var_r31, 0x1A, var_f30, var_f29); + } + if (lbl_1_bss_35BC[0].unk_1C[0] != 0) { + HuSprScaleSet(var_r31, 0x1E, 1.0f, var_f31); + HuSprScaleSet(var_r31, 0x1F, 1.0f, var_f31); + } + if (lbl_1_bss_35BC[0].unk_1C[1] != 0) { + HuSprScaleSet(var_r31, 0x20, 1.0f, var_f31); + HuSprScaleSet(var_r31, 0x21, 1.0f, var_f31); + } + if (var_r30 == 6) { + HuSprBankSet(var_r31, 0x1E, 0); + HuSprBankSet(var_r31, 0x1F, 0); + HuSprBankSet(var_r31, 0x20, 0); + HuSprBankSet(var_r31, 0x21, 0); + } + } + lbl_1_bss_3114[0].unk_70[0] = lbl_1_bss_3114[0].unk_68 = 0; + lbl_1_bss_35BC[0].unk_08[0] = 1; + lbl_1_bss_35BC[0].unk_1C[0] = lbl_1_bss_35BC[0].unk_1C[1] = 0; +} + +void fn_1_1D4FC(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r27; + AnimData *var_r26; + + s32 sp8[4][2] = { + { 0x00000070, 0x00000037 }, + { 0x000001D2, 0x00000037 }, + { 0x00000070, 0x0000011A }, + { 0x000001D2, 0x0000011A }, + }; + arg0->unk_30 = var_r30 = (s16)HuSprGrpCreate(0x22); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x58)), 0x7D0, 0); + HuSprGrpMemberSet(var_r30, 0, var_r29); + HuSprTPLvlSet(var_r30, 0, 0.8f); + fn_1_6534(var_r30, 0, 288.0f, 240.0f); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x18)); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x19)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(var_r27, 0x7BC, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 1, var_r29); + HuSprBankSet(var_r30, var_r31 + 1, var_r31); + fn_1_6534(var_r30, var_r31 + 1, sp8[var_r31][0], sp8[var_r31][1]); + var_r29 = HuSprCreate(var_r26, 0x7C6, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 5, var_r29); + HuSprBankSet(var_r30, var_r31 + 5, var_r31); + HuSprTPLvlSet(var_r30, var_r31 + 5, 0.5f); + fn_1_6534(var_r30, var_r31 + 5, sp8[var_r31][0] + 1, sp8[var_r31][1] + 6); + } + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x41)), 0x7BC, 0); + HuSprGrpMemberSet(var_r30, 0x1B, var_r29); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x42)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29 = HuSprCreate(var_r27, 0, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x1C, var_r29); + HuSprBankSet(var_r30, var_r31 + 0x1C, var_r31); + } + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x22)); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r29 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x1A)), 0x3E8, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 9, var_r29); + HuSprPosSet(var_r30, var_r31 + 9, lbl_1_data_640[var_r31 % 4][0], lbl_1_data_640[var_r31 / 4][1]); + var_r29 = HuSprCreate(var_r27, 0x3F2, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 0x11, var_r29); + HuSprTPLvlSet(var_r30, var_r31 + 0x11, 0.5f); + HuSprPosSet(var_r30, var_r31 + 0x11, lbl_1_data_640[var_r31 % 4][0] + 1, lbl_1_data_640[var_r31 / 4][1] + 2); + } + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x23)), 0, 0); + HuSprGrpMemberSet(var_r30, 0x19, var_r29); + HuSprPosSet(var_r30, 0x19, lbl_1_data_640[0][0], lbl_1_data_640[0][1]); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x28)), 0xA, 0); + HuSprGrpMemberSet(var_r30, 0x1A, var_r29); + HuSprPosSet(var_r30, 0x1A, lbl_1_data_640[0][0], lbl_1_data_640[0][1]); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x5D)), 0x3E8, 0); + HuSprGrpMemberSet(var_r30, 0x1E, var_r29); + HuSprPosSet(var_r30, 0x1E, 340.0f, lbl_1_data_640[1][2]); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x5E)), 0x3F2, 0); + HuSprGrpMemberSet(var_r30, 0x1F, var_r29); + HuSprTPLvlSet(var_r30, 0x1F, 0.5f); + HuSprPosSet(var_r30, 0x1F, 341.0f, lbl_1_data_640[1][2] + 2); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x48)), 0x3E8, 0); + HuSprGrpMemberSet(var_r30, 0x20, var_r29); + HuSprPosSet(var_r30, 0x20, 340.0f, lbl_1_data_640[2][2]); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x49)), 0x3F2, 0); + HuSprGrpMemberSet(var_r30, 0x21, var_r29); + HuSprTPLvlSet(var_r30, 0x21, 0.5f); + HuSprPosSet(var_r30, 0x21, 341.0f, lbl_1_data_640[2][2] + 2); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + arg0->unk_44[var_r31] = HuWinExCreateStyled(0.0f, 0.0f, 0xC8, 0xC8, -1, 1); + HuWinBGTPLvlSet(arg0->unk_44[var_r31], 0.0f); + HuWinMesSet(arg0->unk_44[var_r31], var_r31 + 0x1B002D); + HuWinMesSpeedSet(arg0->unk_44[var_r31], 0); + HuWinDispOn(arg0->unk_44[var_r31]); + if (var_r31 == 0) { + HuWinDispOff(arg0->unk_44[var_r31]); + } + winData[arg0->unk_44[var_r31]].mess_shadow_color = 0; + } + fn_1_1CBC8(); +} + +void fn_1_1DED8() +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + HuSprAttrReset(var_r30, 0x1B, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 0x1C, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_1DF48(void) +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_35BC[0].unk_30; + HuSprAttrSet(var_r30, 0x1B, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrSet(var_r30, var_r31 + 0x1C, 4); + } +} + +void fn_1_1DFB8(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + fn_1_1CBC8(); + var_r28 = lbl_1_bss_35BC[0].unk_30; + HuSprAttrSet(var_r28, 0x1B, 4); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + HuSprAttrSet(var_r28, var_r29 + 0x1C, 4); + } + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0x32) { + var_f31 = fn_1_32C(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_254(10.0f, 0.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_30, 0.0f, var_f31); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + HuWinPosSet(lbl_1_bss_35BC[0].unk_44[var_r30], 100.0f, lbl_1_data_640[var_r30][2] - 0x15 + var_f31); + } + } +} + +void fn_1_1E1B4(void) +{ + float var_f31; + s32 var_r31; + MentDllUnkBss35BCStruct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r28 = lbl_1_bss_35BC[0].unk_3C; + var_r30 = &lbl_1_bss_35BC[1]; + HuSprAttrSet(var_r28, 2, 4); + for (var_r27 = 0; var_r27 < 4; var_r27++) { + HuSprAttrSet(var_r28, var_r27 + 3, 4); + } + HuSprAttrSet(var_r28, lbl_1_bss_3114[var_r30->unk_1C[4]].unk_68 + 0x37, 4); + HuSprAttrSet(var_r28, var_r30->unk_1C[4] + 0x3F, 4); + HuSprAttrSet(var_r28, var_r30->unk_1C[4] + 0x43, 4); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = fn_1_32C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_254(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_30, 0.0f, var_f31); + for (var_r29 = 0; var_r29 < 3; var_r29++) { + HuWinPosSet(lbl_1_bss_35BC->unk_44[var_r29], 100.0f, lbl_1_data_640[var_r29][2] - 0x15 + var_f31); + } + } +} + +void fn_1_1E404(omObjData *arg0, MentDllUnkBss3114Struct *arg1) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r28 = lbl_1_bss_35BC[0].unk_30; + var_r26 = 0; + var_r25 = 0; + var_r30 = arg1->unk_68 % 4; + var_r24 = var_r30; + var_r29 = arg1->unk_68 / 4; + var_r23 = var_r29; + if (arg1->unk_70[0] == 0) { + if (HuPadBtnDown[arg1->unk_6C] & PAD_BUTTON_A) { + arg1->unk_70[0] = 1; + HuSprBankSet(var_r28, arg1->unk_68 + 9, 1); + HuSprBankSet(var_r28, 0x19, 1); + HuSprBankSet(var_r28, 0x1A, 1); + HuAudFXPlay(arg1->unk_68 + 0x6D); + } + else { + if ((HuPadStkX[arg1->unk_6C] >= 5) || ((HuPadBtn[arg1->unk_6C] & 2) != 0)) { + var_r30++; + var_r26 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if ((HuPadStkX[arg1->unk_6C] <= -5) || ((HuPadBtn[arg1->unk_6C] & 1) != 0)) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if ((HuPadStkY[arg1->unk_6C] <= -5) || ((HuPadBtn[arg1->unk_6C] & 4) != 0)) { + var_r29++; + var_r25 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if ((HuPadStkY[arg1->unk_6C] >= 5) || ((HuPadBtn[arg1->unk_6C] & 8) != 0)) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if ((HuPadBtnDown[arg1->unk_6C] & 0x200) != 0) { + arg1->unk_70[0] = 0; + HuSprBankSet(var_r28, arg1->unk_68 + 9, 0); + HuSprBankSet(var_r28, 0x19, 0); + HuSprBankSet(var_r28, 0x1A, 0); + HuAudFXPlay(3); + } + if (arg1->unk_68 != (var_r30 + (var_r29 * 4))) { + arg1->unk_68 = var_r30 + (var_r29 * 4); + HuAudFXPlay(0); + for (var_r27 = 0; var_r27 <= 0xA; var_r27++) { + fn_1_4D8(); + var_f31 = fn_1_32C(lbl_1_data_640[var_r24][0], lbl_1_data_640[var_r30][0], var_r27, 10.0f); + var_f30 = fn_1_32C(lbl_1_data_640[var_r23][1], lbl_1_data_640[var_r29][1], var_r27, 10.0f); + HuSprPosSet(var_r28, 0x19, var_f31, var_f30); + HuSprPosSet(var_r28, 0x1A, var_f31, var_f30); + } + } +} + +void fn_1_1E8A4(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r30 = arg1->unk_30; + var_r28 = 0; + var_r27 = arg1->unk_08[0]; + lbl_1_bss_35BC[0].unk_08[3] = 0; + if (HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_A) { + lbl_1_bss_35BC[0].unk_08[3] = 1; + arg1->unk_08[0]++; + if (arg1->unk_08[0] > 2) { + arg1->unk_08[0] = 2; + lbl_1_bss_35BC[1].unk_08[1] = 1; + var_r24 = lbl_1_bss_35BC[0].unk_30; + HuSprAttrSet(var_r24, 0x1B, 4); + for (var_r26 = 0; var_r26 < 2; var_r26++) { + HuSprAttrSet(var_r24, var_r26 + 0x1C, 4); + } + } + HuAudFXPlay(2); + } + else if (HuPadBtnDown[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_B) { + lbl_1_bss_35BC[0].unk_08[3] = 1; + arg1->unk_08[0]--; + if (arg1->unk_08[0] < 1) { + arg1->unk_08[0] = 1; + lbl_1_bss_35BC[1].unk_08[1] = -1; + var_r23 = lbl_1_bss_35BC[0].unk_30; + HuSprAttrSet(var_r23, 0x1B, 4); + for (var_r25 = 0; var_r25 < 2; var_r25++) { + HuSprAttrSet(var_r23, var_r25 + 0x1C, 4); + } + } + HuAudFXPlay(3); + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5) || (HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_RIGHT)) { + var_r28 = 1; + lbl_1_bss_35BC[0].unk_08[3] = 1; + switch (arg1->unk_08[0]) { + case 1: + if (lbl_1_bss_A8[5] == 1) { + arg1->unk_1C[0] += 1; + if (arg1->unk_1C[0] > 4) { + arg1->unk_1C[0] = 0; + } + } + else { + arg1->unk_1C[0] += 1; + if (arg1->unk_1C[0] > 4) { + arg1->unk_1C[0] = 0; + } + if (arg1->unk_1C[0] == 3) { + arg1->unk_1C[0] = 4; + } + } + break; + case 2: + if (lbl_1_bss_A8[6] == 1) { + arg1->unk_1C[1]++; + if (arg1->unk_1C[1] > 2) { + arg1->unk_1C[1] = 0; + } + } + else { + arg1->unk_1C[1]++; + if (arg1->unk_1C[1] > 1) { + arg1->unk_1C[1] = 0; + } + } + break; + } + HuAudFXPlay(0); + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 1) != 0)) { + var_r28 = -1; + lbl_1_bss_35BC[0].unk_08[3] = 1; + switch (arg1->unk_08[0]) { + case 1: + if (lbl_1_bss_A8[5] == 1) { + arg1->unk_1C[0] -= 1; + if (arg1->unk_1C[0] < 0) { + arg1->unk_1C[0] = 4; + } + } + else { + arg1->unk_1C[0] -= 1; + if (arg1->unk_1C[0] < 0) { + arg1->unk_1C[0] = 4; + } + if (arg1->unk_1C[0] == 3) { + arg1->unk_1C[0] = 2; + } + } + break; + case 2: + if (lbl_1_bss_A8[6] == 1) { + arg1->unk_1C[1]--; + if (arg1->unk_1C[1] < 0) { + arg1->unk_1C[1] = 2; + } + } + else { + arg1->unk_1C[1]--; + if (arg1->unk_1C[1] < 0) { + arg1->unk_1C[1] = 1; + } + } + break; + } + HuAudFXPlay(0); + } + if (var_r27 != arg1->unk_08[0]) { + for (var_r29 = 0; var_r29 < 0xB; var_r29++) { + fn_1_4D8(); + var_f29 = fn_1_32C(lbl_1_data_640[var_r27][2], lbl_1_data_640[arg1->unk_08[0]][2], var_r29, 10.0f); + HuSprPosSet(var_r30, 0x1B, 288.0f, var_f29); + var_f31 = fn_1_32C(lbl_1_data_640[var_r27][3], lbl_1_data_640[arg1->unk_08[0]][3], var_r29, 10.0f); + HuSprPosSet(var_r30, 0x1C, var_f31, var_f29); + var_f31 = fn_1_32C(lbl_1_data_640[var_r27][4], lbl_1_data_640[arg1->unk_08[0]][4], var_r29, 10.0f); + HuSprPosSet(var_r30, 0x1D, var_f31, var_f29); + } + } + else if (var_r28 != 0) { + for (var_r29 = 0; var_r29 <= 0xA; var_r29++) { + fn_1_4D8(); + if (var_r29 <= 5) { + var_f31 = fn_1_32C(0.0f, 10.0f, var_r29, 5.0f); + var_f30 = fn_1_32C(1.0f, 0.0f, var_r29, 5.0f); + } + else { + var_f31 = fn_1_32C(10.0f, 0.0f, var_r29 - 5, 5.0f); + var_f30 = fn_1_32C(0.0f, 1.0f, var_r29 - 5, 5.0f); + } + if (var_r28 == 1) { + HuSprPosSet(var_r30, 0x1D, var_f31 + lbl_1_data_640[arg1->unk_08[0]][4], lbl_1_data_640[arg1->unk_08[0]][2]); + } + else { + HuSprPosSet(var_r30, 0x1C, lbl_1_data_640[arg1->unk_08[0]][3] - var_f31, lbl_1_data_640[arg1->unk_08[0]][2]); + } + switch (arg1->unk_08[0]) { + case 1: + if (var_r28 == 1) { + HuSprPosSet(var_r30, 0x1E, 340.0f + var_f31, lbl_1_data_640[1][2]); + HuSprPosSet(var_r30, 0x1F, 340.0f + var_f31, lbl_1_data_640[1][2] + 2); + } + else { + HuSprPosSet(var_r30, 0x1E, 341.0f - var_f31, lbl_1_data_640[1][2]); + HuSprPosSet(var_r30, 0x1F, 341.0f - var_f31, lbl_1_data_640[1][2] + 2); + } + HuSprScaleSet(var_r30, 0x1E, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x1F, 1.0f, var_f30); + break; + case 2: + if (var_r28 == 1) { + HuSprPosSet(var_r30, 0x20, 340.0f + var_f31, lbl_1_data_640[2][2]); + HuSprPosSet(var_r30, 0x21, 340.0f + var_f31, lbl_1_data_640[2][2] + 2); + } + else { + HuSprPosSet(var_r30, 0x20, 341.0f - var_f31, lbl_1_data_640[2][2]); + HuSprPosSet(var_r30, 0x21, 341.0f - var_f31, lbl_1_data_640[2][2] + 2); + } + HuSprScaleSet(var_r30, 0x20, 1.0f, var_f30); + HuSprScaleSet(var_r30, 0x21, 1.0f, var_f30); + break; + } + if (var_r29 == 6) { + switch (arg1->unk_08[0]) { + case 1: + HuSprBankSet(var_r30, 0x1E, arg1->unk_1C[0]); + HuSprBankSet(var_r30, 0x1F, arg1->unk_1C[0]); + break; + case 2: + HuSprBankSet(var_r30, 0x20, arg1->unk_1C[1]); + HuSprBankSet(var_r30, 0x21, arg1->unk_1C[1]); + break; + } + } + } + } + lbl_1_bss_35BC[0].unk_08[3] = 0; +} + +void fn_1_1F5F0(void) +{ + s32 var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_35BC[0].unk_34; + for (var_r30 = 0; var_r30 < 9; var_r30++) { + HuSprAttrSet(var_r31, var_r30, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r31, 0, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r31, 0, lbl_1_bss_35BC[0].unk_1C[0]); + HuSprAttrReset(var_r31, lbl_1_bss_3114->unk_68 + 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(var_r31, 16.0f, -500.0f); +} + +void fn_1_1F6B8(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r29 = HuSprGrpCreate(9); + arg0->unk_34 = var_r29; + var_r27 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x59)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 0, var_r27); + fn_1_6534(var_r29, 0, 75.0f, 25.0f); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r27 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MENT, 0x31)), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 1, var_r27); + HuSprPosSet(var_r29, var_r31 + 1, 24.0f, 25.0f); + } + var_r30 = lbl_1_bss_35BC[0].unk_34; + for (var_r28 = 0; var_r28 < 9; var_r28++) { + HuSprAttrSet(var_r30, var_r28, 4); + } + HuSprAttrReset(var_r30, 0, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, 0, lbl_1_bss_35BC[0].unk_1C[0]); + HuSprAttrReset(var_r30, lbl_1_bss_3114->unk_68 + 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(var_r30, 16.0f, -500.0f); +} + +void fn_1_1F868(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_35BC[0].unk_34; + for (var_r29 = 0; var_r29 < 9; var_r29++) { + HuSprAttrSet(var_r30, var_r29, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 0, HUSPR_ATTR_DISPOFF); + HuSprBankSet(var_r30, 0, lbl_1_bss_35BC[0].unk_1C[0]); + HuSprAttrReset(var_r30, lbl_1_bss_3114->unk_68 + 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(var_r30, 16.0f, -500.0f); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0x32) { + var_f31 = fn_1_32C(-500.0f, 50.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_254(50.0f, 40.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_34, 16.0f, var_f31); + } +} + +void fn_1_1FA34(void) +{ + float var_f31; + s32 var_r31; + + lbl_1_bss_35BC[0].unk_08[0] = -1; + lbl_1_bss_35BC[0].unk_04 = NULL; + for (var_r31 = 0; var_r31 <= 0x4B; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = fn_1_32C(40.0f, 50.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_254(50.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_34, 16.0f, var_f31); + if (var_r31 >= 0xF) { + var_f31 = fn_1_254(210.0f, -500.0f, var_r31 - 0xF, 60.0f); + HuSprGrpData[lbl_1_bss_35BC[0].unk_38].y = (s32)fn_1_234(HuSprGrpData[lbl_1_bss_35BC[0].unk_38].y, var_f31, 10.0f); + } + } +} + +void fn_1_1FC54(void) +{ + float var_f31; + s32 var_r31; + + lbl_1_bss_35BC[0].unk_08[0] = -1; + lbl_1_bss_35BC[0].unk_04 = NULL; + for (var_r31 = 0; var_r31 <= 0x28; var_r31++) { + fn_1_4D8(); + var_f31 = fn_1_254(40.0f, -500.0f, var_r31, 40.0f); + HuSprGrpPosSet(lbl_1_bss_35BC[0].unk_34, 16.0f, var_f31); + var_f31 = fn_1_254(210.0f, -500.0f, var_r31, 40.0f); + HuSprGrpData[lbl_1_bss_35BC[0].unk_38].y = (s32)fn_1_234(HuSprGrpData[lbl_1_bss_35BC[0].unk_38].y, var_f31, 10.0f); + } +} + +void fn_1_1FE08(void) +{ + s32 sp8; + s32 var_r31; + s32 var_r30; + + sp8 = 0; + var_r30 = lbl_1_bss_35BC[0].unk_40; + for (var_r31 = 0; var_r31 < 0x13; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r30, var_r31, 0); + lbl_1_bss_3114[var_r31].unk_70[3] = lbl_1_bss_3114[var_r31].unk_60 = 0; + HuSprAttrReset(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 4, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 0xA, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 0xB, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 0xF, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); +} + +void fn_1_1FF4C(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) +{ + s32 sp8; + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + sp8 = 0; + var_r28 = lbl_1_bss_35BC[0].unk_40; + var_r29 = var_r27 = var_r26 = var_r25 = 0; + lbl_1_bss_35BC[0].unk_1C[0] = 0; + var_r29 = 1; + for (var_r30 = 1; var_r30 < 4; var_r30++) { + if (lbl_1_bss_3114[var_r30].unk_60 == 0) { + var_r29++; + } + } + var_r27 = 1; + for (var_r30 = 1; var_r30 < 4; var_r30++) { + if (HuPadStatGet(var_r30) != -1) { + var_r27++; + } + } + if (var_r27 >= 2) { + fn_1_208F4(); + if ((HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 2) != 0)) { + var_r29++; + var_r26 = 1; + } + else if ((HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5) || ((HuPadBtn[lbl_1_bss_3114->unk_6C] & 1) != 0)) { + var_r29--; + var_r26 = -1; + } + } + else { + fn_1_20A24(); + } + if (var_r29 < 1) { + var_r29 = var_r27; + } + else if (var_r29 > var_r27) { + if (var_r26 == 0) { + var_r29 = var_r27; + var_r25 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r25 != 0)) { + lbl_1_bss_35BC[0].unk_1C[0] = 1; + HuAudFXPlay(0); + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + if (var_r30 <= 5) { + var_f30 = fn_1_32C(0.0f, 10.0f, var_r30, 5.0f); + var_f31 = fn_1_32C(1.0f, 0.0f, var_r30, 5.0f); + } + else { + var_f30 = fn_1_32C(10.0f, 0.0f, var_r30 - 5, 5.0f); + var_f31 = fn_1_32C(0.0f, 1.0f, var_r30 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r28, 9, (lbl_1_data_690[3][0] + 0x32) + var_f30, lbl_1_data_690[0][1]); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r28, 8, (lbl_1_data_690[0][0] - 0x32) - var_f30, lbl_1_data_690[0][1]); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if ((var_r31 < var_r29) && (lbl_1_bss_3114[var_r31].unk_60 == 1)) { + lbl_1_bss_3114[var_r31].unk_70[3] = 0; + HuSprScaleSet(var_r28, var_r31, var_f31, 1.0f); + HuSprScaleSet(var_r28, var_r31 + 4, var_f31, 1.0f); + if (var_r30 == 5) { + HuSprBankSet(var_r28, var_r31, 0); + } + } + else if ((var_r31 >= var_r29) && (lbl_1_bss_3114[var_r31].unk_60 == 0)) { + lbl_1_bss_3114[var_r31].unk_70[3] = 1; + HuSprScaleSet(var_r28, var_r31, var_f31, 1.0f); + HuSprScaleSet(var_r28, var_r31 + 4, var_f31, 1.0f); + if (var_r30 == 5) { + HuSprBankSet(var_r28, var_r31, 1); + } + } + } + fn_1_4D8(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r31 < var_r29) { + lbl_1_bss_3114[var_r31].unk_60 = 0; + } + else { + lbl_1_bss_3114[var_r31].unk_60 = 1; + } + } + } + lbl_1_bss_35BC[0].unk_1C[0] = 0; +} + +void fn_1_2055C(s32 arg0) +{ + s32 spC; + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_35BC[0].unk_40; + if (arg0 == 0) { + spC = 0; + var_r30 = lbl_1_bss_35BC[0].unk_40; + for (var_r31 = 0; var_r31 < 0x13; var_r31++) { + HuSprAttrSet(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r30, var_r31, 0); + lbl_1_bss_3114[var_r31].unk_70[3] = lbl_1_bss_3114[var_r31].unk_60 = 0; + HuSprAttrReset(var_r30, var_r31, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 4, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r30, 0xA, HUSPR_ATTR_DISPOFF); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 0xB, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r30, var_r31 + 0xF, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); + } + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_4D8(); + if (var_r29 <= 0x32) { + var_f31 = fn_1_32C(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_254(10.0f, 2.06f, var_r29 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 0.0f, var_f31); + } +} + +void fn_1_207BC(void) +{ + s32 spC; + s32 sp8; + float var_f31; + s32 var_r31; + s32 var_r30; + + spC = 0; + sp8 = 0; + var_r30 = lbl_1_bss_35BC[0].unk_40; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_4D8(); + if (var_r31 <= 0xA) { + var_f31 = fn_1_32C(2.06f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_254(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r30, 0.0f, var_f31); + } +} + +void fn_1_208F4(void) +{ + s32 var_r31; + + var_r31 = lbl_1_bss_35BC[0].unk_40; + HuSprAttrReset(var_r31, 8, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r31, 8, lbl_1_data_690[0][0] - 0x32, lbl_1_data_690[0][1]); + HuSprAttrReset(var_r31, 9, HUSPR_ATTR_DISPOFF); + HuSprPosSet(var_r31, 9, lbl_1_data_690[3][0] + 0x32, lbl_1_data_690[0][1]); +} + +void fn_1_20A24(void) +{ + s32 var_r31; + + var_r31 = lbl_1_bss_35BC[0].unk_40; + HuSprAttrSet(var_r31, 8, 4); + HuSprPosSet(var_r31, 8, lbl_1_data_690[0][0] - 0x32, lbl_1_data_690[0][1]); + HuSprAttrSet(var_r31, 9, 4); + HuSprPosSet(var_r31, 9, lbl_1_data_690[3][0] + 0x32, lbl_1_data_690[0][1]); +} + +void fn_1_20B54(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 sp8; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + AnimData *var_r26; + AnimData *var_r25; + + var_r29 = HuSprGrpCreate(0x13); + arg0->unk_40 = var_r29; + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x22)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x16)), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31, var_r28); + HuSprPosSet(var_r29, var_r31, lbl_1_data_690[var_r31 % 4][0], lbl_1_data_690[0][1]); + var_r28 = HuSprCreate(var_r26, 0x3F2, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 4, var_r28); + HuSprTPLvlSet(var_r29, var_r31 + 4, 0.5f); + HuSprPosSet(var_r29, var_r31 + 4, lbl_1_data_690[var_r31 % 4][0] + 1, lbl_1_data_690[0][1] + 2); + } + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x42)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r28 = HuSprCreate(var_r26, 0, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 8, var_r28); + HuSprBankSet(var_r29, var_r31 + 8, var_r31); + } + var_r28 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x15)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 0xA, var_r28); + HuSprTPLvlSet(var_r29, 0xA, 0.8f); + fn_1_6534(var_r29, 0xA, 288.0f, 240.0f); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x18)); + var_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x19)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = HuSprCreate(var_r26, 0x7BC, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0xB, var_r28); + HuSprBankSet(var_r29, var_r31 + 0xB, var_r31); + fn_1_6534(var_r29, var_r31 + 0xB, lbl_1_data_690[var_r31][2], lbl_1_data_690[var_r31][3]); + var_r28 = HuSprCreate(var_r25, 0x7C6, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0xF, var_r28); + HuSprBankSet(var_r29, var_r31 + 0xF, var_r31); + HuSprTPLvlSet(var_r29, var_r31 + 0xF, 0.5f); + fn_1_6534(var_r29, var_r31 + 0xF, lbl_1_data_690[var_r31][2] + 1, lbl_1_data_690[var_r31][3] + 6); + } + sp8 = 0; + var_r27 = lbl_1_bss_35BC[0].unk_40; + for (var_r30 = 0; var_r30 < 0x13; var_r30++) { + HuSprAttrSet(var_r27, var_r30, HUSPR_ATTR_DISPOFF); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + HuSprBankSet(var_r27, var_r30, 0); + lbl_1_bss_3114[var_r30].unk_70[3] = lbl_1_bss_3114[var_r30].unk_60 = 0; + HuSprAttrReset(var_r27, var_r30, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r27, var_r30 + 4, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(var_r27, 0xA, HUSPR_ATTR_DISPOFF); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + HuSprAttrReset(var_r27, var_r30 + 0xB, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(var_r27, var_r30 + 0xF, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(var_r27, 0.0f, -500.0f); +} + +void fn_1_21134(omObjData *object) +{ + float var_f31; + s32 var_r31; + MentDllUnkBss64Struct *var_r29; + + var_r29 = &lbl_1_bss_64; + for (var_r31 = 1; var_r31 < 0xA; var_r31++) { + if ((var_r29->zoom <= 1200.0f) || (lbl_1_bss_16C4[var_r31].unk_1C == -200.0f)) { + if (lbl_1_bss_16C4[var_r31].unk_1C >= -100.0f) { + lbl_1_bss_16C4[var_r31].unk_00 = 0; + lbl_1_bss_16C4[var_r31].unk_1C = -200.0f; + lbl_1_bss_16C4[var_r31].unk_24 = -99.0f; + lbl_1_bss_16C4[var_r31].unk_04 = rand8() + 0xB4; + } + var_f31 = fn_1_254(lbl_1_bss_16C4[var_r31].unk_10, 1000.0f, lbl_1_bss_16C4[var_r31].unk_00++, lbl_1_bss_16C4[var_r31].unk_04); + Hu3DData[object->model[var_r31]].pos.y = fn_1_234(Hu3DData[object->model[var_r31]].pos.y, var_f31, 30.0f); + Hu3DData[object->model[var_r31]].pos.x + = fn_1_234(Hu3DData[object->model[var_r31]].pos.x, lbl_1_bss_16C4[var_r31].unk_18 + Hu3DData[object->model[var_r31]].pos.x, 5.0f); + } + } + for (var_r31 = 0xA; var_r31 < 0x8C; var_r31++) { + Hu3DData[object->model[var_r31]].pos.y = fn_1_3F4( + lbl_1_bss_16C4[var_r31].unk_10, lbl_1_bss_16C4[var_r31].unk_1C, lbl_1_bss_16C4[var_r31].unk_00++, lbl_1_bss_16C4[var_r31].unk_04); + if (lbl_1_bss_16C4[var_r31].unk_00 >= lbl_1_bss_16C4[var_r31].unk_04) { + lbl_1_bss_16C4[var_r31].unk_00 = 0; + } + } + for (var_r31 = 0xA; var_r31 < 0x8C; var_r31++) { + if ((lbl_1_bss_16C4[var_r31].unk_24 == 0.0f) && (lbl_1_bss_16C4[var_r31].unk_14 > (var_r29->zoom - 400.0f)) + && (lbl_1_bss_16C4[var_r31].unk_0C < (200.0f + var_r29->center.x)) && (lbl_1_bss_16C4[var_r31].unk_0C > (var_r29->center.x - 200.0f))) { + if (var_r29->center.x >= lbl_1_bss_16C4[var_r31].unk_0C) { + lbl_1_bss_16C4[var_r31].unk_24 = -300.0f; + } + else { + lbl_1_bss_16C4[var_r31].unk_24 = 300.0f; + } + } + if (lbl_1_bss_16C4[var_r31].unk_24 != -99.0f) { + Hu3DData[object->model[var_r31]].pos.x + = fn_1_234(Hu3DData[object->model[var_r31]].pos.x, lbl_1_bss_16C4[var_r31].unk_0C + lbl_1_bss_16C4[var_r31].unk_24, 30.0f); + } + } + if (object->work[0] == 1) { + for (var_r31 = 0xA; var_r31 < 0x8C; var_r31++) { + Hu3DModelAttrSet(object->model[var_r31], HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_21724(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x08)); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x09)); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x0A)); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 0x0B)); + Hu3DModelLayerSet(object->model[1], 3); + Hu3DModelLayerSet(object->model[2], 3); + Hu3DModelLayerSet(object->model[3], 3); + Hu3DModelLayerSet(object->model[4], 3); + for (var_r30 = 5; var_r30 < 0x8C; var_r30++) { + object->model[var_r30] = Hu3DModelLink(object->model[rand8() % 4 + 1]); + } + for (var_r30 = 1; var_r30 < 0xA; var_r30++) { + var_r28 = 0; + do { + Hu3DData[object->model[var_r30]].pos.x = var_f31 = 50.0f + rand8(); + if ((var_r30 % 2) != 0) { + lbl_1_bss_16C4[var_r30].unk_0C = Hu3DData[object->model[var_r30]].pos.x *= -1.0f; + } + Hu3DData[object->model[var_r30]].pos.y = var_f30 = 50.0f + rand8(); + Hu3DData[object->model[var_r30]].pos.z = var_f29 = 750.0f + (var_r30 * 5); + for (var_r29 = 1; var_r29 < 0xA; var_r29++) { + if ((var_r30 != var_r29) && (lbl_1_bss_16C4[var_r29].unk_08 == 1)) { + var_f31 = Hu3DData[object->model[var_r30]].pos.x - Hu3DData[object->model[var_r29]].pos.x; + var_f30 = Hu3DData[object->model[var_r30]].pos.y - Hu3DData[object->model[var_r29]].pos.y; + var_f29 = Hu3DData[object->model[var_r30]].pos.z - Hu3DData[object->model[var_r29]].pos.z; + if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) <= 100.0f) { + break; + } + } + } + var_r28++; + } while (var_r29 != 0xA && var_r28 < 0x32); + lbl_1_bss_16C4[var_r30].unk_08 = 1; + lbl_1_bss_16C4[var_r30].unk_0C = lbl_1_bss_16C4[var_r30].unk_18 = Hu3DData[object->model[var_r30]].pos.x; + lbl_1_bss_16C4[var_r30].unk_10 = lbl_1_bss_16C4[var_r30].unk_1C = Hu3DData[object->model[var_r30]].pos.y; + lbl_1_bss_16C4[var_r30].unk_14 = lbl_1_bss_16C4[var_r30].unk_20 = Hu3DData[object->model[var_r30]].pos.z; + lbl_1_bss_16C4[var_r30].unk_18 = 0.025f * lbl_1_bss_16C4[var_r30].unk_0C; + Hu3DModelScaleSet(object->model[var_r30], 0.5f, 0.5f, 0.5f); + Hu3DModelLayerSet(object->model[var_r30], 3); + } + for (var_r30 = 0xA; var_r30 < 0x8C; var_r30++) { + var_r28 = 0; + do { + Hu3DData[object->model[var_r30]].pos.x = var_f31 = rand8() * 2; + if ((var_r30 % 2) != 0) { + Hu3DData[object->model[var_r30]].pos.x *= -1.0f; + } + + Hu3DData[object->model[var_r30]].pos.y = var_f30 = (rand8() * 2) + 0x7D; + Hu3DData[object->model[var_r30]].pos.z = var_f29 = 800.0f + (var_r30 * 0xA); + for (var_r29 = 0xA; var_r29 < 0x8C; var_r29++) { + if ((var_r30 != var_r29) && (lbl_1_bss_16C4[var_r29].unk_08 == 1)) { + var_f31 = Hu3DData[object->model[var_r30]].pos.x - Hu3DData[object->model[var_r29]].pos.x; + var_f30 = Hu3DData[object->model[var_r30]].pos.y - Hu3DData[object->model[var_r29]].pos.y; + var_f29 = Hu3DData[object->model[var_r30]].pos.z - Hu3DData[object->model[var_r29]].pos.z; + if (sqrtf((var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30))) <= 100.0f) { + break; + } + } + } + var_r28++; + } while (var_r29 != 0x8C && var_r28 < 0x32); + + lbl_1_bss_16C4[var_r30].unk_08 = 1; + Hu3DModelLayerSet(object->model[var_r30], 3); + lbl_1_bss_16C4[var_r30].unk_0C = lbl_1_bss_16C4[var_r30].unk_18 = Hu3DData[object->model[var_r30]].pos.x; + lbl_1_bss_16C4[var_r30].unk_10 = lbl_1_bss_16C4[var_r30].unk_1C = Hu3DData[object->model[var_r30]].pos.y; + lbl_1_bss_16C4[var_r30].unk_14 = lbl_1_bss_16C4[var_r30].unk_20 = Hu3DData[object->model[var_r30]].pos.z; + if ((rand8() % 2) == 0) { + lbl_1_bss_16C4[var_r30].unk_18 += rand8() % 30; + } + else { + lbl_1_bss_16C4[var_r30].unk_18 -= rand8() % 30; + } + lbl_1_bss_16C4[var_r30].unk_1C += (rand8() % 30) + 0xA; + if ((rand8() % 2) == 0) { + lbl_1_bss_16C4[var_r30].unk_20 += rand8() % 30; + } + else { + lbl_1_bss_16C4[var_r30].unk_20 -= rand8() % 30; + } + lbl_1_bss_16C4[var_r30].unk_24 = lbl_1_bss_16C4[var_r30].unk_28 = lbl_1_bss_16C4[var_r30].unk_2C = 0.0f; + lbl_1_bss_16C4[var_r30].unk_04 = ((rand8() * 2) % 360) + 0x168; + lbl_1_bss_16C4[var_r30].unk_00 = rand8(); + } + object->func = fn_1_21134; +} + +void fn_1_225F4(omObjData *object) +{ + s32 var_r30; + + if (object->work[0] == 0) { + return; + } + for (var_r30 = 0; var_r30 < 0xC8; var_r30++) { + switch (lbl_1_bss_E4[var_r30].unk_04) { + case 0: + Hu3DData[object->model[var_r30]].pos.x = rand8() + rand8() % 50; + if ((var_r30 % 2) == 0) { + Hu3DData[object->model[var_r30]].pos.x *= -1.0f; + } + Hu3DData[object->model[var_r30]].pos.y = 500.0f + rand8() + rand8(); + Hu3DData[object->model[var_r30]].pos.z = 700.0f + rand8() % 128; + lbl_1_bss_E4[var_r30].unk_18 = 1.0f; + lbl_1_bss_E4[var_r30].unk_00 = (rand8() % 30) + 0x1E; + lbl_1_bss_E4[var_r30].unk_0C = 0.01f * (25.0f + (rand8() % 50)); + if ((rand8() % 2) == 0) { + lbl_1_bss_E4[var_r30].unk_0C *= -1.0f; + } + lbl_1_bss_E4[var_r30].unk_10 = rand8() % 2; + lbl_1_bss_E4[var_r30].unk_14 = 0.01f * ((rand8() % 100) - 0x32); + lbl_1_bss_E4[var_r30].unk_08 = (rand8() % 5) + 5; + if ((rand8() % 2) == 0) { + lbl_1_bss_E4[var_r30].unk_08 *= -1; + } + lbl_1_bss_E4[var_r30].unk_04 = 1; + break; + case 1: + if (Hu3DData[object->model[var_r30]].pos.y <= 0.5f) { + Hu3DData[object->model[var_r30]].pos.y = 0.5f; + if (lbl_1_bss_E4[var_r30].unk_10 > 0.0f) { + Hu3DData[object->model[var_r30]].rot.x = fn_1_234(Hu3DData[object->model[var_r30]].rot.x, 180.0f, 5.0f); + } + else { + Hu3DData[object->model[var_r30]].rot.x = fn_1_234(Hu3DData[object->model[var_r30]].rot.x, 0.0f, 5.0f); + } + Hu3DData[object->model[var_r30]].rot.z = fn_1_234(Hu3DData[object->model[var_r30]].rot.z, 0.0f, 5.0f); + lbl_1_bss_E4[var_r30].unk_18 -= 0.025f; + if (lbl_1_bss_E4[var_r30].unk_18 <= 0.0f) { + lbl_1_bss_E4[var_r30].unk_18 = 0.0f; + lbl_1_bss_E4[var_r30].unk_04 = 0; + if (object->work[0] == 3) { + lbl_1_bss_E4[var_r30].unk_04 = 2; + } + } + } + else { + if (lbl_1_bss_E4[var_r30].unk_00-- <= 0) { + lbl_1_bss_E4[var_r30].unk_00 = (rand8() % 30) + 0x1E; + lbl_1_bss_E4[var_r30].unk_0C = 0.01f * (25.0f + (rand8() % 50)); + if ((rand8() % 2) == 0) { + lbl_1_bss_E4[var_r30].unk_0C *= -1.0f; + } + lbl_1_bss_E4[var_r30].unk_10 = rand8() % 2; + lbl_1_bss_E4[var_r30].unk_14 = 0.01f * ((rand8() % 100) - 0x32); + lbl_1_bss_E4[var_r30].unk_08 = (rand8() % 5) + 5; + if ((rand8() % 2) == 0) { + lbl_1_bss_E4[var_r30].unk_08 *= -1; + } + } + Hu3DModelAttrReset(object->model[var_r30], HU3D_ATTR_DISPOFF); + Hu3DData[object->model[var_r30]].pos.x += lbl_1_bss_E4[var_r30].unk_0C; + Hu3DData[object->model[var_r30]].pos.y -= (var_r30 % 3) + 2; + Hu3DData[object->model[var_r30]].pos.z += lbl_1_bss_E4[var_r30].unk_14; + Hu3DData[object->model[var_r30]].rot.x += lbl_1_bss_E4[var_r30].unk_08; + Hu3DData[object->model[var_r30]].rot.y += lbl_1_bss_E4[var_r30].unk_08; + Hu3DData[object->model[var_r30]].rot.z += lbl_1_bss_E4[var_r30].unk_08; + if (Hu3DData[object->model[var_r30]].rot.x >= 360.0f) { + Hu3DData[object->model[var_r30]].rot.x -= 360.0f; + } + else if (Hu3DData[object->model[var_r30]].rot.x <= 0.0f) { + Hu3DData[object->model[var_r30]].rot.x += 360.0f; + } + if (Hu3DData[object->model[var_r30]].rot.y >= 360.0f) { + Hu3DData[object->model[var_r30]].rot.y -= 360.0f; + } + else if (Hu3DData[object->model[var_r30]].rot.y <= 0.0f) { + Hu3DData[object->model[var_r30]].rot.y += 360.0f; + } + if (Hu3DData[object->model[var_r30]].rot.z >= 360.0f) { + Hu3DData[object->model[var_r30]].rot.z -= 360.0f; + } + else if (Hu3DData[object->model[var_r30]].rot.z <= 0.0f) { + Hu3DData[object->model[var_r30]].rot.z += 360.0f; + } + } + break; + case 2: + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); + break; + } + } +} + +void fn_1_2342C(omObjData *object) +{ + float var_f30; + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MENT, 12)); + for (var_r30 = 0; var_r30 < 0xC8; var_r30++) { + object->model[var_r30] = Hu3DModelLink(object->model[0]); + } + for (var_r30 = 0; var_r30 < 0xC8; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF); + Hu3DData[object->model[var_r30]].pos.x = rand8() + rand8(); + if (rand8() == 0) { + Hu3DData[object->model[var_r30]].pos.x *= -1.0f; + } + Hu3DData[object->model[var_r30]].pos.y = 500.0f + rand8() + rand8(); + Hu3DData[object->model[var_r30]].pos.z = 700.0f + (rand8() % 128); + var_f31 = 1.0f + (0.1f * (rand8() % 5)); + Hu3DModelScaleSet(object->model[var_r30], var_f31, var_f31, var_f31); + lbl_1_bss_E4[var_r30].unk_0C = 0.01f * (25.0f + (rand8() % 50)); + if ((rand8() % 2) == 0) { + lbl_1_bss_E4[var_r30].unk_0C *= -1.0f; + } + lbl_1_bss_E4[var_r30].unk_10 = rand8() % 2; + lbl_1_bss_E4[var_r30].unk_14 = 0.01f * ((rand8() % 100) - 0x32); + lbl_1_bss_E4[var_r30].unk_08 = (rand8() % 5) + 5; + if ((rand8() % 2) == 0) { + lbl_1_bss_E4[var_r30].unk_08 *= -1; + } + var_r29 = rand8() % 4; + switch (var_r29) { + case 0: + Hu3DModelAmbSet(object->model[var_r30], 1.0f, 1.0f, 1.0f); + break; + case 1: + Hu3DModelAmbSet(object->model[var_r30], 1.0f, 0.0f, 0.0f); + break; + case 2: + Hu3DModelAmbSet(object->model[var_r30], 0.0f, 1.0f, 0.0f); + break; + case 3: + Hu3DModelAmbSet(object->model[var_r30], 0.0f, 0.0f, 1.0f); + break; + } + lbl_1_bss_E4[var_r30].unk_04 = 0; + } + object->func = fn_1_225F4; +} diff --git a/src/REL/messDll/main.c b/src/REL/messDll/main.c index fe6119d4..f7b32576 100755 --- a/src/REL/messDll/main.c +++ b/src/REL/messDll/main.c @@ -9,9 +9,8 @@ #include "dolphin.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" -extern s32 sprintf(char*, const char*, s32); +extern s32 sprintf(char *, const char *, s32); static void fn_1_2BC(omObjData *arg0); static void fn_1_300(omObjData *arg0); @@ -27,7 +26,8 @@ static u8 lbl_1_bss_4_pad[4]; static s16 lbl_1_bss_2; static s16 lbl_1_bss_0; -void ObjectSetup(void) { +void ObjectSetup(void) +{ OSReport("******* SAFObjectSetup *********\n"); lbl_1_bss_34 = omInitObjMan(0x32, 0x2000); CRot.x = -20.0f; @@ -46,12 +46,14 @@ void ObjectSetup(void) { lbl_1_bss_8 = HuPrcChildCreate(fn_1_E88, 100, 0x3000, 0, lbl_1_bss_34); } -static void fn_1_2BC(omObjData *arg0) { +static void fn_1_2BC(omObjData *arg0) +{ WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); arg0->func = fn_1_300; } -static void fn_1_300(omObjData *arg0) { +static void fn_1_300(omObjData *arg0) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -79,23 +81,23 @@ static void fn_1_300(omObjData *arg0) { sp14.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; sp8.x = sp14.x * (sp20.x * sp20.x + (1.0f - sp20.x * sp20.x) * cosd(temp_f31)) - + sp14.y * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31)) - + sp14.z * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) + sp20.y * sind(temp_f31)); + + sp14.y * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31)) + + sp14.z * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) + sp20.y * sind(temp_f31)); sp8.y = sp14.x * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) + sp20.z * sind(temp_f31)) - + sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31)) - + sp14.z * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) - sp20.x * sind(temp_f31)); + + sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31)) + + sp14.z * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) - sp20.x * sind(temp_f31)); sp8.z = sp14.x * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) - sp20.y * sind(temp_f31)) - + sp14.y * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31)) - + sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cosd(temp_f31)); - PSVECCrossProduct(&sp14, &sp20, &sp20); - PSVECNormalize(&sp20, &sp20); + + sp14.y * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31)) + + sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cosd(temp_f31)); + VECCrossProduct(&sp14, &sp20, &sp20); + VECNormalize(&sp20, &sp20); temp_r31 = HuPadSubStkX[0] & 0xF8; if (temp_r31 != 0) { Center.x += sp20.x * temp_r31 * 0.05f; Center.y += sp20.y * temp_r31 * 0.05f; Center.z += sp20.z * temp_r31 * 0.05f; } - PSVECNormalize(&sp8, &sp20); + VECNormalize(&sp8, &sp20); temp_r31 = -(HuPadSubStkY[0] & 0xF8); if (temp_r31 != 0) { Center.x += sp20.x * temp_r31 * 0.05f; @@ -104,69 +106,19 @@ static void fn_1_300(omObjData *arg0) { } } -static char *lbl_1_data_32C[] = { - "001_Character_Name_ss", - "002_Hidden_Block", - "003_Battle_M", - "004_Bowser_M", - "005_Warp_M", - "006_Mushroom_M", - "007_Lot_house", - "008_Boo_house", - "009_ItemName", - "010_Bord", - "011_RoundItem", - "012_Spaceamida", - "013_Star_M", - "014_RollerCoaster", - "015_Last5", - "016_ItemShop", - "017_System", - "018_ModeSelect", - "019_Item", - "020_Map2_event", - "021_Lucky_Minigame", - "022_Bord_Start", - "023_Map3_event", - "024_Minigame_Name", - "025_mg_446", - "026_debugmes", - "027_Party_Mode", - "028_SETUP", - "029_Miracle", - "030_mg_kuppa", - "031_Story_Mode", - "032_Bowser_Story", - "033_Map4_event", - "034_mg_inst", - "035_E3_only", - "036_saf", - "037_Mg_inst_sys_", - "038_Bord_Results", - "039_Bord_Results2", - "040_Map5_event", - "041_Mg_Mode", - "042_mg_445", - "043_mg_447", - "044_mg_448", - "045_mg_449", - "046_mg_450", - "047_tutorial", - "048_Option_Rooml", - "049_Map6_event", - "050_charley", - "051_Present_Room", - "052_Extra_Room", - "053_Staff_Post", - "054_Staff_Name", - "055_Opening_Demo", - "056_mgex_inst", - NULL -}; +static char *lbl_1_data_32C[] + = { "001_Character_Name_ss", "002_Hidden_Block", "003_Battle_M", "004_Bowser_M", "005_Warp_M", "006_Mushroom_M", "007_Lot_house", "008_Boo_house", + "009_ItemName", "010_Bord", "011_RoundItem", "012_Spaceamida", "013_Star_M", "014_RollerCoaster", "015_Last5", "016_ItemShop", "017_System", + "018_ModeSelect", "019_Item", "020_Map2_event", "021_Lucky_Minigame", "022_Bord_Start", "023_Map3_event", "024_Minigame_Name", "025_mg_446", + "026_debugmes", "027_Party_Mode", "028_SETUP", "029_Miracle", "030_mg_kuppa", "031_Story_Mode", "032_Bowser_Story", "033_Map4_event", + "034_mg_inst", "035_E3_only", "036_saf", "037_Mg_inst_sys_", "038_Bord_Results", "039_Bord_Results2", "040_Map5_event", "041_Mg_Mode", + "042_mg_445", "043_mg_447", "044_mg_448", "045_mg_449", "046_mg_450", "047_tutorial", "048_Option_Rooml", "049_Map6_event", "050_charley", + "051_Present_Room", "052_Extra_Room", "053_Staff_Post", "054_Staff_Name", "055_Opening_Demo", "056_mgex_inst", NULL }; static s16 lbl_1_data_410 = -1; -static void fn_1_E88(void) { +static void fn_1_E88(void) +{ s16 sp10[256]; // unknown size char spC[4]; char sp8[4]; @@ -192,7 +144,7 @@ static void fn_1_E88(void) { var_r30 = (var_r28 << 16); var_r25 = 0; while (1) { - if ((s32) MessData_MesPtrGet(messDataPtr, var_r30 + var_r25) == 0) { + if ((s32)MessData_MesPtrGet(messDataPtr, var_r30 + var_r25) == 0) { break; } sp10[var_r28]++; @@ -226,13 +178,15 @@ static void fn_1_E88(void) { var_r31 = 0; } var_r30 = 0; - } else if (temp_r3_2 & 0x40) { + } + else if (temp_r3_2 & 0x40) { var_r31--; if (var_r31 < 0) { var_r31 = var_r27 - 1; } var_r30 = 0; - } else if (temp_r3_2 & 0x200) { + } + else if (temp_r3_2 & 0x200) { var_r30--; if (var_r30 < 0) { var_r31--; @@ -241,7 +195,8 @@ static void fn_1_E88(void) { } var_r30 = sp10[var_r31] - 1; } - } else { + } + else { var_r30++; if (var_r30 >= sp10[var_r31]) { var_r31++; @@ -255,18 +210,10 @@ static void fn_1_E88(void) { } } -static char *lbl_1_data_440[] = { - "]1^", - "]2^", - "]3^", - "]4^", - "]5^", - "]6^", - "]7^", - "]8^" -}; +static char *lbl_1_data_440[] = { "]1^", "]2^", "]3^", "]4^", "]5^", "]6^", "]7^", "]8^" }; -static s32 fn_1_11B0(s16 arg0, s16 arg1) { +static s32 fn_1_11B0(s16 arg0, s16 arg1) +{ WindowData *temp_r30; float spC[2]; s32 temp_r28; @@ -285,7 +232,7 @@ static s32 fn_1_11B0(s16 arg0, s16 arg1) { } temp_r28 = MAKE_MESSID(arg0, arg1); for (i = 0; i < 8; i++) { - HuWinInsertMesSizeGet(MAKE_MESSID_PTR(lbl_1_data_440[i]), (s16) i); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(lbl_1_data_440[i]), (s16)i); } HuWinMesMaxSizeGet(1, &spC[0], temp_r28); if (spC[0] <= 16.0f) { @@ -293,7 +240,7 @@ static s32 fn_1_11B0(s16 arg0, s16 arg1) { } lbl_1_data_410 = HuWinCreate(-10000.0f, -10000.0f, spC[0], spC[1], 0); for (i = 0; i < 8; i++) { - HuWinInsertMesSet(lbl_1_data_410, MAKE_MESSID_PTR(lbl_1_data_440[i]), (s16) i); + HuWinInsertMesSet(lbl_1_data_410, MAKE_MESSID_PTR(lbl_1_data_440[i]), (s16)i); } temp_r30 = &winData[lbl_1_data_410]; temp_r30->push_key |= 0x360; diff --git a/src/REL/mgmodedll/battle.c b/src/REL/mgmodedll/battle.c new file mode 100644 index 00000000..c5088576 --- /dev/null +++ b/src/REL/mgmodedll/battle.c @@ -0,0 +1,959 @@ +#include "REL/mgmodedll.h" +#include "game/gamework.h" + +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/saveload.h" +#include "game/wipe.h" + +#include "ext_math.h" + +s16 lbl_1_bss_3A4; +s32 lbl_1_bss_3A0; +s16 lbl_1_bss_396[4]; +s16 lbl_1_bss_394; +s16 lbl_1_bss_38C[4]; +s16 lbl_1_bss_38A; +s16 lbl_1_bss_388; + +s16 lbl_1_data_148 = -1; + +void fn_1_FF5C(void); +s32 fn_1_1129C(void); +s32 fn_1_11E68(void); +void fn_1_1222C(void); +void fn_1_2783C(s16 evtno); + +s32 fn_1_E72C(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s32 temp_r26; + ModelData *temp_r25; + float temp_f31; + float temp_f30; + Vec sp20; + Vec sp14; + Vec sp8; + temp_r29 = 0; + fn_1_279FC(0); + fn_1_FF5C(); + if (mgModeEvtNo == 3) { + mgTypeCurr = mgInfoTbl[GWSystem.mg_next].type; + if (mgTypeCurr >= 4) { + mgTypeCurr = 3; + } + HuSprGrpPosSet(lbl_1_bss_388, 288, 240); + HuSprGrpDrawNoSet(lbl_1_bss_388, 64); + Hu3DModelPosSet(lbl_1_bss_2C80[5], -350, 0, 680); + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, 20, 0); + fn_1_27418(); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DModelPosSet(lbl_1_bss_2C14[temp_r31], (temp_r31 * 130) - 195, 0, 750); + Hu3DMotionSet(lbl_1_bss_2C14[temp_r31], lbl_1_bss_2BC4[temp_r31][0]); + Hu3DModelAttrSet(lbl_1_bss_2C14[temp_r31], HU3D_MOTATTR_LOOP); + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + HuSprAttrSet(lbl_1_bss_388, (temp_r31 * 2) + 2, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(lbl_1_bss_388, (temp_r31 * 2) + 3, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(lbl_1_bss_388, mgTypeCurr + 19, HUSPR_ATTR_DISPOFF); + HuSprPosSet(lbl_1_bss_388, mgTypeCurr + 19, 0, -155); + HuSprPosSet(lbl_1_bss_388, 1, 0, -180); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + if (fn_1_1129C() && !fn_1_11E68()) { + return 1; + } + } + else { + CharModelDataClose(-1); + if (HuDataReadChk(DATADIR_INSTPIC) == -1) { + temp_r26 = HuDataDirReadAsync(DATADIR_INSTPIC); + } + else { + temp_r26 = -1; + } + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + if (temp_r31 <= 50) { + temp_f31 = temp_r31 / 50.0; + HuSprGrpPosSet(lbl_1_bss_388, 288, -400.0 + (656.0 * sind(temp_f31 * 90.0f))); + } + else { + temp_f31 = (temp_r31 - 50) / 10.0; + HuSprGrpPosSet(lbl_1_bss_388, 288, 240.0 + (16.0 * cosd(temp_f31 * 90.0f))); + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 <= 5; temp_r31++) { + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + if (temp_r30 != temp_r29) { + HuSprTPLvlSet(lbl_1_bss_388, (temp_r30 * 2) + 2, 1 - (temp_r31 / 5.0)); + } + } + HuPrcVSleep(); + } + if (temp_r26 != -1) { + while (!HuDataGetAsyncStat(temp_r26)) { + HuPrcVSleep(); + } + } + repeat_mode: + if (lbl_1_bss_20AA == 0) { + HuPrcChildCreate(fn_1_27080, 100, 12288, 0, objman); + lbl_1_bss_20AA = 1; + } + lbl_1_bss_3A4 = fn_1_25CA8(0x1A0020); + if (lbl_1_data_148 == -1) { + lbl_1_data_148 = fn_1_2530C(0, 0, 0); + } + HuWinMesSpeedSet(lbl_1_data_148, 1); + fn_1_25838(lbl_1_data_148, 0x28000F, -1, -1); + while (1) { + temp_r28 = 0; + if ((HuPadDStkRep[0] & PAD_BUTTON_UP) && temp_r29 > 0) { + temp_r28 = -1; + } + else if ((HuPadDStkRep[0] & PAD_BUTTON_DOWN) && temp_r29 < 3) { + temp_r28 = 1; + } + if (temp_r28 != 0) { + HuSprAttrReset(lbl_1_bss_388, (temp_r29 * 2) + 3, HUSPR_ATTR_DISPOFF); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + HuSprTPLvlSet(lbl_1_bss_388, (temp_r29 * 2) + 2, 1 - (temp_r31 / 10.0)); + if (temp_r31 == 5) { + HuAudFXPlay(0); + HuSprTPLvlSet(lbl_1_bss_388, ((temp_r29 + temp_r28) * 2) + 2, 1); + HuSprAttrReset(lbl_1_bss_388, ((temp_r29 + temp_r28) * 2) + 2, HUSPR_ATTR_DISPOFF); + } + HuPrcVSleep(); + } + temp_r29 += temp_r28; + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + fn_1_25E74(lbl_1_bss_3A4); + fn_1_25584(lbl_1_data_148); + lbl_1_data_148 = -1; + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + if (temp_r31 <= 10) { + temp_f31 = temp_r31 / 10.0; + HuSprGrpPosSet(lbl_1_bss_388, 288, 240.0 + (16.0 * sind(temp_f31 * 90.0f))); + } + else { + temp_f31 = (temp_r31 - 10) / 50.0; + HuSprGrpPosSet(lbl_1_bss_388, 288, -400.0 + (656.0 * cosd(temp_f31 * 90.0f))); + } + HuPrcVSleep(); + } + HuSprGrpKill(lbl_1_bss_388); + lbl_1_bss_388 = 0; + return 0; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(1); + if (lbl_1_bss_20AC[lbl_1_data_A2[temp_r29]]) { + break; + } + fn_1_25838(lbl_1_data_148, 0x28002E, -1, -1); + fn_1_25838(lbl_1_data_148, 0x28000F, -1, -1); + continue; + } + HuPrcVSleep(); + } + fn_1_25E74(lbl_1_bss_3A4); + fn_1_25584(lbl_1_data_148); + lbl_1_data_148 = lbl_1_bss_3A4 = -1; + mgTypeCurr = temp_r29; + if (temp_r29 == 1 || temp_r29 == 2) { + if (fn_1_C0C8(1) == 0) { + goto repeat_mode; + } + } + else { + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + GWPlayerCfg[temp_r31].group = temp_r31; + } + } + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + HuSprTPLvlSet(lbl_1_bss_388, (temp_r30 * 2) + 3, 1 - (temp_r31 / 10.0)); + } + HuPrcVSleep(); + } + Hu3DMotionTimeSet(lbl_1_bss_2C80[5], 0); + HuPrcVSleep(); + temp_r28 = (temp_r29 * 40) - 110; + temp_r25 = &Hu3DData[lbl_1_bss_2C80[5]]; + sp20 = temp_r25->pos; + sp14.x = -350; + sp14.y = 0; + sp14.z = 680; + VECSubtract(&sp14, &sp20, &sp14); + temp_f30 = (180 + atan2d(sp14.z, sp14.x)) - 360; + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[7], 0, 8, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 20) { + temp_f31 = temp_r31 / 20.0; + HuSprPosSet(lbl_1_bss_388, (temp_r29 * 2) + 2, 0, (sind(temp_f31 * 90.0f) * (-150 - temp_r28)) + temp_r28); + } + temp_f31 = temp_r31 / 30.0; + VECScale(&sp14, &sp8, temp_f31); + VECAdd(&sp20, &sp8, &sp8); + Hu3DModelPosSetV(lbl_1_bss_2C80[5], &sp8); + if (temp_r31 <= 10) { + temp_f31 = temp_r31 / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, temp_f30 * temp_f31, 0); + } + HuPrcVSleep(); + } + HuSprGrpDrawNoSet(lbl_1_bss_388, 64); + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6], 0, 8, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = temp_r31 / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, temp_f30 + ((20 - temp_f30) * temp_f31), 0); + HuPrcVSleep(); + } + while (lbl_1_bss_20AA) { + HuPrcVSleep(); + } + Hu3DMotionTimeSet(lbl_1_bss_2C80[5], 0); + HuPrcVSleep(); + fn_1_27418(); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + CharModelMotionSet(lbl_1_bss_2C24[temp_r31], lbl_1_bss_2BC4[temp_r31][2]); + Hu3DModelAttrSet(lbl_1_bss_2C14[temp_r31], HU3D_MOTATTR_LOOP); + Hu3DModelRotSet(lbl_1_bss_2C14[temp_r31], 0, -90, 0); + } + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + temp_f31 = temp_r31 / 30.0f; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + Hu3DModelPosSet(lbl_1_bss_2C14[temp_r30], + (sind(temp_f31 * 90.0f) * (((temp_r30 * 130) - 195) - ((temp_r30 * 130) + 400))) + ((temp_r30 * 130) + 400), 0, 750); + if ((temp_r31 + (temp_r30 * 2)) % 5 == 0) { + HuAudFXPlay(GWPlayerCfg[temp_r30].character + 213); + } + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[temp_r31], lbl_1_bss_2BC4[temp_r31][0], 0, 10, HU3D_MOTATTR_LOOP); + } + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = temp_r31 / 10.0f; + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + Hu3DModelRotSet(lbl_1_bss_2C14[temp_r30], 0, -90.0 * (1.0 - temp_f31), 0); + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + mgBattleStar[temp_r31] = 0; + } + } + if (lbl_1_data_148 == -1) { + lbl_1_data_148 = fn_1_2530C(0, 0, 0); + } + fn_1_25838(lbl_1_data_148, 0x280010, -1, -1); + HuSprTPLvlSet(lbl_1_bss_388, 10, 1); + for (temp_r30 = 0; temp_r30 < 35;) { + for (temp_r31 = 0; temp_r31 < lbl_1_bss_20AC[lbl_1_data_A2[mgTypeCurr]]; temp_r31++) { + fn_1_271B4(lbl_1_bss_20C0[lbl_1_data_A2[mgTypeCurr]][temp_r31], 288, 210); + HuAudFXPlay(855); + HuPrcSleep(3); + temp_r30++; + if (temp_r30 >= 35) { + break; + } + } + } + HuAudFXPlay(870); + lbl_1_bss_2E4 = lbl_1_bss_20C0[lbl_1_data_A2[mgTypeCurr]][frandmod(lbl_1_bss_20AC[lbl_1_data_A2[mgTypeCurr]])]; + fn_1_271B4(lbl_1_bss_2E4, 288, 210); + HuWinAttrSet(lbl_1_data_148, 0x10); + HuWinInsertMesSet(lbl_1_data_148, mgInfoTbl[lbl_1_bss_2E4].name_mess, 0); + fn_1_25838(lbl_1_data_148, 0x280011, -1, -1); +repeat_mess: + fn_1_25838(lbl_1_data_148, 0x280029, -1, -1); + temp_r27 = HuWinChoiceGet(lbl_1_data_148, 0); + if (temp_r27 == 0) { + _ClearFlag(11); + } + else if (temp_r27 == 1) { + HuWinInsertMesSet(lbl_1_data_148, MAKE_MESSID(0x28, 39), 0); + fn_1_25838(lbl_1_data_148, 0x280026, -1, -1); + temp_r27 = HuWinChoiceGet(lbl_1_data_148, 1); + if (temp_r27 == 1) { + goto repeat_mess; + } + fn_1_271B4(-1, 0, 0); + for (temp_r31 = 1; temp_r31 <= 10; temp_r31++) { + HuSprTPLvlSet(lbl_1_bss_388, 10, 1 - (temp_r31 / 10.0)); + HuPrcVSleep(); + } + fn_1_25584(lbl_1_data_148); + lbl_1_data_148 = lbl_1_bss_3A4 = -1; + fn_1_1222C(); + return 1; + } + else { + _SetFlag(11); + } + GWSystem.mg_next = lbl_1_bss_2E4; + HuDataDirClose(DATADIR_INSTPIC); + fn_1_2783C(3); + while (1) { + HuPrcVSleep(); + } +} + +s16 lbl_1_data_14A[4] = { 0, 2, 1, 3 }; +GXColor lbl_1_data_152[4] = { + { 255, 64, 64, 255 }, + { 128, 255, 128, 255 }, + { 128, 255, 255, 255 }, + { 255, 255, 128, 255 }, +}; + +void fn_1_FF5C(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + AnimData *temp_r28; + s16 temp_r27; + AnimData *temp_r26; + if (lbl_1_bss_388 == 0) { + temp_r30 = HuSprGrpCreate(23); + lbl_1_bss_388 = temp_r30; + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 125), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 200, 0); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + HuSprTPLvlSet(temp_r30, 0, 0.8f); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 54), MEMORY_DEFAULT_NUM)); + if (mgBattleStarMax == 3) { + temp_r27 = 0; + } + else if (mgBattleStarMax == 5) { + temp_r27 = 1; + } + else { + temp_r27 = 2; + } + temp_r29 = HuSprCreate(temp_r28, 190, temp_r27); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprPosSet(temp_r30, 1, 0, -180); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 55) + (lbl_1_data_14A[temp_r31] * 3), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 190, 0); + HuSprGrpMemberSet(temp_r30, (2 * temp_r31) + 2, temp_r29); + HuSprPosSet(temp_r30, (2 * temp_r31) + 2, 0, (temp_r31 * 40) - 110); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 56) + (lbl_1_data_14A[temp_r31] * 3), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 195, 0); + HuSprGrpMemberSet(temp_r30, (2 * temp_r31) + 3, temp_r29); + HuSprPosSet(temp_r30, (2 * temp_r31) + 3, 0, (temp_r31 * 40) - 110); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 57) + (lbl_1_data_14A[temp_r31] * 3), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 195, 0); + HuSprGrpMemberSet(temp_r30, temp_r31 + 19, temp_r29); + } + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 37), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 195, 0); + HuSprGrpMemberSet(temp_r30, 10, temp_r29); + HuSprPosSet(temp_r30, 10, 0, -32); + HuSprScaleSet(temp_r30, 10, 0.9f, 0.9f); + HuSprTPLvlSet(temp_r30, 10, 0); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 101), MEMORY_DEFAULT_NUM)); + temp_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 102), MEMORY_DEFAULT_NUM)); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r29 = HuSprCreate(temp_r28, 180, temp_r31); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 11, temp_r29); + HuSprPosSet(temp_r30, (temp_r31 * 2) + 11, ((temp_r31 % 2) * 350) - 175, ((temp_r31 / 2) * 220) - 180); + temp_r29 = HuSprCreate(temp_r26, 190, temp_r31); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 12, temp_r29); + HuSprTPLvlSet(temp_r30, (temp_r31 * 2) + 12, 0.5f); + HuSprPosSet(temp_r30, (temp_r31 * 2) + 12, ((temp_r31 % 2) * 350) - 175, ((temp_r31 / 2) * 220) - 172); + } + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + HuSprTPLvlSet(lbl_1_bss_388, (temp_r31 * 2) + 2, 1); + HuSprAttrSet(lbl_1_bss_388, temp_r31 + 19, HUSPR_ATTR_DISPOFF); + } + HuSprGrpDrawNoSet(lbl_1_bss_388, 0); +} + +void fn_1_10564(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + AnimData *temp_r24; + s16 temp_r23; + AnimData *temp_r22; + s16 sp8[4]; + if (mgBattleStarMax == 3) { + temp_r25 = 0; + } + else if (mgBattleStarMax == 5) { + temp_r25 = 1; + } + else { + temp_r25 = 2; + } + temp_r30 = HuSprGrpCreate(35); + lbl_1_bss_38A = temp_r30; + temp_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 70) + temp_r25, MEMORY_DEFAULT_NUM)); + temp_r27 = HuSprCreate(temp_r24, 195, 0); + HuSprGrpMemberSet(temp_r30, 33, temp_r27); + HuSprAttrSet(temp_r30, 33, HUSPR_ATTR_DISPOFF); + temp_r27 = HuSprCreate(temp_r24, 195, 0); + HuSprGrpMemberSet(temp_r30, 34, temp_r27); + HuSprAttrSet(temp_r30, 34, HUSPR_ATTR_DISPOFF); + temp_r22 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 73), MEMORY_DEFAULT_NUM)); + temp_r28 = -(((mgBattleStarMax + 1) * 42) / 2) + 20; + temp_r26 = -64; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 74) + lbl_1_bss_2C24[temp_r31], MEMORY_DEFAULT_NUM)); + temp_r27 = HuSprCreate(temp_r24, 190, 0); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 8) + 0, temp_r27); + HuSprPosSet(temp_r30, (temp_r31 * 8) + 0, temp_r28, temp_r26 + (temp_r31 * 42)); + for (temp_r29 = 0; temp_r29 < 7; temp_r29++) { + temp_r27 = HuSprCreate(temp_r22, 190, 0); + HuSprGrpMemberSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, temp_r27); + HuSprPosSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, 42 + temp_r28 + (temp_r29 * 42), temp_r26 + (temp_r31 * 42)); + if (mgBattleStar[lbl_1_bss_2C1C[temp_r31]] <= temp_r29) { + HuSprScaleSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, 0, 0); + } + else { + HuSprScaleSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, 1, 1); + } + if (mgTypeCurr == 1) { + if (temp_r31 > 2) { + HuSprAttrSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, HUSPR_ATTR_DISPOFF); + } + if (temp_r31 == 1) { + HuSprPosSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, 42 + temp_r28 + (temp_r29 * 42), temp_r26 + 84); + } + } + else if (mgTypeCurr == 2) { + if (temp_r31 % 2 == 1) { + HuSprAttrSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, HUSPR_ATTR_DISPOFF); + } + if (temp_r31 == 0) { + HuSprPosSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, 42 + temp_r28 + (temp_r29 * 42), temp_r26 + 21); + } + if (temp_r31 == 2) { + HuSprPosSet(temp_r30, 1 + (temp_r31 * 8) + temp_r29, 42 + temp_r28 + (temp_r29 * 42), temp_r26 + 105); + } + } + } + } + temp_r28 = -(((mgBattleStarMax + 1) * 42) / 2) + 22; + if (temp_r25 == 0) { + temp_r28 += 63; + } + else if (temp_r25 == 1) { + temp_r28 += 105; + } + else { + temp_r28 += 146; + } + if (mgTypeCurr == 1) { + HuSprPosSet(temp_r30, 33, temp_r28 + 21, temp_r26 + 63); + HuSprAttrReset(temp_r30, 33, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r30, 34, temp_r28 + 21, temp_r26 + 105); + HuSprAttrReset(temp_r30, 34, HUSPR_ATTR_DISPOFF); + } + else if (mgTypeCurr == 2) { + HuSprPosSet(temp_r30, 33, temp_r28 + 21, temp_r26 + 21); + HuSprAttrReset(temp_r30, 33, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r30, 34, temp_r28 + 21, temp_r26 + 105); + HuSprAttrReset(temp_r30, 34, HUSPR_ATTR_DISPOFF); + } + temp_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 67) + temp_r25, MEMORY_DEFAULT_NUM)); + temp_r27 = HuSprCreate(temp_r24, 200, 0); + HuSprGrpMemberSet(temp_r30, 32, temp_r27); + HuSprGrpPosSet(temp_r30, 288, 185); + HuSprGrpDrawNoSet(temp_r30, 64); + HuSprGrpScaleSet(temp_r30, 1, 0); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + lbl_1_bss_38C[temp_r31] = 0; + } + switch (mgTypeCurr) { + case 0: + temp_r23 = -1; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp8[temp_r31] = GWPlayerCoinWinGet(temp_r31) + GWPlayerCoinCollectGet(temp_r31); + if (temp_r23 < sp8[temp_r31]) { + temp_r23 = sp8[temp_r31]; + } + } + lbl_1_bss_394 = 0; + if (temp_r23 != 0) { + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r23 == sp8[temp_r31]) { + lbl_1_bss_396[lbl_1_bss_394] = temp_r31; + lbl_1_bss_38C[temp_r31] = 1; + lbl_1_bss_394++; + } + } + } + break; + + case 1: + case 2: + sp8[0] = sp8[1] = 0; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp8[GWPlayerCfg[temp_r31].group] += GWPlayerCoinWinGet(temp_r31) + GWPlayerCoinCollectGet(temp_r31); + } + if (mgInfoTbl[GWSystem.mg_next].ovl == OVL_M422) { + sp8[1] /= 3; + } + lbl_1_bss_394 = 0; + if (sp8[0] != 0 || sp8[1] != 0) { + if (sp8[0] != sp8[1]) { + if (sp8[0] > sp8[1]) { + temp_r29 = 0; + } + else { + temp_r29 = 1; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r29 == GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].group) { + lbl_1_bss_396[lbl_1_bss_394] = temp_r31; + lbl_1_bss_38C[temp_r31] = 1; + lbl_1_bss_394++; + } + } + } + else { + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + lbl_1_bss_396[lbl_1_bss_394] = temp_r31; + lbl_1_bss_38C[temp_r31] = 1; + lbl_1_bss_394++; + } + } + } + break; + + case 3: + for (temp_r31 = lbl_1_bss_394 = 0; temp_r31 < 4; temp_r31++) { + if (!GWPlayerCoinWinGet(lbl_1_bss_2C1C[temp_r31])) { + lbl_1_bss_396[lbl_1_bss_394] = temp_r31; + lbl_1_bss_38C[temp_r31] = 1; + lbl_1_bss_394++; + } + } + break; + + default: + break; + } +} + +void fn_1_12B64(s16 arg0); + +s32 fn_1_1129C(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + float temp_f31; + + s16 sp18[4]; + s16 sp10[4]; + s16 sp8[4]; + + HuSprTPLvlSet(lbl_1_bss_388, 10, 0); + while (WipeStatGet()) { + HuPrcVSleep(); + } + fn_1_10564(); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 20) { + temp_f31 = temp_r31 / 20.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, 1.1 * sind(temp_f31 * 90.0f)); + } + else { + temp_f31 = (temp_r31 - 20) / 10.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, 1.0 + (0.1 * cosd(temp_f31 * 90.0f))); + } + HuPrcVSleep(); + } + HuPrcSleep(30); + if (lbl_1_data_148 == -1) { + lbl_1_data_148 = fn_1_2530C(0, 0, 0); + } + if (lbl_1_bss_394) { + for (temp_r31 = 0; temp_r31 < lbl_1_bss_394; temp_r31++) { + HuWinInsertMesSet(lbl_1_data_148, lbl_1_bss_2C24[lbl_1_bss_396[temp_r31]], (s32)temp_r31); + } + if (lbl_1_bss_394 == 1) { + fn_1_25838(lbl_1_data_148, 0x280012, -1, -1); + } + else if (lbl_1_bss_394 == 2) { + fn_1_25838(lbl_1_data_148, 0x28001F, -1, -1); + } + else if (lbl_1_bss_394 == 3) { + fn_1_25838(lbl_1_data_148, 0x280020, -1, -1); + } + else if (lbl_1_bss_394 == 4) { + fn_1_25838(lbl_1_data_148, 0x280021, -1, -1); + } + HuAudFXPlay(825); + HuAudFXPlay(826); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + temp_f31 = (1 - sind((temp_r31 / 30.0f) * 90.0f)) + 1; + for (temp_r30 = 0; temp_r30 < lbl_1_bss_394; temp_r30++) { + temp_r28 = lbl_1_bss_396[temp_r30]; + HuSprScaleSet(lbl_1_bss_38A, 1 + (temp_r28 * 8) + mgBattleStar[lbl_1_bss_2C1C[temp_r28]], temp_f31, temp_f31); + } + if (temp_r31 == 10) { + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + if (lbl_1_bss_38C[temp_r30]) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[temp_r30], lbl_1_bss_2BC4[temp_r30][3], 0, 5, HU3D_MOTATTR_NONE); + } + else { + Hu3DMotionShiftSet(lbl_1_bss_2C14[temp_r30], lbl_1_bss_2BC4[temp_r30][4], 0, 5, HU3D_MOTATTR_NONE); + } + } + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp10[temp_r31] = 0; + } + for (temp_r30 = temp_r29 = 0; temp_r30 < lbl_1_bss_394; temp_r30++) { + mgBattleStar[lbl_1_bss_2C1C[lbl_1_bss_396[temp_r30]]]++; + if (mgBattleStar[lbl_1_bss_2C1C[lbl_1_bss_396[temp_r30]]] >= mgBattleStarMax) { + sp18[temp_r29] = lbl_1_bss_396[temp_r30]; + sp10[lbl_1_bss_396[temp_r30]] = 1; + temp_r29++; + } + } + if (temp_r29 != 0) { + for (temp_r31 = 0; temp_r31 < temp_r29; temp_r31++) { + HuWinInsertMesSet(lbl_1_data_148, lbl_1_bss_2C24[sp18[temp_r31]], (s32)temp_r31); + } + if (temp_r29 == 1) { + fn_1_25838(lbl_1_data_148, 0x280014, -1, -1); + } + else if (temp_r29 == 2) { + fn_1_25838(lbl_1_data_148, 0x280022, -1, -1); + } + else if (temp_r29 == 3) { + fn_1_25838(lbl_1_data_148, 0x280023, -1, -1); + } + else if (temp_r29 == 4) { + fn_1_25838(lbl_1_data_148, 0x280024, -1, -1); + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r31 < temp_r29) { + sp8[temp_r31] = lbl_1_bss_2C24[sp18[temp_r31]]; + } + else { + sp8[temp_r31] = -1; + } + } + MGSeqAltWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudFXPlay(2175); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + if (sp10[temp_r30]) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[temp_r30], lbl_1_bss_2BC4[temp_r30][5], 0, 5, HU3D_MOTATTR_NONE); + fn_1_12B64(temp_r30); + } + else { + Hu3DMotionShiftSet(lbl_1_bss_2C14[temp_r30], lbl_1_bss_2BC4[temp_r30][6], 0, 5, HU3D_MOTATTR_NONE); + } + } + HuPrcSleep(120); + return 1; + } + else { + HuPrcSleep(30); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[temp_r30], lbl_1_bss_2BC4[temp_r30][0], 0, 5, HU3D_MOTATTR_LOOP); + } + HuPrcSleep(30); + } + } + else { + fn_1_25838(lbl_1_data_148, 0x280013, -1, -1); + } + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 10) { + temp_f31 = temp_r31 / 10.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, 1.0 + (0.1 * sind(temp_f31 * 90.0f))); + } + else { + temp_f31 = (temp_r31 - 10) / 20.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, 1.1 * cosd(temp_f31 * 90.0f)); + } + HuPrcVSleep(); + } + return 0; +} + +s32 fn_1_11E68(void) +{ + s16 choice; + fn_1_25838(lbl_1_data_148, 0x28000C, -1, -1); + HuWinAttrSet(lbl_1_data_148, 0x10); + choice = HuWinChoiceGet(lbl_1_data_148, 1); + lbl_1_bss_3A0 = 0; + fn_1_25584(lbl_1_data_148); + lbl_1_data_148 = -1; + if (choice == 0) { + s16 i; + s16 j; + float weight; + for (i = 0; i < 4; i++) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[i], lbl_1_bss_2BC4[i][0], 0, 10, HU3D_MOTATTR_LOOP); + } + for (i = 0; i <= 20; i++) { + weight = i / 20.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, cosd(weight * 90.0f)); + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + mgBattleStar[i] = 0; + for (j = 0; j < 7; j++) { + HuSprScaleSet(lbl_1_bss_38A, j + (i * 8) + 1, 0, 0); + } + } + for (i = 0; i <= 20; i++) { + weight = i / 20.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, sind(weight * 90.0f)); + HuPrcVSleep(); + } + for (i = 0; i <= 20; i++) { + weight = i / 20.0f; + HuSprGrpScaleSet(lbl_1_bss_38A, 1, cosd(weight * 90.0f)); + HuPrcVSleep(); + } + return 1; + } + else { + fn_1_1222C(); + return 0; + } +} + +void fn_1_1222C(void) +{ + s16 i; + s16 j; + ModelData *model; + float weight; + float angle; + + Vec pos; + Vec posEnd; + Vec posModel; + for (i = 0; i < 4; i++) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[i], lbl_1_bss_2BC4[i][2], 0, 10, HU3D_MOTATTR_LOOP); + } + model = &Hu3DData[lbl_1_bss_2C80[5]]; + pos = model->pos; + posEnd.x = 0; + posEnd.y = 0; + posEnd.z = 640; + VECSubtract(&posEnd, &pos, &posEnd); + angle = atan2d(posEnd.z, posEnd.x) + 180; + for (i = 0; i <= 30; i++) { + for (j = 0; j < 4; j++) { + if (i <= 10) { + weight = i / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C14[j], 0, weight * 90.0f, 0); + } + weight = i / 30.0; + Hu3DModelPosSet(lbl_1_bss_2C14[j], ((j * 130) - 195) + ((1 - cosd(weight * 90.0f)) * 700.0), 0, 750); + if ((i + (j * 2)) % 5 == 0) { + HuAudFXPlay(GWPlayerCfg[j].character + 213); + } + } + if (i == 20) { + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[7], 0, 8, HU3D_MOTATTR_LOOP); + } + if (i >= 20) { + weight = (i - 20) / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, 20.0f + ((angle - 20.0f) * weight), 0); + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + Hu3DMotionShiftSet(lbl_1_bss_2C14[i], lbl_1_bss_2BC4[i][0], 0, 10, HU3D_MOTATTR_LOOP); + } + for (i = 0; i <= 30; i++) { + weight = i / 30.0; + VECScale(&posEnd, &posModel, weight); + VECAdd(&pos, &posModel, &posModel); + Hu3DModelPosSetV(lbl_1_bss_2C80[5], &posModel); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6], 0, 10, HU3D_MOTATTR_LOOP); + for (i = 0; i <= 10; i++) { + weight = 1.0 - (i / 10.0); + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, angle * weight, 0); + HuPrcVSleep(); + } + for (i = 0; i <= 60; i++) { + if (i <= 10) { + weight = i / 10.0; + HuSprGrpPosSet(lbl_1_bss_388, 288, 240.0 + (16.0 * sind(weight * 90.0f))); + if (lbl_1_bss_38A) { + HuSprGrpPosSet(lbl_1_bss_38A, 288, 185.0 + (16.0 * sind(weight * 90.0f))); + } + } + else { + weight = (i - 10) / 50.0; + weight = (1 - cosd(weight * 90.0f)) * 400; + HuSprGrpPosSet(lbl_1_bss_388, 288, 256 - weight); + if (lbl_1_bss_38A) { + HuSprGrpPosSet(lbl_1_bss_38A, 288, 201 - weight); + } + } + + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_INSTPIC); + if (lbl_1_bss_388) { + HuSprGrpKill(lbl_1_bss_388); + } + if (lbl_1_bss_38A) { + HuSprGrpKill(lbl_1_bss_38A); + } + lbl_1_bss_388 = lbl_1_bss_38A = 0; + for (i = 0; i < 4; i++) { + CharModelKill(GWPlayerCfg[i].character); + } +} + +void fn_1_12BEC(void); + +void fn_1_12B64(s16 arg0) +{ + Process *process; + s32 *data; + process = HuPrcChildCreate(fn_1_12BEC, 100, 12288, 0, objman); + data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(s32), MEMORY_DEFAULT_NUM); + process->user_data = data; + *data = arg0; + lbl_1_bss_3A0 = 1; + (void)process; +} + +void fn_1_12BEC(void) +{ + s16 temp_r31; + ModelData *temp_r30; + HsfMaterial *temp_r29; + s32 *temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + s16 temp_r22; + Process *temp_r21; + float temp_f31; + Vec sp44[30]; + s16 sp8[30]; + + temp_r21 = HuPrcCurrentGet(); + temp_r28 = temp_r21->user_data; + temp_r27 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MGMODE, 82)); + Hu3DModelLayerSet(temp_r27, 3); + Hu3DModelPosSet(temp_r27, (*temp_r28 * 130) - 195, 300, 750); + Hu3DModelScaleSet(temp_r27, 0.8f, 0.8f, 0.8f); + for (temp_r31 = 0; temp_r31 < 30; temp_r31++) { + if (temp_r31 < 4) { + temp_r26 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MGMODE, 83)); + sp8[temp_r31] = temp_r26; + temp_r30 = &Hu3DData[temp_r26]; + temp_r29 = temp_r30->hsfData->material; + for (temp_r24 = 0; temp_r24 < temp_r30->hsfData->materialCnt; temp_r24++, temp_r29++) { + temp_r29->color[0] = lbl_1_data_152[temp_r31].r; + temp_r29->color[1] = lbl_1_data_152[temp_r31].g; + temp_r29->color[2] = lbl_1_data_152[temp_r31].b; + temp_r29->litColor[0] = lbl_1_data_152[temp_r31].r; + temp_r29->litColor[1] = lbl_1_data_152[temp_r31].g; + temp_r29->litColor[2] = lbl_1_data_152[temp_r31].b; + } + } + else { + temp_r26 = Hu3DModelLink(sp8[temp_r31 % 4]); + sp8[temp_r31] = temp_r26; + } + Hu3DModelPosSet(temp_r26, (frandmod(50) - 220 + (*temp_r28 * 130)), (temp_r31 * 12) + 350, 750); + Hu3DModelScaleSet(temp_r26, 2.0f, 2.0f, 2.0f); + Hu3DModelAttrSet(temp_r26, HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(temp_r26, 3); + sp44[temp_r31].x = (float)(frandmod(50) - 25) * 0.05; + sp44[temp_r31].z = (float)(frandmod(50) - 25) * 0.05; + } + HuPrcSleep(45); + temp_r25 = 0; + while (1) { + for (temp_r31 = temp_r22 = 0; temp_r31 < 30; temp_r31++) { + temp_r30 = &Hu3DData[sp8[temp_r31]]; + if (temp_r30->pos.y > 350.0f) { + Hu3DModelAttrSet(sp8[temp_r31], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(sp8[temp_r31], HU3D_ATTR_DISPOFF); + temp_r30->pos.x += sp44[temp_r31].x; + temp_r30->pos.z += sp44[temp_r31].z; + } + temp_r30->pos.y -= 3.0f; + temp_r30->rot.x += ((temp_r31 % 3) + 1) * 5; + temp_r30->rot.y += ((temp_r31 % 5) + 1) * 5; + if (temp_r30->pos.y < 0.0f) { + if (lbl_1_bss_3A0 == 0) { + Hu3DModelAttrSet(sp8[temp_r31], HU3D_ATTR_DISPOFF); + temp_r22++; + } + else { + temp_r30->pos.y = 350; + temp_r23 = frandmod(50) - 25; + temp_r30->pos.x = (-195 + (*temp_r28 * 130)) + temp_r23; + temp_r30->pos.z = 750; + sp44[temp_r31].x = ((float)frandmod(50) * 0.02) * ((temp_r23 < 0) ? -1 : (temp_r23 > 0) ? 1 : 0); + sp44[temp_r31].z = (float)(frandmod(50) - 25) * 0.05; + } + } + } + if (lbl_1_bss_3A0 || temp_r22 != 30) { + if (lbl_1_bss_3A0 == 0 && temp_r25 <= 10) { + temp_f31 = 1 - sind((temp_r25 / 10.0) * 90.0); + if (0.0 == temp_f31) { + Hu3DModelAttrSet(temp_r27, HU3D_ATTR_DISPOFF); + } + Hu3DModelScaleSet(temp_r27, temp_f31, 1, 1); + temp_r25++; + } + HuPrcVSleep(); + } + else { + break; + } + } + (void)temp_r28; + (void)temp_r28; + (void)temp_r27; + (void)temp_r27; + Hu3DModelKill(temp_r27); + HuPrcVSleep(); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } +} diff --git a/src/REL/mgmodedll/datalist.c b/src/REL/mgmodedll/datalist.c index 8afb7b0a..3eb233ec 100644 --- a/src/REL/mgmodedll/datalist.c +++ b/src/REL/mgmodedll/datalist.c @@ -1,131 +1,135 @@ #include "REL/mgmodedll.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + DataListModel lbl_1_data_490[] = { - { 0x620000, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620001, 0x40000001, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620002, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620003, 0, 1, -1, 2, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620004, 0, 1, -1, 2, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x62005E, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x62005F, 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620060, 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620061, 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620007, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x620008, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x00), 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x01), 0x40000001, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x02), 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x03), 0, 1, -1, 2, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x04), 0, 1, -1, 2, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x5E), 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x5F), 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x60), 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x61), 0, 1, -1, 5, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x05), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x06), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x07), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x08), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, }; DataListSprite lbl_1_data_768[] = { - { 0x62000C, 0, 10, 288, -200, { 255, 255, 255, 255 } }, - { 0x620009, 0, 10, 288, -200, { 255, 255, 255, 255 } }, - { 0x62000A, 0, 10, 288, -200, { 255, 255, 255, 255 } }, - { 0x62000D, 4, 100, 288, 240, { 255, 255, 255, 255 } }, - { 0x620018, 4, 200, 288, 240, { 255, 255, 255, 255 } }, - { 0x62001A, 4, 20, 288, 240, { 255, 255, 255, 255 } }, - { 0x62001B, 4, 30, 288, 240, { 255, 255, 255, 255 } }, - { 0x62001C, 4, 40, 288, 240, { 255, 255, 255, 255 } }, - { 0x62001D, 4, 50, 288, 240, { 255, 255, 255, 255 } }, - { 0x62001E, 4, 50, 288, 240, { 255, 255, 255, 255 } }, - { 0x62001F, 4, 50, 288, 240, { 255, 255, 255, 255 } }, - { 0x620020, 4, 50, 288, 240, { 255, 255, 255, 255 } }, - { 0x620021, 4, 50, 288, 240, { 255, 255, 255, 255 } }, - { 0x620025, 4, 200, 288, 240, { 255, 255, 255, 255 } }, - { 0x62000E, 4, 210, 288, 240, { 255, 255, 255, 255 } }, - { 0x62000F, 4, 210, 288, 240, { 255, 255, 255, 255 } }, - { 0x620019, 4, 200, 288, 240, { 255, 255, 255, 255 } }, - { 0x620028, 4, 10, 288, 240, { 255, 255, 255, 255 } }, - { 0x620028, 4, 10, 288, 240, { 255, 255, 255, 255 } }, - { 0x62002A, 4, 10, 288, 240, { 255, 255, 255, 255 } }, - { 0x62002E, 4, 200, 288, 240, { 255, 255, 255, 255 } }, - { 0x62002F, 4, 200, 288, 240, { 255, 255, 255, 255 } }, - { 0x620032, 4, 5, 288, 240, { 255, 255, 255, 255 } }, - { 0x620031, 4, 4, 288, 240, { 255, 255, 255, 255 } }, - { 0x620030, 4, 4, 288, 240, { 255, 255, 255, 255 } }, - { 0x620029, 4, 4, 288, 240, { 255, 255, 255, 255 } }, - { 0x620029, 4, 4, 288, 240, { 255, 255, 255, 255 } }, - { 0x620033, 4, 50, 288, 240, { 255, 255, 255, 255 } }, - { 0x620034, 4, 50, 288, 256, { 255, 255, 255, 255 } }, - { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x0C), 0, 10, 288, -200, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x09), 0, 10, 288, -200, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x0A), 0, 10, 288, -200, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x0D), 4, 100, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x18), 4, 200, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x1A), 4, 20, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x1B), 4, 30, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x1C), 4, 40, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x1D), 4, 50, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x1E), 4, 50, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x1F), 4, 50, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x20), 4, 50, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x21), 4, 50, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x25), 4, 200, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x0E), 4, 210, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x0F), 4, 210, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x19), 4, 200, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x28), 4, 10, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x28), 4, 10, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x2A), 4, 10, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x2E), 4, 200, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x2F), 4, 200, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x32), 4, 5, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x31), 4, 4, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x30), 4, 4, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x29), 4, 4, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x29), 4, 4, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x33), 4, 50, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MGMODE, 0x34), 4, 50, 288, 256, { 255, 255, 255, 255 } }, + { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, }; void fn_1_267E8(DataListModel *model_list) { - DataListModel *list; - s16 i; - s16 model; - s16 clear_i; - ModelData *model_ptr; - void *data; - list = model_list; - for(clear_i=0; clear_i<13; clear_i++) { - lbl_1_bss_2C80[clear_i] = lbl_1_bss_2C66[clear_i] = -1; - } - for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) { - if(list->type == 0) { - data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); - model = Hu3DModelCreate(data); - lbl_1_bss_2C80[i] = model; - Hu3DModelAttrSet(model, list->attr); - Hu3DModelPosSetV(model, &list->pos); - Hu3DModelRotSetV(model, &list->rot); - Hu3DModelScaleSetV(model, &list->scale); - model_ptr = &Hu3DData[model]; - if(model_ptr->unk_08 != -1) { - lbl_1_bss_2C66[i] = model_ptr->unk_08; - } - } else if(list->type == 1) { - data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); - lbl_1_bss_2C66[i] = Hu3DJointMotion(lbl_1_bss_2C80[list->mot_link], data); - - } - (void)i; - } - list = model_list; - for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) { - if(list->type == 2) { - model = Hu3DModelLink(lbl_1_bss_2C80[list->link]); - lbl_1_bss_2C80[i] = model; - Hu3DModelAttrSet(model, list->attr); - Hu3DModelPosSetV(model, &list->pos); - Hu3DModelRotSetV(model, &list->rot); - Hu3DModelScaleSetV(model, &list->scale); - } - if(list->type == 0 && list->mot_link != -1) { - Hu3DMotionSet(lbl_1_bss_2C80[i], lbl_1_bss_2C66[list->mot_link]); - } - (void)i; - } + DataListModel *list; + s16 i; + s16 model; + s16 clear_i; + ModelData *model_ptr; + void *data; + list = model_list; + for (clear_i = 0; clear_i < 13; clear_i++) { + lbl_1_bss_2C80[clear_i] = lbl_1_bss_2C66[clear_i] = -1; + } + for (i = 0; list->datanum != DATA_NUM_LISTEND; list++, i++) { + if (list->type == 0) { + data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); + model = Hu3DModelCreate(data); + lbl_1_bss_2C80[i] = model; + Hu3DModelAttrSet(model, list->attr); + Hu3DModelPosSetV(model, &list->pos); + Hu3DModelRotSetV(model, &list->rot); + Hu3DModelScaleSetV(model, &list->scale); + model_ptr = &Hu3DData[model]; + if (model_ptr->unk_08 != -1) { + lbl_1_bss_2C66[i] = model_ptr->unk_08; + } + } + else if (list->type == 1) { + data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_2C66[i] = Hu3DJointMotion(lbl_1_bss_2C80[list->mot_link], data); + } + (void)i; + } + list = model_list; + for (i = 0; list->datanum != DATA_NUM_LISTEND; list++, i++) { + if (list->type == 2) { + model = Hu3DModelLink(lbl_1_bss_2C80[list->link]); + lbl_1_bss_2C80[i] = model; + Hu3DModelAttrSet(model, list->attr); + Hu3DModelPosSetV(model, &list->pos); + Hu3DModelRotSetV(model, &list->rot); + Hu3DModelScaleSetV(model, &list->scale); + } + if (list->type == 0 && list->mot_link != -1) { + Hu3DMotionSet(lbl_1_bss_2C80[i], lbl_1_bss_2C66[list->mot_link]); + } + (void)i; + } } void fn_1_26A78(DataListSprite *sprite_list) { - DataListSprite *list; - s16 sprite; - s16 clear_i; - s16 i; - list = sprite_list; - for(clear_i=0; clear_i<29; clear_i++) { - lbl_1_bss_2C2C[clear_i] = -1; - } - for(i=0; list->datanum; i++, list++) { - sprite = espEntry(list->datanum, 100, 0); - lbl_1_bss_2C2C[i] = sprite; - espPosSet(sprite, list->x, list->y); - espColorSet(sprite, list->color.r, list->color.g, list->color.b); - espTPLvlSet(sprite, list->color.a/255.0f); - espPriSet(sprite, list->prio); - espAttrSet(sprite, list->attr); - } + DataListSprite *list; + s16 sprite; + s16 clear_i; + s16 i; + list = sprite_list; + for (clear_i = 0; clear_i < 29; clear_i++) { + lbl_1_bss_2C2C[clear_i] = -1; + } + for (i = 0; list->datanum; i++, list++) { + sprite = espEntry(list->datanum, 100, 0); + lbl_1_bss_2C2C[i] = sprite; + espPosSet(sprite, list->x, list->y); + espColorSet(sprite, list->color.r, list->color.g, list->color.b); + espTPLvlSet(sprite, list->color.a / 255.0f); + espPriSet(sprite, list->prio); + espAttrSet(sprite, list->attr); + } } void fn_1_26BB0(void) { - s16 i; - for(i=0; i<29; i++) { - if(lbl_1_bss_2C2C[i] != -1) { - espKill(lbl_1_bss_2C2C[i]); - } - } -} \ No newline at end of file + s16 i; + for (i = 0; i < 29; i++) { + if (lbl_1_bss_2C2C[i] != -1) { + espKill(lbl_1_bss_2C2C[i]); + } + } +} diff --git a/src/REL/mgmodedll/free_play.c b/src/REL/mgmodedll/free_play.c new file mode 100644 index 00000000..58ffe85e --- /dev/null +++ b/src/REL/mgmodedll/free_play.c @@ -0,0 +1,1288 @@ +#include "REL/mgmodedll.h" +#include "game/gamework.h" + +#include "game/audio.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/saveload.h" +#include "game/wipe.h" + +#include "ext_math.h" + +s16 lbl_1_bss_352[2][7]; +s16 lbl_1_bss_34A[4]; +s16 lbl_1_bss_348; +s16 lbl_1_bss_340[4]; +s16 lbl_1_bss_318[10][2]; +s16 lbl_1_bss_316; +s16 lbl_1_bss_30E[4]; +s16 lbl_1_bss_30C; +Vec lbl_1_bss_2F4[2]; +s16 lbl_1_bss_2F0; +s16 lbl_1_bss_2EE; +s16 lbl_1_bss_2EC; +float lbl_1_bss_2E8; +s16 lbl_1_bss_2E6; +s16 lbl_1_bss_2E4; +s16 lbl_1_bss_2E2; +static s16 pad_05_000002E0_bss; + +s16 lbl_1_data_A0 = -1; + +s16 lbl_1_data_A2[7] = { 0, 1, 2, 4, 3, 6, 9 }; + +float lbl_1_data_B0[4] = { 370, 412, 488, 530 }; + +s32 lbl_1_data_C0[4] = { + DATA_MAKE_NUM(DATADIR_MGMODE, 0x37), + DATA_MAKE_NUM(DATADIR_MGMODE, 0x3D), + DATA_MAKE_NUM(DATADIR_MGMODE, 0x3A), + DATA_MAKE_NUM(DATADIR_MGMODE, 0x40), +}; + +void fn_1_9E44(void); +void fn_1_9F64(s16 arg0, s16 arg1, s16 arg2); +void fn_1_A364(s16 arg0, float arg1, float arg2, s16 arg3); + +void fn_1_A624(void); +void fn_1_A6A8(void); +void fn_1_ACAC(s16 arg0, s16 arg1); +void fn_1_ADA0(s32 arg0); + +void fn_1_AE20(s16 arg0, s16 arg1, s16 arg2, s16 arg3); + +s16 fn_1_B5A8(s16 *arg0, s16 *arg1); +void fn_1_B770(void); +void fn_1_B9B8(void); +s32 fn_1_BB24(void); +void fn_1_BFA0(s16 arg0); +s32 fn_1_C0C8(s32 arg0); + +s32 fn_1_6D28(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s32 temp_r26; + s32 temp_r25; + s32 temp_r24; + s16 temp_r23; + s16 spC[6]; + s16 spA; + s16 sp8; + float temp_f31; + temp_r25 = 1; + fn_1_279FC(0); + fn_1_A6A8(); + fn_1_9E44(); + spA = sp8 = 0; + mgInstExitEnableF = 1; + mgTypeCurr = 0; + _SetFlag(11); + fn_1_B770(); + if (lbl_1_bss_2A6 != 2) { + temp_r28 = lbl_1_bss_2C2C[1]; + } + else { + temp_r28 = lbl_1_bss_2C2C[2]; + } + if (mgModeEvtNo == 1 || mgModeEvtNo == 2) { + mgTypeCurr = fn_1_B5A8(&spA, &sp8); + espAttrReset(lbl_1_bss_2C2C[3], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[3], 1.0f); + espAttrReset(temp_r28, HUSPR_ATTR_DISPOFF); + espPosSet(temp_r28, 288, 70); + espAttrReset(lbl_1_bss_2C2C[13], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[13], 450, 216); + if (lbl_1_bss_2A6 == 0) { + espAttrReset(lbl_1_bss_2C2C[4], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[4], 450, 404); + if (mgModeEvtNo == 1) { + fn_1_BFA0(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8]); + espAttrReset(lbl_1_bss_2C2C[14], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[14], 450, 348); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(lbl_1_bss_34A[temp_r30], (temp_r30 * 50) + 375, 348); + } + } + else { + espAttrReset(lbl_1_bss_2C2C[15], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[15], 450, 348); + espAttrReset(lbl_1_bss_2C2C[16], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[16], 450, 348); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(lbl_1_bss_34A[temp_r30], lbl_1_data_B0[temp_r30], 348); + } + } + } + else if (lbl_1_bss_2A6 == 1) { + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], 450, 414); + } + else if (lbl_1_bss_2A6 == 2) { + espAttrReset(lbl_1_bss_2C2C[21], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[21], 450, 400); + } + for (temp_r30 = 0; temp_r30 < lbl_1_bss_316; temp_r30++) { + espAttrReset(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], 180, 270); + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], (temp_r30 * 10) + 20); + } + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[mgTypeCurr][1]], 19); + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], 0); + fn_1_A364(0, 180, 270, 19); + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8], 0, 450, 216); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + } + else { + espAttrReset(lbl_1_bss_2C2C[3], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[3], 0.0f); + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + espTPLvlSet(lbl_1_bss_2C2C[3], temp_r31 / 20.0); + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < lbl_1_bss_316; temp_r31++) { + spC[temp_r31] = -1; + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r31][1]], (temp_r31 * 10) + 20); + } + temp_r26 = 0; + temp_r23 = (lbl_1_bss_316 * 10) + 10; + for (temp_r31 = 0; temp_r31 <= temp_r23; temp_r31++) { + if (temp_r31 <= 20) { + temp_f31 = temp_r31 / 20.0; + espAttrReset(temp_r28, HUSPR_ATTR_DISPOFF); + espPosSet(temp_r28, 288, -100 + (170 * sind(temp_f31 * 90.0f))); + } + if (temp_r31 <= 20) { + temp_f31 = temp_r31 / 20.0; + espAttrReset(lbl_1_bss_2C2C[13], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[13], (-350 * sind(temp_f31 * 90.0f)) + 800, 216); + if (lbl_1_bss_2A6 == 0) { + espAttrReset(lbl_1_bss_2C2C[4], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[4], (-350 * sind(temp_f31 * 90.0f)) + 800, 404); + if (lbl_1_bss_2A4 != 1) { + espAttrReset(lbl_1_bss_2C2C[14], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[14], (-350 * sind(temp_f31 * 90.0f)) + 800, 348); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(lbl_1_bss_34A[temp_r30], (temp_r30 * 50) + (((-350 * sind(temp_f31 * 90.0f)) + 800) - 75), 348); + } + } + else { + espAttrReset(lbl_1_bss_2C2C[15], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[15], (-350 * sind(temp_f31 * 90.0f)) + 800, 348); + espAttrReset(lbl_1_bss_2C2C[16], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[16], (-350 * sind(temp_f31 * 90.0f)) + 800, 348); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(lbl_1_bss_34A[temp_r30], 1, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(lbl_1_bss_34A[temp_r30], (800.0 * (1 - sind(temp_f31 * 90.0f))) + lbl_1_data_B0[temp_r30], 348); + } + } + } + else { + if (lbl_1_bss_2A6 == 1) { + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], (-350 * sind(temp_f31 * 90.0f)) + 800, 414); + } + else if (lbl_1_bss_2A6 == 2) { + espAttrReset(lbl_1_bss_2C2C[21], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[21], (-350 * sind(temp_f31 * 90.0f)) + 800, 400); + } + } + } + for (temp_r30 = 0; temp_r30 < lbl_1_bss_316; temp_r30++) { + if (temp_r31 >= ((lbl_1_bss_316 - temp_r30) - 1) * 10 && temp_r31 <= (((lbl_1_bss_316 - temp_r30) - 1) * 10) + 10) { + temp_f31 = (temp_r31 - (((lbl_1_bss_316 - temp_r30) - 1) * 10)) / 10.0; + if (0.0 == temp_f31) { + temp_r26++; + fn_1_9F64(temp_r26 & 0x1, lbl_1_bss_318[temp_r30][0], 0); + } + espAttrReset(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], 180, 800 + (-530 * sind(temp_f31 * 90.0f))); + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], (temp_r30 * 10) + 10); + fn_1_A364(temp_r26 & 0x1, 180, 800 + (-530 * sind(temp_f31 * 90.0f)), (temp_r30 * 10) + 8); + } + } + HuPrcVSleep(); + } + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][0], 10, 450, 216); + } + espAttrReset(lbl_1_bss_2C2C[19], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[19], 204, (sp8 * 38) + 154); + espPriSet(lbl_1_bss_2C2C[19], 7); + espTPLvlSet(lbl_1_bss_2C2C[19], 0.7); + espAttrSet(lbl_1_bss_2C2C[17], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[17], 204, 126); + espPriSet(lbl_1_bss_2C2C[17], 8); + espAttrSet(lbl_1_bss_2C2C[18], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[18], 204, 410); + espPriSet(lbl_1_bss_2C2C[18], 8); + espBankSet(lbl_1_bss_2C2C[18], 1); + fn_1_A364(0, 180, 270, 7); + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], spA); + fn_1_A364(1, 180, 270, 100); + fn_1_ACAC(lbl_1_bss_20AC[lbl_1_bss_318[mgTypeCurr][0]], lbl_1_bss_2638[lbl_1_bss_318[mgTypeCurr][0]]); + fn_1_ADA0(1); + HuPrcSleep(10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + while (1) { + HuPrcVSleep(); + if (spA != 0) { + espAttrReset(lbl_1_bss_2C2C[17], HUSPR_ATTR_DISPOFF); + } + else { + espAttrSet(lbl_1_bss_2C2C[17], HUSPR_ATTR_DISPOFF); + } + if (spA + 7 < lbl_1_bss_2638[lbl_1_bss_318[mgTypeCurr][0]]) { + espAttrReset(lbl_1_bss_2C2C[18], HUSPR_ATTR_DISPOFF); + } + else { + espAttrSet(lbl_1_bss_2C2C[18], HUSPR_ATTR_DISPOFF); + } + temp_r27 = temp_r29 = 0; + if (HuPadDStkRep[0] & PAD_BUTTON_UP) { + temp_r29 = -1; + } + else if (HuPadDStkRep[0] & PAD_BUTTON_DOWN) { + temp_r29 = 1; + } + else if ((HuPadDStkRep[0] & PAD_BUTTON_LEFT) || (HuPadBtnRep[0] & PAD_BUTTON_TRIGGER_L)) { + temp_r27 = -1; + } + else if ((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) || (HuPadBtnRep[0] & PAD_BUTTON_TRIGGER_R)) { + temp_r27 = 1; + } + if (temp_r29 != 0) { + if (sp8 + temp_r29 < 0 && spA != 0) { + spA--; + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8], 5, 450, 216); + for (temp_r31 = 0; temp_r31 <= 4; temp_r31++) { + espPosSet(lbl_1_bss_2C2C[17], 204, 126 - (8.0 * sind(temp_r31 * 45.0))); + if (temp_r31 == 2) { + HuAudFXPlay(772); + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], spA); + } + HuPrcVSleep(); + } + } + else if (sp8 + temp_r29 >= 7 && spA + 7 < lbl_1_bss_2638[lbl_1_bss_318[mgTypeCurr][0]]) { + spA++; + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8], 5, 450, 216); + for (temp_r31 = 0; temp_r31 <= 4; temp_r31++) { + espPosSet(lbl_1_bss_2C2C[18], 204, 410 + (8.0 * sind(temp_r31 * 45.0))); + if (temp_r31 == 2) { + HuAudFXPlay(772); + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], spA); + } + HuPrcVSleep(); + } + } + else if (sp8 + temp_r29 >= 0 && (spA + sp8 + temp_r29) < lbl_1_bss_2638[lbl_1_bss_318[mgTypeCurr][0]]) { + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8 + temp_r29], 5, 450, 216); + for (temp_r31 = 0; temp_r31 <= 4; temp_r31++) { + espPosSet(lbl_1_bss_2C2C[19], 204, ((sp8 * 38) + 154) + (temp_r29 * (38.0 * sind(22.5 * temp_r31)))); + HuPrcVSleep(); + if (temp_r31 == 2) { + HuAudFXPlay(772); + } + } + sp8 += temp_r29; + } + if (lbl_1_bss_2A4 == 0) { + fn_1_BFA0(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8]); + } + } + if (temp_r27 && lbl_1_bss_316 > 1) { + HuAudFXPlay(2172); + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], spA); + temp_r30 = mgTypeCurr; + if (mgTypeCurr + temp_r27 < 0) { + mgTypeCurr = lbl_1_bss_316 - 1; + } + else { + if (mgTypeCurr + temp_r27 >= lbl_1_bss_316) { + mgTypeCurr = 0; + } + else { + mgTypeCurr += temp_r27; + } + } + espAttrSet(lbl_1_bss_2C2C[19], HUSPR_ATTR_DISPOFF); + espAttrSet(lbl_1_bss_2C2C[17], HUSPR_ATTR_DISPOFF); + espAttrSet(lbl_1_bss_2C2C[18], HUSPR_ATTR_DISPOFF); + fn_1_ADA0(0); + for (temp_r31 = 0; temp_r31 < lbl_1_bss_316; temp_r31++) { + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r31][1]], 30); + } + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[mgTypeCurr][1]], 25); + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], 15); + fn_1_9F64(1, lbl_1_bss_318[temp_r30][0], spA); + fn_1_A364(1, 180, 270, 14); + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], 0); + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][0], 20, 450, 216); + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + if (temp_r31 == 10) { + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[mgTypeCurr][1]], 10); + } + espPosSet(lbl_1_bss_2C2C[lbl_1_bss_318[mgTypeCurr][1]], (300.0 * sind(temp_r31 * 9.0)) + 180.0, 270); + if (temp_r31 >= 10) { + temp_r24 = 7; + } + else { + temp_r24 = 20; + } + fn_1_A364(0, (300.0 * sind(temp_r31 * 9.0)) + 180.0, 270, temp_r24); + HuPrcVSleep(); + } + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], 0); + espPriSet(lbl_1_bss_2C2C[lbl_1_bss_318[mgTypeCurr][1]], 10); + fn_1_A364(0, 180.0, 270, 7); + espAttrReset(lbl_1_bss_2C2C[19], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[19], 204, 154); + fn_1_ACAC(lbl_1_bss_20AC[lbl_1_bss_318[mgTypeCurr][0]], lbl_1_bss_2638[lbl_1_bss_318[mgTypeCurr][0]]); + if (lbl_1_bss_318[mgTypeCurr][0] != 9) { + fn_1_ADA0(1); + } + sp8 = spA = 0; + if (lbl_1_bss_2A4 == 0) { + fn_1_BFA0(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8]); + } + } + if ((HuPadBtnDown[0] & PAD_BUTTON_A) && lbl_1_bss_2A6 == 2) { + temp_r31 = lbl_1_bss_318[mgTypeCurr][0]; + if (!GWMGAvailGet(lbl_1_bss_264C[temp_r31][spA + sp8] + 401)) { + HuAudFXPlay(4); + continue; + } + else { + if (lbl_1_bss_318[mgTypeCurr][0] != 9) { + HuAudFXPlay(2); + temp_r31 = lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8] + 401; + if (!GWMGCustomGet(temp_r31)) { + GWMGCustomSet(temp_r31); + } + else { + GWMGCustomReset(temp_r31); + } + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], spA); + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8], 0, 450, 216); + fn_1_B9B8(); + } + else { + if (lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8] >= 0) { + HuAudFXPlay(2); + temp_r31 = lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8] + 401; + GWMGCustomReset(temp_r31); + fn_1_B9B8(); + if (lbl_1_bss_2638[lbl_1_bss_318[mgTypeCurr][0]] <= spA + sp8) { + if (--sp8 < 0) { + sp8 = 0; + spA--; + } + espPosSet(lbl_1_bss_2C2C[19], 204, (sp8 * 38) + 154); + } + fn_1_9F64(0, lbl_1_bss_318[mgTypeCurr][0], spA); + fn_1_AE20(lbl_1_bss_264C[lbl_1_bss_318[mgTypeCurr][0]][spA + sp8], 0, 450, 216); + } + } + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + if (lbl_1_bss_2A6 == 2 && !fn_1_BB24()) { + continue; + } + temp_r25 = 0; + break; + } + if (!(HuPadBtnDown[0] & PAD_BUTTON_A)) { + continue; + } + if (lbl_1_bss_2A6) { + continue; + } + temp_r31 = lbl_1_bss_318[mgTypeCurr][0]; + if (!GWMGAvailGet(lbl_1_bss_264C[temp_r31][spA + sp8] + 401)) { + HuAudFXPlay(4); + continue; + } + HuAudFXPlay(773); + GWSystem.mg_next = lbl_1_bss_264C[temp_r31][spA + sp8]; + if (lbl_1_bss_2A4 == 0) { + GWPlayerCfg[0].group = 0; + GWPlayerCfg[1].group = 1; + GWPlayerCfg[2].group = 2; + GWPlayerCfg[3].group = 3; + if ((temp_r31 == 1 || temp_r31 == 2) && !fn_1_C0C8(0)) { + continue; + } + fn_1_2783C(1); + } + else if (lbl_1_bss_2A4 == 1) { + fn_1_2783C(2); + } + while (1) { + HuPrcVSleep(); + } + } + espAttrSet(lbl_1_bss_2C2C[19], HUSPR_ATTR_DISPOFF); + espAttrSet(lbl_1_bss_2C2C[17], HUSPR_ATTR_DISPOFF); + espAttrSet(lbl_1_bss_2C2C[18], HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_2A6 == 2) { + for (temp_r31 = 0; temp_r31 < 7; temp_r31++) { + HuSprAttrSet(lbl_1_bss_2E2, temp_r31, HUSPR_ATTR_DISPOFF); + } + } + + fn_1_ADA0(0); + fn_1_AE20(-1, 5, 450, 216); + + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + if (temp_r31 <= 20) { + temp_f31 = temp_r31 / 20.0; + espAttrReset(temp_r28, HUSPR_ATTR_DISPOFF); + espPosSet(temp_r28, 288, -100.0 + (170 * cosd(temp_f31 * 90.0f))); + } + if (temp_r31 <= 10) { + temp_f31 = temp_r31 / 10.0; + espAttrReset(lbl_1_bss_2C2C[13], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[13], (-350 * cosd(temp_f31 * 90.0f)) + 800, 216); + if (lbl_1_bss_2A6 == 0) { + espPosSet(lbl_1_bss_2C2C[4], (-350 * cosd(temp_f31 * 90.0f)) + 800, 404); + if (lbl_1_bss_2A4 != 1) { + espPosSet(lbl_1_bss_2C2C[14], (-350 * cosd(temp_f31 * 90.0f)) + 800, 348); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + + HuSprGrpPosSet(lbl_1_bss_34A[temp_r30], (temp_r30 * 50) + (((-350 * cosd(temp_f31 * 90.0f)) + 800) - 75), 348); + } + } + else { + espPosSet(lbl_1_bss_2C2C[15], (-350 * cosd(temp_f31 * 90.0f)) + 800, 348); + espPosSet(lbl_1_bss_2C2C[16], (-350 * cosd(temp_f31 * 90.0f)) + 800, 348); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + HuSprGrpPosSet(lbl_1_bss_34A[temp_r30], (800 * (1 - cosd(temp_f31 * 90.0f))) + lbl_1_data_B0[temp_r30], 348); + } + } + } + else { + if (lbl_1_bss_2A6 == 1) { + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], (-350 * cosd(temp_f31 * 90.0f)) + 800, 414); + } + else if (lbl_1_bss_2A6 == 2) { + espAttrReset(lbl_1_bss_2C2C[21], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[21], (-350 * cosd(temp_f31 * 90.0f)) + 800, 400); + } + } + } + temp_f31 = temp_r31 / 20.0; + for (temp_r30 = 0; temp_r30 < lbl_1_bss_316; temp_r30++) { + espPosSet(lbl_1_bss_2C2C[lbl_1_bss_318[temp_r30][1]], 180, 800 + (-530 * cosd(temp_f31 * 90.0f))); + } + fn_1_A364(0, 180, (-530.0 * cosd(temp_f31 * 90.0f)) + 800.0, 10); + fn_1_A364(1, 180, (-530.0 * cosd(temp_f31 * 90.0f)) + 800.0, 100); + HuPrcVSleep(); + } + fn_1_A624(); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + espTPLvlSet(lbl_1_bss_2C2C[3], 1.0 - (temp_r31 / 10.0)); + HuPrcVSleep(); + } + mgInstExitEnableF = 0; + return temp_r25; +} + +void fn_1_9E44(void) +{ + s16 j; + s16 i; + for (i = 0; i < 2; i++) { + for (j = 0; j < 7; j++) { + s16 window = HuWinCreate(0, j * 24, 268, 32, 0); + WindowData *windowP; + lbl_1_bss_352[i][j] = window; + windowP = &winData[window]; + windowP->spacing_x = 0; + HuWinBGTPLvlSet(window, 0); + HuWinMesSpeedSet(window, 0); + HuWinDispOff(window); + (void)i; + } + } +} + +void fn_1_9F64(s16 arg0, s16 arg1, s16 arg2) +{ + s16 i; + s16 no; + s16 window; + if (lbl_1_bss_2A6 == 2 && lbl_1_bss_30C == arg0) { + for (i = 0; i < 4; i++) { + HuSprAttrSet(lbl_1_bss_2E2, i + 14, HUSPR_ATTR_DISPOFF); + } + } + if (arg1 == 9) { + for (i = 0; i < 7; i++) { + HuSprAttrSet(lbl_1_bss_2E2, i + (arg0 * 7), HUSPR_ATTR_DISPOFF); + window = lbl_1_bss_352[arg0][i]; + if (i + arg2 >= lbl_1_bss_2638[9]) { + HuWinDispOff(window); + } + else { + no = lbl_1_bss_264C[9][i + arg2]; + if (no < 0) { + lbl_1_bss_30C = arg0; + no = -no - 1; + lbl_1_bss_30E[no] = i; + HuSprAttrReset(lbl_1_bss_2E2, no + 14, HUSPR_ATTR_DISPOFF); + HuSprPosSet(lbl_1_bss_2E2, no + 14, 24 + lbl_1_bss_2F4[arg0].x, (lbl_1_bss_2F4[arg0].y + (i * 38)) - 116); + HuWinDispOff(window); + } + else { + HuWinMesSet(window, mgInfoTbl[no].name_mess); + HuWinDispOn(window); + } + } + } + } + else { + for (i = 0; i < 7; i++) { + window = lbl_1_bss_352[arg0][i]; + if (i + arg2 >= lbl_1_bss_2638[arg1]) { + HuWinDispOff(window); + if (lbl_1_bss_2A6 == 2) { + HuSprAttrSet(lbl_1_bss_2E2, i + (arg0 * 7), HUSPR_ATTR_DISPOFF); + } + } + else { + no = lbl_1_bss_264C[arg1][i + arg2]; + if (GWMGAvailGet(no + 401)) { + HuWinMesSet(window, mgInfoTbl[no].name_mess); + } + else { + HuWinMesSet(window, MAKE_MESSID(0x23, 0x00)); + } + HuWinDispOn(window); + if (lbl_1_bss_2A6 == 2) { + if (GWMGCustomGet(no + 401)) { + HuSprAttrReset(lbl_1_bss_2E2, i + (arg0 * 7), HUSPR_ATTR_DISPOFF); + } + else { + HuSprAttrSet(lbl_1_bss_2E2, i + (arg0 * 7), HUSPR_ATTR_DISPOFF); + } + } + } + } + } +} + +void fn_1_A364(s16 arg0, float arg1, float arg2, s16 arg3) +{ + s16 i; + lbl_1_bss_2F4[arg0].x = arg1; + lbl_1_bss_2F4[arg0].y = arg2; + for (i = 0; i < 7; i++) { + s16 window = lbl_1_bss_352[arg0][i]; + HuWinPosSet(window, arg1 - 105, (arg2 - 136) + (i * 38)); + HuWinPriSet(window, arg3); + if (lbl_1_bss_2A6 == 2) { + HuSprPosSet(lbl_1_bss_2E2, i + (arg0 * 7), arg1 + 24, arg2 + (i * 38) - 116); + HuSprPriSet(lbl_1_bss_2E2, i + (arg0 * 7), arg3); + } + } + if (lbl_1_bss_2A6 == 2 && lbl_1_bss_30C == arg0) { + for (i = 0; i < 4; i++) { + HuSprPosSet(lbl_1_bss_2E2, i + 14, arg1 + 24, arg2 + (lbl_1_bss_30E[i] * 38) - 116); + HuSprPriSet(lbl_1_bss_2E2, i + 14, arg3 + 1); + } + } +} + +void fn_1_A624(void) +{ + s16 j; + s16 i; + + for (i = 0; i < 2; i++) { + for (j = 0; j < 7; j++) { + HuWinKill(lbl_1_bss_352[i][j]); + } + } +} + +void fn_1_A6A8(void) +{ + s16 spA[2]; + s16 i; + AnimData *anim; + s16 sprite; + s16 group; + s16 player; + s16 bank; + s16 iscom; + if (lbl_1_bss_2A4 == 1) { + spA[0] = 0; + spA[1] = 2; + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].group >= 2) { + lbl_1_bss_340[i] = 0; + } + else { + lbl_1_bss_340[spA[GWPlayerCfg[i].group]] = i; + spA[GWPlayerCfg[i].group]++; + } + } + } + else { + for (i = 0; i < 4; i++) { + lbl_1_bss_340[i] = i; + } + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_34A[i]) { + HuSprGrpKill(lbl_1_bss_34A[i]); + } + player = lbl_1_bss_340[i]; + group = HuSprGrpCreate(2); + lbl_1_bss_34A[i] = group; + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x10) + GWPlayerCfg[player].character, MEMORY_DEFAULT_NUM)); + sprite = HuSprCreate(anim, 200, 0); + HuSprGrpMemberSet(group, 0, sprite); + if (iscom = GWPlayerCfg[player].iscom) { + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x27), MEMORY_DEFAULT_NUM)); + bank = GWPlayerCfg[player].diff; + } + else { + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x26), MEMORY_DEFAULT_NUM)); + bank = lbl_1_bss_340[i]; + } + sprite = HuSprCreate(anim, 200, bank); + HuSprGrpMemberSet(group, 1, sprite); + HuSprPosSet(group, 1, 0, 20); + HuSprAttrSet(lbl_1_bss_34A[i], 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(lbl_1_bss_34A[i], 1, HUSPR_ATTR_DISPOFF); + } + if (lbl_1_bss_2E6) { + HuSprGrpKill(lbl_1_bss_2E6); + } + group = HuSprGrpCreate(5); + lbl_1_bss_2E6 = group; + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x2D), MEMORY_DEFAULT_NUM)); + for (i = 0; i < 5; i++) { + sprite = HuSprCreate(anim, 5, 0); + HuSprGrpMemberSet(group, i, sprite); + HuSprPosSet(group, i, (i * 16) - 32, 0); + } + HuSprBankSet(group, 2, 10); + HuSprGrpPosSet(group, 284, 410); + fn_1_ADA0(0); + if (lbl_1_bss_2A6 == 2 && lbl_1_bss_2E2 == 0) { + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x2B), MEMORY_DEFAULT_NUM)); + lbl_1_bss_2E2 = HuSprGrpCreate(18); + for (i = 0; i < 14; i++) { + sprite = HuSprCreate(anim, 8, 0); + HuSprGrpMemberSet(lbl_1_bss_2E2, i, sprite); + HuSprColorSet(lbl_1_bss_2E2, i, 255, 0, 0); + HuSprAttrSet(lbl_1_bss_2E2, i, HUSPR_ATTR_ADDCOL | HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(lbl_1_bss_2E2, i, 0.8f); + } + for (i = 0; i < 4; i++) { + anim = HuSprAnimRead(HuDataReadNum(lbl_1_data_C0[i], MEMORY_DEFAULT_NUM)); + sprite = HuSprCreate(anim, 8, 0); + HuSprGrpMemberSet(lbl_1_bss_2E2, i + 14, sprite); + HuSprAttrSet(lbl_1_bss_2E2, i + 14, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(lbl_1_bss_2E2, 0, 0); + } + lbl_1_data_A0 = -1; + (void)sprite; +} + +void fn_1_ACAC(s16 arg0, s16 arg1) +{ + s16 digit; + digit = arg0 / 10; + HuSprBankSet(lbl_1_bss_2E6, 0, digit); + arg0 -= digit * 10; + HuSprBankSet(lbl_1_bss_2E6, 1, arg0); + digit = arg1 / 10; + HuSprBankSet(lbl_1_bss_2E6, 3, digit); + arg1 -= digit * 10; + HuSprBankSet(lbl_1_bss_2E6, 4, arg1); +} + +void fn_1_ADA0(s32 arg0) +{ + s16 i; + for (i = 0; i < 5; i++) { + if (arg0) { + HuSprAttrReset(lbl_1_bss_2E6, i, HUSPR_ATTR_DISPOFF); + } + else { + HuSprAttrSet(lbl_1_bss_2E6, i, HUSPR_ATTR_DISPOFF); + } + } +} + +void fn_1_AED0(void); + +void fn_1_AE20(s16 arg0, s16 arg1, s16 arg2, s16 arg3) +{ + lbl_1_bss_2F0 = arg0; + lbl_1_bss_2E8 = arg1; + lbl_1_bss_2EE = arg2; + lbl_1_bss_2EC = arg3; + HuPrcChildCreate(fn_1_AED0, 100, 12288, 0, HuPrcCurrentGet()); +} + +void fn_1_AED0(void) +{ + s16 temp_r31; + s16 temp_r30; + AnimData *temp_r29; + s16 temp_r28; + s16 temp_r27; + s32 temp_r26; + temp_r27 = lbl_1_data_A0; + if (lbl_1_bss_2F0 < 0) { + for (temp_r30 = 1; temp_r30 <= lbl_1_bss_2E8; temp_r30++) { + HuSprGrpTPLvlSet(temp_r27, 1.0 - (temp_r30 / lbl_1_bss_2E8)); + HuPrcVSleep(); + } + if (temp_r27 != -1) { + HuSprGrpKill(temp_r27); + } + lbl_1_data_A0 = -1; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } + } + lbl_1_data_A0 = HuSprGrpCreate(4); + temp_r26 = mgInfoTbl[lbl_1_bss_2F0].mg_pic[0]; + if (GWMGAvailGet(lbl_1_bss_2F0 + 401)) { + temp_r29 = HuSprAnimRead(HuDataReadNumHeapShortForce(temp_r26, MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + else { + temp_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x2C)); + } + temp_r28 = HuSprCreate(temp_r29, 200, 0); + HuSprGrpMemberSet(lbl_1_data_A0, 0, temp_r28); + HuSprGrpPosSet(lbl_1_data_A0, lbl_1_bss_2EE, lbl_1_bss_2EC); + HuSprGrpScaleSet(lbl_1_data_A0, 0.6f, 0.6f); + temp_r31 = 0; + if (mgInfoTbl[lbl_1_bss_2F0].flag & 0x1) { + temp_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x24)); + temp_r28 = HuSprCreate(temp_r29, 190, 0); + HuSprGrpMemberSet(lbl_1_data_A0, temp_r31 + 1, temp_r28); + HuSprPosSet(lbl_1_data_A0, temp_r31 + 1, (355.0 / 3.0) - ((temp_r31 * 50) * (100.0 / 60.0)), (355.0f / 3.0f)); + HuSprScaleSet(lbl_1_data_A0, temp_r31 + 1, 100.0f / 60.0f, 100.0f / 60.0f); + temp_r31++; + } + if (mgInfoTbl[lbl_1_bss_2F0].flag & 0x2) { + temp_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x23)); + temp_r28 = HuSprCreate(temp_r29, 190, 0); + HuSprGrpMemberSet(lbl_1_data_A0, temp_r31 + 1, temp_r28); + HuSprPosSet(lbl_1_data_A0, temp_r31 + 1, (355.0 / 3.0) - ((temp_r31 * 50) * (100.0 / 60.0)), (355.0f / 3.0f)); + HuSprScaleSet(lbl_1_data_A0, temp_r31 + 1, 100.0f / 60.0f, 100.0f / 60.0f); + temp_r31++; + } + if (GWMGCustomGet(lbl_1_bss_2F0 + 401)) { + temp_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x22)); + temp_r28 = HuSprCreate(temp_r29, 190, 0); + HuSprGrpMemberSet(lbl_1_data_A0, temp_r31 + 1, temp_r28); + HuSprPosSet(lbl_1_data_A0, temp_r31 + 1, (355.0 / 3.0) - ((temp_r31 * 50) * (100.0 / 60.0)), (355.0f / 3.0f)); + HuSprScaleSet(lbl_1_data_A0, temp_r31 + 1, 100.0f / 60.0f, 100.0f / 60.0f); + temp_r31++; + } + for (temp_r30 = 1; temp_r30 <= lbl_1_bss_2E8; temp_r30++) { + if (temp_r27 != -1) { + HuSprGrpTPLvlSet(temp_r27, 1.0 - (temp_r30 / lbl_1_bss_2E8)); + } + HuSprGrpTPLvlSet(lbl_1_data_A0, temp_r30 / lbl_1_bss_2E8); + HuPrcVSleep(); + } + if (temp_r27 != -1) { + HuSprGrpKill(temp_r27); + } + lbl_1_bss_348 = lbl_1_bss_2F0; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } +} + +s16 fn_1_B5A8(s16 *arg0, s16 *arg1) +{ + s16 mgNo = GWSystem.mg_next; + s16 mgType = mgInfoTbl[mgNo].type; + s16 ret; + s16 i; + for (i = ret = 0; i < lbl_1_bss_316; i++) { + if (mgType == lbl_1_bss_318[i][0]) { + ret = i; + break; + } + } + for (i = 0; i < lbl_1_bss_2638[mgType]; i++) { + if (mgNo == lbl_1_bss_264C[mgType][i]) { + break; + } + } + *arg1 = i; + i = i - 3; + if (i < 0) { + i = 0; + } + if (lbl_1_bss_2638[mgType] >= 7 && i + 7 >= lbl_1_bss_2638[mgType]) { + i = lbl_1_bss_2638[mgType] - 7; + } + *arg0 = i; + if (lbl_1_bss_2638[mgType] < 7) { + *arg0 = 0; + } + *arg1 = *arg1 - *arg0; + return ret; +} + +void fn_1_B770(void) +{ + if (lbl_1_bss_2A6 == 2) { + lbl_1_bss_316 = 5; + lbl_1_bss_318[0][0] = 0; + lbl_1_bss_318[0][1] = 5; + lbl_1_bss_318[1][0] = 1; + lbl_1_bss_318[1][1] = 6; + lbl_1_bss_318[2][0] = 2; + lbl_1_bss_318[2][1] = 7; + lbl_1_bss_318[3][0] = 4; + lbl_1_bss_318[3][1] = 8; + lbl_1_bss_318[4][0] = 9; + lbl_1_bss_318[4][1] = 11; + fn_1_B9B8(); + } + else if (lbl_1_bss_2A4 == 0 || lbl_1_bss_2A6 == 1) { + lbl_1_bss_316 = 7; + lbl_1_bss_318[0][0] = 0; + lbl_1_bss_318[0][1] = 5; + lbl_1_bss_318[1][0] = 1; + lbl_1_bss_318[1][1] = 6; + lbl_1_bss_318[2][0] = 2; + lbl_1_bss_318[2][1] = 7; + lbl_1_bss_318[3][0] = 4; + lbl_1_bss_318[3][1] = 8; + lbl_1_bss_318[4][0] = 3; + lbl_1_bss_318[4][1] = 9; + lbl_1_bss_318[5][0] = 6; + lbl_1_bss_318[5][1] = 10; + lbl_1_bss_318[6][0] = 8; + lbl_1_bss_318[6][1] = 12; + } + else if (lbl_1_bss_2A4 == 1) { + lbl_1_bss_316 = 1; + lbl_1_bss_318[0][0] = 2; + lbl_1_bss_318[0][1] = 7; + } +} + +void fn_1_B9B8(void) +{ + s16 customNum; + s16 i; + for (i = customNum = 0; i < 4; i++) { + s16 j; + lbl_1_bss_264C[9][customNum++] = -i - 1; + for (j = 0; j < lbl_1_bss_2638[lbl_1_bss_318[i][0]]; j++) { + if (GWMGCustomGet(lbl_1_bss_264C[lbl_1_bss_318[i][0]][j] + 401)) { + lbl_1_bss_264C[9][customNum++] = lbl_1_bss_264C[lbl_1_bss_318[i][0]][j]; + } + } + } + lbl_1_bss_2638[9] = customNum; +} + +s32 fn_1_BB24(void) +{ + char messInsert[4][6]; + s16 customNum[4]; + float winSize[2]; + static char messInsertBase[6] = { "\x1E\x03" + "0" + "\x1E\x08" }; + static s16 customMinNum[4] = { 4, 3, 3, 2 }; + s16 window; + s16 j; + s16 i; + WindowData *windowP; + s16 choice; + for (i = 0; i < 4; i++) { + customNum[i] = 0; + for (j = 0; j < lbl_1_bss_20AC[lbl_1_data_A2[i]]; j++) { + if (GWMGCustomGet(lbl_1_bss_20C0[lbl_1_data_A2[i]][j] + 401)) { + customNum[i]++; + } + } + } + if (customNum[0] >= 4 && customNum[1] >= 3 && customNum[2] >= 3 && customNum[3] >= 2) { + HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(0x28, 0x30)); + window = HuWinExCreateStyled(-10000, -10000, winSize[0], winSize[1], -1, 1); + windowP = &winData[window]; + windowP->active_pad = 1; + HuWinMesPalSet(window, 7, 0, 0, 0); + HuWinPriSet(window, 3); + HuWinExAnimIn(window); + HuWinMesSet(window, MAKE_MESSID(0x28, 0x30)); + HuWinMesWait(window); + HuWinExAnimOut(window); + HuWinExCleanup(window); + return 1; + } + else { + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(messInsertBase), 0); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(messInsertBase), 1); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(messInsertBase), 2); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(messInsertBase), 3); + HuWinMesMaxSizeGet(3, winSize, MAKE_MESSID(0x28, 0x2B), MAKE_MESSID(0x28, 0x2C), MAKE_MESSID(0x28, 0x2D)); + window = HuWinExCreateStyled(-10000, -10000, winSize[0], winSize[1], -1, 1); + windowP = &winData[window]; + windowP->active_pad = 1; + HuWinMesPalSet(window, 7, 0, 0, 0); + HuWinPriSet(window, 3); + HuWinExAnimIn(window); + for (j = 0; j < 4; j++) { + strcpy(&messInsert[j][0], messInsertBase); + } + for (j = 0; j < 4; j++) { + if (customNum[j] >= customMinNum[j]) { + messInsert[j][1] = 5; + } + else { + messInsert[j][2] = (customMinNum[j] + '0' - customNum[j]); + } + HuWinInsertMesSet(window, MAKE_MESSID_PTR(&messInsert[j][0]), (s16)j); + } + HuWinMesSet(window, MAKE_MESSID(0x28, 0x2C)); + HuWinMesWait(window); + HuWinMesSet(window, MAKE_MESSID(0x28, 0x2B)); + HuWinMesWait(window); + HuWinMesSet(window, MAKE_MESSID(0x28, 0x2D)); + HuWinMesWait(window); + choice = HuWinChoiceGet(window, 0); + HuWinExAnimOut(window); + HuWinExCleanup(window); + if (choice == 0) { + return 0; + } + else { + return 1; + } + } +} + +void fn_1_BFA0(s16 arg0) +{ + s16 i; + for (i = 0; i < 4; i++) { + HuSprGrpTPLvlSet(lbl_1_bss_34A[i], 1.0f); + } + if (mgInfoTbl[arg0].ovl == OVL_M450) { + HuSprGrpTPLvlSet(lbl_1_bss_34A[1], 0.0f); + } + if (mgInfoTbl[arg0].type == 6 || mgInfoTbl[arg0].type == 8) { + HuSprGrpTPLvlSet(lbl_1_bss_34A[2], 0.0f); + HuSprGrpTPLvlSet(lbl_1_bss_34A[3], 0.0f); + return; + } +} + +float lbl_1_data_E0[2][4] = { -132, -12, 60, 132, -132, -60, 60, 132 }; + +u8 lbl_1_data_100[16] = { 0, 1, 2, 3, 1, 0, 2, 3, 2, 0, 1, 3, 3, 0, 1, 2 }; + +u8 lbl_1_data_110[12] = { + 0, + 1, + 2, + 3, + 0, + 2, + 1, + 3, + 0, + 3, + 1, + 2, +}; + +s32 fn_1_C0C8(s32 arg0) +{ + s16 temp_r31; + s16 temp_r30; + float *temp_r29; + s16 temp_r28; + AnimData *temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + WindowData *temp_r22; + AnimData *temp_r21; + + float temp_f31; + float temp_f30; + float temp_f29; + if (mgTypeCurr == 1) { + temp_r29 = &lbl_1_data_E0[0][0]; + temp_f29 = 216; + } + else { + temp_r29 = &lbl_1_data_E0[1][0]; + temp_f29 = 288; + } + temp_r28 = HuSprGrpCreate(16); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r27 = HuSprAnimReadFile(lbl_1_bss_8.unk24[temp_r31].unk68 + DATA_MAKE_NUM(DATADIR_MGMODE, 0x67)); + temp_r26 = HuSprCreate(temp_r27, 4, 0); + HuSprGrpMemberSet(temp_r28, 4 * temp_r31, temp_r26); + HuSprPosSet(temp_r28, 4 * temp_r31, temp_r29[temp_r31], 0); + if (mgTypeCurr == 1) { + if (temp_r31 == 0) { + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x75)); + } + else { + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x76)); + } + } + else { + if (temp_r31 < 2) { + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x75)); + } + else { + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x76)); + } + } + temp_r26 = HuSprCreate(temp_r27, 3, 0); + HuSprGrpMemberSet(temp_r28, (4 * temp_r31) + 1, temp_r26); + HuSprPosSet(temp_r28, (4 * temp_r31) + 1, temp_r29[temp_r31], 0); + if (GWPlayerCfg[temp_r31].iscom) { + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x74)); + } + else { + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x70) + GWPlayerCfg[temp_r31].pad_idx); + } + temp_r26 = HuSprCreate(temp_r27, 2, 1); + HuSprGrpMemberSet(temp_r28, (4 * temp_r31) + 2, temp_r26); + HuSprPosSet(temp_r28, (4 * temp_r31) + 2, temp_r29[temp_r31], 0); + temp_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x7B)); + temp_r26 = HuSprCreate(temp_r27, 2, GWPlayerCfg[temp_r31].diff); + HuSprGrpMemberSet(temp_r28, (4 * temp_r31) + 3, temp_r26); + HuSprPosSet(temp_r28, (4 * temp_r31) + 3, temp_r29[temp_r31], 38); + if (!GWPlayerCfg[temp_r31].iscom) { + HuSprAttrSet(temp_r28, (4 * temp_r31) + 3, HUSPR_ATTR_DISPOFF); + } + } + temp_r25 = HuSprGrpCreate(8); + temp_r27 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x65), MEMORY_DEFAULT_NUM)); + temp_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 0x66), MEMORY_DEFAULT_NUM)); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r26 = HuSprCreate(temp_r27, 3, temp_r31); + HuSprGrpMemberSet(temp_r25, (temp_r31 * 2), temp_r26); + HuSprPosSet(temp_r25, (temp_r31 * 2), ((temp_r31 % 2) * 380) - 190, ((temp_r31 / 2) * 156) - 68); + temp_r26 = HuSprCreate(temp_r21, 4, temp_r31); + HuSprGrpMemberSet(temp_r25, (temp_r31 * 2) + 1, temp_r26); + HuSprTPLvlSet(temp_r25, (temp_r31 * 2) + 1, 0.5f); + HuSprPosSet(temp_r25, (temp_r31 * 2) + 1, ((temp_r31 % 2) * 380) - 190, ((temp_r31 / 2) * 156) - 60); + } + espTPLvlSet(lbl_1_bss_2C2C[22], 0.9f); + espAttrReset(lbl_1_bss_2C2C[22], HUSPR_ATTR_DISPOFF); + espAttrReset(lbl_1_bss_2C2C[24], HUSPR_ATTR_DISPOFF); + espAttrReset(lbl_1_bss_2C2C[23], HUSPR_ATTR_DISPOFF); + espAttrReset(lbl_1_bss_2C2C[25], HUSPR_ATTR_DISPOFF); + espAttrReset(lbl_1_bss_2C2C[26], HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_bss_2C2C[25], 1); + espPosSet(lbl_1_bss_2C2C[22], 288, 240); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 20) { + temp_f30 = temp_r31 / 20.0; + temp_f31 = -300 + (560 * sind(temp_f30 * 90.0f)); + espPosSet(lbl_1_bss_2C2C[22], 288, temp_f31); + espPosSet(lbl_1_bss_2C2C[24], 288, temp_f31 - 50); + espPosSet(lbl_1_bss_2C2C[23], temp_f29, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[26], 108, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[25], 468, temp_f31 + 20); + HuSprGrpPosSet(temp_r28, 288, temp_f31 + 20); + HuSprGrpPosSet(temp_r25, 288, temp_f31); + } + else { + temp_f30 = (temp_r31 - 20) / 10.0; + temp_f31 = 240 + (20 * cosd(temp_f30 * 90.0f)); + espPosSet(lbl_1_bss_2C2C[22], 288, temp_f31); + espPosSet(lbl_1_bss_2C2C[24], 288, temp_f31 - 50); + espPosSet(lbl_1_bss_2C2C[23], temp_f29, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[26], 108, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[25], 468, temp_f31 + 20); + HuSprGrpPosSet(temp_r28, 288, temp_f31 + 20); + HuSprGrpPosSet(temp_r25, 288, temp_f31); + } + HuPrcVSleep(); + } + temp_r24 = fn_1_25CA8(0x1A0020); + temp_r22 = &winData[temp_r24]; + HuWinPriSet(temp_r24, 5); + HuWinPosSet(temp_r24, (576.0f - temp_r22->w) / 2.0f, 310.0f); + temp_r30 = 0; + temp_r23 = 0; + while (1) { + s16 spC; + HuPrcVSleep(); + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + goto loop_end; + } + spC = 0; + if (HuPadDStkRep[0] & PAD_BUTTON_LEFT) { + HuAudFXPlay(772); + for (temp_r31 = 0; temp_r31 <= 5; temp_r31++) { + temp_f30 = temp_r31 / 5.0; + espPosSet(lbl_1_bss_2C2C[26], 108 - (10 * sind(temp_f30 * 90.0f)), 20 + temp_f31); + HuPrcVSleep(); + } + temp_r30--; + if (mgTypeCurr == 1) { + if (temp_r30 < 0) { + temp_r30 = 3; + } + if (temp_r30 >= 4) { + temp_r30 = 0; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + HuSprPosSet(temp_r28, lbl_1_data_100[(temp_r30 * 4) + temp_r31] * 4, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_100[(temp_r30 * 4) + temp_r31] * 4) + 2, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_100[(temp_r30 * 4) + temp_r31] * 4) + 3, temp_r29[temp_r31], 38); + } + } + else { + if (temp_r30 < 0) { + temp_r30 = 2; + } + if (temp_r30 >= 3) { + temp_r30 = 0; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + HuSprPosSet(temp_r28, lbl_1_data_110[(temp_r30 * 4) + temp_r31] * 4, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_110[(temp_r30 * 4) + temp_r31] * 4) + 2, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_110[(temp_r30 * 4) + temp_r31] * 4) + 3, temp_r29[temp_r31], 38); + } + } + for (temp_r31 = 0; temp_r31 <= 5; temp_r31++) { + temp_f30 = temp_r31 / 5.0; + espPosSet(lbl_1_bss_2C2C[26], 108 - (10 * cosd(temp_f30 * 90.0f)), 20 + temp_f31); + HuPrcVSleep(); + } + } + else if (HuPadDStkRep[0] & PAD_BUTTON_RIGHT) { + HuAudFXPlay(772); + for (temp_r31 = 0; temp_r31 <= 5; temp_r31++) { + temp_f30 = temp_r31 / 5.0; + espPosSet(lbl_1_bss_2C2C[25], 468 + (10 * sind(temp_f30 * 90.0f)), 20 + temp_f31); + HuPrcVSleep(); + } + temp_r30++; + if (mgTypeCurr == 1) { + if (temp_r30 < 0) { + temp_r30 = 3; + } + if (temp_r30 >= 4) { + temp_r30 = 0; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + HuSprPosSet(temp_r28, lbl_1_data_100[(temp_r30 * 4) + temp_r31] * 4, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_100[(temp_r30 * 4) + temp_r31] * 4) + 2, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_100[(temp_r30 * 4) + temp_r31] * 4) + 3, temp_r29[temp_r31], 38); + } + } + else { + if (temp_r30 < 0) { + temp_r30 = 2; + } + if (temp_r30 >= 3) { + temp_r30 = 0; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + HuSprPosSet(temp_r28, lbl_1_data_110[(temp_r30 * 4) + temp_r31] * 4, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_110[(temp_r30 * 4) + temp_r31] * 4) + 2, temp_r29[temp_r31], 0); + HuSprPosSet(temp_r28, (lbl_1_data_110[(temp_r30 * 4) + temp_r31] * 4) + 3, temp_r29[temp_r31], 38); + } + } + for (temp_r31 = 0; temp_r31 <= 5; temp_r31++) { + temp_f30 = temp_r31 / 5.0; + espPosSet(lbl_1_bss_2C2C[25], 468 + (10 * cosd(temp_f30 * 90.0f)), 20 + temp_f31); + HuPrcVSleep(); + } + } + if (HuPadBtnDown[0] & (PAD_BUTTON_A | PAD_BUTTON_START)) { + break; + } + } + HuAudFXPlay(773); + if (mgTypeCurr == 1) { + GWPlayerCfg[lbl_1_data_100[temp_r30 * 4]].group = 0; + for (temp_r31 = 1; temp_r31 < 4; temp_r31++) { + GWPlayerCfg[lbl_1_data_100[(temp_r30 * 4) + temp_r31]].group = 1; + } + } + else { + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + GWPlayerCfg[lbl_1_data_110[(temp_r30 * 4) + temp_r31]].group = 0; + } + for (temp_r31 = 2; temp_r31 < 4; temp_r31++) { + GWPlayerCfg[lbl_1_data_110[(temp_r30 * 4) + temp_r31]].group = 1; + } + } + if (arg0 != 0) { + temp_r23 = 1; + } + else { + return 1; + } +loop_end: + fn_1_25E74(temp_r24); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + if (temp_r31 <= 10) { + temp_f30 = temp_r31 / 10.0; + temp_f31 = 240 + (20 * sind(temp_f30 * 90.0f)); + espPosSet(lbl_1_bss_2C2C[22], 288, temp_f31); + espPosSet(lbl_1_bss_2C2C[24], 288, temp_f31 - 50); + espPosSet(lbl_1_bss_2C2C[23], temp_f29, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[26], 108, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[25], 468, temp_f31 + 20); + HuSprGrpPosSet(temp_r28, 288, temp_f31 + 20); + HuSprGrpPosSet(temp_r25, 288, temp_f31); + } + else { + temp_f30 = (temp_r31 - 10) / 20.0; + temp_f31 = -300 + (560 * cosd(temp_f30 * 90.0f)); + espPosSet(lbl_1_bss_2C2C[22], 288, temp_f31); + espPosSet(lbl_1_bss_2C2C[24], 288, temp_f31 - 50); + espPosSet(lbl_1_bss_2C2C[23], temp_f29, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[26], 108, temp_f31 + 20); + espPosSet(lbl_1_bss_2C2C[25], 468, temp_f31 + 20); + HuSprGrpPosSet(temp_r28, 288, temp_f31 + 20); + HuSprGrpPosSet(temp_r25, 288, temp_f31); + } + HuPrcVSleep(); + } + HuSprGrpKill(temp_r28); + HuSprGrpKill(temp_r25); + return temp_r23; +} diff --git a/src/REL/mgmodedll/main.c b/src/REL/mgmodedll/main.c new file mode 100755 index 00000000..85db3742 --- /dev/null +++ b/src/REL/mgmodedll/main.c @@ -0,0 +1,2799 @@ +#include "REL/mgmodedll.h" +#include "game/audio.h" +#include "game/wipe.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ void (*unk04)(omObjData *, ...); + /* 0x08 */ s32 unk08[4]; + /* 0x18 */ char unk18[4]; + /* 0x1C */ s32 unk1C[4]; + /* 0x2C */ char unk2C[4]; + /* 0x30 */ s32 unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ char unk38[0xC]; + /* 0x44 */ s32 unk44[2]; +} StructBss2050; // Size unknown + +typedef struct { + /* 0x00 */ char unk00[8]; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[0x10]; + /* 0x1C */ s32 unk1C; + /* 0x20 */ char unk20[0x10]; + /* 0x30 */ s32 unk30; +} UnkFunc1EE58Struct; // Size unknown + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; +} StructBss3CC; // Size 0x30 + +void fn_1_19A30(StructBss8 *arg0); +void fn_1_19B8C(void); +void fn_1_19D00(void); +void fn_1_19E94(void); +void fn_1_19F5C(omObjData *arg0); +void fn_1_1A564(void); +void fn_1_1A6A0(void); +void fn_1_1A8E8(void); +void fn_1_1AA28(void); +void fn_1_1AB58(void); +void fn_1_1AC88(StructBss2050 *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_1B260(s32 arg0); +void fn_1_1BCEC(void); +void fn_1_1BECC(void); +void fn_1_1C09C(StructBss2050 *arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_1CB4C(void); +void fn_1_1CEB0(omObjData *arg0, StructBss8_24 *arg1); +void fn_1_1D49C(StructBss8_24 *arg0); +s32 fn_1_1D688(StructBss8_24 *arg0); +void fn_1_1DD74(s32 arg0, StructBss8_24 *arg1); +void fn_1_1E608(StructBss8_24 *arg0); +void fn_1_1EB20(StructBss8_24 *arg0); +void fn_1_1EBE8(void); +void fn_1_1ED20(void); +void fn_1_1EE58(s32 arg0, UnkFunc1EE58Struct *arg1); +void fn_1_1F32C(omObjData *arg0); +void fn_1_1FABC(void); +void fn_1_1FC44(s32 arg0); +void fn_1_20728(void); +s32 fn_1_20970(void); +void fn_1_20E84(s32 arg0); +void fn_1_20FD4(s32 arg0); +s32 fn_1_211B4(void); +s32 fn_1_214A4(void); +s32 fn_1_21CA4(void); +s32 fn_1_2228C(s32 arg0); +void fn_1_22728(void); +void fn_1_22C08(omObjData *arg0); +void fn_1_231F0(omObjData *arg0); +float fn_1_240E4(float arg0, float arg1, float arg2, float arg3); +float fn_1_2410C(float arg0, float arg1, float arg2); +float fn_1_2412C(float arg0, float arg1, float arg2, float arg3); +float fn_1_24204(float arg0, float arg1, float arg2, float arg3); +float fn_1_242CC(float arg0, float arg1, float arg2, float arg3); +void fn_1_24388(s32 arg0); +void fn_1_243B0(void); +void fn_1_243D0(void); +void fn_1_243E4(void); +void fn_1_244C0(s32 arg0); +void fn_1_245A8(void); +void fn_1_245CC(s32 arg0, float arg1, float arg2, s32 arg3); +s32 fn_1_25014(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg4, float arg5, s32 arg6, s32 arg7, s32 arg8); +void fn_1_25524(s32 arg0, float arg1, float arg2); +void fn_1_255EC(s32 arg0, s32 arg1); +void fn_1_2567C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_257B0(s32 arg0); +void fn_1_257F8(s32 arg0, s32 arg1, s32 arg2); +void fn_1_25EC8(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_26004(s32 arg0, Vec arg1, float arg2, float arg3, float arg4, s32 arg5, s32 arg6); +void fn_1_26790(s32 arg0, s32 arg1, float arg2, float arg3); + +char lbl_1_bss_209C_pad[8]; // Could be part of StructBss2050. +StructBss2050 lbl_1_bss_2050; +StructBss8_24 lbl_1_bss_1E10[4]; +omObjData *lbl_1_bss_1E0C; +StructBss3CC lbl_1_bss_3CC[140]; +s32 lbl_1_bss_3C8; +StructBss8 *lbl_1_bss_3C4; +Process *lbl_1_bss_3C0; + +s32 lbl_1_data_1E0 = 1; // Unused. + +void fn_1_18DF8(Process *arg0, StructBss8 *arg1) +{ + s32 i; + + lbl_1_bss_3C0 = arg0; + lbl_1_bss_3C4 = arg1; + fn_1_245A8(); + fn_1_243E4(); + fn_1_244C0(1); + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = 0.0f; + CRot.x = -10.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + CZoom = 2900.0f; + Hu3DModelPosSet(lbl_1_bss_3C4->unkC, 0.0f, 0.0f, 460.0f); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0, 1); + fn_1_25EC8(lbl_1_bss_3C4->unk0, lbl_1_bss_3C4->unk8, 0, 2); + lbl_1_bss_1E0C = omAddObjEx(lbl_1_bss_3C0, 0x1000, 141, 16, -1, fn_1_231F0); + HuPrcChildCreate(fn_1_19E94, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_19D00, 100, 0x2000, 0, HuPrcCurrentGet()); + } +} + +void fn_1_19018(void) +{ + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + float temp_f31; + s32 temp_r30; + s32 i; + + fn_1_243B0(); + for (i = 1; i < 140; i++) { + Hu3DModelAttrReset(lbl_1_bss_1E0C->model[i], HU3D_ATTR_DISPOFF); + } + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + for (i = 0; i < 240; i++) { + fn_1_243B0(); + temp_f31 = fn_1_24204(2900.0f, 1150.0f, i, 180.0f); + CZoom = fn_1_2410C(CZoom, temp_f31, 15.0f); + if (i == 90) { + fn_1_25EC8(lbl_1_bss_3C4->unk0, lbl_1_bss_3C4->unk8, 0, 0); + } + } + lbl_1_bss_1E0C->work[0] = 1; + temp_f31 = CZoom; + for (i = 0; i < 90; i++) { + fn_1_243B0(); + CZoom = fn_1_2410C(CZoom, fn_1_24204(temp_f31, 1600.0f, i, 60.0f), 10.0f); + Center.y = fn_1_2410C(Center.y, fn_1_24204(0.0f, 215.0f, i, 60.0f), 10.0f); + CRot.x = fn_1_2410C(CRot.x, fn_1_24204(-10.0f, 0.0f, i, 60.0f), 10.0f); + } + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk14, 0xF, 1); + fn_1_26004(lbl_1_bss_3C4->unkC, sp14, 0.0f, 3.0f, 0.0f, 1, 0); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + HuPrcSleep(30); + HuAudSeqPlay(44); + fn_1_25EC8(lbl_1_bss_3C4->unk0, lbl_1_bss_3C4->unk4, 0, 0); + fn_1_24388(60); + temp_r30 = fn_1_2530C(0, 0, 0); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk18, 0xF, 1); + HuAudFXPlay(0x43); + fn_1_25838(temp_r30, MAKE_MESSID(40, 0), -1, -1); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + fn_1_25584(temp_r30); + fn_1_24388(60); +} + +s32 fn_1_194C8(s32 arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 i; + + var_r30 = 10; + var_r29 = 0; + var_r28 = 0; + if (arg0 == 4) { + var_r28 = 1; + var_r30 = 0; + if (lbl_1_bss_3C4->unk1C == 0 || lbl_1_bss_3C4->unk1C == 3) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 1) { + break; + } + } + if (i != 4) { + var_r29 = 2; + } + else { + var_r29 = 1; + } + } + else { + var_r29 = 3; + } + } + else { + lbl_1_bss_3C4->unk1C = arg0; + fn_1_19B8C(); + } + while (TRUE) { + fn_1_243B0(); + switch (var_r30) { + case 10: + var_r30 = 0; + fn_1_20728(); + var_r29 = fn_1_20970(); + fn_1_20E84(lbl_1_bss_3C4->unk1C); + if (var_r29 == -99) { + var_r30 = -99; + } + break; + case 0: + var_r30 = 1; + fn_1_20FD4(lbl_1_bss_3C4->unk1C); + while (TRUE) { + fn_1_243B0(); + switch (var_r29) { + case 1: + var_r29 = fn_1_211B4(); + break; + case 2: + var_r29 = fn_1_214A4(); + break; + case 3: + if (lbl_1_bss_3C4->unk1C == 0 || lbl_1_bss_3C4->unk1C == 3) { + var_r29 = 5; + } + else if (lbl_1_bss_3C4->unk1C == 2) { + var_r29 = fn_1_21CA4(); + } + else { + var_r29 = fn_1_2228C(var_r28); + var_r28 = 0; + } + break; + } + if (var_r29 == 0) { + var_r30 = 10; + break; + } + else if (var_r29 == 5) { + var_r30 = 99; + break; + } + } + fn_1_22728(); + break; + } + if (var_r30 == 99 || var_r30 == -99) { + break; + } + } + if (var_r30 == -99) { + var_r30 = 0; + } + else { + for (i = 0; i < 4; i++) { + lbl_1_bss_3C4->unk24[i].unk5C = lbl_1_bss_1E10[i].unk5C; + lbl_1_bss_3C4->unk24[i].unk60 = lbl_1_bss_1E10[i].unk60; + lbl_1_bss_3C4->unk24[i].unk64 = lbl_1_bss_1E10[i].unk64; + lbl_1_bss_3C4->unk24[i].unk68 = lbl_1_bss_1E10[i].unk68; + lbl_1_bss_3C4->unk24[i].unk6C = lbl_1_bss_1E10[i].unk6C; + } + if (lbl_1_bss_3C4->unk1C == 1) { + switch (lbl_1_bss_2050.unk1C[0]) { + case 1: + lbl_1_bss_3C4->unk24[0].unk5C = lbl_1_bss_3C4->unk24[1].unk5C = 0; + lbl_1_bss_3C4->unk24[2].unk5C = lbl_1_bss_3C4->unk24[3].unk5C = 1; + break; + case 2: + lbl_1_bss_3C4->unk24[0].unk5C = lbl_1_bss_3C4->unk24[2].unk5C = 0; + lbl_1_bss_3C4->unk24[1].unk5C = lbl_1_bss_3C4->unk24[3].unk5C = 1; + break; + case 3: + lbl_1_bss_3C4->unk24[0].unk5C = lbl_1_bss_3C4->unk24[3].unk5C = 0; + lbl_1_bss_3C4->unk24[1].unk5C = lbl_1_bss_3C4->unk24[2].unk5C = 1; + break; + default: + OSReport("########## ERROR : TAGMODE TEAMSET\n"); + lbl_1_bss_3C4->unk24[0].unk5C = lbl_1_bss_3C4->unk24[1].unk5C = 0; + lbl_1_bss_3C4->unk24[2].unk5C = lbl_1_bss_3C4->unk24[3].unk5C = 1; + break; + } + } + else if (lbl_1_bss_3C4->unk1C == 2) { + switch (lbl_1_bss_2050.unk1C[0]) { + case 0: + lbl_1_bss_3C4->unk20 = 3; + break; + case 1: + lbl_1_bss_3C4->unk20 = 5; + break; + case 2: + lbl_1_bss_3C4->unk20 = 7; + break; + default: + OSReport("########## ERROR : KNUKIMODE TURNSET\n"); + lbl_1_bss_3C4->unk20 = 3; + break; + } + } + var_r30 = 1; + } + return var_r30; +} + +void fn_1_19A30(StructBss8 *arg0) +{ + s32 i; + + OSReport("\n\n>>>>>>>>>>>>>>>>>>>> ENTRANCE HELP\n\n"); + switch (arg0->unk1C) { + case 0: + OSReport("MG_MODE : FREE PLAY MODE!!\n"); + break; + case 1: + OSReport("MG_MODE : TAG PLAY MODE!!\n"); + break; + case 2: + OSReport("MG_MODE : NUKE PLAY MODE!!\n"); + break; + case 3: + OSReport("MG_MODE : BINGO PLAY MODE!!\n"); + break; + } + if (arg0->unk1C == 2) { + OSReport("\nTURN : %d\n", arg0->unk20); + } + OSReport("\nNO) GRP:COM:DIF:CHR:PAD\n"); + for (i = 0; i < 4; i++) { + OSReport("%2d) %3d:%3d:%3d:%3d:%3d\n", i, arg0->unk24[i].unk5C, arg0->unk24[i].unk60, arg0->unk24[i].unk64, arg0->unk24[i].unk68, + arg0->unk24[i].unk6C); + } + OSReport("\n>>>>>>>>>>>>>>>>>>>> ENTRANCE HELP\n\n"); +} + +void fn_1_19B8C(void) +{ + s32 i; + s32 j; + + for (i = 0; i < 4; i++) { + lbl_1_bss_2050.unk1C[i] = lbl_1_bss_2050.unk08[i] = 0; + } + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + lbl_1_bss_1E10[i].unk80[j] = lbl_1_bss_1E10[i].unk70[j] = 0; + } + lbl_1_bss_1E10[i].unk58 = i; + lbl_1_bss_1E10[i].unk5C = 0; + lbl_1_bss_1E10[i].unk60 = i; + if (lbl_1_bss_1E10[i].unk60 > 0) { + lbl_1_bss_1E10[i].unk60 = 1; + } + lbl_1_bss_1E10[i].unk64 = 0; + lbl_1_bss_1E10[i].unk68 = i; + lbl_1_bss_1E10[i].unk6C = i; + } +} + +void fn_1_19D00(void) +{ + omObjData *temp_r30; + s32 temp_r31; + + temp_r31 = lbl_1_bss_3C8++; + temp_r30 = omAddObjEx(lbl_1_bss_3C0, 0x100, 16, 16, -1, NULL); + lbl_1_bss_1E10[temp_r31].unk0 = temp_r30; + lbl_1_bss_1E10[temp_r31].unk4 = NULL; + lbl_1_bss_1E10[temp_r31].unk58 = temp_r31; + lbl_1_bss_1E10[temp_r31].unk5C = 0; + lbl_1_bss_1E10[temp_r31].unk60 = temp_r31; + if (lbl_1_bss_1E10[temp_r31].unk60 > 0) { + lbl_1_bss_1E10[temp_r31].unk60 = 1; + } + lbl_1_bss_1E10[temp_r31].unk64 = 0; + lbl_1_bss_1E10[temp_r31].unk68 = temp_r31; + lbl_1_bss_1E10[temp_r31].unk6C = temp_r31; + while (TRUE) { + fn_1_243B0(); + if (lbl_1_bss_1E10[temp_r31].unk4 != NULL) { + lbl_1_bss_1E10[temp_r31].unk4(temp_r30, &lbl_1_bss_1E10[temp_r31]); + } + } +} + +void fn_1_19E94(void) +{ + omObjData *temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_3C0, 0x100, 16, 16, -1, NULL); + lbl_1_bss_2050.unk00 = temp_r3; + lbl_1_bss_2050.unk04 = NULL; + fn_1_1C09C(&lbl_1_bss_2050, 0, 0, 0); + fn_1_1AC88(&lbl_1_bss_2050, 0, 0, 0); + while (TRUE) { + fn_1_243B0(); + if (lbl_1_bss_2050.unk04 != NULL) { + lbl_1_bss_2050.unk04(temp_r3, &lbl_1_bss_2050); + } + } +} + +s32 lbl_1_data_32C[][4] = { { 177, 104, 120, 55 }, { 251, 104, 458, 55 }, { 325, 104, 120, 142 }, { 399, 104, 458, 142 } }; + +s32 lbl_1_data_36C[][6] + = { { 168, 90, 120, 51, 112, 55 }, { 248, 190, 458, 51, 466, 55 }, { 328, 90, 120, 222, 112, 282 }, { 408, 190, 458, 222, 466, 282 } }; + +s32 lbl_1_data_3CC[] = { 224, 456, 272, 292, 468, 282 }; + +float lbl_1_data_3E4[][5] = { { 262.0f, 119.0f, 1.3f, 227.0f, 455.0f }, { 314.0f, 168.0f, 0.75f, 265.0f, 416.0f }, + { 366.0f, 204.0f, 0.75f, 230.0f, 450.0f }, { 418.0f, 240.0f, 0.75f, 300.0f, 381.0f }, { -1.0f, 289.0f, 1.3f, 220.0f, 460.0f } }; + +s32 lbl_1_data_448[][4] = { { 262, 262, 262, 262 }, { 314, 307, 373, 373 }, { 366, 373, 307, 418 }, { 418, 418, 418, 307 } }; + +s32 lbl_1_data_488 = -1; + +void fn_1_19F5C(omObjData *arg0) +{ + float var_f30; + float var_f31; + s32 temp_r28; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 i; + s32 j; + + temp_r28 = lbl_1_bss_2050.unk34; + var_r29 = var_r27 = var_r26 = var_r25 = 0; + lbl_1_bss_2050.unk1C[0] = 0; + var_r29 = 1; + for (i = 1; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0) { + var_r29++; + } + } + var_r27 = 1; + for (i = 1; i < 4; i++) { + if (HuPadStatGet(i) != -1) { + var_r27++; + } + } + if (var_r27 >= 2) { + fn_1_1AA28(); + if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) { + var_r29++; + var_r26 = 1; + } + else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) { + var_r29--; + var_r26 = -1; + } + } + else { + fn_1_1AB58(); + } + if (var_r29 < 1) { + var_r29 = var_r27; + } + else if (var_r29 > var_r27) { + if (var_r26 == 0) { + var_r29 = var_r27; + var_r25 = 1; + } + else { + var_r29 = 1; + } + } + if (var_r26 != 0 || var_r25 != 0) { + lbl_1_bss_2050.unk1C[0] = 1; + HuAudFXPlay(0); + for (i = 0; i <= 10; i++) { + if (i <= 5) { + var_f30 = fn_1_24204(0.0f, 10.0f, i, 5.0f); + var_f31 = fn_1_24204(1.0f, 0.0f, i, 5.0f); + } + else { + var_f30 = fn_1_24204(10.0f, 0.0f, i - 5, 5.0f); + var_f31 = fn_1_24204(0.0f, 1.0f, i - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(temp_r28, 9, lbl_1_data_32C[3][0] + 50 + var_f30, lbl_1_data_32C[0][1]); + } + else if (var_r26 == -1) { + HuSprPosSet(temp_r28, 8, lbl_1_data_32C[0][0] - 50 - var_f30, lbl_1_data_32C[0][1]); + } + for (j = 0; j < 4; j++) { + if (j < var_r29 && lbl_1_bss_1E10[j].unk60 == 1) { + lbl_1_bss_1E10[j].unk70[3] = 0; + HuSprScaleSet(temp_r28, j, var_f31, 1.0f); + HuSprScaleSet(temp_r28, j + 4, var_f31, 1.0f); + if (i == 5) { + HuSprBankSet(temp_r28, j, 0); + } + } + else if (j >= var_r29 && lbl_1_bss_1E10[j].unk60 == 0) { + lbl_1_bss_1E10[j].unk70[3] = 1; + HuSprScaleSet(temp_r28, j, var_f31, 1.0f); + HuSprScaleSet(temp_r28, j + 4, var_f31, 1.0f); + if (i == 5) { + HuSprBankSet(temp_r28, j, 1); + } + } + } + fn_1_243B0(); + } + for (j = 0; j < 4; j++) { + if (j < var_r29) { + lbl_1_bss_1E10[j].unk60 = 0; + } + else { + lbl_1_bss_1E10[j].unk60 = 1; + } + } + } + lbl_1_bss_2050.unk1C[0] = 0; +} + +void fn_1_1A564(void) +{ + s32 temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_2050.unk34; + for (i = 0; i < 19; i++) { + HuSprAttrSet(temp_r30, i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 4; i++) { + HuSprBankSet(temp_r30, i, 0); + lbl_1_bss_1E10[i].unk70[3] = lbl_1_bss_1E10[i].unk60 = 0; + HuSprAttrReset(temp_r30, i, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 4 + i, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(temp_r30, 10, HUSPR_ATTR_DISPOFF); + for (i = 0; i < 4; i++) { + HuSprAttrReset(temp_r30, 11 + i, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 15 + i, HUSPR_ATTR_DISPOFF); + } + HuSprGrpPosSet(temp_r30, 0.0f, -500.0f); +} + +void fn_1_1A6A0(void) +{ + float var_f31; + s32 temp_r28; + s32 i; + + temp_r28 = lbl_1_bss_2050.unk34; + fn_1_1A564(); + for (i = 0; i <= 60; i++) { + fn_1_243B0(); + if (i <= 50) { + var_f31 = fn_1_24204(-500.0f, 10.0f, i, 50.0f); + } + else { + var_f31 = fn_1_2412C(10.0f, 2.06f, i - 50, 10.0f); + } + HuSprGrpPosSet(temp_r28, 0.0f, var_f31); + } +} + +void fn_1_1A8E8(void) +{ + float var_f31; + s32 spC; + s32 sp8; + s32 temp_r30; + s32 i; + + spC = 0; + sp8 = 0; + temp_r30 = lbl_1_bss_2050.unk34; + for (i = 0; i <= 60; i++) { + fn_1_243B0(); + if (i <= 10) { + var_f31 = fn_1_24204(2.06f, 10.0f, i, 10.0f); + } + else { + var_f31 = fn_1_2412C(10.0f, -500.0f, i - 10, 50.0f); + } + HuSprGrpPosSet(temp_r30, 0.0f, var_f31); + } + fn_1_1B260(0); +} + +void fn_1_1AA28(void) +{ + s32 temp_r31; + + temp_r31 = lbl_1_bss_2050.unk34; + HuSprAttrReset(temp_r31, 8, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r31, 8, lbl_1_data_32C[0][0] - 50, lbl_1_data_32C[0][1]); + HuSprAttrReset(temp_r31, 9, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r31, 9, lbl_1_data_32C[3][0] + 50, lbl_1_data_32C[0][1]); +} + +void fn_1_1AB58(void) +{ + s32 temp_r31; + + temp_r31 = lbl_1_bss_2050.unk34; + HuSprAttrSet(temp_r31, 8, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r31, 8, lbl_1_data_32C[0][0] - 50, lbl_1_data_32C[0][1]); + HuSprAttrSet(temp_r31, 9, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r31, 9, lbl_1_data_32C[3][0] + 50, lbl_1_data_32C[0][1]); +} + +void fn_1_1AC88(StructBss2050 *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + AnimData *temp_r26; + AnimData *temp_r25; + s32 var_r29; + s32 var_r28; + s32 i; + + var_r29 = HuSprGrpCreate(19); + arg0->unk34 = var_r29; + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 111)); + for (i = 0; i < 4; i++) { + var_r28 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 99)), 1000, 0); + HuSprGrpMemberSet(var_r29, i, var_r28); + HuSprPosSet(var_r29, i, lbl_1_data_32C[i % 4][0], lbl_1_data_32C[0][1]); + var_r28 = HuSprCreate(temp_r26, 1010, 0); + HuSprGrpMemberSet(var_r29, 4 + i, var_r28); + HuSprTPLvlSet(var_r29, 4 + i, 0.5f); + HuSprPosSet(var_r29, 4 + i, lbl_1_data_32C[i % 4][0] + 1, lbl_1_data_32C[0][1] + 2); + } + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 137)); + for (i = 0; i < 2; i++) { + var_r28 = HuSprCreate(temp_r26, 0, 0); + HuSprGrpMemberSet(var_r29, 8 + i, var_r28); + HuSprBankSet(var_r29, 8 + i, i); + } + var_r28 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 98)), 2000, 0); + HuSprGrpMemberSet(var_r29, 10, var_r28); + HuSprTPLvlSet(var_r29, 10, 0.8f); + fn_1_26790(var_r29, 10, 288.0f, 240.0f); + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 101)); + temp_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 102)); + for (i = 0; i < 4; i++) { + var_r28 = HuSprCreate(temp_r26, 1980, 0); + HuSprGrpMemberSet(var_r29, 11 + i, var_r28); + HuSprBankSet(var_r29, 11 + i, i); + fn_1_26790(var_r29, 11 + i, lbl_1_data_32C[i][2], lbl_1_data_32C[i][3]); + var_r28 = HuSprCreate(temp_r25, 1990, 0); + HuSprGrpMemberSet(var_r29, 15 + i, var_r28); + HuSprBankSet(var_r29, 15 + i, i); + HuSprTPLvlSet(var_r29, 15 + i, 0.5f); + fn_1_26790(var_r29, 15 + i, lbl_1_data_32C[i][2] + 1, lbl_1_data_32C[i][3] + 6); + } + fn_1_1A564(); +} + +void fn_1_1B260(s32 arg0) +{ + s32 temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_2050.unk30; + for (i = 0; i < 86; i++) { + HuSprAttrSet(temp_r30, i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 != 0) { + HuSprAttrSet(temp_r30, 16 + lbl_1_bss_1E10[i].unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 20 + lbl_1_bss_1E10[i].unk58, HUSPR_ATTR_DISPOFF); + } + else { + HuSprAttrReset(temp_r30, 16 + lbl_1_bss_1E10[i].unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 20 + lbl_1_bss_1E10[i].unk58, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet( + temp_r30, 16 + lbl_1_bss_1E10[i].unk58, lbl_1_data_36C[lbl_1_bss_1E10[i].unk68 % 4][0], lbl_1_data_36C[lbl_1_bss_1E10[i].unk68 / 4][1]); + HuSprPosSet( + temp_r30, 20 + lbl_1_bss_1E10[i].unk58, lbl_1_data_36C[lbl_1_bss_1E10[i].unk68 % 4][0], lbl_1_data_36C[lbl_1_bss_1E10[i].unk68 / 4][1]); + } + for (i = 0; i < 8; i++) { + HuSprBankSet(temp_r30, i, 0); + HuSprAttrReset(temp_r30, i, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 8 + i, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(temp_r30, 40, HUSPR_ATTR_DISPOFF); + for (i = 0; i < 4; i++) { + HuSprBankSet(temp_r30, 16 + i, 0); + HuSprBankSet(temp_r30, 20 + i, 0); + HuSprAttrReset(temp_r30, 41 + i, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 45 + i, HUSPR_ATTR_DISPOFF); + fn_1_26790(temp_r30, 41 + i, lbl_1_data_36C[i][2], lbl_1_data_36C[i][3]); + fn_1_26790(temp_r30, 45 + i, lbl_1_data_36C[i][2], lbl_1_data_36C[i][3] + 6); + } + HuWinDispOff(lbl_1_bss_2050.unk44[0]); + HuWinDispOff(lbl_1_bss_2050.unk44[1]); + if (arg0 == 1) { + HuSprAttrSet(temp_r30, 40, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 53, HUSPR_ATTR_DISPOFF); + for (i = 0; i < 4; i++) { + fn_1_26790(temp_r30, 41 + i, lbl_1_data_36C[i][4], lbl_1_data_36C[i][5]); + fn_1_26790(temp_r30, 45 + i, lbl_1_data_36C[i][4] + 1, lbl_1_data_36C[i][5] + 6); + } + for (i = 0; i < 4; i++) { + HuSprAttrReset(temp_r30, 81 + i, HUSPR_ATTR_DISPOFF); + HuSprBankSet(temp_r30, 81 + i, lbl_1_bss_1E10[i].unk60); + HuSprPosSet(temp_r30, 81 + i, lbl_1_data_3E4[lbl_1_bss_1E10[i].unk58][0], lbl_1_data_3CC[2]); + HuSprScaleSet(temp_r30, 81 + i, 1.0f, 1.0f); + HuSprAttrReset(temp_r30, 65 + i, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r30, 65 + i, lbl_1_data_3E4[i][0] + 1.0f, lbl_1_data_3CC[2] + 2); + } + HuWinDispOn(lbl_1_bss_2050.unk44[0]); + } + else if (arg0 == 2) { + HuSprAttrSet(temp_r30, 40, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 53, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 56, HUSPR_ATTR_DISPOFF); + HuSprBankSet(temp_r30, 56, 0); + for (i = 0; i < 4; i++) { + fn_1_26790(temp_r30, 41 + i, lbl_1_data_36C[i][4], lbl_1_data_36C[i][5]); + fn_1_26790(temp_r30, 45 + i, lbl_1_data_36C[i][4] + 1, lbl_1_data_36C[i][5] + 6); + } + HuWinDispOn(lbl_1_bss_2050.unk44[1]); + } + HuWinPosSet(lbl_1_bss_2050.unk44[0], 140.0f, lbl_1_data_3CC[2] - 519); + HuWinPosSet(lbl_1_bss_2050.unk44[1], 100.0f, lbl_1_data_3CC[2] - 519); + HuSprPosSet(temp_r30, 54, lbl_1_data_3CC[3], lbl_1_data_3CC[2]); + HuSprPosSet(temp_r30, 55, lbl_1_data_3CC[4], lbl_1_data_3CC[2]); + HuSprGrpPosSet(temp_r30, 0.0f, -500.0f); +} + +void fn_1_1BCEC(void) +{ + float var_f31; + s32 sp8; + s32 i; + + sp8 = lbl_1_bss_2050.unk30; + for (i = 0; i <= 60; i++) { + fn_1_243B0(); + if (i <= 50) { + var_f31 = fn_1_24204(-500.0f, 10.0f, i, 50.0f); + } + else { + var_f31 = fn_1_2412C(10.0f, 2.06f, i - 50, 10.0f); + } + HuSprGrpPosSet(lbl_1_bss_2050.unk30, 0.0f, var_f31); + HuWinPosSet(lbl_1_bss_2050.unk44[0], 120.0f, lbl_1_data_3CC[2] - 19 + var_f31); + HuWinPosSet(lbl_1_bss_2050.unk44[1], 100.0f, lbl_1_data_3CC[2] - 19 + var_f31); + } +} + +void fn_1_1BECC(void) +{ + float var_f31; + s32 i; + + for (i = 0; i <= 60; i++) { + fn_1_243B0(); + if (i <= 10) { + var_f31 = fn_1_24204(2.06f, 10.0f, i, 10.0f); + } + else { + var_f31 = fn_1_2412C(10.0f, -500.0f, i - 10, 50.0f); + } + HuSprGrpPosSet(lbl_1_bss_2050.unk30, 0.0f, var_f31); + HuWinPosSet(lbl_1_bss_2050.unk44[0], 120.0f, lbl_1_data_3CC[2] - 19 + var_f31); + HuWinPosSet(lbl_1_bss_2050.unk44[1], 100.0f, lbl_1_data_3CC[2] - 19 + var_f31); + } +} + +void fn_1_1C09C(StructBss2050 *arg0, s32 arg1, s32 arg2, s32 arg3) +{ + AnimData *temp_r28; + AnimData *temp_r26; + AnimData *temp_r25; + AnimData *temp_r24; + AnimData *temp_r23; + s32 var_r29; + s32 var_r30; + s32 i; + + var_r29 = arg0->unk30 = HuSprGrpCreate(86); + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 111)); + for (i = 0; i < 8; i++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 103 + i)), 1000, 0); + HuSprGrpMemberSet(var_r29, i, var_r30); + HuSprPosSet(var_r29, i, lbl_1_data_36C[i % 4][0], lbl_1_data_36C[i / 4][1]); + var_r30 = HuSprCreate(temp_r28, 1010, 0); + HuSprGrpMemberSet(var_r29, 8 + i, var_r30); + HuSprTPLvlSet(var_r29, 8 + i, 0.5f); + HuSprPosSet(var_r29, 8 + i, lbl_1_data_36C[i % 4][0] + 1, (lbl_1_data_36C[i / 4][1] + 2)); + } + for (i = 0; i < 4; i++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 112 + i)), 0, 0); + HuSprGrpMemberSet(var_r29, 16 + i, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 117 + i)), 10, 0); + HuSprGrpMemberSet(var_r29, 20 + i, var_r30); + } + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 116)); + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 121)); + temp_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 122)); + temp_r24 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 124)); + temp_r23 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 123)); + for (i = 0; i < 4; i++) { + var_r30 = HuSprCreate(temp_r28, 0, 0); + HuSprGrpMemberSet(var_r29, 24 + i, var_r30); + var_r30 = HuSprCreate(temp_r26, 30, 0); + HuSprGrpMemberSet(var_r29, 28 + i, var_r30); + var_r30 = HuSprCreate(temp_r25, 10, 0); + HuSprGrpMemberSet(var_r29, 32 + i, var_r30); + var_r30 = HuSprCreate(temp_r24, 20, 0); + HuSprGrpMemberSet(var_r29, 36 + i, var_r30); + HuSprTPLvlSet(var_r29, 36 + i, 0.5f); + var_r30 = HuSprCreate(temp_r23, 20, 0); + HuSprGrpMemberSet(var_r29, 49 + i, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 100)), 2000, 0); + HuSprGrpMemberSet(var_r29, 40, var_r30); + HuSprTPLvlSet(var_r29, 40, 0.8f); + fn_1_26790(var_r29, 40, 288.0f, 240.0f); + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 101)); + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 102)); + for (i = 0; i < 4; i++) { + var_r30 = HuSprCreate(temp_r28, 1980, 0); + HuSprGrpMemberSet(var_r29, 41 + i, var_r30); + HuSprBankSet(var_r29, 41 + i, i); + fn_1_26790(var_r29, 41 + i, lbl_1_data_36C[i][2], lbl_1_data_36C[i][3]); + var_r30 = HuSprCreate(temp_r26, 1990, 0); + HuSprGrpMemberSet(var_r29, 45 + i, var_r30); + HuSprBankSet(var_r29, 45 + i, i); + HuSprTPLvlSet(var_r29, 45 + i, 0.5f); + fn_1_26790(var_r29, 45 + i, lbl_1_data_36C[i][2] + 1, lbl_1_data_36C[i][3] + 6); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 125)), 2000, 0); + HuSprGrpMemberSet(var_r29, 53, var_r30); + HuSprTPLvlSet(var_r29, 53, 0.8f); + fn_1_26790(var_r29, 53, 288.0f, 240.0f); + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 137)); + for (i = 0; i < 2; i++) { + var_r30 = HuSprCreate(temp_r28, 0, 0); + HuSprGrpMemberSet(var_r29, 54 + i, var_r30); + HuSprBankSet(var_r29, 54 + i, i); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 139)), 1000, 0); + HuSprGrpMemberSet(var_r29, 56, var_r30); + HuSprPosSet(var_r29, 56, 380.0f, lbl_1_data_3CC[2]); + for (i = 0; i < 2; i++) { + arg0->unk44[i] = HuWinExCreateStyled(0.0f, 0.0f, 200, 200, -1, 1); + HuWinBGTPLvlSet(arg0->unk44[i], 0.0f); + HuWinMesSet(arg0->unk44[i], MAKE_MESSID(27, 48 + i)); + HuWinMesSpeedSet(arg0->unk44[i], 0); + HuWinDispOff(arg0->unk44[i]); + winData[arg0->unk44[i]].mess_shadow_color = 0; + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 138)), 990, 0); + HuSprGrpMemberSet(var_r29, 85, var_r30); + temp_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 134)); + for (i = 0; i < 8; i++) { + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 126 + i)); + var_r30 = HuSprCreate(temp_r28, 1000, 0); + HuSprGrpMemberSet(var_r29, 57 + i, var_r30); + var_r30 = HuSprCreate(temp_r25, 1010, 0); + HuSprGrpMemberSet(var_r29, 65 + i, var_r30); + } + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 135)); + temp_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 136)); + for (i = 0; i < 4; i++) { + var_r30 = HuSprCreate(temp_r28, 990, 0); + HuSprGrpMemberSet(var_r29, 73 + i, var_r30); + var_r30 = HuSprCreate(temp_r26, 990, 0); + HuSprGrpMemberSet(var_r29, 77 + i, var_r30); + } + temp_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 140)); + for (i = 0; i < 4; i++) { + var_r30 = HuSprCreate(temp_r28, 990, 0); + HuSprGrpMemberSet(var_r29, 81 + i, var_r30); + } + fn_1_1B260(0); +} + +void fn_1_1CB4C(void) +{ + StructBss8_24 *temp_r30; + float temp_f31; + float temp_f30; + s32 temp_r29; + s32 i; + s32 j; + + temp_r29 = lbl_1_bss_2050.unk30; + for (i = 0; i < 8; i++) { + HuSprBankSet(temp_r29, i, 0); + } + for (i = 0; i < 4; i++) { + HuSprBankSet(temp_r29, 16 + i, 0); + HuSprBankSet(temp_r29, 20 + i, 0); + HuSprBankSet(temp_r29, 24 + i, 0); + HuSprBankSet(temp_r29, 28 + i, 0); + HuSprBankSet(temp_r29, 32 + i, 0); + } + for (i = 0; i <= 10; i++) { + fn_1_243B0(); + for (j = 0; j < 4; j++) { + temp_r30 = &lbl_1_bss_1E10[j]; + temp_f31 = fn_1_24204(lbl_1_data_36C[temp_r30->unk68 % 4][0], lbl_1_data_36C[temp_r30->unk58 % 4][0], i, 10.0f); + temp_f30 = fn_1_24204(lbl_1_data_36C[temp_r30->unk68 / 4][1], lbl_1_data_36C[temp_r30->unk58 / 4][1], i, 10.0f); + HuSprPosSet(temp_r29, 16 + temp_r30->unk58, temp_f31, temp_f30); + HuSprPosSet(temp_r29, 20 + temp_r30->unk58, temp_f31, temp_f30); + } + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1E10[i].unk68 = lbl_1_bss_1E10[i].unk58; + lbl_1_bss_1E10[i].unk70[0] = 0; + } +} + +void fn_1_1CEB0(omObjData *arg0, StructBss8_24 *arg1) +{ + float temp_f31; + float temp_f30; + s32 temp_r25; + s32 var_r27; + s32 var_r26; + s32 temp_r24; + s32 temp_r23; + s32 var_r30; + s32 var_r29; + s32 i; + + temp_r25 = lbl_1_bss_2050.unk30; + var_r27 = 0; + var_r26 = 0; + temp_r24 = var_r30 = arg1->unk68 % 4; + temp_r23 = var_r29 = arg1->unk68 / 4; + if (arg1->unk70[0] == 0) { + if (HuPadBtnDown[arg1->unk6C] & 0x100) { + arg1->unk70[0] = 1; + HuSprBankSet(temp_r25, arg1->unk68, 1); + HuSprBankSet(temp_r25, 16 + arg1->unk58, 1); + HuSprBankSet(temp_r25, 20 + arg1->unk58, 1); + HuAudFXPlay(0x6D + arg1->unk68); + } + else { + if (HuPadStkX[arg1->unk6C] >= 5 || (HuPadBtn[arg1->unk6C] & 2)) { + var_r30++; + var_r27 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[arg1->unk6C] <= -5 || (HuPadBtn[arg1->unk6C] & 1)) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk6C] <= -5 || (HuPadBtn[arg1->unk6C] & 4)) { + var_r29++; + var_r26 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[arg1->unk6C] >= 5 || (HuPadBtn[arg1->unk6C] & 8)) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[arg1->unk6C] & 0x200) { + arg1->unk70[0] = 0; + HuSprBankSet(temp_r25, arg1->unk68, 0); + HuSprBankSet(temp_r25, 16 + arg1->unk58, 0); + HuSprBankSet(temp_r25, 20 + arg1->unk58, 0); + HuAudFXPlay(3); + } + if (arg1->unk68 != var_r30 + var_r29 * 4) { + do { + for (i = 0; i < 4; i++) { + if (i != arg1->unk58 && lbl_1_bss_1E10[i].unk60 == 0 && var_r30 + var_r29 * 4 == lbl_1_bss_1E10[i].unk68) { + if (var_r27 == 0 || var_r26 == 0) { + if (var_r30 + var_r27 > 3 || var_r30 + var_r27 < 0) { + var_r30 = temp_r24; + } + else { + var_r30 += var_r27; + } + if (var_r29 + var_r26 > 1 || var_r29 + var_r26 < 0) { + var_r29 = temp_r23; + } + else { + var_r29 += var_r26; + } + } + else { + if (var_r30 + var_r27 <= 3 && var_r30 + var_r27 >= 0) { + var_r30 += var_r27; + } + else if (var_r29 + var_r26 <= 1 && var_r29 + var_r26 >= 0) { + var_r29 += var_r26; + } + else { + var_r30 = temp_r24; + var_r29 = temp_r23; + } + } + break; + } + } + } while (i != 4); + if (arg1->unk68 != var_r30 + var_r29 * 4) { + arg1->unk68 = var_r30 + var_r29 * 4; + HuAudFXPlay(0); + for (i = 0; i <= 10; i++) { + fn_1_243B0(); + temp_f31 = fn_1_24204(lbl_1_data_36C[temp_r24][0], lbl_1_data_36C[var_r30][0], i, 10.0f); + temp_f30 = fn_1_24204(lbl_1_data_36C[temp_r23][1], lbl_1_data_36C[var_r29][1], i, 10.0f); + HuSprPosSet(temp_r25, 16 + arg1->unk58, temp_f31, temp_f30); + HuSprPosSet(temp_r25, 20 + arg1->unk58, temp_f31, temp_f30); + } + } + } +} + +void fn_1_1D49C(StructBss8_24 *arg0) +{ + s32 temp_r30; + + temp_r30 = lbl_1_bss_2050.unk30; + arg0->unk64 = 0; + HuSprBankSet(temp_r30, 32 + arg0->unk58, arg0->unk64); + HuSprPosSet(temp_r30, 32 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0], lbl_1_data_36C[arg0->unk68 / 4][1] + 35); + HuSprPosSet(temp_r30, 36 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0] + 1, lbl_1_data_36C[arg0->unk68 / 4][1] + 37); + HuSprAttrReset(temp_r30, 32 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 36 + arg0->unk58, HUSPR_ATTR_DISPOFF); +} + +s32 fn_1_1D688(StructBss8_24 *arg0) +{ + float var_f31; + s32 i; + s32 temp_r29; + s32 var_r28; + s32 var_r26; + s32 var_r27; + + var_r28 = 0; + temp_r29 = lbl_1_bss_2050.unk30; + while (TRUE) { + fn_1_243B0(); + var_r28 = 0; + var_r26 = arg0->unk64; + if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) { + if (GWGameStat.veryHardUnlock == 1) { + arg0->unk64++; + var_r28 = 1; + if (arg0->unk64 > 3) { + arg0->unk64 = 0; + } + } + else { + arg0->unk64++; + var_r28 = 1; + if (arg0->unk64 > 2) { + arg0->unk64 = 0; + } + } + } + else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) { + if (GWGameStat.veryHardUnlock == 1) { + arg0->unk64--; + var_r28 = -1; + if (arg0->unk64 < 0) { + arg0->unk64 = 3; + } + } + else { + arg0->unk64--; + var_r28 = -1; + if (arg0->unk64 < 0) { + arg0->unk64 = 2; + } + } + } + else if (HuPadBtnDown[0] & 0x100) { + var_r27 = 1; + HuAudFXPlay(2); + break; + } + else if (HuPadBtnDown[0] & 0x200) { + var_r27 = 0; + HuAudFXPlay(3); + break; + } + if (arg0->unk64 != var_r26) { + HuAudFXPlay(0); + for (i = 0; i <= 5; i++) { + fn_1_243B0(); + var_f31 = fn_1_24204(lbl_1_data_36C[arg0->unk68 % 4][0], lbl_1_data_36C[arg0->unk68 % 4][0] + var_r28 * 10, i, 5.0f); + HuSprPosSet(temp_r29, 32 + arg0->unk58, var_f31, lbl_1_data_36C[arg0->unk68 / 4][1] + 35); + HuSprPosSet(temp_r29, 36 + arg0->unk58, var_f31 + 1.0f, lbl_1_data_36C[arg0->unk68 / 4][1] + 37); + } + HuSprBankSet(temp_r29, 32 + arg0->unk58, arg0->unk64); + for (i = 0; i <= 5; i++) { + fn_1_243B0(); + var_f31 = fn_1_24204(lbl_1_data_36C[arg0->unk68 % 4][0] + var_r28 * 10, lbl_1_data_36C[arg0->unk68 % 4][0], i, 5.0f); + HuSprPosSet(temp_r29, 32 + arg0->unk58, var_f31, lbl_1_data_36C[arg0->unk68 / 4][1] + 35); + HuSprPosSet(temp_r29, 36 + arg0->unk58, var_f31 + 1.0f, lbl_1_data_36C[arg0->unk68 / 4][1] + 37); + } + } + } + if (var_r27 == 1) { + HuSprPosSet(temp_r29, 49 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0], lbl_1_data_36C[arg0->unk68 / 4][1] + 35); + HuSprBankSet(temp_r29, 49 + arg0->unk58, arg0->unk64); + HuSprAttrReset(temp_r29, 49 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r29, 32 + arg0->unk58, HUSPR_ATTR_DISPOFF); + } + return var_r27; +} + +void fn_1_1DD74(s32 arg0, StructBss8_24 *arg1) +{ + float temp_f31; + float var_f30; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 sp8; + s32 temp_r23; + s32 temp_r22; + s32 var_r30; + s32 var_r29; + s32 i; + + temp_r27 = lbl_1_bss_2050.unk30; + var_r26 = 0; + var_r25 = 0; + sp8 = arg1->unk64; + temp_r23 = var_r30 = arg1->unk68 % 4; + temp_r22 = var_r29 = arg1->unk68 / 4; + if (arg1->unk70[0] == 0) { + if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x100) { + arg1->unk70[0] = 1; + HuSprBankSet(temp_r27, arg1->unk68, 1); + HuSprBankSet(temp_r27, 24 + arg1->unk58, 1); + HuSprBankSet(temp_r27, 28 + arg1->unk58, 1); + HuAudFXPlay(0x6D + arg1->unk68); + fn_1_1D49C(arg1); + } + else { + if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) { + var_r30++; + var_r26 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 4)) { + var_r29++; + var_r25 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 8)) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x200) { + arg1->unk70[0] = arg1->unk70[2] = 0; + HuSprBankSet(temp_r27, arg1->unk68, 0); + HuSprBankSet(temp_r27, 24 + arg1->unk58, 0); + HuSprBankSet(temp_r27, 28 + arg1->unk58, 0); + HuSprAttrSet(temp_r27, 32 + arg1->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r27, 36 + arg1->unk58, HUSPR_ATTR_DISPOFF); + HuAudFXPlay(3); + } + if (arg1->unk68 == var_r30 + var_r29 * 4) { + return; + } + do { + for (i = 0; i < 4; i++) { + if (i != arg1->unk58 && lbl_1_bss_1E10[i].unk70[0] == 1 && var_r30 + var_r29 * 4 == lbl_1_bss_1E10[i].unk68) { + if (var_r26 == 0 || var_r25 == 0) { + if (var_r30 + var_r26 > 3 || var_r30 + var_r26 < 0) { + var_r30 = temp_r23; + } + else { + var_r30 += var_r26; + } + if (var_r29 + var_r25 > 1 || var_r29 + var_r25 < 0) { + var_r29 = temp_r22; + } + else { + var_r29 += var_r25; + } + } + else { + if (var_r30 + var_r26 <= 3 && var_r30 + var_r26 >= 0) { + var_r30 += var_r26; + } + else if (var_r29 + var_r25 <= 1 && var_r29 + var_r25 >= 0) { + var_r29 += var_r25; + } + else { + var_r30 = temp_r23; + var_r29 = temp_r22; + } + } + break; + } + } + } while (i != 4); + if (arg1->unk68 != var_r30 + var_r29 * 4) { + arg1->unk68 = var_r30 + var_r29 * 4; + HuAudFXPlay(0); + for (i = 0; i <= 10; i++) { + fn_1_243B0(); + temp_f31 = fn_1_24204(lbl_1_data_36C[temp_r23][0], lbl_1_data_36C[var_r30][0], i, 10.0f); + var_f30 = fn_1_24204(lbl_1_data_36C[temp_r22][1], lbl_1_data_36C[var_r29][1], i, 10.0f); + HuSprPosSet(temp_r27, 24 + arg1->unk58, temp_f31, var_f30); + HuSprPosSet(temp_r27, 28 + arg1->unk58, temp_f31, var_f30); + HuSprPosSet(temp_r27, 32 + arg1->unk58, temp_f31, 35.0f + var_f30); + HuSprPosSet(temp_r27, 36 + arg1->unk58, 1.0f + temp_f31, 37.0f + var_f30); + } + } +} + +void fn_1_1E608(StructBss8_24 *arg0) +{ + s32 temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_2050.unk30; + while (TRUE) { + for (i = 0; i < 4; i++) { + if (i != arg0->unk58 && lbl_1_bss_1E10[i].unk70[0] == 1 && arg0->unk68 == lbl_1_bss_1E10[i].unk68) { + arg0->unk68++; + break; + } + } + if (i == 4) { + break; + } + }; + arg0->unk64 = 0; + HuSprBankSet(temp_r30, arg0->unk68, 0); + HuSprBankSet(temp_r30, 24 + arg0->unk58, 0); + HuSprBankSet(temp_r30, 28 + arg0->unk58, 0); + HuSprBankSet(temp_r30, 32 + arg0->unk58, arg0->unk64); + HuSprBankSet(temp_r30, 49 + arg0->unk58, arg0->unk64); + HuSprPosSet(temp_r30, 24 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0], lbl_1_data_36C[arg0->unk68 / 4][1]); + HuSprPosSet(temp_r30, 28 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0], lbl_1_data_36C[arg0->unk68 / 4][1]); + HuSprPosSet(temp_r30, 32 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0], lbl_1_data_36C[arg0->unk68 / 4][1] + 35); + HuSprPosSet(temp_r30, 36 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0] + 1, lbl_1_data_36C[arg0->unk68 / 4][1] + 37); + HuSprPosSet(temp_r30, 49 + arg0->unk58, lbl_1_data_36C[arg0->unk68 % 4][0] + 1, lbl_1_data_36C[arg0->unk68 / 4][1] + 37); + arg0->unk70[2] = 0; + HuSprAttrReset(temp_r30, 24 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r30, 28 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 32 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 36 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 49 + arg0->unk58, HUSPR_ATTR_DISPOFF); +} + +void fn_1_1EB20(StructBss8_24 *arg0) +{ + s32 temp_r30; + + temp_r30 = lbl_1_bss_2050.unk30; + HuSprBankSet(temp_r30, arg0->unk68, 0); + HuSprAttrSet(temp_r30, 24 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 28 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 32 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 36 + arg0->unk58, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 49 + arg0->unk58, HUSPR_ATTR_DISPOFF); +} + +void fn_1_1EBE8(void) +{ + s32 temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_2050.unk30; + HuSprPosSet(temp_r30, 54, lbl_1_data_3CC[3], lbl_1_data_3CC[2]); + HuSprPosSet(temp_r30, 55, lbl_1_data_3CC[4], lbl_1_data_3CC[2]); + for (i = 0; i < 2; i++) { + HuSprAttrReset(temp_r30, 54 + i, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_1ED20(void) +{ + s32 temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_2050.unk30; + HuSprPosSet(temp_r30, 54, lbl_1_data_3CC[3], lbl_1_data_3CC[2]); + HuSprPosSet(temp_r30, 55, lbl_1_data_3CC[4], lbl_1_data_3CC[2]); + for (i = 0; i < 2; i++) { + HuSprAttrSet(temp_r30, 54 + i, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_1EE58(s32 arg0, UnkFunc1EE58Struct *arg1) +{ + float var_f31; + float var_f30; + s32 temp_r29; + s32 var_r28; + s32 sp8; + s32 i; + + temp_r29 = arg1->unk30; + var_r28 = 0; + sp8 = arg1->unk08; + lbl_1_bss_2050.unk1C[3] = 0; + arg1->unk08 = 1; + if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) { + var_r28 = 1; + arg1->unk1C++; + if (arg1->unk1C > 2) { + arg1->unk1C = 0; + } + } + else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) { + var_r28 = -1; + arg1->unk1C--; + if (arg1->unk1C < 0) { + arg1->unk1C = 2; + } + } + if (var_r28 != 0) { + lbl_1_bss_2050.unk1C[3] = 1; + HuAudFXPlay(0); + for (i = 0; i <= 10; i++) { + fn_1_243B0(); + if (i <= 5) { + var_f31 = fn_1_24204(0.0f, 10.0f, i, 5.0f); + var_f30 = fn_1_24204(1.0f, 0.0f, i, 5.0f); + } + else { + var_f31 = fn_1_24204(10.0f, 0.0f, i - 5, 5.0f); + var_f30 = fn_1_24204(0.0f, 1.0f, i - 5, 5.0f); + } + if (var_r28 == 1) { + HuSprPosSet(temp_r29, 55, lbl_1_data_3CC[4] + var_f31, lbl_1_data_3CC[2]); + HuSprPosSet(temp_r29, 56, 380.0f + var_f31, lbl_1_data_3CC[2]); + } + else { + HuSprPosSet(temp_r29, 54, lbl_1_data_3CC[3] - var_f31, lbl_1_data_3CC[2]); + HuSprPosSet(temp_r29, 56, 380.0f - var_f31, lbl_1_data_3CC[2]); + } + HuSprScaleSet(temp_r29, 56, 1.0f, var_f30); + if (i == 6) { + HuSprBankSet(temp_r29, 56, arg1->unk1C); + } + } + } + lbl_1_bss_2050.unk1C[3] = 0; +} + +void fn_1_1F32C(omObjData *arg0) +{ + float var_f31; + float var_f30; + s32 temp_r29; + s32 var_r28; + s32 var_r27; + s32 j; + s32 i; + + var_r27 = 0; + temp_r29 = lbl_1_bss_2050.unk30; + lbl_1_bss_2050.unk1C[3] = 0; + var_r28 = lbl_1_bss_2050.unk1C[0] - var_r27; + if (var_r28 > 3) { + var_r28 = 0; + } + else if (var_r28 < 0) { + var_r28 = 3; + } + if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) { + var_r27 = 1; + lbl_1_bss_2050.unk1C[3] = 1; + HuAudFXPlay(0); + lbl_1_bss_2050.unk1C[0]++; + if (lbl_1_bss_2050.unk1C[0] > 3) { + lbl_1_bss_2050.unk1C[0] = 1; + } + } + else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) { + var_r27 = -1; + lbl_1_bss_2050.unk1C[3] = 1; + HuAudFXPlay(0); + lbl_1_bss_2050.unk1C[0]--; + if (lbl_1_bss_2050.unk1C[0] < 1) { + lbl_1_bss_2050.unk1C[0] = 3; + } + } + if (var_r27 != 0) { + for (i = 0; i <= 10; i++) { + fn_1_243B0(); + if (i <= 5) { + var_f31 = fn_1_24204(0.0f, 10.0f, i, 5.0f); + var_f30 = fn_1_24204(1.0f, 0.0f, i, 5.0f); + } + else { + var_f31 = fn_1_24204(10.0f, 0.0f, i - 5, 5.0f); + var_f30 = fn_1_24204(0.0f, 1.0f, i - 5, 5.0f); + } + if (var_r27 == 1) { + HuSprPosSet(temp_r29, 55, lbl_1_data_3CC[1] + var_f31, lbl_1_data_3CC[2]); + } + else { + HuSprPosSet(temp_r29, 54, lbl_1_data_3CC[0] - var_f31, lbl_1_data_3CC[2]); + } + if (lbl_1_bss_2050.unk1C[0] != 0) { + var_f30 = fn_1_24204(0.0f, 1.0f, i, 10.0f); + } + else { + var_f30 = fn_1_24204(1.0f, 0.0f, i, 10.0f); + } + HuSprScaleSet(temp_r29, 85, var_f30, var_f30); + for (j = 0; j < 4; j++) { + var_f31 = fn_1_24204( + lbl_1_data_448[lbl_1_bss_1E10[j].unk58][var_r28], lbl_1_data_448[lbl_1_bss_1E10[j].unk58][lbl_1_bss_2050.unk1C[0]], i, 10.0f); + HuSprPosSet(temp_r29, 57 + lbl_1_bss_1E10[j].unk68, var_f31, lbl_1_data_3CC[2]); + HuSprPosSet(temp_r29, 65 + j, var_f31 + 1.0f, lbl_1_data_3CC[2] + 2); + if (lbl_1_bss_1E10[j].unk60 != 0) { + HuSprPosSet(temp_r29, 77 + j, var_f31, lbl_1_data_3CC[2] + 21); + } + else { + HuSprPosSet(temp_r29, 73 + j, var_f31 - 8.0f, lbl_1_data_3CC[2] - 21); + } + } + } + } + lbl_1_bss_2050.unk1C[3] = 0; +} + +void fn_1_1FABC(void) +{ + s32 temp_r30; + s32 i; + + temp_r30 = lbl_1_bss_2050.unk30; + for (i = 0; i < 4; i++) { + HuSprAttrSet(temp_r30, 77 + i, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 73 + i, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 57 + lbl_1_bss_1E10[i].unk68, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 85, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(temp_r30, 65 + lbl_1_bss_1E10[i].unk58, HUSPR_ATTR_DISPOFF); + HuSprScaleSet(temp_r30, 77 + i, 0.0f, 0.0f); + HuSprScaleSet(temp_r30, 73 + i, 0.0f, 0.0f); + HuSprScaleSet(temp_r30, 57 + lbl_1_bss_1E10[i].unk68, 0.0f, 0.0f); + HuSprScaleSet(temp_r30, 81 + i, 1.0f, 1.0f); + } +} + +void fn_1_1FC44(s32 arg0) +{ + float var_f31; + float var_f30; + s32 temp_r30; + s32 var_r27; + s32 i; + s32 j; + + temp_r30 = lbl_1_bss_2050.unk30; + if (arg0 == 2) { + for (i = 0; i < 2; i++) { + HuSprAttrSet(temp_r30, 54 + i, HUSPR_ATTR_DISPOFF); + } + return; + } + for (i = 0; i < 4; i++) { + HuSprAttrReset(temp_r30, 57 + lbl_1_bss_1E10[i].unk68, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r30, 57 + lbl_1_bss_1E10[i].unk68, lbl_1_data_3E4[lbl_1_bss_1E10[i].unk58][0], lbl_1_data_3CC[2]); + if (arg0 == 0) { + HuSprScaleSet(temp_r30, 57 + lbl_1_bss_1E10[i].unk68, 0.0f, 1.0f); + } + else { + HuSprScaleSet(temp_r30, 57 + lbl_1_bss_1E10[i].unk68, 1.0f, 1.0f); + } + if (lbl_1_bss_1E10[i].unk60 != 0) { + HuSprAttrReset(temp_r30, 77 + i, HUSPR_ATTR_DISPOFF); + HuSprBankSet(temp_r30, 77 + i, lbl_1_bss_1E10[i].unk64); + HuSprPosSet(temp_r30, 77 + i, lbl_1_data_3E4[lbl_1_bss_1E10[i].unk58][0], lbl_1_data_3CC[2] + 21); + if (arg0 == 0) { + HuSprScaleSet(temp_r30, 77 + i, 0.0f, 1.0f); + } + else { + HuSprScaleSet(temp_r30, 77 + i, 1.0f, 1.0f); + } + } + else { + HuSprAttrReset(temp_r30, 73 + i, HUSPR_ATTR_DISPOFF); + HuSprBankSet(temp_r30, 73 + i, lbl_1_bss_1E10[i].unk58); + HuSprPosSet(temp_r30, 73 + i, lbl_1_data_3E4[lbl_1_bss_1E10[i].unk58][0] - 8.0f, lbl_1_data_3CC[2] - 21); + if (arg0 == 0) { + HuSprScaleSet(temp_r30, 73 + i, 0.0f, 1.0f); + } + else { + HuSprScaleSet(temp_r30, 73 + i, 1.0f, 1.0f); + } + } + } + HuSprAttrReset(temp_r30, 85, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r30, 85, 340.0f, lbl_1_data_3CC[2]); + HuSprScaleSet(temp_r30, 85, 0.0f, 0.0f); + if (arg0 == 0) { + lbl_1_bss_2050.unk1C[0] = 1; + var_r27 = 0; + } + else { + var_r27 = lbl_1_bss_2050.unk1C[0]; + lbl_1_bss_2050.unk1C[0] = 0; + } + for (i = 0; i <= 10; i++) { + if (i <= 5) { + var_f31 = fn_1_24204(1.0f, 0.0f, i, 5.0f); + } + else { + var_f31 = fn_1_24204(0.0f, 1.0f, i - 5, 5.0f); + } + for (j = 0; j < 4; j++) { + HuSprScaleSet(temp_r30, 65 + j, var_f31, 1.0f); + if ((i > 5 && arg0 == 0) || (i <= 5 && arg0 == 1)) { + HuSprScaleSet(temp_r30, 57 + lbl_1_bss_1E10[j].unk68, var_f31, 1.0f); + if (lbl_1_bss_1E10[j].unk60 != 0) { + HuSprScaleSet(temp_r30, 77 + j, var_f31, 1.0f); + } + else { + HuSprScaleSet(temp_r30, 73 + j, var_f31, 1.0f); + } + } + else { + HuSprScaleSet(temp_r30, 81 + j, var_f31, 1.0f); + } + var_f30 = fn_1_24204( + lbl_1_data_448[lbl_1_bss_1E10[j].unk58][var_r27], lbl_1_data_448[lbl_1_bss_1E10[j].unk58][lbl_1_bss_2050.unk1C[0]], i, 10.0f); + HuSprPosSet(temp_r30, 57 + lbl_1_bss_1E10[j].unk68, var_f30, lbl_1_data_3CC[2]); + HuSprPosSet(temp_r30, 65 + j, var_f30 + 1.0f, lbl_1_data_3CC[2] + 2); + if (lbl_1_bss_1E10[j].unk60 != 0) { + HuSprPosSet(temp_r30, 77 + j, var_f30, lbl_1_data_3CC[2] + 21); + } + else { + HuSprPosSet(temp_r30, 73 + j, var_f30 - 8.0f, lbl_1_data_3CC[2] - 21); + } + } + if (lbl_1_bss_2050.unk1C[0] != 0) { + var_f31 = fn_1_24204(0.0f, 1.0f, i, 10.0f); + } + else { + var_f31 = fn_1_24204(1.0f, 0.0f, i, 10.0f); + } + HuSprScaleSet(temp_r30, 85, var_f31, var_f31); + fn_1_243B0(); + } + HuSprPosSet(temp_r30, 54, lbl_1_data_3CC[0], lbl_1_data_3CC[2]); + HuSprPosSet(temp_r30, 55, lbl_1_data_3CC[1], lbl_1_data_3CC[2]); + if (arg0 == 0) { + for (i = 0; i < 2; i++) { + HuSprAttrReset(temp_r30, 54 + i, HUSPR_ATTR_DISPOFF); + } + } + else { + for (i = 0; i < 2; i++) { + HuSprAttrSet(temp_r30, 54 + i, HUSPR_ATTR_DISPOFF); + } + } +} + +void fn_1_20728(void) +{ + fn_1_1A6A0(); +} + +s32 fn_1_20970(void) +{ + s32 var_r23; + s32 temp_r26; + s32 temp_r28; + s32 var_r24; + s32 var_r29; + s32 var_r30; + s32 var_r25; + s32 temp_r27; + s32 i; + + var_r23 = 0; + temp_r26 = fn_1_2530C(0, 0, 0); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk18, 0xF, 1); + fn_1_25838(temp_r26, MAKE_MESSID(26, 5), -1, -1); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + fn_1_243B0(); + fn_1_25CA8(MAKE_MESSID(26, 33)); + temp_r28 = lbl_1_bss_2050.unk34; + HuSprAttrReset(temp_r28, 8, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r28, 8, lbl_1_data_32C[0][0] - 50, lbl_1_data_32C[0][1]); + HuSprAttrReset(temp_r28, 9, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r28, 9, lbl_1_data_32C[3][0] + 50, lbl_1_data_32C[0][1]); + lbl_1_bss_2050.unk04 = (void *)fn_1_19F5C; + var_r24 = 99; + var_r23 = 0; + while (TRUE) { + fn_1_243B0(); + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk70[3] == 0) { + var_r30++; + } + } + if (var_r24 != var_r30) { + var_r24 = var_r30; + fn_1_25838(temp_r26, MAKE_MESSID(26, 27 + var_r30), -1, -999); + } + if (lbl_1_bss_2050.unk1C[0] != 0) { + continue; + } + if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x100) { + var_r29 = 1; + HuAudFXPlay(2); + lbl_1_bss_2050.unk04 = NULL; + fn_1_24388(2); + var_r30 = var_r25 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0) { + var_r25++; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 < var_r25) { + if (HuPadStatGet(i) != -1) { + var_r30++; + lbl_1_bss_1E10[i].unk60 = 0; + } + else { + lbl_1_bss_1E10[i].unk60 = 1; + } + } + } + break; + } + else if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x200) { + var_r29 = -99; + HuAudFXPlay(3); + break; + } + } + temp_r27 = lbl_1_bss_2050.unk34; + HuSprAttrSet(temp_r27, 8, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r27, 8, lbl_1_data_32C[0][0] - 50, lbl_1_data_32C[0][1]); + HuSprAttrSet(temp_r27, 9, HUSPR_ATTR_DISPOFF); + HuSprPosSet(temp_r27, 9, lbl_1_data_32C[3][0] + 50, lbl_1_data_32C[0][1]); + lbl_1_bss_2050.unk04 = NULL; + fn_1_25E74(0); + fn_1_25584(temp_r26); + if (var_r29 != -99) { + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0) { + var_r30++; + } + } + if (var_r30 == 0) { + var_r29 = 2; + } + else { + var_r29 = 1; + } + } + return var_r29; +} + +void fn_1_20E84(s32 arg0) +{ + float var_f31; + s32 sp10; + s32 spC; + s32 temp_r30; + s32 i; + + spC = 0; + sp10 = 0; + temp_r30 = lbl_1_bss_2050.unk34; + for (i = 0; i <= 60; i++) { + fn_1_243B0(); + if (i <= 10) { + var_f31 = fn_1_24204(2.06f, 10.0f, i, 10.0f); + } + else { + var_f31 = fn_1_2412C(10.0f, -500.0f, i - 10, 50.0f); + } + HuSprGrpPosSet(temp_r30, 0.0f, var_f31); + } + fn_1_1B260(0); + fn_1_1CB4C(); + fn_1_1B260(arg0); +} + +void fn_1_20FD4(s32 arg0) +{ + fn_1_1BCEC(); +} + +s32 fn_1_211B4(void) +{ + s32 var_r27; + s32 sp8; + s32 var_r29; + s32 var_r28; + s32 var_r30; + s32 i; + + var_r27 = 0; + sp8 = 0; + fn_1_1CB4C(); + var_r28 = fn_1_2530C(0, 0, 0); + HuWinPushKeySet(var_r28, 0x300); + fn_1_243B0(); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk18, 0xF, 1); + fn_1_25838(var_r28, MAKE_MESSID(26, 9), -1, -1); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + fn_1_25CA8(MAKE_MESSID(26, 32)); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0) { + lbl_1_bss_1E10[i].unk4 = (void *)fn_1_1CEB0; + } + } + while (TRUE) { + fn_1_243B0(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0 && (HuPadBtnDown[lbl_1_bss_1E10[i].unk6C] & 0x100)) { + var_r27 = 1; + } + } + if (lbl_1_bss_1E10->unk70[0] == 0 && (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x200)) { + HuAudFXPlay(3); + var_r30 = 0; + break; + } + else { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0 && lbl_1_bss_1E10[i].unk70[0] != 1) { + break; + } + } + if (i == 4) { + var_r30 = 2; + break; + } + } + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1E10[i].unk4 = NULL; + } + fn_1_25E74(0); + fn_1_25584(var_r28); + if (var_r30 == 2) { + var_r29 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 != 0) { + lbl_1_bss_1E10[i].unk68 = 0; + var_r29++; + } + } + if (var_r29 == 0) { + var_r30 = 3; + } + else { + var_r30 = 2; + } + } + else { + var_r30 = 0; + } + return var_r30; +} + +s32 fn_1_214A4(void) +{ + s32 var_r30; + s32 var_r24; + s32 var_r23; + s32 var_r21; + s32 sp8; + s32 temp_r22; + s32 var_r28; + s32 var_r29; + s32 i; + + var_r30 = -1; + var_r24 = -1; + var_r23 = -1; + var_r21 = -1; + sp8 = 0; + temp_r22 = fn_1_2530C(0, 0, 0); + while (TRUE) { + fn_1_243B0(); + var_r28 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 != 0 && lbl_1_bss_1E10[i].unk70[0] == 0) { + var_r28++; + } + } + HuWinInsertMesSet(temp_r22, MAKE_MESSID(26, 35 + var_r28), 1); + if (var_r23 == -1) { + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk18, 0xF, 1); + } + fn_1_25838(temp_r22, MAKE_MESSID(26, 40), -1, var_r23); + if (var_r23 == -1) { + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + } + var_r23 = -999; + fn_1_25CA8(MAKE_MESSID(26, 32)); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 != 0 && lbl_1_bss_1E10[i].unk70[0] == 0) { + var_r30 = i; + lbl_1_bss_1E10[i].unk70[1] = var_r24; + fn_1_1E608(&lbl_1_bss_1E10[i]); + lbl_1_bss_1E10[i].unk4 = (void *)fn_1_1DD74; + break; + } + } + while (TRUE) { + fn_1_243B0(); + if ((HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x200) && lbl_1_bss_1E10[var_r30].unk70[0] == 0) { + HuAudFXPlay(3); + if (var_r24 == -1) { + var_r29 = 0; + break; + } + else { + var_r29 = 1; + break; + } + } + else if (lbl_1_bss_1E10[var_r30].unk70[0] == 1) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk70[0] == 0) { + lbl_1_bss_1E10[i].unk68 = 0; + } + } + lbl_1_bss_1E10[var_r30].unk4 = NULL; + fn_1_25838(temp_r22, MAKE_MESSID(26, 34), -1, -999); + fn_1_25CA8(MAKE_MESSID(26, 35)); + var_r29 = fn_1_1D688(&lbl_1_bss_1E10[var_r30]); + if (var_r29 == 1) { + lbl_1_bss_1E10[var_r30].unk70[2] = 1; + var_r29 = 4; + var_r24 = var_r30; + } + else { + lbl_1_bss_1E10[var_r30].unk70[2] = 0; + var_r29 = 4; + lbl_1_bss_1E10[var_r30].unk70[0] = 0; + fn_1_1EB20(&lbl_1_bss_1E10[var_r30]); + fn_1_1E608(&lbl_1_bss_1E10[var_r30]); + } + break; + } + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1E10[i].unk4 = NULL; + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk70[0] == 0) { + break; + } + } + if (i == 4) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_1E608(&lbl_1_bss_1E10[var_r30]); + fn_1_1EB20(&lbl_1_bss_1E10[var_r30]); + fn_1_1E608(&lbl_1_bss_1E10[lbl_1_bss_1E10[var_r30].unk70[1]]); + var_r24 = lbl_1_bss_1E10[lbl_1_bss_1E10[var_r30].unk70[1]].unk70[1]; + lbl_1_bss_1E10[lbl_1_bss_1E10[var_r30].unk70[1]].unk70[0] = 0; + } + else if (var_r29 != 4) { + if (var_r29 == 0) { + fn_1_1EB20(&lbl_1_bss_1E10[var_r30]); + } + break; + } + } + var_r21 = -1; + } + fn_1_25E74(0); + fn_1_25584(temp_r22); + if (var_r29 == 0) { + var_r28 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 0) { + var_r28++; + } + } + if (var_r28 != 0) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + } + return var_r29; +} + +s32 fn_1_21CA4(void) +{ + s32 sp8; + s32 temp_r27; + s32 var_r22; + s32 var_r28; + s32 i; + s32 j; + + sp8 = 0; + temp_r27 = fn_1_2530C(0, 0, 0); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk18, 0xF, 1); + fn_1_25838(temp_r27, MAKE_MESSID(40, 14), -1, -1); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + fn_1_243B0(); + fn_1_25CA8(MAKE_MESSID(26, 33)); + fn_1_1EBE8(); + lbl_1_bss_2050.unk04 = (void *)fn_1_1EE58; + var_r22 = 99; + while (TRUE) { + fn_1_243B0(); + if (var_r22 != lbl_1_bss_2050.unk1C[0]) { + var_r22 = lbl_1_bss_2050.unk1C[0]; + HuWinInsertMesSet(temp_r27, MAKE_MESSID(27, 52 + lbl_1_bss_2050.unk1C[0]), 0); + fn_1_25838(temp_r27, MAKE_MESSID(27, 51), -1, -999); + } + if (lbl_1_bss_2050.unk1C[3] != 0) { + continue; + } + if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x100) { + var_r28 = 5; + HuAudFXPlay(2); + break; + } + else if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x200) { + var_r28 = -99; + HuAudFXPlay(3); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (lbl_1_bss_1E10[i].unk60 == 1) { + lbl_1_bss_1E10[i].unk70[j] = 0; + lbl_1_bss_1E10[i].unk80[j] = 0; + fn_1_1EB20(&lbl_1_bss_1E10[i]); + lbl_1_bss_1E10[i].unk68 = 0; + } + } + } + break; + } + } + fn_1_1ED20(); + lbl_1_bss_2050.unk04 = NULL; + fn_1_25E74(0); + fn_1_25584(temp_r27); + if (var_r28 == -99) { + j = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 1) { + j++; + } + } + if (j == 0) { + var_r28 = 1; + } + else { + var_r28 = 2; + } + } + return var_r28; +} + +s32 fn_1_2228C(s32 arg0) +{ + s32 sp8; + s32 temp_r30; + s32 var_r26; + s32 var_r27; + s32 i; + s32 j; + + sp8 = 0; + temp_r30 = fn_1_2530C(0, 0, 0); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk18, 0xF, 1); + fn_1_25838(temp_r30, MAKE_MESSID(40, 13), -1, -1); + fn_1_25EC8(lbl_1_bss_3C4->unkC, lbl_1_bss_3C4->unk10, 0xF, 1); + fn_1_243B0(); + fn_1_25CA8(MAKE_MESSID(26, 33)); + fn_1_1FC44(0); + lbl_1_bss_2050.unk04 = (void *)fn_1_1F32C; + var_r26 = 99; + while (TRUE) { + fn_1_243B0(); + if (var_r26 != lbl_1_bss_2050.unk1C[0]) { + var_r26 = lbl_1_bss_2050.unk1C[0]; + switch (lbl_1_bss_2050.unk1C[0]) { + case 1: + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 30), 0); + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 31), 1); + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 32), 2); + break; + case 2: + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 31), 0); + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 30), 1); + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 32), 2); + break; + case 3: + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 32), 0); + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 30), 1); + HuWinInsertMesSet(temp_r30, MAKE_MESSID(27, 31), 2); + break; + } + fn_1_25838(temp_r30, MAKE_MESSID(27, 50), -1, -999); + } + if (lbl_1_bss_2050.unk1C[3] != 0) { + continue; + } + if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x100) { + var_r27 = 5; + HuAudFXPlay(2); + break; + } + else if (HuPadBtnDown[lbl_1_bss_1E10->unk6C] & 0x200) { + var_r27 = -99; + HuAudFXPlay(3); + fn_1_1FC44(1); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (lbl_1_bss_1E10[i].unk60 == 1) { + lbl_1_bss_1E10[i].unk70[j] = 0; + lbl_1_bss_1E10[i].unk80[j] = 0; + fn_1_1EB20(&lbl_1_bss_1E10[i]); + } + } + } + break; + } + } + fn_1_1FC44(2); + lbl_1_bss_2050.unk04 = NULL; + fn_1_25E74(0); + fn_1_25584(temp_r30); + if (var_r27 == -99) { + j = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1E10[i].unk60 == 1) { + j++; + } + } + if (j == 0) { + var_r27 = 1; + } + else { + var_r27 = 2; + } + } + return var_r27; +} + +void fn_1_22728(void) +{ + s32 i; + s32 j; + + fn_1_1BECC(); + fn_1_1FABC(); + if (lbl_1_bss_3C4->unk1C == 0 || lbl_1_bss_3C4->unk1C == 3) { + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (lbl_1_bss_1E10[i].unk60 == 1) { + lbl_1_bss_1E10[i].unk70[j] = 0; + lbl_1_bss_1E10[i].unk80[j] = 0; + fn_1_1EB20(&lbl_1_bss_1E10[i]); + } + } + } + } +} + +void fn_1_22C08(omObjData *arg0) +{ + float var_f31; + s32 i; + + for (i = 1; i < 10; i++) { + if (CZoom <= 1200.0f || lbl_1_bss_3CC[i].unk1C == -200.0f) { + if (lbl_1_bss_3CC[i].unk1C >= -100.0f) { + lbl_1_bss_3CC[i].unk00 = 0; + lbl_1_bss_3CC[i].unk1C = -200.0f; + lbl_1_bss_3CC[i].unk24 = -99.0f; + lbl_1_bss_3CC[i].unk04 = rand8() + 180; + } + var_f31 = fn_1_2412C(lbl_1_bss_3CC[i].unk10, 1000.0f, lbl_1_bss_3CC[i].unk00++, lbl_1_bss_3CC[i].unk04); + Hu3DData[arg0->model[i]].pos.y = fn_1_2410C(Hu3DData[arg0->model[i]].pos.y, var_f31, 30.0f); + Hu3DData[arg0->model[i]].pos.x + = fn_1_2410C(Hu3DData[arg0->model[i]].pos.x, lbl_1_bss_3CC[i].unk18 + Hu3DData[arg0->model[i]].pos.x, 5.0f); + } + } + for (i = 10; i < 140; i++) { + Hu3DData[arg0->model[i]].pos.y = fn_1_242CC(lbl_1_bss_3CC[i].unk10, lbl_1_bss_3CC[i].unk1C, lbl_1_bss_3CC[i].unk00++, lbl_1_bss_3CC[i].unk04); + if (lbl_1_bss_3CC[i].unk00 >= lbl_1_bss_3CC[i].unk04) { + lbl_1_bss_3CC[i].unk00 = 0; + } + } + for (i = 10; i < 140; i++) { + if (0.0f == lbl_1_bss_3CC[i].unk24 && lbl_1_bss_3CC[i].unk14 > CZoom - 400.0f && lbl_1_bss_3CC[i].unk0C < 200.0f + && lbl_1_bss_3CC[i].unk0C > -200.0f) { + if (0.0f >= lbl_1_bss_3CC[i].unk0C) { + lbl_1_bss_3CC[i].unk24 = -300.0f; + } + else { + lbl_1_bss_3CC[i].unk24 = 300.0f; + } + } + if (-99.0f != lbl_1_bss_3CC[i].unk24) { + Hu3DData[arg0->model[i]].pos.x = fn_1_2410C(Hu3DData[arg0->model[i]].pos.x, lbl_1_bss_3CC[i].unk0C + lbl_1_bss_3CC[i].unk24, 30.0f); + } + } + if (arg0->work[0] == 1) { + for (i = 10; i < 140; i++) { + Hu3DModelAttrSet(arg0->model[i], HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_231F0(omObjData *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + s32 var_r28; + s32 i; + s32 j; + + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MGMODE, 141)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MGMODE, 142)); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MGMODE, 143)); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MGMODE, 144)); + Hu3DModelLayerSet(arg0->model[1], 3); + Hu3DModelLayerSet(arg0->model[2], 3); + Hu3DModelLayerSet(arg0->model[3], 3); + Hu3DModelLayerSet(arg0->model[4], 3); + for (i = 5; i < 140; i++) { + arg0->model[i] = Hu3DModelLink(arg0->model[rand8() % 4 + 1]); + } + for (i = 1; i < 10; i++) { + var_r28 = 0; + do { + temp_f31 = Hu3DData[arg0->model[i]].pos.x = 50.0f + rand8(); + if (i % 2 != 0) { + lbl_1_bss_3CC[i].unk0C = Hu3DData[arg0->model[i]].pos.x *= -1.0f; + } + temp_f30 = Hu3DData[arg0->model[i]].pos.y = 50.0f + rand8(); + temp_f29 = Hu3DData[arg0->model[i]].pos.z = 750.0f + i * 5; + for (j = 1; j < 10; j++) { + if (i != j && lbl_1_bss_3CC[j].unk08 == 1) { + temp_f31 = Hu3DData[arg0->model[i]].pos.x - Hu3DData[arg0->model[j]].pos.x; + temp_f30 = Hu3DData[arg0->model[i]].pos.y - Hu3DData[arg0->model[j]].pos.y; + temp_f29 = Hu3DData[arg0->model[i]].pos.z - Hu3DData[arg0->model[j]].pos.z; + if (sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30) <= 100.0f) { + break; + } + } + } + var_r28++; + } while (j != 10 && var_r28 < 50); + lbl_1_bss_3CC[i].unk08 = 1; + lbl_1_bss_3CC[i].unk0C = lbl_1_bss_3CC[i].unk18 = Hu3DData[arg0->model[i]].pos.x; + lbl_1_bss_3CC[i].unk10 = lbl_1_bss_3CC[i].unk1C = Hu3DData[arg0->model[i]].pos.y; + lbl_1_bss_3CC[i].unk14 = lbl_1_bss_3CC[i].unk20 = Hu3DData[arg0->model[i]].pos.z; + lbl_1_bss_3CC[i].unk18 = 0.025f * lbl_1_bss_3CC[i].unk0C; + Hu3DModelScaleSet(arg0->model[i], 0.5f, 0.5f, 0.5f); + Hu3DModelLayerSet(arg0->model[i], 3); + } + for (i = 10; i < 140; i++) { + var_r28 = 0; + do { + temp_f31 = Hu3DData[arg0->model[i]].pos.x = rand8() * 2; + if (i % 2 != 0) { + Hu3DData[arg0->model[i]].pos.x *= -1.0f; + } + temp_f30 = Hu3DData[arg0->model[i]].pos.y = rand8() * 2 + 125; + temp_f29 = Hu3DData[arg0->model[i]].pos.z = 800.0f + i * 10; + for (j = 10; j < 140; j++) { + if (i != j && lbl_1_bss_3CC[j].unk08 == 1) { + temp_f31 = Hu3DData[arg0->model[i]].pos.x - Hu3DData[arg0->model[j]].pos.x; + temp_f30 = Hu3DData[arg0->model[i]].pos.y - Hu3DData[arg0->model[j]].pos.y; + temp_f29 = Hu3DData[arg0->model[i]].pos.z - Hu3DData[arg0->model[j]].pos.z; + if (sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30 + temp_f29 * temp_f29) <= 100.0f) { + break; + } + } + } + var_r28++; + } while (j != 140 && var_r28 < 50); + lbl_1_bss_3CC[i].unk08 = 1; + Hu3DModelLayerSet(arg0->model[i], 3); + lbl_1_bss_3CC[i].unk0C = lbl_1_bss_3CC[i].unk18 = Hu3DData[arg0->model[i]].pos.x; + lbl_1_bss_3CC[i].unk10 = lbl_1_bss_3CC[i].unk1C = Hu3DData[arg0->model[i]].pos.y; + lbl_1_bss_3CC[i].unk14 = lbl_1_bss_3CC[i].unk20 = Hu3DData[arg0->model[i]].pos.z; + if (rand8() % 2 == 0) { + lbl_1_bss_3CC[i].unk18 += rand8() % 30; + } + else { + lbl_1_bss_3CC[i].unk18 -= rand8() % 30; + } + lbl_1_bss_3CC[i].unk1C += rand8() % 30 + 10; + if (rand8() % 2 == 0) { + lbl_1_bss_3CC[i].unk20 += rand8() % 30; + } + else { + lbl_1_bss_3CC[i].unk20 -= rand8() % 30; + } + lbl_1_bss_3CC[i].unk24 = lbl_1_bss_3CC[i].unk28 = lbl_1_bss_3CC[i].unk2C = 0.0f; + lbl_1_bss_3CC[i].unk04 = 360 + (rand8() * 2) % 360; + lbl_1_bss_3CC[i].unk00 = rand8(); + } + for (i = 1; i < 140; i++) { + Hu3DModelAttrSet(arg0->model[i], HU3D_ATTR_DISPOFF); + } + arg0->func = fn_1_22C08; +} + +float fn_1_240E4(float arg0, float arg1, float arg2, float arg3) +{ + if (arg3 <= arg2) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_2410C(float arg0, float arg1, float arg2) +{ + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_2412C(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_24204(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_242CC(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_24388(s32 arg0) +{ + HuPrcSleep(arg0); +} + +void fn_1_243B0(void) +{ + HuPrcVSleep(); +} + +void fn_1_243D0(void) +{ + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_243E4(void) +{ + s32 var_r31; + + var_r31 = 0; + var_r31 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightPosAimSet(var_r31, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_244C0(s32 arg0) +{ + Vec sp24 = { 0.0f, 3000.0f, 800.0f }; + Vec sp18 = { 0.0f, 0.0f, 640.0f }; + Vec spC = { 0.0f, 1.0f, 0.0f }; + + if (arg0 == 3) { + sp24.x = sp18.x = 1200.0f; + } + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp24, &spC, &sp18); +} + +void fn_1_245A8(void) +{ + HuWinInit(1); +} + +void fn_1_245CC(s32 arg0, float arg1, float arg2, s32 arg3) +{ + WindowData *temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f27; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + var_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (var_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + var_f31 = temp_f29 + temp_f25 - 4.0f; + } + else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } + else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (var_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + var_f30 = temp_f28 + temp_f24 - 4.0f; + } + else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } + else { + var_f30 = var_f30 - 2.0f; + } + } + if (arg3 != 0) { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = var_f31; + var_f21 = temp_f27; + var_f22 = var_f30; + var_f20 = temp_f26; + } + else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_24204(var_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_24204(temp_f27, 1.0f, i, 10.0f); + } + else { + var_f22 = fn_1_24204(var_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_24204(temp_f26, 1.0f, i - 10, 5.0f); + } + } + else { + if (i <= 10) { + var_f22 = fn_1_24204(temp_f28, var_f30, i, 10.0f); + var_f20 = fn_1_24204(1.0f, temp_f26, i, 10.0f); + } + else { + var_f23 = fn_1_24204(temp_f29, var_f31, i - 10, 5.0f); + var_f21 = fn_1_24204(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } + else { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_25014(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg4, float arg5, s32 arg6, s32 arg7, s32 arg8) +{ + float sp14[2]; + s32 temp_r30; + + if (arg6 % 2 == 0) { + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + arg1 = 445.0f - arg3; + switch (arg0) { + case -1: + arg0 = 16; + break; + case 0: + arg0 = 1.0f + (576.0f - arg2) / 2; + break; + case 1: + arg0 = 556.0f - arg2; + break; + } + } + else { + HuWinMesMaxSizeGet(1, sp14, arg8); + arg2 = sp14[0]; + arg3 = sp14[1]; + arg0 = 556.0f - arg2; + arg1 = 445.0f - arg3; + } + temp_r30 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + if (arg6 == 1) { + HuWinAttrSet(temp_r30, 0x10); + } + HuWinMesPalSet(temp_r30, 7, 0, 0, 0); + winData[temp_r30].active_pad = 1; + fn_1_245CC(temp_r30, arg4, arg5, 1); + return temp_r30; +} + +s32 fn_1_2530C(s32 arg0, s32 arg1, s32 arg2) +{ + return fn_1_25014(arg0, 0, 21, 2, 0.5f, 0.5f, 0, 0, 0); +} + +void fn_1_25524(s32 arg0, float arg1, float arg2) +{ + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_245CC(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_25584(s32 arg0) +{ + fn_1_25524(arg0, 0.5f, 0.5f); +} + +void fn_1_255EC(s32 arg0, s32 arg1) +{ + if (arg1 == -999 || arg1 == 0) { + return; + } + if (arg1 == -1000) { + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) == 1); + return; + } + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_2567C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + s32 i; + s32 temp_r28; + s32 var_r30; + + temp_r28 = 0; + var_r30 = 0; + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + for (i = 0; i < temp_r28; i++) { + var_r30 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r30 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r30 != 0) { + if (var_r30 == 1 && HuWinStatGet(arg0) != 1) { + var_r30 = 2; + } + else if (var_r30 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } + else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_255EC(arg0, -1); // The second arg could be any negative value different from -999 or -1000. + HuWinComKeyReset(); +} + +s32 fn_1_257B0(s32 arg0) +{ + s32 temp_r31; + + HuWinComKeyReset(); + temp_r31 = HuWinChoiceGet(arg0, 0); + HuWinComKeyReset(); + return temp_r31; +} + +void fn_1_257F8(s32 arg0, s32 arg1, s32 arg2) +{ + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_25838(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + if (arg3 == -999) { + HuWinMesSpeedSet(arg0, 0); + } + else { + HuWinMesSpeedSet(arg0, 1); + } + HuWinMesSet(arg0, arg1); + if (arg2 == -1) { + fn_1_255EC(arg0, arg3); + } + else { + fn_1_2567C(arg0, arg1, arg2, arg3); + } +} + +s32 fn_1_2592C(s32 arg0, s32 arg1, s32 arg2) +{ + s32 var_r25; + s32 temp_r27; + + var_r25 = 0; + temp_r27 = fn_1_25014(0, 0, 0, 0, 0.5f, 0.5f, arg1, 0, arg0); + HuWinMesSet(temp_r27, arg0); + var_r25 = fn_1_257B0(temp_r27); + fn_1_25524(temp_r27, 0.5f, 0.5f); + return var_r25; +} + +s32 fn_1_25CA8(s32 arg0) +{ + float sp8[2]; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + s32 var_r31; + + HuWinMesMaxSizeGet(1, sp8, arg0); + temp_f31 = sp8[0]; + temp_f30 = sp8[1]; + temp_f29 = (576.0f - temp_f31) / 2; + temp_f28 = 385.0f - temp_f30; + if (lbl_1_data_488 == -1) { + var_r31 = lbl_1_data_488 = HuWinExCreateStyled(temp_f29, temp_f28, temp_f31, temp_f30, -1, 1); + } + else { + fn_1_25E74(lbl_1_data_488); + var_r31 = lbl_1_data_488 = HuWinExCreateStyled(temp_f29, temp_f28, temp_f31, temp_f30, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_488, 0.0f); + HuWinMesSet(lbl_1_data_488, arg0); + HuWinMesSpeedSet(lbl_1_data_488, 0); + HuWinDispOn(lbl_1_data_488); + return lbl_1_data_488; +} + +void fn_1_25E74(s32 arg0) +{ + if (lbl_1_data_488 != -1) { + HuWinExCleanup(lbl_1_data_488); + lbl_1_data_488 = -1; + } +} + +void fn_1_25EC8(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + switch (arg3) { + case 0: + Hu3DMotionShiftSet(arg0, arg1, 0.0f, arg2, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0, arg1, 0.0f, arg2, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0, arg1, 0.0f, arg2, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_26004(s32 arg0, Vec arg1, float arg2, float arg3, float arg4, s32 arg5, s32 arg6) +{ + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + s32 var_r30; + s32 var_r29; + s32 i; + + var_r30 = 0; + var_r29 = 0; + sp40.x = Hu3DData[arg0].pos.x; + sp40.y = Hu3DData[arg0].pos.y; + sp40.z = Hu3DData[arg0].pos.z; + sp34.x = arg1.x; + sp34.y = arg1.y; + sp34.z = arg1.z; + sp1C.x = Hu3DData[arg0].rot.x; + sp1C.y = Hu3DData[arg0].rot.y; + sp1C.z = Hu3DData[arg0].rot.z; + sp10.x = 0.0f; + sp10.y = arg2; + sp10.z = 0.0f; + if (sp34.x - sp40.x >= 0.0f) { + var_r30 = 1; + } + else { + var_r30 = 0; + } + if (sp34.z - sp40.z >= 0.0f) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + while (arg5 != 0) { + HuPrcVSleep(); + sp28.y = -(atan2d(sp34.z - sp40.z, sp34.x - sp40.x) - 90.0); + if (sp28.y < 0.0f) { + sp28.y += 360.0f; + } + else if (sp28.y >= 360.0f) { + sp28.y -= 360.0f; + } + if (arg6 != 0) { + if (sp28.y >= 180.0f) { + if (sp1C.y - sp28.y >= 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp28.y < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if (sp1C.y - sp28.y > 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp28.y <= -180.0f) { + sp1C.y += 360.0f; + } + } + } + sp4C.x = sp40.x += arg3 * sind(sp28.y); + sp4C.z = sp40.z += arg3 * cosd(sp28.y); + if (var_r30 == 1) { + if (sp40.x >= sp34.x) { + sp4C.x = sp40.x = sp34.x; + var_r30 = 2; + } + } + else if (var_r30 == 0) { + if (sp40.x <= sp34.x) { + sp4C.x = sp40.x = sp34.x; + var_r30 = 2; + } + } + if (var_r29 == 1) { + if (sp40.z >= sp34.z) { + sp4C.z = sp40.z = sp34.z; + var_r29 = 2; + } + } + else if (var_r29 == 0) { + if (sp40.z <= sp34.z) { + sp4C.z = sp40.z = sp34.z; + var_r29 = 2; + } + } + if (arg6 != 0) { + sp1C.y = fn_1_2410C(sp1C.y, sp28.y, arg4); + } + Hu3DModelPosSet(arg0, sp4C.x, sp40.y, sp4C.z); + Hu3DModelRotSet(arg0, sp1C.x, sp1C.y, sp1C.z); + if (var_r30 == 2 && var_r29 == 2) { + break; + } + } + sp1C.y = Hu3DData[arg0].rot.y; + if (arg6 != 0) { + for (i = 0; i <= arg4; i++) { + HuPrcVSleep(); + if (sp10.y >= 180.0f) { + if (sp1C.y - sp10.y >= 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp10.y < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if (sp1C.y - sp10.y > 180.0f) { + sp1C.y -= 360.0f; + } + if (sp1C.y - sp10.y <= -180.0f) { + sp1C.y += 360.0f; + } + } + sp10.z = fn_1_240E4(sp1C.y, sp10.y, i, arg4); + Hu3DModelRotSet(arg0, sp1C.x, sp10.z, sp1C.z); + } + } +} + +void fn_1_26790(s32 arg0, s32 arg1, float arg2, float arg3) +{ + HuSprPosSet(arg0, arg1, arg2, arg3 + 0.5f); +} diff --git a/src/REL/mgmodedll/mgmode.c b/src/REL/mgmodedll/mgmode.c index 763a8cd3..4e078f7d 100644 --- a/src/REL/mgmodedll/mgmode.c +++ b/src/REL/mgmodedll/mgmode.c @@ -1,29 +1,26 @@ #include "REL/mgmodedll.h" -#include "game/gamework_data.h" -#include "game/esprite.h" #include "game/audio.h" -#include "game/wipe.h" +#include "game/esprite.h" +#include "game/gamework_data.h" #include "game/saveload.h" +#include "game/wipe.h" -#include "rel_sqrt_consts.h" #include "ext_math.h" +#ifndef __MWERKS__ +#include "game/hsfex.h" +#endif + typedef struct camera_view_params { - Vec rot; - Vec pos; - float zoom; + Vec rot; + Vec pos; + float zoom; } CameraViewParams; -CameraViewParams lbl_1_data_0[1] = { - { - { -5, 0, 0 }, - { 0, 125, 0 }, - 1750 - } -}; +CameraViewParams lbl_1_data_0[1] = { { { -5, 0, 0 }, { 0, 125, 0 }, 1750 } }; -omObjData *lbl_1_bss_2DC; -Process *lbl_1_bss_2D8; +omObjData *outViewObj; +Process *objman; s32 lbl_1_bss_2D4; s32 lbl_1_bss_2D0; s16 lbl_1_bss_2CE; @@ -38,7 +35,7 @@ Vec lbl_1_bss_28C[2]; Vec lbl_1_bss_274[2]; float lbl_1_bss_26C[2]; StructBss8 lbl_1_bss_8; -s16 lbl_1_bss_4; +s16 mgModeEvtNo; s32 lbl_1_bss_0; void fn_1_464(void); @@ -46,43 +43,43 @@ void fn_1_54F4(void); void ObjectSetup(void) { - s32 glight; - - OSReport("******* MG ObjectSetup *********\n"); - lbl_1_bss_2D8 = omInitObjMan(50, 8192); - lbl_1_bss_28C[0].x = -70; - lbl_1_bss_28C[0].y = 0; - lbl_1_bss_28C[0].z = 0; - lbl_1_bss_274[0].x = 0; - lbl_1_bss_274[0].y = 130; - lbl_1_bss_274[0].z = -186; - lbl_1_bss_26C[0] = 1360; - lbl_1_bss_2C0 = lbl_1_bss_28C[0]; - lbl_1_bss_2B4 = lbl_1_bss_274[0]; - lbl_1_bss_2B0 = lbl_1_bss_26C[0]; - lbl_1_bss_2D0 = 0; - _ClearFlag(0x10000); - _ClearFlag(0x10008); - GWSystem.mg_type = -1; - GWSystem.player_curr = 0; - lbl_1_bss_4 = omovlevtno; - if(lbl_1_bss_4 == 0) { - mgGameStatBackup = GWGameStat; - } - lbl_1_bss_2CE = -1; - mgBoardHostEnableF = 1; - mgPracticeEnableF = 0; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 42, 20, 15000, 1.2f); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - glight = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); - Hu3DGLightInfinitytSet(glight); - HuPrcChildCreate(fn_1_464, 100, 12288, 0, lbl_1_bss_2D8); - HuPrcChildCreate(fn_1_54F4, 200, 4096, 0, lbl_1_bss_2D8); - lbl_1_bss_2DC = omAddObjEx(lbl_1_bss_2D8, 32730, 0, 0, -1, omOutView); - Hu3DBGColorSet(0, 0, 0); - HuWinInit(1); - fn_1_279FC(0); + s32 glight; + + OSReport("******* MG ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + lbl_1_bss_28C[0].x = -70; + lbl_1_bss_28C[0].y = 0; + lbl_1_bss_28C[0].z = 0; + lbl_1_bss_274[0].x = 0; + lbl_1_bss_274[0].y = 130; + lbl_1_bss_274[0].z = -186; + lbl_1_bss_26C[0] = 1360; + lbl_1_bss_2C0 = lbl_1_bss_28C[0]; + lbl_1_bss_2B4 = lbl_1_bss_274[0]; + lbl_1_bss_2B0 = lbl_1_bss_26C[0]; + lbl_1_bss_2D0 = 0; + _ClearFlag(0x10000); + _ClearFlag(0x10008); + GWSystem.mg_type = -1; + GWSystem.player_curr = 0; + mgModeEvtNo = omovlevtno; + if (mgModeEvtNo == 0) { + mgGameStatBackup = GWGameStat; + } + lbl_1_bss_2CE = -1; + mgBoardHostEnableF = 1; + mgPracticeEnableF = 0; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 42, 20, 15000, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + glight = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); + Hu3DGLightInfinitytSet(glight); + HuPrcChildCreate(fn_1_464, 100, 12288, 0, objman); + HuPrcChildCreate(fn_1_54F4, 200, 4096, 0, objman); + outViewObj = omAddObjEx(objman, 32730, 0, 0, -1, omOutView); + Hu3DBGColorSet(0, 0, 0); + HuWinInit(1); + fn_1_279FC(0); } void fn_1_52DC(void); @@ -91,44 +88,45 @@ void fn_1_6F8(void); void fn_1_464(void) { - s16 i; - fn_1_52DC(); - if(lbl_1_bss_4 == 0) { - HuAudSStreamPlay(12); - fn_1_19018(); - } else { - HuAudSeqPlay(44); - for(i=0; i<4; i++) { - lbl_1_bss_8.unk24[i].unk68 = GWPlayerCfg[i].character; - lbl_1_bss_8.unk24[i].unk60 = GWPlayerCfg[i].iscom; - lbl_1_bss_8.unk24[i].unk6C = GWPlayerCfg[i].pad_idx; - lbl_1_bss_8.unk24[i].unk64 = GWPlayerCfg[i].diff; - } - CZoom = 1600; - Center.x = Center.z = 0; - Center.y = 215; - CRot.x = 0; - CRot.y = CRot.z = 0; - if(lbl_1_bss_4 == 1 || lbl_1_bss_4 == 2 || lbl_1_bss_4 == 3 || lbl_1_bss_4 == 4) { - Hu3DModelPosSet(lbl_1_bss_2C80[5], 0, 0, 640); - Hu3DMotionSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6]); - Hu3DModelAttrSet(lbl_1_bss_2C80[5], 0x40000001); - HuPrcVSleep(); - } - } - fn_1_6F8(); - fn_1_2592C(0x1E0035, 3, 0); - fn_1_25584(lbl_1_bss_2CE); - while(1) { - HuPrcVSleep(); - } + s16 i; + fn_1_52DC(); + if (mgModeEvtNo == 0) { + HuAudSStreamPlay(12); + fn_1_19018(); + } + else { + HuAudSeqPlay(44); + for (i = 0; i < 4; i++) { + lbl_1_bss_8.unk24[i].unk68 = GWPlayerCfg[i].character; + lbl_1_bss_8.unk24[i].unk60 = GWPlayerCfg[i].iscom; + lbl_1_bss_8.unk24[i].unk6C = GWPlayerCfg[i].pad_idx; + lbl_1_bss_8.unk24[i].unk64 = GWPlayerCfg[i].diff; + } + CZoom = 1600; + Center.x = Center.z = 0; + Center.y = 215; + CRot.x = 0; + CRot.y = CRot.z = 0; + if (mgModeEvtNo == 1 || mgModeEvtNo == 2 || mgModeEvtNo == 3 || mgModeEvtNo == 4) { + Hu3DModelPosSet(lbl_1_bss_2C80[5], 0, 0, 640); + Hu3DMotionSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6]); + Hu3DModelAttrSet(lbl_1_bss_2C80[5], HU3D_MOTATTR_LOOP); + HuPrcVSleep(); + } + } + fn_1_6F8(); + fn_1_2592C(0x1E0035, 3, 0); + fn_1_25584(lbl_1_bss_2CE); + while (1) { + HuPrcVSleep(); + } } Vec lbl_1_data_40[4] = { - { 108, 190, 0 }, - { 228, 190, 0 }, - { 348, 190, 0 }, - { 468, 190, 0 }, + { 108, 190, 0 }, + { 228, 190, 0 }, + { 348, 190, 0 }, + { 468, 190, 0 }, }; void fn_1_DF0(void); @@ -140,104 +138,106 @@ void fn_1_4ADC(void); void fn_1_6F8(void) { - s16 i; - s16 time; - if(lbl_1_bss_4 == 1 || lbl_1_bss_4 == 2 || lbl_1_bss_4 == 3 || lbl_1_bss_4 == 4) { - lbl_1_bss_2A6 = 0; - goto freeplay; - } - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_2C80[9], 0); - for(time=0; time<=30; time++) { - for(i=0; i<4; i++) { - if(time > i*2 && time < (i*2)+20) { - float weight = (time-(i*2))/20.0; - Vec pos2D = lbl_1_data_40[i]; - Vec pos3D; - pos2D.z = 800; - pos2D.y -= (1.0-sind(weight*90.0f))*300.0; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - HuPrcVSleep(); - } - while(1) { - if(lbl_1_bss_2CE == -1) { - lbl_1_bss_2CE = fn_1_2530C(0, 0, 0); - } - HuWinPushKeySet(lbl_1_bss_2CE, PAD_BUTTON_A|PAD_BUTTON_B); - HuWinMesSpeedSet(lbl_1_bss_2CE, 1); - HuAudFXPlay(68); - fn_1_25838(lbl_1_bss_2CE, 0x280001, -1, -1); - lbl_1_bss_2CC = fn_1_25CA8(0x280018); - lbl_1_bss_2A6 = 0; - espPosSet(lbl_1_bss_2C2C[0], -20+lbl_1_data_40[lbl_1_bss_2A6].x, -10+lbl_1_data_40[lbl_1_bss_2A6].y); - espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - HuWinMesSpeedSet(lbl_1_bss_2CE, 0); - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6+0x280002, -1, -999); - while(1) { - s16 delta = 0; - if((HuPadDStkRep[0] & PAD_BUTTON_LEFT) && lbl_1_bss_2A6 > 0) { - delta = -1; - } else if((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) && lbl_1_bss_2A6 < 3) { - delta = 1; - } - if(delta != 0) { - HuAudFXPlay(0); - lbl_1_bss_2A6 += delta; - espPosSet(lbl_1_bss_2C2C[0], -20+lbl_1_data_40[lbl_1_bss_2A6].x, -10+lbl_1_data_40[lbl_1_bss_2A6].y); - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6+0x280002, -1, -999); - } - if(HuPadBtnDown[0] & PAD_BUTTON_A) { - HuAudFXPlay(2); - if(lbl_1_bss_2A6 != 2) { - break; - } - if(fn_1_487C() == 0) { - continue; - } - break; - } - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - s16 choice; - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - fn_1_25838(lbl_1_bss_2CE, 0x280006, -1, -1); - choice = HuWinChoiceGet(lbl_1_bss_2CE, 1); - if(choice != 0) { - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6+0x280002, -1, -999); - espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - continue; - } else { - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2D0 = 1; - while(1) { - HuPrcVSleep(); - } - } - } - HuPrcVSleep(); - } - fn_1_25E74(lbl_1_bss_2CC); - lbl_1_bss_4 = 0; - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - if(lbl_1_bss_2A6 == 0) { - freeplay: - fn_1_DF0(); - } else if(lbl_1_bss_2A6 == 1) { - fn_1_38D8(); - } else if(lbl_1_bss_2A6 == 2) { - fn_1_4010(); - } else if(lbl_1_bss_2A6 == 3) { - fn_1_4ADC(); - } - - } - - + s16 i; + s16 time; + if (mgModeEvtNo == 1 || mgModeEvtNo == 2 || mgModeEvtNo == 3 || mgModeEvtNo == 4) { + lbl_1_bss_2A6 = 0; + goto freeplay; + } + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_2C80[9], 0); + for (time = 0; time <= 30; time++) { + for (i = 0; i < 4; i++) { + if (time > i * 2 && time < (i * 2) + 20) { + float weight = (time - (i * 2)) / 20.0; + Vec pos2D = lbl_1_data_40[i]; + Vec pos3D; + pos2D.z = 800; + pos2D.y -= (1.0 - sind(weight * 90.0f)) * 300.0; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + HuPrcVSleep(); + } + while (1) { + if (lbl_1_bss_2CE == -1) { + lbl_1_bss_2CE = fn_1_2530C(0, 0, 0); + } + HuWinPushKeySet(lbl_1_bss_2CE, PAD_BUTTON_A | PAD_BUTTON_B); + HuWinMesSpeedSet(lbl_1_bss_2CE, 1); + HuAudFXPlay(68); + fn_1_25838(lbl_1_bss_2CE, 0x280001, -1, -1); + lbl_1_bss_2CC = fn_1_25CA8(0x280018); + lbl_1_bss_2A6 = 0; + espPosSet(lbl_1_bss_2C2C[0], -20 + lbl_1_data_40[lbl_1_bss_2A6].x, -10 + lbl_1_data_40[lbl_1_bss_2A6].y); + espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + HuWinMesSpeedSet(lbl_1_bss_2CE, 0); + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6 + 0x280002, -1, -999); + while (1) { + s16 delta = 0; + if ((HuPadDStkRep[0] & PAD_BUTTON_LEFT) && lbl_1_bss_2A6 > 0) { + delta = -1; + } + else if ((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) && lbl_1_bss_2A6 < 3) { + delta = 1; + } + if (delta != 0) { + HuAudFXPlay(0); + lbl_1_bss_2A6 += delta; + espPosSet(lbl_1_bss_2C2C[0], -20 + lbl_1_data_40[lbl_1_bss_2A6].x, -10 + lbl_1_data_40[lbl_1_bss_2A6].y); + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6 + 0x280002, -1, -999); + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + if (lbl_1_bss_2A6 != 2) { + break; + } + if (fn_1_487C() == 0) { + continue; + } + break; + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + s16 choice; + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + fn_1_25838(lbl_1_bss_2CE, 0x280006, -1, -1); + choice = HuWinChoiceGet(lbl_1_bss_2CE, 1); + if (choice != 0) { + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A6 + 0x280002, -1, -999); + espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + continue; + } + else { + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2D0 = 1; + while (1) { + HuPrcVSleep(); + } + } + } + HuPrcVSleep(); + } + fn_1_25E74(lbl_1_bss_2CC); + mgModeEvtNo = 0; + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_2A6 == 0) { + freeplay: + fn_1_DF0(); + } + else if (lbl_1_bss_2A6 == 1) { + fn_1_38D8(); + } + else if (lbl_1_bss_2A6 == 2) { + fn_1_4010(); + } + else if (lbl_1_bss_2A6 == 3) { + fn_1_4ADC(); + } + } } s32 fn_1_1B0C(void); @@ -247,1094 +247,1110 @@ s32 fn_1_3150(void); void fn_1_DF0(void) { - s16 exitF = 0; - s16 time; - s16 i; - ModelData *modelP; - Vec pos2D; - Vec pos3D; - - Vec posModel; - float weight; - - if(lbl_1_bss_4 == 1) { - lbl_1_bss_2A4 = 0; - goto freeplay; - } - if(lbl_1_bss_4 == 2) { - lbl_1_bss_2A4 = 1; - goto teamplay; - } - if(lbl_1_bss_4 == 3) { - lbl_1_bss_2A4 = 2; - goto battle; - } - if(lbl_1_bss_4 == 4) { - lbl_1_bss_2A4 = 3; - goto tictactoe; - } - pos2D.x = 168; - pos2D.y = 190; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(time=0; time<=30; time++) { - for(i=1; i<4; i++) { - if(time > i*2 && time < (i*2)+10) { - Vec pos; - weight = (time-(i*2))/10.0; - pos = lbl_1_data_40[i]; - pos.z = 800; - pos.x += (1.0-cosd(weight*90.0f))*500.0; - Hu3D2Dto3D(&pos, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - if(time > 10) { - weight = (time-10)/20.0; - VECScale(&pos2D, &pos3D, sind(weight*90.0f)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - } - if(time == 20) { - HuAudFXPlay(2173); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000006); - } - HuPrcVSleep(); - } - while(Hu3DMotionEndCheck(lbl_1_bss_2C80[9]) == 0) { - HuPrcVSleep(); - } - while(1) { - HuWinMesSpeedSet(lbl_1_bss_2CE, 1); - HuAudFXPlay(68); - fn_1_25838(lbl_1_bss_2CE, 0x280007, -1, -1); - lbl_1_bss_2CC = fn_1_25CA8(0x1A0020); - fn_1_25838(lbl_1_bss_2CE, 0x280008, -1, -999); - espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - lbl_1_bss_2A4 = 0; - espPosSet(lbl_1_bss_2C2C[0], -20+(168.0f+(lbl_1_bss_2A4*80)), 180); - while(1) { - s16 delta = 0; - if((HuPadDStkRep[0] & PAD_BUTTON_LEFT) && lbl_1_bss_2A4 > 0) { - delta = -1; - } else if((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) && lbl_1_bss_2A4 < 3) { - delta = 1; - } - if(delta != 0) { - HuAudFXPlay(0); - lbl_1_bss_2A4 += delta; - espPosSet(lbl_1_bss_2C2C[0], -20+(168.0f+(lbl_1_bss_2A4*80)), 180); - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4+0x280008, -1, -999); - } - if(HuPadBtnDown[0] & PAD_BUTTON_A) { - HuAudFXPlay(2); - if(lbl_1_bss_2A4 == 0 && lbl_1_bss_20AC[0] == 0 && lbl_1_bss_20AC[1] == 0 && lbl_1_bss_20AC[2] == 0 && lbl_1_bss_20AC[3] == 0 && lbl_1_bss_20AC[4] == 0) { - fn_1_25838(lbl_1_bss_2CE, 0x280031, -1, -1); - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4+0x280008, -1, -999); - continue; - } - if(lbl_1_bss_2A4 == 2 && lbl_1_bss_20AC[0] == 0 && lbl_1_bss_20AC[1] == 0 && lbl_1_bss_20AC[2] == 0 && lbl_1_bss_20AC[4] == 0) { - fn_1_25838(lbl_1_bss_2CE, 0x280033, -1, -1); - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4+0x280008, -1, -999); - continue; - } - if((lbl_1_bss_2A4 == 1 || lbl_1_bss_2A4 == 3) && lbl_1_bss_20AC[2] == 0) { - if(lbl_1_bss_2A4 == 1) { - fn_1_25838(lbl_1_bss_2CE, 0x280032, -1, -1); - } else { - fn_1_25838(lbl_1_bss_2CE, 0x28002F, -1, -1); - } - fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4+0x280008, -1, -999); - continue; - } - break; - } - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - HuAudFXPlay(3); - exitF = 1; - break; - } - HuPrcVSleep(); - } - fn_1_25E74(lbl_1_bss_2CC); - if(exitF != 0) { - break; - } - if(lbl_1_bss_2A4 == 0) { - freeplay: - fn_1_1B0C(); - } else if(lbl_1_bss_2A4 == 1) { - teamplay: - fn_1_21C4(); - } else if(lbl_1_bss_2A4 == 2) { - battle: - fn_1_2940(); - } else if(lbl_1_bss_2A4 == 3) { - tictactoe: - fn_1_3150(); - } - if(lbl_1_bss_2CE == -1) { - lbl_1_bss_2CE = fn_1_2530C(0, 0, 0); - } - HuWinPushKeySet(lbl_1_bss_2CE, PAD_BUTTON_A|PAD_BUTTON_B); - } - lbl_1_bss_4 = 0; - pos2D = lbl_1_data_40[0]; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000004); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - HuAudFXPlay(2174); - for(time=0; time<=20; time++) { - VECScale(&pos2D, &pos3D, sind(time*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - HuPrcVSleep(); - } - for(time=0; time<=20; time++) { - for(i=1; i<4; i++) { - if(time > i*2 && time < (i*2)+10) { - weight = (time-(i*2))/10.0; - pos2D = lbl_1_data_40[i]; - pos2D.z = 800; - pos2D.x += (1.0-sind(weight*90.0f))*500.0; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - HuPrcVSleep(); - } + s16 exitF = 0; + s16 time; + s16 i; + ModelData *modelP; + Vec pos2D; + Vec pos3D; + + Vec posModel; + float weight; + + if (mgModeEvtNo == 1) { + lbl_1_bss_2A4 = 0; + goto freeplay; + } + if (mgModeEvtNo == 2) { + lbl_1_bss_2A4 = 1; + goto teamplay; + } + if (mgModeEvtNo == 3) { + lbl_1_bss_2A4 = 2; + goto battle; + } + if (mgModeEvtNo == 4) { + lbl_1_bss_2A4 = 3; + goto tictactoe; + } + pos2D.x = 168; + pos2D.y = 190; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (time = 0; time <= 30; time++) { + for (i = 1; i < 4; i++) { + if (time > i * 2 && time < (i * 2) + 10) { + Vec pos; + weight = (time - (i * 2)) / 10.0; + pos = lbl_1_data_40[i]; + pos.z = 800; + pos.x += (1.0 - cosd(weight * 90.0f)) * 500.0; + Hu3D2Dto3D(&pos, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + if (time > 10) { + weight = (time - 10) / 20.0; + VECScale(&pos2D, &pos3D, sind(weight * 90.0f)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + } + if (time == 20) { + HuAudFXPlay(2173); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + } + HuPrcVSleep(); + } + while (Hu3DMotionEndCheck(lbl_1_bss_2C80[9]) == 0) { + HuPrcVSleep(); + } + while (1) { + HuWinMesSpeedSet(lbl_1_bss_2CE, 1); + HuAudFXPlay(68); + fn_1_25838(lbl_1_bss_2CE, 0x280007, -1, -1); + lbl_1_bss_2CC = fn_1_25CA8(0x1A0020); + fn_1_25838(lbl_1_bss_2CE, 0x280008, -1, -999); + espAttrReset(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + lbl_1_bss_2A4 = 0; + espPosSet(lbl_1_bss_2C2C[0], -20 + (168.0f + (lbl_1_bss_2A4 * 80)), 180); + while (1) { + s16 delta = 0; + if ((HuPadDStkRep[0] & PAD_BUTTON_LEFT) && lbl_1_bss_2A4 > 0) { + delta = -1; + } + else if ((HuPadDStkRep[0] & PAD_BUTTON_RIGHT) && lbl_1_bss_2A4 < 3) { + delta = 1; + } + if (delta != 0) { + HuAudFXPlay(0); + lbl_1_bss_2A4 += delta; + espPosSet(lbl_1_bss_2C2C[0], -20 + (168.0f + (lbl_1_bss_2A4 * 80)), 180); + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999); + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + if (lbl_1_bss_2A4 == 0 && lbl_1_bss_20AC[0] == 0 && lbl_1_bss_20AC[1] == 0 && lbl_1_bss_20AC[2] == 0 && lbl_1_bss_20AC[3] == 0 + && lbl_1_bss_20AC[4] == 0) { + fn_1_25838(lbl_1_bss_2CE, 0x280031, -1, -1); + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999); + continue; + } + if (lbl_1_bss_2A4 == 2 && lbl_1_bss_20AC[0] == 0 && lbl_1_bss_20AC[1] == 0 && lbl_1_bss_20AC[2] == 0 && lbl_1_bss_20AC[4] == 0) { + fn_1_25838(lbl_1_bss_2CE, 0x280033, -1, -1); + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999); + continue; + } + if ((lbl_1_bss_2A4 == 1 || lbl_1_bss_2A4 == 3) && lbl_1_bss_20AC[2] == 0) { + if (lbl_1_bss_2A4 == 1) { + fn_1_25838(lbl_1_bss_2CE, 0x280032, -1, -1); + } + else { + fn_1_25838(lbl_1_bss_2CE, 0x28002F, -1, -1); + } + fn_1_25838(lbl_1_bss_2CE, lbl_1_bss_2A4 + 0x280008, -1, -999); + continue; + } + break; + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + exitF = 1; + break; + } + HuPrcVSleep(); + } + fn_1_25E74(lbl_1_bss_2CC); + if (exitF != 0) { + break; + } + if (lbl_1_bss_2A4 == 0) { + freeplay: + fn_1_1B0C(); + } + else if (lbl_1_bss_2A4 == 1) { + teamplay: + fn_1_21C4(); + } + else if (lbl_1_bss_2A4 == 2) { + battle: + fn_1_2940(); + } + else if (lbl_1_bss_2A4 == 3) { + tictactoe: + fn_1_3150(); + } + if (lbl_1_bss_2CE == -1) { + lbl_1_bss_2CE = fn_1_2530C(0, 0, 0); + } + HuWinPushKeySet(lbl_1_bss_2CE, PAD_BUTTON_A | PAD_BUTTON_B); + } + mgModeEvtNo = 0; + pos2D = lbl_1_data_40[0]; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + HuAudFXPlay(2174); + for (time = 0; time <= 20; time++) { + VECScale(&pos2D, &pos3D, sind(time * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + HuPrcVSleep(); + } + for (time = 0; time <= 20; time++) { + for (i = 1; i < 4; i++) { + if (time > i * 2 && time < (i * 2) + 10) { + weight = (time - (i * 2)) / 10.0; + pos2D = lbl_1_data_40[i]; + pos2D.z = 800; + pos2D.x += (1.0 - sind(weight * 90.0f)) * 500.0; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + HuPrcVSleep(); + } } s32 fn_1_1B0C(void) { - Vec pos2D; - Vec posModel; - Vec pos3D; - s16 i; - ModelData *modelP; - s16 temp_r29 = 0; - - if(lbl_1_bss_4 == 1) { - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 0, 0); - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000002); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 1); - } else { - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000004); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000002); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - HuAudFXPlay(2174); - HuPrcSleep(40); - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(i=0; i<=20; i++) { - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], -90.0*(i/20.0), 0, 0); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } - charsel: - if(fn_1_194C8(temp_r29) == 0) { - goto exit; - } - temp_r29 = 4; - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; - GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; - GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; - } - } - mgPracticeEnableF = 1; - if(fn_1_6D28()) { - lbl_1_bss_4 = 0; - goto charsel; - } - exit: - mgPracticeEnableF = 0; - lbl_1_bss_4 = 0; - pos2D.x = 168; - pos2D.y = 190; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000006); - for(i=0; i<=20; i++) { - if(i == 10) { - HuAudFXPlay(2173); - } - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], -90.0*(1-(i/20.0)), 0, 0); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } + Vec pos2D; + Vec posModel; + Vec pos3D; + s16 i; + ModelData *modelP; + s16 temp_r29 = 0; + + if (mgModeEvtNo == 1) { + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 0, 0); + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + HuAudFXPlay(2174); + HuPrcSleep(40); + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (i = 0; i <= 20; i++) { + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], -90.0 * (i / 20.0), 0, 0); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } + charsel: + if (fn_1_194C8(temp_r29) == 0) { + goto exit; + } + temp_r29 = 4; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; + GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; + GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; + } + } + mgPracticeEnableF = 1; + if (fn_1_6D28()) { + mgModeEvtNo = 0; + goto charsel; + } +exit: + mgPracticeEnableF = 0; + mgModeEvtNo = 0; + pos2D.x = 168; + pos2D.y = 190; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + for (i = 0; i <= 20; i++) { + if (i == 10) { + HuAudFXPlay(2173); + } + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], -90.0 * (1 - (i / 20.0)), 0, 0); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } } s32 fn_1_21C4(void) { - Vec pos2D; - Vec posModel; - Vec pos3D; - s16 i; - ModelData *modelP; - s16 temp_r29 = 1; - if(lbl_1_bss_4 == 2) { - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90, 90); - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000002); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 1); - } else { - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000004); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000002); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - HuAudFXPlay(2174); - HuPrcSleep(40); - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(i=0; i<=20; i++) { - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90.0*(i/20.0), 90.0*(i/20.0)); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } - charsel: - if(fn_1_194C8(temp_r29) == 0) { - goto exit; - } - temp_r29 = 4; - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; - GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C; - GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; - GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; - - } - } - mgPracticeEnableF = 1; - if(fn_1_6D28()) { - lbl_1_bss_4 = 0; - goto charsel; - } - exit: - mgPracticeEnableF = 0; - lbl_1_bss_4 = 0; - pos2D.x = 168; - pos2D.y = 190; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000006); - for(i=0; i<=20; i++) { - if(i == 10) { - HuAudFXPlay(2173); - } - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90.0*(1.0-(i/20.0)), 90.0*(1.0-(i/20.0))); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } + Vec pos2D; + Vec posModel; + Vec pos3D; + s16 i; + ModelData *modelP; + s16 temp_r29 = 1; + if (mgModeEvtNo == 2) { + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90, 90); + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + HuAudFXPlay(2174); + HuPrcSleep(40); + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (i = 0; i <= 20; i++) { + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90.0 * (i / 20.0), 90.0 * (i / 20.0)); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } + charsel: + if (fn_1_194C8(temp_r29) == 0) { + goto exit; + } + temp_r29 = 4; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; + GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C; + GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; + GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; + } + } + mgPracticeEnableF = 1; + if (fn_1_6D28()) { + mgModeEvtNo = 0; + goto charsel; + } +exit: + mgPracticeEnableF = 0; + mgModeEvtNo = 0; + pos2D.x = 168; + pos2D.y = 190; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + for (i = 0; i <= 20; i++) { + if (i == 10) { + HuAudFXPlay(2173); + } + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 0, -90.0 * (1.0 - (i / 20.0)), 90.0 * (1.0 - (i / 20.0))); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } } s32 fn_1_2940(void) { - Vec pos2D; - Vec posModel; - Vec pos3D; - s16 temp_r29 = 2; - s16 i; - ModelData *modelP; - for(i=0; i<4; i++) { - Hu3DModelLayerSet(lbl_1_bss_2C80[i+9], 2); - } - if(lbl_1_bss_4 == 3) { - OSReport("Eliminate Play STart\n"); - pos2D.x = 50; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 180, 0); - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000002); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 1); - } else { - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000004); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000002); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - HuAudFXPlay(2174); - HuPrcSleep(40); - pos2D.x = 50; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(i=0; i<=20; i++) { - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0*-(i/20.0), 180.0*(i/20.0), 0); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } - charsel: - if(fn_1_194C8(temp_r29) == 0) { - goto exit; - } - temp_r29 = 4; - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; - GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C; - GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; - GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; - } - mgBattleStarMax = lbl_1_bss_8.unk20; - } - - if(fn_1_E72C() == 0) { - lbl_1_bss_4 = 0; - goto charsel; - } - exit: - HuDataDirClose(DATADIR_INSTPIC); - for(i=0; i<4; i++) { - Hu3DModelLayerSet(lbl_1_bss_2C80[i+9], 3); - } - lbl_1_bss_4 = 0; - pos2D.x = 168; - pos2D.y = 190; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000006); - for(i=0; i<=20; i++) { - if(i == 10) { - HuAudFXPlay(2173); - } - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0*-(1-(i/20.0)), 180.0*(1-(i/20.0)), 0); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } + Vec pos2D; + Vec posModel; + Vec pos3D; + s16 temp_r29 = 2; + s16 i; + ModelData *modelP; + for (i = 0; i < 4; i++) { + Hu3DModelLayerSet(lbl_1_bss_2C80[i + 9], 2); + } + if (mgModeEvtNo == 3) { + OSReport("Eliminate Play STart\n"); + pos2D.x = 50; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 180, 0); + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + HuAudFXPlay(2174); + HuPrcSleep(40); + pos2D.x = 50; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (i = 0; i <= 20; i++) { + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(i / 20.0), 180.0 * (i / 20.0), 0); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } + charsel: + if (fn_1_194C8(temp_r29) == 0) { + goto exit; + } + temp_r29 = 4; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; + GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C; + GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; + GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; + } + mgBattleStarMax = lbl_1_bss_8.unk20; + } + + if (fn_1_E72C() == 0) { + mgModeEvtNo = 0; + goto charsel; + } +exit: + HuDataDirClose(DATADIR_INSTPIC); + for (i = 0; i < 4; i++) { + Hu3DModelLayerSet(lbl_1_bss_2C80[i + 9], 3); + } + mgModeEvtNo = 0; + pos2D.x = 168; + pos2D.y = 190; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + for (i = 0; i <= 20; i++) { + if (i == 10) { + HuAudFXPlay(2173); + } + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(1 - (i / 20.0)), 180.0 * (1 - (i / 20.0)), 0); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } } s32 fn_1_3150(void) { - Vec pos2D; - Vec posModel; - Vec pos3D; - s16 i; - ModelData *modelP; - s16 temp_r29 = 1; - if(lbl_1_bss_4 == 4) { - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 90, 0); - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000002); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 1); - } else { - Hu3DModelAttrSet(lbl_1_bss_2C80[9], 0x40000004); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000002); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - HuAudFXPlay(2174); - HuPrcSleep(40); - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(i=0; i<=20; i++) { - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0*-(i/20.0), 90.0*(i/20.0), 0); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } - charsel: - if(fn_1_194C8(temp_r29) == 0) { - goto exit; - } - temp_r29 = 4; - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; - GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C; - GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; - GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; - } - mgBattleStarMax = lbl_1_bss_8.unk20; - } - - if(fn_1_13418() == 0) { - lbl_1_bss_4 = 0; - goto charsel; - } - exit: - HuDataDirClose(DATADIR_INSTPIC); - lbl_1_bss_4 = 0; - pos2D.x = 168; - pos2D.y = 190; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50; - modelP = &Hu3DData[lbl_1_bss_2C80[9]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - Hu3DModelAttrReset(lbl_1_bss_2C80[9], 0x40000006); - for(i=0; i<=20; i++) { - if(i == 10) { - HuAudFXPlay(2173); - } - VECScale(&pos2D, &pos3D, sind(i*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); - Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0*-(1-(i/20.0)), 90.0*(1-(i/20.0)), 0); - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { - HuPrcVSleep(); - } + Vec pos2D; + Vec posModel; + Vec pos3D; + s16 i; + ModelData *modelP; + s16 temp_r29 = 1; + if (mgModeEvtNo == 4) { + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], -90, 90, 0); + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(lbl_1_bss_2C80[9], HU3D_MOTATTR_REV); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + HuAudFXPlay(2174); + HuPrcSleep(40); + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (i = 0; i <= 20; i++) { + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(i / 20.0), 90.0 * (i / 20.0), 0); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } + charsel: + if (fn_1_194C8(temp_r29) == 0) { + goto exit; + } + temp_r29 = 4; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; + GWPlayerCfg[i].group = lbl_1_bss_8.unk24[i].unk5C; + GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; + GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; + } + mgBattleStarMax = lbl_1_bss_8.unk20; + } + + if (fn_1_13418() == 0) { + mgModeEvtNo = 0; + goto charsel; + } +exit: + HuDataDirClose(DATADIR_INSTPIC); + mgModeEvtNo = 0; + pos2D.x = 168; + pos2D.y = 190; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50; + modelP = &Hu3DData[lbl_1_bss_2C80[9]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + Hu3DModelAttrReset(lbl_1_bss_2C80[9], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV); + for (i = 0; i <= 20; i++) { + if (i == 10) { + HuAudFXPlay(2173); + } + VECScale(&pos2D, &pos3D, sind(i * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[9], &pos3D); + Hu3DModelRotSet(lbl_1_bss_2C80[9], 90.0 * -(1 - (i / 20.0)), 90.0 * (1 - (i / 20.0)), 0); + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(lbl_1_bss_2C80[9])) { + HuPrcVSleep(); + } } void fn_1_38D8(void) { - Vec pos2D; - Vec pos3D; - Vec posModel; - - s16 sp8 = 0; - s16 time; - s16 i; - float weight; - ModelData *modelP; - - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[10]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(time=0; time<=30; time++) { - for(i=0; i<4; i++) { - if(i == 1) { - continue; - } - if(time > i*2 && time < (i*2)+10) { - Vec posBox; - weight = (time-(i*2))/10.0; - posBox = lbl_1_data_40[i]; - posBox.z = 800; - posBox.x += ((i < 2) ? -1 : 1)*(500.0*(1.0-cosd(90.0f*weight))); - Hu3D2Dto3D(&posBox, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - if(time > 10) { - weight = (time-10)/20.0; - VECScale(&pos2D, &pos3D, sind(weight*90.0f)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[10], &pos3D); - } - HuPrcVSleep(); - } - fn_1_6D28(); - pos2D = lbl_1_data_40[1]; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[10]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - for(time=0; time<=20; time++) { - VECScale(&pos2D, &pos3D, sind(time*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[10], &pos3D); - HuPrcVSleep(); - } - for(time=0; time<=20; time++) { - for(i=0; i<4; i++) { - if(i == 1) { - continue; - } - if(time > i*2 && time < (i*2)+10) { - weight = (time-(i*2))/10.0; - pos2D = lbl_1_data_40[i]; - pos2D.z = 800; - pos2D.x += ((i < 2) ? -1 : 1)*((1.0-sind(weight*90.0f))*500.0); - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - HuPrcVSleep(); - } + Vec pos2D; + Vec pos3D; + Vec posModel; + + s16 sp8 = 0; + s16 time; + s16 i; + float weight; + ModelData *modelP; + + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[10]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (time = 0; time <= 30; time++) { + for (i = 0; i < 4; i++) { + if (i == 1) { + continue; + } + if (time > i * 2 && time < (i * 2) + 10) { + Vec posBox; + weight = (time - (i * 2)) / 10.0; + posBox = lbl_1_data_40[i]; + posBox.z = 800; + posBox.x += ((i < 2) ? -1 : 1) * (500.0 * (1.0 - cosd(90.0f * weight))); + Hu3D2Dto3D(&posBox, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + if (time > 10) { + weight = (time - 10) / 20.0; + VECScale(&pos2D, &pos3D, sind(weight * 90.0f)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[10], &pos3D); + } + HuPrcVSleep(); + } + fn_1_6D28(); + pos2D = lbl_1_data_40[1]; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[10]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + for (time = 0; time <= 20; time++) { + VECScale(&pos2D, &pos3D, sind(time * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[10], &pos3D); + HuPrcVSleep(); + } + for (time = 0; time <= 20; time++) { + for (i = 0; i < 4; i++) { + if (i == 1) { + continue; + } + if (time > i * 2 && time < (i * 2) + 10) { + weight = (time - (i * 2)) / 10.0; + pos2D = lbl_1_data_40[i]; + pos2D.z = 800; + pos2D.x += ((i < 2) ? -1 : 1) * ((1.0 - sind(weight * 90.0f)) * 500.0); + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + HuPrcVSleep(); + } } void fn_1_4010(void) { - Vec pos2D; - Vec pos3D; - Vec posModel; - - s16 spA[4]; - s16 sp8 = 0; - s16 time; - s16 i; - float weight; - ModelData *modelP; - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - pos2D.x = 60; - pos2D.y = 70; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[11]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(time=0; time<=30; time++) { - for(i=0; i<4; i++) { - if(i == 2) { - continue; - } - if(time > i*2 && time < (i*2)+10) { - Vec posBox; - weight = (time-(i*2))/10.0; - posBox = lbl_1_data_40[i]; - posBox.z = 800; - posBox.x += ((i < 3) ? -1 : 1)*(500.0*(1.0-cosd(90.0f*weight))); - Hu3D2Dto3D(&posBox, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - if(time > 10) { - weight = (time-10)/20.0; - VECScale(&pos2D, &pos3D, sind(weight*90.0f)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[11], &pos3D); - } - HuPrcVSleep(); - } - fn_1_6D28(); - for(i=0; i<4; i++) { - spA[i] = 0; - for(time=0; time= 4 && spA[1] >= 3 && spA[2] >= 3 && spA[3] >= 2) { - GWGameStat.field10E_bit5 = 1; - } else { - GWGameStat.field10E_bit5 = 0; - } - pos2D = lbl_1_data_40[2]; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[11]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - for(time=0; time<=20; time++) { - VECScale(&pos2D, &pos3D, sind(time*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[11], &pos3D); - HuPrcVSleep(); - } - for(time=0; time<=20; time++) { - for(i=0; i<4; i++) { - if(i == 2) { - continue; - } - if(time > i*2 && time < (i*2)+10) { - weight = (time-(i*2))/10.0; - pos2D = lbl_1_data_40[i]; - pos2D.z = 800; - pos2D.x += ((i < 3) ? -1 : 1)*((1.0-sind(weight*90.0f))*500.0); - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - HuPrcVSleep(); - } + Vec pos2D; + Vec pos3D; + Vec posModel; + + s16 spA[4]; + s16 sp8 = 0; + s16 time; + s16 i; + float weight; + ModelData *modelP; + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + pos2D.x = 60; + pos2D.y = 70; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[11]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (time = 0; time <= 30; time++) { + for (i = 0; i < 4; i++) { + if (i == 2) { + continue; + } + if (time > i * 2 && time < (i * 2) + 10) { + Vec posBox; + weight = (time - (i * 2)) / 10.0; + posBox = lbl_1_data_40[i]; + posBox.z = 800; + posBox.x += ((i < 3) ? -1 : 1) * (500.0 * (1.0 - cosd(90.0f * weight))); + Hu3D2Dto3D(&posBox, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + if (time > 10) { + weight = (time - 10) / 20.0; + VECScale(&pos2D, &pos3D, sind(weight * 90.0f)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[11], &pos3D); + } + HuPrcVSleep(); + } + fn_1_6D28(); + for (i = 0; i < 4; i++) { + spA[i] = 0; + for (time = 0; time < lbl_1_bss_20AC[lbl_1_data_A2[i]]; time++) { + if (GWMGCustomGet(lbl_1_bss_20C0[lbl_1_data_A2[i]][time] + 401)) { + spA[i]++; + } + } + } + if (spA[0] >= 4 && spA[1] >= 3 && spA[2] >= 3 && spA[3] >= 2) { + GWGameStat.customPackEnable = 1; + } + else { + GWGameStat.customPackEnable = 0; + } + pos2D = lbl_1_data_40[2]; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[11]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + for (time = 0; time <= 20; time++) { + VECScale(&pos2D, &pos3D, sind(time * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[11], &pos3D); + HuPrcVSleep(); + } + for (time = 0; time <= 20; time++) { + for (i = 0; i < 4; i++) { + if (i == 2) { + continue; + } + if (time > i * 2 && time < (i * 2) + 10) { + weight = (time - (i * 2)) / 10.0; + pos2D = lbl_1_data_40[i]; + pos2D.z = 800; + pos2D.x += ((i < 3) ? -1 : 1) * ((1.0 - sind(weight * 90.0f)) * 500.0); + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + HuPrcVSleep(); + } } s32 fn_1_487C(void) { - s16 i; - char str[4][6]; - - for(i=0; i<4; i++) { - strcpy(&str[i][0], "\x1E\x03""0""\x1E\x08"); - } - if(lbl_1_bss_20AC[0] >= 4 && lbl_1_bss_20AC[1] >= 3 && lbl_1_bss_20AC[2] >= 3 && lbl_1_bss_20AC[4] >= 2) { - return 1; - } - if(lbl_1_bss_20AC[0] >= 4) { - str[0][1] = 5; - } else { - str[0][2] = '4'-lbl_1_bss_20AC[0]; - } - HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[0][0]), 0); - if(lbl_1_bss_20AC[1] >= 3) { - str[1][1] = 5; - } else { - str[1][2] = '3'-lbl_1_bss_20AC[1]; - } - HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[1][0]), 1); - if(lbl_1_bss_20AC[2] >= 3) { - str[2][1] = 5; - } else { - str[2][2] = '3'-lbl_1_bss_20AC[2]; - } - HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[2][0]), 2); - if(lbl_1_bss_20AC[4] >= 2) { - str[3][1] = 5; - } else { - str[3][2] = '2'-lbl_1_bss_20AC[4]; - } - HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[3][0]), 3); - fn_1_25838(lbl_1_bss_2CE, 0x28002A, -1, -1); - fn_1_25838(lbl_1_bss_2CE, 0x28002B, -1, -1); - fn_1_25838(lbl_1_bss_2CE, 0x280002+lbl_1_bss_2A6, -1, -999); - return 0; + s16 i; + char str[4][6]; + + for (i = 0; i < 4; i++) { + strcpy(&str[i][0], + "\x1E\x03" + "0" + "\x1E\x08"); + } + if (lbl_1_bss_20AC[0] >= 4 && lbl_1_bss_20AC[1] >= 3 && lbl_1_bss_20AC[2] >= 3 && lbl_1_bss_20AC[4] >= 2) { + return 1; + } + if (lbl_1_bss_20AC[0] >= 4) { + str[0][1] = 5; + } + else { + str[0][2] = '4' - lbl_1_bss_20AC[0]; + } + HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[0][0]), 0); + if (lbl_1_bss_20AC[1] >= 3) { + str[1][1] = 5; + } + else { + str[1][2] = '3' - lbl_1_bss_20AC[1]; + } + HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[1][0]), 1); + if (lbl_1_bss_20AC[2] >= 3) { + str[2][1] = 5; + } + else { + str[2][2] = '3' - lbl_1_bss_20AC[2]; + } + HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[2][0]), 2); + if (lbl_1_bss_20AC[4] >= 2) { + str[3][1] = 5; + } + else { + str[3][2] = '2' - lbl_1_bss_20AC[4]; + } + HuWinInsertMesSet(lbl_1_bss_2CE, MAKE_MESSID_PTR(&str[3][0]), 3); + fn_1_25838(lbl_1_bss_2CE, 0x28002A, -1, -1); + fn_1_25838(lbl_1_bss_2CE, 0x28002B, -1, -1); + fn_1_25838(lbl_1_bss_2CE, 0x280002 + lbl_1_bss_2A6, -1, -999); + return 0; } void fn_1_4ADC(void) { - Vec pos2D; - Vec pos3D; - Vec posModel; - - s16 spA[4]; - s16 sp8 = 0; - s16 time; - s16 i; - float weight; - ModelData *modelP; - fn_1_25E74(lbl_1_bss_2CC); - fn_1_25584(lbl_1_bss_2CE); - lbl_1_bss_2CE = lbl_1_bss_2CC = -1; - pos2D.x = 50; - pos2D.y = 64; - pos2D.z = 1000; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[11]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - for(time=0; time<=30; time++) { - for(i=0; i<4; i++) { - if(i == 3) { - continue; - } - if(time > i*2 && time < (i*2)+10) { - Vec posBox; - weight = (time-(i*2))/10.0; - posBox = lbl_1_data_40[i]; - posBox.z = 800; - posBox.x += ((i < 3) ? -1 : 1)*(500.0*(1.0-cosd(90.0f*weight))); - Hu3D2Dto3D(&posBox, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - if(time > 10) { - weight = (time-10)/20.0; - VECScale(&pos2D, &pos3D, sind(weight*90.0f)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[12], &pos3D); - weight = (1.0-(weight*0.1)); - Hu3DModelScaleSet(lbl_1_bss_2C80[12], weight, weight, weight); - } - HuPrcVSleep(); - } - fn_1_D8D0(); - pos2D = lbl_1_data_40[3]; - pos2D.z = 800; - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - modelP = &Hu3DData[lbl_1_bss_2C80[12]]; - posModel = modelP->pos; - VECSubtract(&pos3D, &posModel, &pos2D); - espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); - for(time=0; time<=20; time++) { - VECScale(&pos2D, &pos3D, sind(time*4.5)); - VECAdd(&posModel, &pos3D, &pos3D); - Hu3DModelPosSetV(lbl_1_bss_2C80[12], &pos3D); - weight = 1.0-(0.1*(1.0-(time/20.0))); - Hu3DModelScaleSet(lbl_1_bss_2C80[12], weight, weight, weight); - HuPrcVSleep(); - } - for(time=0; time<=20; time++) { - for(i=0; i<4; i++) { - if(i == 3) { - continue; - } - if(time > i*2 && time < (i*2)+10) { - weight = (time-(i*2))/10.0; - pos2D = lbl_1_data_40[i]; - pos2D.z = 800; - pos2D.x += ((i < 3) ? -1 : 1)*((1.0-sind(weight*90.0f))*500.0); - Hu3D2Dto3D(&pos2D, 1, &pos3D); - pos3D.z -= 50.0f; - Hu3DModelPosSetV(lbl_1_bss_2C80[i+9], &pos3D); - Hu3DModelAttrReset(lbl_1_bss_2C80[i+9], 1); - } - } - HuPrcVSleep(); - } + Vec pos2D; + Vec pos3D; + Vec posModel; + + s16 spA[4]; + s16 sp8 = 0; + s16 time; + s16 i; + float weight; + ModelData *modelP; + fn_1_25E74(lbl_1_bss_2CC); + fn_1_25584(lbl_1_bss_2CE); + lbl_1_bss_2CE = lbl_1_bss_2CC = -1; + pos2D.x = 50; + pos2D.y = 64; + pos2D.z = 1000; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[11]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + for (time = 0; time <= 30; time++) { + for (i = 0; i < 4; i++) { + if (i == 3) { + continue; + } + if (time > i * 2 && time < (i * 2) + 10) { + Vec posBox; + weight = (time - (i * 2)) / 10.0; + posBox = lbl_1_data_40[i]; + posBox.z = 800; + posBox.x += ((i < 3) ? -1 : 1) * (500.0 * (1.0 - cosd(90.0f * weight))); + Hu3D2Dto3D(&posBox, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + if (time > 10) { + weight = (time - 10) / 20.0; + VECScale(&pos2D, &pos3D, sind(weight * 90.0f)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[12], &pos3D); + weight = (1.0 - (weight * 0.1)); + Hu3DModelScaleSet(lbl_1_bss_2C80[12], weight, weight, weight); + } + HuPrcVSleep(); + } + fn_1_D8D0(); + pos2D = lbl_1_data_40[3]; + pos2D.z = 800; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + modelP = &Hu3DData[lbl_1_bss_2C80[12]]; + posModel = modelP->pos; + VECSubtract(&pos3D, &posModel, &pos2D); + espAttrSet(lbl_1_bss_2C2C[0], HUSPR_ATTR_DISPOFF); + for (time = 0; time <= 20; time++) { + VECScale(&pos2D, &pos3D, sind(time * 4.5)); + VECAdd(&posModel, &pos3D, &pos3D); + Hu3DModelPosSetV(lbl_1_bss_2C80[12], &pos3D); + weight = 1.0 - (0.1 * (1.0 - (time / 20.0))); + Hu3DModelScaleSet(lbl_1_bss_2C80[12], weight, weight, weight); + HuPrcVSleep(); + } + for (time = 0; time <= 20; time++) { + for (i = 0; i < 4; i++) { + if (i == 3) { + continue; + } + if (time > i * 2 && time < (i * 2) + 10) { + weight = (time - (i * 2)) / 10.0; + pos2D = lbl_1_data_40[i]; + pos2D.z = 800; + pos2D.x += ((i < 3) ? -1 : 1) * ((1.0 - sind(weight * 90.0f)) * 500.0); + Hu3D2Dto3D(&pos2D, 1, &pos3D); + pos3D.z -= 50.0f; + Hu3DModelPosSetV(lbl_1_bss_2C80[i + 9], &pos3D); + Hu3DModelAttrReset(lbl_1_bss_2C80[i + 9], HU3D_ATTR_DISPOFF); + } + } + HuPrcVSleep(); + } } void fn_1_65EC(void); void fn_1_52DC(void) { - s16 i; - fn_1_65EC(); - fn_1_267E8(lbl_1_data_490); - fn_1_26A78(lbl_1_data_768); - Hu3DMotionSet(lbl_1_bss_2C80[2], lbl_1_bss_2C66[4]); - Hu3DMotionTimeSet(lbl_1_bss_2C80[0], 0); - Hu3DModelAttrSet(lbl_1_bss_2C80[0], 0x40000002); - HuSprExecLayerSet(64, 3); - espDrawNoSet(lbl_1_bss_2C2C[3], 64); - for(i=0; i<4; i++) { - Hu3DModelLayerSet(lbl_1_bss_2C80[i+9], 3); - } - fn_1_26C28(); - espDrawNoSet(lbl_1_bss_2C2C[28], 64); - Hu3DModelPosSet(lbl_1_bss_2C80[5], 0, 0, 500); - lbl_1_bss_8.unk0 = lbl_1_bss_2C80[2]; - lbl_1_bss_8.unk8 = lbl_1_bss_2C66[4]; - lbl_1_bss_8.unk4 = lbl_1_bss_2C66[3]; - lbl_1_bss_8.unkC = lbl_1_bss_2C80[5]; - lbl_1_bss_8.unk10 = lbl_1_bss_2C66[6]; - lbl_1_bss_8.unk14 = lbl_1_bss_2C66[7]; - lbl_1_bss_8.unk18 = lbl_1_bss_2C66[6]; - fn_1_18DF8(lbl_1_bss_2D8, &lbl_1_bss_8); - Hu3DModelShadowSet(lbl_1_bss_2C80[5]); - Hu3DModelShadowMapSet(lbl_1_bss_2C80[0]); + s16 i; + fn_1_65EC(); + fn_1_267E8(lbl_1_data_490); + fn_1_26A78(lbl_1_data_768); + Hu3DMotionSet(lbl_1_bss_2C80[2], lbl_1_bss_2C66[4]); + Hu3DMotionTimeSet(lbl_1_bss_2C80[0], 0); + Hu3DModelAttrSet(lbl_1_bss_2C80[0], HU3D_MOTATTR_PAUSE); + HuSprExecLayerSet(64, 3); + espDrawNoSet(lbl_1_bss_2C2C[3], 64); + for (i = 0; i < 4; i++) { + Hu3DModelLayerSet(lbl_1_bss_2C80[i + 9], 3); + } + fn_1_26C28(); + espDrawNoSet(lbl_1_bss_2C2C[28], 64); + Hu3DModelPosSet(lbl_1_bss_2C80[5], 0, 0, 500); + lbl_1_bss_8.unk0 = lbl_1_bss_2C80[2]; + lbl_1_bss_8.unk8 = lbl_1_bss_2C66[4]; + lbl_1_bss_8.unk4 = lbl_1_bss_2C66[3]; + lbl_1_bss_8.unkC = lbl_1_bss_2C80[5]; + lbl_1_bss_8.unk10 = lbl_1_bss_2C66[6]; + lbl_1_bss_8.unk14 = lbl_1_bss_2C66[7]; + lbl_1_bss_8.unk18 = lbl_1_bss_2C66[6]; + fn_1_18DF8(objman, &lbl_1_bss_8); + Hu3DModelShadowSet(lbl_1_bss_2C80[5]); + Hu3DModelShadowMapSet(lbl_1_bss_2C80[0]); } void fn_1_6C18(void); void fn_1_54F4(void) { - while(1) { - if(lbl_1_bss_2D0) { - break; - } - if(omSysExitReq) { - break; - } - HuPrcVSleep(); - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudSeqAllFadeOut(1000); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuDataDirClose(DATADIR_INSTPIC); - if(memcmp(&mgGameStatBackup, &GWGameStat, sizeof(GWGameStat))) { - fn_1_6C18(); - } - BoardStatusKill(); - omOvlReturnEx(1, 1); - HuPrcEnd(); + while (1) { + if (lbl_1_bss_2D0) { + break; + } + if (omSysExitReq) { + break; + } + HuPrcVSleep(); + } + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqAllFadeOut(1000); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_INSTPIC); + if (memcmp(&mgGameStatBackup, &GWGameStat, sizeof(GWGameStat))) { + fn_1_6C18(); + } + BoardStatusKill(); + omOvlReturnEx(1, 1); + HuPrcEnd(); } - -static u16 lbl_1_data_8C[2] = { - 1, - 2 -}; +static u16 lbl_1_data_8C[2] = { 1, 2 }; void fn_1_55C0(omObjData *object) { - s16 i; - for(i=0; i<1; i++) { - Vec pos, target, up; - float x, y, z; - - x = lbl_1_bss_28C[i].x; - y = lbl_1_bss_28C[i].y; - z = lbl_1_bss_28C[i].z; - - pos.x = (((sind(y)*cosd(x))*lbl_1_bss_26C[i])+lbl_1_bss_274[i].x); - pos.y = (-sind(x)*lbl_1_bss_26C[i])+lbl_1_bss_274[i].y; - pos.z = ((cosd(y)*cosd(x))*lbl_1_bss_26C[i])+lbl_1_bss_274[i].z; - target.x = lbl_1_bss_274[i].x; - target.y = lbl_1_bss_274[i].y; - target.z = lbl_1_bss_274[i].z; - up.x = sind(y)*sind(x); - up.y = cosd(x); - up.z = cosd(y)*sind(x); - Hu3DCameraPosSet(lbl_1_data_8C[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } + s16 i; + for (i = 0; i < 1; i++) { + Vec pos, target, up; + float x, y, z; + + x = lbl_1_bss_28C[i].x; + y = lbl_1_bss_28C[i].y; + z = lbl_1_bss_28C[i].z; + + pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_26C[i]) + lbl_1_bss_274[i].x); + pos.y = (-sind(x) * lbl_1_bss_26C[i]) + lbl_1_bss_274[i].y; + pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_26C[i]) + lbl_1_bss_274[i].z; + target.x = lbl_1_bss_274[i].x; + target.y = lbl_1_bss_274[i].y; + target.z = lbl_1_bss_274[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(lbl_1_data_8C[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } } void fn_1_66B0(void); void fn_1_5974(omObjData *object) { - Vec pos; + Vec pos; Vec offset; Vec dir; Vec y_offset; - + f32 z_rot; s8 stick_pos; - if(HuPadBtnDown[0] & PAD_BUTTON_Y) { - lbl_1_bss_0 = (lbl_1_bss_0) ? 0 : 1; - } - if(lbl_1_bss_0 == 0) { - fn_1_66B0(); - return; - } - lbl_1_bss_28C[0].y += 0.1f * HuPadStkX[0]; - lbl_1_bss_28C[0].x += 0.1f * HuPadStkY[0]; - lbl_1_bss_26C[0] += HuPadTrigL[0] / 2; - lbl_1_bss_26C[0] -= HuPadTrigR[0] / 2; - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - OSReport("%f,%f,%f\n", lbl_1_bss_28C[0].x, lbl_1_bss_28C[0].y, lbl_1_bss_28C[0].z); - OSReport("%f,%f,%f\n", lbl_1_bss_274[0].x, lbl_1_bss_274[0].y, lbl_1_bss_274[0].z); - OSReport("%f\n", lbl_1_bss_26C[0]); - } - if (lbl_1_bss_26C[0] < 100.0f) { - lbl_1_bss_26C[0] = 100.0f; - } - pos.x = lbl_1_bss_274[0].x + (lbl_1_bss_26C[0] * (sind(lbl_1_bss_28C[0].y) * cosd(lbl_1_bss_28C[0].x))); - pos.y = (lbl_1_bss_274[0].y + (lbl_1_bss_26C[0] * -sind(lbl_1_bss_28C[0].x))); - pos.z = (lbl_1_bss_274[0].z + (lbl_1_bss_26C[0] * (cosd(lbl_1_bss_28C[0].y) * cosd(lbl_1_bss_28C[0].x)))); - offset.x = lbl_1_bss_274[0].x - pos.x; - offset.y = lbl_1_bss_274[0].y - pos.y; - offset.z = lbl_1_bss_274[0].z - pos.z; - dir.x = (sind(lbl_1_bss_28C[0].y) * sind(lbl_1_bss_28C[0].x)); - dir.y = cosd(lbl_1_bss_28C[0].x); - dir.z = (cosd(lbl_1_bss_28C[0].y) * sind(lbl_1_bss_28C[0].x)); - z_rot = lbl_1_bss_28C[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 (HuPadBtnDown[0] & PAD_BUTTON_Y) { + lbl_1_bss_0 = (lbl_1_bss_0) ? 0 : 1; + } + if (lbl_1_bss_0 == 0) { + fn_1_66B0(); + return; + } + lbl_1_bss_28C[0].y += 0.1f * HuPadStkX[0]; + lbl_1_bss_28C[0].x += 0.1f * HuPadStkY[0]; + lbl_1_bss_26C[0] += HuPadTrigL[0] / 2; + lbl_1_bss_26C[0] -= HuPadTrigR[0] / 2; + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + OSReport("%f,%f,%f\n", lbl_1_bss_28C[0].x, lbl_1_bss_28C[0].y, lbl_1_bss_28C[0].z); + OSReport("%f,%f,%f\n", lbl_1_bss_274[0].x, lbl_1_bss_274[0].y, lbl_1_bss_274[0].z); + OSReport("%f\n", lbl_1_bss_26C[0]); + } + if (lbl_1_bss_26C[0] < 100.0f) { + lbl_1_bss_26C[0] = 100.0f; + } + pos.x = lbl_1_bss_274[0].x + (lbl_1_bss_26C[0] * (sind(lbl_1_bss_28C[0].y) * cosd(lbl_1_bss_28C[0].x))); + pos.y = (lbl_1_bss_274[0].y + (lbl_1_bss_26C[0] * -sind(lbl_1_bss_28C[0].x))); + pos.z = (lbl_1_bss_274[0].z + (lbl_1_bss_26C[0] * (cosd(lbl_1_bss_28C[0].y) * cosd(lbl_1_bss_28C[0].x)))); + offset.x = lbl_1_bss_274[0].x - pos.x; + offset.y = lbl_1_bss_274[0].y - pos.y; + offset.z = lbl_1_bss_274[0].z - pos.z; + dir.x = (sind(lbl_1_bss_28C[0].y) * sind(lbl_1_bss_28C[0].x)); + dir.y = cosd(lbl_1_bss_28C[0].x); + dir.z = (cosd(lbl_1_bss_28C[0].y) * sind(lbl_1_bss_28C[0].x)); + z_rot = lbl_1_bss_28C[0].z; + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); + 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)); - PSVECCrossProduct(&dir, &offset, &offset); - PSVECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_274[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_274[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_274[0].z += 0.05f * (offset.z * stick_pos); - } - PSVECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_274[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_274[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_274[0].z += 0.05f * (offset.z * stick_pos); - } + 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) { + lbl_1_bss_274[0].x += 0.05f * (offset.x * stick_pos); + lbl_1_bss_274[0].y += 0.05f * (offset.y * stick_pos); + lbl_1_bss_274[0].z += 0.05f * (offset.z * stick_pos); + } + VECNormalize(&y_offset, &offset); + stick_pos = -(HuPadSubStkY[0] & 0xF8); + if (stick_pos != 0) { + lbl_1_bss_274[0].x += 0.05f * (offset.x * stick_pos); + lbl_1_bss_274[0].y += 0.05f * (offset.y * stick_pos); + lbl_1_bss_274[0].z += 0.05f * (offset.z * stick_pos); + } } void fn_1_65EC(void) { - Vec pos = { 0, 3000, 800 }; - Vec target = { 0, 0, 640 }; - Vec up = { 0, 1, 0 }; - Hu3DShadowCreate(45, 2000, 25000); - Hu3DShadowTPLvlSet(0.8f); - Hu3DShadowPosSet(&pos, &up, &target); + Vec pos = { 0, 3000, 800 }; + Vec target = { 0, 0, 640 }; + Vec up = { 0, 1, 0 }; + Hu3DShadowCreate(45, 2000, 25000); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&pos, &up, &target); } void fn_1_66B0(void) { - Vec deltaVec; - float delta; - - if(lbl_1_bss_2D0) { - return; - } - VECSubtract(&lbl_1_bss_2C0, &lbl_1_bss_28C[0], &deltaVec); - if(VECMag(&deltaVec) > 0.2) { - VECScale(&deltaVec, &deltaVec, 0.05f); - VECAdd(&lbl_1_bss_28C[0], &deltaVec, &lbl_1_bss_28C[0]); - } else { - lbl_1_bss_28C[0] = lbl_1_bss_2C0; - } - VECSubtract(&lbl_1_bss_2B4, &lbl_1_bss_274[0], &deltaVec); - if(VECMag(&deltaVec) > 0.2) { - VECScale(&deltaVec, &deltaVec, 0.05f); - VECAdd(&lbl_1_bss_274[0], &deltaVec, &lbl_1_bss_274[0]); - } else { - lbl_1_bss_274[0] = lbl_1_bss_2B4; - } - delta = lbl_1_bss_2B0-lbl_1_bss_26C[0]; - if(sqrtf(delta*delta) > 0.2) { - delta *= 0.05f; - lbl_1_bss_26C[0] += delta; - } else { - lbl_1_bss_26C[0] = lbl_1_bss_2B0; - } + Vec deltaVec; + float delta; + + if (lbl_1_bss_2D0) { + return; + } + VECSubtract(&lbl_1_bss_2C0, &lbl_1_bss_28C[0], &deltaVec); + if (VECMag(&deltaVec) > 0.2) { + VECScale(&deltaVec, &deltaVec, 0.05f); + VECAdd(&lbl_1_bss_28C[0], &deltaVec, &lbl_1_bss_28C[0]); + } + else { + lbl_1_bss_28C[0] = lbl_1_bss_2C0; + } + VECSubtract(&lbl_1_bss_2B4, &lbl_1_bss_274[0], &deltaVec); + if (VECMag(&deltaVec) > 0.2) { + VECScale(&deltaVec, &deltaVec, 0.05f); + VECAdd(&lbl_1_bss_274[0], &deltaVec, &lbl_1_bss_274[0]); + } + else { + lbl_1_bss_274[0] = lbl_1_bss_2B4; + } + delta = lbl_1_bss_2B0 - lbl_1_bss_26C[0]; + if (sqrtf(delta * delta) > 0.2) { + delta *= 0.05f; + lbl_1_bss_26C[0] += delta; + } + else { + lbl_1_bss_26C[0] = lbl_1_bss_2B0; + } } void fn_1_6974(s16 arg0) { - lbl_1_bss_2C0 = lbl_1_data_0[arg0].rot; - lbl_1_bss_2B4 = lbl_1_data_0[arg0].pos; - lbl_1_bss_2B0 = lbl_1_data_0[arg0].zoom; + lbl_1_bss_2C0 = lbl_1_data_0[arg0].rot; + lbl_1_bss_2B4 = lbl_1_data_0[arg0].pos; + lbl_1_bss_2B0 = lbl_1_data_0[arg0].zoom; } void fn_1_6A04(s16 arg0) { - lbl_1_bss_2C0 = lbl_1_bss_28C[0] = lbl_1_data_0[arg0].rot; - lbl_1_bss_2B4 = lbl_1_bss_274[0] = lbl_1_data_0[arg0].pos; - lbl_1_bss_2B0 = lbl_1_bss_26C[0] = lbl_1_data_0[arg0].zoom; + lbl_1_bss_2C0 = lbl_1_bss_28C[0] = lbl_1_data_0[arg0].rot; + lbl_1_bss_2B4 = lbl_1_bss_274[0] = lbl_1_data_0[arg0].pos; + lbl_1_bss_2B0 = lbl_1_bss_26C[0] = lbl_1_data_0[arg0].zoom; } float fn_1_6AF0(void) { - float delta = lbl_1_bss_2B0-lbl_1_bss_26C[0]; - return sqrtf(delta*delta); + float delta = lbl_1_bss_2B0 - lbl_1_bss_26C[0]; + return sqrtf(delta * delta); } void fn_1_6C18(void) { - s16 sprite; - if(!SLSaveFlagGet()) { - return; - } - Hu3DAllKill(); - HuSprClose(); - HuSprInit(); - espInit(); - HuPrcVSleep(); - sprite = espEntry(0x860020, 5000, 0); - espPosSet(sprite, 288.0, 240.0); - espAttrReset(sprite, 4); - Hu3DBGColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while(WipeStatGet()) { - HuPrcVSleep(); - } - SLCommonSet(); - if(!SLSave()) { - GWSaveModeSet(1); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - while(WipeStatGet()) { - HuPrcVSleep(); - } -} \ No newline at end of file + s16 sprite; + if (!SLSaveFlagGet()) { + return; + } + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + espInit(); + HuPrcVSleep(); + sprite = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 0x20), 5000, 0); + espPosSet(sprite, 288.0, 240.0); + espAttrReset(sprite, HUSPR_ATTR_DISPOFF); + Hu3DBGColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + SLCommonSet(); + if (!SLSave()) { + GWSaveModeSet(1); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } +} diff --git a/src/REL/mgmodedll/minigame.c b/src/REL/mgmodedll/minigame.c index b11c24a8..2c4fb825 100644 --- a/src/REL/mgmodedll/minigame.c +++ b/src/REL/mgmodedll/minigame.c @@ -1,14 +1,13 @@ #include "REL/mgmodedll.h" -#include "game/gamework_data.h" -#include "game/gamework.h" -#include "game/wipe.h" #include "game/audio.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/wipe.h" #include "game/chrman.h" #include "math.h" - s16 lbl_1_bss_2C80[13]; s16 lbl_1_bss_2C66[13]; s16 lbl_1_bss_2C2C[29]; @@ -24,25 +23,25 @@ s16 lbl_1_bss_20AA; s16 lbl_1_bss_20A8; s32 lbl_1_data_9C0[8] = { - 0x005F0000, - 0x001A0000, - 0x006D0000, - 0x008A0000, - 0x00850000, - 0x00110000, - 0x000D0000, - 0x00810000 + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), }; s32 lbl_1_data_9E0[8] = { - 0x005E0000, - 0x00190000, - 0x006C0000, - 0x00890000, - 0x00840000, - 0x00100000, - 0x000C0000, - 0x00800000 + DATADIR_MARIOMDL1, + DATADIR_LUIGIMDL1, + DATADIR_PEACHMDL1, + DATADIR_YOSHIMDL1, + DATADIR_WARIOMDL1, + DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, + DATADIR_WALUIGIMDL1, }; s16 lbl_1_data_A00 = -1; @@ -51,111 +50,111 @@ void fn_1_26C54(s16 layer); void fn_1_26C28(void) { - Hu3DLayerHookSet(2, fn_1_26C54); + Hu3DLayerHookSet(2, fn_1_26C54); } void fn_1_26C54(s16 layer) { - Mtx44 proj; - Mtx modelview; - Vec pos, target, up; - GXColor color; - CameraData *camera = &Hu3DCamera[0]; - MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); - GXSetProjection(proj, GX_PERSPECTIVE); - GXSetViewport(0, 0, 640, 480, 0, 1); - GXSetScissor(0, 0, 640, 480); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - color.a = 255; - GXSetTevColor(GX_TEVREG0, color); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetNumTexGens(0); - GXSetNumTevStages(01); - GXSetCullMode(GX_CULL_NONE); - GXSetAlphaCompare(GX_GEQUAL, 0, GX_AOP_AND, GX_GEQUAL, 0); - GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); - pos.x = pos.y = pos.z = 0; - target.x = target.y = 0; - target.z = -100; - up.x = up.z = 0; - up.y = 1; - MTXLookAt(modelview, &pos, &up, &target); - GXLoadPosMtxImm(modelview, GX_PNMTX0); - pos.x = (10000.0f*(-sin(camera->fov/2.0f)))*1.2f; - pos.y = (10000.0f*(-sin(camera->fov/2.0f)))*(5.0f/6.0f); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-pos.x, -pos.y, -10000.0f); - GXPosition3f32(pos.x, -pos.y, -10000.0f); - GXPosition3f32(pos.x, pos.y, -10000.0f); - GXPosition3f32(-pos.x, pos.y, -10000.0f); - GXEnd(); + Mtx44 proj; + Mtx modelview; + Vec pos, target, up; + GXColor color; + CameraData *camera = &Hu3DCamera[0]; + MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); + GXSetProjection(proj, GX_PERSPECTIVE); + GXSetViewport(0, 0, 640, 480, 0, 1); + GXSetScissor(0, 0, 640, 480); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + color.a = 255; + GXSetTevColor(GX_TEVREG0, color); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(01); + GXSetCullMode(GX_CULL_NONE); + GXSetAlphaCompare(GX_GEQUAL, 0, GX_AOP_AND, GX_GEQUAL, 0); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + pos.x = pos.y = pos.z = 0; + target.x = target.y = 0; + target.z = -100; + up.x = up.z = 0; + up.y = 1; + MTXLookAt(modelview, &pos, &up, &target); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + pos.x = (10000.0f * (-sin(camera->fov / 2.0f))) * 1.2f; + pos.y = (10000.0f * (-sin(camera->fov / 2.0f))) * (5.0f / 6.0f); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-pos.x, -pos.y, -10000.0f); + GXPosition3f32(pos.x, -pos.y, -10000.0f); + GXPosition3f32(pos.x, pos.y, -10000.0f); + GXPosition3f32(-pos.x, pos.y, -10000.0f); + GXEnd(); } void fn_1_27080(void) { - s16 i; - s32 status; - CharModelDataClose(-1); - CharKill(-1); - for(i=0; i<4; i++) { - status = HuDataDirReadAsync(lbl_1_data_9C0[GWPlayerCfg[i].character]); - if(status != -1) { - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } - } - CharARAMOpen(GWPlayerCfg[i].character); - } - for(i=0; i<2; i++) { - status = HuDataDirReadAsync(lbl_1_data_9E0[GWPlayerCfg[i].character]); - if(status != -1) { - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } - } - } - lbl_1_bss_20AA = 0; - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + s16 i; + s32 status; + CharModelDataClose(-1); + CharKill(-1); + for (i = 0; i < 4; i++) { + status = HuDataDirReadAsync(lbl_1_data_9C0[GWPlayerCfg[i].character]); + if (status != -1) { + while (!HuDataGetAsyncStat(status)) { + HuPrcVSleep(); + } + } + CharARAMOpen(GWPlayerCfg[i].character); + } + for (i = 0; i < 2; i++) { + status = HuDataDirReadAsync(lbl_1_data_9E0[GWPlayerCfg[i].character]); + if (status != -1) { + while (!HuDataGetAsyncStat(status)) { + HuPrcVSleep(); + } + } + } + lbl_1_bss_20AA = 0; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } - s16 fn_1_271B4(s16 mgNo, s16 x, s16 y) { - s16 time; - AnimData *anim; - s16 sprite; - s32 mgpic; - if(mgNo == -1) { - if(lbl_1_data_A00 == -1) { + s16 time; + AnimData *anim; + s16 sprite; + s32 mgpic; + if (mgNo == -1) { + if (lbl_1_data_A00 == -1) { return; - } - for(time=0; time<=10; time++) { - HuSprGrpTPLvlSet(lbl_1_data_A00, 1.0-(time/10.0)); + } + for (time = 0; time <= 10; time++) { + HuSprGrpTPLvlSet(lbl_1_data_A00, 1.0 - (time / 10.0)); HuPrcVSleep(); } HuSprGrpKill(lbl_1_data_A00); lbl_1_data_A00 = -1; return; - } - - if(lbl_1_data_A00 != -1) { + } + + if (lbl_1_data_A00 != -1) { HuSprGrpKill(lbl_1_data_A00); } lbl_1_data_A00 = HuSprGrpCreate(1); mgpic = mgInfoTbl[mgNo].mg_pic[0]; - if(GWMGAvailGet(mgNo+401)) { + if (GWMGAvailGet(mgNo + 401)) { anim = HuSprAnimReadFile(mgpic); - } else { - anim = HuSprAnimReadFile(0x62002C); + } + else { + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MGMODE, 0x2C)); } sprite = HuSprCreate(anim, 100, 0); HuSprGrpMemberSet(lbl_1_data_A00, 0, sprite); @@ -167,110 +166,111 @@ s16 fn_1_271B4(s16 mgNo, s16 x, s16 y) void fn_1_27418(void) { - s16 i; - s16 j; - for(i=0; i<4; i++) { - lbl_1_bss_2C1C[i] = i; - } - for(i=0; i<4; i++) { - for(j=0; j<3-i; j++) { - if(GWPlayerCfg[lbl_1_bss_2C1C[j]].group > GWPlayerCfg[lbl_1_bss_2C1C[j+1]].group) { - s16 temp = lbl_1_bss_2C1C[j]; - lbl_1_bss_2C1C[j] = lbl_1_bss_2C1C[j+1]; - lbl_1_bss_2C1C[j+1] = temp; - } - } - } - for(i=0; i<4; i++) { - s16 charNo; - lbl_1_bss_2C24[i] = charNo = GWPlayerCfg[lbl_1_bss_2C1C[i]].character; - lbl_1_bss_2C14[i] = CharModelCreate(charNo, 2); - lbl_1_bss_2BC4[i][0] = CharModelMotionCreate(charNo, 0x5F0000); - lbl_1_bss_2BC4[i][1] = CharModelMotionCreate(charNo, 0x5F0002); - lbl_1_bss_2BC4[i][2] = CharModelMotionCreate(charNo, 0x5F0003); - lbl_1_bss_2BC4[i][3] = CharModelMotionCreate(charNo, 0x5F0048); - lbl_1_bss_2BC4[i][4] = CharModelMotionCreate(charNo, 0x5F0049); - lbl_1_bss_2BC4[i][5] = CharModelMotionCreate(charNo, 0x5F0017); - lbl_1_bss_2BC4[i][6] = CharModelMotionCreate(charNo, 0x5F0018); - CharModelVoiceEnableSet(GWPlayerCfg[lbl_1_bss_2C1C[i]].character, lbl_1_bss_2BC4[i][1], 0); - CharModelVoiceEnableSet(GWPlayerCfg[lbl_1_bss_2C1C[i]].character, lbl_1_bss_2BC4[i][2], 0); - Hu3DModelPosSet(lbl_1_bss_2C14[i], 600, 0, 800); - Hu3DModelLayerSet(lbl_1_bss_2C14[i], 3); - CharModelDataClose(charNo); - Hu3DModelShadowSet(lbl_1_bss_2C14[i]); - } + s16 i; + s16 j; + for (i = 0; i < 4; i++) { + lbl_1_bss_2C1C[i] = i; + } + for (i = 0; i < 4; i++) { + for (j = 0; j < 3 - i; j++) { + if (GWPlayerCfg[lbl_1_bss_2C1C[j]].group > GWPlayerCfg[lbl_1_bss_2C1C[j + 1]].group) { + s16 temp = lbl_1_bss_2C1C[j]; + lbl_1_bss_2C1C[j] = lbl_1_bss_2C1C[j + 1]; + lbl_1_bss_2C1C[j + 1] = temp; + } + } + } + for (i = 0; i < 4; i++) { + s16 charNo; + lbl_1_bss_2C24[i] = charNo = GWPlayerCfg[lbl_1_bss_2C1C[i]].character; + lbl_1_bss_2C14[i] = CharModelCreate(charNo, 2); + lbl_1_bss_2BC4[i][0] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + lbl_1_bss_2BC4[i][1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + lbl_1_bss_2BC4[i][2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + lbl_1_bss_2BC4[i][3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48)); + lbl_1_bss_2BC4[i][4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49)); + lbl_1_bss_2BC4[i][5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); + lbl_1_bss_2BC4[i][6] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + CharModelVoiceEnableSet(GWPlayerCfg[lbl_1_bss_2C1C[i]].character, lbl_1_bss_2BC4[i][1], 0); + CharModelVoiceEnableSet(GWPlayerCfg[lbl_1_bss_2C1C[i]].character, lbl_1_bss_2BC4[i][2], 0); + Hu3DModelPosSet(lbl_1_bss_2C14[i], 600, 0, 800); + Hu3DModelLayerSet(lbl_1_bss_2C14[i], 3); + CharModelDataClose(charNo); + Hu3DModelShadowSet(lbl_1_bss_2C14[i]); + } } void fn_1_2783C(s16 evtno) { - s16 i; - omOvlHisData *his; - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; - GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; - GWPlayerCfg[i].pad_idx = lbl_1_bss_8.unk24[i].unk6C; - GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; - } - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudSeqAllFadeOut(1000); - while(WipeStatGet()) { - HuPrcVSleep(); - } - CharKill(-1); - for(i=0; i<4; i++) { - CharARAMOpen(GWPlayerCfg[i].character); - } - HuAudVoiceInit(-1); - his = omOvlHisGet(0); - omOvlHisChg(0, OVL_MGMODE, evtno, his->stat); - omOvlCallEx(OVL_INST, 1, 0, 0); - while(1) { - HuPrcVSleep(); - } + s16 i; + omOvlHisData *his; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_8.unk24[i].unk68; + GWPlayerCfg[i].iscom = lbl_1_bss_8.unk24[i].unk60; + GWPlayerCfg[i].pad_idx = lbl_1_bss_8.unk24[i].unk6C; + GWPlayerCfg[i].diff = lbl_1_bss_8.unk24[i].unk64; + } + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqAllFadeOut(1000); + while (WipeStatGet()) { + HuPrcVSleep(); + } + CharKill(-1); + for (i = 0; i < 4; i++) { + CharARAMOpen(GWPlayerCfg[i].character); + } + HuAudVoiceInit(-1); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MGMODE, evtno, his->stat); + omOvlCallEx(OVL_INST, 1, 0, 0); + while (1) { + HuPrcVSleep(); + } } void fn_1_279FC(s32 coinSkipF) { - s16 i; - s16 mgNum; - for(mgNum=0; mgInfoTbl[mgNum].ovl != 65535; mgNum++); - for(i=0; i<9; i++) { - lbl_1_bss_2638[i] = lbl_1_bss_20AC[i] = 0; - } - for(i=0; i= 0 && type < 9) { - if(coinSkipF) { - s16 ovl = mgInfoTbl[i].ovl; - if(ovl == OVL_M408 || ovl == OVL_M422 || ovl == OVL_M430) { - continue; - } - } - lbl_1_bss_264C[type][lbl_1_bss_2638[type]] = i; - lbl_1_bss_2638[type]++; - if(GWMGAvailGet(i+401)) { - lbl_1_bss_20C0[type][lbl_1_bss_20AC[type]] = i; - lbl_1_bss_20AC[type]++; - } - } - } + s16 i; + s16 mgNum; + for (mgNum = 0; mgInfoTbl[mgNum].ovl != 65535; mgNum++) + ; + for (i = 0; i < 9; i++) { + lbl_1_bss_2638[i] = lbl_1_bss_20AC[i] = 0; + } + for (i = 0; i < mgNum; i++) { + s16 type = mgInfoTbl[i].type; + if (type >= 0 && type < 9) { + if (coinSkipF) { + s16 ovl = mgInfoTbl[i].ovl; + if (ovl == OVL_M408 || ovl == OVL_M422 || ovl == OVL_M430) { + continue; + } + } + lbl_1_bss_264C[type][lbl_1_bss_2638[type]] = i; + lbl_1_bss_2638[type]++; + if (GWMGAvailGet(i + 401)) { + lbl_1_bss_20C0[type][lbl_1_bss_20AC[type]] = i; + lbl_1_bss_20AC[type]++; + } + } + } } void fn_1_27C0C(s16 type) { - s16 i; - s16 j; - for(i=0; i<256;) { - for(j=0; j 256) { - break; - } - mgIndexList[i] = lbl_1_bss_20C0[type][j]; - } - } - for(i=0; i<256; i++) { - mgIndexList[i]; - } - lbl_801D3E94 = 0; -} \ No newline at end of file + s16 i; + s16 j; + for (i = 0; i < 256;) { + for (j = 0; j < lbl_1_bss_20AC[type]; j++, i++) { + if (i > 256) { + break; + } + mgIndexList[i] = lbl_1_bss_20C0[type][j]; + } + } + for (i = 0; i < 256; i++) { + mgIndexList[i]; + } + lbl_801D3E94 = 0; +} diff --git a/src/REL/mgmodedll/record.c b/src/REL/mgmodedll/record.c new file mode 100644 index 00000000..0c1bb43f --- /dev/null +++ b/src/REL/mgmodedll/record.c @@ -0,0 +1,220 @@ +#include "REL/mgmodedll.h" +#include "game/gamework.h" + +#include "game/audio.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/saveload.h" +#include "game/wipe.h" + +#include "ext_math.h" + +void fn_1_DE3C(void); +void fn_1_DFB8(void); +void fn_1_E02C(float x, float y, s16 recordNo); + +static s16 lbl_1_bss_37C[6]; +static s16 lbl_1_bss_370[6]; + +s16 mgRecordIdxTbl[6][3] = { 0, 2, 13, 1, 0, 15, 2, 1, 35, 3, 2, 40, 5, 1, 51, 10, 1, 62 }; + +void fn_1_D8D0(void) +{ + s16 i; + float weight; + fn_1_DE3C(); + espAttrReset(lbl_1_bss_2C2C[3], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[3], 0); + for (i = 0; i <= 20; i++) { + espTPLvlSet(lbl_1_bss_2C2C[3], i / 20.0); + HuPrcVSleep(); + } + for (i = 0; i <= 20; i++) { + weight = i / 20.0; + espAttrReset(lbl_1_bss_2C2C[27], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[27], 288, -100.0 + (164.0 * sind(weight * 90.0f))); + espAttrReset(lbl_1_bss_2C2C[28], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[28], weight); + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], ((1 - sind(weight * 90.0f)) * 400) + 288, 424); + HuPrcVSleep(); + } + for (i = 0; i < 6; i++) { + fn_1_E02C(288, (i * 42) + 150.0f, i); + HuPrcVSleep(); + } + while (1) { + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + break; + } + HuPrcVSleep(); + } + HuAudFXPlay(3); + for (i = 0; i < 6; i++) { + fn_1_E02C(1288, 0, i); + HuPrcVSleep(); + } + fn_1_DFB8(); + for (i = 0; i <= 20; i++) { + weight = i / 20.0; + espAttrReset(lbl_1_bss_2C2C[27], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[27], 288, -100.0 + (164.0 * cosd(weight * 90.0f))); + espAttrReset(lbl_1_bss_2C2C[28], HUSPR_ATTR_DISPOFF); + espTPLvlSet(lbl_1_bss_2C2C[28], 1.0 - weight); + espAttrReset(lbl_1_bss_2C2C[20], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_bss_2C2C[20], ((1 - cosd(weight * 90.0f)) * 400) + 288, 424); + HuPrcVSleep(); + } + for (i = 0; i <= 10; i++) { + espTPLvlSet(lbl_1_bss_2C2C[3], 1 - (i / 10.0)); + HuPrcVSleep(); + } +} + +void fn_1_DE3C(void) +{ + AnimData *numAnim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 53), MEMORY_DEFAULT_NUM)); + s16 i; + for (i = 0; i < 6; i++) { + s16 window = HuWinCreate(0, (i * 24), 268, 32, 0); + s16 j; + lbl_1_bss_37C[i] = window; + HuWinBGTPLvlSet(window, 0); + HuWinMesSpeedSet(window, 0); + HuWinDispOff(window); + lbl_1_bss_370[i] = HuSprGrpCreate(8); + for (j = 0; j < 8; j++) { + s16 sprite = HuSprCreate(numAnim, 10, 0); + HuSprGrpMemberSet(lbl_1_bss_370[i], j, sprite); + (void)sprite; + HuSprAttrSet(lbl_1_bss_370[i], j, HUSPR_ATTR_DISPOFF); + } + } +} + +void fn_1_DFB8(void) +{ + s16 i; + for (i = 0; i < 6; i++) { + HuWinKill(lbl_1_bss_37C[i]); + HuSprGrpKill(lbl_1_bss_370[i]); + } +} + +void fn_1_E02C(float x, float y, s16 recordNo) +{ + s32 sprGrpId = lbl_1_bss_370[recordNo]; + s32 value = GWMGRecordGet(mgRecordIdxTbl[recordNo][0]); + s32 i; + s16 mgNo; + float xOfs; + + if (mgRecordIdxTbl[recordNo][2] != -1) { + mgNo = omMgIndexGet(mgRecordIdxTbl[recordNo][2]); + if (!GWMGAvailGet(mgNo + 401)) { + mgNo = -1; + } + else { + HuWinMesSet(lbl_1_bss_37C[recordNo], mgInfoTbl[mgNo].name_mess); + } + } + else { + mgNo = -1; + } + HuWinDispOn(lbl_1_bss_37C[recordNo]); + HuWinPosSet(lbl_1_bss_37C[recordNo], x - 220, y - 24); + if (mgNo == -1) { + HuWinMesSet(lbl_1_bss_37C[recordNo], MAKE_MESSID(35, 0)); + for (i = 0; i < 8; i++) { + HuSprBankSet(sprGrpId, i, 0); + HuSprPosSet(sprGrpId, i, i * 16, 0); + HuSprAttrReset(sprGrpId, i, HUSPR_ATTR_DISPOFF); + } + xOfs = 128; + } + else { + s32 memberNum; + s32 digitValue; + if (mgRecordIdxTbl[recordNo][1] == 0) { + memberNum = 0; + if (value > 9999) { + value = 9999; + } + digitValue = value / 1000; + if (digitValue != 0) { + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 1000; + memberNum++; + } + digitValue = value / 100; + if (digitValue != 0 || memberNum != 0) { + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 100; + memberNum++; + } + digitValue = value / 10; + if (digitValue != 0 || memberNum != 0) { + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 10; + memberNum++; + } + HuSprBankSet(sprGrpId, memberNum, value); + memberNum++; + for (i = 0; i < 8; i++) { + HuSprAttrSet(sprGrpId, i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < memberNum; i++) { + HuSprPosSet(sprGrpId, i, i * 16, 0); + HuSprAttrReset(sprGrpId, i, HUSPR_ATTR_DISPOFF); + } + xOfs = memberNum * 16; + } + else { + s16 yOfs[8]; + for (i = 0; i < 8; i++) { + yOfs[i] = 0; + } + memberNum = 0; + HuSprAttrSet(sprGrpId, memberNum, HUSPR_ATTR_DISPOFF); + memberNum++; + digitValue = value / 3600; + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 3600; + memberNum++; + HuSprBankSet(sprGrpId, memberNum, 11); + yOfs[memberNum] = -2; + memberNum++; + digitValue = value / 600; + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 600; + memberNum++; + digitValue = value / 60; + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 60; + memberNum++; + HuSprBankSet(sprGrpId, memberNum, 12); + yOfs[memberNum] = -2; + memberNum++; + if (mgRecordIdxTbl[recordNo][1] == 2) { + value = (float)value * (203.0 / 120.0); + } + else { + value = (float)value * (200.0 / 120.0); + } + digitValue = value / 10; + HuSprBankSet(sprGrpId, memberNum, digitValue); + value -= digitValue * 10; + memberNum++; + HuSprBankSet(sprGrpId, memberNum, value); + memberNum++; + for (i = 1; i < 8; i++) { + HuSprAttrReset(sprGrpId, i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < memberNum; i++) { + HuSprPosSet(sprGrpId, i, i * 16, yOfs[i]); + } + xOfs = memberNum * 16; + } + } + HuSprGrpPosSet(sprGrpId, 8 + ((210 + x) - xOfs), y); +} diff --git a/src/REL/mgmodedll/tictactoe.c b/src/REL/mgmodedll/tictactoe.c new file mode 100644 index 00000000..4aec6c7e --- /dev/null +++ b/src/REL/mgmodedll/tictactoe.c @@ -0,0 +1,986 @@ +#include "REL/mgmodedll.h" +#include "game/gamework.h" + +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/saveload.h" +#include "game/wipe.h" + +#include "ext_math.h" + +s16 lbl_1_bss_3B8; +s16 lbl_1_bss_3B4[2]; +s16 lbl_1_bss_3B0[2]; +s16 lbl_1_bss_3AC[2]; +s16 lbl_1_bss_3AA; +s16 lbl_1_bss_3A8; + +s16 lbl_1_data_168 = -1; +s16 lbl_1_data_16A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 3, 6, 1, 4, 7, 2, 5, 8, 0, 4, 8, 2, 4, 6 }; + +float lbl_1_data_19C[4] = { -80, -38, 38, 80 }; + +s16 lbl_1_data_1AC[8] = { 4, 4, 4, 4, 0, 2, 6, 8 }; + +void fn_1_2783C(s16 evtno); + +void fn_1_14CFC(void); +s32 fn_1_15E98(s16 arg0, s32 arg1); + +void fn_1_16438(void); +s32 fn_1_16B30(void); +void fn_1_17A5C(void); +void fn_1_17BE0(void); + +s32 fn_1_13418(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + ModelData *temp_r27; + Vec sp24; + Vec sp18; + Vec spC; + s16 sp8[2]; + float temp_f31; + float temp_f30; + float temp_f29; + + fn_1_279FC(0); + if (mgModeEvtNo != 4) { + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + mgTicTacToeGrid[temp_r31][temp_r30] = 0; + } + } + } + fn_1_14CFC(); + if (mgModeEvtNo == 4) { + HuSprGrpPosSet(lbl_1_bss_3A8, 288, 240); + HuSprGrpPosSet(lbl_1_bss_3AA, 450, 65); + Hu3DModelPosSet(lbl_1_bss_2C80[5], -300, 0, 680); + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, 20, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + if (fn_1_16B30()) { + if (lbl_1_data_168 == -1) { + lbl_1_data_168 = fn_1_2530C(0, 0, 0); + } + HuWinAttrSet(lbl_1_data_168, 16); + fn_1_25838(lbl_1_data_168, 0x28000C, -1, -1); + temp_r29 = HuWinChoiceGet(lbl_1_data_168, 1); + if (temp_r29 == 0) { + fn_1_17A5C(); + } + else { + fn_1_16438(); + return 0; + } + } + } + else { + temp_r27 = &Hu3DData[lbl_1_bss_2C80[5]]; + sp24 = temp_r27->pos; + sp18.x = -300; + sp18.y = 0; + sp18.z = 680; + VECSubtract(&sp18, &sp24, &sp18); + temp_f29 = (180 + atan2d(sp18.z, sp18.x)) - 360; + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + if (temp_r31 <= 50) { + temp_f31 = 1.0 - sind((temp_r31 / 50.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3A8, 288, 256 + (-400 * temp_f31)); + } + else { + temp_f31 = cosd(((temp_r31 - 50.0) / 10.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3A8, 288, 240 + (16 * temp_f31)); + } + if (temp_r31 > 20 && temp_r31 <= 50) { + temp_f31 = 1.0 - sind(((temp_r31 - 20) / 30.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3AA, 434 + (400 * temp_f31), 65); + } + else if (temp_r31 > 50) { + temp_f31 = cosd(((temp_r31 - 50.0) / 10.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3AA, 450 + (-16 * temp_f31), 65); + } + if (temp_r31 == 30) { + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[7], 0, 8, HU3D_MOTATTR_LOOP); + } + if (temp_r31 > 30) { + temp_f31 = (temp_r31 - 30.0) / 30.0; + VECScale(&sp18, &spC, temp_f31); + VECAdd(&sp24, &spC, &spC); + Hu3DModelPosSetV(lbl_1_bss_2C80[5], &spC); + if (temp_r31 <= 40) { + temp_f31 = (temp_r31 - 20) / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, temp_f29 * temp_f31, 0); + } + } + HuPrcVSleep(); + } + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6], 0, 8, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = temp_r31 / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, temp_f29 + ((20.0f - temp_f29) * temp_f31), 0); + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + mgTicTacToeGrid[temp_r31][temp_r30] = 0; + } + } + } + lbl_1_bss_3B8 = fn_1_25CA8(0x280019); + if (lbl_1_data_168 == -1) { + lbl_1_data_168 = fn_1_2530C(0, 0, 0); + } + fn_1_25838(lbl_1_data_168, 0x280015, -1, -1); + lbl_1_bss_3B4[0] = 0; + lbl_1_bss_3B4[1] = 2; + fn_1_17BE0(); + lbl_1_bss_3AC[0] = lbl_1_bss_3AC[1] = 30; + HuSprAttrReset(lbl_1_bss_3A8, 12, HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(lbl_1_bss_3A8, 12, 0.5f); + HuSprAttrReset(lbl_1_bss_3A8, 13, HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(lbl_1_bss_3A8, 13, 0.5f); + temp_f30 = 0; + sp8[0] = sp8[1] = 0; + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3] &= 0x3; + } + while (1) { + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + if (sp8[temp_r31] == 0) { + sp8[temp_r31] = fn_1_15E98(temp_r31, 1); + if (sp8[temp_r31] == -1) { + sp8[temp_r31] = 0; + goto else_case; + } + else if (sp8[temp_r31] == 1) { + HuSprAttrSet(lbl_1_bss_3A8, temp_r31 + 12, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(lbl_1_bss_3A8, temp_r31 + 14, HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_3B4[0] != lbl_1_bss_3B4[1]) { + HuSprPosSet( + lbl_1_bss_3A8, temp_r31 + 14, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 56, ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + else { + HuSprPosSet(lbl_1_bss_3A8, temp_r31 + 14, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 60 + (temp_r31 * 8), + ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + } + else { + else_case: + if (lbl_1_bss_3B4[0] != lbl_1_bss_3B4[1]) { + HuSprPosSet( + lbl_1_bss_3A8, temp_r31 + 12, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 56, ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + else { + HuSprPosSet(lbl_1_bss_3A8, temp_r31 + 12, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 60 + (temp_r31 * 8), + ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + HuSprTPLvlSet(lbl_1_bss_3A8, temp_r31 + 12, 0.7 + (0.2 * sind(temp_f30 + (temp_r31 * 180)))); + HuSprPriSet(lbl_1_bss_3A8, temp_r31 + 12, 150); + } + } + else { + sp8[temp_r31] = fn_1_15E98(temp_r31, 0); + if (sp8[temp_r31] == -1) { + sp8[temp_r31] = 0; + HuSprAttrReset(lbl_1_bss_3A8, temp_r31 + 12, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(lbl_1_bss_3A8, temp_r31 + 14, HUSPR_ATTR_DISPOFF); + if (lbl_1_bss_3B4[0] != lbl_1_bss_3B4[1]) { + HuSprPosSet( + lbl_1_bss_3A8, temp_r31 + 12, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 56, ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + else { + HuSprPosSet(lbl_1_bss_3A8, temp_r31 + 12, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 60 + (temp_r31 * 8), + ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + } + else { + HuSprTPLvlSet(lbl_1_bss_3A8, temp_r31 + 12, 1.0f); + HuSprPriSet(lbl_1_bss_3A8, temp_r31 + 12, temp_r31 + 180); + if (lbl_1_bss_3B4[0] != lbl_1_bss_3B4[1]) { + HuSprPosSet( + lbl_1_bss_3A8, temp_r31 + 14, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 56, ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + else { + HuSprPosSet(lbl_1_bss_3A8, temp_r31 + 14, ((lbl_1_bss_3B4[temp_r31] % 3) * 56) - 60 + (temp_r31 * 8), + ((lbl_1_bss_3B4[temp_r31] / 3) * 56) - 56); + } + } + } + } + if (sp8[0] == 1 && sp8[1] == 1) { + HuSprTPLvlSet(lbl_1_bss_3A8, 12, 1.0f); + HuSprTPLvlSet(lbl_1_bss_3A8, 13, 1.0f); + break; + } + else { + temp_f30 += 10.0f; + if (temp_f30 > 360.0f) { + temp_f30 -= 360.0f; + } + HuPrcVSleep(); + } + } + fn_1_25E74(lbl_1_bss_3B8); + lbl_1_bss_3B8 = -1; + fn_1_25838(lbl_1_data_168, 0x280010, -1, -1); + HuSprTPLvlSet(lbl_1_bss_3A8, 24, 1.0f); + mgTypeCurr = 2; + for (temp_r30 = 0; temp_r30 < 35;) { + for (temp_r31 = 0; temp_r31 < lbl_1_bss_20AC[lbl_1_data_A2[mgTypeCurr]]; temp_r31++) { + temp_r28 = fn_1_271B4(lbl_1_bss_20C0[lbl_1_data_A2[mgTypeCurr]][temp_r31], 288, 240); + HuSprGrpDrawNoSet(temp_r28, 0); + HuAudFXPlay(855); + HuPrcSleep(3); + temp_r30++; + if (temp_r30 >= 35) { + break; + } + } + } + HuAudFXPlay(870); + lbl_1_bss_2E4 = lbl_1_bss_20C0[lbl_1_data_A2[mgTypeCurr]][frandmod(lbl_1_bss_20AC[lbl_1_data_A2[mgTypeCurr]])]; + temp_r28 = fn_1_271B4(lbl_1_bss_2E4, 288, 240); + HuSprGrpDrawNoSet(temp_r28, 0); + HuWinInsertMesSet(lbl_1_data_168, mgInfoTbl[lbl_1_bss_2E4].name_mess, 0); + HuWinAttrSet(lbl_1_data_168, 16); + fn_1_25838(lbl_1_data_168, 0x280011, -1, -1); +repeat_mess: + fn_1_25838(lbl_1_data_168, 0x280029, -1, -1); + temp_r29 = HuWinChoiceGet(lbl_1_data_168, 0); + if (temp_r29 == 0) { + _ClearFlag(11); + } + else if (temp_r29 == 1) { + HuWinInsertMesSet(lbl_1_data_168, MAKE_MESSID(0x28, 40), 0); + fn_1_25838(lbl_1_data_168, 0x280026, -1, -1); + temp_r29 = HuWinChoiceGet(lbl_1_data_168, 1); + if (temp_r29 == 1) { + goto repeat_mess; + } + fn_1_271B4(-1, 0, 0); + for (temp_r31 = 1; temp_r31 <= 10; temp_r31++) { + HuSprTPLvlSet(lbl_1_bss_3A8, 24, 1 - (temp_r31 / 10.0)); + HuPrcVSleep(); + } + + fn_1_16438(); + return 1; + } + else { + _SetFlag(11); + } + GWSystem.mg_next = lbl_1_bss_2E4; + HuDataDirClose(DATADIR_INSTPIC); + fn_1_2783C(4); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_14CFC(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + AnimData *temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + AnimData *temp_r23; + AnimData *temp_r22; + s16 temp_r21; + s16 temp_r20; + s16 sp8; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + lbl_1_bss_2C1C[temp_r31] = temp_r31; + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + for (temp_r27 = 0; temp_r27 < 3 - temp_r31; temp_r27++) { + if (GWPlayerCfg[lbl_1_bss_2C1C[temp_r27]].group > GWPlayerCfg[lbl_1_bss_2C1C[temp_r27 + 1]].group) { + temp_r24 = lbl_1_bss_2C1C[temp_r27]; + lbl_1_bss_2C1C[temp_r27] = lbl_1_bss_2C1C[temp_r27 + 1]; + lbl_1_bss_2C1C[temp_r27 + 1] = temp_r24; + } + } + } + if (lbl_1_bss_3A8 == 0) { + + lbl_1_bss_3A8 = temp_r30 = HuSprGrpCreate(25); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 84), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 200, 0); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + HuSprTPLvlSet(temp_r30, 0, 0.8f); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 85), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 190, 0); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprPosSet(temp_r30, 1, 0, -110); + temp_r26 = 0; + temp_r25 = 0; + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 86), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 190, 0); + HuSprGrpMemberSet(temp_r30, 2, temp_r29); + HuSprPosSet(temp_r30, 2, temp_r26, temp_r25); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 87), MEMORY_DEFAULT_NUM)); + temp_r22 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 88), MEMORY_DEFAULT_NUM)); + for (temp_r31 = temp_r27 = 0; temp_r31 < 9; temp_r31++) { + if (mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3] & 0xF) { + temp_r24 = mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3]; + if (temp_r24 & 0x4) { + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 91), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r23, 180, 0); + HuSprGrpMemberSet(temp_r30, 14, temp_r29); + if (temp_r24 & 0x8) { + HuSprPosSet(temp_r30, 14, temp_r26 + ((temp_r31 % 3) * 56) - 60, temp_r25 + ((temp_r31 / 3) * 56) - 56); + } + else { + HuSprPosSet(temp_r30, 14, temp_r26 + ((temp_r31 % 3) * 56) - 56, temp_r25 + ((temp_r31 / 3) * 56) - 56); + } + temp_r27++; + } + if (temp_r24 & 0x8) { + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 92), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r23, 180, 0); + HuSprGrpMemberSet(temp_r30, 15, temp_r29); + if (temp_r24 & 0x4) { + HuSprPosSet(temp_r30, 15, temp_r26 + ((temp_r31 % 3) * 56) - 48, temp_r25 + ((temp_r31 / 3) * 56) - 56); + } + else { + HuSprPosSet(temp_r30, 15, temp_r26 + ((temp_r31 % 3) * 56) - 56, temp_r25 + ((temp_r31 / 3) * 56) - 56); + } + temp_r27++; + } + if (temp_r24 & 0x3) { + if (mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3] & 0x1) { + temp_r29 = HuSprCreate(temp_r28, 180, 0); + } + else { + temp_r29 = HuSprCreate(temp_r22, 180, 0); + } + HuSprGrpMemberSet(temp_r30, temp_r31 + 3, temp_r29); + HuSprPosSet(temp_r30, temp_r31 + 3, temp_r26 + ((temp_r31 % 3) * 56) - 56, temp_r25 + ((temp_r31 / 3) * 56) - 56); + } + } + } + if (temp_r27 == 0) { + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 91), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r23, 150, 0); + HuSprGrpMemberSet(temp_r30, 14, temp_r29); + HuSprPosSet(temp_r30, 14, temp_r26 + ((temp_r31 % 3) * 56) - 56, temp_r25 + ((temp_r31 / 3) * 56) - 56); + HuSprAttrSet(temp_r30, 14, HUSPR_ATTR_DISPOFF); + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 92), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r23, 150, 0); + HuSprGrpMemberSet(temp_r30, 15, temp_r29); + HuSprPosSet(temp_r30, 15, temp_r26 + ((temp_r31 % 3) * 56) - 56, temp_r25 + ((temp_r31 / 3) * 56) - 56); + HuSprAttrSet(temp_r30, 15, HUSPR_ATTR_DISPOFF); + } + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 89), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 150, 0); + HuSprGrpMemberSet(temp_r30, 12, temp_r29); + HuSprAttrSet(temp_r30, 12, HUSPR_ATTR_DISPOFF); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 90), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 150, 0); + HuSprGrpMemberSet(temp_r30, 13, temp_r29); + HuSprAttrSet(temp_r30, 13, HUSPR_ATTR_DISPOFF); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 101), MEMORY_DEFAULT_NUM)); + temp_r22 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 102), MEMORY_DEFAULT_NUM)); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r29 = HuSprCreate(temp_r28, 130, temp_r31); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 16, temp_r29); + HuSprPosSet(temp_r30, (temp_r31 * 2) + 16, ((temp_r31 % 2) * 314) - 155, ((temp_r31 / 2) * 185) - 110); + temp_r29 = HuSprCreate(temp_r22, 135, temp_r31); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 17, temp_r29); + HuSprTPLvlSet(temp_r30, (temp_r31 * 2) + 17, 0.5f); + HuSprPosSet(temp_r30, (temp_r31 * 2) + 17, ((temp_r31 % 2) * 314) - 155, ((temp_r31 / 2) * 185) - 102); + } + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 37), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 150, 0); + HuSprGrpMemberSet(temp_r30, 24, temp_r29); + HuSprPosSet(temp_r30, 24, 0, 0); + HuSprScaleSet(temp_r30, 24, 0.9f, 0.9f); + HuSprTPLvlSet(temp_r30, 24, 0); + } + if (lbl_1_bss_3AA == 0) { + + lbl_1_bss_3AA = temp_r30 = HuSprGrpCreate(10); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 15), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 200, 0); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + HuSprTPLvlSet(temp_r30, 0, 0.8f); + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 25), MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 190, 0); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprPosSet(temp_r30, 1, 0, 0); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + temp_r20 = lbl_1_bss_2C24[temp_r31] = GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].character; + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 16) + temp_r20, MEMORY_DEFAULT_NUM)); + temp_r29 = HuSprCreate(temp_r28, 190, 0); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 2, temp_r29); + HuSprPosSet(temp_r30, (temp_r31 * 2) + 2, lbl_1_data_19C[temp_r31], 0); + if (sp8 = GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].iscom) { + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 39), MEMORY_DEFAULT_NUM)); + temp_r21 = GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].diff; + } + else { + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 38), MEMORY_DEFAULT_NUM)); + temp_r21 = GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].pad_idx; + } + temp_r29 = HuSprCreate(temp_r28, 180, temp_r21); + HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 3, temp_r29); + HuSprPosSet(temp_r30, (temp_r31 * 2) + 3, lbl_1_data_19C[temp_r31], 24); + } + HuSprGrpPosSet(temp_r30, 800, 240); + } +} + +s32 fn_1_15E98(s16 arg0, s32 arg1) +{ + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + temp_r28 = 4; + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + if (arg0 == GWPlayerCfg[temp_r27].group && GWPlayerCfg[temp_r27].iscom == 0 && temp_r28 > GWPlayerCfg[temp_r27].pad_idx) { + temp_r28 = GWPlayerCfg[temp_r27].pad_idx; + } + } + if (temp_r28 == 4) { + if (arg1 == 0) { + return 1; + } + temp_r30 = lbl_1_bss_3B4[arg0] % 3; + temp_r29 = lbl_1_bss_3B4[arg0] / 3; + temp_r24 = lbl_1_bss_3B0[arg0] % 3; + temp_r23 = lbl_1_bss_3B0[arg0] / 3; + if (--lbl_1_bss_3AC[arg0] != 0) { + return 0; + } + if (temp_r30 == temp_r24 && temp_r29 == temp_r23) { + HuAudFXPlay(1); + mgTicTacToeGrid[temp_r24][temp_r23] |= 4 << arg0; + return 1; + } + else { + lbl_1_bss_3AC[arg0] = 30; + temp_r26 = (temp_r24 - temp_r30 < 0) ? -1 : (temp_r24 - temp_r30 > 0) ? 1 : 0; + temp_r25 = (temp_r23 - temp_r29 < 0) ? -1 : (temp_r23 - temp_r29 > 0) ? 1 : 0; + lbl_1_bss_3B4[arg0] = temp_r30 + temp_r26 + ((temp_r29 + temp_r25) * 3); + HuAudFXPlay(0); + return 0; + } + } + else { + temp_r30 = lbl_1_bss_3B4[arg0] % 3; + temp_r29 = lbl_1_bss_3B4[arg0] / 3; + if (arg1 == 0) { + return 1; + } + if (HuPadBtnDown[temp_r28] & PAD_BUTTON_A) { + if ((mgTicTacToeGrid[temp_r30][temp_r29] & 0x3) == 0) { + mgTicTacToeGrid[temp_r30][temp_r29] |= 4 << arg0; + HuAudFXPlay(1); + return 1; + } + else { + HuAudFXPlay(4); + } + } + if (HuPadDStkRep[temp_r28] == 0) { + return 0; + } + temp_r26 = temp_r25 = 0; + if ((HuPadDStkRep[temp_r28] & PAD_BUTTON_LEFT) && temp_r30 > 0) { + temp_r26 = -1; + } + else if ((HuPadDStkRep[temp_r28] & PAD_BUTTON_RIGHT) && temp_r30 < 2) { + temp_r26 = 1; + } + if ((HuPadDStkRep[temp_r28] & PAD_BUTTON_UP) && temp_r29 > 0) { + temp_r25 = -1; + } + else if ((HuPadDStkRep[temp_r28] & PAD_BUTTON_DOWN) && temp_r29 < 2) { + temp_r25 = 1; + } + if (temp_r26 || temp_r25) { + HuAudFXPlay(0); + } + lbl_1_bss_3B4[arg0] = temp_r30 + temp_r26 + ((temp_r29 + temp_r25) * 3); + return 0; + } +} + +void fn_1_16438(void) +{ + s16 temp_r31; + ModelData *temp_r30; + Vec sp20; + Vec sp14; + Vec sp8; + float temp_f31; + float temp_f30; + + fn_1_25E74(lbl_1_bss_3B8); + fn_1_25584(lbl_1_data_168); + lbl_1_data_168 = lbl_1_bss_3B8 = -1; + temp_r30 = &Hu3DData[lbl_1_bss_2C80[5]]; + sp20 = temp_r30->pos; + sp14.x = 0; + sp14.y = 0; + sp14.z = 640; + VECSubtract(&sp14, &sp20, &sp14); + temp_f30 = 180 + atan2d(sp14.z, sp14.x); + for (temp_r31 = 0; temp_r31 <= 60; temp_r31++) { + if (temp_r31 <= 10) { + temp_f31 = sind((temp_r31 / 10.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3A8, 288, 240 + (16 * temp_f31)); + } + else { + temp_f31 = 1.0 - cosd(((temp_r31 - 10.0) / 50.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3A8, 288, 256 + (-400 * temp_f31)); + } + if (temp_r31 <= 10) { + temp_f31 = sind((temp_r31 / 10.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3AA, 450 + (-16 * temp_f31), 65); + } + else if (temp_r31 < 30) { + temp_f31 = 1 - cosd(((temp_r31 - 10.0) / 20.0) * 90.0); + HuSprGrpPosSet(lbl_1_bss_3AA, 434 + (400 * temp_f31), 65); + } + if (temp_r31 == 29) { + Hu3DMotionTimeSet(lbl_1_bss_2C80[5], 0); + } + if (temp_r31 == 30) { + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[7], 0, 8, HU3D_MOTATTR_LOOP); + } + if (temp_r31 > 30) { + temp_f31 = (temp_r31 - 30.0) / 30.0; + VECScale(&sp14, &sp8, temp_f31); + VECAdd(&sp20, &sp8, &sp8); + Hu3DModelPosSetV(lbl_1_bss_2C80[5], &sp8); + if (temp_r31 <= 40) { + temp_f31 = (temp_r31 - 30) / 10.0; + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, temp_f30 * temp_f31, 0); + } + } + HuPrcVSleep(); + } + Hu3DMotionShiftSet(lbl_1_bss_2C80[5], lbl_1_bss_2C66[6], 0, 8, HU3D_MOTATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = 1.0 - (temp_r31 / 10.0); + Hu3DModelRotSet(lbl_1_bss_2C80[5], 0, temp_f31 * temp_f30, 0); + HuPrcVSleep(); + } + HuSprGrpKill(lbl_1_bss_3A8); + lbl_1_bss_3A8 = 0; + HuSprGrpKill(lbl_1_bss_3AA); + lbl_1_bss_3AA = 0; +} + +s32 fn_1_16B30(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + AnimData *temp_r23; + s16 temp_r22; + s16 temp_r21; + s16 temp_r20; + float temp_f31; + + s16 sp22[9]; + s16 sp1E[2]; + s16 sp1A[2]; + s16 sp16[2]; + s16 sp12[2]; + char spE[2][2]; + + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + if (mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3] & 0x4) { + sp1E[0] = temp_r31; + } + if (mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3] & 0x8) { + sp1E[1] = temp_r31; + } + } + HuPrcSleep(60); + sp16[0] = sp16[1] = 0; + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp16[temp_r31 / 2] += GWPlayerCoinWinGet(lbl_1_bss_2C1C[temp_r31]) + GWPlayerCoinCollectGet(lbl_1_bss_2C1C[temp_r31]); + } + sp12[0] = sp12[1] = 0; + if (sp16[0] != sp16[1]) { + if (sp16[0] > sp16[1]) { + sp12[0] = 1; + } + else { + sp12[1] = 1; + } + } + for (temp_r30 = 0, temp_r28 = -1; temp_r30 < 2; temp_r30++) { + temp_r22 = sp1E[temp_r30] % 3; + temp_r21 = sp1E[temp_r30] / 3; + if (sp12[temp_r30] != 0) { + mgTicTacToeGrid[temp_r22][temp_r21] = (1 << temp_r30); + temp_r28 = temp_r30; + } + else { + mgTicTacToeGrid[temp_r22][temp_r21] &= ~(4 << temp_r30); + } + } + if (lbl_1_data_168 == -1) { + lbl_1_data_168 = fn_1_2530C(0, 0, 0); + } + if (temp_r28 != -1) { + HuWinInsertMesSet(lbl_1_data_168, lbl_1_bss_2C24[temp_r28 * 2], 0); + HuWinInsertMesSet(lbl_1_data_168, lbl_1_bss_2C24[(temp_r28 * 2) + 1], 1); + fn_1_25838(lbl_1_data_168, 0x280016, -1, -1); + } + else { + fn_1_25838(lbl_1_data_168, 0x280013, -1, -1); + } + temp_r26 = espEntry(0x62005D, 100, 0); + espColorSet(temp_r26, 255, 255, 192); + espAttrSet(temp_r26, HUSPR_ATTR_ADDCOL | HUSPR_ATTR_DISPOFF | HUSPR_ATTR_LOOP); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (sp12[temp_r30]) { + if (temp_r31 == 0) { + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 87) + temp_r30, MEMORY_DEFAULT_NUM)); + temp_r24 = HuSprCreate(temp_r23, 170, 0); + HuSprGrpMemberSet(lbl_1_bss_3A8, sp1E[temp_r30] + 3, temp_r24); + HuSprPosSet(lbl_1_bss_3A8, sp1E[temp_r30] + 3, ((sp1E[temp_r30] % 3) * 56) - 56, ((sp1E[temp_r30] / 3) * 56) - 56); + HuSprAttrSet(lbl_1_bss_3A8, sp1E[temp_r30] + 3, HUSPR_ATTR_DISPOFF); + espAttrReset(temp_r26, HUSPR_ATTR_DISPOFF); + espPosSet(temp_r26, (((sp1E[temp_r30] % 3) * 56) + 288.0f) - 56, ((sp1E[temp_r30] / 3) * 56) + 184); + HuAudFXPlay(825); + HuAudFXPlay(826); + } + if (temp_r31 == 8) { + HuSprAttrReset(lbl_1_bss_3A8, sp1E[temp_r30] + 3, HUSPR_ATTR_DISPOFF); + } + if (temp_r31 == 14) { + espKill(temp_r26); + } + } + else { + temp_f31 = 1 - (temp_r31 / 30.0); + HuSprTPLvlSet(lbl_1_bss_3A8, temp_r30 + 14, temp_f31); + } + } + HuPrcVSleep(); + } + HuSprAttrSet(lbl_1_bss_3A8, 14, HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(lbl_1_bss_3A8, 14, 1.0f); + HuSprAttrSet(lbl_1_bss_3A8, 15, HUSPR_ATTR_DISPOFF); + HuSprTPLvlSet(lbl_1_bss_3A8, 15, 1.0f); + for (temp_r31 = 0; temp_r31 < 9; temp_r31++) { + sp22[temp_r31] = 0; + } + temp_r27 = 0; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + for (temp_r31 = 0; temp_r31 < 8; temp_r31++) { + temp_r29 = lbl_1_data_16A[temp_r31 * 3]; + if ((1 << temp_r30) & mgTicTacToeGrid[temp_r29 % 3][temp_r29 / 3]) { + temp_r29 = lbl_1_data_16A[(temp_r31 * 3) + 1]; + if ((1 << temp_r30) & mgTicTacToeGrid[temp_r29 % 3][temp_r29 / 3]) { + temp_r29 = lbl_1_data_16A[(temp_r31 * 3) + 2]; + if ((1 << temp_r30) & mgTicTacToeGrid[temp_r29 % 3][temp_r29 / 3]) { + temp_r29 = lbl_1_data_16A[temp_r31 * 3]; + if (sp22[temp_r29] == 0) { + sp22[temp_r29]++; + temp_r27++; + } + temp_r29 = lbl_1_data_16A[(temp_r31 * 3) + 1]; + if (sp22[temp_r29] == 0) { + sp22[temp_r29]++; + temp_r27++; + } + temp_r29 = lbl_1_data_16A[(temp_r31 * 3) + 2]; + if (sp22[temp_r29] == 0) { + sp22[temp_r29]++; + temp_r27++; + } + } + } + } + } + } + if (temp_r27 == 0) { + sp1A[0] = sp1A[1] = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + temp_r20 = mgTicTacToeGrid[temp_r31][temp_r30]; + if (temp_r20 & 0x1) { + sp1A[0]++; + } + if (temp_r20 & 0x2) { + sp1A[1]++; + } + } + } + if (sp1A[0] + sp1A[1] >= 9) { + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + spE[temp_r31][0] = sp1A[temp_r31] + '0'; + spE[temp_r31][1] = 0; + HuWinInsertMesSet(lbl_1_data_168, MAKE_MESSID_PTR(&spE[temp_r31][0]), (s32)temp_r31); + } + if (sp1A[0] > sp1A[1]) { + temp_r28 = 0; + } + else { + temp_r28 = 1; + } + HuPrcSleep(30); + HuAudFXPlay(2175); + HuWinInsertMesSet(lbl_1_data_168, lbl_1_bss_2C24[(temp_r28 * 2) + 0], 2); + HuWinInsertMesSet(lbl_1_data_168, lbl_1_bss_2C24[(temp_r28 * 2) + 1], 3); + fn_1_25838(lbl_1_data_168, 0x280025, -1, -1); + fn_1_25584(lbl_1_data_168); + lbl_1_data_168 = -1; + return 1; + } + else { + return 0; + } + } + else { + temp_r23 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 93), MEMORY_DEFAULT_NUM)); + temp_r25 = HuSprGrpCreate(temp_r27); + for (temp_r30 = temp_r31 = 0; temp_r30 < 9; temp_r30++) { + if (sp22[temp_r30] == 0) { + continue; + } + temp_r24 = HuSprCreate(temp_r23, 100, 0); + HuSprGrpMemberSet(temp_r25, temp_r31, temp_r24); + HuSprPosSet(temp_r25, temp_r31, (((temp_r30 % 3) * 56) + 288.0f) - 56, ((temp_r30 / 3) * 56) + 184); + HuSprAttrSet(temp_r25, temp_r31, HUSPR_ATTR_LOOP); + temp_r31++; + } + HuPrcSleep(14); + HuSprGrpKill(temp_r25); + HuAudFXPlay(2175); + HuWinInsertMesSet(lbl_1_data_168, lbl_1_bss_2C24[(temp_r28 * 2) + 0], 0); + HuWinInsertMesSet(lbl_1_data_168, lbl_1_bss_2C24[(temp_r28 * 2) + 1], 1); + fn_1_25838(lbl_1_data_168, 0x280017, -1, -1); + fn_1_25584(lbl_1_data_168); + lbl_1_data_168 = -1; + return 1; + } +} + +void fn_1_17A5C(void) +{ + HuSprGrp *gp = &HuSprGrpData[lbl_1_bss_3A8]; + s16 j; + s16 i; + for (j = 0; j <= 30; j++) { + float tplvl = 1.0 - (j / 30.0); + for (i = 3; i < 12; i++) { + if (gp->members[i] != -1) { + HuSprData[gp->members[i]].a = 255.0f * tplvl; + } + } + HuPrcVSleep(); + } + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + mgTicTacToeGrid[i][j] = 0; + } + } +} + +void fn_1_17BE0(void) +{ + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + s16 temp_r22; + s16 temp_r21; + + s16 sp2A[9]; + s16 sp18[9]; + s16 sp8[8]; + for (temp_r26 = 0; temp_r26 < 2; temp_r26++) { + for (temp_r31 = 0; temp_r31 < 8; temp_r31++) { + temp_r28 = 0; + temp_r25 = -1; + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + 0]; + if ((1 << temp_r26) & mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3]) { + temp_r28++; + } + else if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + temp_r25 = temp_r30; + } + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + 1]; + if ((1 << temp_r26) & mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3]) { + temp_r28++; + } + else if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + temp_r25 = temp_r30; + } + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + 2]; + if ((1 << temp_r26) & mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3]) { + temp_r28++; + } + else if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + temp_r25 = temp_r30; + } + if (temp_r28 == 2 && temp_r25 != -1) { + OSReport("%d:LEACH\n", temp_r26); + lbl_1_bss_3B0[temp_r26] = temp_r25; + break; + } + } + if (temp_r31 != 8) { + continue; + } + if (frandmod(5) != 0) { + temp_r29 = temp_r26 ^ 1; + for (temp_r31 = 0; temp_r31 < 8; temp_r31++) { + temp_r28 = 0; + temp_r25 = -1; + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + 0]; + if ((1 << temp_r29) & mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3]) { + temp_r28++; + } + else if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + temp_r25 = temp_r30; + } + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + 1]; + if ((1 << temp_r29) & mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3]) { + temp_r28++; + } + else if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + temp_r25 = temp_r30; + } + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + 2]; + if ((1 << temp_r29) & mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3]) { + temp_r28++; + } + else if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + temp_r25 = temp_r30; + } + if (temp_r28 == 2 && temp_r25 != -1) { + lbl_1_bss_3B0[temp_r26] = temp_r25; + break; + } + } + if (temp_r31 != 8) { + continue; + } + } + for (temp_r31 = temp_r24 = temp_r21 = 0; temp_r31 < 9; temp_r31++) { + if ((1 << temp_r26) & mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3]) { + sp2A[temp_r24] = temp_r31; + temp_r24++; + } + else if ((mgTicTacToeGrid[temp_r31 % 3][temp_r31 / 3] & 0x3) == 0) { + sp18[temp_r21++] = temp_r31; + } + } + if (temp_r24 == 0) { + OSReport("%d:KOMA None\n", temp_r26); + for (temp_r31 = 0; temp_r31 < 50; temp_r31++) { + temp_r30 = lbl_1_data_1AC[frandmod(8)]; + if ((mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) == 0) { + lbl_1_bss_3B0[temp_r26] = temp_r30; + break; + } + } + if (temp_r31 == 50) { + lbl_1_bss_3B0[temp_r26] = sp18[frandmod(temp_r21)]; + } + } + else { + for (temp_r22 = 0; temp_r22 < 50; temp_r22++) { + temp_r29 = sp2A[frandmod(temp_r24)]; + temp_r27 = 0; + if ((temp_r29 % 3) != 0 && (mgTicTacToeGrid[(temp_r29 - 1) % 3][temp_r29 / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 - 1; + } + if ((temp_r29 % 3) != 2 && (mgTicTacToeGrid[(temp_r29 + 1) % 3][temp_r29 / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 + 1; + } + if ((temp_r29 / 3) != 0 && (mgTicTacToeGrid[temp_r29 % 3][(temp_r29 - 3) / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 - 3; + } + if ((temp_r29 / 3) != 2 && (mgTicTacToeGrid[temp_r29 % 3][(temp_r29 + 3) / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 + 3; + } + if ((temp_r29 % 3) != 0 && (temp_r29 / 3) != 0 && (mgTicTacToeGrid[(temp_r29 - 4) % 3][(temp_r29 - 4) / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 - 4; + } + if ((temp_r29 % 3) != 2 && (temp_r29 / 3) != 0 && (mgTicTacToeGrid[(temp_r29 - 2) % 3][(temp_r29 - 2) / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 - 2; + } + if ((temp_r29 % 3) != 0 && (temp_r29 / 3) != 2 && (mgTicTacToeGrid[(temp_r29 + 2) % 3][(temp_r29 + 2) / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 + 2; + } + if ((temp_r29 % 3) != 2 && (temp_r29 / 3) != 2 && (mgTicTacToeGrid[(temp_r29 + 4) % 3][(temp_r29 + 4) / 3] & 0x3) == 0) { + sp8[temp_r27++] = temp_r29 + 4; + } + if (temp_r27 != 0) { + temp_r23 = sp8[frandmod(temp_r27)]; + for (temp_r31 = 0; temp_r31 < 8; temp_r31++) { + temp_r28 = 0; + if (temp_r29 == lbl_1_data_16A[(temp_r31 * 3) + 0] || temp_r29 == lbl_1_data_16A[(temp_r31 * 3) + 1] + || temp_r29 == lbl_1_data_16A[(temp_r31 * 3) + 2]) { + temp_r28++; + } + if (temp_r23 == lbl_1_data_16A[(temp_r31 * 3) + 0] || temp_r23 == lbl_1_data_16A[(temp_r31 * 3) + 1] + || temp_r23 == lbl_1_data_16A[(temp_r31 * 3) + 2]) { + temp_r28++; + } + if (temp_r28 == 2) { + for (temp_r28 = 0; temp_r28 < 3; temp_r28++) { + if (temp_r29 != lbl_1_data_16A[(temp_r31 * 3) + temp_r28] && temp_r23 != lbl_1_data_16A[(temp_r31 * 3) + temp_r28]) { + break; + } + } + temp_r30 = lbl_1_data_16A[(temp_r31 * 3) + temp_r28]; + if (mgTicTacToeGrid[temp_r30 % 3][temp_r30 / 3] & 0x3) { + temp_r30 = -1; + } + break; + } + } + if (temp_r31 == 8 || temp_r30 < 0) { + continue; + } + lbl_1_bss_3B0[temp_r26] = temp_r23; + break; + } + } + if (temp_r22 == 50) { + lbl_1_bss_3B0[temp_r26] = sp18[frandmod(temp_r21)]; + } + } + } + OSReport("com %d,%d\n", lbl_1_bss_3B0[0], lbl_1_bss_3B0[1]); +} diff --git a/src/REL/modeltestDll/main.c b/src/REL/modeltestDll/main.c index 7921f251..cb1c254b 100644 --- a/src/REL/modeltestDll/main.c +++ b/src/REL/modeltestDll/main.c @@ -1,43 +1,40 @@ #define HUSPR_USE_OLD_DEFS -#include "math.h" #include "game/chrman.h" -#include "game/object.h" -#include "game/wipe.h" -#include "game/pad.h" -#include "game/hsfanim.h" -#include "game/hsfmotion.h" -#include "game/hsfex.h" -#include "game/printfunc.h" -#include "game/window.h" #include "game/gamework_data.h" -#include "game/sprite.h" +#include "game/hsfanim.h" +#include "game/hsfex.h" +#include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" #include "REL/modeltestDll.h" // -------------------------------------------------------------------------- // s32 lbl_1_data_0[8] = { - 0x005F001B, - 0x005F0015, - 0x005F0016, - 0x005F0006, - 0x005F0000, - 0x005F0000, - 0x005F0000, - 0x005F0004, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x15), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x04), }; -const f64 unk_rodata_0 = 0.5; -const f64 unk_rodata_8 = 3.0; -omObjData * lbl_1_bss_9A4; -omObjData * lbl_1_bss_9A0; +omObjData *lbl_1_bss_9A4; +omObjData *lbl_1_bss_9A0; // -------------------------------------------------------------------------- // void ObjectSetup(void) { - Process * prc; + Process *prc; OSReport("******* MODELTESTObjectSetup *********\n"); prc = omInitObjMan(0x32, 0x2000); @@ -64,108 +61,110 @@ void ObjectSetup(void) // -------------------------------------------------------------------------- // -char * lbl_1_data_D8[16] = { - "target1A", - "target1B", - "target2A", - "target2B", - "target3A", - "target3B", - "target4A", - "target4B", - "target5A", - "target5B", - "target6A", - "target6B", - "target7A", - "target7B", - "target8A", - "target8B" -}; - +char *lbl_1_data_D8[16] = { "target1A", "target1B", "target2A", "target2B", "target3A", "target3B", "target4A", "target4B", "target5A", "target5B", + "target6A", "target6B", "target7A", "target7B", "target8A", "target8B" }; HsfanimStruct00 lbl_1_data_118 = { - /* unk00 */ 40, - /* unk02 */ {0, 0}, - /* unk04 */ 50.0f, - /* unk08 */ 0.0f, - /* unk0C */ 90.0f, - /* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f}, - /* unk1C */ 50.0f, - /* unk20 */ 0.800000011920929f, - /* unk24 */ 20.0f, - /* unk28 */ 0.9900000095367432f, - /* unk2C */ 4, - /* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}}, - /* unk3E */ {{ /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}}, + /* unk00 */ 40, + /* unk02 */ { 0, 0 }, + /* unk04 */ 50.0f, + /* unk08 */ 0.0f, + /* unk0C */ 90.0f, + /* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f }, + /* unk1C */ 50.0f, + /* unk20 */ 0.800000011920929f, + /* unk24 */ 20.0f, + /* unk28 */ 0.9900000095367432f, + /* unk2C */ 4, + /* unk2E */ + { { /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255 }, + { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255 } }, + /* unk3E */ + { { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0 }, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0 }, + { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0 }, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0 } }, }; -HsfanimStruct00 lbl_1_data_168[2] = { -{ - /* unk00 */ 50, - /* unk02 */ {0, 0}, - /* unk04 */ 5.0f, - /* unk08 */ 10.0f, - /* unk0C */ 10.0f, - /* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f}, - /* unk1C */ 2.0f, - /* unk20 */ 1.0099999904632568f, - /* unk24 */ 30.0f, - /* unk28 */ 0.9900000095367432f, - /* unk2C */ 2, - /* unk2E */ {{ /* r */ 48, /* g */ 48, /* b */ 8, /* a */ 255}, { /* r */ 64, /* g */ 48, /* b */ 8, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, - /* unk3E */ {{ /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, -}, -{ - /* unk00 */ 30, - /* unk02 */ {0, 0}, - /* unk04 */ 3.299999952316284f, - /* unk08 */ 10.0f, - /* unk0C */ 0.0f, - /* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f}, - /* unk1C */ 2.0f, - /* unk20 */ 1.0f, - /* unk24 */ 20.0f, - /* unk28 */ 0.9800000190734863f, - /* unk2C */ 2, - /* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 64, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, - /* unk3E */ {{ /* r */ 255, /* g */ 128, /* b */ 128, /* a */ 0}, { /* r */ 255, /* g */ 64, /* b */ 32, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, -}}; +HsfanimStruct00 lbl_1_data_168[2] = { { + /* unk00 */ 50, + /* unk02 */ { 0, 0 }, + /* unk04 */ 5.0f, + /* unk08 */ 10.0f, + /* unk0C */ 10.0f, + /* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f }, + /* unk1C */ 2.0f, + /* unk20 */ 1.0099999904632568f, + /* unk24 */ 30.0f, + /* unk28 */ 0.9900000095367432f, + /* unk2C */ 2, + /* unk2E */ + { { /* r */ 48, /* g */ 48, /* b */ 8, /* a */ 255 }, { /* r */ 64, /* g */ 48, /* b */ 8, /* a */ 255 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, + /* unk3E */ + { { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, + }, + { + /* unk00 */ 30, + /* unk02 */ { 0, 0 }, + /* unk04 */ 3.299999952316284f, + /* unk08 */ 10.0f, + /* unk0C */ 0.0f, + /* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f }, + /* unk1C */ 2.0f, + /* unk20 */ 1.0f, + /* unk24 */ 20.0f, + /* unk28 */ 0.9800000190734863f, + /* unk2C */ 2, + /* unk2E */ + { { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 64, /* a */ 255 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, + /* unk3E */ + { { /* r */ 255, /* g */ 128, /* b */ 128, /* a */ 0 }, { /* r */ 255, /* g */ 64, /* b */ 32, /* a */ 0 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, + } }; HsfanimStruct00 lbl_1_data_208 = { - /* unk00 */ 40, - /* unk02 */ {0, 0}, - /* unk04 */ 50.0f, - /* unk08 */ 0.0f, - /* unk0C */ 180.0f, - /* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f}, - /* unk1C */ 30.0f, - /* unk20 */ 0.8999999761581421f, - /* unk24 */ 20.0f, - /* unk28 */ 0.9900000095367432f, - /* unk2C */ 4, - /* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}}, - /* unk3E */ {{ /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, + /* unk00 */ 40, + /* unk02 */ { 0, 0 }, + /* unk04 */ 50.0f, + /* unk08 */ 0.0f, + /* unk0C */ 180.0f, + /* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f }, + /* unk1C */ 30.0f, + /* unk20 */ 0.8999999761581421f, + /* unk24 */ 20.0f, + /* unk28 */ 0.9900000095367432f, + /* unk2C */ 4, + /* unk2E */ + { { /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255 }, + { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255 } }, + /* unk3E */ + { { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, }; HsfanimStruct00 lbl_1_data_258 = { - /* unk00 */ 30, - /* unk02 */ {0, 0}, - /* unk04 */ 50.0f, - /* unk08 */ 0.0f, - /* unk0C */ 90.0f, - /* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f}, - /* unk1C */ 30.0f, - /* unk20 */ 0.949999988079071f, - /* unk24 */ 20.0f, - /* unk28 */ 0.9900000095367432f, - /* unk2C */ 2, - /* unk2E */ {{ /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, - /* unk3E */ {{ /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}}, + /* unk00 */ 30, + /* unk02 */ { 0, 0 }, + /* unk04 */ 50.0f, + /* unk08 */ 0.0f, + /* unk0C */ 90.0f, + /* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f }, + /* unk1C */ 30.0f, + /* unk20 */ 0.949999988079071f, + /* unk24 */ 20.0f, + /* unk28 */ 0.9900000095367432f, + /* unk2C */ 2, + /* unk2E */ + { { /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, + /* unk3E */ + { { /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255 }, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255 }, + { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 }, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0 } }, }; -const Point3d lbl_1_rodata_38 = {0.0f, 0.0f, 0.0f}; -const Point3d lbl_1_rodata_44 = {0.0f, 1.0f, 0.0f}; +const Vec lbl_1_rodata_38 = { 0.0f, 0.0f, 0.0f }; +const Vec lbl_1_rodata_44 = { 0.0f, 1.0f, 0.0f }; s16 lbl_1_bss_99C; s16 lbl_1_bss_99A; s16 lbl_1_bss_98A[8]; @@ -178,35 +177,35 @@ s16 lbl_1_bss_664[256]; s16 lbl_1_bss_460[258]; s16 lbl_1_bss_45A[3]; s16 lbl_1_bss_458; -AnimData * lbl_1_bss_454; +AnimData *lbl_1_bss_454; s32 unk_bss_450; HuObjUnk lbl_1_bss_40[20]; -void * lbl_1_bss_30[4]; +void *lbl_1_bss_30[4]; u8 lbl_1_bss_2C; f32 lbl_1_bss_28; s16 lbl_1_bss_24; f32 lbl_1_bss_20; -Process * lbl_1_bss_18[2]; -Process * lbl_1_bss_14; -Process * lbl_1_bss_10; +Process *lbl_1_bss_18[2]; +Process *lbl_1_bss_14; +Process *lbl_1_bss_10; s32 lbl_1_bss_C; f32 lbl_1_bss_8; static u8 unk_bss[8]; // -------------------------------------------------------------------------- // -void fn_1_29C(omObjData * arg0) +void fn_1_29C(omObjData *arg0) { - Point3d sp20; - Point3d sp14; - Point3d sp8; + Vec sp20; + Vec sp14; + Vec sp8; Mtx sp2C; s16 var_r31; s16 temp_r27; u32 temp_r26; s16 temp_r3; - void * temp_r29; - AnimData * temp_r28; + void *temp_r29; + AnimData *temp_r28; f32 temp_r5; f32 temp_f30; s16 chrIdx; @@ -226,8 +225,7 @@ void fn_1_29C(omObjData * arg0) sp20.z = 1000.0f; Hu3DShadowPosSet(&sp20, &sp8, &sp14); - for (var_r31 = 0; var_r31 < 1; ++var_r31) - { + for (var_r31 = 0; var_r31 < 1; ++var_r31) { chrIdx = 0; lbl_1_bss_98A[var_r31] = CharModelCreate(chrIdx, 2); if (var_r31 == 1) { @@ -242,9 +240,9 @@ void fn_1_29C(omObjData * arg0) lbl_1_bss_88A[var_r31][5] = CharModelMotionCreate(chrIdx, lbl_1_data_0[5]); lbl_1_bss_88A[var_r31][6] = CharModelMotionCreate(chrIdx, lbl_1_data_0[6]); lbl_1_bss_88A[var_r31][7] = CharModelMotionCreate(chrIdx, lbl_1_data_0[7]); - lbl_1_bss_88A[var_r31][0] = CharModelMotionCreate(chrIdx, 0x5F004D); + lbl_1_bss_88A[var_r31][0] = CharModelMotionCreate(chrIdx, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x4D)); CharModelMotionSet(chrIdx, lbl_1_bss_88A[var_r31][0]); - Hu3DModelAttrSet(lbl_1_bss_98A[var_r31], 0x40000001U); + Hu3DModelAttrSet(lbl_1_bss_98A[var_r31], HU3D_MOTATTR_LOOP); Hu3DModelPosSet(lbl_1_bss_98A[var_r31], (var_r31 / 4 * 0xC8) - 100, 0.0f, -(var_r31 % 4) * 0x96); CharModelMotionDataClose(chrIdx); } @@ -256,26 +254,27 @@ void fn_1_29C(omObjData * arg0) temp_r5 = OSTicksToMicroseconds(OSGetTick() - temp_r26); OSReport("time %f\n", US_TO_60TH_SEC(temp_r5)); - var_r31 = Hu3DModelCreateFile(0x700024); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_SAF, 0x24)); Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f); Hu3DModelShadowMapSet(var_r31); - var_r31 = Hu3DModelCreateFile(0x26001E); - temp_r27 = Hu3DJointMotion(var_r31, HuDataSelHeapReadNum(0x26002F, 0x10000000, 2)); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M407, 0x1E)); + temp_r27 = Hu3DJointMotion(var_r31, HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M407, 0x2F), MEMORY_DEFAULT_NUM, 2)); Hu3DMotionSet(var_r31, temp_r27); - Hu3DModelAttrSet(var_r31, 0x40000001U); + Hu3DModelAttrSet(var_r31, HU3D_MOTATTR_LOOP); for (var_r31 = 0; var_r31 < 10; ++var_r31) { if (var_r31 == 0) { - lbl_1_bss_664[var_r31] = Hu3DModelCreateFile(0x700019); - } else { + lbl_1_bss_664[var_r31] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_SAF, 0x19)); + } + else { lbl_1_bss_664[var_r31] = Hu3DModelLink(lbl_1_bss_664[0]); } Hu3DModelShadowSet(lbl_1_bss_664[var_r31]); - Hu3DModelPosSet(lbl_1_bss_664[var_r31], ((( var_r31 / 5) * 0x1F4) + 0xC8), 0.0f, (-( var_r31 % 5) * 0x12C)); - Hu3DModelAttrSet(lbl_1_bss_664[var_r31], 0x4000U); - Hu3DModelAttrSet(lbl_1_bss_664[var_r31], 0x40000001U); + Hu3DModelPosSet(lbl_1_bss_664[var_r31], (((var_r31 / 5) * 0x1F4) + 0xC8), 0.0f, (-(var_r31 % 5) * 0x12C)); + Hu3DModelAttrSet(lbl_1_bss_664[var_r31], HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(lbl_1_bss_664[var_r31], HU3D_MOTATTR_LOOP); } - temp_r29 = HuDataSelHeapReadNum(0x700013, 0x10000000, 2); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_SAF, 0x13), MEMORY_DEFAULT_NUM, 2); temp_r28 = HuSprAnimRead(temp_r29); lbl_1_bss_99C = HuSprGrpCreate(0x14); @@ -289,7 +288,7 @@ void fn_1_29C(omObjData * arg0) HuSprGrpDrawNoSet(lbl_1_bss_99C, 0x40); lbl_1_bss_458 = 0x293; lbl_1_bss_45A[0] = MGSeqTimerCreate(lbl_1_bss_458 / 60); - temp_r29 = HuDataSelHeapReadNum(0x120001, 0x10000000, 2); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x01), MEMORY_DEFAULT_NUM, 2); temp_r28 = HuSprAnimRead(temp_r29); lbl_1_bss_888 = Hu3DParManCreate(temp_r28, 0x3E8, &lbl_1_data_208); Hu3DParManAttrSet(lbl_1_bss_888, 0x45); @@ -302,14 +301,14 @@ void fn_1_29C(omObjData * arg0) Hu3DParManVecSet(lbl_1_bss_884, 0.0f, 1.0f, 0.0f); Hu3DParManVacumeSet(lbl_1_bss_884, 500.0f, 0.0f, 0.0f, 1.0f); Hu3DParManColorSet(lbl_1_bss_884, 0); - temp_r29 = HuDataSelHeapReadNum(0x120002, 0x10000000, 2); + temp_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x02), MEMORY_DEFAULT_NUM, 2); temp_r28 = HuSprAnimRead(temp_r29); for (var_r31 = 0; var_r31 < 10; ++var_r31) { lbl_1_bss_864[var_r31] = Hu3DParManCreate(temp_r28, 0x1F4, &lbl_1_data_168[0]); Hu3DParManAttrSet(lbl_1_bss_864[var_r31], 0x864); Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_864[var_r31]), 1U); - Hu3DParManPosSet(lbl_1_bss_864[var_r31], (100.0 * sin((M_PI * (36.0f * var_r31)) / 180.0)), 0.0f, 100.0 * cos((M_PI * (36.0f * var_r31)) / 180.0)); + Hu3DParManPosSet(lbl_1_bss_864[var_r31], (100.0 * sind(36.0f * var_r31)), 0.0f, 100.0 * cosd(36.0f * var_r31)); Hu3DParManRotSet(lbl_1_bss_864[var_r31], -90.0f, 0.0f, 0.0f); } @@ -320,9 +319,7 @@ void fn_1_29C(omObjData * arg0) // -------------------------------------------------------------------------- // -s32 unrefData[] = { - 0,0,0 -}; +s32 unrefData[] = { 0, 0, 0 }; // -------------------------------------------------------------------------- // @@ -331,7 +328,7 @@ void fn_1_F38(void) f32 var_f31; var_f31 = 0.0f; - while(TRUE) { + while (TRUE) { Hu3DModelRotSet(lbl_1_bss_460[0], 0.0f, var_f31, 0.0f); var_f31 += 1.0f; HuPrcVSleep(); @@ -340,7 +337,8 @@ void fn_1_F38(void) // -------------------------------------------------------------------------- // -static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) { +static inline void HuControlCamCenter(Vec *sp18, Vec *sp30) +{ s8 temp_r28; temp_r28 = HuPadSubStkX[0] & 0xF8; @@ -349,7 +347,7 @@ static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) { Center.y += 0.05f * (sp30->y * temp_r28); Center.z += 0.05f * (sp30->z * temp_r28); } - PSVECNormalize(sp18, sp30); + VECNormalize(sp18, sp30); temp_r28 = -(HuPadSubStkY[0] & 0xF8); if (temp_r28 != 0) { Center.x += 0.05f * (sp30->x * temp_r28); @@ -360,18 +358,16 @@ static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) { // -------------------------------------------------------------------------- // -const HuUnkF9C2 lbl_1_rodata_B8 = { - {8, 6, 4, 7, 9, 10, 11} -}; +const HuUnkF9C2 lbl_1_rodata_B8 = { { 8, 6, 4, 7, 9, 10, 11 } }; // -------------------------------------------------------------------------- // -void fn_1_F9C(struct om_obj_data * omData) +void fn_1_F9C(struct om_obj_data *omData) { - Point3d sp3C; - Point3d sp30; - Point3d sp24; - Point3d sp18; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; f32 temp_f31; s32 var_r31; s16 var_r30; @@ -421,40 +417,40 @@ void fn_1_F9C(struct om_obj_data * omData) s32 var_fake; while (0) { - (void) temp_f30; - (void) temp_f30; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_fake; - (void) var_fake; - (void) var_fake; - (void) var_fake; - (void) var_fake; - (void) var_fake; - (void) var_fake; - (void) var_fake; - (void) var_fake; + (void)temp_f30; + (void)temp_f30; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_fake; + (void)var_fake; + (void)var_fake; + (void)var_fake; + (void)var_fake; + (void)var_fake; + (void)var_fake; + (void)var_fake; + (void)var_fake; } } @@ -466,31 +462,31 @@ void fn_1_F9C(struct om_obj_data * omData) } } - sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))); - sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0))); - sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)))); + sp3C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + sp3C.y = Center.y + CZoom * -sind(CRot.x); + sp3C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); sp30.x = Center.x - sp3C.x; sp30.y = Center.y - sp3C.y; sp30.z = Center.z - sp3C.z; - sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - sp24.y = cos((M_PI * CRot.x) / 180.0); - sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); + sp24.x = sind(CRot.y) * sind(CRot.x); + sp24.y = cosd(CRot.x); + sp24.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; - sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0)); + sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cosd(temp_f31)) + + sp24.y * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) - sp30.z * sind(temp_f31)) + + sp24.z * (sp30.x * sp30.z * (1.0f - cosd(temp_f31)) + sp30.y * sind(temp_f31)); - sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0)) - + sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0)); + sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cosd(temp_f31)) + + sp24.x * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) + sp30.z * sind(temp_f31)) + + sp24.z * (sp30.y * sp30.z * (1.0f - cosd(temp_f31)) - sp30.x * sind(temp_f31)); - sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0)) - + (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0))); + sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cosd(temp_f31)) + + (sp24.x * (sp30.x * sp30.z * (1.0 - cosd(temp_f31)) - sp30.y * sind(temp_f31)) + + sp24.y * (sp30.y * sp30.z * (1.0 - cosd(temp_f31)) + sp30.x * sind(temp_f31))); - PSVECCrossProduct(&sp24, &sp30, &sp30); - PSVECNormalize(&sp30, &sp30); + VECCrossProduct(&sp24, &sp30, &sp30); + VECNormalize(&sp30, &sp30); if (lbl_1_bss_C == 0) { HuControlCamCenter(&sp18, &sp30); @@ -543,8 +539,8 @@ void fn_1_20F4(void) { s16 temp_r3; s16 var_r29; - HsfObject * temp_r3_2; - HuObjUnk * temp_r31; + HsfObject *temp_r3_2; + HuObjUnk *temp_r31; Mtx spC0; Vec sp24; Mtx sp90; @@ -553,49 +549,38 @@ void fn_1_20F4(void) Vec sp18; Vec spC; f32 temp_f27; - f32 var_f29; // ! - uninitialized - s16 var_r27; // ! - uninitialized + f32 var_f29; // ! - uninitialized + s16 var_r27; // ! - uninitialized s32 var_r26; f32 temp_f30; - temp_r3 = Hu3DModelCreateFile(0x6C0000); + temp_r3 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0x00)); Hu3DModelPosSet(temp_r3, 0.0f, 0.0f, 100.0f); - for (var_r29 = 0; var_r29 < 16; ++var_r29) - { + for (var_r29 = 0; var_r29 < 16; ++var_r29) { OSReport("%s\n", lbl_1_data_D8[var_r29]); temp_r3_2 = Hu3DModelObjPtrGet(temp_r3, lbl_1_data_D8[var_r29]); lbl_1_bss_40[var_r29].obj = temp_r3_2; Hu3DMotionNoMotSet(temp_r3, lbl_1_data_D8[var_r29], 0x380); - lbl_1_bss_40[var_r29].pos.x = temp_r3_2->data.base.pos.x; - lbl_1_bss_40[var_r29].pos.y = temp_r3_2->data.base.pos.y; - lbl_1_bss_40[var_r29].pos.z = temp_r3_2->data.base.pos.z; - lbl_1_bss_40[var_r29].rot.x = temp_r3_2->data.base.rot.x; - lbl_1_bss_40[var_r29].rot.y = temp_r3_2->data.base.rot.y; - lbl_1_bss_40[var_r29].rot.z = temp_r3_2->data.base.rot.z; + lbl_1_bss_40[var_r29].pos.x = temp_r3_2->data.base.pos.x; + lbl_1_bss_40[var_r29].pos.y = temp_r3_2->data.base.pos.y; + lbl_1_bss_40[var_r29].pos.z = temp_r3_2->data.base.pos.z; + lbl_1_bss_40[var_r29].rot.x = temp_r3_2->data.base.rot.x; + lbl_1_bss_40[var_r29].rot.y = temp_r3_2->data.base.rot.y; + lbl_1_bss_40[var_r29].rot.z = temp_r3_2->data.base.rot.z; lbl_1_bss_40[var_r29].scale.x = temp_r3_2->data.base.scale.x; lbl_1_bss_40[var_r29].scale.y = temp_r3_2->data.base.scale.y; lbl_1_bss_40[var_r29].scale.z = temp_r3_2->data.base.scale.z; - OSReport( - "%d:(%3.2f,%3.2f,%3.2f),(%3.2f,%3.2f,%3.2f)\n", - var_r29, - temp_r3_2->data.base.pos.x, - temp_r3_2->data.base.pos.y, - temp_r3_2->data.base.pos.z, - temp_r3_2->data.base.rot.x, - temp_r3_2->data.base.rot.y, - temp_r3_2->data.base.rot.z - ); + OSReport("%d:(%3.2f,%3.2f,%3.2f),(%3.2f,%3.2f,%3.2f)\n", var_r29, temp_r3_2->data.base.pos.x, temp_r3_2->data.base.pos.y, + temp_r3_2->data.base.pos.z, temp_r3_2->data.base.rot.x, temp_r3_2->data.base.rot.y, temp_r3_2->data.base.rot.z); } - while (TRUE) - { + while (TRUE) { Hu3DModelObjMtxGet(temp_r3, "ske_skirt", sp30); - for (var_r29 = 0; var_r29 < 8; ++var_r29) - { + for (var_r29 = 0; var_r29 < 8; ++var_r29) { temp_r31 = &lbl_1_bss_40[var_r29 * 2]; temp_r31->obj->data.curr.rot.x = temp_r31->rot.x; temp_r31->obj->data.curr.rot.y = temp_r31->rot.y; @@ -610,16 +595,16 @@ void fn_1_20F4(void) Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0); Hu3DMtxTransGet(spC0, &sp18); - PSMTXInverse(sp30, sp60); + MTXInverse(sp30, sp60); Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0); Hu3DMtxTransGet(spC0, &sp18); - PSMTXMultVec(sp60, &sp18, &sp18); + MTXMultVec(sp60, &sp18, &sp18); - temp_f27 = 180.0 * (atan2(sp18.z, sp18.x) / M_PI); + temp_f27 = atan2d(sp18.z, sp18.x); temp_r31 = &lbl_1_bss_40[var_r29 * 2]; - temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sin((M_PI * temp_f27) / 180.0) * sin((M_PI * var_r27) / 180.0)))); + temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sind(temp_f27) * sind(var_r27)))); temp_r31->obj->data.curr.rot.y = temp_r31->rot.y; - temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cos((M_PI * var_r27) / 180.0)); + temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cosd(var_r27)); Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0); Hu3DMtxTransGet(spC0, &sp24); @@ -634,16 +619,17 @@ void fn_1_20F4(void) if (HuPadSubStkX[1] < 0) { var_r26 = -HuPadSubStkX[1]; - } else { + } + else { var_r26 = HuPadSubStkX[1]; } - if (var_r26 < 0xA && ABS(HuPadSubStkY[1]) < 0xA) { var_r27 = 0x168; var_f29 = 0.0f; - } else { - var_r27 = 180.0 * (atan2(HuPadSubStkX[1], HuPadSubStkY[1]) / M_PI); + } + else { + var_r27 = atan2d(HuPadSubStkX[1], HuPadSubStkY[1]); temp_f30 = (HuPadSubStkX[1] * HuPadSubStkX[1]) + (HuPadSubStkY[1] * HuPadSubStkY[1]); var_f29 = sqrtf(temp_f30); if (var_f29 > 80.0f) { @@ -657,25 +643,26 @@ void fn_1_20F4(void) // -------------------------------------------------------------------------- // -void fn_1_28F8(Point3d * arg0, Point3d * arg1) +void fn_1_28F8(Vec *arg0, Vec *arg1) { - Point3d spC; + Vec spC; Mtx sp18; - CameraData * cam; + CameraData *cam; f32 temp_f31; f32 temp_f30; cam = &Hu3DCamera[0]; C_MTXLookAt(sp18, &cam->pos, &cam->up, &cam->target); - PSMTXMultVec(sp18, arg0, &spC); + MTXMultVec(sp18, arg0, &spC); - temp_f31 = (1.2f * (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0))))); - temp_f30 = (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0)))); + temp_f31 = (1.2f * (spC.z * (sind(cam->fov / 2) / (cosd(cam->fov / 2))))); + temp_f30 = (spC.z * (sind(cam->fov / 2) / (cosd(cam->fov / 2)))); arg1->x = 288.0f + (spC.x * (288.0f / -temp_f31)); arg1->y = 240.0f + (spC.y * (240.0f / temp_f30)); } -void fn_1_2AFC(void) { +void fn_1_2AFC(void) +{ s16 temp_r3; HuWinInit(1); @@ -683,7 +670,7 @@ void fn_1_2AFC(void) { HuWinMesSpeedSet(temp_r3, 3); while (TRUE) { - HuWinMesSet(temp_r3, 0x200011); + HuWinMesSet(temp_r3, MAKE_MESSID(0x20, 0x11)); HuWinMesWait(temp_r3); } } @@ -692,12 +679,65 @@ void fn_1_2AFC(void) { // unreferenced data u8 lbl_1_data_322[54] = { - 255, 255, 255, 255, 0, 0, 60, 68, 155, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 68, 155, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, + 255, + 255, + 255, + 255, + 0, + 0, + 60, + 68, + 155, + 166, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 60, + 68, + 155, + 166, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 63, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 63, + 0, + 0, + 0, + 0, + 0, + 0, + 0, }; // -------------------------------------------------------------------------- // -void fn_1_2B68(ModelData * mdl, Mtx arg1) +void fn_1_2B68(ModelData *mdl, Mtx arg1) { GXColor sp17; Mtx sp150; @@ -708,7 +748,7 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) GXTexObj sp30; f32 sp18[2][3]; Mtx44 sp50; - AnimBmpData * sp10; + AnimBmpData *sp10; f32 temp_f31; f32 var_f30; // ! - uninitialized f32 var_f29; // ! - uninitialized @@ -716,7 +756,7 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) f32 var_f27; // ! - uninitialized if (!lbl_1_bss_30[0]) { - lbl_1_bss_30[0] = HuMemDirectMallocNum(HEAP_SYSTEM, FB_SIZE(640, 480), 0x10000000); + lbl_1_bss_30[0] = HuMemDirectMallocNum(HEAP_SYSTEM, FB_SIZE(640, 480), MEMORY_DEFAULT_NUM); } GXSetTexCopySrc(0, 0, 640, 480); @@ -732,24 +772,19 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0U); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0U); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0U); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); GXSetCullMode(GX_CULL_NONE); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); GXSetNumTexGens(1); - GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3CU, 0U, 0x7DU); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetNumTevStages(1); - sp17.r = - sp17.g = - sp17.b = - sp17.a = 255; + sp17.r = sp17.g = sp17.b = sp17.a = 255; GXSetChanMatColor(GX_COLOR0A0, sp17); - sp17.r = - sp17.g = - sp17.b = 128; + sp17.r = sp17.g = sp17.b = 128; sp17.a = 255; GXSetChanAmbColor(GX_COLOR0A0, sp17); @@ -759,10 +794,10 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); GXSetAlphaCompare(GX_GEQUAL, 1U, GX_AOP_AND, GX_GEQUAL, 1U); GXSetZCompLoc(0U); - PSMTXIdentity(arg1); + MTXIdentity(arg1); GXLoadPosMtxImm(arg1, 0U); - PSMTXInvXpose(arg1, sp90); + MTXInvXpose(arg1, sp90); GXLoadNrmMtxImm(sp90, 0); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); @@ -776,7 +811,7 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) GXLoadTexObj(&sp30, GX_TEXMAP0); GXSetNumIndStages(1U); - PSMTXScale(sp150, 0.1f, 0.1f, 0.0f); + MTXScale(sp150, 0.1f, 0.1f, 0.0f); sp18[0][0] = sp150[0][0]; sp18[0][1] = sp150[0][1]; sp18[0][2] = 0.0f; @@ -784,12 +819,12 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) sp18[1][1] = sp150[1][1]; sp18[1][2] = 0.0f; - PSMTXRotRad(spF0, 0x58, -1.5707964f); + MTXRotRad(spF0, 0x58, -1.5707964f); mtxRot(spF0, 0.0f, 0.0f, 0.0f); temp_f31 = 0.0015625f; - PSMTXScale(sp120, temp_f31, temp_f31, temp_f31); - PSMTXConcat(sp120, spF0, sp150); - PSMTXTrans(spC0, 0.5f, 0.0f, 0.5f); + MTXScale(sp120, temp_f31, temp_f31, temp_f31); + MTXConcat(sp120, spF0, sp150); + MTXTrans(spC0, 0.5f, 0.0f, 0.5f); GXLoadTexMtxImm(sp150, 0x1EU, GX_MTX2x4); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1EU, 0U, 0x7DU); GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP1); diff --git a/src/REL/modeltestDll/modeltest00.c b/src/REL/modeltestDll/modeltest00.c index 9438febb..03f4fd71 100644 --- a/src/REL/modeltestDll/modeltest00.c +++ b/src/REL/modeltestDll/modeltest00.c @@ -1,27 +1,28 @@ -#include "math.h" #include "game/chrman.h" -#include "game/wipe.h" #include "game/pad.h" +#include "game/wipe.h" +#include "math.h" + #include "REL/modeltestDll.h" // -------------------------------------------------------------------------- // -omObjData * unk_bss_9FC; -omObjData * lbl_1_bss_9F8; -omObjData * lbl_1_bss_9F4; +omObjData *unk_bss_9FC; +omObjData *lbl_1_bss_9F8; +omObjData *lbl_1_bss_9F4; s16 lbl_1_bss_9EC[4]; s16 lbl_1_bss_9AC[4][8]; -Process * lbl_1_bss_9A8; -u16 lbl_1_data_358[4] = {1, 2, 4, 8}; +Process *lbl_1_bss_9A8; +u16 lbl_1_data_358[4] = { 1, 2, 4, 8 }; // -------------------------------------------------------------------------- // void fn_1_34B0() { - Process * temp_r30; + Process *temp_r30; s16 var_r31; - + OSReport("******* MODELTESTObjectSetup *********\n"); temp_r30 = omInitObjMan(0x32, 0x2000); @@ -33,8 +34,7 @@ void fn_1_34B0() Center.z = 0.0f; CZoom = 400.0f; - for (var_r31 = 0; var_r31 < 4; ++var_r31) - { + for (var_r31 = 0; var_r31 < 4; ++var_r31) { Hu3DCameraCreate(lbl_1_data_358[var_r31]); Hu3DCameraPerspectiveSet(lbl_1_data_358[var_r31], 45.0f, 20.0f, 20000.0f, 1.2f); Hu3DCameraViewportSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, ((var_r31 & 2) != 0) ? 0xF0 : 0, 320.0f, 240.0f, 0.0f, 1.0f); @@ -51,7 +51,8 @@ void fn_1_34B0() // -------------------------------------------------------------------------- // -static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) { +static inline void HuControlCamCenter(Vec *sp18, Vec *sp30) +{ s8 temp_r28; temp_r28 = HuPadSubStkX[0] & 0xF8; @@ -60,7 +61,7 @@ static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) { Center.y += 0.05f * (sp30->y * temp_r28); Center.z += 0.05f * (sp30->z * temp_r28); } - PSVECNormalize(sp18, sp30); + VECNormalize(sp18, sp30); temp_r28 = -(HuPadSubStkY[0] & 0xF8); if (temp_r28 != 0) { Center.x += 0.05f * (sp30->x * temp_r28); @@ -73,12 +74,12 @@ static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) { void fn_1_37DC(omObjData *) { - Point3d sp3C; - Point3d sp30; - Point3d sp24; - Point3d sp18; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; float temp_f31; - + if ((HuPadBtnDown[0] & PAD_BUTTON_START) != 0) { if (lbl_1_bss_9A8) { HuPrcKill(lbl_1_bss_9A8); @@ -103,79 +104,78 @@ void fn_1_37DC(omObjData *) CZoom += HuPadTrigL[0] / 2; CZoom -= HuPadTrigR[0] / 2; - sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))); - sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0))); - sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)))); + sp3C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + sp3C.y = Center.y + CZoom * -sind(CRot.x); + sp3C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); sp30.x = Center.x - sp3C.x; sp30.y = Center.y - sp3C.y; sp30.z = Center.z - sp3C.z; - sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - sp24.y = cos((M_PI * CRot.x) / 180.0); - sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); + sp24.x = sind(CRot.y) * sind(CRot.x); + sp24.y = cosd(CRot.x); + sp24.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; - - sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0)); - sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0)) - + sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0)); - - sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0)) - + (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0))); + sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cosd(temp_f31)) + + sp24.y * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) - sp30.z * sind(temp_f31)) + + sp24.z * (sp30.x * sp30.z * (1.0f - cosd(temp_f31)) + sp30.y * sind(temp_f31)); - PSVECCrossProduct(&sp24, &sp30, &sp30); - PSVECNormalize(&sp30, &sp30); + sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cosd(temp_f31)) + + sp24.x * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) + sp30.z * sind(temp_f31)) + + sp24.z * (sp30.y * sp30.z * (1.0f - cosd(temp_f31)) - sp30.x * sind(temp_f31)); + + sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cosd(temp_f31)) + + (sp24.x * (sp30.x * sp30.z * (1.0 - cosd(temp_f31)) - sp30.y * sind(temp_f31)) + + sp24.y * (sp30.y * sp30.z * (1.0 - cosd(temp_f31)) + sp30.x * sind(temp_f31))); + + VECCrossProduct(&sp24, &sp30, &sp30); + VECNormalize(&sp30, &sp30); HuControlCamCenter(&sp18, &sp30); } // -------------------------------------------------------------------------- // -void fn_1_439C(omObjData * ) +void fn_1_439C(omObjData *) { s16 var_r31; f32 temp_f30; f32 temp_f31; f32 sp10; - Point3d sp2C; - Point3d sp20; - Point3d sp14; - for (var_r31 = 0; var_r31 < 4; ++var_r31) - { + Vec sp2C; + Vec sp20; + Vec sp14; + for (var_r31 = 0; var_r31 < 4; ++var_r31) { temp_f31 = CRot.x; temp_f30 = CRot.y + (var_r31 * 90); sp10 = CRot.z; - sp2C.x = Center.x + (CZoom * (sin((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0)))); - sp2C.y = Center.y + (CZoom * -sin((M_PI * temp_f31) / 180.0)); - sp2C.z = Center.z + (CZoom * (cos((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0)))); - + sp2C.x = Center.x + CZoom * (sind(temp_f30) * (cosd(temp_f31))); + sp2C.y = Center.y + CZoom * -sind(temp_f31); + sp2C.z = Center.z + CZoom * (cosd(temp_f30) * (cosd(temp_f31))); + sp20.x = Center.x; sp20.y = Center.y; sp20.z = Center.z; - sp14.x = sin((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0)); - sp14.y = cos((M_PI * temp_f31) / 180.0); - sp14.z = cos((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0)); + sp14.x = sind(temp_f30) * (sind(temp_f31)); + sp14.y = cosd(temp_f31); + sp14.z = cosd(temp_f30) * (sind(temp_f31)); - Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z); + Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z); } } // -------------------------------------------------------------------------- // -const Point3d lbl_1_rodata_18C = {0.0f, 0.0f, 0.0f}; -const Point3d lbl_1_rodata_198 = {0.0f, 1.0f, 0.0f}; +const Vec lbl_1_rodata_18C = { 0.0f, 0.0f, 0.0f }; +const Vec lbl_1_rodata_198 = { 0.0f, 1.0f, 0.0f }; // -------------------------------------------------------------------------- // void fn_1_46F0(void) { - Point3d sp20; - Point3d sp14; - Point3d sp8; + Vec sp20; + Vec sp14; + Vec sp8; s16 var_r31; s16 var_r30; @@ -192,33 +192,29 @@ void fn_1_46F0(void) sp20.z = 1000.0f; Hu3DShadowPosSet(&sp20, &sp8, &sp14); - for (var_r31 = 0; var_r31 < 4; ++var_r31) - { + for (var_r31 = 0; var_r31 < 4; ++var_r31) { var_r30 = var_r31; lbl_1_bss_9EC[var_r31] = CharModelCreate(var_r30, 8); Hu3DModelShadowSet(lbl_1_bss_9EC[var_r31]); - lbl_1_bss_9AC[var_r31][0] = CharModelMotionCreate(var_r30, 0x5F0002); + lbl_1_bss_9AC[var_r31][0] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); CharModelMotionSet(var_r30, lbl_1_bss_9AC[var_r31][0]); - Hu3DModelAttrSet(lbl_1_bss_9EC[var_r31], 0x40000001U); + Hu3DModelAttrSet(lbl_1_bss_9EC[var_r31], HU3D_MOTATTR_LOOP); Hu3DModelCameraSet(lbl_1_bss_9EC[var_r31], lbl_1_data_358[var_r31]); - Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], ((( var_r31 / 4) * 200) - 100), 0.0f, (-( var_r31 % 4) * 150)); + Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], (((var_r31 / 4) * 200) - 100), 0.0f, (-(var_r31 % 4) * 150)); Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], 0.0f, 0.0f, 0.0f); CharModelMotionDataClose(var_r30); } - var_r31 = Hu3DModelCreateFile(0x700024); + var_r31 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_SAF, 0x24)); Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f); Hu3DModelShadowMapSet(var_r31); - while (TRUE) - { + while (TRUE) { if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) { Hu3DCameraKill(2); Hu3DCameraKill(4); Hu3DCameraKill(8); - sp20.x = - sp20.z = - sp20.y = 0.0f; + sp20.x = sp20.z = sp20.y = 0.0f; sp20.y += 200.0f; CharModelCoinEffectCreate(4, &sp20); } @@ -228,4 +224,4 @@ void fn_1_46F0(void) // -------------------------------------------------------------------------- // -// -------------------------------------------------------------------------- // \ No newline at end of file +// -------------------------------------------------------------------------- // diff --git a/src/REL/modeltestDll/modeltest01.c b/src/REL/modeltestDll/modeltest01.c index d30e6c6a..f9388244 100644 --- a/src/REL/modeltestDll/modeltest01.c +++ b/src/REL/modeltestDll/modeltest01.c @@ -1,26 +1,26 @@ -#include "game/object.h" -#include "game/hsfman.h" -#include "game/hsfload.h" #include "game/hsfdraw.h" +#include "game/hsfload.h" +#include "game/hsfman.h" +#include "game/object.h" #include "game/printfunc.h" #include "game/hsfmotion.h" -#include "game/wipe.h" #include "game/audio.h" +#include "game/gamework_data.h" #include "game/msm.h" #include "game/pad.h" #include "game/process.h" -#include "game/gamework_data.h" +#include "game/wipe.h" -#include "math.h" #include "ext_math.h" +#include "math.h" typedef struct unk_bss_a18 { - u32 unk0; - Vec unk4; - Vec unk10; - u8 unk1C[0x88]; + u32 unk0; + Vec unk4; + Vec unk10; + u8 unk1C[0x88]; } UnkBssA18; omObjData *lbl_1_bss_AC4; @@ -40,714 +40,610 @@ void fn_1_5DA8(void); void fn_1_6AE0(ModelData *model, Mtx mtx); void fn_1_83B4(void); - -static const Vec lbl_1_rodata_1C8 = {0.0f, 0.0f, 0.0f}; -static const Vec lbl_1_rodata_1D4 = {0.0f, 0.0f, -1.0f}; +static const Vec lbl_1_rodata_1C8 = { 0.0f, 0.0f, 0.0f }; +static const Vec lbl_1_rodata_1D4 = { 0.0f, 0.0f, -1.0f }; void fn_1_4AC8(void) { - Vec sp14; - Vec sp8; - Process *objman; - OSReport("******* MODELTESTObjectSetup *********\n"); - objman = omInitObjMan(50, 8192); - CRot.x = -22; - CRot.y = 0; - CRot.z = 0; - Center.x = 0; - Center.y = 100; - Center.z = 0; - CZoom = 400; - Hu3DCameraCreate(1); - lbl_1_bss_A0C = 45; - Hu3DCameraPerspectiveSet(1, lbl_1_bss_A0C, 20, 5000, 1.2f); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - Hu3DCameraScissorSet(1, 0, 0, 640, 480); - lbl_1_bss_ABC = omAddObjEx(objman, 0, 32, 32, -1, fn_1_4DF8); - lbl_1_bss_AC0 = omAddObjEx(objman, 32730, 0, 0, -1, fn_1_5A60); - lbl_1_bss_A00 = HuPrcCreate(fn_1_5DA8, 100, 8192, 0); - Hu3DBGColorSet(16, 16, 16); - Hu3DHookFuncCreate(fn_1_6AE0); - HuPrcChildCreate(fn_1_83B4, 100, 12288, 0, objman); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - sp14 = lbl_1_rodata_1C8; - sp8 = lbl_1_rodata_1D4; - lbl_1_bss_A18.unk0 = 64; - lbl_1_bss_A18.unk10.x = 0; - lbl_1_bss_A18.unk10.y = 0; - lbl_1_bss_A18.unk10.z = 0; - msmSeSetListener(&sp14, &sp8, 2000, 1000, 0); + Vec sp14; + Vec sp8; + Process *objman; + OSReport("******* MODELTESTObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + CRot.x = -22; + CRot.y = 0; + CRot.z = 0; + Center.x = 0; + Center.y = 100; + Center.z = 0; + CZoom = 400; + Hu3DCameraCreate(1); + lbl_1_bss_A0C = 45; + Hu3DCameraPerspectiveSet(1, lbl_1_bss_A0C, 20, 5000, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraScissorSet(1, 0, 0, 640, 480); + lbl_1_bss_ABC = omAddObjEx(objman, 0, 32, 32, -1, fn_1_4DF8); + lbl_1_bss_AC0 = omAddObjEx(objman, 32730, 0, 0, -1, fn_1_5A60); + lbl_1_bss_A00 = HuPrcCreate(fn_1_5DA8, 100, 8192, 0); + Hu3DBGColorSet(16, 16, 16); + Hu3DHookFuncCreate(fn_1_6AE0); + HuPrcChildCreate(fn_1_83B4, 100, 12288, 0, objman); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + sp14 = lbl_1_rodata_1C8; + sp8 = lbl_1_rodata_1D4; + lbl_1_bss_A18.unk0 = 64; + lbl_1_bss_A18.unk10.x = 0; + lbl_1_bss_A18.unk10.y = 0; + lbl_1_bss_A18.unk10.z = 0; + msmSeSetListener(&sp14, &sp8, 2000, 1000, 0); } void fn_1_4DF8(omObjData *object) { - float temp_f31; - Vec pos; + float temp_f31; + Vec pos; Vec offset; Vec dir; Vec y_offset; - s8 temp_r31; - - if(HuPadBtnDown[0] & PAD_BUTTON_START) { - if(lbl_1_bss_A00) { - HuPrcKill(lbl_1_bss_A00); - } - if(lbl_1_bss_A04) { - HuPrcKill(lbl_1_bss_A04); - } - HuAudFXListnerKill(); - omOvlReturnEx(1, 1); - return; - } - CRot.y += 0.1f*HuPadStkX[0]; - CRot.x += 0.1f*HuPadStkY[0]; - CZoom += HuPadTrigL[0]/2; - CZoom -= HuPadTrigR[0]/2; - if(CZoom < 100) { - CZoom = 100; - } - if(CZoom > 2000) { - CZoom = 2000; - } - pos.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); - pos.y = (Center.y + (CZoom * -sind(CRot.x))); - pos.z = (Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)))); - offset.x = Center.x - pos.x; - offset.y = Center.y - pos.y; - offset.z = Center.z - pos.z; - dir.x = (sind(CRot.y) * sind(CRot.x)); - dir.y = cosd(CRot.x); - dir.z = (cosd(CRot.y) * sind(CRot.x)); - temp_f31 = CRot.z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(temp_f31)) - + dir.y * (offset.x * offset.y * (1.0f - cosd(temp_f31)) - offset.z * sind(temp_f31)) - + dir.z * (offset.x * offset.z * (1.0f - cosd(temp_f31)) + offset.y * sind(temp_f31)); + s8 temp_r31; - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(temp_f31)) - + dir.x * (offset.x * offset.y * (1.0f - cosd(temp_f31)) + offset.z * sind(temp_f31)) - + dir.z * (offset.y * offset.z * (1.0f - cosd(temp_f31)) - offset.x * sind(temp_f31)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(temp_f31)) - + (dir.x * (offset.x * offset.z * (1.0 - cosd(temp_f31)) - offset.y * sind(temp_f31)) - + dir.y * (offset.y * offset.z * (1.0 - cosd(temp_f31)) + offset.x * sind(temp_f31))); - VECCrossProduct(&dir, &offset, &offset); - VECNormalize(&offset, &offset); - temp_r31 = (HuPadSubStkX[0] & 0xF8); - if (temp_r31 != 0) { - Center.x += 0.05f * (offset.x * temp_r31); - Center.y += 0.05f * (offset.y * temp_r31); - Center.z += 0.05f * (offset.z * temp_r31); - } - PSVECNormalize(&y_offset, &offset); - temp_r31 = -(HuPadSubStkY[0] & 0xF8); - if (temp_r31 != 0) { - Center.x += 0.05f * (offset.x * temp_r31); - Center.y += 0.05f * (offset.y * temp_r31); - Center.z += 0.05f * (offset.z * temp_r31); - } - Hu3DCameraPerspectiveSet(1, lbl_1_bss_A0C, 20, 5000, 1.2f); + if (HuPadBtnDown[0] & PAD_BUTTON_START) { + if (lbl_1_bss_A00) { + HuPrcKill(lbl_1_bss_A00); + } + if (lbl_1_bss_A04) { + HuPrcKill(lbl_1_bss_A04); + } + HuAudFXListnerKill(); + omOvlReturnEx(1, 1); + return; + } + CRot.y += 0.1f * HuPadStkX[0]; + CRot.x += 0.1f * HuPadStkY[0]; + CZoom += HuPadTrigL[0] / 2; + CZoom -= HuPadTrigR[0] / 2; + if (CZoom < 100) { + CZoom = 100; + } + if (CZoom > 2000) { + CZoom = 2000; + } + pos.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + pos.y = (Center.y + (CZoom * -sind(CRot.x))); + pos.z = (Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)))); + offset.x = Center.x - pos.x; + offset.y = Center.y - pos.y; + offset.z = Center.z - pos.z; + dir.x = (sind(CRot.y) * sind(CRot.x)); + dir.y = cosd(CRot.x); + dir.z = (cosd(CRot.y) * sind(CRot.x)); + temp_f31 = CRot.z; + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(temp_f31)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(temp_f31)) - offset.z * sind(temp_f31)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(temp_f31)) + offset.y * sind(temp_f31)); + + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(temp_f31)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(temp_f31)) + offset.z * sind(temp_f31)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(temp_f31)) - offset.x * sind(temp_f31)); + + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(temp_f31)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(temp_f31)) - offset.y * sind(temp_f31)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(temp_f31)) + offset.x * sind(temp_f31))); + VECCrossProduct(&dir, &offset, &offset); + VECNormalize(&offset, &offset); + temp_r31 = (HuPadSubStkX[0] & 0xF8); + if (temp_r31 != 0) { + Center.x += 0.05f * (offset.x * temp_r31); + Center.y += 0.05f * (offset.y * temp_r31); + Center.z += 0.05f * (offset.z * temp_r31); + } + VECNormalize(&y_offset, &offset); + temp_r31 = -(HuPadSubStkY[0] & 0xF8); + if (temp_r31 != 0) { + Center.x += 0.05f * (offset.x * temp_r31); + Center.y += 0.05f * (offset.y * temp_r31); + Center.z += 0.05f * (offset.z * temp_r31); + } + Hu3DCameraPerspectiveSet(1, lbl_1_bss_A0C, 20, 5000, 1.2f); } void fn_1_5A60(omObjData *object) { - Mtx rotAxis; - Vec pos, target, up; - float x, y, z; - - x = CRot.x; - y = CRot.y; - z = CRot.z; - - pos.x = (((sind(y)*cosd(x))*CZoom)+Center.x); - pos.y = (-sind(x)*CZoom)+Center.y; - pos.z = ((cosd(y)*cosd(x))*CZoom)+Center.z; - target.x = Center.x; - target.y = Center.y; - target.z = Center.z; - up.x = sind(y)*sind(x); - up.y = cosd(x); - up.z = cosd(y)*sind(x); - Hu3DCameraPosSet(1, pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - MTXRotDeg(rotAxis, 'y', -y); - MTXMultVec(rotAxis, &pos, &up); - VECSubtract(&target, &pos, &up); - VECNormalize(&up, &up); - HuAudFXListnerUpdate(&pos, &up); + Mtx rotAxis; + Vec pos, target, up; + float x, y, z; + + x = CRot.x; + y = CRot.y; + z = CRot.z; + + pos.x = (((sind(y) * cosd(x)) * CZoom) + Center.x); + pos.y = (-sind(x) * CZoom) + Center.y; + pos.z = ((cosd(y) * cosd(x)) * CZoom) + Center.z; + target.x = Center.x; + target.y = Center.y; + target.z = Center.z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(1, pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + MTXRotDeg(rotAxis, 'y', -y); + MTXMultVec(rotAxis, &pos, &up); + VECSubtract(&target, &pos, &up); + VECNormalize(&up, &up); + HuAudFXListnerUpdate(&pos, &up); } -u32 lbl_1_data_3B0[] = { - 0x005D0000, 0x00000000, - 0x005E0000, 0x00000000, - 0x005E0001, 0x00000000, - 0x005F0006, 0x00000001, - 0x005F0000, 0x00000001, - 0x005F0002, 0x00000001, - 0x005F0003, 0x00000001, - 0x005F0005, 0x00000000, - 0x005F0017, 0x00000000, - 0x005F0018, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_3B0[] = { DATA_MAKE_NUM(DATADIR_MARIOMDL0, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x00), 0x00000000, + DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x01), 0x00000000, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), 0x00000001, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + 0x00000001, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), 0x00000001, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), 0x00000001, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), 0x00000000, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0x00000000, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_408[] = { - 0x00170000, 0x00000000, - 0x00170002, 0x00000000, - 0x00170003, 0x00000000, - 0x0017000D, 0x00000001, - 0x00170005, 0x00000001, - 0x00170007, 0x00000001, - 0x00170008, 0x00000001, - 0x0017000C, 0x00000000, - 0x00170028, 0x00000000, - 0x00170029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_408[] = { DATA_MAKE_NUM(DATADIR_LUIGI, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_LUIGI, 0x02), 0x00000000, + DATA_MAKE_NUM(DATADIR_LUIGI, 0x03), 0x00000000, DATA_MAKE_NUM(DATADIR_LUIGI, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_LUIGI, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_LUIGI, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_LUIGI, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_LUIGI, 0x0C), 0x00000000, + DATA_MAKE_NUM(DATADIR_LUIGI, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_LUIGI, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_460[] = { - 0x006A0000, 0x00000000, - 0x006A0002, 0x00000000, - 0x006A0003, 0x00000000, - 0x006A000D, 0x00000001, - 0x006A0005, 0x00000001, - 0x006A0007, 0x00000001, - 0x006A0008, 0x00000001, - 0x006A000C, 0x00000000, - 0x006A0028, 0x00000000, - 0x006A0029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_460[] = { DATA_MAKE_NUM(DATADIR_PEACH, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_PEACH, 0x02), 0x00000000, + DATA_MAKE_NUM(DATADIR_PEACH, 0x03), 0x00000000, DATA_MAKE_NUM(DATADIR_PEACH, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_PEACH, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_PEACH, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_PEACH, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_PEACH, 0x0C), 0x00000000, + DATA_MAKE_NUM(DATADIR_PEACH, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_PEACH, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_4B8[] = { - 0x00870000, 0x00000000, - 0x00870002, 0x00000000, - 0x00870003, 0x00000000, - 0x0087000D, 0x00000001, - 0x00870005, 0x00000001, - 0x00870007, 0x00000001, - 0x00870008, 0x00000001, - 0x0087000C, 0x00000000, - 0x00870028, 0x00000000, - 0x00870029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_4B8[] = { DATA_MAKE_NUM(DATADIR_YOSHI, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_YOSHI, 0x02), 0x00000000, + DATA_MAKE_NUM(DATADIR_YOSHI, 0x03), 0x00000000, DATA_MAKE_NUM(DATADIR_YOSHI, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_YOSHI, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_YOSHI, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_YOSHI, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_YOSHI, 0x0C), 0x00000000, + DATA_MAKE_NUM(DATADIR_YOSHI, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_YOSHI, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_510[] = { - 0x00820000, 0x00000000, - 0x00820002, 0x00000000, - 0x00820003, 0x00000000, - 0x0082000D, 0x00000001, - 0x00820005, 0x00000001, - 0x00820007, 0x00000001, - 0x00820008, 0x00000001, - 0x0082000C, 0x00000000, - 0x00820028, 0x00000000, - 0x00820029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_510[] = { DATA_MAKE_NUM(DATADIR_WARIO, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_WARIO, 0x02), 0x00000000, + DATA_MAKE_NUM(DATADIR_WARIO, 0x03), 0x00000000, DATA_MAKE_NUM(DATADIR_WARIO, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_WARIO, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_WARIO, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_WARIO, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_WARIO, 0x0C), 0x00000000, + DATA_MAKE_NUM(DATADIR_WARIO, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_WARIO, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_568[] = { - 0x000E0000, 0x00000000, - 0x000E0002, 0x00000000, - 0x000E0003, 0x00000000, - 0x000E000D, 0x00000001, - 0x000E0005, 0x00000001, - 0x000E0007, 0x00000001, - 0x000E0008, 0x00000001, - 0x000E000C, 0x00000000, - 0x000E0028, 0x00000000, - 0x000E0029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_568[] = { DATA_MAKE_NUM(DATADIR_DONKEY, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_DONKEY, 0x02), 0x00000000, + DATA_MAKE_NUM(DATADIR_DONKEY, 0x03), 0x00000000, DATA_MAKE_NUM(DATADIR_DONKEY, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_DONKEY, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_DONKEY, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_DONKEY, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_DONKEY, 0x0C), 0x00000000, + DATA_MAKE_NUM(DATADIR_DONKEY, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_DONKEY, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_5C0[] = { - 0x000A0000, 0x00000000, - 0x000A0002, 0x00000000, - 0x000A0003, 0x00000000, - 0x000A000D, 0x00000001, - 0x000A0005, 0x00000001, - 0x000A0007, 0x00000001, - 0x000A0008, 0x00000001, - 0x000A000C, 0x00000000, - 0x000A0028, 0x00000000, - 0x000A0029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_5C0[] = { DATA_MAKE_NUM(DATADIR_DAISY, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_DAISY, 0x02), 0x00000000, + DATA_MAKE_NUM(DATADIR_DAISY, 0x03), 0x00000000, DATA_MAKE_NUM(DATADIR_DAISY, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_DAISY, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_DAISY, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_DAISY, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_DAISY, 0x0C), 0x00000000, + DATA_MAKE_NUM(DATADIR_DAISY, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_DAISY, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 lbl_1_data_618[] = { - 0x007E0000, 0x00000000, - 0x007E0002, 0x00000000, - 0x007E0003, 0x00000000, - 0x007E000D, 0x00000001, - 0x007E0005, 0x00000001, - 0x007E0007, 0x00000001, - 0x007E0008, 0x00000001, - 0x007E000C, 0x00000000, - 0x007E0028, 0x00000000, - 0x007E0029, 0x00000000, - 0x00000000, 0x00000000 -}; +u32 lbl_1_data_618[] + = { DATA_MAKE_NUM(DATADIR_WALUIGI, 0x00), 0x00000000, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x02), 0x00000000, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x03), + 0x00000000, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x0D), 0x00000001, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x05), 0x00000001, + DATA_MAKE_NUM(DATADIR_WALUIGI, 0x07), 0x00000001, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x08), 0x00000001, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x0C), + 0x00000000, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x28), 0x00000000, DATA_MAKE_NUM(DATADIR_WALUIGI, 0x29), 0x00000000, 0x00000000, 0x00000000 }; -u32 *lbl_1_data_670[] = { - lbl_1_data_3B0, - lbl_1_data_408, - lbl_1_data_460, - lbl_1_data_4B8, - lbl_1_data_510, - lbl_1_data_568, - lbl_1_data_5C0, - lbl_1_data_618 -}; +u32 *lbl_1_data_670[] + = { lbl_1_data_3B0, lbl_1_data_408, lbl_1_data_460, lbl_1_data_4B8, lbl_1_data_510, lbl_1_data_568, lbl_1_data_5C0, lbl_1_data_618 }; void fn_1_69C8(s16 arg0, s16 arg1, s16 arg2); void fn_1_5DA8(void) { - u32 *temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - - s32 temp_r24 = 0; - s16 sp40[3][32]; - Vec sp34; - - Vec sp28 = { 0, 0, 0 }; - Vec sp1C = { 0, 1, 0 }; - s16 sp16[3]; - s16 sp10[3]; - float spC; - s16 sp8 = 0; - Hu3DGLightCreate(0, 500, 1000, 0, -0.5, -1, 255, 255, 255); - temp_r28 = GWPlayerCfg[0].character; - temp_r31 = lbl_1_data_670[temp_r28]; - sp16[0] = Hu3DModelCreateFile(temp_r31[0]); - sp16[1] = Hu3DModelCreateFile(temp_r31[2]); - sp16[2] = Hu3DModelCreateFile(temp_r31[4]); - HuDataDirClose(temp_r31[0]); - HuDataDirClose(temp_r31[2]); - HuDataDirClose(temp_r31[4]); - temp_r27 = 0; - temp_r29 = 0; - while(1) { - if(temp_r31[(temp_r29*2)+8] == 0) { - if(temp_r27 == 0) { - temp_r27 = temp_r29; - } - break; - } - if(temp_r31[(temp_r29*2)+8] == 0xFFFFFFFF) { - temp_r27 = temp_r29; - } else { - sp40[0][temp_r29] = Hu3DJointMotionFile(sp16[0], temp_r31[(temp_r29*2)+8]); - sp40[1][temp_r29] = Hu3DJointMotionFile(sp16[1], temp_r31[(temp_r29*2)+8]); - sp40[2][temp_r29] = Hu3DJointMotionFile(sp16[2], temp_r31[(temp_r29*2)+8]); - } - temp_r29++; - } - sp10[0] = Hu3DJointMotionFile(sp16[0], temp_r31[6]); - sp10[1] = Hu3DJointMotionFile(sp16[1], temp_r31[6]); - sp10[2] = Hu3DJointMotionFile(sp16[2], temp_r31[6]); - temp_r26 = 0; - temp_r30 = 0; - Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); - Hu3DModelAttrSet(sp16[0], 0x40000001); - Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); - Hu3DModelAttrSet(sp16[1], 0x40000001); - Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); - Hu3DModelAttrSet(sp16[2], 0x40000001); - Hu3DModelAttrSet(sp16[1], 0x1); - Hu3DModelAttrSet(sp16[2], 0x1); - while(1) { - temp_r25 = 0; - if(HuPadBtnDown[0] & PAD_BUTTON_X) { - temp_r30++; - if(temp_r30 >= temp_r27) { - temp_r30 = 0; - } - Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); - Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); - Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); - if(temp_r31[(temp_r30*2)+9] != 0) { - Hu3DModelAttrSet(sp16[0], 0x40000001); - Hu3DModelAttrSet(sp16[1], 0x40000001); - Hu3DModelAttrSet(sp16[2], 0x40000001); - } else { - Hu3DModelAttrReset(sp16[0], 0x40000001); - Hu3DModelAttrReset(sp16[1], 0x40000001); - Hu3DModelAttrReset(sp16[2], 0x40000001); - } - fn_1_69C8(temp_r28, sp16[0], 0); - fn_1_69C8(temp_r28, sp16[1], 1); - fn_1_69C8(temp_r28, sp16[2], 2); - temp_r25 = 1; - } - if(HuPadBtnDown[0] & PAD_BUTTON_Y) { - temp_r30--; - if(temp_r30 < 0) { - temp_r30 = temp_r27-1; - } - Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); - Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); - Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); - if(temp_r31[(temp_r30*2)+9] != 0) { - Hu3DModelAttrSet(sp16[0], 0x40000001); - Hu3DModelAttrSet(sp16[1], 0x40000001); - Hu3DModelAttrSet(sp16[2], 0x40000001); - } else { - Hu3DModelAttrReset(sp16[0], 0x40000001); - Hu3DModelAttrReset(sp16[1], 0x40000001); - Hu3DModelAttrReset(sp16[2], 0x40000001); - } - fn_1_69C8(temp_r28, sp16[0], 0); - fn_1_69C8(temp_r28, sp16[1], 1); - fn_1_69C8(temp_r28, sp16[2], 2); - temp_r25 = 1; - } - if(temp_r31[(temp_r30*2)+9] == 0) { - if(HuPadBtn[0] & PAD_BUTTON_A) { - Hu3DModelAttrSet(sp16[0], 0x40000001); - Hu3DModelAttrSet(sp16[1], 0x40000001); - Hu3DModelAttrSet(sp16[2], 0x40000001); - temp_r25 = 1; - } else { - if(temp_r30 != 3 && temp_r30 != 2) { - Hu3DModelAttrReset(sp16[0], 0x40000001); - Hu3DModelAttrReset(sp16[1], 0x40000001); - Hu3DModelAttrReset(sp16[2], 0x40000001); - } - } - } - if(temp_r25 != 0) { - if(temp_r30 == 3) { - Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); - Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); - Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); - Hu3DModelAttrReset(sp16[0], 0x40000001); - Hu3DModelAttrReset(sp16[1], 0x40000001); - Hu3DModelAttrReset(sp16[2], 0x40000001); - for(temp_r29=0; temp_r29<=30; temp_r29++) { - Hu3DModelPosSet(sp16[0], 0, sind(temp_r29*6.0f)*150, 0); - Hu3DModelPosSet(sp16[1], 0, sind(temp_r29*6.0f)*150, 0); - Hu3DModelPosSet(sp16[2], 0, sind(temp_r29*6.0f)*150, 0); - if(temp_r29 == 25) { - Hu3DMotionSet(sp16[0], sp10[0]); - Hu3DMotionSet(sp16[1], sp10[1]); - Hu3DMotionSet(sp16[2], sp10[2]); - } - HuPrcVSleep(); - } - while(!Hu3DMotionEndCheck(sp16[0])) { - HuPrcVSleep(); - } - fn_1_69C8(temp_r28, sp16[0], 0); - fn_1_69C8(temp_r28, sp16[1], 1); - fn_1_69C8(temp_r28, sp16[2], 2); - Hu3DMotionShiftSet(sp16[0], sp40[0][0], 0, 16, 0x40000001); - Hu3DMotionShiftSet(sp16[1], sp40[1][0], 0, 16, 0x40000001); - Hu3DMotionShiftSet(sp16[2], sp40[2][0], 0, 16, 0x40000001); - } - temp_r24 = 0; - } - sp34.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); - sp34.y = (Center.y + (CZoom * -sind(CRot.x))); - sp34.z = (Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)))); - - spC = VECMag(&sp34); - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - temp_r26++; - if(temp_r26 >= 3) { - temp_r26 = 0; - } - } - Hu3DModelAttrSet(sp16[0], 1); - Hu3DModelAttrSet(sp16[1], 1); - Hu3DModelAttrSet(sp16[2], 1); - switch(temp_r26) { - case 0: - Hu3DModelAttrReset(sp16[0], 1); - break; - - case 1: - Hu3DModelAttrReset(sp16[1], 1); - break; - - case 2: - Hu3DModelAttrReset(sp16[2], 1); - break; - } - HuPrcVSleep(); - } + u32 *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + + s32 temp_r24 = 0; + s16 sp40[3][32]; + Vec sp34; + + Vec sp28 = { 0, 0, 0 }; + Vec sp1C = { 0, 1, 0 }; + s16 sp16[3]; + s16 sp10[3]; + float spC; + s16 sp8 = 0; + Hu3DGLightCreate(0, 500, 1000, 0, -0.5, -1, 255, 255, 255); + temp_r28 = GWPlayerCfg[0].character; + temp_r31 = lbl_1_data_670[temp_r28]; + sp16[0] = Hu3DModelCreateFile(temp_r31[0]); + sp16[1] = Hu3DModelCreateFile(temp_r31[2]); + sp16[2] = Hu3DModelCreateFile(temp_r31[4]); + HuDataDirClose(temp_r31[0]); + HuDataDirClose(temp_r31[2]); + HuDataDirClose(temp_r31[4]); + temp_r27 = 0; + temp_r29 = 0; + while (1) { + if (temp_r31[(temp_r29 * 2) + 8] == 0) { + if (temp_r27 == 0) { + temp_r27 = temp_r29; + } + break; + } + if (temp_r31[(temp_r29 * 2) + 8] == 0xFFFFFFFF) { + temp_r27 = temp_r29; + } + else { + sp40[0][temp_r29] = Hu3DJointMotionFile(sp16[0], temp_r31[(temp_r29 * 2) + 8]); + sp40[1][temp_r29] = Hu3DJointMotionFile(sp16[1], temp_r31[(temp_r29 * 2) + 8]); + sp40[2][temp_r29] = Hu3DJointMotionFile(sp16[2], temp_r31[(temp_r29 * 2) + 8]); + } + temp_r29++; + } + sp10[0] = Hu3DJointMotionFile(sp16[0], temp_r31[6]); + sp10[1] = Hu3DJointMotionFile(sp16[1], temp_r31[6]); + sp10[2] = Hu3DJointMotionFile(sp16[2], temp_r31[6]); + temp_r26 = 0; + temp_r30 = 0; + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DModelAttrSet(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DModelAttrSet(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + Hu3DModelAttrSet(sp16[2], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(sp16[2], HU3D_ATTR_DISPOFF); + while (1) { + temp_r25 = 0; + if (HuPadBtnDown[0] & PAD_BUTTON_X) { + temp_r30++; + if (temp_r30 >= temp_r27) { + temp_r30 = 0; + } + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + if (temp_r31[(temp_r30 * 2) + 9] != 0) { + Hu3DModelAttrSet(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[2], HU3D_MOTATTR_LOOP); + } + else { + Hu3DModelAttrReset(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[2], HU3D_MOTATTR_LOOP); + } + fn_1_69C8(temp_r28, sp16[0], 0); + fn_1_69C8(temp_r28, sp16[1], 1); + fn_1_69C8(temp_r28, sp16[2], 2); + temp_r25 = 1; + } + if (HuPadBtnDown[0] & PAD_BUTTON_Y) { + temp_r30--; + if (temp_r30 < 0) { + temp_r30 = temp_r27 - 1; + } + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + if (temp_r31[(temp_r30 * 2) + 9] != 0) { + Hu3DModelAttrSet(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[2], HU3D_MOTATTR_LOOP); + } + else { + Hu3DModelAttrReset(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[2], HU3D_MOTATTR_LOOP); + } + fn_1_69C8(temp_r28, sp16[0], 0); + fn_1_69C8(temp_r28, sp16[1], 1); + fn_1_69C8(temp_r28, sp16[2], 2); + temp_r25 = 1; + } + if (temp_r31[(temp_r30 * 2) + 9] == 0) { + if (HuPadBtn[0] & PAD_BUTTON_A) { + Hu3DModelAttrSet(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(sp16[2], HU3D_MOTATTR_LOOP); + temp_r25 = 1; + } + else { + if (temp_r30 != 3 && temp_r30 != 2) { + Hu3DModelAttrReset(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[2], HU3D_MOTATTR_LOOP); + } + } + } + if (temp_r25 != 0) { + if (temp_r30 == 3) { + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + Hu3DModelAttrReset(sp16[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(sp16[2], HU3D_MOTATTR_LOOP); + for (temp_r29 = 0; temp_r29 <= 30; temp_r29++) { + Hu3DModelPosSet(sp16[0], 0, sind(temp_r29 * 6.0f) * 150, 0); + Hu3DModelPosSet(sp16[1], 0, sind(temp_r29 * 6.0f) * 150, 0); + Hu3DModelPosSet(sp16[2], 0, sind(temp_r29 * 6.0f) * 150, 0); + if (temp_r29 == 25) { + Hu3DMotionSet(sp16[0], sp10[0]); + Hu3DMotionSet(sp16[1], sp10[1]); + Hu3DMotionSet(sp16[2], sp10[2]); + } + HuPrcVSleep(); + } + while (!Hu3DMotionEndCheck(sp16[0])) { + HuPrcVSleep(); + } + fn_1_69C8(temp_r28, sp16[0], 0); + fn_1_69C8(temp_r28, sp16[1], 1); + fn_1_69C8(temp_r28, sp16[2], 2); + Hu3DMotionShiftSet(sp16[0], sp40[0][0], 0, 16, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(sp16[1], sp40[1][0], 0, 16, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(sp16[2], sp40[2][0], 0, 16, HU3D_MOTATTR_LOOP); + } + temp_r24 = 0; + } + sp34.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + sp34.y = (Center.y + (CZoom * -sind(CRot.x))); + sp34.z = (Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)))); + + spC = VECMag(&sp34); + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + temp_r26++; + if (temp_r26 >= 3) { + temp_r26 = 0; + } + } + Hu3DModelAttrSet(sp16[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(sp16[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(sp16[2], HU3D_ATTR_DISPOFF); + switch (temp_r26) { + case 0: + Hu3DModelAttrReset(sp16[0], HU3D_ATTR_DISPOFF); + break; + + case 1: + Hu3DModelAttrReset(sp16[1], HU3D_ATTR_DISPOFF); + break; + + case 2: + Hu3DModelAttrReset(sp16[2], HU3D_ATTR_DISPOFF); + break; + } + HuPrcVSleep(); + } } char *lbl_1_data_6F4[] = { - "s3_mario_eyes_1", - "mario_eyes_2", - "mario_eyes_2", - "S3c001m0_eye", - "S3c001m1_eye", - "c001m3_eye", - "GC-eyes", - "s3tc_GC-eyes_2", - "s3tc_GC-eyes_2", - "S3c003m1", - "S3c003m1", - "S3c003m1", - "GC-eyes", - "s3tc_GC-eyes_2", - "s3tc_GC-eyes_2", - "GC-eyes", - "s3tc_GC-eyes_2", - "s3tc_GC-eyes_2", - "GC-eyes", - "s3tc_GC-eyes_2", - "s3tc_GC-eyes_2", - "GC-eyes", - "s3tc_GC-eyes_2", - "s3tc_GC-eyes_2", + "s3_mario_eyes_1", + "mario_eyes_2", + "mario_eyes_2", + "S3c001m0_eye", + "S3c001m1_eye", + "c001m3_eye", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "S3c003m1", + "S3c003m1", + "S3c003m1", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", }; void fn_1_69C8(s16 arg0, s16 arg1, s16 arg2) { - HsfdrawStruct01 *temp_r31; - HsfAttribute *temp_r30; - ModelData *temp_r29; - s16 temp_r28; - char *temp_r27; - temp_r29 = &Hu3DData[arg1]; - temp_r30 = temp_r29->hsfData->attribute; - temp_r27 = MakeObjectName(lbl_1_data_6F4[arg2+(arg0*3)]); - for(temp_r28=0; temp_r28hsfData->attributeCnt; temp_r28++, temp_r30++) { - if(temp_r30->bitmap->name[0] == temp_r27[0] && strcmp(temp_r30->bitmap->name, temp_r27) == 0 && temp_r30->unk04) { - temp_r31 = temp_r30->unk04; - temp_r31->unk08 = temp_r31->unk0C = temp_r31->unk10 = 0; - temp_r31->unk14 = temp_r31->unk18 = temp_r31->unk1C = 0; - } - } + HsfdrawStruct01 *temp_r31; + HsfAttribute *temp_r30; + ModelData *temp_r29; + s16 temp_r28; + char *temp_r27; + temp_r29 = &Hu3DData[arg1]; + temp_r30 = temp_r29->hsfData->attribute; + temp_r27 = MakeObjectName(lbl_1_data_6F4[arg2 + (arg0 * 3)]); + for (temp_r28 = 0; temp_r28 < temp_r29->hsfData->attributeCnt; temp_r28++, temp_r30++) { + if (temp_r30->bitmap->name[0] == temp_r27[0] && strcmp(temp_r30->bitmap->name, temp_r27) == 0 && temp_r30->unk04) { + temp_r31 = temp_r30->unk04; + temp_r31->unk08 = temp_r31->unk0C = temp_r31->unk10 = 0; + temp_r31->unk14 = temp_r31->unk18 = temp_r31->unk1C = 0; + } + } } s32 lbl_1_data_754 = 20; void fn_1_6AE0(ModelData *model, Mtx mtx) { - s32 temp_r31; - u8 temp_r30, temp_r29, temp_r28; - s32 sp84 = 0; - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); - GXLoadPosMtxImm(mtx, GX_PNMTX0); - GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); - for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { - temp_r30 = temp_r29 = temp_r28 = 255; - GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, (-(lbl_1_data_754/2))*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32(-(lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); - GXColor3u8(temp_r30, temp_r29, temp_r28); - } - GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); - for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { - temp_r30 = temp_r29 = temp_r28 = 255; - GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), lbl_1_data_754*100, (-(lbl_1_data_754/2))*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, -(lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - } - GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); - for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { - temp_r30 = temp_r29 = temp_r28 = 255; - GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), lbl_1_data_754*100, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - } - GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); - for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { - temp_r30 = temp_r29 = temp_r28 = 255; - GXPosition3f32((lbl_1_data_754/2)*100, lbl_1_data_754*100, (temp_r31*100)-((lbl_1_data_754/2)*100)); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - } - GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); - for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { - temp_r30 = temp_r29 = temp_r28 = 255; - GXPosition3f32(-(lbl_1_data_754/2)*100, lbl_1_data_754*100, (temp_r31*100)-((lbl_1_data_754/2)*100)); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32(-(lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); - GXColor3u8(temp_r30, temp_r29, temp_r28); - } + s32 temp_r31; + u8 temp_r30, temp_r29, temp_r28; + s32 sp84 = 0; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754 + 1) * 4); + for (temp_r31 = 0; temp_r31 <= lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100), 0, (-(lbl_1_data_754 / 2)) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100), 0, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, 0, (temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754 / 2) * 100, 0, (temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754 + 1) * 4); + for (temp_r31 = 0; temp_r31 <= lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100), lbl_1_data_754 * 100, (-(lbl_1_data_754 / 2)) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100), 0, -(lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, temp_r31 * 100, -(lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754 / 2) * 100, temp_r31 * 100, -(lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754 + 1) * 4); + for (temp_r31 = 0; temp_r31 <= lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100), lbl_1_data_754 * 100, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100), 0, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, temp_r31 * 100, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754 / 2) * 100, temp_r31 * 100, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754 + 1) * 4); + for (temp_r31 = 0; temp_r31 <= lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((lbl_1_data_754 / 2) * 100, lbl_1_data_754 * 100, (temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754 / 2) * 100, 0, (temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754 / 2) * 100, temp_r31 * 100, -(lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754 / 2) * 100, temp_r31 * 100, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754 + 1) * 4); + for (temp_r31 = 0; temp_r31 <= lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, lbl_1_data_754 * 100, (temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, 0, (temp_r31 * 100) - ((lbl_1_data_754 / 2) * 100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, temp_r31 * 100, -(lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754 / 2) * 100, temp_r31 * 100, (lbl_1_data_754 / 2) * 100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } } -s16 lbl_1_data_758[] = { - 1, - 3, - 2, - 13, - 14, - 15, - 16, - 68, - -1 -}; +s16 lbl_1_data_758[] = { 1, 3, 2, 13, 14, 15, 16, 68, -1 }; -s16 lbl_1_data_76A[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - -1 -}; +s16 lbl_1_data_76A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1 }; void fn_1_814C(void) { - s16 temp_r31 = 0; - s16 temp_r30 = 0; - s16 temp_r29 = 0; - s16 temp_r28; - Vec sp8 = { 0, 0, 0 }; - while(1) { - lbl_1_bss_A14 = HuAudFXEmiterPlay(1282, &sp8); - HuPrcSleep(60); - if(HuPadBtnDown[1] & PAD_BUTTON_A) { - HuAudSeqFadeOut(temp_r28, 60); - temp_r28 = HuAudSeqPlay(lbl_1_data_758[temp_r31]); - temp_r31++; - if(lbl_1_data_758[temp_r31] == -1) { - temp_r31 = 0; - } - temp_r29 = 30; - } - if(HuPadBtnDown[1] & PAD_BUTTON_B) { - HuAudFXPlay(lbl_1_data_76A[temp_r30]); - temp_r30++; - if(lbl_1_data_76A[temp_r30] == -1) { - temp_r30 = 0; - } - temp_r29 = 30; - } - if(temp_r29) { - temp_r29--; - print8(16, 430, 2.0f, "MusicNo:%d SENo:%d", temp_r31, temp_r30); - } - HuPrcVSleep(); - } + s16 temp_r31 = 0; + s16 temp_r30 = 0; + s16 temp_r29 = 0; + s16 temp_r28; + Vec sp8 = { 0, 0, 0 }; + while (1) { + lbl_1_bss_A14 = HuAudFXEmiterPlay(1282, &sp8); + HuPrcSleep(60); + if (HuPadBtnDown[1] & PAD_BUTTON_A) { + HuAudSeqFadeOut(temp_r28, 60); + temp_r28 = HuAudSeqPlay(lbl_1_data_758[temp_r31]); + temp_r31++; + if (lbl_1_data_758[temp_r31] == -1) { + temp_r31 = 0; + } + temp_r29 = 30; + } + if (HuPadBtnDown[1] & PAD_BUTTON_B) { + HuAudFXPlay(lbl_1_data_76A[temp_r30]); + temp_r30++; + if (lbl_1_data_76A[temp_r30] == -1) { + temp_r30 = 0; + } + temp_r29 = 30; + } + if (temp_r29) { + temp_r29--; + print8(16, 430, 2.0f, "MusicNo:%d SENo:%d", temp_r31, temp_r30); + } + HuPrcVSleep(); + } } s16 lbl_1_data_7AC = -1; u32 fn_1_82C8(void) { - s16 temp_r31; - temp_r31 = HuPadBtn[0]; - if(lbl_1_bss_A08) { - lbl_1_bss_A08--; - if(!temp_r31) { - lbl_1_bss_A08 = 0; - } else { - temp_r31 = 0; - } - } else if(temp_r31) { - if(lbl_1_data_7AC == temp_r31) { - lbl_1_bss_A08 = 3; - } else { - lbl_1_bss_A08 = 20; - } - lbl_1_data_7AC = temp_r31; - } else { - lbl_1_data_7AC = 0; - } - return temp_r31; + s16 temp_r31; + temp_r31 = HuPadBtn[0]; + if (lbl_1_bss_A08) { + lbl_1_bss_A08--; + if (!temp_r31) { + lbl_1_bss_A08 = 0; + } + else { + temp_r31 = 0; + } + } + else if (temp_r31) { + if (lbl_1_data_7AC == temp_r31) { + lbl_1_bss_A08 = 3; + } + else { + lbl_1_bss_A08 = 20; + } + lbl_1_data_7AC = temp_r31; + } + else { + lbl_1_data_7AC = 0; + } + return temp_r31; } void fn_1_83B4(void) { - u32 temp_r29; - Process *temp_r28; - temp_r28 = HuPrcCurrentGet(); - HuPrcSetStat(temp_r28, 0xC); - while(1) { - temp_r29 = fn_1_82C8(); - if(HuPadBtn[0] & PAD_BUTTON_RIGHT) { - while(1) { - temp_r29 = fn_1_82C8(); - if(HuPadBtn[0] & PAD_BUTTON_LEFT) { - break; - } - if(!temp_r29) { - HuPrcAllPause(1); - Hu3DPauseSet(1); - } else { - HuPrcAllPause(0); - Hu3DPauseSet(0); - } - HuPrcVSleep(); - } - HuPrcAllPause(0); - Hu3DPauseSet(0); - } - if(temp_r29 & PAD_BUTTON_UP) { - if(lbl_1_bss_A0C < 120.0f) { - lbl_1_bss_A0C++; - } - } - if(temp_r29 & PAD_BUTTON_DOWN) { - if(lbl_1_bss_A0C > 5.0f) { - lbl_1_bss_A0C--; - } - } - HuPrcVSleep(); - } -} \ No newline at end of file + u32 temp_r29; + Process *temp_r28; + temp_r28 = HuPrcCurrentGet(); + HuPrcSetStat(temp_r28, 0xC); + while (1) { + temp_r29 = fn_1_82C8(); + if (HuPadBtn[0] & PAD_BUTTON_RIGHT) { + while (1) { + temp_r29 = fn_1_82C8(); + if (HuPadBtn[0] & PAD_BUTTON_LEFT) { + break; + } + if (!temp_r29) { + HuPrcAllPause(1); + Hu3DPauseSet(1); + } + else { + HuPrcAllPause(0); + Hu3DPauseSet(0); + } + HuPrcVSleep(); + } + HuPrcAllPause(0); + Hu3DPauseSet(0); + } + if (temp_r29 & PAD_BUTTON_UP) { + if (lbl_1_bss_A0C < 120.0f) { + lbl_1_bss_A0C++; + } + } + if (temp_r29 & PAD_BUTTON_DOWN) { + if (lbl_1_bss_A0C > 5.0f) { + lbl_1_bss_A0C--; + } + } + HuPrcVSleep(); + } +} diff --git a/src/REL/modeseldll/datalist.c b/src/REL/modeseldll/datalist.c index 07019d3f..87287bed 100644 --- a/src/REL/modeseldll/datalist.c +++ b/src/REL/modeseldll/datalist.c @@ -6,45 +6,45 @@ s16 lbl_1_bss_152[12]; s16 lbl_1_bss_150; DataListModel lbl_1_data_428[] = { - { 0x630000, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630000, 0x1, 2, 0, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630001, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630001, 0x1, 2, 2, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630002, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630002, 0x1, 2, 4, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630003, 0x1, 1, -1, 4, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630004, 0x1, 1, -1, 4, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630005, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630006, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630026, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630027, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630028, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630029, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x63002A, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x63002B, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x63002C, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x63002D, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x63002E, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x630007, 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x00), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x00), 0x1, 2, 0, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x01), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x01), 0x1, 2, 2, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x02), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x02), 0x1, 2, 4, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x03), 0x1, 1, -1, 4, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x04), 0x1, 1, -1, 4, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x05), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x05), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x05), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x06), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x06), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x06), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x26), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x27), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x28), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x29), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x2A), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x2B), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x2C), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x2D), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x2E), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x07), 0x1, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } }, }; DataListSprite lbl_1_data_93C[] = { - { 0x630009, 4, 2000, 288, 240, { 255, 255, 255, 255 } }, - { 0x630008, 4, 2000, 288, 100, { 255, 255, 255, 255 } }, - { 0x63000A, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x63000B, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x63000C, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x63001F, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x630020, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x630021, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x630022, 4, 2000, 288, 300, { 255, 255, 255, 255 } }, - { 0x63002F, 4, 2000, 288, 240, { 255, 255, 255, 255 } }, - { 0x63003C, 4, 2000, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x09), 4, 2000, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x08), 4, 2000, 288, 100, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x0A), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x0B), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x0C), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x1F), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x20), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x21), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x22), 4, 2000, 288, 300, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x2F), 4, 2000, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_MODESEL, 0x3C), 4, 2000, 288, 240, { 255, 255, 255, 255 } }, { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, }; @@ -127,4 +127,4 @@ void fn_1_C2BC(void) espKill(lbl_1_bss_152[i]); } } -} \ No newline at end of file +} diff --git a/src/REL/modeseldll/filesel.c b/src/REL/modeseldll/filesel.c index adff0c5d..1ddd44cf 100644 --- a/src/REL/modeseldll/filesel.c +++ b/src/REL/modeseldll/filesel.c @@ -1,70 +1,54 @@ -#include "game/gamework_data.h" -#include "game/process.h" -#include "game/window.h" -#include "game/wipe.h" #include "game/audio.h" -#include "game/gamework.h" -#include "game/saveload.h" #include "game/card.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/pad.h" -#include "game/hsfdraw.h" +#include "game/process.h" +#include "game/saveload.h" +#include "game/window.h" +#include "game/wipe.h" -#include "math.h" +#include "ext_math.h" #include "REL/modeseldll.h" +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif s16 lbl_1_data_100 = -1; -float lbl_1_data_104[] = { - -55, 0, 0, 0, 60, -57, 806, -71, - 0, 0, 0, 100, -131, 900, -87, 0, - 0, 0, 46, -117, 566, -87, 0, 0, - 0, 46, -117, 566, -90, 0, 0, -22, - 39, -153, 432, -40, 0, 0, 0, 130, - -186, 6530, -23, 0, 0, -9, 1, - -70, 1318, -25, 0, 0, 0, 242, 90, - 343, -30, 0, 0, 0, 223, -60, 505, - -23, 0, 0, 0, 65, -97, 1318 -}; +float lbl_1_data_104[] = { -55, 0, 0, 0, 60, -57, 806, -71, 0, 0, 0, 100, -131, 900, -87, 0, 0, 0, 46, -117, 566, -87, 0, 0, 0, 46, -117, 566, -90, 0, + 0, -22, 39, -153, 432, -40, 0, 0, 0, 130, -186, 6530, -23, 0, 0, -9, 1, -70, 1318, -25, 0, 0, 0, 242, 90, 343, -30, 0, 0, 0, 223, -60, 505, -23, + 0, 0, 0, 65, -97, 1318 }; s32 lbl_1_data_21C[] = { - 0x63000D, - 0x63000E, - 0x63000F, - 0x630010, - 0x630011, - 0x630012, - 0x630013, - 0x630014, - 0x630015, - 0x630016, - 0x630017, - 0x630018, - 0x630019, - 0x63001A, - 0x63001B, - 0x63001C, - 0x63001D, - 0x63001E, + DATA_MAKE_NUM(DATADIR_MODESEL, 0x0D), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x0E), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x0F), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x10), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x11), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x12), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x13), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x14), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x15), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x16), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x17), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x18), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x19), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x1A), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x1B), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x1C), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x1D), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x1E), }; +char *lbl_1_data_26C[] = { "\x0E\x16", "\x0E\x17" }; -char *lbl_1_data_26C[] = { - "\x0E\x16", - "\x0E\x17" -}; +char *lbl_1_data_278[] = { "A", "B" }; -char *lbl_1_data_278[] = { - "A", - "B" -}; - -char *lbl_1_data_288[] = { - "1", - "2", - "3" -}; +char *lbl_1_data_288[] = { "1", "2", "3" }; s32 lbl_1_bss_14C; s16 lbl_1_bss_148; @@ -103,63 +87,67 @@ void fn_1_AAB8(void); s32 fn_1_37DC(void) { - s16 i; - s16 result; - WindowData *window; - s16 fxstat; - Process *process = HuPrcCurrentGet(); - Process *child; - float winSize[2]; - for(i=0; i<3; i++) { - lbl_1_bss_13A[i] = lbl_1_bss_134[i] = -1; - lbl_1_bss_116[i] = -1; - lbl_1_bss_110[i] = -1; - } - lbl_1_bss_FC = lbl_1_bss_F8 = lbl_1_bss_F4 = NULL; - curSlotNo = 0; - fn_1_1EC0(0); - fn_1_5D30(); - child = HuPrcChildCreate(fn_1_AAB8, 10, 8192, 0, process); - winSize[0] = 457; - winSize[1] = 94; - lbl_1_bss_148 = HuWinExCreateStyled(-10000, 448-winSize[1], winSize[0], winSize[1], -1, 0); - window = &winData[lbl_1_bss_148]; - window->active_pad = 1; - HuWinPushKeySet(lbl_1_bss_148, 0x300); - HuWinMesSpeedSet(lbl_1_bss_148, 0); - HuWinDispOn(lbl_1_bss_148); - fxstat = HuAudFXPlay(2098); - lbl_1_data_100 = fxstat; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuAudSeqPlay(43); - while(1) { - result = fn_1_3AAC(); - if(!result) { - break; - } - if(!SLSaveFlagGet()) { - GWGameStatReset(); - GWGameStat.sound_mode = msmSysGetOutputMode(); - result = 1; - break; - } else { - if(fn_1_61B4()) { - break; - } - } - } - if(result == 0) { - HuAudFXStop(fxstat); - } - HuWinExAnimOut(lbl_1_bss_148); - HuWinExCleanup(lbl_1_bss_148); - HuPrcKill(child); - HuCardUnMount(0); - HuCardUnMount(1); - return result; + s16 i; + s16 result; + WindowData *window; + s16 fxstat; + Process *process = HuPrcCurrentGet(); + Process *child; + float winSize[2]; + for (i = 0; i < 3; i++) { + lbl_1_bss_13A[i] = lbl_1_bss_134[i] = -1; + lbl_1_bss_116[i] = -1; + lbl_1_bss_110[i] = -1; + } + lbl_1_bss_FC = lbl_1_bss_F8 = lbl_1_bss_F4 = NULL; + curSlotNo = 0; + fn_1_1EC0(0); + fn_1_5D30(); + child = HuPrcChildCreate(fn_1_AAB8, 10, 8192, 0, process); + winSize[0] = 457; + winSize[1] = 94; + lbl_1_bss_148 = HuWinExCreateStyled(-10000, 448 - winSize[1], winSize[0], winSize[1], -1, 0); + window = &winData[lbl_1_bss_148]; + window->active_pad = 1; + HuWinPushKeySet(lbl_1_bss_148, 0x300); + HuWinMesSpeedSet(lbl_1_bss_148, 0); + HuWinDispOn(lbl_1_bss_148); + fxstat = HuAudFXPlay(2098); + lbl_1_data_100 = fxstat; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuAudSeqPlay(43); + while (1) { + result = fn_1_3AAC(); + if (!result) { + break; + } + if (!SLSaveFlagGet()) { + GWGameStatReset(); + #if VERSION_PAL + _ClearFlag(0x1000B); + #endif + GWGameStat.sound_mode = msmSysGetOutputMode(); + result = 1; + break; + } + else { + if (fn_1_61B4()) { + break; + } + } + } + if (result == 0) { + HuAudFXStop(fxstat); + } + HuWinExAnimOut(lbl_1_bss_148); + HuWinExCleanup(lbl_1_bss_148); + HuPrcKill(child); + HuCardUnMount(0); + HuCardUnMount(1); + return result; } #define GET_ZEROSIGN(x) (((x) == 0) ? (-1) : (1)) @@ -173,560 +161,592 @@ void fn_1_BA20(void); s32 fn_1_3AAC(void) { - s16 temp_r31; - s16 temp_r30; - s32 temp_r29; - s32 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - WindowData *temp_r23; - float temp_f31; - CARDFileInfo sp34; - Vec sp28; - Vec sp1C; - Vec sp10; - float sp8[2]; - - fn_1_1EC0(0); - temp_r23 = &winData[lbl_1_bss_148]; - HuWinMesMaxSizeGet(1, sp8, 0x10000C); - lbl_1_bss_146 = HuWinExCreateStyled(-10000.0f, 316.0f, sp8[0], sp8[1], -1, 0); - HuWinBGTPLvlSet(lbl_1_bss_146, 0); - HuWinMesSpeedSet(lbl_1_bss_146, 0); - repeat: - sp28.x = 188; - sp28.y = 250; - sp28.z = 600; - Hu3D2Dto3D(&sp28, 1, &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[2], &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[4], &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[0], &sp1C); - sp28.x = 388; - Hu3D2Dto3D(&sp28, 1, &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[3], &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[5], &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[1], &sp1C); - Hu3DModelAttrReset(lbl_1_bss_19A[2], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[4], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[3], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[5], 1); - Hu3DModelRotSet(lbl_1_bss_19A[2], 0, 0, 0); - Hu3DModelRotSet(lbl_1_bss_19A[3], 0, 0, 0); - fn_1_57C8(lbl_1_bss_19A[4]); - fn_1_57C8(lbl_1_bss_19A[5]); - lbl_1_bss_12C[0] = lbl_1_bss_12C[1] = 1; - lbl_1_bss_108[0] = lbl_1_bss_108[1] = lbl_1_bss_100[0] = lbl_1_bss_100[1] = 1.0f; - lbl_1_bss_11C = -1; - fn_1_5C38(); - for(temp_r30=0; temp_r30<=20; temp_r30++) { - temp_f31 = temp_r30/20.0; - temp_f31 = sin(M_PI*(90.0f*temp_f31)/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[2], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[3], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[4], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[5], temp_f31, temp_f31, temp_f31); - HuPrcVSleep(); - } - while(1) { - repeat_loop: - HuWinDispOff(lbl_1_bss_146); - temp_r28 = fn_1_562C(); - if(temp_r28 == 0 && fn_1_5C38() == 0) { - if(fn_1_5C38() == 0) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - } - HuWinMesSet(lbl_1_bss_148, 0x10004F); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesWait(lbl_1_bss_148); - temp_r27 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r27 == 0) { - SLSaveFlagSet(0); - temp_r29 = 1; - goto cleanup; - } - HuWinInsertMesSet(lbl_1_bss_148, 0x100052, 0); - HuWinMesSet(lbl_1_bss_148, 0x10004C); - HuWinMesWait(lbl_1_bss_148); - while(!(HuPadBtnDown[0] & PAD_BUTTON_A)) { - HuPrcVSleep(); - } - } - while(!fn_1_5C38()) { - temp_r28 = fn_1_562C(); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - if(temp_r23->key_down & PAD_BUTTON_B) { - HuAudFXPlay(3); - return 0; - } - if(fn_1_5C38()) { - break; - } - HuWinMesSet(lbl_1_bss_148, 0x10004B); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesWait(lbl_1_bss_148); - temp_r27 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r27 == 0) { - SLSaveFlagSet(0); - temp_r29 = 1; - goto cleanup; - } - HuWinInsertMesSet(lbl_1_bss_148, 0x100052, 0); - HuWinMesSet(lbl_1_bss_148, 0x10004C); - HuWinMesWait(lbl_1_bss_148); - while(!(HuPadBtnDown[0] & PAD_BUTTON_A)) { - HuPrcVSleep(); - } - } - SLSaveFlagSet(1); - HuWinMesSet(lbl_1_bss_148, 0x100001); - HuWinMesWait(lbl_1_bss_148); - HuWinMesSet(lbl_1_bss_146, 0x10000C); - HuWinDispOn(lbl_1_bss_146); - if(curSlotNo == 0) { - if(lbl_1_bss_14C & 0x1) { - temp_r31 = 0; - } else { - temp_r31 = 1; - } - } else { - if(lbl_1_bss_14C & 0x2) { - temp_r31 = 1; - } else { - temp_r31 = 0; - } - } - fn_1_5BAC(temp_r31, 1); - HuPrcSleep(10); - temp_r24 = temp_r31; - while(1) { - if(!fn_1_5C38()) { - fn_1_5BAC(temp_r31, 0); - HuPrcSleep(10); - goto repeat_loop; - } else { - if((HuPadDStkRep[0] & 0x1) && (lbl_1_bss_14C & 0x1)) { - temp_r31 = 0; - } else if((HuPadDStkRep[0] & 0x2) && (lbl_1_bss_14C & 0x2)) { - temp_r31 = 1; - } else if(!(lbl_1_bss_14C & (1 << temp_r31))) { - if(!(lbl_1_bss_14C & (1 << ((temp_r31+1) & 0x1)))) { - fn_1_5BAC(temp_r31, 0); - HuPrcSleep(10); - goto repeat_loop; - } else { - temp_r31 = (temp_r31+1) & 0x1; - } - } - if(temp_r24 != temp_r31) { - HuAudFXPlay(0); - fn_1_5BAC(temp_r31, 1); - fn_1_5BAC((temp_r31+1) & 0x1, 0); - HuPrcSleep(10); - temp_r24 = temp_r31; - } - if(HuPadBtnDown[0] & PAD_BUTTON_A) { - HuAudFXPlay(2096); - goto loop_exit; - } else if(HuPadBtnDown[0] & PAD_BUTTON_B) { - HuAudFXPlay(3); - return 0; - } - } - HuPrcVSleep(); - } - } - loop_exit: - HuWinHomeClear(lbl_1_bss_148); - temp_r26 = (temp_r31+1)&0x1; - Hu3DMotionSet(lbl_1_bss_19A[temp_r31+4], lbl_1_bss_16A[7]); - Hu3DMotionSpeedSet(lbl_1_bss_19A[temp_r31+4], 2.0f); - lbl_1_bss_12C[0] = lbl_1_bss_12C[1] = 0; - lbl_1_bss_11C = temp_r31; - SLCurSlotNoSet(temp_r31); - temp_r28 = HuCardMount(temp_r31); - if(temp_r28 == 0) { - SLSerialNoGet(); - temp_r28 = HuCardOpen(temp_r31, SaveFileNameTbl[0], &sp34); - if(temp_r28 != 0 && temp_r28 != -4) { - temp_r29 = 1; - } else { - temp_r29 = 0; - } - HuCardClose(&sp34); - } else { - if(temp_r28 == -3) { - goto repeat; - } + s16 temp_r31; + s16 temp_r30; + s32 temp_r29; + s32 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + WindowData *temp_r23; + float temp_f31; + CARDFileInfo sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + float sp8[2]; + + fn_1_1EC0(0); + temp_r23 = &winData[lbl_1_bss_148]; + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x10, 0x0C)); + lbl_1_bss_146 = HuWinExCreateStyled(-10000.0f, 316.0f, sp8[0], sp8[1], -1, 0); + HuWinBGTPLvlSet(lbl_1_bss_146, 0); + HuWinMesSpeedSet(lbl_1_bss_146, 0); +repeat: + sp28.x = 188; + sp28.y = 250; + sp28.z = 600; + Hu3D2Dto3D(&sp28, 1, &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[2], &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[4], &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[0], &sp1C); + sp28.x = 388; + Hu3D2Dto3D(&sp28, 1, &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[3], &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[5], &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[1], &sp1C); + Hu3DModelAttrReset(lbl_1_bss_19A[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[5], HU3D_ATTR_DISPOFF); + Hu3DModelRotSet(lbl_1_bss_19A[2], 0, 0, 0); + Hu3DModelRotSet(lbl_1_bss_19A[3], 0, 0, 0); + fn_1_57C8(lbl_1_bss_19A[4]); + fn_1_57C8(lbl_1_bss_19A[5]); + lbl_1_bss_12C[0] = lbl_1_bss_12C[1] = 1; + lbl_1_bss_108[0] = lbl_1_bss_108[1] = lbl_1_bss_100[0] = lbl_1_bss_100[1] = 1.0f; + lbl_1_bss_11C = -1; + fn_1_5C38(); + for (temp_r30 = 0; temp_r30 <= 20; temp_r30++) { + temp_f31 = temp_r30 / 20.0; + temp_f31 = sind(90.0f * temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[2], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[3], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[4], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[5], temp_f31, temp_f31, temp_f31); + HuPrcVSleep(); + } + while (1) { + repeat_loop: + HuWinDispOff(lbl_1_bss_146); + temp_r28 = fn_1_562C(); + if (temp_r28 == 0 && fn_1_5C38() == 0) { + if (fn_1_5C38() == 0) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4F)); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesWait(lbl_1_bss_148); + temp_r27 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r27 == 0) { + SLSaveFlagSet(0); + temp_r29 = 1; + goto cleanup; + } + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x52), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4C)); + HuWinMesWait(lbl_1_bss_148); + while (!(HuPadBtnDown[0] & PAD_BUTTON_A)) { + HuPrcVSleep(); + } + } + while (!fn_1_5C38()) { + temp_r28 = fn_1_562C(); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + if (temp_r23->key_down & PAD_BUTTON_B) { + HuAudFXPlay(3); + return 0; + } + if (fn_1_5C38()) { + break; + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4B)); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesWait(lbl_1_bss_148); + temp_r27 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r27 == 0) { + SLSaveFlagSet(0); + temp_r29 = 1; + goto cleanup; + } + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x52), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4C)); + HuWinMesWait(lbl_1_bss_148); + while (!(HuPadBtnDown[0] & PAD_BUTTON_A)) { + HuPrcVSleep(); + } + } + SLSaveFlagSet(1); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x01)); + HuWinMesWait(lbl_1_bss_148); + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x0C)); + HuWinDispOn(lbl_1_bss_146); + if (curSlotNo == 0) { + if (lbl_1_bss_14C & 0x1) { + temp_r31 = 0; + } + else { + temp_r31 = 1; + } + } + else { + if (lbl_1_bss_14C & 0x2) { + temp_r31 = 1; + } + else { + temp_r31 = 0; + } + } + fn_1_5BAC(temp_r31, 1); + HuPrcSleep(10); + temp_r24 = temp_r31; + while (1) { + if (!fn_1_5C38()) { + fn_1_5BAC(temp_r31, 0); + HuPrcSleep(10); + goto repeat_loop; + } + else { + if ((HuPadDStkRep[0] & 0x1) && (lbl_1_bss_14C & 0x1)) { + temp_r31 = 0; + } + else if ((HuPadDStkRep[0] & 0x2) && (lbl_1_bss_14C & 0x2)) { + temp_r31 = 1; + } + else if (!(lbl_1_bss_14C & (1 << temp_r31))) { + if (!(lbl_1_bss_14C & (1 << ((temp_r31 + 1) & 0x1)))) { + fn_1_5BAC(temp_r31, 0); + HuPrcSleep(10); + goto repeat_loop; + } + else { + temp_r31 = (temp_r31 + 1) & 0x1; + } + } + if (temp_r24 != temp_r31) { + HuAudFXPlay(0); + fn_1_5BAC(temp_r31, 1); + fn_1_5BAC((temp_r31 + 1) & 0x1, 0); + HuPrcSleep(10); + temp_r24 = temp_r31; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2096); + goto loop_exit; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + return 0; + } + } + HuPrcVSleep(); + } + } +loop_exit: + HuWinHomeClear(lbl_1_bss_148); + temp_r26 = (temp_r31 + 1) & 0x1; + Hu3DMotionSet(lbl_1_bss_19A[temp_r31 + 4], lbl_1_bss_16A[7]); + Hu3DMotionSpeedSet(lbl_1_bss_19A[temp_r31 + 4], 2.0f); + lbl_1_bss_12C[0] = lbl_1_bss_12C[1] = 0; + lbl_1_bss_11C = temp_r31; + SLCurSlotNoSet(temp_r31); + temp_r28 = HuCardMount(temp_r31); + if (temp_r28 == 0) { + SLSerialNoGet(); + temp_r28 = HuCardOpen(temp_r31, SaveFileNameTbl[0], &sp34); + if (temp_r28 != 0 && temp_r28 != -4) { + temp_r29 = 1; + } + else { + temp_r29 = 0; + } + HuCardClose(&sp34); + } + else { + if (temp_r28 == -3) { + goto repeat; + } temp_r29 = 1; - } - temp_r27 = HuCardSectorSizeGet(curSlotNo); - if(temp_r27 > 0 && temp_r27 != 8192) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100039); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - goto skip_check; - } else { - if(temp_r27 == -128) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - goto skip_check; - } else { - lbl_1_bss_8C += 720.0f; - for(temp_r30=0; temp_r30 <= 40; temp_r30++) { - if(temp_r30 <= 30) { - temp_f31 = temp_r30/30.0f; - sp28.x = 288.0+(GET_ZEROSIGN(temp_r26)*(100.0+(250.0*sin(M_PI*(90.0f*temp_f31)/180.0)))); - sp28.y = 250.0-(100.0*sin(M_PI*(180.0f*temp_f31)/180.0)); - sp28.z = (temp_r30*100)+600; - Hu3D2Dto3D(&sp28, 1, &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r26+2], &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r26], &sp1C); - Hu3DModelRotSet(lbl_1_bss_19A[temp_r26+2], temp_r30*20, temp_r30*10, 0); - } - - if(temp_r30 > 20) { - temp_f31 = (temp_r30-20)/20.0f; - if(temp_r29) { - sp28.x = 288.0f+((1.0-temp_f31)*(100*GET_ZEROSIGN(temp_r31))); - sp28.y = 250.0-(100.0*sin(M_PI*(180.0f*temp_f31)/180.0)); - sp28.z = 600.0f; - Hu3D2Dto3D(&sp28, 1, &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); - temp_f31 = (0.5*sin(M_PI*(90.0f*temp_f31)/180.0))+1.0; - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); - } else { - sp28.x = 288.0f+(100*GET_ZEROSIGN(temp_r31)); - sp28.y = 250; - sp28.z = 600; - Hu3D2Dto3D(&sp28, 1, &sp1C); - sp28.x = 60; - sp28.y = 90; - sp28.z = 600; - Hu3D2Dto3D(&sp28, 1, &sp10); - VECSubtract(&sp10, &sp1C, &sp28); - sp28.x *= sin(M_PI*(90.0f*temp_f31)/180.0); - sp28.y *= 1.0-cos(M_PI*(90.0f*temp_f31)/180.0); - sp28.z = 0; - VECAdd(&sp28, &sp1C, &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); - lbl_1_bss_108[temp_r31] *= cos(M_PI*(90.0f*temp_f31)/180.0); - lbl_1_bss_100[temp_r31] = 1.0-temp_f31; - temp_f31 = 1.0+(0.3*cos(M_PI*(90.0f*temp_f31)/180.0)); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); - } - } - HuPrcVSleep(); - } - if(temp_r29 == 0) { - HuWinKill(lbl_1_bss_146); - return 1; - } - HuWinDispOff(lbl_1_bss_146); - temp_r29 = 0; - if(temp_r28 == -2) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100037); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - } else if(temp_r28 == -128) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - } else if(temp_r28 == -3) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - } else if(temp_r28 == -6) { - UnMountCnt = 0; - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesSet(lbl_1_bss_148, 0x100004); - HuWinMesWait(lbl_1_bss_148); - temp_r25 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r25 == 0) { - HuWinMesSet(lbl_1_bss_148, 0x10004E); - HuWinMesWait(lbl_1_bss_148); - temp_r25 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r25 == 0) { - fn_1_B8CC(0x100038); - HuWinMesSet(lbl_1_bss_148, 0x10000B); - HuWinMesWait(lbl_1_bss_148); - HuPrcSleep(60); - if(UnMountCnt & (1 << temp_r31)) { - fn_1_BA20(); - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - goto cleanup; - } else { - _SetFlag(0x30000); - temp_r28 = HuCardFormat(temp_r31); - _ClearFlag(FLAG_ID_MAKE(3, 0)); - if(temp_r28 == 0) { - SLSerialNoGet(); - } - fn_1_BA20(); - if(temp_r28 == -128) { - HuWinMesSet(lbl_1_bss_148, 0x100036); - HuWinMesWait(lbl_1_bss_148); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - } else if(temp_r28 == -3) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = 1; - } - } - } else { - temp_r29 = 1; - } - } else { - temp_r29 = 1; - } - } - } - } - if(temp_r29 == 0) { - goto cleanup; - } - skip_check: - HuWinMesSet(lbl_1_bss_148, 0x10004F); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesWait(lbl_1_bss_148); - temp_r27 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r27 == 0) { - SLSaveFlagSet(0); - goto cleanup; - } else { - HuWinInsertMesSet(lbl_1_bss_148, 0x100052, 0); - HuWinMesSet(lbl_1_bss_148, 0x10004C); - HuWinMesWait(lbl_1_bss_148); - while(!(HuPadBtnDown[0] & PAD_BUTTON_A)) { - HuPrcVSleep(); - } - } - cleanup: - HuWinDispOff(lbl_1_bss_146); - lbl_1_bss_8C += 720.0f; - for(temp_r30=0; temp_r30<=20; temp_r30++) { - temp_f31 = temp_r30/20.0f; - if(temp_r29) { - temp_f31 = 1.5*cos(M_PI*(90.0f*temp_f31)/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[2], 0.7*temp_f31, 0.7*temp_f31, 0.7*temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[3], 0.7*temp_f31, 0.7*temp_f31, 0.7*temp_f31); - if(!SLSaveFlagGet()) { - espScaleSet(lbl_1_bss_152[1], temp_f31, temp_f31); - } - } else { - sp28.x = 288; - sp28.y = 250; - sp28.z = 600; - Hu3D2Dto3D(&sp28, 1, &sp1C); - sp28.x = 60; - sp28.y = 90; - sp28.z = 600; - Hu3D2Dto3D(&sp28, 1, &sp10); - VECSubtract(&sp10, &sp1C, &sp28); - sp28.x *= sin(M_PI*(90.0f*temp_f31)/180.0); - sp28.y *= 1.0-cos(M_PI*(90.0f*temp_f31)/180.0); - sp28.z = 0.0f; - VECAdd(&sp28, &sp1C, &sp1C); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); - lbl_1_bss_108[temp_r31] *= cos(M_PI*(90.0f*temp_f31)/180.0); - lbl_1_bss_100[temp_r31] = 1.0-temp_f31; - temp_f31 = 1.0+(0.5*cos(M_PI*(90.0f*temp_f31)/180.0)); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); - } - HuPrcVSleep(); - } - if(temp_r29 && SLSaveFlagGet()) { - goto repeat; - } - HuWinKill(lbl_1_bss_146); - return 1; + } + temp_r27 = HuCardSectorSizeGet(curSlotNo); + if (temp_r27 > 0 && temp_r27 != 8192) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + goto skip_check; + } + else { + if (temp_r27 == -128) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + goto skip_check; + } + else { + lbl_1_bss_8C += 720.0f; + for (temp_r30 = 0; temp_r30 <= 40; temp_r30++) { + if (temp_r30 <= 30) { + temp_f31 = temp_r30 / 30.0f; + sp28.x = 288.0 + (GET_ZEROSIGN(temp_r26) * (100.0 + (250.0 * sind(90.0f * temp_f31)))); + sp28.y = 250.0 - (100.0 * sind(180.0f * temp_f31)); + sp28.z = (temp_r30 * 100) + 600; + Hu3D2Dto3D(&sp28, 1, &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r26 + 2], &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r26], &sp1C); + Hu3DModelRotSet(lbl_1_bss_19A[temp_r26 + 2], temp_r30 * 20, temp_r30 * 10, 0); + } + + if (temp_r30 > 20) { + temp_f31 = (temp_r30 - 20) / 20.0f; + if (temp_r29) { + sp28.x = 288.0f + ((1.0 - temp_f31) * (100 * GET_ZEROSIGN(temp_r31))); + sp28.y = 250.0 - (100.0 * sind(180.0f * temp_f31)); + sp28.z = 600.0f; + Hu3D2Dto3D(&sp28, 1, &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); + temp_f31 = (0.5 * sind(90.0f * temp_f31)) + 1.0; + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); + } + else { + sp28.x = 288.0f + (100 * GET_ZEROSIGN(temp_r31)); + sp28.y = 250; + sp28.z = 600; + Hu3D2Dto3D(&sp28, 1, &sp1C); + sp28.x = 60; + sp28.y = 90; + sp28.z = 600; + Hu3D2Dto3D(&sp28, 1, &sp10); + VECSubtract(&sp10, &sp1C, &sp28); + sp28.x *= sind(90.0f * temp_f31); + sp28.y *= 1.0 - cosd(90.0f * temp_f31); + sp28.z = 0; + VECAdd(&sp28, &sp1C, &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); + lbl_1_bss_108[temp_r31] *= cosd(90.0f * temp_f31); + lbl_1_bss_100[temp_r31] = 1.0 - temp_f31; + temp_f31 = 1.0 + (0.3 * cosd(90.0f * temp_f31)); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); + } + } + HuPrcVSleep(); + } + if (temp_r29 == 0) { + HuWinKill(lbl_1_bss_146); + return 1; + } + HuWinDispOff(lbl_1_bss_146); + temp_r29 = 0; + if (temp_r28 == -2) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); + #if VERSION_PAL + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + #else + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + #endif + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + } + else if (temp_r28 == -128) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + } + else if (temp_r28 == -3) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + } + else if (temp_r28 == -6) { + UnMountCnt = 0; + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[temp_r31]), 0); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x04)); + HuWinMesWait(lbl_1_bss_148); + temp_r25 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r25 == 0) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4E)); + HuWinMesWait(lbl_1_bss_148); + temp_r25 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r25 == 0) { + fn_1_B8CC(MAKE_MESSID(16, 0x38)); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x0B)); + HuWinMesWait(lbl_1_bss_148); + HuPrcSleep(60); + if (UnMountCnt & (1 << temp_r31)) { + fn_1_BA20(); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + goto cleanup; + } + else { + _SetFlag(0x30000); + temp_r28 = HuCardFormat(temp_r31); + _ClearFlag(FLAG_ID_MAKE(3, 0)); + if (temp_r28 == 0) { + SLSerialNoGet(); + } + fn_1_BA20(); + if (temp_r28 == -128) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x36)); + HuWinMesWait(lbl_1_bss_148); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + } + else if (temp_r28 == -3) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = 1; + } + } + } + else { + temp_r29 = 1; + } + } + else { + temp_r29 = 1; + } + } + } + } + if (temp_r29 == 0) { + goto cleanup; + } +skip_check: + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4F)); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesWait(lbl_1_bss_148); + temp_r27 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r27 == 0) { + SLSaveFlagSet(0); + goto cleanup; + } + else { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x52), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4C)); + HuWinMesWait(lbl_1_bss_148); + while (!(HuPadBtnDown[0] & PAD_BUTTON_A)) { + HuPrcVSleep(); + } + } +cleanup: + HuWinDispOff(lbl_1_bss_146); + lbl_1_bss_8C += 720.0f; + for (temp_r30 = 0; temp_r30 <= 20; temp_r30++) { + temp_f31 = temp_r30 / 20.0f; + if (temp_r29) { + temp_f31 = 1.5 * cosd(90.0f * temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[2], 0.7 * temp_f31, 0.7 * temp_f31, 0.7 * temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[3], 0.7 * temp_f31, 0.7 * temp_f31, 0.7 * temp_f31); + if (!SLSaveFlagGet()) { + espScaleSet(lbl_1_bss_152[1], temp_f31, temp_f31); + } + } + else { + sp28.x = 288; + sp28.y = 250; + sp28.z = 600; + Hu3D2Dto3D(&sp28, 1, &sp1C); + sp28.x = 60; + sp28.y = 90; + sp28.z = 600; + Hu3D2Dto3D(&sp28, 1, &sp10); + VECSubtract(&sp10, &sp1C, &sp28); + sp28.x *= sind(90.0f * temp_f31); + sp28.y *= 1.0 - cosd(90.0f * temp_f31); + sp28.z = 0.0f; + VECAdd(&sp28, &sp1C, &sp1C); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); + lbl_1_bss_108[temp_r31] *= cosd(90.0f * temp_f31); + lbl_1_bss_100[temp_r31] = 1.0 - temp_f31; + temp_f31 = 1.0 + (0.5 * cosd(90.0f * temp_f31)); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); + } + HuPrcVSleep(); + } + if (temp_r29 && SLSaveFlagGet()) { + goto repeat; + } + HuWinKill(lbl_1_bss_146); + return 1; } s32 fn_1_562C(void) { - s16 i; - s16 result; - s16 ret; - ret = 1; - for(i=0; i<2; i++) { - result = HuCardSlotCheck((s32)i); - if(result == -2) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[i]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100037); - HuWinMesWait(lbl_1_bss_148); - ret = 0; - } else if(result > 0 && result != 8192) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[i]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100039); - HuWinMesWait(lbl_1_bss_148); - ret = 0; - } else if(result == -128) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[i]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - ret = 0; - } - } - return ret; + s16 i; + s16 result; + s16 ret; + ret = 1; + for (i = 0; i < 2; i++) { + result = HuCardSlotCheck((s32)i); + if (result == -2) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[i]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + HuWinMesWait(lbl_1_bss_148); + ret = 0; + } + else if (result > 0 && result != 8192) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[i]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + HuWinMesWait(lbl_1_bss_148); + ret = 0; + } + else if (result == -128) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[i]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + ret = 0; + } + } + return ret; } void fn_1_57C8(s16 arg0) { - ModelData *model = &Hu3DData[arg0]; - HsfData *hsf = model->hsfData; - HsfMaterial *mat = hsf->material; - s16 i; - for(i=0; imaterialCnt; i++, mat++) { - mat->invAlpha = 0.0f; - mat->pass &= 0xF0; - } + ModelData *model = &Hu3DData[arg0]; + HsfData *hsf = model->hsfData; + HsfMaterial *mat = hsf->material; + s16 i; + for (i = 0; i < hsf->materialCnt; i++, mat++) { + mat->invAlpha = 0.0f; + mat->pass &= 0xF0; + } } typedef struct work_filesel { - s16 index; - s32 param; + s16 index; + s32 param; } WorkFilesel; void fn_1_5850(void) { - s16 index; - WorkFilesel *work; - s16 i; - s32 param; - Process *curr; - curr = HuPrcCurrentGet(); - work = curr->user_data; - index = work->index; - param = work->param; - Hu3DModelAttrSet(lbl_1_bss_19A[index+2], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[index+4], 1); - Hu3DMotionSet(lbl_1_bss_19A[index+4], lbl_1_bss_16A[6]); - Hu3DMotionSpeedSet(lbl_1_bss_19A[index+4], 2.0f); - if(param) { - Hu3DModelAttrReset(lbl_1_bss_19A[index+4], 0x40000004); - } else { - Hu3DModelAttrSet(lbl_1_bss_19A[index+4], 0x40000004); - Hu3DMotionTimeSet(lbl_1_bss_19A[index+4], Hu3DMotionMaxTimeGet(lbl_1_bss_19A[6])); - } - for(i=0; i<10; i++) { - float scale; - float time = i/10.0; - if(param) { - scale = 1.0+(0.3*sin(M_PI*(90.0f*time)/180.0)); - } else { - scale = 1.0+(0.3*cos(M_PI*(90.0f*time)/180.0)); - } - Hu3DModelScaleSet(lbl_1_bss_19A[index+2], scale, scale, scale); - Hu3DModelScaleSet(lbl_1_bss_19A[index+4], scale, scale, scale); - Hu3DModelScaleSet(lbl_1_bss_19A[index], scale, scale, scale); - HuPrcVSleep(); - } - if(!param) { - Hu3DModelAttrReset(lbl_1_bss_19A[index+2], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[index+4], 1); - } - HuMemDirectFree(work); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + s16 index; + WorkFilesel *work; + s16 i; + s32 param; + Process *curr; + curr = HuPrcCurrentGet(); + work = curr->user_data; + index = work->index; + param = work->param; + Hu3DModelAttrSet(lbl_1_bss_19A[index + 2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[index + 4], HU3D_ATTR_DISPOFF); + Hu3DMotionSet(lbl_1_bss_19A[index + 4], lbl_1_bss_16A[6]); + Hu3DMotionSpeedSet(lbl_1_bss_19A[index + 4], 2.0f); + if (param) { + Hu3DModelAttrReset(lbl_1_bss_19A[index + 4], HU3D_MOTATTR_REV); + } + else { + Hu3DModelAttrSet(lbl_1_bss_19A[index + 4], HU3D_MOTATTR_REV); + Hu3DMotionTimeSet(lbl_1_bss_19A[index + 4], Hu3DMotionMaxTimeGet(lbl_1_bss_19A[6])); + } + for (i = 0; i < 10; i++) { + float scale; + float time = i / 10.0; + if (param) { + scale = 1.0 + (0.3 * sind(90.0f * time)); + } + else { + scale = 1.0 + (0.3 * cosd(90.0f * time)); + } + Hu3DModelScaleSet(lbl_1_bss_19A[index + 2], scale, scale, scale); + Hu3DModelScaleSet(lbl_1_bss_19A[index + 4], scale, scale, scale); + Hu3DModelScaleSet(lbl_1_bss_19A[index], scale, scale, scale); + HuPrcVSleep(); + } + if (!param) { + Hu3DModelAttrReset(lbl_1_bss_19A[index + 2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[index + 4], HU3D_ATTR_DISPOFF); + } + HuMemDirectFree(work); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } void fn_1_5BAC(s16 arg0, s32 arg1) { - WorkFilesel *work; - Process *child; - Process *parent; - parent = HuPrcCurrentGet(); - child = HuPrcChildCreate(fn_1_5850, 50, 8192, 0, parent); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkFilesel), MEMORY_DEFAULT_NUM); - child->user_data = work; - work->index = arg0; - work->param = arg1; + WorkFilesel *work; + Process *child; + Process *parent; + parent = HuPrcCurrentGet(); + child = HuPrcChildCreate(fn_1_5850, 50, 8192, 0, parent); + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkFilesel), MEMORY_DEFAULT_NUM); + child->user_data = work; + work->index = arg0; + work->param = arg1; } s32 fn_1_5C38(void) { - s32 result; - lbl_1_bss_14C = 0; - result = HuCardSlotCheck(0); - if(result == 8192) { - Hu3DModelAttrReset(lbl_1_bss_19A[0], 1); - lbl_1_bss_14C |= 1; - } else { - Hu3DModelAttrSet(lbl_1_bss_19A[0], 1); - } - result = HuCardSlotCheck(1); - if(result == 8192) { - Hu3DModelAttrReset(lbl_1_bss_19A[1], 1); - lbl_1_bss_14C |= 2; - } else { - Hu3DModelAttrSet(lbl_1_bss_19A[1], 1); - } - return lbl_1_bss_14C; + s32 result; + lbl_1_bss_14C = 0; + result = HuCardSlotCheck(0); + if (result == 8192) { + Hu3DModelAttrReset(lbl_1_bss_19A[0], HU3D_ATTR_DISPOFF); + lbl_1_bss_14C |= 1; + } + else { + Hu3DModelAttrSet(lbl_1_bss_19A[0], HU3D_ATTR_DISPOFF); + } + result = HuCardSlotCheck(1); + if (result == 8192) { + Hu3DModelAttrReset(lbl_1_bss_19A[1], HU3D_ATTR_DISPOFF); + lbl_1_bss_14C |= 2; + } + else { + Hu3DModelAttrSet(lbl_1_bss_19A[1], HU3D_ATTR_DISPOFF); + } + return lbl_1_bss_14C; } void fn_1_5D30(void) { - ModelData *model; - Vec pos_2d; - Vec pos_3d; - Mtx scale; - espAttrReset(lbl_1_bss_152[0], 4); - espDrawNoSet(lbl_1_bss_152[0], 127); - espAttrReset(lbl_1_bss_152[1], 4); - Hu3DModelAttrReset(lbl_1_bss_19A[2], 1); - pos_2d.x = 188; - pos_2d.y = 250; - pos_2d.z = 600; - Hu3D2Dto3D(&pos_2d, 1, &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[2], &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[4], &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[0], &pos_3d); - MTXScale(scale, 0.5f, 0.5f, 0.5f); - model = &Hu3DData[lbl_1_bss_19A[2]]; - MTXCopy(scale, model->unk_F0); - model = &Hu3DData[lbl_1_bss_19A[4]]; - MTXCopy(scale, model->unk_F0); - model = &Hu3DData[lbl_1_bss_19A[0]]; - MTXCopy(scale, model->unk_F0); - Hu3DModelAttrReset(lbl_1_bss_19A[3], 1); - pos_2d.x = 388; - Hu3D2Dto3D(&pos_2d, 1, &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[3], &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[5], &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[1], &pos_3d); - model = &Hu3DData[lbl_1_bss_19A[3]]; - MTXCopy(scale, model->unk_F0); - model = &Hu3DData[lbl_1_bss_19A[5]]; - MTXCopy(scale, model->unk_F0); - model = &Hu3DData[lbl_1_bss_19A[1]]; - MTXCopy(scale, model->unk_F0); - Hu3DModelScaleSet(lbl_1_bss_19A[0], 0, 0, 0); - Hu3DModelScaleSet(lbl_1_bss_19A[1], 0, 0, 0); - Hu3DModelScaleSet(lbl_1_bss_19A[2], 0, 0, 0); - Hu3DModelScaleSet(lbl_1_bss_19A[3], 0, 0, 0); - Hu3DModelScaleSet(lbl_1_bss_19A[4], 0, 0, 0); - Hu3DModelScaleSet(lbl_1_bss_19A[5], 0, 0, 0); - fn_1_5C38(); + ModelData *model; + Vec pos_2d; + Vec pos_3d; + Mtx scale; + espAttrReset(lbl_1_bss_152[0], HUSPR_ATTR_DISPOFF); + espDrawNoSet(lbl_1_bss_152[0], 127); + espAttrReset(lbl_1_bss_152[1], HUSPR_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[2], HU3D_ATTR_DISPOFF); + pos_2d.x = 188; + pos_2d.y = 250; + pos_2d.z = 600; + Hu3D2Dto3D(&pos_2d, 1, &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[2], &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[4], &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[0], &pos_3d); + MTXScale(scale, 0.5f, 0.5f, 0.5f); + model = &Hu3DData[lbl_1_bss_19A[2]]; + MTXCopy(scale, model->unk_F0); + model = &Hu3DData[lbl_1_bss_19A[4]]; + MTXCopy(scale, model->unk_F0); + model = &Hu3DData[lbl_1_bss_19A[0]]; + MTXCopy(scale, model->unk_F0); + Hu3DModelAttrReset(lbl_1_bss_19A[3], HU3D_ATTR_DISPOFF); + pos_2d.x = 388; + Hu3D2Dto3D(&pos_2d, 1, &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[3], &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[5], &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[1], &pos_3d); + model = &Hu3DData[lbl_1_bss_19A[3]]; + MTXCopy(scale, model->unk_F0); + model = &Hu3DData[lbl_1_bss_19A[5]]; + MTXCopy(scale, model->unk_F0); + model = &Hu3DData[lbl_1_bss_19A[1]]; + MTXCopy(scale, model->unk_F0); + Hu3DModelScaleSet(lbl_1_bss_19A[0], 0, 0, 0); + Hu3DModelScaleSet(lbl_1_bss_19A[1], 0, 0, 0); + Hu3DModelScaleSet(lbl_1_bss_19A[2], 0, 0, 0); + Hu3DModelScaleSet(lbl_1_bss_19A[3], 0, 0, 0); + Hu3DModelScaleSet(lbl_1_bss_19A[4], 0, 0, 0); + Hu3DModelScaleSet(lbl_1_bss_19A[5], 0, 0, 0); + fn_1_5C38(); } void fn_1_7628(s16 boxno, s32 flag); @@ -745,1302 +765,1381 @@ void fn_1_BA80(s16 boxno); s32 fn_1_61B4(void) { - float temp_f31; - s16 temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s32 temp_r27; - s16 temp_r26; - float sp10[2]; - OSTime sp8; - HuWinMesMaxSizeGet(1, sp10, 0x10003D); - lbl_1_bss_146 = HuWinExCreateStyled(-10000, 316, sp10[0], sp10[1], -1, 0); - HuWinAttrSet(lbl_1_bss_146, 0x800); - HuWinBGTPLvlSet(lbl_1_bss_146, 0); - HuWinMesSpeedSet(lbl_1_bss_146, 0); - temp_r30 = -1; - for(temp_r29=lbl_1_bss_88=0; temp_r29<3; temp_r29++) { - lbl_1_bss_EE[temp_r29] = -1; - lbl_1_bss_E8[temp_r29] = -1; - lbl_1_bss_140[temp_r29] = 0; - temp_r27 = fn_1_76B4(SaveFileNameTbl[temp_r29], curSlotNo); - if(temp_r27 == 0) { - temp_r27 = fn_1_83B4(); - if(temp_r27 == 0) { - lbl_1_bss_140[temp_r29] = 1; - if(lbl_1_bss_88 == 0) { - temp_r30 = temp_r29; - } - lbl_1_bss_88++; - if(SLCheckSumCheck()) { - fn_1_A8C0(temp_r29); - } - } - fn_1_9E14(); - } - if(temp_r27 != 0 && temp_r27 != -4) { - HuWinKill(lbl_1_bss_146); - return 0; - } - } - fn_1_9E4C(); - if(temp_r30 == -1) { - temp_r30 = 0; - } - lbl_1_bss_120[0] = lbl_1_bss_120[1] = lbl_1_bss_120[2] = 1; - UnMountCnt = 0; - for(temp_r29=0; temp_r29<=20; temp_r29++) { - temp_f31 = sin(M_PI*(90.0f*(temp_r29/20.0f))/180.0); - for(temp_r28=0; temp_r28<3; temp_r28++) { - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28+8], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28+11], temp_f31, temp_f31, temp_f31); - } - HuPrcVSleep(); - } - HuWinMesSet(lbl_1_bss_148, 0x100007); - HuWinMesWait(lbl_1_bss_148); - fn_1_7628(temp_r30, 1); - if(lbl_1_bss_88 == 0) { - HuWinMesSet(lbl_1_bss_146, 0x100040); - } else { - if(lbl_1_bss_88 == 3) { - HuWinMesSet(lbl_1_bss_146, 0x10003F); - } else { - HuWinMesSet(lbl_1_bss_146, 0x10003D); - } - } - HuWinDispOn(lbl_1_bss_146); - fn_1_BA80(temp_r30); - if(UnMountCnt & (1 << curSlotNo)) { - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - } else { - UnMountCnt = 0; - while(1) { - HuPrcVSleep(); - if(UnMountCnt & (1 << curSlotNo)) { - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - break; - } - temp_r26 = 0; - if(HuPadDStkRep[0] & 0x1) { - temp_r26 = -1; - } else if(HuPadDStkRep[0] & 0x2) { - temp_r26 = 1; - } - if(temp_r26) { - fn_1_7628(temp_r30, 0); - temp_r30 += temp_r26; - if(temp_r30 < 0) { - temp_r30 = 2; - } else if(temp_r30 >= 3) { - temp_r30 = 0; - } - HuAudFXPlay(0); - fn_1_7628(temp_r30, 1); - fn_1_BA80(temp_r30); - HuPrcSleep(10); - } - if((HuPadBtnDown[0] & PAD_BUTTON_X) && lbl_1_bss_140[temp_r30]) { - UnMountCnt = 0; - temp_r31 = fn_1_76B4(SaveFileNameTbl[temp_r30], curSlotNo); - if(temp_r31 < 0) { - temp_r31 = 0; - break; - } - if(!lbl_1_bss_140[temp_r30]) { - continue; - } - HuWinDispOff(lbl_1_bss_146); - HuAudFXPlay(2); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[temp_r30]), 1); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesSet(lbl_1_bss_148, 0x100008); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r31 == 0) { - temp_r31 = fn_1_8540(temp_r30); - if(temp_r31 == 0) { - break; - } - } - if(UnMountCnt & (1 << curSlotNo)) { - continue; - } - HuWinMesSet(lbl_1_bss_148, 0x100007); - HuWinMesWait(lbl_1_bss_148); - if(lbl_1_bss_88 == 0) { - HuWinMesSet(lbl_1_bss_146, 0x100040); - } else if(lbl_1_bss_88 == 3) { - HuWinMesSet(lbl_1_bss_146, 0x10003F); - } else { - HuWinMesSet(lbl_1_bss_146, 0x10003D); - } - HuWinDispOn(lbl_1_bss_146); - fn_1_BA80(temp_r30); - continue; - } else if(HuPadBtnDown[0] & PAD_BUTTON_Y) { - UnMountCnt = 0; - if(HuCardSlotCheck(curSlotNo) < 0) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - break; - } - if(!lbl_1_bss_140[temp_r30]) { - continue; - } - for(temp_r29=0; temp_r29<3; temp_r29++) { - if(!lbl_1_bss_140[temp_r29]) { - break; - } - } - if(temp_r29 == 3) { - continue; - } - HuWinDispOff(lbl_1_bss_146); - HuAudFXPlay(2); - if(fn_1_8C30(temp_r30) == 0) { - temp_r31 = 0; - break; - } - if(UnMountCnt & (1 << curSlotNo)) { - continue; - } - HuWinMesSet(lbl_1_bss_148, 0x100007); - HuWinMesWait(lbl_1_bss_148); - if(lbl_1_bss_88 == 0) { - HuWinMesSet(lbl_1_bss_146, 0x100040); - } else if(lbl_1_bss_88 == 3) { - HuWinMesSet(lbl_1_bss_146, 0x10003F); - } else { - HuWinMesSet(lbl_1_bss_146, 0x10003D); - } - HuWinDispOn(lbl_1_bss_146); - fn_1_BA80(temp_r30); - continue; - } else if(HuPadBtnDown[0] & PAD_BUTTON_A) { - UnMountCnt = 0; - HuWinDispOff(lbl_1_bss_146); - HuCardMount(curSlotNo); - if(HuCardSlotCheck(curSlotNo) < 0) { - HuAudFXPlay(4); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - break; - } - if(SLSerialNoCheck() == 0) { - HuAudFXPlay(4); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - break; - } - HuAudFXPlay(2097); - SLCurBoxNoSet(temp_r30); - if(!lbl_1_bss_140[temp_r30]) { - HuWinMesSet(lbl_1_bss_148, 0x10000B); - HuWinMesWait(lbl_1_bss_148); - sp8 = OSGetTime(); - SLSaveDataMake(1, &sp8); - GWGameStatReset(); - GWGameStat.sound_mode = msmSysGetOutputMode(); - SLCommonSet(); - fn_1_B8CC(0x10003C); - HuPrcSleep(20); - if(UnMountCnt & (1 << curSlotNo)) { - fn_1_BA20(); - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - break; - } - temp_r27 = fn_1_7B74(temp_r30); - fn_1_BA20(); - if(temp_r27 != 0) { - temp_r31 = 1; - break; - } - HuWinMesSet(lbl_1_bss_148, 0x10004F); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r31 == 0) { - SLSaveFlagSet(0); - temp_r31 = 1; - break; - } - HuWinInsertMesSet(lbl_1_bss_148, 0x100052, 0); - HuWinMesSet(lbl_1_bss_148, 0x10004C); - HuWinMesWait(lbl_1_bss_148); - while(!(HuPadBtnDown[0] & PAD_BUTTON_A)) { - HuPrcVSleep(); - } - temp_r31 = 0; - break; - } else { - if(!fn_1_76B4(SaveFileNameTbl[temp_r30], curSlotNo)) { - if(!fn_1_83B4()) { - if(SLCheckSumCheck()) { - fn_1_9E14(); - SLLoadGameStat(); - temp_r31 = 1; - break; - } - HuWinHomeClear(lbl_1_bss_148); - HuPrcSleep(60); - if(UnMountCnt & (1 << curSlotNo)) { - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = 0; - break; - } - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[temp_r30]), 0); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesSet(lbl_1_bss_148, 0x10003A); - HuWinMesWait(lbl_1_bss_148); - temp_r31 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(!temp_r31) { - temp_r31 = fn_1_8540(temp_r30); - if(temp_r31 == 0) { - break; - } - if(HuCardMount(curSlotNo) < 0) { - temp_r31 = 0; - break; - } - } - } else { - temp_r31 = 0; - } - } else { - temp_r31 = 0; - } - if(temp_r31 == 0) { - break; - } - if(UnMountCnt & (1 << curSlotNo)) { - continue; - } - HuWinMesSet(lbl_1_bss_148, 0x100007); - HuWinMesWait(lbl_1_bss_148); - if(lbl_1_bss_88 == 0) { - HuWinMesSet(lbl_1_bss_146, 0x100040); - } else if(lbl_1_bss_88 == 3) { - HuWinMesSet(lbl_1_bss_146, 0x10003F); - } else { - HuWinMesSet(lbl_1_bss_146, 0x10003D); - } - HuWinDispOn(lbl_1_bss_146); - fn_1_BA80(temp_r30); - continue; - } - } else if(HuPadBtnDown[0] & PAD_BUTTON_B) { - HuAudFXPlay(3); - temp_r31 = 0; - break; - } - } - } - HuWinDispOff(lbl_1_bss_146); - for(temp_r29=0; temp_r29<=20; temp_r29++) { - temp_f31 = cos(M_PI*(90.0*(temp_r29/20.0))/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[curSlotNo], temp_f31, temp_f31, temp_f31); - for(temp_r28=0; temp_r28<3; temp_r28++) { - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28+8], temp_f31, temp_f31, temp_f31); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28+11], temp_f31, temp_f31, temp_f31); - } - if(temp_r31) { - espScaleSet(lbl_1_bss_152[1], temp_f31, temp_f31); - } - HuPrcVSleep(); - } - HuWinKill(lbl_1_bss_146); - return temp_r31; + float temp_f31; + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s32 temp_r27; + s16 temp_r26; + float sp10[2]; + OSTime sp8; + HuWinMesMaxSizeGet(1, sp10, MAKE_MESSID(0x10, 0x3D)); + lbl_1_bss_146 = HuWinExCreateStyled(-10000, 316, sp10[0], sp10[1], -1, 0); + HuWinAttrSet(lbl_1_bss_146, 0x800); + HuWinBGTPLvlSet(lbl_1_bss_146, 0); + HuWinMesSpeedSet(lbl_1_bss_146, 0); + temp_r30 = -1; + for (temp_r29 = lbl_1_bss_88 = 0; temp_r29 < 3; temp_r29++) { + lbl_1_bss_EE[temp_r29] = -1; + lbl_1_bss_E8[temp_r29] = -1; + lbl_1_bss_140[temp_r29] = 0; + temp_r27 = fn_1_76B4(SaveFileNameTbl[temp_r29], curSlotNo); + if (temp_r27 == 0) { + temp_r27 = fn_1_83B4(); + if (temp_r27 == 0) { + lbl_1_bss_140[temp_r29] = 1; + if (lbl_1_bss_88 == 0) { + temp_r30 = temp_r29; + } + lbl_1_bss_88++; + if (SLCheckSumCheck()) { + fn_1_A8C0(temp_r29); + } + } + fn_1_9E14(); + } + if (temp_r27 != 0 && temp_r27 != -4) { + HuWinKill(lbl_1_bss_146); + return 0; + } + } + fn_1_9E4C(); + if (temp_r30 == -1) { + temp_r30 = 0; + } + lbl_1_bss_120[0] = lbl_1_bss_120[1] = lbl_1_bss_120[2] = 1; + UnMountCnt = 0; + for (temp_r29 = 0; temp_r29 <= 20; temp_r29++) { + temp_f31 = sind(90.0f * (temp_r29 / 20.0f)); + for (temp_r28 = 0; temp_r28 < 3; temp_r28++) { + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 8], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 11], temp_f31, temp_f31, temp_f31); + } + HuPrcVSleep(); + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x07)); + HuWinMesWait(lbl_1_bss_148); + fn_1_7628(temp_r30, 1); + if (lbl_1_bss_88 == 0) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x40)); + } + else { + if (lbl_1_bss_88 == 3) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3F)); + } + else { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3D)); + } + } + HuWinDispOn(lbl_1_bss_146); + fn_1_BA80(temp_r30); + if (UnMountCnt & (1 << curSlotNo)) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + } + else { + UnMountCnt = 0; + while (1) { + HuPrcVSleep(); + if (UnMountCnt & (1 << curSlotNo)) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + break; + } + temp_r26 = 0; + if (HuPadDStkRep[0] & 0x1) { + temp_r26 = -1; + } + else if (HuPadDStkRep[0] & 0x2) { + temp_r26 = 1; + } + if (temp_r26) { + fn_1_7628(temp_r30, 0); + temp_r30 += temp_r26; + if (temp_r30 < 0) { + temp_r30 = 2; + } + else if (temp_r30 >= 3) { + temp_r30 = 0; + } + HuAudFXPlay(0); + fn_1_7628(temp_r30, 1); + fn_1_BA80(temp_r30); + HuPrcSleep(10); + } + if ((HuPadBtnDown[0] & PAD_BUTTON_X) && lbl_1_bss_140[temp_r30]) { + UnMountCnt = 0; + temp_r31 = fn_1_76B4(SaveFileNameTbl[temp_r30], curSlotNo); + if (temp_r31 < 0) { + temp_r31 = 0; + break; + } + if (!lbl_1_bss_140[temp_r30]) { + continue; + } + HuWinDispOff(lbl_1_bss_146); + HuAudFXPlay(2); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[temp_r30]), 1); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x08)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r31 == 0) { + temp_r31 = fn_1_8540(temp_r30); + if (temp_r31 == 0) { + break; + } + } + if (UnMountCnt & (1 << curSlotNo)) { + continue; + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x07)); + HuWinMesWait(lbl_1_bss_148); + if (lbl_1_bss_88 == 0) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x40)); + } + else if (lbl_1_bss_88 == 3) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3F)); + } + else { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3D)); + } + HuWinDispOn(lbl_1_bss_146); + fn_1_BA80(temp_r30); + continue; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_Y) { + UnMountCnt = 0; + if (HuCardSlotCheck(curSlotNo) < 0) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + break; + } + if (!lbl_1_bss_140[temp_r30]) { + continue; + } + for (temp_r29 = 0; temp_r29 < 3; temp_r29++) { + if (!lbl_1_bss_140[temp_r29]) { + break; + } + } + if (temp_r29 == 3) { + continue; + } + HuWinDispOff(lbl_1_bss_146); + HuAudFXPlay(2); + if (fn_1_8C30(temp_r30) == 0) { + temp_r31 = 0; + break; + } + if (UnMountCnt & (1 << curSlotNo)) { + continue; + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x07)); + HuWinMesWait(lbl_1_bss_148); + if (lbl_1_bss_88 == 0) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x40)); + } + else if (lbl_1_bss_88 == 3) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3F)); + } + else { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3D)); + } + HuWinDispOn(lbl_1_bss_146); + fn_1_BA80(temp_r30); + continue; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_A) { + UnMountCnt = 0; + HuWinDispOff(lbl_1_bss_146); + HuCardMount(curSlotNo); + if (HuCardSlotCheck(curSlotNo) < 0) { + HuAudFXPlay(4); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + break; + } + if (SLSerialNoCheck() == 0) { + HuAudFXPlay(4); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + break; + } + HuAudFXPlay(2097); + SLCurBoxNoSet(temp_r30); + if (!lbl_1_bss_140[temp_r30]) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x0B)); + HuWinMesWait(lbl_1_bss_148); + sp8 = OSGetTime(); + SLSaveDataMake(1, &sp8); + GWGameStatReset(); + #if VERSION_PAL + _ClearFlag(0x1000B); + #endif + GWGameStat.sound_mode = msmSysGetOutputMode(); + SLCommonSet(); + fn_1_B8CC(MAKE_MESSID(16, 0x3C)); + HuPrcSleep(20); + if (UnMountCnt & (1 << curSlotNo)) { + fn_1_BA20(); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + break; + } + temp_r27 = fn_1_7B74(temp_r30); + fn_1_BA20(); + if (temp_r27 != 0) { + temp_r31 = 1; + break; + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4F)); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r31 == 0) { + SLSaveFlagSet(0); + temp_r31 = 1; + break; + } + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x52), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4C)); + HuWinMesWait(lbl_1_bss_148); + while (!(HuPadBtnDown[0] & PAD_BUTTON_A)) { + HuPrcVSleep(); + } + temp_r31 = 0; + break; + } + else { + if (!fn_1_76B4(SaveFileNameTbl[temp_r30], curSlotNo)) { + if (!fn_1_83B4()) { + if (SLCheckSumCheck()) { + fn_1_9E14(); + SLLoadGameStat(); + #if VERSION_PAL + if(GwLanguageSave != -1) { + GWGameStat.language = GwLanguageSave; + } + GwLanguage = GWGameStat.language; + _ClearFlag(0x1000B); + #endif + temp_r31 = 1; + break; + } + HuWinHomeClear(lbl_1_bss_148); + HuPrcSleep(60); + if (UnMountCnt & (1 << curSlotNo)) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = 0; + break; + } + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[temp_r30]), 0); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x3A)); + HuWinMesWait(lbl_1_bss_148); + temp_r31 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (!temp_r31) { + temp_r31 = fn_1_8540(temp_r30); + if (temp_r31 == 0) { + break; + } + if (HuCardMount(curSlotNo) < 0) { + temp_r31 = 0; + break; + } + } + } + else { + temp_r31 = 0; + } + } + else { + temp_r31 = 0; + } + if (temp_r31 == 0) { + break; + } + if (UnMountCnt & (1 << curSlotNo)) { + continue; + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x07)); + HuWinMesWait(lbl_1_bss_148); + if (lbl_1_bss_88 == 0) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x40)); + } + else if (lbl_1_bss_88 == 3) { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3F)); + } + else { + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x3D)); + } + HuWinDispOn(lbl_1_bss_146); + fn_1_BA80(temp_r30); + continue; + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + temp_r31 = 0; + break; + } + } + } + HuWinDispOff(lbl_1_bss_146); + for (temp_r29 = 0; temp_r29 <= 20; temp_r29++) { + temp_f31 = cosd(90.0 * (temp_r29 / 20.0)); + Hu3DModelScaleSet(lbl_1_bss_19A[curSlotNo], temp_f31, temp_f31, temp_f31); + for (temp_r28 = 0; temp_r28 < 3; temp_r28++) { + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 8], temp_f31, temp_f31, temp_f31); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 11], temp_f31, temp_f31, temp_f31); + } + if (temp_r31) { + espScaleSet(lbl_1_bss_152[1], temp_f31, temp_f31); + } + HuPrcVSleep(); + } + HuWinKill(lbl_1_bss_146); + return temp_r31; } void fn_1_72DC(void) { - s16 index; - WorkFilesel *work; - s16 i; - s32 param; - Process *curr; - curr = HuPrcCurrentGet(); - work = curr->user_data; - index = work->index; - param = work->param; - if(param) { - Hu3DModelAttrReset(lbl_1_bss_19A[index+8], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[index+11], 1); - } else { - Hu3DModelAttrSet(lbl_1_bss_19A[index+8], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[index+11], 1); - } - for(i=0; i<=10; i++) { - float scale; - Vec pos_2d; - Vec pos_3d; - if(param) { - scale = sin(M_PI*(90.0f*(i/10.0f))/180.0); - } else { - scale = cos(M_PI*(90.0f*(i/10.0f))/180.0); - } - pos_2d.x = 158.0f+(index*130); - pos_2d.y = 230; - pos_2d.z = 800; - Hu3D2Dto3D(&pos_2d, 1, &pos_3d); - pos_3d.z = 800+(100.0f*scale); - Hu3DModelPosSetV(lbl_1_bss_19A[index+8], &pos_3d); - Hu3DModelPosSetV(lbl_1_bss_19A[index+11], &pos_3d); - Hu3DModelScaleSet(lbl_1_bss_19A[index+8], 1, 1, 1); - Hu3DModelScaleSet(lbl_1_bss_19A[index+11], 1, 1, 1); - HuPrcVSleep(); - } - (void)curr; - HuMemDirectFree(work); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + s16 index; + WorkFilesel *work; + s16 i; + s32 param; + Process *curr; + curr = HuPrcCurrentGet(); + work = curr->user_data; + index = work->index; + param = work->param; + if (param) { + Hu3DModelAttrReset(lbl_1_bss_19A[index + 8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[index + 11], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(lbl_1_bss_19A[index + 8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[index + 11], HU3D_ATTR_DISPOFF); + } + for (i = 0; i <= 10; i++) { + float scale; + Vec pos_2d; + Vec pos_3d; + if (param) { + scale = sind(90.0f * (i / 10.0f)); + } + else { + scale = cosd(90.0f * (i / 10.0f)); + } + pos_2d.x = 158.0f + (index * 130); + pos_2d.y = 230; + pos_2d.z = 800; + Hu3D2Dto3D(&pos_2d, 1, &pos_3d); + pos_3d.z = 800 + (100.0f * scale); + Hu3DModelPosSetV(lbl_1_bss_19A[index + 8], &pos_3d); + Hu3DModelPosSetV(lbl_1_bss_19A[index + 11], &pos_3d); + Hu3DModelScaleSet(lbl_1_bss_19A[index + 8], 1, 1, 1); + Hu3DModelScaleSet(lbl_1_bss_19A[index + 11], 1, 1, 1); + HuPrcVSleep(); + } + (void)curr; + HuMemDirectFree(work); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } void fn_1_7628(s16 boxno, s32 flag) { - WorkFilesel *work; - Process *parent; - Process *child; - - parent = HuPrcCurrentGet(); - child = HuPrcChildCreate(fn_1_72DC, 50, 8192, 0, parent); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkFilesel), MEMORY_DEFAULT_NUM); - child->user_data = work; - work->index = boxno; - work->param = flag; + WorkFilesel *work; + Process *parent; + Process *child; + + parent = HuPrcCurrentGet(); + child = HuPrcChildCreate(fn_1_72DC, 50, 8192, 0, parent); + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkFilesel), MEMORY_DEFAULT_NUM); + child->user_data = work; + work->index = boxno; + work->param = flag; } s32 fn_1_76B4(char *name, s16 slotno) { - s32 result; - s16 choice; - s16 filecnt; - filecnt = 0; - while(1) { - filecnt++; - result = HuCardMount(slotno); - if(result == 0) { - result = HuCardOpen(slotno, name, &curFileInfo); - if(result == 0 || result == -4) { - if(SLSerialNoCheck()) { - return result; - } - } - } - if(result == -2) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100037); - HuWinMesWait(lbl_1_bss_148); - return result; - } - if(result == -128 || filecnt > 3) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - return result; - } else if(result == -3) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - return result; - } else if(result == -4 || !SLSerialNoCheck()) { - OSReport("Card Open Error:No File\n"); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - break; - } else if(result == -6) { - UnMountCnt = 0; - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesSet(lbl_1_bss_148, 0x100004); - HuWinMesWait(lbl_1_bss_148); - choice = HuWinChoiceGet(lbl_1_bss_148, 1); - if(choice == 0) { - HuWinMesSet(lbl_1_bss_148, 0x10004E); - HuWinMesWait(lbl_1_bss_148); - choice = HuWinChoiceGet(lbl_1_bss_148, 1); - if(choice == 0) { - fn_1_B8CC(0x100038); - HuWinMesSet(lbl_1_bss_148, 0x10000B); - HuWinMesWait(lbl_1_bss_148); - HuPrcSleep(60); - if(UnMountCnt & (1 << curSlotNo)) { - fn_1_BA20(); - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - } else { - _SetFlag(0x30000); - result = HuCardFormat(slotno); - _ClearFlag(0x30000); - if(result == 0) { - SLSerialNoGet(); - } - fn_1_BA20(); - if(result == -128) { - HuWinMesSet(lbl_1_bss_148, 0x100036); - HuWinMesWait(lbl_1_bss_148); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - return result; - } else if(result == -3) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - return result; - } - } - } else { - return result; - } - continue; - } - return result; - } - break; - } - return result; + s32 result; + s16 choice; + s16 filecnt; + filecnt = 0; + while (1) { + filecnt++; + result = HuCardMount(slotno); + if (result == 0) { + result = HuCardOpen(slotno, name, &curFileInfo); + if (result == 0 || result == -4) { + if (SLSerialNoCheck()) { + return result; + } + } + } + if (result == -2) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); + #if VERSION_PAL + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + #else + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + #endif + HuWinMesWait(lbl_1_bss_148); + return result; + } + if (result == -128 || filecnt > 3) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + return result; + } + else if (result == -3) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + return result; + } + else if (result == -4 || !SLSerialNoCheck()) { + OSReport("Card Open Error:No File\n"); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + break; + } + else if (result == -6) { + UnMountCnt = 0; + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[slotno]), 0); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x04)); + HuWinMesWait(lbl_1_bss_148); + choice = HuWinChoiceGet(lbl_1_bss_148, 1); + if (choice == 0) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4E)); + HuWinMesWait(lbl_1_bss_148); + choice = HuWinChoiceGet(lbl_1_bss_148, 1); + if (choice == 0) { + fn_1_B8CC(MAKE_MESSID(16, 0x38)); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x0B)); + HuWinMesWait(lbl_1_bss_148); + HuPrcSleep(60); + if (UnMountCnt & (1 << curSlotNo)) { + fn_1_BA20(); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + } + else { + _SetFlag(0x30000); + result = HuCardFormat(slotno); + _ClearFlag(0x30000); + if (result == 0) { + SLSerialNoGet(); + } + fn_1_BA20(); + if (result == -128) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x36)); + HuWinMesWait(lbl_1_bss_148); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + return result; + } + else if (result == -3) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + return result; + } + } + } + else { + return result; + } + continue; + } + return result; + } + break; + } + return result; } s32 fn_1_7B74(s16 boxno) { - s32 result; - s32 i; - result = HuCardMount(curSlotNo); - if(result == 0 && !SLSerialNoCheck()) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - } else { - result = HuCardSectorSizeGet(curSlotNo); - if(result == -3) { - fn_1_BA20(); - OSReport("SectorSize Check Error:No Card %d\n", curSlotNo); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - } else { - if(result != 8192) { - fn_1_BA20(); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100039); - HuWinMesWait(lbl_1_bss_148); - } else { - u32 byteNotUsed; - u32 filesNotUsed; - result = HuCardFreeSpaceGet(curSlotNo, &byteNotUsed, &filesNotUsed); - if(filesNotUsed == 0 && byteNotUsed < SAVE_BUF_SIZE) { - fn_1_BA20(); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x10004A); - HuWinMesWait(lbl_1_bss_148); - } else if(filesNotUsed == 0) { - fn_1_BA20(); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x10004A); - HuWinMesWait(lbl_1_bss_148); - } else if(byteNotUsed < SAVE_BUF_SIZE) { - fn_1_BA20(); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x10004A); - HuWinMesWait(lbl_1_bss_148); - } else { - HuWinMesSet(lbl_1_bss_148, 0x10000B); - HuWinMesWait(lbl_1_bss_148); - for(i=0; i<=40; i++) { - float time = i/40.0; - Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno+8], 0.6+(0.4*time)); - Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno+11], 0.3+(0.7*time)); - HuPrcVSleep(); - } - _SetFlag(0x30000); - result = HuCardCreate(curSlotNo, SaveFileNameTbl[boxno], SAVE_BUF_SIZE, &curFileInfo); - if(result == -3) { - _ClearFlag(0x30000); - fn_1_BA20(); - OSReport("File Create Error:No Card\n"); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - } else if(result == -2) { - _ClearFlag(0x30000); - fn_1_BA20(); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100037); - HuWinMesWait(lbl_1_bss_148); - } else if(result < 0) { - _ClearFlag(0x30000); - fn_1_BA20(); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - } else { - result = fn_1_812C(); - _ClearFlag(0x30000); - if(result != 0) { - return 1; - } - } - } - } - } - } - return 0; + s32 result; + s32 i; + result = HuCardMount(curSlotNo); + if (result == 0 && !SLSerialNoCheck()) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + } + else { + result = HuCardSectorSizeGet(curSlotNo); + if (result == -3) { + fn_1_BA20(); + OSReport("SectorSize Check Error:No Card %d\n", curSlotNo); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + } + else { + if (result != 8192) { + fn_1_BA20(); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x39)); + HuWinMesWait(lbl_1_bss_148); + } + else { + u32 byteNotUsed; + u32 filesNotUsed; + result = HuCardFreeSpaceGet(curSlotNo, &byteNotUsed, &filesNotUsed); + if (filesNotUsed == 0 && byteNotUsed < SAVE_BUF_SIZE) { + fn_1_BA20(); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4A)); + HuWinMesWait(lbl_1_bss_148); + } + else if (filesNotUsed == 0) { + fn_1_BA20(); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4A)); + HuWinMesWait(lbl_1_bss_148); + } + else if (byteNotUsed < SAVE_BUF_SIZE) { + fn_1_BA20(); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4A)); + HuWinMesWait(lbl_1_bss_148); + } + else { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x0B)); + HuWinMesWait(lbl_1_bss_148); + for (i = 0; i <= 40; i++) { + float time = i / 40.0; + Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 8], 0.6 + (0.4 * time)); + Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 11], 0.3 + (0.7 * time)); + HuPrcVSleep(); + } + _SetFlag(0x30000); + result = HuCardCreate(curSlotNo, SaveFileNameTbl[boxno], SAVE_BUF_SIZE, &curFileInfo); + if (result == -3) { + _ClearFlag(0x30000); + fn_1_BA20(); + OSReport("File Create Error:No Card\n"); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + } + else if (result == -2) { + _ClearFlag(0x30000); + fn_1_BA20(); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + HuWinMesWait(lbl_1_bss_148); + } + else if (result < 0) { + _ClearFlag(0x30000); + fn_1_BA20(); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + } + else { + result = fn_1_812C(); + _ClearFlag(0x30000); + if (result != 0) { + return 1; + } + } + } + } + } + } + return 0; } s32 fn_1_812C(void) { - s32 result; - SLCheckSumSet(); - _SetFlag(0x30000); - result = HuCardWrite(&curFileInfo, &saveBuf.buf[0], SAVE_BUF_SIZE, 0); - _ClearFlag(0x30000); - if(result == -3) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result == -2) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100037); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result < 0) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - result = SLStatSet(0); - if(result == -3) { - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result == -2) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100037); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result < 0) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - return 1; + s32 result; + SLCheckSumSet(); + _SetFlag(0x30000); + result = HuCardWrite(&curFileInfo, &saveBuf.buf[0], SAVE_BUF_SIZE, 0); + _ClearFlag(0x30000); + if (result == -3) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result == -2) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result < 0) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + result = SLStatSet(0); + if (result == -3) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result == -2) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x37)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result < 0) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + return 1; } s32 fn_1_83B4(void) { - s32 result; - result = HuCardRead(&curFileInfo, &saveBuf.buf[0], SAVE_BUF_SIZE, 0); - if(result == -3) { - OSReport("Card Read Error:No Card\n"); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - } else if(result == -4 || !SLSerialNoCheck()) { - OSReport("Card Read Error:No File\n", result); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - } else if(result < 0) { - OSReport("Card Read Error:Fatal Error %d\n", result); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - } - return result; + s32 result; + result = HuCardRead(&curFileInfo, &saveBuf.buf[0], SAVE_BUF_SIZE, 0); + if (result == -3) { + OSReport("Card Read Error:No Card\n"); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + } + else if (result == -4 || !SLSerialNoCheck()) { + OSReport("Card Read Error:No File\n", result); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + } + else if (result < 0) { + OSReport("Card Read Error:Fatal Error %d\n", result); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + } + return result; } s32 fn_1_8540(s16 boxno) { - float scale; - s32 result; - s32 time; - AnimData *sprite; - result = HuCardMount(curSlotNo); - if(result == -3) { - OSReport("Card Delete Error:No Card\n"); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result == -4 || !SLSerialNoCheck()) { - OSReport("Card Delete Error:No File\n", result); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result < 0) { - OSReport("Card Delete Error:Fatal Error %d\n", result); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - - fn_1_B8CC(0x10003B); - HuWinMesSet(lbl_1_bss_148, 0x10000B); - HuWinMesWait(lbl_1_bss_148); - HuPrcSleep(60); - if(UnMountCnt & (1 << curSlotNo)) { - fn_1_BA20(); - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - return 0; - } else { - _SetFlag(0x30000); - result = HuCardDelete(curSlotNo, SaveFileNameTbl[boxno]); - _ClearFlag(0x30000); - fn_1_BA20(); - if(result == -3) { - OSReport("Card Delete Error:No Card\n"); - HuWinMesSet(lbl_1_bss_148, 0x100002); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result == -4 || !SLSerialNoCheck()) { - OSReport("Card Delete Error:No File\n", result); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - if(result < 0) { - OSReport("Card Delete Error:Fatal Error %d\n", result); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100053); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - for(time=0; time<=10; time++) { - scale = cos(M_PI*(90.0*(time/10.0))/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[boxno+8], scale, scale, scale); - HuPrcVSleep(); - } - Hu3DAnimKill(lbl_1_bss_13A[boxno]); - Hu3DAnimKill(lbl_1_bss_134[boxno]); - sprite = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[8], MEMORY_DEFAULT_NUM)); - lbl_1_bss_13A[boxno] = Hu3DAnimCreate(sprite, lbl_1_bss_19A[boxno+8], "star"); - sprite = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[17], MEMORY_DEFAULT_NUM)); - lbl_1_bss_134[boxno] = Hu3DAnimCreate(sprite, lbl_1_bss_19A[boxno+11], "star"); - lbl_1_bss_EE[boxno] = -1; - Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno+8], 0.6f); - Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno+11], 0.3f); - for(time=0; time<=20; time++) { - scale = sin(M_PI*(90.0*(time/20.0))/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[boxno+8], scale, scale, scale); - HuPrcVSleep(); - } - lbl_1_bss_140[boxno] = 0; - lbl_1_bss_88--; - return 1; - } + float scale; + s32 result; + s32 time; + AnimData *sprite; + result = HuCardMount(curSlotNo); + if (result == -3) { + OSReport("Card Delete Error:No Card\n"); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result == -4 || !SLSerialNoCheck()) { + OSReport("Card Delete Error:No File\n", result); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result < 0) { + OSReport("Card Delete Error:Fatal Error %d\n", result); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + + fn_1_B8CC(MAKE_MESSID(16, 0x3B)); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x0B)); + HuWinMesWait(lbl_1_bss_148); + HuPrcSleep(60); + if (UnMountCnt & (1 << curSlotNo)) { + fn_1_BA20(); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + else { + _SetFlag(0x30000); + result = HuCardDelete(curSlotNo, SaveFileNameTbl[boxno]); + _ClearFlag(0x30000); + fn_1_BA20(); + if (result == -3) { + OSReport("Card Delete Error:No Card\n"); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x02)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result == -4 || !SLSerialNoCheck()) { + OSReport("Card Delete Error:No File\n", result); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + if (result < 0) { + OSReport("Card Delete Error:Fatal Error %d\n", result); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x53)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + for (time = 0; time <= 10; time++) { + scale = cosd(90.0 * (time / 10.0)); + Hu3DModelScaleSet(lbl_1_bss_19A[boxno + 8], scale, scale, scale); + HuPrcVSleep(); + } + Hu3DAnimKill(lbl_1_bss_13A[boxno]); + Hu3DAnimKill(lbl_1_bss_134[boxno]); + sprite = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[8], MEMORY_DEFAULT_NUM)); + lbl_1_bss_13A[boxno] = Hu3DAnimCreate(sprite, lbl_1_bss_19A[boxno + 8], "star"); + sprite = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[17], MEMORY_DEFAULT_NUM)); + lbl_1_bss_134[boxno] = Hu3DAnimCreate(sprite, lbl_1_bss_19A[boxno + 11], "star"); + lbl_1_bss_EE[boxno] = -1; + Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 8], 0.6f); + Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 11], 0.3f); + for (time = 0; time <= 20; time++) { + scale = sind(90.0 * (time / 20.0)); + Hu3DModelScaleSet(lbl_1_bss_19A[boxno + 8], scale, scale, scale); + HuPrcVSleep(); + } + lbl_1_bss_140[boxno] = 0; + lbl_1_bss_88--; + return 1; + } } s32 fn_1_8C30(s16 boxno) { - float temp_f31; - s16 temp_r31; - s16 temp_r30; - s32 temp_r29; - s16 temp_r26; - s16 temp_r25; - AnimData *temp_r19; - Vec sp60; - Vec sp54; - Vec sp48; - Vec sp3C; - s32 sp38; - s32 sp34; - Process *sp30; - ModelData *sp2C; - sp30 = HuPrcCurrentGet(); - OSReport("Card Copy Seq.:Open\n"); - temp_r29 = fn_1_76B4(SaveFileNameTbl[boxno], curSlotNo); - if(temp_r29 < 0 || !SLSerialNoCheck()) { - return 0; - } - OSReport("Card Copy Seq.:Read\n"); - temp_r29 = fn_1_83B4(); - if(temp_r29 != 0) { - return 0; - } - OSReport("Card Copy Seq.:CheckSum Check\n"); - if(!SLCheckSumCheck()) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[boxno]), 0); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesSet(lbl_1_bss_148, 0x10003A); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r29 != 0) { - return 1; - } else { - temp_r29 = fn_1_8540(boxno); - return temp_r29; - } - } - if(!SLSerialNoCheck()) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x100045); - HuWinMesWait(lbl_1_bss_148); - return 0; - } - temp_r29 = HuCardFreeSpaceGet(curSlotNo, (u32 *)&sp34, (u32 *)&sp38); - if(sp38 == 0 && sp34 < SAVE_BUF_SIZE) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x10004A); - HuWinMesWait(lbl_1_bss_148); - return 1; - } else if(sp38 == 0) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x10004A); - HuWinMesWait(lbl_1_bss_148); - return 1; - } else if(sp34 < SAVE_BUF_SIZE) { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_bss_148, 0x10004A); - HuWinMesWait(lbl_1_bss_148); - return 1; - } - for(temp_r30=0; temp_r30<3; temp_r30++) { - if(!lbl_1_bss_140[temp_r30]) { - break; - } - } - if(temp_r30 == 3) { - return 1; - } - temp_r31 = temp_r30; - HuWinMesSet(lbl_1_bss_148, 0x100009); - HuWinMesWait(lbl_1_bss_148); - HuWinMesSet(lbl_1_bss_146, 0x100035); - HuWinDispOn(lbl_1_bss_146); - lbl_1_bss_90 = boxno; - Hu3DModelAttrReset(lbl_1_bss_19A[23], 1); - sp2C = &Hu3DData[lbl_1_bss_19A[boxno+8]]; - Hu3DModelPosSetV(lbl_1_bss_19A[23], &sp2C->pos); - for(temp_r30=1; temp_r30<=10; temp_r30++) { - temp_f31 = 0.7+(0.3*(temp_r30/10.0)); - Hu3DModelScaleSet(lbl_1_bss_19A[23], temp_f31, temp_f31, temp_f31); - HuPrcVSleep(); - } - fn_1_7628(temp_r31, 1); - while(1) { - HuPrcVSleep(); - if(UnMountCnt & (1 << curSlotNo)) { - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - break; - } else { - temp_r26 = 0; - if(HuPadDStkRep[0] & 0x1) { - temp_r26 = -1; - } else if(HuPadDStkRep[0] & 0x2) { - temp_r26 = 1; - } - (void)temp_r26; - if(temp_r26) { - HuAudFXPlay(0); - fn_1_7628(temp_r31, 0); - while(1) { - temp_r31 += temp_r26; - if(temp_r31 < 0) { - temp_r31 = 2; - } else if(temp_r31 >= 3) { - temp_r31 = 0; - } - if(lbl_1_bss_140[temp_r31] == 0) { - break; - } - } - fn_1_7628(temp_r31, 1); - HuPrcSleep(10); - } - if(HuPadBtnDown[0] & PAD_BUTTON_A) { - HuAudFXPlay(2096); - } else if(!(HuPadBtnDown[0] & PAD_BUTTON_B)) { - continue; - } else { - HuAudFXPlay(3); - Hu3DModelAttrSet(lbl_1_bss_19A[23], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[boxno+8], 1); - fn_1_7628(temp_r31, 0); - HuWinDispOff(lbl_1_bss_146); - return 1; - } - HuWinDispOff(lbl_1_bss_146); - temp_r29 = fn_1_76B4(SaveFileNameTbl[boxno], curSlotNo); - if(temp_r29 >= 0 && SLSerialNoCheck()) { - fn_1_B8CC(0x10000A); - HuWinMesSet(lbl_1_bss_148, 0x10000B); - HuWinMesWait(lbl_1_bss_148); - Hu3DModelAttrReset(lbl_1_bss_19A[boxno+8], 1); - OSReport("CheckSum Check\n"); - if(!SLCheckSumCheck()) { - HuPrcSleep(60); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[boxno]), 0); - HuWinAttrSet(lbl_1_bss_148, 0x10); - HuWinMesSet(lbl_1_bss_148, 0x10003A); - HuWinMesWait(lbl_1_bss_148); - temp_r29 = HuWinChoiceGet(lbl_1_bss_148, 1); - if(temp_r29 == 0) { - temp_r29 = fn_1_8540(boxno); - } - } else { - fn_1_9E14(); - for(temp_r30=0; temp_r30<=10; temp_r30++) { - temp_f31 = cos(M_PI*(90.0*(temp_r30/10.0))/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31+8], temp_f31, temp_f31, temp_f31); - HuPrcVSleep(); - } - Hu3DModelAttrSet(lbl_1_bss_19A[23], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[boxno+8], 1); - if(UnMountCnt & (1 << curSlotNo)) { - fn_1_BA20(); - HuWinMesSet(lbl_1_bss_148, 0x100050); - HuWinMesWait(lbl_1_bss_148); - } else { - OSReport("File Create\n"); - SLCurBoxNoSet(temp_r31); - SLLoadGameStat(); - SLSaveDataMake(0, &GWGameStat.create_time); - if(fn_1_7B74(temp_r31)) { - fn_1_9E14(); - fn_1_A8C0(temp_r31); - Hu3DAnimKill(lbl_1_bss_13A[temp_r31]); - Hu3DAnimKill(lbl_1_bss_134[temp_r31]); - temp_r25 = lbl_1_bss_E8[temp_r31]; - if(temp_r25 < 0) { - temp_r25 = 8; - } - (void)temp_r25; - temp_r19 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r25], MEMORY_DEFAULT_NUM)); - lbl_1_bss_13A[temp_r31] = Hu3DAnimCreate(temp_r19, lbl_1_bss_19A[temp_r31+8], "star"); - temp_r19 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r25], MEMORY_DEFAULT_NUM)); - lbl_1_bss_134[temp_r31] = Hu3DAnimCreate(temp_r19, lbl_1_bss_19A[temp_r31+11], "star"); - Hu3DModelAttrReset(lbl_1_bss_19A[temp_r31+11], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[temp_r31+8], 1); - sp60.x = 158.0f+(boxno*130); - sp60.y = 230; - sp60.z = 800; - Hu3D2Dto3D(&sp60, 1, &sp54); - sp54.z = 900; - sp60.x = 158.0f+(temp_r31*130); - Hu3D2Dto3D(&sp60, 1, &sp48); - sp48.z = 800; - VECSubtract(&sp48, &sp54, &sp3C); - Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31+8], 1.0f); - Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31+11], 1.0f); - lbl_1_bss_120[temp_r31] = 0; - for(temp_r30=1; temp_r30<=30; temp_r30++) { - temp_f31 = temp_r30/30.0; - sp60.x = sp3C.x*temp_f31; - sp60.y = sp3C.y*temp_f31; - sp60.z = (sp3C.z*temp_f31)+(-300*sin(M_PI*(180.0f*temp_f31)/180.0)); - VECAdd(&sp60, &sp54, &sp60); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31+11], &sp60); - HuPrcVSleep(); - } - lbl_1_bss_120[temp_r31] = 1; - fn_1_BA20(); - lbl_1_bss_140[temp_r31] = 1; - lbl_1_bss_88++; - return 1; - } - } - } - - } - break; - } - } - fn_1_BA20(); - Hu3DModelAttrSet(lbl_1_bss_19A[23], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[boxno+8], 1); - for(temp_r30=0; temp_r30<=10; temp_r30++) { - temp_f31 = sin(M_PI*(90.0*(temp_r30/10.0))/180.0); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31+8], temp_f31, temp_f31, temp_f31); - HuPrcVSleep(); - } - fn_1_7628(temp_r31, 0); - return 0; + float temp_f31; + s16 temp_r31; + s16 temp_r30; + s32 temp_r29; + s16 temp_r26; + s16 temp_r25; + AnimData *temp_r19; + Vec sp60; + Vec sp54; + Vec sp48; + Vec sp3C; + s32 sp38; + s32 sp34; + Process *sp30; + ModelData *sp2C; + sp30 = HuPrcCurrentGet(); + OSReport("Card Copy Seq.:Open\n"); + temp_r29 = fn_1_76B4(SaveFileNameTbl[boxno], curSlotNo); + if (temp_r29 < 0 || !SLSerialNoCheck()) { + return 0; + } + OSReport("Card Copy Seq.:Read\n"); + temp_r29 = fn_1_83B4(); + if (temp_r29 != 0) { + return 0; + } + OSReport("Card Copy Seq.:CheckSum Check\n"); + if (!SLCheckSumCheck()) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[boxno]), 0); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x3A)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r29 != 0) { + return 1; + } + else { + temp_r29 = fn_1_8540(boxno); + return temp_r29; + } + } + if (!SLSerialNoCheck()) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x45)); + HuWinMesWait(lbl_1_bss_148); + return 0; + } + temp_r29 = HuCardFreeSpaceGet(curSlotNo, (u32 *)&sp34, (u32 *)&sp38); + if (sp38 == 0 && sp34 < SAVE_BUF_SIZE) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4A)); + HuWinMesWait(lbl_1_bss_148); + return 1; + } + else if (sp38 == 0) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4A)); + HuWinMesWait(lbl_1_bss_148); + return 1; + } + else if (sp34 < SAVE_BUF_SIZE) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x4A)); + HuWinMesWait(lbl_1_bss_148); + return 1; + } + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + if (!lbl_1_bss_140[temp_r30]) { + break; + } + } + if (temp_r30 == 3) { + return 1; + } + temp_r31 = temp_r30; + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x09)); + HuWinMesWait(lbl_1_bss_148); + HuWinMesSet(lbl_1_bss_146, MAKE_MESSID(16, 0x35)); + HuWinDispOn(lbl_1_bss_146); + lbl_1_bss_90 = boxno; + Hu3DModelAttrReset(lbl_1_bss_19A[23], HU3D_ATTR_DISPOFF); + sp2C = &Hu3DData[lbl_1_bss_19A[boxno + 8]]; + Hu3DModelPosSetV(lbl_1_bss_19A[23], &sp2C->pos); + for (temp_r30 = 1; temp_r30 <= 10; temp_r30++) { + temp_f31 = 0.7 + (0.3 * (temp_r30 / 10.0)); + Hu3DModelScaleSet(lbl_1_bss_19A[23], temp_f31, temp_f31, temp_f31); + HuPrcVSleep(); + } + fn_1_7628(temp_r31, 1); + while (1) { + HuPrcVSleep(); + if (UnMountCnt & (1 << curSlotNo)) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + break; + } + else { + temp_r26 = 0; + if (HuPadDStkRep[0] & 0x1) { + temp_r26 = -1; + } + else if (HuPadDStkRep[0] & 0x2) { + temp_r26 = 1; + } + (void)temp_r26; + if (temp_r26) { + HuAudFXPlay(0); + fn_1_7628(temp_r31, 0); + while (1) { + temp_r31 += temp_r26; + if (temp_r31 < 0) { + temp_r31 = 2; + } + else if (temp_r31 >= 3) { + temp_r31 = 0; + } + if (lbl_1_bss_140[temp_r31] == 0) { + break; + } + } + fn_1_7628(temp_r31, 1); + HuPrcSleep(10); + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2096); + } + else if (!(HuPadBtnDown[0] & PAD_BUTTON_B)) { + continue; + } + else { + HuAudFXPlay(3); + Hu3DModelAttrSet(lbl_1_bss_19A[23], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[boxno + 8], HU3D_ATTR_DISPOFF); + fn_1_7628(temp_r31, 0); + HuWinDispOff(lbl_1_bss_146); + return 1; + } + HuWinDispOff(lbl_1_bss_146); + temp_r29 = fn_1_76B4(SaveFileNameTbl[boxno], curSlotNo); + if (temp_r29 >= 0 && SLSerialNoCheck()) { + fn_1_B8CC(MAKE_MESSID(16, 0x0A)); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x0B)); + HuWinMesWait(lbl_1_bss_148); + Hu3DModelAttrReset(lbl_1_bss_19A[boxno + 8], HU3D_ATTR_DISPOFF); + OSReport("CheckSum Check\n"); + if (!SLCheckSumCheck()) { + HuPrcSleep(60); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(lbl_1_data_288[boxno]), 0); + HuWinAttrSet(lbl_1_bss_148, 0x10); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x3A)); + HuWinMesWait(lbl_1_bss_148); + temp_r29 = HuWinChoiceGet(lbl_1_bss_148, 1); + if (temp_r29 == 0) { + temp_r29 = fn_1_8540(boxno); + } + } + else { + fn_1_9E14(); + for (temp_r30 = 0; temp_r30 <= 10; temp_r30++) { + temp_f31 = cosd(90.0 * (temp_r30 / 10.0)); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], temp_f31, temp_f31, temp_f31); + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_19A[23], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[boxno + 8], HU3D_ATTR_DISPOFF); + if (UnMountCnt & (1 << curSlotNo)) { + fn_1_BA20(); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x50)); + HuWinMesWait(lbl_1_bss_148); + } + else { + OSReport("File Create\n"); + SLCurBoxNoSet(temp_r31); + SLLoadGameStat(); + SLSaveDataMake(0, &GWGameStat.create_time); + if (fn_1_7B74(temp_r31)) { + fn_1_9E14(); + fn_1_A8C0(temp_r31); + Hu3DAnimKill(lbl_1_bss_13A[temp_r31]); + Hu3DAnimKill(lbl_1_bss_134[temp_r31]); + temp_r25 = lbl_1_bss_E8[temp_r31]; + if (temp_r25 < 0) { + temp_r25 = 8; + } + (void)temp_r25; + temp_r19 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r25], MEMORY_DEFAULT_NUM)); + lbl_1_bss_13A[temp_r31] = Hu3DAnimCreate(temp_r19, lbl_1_bss_19A[temp_r31 + 8], "star"); + temp_r19 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r25], MEMORY_DEFAULT_NUM)); + lbl_1_bss_134[temp_r31] = Hu3DAnimCreate(temp_r19, lbl_1_bss_19A[temp_r31 + 11], "star"); + Hu3DModelAttrReset(lbl_1_bss_19A[temp_r31 + 11], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[temp_r31 + 8], HU3D_ATTR_DISPOFF); + sp60.x = 158.0f + (boxno * 130); + sp60.y = 230; + sp60.z = 800; + Hu3D2Dto3D(&sp60, 1, &sp54); + sp54.z = 900; + sp60.x = 158.0f + (temp_r31 * 130); + Hu3D2Dto3D(&sp60, 1, &sp48); + sp48.z = 800; + VECSubtract(&sp48, &sp54, &sp3C); + Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31 + 8], 1.0f); + Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31 + 11], 1.0f); + lbl_1_bss_120[temp_r31] = 0; + for (temp_r30 = 1; temp_r30 <= 30; temp_r30++) { + temp_f31 = temp_r30 / 30.0; + sp60.x = sp3C.x * temp_f31; + sp60.y = sp3C.y * temp_f31; + sp60.z = (sp3C.z * temp_f31) + (-300 * sind(180.0f * temp_f31)); + VECAdd(&sp60, &sp54, &sp60); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31 + 11], &sp60); + HuPrcVSleep(); + } + lbl_1_bss_120[temp_r31] = 1; + fn_1_BA20(); + lbl_1_bss_140[temp_r31] = 1; + lbl_1_bss_88++; + return 1; + } + } + } + } + break; + } + } + fn_1_BA20(); + Hu3DModelAttrSet(lbl_1_bss_19A[23], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[boxno + 8], HU3D_ATTR_DISPOFF); + for (temp_r30 = 0; temp_r30 <= 10; temp_r30++) { + temp_f31 = sind(90.0 * (temp_r30 / 10.0)); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], temp_f31, temp_f31, temp_f31); + HuPrcVSleep(); + } + fn_1_7628(temp_r31, 0); + return 0; } s32 fn_1_9E14(void) { - s32 result = HuCardClose(&curFileInfo); - return result; + s32 result = HuCardClose(&curFileInfo); + return result; } -s16 lbl_1_data_400[] = { - 15, 15, 13, - 15, 15, 8, - 15, 15, 8, - 15, 15 -}; +s16 lbl_1_data_400[] = { 15, 15, 13, 15, 15, 8, 15, 15, 8, 15, 15 }; s32 fn_1_9E4C(void) { - s16 temp_r31; - s16 temp_r30; - s16 temp_r29; - ModelData *temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - AnimData *temp_r24; - s16 temp_r23; - AnimData *temp_r22; - Mtx sp24; - Vec sp18; - Vec spC; - WindowData *sp8; - temp_r23 = -1; - sp8 = &winData[lbl_1_bss_148]; - OSReport("Init\n"); - MTXScale(sp24, 0.5f, 0.5f, 0.5f); - for(temp_r31=0; temp_r31<3; temp_r31++) { - if(lbl_1_bss_116[temp_r31] != -1) { - HuSprGrpKill(lbl_1_bss_116[temp_r31]); - } - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - if(lbl_1_bss_110[temp_r31] != -1) { - HuSprGrpKill(lbl_1_bss_110[temp_r31]); - } - } - lbl_1_bss_FC = HuSprAnimRead(HuDataReadNum(0x630022, MEMORY_DEFAULT_NUM)); - lbl_1_bss_F8 = HuSprAnimRead(HuDataReadNum(0x630023, MEMORY_DEFAULT_NUM)); - lbl_1_bss_F4 = HuSprAnimRead(HuDataReadNum(0x630025, MEMORY_DEFAULT_NUM)); - temp_r22 = HuSprAnimRead(HuDataReadNum(0x630024, MEMORY_DEFAULT_NUM)); - for(temp_r31=0; temp_r31<3; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_19A[temp_r31+8], 1); - Hu3DModelAttrReset(lbl_1_bss_19A[temp_r31+11], 1); - temp_r27 = lbl_1_bss_E8[temp_r31]; - if(temp_r27 < 0 || temp_r27 >= 8) { - temp_r27 = 8; - } - if(lbl_1_bss_13A[temp_r31] != -1) { - Hu3DAnimKill(lbl_1_bss_13A[temp_r31]); - } - if(lbl_1_bss_134[temp_r31] != -1) { - Hu3DAnimKill(lbl_1_bss_134[temp_r31]); - } - temp_r24 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r27], MEMORY_DEFAULT_NUM)); - lbl_1_bss_13A[temp_r31] = Hu3DAnimCreate(temp_r24, lbl_1_bss_19A[temp_r31+8], "star"); - temp_r24 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r27+9], MEMORY_DEFAULT_NUM)); - lbl_1_bss_134[temp_r31] = Hu3DAnimCreate(temp_r24, lbl_1_bss_19A[temp_r31+11], "star"); - if(!lbl_1_bss_140[temp_r31]) { - Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31+8], 0.6f); - Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31+11], 0.3f); - } else { - Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31+8], 1.0f); - Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31+11], 1.0f); - } - sp18.x = 158.0f+(temp_r31*130); - sp18.y = 230; - sp18.z = 800; - Hu3D2Dto3D(&sp18, 1, &spC); - spC.z = 800; - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31+8], &spC); - Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31+11], &spC); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31+8], 0, 0, 0); - Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31+11], 0, 0, 0); - temp_r28 = &Hu3DData[lbl_1_bss_19A[temp_r31+8]]; - MTXCopy(sp24, temp_r28->unk_F0); - temp_r28 = &Hu3DData[lbl_1_bss_19A[temp_r31+11]]; - MTXCopy(sp24, temp_r28->unk_F0); - lbl_1_bss_116[temp_r31] = HuSprGrpCreate(9); - temp_r29 = HuSprCreate(lbl_1_bss_FC, 3000, 0); - HuSprGrpMemberSet(lbl_1_bss_116[temp_r31], 0, temp_r29); - HuSprPosSet(lbl_1_bss_116[temp_r31], 0, -48, 0); - for(temp_r30=0; temp_r30<4; temp_r30++) { - temp_r29 = HuSprCreate(lbl_1_bss_F8, 3000, 0); - HuSprGrpMemberSet(lbl_1_bss_116[temp_r31], temp_r30+1, temp_r29); - HuSprPosSet(lbl_1_bss_116[temp_r31], temp_r30+1, (temp_r30*24)-24, 0); - } - temp_r29 = HuSprCreate(lbl_1_bss_F4, 3000, 0); - HuSprGrpMemberSet(lbl_1_bss_116[temp_r31], 5, temp_r29); - HuSprPosSet(lbl_1_bss_116[temp_r31], 5, 16, 0); - HuSprGrpScissorSet(lbl_1_bss_116[temp_r31], 0, 16, 640, 448); - lbl_1_bss_110[temp_r31] = HuSprGrpCreate(11); - for(temp_r30=temp_r25=0; temp_r30<11; temp_r30++) { - temp_r25 += lbl_1_data_400[temp_r30]; - } - for(temp_r30=temp_r26=0; temp_r30<11; temp_r30++) { - temp_r29 = HuSprCreate(temp_r22, 3000, 0); - HuSprGrpMemberSet(lbl_1_bss_110[temp_r31], temp_r30, temp_r29); - HuSprPosSet(lbl_1_bss_110[temp_r31], temp_r30, -(temp_r25/2)+8+temp_r26, 0); - temp_r26 += lbl_1_data_400[temp_r30]; - } - HuSprAttrSet(lbl_1_bss_110[temp_r31], 5, 4); - HuSprBankSet(lbl_1_bss_110[temp_r31], 2, 10); - HuSprBankSet(lbl_1_bss_110[temp_r31], 8, 11); - HuSprGrpScissorSet(lbl_1_bss_110[temp_r31], 0, 16, 640, 448); - } - MTXScale(sp24, 0.45f, 0.45f, 0.45f); - temp_r28 = &Hu3DData[lbl_1_bss_19A[23]]; - Hu3DModelAttrSet(lbl_1_bss_19A[23], 0x40000001); - MTXCopy(sp24, temp_r28->unk_F0); - return temp_r23; + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + ModelData *temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + AnimData *temp_r24; + s16 temp_r23; + AnimData *temp_r22; + Mtx sp24; + Vec sp18; + Vec spC; + WindowData *sp8; + temp_r23 = -1; + sp8 = &winData[lbl_1_bss_148]; + OSReport("Init\n"); + MTXScale(sp24, 0.5f, 0.5f, 0.5f); + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + if (lbl_1_bss_116[temp_r31] != -1) { + HuSprGrpKill(lbl_1_bss_116[temp_r31]); + } + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + if (lbl_1_bss_110[temp_r31] != -1) { + HuSprGrpKill(lbl_1_bss_110[temp_r31]); + } + } + lbl_1_bss_FC = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATA_MAKE_NUM(DATADIR_MODESEL, 0x00), 0x22), MEMORY_DEFAULT_NUM)); + lbl_1_bss_F8 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATA_MAKE_NUM(DATADIR_MODESEL, 0x00), 0x23), MEMORY_DEFAULT_NUM)); + lbl_1_bss_F4 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATA_MAKE_NUM(DATADIR_MODESEL, 0x00), 0x25), MEMORY_DEFAULT_NUM)); + temp_r22 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATA_MAKE_NUM(DATADIR_MODESEL, 0x00), 0x24), MEMORY_DEFAULT_NUM)); + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + Hu3DModelAttrSet(lbl_1_bss_19A[temp_r31 + 8], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_19A[temp_r31 + 11], HU3D_ATTR_DISPOFF); + temp_r27 = lbl_1_bss_E8[temp_r31]; + if (temp_r27 < 0 || temp_r27 >= 8) { + temp_r27 = 8; + } + if (lbl_1_bss_13A[temp_r31] != -1) { + Hu3DAnimKill(lbl_1_bss_13A[temp_r31]); + } + if (lbl_1_bss_134[temp_r31] != -1) { + Hu3DAnimKill(lbl_1_bss_134[temp_r31]); + } + temp_r24 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r27], MEMORY_DEFAULT_NUM)); + lbl_1_bss_13A[temp_r31] = Hu3DAnimCreate(temp_r24, lbl_1_bss_19A[temp_r31 + 8], "star"); + temp_r24 = HuSprAnimRead(HuDataReadNum(lbl_1_data_21C[temp_r27 + 9], MEMORY_DEFAULT_NUM)); + lbl_1_bss_134[temp_r31] = Hu3DAnimCreate(temp_r24, lbl_1_bss_19A[temp_r31 + 11], "star"); + if (!lbl_1_bss_140[temp_r31]) { + Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31 + 8], 0.6f); + Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31 + 11], 0.3f); + } + else { + Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31 + 8], 1.0f); + Hu3DModelTPLvlSet(lbl_1_bss_19A[temp_r31 + 11], 1.0f); + } + sp18.x = 158.0f + (temp_r31 * 130); + sp18.y = 230; + sp18.z = 800; + Hu3D2Dto3D(&sp18, 1, &spC); + spC.z = 800; + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31 + 8], &spC); + Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31 + 11], &spC); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], 0, 0, 0); + Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 11], 0, 0, 0); + temp_r28 = &Hu3DData[lbl_1_bss_19A[temp_r31 + 8]]; + MTXCopy(sp24, temp_r28->unk_F0); + temp_r28 = &Hu3DData[lbl_1_bss_19A[temp_r31 + 11]]; + MTXCopy(sp24, temp_r28->unk_F0); + lbl_1_bss_116[temp_r31] = HuSprGrpCreate(9); + temp_r29 = HuSprCreate(lbl_1_bss_FC, 3000, 0); + HuSprGrpMemberSet(lbl_1_bss_116[temp_r31], 0, temp_r29); + HuSprPosSet(lbl_1_bss_116[temp_r31], 0, -48, 0); + for (temp_r30 = 0; temp_r30 < 4; temp_r30++) { + temp_r29 = HuSprCreate(lbl_1_bss_F8, 3000, 0); + HuSprGrpMemberSet(lbl_1_bss_116[temp_r31], temp_r30 + 1, temp_r29); + HuSprPosSet(lbl_1_bss_116[temp_r31], temp_r30 + 1, (temp_r30 * 24) - 24, 0); + } + temp_r29 = HuSprCreate(lbl_1_bss_F4, 3000, 0); + HuSprGrpMemberSet(lbl_1_bss_116[temp_r31], 5, temp_r29); + HuSprPosSet(lbl_1_bss_116[temp_r31], 5, 16, 0); + HuSprGrpScissorSet(lbl_1_bss_116[temp_r31], 0, 16, 640, 448); + lbl_1_bss_110[temp_r31] = HuSprGrpCreate(11); + for (temp_r30 = temp_r25 = 0; temp_r30 < 11; temp_r30++) { + temp_r25 += lbl_1_data_400[temp_r30]; + } + for (temp_r30 = temp_r26 = 0; temp_r30 < 11; temp_r30++) { + temp_r29 = HuSprCreate(temp_r22, 3000, 0); + HuSprGrpMemberSet(lbl_1_bss_110[temp_r31], temp_r30, temp_r29); + HuSprPosSet(lbl_1_bss_110[temp_r31], temp_r30, -(temp_r25 / 2) + 8 + temp_r26, 0); + temp_r26 += lbl_1_data_400[temp_r30]; + } + HuSprAttrSet(lbl_1_bss_110[temp_r31], 5, 4); + HuSprBankSet(lbl_1_bss_110[temp_r31], 2, 10); + HuSprBankSet(lbl_1_bss_110[temp_r31], 8, 11); + HuSprGrpScissorSet(lbl_1_bss_110[temp_r31], 0, 16, 640, 448); + } + MTXScale(sp24, 0.45f, 0.45f, 0.45f); + temp_r28 = &Hu3DData[lbl_1_bss_19A[23]]; + Hu3DModelAttrSet(lbl_1_bss_19A[23], HU3D_MOTATTR_LOOP); + MTXCopy(sp24, temp_r28->unk_F0); + return temp_r23; } void fn_1_A8C0(s16 boxno) { - SLLoadGameStat(); - SLLoadBoardStory(); - lbl_1_bss_EE[boxno] = GWGameStat.total_stars; - lbl_1_bss_D0[boxno] = GWGameStat.create_time; - lbl_1_bss_E8[boxno] = GWSystem.unk0B[1]; - lbl_1_bss_C4[boxno] = GWGameStat.story_continue; - lbl_1_bss_B8[boxno] = GWGameStat.party_continue; - if(GWGameStat.story_continue) { - SLLoadBoardStory(); - lbl_1_bss_A4[boxno] = GWSystem.board; - lbl_1_bss_AC[boxno] = 0; - } - if(GWGameStat.party_continue) { - SLLoadBoard(); - lbl_1_bss_9E[boxno] = GWSystem.board; - lbl_1_bss_98[boxno] = GWSystem.turn; - lbl_1_bss_92[boxno] = GWSystem.max_turn; - } + SLLoadGameStat(); + SLLoadBoardStory(); + lbl_1_bss_EE[boxno] = GWGameStat.total_stars; + lbl_1_bss_D0[boxno] = GWGameStat.create_time; + lbl_1_bss_E8[boxno] = GWSystem.storyChar; + lbl_1_bss_C4[boxno] = GWGameStat.story_continue; + lbl_1_bss_B8[boxno] = GWGameStat.party_continue; + if (GWGameStat.story_continue) { + SLLoadBoardStory(); + lbl_1_bss_A4[boxno] = GWSystem.board; + lbl_1_bss_AC[boxno] = 0; + } + if (GWGameStat.party_continue) { + SLLoadBoard(); + lbl_1_bss_9E[boxno] = GWSystem.board; + lbl_1_bss_98[boxno] = GWSystem.turn; + lbl_1_bss_92[boxno] = GWSystem.max_turn; + } } void fn_1_AAB8(void) { - float temp_f31; - float temp_f30; - float temp_f29; - ModelData *temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - Mtx sp48; - OSCalendarTime sp20; - Vec sp14; - Vec sp8; - for(temp_r30=0; temp_r30<2; temp_r30++) { - lbl_1_bss_12C[temp_r30] = 1; - } - while(1) { - for(temp_r30=0; temp_r30<2; temp_r30++) { - MTXScale(sp48, 0.5f, 0.5f, 0.5f); - mtxRotCat(sp48, 0.0f, 0.0f, 15.0f*lbl_1_bss_100[temp_r30]); - temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30]]; - MTXCopy(sp48, temp_r31->unk_F0); - Hu3DModelRotSet(lbl_1_bss_19A[temp_r30], 0, lbl_1_bss_8C*lbl_1_bss_108[temp_r30]*GET_ZEROSIGN(temp_r30 == 0), 0); - if(!lbl_1_bss_12C[temp_r30]) { - espAttrSet(lbl_1_bss_152[temp_r30+2], 4); - } else { - temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30+2]]; - if(temp_r31->attr & 0x1) { - temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30+4]]; - } - if(temp_r31->attr & 0x1) { - espAttrSet(lbl_1_bss_152[temp_r30+2], 4); - } else { - espAttrReset(lbl_1_bss_152[temp_r30+2], 4); - } - sp8 = temp_r31->pos; - sp8.y -= 30.0f*temp_r31->scale.x; - Hu3D3Dto2D(&sp8, 1, &sp14); - espPosSet(lbl_1_bss_152[temp_r30+2], sp14.x, sp14.y); - espScaleSet(lbl_1_bss_152[temp_r30+2], temp_r31->scale.x, temp_r31->scale.x); - } - } - lbl_1_bss_8C += 3.0f; - if(lbl_1_bss_8C > 1080.0f) { - lbl_1_bss_8C -= 360; - } - if(lbl_1_bss_11C == -1) { - espAttrSet(lbl_1_bss_152[4], 4); - } else { - temp_r31 = &Hu3DData[lbl_1_bss_19A[lbl_1_bss_11C]]; - if(temp_r31->attr & 0x1) { - espAttrSet(lbl_1_bss_152[4], 4); - } else { - espBankSet(lbl_1_bss_152[4], lbl_1_bss_11C); - espAttrReset(lbl_1_bss_152[4], 4); - sp8 = temp_r31->pos; - sp8.y += 5.0f*temp_r31->scale.x; - Hu3D3Dto2D(&sp8, 1, &sp14); - espPosSet(lbl_1_bss_152[4], sp14.x, sp14.y); - espScaleSet(lbl_1_bss_152[4], temp_r31->scale.x, temp_r31->scale.x); - } - } - for(temp_r30=0; temp_r30<3; temp_r30++) { - if(!lbl_1_bss_120[temp_r30]) { - espAttrSet(lbl_1_bss_152[temp_r30+5], 4); - continue; - } - temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30+8]]; - if(temp_r31->attr & 0x1) { - temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30+11]]; - } - temp_f30 = (900.0+(50.0*temp_r31->scale.x))*sin(M_PI/12); - temp_f29 = (temp_r31->pos.z+(50.0*temp_r31->scale.x))*sin(M_PI/12); - temp_f31 = temp_r31->scale.x*(temp_f29/temp_f30); - if(temp_r31->attr & 0x1) { - espAttrSet(lbl_1_bss_152[temp_r30+5], 4); - } else { - espAttrReset(lbl_1_bss_152[temp_r30+5], 4); - } - sp8 = temp_r31->pos; - sp8.y += 40.0*temp_r31->scale.x; - sp8.z += 50.0*temp_r31->scale.x; - Hu3D3Dto2D(&sp8, 1, &sp14); - espPosSet(lbl_1_bss_152[temp_r30+5], sp14.x, sp14.y); - espScaleSet(lbl_1_bss_152[temp_r30+5], temp_f31, temp_f31); - if(lbl_1_bss_EE[temp_r30] == -1) { - HuSprGrpPosSet(lbl_1_bss_116[temp_r30], 0, -500); - } else { - sp8 = temp_r31->pos; - sp8.y -= 30.0*temp_r31->scale.x; - sp8.z += 50.0*temp_r31->scale.x; - Hu3D3Dto2D(&sp8, 1, &sp14); - HuSprGrpPosSet(lbl_1_bss_116[temp_r30], sp14.x, sp14.y); - HuSprGrpScaleSet(lbl_1_bss_116[temp_r30], temp_f31, temp_f31); - if(lbl_1_bss_EE[temp_r30] > 9999) { - for(temp_r28=0; temp_r28<4; temp_r28++) { - HuSprAttrSet(lbl_1_bss_116[temp_r30], temp_r28+1, 4); - } - HuSprAttrReset(lbl_1_bss_116[temp_r30], 5, 4); - } else { - for(temp_r28=0; temp_r28<4; temp_r28++) { - HuSprAttrReset(lbl_1_bss_116[temp_r30], temp_r28+1, 4); - } - HuSprAttrSet(lbl_1_bss_116[temp_r30], 5, 4); - temp_r29 = lbl_1_bss_EE[temp_r30]; - HuSprBankSet(lbl_1_bss_116[temp_r30], 1, temp_r29/1000); - temp_r29 -= (temp_r29/1000)*1000; - HuSprBankSet(lbl_1_bss_116[temp_r30], 2, temp_r29/100); - temp_r29 -= (temp_r29/100)*100; - HuSprBankSet(lbl_1_bss_116[temp_r30], 3, temp_r29/10); - temp_r29 -= (temp_r29/10)*10; - HuSprBankSet(lbl_1_bss_116[temp_r30], 4, temp_r29); - } - sp8 = temp_r31->pos; - sp8.y -= 40.0*temp_r31->scale.x; - sp8.z += 50.0*temp_r31->scale.x; - Hu3D3Dto2D(&sp8, 1, &sp14); - HuSprGrpPosSet(lbl_1_bss_110[temp_r30], sp14.x, sp14.y); - HuSprGrpScaleSet(lbl_1_bss_110[temp_r30], temp_f31, temp_f31); - OSTicksToCalendarTime(lbl_1_bss_D0[temp_r30], &sp20); - temp_r29 = sp20.mon+1; - HuSprBankSet(lbl_1_bss_110[temp_r30], 0, temp_r29/10); - temp_r29 -= (temp_r29/10)*10; - HuSprBankSet(lbl_1_bss_110[temp_r30], 1, temp_r29); - temp_r29 = sp20.mday; - HuSprBankSet(lbl_1_bss_110[temp_r30], 3, temp_r29/10); - temp_r29 -= (temp_r29/10)*10; - HuSprBankSet(lbl_1_bss_110[temp_r30], 4, temp_r29); - temp_r29 = sp20.hour; - HuSprBankSet(lbl_1_bss_110[temp_r30], 6, temp_r29/10); - temp_r29 -= (temp_r29/10)*10; - HuSprBankSet(lbl_1_bss_110[temp_r30], 7, temp_r29); - temp_r29 = sp20.min; - HuSprBankSet(lbl_1_bss_110[temp_r30], 9, temp_r29/10); - temp_r29 -= (temp_r29/10)*10; - HuSprBankSet(lbl_1_bss_110[temp_r30], 10, temp_r29); - } - } - HuPrcVSleep(); - } - + float temp_f31; + float temp_f30; + float temp_f29; + ModelData *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + Mtx sp48; + OSCalendarTime sp20; + Vec sp14; + Vec sp8; + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + lbl_1_bss_12C[temp_r30] = 1; + } + while (1) { + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + MTXScale(sp48, 0.5f, 0.5f, 0.5f); + mtxRotCat(sp48, 0.0f, 0.0f, 15.0f * lbl_1_bss_100[temp_r30]); + temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30]]; + MTXCopy(sp48, temp_r31->unk_F0); + Hu3DModelRotSet(lbl_1_bss_19A[temp_r30], 0, lbl_1_bss_8C * lbl_1_bss_108[temp_r30] * GET_ZEROSIGN(temp_r30 == 0), 0); + if (!lbl_1_bss_12C[temp_r30]) { + espAttrSet(lbl_1_bss_152[temp_r30 + 2], HUSPR_ATTR_DISPOFF); + } + else { + temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30 + 2]]; + if (temp_r31->attr & 0x1) { + temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30 + 4]]; + } + if (temp_r31->attr & 0x1) { + espAttrSet(lbl_1_bss_152[temp_r30 + 2], HUSPR_ATTR_DISPOFF); + } + else { + espAttrReset(lbl_1_bss_152[temp_r30 + 2], HUSPR_ATTR_DISPOFF); + } + sp8 = temp_r31->pos; + sp8.y -= 30.0f * temp_r31->scale.x; + Hu3D3Dto2D(&sp8, 1, &sp14); + espPosSet(lbl_1_bss_152[temp_r30 + 2], sp14.x, sp14.y); + espScaleSet(lbl_1_bss_152[temp_r30 + 2], temp_r31->scale.x, temp_r31->scale.x); + } + } + lbl_1_bss_8C += 3.0f; + if (lbl_1_bss_8C > 1080.0f) { + lbl_1_bss_8C -= 360; + } + if (lbl_1_bss_11C == -1) { + espAttrSet(lbl_1_bss_152[4], HUSPR_ATTR_DISPOFF); + } + else { + temp_r31 = &Hu3DData[lbl_1_bss_19A[lbl_1_bss_11C]]; + if (temp_r31->attr & 0x1) { + espAttrSet(lbl_1_bss_152[4], HUSPR_ATTR_DISPOFF); + } + else { + espBankSet(lbl_1_bss_152[4], lbl_1_bss_11C); + espAttrReset(lbl_1_bss_152[4], HUSPR_ATTR_DISPOFF); + sp8 = temp_r31->pos; + sp8.y += 5.0f * temp_r31->scale.x; + Hu3D3Dto2D(&sp8, 1, &sp14); + espPosSet(lbl_1_bss_152[4], sp14.x, sp14.y); + espScaleSet(lbl_1_bss_152[4], temp_r31->scale.x, temp_r31->scale.x); + } + } + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + if (!lbl_1_bss_120[temp_r30]) { + espAttrSet(lbl_1_bss_152[temp_r30 + 5], HUSPR_ATTR_DISPOFF); + continue; + } + temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30 + 8]]; + if (temp_r31->attr & 0x1) { + temp_r31 = &Hu3DData[lbl_1_bss_19A[temp_r30 + 11]]; + } + temp_f30 = (900.0 + (50.0 * temp_r31->scale.x)) * sin(M_PI / 12); + temp_f29 = (temp_r31->pos.z + (50.0 * temp_r31->scale.x)) * sin(M_PI / 12); + temp_f31 = temp_r31->scale.x * (temp_f29 / temp_f30); + if (temp_r31->attr & 0x1) { + espAttrSet(lbl_1_bss_152[temp_r30 + 5], HUSPR_ATTR_DISPOFF); + } + else { + espAttrReset(lbl_1_bss_152[temp_r30 + 5], HUSPR_ATTR_DISPOFF); + } + sp8 = temp_r31->pos; + sp8.y += 40.0 * temp_r31->scale.x; + sp8.z += 50.0 * temp_r31->scale.x; + Hu3D3Dto2D(&sp8, 1, &sp14); + espPosSet(lbl_1_bss_152[temp_r30 + 5], sp14.x, sp14.y); + espScaleSet(lbl_1_bss_152[temp_r30 + 5], temp_f31, temp_f31); + if (lbl_1_bss_EE[temp_r30] == -1) { + HuSprGrpPosSet(lbl_1_bss_116[temp_r30], 0, -500); + } + else { + sp8 = temp_r31->pos; + sp8.y -= 30.0 * temp_r31->scale.x; + sp8.z += 50.0 * temp_r31->scale.x; + Hu3D3Dto2D(&sp8, 1, &sp14); + HuSprGrpPosSet(lbl_1_bss_116[temp_r30], sp14.x, sp14.y); + HuSprGrpScaleSet(lbl_1_bss_116[temp_r30], temp_f31, temp_f31); + if (lbl_1_bss_EE[temp_r30] > 9999) { + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + HuSprAttrSet(lbl_1_bss_116[temp_r30], temp_r28 + 1, HUSPR_ATTR_DISPOFF); + } + HuSprAttrReset(lbl_1_bss_116[temp_r30], 5, HUSPR_ATTR_DISPOFF); + } + else { + for (temp_r28 = 0; temp_r28 < 4; temp_r28++) { + HuSprAttrReset(lbl_1_bss_116[temp_r30], temp_r28 + 1, HUSPR_ATTR_DISPOFF); + } + HuSprAttrSet(lbl_1_bss_116[temp_r30], 5, HUSPR_ATTR_DISPOFF); + temp_r29 = lbl_1_bss_EE[temp_r30]; + HuSprBankSet(lbl_1_bss_116[temp_r30], 1, temp_r29 / 1000); + temp_r29 -= (temp_r29 / 1000) * 1000; + HuSprBankSet(lbl_1_bss_116[temp_r30], 2, temp_r29 / 100); + temp_r29 -= (temp_r29 / 100) * 100; + HuSprBankSet(lbl_1_bss_116[temp_r30], 3, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_116[temp_r30], 4, temp_r29); + } + sp8 = temp_r31->pos; + sp8.y -= 40.0 * temp_r31->scale.x; + sp8.z += 50.0 * temp_r31->scale.x; + Hu3D3Dto2D(&sp8, 1, &sp14); + HuSprGrpPosSet(lbl_1_bss_110[temp_r30], sp14.x, sp14.y); + HuSprGrpScaleSet(lbl_1_bss_110[temp_r30], temp_f31, temp_f31); + OSTicksToCalendarTime(lbl_1_bss_D0[temp_r30], &sp20); + #if VERSION_PAL + temp_r29 = sp20.mday; + HuSprBankSet(lbl_1_bss_110[temp_r30], 0, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 1, temp_r29); + temp_r29 = sp20.mon+1; + HuSprBankSet(lbl_1_bss_110[temp_r30], 3, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 4, temp_r29); + #else + temp_r29 = sp20.mon + 1; + HuSprBankSet(lbl_1_bss_110[temp_r30], 0, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 1, temp_r29); + temp_r29 = sp20.mday; + HuSprBankSet(lbl_1_bss_110[temp_r30], 3, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 4, temp_r29); + #endif + temp_r29 = sp20.hour; + HuSprBankSet(lbl_1_bss_110[temp_r30], 6, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 7, temp_r29); + temp_r29 = sp20.min; + HuSprBankSet(lbl_1_bss_110[temp_r30], 9, temp_r29 / 10); + temp_r29 -= (temp_r29 / 10) * 10; + HuSprBankSet(lbl_1_bss_110[temp_r30], 10, temp_r29); + } + } + HuPrcVSleep(); + } } s16 lbl_1_data_41C = -1; void fn_1_B8CC(u32 arg0) { - float size[2]; - if(lbl_1_data_41C != -1) { - HuWinExCleanup(lbl_1_data_41C); - } - HuWinInsertMesSizeGet(MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesMaxSizeGet(1, size, arg0); - lbl_1_data_41C = HuWinExCreateStyled(-10000, 308, size[0], size[1], -1, 2); - HuWinMesSpeedSet(lbl_1_data_41C, 0); - HuWinExAnimIn(lbl_1_data_41C); - HuWinInsertMesSet(lbl_1_data_41C, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); - HuWinMesSet(lbl_1_data_41C, arg0); - HuWinMesWait(lbl_1_data_41C); + float size[2]; + if (lbl_1_data_41C != -1) { + HuWinExCleanup(lbl_1_data_41C); + } + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesMaxSizeGet(1, size, arg0); + lbl_1_data_41C = HuWinExCreateStyled(-10000, 308, size[0], size[1], -1, 2); + HuWinMesSpeedSet(lbl_1_data_41C, 0); + HuWinExAnimIn(lbl_1_data_41C); + HuWinInsertMesSet(lbl_1_data_41C, MAKE_MESSID_PTR(lbl_1_data_278[curSlotNo]), 0); + HuWinMesSet(lbl_1_data_41C, arg0); + HuWinMesWait(lbl_1_data_41C); } void fn_1_BA20(void) { - if(lbl_1_data_41C != -1) { - HuWinExAnimOut(lbl_1_data_41C); - HuWinExCleanup(lbl_1_data_41C); - lbl_1_data_41C = -1; - } + if (lbl_1_data_41C != -1) { + HuWinExAnimOut(lbl_1_data_41C); + HuWinExCleanup(lbl_1_data_41C); + lbl_1_data_41C = -1; + } } void fn_1_BA80(s16 boxno) { - char mesMaxTurn[4]; - char mesTurn[4]; - char mesDummy[1] = {0}; - if(lbl_1_bss_EE[boxno] < 0) { - HuWinMesSet(lbl_1_bss_148, 0x100011); - } else { - if(!lbl_1_bss_C4[boxno] && !lbl_1_bss_B8[boxno]) { - HuWinInsertMesSet(lbl_1_bss_148, 0x100011, 0); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); - HuWinMesSet(lbl_1_bss_148, 0x100043); - } else { - if(!lbl_1_bss_C4[boxno]) { - HuWinInsertMesSet(lbl_1_bss_148, 0x100011, 0); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); - HuWinInsertMesSet(lbl_1_bss_148, 0x100012+lbl_1_bss_9E[boxno], 2); - sprintf(mesMaxTurn, "%2d", lbl_1_bss_98[boxno]); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesMaxTurn), 3); - sprintf(mesTurn, "%2d", lbl_1_bss_92[boxno]); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesTurn), 4); - HuWinMesSet(lbl_1_bss_148, 0x100042); - } else { - if(!lbl_1_bss_B8[boxno]) { - HuWinInsertMesSet(lbl_1_bss_148, 0x100012+lbl_1_bss_A4[boxno], 0); - if(lbl_1_bss_AC[boxno]) { - HuWinInsertMesSet(lbl_1_bss_148, 0x100018, 1); - } else { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); - } - HuWinMesSet(lbl_1_bss_148, 0x100043); - } else { - HuWinInsertMesSet(lbl_1_bss_148, 0x100012+lbl_1_bss_A4[boxno], 0); - if(lbl_1_bss_AC[boxno]) { - HuWinInsertMesSet(lbl_1_bss_148, 0x100018, 1); - } else { - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); - } - HuWinInsertMesSet(lbl_1_bss_148, 0x100012+lbl_1_bss_9E[boxno], 2); - sprintf(mesMaxTurn, "%2d", lbl_1_bss_98[boxno]); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesMaxTurn), 3); - sprintf(mesTurn, "%2d", lbl_1_bss_92[boxno]); - HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesTurn), 4); - HuWinMesSet(lbl_1_bss_148, 0x100042); - } - } - } - } - HuWinMesWait(lbl_1_bss_148); -} \ No newline at end of file + char mesMaxTurn[4]; + char mesTurn[4]; + char mesDummy[1] = { 0 }; + if (lbl_1_bss_EE[boxno] < 0) { + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x11)); + } + else { + if (!lbl_1_bss_C4[boxno] && !lbl_1_bss_B8[boxno]) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x11), 0); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x43)); + } + else { + if (!lbl_1_bss_C4[boxno]) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x11), 0); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x12) + lbl_1_bss_9E[boxno], 2); + sprintf(mesMaxTurn, "%2d", lbl_1_bss_98[boxno]); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesMaxTurn), 3); + sprintf(mesTurn, "%2d", lbl_1_bss_92[boxno]); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesTurn), 4); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x42)); + } + else { + if (!lbl_1_bss_B8[boxno]) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x12) + lbl_1_bss_A4[boxno], 0); + if (lbl_1_bss_AC[boxno]) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x18), 1); + } + else { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); + } + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x43)); + } + else { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x12) + lbl_1_bss_A4[boxno], 0); + if (lbl_1_bss_AC[boxno]) { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x18), 1); + } + else { + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesDummy), 1); + } + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x12) + lbl_1_bss_9E[boxno], 2); + sprintf(mesMaxTurn, "%2d", lbl_1_bss_98[boxno]); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesMaxTurn), 3); + sprintf(mesTurn, "%2d", lbl_1_bss_92[boxno]); + HuWinInsertMesSet(lbl_1_bss_148, MAKE_MESSID_PTR(mesTurn), 4); + HuWinMesSet(lbl_1_bss_148, MAKE_MESSID(16, 0x42)); + } + } + } + } + HuWinMesWait(lbl_1_bss_148); +} diff --git a/src/REL/modeseldll/main.c b/src/REL/modeseldll/main.c index 84d5c977..2ece1b9d 100644 --- a/src/REL/modeseldll/main.c +++ b/src/REL/modeseldll/main.c @@ -1,26 +1,22 @@ -#include "game/object.h" +#include "REL/modeseldll.h" +#include "game/audio.h" +#include "game/gamework_data.h" #include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/process.h" #include "game/window.h" -#include "game/objsub.h" -#include "game/audio.h" #include "game/wipe.h" -#include "game/pad.h" -#include "math.h" -#include "game/gamework_data.h" -#include "REL/modeseldll.h" -#include "rel_sqrt_consts.h" +#include "ext_math.h" typedef struct camera_view_params { - Vec rot; - Vec pos; - float zoom; + Vec rot; + Vec pos; + float zoom; } CameraViewParams; -CameraViewParams lbl_1_data_0[] = { - { { 0, 0, 0 }, { 0, 0, 0 }, 1500 }, - { { 0, 0, 0 }, { 0, 0, 0 }, 524 } -}; +CameraViewParams lbl_1_data_0[] = { { { 0, 0, 0 }, { 0, 0, 0 }, 1500 }, { { 0, 0, 0 }, { 0, 0, 0 }, 524 } }; omObjData *lbl_1_bss_7C; Process *lbl_1_bss_78; @@ -42,325 +38,345 @@ void fn_1_1B6C(void); void ObjectSetup(void) { - s32 light; - OSReport("******* MS ObjectSetup *********\n"); - lbl_1_bss_78 = omInitObjMan(50, 8192); - omGameSysInit(lbl_1_bss_78); - lbl_1_bss_24[0].x = -70; - lbl_1_bss_24[0].y = 0; - lbl_1_bss_24[0].z = 0; - lbl_1_bss_C[0].x = 0; - lbl_1_bss_C[0].y = 130; - lbl_1_bss_C[0].z = -186; - lbl_1_bss_4[0] = 1360; - lbl_1_bss_64 = lbl_1_bss_24[0]; - lbl_1_bss_58 = lbl_1_bss_C[0]; - lbl_1_bss_54 = lbl_1_bss_4[0]; - lbl_1_bss_70[0] = 0; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 30, 20, 8000, 1.2f); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - Hu3DCameraScissorSet(1, 0, 16, 640, 448); - light = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); - Hu3DGLightInfinitytSet(light); - HuPrcChildCreate(fn_1_414, 100, 16384, 0, lbl_1_bss_78); - HuPrcChildCreate(fn_1_AF0, 200, 4096, 0, lbl_1_bss_78); - lbl_1_bss_7C = omAddObjEx(lbl_1_bss_78, 32730, 0, 0, -1, fn_1_B8C); - omAddObjEx(lbl_1_bss_78, 0, 32, 32, -1, fn_1_F40); - Hu3DBGColorSet(0, 0, 0); - mgBoardHostEnableF = 0; - HuWinInit(1); - mgPracticeEnableF = 0; - mgQuitExtraF = 0; + s32 light; + OSReport("******* MS ObjectSetup *********\n"); + lbl_1_bss_78 = omInitObjMan(50, 8192); + omGameSysInit(lbl_1_bss_78); + lbl_1_bss_24[0].x = -70; + lbl_1_bss_24[0].y = 0; + lbl_1_bss_24[0].z = 0; + lbl_1_bss_C[0].x = 0; + lbl_1_bss_C[0].y = 130; + lbl_1_bss_C[0].z = -186; + lbl_1_bss_4[0] = 1360; + lbl_1_bss_64 = lbl_1_bss_24[0]; + lbl_1_bss_58 = lbl_1_bss_C[0]; + lbl_1_bss_54 = lbl_1_bss_4[0]; + lbl_1_bss_70[0] = 0; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30, 20, 8000, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraScissorSet(1, 0, 16, 640, 448); + light = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); + Hu3DGLightInfinitytSet(light); + HuPrcChildCreate(fn_1_414, 100, 16384, 0, lbl_1_bss_78); + HuPrcChildCreate(fn_1_AF0, 200, 4096, 0, lbl_1_bss_78); + lbl_1_bss_7C = omAddObjEx(lbl_1_bss_78, 32730, 0, 0, -1, fn_1_B8C); + omAddObjEx(lbl_1_bss_78, 0, 32, 32, -1, fn_1_F40); + Hu3DBGColorSet(0, 0, 0); + mgBoardHostEnableF = 0; + HuWinInit(1); + mgPracticeEnableF = 0; + mgQuitExtraF = 0; } void fn_1_414(void) { - fn_1_9F4(); - if(omovlevtno) { - HuAudSeqPlay(43); - } else { - if(!fn_1_37DC()) { - WipeColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - HuAudSeqAllFadeOut(1000); - while(WipeStatGet()) { - HuPrcVSleep(); - } - omOvlReturnEx(1, 1); - while(1) { - HuPrcVSleep(); - } - } else { - s16 group = HuSprGrpCreate(1); - s16 sprite = HuTHPSprCreateVol("movie/opmov_s00.thp", 0, 3000, 70.0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprPosSet(group, 0, 288, 240); - HuSprDrawNoSet(group, 0, 127); - HuPrcSleep(2); - espAttrSet(lbl_1_bss_152[0], 4); - HuAudFXStop(lbl_1_data_100); - while(!HuTHPEndCheck()) { - HuPrcVSleep(); - } - HuTHPClose(); - HuSprGrpKill(group); - } - } - espAttrReset(lbl_1_bss_152[9], 4); - espDrawNoSet(lbl_1_bss_152[9], 127); - { - s16 result = fn_1_2490(); - if(result == -1) { - HuAudSeqAllFadeOut(1000); - WipeColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - - while(WipeStatGet()) { - HuPrcVSleep(); - } - omOvlGotoEx(OVL_MODESEL, 1, 0, 0); - while(1) { - HuPrcVSleep(); - } - } else { - s16 i; - omOvlHisData *his; - for(i=0; i<4; i++) { - GWPlayerCfg[i].pad_idx = i; - if(!HuPadStatGet(i)) { - GWPlayerCfg[i].iscom = 0; - } else { - GWPlayerCfg[i].iscom = 1; - } - } - his = omOvlHisGet(0); - omOvlHisChg(0, his->overlay, 1, his->stat); - _ClearFlag(FLAG_ID_MAKE(1, 0)); - _ClearFlag(FLAG_ID_MAKE(1, 8)); - _ClearFlag(FLAG_ID_MAKE(1, 12)); - _ClearFlag(FLAG_ID_MAKE(1, 11)); - GWGameStat.sound_mode = msmSysGetOutputMode(); - switch(result) { - case 0: - GWMGExplainSet(GWGameStat.party_pause.explain_mg); - GWMGShowComSet(GWGameStat.party_pause.show_com_mg); - GWMGListSet(GWGameStat.party_pause.mg_list); - GWMessSpeedSet(GWGameStat.party_pause.mess_speed); - GWSaveModeSet(GWGameStat.party_pause.save_mode); - omOvlCallEx(OVL_MENT, 1, 0, 0); - break; - - case 1: - GWMGExplainSet(GWGameStat.story_pause.explain_mg); - GWMGShowComSet(GWGameStat.story_pause.show_com_mg); - GWMGListSet(GWGameStat.story_pause.mg_list); - GWMessSpeedSet(GWGameStat.story_pause.mess_speed); - GWSaveModeSet(GWGameStat.story_pause.save_mode); - omOvlCallEx(OVL_MENT, 1, 1, 0); - break; - - case 2: - omOvlCallEx(OVL_MGMODE, 1, 0, 0); - break; - - case 3: - omOvlCallEx(OVL_MENT, 1, 3, 0); - break; - - case 4: - omOvlCallEx(OVL_MENT, 1, 4, 0); - break; - - case 5: - omOvlCallEx(OVL_MPEX, 1, 0, 0); - break; - } - while(1) { - HuPrcVSleep(); - } - } - } + fn_1_9F4(); + if (omovlevtno) { + HuAudSeqPlay(43); + } + else { + if (!fn_1_37DC()) { + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + HuAudSeqAllFadeOut(1000); + while (WipeStatGet()) { + HuPrcVSleep(); + } + #if VERSION_PAL + if(GwLanguageSave != -1) { + GWGameStat.language = GwLanguageSave; + } else if(GwLanguage != -1) { + GWGameStat.language = GwLanguage; + } + #endif + omOvlReturnEx(1, 1); + while (1) { + HuPrcVSleep(); + } + } + else { + s16 grpId; + s16 sprId; + #if VERSION_PAL + HuWinAllKill(); + HuWinInit(1); + #endif + grpId = HuSprGrpCreate(1); + sprId = HuTHPSprCreateVol("movie/opmov_s00.thp", 0, 3000, 70.0); + HuSprGrpMemberSet(grpId, 0, sprId); + HuSprPosSet(grpId, 0, 288, 240); + HuSprDrawNoSet(grpId, 0, 127); + HuPrcSleep(2); + espAttrSet(lbl_1_bss_152[0], HUSPR_ATTR_DISPOFF); + HuAudFXStop(lbl_1_data_100); + while (!HuTHPEndCheck()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuSprGrpKill(grpId); + } + } + espAttrReset(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); + espDrawNoSet(lbl_1_bss_152[9], 127); + { + s16 result = fn_1_2490(); + if (result == -1) { + HuAudSeqAllFadeOut(1000); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + + while (WipeStatGet()) { + HuPrcVSleep(); + } + omOvlGotoEx(OVL_MODESEL, 1, 0, 0); + while (1) { + HuPrcVSleep(); + } + } + else { + s16 i; + omOvlHisData *his; + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].pad_idx = i; + if (!HuPadStatGet(i)) { + GWPlayerCfg[i].iscom = 0; + } + else { + GWPlayerCfg[i].iscom = 1; + } + } + his = omOvlHisGet(0); + omOvlHisChg(0, his->overlay, 1, his->stat); + _ClearFlag(FLAG_ID_MAKE(1, 0)); + _ClearFlag(FLAG_ID_MAKE(1, 8)); + _ClearFlag(FLAG_ID_MAKE(1, 12)); + _ClearFlag(FLAG_ID_MAKE(1, 11)); + GWGameStat.sound_mode = msmSysGetOutputMode(); + switch (result) { + case 0: + GWMGExplainSet(GWGameStat.party_pause.explain_mg); + GWMGShowComSet(GWGameStat.party_pause.show_com_mg); + GWMGListSet(GWGameStat.party_pause.mg_list); + GWMessSpeedSet(GWGameStat.party_pause.mess_speed); + GWSaveModeSet(GWGameStat.party_pause.save_mode); + omOvlCallEx(OVL_MENT, 1, 0, 0); + break; + + case 1: + GWMGExplainSet(GWGameStat.story_pause.explain_mg); + GWMGShowComSet(GWGameStat.story_pause.show_com_mg); + GWMGListSet(GWGameStat.story_pause.mg_list); + GWMessSpeedSet(GWGameStat.story_pause.mess_speed); + GWSaveModeSet(GWGameStat.story_pause.save_mode); + omOvlCallEx(OVL_MENT, 1, 1, 0); + break; + + case 2: + omOvlCallEx(OVL_MGMODE, 1, 0, 0); + break; + + case 3: + omOvlCallEx(OVL_MENT, 1, 3, 0); + break; + + case 4: + omOvlCallEx(OVL_MENT, 1, 4, 0); + break; + + case 5: + omOvlCallEx(OVL_MPEX, 1, 0, 0); + break; + } + while (1) { + HuPrcVSleep(); + } + } + } } void fn_1_9F4(void) { - Vec pos; - Vec target; - Vec up; - Hu3DShadowCreate(20, 100, 5000); - Hu3DShadowTPLvlSet(0.3f); - Hu3DShadowSizeSet(192); - target.x = target.y = target.z = 0; - pos.x = 500; - pos.z = 1000; - pos.y = 2000; - up.x = 0; - up.y = 1; - up.z = 0; - Hu3DShadowPosSet(&pos, &up, &target); - fn_1_BED8(lbl_1_data_428); - fn_1_C168(lbl_1_data_93C); + Vec pos; + Vec target; + Vec up; + Hu3DShadowCreate(20, 100, 5000); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowSizeSet(192); + target.x = target.y = target.z = 0; + pos.x = 500; + pos.z = 1000; + pos.y = 2000; + up.x = 0; + up.y = 1; + up.z = 0; + Hu3DShadowPosSet(&pos, &up, &target); + fn_1_BED8(lbl_1_data_428); + fn_1_C168(lbl_1_data_93C); } void fn_1_AF0(void) { - s16 i; - while(1) { - if(lbl_1_bss_70[0] || omSysExitReq) { - break; - } - HuPrcVSleep(); - } - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = -1; - } - BoardStatusKill(); - omOvlReturnEx(1, 1); - HuPrcEnd(); + s16 i; + while (1) { + if (lbl_1_bss_70[0] || omSysExitReq) { + break; + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = -1; + } + BoardStatusKill(); + omOvlReturnEx(1, 1); + HuPrcEnd(); } u16 lbl_1_data_6E[] = { 1, 2 }; void fn_1_B8C(omObjData *object) { - s16 i; - for(i=0; i<1; i++) { - Vec pos, target, up; - float x, y, z; - - x = lbl_1_bss_24[i].x; - y = lbl_1_bss_24[i].y; - z = lbl_1_bss_24[i].z; - - pos.x = (((sin((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_4[i])+lbl_1_bss_C[i].x); - pos.y = (-sin((M_PI*x)/180.0)*lbl_1_bss_4[i])+lbl_1_bss_C[i].y; - pos.z = ((cos((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_4[i])+lbl_1_bss_C[i].z; - target.x = lbl_1_bss_C[i].x; - target.y = lbl_1_bss_C[i].y; - target.z = lbl_1_bss_C[i].z; - up.x = sin((M_PI*y)/180.0)*sin((M_PI*x)/180.0); - up.y = cos((M_PI*x)/180.0); - up.z = cos((M_PI*y)/180.0)*sin((M_PI*x)/180.0); - Hu3DCameraPosSet(lbl_1_data_6E[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); - } + s16 i; + for (i = 0; i < 1; i++) { + Vec pos, target, up; + float x, y, z; + + x = lbl_1_bss_24[i].x; + y = lbl_1_bss_24[i].y; + z = lbl_1_bss_24[i].z; + + pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].x); + pos.y = (-sind(x) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].y; + pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].z; + target.x = lbl_1_bss_C[i].x; + target.y = lbl_1_bss_C[i].y; + target.z = lbl_1_bss_C[i].z; + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); + Hu3DCameraPosSet(lbl_1_data_6E[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + } } void fn_1_F40(omObjData *object) { - Vec pos; + Vec pos; Vec offset; Vec dir; Vec y_offset; - + f32 z_rot; s8 stick_pos; if (!lbl_1_bss_0) { - fn_1_1B6C(); + fn_1_1B6C(); return; } - lbl_1_bss_24[0].y += 0.1f * HuPadStkX[0]; - lbl_1_bss_24[0].x += 0.1f * HuPadStkY[0]; - lbl_1_bss_4[0] += HuPadTrigL[0] / 2; - lbl_1_bss_4[0] -= HuPadTrigR[0] / 2; - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - OSReport("%f,%f,%f\n", lbl_1_bss_24[0].x, lbl_1_bss_24[0].y, lbl_1_bss_24[0].z); - OSReport("%f,%f,%f\n", lbl_1_bss_C[0].x, lbl_1_bss_C[0].y, lbl_1_bss_C[0].z); - OSReport("%f\n", lbl_1_bss_4[0]); - } - if (lbl_1_bss_4[0] < 100.0f) { - lbl_1_bss_4[0] = 100.0f; - } - pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0))); - pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sin((M_PI * lbl_1_bss_24[0].x) / 180.0))); - pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0)))); - offset.x = lbl_1_bss_C[0].x - pos.x; - offset.y = lbl_1_bss_C[0].y - pos.y; - offset.z = lbl_1_bss_C[0].z - pos.z; - dir.x = (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0)); - dir.y = cos((M_PI * lbl_1_bss_24[0].x) / 180.0); - dir.z = (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0)); - z_rot = lbl_1_bss_24[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0)) - + dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0)); + lbl_1_bss_24[0].y += 0.1f * HuPadStkX[0]; + lbl_1_bss_24[0].x += 0.1f * HuPadStkY[0]; + lbl_1_bss_4[0] += HuPadTrigL[0] / 2; + lbl_1_bss_4[0] -= HuPadTrigR[0] / 2; + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + OSReport("%f,%f,%f\n", lbl_1_bss_24[0].x, lbl_1_bss_24[0].y, lbl_1_bss_24[0].z); + OSReport("%f,%f,%f\n", lbl_1_bss_C[0].x, lbl_1_bss_C[0].y, lbl_1_bss_C[0].z); + OSReport("%f\n", lbl_1_bss_4[0]); + } + if (lbl_1_bss_4[0] < 100.0f) { + lbl_1_bss_4[0] = 100.0f; + } + pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sind(lbl_1_bss_24[0].y) * cosd(lbl_1_bss_24[0].x))); + pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sind(lbl_1_bss_24[0].x))); + pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cosd(lbl_1_bss_24[0].y) * cosd(lbl_1_bss_24[0].x)))); + offset.x = lbl_1_bss_C[0].x - pos.x; + offset.y = lbl_1_bss_C[0].y - pos.y; + offset.z = lbl_1_bss_C[0].z - pos.z; + dir.x = (sind(lbl_1_bss_24[0].y) * sind(lbl_1_bss_24[0].x)); + dir.y = cosd(lbl_1_bss_24[0].x); + dir.z = (cosd(lbl_1_bss_24[0].y) * sind(lbl_1_bss_24[0].x)); + z_rot = lbl_1_bss_24[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) * cos((M_PI * z_rot) / 180.0)) - + dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0)) - + (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0)) - + dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0))); + 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)); - PSVECCrossProduct(&dir, &offset, &offset); - PSVECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_C[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_C[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_C[0].z += 0.05f * (offset.z * stick_pos); - } - PSVECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - lbl_1_bss_C[0].x += 0.05f * (offset.x * stick_pos); - lbl_1_bss_C[0].y += 0.05f * (offset.y * stick_pos); - lbl_1_bss_C[0].z += 0.05f * (offset.z * stick_pos); - } + 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) { + lbl_1_bss_C[0].x += 0.05f * (offset.x * stick_pos); + lbl_1_bss_C[0].y += 0.05f * (offset.y * stick_pos); + lbl_1_bss_C[0].z += 0.05f * (offset.z * stick_pos); + } + VECNormalize(&y_offset, &offset); + stick_pos = -(HuPadSubStkY[0] & 0xF8); + if (stick_pos != 0) { + lbl_1_bss_C[0].x += 0.05f * (offset.x * stick_pos); + lbl_1_bss_C[0].y += 0.05f * (offset.y * stick_pos); + lbl_1_bss_C[0].z += 0.05f * (offset.z * stick_pos); + } } void fn_1_1B6C(void) { - Vec delta_vec; - float delta_zoom; - if(lbl_1_bss_70[0]) { - return; - } - VECSubtract(&lbl_1_bss_64, &lbl_1_bss_24[0], &delta_vec); - if(VECMag(&delta_vec) > 0.2) { - VECScale(&delta_vec, &delta_vec, 0.05f); - VECAdd(&lbl_1_bss_24[0], &delta_vec, &lbl_1_bss_24[0]); - } else { - lbl_1_bss_24[0] = lbl_1_bss_64; - } - VECSubtract(&lbl_1_bss_58, &lbl_1_bss_C[0], &delta_vec); - if(VECMag(&delta_vec) > 0.2) { - VECScale(&delta_vec, &delta_vec, 0.05f); - VECAdd(&lbl_1_bss_C[0], &delta_vec, &lbl_1_bss_C[0]); - } else { - lbl_1_bss_C[0] = lbl_1_bss_58; - } - delta_zoom = lbl_1_bss_54-lbl_1_bss_4[0]; - if(sqrtf(delta_zoom*delta_zoom) > 0.2) { - delta_zoom *= 0.05f; - lbl_1_bss_4[0] += delta_zoom; - } else { - lbl_1_bss_4[0] = lbl_1_bss_54; - } + Vec delta_vec; + float delta_zoom; + if (lbl_1_bss_70[0]) { + return; + } + VECSubtract(&lbl_1_bss_64, &lbl_1_bss_24[0], &delta_vec); + if (VECMag(&delta_vec) > 0.2) { + VECScale(&delta_vec, &delta_vec, 0.05f); + VECAdd(&lbl_1_bss_24[0], &delta_vec, &lbl_1_bss_24[0]); + } + else { + lbl_1_bss_24[0] = lbl_1_bss_64; + } + VECSubtract(&lbl_1_bss_58, &lbl_1_bss_C[0], &delta_vec); + if (VECMag(&delta_vec) > 0.2) { + VECScale(&delta_vec, &delta_vec, 0.05f); + VECAdd(&lbl_1_bss_C[0], &delta_vec, &lbl_1_bss_C[0]); + } + else { + lbl_1_bss_C[0] = lbl_1_bss_58; + } + delta_zoom = lbl_1_bss_54 - lbl_1_bss_4[0]; + if (sqrtf(delta_zoom * delta_zoom) > 0.2) { + delta_zoom *= 0.05f; + lbl_1_bss_4[0] += delta_zoom; + } + else { + lbl_1_bss_4[0] = lbl_1_bss_54; + } } void fn_1_1E30(s16 view) { - lbl_1_bss_64 = lbl_1_data_0[view].rot; - lbl_1_bss_58 = lbl_1_data_0[view].pos; - lbl_1_bss_54 = lbl_1_data_0[view].zoom; + lbl_1_bss_64 = lbl_1_data_0[view].rot; + lbl_1_bss_58 = lbl_1_data_0[view].pos; + lbl_1_bss_54 = lbl_1_data_0[view].zoom; } void fn_1_1EC0(s16 view) { - s16 i; - lbl_1_bss_24[0] = lbl_1_data_0[view].rot; - lbl_1_bss_64 = lbl_1_bss_24[0]; - lbl_1_bss_C[0] = lbl_1_data_0[view].pos; - lbl_1_bss_58 = lbl_1_bss_C[0]; - lbl_1_bss_54 = lbl_1_bss_4[0] = lbl_1_data_0[view].zoom; - fn_1_B8C(NULL); + s16 i; + lbl_1_bss_24[0] = lbl_1_data_0[view].rot; + lbl_1_bss_64 = lbl_1_bss_24[0]; + lbl_1_bss_C[0] = lbl_1_data_0[view].pos; + lbl_1_bss_58 = lbl_1_bss_C[0]; + lbl_1_bss_54 = lbl_1_bss_4[0] = lbl_1_data_0[view].zoom; + fn_1_B8C(NULL); } float fn_1_2368(void) { - float delta_zoom = lbl_1_bss_54-lbl_1_bss_4[0]; - return sqrtf(delta_zoom*delta_zoom); + float delta_zoom = lbl_1_bss_54 - lbl_1_bss_4[0]; + return sqrtf(delta_zoom * delta_zoom); } diff --git a/src/REL/modeseldll/modesel.c b/src/REL/modeseldll/modesel.c index e0d6b53d..ff96fbbc 100644 --- a/src/REL/modeseldll/modesel.c +++ b/src/REL/modeseldll/modesel.c @@ -1,261 +1,251 @@ -#define HUWIN_USE_OLD_DEFS -#include "game/object.h" -#include "game/gamework_data.h" #include "game/audio.h" -#include "game/wipe.h" -#include "game/window.h" -#include "game/object.h" -#include "game/process.h" -#include "game/hsfman.h" -#include "game/pad.h" +#include "game/gamework_data.h" #include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/window.h" +#include "game/wipe.h" -#include "ext_math.h" #include "REL/modeseldll.h" +#include "ext_math.h" -s16 lbl_1_data_80[] = { - 16, 17, 18, - 19, 20, 21 -}; +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/thpmain.h" +#endif -s32 lbl_1_data_8C[] = { - 0x630030, - 0x630032, - 0x630034, - 0x630036, - 0x630038, - 0x63003A -}; +s16 lbl_1_data_80[] = { 16, 17, 18, 19, 20, 21 }; -s32 lbl_1_data_A4[] = { - 0x630031, - 0x630033, - 0x630035, - 0x630037, - 0x630039, - 0x63003B -}; +s32 lbl_1_data_8C[] = { DATA_MAKE_NUM(DATADIR_MODESEL, 0x30), DATA_MAKE_NUM(DATADIR_MODESEL, 0x32), DATA_MAKE_NUM(DATADIR_MODESEL, 0x34), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x36), DATA_MAKE_NUM(DATADIR_MODESEL, 0x38), DATA_MAKE_NUM(DATADIR_MODESEL, 0x3A) }; -u32 lbl_1_data_BC[] = { - 0x110001, - 0x110002, - 0x110003, - 0x110004, - 0x110005, - 0x110006 -}; +s32 lbl_1_data_A4[] = { DATA_MAKE_NUM(DATADIR_MODESEL, 0x31), DATA_MAKE_NUM(DATADIR_MODESEL, 0x33), DATA_MAKE_NUM(DATADIR_MODESEL, 0x35), + DATA_MAKE_NUM(DATADIR_MODESEL, 0x37), DATA_MAKE_NUM(DATADIR_MODESEL, 0x39), DATA_MAKE_NUM(DATADIR_MODESEL, 0x3B) }; + +u32 lbl_1_data_BC[] = { MAKE_MESSID(17, 1), MAKE_MESSID(17, 2), MAKE_MESSID(17, 3), MAKE_MESSID(17, 4), MAKE_MESSID(17, 5), MAKE_MESSID(17, 6) }; s16 lbl_1_bss_82; s16 lbl_1_bss_80; void fn_1_3668(void); -//Scratch is at https://decomp.me/scratch/iirXp -//Register allocation issues at line 180 with load of 1.0 double constant +// Scratch is at https://decomp.me/scratch/iirXp +// Register allocation issues at line 180 with load of 1.0 double constant s32 fn_1_2490(void) { - float sp10[2]; - float sp8[2]; - float temp_f31; - float temp_f30; - s16 temp_r31; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s32 temp_r25; - WindowData *temp_r24; - AnimData *temp_r23; - AnimData *temp_r22; - s16 temp_r21; - fn_1_3668(); - fn_1_1EC0(1); - temp_r25 = HuAudFXPlay(2094); - if(omovlevtno) { - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - } - for(temp_r31=0; temp_r31<=20; temp_r31++) { - temp_f31 = 1.0-sind(90.0*(temp_r31/20.0)); - Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -50.0f+(200.0f*temp_f31), 0); - Hu3DModelPosSet(lbl_1_bss_19A[15], 0, -50.0f+(200.0f*temp_f31), 0); - HuPrcVSleep(); - } - HuPrcSleep(20); - Hu3DModelAttrReset(lbl_1_bss_19A[14], 0x40000002); - Hu3DModelAttrReset(lbl_1_bss_19A[15], 0x40000002); - HuAudFXPlay(2093); - HuPrcSleep(120); - HuAudFXPlay(2095); - for(temp_r31=0; temp_r31<=30; temp_r31++) { - temp_f31 = temp_r31/30.0; - Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -50.0f-(20.0f*temp_f31), 0); - HuPrcVSleep(); - } - HuWinMesMaxSizeBetGet(sp10, 0x110000, 0x110006); - lbl_1_bss_82 = HuWinExCreateStyled(-10000, 432-sp10[1], sp10[0], sp10[1], -1, 0); - HuWinMesSpeedSet(lbl_1_bss_82, 0); - temp_r24 = &winData[lbl_1_bss_82]; - temp_r24->active_pad = 1; - HuWinExAnimIn(lbl_1_bss_82); - HuWinMesSet(lbl_1_bss_82, 0x110000); - HuWinMesMaxSizeGet(1, sp8, 0x1A0020); - temp_r29 = HuWinCreate(-10000, 8+(432-sp10[1]-sp8[1]), sp8[0], sp8[1], 0); - HuWinMesSpeedSet(temp_r29, 0); - HuWinBGTPLvlSet(temp_r29, 0); - HuWinMesSet(temp_r29, 0x1A0020); - HuWinDispOff(temp_r29); - while(!Hu3DMotionEndCheck(lbl_1_bss_19A[15])) { - HuPrcVSleep(); - } - Hu3DModelAttrSet(lbl_1_bss_19A[15], 1); - for(temp_r31=0; temp_r31<6; temp_r31++) { - Hu3DModelAttrReset(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0); - Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0, -50, 0); - } - HuWinMesWait(lbl_1_bss_82); - - lbl_1_bss_80 = temp_r26 = 0; - espAttrReset(lbl_1_bss_152[10], HUSPR_ATTR_DISPOFF); - espBankSet(lbl_1_bss_152[10], 0); - for(temp_r31=0; temp_r31<=10; temp_r31++) { - temp_f31 = temp_r31/10.0f; - Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0, -50, 50.0*sind(90.0f*temp_f31)); - espPosSet(lbl_1_bss_152[10], 288.0, -50.0+(106.0*sind(90.0f*temp_f31))); - HuPrcVSleep(); - } - HuWinMesSet(lbl_1_bss_82, lbl_1_data_BC[lbl_1_bss_80]); - HuWinDispOn(temp_r29); - while(1) { - temp_r30 = 0; - if(HuPadDStkRep[0] & PAD_BUTTON_LEFT) { - temp_r30 = -1; - } else if(HuPadDStkRep[0] & PAD_BUTTON_RIGHT) { - temp_r30 = 1; - } - if(temp_r30) { - if(lbl_1_bss_80+temp_r30 < 0) { - lbl_1_bss_80 = 0; - } else if(lbl_1_bss_80+temp_r30 >= 6) { - lbl_1_bss_80 = 5; - } else { - lbl_1_bss_80 += temp_r30; - } - if(temp_r26 != lbl_1_bss_80) { - HuAudFXPlay(0); - for(temp_r31=0; temp_r31<=10; temp_r31++) { - temp_f31 = temp_r31/10.0f; - Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r26]], 0, -50, 50.0*cosd(90.0f*temp_f31)); - Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0, -50, 50.0*sind(90.0f*temp_f31)); - espPosSet(lbl_1_bss_152[10], 288.0, -50.0+(106.0*(1.0-sind(180.0f*temp_f31)))); - if(temp_r31 == 5) { - espBankSet(lbl_1_bss_152[10], lbl_1_bss_80); - } - HuPrcVSleep(); - } - temp_r26 = lbl_1_bss_80; - HuWinMesSet(lbl_1_bss_82, lbl_1_data_BC[lbl_1_bss_80]); - } - } - if(HuPadBtnDown[0] & PAD_BUTTON_A) { - HuAudFXPlay(2); - break; - } else if(HuPadBtnDown[0] & PAD_BUTTON_B) { - HuAudFXPlay(3); - HuAudFXStop(temp_r25); - return -1; - } else { - HuPrcVSleep(); - continue; - } - } - Hu3DModelAttrReset(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0x40000002); - HuAudSeqAllFadeOut(1000); - for(temp_r31=0; temp_r31<=20; temp_r31++) { - temp_f31 = temp_r31/20.0f; - for(temp_r28=0; temp_r28<6; temp_r28++) { - if(temp_r28 != lbl_1_bss_80) { - Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r28]], 0, -50-(300.0*(1.0-cosd(90.0f*temp_f31))), 0); - espPosSet(lbl_1_bss_152[10], 288.0, -50.0+(106.0*(cosd(90.0f*temp_f31)))); - } - } - HuPrcVSleep(); - } - HuWinKill(temp_r29); - HuWinExAnimOut(lbl_1_bss_82); - HuAudFXStop(temp_r25); - temp_r27 = HuSprGrpCreate(1); - temp_r21 = HuTHPSprCreateVol("movie/opmov_c00.thp", 0, 3000, 90.0); - HuSprGrpMemberSet(temp_r27, 0, temp_r21); - HuSprPosSet(temp_r27, 0, 288.0f, 240.0f); - HuSprDrawNoSet(temp_r27, 0, 127); - HuPrcSleep(2); - espAttrSet(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); - for(temp_r31=0; temp_r31<=10; temp_r31++) { - temp_f31 = temp_r31/10.0; - Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -70.0f-(100.0f*temp_f31), 0); - HuPrcVSleep(); - } - temp_r23 = HuSprAnimRead(HuDataReadNum(lbl_1_data_8C[lbl_1_bss_80], MEMORY_DEFAULT_NUM)); - temp_r22 = HuSprAnimRead(HuDataReadNum(lbl_1_data_A4[lbl_1_bss_80], MEMORY_DEFAULT_NUM)); - Hu3DAnimCreate(temp_r23, lbl_1_bss_19A[22], "ys002_a1"); - Hu3DAnimCreate(temp_r22, lbl_1_bss_19A[22], "ys002_a2"); - Hu3DModelAttrSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 1); - Hu3DMotionTimeSet(lbl_1_bss_19A[22], 0); - Hu3DModelAttrReset(lbl_1_bss_19A[22], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[22], 0x40000002); - Hu3DModelPosSet(lbl_1_bss_19A[22], 0, 27, 50); - Hu3DModelScaleSet(lbl_1_bss_19A[22], 1.0f, 1.063f, 1.0f); - for(temp_r31=1; temp_r31<=20; temp_r31++) { - temp_f31 = temp_r31/20.0; - Hu3DModelPosSet(lbl_1_bss_19A[22], 0, 27.0-(60.0*sind(90.0f*temp_f31)), 50); - HuPrcVSleep(); - } - HuPrcSleep(90); - Hu3DFogSet(3000, 8000, 255, 255, 255); - Hu3DModelAttrReset(lbl_1_bss_19A[22], 0x40000002); - HuPrcSleep(60); - temp_f31 =0; - temp_f30 = 5; - while(!HuTHPEndCheck()) { - Hu3DModelPosSet(lbl_1_bss_19A[22], 0, -33.0f+(temp_f31/30.0f), 50.0f-temp_f31); - temp_f31 += temp_f30; - temp_f30 += 5.0f; - HuPrcVSleep(); - } - _ClearFlag(FLAG_ID_MAKE(1, 11)); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuTHPClose(); - HuSprGrpKill(temp_r27); - return lbl_1_bss_80; + float sp10[2]; + float sp8[2]; + float temp_f31; + float temp_f30; + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s32 temp_r25; + WindowData *temp_r24; + AnimData *temp_r23; + AnimData *temp_r22; + s16 temp_r21; + fn_1_3668(); + fn_1_1EC0(1); + temp_r25 = HuAudFXPlay(2094); + if (omovlevtno) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + } + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + temp_f31 = 1.0 - sind(90.0 * (temp_r31 / 20.0)); + Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -50.0f + (200.0f * temp_f31), 0); + Hu3DModelPosSet(lbl_1_bss_19A[15], 0, -50.0f + (200.0f * temp_f31), 0); + HuPrcVSleep(); + } + HuPrcSleep(20); + Hu3DModelAttrReset(lbl_1_bss_19A[14], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_19A[15], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(2093); + HuPrcSleep(120); + HuAudFXPlay(2095); + for (temp_r31 = 0; temp_r31 <= 30; temp_r31++) { + temp_f31 = temp_r31 / 30.0; + Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -50.0f - (20.0f * temp_f31), 0); + HuPrcVSleep(); + } + HuWinMesMaxSizeBetGet(sp10, MAKE_MESSID(0x11, 0x00), MAKE_MESSID(0x11, 0x06)); + lbl_1_bss_82 = HuWinExCreateStyled(-10000, 432 - sp10[1], sp10[0], sp10[1], -1, 0); + HuWinMesSpeedSet(lbl_1_bss_82, 0); + temp_r24 = &winData[lbl_1_bss_82]; + temp_r24->active_pad = 1; + HuWinExAnimIn(lbl_1_bss_82); + HuWinMesSet(lbl_1_bss_82, MAKE_MESSID(0x11, 0x00)); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x1A, 0x20)); + temp_r29 = HuWinCreate(-10000, 8 + (432 - sp10[1] - sp8[1]), sp8[0], sp8[1], 0); + HuWinMesSpeedSet(temp_r29, 0); + HuWinBGTPLvlSet(temp_r29, 0); + HuWinMesSet(temp_r29, MAKE_MESSID(0x1A, 0x20)); + HuWinDispOff(temp_r29); + while (!Hu3DMotionEndCheck(lbl_1_bss_19A[15])) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_19A[15], HU3D_ATTR_DISPOFF); + for (temp_r31 = 0; temp_r31 < 6; temp_r31++) { + Hu3DModelAttrReset(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0); + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0, -50, 0); + } + HuWinMesWait(lbl_1_bss_82); + + temp_r26 = lbl_1_bss_80 = 0; + espAttrReset(lbl_1_bss_152[10], HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_bss_152[10], 0); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = temp_r31 / 10.0f; + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0, -50, 50.0 * sind(90.0f * temp_f31)); + espPosSet(lbl_1_bss_152[10], 288.0, -50.0 + (106.0 * sind(90.0f * temp_f31))); + HuPrcVSleep(); + } + HuWinMesSet(lbl_1_bss_82, lbl_1_data_BC[lbl_1_bss_80]); + HuWinDispOn(temp_r29); + while (1) { + temp_r30 = 0; + if (HuPadDStkRep[0] & PAD_BUTTON_LEFT) { + temp_r30 = -1; + } + else if (HuPadDStkRep[0] & PAD_BUTTON_RIGHT) { + temp_r30 = 1; + } + if (temp_r30) { + if (lbl_1_bss_80 + temp_r30 < 0) { + lbl_1_bss_80 = 0; + } + else if (lbl_1_bss_80 + temp_r30 >= 6) { + lbl_1_bss_80 = 5; + } + else { + lbl_1_bss_80 += temp_r30; + } + if (temp_r26 != lbl_1_bss_80) { + HuAudFXPlay(0); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = temp_r31 / 10.0f; + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r26]], 0, -50, 50.0 * cosd(90.0f * temp_f31)); + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0, -50, 50.0 * sind(90.0f * temp_f31)); + espPosSet(lbl_1_bss_152[10], 288.0, -50.0 + (106.0 * (1.0 - sind(180.0f * temp_f31)))); + if (temp_r31 == 5) { + espBankSet(lbl_1_bss_152[10], lbl_1_bss_80); + } + HuPrcVSleep(); + } + temp_r26 = lbl_1_bss_80; + HuWinMesSet(lbl_1_bss_82, lbl_1_data_BC[lbl_1_bss_80]); + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + HuAudFXStop(temp_r25); + return -1; + } + else { + HuPrcVSleep(); + continue; + } + } + Hu3DModelAttrReset(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], HU3D_MOTATTR_PAUSE); + HuAudSeqAllFadeOut(1000); + for (temp_r31 = 0; temp_r31 <= 20; temp_r31++) { + temp_f31 = temp_r31 / 20.0f; + for (temp_r28 = 0; temp_r28 < 6; temp_r28++) { + if (temp_r28 != lbl_1_bss_80) { + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r28]], 0, -50 - (300.0 * (1.0 - cosd(90.0f * temp_f31))), 0); + espPosSet(lbl_1_bss_152[10], 288.0, -50.0 + (106.0 * (cosd(90.0f * temp_f31)))); + } + } + HuPrcVSleep(); + } + HuWinKill(temp_r29); + HuWinExAnimOut(lbl_1_bss_82); + HuAudFXStop(temp_r25); + temp_r27 = HuSprGrpCreate(1); + temp_r21 = HuTHPSprCreateVol("movie/opmov_c00.thp", 0, 3000, 90.0); + HuSprGrpMemberSet(temp_r27, 0, temp_r21); + HuSprPosSet(temp_r27, 0, 288.0f, 240.0f); + HuSprDrawNoSet(temp_r27, 0, 127); + HuPrcSleep(2); + espAttrSet(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); + for (temp_r31 = 0; temp_r31 <= 10; temp_r31++) { + temp_f31 = temp_r31 / 10.0; + Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -70.0f - (100.0f * temp_f31), 0); + HuPrcVSleep(); + } + temp_r23 = HuSprAnimRead(HuDataReadNum(lbl_1_data_8C[lbl_1_bss_80], MEMORY_DEFAULT_NUM)); + temp_r22 = HuSprAnimRead(HuDataReadNum(lbl_1_data_A4[lbl_1_bss_80], MEMORY_DEFAULT_NUM)); + Hu3DAnimCreate(temp_r23, lbl_1_bss_19A[22], "ys002_a1"); + Hu3DAnimCreate(temp_r22, lbl_1_bss_19A[22], "ys002_a2"); + Hu3DModelAttrSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_19A[22], 0); + Hu3DModelAttrReset(lbl_1_bss_19A[22], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[22], HU3D_MOTATTR_PAUSE); + Hu3DModelPosSet(lbl_1_bss_19A[22], 0, 27, 50); + Hu3DModelScaleSet(lbl_1_bss_19A[22], 1.0f, 1.063f, 1.0f); + for (temp_r31 = 1; temp_r31 <= 20; temp_r31++) { + temp_f31 = temp_r31 / 20.0; + Hu3DModelPosSet(lbl_1_bss_19A[22], 0, 27.0 - (60.0 * sind(90.0f * temp_f31)), 50); + HuPrcVSleep(); + } + HuPrcSleep(90); + Hu3DFogSet(3000, 8000, 255, 255, 255); + Hu3DModelAttrReset(lbl_1_bss_19A[22], HU3D_MOTATTR_PAUSE); + HuPrcSleep(60); + temp_f31 = 0; + temp_f30 = 5; + while (!HuTHPEndCheck()) { + Hu3DModelPosSet(lbl_1_bss_19A[22], 0, -33.0f + (temp_f31 / 30.0f), 50.0f - temp_f31); + temp_f31 += temp_f30; + temp_f30 += 5.0f; + HuPrcVSleep(); + } + _ClearFlag(FLAG_ID_MAKE(1, 11)); + WipeColorSet(255, 255, 255); + #if VERSION_PAL + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + #else + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + #endif + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuSprGrpKill(temp_r27); + return lbl_1_bss_80; } void fn_1_3668(void) { - Vec sp20; - Vec sp14; - Vec sp8; - Hu3DShadowCreate(20, 100, 5000); - Hu3DShadowTPLvlSet(0.3f); - Hu3DShadowSizeSet(192); - sp14.x = sp14.y = sp14.z = 0; - sp20.x = 0; - sp20.z = 300; - sp20.y = 400; - sp8.x = 0; - sp8.y = 1; - sp8.z = 0; - Hu3DShadowPosSet(&sp20, &sp8, &sp14); - Hu3DModelAttrReset(lbl_1_bss_19A[15], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[15], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_19A[15], 0); - Hu3DModelAttrReset(lbl_1_bss_19A[14], 1); - Hu3DModelAttrSet(lbl_1_bss_19A[14], 0x40000002); - Hu3DMotionTimeSet(lbl_1_bss_19A[14], 0); -} \ No newline at end of file + Vec sp20; + Vec sp14; + Vec sp8; + Hu3DShadowCreate(20, 100, 5000); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowSizeSet(192); + sp14.x = sp14.y = sp14.z = 0; + sp20.x = 0; + sp20.z = 300; + sp20.y = 400; + sp8.x = 0; + sp8.y = 1; + sp8.z = 0; + Hu3DShadowPosSet(&sp20, &sp8, &sp14); + Hu3DModelAttrReset(lbl_1_bss_19A[15], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[15], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_19A[15], 0); + Hu3DModelAttrReset(lbl_1_bss_19A[14], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_19A[14], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(lbl_1_bss_19A[14], 0); +} diff --git a/src/REL/mpexDll/charsel.c b/src/REL/mpexDll/charsel.c new file mode 100644 index 00000000..0c5cac29 --- /dev/null +++ b/src/REL/mpexDll/charsel.c @@ -0,0 +1,3107 @@ +#include "ext_math.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/mpexDll.h" + +typedef void (*MpexDllUnkFunc2)(omObjData *, ...); + +typedef struct MpexDllUnkStruct4 { + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ MpexDllUnkFunc2 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ char pad_18[0x10]; /* maybe part of unk_14[5]? */ + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ char pad_38[0x10]; /* maybe part of unk_34[5]? */ + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; +} MpexDllUnkStruct4; /* size = 0x60 */ + +void fn_1_1490C(void); +void fn_1_14B28(void); +void fn_1_14E54(void); +void fn_1_14EF0(void); +void fn_1_151C8(void); +void fn_1_154A4(void); +void fn_1_15774(void); +void fn_1_157C4(void); +void fn_1_15D48(void); +void fn_1_16320(void); +void fn_1_16600(s32 arg0); +void fn_1_16874(s32); +void fn_1_168F0(s32 arg0, s32 arg1); +void fn_1_16D3C(s32 arg0); +void fn_1_17170(s32); +void fn_1_17374(void); +void fn_1_17B04(omObjData *arg0, MpexDllUnkStruct4 *arg1); +void fn_1_18610(MpexDllUnkStruct4 *arg0); +void fn_1_18D30(MpexDllUnkStruct4 *arg0); +void fn_1_18DCC(omObjData *arg0, MpexDllUnkStruct4 *arg1); +s32 fn_1_19A98(MpexDllUnkStruct4 *arg0); +void fn_1_1A3BC(void); +void fn_1_1A5A4(s32 arg0); +void fn_1_1AEFC(s32); +void fn_1_1AF78(s32 arg0); +void fn_1_1B0DC(s32); +void fn_1_1B294(void); +void fn_1_1B338(void); +s32 fn_1_1B42C(s32 arg0); +s32 fn_1_1B4AC(s32 arg0); +float fn_1_1B52C(float, float, float, float); // seems implicit in main.c +float fn_1_1B554(float, float, float); // seems implicit in main.c +float fn_1_1B574(float, float, float, float); // seems implicit in main.c +float fn_1_1B64C(float, float, float, float); // seems implcit in main.c +void fn_1_1B834(void); +void fn_1_1B9F4(void); +void fn_1_1BA78(u32 arg0, s32 arg1, s32 arg2); +void fn_1_1BB4C(u32 arg0, s32 arg1); +void fn_1_1BF1C(u32 arg0); +void fn_1_1C120(void); +void fn_1_1C174(void); +void fn_1_1C478(void); +void fn_1_1C77C(void); +void fn_1_1CABC(s32 arg0); + +u8 lbl_1_bss_6AC; +s32 lbl_1_bss_63C[0x1C]; +MpexDllUnkStruct4 lbl_1_bss_5DC; +MpexDllUnkStruct4 lbl_1_bss_45C[4]; +s32 lbl_1_bss_448[5]; +s32 lbl_1_bss_444; +Process *lbl_1_bss_440; + +void fn_1_1264C(Process *arg0) +{ + s32 var_r31; + + lbl_1_bss_440 = arg0; + fn_1_1490C(); + fn_1_16320(); + fn_1_1A3BC(); + HuPrcChildCreate(fn_1_1B294, 0x3E8, 0x2000, 0, lbl_1_bss_440); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_1B338, 0x3E8, 0x2000, 0, lbl_1_bss_440); + } +} + +s32 fn_1_126EC(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r29 = -1; + fn_1_14EF0(); + fn_1_1B834(); + fn_1_1BA78(0x1A0005, -1, -1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330091); + lbl_1_bss_5DC.unk_04 = (MpexDllUnkFunc2)fn_1_157C4; + var_r29 = -1; + while (TRUE) { + fn_1_1B7D0(1); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_14 == 0) { + var_r30++; + } + } + if (var_r29 != var_r30) { + var_r29 = var_r30; + fn_1_1BA78(var_r30 + 0x1A001B, -1, 1); + } + if (lbl_1_bss_5DC.unk_28 != 0) { + continue; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + var_r28 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r28 = 0; + break; + } + } + fn_1_15774(); + lbl_1_bss_5DC.unk_04 = NULL; + fn_1_1C120(); + if (var_r28 == 1) { + var_r27 = 0; + var_r26 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r27++; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r26 < var_r27) { + if (HuPadStatGet(var_r31) != -1) { + lbl_1_bss_45C[var_r31].unk_50 = 0; + var_r26++; + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + } + fn_1_1B9F4(); + fn_1_154A4(); + return var_r28; +} + +s32 fn_1_12910(s32 arg0, s32 arg1) +{ + s32 sp10; + s32 spC; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + + sp10 = 0; + spC = 0; + var_r30 = 0; + if (arg1 == 1) { + var_r30 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + else { + var_r30 = 4; + } + fn_1_17374(); + if (arg0 == 0) { + fn_1_16D3C(0); + } + fn_1_1B834(); + fn_1_1B7D0(1); + if (arg1 == 1) { + fn_1_1BA78(0x1E005E, -1, -1); + } + else { + fn_1_1BA78(0x1A0009, -1, -1); + } + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_17B04; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if ((lbl_1_bss_45C->unk_08 == 0) && ((*HuPadBtnDown & 0x200) != 0)) { + HuAudFXPlay(3); + if (lbl_1_bss_5DC.unk_10 == 1) { + lbl_1_bss_5DC.unk_10 = 0; + continue; + } + var_r27 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0 && lbl_1_bss_45C[var_r31].unk_08 != 1) { + break; + } + } + if (var_r31 == var_r30) { + var_r27 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r27 == 0) { + fn_1_17170(0); + return 0; + } + var_r29 = 0; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = 0; + var_r29++; + } + } + if ((var_r29 == 0) || ((arg1 == 2) && (var_r29 == 2))) { + fn_1_17170(0); + return 2; + } + if (arg1 == 2) { + lbl_1_bss_45C[1].unk_4C = 0; + } + return 1; +} + +void fn_1_12BEC(s32 arg0) +{ + fn_1_12910(arg0, 4); +} + +s32 fn_1_12C18(s32 arg0, s32 arg1) +{ + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r27 = -1; + var_r26 = -1; + var_r24 = -1; + spC = 0; + if (arg0 != 0) { + if (arg1 == 2) { + fn_1_168F0(0, 2); + } + else { + fn_1_168F0(0, 1); + } + } + fn_1_1B834(); + while (TRUE) { + fn_1_1B7D0(1); + var_r25 = 0; + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r25++; + } + } + if (var_r26 == -1) { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + else { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + var_r26 = 1; + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r30 = var_r31; + lbl_1_bss_45C[var_r31].unk_0C = var_r27; + fn_1_18610(&lbl_1_bss_45C[var_r31]); + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_18DCC; + break; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if (((HuPadBtnDown[lbl_1_bss_45C->unk_58] & 0x200) != 0) && (lbl_1_bss_45C[var_r30].unk_08 == 0) && (lbl_1_bss_5DC.unk_30 == 0)) { + HuAudFXPlay(3); + if (var_r27 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_45C[var_r30].unk_08 == 1) { + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } + lbl_1_bss_45C[var_r30].unk_04 = NULL; + fn_1_1BA78(0x1A0022, -1, 1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330093); + var_r29 = fn_1_19A98(&lbl_1_bss_45C[var_r30]); + if (var_r29 == 1) { + HuAudFXPlay(2); + lbl_1_bss_45C[var_r30].unk_10 = 1; + var_r29 = 4; + var_r27 = var_r30; + } + else { + HuAudFXPlay(3); + lbl_1_bss_45C[var_r30].unk_10 = 0; + var_r29 = 4; + lbl_1_bss_45C[var_r30].unk_08 = 0; + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + break; + } + } + if (var_r31 == arg1) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_18610(&lbl_1_bss_45C[var_r30]); + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C]); + var_r27 = lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_0C; + lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_08 = 0; + } + else if (var_r29 != 4) { + if (var_r29 == 0) { + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + } + break; + } + } + var_r24 = -1; + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r29 != 0) { + fn_1_17170(0); + } + return var_r29; +} + +void fn_1_13130(s32 arg0) +{ + fn_1_12C18(arg0, 4); +} + +void fn_1_1315C(void) +{ + fn_1_12910(0, 1); +} + +s32 fn_1_13184(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = -1; + fn_1_151C8(); + fn_1_1B834(); + fn_1_1BA78(0x1A0005, -1, -1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330091); + lbl_1_bss_5DC.unk_04 = (MpexDllUnkFunc2)fn_1_15D48; + + while (TRUE) { + fn_1_1B7D0(1); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_14 == 0) { + var_r30++; + } + } + if (var_r26 != var_r30) { + var_r26 = var_r30; + fn_1_1BA78(var_r30 + 0x330093, -1, 1); + } + if (lbl_1_bss_5DC.unk_28 != 0) { + continue; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + var_r28 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r28 = 0; + break; + } + } + fn_1_15774(); + lbl_1_bss_5DC.unk_04 = NULL; + fn_1_1C120(); + if (var_r28 == 1) { + var_r29 = 0; + var_r27 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r29++; + } + } + if (var_r29 >= 2) { + var_r29 = 2; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r27 < var_r29) { + if (HuPadStatGet(var_r31) != -1) { + lbl_1_bss_45C[var_r31].unk_50 = 0; + lbl_1_bss_45C[var_r31].unk_4C = 0; + var_r27++; + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + lbl_1_bss_45C[var_r31].unk_4C = 1; + } + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + lbl_1_bss_45C[var_r31].unk_4C = 1; + } + } + } + fn_1_1B9F4(); + fn_1_154A4(); + return var_r28; +} + +void fn_1_133F8(s32 arg0) +{ + fn_1_12910(arg0, 2); +} + +void fn_1_13424(s32 arg0) +{ + fn_1_12C18(arg0, 2); +} + +void fn_1_13450(void) +{ + fn_1_126EC(0); +} + +s32 fn_1_13474(s32 arg0) +{ + s32 spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + spC[1] = 0; + spC[0] = 0; + var_r30 = 4; + var_r28 = 4; + if (var_r28 == 1) { + var_r30 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + else { + var_r30 = 4; + } + fn_1_17374(); + if (arg0 == 0) { + fn_1_16D3C(3); + } + fn_1_1B834(); + fn_1_1B7D0(1); + fn_1_1BA78(0x1A0009, -1, -1); + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_17B04; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if ((lbl_1_bss_45C->unk_08 == 0) && (HuPadBtnDown[0] & PAD_BUTTON_B)) { + HuAudFXPlay(3); + if (lbl_1_bss_5DC.unk_10 == 1) { + lbl_1_bss_5DC.unk_10 = 0; + continue; + } + var_r27 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0 && lbl_1_bss_45C[var_r31].unk_08 != 1) { + break; + } + } + if (var_r31 == var_r30) { + var_r27 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r27 == 0) { + fn_1_17170(0); + return 0; + } + var_r29 = 0; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = 1; + var_r29++; + } + } + if ((var_r29 == 0) || ((var_r28 == 2) && (var_r29 == 2))) { + fn_1_17170(3); + return 2; + } + if (var_r28 == 2) { + lbl_1_bss_45C[1].unk_4C = 0; + } + return 1; +} + +s32 fn_1_13730(s32 arg0) +{ + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r27 = -1; + var_r26 = -1; + var_r28 = 4; + var_r24 = -1; + spC = 0; + if (arg0 != 0) { + fn_1_168F0(3, 3); + } + fn_1_1B834(); + while (TRUE) { + fn_1_1B7D0(1); + var_r25 = 0; + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r25++; + } + } + if (var_r26 == -1) { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + else { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + var_r26 = 1; + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r30 = var_r31; + lbl_1_bss_45C[var_r31].unk_0C = var_r27; + fn_1_18610(&lbl_1_bss_45C[var_r31]); + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_18DCC; + break; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if (((HuPadBtnDown[lbl_1_bss_45C->unk_58] & PAD_BUTTON_B) != 0) && (lbl_1_bss_45C[var_r30].unk_08 == 0) && (lbl_1_bss_5DC.unk_30 == 0)) { + HuAudFXPlay(3); + if (var_r27 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_45C[var_r30].unk_08 == 1) { + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + lbl_1_bss_45C[var_r31].unk_5C = 1; + } + } + lbl_1_bss_45C[var_r30].unk_04 = NULL; + fn_1_1BA78(0x1A0022, -1, 1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330093); + var_r29 = fn_1_19A98(&lbl_1_bss_45C[var_r30]); + if (var_r29 == 1) { + HuAudFXPlay(2); + lbl_1_bss_45C[var_r30].unk_10 = 1; + var_r29 = 4; + var_r27 = var_r30; + } + else { + HuAudFXPlay(3); + lbl_1_bss_45C[var_r30].unk_10 = 0; + var_r29 = 4; + lbl_1_bss_45C[var_r30].unk_08 = 0; + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + break; + } + } + if (var_r31 == var_r28) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_18610(&lbl_1_bss_45C[var_r30]); + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C]); + var_r27 = lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_0C; + lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_08 = 0; + } + else if (var_r29 != 4) { + if (var_r29 == 0) { + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + } + break; + } + var_r24 = -1; + } + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r29 != 0) { + fn_1_17170(3); + } + return var_r29; +} + +void fn_1_13C30(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayer[var_r31].team = GWPlayerCfg[var_r31].group = lbl_1_bss_45C[var_r31].unk_4C; + GWPlayer[var_r31].com = GWPlayerCfg[var_r31].iscom = lbl_1_bss_45C[var_r31].unk_50; + GWPlayer[var_r31].diff = GWPlayerCfg[var_r31].diff = lbl_1_bss_45C[var_r31].unk_54; + if (lbl_1_bss_444 != 0) { + if (lbl_1_bss_45C[var_r31].unk_5C <= 5) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C - 1; + } + else if (lbl_1_bss_45C[var_r31].unk_5C <= 0xB) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C - 3; + } + else { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = fn_1_1B4AC(lbl_1_bss_45C[var_r31].unk_5C - 4); + } + } + else if (arg0 == 1) { + if (var_r31 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = lbl_1_bss_45C[var_r31 - 1].unk_5C + 1; + if (lbl_1_bss_45C[var_r31].unk_5C >= 8) { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C; + } + else { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C; + } + GWPlayer[var_r31].port = GWPlayerCfg[var_r31].pad_idx = lbl_1_bss_45C[var_r31].unk_58; + } + OSReport("\n\n#################### SET PLAYERDATA ####################\n"); + OSReport("ID) GRP:COM:DIF:CHR:PAD\n"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + OSReport("%2d) %3d:%3d:%3d:%3d:%3d\n", var_r31, GWPlayerCfg[var_r31].group, GWPlayerCfg[var_r31].iscom, GWPlayerCfg[var_r31].diff, + GWPlayerCfg[var_r31].character, GWPlayerCfg[var_r31].pad_idx); + } + OSReport("########################################################\n"); +} + +s32 fn_1_140B0(s32 arg0, s32 arg1) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 var_r18; + + var_r30 = 0; + var_r27 = 0; + var_r26 = 0; + var_r29 = arg0; + if (arg0 == 3) { + lbl_1_bss_444 = 1; + } + else { + lbl_1_bss_444 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_4C = 0; + lbl_1_bss_45C[var_r31].unk_50 = 0; + lbl_1_bss_45C[var_r31].unk_54 = 0; + if (lbl_1_bss_444 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = var_r31 + 1; + } + else { + lbl_1_bss_45C[var_r31].unk_5C = var_r31; + } + lbl_1_bss_45C[var_r31].unk_58 = var_r31; + } + if (arg1 == 1) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_4C = GWPlayerCfg[var_r31].group; + lbl_1_bss_45C[var_r31].unk_50 = GWPlayerCfg[var_r31].iscom; + lbl_1_bss_45C[var_r31].unk_54 = GWPlayerCfg[var_r31].diff; + lbl_1_bss_45C[var_r31].unk_5C = GWPlayerCfg[var_r31].character; + lbl_1_bss_45C[var_r31].unk_58 = GWPlayerCfg[var_r31].pad_idx; + lbl_1_bss_45C[var_r31].unk_08 = lbl_1_bss_45C[var_r31].unk_0C = lbl_1_bss_45C[var_r31].unk_10 = lbl_1_bss_45C[var_r31].unk_14 = 0; + lbl_1_bss_45C[var_r31].unk_28 = lbl_1_bss_45C[var_r31].unk_2C = lbl_1_bss_45C[var_r31].unk_30 = lbl_1_bss_45C[var_r31].unk_34 = 0; + + switch (arg0) { + case 0: + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_08 = 1; + } + else { + var_r27 = 1; + } + break; + case 2: + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_08 = 1; + var_r26++; + } + else { + var_r27 = 1; + } + break; + case 3: + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_08 = 1; + var_r26++; + } + else { + var_r27 = 1; + } + if (lbl_1_bss_45C[var_r31].unk_5C <= 3) { + lbl_1_bss_45C[var_r31].unk_5C += 1; + } + else if (lbl_1_bss_45C[var_r31].unk_5C <= 7) { + lbl_1_bss_45C[var_r31].unk_5C += 3; + } + else { + lbl_1_bss_45C[var_r31].unk_5C = fn_1_1B42C(lbl_1_bss_45C[var_r31].unk_5C) + 4; + } + break; + } + } + switch (arg0) { + case 0: + if (var_r27 == 1) { + var_r29 = 0x66; + var_r30 = 1; + } + else { + var_r29 = 0x65; + var_r30 = 0; + } + break; + case 1: + var_r29 = 0xC8; + break; + case 2: + if ((var_r27 == 1) && (var_r26 == 1)) { + var_r29 = 0x12E; + var_r30 = 1; + } + else { + var_r29 = 0x12D; + var_r30 = 0; + } + break; + case 3: + if (var_r27 == 1) { + var_r29 = 0x192; + var_r30 = 1; + } + else { + var_r29 = 0x191; + var_r30 = 0; + } + break; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if (var_r28 == 0x3E7) { + break; + } + switch (var_r29) { + case 0x0: + var_r29 = 0x64; + break; + case 0x1: + var_r29 = 0xC8; + break; + case 0x2: + var_r29 = 0x12C; + break; + case 0x3: + var_r29 = 0x190; + break; + case 0x64: + var_r28 = fn_1_126EC(var_r30); + if (var_r28 != 0) { + var_r29 = 0x65; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x65: + var_r23 = fn_1_12910(var_r30, 4); + var_r28 = var_r23; + if (var_r28 == 1) { + var_r29 = 0x66; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x64; + var_r30 = 1; + } + break; + case 0x66: + var_r22 = fn_1_12C18(var_r30, 4); + var_r28 = var_r22; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x65; + var_r30 = 1; + } + break; + case 0xC8: + var_r21 = fn_1_12910(0, 1); + var_r28 = var_r21; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x12C: + var_r28 = fn_1_13184(); + if (var_r28 != 0) { + var_r29 = 0x12D; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x12D: + var_r20 = fn_1_12910(var_r30, 2); + var_r28 = var_r20; + if (var_r28 == 1) { + var_r29 = 0x12E; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x12C; + var_r30 = 1; + } + break; + case 0x12E: + var_r19 = fn_1_12C18(var_r30, 2); + var_r28 = var_r19; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x12D; + var_r30 = 1; + } + break; + case 0x190: + var_r18 = fn_1_126EC(0); + var_r28 = var_r18; + if (var_r28 != 0) { + var_r29 = 0x191; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x191: + var_r28 = fn_1_13474(var_r30); + if (var_r28 == 1) { + var_r29 = 0x192; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x190; + var_r30 = 1; + } + break; + case 0x192: + var_r28 = fn_1_13730(var_r30); + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x191; + var_r30 = 1; + } + break; + case 0x384: + fn_1_13C30(arg0); + var_r24 = 1; + var_r28 = 0x3E7; + break; + case 0x385: + var_r24 = 0; + var_r28 = 0x3E7; + break; + } + } + return var_r24; +} + +void fn_1_148BC(s32 arg0) +{ + fn_1_1AF78(arg0); +} + +void fn_1_148E4(s32 arg0) +{ + fn_1_1B0DC(arg0); +} + +s32 lbl_1_data_5C4[4][2] = { { -0x69, 0 }, { -0x23, 0 }, { 0x23, 0 }, { 0x69, 0 } }; +s32 lbl_1_data_5E4[8][2] = { + { -0x7B, -0x34 }, + { -0x29, -0x34 }, + { 0x29, -0x34 }, + { 0x7B, -0x34 }, + { -0x7B, 0x34 }, + { -0x29, 0x34 }, + { 0x29, 0x34 }, + { 0x7B, 0x34 }, +}; +s32 lbl_1_data_624[0xE][2] = { + { -0x7B, -0x66 }, + { -0x29, -0x66 }, + { 0x29, -0x66 }, + { 0x7B, -0x66 }, + { -0x7B, 0 }, + { -0x29, 0 }, + { 0x29, 0 }, + { 0x7B, 0 }, + { -0xCD, 0x66 }, + { -0x7B, 0x66 }, + { -0x29, 0x66 }, + { 0x29, 0x66 }, + { 0x7B, 0x66 }, + { 0xCD, 0x66 }, +}; +s32 lbl_1_data_694[0x12][2] = { + { 0, 0 }, + { -0x7B, -0x66 }, + { -0x29, -0x66 }, + { 0x29, -0x66 }, + { 0x7B, -0x66 }, + { 0, 0 }, + { 0, 0 }, + { -0x7B, 0 }, + { -0x29, 0 }, + { 0x29, 0 }, + { 0x7B, 0 }, + { 0, 0 }, + { -0xCD, 0x66 }, + { -0x7B, 0x66 }, + { -0x29, 0x66 }, + { 0x29, 0x66 }, + { 0x7B, 0x66 }, + { 0xCD, 0x66 }, +}; +s32 lbl_1_data_724[4][2] = { { -0x45, -8 }, { -0x17, -8 }, { 0x17, -8 }, { 0x45, -8 } }; +s32 lbl_1_data_744[2] = { 0x00, 0xFFFFFFF8 }; +s32 lbl_1_data_74C[2][2] = { { -0x17, -8 }, { 0x17, -8 } }; +s32 lbl_1_data_75C[4][2] = { { -0x59, -8 }, { -0x2B, -8 }, { 0x2B, -8 }, { 0x59, -8 } }; +s32 lbl_1_data_77C = -1; +s32 lbl_1_data_780[2] = {-1, 0}; + +void fn_1_1490C(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + + var_r30 = HuSprGrpCreate(0xB); + *lbl_1_bss_63C = var_r30; + var_r29 = HuSprCreate(HuSprAnimReadFile(0x640046), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r29); + HuSprPosSet(var_r30, 0, 0.0f, 0.0f); + var_r28 = HuSprAnimReadFile(0x640047); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29 = HuSprCreate(var_r28, 0x3E8, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 1, var_r29); + HuSprBankSet(var_r30, var_r31 + 1, var_r31); + } + var_r28 = HuSprAnimReadFile(0x640048); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(var_r28, 0x76C, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 3, var_r29); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + fn_1_14B28(); + fn_1_14E54(); +} + +void fn_1_14B28(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, 4); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r30, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } +} + +void fn_1_14CBC(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, 4); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4 + 1][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r30, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } +} + +void fn_1_14E54(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 288.0f, 110.0f); + HuSprGrpScaleSet(var_r30, 1.0f, 1.0f); +} + +void fn_1_14EF0(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = *lbl_1_bss_63C; + var_r29 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r29, var_r31, 4); + } + HuSprAttrReset(var_r29, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r29, var_r31 + 3, 4); + HuSprPosSet(var_r29, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r29, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r29, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } + for (var_r30 = 0; var_r30 <= 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f); + fn_1_1B7D0(0xA); +} + +void fn_1_151C8(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = *lbl_1_bss_63C; + var_r29 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r29, var_r31, 4); + } + HuSprAttrReset(var_r29, 0, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r29, var_r31 + 3, 4); + HuSprPosSet(var_r29, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4 + 1][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r29, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r29, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } + for (var_r30 = 0; var_r30 <= 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f); + fn_1_1B7D0(0xA); +} + +void fn_1_154A4(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28 = *lbl_1_bss_63C; + + fn_1_1B7D0(0xA); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, -390.0f); + var_r29 = *lbl_1_bss_63C; + for (var_r30 = 0; var_r30 < 0xB; var_r30++) { + HuSprAttrSet(var_r29, var_r30, 4); + } + HuSprGrpPosSet(var_r29, 288.0f, 110.0f); + HuSprGrpScaleSet(var_r29, 1.0f, 1.0f); +} + +void fn_1_15684(s32 arg0) +{ + s32 var_r31; + + var_r31 = *lbl_1_bss_63C; + HuSprAttrReset(var_r31, 1, 4); + HuSprAttrReset(var_r31, 2, 4); + HuSprPosSet(var_r31, 1, -155.0f, 0.0f); + HuSprPosSet(var_r31, 2, 155.0f, 0.0f); + if (arg0 == 2) { + HuSprPosSet(var_r31, 1, -80.0f, 0.0f); + HuSprPosSet(var_r31, 2, 80.0f, 0.0f); + } +} + +void fn_1_15774(void) +{ + s32 var_r31; + + var_r31 = *lbl_1_bss_63C; + HuSprAttrSet(var_r31, 1, 4); + HuSprAttrSet(var_r31, 2, 4); +} + +void fn_1_157C4(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = lbl_1_bss_63C[0]; + var_r29 = var_r28 = var_r26 = var_r24 = 0; + lbl_1_bss_5DC.unk_28 = 0; + var_r29 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r29++; + } + } + var_r28 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (HuPadStatGet(var_r31) != -1) { + var_r28++; + } + } + if (var_r28 >= 2) { + var_r25 = lbl_1_bss_63C[0]; + HuSprAttrReset(var_r25, 1, 4); + HuSprAttrReset(var_r25, 2, 4); + HuSprPosSet(var_r25, 1, -155.0f, 0.0f); + HuSprPosSet(var_r25, 2, 155.0f, 0.0f); + if (*HuPadStkX >= 5) { + var_r29++; + var_r26 = 1; + } + else if (*HuPadStkX <= -5) { + var_r29--; + var_r26 = -1; + } + } + else { + var_r23 = lbl_1_bss_63C[0]; + HuSprAttrSet(var_r23, 1, 4); + HuSprAttrSet(var_r23, 2, 4); + } + if (var_r29 < 1) { + var_r29 = var_r28; + } + else if (var_r29 > var_r28) { + if (var_r26 == 0) { + var_r29 = var_r28; + var_r24 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r24 != 0)) { + lbl_1_bss_5DC.unk_28 = 1; + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + if (var_r31 <= 5) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 5.0f); + var_f30 = fn_1_1B64C(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f31 = fn_1_1B64C(10.0f, 0.0f, var_r31 - 5, 5.0f); + var_f30 = fn_1_1B64C(0.0f, 1.0f, var_r31 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r27, 2, 3.0f + (155.0f + var_f31), 0.0f); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r27, 1, (-155.0f - var_f31) - 3.0f, 0.0f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r30 < var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 1)) { + lbl_1_bss_45C[var_r30].unk_14 = 0; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 0); + } + } + else if ((var_r30 >= var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 0)) { + lbl_1_bss_45C[var_r30].unk_14 = 1; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 1); + } + } + } + fn_1_1B7D0(1); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 < var_r29) { + lbl_1_bss_45C[var_r30].unk_50 = 0; + } + else { + lbl_1_bss_45C[var_r30].unk_50 = 1; + } + } + } + lbl_1_bss_5DC.unk_28 = 0; +} + +void fn_1_15D48(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = lbl_1_bss_63C[0]; + var_r29 = var_r28 = var_r26 = var_r24 = 0; + lbl_1_bss_5DC.unk_28 = 0; + var_r29 = 1; + for (var_r31 = 1; var_r31 < 2; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r29++; + } + } + var_r28 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (HuPadStatGet(var_r31) != -1) { + var_r28++; + } + } + if (var_r28 > 2) { + var_r28 = 2; + } + if (var_r28 >= 2) { + var_r25 = lbl_1_bss_63C[0]; + HuSprAttrReset(var_r25, 1, 4); + HuSprAttrReset(var_r25, 2, 4); + HuSprPosSet(var_r25, 1, -155.0f, 0.0f); + HuSprPosSet(var_r25, 2, 155.0f, 0.0f); + HuSprPosSet(var_r25, 1, -80.0f, 0.0f); + HuSprPosSet(var_r25, 2, 80.0f, 0.0f); + if (*HuPadStkX >= 5) { + var_r29++; + var_r26 = 1; + } + else if (*HuPadStkX <= -5) { + var_r29--; + var_r26 = -1; + } + } + else { + var_r23 = lbl_1_bss_63C[0]; + HuSprAttrSet(var_r23, 1, 4); + HuSprAttrSet(var_r23, 2, 4); + } + if (var_r29 < 1) { + var_r29 = var_r28; + } + else if (var_r29 > var_r28) { + if (var_r26 == 0) { + var_r29 = var_r28; + var_r24 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r24 != 0)) { + lbl_1_bss_5DC.unk_28 = 1; + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + if (var_r31 <= 5) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 5.0f); + var_f30 = fn_1_1B64C(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f31 = fn_1_1B64C(10.0f, 0.0f, var_r31 - 5, 5.0f); + var_f30 = fn_1_1B64C(0.0f, 1.0f, var_r31 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r27, 2, 3.0f + (77.0f + var_f31), 0.0f); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r27, 1, (-77.0f - var_f31) - 3.0f, 0.0f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r30 < var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 1)) { + lbl_1_bss_45C[var_r30].unk_14 = 0; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 0); + } + } + else if ((var_r30 >= var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 0)) { + lbl_1_bss_45C[var_r30].unk_14 = 1; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 1); + } + } + } + fn_1_1B7D0(1); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 < var_r29) { + lbl_1_bss_45C[var_r30].unk_50 = 0; + } + else { + lbl_1_bss_45C[var_r30].unk_50 = 1; + } + } + } + lbl_1_bss_5DC.unk_28 = 0; +} + +void fn_1_16320(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r27; + + var_r29 = HuSprGrpCreate(0x36); + lbl_1_bss_63C[1] = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(0x64004A), 0xBB8, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + HuSprPosSet(var_r29, 0, 0.0f, 0.0f); + var_r28 = HuSprAnimReadFile(0x64005A); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x64004C), 0x76C, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 2, var_r30); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x64005B), 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x1E, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x640060), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x22, var_r30); + } + var_r28 = HuSprAnimReadFile(0x64005F); + var_r27 = HuSprAnimReadFile(0x640064); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x26, var_r30); + var_r30 = HuSprCreate(var_r27, 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2A, var_r30); + } + var_r28 = HuSprAnimReadFile(0x640065); + var_r27 = HuSprAnimReadFile(0x640066); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2E, var_r30); + var_r30 = HuSprCreate(var_r27, 0x320, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x32, var_r30); + } + fn_1_16600(0); + fn_1_16874(0); +} + +void fn_1_16600(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_624[var_r31][0], lbl_1_data_624[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); +} + +void fn_1_16874(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); +} + +void fn_1_168F0(s32 arg0, s32 arg1) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_63C[1]; + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_624[var_r31][0], lbl_1_data_624[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); + if (arg1 == 1) { + fn_1_1C174(); + } + if (arg1 == 2) { + fn_1_1C478(); + } + if (arg1 == 3) { + fn_1_1C77C(); + } + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_1B7D0(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r28, 288.0f, 169.0f + var_f31); + } + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 189.0f); + return; + } + HuSprGrpPosSet(var_r28, 288.0f, 169.0f); +} + +void fn_1_16D3C(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_63C[1]; + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_624[var_r31][0], lbl_1_data_624[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_1B7D0(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r28, 288.0f, 169.0f + var_f31); + } + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 189.0f); + return; + } + HuSprGrpPosSet(var_r28, 288.0f, 169.0f); +} + +void fn_1_17170(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r29, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r29, 288.0f, 169.0f + var_f31); + } + } + HuSprGrpPosSet(var_r29, 288.0f, -331.0f); + var_r28 = lbl_1_bss_63C[1]; + for (var_r30 = 0; var_r30 < 0x36; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + HuSprGrpPosSet(var_r28, 288.0f, -331.0f); +} + +void fn_1_17374(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 0x1E, 0); + HuSprBankSet(var_r30, var_r31 + 0x22, 0); + HuSprBankSet(var_r30, var_r31 + 0x26, 0); + HuSprBankSet(var_r30, var_r31 + 0x2A, 0); + HuSprBankSet(var_r30, var_r31 + 0x2E, 0); + HuSprBankSet(var_r30, var_r31 + 0x32, 0); + } + if (lbl_1_bss_444 != 0) { + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + fn_1_1B7D0(1); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_bss_444 != 0) { + var_f31 = fn_1_1B64C(lbl_1_data_694[lbl_1_bss_45C[var_r29].unk_5C][0], lbl_1_data_694[var_r29 + 1][0], var_r31, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_694[lbl_1_bss_45C[var_r29].unk_5C][1], lbl_1_data_694[1][1], var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B64C(lbl_1_data_5E4[lbl_1_bss_45C[var_r29].unk_5C % 4][0], lbl_1_data_5E4[var_r29][0], var_r31, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_5E4[(lbl_1_bss_45C[var_r29].unk_5C / 4) * 4][1], lbl_1_data_5E4[0][1], var_r31, 10.0f); + } + HuSprPosSet(var_r30, var_r29 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r30, var_r29 + 0x22, var_f31, var_f30); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r30, var_r31 + 0x1E, lbl_1_data_694[var_r31 + 1][0], lbl_1_data_694[var_r31 + 1][1]); + HuSprPosSet(var_r30, var_r31 + 0x22, lbl_1_data_694[var_r31 + 1][0], lbl_1_data_694[var_r31 + 1][1]); + lbl_1_bss_45C[var_r31].unk_5C = var_r31 + 1; + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_08 = 0; + } + else { + HuSprPosSet(var_r30, var_r31 + 0x1E, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprPosSet(var_r30, var_r31 + 0x22, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_5C = var_r31; + lbl_1_bss_45C[var_r31].unk_08 = 0; + } + } +} + +void fn_1_17B04(omObjData *arg0, MpexDllUnkStruct4 *arg1) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r24 = lbl_1_bss_63C[1]; + var_r27 = 0; + var_r26 = 0; + HuSprAttrReset(var_r24, arg1->unk_48 + 0x1E, 4); + HuSprAttrReset(var_r24, arg1->unk_48 + 0x22, 4); + if (lbl_1_bss_444 != 0) { + var_r30 = arg1->unk_5C % 6; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 6; + var_r22 = var_r29; + } + else { + var_r30 = arg1->unk_5C % 4; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 4; + var_r22 = var_r29; + } + if (arg1->unk_08 == 0) { + if (HuPadBtnDown[arg1->unk_48] & PAD_BUTTON_A) { + arg1->unk_08 = 1; + if (lbl_1_bss_444 != 0) { + var_r21 = 0; + if (arg1->unk_5C <= 5) { + var_r21 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r21 = arg1->unk_5C - 3; + } + else { + var_r21 = arg1->unk_5C - 4; + } + fn_1_1CABC(var_r21); + HuSprBankSet(var_r24, var_r21 + 2, 1); + } + else { + fn_1_1CABC(arg1->unk_5C); + HuSprBankSet(var_r24, arg1->unk_5C + 2, 1); + } + HuSprBankSet(var_r24, arg1->unk_48 + 0x1E, 1); + HuSprBankSet(var_r24, arg1->unk_48 + 0x22, 1); + } + else if (lbl_1_bss_444 != 0) { + if (HuPadStkX[arg1->unk_48] >= 5) { + var_r30++; + var_r27 = 1; + if (var_r30 > 5) { + var_r30 = 5; + } + } + else if (HuPadStkX[arg1->unk_48] <= -5) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk_48] <= -5) { + var_r29++; + var_r26 = 1; + if (var_r29 > 2) { + var_r29 = 2; + } + } + else if (HuPadStkY[arg1->unk_48] >= 5) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + else { + if (HuPadStkX[arg1->unk_48] >= 5) { + var_r30++; + var_r27 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[arg1->unk_48] <= -5) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk_48] <= -5) { + var_r29++; + var_r26 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[arg1->unk_48] >= 5) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[arg1->unk_48] & PAD_BUTTON_B) { + arg1->unk_08 = 0; + lbl_1_bss_5DC.unk_10 = 1; + HuAudFXPlay(3); + if (lbl_1_bss_444 != 0) { + var_r20 = 0; + if (arg1->unk_5C <= 5) { + var_r20 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r20 = arg1->unk_5C - 3; + } + else { + var_r20 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r24, var_r20 + 2, 0); + } + else { + HuSprBankSet(var_r24, arg1->unk_5C + 2, 0); + } + HuSprBankSet(var_r24, arg1->unk_48 + 0x1E, 0); + HuSprBankSet(var_r24, arg1->unk_48 + 0x22, 0); + } + if (lbl_1_bss_444 != 0) { + var_r25 = var_r30 + (var_r29 * 6); + } + else { + var_r25 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r25) { + if (lbl_1_bss_444 != 0) { + while (TRUE) { + var_r25 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_45C[var_r28].unk_5C)) + || (var_r25 == 0) || (var_r25 == 5) || (var_r25 == 6) || (var_r25 == 0xB)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 5) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 2) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 5) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 2) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + if (var_r28 == 4) { + break; + } + } + } + else { + do { + var_r25 = var_r30 + (var_r29 * 4); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_45C[var_r28].unk_5C)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 3) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 1) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 3) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 1) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + } while (var_r28 != 4); + } + if (lbl_1_bss_444 != 0) { + var_r25 = var_r30 + (var_r29 * 6); + } + else { + var_r25 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r25) { + HuAudFXPlay(0); + var_r19 = arg1->unk_5C; + arg1->unk_5C = var_r25; + if (lbl_1_bss_444 != 0) { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(lbl_1_data_694[var_r19][0], lbl_1_data_694[var_r25][0], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_694[var_r19][1], lbl_1_data_694[var_r25][1], var_r28, 10.0f); + HuSprPosSet(var_r24, arg1->unk_48 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r24, arg1->unk_48 + 0x22, var_f31, var_f30); + } + return; + } + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(*lbl_1_data_5E4[var_r23], *lbl_1_data_5E4[var_r30], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_5E4[var_r22 * 4][1], lbl_1_data_5E4[var_r29 * 4][1], var_r28, 10.0f); + HuSprPosSet(var_r24, arg1->unk_48 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r24, arg1->unk_48 + 0x22, var_f31, var_f30); + } + } + } +} + +void fn_1_18610(MpexDllUnkStruct4 *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = lbl_1_bss_63C[1]; + do { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != arg0->unk_48) && (lbl_1_bss_45C[var_r29].unk_08 == 1) && (arg0->unk_5C == lbl_1_bss_45C[var_r29].unk_5C)) { + arg0->unk_5C += 1; + break; + } + } + } while (var_r29 != 4); + arg0->unk_54 = 0; + if (lbl_1_bss_444 != 0) { + var_r28 = 0; + if (arg0->unk_5C <= 5) { + var_r28 = arg0->unk_5C - 1; + } + else if (arg0->unk_5C <= 0xB) { + var_r28 = arg0->unk_5C - 3; + } + else { + var_r28 = arg0->unk_5C - 4; + } + HuSprBankSet(var_r30, var_r28 + 2, 0); + } + else { + HuSprBankSet(var_r30, arg0->unk_5C + 2, 0); + } + HuSprBankSet(var_r30, arg0->unk_48 + 0x26, 0); + HuSprBankSet(var_r30, arg0->unk_48 + 0x2A, 0); + HuSprBankSet(var_r30, arg0->unk_48 + 0x2E, arg0->unk_54); + HuSprBankSet(var_r30, arg0->unk_48 + 0x32, arg0->unk_54); + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r30, arg0->unk_48 + 0x26, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2A, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2E, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_48 + 0x32, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r30, arg0->unk_48 + 0x26, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2A, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2E, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_48 + 0x32, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + arg0->unk_10 = 0; + HuSprAttrReset(var_r30, arg0->unk_48 + 0x26, 4); + HuSprAttrReset(var_r30, arg0->unk_48 + 0x2A, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2E, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x32, 4); +} + +void fn_1_18D30(struct MpexDllUnkStruct4 *arg0) +{ + s32 var_r30; + + var_r30 = lbl_1_bss_63C[1]; + HuSprAttrSet(var_r30, arg0->unk_48 + 0x26, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2A, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2E, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x32, 4); +} + +void fn_1_18DCC(omObjData *arg0, MpexDllUnkStruct4 *arg1) +{ + s32 sp8; + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r27 = lbl_1_bss_63C[1]; + var_r26 = 0; + var_r25 = 0; + sp8 = arg1->unk_54; + lbl_1_bss_5DC.unk_30 = 0; + if (lbl_1_bss_444 != 0) { + var_r30 = arg1->unk_5C % 6; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 6; + var_r22 = var_r29; + } + else { + var_r30 = arg1->unk_5C % 4; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 4; + var_r22 = var_r29; + } + if (arg1->unk_08 == 0) { + if (HuPadBtnDown[lbl_1_bss_45C->unk_58] & PAD_BUTTON_A) { + arg1->unk_08 = 1; + HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 1); + HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 1); + if (lbl_1_bss_444 != 0) { + var_r21 = 0; + if (arg1->unk_5C <= 5) { + var_r21 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r21 = arg1->unk_5C - 3; + } + else { + var_r21 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r27, var_r21 + 2, 1); + fn_1_1CABC(var_r21); + } + else { + HuSprBankSet(var_r27, arg1->unk_5C + 2, 1); + fn_1_1CABC(arg1->unk_5C); + } + arg1->unk_54 = 0; + HuSprBankSet(var_r27, arg1->unk_48 + 0x2E, arg1->unk_54); + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, lbl_1_data_694[arg1->unk_5C][0], lbl_1_data_694[arg1->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, lbl_1_data_5E4[arg1->unk_5C % 4][0], lbl_1_data_5E4[(arg1->unk_5C / 4) * 4][1] + 0x23); + } + HuSprAttrReset(var_r27, arg1->unk_48 + 0x2E, 4); + } + else if (lbl_1_bss_444 != 0) { + if (HuPadStkX[0] >= 5) { + var_r30++; + var_r26 = 1; + if (var_r30 > 5) { + var_r30 = 5; + } + } + else if (HuPadStkX[0] <= -5) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[0] <= -5) { + var_r29++; + var_r25 = 1; + if (var_r29 > 2) { + var_r29 = 2; + } + } + else if (HuPadStkY[0] >= 5) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + else { + if (HuPadStkX[0] >= 5) { + var_r30++; + var_r26 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[0] <= -5) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[0] <= -5) { + var_r29++; + var_r25 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[0] >= 5) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[lbl_1_bss_45C->unk_58] & PAD_BUTTON_B) { + arg1->unk_08 = arg1->unk_10 = 0; + if (lbl_1_bss_444 != 0) { + var_r20 = 0; + if (arg1->unk_5C <= 5) { + var_r20 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r20 = arg1->unk_5C - 3; + } + else { + var_r20 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r27, var_r20 + 2, 0); + } + else { + HuSprBankSet(var_r27, arg1->unk_5C + 2, 0); + } + HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 0); + HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 0); + HuSprAttrSet(var_r27, arg1->unk_48 + 0x2E, 4); + HuAudFXPlay(3); + } + if (lbl_1_bss_444 != 0) { + var_r24 = var_r30 + (var_r29 * 6); + } + else { + var_r24 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r24) { + if (lbl_1_bss_444 != 0) { + while (TRUE) { + fn_1_1B7D0(1); + var_r24 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_45C[var_r28].unk_5C)) + || (var_r24 == 0) || (var_r24 == 5) || (var_r24 == 6) || (var_r24 == 0xB)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 5) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 2) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 5) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 2) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + if (var_r28 == 4) { + break; + } + } + } + else { + do { + var_r24 = var_r30 + (var_r29 * 4); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_45C[var_r28].unk_5C)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 3) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 1) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 3) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 1) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + } while (var_r28 != 4); + } + if (lbl_1_bss_444 != 0) { + var_r24 = var_r30 + (var_r29 * 6); + } + else { + var_r24 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r24) { + var_r19 = arg1->unk_5C; + arg1->unk_5C = var_r24; + HuAudFXPlay(0); + if (lbl_1_bss_444 != 0) { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(lbl_1_data_694[var_r19][0], lbl_1_data_694[var_r24][0], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_694[var_r19][1], lbl_1_data_694[var_r24][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_48 + 0x26, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2A, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, var_f31, 35.0f + var_f30); + } + } + else { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(lbl_1_data_5E4[var_r23][0], lbl_1_data_5E4[var_r30][0], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_5E4[var_r22 * 4][1], lbl_1_data_5E4[var_r29 * 4][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_48 + 0x26, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2A, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, var_f31, 35.0f + var_f30); + } + } + } + } + lbl_1_bss_5DC.unk_30 = 0; +} + +s32 fn_1_19A98(MpexDllUnkStruct4 *arg0) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r28 = 0; + var_r29 = lbl_1_bss_63C[1]; + while (TRUE) { + fn_1_1B7D0(1); + var_r28 = 0; + var_r26 = arg0->unk_54; + if (HuPadStkX[lbl_1_bss_45C->unk_58] < 5) { + if ((HuPadBtn[lbl_1_bss_45C->unk_58] & PAD_BUTTON_RIGHT) == 0) { + // TODO remove gotos + goto block_2; + } + } + if (GWGameStat.veryHardUnlock == 1) { + arg0->unk_54++; + var_r28 = 1; + if (arg0->unk_54 > 3) { + arg0->unk_54 = 0; + } + } + else { + arg0->unk_54++; + var_r28 = 1; + if (arg0->unk_54 > 2) { + arg0->unk_54 = 0; + } + goto block_1; + block_2: + if (HuPadStkX[lbl_1_bss_45C->unk_58] <= -5 || HuPadBtn[lbl_1_bss_45C->unk_58] & PAD_BUTTON_LEFT) { + if (GWGameStat.veryHardUnlock == 1) { + arg0->unk_54--; + var_r28 = -1; + if (arg0->unk_54 < 0) { + arg0->unk_54 = 3; + } + } + else { + arg0->unk_54--; + var_r28 = -1; + if (arg0->unk_54 < 0) { + arg0->unk_54 = 2; + } + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_A) { + var_r27 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + var_r27 = 0; + HuAudFXPlay(3); + break; + } + } + block_1: + if (arg0->unk_54 != var_r26) { + HuAudFXPlay(0); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_1B7D0(1); + if (lbl_1_bss_444 != 0) { + var_f31 = fn_1_1B64C(lbl_1_data_694[arg0->unk_5C][0], lbl_1_data_694[arg0->unk_5C][0] + (var_r28 * 0xA), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + var_f31 = fn_1_1B64C(lbl_1_data_5E4[arg0->unk_5C % 4][0], lbl_1_data_5E4[arg0->unk_5C % 4][0] + (var_r28 * 0xA), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + } + HuSprBankSet(var_r29, arg0->unk_48 + 0x2E, arg0->unk_54); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_1B7D0(1); + if (lbl_1_bss_444 != 0) { + var_f31 = fn_1_1B64C(lbl_1_data_694[arg0->unk_5C][0] + (var_r28 * 0xA), lbl_1_data_694[arg0->unk_5C][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + var_f31 = fn_1_1B64C(lbl_1_data_5E4[arg0->unk_5C % 4][0] + (var_r28 * 0xA), lbl_1_data_5E4[arg0->unk_5C % 4][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + } + } + } + if (var_r27 == 1) { + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r29, arg0->unk_48 + 0x32, lbl_1_data_694[arg0->unk_5C][0], lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r29, arg0->unk_48 + 0x32, lbl_1_data_5E4[arg0->unk_5C % 4][0], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + HuSprBankSet(var_r29, arg0->unk_48 + 0x32, arg0->unk_54); + HuSprAttrReset(var_r29, arg0->unk_48 + 0x32, 4); + HuSprAttrSet(var_r29, arg0->unk_48 + 0x2E, 4); + } + return var_r27; +} + +void fn_1_1A3BC(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r27; + + var_r29 = HuSprGrpCreate(0x1B); + lbl_1_bss_63C[2] = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(0x640067), 0x64, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(0x640069), 0x64, 0); + HuSprGrpMemberSet(var_r29, 2, var_r30); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x64006B), 0x5A, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 4, var_r30); + } + var_r28 = HuSprAnimReadFile(0x640079); + var_r27 = HuSprAnimReadFile(0x64007A); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x50, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x12, var_r30); + var_r30 = HuSprCreate(var_r27, 0x50, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x16, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(0x64007B), 0x46, 0); + HuSprGrpMemberSet(var_r29, 0x1A, var_r30); + fn_1_1A5A4(0); + fn_1_1AEFC(0); +} + +void fn_1_1A5A4(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + + var_r30 = lbl_1_bss_63C[2]; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + switch (arg0) { + case 0: + HuSprAttrReset(var_r30, 2, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = GWPlayerCfg[var_r31].character; + var_r25 = GWPlayerCfg[var_r31].diff; + HuSprAttrReset(var_r30, var_r28 + 4, 4); + HuSprPosSet(var_r30, var_r28 + 4, lbl_1_data_724[var_r31][0], lbl_1_data_724[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r25); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_724[var_r31][0], lbl_1_data_724[var_r31][1] + 0x14); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_724[var_r31][0], lbl_1_data_724[var_r31][1] + 0x14); + } + } + break; + case 1: + HuSprAttrReset(var_r30, 0, 4); + var_r27 = GWPlayerCfg->character; + var_r24 = GWPlayerCfg->diff; + HuSprAttrReset(var_r30, var_r27 + 4, 4); + HuSprPosSet(var_r30, var_r27 + 4, 0.0f, lbl_1_data_744[1]); + if (GWPlayerCfg->iscom != 0) { + HuSprAttrReset(var_r30, 0x16, 4); + HuSprBankSet(var_r30, 0x16, var_r24); + HuSprPosSet(var_r30, var_r31 + 0x16, 0.0f, lbl_1_data_744[1] + 0x14); + } + else { + HuSprAttrReset(var_r30, 0x12, 4); + HuSprBankSet(var_r30, 0x12, 0); + HuSprPosSet(var_r30, 0x12, 0.0f, lbl_1_data_744[1] + 0x14); + } + break; + case 2: + HuSprAttrReset(var_r30, 1, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r26 = GWPlayerCfg[var_r31].character; + var_r23 = GWPlayerCfg[var_r31].diff; + HuSprAttrReset(var_r30, var_r26 + 4, 4); + HuSprPosSet(var_r30, var_r26 + 4, lbl_1_data_74C[var_r31][0], lbl_1_data_74C[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r23); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_74C[var_r31][0], lbl_1_data_74C[var_r31][1] + 0x19); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_74C[var_r31][0], lbl_1_data_74C[var_r31][1] + 0x19); + } + } + break; + case 3: + HuSprAttrReset(var_r30, 1, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = GWPlayerCfg[var_r31].character; + var_r22 = GWPlayerCfg[var_r31].diff; + var_r29 = fn_1_1B42C(var_r29); + HuSprAttrReset(var_r30, var_r29 + 4, 4); + HuSprPosSet(var_r30, var_r29 + 4, lbl_1_data_75C[var_r31][0], lbl_1_data_75C[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r22); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_75C[var_r31][0], lbl_1_data_75C[var_r31][1] + 0x19); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_75C[var_r31][0], lbl_1_data_75C[var_r31][1] + 0x19); + } + } + HuSprAttrReset(var_r30, 0x1A, 4); + break; + } + HuSprGrpPosSet(var_r30, 112.0f, -428.0f); +} + +void fn_1_1AEFC(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[2]; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 112.0f, -428.0f); +} + +void fn_1_1AF78(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[2]; + fn_1_1A5A4(arg0); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r30, 112.0f, 72.0f + var_f31); + } + HuSprGrpPosSet(var_r30, 112.0f, 72.0f); +} + +void fn_1_1B0DC(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_63C[2]; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r29, 112.0f, 72.0f + var_f31); + } + HuSprGrpPosSet(var_r29, 112.0f, -428.0f); + var_r28 = lbl_1_bss_63C[2]; + for (var_r30 = 0; var_r30 < 0x1B; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + HuSprGrpPosSet(var_r28, 112.0f, -428.0f); +} + +void fn_1_1B294(void) +{ + omObjData *var_r31; + + var_r31 = NULL; + var_r31 = omAddObjEx(lbl_1_bss_440, 0x1000, 8, 8, -1, NULL); + lbl_1_bss_5DC.unk_00 = var_r31; + lbl_1_bss_5DC.unk_04 = NULL; + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_bss_5DC.unk_04 == NULL) { + continue; + } + lbl_1_bss_5DC.unk_04(lbl_1_bss_5DC.unk_00, &lbl_1_bss_5DC); + } +} + +void fn_1_1B338(void) +{ + s32 var_r31; + omObjData *var_r30; + + var_r31 = lbl_1_bss_448[0]; + lbl_1_bss_448[0] = var_r31 + 1; + var_r30 = NULL; + var_r30 = omAddObjEx(lbl_1_bss_440, 0x1000, 8, 8, -1, NULL); + lbl_1_bss_45C[var_r31].unk_00 = var_r30; + lbl_1_bss_45C[var_r31].unk_04 = NULL; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_bss_45C[var_r31].unk_04 == NULL) { + continue; + } + lbl_1_bss_45C[var_r31].unk_04(lbl_1_bss_45C[var_r31].unk_00, &lbl_1_bss_45C[var_r31]); + } +} + +s32 fn_1_1B42C(s32 arg0) +{ + s32 var_r31; + + switch (arg0) { + case 9: + var_r31 = 8; + break; + case 10: + var_r31 = 9; + break; + case 11: + var_r31 = 0xA; + break; + case 12: + var_r31 = 0xB; + break; + case 13: + var_r31 = 0xC; + break; + case 8: + var_r31 = 0xD; + break; + default: + var_r31 = -1; + break; + } + return var_r31; +} + +s32 fn_1_1B4AC(s32 arg0) +{ + s32 var_r31; + + switch (arg0) { + case 8: + var_r31 = 9; + break; + case 9: + var_r31 = 0xA; + break; + case 10: + var_r31 = 0xB; + break; + case 11: + var_r31 = 0xC; + break; + case 12: + var_r31 = 0xD; + break; + case 13: + var_r31 = 8; + break; + default: + var_r31 = -1; + break; + } + return var_r31; +} + +float fn_1_1B52C(float arg8, float arg9, float argA, float argB) +{ + if (argB <= argA) { + return arg9; + } + return arg8 + ((argA / argB) * (arg9 - arg8)); +} + +float fn_1_1B554(float arg0, float arg1, float arg2) +{ + return (arg1 + (arg0 * (arg2 - 1.0f))) / arg2; +} + +float fn_1_1B574(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg1; + } + return arg0 + ((arg1 - arg0) * (1.0 - cosd(((90.0f / arg3) * arg2)))); +} + +float fn_1_1B64C(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg1; + } + return arg0 + ((arg1 - arg0) * sind(((90.0f / arg3) * arg2))); +} + +float fn_1_1B714(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg8; + } + return arg8 + ((arg9 - arg8) * sind(((360.0f / argB) * argA))); +} + +void fn_1_1B7D0(s32 arg0) +{ + if (arg0 <= 1) { + HuPrcVSleep(); + return; + } + HuPrcSleep(arg0); +} + +void fn_1_1B810(void) +{ + HuWinInit(1); +} + +void fn_1_1B834(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (lbl_1_data_77C == -1) { + var_r31 = 0x1C9; + var_r30 = 0x44; + var_r29 = 1.0f + ((576.0f - var_r31) / 2); + var_r28 = 445.0f - var_r30; + lbl_1_data_77C = HuWinExCreateStyled(var_r29, var_r28, var_r31, var_r30, -1, 1); + winData[lbl_1_data_77C].active_pad = 1; + HuWinMesPalSet(lbl_1_data_77C, 7, 0, 0, 0); + HuWinExAnimIn(lbl_1_data_77C); + } +} + +void fn_1_1B9F4(void) +{ + if (lbl_1_data_77C != -1) { + HuWinMesSet(lbl_1_data_77C, 0x250004); + HuWinExAnimOut(lbl_1_data_77C); + HuWinExCleanup(lbl_1_data_77C); + lbl_1_data_77C = -1; + } +} + +void fn_1_1BA78(u32 arg0, s32 arg1, s32 arg2) +{ + if (lbl_1_data_77C != -1) { + if (arg2 == 1) { + HuWinMesSpeedSet(lbl_1_data_77C, 0); + } + else { + HuWinMesSpeedSet(lbl_1_data_77C, 1); + } + HuWinMesSet(lbl_1_data_77C, arg0); + if (arg1 <= 0) { + HuWinMesWait(lbl_1_data_77C); + return; + } + if (arg1 <= 1) { + HuPrcVSleep(); + return; + } + HuPrcSleep(arg1); + } +} + +void fn_1_1BB4C(u32 arg0, s32 arg1) +{ + if (lbl_1_data_77C != -1) { + HuWinInsertMesSet(lbl_1_data_77C, arg0, arg1); + } +} + +s32 fn_1_1BBA4(s32 arg0) +{ + float spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + HuWinMesMaxSizeGet(1, spC, 0x1E0035); + var_r30 = spC[0]; + var_r29 = spC[1]; + var_r27 = 0x22C - var_r30; + var_r26 = 0x1BD - var_r29; + var_r31 = HuWinExCreateStyled(var_r27, var_r26, var_r30, var_r29, -1, 1); + winData[var_r31].active_pad = 1; + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + HuWinExAnimIn(var_r31); + HuWinMesSpeedSet(var_r31, 0); + HuWinMesSet(var_r31, 0x1E0035); + var_r28 = HuWinChoiceGet(var_r31, arg0); + HuWinMesSet(var_r31, 0x250004); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + return var_r28; +} + +void fn_1_1BD00(u32 arg0, s32 arg1) +{ + float spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + HuWinMesMaxSizeGet(1, spC, arg0); + var_r29 = spC[0]; + var_r31 = spC[1]; + var_r28 = (0x240 - var_r29) / 2.0f; + if (arg1 == 1) { + var_r30 = 0x1BD - var_r31; + } + else { + var_r30 = 0x181 - var_r31; + } + if (lbl_1_data_780[0] != -1) { + fn_1_1C120(); + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); + } + else { + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_780[0], 0.0f); + HuWinDispOn(lbl_1_data_780[0]); + HuWinMesSet(lbl_1_data_780[0], arg0); + HuWinMesSpeedSet(lbl_1_data_780[0], 0); +} + +void fn_1_1BF1C(u32 arg0) +{ + float sp8[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + HuWinMesMaxSizeGet(1, sp8, arg0); + var_r30 = sp8[0]; + var_r31 = sp8[1]; + var_r28 = (0x240 - var_r30) / 2.0f; + var_r29 = 0x181 - var_r31; + if (lbl_1_data_780[0] != -1) { + fn_1_1C120(); + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + } + else { + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_780[0], 0.0f); + HuWinDispOn(lbl_1_data_780[0]); + HuWinMesSet(lbl_1_data_780[0], arg0); + HuWinMesSpeedSet(lbl_1_data_780[0], 0); +} + +void fn_1_1C120(void) +{ + if (lbl_1_data_780[0] != -1) { + HuWinExCleanup(lbl_1_data_780[0]); + lbl_1_data_780[0] = -1; + } +} + +void fn_1_1C174(void) +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 1) { + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_5C + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + } + else { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } +} + +void fn_1_1C478(void) +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 1) { + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_5C + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + } + else { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } +} + +void fn_1_1C77C(void) +{ + s32 var_r29; + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 1) { + if (lbl_1_bss_45C[var_r31].unk_5C <= 5) { + var_r29 = lbl_1_bss_45C[var_r31].unk_5C - 1; + } + else if (lbl_1_bss_45C[var_r31].unk_5C <= 0xB) { + var_r29 = lbl_1_bss_45C[var_r31].unk_5C - 3; + } + else { + var_r29 = lbl_1_bss_45C[var_r31].unk_5C - 4; + } + HuSprBankSet(var_r30, var_r29 + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][0], + lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][1]); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][0], + lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][1]); + } + else { + lbl_1_bss_45C[var_r31].unk_5C = 1; + } + } +} + +void fn_1_1CABC(s32 arg0) +{ + s32 sp8[] = { 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x39, 0x40, 0x4B, 0x46, 0x3E, 0x3A }; + + if ((arg0 < 0) || (arg0 > 0xD)) { + return; + } + HuAudFXPlay(sp8[arg0]); +} diff --git a/src/REL/mpexDll/main.c b/src/REL/mpexDll/main.c new file mode 100644 index 00000000..a613e729 --- /dev/null +++ b/src/REL/mpexDll/main.c @@ -0,0 +1,508 @@ +#include "ext_math.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/wipe.h" + +#include "REL/mpexDll.h" + +#ifndef __MWERKS__ +float fn_1_1B52C(float arg8, float arg9, float argA, float argB); +float fn_1_1B554(float, float, float); +float fn_1_1B574(float arg0, float arg1, float arg2, float arg3); +float fn_1_1B64C(float arg0, float arg1, float arg2, float arg3); +#endif + +void fn_1_230(); +void fn_1_A70(MpexDllUnkStruct *arg0); + +MpexDllUnkStruct lbl_1_bss_64; +s32 lbl_1_bss_4[0x18]; +Process *lbl_1_bss_0; + +void fn_1_A0(void) +{ + if (HuPadBtnDown[0] & PAD_BUTTON_Y) { + OSReport("\n###################################################################### HEAP\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); + OSReport("\n###################################################################### SOUND\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_MUSIC), -1); + OSReport("\n###################################################################### MODEL\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1); + OSReport("\n###################################################################### DVD\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1); + OSReport("\n###################################################################### SPACE\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_MISC), -1); + OSReport("\n###################################################################### ARAM\n\n"); + HuAMemDump(); + } +} + +void fn_1_188(omObjData *object) +{ + if (WipeStatGet() == 0) { + omOvlReturnEx(1, 1); + } +} + +void fn_1_1C0(omObjData *object) +{ + if (omSysExitReq != 0) { + HuAudFadeOut(0x3E8); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + object->func = fn_1_188; + } +} + +void ObjectSetup(void) +{ + mgPracticeEnableF = 0; + lbl_1_bss_0 = omInitObjMan(0x3E, 0x2000); + GWSystem.mg_next = 0xFFFF; + fn_1_3044(lbl_1_bss_0); +} + +void fn_1_298(void) +{ + s32 var_r31; + + var_r31 = -1; + var_r31 = Hu3DGLightCreate(0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightPosAimSet(var_r31, 0.0f, 1000.0f, 1000.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_374(void) +{ + Vec sp20 = { 0.0f, 3000.0f, 3000.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); + Hu3DShadowTPLvlSet(0.8f); +} + +void fn_1_438(void) +{ + MpexDllUnkStruct *var_r31 = &lbl_1_bss_64; + + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & 0x20) { + var_r31->unk_08.z -= (HuPadStkY[0] / 10.0f); + } + else { + var_r31->unk_08.x += HuPadStkX[0] / 10.0f; + var_r31->unk_08.y += (HuPadStkY[0] / 10.0f); + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk_20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk_20.y += (HuPadStkX[0] / 100.0f); + if (var_r31->unk_20.x < 0.0f) { + var_r31->unk_20.x += 360.0f; + } + if (var_r31->unk_20.x >= 360.0f) { + var_r31->unk_20.x -= 360.0f; + } + if (var_r31->unk_20.y < 0.0f) { + var_r31->unk_20.y += 360.0f; + } + if (var_r31->unk_20.y >= 360.0f) { + var_r31->unk_20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk_38 -= (HuPadStkY[0] / 10.0f); + } + print8(0x18, 0x28, 1.0f, ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"); + print8(0x18, 0x32, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z); + print8(0x18, 0x3C, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk_20.x, var_r31->unk_20.y, var_r31->unk_20.z); + print8(0x18, 0x46, 1.0f, "ZOOM : %.2f", var_r31->unk_38); +} + +void fn_1_81C(omObjData *object) +{ + MpexDllUnkStruct *var_r31 = &lbl_1_bss_64; + if (var_r31->unk_00 != NULL) { + var_r31->unk_00(); + } + Center.x = var_r31->unk_08.x; + Center.y = var_r31->unk_08.y; + Center.z = var_r31->unk_08.z; + CRot.x = var_r31->unk_20.x; + CRot.y = var_r31->unk_20.y; + CRot.z = var_r31->unk_20.z; + CZoom = var_r31->unk_38; +} + +void fn_1_8D4(MpexDllUnkFunc arg0) +{ + lbl_1_bss_64.unk_00 = arg0; + fn_1_A70(&lbl_1_bss_64); +} + +void fn_1_910(MpexDllUnkFunc arg0) +{ + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 45.0f, 20.0f, 5000.0f, 1.2f); + lbl_1_bss_64.unk_00 = arg0; + lbl_1_bss_64.unk_04 = fn_1_438; + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_81C); +} + +void fn_1_A34(MpexDllUnkStruct *arg0) +{ + arg0->unk_08.x = arg0->unk_14.x; + arg0->unk_08.y = arg0->unk_14.y; + arg0->unk_08.z = arg0->unk_14.z; + arg0->unk_20.x = arg0->unk_2C.x; + arg0->unk_20.y = arg0->unk_2C.y; + arg0->unk_20.z = arg0->unk_2C.z; + arg0->unk_38 = arg0->unk_3C; +} + +void fn_1_A70(MpexDllUnkStruct *arg0) +{ + arg0->unk_40 = 0; + arg0->unk_14.x = arg0->unk_08.x; + arg0->unk_14.y = arg0->unk_08.y; + arg0->unk_14.z = arg0->unk_08.z; + arg0->unk_2C.x = arg0->unk_20.x; + arg0->unk_2C.y = arg0->unk_20.y; + arg0->unk_2C.z = arg0->unk_20.z; + arg0->unk_3C = arg0->unk_38; +} + +void fn_1_AB4(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8) +{ + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, arg8); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, arg8); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, arg8); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, arg8); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, arg8); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, arg8); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, arg8); +} + +void fn_1_C84(MpexDllUnkStruct *arg0, float arg8, float argB) +{ + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg0->unk_14.x, arg8); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg0->unk_14.y, arg8); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg0->unk_14.z, arg8); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg0->unk_2C.x, arg8); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg0->unk_2C.y, arg8); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg0->unk_2C.z, arg8); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg0->unk_3C, arg8); +} + +void fn_1_E48(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B52C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B52C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B52C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B52C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B52C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B52C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B52C(arg0->unk_3C, arg1->unk_38, arg8, arg9); +} + +void fn_1_1048(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B52C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B52C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B52C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B52C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B52C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B52C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B52C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = arg1->unk_14.x; + arg0->unk_08.y = arg1->unk_14.y; + arg0->unk_08.z = arg1->unk_14.z; + arg0->unk_20.x = arg1->unk_2C.x; + arg0->unk_20.y = arg1->unk_2C.y; + arg0->unk_20.z = arg1->unk_2C.z; + arg0->unk_38 = arg1->unk_3C; +} + +void fn_1_1280(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argA, float argC) +{ + arg1->unk_14.x = fn_1_1B52C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B52C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B52C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B52C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B52C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B52C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B52C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, argA); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, argA); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, argA); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, argA); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, argA); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, argA); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA); +} + +void fn_1_161C(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B64C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B64C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B64C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B64C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B64C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B64C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B64C(arg0->unk_3C, arg1->unk_38, arg8, arg9); +} + +void fn_1_181C(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B64C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B64C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B64C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B64C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B64C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B64C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B64C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = arg1->unk_14.x; + arg0->unk_08.y = arg1->unk_14.y; + arg0->unk_08.z = arg1->unk_14.z; + arg0->unk_20.x = arg1->unk_2C.x; + arg0->unk_20.y = arg1->unk_2C.y; + arg0->unk_20.z = arg1->unk_2C.z; + arg0->unk_38 = arg1->unk_3C; +} + +void fn_1_1A54(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argA, float argC) +{ + arg1->unk_14.x = fn_1_1B64C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B64C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B64C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B64C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B64C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B64C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B64C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, argA); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, argA); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, argA); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, argA); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, argA); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, argA); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA); +} + +void fn_1_1DF0(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B574(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B574(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B574(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B574(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B574(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B574(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B574(arg0->unk_3C, arg1->unk_38, arg8, arg9); +} + +void fn_1_1FF0(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B574(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B574(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B574(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B574(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B574(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B574(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B574(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = arg1->unk_14.x; + arg0->unk_08.y = arg1->unk_14.y; + arg0->unk_08.z = arg1->unk_14.z; + arg0->unk_20.x = arg1->unk_2C.x; + arg0->unk_20.y = arg1->unk_2C.y; + arg0->unk_20.z = arg1->unk_2C.z; + arg0->unk_38 = arg1->unk_3C; +} + +void fn_1_2228(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argA, float argC) +{ + arg1->unk_14.x = fn_1_1B574(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B574(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B574(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B574(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B574(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B574(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B574(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, argA); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, argA); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, argA); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, argA); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, argA); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, argA); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA); +} + +void fn_1_25C4(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) +{ + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } +} + +void fn_1_273C(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) +{ + if (arg0->work[3] != arg0->motion[arg2]) { + arg0->work[3] = arg0->motion[arg2]; + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + } +} + +void fn_1_28DC(void) { } + +void fn_1_28E0(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4) +{ + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + + s32 var_r29 = 0; + s32 var_r28 = 0; + s32 var_r26; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + + sp1C.x = Hu3DData[arg0->model[arg1]].rot.x; + sp1C.y = Hu3DData[arg0->model[arg1]].rot.y; + sp1C.z = Hu3DData[arg0->model[arg1]].rot.z; + + sp10.x = 0.0f; + sp10.y = arg8; + sp10.z = 0.0f; + + if ((sp34.x - sp40.x) >= 0.0f) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + if ((sp34.z - sp40.z) >= 0.0f) { + var_r28 = 1; + } + else { + var_r28 = 0; + } + while (arg3 != 0) { + fn_1_1B7D0(1); + sp28.y = -((atan2d(sp34.z - sp40.z, sp34.x - sp40.x)) - 90.0); + if (sp28.y < 0.0f) { + sp28.y += 360.0f; + } + else if (sp28.y >= 360.0f) { + sp28.y -= 360.0f; + } + if (arg4 != 0) { + if (sp28.y >= 180.0f) { + if ((sp1C.y - sp28.y) >= 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp28.y) < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if ((sp1C.y - sp28.y) > 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp28.y) <= -180.0f) { + sp1C.y += 360.0f; + } + } + } + sp4C.x = (sp40.x += (arg9 * sind(sp28.y))); + sp4C.z = (sp40.z += (arg9 * cosd(sp28.y))); + if (var_r29 == 1) { + if (sp40.x >= sp34.x) { + sp4C.x = sp40.x = sp34.x; + var_r29 = 2; + } + } + else if ((var_r29 == 0) && (sp40.x <= sp34.x)) { + sp4C.x = sp40.x = sp34.x; + var_r29 = 2; + } + if (var_r28 == 1) { + if (sp40.z >= sp34.z) { + sp4C.z = sp40.z = sp34.z; + var_r28 = 2; + } + } + else if ((var_r28 == 0) && (sp40.z <= sp34.z)) { + sp4C.z = sp40.z = sp34.z; + var_r28 = 2; + } + if (arg4 != 0) { + sp1C.y = fn_1_1B554(sp1C.y, sp28.y, argA); + } + Hu3DModelPosSet(arg0->model[arg1], sp4C.x, sp40.y, sp4C.z); + Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp1C.y, sp1C.z); + + if (var_r29 == 2 && var_r28 == 2) { + break; + } + }; + + sp1C.y = Hu3DData[arg0->model[arg1]].rot.y; + if (arg4 != 0) { + for (var_r26 = 0; var_r26 <= argA; var_r26++) { + fn_1_1B7D0(1); + if (sp10.y >= 180.0f) { + if ((sp1C.y - sp10.y) >= 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp10.y) < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if ((sp1C.y - sp10.y) > 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp10.y) <= -180.0f) { + sp1C.y += 360.0f; + } + } + sp10.z = fn_1_1B52C(sp1C.y, sp10.y, var_r26, argA); + Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp10.z, sp1C.z); + } + } +} diff --git a/src/REL/mpexDll/mgname.c b/src/REL/mpexDll/mgname.c new file mode 100644 index 00000000..0ead0fe8 --- /dev/null +++ b/src/REL/mpexDll/mgname.c @@ -0,0 +1,379 @@ +#include "ext_math.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/mpexDll.h" + +#define FONT_CHAR_MAX 100 + +static s32 FontCharFile[0xC6] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0x140025, + 0x140026, + 0x140027, + 0x140028, + 0x140029, + 0x14002A, + 0x14002B, + 0x14002C, + 0x14002D, + 0x14002E, + 0x140025, + 0x140025, + 0x140025, + 0x14002F, + 0x140025, + 0x140025, + 0x140025, + 0x140034, + 0x140035, + 0x140036, + 0x140037, + 0x140038, + 0x140039, + 0x14003A, + 0x14003B, + 0x14003C, + 0x14003D, + 0x14003E, + 0x14003F, + 0x140040, + 0x140041, + 0x140042, + 0x140043, + 0x140044, + 0x140045, + 0x140046, + 0x140047, + 0x140048, + 0x140049, + 0x14004A, + 0x14004B, + 0x14004C, + 0x14004D, + 0x140042, + 0x140032, + 0x140042, + 0x140042, + 0x140042, + 0x140042, + 0x14004E, + 0x14004F, + 0x140050, + 0x140051, + 0x140052, + 0x140053, + 0x140054, + 0x140055, + 0x140056, + 0x140057, + 0x140058, + 0x140059, + 0x14005A, + 0x14005B, + 0x14005C, + 0x14005D, + 0x14005E, + 0x14005F, + 0x140060, + 0x140061, + 0x140062, + 0x140063, + 0x140064, + 0x140065, + 0x140066, + 0x140067, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x14002F, + 0x140033, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140030, + 0x140031, + 0x140025, + 0x140025, +}; + +s32 fn_1_1CB80(SeqWork *arg0, char *arg1, s16 arg2) +{ + char *str; + s16 len; + s16 *posY; + s16 charNum; + s32 *fileTbl; + s16 i; + s16 grpNo; + s32 file; + s16 *posX; + AnimData **animP; + s16 gid; + s16 sprid; + + fileTbl = FontCharFile; + + for (grpNo = 0; grpNo < 0x10; grpNo++) { + if (arg0->spr_grp[grpNo] == -1) { + break; + } + } + if (grpNo == 0x10) { + return -1; + } + animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*))); + posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX)); + posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY)); + + for (str = arg1, len = 0, charNum = 0; str[0] != 0; str++) { + if (str[0] == 0x20 || str[0] == 0x10) { + len += 0xE; + } + else if (str[0] < 0x30 || str[0] == 0x80 || str[0] == 0x81) { + continue; + } + else { + if (str[1] == 0x80) { + if ((str[0] >= 0x96) && (str[0] <= 0xA4)) { + file = fileTbl[str[0] + 0x6A]; + } + else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x65]; + } + else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) { + file = fileTbl[str[0] + 0x43]; + } + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x3E]; + } + } + else if (str[1] == 0x81) { + if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x6A]; + } + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x43]; + } + } + else { + file = fileTbl[str[0]]; + } + animP[charNum] = HuSprAnimReadFile(file); + posX[charNum] = len; + if ((str[0] >= 0x61) && (str[0] <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; + } + else if ((str[0] == 0xC2) || (str[0] == 0xC3)) { + posY[charNum] = 0; + len += 0x12; + } + else if (str[0] == 0x5C) { + posY[charNum] = 0; + len += 8; + } + else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) { + posY[charNum] = 4; + len += 0x18; + } + else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) { + posY[charNum] = 4; + len += 0x18; + } + else if ((str[0] == 0x3D) || (str[0] == 0x84)) { + posY[charNum] = 0; + len += 0x14; + } + else { + posY[charNum] = 0; + len += 0x1C; + } + charNum++; + } + } + gid = HuSprGrpCreate(charNum); + arg0->spr_grp[grpNo] = gid; + arg0->alt_word_len = len; + len = (len / 2) - 0xE; + for (i = 0; i < charNum; i++) { + sprid = HuSprCreate(animP[i], 0, 0); + HuSprGrpMemberSet(gid, i, sprid); + HuSprPosSet(gid, i, posX[i] - len, posY[i]); + } + + arg0->word_len = charNum; + HuMemDirectFree(animP); + HuMemDirectFree(posX); + HuMemDirectFree(posY); + return gid; +} + +s32 fn_1_1D02C(s32 arg0) +{ + SeqWork sp10; + s16 spC[2]; + char *var_r31; + s32 var_r30; + s16 var_r29; + char *var_r28; + s32 var_r27; + s32 var_r26; + s16 var_r25; + + var_r25 = GWGameStat.language; + lbl_1_bss_6AC = var_r25; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + sp10.sprite[var_r30] = sp10.spr_grp[var_r30] = -1; + } + var_r28 = MessData_MesPtrGet(messDataPtr, arg0); + var_r31 = var_r28; + var_r30 = 0; + var_r29 = 0; + + while (TRUE) { + if (var_r31[0] == 0 || var_r31[0] == 0xA) { + if (var_r31[0] == 0) { + var_r30 = 1; + } + var_r31[0] = 0; + if (lbl_1_bss_6AC == 0) { + var_r27 = 1; + } + else { + var_r27 = 0; + } + var_r26 = fn_1_1CB80(&sp10, var_r28, var_r27); + HuSprGrpPosSet(sp10.spr_grp[var_r29], 288.0f, 240.0f); + spC[var_r29] = sp10.alt_word_len; + var_r29++; + if (var_r30 == 0) { + var_r28 = var_r31 + 1; + } + else { + break; + } + } + var_r31++; + } + return var_r26; +} diff --git a/src/REL/mpexDll/mpex.c b/src/REL/mpexDll/mpex.c new file mode 100644 index 00000000..31a7359e --- /dev/null +++ b/src/REL/mpexDll/mpex.c @@ -0,0 +1,3544 @@ +#include "ext_math.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#ifndef __MWERKS__ +#include "game/hsfex.h" +#include "stdio.h" +#endif + +#include "REL/mpexDll.h" + +typedef void (*MpexDllUnkFunc2)(omObjData *, ...); + +typedef struct MpexDllUnkStruct3 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; +} MpexDllUnkStruct3; /* size = 0x14 */ + +typedef struct MpexDllUnkStruct4 { + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ MpexDllUnkFunc2 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ char unk14[0x14]; + /* 0x28 */ s32 unk_28; + /* 0x2C */ char unk2C[0x1C]; +} MpexDllUnkStruct4; /* size = 0x48 */ + +s32 rand8(void); +float fn_1_1B52C(float arg8, float arg9, float argA, float argB); +float fn_1_1B574(float arg0, float arg1, float arg2, float arg3); +float fn_1_1B64C(float arg0, float arg1, float arg2, float arg3); + +void fn_1_1015C(void); +void fn_1_10228(void); +void fn_1_10268(s32 arg0); +void fn_1_1045C(void); +void fn_1_107EC(void); +void fn_1_1085C(void); +void fn_1_10ABC(void); +void fn_1_10C30(void); +void fn_1_110F8(void); +void fn_1_114D4(void); +void fn_1_115A0(void); +void fn_1_115E0(s32 arg0); +void fn_1_117D4(void); +void fn_1_11930(void); +void fn_1_11984(void); +void fn_1_119E0(void); +void fn_1_11A3C(s32 arg0); +void fn_1_11E28(void); +void fn_1_11FC0(omObjData *object, MpexDllUnkStruct4 *arg1); +void fn_1_121E8(void); +void fn_1_125DC(float *arg0, s32 arg1); +void fn_1_32D8(void); +void fn_1_5D40(omObjData *arg0, MpexDllUnkStruct4 *arg1); +void fn_1_7D80(void); +void fn_1_7FC4(omObjData *arg0, MpexDllUnkStruct4 *arg1); +void fn_1_8320(void); +void fn_1_8ADC(void); +void fn_1_901C(omObjData *arg0, MpexDllUnkStruct4 *arg1); +void fn_1_9430(omObjData *arg0, MpexDllUnkStruct4 *arg1); +void fn_1_96B4(void); +void fn_1_A608(void); +void fn_1_AD34(void); +void fn_1_B004(void); +void fn_1_B210(void); +s32 fn_1_B248(s32 arg0, s32 arg1); +void fn_1_B2E4(s32 arg0); +void fn_1_B7F4(s32 arg0); +void fn_1_B870(s32 arg0); +void fn_1_B9A8(s32); +void fn_1_BC18(void); +void fn_1_BCD8(void); +u32 fn_1_BD10(s32 arg0, s32 arg1); +void fn_1_BD78(s32 arg0, s32 arg1); +void fn_1_C0DC(s32 arg0, s32); +void fn_1_C4D4(s32); +void fn_1_C544(void); +void fn_1_C860(void); +s32 fn_1_C898(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_CF10(s32 arg0); +void fn_1_D3AC(s32 arg0); +void fn_1_D468(s32 arg0); +void fn_1_D6AC(s32 arg0); +void fn_1_DBD0(s32 arg0); +void fn_1_E174(void); +void fn_1_E384(void); +void fn_1_E568(void); +void fn_1_EB1C(void); +void fn_1_ED78(s32 arg0, s32 arg1); +void fn_1_F0C0(void); +void fn_1_F40C(void); +void fn_1_F47C(void); +void fn_1_F730(void); +void fn_1_F8A4(void); +void fn_1_FDA0(void); + +float lbl_1_data_240[21] = { + 0.0f, + 0.0f, + 0.0f, + -250.0f, + 0.0f, + 0.0f, + 250.0f, + 0.0f, + 0.0f, + 0.0f, + 500.0f, + 0.0f, + -1000.0f, + 0.0f, + 0.0f, + 1000.0f, + 0.0f, + 0.0f, + 0.0f, + 1000.0f, + 0.0f, +}; + +MpexDllUnkStruct4 lbl_1_bss_3F8; +MpexDllUnkStruct4 lbl_1_bss_3B0; +MpexDllUnkStruct4 lbl_1_bss_2D8[3]; +MpexDllUnkStruct4 lbl_1_bss_1B8[4]; +s32 lbl_1_bss_1B4; +s32 lbl_1_bss_1B0; +s32 lbl_1_bss_1AC; +s32 lbl_1_bss_180[0xB]; +MpexDllUnkStruct3 lbl_1_bss_130[4]; +char lbl_1_bss_120[16]; +char lbl_1_bss_118[8]; +char lbl_1_bss_110[8]; +s32 lbl_1_bss_10C; +s32 lbl_1_bss_108; +s32 lbl_1_bss_104; +char lbl_1_bss_FC[8]; +char lbl_1_bss_F4[8]; +char lbl_1_bss_EC[8]; +char lbl_1_bss_E4[8]; +s32 lbl_1_bss_E0; +s32 lbl_1_bss_C8[6]; +s32 lbl_1_bss_C4; +s32 lbl_1_bss_C0; +s32 lbl_1_bss_BC; +float lbl_1_bss_B8; +s32 lbl_1_bss_B4; +s32 lbl_1_bss_B0; +u32 lbl_1_bss_AC; +Process *lbl_1_bss_A8; + +Process *fn_1_3044(Process *arg0) +{ + s32 var_r31; + + lbl_1_bss_A8 = arg0; + if (omovlevtno == 0) { + mgGameStatBackup = GWGameStat; + } + fn_1_298(); + fn_1_374(); + fn_1_1B810(); + fn_1_910(fn_1_96B4); + lbl_1_bss_180[0] = 1; + lbl_1_bss_180[1] = 1; + lbl_1_bss_180[2] = GWMGAvailGet(omMgIndexGet(0x40) + 0x191); + lbl_1_bss_180[3] = GWMGAvailGet(omMgIndexGet(0xB) + 0x191); + lbl_1_bss_180[4] = GWMGAvailGet(omMgIndexGet(0x13) + 0x191); + lbl_1_bss_180[5] = 1; + lbl_1_bss_180[6] = 1; + lbl_1_bss_180[7] = 1; + lbl_1_bss_180[8] = 1; + lbl_1_bss_180[9] = GWMGAvailGet(omMgIndexGet(0x1B) + 0x191); + fn_1_121E8(); + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + if (lbl_1_bss_180[var_r31] == 0) { + break; + } + } + if (var_r31 == 0xA) { + lbl_1_bss_180[0xA] = 1; + } + else { + lbl_1_bss_180[0xA] = 0; + } + if (omovlevtno == 1) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_8320, 0x7D0, 0x2000, 0, HuPrcCurrentGet()); + } + } + HuPrcChildCreate(fn_1_7D80, 0x7D0, 0x2000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuPrcChildCreate(fn_1_8ADC, 0x7D0, 0x2000, 0, HuPrcCurrentGet()); + } + fn_1_1264C(lbl_1_bss_A8); + + return HuPrcChildCreate(fn_1_32D8, 0x3E8, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_32D8(void) +{ + omObjData *var_r31; + + var_r31 = NULL; + var_r31 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, NULL); + lbl_1_bss_3F8.unk_00 = var_r31; + lbl_1_bss_3F8.unk_04 = (MpexDllUnkFunc2)fn_1_5D40; + while (TRUE) { + fn_1_1B7D0(1); + if (lbl_1_bss_3F8.unk_04 == NULL) { + continue; + } + lbl_1_bss_3F8.unk_04(lbl_1_bss_3F8.unk_00, &lbl_1_bss_3F8); + } +} + +void fn_1_3384(void) +{ + fn_1_1B7D0(0x1E); + HuAudFadeOut(0x3E8); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + + while (WipeStatGet() != 0) { + fn_1_1B7D0(1); + } + HuAudAllStop(); + omOvlReturnEx(1, 1); + + while (TRUE) { + fn_1_1B7D0(1); + } +} + +void fn_1_33F8(void) +{ + s16 var_r31; + + if (SLSaveFlagGet() != 0) { + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + espInit(); + HuPrcVSleep(); + var_r31 = espEntry(0x860020, 0x1388, 0); + espPosSet(var_r31, 288.0f, 240.0f); + espAttrReset(var_r31, HUSPR_ATTR_DISPOFF); + Hu3DBGColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + SLCommonSet(); + if (SLSave() == 0) { + GWSystem.save_mode = 1; + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + } +} + +void fn_1_3508(void) +{ + s16 var_r31; + + fn_1_1B7D0(0x1E); + HuAudFadeOut(0x3E8); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + + while (WipeStatGet() != 0) { + fn_1_1B7D0(1); + } + + HuAudAllStop(); + CharModelKill(-1); + MGSeqKillAll(); + if (omovlevtno != 0) { + fn_1_1B7D0(0x3C); + fn_1_33F8(); + } + mgQuitExtraF = 0; + omOvlReturnEx(1, 1); + + while (TRUE) { + fn_1_1B7D0(1); + } +} + +void fn_1_36A4(void) +{ + omOvlHisData *sp8; + + fn_1_1B7D0(0x1E); + HuAudSStreamAllFadeOut(0x3E8); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_1B7D0(1); + } + CharModelKill(-1); + MGSeqKillAll(); + sp8 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MPEX, 2, 0); + mgQuitExtraF = 0; + omOvlCallEx(OVL_ZTAR, 1, 0, 0); + while (TRUE) { + fn_1_1B7D0(1); + } +} + +void fn_1_3758(s32 arg0, s32 arg1) +{ + s32 spC[10][3] = { + { 0x60, 0x01, 0x00 }, + { 0x61, 0x01, 0x01 }, + { 0x45, 0x01, 0x02 }, + { 0x3C, 0x01, 0x03 }, + { 0x3B, 0x01, 0x04 }, + { 0x32, 0x01, 0x05 }, + { 0x41, 0x01, 0x06 }, + { 0x42, 0x01, 0x07 }, + { 0x43, 0x01, 0x08 }, + { 0x44, 0x01, 0x09 }, + }; + omOvlHisData *sp8; + s32 var_r29; + + fn_1_1B7D0(0x1E); + HuAudSeqAllFadeOut(0x3E8); + HuAudSStreamAllFadeOut(0x3E8); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_1B7D0(1); + } + if (arg0 == 0 || arg0 == 1) { + var_r29 = (arg1 * 0xA) + 0xA; + BoardPartyConfigSet(0, 0, 0, var_r29, 0, 0, 0, 0); + BoardSaveInit(arg0 + 7); + spC[arg0][2] += (arg1 * 0xA); + } + else if (arg0 == 4) { + GWSystem.mg_type = arg1; + spC[arg0][2] += (arg1 * 0xA); + } + + sp8 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MPEX, spC[arg0][1], spC[arg0][2]); + HuDataDirClose(DATA_MAKE_NUM(DATADIR_MPEX, 0x00)); + HuDataDirClose(0x150000); + CharModelKill(-1); + CharKill(-1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudAllStop(); + if (arg0 > 1) { + mgPracticeEnableF = 1; + } + mgQuitExtraF = 0; + omOvlCallEx(spC[arg0][0], 1, 0, 0); + while (TRUE) { + fn_1_1B7D0(1); + } +} + +s32 lbl_1_data_294 = -1; +s32 lbl_1_data_298 = -1; + +void fn_1_397C(void) +{ + if (omovlevtno != 2) { + lbl_1_data_298 = HuAudSeqPlay(0x2E); + } + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_1B7D0(1); + } + fn_1_1B7D0(0x3C); +} + +void fn_1_39F4(void) +{ + fn_1_1B834(); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x330000, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 1, 0xF, 1); + fn_1_1B9F4(); + fn_1_1B7D0(0x3C); + fn_1_1B834(); + fn_1_1BA78(0x330001, 5, -1); + if (fn_1_1BBA4(1) == 0) { + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x330002, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 1, 0xF, 1); + } + fn_1_1B9F4(); + fn_1_1B7D0(0x3C); +} + +void fn_1_3AF8(void) +{ + s16 var_r29; + s32 var_r30; + s32 var_r31; + + var_r31 = -1; + var_r30 = 0; + fn_1_1B834(); + while (TRUE) { + fn_1_1B7D0(1); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x330003, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 1, 0xF, 1); + fn_1_1BF1C(0x33004C); + var_r31 = -1; + lbl_1_bss_3B0.unk_08 = 0; + lbl_1_bss_3B0.unk_04 = (MpexDllUnkFunc2)fn_1_11FC0; + while (TRUE) { + fn_1_1B7D0(1); + if (var_r31 != lbl_1_bss_3B0.unk_08) { + HuAudFXPlay(0); + fn_1_11A3C(var_r31); + var_r31 = lbl_1_bss_3B0.unk_08; + switch (lbl_1_bss_3B0.unk_08) { + case 0: + fn_1_1BA78(0x330005, -1, 1); + break; + case 1: + fn_1_1BA78(0x330012, -1, 1); + break; + case 2: + fn_1_1BA78(0x330023, -1, 1); + break; + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + var_r30 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r30 = 0; + break; + } + else { + if (lbl_1_bss_180[0xA] == 1) { + if (HuPadStkX[0] <= -0x1E) { + lbl_1_bss_3B0.unk_08 = 0; + } + else if (HuPadStkX[0] >= 0x1E) { + lbl_1_bss_3B0.unk_08 = 1; + } + else if (HuPadStkY[0] >= 0x1E) { + lbl_1_bss_3B0.unk_08 = 2; + } + else if ((HuPadStkY[0] <= -0x1E) && (lbl_1_bss_3B0.unk_08 == 2)) { + if (HuPadStkX[0] >= 5) { + lbl_1_bss_3B0.unk_08 = 1; + } + else { + lbl_1_bss_3B0.unk_08 = 0; + } + } + } + else if (HuPadStkX[0] <= -0x1E) { + lbl_1_bss_3B0.unk_08 = 0; + } + else if (HuPadStkX[0] >= 0x1E) { + lbl_1_bss_3B0.unk_08 = 1; + } + } + } + lbl_1_bss_3B0.unk_04 = NULL; + fn_1_1C120(); + if (var_r30 == 0) { + fn_1_11E28(); + fn_1_1BA78(0x330004, 5, -1); + if (fn_1_1BBA4(1) == 0) { + fn_1_1B9F4(); + fn_1_3508(); + } + continue; + } + break; + } + fn_1_11E28(); + fn_1_1B9F4(); + lbl_1_bss_1B4 = lbl_1_bss_3B0.unk_08; +} + +void fn_1_4014(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_bss_2D8[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_901C; + } + do { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + if (lbl_1_bss_2D8[var_r31].unk_04 != NULL) { + break; + } + } + } while (var_r31 != 3); +} + +void fn_1_40AC(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_bss_2D8[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_9430; + } + do { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + if (lbl_1_bss_2D8[var_r31].unk_04 != NULL) { + break; + } + } + } while (var_r31 != 3); +} + +s32 fn_1_4144(s32 arg0) +{ + s32 var_r31; + + var_r31 = 1; + var_r31 = fn_1_140B0(0, arg0); + return var_r31; +} + +s32 fn_1_4184(s32 arg0) +{ + s32 var_r31 = 0; + s32 var_r30 = -1; + if (arg0 == 0) { + fn_1_148BC(lbl_1_bss_1B4); + } + fn_1_F8A4(); + fn_1_1B834(); + if (lbl_1_data_294 == -1) { + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x330007, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 1, 0xF, 1); + } + else { + lbl_1_bss_3B0.unk_0C = lbl_1_data_294; + lbl_1_data_294 = -1; + } + fn_1_1B7D0(1); + fn_1_1BF1C(0x33004D); + fn_1_1015C(); + while (TRUE) { + fn_1_1B7D0(1); + if (var_r30 != lbl_1_bss_3B0.unk_0C) { + var_r30 = lbl_1_bss_3B0.unk_0C; + HuAudFXPlay(0); + if (lbl_1_bss_180[lbl_1_bss_3B0.unk_0C] == 1) { + fn_1_1BA78(lbl_1_bss_3B0.unk_0C + MAKE_MESSID(0x33, 0x08), -1, 1); + } + else { + fn_1_1BA78(0x33002E, -1, 1); + } + fn_1_1B7D0(1); + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + if (lbl_1_bss_180[lbl_1_bss_3B0.unk_0C] == 1) { + HuAudFXPlay(2); + lbl_1_data_294 = lbl_1_bss_3B0.unk_0C; + var_r31 = 1; + break; + } + else { + HuAudFXPlay(4); + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r31 = 0; + break; + } + else { + if (HuPadStkY[0] >= 0x1E) { + fn_1_10268(-1); + } + else if (HuPadStkY[0] <= -0x1E) { + fn_1_10268(1); + } + } + } + fn_1_10228(); + fn_1_1C120(); + fn_1_1B9F4(); + fn_1_FDA0(); + if (var_r31 == 0) { + fn_1_148E4(lbl_1_bss_1B4); + } + lbl_1_bss_1B0 = lbl_1_bss_3B0.unk_0C; + return var_r31; +} + +s32 fn_1_444C(s32 arg0) +{ + s32 var_r31; + + var_r31 = 1; + if (arg0 == 0) { + lbl_1_bss_3B0.unk_10 = 0; + fn_1_D6AC(lbl_1_bss_1B0); + } + while (TRUE) { + fn_1_1B7D0(1); + if (HuPadBtnDown[0] & PAD_BUTTON_START) { + HuAudFXPlay(2); + var_r31 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r31 = 0; + break; + } + } + if (var_r31 == 0) { + fn_1_DBD0(lbl_1_bss_1B0); + } + return var_r31; +} + +s32 fn_1_4514(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r31 = 1; + var_r30 = lbl_1_bss_3B0.unk_10; + if ((lbl_1_bss_1B0 == 0) || (lbl_1_bss_1B0 == 1) || (lbl_1_bss_1B0 == 4)) { + if (lbl_1_bss_1B0 == 4) { + fn_1_E568(); + } + else { + fn_1_E174(); + } + while (TRUE) { + fn_1_1B7D0(1); + if (lbl_1_bss_3B0.unk_10 != var_r30) { + HuAudFXPlay(0); + fn_1_ED78(lbl_1_bss_3B0.unk_10, var_r30); + var_r30 = lbl_1_bss_3B0.unk_10; + } + if (HuPadStkY[0] <= -0x1E) { + lbl_1_bss_3B0.unk_10++; + if (lbl_1_bss_3B0.unk_10 > 2) { + lbl_1_bss_3B0.unk_10 = 0; + } + continue; + } + if (HuPadStkY[0] >= 0x1E) { + lbl_1_bss_3B0.unk_10--; + if (lbl_1_bss_3B0.unk_10 < 0) { + lbl_1_bss_3B0.unk_10 = 2; + } + continue; + } + if (HuPadBtnDown[0] & PAD_BUTTON_START) { + HuAudFXPlay(2); + var_r31 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r31 = 0; + break; + } + } + lbl_1_bss_1AC = lbl_1_bss_3B0.unk_10; + } + else { + var_r31 = 1; + } + if (var_r31 == 0) { + if (lbl_1_bss_1B0 == 4) { + fn_1_EB1C(); + } + else { + fn_1_E384(); + } + } + return var_r31; +} + +s32 fn_1_4730(s32 arg0) +{ + s32 var_r31; + + var_r31 = 1; + var_r31 = fn_1_140B0(1, arg0); + return var_r31; +} + +s32 fn_1_4770(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = -1; + if (arg0 == 0) { + fn_1_148BC(lbl_1_bss_1B4); + } + fn_1_10C30(); + fn_1_1B834(); + if (lbl_1_data_294 == -1) { + HuAudFXPlay(0x4A); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x330014, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 1, 0xF, 1); + } + else { + lbl_1_bss_3B0.unk_0C = lbl_1_data_294; + lbl_1_data_294 = -1; + } + fn_1_1B7D0(1); + fn_1_1BF1C(0x33004D); + fn_1_114D4(); + while (TRUE) { + fn_1_1B7D0(1); + if (var_r30 != lbl_1_bss_3B0.unk_0C) { + var_r30 = lbl_1_bss_3B0.unk_0C; + HuAudFXPlay(0); + if (lbl_1_bss_180[lbl_1_bss_3B0.unk_0C + 4] == 1) { + fn_1_1BA78(lbl_1_bss_3B0.unk_0C + 0x330015, -1, 1); + } + else { + fn_1_1BA78(0x33002E, -1, 1); + } + fn_1_1B7D0(1); + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + if (lbl_1_bss_180[lbl_1_bss_3B0.unk_0C + 4] == 1) { + HuAudFXPlay(2); + lbl_1_data_294 = lbl_1_bss_3B0.unk_0C; + var_r31 = 1; + break; + } + else { + HuAudFXPlay(4); + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r31 = 0; + break; + } + else { + if (HuPadStkY[0] >= 0x1E) { + fn_1_115E0(-1); + } + else if (HuPadStkY[0] <= -0x1E) { + fn_1_115E0(1); + } + } + } + fn_1_115A0(); + fn_1_1C120(); + fn_1_1B9F4(); + fn_1_110F8(); + if (var_r31 == 0) { + fn_1_148E4(lbl_1_bss_1B4); + } + lbl_1_bss_1B0 = lbl_1_bss_3B0.unk_0C + (lbl_1_bss_1B4 * 4); + return var_r31; +} + +s32 fn_1_4A58(s32 arg0) +{ + s32 var_r31 = 1; + var_r31 = fn_1_444C(arg0); + return var_r31; +} + +s32 fn_1_4B3C(s32 arg0) +{ + s32 var_r31 = 1; + var_r31 = fn_1_4514(arg0); + return var_r31; +} + +s32 fn_1_4B78(s32 arg0) +{ + s32 var_r30; + + var_r30 = 1; + lbl_1_bss_1B0 = 0xA; + var_r30 = fn_1_444C(arg0); + return var_r30; +} + +void fn_1_4C6C(void) +{ + s32 var_r31; + + Hu3DModelPosSet(lbl_1_bss_2D8[0].unk_00->model[1], -400.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[1].unk_00->model[1], 1000.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[2].unk_00->model[1], 0.0f, 1000.0f, 0.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelPosSet(lbl_1_bss_1B8[var_r31].unk_00->model[1], -225.0f + (150.0f * var_r31), 0.0f, 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1B8[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_4DF8(void) +{ + s32 var_r31; + + Hu3DModelPosSet(lbl_1_bss_2D8[0].unk_00->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[1].unk_00->model[1], 1000.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[2].unk_00->model[1], 0.0f, 1000.0f, 0.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelPosSet(lbl_1_bss_1B8[var_r31].unk_00->model[1], -225.0f + (150.0f * var_r31), 0.0f, 0.0f); + Hu3DModelAttrSet(lbl_1_bss_1B8[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_4F84(void) +{ + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_130[var_r31].unk_00 = GWPlayerCfg[var_r31].group; + lbl_1_bss_130[var_r31].unk_04 = GWPlayerCfg[var_r31].iscom; + lbl_1_bss_130[var_r31].unk_08 = GWPlayerCfg[var_r31].diff; + lbl_1_bss_130[var_r31].unk_0C = GWPlayerCfg[var_r31].character; + lbl_1_bss_130[var_r31].unk_10 = GWPlayerCfg[var_r31].pad_idx; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r30 == lbl_1_bss_130[var_r31].unk_10) { + GWPlayer[var_r30].team = GWPlayerCfg[var_r30].group = lbl_1_bss_130[var_r31].unk_00; + GWPlayer[var_r30].com = GWPlayerCfg[var_r30].iscom = lbl_1_bss_130[var_r31].unk_04; + GWPlayer[var_r30].diff = GWPlayerCfg[var_r30].diff = lbl_1_bss_130[var_r31].unk_08; + GWPlayer[var_r30].character = GWPlayerCfg[var_r30].character = lbl_1_bss_130[var_r31].unk_0C; + GWPlayer[var_r30].port = GWPlayerCfg[var_r30].pad_idx = lbl_1_bss_130[var_r31].unk_10; + break; + } + } + } +} + +s32 fn_1_5238(void) +{ + s32 var_r29 = 0; + if (lbl_1_bss_1B0 != 2) { + fn_1_A608(); + } + fn_1_4F84(); + fn_1_1B7D0(0x3C); + var_r29 = 0; + return var_r29; +} + +void fn_1_5530(void) +{ + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1B8[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_7FC4; + } + do { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1B8[var_r31].unk_04 != NULL) { + break; + } + } + } while (var_r31 != 4); + Hu3DModelAttrReset(lbl_1_bss_3B0.unk_00->model[5], HU3D_MOTATTR_PAUSE); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 2, 0xF, 1); + fn_1_28E0(lbl_1_bss_2D8[0].unk_00, 1, sp14, 0.0f, 9.0f, 0.0f, 1, 0); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 1, 0xF, 1); + fn_1_1B7D0(0x3C); +} + +void fn_1_56B8(void) +{ + Hu3DModelPosSet(lbl_1_bss_2D8[0].unk_00->model[1], -1000.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[1].unk_00->model[1], -400.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[2].unk_00->model[1], 0.0f, 1000.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_1B8[0].unk_00->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1B8[0].unk_00->model[1], HU3D_ATTR_DISPOFF); +} + +s32 fn_1_57E0(void) +{ + s32 var_r31 = 0; + fn_1_AD34(); + fn_1_1B7D0(0x3C); + var_r31 = 0; + return var_r31; +} + +// similar to fn_1_5530 +void fn_1_581C(void) +{ + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + + lbl_1_bss_1B8[0].unk_04 = (MpexDllUnkFunc2)fn_1_7FC4; + + do { + fn_1_1B7D0(1); + } while (lbl_1_bss_1B8[0].unk_04 != NULL); + + Hu3DModelAttrReset(lbl_1_bss_3B0.unk_00->model[5], HU3D_MOTATTR_PAUSE); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 2, 0xF, 1); + fn_1_28E0(lbl_1_bss_2D8[1].unk_00, 1, sp14, 0.0f, 9.0f, 0.0f, 1, 0); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 1, 0xF, 1); + fn_1_1B7D0(0x3C); +} + +void fn_1_595C(void) +{ + fn_1_3508(); +} + +void fn_1_5AF8(void) +{ + s32 var_r31; + + Hu3DModelPosSet(lbl_1_bss_2D8[0].unk_00->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[1].unk_00->model[1], 1000.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[2].unk_00->model[1], 0.0f, 1000.0f, 0.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_1B8[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + fn_1_C544(); + fn_1_D468(lbl_1_bss_1B0); +} + +void fn_1_5C1C(void) +{ + s32 var_r31; + + Hu3DModelPosSet(lbl_1_bss_2D8[0].unk_00->model[1], -1000.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[1].unk_00->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_2D8[2].unk_00->model[1], 0.0f, 1000.0f, 0.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_1B8[var_r31].unk_00->model[1], HU3D_ATTR_DISPOFF); + } + fn_1_C544(); + fn_1_D468(lbl_1_bss_1B0); +} + +void fn_1_5D40(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + s32 var_r31 = 0; + s32 var_r29 = 0; + s32 var_r30 = 0; + + if (omovlevtno == 1) { + lbl_1_bss_1B0 = omovlstat % 10; + if (lbl_1_bss_1B0 <= 3) { + lbl_1_bss_1B4 = 0; + } + else { + lbl_1_bss_1B4 = 1; + } + lbl_1_bss_1AC = omovlstat / 10; + if (mgQuitExtraF == 1) { + mgQuitExtraF = 0; + Hu3DMotionTimeSet(lbl_1_bss_3B0.unk_00->model[5], Hu3DMotionMotionMaxTimeGet(lbl_1_bss_3B0.unk_00->model[5]) - 5.0f); + if (lbl_1_bss_1B0 <= 3) { + fn_1_4F84(); + lbl_1_data_294 = lbl_1_bss_1B0; + fn_1_5AF8(); + var_r31 = 0x320; + } + else { + lbl_1_data_294 = lbl_1_bss_1B0 - 4; + fn_1_5C1C(); + var_r31 = 0x384; + } + } + else if (lbl_1_bss_1B0 <= 3) { + lbl_1_data_294 = lbl_1_bss_1B0; + if (lbl_1_bss_1B0 == 2) { + Hu3DMotionTimeSet(lbl_1_bss_3B0.unk_00->model[5], Hu3DMotionMotionMaxTimeGet(lbl_1_bss_3B0.unk_00->model[5]) - 5.0f); + fn_1_4DF8(); + var_r31 = 0x1FE; + } + else { + Hu3DMotionTimeSet(lbl_1_bss_3B0.unk_00->model[5], 33.0f); + fn_1_4C6C(); + var_r31 = 0x1F4; + } + } + else { + lbl_1_data_294 = lbl_1_bss_1B0 - 4; + Hu3DMotionTimeSet(lbl_1_bss_3B0.unk_00->model[5], 33.0f); + fn_1_56B8(); + var_r31 = 0x258; + } + } + else if (omovlevtno == 2) { + lbl_1_bss_1B0 = 0; + lbl_1_bss_1B4 = 0; + var_r31 = 1; + } + else { + var_r31 = 0; + } + while (TRUE) { + fn_1_1B7D0(1); + switch (var_r31) { + case 0x0: + fn_1_397C(); + fn_1_25C4(lbl_1_bss_3B0.unk_00, 5, 5, 0, 0); + fn_1_1B7D0(0x3C); + fn_1_39F4(); + var_r31 = 0x64; + break; + case 0x1: + Hu3DMotionTimeSet(lbl_1_bss_3B0.unk_00->model[5], Hu3DMotionMotionMaxTimeGet(lbl_1_bss_3B0.unk_00->model[5]) - 5.0f); + fn_1_397C(); + var_r31 = 0x64; + break; + case 0x64: + fn_1_117D4(); + fn_1_3AF8(); + fn_1_11930(); + var_r30 = 0; + var_r31 = 0x65; + break; + case 0x65: + fn_1_4014(); + + if (lbl_1_bss_1B4 == 2) { + var_r31 = (lbl_1_bss_1B4 * 0x64) + 0xC9; + } + else { + var_r31 = (lbl_1_bss_1B4 * 0x64) + 0xC8; + } + break; + case 0x66: + fn_1_40AC(); + var_r31 = 0x64; + break; + case 0xC8: + var_r29 = fn_1_4144(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0xC9; + } + else { + var_r30 = 1; + var_r31 = 0x66; + } + break; + case 0xC9: + fn_1_F0C0(); + var_r29 = fn_1_4184(var_r30); + fn_1_F40C(); + if (var_r29 != 0) { + fn_1_C544(); + var_r30 = 0; + var_r31 = 0xCA; + } + else { + var_r30 = 1; + var_r31 = 0x66; + } + break; + case 0xCA: + var_r29 = fn_1_444C(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0xCB; + } + else { + fn_1_C860(); + var_r30 = 1; + var_r31 = 0xC9; + } + break; + case 0xCB: + var_r29 = fn_1_4514(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0xCC; + } + else { + var_r30 = 1; + var_r31 = 0xCA; + } + break; + case 0xCC: + fn_1_3758(lbl_1_bss_1B0, lbl_1_bss_1AC); + var_r31 = -1; + break; + case 0x12C: + var_r29 = fn_1_4730(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0x12D; + } + else { + var_r30 = 1; + var_r31 = 0x66; + } + break; + case 0x12D: + fn_1_1045C(); + var_r29 = fn_1_4770(var_r30); + fn_1_107EC(); + if (var_r29 != 0) { + fn_1_C544(); + var_r30 = 0; + var_r31 = 0x12E; + } + else { + var_r30 = 1; + var_r31 = 0x66; + } + break; + case 0x12E: + var_r29 = fn_1_4A58(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0x12F; + } + else { + fn_1_C860(); + var_r30 = 1; + var_r31 = 0x12D; + } + break; + case 0x12F: + var_r29 = fn_1_4B3C(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0x130; + } + else { + var_r30 = 1; + var_r31 = 0x12E; + } + break; + case 0x130: + fn_1_3758(lbl_1_bss_1B0, lbl_1_bss_1AC); + var_r31 = -1; + continue; + case 0x191: + fn_1_C544(); + var_r29 = fn_1_4B78(var_r30); + if (var_r29 != 0) { + var_r30 = 0; + var_r31 = 0x192; + } + else { + fn_1_C860(); + var_r30 = 1; + var_r31 = 0x66; + } + break; + case 0x192: + fn_1_36A4(); + case 0x1F4: + fn_1_397C(); + var_r29 = fn_1_5238(); + if (var_r29 == 1) { + var_r31 = 0xCC; + } + else if (var_r29 == 0) { + var_r31 = 0x1F5; + } + else { + var_r31 = 0x2BC; + } + break; + case 0x1F5: + fn_1_5530(); + var_r31 = 0xC9; + break; + case 0x1FE: + fn_1_397C(); + var_r31 = 0xC9; + break; + case 0x258: + fn_1_397C(); + var_r29 = fn_1_57E0(); + if (var_r29 == 1) { + var_r31 = 0x130; + } + else if (var_r29 == 0) { + var_r31 = 0x259; + } + else { + var_r31 = 0x2BC; + } + break; + case 0x259: + fn_1_581C(); + var_r31 = 0x12D; + break; + case 0x2BC: + fn_1_3508(); + case 0x320: + fn_1_397C(); + var_r31 = 0xCA; + var_r30 = 1; + break; + case 0x384: + fn_1_397C(); + var_r31 = 0x12E; + var_r30 = 1; + break; + default: + break; + } + } +} + +void fn_1_7BC8(omObjData *object) +{ + s32 var_r30; + + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x00)); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "extra_ent_fix0-obj41"); + fn_1_25C4(object, 1, 1, 0, 1); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + object->model[var_r30 + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x02)); + Hu3DModelAttrSet(object->model[var_r30 + 1], HU3D_ATTR_DISPOFF); + } + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x01)); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0.0f, 0.0f, 270.0f); + if (omovlevtno == 2) { + fn_1_25C4(object, 5, 5, 0, 0); + return; + } + if (omovlevtno == 1) { + Hu3DModelAttrSet(object->model[5], HU3D_MOTATTR_PAUSE); + return; + } + fn_1_25C4(object, 5, 5, 0, 2); +} + +void fn_1_7D80(void) +{ + omObjData *var_r29; + omObjData *var_r31; + s32 var_r30; + + var_r29 = NULL; + var_r29 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, NULL); + lbl_1_bss_3B0.unk_00 = var_r29; + lbl_1_bss_3B0.unk_04 = NULL; + var_r31 = lbl_1_bss_3B0.unk_00; + fn_1_7BC8(var_r31); + while (TRUE) { + fn_1_1B7D0(1); + if (lbl_1_bss_3B0.unk_04 == NULL) { + continue; + } + lbl_1_bss_3B0.unk_04(lbl_1_bss_3B0.unk_00, &lbl_1_bss_3B0); + } +} + +void fn_1_7FC4(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + Vec sp14 = { 700.0f, 0.0f, 0.0f }; + fn_1_1B7D0((4 - object->work[0]) * 5); + fn_1_25C4(object, 1, 2, 0xA, 1); + object->work[1] = 0; + while (object->work[1] <= 0xA) { + fn_1_1B7D0(1); + Hu3DData[object->model[1]].rot.y = fn_1_1B52C(0.0f, 90.0f, object->work[1], 10.0f); + object->work[1]++; + } + + fn_1_25C4(object, 1, 3, 0xA, 1); + fn_1_28E0(object, 1, sp14, 0.0f, 9.0f, 0.0f, 1, 0); + fn_1_25C4(object, 1, 1, 0xA, 1); + arg1->unk_04 = NULL; +} + +void fn_1_816C(omObjData *object, s32 arg1) +{ + s32 var_r30 = GWPlayerCfg[arg1].character; + object->model[1] = CharModelCreate(var_r30, 4); + object->motion[1] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + object->motion[3] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[4] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48)); + object->motion[5] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49)); + Hu3DModelPosSet(object->model[1], -150.0f + (100.0f * arg1), 0.0f, 0.0f); + Hu3DModelShadowSet(object->model[1]); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + CharModelLayerSetAll2(2); + fn_1_25C4(object, 1, 1, 0, 1); + CharKill(var_r30); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x02)); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); +} + +void fn_1_8320(void) +{ + MpexDllUnkStruct4 *temp_r5; + omObjData *var_r28; + omObjData *var_r31; + s16 var_r29; + u32 var_r30; + + var_r30 = lbl_1_bss_AC; + lbl_1_bss_AC = var_r30 + 1; + var_r28 = NULL; + var_r28 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, NULL); + lbl_1_bss_1B8[var_r30].unk_00 = var_r28; + lbl_1_bss_1B8[var_r30].unk_04 = NULL; + lbl_1_bss_1B8[var_r30].unk_00->work[0] = var_r30; + var_r31 = lbl_1_bss_1B8[var_r30].unk_00; + fn_1_816C(var_r31, var_r30); + while (TRUE) { + fn_1_1B7D0(1); + if (lbl_1_bss_1B8[var_r30].unk_04 == NULL) { + continue; + } + lbl_1_bss_1B8[var_r30].unk_04(lbl_1_bss_1B8[var_r30].unk_00, &lbl_1_bss_1B8[var_r30]); + } +} + +void fn_1_85C4(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x03)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x04)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x06)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x06)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x07)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x08)); + Hu3DModelPosSet(object->model[1], -200.0f, 0.0f, 0.0f); + Hu3DModelShadowSet(object->model[1]); + CharModelEffectNpcInit(object->model[1], object->motion[2], 0, 0xF); + fn_1_25C4(object, 1, 1, 0, 1); +} + +void fn_1_8758(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x09)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x0A)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x0B)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x0C)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x0D)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x0E)); + Hu3DModelPosSet(object->model[1], 200.0f, 0.0f, 0.0f); + Hu3DModelShadowSet(object->model[1]); + CharModelEffectNpcInit(object->model[1], object->motion[2], 0, 0x10); + fn_1_25C4(object, 1, 1, 0, 1); +} + +void fn_1_88EC(omObjData *object) +{ + float var_f31; + + var_f31 = 0.0f; + var_f31 = fn_1_1B714(0.0f, 1.0f, object->work[3], 180.0f); + Hu3DData[object->model[1]].pos.y += var_f31; + if (object->work[3]++ >= 0xB4) { + object->work[3] -= 0xB4; + } +} + +void fn_1_89C4(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x0F)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x10)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MPEX, 0x11)); + Hu3DModelPosSet(object->model[1], 0.0f, 400.0f, 0.0f); + if (lbl_1_bss_180[0xA] == 0) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + fn_1_25C4(object, 1, 1, 0, 1); + object->func = fn_1_88EC; +} + +void fn_1_8ADC(void) +{ + omObjData *var_r31; + omObjData *var_r30; + omObjData *var_r29; + s32 var_r28; + omObjData *var_r27; + + var_r28 = lbl_1_bss_B0; + lbl_1_bss_B0 = var_r28 + 1; + var_r27 = NULL; + var_r27 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, NULL); + lbl_1_bss_2D8[var_r28].unk_00 = var_r27; + lbl_1_bss_2D8[var_r28].unk_04 = 0; + lbl_1_bss_2D8[var_r28].unk_00->work[0] = var_r28; + switch (var_r28) { + case 0: + var_r31 = lbl_1_bss_2D8[var_r28].unk_00; + fn_1_85C4(var_r31); + break; + case 1: + var_r30 = lbl_1_bss_2D8[var_r28].unk_00; + fn_1_8758(var_r30); + break; + case 2: + var_r29 = lbl_1_bss_2D8[var_r28].unk_00; + fn_1_89C4(var_r29); + break; + } + while (TRUE) { + fn_1_1B7D0(1); + if (lbl_1_bss_2D8[var_r28].unk_04 == NULL) { + continue; + } + lbl_1_bss_2D8[var_r28].unk_04(lbl_1_bss_2D8[var_r28].unk_00, &lbl_1_bss_2D8[var_r28]); + } +} + +void fn_1_901C(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + float var_f31; + + s32 var_r30; + s32 *var_r29; + s32 *var_r28; + s32 *var_r27; + s32 *var_r26; + void *var_r25; + + Vec sp50 = { 0.0f, 0.0f, 0.0f }; + Vec sp44 = { -1000.0f, 0.0f, 0.0f }; + Vec sp38 = { 1000.0f, 0.0f, 0.0f }; + switch (object->work[0]) { + case 0: + fn_1_25C4(object, 1, 3, 0xF, 1); + if (lbl_1_bss_1B4 == 0) { + fn_1_28E0(object, 1, sp50, 0.0f, 9.0f, 0.0f, 1, 0); + } + else { + fn_1_28E0(object, 1, sp44, 0.0f, 9.0f, 0.0f, 1, 0); + } + fn_1_25C4(object, 1, 1, 0xF, 1); + break; + case 1: + fn_1_25C4(object, 1, 2, 0xF, 1); + if (lbl_1_bss_1B4 == 1) { + fn_1_28E0(object, 1, sp50, 0.0f, 9.0f, 0.0f, 1, 0); + } + else { + fn_1_28E0(object, 1, sp38, 0.0f, 9.0f, 0.0f, 1, 0); + } + fn_1_25C4(object, 1, 1, 0xF, 1); + break; + case 2: + if (lbl_1_bss_1B4 == 2) { + var_f31 = Hu3DData[object->model[1]].pos.y; + for (var_r30 = 0; var_r30 <= 0x78; var_r30++) { + fn_1_1B7D0(1); + Hu3DData[object->model[1]].pos.y = fn_1_1B64C(var_f31, 250.0f, var_r30, 120.0f); + } + } + else { + var_f31 = Hu3DData[object->model[1]].pos.y; + for (var_r30 = 0; var_r30 <= 0x78; var_r30++) { + fn_1_1B7D0(1); + Hu3DData[object->model[1]].pos.y = fn_1_1B64C(var_f31, 1000.0f, var_r30, 120.0f); + } + } + break; + } + arg1->unk_04 = 0; +} + +void fn_1_9430(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + float var_f31; + s32 var_r30; + s32 *var_r29; + s32 *var_r28; + + Vec sp38 = { 0.0f, 0.0f, 0.0f }; + Vec sp2C = { -200.0f, 0.0f, 0.0f }; + Vec sp20 = { 200.0f, 0.0f, 0.0f }; + switch (object->work[0]) { + case 0: + fn_1_25C4(object, 1, 2, 0xF, 1); + fn_1_28E0(object, 1, sp2C, 0.0f, 9.0f, 0.0f, 1, 0); + fn_1_25C4(object, 1, 1, 0xF, 1); + break; + case 1: + fn_1_25C4(object, 1, 2, 0xF, 1); + fn_1_28E0(object, 1, sp20, 0.0f, 9.0f, 0.0f, 1, 0); + fn_1_25C4(object, 1, 1, 0xF, 1); + break; + case 2: + var_f31 = Hu3DData[object->model[1]].pos.y; + for (var_r30 = 0; var_r30 <= 0x78; var_r30++) { + fn_1_1B7D0(1); + Hu3DData[object->model[1]].pos.y = fn_1_1B574(var_f31, 400.0f, var_r30, 120.0f); + } + break; + } + arg1->unk_04 = 0; +} + +void fn_1_96B4(void) +{ + MpexDllUnkStruct *var_r31 = &lbl_1_bss_64; + var_r31->unk_08.x = 0.0f; + var_r31->unk_08.y = 165.0f; + var_r31->unk_08.z = 0.0f; + var_r31->unk_20.x = 0.0f; + var_r31->unk_20.y = 0.0f; + var_r31->unk_20.z = 0.0f; + var_r31->unk_38 = 1200.0f; +} + +s32 lbl_1_data_2B4[4] = { -1, -1, -1, -1 }; +s32 lbl_1_data_2C4 = -1; + +void fn_1_9740(s32 arg0) +{ + s32 spC[4]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r29 = 0; + var_r30 = 0; + lbl_1_bss_B4 = 0; + lbl_1_data_2B4[0] = lbl_1_data_2B4[1] = lbl_1_data_2B4[2] = lbl_1_data_2B4[3] = -1; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[var_r31] = fn_1_B248(arg0, var_r31); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (spC[var_r31] >= var_r30) { + var_r30 = spC[var_r31]; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r30 == spC[var_r31]) { + lbl_1_bss_B4++; + lbl_1_data_2B4[var_r29++] = var_r31; + } + } + lbl_1_data_2C4 = var_r30; +} + +void fn_1_9890(void) +{ + fn_1_1B834(); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x33000C, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[0].unk_00, 1, 1, 0xF, 1); + fn_1_1B9F4(); +} + +void fn_1_9908(void) +{ + fn_1_1B834(); + HuAudFXPlay(0x4A); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x33001B, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 1, 0xF, 1); + fn_1_1B9F4(); +} + +void fn_1_9988(s32 arg0) +{ + s32 var_r31; + u32 var_r30; + u32 var_r29; + + fn_1_1B834(); + if (((mgRecordExtra == 0) && (arg0 != 4)) || ((mgRecordExtra >= 600*REFRESH_RATE) && (arg0 == 4))) { + HuAudFXPlay(0x4A); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(arg0 + 0x330096, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 1, 0xF, 1); + } + else { + if ((arg0 == 4) || (arg0 == 8)) { + var_r31 = mgRecordExtra; + var_r30 = var_r31 / (600*REFRESH_RATE); + var_r31 -= var_r30 * (600*REFRESH_RATE); + var_r29 = var_r31 / (60*REFRESH_RATE); + var_r31 -= var_r29 * (60*REFRESH_RATE); + sprintf(lbl_1_bss_120, "%d", var_r29); + fn_1_1BB4C((u32)&lbl_1_bss_120, 0); + var_r30 = var_r31 / (10*REFRESH_RATE); + var_r31 -= var_r30 * (10*REFRESH_RATE); + var_r29 = var_r31 / REFRESH_RATE; + var_r31 -= var_r29 * REFRESH_RATE; + sprintf(lbl_1_bss_118, "%d%d", var_r30, var_r29); + fn_1_1BB4C((u32)lbl_1_bss_118, 1); + if (arg0 == 8) { + var_r31 = (101.5/REFRESH_RATE) * (float)var_r31; + } + else { + var_r31 = (100.0/REFRESH_RATE) * (float)var_r31; + } + var_r30 = var_r31 / 10; + var_r31 -= var_r30 * 0xA; + var_r29 = var_r31; + sprintf(lbl_1_bss_110, "%d%d", var_r30, var_r29); + fn_1_1BB4C((u32)lbl_1_bss_110, 2); + } + else { + sprintf(lbl_1_bss_110, "%d", mgRecordExtra); + fn_1_1BB4C((u32)lbl_1_bss_110, 0); + } + HuAudFXPlay(0x4A); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(arg0 + 0x330018, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 1, 0xF, 1); + } + fn_1_1B9F4(); +} + +void fn_1_9CD4(s32 arg0) +{ + fn_1_1B834(); + fn_1_1BB4C(fn_1_BD10(arg0, mgRecordExtra), 3); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(0x330090, -1, -1); + fn_1_25C4(lbl_1_bss_2D8[1].unk_00, 1, 1, 0xF, 1); + fn_1_1B9F4(); +} + +void fn_1_9D6C(void) +{ + fn_1_1B834(); + switch (lbl_1_bss_B4) { + case 1: + fn_1_1BB4C(GWPlayerCfg[lbl_1_data_2B4[0]].character, 0); + fn_1_1BA78(0x33000D, -1, -1); + break; + case 2: + fn_1_1BB4C(GWPlayerCfg[lbl_1_data_2B4[0]].character, 0); + fn_1_1BB4C(GWPlayerCfg[lbl_1_data_2B4[1]].character, 1); + fn_1_1BA78(0x33000E, -1, -1); + break; + case 3: + fn_1_1BB4C(GWPlayerCfg[lbl_1_data_2B4[0]].character, 0); + fn_1_1BB4C(GWPlayerCfg[lbl_1_data_2B4[1]].character, 1); + fn_1_1BB4C(GWPlayerCfg[lbl_1_data_2B4[2]].character, 2); + fn_1_1BA78(0x33000F, -1, -1); + break; + case 4: + fn_1_1BA78(0x330010, -1, -1); + break; + } + fn_1_1B9F4(); +} + +void fn_1_9F10(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + float var_f31; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 = 30.0 * sind(8.0f * (lbl_1_bss_B8 + (var_r31 * 0x78))); + Hu3DModelPosSet(object->model[var_r31 + 1], -200.0f + (200.0f * var_r31), 850.0f, 0.0f); + Hu3DModelRotSet(object->model[var_r31 + 1], 0.0f, 0.0f, var_f31); + Hu3DModelScaleSet(object->model[var_r31 + 1], 1.5f, 2.0f, 1.5f); + } + lbl_1_bss_B8 += 0.5f; +} + +void fn_1_A0E4(omObjData *object, MpexDllUnkStruct4 *arg_1) +{ + float var_f31; + float var_f30; + s32 var_r30; + + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(object->model[2], 0.0f); + for (var_r30 = 0; var_r30 <= 0xF; var_r30++) { + fn_1_1B7D0(1); + var_f30 = fn_1_1B52C(0.0f, 0.5f, var_r30, 15.0f); + var_f31 = fn_1_1B52C(0.0f, 1.5f, var_r30, 15.0f); + Hu3DModelPosSet(object->model[2], Hu3DData[object->model[1]].pos.x, 850.0f, Hu3DData[object->model[1]].pos.z); + Hu3DModelScaleSet(object->model[2], var_f31, 2.0f, var_f31); + Hu3DModelTPLvlSet(object->model[2], var_f30); + } + arg_1->unk_04 = NULL; +} + +void fn_1_A2AC(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + float var_f31; + s32 var_r30; + + for (var_r30 = 0; var_r30 <= 0xF; var_r30++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B52C(0.5f, 0.0f, var_r30, 15.0f); + Hu3DModelTPLvlSet(object->model[2], var_f31); + } + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(object->model[2], 0.0f); + arg1->unk_04 = NULL; +} + +void fn_1_A3A4(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + + lbl_1_bss_3B0.unk_04 = (MpexDllUnkFunc2)fn_1_9F10; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_3B0.unk_00->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(lbl_1_bss_3B0.unk_00->model[var_r31 + 1], 0.0f); + } + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B52C(0.0f, 0.5f, var_r31, 60.0f); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + Hu3DModelTPLvlSet(lbl_1_bss_3B0.unk_00->model[var_r30 + 1], var_f31); + } + } + fn_1_1B7D0(0x5A); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B52C(0.5f, 0.0f, var_r31, 60.0f); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + Hu3DModelTPLvlSet(lbl_1_bss_3B0.unk_00->model[var_r30 + 1], var_f31); + } + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_3B0.unk_00->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + Hu3DModelTPLvlSet(lbl_1_bss_3B0.unk_00->model[var_r31 + 1], 0.0f); + } + lbl_1_bss_3B0.unk_04 = NULL; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_A608(void) +{ + s32 var_r31; + s32 var_r29; + + fn_1_9740(lbl_1_bss_1B0); + OSReport("CNT:%d, WIN:%d %d %d %d\n", lbl_1_bss_B4, lbl_1_data_2B4[0], lbl_1_data_2B4[1], lbl_1_data_2B4[2], lbl_1_data_2B4[3]); + fn_1_9890(); + if (lbl_1_data_298 != -1) { + HuAudSeqPause(lbl_1_data_298, 1, 0x1F4); + } + HuPrcChildCreate(fn_1_A3A4, 0x3E8, 0x1000, 0, HuPrcCurrentGet()); + fn_1_1B7D0(0xF); + HuAudFXPlay(0x9E); + fn_1_1B7D0(0xA5); + HuAudFXPlay(0x9F); + HuAudFXPlay(0xA8); + HuAudFXPlay(0x9A); + if (lbl_1_data_298 != -1) { + HuAudSeqPause(lbl_1_data_298, 0, 0x7D0); + } + if ((lbl_1_bss_B4 >= 1) && (lbl_1_data_2C4 != 0)) { + for (var_r31 = 0; var_r31 < lbl_1_bss_B4; var_r31++) { + lbl_1_bss_1B8[lbl_1_data_2B4[var_r31]].unk_04 = (MpexDllUnkFunc2)fn_1_A0E4; + OSReport("CNT:%d, WIN:%d %d %d %d\n", lbl_1_bss_B4, lbl_1_data_2B4[0], lbl_1_data_2B4[1], lbl_1_data_2B4[2], lbl_1_data_2B4[3]); + } + fn_1_9D6C(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r31 == lbl_1_data_2B4[var_r29]) { + fn_1_25C4(lbl_1_bss_1B8[var_r31].unk_00, 1, 4, 0xF, 0); + break; + } + } + if (var_r29 == 4) { + fn_1_25C4(lbl_1_bss_1B8[var_r31].unk_00, 1, 5, 0xF, 0); + } + } + } + else { + fn_1_1B834(); + fn_1_25C4(lbl_1_bss_2D8->unk_00, 1, 3, 0xF, 1); + fn_1_1BA78(lbl_1_bss_1B0 + MAKE_MESSID(0x33, 0x96), -1, -1); + fn_1_25C4(lbl_1_bss_2D8->unk_00, 1, 1, 0xF, 1); + fn_1_1B9F4(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_25C4(lbl_1_bss_1B8[var_r31].unk_00, 1, 5, 0xF, 0); + } + } + fn_1_1B7D0(0x3C); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_25C4(lbl_1_bss_1B8[var_r31].unk_00, 1, 1, 0xF, 1); + } + fn_1_B004(); + fn_1_1B7D0(1); + fn_1_B870(lbl_1_bss_1B0); + fn_1_1B7D0(0x3C); + fn_1_1B7D0(0x3C); + fn_1_1BD00(0x240007, 1); + do { + fn_1_1B7D0(1); + } while ((HuPadBtnDown[0] & 0x100) == 0); + HuAudFXPlay(2); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1B8[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_A2AC; + } + fn_1_1C120(); + fn_1_B9A8(lbl_1_bss_1B0); + fn_1_1B7D0(1); + fn_1_B210(); +} + +void fn_1_AD34(void) +{ + fn_1_9908(); + fn_1_1B7D0(0x3C); + fn_1_9988(lbl_1_bss_1B0); + if (lbl_1_data_298 != -1) { + HuAudSeqPause(lbl_1_data_298, 1, 0x1F4); + } + fn_1_1B7D0(0xF); + HuAudFXPlay(0x9E); + fn_1_1B7D0(0xA5); + lbl_1_bss_1B8[0].unk_04 = (MpexDllUnkFunc2)fn_1_A0E4; + #if VERSION_NTSC + if (((mgRecordExtra == 0) && (lbl_1_bss_1B0 != 4)) || ((mgRecordExtra >= 600*REFRESH_RATE) && (lbl_1_bss_1B0 == 4))) { + fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 5, 0xF, 0); + } + else { + fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 4, 0xF, 0); + } + #else + if (((mgRecordExtra == 0) && (lbl_1_bss_1B0 != 4)) || ((mgRecordExtra >= 500*REFRESH_RATE) && (lbl_1_bss_1B0 == 4))) { + fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 5, 0xF, 0); + } + else { + fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 4, 0xF, 0); + } + #endif + fn_1_BC18(); + fn_1_1B7D0(1); + HuAudFXPlay(0x9F); + HuAudFXPlay(0xA8); + HuAudFXPlay(0x9A); + if (lbl_1_data_298 != -1) { + HuAudSeqPause(lbl_1_data_298, 0, 0x7D0); + } + fn_1_C0DC(lbl_1_bss_1B0, rand8()); + fn_1_1B7D0(0x3C); + fn_1_25C4(lbl_1_bss_1B8[0].unk_00, 1, 1, 0xF, 1); + fn_1_9CD4(lbl_1_bss_1B0); + lbl_1_bss_1B8[0].unk_04 = (MpexDllUnkFunc2)fn_1_A2AC; + fn_1_C4D4(lbl_1_bss_1B0); + fn_1_1B7D0(1); + fn_1_BCD8(); +} + +void fn_1_B004(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + + var_r29 = HuSprGrpCreate(0x1B); + lbl_1_bss_10C = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x37)), 0xBB8, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x38)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 1, var_r30); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MPEX, 0x3E)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 2, var_r30); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x3B)); + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0xA, var_r30); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x3C)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x16, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x3D)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 0x1A, var_r30); + fn_1_B2E4(0); + fn_1_B7F4(0); +} + +void fn_1_B210(void) +{ + s32 var_r31; + + var_r31 = lbl_1_bss_10C; + HuSprGrpKill(var_r31); +} + +s32 fn_1_B248(s32 arg0, s32 arg1) +{ + s32 var_r31 = 0; + if (lbl_1_bss_1B0 <= 1) { + var_r31 = GWPlayer[arg1].coins; + } + else { + var_r31 = GWPlayerCoinWinGet(arg1); + OSReport("########## %d:%d\n", arg1, var_r31); + } + return var_r31; +} + +void fn_1_B2E4(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r24; + + var_r30 = lbl_1_bss_10C; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != -1) { + HuSprAttrReset(var_r30, 0, 4); + HuSprPosSet(var_r30, 0, 288.0f, 148.0f); + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 288.0f, 156.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, GWPlayerCfg[var_r31].character + 2, 4); + HuSprPosSet(var_r30, GWPlayerCfg[var_r31].character + 2, 201.0f, (var_r31 * 0x2A) + 0x60); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r29 = 0; var_r29 < 3; var_r29++) { + HuSprAttrReset(var_r30, 0xA + var_r29 + (var_r31 * 3), 4); + HuSprPosSet(var_r30, 0xA + var_r29 + (var_r31 * 3), (var_r29 * 0x1C) + 0xF7, (var_r31 * 0x2A) + 0x60); + } + var_r24 = fn_1_B248(0, var_r31); + var_r28 = var_r24 / 100; + if (var_r28 == 0) { + HuSprAttrSet(var_r30, (var_r31 * 3) + 0xA, 4); + } + HuSprBankSet(var_r30, (var_r31 * 3) + 0xA, var_r28); + var_r28 = (var_r24 % 100) / 10; + if ((var_r28 == 0) && ((var_r24 / 100) == 0)) { + HuSprAttrSet(var_r30, (var_r31 * 3) + 0xB, 4); + } + HuSprBankSet(var_r30, (var_r31 * 3) + 0xB, var_r28); + var_r28 = var_r24 % 10; + HuSprBankSet(var_r30, (var_r31 * 3) + 0xC, var_r28); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprPosSet(var_r30, var_r31 + 0x16, 358.0f, (var_r31 * 0x2A) + 0x60); + switch (arg0) { + case 0: + case 1: + HuSprBankSet(var_r30, var_r31 + 0x16, 0); + break; + case 3: + HuSprBankSet(var_r30, var_r31 + 0x16, 1); + break; + case 2: + break; + } + } + HuSprAttrReset(var_r30, 0x1A, 4); + HuSprPosSet(var_r30, 0x1A, 288.0f, 55.0f); + switch (arg0) { + case 2: + break; + case 0: + HuSprBankSet(var_r30, 0x1A, 0); + break; + case 1: + HuSprBankSet(var_r30, 0x1A, 1); + break; + case 3: + HuSprBankSet(var_r30, 0x1A, 2); + break; + } + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); + } + (void)var_r29; +} + +void fn_1_B7F4(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_10C; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 0.0f, -500.0f); +} + +void fn_1_B870(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30 = lbl_1_bss_10C; + + fn_1_B2E4(arg0); + for (var_r31 = 0; var_r31 < 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r30, 0.0f, var_f31); + } +} + +void fn_1_B9A8(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_10C; + for (var_r31 = 0; var_r31 < 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r28, 0.0f, var_f31); + } + var_r29 = lbl_1_bss_10C; + for (var_r30 = 0; var_r30 < 0x1B; var_r30++) { + HuSprAttrSet(var_r29, var_r30, 4); + } + HuSprGrpPosSet(var_r29, 0.0f, -500.0f); +} + +void fn_1_BB34(s32 arg0, s32 arg1) +{ + float sp10[2]; + s32 var_r31; + HuSprGrp *var_r30; + HuSprite *var_r29; + + var_r30 = &HuSprGrpData[winData[arg0].group]; + HuWinMesMaxSizeGet(1, sp10, arg1); + for (var_r31 = 0; var_r31 < var_r30->capacity; var_r31++) { + var_r29 = &HuSprData[var_r30->members[var_r31]]; + var_r29->x -= sp10[0] / 2; + var_r29->y -= 30.0f; + } +} + +void fn_1_BC18(void) +{ + s32 var_r31; + s32 var_r30 = HuSprGrpCreate(2); + + lbl_1_bss_108 = var_r30; + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x39)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x3A)), 0x7D0, 0); + HuSprGrpMemberSet(var_r30, 1, var_r31); + fn_1_BD78(-1, 0); +} + +void fn_1_BCD8(void) +{ + s32 var_r31 = lbl_1_bss_108; + HuSprGrpKill(var_r31); +} + +u32 fn_1_BD10(s32 arg0, s32 arg1) +{ + s32 var_r31 = fn_1_C898(arg1, arg0, lbl_1_bss_1AC, 0); + return ((arg0 - 4) * 0xA) + MAKE_MESSID(0x33, 0x00) + var_r31 + 0x51; +} + +void fn_1_BD78(s32 arg0, s32 arg1) +{ + float sp10[2]; + s32 var_r31; + s32 var_r30; + u32 var_r25; + + var_r31 = lbl_1_bss_108; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + HuSprAttrSet(var_r31, var_r30, 4); + } + if (arg0 != -1) { + HuSprAttrReset(var_r31, 0, 4); + HuSprAttrReset(var_r31, 1, 4); + HuSprBankSet(var_r31, 1, arg0 - 4); + HuSprGrpPosSet(var_r31, 288.0f, 100.0f); + HuSprGrpScaleSet(var_r31, 0.0f, 0.0f); + OSReport("#################### SCORE(%d-%d) : %d\n", arg0, lbl_1_bss_1AC, mgRecordExtra); + var_r25 = fn_1_BD10(arg0, mgRecordExtra); + HuWinMesMaxSizeGet(1, sp10, var_r25); + lbl_1_bss_104 = HuWinCreate(0.0f, 0.0f, sp10[0], sp10[1], 0); + HuWinBGTPLvlSet(lbl_1_bss_104, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_104, 0); + HuWinDispOn(lbl_1_bss_104); + fn_1_BB34(lbl_1_bss_104, var_r25); + HuWinMesSet(lbl_1_bss_104, var_r25); + HuWinPosSet(lbl_1_bss_104, 296.0f, 100.0f); + } +} + +void fn_1_C06C(void) +{ + s32 var_r31; + s32 var_r30 = lbl_1_bss_108; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuWinKill(lbl_1_bss_104); +} + +void fn_1_C0DC(s32 arg0, s32 arg1) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r24; + s32 var_r22; + + var_r30 = 0; + var_r22 = lbl_1_bss_108; + var_f30 = 1.5f; + fn_1_BD78(arg0, arg1); + for (var_r24 = 0; var_r24 < 0xA; var_r24++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(var_f30, 1.0f, var_r30, 5.0f); + if (++var_r30 == 5) { + if (var_f30 > 1.0f) { + var_f30 -= 0.1f; + } + var_r30 = 0; + } + HuSprGrpScaleSet(var_r22, var_f31, var_f31); + HuWinScaleSet(lbl_1_bss_104, var_f31, var_f31); + } +} + +void fn_1_C4D4(s32 arg0) +{ + fn_1_C06C(); +} + +s32 lbl_1_data_324 = 0xFFFFFFFF; +s32 lbl_1_data_328 = -1; +s32 lbl_1_data_32C[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; + +void fn_1_C544(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + + var_r29 = HuSprGrpCreate(0x25); + lbl_1_data_324 = var_r29; + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1B)), 0x1388, 0); + HuSprGrpMemberSet(var_r29, 0, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1C)), 0x1388, 0); + HuSprGrpMemberSet(var_r29, 0x23, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1D)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 1, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1E)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 2, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1F)), 0x7D0, 0); + HuSprGrpMemberSet(var_r29, 3, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x20)), 0x76C, 0); + HuSprGrpMemberSet(var_r29, 4, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x21)), 0x834, 0); + HuSprGrpMemberSet(var_r29, 6, var_r31); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r31 = HuSprCreate(HuSprAnimReadFile(var_r30 + DATA_MAKE_NUM(DATADIR_MPEX, 0x2F)), 0xA, 0); + HuSprGrpMemberSet(var_r29, var_r30 + 7, var_r31); + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r31 = HuSprCreate(HuSprAnimReadFile(var_r30 + DATA_MAKE_NUM(DATADIR_MPEX, 0x32)), 0xA, 0); + HuSprGrpMemberSet(var_r29, var_r30 + 0xA, var_r31); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x35)); + for (var_r30 = 0; var_r30 < 0x15; var_r30++) { + var_r31 = HuSprCreate(var_r28, 9, 0); + HuSprGrpMemberSet(var_r29, var_r30 + 0xD, var_r31); + } + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x15)), 8, 0); + HuSprGrpMemberSet(var_r29, 0x22, var_r31); + fn_1_CF10(-1); + fn_1_D3AC(-1); +} + +void fn_1_C860(void) +{ + s32 var_r31 = lbl_1_data_324; + HuSprGrpKill(var_r31); +} + +s32 fn_1_C898(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + #if VERSION_NTSC + s32 sp88[5][9] = { + { 0x64, 0xC8, 0x12C, 0x136, 0x140, 0x14A, 0x154, 0x15E, 0x168 }, + { 0x05, 0x0A, 0x0F, 0x14, 0x19, 0x1E, 0x23, 0x28, 0x32 }, + { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }, + { 0xE10, 0x1C20, 0x2A30, 0x3840, 0x4650, 0x5460, 0x6270, 0x7080, 0x7E90 }, + { 0x0A, 0x14, 0x1E, 0x23, 0x28, 0x2D, 0x32, 0x35, 0x37 }, + }; + s32 sp1C[3][9] = { + { 0x4650, 0x3840, 0x2A30, 0x1C20, 0x0E10, 0, 0, 0, 0 }, + { 0x4650, 0x3840, 0x2A30, 0x1C20, 0x1770, 0x12C0, 0x0E10, 0, 0 }, + { 0x4650, 0x3840, 0x2A30, 0x2328, 0x1C20, 0x19C8, 0x1770, 0x1644, 0x1518 }, + }; + #else + s32 sp88[5][9] = { + { 0x32, 0x64, 0xC8, 0x12C, 0x136, 0x140, 0x14A, 0x154, 0x15E }, + { 0x05, 0x0A, 0x0F, 0x14, 0x19, 0x1E, 0x23, 0x28, 0x32 }, + { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }, + { 60*REFRESH_RATE, 120*REFRESH_RATE, 180*REFRESH_RATE, 240*REFRESH_RATE, 300*REFRESH_RATE, + 360*REFRESH_RATE, 420*REFRESH_RATE, 480*REFRESH_RATE, 540*REFRESH_RATE }, + { 0x0A, 0xF, 0x14, 0x19, 0x1E, 0x23, 0x28, 0x2B, 0x2D }, + }; + s32 sp1C[3][9] = { + { 300*REFRESH_RATE, 240*REFRESH_RATE, 180*REFRESH_RATE, 120*REFRESH_RATE, 60*REFRESH_RATE, 0, 0, 0, 0 }, + { 300*REFRESH_RATE, 240*REFRESH_RATE, 180*REFRESH_RATE, 120*REFRESH_RATE, 110*REFRESH_RATE, 100*REFRESH_RATE, 90*REFRESH_RATE, 0, 0 }, + { 300*REFRESH_RATE, 240*REFRESH_RATE, 180*REFRESH_RATE, 170*REFRESH_RATE, 124*REFRESH_RATE, 150*REFRESH_RATE, 140*REFRESH_RATE, 130*REFRESH_RATE, 120*REFRESH_RATE }, + }; + #endif + s32 sp10[3]; + s32 var_r31; + s32 var_r30; + + if (arg1 >= 5) { + for (var_r31 = 0; var_r31 < 9; var_r31++) { + if (arg0 < sp88[arg1 - 5][var_r31]) { + break; + } + } + } + else if (arg3 != 0) { + for (var_r30 = 0; var_r30 < 3; var_r30++) { + OSReport("#################### HI-SCORE(%d-%d) : %d\n", arg1, var_r30, GWGameStat.mg_record[var_r30 + 6]); + arg0 = GWGameStat.mg_record[var_r30 + 6]; + for (var_r31 = 0; var_r31 < 9; var_r31++) { + if (arg0 >= sp1C[var_r30][var_r31]) { + break; + } + } + sp10[var_r30] = var_r31; + } + if (sp10[0] <= sp10[1]) { + var_r31 = sp10[1]; + } + else { + var_r31 = sp10[0]; + } + if (var_r31 <= sp10[2]) { + var_r31 = sp10[2]; + } + } + else { + for (var_r31 = 0; var_r31 < 9; var_r31++) { + if (arg0 >= sp1C[arg2][var_r31]) { + break; + } + } + } + return var_r31; +} + +void fn_1_CA98(s32 arg0, u32 arg1) +{ + s32 sp8[11] = { + 0xFFFFFFFF, + 0xFFFFFFFF, + 0xFFFFFFFF, + 0x00000009, + 0xFFFFFFFF, + 0x00000004, + 0x0000000B, + 0x0000000C, + 0x0000000D, + 0x0000000E, + 0xFFFFFFFF, + }; + s32 var_r31; + u32 var_r29; + u32 var_r28; + + switch (arg1) { + case 0: + case 1: + case 2: + case 10: + break; + case 4: + var_r31 = fn_1_C898(-1, arg1, 0, 1); + HuWinInsertMesSet(arg0, ((arg1 - 4) * 0xA) + 0x330000 + var_r31 + 0x51, 3); + break; + case 5: + case 6: + case 7: + case 9: + var_r31 = fn_1_C898(GWGameStat.mg_record[sp8[arg1]], arg1, 0, 0); + HuWinInsertMesSet(arg0, ((arg1 - 4) * 0xA) + 0x330000 + var_r31 + 0x51, 3); + case 3: + OSReport("#################### HI-SCORE(%d) : %d\n", arg1, GWGameStat.mg_record[sp8[arg1]]); + var_r31 = GWGameStat.mg_record[sp8[arg1]]; + #if VERSION_NTSC + if (var_r31 < 0xA) { + sprintf(lbl_1_bss_FC, " %d", var_r31); + } + else if (var_r31 < 0x64) { + sprintf(lbl_1_bss_FC, " %d", var_r31); + } + else { + sprintf(lbl_1_bss_FC, "%d", var_r31); + } + #else + sprintf(lbl_1_bss_FC, " %d", var_r31); + #endif + HuWinInsertMesSet(arg0, (u32)lbl_1_bss_FC, 0); + break; + case 8: + OSReport("#################### HI-SCORE(%d) : %d\n", arg1, GWGameStat.mg_record[sp8[arg1]]); + var_r31 = GWGameStat.mg_record[sp8[arg1]]; + var_r29 = var_r31 / (600 *REFRESH_RATE); + var_r31 -= var_r29 * (600 *REFRESH_RATE); + var_r28 = var_r31 / (60 *REFRESH_RATE); + var_r31 -= var_r28 * (60 *REFRESH_RATE); + sprintf(lbl_1_bss_F4, " %d", var_r28); + HuWinInsertMesSet(arg0, (u32)lbl_1_bss_F4, 0); + var_r29 = var_r31 / (10 *REFRESH_RATE); + var_r31 -= var_r29 * (10 *REFRESH_RATE); + var_r28 = var_r31 / REFRESH_RATE; + var_r31 -= var_r28 * REFRESH_RATE; + sprintf(lbl_1_bss_EC, "%d%d", var_r29, var_r28); + HuWinInsertMesSet(arg0, (u32)lbl_1_bss_EC, 1); + var_r31 = (101.5/REFRESH_RATE) * (float)var_r31; + var_r29 = var_r31 / 10; + var_r31 -= var_r29 * 0xA; + var_r28 = var_r31; + if (GWGameStat.mg_record[sp8[arg1]] >= ((600*REFRESH_RATE)-1)) { + sprintf(lbl_1_bss_E4, "99"); + } + else { + sprintf(lbl_1_bss_E4, "%d%d", var_r29, var_r28); + } + HuWinInsertMesSet(arg0, (u32)lbl_1_bss_E4, 2); + var_r31 = fn_1_C898(GWGameStat.mg_record[sp8[arg1]], arg1, 0, 0); + HuWinInsertMesSet(arg0, ((arg1 - 4) * 0xA) + 0x330000 + var_r31 + 0x51, 3); + break; + default: + break; + } +} + +void fn_1_CF10(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r28; + + var_r31 = lbl_1_data_324; + for (var_r30 = 0; var_r30 < 0x25; var_r30++) { + HuSprAttrSet(var_r31, var_r30, 4); + } + if (arg0 != -1) { + s32 sp8[11][4] = { + { 0x00370000, 0x00370001, 0x00370002, 0x0017003E }, + { 0x00370003, 0x00370004, 0x00370005, 0x0017003F }, + { 0x00370006, 0x00370007, 0x00370008, 0x0017003D }, + { 0x00370009, 0x0037000A, 0x0037000B, 0x00170034 }, + { 0x0037000C, 0x0037000D, 0x0037000E, 0x00170033 }, + { 0x0037000F, 0x00370010, 0x00370011, 0x0017002A }, + { 0x00370012, 0x00370013, 0x00370014, 0x00170039 }, + { 0x00370015, 0x00370016, 0x00370017, 0x0017003A }, + { 0x00370018, 0x00370019, 0x0037001A, 0x0017003B }, + { 0x0037001B, 0x0037001C, 0x0037001D, 0x0017003C }, + { 0x0037001E, 0x0037001F, 0x00370020, 0x00170021 }, + }; + var_r28 = HuSprCreate(HuSprAnimReadFile(arg0 + DATA_MAKE_NUM(DATADIR_MPEX, 0x22)), 0x7D0, 0); + HuSprGrpMemberSet(var_r31, 5, var_r28); + lbl_1_data_328 = fn_1_1D02C(sp8[arg0][3]); + HuSprGrpPosSet(lbl_1_data_328, 288.0f, -437.0f); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + lbl_1_data_32C[var_r30] = HuWinCreate(0.0f, 0.0f, 0x136, 0x78, 0); + HuWinBGTPLvlSet(lbl_1_data_32C[var_r30], 0.0f); + HuWinMesSpeedSet(lbl_1_data_32C[var_r30], 0); + HuWinDispOn(lbl_1_data_32C[var_r30]); + if (sp8[arg0][var_r30] != -1) { + if (var_r30 == 2) { + fn_1_CA98(lbl_1_data_32C[2], arg0); + } + HuWinMesSet(lbl_1_data_32C[var_r30], sp8[arg0][var_r30]); + } + HuWinPosSet(lbl_1_data_32C[var_r30], -485.0f, (var_r30 << 7) + 0x70); + } + if (arg0 != 0xA) { + HuSprAttrReset(var_r31, 0, 4); + HuSprPosSet(var_r31, 0, 288.0f, 240.0f); + HuSprTPLvlSet(var_r31, 0, 0.0f); + } + else { + HuSprAttrReset(var_r31, 0x23, 4); + HuSprPosSet(var_r31, 0x23, 288.0f, 240.0f); + HuSprTPLvlSet(var_r31, 0x23, 0.0f); + } + HuSprAttrReset(var_r31, 1, 4); + HuSprPosSet(var_r31, 1, -331.0f, 272.0f); + HuSprAttrReset(var_r31, 2, 4); + HuSprPosSet(var_r31, 2, 452.0f, 911.0f); + HuSprAttrReset(var_r31, 3, 4); + HuSprPosSet(var_r31, 3, 288.0f, -437.0f); + HuSprAttrReset(var_r31, 4, 4); + HuSprPosSet(var_r31, 4, 952.0f, 212.0f); + HuSprAttrReset(var_r31, 5, 4); + HuSprPosSet(var_r31, 5, 952.0f, 212.0f); + HuSprScaleSet(var_r31, 5, 0.5f, 0.5f); + HuSprAttrReset(var_r31, 6, 4); + HuSprPosSet(var_r31, 6, 952.0f, 212.0f); + } +} + +void fn_1_D3AC(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_data_324; + for (var_r31 = 0; var_r31 < 0x25; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != -1) { + HuSprGrpMemberKill(var_r30, 5); + HuSprGrpKill(lbl_1_data_328); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuWinKill(lbl_1_data_32C[var_r31]); + } + } +} + +void fn_1_D468(s32 arg0) +{ + s32 var_r28; + s32 var_r30; + s32 var_r31; + + var_r31 = lbl_1_data_324; + fn_1_CF10(arg0); + if (arg0 != 0xA) { + HuSprTPLvlSet(var_r31, 0, 1.0f); + } + else { + HuSprTPLvlSet(var_r31, 0x23, 1.0f); + } + HuSprPosSet(var_r31, 3, 288.0f, 63.0f); + HuSprGrpPosSet(lbl_1_data_328, 288.0f, 63.0f); + HuSprPosSet(var_r31, 1, 169.0f, 272.0f); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + HuWinPosSet(lbl_1_data_32C[var_r30], 14.0f, (var_r30 << 7) + 0x70); + } + HuSprPosSet(var_r31, 4, 452.0f, 212.0f); + HuSprPosSet(var_r31, 5, 452.0f, 212.0f); + HuSprPosSet(var_r31, 6, 452.0f, 212.0f); + HuSprPosSet(var_r31, 2, 452.0f, 411.0f); + var_r28 = lbl_1_bss_63C[2]; + if (arg0 <= 3) { + fn_1_1A5A4(0); + } + else { + fn_1_1A5A4(1); + } + HuSprGrpPosSet(var_r28, 452.0f, 355.0f); +} + +void fn_1_D6AC(s32 arg0) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + + var_r30 = lbl_1_data_324; + fn_1_CF10(arg0); + for (var_r31 = 0; var_r31 <= 0x1E; var_r31++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(0.0f, 1.0f, var_r31, 30.0f); + if (arg0 != 0xA) { + HuSprTPLvlSet(var_r30, 0, var_f31); + } + else { + HuSprTPLvlSet(var_r30, 0x23, var_f31); + } + } + if (arg0 != 0xA) { + HuSprTPLvlSet(var_r30, 0, 1.0f); + } + else { + HuSprTPLvlSet(var_r30, 0x23, 1.0f); + } + for (var_r31 = 0; var_r31 <= 0x1E; var_r31++) { + fn_1_1B7D0(1); + var_r29 = fn_1_1B64C(-500.0f, 0.0f, var_r31, 30.0f); + HuSprPosSet(var_r30, 3, 288.0f, var_r29 + 0x3F); + HuSprGrpPosSet(lbl_1_data_328, 288.0f, var_r29 + 0x3F); + HuSprPosSet(var_r30, 1, var_r29 + 0xA9, 272.0f); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + HuWinPosSet(lbl_1_data_32C[var_r28], var_r29 + 0xE, (var_r28 << 7) + 0x70); + } + var_r29 = fn_1_1B64C(500.0f, 0.0f, var_r31, 30.0f); + HuSprPosSet(var_r30, 4, var_r29 + 0x1C4, 212.0f); + HuSprPosSet(var_r30, 5, var_r29 + 0x1C4, 212.0f); + HuSprPosSet(var_r30, 6, var_r29 + 0x1C4, 212.0f); + HuSprPosSet(var_r30, 2, 452.0f, var_r29 + 0x19B); + if (arg0 != 0xA) { + var_r26 = lbl_1_bss_63C[2]; + var_f30 = fn_1_1B64C(112.0f, 452.0f, var_r31, 30.0f); + var_f29 = fn_1_1B64C(72.0f, 355.0f, var_r31, 30.0f); + HuSprGrpPosSet(var_r26, var_f30, var_f29); + } + } +} + +void fn_1_DBD0(s32 arg0) +{ + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r25; + s32 var_r24; + + var_r30 = lbl_1_data_324; + for (var_r31 = 0; var_r31 <= 0x1E; var_r31++) { + fn_1_1B7D0(1); + var_r29 = fn_1_1B574(0.0f, -500.0f, var_r31, 30.0f); + HuSprPosSet(var_r30, 3, 288.0f, var_r29 + 0x3F); + HuSprGrpPosSet(lbl_1_data_328, 288.0f, var_r29 + 0x3F); + HuSprPosSet(var_r30, 1, var_r29 + 0xA9, 272.0f); + for (var_r27 = 0; var_r27 < 3; var_r27++) { + HuWinPosSet(lbl_1_data_32C[var_r27], var_r29 + 0xE, (var_r27 << 7) + 0x70); + } + var_r29 = fn_1_1B574(0.0f, 500.0f, var_r31, 30.0f); + HuSprPosSet(var_r30, 4, var_r29 + 0x1C4, 212.0f); + HuSprPosSet(var_r30, 5, var_r29 + 0x1C4, 212.0f); + HuSprPosSet(var_r30, 6, var_r29 + 0x1C4, 212.0f); + HuSprPosSet(var_r30, 2, 452.0f, var_r29 + 0x19B); + if (arg0 != 0xA) { + var_r24 = lbl_1_bss_63C[2]; + var_f30 = fn_1_1B574(452.0f, 112.0f, var_r31, 30.0f); + var_f29 = fn_1_1B574(355.0f, 72.0f, var_r31, 30.0f); + HuSprGrpPosSet(var_r24, var_f30, var_f29); + } + } + for (var_r31 = 0; var_r31 <= 0x1E; var_r31++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B574(1.0f, 0.0f, var_r31, 30.0f); + if (arg0 != 0xA) { + HuSprTPLvlSet(var_r30, 0, var_f31); + } + else { + HuSprTPLvlSet(var_r30, 0x23, var_f31); + } + } + if (arg0 != 0xA) { + HuSprTPLvlSet(var_r30, 0, 0.0f); + } + else { + HuSprTPLvlSet(var_r30, 0x23, 0.0f); + } + var_r25 = lbl_1_data_324; + for (var_r28 = 0; var_r28 < 0x25; var_r28++) { + HuSprAttrSet(var_r25, var_r28, 4); + } + if (arg0 != -1) { + HuSprGrpMemberKill(var_r25, 5); + HuSprGrpKill(lbl_1_data_328); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + HuWinKill(lbl_1_data_32C[var_r28]); + } + } +} + +void fn_1_E174(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_data_324; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 7, 4); + HuSprPosSet(var_r30, var_r31 + 7, 788.0f, (var_r31 * 0x38) + 0xB8); + } + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 = fn_1_1B64C(1000.0f, 0.0f, var_r29, 0x3C - ((2 - var_r31) * 5)); + HuSprPosSet(var_r30, var_r31 + 7, 288.0f + var_f31, (var_r31 * 0x38) + 0xB8); + } + } + HuSprAttrReset(var_r30, 0x22, 4); + HuSprPosSet(var_r30, 0x22, 185.0f, (lbl_1_bss_3B0.unk_10 * 0x38) + 0xA0); +} + +void fn_1_E384(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_data_324; + HuSprAttrSet(var_r30, 0x22, 4); + HuSprPosSet(var_r30, 0x22, 125.0f, 190.0f); + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 = fn_1_1B574(0.0f, -1000.0f, var_r29, 0x3C - ((2 - var_r31) * 5)); + HuSprPosSet(var_r30, var_r31 + 7, 288.0f + var_f31, (var_r31 * 0x38) + 0xB8); + } + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31 + 7, 4); + HuSprPosSet(var_r30, var_r31 + 7, 288.0f, (var_r31 * 0x38) + 0xB8); + } +} + +void fn_1_E568(void) +{ + s32 sp10; + s32 spC; + s32 sp8; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + u32 var_r27; + u32 var_r26; + s32 var_r25; + + var_r29 = lbl_1_data_324; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp10 = rand8() % 10; + spC = rand8() % 60; + sp8 = rand8() % 100; + HuSprAttrReset(var_r29, var_r31 + 0xA, 4); + HuSprPosSet(var_r29, var_r31 + 0xA, 1288.0f, (var_r31 * 0x38) + 0xB8); + for (var_r28 = 0; var_r28 < 7; var_r28++) { + HuSprAttrReset(var_r29, 0xD + var_r28 + (var_r31 * 7), 4); + HuSprPosSet(var_r29, 0x0D + var_r28 + (var_r31 * 7), (var_r28 * 0x14) + 0x512, (var_r31 * 0x38) + 0xBA); + } + var_r30 = GWGameStat.mg_record[var_r31 + 6]; + var_r27 = var_r30 / (600*REFRESH_RATE); + var_r30 -= var_r27 * (600*REFRESH_RATE); + var_r26 = var_r30 / (60*REFRESH_RATE); + var_r30 -= var_r26 * (60*REFRESH_RATE); + HuSprBankSet(var_r29, (var_r31 * 7) + 0xD, var_r26); + HuSprBankSet(var_r29, (var_r31 * 7) + 0xE, 0xA); + var_r27 = var_r30 / (10*REFRESH_RATE); + var_r30 -= var_r27 * (10*REFRESH_RATE); + var_r26 = var_r30 / REFRESH_RATE; + var_r30 -= var_r26 * REFRESH_RATE; + HuSprBankSet(var_r29, (var_r31 * 7) + 0xF, var_r27); + HuSprBankSet(var_r29, (var_r31 * 7) + 0x10, var_r26); + HuSprBankSet(var_r29, (var_r31 * 7) + 0x11, 0xB); + var_r30 = (100.0/REFRESH_RATE) * (float)var_r30; + var_r27 = var_r30 / 10; + var_r30 -= var_r27 * 0xA; + var_r26 = var_r30; + if (GWGameStat.mg_record[var_r31 + 6] == ((600*REFRESH_RATE)-1)) { + HuSprBankSet(var_r29, (var_r31 * 7) + 0x12, 9); + HuSprBankSet(var_r29, (var_r31 * 7) + 0x13, 9); + } + else { + HuSprBankSet(var_r29, (var_r31 * 7) + 0x12, var_r27); + HuSprBankSet(var_r29, (var_r31 * 7) + 0x13, var_r26); + } + } + for (var_r25 = 0; var_r25 <= 0x3C; var_r25++) { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 = fn_1_1B64C(1000.0f, 0.0f, var_r25, 0x3C - ((2 - var_r31) * 5)); + HuSprPosSet(var_r29, var_r31 + 0xA, 288.0f + var_f31, (var_r31 * 0x38) + 0xB8); + for (var_r28 = 0; var_r28 < 7; var_r28++) { + HuSprPosSet(var_r29, 0xD + var_r28 + (var_r31 * 7), var_f31 + ((var_r28 * 0x14) + 0x12A), (var_r31 * 0x38) + 0xBA); + } + } + } + HuSprAttrReset(var_r29, 0x22, 4); + HuSprPosSet(var_r29, 0x22, 110.0f, (lbl_1_bss_3B0.unk_10 * 0x38) + 0xA0); +} + +void fn_1_EB1C(void) +{ + float var_f31; + s32 var_r28; + s32 var_r29; + s32 var_r30; + s32 var_r31; + + var_r29 = lbl_1_data_324; + HuSprAttrSet(var_r29, 0x22, 4); + HuSprPosSet(var_r29, 0x22, 125.0f, 184.0f); + for (var_r28 = 0; var_r28 <= 0x3C; var_r28++) { + fn_1_1B7D0(1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 = fn_1_1B574(0.0f, -1000.0f, var_r28, 0x3C - ((2 - var_r31) * 5)); + HuSprPosSet(var_r29, var_r31 + 0xA, 288.0f + var_f31, (var_r31 * 0x38) + 0xB8); + for (var_r30 = 0; var_r30 < 7; var_r30++) { + HuSprPosSet(var_r29, 0xD + var_r30 + (var_r31 * 7), var_f31 + ((var_r30 * 0x14) + 0x12A), (var_r31 * 0x38) + 0xBA); + } + } + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r29, var_r31 + 0xA, 4); + for (var_r30 = 0; var_r30 < 7; var_r30++) { + HuSprAttrSet(var_r29, 0xD + var_r30 + (var_r31 * 7), 4); + } + } +} + +void fn_1_ED78(s32 arg0, s32 arg1) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_data_324; + { + s32 spC[3] = { 4, 11, 12 }; + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 5) { + var_f30 = fn_1_1B64C(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f30 = fn_1_1B64C(0.0f, 1.0f, var_r31, var_r31 - 5); + } + if (lbl_1_bss_1B0 == 4) { + HuSprTPLvlSet(var_r30, 5, var_f30); + } + var_f31 = fn_1_1B64C((arg1 * 0x38) + 0xA0, (arg0 * 0x38) + 0xA0, var_r31, 10.0f); + if (lbl_1_bss_1B0 == 4) { + HuSprPosSet(var_r30, 0x22, 110.0f, var_f31); + } + else { + HuSprPosSet(var_r30, 0x22, 185.0f, var_f31); + } + if ((lbl_1_bss_1B0 == 4) && (var_r31 == 5)) { + HuSprGrpMemberKill(var_r30, 5); + var_r29 = HuSprCreate(HuSprAnimReadFile(spC[arg0] + DATA_MAKE_NUM(DATADIR_MPEX, 0x22)), 0x7D0, 0); + HuSprGrpMemberSet(var_r30, 5, var_r29); + HuSprPosSet(var_r30, 5, 452.0f, 212.0f); + HuSprScaleSet(var_r30, 5, 0.5f, 0.5f); + HuSprTPLvlSet(var_r30, 5, 0.0f); + } + } + } +} + +void fn_1_F0C0(void) +{ + float sp8[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = HuSprGrpCreate(3); + lbl_1_bss_E0 = var_r30; + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x16)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r29); + HuSprPosSet(var_r30, 0, 0.0f, 88.0f); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x18)), 0x7D0, 0); + HuSprGrpMemberSet(var_r30, 1, var_r29); + HuSprPosSet(var_r30, 1, 0.0f, 25.0f); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1A)), 0x3E8, 0); + HuSprGrpMemberSet(var_r30, 2, var_r29); + HuSprPosSet(var_r30, 2, 0.0f, 0.0f); + HuSprScaleSet(var_r30, 2, 0.9f, 0.65f); + HuSprTPLvlSet(var_r30, 2, 0.8f); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x2F)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x30)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x31)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x32)); + lbl_1_bss_C8[var_r31] = HuWinCreate(0.0f, 0.0f, sp8[0], sp8[1], 0); + HuWinBGTPLvlSet(lbl_1_bss_C8[var_r31], 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C8[var_r31], 0); + HuWinDispOff(lbl_1_bss_C8[var_r31]); + HuWinPosSet(lbl_1_bss_C8[var_r31], 304.0f, 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1F)) - 500.0f)); + } + fn_1_F47C(); + fn_1_F730(); +} + +void fn_1_F40C(void) +{ + s32 var_r31; + s32 var_r30 = lbl_1_bss_E0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuWinKill(lbl_1_bss_C8[var_r31]); + } + HuSprGrpKill(var_r30); +} + +void fn_1_F47C(void) +{ + float sp8[2]; + s32 var_r31; + + s32 var_r30 = lbl_1_bss_E0; + lbl_1_bss_3B0.unk_0C = 0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + HuSprPosSet(var_r30, 0, 0.0f, 92.0f); + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 0.0f, 25.0f); + lbl_1_bss_3B0.unk_0C = 0; + HuSprPosSet(var_r30, 2, -3.0f, (lbl_1_bss_3B0.unk_0C * 0x19) + 0x3C); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuWinDispOn(lbl_1_bss_C8[var_r31]); + if (lbl_1_bss_180[var_r31] == 1) { + HuWinMesSet(lbl_1_bss_C8[var_r31], var_r31 + MAKE_MESSID(0x33, 0x2F)); + } + else { + HuWinMesSet(lbl_1_bss_C8[var_r31], MAKE_MESSID(0x33, 0x2E)); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x30)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1F)) - 500.0f)); + } + HuSprGrpPosSet(var_r30, 288.0f, -460.0f); +} + +void fn_1_F730(void) +{ + float sp8[2]; + s32 var_r31; + + s32 var_r30 = lbl_1_bss_E0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuWinDispOff(lbl_1_bss_C8[var_r31]); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x30)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1F)) - 500.0f)); + } + HuSprGrpPosSet(var_r30, 288.0f, -460.0f); +} + +void fn_1_F8A4(void) +{ + float sp10[2]; + float sp8[2]; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + s32 var_r27 = lbl_1_bss_E0; + sp10[0] = sp10[1] = 0.0f; + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x2E)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x2F)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x30)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x31)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x32)); + var_r30 = lbl_1_bss_E0; + lbl_1_bss_3B0.unk_0C = 0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + HuSprPosSet(var_r30, 0, 0.0f, 92.0f); + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 0.0f, 25.0f); + lbl_1_bss_3B0.unk_0C = 0; + HuSprPosSet(var_r30, 2, -3.0f, (lbl_1_bss_3B0.unk_0C * 0x19) + 0x3C); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuWinDispOn(lbl_1_bss_C8[var_r31]); + if (lbl_1_bss_180[var_r31] == 1) { + HuWinMesSet(lbl_1_bss_C8[var_r31], var_r31 + MAKE_MESSID(0x33, 0x2F)); + } + else { + HuWinMesSet(lbl_1_bss_C8[var_r31], MAKE_MESSID(0x33, 0x2E)); + } + HuWinMesMaxSizeGet(1, sp8, 0x330030); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1F)) - 500.0f)); + } + HuSprGrpPosSet(var_r30, 288.0f, -460.0f); + for (var_r29 = 0; var_r29 < 0x3C; var_r29++) { + fn_1_1B7D0(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r27, 288.0f, 64.0f + (40.0f + var_f31)); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + HuWinPosSet(lbl_1_bss_C8[var_r28], 288.0f - (sp10[0] / 2), 64.0f + (40.0f + (var_f31 + ((60.0f - (sp10[1] / 2)) + (var_r28 * 0x1F))))); + } + } +} + +void fn_1_FDA0(void) +{ + float sp10[2]; + float sp8[2]; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + s32 var_r27 = lbl_1_bss_E0; + sp10[0] = sp10[1] = 0.0f; + + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x2E)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x2F)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x30)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x31)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x32)); + for (var_r30 = 0; var_r30 < 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r30, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r30 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r27, 288.0f, 64.0f + (40.0f + var_f31)); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + HuWinPosSet(lbl_1_bss_C8[var_r29], 288.0f - (sp10[0] / 2), 64.0f + (40.0f + (var_f31 + ((60.0f - (sp10[1] / 2)) + (var_r29 * 0x1F))))); + } + } + var_r28 = lbl_1_bss_E0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r28, var_r31, 4); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuWinDispOff(lbl_1_bss_C8[var_r31]); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x30)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1F)) - 500.0f)); + } + HuSprGrpPosSet(var_r28, 288.0f, -460.0f); +} + +void fn_1_1015C(void) +{ + float sp8[2]; + s32 var_r31 = lbl_1_bss_E0; + HuWinMesMaxSizeGet(1, sp8, 0x330030); + HuSprAttrReset(var_r31, 2, 4); + HuSprPosSet(var_r31, 2, 0.0f, 40.0f + ((60.0f - sp8[1]) + (lbl_1_bss_3B0.unk_0C * 0x1F))); +} + +void fn_1_10228(void) +{ + s32 var_r31 = lbl_1_bss_E0; + HuSprAttrSet(var_r31, 2, 4); +} + +void fn_1_10268(s32 arg0) +{ + float spC[2]; + float var_f31; + float var_f30; + float var_f29; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + s32 var_r28 = lbl_1_bss_E0; + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(0x33, 0x30)); + var_r29 = lbl_1_bss_3B0.unk_0C; + var_r31 = lbl_1_bss_3B0.unk_0C + arg0; + if (var_r31 > 3) { + var_r31 = 0; + } + else if (var_r31 < 0) { + var_r31 = 3; + } + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_1B7D0(1); + var_f31 = 40.0f + ((60.0f - spC[1]) + (var_r29 * 0x1F)); + var_f30 = 40.0f + ((60.0f - spC[1]) + (var_r31 * 0x1F)); + var_f29 = fn_1_1B64C(var_f31, var_f30, var_r30, 5.0f); + HuSprPosSet(var_r28, 2, -4.0f, var_f29); + } + lbl_1_bss_3B0.unk_0C = var_r31; +} + +void fn_1_1045C(void) +{ + float sp8[2]; + s32 var_r31; + s32 var_r29; + + s32 var_r30 = HuSprGrpCreate(3); + lbl_1_bss_C4 = var_r30; + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x17)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r29); + HuSprPosSet(var_r30, 0, 0.0f, 118.0f); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x19)), 0x7D0, 0); + HuSprGrpMemberSet(var_r30, 1, var_r29); + HuSprPosSet(var_r30, 1, 0.0f, 25.0f); + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x1A)), 0x3E8, 0); + HuSprGrpMemberSet(var_r30, 2, var_r29); + HuSprPosSet(var_r30, 2, 0.0f, 0.0f); + HuSprPosSet(var_r30, 2, 0.0f, 0.0f); + HuSprScaleSet(var_r30, 2, 0.9f, 0.65f); + HuSprTPLvlSet(var_r30, 2, 0.8f); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x33)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x34)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x35)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x36)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x37)); + fn_1_125DC(sp8, MAKE_MESSID(0x33, 0x38)); + lbl_1_bss_C8[var_r31] = HuWinCreate(0.0f, 0.0f, sp8[0], sp8[1], 0); + HuWinBGTPLvlSet(lbl_1_bss_C8[var_r31], 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C8[var_r31], 0); + HuWinDispOff(lbl_1_bss_C8[var_r31]); + HuWinPosSet(lbl_1_bss_C8[var_r31], 304.0f, 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1D)) - 500.0f)); + } + fn_1_1085C(); + fn_1_10ABC(); + (void)var_r31; +} + +void fn_1_107EC(void) +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_C4; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuWinKill(lbl_1_bss_C8[var_r31]); + } + HuSprGrpKill(var_r30); +} + +void fn_1_1085C(void) +{ + float sp8[2]; + s32 var_r31; + + s32 var_r30 = lbl_1_bss_C4; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + HuSprAttrReset(var_r30, 1, 4); + lbl_1_bss_3B0.unk_0C = 0; + HuSprPosSet(var_r30, 2, -3.0f, (lbl_1_bss_3B0.unk_0C * 0x19) + 0x3C); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuWinDispOn(lbl_1_bss_C8[var_r31]); + if (lbl_1_bss_180[var_r31 + 4] == 1) { + HuWinMesSet(lbl_1_bss_C8[var_r31], var_r31 + MAKE_MESSID(0x33, 0x33)); + } + else { + HuWinMesSet(lbl_1_bss_C8[var_r31], MAKE_MESSID(0x33, 0x2E)); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x33)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1D)) - 500.0f)); + } + HuSprGrpPosSet(var_r30, 288.0f, -460.0f); +} + +void fn_1_10ABC(void) +{ + float sp8[2]; + s32 var_r31; + + s32 var_r30 = lbl_1_bss_C4; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuWinDispOff(lbl_1_bss_C8[var_r31]); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x33)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1D)) - 500.0f)); + } + HuSprGrpPosSet(var_r30, 288.0f, -460.0f); +} + +void fn_1_10C30(void) +{ + float sp10[2]; + float sp8[2]; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r27 = lbl_1_bss_C4; + sp10[0] = sp10[1] = 0.0f; + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x2E)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x33)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x34)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x35)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x36)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x37)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x38)); + var_r28 = lbl_1_bss_C4; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r28, var_r31, 4); + } + HuSprAttrReset(var_r28, 0, 4); + HuSprAttrReset(var_r28, 1, 4); + lbl_1_bss_3B0.unk_0C = 0; + HuSprPosSet(var_r28, 2, -3.0f, (lbl_1_bss_3B0.unk_0C * 0x19) + 0x3C); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuWinDispOn(lbl_1_bss_C8[var_r31]); + if (lbl_1_bss_180[var_r31 + 4] == 1) { + HuWinMesSet(lbl_1_bss_C8[var_r31], var_r31 + MAKE_MESSID(0x33, 0x33)); + } + else { + HuWinMesSet(lbl_1_bss_C8[var_r31], MAKE_MESSID(0x33, 0x2E)); + } + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x33)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1D)) - 500.0f)); + } + HuSprGrpPosSet(var_r28, 288.0f, -460.0f); + for (var_r30 = 0; var_r30 < 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r27, 288.0f, 64.0f + (40.0f + var_f31)); + for (var_r29 = 0; var_r29 < 6; var_r29++) { + HuWinPosSet(lbl_1_bss_C8[var_r29], 288.0f - (sp10[0] / 2), 64.0f + (40.0f + (var_f31 + ((60.0f - (sp10[1] / 2)) + (var_r29 * 0x1D))))); + } + } +} + +void fn_1_110F8(void) +{ + float sp10[2]; + float sp8[2]; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r27 = lbl_1_bss_C4; + sp10[0] = sp10[1] = 0.0f; + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x2E)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x33)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x34)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x35)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x36)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x37)); + fn_1_125DC(sp10, MAKE_MESSID(0x33, 0x38)); + for (var_r30 = 0; var_r30 < 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r30, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r30 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r27, 288.0f, 64.0f + (40.0f + var_f31)); + for (var_r29 = 0; var_r29 < 6; var_r29++) { + HuWinPosSet(lbl_1_bss_C8[var_r29], 288.0f - (sp10[0] / 2), 64.0f + (40.0f + (var_f31 + ((60.0f - (sp10[1] / 2)) + (var_r29 * 0x1D))))); + } + } + var_r28 = lbl_1_bss_C4; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r28, var_r31, 4); + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + HuWinDispOff(lbl_1_bss_C8[var_r31]); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x33, 0x33)); + HuWinPosSet(lbl_1_bss_C8[var_r31], 288.0f - (sp8[0] / 2), 40.0f + (((60.0f - (sp8[1] / 2)) + (var_r31 * 0x1D)) - 500.0f)); + } + HuSprGrpPosSet(var_r28, 288.0f, -460.0f); +} + +void fn_1_114D4(void) +{ + float sp8[2]; + s32 var_r31 = lbl_1_bss_C4; + HuWinMesMaxSizeGet(1, sp8, 0x330033); + HuSprAttrReset(var_r31, 2, 4); + HuSprPosSet(var_r31, 2, 0.0f, 40.0f + ((60.0f - sp8[1]) + (lbl_1_bss_3B0.unk_0C * 0x1D))); +} + +void fn_1_115A0(void) +{ + s32 var_r31 = lbl_1_bss_C4; + HuSprAttrSet(var_r31, 2, 4); +} + +void fn_1_115E0(s32 arg0) +{ + float spC[2]; + float var_f31; + float var_f30; + float var_f29; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_C4; + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(0x33, 0x33)); + var_r29 = lbl_1_bss_3B0.unk_0C; + var_r31 = lbl_1_bss_3B0.unk_0C + arg0; + if (var_r31 > 5) { + var_r31 = 0; + } + else if (var_r31 < 0) { + var_r31 = 5; + } + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_1B7D0(1); + var_f31 = 40.0f + ((60.0f - spC[1]) + (var_r29 * 0x1D)); + var_f30 = 40.0f + ((60.0f - spC[1]) + (var_r31 * 0x1D)); + var_f29 = fn_1_1B64C(var_f31, var_f30, var_r30, 5.0f); + HuSprPosSet(var_r28, 2, -4.0f, var_f29); + } + lbl_1_bss_3B0.unk_0C = var_r31; +} + +void fn_1_117D4(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = HuSprGrpCreate(3); + lbl_1_bss_C0 = var_r30; + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x12)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x13)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 1, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x14)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 2, var_r31); + var_r29 = HuSprGrpCreate(1); + lbl_1_bss_BC = var_r29; + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x15)), 0xBB8, 0); + HuSprGrpMemberSet(var_r29, 0, var_r31); + HuSprAttrSet(var_r29, 0, 4); + fn_1_11984(); + fn_1_119E0(); +} + +void fn_1_11930(void) +{ + s32 var_r31 = lbl_1_bss_C0; + s32 var_r30 = lbl_1_bss_BC; + HuSprGrpKill(var_r31); + HuSprGrpKill(var_r30); +} + +void fn_1_11984(void) +{ + s32 var_r31; + s32 var_r30 = lbl_1_bss_C0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } +} + +void fn_1_119E0(void) +{ + s32 var_r31; + s32 var_r30 = lbl_1_bss_C0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } +} + +void fn_1_11A3C(s32 arg0) +{ + float var_f31; + float var_f30; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + + var_r29 = lbl_1_bss_C0; + var_r28 = lbl_1_bss_BC; + { + s32 sp8[3][2] = { + { 0x72, 0xFA }, + { 0x144, 0xE1 }, + { 0xEF, 0x5A }, + }; + var_r26 = lbl_1_bss_C0; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + HuSprAttrSet(var_r26, var_r30, 4); + } + if (lbl_1_bss_3B0.unk_08 != 2) { + HuSprAttrReset(var_r29, lbl_1_bss_3B0.unk_08, 4); + } + HuSprGrpScaleSet(var_r29, 0.0f, 0.0f); + for (var_r31 = 0; var_r31 <= 0xF; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 1.0f, var_r31, 10.0f); + var_f30 = 0.01f; + } + else { + var_f31 = 1.0f; + var_f30 = fn_1_1B64C(0.01f, 1.0f, var_r31 - 0xA, 5.0f); + } + HuSprGrpScaleSet(var_r29, var_f31, var_f30); + if (arg0 != -1) { + var_f31 = fn_1_1B64C(sp8[arg0][0], sp8[lbl_1_bss_3B0.unk_08][0], var_r31, 15.0f); + var_f30 = fn_1_1B64C(sp8[arg0][1], sp8[lbl_1_bss_3B0.unk_08][1], var_r31, 15.0f); + HuSprGrpPosSet(var_r28, var_f31, var_f30); + } + } + HuSprAttrReset(var_r28, 0, 4); + if (arg0 == -1) { + HuSprGrpPosSet(var_r28, sp8[0][0], sp8[0][1]); + } + } +} + +void fn_1_11E28(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r29 = lbl_1_bss_C0; + var_r28 = lbl_1_bss_BC; + HuSprAttrSet(var_r28, 0, 4); + for (var_r31 = 0; var_r31 <= 0xF; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f30 = fn_1_1B64C(1.0f, 0.01f, var_r31, 10.0f); + var_f31 = 1.0f; + } + else { + var_f30 = 0.01f; + var_f31 = fn_1_1B64C(1.0f, 0.01f, var_r31 - 0xA, 5.0f); + } + HuSprGrpScaleSet(var_r29, var_f31, var_f30); + } + var_r27 = lbl_1_bss_C0; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + HuSprAttrSet(var_r27, var_r30, 4); + } +} + +void fn_1_11FC0(omObjData *object, MpexDllUnkStruct4 *arg1) +{ + Vec sp20; + Vec sp14; + + s32 var_r31 = lbl_1_bss_C0; + s32 sp8[3] = { 0x64, 0x64, 0xE1 }; + sp20.x = Hu3DData[lbl_1_bss_2D8[lbl_1_bss_3B0.unk_08].unk_00->model[1]].pos.x; + sp20.y = 0.0f; + sp20.z = Hu3DData[lbl_1_bss_2D8[lbl_1_bss_3B0.unk_08].unk_00->model[1]].pos.z; + Hu3D3Dto2D(&sp20, 1, &sp14); + sp14.y = fn_1_1B714(sp8[lbl_1_bss_3B0.unk_08], 10.0f + sp8[lbl_1_bss_3B0.unk_08], lbl_1_bss_3B0.unk_28++, 360.0f); + if (lbl_1_bss_3B0.unk_28 >= 0x168) { + lbl_1_bss_3B0.unk_28 = 0; + } + HuSprGrpPosSet(var_r31, sp14.x, (s32)sp14.y); +} + +void fn_1_121E8(void) +{ + OSReport("\n\n####################### HI SCORE #######################\n"); + OSReport("HIScore 453(0-99):%d\n", GWGameStat.mg_record[9]); + if (GWGameStat.mg_record[9] == 0) { + GWGameStat.mg_record[9] = 0; + } + else if (GWGameStat.mg_record[9] >= 0x63) { + GWGameStat.mg_record[9] = 0x63; + } + #if VERSION_NTSC + OSReport("HIScore 451A(0-35999):%d\n", GWGameStat.mg_record[6]); + #else + OSReport("HIScore 451A(0-29999):%d\n", GWGameStat.mg_record[6]); + #endif + if (GWGameStat.mg_record[6] == 0) { + GWGameStat.mg_record[6] = 0; + } + else if (GWGameStat.mg_record[6] >= ((REFRESH_RATE*600)-1)) { + GWGameStat.mg_record[6] = ((REFRESH_RATE*600)-1); + } + #if VERSION_NTSC + OSReport("HIScore 451B(0-35999):%d\n", GWGameStat.mg_record[7]); + #else + OSReport("HIScore 451B(0-29999):%d\n", GWGameStat.mg_record[7]); + #endif + if (GWGameStat.mg_record[7] == 0) { + GWGameStat.mg_record[7] = 0; + } + else if (GWGameStat.mg_record[7] >= ((REFRESH_RATE*600)-1)) { + GWGameStat.mg_record[7] = ((REFRESH_RATE*600)-1); + } + #if VERSION_NTSC + OSReport("HIScore 451C(0-35999):%d\n", GWGameStat.mg_record[8]); + #else + OSReport("HIScore 451C(0-29999):%d\n", GWGameStat.mg_record[8]); + #endif + if (GWGameStat.mg_record[8] == 0) { + GWGameStat.mg_record[8] = 0; + } + else if (GWGameStat.mg_record[8] >= ((REFRESH_RATE*600)-1)) { + GWGameStat.mg_record[8] = ((REFRESH_RATE*600)-1); + } + OSReport("HIScore 442(0-999):%d\n", GWGameStat.mg_record[4]); + if (GWGameStat.mg_record[4] == 0) { + GWGameStat.mg_record[4] = 0; + } + else if (GWGameStat.mg_record[4] >= 0x3E7) { + GWGameStat.mg_record[4] = 0x3E7; + } + OSReport("HIScore 459(0-99):%d\n", GWGameStat.mg_record[0xB]); + if (GWGameStat.mg_record[0xB] == 0) { + GWGameStat.mg_record[0xB] = 0; + } + else if (GWGameStat.mg_record[0xB] >= 0x63) { + GWGameStat.mg_record[0xB] = 0x63; + } + OSReport("HIScore 460(0-99):%d\n", GWGameStat.mg_record[0xC]); + if (GWGameStat.mg_record[0xC] == 0) { + GWGameStat.mg_record[0xC] = 0; + } + else if (GWGameStat.mg_record[0xC] >= 0x63) { + GWGameStat.mg_record[0xC] = 0x63; + } + #if VERSION_NTSC + OSReport("HIScore 461(0-35999):%d\n", GWGameStat.mg_record[13]); + #else + OSReport("HIScore 461(0-29999):%d\n", GWGameStat.mg_record[13]); + #endif + if (GWGameStat.mg_record[0xD] == 0) { + GWGameStat.mg_record[0xD] = 0; + } + else if (GWGameStat.mg_record[0xD] >= ((REFRESH_RATE*600)-1)) { + GWGameStat.mg_record[0xD] = ((REFRESH_RATE*600)-1); + } + OSReport("HIScore 462(0-99):%d\n", GWGameStat.mg_record[0xE]); + if (GWGameStat.mg_record[0xE] == 0) { + GWGameStat.mg_record[0xE] = 0; + } + else if (GWGameStat.mg_record[0xE] >= 0x63) { + GWGameStat.mg_record[0xE] = 0x63; + } + OSReport("########################################################\n\n"); +} + +void fn_1_125DC(float *arg0, s32 arg1) +{ + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} diff --git a/src/REL/mstory2Dll/board_clear.c b/src/REL/mstory2Dll/board_clear.c new file mode 100644 index 00000000..3073e986 --- /dev/null +++ b/src/REL/mstory2Dll/board_clear.c @@ -0,0 +1,629 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBss3DC; // Size 0x104 + +StructBss3DC lbl_1_bss_3DC; +StructBss16C lbl_1_bss_3B4; +StructBss16C lbl_1_bss_38C; +StructBss16C lbl_1_bss_364; +StructBss16C lbl_1_bss_33C; +StructBss16C lbl_1_bss_29C[4]; +Process *lbl_1_bss_298; + +void fn_1_C4C0(void); +void fn_1_C858(void); +void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_CD78(void); +void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_D2D0(omObjData *arg0, StructBss16C *arg1); +void fn_1_D478(void); +void fn_1_D764(int arg0); +void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_DC54(omObjData *arg0, StructBss16C *arg1); +void fn_1_DDC4(void); +void fn_1_E1B8(void); +void fn_1_E244(void); +void fn_1_E334(void); + +void fn_1_B37C(omObjData *arg0, StructBss16C *arg1) +{ + fn_1_BE8(30); + fn_1_DB58(4, -1, 15, 1, 0); + fn_1_D224(4, -1, 15, 1, 0); + arg1->unk04 = NULL; +} + +void fn_1_B3E4(Process *arg0, s32 arg1) +{ + int i; + lbl_1_bss_298 = arg0; + lbl_1_bss_3DC.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_298, fn_1_E1B8); + fn_1_3754(); + fn_1_D764(arg1); + HuPrcChildCreate(fn_1_C858, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_CD78, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_D478, 100, 8192, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_DDC4, 100, 8192, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_C4C0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_B518(omObjData *object) +{ + if (object->work[2]) { + object->work[2]--; + return; + } + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_B5A4(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while (1) { + fn_1_BC8(); + printWin(posX, posY, 220, 160, &winColor); + if (lbl_1_bss_3B4.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } + else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_38C.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); + } + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_364.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); + } + if (lbl_1_bss_33C.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_29C[i].unk04 == NULL) { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> FALSE", i); + } + else { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(posX, posY + 90, 1, "P:%d W:%d", lbl_1_bss_3DC.unk00, lbl_1_bss_3DC.unk0C); + print8(posX, posY + 110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 120 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_3DC.unk30[i].unk00, lbl_1_bss_3DC.unk30[i].unk04, + lbl_1_bss_3DC.unk30[i].unk08, lbl_1_bss_3DC.unk30[i].unk0C, lbl_1_bss_3DC.unk30[i].unk14, lbl_1_bss_3DC.unk30[i].unk10); + } + } +} + +void fn_1_B984(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(51); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_B9E0(void) +{ + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 = (void *)fn_1_DC54; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_E244); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 == NULL) { + break; + } + } + while (1) { + fn_1_BC8(); + if (lbl_1_bss_33C.unk04 == NULL) { + break; + } + } + fn_1_BE8(30); +} + +void fn_1_BA90(void) +{ + int i; + lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_D224(3, -1, 15, 1, 0); + fn_1_1D4C(lbl_1_bss_3DC.unk04, lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000C); + fn_1_1AFC(lbl_1_bss_3DC.unk04, -1); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004); + fn_1_D224(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_3DC.unk04); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + fn_1_BE8(60); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_3DC.unk30[i].unk00 != lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk00) { + Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[1], 1); + } + Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[2], 1); + } + Hu3DModelAttrReset(lbl_1_bss_364.unk00->model[1], 1); + Hu3DModelAttrReset(lbl_1_bss_38C.unk00->model[5], 1); + Hu3DModelAttrReset(lbl_1_bss_38C.unk00->model[6], 1); + lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + lbl_1_bss_78[1] = HuAudSeqPlay(55); + lbl_1_bss_33C.unk04 = (void *)fn_1_B37C; + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000D); + fn_1_1AFC(lbl_1_bss_3DC.unk04, -1); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_3DC.unk04); + fn_1_1DFC(lbl_1_bss_38C.unk00, 2, 3, 0, 0); + fn_1_BE8(60); + lbl_1_bss_33C.unk04 = (void *)fn_1_D2D0; + fn_1_DB58(5, -1, 15, 0, 0); + fn_1_D224(5, 1, 0, 0, 1); + fn_1_2264(lbl_1_bss_38C.unk00, 2, 3, 0); +} + +void fn_1_BDF0(void) +{ + lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_CCCC(3, -1, 15, 1, 0); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000E); + fn_1_1AFC(lbl_1_bss_3DC.unk04, -1); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004); + fn_1_CCCC(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_3DC.unk04); + fn_1_CCCC(2, -1, 15, 0, 0); + fn_1_BE8(45); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_BE8(15); + HuAudSeqFadeOut(lbl_1_bss_78[1], 3000); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_E334); + fn_1_BE8(30); + fn_1_BE8(45); + fn_1_BE8(75); +} + +void fn_1_BF48(void) +{ + int i; + omOvlHisData *his; + int charNo; + int padNo; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (1) { + fn_1_BC8(); + if (!WipeStatGet()) { + break; + } + } + CharModelKill(-1); + charNo = lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk10; + padNo = lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk14; + GWPlayerCfg[lbl_1_bss_3DC.unk00].character = GWPlayerCfg[0].character; + GWPlayerCfg[lbl_1_bss_3DC.unk00].pad_idx = GWPlayerCfg[0].pad_idx; + GWPlayerCfg[lbl_1_bss_3DC.unk00].group = GWPlayerCfg[0].group; + GWPlayerCfg[lbl_1_bss_3DC.unk00].iscom = GWPlayerCfg[0].iscom; + GWPlayerCfg[0].character = charNo; + GWPlayerCfg[0].pad_idx = padNo; + GWPlayerCfg[0].group = 0; + GWPlayerCfg[0].iscom = FALSE; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + GWPlayerCfg[1].character = 8; + for (i = 1; i < 4; i++) { + GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1; + } + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 3, his->stat); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + GWSystem.mg_type = -1; + GWMGAvailSet(450); + GWSystem.mg_next = 450 - 401; + omOvlCallEx(OVL_M450, 1, 0, 0); + while (1) { + fn_1_BC8(); + } +} + +void fn_1_C270(omObjData *arg0, StructBss16C *arg1) +{ + int temp = 0; + fn_1_B984(); + fn_1_B9E0(); + fn_1_BA90(); + fn_1_BDF0(); + fn_1_BF48(); + arg1->unk04 = NULL; +} + +void fn_1_C4C0(void) +{ + omObjData *obj; + lbl_1_bss_3B4.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_3B4.unk04 = (void *)fn_1_C270; + lbl_1_bss_3B4.unk00->data = &lbl_1_bss_3B4; + while (1) { + fn_1_BC8(); + if (lbl_1_bss_3B4.unk04 != NULL) { + lbl_1_bss_3B4.unk04(obj, &lbl_1_bss_3B4); + } + } +} + +void fn_1_C574(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); + fn_1_1DFC(object, 2, 2, 0, 2); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x59)); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0, 80, 460); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelShadowSet(object->model[5]); + fn_1_1DFC(object, 5, 5, 0, 2); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5A)); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]); + Hu3DModelAttrSet(object->model[6], 1); + fn_1_1DFC(object, 6, 6, 0, 2); +} + +void fn_1_C79C(omObjData *arg0, StructBss16C *arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_C858(void) +{ + omObjData *obj; + lbl_1_bss_38C.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_38C.unk04 = (void *)fn_1_C79C; + lbl_1_bss_38C.unk00->data = &lbl_1_bss_38C; + fn_1_C574(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_38C.unk04 != NULL) { + lbl_1_bss_38C.unk04(obj, &lbl_1_bss_38C); + } + } +} + +void fn_1_CB0C(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + Hu3DModelPosSet(object->model[1], 0, 0, 150); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1.25f, 1.25f, 1.25f); + Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_364.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_364.unk00->work[0] = arg4; + lbl_1_bss_364.unk00->work[1] = arg1; + lbl_1_bss_364.unk00->work[2] = arg2 + 1; +} + +void fn_1_CD78(void) +{ + omObjData *obj; + lbl_1_bss_364.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_364.unk04 = NULL; + lbl_1_bss_364.unk00->data = &lbl_1_bss_38C; + fn_1_CB0C(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_364.unk04 != NULL) { + lbl_1_bss_364.unk04(obj, &lbl_1_bss_364); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_D030(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x84 : 0x7F)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x85 : 0x80)); + Hu3DModelPosSet(object->model[1], -300, 0, 890); + Hu3DModelRotSet(object->model[1], 0, 30, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13); +} + +void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_33C.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_33C.unk00->work[0] = arg4; + lbl_1_bss_33C.unk00->work[1] = arg1; + lbl_1_bss_33C.unk00->work[2] = arg2 + 1; +} + +void fn_1_D2D0(omObjData *arg0, StructBss16C *arg1) +{ + int i; + for (i = 0; i < 15; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15); + } + arg1->unk04 = NULL; +} + +void fn_1_D394(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_D478(void) +{ + omObjData *obj; + lbl_1_bss_33C.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_33C.unk04 = NULL; + lbl_1_bss_33C.unk00->data = &lbl_1_bss_33C; + fn_1_D030(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_33C.unk04 != NULL) { + lbl_1_bss_33C.unk04(obj, &lbl_1_bss_33C); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_D764(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { + order[i] = 0; + } + if (arg0 == order[i]) { + lbl_1_bss_3DC.unk00 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_357C(&lbl_1_bss_3DC.unk30[i], order[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_3DC.unk30[i].unk18 = GWPlayer[order[i]].rank + 1; + } +} + +Vec lbl_1_data_668[4] = { + { -300, 0, 460 }, + { -100, -30, 460 }, + { 100, -60, 460 }, + { 300, -90, 460 }, +}; + +void fn_1_D898(omObjData *object, int player) +{ + int playerNo = player; + int charNo = lbl_1_bss_3DC.unk30[playerNo].unk10; + object->model[1] = CharModelCreate(charNo, 4); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05)); + object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A)); + object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D)); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet( + object->model[1], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_668[playerNo].z); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x56)); + Hu3DModelPosSet( + object->model[2], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y, lbl_1_data_668[playerNo].z); + if (lbl_1_bss_3DC.unk30[playerNo].unk18 == 4) { + Hu3DModelAttrSet(object->model[2], 1); + } + Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5); + Hu3DModelShadowMapSet(object->model[2]); +} + +void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[0] = arg4; + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[1] = arg1; + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[2] = arg2 + 1; +} + +void fn_1_DC54(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { 120, 0, 800 }; + fn_1_2948(arg0, 1, pos, -1, 30, 10); + lbl_1_bss_33C.unk04 = (void *)fn_1_D394; + fn_1_1DFC(lbl_1_bss_38C.unk00, 2, 2, 0, 0); + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -60, 30, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_DDC4(void) +{ + omObjData *obj; + int playerNo = lbl_1_bss_3DC.unk10++; + lbl_1_bss_29C[playerNo].unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_29C[playerNo].unk04 = NULL; + lbl_1_bss_29C[playerNo].unk00->data = &lbl_1_bss_29C[0]; + fn_1_D898(obj, playerNo); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_29C[playerNo].unk04 != NULL) { + lbl_1_bss_29C[playerNo].unk04(obj, &lbl_1_bss_29C[playerNo]); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_E1B8(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 170; + work->unk08.z = -20; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1700; +} + +void fn_1_E244(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 125; + temp.unk08.z = -20; + temp.unk20.x = -5; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1750; + fn_1_4FEC(work, &temp, work->unk40++, 60, 30); +} + +void fn_1_E334(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + if (work->unk40 == 50) { + fn_1_1DFC(lbl_1_bss_38C.unk00, 5, 5, 0, 0); + fn_1_1DFC(lbl_1_bss_38C.unk00, 6, 6, 0, 0); + HuAudFXPlay(161); + } + temp.unk08.x = 0; + temp.unk08.y = 130; + temp.unk08.z = 460; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 150; + fn_1_4FEC(work, &temp, work->unk40, 180, 10); + if (work->unk40++ >= 90) { + if (work->unk40 == 91) { + lbl_1_bss_88[0] = HuAudFXPlay(32); + } + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90); + Hu3DData[lbl_1_bss_38C.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90); + } +} diff --git a/src/REL/mstory2Dll/board_entrance.c b/src/REL/mstory2Dll/board_entrance.c new file mode 100644 index 00000000..e69abcfd --- /dev/null +++ b/src/REL/mstory2Dll/board_entrance.c @@ -0,0 +1,633 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBss194; // Size 0x104 + +StructBss194 lbl_1_bss_194; +StructBss16C lbl_1_bss_16C; +StructBss16C lbl_1_bss_144; +StructBss16C lbl_1_bss_11C; +StructBss16C lbl_1_bss_F4; +StructBss16C lbl_1_bss_CC; +Process *lbl_1_bss_C8; +s32 lbl_1_bss_88[16]; +s32 lbl_1_bss_78[4]; + +u32 lbl_1_data_3A0[11] + = { 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000 }; + +s32 lbl_1_data_3CC[2][2] = { 20, 70, 1, 1 }; + +s32 lbl_1_data_3DC = -1; +s32 lbl_1_data_3E0[2] = { -1, -1 }; + +void fn_1_9768(void); +void fn_1_9A10(void); +void fn_1_9BD4(s32 arg0); +void fn_1_9ECC(omObjData *arg0, StructBss16C *arg1); +void fn_1_9FDC(void); +void fn_1_A4A8(omObjData *arg0, StructBss16C *arg1); +void fn_1_A58C(void); +void fn_1_AB10(omObjData *arg0, StructBss16C *arg1); + +void fn_1_AE5C(void); +void fn_1_B1C0(void); +void fn_1_B24C(void); + +void fn_1_7DB0(void) +{ + int i; + while (1) { + do { + HuPrcVSleep(); + } while (lbl_1_data_3DC == -1 || lbl_1_data_3E0[0] == -1 || lbl_1_data_3E0[1] == -1 || lbl_1_data_3E0[0] != Hu3DMotionIDGet(lbl_1_data_3DC)); + for (i = 0; i < 2; i++) { + if (lbl_1_data_3CC[1][i] != -1) { + if (Hu3DMotionTimeGet(lbl_1_data_3DC) >= lbl_1_data_3CC[0][i]) { + OSReport("KE-System TIME:%d\n", lbl_1_data_3CC[0][i]); + HuAudFXPlay(81); + lbl_1_data_3CC[1][i] = -1; + } + } + } + if (Hu3DMotionTimeGet(lbl_1_data_3DC) <= 10) { + for (i = 0; i < 2; i++) { + lbl_1_data_3CC[1][i] = 1; + } + } + } +} + +void fn_1_7F54(Process *arg0, s32 arg1) +{ + lbl_1_bss_C8 = arg0; + lbl_1_bss_194.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_C8, fn_1_B1C0); + fn_1_3754(); + fn_1_9BD4(arg1); + HuPrcChildCreate(fn_1_9FDC, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_9A10, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_A58C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_AE5C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_9768, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_806C(omObjData *object) +{ + if (object->work[2]) { + object->work[2]--; + return; + } + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_80F8(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while (1) { + fn_1_BC8(); + fontcolor = FONT_COLOR_WHITE; + printWin(posX, posY, 220, 130, &winColor); + if (lbl_1_bss_16C.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } + else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_144.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); + } + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_11C.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_PLAYER -> FALSE"); + } + else { + print8(posX, posY + 20, 1, "PROC_PLAYER -> TRUE"); + } + if (lbl_1_bss_F4.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_SUB -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_SUB -> TRUE"); + } + if (lbl_1_bss_CC.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_KOOPA -> TRUE"); + } + + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_194.unk00, lbl_1_bss_194.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_194.unk30[i].unk00, lbl_1_bss_194.unk30[i].unk04, + lbl_1_bss_194.unk30[i].unk08, lbl_1_bss_194.unk30[i].unk0C, lbl_1_bss_194.unk30[i].unk14, lbl_1_bss_194.unk30[i].unk10); + } + if (HuPadBtnDown[0] & PAD_BUTTON_X) { + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, TRUE); + } + else if (HuPadBtnDown[0] & PAD_BUTTON_Y) { + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, FALSE); + } + } +} + +void fn_1_8580(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(51); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_85DC(void) +{ + fn_1_1DFC(lbl_1_bss_144.unk00, 2, 3, 0, 0); + fn_1_2264(lbl_1_bss_144.unk00, 2, 3, 0); + lbl_1_bss_11C.unk04 = (void *)fn_1_9ECC; + lbl_1_bss_F4.unk04 = (void *)fn_1_A4A8; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_B24C); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_144.unk00, 2, 2, 0, 0); + do { + fn_1_BC8(); + } while (lbl_1_bss_11C.unk04 != NULL); + do { + fn_1_BC8(); + } while (lbl_1_bss_F4.unk04 != NULL); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[0][2]); + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 3, 5, 1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0000); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0001); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 1, 5, 1); + fn_1_1A94(lbl_1_bss_194.unk04); + fn_1_BE8(15); +} + +void fn_1_87D4(void) +{ + int i; + float speed; + HuAudSeqFadeOut(lbl_1_bss_78[0], 500); + HuAudFXPlay(153); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 2, 0, 0); + fn_1_BC8(); + Hu3DMotionTimeSet(lbl_1_bss_CC.unk00->model[1], 100); + Hu3DModelAttrReset(lbl_1_bss_CC.unk00->model[1], 1); + while (1) { + fn_1_BC8(); + if (Hu3DMotionTimeGet(lbl_1_bss_CC.unk00->model[1]) >= 132) { + break; + } + } + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 4, 0, 0); + fn_1_BC8(); + while (1) { + fn_1_BC8(); + if (Hu3DMotionTimeGet(lbl_1_bss_F4.unk00->model[1]) >= 5) { + break; + } + } + Hu3DMotionSpeedSet(lbl_1_bss_F4.unk00->model[1], 0); + Hu3DData[lbl_1_bss_F4.unk00->model[1]].rot.y = 0; + fn_1_67D8(lbl_1_bss_11C.unk00, 3, 1, 5, 0); + HuAudFXPlay(156); + omVibrate(lbl_1_bss_194.unk0C, 45, 12, 0); + speed = 50; + for (i = 0; i < 60; i++) { + float weight = fn_1_B08(0, speed, i % 15, 15); + speed = fn_1_88C(speed, 0, 30); + lbl_1_bss_194.unk100 = fn_1_88C(lbl_1_bss_194.unk100, weight, 5); + fn_1_BC8(); + } + lbl_1_bss_194.unk100 = 0; +} + +void fn_1_8ABC(void) +{ + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 1, 20, 1); + lbl_1_bss_78[1] = HuAudSeqPlay(6); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 10, 0); + fn_1_BE8(30); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + HuWinAttrSet(lbl_1_bss_194.unk04, 0x400); + HuWinMesSet(lbl_1_bss_194.unk04, 0x1F0002); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 10, 0); + fn_1_BE8(45); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 10, 1); + HuWinAttrReset(lbl_1_bss_194.unk04, 0x400); + HuWinKeyWaitEntry(lbl_1_bss_194.unk04); + fn_1_BC8(); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 4, 10, 1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0003); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_194.unk04); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 30, 1); + fn_1_BE8(60); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 5, 10, 0); + fn_1_BE8(25); + HuAudFXPlay(81); + fn_1_BE8(20); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1D4C(lbl_1_bss_194.unk04, lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0004); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0005); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_194.unk04); + fn_1_67D8(lbl_1_bss_11C.unk00, 7, 8, 10, 0); + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 3, 5, 0); + fn_1_BE8(90); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 30, 0); + fn_1_BE8(30); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + HuWinAttrSet(lbl_1_bss_194.unk04, 0x400); + HuWinMesSet(lbl_1_bss_194.unk04, 0x1F0002); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 10, 1); + HuWinAttrReset(lbl_1_bss_194.unk04, 0x400); + HuWinKeyWaitEntry(lbl_1_bss_194.unk04); + fn_1_BC8(); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_194.unk04); +} + +void fn_1_9034(void) +{ + fn_1_BE8(60); + lbl_1_bss_CC.unk04 = (void *)fn_1_AB10; + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0007); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1A94(lbl_1_bss_194.unk04); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_CC.unk04 == NULL) { + break; + } + } + HuAudFXPlay(149); + Hu3DMotionSpeedSet(lbl_1_bss_F4.unk00->model[1], 1); + fn_1_BC8(); + fn_1_2264(lbl_1_bss_F4.unk00, 1, 4, 0); + lbl_1_bss_88[0] = HuAudFXPlay(98); + HuAudFXPlay(lbl_1_data_0[0][1]); + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 5, 15, 1); + fn_1_BE8(60); +} + +void fn_1_9198(void) +{ + fn_1_BE8(60); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + HuAudFXFadeOut(lbl_1_bss_88[0], 1000); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (1) { + fn_1_BC8(); + if (!WipeStatGet()) { + break; + } + } + CharModelKill(-1); + HuAudFadeOut(1); + GWPlayerCfg[0].group = 0; + GWPlayerCfg[0].character = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10; + GWPlayerCfg[0].pad_idx = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk14; + GWPlayerCfg[0].iscom = FALSE; + omOvlGotoEx(OVL_MENT, 1, 11, 0); +} + +void fn_1_92BC(omObjData *arg0, StructBss16C *arg1) +{ + int temp = 0; + fn_1_8580(); + fn_1_85DC(); + fn_1_87D4(); + fn_1_8ABC(); + fn_1_9034(); + fn_1_9198(); + arg1->unk04 = NULL; +} + +void fn_1_9768(void) +{ + omObjData *obj; + lbl_1_bss_16C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_16C.unk04 = (void *)fn_1_92BC; + lbl_1_bss_16C.unk00->data = &lbl_1_bss_16C; + while (1) { + fn_1_BC8(); + if (lbl_1_bss_16C.unk04 != NULL) { + lbl_1_bss_16C.unk04(obj, &lbl_1_bss_16C); + } + } +} + +void fn_1_981C(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x50)); + object->motion[0] = Hu3DMotionIDGet(object->model[1]); + fn_1_1DFC(object, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); + fn_1_1DFC(object, 2, 3, 0, 2); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x51)); +} + +void fn_1_9954(omObjData *arg0, StructBss16C *arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(125, 130, arg1->unk08++, 360); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_9A10(void) +{ + omObjData *obj; + lbl_1_bss_144.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_144.unk04 = (void *)fn_1_9954; + lbl_1_bss_144.unk00->data = &lbl_1_bss_144; + fn_1_981C(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_144.unk04 != NULL) { + lbl_1_bss_144.unk04(obj, &lbl_1_bss_144); + } + } +} + +void fn_1_9BD4(s32 arg0) +{ + int i; + int order[4]; + order[0] = 0; + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { + order[i] = 0; + } + if (arg0 == order[i]) { + lbl_1_bss_194.unk00 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_357C(&lbl_1_bss_194.unk30[i], order[i]); + } +} + +void fn_1_9CB8(omObjData *object) +{ + int charNo = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x18) + charNo); + object->motion[7] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x48) + charNo); + object->motion[8] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x40) + charNo); + object->motion[9] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x20) + charNo); + object->motion[10] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x12)); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_9ECC(omObjData *arg0, StructBss16C *arg1) +{ + int i; + fn_1_1DFC(arg0, 1, 2, 0, 0); + fn_1_BC8(); + Hu3DMotionTimeSet(arg0->model[1], 60); + for (i = 0; i < 60; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60); + } + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_9FDC(void) +{ + omObjData *obj; + lbl_1_bss_11C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_11C.unk04 = NULL; + lbl_1_bss_11C.unk00->data = &lbl_1_bss_11C; + fn_1_9CB8(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_11C.unk04 != NULL) { + lbl_1_bss_11C.unk04(obj, &lbl_1_bss_11C); + } + if (obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_A288(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x72 : 0x73)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x73 : 0x74)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x75)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x76)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7A : 0x78)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7B : 0x79)); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x79 : 0x77)); + Hu3DModelPosSet(object->model[1], 0, 0, 460); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 6, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9); +} + +void fn_1_A4A8(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 90, 45, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_A58C(void) +{ + omObjData *obj; + lbl_1_bss_F4.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_F4.unk04 = NULL; + lbl_1_bss_F4.unk00->data = &lbl_1_bss_F4; + fn_1_A288(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_F4.unk04 != NULL) { + lbl_1_bss_F4.unk04(obj, &lbl_1_bss_F4); + } + if (obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_A848(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x65 : 0x69)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x68 : 0x6B)); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6C : 0x6D)); + object->motion[7] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6D : 0x6E)); + object->motion[8] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x64 : 0x68)); + Hu3DModelPosSet(object->model[1], -120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 90, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + lbl_1_data_3DC = object->model[1]; + lbl_1_data_3E0[0] = object->motion[7]; + lbl_1_data_3E0[1] = object->motion[8]; + HuPrcChildCreate(fn_1_7DB0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_AB10(omObjData *arg0, StructBss16C *arg1) +{ + int i; + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 8, 15, 1); + for (i = 0; i < 30; i++) { + fn_1_BC8(); + Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-120, -60, i, 30); + } + fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 9, 15, 0); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 6, 15, 0); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 6, 15); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 7, 15, 1); + fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 10, 15, 1); + for (i = 0; i < 240; i++) { + fn_1_BC8(); + Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-60, 540, i, 180); + Hu3DData[lbl_1_bss_11C.unk00->model[1]].pos.x = fn_1_864(120, 840, i, 180); + } + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_ADB0(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_CC.unk00->work[0] = arg4; + lbl_1_bss_CC.unk00->work[1] = arg1; + lbl_1_bss_CC.unk00->work[2] = arg2 + 1; +} + +void fn_1_AE5C(void) +{ + omObjData *obj; + lbl_1_bss_CC.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_CC.unk04 = NULL; + lbl_1_bss_CC.unk00->data = &lbl_1_bss_CC; + fn_1_A848(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_CC.unk04 != NULL) { + lbl_1_bss_CC.unk04(obj, &lbl_1_bss_CC); + } + if (obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_B1C0(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -4.9f; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_B24C(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1400; + fn_1_42A0(work, &temp, work->unk40++, 60, 10); + if (0.0f != lbl_1_bss_194.unk100) { + work->unk08.y = 100 + lbl_1_bss_194.unk100; + } +} diff --git a/src/REL/mstory2Dll/board_miss.c b/src/REL/mstory2Dll/board_miss.c new file mode 100644 index 00000000..c509b9d0 --- /dev/null +++ b/src/REL/mstory2Dll/board_miss.c @@ -0,0 +1,848 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBss688; // Size 0x104 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; +} StructBss4E8; // Size 0x18 + +StructBss688 lbl_1_bss_688; +StructBss16C lbl_1_bss_660; +StructBss16C lbl_1_bss_638; +StructBss16C lbl_1_bss_610; +StructBss16C lbl_1_bss_5E8; +StructBss16C lbl_1_bss_548[4]; +StructBss4E8 lbl_1_bss_4E8[4]; +BOOL lbl_1_bss_4E4; +Process *lbl_1_bss_4E0; + +s32 lbl_1_data_698[7] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, +}; + +s32 lbl_1_data_6B4[8] = { DATADIR_MARIOMDL1, DATADIR_LUIGIMDL1, DATADIR_PEACHMDL1, DATADIR_YOSHIMDL1, DATADIR_WARIOMDL1, DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, DATADIR_WALUIGIMDL1 }; + +void fn_1_FDFC(void); +void fn_1_10194(void); +void fn_1_106B0(omObjData *arg0, StructBss16C *arg1); +void fn_1_1094C(void); +void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_10EA0(omObjData *arg0, StructBss16C *arg1); +void fn_1_1112C(void); +void fn_1_11418(int arg0); +void fn_1_11934(omObjData *arg0, StructBss16C *arg1); +void fn_1_11A98(omObjData *arg0, StructBss16C *arg1); +void fn_1_11BB0(void); +void fn_1_11FD0(void); +void fn_1_1205C(void); +void fn_1_1218C(void); + +void fn_1_E570(void) +{ + int statId = HuDataDirReadAsync(DATADIR_BOARD); + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + HuAR_MRAMtoARAM(DATADIR_BOARD); + while (HuARDMACheck()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_BOARD); + statId = HuDataDirReadAsync(lbl_1_data_698[GWSystem.board]); + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + lbl_1_bss_4E4 = TRUE; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_E638(void) +{ + int i, j; + lbl_1_bss_4E8[0].unk00 = 0; + lbl_1_bss_4E8[0].unk04 = 0; + lbl_1_bss_4E8[0].unk10 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10; + lbl_1_bss_4E8[0].unk14 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk14; + lbl_1_bss_4E8[0].unk08 = 0; + for (i = 1; i < 4; i++) { + lbl_1_bss_4E8[i].unk10 = -1; + lbl_1_bss_4E8[i].unk14 = i; + lbl_1_bss_4E8[i].unk08 = 1; + } + for (i = 1; i < 4; i++) { + do { + lbl_1_bss_4E8[i].unk10 = rand8() % 8; + for (j = 0; j < 4; j++) { + if (i != j && lbl_1_bss_4E8[j].unk10 != -1 && lbl_1_bss_4E8[i].unk10 == lbl_1_bss_4E8[j].unk10) { + break; + } + } + } while (j != 4); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_4E8[i].unk10; + GWPlayerCfg[i].pad_idx = lbl_1_bss_4E8[i].unk14; + GWPlayerCfg[i].group = 0; + GWPlayerCfg[i].iscom = lbl_1_bss_4E8[i].unk08; + } + BoardSaveInit(GWSystem.board); + CharKill(-1); + HuDataDirClose(DATADIR_MSTORY2); + HuPrcChildCreate(fn_1_E570, 100, 12288, 0, lbl_1_bss_4E0); +} + +void fn_1_E8EC(void) +{ + int ovlTbl[7] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 }; + omOvlHisData *his; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet()) { + fn_1_BC8(); + } + CharModelKill(-1); + MGSeqKillAll(); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY3, 0, his->stat); + do { + fn_1_BC8(); + } while (lbl_1_bss_4E4 != 1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(ovlTbl[GWSystem.board], 1, 0, 0); + while (1) { + fn_1_BC8(); + } +} + +void fn_1_EA2C(Process *arg0, s32 arg1) +{ + int i; + lbl_1_bss_4E0 = arg0; + lbl_1_bss_688.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_4E0, fn_1_11FD0); + fn_1_3754(); + fn_1_11418(arg1); + HuPrcChildCreate(fn_1_10194, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1094C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1112C, 100, 8192, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_11BB0, 100, 8192, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_FDFC, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_EB60(omObjData *object) +{ + if (object->work[2]) { + object->work[2]--; + return; + } + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_EBEC(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while (1) { + fn_1_BC8(); + printWin(posX, posY, 220, 160, &winColor); + if (lbl_1_bss_660.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } + else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_638.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); + } + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_610.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); + } + if (lbl_1_bss_5E8.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_548[i].unk04 == NULL) { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> FALSE", i); + } + else { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(posX, posY + 90, 1, "P:%d W:%d", lbl_1_bss_688.unk00, lbl_1_bss_688.unk0C); + print8(posX, posY + 110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 120 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_688.unk30[i].unk00, lbl_1_bss_688.unk30[i].unk04, + lbl_1_bss_688.unk30[i].unk08, lbl_1_bss_688.unk30[i].unk0C, lbl_1_bss_688.unk30[i].unk14, lbl_1_bss_688.unk30[i].unk10); + } + } +} + +void fn_1_EFCC(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(52); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_F028(void) +{ + int i; + for (i = 0; i < 4; i++) { + lbl_1_bss_548[i].unk04 = (void *)fn_1_11934; + } + do { + fn_1_BC8(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_548[i].unk04 != NULL) { + break; + } + } + } while (i != 4); + lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1205C); + do { + fn_1_BC8(); + } while (lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); + do { + fn_1_BC8(); + } while (lbl_1_bss_5E8.unk04 != NULL); + fn_1_BE8(30); + if (0) { + // Dummy code to stop this function from inlining + do { + fn_1_BC8(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_548[i].unk04 != NULL) { + break; + } + } + } while (i != 4); + lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1205C); + do { + fn_1_BC8(); + } while (lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); + do { + fn_1_BC8(); + } while (lbl_1_bss_5E8.unk04 != NULL); + fn_1_BE8(30); + } +} + +void fn_1_F150(void) +{ + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_10DF4(3, -1, 15, 1, 0); + fn_1_1D18(lbl_1_bss_688.unk04, 0x1F0009); + fn_1_1AFC(lbl_1_bss_688.unk04, -1); + fn_1_1D18(lbl_1_bss_688.unk04, 0x250004); + fn_1_10DF4(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_688.unk04); +} + +int fn_1_F22C(void) +{ + int result = 0; + fn_1_1D18(lbl_1_bss_688.unk04, 0x1E0021); + fn_1_1AFC(lbl_1_bss_688.unk04, 5); + lbl_1_bss_688.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_688.unk0C); + fn_1_1D18(lbl_1_bss_688.unk08, 0x1E0035); + result = fn_1_1C64(lbl_1_bss_688.unk08); + fn_1_1D18(lbl_1_bss_688.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_688.unk08); + return result; +} + +int fn_1_F2FC(void) +{ + int result = 0; + fn_1_1D18(lbl_1_bss_688.unk04, 0x1E0005); + fn_1_1AFC(lbl_1_bss_688.unk04, 5); + lbl_1_bss_688.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_688.unk0C); + fn_1_1D18(lbl_1_bss_688.unk08, 0x1E0035); + result = fn_1_1BA8(lbl_1_bss_688.unk08, 1); + fn_1_1D18(lbl_1_bss_688.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_688.unk08); + return result; +} + +void fn_1_F3D0(void) +{ + lbl_1_bss_5E8.unk04 = (void *)fn_1_10EA0; + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1D18(lbl_1_bss_688.unk04, 0x1F000A); + fn_1_1AFC(lbl_1_bss_688.unk04, -1); + fn_1_1D18(lbl_1_bss_688.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_688.unk04); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + do { + fn_1_BC8(); + } while (lbl_1_bss_5E8.unk04 != NULL); + lbl_1_bss_610.unk04 = (void *)fn_1_106B0; + do { + fn_1_BC8(); + } while (lbl_1_bss_610.unk04 != NULL); + fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 20, 1); + lbl_1_bss_78[1] = HuAudSeqPlay(6); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_610.unk00, 1, 4, 30, 0); + fn_1_BE8(30); + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + HuWinAttrSet(lbl_1_bss_688.unk04, 0x400); + HuWinMesSet(lbl_1_bss_688.unk04, 0x1F000B); + fn_1_2264(lbl_1_bss_610.unk00, 1, 4, 10); + fn_1_1DFC(lbl_1_bss_610.unk00, 1, 1, 10, 1); + HuWinAttrReset(lbl_1_bss_688.unk04, 0x400); + HuWinKeyWaitEntry(lbl_1_bss_688.unk04); + fn_1_BC8(); + fn_1_1AFC(lbl_1_bss_688.unk04, -1); + fn_1_1D18(lbl_1_bss_688.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_688.unk04); + fn_1_BE8(60); + fn_1_E638(); + Hu3DModelAttrReset(lbl_1_bss_638.unk00->model[5], 1); + Hu3DModelAttrReset(lbl_1_bss_638.unk00->model[6], 1); + fn_1_1DFC(lbl_1_bss_610.unk00, 1, 4, 15, 1); + fn_1_1DFC(lbl_1_bss_638.unk00, 2, 3, 0, 0); + fn_1_BE8(45); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_BE8(15); + fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, 5, 0, 0); + fn_1_BC8(); + fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 10, 0); + fn_1_2264(lbl_1_bss_638.unk00, 2, 3, 0); + HuAudSeqFadeOut(lbl_1_bss_78[1], 3000); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1218C); + fn_1_BE8(150); +} + +void fn_1_F838(void) { } + +void fn_1_F83C(void) +{ + fn_1_BE8(60); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + CharModelKill(-1); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); +} + +void fn_1_F8B4(omObjData *arg0, StructBss16C *arg1) +{ + int mode = 0; + int i; + fn_1_EFCC(); + fn_1_F028(); + fn_1_F150(); + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + while (1) { + fn_1_BC8(); + if (fn_1_F22C()) { + mode = 0; + break; + } + else if (fn_1_F2FC()) { + mode = 1; + break; + } + } + + fn_1_1A94(lbl_1_bss_688.unk04); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_688.unk30[i].unk00 != lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk00) { + Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[1], 1); + } + Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[2], 1); + } + switch (mode) { + case 0: + fn_1_F3D0(); + break; + case 1: + break; + } + switch (mode) { + case 0: + fn_1_E8EC(); + break; + + case 1: + fn_1_F83C(); + break; + } + arg1->unk04 = NULL; +} + +void fn_1_FDFC(void) +{ + omObjData *obj; + lbl_1_bss_660.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_660.unk04 = (void *)fn_1_F8B4; + lbl_1_bss_660.unk00->data = &lbl_1_bss_660; + while (1) { + fn_1_BC8(); + if (lbl_1_bss_660.unk04 != NULL) { + lbl_1_bss_660.unk04(obj, &lbl_1_bss_660); + } + } +} + +void fn_1_FEB0(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); + fn_1_1DFC(object, 2, 2, 0, 2); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x57)); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0, 80, 460); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelShadowSet(object->model[5]); + fn_1_1DFC(object, 5, 5, 0, 2); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x58)); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "koopabox_fix-effect_fook2", object->model[6]); + Hu3DModelAttrSet(object->model[6], 1); + fn_1_1DFC(object, 6, 6, 0, 2); +} + +void fn_1_100D8(omObjData *arg0, StructBss16C *arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_10194(void) +{ + omObjData *obj; + lbl_1_bss_638.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_638.unk04 = (void *)fn_1_100D8; + lbl_1_bss_638.unk00->data = &lbl_1_bss_638; + fn_1_FEB0(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_638.unk04 != NULL) { + lbl_1_bss_638.unk04(obj, &lbl_1_bss_638); + } + } +} + +void fn_1_10448(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x65 : 0x69)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + Hu3DModelPosSet(object->model[1], -180, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_10604(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_610.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_610.unk00->work[0] = arg4; + lbl_1_bss_610.unk00->work[1] = arg1; + lbl_1_bss_610.unk00->work[2] = arg2 + 1; +} + +void fn_1_106B0(omObjData *arg0, StructBss16C *arg1) +{ + int i = 0; + float speed = 50; + + HuAudFXPlay(153); + fn_1_10604(2, 1, 0, 0, 1); + fn_1_BE8(5); + Hu3DMotionTimeSet(lbl_1_bss_610.unk00->model[1], 100); + fn_1_BC8(); + Hu3DModelAttrReset(arg0->model[1], 1); + while (1) { + fn_1_BC8(); + if (Hu3DMotionTimeGet(lbl_1_bss_610.unk00->model[1]) >= 137) { + break; + } + } + HuAudFXPlay(156); + omVibrate(lbl_1_bss_688.unk0C, 45, 12, 0); + fn_1_67D8(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 6, 1, 5, 0); + for (i = 0; i < 60; i++) { + float posY; + fn_1_BC8(); + posY = fn_1_B08(0, speed, i % 15, 15); + speed = fn_1_88C(speed, 0, 30); + lbl_1_bss_688.unk100 = fn_1_88C(lbl_1_bss_688.unk100, posY, 5); + } + lbl_1_bss_688.unk100 = 0; + arg1->unk04 = NULL; +} + +void fn_1_1094C(void) +{ + omObjData *obj; + lbl_1_bss_610.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_610.unk04 = NULL; + lbl_1_bss_610.unk00->data = &lbl_1_bss_638; + fn_1_10448(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_610.unk04 != NULL) { + lbl_1_bss_610.unk04(obj, &lbl_1_bss_610); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_10C00(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x84 : 0x7F)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x85 : 0x80)); + Hu3DModelPosSet(object->model[1], -300, 0, 890); + Hu3DModelRotSet(object->model[1], 0, 30, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13); +} + +void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_5E8.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_5E8.unk00->work[0] = arg4; + lbl_1_bss_5E8.unk00->work[1] = arg1; + lbl_1_bss_5E8.unk00->work[2] = arg2 + 1; +} + +void fn_1_10EA0(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -600, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -90, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_10F84(omObjData *arg0, StructBss16C *arg1) +{ + int i; + for (i = 0; i < 15; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15); + } + arg1->unk04 = NULL; +} + +void fn_1_11048(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_1112C(void) +{ + omObjData *obj; + lbl_1_bss_5E8.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_5E8.unk04 = NULL; + lbl_1_bss_5E8.unk00->data = &lbl_1_bss_5E8; + fn_1_10C00(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_5E8.unk04 != NULL) { + lbl_1_bss_5E8.unk04(obj, &lbl_1_bss_5E8); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_11418(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { + order[i] = 0; + } + if (arg0 == order[i]) { + lbl_1_bss_688.unk00 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_357C(&lbl_1_bss_688.unk30[i], order[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_688.unk30[i].unk18 = GWPlayer[order[i]].rank + 1; + } +} + +Vec lbl_1_data_81C[4] = { + { -300, 0, 460 }, + { -100, -30, 460 }, + { 100, -60, 460 }, + { 300, -90, 460 }, +}; + +void fn_1_1154C(omObjData *object, int player) +{ + int playerNo = player; + int charNo = lbl_1_bss_688.unk30[playerNo].unk10; + object->model[1] = CharModelCreate(charNo, 4); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05)); + object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A)); + object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D)); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x18) + charNo); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet( + object->model[1], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_81C[playerNo].z); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x56)); + Hu3DModelPosSet( + object->model[2], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y, lbl_1_data_81C[playerNo].z); + if (lbl_1_bss_688.unk30[playerNo].unk18 == 4) { + Hu3DModelAttrSet(object->model[2], 1); + } + Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5); + Hu3DModelShadowMapSet(object->model[2]); +} + +void fn_1_11838(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[0] = arg4; + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[1] = arg1; + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[2] = arg2 + 1; +} + +void fn_1_11934(omObjData *arg0, StructBss16C *arg1) +{ + float posY = Hu3DData[arg0->model[1]].pos.y; + int i; + for (i = 0; i < 60; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].pos.y = fn_1_984(posY, 0, i, 60); + Hu3DData[arg0->model[2]].pos.y = fn_1_984(posY - 90, -90, i, 60); + } + Hu3DModelAttrSet(arg0->model[2], 1); + arg1->unk04 = NULL; +} + +void fn_1_11A98(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { 120, 0, 800 }; + lbl_1_bss_5E8.unk04 = (void *)fn_1_11048; + fn_1_1DFC(lbl_1_bss_638.unk00, 2, 2, 0, 0); + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -60, 30, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_11BB0(void) +{ + omObjData *obj; + int playerNo = lbl_1_bss_688.unk10++; + lbl_1_bss_548[playerNo].unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_548[playerNo].unk04 = NULL; + lbl_1_bss_548[playerNo].unk00->data = &lbl_1_bss_548[0]; + fn_1_1154C(obj, playerNo); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_548[playerNo].unk04 != NULL) { + lbl_1_bss_548[playerNo].unk04(obj, &lbl_1_bss_548[playerNo]); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_11FD0(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 170; + work->unk08.z = 0; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1700; +} + +void fn_1_1205C(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 125; + temp.unk08.z = 0; + temp.unk20.x = -5; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1750; + fn_1_4FEC(work, &temp, work->unk40++, 60, 30); + if (0.0f != lbl_1_bss_688.unk100) { + work->unk08.y = lbl_1_bss_688.unk100 + 125; + } +} + +void fn_1_1218C(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + if (work->unk40 == 50) { + fn_1_1DFC(lbl_1_bss_638.unk00, 5, 5, 0, 0); + fn_1_1DFC(lbl_1_bss_638.unk00, 6, 6, 0, 0); + HuAudFXPlay(161); + } + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 460; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 125; + fn_1_4FEC(work, &temp, work->unk40, 180, 10); + if (work->unk40++ >= 90) { + if (work->unk40 == 91) { + lbl_1_bss_88[0] = HuAudFXPlay(32); + } + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90); + Hu3DData[lbl_1_bss_638.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90); + } +} diff --git a/src/REL/mstory2Dll/ending.c b/src/REL/mstory2Dll/ending.c new file mode 100644 index 00000000..93e9ab8e --- /dev/null +++ b/src/REL/mstory2Dll/ending.c @@ -0,0 +1,701 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/saveload.h" +#include "game/thpmain.h" +#endif + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBssC0C; // Size 0x104 + +StructBssC0C lbl_1_bss_C0C; +StructBss16C lbl_1_bss_BE4; +StructBss16C lbl_1_bss_BBC; +StructBss16C lbl_1_bss_B94; +StructBss16C lbl_1_bss_B6C; +StructBss16C lbl_1_bss_B44; +BOOL lbl_1_bss_B40; +BOOL lbl_1_bss_B3C; +Process *lbl_1_bss_B38; + +s32 lbl_1_data_EF8[2][2] = { 20, 70, 1, 1 }; +s32 lbl_1_data_F08 = -1; +s32 lbl_1_data_F0C[2] = { -1, -1 }; +s32 lbl_1_data_F14 = 127; + +void fn_1_19F14(void); +void fn_1_1A160(void); +void fn_1_1A538(omObjData *arg0, StructBss16C *arg1); +void fn_1_1A578(void); +void fn_1_1A9D0(omObjData *arg0, StructBss16C *arg1); +void fn_1_1AAB4(void); +void fn_1_1AFD4(omObjData *arg0, StructBss16C *arg1); +void fn_1_1B0E4(void); +void fn_1_1AD3C(int arg0); +void fn_1_1B318(void); +void fn_1_1B3A4(void); +void fn_1_1B430(void); + +void fn_1_186D0(void) +{ + int i; + while (1) { + HuPrcVSleep(); + if (lbl_1_data_F08 != -1 && lbl_1_data_F0C[0] != -1 && lbl_1_data_F0C[1] != -1 && lbl_1_data_F0C[0] == Hu3DMotionIDGet(lbl_1_data_F08)) { + for (i = 0; i < 2; i++) { + if (lbl_1_data_EF8[1][i] != -1) { + if (Hu3DMotionTimeGet(lbl_1_data_F08) >= lbl_1_data_EF8[0][i]) { + OSReport("KE-System TIME:%d\n", lbl_1_data_EF8[0][i]); + HuAudFXPlayVol(81, lbl_1_data_F14); + lbl_1_data_EF8[1][i] = -1; + } + } + } + if (Hu3DMotionTimeGet(lbl_1_data_F08) <= 10) { + for (i = 0; i < 2; i++) { + lbl_1_data_EF8[1][i] = 1; + } + } + } + if (lbl_1_bss_B3C == 1) { + lbl_1_data_F14--; + if (lbl_1_data_F14 <= 0) { + lbl_1_data_F14 = 0; + } + } + if (lbl_1_bss_B3C == 2) { + break; + } + } + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_188F0(Process *arg0, s32 arg1) +{ + lbl_1_bss_B38 = arg0; + if (GWSystem.diff_story == 2) { + GWGameStat.veryHardUnlock = TRUE; + } + lbl_1_bss_C0C.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_B38, fn_1_1B318); + fn_1_3754(); + fn_1_1AD3C(arg1); + HuPrcChildCreate(fn_1_1B0E4, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1A160, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1AAB4, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1A578, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_19F14, 100, 12288, 0, HuPrcCurrentGet()); +} + +void fn_1_18A34(omObjData *object) +{ + if (object->work[2]) { + object->work[2]--; + return; + } + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_18AC0(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while (1) { + fn_1_BC8(); + fontcolor = FONT_COLOR_WHITE; + printWin(posX, posY, 220, 130, &winColor); + if (lbl_1_bss_BE4.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } + else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_BBC.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); + } + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_B94.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_PLAYER -> FALSE"); + } + else { + print8(posX, posY + 20, 1, "PROC_PLAYER -> TRUE"); + } + if (lbl_1_bss_B6C.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_SUB -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_SUB -> TRUE"); + } + if (lbl_1_bss_B44.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_KOOPA -> TRUE"); + } + + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_C0C.unk00, lbl_1_bss_C0C.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_C0C.unk30[i].unk00, lbl_1_bss_C0C.unk30[i].unk04, + lbl_1_bss_C0C.unk30[i].unk08, lbl_1_bss_C0C.unk30[i].unk0C, lbl_1_bss_C0C.unk30[i].unk14, lbl_1_bss_C0C.unk30[i].unk10); + } + } +} + +void fn_1_18E7C(void) +{ + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_18EC4(void) +{ + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F001E); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_C0C.unk04); + lbl_1_bss_B44.unk04 = (void *)fn_1_1A538; + lbl_1_bss_B3C = 1; + fn_1_BE8(60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); + lbl_1_bss_B44.unk04 = NULL; + lbl_1_bss_B3C = 2; + fn_1_1DFC(lbl_1_bss_B44.unk00, 1, 1, 0, 1); + fn_1_2750(fn_1_1B3A4); + Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[1], 1); + Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[2], 1); + Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[4], 1); + Hu3DModelAttrReset(lbl_1_bss_B6C.unk00->model[1], 1); + Hu3DModelAttrReset(lbl_1_bss_B94.unk00->model[1], 1); + Hu3DModelAttrSet(lbl_1_bss_B44.unk00->model[1], 1); + Hu3DModelPosSet(lbl_1_bss_BBC.unk00->model[1], 0, 0, 0); + fn_1_BE8(60); + lbl_1_bss_78[0] = HuAudSeqPlay(56); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + if (0) { + fn_1_BC8(); + } +} + +void fn_1_19138(void) +{ + fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 3, 0, 0); + fn_1_2264(lbl_1_bss_BBC.unk00, 2, 3, 0); + lbl_1_bss_B94.unk04 = (void *)fn_1_1AFD4; + lbl_1_bss_B6C.unk04 = (void *)fn_1_1A9D0; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1B430); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 2, 0, 0); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_B94.unk04 == NULL) { + break; + } + } + while (1) { + fn_1_BC8(); + if (lbl_1_bss_B6C.unk04 == NULL) { + break; + } + } + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + HuAudFXPlay(lbl_1_data_0[0][2]); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 15, 1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F001F); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F0020); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 15, 1); + fn_1_1A94(lbl_1_bss_C0C.unk04); + fn_1_BE8(60); +} + +char *lbl_1_data_10E4[8] = { "movie/endmov_ma0.thp", "movie/endmov_lu0.thp", "movie/endmov_pe0.thp", "movie/endmov_yo0.thp", "movie/endmov_wa0.thp", + "movie/endmov_do0.thp", "movie/endmov_da0.thp", "movie/endmov_wl0.thp" }; + +void fn_1_19334(void) +{ + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + HuAudFXPlay(lbl_1_data_0[0][2]); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 0, 1); + fn_1_1D4C(lbl_1_bss_C0C.unk04, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F0024); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 0, 1); + fn_1_1A94(lbl_1_bss_C0C.unk04); + fn_1_1DFC(lbl_1_bss_B94.unk00, 1, 4, 15, 0); + fn_1_2264(lbl_1_bss_B94.unk00, 1, 4, 15); + fn_1_1DFC(lbl_1_bss_B94.unk00, 1, 3, 15, 1); + fn_1_BE8(60); + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 0, 1); + fn_1_6D78(lbl_1_bss_C0C.unk04, 0x1F0023, 0, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 0, 1); + HuAudFXPlay(lbl_1_data_0[0][3]); + fn_1_1A94(lbl_1_bss_C0C.unk04); + fn_1_BE8(60); + HuAudFXPlay(152); + Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[1], 1); + Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[2], 1); + Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[4], 1); + Hu3DModelAttrSet(lbl_1_bss_B6C.unk00->model[1], 1); + Hu3DModelAttrSet(lbl_1_bss_B94.unk00->model[1], 1); + HuAudSeqFadeOut(lbl_1_bss_78[0], 100); + lbl_1_bss_B3C = 2; + GWGameStat.musicAllF = TRUE; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet()) { + HuPrcVSleep(); + } + lbl_1_bss_BBC.unk04 = NULL; + lbl_1_bss_B94.unk04 = NULL; + lbl_1_bss_B44.unk04 = NULL; + lbl_1_bss_B6C.unk04 = NULL; + + CharModelKill(-1); + Hu3DAllKill(); + fn_1_BE8(60); + { + int time = 0; +#if VERSION_PAL + s32 languageOffset = 0; +#endif + int gid = HuSprGrpCreate(3); + int sprid = HuTHPSprCreate(lbl_1_data_10E4[lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10], FALSE, 1000); + HuSprGrpMemberSet(gid, 0, sprid); + HuSprPosSet(gid, 0, 288, 240); +#if VERSION_PAL + switch (GWGameStat.language) { + case 2: + languageOffset = 1; + break; + case 3: + languageOffset = 2; + break; + case 4: + languageOffset = 3; + break; + case 5: + languageOffset = 4; + break; + } + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x60) + languageOffset, MEMORY_DEFAULT_NUM)), 950, 0); +#else + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x60), MEMORY_DEFAULT_NUM)), 950, 0); +#endif + HuSprGrpMemberSet(gid, 1, sprid); + HuSprPosSet(gid, 1, 288, 226); + HuSprAttrSet(gid, 1, HUSPR_ATTR_DISPOFF); + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x61 : 0x65), MEMORY_DEFAULT_NUM)), 950, 0); + HuSprGrpMemberSet(gid, 2, sprid); + HuSprBankSet(gid, 2, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10); + if (GWLanguageGet() == 0 && lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10 == 5) { + HuSprBankSet(gid, 2, 8); + } + HuSprPosSet(gid, 2, 288, 254); + HuSprAttrSet(gid, 2, HUSPR_ATTR_DISPOFF); + HuPrcSleep(5); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + while (!HuTHPEndCheck()) { + if (time >= (VERSION_NTSC ? 3300 : 2725)) { + HuSprAttrReset(gid, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(gid, 2, HUSPR_ATTR_DISPOFF); + } + else { + time++; + } + HuPrcVSleep(); + } + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(gid); + } +} + +void fn_1_199A0(void) +{ + float sp8[2]; + s32 temp_r30; + s32 var_r29; + s32 var_r31; + s32 var_r28; + temp_r30 = 1; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_B40 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(var_r29, 288.0f, 240.0f); + espAttrReset(var_r29, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_BE8(60); + var_r28 = GWStoryCharGet(); + GWSystem.storyCharBit |= 1 << var_r28; + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { + GWGameStat.story_continue = FALSE; + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_B40 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_19BE8(void) +{ + omOvlHisData *his; + fn_1_BE8(120); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + CharModelKill(-1); + HuAudFadeOut(1); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 20, 1); + omOvlCallEx(OVL_STAFF, 1, 0, 0); + while (1) { + fn_1_BC8(); + } +} + +void fn_1_19C6C(omObjData *arg0, StructBss16C *arg1) +{ + int temp = 0; + fn_1_18E7C(); + fn_1_18EC4(); + fn_1_19138(); + fn_1_19334(); + fn_1_19BE8(); + arg1->unk04 = NULL; +} + +void fn_1_19F14(void) +{ + omObjData *obj; + lbl_1_bss_BE4.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_BE4.unk04 = (void *)fn_1_19C6C; + lbl_1_bss_BE4.unk00->data = &lbl_1_bss_BE4; + while (1) { + fn_1_BC8(); + if (lbl_1_bss_BE4.unk04 != NULL) { + lbl_1_bss_BE4.unk04(obj, &lbl_1_bss_BE4); + } + } +} + +void fn_1_19FC8(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x50)); + object->motion[0] = Hu3DMotionIDGet(object->model[1]); + fn_1_1DFC(object, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); + Hu3DModelAttrSet(object->model[1], 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); + Hu3DModelAttrSet(object->model[2], 1); + fn_1_1DFC(object, 2, 3, 0, 2); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x51)); + Hu3DModelAttrSet(object->model[4], 1); + Hu3DModelPosSet(object->model[1], 0, -1000, 0); +} + +void fn_1_1A160(void) +{ + omObjData *obj; + lbl_1_bss_BBC.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_BBC.unk04 = NULL; + fn_1_19FC8(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_BBC.unk04 != NULL) { + lbl_1_bss_BBC.unk04(obj, &lbl_1_bss_BBC); + } + } +} + +void fn_1_1A368(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x70 : 0x71)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x71 : 0x72)); + Hu3DModelPosSet(object->model[1], 0, 0, 600); + Hu3DModelRotSet(object->model[1], 0, 180, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + fn_1_1DFC(object, 1, 3, 0, 1); + lbl_1_data_F08 = object->model[1]; + lbl_1_data_F0C[0] = object->motion[3]; + lbl_1_data_F0C[1] = object->motion[3]; + HuPrcChildCreate(fn_1_186D0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_1A538(omObjData *arg0, StructBss16C *arg1) +{ + Hu3DData[lbl_1_bss_B44.unk00->model[1]].pos.z -= 2.5f; +} + +void fn_1_1A578(void) +{ + omObjData *obj; + lbl_1_bss_B44.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_B44.unk04 = NULL; + fn_1_1A368(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_B44.unk04 != NULL) { + lbl_1_bss_B44.unk04(obj, &lbl_1_bss_B44); + } + if (obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_1A7CC(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x72 : 0x73)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x73 : 0x74)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x75)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x76)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7C : 0x7A)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x79 : 0x77)); + Hu3DModelPosSet(object->model[1], 0, 0, 460); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 5, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9); +} + +void fn_1_1A9D0(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 90, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_1AAB4(void) +{ + omObjData *obj; + lbl_1_bss_B6C.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_B6C.unk04 = NULL; + fn_1_1A7CC(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_B6C.unk04 != NULL) { + lbl_1_bss_B6C.unk04(obj, &lbl_1_bss_B6C); + } + if (obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_1AD3C(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { + order[i] = 0; + } + if (arg0 == order[i]) { + lbl_1_bss_C0C.unk00 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_357C(&lbl_1_bss_C0C.unk30[i], order[i]); + } +} + +void fn_1_1AE20(omObjData *object) +{ + int charNo = lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x10) + charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x08) + charNo); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_1AFD4(omObjData *arg0, StructBss16C *arg1) +{ + int i; + fn_1_1DFC(arg0, 1, 2, 0, 0); + fn_1_BC8(); + Hu3DMotionTimeSet(arg0->model[1], 60); + for (i = 0; i < 60; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60); + } + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_1B0E4(void) +{ + omObjData *obj; + lbl_1_bss_B94.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_B94.unk04 = NULL; + fn_1_1AE20(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_B94.unk04 != NULL) { + lbl_1_bss_B94.unk04(obj, &lbl_1_bss_B94); + } + if (obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_1B318(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 120; + work->unk08.z = 0; + work->unk20.x = 0; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1400; +} + +void fn_1_1B3A4(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -4.9f; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_1B430(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1400; + fn_1_42A0(work, &temp, work->unk40++, 60, 10); + if (0.0f != lbl_1_bss_C0C.unk100) { + work->unk08.y = 125 + lbl_1_bss_C0C.unk100; + } +} diff --git a/src/REL/mstory2Dll/main.c b/src/REL/mstory2Dll/main.c new file mode 100644 index 00000000..77125674 --- /dev/null +++ b/src/REL/mstory2Dll/main.c @@ -0,0 +1,1238 @@ +#include "REL/mstory2Dll.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/hsfdraw.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/sprite.h" + +#include "ext_math.h" + +s32 lbl_1_bss_68[3]; // unused +StructBss24 lbl_1_bss_24; +s32 lbl_1_bss_4[8]; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][4] = { + { 0x37, 0x38, 0x36, 0x39 }, + { 0x43, 0x45, 0x44, 0x43 }, + { 0x40, 0x42, 0x41, 0x40 }, + { 0x4B, 0x4D, 0x4C, 0x4B }, + { 0x46, 0x48, 0x47, 0x46 }, + { 0x3E, 0x3F, 0x3E, 0x3E }, + {0x3A, 0x3B, 0x3C, 0xFFFFFFFF} +}; + +char* lbl_1_data_144[] = { + "K-1 : KOOPA STORY - BOARD ENTRANCE EVENT", + "K-3 : KOOPA STORY - BOARD CLEAR EVENT", + "K-4 : KOOPA STORY - BOARD MISS EVENT", + "K-5 : KOOPA STORY - MINIGAME CLEAR EVENT", + "K-6 : KOOPA STORY - MINIGAME MISS EVENT", + "--- : ENDING" +}; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* arg0) { + if (omSysExitReq != 0) { + arg0->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +void fn_1_A4(void) { + s32 sp14; + s32 var_r30; + s32 var_r31; + s32 sp10; + s32 spC; + s32 sp8; + s32 i; + + var_r30 = 0; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_4C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_BC8(); + } + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + break; + } + if (HuPadStkY[0] <= -30) { + fn_1_BE8(5); + var_r30++; + if (var_r30 >= 6) { + var_r30 = 0; + } + + } + if (HuPadStkY[0] >= 30) { + fn_1_BE8(5); + var_r30--; + if (var_r30 < 0) { + var_r30 = 5; + } + } + fontcolor = FONT_COLOR_WHITE; + print8(24, 100, 1.5f, ">>>>> MPGC STORY 2 - EVENT SELECT <<<<<"); + for (i = 0; i < 6; i++) { + fontcolor = FONT_COLOR_WHITE; + if (var_r30 == i) { + fontcolor = FONT_COLOR_CYAN; + } + print8(24, 130 + i * 15, 1.5f, "%s", lbl_1_data_144[i]); + } + fn_1_BC8(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_BC8(); + } + GWSystem.board = 5; + switch (var_r30) { + case 0: + fn_1_7F54(lbl_1_bss_0, 0); + break; + case 1: + fn_1_B3E4(lbl_1_bss_0, 0); + break; + case 2: + fn_1_EA2C(lbl_1_bss_0, 0); + break; + case 3: + fn_1_1256C(lbl_1_bss_0, 0); + break; + case 4: + fn_1_16060(lbl_1_bss_0, 0); + break; + case 5: + fn_1_188F0(lbl_1_bss_0, 0); + break; + } + while (TRUE) { + fn_1_BC8(); + } +} + +#include "src/REL/executor.c" + +void fn_1_3E4(void) +{ + int gid = HuSprGrpCreate(1); + int sprid = HuTHPSprCreate("movie/endmov_ma0.thp", FALSE, 10); + HuSprGrpMemberSet(gid, 0, sprid); + HuSprPosSet(gid, 0, 288, 240); + HuPrcSleep(5); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while(WipeStatGet()) { + HuPrcVSleep(); + } + while(!HuTHPEndCheck()) { + HuPrcVSleep(); + } + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(gid); + while(1) { + fn_1_BC8(); + } +} + +void fn_1_4F4(void) { + s32 i; + + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + switch (omovlevtno) { + case 0: + fn_1_7F54(lbl_1_bss_0, 0); + break; + + case 1: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWStoryCharGet()) { + break; + } + } + fn_1_B3E4(lbl_1_bss_0, i); + break; + case 2: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWStoryCharGet()) { + break; + } + } + fn_1_EA2C(lbl_1_bss_0, i); + break; + case 3: + if (GWPlayerCoinWinGet(0) >= 10) { + fn_1_1256C(lbl_1_bss_0, 0); + } else { + fn_1_16060(lbl_1_bss_0, 0); + } + break; + case 4: + fn_1_188F0(lbl_1_bss_0, 0); + break; + + case 20: + fn_1_1B90C(lbl_1_bss_0); + break; + } +} + +void ObjectSetup(void) { + fn_1_4F4(); +} + +float fn_1_864(float arg0, float arg1, float arg2, float arg3) { + if (arg3 <= arg2) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_88C(float arg0, float arg1, float arg2) { + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_8AC(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_984(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_A4C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +float fn_1_B08(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_BC4(void) { +} + +void fn_1_BC8(void) { + HuPrcVSleep(); +} + +void fn_1_BE8(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_C10(void) { + HuPrcEnd(); +} + +void fn_1_C30(void) { + HuWinInit(1); +} + +void fn_1_C54(void) { +} + +void fn_1_C58(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f27; + float temp_f30; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + temp_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (temp_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + temp_f31 = (temp_f29 + temp_f25) - 4.0f; + } else if (temp_f29 - (temp_f31 - 2.0f) >= 0.0f) { + temp_f31 = temp_f29; + } else { + temp_f31 -= 2.0f; + } + temp_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (temp_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + temp_f30 = (temp_f28 + temp_f24) - 4.0f; + } else if (temp_f28 - (temp_f30 - 2.0f) >= 0.0f) { + temp_f30 = temp_f28; + } else { + temp_f30 -= 2.0f; + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = temp_f31; + var_f21 = temp_f27; + var_f22 = temp_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_984(temp_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_984(temp_f27, 1.0f, i, 10.0f);; + } else { + var_f22 = fn_1_984(temp_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_984(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_984(temp_f28, temp_f30, i, 10.0f); + var_f20 = fn_1_984(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_984(temp_f29, temp_f31, i - 10, 5.0f); + var_f21 = fn_1_984(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_16A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg4, float arg5, s32 arg6) { + s32 temp_r31; + + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + if (arg0 == 0) { + arg0 = 550 - arg2; + } else { + arg0 = 1.0f + (576.0f - arg2) / 2.0f; + } + if (arg1 == 0) { + arg1 = 430 - arg3; + } + temp_r31 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + HuWinMesPalSet(temp_r31, 7, 0, 0, 0); + if (arg6 != -1) { + arg6 = GWPlayerCfg[arg6].pad_idx; + winData[temp_r31].active_pad = (1 << arg6); + } else { + winData[temp_r31].active_pad = 0xF; + } + + fn_1_C58(temp_r31, arg4, arg5, 1); + return temp_r31; +} + +s32 fn_1_185C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + return fn_1_16A0(arg0, arg1, arg2, arg3, 0.5f, 0.5f, arg4); +} + +void fn_1_1A34(s32 arg0, float arg1, float arg2) { + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_C58(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1A94(s32 arg0) { + fn_1_1A34(arg0, 0.5f, 0.5f); +} + +void fn_1_1AFC(s32 arg0, s32 arg1) { + s32 i; + + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +BOOL fn_1_1BA8(s32 arg0, s32 arg1) { + s32 var_r31; + s32 i; + + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + var_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + if (var_r31 != 0) { + var_r31 = FALSE; + } else { + var_r31 = TRUE; + } + return var_r31; +} + +BOOL fn_1_1C64(s32 arg0) { + return fn_1_1BA8(arg0, 0); +} + +void fn_1_1D18(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_1D4C(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1D8C(s16 arg0) { + ModelData* var_r28; + HsfMaterial* var_r31; + HsfData* temp_r30; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + } +} + +void fn_1_1DFC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; +} + +void fn_1_1F84(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[arg1])) { + return; + } + if (arg0->motion[arg2] == Hu3DMotionShiftIDGet(arg0->model[arg1])) { + return; + } + fn_1_1F84(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2264(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !Hu3DMotionEndCheck(arg0->model[arg1])); +} + +s32 fn_1_22F4(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == GWPlayerCfg[i].group) { + break; + } + } + return i; +} + +void fn_1_233C(s32 arg0, s32 arg1) { + while (TRUE) { + if (arg1 & HuPadBtnDown[arg0]) { + break; + } + HuPrcVSleep(); + } +} + +void fn_1_2390(void) { + StructBss24* var_r31; + + var_r31 = &lbl_1_bss_24; + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + var_r31->unk08.z -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08.x += HuPadStkX[0] / 10.0f; + var_r31->unk08.y += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk20.y += HuPadStkX[0] / 100.0f; + if (var_r31->unk20.x < 0.0f) { + var_r31->unk20.x += 360.0f; + } + if (var_r31->unk20.x >= 360.0f) { + var_r31->unk20.x -= 360.0f; + } + if (var_r31->unk20.y < 0.0f) { + var_r31->unk20.y += 360.0f; + } + if (var_r31->unk20.y >= 360.0f) { + var_r31->unk20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(24, 40, 1.5f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08.x, var_r31->unk08.y, var_r31->unk08.z); + print8(24, 55, 1.5f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20.x, var_r31->unk20.y, var_r31->unk20.z); + print8(24, 70, 1.5f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_2750(void (*arg0)(void)) { + lbl_1_bss_24.unk00 = arg0; +} + +void fn_1_2760(void (*arg0)(void)) { + lbl_1_bss_24.unk04 = arg0; +} + +void fn_1_2770(omObjData* arg0) { + StructBss24* var_r31; + + var_r31 = &lbl_1_bss_24; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08.x; + Center.y = var_r31->unk08.y; + Center.z = var_r31->unk08.z; + CRot.x = var_r31->unk20.x; + CRot.y = var_r31->unk20.y; + CRot.z = var_r31->unk20.z; + CZoom = var_r31->unk38; +} + +void fn_1_2828(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 0.1f, 10000.0f, 1.2f); + lbl_1_bss_24.unk00 = arg1; + lbl_1_bss_24.unk04 = fn_1_2390; + omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0, 0, -1, fn_1_2770); +} + +void fn_1_2948(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + float sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + float var_f31; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp4C.y = sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp18 = arg4; + sp28.x = Hu3DData[arg0->model[arg1]].rot.x; + sp28.y = Hu3DData[arg0->model[arg1]].rot.y; + sp28.z = Hu3DData[arg0->model[arg1]].rot.z; + sp1C = 0.0f; + sp20 = arg3; + sp24 = 0.0f; + sp14 = arg5; + var_f31 = -1.1025f; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[3], 0.0f, 5.0f, 0U); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + HuPrcSleep(10); + while (TRUE) { + if (var_f31 >= 1.7f) { + var_f31 = 1.7f; + } + sp4C.y += var_f31 * var_f31 * (var_f31 >= 0.0f ? -17.5f : 17.5f); + if (sp4C.y <= 0.0f && var_f31 > 0.0f) { + sp4C.y = 0.0f; + } + sp4C.x = sp40.x += 6.0 * sind(sp28.y); + sp4C.z = sp40.z += 6.0 * cosd(sp28.y); + Hu3DModelPosSet(arg0->model[1], sp4C.x, sp4C.y, sp4C.z); + Hu3DModelRotSet(arg0->model[1], sp28.x, sp28.y, sp28.z); + HuPrcVSleep(); + if (sp4C.y <= arg2.y && var_f31 > 0.0f) { + break; + } + var_f31 += 0.11f; + } +} + +void fn_1_2D00(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 i; + + var_r26 = 0; + var_r25 = 0; + sp48.x = Hu3DData[arg0->model[arg1]].pos.x; + sp48.y = Hu3DData[arg0->model[arg1]].pos.y; + sp48.z = Hu3DData[arg0->model[arg1]].pos.z; + sp3C.x = arg2.x; + sp3C.y = arg2.y; + sp3C.z = arg2.z; + sp14 = arg4; + sp24.x = Hu3DData[arg0->model[arg1]].rot.x; + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + sp24.z = Hu3DData[arg0->model[arg1]].rot.z; + sp18.x = 0.0f; + sp18.y = arg3; + sp18.z = 0.0f; + if (sp3C.x - sp48.x >= 0.0f) { + var_r24 = 1; + } else { + var_r24 = 0; + } + if (sp3C.z - sp48.z >= 0.0f) { + var_r23 = 1; + } else { + var_r23 = 0; + } + temp_r27 = arg5; + do { + sp30.y = -(atan2d(sp3C.z - sp48.z, sp3C.x - sp48.x) - 90.0); + if (sp30.y < 0.0f) { + sp30.y += 360.0f; + } else if (sp30.y >= 360.0f) { + sp30.y -= 360.0f; + } + if (sp30.y >= 180.0f) { + if (sp24.y - sp30.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp30.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp54.x = sp48.x += 6.0 * sind(sp30.y); + sp54.z = sp48.z += 6.0 * cosd(sp30.y); + if (var_r24 != 0) { + if (sp48.x >= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } else { + if (sp48.x <= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } + if (var_r23 != 0) { + if (sp48.z >= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } else { + if (sp48.z <= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } + sp24.y = fn_1_88C(sp24.y, sp30.y, 10.0f); + Hu3DModelPosSet(arg0->model[1], sp54.x, sp48.y, sp54.z); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } while (var_r25 != 1 || var_r26 != 1); + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + for (i = 0; i <= temp_r27; i++) { + if (sp18.y >= 180.0f) { + if (sp24.y - sp18.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp18.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp24.y = fn_1_864(sp24.y, sp18.y, i, temp_r27); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } +} + +void fn_1_34F4(s16 arg0) { + ModelData* var_r28; + HsfData* temp_r30; + HsfMaterial* var_r31; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + var_r31->litColor[0] = 0xFF; + var_r31->litColor[1] = 0xFF; + var_r31->litColor[2] = 0xFF; + } +} + +void fn_1_357C(StructFn357C* arg0, s32 arg1) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; +} + +s32 fn_1_3610(void) { + s32 i; + + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + break; + } + } + if (i == 4) { + return -1; + } + return i; +} + +s32 fn_1_3668(s32 arg0) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, arg0, arg0, arg0); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); + return temp_r3; +} + +void fn_1_3754(void) { + Vec sp20 = { 0.0f, 3000.0f, 800.0f }; + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_3818(StructBss24* arg0) { + arg0->unk08.x = arg0->unk14; + arg0->unk08.y = arg0->unk18; + arg0->unk08.z = arg0->unk1C; + arg0->unk20.x = arg0->unk2C; + arg0->unk20.y = arg0->unk30; + arg0->unk20.z = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_3854(StructBss24* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08.x; + arg0->unk18 = arg0->unk08.y; + arg0->unk1C = arg0->unk08.z; + arg0->unk2C = arg0->unk20.x; + arg0->unk30 = arg0->unk20.y; + arg0->unk34 = arg0->unk20.z; + arg0->unk3C = arg0->unk38; +} + +void fn_1_3898(StructBss24* arg0, StructBss24* arg1, float arg3) { + arg0->unk08.x = fn_1_88C(arg0->unk08.x, arg1->unk14, arg3); + arg0->unk08.y = fn_1_88C(arg0->unk08.y, arg1->unk18, arg3); + arg0->unk08.z = fn_1_88C(arg0->unk08.z, arg1->unk1C, arg3); + arg0->unk20.x = fn_1_88C(arg0->unk20.x, arg1->unk2C, arg3); + arg0->unk20.y = fn_1_88C(arg0->unk20.y, arg1->unk30, arg3); + arg0->unk20.z = fn_1_88C(arg0->unk20.z, arg1->unk34, arg3); + arg0->unk38 = fn_1_88C(arg0->unk38, arg1->unk3C, arg3); +} + +void fn_1_3B04(StructBss24* arg0, float arg1) { + fn_1_3898(arg0, arg0, arg1); +} + +void fn_1_3D70(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_864(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_864(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_864(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_864(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_864(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_864(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_864(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_3FEC(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + fn_1_3D70(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_42A0(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4) { + fn_1_3D70(arg0, arg1, arg2, arg3); + fn_1_3898(arg0, arg1, arg4); +} + +void fn_1_470C(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_984(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_984(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_984(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_984(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_984(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_984(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_984(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_4B60(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + fn_1_470C(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_4FEC(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4) { + fn_1_470C(arg0, arg1, arg2, arg3); + fn_1_3898(arg0, arg1, arg4); +} + +void fn_1_5644(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_8AC(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_8AC(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_8AC(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_8AC(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_8AC(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_8AC(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_8AC(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_5B08(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + fn_1_5644(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_6004(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4) { + fn_1_5644(arg0, arg1, arg2, arg3); + fn_1_3898(arg0, arg1, arg4); +} + +int fn_1_66CC(int modelId) +{ + return Hu3DMotionMaxTimeGet(modelId); +} + +void fn_1_6704(omObjData* arg0) { + s32 var_r30; + if(arg0->work[0] == 0) { + return; + } + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + var_r30 = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[var_r30], 0.0f, 15.0f, 0x40000001U); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_67D8(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DFC(arg0, 1, arg1, arg3, arg4); + if (arg4 == 0) { + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; + } +} + +void fn_1_6970(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_69A4(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_69E4(s32 arg0, s32 arg1) { + fn_1_1AFC(arg0, arg1); +} + +void fn_1_6A90(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 var_r27 = 0; + s32 var_r29 = 0; + s32 var_r23 = 0; + s32 var_r26; + s32 i; + if(arg2 == -1) { + var_r23 = 1; + arg2 = 0; + } + HuWinMesSet(arg0, arg1); + var_r27 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= var_r27 - 1) { + arg2 = var_r27 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < var_r27; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + if(arg3 != -1) { + if(arg4 != -1) { + i=0; + do { + HuPrcVSleep(); + if(i++ == 25) { + HuAudFXPlay(lbl_1_data_0[6][0]); + } + } while(!Hu3DMotionEndCheck(arg3)); + Hu3DMotionShiftSet(arg3, arg4, 0, 1, 0); + HuPrcSleep(15); + } + var_r26 = fn_1_66CC(arg3)-15; + if(var_r23 == 1) { + for(i=0; i 0) { + HuPrcSleep(var_r26); + } + } + } else { + HuPrcSleep(60); + } + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1AFC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +void fn_1_6D78(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + fn_1_6A90(arg0, arg1, arg2, arg3, -1); +} + +void fn_1_6DBC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_r28 = 0; + s32 var_r29 = 0; + s32 i; + + HuWinMesSet(arg0, arg1); + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1AFC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +BOOL fn_1_6FB0(s32 arg0) { + return fn_1_1BA8(arg0, 0); +} + +s32 fn_1_7064(s32 arg0, s32 arg1) { + float spC[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 var_r31; + + HuWinMesMaxSizeGet(1, spC, arg0); + var_f31 = spC[0]; + var_f30 = spC[1]; + var_f29 = 550.0f - var_f31; + var_f28 = 430.0f - var_f30; + var_r31 = HuWinExCreateStyled(var_f29, var_f28, var_f31, var_f30, -1, 1); + if (arg1 != -1) { + arg1 = GWPlayerCfg[arg1].pad_idx; + winData[var_r31].active_pad = (1 << arg1); + } else { + winData[var_r31].active_pad = 0xF; + } + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + fn_1_C58(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +void fn_1_71DC(s32 arg0) { + fn_1_1A34(arg0, 0.5f, 0.5f); +} + +char *lbl_1_data_308[8] = { + "c000m1-ske_head", + "c001m1-ske_head", + "c002m1-ske_head", + "c003m1-ske_head", + "c004m1-ske_head", + "c005m1-ske_head", + "c006m1-ske_head", + "c007m1-ske_head" +}; + +s32 lbl_1_data_328[8][2] = { + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, +}; + +float lbl_1_data_368[8] = { + 194, + 191, + 87.2, + 50.1, + 72, + 83.5, + 87.2, + 64.5 +}; + +void fn_1_7244(s16 modelId, char *objName, u32 constFlags, float ofs) +{ + HsfObject *obj = Hu3DModelObjPtrGet(modelId, objName); + HsfConstData *constData; + if(!obj->constData) { + constData = ObjConstantMake(obj, Hu3DData[modelId].unk_48); + } else { + constData = obj->constData; + } + constData->flags |= constFlags; + if(constFlags & 0x10) { + obj->data.curr.pos.x += ofs; + } + if(constFlags & 0x20) { + obj->data.curr.pos.y += ofs; + } + if(constFlags & 0x40) { + obj->data.curr.pos.z += ofs; + } + if(constFlags & 0x80) { + obj->data.curr.rot.x += ofs; + } + if(constFlags & 0x100) { + obj->data.curr.rot.y += ofs; + } + if(constFlags & 0x200) { + obj->data.curr.rot.z += ofs; + } +} + +void fn_1_7384(int modelId, int charNo, float ofs, s32 maxTime, BOOL flag) +{ + float var_f31 = 0; + float var_f30 = ofs; + s32 i; + if(charNo == 7) { + var_f30 *= 2.5f; + } + if(lbl_1_data_328[charNo][1] == 0) { + var_f30 *= -1; + } + if(flag) { + for(i=0; i= lbl_1_data_C10[0][i]) { + OSReport("KE-System TIME:%d\n", lbl_1_data_C10[0][i]); + HuAudFXPlay(81); + lbl_1_data_C10[1][i] = -1; + } + } + } + if (Hu3DMotionTimeGet(lbl_1_data_C20) <= 10) { + for (i = 0; i < 2; i++) { + lbl_1_data_C10[1][i] = 1; + } + } + } +} + +void fn_1_1256C(Process *arg0, s32 arg1) +{ + lbl_1_bss_790 = arg0; + lbl_1_bss_860.unk0C = arg1; + fn_1_C30(); + lbl_1_bss_860.unk100 = fn_1_3668(255); + fn_1_2828(lbl_1_bss_790, fn_1_15CDC); + fn_1_3754(); + fn_1_15668(arg1); + HuPrcChildCreate(fn_1_1449C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_14C40, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_153A8, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_159F0, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_13BB8, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_12690(omObjData *object) +{ + if (object->work[2]) { + object->work[2]--; + return; + } + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_1271C(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while (1) { + fn_1_BC8(); + printWin(posX, posY, 220, 130, &winColor); + if (lbl_1_bss_838.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } + else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_810.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); + } + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_7E8.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); + } + if (lbl_1_bss_7C0.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + if (lbl_1_bss_798.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_PLAYER -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_PLAYER -> TRUE"); + } + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_860.unk00, lbl_1_bss_860.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_860.unk30[i].unk00, lbl_1_bss_860.unk30[i].unk04, + lbl_1_bss_860.unk30[i].unk08, lbl_1_bss_860.unk30[i].unk0C, lbl_1_bss_860.unk30[i].unk14, lbl_1_bss_860.unk30[i].unk10); + } + } +} + +void fn_1_12AC8(void) +{ + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(30); +} + +void fn_1_12B10(void) +{ + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_14A9C(4, 1, 15, 0, 1); + fn_1_1D4C(lbl_1_bss_860.unk04, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 0); + fn_1_6D78(lbl_1_bss_860.unk04, 0x1F0014, 0, lbl_1_bss_7E8.unk00->model[1]); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, 5, 10, 1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0015); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_15134(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_860.unk04); + lbl_1_bss_7E8.unk04 = (void *)fn_1_14B48; + fn_1_BE8(60); + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 4, 15, 0); + fn_1_BE8(16); + while (1) { + fn_1_BC8(); + if (Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 20) { + break; + } + } + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_7E8.unk04 == NULL) { + break; + } + } + fn_1_BE8(30); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_15D68); + lbl_1_bss_7C0.unk04 = (void *)fn_1_152C4; + fn_1_BE8(80); + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 1); + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 1, 15, 1); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_7C0.unk04 == NULL) { + break; + } + } +} + +void fn_1_12DD4(void) +{ + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + lbl_1_bss_78[0] = HuAudSeqPlay(56); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 4, 15, 0); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0016); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 3, 15, 1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0017); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0018); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 1, 15, 1); + fn_1_1A94(lbl_1_bss_860.unk04); + fn_1_BE8(60); + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 3, 15, 1); + fn_1_1D4C(lbl_1_bss_860.unk04, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0019); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + HuAudFXPlay(lbl_1_data_0[5][1]); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F001A); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + lbl_1_bss_7C0.unk04 = (void *)fn_1_151E0; + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F001B); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_860.unk04); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_7C0.unk04 == NULL) { + break; + } + } +} + +void fn_1_13150(omObjData *arg0, StructBss16C *arg1) +{ + int streamNo = HuAudSStreamPlay(7); + while (1) { + fn_1_BC8(); + if (HuAudSStreamStatGet(streamNo) == 0) { + break; + } + } + HuAudSeqPause(lbl_1_bss_78[0], 0, 1000); + arg1->unk04 = NULL; +} + +void fn_1_131C0(omObjData *arg0, StructBss16C *arg1) +{ + int presentSe = (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6) + 5; + fn_1_BE8(150); + OSReport("########## PRESENT_SE : %d\n", presentSe); + HuAudFXPlay(presentSe + 2260); + fn_1_1DFC(lbl_1_bss_810.unk00, 7, 7, 1, 0); + arg1->unk04 = NULL; +} + +void fn_1_13264(void) +{ + int i; + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 2, 15, 1); + for (i = 0; i < 30; i++) { + fn_1_BC8(); + if (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 != 5) { + Hu3DData[lbl_1_bss_798.unk00->model[1]].pos.x = fn_1_864(120, 80, i, 30); + } + Hu3DData[lbl_1_bss_798.unk00->model[1]].rot.y = fn_1_864(-60, -90, i, 30); + } + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 5, 5, 0); + fn_1_BE8(10); + while (1) { + fn_1_BC8(); + if (Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 30) { + break; + } + } + Hu3DModelPosSet(lbl_1_bss_810.unk00->model[5], 0, 0, 0); + Hu3DModelHookSet( + lbl_1_bss_798.unk00->model[1], CharModelHookNameGet(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 1, 1), lbl_1_bss_810.unk00->model[5]); + fn_1_BE8(60); + lbl_1_bss_810.unk04 = (void *)fn_1_13FB4; + HuAudFXPlay(163); + HuAudCharVoicePlay(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 296); + fn_1_1DFC(lbl_1_bss_810.unk00, 6, 6, 0, 0); + Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[6], 1); + Hu3DModelAttrSet(lbl_1_bss_810.unk00->model[5], 1); + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 6, 5, 0); + HuAudSeqPause(lbl_1_bss_78[0], 1, 1000); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + while (1) { + fn_1_BC8(); + if (!WipeStatGet()) { + break; + } + } + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0); + Hu3DMotionTimeSet(lbl_1_bss_798.unk00->model[1], 50); + Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[7], 1); + Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[8], 1); + fn_1_1DFC(lbl_1_bss_810.unk00, 8, 8, 0, 1); + fn_1_BE8(30); + HuAudFXPlay(169); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + while (1) { + fn_1_BC8(); + if (!WipeStatGet()) { + break; + } + } + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_15F70); + fn_1_BE8(60); + lbl_1_bss_798.unk04 = (void *)fn_1_131C0; + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + lbl_1_bss_7C0.unk04 = (void *)fn_1_13150; + fn_1_1D4C(lbl_1_bss_860.unk04, (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6) + 0x32000B, 0); + fn_1_6DBC(lbl_1_bss_860.unk04, 0x320086, 0, 300); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_860.unk04); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_15E58); + lbl_1_bss_810.unk04 = (void *)fn_1_140A0; + fn_1_BE8(30); + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0.1f); + fn_1_BE8(180); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); +} + +void fn_1_13828(void) +{ + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_BE8(60); + SLCommonSet(); + SLSaveBoardStory(); + if (SLSaveFlagGet() == 1) { + SLSave(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_794 = TRUE; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_138CC(void) +{ + omOvlHisData *var_r31; + + msmSeStopAll(FALSE, 1000); + do { + fn_1_BC8(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + HuAudFXAllStop(); + HuAudSStreamAllStop(); + GWMGAvailSet(omMgIndexGet(58) + 401); + GWGameStat.present[lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5] = 1; + OSReport("########## PRESENTFLG CHR:%d, MAP:5, PRESENT:%d\n", lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, + lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5); + var_r31 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 20, var_r31->stat); + omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5 + 1, 0); +} + +void fn_1_13A18(omObjData *arg0, StructBss16C *arg1) +{ + int temp = 0; + fn_1_12AC8(); + fn_1_12B10(); + fn_1_12DD4(); + fn_1_13264(); + fn_1_138CC(); + arg1->unk04 = 0; +} + +void fn_1_13BB8(void) +{ + omObjData *obj; + lbl_1_bss_838.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_838.unk04 = (void *)fn_1_13A18; + lbl_1_bss_838.unk00->data = &lbl_1_bss_838; + while (1) { + fn_1_BC8(); + if (lbl_1_bss_838.unk04 != NULL) { + lbl_1_bss_838.unk04(obj, &lbl_1_bss_838); + } + } +} + +void fn_1_13C6C(omObjData *object) +{ + s32 charNo; + charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10; + object->model[7] = Hu3DModelCreateFile(lbl_1_data_850[charNo * 6 + 5].unk0); + object->motion[7] = Hu3DMotionIDGet(object->model[7]); + Hu3DModelPosSet(object->model[7], 0, 180, 825); + Hu3DModelAttrSet(object->model[7], 1); + Hu3DModelShadowSet(object->model[7]); + fn_1_1DFC(object, 7, 7, 0, 2); + HuDataDirClose(DATADIR_MSTORY4); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); + fn_1_1DFC(object, 2, 3, 0, 2); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5B)); + Hu3DModelPosSet(object->model[5], 0, 125, 800); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelShadowSet(object->model[5]); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5D)); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelPosSet(object->model[6], 25, 125, 900); + Hu3DModelAttrSet(object->model[6], 1); + fn_1_1DFC(object, 6, 6, 0, 2); + object->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5F)); + object->motion[8] = Hu3DMotionIDGet(object->model[8]); + Hu3DModelAttrSet(object->model[8], 1); + fn_1_1DFC(object, 8, 8, 0, 1); +} + +void fn_1_13FB4(omObjData *arg0, StructBss16C *arg1) +{ + Mtx matrix; + Hu3DData[arg0->model[7]].pos.y = fn_1_B08(180, 185, arg1->unk08++, 360); + Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix); + Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_140A0(omObjData *arg0, StructBss16C *arg1) +{ + Mtx matrix; + Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f; + Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix); + Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]); + arg1->unk0C += 2; +} + +void fn_1_1416C(omObjData *arg0, StructBss16C *arg1) +{ + int i; + Vec pos; + float rotY; + Hu3DModelPosSet(arg0->model[5], -180, 100, 800); + Hu3DModelRotSet(arg0->model[5], 0, 0, 0); + Hu3DModelAttrReset(arg0->model[5], 1); + for (i = 0; i < 60; i++) { + fn_1_BC8(); + if (i == 30) { + HuAudFXPlay(151); + } + if (i <= 30) { + pos.y = fn_1_A4C(0, 100, i + 30, 60); + pos.x = fn_1_864(-180, -45, i, 30); + rotY = fn_1_984(0, -90, i, 30); + } + else { + pos.x = fn_1_864(-45, 0, i - 30, 30); + pos.y = fn_1_A4C(0, 25, i - 30, 30); + rotY = fn_1_984(-90, -360, i - 30, 30); + } + Hu3DModelPosSet(arg0->model[5], pos.x, pos.y, 800); + Hu3DModelRotSet(arg0->model[5], 0, rotY, 0); + } + arg1->unk04 = NULL; +} + +void fn_1_1449C(void) +{ + omObjData *obj; + lbl_1_bss_810.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_810.unk04 = NULL; + lbl_1_bss_810.unk00->data = &lbl_1_bss_810; + fn_1_13C6C(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_810.unk04 != NULL) { + lbl_1_bss_810.unk04(obj, &lbl_1_bss_810); + } + } +} + +void fn_1_14868(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x64 : 0x68)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6E : 0x6F)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6F : 0x70)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + Hu3DModelPosSet(object->model[1], -180, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 3, 0, 1); + lbl_1_data_C20 = object->model[1]; + lbl_1_data_C24[0] = object->motion[2]; + lbl_1_data_C24[1] = object->motion[2]; + HuPrcChildCreate(fn_1_123C8, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_7E8.unk00->work[0] = arg4; + lbl_1_bss_7E8.unk00->work[1] = arg1; + lbl_1_bss_7E8.unk00->work[2] = arg2 + 1; +} + +void fn_1_14B48(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -1000, 0, 810 }; + lbl_1_bss_810.unk04 = (void *)fn_1_1416C; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -1, 45, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_14C40(void) +{ + omObjData *obj; + lbl_1_bss_7E8.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_7E8.unk04 = NULL; + lbl_1_bss_7E8.unk00->data = &lbl_1_bss_810; + fn_1_14868(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_7E8.unk04 != NULL) { + lbl_1_bss_7E8.unk04(obj, &lbl_1_bss_7E8); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_14F6C(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x86 : 0x81)); + Hu3DModelPosSet(object->model[1], -600, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13); +} + +void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_7C0.unk00->work[0] = arg4; + lbl_1_bss_7C0.unk00->work[1] = arg1; + lbl_1_bss_7C0.unk00->work[2] = arg2 + 1; +} + +void fn_1_151E0(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -800, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_152C4(omObjData *arg0, StructBss16C *arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_153A8(void) +{ + omObjData *obj; + lbl_1_bss_7C0.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_7C0.unk04 = NULL; + lbl_1_bss_7C0.unk00->data = &lbl_1_bss_7C0; + fn_1_14F6C(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_7C0.unk04 != NULL) { + lbl_1_bss_7C0.unk04(obj, &lbl_1_bss_7C0); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_15668(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { + order[i] = 0; + } + if (arg0 == order[i]) { + lbl_1_bss_860.unk00 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_357C(&lbl_1_bss_860.unk30[i], order[i]); + } +} + +void fn_1_1574C(omObjData *object) +{ + int charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x28) + charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x30) + charNo); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x38) + charNo); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x00) + charNo); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 3, 0, 1); +} + +void fn_1_15944(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_798.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_798.unk00->work[0] = arg4; + lbl_1_bss_798.unk00->work[1] = arg1; + lbl_1_bss_798.unk00->work[2] = arg2 + 1; +} + +void fn_1_159F0(void) +{ + omObjData *obj; + lbl_1_bss_798.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_798.unk04 = NULL; + lbl_1_bss_798.unk00->data = &lbl_1_bss_798; + fn_1_1574C(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_798.unk04 != NULL) { + lbl_1_bss_798.unk04(obj, &lbl_1_bss_798); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_15CDC(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_15D68(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1400; + fn_1_4FEC(work, &temp, work->unk40++, 120, 10); +} + +void fn_1_15E58(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk14 = 0; + work->unk18 = Hu3DData[lbl_1_bss_810.unk00->model[7]].pos.y; + work->unk1C = 0; + work->unk2C = 0; + work->unk30 = 0; + work->unk34 = 0; + work->unk3C = fn_1_864(1200, 1400, work->unk40++, 240); + fn_1_3B04(work, 30); +} + +void fn_1_15F70(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 160; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1200; + fn_1_6004(work, &temp, work->unk40++, 10, 5); +} diff --git a/src/REL/mstory2Dll/mg_miss.c b/src/REL/mstory2Dll/mg_miss.c new file mode 100644 index 00000000..e7bf2b00 --- /dev/null +++ b/src/REL/mstory2Dll/mg_miss.c @@ -0,0 +1,510 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ s32 unk100; +} StructBssA34; // Size 0x104 + +StructBssA34 lbl_1_bss_A34; +StructBss16C lbl_1_bss_A0C; +StructBss16C lbl_1_bss_9E4; +StructBss16C lbl_1_bss_9BC; +StructBss16C lbl_1_bss_994; +StructBss16C lbl_1_bss_96C; +Process *lbl_1_bss_968; + +void fn_1_16FC0(void); +void fn_1_17338(void); +void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_177F8(void); +void fn_1_17C44(void); +void fn_1_17E64(s32 arg0); +void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_18184(void); +void fn_1_18408(void); +void fn_1_18494(void); + +void fn_1_16060(Process *arg0, s32 arg1) +{ + lbl_1_bss_968 = arg0; + lbl_1_bss_A34.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_968, fn_1_18408); + fn_1_3754(); + fn_1_17E64(arg1); + HuPrcChildCreate(fn_1_17338, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_177F8, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_17C44, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_18184, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_16FC0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_16178(omObjData *object) +{ + if (object->work[2]) { + object->work[2]--; + return; + } + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_16204(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while (1) { + fn_1_BC8(); + printWin(posX, posY, 220, 130, &winColor); + if (lbl_1_bss_A0C.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } + else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_9E4.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); + } + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_9BC.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); + } + if (lbl_1_bss_994.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + if (lbl_1_bss_96C.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_PLAYER -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_PLAYER -> TRUE"); + } + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_A34.unk00, lbl_1_bss_A34.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_A34.unk30[i].unk00, lbl_1_bss_A34.unk30[i].unk04, + lbl_1_bss_A34.unk30[i].unk08, lbl_1_bss_A34.unk30[i].unk0C, lbl_1_bss_A34.unk30[i].unk14, lbl_1_bss_A34.unk30[i].unk10); + } + } +} + +void fn_1_165B0(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(52); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_1661C(void) +{ + lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C); + fn_1_1774C(2, 1, 15, 0, 1); + fn_1_180D8(2, 3, 15, 0, 1); + HuAudCharVoicePlay(lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10, 302); + fn_1_6D78(lbl_1_bss_A34.unk04, 0x1F0010, -1, lbl_1_bss_9BC.unk00->model[1]); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x250004); + fn_1_1774C(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_A34.unk04); +} + +int fn_1_1670C(void) +{ + int result = 0; + HuWinInsertMesSet(lbl_1_bss_A34.unk04, 0x1E003C, 3); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x1E002D); + fn_1_1AFC(lbl_1_bss_A34.unk04, 5); + lbl_1_bss_A34.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_A34.unk0C); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x1E0035); + result = fn_1_1C64(lbl_1_bss_A34.unk08); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_A34.unk08); + if (result) { + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1774C(3, 1, 15, 1, 0); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x1F0012); + fn_1_1AFC(lbl_1_bss_A34.unk04, -1); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x250004); + fn_1_1774C(1, -1, 15, 1, 0); + fn_1_180D8(4, 1, 15, 0, 1); + } + return result; +} + +int fn_1_168B0(void) +{ + int result = 0; + fn_1_1D18(lbl_1_bss_A34.unk04, 0x1E0005); + fn_1_1AFC(lbl_1_bss_A34.unk04, 5); + lbl_1_bss_A34.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_A34.unk0C); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x1E0035); + result = fn_1_1BA8(lbl_1_bss_A34.unk08, 1); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_A34.unk08); + return result; +} + +void fn_1_16984(void) +{ + HuAudSeqFadeOut(lbl_1_bss_78[0], 3000); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_18494); + fn_1_BE8(150); +} + +void fn_1_169D4(void) { } + +void fn_1_169D8(int arg0) +{ + omOvlHisData *his; + + if (arg0 != 0) { + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 3, his->stat); + if (arg0 == 0) { + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + GWMGAvailSet(450); + GWSystem.mg_next = 450 - 401; + omOvlCallEx(OVL_M450, 1, 0, 0); + } + else { + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_16ACC(omObjData *arg0, StructBss16C *arg1) +{ + int mode = 0; + fn_1_165B0(); + fn_1_1661C(); + lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C); + while (1) { + fn_1_BC8(); + if (fn_1_1670C()) { + mode = 0; + break; + } + else if (fn_1_168B0()) { + mode = 1; + break; + } + } + fn_1_1A94(lbl_1_bss_A34.unk04); + switch (mode) { + case 0: + fn_1_16984(); + break; + case 1: + break; + } + fn_1_169D8(mode); + arg1->unk04 = NULL; +} + +void fn_1_16FC0(void) +{ + omObjData *obj; + lbl_1_bss_A0C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_A0C.unk04 = (void *)fn_1_16ACC; + lbl_1_bss_A0C.unk00->data = &lbl_1_bss_A0C; + while (1) { + fn_1_BC8(); + if (lbl_1_bss_A0C.unk04 != NULL) { + lbl_1_bss_A0C.unk04(obj, &lbl_1_bss_A0C); + } + } +} + +void fn_1_17074(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); + fn_1_1DFC(object, 2, 2, 0, 2); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x59)); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0, 80, 460); + Hu3DModelShadowSet(object->model[5]); + fn_1_1DFC(object, 5, 5, 0, 2); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5A)); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]); + fn_1_1DFC(object, 6, 6, 0, 2); +} + +void fn_1_1727C(omObjData *arg0, StructBss16C *arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_17338(void) +{ + omObjData *obj; + lbl_1_bss_9E4.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_9E4.unk04 = (void *)fn_1_1727C; + lbl_1_bss_9E4.unk00->data = &lbl_1_bss_9E4; + fn_1_17074(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_9E4.unk04 != NULL) { + lbl_1_bss_9E4.unk04(obj, &lbl_1_bss_9E4); + } + } +} + +void fn_1_175CC(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + Hu3DModelPosSet(object->model[1], 0, 0, 200); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_9BC.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_9BC.unk00->work[0] = arg4; + lbl_1_bss_9BC.unk00->work[1] = arg1; + lbl_1_bss_9BC.unk00->work[2] = arg2 + 1; +} + +void fn_1_177F8(void) +{ + omObjData *obj; + lbl_1_bss_9BC.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_9BC.unk04 = NULL; + lbl_1_bss_9BC.unk00->data = &lbl_1_bss_9E4; + fn_1_175CC(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_9BC.unk04 != NULL) { + lbl_1_bss_9BC.unk04(obj, &lbl_1_bss_9BC); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_17A70(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + Hu3DModelPosSet(object->model[1], -120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_17B98(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_994.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_994.unk00->work[0] = arg4; + lbl_1_bss_994.unk00->work[1] = arg1; + lbl_1_bss_994.unk00->work[2] = arg2 + 1; +} + +void fn_1_17C44(void) +{ + omObjData *obj; + lbl_1_bss_994.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_994.unk04 = NULL; + lbl_1_bss_994.unk00->data = &lbl_1_bss_994; + fn_1_17A70(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_994.unk04 != NULL) { + lbl_1_bss_994.unk04(obj, &lbl_1_bss_994); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_17E64(s32 arg0) +{ + int i; + int order[4]; + order[0] = 0; + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { + order[i] = 0; + } + if (arg0 == order[i]) { + lbl_1_bss_A34.unk00 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_357C(&lbl_1_bss_A34.unk30[i], order[i]); + } +} + +void fn_1_17F48(omObjData *object) +{ + int charNo = lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x34)); + object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48)); + CharModelVoiceEnableSet(charNo, object->motion[2], FALSE); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_96C.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_96C.unk00->work[0] = arg4; + lbl_1_bss_96C.unk00->work[1] = arg1; + lbl_1_bss_96C.unk00->work[2] = arg2 + 1; +} + +void fn_1_18184(void) +{ + omObjData *obj; + lbl_1_bss_96C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_96C.unk04 = NULL; + lbl_1_bss_96C.unk00->data = &lbl_1_bss_96C; + fn_1_17F48(obj); + while (1) { + fn_1_BC8(); + if (lbl_1_bss_96C.unk04 != NULL) { + lbl_1_bss_96C.unk04(obj, &lbl_1_bss_96C); + } + if (obj->work[0]) { + if (obj->work[2]) { + obj->work[2]--; + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_18408(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_18494(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + if (work->unk40 == 50) { + fn_1_1DFC(lbl_1_bss_9E4.unk00, 5, 5, 0, 0); + fn_1_1DFC(lbl_1_bss_9E4.unk00, 6, 6, 0, 0); + HuAudFXPlay(161); + } + temp.unk08.x = 0; + temp.unk08.y = 130; + temp.unk08.z = 460; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 150; + fn_1_4FEC(work, &temp, work->unk40, 180, 10); + if (work->unk40++ >= 90) { + if (work->unk40 == 91) { + lbl_1_bss_88[0] = HuAudFXPlay(32); + } + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90); + Hu3DData[lbl_1_bss_9E4.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90); + } +} diff --git a/src/REL/mstory2Dll/save.c b/src/REL/mstory2Dll/save.c new file mode 100644 index 00000000..cc52073c --- /dev/null +++ b/src/REL/mstory2Dll/save.c @@ -0,0 +1,122 @@ +#include "REL/mstoryDll.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +s32 lbl_1_bss_D14; +Process *lbl_1_bss_D10; + +s32 fn_1_1B560(s32 arg0) +{ + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_1B64C(void) +{ + float sp8[2]; + s32 temp_r30; + s32 var_r29; + s32 var_r31; + + temp_r30 = 1; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_D14 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(var_r29, 288.0f, 240.0f); + espAttrReset(var_r29, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { +#if VERSION_REV1 + GWGameStat.story_continue = 1; +#endif + if (omovlstat) { + GWGameStat.story_continue = 0; + } + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_D14 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1B870(void) +{ + _SetFlag(9); + HuPrcChildCreate(fn_1_1B64C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_BC8(); + } while (lbl_1_bss_D14 != 1); + if (omovlstat == 0) { + omOvlGotoEx(OVL_MSTORY2, 1, 4, 0); + } + else { + omOvlReturnEx(omovlhisidx, 1); + } + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1B90C(Process *arg0) +{ + lbl_1_bss_D10 = arg0; + HuPrcChildCreate(fn_1_1B870, 100, 0x2000, 0, HuPrcCurrentGet()); +} diff --git a/src/REL/mstory3Dll/main.c b/src/REL/mstory3Dll/main.c new file mode 100755 index 00000000..c1e4f1bf --- /dev/null +++ b/src/REL/mstory3Dll/main.c @@ -0,0 +1,1044 @@ +#include "REL/mstory3Dll.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +u8 lbl_1_bss_48[0x10]; // unused +StructBss4 lbl_1_bss_4; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][4] = { + { 0x37, 0x38, 0x36, 0x39 }, + { 0x43, 0x45, 0x44, 0x43 }, + { 0x40, 0x42, 0x41, 0x40 }, + { 0x4B, 0x4D, 0x4C, 0x4B }, + { 0x46, 0x48, 0x47, 0x46 }, + { 0x3E, 0x3F, 0x3E, 0x3E }, + { 0x3A, 0x3B, 0x3C, -1 } +}; + +char* lbl_1_data_A4[] = { + "S-1 : ALL STORY - BOARD RESULT EVENT", + "--- : RESULT" +}; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* arg0) { + if (omSysExitReq != 0) { + arg0->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +void fn_1_A4(void) { + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8; + s32 var_r29; + s32 var_r30; + s32 var_r31; + + sp14 = 0; + var_r30 = 0; + var_r31 = 0; + sp10 = 1; + spC = 1; + sp8 = 1; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_4C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + break; + } + if (HuPadBtnDown[0] & PAD_BUTTON_DOWN) { + var_r30++; + if (var_r30 >= 2) { + var_r30 = 0; + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_UP) { + var_r30--; + if (var_r30 < 0) { + var_r30 = 1; + } + } + if (HuPadStkX[0] <= -30) { + var_r31++; + if (var_r31 > 6) { + var_r31 = 0; + } + } + if (HuPadStkX[0] >= 30) { + var_r31--; + if (var_r31 < 0) { + var_r31 = 5; + } + } + fontcolor = FONT_COLOR_WHITE; + print8(24, 100, 1.5f, ">>>>> MPGC STORY 3 - EVENT SELECT <<<<<"); + print8(24, 130, 1.5f, "MAP NUMBER : %d", var_r31 + 1); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + fontcolor = FONT_COLOR_WHITE; + if (var_r30 == var_r29) { + fontcolor = FONT_COLOR_CYAN; + } + print8(24, 160 + var_r29 * 15, 1.5f, "%s", lbl_1_data_A4[var_r29]); + } + fn_1_938(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + GWSystem.board = var_r31; + switch (var_r30) { + case 0: + fn_1_6E34(lbl_1_bss_0, var_r31, 1, 0, 0); + break; + case 1: + fn_1_157F0(lbl_1_bss_0, var_r31, 0, 0); + break; + } + while (TRUE) { + fn_1_938(); + } +} + +#include "src/REL/executor.c" + +void fn_1_40C(void) { + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + omGameSysInit(lbl_1_bss_0); + switch (omovlevtno) { + case 0: + fn_1_6E34(lbl_1_bss_0, GWSystem.board, GWSystem.bonus_star, GWSystem.party, 0); + break; + case 1: + fn_1_157F0(lbl_1_bss_0, GWSystem.board, GWSystem.party, 0); + break; + } +} + +void ObjectSetup(void) { + fn_1_40C(); +} + +float fn_1_5D4(float arg8, float arg9, float argA, float argB) { + if (argB <= argA) { + return arg9; + } + return arg8 + (argA / argB) * (arg9 - arg8); +} + +float fn_1_5FC(float arg8, float arg9, float argA) { + return (arg9 + arg8 * (argA - 1.0f)) / argA; +} + +float fn_1_61C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_6F4(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_7BC(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +float fn_1_878(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_934(void) { +} + +void fn_1_938(void) { + HuPrcVSleep(); +} + +void fn_1_958(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_980(void) { + HuPrcEnd(); +} + +void fn_1_9A0(void) { + HuWinInit(1); +} + +void fn_1_9C4(void) { + HuWinAllKill(); +} + +void fn_1_9E4(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f27; + float temp_f30; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + temp_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (temp_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + temp_f31 = (temp_f29 + temp_f25) - 4.0f; + } else if (temp_f29 - (temp_f31 - 2.0f) >= 0.0f) { + temp_f31 = temp_f29; + } else { + temp_f31 -= 2.0f; + } + temp_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (temp_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + temp_f30 = (temp_f28 + temp_f24) - 4.0f; + } else if (temp_f28 - (temp_f30 - 2.0f) >= 0.0f) { + temp_f30 = temp_f28; + } else { + temp_f30 -= 2.0f; + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = temp_f31; + var_f21 = temp_f27; + var_f22 = temp_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_6F4(temp_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_6F4(temp_f27, 1.0f, i, 10.0f);; + } else { + var_f22 = fn_1_6F4(temp_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_6F4(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_6F4(temp_f28, temp_f30, i, 10.0f); + var_f20 = fn_1_6F4(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_6F4(temp_f29, temp_f31, i - 10, 5.0f); + var_f21 = fn_1_6F4(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_142C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg8, float arg9, s32 arg4) { + s32 temp_r3; + + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + if (arg0 == 0) { + arg0 = 550 - arg2; + } else { + arg0 = 1.0f + (576.0f - arg2) / 2; + } + if (arg1 == 0) { + arg1 = 430 - arg3; + } else { + arg1 = 445 - arg3; + } + temp_r3 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + HuWinMesPalSet(temp_r3, 7, 0, 0, 0); + if (arg4 != -1) { + if (GWSystem.party != 1) { + winData[temp_r3].active_pad = 1; + } else { + winData[temp_r3].active_pad = 0xF; + } + } else { + winData[temp_r3].active_pad = 0xFF; + } + fn_1_9E4(temp_r3, arg8, arg9, 1); + if (arg1 != 0) { + HuWinPriSet(temp_r3, 50); + } + return temp_r3; +} + +s32 fn_1_1624(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + return fn_1_142C(arg0, arg1, arg2, arg3, 0.5f, 0.5f, arg4); +} + +s32 fn_1_1834(u32 arg0, s32 arg1) { + float sp8[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 temp_r3; + + if (arg1 == 0) { + HuWinMesMaxSizeGet(1, sp8, arg0); + } + var_f31 = sp8[0]; + var_f30 = sp8[1]; + var_f29 = (576.0f - var_f31) / 2; + var_f28 = 445.0f - var_f30; + if (arg1 != 0) { + var_f31 = 352.0f; + var_f30 = 94.0f; + var_f29 = 550.0f - var_f31; + var_f28 = 445.0f - var_f30; + } + temp_r3 = HuWinExCreateStyled(var_f29, var_f28, var_f31, var_f30, -1, 1); + HuWinMesPalSet(temp_r3, 7, 0, 0, 0); + if (arg1 == 0) { + HuWinBGTPLvlSet(temp_r3, 0.0f); + HuWinMesSet(temp_r3, arg0); + HuWinMesSpeedSet(temp_r3, 0); + HuWinDispOn(temp_r3); + HuWinMesPalSet(temp_r3, 7, 0xFF, 0xFF, 0xFF); + } else { + HuWinPriSet(temp_r3, 50); + fn_1_9E4(temp_r3, 0.5f, 0.5f, 1); + HuWinMesSpeedSet(temp_r3, 0); + } + return temp_r3; +} + +void fn_1_1A24(s32 arg0) { + HuWinExCleanup(arg0); +} + +void fn_1_1A50(s32 arg0, float arg1, float arg2) { + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_9E4(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1AB0(s32 arg0) { + fn_1_1A50(arg0, 0.5f, 0.5f); +} + +void fn_1_1B18(s32 arg0, s32 arg1) { + s32 i; + + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +s32 fn_1_1BC4(s32 arg0, s32 arg1) { + s32 spC; + s32 temp_r31; + s32 var_r30; + + spC = 0; + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (var_r30 = 0; var_r30 < 10; var_r30++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + temp_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + if (temp_r31 != 0) { + temp_r31 = 0; + } else { + temp_r31 = 1; + } + return temp_r31; +} + +s32 fn_1_1C88(s32 arg0) { + return fn_1_1BC4(arg0, 0); +} + +void fn_1_1D44(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_1D78(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1DB8(s16 arg0) { + ModelData* var_r28; + HsfMaterial* var_r31; + HsfData* temp_r30; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + } +} + +void fn_1_1E28(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_1FA0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[arg1])) { + return; + } + if (arg0->motion[arg2] == Hu3DMotionShiftIDGet(arg0->model[arg1])) { + return; + } + fn_1_1FA0(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2280(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !Hu3DMotionEndCheck(arg0->model[arg1])); +} + +void fn_1_2310(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !(Hu3DMotionMaxTimeGet(arg0->model[arg1]) - 20.0f <= Hu3DMotionTimeGet(arg0->model[arg1]))); +} + +s32 fn_1_23D8(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == GWPlayerCfg[i].group) { + break; + } + } + return i; +} + +void fn_1_2420(s32 arg0, s32 arg1) { + while (TRUE) { + if (arg1 & HuPadBtnDown[arg0]) { + break; + } + HuPrcVSleep(); + } +} + +void fn_1_2474(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + var_r31->unk08.z -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08.x += HuPadStkX[0] / 10.0f; + var_r31->unk08.y += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk20.y += HuPadStkX[0] / 100.0f; + if (var_r31->unk20.x < 0.0f) { + var_r31->unk20.x += 360.0f; + } + if (var_r31->unk20.x >= 360.0f) { + var_r31->unk20.x -= 360.0f; + } + if (var_r31->unk20.y < 0.0f) { + var_r31->unk20.y += 360.0f; + } + if (var_r31->unk20.y >= 360.0f) { + var_r31->unk20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(24, 40, 1.5f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08.x, var_r31->unk08.y, var_r31->unk08.z); + print8(24, 55, 1.5f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20.x, var_r31->unk20.y, var_r31->unk20.z); + print8(24, 70, 1.5f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_2834(void (*arg0)(void)) { + lbl_1_bss_4.unk00 = arg0; +} + +void fn_1_2844(void (*arg0)(void)) { + lbl_1_bss_4.unk04 = arg0; +} + +void fn_1_2854(omObjData* arg0) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08.x; + Center.y = var_r31->unk08.y; + Center.z = var_r31->unk08.z; + CRot.x = var_r31->unk20.x; + CRot.y = var_r31->unk20.y; + CRot.z = var_r31->unk20.z; + CZoom = var_r31->unk38; +} + +void fn_1_290C(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 1.0f, 2000.0f, 1.2f); + lbl_1_bss_4.unk00 = arg1; + lbl_1_bss_4.unk04 = fn_1_2474; + omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0, 0, -1, fn_1_2854); +} + +void fn_1_2A2C(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + float sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + float var_f31; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp4C.y = sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp18 = arg4; + sp28.x = Hu3DData[arg0->model[arg1]].rot.x; + sp28.y = Hu3DData[arg0->model[arg1]].rot.y; + sp28.z = Hu3DData[arg0->model[arg1]].rot.z; + sp1C = 0.0f; + sp20 = arg3; + sp24 = 0.0f; + sp14 = arg5; + var_f31 = -1.1025f; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[3], 0.0f, 5.0f, 0U); + HuPrcSleep(10); + while (TRUE) { + if (var_f31 >= 1.7f) { + var_f31 = 1.7f; + } + sp4C.y += var_f31 * var_f31 * (var_f31 >= 0.0f ? -17.5f : 17.5f); + if (sp4C.y <= 0.0f && var_f31 > 0.0f) { + sp4C.y = 0.0f; + } + sp4C.x = sp40.x += 6.0 * sind(sp28.y); + sp4C.z = sp40.z += 6.0 * cosd(sp28.y); + Hu3DModelPosSet(arg0->model[1], sp4C.x, sp4C.y, sp4C.z); + Hu3DModelRotSet(arg0->model[1], sp28.x, sp28.y, sp28.z); + HuPrcVSleep(); + if (sp4C.y <= arg2.y && var_f31 > 0.0f) { + break; + } + var_f31 += 0.11f; + } +} + +void fn_1_2DD4(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 i; + + var_r26 = 0; + var_r25 = 0; + sp48.x = Hu3DData[arg0->model[arg1]].pos.x; + sp48.y = Hu3DData[arg0->model[arg1]].pos.y; + sp48.z = Hu3DData[arg0->model[arg1]].pos.z; + sp3C.x = arg2.x; + sp3C.y = arg2.y; + sp3C.z = arg2.z; + sp14 = arg4; + sp24.x = Hu3DData[arg0->model[arg1]].rot.x; + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + sp24.z = Hu3DData[arg0->model[arg1]].rot.z; + sp18.x = 0.0f; + sp18.y = arg3; + sp18.z = 0.0f; + if (sp3C.x - sp48.x >= 0.0f) { + var_r24 = 1; + } else { + var_r24 = 0; + } + if (sp3C.z - sp48.z >= 0.0f) { + var_r23 = 1; + } else { + var_r23 = 0; + } + temp_r27 = arg5; + do { + sp30.y = -(atan2d(sp3C.z - sp48.z, sp3C.x - sp48.x) - 90.0); + if (sp30.y < 0.0f) { + sp30.y += 360.0f; + } else if (sp30.y >= 360.0f) { + sp30.y -= 360.0f; + } + if (sp30.y >= 180.0f) { + if (sp24.y - sp30.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp30.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp54.x = sp48.x += 6.0 * sind(sp30.y); + sp54.z = sp48.z += 6.0 * cosd(sp30.y); + if (var_r24 != 0) { + if (sp48.x >= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } else { + if (sp48.x <= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } + if (var_r23 != 0) { + if (sp48.z >= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } else { + if (sp48.z <= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } + sp24.y = fn_1_5FC(sp24.y, sp30.y, 10.0f); + Hu3DModelPosSet(arg0->model[1], sp54.x, sp48.y, sp54.z); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } while (var_r25 != 1 || var_r26 != 1); + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + for (i = 0; i <= temp_r27; i++) { + if (sp18.y >= 180.0f) { + if (sp24.y - sp18.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp18.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp24.y = fn_1_5D4(sp24.y, sp18.y, i, temp_r27); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } +} + +void fn_1_35C8(s16 arg0) { + ModelData* var_r28; + HsfData* temp_r30; + HsfMaterial* var_r31; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + var_r31->litColor[0] = 0xFF; + var_r31->litColor[1] = 0xFF; + var_r31->litColor[2] = 0xFF; + } +} + +void fn_1_3650(StructFn352C* arg0, s32 arg1) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; +} + +s32 fn_1_36E4(void) { + s32 i; + + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + break; + } + } + if (i == 4) { + return -1; + } + return i; +} + +s32 fn_1_373C(void) { + s32 var_r30; + s32 var_r31; + + var_r30 = 0; + do { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r30 == GWPlayerCfg[var_r31].pad_idx) { + break; + } + } + if (!GWPlayerCfg[var_r31].iscom) { + break; + } + var_r30++; + } while (var_r30 != 5); + if (var_r30 == 5) { + return -1; + } + return var_r31; +} + +s32 fn_1_37C8(s32 arg0) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, arg0, arg0, arg0); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); + return temp_r3; +} + +void fn_1_38B4(void) { + Vec sp20 = { 0.0f, 3000.0f, 800.0f }; + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_3978(StructBss4* arg0) { + arg0->unk08.x = arg0->unk14; + arg0->unk08.y = arg0->unk18; + arg0->unk08.z = arg0->unk1C; + arg0->unk20.x = arg0->unk2C; + arg0->unk20.y = arg0->unk30; + arg0->unk20.z = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_39B4(StructBss4* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08.x; + arg0->unk18 = arg0->unk08.y; + arg0->unk1C = arg0->unk08.z; + arg0->unk2C = arg0->unk20.x; + arg0->unk30 = arg0->unk20.y; + arg0->unk34 = arg0->unk20.z; + arg0->unk3C = arg0->unk38; +} + +void fn_1_39F8(StructBss4* arg0, StructBss4* arg1, float arg2) { + arg0->unk08.x = fn_1_5FC(arg0->unk08.x, arg1->unk14, arg2); + arg0->unk08.y = fn_1_5FC(arg0->unk08.y, arg1->unk18, arg2); + arg0->unk08.z = fn_1_5FC(arg0->unk08.z, arg1->unk1C, arg2); + arg0->unk20.x = fn_1_5FC(arg0->unk20.x, arg1->unk2C, arg2); + arg0->unk20.y = fn_1_5FC(arg0->unk20.y, arg1->unk30, arg2); + arg0->unk20.z = fn_1_5FC(arg0->unk20.z, arg1->unk34, arg2); + arg0->unk38 = fn_1_5FC(arg0->unk38, arg1->unk3C, arg2); +} + +void fn_1_3C64(StructBss4* arg0, float arg1) { + fn_1_39F8(arg0, arg0, arg1); +} + +void fn_1_3ED0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_5D4(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_5D4(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_5D4(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_5D4(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_5D4(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_5D4(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_5D4(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_414C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_3ED0(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_4400(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_3ED0(arg0, arg1, arg2, arg3); + fn_1_39F8(arg0, arg1, arg4); +} + +void fn_1_486C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_6F4(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_6F4(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_6F4(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_6F4(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_6F4(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_6F4(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_6F4(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_4CC0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_486C(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_514C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_486C(arg0, arg1, arg2, arg3); + fn_1_39F8(arg0, arg1, arg4); +} + +void fn_1_57A4(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_61C(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_61C(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_61C(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_61C(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_61C(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_61C(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_61C(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_5C68(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_57A4(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_6164(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_57A4(arg0, arg1, arg2, arg3); + fn_1_39F8(arg0, arg1, arg4); +} + +void fn_1_682C(omObjData* arg0) { + s32 var_r30; + + if (arg0->work[0] == 0) { + return; + } + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + var_r30 = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[var_r30], 0.0f, 15.0f, HU3D_MOTATTR_LOOP); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_68F0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1E28(arg0, 1, arg1, arg3, arg4); + if (arg4 == 0) { + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; + } +} + +void fn_1_6A78(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_6AAC(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_6AEC(s32 arg0, s32 arg1) { + fn_1_1B18(arg0, arg1); +} + +void fn_1_6B98(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_r28 = 0; + s32 var_r29 = 0; + s32 i; + + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_6AEC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +BOOL fn_1_6D80(s32 arg0) { + s32 var_r31; + s32 i; + + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + var_r31 = HuWinChoiceGet(arg0, 0); + HuWinComKeyReset(); + if (var_r31 != 0) { + var_r31 = FALSE; + } else { + var_r31 = TRUE; + } + return var_r31; +} diff --git a/src/REL/mstory3Dll/result.c b/src/REL/mstory3Dll/result.c new file mode 100755 index 00000000..737f8b8f --- /dev/null +++ b/src/REL/mstory3Dll/result.c @@ -0,0 +1,1620 @@ +#include "REL/mstory3Dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ char unk1C[0x18]; + /* 0x34 */ s32 unk34[4][2]; + /* 0x54 */ s32 unk54; + /* 0x58 */ char unk58[4]; + /* 0x5C */ s32 unk5C; + /* 0x60 */ char unk60[4]; + /* 0x64 */ s32 unk64; + /* 0x68 */ char unk68[4]; + /* 0x6C */ s32 unk6C; + /* 0x70 */ char unk70[4]; + /* 0x74 */ s32 unk74; + /* 0x78 */ char unk78[4]; + /* 0x7C */ s32 unk7C; + /* 0x80 */ char unk80[4]; + /* 0x84 */ s32 unk84; + /* 0x88 */ char unk88[4]; + /* 0x8C */ s32 unk8C; + /* 0x90 */ char unk90[4]; +} StructUnk38Bss1A0C; // Size 0x94 + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; + /* 0x01C */ char unk1C[8]; + /* 0x024 */ s32 unk24; + /* 0x028 */ char unk28[0x10]; + /* 0x038 */ StructUnk38Bss1A0C unk38[4]; + /* 0x288 */ Vec unk288[5]; + /* 0x2C4 */ s32 unk2C4; + /* 0x2C8 */ s32 unk2C8; + /* 0x2CC */ s32 unk2CC; + /* 0x2D0 */ s32 unk2D0; + /* 0x2D4 */ s32 unk2D4; +} StructBss1A0C; // Size 0x2D8 + +void fn_1_15C0C(void); +void fn_1_16ED4(void); +void fn_1_18080(void); +void fn_1_184E8(void); +void fn_1_18558(void); +void fn_1_18F98(void); +void fn_1_19144(void); +void fn_1_19214(void); +void fn_1_194A0(void); +void fn_1_197B4(s32 arg0); +void fn_1_1C2F4(void); +void fn_1_1C460(void); +void fn_1_1CA98(void); +void fn_1_1CB7C(void); +void fn_1_1CC5C(void); +void fn_1_1CD60(void); +void fn_1_1D63C(void); +void fn_1_1D77C(void); +void fn_1_1D964(void); +void fn_1_1DA64(void); +void fn_1_1DAAC(void); +void fn_1_1DE4C(void); + +StructBss1A0C lbl_1_bss_1A0C; +StructBss1530 lbl_1_bss_19E4; +StructBss1530 lbl_1_bss_19BC; +StructBss1530 lbl_1_bss_1994; +StructBss1530 lbl_1_bss_18F4[4]; +AnimData* lbl_1_bss_18EC[2]; +AnimData* lbl_1_bss_18E4[2]; +AnimData* lbl_1_bss_18D8[3]; +s32 lbl_1_bss_18D4; +Process* lbl_1_bss_18D0; + +void fn_1_157F0(Process* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 var_r31; + + lbl_1_bss_18D0 = arg0; + lbl_1_bss_1A0C.unk00 = arg1; + lbl_1_bss_1A0C.unk08 = GWSystem.max_turn; + arg3 = lbl_1_bss_1A0C.unk14 = fn_1_373C(); + lbl_1_bss_1A0C.unk2D4 = arg2; + lbl_1_bss_1A0C.unk2CC = GWSystem.team; + if (_CheckFlag(FLAG_ID_MAKE(1, 29))) { + lbl_1_bss_1A0C.unk2D0 = 0; + } else { + lbl_1_bss_1A0C.unk2D0 = 1; + } + fn_1_9A0(); + fn_1_37C8(0xFF); + fn_1_290C(lbl_1_bss_18D0, fn_1_1DE4C); + fn_1_15C0C(); + fn_1_197B4(arg3); + fn_1_194A0(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_1CC5C, 100, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_19214, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1DAAC, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_18080, 90, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_159A4(void) { + s32 var_r29; + s32 var_r30; + s32 i; + + for (i = 0; i < 4; i++) { + var_r29 = GWPlayer[i].stars - GWPlayerHandicapGet(i); + if (var_r29 <= 0) { + var_r29 = 0; + } + GWTotalStarsAdd(var_r29); + } + GWBoardPlayCountAdd(lbl_1_bss_1A0C.unk00, 1); + if (lbl_1_bss_1A0C.unk2CC == 1) { + if (lbl_1_bss_1A0C.unk38[0].unk08 == 0) { + GWBoardWinCountInc(lbl_1_bss_1A0C.unk38[0].unk10, lbl_1_bss_1A0C.unk00); + } + if (lbl_1_bss_1A0C.unk38[1].unk08 == 0) { + GWBoardWinCountInc(lbl_1_bss_1A0C.unk38[1].unk10, lbl_1_bss_1A0C.unk00); + } + } else if (lbl_1_bss_1A0C.unk38[0].unk08 == 0) { + GWBoardWinCountInc(lbl_1_bss_1A0C.unk38[0].unk10, lbl_1_bss_1A0C.unk00); + } + for (i = 0; i < 4; i++) { + var_r30 = GWPlayer[i].stars_max - GWPlayerHandicapGet(i); + if (var_r30 <= 0) { + var_r30 = 0; + } + if (GWBoardMaxStarsGet(lbl_1_bss_1A0C.unk00) <= var_r30 && !GWPlayer[i].com) { + GWBoardMaxStarsSet(lbl_1_bss_1A0C.unk00, var_r30); + } + } + for (i = 0; i < 4; i++) { + if (GWBoardMaxCoinsGet(lbl_1_bss_1A0C.unk00) <= GWPlayer[i].coins_max && !GWPlayer[i].com) { + GWBoardMaxCoinsSet(lbl_1_bss_1A0C.unk00, GWPlayer[i].coins_max); + } + } +} + +void fn_1_15C0C(void) { + lbl_1_bss_18EC[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 95), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18EC[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 96), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18D8[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 93), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18D8[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 94), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18D8[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 97), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18E4[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 136), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18E4[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 137), MEMORY_DEFAULT_NUM)); +} + +void fn_1_15D08(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { + HuSprPosSet(arg0, arg1, arg2 + arg4 / 2, arg3 + arg5 / 2); +} + +void fn_1_15DC8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) { + s32 var_r31; + s32 temp_r28; + + var_r31 = 0; + if (arg7 < 2) { + if ((temp_r28 = arg2 / 100) == 0) { + if (arg7 != 0) { + var_r31++; + } + HuSprBankSet(arg0, arg1, temp_r28); + fn_1_15D08(arg0, arg1, -1000, -1000, arg5, arg6); + } else { + HuSprBankSet(arg0, arg1, temp_r28); + fn_1_15D08(arg0, arg1, arg3 + arg5 * var_r31, arg4, arg5, arg6); + var_r31++; + } + } else { + arg1--; + } + if ((temp_r28 = (arg2 % 100) / 10) == 0 && arg2 / 100 == 0) { + if (arg7 != 0) { + var_r31++; + } + HuSprBankSet(arg0, arg1 + 1, temp_r28); + fn_1_15D08(arg0, arg1 + 1, -1000, -1000, arg5, arg6); + } else { + HuSprBankSet(arg0, arg1 + 1, temp_r28); + fn_1_15D08(arg0, arg1 + 1, arg3 + arg5 * var_r31, arg4, arg5, arg6); + var_r31++; + } + temp_r28 = arg2 % 10; + HuSprBankSet(arg0, arg1 + 2, temp_r28); + fn_1_15D08(arg0, arg1 + 2, arg3 + arg5 * var_r31, arg4, arg5, arg6); + var_r31++; +} + +void fn_1_161B8(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + s32 var_r28 = 0; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_938(); + if (HuPadBtnDown[0] & PAD_TRIGGER_R) { + var_r28++; + var_r28 %= 2; + } + if (var_r28 == 0) { + continue; + } + printWin(var_r30, var_r29, 220, 150, &sp10); + if (lbl_1_bss_19E4.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_19BC.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_1994.unk04 == NULL) { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_18F4[i].unk04 == NULL) { + print8(var_r30, var_r29 + 30 + i * 10, 1.0f, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(var_r30, var_r29 + 30 + i * 10, 1.0f, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1A0C.unk00, lbl_1_bss_1A0C.unk04, lbl_1_bss_1A0C.unk14); + print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 110 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_1A0C.unk38[i].unk00, lbl_1_bss_1A0C.unk38[i].unk04, lbl_1_bss_1A0C.unk38[i].unk08, + lbl_1_bss_1A0C.unk38[i].unk0C, lbl_1_bss_1A0C.unk38[i].unk14, lbl_1_bss_1A0C.unk38[i].unk10); + } + } +} + +void fn_1_16574(void) { + fn_1_958(30); + fn_1_16ED4(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_938(); + } while (WipeStatGet() != 0); + fn_1_958(60); +} + +void fn_1_165C8(void) { + s32 sp8[5]; + s32 i; + + for (i = 0; i < 5; i++) { + sp8[i] = 0; + fn_1_1E28(lbl_1_bss_1994.unk00, i * 3 + 1, i * 3 + 2, 0, 1); + Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y = -90.0f; + } + do { + fn_1_938(); + for (i = 0; i < 5; i++) { + if (sp8[i] == 0) { + lbl_1_bss_1A0C.unk288[i].x -= 5.0f; + if (i == 0) { + if (lbl_1_bss_1A0C.unk288[i].x <= -175.0f) { + sp8[i] = 1; + lbl_1_bss_1A0C.unk288[i].x = -175.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, i * 3 + 1, i * 3 + 1, 15, 1); + } + } else { + if (lbl_1_bss_1A0C.unk288[i].x <= -240.0f) { + sp8[i] = 1; + lbl_1_bss_1A0C.unk288[i].x = -240.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, i * 3 + 1, i * 3 + 1, 15, 1); + } + } + } else if (sp8[i] == 1) { + Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y, 17.5f, 10.0f); + if (Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y >= 14.9f) { + sp8[i] = 2; + } + } + } + for (i = 0; i < 5; i++) { + if (sp8[i] != 2) { + break; + } + } + } while (i != 5); + lbl_1_bss_1A0C.unk0C = fn_1_1834(MAKE_MESSID(38, 12), 0); +} + +s32 fn_1_16924(void) { + s32 var_r31; + s32 var_r30; + + var_r31 = 0; + var_r30 = 0; + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1A0C.unk14 != -1) { + if (HuPadBtnDown[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_A) { + HuAudFXPlay(0x1C); + break; + } else if (HuPadBtnDown[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_MENU) { + HuAudFXPlay(1); + var_r31 = 1; + break; + } + } else if (var_r30++ >= 300) { + var_r31 = 1; + break; + } + } + if (var_r31 == 0) { + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + fn_1_1A24(lbl_1_bss_1A0C.unk0C); + fn_1_1C460(); + fn_1_1CA98(); + fn_1_18558(); + fn_1_18F98(); + fn_1_1D77C(); + fn_1_1D964(); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + lbl_1_bss_1A0C.unk10 = fn_1_1834(-1, 1); + } +} + +void fn_1_16AD4(void) { + lbl_1_bss_1A0C.unk24 = 1; + fn_1_1D44(lbl_1_bss_1A0C.unk10, MAKE_MESSID(38, lbl_1_bss_1A0C.unk2C8)); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1A0C.unk24++ > 5 && (HuPadBtnDown[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_B)) { + HuAudFXPlay(3); + break; + } + if (HuPadStkX[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] >= 5 || (HuPadBtn[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_RIGHT)) { + if (lbl_1_bss_1A0C.unk2C8 != 11) { + lbl_1_bss_1A0C.unk24 = 0; + } + lbl_1_bss_1A0C.unk2C4++; + if (lbl_1_bss_1A0C.unk2C4 >= 6) { + lbl_1_bss_1A0C.unk2C4 = 5; + } + lbl_1_bss_1A0C.unk2C8++; + if (lbl_1_bss_1A0C.unk2C8 >= 12) { + lbl_1_bss_1A0C.unk2C8 = 11; + } else { + fn_1_1CD60(); + fn_1_1D44(lbl_1_bss_1A0C.unk10, MAKE_MESSID(38, lbl_1_bss_1A0C.unk2C8)); + HuAudFXPlay(0); + fn_1_958(10); + } + } + if (HuPadStkX[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] <= -5 || (HuPadBtn[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_LEFT)) { + if (lbl_1_bss_1A0C.unk2C8 != 0) { + lbl_1_bss_1A0C.unk24 = 0; + } + lbl_1_bss_1A0C.unk2C4--; + if (lbl_1_bss_1A0C.unk2C4 < 0) { + lbl_1_bss_1A0C.unk2C4 = 0; + } + lbl_1_bss_1A0C.unk2C8--; + if (lbl_1_bss_1A0C.unk2C8 < 0) { + lbl_1_bss_1A0C.unk2C8 = 0; + } else { + fn_1_1CD60(); + fn_1_1D44(lbl_1_bss_1A0C.unk10, MAKE_MESSID(38, lbl_1_bss_1A0C.unk2C8)); + HuAudFXPlay(0); + fn_1_958(10); + } + } + } + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + fn_1_1A24(lbl_1_bss_1A0C.unk10); + fn_1_1CB7C(); + fn_1_1C2F4(); + fn_1_19144(); + fn_1_184E8(); + fn_1_1DA64(); + fn_1_1D63C(); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + lbl_1_bss_1A0C.unk0C = fn_1_1834(MAKE_MESSID(38, 12), 0); +} + +void fn_1_16ED4(void) { + s32 var_r30; + s32 i; + + for (i = 0; i < 5; i++) { + if (i == 0) { + lbl_1_bss_1A0C.unk288[i].x = 1800.0f; + lbl_1_bss_1A0C.unk288[i].y = 157.5f; + } else if (lbl_1_bss_1A0C.unk2CC == 1) { + if (i <= 2) { + var_r30 = 0; + } else { + var_r30 = 2; + } + lbl_1_bss_1A0C.unk288[i].x = 900.0f - 100.0f * var_r30; + lbl_1_bss_1A0C.unk288[i].y = 75.0f - 82.5f * (i - 1); + } else { + lbl_1_bss_1A0C.unk288[i].x = 900.0f - 100.0f * i; + lbl_1_bss_1A0C.unk288[i].y = 75.0f - 82.5f * (i - 1); + } + } + lbl_1_bss_1A0C.unk2C4 = 0; + lbl_1_bss_1A0C.unk2C8 = 0; + fn_1_1CB7C(); + fn_1_1C2F4(); + fn_1_19144(); + fn_1_184E8(); + fn_1_1DA64(); + fn_1_1D63C(); +} + +void fn_1_1712C(void) { + s32 temp_r3; + + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + saveExecF = 0; + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + temp_r3 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(temp_r3, 288.0f, 240.0f); + espAttrReset(temp_r3, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_159A4(); + if (saveExecF == 1) { + GWGameStat.party_continue = 0; + } + SLCommonSet(); + if (SLSaveFlagGet() == 1) { + SLSave(); + } + saveExecF = 0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1728C(void) { + float sp8[2]; + s32 temp_r30 = 1; + s32 var_r29; + s32 var_r31; + + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + espPosSet(var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0), 288.0f, 240.0f); + espAttrReset(var_r29, HUSPR_ATTR_DISPOFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { +#if VERSION_REV1 + GWGameStat.story_continue = 1; +#endif + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_17484(s32 arg0) { + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_17570(void) { + s32 var_r30; + s32 i; + + var_r30 = 0; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_938(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + lbl_1_bss_19E4.unk04 = NULL; + lbl_1_bss_19BC.unk04 = NULL; + lbl_1_bss_1994.unk04 = NULL; + for (i = 0; i < 4; i++) { + lbl_1_bss_18F4[i].unk04 = NULL; + } + if (GWPartyGet() == 1) { + HuPrcChildCreate(fn_1_1712C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + fn_1_958(30); + omOvlReturnEx(1, 1); + } else { + fn_1_159A4(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1A0C.unk38[i].unk10 != GWStoryCharGet()) { + continue; + } + _SetFlag(9); + switch (lbl_1_bss_1A0C.unk00) { + case 0: + if (_CheckFlag(2) == 0) { + _SetFlag(2); + var_r30 = 1; + } + break; + case 1: + if (_CheckFlag(3) == 0) { + _SetFlag(3); + var_r30 = 1; + } + break; + case 2: + if (_CheckFlag(4) == 0) { + _SetFlag(4); + var_r30 = 1; + } + break; + case 3: + if (_CheckFlag(5) == 0) { + _SetFlag(5); + var_r30 = 1; + } + break; + case 4: + if (_CheckFlag(6) == 0) { + _SetFlag(6); + var_r30 = 1; + } + break; + case 5: + if (_CheckFlag(7) == 0) { + _SetFlag(7); + var_r30 = 1; + } + break; + } + if (var_r30 == 1) { + if (lbl_1_bss_1A0C.unk38[i].unk18 == 0) { + if (lbl_1_bss_1A0C.unk00 == 5) { + GWGameStat.open_w06 = 1; + } + _ClearFlag(9); + OSReport("########## Next to BoardClear Event 10 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, _CheckFlag(2), _CheckFlag(9)); + fn_1_958(120); + HuPrcChildCreate(fn_1_1728C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + if (lbl_1_bss_1A0C.unk00 != 5) { + omOvlGotoEx(OVL_MSTORY, 1, 0, 0); + } else { + omOvlGotoEx(OVL_MSTORY2, 1, 1, 0); + } + } else { + switch (lbl_1_bss_1A0C.unk00) { + case 0: + _ClearFlag(2); + break; + case 1: + _ClearFlag(3); + break; + case 2: + _ClearFlag(4); + break; + case 3: + _ClearFlag(5); + break; + case 4: + _ClearFlag(6); + break; + case 5: + _ClearFlag(7); + break; + } + OSReport("########## Next to BoardMiss Event 01 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_17484(GWSystem.board), _CheckFlag(9)); + fn_1_958(120); + HuPrcChildCreate(fn_1_1728C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + if (lbl_1_bss_1A0C.unk00 != 5) { + omOvlGotoEx(OVL_MSTORY, 1, 1, 0); + } else { + omOvlGotoEx(OVL_MSTORY2, 1, 2, 0); + } + } + } else { + GWPlayerCfg->group = 0; + GWPlayerCfg->character = lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk10; + GWPlayerCfg->pad_idx = lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14; + GWPlayerCfg->iscom = 0; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_17484(GWSystem.board), _CheckFlag(9)); + fn_1_958(120); + HuPrcChildCreate(fn_1_1728C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + omOvlGotoEx(OVL_MENT, 1, 10, 0); + } + } + } + while (TRUE) { + fn_1_938(); + } +} + +void fn_1_17DC0(omObjData* arg0, StructBss1530* arg1) { + fn_1_16574(); + fn_1_165C8(); + while (TRUE) { + fn_1_938(); + if (fn_1_16924() != 0) { + break; + } + fn_1_16AD4(); + } + fn_1_17570(); + arg1->unk04 = 0; +} + +void fn_1_18080(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_19E4.unk00 = temp_r3; + lbl_1_bss_19E4.unk04 = (void*) fn_1_17DC0; + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_19E4.unk04 != NULL) { + lbl_1_bss_19E4.unk04(temp_r3, &lbl_1_bss_19E4); + } + } +} + +void fn_1_1811C(omObjData* arg0, s32 arg1) { + s32 var_r29; + s32 i; + + arg0->work[0] = HuSprGrpCreate(1); + var_r29 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 75) + arg1, MEMORY_DEFAULT_NUM)), 1000, 0); + HuSprGrpMemberSet(arg0->work[0], 0, var_r29); + // TODO: figure out the actual args of this fn_1_15D08 call. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + fn_1_15D08(arg0->work[0], 0, 288, 240, 0, 0); + HuSprGrpPosSet(arg0->work[0], 0.0f, 0.0f); + HuSprGrpDrawNoSet(arg0->work[0], 0x7F); + { + s32 spC[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 104), + DATA_MAKE_NUM(DATADIR_MSTORY3, 105), + DATA_MAKE_NUM(DATADIR_MSTORY3, 106), + DATA_MAKE_NUM(DATADIR_MSTORY3, 107), + DATA_MAKE_NUM(DATADIR_MSTORY3, 108), + DATA_MAKE_NUM(DATADIR_MSTORY3, 109), + DATA_MAKE_NUM(DATADIR_MSTORY3, 106) + }; + + for (i = 0; i < 7; i++) { + arg0->model[i + 1] = Hu3DModelCreateFile(spC[i]); + Hu3DModelPosSet(arg0->model[i + 1], -122.5 + 42.5 * i, 185.0f, -10.0f); + Hu3DModelRotSet(arg0->model[i + 1], 0.0f, 1980.0f, 0.0f); + } + } +} + +void fn_1_18334(omObjData* arg0, s32* arg1) { + s32 sp8 = 0; + s32 i; + + for (i = 0; i < 7; i++) { + if (arg1[2] == 0 && Hu3DData[arg0->model[i + 1]].pos.x >= lbl_1_bss_1A0C.unk288[0].x) { + Hu3DData[arg0->model[i + 1]].rot.y = fn_1_5FC(Hu3DData[arg0->model[i + 1]].rot.y, 0.0f, 20.0f); + } else if (arg1[2] == 1 && Hu3DData[arg0->model[i + 1]].pos.x <= lbl_1_bss_1A0C.unk288[0].x) { + Hu3DData[arg0->model[i + 1]].rot.y = fn_1_5FC(Hu3DData[arg0->model[i + 1]].rot.y, 1980.0f, 20.0f); + } + } +} + +void fn_1_184E8(void) { + s32 i; + + for (i = 0; i < 7; i++) { + Hu3DModelAttrReset(lbl_1_bss_19BC.unk00->model[i + 1], HU3D_ATTR_DISPOFF); + } + lbl_1_bss_19BC.unk04 = (void*) fn_1_18334; +} + +void fn_1_18558(void) { + s32 i; + + for (i = 0; i < 7; i++) { + Hu3DModelAttrSet(lbl_1_bss_19BC.unk00->model[i + 1], HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 7; i++) { + if (lbl_1_bss_19BC.unk08 != 0) { + Hu3DData[lbl_1_bss_19BC.unk00->model[i + 1]].rot.y = 1980.0f; + } else { + Hu3DData[lbl_1_bss_19BC.unk00->model[i + 1]].rot.y = 0.0f; + } + } + lbl_1_bss_19BC.unk04 = NULL; +} + +void fn_1_18668(omObjData* arg0, s32 arg1) { + s32 var_r30; + s32 i; + + // TODO: figure out the actual args of fn_1_15D08 calls. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + arg0->work[1] = HuSprGrpCreate(8); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 116), MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[1], 0, var_r30); + fn_1_15D08(arg0->work[1], 0, 368, 171, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 117), MEMORY_DEFAULT_NUM)), 600, 0); + HuSprGrpMemberSet(arg0->work[1], 1, var_r30); + fn_1_15D08(arg0->work[1], 1, 292, 168, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 118), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 2, var_r30); + fn_1_15D08(arg0->work[1], 2, 292, 168, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 119), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 3, var_r30); + fn_1_15D08(arg0->work[1], 3, 292, 168, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(arg1 + DATA_MAKE_NUM(DATADIR_MSTORY3, 110), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 4, var_r30); + fn_1_15D08(arg0->work[1], 4, 96, 53, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 138), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 5, var_r30); + fn_1_15D08(arg0->work[1], 5, 407, 37, 0, 0); + for (i = 0; i < 2; i++) { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 139), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], i + 6, var_r30); + } + // TODO: figure out the actual value of arg7. It will match as long as arg7 >= 2. + fn_1_15DC8(arg0->work[1], 6, lbl_1_bss_1A0C.unk08, 293, 19, 36, 36, 2); + arg0->work[2] = HuSprGrpCreate(2); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 120), MEMORY_DEFAULT_NUM)), 800, 0); + HuSprGrpMemberSet(arg0->work[2], 0, var_r30); + fn_1_15D08(arg0->work[2], 0, 34, 119, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 121), MEMORY_DEFAULT_NUM)), 400, 0); + HuSprGrpMemberSet(arg0->work[2], 1, var_r30); + fn_1_15D08(arg0->work[2], 1, 36, 121, 0, 0); + arg0->work[3] = HuSprGrpCreate(12); + for (i = 0; i < 12; i++) { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(i + DATA_MAKE_NUM(DATADIR_MSTORY3, 124), MEMORY_DEFAULT_NUM)), 700, 0); + HuSprGrpMemberSet(arg0->work[3], i, var_r30); + fn_1_15D08(arg0->work[3], i, i * 66, 16, 58, 0); + } + HuSprGrpPosSet(arg0->work[2], 164 + lbl_1_bss_1A0C.unk2C4 * 66, 78.0f); + HuSprGrpDrawNoSet(arg0->work[1], 0x7F); + HuSprGrpDrawNoSet(arg0->work[2], 0x7F); + HuSprGrpDrawNoSet(arg0->work[3], 0x7F); +} + +void fn_1_18CFC(omObjData* arg0) { + float temp_f31; + float var_f30; + s32 var_r29; + s32 var_r28; + s32 var_r30; + + var_r28 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r28 < 0) { + var_r28 = 0; + } + temp_f31 = HuSprGrpData[arg0->work[2]].x; + var_f30 = 164 + lbl_1_bss_1A0C.unk2C4 * 66; + temp_f31 = fn_1_5FC(temp_f31, var_f30, 2.0f); + HuSprGrpPosSet(arg0->work[1], -5.0f, 25.0f); + HuSprGrpPosSet(arg0->work[2], temp_f31, 78.0f); + HuSprGrpPosSet(arg0->work[3], 169 - var_r28 * 66, 82.0f); + for (var_r30 = 0; var_r30 < 12; var_r30++) { + if (var_r30 < var_r28 || var_r30 > var_r28 + 5) { + HuSprAttrSet(arg0->work[3], var_r30, HUSPR_ATTR_DISPOFF); + } else { + HuSprAttrReset(arg0->work[3], var_r30, HUSPR_ATTR_DISPOFF); + } + } + var_r29 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r29 < 0) { + var_r29 = 0; + } + if (var_r29 == 0) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 2); + } else if (var_r29 == 1) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 0); + } + if (var_r29 == 6) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 2); + } else if (var_r29 == 5) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 0); + } +} + +void fn_1_18F98(void) { + s32 var_r30; + s32 i; + + for (i = 0; i < 8; i++) { + HuSprAttrReset(lbl_1_bss_19BC.unk00->work[1], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 2; i++) { + HuSprAttrReset(lbl_1_bss_19BC.unk00->work[2], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 12; i++) { + HuSprAttrReset(lbl_1_bss_19BC.unk00->work[3], i, HUSPR_ATTR_DISPOFF); + } + var_r30 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r30 < 0) { + var_r30 = 0; + } + if (var_r30 == 0) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 2); + } else if (var_r30 == 1) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 0); + } + if (var_r30 == 6) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 2); + } else if (var_r30 == 5) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 0); + } + lbl_1_bss_19BC.unk04 = (void*) fn_1_18CFC; +} + +void fn_1_19144(void) { + s32 i; + + for (i = 0; i < 8; i++) { + HuSprAttrSet(lbl_1_bss_19BC.unk00->work[1], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 2; i++) { + HuSprAttrSet(lbl_1_bss_19BC.unk00->work[2], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 12; i++) { + HuSprAttrSet(lbl_1_bss_19BC.unk00->work[3], i, HUSPR_ATTR_DISPOFF); + } + lbl_1_bss_19BC.unk04 = NULL; +} + +void fn_1_19214(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_19BC.unk00 = temp_r3; + lbl_1_bss_19BC.unk04 = NULL; + fn_1_1811C(temp_r3, lbl_1_bss_1A0C.unk00); + fn_1_18668(temp_r3, lbl_1_bss_1A0C.unk00); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_19BC.unk04 != NULL) { + lbl_1_bss_19BC.unk04(temp_r3, &lbl_1_bss_19BC); + } + } +} + +void fn_1_194A0(void) { + s32 var_r29; + s32 i; + s32 j; + + for (i = 0; i < 12; i++) { + var_r29 = 0; + for (j = 0; j < 4; j++) { + if (var_r29 <= lbl_1_bss_1A0C.unk38[j].unk34[i][0]) { + var_r29 = lbl_1_bss_1A0C.unk38[j].unk34[i][0]; + } + } + if (var_r29 > 0) { + for (j = 0; j < 4; j++) { + if (var_r29 == lbl_1_bss_1A0C.unk38[j].unk34[i][0]) { + lbl_1_bss_1A0C.unk38[j].unk34[i][1] = 1; + } + } + } + } +} + +void fn_1_19590(StructUnk38Bss1A0C* arg0, s32 arg1, s32 arg2) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; + arg0->unk18 = GWPlayer[arg0->unk00].rank; + arg0->unk34[0][0] = GWPlayer[arg0->unk00].stars; + arg0->unk34[1][0] = GWPlayer[arg0->unk00].coins; + arg0->unk34[2][0] = GWPlayer[arg0->unk00].coins_mg; + arg0->unk34[3][0] = GWPlayer[arg0->unk00].coins_max; + arg0->unk54 = GWPlayer[arg0->unk00].blue_count; + arg0->unk5C = GWPlayer[arg0->unk00].red_count; + arg0->unk64 = GWPlayer[arg0->unk00].question_count; + arg0->unk6C = GWPlayer[arg0->unk00].fortune_count; + arg0->unk74 = GWPlayer[arg0->unk00].bowser_count; + arg0->unk7C = GWPlayer[arg0->unk00].battle_count; + arg0->unk84 = GWPlayer[arg0->unk00].mushroom_count; + arg0->unk8C = GWPlayer[arg0->unk00].warp_count; +} + +void fn_1_197B4(s32 arg0) { + s32 sp74[4][2]; + s32 sp54[4][2]; + s32 sp44[4]; + s32 sp34[4]; + s32 sp24[4]; + s32 var_r28; + s32 var_r29; + s32 j; + s32 i; + + var_r28 = 0; + sp44[0] = 0; + for (i = 1; i < 4; i++) { + sp44[i] = sp44[i - 1] + 1; + if (sp44[i] >= 4) { + sp44[i] = 0; + } + } + for (i = 0; i < 4; i++) { + sp34[i] = GWPlayer[sp44[i]].rank; + } + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == sp34[j]) { + sp74[var_r28][0] = sp44[j]; + sp74[var_r28][1] = sp34[j]; + var_r28++; + } + } + } + if (lbl_1_bss_1A0C.unk2CC == 1) { + var_r29 = lbl_1_bss_1A0C.unk2D0; + for (i = 0; i < 4; i++) { + sp24[0] = GWPlayer[sp74[0][0]].team; + sp24[1] = GWPlayer[sp74[1][0]].team; + sp24[2] = GWPlayer[sp74[2][0]].team; + sp24[3] = GWPlayer[sp74[3][0]].team; + sp54[i][0] = sp74[i][0]; + sp54[i][1] = sp74[i][1]; + } + OSReport("########## Sort Start WIN:%d IDX (%d,%d,%d), (%d,%d,%d), (%d,%d,%d), (%d,%d,%d)\n", var_r29, + sp24[0], sp74[0][0], sp74[0][1], sp24[1], sp74[1][0], sp74[1][1], + sp24[2], sp74[2][0], sp74[2][1], sp24[3], sp74[3][0], sp74[3][1]); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (sp24[j] != -1 && var_r29 == sp24[j]) { + sp24[j] = -1; + sp74[i][0] = sp54[j][0]; + sp74[i][1] = sp54[j][1]; + break; + } + } + if (i == 1) { + var_r29++; + var_r29 %= 2; + } + } + OSReport("########## Sort End WIN:%d IDX %d, %d, %d, %d\n", var_r29, sp74[0][0], sp74[1][0], sp74[2][0], sp74[3][0]); + OSReport("########## Sort End RANK %d, %d, %d, %d,\n", sp74[0][1], sp74[1][1], sp74[2][1], sp74[3][1]); + } + for (i = 0; i < 4; i++) { + fn_1_19590(&lbl_1_bss_1A0C.unk38[i], sp74[i][0], sp74[i][1]); + if (arg0 == sp74[i][0]) { + lbl_1_bss_1A0C.unk04 = i; + } + } +} + +void fn_1_1A008(omObjData* arg0, s32 arg1) { + s32 spDC; + s32 spD8; + s32 spD4; + s32 spD0; + s32 spCC; + s32 spC8; + StructUnk38Bss1A0C* temp_r27; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + // TODO: figure out the actual args of fn_1_15D08 calls. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + temp_r27 = &lbl_1_bss_1A0C.unk38[arg1]; + if (lbl_1_bss_1A0C.unk2CC == 1) { + spD4 = lbl_1_bss_1A0C.unk2D0; + if (arg1 > 1) { + spD4++; + spD4 %= 2; + } + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 140) + spD4); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 142) + spD4); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + if (arg1 <= 1) { + spD4 = 0; + } else { + spD4 = 1; + } + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 100) + spD4); + Hu3DModelHookSet(arg0->model[1], "results_flag04-hook_cubes", arg0->model[3]); + } else { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 98)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 99)); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 100) + temp_r27->unk18); + Hu3DModelHookSet(arg0->model[1], "results_flag04-hook_cubes", arg0->model[3]); + } + arg0->work[0] = HuSprGrpCreate(12); + if (lbl_1_bss_1A0C.unk2CC == 1) { + spD0 = 35; + spCC = 10; + spC8 = 65; + if (arg1 <= 1) { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 81), MEMORY_DEFAULT_NUM)), 900, 0); + } else { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 82), MEMORY_DEFAULT_NUM)), 900, 0); + } + HuSprGrpMemberSet(arg0->work[0], 0, var_r30); + fn_1_15D08(arg0->work[0], 0, 40, spD0 + 36, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 85) + temp_r27->unk10, MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[0], 1, var_r30); + if (arg1 % 2 == 0) { + fn_1_15D08(arg0->work[0], 1, 119, spD0 + 34, 0, 0); + } else { + fn_1_15D08(arg0->work[0], 1, 189, -spD0 + 24, 0, 0); + } + var_r30 = HuSprCreate(lbl_1_bss_18D8[0], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 2, var_r30); + fn_1_15D08(arg0->work[0], 2, 262, spCC + 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 3, var_r30); + fn_1_15D08(arg0->work[0], 3, 312, spCC + 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + spDC = lbl_1_bss_1A0C.unk38[0].unk34[0][0] + lbl_1_bss_1A0C.unk38[1].unk34[0][0]; + spD8 = lbl_1_bss_1A0C.unk38[2].unk34[0][0] + lbl_1_bss_1A0C.unk38[3].unk34[0][0]; + if (arg1 <= 1) { + if (spDC >= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } else { + if (spDC <= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } + HuSprGrpMemberSet(arg0->work[0], var_r28 + 4, var_r30); + } + if (arg1 <= 1) { + var_r29 = lbl_1_bss_1A0C.unk38[0].unk34[0][0] + lbl_1_bss_1A0C.unk38[1].unk34[0][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 4, var_r29, 340, spCC + 11, 26, 36, 0); + } else { + var_r29 = lbl_1_bss_1A0C.unk38[2].unk34[0][0] + lbl_1_bss_1A0C.unk38[3].unk34[0][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 4, var_r29, 340, spCC + 11, 26, 36, 0); + } + var_r30 = HuSprCreate(lbl_1_bss_18D8[1], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 7, var_r30); + fn_1_15D08(arg0->work[0], 7, 262, spC8 + 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 8, var_r30); + fn_1_15D08(arg0->work[0], 8, 312, spC8 + 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + spDC = lbl_1_bss_1A0C.unk38[0].unk34[1][0] + lbl_1_bss_1A0C.unk38[1].unk34[1][0]; + spD8 = lbl_1_bss_1A0C.unk38[2].unk34[1][0] + lbl_1_bss_1A0C.unk38[3].unk34[1][0]; + if (arg1 <= 1) { + if (spDC >= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } else { + if (spDC <= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } + HuSprGrpMemberSet(arg0->work[0], var_r28 + 9, var_r30); + } + if (arg1 <= 1) { + var_r29 = lbl_1_bss_1A0C.unk38[0].unk34[1][0] + lbl_1_bss_1A0C.unk38[1].unk34[1][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 9, var_r29, 340, spC8 + 11, 26, 36, 0); + } else { + var_r29 = lbl_1_bss_1A0C.unk38[2].unk34[1][0] + lbl_1_bss_1A0C.unk38[3].unk34[1][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 9, var_r29, 340, spC8 + 11, 26, 36, 0); + } + } else { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 81) + temp_r27->unk18, MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[0], 0, var_r30); + fn_1_15D08(arg0->work[0], 0, 25, 37, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 85) + temp_r27->unk10, MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[0], 1, var_r30); + fn_1_15D08(arg0->work[0], 1, 87, 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[0], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 2, var_r30); + fn_1_15D08(arg0->work[0], 2, 144, 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 3, var_r30); + fn_1_15D08(arg0->work[0], 3, 178, 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[temp_r27->unk34[0][1]], 900, 0); + HuSprGrpMemberSet(arg0->work[0], (var_r28 + 4), var_r30); + } + fn_1_15DC8(arg0->work[0], 4, temp_r27->unk34[0][0], 190, 11, 26, 36, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[1], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 7, var_r30); + fn_1_15D08(arg0->work[0], 7, 304, 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 8, var_r30); + fn_1_15D08(arg0->work[0], 8, 338, 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[temp_r27->unk34[1][1]], 900, 0); + HuSprGrpMemberSet(arg0->work[0], var_r28 + 9, var_r30); + } + fn_1_15DC8(arg0->work[0], 9, temp_r27->unk34[1][0], 350, 11, 26, 36, 0); + } + lbl_1_bss_18F4[var_r28].unk14 = 1000 + rand8() * 5; +} + +void fn_1_1BEFC(omObjData* arg0, StructBss1530* arg1) { + Mtx sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r29; + + if (lbl_1_bss_1A0C.unk2CC == 1) { + if (arg1->unk08 % 2 == 1) { + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 12; var_r29++) { + HuSprAttrSet(arg0->work[0], var_r29, 4); + } + } + HuSprAttrReset(arg0->work[0], 1, HUSPR_ATTR_DISPOFF); + Hu3DModelPosSet(arg0->model[1], lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].x + 15.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].y + 25.0f - 35.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].z); + } else { + Hu3DModelPosSet(arg0->model[1], lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].x + 15.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].y + 25.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].z); + } + if (Hu3DData[arg0->model[1]].pos.x <= -195.0f) { + Hu3DData[arg0->model[1]].pos.x = -195.0f; + } + Hu3DModelObjMtxGet(arg0->model[1], "results_flag04-hook_flag", sp2C); + Hu3DModelPosSet(arg0->model[2], sp2C[0][3], sp2C[1][3], sp2C[2][3]); + if (arg1->unk0C++ >= arg1->unk14) { + arg1->unk0C = 0; + arg1->unk14 = rand8() * 5 + 1000; + fn_1_1E28(arg0, 2, 2, 0, 0); + } + Hu3DModelRotSet(arg0->model[3], 0.0f, arg1->unk10 += 3, 0.0f); + if (arg1->unk10 >= 360) { + arg1->unk10 -= 360; + } + sp8.x = Hu3DData[arg0->model[1]].pos.x; + sp8.y = lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].y + 25.0f; + sp8.z = Hu3DData[arg0->model[1]].pos.z; + sp20.x = sp8.x + 24.0f; + sp20.y = sp8.y + 40.0f; + sp20.z = sp8.z; + Hu3D3Dto2D(&sp20, 1, &sp14); + HuSprGrpPosSet(arg0->work[0], sp14.x, sp14.y); +} + +void fn_1_1C2F4(void) { + s32 var_r30; + s32 var_r31; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_18F4[var_r30].unk00->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + } + if (lbl_1_bss_1A0C.unk2CC == 1) { + if (var_r30 % 2 == 0) { + for (var_r31 = 0; var_r31 < 12; var_r31++) { + HuSprAttrReset(lbl_1_bss_18F4[var_r30].unk00->work[0], var_r31, HUSPR_ATTR_DISPOFF); + } + } + HuSprAttrReset(lbl_1_bss_18F4[var_r30].unk00->work[0], 1, HUSPR_ATTR_DISPOFF); + } else { + for (var_r31 = 0; var_r31 < 12; var_r31++) { + HuSprAttrReset(lbl_1_bss_18F4[var_r30].unk00->work[0], var_r31, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_18F4[var_r30].unk04 = (void*) fn_1_1BEFC; + } +} + +void fn_1_1C460(void) { + s32 var_r30; + s32 var_r31; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_18F4[var_r30].unk00->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 12; var_r31++) { + HuSprAttrSet(lbl_1_bss_18F4[var_r30].unk00->work[0], var_r31, HUSPR_ATTR_DISPOFF); + } + lbl_1_bss_18F4[var_r30].unk04 = NULL; + } +} + +void fn_1_1C534(omObjData* arg0, s32 arg1) { + StructUnk38Bss1A0C* temp_r25; + s32 var_r22; + s32 i; + s32 j; + + temp_r25 = &lbl_1_bss_1A0C.unk38[arg1]; + arg0->work[1] = HuSprGrpCreate(1); + var_r22 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 122), MEMORY_DEFAULT_NUM)), 700, 0); + HuSprGrpMemberSet(arg0->work[1], 0, var_r22); + HuSprBankSet(arg0->work[1], 0, temp_r25->unk10); + // TODO: figure out the actual args of this fn_1_15D08 call. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + fn_1_15D08(arg0->work[1], 0, 66, 21, 0, 0); + arg0->work[2] = HuSprGrpCreate(0x24); + for (i = 0; i < 12; i++) { + for (j = 0; j < 3; j++) { + var_r22 = HuSprCreate(lbl_1_bss_18E4[temp_r25->unk34[i][1]], 700, 0); + HuSprGrpMemberSet(arg0->work[2], j + i * 3, var_r22); + } + fn_1_15DC8(arg0->work[2], i * 3, temp_r25->unk34[i][0], i * 66, 0, 20, 32, 1); + } + HuSprGrpDrawNoSet(arg0->work[1], 0x7F); + HuSprGrpDrawNoSet(arg0->work[2], 0x7F); +} + +void fn_1_1C914(omObjData* arg0, StructBss1530* arg1) { + s32 i; + s32 j; + s32 var_r28; + + var_r28 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r28 < 0) { + var_r28 = 0; + } + HuSprGrpPosSet(arg0->work[1], 17.0f, arg1->unk08 * 48 + 118); + HuSprGrpPosSet(arg0->work[2], 169 - var_r28 * 66, arg1->unk08 * 48 + 123); + for (i = 0; i < 12; i++) { + for (j = 0; j < 3; j++) { + if (i < var_r28 || i > var_r28 + 5) { + HuSprAttrSet(arg0->work[2], j + i * 3, HUSPR_ATTR_DISPOFF); + } else { + HuSprAttrReset(arg0->work[2], j + i * 3, HUSPR_ATTR_DISPOFF); + } + } + } +} + +void fn_1_1CA98(void) { + s32 i, j, k; + + for (i = 0; i < 4; i++) { + HuSprAttrReset(lbl_1_bss_18F4[i].unk00->work[1], 0, HUSPR_ATTR_DISPOFF); + for (j = 0; j < 12; j++) { + for (k = 0; k < 3; k++) { + HuSprAttrReset(lbl_1_bss_18F4[i].unk00->work[2], k + j * 3, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_18F4[i].unk04 = (void*) fn_1_1C914; + } +} + +void fn_1_1CB7C(void) { + s32 i, j, k; + + for (i = 0; i < 4; i++) { + HuSprAttrSet(lbl_1_bss_18F4[i].unk00->work[1], 0, HUSPR_ATTR_DISPOFF); + for (j = 0; j < 12; j++) { + for (k = 0; k < 3; k++) { + HuSprAttrSet(lbl_1_bss_18F4[i].unk00->work[2], k + j * 3, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_18F4[i].unk04 = NULL; + } +} + +void fn_1_1CC5C(void) { + omObjData* temp_r3; + s32 temp_r31; + + temp_r31 = lbl_1_bss_1A0C.unk18++; + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_18F4[temp_r31].unk00 = temp_r3; + lbl_1_bss_18F4[temp_r31].unk04 = NULL; + lbl_1_bss_18F4[temp_r31].unk08 = temp_r31; + fn_1_1A008(temp_r3, temp_r31); + fn_1_1C534(temp_r3, temp_r31); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_18F4[temp_r31].unk04 != NULL) { + lbl_1_bss_18F4[temp_r31].unk04(temp_r3, &lbl_1_bss_18F4[temp_r31]); + } + } +} + +void fn_1_1CD60(void) { + if (lbl_1_bss_1994.unk00->work[0] != 1) { + fn_1_1E28(lbl_1_bss_1994.unk00, 4, 6, 15, 0); + lbl_1_bss_1994.unk00->work[0] = 1; + lbl_1_bss_1994.unk00->work[1] = 4; + lbl_1_bss_1994.unk00->work[2] = 16; + } +} + +void fn_1_1CDF0(omObjData* arg0) { + s32 sp20[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 46), + DATA_MAKE_NUM(DATADIR_MSTORY3, 40), + DATA_MAKE_NUM(DATADIR_MSTORY3, 52), + DATA_MAKE_NUM(DATADIR_MSTORY3, 58), + DATA_MAKE_NUM(DATADIR_MSTORY3, 64) + }; + s32 sp34[][3] = { + { DATA_MAKE_NUM(DATADIR_MSTORY3, 47), DATA_MAKE_NUM(DATADIR_MSTORY3, 48), DATA_MAKE_NUM(DATADIR_MSTORY3, 49) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 41), DATA_MAKE_NUM(DATADIR_MSTORY3, 42), DATA_MAKE_NUM(DATADIR_MSTORY3, 43) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 53), DATA_MAKE_NUM(DATADIR_MSTORY3, 54), DATA_MAKE_NUM(DATADIR_MSTORY3, 55) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 59), DATA_MAKE_NUM(DATADIR_MSTORY3, 60), DATA_MAKE_NUM(DATADIR_MSTORY3, 61) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 65), DATA_MAKE_NUM(DATADIR_MSTORY3, 66), DATA_MAKE_NUM(DATADIR_MSTORY3, 67) } + }; + s32 i; + + for (i = 0; i < 5; i++) { + arg0->model[i * 3 + 1] = Hu3DModelCreateFile(sp20[i]); + arg0->motion[i * 3 + 1] = Hu3DJointMotionFile(arg0->model[i * 3 + 1], sp34[i][0]); + arg0->motion[i * 3 + 2] = Hu3DJointMotionFile(arg0->model[i * 3 + 1], sp34[i][1]); + arg0->motion[i * 3 + 3] = Hu3DJointMotionFile(arg0->model[i * 3 + 1], sp34[i][2]); + Hu3DModelRotSet(arg0->model[i * 3 + 1], 17.5f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i * 3 + 1], 0.575f, 0.575f, 0.575f); + fn_1_1E28(arg0, i * 3 + 1, i * 3 + 1, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12, 13 }; + + if (i != 3) { + CharModelEffectNpcInit(arg0->model[i * 3 + 1], arg0->motion[i * 3 + 2], 1, sp8[i]); + CharModelEffectEnableSet(sp8[i], 0); + } + } + } +} + +void fn_1_1D124(omObjData* arg0, StructBss1530* arg1) { + s32 i; + + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->model[i * 3 + 1], lbl_1_bss_1A0C.unk288[i].x, lbl_1_bss_1A0C.unk288[i].y, lbl_1_bss_1A0C.unk288[i].z); + if (i == 3) { + Hu3DData[arg0->model[i * 3 + 1]].pos.y += 20.0f; + } + } + if (arg1->unk08++ >= 3000) { + arg1->unk08 = 0; + arg1->unk0C = 1; + lbl_1_bss_19BC.unk08++; + lbl_1_bss_19BC.unk08 %= 2; + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 2, 15, 1); + } + if (arg1->unk0C == 1) { + lbl_1_bss_1A0C.unk288[0].x += -5.0f + 10.0f * lbl_1_bss_19BC.unk08; + if (lbl_1_bss_19BC.unk08 != 0) { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, 90.0f, 5.0f); + if (lbl_1_bss_1A0C.unk288[0].x >= 185.0f) { + arg1->unk0C = 2; + lbl_1_bss_1A0C.unk288[0].x = 185.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 1, 15, 1); + } + } else { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, -90.0f, 5.0f); + if (lbl_1_bss_1A0C.unk288[0].x <= -175.0f) { + arg1->unk0C = 2; + lbl_1_bss_1A0C.unk288[0].x = -175.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 1, 15, 1); + } + } + } else if (arg1->unk0C == 2) { + if (lbl_1_bss_19BC.unk08 != 0) { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, -15.0f, 15.0f); + if (Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y <= -14.9f) { + arg1->unk0C = 0; + } + } else { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, 15.0f, 15.0f); + if (Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y >= 14.9f) { + arg1->unk0C = 0; + } + } + } +} + +void fn_1_1D63C(void) { + s32 i; + + for (i = 0; i < 5; i++) { + Hu3DModelAttrReset(lbl_1_bss_1994.unk00->model[(i * 3) + 1], HU3D_ATTR_DISPOFF); + } + Hu3DModelRotSet(lbl_1_bss_1994.unk00->model[4], 17.5f, 15.0f, 0.0f); + Hu3DModelScaleSet(lbl_1_bss_1994.unk00->model[4], 0.575f, 0.575f, 0.575f); + fn_1_1E28(lbl_1_bss_1994.unk00, 4, 4, 0, 1); + lbl_1_bss_1994.unk00->work[0] = lbl_1_bss_1994.unk00->work[1] = lbl_1_bss_1994.unk00->work[2] = 0; + lbl_1_bss_1994.unk04 = (void*) fn_1_1D124; +} + +void fn_1_1D77C(void) { + s32 i; + + for (i = 0; i < 5; i++) { + Hu3DModelAttrSet(lbl_1_bss_1994.unk00->model[i * 3 + 1], HU3D_ATTR_DISPOFF); + } + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 1, 0, 1); + if (lbl_1_bss_19BC.unk08 != 0) { + lbl_1_bss_1A0C.unk288[0].x = 185.0f; + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = -15.0f; + } else { + lbl_1_bss_1A0C.unk288[0].x = -175.0f; + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = 15.0f; + } + lbl_1_bss_1994.unk0C = 0; + lbl_1_bss_1994.unk04 = NULL; +} + +void fn_1_1D8CC(omObjData* arg0, StructBss1530* arg1) { + if (arg0->work[0] != 0) { + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[4])) { + fn_1_1E28(arg0, 4, arg0->work[1], 15, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } + } +} + +void fn_1_1D964(void) { + Hu3DModelAttrReset(lbl_1_bss_1994.unk00->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_1994.unk00->model[4], -185.0f, -225.0f, 0.0f); + Hu3DModelRotSet(lbl_1_bss_1994.unk00->model[4], 0.0f, 15.0f, 0.0f); + Hu3DModelScaleSet(lbl_1_bss_1994.unk00->model[4], 1.0f, 1.0f, 1.0f); + lbl_1_bss_1994.unk04 = (void*) fn_1_1D8CC; +} + +void fn_1_1DA64(void) { + Hu3DModelAttrSet(lbl_1_bss_1994.unk00->model[4], HU3D_ATTR_DISPOFF); + lbl_1_bss_1994.unk04 = NULL; +} + +void fn_1_1DAAC(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_1994.unk00 = temp_r3; + lbl_1_bss_1994.unk04 = NULL; + fn_1_1CDF0(temp_r3); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1994.unk04 != NULL) { + lbl_1_bss_1994.unk04(temp_r3, &lbl_1_bss_1994); + } + } +} + +void fn_1_1DE4C(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 0.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = 0.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 650.0f; +} diff --git a/src/REL/mstory3Dll/result_seq.c b/src/REL/mstory3Dll/result_seq.c new file mode 100755 index 00000000..b4aa06c9 --- /dev/null +++ b/src/REL/mstory3Dll/result_seq.c @@ -0,0 +1,2928 @@ +#include "REL/mstory3Dll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "msm/msmse.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ char unk08[0xC]; +} StructUnk24Bss1580; // Size 0x14 + +typedef struct { + /* 0x00 */ StructFn352C unk00; + /* 0x34 */ char unk34[0x60]; +} StructUnkC4Bss1580; // Size 0x94 + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ StructUnk24Bss1580 unk24[4]; + /* 0x074 */ char unk74[0x50]; + /* 0x0C4 */ StructUnkC4Bss1580 unkC4[4]; + /* 0x314 */ s32 unk314; + /* 0x318 */ char unk318[0xC]; + /* 0x324 */ s32 unk324; + /* 0x328 */ char unk328[0xC]; + /* 0x334 */ s32 unk334[1]; // array length unknown + /* 0x338 */ char unk338[0xC]; + /* 0x344 */ s32 unk344; + /* 0x348 */ s32 unk348; + /* 0x34C */ char unk34C[4]; +} StructBss1580; // Size 0x350 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ char unk1C[4]; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; +} StructBssC8; // Size 0x38 + +void fn_1_7E88(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_82E0(void); +s32 fn_1_B670(void); +void fn_1_D48C(void); +void fn_1_D718(omObjData* arg0); +void fn_1_D7D8(omObjData* arg0); +void fn_1_FE80(void); +void fn_1_FF7C(s32 arg0); +void fn_1_1036C(omObjData* arg0); +void fn_1_10D74(omObjData* arg0); +void fn_1_11794(omObjData* arg0); +void fn_1_11834(omObjData* arg0); +void fn_1_123D8(omObjData* arg0); +void fn_1_1241C(omObjData* arg0); +void fn_1_12420(omObjData* arg0); +void fn_1_12A98(s32 arg0); +void fn_1_12C08(s32 arg0); +void fn_1_12DAC(void); +void fn_1_13908(void); +void fn_1_130A8(void); +void fn_1_1317C(void); +void fn_1_13A38(omObjData* arg0); +void fn_1_13A3C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_13C78(s32 arg0, s32 arg1, s32 arg2); +void fn_1_13D38(s32 arg0, s32 arg1, s32 arg2); +void fn_1_140A0(void); +void fn_1_15450(s32 arg0); + +StructBss1580 lbl_1_bss_1580; +StructBss1530 lbl_1_bss_1558; +StructBss1530 lbl_1_bss_1530; +StructBss1530 lbl_1_bss_1490[4]; +StructBss1530 lbl_1_bss_1468; +s32 lbl_1_bss_1458[4]; +s32 lbl_1_bss_1448[4]; +s32 lbl_1_bss_1438[4]; +s32 lbl_1_bss_1428[4]; +float lbl_1_bss_1424; +s32 lbl_1_bss_1420; +float lbl_1_bss_1408[3][2]; +StructBssC8 lbl_1_bss_C8[88]; +float lbl_1_bss_C4; +float lbl_1_bss_C0; +float lbl_1_bss_BC; +s32 lbl_1_bss_B8; +s32 lbl_1_bss_B4; +float lbl_1_bss_B0; +float lbl_1_bss_AC; +Process* lbl_1_bss_A8; +s32 lbl_1_bss_68[16]; +u8 lbl_1_bss_5C[0xC]; // unused +s32 lbl_1_bss_58; + +Vec lbl_1_data_130[] = { + { -300.0f, 0.0f, 460.0f }, + { -100.0f, 0.0f, 460.0f }, + { 100.0f, 0.0f, 460.0f }, + { 300.0f, 0.0f, 460.0f } +}; + +HsfanimStruct00 lbl_1_data_160 = { + 60, { 0, 0 }, + 1000.0f, 0.0f, 180.0f, + { 0.0f, -0.009f, 0.0f }, + 30.0f, 0.9f, 20.0f, 0.99f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +HsfanimStruct00 lbl_1_data_1B0 = { + 60, { 0, 0 }, + 1000.0f, 0.0f, 180.0f, + { 0.0f, -0.009f, 0.0f }, + 30.0f, 0.9f, 20.0f, 0.99f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +HsfanimStruct00 lbl_1_data_200 = { + 500, { 0, 0 }, + 0.25f, 0.0f, 30.0f, + { 0.0f, -0.009f, 0.001f }, + 30.0f, 0.9f, 20.0f, 0.999f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +void fn_1_6E34(Process* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 var_r31; + + lbl_1_bss_A8 = arg0; + lbl_1_bss_1580.unk00 = arg1; + lbl_1_bss_1580.unk04 = arg2; + if (arg3 == 1) { + lbl_1_bss_1580.unk08 = 0; + } else { + lbl_1_bss_1580.unk08 = 1; + lbl_1_bss_1580.unk04 = 1; + } + lbl_1_bss_1580.unk14 = fn_1_36E4(); + lbl_1_bss_1580.unk344 = GWSystem.team; + _ClearFlag(FLAG_ID_MAKE(1, 29)); + lbl_1_bss_1580.unk348 = -1; + fn_1_9A0(); + fn_1_290C(lbl_1_bss_A8, fn_1_82E0); + lbl_1_bss_1580.unk1C = fn_1_37C8(lbl_1_bss_1580.unk20 = 0xFF); + fn_1_FF7C(arg4); + fn_1_38B4(); + fn_1_12DAC(); + HuPrcChildCreate(fn_1_FE80, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_140A0, 100, 0x2000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_13908, 200, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_D48C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_7004(s32 arg0, s32 arg1, s32 arg2) { + s32 sp1C[4]; + s32 spC[4]; + s32 temp_r27; + s32 var_r26; + s32 var_r30; + s32 var_r31; + + temp_r27 = lbl_1_bss_1580.unk20; + var_r26 = arg0; + lbl_1_bss_1530.unk04 = (void*) fn_1_D718; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_1490[var_r30].unk04 = (void*) fn_1_1241C; + } + lbl_1_bss_1468.unk04 = (void*) fn_1_13A38; + if (arg2 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp1C[var_r31] = lbl_1_bss_1490[var_r31].unk00->work[0]; + spC[var_r31] = 0xFF; + } + } + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + fn_1_938(); + lbl_1_bss_1580.unk20 = fn_1_5D4(temp_r27, var_r26, var_r30, arg1); + Hu3DGLightColorSet(lbl_1_bss_1580.unk1C, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, 0xFF); + if (arg2 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_7E88(sp1C[var_r31], spC[var_r31], var_r30, arg1, var_r31); + } + } + } + if (arg2 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk00->work[0] = 0; + lbl_1_bss_1490[var_r31].unk00->work[1] = 0; + Hu3DModelAttrSet(lbl_1_bss_1490[var_r31].unk00->model[6], 1); + Hu3DLLightColorSet(lbl_1_bss_1490[var_r31].unk00->model[1], lbl_1_bss_1580.unk24[var_r31].unk00, 0, 0, 0, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[var_r31].unk00->model[2], lbl_1_bss_1580.unk24[var_r31].unk04, 0, 0, 0, 0xFF); + } + } + lbl_1_bss_1530.unk04 = NULL; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_1490[var_r30].unk04 = NULL; + } + lbl_1_bss_1468.unk04 = NULL; +} + +void fn_1_7398(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + float temp_f31; + float temp_f30; + s32 sp10; + s32 spC; + s32 temp_r29; + s32 var_r28; + + sp10 = lbl_1_bss_1490[arg2].unk00->work[0]; + spC = arg0; + Hu3DModelPosSet(lbl_1_bss_1490[arg2].unk00->model[6], lbl_1_data_130[arg2].x, 500.0f + lbl_1_data_130[arg2].y + lbl_1_bss_AC, lbl_1_data_130[arg2].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[arg2].unk00->model[6], 1); + Hu3DModelPosSet(lbl_1_bss_1490[arg3].unk00->model[6], lbl_1_data_130[arg3].x, 500.0f + lbl_1_data_130[arg3].y + lbl_1_bss_AC, lbl_1_data_130[arg3].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[arg3].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg3].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[arg3].unk00->model[6], 1); + for (var_r28 = 0; var_r28 <= arg1; var_r28++) { + fn_1_938(); + temp_f31 = fn_1_6F4(0.0f, 1.5f, var_r28, arg1); + temp_f30 = fn_1_6F4(0.0f, 0.5f, var_r28, arg1); + temp_r29 = fn_1_6F4(0.0f, 128.0f, var_r28, arg1); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f31, 1.25f, temp_f31); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f30); + Hu3DModelScaleSet(lbl_1_bss_1490[arg3].unk00->model[6], temp_f31, 1.25f, temp_f31); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg3].unk00->model[6], temp_f30); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[1], lbl_1_bss_1580.unk24[arg2].unk00, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[2], lbl_1_bss_1580.unk24[arg2].unk04, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg3].unk00->model[1], lbl_1_bss_1580.unk24[arg3].unk00, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg3].unk00->model[2], lbl_1_bss_1580.unk24[arg3].unk04, temp_r29, temp_r29, temp_r29, 0xFF); + } + lbl_1_bss_1490[arg2].unk00->work[1] = 1; + lbl_1_bss_1490[arg3].unk00->work[1] = 1; +} + +void fn_1_79D8(s32 arg0, s32 arg1, s32 arg2) { + float temp_f31; + float temp_f30; + s32 temp_r27; + s32 var_r26; + s32 temp_r29; + s32 var_r30; + + temp_r27 = lbl_1_bss_1490[arg2].unk00->work[0]; + var_r26 = arg0; + Hu3DModelPosSet(lbl_1_bss_1490[arg2].unk00->model[6], lbl_1_data_130[arg2].x, 500.0f + lbl_1_data_130[arg2].y + lbl_1_bss_AC, lbl_1_data_130[arg2].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[arg2].unk00->model[6], 1); + for (var_r30 = 0; var_r30 <= arg1; var_r30++) { + fn_1_938(); + lbl_1_bss_1490[arg2].unk00->work[0] = fn_1_6F4(temp_r27, var_r26, var_r30, arg1); + temp_f31 = fn_1_6F4(0.0f, 1.5f, var_r30, arg1); + temp_f30 = fn_1_6F4(0.0f, 0.5f, var_r30, arg1); + temp_r29 = fn_1_6F4(0.0f, 128.0f, var_r30, arg1); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f31, 1.25f, temp_f31); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f30); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[1], lbl_1_bss_1580.unk24[arg2].unk00, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[2], lbl_1_bss_1580.unk24[arg2].unk04, temp_r29, temp_r29, temp_r29, 0xFF); + } + lbl_1_bss_1490[arg2].unk00->work[1] = 1; +} + +void fn_1_7E88(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + float var_f31; + s32 temp_r31; + + if (lbl_1_bss_1490[arg4].unk00->work[1] != 0) { + lbl_1_bss_1490[arg4].unk00->work[0] = fn_1_5D4(arg0, arg1, arg2, arg3); + var_f31 = fn_1_5D4(0.5f, 0.0f, arg2, arg3); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg4].unk00->model[6], var_f31); + temp_r31 = fn_1_5D4(128.0f, 0.0f, arg2, arg3); + Hu3DLLightColorSet(lbl_1_bss_1490[arg4].unk00->model[1], lbl_1_bss_1580.unk24[arg4].unk00, temp_r31, temp_r31, temp_r31, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg4].unk00->model[2], lbl_1_bss_1580.unk24[arg4].unk04, temp_r31, temp_r31, temp_r31, 0xFF); + } +} + +s32 fn_1_814C(s32 arg0) { + s32 var_r31; + + if (arg0 == 0) { + var_r31 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 100, &lbl_1_data_160); + } else if (arg0 == 1) { + var_r31 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 500, &lbl_1_data_1B0); + } else if (arg0 == 2) { + var_r31 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 250, &lbl_1_data_200); + } + if (arg0 != 2) { + Hu3DParManTimeLimitSet(var_r31, 60); + Hu3DParManAttrSet(var_r31, 4 | 0x40); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31), 1); + } else { + Hu3DParManAttrSet(var_r31, 4 | 0x40); + } + return var_r31; +} + +s32 fn_1_8264(void) { + return fn_1_814C(0); +} + +void fn_1_82E0(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 125.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1750.0f; +} + +void fn_1_836C(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 170.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1700.0f; + fn_1_514C(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); +} + +void fn_1_845C(void) { + StructBss4* var_r31 = &lbl_1_bss_4; + StructBss4 sp28; + float sp8[] = { + 530.0f, 530.0f, 540.0f, 530.0f, + 530.0f, 580.0f, 540.0f, 630.0f + }; + + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + sp28.unk08.x = 100.0f + Hu3DData[lbl_1_bss_1490[0].unk00->model[1]].pos.x; + } else { + sp28.unk08.x = 100.0f + Hu3DData[lbl_1_bss_1490[2].unk00->model[1]].pos.x; + } + } else { + sp28.unk08.x = Hu3DData[lbl_1_bss_1490[lbl_1_bss_1458[1]].unk00->model[1]].pos.x; + lbl_1_bss_B4 = lbl_1_bss_1580.unkC4[lbl_1_bss_1458[1]].unk00.unk10; + } + if (lbl_1_bss_1580.unk344 == 1) { + sp28.unk08.y = 570.0f; + sp28.unk08.z = -700.0f; + sp28.unk20.x = 15.0f; + sp28.unk20.y = 0.0f; + sp28.unk20.z = 0.0f; + sp28.unk38 = 1750.0f; + fn_1_4CC0(var_r31, &sp28, var_r31->unk40++, 120.0f); + } else { + sp28.unk08.y = sp8[lbl_1_bss_B4]; + sp28.unk08.z = -700.0f; + sp28.unk20.x = 15.0f; + sp28.unk20.y = 0.0f; + sp28.unk20.z = 0.0f; + sp28.unk38 = 1600.0f; + fn_1_4CC0(var_r31, &sp28, var_r31->unk40++, 120.0f); + } +} + +void fn_1_8758(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = lbl_1_bss_1424; + sp8.unk08.y = 125.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1250.0f; + sp8.unk38 = 1350.0f; + fn_1_514C(var_r31, &sp8, var_r31->unk40++, 10.0f, 5.0f); +} + +void fn_1_8858(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 170.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1700.0f; + fn_1_514C(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_8948(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 300.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1000.0f; + fn_1_4400(var_r31, &sp8, var_r31->unk40++, 60.0f, 10.0f); +} + +void fn_1_8A38(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = -300.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1000.0f; + fn_1_4400(var_r31, &sp8, var_r31->unk40++, 180.0f, 10.0f); +} + +void fn_1_8B28(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 170.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1700.0f; + fn_1_4400(var_r31, &sp8, var_r31->unk40++, 120.0f, 10.0f); +} + +void fn_1_8C18(void) { + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8948); + fn_1_958(120); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8A38); + fn_1_958(210); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8B28); + fn_1_958(120); +} + +void fn_1_8C94(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + s32 var_r28 = 0; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 var_r31; + + while (TRUE) { + fn_1_938(); + if (HuPadBtnDown[0] & PAD_TRIGGER_R) { + var_r28++; + var_r28 %= 2; + } + if (var_r28 == 0) { + continue; + } + printWin(var_r30, var_r29, 220, 200, &sp10); + if (lbl_1_bss_1558.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_1530.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_1468.unk04 == NULL) { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE"); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 == NULL) { + print8(var_r30, var_r29 + 30 + var_r31 * 10, 1.0f, "PROC_PLAYER%d -> FALSE", var_r31); + } else { + print8(var_r30, var_r29 + 30 + var_r31 * 10, 1.0f, "PROC_PLAYER%d -> TRUE", var_r31); + } + } + print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1580.unk00, lbl_1_bss_1580.unk0C, lbl_1_bss_1580.unk14); + print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + print8(var_r30, var_r29 + 110 + var_r31 * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk00, lbl_1_bss_1580.unkC4[var_r31].unk00.unk04, lbl_1_bss_1580.unkC4[var_r31].unk00.unk08, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk0C, lbl_1_bss_1580.unkC4[var_r31].unk00.unk14, lbl_1_bss_1580.unkC4[var_r31].unk00.unk10); + } + print8(var_r30, var_r29 + 150, 1.0f, "NO) RNK:STA:COI:MGS:COS:HAS"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + print8(var_r30, var_r29 + 160 + var_r31 * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk18, lbl_1_bss_1580.unkC4[var_r31].unk00.unk20, lbl_1_bss_1580.unkC4[var_r31].unk00.unk1C, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk24, lbl_1_bss_1580.unkC4[var_r31].unk00.unk28, lbl_1_bss_1580.unkC4[var_r31].unk00.unk2C); + } + } +} + +void fn_1_9140(void) { + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + fn_1_9C4(); + CharModelKill(-1); + MGSeqKillAll(); + HuAudSStreamAllStop(); + msmSeStopAll(0, 1000); + omOvlGotoEx(OVL_MSTORY3, 1, 1, 0); +} + +void fn_1_91C8(void) { + lbl_1_bss_58 = HuAudSeqPlay(0x31); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } +} + +void fn_1_9220(void) { + Vec sp14 = { -320.0f, 0.0f, 910.0f }; + + fn_1_958(60); + lbl_1_bss_1580.unk10 = fn_1_1624(1, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][0]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_836C); + fn_1_1E28(lbl_1_bss_1530.unk00, 2, 2, 0, 0); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 2, 15, 1); + fn_1_2DD4(lbl_1_bss_1468.unk00, 1, sp14, 30.0f, 60.0f, 10.0f); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 1, 15, 1); + fn_1_2280(lbl_1_bss_1530.unk00, 2, 2, 0); +} + +void fn_1_93D0(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13A3C(lbl_1_bss_1580.unk10, 1, -1, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + temp_r31->unk04 = 0; +} + +void fn_1_9488(void) { + s32 var_r31; + + lbl_1_bss_1530.unk04 = (void*) fn_1_93D0; + do { + fn_1_938(); + } while (lbl_1_bss_1580.unk18 != 99); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_1036C; + lbl_1_bss_1490[var_r31].unk18 = lbl_1_bss_1490[var_r31].unk1C = 0; + } + fn_1_12A98(0); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1448[var_r31]].unk00.unk20 != 0) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk1C = 1; + } + } + HuAudFXPlay(0xB9); + do { + fn_1_938(); + } while (lbl_1_bss_1530.unk04 != NULL); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 1; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk18 != 2) { + break; + } + } + } while (var_r31 < 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 3; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 != NULL) { + break; + } + } + } while (var_r31 < 4); +} + +void fn_1_96B0(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13A3C(lbl_1_bss_1580.unk10, 2, -1, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + temp_r31->unk04 = 0; +} + +void fn_1_9768(void) { + s32 var_r31; + + lbl_1_bss_1530.unk04 = (void*) fn_1_96B0; + do { + fn_1_938(); + } while (lbl_1_bss_1580.unk18 != 99); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_10D74; + lbl_1_bss_1490[var_r31].unk18 = lbl_1_bss_1490[var_r31].unk1C = 0; + } + fn_1_12A98(1); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1448[var_r31]].unk00.unk1C != 0) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk1C = 1; + } + } + HuAudFXPlay(0xB8); + do { + fn_1_938(); + } while (lbl_1_bss_1530.unk04 != NULL); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 1; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk18 != 2) { + break; + } + } + } while (var_r31 < 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 3; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 != NULL) { + break; + } + } + } while (var_r31 < 4); +} + +void fn_1_9990(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + HuAudFXPlay(0x9A); + fn_1_13A3C(lbl_1_bss_1580.unk10, lbl_1_bss_1420, -1, 4); + fn_1_1AB0(lbl_1_bss_1580.unk10); + temp_r31->unk04 = 0; +} + +void fn_1_9A08(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + fn_1_958(60); + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + temp_r31->unk04 = 0; +} + +void fn_1_9A64(s32 arg0) { + s32 var_r28; + s32 var_r27; + s32 var_r30; + s32 var_r31; + + var_r28 = 9999; + var_r27 = -1; + lbl_1_bss_1420 = arg0; + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13C78(lbl_1_bss_1580.unk10, arg0 * 3 + 3, 3); + fn_1_12C08(arg0); + lbl_1_bss_1424 = 0.0f; + switch (lbl_1_bss_1458[0]) { + case 1: + lbl_1_bss_1424 = lbl_1_data_130[lbl_1_bss_1448[0]].x; + break; + case 2: + lbl_1_bss_1424 = (lbl_1_data_130[lbl_1_bss_1448[0]].x + lbl_1_data_130[lbl_1_bss_1448[1]].x) / 2; + fn_1_13C78(lbl_1_bss_1580.unk10, arg0 * 3 + 4, 3); + break; + case 3: + for (var_r31 = 0; var_r31 < 3; var_r31++) { + if (var_r28 >= lbl_1_bss_1448[var_r31]) { + var_r28 = lbl_1_bss_1448[var_r31]; + } + if (var_r27 <= lbl_1_bss_1448[var_r31]) { + var_r27 = lbl_1_bss_1448[var_r31]; + } + } + lbl_1_bss_1424 = (lbl_1_data_130[var_r27].x + lbl_1_data_130[var_r28].x) / 2; + fn_1_13C78(lbl_1_bss_1580.unk10, arg0 * 3 + 5, 3); + break; + case 4: + break; + } + fn_1_1AB0(lbl_1_bss_1580.unk10); + HuAudSeqPause(lbl_1_bss_58, 1, 1000); + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + fn_1_7004(0x40, 30, 0); + fn_1_958(60); + if (lbl_1_bss_1458[0] < 4) { + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8758); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r31 == lbl_1_bss_1448[var_r30]) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_11834; + lbl_1_bss_1490[var_r31].unk18 = 0; + break; + } + } + if (var_r30 == 4) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_11794; + lbl_1_bss_1490[var_r31].unk18 = 0; + } + } + } else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_11794; + lbl_1_bss_1490[var_r31].unk18 = 0; + } + } + if (lbl_1_bss_1458[0] != 4) { + lbl_1_bss_1580.unk10 = fn_1_1624(1, 0, 21, 2, lbl_1_bss_1580.unk14); + } else { + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + } + if (lbl_1_bss_1458[0] <= 3) { + HuAudFXPlay(0x9F); + } + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + switch (lbl_1_bss_1458[0]) { + case 1: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + lbl_1_bss_1420 = 12; + lbl_1_bss_1530.unk04 = (void*) fn_1_9990; + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + break; + case 2: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + lbl_1_bss_1420 = 13; + lbl_1_bss_1530.unk04 = (void*) fn_1_9990; + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + break; + case 3: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[2], 2); + lbl_1_bss_1420 = 14; + lbl_1_bss_1530.unk04 = (void*) fn_1_9990; + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + break; + case 4: + HuAudFXFadeOut(lbl_1_bss_68[0], 500); + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1448[0]].unk00.unk2C == 0 && arg0 == 2) { + fn_1_13C78(lbl_1_bss_1580.unk10, 26, 3); + } else { + fn_1_13C78(lbl_1_bss_1580.unk10, 15, 3); + } + fn_1_1AB0(lbl_1_bss_1580.unk10); + break; + } + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 1; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk04 != NULL) { + break; + } + } + } while (var_r31 < lbl_1_bss_1458[0]); + lbl_1_bss_1580.unk18 = 1; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_1490[var_r31].unk00->model[1], HU3D_MOTATTR_PAUSE); + } + fn_1_958(10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + do { + fn_1_938(); + } while (lbl_1_bss_1530.unk04 != NULL); + fn_1_12DAC(); + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8858); + fn_1_7004(0xFF, 30, 1); + fn_1_958(60); +} + +s32 fn_1_A314(void) { + s32 var_r31 = 0; + + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x10, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + fn_1_12DAC(); + fn_1_130A8(); + if (lbl_1_bss_1580.unk344 == 1) { + var_r31 = fn_1_B670(); + } + if (var_r31 != -1 && lbl_1_bss_1458[0] <= 1) { + HuAudSeqFadeOut(lbl_1_bss_58, 1000); + } else { + HuAudSeqPause(lbl_1_bss_58, 1, 1000); + } + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + lbl_1_bss_B0 = 1.0f; + lbl_1_bss_1530.unk04 = (void*) fn_1_D7D8; + fn_1_7004(0x40, 30, 0); + fn_1_8C18(); + lbl_1_bss_AC = 125.0f; + return var_r31; +} + +void fn_1_A4F0(void) { + s32 var_r31; + + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + HuAudFXFadeOut(lbl_1_bss_68[0], 1000); + lbl_1_bss_B0 = 0.0f; + fn_1_7004(0xFF, 30, 1); + fn_1_958(60); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][1]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x11, 3); + switch (lbl_1_bss_1458[0]) { + case 1: + break; + case 2: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + fn_1_13C78(lbl_1_bss_1580.unk10, 13, 3); + break; + case 3: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[2], 2); + fn_1_13C78(lbl_1_bss_1580.unk10, 14, 3); + break; + case 4: + fn_1_13C78(lbl_1_bss_1580.unk10, 0x12, 3); + break; + } + fn_1_13C78(lbl_1_bss_1580.unk10, 0x13, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1438[var_r31] = lbl_1_bss_1428[var_r31] = -1; + } + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk04 = (void*) fn_1_123D8; + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 0; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 != 1) { + break; + } + } + } while (var_r31 < lbl_1_bss_1458[0]); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 2; + } + fn_1_958(0x96); + fn_1_1317C(); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1458[1], 0); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x14, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1458[1] == lbl_1_bss_1448[var_r31]) { + fn_1_1E28(lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk00, 1, 14, 15, 0); + } else { + fn_1_1E28(lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk00, 1, 15, 15, 0); + } + } + fn_1_958(0x23); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + fn_1_958(0x55); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][3]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x15, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + HuAudSeqFadeOut(lbl_1_bss_58, 1000); + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + lbl_1_bss_B0 = 1.0f; + fn_1_7004(0x40, 30, 0); + fn_1_8C18(); +} + +void fn_1_ABAC(void) { + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_12420; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 != NULL) { + break; + } + } + } while (var_r31 < 4); + lbl_1_bss_B0 = 0.0f; + fn_1_958(15); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1580.unkC4[var_r31].unk00.unk18 == 1) { + break; + } + } + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_7398(0xFF, 5, 0, 1); + } else { + fn_1_7398(0xFF, 5, 2, 3); + } + } else { + fn_1_79D8(0xFF, 5.0f, var_r31); + } + HuAudFXPlay(0x9F); + HuAudSeqPlay(0x32); + fn_1_958(30); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[0].unk00.unk10, lbl_1_bss_1490[0].unk00->motion[3], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[1].unk00.unk10, lbl_1_bss_1490[1].unk00->motion[3], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[2].unk00.unk10, lbl_1_bss_1490[2].unk00->motion[4], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[3].unk00.unk10, lbl_1_bss_1490[3].unk00->motion[4], 0); + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 3, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 3, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 4, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 4, 15, 0); + lbl_1_bss_1580.unk0C = 0; + } else { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[0].unk00.unk10, lbl_1_bss_1490[0].unk00->motion[4], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[1].unk00.unk10, lbl_1_bss_1490[1].unk00->motion[4], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[2].unk00.unk10, lbl_1_bss_1490[2].unk00->motion[3], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[3].unk00.unk10, lbl_1_bss_1490[3].unk00->motion[3], 0); + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 4, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 4, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 3, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 3, 15, 0); + lbl_1_bss_1580.unk0C = 2; + } + } else if (lbl_1_bss_1580.unkC4[var_r31].unk00.unk18 == 1) { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[var_r31].unk00.unk10, lbl_1_bss_1490[var_r31].unk00->motion[3], 0); + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 3, 15, 0); + lbl_1_bss_1580.unk0C = var_r31; + } else { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[var_r31].unk00.unk10, lbl_1_bss_1490[var_r31].unk00->motion[4], 0); + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 4, 15, 0); + } + GWPlayer[lbl_1_bss_1580.unkC4[var_r31].unk00.unk00].rank = lbl_1_bss_1580.unkC4[var_r31].unk00.unk18 - 1; + } + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_13D38(lbl_1_bss_1580.unk10, 0, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 1, 1); + _SetFlag(FLAG_ID_MAKE(1, 29)); + } else { + fn_1_13D38(lbl_1_bss_1580.unk10, 2, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 3, 1); + } + fn_1_13C78(lbl_1_bss_1580.unk10, 0x19, 5); + } else { + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1458[1], 0); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x16, 5); + } + fn_1_1AB0(lbl_1_bss_1580.unk10); +} + +s32 fn_1_B670(void) { + s32 var_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + + var_r31 = 1; + temp_r30 = lbl_1_bss_1580.unkC4[0].unk00.unk20 + lbl_1_bss_1580.unkC4[1].unk00.unk20; + temp_r29 = lbl_1_bss_1580.unkC4[2].unk00.unk20 + lbl_1_bss_1580.unkC4[3].unk00.unk20; + temp_r28 = lbl_1_bss_1580.unkC4[0].unk00.unk1C + lbl_1_bss_1580.unkC4[1].unk00.unk1C; + temp_r27 = lbl_1_bss_1580.unkC4[2].unk00.unk1C + lbl_1_bss_1580.unkC4[3].unk00.unk1C; + if (temp_r30 > temp_r29) { + lbl_1_bss_1580.unk348 = 0; + } else if (temp_r30 < temp_r29) { + lbl_1_bss_1580.unk348 = 1; + } else if (temp_r28 > temp_r27) { + lbl_1_bss_1580.unk348 = 0; + } else if (temp_r28 < temp_r27) { + lbl_1_bss_1580.unk348 = 1; + } else { + var_r31 = -1; + } + return var_r31; +} + +void fn_1_B788(void) { + s32 var_r31; + + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + HuAudFXFadeOut(lbl_1_bss_68[0], 1000); + lbl_1_bss_B0 = 0.0f; + fn_1_7004(0xFF, 30, 1); + fn_1_958(60); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][1]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x17, 3); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x13, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1438[var_r31] = lbl_1_bss_1428[var_r31] = -1; + } + lbl_1_bss_1458[0] = 2; + lbl_1_bss_1448[0] = 0; + lbl_1_bss_1448[1] = 2; + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk04 = (void*) fn_1_123D8; + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 0; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 != 1) { + break; + } + } + } while (var_r31 < lbl_1_bss_1458[0]); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 2; + } + fn_1_958(150); + if (lbl_1_bss_1428[0] > lbl_1_bss_1428[2]) { + lbl_1_bss_1580.unk348 = 0; + } else { + lbl_1_bss_1580.unk348 = 1; + } + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_13D38(lbl_1_bss_1580.unk10, 0, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 1, 1); + } else { + fn_1_13D38(lbl_1_bss_1580.unk10, 2, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 3, 1); + } + fn_1_13C78(lbl_1_bss_1580.unk10, 0x18, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 14, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 14, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 15, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 15, 15, 0); + } else { + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 15, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 15, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 14, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 14, 15, 0); + } + } + fn_1_958(35); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + fn_1_958(85); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][3]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x15, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + HuAudSeqFadeOut(lbl_1_bss_58, 1000); + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + lbl_1_bss_B0 = 1.0f; + fn_1_7004(0x40, 30, 0); + fn_1_8C18(); +} + +void fn_1_BE5C(void) { + float var_f31; + + var_f31 = fn_1_878(0.0f, 0.1f, lbl_1_bss_B8, 180.0f); + Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y += var_f31; + lbl_1_bss_B8++; + if (lbl_1_bss_B8 >= 180) { + lbl_1_bss_B8 -= 180; + } +} + +void fn_1_BF60(void) { + float temp_f1; + + temp_f1 = fn_1_878(1.0f, 1.1f, lbl_1_bss_B8, 60.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[23], temp_f1, temp_f1, 1.0f); + lbl_1_bss_B8++; + if (lbl_1_bss_B8 >= 60) { + lbl_1_bss_B8 -= 60; + } +} + +s32 lbl_1_data_364 = -1; +s32 lbl_1_data_368 = -1; // unused + +void fn_1_C060(float arg8) { + float sp20[] = { + 50.0f, 50.0f, 60.0f, 50.0f, + 50.0f, 80.0f, 60.0f, 120.0f + }; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float temp_f29; + float var_f28; + float temp_f27; + float var_f26; + s32 var_r31; + + lbl_1_bss_BC = arg8; + fn_1_938(); + var_f31 = arg8; + var_f30 = 0.0f; + temp_f29 = 3600.0f; + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[20], var_f31, 1000.0f, 460.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[20], 0.5f, 0.5f, 0.5f); + Hu3DModelAttrReset(lbl_1_bss_1530.unk00->model[20], HU3D_ATTR_DISPOFF); + fn_1_1E28(lbl_1_bss_1530.unk00, 20, 20, 0, 2); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[21], var_f31, 1000.0f, 460.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[21], 0.5f, 0.5f, 0.5f); + fn_1_1E28(lbl_1_bss_1530.unk00, 21, 21, 0, 2); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[22], var_f31, 1000.0f, 460.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[22], 0.5f, 0.5f, 0.5f); + Hu3DMotionShapeSpeedSet(lbl_1_bss_1530.unk00->model[22], 2.0f); + Hu3DMotionSpeedSet(lbl_1_bss_1530.unk00->model[22], 2.0f); + Hu3DMotionShiftSpeedSet(lbl_1_bss_1530.unk00->model[22], 2.0f); + fn_1_1E28(lbl_1_bss_1530.unk00, 22, 22, 0, 2); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[23], 0.0f, 0.0f, 1.0f); + Hu3DModelAttrSet(lbl_1_bss_1530.unk00->model[23], HU3D_ATTR_DISPOFF); + fn_1_958(60); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_845C); + for (var_r31 = 0; var_r31 <= 120; var_r31++) { + fn_1_938(); + if (lbl_1_bss_1580.unk344 == 0) { + var_f30 = fn_1_6F4(1000.0f, 250.0f + sp20[lbl_1_bss_1580.unkC4[lbl_1_bss_1458[1]].unk00.unk10], var_r31, 120.0f); + } else { + var_f30 = fn_1_6F4(1000.0f, 350.0f, var_r31, 120.0f); + } + temp_f29 = fn_1_6F4(1800.0f, 0.0f, var_r31, 120.0f); + var_f28 = fn_1_6F4(1.0f, 0.0f, var_r31, 120.0f); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[20], var_f31, var_f30, 460.0f); + Hu3DModelRotSet(lbl_1_bss_1530.unk00->model[20], 0.0f, temp_f29, 0.0f); + } + lbl_1_bss_1530.unk04 = (void*) fn_1_BE5C; + fn_1_958(30); + fn_1_1E28(lbl_1_bss_1530.unk00, 20, 20, 0, 0); + fn_1_958(30); + HuAudFXPlay(0x33B); + fn_1_958(30); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[22], var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y - 10.0f, 460.0f); + Hu3DModelAttrReset(lbl_1_bss_1530.unk00->model[22], HU3D_ATTR_DISPOFF); + fn_1_1E28(lbl_1_bss_1530.unk00, 22, 22, 0, 0); + sp14.x = var_f31; + sp14.y = Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y; + sp14.z = 460.0f; + sp8.x = 288.0f; + sp8.y = 100.0f; + sp8.z = 500.0f; + fn_1_1DED8(DATA_MAKE_NUM(DATADIR_MSTORY3, 0), &sp14, &sp8, 100); + fn_1_1E0F4(); + fn_1_958(15); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[0].unk00.unk10, 0x12B); + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[1].unk00.unk10, 0x12B); + } else { + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[2].unk00.unk10, 0x12B); + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[3].unk00.unk10, 0x12B); + } + } else { + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[lbl_1_bss_1458[1]].unk00.unk10, 0x12B); + } + HuAudFXPlay(0xBA); + HuAudFXPlay(0x9A); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[21], var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y, 510.0f); + Hu3DModelAttrReset(lbl_1_bss_1530.unk00->model[21], HU3D_ATTR_DISPOFF); + fn_1_1E28(lbl_1_bss_1530.unk00, 21, 21, 0, 0); + fn_1_958(5); + lbl_1_data_364 = fn_1_814C(1); + Hu3DParManPosSet(lbl_1_data_364, var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[21]].pos.y, 510.0f); + Hu3DModelAttrSet(lbl_1_bss_1530.unk00->model[20], HU3D_ATTR_DISPOFF); + lbl_1_bss_C0 = 1.0f; + for (var_r31 = 0; var_r31 <= 30; var_r31++) { + fn_1_938(); + temp_f27 = fn_1_5D4(0.0f, 1.0f, var_r31, 30.0f); + var_f30 = fn_1_5D4(0.0f, 75.0f, var_r31, 30.0f); + var_f26 = fn_1_5D4(550.0f, 640.0f, var_r31, 30.0f); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[23], var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y - var_f30, var_f26); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[23], temp_f27, temp_f27, 1.0f); + var_f28 = fn_1_5D4(1.0f, 0.0f, var_r31, 30.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1530.unk00->model[22], var_f28); + } + lbl_1_bss_B8 = 0; + lbl_1_bss_1530.unk04 = (void*) fn_1_BF60; + fn_1_958(30); + Hu3DParManKill(lbl_1_data_364); + lbl_1_data_364 = -1; + fn_1_958(240); + fn_1_1834(MAKE_MESSID(36, 7), 0); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + if (lbl_1_bss_1580.unkC4[0].unk00.unk08 == 1 && lbl_1_bss_1580.unkC4[1].unk00.unk08 == 1) { + fn_1_958(30); + } else { + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1580.unkC4[0].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[0].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + if (lbl_1_bss_1580.unkC4[1].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[1].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + } + } + } else { + if (lbl_1_bss_1580.unkC4[2].unk00.unk08 == 1 && lbl_1_bss_1580.unkC4[3].unk00.unk08 == 1) { + fn_1_958(30); + } else { + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1580.unkC4[0].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[0].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + if (lbl_1_bss_1580.unkC4[1].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[1].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + } + } + } + } else if (lbl_1_bss_1580.unk08 == 0) { + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1580.unk0C].unk00.unk08 != 1) { + fn_1_2420(lbl_1_bss_1580.unkC4[lbl_1_bss_1580.unk0C].unk00.unk14, PAD_BUTTON_A); + } else { + fn_1_958(30); + } + } else { + fn_1_2420(0, PAD_BUTTON_A); + } + HuAudFXPlay(0x1C); +} + +void fn_1_CE6C(omObjData* arg0) { + StructBss1530* sp8 = arg0->data; + s32 var_r31; + + fn_1_91C8(); + fn_1_9220(); + fn_1_9488(); + fn_1_9768(); + if (lbl_1_bss_1580.unk04 != 0) { + fn_1_9A64(0); + fn_1_9A64(1); + fn_1_9A64(2); + } + var_r31 = fn_1_A314(); + if (lbl_1_bss_1580.unk344 == 1) { + if (var_r31 == -1) { + fn_1_B788(); + } + } else if (lbl_1_bss_1458[0] > 1) { + fn_1_A4F0(); + } + fn_1_ABAC(); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_C060(lbl_1_data_130[0].x + 100.0f); + } else { + fn_1_C060(lbl_1_data_130[2].x + 100.0f); + } + } else { + fn_1_C060(lbl_1_data_130[lbl_1_bss_1458[1]].x); + } + fn_1_958(60); + fn_1_9140(); +} + +void fn_1_D48C(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_1558.unk00 = temp_r3; + lbl_1_bss_1558.unk04 = (void*) fn_1_CE6C; + lbl_1_bss_1558.unk00->data = &lbl_1_bss_1558; + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1558.unk04 != NULL) { + lbl_1_bss_1558.unk04(temp_r3); + } + } +} + +void fn_1_D538(omObjData* arg0) { + float sp8; + float var_f30; + float var_f31; + StructBss1530* temp_r31; + s32 var_r30; + s32 var_r29; + + temp_r31 = arg0->data; + var_f31 = 1.75f; + sp8 = 0.5f; + var_r29 = 0; + HuAudFXPlay(0xBA); + HuAudFXPlay(0x9A); + lbl_1_bss_1580.unk324 = 1; + espDispOn(temp_r31->unk14); + espScaleSet(temp_r31->unk14, 0.0f, 0.0f); + for (var_r30 = 0; var_r30 < 120; var_r30++) { + fn_1_938(); + if (var_r30 < 60) { + var_f30 = fn_1_6F4(0.0f, 1.75f, var_r30, 60.0f); + } else { + var_f30 = fn_1_7BC(var_f31, 1.0f, var_r29, 15.0f); + var_r29++; + if (var_r29 == 15) { + if (var_f31 > 1.25f) { + var_f31 -= 0.1f; + } + var_r29 = 0; + } + } + espScaleSet(temp_r31->unk14, var_f30, var_f30); + } + temp_r31->unk04 = 0; +} + +void fn_1_D718(omObjData* arg0) { + float temp_f31; + + temp_f31 = lbl_1_bss_1580.unk20 / 255.0f; + Hu3DModelAmbSet(arg0->model[1], temp_f31, temp_f31, temp_f31); + Hu3DModelAmbSet(arg0->model[2], temp_f31, temp_f31, temp_f31); + Hu3DModelAmbSet(arg0->model[3], temp_f31, temp_f31, temp_f31); +} + +float lbl_1_data_36C[] = { 0.0f, 120.0f, 240.0f }; + +void fn_1_D7D8(omObjData* arg0) { + s32 var_r30; + + if (lbl_1_bss_B0 == 1.0f) { + Hu3DModelAttrReset(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[6], HU3D_ATTR_DISPOFF); + lbl_1_bss_C4 += 0.033333335f; + if (lbl_1_bss_C4 >= 0.5f) { + lbl_1_bss_C4 = 0.5f; + } + } else { + if (lbl_1_bss_B0 == 0.0f) { + lbl_1_bss_C4 -= 0.033333335f; + if (lbl_1_bss_C4 <= 0.0f) { + lbl_1_bss_C4 = 0.0f; + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + return; + } + } else { + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + return; + } + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + Hu3DModelTPLvlSet(arg0->model[var_r30 + 4], lbl_1_bss_C4); + Hu3DModelRotSet(arg0->model[var_r30 + 4], 0.0f, 0.0f, lbl_1_bss_1408[var_r30][1]); + lbl_1_bss_1408[var_r30][0] = 10.0 * cosd(11.0f * lbl_1_data_36C[var_r30]); + lbl_1_bss_1408[var_r30][1] = 30.0 * sind(8.0f * lbl_1_data_36C[var_r30]); + if ((lbl_1_data_36C[var_r30] += 0.4f) >= 360.0f) { + lbl_1_data_36C[var_r30] -= 360.0f; + } + } +} + +void fn_1_DB68(omObjData* arg0, s32 arg1, s32 arg2) { + s32 sp8[] = { DATA_MAKE_NUM(DATADIR_MSTORY3, 6), DATA_MAKE_NUM(DATADIR_MSTORY3, 5) }; + s32 var_r30; + + if (arg2 < 5) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 4)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1E28(arg0, 1, 0, 0, 2); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 8)); + arg0->model[3] = Hu3DModelCreateFile(sp8[arg1]); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[3]); + fn_1_1E28(arg0, 3, 3, 0, 1); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + } else { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 7)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 8)); + arg0->model[3] = Hu3DModelCreateFile(sp8[arg1]); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1E28(arg0, 1, 3, 0, 1); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_story-base"); + } + for (var_r30 = 4; var_r30 < 7; var_r30++) { + arg0->model[var_r30] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 11)); + Hu3DModelTPLvlSet(arg0->model[var_r30], 0.0f); + Hu3DModelPosSet(arg0->model[var_r30], -200.0f + 200.0f * (var_r30 - 4), 750.0f, 500.0f); + Hu3DModelScaleSet(arg0->model[var_r30], 1.25f, 2.0f, 1.25f); + Hu3DModelAttrSet(arg0->model[var_r30], HU3D_ATTR_DISPOFF); + } + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY3, 9)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY3, 10)); + lbl_1_bss_1530.unk14 = espEntry(DATA_MAKE_NUM(DATADIR_MSTORY3, 30), 0, 0); + espPosSet(lbl_1_bss_1530.unk14, 288.0f, 110.0f); + espDispOff(lbl_1_bss_1530.unk14); + fn_1_1E28(arg0, 2, 2, 0, 2); + fn_1_35C8(arg0->model[1]); + fn_1_35C8(arg0->model[2]); + fn_1_35C8(arg0->model[3]); + arg0->model[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 31) + arg2); + arg0->motion[20] = Hu3DMotionIDGet(arg0->model[20]); + Hu3DModelPosSet(arg0->model[20], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[20], HU3D_ATTR_DISPOFF); + fn_1_1E28(arg0, 20, 20, 0, 2); + arg0->model[21] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 37)); + arg0->motion[21] = Hu3DMotionIDGet(arg0->model[21]); + Hu3DModelPosSet(arg0->model[21], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[21], HU3D_ATTR_DISPOFF); + fn_1_1E28(arg0, 21, 21, 0, 2); + arg0->model[22] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 38)); + arg0->motion[22] = Hu3DMotionIDGet(arg0->model[22]); + Hu3DModelPosSet(arg0->model[22], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[22], HU3D_ATTR_DISPOFF); + fn_1_1E28(arg0, 22, 22, 0, 2); + arg0->model[23] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 39)); + Hu3DModelPosSet(arg0->model[23], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[23], HU3D_ATTR_DISPOFF); +} + +void fn_1_E160(omObjData* arg0) { + s32 var_r28; + s32 var_r29; + s32 var_r31; + + if (lbl_1_bss_C0 == 0.0f) { + return; + } + Hu3DGLightColorSet(lbl_1_bss_1580.unk1C, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, 0xFF); + lbl_1_bss_1580.unk20++; + if (lbl_1_bss_1580.unk20 >= 128) { + lbl_1_bss_1580.unk20 = 128; + } + for (var_r31 = 1; var_r31 < 80; var_r31++) { + switch (lbl_1_bss_C8[var_r31].unk00) { + case 0: + lbl_1_bss_C8[var_r31].unk30 = Hu3DData[arg0->model[var_r31]].pos.y = 450.0f + rand8() % 150; + lbl_1_bss_C8[var_r31].unk00 = 1; + break; + case 3: + lbl_1_bss_C8[var_r31].unk30 = Hu3DData[arg0->model[var_r31]].pos.y = 500.0f; + /* fallthrough */ + case 1: + if (var_r31 % 3 != 0) { + var_r28 = rand8() % 4; + } else { + var_r28 = 5; + } + switch (var_r28) { + case 0: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 1.0f, 1.0f); + break; + case 1: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 0.0f, 0.0f); + break; + case 2: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 1.0f, 0.0f); + break; + case 3: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 0.0f, 1.0f); + break; + case 5: + break; + } + Hu3DModelAttrReset(arg0->model[var_r31], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_1580.unk344 == 0) { + lbl_1_bss_C8[var_r31].unk2C = Hu3DData[arg0->model[var_r31]].pos.x = -50.0f + lbl_1_bss_BC + rand8() % 100; + } else { + lbl_1_bss_C8[var_r31].unk2C = Hu3DData[arg0->model[var_r31]].pos.x = -100.0f + lbl_1_bss_BC + rand8() % 200; + } + lbl_1_bss_C8[var_r31].unk34 = Hu3DData[arg0->model[var_r31]].pos.z = 460.0f; + Hu3DData[arg0->model[var_r31]].rot.x = rand8(); + Hu3DData[arg0->model[var_r31]].rot.y = rand8(); + Hu3DData[arg0->model[var_r31]].rot.z = rand8(); + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) * -1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk00 = 2; + break; + case 2: + if (lbl_1_bss_C8[var_r31].unk04-- <= 0) { + lbl_1_bss_C8[var_r31].unk04 = rand8() % 30 + 30; + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) *-1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + } + lbl_1_bss_C8[var_r31].unk2C += lbl_1_bss_C8[var_r31].unk20; + lbl_1_bss_C8[var_r31].unk30 += lbl_1_bss_C8[var_r31].unk24; + lbl_1_bss_C8[var_r31].unk34 += lbl_1_bss_C8[var_r31].unk28; + Hu3DData[arg0->model[var_r31]].rot.x += lbl_1_bss_C8[var_r31].unk10; + Hu3DData[arg0->model[var_r31]].rot.y += lbl_1_bss_C8[var_r31].unk14; + Hu3DData[arg0->model[var_r31]].rot.z += lbl_1_bss_C8[var_r31].unk18; + if (Hu3DData[arg0->model[var_r31]].pos.y <= 0.0f) { + lbl_1_bss_C8[var_r31].unk00 = 3; + } + break; + case 10: + Hu3DModelAttrReset(arg0->model[var_r31], HU3D_ATTR_DISPOFF); + if (var_r31 % 3 != 0) { + var_r28 = rand8() % 4; + } else { + var_r28 = 5; + } + switch (var_r28) { + case 0: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 1.0f, 1.0f); + break; + case 1: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 0.0f, 0.0f); + break; + case 2: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 1.0f, 0.0f); + break; + case 3: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 0.0f, 1.0f); + break; + case 5: + break; + } + lbl_1_bss_C8[var_r31].unk2C = Hu3DData[arg0->model[var_r31]].pos.x = lbl_1_bss_BC; + lbl_1_bss_C8[var_r31].unk30 = Hu3DData[arg0->model[var_r31]].pos.y = 375.0f; + lbl_1_bss_C8[var_r31].unk34 = Hu3DData[arg0->model[var_r31]].pos.z = 460.0f; + var_r29 = rand8(); + if (rand8() % 2 == 0) { + var_r29 *= -1; + } + lbl_1_bss_C8[var_r31].unk2C += var_r29; + var_r29 = rand8(); + if (rand8() % 2 == 0) { + var_r29 *= -1; + } + lbl_1_bss_C8[var_r31].unk30 += var_r29; + var_r29 = rand8() % 50; + if (rand8() % 2 == 0) { + var_r29 *= -1; + } + lbl_1_bss_C8[var_r31].unk34 += var_r29; + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) * -1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk08 = 0; + lbl_1_bss_C8[var_r31].unk04 = rand8() % 30 + 30; + lbl_1_bss_C8[var_r31].unk00 = 11; + break; + case 11: + if (lbl_1_bss_C8[var_r31].unk04-- <= 0) { + lbl_1_bss_C8[var_r31].unk04 = rand8() % 30 + 30; + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) * -1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + } + lbl_1_bss_C8[var_r31].unk2C += lbl_1_bss_C8[var_r31].unk20; + lbl_1_bss_C8[var_r31].unk30 += lbl_1_bss_C8[var_r31].unk24 / 2; + lbl_1_bss_C8[var_r31].unk34 += lbl_1_bss_C8[var_r31].unk28; + Hu3DData[arg0->model[var_r31]].rot.x += lbl_1_bss_C8[var_r31].unk10; + Hu3DData[arg0->model[var_r31]].rot.y += lbl_1_bss_C8[var_r31].unk14; + Hu3DData[arg0->model[var_r31]].rot.z += lbl_1_bss_C8[var_r31].unk18; + if (lbl_1_bss_C8[var_r31].unk08++ >= 50) { + lbl_1_bss_C8[var_r31].unk00 = 2; + } + break; + } + Hu3DData[arg0->model[var_r31]].pos.x = fn_1_5FC(Hu3DData[arg0->model[var_r31]].pos.x, lbl_1_bss_C8[var_r31].unk2C, 30.0f); + Hu3DData[arg0->model[var_r31]].pos.y = fn_1_5FC(Hu3DData[arg0->model[var_r31]].pos.y, lbl_1_bss_C8[var_r31].unk30, 30.0f); + Hu3DData[arg0->model[var_r31]].pos.z = fn_1_5FC(Hu3DData[arg0->model[var_r31]].pos.z, lbl_1_bss_C8[var_r31].unk34, 30.0f); + } +} + +void fn_1_FD30(omObjData* arg0) { + s32 var_r30; + + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 17)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 18)); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + for (var_r30 = 2; var_r30 < 80; var_r30++) { + if (var_r30 % 3 == 0) { + arg0->model[var_r30] = Hu3DModelLink(arg0->model[1]); + } else { + arg0->model[var_r30] = Hu3DModelLink(arg0->model[0]); + } + Hu3DModelAttrSet(arg0->model[var_r30], HU3D_ATTR_DISPOFF); + lbl_1_bss_C8[var_r30].unk04 = lbl_1_bss_C8[var_r30].unk08 = 0; + lbl_1_bss_C8[var_r30].unk00 = 10; + } + arg0->func = fn_1_E160; +} + +void fn_1_FE80(void) { + omObjData* temp_r31; + omObjData* sp8; + + temp_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x20, 0x20, -1, NULL); + sp8 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x80, 0, -1, fn_1_FD30); + lbl_1_bss_1530.unk00 = temp_r31; + lbl_1_bss_1530.unk04 = NULL; + lbl_1_bss_1530.unk00->data = &lbl_1_bss_1530; + fn_1_DB68(temp_r31, lbl_1_bss_1580.unk08, lbl_1_bss_1580.unk00); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1530.unk04 != NULL) { + lbl_1_bss_1530.unk04(temp_r31); + } + fn_1_D7D8(temp_r31); + } +} + +void fn_1_FF7C(s32 arg0) { + s32 sp30[4]; + s32 sp20[4]; + s32 sp10[4]; + s32 i, j; + s32 var_r29; + + sp30[0] = 0; + for (i = 1; i < 4; i++) { + sp30[i] = sp30[i - 1] + 1; + if (sp30[i] >= 4) { + sp30[i] = 0; + } + if (arg0 == sp30[i]) { + lbl_1_bss_1580.unk0C = i; + } + } + if (lbl_1_bss_1580.unk08 != 0) { + lbl_1_bss_1580.unk14 = arg0; + } + if (lbl_1_bss_1580.unk344 == 1) { + var_r29 = 0; + for (i = 0; i < 4; i++) { + sp10[0] = GWPlayer[sp30[0]].team; + sp10[1] = GWPlayer[sp30[1]].team; + sp10[2] = GWPlayer[sp30[2]].team; + sp10[3] = GWPlayer[sp30[3]].team; + sp20[i] = sp30[i]; + } + OSReport("########## Sort Start WIN:%d IDX (%d,%d), (%d,%d), (%d,%d), (%d,%d)\n", + var_r29, sp10[0], sp30[0], sp10[1], sp30[1], sp10[2], sp30[2], sp10[3], sp30[3]); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (sp10[j] != -1 && var_r29 == sp10[j]) { + sp10[j] = -1; + sp30[i] = sp20[j]; + break; + } + } + if (i == 1) { + var_r29++; + var_r29 %= 2; + } + } + OSReport("########## Sort End WIN:%d IDX %d, %d, %d, %d\n", var_r29, sp30[0], sp30[1], sp30[2], sp30[3]); + } + for (i = 0; i < 4; i++) { + fn_1_3650(&lbl_1_bss_1580.unkC4[i].unk00, sp30[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1580.unkC4[i].unk00.unk1C = GWPlayer[sp30[i]].coins; + lbl_1_bss_1580.unkC4[i].unk00.unk20 = GWPlayer[sp30[i]].stars; + lbl_1_bss_1580.unkC4[i].unk00.unk24 = GWPlayer[sp30[i]].coins_mg; + lbl_1_bss_1580.unkC4[i].unk00.unk28 = GWPlayer[sp30[i]].coins_max; + lbl_1_bss_1580.unkC4[i].unk00.unk2C = GWPlayer[sp30[i]].question_count; + } +} + +void fn_1_1036C(omObjData* arg0) { + float var_f29; + float var_f30; + float temp_f31; + s32 temp_r25; + s32 var_r26; + s32 var_r27 = 3; + StructBss1530* temp_r30 = arg0->data; + char* sp98[][3] = { + { "submit07-star_null3", "submit07-star_null1", "submit07-star_null1" }, + { "submit07-star_null4", "submit07-star_null2", "submit07-star_null1" }, + { "submit07-star_null5", "submit07-star_null3", "submit07-star_null1" } + }; + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 var_r28; + s32 var_r29; + + Hu3DModelPosSet(arg0->model[3], lbl_1_data_130[temp_r30->unk08].x, 100.0f, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[3], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[3], 0.0f, 0.0f, 0.0f); + if ((temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk20 / 100) == 0) { + var_r27 = 2; + } else { + Hu3DMotionTimeSet(arg0->model[9], (temp_r25 + 1) % 10); + } + if ((temp_r25 = (lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk20 % 100) / 10) == 0 && var_r27 == 2) { + var_r27 = 1; + } else { + Hu3DMotionTimeSet(arg0->model[8], (temp_r25 + 1) % 10); + } + temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk20 % 10; + Hu3DMotionTimeSet(arg0->model[7], (temp_r25 + 1) % 10); + Hu3DModelAttrReset(arg0->model[3], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 90; var_r28++) { + fn_1_938(); + var_f29 = fn_1_6F4(100.0f, 300.0f, var_r28, 90.0f); + var_f30 = fn_1_6F4(0.0f, 1080.0f, var_r28, 90.0f); + temp_f31 = fn_1_6F4(0.0f, 0.75f, var_r28, 90.0f); + Hu3DModelPosSet(arg0->model[3], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[3], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[3], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 900.0f) { + Hu3DModelAttrReset(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[3], sp98[var_r27 - 1][var_r29], sp68); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp68[0][3], sp68[1][3], sp68[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + var_r28 = var_r29 = var_r26 = 0; + if (temp_r30->unk1C == 1) { + fn_1_1E28(arg0, 1, 14, 5, 0); + } else { + fn_1_1E28(arg0, 1, 15, 5, 0); + } + do { + fn_1_938(); + if (temp_r30->unk1C == 1) { + temp_f31 = fn_1_878(0.75f, 1.0f, var_r26, 30.0f); + if (var_r26++ >= 29) { + var_r26 = 0; + } + Hu3DModelScaleSet(arg0->model[3], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + Hu3DModelObjMtxGet(arg0->model[3], sp98[var_r27 - 1][var_r29], sp38); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp38[0][3], sp38[1][3], sp38[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + if (var_r28 == 60) { + fn_1_1E28(arg0, 1, 1, 15, 1); + } + if (var_r28 == 120) { + lbl_1_bss_1580.unk18 = 1; + } + if (var_r28++ >= 120 && (var_r26 == 0 || var_r26 == 15) && temp_r30->unk18 == 1) { + temp_r30->unk18 = 2; + } + } while (temp_r30->unk18 != 3); + HuAudFXPlay(0xBB); + for (var_r28 = 0; var_r28 < 60; var_r28++) { + fn_1_938(); + if (var_r28 > 30) { + var_f29 = fn_1_61C(300.0f, 600.0f, var_r28 - 30, 30.0f); + } + var_f30 = fn_1_61C(0.0f, 360.0f, var_r28, 60.0f); + Hu3DModelPosSet(arg0->model[3], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[3], 0.0f, var_f30, 0.0f); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 180.0f) { + Hu3DModelAttrSet(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[3], sp98[var_r27 - 1][var_r29], sp8); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + } + } + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + Hu3DModelAttrSet(arg0->model[var_r28 + 7], HU3D_ATTR_DISPOFF); + } + temp_r30->unk04 = 0; +} + +void fn_1_10D74(omObjData* arg0) { + float var_f29; + float var_f30; + float temp_f31; + s32 temp_r25; + s32 var_r26; + s32 var_r27 = 3; + StructBss1530* temp_r30 = arg0->data; + char* sp98[][3] = { + { "coin-coin-null3", "coin-coin_null1", "coin-coin-null1" }, + { "coin-coin-null4", "coin-coin-null2", "coin-coin-null1" }, + { "coin-coin-null5", "coin-coin-null3", "coin-coin-null1" } + }; + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 var_r28; + s32 var_r29; + + Hu3DModelPosSet(arg0->model[4], lbl_1_data_130[temp_r30->unk08].x, 100.0f, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[4], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[4], 0.0f, 0.0f, 0.0f); + if ((temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk1C / 100) == 0) { + var_r27 = 2; + } else { + Hu3DMotionTimeSet(arg0->model[9], (temp_r25 + 1) % 10); + } + if ((temp_r25 = (lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk1C % 100) / 10) == 0 && var_r27 == 2) { + var_r27 = 1; + } else { + Hu3DMotionTimeSet(arg0->model[8], (temp_r25 + 1) % 10); + } + temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk1C % 10; + Hu3DMotionTimeSet(arg0->model[7], (temp_r25 + 1) % 10); + Hu3DModelAttrReset(arg0->model[4], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 90; var_r28++) { + fn_1_938(); + var_f29 = fn_1_6F4(100.0f, 300.0f, var_r28, 90.0f); + var_f30 = fn_1_6F4(0.0f, 1080.0f, var_r28, 90.0f); + temp_f31 = fn_1_6F4(0.0f, 0.75f, var_r28, 90.0f); + Hu3DModelPosSet(arg0->model[4], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[4], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[4], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 900.0f) { + Hu3DModelAttrReset(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[4], sp98[var_r27 - 1][var_r29], sp68); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp68[0][3], sp68[1][3], sp68[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + var_r28 = var_r29 = var_r26 = 0; + if (temp_r30->unk1C == 1) { + fn_1_1E28(arg0, 1, 14, 5, 0); + } else { + fn_1_1E28(arg0, 1, 15, 5, 0); + } + do { + fn_1_938(); + if (temp_r30->unk1C == 1) { + temp_f31 = fn_1_878(0.75f, 1.0f, var_r26, 30.0f); + if (var_r26++ >= 29) { + var_r26 = 0; + } + Hu3DModelScaleSet(arg0->model[4], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + Hu3DModelObjMtxGet(arg0->model[4], sp98[var_r27 - 1][var_r29], sp38); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp38[0][3], sp38[1][3], sp38[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + if (var_r28 == 60) { + fn_1_1E28(arg0, 1, 1, 15, 1); + } + if (var_r28 == 120) { + lbl_1_bss_1580.unk18 = 1; + } + if (var_r28++ >= 120 && (var_r26 == 0 || var_r26 == 15) && temp_r30->unk18 == 1) { + temp_r30->unk18 = 2; + } + } while (temp_r30->unk18 != 3); + fn_1_1E28(arg0, 1, 1, 15, 1); + HuAudFXPlay(0xBC); + for (var_r28 = 0; var_r28 < 60; var_r28++) { + fn_1_938(); + if (var_r28 > 30) { + var_f29 = fn_1_61C(300.0f, 600.0f, var_r28 - 30, 30.0f); + } + var_f30 = fn_1_61C(0.0f, 360.0f, var_r28, 60.0f); + Hu3DModelPosSet(arg0->model[4], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[4], 0.0f, var_f30, 0.0f); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 180.0f) { + Hu3DModelAttrSet(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[4], sp98[var_r27 - 1][var_r29], sp8); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + } + } + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + Hu3DModelAttrSet(arg0->model[var_r28 + 7], HU3D_ATTR_DISPOFF); + } + temp_r30->unk04 = 0; +} + +void fn_1_11794(omObjData* arg0) { + StructBss1530* temp_r30; + + temp_r30 = arg0->data; + fn_1_958(25); + fn_1_1E28(arg0, 1, 15, 5, 0); + fn_1_958(10); + while (TRUE) { + fn_1_938(); + if (Hu3DMotionTimeGet(arg0->model[1]) >= 40.0f) { + break; + } + } + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_PAUSE); + temp_r30->unk04 = 0; +} + +void fn_1_11834(omObjData* arg0) { + float var_f31; + float var_f30; + float temp_f26; + float temp_f27; + float temp_f25; + float temp_f29; + float temp_f28; + StructBss1530* temp_r31; + s32 temp_r29; + s32 var_r24; + s32 temp_r23; + s32 var_r27; + s32 temp_r25; + s32 var_r28; + + var_f30 = 0.0f; + temp_r31 = arg0->data; + temp_r29 = temp_r31->unk08; + temp_r23 = lbl_1_bss_1490[temp_r29].unk00->work[0]; + var_r24 = 0xFF; + Hu3DModelPosSet(lbl_1_bss_1490[temp_r29].unk00->model[6], lbl_1_data_130[temp_r29].x, 500.0f + lbl_1_data_130[temp_r29].y + lbl_1_bss_AC, lbl_1_data_130[temp_r29].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[temp_r29].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[temp_r29].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[temp_r29].unk00->model[6], HU3D_ATTR_DISPOFF); + for (var_r27 = 0; var_r27 <= 5; var_r27++) { + fn_1_938(); + lbl_1_bss_1490[temp_r29].unk00->work[0] = fn_1_6F4(temp_r23, var_r24, var_r27, 5.0f); + temp_f27 = fn_1_6F4(0.0f, 1.5f, var_r27, 5.0f); + temp_f25 = fn_1_6F4(0.0f, 0.5f, var_r27, 5.0f); + temp_r25 = fn_1_6F4(0.0f, 128.0f, var_r27, 5.0f); + Hu3DModelScaleSet(lbl_1_bss_1490[temp_r29].unk00->model[6], temp_f27, 1.25f, temp_f27); + Hu3DModelTPLvlSet(lbl_1_bss_1490[temp_r29].unk00->model[6], temp_f25); + Hu3DLLightColorSet(lbl_1_bss_1490[temp_r29].unk00->model[1], lbl_1_bss_1580.unk24[temp_r29].unk00, temp_r25, temp_r25, temp_r25, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[temp_r29].unk00->model[2], lbl_1_bss_1580.unk24[temp_r29].unk04, temp_r25, temp_r25, temp_r25, 0xFF); + } + lbl_1_bss_1490[temp_r29].unk00->work[1] = 1; + fn_1_958(20); + fn_1_1E28(arg0, 1, 3, 15, 0); + fn_1_2310(arg0, 1, 3, 15); + do { + fn_1_938(); + } while (temp_r31->unk18 == 0); + Hu3DModelPosSet(arg0->model[5], lbl_1_data_130[temp_r31->unk08].x, 300.0f, lbl_1_data_130[temp_r31->unk08].z - 50.0f); + Hu3DModelRotSet(arg0->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(arg0->model[5], HU3D_ATTR_DISPOFF); + HuAudFXPlay(0x338); + for (var_r28 = 0; var_r28 < 60; var_r28++) { + fn_1_938(); + temp_f29 = 10.0 + 10.0 * sind(var_f30); + temp_f28 = 10.0 * sind(2.0f * var_f30); + if (var_r28 < 10) { + var_f31 = fn_1_61C(0.0f, 1.0f, var_r28, 10.0f); + } else { + var_f31 = fn_1_61C(1.0f, 0.5f, var_r28 - 10, 5.0f); + } + if (var_r28 == 10) { + lbl_1_bss_1580.unk334[temp_r31->unk08] = fn_1_8264(); + Hu3DParManPosSet(lbl_1_bss_1580.unk334[temp_r31->unk08], lbl_1_data_130[temp_r31->unk08].x, 300.0f + temp_f29, lbl_1_data_130[temp_r31->unk08].z); + } + if ((var_f30 += 2.0f) >= 360.0f) { + var_f30 -= 360.0f; + } + Hu3DModelPosSet(arg0->model[5], lbl_1_data_130[temp_r31->unk08].x, 300.0f + temp_f29, lbl_1_data_130[temp_r31->unk08].z - 50.0f); + Hu3DModelRotSet(arg0->model[5], 0.0f, temp_f28, 0.0f); + Hu3DModelScaleSet(arg0->model[5], var_f31, var_f31, var_f31); + } + Hu3DParManKill(lbl_1_bss_1580.unk334[temp_r31->unk08]); + lbl_1_bss_1580.unk334[temp_r31->unk08] = -1; + temp_f29 = Hu3DData[arg0->model[5]].pos.y; + temp_f26 = temp_f29; + temp_f28 = Hu3DData[arg0->model[5]].rot.y; + var_f31 = 0.5f; + var_f30 = 0.0f; + for (var_r28 = 0; var_r28 < 90; var_r28++) { + fn_1_938(); + if (var_r28 == 45) { + HuAudFXPlay(0x339); + } + if (var_r28 > 45) { + temp_f29 = fn_1_61C(temp_f26, 100.0f, var_r28 - 45, 45.0f); + var_f31 = fn_1_61C(0.5f, 0.0f, var_r28 - 45, 45.0f); + } + temp_f28 += var_f30 += 0.25f; + Hu3DModelPosSet(arg0->model[5], lbl_1_data_130[temp_r31->unk08].x, temp_f29, lbl_1_data_130[temp_r31->unk08].z - 50.0f); + Hu3DModelRotSet(arg0->model[5], 0.0f, temp_f28, 0.0f); + Hu3DModelScaleSet(arg0->model[5], var_f31, var_f31, var_f31); + } + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + HuAudFXPlay(8); + lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk20++; + GWPlayer[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk00].stars++; + if (GWPlayer[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk00].stars >= 999) { + GWPlayer[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk00].stars = 999; + } + temp_r31->unk04 = 0; +} + +void fn_1_123D8(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + fn_1_15450(temp_r31->unk08); + temp_r31->unk04 = 0; +} + +void fn_1_1241C(omObjData* arg0) { +} + +void fn_1_12420(omObjData* arg0) { + float sp8[] = { 0.0f, -30.0f, -60.0f, -90.0f }; + float temp_f31; + StructBss1530* temp_r31; + s32 var_r27; + s32 var_r29; + s32 var_r28; + + temp_r31 = arg0->data; + if (lbl_1_bss_1580.unk344 == 1) { + var_r27 = 0; + if (lbl_1_bss_1580.unk348 == 1) { + var_r27 = 2; + } + if ((lbl_1_bss_1580.unk348 == 0 && temp_r31->unk08 <= 1) || (lbl_1_bss_1580.unk348 == 1 && temp_r31->unk08 >= 2)) { + Hu3DModelPosSet(arg0->model[2], 100.0f + lbl_1_data_130[temp_r31->unk08].x, -90.0f, lbl_1_data_130[temp_r31->unk08].z); + fn_1_958(90); + if (temp_r31->unk08 == var_r27) { + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + } + if (arg0->work[0] == 0) { + HuAudFXPlay(0xA8); + } + for (var_r28 = 0; var_r28 <= 30; var_r28++) { + fn_1_938(); + temp_f31 = fn_1_6F4(-90.0f, 0.0f, var_r28, 30.0f); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[temp_r31->unk08].x, 90.0f + temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + Hu3DModelPosSet(arg0->model[2], 100.0f + lbl_1_data_130[temp_r31->unk08].x, temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + } + } + } else { + Hu3DModelPosSet(arg0->model[2], lbl_1_data_130[temp_r31->unk08].x, -90.0f, lbl_1_data_130[temp_r31->unk08].z); + if (lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk18 != 4) { + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (arg0->work[0] == 0 && var_r29 >= 1) { + HuAudFXPlay(0xA5 + var_r29); + } + if (var_r29 != 3) { + for (var_r28 = 0; var_r28 < 30; var_r28++) { + fn_1_938(); + if (sp8[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk18 - 1] >= sp8[3 - var_r29] && 4 - var_r29 < 4) { + temp_f31 = fn_1_6F4(sp8[4 - var_r29], sp8[3 - var_r29], var_r28, 30.0f); + if (var_r29 == 1) { + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[temp_r31->unk08].x, 90.0f + temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_130[temp_r31->unk08].x, temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + } + } + } else { + for (var_r28 = 0; var_r28 < 10; var_r28++) { + fn_1_938(); + if ((sp8[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk18 - 1] >= sp8[3 - var_r29]) && ((4 - var_r29) < 4)) { + temp_f31 = fn_1_6F4(sp8[4 - var_r29], sp8[3 - var_r29], var_r28, 10.0f); + if (var_r29 == 1) { + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[temp_r31->unk08].x, 90.0f + temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_130[temp_r31->unk08].x, temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + } + } + } + if (var_r29 == 2) { + fn_1_958(120); + } else if (var_r29 != 3) { + fn_1_958(60); + } + } + } + temp_r31->unk04 = 0; +} + +void fn_1_12A98(s32 arg0) { + s32 sp8[4]; + s32 var_r29; + s32 var_r30; + s32 i; + + var_r29 = 0; + var_r30 = -1; + for (i = 0; i < 4; i++) { + lbl_1_bss_1458[i] = lbl_1_bss_1448[i] = 0; + } + for (i = 0; i < 4; i++) { + switch (arg0) { + case 0: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk20; + break; + case 1: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk1C; + break; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 <= sp8[i]) { + var_r30 = sp8[i]; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 == sp8[i]) { + lbl_1_bss_1458[0]++; + lbl_1_bss_1448[var_r29++] = i; + } + } +} + +void fn_1_12C08(s32 arg0) { + s32 sp8[4]; + s32 var_r29; + s32 var_r30; + s32 i; + + var_r29 = 0; + var_r30 = -1; + for (i = 0; i < 4; i++) { + lbl_1_bss_1458[i] = 0; + lbl_1_bss_1448[i] = -1; + } + for (i = 0; i < 4; i++) { + switch (arg0) { + case 0: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk24; + break; + case 1: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk28; + break; + case 2: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk2C; + break; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 <= sp8[i]) { + var_r30 = sp8[i]; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 == sp8[i]) { + lbl_1_bss_1458[0]++; + lbl_1_bss_1448[var_r29++] = i; + } + } +} + +void fn_1_12DAC(void) { + s32 sp8[4]; + s32 var_r29; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) { + sp8[i] = i; + } + for (i = 0; i < 4; i++) { + for (j = i; j < 4; j++) { + if (lbl_1_bss_1580.unkC4[sp8[j]].unk00.unk20 >= lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk20) { + var_r29 = sp8[i]; + sp8[i] = sp8[j]; + sp8[j] = var_r29; + } + } + } + for (i = 0; i < 4; i++) { + for (j = i; j < 4; j++) { + if ((lbl_1_bss_1580.unkC4[sp8[j]].unk00.unk20 == lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk20) && (lbl_1_bss_1580.unkC4[sp8[j]].unk00.unk1C >= lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk1C)) { + var_r29 = sp8[i]; + sp8[i] = sp8[j]; + sp8[j] = var_r29; + } + } + } + lbl_1_bss_1580.unkC4[sp8[0]].unk00.unk18 = j = 1; + for (i = 1; i < 4; i++) { + j++; + lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk18 = j; + if ((lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk20 == lbl_1_bss_1580.unkC4[sp8[i - 1]].unk00.unk20) && (lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk1C == lbl_1_bss_1580.unkC4[sp8[i - 1]].unk00.unk1C)) { + lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk18 = lbl_1_bss_1580.unkC4[sp8[i - 1]].unk00.unk18; + } + } +} + +void fn_1_130A8(void) { + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 4; i++) { + lbl_1_bss_1458[i] = lbl_1_bss_1448[i] = 0; + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1580.unkC4[i].unk00.unk18 == 1) { + lbl_1_bss_1458[0]++; + lbl_1_bss_1448[var_r30++] = i; + lbl_1_bss_1458[1] = i; + } + } +} + +void fn_1_1317C(void) { + s32 sp8[4]; + s32 var_r30; + s32 i; + + var_r30 = -1; + for (i = 0; i < 4; i++) { + sp8[i] = lbl_1_bss_1428[i]; + } + for (i = 0; i < 4; i++) { + if (var_r30 <= sp8[i]) { + var_r30 = sp8[i]; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 == sp8[i]) { + lbl_1_bss_1458[1] = i; + } + } + for (i = 0; i < lbl_1_bss_1458[0]; i++) { + if (lbl_1_bss_1458[1] != lbl_1_bss_1448[i]) { + lbl_1_bss_1580.unkC4[lbl_1_bss_1448[i]].unk00.unk18 = 2; + } + } +} + +void fn_1_132AC(omObjData* arg0, s32 arg1) { + StructFn352C* temp_r30; + s32 var_r28; + + temp_r30 = &lbl_1_bss_1580.unkC4[arg1].unk00; + arg0->model[1] = CharModelCreate(temp_r30->unk10, 4); + arg0->motion[1] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[5] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 47)); + arg0->motion[3] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 23)); + arg0->motion[4] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 24)); + arg0->motion[14] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[15] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 73)); + CharModelMotionDataClose(temp_r30->unk10); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[arg1].x, lbl_1_data_130[arg1].y, lbl_1_data_130[arg1].z - 20.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1E28(arg0, 1, 1, 0, 1); + if (lbl_1_bss_1580.unk344 == 1) { + var_r28 = 0; + if (arg1 > 1) { + var_r28 = 1; + } + arg0->model[2] = Hu3DModelCreateFile(var_r28 + DATA_MAKE_NUM(DATADIR_MSTORY3, 144)); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(arg0->model[2], 1.25f, 1.0f, 1.5f); + Hu3DModelShadowMapSet(arg0->model[2]); + } else { + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 12)); + Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(arg0->model[2]); + } + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 14)); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 15)); + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 13)); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 11)); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + for (arg1 = 0; arg1 < 3; arg1++) { + arg0->model[arg1 + 7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 16)); + Hu3DModelAttrSet(arg0->model[arg1 + 7], HU3D_ATTR_DISPOFF); + Hu3DMotionSpeedSet(arg0->model[arg1 + 7], 0.0f); + } + lbl_1_bss_1580.unk24[arg1].unk00 = Hu3DLLightCreate(arg0->model[1], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0); + Hu3DLLightInfinitytSet(arg0->model[1], lbl_1_bss_1580.unk24[arg1].unk00); + Hu3DLLightPosAimSet(arg0->model[1], lbl_1_bss_1580.unk24[arg1].unk00, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + lbl_1_bss_1580.unk24[arg1].unk04 = Hu3DLLightCreate(arg0->model[2], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0); + Hu3DLLightInfinitytSet(arg0->model[2], lbl_1_bss_1580.unk24[arg1].unk04); + Hu3DLLightPosAimSet(arg0->model[2], lbl_1_bss_1580.unk24[arg1].unk04, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); +} + +void fn_1_13908(void) { + omObjData* var_r30; + s32 temp_r31; + + temp_r31 = lbl_1_bss_1580.unk314++; + var_r30 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_1490[temp_r31].unk00 = var_r30; + lbl_1_bss_1490[temp_r31].unk04 = NULL; + lbl_1_bss_1490[temp_r31].unk08 = temp_r31; + lbl_1_bss_1490[temp_r31].unk00->data = &lbl_1_bss_1490[temp_r31]; + fn_1_132AC(lbl_1_bss_1490[temp_r31].unk00, temp_r31); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1490[temp_r31].unk04 != NULL) { + lbl_1_bss_1490[temp_r31].unk04(lbl_1_bss_1490[temp_r31].unk00); + } + } +} + +void fn_1_13A38(omObjData* arg0) { +} + +s32 lbl_1_data_504[][27] = { + { + MAKE_MESSID(37, 0x00), MAKE_MESSID(37, 0x01), MAKE_MESSID(37, 0x02), + MAKE_MESSID(37, 0x03), MAKE_MESSID(37, 0x05), MAKE_MESSID(37, 0x06), + MAKE_MESSID(37, 0x0B), MAKE_MESSID(37, 0x0C), MAKE_MESSID(37, 0x0D), + MAKE_MESSID(37, 0x0E), MAKE_MESSID(37, 0x0F), MAKE_MESSID(37, 0x10), + MAKE_MESSID(37, 0x07), MAKE_MESSID(37, 0x08), MAKE_MESSID(37, 0x09), + MAKE_MESSID(37, 0x0A), MAKE_MESSID(37, 0x11), MAKE_MESSID(37, 0x12), + MAKE_MESSID(37, 0x13), MAKE_MESSID(37, 0x14), MAKE_MESSID(37, 0x15), + MAKE_MESSID(37, 0x16), MAKE_MESSID(37, 0x17), MAKE_MESSID(37, 0x8C), + MAKE_MESSID(37, 0x8D), MAKE_MESSID(37, 0x8E), MAKE_MESSID(37, 0x9E) + }, + { + MAKE_MESSID(37, 0x19), MAKE_MESSID(37, 0x1A), MAKE_MESSID(37, 0x1B), + MAKE_MESSID(37, 0x1C), MAKE_MESSID(37, 0x1D), MAKE_MESSID(37, 0x1E), + MAKE_MESSID(37, 0x23), MAKE_MESSID(37, 0x24), MAKE_MESSID(37, 0x25), + MAKE_MESSID(37, 0x26), MAKE_MESSID(37, 0x27), MAKE_MESSID(37, 0x28), + MAKE_MESSID(37, 0x1F), MAKE_MESSID(37, 0x20), MAKE_MESSID(37, 0x21), + MAKE_MESSID(37, 0x22), MAKE_MESSID(37, 0x29), MAKE_MESSID(37, 0x2A), + MAKE_MESSID(37, 0x2B), MAKE_MESSID(37, 0x2C), MAKE_MESSID(37, 0x2D), + MAKE_MESSID(37, 0x2E), MAKE_MESSID(37, 0x2F), MAKE_MESSID(37, 0x8F), + MAKE_MESSID(37, 0x90), MAKE_MESSID(37, 0x91), MAKE_MESSID(37, 0x9F) + }, + { + MAKE_MESSID(37, 0x30), MAKE_MESSID(37, 0x31), MAKE_MESSID(37, 0x32), + MAKE_MESSID(37, 0x33), MAKE_MESSID(37, 0x34), MAKE_MESSID(37, 0x35), + MAKE_MESSID(37, 0x3A), MAKE_MESSID(37, 0x3B), MAKE_MESSID(37, 0x3C), + MAKE_MESSID(37, 0x3D), MAKE_MESSID(37, 0x3E), MAKE_MESSID(37, 0x3F), + MAKE_MESSID(37, 0x36), MAKE_MESSID(37, 0x37), MAKE_MESSID(37, 0x38), + MAKE_MESSID(37, 0x39), MAKE_MESSID(37, 0x40), MAKE_MESSID(37, 0x41), + MAKE_MESSID(37, 0x42), MAKE_MESSID(37, 0x43), MAKE_MESSID(37, 0x44), + MAKE_MESSID(37, 0x45), MAKE_MESSID(37, 0x46), MAKE_MESSID(37, 0x92), + MAKE_MESSID(37, 0x93), MAKE_MESSID(37, 0x94), MAKE_MESSID(37, 0xA0) + }, + { + MAKE_MESSID(37, 0x47), MAKE_MESSID(37, 0x48), MAKE_MESSID(37, 0x49), + MAKE_MESSID(37, 0x4A), MAKE_MESSID(37, 0x4B), MAKE_MESSID(37, 0x4C), + MAKE_MESSID(37, 0x51), MAKE_MESSID(37, 0x52), MAKE_MESSID(37, 0x53), + MAKE_MESSID(37, 0x54), MAKE_MESSID(37, 0x55), MAKE_MESSID(37, 0x56), + MAKE_MESSID(37, 0x4D), MAKE_MESSID(37, 0x4E), MAKE_MESSID(37, 0x4F), + MAKE_MESSID(37, 0x50), MAKE_MESSID(37, 0x57), MAKE_MESSID(37, 0x58), + MAKE_MESSID(37, 0x59), MAKE_MESSID(37, 0x5A), MAKE_MESSID(37, 0x5B), + MAKE_MESSID(37, 0x5C), MAKE_MESSID(37, 0x5D), MAKE_MESSID(37, 0x95), + MAKE_MESSID(37, 0x96), MAKE_MESSID(37, 0x97), MAKE_MESSID(37, 0xA1) + }, + { + MAKE_MESSID(37, 0x5E), MAKE_MESSID(37, 0x5F), MAKE_MESSID(37, 0x60), + MAKE_MESSID(37, 0x61), MAKE_MESSID(37, 0x62), MAKE_MESSID(37, 0x63), + MAKE_MESSID(37, 0x68), MAKE_MESSID(37, 0x69), MAKE_MESSID(37, 0x6A), + MAKE_MESSID(37, 0x6B), MAKE_MESSID(37, 0x6C), MAKE_MESSID(37, 0x6D), + MAKE_MESSID(37, 0x64), MAKE_MESSID(37, 0x65), MAKE_MESSID(37, 0x66), + MAKE_MESSID(37, 0x67), MAKE_MESSID(37, 0x6E), MAKE_MESSID(37, 0x6F), + MAKE_MESSID(37, 0x70), MAKE_MESSID(37, 0x71), MAKE_MESSID(37, 0x72), + MAKE_MESSID(37, 0x73), MAKE_MESSID(37, 0x74), MAKE_MESSID(37, 0x98), + MAKE_MESSID(37, 0x99), MAKE_MESSID(37, 0x9A), MAKE_MESSID(37, 0xA2) + }, + { + MAKE_MESSID(37, 0x75), MAKE_MESSID(37, 0x76), MAKE_MESSID(37, 0x77), + MAKE_MESSID(37, 0x78), MAKE_MESSID(37, 0x79), MAKE_MESSID(37, 0x7A), + MAKE_MESSID(37, 0x7F), MAKE_MESSID(37, 0x80), MAKE_MESSID(37, 0x81), + MAKE_MESSID(37, 0x82), MAKE_MESSID(37, 0x83), MAKE_MESSID(37, 0x84), + MAKE_MESSID(37, 0x7B), MAKE_MESSID(37, 0x7C), MAKE_MESSID(37, 0x7D), + MAKE_MESSID(37, 0x7E), MAKE_MESSID(37, 0x85), MAKE_MESSID(37, 0x86), + MAKE_MESSID(37, 0x87), MAKE_MESSID(37, 0x88), MAKE_MESSID(37, 0x89), + MAKE_MESSID(37, 0x8A), MAKE_MESSID(37, 0x8B), MAKE_MESSID(37, 0x9B), + MAKE_MESSID(37, 0x9C), MAKE_MESSID(37, 0x9D), MAKE_MESSID(37, 0xA3) + } +}; + +void fn_1_13A3C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 var_r29 = 0; + s32 temp_r28 = 0; + s32 i; + + lbl_1_bss_1580.unk18 = 0; + fn_1_1E28(lbl_1_bss_1468.unk00, 1, arg3, 15, 1); + temp_r28 = (s16) HuWinKeyWaitNumGet(lbl_1_data_504[lbl_1_bss_1580.unk00][arg1]); + if (arg2 == -1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (lbl_1_bss_1580.unk14 == -1) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, lbl_1_data_504[lbl_1_bss_1580.unk00][arg1]); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + lbl_1_bss_1580.unk18 = 99; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1) { + if (HuWinStatGet(arg0) != 1) { + var_r29 = 2; + continue; + } + } + if (var_r29 == 2) { + do { + fn_1_938(); + } while (lbl_1_bss_1580.unk18 != 1); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1B18(arg0, -1); + fn_1_1D44(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 1, 15, 1); +} + +void fn_1_13C78(s32 arg0, s32 arg1, s32 arg2) { + fn_1_1E28(lbl_1_bss_1468.unk00, 1, arg2, 15, 1); + fn_1_1D44(arg0, lbl_1_data_504[lbl_1_bss_1580.unk00][arg1]); + fn_1_1B18(arg0, -1); + fn_1_1D44(arg0, MAKE_MESSID(37, 4)); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 1, 15, 1); +} + +void fn_1_13D38(s32 arg0, s32 arg1, s32 arg2) { + s32 var_r31; + + var_r31 = lbl_1_bss_1580.unkC4[arg1].unk00.unk10; + HuWinInsertMesSet(arg0, var_r31, arg2); +} + +void fn_1_13D98(omObjData* arg0, s32 arg1) { + s32 sp20[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 40), + DATA_MAKE_NUM(DATADIR_MSTORY3, 46), + DATA_MAKE_NUM(DATADIR_MSTORY3, 52), + DATA_MAKE_NUM(DATADIR_MSTORY3, 58), + DATA_MAKE_NUM(DATADIR_MSTORY3, 64), + DATA_MAKE_NUM(DATADIR_MSTORY3, 70) + }; + s32 sp38[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x29), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2A), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2B), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2C), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2D) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2F), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x30), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x31), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x32), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x33) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x35), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x36), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x37), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x38), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x39) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3B), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3C), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3D), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3E), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3F) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x41), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x42), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x43), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x44), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x45) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x47), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x48), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x49), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x4A), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x4A) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp20[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][4]); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1E28(arg0, 1, 1, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12, 13 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_140A0(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_1468.unk00 = temp_r3; + lbl_1_bss_1468.unk04 = NULL; + lbl_1_bss_1468.unk00->data = &lbl_1_bss_1468; + fn_1_13D98(temp_r3, lbl_1_bss_1580.unk00); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1468.unk04 != NULL) { + lbl_1_bss_1468.unk04(temp_r3); + } + } +} + +void fn_1_1442C(s32 arg0) { + s32 var_r31; + + var_r31 = -1; + if (GWPlayerCfg[lbl_1_bss_1580.unkC4[arg0].unk00.unk00].iscom) { + var_r31 = rand8() % 120 + 60; + } + do { + fn_1_938(); + if (!GWPlayerCfg[lbl_1_bss_1580.unkC4[arg0].unk00.unk00].iscom && (HuPadBtnDown[GWPlayerCfg[lbl_1_bss_1580.unkC4[arg0].unk00.unk00].pad_idx] & PAD_BUTTON_A)) { + break; + } + } while (var_r31-- != 0); + fn_1_1E28(lbl_1_bss_1490[arg0].unk00, 1, 5, 15, 0); +} + +void fn_1_1456C(s32 arg0) { + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1490[arg0].unk00->motion[5] != Hu3DMotionShiftIDGet(lbl_1_bss_1490[arg0].unk00->model[1]) + && lbl_1_bss_1490[arg0].unk00->motion[5] == Hu3DMotionIDGet(lbl_1_bss_1490[arg0].unk00->model[1]) + && Hu3DMotionTimeGet(lbl_1_bss_1490[arg0].unk00->model[1]) >= 27.0f) + { + break; + } + } + HuAudFXStop(lbl_1_bss_68[arg0 + 1]); + HuAudFXPlay(0x303); +} + +HsfanimStruct00 lbl_1_data_78C = { + 60, { 0, 0 }, + 1000.0f, 0.0f, 180.0f, + { 0.0f, 0.0f, 0.0f }, + 50.0f, 0.9f, 20.0f, 0.99f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +s32 fn_1_14684(void) { + s32 temp_r3; + + temp_r3 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 250, &lbl_1_data_78C); + Hu3DParManTimeLimitSet(temp_r3, 60); + Hu3DParManAttrSet(temp_r3, 4 | 0x40); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(temp_r3), 1); + return temp_r3; +} + +void fn_1_14700(omObjData* arg0) { + Hu3DModelKill(arg0->model[0]); + omDelObjEx(lbl_1_bss_A8, arg0); +} + +void fn_1_14748(omObjData* arg0) { + float temp_f31; + s32 sp8[3]; + s32 temp_r27; + s32 var_r26; + s32 var_r30; + s32 temp_r25; + s32 var_r29; + + switch (arg0->work[1]) { + case 0: + if (arg0->work[2] >= 1080) { + arg0->work[1] = 1; + arg0->rot.y = 0.0f; + arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f; + arg0->work[2] = arg0->work[3] = 0; + lbl_1_bss_68[arg0->work[0] + 1] = HuAudFXPlay(0x300); + } else { + arg0->rot.y = arg0->work[2] % 360; + arg0->work[2] += 25; + if (arg0->work[3] < 180) { + arg0->scale.x = sind(arg0->work[3] % 180); + arg0->work[3] += 6; + } else { + arg0->scale.x = 1.0 + 0.5 * sind(arg0->work[3] % 180); + arg0->work[3] += 18; + } + arg0->scale.y = arg0->scale.z = arg0->scale.x; + if (arg0->work[3] > 360) { + arg0->work[3] = 360; + } + } + break; + case 1: + if (arg0->work[2] >= 40) { + arg0->work[1] = 2; + } + /* fallthrough */ + case 2: + arg0->trans.y += 0.2f * sind(arg0->work[2]); + if ((arg0->work[2] += 4) > 360) { + arg0->work[2] -= 360; + } + break; + case 3: + if (arg0->work[3]++ >= 8) { + arg0->work[1] = 4; + arg0->work[3] = 0; + Hu3DModelAttrSet(arg0->model[0], 1); + } else { + temp_f31 = fn_1_5D4(1.0f, 0.0f, arg0->work[3], 8.0f); + if (arg0->work[3] == 1) { + arg0->work[2] = fn_1_14684(); + Hu3DParManPosSet(arg0->work[2], arg0->trans.x, 275.0f, arg0->trans.z); + } + arg0->trans.y = 250.0f + fn_1_5D4(0.0f, 25.0f, arg0->work[3], 4.0f); + arg0->scale.x = 1.0f + 0.5f * (1.0f - temp_f31); + arg0->scale.y = arg0->scale.z = arg0->scale.x; + Hu3DModelTPLvlSet(arg0->model[0], temp_f31); + } + break; + case 4: + if (arg0->work[3]++ >= 60) { + Hu3DParManKill(arg0->work[2]); + arg0->work[2] = -1; + arg0->func = NULL; + } + break; + } + if (arg0->work[1] >= 3) { + var_r26 = 0; + if (lbl_1_bss_1428[arg0->work[0]] == -1) { + var_r30 = lbl_1_bss_1438[arg0->work[0]]; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->work[0]) { + sp8[var_r26++] = lbl_1_bss_1428[var_r29]; + } + } + while (TRUE) { + if (var_r30 != sp8[0] && var_r30 != sp8[1] && var_r30 != sp8[2]) { + lbl_1_bss_1428[arg0->work[0]] = var_r30; + break; + } + var_r30 = rand8() % 10 + 1; + } + Hu3DMotionTimeSet(arg0->model[0], lbl_1_bss_1428[arg0->work[0]] - 1 + 0.5f); + } + } else { + temp_r25 = lbl_1_bss_1438[arg0->work[0]] - 1; + do { + temp_r27 = rand8() % 10; + } while (temp_r25 == temp_r27); + lbl_1_bss_1438[arg0->work[0]] = temp_r27 + 1; + Hu3DMotionTimeSet(arg0->model[0], temp_r27 + 0.5f); + } +} + +void fn_1_14E6C(omObjData* arg0) { + s32 temp_r30; + + temp_r30 = arg0->work[0]; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 19)); + omSetTra(arg0, lbl_1_data_130[temp_r30].x, 250.0f, lbl_1_data_130[temp_r30].z); + omSetRot(arg0, 0.0f, 0.0f, 0.0f); + omSetSca(arg0, 0.0f, 0.0f, 0.0f); + Hu3DMotionSpeedSet(arg0->model[0], 0.0f); + HuAudFXPlay(0x302); + arg0->func = fn_1_14748; +} + +void fn_1_14F80(omObjData* arg0) { + Hu3DModelKill(arg0->model[1]); + Hu3DModelKill(arg0->model[2]); + omDelObjEx(lbl_1_bss_A8, arg0); +} + +void fn_1_14FD4(omObjData* arg0) { + s32 temp_r29; + s32 var_r30; + + temp_r29 = arg0->work[0]; + for (var_r30 = 1; var_r30 < 3; var_r30++) { + if (arg0->work[3] <= 40) { + Hu3DData[arg0->model[var_r30]].rot.y = fn_1_6F4(0.0f, 360.0f, arg0->work[3], 40.0f); + } else { + Hu3DData[arg0->model[var_r30]].rot.y = fn_1_61C(360.0f, 0.0f, arg0->work[3] - 40, 20.0f); + } + if (arg0->work[1] / 10 == 0) { + Hu3DData[arg0->model[var_r30]].pos.x = lbl_1_data_130[temp_r29].x; + } else { + Hu3DData[arg0->model[var_r30]].pos.x = lbl_1_data_130[temp_r29].x + fn_1_5D4(0.0f, 40.0f + -80.0f * (var_r30 - 1), arg0->work[3], 20.0f); + } + Hu3DData[arg0->model[var_r30]].pos.y = 275.0f + fn_1_5D4(0.0f, 50.0f, arg0->work[3], 20.0f); + Hu3DData[arg0->model[var_r30]].pos.z = lbl_1_data_130[temp_r29].z; + } + if (arg0->work[3]++ >= 60) { + arg0->func = NULL; + } +} + +void fn_1_152F0(omObjData* arg0) { + s32 sp8[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 20), + DATA_MAKE_NUM(DATADIR_MSTORY3, 21), + DATA_MAKE_NUM(DATADIR_MSTORY3, 22), + DATA_MAKE_NUM(DATADIR_MSTORY3, 23), + DATA_MAKE_NUM(DATADIR_MSTORY3, 24), + DATA_MAKE_NUM(DATADIR_MSTORY3, 25), + DATA_MAKE_NUM(DATADIR_MSTORY3, 26), + DATA_MAKE_NUM(DATADIR_MSTORY3, 27), + DATA_MAKE_NUM(DATADIR_MSTORY3, 28), + DATA_MAKE_NUM(DATADIR_MSTORY3, 29) + }; + + arg0->model[1] = Hu3DModelCreateFile(sp8[arg0->work[1] % 10]); + arg0->model[2] = Hu3DModelCreateFile(sp8[arg0->work[1] / 10]); + Hu3DMotionSpeedSet(arg0->model[1], 0.0f); + Hu3DMotionSpeedSet(arg0->model[2], 0.0f); + if (arg0->work[1] / 10 == 0) { + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + } + arg0->func = fn_1_14FD4; +} + +void fn_1_15450(s32 arg0) { + omObjData* temp_r3; + omObjData* temp_r3_2; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, fn_1_14E6C); + temp_r3->work[0] = arg0; + do { + fn_1_938(); + } while (temp_r3->work[1] != 2); + fn_1_1442C(arg0); + fn_1_1456C(arg0); + temp_r3->work[1] = 3; + fn_1_938(); + temp_r3_2 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, fn_1_152F0); + temp_r3_2->work[0] = arg0; + temp_r3_2->work[1] = lbl_1_bss_1428[arg0]; + fn_1_958(10); + fn_1_1E28(lbl_1_bss_1490[arg0].unk00, 1, 1, 15, 1); + do { + fn_1_938(); + } while (temp_r3_2->func); + lbl_1_bss_1490[arg0].unk18 = 1; + do { + fn_1_938(); + } while (lbl_1_bss_1490[arg0].unk18 != 2); + fn_1_958(150); + fn_1_14700(temp_r3); + fn_1_14F80(temp_r3_2); +} diff --git a/src/REL/mstory3Dll/win_effect.c b/src/REL/mstory3Dll/win_effect.c new file mode 100755 index 00000000..2a86dd6c --- /dev/null +++ b/src/REL/mstory3Dll/win_effect.c @@ -0,0 +1,322 @@ +#include "REL/mstory3Dll.h" +#include "game/data.h" +#include "game/hsfanim.h" +#include "game/hsfex.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/sprite.h" + +#include "ext_math.h" + +#define frand5() (((s32)frand() & 0x1F)) +#define frand8() (((s32)frand() & 0xFF)) + +typedef struct { + /* 0x00 */ Vec* unk00; + /* 0x04 */ Vec unk04; + /* 0x10 */ Vec unk10; + /* 0x1C */ u16 unk1C; + /* 0x1E */ u16 unk1E; + /* 0x20 */ u16 unk20; + /* 0x22 */ s16 unk22; + /* 0x24 */ float unk24; + /* 0x28 */ AnimData* unk28; +} StructBss1CF8; // Size 0x2C + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ char unk02[0x1A]; + /* 0x1C */ StructBss1CF8* unk1C; +} StructFn1E13C; // Size unknown + +void fn_1_1E13C(s32 arg0, s32 arg1, StructBss1CF8* arg2, Vec* arg3); +void fn_1_1E558(void); +void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix); + +StructBss1CF8 lbl_1_bss_1CF8[2]; +s32 lbl_1_bss_1CF4; +s32 lbl_1_bss_1CF0; +s32 lbl_1_bss_1CEC; +s16 lbl_1_bss_1CE8; + +void fn_1_1DED8(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { + AnimData* temp_r28; + s16 var_r27; + + fn_1_1E13C(arg0 + 1, arg0 + 3, &lbl_1_bss_1CF8[0], arg2); + lbl_1_bss_1CF8[0].unk04 = *arg1; + lbl_1_bss_1CF8[0].unk24 = arg3 - 20; + fn_1_1E13C(arg0 + 2, arg0 + 3, &lbl_1_bss_1CF8[1], arg2); + lbl_1_bss_1CF8[1].unk04 = *arg1; + lbl_1_bss_1CF8[1].unk24 = arg3 - 20; + temp_r28 = HuSprAnimReadFile(arg0); + lbl_1_bss_1CE8 = HuSprGrpCreate(1); + var_r27 = HuSprCreate(temp_r28, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_1CE8, 0, var_r27); + HuSprPosSet(lbl_1_bss_1CE8, 0, arg2->x, arg2->y); + HuSprTPLvlSet(lbl_1_bss_1CE8, 0, 0.0f); + HuSprAttrSet(lbl_1_bss_1CE8, 0, 8); + HuPrcChildCreate(fn_1_1E558, 100, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_1CF4 = 0; + lbl_1_bss_1CF0 = 0; + lbl_1_bss_1CEC = 0; +} + +void fn_1_1E0F4(void) { + lbl_1_bss_1CF4 = 1; +} + +s32 fn_1_1E108(void) { + return lbl_1_bss_1CF0; +} + +void fn_1_1E118(void) { + lbl_1_bss_1CEC = 1; +} + +s32 fn_1_1E12C(void) { + return lbl_1_bss_1CE8; +} + +void fn_1_1E13C(s32 arg0, s32 arg1, StructBss1CF8* arg2, Vec* arg3) { + Vec sp14; + AnimBmpData* temp_r31; + s32 sp10; + s32 var_r27; + s32 var_r26; + u16* var_r25; + AnimData* var_r24; + Vec* var_r22; + StructFn1E13C* temp_r23; + s16 var_r29; + s16 var_r28; + + var_r24 = HuSprAnimReadFile(arg0); + arg2->unk28 = var_r24; + temp_r31 = var_r24->bmp; + sp10 = temp_r31->sizeX * temp_r31->sizeY; + var_r25 = temp_r31->data; + for (var_r28 = var_r26 = 0; var_r28 < temp_r31->sizeY; var_r28 += 2) { + for (var_r29 = 0; var_r29 < temp_r31->sizeX; var_r29 += 2) { + var_r25 = (u16*) temp_r31->data + ((var_r28 % 4) * 4 + (var_r28 / 4) * temp_r31->sizeX * 4 + (var_r29 / 4) * 16 + var_r29 % 4); + if (*var_r25 != 0x8000) { + var_r26++; + } + } + } + arg2->unk20 = var_r26; + var_r22 = arg2->unk00 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r26 * sizeof(*var_r22), MEMORY_DEFAULT_NUM); + arg2->unk1C = temp_r31->sizeX; + arg2->unk1E = temp_r31->sizeY; + Hu3D2Dto3D(arg3, 1, &arg2->unk10); + for (var_r28 = 0; var_r28 < temp_r31->sizeY; var_r28 += 2) { + for (var_r29 = 0; var_r29 < temp_r31->sizeX; var_r29 += 2) { + var_r25 = (u16*) temp_r31->data + ((var_r28 % 4) * 4 + (var_r28 / 4) * temp_r31->sizeX * 4 + (var_r29 / 4) * 16 + var_r29 % 4); + if (*var_r25 != 0x8000) { + sp14 = *arg3; + sp14.x = sp14.x + var_r29 - temp_r31->sizeX / 2; + sp14.y = sp14.y + var_r28 - temp_r31->sizeY / 2; + Hu3D2Dto3D(&sp14, 1, var_r22); + var_r22++; + } + } + } + HuSprAnimKill(var_r24); + var_r24 = HuSprAnimRead(HuDataRead(arg1)); + var_r27 = Hu3DParticleCreate(var_r24, var_r26); + arg2->unk22 = var_r27; + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + Hu3DModelLayerSet(var_r27, 1); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xA); + Hu3DParticleScaleSet(var_r27, 20.0f); + Hu3DParticleHookSet(var_r27, fn_1_1E820); + Hu3DParticleBlendModeSet(var_r27, 1); + Hu3DParticleAttrSet(var_r27, 2); + temp_r23 = Hu3DData[var_r27].unk_120; + temp_r23->unk1C = arg2; + temp_r23->unk00 = 0; + OSReport("Particle Count %d\n", var_r26); +} + +void fn_1_1E558(void) { + float var_f31; + float var_f30; + float temp_f29; + s16* temp_r30; + s16* temp_r29; + s16 i; + + var_f31 = 0.0f; + var_f30 = 0.0f; + while (lbl_1_bss_1CF4 == 0) { + HuPrcVSleep(); + } + Hu3DParticleAttrReset(lbl_1_bss_1CF8->unk22, 2); + HuPrcSleep(20); + Hu3DParticleAttrReset(lbl_1_bss_1CF8[1].unk22, 2); + temp_r30 = Hu3DData[lbl_1_bss_1CF8[0].unk22].unk_120; + temp_r29 = Hu3DData[lbl_1_bss_1CF8[1].unk22].unk_120; + while (*temp_r30 == 0 || *temp_r29 == 0) { + HuPrcVSleep(); + } + for (i = 0; i <= 20; i++) { + temp_f29 = i / 20.0f; + HuSprTPLvlSet(lbl_1_bss_1CE8, 0, temp_f29); + HuPrcVSleep(); + } + OSReport("Finish\n"); + for (i = 0; i < 2; i++) { + Hu3DModelKill(lbl_1_bss_1CF8[i].unk22); + HuSprAnimKill(lbl_1_bss_1CF8[i].unk28); + } + lbl_1_bss_1CF0 = 1; + while (TRUE) { + if (lbl_1_bss_1CEC != 0) { + break; + } + var_f31 += var_f30; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + var_f30 += 0.5; + if (var_f30 > 10.0f) { + var_f30 = 10.0f; + } + temp_f29 = 1.0 + 0.25 * sind(var_f31); + HuSprScaleSet(lbl_1_bss_1CE8, 0, temp_f29, temp_f29); + HuPrcVSleep(); + } + HuSprGrpKill(lbl_1_bss_1CE8); + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix) { + Vec sp8; + float temp_f30; + float temp_f31; + s16 var_r22; + s16 var_r29; + StructBss1CF8* temp_r28; + HsfanimStruct01* var_r31; + s16 var_r27; + s16 temp_r25; + s16 temp_r24; + s16 temp_r21; + s16 temp_r26; + s16 temp_r20; + s16 var_r23; + + temp_r28 = particle->unk_1C; + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk2C = 0.0f; + } + } + if (particle->unk_2D & 2) { + return; + } + temp_r21 = temp_r28->unk24 - (temp_r28->unk24 / 5.0f); + temp_r26 = temp_r21 / 2; + temp_r20 = temp_r21 - temp_r26; + PSVECSubtract(&temp_r28->unk04, &temp_r28->unk10, &sp8); + temp_f31 = PSVECMag(&sp8) / temp_r20; + for (var_r22 = 0; var_r22 < particle->unk_30 / (temp_r28->unk24 / 5.0f); var_r22++) { + var_r31 = particle->unk_48; + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + if (var_r29 == particle->unk_30) { + break; + } + var_r31->unk34 = temp_r28->unk04; + var_r27 = (frand8() * 360) >> 8; + temp_f30 = 0.2 * frand5(); + var_r31->unk08.x = temp_f30 * sind(var_r27); + var_r31->unk08.y = 0.1 * (frand5() + 100); + var_r31->unk08.z = temp_f30 * cosd(var_r27); + var_r31->unk40.r = 0xF0; + var_r31->unk40.g = 0x80; + var_r31->unk40.b = 0x60; + var_r31->unk2C = 10.0f; + var_r31->unk00 = 0; + var_r31->unk02 = 0; + var_r31->unk14.x = frandmod(360); + } + var_r31 = particle->unk_48; + for (var_r29 = var_r23 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (!var_r31->unk2C) { + continue; + } + if (var_r31->unk00 == 0) { + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.999f; + var_r31->unk08.y -= 0.5f; + var_r31->unk08.z *= 0.999f; + if (var_r31->unk02 > temp_r26 - (temp_r26 / 5.0)) { + PSVECScale(&var_r31->unk08, &var_r31->unk08, 1.0 - ((var_r31->unk02 - (temp_r26 - temp_r26 / 5.0)) / (temp_r26 / 5.0))); + } + if (var_r31->unk02 == temp_r26) { + var_r31->unk00++; + } + if (var_r31->unk34.y <= 0.0f) { + var_r31->unk08.y = 0.5f * -var_r31->unk08.y; + var_r31->unk34.y = 0.0f; + } + } else if (var_r31->unk00 == 1) { + sp8 = temp_r28->unk00[var_r29]; + PSVECSubtract(&sp8, &var_r31->unk34, &sp8); + if (PSVECMag(&sp8) <= 1.0 + temp_f31) { + var_r23++; + var_r31->unk34 = temp_r28->unk00[var_r29]; + var_r31->unk00++; + continue; + } + PSVECNormalize(&sp8, &sp8); + var_r31->unk08.x = sp8.x * temp_f31 + sind(var_r31->unk14.x); + var_r31->unk08.y = sp8.y * temp_f31; + var_r31->unk08.z = sp8.z * temp_f31; + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk14.x += 20.0f; + } else { + var_r23++; + } + if (var_r31->unk00 >= 1) { + var_r27 = var_r31->unk40.r; + var_r27 += (var_r27 - 0xFF) / 20; + if (var_r27 > 0xFF) { + var_r31->unk40.r = 0xFF; + } else { + var_r31->unk40.r = var_r27; + } + temp_r25 = var_r31->unk40.g; + temp_r25 += (temp_r25 - 0xFF) / 20; + if (temp_r25 > 0xFF) { + var_r31->unk40.g = 0xFF; + } else { + var_r31->unk40.g = temp_r25; + } + temp_r24 = var_r31->unk40.b; + temp_r24 += (temp_r24 - 0x80) / 20; + if (temp_r24 > 0x80) { + var_r31->unk40.b = 0x80; + } else { + var_r31->unk40.b = temp_r24; + } + } + var_r31->unk2C -= 0.2f; + if (var_r31->unk2C < 5.0f) { + var_r31->unk2C = 5.0f; + } + var_r31->unk02++; + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + if (var_r23 >= particle->unk_30) { + particle->unk_00++; + } +} diff --git a/src/REL/mstory4Dll/main.c b/src/REL/mstory4Dll/main.c index 1fa909da..b6304228 100644 --- a/src/REL/mstory4Dll/main.c +++ b/src/REL/mstory4Dll/main.c @@ -8,7 +8,7 @@ #include "game/gamework_data.h" #include "game/flag.h" #include "game/chrman.h" -#include "rel_sqrt_consts.h" +#include "math.h" #include "REL/executor.h" #include "game/board/main.h" @@ -21,54 +21,54 @@ typedef struct struct_data0 { } StructData0; StructData0 lbl_1_data_0[] = { - { 0x680000, 0, 0, 0, 1 }, - { 0x680001, 0, 0, 0, 1 }, - { 0x680002, 0, 0, 0, 1 }, - { 0x680003, 0, 0, 0, 1 }, - { 0x680004, 0, 0, 0, 1 }, - { 0x680005, 0, 0, 0, 1 }, - { 0x680006, 0, 0, 0, 1 }, - { 0x680007, 0, 0, 0, 1 }, - { 0x680008, 0, 0, 0, 1 }, - { 0x680009, 0, 0, 0, 1 }, - { 0x68000A, 0, 0, 0, 1 }, - { 0x68000B, 0, 0, 0, 1 }, - { 0x68000C, 0, 0, 0, 1 }, - { 0x68000D, 0, 0, 0, 1 }, - { 0x68000E, 1, 0, 0, 1 }, - { 0x68000F, 0, 0, 0, 1 }, - { 0x680010, 0, 0, 0, 1 }, - { 0x680011, 0, 0, 0, 1 }, - { 0x680012, 0, 0, 0, 1 }, - { 0x680013, 0, 0, 0, 1 }, - { 0x680014, 0, 0, 0, 1 }, - { 0x680015, 0, 0, 0, 1 }, - { 0x680016, 0, 0, 0, 1 }, - { 0x680017, 0, 0, 0, 1 }, - { 0x680018, 0, 0, 0, 1 }, - { 0x680019, 0, 0, 0, 1 }, - { 0x68001A, 0, 0, 0, 1 }, - { 0x68001B, 0, 0, 0, 1 }, - { 0x68001C, 0, 0, 0, 1 }, - { 0x68001D, 0, 0, 0, 1 }, - { 0x68001E, 0, 0, 0, 1 }, - { 0x68001F, 0, 0, 0, 1 }, - { 0x680020, 0, 0, 0, 1 }, - { 0x680021, 0, 0, 0, 1 }, - { 0x680022, 0, 0, 0, 1 }, - { 0x680023, 0, 0, 0, 1 }, - { 0x680024, 0, 0, 0, 1 }, - { 0x680025, 0, 0, 0, 1 }, - { 0x680026, 0, 0, 0, 1 }, - { 0x680027, 0, 0, 0, 1 }, - { 0x680028, 0, 0, 0, 1 }, - { 0x680029, 0, 0, 0, 1 }, - { 0x68002A, 0, 0, 0, 1 }, - { 0x68002B, 0, 0, 0, 1 }, - { 0x68002C, 0, 0, 0, 1 }, - { 0x68002D, 0, 0, 0, 1 }, - { 0x68002E, 0, 0, 0, 1 }, - { 0x68002F, 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 }, }; char *lbl_1_data_430[] = { @@ -575,15 +575,13 @@ void fn_1_13A0(void) GWPlayerCfg[0].character = itemno/6; { s32 i; - s32 character; for(i=1; i<4; i++) { GWPlayerCfg[i].character = GWPlayerCfg[i-1].character+1; - if(GWPlayerCfg[i].character > GW_CHARACTER_MAX) { + if(GWPlayerCfg[i].character > CHARNO_MAX ) { GWPlayerCfg[i].character = 0; } } - character = GWPlayerCfg[0].character; - GWSystem.unk0B[1] = character; + GWStoryCharSet(GWPlayerCfg[0].character); GWPlayer[0].character = GWPlayerCfg[0].character; GWPlayer[1].character = GWPlayerCfg[1].character; GWPlayer[2].character = GWPlayerCfg[2].character; @@ -605,4 +603,4 @@ void fn_1_13A0(void) while(1) { HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/REL/mstoryDll/board_clear.c b/src/REL/mstoryDll/board_clear.c new file mode 100755 index 00000000..e5e5612b --- /dev/null +++ b/src/REL/mstoryDll/board_clear.c @@ -0,0 +1,622 @@ +#include "REL/mstoryDll.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ char unk18[0x1C]; + /* 0x34 */ StructFn352C unk34[4]; +} StructBss1C4; // Size 0x104 + +void fn_1_8A44(void); +void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1); +void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1); +void fn_1_8F68(void); +void fn_1_92D4(s32 arg0); +void fn_1_9718(omObjData* arg0, StructBss19C* arg1); +void fn_1_98A4(omObjData* arg0, StructBss19C* arg1); +void fn_1_992C(void); +void fn_1_A008(omObjData* arg0, StructBss19C* arg1); +void fn_1_A0EC(void); +void fn_1_A478(void); +void fn_1_A504(void); +void fn_1_A5F4(void); + +StructBss1C4 lbl_1_bss_1C4; +StructBss19C lbl_1_bss_19C; +StructBss19C lbl_1_bss_174; +StructBss19C lbl_1_bss_D4[4]; +StructBss19C lbl_1_bss_AC; +Process* lbl_1_bss_A8; + +s32 lbl_1_data_190[][4] = { + { MAKE_MESSID(30, 17), MAKE_MESSID(30, 23), MAKE_MESSID(30, 62), MAKE_MESSID(30, 63) }, + { MAKE_MESSID(30, 18), MAKE_MESSID(30, 24), MAKE_MESSID(30, 64), MAKE_MESSID(30, 65) }, + { MAKE_MESSID(30, 19), MAKE_MESSID(30, 25), MAKE_MESSID(30, 66), MAKE_MESSID(30, 67) }, + { MAKE_MESSID(30, 20), MAKE_MESSID(30, 26), MAKE_MESSID(30, 68), MAKE_MESSID(30, 69) }, + { MAKE_MESSID(30, 21), MAKE_MESSID(30, 27), MAKE_MESSID(30, 70), MAKE_MESSID(30, 71) } +}; + +s32 lbl_1_data_1E0[][3] = { + { MAKE_MESSID(30, 101), MAKE_MESSID(30, 102), MAKE_MESSID(30, 103) }, + { MAKE_MESSID(30, 104), MAKE_MESSID(30, 105), MAKE_MESSID(30, 106) }, + { MAKE_MESSID(30, 107), MAKE_MESSID(30, 108), MAKE_MESSID(30, 109) }, + { MAKE_MESSID(30, 110), MAKE_MESSID(30, 111), MAKE_MESSID(30, 112) }, + { MAKE_MESSID(30, 113), MAKE_MESSID(30, 114), MAKE_MESSID(30, 115) } +}; + +void fn_1_7090(s32 arg0, StructBss19C* arg1) { + fn_1_BAC(10); + fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 5, 15, 0); + fn_1_BAC(5); + HuAudCharVoicePlay(lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0x128); + fn_1_BAC(25); + arg1->unk04 = 0; +} + +void fn_1_7134(s32 arg0, StructBss19C* arg1) { + float temp_f31; + float temp_f30; + float temp_f29; + s32 i; + + temp_f29 = Hu3DData[lbl_1_bss_174.unk00->model[7]].pos.y; + for (i = 0; i <= 30; i++) { + fn_1_B8C(); + temp_f31 = fn_1_870(temp_f29, 1000.0f, i, 30.0f); + temp_f30 = fn_1_870(0.0f, 1800.0f, i, 30.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f); + Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f); + } + arg1->unk04 = 0; +} + +void fn_1_731C(s32 arg0) { + float temp_f31; + float temp_f30; + s32 var_r30; + s32 i; + + var_r30 = arg0; + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1C4.unk34[i].unk00 != lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk00) { + Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[2], HU3D_ATTR_DISPOFF); + } + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][0]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, 1000.0f, 640.0f); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[8], HU3D_ATTR_DISPOFF); + for (i = 0; i <= 180; i++) { + fn_1_B8C(); + temp_f31 = fn_1_948(1000.0f, 150.0f, i, 180.0f); + temp_f30 = fn_1_948(1800.0f, 0.0f, i, 180.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f); + Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f); + } + lbl_1_bss_174.unk04 = (void*) fn_1_8E6C; + fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4; + fn_1_BAC(40); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + fn_1_BAC(50); + lbl_1_bss_58[1] = HuAudSeqPlay(0x35); + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][1]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0); + lbl_1_bss_174.unk04 = (void*) fn_1_8DC0; + fn_1_BAC(30); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090; + fn_1_BAC(90); + lbl_1_bss_AC.unk04 = (void*) fn_1_7134; + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 5, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[lbl_1_bss_1C4.unk00][2]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1A64(lbl_1_bss_1C4.unk08); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]); +} + +void fn_1_79B8(Process* arg0, s32 arg1, s32 arg2) { + s32 i; + + lbl_1_bss_A8 = arg0; + lbl_1_bss_1C4.unk00 = arg1; + lbl_1_bss_1C4.unk10 = arg2; + fn_1_BF4(); + fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_A8, fn_1_A478); + fn_1_3704(); + fn_1_92D4(arg2); + HuPrcChildCreate(fn_1_8F68, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_A0EC, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_992C, 100, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_8A44, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_7AE0(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + fontcolor = FONT_COLOR_WHITE; + printWin(var_r30, var_r29, 220, 150, &sp10); + if (lbl_1_bss_19C.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_174.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_D4[i].unk04 == NULL) { + print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> TRUE", i); + } + } + if (lbl_1_bss_AC.unk04 == NULL) { + print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> TRUE"); + } + print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1C4.unk00, lbl_1_bss_1C4.unk04, lbl_1_bss_1C4.unk10); + print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 110 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_1C4.unk34[i].unk00, lbl_1_bss_1C4.unk34[i].unk04, lbl_1_bss_1C4.unk34[i].unk08, + lbl_1_bss_1C4.unk34[i].unk0C, lbl_1_bss_1C4.unk34[i].unk14, lbl_1_bss_1C4.unk34[i].unk10); + } + } +} + +void fn_1_7E70(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x33); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_7ECC(void) { + s32 spC = 0; + s32 sp8 = 0; + + lbl_1_bss_1C4.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1D1C(lbl_1_bss_1C4.unk08, lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][0]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_9718; + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_A504); + do { + fn_1_B8C(); + } while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL); + do { + fn_1_B8C(); + } while (lbl_1_bss_AC.unk04 != NULL); +} + +void fn_1_8090(void) { + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][2]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4; + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF); + fn_1_BAC(180); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0); + fn_1_BAC(75); + lbl_1_bss_58[1] = HuAudSeqPlay(0x35); + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 4, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][3]); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = NULL; + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090; + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]); + fn_1_1A64(lbl_1_bss_1C4.unk08); + do { + fn_1_B8C(); + } while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL); +} + +void fn_1_83B0(void) { + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[1], 3000); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_A5F4); + fn_1_BAC(150); +} + +void fn_1_8408(void) { + omOvlHisData* var_r30; + u16 sp8[] = { 53, 56, 55, 54, 57 }; + s32 sp14[] = { 9, 14, 10, 11, 12 }; + s32 var_r29; + s32 var_r28; + s32 i; + + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + MGSeqKillAll(); + var_r29 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10; + var_r28 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk14; + GWPlayerCfg[lbl_1_bss_1C4.unk04].character = GWPlayerCfg->character; + GWPlayerCfg[lbl_1_bss_1C4.unk04].pad_idx = GWPlayerCfg->pad_idx; + GWPlayerCfg[lbl_1_bss_1C4.unk04].group = GWPlayerCfg->group; + GWPlayerCfg[lbl_1_bss_1C4.unk04].iscom = GWPlayerCfg->iscom; + GWPlayerCfg->character = var_r29; + GWPlayerCfg->pad_idx = var_r28; + GWPlayerCfg->group = 0; + GWPlayerCfg->iscom = 0; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + GWPlayerCfg[1].character = sp14[GWSystem.board]; + for (i = 1; i < 4; i++) { + GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1; + } + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat); + OSReport("########## dllno - %d\n", sp8[GWSystem.board], GWSystem.board); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(sp8[GWSystem.board], 1, 0, 0); + while (TRUE) { + fn_1_B8C(); + } +} + +void fn_1_87DC(s32 arg0, StructBss19C* arg1) { + fn_1_7E70(); + fn_1_7ECC(); + fn_1_731C(lbl_1_bss_1C4.unk00); + fn_1_83B0(); + fn_1_8408(); + arg1->unk04 = NULL; +} + +void fn_1_8A44(void) { + omObjData* var_r31; + + var_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_19C.unk00 = var_r31; + lbl_1_bss_19C.unk04 = (void*) fn_1_87DC; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_19C.unk04 != NULL) { + lbl_1_bss_19C.unk04(var_r31, &lbl_1_bss_19C); + } + } +} + +void fn_1_8AE0(omObjData* arg0) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 76 + lbl_1_bss_1C4.unk00)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[5]); + fn_1_1DCC(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 6, 6, 0, 2); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81)); + Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96)); + arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 8, 8, 0, 1); +} + +void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg0->work[0]++, 360.0f); + if (arg0->work[0] >= 360) { + arg0->work[0] = 0; + } +} + +void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[7]].pos.y += fn_1_ACC(0.0f, 0.25f, arg0->work[0]++, 360.0f); + Hu3DData[arg0->model[8]].pos.y = Hu3DData[arg0->model[7]].pos.y + 15.0f; + if (arg0->work[0] >= 360) { + arg0->work[0] = 0; + } +} + +void fn_1_8F68(void) { + omObjData* temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_174.unk00 = temp_r31; + lbl_1_bss_174.unk04 = (void*) fn_1_8DC0; + lbl_1_bss_174.unk00->data = &lbl_1_bss_174; + fn_1_8AE0(temp_r31); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_174.unk04 != NULL) { + lbl_1_bss_174.unk04(temp_r31, &lbl_1_bss_174); + } + } +} + +void fn_1_92D4(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_1C4.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_1C4.unk34[i], spC[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1C4.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1; + } +} + +Vec lbl_1_data_354[] = { + { -300.0f, 0.0f, 460.0f }, + { -100.0f, -30.0f, 460.0f }, + { 100.0f, -60.0f, 460.0f }, + { 300.0f, -90.0f, 460.0f } +}; + +void fn_1_9408(omObjData* arg0, s32 arg1) { + s32 var_r30; + s32 temp_r29; + + var_r30 = arg1; + temp_r29 = lbl_1_bss_1C4.unk34[var_r30].unk10; + arg0->model[1] = CharModelCreate(temp_r29, 4); + arg0->motion[1] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[3] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 5)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 48 + temp_r29)); + arg0->motion[5] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 40 + temp_r29)); + CharModelMotionDataClose(temp_r29); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y + 90.0f, lbl_1_data_354[var_r30].z - 15.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62)); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y, lbl_1_data_354[var_r30].z); + if (lbl_1_bss_1C4.unk34[var_r30].unk18 == 4) { + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelShadowMapSet(arg0->model[2]); + Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f); +} + +void fn_1_9718(omObjData* arg0, StructBss19C* arg1) { + Vec sp20 = { 120.0f, 0.0f, 670.0f }; + + fn_1_2908(arg0, 1, sp20, -1.0f, 30.0f, 10.0f); + lbl_1_bss_AC.unk04 = (void*) fn_1_A008; + fn_1_1DCC(lbl_1_bss_174.unk00, 2, 2, 0, 0); + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp20, -45.0f, 30.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + fn_1_2224(lbl_1_bss_174.unk00, 2, 2, 0); + arg1->unk04 = 0; +} + +void fn_1_98A4(omObjData* arg0, StructBss19C* arg1) { + if (arg0->motion[6] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, 4, 15, 1); + arg1->unk04 = 0; + } +} + +void fn_1_992C(void) { + omObjData* temp_r3; + s32 temp_r30; + + temp_r30 = lbl_1_bss_1C4.unk14++; + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_D4[temp_r30].unk00 = temp_r3; + lbl_1_bss_D4[temp_r30].unk04 = NULL; + lbl_1_bss_D4[temp_r30].unk00->data = &lbl_1_bss_D4[temp_r30]; + fn_1_9408(temp_r3, temp_r30); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_D4[temp_r30].unk04 != NULL) { + lbl_1_bss_D4[temp_r30].unk04(temp_r3, &lbl_1_bss_D4[temp_r30]); + } + } +} + +void fn_1_9D08(omObjData* arg0, s32 arg1) { + s32 sp1C[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 97), + DATA_MAKE_NUM(DATADIR_MSTORY, 108), + DATA_MAKE_NUM(DATADIR_MSTORY, 116), + DATA_MAKE_NUM(DATADIR_MSTORY, 124), + DATA_MAKE_NUM(DATADIR_MSTORY, 131) + }; + s32 sp30[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 98), DATA_MAKE_NUM(DATADIR_MSTORY, 100), DATA_MAKE_NUM(DATADIR_MSTORY, 101), DATA_MAKE_NUM(DATADIR_MSTORY, 103), DATA_MAKE_NUM(DATADIR_MSTORY, 104) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 109), DATA_MAKE_NUM(DATADIR_MSTORY, 111), DATA_MAKE_NUM(DATADIR_MSTORY, 112), DATA_MAKE_NUM(DATADIR_MSTORY, 114), DATA_MAKE_NUM(DATADIR_MSTORY, 115) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 117), DATA_MAKE_NUM(DATADIR_MSTORY, 119), DATA_MAKE_NUM(DATADIR_MSTORY, 120), DATA_MAKE_NUM(DATADIR_MSTORY, 122), DATA_MAKE_NUM(DATADIR_MSTORY, 123) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 125), DATA_MAKE_NUM(DATADIR_MSTORY, 126), DATA_MAKE_NUM(DATADIR_MSTORY, 127), DATA_MAKE_NUM(DATADIR_MSTORY, 129), DATA_MAKE_NUM(DATADIR_MSTORY, 130) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 132), DATA_MAKE_NUM(DATADIR_MSTORY, 134), DATA_MAKE_NUM(DATADIR_MSTORY, 135), DATA_MAKE_NUM(DATADIR_MSTORY, 137), DATA_MAKE_NUM(DATADIR_MSTORY, 138) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]); + Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 5, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_A008(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_A0EC(void) { + omObjData* temp_r3; + s32 temp_r30; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_AC.unk00 = temp_r3; + lbl_1_bss_AC.unk04 = NULL; + lbl_1_bss_AC.unk00->data = &lbl_1_bss_AC; + temp_r30 = lbl_1_bss_1C4.unk00; + fn_1_9D08(temp_r3, temp_r30); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_AC.unk04 != NULL) { + lbl_1_bss_AC.unk04(temp_r3, &lbl_1_bss_AC); + } + } +} + +void fn_1_A478(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 170.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1700.0f; +} + +void fn_1_A504(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 125.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1750.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); +} + +void fn_1_A5F4(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk40 == 50) { + fn_1_1DCC(lbl_1_bss_174.unk00, 5, 5, 0, 0); + fn_1_1DCC(lbl_1_bss_174.unk00, 6, 6, 0, 0); + HuAudFXPlay(0xA1); + } + sp8.unk08.x = 0.0f; + sp8.unk08.y = 130.0f; + sp8.unk08.z = 460.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 150.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f); + if (var_r31->unk40++ >= 90) { + if (var_r31->unk40 == 91) { + lbl_1_bss_68 = HuAudFXPlay(0x21); + } + var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f); + Hu3DData[lbl_1_bss_174.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f); + } +} diff --git a/src/REL/mstoryDll/board_miss.c b/src/REL/mstoryDll/board_miss.c new file mode 100755 index 00000000..04c63c30 --- /dev/null +++ b/src/REL/mstoryDll/board_miss.c @@ -0,0 +1,817 @@ +#include "REL/mstoryDll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x1C]; + /* 0x034 */ StructFn352C unk34[4]; + /* 0x104 */ float unk104; +} StructBss450; // Size 0x108 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; +} StructBss2D0; // Size 0x18 + +void fn_1_C360(void); +void fn_1_C7C4(void); +void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1); +void fn_1_D180(void); +void fn_1_D57C(s32 arg0); +void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1); +void fn_1_DC08(omObjData* arg0, StructBss19C* arg1); +void fn_1_DD20(omObjData* arg0, StructBss19C* arg1); +void fn_1_DE04(void); +void fn_1_E228(void); +void fn_1_E2B4(void); +void fn_1_E3E4(void); +void fn_1_E620(void); + +StructBss450 lbl_1_bss_450; +StructBss19C lbl_1_bss_428; +StructBss19C lbl_1_bss_400; +StructBss19C lbl_1_bss_3D8; +StructBss19C lbl_1_bss_338[4]; +AnimData* lbl_1_bss_330[2]; +StructBss2D0 lbl_1_bss_2D0[4]; +s32 lbl_1_bss_2CC; +Process* lbl_1_bss_2C8; + +s32 lbl_1_data_388[][4] = { + { MAKE_MESSID(30, 28), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 29), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 30), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 31), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 32), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) } +}; + +s32 lbl_1_data_3D8[] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, + DATADIR_MARIOMDL1, + DATADIR_LUIGIMDL1, + DATADIR_PEACHMDL1, + DATADIR_YOSHIMDL1, + DATADIR_WARIOMDL1, + DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, + DATADIR_WALUIGIMDL1 +}; + +void fn_1_A830(void) { + s32 temp_r3; + + temp_r3 = HuDataDirReadAsync(DATADIR_BOARD); + if (temp_r3 != -1) { + while (HuDataGetAsyncStat(temp_r3) == 0) { + HuPrcVSleep(); + } + } + HuAR_MRAMtoARAM(DATADIR_BOARD); + while (HuARDMACheck()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_BOARD); + temp_r3 = HuDataDirReadAsync(lbl_1_data_3D8[GWSystem.board]); + if (temp_r3 != -1) { + while (HuDataGetAsyncStat(temp_r3) == 0) { + HuPrcVSleep(); + } + } + lbl_1_bss_2CC = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_A8F8(void) { + s32 i; + s32 j; + + lbl_1_bss_2D0[0].unk00 = 0; + lbl_1_bss_2D0[0].unk04 = 0; + lbl_1_bss_2D0[0].unk10 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10; + lbl_1_bss_2D0[0].unk14 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14; + lbl_1_bss_2D0[0].unk08 = 0; + for (i = 1; i < 4; i++) { + lbl_1_bss_2D0[i].unk10 = -1; + lbl_1_bss_2D0[i].unk14 = i; + lbl_1_bss_2D0[i].unk08 = 1; + } + for (i = 1; i < 4; i++) { + do { + lbl_1_bss_2D0[i].unk10 = rand8() % 8; + for (j = 0; j < 4; j++) { + if (i != j && lbl_1_bss_2D0[j].unk10 != -1 && lbl_1_bss_2D0[i].unk10 == lbl_1_bss_2D0[j].unk10) { + break; + } + } + } while (j != 4); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_2D0[i].unk10; + GWPlayerCfg[i].pad_idx = lbl_1_bss_2D0[i].unk14; + GWPlayerCfg[i].group = 0; + GWPlayerCfg[i].iscom = lbl_1_bss_2D0[i].unk08; + } + BoardSaveInit(GWSystem.board); + CharKill(-1); + HuDataDirClose(DATADIR_MSTORY); + HuPrcChildCreate(fn_1_A830, 100, 0x3000, 0, lbl_1_bss_2C8); +} + +void fn_1_ABAC(void) { + omOvlHisData* var_r30; + s32 sp8[] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 }; + + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_B8C(); + } + CharModelKill(-1); + MGSeqKillAll(); + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY3, 0, var_r30->stat); + do { + fn_1_B8C(); + } while (lbl_1_bss_2CC != 1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(sp8[GWSystem.board], 1, 0, 0); + while (TRUE) { + fn_1_B8C(); + } +} + +void fn_1_ACFC(Process* arg0, s32 arg1, s32 arg2) { + s32 i; + + lbl_1_bss_2C8 = arg0; + lbl_1_bss_450.unk04 = arg2; + lbl_1_bss_450.unk10 = arg2; + lbl_1_bss_450.unk00 = arg1; + fn_1_BF4(); + fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_2C8, fn_1_E228); + fn_1_3704(); + fn_1_D57C(arg2); + HuPrcChildCreate(fn_1_C7C4, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_D180, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_DE04, 100, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_C360, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_AE30(omObjData* arg0) { + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_AEBC(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + printWin(var_r30, var_r29, 220, 160, &sp10); + if (lbl_1_bss_428.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_400.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_3D8.unk04 == NULL) { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> FALSE"); + } else { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_338[i].unk04 == NULL) { + print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(var_r30, var_r29 + 90, 1.0f, "P:%d W:%d", lbl_1_bss_450.unk04, lbl_1_bss_450.unk10); + print8(var_r30, var_r29 + 110, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 120 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_450.unk34[i].unk00, lbl_1_bss_450.unk34[i].unk04, lbl_1_bss_450.unk34[i].unk08, + lbl_1_bss_450.unk34[i].unk0C, lbl_1_bss_450.unk34[i].unk14, lbl_1_bss_450.unk34[i].unk10); + } + } +} + +void fn_1_B230(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x34); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_B28C(void) { + s32 i; + + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_450.unk00][1]); + lbl_1_bss_450.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_450.unk10); + fn_1_CE48(3, -1, 15, 1, 0); + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][0]); + fn_1_1ACC(lbl_1_bss_450.unk08, -1); + fn_1_1CE8(lbl_1_bss_450.unk08, MAKE_MESSID(37, 4)); + fn_1_CE48(1, -1, 15, 1, 0); + fn_1_1A64(lbl_1_bss_450.unk08); + for (i = 0; i < 4; i++) { + lbl_1_bss_338[i].unk04 = (void*) fn_1_DAA4; + } + do { + fn_1_B8C(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_338[i].unk04 != NULL) { + break; + } + } + } while (i != 4); + lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DC08; + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_E2B4); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 == NULL) { + break; + } + } + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_3D8.unk04 == NULL) { + break; + } + } + fn_1_BAC(30); +} + +BOOL fn_1_B4A0(void) { + BOOL temp_r31 = FALSE; + + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][1]); + fn_1_1ACC(lbl_1_bss_450.unk08, 5); + lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_450.unk0C); + return temp_r31; +} + +BOOL fn_1_B588(void) { + BOOL temp_r31 = FALSE; + + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][2]); + fn_1_1ACC(lbl_1_bss_450.unk08, 5); + lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_450.unk0C); + return temp_r31; +} + +BOOL fn_1_B670(void) { + BOOL temp_r31 = FALSE; + + fn_1_CE48(3, -1, 15, 1, 0); + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][3]); + fn_1_1ACC(lbl_1_bss_450.unk08, 5); + fn_1_CE48(1, -1, 15, 1, 0); + lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1B78(lbl_1_bss_450.unk0C, 1); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_450.unk0C); + return temp_r31; +} + +void fn_1_B78C(void) { + fn_1_BAC(60); + fn_1_A8F8(); + Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, 4, 15, 0); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, 3, 15, 0); + fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0); + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[0], 3000); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_E3E4); + fn_1_BAC(150); +} + +void fn_1_B8C8(void) { +} + +void fn_1_B8CC(void) { + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0); + fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_E620); + lbl_1_bss_3D8.unk04 = (void*) fn_1_CEF4; + lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DD20; + do { + fn_1_B8C(); + } while (lbl_1_bss_3D8.unk04 != NULL); + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0); + fn_1_2224(lbl_1_bss_400.unk00, 2, 2, 0); +} + +void fn_1_B9D0(s32 arg0) { + s32 i; + + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + fn_1_B8C(); + if (WipeStatGet() == 0) { + break; + } + } + CharModelKill(-1); + HuAudFadeOut(1); + if (arg0 == 1) { + omOvlReturnEx(1, 1); + } else { + GWPlayerCfg->group = 0; + GWPlayerCfg->character = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10; + GWPlayerCfg->pad_idx = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14; + GWPlayerCfg->iscom = 0; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + omOvlGotoEx(OVL_MENT, 1, 10, 0); + } + while (TRUE) { + fn_1_B8C(); + } +} + +void fn_1_BBD8(s32 arg0, StructBss19C* arg1) { + s32 i; + s32 var_r30 = 0; + + fn_1_B230(); + fn_1_B28C(); + lbl_1_bss_450.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_450.unk10); + while (TRUE) { + fn_1_B8C(); + if (fn_1_B4A0()) { + var_r30 = 0; + break; + } + if (fn_1_B588()) { + var_r30 = 2; + break; + } + if (fn_1_B670()) { + var_r30 = 1; + break; + } + } + fn_1_1A64(lbl_1_bss_450.unk08); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_450.unk34[i].unk00 != lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk00) { + Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[2], HU3D_ATTR_DISPOFF); + } + switch (var_r30) { + case 1: + fn_1_B8C8(); + break; + case 0: + fn_1_B78C(); + break; + case 2: + fn_1_B8CC(); + break; + } + switch (var_r30) { + case 0: + fn_1_ABAC(); + break; + case 1: + case 2: + fn_1_B9D0(var_r30); + /* fallthrough */ + default: + arg1->unk04 = 0; + break; + } +} + +void fn_1_C360(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_428.unk00 = temp_r3; + lbl_1_bss_428.unk04 = (void*) fn_1_BBD8; + lbl_1_bss_428.unk00->data = &lbl_1_bss_428; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_428.unk04 != NULL) { + lbl_1_bss_428.unk04(temp_r3, &lbl_1_bss_428); + } + } +} + +void fn_1_C414(omObjData* arg0, s32 arg1) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 63)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[5]); + fn_1_1DCC(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 64)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelHookSet(arg0->model[5], "partybox_fix2-effect_fook1", arg0->model[6]); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 6, 6, 0, 2); + lbl_1_bss_330[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 65 + arg1 * 2), MEMORY_DEFAULT_NUM)); + lbl_1_bss_330[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 66 + arg1 * 2), MEMORY_DEFAULT_NUM)); + Hu3DAnimCreate(lbl_1_bss_330[0], lbl_1_bss_400.unk00->model[5], "ys26_p0"); + Hu3DAnimCreate(lbl_1_bss_330[1], lbl_1_bss_400.unk00->model[5], "ys26_p1"); +} + +void fn_1_C708(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_C7C4(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_400.unk00 = temp_r3; + lbl_1_bss_400.unk04 = (void*) fn_1_C708; + lbl_1_bss_400.unk00->data = &lbl_1_bss_400; + fn_1_C414(temp_r3, lbl_1_bss_450.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_400.unk04 != NULL) { + lbl_1_bss_400.unk04(temp_r3, &lbl_1_bss_400); + } + } +} + +void fn_1_CB48(omObjData* arg0, s32 arg1) { + s32 sp1C[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 0x61), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x6C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x74), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x7C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x83) + }; + s32 sp30[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x64), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67), DATA_MAKE_NUM(DATADIR_MSTORY, 0x68) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x6F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72), DATA_MAKE_NUM(DATADIR_MSTORY, 0x73) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x77), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7B) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81), DATA_MAKE_NUM(DATADIR_MSTORY, 0x82) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x86), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89), DATA_MAKE_NUM(DATADIR_MSTORY, 0x8A) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]); + Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_3D8.unk00->work[0] = arg4; + lbl_1_bss_3D8.unk00->work[1] = arg1; + lbl_1_bss_3D8.unk00->work[2] = arg2 + 1; +} + +void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { 0.0f, 0.0f, 460.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, 0.0f, 60.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_CFD8(omObjData* arg0, StructBss19C* arg1) { + s32 i; + + for (i = 0; i < 15; i++) { + fn_1_B8C(); + Hu3DData[arg0->model[1]].rot.y = fn_1_828(0.0f, 135.0f, i, 15.0f); + } + arg1->unk04 = 0; +} + +void fn_1_D09C(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_D180(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_3D8.unk00 = temp_r3; + lbl_1_bss_3D8.unk04 = NULL; + lbl_1_bss_3D8.unk00->data = &lbl_1_bss_3D8; + fn_1_CB48(temp_r3, lbl_1_bss_450.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_3D8.unk04 != NULL) { + lbl_1_bss_3D8.unk04(temp_r3, &lbl_1_bss_3D8); + } + if (temp_r3->work[0] != 0) { + fn_1_AE30(temp_r3); + } + } +} + +void fn_1_D57C(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_450.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_450.unk34[i], spC[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_450.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1; + } +} + +Vec lbl_1_data_540[] = { + { -300.0f, 0.0f, 460.0f }, + { -100.0f, -30.0f, 460.0f }, + { 100.0f, -60.0f, 460.0f }, + { 300.0f, -90.0f, 460.0f } +}; + +void fn_1_D6B0(omObjData* arg0, s32 arg1) { + s32 var_r30; + s32 temp_r28; + + var_r30 = arg1; + temp_r28 = lbl_1_bss_450.unk34[var_r30].unk10; + arg0->model[1] = CharModelCreate(lbl_1_bss_450.unk34[arg1].unk10, 4); + arg0->motion[1] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[3] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109)); + CharModelMotionDataClose(temp_r28); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_540[var_r30].x, 90.0f + lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z - 15.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62)); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_540[var_r30].x, lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z); + if (lbl_1_bss_450.unk34[var_r30].unk18 == 4) { + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f); + Hu3DModelShadowMapSet(arg0->model[2]); +} + +void fn_1_D9A8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[0] = arg4; + lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[1] = arg1; + lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[2] = arg2 + 1; +} + +void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1) { + float temp_f31; + s32 i; + + temp_f31 = Hu3DData[arg0->model[1]].pos.y; + for (i = 0; i < 60; i++) { + fn_1_B8C(); + Hu3DData[arg0->model[1]].pos.y = fn_1_948(temp_f31, 0.0f, i, 60.0f); + Hu3DData[arg0->model[2]].pos.y = fn_1_948(temp_f31 - 90.0f, -90.0f, i, 60.0f); + } + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + arg1->unk04 = 0; +} + +void fn_1_DC08(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { 120.0f, 0.0f, 670.0f }; + + lbl_1_bss_3D8.unk04 = (void*) fn_1_D09C; + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0); + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_DD20(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { 600.0f, 0.0f, 700.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_DE04(void) { + omObjData* temp_r3; + s32 temp_r30; + + temp_r30 = lbl_1_bss_450.unk14++; + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_338[temp_r30].unk00 = temp_r3; + lbl_1_bss_338[temp_r30].unk04 = NULL; + lbl_1_bss_338[temp_r30].unk00->data = lbl_1_bss_338; + fn_1_D6B0(temp_r3, temp_r30); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_338[temp_r30].unk04 != NULL) { + lbl_1_bss_338[temp_r30].unk04(temp_r3, &lbl_1_bss_338[temp_r30]); + } + if (temp_r3->work[0] != 0) { + fn_1_AE30(temp_r3); + } + } +} + +void fn_1_E228(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 170.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1700.0f; +} + +void fn_1_E2B4(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 125.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1750.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); + if (lbl_1_bss_450.unk104 != 0.0f) { + var_r31->unk08.y = 125.0f + lbl_1_bss_450.unk104; + } +} + +void fn_1_E3E4(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk40 == 50) { + fn_1_1DCC(lbl_1_bss_400.unk00, 5, 5, 0, 0); + fn_1_1DCC(lbl_1_bss_400.unk00, 6, 6, 0, 0); + HuAudFXPlay(0xA1); + } + sp8.unk08.x = 0.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 460.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 125.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f); + if (var_r31->unk40++ >= 90) { + if (var_r31->unk40 == 91) { + lbl_1_bss_68 = HuAudFXPlay(0x21); + } + var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f); + Hu3DData[lbl_1_bss_400.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f); + } +} + +void fn_1_E620(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 220.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1600.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); +} diff --git a/src/REL/mstoryDll/main.c b/src/REL/mstoryDll/main.c new file mode 100755 index 00000000..7f4f2cb7 --- /dev/null +++ b/src/REL/mstoryDll/main.c @@ -0,0 +1,1012 @@ +#include "REL/mstoryDll.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +char lbl_1_bss_6C[0x3C]; // unused +s32 lbl_1_bss_68; +s32 lbl_1_bss_58[4]; +char lbl_1_bss_48[0x10]; // unused +StructBss4 lbl_1_bss_4; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][4] = { + { 0x37, 0x38, 0x36, 0x39 }, + { 0x43, 0x45, 0x44, 0x43 }, + { 0x40, 0x42, 0x41, 0x40 }, + { 0x4B, 0x4D, 0x4C, 0x4B }, + { 0x46, 0x48, 0x47, 0x46 }, + { 0x3E, 0x3F, 0x3E, 0x3E } +}; + +char* lbl_1_data_100[] = { + "S-2 : NORMAL STORY - BOARD CLEAR EVENT", + "S-3 : NORMAL STORY - BOARD MISS EVENT", + "S-4 : NORMAL STORY - MINIGAME CLEAR EVENT", + "S-5 : NORMAL STORY - MINIGAME MISS EVENT" +}; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* arg0) { + if (omSysExitReq != 0) { + arg0->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +void fn_1_A4(void) { + s32 sp14; + s32 var_r30; + s32 var_r31; + s32 sp10; + s32 spC; + s32 sp8; + s32 i; + + sp14 = 0; + var_r30 = 0; + var_r31 = 0; + sp10 = 1; + spC = 1; + sp8 = 1; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_4C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_B8C(); + } + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + break; + } + if ((HuPadBtnDown[0] & PAD_BUTTON_DOWN) || HuPadStkY[0] >= 30) { + var_r30++; + if (var_r30 >= 4) { + var_r30 = 0; + } + fn_1_BAC(5); + } + if ((HuPadBtnDown[0] & PAD_BUTTON_UP) || HuPadStkY[0] <= -30) { + var_r30--; + if (var_r30 < 0) { + var_r30 = 3; + } + fn_1_BAC(5); + } + if (HuPadBtnDown[0] & PAD_BUTTON_RIGHT) { + var_r31++; + if (var_r31 > 4) { + var_r31 = 0; + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_LEFT) { + var_r31--; + if (var_r31 < 0) { + var_r31 = 4; + } + } + fontcolor = FONT_COLOR_WHITE; + print8(24, 100, 1.5f, ">>>>> MPGC STORY 1 - EVENT SELECT <<<<<"); + print8(24, 130, 1.5f, "MAP NUMBER : %d", var_r31 + 1); + for (i = 0; i < 4; i++) { + fontcolor = FONT_COLOR_WHITE; + if (var_r30 == i) { + fontcolor = FONT_COLOR_CYAN; + } + print8(24, 160 + i * 15, 1.5f, "%s", lbl_1_data_100[i]); + } + fn_1_B8C(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_B8C(); + } + GWSystem.board = var_r31; + switch (var_r30) { + case 0: + fn_1_79B8(lbl_1_bss_0, var_r31, 0); + break; + case 1: + fn_1_ACFC(lbl_1_bss_0, var_r31, 0); + break; + case 2: + fn_1_E710(lbl_1_bss_0, var_r31, 0); + break; + case 3: + fn_1_11624(lbl_1_bss_0, var_r31, 0); + break; + } + while (TRUE) { + fn_1_B8C(); + } +} + +#include "src/REL/executor.c" + +void fn_1_488(void) { + s32 i; + + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + switch (omovlevtno) { + case 0: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWStoryCharGet()) { + break; + } + } + fn_1_79B8(lbl_1_bss_0, GWSystem.board, i); + break; + case 1: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWStoryCharGet()) { + break; + } + } + fn_1_ACFC(lbl_1_bss_0, GWSystem.board, i); + break; + case 2: + if (GWPlayerCoinWinGet(0) >= 10) { + fn_1_E710(lbl_1_bss_0, GWSystem.board, 0); + } else { + fn_1_11624(lbl_1_bss_0, GWSystem.board, 0); + } + break; + case 20: + fn_1_14150(lbl_1_bss_0); + break; + } +} + +void ObjectSetup(void) { + fn_1_488(); +} + +float fn_1_828(float arg0, float arg1, float arg2, float arg3) { + if (arg3 <= arg2) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_850(float arg0, float arg1, float arg2) { + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_870(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_948(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_A10(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +float fn_1_ACC(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_B88(void) { +} + +void fn_1_B8C(void) { + HuPrcVSleep(); +} + +void fn_1_BAC(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_BD4(void) { + HuPrcEnd(); +} + +void fn_1_BF4(void) { + HuWinInit(1); +} + +void fn_1_C18(void) { + HuWinAllKill(); +} + +void fn_1_C38(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f27; + float temp_f30; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + temp_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (temp_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + temp_f31 = (temp_f29 + temp_f25) - 4.0f; + } else if (temp_f29 - (temp_f31 - 2.0f) >= 0.0f) { + temp_f31 = temp_f29; + } else { + temp_f31 -= 2.0f; + } + temp_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (temp_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + temp_f30 = (temp_f28 + temp_f24) - 4.0f; + } else if (temp_f28 - (temp_f30 - 2.0f) >= 0.0f) { + temp_f30 = temp_f28; + } else { + temp_f30 -= 2.0f; + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = temp_f31; + var_f21 = temp_f27; + var_f22 = temp_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_948(temp_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_948(temp_f27, 1.0f, i, 10.0f);; + } else { + var_f22 = fn_1_948(temp_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_948(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_948(temp_f28, temp_f30, i, 10.0f); + var_f20 = fn_1_948(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_948(temp_f29, temp_f31, i - 10, 5.0f); + var_f21 = fn_1_948(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_1680(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg4, float arg5, s32 arg6) { + s32 temp_r31; + + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + if (arg0 == 0) { + arg0 = 550 - arg2; + } else { + arg0 = 1.0f + (576.0f - arg2) / 2.0f; + } + if (arg1 == 0) { + arg1 = 430 - arg3; + } + temp_r31 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + if (arg6 != -1) { + arg6 = GWPlayerCfg[arg6].pad_idx; + winData[temp_r31].active_pad = 1; + } else { + winData[temp_r31].active_pad = 0xF; + } + HuWinMesPalSet(temp_r31, 7, 0, 0, 0); + fn_1_C38(temp_r31, arg4, arg5, 1); + return temp_r31; +} + +s32 fn_1_1834(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + return fn_1_1680(arg0, arg1, arg2, arg3, 0.5f, 0.5f, arg4); +} + +void fn_1_1A04(s32 arg0, float arg1, float arg2) { + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_C38(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1A64(s32 arg0) { + fn_1_1A04(arg0, 0.5f, 0.5f); +} + +void fn_1_1ACC(s32 arg0, s32 arg1) { + s32 i; + + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +BOOL fn_1_1B78(s32 arg0, s32 arg1) { + s32 var_r31; + s32 i; + + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + var_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + if (var_r31 != 0) { + var_r31 = FALSE; + } else { + var_r31 = TRUE; + } + return var_r31; +} + +BOOL fn_1_1C34(s32 arg0) { + return fn_1_1B78(arg0, 0); +} + +void fn_1_1CE8(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_1D1C(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1D5C(s16 arg0) { + ModelData* var_r28; + HsfMaterial* var_r31; + HsfData* temp_r30; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + } +} + +void fn_1_1DCC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_1F44(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[arg1])) { + return; + } + if (arg0->motion[arg2] == Hu3DMotionShiftIDGet(arg0->model[arg1])) { + return; + } + fn_1_1F44(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2224(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !Hu3DMotionEndCheck(arg0->model[arg1])); +} + +s32 fn_1_22B4(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == GWPlayerCfg[i].group) { + break; + } + } + return i; +} + +void fn_1_22FC(s32 arg0, s32 arg1) { + while (TRUE) { + if (arg1 & HuPadBtnDown[arg0]) { + break; + } + HuPrcVSleep(); + } +} + +void fn_1_2350(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + var_r31->unk08.z -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08.x += HuPadStkX[0] / 10.0f; + var_r31->unk08.y += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk20.y += HuPadStkX[0] / 100.0f; + if (var_r31->unk20.x < 0.0f) { + var_r31->unk20.x += 360.0f; + } + if (var_r31->unk20.x >= 360.0f) { + var_r31->unk20.x -= 360.0f; + } + if (var_r31->unk20.y < 0.0f) { + var_r31->unk20.y += 360.0f; + } + if (var_r31->unk20.y >= 360.0f) { + var_r31->unk20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(24, 40, 1.5f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08.x, var_r31->unk08.y, var_r31->unk08.z); + print8(24, 55, 1.5f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20.x, var_r31->unk20.y, var_r31->unk20.z); + print8(24, 70, 1.5f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_2710(void (*arg0)(void)) { + lbl_1_bss_4.unk00 = arg0; +} + +void fn_1_2720(void (*arg0)(void)) { + lbl_1_bss_4.unk04 = arg0; +} + +void fn_1_2730(omObjData* arg0) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08.x; + Center.y = var_r31->unk08.y; + Center.z = var_r31->unk08.z; + CRot.x = var_r31->unk20.x; + CRot.y = var_r31->unk20.y; + CRot.z = var_r31->unk20.z; + CZoom = var_r31->unk38; +} + +void fn_1_27E8(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 0.1f, 10000.0f, 1.2f); + lbl_1_bss_4.unk00 = arg1; + lbl_1_bss_4.unk04 = fn_1_2350; + omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0, 0, -1, fn_1_2730); +} + +void fn_1_2908(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + float sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + float var_f31; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp4C.y = sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp18 = arg4; + sp28.x = Hu3DData[arg0->model[arg1]].rot.x; + sp28.y = Hu3DData[arg0->model[arg1]].rot.y; + sp28.z = Hu3DData[arg0->model[arg1]].rot.z; + sp1C = 0.0f; + sp20 = arg3; + sp24 = 0.0f; + sp14 = arg5; + var_f31 = -1.1025f; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[3], 0.0f, 5.0f, 0U); + HuPrcSleep(10); + while (TRUE) { + if (var_f31 >= 1.7f) { + var_f31 = 1.7f; + } + sp4C.y += var_f31 * var_f31 * (var_f31 >= 0.0f ? -17.5f : 17.5f); + if (sp4C.y <= 0.0f && var_f31 > 0.0f) { + sp4C.y = 0.0f; + } + sp4C.x = sp40.x += 6.0 * sind(sp28.y); + sp4C.z = sp40.z += 6.0 * cosd(sp28.y); + Hu3DModelPosSet(arg0->model[1], sp4C.x, sp4C.y, sp4C.z); + Hu3DModelRotSet(arg0->model[1], sp28.x, sp28.y, sp28.z); + HuPrcVSleep(); + if (sp4C.y <= arg2.y && var_f31 > 0.0f) { + break; + } + var_f31 += 0.11f; + } +} + +void fn_1_2CB0(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 i; + + var_r26 = 0; + var_r25 = 0; + sp48.x = Hu3DData[arg0->model[arg1]].pos.x; + sp48.y = Hu3DData[arg0->model[arg1]].pos.y; + sp48.z = Hu3DData[arg0->model[arg1]].pos.z; + sp3C.x = arg2.x; + sp3C.y = arg2.y; + sp3C.z = arg2.z; + sp14 = arg4; + sp24.x = Hu3DData[arg0->model[arg1]].rot.x; + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + sp24.z = Hu3DData[arg0->model[arg1]].rot.z; + sp18.x = 0.0f; + sp18.y = arg3; + sp18.z = 0.0f; + if (sp3C.x - sp48.x >= 0.0f) { + var_r24 = 1; + } else { + var_r24 = 0; + } + if (sp3C.z - sp48.z >= 0.0f) { + var_r23 = 1; + } else { + var_r23 = 0; + } + temp_r27 = arg5; + do { + sp30.y = -(atan2d(sp3C.z - sp48.z, sp3C.x - sp48.x) - 90.0); + if (sp30.y < 0.0f) { + sp30.y += 360.0f; + } else if (sp30.y >= 360.0f) { + sp30.y -= 360.0f; + } + if (sp30.y >= 180.0f) { + if (sp24.y - sp30.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp30.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp54.x = sp48.x += 6.0 * sind(sp30.y); + sp54.z = sp48.z += 6.0 * cosd(sp30.y); + if (var_r24 != 0) { + if (sp48.x >= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } else { + if (sp48.x <= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } + if (var_r23 != 0) { + if (sp48.z >= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } else { + if (sp48.z <= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } + sp24.y = fn_1_850(sp24.y, sp30.y, 10.0f); + Hu3DModelPosSet(arg0->model[1], sp54.x, sp48.y, sp54.z); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } while (var_r25 != 1 || var_r26 != 1); + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + for (i = 0; i <= temp_r27; i++) { + if (sp18.y >= 180.0f) { + if (sp24.y - sp18.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp18.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp24.y = fn_1_828(sp24.y, sp18.y, i, temp_r27); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } +} + +void fn_1_34A4(s16 arg0) { + ModelData* var_r28; + HsfData* temp_r30; + HsfMaterial* var_r31; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + var_r31->litColor[0] = 0xFF; + var_r31->litColor[1] = 0xFF; + var_r31->litColor[2] = 0xFF; + } +} + +void fn_1_352C(StructFn352C* arg0, s32 arg1) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; +} + +s32 fn_1_35C0(void) { + s32 i; + + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + break; + } + } + if (i == 4) { + return -1; + } + return i; +} + +s32 fn_1_3618(s32 arg0) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, arg0, arg0, arg0); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); + return temp_r3; +} + +void fn_1_3704(void) { + Vec sp20 = { 0.0f, 3000.0f, 800.0f }; + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_37C8(StructBss4* arg0) { + arg0->unk08.x = arg0->unk14; + arg0->unk08.y = arg0->unk18; + arg0->unk08.z = arg0->unk1C; + arg0->unk20.x = arg0->unk2C; + arg0->unk20.y = arg0->unk30; + arg0->unk20.z = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_3804(StructBss4* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08.x; + arg0->unk18 = arg0->unk08.y; + arg0->unk1C = arg0->unk08.z; + arg0->unk2C = arg0->unk20.x; + arg0->unk30 = arg0->unk20.y; + arg0->unk34 = arg0->unk20.z; + arg0->unk3C = arg0->unk38; +} + +void fn_1_3848(StructBss4* arg0, StructBss4* arg1, s32 arg2, float arg3) { + arg0->unk08.x = fn_1_850(arg0->unk08.x, arg1->unk14, arg3); + arg0->unk08.y = fn_1_850(arg0->unk08.y, arg1->unk18, arg3); + arg0->unk08.z = fn_1_850(arg0->unk08.z, arg1->unk1C, arg3); + arg0->unk20.x = fn_1_850(arg0->unk20.x, arg1->unk2C, arg3); + arg0->unk20.y = fn_1_850(arg0->unk20.y, arg1->unk30, arg3); + arg0->unk20.z = fn_1_850(arg0->unk20.z, arg1->unk34, arg3); + if (arg2 != 0) { + arg0->unk38 = fn_1_850(arg0->unk38, arg1->unk3C, arg3); + } +} + +void fn_1_3ABC(StructBss4* arg0, float arg1) { + fn_1_3848(arg0, arg0, 1, arg1); +} + +void fn_1_3D28(StructBss4* arg0, float arg1) { + fn_1_3848(arg0, arg0, 0, arg1); +} + +void fn_1_3F54(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_828(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_828(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_828(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_828(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_828(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_828(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_828(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_41D0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_3F54(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_4484(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_3F54(arg0, arg1, arg2, arg3); + fn_1_3848(arg0, arg1, 1, arg4); +} + +void fn_1_48F0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_948(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_948(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_948(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_948(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_948(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_948(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_948(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_4D44(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_48F0(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_51D0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_48F0(arg0, arg1, arg2, arg3); + fn_1_3848(arg0, arg1, 1, arg4); +} + +void fn_1_5828(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_870(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_870(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_870(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_870(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_870(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_870(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_870(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_5CEC(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_5828(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_61E8(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_5828(arg0, arg1, arg2, arg3); + fn_1_3848(arg0, arg1, 1, arg4); +} + +void fn_1_68B0(omObjData* arg0) { + s32 var_r30; + + if (arg0->work[0] == 0 && arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + var_r30 = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[var_r30], 0.0f, 15.0f, 0x40000001U); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_6974(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(arg0, 1, arg1, arg3, arg4); + if (arg4 == 0) { + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; + } +} + +void fn_1_6AFC(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_6B30(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_6B70(s32 arg0, s32 arg1) { + fn_1_1ACC(arg0, arg1); +} + +void fn_1_6C1C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_r28 = 0; + s32 var_r29 = 0; + s32 i; + + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1ACC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +BOOL fn_1_6E04(s32 arg0) { + return fn_1_1B78(arg0, 0); +} + +s32 fn_1_6EB8(s32 arg0, s32 arg1) { + float spC[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 var_r31; + + HuWinMesMaxSizeGet(1, spC, arg0); + var_f31 = spC[0]; + var_f30 = spC[1]; + var_f29 = 550.0f - var_f31; + var_f28 = 430.0f - var_f30; + var_r31 = HuWinExCreateStyled(var_f29, var_f28, var_f31, var_f30, -1, 1); + if (arg1 != -1) { + arg1 = GWPlayerCfg[arg1].pad_idx; + winData[var_r31].active_pad = 1; + } else { + winData[var_r31].active_pad = 0xF; + } + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + fn_1_C38(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +void fn_1_7028(s32 arg0) { + fn_1_1A04(arg0, 0.5f, 0.5f); +} diff --git a/src/REL/mstoryDll/mg_clear.c b/src/REL/mstoryDll/mg_clear.c new file mode 100755 index 00000000..48fb2dc4 --- /dev/null +++ b/src/REL/mstoryDll/mg_clear.c @@ -0,0 +1,691 @@ +#include "REL/mstoryDll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/printfunc.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ char unk0C[4]; + /* 0x010 */ s32 unk10; + /* 0x014 */ char unk14[0x20]; + /* 0x034 */ StructFn352C unk34[4]; + /* 0x104 */ s32 unk104; +} StructBss608; // Size 0x108 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; +} StructData570; // Size 0x14 + +void fn_1_FD1C(void); +void fn_1_10298(omObjData* arg0, StructBss19C* arg1); +void fn_1_10384(omObjData* arg0, StructBss19C* arg1); +void fn_1_10450(omObjData* arg0, StructBss19C* arg1); +void fn_1_1054C(void); +void fn_1_108F8(void); +void fn_1_10C6C(s32 arg0); +void fn_1_10FD0(void); +void fn_1_112A0(void); +void fn_1_1132C(void); +void fn_1_1141C(void); +void fn_1_11534(void); + +StructBss608 lbl_1_bss_608; +StructBss19C lbl_1_bss_5E0; +StructBss19C lbl_1_bss_5B8; +StructBss19C lbl_1_bss_590; +StructBss19C lbl_1_bss_568; +AnimData* lbl_1_bss_560[2]; +s32 lbl_1_bss_55C; +Process* lbl_1_bss_558; + +StructData570 lbl_1_data_570[] = { + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 } +}; + +s32 lbl_1_data_930[][4] = { + { MAKE_MESSID(30, 72), MAKE_MESSID(30, 73) }, + { MAKE_MESSID(30, 74), MAKE_MESSID(30, 75) }, + { MAKE_MESSID(30, 76), MAKE_MESSID(30, 77) }, + { MAKE_MESSID(30, 78), MAKE_MESSID(30, 79) }, + { MAKE_MESSID(30, 80), MAKE_MESSID(30, 81) } +}; + +void fn_1_E710(Process* arg0, s32 arg1, s32 arg2) { + lbl_1_bss_558 = arg0; + lbl_1_bss_608.unk00 = arg1; + lbl_1_bss_608.unk10 = arg2; + fn_1_BF4(); + lbl_1_bss_608.unk104 = fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_558, fn_1_112A0); + fn_1_3704(); + fn_1_10C6C(arg2); + HuPrcChildCreate(fn_1_1054C, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_108F8, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_10FD0, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_FD1C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_E828(omObjData* arg0) { + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_E8B4(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + printWin(var_r30, var_r29, 220, 130, &sp10); + if (lbl_1_bss_5E0.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_5B8.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_590.unk04 == NULL) { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE"); + } + if (lbl_1_bss_568.unk04 == NULL) { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> FALSE"); + } else { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> TRUE"); + } + print8(var_r30, var_r29 + 60, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_608.unk00, lbl_1_bss_608.unk04, lbl_1_bss_608.unk10); + print8(var_r30, var_r29 + 80, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 90 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_608.unk34[i].unk00, lbl_1_bss_608.unk34[i].unk04, lbl_1_bss_608.unk34[i].unk08, + lbl_1_bss_608.unk34[i].unk0C, lbl_1_bss_608.unk34[i].unk14, lbl_1_bss_608.unk34[i].unk10); + } + } +} + +void fn_1_EC00(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x36); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_EC5C(void) { + lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10); + fn_1_1D1C(lbl_1_bss_608.unk08, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0); + fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][0]); + fn_1_1ACC(lbl_1_bss_608.unk08, -1); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_608.unk08); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 2, 2, 0, 0); + fn_1_BAC(90); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 4, 15, 0); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 4, 15, 0); + fn_1_2224(lbl_1_bss_5B8.unk00, 2, 2, 0); + fn_1_BAC(60); + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 1, 84, 1); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 84, 1); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_1132C); + lbl_1_bss_5B8.unk04 = (void*) fn_1_10450; + do { + fn_1_B8C(); + } while (lbl_1_bss_5B8.unk04 != NULL); + fn_1_BAC(10); + lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 3, 15, 1); + if (lbl_1_bss_608.unk00 == 0) { + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][2]); + } else { + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][0]); + } + fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 5) + lbl_1_bss_608.unk00, 2); + fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][1]); + fn_1_1ACC(lbl_1_bss_608.unk08, -1); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_608.unk08); +} + +void fn_1_EFE0(s32 arg0, StructBss19C* arg1) { + s32 temp_r31; + + temp_r31 = HuAudSStreamPlay(7); + do { + fn_1_B8C(); + } while (HuAudSStreamStatGet(temp_r31) != 0); + HuAudSeqPause(lbl_1_bss_58[0], 0, 1000); + arg1->unk04 = 0; +} + +void fn_1_F050(omObjData* arg0, StructBss19C* arg1) { + s32 temp_r31; + + temp_r31 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00; + fn_1_BAC(150); + OSReport("########## PRESENT_SE : %d\n", temp_r31); + HuAudFXPlay(0x8D4 + temp_r31); + if (lbl_1_data_570[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00].unk04 == 1) { + fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 0, 0); + fn_1_BAC(60); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 12, 0, 1); + } else { + fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 1, 0); + } + arg1->unk04 = 0; +} + +void fn_1_F19C(void) { + s32 i; + + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 2, 15, 1); + for (i = 0; i < 30; i++) { + fn_1_B8C(); + if (lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 != 5) { + Hu3DData[lbl_1_bss_568.unk00->model[1]].pos.x = fn_1_828(120.0f, 80.0f, i, 30.0f); + } + Hu3DData[lbl_1_bss_568.unk00->model[1]].rot.y = fn_1_828(-60.0f, -90.0f, i, 30.0f); + } + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 5, 5, 0); + while (TRUE) { + fn_1_B8C(); + if (Hu3DMotionTimeGet(lbl_1_bss_568.unk00->model[1]) >= 35.0f) { + break; + } + } + Hu3DModelPosSet(lbl_1_bss_5B8.unk00->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelHookReset(lbl_1_bss_5B8.unk00->model[9]); + Hu3DModelHookSet(lbl_1_bss_568.unk00->model[1], CharModelHookNameGet(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 1, 1), lbl_1_bss_5B8.unk00->model[5]); + fn_1_BAC(60); + lbl_1_bss_5B8.unk04 = (void*) fn_1_10298; + HuAudFXPlay(0xA3); + HuAudCharVoicePlay(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0x128); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 6, 6, 0, 0); + Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_5B8.unk00->model[5], HU3D_ATTR_DISPOFF); + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 6, 5, 0); + HuAudSeqPause(lbl_1_bss_58[0], 1, 1000); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.0f); + Hu3DMotionTimeSet(lbl_1_bss_568.unk00->model[1], 50.0f); + Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[8], HU3D_ATTR_DISPOFF); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 8, 8, 0, 1); + fn_1_BAC(30); + HuAudFXPlay(0xA9); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_11534); + fn_1_BAC(60); + lbl_1_bss_568.unk04 = (void*) fn_1_F050; + lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10); + lbl_1_bss_590.unk04 = (void*) fn_1_EFE0; + fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 6) + lbl_1_bss_608.unk00, 0); + fn_1_6C1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, 134), 0, 300); + fn_1_1CE8(lbl_1_bss_608.unk08, MAKE_MESSID(37, 4)); + fn_1_1A64(lbl_1_bss_608.unk08); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_1141C); + lbl_1_bss_5B8.unk04 = (void*) fn_1_10384; + fn_1_BAC(30); + Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.1f); + fn_1_BAC(180); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); +} + +s32 fn_1_F780(s32 arg0) { + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_F86C(void) { + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_BAC(60); + SLCommonSet(); + SLSaveBoardStory(); + if (SLSaveFlagGet() == 1) { + SLSave(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_55C = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_F910(void) { + omOvlHisData* var_r31; + + msmSeStopAll(FALSE, 1000); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); + CharModelKill(-1); + HuAudFXAllStop(); + HuAudSStreamAllStop(); + { + s32 sp8[] = { 53, 56, 55, 54, 57 }; + + GWMGAvailSet(omMgIndexGet(sp8[lbl_1_bss_608.unk00]) + 0x191); + } + GWGameStat.present[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00] = 1; + OSReport("########## PRESENTFLG CHR:%d, MAP:%d, PRESENT:%d\n", lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, lbl_1_bss_608.unk00, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00); + var_r31 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY, 20, var_r31->stat); + omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00 + 1, 0); +} + +void fn_1_FAE4(omObjData* arg0, StructBss19C* arg1) { + s32 sp8 = 0; + + lbl_1_bss_58[0] = HuAudSeqPlay(0x36); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); + fn_1_EC5C(); + fn_1_F19C(); + fn_1_F910(); + arg1->unk04 = 0; +} + +void fn_1_FD1C(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_5E0.unk00 = temp_r3; + lbl_1_bss_5E0.unk04 = (void*) fn_1_FAE4; + lbl_1_bss_5E0.unk00->data = &lbl_1_bss_5E0; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_5E0.unk04 != NULL) { + lbl_1_bss_5E0.unk04(temp_r3, &lbl_1_bss_5E0); + } + } +} + +void fn_1_FDD0(omObjData* arg0, s32 arg1) { + s32 temp_r29; + + temp_r29 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10; + arg0->model[7] = Hu3DModelCreateFile(lbl_1_data_570[temp_r29 * 6 + arg1].unk00); + arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]); + if (lbl_1_data_570[temp_r29 * 6 + arg1].unk04 == 1) { + arg0->motion[12] = Hu3DJointMotionFile(arg0->model[7], DATA_MAKE_NUM(DATADIR_MSTORY4, 48)); + } + Hu3DModelPosSet(arg0->model[7], 0.0f, 180.0f, 825.0f); + Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[7]); + fn_1_1DCC(arg0, 7, 7, 0, 2); + HuDataDirClose(DATADIR_MSTORY4); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81)); + Hu3DModelShadowSet(arg0->model[5]); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 83)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelPosSet(arg0->model[6], 25.0f, 125.0f, 900.0f); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 6, 6, 0, 2); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96)); + arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 8, 8, 0, 2); + arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 84)); + arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]); + Hu3DModelPosSet(arg0->model[9], 0.0f, 0.0f, 460.0f); + Hu3DModelShadowSet(arg0->model[9]); + fn_1_1DCC(arg0, 9, 9, 0, 2); + Hu3DModelHookSet(arg0->model[9], "carrier2-target0", arg0->model[5]); + lbl_1_bss_560[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 85 + arg1 * 2), MEMORY_DEFAULT_NUM)); + lbl_1_bss_560[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 86 + arg1 * 2), MEMORY_DEFAULT_NUM)); + Hu3DAnimCreate(lbl_1_bss_560[0], lbl_1_bss_5B8.unk00->model[5], "cylinder3"); + Hu3DAnimCreate(lbl_1_bss_560[1], lbl_1_bss_5B8.unk00->model[5], "wakuwaku"); +} + +void fn_1_10298(omObjData* arg0, StructBss19C* arg1) { + Mtx sp8; + + Hu3DData[arg0->model[7]].pos.y = fn_1_ACC(180.0f, 185.0f, arg1->unk08++, 360.0f); + Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8); + Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_10384(omObjData* arg0, StructBss19C* arg1) { + Mtx sp8; + + Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f; + Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8); + Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]); + arg1->unk0C += 2; +} + +void fn_1_10450(omObjData* arg0, StructBss19C* arg1) { + fn_1_1DCC(arg0, 9, 9, 0, 1); + while (TRUE) { + fn_1_B8C(); + Hu3DData[arg0->model[9]].pos.z += 2.5f; + if (Hu3DData[arg0->model[9]].pos.z >= 670.0f) { + break; + } + } + Hu3DData[arg0->model[9]].pos.z = 670.0f; + Hu3DMotionSpeedSet(arg0->model[9], 0.0f); + arg1->unk04 = 0; +} + +void fn_1_1054C(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_5B8.unk00 = temp_r3; + lbl_1_bss_5B8.unk04 = NULL; + fn_1_FDD0(temp_r3, lbl_1_bss_608.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_5B8.unk04 != NULL) { + lbl_1_bss_5B8.unk04(temp_r3, &lbl_1_bss_5B8); + } + } +} + +void fn_1_105F8(omObjData* arg0, s32 arg1) { + s32 sp1C[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 0x0061), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x006C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x0074), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x007C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x0083) + }; + s32 sp30[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x0062), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0064), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0065), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0067), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0068) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x006D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x006F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0070), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0072), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0073) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x0075), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0077), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0078), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007B) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x007D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0081), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0082) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x0084), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0086), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0087), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0089), DATA_MAKE_NUM(DATADIR_MSTORY, 0x008A) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]); + Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 5, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_108F8(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_590.unk00 = temp_r3; + lbl_1_bss_590.unk04 = NULL; + fn_1_105F8(temp_r3, lbl_1_bss_608.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_590.unk04 != NULL) { + lbl_1_bss_590.unk04(temp_r3, &lbl_1_bss_590); + } + } +} + +void fn_1_10C6C(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_608.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_608.unk34[i], spC[i]); + } +} + +void fn_1_10D50(omObjData* arg0, s32 arg1) { + s32 temp_r30; + + temp_r30 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10; + arg0->model[1] = CharModelCreate(temp_r30, 1); + arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2)); + arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53)); + arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 24 + temp_r30)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 32 + temp_r30)); + CharModelMotionDataClose(temp_r30); + Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, -60.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); +} + +void fn_1_10F24(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(lbl_1_bss_568.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_568.unk00->work[0] = arg4; + lbl_1_bss_568.unk00->work[1] = arg1; + lbl_1_bss_568.unk00->work[2] = arg2 + 1; +} + +void fn_1_10FD0(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_568.unk00 = temp_r3; + lbl_1_bss_568.unk04 = NULL; + lbl_1_bss_568.unk00->data = &lbl_1_bss_568; + fn_1_10D50(temp_r3, lbl_1_bss_608.unk04); // Second argument required to match. + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_568.unk04 != NULL) { + lbl_1_bss_568.unk04(temp_r3, &lbl_1_bss_568); + } + if (temp_r3->work[0] != 0) { + fn_1_E828(temp_r3); + } + } +} + +void fn_1_112A0(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 125.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1750.0f; +} + +void fn_1_1132C(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1400.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 120.0f, 10.0f); +} + +void fn_1_1141C(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk14 = 0.0f; + var_r31->unk18 = Hu3DData[lbl_1_bss_5B8.unk00->model[7]].pos.y; + var_r31->unk1C = 0.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = fn_1_828(1100.0f, 1400.0f, var_r31->unk40++, 240.0f); + fn_1_3ABC(var_r31, 30.0f); +} + +void fn_1_11534(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 160.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1100.0f; + fn_1_61E8(var_r31, &sp8, var_r31->unk40++, 10.0f, 5.0f); +} diff --git a/src/REL/mstoryDll/mg_miss.c b/src/REL/mstoryDll/mg_miss.c new file mode 100755 index 00000000..2bfd5f70 --- /dev/null +++ b/src/REL/mstoryDll/mg_miss.c @@ -0,0 +1,446 @@ +#include "REL/mstoryDll.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ char unk14[0x20]; + /* 0x34 */ StructFn352C unk34[4]; +} StructBss7B4; // Size 0x104 + +void fn_1_12630(void); +void fn_1_129D4(void); +void fn_1_12C94(s32 arg0); +void fn_1_12F20(omObjData* arg0, StructBss19C* arg1); +void fn_1_12FA8(omObjData*, StructBss19C* arg1); +void fn_1_130C0(void); +void fn_1_13570(void); +void fn_1_13880(void); +void fn_1_1390C(void); + +StructBss7B4 lbl_1_bss_7B4; +StructBss19C lbl_1_bss_78C; +StructBss19C lbl_1_bss_764; +StructBss19C lbl_1_bss_73C; +StructBss19C lbl_1_bss_714; +Process* lbl_1_bss_710; + +s32 lbl_1_data_AF8[][3] = { + { MAKE_MESSID(30, 40), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 41), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 42), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 43), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 44), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) } +}; + +void fn_1_11624(Process* arg0, s32 arg1, s32 arg2) { + lbl_1_bss_710 = arg0; + lbl_1_bss_7B4.unk00 = arg1; + lbl_1_bss_7B4.unk10 = arg2; + fn_1_BF4(); + fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_710, fn_1_13880); + fn_1_3704(); + fn_1_12C94(arg2); + HuPrcChildCreate(fn_1_129D4, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_130C0, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_13570, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_12630, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_11730(void) { + s32 var_r31 = 16; + s32 var_r30 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + fontcolor = FONT_COLOR_WHITE; + printWin(var_r31, var_r30, 220, 120, &sp10); + if (lbl_1_bss_78C.unk04 == NULL) { + print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_764.unk04 == NULL) { + print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_73C.unk04 == NULL) { + print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> FALSE"); + } else { + print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> TRUE"); + } + if (lbl_1_bss_714.unk04 == NULL) { + print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> TRUE"); + } + print8(var_r31, var_r30 + 50, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_7B4.unk00, lbl_1_bss_7B4.unk04, lbl_1_bss_7B4.unk10); + print8(var_r31, var_r30 + 70, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r31, var_r30 + 80 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_7B4.unk34[i].unk00, lbl_1_bss_7B4.unk34[i].unk04, lbl_1_bss_7B4.unk34[i].unk08, + lbl_1_bss_7B4.unk34[i].unk0C, lbl_1_bss_7B4.unk34[i].unk14, lbl_1_bss_7B4.unk34[i].unk10); + } + } +} + +void fn_1_11A8C(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x34); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_11AE8(void) { + s32 spC = 0; + s32 sp8 = 0; + + fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 2, 15, 0); + lbl_1_bss_73C.unk04 = (void*) fn_1_12F20; + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_7B4.unk00][1]); + HuAudCharVoicePlay(lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10, 0x12E); + lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10); + fn_1_1DCC(lbl_1_bss_714.unk00, 1, 2, 15, 1); + fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][0]); + fn_1_1ACC(lbl_1_bss_7B4.unk08, -1); + fn_1_1CE8(lbl_1_bss_7B4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_714.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_7B4.unk08); +} + +BOOL fn_1_11C6C(void) { + BOOL temp_r31 = FALSE; + + HuWinInsertMesSet(lbl_1_bss_7B4.unk08, MAKE_MESSID(30, 54) + lbl_1_bss_7B4.unk00, 3); + fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][1]); + fn_1_1ACC(lbl_1_bss_7B4.unk08, 5); + lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1C34(lbl_1_bss_7B4.unk0C); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_7B4.unk0C); + if (temp_r31) { + fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 4, 15, 0); + lbl_1_bss_73C.unk04 = NULL; + fn_1_1DCC(lbl_1_bss_714.unk00, 1, 3, 15, 1); + } + return temp_r31; +} + +BOOL fn_1_11DD8(void) { + s32 temp_r31 = FALSE; + + fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][2]); + fn_1_1ACC(lbl_1_bss_7B4.unk08, 5); + lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1B78(lbl_1_bss_7B4.unk0C, 1); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_7B4.unk0C); + return temp_r31; +} + +void fn_1_11EC4(void) { + lbl_1_bss_73C.unk04 = (void*) fn_1_12FA8; + HuAudSeqFadeOut(lbl_1_bss_58[0], 3000); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_1390C); + fn_1_BAC(150); +} + +void fn_1_11F28(void) { +} + +void fn_1_11F2C(s32 arg0) { + omOvlHisData* var_r30; + OverlayID sp8[] = { OVL_M445, OVL_M448, OVL_M447, OVL_M446, OVL_M449 }; + + if (arg0 != 0) { + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + } + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); + CharModelKill(-1); + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat); + if (arg0 == 0) { + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(sp8[GWSystem.board], 1, 0, 0); + } else { + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_12070(omObjData* arg0, StructBss19C* arg1) { + s32 var_r31; + + fn_1_11A8C(); + fn_1_11AE8(); + lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10); + while (TRUE) { + fn_1_B8C(); + if (fn_1_11C6C()) { + var_r31 = 0; + break; + } + if (fn_1_11DD8()) { + var_r31 = 1; + break; + } + } + fn_1_1A64(lbl_1_bss_7B4.unk08); + fn_1_BAC(60); + switch (var_r31) { + case 0: + fn_1_11EC4(); + break; + case 1: + fn_1_11F28(); + break; + } + fn_1_11F2C(var_r31); + arg1->unk04 = NULL; +} + +void fn_1_12630(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_78C.unk00 = temp_r3; + lbl_1_bss_78C.unk04 = (void*) fn_1_12070; + lbl_1_bss_78C.unk00->data = &lbl_1_bss_78C; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_78C.unk04 != NULL) { + lbl_1_bss_78C.unk04(temp_r3, &lbl_1_bss_78C); + } + } +} + +void fn_1_126E4(omObjData* arg0) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(lbl_1_bss_7B4.unk00 + DATA_MAKE_NUM(DATADIR_MSTORY, 76)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f); + Hu3DModelShadowSet(arg0->model[5]); + fn_1_1DCC(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]); + fn_1_1DCC(arg0, 6, 6, 0, 2); +} + +void fn_1_12918(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_129D4(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_764.unk00 = temp_r3; + lbl_1_bss_764.unk04 = (void*) fn_1_12918; + lbl_1_bss_764.unk00->data = &lbl_1_bss_764; + fn_1_126E4(temp_r3); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_764.unk04 != NULL) { + lbl_1_bss_764.unk04(temp_r3, &lbl_1_bss_764); + } + } +} + +void fn_1_12C94(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_7B4.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_7B4.unk34[i], spC[i]); + } +} + +void fn_1_12D78(omObjData* arg0) { + s32 temp_r30; + + temp_r30 = lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10; + arg0->model[1] = CharModelCreate(temp_r30, 1); + arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 24)); + arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 52)); + arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[5] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53)); + CharModelVoiceEnableSet(temp_r30, arg0->motion[2], 0); + CharModelMotionDataClose(temp_r30); + Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, -45.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); +} + +void fn_1_12F20(omObjData* arg0, StructBss19C* arg1) { + if (arg0->motion[2] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, 3, 15, 1); + arg1->unk04 = 0; + } +} + +void fn_1_12FA8(omObjData* arg0, StructBss19C* arg1) { + s32 i; + + fn_1_BAC(10); + fn_1_1DCC(arg0, 1, 5, 15, 0); + fn_1_B8C(); + Hu3DMotionTimeSet(arg0->model[1], 60.0f); + for (i = 0; i < 50; i++) { + fn_1_B8C(); + Hu3DData[arg0->model[1]].rot.y = fn_1_828(-60.0f, -120.0f, i, 60.0f); + } + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_130C0(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_73C.unk00 = temp_r3; + lbl_1_bss_73C.unk04 = NULL; + lbl_1_bss_73C.unk00->data = &lbl_1_bss_73C; + fn_1_12D78(temp_r3); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_73C.unk04 != NULL) { + lbl_1_bss_73C.unk04(temp_r3, &lbl_1_bss_73C); + } + } +} + +void fn_1_132EC(omObjData* arg0, s32 arg1) { + s32 sp8[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 97), + DATA_MAKE_NUM(DATADIR_MSTORY, 108), + DATA_MAKE_NUM(DATADIR_MSTORY, 116), + DATA_MAKE_NUM(DATADIR_MSTORY, 124), + DATA_MAKE_NUM(DATADIR_MSTORY, 131) + }; + s32 sp1C[][3] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp8[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][2]); + Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 45.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); +} + +void fn_1_13570(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_714.unk00 = temp_r3; + lbl_1_bss_714.unk04 = NULL; + lbl_1_bss_714.unk00->data = &lbl_1_bss_714; + fn_1_132EC(temp_r3, lbl_1_bss_7B4.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_714.unk04 != NULL) { + lbl_1_bss_714.unk04(temp_r3, &lbl_1_bss_714); + } + } +} + +void fn_1_13880(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 125.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1750.0f; +} + +void fn_1_1390C(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk40 == 50) { + fn_1_1DCC(lbl_1_bss_764.unk00, 5, 5, 0, 0); + fn_1_1DCC(lbl_1_bss_764.unk00, 6, 6, 0, 0); + HuAudFXPlay(0xA1); + } + sp8.unk08.x = 0.0f; + sp8.unk08.y = 130.0f; + sp8.unk08.z = 460.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 150.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f); + if (var_r31->unk40++ >= 90) { + if (var_r31->unk40 == 91) { + lbl_1_bss_68 = HuAudFXPlay(0x21); + } + var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f); + Hu3DData[lbl_1_bss_764.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f); + } +} diff --git a/src/REL/mstoryDll/save.c b/src/REL/mstoryDll/save.c new file mode 100755 index 00000000..eb848ba1 --- /dev/null +++ b/src/REL/mstoryDll/save.c @@ -0,0 +1,128 @@ +#include "REL/mstoryDll.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +s32 lbl_1_bss_8BC; +Process *lbl_1_bss_8B8; + +s32 fn_1_13B48(s32 arg0) +{ + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_13C34(void) +{ + float sp8[2]; + s32 temp_r30; + s32 var_r29; + s32 var_r31; + + temp_r30 = 1; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_8BC = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(var_r29, 288.0f, 240.0f); + espAttrReset(var_r29, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { +#if VERSION_REV1 + GWGameStat.story_continue = 1; +#endif + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_8BC = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_13E2C(void) +{ + _SetFlag(9); + if (_CheckFlag(FLAG_ID_MAKE(0, 2)) && _CheckFlag(FLAG_ID_MAKE(0, 3)) && _CheckFlag(FLAG_ID_MAKE(0, 4)) && _CheckFlag(FLAG_ID_MAKE(0, 5)) + && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + OSReport( + "########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); + HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_B8C(); + } while (lbl_1_bss_8BC != 1); + omOvlGotoEx(OVL_MSTORY2, 1, 0, 0); + } + else { + OSReport( + "########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); + HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_B8C(); + } while (lbl_1_bss_8BC != 1); + omOvlGotoEx(OVL_MENT, 1, 10, 0); + } + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_14150(Process *arg0) +{ + lbl_1_bss_8B8 = arg0; + HuPrcChildCreate(fn_1_13E2C, 100, 0x2000, 0, HuPrcCurrentGet()); +} diff --git a/src/REL/nisDll/main.c b/src/REL/nisDll/main.c new file mode 100644 index 00000000..4dc839ce --- /dev/null +++ b/src/REL/nisDll/main.c @@ -0,0 +1,22 @@ +#include "game/object.h" +#include "math.h" + +void fn_1_68(omObjData *object); + +void ObjectSetup(void) +{ + Process *process = omInitObjMan(0xA, 0x2000); + omObjData *object = omAddObjEx(process, 0, 0, 0, -1, fn_1_68); + u32 *work = object->work; +} + +void fn_1_68(omObjData *object) +{ + s8 *work = (s8 *)object->work; + if (*work != 0) { + (void)work; + return; + } +} + +#include "src/REL/executor.c" diff --git a/src/REL/option/camera.c b/src/REL/option/camera.c index 99e2aa68..bd93317b 100755 --- a/src/REL/option/camera.c +++ b/src/REL/option/camera.c @@ -17,8 +17,8 @@ typedef struct { /* 0x2C */ Vec posPrev; /* 0x38 */ Vec targetPrev; /* 0x44 */ char unk44[0xC]; - /* 0x50 */ float prevZoom; - /* 0x54 */ float prevRot; + /* 0x50 */ float zoomPrev; + /* 0x54 */ float rotPrev; /* 0x58 */ Vec posTarget; /* 0x64 */ Vec posFocus; /* 0x70 */ char unk70[0xC]; @@ -34,8 +34,6 @@ typedef struct { static void ExecCameraObj(omObjData *object); static void ExecCamera(omObjData *object); -static void fn_1_12E4(omObjData *object); -static void PrintDebugInfo(omObjData *object); omObjData *optionCamera; @@ -45,11 +43,8 @@ static s32 pad_04_00000018_data = -1; omObjData *OptionCameraCreate(void) { - omObjData *object; - CameraWork *work; - - object = omAddObjEx(optionObjMan, 1001, 0, 0, 3, ExecCameraObj); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM); + omObjData *object = omAddObjEx(optionObjMan, 1001, 0, 0, 3, ExecCameraObj); + CameraWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM); object->data = work; work->pos.x = 0.0f; work->pos.y = 0.0f; @@ -110,33 +105,26 @@ void OptionCameraViewSet(omObjData *object, float zoom, float rot, float y, s32 work->zoomTarget = zoom; work->rotTarget = rot; work->targetPrev.y = work->target.y; - work->prevZoom = work->zoom; - work->prevRot = work->rot; + work->zoomPrev = work->zoom; + work->rotPrev = work->rot; work->timeRot = 0.0f; work->rotSpeed = 1.0f / duration; } -// GetZoom float OptionCameraZoomGet(omObjData *object) { CameraWork *work = object->data; - float zoom; - - zoom = work->zoom; + float zoom = work->zoom; return zoom; } -// GetRot float OptionCameraRotGet(omObjData *object) { CameraWork *work = object->data; - float rot; - - rot = work->rot; + float rot = work->rot; return rot; } -// Getpos void OptionCameraPosGet(omObjData *object, float *x, float *y, float *z) { CameraWork *temp_r31 = object->data; @@ -146,7 +134,6 @@ void OptionCameraPosGet(omObjData *object, float *x, float *y, float *z) *z = temp_r31->pos.z; } -// Gettarget void OptionCameraTargetGet(omObjData *object, float *x, float *y, float *z) { CameraWork *work = object->data; @@ -156,7 +143,6 @@ void OptionCameraTargetGet(omObjData *object, float *x, float *y, float *z) *z = work->target.z; } -// CameraDone s32 OptionCameraDoneCheck(omObjData *object) { CameraWork *work = object->data; @@ -205,8 +191,8 @@ static void ExecCamera(omObjData *object) if (work->timeRot < 1.0f) { weight = sind(90.0f * work->timeRot); work->target.y = work->targetPrev.y + weight * (work->posFocus.y - work->targetPrev.y); - work->zoom = work->prevZoom + weight * (work->zoomTarget - work->prevZoom); - work->rot = work->prevRot + weight * (work->rotTarget - work->prevRot); + work->zoom = work->zoomPrev + weight * (work->zoomTarget - work->zoomPrev); + work->rot = work->rotPrev + weight * (work->rotTarget - work->rotPrev); if ((work->timeRot += work->rotSpeed) >= 1.0f) { work->target.y = work->posFocus.y; work->zoom = work->zoomTarget; @@ -223,8 +209,7 @@ static void ExecCamera(omObjData *object) work->rot += 360.0f; } - Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x, - work->target.y, work->target.z); + Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x, work->target.y, work->target.z); } static void CameraExecDebug(omObjData *object) diff --git a/src/REL/option/guide.c b/src/REL/option/guide.c index 2487f72c..44124475 100755 --- a/src/REL/option/guide.c +++ b/src/REL/option/guide.c @@ -22,8 +22,8 @@ typedef struct { /* 0x48 */ char unk48[0xC]; /* 0x54 */ float time; /* 0x58 */ float speed; - /* 0x5C */ s32 unk5C; - /* 0x60 */ s32 unk60; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ s32 unk_60; } GuideWork; // Size 0x64 #define MODE_DISABLED 0 @@ -68,13 +68,13 @@ omObjData *OptionGuideCreate(void) object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 12)); Hu3DModelLayerSet(object->model[0], 1); for (i = 0; i < 3; i++) { - object->motion[i] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(guideMotTbl[i], MEMORY_DEFAULT_NUM, HEAP_DATA)); + object->motion[i] = Hu3DJointMotionFile(object->model[0], guideMotTbl[i]); } - work->unk5C = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xC); - work->unk60 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xC); + work->unk_5C = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xC); + work->unk_60 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xC); CharModelLayerSetAll(1); Hu3DModelShadowSet(object->model[0]); - Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); SetExecMode(object, MODE_DISABLED); UpdateGuide(object); return object; @@ -186,9 +186,7 @@ static void ExecGuide(omObjData *object) static void UpdateGuide(omObjData *object) { GuideWork *work = object->data; - s16 motion; - - motion = 0; + s16 motion = 0; work->distRemain = sqrtf(work->posDelta.x * work->posDelta.x + work->posDelta.z * work->posDelta.z); if (0.001f <= work->distRemain) { if (14.0f <= work->distRemain) { @@ -209,7 +207,7 @@ static void UpdateGuide(omObjData *object) work->pos.x += work->posDelta.x; work->pos.z += work->posDelta.z; if (work->motion != motion) { - Hu3DMotionShiftSet(*object->model, object->motion[motion], 0.0f, 8.0f, 0x40000001); + Hu3DMotionShiftSet(*object->model, object->motion[motion], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); work->motion = motion; } omSetTra(object, work->pos.x, work->pos.y, work->pos.z); @@ -219,9 +217,8 @@ static void UpdateGuide(omObjData *object) static float LerpAngle(float start, float end, float time) { float angle; - float delta; - delta = fmod(end - start, 360.0); + float delta = fmod(end - start, 360.0); if (0.0f > delta) { delta += 360.0f; } diff --git a/src/REL/option/record.c b/src/REL/option/record.c index d625d764..763bc418 100755 --- a/src/REL/option/record.c +++ b/src/REL/option/record.c @@ -6,16 +6,22 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" +#include "game/sprite.h" #include "game/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" +#include "version.h" + +#ifndef __MWERKS__ +#include "game/gamework.h" +#endif #define RECORD_TYPE_BOARD 0 #define RECORD_TYPE_MG 1 -#define NUM_CHARACTERS 8 -#define NUM_BOARDS 6 +#define CHARACTERS_MAX 8 +#define BOARDS_MAX 6 #define PLAY_COUNT_NUM_DIGITS 4 #define WIN_COUNT_NUM_DIGITS 3 @@ -40,7 +46,7 @@ typedef struct { /* 0x008 */ OptionWindow *window[10]; /* 0x030 */ s32 execMode; /* 0x034 */ s16 sprList[153]; - /* 0x166 */ s16 unk166[3]; + /* 0x166 */ s16 unk166[3]; /* 0x16C */ s32 recordType; /* 0x170 */ s32 board; /* 0x174 */ s32 mgPage; @@ -91,15 +97,15 @@ omObjData *OptionRecordCreate(void) object = omAddObjEx(optionObjMan, 1003, 0, 0, 1, NULL); work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(RecordWork), MEMORY_DEFAULT_NUM); object->data = work; - for (i = 0; i < NUM_BOARDS; i++) { + for (i = 0; i < BOARDS_MAX; i++) { work->boardRecord[i].playCount = GWBoardPlayCountGet(i); work->boardRecord[i].maxStars = GWBoardMaxStarsGet(i); work->boardRecord[i].maxCoins = GWBoardMaxCoinsGet(i); - for (character = 0; character < NUM_CHARACTERS; character++) { + for (character = 0; character < CHARACTERS_MAX; character++) { work->boardRecord[i].winCount[character] = GWBoardWinCountGet(character, i); } } - for (i = 0; i < 6; i++) { + for (i = 0; i < BOARDS_MAX; i++) { work->mgRecord[i] = GWMGRecordGet(mgRecordIdxTbl[i]); } work->board = 0; @@ -199,11 +205,11 @@ static void ExecRecord(omObjData *object) OptionWinAnimIn(work->window[1]); OptionWinMesSet(work->window[1], MAKE_MESSID(47, 169)); if (!work->cameraDoneF) { - Hu3DModelAttrReset(work->hand->model[0], 1); + Hu3DModelAttrReset(work->hand->model[0], HU3D_ATTR_DISPOFF); work->cameraDoneF = TRUE; } - pos.x = 505.0 * -sin(305 * M_PI / 180.0); - pos.z = 505.0 * cos(305 * M_PI / 180.0); + pos.x = 505.0 * -sind(305); + pos.z = 505.0 * cosd(305); pos.y = 144.0f - 14.0f * work->recordType; omSetTra(work->hand, pos.x, pos.y, pos.z); object->unk10 = 3; @@ -287,7 +293,7 @@ static void ExecRecord(omObjData *object) } OptionWinAnimOut(work->window[0]); OptionWinAnimOut(work->window[1]); - Hu3DModelAttrSet(work->hand->model[0], 1); + Hu3DModelAttrSet(work->hand->model[0], HU3D_ATTR_DISPOFF); object->unk10 = 6; /* fallthrough */ case 6: @@ -312,7 +318,7 @@ static omObjData *CreateSystem(void) object = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 1)); - Hu3DModelAttrSet(object->model[0], 0x40000002); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(object->model[0], 0); Hu3DMotionStartEndSet(object->model[0], 0.0f, 6.0f); Hu3DMotionTimeSet(object->model[0], 6.0f); @@ -342,7 +348,7 @@ static void StartSystemMotion(omObjData *object, s32 type) Hu3DMotionTimeSet(model, 6.0f); break; } - Hu3DModelAttrReset(object->model[0], 0x40000002); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); } static omObjData *CreateHand(void) @@ -352,10 +358,10 @@ static omObjData *CreateHand(void) object = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 14)); Hu3DModelLayerSet(object->model[0], 2); - Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); omSetRot(object, 30.0f, 190.0f, 0.0f); omSetSca(object, 0.6f, 0.6f, 0.6f); - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); return object; } @@ -572,7 +578,7 @@ static void ShowBoard(omObjData *object, s32 board) espPosSet(work->sprList[board], 275.0f, 72.0f); value = work->boardRecord[work->board].playCount; for (i = 0; i < PLAY_COUNT_NUM_DIGITS; i++) { - espPosSet(work->sprList[i + 11], 323.0f + 20.0f * i, 116.0f); + espPosSet(work->sprList[i + 11], (VERSION_NTSC ? 323.0f : 392.0f) + 20.0f * i, 116.0f); if (value > 999) { espBankSet(work->sprList[i + 11], i + 10); } @@ -583,7 +589,7 @@ static void ShowBoard(omObjData *object, s32 board) espPosSet(work->sprList[8], 416.0f, 120.0f); value = work->boardRecord[work->board].maxCoins; for (i = 0; i < MAX_COINS_NUM_DIGITS; i++) { - espPosSet(work->sprList[i + 15], 364.0f + 20.0f * i, 268.0f); + espPosSet(work->sprList[i + 15], (VERSION_NTSC ? 364.0f : 392.0f) + 20.0f * i, 268.0f); if (value > 999) { espBankSet(work->sprList[i + 15], i + 10); } @@ -591,10 +597,12 @@ static void ShowBoard(omObjData *object, s32 board) espBankSet(work->sprList[i + 15], GetDigit(value, 3 - i)); } } +#if VERSION_NTSC espPosSet(work->sprList[9], 456.0f, 268.0f); +#endif value = work->boardRecord[work->board].maxStars; for (i = 0; i < MAX_STARS_NUM_DIGITS; i++) { - espPosSet(work->sprList[i + 19], 364.0f + 20.0f * i, 312.0f); + espPosSet(work->sprList[i + 19], (VERSION_NTSC ? 364.0f : 392.0f) + 20.0f * i, 312.0f); if (value > 999) { espBankSet(work->sprList[i + 19], i + 10); } @@ -602,8 +610,10 @@ static void ShowBoard(omObjData *object, s32 board) espBankSet(work->sprList[i + 19], GetDigit(value, 3 - i)); } } +#if VERSION_NTSC espPosSet(work->sprList[10], 456.0f, 312.0f); - for (i = 0; i < NUM_CHARACTERS; i++) { +#endif + for (i = 0; i < CHARACTERS_MAX; i++) { espPosSet(work->sprList[i + 49], 92.0f + 50.0f * i, 200.0f); for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) { espPosSet(work->sprList[i * 3 + 23 + j], 80.0f + 50.0f * i + 12.0f * j, 230.0f); @@ -616,16 +626,20 @@ static void ShowBoard(omObjData *object, s32 board) for (i = 0; i < PLAY_COUNT_NUM_DIGITS; i++) { espDispOn(work->sprList[i + 11]); } +#if VERSION_NTSC espDispOn(work->sprList[8]); +#endif for (i = 0; i < MAX_COINS_NUM_DIGITS; i++) { espDispOn(work->sprList[i + 15]); } +#if VERSION_NTSC espDispOn(work->sprList[9]); +#endif for (i = 0; i < MAX_STARS_NUM_DIGITS; i++) { espDispOn(work->sprList[i + 19]); } espDispOn(work->sprList[10]); - for (i = 0; i < NUM_CHARACTERS; i++) { + for (i = 0; i < CHARACTERS_MAX; i++) { espDispOn(work->sprList[i + 49]); for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) { espDispOn(work->sprList[i * 3 + 23 + j]); @@ -646,23 +660,8 @@ static void ShowBoard(omObjData *object, s32 board) #define BOARD_SPR_HIDE_COUNT 53 -static const s32 boardSprHideTbl[BOARD_SPR_HIDE_COUNT] = -{ - 0, 1, 2, 3, 4, 5, - 49, 50, 51, 52, 53, 54, 55, 56, - 8, 9, 10, - 11, 12, 13, 14, - 23, 24, 25, - 26, 27, 28, - 29, 30, 31, - 32, 33, 34, - 38, 39, 40, - 35, 36, 37, - 41, 42, 43, - 44, 45, 46, - 15, 16, 17, 18, - 19, 20, 21, 22 -}; +static const s32 boardSprHideTbl[BOARD_SPR_HIDE_COUNT] = { 0, 1, 2, 3, 4, 5, 49, 50, 51, 52, 53, 54, 55, 56, 8, 9, 10, 11, 12, 13, 14, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 38, 39, 40, 35, 36, 37, 41, 42, 43, 44, 45, 46, 15, 16, 17, 18, 19, 20, 21, 22 }; static void HideBoard(omObjData *object) { @@ -685,9 +684,9 @@ static void ShowTotal(omObjData *object) s32 j; espPosSet(work->sprList[6], 275.0f, 72.0f); - for (i = 0; i < NUM_CHARACTERS; i++) { + for (i = 0; i < CHARACTERS_MAX; i++) { espPosSet(work->sprList[i + 57], 148.0f + 80.0f * (i % 4), 172.0f + 104.0f * (i / 4)); - for (j = 0, winCount = 0; j < NUM_BOARDS; j++) { + for (j = 0, winCount = 0; j < BOARDS_MAX; j++) { winCount += work->boardRecord[j].winCount[i]; } for (j = 0; j < WIN_COUNT_NUM_DIGITS; j++) { @@ -696,7 +695,7 @@ static void ShowTotal(omObjData *object) } } espDispOn(work->sprList[6]); - for (i = 0; i < NUM_CHARACTERS; i++) { + for (i = 0; i < CHARACTERS_MAX; i++) { espDispOn(work->sprList[i + 57]); for (j = 0; j < 3; j++) { espDispOn(work->sprList[i * 3 + 65 + j]); @@ -709,19 +708,8 @@ static void ShowTotal(omObjData *object) #define TOTAL_SPR_HIDE_COUNT 33 -static const s32 totalSprHideTbl[TOTAL_SPR_HIDE_COUNT] = -{ - 6, - 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, - 68, 69, 70, - 71, 72, 73, - 74, 75, 76, - 77, 78, 79, - 80, 81, 82, - 83, 84, 85, - 86, 87, 88 -}; +static const s32 totalSprHideTbl[TOTAL_SPR_HIDE_COUNT] + = { 6, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88 }; static void HideTotal(omObjData *object) { @@ -785,14 +773,14 @@ static void ShowMG(omObjData *object, s32 page) } break; case DISPLAY_TYPE_TIME: - timeMin = value / 3600; - timeSec = (value % 3600) / 60; - timeCenti = (value % 3600) % 60; + timeMin = value / (60 * REFRESH_RATE); + timeSec = (value % (60 * REFRESH_RATE)) / REFRESH_RATE; + timeCenti = (value % (60 * REFRESH_RATE)) % REFRESH_RATE; if (mgTbl[mg].id == 405 || mgTbl[mg].id == 432) { - timeCenti *= 1.6916667f; + timeCenti *= (101.5f / REFRESH_RATE); } else { - timeCenti *= 1.6666666f; + timeCenti *= (100.0f / REFRESH_RATE); } for (j = 1; j < MG_TIME_NUM_DIGITS; j++) { espPosSet(work->sprList[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i); @@ -844,18 +832,9 @@ static void ShowMG(omObjData *object, s32 page) #define MG_SPR_HIDE_COUNT 65 -static const s32 mgSprHideTbl[65] = -{ - 7, - 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152 -}; +static const s32 mgSprHideTbl[65] = { 7, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152 }; static void HideMG(omObjData *object) { diff --git a/src/REL/option/rumble.c b/src/REL/option/rumble.c index af0397ff..aeae0f72 100755 --- a/src/REL/option/rumble.c +++ b/src/REL/option/rumble.c @@ -112,7 +112,7 @@ static void ExecRumble(omObjData *object) break; } if (!work->cameraDoneF) { - Hu3DModelAttrReset(work->hand->model[0], 1); + Hu3DModelAttrReset(work->hand->model[0], HU3D_ATTR_DISPOFF); work->cameraDoneF = TRUE; Hu3DModelHookSet(work->system->model[0], "target", work->hand->model[0]); } @@ -156,10 +156,10 @@ static void ExecRumble(omObjData *object) if (work->rumbleF) { HuPadRumbleSet(0, 60, 10, 5); Hu3DMotionTimeSet(work->hiliteOn->model[0], 0.0f); - Hu3DModelAttrReset(work->hiliteOn->model[0], 1); + Hu3DModelAttrReset(work->hiliteOn->model[0], HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrSet(work->hiliteOn->model[0], 1); + Hu3DModelAttrSet(work->hiliteOn->model[0], HU3D_ATTR_DISPOFF); } object->unk10 = 1; } @@ -167,7 +167,7 @@ static void ExecRumble(omObjData *object) case 4: OptionWinAnimOut(work->window[1]); OptionWinAnimOut(work->window[0]); - Hu3DModelAttrSet(work->hand->model[0], 1); + Hu3DModelAttrSet(work->hand->model[0], HU3D_ATTR_DISPOFF); OptionRumbleMotionHideStart(object); object->unk10 = 5; /* fallthrough */ @@ -193,16 +193,16 @@ static omObjData *CreateHand(void) hand->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 15)); Hu3DModelLayerSet(hand->model[0], 3); omSetRot(hand, 0.0f, 180.0f, 0.0f); - Hu3DModelAttrSet(hand->model[0], 1); + Hu3DModelAttrSet(hand->model[0], HU3D_ATTR_DISPOFF); return hand; } -static void KillHand(omObjData *hand) +static void KillHand(omObjData *object) { s32 i; for (i = 0; i < 1; i++) { - Hu3DModelKill(hand->model[i]); + Hu3DModelKill(object->model[i]); } } @@ -212,7 +212,7 @@ static omObjData *CreateSystem(void) system = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); system->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 2)); - Hu3DModelAttrSet(system->model[0], 0x40000002); + Hu3DModelAttrSet(system->model[0], HU3D_MOTATTR_PAUSE); if (GWRumbleGet()) { Hu3DMotionTimeSet(system->model[0], 60.0f); } @@ -222,21 +222,21 @@ static omObjData *CreateSystem(void) return system; } -static void KillSystem(omObjData *system) +static void KillSystem(omObjData *object) { s32 i; for (i = 0; i < 1; i++) { - Hu3DModelKill(system->model[i]); + Hu3DModelKill(object->model[i]); } } -static void StartSystemMotion(omObjData *system, s32 rumbleF, BOOL slowF) +static void StartSystemMotion(omObjData *object, s32 rumbleF, BOOL slowF) { - s16 model = system->model[0]; + s16 model = object->model[0]; - Hu3DModelAttrReset(system->model[0], 0x40000002); - Hu3DModelAttrReset(system->model[0], 0x40000001); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); if (rumbleF) { Hu3DMotionStartEndSet(model, 60.0f, 120.0f); if (slowF) { @@ -263,28 +263,28 @@ static omObjData *CreatePad(void) pad = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); pad->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 9)); - Hu3DModelAttrSet(pad->model[0], 0x40000001); + Hu3DModelAttrSet(pad->model[0], HU3D_MOTATTR_LOOP); return pad; } -static void KillPad(omObjData *pad) +static void KillPad(omObjData *object) { s32 i; for (i = 0; i < 1; i++) { - Hu3DModelKill(pad->model[i]); + Hu3DModelKill(object->model[i]); } } -static void ShakePad(omObjData *pad, BOOL on) +static void ShakePad(omObjData *object, BOOL on) { if (on) { - Hu3DModelAttrReset(pad->model[0], 0x40000002); - Hu3DModelAttrSet(pad->model[0], 0x40000001); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); } else { - Hu3DModelAttrSet(pad->model[0], 0x40000002); - Hu3DModelAttrReset(pad->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP); } } @@ -294,7 +294,7 @@ static omObjData *CreatePadFilter(void) object = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 10)); - Hu3DModelAttrSet(object->model[0], 0x40000002); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(object->model[0], 2); return object; @@ -316,8 +316,8 @@ void OptionRumbleMotionShowStart(omObjData *object) Hu3DMotionStartEndSet(model, 0.0f, 40.0f); Hu3DMotionTimeSet(model, 0.0f); - Hu3DModelAttrReset(work->padFilter->model[0], 0x40000002); - Hu3DModelAttrReset(work->padFilter->model[0], 0x40000001); + Hu3DModelAttrReset(work->padFilter->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(work->padFilter->model[0], HU3D_MOTATTR_LOOP); Hu3DModelLayerSet(work->padFilter->model[0], 2); HuAudFXPlay(0x83D); } @@ -329,8 +329,8 @@ void OptionRumbleMotionHideStart(omObjData *object) Hu3DMotionStartEndSet(model, 40.0f, 80.0f); Hu3DMotionTimeSet(model, 40.0f); - Hu3DModelAttrReset(work->padFilter->model[0], 0x40000002); - Hu3DModelAttrReset(work->padFilter->model[0], 0x40000001); + Hu3DModelAttrReset(work->padFilter->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(work->padFilter->model[0], HU3D_MOTATTR_LOOP); HuAudFXPlay(0x83E); } @@ -349,10 +349,10 @@ static omObjData *CreateHiliteOn(void) object = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 11)); if (GWRumbleGet()) { - Hu3DModelAttrReset(object->model[0], 1); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); } return object; } diff --git a/src/REL/option/scene.c b/src/REL/option/scene.c index 91e400d7..4eeb4d2b 100755 --- a/src/REL/option/scene.c +++ b/src/REL/option/scene.c @@ -12,7 +12,7 @@ #include "game/sprite.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" +#include "math.h" typedef struct { /* 0x00 */ s16 id; @@ -52,7 +52,8 @@ void OptionFadeSprite(s16 sprite, BOOL inF, s32 duration) if (inF) { work->speed = work->speed; work->tplvl = 0.0f; - } else { + } + else { work->speed = -work->speed; work->tplvl = 1.0f; } @@ -103,7 +104,7 @@ void OptionFadeModel(s16 model, BOOL inF, s32 duration) work->speed = -work->speed; work->tplvl = 1.0f; } - Hu3DModelAttrReset(work->id, 1); + Hu3DModelAttrReset(work->id, HU3D_ATTR_DISPOFF); Hu3DModelTPLvlSet(work->id, work->tplvl); process = HuPrcChildCreate(FadeModel, 0x3000, 0x1500, 0, HuPrcCurrentGet()); process->user_data = work; @@ -128,7 +129,7 @@ static void FadeModel(void) } Hu3DModelTPLvlSet(work->id, work->tplvl); if (work->tplvl <= 0.0f) { - Hu3DModelAttrSet(work->id, 1); + Hu3DModelAttrSet(work->id, HU3D_ATTR_DISPOFF); } HuMemDirectFree(work); HuPrcEnd(); @@ -199,7 +200,7 @@ static void KillScene(void) HuPrcVSleep(); sprite = espEntry(0x860020, 0x1388, 0); espPosSet(sprite, 288.0f, 240.0f); - espAttrReset(sprite, 4); + espAttrReset(sprite, HUSPR_ATTR_DISPOFF); Hu3DBGColorSet(0, 0, 0); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); while (WipeStatGet() != 0) { diff --git a/src/REL/option/sound.c b/src/REL/option/sound.c index 64d2e379..7012bb90 100755 --- a/src/REL/option/sound.c +++ b/src/REL/option/sound.c @@ -513,9 +513,9 @@ omObjData *OptionSoundCreate(void) for (i = 0; i < NUM_BOARDS; i++) { musicPageOn[i + 3] = (GWGameStat.board_play_count[i] != 0) ? TRUE : FALSE; } - musicPageOn[11] = (GWGameStat.field10E_bit6 != 0) ? TRUE : FALSE; - musicPageOn[12] = (GWGameStat.field10E_bit6 != 0) ? TRUE : FALSE; - musicPageOn[13] = (GWGameStat.field10E_bit6 != 0) ? TRUE : FALSE; + musicPageOn[11] = (GWGameStat.musicAllF != 0) ? TRUE : FALSE; + musicPageOn[12] = (GWGameStat.musicAllF != 0) ? TRUE : FALSE; + musicPageOn[13] = (GWGameStat.musicAllF != 0) ? TRUE : FALSE; return object; } @@ -624,7 +624,7 @@ static void ExecOptionSel(omObjData *object) OptionWinAnimIn(work->window[0]); OptionWinMesSet(work->window[0], choiceMess[work->cursorPos]); if (!work->cameraDoneF) { - Hu3DModelAttrReset(work->object[7]->model[0], 1); + Hu3DModelAttrReset(work->object[7]->model[0], HU3D_ATTR_DISPOFF); work->cameraDoneF = TRUE; } omSetTra(work->object[7], -34.0f + 40.0f * work->cursorPos, 120.0f, -500.0f); @@ -661,7 +661,7 @@ static void ExecOptionSel(omObjData *object) if (!work->optionSelected) { OptionRumbleMotionHideStart(optionRumble); } - Hu3DModelAttrSet(work->object[7]->model[0], 1); + Hu3DModelAttrSet(work->object[7]->model[0], HU3D_ATTR_DISPOFF); object->unk10 = 4; /* fallthrough */ case 4: @@ -715,7 +715,7 @@ static void ExecOutputMode(omObjData *object) OptionWinAnimIn(work->window[0]); OptionWinMesSet(work->window[0], soundModeNameTbl[work->soundMode]); if (!work->cameraDoneF) { - Hu3DModelAttrReset(work->object[8]->model[0], 1); + Hu3DModelAttrReset(work->object[8]->model[0], HU3D_ATTR_DISPOFF); work->cameraDoneF = TRUE; } pos.x = -38.0f; @@ -768,7 +768,7 @@ static void ExecOutputMode(omObjData *object) KillNoteSpawner(object); OptionWinAnimOut(work->window[1]); OptionWinAnimOut(work->window[0]); - Hu3DModelAttrSet(work->object[8]->model[0], 1); + Hu3DModelAttrSet(work->object[8]->model[0], HU3D_ATTR_DISPOFF); object->unk10 = 5; /* fallthrough */ case 5: @@ -1204,10 +1204,10 @@ static omObjData *CreateHand(void) object = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 13)); Hu3DModelLayerSet(object->model[0], 2); - Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); omSetRot(object, -80.0f, 45.0f, 0.0f); omSetSca(object, 0.6f, 0.6f, 0.6f); - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); return object; } @@ -1227,10 +1227,10 @@ static omObjData *CreateOutputModeHand(void) object = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 14)); Hu3DModelLayerSet(object->model[0], 2); - Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); omSetRot(object, 0.0f, -90.0f, 0.0f); omSetSca(object, 0.6f, 0.6f, 0.6f); - Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); return object; } @@ -1249,7 +1249,7 @@ static omObjData *CreateSystem(void) system = omAddObjEx(optionObjMan, 1003, 1, 0, 1, NULL); system->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 3)); - Hu3DModelAttrSet(system->model[0], 0x40000001); + Hu3DModelAttrSet(system->model[0], HU3D_MOTATTR_LOOP); Hu3DModelLayerSet(system->model[0], 0); return system; } @@ -1276,7 +1276,7 @@ static omObjData *CreateLightObj(s32 id, BOOL off) else { object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 4)); } - Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); Hu3DModelLayerSet(object->model[0], 0); omSetTra(object, lightPosTbl[id].x, lightPosTbl[id].y, lightPosTbl[id].z); return object; @@ -1293,12 +1293,12 @@ static void KillLightObj(omObjData *object) static void LightDispOff(omObjData *indicator) { - Hu3DModelAttrReset(indicator->model[0], 1); + Hu3DModelAttrReset(indicator->model[0], HU3D_ATTR_DISPOFF); } static void LightDispOn(omObjData *indicator) { - Hu3DModelAttrSet(indicator->model[0], 1); + Hu3DModelAttrSet(indicator->model[0], HU3D_ATTR_DISPOFF); } static s32 spriteDataTbl[] = { @@ -1392,7 +1392,7 @@ static void OptionSelDisp(omObjData *object) static void OptionSelHide(omObjData *object) { - static const s32 sprHideTbl[] = { 12, 0, 1, 2, 3, 4, 5 }; + static const s32 sprHideTbl[] = { 12, 0, 1, 2, 3, 4, 5 }; SoundWork *work = object->data; s32 i; @@ -1443,11 +1443,9 @@ static void OutputModeDisp(omObjData *object) } } - - static void OutputModeHide(omObjData *object) { - static const s32 sprHideTbl[] = { 13, 6, 7, 8, 9 }; + static const s32 sprHideTbl[] = { 13, 6, 7, 8, 9 }; SoundWork *work = object->data; s32 i; @@ -1474,10 +1472,9 @@ static void MusicPageDisp(omObjData *object, s32 page) } } - static void MusicPageHide(omObjData *object) { - static const s32 sprHideTbl[] = { 10 }; + static const s32 sprHideTbl[] = { 10 }; SoundWork *work = object->data; s32 i; @@ -1508,11 +1505,9 @@ static void VoicePageDisp(omObjData *object, s32 character) } } - - static void VoicePageHide(omObjData *object) { - static const s32 sprHideTbl[] = { 11, 0 }; + static const s32 sprHideTbl[] = { 11, 0 }; SoundWork *work = object->data; s32 i; @@ -1538,9 +1533,9 @@ static omObjData *CreateNoteObj(s32 type) noteWork->enabled = FALSE; noteWork->type = type; note->model[0] = Hu3DModelCreateFile(noteMdlTbl[type]); - Hu3DModelAttrSet(note->model[0], 0x40000001); + Hu3DModelAttrSet(note->model[0], HU3D_MOTATTR_LOOP); Hu3DModelLayerSet(note->model[0], 2); - Hu3DModelAttrReset(note->model[0], 2); + Hu3DModelAttrReset(note->model[0], HU3D_ATTR_ZWRITE_OFF); return note; } @@ -1568,7 +1563,7 @@ static void HandleNote(omObjData *note) float y; float tplvl; - Hu3DModelAttrReset(note->model[0], 1); + Hu3DModelAttrReset(note->model[0], HU3D_ATTR_DISPOFF); time = sind(45.0f * noteWork->pos); time = time * time; switch (noteWork->side) { @@ -1595,7 +1590,7 @@ static void HandleNote(omObjData *note) return; } noteWork->enabled = FALSE; - Hu3DModelAttrSet(note->model[0], 1); + Hu3DModelAttrSet(note->model[0], HU3D_ATTR_DISPOFF); note->func = NULL; note->unk10 = 0; } diff --git a/src/REL/option/state.c b/src/REL/option/state.c index a2fc6f37..edbcdcd6 100755 --- a/src/REL/option/state.c +++ b/src/REL/option/state.c @@ -10,13 +10,19 @@ typedef struct { /* 0x00 */ OptionWindow *window; /* 0x04 */ s32 quitTimer; /* 0x08 */ s16 light; -} StateWork; // Size 0xC +} StateWork; /* size = 0x0C */ typedef struct { - Vec src; - Vec dest; - GXColor color; -} UnkLightDataStruct; // Size 0x1C TODO same as m446Dll::unkStruct10 and present::UnkPresentStruct3 + /* 0x00 */ Vec pos; + /* 0x0C */ Vec dest; + /* 0x18 */ GXColor color; +} UnkLightDataStruct; /* size = 0x1C */ // TODO same as m446Dll::unkStruct10 and present::UnkPresentStruct3 + +typedef struct UnkShadowDataStruct { + /* 0x00 */ Vec camPos; + /* 0x0C */ Vec camUp; + /* 0x18 */ Vec camTarget; +} UnkShadowDataStruct; /* size = 0x24 */ static void ExecState(omObjData *object); @@ -28,7 +34,7 @@ static UnkLightDataStruct lightTbl = { { 0xFF, 0xFF, 0xFF, 0xFF }, }; -static Vec shadowPosTbl[3] = { +static UnkShadowDataStruct shadowPosTbl = { { 0.0f, 3000.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, @@ -36,23 +42,21 @@ static Vec shadowPosTbl[3] = { omObjData *OptionStateCreate(void) { - omObjData *object; - StateWork *work; LightData *lightData; - object = omAddObjEx(optionObjMan, 1000, 0, 0, 4, ExecState); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM); + omObjData *object = omAddObjEx(optionObjMan, 1000, 0, 0, 4, ExecState); + StateWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM); object->data = work; optionCamera = OptionCameraCreate(); optionRoom = OptionRoomCreate(); work->window = OptionWinCreate(0); Hu3DLighInit(); - work->light = Hu3DGLightCreateV(&lightTbl.src, &lightTbl.dest, &lightTbl.color); + work->light = Hu3DGLightCreateV(&lightTbl.pos, &lightTbl.dest, &lightTbl.color); Hu3DGLightInfinitytSet(work->light); lightData = &Hu3DGlobalLight[work->light]; Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); Hu3DShadowTPLvlSet(0.45f); - Hu3DShadowPosSet(&shadowPosTbl[0], &shadowPosTbl[1], &shadowPosTbl[2]); + Hu3DShadowPosSet(&shadowPosTbl.camPos, &shadowPosTbl.camUp, &shadowPosTbl.camTarget); return object; } @@ -75,7 +79,7 @@ static void ExecState(omObjData *object) object->unk10 = 1; /* fallthrough */ case 1: - WipeCreate(WIPE_MODE_IN, -1, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_PREV, 60); object->unk10 = 2; break; case 2: diff --git a/src/REL/option/window.c b/src/REL/option/window.c index 6bb32d8d..7497bef7 100755 --- a/src/REL/option/window.c +++ b/src/REL/option/window.c @@ -5,6 +5,8 @@ #include "game/process.h" #include "game/sprite.h" +#include "version.h" + static void ExecWindow(void); OptionWindow *OptionWinCreate(s32 id) @@ -33,13 +35,13 @@ OptionWindow *OptionWinCreate(s32 id) HuWinMesSpeedSet(work->window, 0); break; case 2: - work->window = HuWinExCreateStyled(-10000.0f, 88.0f, 224, 34, -1, 0); + work->window = HuWinExCreateStyled(-10000.0f, 88.0f, VERSION_NTSC ? 224 : 320, 34, -1, 0); HuWinAttrSet(work->window, 0x800); HuWinBGTPLvlSet(work->window, 0.0f); HuWinMesSpeedSet(work->window, 0); break; case 3: - work->window = HuWinExCreateStyled(175.0f, 100.0f, 300, 34, -1, 0); + work->window = HuWinExCreateStyled(175.0f, 100.0f, VERSION_NTSC ? 300 : 320, 34, -1, 0); HuWinBGTPLvlSet(work->window, 0.0f); HuWinMesSpeedSet(work->window, 0); break; diff --git a/src/REL/present/camera.c b/src/REL/present/camera.c index 95c6a85a..9be75849 100644 --- a/src/REL/present/camera.c +++ b/src/REL/present/camera.c @@ -5,231 +5,235 @@ #include "REL/present.h" -void fn_1_C20(omObjData *object); +typedef struct CameraWork { + /* 0x00 */ Vec pos; + /* 0x0C */ Vec target; + /* 0x18 */ Vec up; + /* 0x24 */ float zoom; + /* 0x28 */ float rot; + /* 0x2C */ Vec posPrev; + /* 0x38 */ Vec targetPrev; + /* 0x44 */ char unk44[0xC]; + /* 0x50 */ float zoomPrev; + /* 0x54 */ float rotPrev; + /* 0x58 */ Vec posTarget; + /* 0x64 */ Vec posFocus; + /* 0x70 */ char unk70[0xC]; + /* 0x7C */ float zoomTarget; + /* 0x80 */ float rotTarget; + /* 0x84 */ float timeEye; + /* 0x88 */ float eyeSpeed; + /* 0x8C */ float timeTarget; + /* 0x90 */ float targetSpeed; + /* 0x94 */ float timeRot; + /* 0x98 */ float rotSpeed; +} CameraWork; /* size = 0x9C */ // same as in option/camera.c -omObjData *fn_1_6B4(void) +static void ExecCameraObj(omObjData *object); +static void ExecCamera(omObjData *object); + +omObjData *PresentCameraCreate(void) { - omObjData *var_r30; - UnkPresentCameraStruct *var_r31; + omObjData *object = omAddObjEx(presentObjMan, 1001, 0, 0, 3, ExecCameraObj); + CameraWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, 156, MEMORY_DEFAULT_NUM); + object->data = work; - var_r30 = omAddObjEx(lbl_1_bss_4, 1001, 0, 0, 3, fn_1_BF8); - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 156, MEMORY_DEFAULT_NUM); - var_r30->data = var_r31; + work->pos.x = 0.0f; + work->pos.y = 0.0f; + work->pos.z = 0.0f; - var_r31->pos.x = 0.0f; - var_r31->pos.y = 0.0f; - var_r31->pos.z = 0.0f; + work->target.x = 0.0f; + work->target.y = 0.0f; + work->target.z = 0.0f; - var_r31->target.x = 0.0f; - var_r31->target.y = 0.0f; - var_r31->target.z = 0.0f; + work->up.x = 0.0f; + work->up.y = 1.0f; + work->up.z = 0.0f; - var_r31->up.x = 0.0f; - var_r31->up.y = 1.0f; - var_r31->up.z = 0.0f; - - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_8C = 1.0f; - var_r31->unk_84 = 1.0f; - var_r31->unk_94 = 1.0f; + work->zoom = 0.0f; + work->rot = 0.0f; + work->timeTarget = 1.0f; + work->timeEye = 1.0f; + work->timeRot = 1.0f; Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraPerspectiveSet(1, 42.0f, 10.0f, 8000.0f, 1.2f); - fn_1_9A4(var_r30, 0.0f, 0.0f, -600.0f, 1); - fn_1_920(var_r30, 0.0f, 220.0f, 250.0f, 1); + PresentCameraFocusSet(object, 0.0f, 0.0f, -600.0f, 1); + PresentCameraTargetSet(object, 0.0f, 220.0f, 250.0f, 1); - return var_r30; + return object; } -void fn_1_8F0(omObjData *object) +void PresentCameraKill(omObjData *object) { HuMemDirectFree(object->data); } -void fn_1_920(omObjData *object, float arg8, float arg9, float argA, s32 arg1) +void PresentCameraTargetSet(omObjData *object, float x, float y, float z, s32 duration) { - UnkPresentCameraStruct *var_r31; + CameraWork *work = object->data; - var_r31 = object->data; - var_r31->unk_58.x = arg8; - var_r31->unk_58.y = arg9; - var_r31->unk_58.z = argA; + work->posTarget.x = x; + work->posTarget.y = y; + work->posTarget.z = z; - var_r31->unk_2C = var_r31->pos; - var_r31->unk_84 = 0.0f; - var_r31->unk_88 = 1.0f / arg1; + work->posPrev = work->pos; + work->timeEye = 0.0f; + work->eyeSpeed = 1.0f / duration; } -void fn_1_9A4(omObjData *object, float arg8, float arg9, float argA, s32 arg1) +void PresentCameraFocusSet(omObjData *object, float x, float y, float z, s32 duration) { - UnkPresentCameraStruct *var_r31; + CameraWork *work = object->data; - var_r31 = object->data; - var_r31->unk_64.x = arg8; - var_r31->unk_64.y = arg9; - var_r31->unk_64.z = argA; + work->posFocus.x = x; + work->posFocus.y = y; + work->posFocus.z = z; - var_r31->unk_38 = var_r31->target; - var_r31->unk_8C = 0.0f; - var_r31->unk_90 = 1.0f / arg1; + work->targetPrev = work->target; + work->timeTarget = 0.0f; + work->targetSpeed = 1.0f / duration; } -void fn_1_A28(omObjData *object, s32 arg1, float arg8, float arg9, float argA) +void PresentCameraViewSet(omObjData *object, float zoom, float rot, float y, s32 duration) { - UnkPresentCameraStruct *var_r31; + CameraWork *work = object->data; - var_r31 = object->data; - var_r31->unk_64.y = argA; - var_r31->unk_7C = arg8; - var_r31->unk_80 = arg9; + work->posFocus.y = y; + work->zoomTarget = zoom; + work->rotTarget = rot; - var_r31->unk_38.y = var_r31->target.y; - var_r31->unk_50 = var_r31->unk_24; - var_r31->unk_54 = var_r31->unk_28; - var_r31->unk_94 = 0.0f; - var_r31->unk_98 = 1.0f / arg1; + work->targetPrev.y = work->target.y; + work->zoomPrev = work->zoom; + work->rotPrev = work->rot; + work->timeRot = 0.0f; + work->rotSpeed = 1.0f / duration; } -float fn_1_AAC(omObjData *object) +float PresentCameraZoomGet(omObjData *object) { - UnkPresentCameraStruct *var_r31; - float var_f31; + CameraWork *work = object->data; - var_r31 = object->data; - var_f31 = var_r31->unk_24; - return var_f31; + float zoom = work->zoom; + return zoom; } -float fn_1_ADC(omObjData *object) +float PresentCameraRotGet(omObjData *object) { - UnkPresentCameraStruct *var_r31; - float var_f31; + CameraWork *work = object->data; - var_r31 = object->data; - var_f31 = var_r31->unk_28; - return var_f31; + float rot = work->rot; + return rot; } -void fn_1_B0C(omObjData *object, float *arg1, float *arg2, float *arg3) +void PresentCameraPosGet(omObjData *object, float *x, float *y, float *z) { - UnkPresentCameraStruct *var_r31; + CameraWork *work = object->data; - var_r31 = object->data; - *arg1 = var_r31->pos.x; - *arg2 = var_r31->pos.y; - *arg3 = var_r31->pos.z; + *x = work->pos.x; + *y = work->pos.y; + *z = work->pos.z; } -void fn_1_B3C(omObjData *object, float *arg1, float *arg2, float *arg3) +void PresentCameraTargetGet(omObjData *object, float *x, float *y, float *z) { - UnkPresentCameraStruct *var_r31; + CameraWork *work = object->data; - var_r31 = object->data; - *arg1 = var_r31->target.x; - *arg2 = var_r31->target.y; - *arg3 = var_r31->target.z; + *x = work->target.x; + *y = work->target.y; + *z = work->target.z; } -s32 fn_1_B6C(omObjData *object) +s32 PresentCameraDoneCheck(omObjData *object) { - UnkPresentCameraStruct *var_r31; - s32 var_r30; - s32 var_r29; + CameraWork *work = object->data; - var_r31 = object->data; - var_r30 = 1; - var_r29 = 1; - if (!(var_r31->unk_8C < 1.0f) && !(var_r31->unk_94 < 1.0f)) { + s32 var_r30 = 1; + s32 var_r29 = 1; + + if (!(work->timeTarget < 1.0f) && !(work->timeRot < 1.0f)) { var_r29 = 0; } - if (!var_r29 && !(var_r31->unk_84 < 1.0f)) { + if (!var_r29 && !(work->timeEye < 1.0f)) { var_r30 = 0; } return var_r30; } -void fn_1_BF8(omObjData *object) +static void ExecCameraObj(omObjData *object) { - fn_1_C20(object); + ExecCamera(object); } -void fn_1_C20(omObjData *object) +static void ExecCamera(omObjData *object) { - UnkPresentCameraStruct *var_r31; - float var_f31; - float var_f30; - float var_f29; - float var_f28; - float var_f27; + CameraWork *work = object->data; + float weight; + float dx; + float dz; - var_r31 = object->data; - if (var_r31->unk_84 < 1.0f) { - var_f28 = sind(90.0f * var_r31->unk_84); - var_r31->pos.x = var_r31->unk_2C.x + var_f28 * (var_r31->unk_58.x - var_r31->unk_2C.x); - var_r31->pos.y = var_r31->unk_2C.y + var_f28 * (var_r31->unk_58.y - var_r31->unk_2C.y); - var_r31->pos.z = var_r31->unk_2C.z + var_f28 * (var_r31->unk_58.z - var_r31->unk_2C.z); + if (work->timeEye < 1.0f) { + weight = sind(90.0f * work->timeEye); + work->pos.x = work->posPrev.x + weight * (work->posTarget.x - work->posPrev.x); + work->pos.y = work->posPrev.y + weight * (work->posTarget.y - work->posPrev.y); + work->pos.z = work->posPrev.z + weight * (work->posTarget.z - work->posPrev.z); - if ((var_r31->unk_84 += var_r31->unk_88) >= 1.0f) { - var_r31->pos = var_r31->unk_58; + if ((work->timeEye += work->eyeSpeed) >= 1.0f) { + work->pos = work->posTarget; } } - if (var_r31->unk_8C < 1.0f) { - var_f28 = sind(90.0f * var_r31->unk_8C); - var_r31->target.x = var_r31->unk_38.x + var_f28 * (var_r31->unk_64.x - var_r31->unk_38.x); - var_r31->target.y = var_r31->unk_38.y + var_f28 * (var_r31->unk_64.y - var_r31->unk_38.y); - var_r31->target.z = var_r31->unk_38.z + var_f28 * (var_r31->unk_64.z - var_r31->unk_38.z); + if (work->timeTarget < 1.0f) { + weight = sind(90.0f * work->timeTarget); + work->target.x = work->targetPrev.x + weight * (work->posFocus.x - work->targetPrev.x); + work->target.y = work->targetPrev.y + weight * (work->posFocus.y - work->targetPrev.y); + work->target.z = work->targetPrev.z + weight * (work->posFocus.z - work->targetPrev.z); - if ((var_r31->unk_8C += var_r31->unk_90) >= 1.0f) { - var_r31->target = var_r31->unk_64; + if ((work->timeTarget += work->targetSpeed) >= 1.0f) { + work->target = work->posFocus; } } - if (var_r31->unk_94 < 1.0f) { - var_f28 = sind(90.0f * var_r31->unk_94); - var_r31->target.y = var_r31->unk_38.y + (var_f28 * (var_r31->unk_64.y - var_r31->unk_38.y)); - var_r31->unk_24 = var_r31->unk_50 + (var_f28 * (var_r31->unk_7C - var_r31->unk_50)); - var_r31->unk_28 = var_r31->unk_54 + (var_f28 * (var_r31->unk_80 - var_r31->unk_54)); + if (work->timeRot < 1.0f) { + weight = sind(90.0f * work->timeRot); + work->target.y = work->targetPrev.y + (weight * (work->posFocus.y - work->targetPrev.y)); + work->zoom = work->zoomPrev + (weight * (work->zoomTarget - work->zoomPrev)); + work->rot = work->rotPrev + (weight * (work->rotTarget - work->rotPrev)); - if ((var_r31->unk_94 += var_r31->unk_98) >= 1.0f) { - var_r31->target.y = var_r31->unk_64.y; - var_r31->unk_24 = var_r31->unk_7C; - var_r31->unk_28 = var_r31->unk_80; + if ((work->timeRot += work->rotSpeed) >= 1.0f) { + work->target.y = work->posFocus.y; + work->zoom = work->zoomTarget; + work->rot = work->rotTarget; } - var_r31->target.x = var_r31->unk_24 * -sind(var_r31->unk_28); - var_r31->target.z = var_r31->unk_24 * cosd(var_r31->unk_28); + work->target.x = work->zoom * -sind(work->rot); + work->target.z = work->zoom * cosd(work->rot); } - var_f31 = var_r31->target.x - var_r31->pos.x; - var_f30 = var_r31->target.z - var_r31->pos.z; + dx = work->target.x - work->pos.x; + dz = work->target.z - work->pos.z; - var_r31->unk_24 = sqrtf(var_f31 * var_f31 + var_f30 * var_f30); - var_r31->unk_28 = fmod(-atan2d(var_f31, var_f30), 360.0); - if (var_r31->unk_28 < 0.0f) { - var_r31->unk_28 += 360.0f; + work->zoom = sqrtf(dx * dx + dz * dz); + work->rot = fmod(-atan2d(dx, dz), 360.0); + if (work->rot < 0.0f) { + work->rot += 360.0f; } - Hu3DCameraPosSet(1, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z, var_r31->up.x, var_r31->up.y, var_r31->up.z, var_r31->target.x, - var_r31->target.y, var_r31->target.z); + Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x, work->target.y, work->target.z); } -void fn_1_1198(omObjData *object) +static void CameraExecDebug(omObjData *object) { - UnkPresentCameraStruct *var_r31; - if (HuPadBtn[0] & PAD_BUTTON_B) { - var_r31 = object->data; - var_r31->target.x = var_r31->target.x + (0.5f * HuPadStkX[0]); - var_r31->target.y = var_r31->target.y + (0.5f * HuPadStkY[0]); - var_r31->pos.z = var_r31->pos.z + (0.5f * HuPadTrigL[0]); - var_r31->pos.z = var_r31->pos.z - (0.5f * HuPadTrigR[0]); - var_r31->pos.x = var_r31->pos.x + (0.5f * HuPadSubStkY[0]); - var_r31->pos.y = var_r31->pos.y + (0.5f * HuPadSubStkX[0]); + CameraWork *work = object->data; + + work->target.x += (0.5f * HuPadStkX[0]); + work->target.y += (0.5f * HuPadStkY[0]); + work->pos.z += (0.5f * HuPadTrigL[0]); + work->pos.z -= (0.5f * HuPadTrigR[0]); + work->pos.x += (0.5f * HuPadSubStkY[0]); + work->pos.y += (0.5f * HuPadSubStkX[0]); } } -void fn_1_1398(omObjData *object) +static void CameraPrintDebug(omObjData *object) { - UnkPresentCameraStruct *var_r31; - - var_r31 = object->data; - print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", var_r31->target.x, var_r31->target.y, var_r31->target.z); - print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); - print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", var_r31->unk_24, var_r31->unk_28); + CameraWork *work = object->data; + print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", work->target.x, work->target.y, work->target.z); + print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", work->pos.x, work->pos.y, work->pos.z); + print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", work->zoom, work->rot); } diff --git a/src/REL/present/common.c b/src/REL/present/common.c index c06f944d..7ccf1f02 100644 --- a/src/REL/present/common.c +++ b/src/REL/present/common.c @@ -6,222 +6,224 @@ #include "REL/present.h" -void fn_1_4620(omObjData *arg0); -void fn_1_4880(omObjData *arg0); +typedef struct GuideWork { + /* 0x00 */ s32 execMode; + /* 0x04 */ s16 motion; + /* 0x08 */ Vec pos; + /* 0x14 */ Vec newPos; + /* 0x20 */ Vec rot; + /* 0x2C */ Vec posDelta; + /* 0x38 */ float distRemain; + /* 0x3C */ char unk3C[0xC]; + /* 0x48 */ float time; + /* 0x4C */ float speed; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; +} GuideWork; /* size = 0x58 */ -omObjFunc lbl_1_data_1A0[] = { NULL, fn_1_4620, fn_1_4880 }; +static void ExecGuideEnter(omObjData *object); +static void ExecGuideLeave(omObjData *object); +static void UpdateGuide(omObjData *object); +static float LerpAngle(float start, float end, float time); -static const s32 lbl_1_rodata_BD8[] = { 0x006E0089, 0x006E008A, 0x006E008B }; +static omObjFunc execModeTbl[] = { NULL, ExecGuideEnter, ExecGuideLeave }; -void fn_1_4A04(omObjData *object); -float fn_1_4CEC(float arg8, float arg9, float argA); +static const s32 guideMotTbl[] = { + DATA_MAKE_NUM(DATADIR_PRESENT, 137), + DATA_MAKE_NUM(DATADIR_PRESENT, 138), + DATA_MAKE_NUM(DATADIR_PRESENT, 139), +}; -omObjData *fn_1_42F4(void) +omObjData *PresentGuideCreate(void) { - omObjData *var_r31; - s32 var_lr; s32 var_r29; - UnkPresentStruct5 *var_r30; - var_r31 = omAddObjEx(lbl_1_bss_4, 1002, 1, 3, 2, NULL); - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, 88, MEMORY_DEFAULT_NUM); - var_r31->data = var_r30; - var_r30->x = 0.0f; - var_r30->z = 0.0f; - var_r30->y = 0.0f; - var_r30->unk_20 = 0.0f; - var_r30->unk_24 = 0.0f; - var_r30->unk_28 = 0.0f; - var_r30->unk_2C = 0.0f; - var_r30->unk_34 = 0.0f; - var_r30->unk_30 = 0.0f; - var_r31->model[0] = Hu3DModelCreate(HuDataReadNum(0x6E0088, MEMORY_DEFAULT_NUM)); - Hu3DModelLayerSet(var_r31->model[0], 1); + omObjData *object = omAddObjEx(presentObjMan, 1002, 1, 3, 2, NULL); + GuideWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(GuideWork), MEMORY_DEFAULT_NUM); + object->data = work; + + work->pos.x = 0.0f; + work->pos.z = 0.0f; + work->pos.y = 0.0f; + work->rot.x = 0.0f; + work->rot.y = 0.0f; + work->rot.z = 0.0f; + + work->posDelta.x = 0.0f; + work->posDelta.z = 0.0f; + work->posDelta.y = 0.0f; + object->model[0] = Hu3DModelCreate(HuDataReadNum(DATA_MAKE_NUM(DATADIR_PRESENT, 136), MEMORY_DEFAULT_NUM)); + Hu3DModelLayerSet(object->model[0], 1); for (var_r29 = 0; var_r29 < 3; var_r29++) { - var_r31->motion[var_r29] = Hu3DJointMotion(var_r31->model[0], HuDataSelHeapReadNum(lbl_1_rodata_BD8[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA)); + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], guideMotTbl[var_r29]); } - Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[var_r30->unk_04 = 0], 0.0f, 8.0f, 0x40000001); - var_r30->unk_50 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[2], 1, 10); - var_r30->unk_54 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[1], 0, 10); + Hu3DMotionShiftSet(object->model[0], object->motion[work->motion = 0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + work->unk_50 = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 10); + work->unk_54 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 10); CharModelLayerSetAll(1); - Hu3DModelShadowSet(var_r31->model[0]); - fn_1_45C0(var_r31, 0); - fn_1_4A04(var_r31); - Hu3DModelAttrSet(var_r31->model[0], 1); + Hu3DModelShadowSet(object->model[0]); + PresentGuideExecModeSet(object, PRESENT_GUIDE_MODE_NONE); + UpdateGuide(object); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); - return var_r31; + return object; } -void fn_1_4534(omObjData *object) +void PresentGuideKill(omObjData *object) { - s32 var_r31; - void *var_r29; - void *var_r30; + void *work = object->data; - var_r29 = object->data; - - for (var_r31 = 0; var_r31 < 1; var_r31++) { - Hu3DModelKill(object->model[var_r31]); + s32 i; + for (i = 0; i < 1; i++) { + Hu3DModelKill(object->model[i]); } - for (var_r31 = 0; var_r31 < 3; var_r31++) { - Hu3DMotionKill(object->motion[var_r31]); + for (i = 0; i < 3; i++) { + Hu3DMotionKill(object->motion[i]); } - HuMemDirectFree(var_r29); + HuMemDirectFree(work); } -void fn_1_45C0(omObjData *object, s32 arg1) +void PresentGuideExecModeSet(omObjData *object, s32 execMode) { - UnkPresentStruct5 *var_r31; + GuideWork *work = object->data; - var_r31 = object->data; - var_r31->unk_00 = arg1; - object->func = lbl_1_data_1A0[arg1]; + work->execMode = execMode; + object->func = execModeTbl[execMode]; object->unk10 = 0; object->unk10 = 0; } -s32 fn_1_4604(omObjData *object) +s32 PresentGuideExecModeGet(omObjData *object) { - s32 *var_r31; + GuideWork *work = object->data; - var_r31 = object->data; - return *var_r31; + return work->execMode; } -void fn_1_4620(omObjData *object) +static void ExecGuideEnter(omObjData *object) { float var_f31; - omObjData *var_r30; - void *var_r29; - UnkPresentStruct5 *var_r31; + GuideWork *work = object->data; - var_r31 = object->data; switch (object->unk10) { - case 0: - Hu3DModelAttrReset(object->model[0], 1); - var_r31->x = -300.0f; - var_r31->z = -180.0f; - var_r31->unk_48 = 0.0f; - var_r31->unk_4C = 0.025f; - object->unk10 = 1; - case 1: - var_f31 = sind(90.0f * var_r31->unk_48); - var_f31 *= var_f31; - var_r31->unk_14 = -300.0f + (300.0f * var_f31); - var_r31->unk_2C = var_r31->unk_14 - var_r31->x; - if ((var_r31->unk_48 = var_r31->unk_48 + var_r31->unk_4C) < 1.0f) { + case 0: + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + work->pos.x = -300.0f; + work->pos.z = -180.0f; + work->time = 0.0f; + work->speed = 0.025f; + object->unk10 = 1; + case 1: + var_f31 = sind(90.0f * work->time); + var_f31 *= var_f31; + work->newPos.x = -300.0f + (300.0f * var_f31); + work->posDelta.x = work->newPos.x - work->pos.x; + if ((work->time += work->speed) < 1.0f) { + break; + } + work->pos.x = 0.0f; + work->time = 0.0f; + work->speed = 0.05f; + object->unk10 = 2; + case 2: + work->posDelta.x = 0.0f; + work->posDelta.z = 0.01f; + if ((work->time += work->speed) < 1.0f) { + break; + } + work->rot.y = 0.0f; + work->posDelta.x = 0.0f; + work->posDelta.y = 0.0f; + work->posDelta.z = 0.0f; + object->unk10 = 3; + case 3: + PresentGuideExecModeSet(object, PRESENT_GUIDE_MODE_NONE); break; - } - var_r31->x = 0.0f; - var_r31->unk_48 = 0.0f; - var_r31->unk_4C = 0.05f; - object->unk10 = 2; - case 2: - var_r31->unk_2C = 0.0f; - var_r31->unk_34 = 0.01f; - if ((var_r31->unk_48 = var_r31->unk_48 + var_r31->unk_4C) < 1.0f) { + default: break; - } - var_r31->unk_24 = 0.0f; - var_r31->unk_2C = 0.0f; - var_r31->unk_30 = 0.0f; - var_r31->unk_34 = 0.0f; - object->unk10 = 3; - case 3: - fn_1_45C0(object, 0); - break; - default: - break; } - fn_1_4A04(object); + UpdateGuide(object); } -void fn_1_4880(omObjData *object) +static void ExecGuideLeave(omObjData *object) { - float var_f31; - UnkPresentStruct5 *var_r30; - void *var_r29; + float weight; - var_r30 = object->data; + GuideWork *work = object->data; switch (object->unk10) { - case 0: - var_r30->unk_48 = 0.0f; - var_r30->unk_4C = 0.025f; - Hu3DModelAttrReset(object->model[0], 1); - object->unk10 = 1; - case 1: - var_f31 = sind(90.0f * var_r30->unk_48); - var_f31 *= var_f31; - var_r30->unk_14 = -(300.0f * var_f31); - var_r30->unk_2C = var_r30->unk_14 - var_r30->x; - if ((var_r30->unk_48 = var_r30->unk_48 + var_r30->unk_4C) < 1.0f) { + case 0: + work->time = 0.0f; + work->speed = 0.025f; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->unk10 = 1; + case 1: + weight = sind(90.0f * work->time); + weight *= weight; + work->newPos.x = -(300.0f * weight); + work->posDelta.x = work->newPos.x - work->pos.x; + if ((work->time += work->speed) < 1.0f) { + break; + } + object->unk10 = 2; + case 2: + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + PresentGuideExecModeSet(object, PRESENT_GUIDE_MODE_NONE); + break; + default: break; - } - object->unk10 = 2; - case 2: - Hu3DModelAttrSet(object->model[0], 1); - fn_1_45C0(object, 0); - break; - default: - break; } - fn_1_4A04(object); + UpdateGuide(object); (void)object; } -void fn_1_4A04(omObjData *object) +static void UpdateGuide(omObjData *object) { - float var_f29; - float var_f30; - s16 var_r29; - UnkPresentStruct5 *var_r31; + GuideWork *work = object->data; + s16 motion = 0; - var_r31 = object->data; - var_r29 = 0; - var_f30 = var_r31->unk_2C * var_r31->unk_2C + var_r31->unk_34 * var_r31->unk_34; - var_r31->unk_38 = sqrtf(var_f30); - if (0.001f <= var_r31->unk_38) { - if (12.0f <= var_r31->unk_38) { - var_r31->unk_2C = var_r31->unk_2C / var_r31->unk_38; - var_r31->unk_34 = var_r31->unk_34 / var_r31->unk_38; - var_r31->unk_38 = 12.0f; - var_r31->unk_2C = 12.0f * var_r31->unk_2C; - var_r31->unk_34 = 12.0f * var_r31->unk_34; + work->distRemain = sqrtf(work->posDelta.x * work->posDelta.x + work->posDelta.z * work->posDelta.z); + if (0.001f <= work->distRemain) { + if (12.0f <= work->distRemain) { + work->posDelta.x /= work->distRemain; + work->posDelta.z /= work->distRemain; + work->distRemain = 12.0f; + work->posDelta.x = 12.0f * work->posDelta.x; + work->posDelta.z = 12.0f * work->posDelta.z; } - var_r31->unk_24 = fn_1_4CEC(var_r31->unk_24, atan2d(var_r31->unk_2C, var_r31->unk_34), 0.4f); + work->rot.y = LerpAngle(work->rot.y, atan2d(work->posDelta.x, work->posDelta.z), 0.4f); - if (8.0f <= var_r31->unk_38) { - var_r29 = 2; - } else { - var_r29 = 1; + if (8.0f <= work->distRemain) { + motion = 2; + } + else { + motion = 1; } } - var_r31->x = var_r31->x + var_r31->unk_2C; - var_r31->z = var_r31->z + var_r31->unk_34; - if (var_r31->unk_04 != var_r29) { - Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_04 = var_r29], 0.0f, 8.0f, 0x40000001); // or 0x41000000 + work->pos.x += work->posDelta.x; + work->pos.z += work->posDelta.z; + if (work->motion != motion) { + Hu3DMotionShiftSet(object->model[0], object->motion[work->motion = motion], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } - omSetTra(object, var_r31->x, var_r31->y, var_r31->z); - omSetRot(object, var_r31->unk_20, var_r31->unk_24, var_r31->unk_28); + omSetTra(object, work->pos.x, work->pos.y, work->pos.z); + omSetRot(object, work->rot.x, work->rot.y, work->rot.z); } -float fn_1_4CEC(float arg8, float arg9, float argA) +static float LerpAngle(float start, float end, float time) { - float var_f30; - float var_f31; + float angle; - var_f31 = fmod(arg9 - arg8, 360.0f); - if (0.0f > var_f31) { - var_f31 += 360.0f; + float delta = fmod(end - start, 360.0f); + if (0.0f > delta) { + delta += 360.0f; } - if (180.0f < var_f31) { - var_f31 -= 360.0f; + if (180.0f < delta) { + delta -= 360.0f; } - var_f30 = fmod(arg8 + (var_f31 * argA), 360.0f); - if (0.0f > var_f30) { - var_f30 += 360.0f; + angle = fmod(start + (delta * time), 360.0f); + if (0.0f > angle) { + angle += 360.0f; } - return var_f30; + return angle; } diff --git a/src/REL/present/init.c b/src/REL/present/init.c index b006e64d..3217d652 100644 --- a/src/REL/present/init.c +++ b/src/REL/present/init.c @@ -1,176 +1,187 @@ #include "game/audio.h" #include "game/esprite.h" +#include "game/hsfman.h" #include "game/objsub.h" #include "game/pad.h" #include "game/process.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" +#include "math.h" #include "REL/present.h" -omObjData *lbl_1_bss_18; -omObjData *lbl_1_bss_14; -omObjData *lbl_1_bss_10; -omObjData *lbl_1_bss_C; -omObjData *lbl_1_bss_8; -Process *lbl_1_bss_4; -omObjData *lbl_1_bss_0; +typedef struct FaderWork { + /* 0x00 */ s16 id; + /* 0x04 */ float tplvl; + /* 0x08 */ float speed; +} FaderWork; /* size 0x0C */ // same as in option/scene.c -void fn_1_254(void); -void fn_1_45C(void); -void fn_1_5EC(omObjData *object); +typedef struct FaderWork2 { + /* 0x00 */ s16 id; + /* 0x04 */ float tpMultiplier; + /* 0x08 */ float tplvl; + /* 0x0C */ float speed; +} FaderWork2; /* size = 0x10 */ + +omObjData *presentState; +omObjData *lbl_1_bss_14; +omObjData *present; +omObjData *lbl_1_bss_C; +omObjData *presentCamera; +Process *presentObjMan; +static omObjData *scene; + +static void FadeSprite(void); +static void FadeModel(void); +static void SceneMain(omObjData *object); void ObjectSetup(void) { - lbl_1_bss_4 = omInitObjMan(150, 8192); - omGameSysInit(lbl_1_bss_4); + presentObjMan = omInitObjMan(150, 8192); + omGameSysInit(presentObjMan); HuWinInit(1); - lbl_1_bss_0 = omAddObjEx(lbl_1_bss_4, 1000, 0, 0, 0, fn_1_5EC); - lbl_1_bss_0->unk10 = 0; - lbl_1_bss_18 = fn_1_39A8(); + scene = omAddObjEx(presentObjMan, 1000, 0, 0, 0, SceneMain); + scene->unk10 = 0; + presentState = PresentStateCreate(); } -void fn_1_144(s16 arg0, s32 arg1, s32 arg2) +void PresentFadeSprite(s16 sprite, BOOL inF, s32 duration) { - Process *var_r30; - UnkPresentStruct6 *var_r31; + Process *process; - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkPresentStruct6), MEMORY_DEFAULT_NUM); - var_r31->unk_00 = arg0; - var_r31->unk_08 = 1.0f / arg2; - if (arg1) { - var_r31->unk_08 = var_r31->unk_08; - var_r31->unk_04 = 0.0f; - } else { - var_r31->unk_08 = -var_r31->unk_08; - var_r31->unk_04 = 1.0f; + FaderWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(FaderWork), MEMORY_DEFAULT_NUM); + work->id = sprite; + work->speed = 1.0f / duration; + if (inF) { + work->speed = work->speed; + work->tplvl = 0.0f; } - espDispOn(var_r31->unk_00); - espTPLvlSet(var_r31->unk_00, var_r31->unk_04); - var_r30 = HuPrcChildCreate(fn_1_254, 100, 5376, 0, HuPrcCurrentGet()); - var_r30->user_data = var_r31; + else { + work->speed = -work->speed; + work->tplvl = 1.0f; + } + espDispOn(work->id); + espTPLvlSet(work->id, work->tplvl); + process = HuPrcChildCreate(FadeSprite, 100, 5376, 0, HuPrcCurrentGet()); + process->user_data = work; } -void fn_1_254(void) +static void FadeSprite(void) { - UnkPresentStruct6 *var_r31; + FaderWork *work = HuPrcCurrentGet()->user_data; - var_r31 = HuPrcCurrentGet()->user_data; while (TRUE) { - var_r31->unk_04 = var_r31->unk_04 + var_r31->unk_08; - if (var_r31->unk_04 > 1.0f) { - var_r31->unk_04 = 1.0f; + work->tplvl = work->tplvl + work->speed; + if (work->tplvl > 1.0f) { + work->tplvl = 1.0f; break; - } else if (var_r31->unk_04 < 0.0f) { - var_r31->unk_04 = 0.0f; + } + else if (work->tplvl < 0.0f) { + work->tplvl = 0.0f; break; - } else { - espTPLvlSet(var_r31->unk_00, var_r31->unk_04); + } + else { + espTPLvlSet(work->id, work->tplvl); HuPrcVSleep(); } } - espTPLvlSet(var_r31->unk_00, var_r31->unk_04); - if (var_r31->unk_08 < 0.0f) { - espDispOff(var_r31->unk_00); + espTPLvlSet(work->id, work->tplvl); + if (work->speed < 0.0f) { + espDispOff(work->id); + } + HuMemDirectFree(work); + HuPrcEnd(); +} + +void FadeSpriteWithMultiplier(s16 model, BOOL inF, float tpMultiplier, s32 duration) +{ + Process *process; + // bug: wrong struct in sizeof + FaderWork2 *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(FaderWork), MEMORY_DEFAULT_NUM); + work->id = model; + work->speed = 1.0f / duration; + work->tpMultiplier = tpMultiplier; + + if (inF) { + work->speed = work->speed; + work->tplvl = 0.0f; + } + else { + work->speed = -work->speed; + work->tplvl = 1.0f; + } + Hu3DModelTPLvlSet(work->id, work->tplvl * work->tpMultiplier); + Hu3DModelAttrReset(work->id, HU3D_ATTR_DISPOFF); + process = HuPrcChildCreate(FadeModel, 100, 5376, 0, HuPrcCurrentGet()); + process->user_data = work; +} + +static void FadeModel(void) +{ + FaderWork2 *var_r31 = HuPrcCurrentGet()->user_data; + + while (TRUE) { + var_r31->tplvl += var_r31->speed; + if (var_r31->tplvl > 1.0f) { + var_r31->tplvl = 1.0f; + break; + } + else if (var_r31->tplvl < 0.0f) { + var_r31->tplvl = 0.0f; + break; + } + else { + Hu3DModelTPLvlSet(var_r31->id, var_r31->tplvl * var_r31->tpMultiplier); + HuPrcVSleep(); + } + } + Hu3DModelTPLvlSet(var_r31->id, var_r31->tplvl * var_r31->tpMultiplier); + if (var_r31->speed < 0.0f) { + Hu3DModelAttrSet(var_r31->id, HU3D_ATTR_DISPOFF); } HuMemDirectFree(var_r31); HuPrcEnd(); } -void fn_1_334(s16 arg0, s32 arg1, float arg8, s32 arg2) +BOOL PresentPadCheck(u16 btn) { - Process *var_r30; - UnkPresentStruct6Weird *var_r31; // TODO correct type? why are only 12 bytes allocated? - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 12, MEMORY_DEFAULT_NUM); - var_r31->unk_00 = arg0; - var_r31->unk_0C = 1.0f / arg2; - var_r31->unk_04 = arg8; - - if (arg1) { - var_r31->unk_0C = var_r31->unk_0C; - var_r31->unk_08 = 0.0f; - } else { - var_r31->unk_0C = -var_r31->unk_0C; - var_r31->unk_08 = 1.0f; - } - Hu3DModelTPLvlSet(var_r31->unk_00, var_r31->unk_08 * var_r31->unk_04); - Hu3DModelAttrReset(var_r31->unk_00, 1); - var_r30 = HuPrcChildCreate(fn_1_45C, 100, 5376, 0, HuPrcCurrentGet()); - var_r30->user_data = var_r31; + u32 pressed = HuPadBtnDown[0] & btn; + return pressed != 0; } -void fn_1_45C(void) +BOOL PresentPadDStkRepCheck(u16 dir) { - UnkPresentStruct6Weird *var_r31; // TODO correct type? how is 0C possible? - - var_r31 = HuPrcCurrentGet()->user_data; - while (TRUE) { - var_r31->unk_08 = var_r31->unk_08 + var_r31->unk_0C; - if (var_r31->unk_08 > 1.0f) { - var_r31->unk_08 = 1.0f; - break; - } else if (var_r31->unk_08 < 0.0f) { - var_r31->unk_08 = 0.0f; - break; - } else { - Hu3DModelTPLvlSet(var_r31->unk_00, var_r31->unk_08 * var_r31->unk_04); - HuPrcVSleep(); - } - } - Hu3DModelTPLvlSet(var_r31->unk_00, var_r31->unk_08 * var_r31->unk_04); - if (var_r31->unk_0C < 0.0f) { - Hu3DModelAttrSet(var_r31->unk_00, 1); - } - HuMemDirectFree(var_r31); - HuPrcEnd(); + u32 pressed = HuPadDStkRep[0] & dir; + return pressed != 0; } -u32 fn_1_550(u16 arg0) +BOOL PresentPadDStkCheck(u16 dir) { - u32 var_r31; - - var_r31 = HuPadBtnDown[0] & arg0; - return var_r31 != 0; + u32 pressed = HuPadDStk[0] & dir; + return pressed != 0; } -u32 fn_1_584(u16 arg0) -{ - u32 var_r31; - - var_r31 = HuPadDStkRep[0] & arg0; - return var_r31 != 0; -} - -u32 fn_1_5B8(u16 arg0) -{ - u32 var_r31; - - var_r31 = HuPadDStk[0] & arg0; - return var_r31 != 0; -} - -void fn_1_5EC(omObjData *object) +static void SceneMain(omObjData *object) { switch (object->unk10) { - case 0: - object->unk10 = 1; - case 1: - if (!omSysExitReq) { + case 0: + object->unk10 = 1; + case 1: + if (!omSysExitReq) { + break; + } + object->unk10 = 2; + case 2: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + object->unk10 = 3; + break; + case 3: + if (!WipeStatGet()) { + PresentStateKill(presentState); + omOvlReturnEx(1, 1); + } + break; + default: break; - } - object->unk10 = 2; - case 2: - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - HuAudFadeOut(1000); - object->unk10 = 3; - break; - case 3: - if (!WipeStatGet()) { - fn_1_3B18(lbl_1_bss_18); - omOvlReturnEx(1, 1); - } - break; - default: - break; } } diff --git a/src/REL/present/main.c b/src/REL/present/main.c index 6542a7b7..7fafc79b 100644 --- a/src/REL/present/main.c +++ b/src/REL/present/main.c @@ -7,304 +7,314 @@ #include "REL/present.h" -omObjData *lbl_1_bss_20; +typedef struct StateWork { + /* 0x00 */ PresentWindow *window; + /* 0x04 */ s32 quitTimer; +} StateWork; /* size = 0x08 */ -UnkPresentStruct4 lbl_1_data_F0 = { { 0.0f, 3000.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } }; +typedef struct UnkShadowDataStruct { + /* 0x00 */ Vec camPos; + /* 0x0C */ Vec camUp; + /* 0x18 */ Vec camTarget; +} UnkShadowDataStruct; /* size = 0x24 */ -void fn_1_3B8C(omObjData *object); -void fn_1_3DB8(omObjData *object); -void fn_1_4040(UnkWindowDataStruct *arg0); -void fn_1_4190(UnkWindowDataStruct *arg0); -void fn_1_41E0(void); -void fn_1_41BC(UnkWindowDataStruct *arg0, s32 arg1); +omObjData *presentGuide; -omObjData *fn_1_39A8(void) +static UnkShadowDataStruct shadow = { + { 0.0f, 3000.0f, 1.0f }, + { 0.0f, 1.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, +}; + +static void ExecPresentView(omObjData *object); +static void ExecPresentGet(omObjData *object); +void PresentWinDispOff(PresentWindow *work); +void PresentWinChoiceSet(PresentWindow *work, s32 choice); +static void ExecWindow(void); + +omObjData *PresentStateCreate(void) { - omObjData *object; - UnkPresentStruct *var_r30; + omObjData *object = omAddObjEx(presentObjMan, 1000, 0, 0, 4, NULL); + StateWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM); + object->data = work; - object = omAddObjEx(lbl_1_bss_4, 1000, 0, 0, 4, NULL); - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkPresentStruct), MEMORY_DEFAULT_NUM); - object->data = var_r30; - var_r30->unk_04 = 0; - lbl_1_bss_8 = fn_1_6B4(); - lbl_1_bss_10 = fn_1_1458(); - lbl_1_bss_20 = fn_1_42F4(); - var_r30->unk_00 = fn_1_3EA4(0); + work->quitTimer = 0; + presentCamera = PresentCameraCreate(); + present = PresentCreate(); + presentGuide = PresentGuideCreate(); + work->window = PresentWinCreate(0); Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); Hu3DShadowTPLvlSet(0.45f); - Hu3DShadowPosSet(&lbl_1_data_F0.unk_00, &lbl_1_data_F0.unk_0C, &lbl_1_data_F0.unk_18); + Hu3DShadowPosSet(&shadow.camPos, &shadow.camUp, &shadow.camTarget); + if (omovlevtno > 0) { OSReport("*** PRESENTROOM ( PRESENT GET MODE ) ***\n"); - object->func = fn_1_3DB8; + object->func = ExecPresentGet; object->unk10 = 0; - } else { + } + else { OSReport("*** PRESENTROOM ( PRESENT VIEW MODE ) ***\n"); - object->func = fn_1_3B8C; + object->func = ExecPresentView; object->unk10 = 0; } return object; } -void fn_1_3B18(omObjData *object) +void PresentStateKill(omObjData *object) { - UnkWindowDataStruct **var_r31; + PresentWindow **var_r31 = object->data; - var_r31 = object->data; - fn_1_8F0(lbl_1_bss_8); - fn_1_1784(lbl_1_bss_10); - fn_1_4534(lbl_1_bss_20); - fn_1_4040(*var_r31); + PresentCameraKill(presentCamera); + PresentKill(present); + PresentGuideKill(presentGuide); + PresentWinKill(*var_r31); HuMemDirectFree(var_r31); } -void fn_1_3B8C(omObjData *object) +static void ExecPresentView(omObjData *object) { - UnkPresentStruct *var_r30; - - var_r30 = object->data; + StateWork *work = object->data; switch (object->unk10) { - case 0: - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - object->unk10 = 1; - case 1: - if (WipeStatGet()) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->unk10 = 1; + case 1: + if (WipeStatGet()) { + return; + } + object->unk10 = 2; + case 2: + PresentExecModeSet(present, 1); + object->unk10 = 3; + case 3: + if (PresentExecModeGet(present)) { + return; + } + object->unk10 = 4; + case 4: + PresentGuideExecModeSet(presentGuide, PRESENT_GUIDE_MODE_ENTER); + object->unk10 = 5; + case 5: + if (PresentGuideExecModeGet(presentGuide)) { + return; + } + object->unk10 = 6; + case 6: + HuAudFXPlay(66); + PresentWinAnimIn(work->window); + PresentWinMesSet(work->window, MAKE_MESSID(0x32, 0x02)); + object->unk10 = 7; + case 7: + if (work->window->state) { + return; + } + PresentWinChoiceSet(work->window, 1); + object->unk10 = 8; + case 8: + if (work->window->state) { + return; + } + PresentWinAnimOut(work->window); + if (!work->window->choice) { + work->quitTimer = 0; + object->unk10 = 11; + return; + } + else { + object->unk10 = 9; + return; + } + case 9: + PresentGuideExecModeSet(presentGuide, PRESENT_GUIDE_MODE_LEAVE); + object->unk10 = 10; return; - } - object->unk10 = 2; - case 2: - fn_1_180C(lbl_1_bss_10, 1); - object->unk10 = 3; - case 3: - if (fn_1_1850(lbl_1_bss_10)) { + case 10: + if (PresentGuideExecModeGet(presentGuide)) { + return; + } + object->unk10 = 2; return; - } - object->unk10 = 4; - case 4: - fn_1_45C0(lbl_1_bss_20, 1); - object->unk10 = 5; - case 5: - if (fn_1_4604(lbl_1_bss_20)) { - return; - } - object->unk10 = 6; - case 6: - HuAudFXPlay(66); - fn_1_4080(var_r30->unk_00); - fn_1_40B0(var_r30->unk_00, 0x320002); - object->unk10 = 7; - case 7: - if (var_r30->unk_00->unk_20) { - return; - } - fn_1_41BC(var_r30->unk_00, 1); - object->unk10 = 8; - case 8: - if (var_r30->unk_00->unk_20) { - return; - } - fn_1_4098(var_r30->unk_00); - if (!var_r30->unk_00->choice) { - var_r30->unk_04 = 0; - object->unk10 = 11; - return; - } else { - object->unk10 = 9; - return; - } - case 9: - fn_1_45C0(lbl_1_bss_20, 2); - object->unk10 = 10; - return; - case 10: - if (fn_1_4604(lbl_1_bss_20)) { - return; - } - object->unk10 = 2; - return; - case 11: - object->unk10 = 12; - var_r30->unk_04 = 0; - case 12: - if (var_r30->unk_00->unk_20) { - return; - } - if (var_r30->unk_04++ >= 60) { + case 11: + object->unk10 = 12; + work->quitTimer = 0; + case 12: + if (work->window->state) { + return; + } + if (work->quitTimer++ >= 60) { + omSysExitReq = 1; + object->func = NULL; + object->unk10 = 0; + } + default: + break; + } +} + +static void ExecPresentGet(omObjData *object) +{ + void *sp8 = object->data; + + switch (object->unk10) { + case 0: + PresentSelectedIDSet(present, omovlevtno - 1); + object->unk10 = 1; + case 1: + PresentExecModeSet(present, PRESENT_MODE_GET); + object->unk10 = 2; + case 2: + if (PresentExecModeGet(present) == PRESENT_MODE_NONE) { + object->unk10 = 3; + } + else { + break; + } + case 3: + object->unk10 = 4; + case 4: omSysExitReq = 1; object->func = NULL; object->unk10 = 0; - } - default: - break; - } -} - -void fn_1_3DB8(omObjData *arg0) -{ - void *sp8; - - sp8 = arg0->data; - switch (arg0->unk10) { - case 0: - fn_1_186C(lbl_1_bss_10, omovlevtno - 1); - arg0->unk10 = 1; - case 1: - fn_1_180C(lbl_1_bss_10, 3); - arg0->unk10 = 2; - case 2: - if (!fn_1_1850(lbl_1_bss_10)) { - arg0->unk10 = 3; - } else { break; - } - case 3: - arg0->unk10 = 4; - case 4: - omSysExitReq = 1; - arg0->func = NULL; - arg0->unk10 = 0; - break; - default: - break; + default: + break; } } -UnkWindowDataStruct *fn_1_3EA4(s32 arg0) +PresentWindow *PresentWinCreate(s32 id) { - UnkWindowDataStruct *var_r31; + PresentWindow *var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(PresentWindow), MEMORY_DEFAULT_NUM); - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWindowDataStruct), MEMORY_DEFAULT_NUM); - var_r31->unk18 = 0; - var_r31->unk10 = 0; - var_r31->unk14 = 0; - var_r31->unk_20 = 0; - var_r31->process = HuPrcChildCreate(fn_1_41E0, 1000, 8192, 0, lbl_1_bss_4); + var_r31->messToBeSet = 0; + var_r31->messWaitSignal = 0; + var_r31->choiceSignal = 0; + var_r31->state = 0; + var_r31->process = HuPrcChildCreate(ExecWindow, 1000, 8192, 0, presentObjMan); var_r31->process->user_data = var_r31; - var_r31->unk08 = arg0; - switch (arg0) { - case 0: - var_r31->window = HuWinExCreateStyled(-10000.0f, 360.0f, 480, 80, -1, 1); - HuWinBGTPLvlSet(var_r31->window, 0.8f); - HuWinMesSpeedSet(var_r31->window, 0); - HuWinMesPalSet(var_r31->window, 7, 0, 0, 0); - break; - case 1: - var_r31->window = HuWinExCreateStyled(-10000.0f, 326.0f, 500, 40, -1, 0); - HuWinAttrSet(var_r31->window, 2048); - HuWinBGTPLvlSet(var_r31->window, 0.0f); - HuWinMesSpeedSet(var_r31->window, 0); - break; + var_r31->id = id; + switch (id) { + case 0: + var_r31->window = HuWinExCreateStyled(-10000.0f, 360.0f, 480, 80, -1, 1); + HuWinBGTPLvlSet(var_r31->window, 0.8f); + HuWinMesSpeedSet(var_r31->window, 0); + HuWinMesPalSet(var_r31->window, 7, 0, 0, 0); + break; + case 1: + var_r31->window = HuWinExCreateStyled(-10000.0f, 326.0f, 500, 40, -1, 0); + HuWinAttrSet(var_r31->window, 2048); + HuWinBGTPLvlSet(var_r31->window, 0.0f); + HuWinMesSpeedSet(var_r31->window, 0); + break; } HuWinDrawNoSet(var_r31->window, 63); - fn_1_4190(var_r31); + PresentWinDispOff(var_r31); HuSprExecLayerSet(63, 2); return var_r31; } -void fn_1_4040(UnkWindowDataStruct *windowData) +void PresentWinKill(PresentWindow *work) { - HuWinExCleanup(windowData->window); - HuPrcKill(windowData->process); - HuMemDirectFree(windowData); + HuWinExCleanup(work->window); + HuPrcKill(work->process); + HuMemDirectFree(work); } -void fn_1_4080(UnkWindowDataStruct *windowData) +void PresentWinAnimIn(PresentWindow *work) { - if (!windowData->unk0C) { - windowData->unk_20 = 1; + if (!work->visible) { + work->state = 1; } } -void fn_1_4098(UnkWindowDataStruct *windowData) +void PresentWinAnimOut(PresentWindow *work) { - if (windowData->unk0C) { - windowData->unk_20 = 2; + if (work->visible) { + work->state = 2; } } -void fn_1_40B0(UnkWindowDataStruct *windowData, u32 mess) +void PresentWinMesSet(PresentWindow *work, u32 mess) { - if (!windowData->unk_20) { - HuWinMesSet(windowData->window, mess); + if (!work->state) { + HuWinMesSet(work->window, mess); return; } - windowData->unk18 = mess; + work->messToBeSet = mess; } -void fn_1_4104(UnkWindowDataStruct *windowData, u32 mess, s16 index) +void PresentWinInsertMesSet(PresentWindow *work, u32 mess, s16 index) { - HuWinInsertMesSet(windowData->window, mess, index); + HuWinInsertMesSet(work->window, mess, index); } -void fn_1_4144(UnkWindowDataStruct *windowData, float x, float y) +void PresentWinPosSet(PresentWindow *work, float x, float y) { - HuWinPosSet(windowData->window, x, y); + HuWinPosSet(work->window, x, y); } -void fn_1_4184(UnkWindowDataStruct *windowData) +void PresentWinDispOn(PresentWindow *work) { - windowData->unk0C = 1; + work->visible = TRUE; } -void fn_1_4190(UnkWindowDataStruct *windowData) +void PresentWinDispOff(PresentWindow *work) { - windowData->unk0C = 0; + work->visible = FALSE; } -void fn_1_419C(UnkWindowDataStruct *windowData) +void PresentWinMesWait(PresentWindow *work) { - if (!windowData->unk_20) { - windowData->unk_20 = 3; + if (!work->state) { + work->state = 3; } - windowData->unk10 = 1; + work->messWaitSignal = 1; } -void fn_1_41BC(UnkWindowDataStruct *windowData, s32 arg1) +void PresentWinChoiceSet(PresentWindow *work, s32 choice) { - if (!windowData->unk_20) { - windowData->unk_20 = 4; + if (!work->state) { + work->state = 4; } - windowData->unk14 = 1; - windowData->choice = arg1; + work->choiceSignal = 1; + work->choice = choice; } -void fn_1_41E0(void) +static void ExecWindow(void) { - UnkWindowDataStruct *windowData; + PresentWindow *work = HuPrcCurrentGet()->user_data; - windowData = HuPrcCurrentGet()->user_data; while (TRUE) { - switch (windowData->unk_20) { - case 1: - windowData->unk0C = 1; - HuWinExAnimIn(windowData->window); - break; - case 2: - HuWinExAnimOut(windowData->window); - windowData->unk0C = 0; - break; - case 3: - winData[windowData->window].active_pad = 1; - HuWinMesWait(windowData->window); - windowData->unk10 = 0; - break; - case 4: - windowData->choice = HuWinChoiceGet(windowData->window, windowData->choice); - windowData->unk14 = 0; - break; + switch (work->state) { + case 1: + work->visible = 1; + HuWinExAnimIn(work->window); + break; + case 2: + HuWinExAnimOut(work->window); + work->visible = 0; + break; + case 3: + winData[work->window].active_pad = 1; + HuWinMesWait(work->window); + work->messWaitSignal = 0; + break; + case 4: + work->choice = HuWinChoiceGet(work->window, work->choice); + work->choiceSignal = 0; + break; } - if (windowData->unk18 != 0) { - HuWinMesSet(windowData->window, windowData->unk18); - windowData->unk18 = 0; + if (work->messToBeSet != 0) { + HuWinMesSet(work->window, work->messToBeSet); + work->messToBeSet = 0; } - windowData->unk_20 = 0; - if (windowData->unk10 != 0) { - windowData->unk_20 = 3; + work->state = 0; + if (work->messWaitSignal != 0) { + work->state = 3; } - if (windowData->unk14 != 0) { - windowData->unk_20 = 4; + if (work->choiceSignal != 0) { + work->state = 4; } HuPrcVSleep(); } diff --git a/src/REL/present/present.c b/src/REL/present/present.c index 51e47269..b6d90dfc 100644 --- a/src/REL/present/present.c +++ b/src/REL/present/present.c @@ -4,858 +4,1124 @@ #include "game/hsfdraw.h" #include "game/hsfex.h" #include "game/hsfman.h" +#include "game/window.h" #include "game/wipe.h" #include "REL/present.h" -void fn_1_180C(omObjData *object, s32 arg1); -void fn_1_1928(omObjData *arg0); -void fn_1_1FA8(omObjData *object, s32 arg1); -void fn_1_20E8(omObjData *arg0); -void fn_1_268C(omObjData *object, float *arg1, float *arg2, float *arg3); -void fn_1_2708(omObjData *arg0, float arg8, s32 arg1); -void fn_1_2774(omObjData *arg0); -s32 fn_1_28F0(omObjData *object); -void fn_1_2924(omObjData *object); -s32 fn_1_2B84(omObjData *arg0, s32 arg1, s32 arg2); -s32 fn_1_2BCC(omObjData *object, s32 arg1); -s32 fn_1_2C5C(omObjData *object, s32 arg1); -s32 fn_1_3394(s32 arg0); -void fn_1_33AC(omObjData *arg0); -s32 fn_1_393C(s32 arg0, s32 arg1); +#define CHARACTERS_MAX 8 -UnkPresentStruct3 lbl_1_data_50 = { { 0.0f, 400.0f, 0.0f }, { 0.0f, -400.0f, -500.0f }, { 255, 255, 255, 255 } }; -omObjFunc lbl_1_data_6C[] = { NULL, fn_1_1928, fn_1_20E8, fn_1_33AC }; +#define PRESENT_MDL_MAX 134 +#define PRESENT_MAX 60 -static const s32 lbl_1_rodata_A0[] = { 0x006E006C, 0x006E006B, 0x006E0000, 0x006E0001, 0x006E0002, 0x006E0003, 0x006E0004, 0x006E0005, 0x006E0006, - 0x006E0007, 0x006E0008, 0x006E0009, 0x006E000A, 0x006E000B, 0x006E000C, 0x006E000D, 0x006E000E, 0x006E000F, 0x006E0010, 0x006E0011, 0x006E0012, - 0x006E0013, 0x006E0014, 0x006E0015, 0x006E0016, 0x006E0017, 0x006E0018, 0x006E0019, 0x006E001A, 0x006E001B, 0x006E001C, 0x006E001D, 0x006E001E, - 0x006E001F, 0x006E0020, 0x006E0021, 0x006E0022, 0x006E0023, 0x006E0024, 0x006E0025, 0x006E0026, 0x006E0027, 0x006E0028, 0x006E0029, 0x006E002A, - 0x006E002B, 0x006E002C, 0x006E002D, 0x006E002E, 0x006E002F, 0x006E0030, 0x006E0031, 0x006E0032, 0x006E0033, 0x006E0034, 0x006E0035, 0x006E0036, - 0x006E0037, 0x006E0038, 0x006E0039, 0x006E003A, 0x006E003B, 0x006E003C, 0x006E003D, 0x006E003E, 0x006E003F, 0x006E0040, 0x006E0041, 0x006E0042, - 0x006E0043, 0x006E0044, 0x006E0045, 0x006E0046, 0x006E0047, 0x006E0048, 0x006E0049, 0x006E004A, 0x006E004B, 0x006E004C, 0x006E004D, 0x006E004E, - 0x006E004F, 0x006E0050, 0x006E0051, 0x006E0052, 0x006E0053, 0x006E0054, 0x006E0055, 0x006E0056, 0x006E0057, 0x006E0058, 0x006E0059, 0x006E005A, - 0x006E005B, 0x006E005C, 0x006E005D, 0x006E005E, 0x006E005F, 0x006E0060, 0x006E0061, 0x006E0062, 0x006E0063, 0x006E0064, 0x006E0065, 0x006E0066, - 0x006E0067, 0x006E0068, 0x006E0069, 0x006E006A, 0x006E006D, 0x006E006F, 0x006E0071, 0x006E0073, 0x006E0075, 0x006E0077, 0x006E0079, 0x006E007B, - 0x006E007D, 0x006E006E, 0x006E0070, 0x006E0072, 0x006E0074, 0x006E0076, 0x006E0078, 0x006E007A, 0x006E007C, 0x006E007F, 0x006E0080, 0x006E0081, - 0x006E0082, 0x006E0083, 0x006E0084, 0x006E0085, 0x006E0086 }; +#define PRESENT_COUNT_CHAR_ROOM 6 +#define PRESENT_COUNT_MG_ROOM 11 -static const UnkPresentNestedOuterStruct lbl_1_rodata_2B8[] = { - { 0x00000006, { { 0x00000002, 0x00000008, 0x00320006, 0x00320042 }, { 0x00000003, 0x00000009, 0x00320007, 0x00320043 }, - { 0x00000004, 0x0000000A, 0x00320008, 0x00320044 }, { 0x00000005, 0x0000000B, 0x00320009, 0x00320045 }, - { 0x00000006, 0x0000000C, 0x0032000A, 0x00320046 }, { 0x00000007, 0x0000000D, 0x0032000B, 0x00320047 }, - }, - }, - { 0x00000006, { { 0x0000000E, 0x00000014, 0x0032000C, 0x00320048 }, { 0x0000000F, 0x00000015, 0x0032000D, 0x00320049 }, - { 0x00000010, 0x00000016, 0x0032000E, 0x0032004A }, { 0x00000011, 0x00000017, 0x0032000F, 0x0032004B }, - { 0x00000012, 0x00000018, 0x00320010, 0x0032004C }, { 0x00000013, 0x00000019, 0x00320011, 0x0032004D }, - }, - }, - { 0x00000006, { { 0x0000001A, 0x00000020, 0x00320012, 0x0032004E }, { 0x0000001B, 0x00000021, 0x00320013, 0x0032004F }, - { 0x0000001C, 0x00000022, 0x00320014, 0x00320050 }, { 0x0000001D, 0x00000023, 0x00320015, 0x00320051 }, - { 0x0000001E, 0x00000024, 0x00320016, 0x00320052 }, { 0x0000001F, 0x00000025, 0x00320017, 0x00320053 }, - }, - }, - { 0x00000006, { { 0x00000026, 0x0000002C, 0x00320018, 0x00320054 }, { 0x00000027, 0x0000002D, 0x00320019, 0x00320055 }, - { 0x00000028, 0x0000002E, 0x0032001A, 0x00320056 }, { 0x00000029, 0x0000002F, 0x0032001B, 0x00320057 }, - { 0x0000002A, 0x00000030, 0x0032001C, 0x00320058 }, { 0x0000002B, 0x00000031, 0x0032001D, 0x00320059 }, - }, - }, - { 0x00000006, { { 0x00000032, 0x00000038, 0x0032001E, 0x0032005A }, { 0x00000033, 0x00000039, 0x0032001F, 0x0032005B }, - { 0x00000034, 0x0000003A, 0x00320020, 0x0032005C }, { 0x00000035, 0x0000003B, 0x00320021, 0x0032005D }, - { 0x00000036, 0x0000003C, 0x00320022, 0x0032005E }, { 0x00000037, 0x0000003D, 0x00320023, 0x0032005F }, - }, - }, - { 0x00000001, { { 0x00000001, 0xFFFFFFFF, 0x00320041, 0x00320041 } } }, - { 0x00000006, { { 0x0000003E, 0x00000044, 0x00320024, 0x00320060 }, { 0x0000003F, 0x00000045, 0x00320025, 0x00320061 }, - { 0x00000040, 0x00000046, 0x00320026, 0x00320062 }, { 0x00000041, 0x00000047, 0x00320027, 0x00320063 }, - { 0x00000042, 0x00000048, 0x00320028, 0x00320064 }, { 0x00000043, 0x00000049, 0x00320029, 0x00320065 }, - }, - }, - { 0x00000006, { { 0x0000004A, 0x00000050, 0x0032002A, 0x00320066 }, { 0x0000004B, 0x00000051, 0x0032002B, 0x00320067 }, - { 0x0000004C, 0x00000052, 0x0032002C, 0x00320068 }, { 0x0000004D, 0x00000053, 0x0032002D, 0x00320069 }, - { 0x0000004E, 0x00000054, 0x0032002E, 0x0032006A }, { 0x0000004F, 0x00000055, 0x0032002F, 0x0032006B }, - }, - }, - { 0x00000006, { { 0x00000056, 0x0000005C, 0x00320030, 0x0032006C }, { 0x00000057, 0x0000005D, 0x00320031, 0x0032006D }, - { 0x00000058, 0x0000005E, 0x00320032, 0x0032006E }, { 0x00000059, 0x0000005F, 0x00320033, 0x0032006F }, - { 0x0000005A, 0x00000060, 0x00320034, 0x00320070 }, { 0x0000005B, 0x00000061, 0x00320035, 0x00320071 }, - }, - }, - { 0x0000000B, { { 0x00000062, 0xFFFFFFFF, 0x00320036, 0x00320072 }, { 0x00000063, 0xFFFFFFFF, 0x00320037, 0x00320073 }, - { 0x00000064, 0xFFFFFFFF, 0x00320038, 0x00320074 }, { 0x00000065, 0xFFFFFFFF, 0x00320039, 0x00320075 }, - { 0x00000066, 0xFFFFFFFF, 0x0032003A, 0x00320076 }, { 0x00000067, 0xFFFFFFFF, 0x0032003B, 0x00320077 }, - { 0x00000068, 0xFFFFFFFF, 0x0032003C, 0x00320078 }, { 0x00000069, 0xFFFFFFFF, 0x0032003D, 0x00320079 }, - { 0x0000006A, 0xFFFFFFFF, 0x0032003E, 0x0032007A }, { 0x0000006B, 0xFFFFFFFF, 0x0032003F, 0x0032007B }, - { 0x0000006C, 0xFFFFFFFF, 0x00320040, 0x0032007C } - }, - }, +#define PRESENT_CONSTELLATION 5 + +#define ROOM_MARIO 0 +#define ROOM_LUIGI 1 +#define ROOM_PEACH 2 +#define ROOM_YOSHI 3 +#define ROOM_WARIO 4 +#define ROOM_TROPHY 5 +#define ROOM_DK 6 +#define ROOM_DAISY 7 +#define ROOM_WALUIGI 8 +#define ROOM_MG 9 +#define ROOM_MAX 9 + +#define ROOM_CHANGE_LEFT 1 +#define ROOM_CHANGE_RIGHT 2 + +typedef struct PresentWork { + /* 0x00 */ BOOL cursorVisibleF; + /* 0x04 */ BOOL roomNotEmptyF; + /* 0x08 */ BOOL constellationSelF; + /* 0x0C */ s32 execMode; + /* 0x10 */ omObjData *object[PRESENT_MDL_MAX]; + /* 0x228 */ PresentWindow *presentDescWindow; + /* 0x22C */ PresentWindow *btnLegendWindow; + /* 0x230 */ s16 cursor; + /* 0x234 */ s32 room; + /* 0x238 */ s32 idxInRoom; + /* 0x23C */ float rot; + /* 0x240 */ float rotPrev; + /* 0x244 */ float rotTarget; + /* 0x248 */ float timeRot; + /* 0x24C */ float presentFallingTime; + /* 0x250 */ float rotSpeed; + /* 0x254 */ float presentFallingSpeed; + /* 0x258 */ float cursorTime; + /* 0x25C */ float cursorSpeed; + /* 0x260 */ Vec2f cursorPos; + /* 0x268 */ Vec2f newCursorPos; + /* 0x270 */ BOOL presentUnlockedF[PRESENT_MAX]; + /* 0x360 */ char unk360[4]; +} PresentWork; /* size = 0x364 */ + +typedef struct UnkLightDataStruct { + /* 0x00 */ Vec pos; + /* 0x0C */ Vec dest; + /* 0x18 */ GXColor color; +} UnkLightDataStruct; /* size = 0x1C */ // same as option::state::UnkLightDataStruct + +typedef struct PresentData { + /* 0x00 */ s32 cursorPosIdx; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 nameMess; + /* 0x0C */ s32 descMess; +} PresentData; /* size = 0x10 */ + +typedef struct RoomData { + /* 0x00 */ s32 presentCount; + /* 0x04 */ PresentData presentData[11]; +} RoomData; /* size = 0xB4 */ + +typedef struct PresentDistanceStruct { + /* 0x00 */ s32 present; + /* 0x04 */ float distance; +} PresentDistanceStruct; /* size = 0x08 */ + +static void ExecSelectRoom(omObjData *object); +static void ChangeRoom(omObjData *object, s32 direction); +static void ExecSelectPresent(omObjData *object); +static void GetCursorPos(omObjData *object, float *x, float *y, float *z); +static void SetCameraRot(omObjData *object, float rot, s32 duration); +static void RotateCamera(omObjData *object); +static BOOL CameraRotationDoneCheck(omObjData *object); +static void ShowHidePresents(omObjData *object); +static BOOL PresentUnlocked(omObjData *object, s32 room, s32 present); +static s32 UnlockedPresents(omObjData *object, s32 room); +static s32 MoveCursor(omObjData *object, s32 arg1); +static s32 TotalPresentsInRoom(s32 room); +static void ExecPresentGet(omObjData *object); +static s32 fn_1_393C(s32 arg0, s32 arg1); + +static UnkLightDataStruct lightTbl = { + { 0.0f, 400.0f, 0.0f }, + { 0.0f, -400.0f, -500.0f }, + { 255, 255, 255, 255 }, +}; +static omObjFunc execModeTbl[] = { NULL, ExecSelectRoom, ExecSelectPresent, ExecPresentGet }; + +static const s32 presentMdlTbl[PRESENT_MDL_MAX] = { + DATA_MAKE_NUM(DATADIR_PRESENT, 108), + DATA_MAKE_NUM(DATADIR_PRESENT, 107), + DATA_MAKE_NUM(DATADIR_PRESENT, 0), + DATA_MAKE_NUM(DATADIR_PRESENT, 1), + DATA_MAKE_NUM(DATADIR_PRESENT, 2), + DATA_MAKE_NUM(DATADIR_PRESENT, 3), + DATA_MAKE_NUM(DATADIR_PRESENT, 4), + DATA_MAKE_NUM(DATADIR_PRESENT, 5), + DATA_MAKE_NUM(DATADIR_PRESENT, 6), + DATA_MAKE_NUM(DATADIR_PRESENT, 7), + DATA_MAKE_NUM(DATADIR_PRESENT, 8), + DATA_MAKE_NUM(DATADIR_PRESENT, 9), + DATA_MAKE_NUM(DATADIR_PRESENT, 10), + DATA_MAKE_NUM(DATADIR_PRESENT, 11), + DATA_MAKE_NUM(DATADIR_PRESENT, 12), + DATA_MAKE_NUM(DATADIR_PRESENT, 13), + DATA_MAKE_NUM(DATADIR_PRESENT, 14), + DATA_MAKE_NUM(DATADIR_PRESENT, 15), + DATA_MAKE_NUM(DATADIR_PRESENT, 16), + DATA_MAKE_NUM(DATADIR_PRESENT, 17), + DATA_MAKE_NUM(DATADIR_PRESENT, 18), + DATA_MAKE_NUM(DATADIR_PRESENT, 19), + DATA_MAKE_NUM(DATADIR_PRESENT, 20), + DATA_MAKE_NUM(DATADIR_PRESENT, 21), + DATA_MAKE_NUM(DATADIR_PRESENT, 22), + DATA_MAKE_NUM(DATADIR_PRESENT, 23), + DATA_MAKE_NUM(DATADIR_PRESENT, 24), + DATA_MAKE_NUM(DATADIR_PRESENT, 25), + DATA_MAKE_NUM(DATADIR_PRESENT, 26), + DATA_MAKE_NUM(DATADIR_PRESENT, 27), + DATA_MAKE_NUM(DATADIR_PRESENT, 28), + DATA_MAKE_NUM(DATADIR_PRESENT, 29), + DATA_MAKE_NUM(DATADIR_PRESENT, 30), + DATA_MAKE_NUM(DATADIR_PRESENT, 31), + DATA_MAKE_NUM(DATADIR_PRESENT, 32), + DATA_MAKE_NUM(DATADIR_PRESENT, 33), + DATA_MAKE_NUM(DATADIR_PRESENT, 34), + DATA_MAKE_NUM(DATADIR_PRESENT, 35), + DATA_MAKE_NUM(DATADIR_PRESENT, 36), + DATA_MAKE_NUM(DATADIR_PRESENT, 37), + DATA_MAKE_NUM(DATADIR_PRESENT, 38), + DATA_MAKE_NUM(DATADIR_PRESENT, 39), + DATA_MAKE_NUM(DATADIR_PRESENT, 40), + DATA_MAKE_NUM(DATADIR_PRESENT, 41), + DATA_MAKE_NUM(DATADIR_PRESENT, 42), + DATA_MAKE_NUM(DATADIR_PRESENT, 43), + DATA_MAKE_NUM(DATADIR_PRESENT, 44), + DATA_MAKE_NUM(DATADIR_PRESENT, 45), + DATA_MAKE_NUM(DATADIR_PRESENT, 46), + DATA_MAKE_NUM(DATADIR_PRESENT, 47), + DATA_MAKE_NUM(DATADIR_PRESENT, 48), + DATA_MAKE_NUM(DATADIR_PRESENT, 49), + DATA_MAKE_NUM(DATADIR_PRESENT, 50), + DATA_MAKE_NUM(DATADIR_PRESENT, 51), + DATA_MAKE_NUM(DATADIR_PRESENT, 52), + DATA_MAKE_NUM(DATADIR_PRESENT, 53), + DATA_MAKE_NUM(DATADIR_PRESENT, 54), + DATA_MAKE_NUM(DATADIR_PRESENT, 55), + DATA_MAKE_NUM(DATADIR_PRESENT, 56), + DATA_MAKE_NUM(DATADIR_PRESENT, 57), + DATA_MAKE_NUM(DATADIR_PRESENT, 58), + DATA_MAKE_NUM(DATADIR_PRESENT, 59), + DATA_MAKE_NUM(DATADIR_PRESENT, 60), + DATA_MAKE_NUM(DATADIR_PRESENT, 61), + DATA_MAKE_NUM(DATADIR_PRESENT, 62), + DATA_MAKE_NUM(DATADIR_PRESENT, 63), + DATA_MAKE_NUM(DATADIR_PRESENT, 64), + DATA_MAKE_NUM(DATADIR_PRESENT, 65), + DATA_MAKE_NUM(DATADIR_PRESENT, 66), + DATA_MAKE_NUM(DATADIR_PRESENT, 67), + DATA_MAKE_NUM(DATADIR_PRESENT, 68), + DATA_MAKE_NUM(DATADIR_PRESENT, 69), + DATA_MAKE_NUM(DATADIR_PRESENT, 70), + DATA_MAKE_NUM(DATADIR_PRESENT, 71), + DATA_MAKE_NUM(DATADIR_PRESENT, 72), + DATA_MAKE_NUM(DATADIR_PRESENT, 73), + DATA_MAKE_NUM(DATADIR_PRESENT, 74), + DATA_MAKE_NUM(DATADIR_PRESENT, 75), + DATA_MAKE_NUM(DATADIR_PRESENT, 76), + DATA_MAKE_NUM(DATADIR_PRESENT, 77), + DATA_MAKE_NUM(DATADIR_PRESENT, 78), + DATA_MAKE_NUM(DATADIR_PRESENT, 79), + DATA_MAKE_NUM(DATADIR_PRESENT, 80), + DATA_MAKE_NUM(DATADIR_PRESENT, 81), + DATA_MAKE_NUM(DATADIR_PRESENT, 82), + DATA_MAKE_NUM(DATADIR_PRESENT, 83), + DATA_MAKE_NUM(DATADIR_PRESENT, 84), + DATA_MAKE_NUM(DATADIR_PRESENT, 85), + DATA_MAKE_NUM(DATADIR_PRESENT, 86), + DATA_MAKE_NUM(DATADIR_PRESENT, 87), + DATA_MAKE_NUM(DATADIR_PRESENT, 88), + DATA_MAKE_NUM(DATADIR_PRESENT, 89), + DATA_MAKE_NUM(DATADIR_PRESENT, 90), + DATA_MAKE_NUM(DATADIR_PRESENT, 91), + DATA_MAKE_NUM(DATADIR_PRESENT, 92), + DATA_MAKE_NUM(DATADIR_PRESENT, 93), + DATA_MAKE_NUM(DATADIR_PRESENT, 94), + DATA_MAKE_NUM(DATADIR_PRESENT, 95), + DATA_MAKE_NUM(DATADIR_PRESENT, 96), + DATA_MAKE_NUM(DATADIR_PRESENT, 97), + DATA_MAKE_NUM(DATADIR_PRESENT, 98), + DATA_MAKE_NUM(DATADIR_PRESENT, 99), + DATA_MAKE_NUM(DATADIR_PRESENT, 100), + DATA_MAKE_NUM(DATADIR_PRESENT, 101), + DATA_MAKE_NUM(DATADIR_PRESENT, 102), + DATA_MAKE_NUM(DATADIR_PRESENT, 103), + DATA_MAKE_NUM(DATADIR_PRESENT, 104), + DATA_MAKE_NUM(DATADIR_PRESENT, 105), + DATA_MAKE_NUM(DATADIR_PRESENT, 106), + DATA_MAKE_NUM(DATADIR_PRESENT, 109), + DATA_MAKE_NUM(DATADIR_PRESENT, 111), + DATA_MAKE_NUM(DATADIR_PRESENT, 113), + DATA_MAKE_NUM(DATADIR_PRESENT, 115), + DATA_MAKE_NUM(DATADIR_PRESENT, 117), + DATA_MAKE_NUM(DATADIR_PRESENT, 119), + DATA_MAKE_NUM(DATADIR_PRESENT, 121), + DATA_MAKE_NUM(DATADIR_PRESENT, 123), + DATA_MAKE_NUM(DATADIR_PRESENT, 125), + DATA_MAKE_NUM(DATADIR_PRESENT, 110), + DATA_MAKE_NUM(DATADIR_PRESENT, 112), + DATA_MAKE_NUM(DATADIR_PRESENT, 114), + DATA_MAKE_NUM(DATADIR_PRESENT, 116), + DATA_MAKE_NUM(DATADIR_PRESENT, 118), + DATA_MAKE_NUM(DATADIR_PRESENT, 120), + DATA_MAKE_NUM(DATADIR_PRESENT, 122), + DATA_MAKE_NUM(DATADIR_PRESENT, 124), + DATA_MAKE_NUM(DATADIR_PRESENT, 127), + DATA_MAKE_NUM(DATADIR_PRESENT, 128), + DATA_MAKE_NUM(DATADIR_PRESENT, 129), + DATA_MAKE_NUM(DATADIR_PRESENT, 130), + DATA_MAKE_NUM(DATADIR_PRESENT, 131), + DATA_MAKE_NUM(DATADIR_PRESENT, 132), + DATA_MAKE_NUM(DATADIR_PRESENT, 133), + DATA_MAKE_NUM(DATADIR_PRESENT, 134), }; -omObjData *fn_1_1458(void) +static const RoomData roomTbl[10] = { + { + 0x00000006, + { + { 0x00000002, 0x00000008, 0x00320006, 0x00320042 }, + { 0x00000003, 0x00000009, 0x00320007, 0x00320043 }, + { 0x00000004, 0x0000000A, 0x00320008, 0x00320044 }, + { 0x00000005, 0x0000000B, 0x00320009, 0x00320045 }, + { 0x00000006, 0x0000000C, 0x0032000A, 0x00320046 }, + { 0x00000007, 0x0000000D, 0x0032000B, 0x00320047 }, + }, + }, + { + 0x00000006, + { + { 0x0000000E, 0x00000014, 0x0032000C, 0x00320048 }, + { 0x0000000F, 0x00000015, 0x0032000D, 0x00320049 }, + { 0x00000010, 0x00000016, 0x0032000E, 0x0032004A }, + { 0x00000011, 0x00000017, 0x0032000F, 0x0032004B }, + { 0x00000012, 0x00000018, 0x00320010, 0x0032004C }, + { 0x00000013, 0x00000019, 0x00320011, 0x0032004D }, + }, + }, + { + 0x00000006, + { + { 0x0000001A, 0x00000020, 0x00320012, 0x0032004E }, + { 0x0000001B, 0x00000021, 0x00320013, 0x0032004F }, + { 0x0000001C, 0x00000022, 0x00320014, 0x00320050 }, + { 0x0000001D, 0x00000023, 0x00320015, 0x00320051 }, + { 0x0000001E, 0x00000024, 0x00320016, 0x00320052 }, + { 0x0000001F, 0x00000025, 0x00320017, 0x00320053 }, + }, + }, + { + 0x00000006, + { + { 0x00000026, 0x0000002C, 0x00320018, 0x00320054 }, + { 0x00000027, 0x0000002D, 0x00320019, 0x00320055 }, + { 0x00000028, 0x0000002E, 0x0032001A, 0x00320056 }, + { 0x00000029, 0x0000002F, 0x0032001B, 0x00320057 }, + { 0x0000002A, 0x00000030, 0x0032001C, 0x00320058 }, + { 0x0000002B, 0x00000031, 0x0032001D, 0x00320059 }, + }, + }, + { + 0x00000006, + { + { 0x00000032, 0x00000038, 0x0032001E, 0x0032005A }, + { 0x00000033, 0x00000039, 0x0032001F, 0x0032005B }, + { 0x00000034, 0x0000003A, 0x00320020, 0x0032005C }, + { 0x00000035, 0x0000003B, 0x00320021, 0x0032005D }, + { 0x00000036, 0x0000003C, 0x00320022, 0x0032005E }, + { 0x00000037, 0x0000003D, 0x00320023, 0x0032005F }, + }, + }, + { + 0x00000001, + { { 0x00000001, 0xFFFFFFFF, 0x00320041, 0x00320041 } }, + }, + { + 0x00000006, + { + { 0x0000003E, 0x00000044, 0x00320024, 0x00320060 }, + { 0x0000003F, 0x00000045, 0x00320025, 0x00320061 }, + { 0x00000040, 0x00000046, 0x00320026, 0x00320062 }, + { 0x00000041, 0x00000047, 0x00320027, 0x00320063 }, + { 0x00000042, 0x00000048, 0x00320028, 0x00320064 }, + { 0x00000043, 0x00000049, 0x00320029, 0x00320065 }, + }, + }, + { + 0x00000006, + { + { 0x0000004A, 0x00000050, 0x0032002A, 0x00320066 }, + { 0x0000004B, 0x00000051, 0x0032002B, 0x00320067 }, + { 0x0000004C, 0x00000052, 0x0032002C, 0x00320068 }, + { 0x0000004D, 0x00000053, 0x0032002D, 0x00320069 }, + { 0x0000004E, 0x00000054, 0x0032002E, 0x0032006A }, + { 0x0000004F, 0x00000055, 0x0032002F, 0x0032006B }, + }, + }, + { + 0x00000006, + { + { 0x00000056, 0x0000005C, 0x00320030, 0x0032006C }, + { 0x00000057, 0x0000005D, 0x00320031, 0x0032006D }, + { 0x00000058, 0x0000005E, 0x00320032, 0x0032006E }, + { 0x00000059, 0x0000005F, 0x00320033, 0x0032006F }, + { 0x0000005A, 0x00000060, 0x00320034, 0x00320070 }, + { 0x0000005B, 0x00000061, 0x00320035, 0x00320071 }, + }, + }, + { + 0x0000000B, + { + { 0x00000062, 0xFFFFFFFF, 0x00320036, 0x00320072 }, + { 0x00000063, 0xFFFFFFFF, 0x00320037, 0x00320073 }, + { 0x00000064, 0xFFFFFFFF, 0x00320038, 0x00320074 }, + { 0x00000065, 0xFFFFFFFF, 0x00320039, 0x00320075 }, + { 0x00000066, 0xFFFFFFFF, 0x0032003A, 0x00320076 }, + { 0x00000067, 0xFFFFFFFF, 0x0032003B, 0x00320077 }, + { 0x00000068, 0xFFFFFFFF, 0x0032003C, 0x00320078 }, + { 0x00000069, 0xFFFFFFFF, 0x0032003D, 0x00320079 }, + { 0x0000006A, 0xFFFFFFFF, 0x0032003E, 0x0032007A }, + { 0x0000006B, 0xFFFFFFFF, 0x0032003F, 0x0032007B }, + { 0x0000006C, 0xFFFFFFFF, 0x00320040, 0x0032007C }, + }, + }, +}; + +omObjData *PresentCreate(void) { - UnkPresentStruct2 *var_r31; - s32 var_r30; - omObjData *var_r29; - s32 var_r28; - s16 var_r27; - LightData *var_r26; + s32 i; + s32 j; + s16 lightId; + LightData *lightData; - var_r29 = omAddObjEx(lbl_1_bss_4, 1003, 0, 0, 1, NULL); - var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 868, MEMORY_DEFAULT_NUM); - var_r29->data = var_r31; - var_r31->unk_234 = 0; - var_r31->unk_238 = 0; - var_r31->unk_23C = 0.0f; - var_r31->unk_248 = 1.0f; - var_r31->unk_250 = 0.0f; + omObjData *object = omAddObjEx(presentObjMan, 1003, 0, 0, 1, NULL); + PresentWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(PresentWork), MEMORY_DEFAULT_NUM); + object->data = work; + work->room = 0; + work->idxInRoom = 0; + work->rot = 0.0f; + work->timeRot = 1.0f; + work->rotSpeed = 0.0f; - for (var_r30 = 0; var_r30 < 60; var_r30++) { - var_r31->unk_270[var_r30] = GWGameStat.present[var_r30]; + for (i = 0; i < PRESENT_MAX; i++) { + work->presentUnlockedF[i] = GWGameStat.present[i]; } - for (var_r30 = 0; var_r30 < 59; var_r30++) { - if (!var_r31->unk_270[var_r30]) { + for (i = 0; i < PRESENT_MAX - 1; i++) { + if (!work->presentUnlockedF[i]) { break; } } - if (var_r30 == 59) { - var_r31->unk_270[59] = 1; + if (i == PRESENT_MAX - 1) { + work->presentUnlockedF[PRESENT_MAX - 1] = TRUE; } Hu3DLighInit(); - var_r27 = Hu3DGLightCreateV(&lbl_1_data_50.unk_00, &lbl_1_data_50.unk_0C, &lbl_1_data_50.unk_18); - Hu3DGLightInfinitytSet(var_r27); - Hu3DGLightStaticSet(var_r27, 1); - var_r26 = &Hu3DGlobalLight[var_r27]; - var_r26->unk_00 = var_r26->unk_00 | 0x8000; + lightId = Hu3DGLightCreateV(&lightTbl.pos, &lightTbl.dest, &lightTbl.color); + Hu3DGLightInfinitytSet(lightId); + Hu3DGLightStaticSet(lightId, 1); + lightData = &Hu3DGlobalLight[lightId]; + lightData->unk_00 |= 0x8000; - for (var_r30 = 0; var_r30 < 134; var_r30++) { - var_r31->unk_10[var_r30] = omAddObjEx(lbl_1_bss_4, 1003, 1, 0, 1, NULL); - var_r31->unk_10[var_r30]->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_rodata_A0[var_r30], MEMORY_DEFAULT_NUM, HEAP_DATA)); - Hu3DModelLayerSet(var_r31->unk_10[var_r30]->model[0], 0); - Hu3DModelAttrSet(var_r31->unk_10[var_r30]->model[0], 1); + for (i = 0; i < PRESENT_MDL_MAX; i++) { + work->object[i] = omAddObjEx(presentObjMan, 1003, 1, 0, 1, NULL); + work->object[i]->model[0] = Hu3DModelCreateFile(presentMdlTbl[i]); + Hu3DModelLayerSet(work->object[i]->model[0], 0); + Hu3DModelAttrSet(work->object[i]->model[0], HU3D_ATTR_DISPOFF); } - for (var_r28 = 0; var_r28 < 8; var_r28++) { - for (var_r30 = 0; var_r30 < 6; var_r30++) { - Hu3DModelLayerSet(var_r31->unk_10[var_r30 + 2 + var_r28 * 6 * 2]->model[0], 1); + for (j = 0; j < 8; j++) { + for (i = 0; i < 6; i++) { + Hu3DModelLayerSet(work->object[i + 2 + j * 6 * 2]->model[0], 1); } } - Hu3DModelShadowMapSet(var_r31->unk_10[0]->model[0]); - fn_1_2924(var_r29); - var_r31->sprite = espEntry(7209095, 0, 0); - espDispOff(var_r31->sprite); - var_r31->unk_228 = fn_1_3EA4(0); - var_r31->unk_22C = fn_1_3EA4(1); - fn_1_2708(var_r29, var_r31->unk_234 * 36.0f, 1); - fn_1_2774(var_r29); - fn_1_180C(var_r29, 0); + Hu3DModelShadowMapSet(work->object[0]->model[0]); + ShowHidePresents(object); + work->cursor = espEntry(DATA_MAKE_NUM(DATADIR_PRESENT, 135), 0, 0); + espDispOff(work->cursor); + work->presentDescWindow = PresentWinCreate(0); + work->btnLegendWindow = PresentWinCreate(1); + SetCameraRot(object, work->room * 36.0f, 1); + RotateCamera(object); + PresentExecModeSet(object, PRESENT_MODE_NONE); - (void)var_r27; - return var_r29; + (void)lightId; + return object; } -void fn_1_1784(omObjData *object) +void PresentKill(omObjData *object) { - UnkPresentStruct2 *var_r31; - s32 var_r30; - void *var_r29; + s32 i; - var_r31 = object->data; - fn_1_4040(var_r31->unk_228); - fn_1_4040(var_r31->unk_22C); + PresentWork *work = object->data; + PresentWinKill(work->presentDescWindow); + PresentWinKill(work->btnLegendWindow); - for (var_r30 = 0; var_r30 < 134; var_r30++) { - Hu3DModelKill(var_r31->unk_10[var_r30]->model[0]); + for (i = 0; i < PRESENT_MDL_MAX; i++) { + Hu3DModelKill(work->object[i]->model[0]); } - espKill(var_r31->sprite); - HuMemDirectFree(var_r31); + espKill(work->cursor); + HuMemDirectFree(work); } -void fn_1_180C(omObjData *object, s32 arg1) +void PresentExecModeSet(omObjData *object, s32 execMode) { - UnkPresentStruct2 *var_r31; + PresentWork *work = object->data; - var_r31 = object->data; - var_r31->unk_0C = arg1; - object->func = lbl_1_data_6C[arg1]; + work->execMode = execMode; + object->func = execModeTbl[execMode]; object->unk10 = 0; object->unk10 = 0; } -s32 fn_1_1850(omObjData *object) +s32 PresentExecModeGet(omObjData *object) { - UnkPresentStruct2 *var_r31; - - var_r31 = object->data; - return var_r31->unk_0C; + PresentWork *work = object->data; + return work->execMode; } -static const s32 lbl_1_rodata_9D8[] = { 0, 1, 2, 3, 4, 6, 7, 8 }; -static const s32 lbl_1_rodata_9F8[] = { 0, 1, 2, 3, 4, 0, 5, 6, 7, 0 }; +static const s32 roomIdxTbl[CHARACTERS_MAX] = { + ROOM_MARIO, + ROOM_LUIGI, + ROOM_PEACH, + ROOM_YOSHI, + ROOM_WARIO, + ROOM_DK, + ROOM_DAISY, + ROOM_WALUIGI, +}; -void fn_1_186C(omObjData *object, s32 arg1) +void PresentSelectedIDSet(omObjData *object, s32 id) { - UnkPresentStruct2 *var_r31; + PresentWork *work = object->data; - var_r31 = object->data; - if (arg1 < 48) { - var_r31->unk_234 = lbl_1_rodata_9D8[arg1 / 6]; - var_r31->unk_238 = arg1 % 6; + if (id < 48) { + work->room = roomIdxTbl[id / PRESENT_COUNT_CHAR_ROOM]; + work->idxInRoom = id % PRESENT_COUNT_CHAR_ROOM; return; } - if (arg1 < 59) { - var_r31->unk_234 = 9; - var_r31->unk_238 = (arg1 - 48) % 11; + if (id < 59) { + work->room = ROOM_MG; + work->idxInRoom = (id - 48) % PRESENT_COUNT_MG_ROOM; return; } - var_r31->unk_234 = 5; - var_r31->unk_238 = 0; + work->room = ROOM_TROPHY; + work->idxInRoom = 0; } -void fn_1_1928(omObjData *object) -{ - Vec sp8; - UnkPresentStruct2 *var_r31; - s32 var_r29; - UnkPresentStruct2 *var_r28; +static const s32 roomMessTbl[] = { 0, 1, 2, 3, 4, 0, 5, 6, 7, 0 }; + +static void ExecSelectRoom(omObjData *object) +{ + Vec cursorPos; + s32 mess; + + PresentWork *work = object->data; - var_r31 = object->data; switch (object->unk10) { - case 0: - var_r31->unk_00 = 0; - var_r31->unk_08 = 0; - object->unk10 = 1; - case 1: - if (var_r31->unk_08) { - fn_1_920(lbl_1_bss_8, 0.0f, 220.0f, 250.0f, 30); - fn_1_9A4(lbl_1_bss_8, 0.0f, 420.0f, -600.0f, 30); - } else { - fn_1_920(lbl_1_bss_8, 0.0f, 220.0f, 250.0f, 30); - fn_1_9A4(lbl_1_bss_8, 0.0f, 0.0f, -600.0f, 30); - } - object->unk10 = 2; - case 2: - if (!fn_1_B6C(lbl_1_bss_8) && !var_r31->unk_228->unk_20 && !fn_1_28F0(object)) { - fn_1_4080(var_r31->unk_228); - fn_1_4080(var_r31->unk_22C); - if (var_r31->unk_08) { - var_r29 = 0x320080; - } else if (var_r31->unk_234 == 5) { - var_r29 = 0x320085; - } else { - var_r29 = 0x32007e; + case 0: + work->cursorVisibleF = FALSE; + work->constellationSelF = FALSE; + object->unk10 = 1; + case 1: + if (work->constellationSelF) { + PresentCameraTargetSet(presentCamera, 0.0f, 220.0f, 250.0f, 30); + PresentCameraFocusSet(presentCamera, 0.0f, 420.0f, -600.0f, 30); } - fn_1_40B0(var_r31->unk_22C, var_r29); - switch (var_r31->unk_234) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 6: - case 7: - case 8: - if (var_r31->unk_08) { - if (fn_1_2B84(object, var_r31->unk_234, 5)) { - var_r29 = 0x320005; - } else { - var_r29 = 0x320082; + else { + PresentCameraTargetSet(presentCamera, 0.0f, 220.0f, 250.0f, 30); + PresentCameraFocusSet(presentCamera, 0.0f, 0.0f, -600.0f, 30); + } + object->unk10 = 2; + case 2: + if (!PresentCameraDoneCheck(presentCamera) && !work->presentDescWindow->state && !CameraRotationDoneCheck(object)) { + PresentWinAnimIn(work->presentDescWindow); + PresentWinAnimIn(work->btnLegendWindow); + if (work->constellationSelF) { + mess = MAKE_MESSID(0x32, 0x80); + } + else if (work->room == ROOM_TROPHY) { + mess = MAKE_MESSID(0x32, 0x85); + } + else { + mess = MAKE_MESSID(0x32, 0x7e); + } + PresentWinMesSet(work->btnLegendWindow, mess); + switch (work->room) { + case ROOM_MARIO: + case ROOM_LUIGI: + case ROOM_PEACH: + case ROOM_YOSHI: + case ROOM_WARIO: + case ROOM_DK: + case ROOM_DAISY: + case ROOM_WALUIGI: + if (work->constellationSelF) { + if (PresentUnlocked(object, work->room, ROOM_TROPHY)) { + mess = MAKE_MESSID(0x32, 0x05); + } + else { + mess = MAKE_MESSID(0x32, 0x82); + } + } + else if (UnlockedPresents(object, work->room) > 0) { + mess = MAKE_MESSID(0x32, 0x01); + } + else { + mess = MAKE_MESSID(0x32, 0x81); + } + PresentWinMesSet(work->presentDescWindow, mess); + PresentWinInsertMesSet(work->presentDescWindow, roomMessTbl[work->room], 0); + break; + case ROOM_TROPHY: + if (PresentUnlocked(object, ROOM_TROPHY, 0)) { + mess = MAKE_MESSID(0x32, 0x41); + } + else { + mess = MAKE_MESSID(0x32, 0x84); + } + PresentWinMesSet(work->presentDescWindow, mess); + break; + case ROOM_MG: + if (UnlockedPresents(object, ROOM_MG) > 0) { + mess = MAKE_MESSID(0x32, 0x83); + } + else { + mess = MAKE_MESSID(0x32, 0x81); + } + PresentWinMesSet(work->presentDescWindow, mess); + break; + default: + break; + } + if (work->constellationSelF) { + cursorPos.x = 0.0f; + cursorPos.y = 600.0f; + cursorPos.z = -500.0f; + } + else { + cursorPos.x = 0.0f; + cursorPos.y = 210.0f; + cursorPos.z = -500.0f; + } + Hu3D3Dto2D(&cursorPos, 1, &cursorPos); + cursorPos.y -= 15.0f; + cursorPos.x -= 20.0f; + espPosSet(work->cursor, cursorPos.x, cursorPos.y); + if (!work->cursorVisibleF) { + PresentFadeSprite(work->cursor, TRUE, 5); + work->cursorVisibleF = TRUE; + } + object->unk10 = 3; + } + break; + case 3: + if (!work->presentDescWindow->state) { + if (PresentPadCheck(PAD_BUTTON_B) && !work->constellationSelF) { + PresentFadeSprite(work->cursor, FALSE, 5); + work->cursorVisibleF = FALSE; + PresentWinAnimOut(work->presentDescWindow); + PresentWinAnimOut(work->btnLegendWindow); + HuAudFXPlay(3); + object->unk10 = 4; + } + else if (PresentPadCheck(PAD_BUTTON_A) && !work->constellationSelF) { + if (work->room != ROOM_TROPHY) { + PresentFadeSprite(work->cursor, FALSE, 5); + work->cursorVisibleF = FALSE; + PresentWinAnimOut(work->presentDescWindow); + PresentWinAnimOut(work->btnLegendWindow); + HuAudFXPlay(2); + PresentExecModeSet(object, PRESENT_MODE_SELECT_PRESENT); } - } else if (fn_1_2BCC(object, var_r31->unk_234) > 0) { - var_r29 = 0x320001; - } else { - var_r29 = 0x320081; } - fn_1_40B0(var_r31->unk_228, var_r29); - fn_1_4104(var_r31->unk_228, lbl_1_rodata_9F8[var_r31->unk_234], 0); - break; - case 5: - if (fn_1_2B84(object, 5, 0)) { - var_r29 = 0x320041; - } else { - var_r29 = 0x320084; + else if (PresentPadDStkRepCheck(PAD_BUTTON_UP) && !work->constellationSelF) { + if (work->room != ROOM_TROPHY && work->room != ROOM_MG) { + work->constellationSelF = TRUE; + PresentFadeSprite(work->cursor, FALSE, 5); + work->cursorVisibleF = FALSE; + PresentWinAnimOut(work->presentDescWindow); + PresentWinAnimOut(work->btnLegendWindow); + HuAudFXPlay(0); + object->unk10 = 1; + } } - fn_1_40B0(var_r31->unk_228, var_r29); - break; - case 9: - if (fn_1_2BCC(object, 9) > 0) { - var_r29 = 0x320083; - } else { - var_r29 = 0x320081; - } - fn_1_40B0(var_r31->unk_228, var_r29); - break; - default: - break; - } - if (var_r31->unk_08) { - sp8.x = 0.0f; - sp8.y = 600.0f; - sp8.z = -500.0f; - } else { - sp8.x = 0.0f; - sp8.y = 210.0f; - sp8.z = -500.0f; - } - Hu3D3Dto2D(&sp8, 1, &sp8); - sp8.y -= 15.0f; - sp8.x -= 20.0f; - espPosSet(var_r31->sprite, sp8.x, sp8.y); - if (!var_r31->unk_00) { - fn_1_144(var_r31->sprite, 1, 5); - var_r31->unk_00 = 1; - } - object->unk10 = 3; - } - break; - case 3: - if (!var_r31->unk_228->unk_20) { - if (fn_1_550(512) && !var_r31->unk_08) { - fn_1_144(var_r31->sprite, 0, 5); - var_r31->unk_00 = 0; - fn_1_4098(var_r31->unk_228); - fn_1_4098(var_r31->unk_22C); - HuAudFXPlay(3); - object->unk10 = 4; - } else if (fn_1_550(256) && !var_r31->unk_08) { - if (var_r31->unk_234 != 5) { - fn_1_144(var_r31->sprite, 0, 5); - var_r31->unk_00 = 0; - fn_1_4098(var_r31->unk_228); - fn_1_4098(var_r31->unk_22C); - HuAudFXPlay(2); - fn_1_180C(object, 2); - } - } else if (fn_1_584(8) && !var_r31->unk_08) { - if ((var_r31->unk_234 != 5) && (var_r31->unk_234 != 9)) { - var_r31->unk_08 = 1; - fn_1_144(var_r31->sprite, 0, 5); - var_r31->unk_00 = 0; - fn_1_4098(var_r31->unk_228); - fn_1_4098(var_r31->unk_22C); + else if (PresentPadDStkRepCheck(PAD_BUTTON_DOWN) && work->constellationSelF) { + work->constellationSelF = FALSE; + PresentFadeSprite(work->cursor, FALSE, 5); + work->cursorVisibleF = FALSE; + PresentWinAnimOut(work->presentDescWindow); + PresentWinAnimOut(work->btnLegendWindow); HuAudFXPlay(0); object->unk10 = 1; } - } else if (fn_1_584(4) && var_r31->unk_08) { - var_r31->unk_08 = 0; - fn_1_144(var_r31->sprite, 0, 5); - var_r31->unk_00 = 0; - fn_1_4098(var_r31->unk_228); - fn_1_4098(var_r31->unk_22C); - HuAudFXPlay(0); - object->unk10 = 1; - } else if (fn_1_584(1)) { - fn_1_1FA8(object, 1); - HuAudFXPlay(0); - object->unk10 = 2; - } else if (fn_1_584(2)) { - fn_1_1FA8(object, 2); - HuAudFXPlay(0); - object->unk10 = 2; - } - } - break; - case 4: - fn_1_180C(object, 0); - break; - } - fn_1_2774(object); -} - -void fn_1_1FA8(omObjData *object, s32 arg1) -{ - UnkPresentStruct2 *var_r31; - s32 var_r30; - s32 var_r29; - s32 var_r28; - float var_f30; - float var_f31; - float var_f29; - - var_r31 = object->data; - - for (var_r30 = 0, var_f31 = 0.0f;; var_r30++) { - var_f31 += 36.0f; - if (arg1 == 1) { - var_r29 = -1; - } else { - var_r29 = 1; - } - var_r31->unk_234 = var_r31->unk_234 + var_r29; - if (var_r31->unk_234 < 0) { - var_r31->unk_234 = 9; - } else if (var_r31->unk_234 >= 10) { - var_r31->unk_234 = 0; - } - if (!((var_r31->unk_08) && ((var_r31->unk_234 == 5) || (var_r31->unk_234 == 9)))) { - break; - } - } - if (arg1 == 1) { - var_f30 = -var_f31; - } else { - var_f30 = var_f31; - } - var_f29 = var_r31->unk_23C + var_f30; - if (!var_r30) { - var_r28 = 30; - } else { - var_r28 = 45; - } - fn_1_2708(object, var_f29, var_r28); -} - -void fn_1_20E8(omObjData *object) -{ - Vec sp8; - UnkPresentStruct2 *var_r31; - s32 var_r29; - s32 var_r28; - s32 var_r27; - s32 var_r25; - float var_f31; - float var_f30; - - var_r31 = object->data; - var_r29 = var_r31->unk_238; - var_r27 = var_r31->unk_234; - switch (object->unk10) { - case 0: - fn_1_920(lbl_1_bss_8, 0.0f, 220.0f, -120.0f, 30); - fn_1_9A4(lbl_1_bss_8, 0.0f, 0.0f, -600.0f, 30); - var_r31->unk_04 = fn_1_2BCC(object, var_r27) > 0; - var_r31->unk_00 = 0; - var_r31->unk_238 = 0; - if (var_r31->unk_04) { - var_r25 = fn_1_3394(var_r31->unk_234); - for (var_r28 = 0; var_r28 < var_r25; var_r28++) { - if (fn_1_2B84(object, var_r27, var_r28)) { - var_r31->unk_238 = var_r28; - break; + else if (PresentPadDStkRepCheck(PAD_BUTTON_LEFT)) { + ChangeRoom(object, ROOM_CHANGE_LEFT); + HuAudFXPlay(0); + object->unk10 = 2; + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_RIGHT)) { + ChangeRoom(object, ROOM_CHANGE_RIGHT); + HuAudFXPlay(0); + object->unk10 = 2; } } - } - object->unk10 = 1; - case 1: - if (fn_1_B6C(lbl_1_bss_8)) { break; - } - fn_1_4080(var_r31->unk_228); - fn_1_4080(var_r31->unk_22C); - fn_1_40B0(var_r31->unk_22C, 0x32007F); + case 4: + PresentExecModeSet(object, PRESENT_MODE_NONE); + break; + } + RotateCamera(object); +} - if (var_r31->unk_04) { - fn_1_40B0(var_r31->unk_228, lbl_1_rodata_2B8[var_r27].unk_04[var_r29].unk_0C); - } else { - fn_1_40B0(var_r31->unk_228, 0x320003); +static void ChangeRoom(omObjData *object, s32 direction) +{ + float rotAbs; + float rot; + float rotTarget; + + s32 special; + s32 change; + s32 duration; + + PresentWork *work = object->data; + + for (special = 0, rotAbs = 0.0f;; special++) { + rotAbs += 36.0f; + if (direction == ROOM_CHANGE_LEFT) { + change = -1; } - var_r31->unk_258 = 0.0f; - var_r31->unk_25C = 5.0f / 30.0f; - if (var_r31->unk_04) { - fn_1_268C(var_r31->unk_10[lbl_1_rodata_2B8[var_r27].unk_04[var_r29].unk_00], &sp8.x, &sp8.y, &sp8.z); - Hu3D3Dto2D(&sp8, 1, &sp8); - sp8.y -= 15.0f; - sp8.x -= 20.0f; - if (!var_r31->unk_00) { - fn_1_144(var_r31->sprite, 1, 5); - var_r31->unk_00 = 1; - var_r31->unk_260 = sp8.x; - var_r31->unk_264 = sp8.y; - } else { - var_r31->unk_260 = var_r31->unk_268; - var_r31->unk_264 = var_r31->unk_26C; + else { + change = 1; + } + work->room += change; + if (work->room < ROOM_MARIO) { + work->room = ROOM_MAX; + } + else if (work->room >= ROOM_MAX + 1) { + work->room = ROOM_MARIO; + } + if (!work->constellationSelF || (work->room != ROOM_TROPHY && work->room != ROOM_MG)) { + break; + } + } + if (direction == ROOM_CHANGE_LEFT) { + rot = -rotAbs; + } + else { + rot = rotAbs; + } + rotTarget = work->rot + rot; + if (special == 0) { + duration = 30; + } + else { + duration = 45; + } + SetCameraRot(object, rotTarget, duration); +} + +static void ExecSelectPresent(omObjData *object) +{ + float cursorX; + float cursorY; + + PresentWork *work = object->data; + s32 idxInRoom = work->idxInRoom; + s32 room = work->room; + switch (object->unk10) { + case 0: + PresentCameraTargetSet(presentCamera, 0.0f, 220.0f, -120.0f, 30); + PresentCameraFocusSet(presentCamera, 0.0f, 0.0f, -600.0f, 30); + work->roomNotEmptyF = UnlockedPresents(object, room) > 0; + work->cursorVisibleF = FALSE; + work->idxInRoom = 0; + if (work->roomNotEmptyF) { + s32 totalPresents = TotalPresentsInRoom(work->room); + s32 i; + // set the initial present to the highest unlocked one + for (i = 0; i < totalPresents; i++) { + if (PresentUnlocked(object, room, i)) { + work->idxInRoom = i; + break; + } + } } - var_r31->unk_268 = sp8.x; - var_r31->unk_26C = sp8.y; - object->unk10 = 2; - } else { - object->unk10 = 3; - break; - } - case 2: - var_f31 = var_r31->unk_260 + (var_r31->unk_258 * (var_r31->unk_268 - var_r31->unk_260)); - var_f30 = var_r31->unk_264 + (var_r31->unk_258 * (var_r31->unk_26C - var_r31->unk_264)); - espPosSet(var_r31->sprite, var_f31, var_f30); - if ((var_r31->unk_258 = var_r31->unk_258 + var_r31->unk_25C) < 1.0f) { - break; - } - espPosSet(var_r31->sprite, var_r31->unk_268, var_r31->unk_26C); - object->unk10 = 3; - case 3: - if (fn_1_550(512)) { - fn_1_4098(var_r31->unk_228); - fn_1_4098(var_r31->unk_22C); - HuAudFXPlay(3); - object->unk10 = 4; - } else if (var_r31->unk_04) { - if (fn_1_584(1) && fn_1_5B8(8)) { - var_r29 = fn_1_2C5C(object, 5); - } else if (fn_1_584(1) && fn_1_5B8(4)) { - var_r29 = fn_1_2C5C(object, 9); - } else if (fn_1_584(2) && fn_1_5B8(8)) { - var_r29 = fn_1_2C5C(object, 6); - } else if (fn_1_584(2) && fn_1_5B8(4)) { - var_r29 = fn_1_2C5C(object, 10); - } else if (fn_1_584(1)) { - var_r29 = fn_1_2C5C(object, 1); - } else if (fn_1_584(2)) { - var_r29 = fn_1_2C5C(object, 2); - } else if (fn_1_584(8)) { - var_r29 = fn_1_2C5C(object, 4); - } else if (fn_1_584(4)) { - var_r29 = fn_1_2C5C(object, 8); - } - } else { - break; - } - if (var_r29 == -1) { - var_r29 = var_r31->unk_238; - } - if (var_r29 != var_r31->unk_238) { - var_r31->unk_238 = var_r29; object->unk10 = 1; - HuAudFXPlay(0); - } - break; - case 4: - if (var_r31->unk_00) { - fn_1_144(var_r31->sprite, 0, 5); - } - fn_1_180C(object, 1); - break; - default: - break; + case 1: + if (PresentCameraDoneCheck(presentCamera)) { + break; + } + PresentWinAnimIn(work->presentDescWindow); + PresentWinAnimIn(work->btnLegendWindow); + PresentWinMesSet(work->btnLegendWindow, MAKE_MESSID(0x32, 0x7F)); + + if (work->roomNotEmptyF) { + PresentWinMesSet(work->presentDescWindow, roomTbl[room].presentData[idxInRoom].descMess); + } + else { + PresentWinMesSet(work->presentDescWindow, MAKE_MESSID(0x32, 0x03)); + } + work->cursorTime = 0.0f; + work->cursorSpeed = 1.0f / 6.0f; + if (work->roomNotEmptyF) { + Vec cursorPos; + GetCursorPos(work->object[roomTbl[room].presentData[idxInRoom].cursorPosIdx], &cursorPos.x, &cursorPos.y, &cursorPos.z); + Hu3D3Dto2D(&cursorPos, 1, &cursorPos); + cursorPos.y -= 15.0f; + cursorPos.x -= 20.0f; + if (!work->cursorVisibleF) { + PresentFadeSprite(work->cursor, TRUE, 5); + work->cursorVisibleF = TRUE; + work->cursorPos.x = cursorPos.x; + work->cursorPos.y = cursorPos.y; + } + else { + work->cursorPos.x = work->newCursorPos.x; + work->cursorPos.y = work->newCursorPos.y; + } + work->newCursorPos.x = cursorPos.x; + work->newCursorPos.y = cursorPos.y; + object->unk10 = 2; + } + else { + object->unk10 = 3; + break; + } + case 2: + cursorX = work->cursorPos.x + (work->cursorTime * (work->newCursorPos.x - work->cursorPos.x)); + cursorY = work->cursorPos.y + (work->cursorTime * (work->newCursorPos.y - work->cursorPos.y)); + espPosSet(work->cursor, cursorX, cursorY); + if ((work->cursorTime += work->cursorSpeed) < 1.0f) { + break; + } + espPosSet(work->cursor, work->newCursorPos.x, work->newCursorPos.y); + object->unk10 = 3; + case 3: + if (PresentPadCheck(PAD_BUTTON_B)) { + PresentWinAnimOut(work->presentDescWindow); + PresentWinAnimOut(work->btnLegendWindow); + HuAudFXPlay(3); + object->unk10 = 4; + } + else if (work->roomNotEmptyF) { + if (PresentPadDStkRepCheck(PAD_BUTTON_LEFT) && PresentPadDStkCheck(PAD_BUTTON_UP)) { + idxInRoom = MoveCursor(object, 5); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_LEFT) && PresentPadDStkCheck(PAD_BUTTON_DOWN)) { + idxInRoom = MoveCursor(object, 9); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_RIGHT) && PresentPadDStkCheck(PAD_BUTTON_UP)) { + idxInRoom = MoveCursor(object, 6); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_RIGHT) && PresentPadDStkCheck(PAD_BUTTON_DOWN)) { + idxInRoom = MoveCursor(object, 10); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_LEFT)) { + idxInRoom = MoveCursor(object, 1); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_RIGHT)) { + idxInRoom = MoveCursor(object, 2); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_UP)) { + idxInRoom = MoveCursor(object, 4); + } + else if (PresentPadDStkRepCheck(PAD_BUTTON_DOWN)) { + idxInRoom = MoveCursor(object, 8); + } + } + else { + break; + } + if (idxInRoom == -1) { + idxInRoom = work->idxInRoom; + } + if (idxInRoom != work->idxInRoom) { + work->idxInRoom = idxInRoom; + object->unk10 = 1; + HuAudFXPlay(0); + } + break; + case 4: + if (work->cursorVisibleF) { + PresentFadeSprite(work->cursor, FALSE, 5); + } + PresentExecModeSet(object, PRESENT_MODE_SELECT_ROOM); + break; + default: + break; } } -void fn_1_268C(omObjData *object, float *arg1, float *arg2, float *arg3) +static void GetCursorPos(omObjData *object, float *x, float *y, float *z) { Mtx sp8; Hu3DModelObjMtxGet(object->model[0], "cursor", sp8); - *arg1 = sp8[0][3]; - *arg2 = sp8[1][3]; - *arg3 = sp8[2][3]; + *x = sp8[0][3]; + *y = sp8[1][3]; + *z = sp8[2][3]; } -void fn_1_2708(omObjData *arg0, float arg8, s32 arg1) +static void SetCameraRot(omObjData *object, float rot, s32 duration) { - UnkPresentStruct2 *var_r31; + PresentWork *work = object->data; - var_r31 = arg0->data; - var_r31->unk_244 = arg8; - var_r31->unk_240 = var_r31->unk_23C; - var_r31->unk_248 = 0.0f; - var_r31->unk_250 = 1.0f / arg1; + work->rotTarget = rot; + work->rotPrev = work->rot; + work->timeRot = 0.0f; + work->rotSpeed = 1.0f / duration; } -void fn_1_2774(omObjData *object) +static void RotateCamera(omObjData *object) { - UnkPresentStruct2 *var_r31; - float var_f31; - s32 var_r30; + s32 i; + PresentWork *work = object->data; - var_r31 = object->data; + if (work->timeRot < 1.0f) { + float weight = sind(90.0f * work->timeRot); + weight *= weight; + work->rot = work->rotPrev + (weight * (work->rotTarget - work->rotPrev)); - if (var_r31->unk_248 < 1.0f) { - var_f31 = sin(90.0f * var_r31->unk_248 * M_PI / 180.0f); - var_f31 *= var_f31; - var_r31->unk_23C = var_r31->unk_240 + (var_f31 * (var_r31->unk_244 - var_r31->unk_240)); - - if ((var_r31->unk_248 = var_r31->unk_248 + var_r31->unk_250) >= 1.0f) { - var_r31->unk_23C = var_r31->unk_244; + if ((work->timeRot += work->rotSpeed) >= 1.0f) { + work->rot = work->rotTarget; } } - var_r31->unk_23C = fmod(var_r31->unk_23C, 360.0); + work->rot = fmod(work->rot, 360.0); - if (var_r31->unk_23C < 0.0f) { - var_r31->unk_23C += 360.0f; + if (work->rot < 0.0f) { + work->rot += 360.0f; } - for (var_r30 = 0; var_r30 < 134; var_r30++) { - omSetRot(var_r31->unk_10[var_r30], 0.0f, var_r31->unk_23C, 0.0f); + for (i = 0; i < PRESENT_MDL_MAX; i++) { + omSetRot(work->object[i], 0.0f, work->rot, 0.0f); } } -s32 fn_1_28F0(omObjData *object) +static BOOL CameraRotationDoneCheck(omObjData *object) { - UnkPresentStruct2 *var_r31; - - var_r31 = object->data; - return var_r31->unk_248 < 1.0f; + PresentWork *work = object->data; + return work->timeRot < 1.0f; } -s32 lbl_1_data_84[] = { 0, 1, 2, 3, 4, 6, 7, 8 }; +s32 roomIdxTbl2[CHARACTERS_MAX] = { + ROOM_MARIO, + ROOM_LUIGI, + ROOM_PEACH, + ROOM_YOSHI, + ROOM_WARIO, + ROOM_DK, + ROOM_DAISY, + ROOM_WALUIGI, +}; -void fn_1_2924(omObjData *object) +static void ShowHidePresents(omObjData *object) { - UnkPresentStruct2 *var_r31; - s32 var_r30; - s32 var_r27; - s32 var_r29; + PresentWork *work = object->data; + s32 character; + s32 i; - var_r31 = object->data; - Hu3DModelAttrReset(var_r31->unk_10[0]->model[0], 1); + Hu3DModelAttrReset(work->object[0]->model[0], HU3D_ATTR_DISPOFF); - for (var_r29 = 0; var_r29 < 8; var_r29++) { - if (fn_1_2BCC(object, lbl_1_data_84[var_r29]) > 0) { - Hu3DModelAttrReset(var_r31->unk_10[var_r29 + 109]->model[0], 1); + for (character = 0; character < CHARACTERS_MAX; character++) { + s32 j; + if (UnlockedPresents(object, roomIdxTbl2[character]) > 0) { + Hu3DModelAttrReset(work->object[character + 109]->model[0], HU3D_ATTR_DISPOFF); } - for (var_r27 = 0, var_r30 = 0; var_r30 < 6; var_r30++) { - if (fn_1_2B84(object, lbl_1_data_84[var_r29], var_r30)) { - Hu3DModelAttrReset(var_r31->unk_10[var_r29 * 6 * 2 + 2 + var_r30]->model[0], 1); - Hu3DModelAttrReset(var_r31->unk_10[var_r29 * 6 * 2 + 8 + var_r30]->model[0], 1); - var_r27++; + for (j = 0, i = 0; i < PRESENT_COUNT_CHAR_ROOM; i++) { + if (PresentUnlocked(object, roomIdxTbl2[character], i)) { + Hu3DModelAttrReset(work->object[character * PRESENT_COUNT_CHAR_ROOM * 2 + 2 + i]->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->object[character * PRESENT_COUNT_CHAR_ROOM * 2 + 8 + i]->model[0], HU3D_ATTR_DISPOFF); + j++; } } - if (var_r27 >= 6) { - Hu3DModelAttrReset(var_r31->unk_10[var_r29 + 118]->model[0], 1); + if (j >= 6) { + Hu3DModelAttrReset(work->object[character + 118]->model[0], HU3D_ATTR_DISPOFF); } } - if (fn_1_2BCC(object, 9) > 0) { - Hu3DModelAttrReset(var_r31->unk_10[117]->model[0], 1); + if (UnlockedPresents(object, ROOM_MG) > 0) { + Hu3DModelAttrReset(work->object[117]->model[0], HU3D_ATTR_DISPOFF); } - for (var_r30 = 0; var_r30 < 11; var_r30++) { - if (fn_1_2B84(object, 9, var_r30)) { - Hu3DModelAttrReset(var_r31->unk_10[var_r30 + 98]->model[0], 1); + for (i = 0; i < PRESENT_COUNT_MG_ROOM; i++) { + if (PresentUnlocked(object, ROOM_MG, i)) { + Hu3DModelAttrReset(work->object[i + 98]->model[0], HU3D_ATTR_DISPOFF); } } - if (fn_1_2B84(object, 5, 0)) { - Hu3DModelAttrReset(var_r31->unk_10[1]->model[0], 1); + if (PresentUnlocked(object, ROOM_TROPHY, 0)) { + Hu3DModelAttrReset(work->object[1]->model[0], HU3D_ATTR_DISPOFF); } - for (var_r30 = 0; var_r30 < 8; var_r30++) { - if (fn_1_2B84(object, lbl_1_data_84[var_r30], 5)) { - Hu3DModelAttrReset(var_r31->unk_10[var_r30 + 126]->model[0], 1); + for (i = 0; i < CHARACTERS_MAX; i++) { + if (PresentUnlocked(object, roomIdxTbl2[i], PRESENT_CONSTELLATION)) { + Hu3DModelAttrReset(work->object[i + 126]->model[0], HU3D_ATTR_DISPOFF); } } } -static const s32 lbl_1_rodata_A74[] = { 0, 6, 12, 18, 24, 59, 30, 36, 42, 48 }; +static const s32 roomPresentOffsetTbl[] = { 0, 6, 12, 18, 24, 59, 30, 36, 42, 48 }; -s32 fn_1_2B84(omObjData *arg0, s32 arg1, s32 arg2) +static BOOL PresentUnlocked(omObjData *object, s32 room, s32 present) { - UnkPresentStruct2 *var_r31; - - var_r31 = arg0->data; - return var_r31->unk_270[arg2 + lbl_1_rodata_A74[arg1]] != 0; + PresentWork *work = object->data; + return work->presentUnlockedF[roomPresentOffsetTbl[room] + present] != 0; } -s32 fn_1_2BCC(omObjData *object, s32 arg1) +static s32 UnlockedPresents(omObjData *object, s32 room) { - s32 var_r31; - s32 var_r30; - UnkPresentStruct2 *var_r29; - s32 var_r28; + s32 i; + s32 unlockedPresents; + s32 presentCount = TotalPresentsInRoom(room); - var_r28 = fn_1_3394(arg1); - - for (var_r30 = 0, var_r31 = 0; var_r31 < var_r28; var_r31++) { - if (fn_1_2B84(object, arg1, var_r31)) { - var_r30++; + for (unlockedPresents = 0, i = 0; i < presentCount; i++) { + if (PresentUnlocked(object, room, i)) { + unlockedPresents++; } } - return var_r30; + return unlockedPresents; } -s32 fn_1_2C5C(omObjData *object, s32 arg1) +/* Returns the index of the newly selected present inside the room */ +static s32 MoveCursor(omObjData *object, s32 arg1) { - UnkPresentStruct7 spA4[10]; - Vec sp38; - Vec sp2C; - UnkPresentStruct7 sp24; - float var_f31; - float var_f30; - float var_f29; - UnkPresentStruct2 *var_r31; - s32 var_r30; - s32 var_r28; - s32 var_r26; + PresentDistanceStruct availablePresents[10]; + Vec cursorPos; + + float angle; + + PresentWork *work = object->data; + s32 present; + s32 i; + s32 j; s32 var_r23; - s32 var_r22; - omObjData *var_r21; - omObjData *var_r19; - s32 var_r18; - s32 var_r17; + s32 totalPresents = TotalPresentsInRoom(work->room); + s32 unlockedPresents = UnlockedPresents(object, work->room); - var_r31 = object->data; - - var_r22 = fn_1_3394(var_r31->unk_234); - - var_r18 = fn_1_2BCC(object, var_r31->unk_234); - if (var_r18 == 1) { - return var_r31->unk_238; + if (unlockedPresents == 1) { + return work->idxInRoom; } - fn_1_268C(var_r31->unk_10[lbl_1_rodata_2B8[var_r31->unk_234].unk_04[var_r31->unk_238].unk_00], &sp38.x, &sp38.y, &sp38.z); - Hu3D3Dto2D(&sp38, 1, &sp38); - for (var_r28 = 0, var_r26 = 0; !var_r28 && (var_r26 < 1); var_r26++) { - for (var_r28 = 0, var_r30 = 0; var_r30 < var_r22; var_r30++) { - if (var_r30 == var_r31->unk_238) { + GetCursorPos(work->object[roomTbl[work->room].presentData[work->idxInRoom].cursorPosIdx], &cursorPos.x, &cursorPos.y, &cursorPos.z); + Hu3D3Dto2D(&cursorPos, 1, &cursorPos); + for (i = 0, j = 0; i == 0 && j < 1; j++) { + for (i = 0, present = 0; present < totalPresents; present++) { + Vec cursorPosNew; + float dx, dy; + if (present == work->idxInRoom) { continue; } - if (!fn_1_2B84(object, var_r31->unk_234, var_r30)) { + if (!PresentUnlocked(object, work->room, present)) { continue; } - fn_1_268C(var_r31->unk_10[lbl_1_rodata_2B8[var_r31->unk_234].unk_04[var_r30].unk_00], &sp2C.x, &sp2C.y, &sp2C.z); - Hu3D3Dto2D(&sp2C, 1, &sp2C); - var_f30 = sp38.x - sp2C.x; - var_f29 = sp38.y - sp2C.y; - var_f31 = fmod(atan2d(var_f30, var_f29), 360.0); - if (var_f31 < 0.0f) { - var_f31 += 360.0f; + GetCursorPos(work->object[roomTbl[work->room].presentData[present].cursorPosIdx], &cursorPosNew.x, &cursorPosNew.y, &cursorPosNew.z); + Hu3D3Dto2D(&cursorPosNew, 1, &cursorPosNew); + dx = cursorPos.x - cursorPosNew.x; + dy = cursorPos.y - cursorPosNew.y; + angle = fmod(atan2d(dx, dy), 360.0); + if (angle < 0.0f) { + angle += 360.0f; } - if ((arg1 == 1 && var_f31 >= 45.0f && var_f31 < 135.0f) || (arg1 == 2 && var_f31 >= 225.0f && var_f31 < 315.0f) - || (arg1 == 8 && var_f31 >= 135.0f && var_f31 < 225.0f) - || (arg1 == 4 && (var_f31 >= 0.0f && var_f31 < 45.0f || var_f31 >= 315.0f && var_f31 < 360.0f)) - || (arg1 == 5 && var_f31 >= 0.0f && var_f31 < 90.0f) || (arg1 == 9 && var_f31 >= 90.0f && var_f31 < 180.0f) - || (arg1 == 6 && var_f31 >= 270.0f && var_f31 < 360.0f) || (arg1 == 10 && var_f31 >= 180.0f && var_f31 < 270.0f)) { - spA4[var_r28].unk_00 = var_r30; - spA4[var_r28].unk_04 = sqrtf(var_f30 * var_f30 + var_f29 * var_f29); - var_r28++; + if ((arg1 == 1 && angle >= 45.0f && angle < 135.0f) || (arg1 == 2 && angle >= 225.0f && angle < 315.0f) + || (arg1 == 8 && angle >= 135.0f && angle < 225.0f) + || (arg1 == 4 && (angle >= 0.0f && angle < 45.0f || angle >= 315.0f && angle < 360.0f)) + || (arg1 == 5 && angle >= 0.0f && angle < 90.0f) || (arg1 == 9 && angle >= 90.0f && angle < 180.0f) + || (arg1 == 6 && angle >= 270.0f && angle < 360.0f) || (arg1 == 10 && angle >= 180.0f && angle < 270.0f)) { + availablePresents[i].present = present; + availablePresents[i].distance = sqrtf(dx * dx + dy * dy); + i++; } } - if (var_r28) { + if (i != 0) { continue; } switch (arg1) { - case 0: - break; - case 1: - L_00003218: - arg1 = 2; - break; - case 2: - L_00003220: - arg1 = 1; - break; - case 3: - break; - case 4: - L_00003228: - arg1 = 8; - break; - case 7: - break; - case 8: - L_00003230: - arg1 = 4; - break; - case 5: - L_00003238: - arg1 = 10; - break; - case 9: - L_00003240: - arg1 = 6; - break; - case 6: - L_00003248: - arg1 = 9; - break; - case 10: - L_00003250: - arg1 = 5; - break; - default: - break; + case 0: + break; + case 1: + arg1 = 2; + break; + case 2: + arg1 = 1; + break; + case 3: + break; + case 4: + arg1 = 8; + break; + case 7: + break; + case 8: + arg1 = 4; + break; + case 5: + arg1 = 10; + break; + case 9: + arg1 = 6; + break; + case 6: + arg1 = 9; + break; + case 10: + arg1 = 5; + break; + default: + break; } - // L_00003254: } - if (!var_r28) { - return var_r31->unk_238; + if (i == 0) { + return work->idxInRoom; } do { - for (var_r23 = 0, var_r30 = 0; var_r30 < (var_r28 - 1); var_r30++) { - if (spA4[var_r30].unk_04 > spA4[var_r30 + 1].unk_04) { - sp24 = spA4[var_r30 + 1]; - spA4[var_r30 + 1] = spA4[var_r30]; - spA4[var_r30] = sp24; + for (var_r23 = 0, present = 0; present < (i - 1); present++) { + if (availablePresents[present].distance > availablePresents[present + 1].distance) { + PresentDistanceStruct next = availablePresents[present + 1]; + availablePresents[present + 1] = availablePresents[present]; + availablePresents[present] = next; var_r23 = 1; } } } while (var_r23); - return spA4[(var_r26 <= 1) ? 0 : var_r28 - 1].unk_00; + return availablePresents[(j <= 1) ? 0 : i - 1].present; } -static const s32 lbl_1_rodata_AC8[] = { 6, 6, 6, 6, 6, 1, 6, 6, 6, 11 }; +static const s32 totalPresentCntTbl[10] = { 6, 6, 6, 6, 6, 1, 6, 6, 6, 11 }; -s32 fn_1_3394(s32 arg0) +static s32 TotalPresentsInRoom(s32 room) { - return lbl_1_rodata_AC8[arg0]; + return totalPresentCntTbl[room]; } -static const s32 lbl_1_rodata_AF0[] = { 2, 14, 26, 38, 50, 0, 62, 74, 86, 0 }; -static const s32 lbl_1_rodata_B18[] = { 8, 20, 32, 44, 56, 0, 68, 80, 92, 0 }; -static const s32 lbl_1_rodata_B40[] = { 126, 127, 128, 129, 130, 0, 131, 132, 133, 0 }; -static const s32 lbl_1_rodata_B68[] = { 118, 119, 120, 121, 122, 0, 123, 124, 125, 0 }; +static const s32 presentItemIdxTbl[10] = { 2, 14, 26, 38, 50, 0, 62, 74, 86, 0 }; +static const s32 lbl_1_rodata_B18[10] = { 8, 20, 32, 44, 56, 0, 68, 80, 92, 0 }; +static const s32 constellationIdxTbl[10] = { 126, 127, 128, 129, 130, 0, 131, 132, 133, 0 }; +static const s32 roofIdxTbl[10] = { 118, 119, 120, 121, 122, 0, 123, 124, 125, 0 }; -void fn_1_33AC(omObjData *object) +static void ExecPresentGet(omObjData *object) { - f32 var_f29; - f32 var_f30; - f32 var_f31; - UnkPresentStruct2 *var_r31; - UnkPresentStruct2 *var_r30; - UnkPresentStruct2 *var_r28; - s32 var_r27; + f32 weight; + f32 rot; + + PresentWork *work = object->data; - var_r31 = object->data; switch (object->unk10) { - case 0: - var_f29 = 36.0f * var_r31->unk_234; - fn_1_2708(object, var_f29, 1); - fn_1_2774(object); - Hu3DModelAttrSet(var_r31->unk_10[var_r31->unk_238 + lbl_1_rodata_B18[var_r31->unk_234]]->model[0], 1); - Hu3DModelAttrSet(var_r31->unk_10[lbl_1_rodata_B68[var_r31->unk_234]]->model[0], 1); - Hu3DModelAttrSet(var_r31->unk_10[lbl_1_rodata_B40[var_r31->unk_234]]->model[0], 1); - var_r31->unk_24C = 0.0f; - var_r31->unk_254 = 1.0f / 360.0f; - object->unk10 = 1; - case 1: - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 120); - object->unk10 = 2; - case 2: - var_f31 = sind(90.0f * var_r31->unk_24C); - var_f31 *= var_f31; - fn_1_920(lbl_1_bss_8, 0.0f, 820.0f - (600.0f * var_f31), -120.0f, 1); - fn_1_9A4(lbl_1_bss_8, 0.0f, 680.0f - (680.0f * var_f31), -600.0f, 1); - omSetTra(var_r31->unk_10[var_r31->unk_238 + lbl_1_rodata_AF0[var_r31->unk_234]], 0.0f, 840.0f - (840.0f * var_f31), 0.0f); - if ((var_r31->unk_24C = var_r31->unk_24C + var_r31->unk_254) < 1.0f) { - return; - } - if (fn_1_393C(var_r31->unk_234, var_r31->unk_238)) { - fn_1_334(var_r31->unk_10[var_r31->unk_238 + lbl_1_rodata_B18[var_r31->unk_234]]->model[0], 1, 0.4f, 30); - } - object->unk10 = 3; - case 3: - fn_1_4080(var_r31->unk_228); - fn_1_4104(var_r31->unk_228, lbl_1_rodata_2B8[var_r31->unk_234].unk_04[var_r31->unk_238].unk08, 0); - fn_1_40B0(var_r31->unk_228, 0x320004); - fn_1_419C(var_r31->unk_228); - object->unk10 = 4; - case 4: - if (var_r31->unk_228->unk_20) { + case 0: + rot = 36.0f * work->room; + SetCameraRot(object, rot, 1); + RotateCamera(object); + Hu3DModelAttrSet(work->object[work->idxInRoom + lbl_1_rodata_B18[work->room]]->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(work->object[roofIdxTbl[work->room]]->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(work->object[constellationIdxTbl[work->room]]->model[0], HU3D_ATTR_DISPOFF); + work->presentFallingTime = 0.0f; + work->presentFallingSpeed = 1.0f / 360.0f; + object->unk10 = 1; + case 1: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 120); + object->unk10 = 2; + case 2: + weight = sind(90.0f * work->presentFallingTime); + weight *= weight; + PresentCameraTargetSet(presentCamera, 0.0f, 820.0f - (600.0f * weight), -120.0f, 1); + PresentCameraFocusSet(presentCamera, 0.0f, 680.0f - (680.0f * weight), -600.0f, 1); + omSetTra(work->object[work->idxInRoom + presentItemIdxTbl[work->room]], 0.0f, 840.0f - (840.0f * weight), 0.0f); + if ((work->presentFallingTime += work->presentFallingSpeed) < 1.0f) { + return; + } + if (fn_1_393C(work->room, work->idxInRoom)) { + FadeSpriteWithMultiplier(work->object[work->idxInRoom + lbl_1_rodata_B18[work->room]]->model[0], 1, 0.4f, 30); + } + object->unk10 = 3; + case 3: + PresentWinAnimIn(work->presentDescWindow); + PresentWinInsertMesSet(work->presentDescWindow, roomTbl[work->room].presentData[work->idxInRoom].nameMess, 0); + PresentWinMesSet(work->presentDescWindow, MAKE_MESSID(0x32, 0x04)); + PresentWinMesWait(work->presentDescWindow); + object->unk10 = 4; + case 4: + if (work->presentDescWindow->state) { + break; + } + object->unk10 = 5; + case 5: + PresentWinAnimOut(work->presentDescWindow); + object->unk10 = 6; + case 6: + if (!work->presentDescWindow->state) { + PresentExecModeSet(object, PRESENT_MODE_NONE); + } break; - } - object->unk10 = 5; - case 5: - fn_1_4098(var_r31->unk_228); - object->unk10 = 6; - case 6: - if (!var_r31->unk_228->unk_20) { - fn_1_180C(object, 0); - } - break; } } static const s32 lbl_1_rodata_BA4[][2] = { { 7, 1 } }; -s32 fn_1_393C(s32 arg0, s32 arg1) +static s32 fn_1_393C(s32 arg0, s32 arg1) { s32 var_r31; diff --git a/src/REL/resultDll/battle.c b/src/REL/resultDll/battle.c index e582532a..f9a58cba 100644 --- a/src/REL/resultDll/battle.c +++ b/src/REL/resultDll/battle.c @@ -1,718 +1,679 @@ #include "dolphin.h" -#include "math.h" +#include "ext_math.h" -#include "game/hsfanim.h" +#include "game/armem.h" #include "game/audio.h" -#include "game/process.h" -#include "game/wipe.h" -#include "game/window.h" -#include "game/pad.h" -#include "game/object.h" #include "game/chrman.h" -#include "game/sprite.h" +#include "game/frand.h" +#include "game/hsfanim.h" #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "game/armem.h" -#include "game/frand.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" #include "game/gamework_data.h" #include "REL/resultdll.h" -DataListModel lbl_1_data_4E8[] = { - { 0x6F0008, 0, 0, -1, -1, { -300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, - { 0x6F0009, 0, 0, -1, -1, { -100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, - { 0x6F000A, 0, 0, -1, -1, { 100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, - { 0x6F000A, 0, 0, -1, -1, { 300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, - { 0x6F000B, 0, 0, -1, -1, { -300, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, - { 0x6F000B, 0, 0, -1, -1, { -100, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, - { 0x6F000B, 0, 0, -1, -1, { 100, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, - { 0x6F000B, 0, 0, -1, -1, { 300, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, - { 0x6F000D, 0, 0, -1, -1, { 5000, 0, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, - { 0x6F000E, 0, 1, -1, 8, { 0, 0, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, - { 0x6F000F, 0x40000002, 0, -1, -1, { 5000, 0, 0 }, { 0, 0, 0 }, { 2.0f, 2.0f, 2.0f } }, - { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +#define COIN_EFFECT_MAX 180 + +static StageModel resultBattleModel[] = { { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), 0, 0, -1, -1, { -300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x09), 0, 0, -1, -1, { -100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), 0, 0, -1, -1, { 100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), 0, 0, -1, -1, { 300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0B), 0, 0, -1, -1, { -300, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0B), 0, 0, -1, -1, { -100, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0B), 0, 0, -1, -1, { 100, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0B), 0, 0, -1, -1, { 300, 1000, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0D), 0, 0, -1, -1, { 5000, 0, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0E), 0, 1, -1, 8, { 0, 0, 0 }, { 0, 0, 0 }, { 1.0f, 1.0f, 1.0f } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x0F), 0x40000002, 0, -1, -1, { 5000, 0, 0 }, { 0, 0, 0 }, { 2.0f, 2.0f, 2.0f } }, + { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } }; + +static StageSprite resultBattleSprite[] = { + { DATA_MAKE_NUM(DATADIR_RESULT, 0x43), 0, 10, 288, 240, { 255, 255, 255, 255 } }, + { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, }; -DataListSprite lbl_1_data_758[] = { - { 0x6F0043, 0, 10, 288, 240, { 255, 255, 255, 255 } }, - { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, +static HsfanimStruct00 resultBattleEffParMan = { 80, { 0, 0 }, 3, 30, 90, { 0, -0.2, 0 }, 5.0f, 0.95f, 10.0f, 0.995f, 2, + { + { 255, 192, 112, 255 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + }, + { + { 128, 128, 128, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + } }; -HsfanimStruct00 lbl_1_data_780 = { - 80, - { 0, 0 }, - 3, 30, 90, - { 0, -0.2, 0 }, - 5.0f, 0.95f, 10.0f, - 0.995f, - 2, - { - { 255, 192, 112, 255 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - }, - { - { 128, 128, 128, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - } +static s16 resultStatPosTbl[] = { + 320, + 132, + 500, + 132, + 320, + 217, + 500, + 217, + 320, + 302, + 500, + 302, + 320, + 387, + 500, + 387, }; +static Vec playerPosTbl[] = { { -300, 270, 0 }, { -100, 180, 500 }, { 100, 90, 500 }, { 300, 0, 500 } }; -s16 lbl_1_data_7D0[] = { - 320, 132, - 500, 132, - 320, 217, - 500, 217, - 320, 302, - 500, 302, - 320, 387, - 500, 387, -}; +s16 lbl_1_data_820[] = { -284, 148, -84, 233, 116, 318, 316, 403 }; -Vec lbl_1_data_7F0[] = { - { -300, 270, 0 }, - { -100, 180, 500 }, - { 100, 90, 500 }, - { 300, 0, 500 } -}; +static s32 bomheiCubeMdlTbl[] = { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), DATA_MAKE_NUM(DATADIR_RESULT, 0x09), DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), + DATA_MAKE_NUM(DATADIR_RESULT, 0x0A) }; -s16 lbl_1_data_820[] = { - -284, 148, - -84, 233, - 116, 318, - 316, 403 -}; +static float coinEffectYOfs[] = { 130, 150, 170, 150, 150, 130, 170, 190 }; -s32 lbl_1_data_830[] = { - 0x6F0008, - 0x6F0009, - 0x6F000A, - 0x6F000A -}; +static float coinAddYOfs[] = { 130, 150, 180, 150, 150, 170, 180, 210 }; -float lbl_1_data_840[] = { - 130, - 150, - 170, - 150, - 150, - 130, - 170, - 190 -}; +static float coinBlankYOfs[] = { 140, 160, 180, 150, 150, 120, 180, 210 }; -float lbl_1_data_860[] = { - 130, - 150, - 180, - 150, - 150, - 170, - 180, - 210 -}; +static s16 coinNumXOfs[] = { 8, 0, -8 }; -float lbl_1_data_880[] = { - 140, - 160, - 180, - 150, - 150, - 120, - 180, - 210 -}; - -s16 lbl_1_data_8A0[] = { - 8, - 0, - -8 -}; - -typedef struct struct_unk194 { - s16 unk0; - s16 unk2; - Vec unk4; - Vec unk10; - float unk1C; -} StructUnk194; +typedef struct CoinEffect_s { + s16 playerNo; + s16 rank; + Vec pos; + Vec rotVel; + float velY; +} CoinEffect; u8 lbl_1_bss_19F8[32]; -s16 lbl_1_bss_19F0[4]; -s16 lbl_1_bss_19E8[4]; -s16 lbl_1_bss_19E0[4]; -s16 lbl_1_bss_19B8[4][5]; -s16 lbl_1_bss_19B0[4]; -s16 lbl_1_bss_1990[4][4]; -s16 lbl_1_bss_1828[180]; +static s16 resultBattleOrder[4]; +static s16 resultBattleRank[4]; +static s16 coinNumGrpId[4]; +static s16 coinNumSprId[4][5]; +static s16 resultBattleCharMdl[4]; +static s16 resultBattleCharMot[4][4]; +static s16 coinEffectMdlId[COIN_EFFECT_MAX]; s16 lbl_1_bss_181C[6]; -s16 lbl_1_bss_1814[4]; -StructUnk194 lbl_1_bss_194[180]; -s32 lbl_1_bss_190; +static s16 resultBattleEffParManId[4]; +static CoinEffect coinEffectData[COIN_EFFECT_MAX]; +static s32 resultBattleSkipF; -void fn_1_6760(void); -void fn_1_6824(void); -void fn_1_7544(void); +static void ResultBattleIdle(void); +static void ResultBattleCreate(void); +static void ResultBattleStatAdd(void); -void fn_1_6490(void) +void ResultBattleMain(void) { - s16 player; - s16 i; - s16 window; - s16 button; - Process *process = HuPrcCurrentGet(); - HuAudSeqPlay(10); - for(i=player=0; i<4; i++) { - if(GWPlayerCfg[i].iscom) { - player++; - } - } - if(player == 4) { - lbl_1_bss_190 = 1; - } else { - lbl_1_bss_190 = 0; - } - fn_1_6824(); - HuPrcChildCreate(fn_1_6760, 100, 8192, 0, process); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); - while(WipeStatGet()) { - HuPrcVSleep(); - } - lbl_1_bss_178 = 0; - HuPrcChildCreate(fn_1_3FD8, 100, 12288, 0, process); - HuPrcSleep(10); - if(!lbl_1_bss_174) { - HuPrcSleep(20); - } - fn_1_7544(); - fn_1_40DC(); - window = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); - HuWinMesSpeedSet(window, 0); - HuWinBGTPLvlSet(window, 0); - HuWinAttrSet(window, 0x800); - HuWinMesSet(window, 0x240007); - i=0; - while(1) { - if(lbl_1_bss_190 && i > 120) { - break; - } - for(player=button=0; player<4; player++) { - if(!GWPlayerCfg[player].iscom) { - button |= HuPadBtnDown[GWPlayerCfg[player].pad_idx]; - } - } - if(button & PAD_BUTTON_A) { - HuAudFXPlay(28); - break; - } - HuPrcVSleep(); - i++; - } - HuWinKill(window); - while(!lbl_1_bss_178) { - HuPrcVSleep(); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - HuAudSeqAllFadeOut(500); - while(WipeStatGet()) { - HuPrcVSleep(); - } - omSysPauseEnable(1); - Hu3DParManAllKill(); - omOvlReturnEx(1, 1); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } -} - -void fn_1_6760(void) -{ - Vec temp; - temp.z = 0.0f; - temp.y = 0.0f; - temp.x = 0.0f; - while(1) { - if (((HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) & 0x100) != 0 || lbl_1_bss_190 != 0) { - lbl_1_bss_174 = 1; - } else { - lbl_1_bss_174 = 0; + s16 playerNo; + s16 i; + s16 winId; + s16 btnDown; + Process *proc = HuPrcCurrentGet(); + HuAudSeqPlay(10); + for (i = playerNo = 0; i < 4; i++) { + if (GWPlayerCfg[i].iscom) { + playerNo++; } - HuPrcVSleep(); - } + } + if (playerNo == 4) { + resultBattleSkipF = 1; + } + else { + resultBattleSkipF = 0; + } + ResultBattleCreate(); + HuPrcChildCreate(ResultBattleIdle, 100, 8192, 0, proc); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } + resultReadEndF = 0; + HuPrcChildCreate(ResultBoardDataRead, 100, 12288, 0, proc); + HuPrcSleep(10); + if (!resultFastF) { + HuPrcSleep(20); + } + ResultBattleStatAdd(); + ResultCoinAdd(); + winId = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); + HuWinMesSpeedSet(winId, 0); + HuWinBGTPLvlSet(winId, 0); + HuWinAttrSet(winId, 0x800); + HuWinMesSet(winId, MAKE_MESSID(0x24, 0x07)); + i = 0; + while (1) { + if (resultBattleSkipF && i > 120) { + break; + } + for (playerNo = btnDown = 0; playerNo < 4; playerNo++) { + if (!GWPlayerCfg[playerNo].iscom) { + btnDown |= HuPadBtnDown[GWPlayerCfg[playerNo].pad_idx]; + } + } + if (btnDown & PAD_BUTTON_A) { + HuAudFXPlay(28); + break; + } + HuPrcVSleep(); + i++; + } + HuWinKill(winId); + while (!resultReadEndF) { + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + HuAudSeqAllFadeOut(500); + while (WipeStatGet()) { + HuPrcVSleep(); + } + omSysPauseEnable(1); + Hu3DParManAllKill(); + omOvlReturnEx(1, 1); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -void fn_1_7F98(void); -void fn_1_8338(s16 group, s16 value); -void fn_1_8484(void); -void fn_1_8658(void); -void fn_1_86DC(s16 player); -void fn_1_8CB8(struct model_data *model, Mtx matrix); - -void fn_1_6824(void) +static void ResultBattleIdle(void) { - s16 i; - s16 character; - s16 player; - s16 x_ofs; - AnimData *anim; - AnimData *anim2; - AnimData *anim3; - s16 char_mdl; - Vec pos; - Vec target; - Vec up; - s16 gains[5]; - Process *process = HuPrcCurrentGet(); - CRot.x = 0; - CRot.y = 0; - CRot.z = 0; - Center.x = 0; - Center.y = 330; - Center.z = 0; - CZoom = 2210; - Hu3DShadowCreate(20, 100, 5000); - Hu3DShadowTPLvlSet(0.5f); - Hu3DShadowSizeSet(192); - target.x = target.y = target.z = 0; - pos.x = 500; - pos.z = 1000; - pos.y = 2000; - up.x = 0; - up.y = 1; - up.z = 0; - Hu3DShadowPosSet(&pos, &up, &target); - i = Hu3DHookFuncCreate(fn_1_8CB8); - Hu3DModelPosSet(i, 0, 0, 0); - fn_1_8484(); - fn_1_423C(gains); - gains[lbl_1_bss_172] += gains[4]; - for(i=0; i<4; i++) { - lbl_1_data_4E8[i].datanum = lbl_1_data_830[lbl_1_bss_19E8[i]]; - if(lbl_1_bss_19E8[i] == 3) { - lbl_1_data_4E8[i].attr = 1; - } - } - fn_1_8FF8(lbl_1_data_4E8); - fn_1_927C(lbl_1_data_758); - espDrawNoSet(lbl_1_bss_1A1A[0], 127); - for(i=0; i<4; i++) { - Hu3DModelShadowSet(lbl_1_bss_1A9C[i]); - } - for(i=0; i<4; i++) { - anim = HuSprAnimRead(HuDataReadNum(lbl_1_bss_19E8[i]+0x6F0044, MEMORY_DEFAULT_NUM));; - if(lbl_1_bss_19E8[i] <= 2) { - anim2 = HuSprAnimRead(HuDataReadNum(0x6F0048, MEMORY_DEFAULT_NUM)); - } else { - anim2 = HuSprAnimRead(HuDataReadNum(0x6F0048, MEMORY_DEFAULT_NUM)); - } - Hu3DAnimCreate(anim, lbl_1_bss_1A9C[i+4], "ys22_a0"); - Hu3DAnimCreate(anim2, lbl_1_bss_1A9C[i+4], "ys22_a1"); - Hu3DModelAttrSet(lbl_1_bss_1A9C[i+4], 0x40000002); - } - anim = HuSprAnimRead(HuDataReadNum(0x6F003D, MEMORY_DEFAULT_NUM)); - anim2 = HuSprAnimRead(HuDataReadNum(0x6F003B, MEMORY_DEFAULT_NUM)); - anim3 = HuSprAnimRead(HuDataReadNum(0x6F003C, MEMORY_DEFAULT_NUM)); - for(i=0; i<4; i++) { - if(gains[lbl_1_bss_19F0[i]] >= 100) { - x_ofs = lbl_1_data_8A0[2]; - } else if(gains[lbl_1_bss_19F0[i]] >= 10) { - x_ofs = lbl_1_data_8A0[1]; - } else { - x_ofs = lbl_1_data_8A0[0]; - } - lbl_1_bss_19E0[i] = HuSprGrpCreate(5); - lbl_1_bss_19B8[i][0] = HuSprCreate(anim, 10, 0); - HuSprGrpMemberSet(lbl_1_bss_19E0[i], 0, lbl_1_bss_19B8[i][0]); - HuSprPosSet(lbl_1_bss_19E0[i], 0, 17, -32); - lbl_1_bss_19B8[i][1] = HuSprCreate(anim2, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_19E0[i], 1, lbl_1_bss_19B8[i][1]); - HuSprPosSet(lbl_1_bss_19E0[i], 1, x_ofs, -36); - lbl_1_bss_19B8[i][2] = HuSprCreate(anim3, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_19E0[i], 2, lbl_1_bss_19B8[i][2]); - HuSprPosSet(lbl_1_bss_19E0[i], 2, x_ofs+16, -36); - lbl_1_bss_19B8[i][3] = HuSprCreate(anim3, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_19E0[i], 3, lbl_1_bss_19B8[i][3]); - HuSprPosSet(lbl_1_bss_19E0[i], 3, x_ofs+32, -36); - lbl_1_bss_19B8[i][4] = HuSprCreate(anim3, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_19E0[i], 4, lbl_1_bss_19B8[i][4]); - HuSprPosSet(lbl_1_bss_19E0[i], 4, x_ofs+48, -36); - HuSprGrpPosSet(lbl_1_bss_19E0[i], 0, 0); - fn_1_8338(lbl_1_bss_19E0[i], 9); - HuSprGrpScaleSet(lbl_1_bss_19E0[i], 0, 0); - } - (void)anim3; - Hu3DMotionSet(lbl_1_bss_1A9C[8], lbl_1_bss_1A5C[9]); - Hu3DModelAttrSet(lbl_1_bss_1A9C[8], 0x40000001); - Hu3DModelShadowSet(lbl_1_bss_1A9C[8]); - for(i=0; i<180; i++) { - if(i == 0) { - lbl_1_bss_1828[0] = Hu3DModelCreateFile(0x6F000C); - } else { - lbl_1_bss_1828[i] = Hu3DModelLink(lbl_1_bss_1828[0]); - } - Hu3DModelScaleSet(lbl_1_bss_1828[i], 0.5f, 0.5f, 0.5f); - Hu3DModelAttrSet(lbl_1_bss_1828[i], 1); - } - fn_1_8658(); - anim = HuSprAnimRead(HuAR_ARAMtoMRAMFileRead(0x120004, MEMORY_DEFAULT_NUM, HEAP_DATA)); - for(i=0; i<4; i++) { - lbl_1_bss_1814[i] = Hu3DParManCreate(anim, 300, &lbl_1_data_780); - Hu3DParManAttrSet(lbl_1_bss_1814[i], 0x65); - Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_1814[i]), 1); - Hu3DParManRotSet(lbl_1_bss_1814[i], 90, 0, 0); - } - HuDataDirClose(DATADIR_RESULT); - for(i=0; i<4; i++) { - player = lbl_1_bss_19F0[i]; - character = GWPlayerCfg[lbl_1_bss_19F0[i]].character; - char_mdl = CharModelCreate(character, 2); - lbl_1_bss_19B0[player] = char_mdl; - lbl_1_bss_1990[player][0] = CharModelMotionCreate(character, 0x5F0000); - lbl_1_bss_1990[player][1] = CharModelMotionCreate(character, 0x5F0017); - lbl_1_bss_1990[player][2] = CharModelMotionCreate(character, 0x5F0049); - CharModelVoiceEnableSet(character, lbl_1_bss_1990[player][1], 0); - CharModelMotionSet(character, lbl_1_bss_1990[player][0]); - Hu3DModelPosSet(char_mdl, lbl_1_data_7F0[i].x, lbl_1_data_7F0[lbl_1_bss_19E8[i]].y, 0); - Hu3DModelAttrSet(char_mdl, 0x40000001); - Hu3DModelShadowSet(char_mdl); - } - CharModelDataClose(-1); + Vec temp; + temp.z = 0.0f; + temp.y = 0.0f; + temp.x = 0.0f; + while (1) { + if (((HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) & 0x100) != 0 || resultBattleSkipF != 0) { + resultFastF = 1; + } + else { + resultFastF = 0; + } + HuPrcVSleep(); + } } -Vec lbl_1_data_8B8[] = { - { 8, 0, 0 }, - { 0, 8, 0 }, - { 10, 5, 0 }, - { -5, 10, 0 }, - { 0, -8, 0 }, - { 8, 10, 0 }, - { -10, 8, 0 }, - { 15, 0, 0 } -}; +static void ResultBattleCoinAddShow(void); +static void ResultBattleCoinAddNumSet(s16 grpId, s16 value); +static void ResultBattleOrderSet(void); +static void CoinEffectInit(void); +static void CoinEffectAdd(s16 playerNo); +static void ResultShadowDraw(struct model_data *model, Mtx matrix); -void fn_1_7544(void) +static void ResultBattleCreate(void) { - s16 i; - s16 time; - s16 done_cnt; - float pos_y; - s16 gains[5]; - s16 time_player[4]; - fn_1_423C(gains); - for(time=0; time<=5; time++) { - pos_y = ((5-time)*50)+580; - for(i=0; i<4; i++) { - Hu3DModelPosSet(lbl_1_bss_1A9C[i+4], lbl_1_data_7F0[i].x, pos_y, 0); - } - HuPrcVSleep(); - } - for(i=0; i<4; i++) { - Hu3DModelAttrReset(lbl_1_bss_1A9C[i+4], 0x40000002); - Hu3DMotionSpeedSet(lbl_1_bss_1A9C[i+4], 1.5f); - } - HuPrcSleep(35); - for(i=0; i<4; i++) { - if(gains[lbl_1_bss_19F0[i]] > 0) { - Hu3DParManAttrReset(lbl_1_bss_1814[i], 1); - time_player[i] = frandmod(10); - } else { - time_player[i] = 0; - } - Hu3DParManPosSet(lbl_1_bss_1814[i], lbl_1_data_7F0[i].x, 610.0f, 0.0f); - } - while(1) { - for(i=done_cnt=0; i<4; i++) { - if(time_player[i]) { - time_player[i]--; - continue; - } - if(gains[lbl_1_bss_19F0[i]] <= 0) { - Hu3DParManAttrSet(lbl_1_bss_1814[i], 1); - done_cnt++; - } else { - fn_1_86DC(i); - gains[lbl_1_bss_19F0[i]]--; - if(gains[lbl_1_bss_19F0[i]] <= 10) { - time_player[i] = 4; - } else { - if(gains[lbl_1_bss_19F0[i]] <= 20) { - time_player[i] = 3; - } else { - if(gains[lbl_1_bss_19F0[i]] <= 40) { - time_player[i] = 2; - } else { - time_player[i] = 1; - } - } - } - } - } - if(done_cnt == 4) { - break; - } - HuPrcVSleep(); - } - if(gains[4]) { - HuPrcSleep(20); - Hu3DModelRotSet(lbl_1_bss_1A9C[8], 0, -90, 0); - Hu3DModelScaleSet(lbl_1_bss_1A9C[8], 0.8f, 0.8f, 0.8f); - Hu3DMotionSpeedSet(lbl_1_bss_1A9C[8], 2.0f); - for(i=0; i<=40; i++) { - Hu3DModelPosSet(lbl_1_bss_1A9C[8], 500.0f*(1.0f-(i/40.0f)), 0, 100.0f); - HuPrcVSleep(); - } - HuAudFXPlay(828); - Hu3DModelAttrReset(lbl_1_bss_1A9C[10], 0x40000002); - Hu3DModelPosSet(lbl_1_bss_1A9C[10], 0, 0, 200); - for(i=0; i 10) { - Hu3DModelAttrSet(lbl_1_bss_1A9C[8], 1); - } - Center.x = lbl_1_data_8B8[(i/2) & 0x7].x; - Center.y = 330.0f+lbl_1_data_8B8[(i/2) & 0x7].y; - Center.z = lbl_1_data_8B8[(i/2) & 0x7].z; - espPosSet(lbl_1_bss_1A1A[0], 288.0f+lbl_1_data_8B8[(i/2) & 0x7].x, 240.0f-lbl_1_data_8B8[(i/2) & 0x7].y); - HuPrcVSleep(); - } - espPosSet(lbl_1_bss_1A1A[0], 288.0, 240.0); - Center.x = 0; - Center.y = 330; - Center.z = 0; - time_player[0] = 10; - for(i=0; i<4; i++) { - if(lbl_1_bss_172 == lbl_1_bss_19F0[i]) { - break; - } - } - Hu3DParManAttrReset(lbl_1_bss_1814[i], 1); - while(1) { - if(time_player[0] != 0) { - time_player[0]--; - HuPrcVSleep(); - continue; - } - if(gains[4] <= 0){ - Hu3DParManAttrSet(lbl_1_bss_1814[i], 1); - break; - } - fn_1_86DC(i); - gains[4]--; - time_player[0] = 5; - HuPrcVSleep(); - } - Hu3DParManAttrSet(lbl_1_bss_1814[i], 1); - } - fn_1_423C(gains); - gains[lbl_1_bss_172] += gains[4]; - for(i=0; i<4; i++) { - if(gains[lbl_1_bss_19F0[i]]) { - CharModelMotionShiftSet(GWPlayerCfg[lbl_1_bss_19F0[i]].character, lbl_1_bss_1990[lbl_1_bss_19F0[i]][1], 0, 4, 0); - HuAudPlayerVoicePlay(lbl_1_bss_19F0[i], 293); - } else { - CharModelMotionShiftSet(GWPlayerCfg[lbl_1_bss_19F0[i]].character, lbl_1_bss_1990[lbl_1_bss_19F0[i]][2], 0, 4, 0); - } - } - HuPrcSleep(20); - fn_1_7F98(); - HuPrcSleep(120); + s16 i; + s16 charNo; + s16 playerNo; + s16 xOfs; + AnimData *anim; + AnimData *anim2; + AnimData *anim3; + s16 charMdlId; + Vec pos; + Vec target; + Vec up; + s16 coinNum[5]; + Process *proc = HuPrcCurrentGet(); + CRot.x = 0; + CRot.y = 0; + CRot.z = 0; + Center.x = 0; + Center.y = 330; + Center.z = 0; + CZoom = 2210; + Hu3DShadowCreate(20, 100, 5000); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowSizeSet(192); + target.x = target.y = target.z = 0; + pos.x = 500; + pos.z = 1000; + pos.y = 2000; + up.x = 0; + up.y = 1; + up.z = 0; + Hu3DShadowPosSet(&pos, &up, &target); + i = Hu3DHookFuncCreate(ResultShadowDraw); + Hu3DModelPosSet(i, 0, 0, 0); + ResultBattleOrderSet(); + ResultCoinNumGet(coinNum); + coinNum[resultBonusPlayer] += coinNum[4]; + for (i = 0; i < 4; i++) { + resultBattleModel[i].datanum = bomheiCubeMdlTbl[resultBattleRank[i]]; + if (resultBattleRank[i] == 3) { + resultBattleModel[i].attr = 1; + } + } + StageModelCreate(resultBattleModel); + StageSpriteCreate(resultBattleSprite); + espDrawNoSet(stageSprId[0], 127); + for (i = 0; i < 4; i++) { + Hu3DModelShadowSet(stageMdlId[i]); + } + for (i = 0; i < 4; i++) { + anim = HuSprAnimRead(HuDataReadNum(resultBattleRank[i] + DATA_MAKE_NUM(DATADIR_RESULT, 0x44), MEMORY_DEFAULT_NUM)); + if (resultBattleRank[i] <= 2) { + anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x48), MEMORY_DEFAULT_NUM)); + } + else { + anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x48), MEMORY_DEFAULT_NUM)); + } + Hu3DAnimCreate(anim, stageMdlId[i + 4], "ys22_a0"); + Hu3DAnimCreate(anim2, stageMdlId[i + 4], "ys22_a1"); + Hu3DModelAttrSet(stageMdlId[i + 4], HU3D_MOTATTR_PAUSE); + } + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3D), MEMORY_DEFAULT_NUM)); + anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3B), MEMORY_DEFAULT_NUM)); + anim3 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3C), MEMORY_DEFAULT_NUM)); + for (i = 0; i < 4; i++) { + if (coinNum[resultBattleOrder[i]] >= 100) { + xOfs = coinNumXOfs[2]; + } + else if (coinNum[resultBattleOrder[i]] >= 10) { + xOfs = coinNumXOfs[1]; + } + else { + xOfs = coinNumXOfs[0]; + } + coinNumGrpId[i] = HuSprGrpCreate(5); + coinNumSprId[i][0] = HuSprCreate(anim, 10, 0); + HuSprGrpMemberSet(coinNumGrpId[i], 0, coinNumSprId[i][0]); + HuSprPosSet(coinNumGrpId[i], 0, 17, -32); + coinNumSprId[i][1] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(coinNumGrpId[i], 1, coinNumSprId[i][1]); + HuSprPosSet(coinNumGrpId[i], 1, xOfs, -36); + coinNumSprId[i][2] = HuSprCreate(anim3, 0, 0); + HuSprGrpMemberSet(coinNumGrpId[i], 2, coinNumSprId[i][2]); + HuSprPosSet(coinNumGrpId[i], 2, xOfs + 16, -36); + coinNumSprId[i][3] = HuSprCreate(anim3, 0, 0); + HuSprGrpMemberSet(coinNumGrpId[i], 3, coinNumSprId[i][3]); + HuSprPosSet(coinNumGrpId[i], 3, xOfs + 32, -36); + coinNumSprId[i][4] = HuSprCreate(anim3, 0, 0); + HuSprGrpMemberSet(coinNumGrpId[i], 4, coinNumSprId[i][4]); + HuSprPosSet(coinNumGrpId[i], 4, xOfs + 48, -36); + HuSprGrpPosSet(coinNumGrpId[i], 0, 0); + ResultBattleCoinAddNumSet(coinNumGrpId[i], 9); + HuSprGrpScaleSet(coinNumGrpId[i], 0, 0); + } + (void)anim3; + Hu3DMotionSet(stageMdlId[8], stageMotId[9]); + Hu3DModelAttrSet(stageMdlId[8], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(stageMdlId[8]); + for (i = 0; i < COIN_EFFECT_MAX; i++) { + if (i == 0) { + coinEffectMdlId[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x0C)); + } + else { + coinEffectMdlId[i] = Hu3DModelLink(coinEffectMdlId[0]); + } + Hu3DModelScaleSet(coinEffectMdlId[i], 0.5f, 0.5f, 0.5f); + Hu3DModelAttrSet(coinEffectMdlId[i], HU3D_ATTR_DISPOFF); + } + CoinEffectInit(); + anim = HuSprAnimRead(HuAR_ARAMtoMRAMFileRead(DATA_MAKE_NUM(DATADIR_EFFECT, 4), MEMORY_DEFAULT_NUM, HEAP_DATA)); + for (i = 0; i < 4; i++) { + resultBattleEffParManId[i] = Hu3DParManCreate(anim, 300, &resultBattleEffParMan); + Hu3DParManAttrSet(resultBattleEffParManId[i], 0x65); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(resultBattleEffParManId[i]), 1); + Hu3DParManRotSet(resultBattleEffParManId[i], 90, 0, 0); + } + HuDataDirClose(DATADIR_RESULT); + for (i = 0; i < 4; i++) { + playerNo = resultBattleOrder[i]; + charNo = GWPlayerCfg[resultBattleOrder[i]].character; + charMdlId = CharModelCreate(charNo, 2); + resultBattleCharMdl[playerNo] = charMdlId; + resultBattleCharMot[playerNo][0] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + resultBattleCharMot[playerNo][1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); + resultBattleCharMot[playerNo][2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49)); + CharModelVoiceEnableSet(charNo, resultBattleCharMot[playerNo][1], 0); + CharModelMotionSet(charNo, resultBattleCharMot[playerNo][0]); + Hu3DModelPosSet(charMdlId, playerPosTbl[i].x, playerPosTbl[resultBattleRank[i]].y, 0); + Hu3DModelAttrSet(charMdlId, HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(charMdlId); + } + CharModelDataClose(-1); } -void fn_1_7F98(void) +static Vec cameraShakeOfs[] = { { 8, 0, 0 }, { 0, 8, 0 }, { 10, 5, 0 }, { -5, 10, 0 }, { 0, -8, 0 }, { 8, 10, 0 }, { -10, 8, 0 }, { 15, 0, 0 } }; + +static void ResultBattleStatAdd(void) { - s16 i; - s16 time; - s16 delay; - s16 gains[5]; - Vec pos_3d; - Vec pos_2d; - fn_1_423C(gains); - gains[lbl_1_bss_172] += gains[4]; - for(i=0; i<4; i++) { - fn_1_8338(lbl_1_bss_19E0[i], gains[lbl_1_bss_19F0[i]]); - pos_3d.x = lbl_1_data_7F0[i].x; - if(gains[lbl_1_bss_19F0[i]]) { - pos_3d.y = lbl_1_data_7F0[lbl_1_bss_19E8[i]].y+lbl_1_data_860[GWPlayerCfg[lbl_1_bss_19F0[i]].character]; - } else { - pos_3d.y = lbl_1_data_7F0[lbl_1_bss_19E8[i]].y+lbl_1_data_880[GWPlayerCfg[lbl_1_bss_19F0[i]].character]; - } - pos_3d.z = 0; - Hu3D3Dto2D(&pos_3d, 1, &pos_2d); - HuSprGrpPosSet(lbl_1_bss_19E0[i], pos_2d.x, pos_2d.y); - } - delay = (lbl_1_bss_174) ? 3 : 10; - for(time=0; time<=delay; time++) { - float scale = sin(M_PI*((90.0/delay)*time)/180.0); - for(i=0; i<4; i++) { - HuSprGrpScaleSet(lbl_1_bss_19E0[i], scale, scale); - } - HuPrcVSleep(); - } - for(i=0; i<4; i++) { - HuSprGrpScaleSet(lbl_1_bss_19E0[i], 1.0f, 1.0f); - } + s16 i; + s16 time; + s16 done_cnt; + float pos_y; + s16 coinNum[5]; + s16 delay[4]; + ResultCoinNumGet(coinNum); + for (time = 0; time <= 5; time++) { + pos_y = ((5 - time) * 50) + 580; + for (i = 0; i < 4; i++) { + Hu3DModelPosSet(stageMdlId[i + 4], playerPosTbl[i].x, pos_y, 0); + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + Hu3DModelAttrReset(stageMdlId[i + 4], HU3D_MOTATTR_PAUSE); + Hu3DMotionSpeedSet(stageMdlId[i + 4], 1.5f); + } + HuPrcSleep(35); + for (i = 0; i < 4; i++) { + if (coinNum[resultBattleOrder[i]] > 0) { + Hu3DParManAttrReset(resultBattleEffParManId[i], 1); + delay[i] = frandmod(10); + } + else { + delay[i] = 0; + } + Hu3DParManPosSet(resultBattleEffParManId[i], playerPosTbl[i].x, 610.0f, 0.0f); + } + while (1) { + for (i = done_cnt = 0; i < 4; i++) { + if (delay[i]) { + delay[i]--; + continue; + } + if (coinNum[resultBattleOrder[i]] <= 0) { + Hu3DParManAttrSet(resultBattleEffParManId[i], 1); + done_cnt++; + } + else { + CoinEffectAdd(i); + coinNum[resultBattleOrder[i]]--; + if (coinNum[resultBattleOrder[i]] <= 10) { + delay[i] = 4; + } + else { + if (coinNum[resultBattleOrder[i]] <= 20) { + delay[i] = 3; + } + else { + if (coinNum[resultBattleOrder[i]] <= 40) { + delay[i] = 2; + } + else { + delay[i] = 1; + } + } + } + } + } + if (done_cnt == 4) { + break; + } + HuPrcVSleep(); + } + if (coinNum[4]) { + HuPrcSleep(20); + Hu3DModelRotSet(stageMdlId[8], 0, -90, 0); + Hu3DModelScaleSet(stageMdlId[8], 0.8f, 0.8f, 0.8f); + Hu3DMotionSpeedSet(stageMdlId[8], 2.0f); + for (i = 0; i <= 40; i++) { + Hu3DModelPosSet(stageMdlId[8], 500.0f * (1.0f - (i / 40.0f)), 0, 100.0f); + HuPrcVSleep(); + } + HuAudFXPlay(828); + Hu3DModelAttrReset(stageMdlId[10], HU3D_MOTATTR_PAUSE); + Hu3DModelPosSet(stageMdlId[10], 0, 0, 200); + for (i = 0; i < Hu3DMotionMaxTimeGet(stageMdlId[10]); i++) { + if (i > 10) { + Hu3DModelAttrSet(stageMdlId[8], HU3D_ATTR_DISPOFF); + } + Center.x = cameraShakeOfs[(i / 2) & 0x7].x; + Center.y = 330.0f + cameraShakeOfs[(i / 2) & 0x7].y; + Center.z = cameraShakeOfs[(i / 2) & 0x7].z; + espPosSet(stageSprId[0], 288.0f + cameraShakeOfs[(i / 2) & 0x7].x, 240.0f - cameraShakeOfs[(i / 2) & 0x7].y); + HuPrcVSleep(); + } + espPosSet(stageSprId[0], 288.0, 240.0); + Center.x = 0; + Center.y = 330; + Center.z = 0; + delay[0] = 10; + for (i = 0; i < 4; i++) { + if (resultBonusPlayer == resultBattleOrder[i]) { + break; + } + } + Hu3DParManAttrReset(resultBattleEffParManId[i], 1); + while (1) { + if (delay[0] != 0) { + delay[0]--; + HuPrcVSleep(); + continue; + } + if (coinNum[4] <= 0) { + Hu3DParManAttrSet(resultBattleEffParManId[i], 1); + break; + } + CoinEffectAdd(i); + coinNum[4]--; + delay[0] = 5; + HuPrcVSleep(); + } + Hu3DParManAttrSet(resultBattleEffParManId[i], 1); + } + ResultCoinNumGet(coinNum); + coinNum[resultBonusPlayer] += coinNum[4]; + for (i = 0; i < 4; i++) { + if (coinNum[resultBattleOrder[i]]) { + CharModelMotionShiftSet(GWPlayerCfg[resultBattleOrder[i]].character, resultBattleCharMot[resultBattleOrder[i]][1], 0, 4, HU3D_MOTATTR_NONE); + HuAudPlayerVoicePlay(resultBattleOrder[i], 293); + } + else { + CharModelMotionShiftSet(GWPlayerCfg[resultBattleOrder[i]].character, resultBattleCharMot[resultBattleOrder[i]][2], 0, 4, HU3D_MOTATTR_NONE); + } + } + HuPrcSleep(20); + ResultBattleCoinAddShow(); + HuPrcSleep(120); } -void fn_1_8338(s16 group, s16 value) +static void ResultBattleCoinAddShow(void) { - s16 digit; - s16 digit_value; - - digit = 2; - digit_value = value/100; - if(digit_value != 0) { - HuSprBankSet(group, digit, digit_value); - HuSprAttrReset(group, digit, 4); - digit++; - } - value -= digit_value*100; - digit_value = value/10; - if(digit_value != 0 || digit == 3) { - HuSprBankSet(group, digit, digit_value); - HuSprAttrReset(group, digit, 4); - digit++; - } - value -= digit_value*10; - HuSprBankSet(group, digit, value); - HuSprAttrReset(group, digit, 4); - digit++; - for(digit_value=digit; digit_value<5; digit_value++) { - HuSprAttrSet(group, digit_value, 4); - } + s16 i; + s16 time; + s16 speed; + s16 coinNum[5]; + Vec pos3D; + Vec pos2D; + ResultCoinNumGet(coinNum); + coinNum[resultBonusPlayer] += coinNum[4]; + for (i = 0; i < 4; i++) { + ResultBattleCoinAddNumSet(coinNumGrpId[i], coinNum[resultBattleOrder[i]]); + pos3D.x = playerPosTbl[i].x; + if (coinNum[resultBattleOrder[i]]) { + pos3D.y = playerPosTbl[resultBattleRank[i]].y + coinAddYOfs[GWPlayerCfg[resultBattleOrder[i]].character]; + } + else { + pos3D.y = playerPosTbl[resultBattleRank[i]].y + coinBlankYOfs[GWPlayerCfg[resultBattleOrder[i]].character]; + } + pos3D.z = 0; + Hu3D3Dto2D(&pos3D, 1, &pos2D); + HuSprGrpPosSet(coinNumGrpId[i], pos2D.x, pos2D.y); + } + speed = (resultFastF) ? 3 : 10; + for (time = 0; time <= speed; time++) { + float scale = sind((90.0 / speed) * time); + for (i = 0; i < 4; i++) { + HuSprGrpScaleSet(coinNumGrpId[i], scale, scale); + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + HuSprGrpScaleSet(coinNumGrpId[i], 1.0f, 1.0f); + } } -void fn_1_8484(void) +static void ResultBattleCoinAddNumSet(s16 grpId, s16 value) { - s16 i; - s16 j; - for(i=0; i<4; i++) { - lbl_1_bss_19E8[i] = GWPlayerCoinWinGet(i); - lbl_1_bss_19F0[i] = i; - } - for(j=1; j<4; j++) { - for(i=0; i<4-j; i++) { - if(lbl_1_bss_19E8[i] > lbl_1_bss_19E8[i+1]) { - s16 temp; - temp = lbl_1_bss_19E8[i]; - lbl_1_bss_19E8[i] = lbl_1_bss_19E8[i+1]; - lbl_1_bss_19E8[i+1] = temp; - temp = lbl_1_bss_19F0[i]; - lbl_1_bss_19F0[i] = lbl_1_bss_19F0[i+1]; - lbl_1_bss_19F0[i+1] = temp; - } - } - } + s16 no; + s16 bank; + no = 2; + bank = value / 100; + if (bank != 0) { + HuSprBankSet(grpId, no, bank); + HuSprAttrReset(grpId, no, 4); + no++; + } + value -= bank * 100; + bank = value / 10; + if (bank != 0 || no == 3) { + HuSprBankSet(grpId, no, bank); + HuSprAttrReset(grpId, no, 4); + no++; + } + value -= bank * 10; + HuSprBankSet(grpId, no, value); + HuSprAttrReset(grpId, no, 4); + no++; + for (bank = no; bank < 5; bank++) { + HuSprAttrSet(grpId, bank, 4); + } } -void fn_1_8998(void); - -void fn_1_8658(void) +static void ResultBattleOrderSet(void) { - s16 i; - Process *process = HuPrcCurrentGet(); - for(i=0; i<180; i++) { - lbl_1_bss_194[i].unk0 = -1; - } - HuPrcChildCreate(fn_1_8998, 100, 8192, 0, process); + s16 i; + s16 j; + for (i = 0; i < 4; i++) { + resultBattleRank[i] = GWPlayerCoinWinGet(i); + resultBattleOrder[i] = i; + } + for (j = 1; j < 4; j++) { + for (i = 0; i < 4 - j; i++) { + if (resultBattleRank[i] > resultBattleRank[i + 1]) { + s16 temp; + temp = resultBattleRank[i]; + resultBattleRank[i] = resultBattleRank[i + 1]; + resultBattleRank[i + 1] = temp; + temp = resultBattleOrder[i]; + resultBattleOrder[i] = resultBattleOrder[i + 1]; + resultBattleOrder[i + 1] = temp; + } + } + } } -void fn_1_86DC(s16 player) +static void CoinEffectMain(void); + +static void CoinEffectInit(void) { - s16 i; - for(i=0; i<180; i++) { - if(lbl_1_bss_194[i].unk0 == -1) { - break; - } - } - if(i == 180) { - return; - } - lbl_1_bss_194[i].unk0 = player; - lbl_1_bss_194[i].unk4.x = lbl_1_data_7F0[player].x; - lbl_1_bss_194[i].unk4.y = 610.0f; - lbl_1_bss_194[i].unk4.z = 0.0f; - lbl_1_bss_194[i].unk2 = lbl_1_bss_19E8[player]; - lbl_1_bss_194[i].unk10.x = frandmod(20)-10.0f; - lbl_1_bss_194[i].unk10.y = frandmod(20)-10.0f; - lbl_1_bss_194[i].unk10.z = 0; - lbl_1_bss_194[i].unk1C = 10.0f; - Hu3DModelAttrReset(lbl_1_bss_1828[i], 1); - Hu3DModelPosSet(lbl_1_bss_1828[i], 0, 100, 0); - Hu3DModelRotSet(lbl_1_bss_1828[i], 0, 0, 0); + s16 i; + Process *process = HuPrcCurrentGet(); + for (i = 0; i < COIN_EFFECT_MAX; i++) { + coinEffectData[i].playerNo = -1; + } + HuPrcChildCreate(CoinEffectMain, 100, 8192, 0, process); } -void fn_1_8998(void) +static void CoinEffectAdd(s16 playerNo) { - s16 i; - ModelData *model_ptr; - s16 player; - while(1) { - for(i=0; i<180; i++) { - if(lbl_1_bss_194[i].unk0 == -1) { - continue; - } - player = lbl_1_bss_194[i].unk0; - model_ptr = &Hu3DData[lbl_1_bss_1828[i]]; - model_ptr->pos = lbl_1_bss_194[i].unk4; - model_ptr->rot.x += lbl_1_bss_194[i].unk10.x; - model_ptr->rot.y += lbl_1_bss_194[i].unk10.y; - lbl_1_bss_194[i].unk4.y -= lbl_1_bss_194[i].unk1C; - lbl_1_bss_194[i].unk1C += 0.2f; - if(lbl_1_bss_194[i].unk4.y < ((3-lbl_1_bss_194[i].unk2)*100)+lbl_1_data_840[GWPlayerCfg[lbl_1_bss_19F0[player]].character]) { - Vec pos; - pos.x = lbl_1_data_7F0[player].x; - pos.y = ((3-lbl_1_bss_194[i].unk2)*100)+lbl_1_data_840[GWPlayerCfg[lbl_1_bss_19F0[player]].character]; - pos.z = 0.0f; - CharModelCoinEffectCreate(1, &pos); - lbl_1_bss_194[i].unk0 = -1; - HuAudFXPlay(7); - Hu3DModelAttrSet(lbl_1_bss_1828[i], 1); - } - } - HuPrcVSleep(); - } - + s16 i; + for (i = 0; i < COIN_EFFECT_MAX; i++) { + if (coinEffectData[i].playerNo == -1) { + break; + } + } + if (i == COIN_EFFECT_MAX) { + return; + } + coinEffectData[i].playerNo = playerNo; + coinEffectData[i].pos.x = playerPosTbl[playerNo].x; + coinEffectData[i].pos.y = 610.0f; + coinEffectData[i].pos.z = 0.0f; + coinEffectData[i].rank = resultBattleRank[playerNo]; + coinEffectData[i].rotVel.x = frandmod(20) - 10.0f; + coinEffectData[i].rotVel.y = frandmod(20) - 10.0f; + coinEffectData[i].rotVel.z = 0; + coinEffectData[i].velY = 10.0f; + Hu3DModelAttrReset(coinEffectMdlId[i], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(coinEffectMdlId[i], 0, 100, 0); + Hu3DModelRotSet(coinEffectMdlId[i], 0, 0, 0); } -void fn_1_8CB8(struct model_data *model, Mtx matrix) +static void CoinEffectMain(void) { - s32 sp8 = 0; - GXTexObj tex; - Mtx final; - Mtx inv_camera; - Mtx shadow; - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXInitTexObj(&tex, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + s16 i; + ModelData *modelP; + s16 player; + while (1) { + for (i = 0; i < COIN_EFFECT_MAX; i++) { + if (coinEffectData[i].playerNo == -1) { + continue; + } + player = coinEffectData[i].playerNo; + modelP = &Hu3DData[coinEffectMdlId[i]]; + modelP->pos = coinEffectData[i].pos; + modelP->rot.x += coinEffectData[i].rotVel.x; + modelP->rot.y += coinEffectData[i].rotVel.y; + coinEffectData[i].pos.y -= coinEffectData[i].velY; + coinEffectData[i].velY += 0.2f; + if (coinEffectData[i].pos.y < ((3 - coinEffectData[i].rank) * 100) + coinEffectYOfs[GWPlayerCfg[resultBattleOrder[player]].character]) { + Vec pos; + pos.x = playerPosTbl[player].x; + pos.y = ((3 - coinEffectData[i].rank) * 100) + coinEffectYOfs[GWPlayerCfg[resultBattleOrder[player]].character]; + pos.z = 0.0f; + CharModelCoinEffectCreate(1, &pos); + coinEffectData[i].playerNo = -1; + HuAudFXPlay(7); + Hu3DModelAttrSet(coinEffectMdlId[i], HU3D_ATTR_DISPOFF); + } + } + HuPrcVSleep(); + } +} + +static void ResultShadowDraw(struct model_data *model, Mtx matrix) +{ + s32 sp8 = 0; + GXTexObj tex; + Mtx final; + Mtx invCamera; + Mtx shadow; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXInitTexObj(&tex, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); GXLoadTexObj(&tex, 0); - MTXInverse(Hu3DCameraMtx, inv_camera); - MTXConcat(inv_camera, matrix, final); - MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, shadow); - MTXConcat(shadow, final, final); - GXLoadTexMtxImm(final, GX_TEXMTX9, GX_MTX3x4); - GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX9); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - GXSetNumTexGens(1); - GXSetNumTevStages(1); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); - GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); - GXLoadPosMtxImm(matrix, GX_PNMTX0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-500.0f, 0, -500.0f); - GXPosition3f32(500.0f, 0, -500.0f); - GXPosition3f32(500.0f, 0, 500.0f); - GXPosition3f32(-500.0f, 0, 500.0f); - GXEnd(); -} \ No newline at end of file + MTXInverse(Hu3DCameraMtx, invCamera); + MTXConcat(invCamera, matrix, final); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, shadow); + MTXConcat(shadow, final, final); + GXLoadTexMtxImm(final, GX_TEXMTX9, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX9); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXLoadPosMtxImm(matrix, GX_PNMTX0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-500.0f, 0, -500.0f); + GXPosition3f32(500.0f, 0, -500.0f); + GXPosition3f32(500.0f, 0, 500.0f); + GXPosition3f32(-500.0f, 0, 500.0f); + GXEnd(); +} diff --git a/src/REL/resultDll/datalist.c b/src/REL/resultDll/datalist.c index 6b5705a2..5d747f30 100644 --- a/src/REL/resultDll/datalist.c +++ b/src/REL/resultDll/datalist.c @@ -1,13 +1,17 @@ #include "REL/resultdll.h" -s16 lbl_1_bss_1A9C[32]; -s16 lbl_1_bss_1A5C[32]; -s16 lbl_1_bss_1A1A[33]; +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +s16 stageMdlId[32]; +s16 stageMotId[32]; +s16 stageSprId[33]; s16 lbl_1_bss_1A18; -void fn_1_8FF8(DataListModel *model_list) +void StageModelCreate(StageModel *model_list) { - DataListModel *list; + StageModel *list; s16 i; s16 model; s16 clear_i; @@ -15,24 +19,24 @@ void fn_1_8FF8(DataListModel *model_list) void *data; list = model_list; for(clear_i=0; clear_i<32; clear_i++) { - lbl_1_bss_1A9C[clear_i] = lbl_1_bss_1A5C[clear_i] = -1; + stageMdlId[clear_i] = stageMotId[clear_i] = -1; } for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) { if(list->type == 0) { data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); model = Hu3DModelCreate(data); - lbl_1_bss_1A9C[i] = model; + stageMdlId[i] = model; Hu3DModelAttrSet(model, list->attr); Hu3DModelPosSetV(model, &list->pos); Hu3DModelRotSetV(model, &list->rot); Hu3DModelScaleSetV(model, &list->scale); model_ptr = &Hu3DData[model]; if(model_ptr->unk_08 != -1) { - lbl_1_bss_1A5C[i] = model_ptr->unk_08; + stageMotId[i] = model_ptr->unk_08; } } else if(list->type == 1) { data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); - lbl_1_bss_1A5C[i] = Hu3DJointMotion(lbl_1_bss_1A9C[list->mot_link], data); + stageMotId[i] = Hu3DJointMotion(stageMdlId[list->mot_link], data); } (void)i; @@ -40,33 +44,33 @@ void fn_1_8FF8(DataListModel *model_list) list = model_list; for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) { if(list->type == 2) { - model = Hu3DModelLink(lbl_1_bss_1A9C[list->link]); - lbl_1_bss_1A9C[i] = model; + model = Hu3DModelLink(stageMdlId[list->link]); + stageMdlId[i] = model; Hu3DModelAttrSet(model, list->attr); Hu3DModelPosSetV(model, &list->pos); Hu3DModelRotSetV(model, &list->rot); Hu3DModelScaleSetV(model, &list->scale); } if(list->mot_link != -1) { - Hu3DMotionSet(lbl_1_bss_1A9C[i], lbl_1_bss_1A5C[list->mot_link]); + Hu3DMotionSet(stageMdlId[i], stageMotId[list->mot_link]); } (void)i; } } -void fn_1_927C(DataListSprite *sprite_list) +void StageSpriteCreate(StageSprite *sprite_list) { - DataListSprite *list; + StageSprite *list; s16 sprite; s16 clear_i; s16 i; list = sprite_list; for(clear_i=0; clear_i<32; clear_i++) { - lbl_1_bss_1A1A[clear_i] = -1; + stageSprId[clear_i] = -1; } for(i=0; list->datanum; i++, list++) { sprite = espEntry(list->datanum, 100, 0); - lbl_1_bss_1A1A[i] = sprite; + stageSprId[i] = sprite; espPosSet(sprite, list->x, list->y); espColorSet(sprite, list->color.r, list->color.g, list->color.b); espTPLvlSet(sprite, list->color.a/255.0f); @@ -75,12 +79,12 @@ void fn_1_927C(DataListSprite *sprite_list) } } -void fn_1_93B4(void) +void StageSpriteKill(void) { s16 i; for(i=0; i<32; i++) { - if(lbl_1_bss_1A1A[i] != -1) { - espKill(lbl_1_bss_1A1A[i]); + if(stageSprId[i] != -1) { + espKill(stageSprId[i]); } } -} \ No newline at end of file +} diff --git a/src/REL/resultDll/main.c b/src/REL/resultDll/main.c index 00793250..84d801c9 100644 --- a/src/REL/resultDll/main.c +++ b/src/REL/resultDll/main.c @@ -1,1299 +1,1307 @@ #include "dolphin.h" -#include "rel_sqrt_consts.h" -#include "game/object.h" -#include "game/data.h" -#include "game/window.h" -#include "game/hsfman.h" -#include "game/process.h" -#include "game/objsub.h" -#include "game/audio.h" -#include "game/wipe.h" -#include "game/pad.h" #include "game/armem.h" -#include "game/saveload.h" -#include "game/gamework.h" +#include "game/audio.h" #include "game/board/player.h" +#include "game/data.h" #include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/saveload.h" +#include "game/window.h" +#include "game/wipe.h" -#include "math.h" +#include "ext_math.h" #include "REL/resultdll.h" -DataListModel lbl_1_data_0[] = { - { 0x6F0000, 1, 0, -1, -1, { 148, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0001, 1, 0, -1, -1, { 148, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0002, 1, 0, -1, -1, { 148, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0003, 1, 0, -1, -1, { 148, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 0, -1, -1, { 230, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 2, 4, -1, { 230, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 2, 4, -1, { 230, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 2, 4, -1, { 230, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0005, 0, 0, -1, -1, { 410, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 2, 8, -1, { 410, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 2, 8, -1, { 410, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { 0x6F0006, 0, 2, 8, -1, { 410, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, - { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +static StageModel resultModel[] = { { DATA_MAKE_NUM(DATADIR_RESULT, 0x00), 1, 0, -1, -1, { 148, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x01), 1, 0, -1, -1, { 148, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x02), 1, 0, -1, -1, { 148, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x03), 1, 0, -1, -1, { 148, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 0, -1, -1, { 230, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 2, 4, -1, { 230, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 2, 4, -1, { 230, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 2, 4, -1, { 230, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x05), 0, 0, -1, -1, { 410, 132, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 2, 8, -1, { 410, 217, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 2, 8, -1, { 410, 302, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x06), 0, 2, 8, -1, { 410, 387, 500 }, { 0, 0, 0 }, { 1, 1, 1 } }, + { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } }; + +static StageSprite resultSprite[] = { + { DATA_MAKE_NUM(DATADIR_RESULT, 0x43), 0, 10, 288, 240, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1D), 0, 10, 288, 60, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 270, 132, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 450, 132, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 270, 217, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 450, 217, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 270, 302, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 450, 302, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 270, 387, { 255, 255, 255, 255 } }, + { DATA_MAKE_NUM(DATADIR_RESULT, 0x1A), 0, 10, 450, 387, { 255, 255, 255, 255 } }, + { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, }; -DataListSprite lbl_1_data_2A4[] = { - { 0x6F0043, 0, 10, 288, 240, { 255, 255, 255, 255 } }, - { 0x6F001D, 0, 10, 288, 60, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 270, 132, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 450, 132, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 270, 217, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 450, 217, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 270, 302, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 450, 302, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 270, 387, { 255, 255, 255, 255 } }, - { 0x6F001A, 0, 10, 450, 387, { 255, 255, 255, 255 } }, - { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, -}; - -s16 lbl_1_data_380 = -1; +static s16 rankNewGrpId = -1; omObjData *lbl_1_bss_188; -omObjData *lbl_1_bss_184; -Process *lbl_1_bss_180; -s16 lbl_1_bss_17C; -s32 lbl_1_bss_178; -s32 lbl_1_bss_174; -s16 lbl_1_bss_172; -s16 lbl_1_bss_170; -s16 lbl_1_bss_168[4]; -s16 lbl_1_bss_158[8]; -AnimData *lbl_1_bss_144[5]; -AnimData *lbl_1_bss_E4[8][3]; -AnimData *lbl_1_bss_E0; -s16 lbl_1_bss_CE[9]; -s16 lbl_1_bss_9E[8][3]; -s16 lbl_1_bss_9C; -s16 lbl_1_bss_5C[8][4]; -s16 lbl_1_bss_54[4]; -s16 lbl_1_bss_52; -s16 lbl_1_bss_4A[4]; -s16 lbl_1_bss_42[4]; -s16 lbl_1_bss_3A[4]; -s16 lbl_1_bss_12[4][5]; -s16 lbl_1_bss_A[4]; -s16 lbl_1_bss_8; -s32 lbl_1_bss_4; -s32 lbl_1_bss_0; +static omObjData *outViewObj; +Process *objman; +s16 resultMgNo; +s32 resultReadEndF; +s32 resultFastF; +s16 resultBonusPlayer; +static s16 teamResultGrpId; +static s16 charShadowMdlId[4]; +static s16 statShadowMdlId[8]; +static AnimData *resultRankAnim[5]; +static AnimData *resultCharAnim[8][3]; +static AnimData *resultCrownAnim; +static s16 resultNumGrpId[8]; +static s16 resultNumSprId[8][3]; +static s16 resultCrownGrpId; +static s16 resultCubeMdlId[8][4]; +static s16 resultPlayerCubeMdlId[4]; +static s16 resultRankGrpId; +static s16 resultOrder[4]; +static s16 resultRank[4]; +static s16 resultCoinAddGrpId[4]; +static s16 resultCoinAddSprId[4][5]; +static s16 resultCharCubeMdlId[4]; +static s16 resultTeamOrder; +static s32 resultSkipF; +static s32 resultReorderF; -void fn_1_4D8(void); -void fn_1_888(void); - -void fn_1_B78(void); -void fn_1_1F4C(void); -void fn_1_2ADC(void); -void fn_1_461C(void); -void fn_1_47FC(void); +static void ResultMain(void); +static void ResultIdle(void); +static void ResultCreate(void); +static void ResultStatAdd(void); +static void ResultOrderApply(void); +static void SaveExec(void); +static void ResultTeamExec(void); void ObjectSetup(void) { - s32 i; - s32 light; - OSReport("******* RESULT ObjectSetup *********\n"); - lbl_1_bss_180 = omInitObjMan(50, 8192); - lbl_1_bss_17C = GWSystem.mg_next; - - if(mgInfoTbl[lbl_1_bss_17C].ovl == OVL_M430) { - for(i=0; i<4; i++) { - GWPlayerCfg[i].group = GWPlayerCfg[i].group/2; - } - } - HuDataDirClose(mgInfoTbl[lbl_1_bss_17C].data_dir); - if(mgInfoTbl[lbl_1_bss_17C].type == 3 || mgInfoTbl[lbl_1_bss_17C].type == 5 || mgInfoTbl[lbl_1_bss_17C].type == 6 || !_CheckFlag(FLAG_ID_MAKE(1, 0))) { - if(_CheckFlag(0x10000)) { - HuAR_DVDtoARAM(DATADIR_BOARD); - while(HuARDMACheck()); - } - omOvlReturnEx(1, 1); - return; - } - CRot.x = 0.0f; - CRot.y = 0.0f; - CRot.z = 0.0f; - Center.x = 0.0f; - Center.y = 0.0f; - Center.z = 0.0f; - CZoom = 500.0f; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 15000.0f, 1.2f); - Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); - light = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); - Hu3DGLightInfinitytSet(light); - lbl_1_bss_174 = 0; - if(mgInfoTbl[GWSystem.mg_next].type != 4) { - HuPrcChildCreate(fn_1_4D8, 100, 12288, 0, lbl_1_bss_180); - - } else { - HuPrcChildCreate(fn_1_6490, 100, 12288, 0, lbl_1_bss_180); - } - lbl_1_bss_184 = omAddObjEx(lbl_1_bss_180, 32730, 0, 0, -1, omOutView); - HuWinInit(1); - lbl_1_bss_172 = frandmod(4); + s32 i; + s32 lightId; + OSReport("******* RESULT ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + resultMgNo = GWSystem.mg_next; + + if (mgInfoTbl[resultMgNo].ovl == OVL_M430) { + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].group = GWPlayerCfg[i].group / 2; + } + } + HuDataDirClose(mgInfoTbl[resultMgNo].data_dir); + if (mgInfoTbl[resultMgNo].type == 3 || mgInfoTbl[resultMgNo].type == 5 || mgInfoTbl[resultMgNo].type == 6 + || !_CheckFlag(FLAG_ID_MAKE(1, 0))) { + if (_CheckFlag(0x10000)) { + HuAR_DVDtoARAM(DATADIR_BOARD); + while (HuARDMACheck()) + ; + } + omOvlReturnEx(1, 1); + return; + } + CRot.x = 0.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = 0.0f; + CZoom = 500.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 15000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lightId = Hu3DGLightCreate(0, 100, 1000, 0, -0.5, -1, 255, 255, 255); + Hu3DGLightInfinitytSet(lightId); + resultFastF = 0; + if (mgInfoTbl[GWSystem.mg_next].type != 4) { + HuPrcChildCreate(ResultMain, 100, 12288, 0, objman); + } + else { + HuPrcChildCreate(ResultBattleMain, 100, 12288, 0, objman); + } + outViewObj = omAddObjEx(objman, 32730, 0, 0, -1, omOutView); + HuWinInit(1); + resultBonusPlayer = frandmod(4); } -void fn_1_4D8(void) +static void ResultMain(void) { - s16 player; - s16 i; - s16 window; - s16 button; - Process *process_curr = HuPrcCurrentGet(); - HuAudSeqPlay(57); - for(i=player=0; i<4; i++) { - if(GWPlayerCfg[i].iscom) { - player++; - } - } - if(player == 4) { - lbl_1_bss_4 = 1; - } else { - lbl_1_bss_4 = 0; - } - fn_1_B78(); - HuPrcChildCreate(fn_1_888, 100, 8192, 0, lbl_1_bss_180); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuDataDirClose(DATADIR_RESULT); - lbl_1_bss_178 = 0; - HuPrcChildCreate(fn_1_3FD8, 100, 12288, 0, lbl_1_bss_180); - HuPrcSleep(10); - if(!lbl_1_bss_174) { - HuPrcSleep(20); - } - fn_1_1F4C(); - fn_1_40DC(); - fn_1_2ADC(); - window = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); - HuWinMesSpeedSet(window, 0); - HuWinBGTPLvlSet(window, 0); - HuWinPriSet(window, 5); - HuWinAttrSet(window, 0x800); - HuWinMesSet(window, 0x240007); - HuPrcSleep(4); - i=0; - while(1) { - if(!lbl_1_bss_4 || i <= 120) { - for(player=button=0; player<4; player++) { - if(!GWPlayerCfg[player].iscom) { - button |= HuPadBtnDown[GWPlayerCfg[player].pad_idx]; - } - } - if(button & PAD_BUTTON_A) { - HuAudFXPlay(28); - break; - } - HuPrcVSleep(); - i++; - } else { - break; - } - } - HuWinKill(window); - if(GWTeamGet()) { - fn_1_47FC(); - } - while(!lbl_1_bss_178) { - HuPrcVSleep(); - } - HuAudSeqAllFadeOut(1000); - WipeColorSet(255, 255, 255); - if(GWSaveModeGet() != 1 && SLSaveFlagGet()) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while(WipeStatGet()) { - HuPrcVSleep(); - } - fn_1_461C(); - } else { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - omSysPauseEnable(1); - omOvlReturnEx(1, 1); - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } + s16 player; + s16 i; + s16 winId; + s16 btnDown; + Process *proc = HuPrcCurrentGet(); + HuAudSeqPlay(57); + for (i = player = 0; i < 4; i++) { + if (GWPlayerCfg[i].iscom) { + player++; + } + } + if (player == 4) { + resultSkipF = 1; + } + else { + resultSkipF = 0; + } + ResultCreate(); + HuPrcChildCreate(ResultIdle, 100, 8192, 0, objman); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_RESULT); + resultReadEndF = 0; + HuPrcChildCreate(ResultBoardDataRead, 100, 12288, 0, objman); + HuPrcSleep(10); + if (!resultFastF) { + HuPrcSleep(20); + } + ResultStatAdd(); + ResultCoinAdd(); + ResultOrderApply(); + winId = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); + HuWinMesSpeedSet(winId, 0); + HuWinBGTPLvlSet(winId, 0); + HuWinPriSet(winId, 5); + HuWinAttrSet(winId, 0x800); + HuWinMesSet(winId, MAKE_MESSID(0x24, 0x07)); + HuPrcSleep(4); + i = 0; + while (1) { + if (!resultSkipF || i <= 120) { + for (player = btnDown = 0; player < 4; player++) { + if (!GWPlayerCfg[player].iscom) { + btnDown |= HuPadBtnDown[GWPlayerCfg[player].pad_idx]; + } + } + if (btnDown & PAD_BUTTON_A) { + HuAudFXPlay(28); + break; + } + HuPrcVSleep(); + i++; + } + else { + break; + } + } + HuWinKill(winId); + if (GWTeamGet()) { + ResultTeamExec(); + } + while (!resultReadEndF) { + HuPrcVSleep(); + } + HuAudSeqAllFadeOut(1000); + WipeColorSet(255, 255, 255); + if (GWSaveModeGet() != 1 && SLSaveFlagGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet()) { + HuPrcVSleep(); + } + SaveExec(); + } + else { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + while (WipeStatGet()) { + HuPrcVSleep(); + } + } + omSysPauseEnable(1); + omOvlReturnEx(1, 1); + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } } -void fn_1_888(void) +static void ResultIdle(void) { - f32 var_f29; - f32 var_f31; - f32 var_f30; + float rotRightSpeed; + float rotLeft; + float rotRight; - var_f31 = 0.0f; - var_f30 = 0.0f; - var_f29 = 0.0f; - lbl_1_bss_0 = 0; + rotLeft = 0.0f; + rotRight = 0.0f; + rotRightSpeed = 0.0f; + resultReorderF = 0; while (1) { - if (((HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) & 0x100) != 0 || lbl_1_bss_4 != 0) { - lbl_1_bss_174 = 1; - } else { - lbl_1_bss_174 = 0; + if (((HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) & PAD_BUTTON_A) != 0 || resultSkipF != 0) { + resultFastF = 1; } - Hu3DModelRotSet(lbl_1_bss_1A9C[4], 0.0f, var_f31, 0.0f); - Hu3DModelRotSet(lbl_1_bss_1A9C[5], 0.0f, -var_f31, 0.0f); - Hu3DModelRotSet(lbl_1_bss_1A9C[6], 0.0f, var_f31, 0.0f); - Hu3DModelRotSet(lbl_1_bss_1A9C[7], 0.0f, -var_f31, 0.0f); - var_f31 += 0.2; - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; + else { + resultFastF = 0; } - if (lbl_1_bss_0 != 0) { - Hu3DModelRotSet(lbl_1_bss_1A9C[8], 0.0f, var_f30, 0.0f); - Hu3DModelRotSet(lbl_1_bss_1A9C[9], 0.0f, -var_f30, 0.0f); - Hu3DModelRotSet(lbl_1_bss_1A9C[10], 0.0f, var_f30, 0.0f); - Hu3DModelRotSet(lbl_1_bss_1A9C[11], 0.0f, -var_f30, 0.0f); - var_f29 += 0.001; - if (var_f29 > 0.1) { - var_f29 = 0.1f; + Hu3DModelRotSet(stageMdlId[4], 0.0f, rotLeft, 0.0f); + Hu3DModelRotSet(stageMdlId[5], 0.0f, -rotLeft, 0.0f); + Hu3DModelRotSet(stageMdlId[6], 0.0f, rotLeft, 0.0f); + Hu3DModelRotSet(stageMdlId[7], 0.0f, -rotLeft, 0.0f); + rotLeft += 0.2; + if (rotLeft >= 360.0f) { + rotLeft -= 360.0f; + } + if (resultReorderF != 0) { + Hu3DModelRotSet(stageMdlId[8], 0.0f, rotRight, 0.0f); + Hu3DModelRotSet(stageMdlId[9], 0.0f, -rotRight, 0.0f); + Hu3DModelRotSet(stageMdlId[10], 0.0f, rotRight, 0.0f); + Hu3DModelRotSet(stageMdlId[11], 0.0f, -rotRight, 0.0f); + rotRightSpeed += 0.001; + if (rotRightSpeed > 0.1) { + rotRightSpeed = 0.1f; } - var_f30 += var_f29; - if (var_f30 >= 360.0f) { - var_f30 -= 360.0f; + rotRight += rotRightSpeed; + if (rotRight >= 360.0f) { + rotRight -= 360.0f; } } HuPrcVSleep(); } } -s32 lbl_1_data_3A8[] = { - 0x006F0010, - 0x006F0011, - 0x006F0012, - 0x006F0013, - 0x006F0014, - 0x006F0015 +static s32 resultBackFile[] = { + DATA_MAKE_NUM(DATADIR_RESULT, 0x10), + DATA_MAKE_NUM(DATADIR_RESULT, 0x11), + DATA_MAKE_NUM(DATADIR_RESULT, 0x12), + DATA_MAKE_NUM(DATADIR_RESULT, 0x13), + DATA_MAKE_NUM(DATADIR_RESULT, 0x14), + DATA_MAKE_NUM(DATADIR_RESULT, 0x15), }; -s32 lbl_1_data_3C0[] = { - 0x006F001F, - 0x006F001E, - 0x006F001D, - 0x006F0021, - 0x006F0020, - 0x006F001F +static s32 resultLetterFile[] = { + DATA_MAKE_NUM(DATADIR_RESULT, 0x1F), + DATA_MAKE_NUM(DATADIR_RESULT, 0x1E), + DATA_MAKE_NUM(DATADIR_RESULT, 0x1D), + DATA_MAKE_NUM(DATADIR_RESULT, 0x21), + DATA_MAKE_NUM(DATADIR_RESULT, 0x20), + DATA_MAKE_NUM(DATADIR_RESULT, 0x1F), }; -s16 lbl_1_data_3D8[] = { - 320, 132, - 500, 132, - 320, 217, - 500, 217, - 320, 302, - 500, 302, - 320, 387, - 500, 387, +static s16 resultStatPosTbl[] = { + 320, + 132, + 500, + 132, + 320, + 217, + 500, + 217, + 320, + 302, + 500, + 302, + 320, + 387, + 500, + 387, }; -s16 lbl_1_data_3F8[] = { - 74, 132, - 74, 217, - 74, 302, - 74, 387 +static s16 resultRankPosTbl[] = { 74, 132, 74, 217, 74, 302, 74, 387 }; + +static Vec resultCharPosTbl[4] = { { 148, 132, 500 }, { 148, 217, 500 }, { 148, 302, 500 }, { 148, 387, 500 } }; + +static s16 resultCoinAddPosTbl[] = { 164, 148, 164, 233, 164, 318, 164, 403 }; + +static void ResultSprNumSet(s16 grpId, s16 value); +static void ResultCoinAddNumSet(s16 grpId, s16 value); + +static void ResultOrderSet(void); + +static void ResultCreate(void) +{ + Vec pos; + s16 coinNum[5]; + s16 i; + s16 j; + s16 charNo; + AnimData *anim; + s16 sprId; + s16 grpId; + s16 mdlId; + AnimData *anim2; + AnimData *anim3; + AnimData *anim4; + + StageModelCreate(resultModel); + resultSprite[0].datanum = resultBackFile[mgInfoTbl[resultMgNo].type]; + resultSprite[1].datanum = resultLetterFile[mgInfoTbl[resultMgNo].type]; + StageSpriteCreate(resultSprite); + espDrawNoSet(stageSprId[0], 127); + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x1B)); + for (i = 0; i < 8; i++) { + resultNumGrpId[i] = HuSprGrpCreate(3); + resultNumSprId[i][0] = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(resultNumGrpId[i], 0, resultNumSprId[i][0]); + HuSprPosSet(resultNumGrpId[i], 0, -28.0f, 0.0f); + resultNumSprId[i][1] = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(resultNumGrpId[i], 1, resultNumSprId[i][1]); + HuSprPosSet(resultNumGrpId[i], 1, 0.0f, 0.0f); + resultNumSprId[i][2] = HuSprCreate(anim, 0, 0); + HuSprGrpMemberSet(resultNumGrpId[i], 2, resultNumSprId[i][2]); + HuSprPosSet(resultNumGrpId[i], 2, 28.0f, 0.0f); + HuSprGrpPosSet(resultNumGrpId[i], resultStatPosTbl[(i * 2)], resultStatPosTbl[(i * 2) + 1]); + ResultSprNumSet(resultNumGrpId[i], 999); + } + ResultOrderSet(); + ResultCoinNumGet(coinNum); + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x3A)); + anim3 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x3B)); + anim2 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x3C)); + anim4 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x3E)); + for (i = 0; i < 4; i++) { + resultCoinAddGrpId[i] = HuSprGrpCreate(5); + if (coinNum[resultOrder[i]] < 100) { + resultCoinAddSprId[i][0] = HuSprCreate(anim, 10, 0); + HuSprGrpMemberSet(resultCoinAddGrpId[i], 0, resultCoinAddSprId[i][0]); + HuSprPosSet(resultCoinAddGrpId[i], 0, 30.0f, -25.0f); + } + else { + resultCoinAddSprId[i][0] = HuSprCreate(anim4, 10, 0); + HuSprGrpMemberSet(resultCoinAddGrpId[i], 0, resultCoinAddSprId[i][0]); + HuSprPosSet(resultCoinAddGrpId[i], 0, 40.0f, -21.0f); + } + resultCoinAddSprId[i][1] = HuSprCreate(anim3, 0, 0); + HuSprGrpMemberSet(resultCoinAddGrpId[i], 1, resultCoinAddSprId[i][1]); + HuSprPosSet(resultCoinAddGrpId[i], 1, 12.0f, -25.0f); + resultCoinAddSprId[i][2] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(resultCoinAddGrpId[i], 2, resultCoinAddSprId[i][2]); + HuSprPosSet(resultCoinAddGrpId[i], 2, 28.0f, -25.0f); + resultCoinAddSprId[i][3] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(resultCoinAddGrpId[i], 3, resultCoinAddSprId[i][3]); + HuSprPosSet(resultCoinAddGrpId[i], 3, 44.0f, -25.0f); + resultCoinAddSprId[i][4] = HuSprCreate(anim2, 0, 0); + HuSprGrpMemberSet(resultCoinAddGrpId[i], 4, resultCoinAddSprId[i][4]); + HuSprPosSet(resultCoinAddGrpId[i], 4, 60.0f, -25.0f); + HuSprGrpPosSet(resultCoinAddGrpId[i], resultCoinAddPosTbl[(i * 2)], resultCoinAddPosTbl[(i * 2) + 1]); + ResultCoinAddNumSet(resultCoinAddGrpId[i], 9); + HuSprGrpScaleSet(resultCoinAddGrpId[i], 0.0f, 0.0f); + } + for (i = 0; i < 4; i++) { + charNo = GWPlayerCfg[i].character; + resultCharAnim[charNo][0] = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x22) + (charNo * 3)); + resultCharAnim[charNo][1] = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x23) + (charNo * 3)); + resultCharAnim[charNo][2] = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x24) + (charNo * 3)); + for (j = 0; j < 4; j++) { + resultCubeMdlId[charNo][j] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x00) + j); + Hu3DModelScaleSet(resultCubeMdlId[charNo][j], 1.1f, 1.1f, 1.1f); + Hu3DAnimCreate(resultCharAnim[charNo][0], resultCubeMdlId[charNo][j], "ys22"); + Hu3DModelAttrSet(resultCubeMdlId[charNo][j], HU3D_ATTR_DISPOFF); + } + } + for (i = 0; i < 4; i++) { + resultRankAnim[i] = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x16) + i); + } + resultRankGrpId = HuSprGrpCreate(4); + for (i = 0; i < 4; i++) { + sprId = HuSprCreate(resultRankAnim[resultRank[i]], i, 0); + HuSprGrpMemberSet(resultRankGrpId, i, sprId); + HuSprPosSet(resultRankGrpId, i, resultRankPosTbl[(i * 2)], resultRankPosTbl[(i * 2) + 1]); + ResultSprNumSet(resultNumGrpId[(i * 2)], GWStarsGet(resultOrder[i])); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], BoardPlayerCoinsGet(resultOrder[i])); + charNo = GWPlayerCfg[resultOrder[i]].character; + Hu3D2Dto3D(&resultCharPosTbl[i], 1, &pos); + Hu3DModelPosSetV(resultCubeMdlId[charNo][resultRank[i]], &pos); + Hu3DModelAttrReset(resultCubeMdlId[charNo][resultRank[i]], HU3D_ATTR_DISPOFF); + } + for (i = 4; i <= 11; i++) { + Hu3D2Dto3D(&resultModel[i].pos, 1, &pos); + Hu3DModelPosSetV(stageMdlId[i], &pos); + Hu3D3Dto2D(&pos, 1, &pos); + } + mdlId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x04)); + for (i = 0; i < 4; i++) { + j = Hu3DModelLink(mdlId); + charShadowMdlId[i] = j; + pos = resultCharPosTbl[i]; + pos.x += 5.0f; + pos.y += 3.0f; + pos.z += 200.0f; + Hu3D2Dto3D(&pos, 1, &pos); + Hu3DModelPosSetV(j, &pos); + Hu3DModelScaleSet(j, 1.5f, 1.5f, 1.5f); + } + Hu3DModelAttrSet(mdlId, HU3D_ATTR_DISPOFF); + mdlId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x07)); + for (i = 0; i < 8; i++) { + j = Hu3DModelLink(mdlId); + statShadowMdlId[i] = j; + pos = resultModel[i + 4].pos; + pos.x += 5.0f; + pos.y += 3.0f; + pos.z += 200.0f; + Hu3D2Dto3D(&pos, 1, &pos); + Hu3DModelPosSetV(j, &pos); + Hu3DModelScaleSet(j, 1.5f, 1.5f, 1.5f); + } + Hu3DModelAttrSet(mdlId, HU3D_ATTR_DISPOFF); + resultCrownAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x1C)); + resultCrownGrpId = HuSprGrpCreate(4); + for (i = 0; i < 4; i++) { + sprId = HuSprCreate(resultCrownAnim, i, 0); + HuSprGrpMemberSet(resultCrownGrpId, i, sprId); + HuSprScaleSet(resultCrownGrpId, i, 0.0f, 0.0f); + HuSprPosSet(resultCrownGrpId, i, resultCharPosTbl[i].x - 4.0f, resultCharPosTbl[i].y - 35.0f); + HuSprAttrSet(resultCrownGrpId, i, 4); + } + grpId = HuSprGrpCreate(4); + teamResultGrpId = grpId; + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x3F)); + sprId = HuSprCreate(anim, 100, 0); + HuSprGrpMemberSet(grpId, 0, sprId); + HuSprAttrSet(grpId, 0, 4); + HuSprDrawNoSet(grpId, 0, 127); + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x40)); + sprId = HuSprCreate(anim, 90, 0); + HuSprGrpMemberSet(grpId, 1, sprId); + HuSprAttrSet(grpId, 1, 4); + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x41)); + sprId = HuSprCreate(anim, 80, 0); + HuSprGrpMemberSet(grpId, 2, sprId); + HuSprAttrSet(grpId, 2, 4); + HuSprDrawNoSet(grpId, 2, 127); + anim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x42)); + sprId = HuSprCreate(anim, 80, 0); + HuSprGrpMemberSet(grpId, 3, sprId); + HuSprAttrSet(grpId, 3, 4); + HuSprDrawNoSet(grpId, 3, 127); + (void)sprId; +} + +static void ResultStatAdd(void) +{ + float scale; + float addTime; + + s16 i; + s16 time; + s16 maxTime; + s16 crownTime; + s32 seNo; + s32 sePlayF; + s32 doneF[4]; + float coinRot[4]; + s16 coinNum[5]; + + ResultCoinNumGet(coinNum); + for (i = 0; i < 4; i++) { + ResultCoinAddNumSet(resultCoinAddGrpId[i], coinNum[resultOrder[i]]); + doneF[i] = 0; + } + maxTime = (resultFastF) ? 3 : 10; + for (time = 0; time <= maxTime; time++) { + scale = sind((90.0 / maxTime) * time); + for (i = 0; i < 4; i++) { + HuSprGrpScaleSet(resultCoinAddGrpId[i], scale, scale); + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + HuSprGrpScaleSet(resultCoinAddGrpId[i], 1.0f, 1.0f); + } + for (crownTime = 0; crownTime <= 14;) { + for (i = 0; i < 4; i++) { + if (GWPlayerCoinWinGet(resultOrder[i]) >= 10) { + HuSprAttrReset(resultCrownGrpId, i, 4); + } + HuSprScaleSet(resultCrownGrpId, i, sind((120.0f / 14.0f) * crownTime) * (0.8 * (1.0 / sin((M_PI * 2) / 3))), + 0.8 * (sind((120.0f / 14.0f) * crownTime) * (1.0 / sin((M_PI * 2) / 3)))); + } + crownTime += (resultFastF) ? 2 : 1; + HuPrcVSleep(); + } + if (!resultFastF) { + HuPrcSleep(15); + } + for (i = 0; i < 4; i++) { + coinRot[i] = 0.0f; + } + for (i = time = 0; i < 4; i++) { + time += coinNum[i]; + } + seNo = -1; + if (time) { + seNo = HuAudFXPlay(23); + } + time = 0; + addTime = time; + time = 0; + while (1) { + sePlayF = FALSE; + addTime += (resultFastF) ? 1.0f : 0.2f; + time = addTime; + for (i = maxTime = 0; i < 4; i++) { + if (coinNum[resultOrder[i]] - time <= 0) { + if (!doneF[resultOrder[i]] && coinNum[resultOrder[i]] != 0) { + doneF[resultOrder[i]] = 1; + if (!sePlayF) { + HuAudFXPlay(9); + sePlayF = TRUE; + } + } + + maxTime++; + ResultCoinAddNumSet(resultCoinAddGrpId[i], 0); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], coinNum[resultOrder[i]] + BoardPlayerCoinsGet(resultOrder[i])); + if (!coinRot[i]) { + continue; + } + coinRot[i] += 20.0f; + if (coinRot[i] >= 360.0f) { + coinRot[i] -= 360.0f; + } + Hu3DModelRotSet(stageMdlId[i + 8], 0.0f, coinRot[i], 0.0f); + } + else { + ResultCoinAddNumSet(resultCoinAddGrpId[i], coinNum[resultOrder[i]] - time); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], (s32)time + BoardPlayerCoinsGet(resultOrder[i])); + coinRot[i] += 20.0f; + if (coinRot[i] >= 360.0f) { + coinRot[i] -= 360.0f; + } + Hu3DModelRotSet(stageMdlId[i + 8], 0.0f, coinRot[i], 0.0f); + } + } + if (maxTime == 4) { + break; + } + HuPrcVSleep(); + } + if (seNo != -1) { + HuAudFXStop(seNo); + } + maxTime = 0; + while (1) { + for (i = time = 0; i < 4; i++) { + if (coinRot[i]) { + coinRot[i] += 20.0f; + if (coinRot[i] >= 360.0f) { + coinRot[i] -= 360.0f; + } + Hu3DModelRotSet(stageMdlId[i + 8], 0.0f, coinRot[i], 0.0f); + } + else { + time++; + } + } + if (time >= 4) { + break; + } + HuPrcVSleep(); + maxTime++; + } + if (maxTime < 30) { + HuPrcSleep(30 - maxTime); + } + maxTime = (resultFastF) ? 3 : 10; + for (time = 0; time <= maxTime; time++) { + scale = cosd((90.0 / maxTime) * time); + for (i = 0; i < 4; i++) { + HuSprGrpScaleSet(resultCoinAddGrpId[i], scale, scale); + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + HuSprGrpScaleSet(resultCoinAddGrpId[i], 0.0f, 0.0f); + } +} +static void ResultOrderApply(void) +{ + float weight; + s16 i; + s16 charNo; + s16 num; + s16 scaleTime; + s16 rankTime; + s16 doneNum; + s16 sePlayF; + s16 sprId; + float cubeRot[4]; + Vec cubePos; + s32 voiceSeNo[4] = { -1, -1, -1, -1 }; + s16 order[4]; + s16 statOrder[4]; + s16 statRank[4]; + s16 rank[4]; + s16 coin[4]; + s16 star[4]; + for (i = 0; i < 4; i++) { + order[i] = statOrder[i] = resultOrder[i]; + rank[i] = statRank[i] = resultRank[i]; + coin[i] = BoardPlayerCoinsGet(resultOrder[i]); + star[i] = GWStarsGet(resultOrder[i]); + } + ResultOrderSet(); + for (i = 0; i < 4; i++) { + if (order[i] != resultOrder[i] || rank[i] != resultRank[i]) { + break; + } + } + if (i == 4) { + resultReorderF = 1; + return; + } + rankNewGrpId = HuSprGrpCreate(4); + for (i = 0; i < 4; i++) { + sprId = HuSprCreate(resultRankAnim[resultRank[i]], i, 0); + HuSprGrpMemberSet(rankNewGrpId, i, sprId); + HuSprPosSet(rankNewGrpId, i, resultRankPosTbl[(i * 2)], resultRankPosTbl[(i * 2) + 1]); + HuSprAttrSet(rankNewGrpId, i, 4); + charNo = GWPlayerCfg[resultOrder[i]].character; + resultPlayerCubeMdlId[i] = resultCharCubeMdlId[i] = Hu3DModelLink(resultCubeMdlId[charNo][resultRank[i]]); + Hu3D2Dto3D(&resultCharPosTbl[i], 1, &cubePos); + Hu3DModelPosSetV(resultCharCubeMdlId[i], &cubePos); + if (order[i] == resultOrder[i] && rank[i] == resultRank[i]) { + Hu3DModelAttrSet(resultCubeMdlId[charNo][rank[i]], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(resultCharCubeMdlId[i], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(resultCharCubeMdlId[i], 1.1f, 1.1f, 1.1f); + } + else { + Hu3DModelAttrSet(resultCharCubeMdlId[i], HU3D_ATTR_DISPOFF); + } + } + for (i = 0; i < 4; i++) { + cubeRot[i] = 0; + } + sePlayF = 0; + scaleTime = 0; + while (1) { + for (doneNum = i = 0; i < 4; i++) { + if (order[i] == resultOrder[i] && rank[i] == resultRank[i]) { + doneNum++; + ResultSprNumSet(resultNumGrpId[(i * 2)], GWStarsGet(resultOrder[i])); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], BoardPlayerCoinsGet(resultOrder[i])); + } + else { + if (scaleTime > (i * 20)) { + rankTime = scaleTime - (i * 20); + if (rankTime <= 20) { + if (rankTime <= 10) { + HuSprScaleSet(resultRankGrpId, i, 1.0f, cosd(9.0f * rankTime)); + } + else { + HuSprAttrSet(resultRankGrpId, i, 4); + HuSprAttrReset(rankNewGrpId, i, 4); + HuSprScaleSet(rankNewGrpId, i, 1.0f, sind(9.0f * (rankTime - 10))); + } + weight = rankTime / 20.0f; + num = GWStarsGet(statOrder[i]) + (weight * (GWStarsGet(resultOrder[i]) - GWStarsGet(statOrder[i]))); + ResultSprNumSet(resultNumGrpId[(i * 2)], num); + num = BoardPlayerCoinsGet(statOrder[i]) + (weight * (BoardPlayerCoinsGet(resultOrder[i]) - BoardPlayerCoinsGet(statOrder[i]))); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], num); + } + else { + charNo = GWPlayerCfg[statOrder[i]].character; + Hu3DModelAttrSet(resultCubeMdlId[charNo][rank[i]], HU3D_ATTR_DISPOFF); + charNo = GWPlayerCfg[resultOrder[i]].character; + Hu3DModelAttrReset(resultCharCubeMdlId[i], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(resultCharCubeMdlId[i], 1.1f, 1.1f, 1.1f); + ResultSprNumSet(resultNumGrpId[(i * 2)], GWStarsGet(resultOrder[i])); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], BoardPlayerCoinsGet(resultOrder[i])); + for (num = 0; num < 4; num++) { + if (statOrder[num] == resultOrder[i]) { + break; + } + } + if (resultRank[i] != statRank[num]) { + if (resultRank[i] < statRank[num]) { + Hu3DAnimCreate(resultCharAnim[charNo][1], resultCubeMdlId[charNo][resultRank[i]], "ys22"); + } + else { + Hu3DAnimCreate(resultCharAnim[charNo][2], resultCubeMdlId[charNo][resultRank[i]], "ys22"); + } + if (resultRank[i] == 0) { + voiceSeNo[resultOrder[i]] = HuAudPlayerVoicePlay(resultOrder[i], 293); + } + if (!sePlayF) { + sePlayF = 1; + HuAudFXPlay(27); + } + } + order[i] = resultOrder[i]; + rank[i] = resultRank[i]; + } + } + cubeRot[i] += 20.0f; + if (cubeRot[i] >= 360.0f) { + cubeRot[i] -= 360.0f; + } + charNo = GWPlayerCfg[statOrder[i]].character; + Hu3DModelRotSet(resultCubeMdlId[charNo][rank[i]], cubeRot[i] / (4 - i), cubeRot[i], 0.0f); + } + } + if (scaleTime <= 10) { + for (i = 0; i < 4; i++) { + HuSprScaleSet(resultCrownGrpId, i, cosd(9.0f * scaleTime), cosd(9.0f * scaleTime)); + } + } + else { + for (i = 0; i < 4; i++) { + HuSprScaleSet(resultCrownGrpId, i, 0.0f, 0.0f); + } + } + if (doneNum >= 4) { + break; + } + if (resultFastF) { + scaleTime += 2; + } + HuPrcVSleep(); + scaleTime++; + } + for (i = 0; i < 4; i++) { + HuSprScaleSet(resultCrownGrpId, i, 0.0f, 0.0f); + } + resultReorderF = 1; +} + +static void ResultSprNumSet(s16 grpId, s16 value) +{ + s16 no; + s16 bank; + if (value > 999) { + value = 999; + } + no = 0; + bank = value / 100; + if (bank != 0) { + HuSprBankSet(grpId, no, bank); + HuSprAttrReset(grpId, no, 4); + no++; + } + value -= bank * 100; + bank = value / 10; + if (bank != 0 || no == 1) { + HuSprBankSet(grpId, no, bank); + HuSprAttrReset(grpId, no, 4); + no++; + } + value -= bank * 10; + HuSprBankSet(grpId, no, value); + HuSprAttrReset(grpId, no, 4); + no++; + for (bank = no; bank < 3; bank++) { + HuSprAttrSet(grpId, bank, 4); + } +} + +static void ResultCoinAddNumSet(s16 grpId, s16 value) +{ + s16 no; + s16 bank; + if (value > 999) { + value = 999; + } + no = 2; + bank = value / 100; + if (bank != 0) { + HuSprBankSet(grpId, no, bank); + HuSprAttrReset(grpId, no, 4); + no++; + } + value -= bank * 100; + bank = value / 10; + if (bank != 0 || no == 3) { + HuSprBankSet(grpId, no, bank); + HuSprAttrReset(grpId, no, 4); + no++; + } + value -= bank * 10; + HuSprBankSet(grpId, no, value); + HuSprAttrReset(grpId, no, 4); + no++; + for (bank = no; bank < 5; bank++) { + HuSprAttrSet(grpId, bank, 4); + } +} + +static void ResultOrderSet(void) +{ + s16 i; + s16 j; + for (i = 0; i < 4; i++) { + resultRank[i] = BoardPlayerRankCalc(i); + resultOrder[i] = i; + } + for (j = 1; j < 4; j++) { + for (i = 0; i < 4 - j; i++) { + if (resultRank[i] > resultRank[i + 1]) { + s16 temp = resultRank[i]; + resultRank[i] = resultRank[i + 1]; + resultRank[i + 1] = temp; + temp = resultOrder[i]; + resultOrder[i] = resultOrder[i + 1]; + resultOrder[i + 1] = temp; + } + } + } +} + +static s32 resultBoardDirTbl[] = { DATADIR_W01, DATADIR_W02, DATADIR_W03, DATADIR_W04, DATADIR_W05, DATADIR_W06 }; + +void ResultBoardDataRead(void) +{ + s32 statId; + u32 aMemP; + if (!_CheckFlag(0x10000)) { + resultReadEndF = 1; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } + } + statId = HuDataDirReadAsync(DATADIR_BOARD); + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + aMemP = HuAR_MRAMtoARAM(DATADIR_BOARD); + if (aMemP) { + while (HuARDMACheck()) { + HuPrcVSleep(); + } + } + HuDataDirClose(DATADIR_BOARD); + statId = HuDataDirReadAsync(resultBoardDirTbl[GWSystem.board]); + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + resultReadEndF = 1; + HuPrcEnd(); + while (1) { + HuPrcVSleep(); + } +} + +void ResultCoinAdd(void) +{ + s16 i; + s16 coinNum[5]; + ResultCoinNumGet(coinNum); + coinNum[resultBonusPlayer] += coinNum[4]; + for (i = 0; i < 4; i++) { + GWCoinsAdd(i, coinNum[i]); + GWPlayerCoinWinSet(i, 0); + GWPlayerCoinCollectSet(i, 0); + if (mgInfoTbl[GWSystem.mg_next].type != 4) { + GWPlayer[i].coins_mg += coinNum[i]; + if (GWPlayer[i].coins_mg > 9999) { + GWPlayer[i].coins_mg = 9999; + } + } + } +} + +void ResultCoinNumGet(s16 *coinNum) +{ + s16 i; + s32 coin; + u32 coinMul; + u32 coin_battle; + s16 unkRankF; + s16 mgType; + float scale[4]; + s16 rank[4]; + mgType = mgInfoTbl[GWSystem.mg_next].type; + switch (mgType) { + case 4: + unkRankF = 0; + for (i = coin_battle = 0; i < 4; i++) { + coin_battle += GWPlayerCoinBattleGet(i); + } + rank[0] = rank[1] = rank[2] = rank[3] = 0; + for (i = 0; i < 4; i++) { + rank[GWPlayerCoinWinGet(i)]++; + } + scale[0] = scale[1] = scale[2] = scale[3] = 0; + if (rank[0] == 1 && rank[1] == 1 && rank[2] == 1) { + scale[0] = 0.7f; + scale[1] = 0.3f; + } + else if (rank[0] == 2) { + scale[0] = 0.5f; + } + else if (rank[0] == 3) { + scale[0] = 0.3333333f; + } + else if (rank[0] == 1 && rank[1] == 2) { + scale[0] = 0.6f; + scale[1] = 0.2f; + } + else if (rank[0] == 1 && rank[1] == 3) { + scale[0] = 0.7f; + scale[1] = 0.1f; + } + else if (rank[0] == 1 && rank[1] == 1 && rank[2] == 2) { + scale[0] = 0.7f; + scale[1] = 0.3f; + } + else if (rank[0] == 4) { + scale[0] = 0.25f; + } + else { + unkRankF = 1; + } + for (i = coin = 0; i < 4; i++) { + if (!unkRankF) { + coinMul = coin_battle * scale[GWPlayerCoinWinGet(i)]; + } + else { + coinMul = GWPlayerCoinBattleGet(i); + } + coinNum[i] = coinMul; + coin += coinMul; + } + if (coin < coin_battle) { + coinNum[4] = coin_battle - coin; + } + else { + coinNum[4] = 0; + } + break; + + default: + for (i = 0; i < 4; i++) { + coin = GWPlayerCoinWinGet(i) + GWPlayerCoinCollectGet(i); + coinMul = GWLuckyValueGet(); + if (coinMul == 0) { + coinMul = 1; + } + coin *= coinMul; + coinNum[i] = coin; + } + break; + } +} + +static void SaveExec(void) +{ + s16 sprId; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + espInit(); + HuPrcVSleep(); + sprId = espEntry(0x860020, 5000, 0); + espPosSet(sprId, 288.0, 240.0); + espAttrReset(sprId, HUSPR_ATTR_DISPOFF); + Hu3DBGColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } + if (GWSaveModeGet() == 2) { + GWSaveModeSet(1); + } + if (GWPartyGet() == 1) { + GWGameStat.party_continue = 1; + SLSaveBoard(); + } + else { + GWGameStat.story_continue = 1; + SLSaveBoardStory(); + } + SLCommonSet(); + if (SLSave()) { + saveExecF = 1; + } + else { + GWSaveModeSet(1); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet()) { + HuPrcVSleep(); + } +} + +static s32 resultCharMdlTbl[] = { DATADIR_MARIOMDL1, DATADIR_LUIGIMDL1, DATADIR_PEACHMDL1, DATADIR_YOSHIMDL1, DATADIR_WARIOMDL1, DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, DATADIR_WALUIGIMDL1 }; + +static Vec resultTeamCharPosTbl[] = { + { 160, 185, 500 }, + { 240, 185, 500 }, + { 160, 355, 500 }, + { 240, 355, 500 }, }; -Vec lbl_1_data_408[4] = { - { 148, 132, 500 }, - { 148, 217, 500 }, - { 148, 302, 500 }, - { 148, 387, 500 } -}; - -s16 lbl_1_data_438[] = { - 164, 148, - 164, 233, - 164, 318, - 164, 403 -}; - -void fn_1_3B50(s16 group, s16 value); -void fn_1_3CAC(s16 group, s16 value); - -void fn_1_3E08(void); - -void fn_1_B78(void) +static void ResultTeamExec(void) { - Vec pos; - s16 sp8[5]; - s16 i; - s16 j; - s16 character; - AnimData *anim; - s16 sprite; - s16 group; - s16 model; - AnimData *anim2; - AnimData *anim3; - AnimData *anim4; - - fn_1_8FF8(lbl_1_data_0); - lbl_1_data_2A4[0].datanum = lbl_1_data_3A8[mgInfoTbl[lbl_1_bss_17C].type]; - lbl_1_data_2A4[1].datanum = lbl_1_data_3C0[mgInfoTbl[lbl_1_bss_17C].type]; - fn_1_927C(lbl_1_data_2A4); - espDrawNoSet(lbl_1_bss_1A1A[0], 127); - anim = HuSprAnimReadFile(0x6F001B); - for(i=0; i<8; i++) { - lbl_1_bss_CE[i] = HuSprGrpCreate(3); - lbl_1_bss_9E[i][0] = HuSprCreate(anim, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_CE[i], 0, lbl_1_bss_9E[i][0]); - HuSprPosSet(lbl_1_bss_CE[i], 0, -28.0f, 0.0f); - lbl_1_bss_9E[i][1] = HuSprCreate(anim, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_CE[i], 1, lbl_1_bss_9E[i][1]); - HuSprPosSet(lbl_1_bss_CE[i], 1, 0.0f, 0.0f); - lbl_1_bss_9E[i][2] = HuSprCreate(anim, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_CE[i], 2, lbl_1_bss_9E[i][2]); - HuSprPosSet(lbl_1_bss_CE[i], 2, 28.0f, 0.0f); - HuSprGrpPosSet(lbl_1_bss_CE[i], lbl_1_data_3D8[(i*2)], lbl_1_data_3D8[(i*2)+1]); - fn_1_3B50(lbl_1_bss_CE[i], 999); - } - fn_1_3E08(); - fn_1_423C(sp8); - anim = HuSprAnimReadFile(0x6F003A); - anim3 = HuSprAnimReadFile(0x6F003B); - anim2 = HuSprAnimReadFile(0x6F003C); - anim4 = HuSprAnimReadFile(0x6F003E); - for(i=0; i<4; i++) { - lbl_1_bss_3A[i] = HuSprGrpCreate(5); - if(sp8[lbl_1_bss_4A[i]] < 100) { - lbl_1_bss_12[i][0] = HuSprCreate(anim, 10, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[i], 0, lbl_1_bss_12[i][0]); - HuSprPosSet(lbl_1_bss_3A[i], 0, 30.0f, -25.0f); - } else { - lbl_1_bss_12[i][0] = HuSprCreate(anim4, 10, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[i], 0, lbl_1_bss_12[i][0]); - HuSprPosSet(lbl_1_bss_3A[i], 0, 40.0f, -21.0f); - } - lbl_1_bss_12[i][1] = HuSprCreate(anim3, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[i], 1, lbl_1_bss_12[i][1]); - HuSprPosSet(lbl_1_bss_3A[i], 1, 12.0f, -25.0f); - lbl_1_bss_12[i][2] = HuSprCreate(anim2, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[i], 2, lbl_1_bss_12[i][2]); - HuSprPosSet(lbl_1_bss_3A[i], 2, 28.0f, -25.0f); - lbl_1_bss_12[i][3] = HuSprCreate(anim2, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[i], 3, lbl_1_bss_12[i][3]); - HuSprPosSet(lbl_1_bss_3A[i], 3, 44.0f, -25.0f); - lbl_1_bss_12[i][4] = HuSprCreate(anim2, 0, 0); - HuSprGrpMemberSet(lbl_1_bss_3A[i], 4, lbl_1_bss_12[i][4]); - HuSprPosSet(lbl_1_bss_3A[i], 4, 60.0f, -25.0f); - HuSprGrpPosSet(lbl_1_bss_3A[i], lbl_1_data_438[(i*2)], lbl_1_data_438[(i*2)+1]); - fn_1_3CAC(lbl_1_bss_3A[i], 9); - HuSprGrpScaleSet(lbl_1_bss_3A[i], 0.0f, 0.0f); - } - for(i=0; i<4; i++) { - character = GWPlayerCfg[i].character; - lbl_1_bss_E4[character][0] = HuSprAnimReadFile(0x6F0022+(character*3)); - lbl_1_bss_E4[character][1] = HuSprAnimReadFile(0x6F0023+(character*3)); - lbl_1_bss_E4[character][2] = HuSprAnimReadFile(0x6F0024+(character*3)); - for(j=0; j<4; j++) { - lbl_1_bss_5C[character][j] = Hu3DModelCreateFile(0x6F0000+j); - Hu3DModelScaleSet(lbl_1_bss_5C[character][j], 1.1f, 1.1f, 1.1f); - Hu3DAnimCreate(lbl_1_bss_E4[character][0], lbl_1_bss_5C[character][j], "ys22"); - Hu3DModelAttrSet(lbl_1_bss_5C[character][j], 1); - } - } - for(i=0; i<4; i++) { - lbl_1_bss_144[i] = HuSprAnimReadFile(0x6F0016+i); - } - lbl_1_bss_52 = HuSprGrpCreate(4); - for(i=0; i<4; i++) { - sprite = HuSprCreate(lbl_1_bss_144[lbl_1_bss_42[i]], i, 0); - HuSprGrpMemberSet(lbl_1_bss_52, i, sprite); - HuSprPosSet(lbl_1_bss_52, i, lbl_1_data_3F8[(i*2)], lbl_1_data_3F8[(i*2)+1]); - fn_1_3B50(lbl_1_bss_CE[(i*2)], GWStarsGet(lbl_1_bss_4A[i])); - fn_1_3B50(lbl_1_bss_CE[(i*2)+1], BoardPlayerCoinsGet(lbl_1_bss_4A[i])); - character = GWPlayerCfg[lbl_1_bss_4A[i]].character; - Hu3D2Dto3D(&lbl_1_data_408[i], 1, &pos); - Hu3DModelPosSetV(lbl_1_bss_5C[character][lbl_1_bss_42[i]], &pos); - Hu3DModelAttrReset(lbl_1_bss_5C[character][lbl_1_bss_42[i]], 1); - } - for(i=4; i<=11; i++) { - Hu3D2Dto3D(&lbl_1_data_0[i].pos, 1, &pos); - Hu3DModelPosSetV(lbl_1_bss_1A9C[i], &pos); - Hu3D3Dto2D(&pos, 1, &pos); - } - model = Hu3DModelCreateFile(0x6F0004); - for(i=0; i<4; i++) { - j = Hu3DModelLink(model); - lbl_1_bss_168[i] = j; - pos = lbl_1_data_408[i]; - pos.x += 5.0f; - pos.y += 3.0f; - pos.z += 200.0f; - Hu3D2Dto3D(&pos, 1, &pos); - Hu3DModelPosSetV(j, &pos); - Hu3DModelScaleSet(j, 1.5f, 1.5f, 1.5f); - } - Hu3DModelAttrSet(model, 1); - model = Hu3DModelCreateFile(0x6F0007); - for(i=0; i<8; i++) { - j = Hu3DModelLink(model); - lbl_1_bss_158[i] = j; - pos = lbl_1_data_0[i+4].pos; - pos.x += 5.0f; - pos.y += 3.0f; - pos.z += 200.0f; - Hu3D2Dto3D(&pos, 1, &pos); - Hu3DModelPosSetV(j, &pos); - Hu3DModelScaleSet(j, 1.5f, 1.5f, 1.5f); - } - Hu3DModelAttrSet(model, 1); - lbl_1_bss_E0 = HuSprAnimReadFile(0x6F001C); - lbl_1_bss_9C = HuSprGrpCreate(4); - for(i=0; i<4; i++) { - sprite = HuSprCreate(lbl_1_bss_E0, i, 0); - HuSprGrpMemberSet(lbl_1_bss_9C, i, sprite); - HuSprScaleSet(lbl_1_bss_9C, i, 0.0f, 0.0f); - HuSprPosSet(lbl_1_bss_9C, i, lbl_1_data_408[i].x-4.0f, lbl_1_data_408[i].y-35.0f); - HuSprAttrSet(lbl_1_bss_9C, i, 4); - } - group = HuSprGrpCreate(4); - lbl_1_bss_170 = group; - anim = HuSprAnimReadFile(0x6F003F); - sprite = HuSprCreate(anim, 100, 0); - HuSprGrpMemberSet(group, 0, sprite); - HuSprAttrSet(group, 0, 4); - HuSprDrawNoSet(group, 0, 127); - anim = HuSprAnimReadFile(0x6F0040); - sprite = HuSprCreate(anim, 90, 0); - HuSprGrpMemberSet(group, 1, sprite); - HuSprAttrSet(group, 1, 4); - anim = HuSprAnimReadFile(0x6F0041); - sprite = HuSprCreate(anim, 80, 0); - HuSprGrpMemberSet(group, 2, sprite); - HuSprAttrSet(group, 2, 4); - HuSprDrawNoSet(group, 2, 127); - anim = HuSprAnimReadFile(0x6F0042); - sprite = HuSprCreate(anim, 80, 0); - HuSprGrpMemberSet(group, 3, sprite); - HuSprAttrSet(group, 3, 4); - HuSprDrawNoSet(group, 3, 127); - (void)sprite; + s16 i; + s16 temp; + s16 winId; + s16 player; + s16 j; + s16 cubeMdlId; + s16 teamNo; + Vec pos3D; + Vec pos2D; + s16 charNo[4]; + s16 coinNum[2]; + s16 starNum[2]; + s16 teamYPos[2]; + s16 teamPlayerNo[2]; + s16 rank[2]; + AnimData *rankAnim; + s32 cubeNo; + s16 rankGrpId; + s16 rankSprId; + s16 btnDown; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + espAttrSet(stageSprId[0], HUSPR_ATTR_DISPOFF); + espAttrSet(stageSprId[1], HUSPR_ATTR_DISPOFF); + for (i = 0; i < 2; i++) { + Hu3DModelAttrSet(stageMdlId[i + 6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(stageMdlId[i + 10], HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 4; i++) { + espAttrSet(stageSprId[i + 6], HUSPR_ATTR_DISPOFF); + } + for (i = 4; i < 8; i++) { + Hu3DModelAttrSet(statShadowMdlId[i], HU3D_ATTR_DISPOFF); + } + for (i = 4; i < 8; i++) { + HuSprGrpTPLvlSet(resultNumGrpId[i], 0.0f); + } + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + Hu3DModelAttrSet(resultCubeMdlId[GWPlayerCfg[i].character][j], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrSet(resultPlayerCubeMdlId[i], HU3D_ATTR_DISPOFF); + } + HuSprGrpKill(resultCrownGrpId); + HuSprGrpKill(resultRankGrpId); + if (rankNewGrpId != -1) { + HuSprGrpKill(rankNewGrpId); + } + coinNum[0] = coinNum[1] = 0; + starNum[0] = starNum[1] = 0; + teamPlayerNo[0] = 0; + teamPlayerNo[1] = 2; + for (i = 0; i < 4; i++) { + teamNo = GWPlayer[i].team; + coinNum[teamNo] += BoardPlayerCoinsGet(i); + starNum[teamNo] += GWStarsGet(i); + charNo[teamPlayerNo[teamNo]++] = GWPlayerCfg[i].character; + } + rank[0] = 0; + rank[1] = 1; + if (starNum[0] > starNum[1]) { + resultTeamOrder = 0; + } + else { + if (starNum[0] == starNum[1]) { + if (coinNum[0] > coinNum[1]) { + resultTeamOrder = 0; + } + else if (coinNum[0] == coinNum[1]) { + rank[0] = rank[1] = 0; + resultTeamOrder = 0; + } + else { + resultTeamOrder = 1; + } + } + else { + resultTeamOrder = 1; + } + } + HuSprAttrReset(teamResultGrpId, 0, 4); + HuSprAttrReset(teamResultGrpId, 1, 4); + HuSprPosSet(teamResultGrpId, 1, 0, -180); + HuSprAttrReset(teamResultGrpId, 2, 4); + HuSprAttrReset(teamResultGrpId, 3, 4); + if (resultTeamOrder == 0) { + teamYPos[0] = -55; + teamYPos[1] = 115; + } + else { + teamYPos[0] = 115; + teamYPos[1] = -55; + temp = charNo[0]; + charNo[0] = charNo[2]; + charNo[2] = temp; + temp = charNo[1]; + charNo[1] = charNo[3]; + charNo[3] = temp; + temp = coinNum[0]; + coinNum[0] = coinNum[1]; + coinNum[1] = temp; + temp = starNum[0]; + starNum[0] = starNum[1]; + starNum[1] = temp; + } + HuSprPosSet(teamResultGrpId, 2, 0, teamYPos[0]); + HuSprPosSet(teamResultGrpId, 3, 0, teamYPos[1]); + HuSprGrpPosSet(teamResultGrpId, 288, 240); + for (i = 0; i < 4; i++) { + if (i < 2) { + cubeNo = 0; + } + else { + cubeNo = 1; + } + cubeMdlId = resultCubeMdlId[charNo[i]][cubeNo]; + Hu3DAnimCreate(resultCharAnim[charNo[i]][0], cubeMdlId, "ys22"); + Hu3DModelAttrReset(cubeMdlId, HU3D_ATTR_DISPOFF); + Hu3D2Dto3D(&resultTeamCharPosTbl[i], 1, &pos3D); + Hu3DModelPosSetV(cubeMdlId, &pos3D); + Hu3DModelRotSet(cubeMdlId, 0, 0, 0); + pos2D = resultTeamCharPosTbl[i]; + pos2D.y += 5.0f; + pos2D.x += 3.0f; + pos2D.z += 200.0f; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + Hu3DModelPosSetV(charShadowMdlId[i], &pos3D); + } + rankGrpId = HuSprGrpCreate(2); + for (i = 0; i < 2; i++) { + rankAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x16) + rank[i]); + rankSprId = HuSprCreate(rankAnim, i, 0); + HuSprGrpMemberSet(rankGrpId, i, rankSprId); + HuSprPosSet(rankGrpId, i, (resultTeamCharPosTbl[i * 2].x) - 80.0f, resultTeamCharPosTbl[i * 2].y); + pos2D = resultTeamCharPosTbl[i * 2]; + pos2D.x += 180.0f; + pos2D.y -= 35.0f; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + Hu3DModelPosSetV(stageMdlId[i + 4], &pos3D); + pos2D.y += 5.0f; + pos2D.x += 3.0f; + pos2D.z += 200.0f; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + Hu3DModelPosSetV(statShadowMdlId[i * 2], &pos3D); + espPosSet(stageSprId[(i * 2) + 2], 230.0f + resultTeamCharPosTbl[i * 2].x, resultTeamCharPosTbl[i * 2].y - 35.0f); + ResultSprNumSet(resultNumGrpId[i * 2], starNum[i]); + HuSprGrpPosSet(resultNumGrpId[i * 2], 320.0f + resultTeamCharPosTbl[i * 2].x, resultTeamCharPosTbl[i * 2].y - 35.0f); + pos2D = resultTeamCharPosTbl[i * 2]; + pos2D.x += 180.0f; + pos2D.y += 35.0f; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + Hu3DModelPosSetV(stageMdlId[i + 8], &pos3D); + pos2D.y += 5.0f; + pos2D.x += 3.0f; + pos2D.z += 200.0f; + Hu3D2Dto3D(&pos2D, 1, &pos3D); + Hu3DModelPosSetV(statShadowMdlId[(i * 2) + 1], &pos3D); + espPosSet(stageSprId[(i * 2) + 3], 230.0f + resultTeamCharPosTbl[i * 2].x, 35.0f + resultTeamCharPosTbl[i * 2].y); + ResultSprNumSet(resultNumGrpId[(i * 2) + 1], coinNum[i]); + HuSprGrpPosSet(resultNumGrpId[(i * 2) + 1], 320.0f + resultTeamCharPosTbl[i * 2].x, 35.0f + resultTeamCharPosTbl[i * 2].y); + } + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet()) { + HuPrcVSleep(); + } + winId = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); + HuWinMesSpeedSet(winId, 0); + HuWinBGTPLvlSet(winId, 0); + HuWinPriSet(winId, 5); + HuWinAttrSet(winId, 0x800); + HuWinMesSet(winId, MAKE_MESSID(0x24, 0x07)); + HuPrcSleep(4); + i = 0; + while (1) { + if (resultSkipF && i > 120) { + break; + } + for (player = btnDown = 0; player < 4; player++) { + if (!GWPlayerCfg[player].iscom) { + btnDown |= HuPadBtnDown[GWPlayerCfg[player].pad_idx]; + } + } + if (btnDown & PAD_BUTTON_A) { + HuAudFXPlay(28); + break; + } + HuPrcVSleep(); + i++; + } + HuWinKill(winId); } -void fn_1_1F4C(void) +void CameraDebug(omObjData *object) { - float temp_f31; - float temp_f30; - - s16 i; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s32 status; - s32 temp_r26; - s32 sp24[4]; - float sp14[4]; - s16 sp8[5]; - - - - fn_1_423C(sp8); - for(i=0; i<4; i++) { - fn_1_3CAC(lbl_1_bss_3A[i], sp8[lbl_1_bss_4A[i]]); - sp24[i] = 0; - } - temp_r29 = (lbl_1_bss_174) ? 3 : 10; - for(temp_r30=0; temp_r30<=temp_r29; temp_r30++) { - temp_f31 = sin(M_PI*((90.0/temp_r29)*temp_r30)/180.0); - for(i=0; i<4; i++) { - HuSprGrpScaleSet(lbl_1_bss_3A[i], temp_f31, temp_f31); - } - HuPrcVSleep(); - } - for(i=0; i<4; i++) { - HuSprGrpScaleSet(lbl_1_bss_3A[i], 1.0f, 1.0f); - } - for(temp_r28=0; temp_r28<=14;) { - for(i=0; i<4; i++) { - if(GWPlayerCoinWinGet(lbl_1_bss_4A[i]) >= 10) { - HuSprAttrReset(lbl_1_bss_9C, i, 4); - } - HuSprScaleSet(lbl_1_bss_9C, i, sin(M_PI*((120.0f/14.0f)*temp_r28)/180.0)*(0.8*(1.0/sin((M_PI*2)/3))), 0.8*(sin(M_PI*((120.0f/14.0f)*temp_r28)/180.0)*(1.0/sin((M_PI*2)/3)))); - } - temp_r28 += (lbl_1_bss_174) ? 2 : 1; - HuPrcVSleep(); - } - if(!lbl_1_bss_174) { - HuPrcSleep(15); - } - for(i=0; i<4; i++) { - sp14[i] = 0.0f; - } - for(i=temp_r30=0; i<4; i++) { - temp_r30 += sp8[i]; - } - status = -1; - if(temp_r30) { - status = HuAudFXPlay(23); - } - temp_r30 = 0; - temp_f30 = temp_r30; - temp_r30 = 0; - while(1) { - temp_r26 = 0 ; - temp_f30 += (lbl_1_bss_174) ? 1.0f : 0.2f; - temp_r30 = temp_f30; - for(i=temp_r29=0; i<4; i++) { - if(sp8[lbl_1_bss_4A[i]]-temp_r30 <= 0) { - if(!sp24[lbl_1_bss_4A[i]] && sp8[lbl_1_bss_4A[i]] != 0) { - sp24[lbl_1_bss_4A[i]] = 1; - if(!temp_r26) { - HuAudFXPlay(9); - temp_r26 = 1; - } - } - - temp_r29++; - fn_1_3CAC(lbl_1_bss_3A[i], 0); - fn_1_3B50(lbl_1_bss_CE[(i*2)+1], sp8[lbl_1_bss_4A[i]]+BoardPlayerCoinsGet(lbl_1_bss_4A[i])); - if(!sp14[i]) { - continue; - } - sp14[i] += 20.0f; - if(sp14[i] >= 360.0f) { - sp14[i] -= 360.0f; - } - Hu3DModelRotSet(lbl_1_bss_1A9C[i+8], 0.0f, sp14[i], 0.0f); - } else { - fn_1_3CAC(lbl_1_bss_3A[i], sp8[lbl_1_bss_4A[i]]-temp_r30); - fn_1_3B50(lbl_1_bss_CE[(i*2)+1], (s32)temp_r30+BoardPlayerCoinsGet(lbl_1_bss_4A[i])); - sp14[i] += 20.0f; - if(sp14[i] >= 360.0f) { - sp14[i] -= 360.0f; - } - Hu3DModelRotSet(lbl_1_bss_1A9C[i+8], 0.0f, sp14[i], 0.0f); - } - } - if(temp_r29 == 4) { - break; - } - HuPrcVSleep(); - } - if(status != -1) { - HuAudFXStop(status); - } - temp_r29 = 0; - while(1) { - for(i=temp_r30=0; i<4; i++) { - if(sp14[i]) { - sp14[i] += 20.0f; - if(sp14[i] >= 360.0f) { - sp14[i] -= 360.0f; - } - Hu3DModelRotSet(lbl_1_bss_1A9C[i+8], 0.0f, sp14[i], 0.0f); - } else { - temp_r30++; - } - } - if(temp_r30 >= 4) { - break; - } - HuPrcVSleep(); - temp_r29++; - } - if(temp_r29 < 30) { - HuPrcSleep(30-temp_r29); - } - temp_r29 = (lbl_1_bss_174) ? 3 : 10; - for(temp_r30=0; temp_r30<=temp_r29; temp_r30++) { - temp_f31 = cos(M_PI*((90.0/temp_r29)*temp_r30)/180.0); - for(i=0; i<4; i++) { - HuSprGrpScaleSet(lbl_1_bss_3A[i], temp_f31, temp_f31); - } - HuPrcVSleep(); - } - for(i=0; i<4; i++) { - HuSprGrpScaleSet(lbl_1_bss_3A[i], 0.0f, 0.0f); - } -} - -void fn_1_2ADC(void) -{ - float temp_f31; - s16 i; - s16 temp_r30; - s16 temp_r29; - s16 temp_r28; - s16 temp_r27; - s16 temp_r26; - s16 temp_r25; - s16 temp_r24; - float sp54[4]; - Vec sp48; - s32 sp38[4] = { -1, -1, -1, -1 }; - s16 sp30[4]; - s16 sp28[4]; - s16 sp20[4]; - s16 sp18[4]; - s16 sp10[4]; - s16 sp8[4]; - for(i=0; i<4; i++) { - sp30[i] = sp28[i] = lbl_1_bss_4A[i]; - sp18[i] = sp20[i] = lbl_1_bss_42[i]; - sp10[i] = BoardPlayerCoinsGet(lbl_1_bss_4A[i]); - sp8[i] = GWStarsGet(lbl_1_bss_4A[i]); - } - fn_1_3E08(); - for(i=0; i<4; i++) { - if(sp30[i] != lbl_1_bss_4A[i] || sp18[i] != lbl_1_bss_42[i]) { - break; - } - } - if(i == 4) { - lbl_1_bss_0 = 1; - return; - } - lbl_1_data_380 = HuSprGrpCreate(4); - for(i=0; i<4; i++) { - temp_r24 = HuSprCreate(lbl_1_bss_144[lbl_1_bss_42[i]], i, 0); - HuSprGrpMemberSet(lbl_1_data_380, i, temp_r24); - HuSprPosSet(lbl_1_data_380, i, lbl_1_data_3F8[(i*2)], lbl_1_data_3F8[(i*2)+1]); - HuSprAttrSet(lbl_1_data_380, i, 4); - temp_r30 = GWPlayerCfg[lbl_1_bss_4A[i]].character; - lbl_1_bss_54[i] = lbl_1_bss_A[i] = Hu3DModelLink(lbl_1_bss_5C[temp_r30][lbl_1_bss_42[i]]); - Hu3D2Dto3D(&lbl_1_data_408[i], 1, &sp48); - Hu3DModelPosSetV(lbl_1_bss_A[i], &sp48); - if(sp30[i] == lbl_1_bss_4A[i] && sp18[i] == lbl_1_bss_42[i]) { - Hu3DModelAttrSet(lbl_1_bss_5C[temp_r30][sp18[i]], 1); - Hu3DModelAttrReset(lbl_1_bss_A[i], 1); - Hu3DModelScaleSet(lbl_1_bss_A[i], 1.1f, 1.1f, 1.1f); - } else { - Hu3DModelAttrSet(lbl_1_bss_A[i], 1); - } - } - for(i=0; i<4; i++) { - sp54[i] = 0; - } - temp_r25 = 0; - temp_r28 = 0; - while(1) { - for(temp_r26=i=0; i<4; i++) { - if(sp30[i] == lbl_1_bss_4A[i] && sp18[i] == lbl_1_bss_42[i]) { - temp_r26++; - fn_1_3B50(lbl_1_bss_CE[(i*2)], GWStarsGet(lbl_1_bss_4A[i])); - fn_1_3B50(lbl_1_bss_CE[(i*2)+1], BoardPlayerCoinsGet(lbl_1_bss_4A[i])); - } else { - if(temp_r28 > (i*20)) { - temp_r27 = temp_r28-(i*20); - if(temp_r27 <= 20) { - if(temp_r27 <= 10) { - HuSprScaleSet(lbl_1_bss_52, i, 1.0f, cos(M_PI*(9.0f*temp_r27)/180.0)); - } else { - HuSprAttrSet(lbl_1_bss_52, i, 4); - HuSprAttrReset(lbl_1_data_380, i, 4); - HuSprScaleSet(lbl_1_data_380, i, 1.0f, sin(M_PI*(9.0f*(temp_r27-10))/180.0)); - } - temp_f31 = temp_r27/20.0f; - temp_r29 = GWStarsGet(sp28[i])+(temp_f31*(GWStarsGet(lbl_1_bss_4A[i])-GWStarsGet(sp28[i]))); - fn_1_3B50(lbl_1_bss_CE[(i*2)], temp_r29); - temp_r29 = BoardPlayerCoinsGet(sp28[i])+(temp_f31*(BoardPlayerCoinsGet(lbl_1_bss_4A[i])-BoardPlayerCoinsGet(sp28[i]))); - fn_1_3B50(lbl_1_bss_CE[(i*2)+1], temp_r29); - } else { - temp_r30 = GWPlayerCfg[sp28[i]].character; - Hu3DModelAttrSet(lbl_1_bss_5C[temp_r30][sp18[i]], 1); - temp_r30 = GWPlayerCfg[lbl_1_bss_4A[i]].character; - Hu3DModelAttrReset(lbl_1_bss_A[i], 1); - Hu3DModelScaleSet(lbl_1_bss_A[i], 1.1f, 1.1f, 1.1f); - fn_1_3B50(lbl_1_bss_CE[(i*2)], GWStarsGet(lbl_1_bss_4A[i])); - fn_1_3B50(lbl_1_bss_CE[(i*2)+1], BoardPlayerCoinsGet(lbl_1_bss_4A[i])); - for(temp_r29=0; temp_r29<4; temp_r29++) { - if(sp28[temp_r29] == lbl_1_bss_4A[i]) { - break; - } - } - if(lbl_1_bss_42[i] != sp20[temp_r29]) { - if(lbl_1_bss_42[i] < sp20[temp_r29]) { - Hu3DAnimCreate(lbl_1_bss_E4[temp_r30][1], lbl_1_bss_5C[temp_r30][lbl_1_bss_42[i]], "ys22"); - } else { - Hu3DAnimCreate(lbl_1_bss_E4[temp_r30][2], lbl_1_bss_5C[temp_r30][lbl_1_bss_42[i]], "ys22"); - } - if(lbl_1_bss_42[i] == 0) { - sp38[lbl_1_bss_4A[i]] = HuAudPlayerVoicePlay(lbl_1_bss_4A[i], 293); - } - if(!temp_r25) { - temp_r25 = 1; - HuAudFXPlay(27); - } - } - sp30[i] = lbl_1_bss_4A[i]; - sp18[i] = lbl_1_bss_42[i]; - } - } - sp54[i] += 20.0f; - if(sp54[i] >= 360.0f) { - sp54[i] -= 360.0f; - } - temp_r30 = GWPlayerCfg[sp28[i]].character; - Hu3DModelRotSet(lbl_1_bss_5C[temp_r30][sp18[i]], sp54[i]/(4-i), sp54[i], 0.0f); - } - } - if(temp_r28 <= 10) { - for(i=0; i<4; i++) { - HuSprScaleSet(lbl_1_bss_9C, i, cos(M_PI*(9.0f*temp_r28)/180.0), cos(M_PI*(9.0f*temp_r28)/180.0)); - } - } else { - for(i=0; i<4; i++) { - HuSprScaleSet(lbl_1_bss_9C, i, 0.0f, 0.0f); - } - } - if(temp_r26 >= 4) { - break; - } - if(lbl_1_bss_174) { - temp_r28 += 2; - } - HuPrcVSleep(); - temp_r28++; - } - for(i=0; i<4; i++) { - HuSprScaleSet(lbl_1_bss_9C, i, 0.0f, 0.0f); - } - lbl_1_bss_0 = 1; -} - -void fn_1_3B50(s16 group, s16 value) -{ - s16 digit; - s16 digit_value; - if(value > 999) { - value = 999; - } - digit = 0; - digit_value = value/100; - if(digit_value != 0) { - HuSprBankSet(group, digit, digit_value); - HuSprAttrReset(group, digit, 4); - digit++; - } - value -= digit_value*100; - digit_value = value/10; - if(digit_value != 0 || digit == 1) { - HuSprBankSet(group, digit, digit_value); - HuSprAttrReset(group, digit, 4); - digit++; - } - value -= digit_value*10; - HuSprBankSet(group, digit, value); - HuSprAttrReset(group, digit, 4); - digit++; - for(digit_value=digit; digit_value<3; digit_value++) { - HuSprAttrSet(group, digit_value, 4); - } -} - -void fn_1_3CAC(s16 group, s16 value) -{ - s16 digit; - s16 digit_value; - if(value > 999) { - value = 999; - } - digit = 2; - digit_value = value/100; - if(digit_value != 0) { - HuSprBankSet(group, digit, digit_value); - HuSprAttrReset(group, digit, 4); - digit++; - } - value -= digit_value*100; - digit_value = value/10; - if(digit_value != 0 || digit == 3) { - HuSprBankSet(group, digit, digit_value); - HuSprAttrReset(group, digit, 4); - digit++; - } - value -= digit_value*10; - HuSprBankSet(group, digit, value); - HuSprAttrReset(group, digit, 4); - digit++; - for(digit_value=digit; digit_value<5; digit_value++) { - HuSprAttrSet(group, digit_value, 4); - } -} - -void fn_1_3E08(void) -{ - s16 i; - s16 j; - for(i=0; i<4; i++) { - lbl_1_bss_42[i] = BoardPlayerRankCalc(i); - lbl_1_bss_4A[i] = i; - } - for(j=1; j<4; j++) { - for(i=0; i<4-j; i++) { - if(lbl_1_bss_42[i] > lbl_1_bss_42[i+1]) { - s16 temp = lbl_1_bss_42[i]; - lbl_1_bss_42[i] = lbl_1_bss_42[i+1]; - lbl_1_bss_42[i+1] = temp; - temp = lbl_1_bss_4A[i]; - lbl_1_bss_4A[i] = lbl_1_bss_4A[i+1]; - lbl_1_bss_4A[i+1] = temp; - } - } - } -} - -s32 lbl_1_data_450[] = { - DATADIR_W01, - DATADIR_W02, - DATADIR_W03, - DATADIR_W04, - DATADIR_W05, - DATADIR_W06 -}; - -void fn_1_3FD8(void) -{ - s32 status; - u32 ardma; - if(!_CheckFlag(0x10000)) { - lbl_1_bss_178 = 1; - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } - } - status = HuDataDirReadAsync(DATADIR_BOARD); - if(status != -1) { - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } - } - ardma = HuAR_MRAMtoARAM(DATADIR_BOARD); - if(ardma) { - while(HuARDMACheck()) { - HuPrcVSleep(); - } - } - HuDataDirClose(DATADIR_BOARD); - status = HuDataDirReadAsync(lbl_1_data_450[GWSystem.board]); - if(status != -1) { - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } - } - lbl_1_bss_178 = 1; - HuPrcEnd(); - while(1) { - HuPrcVSleep(); - } -} - -void fn_1_40DC(void) -{ - s16 i; - s16 sp8[5]; - fn_1_423C(sp8); - sp8[lbl_1_bss_172] += sp8[4]; - for(i=0; i<4; i++) { - GWCoinsAdd(i, sp8[i]); - GWPlayerCoinWinSet(i, 0); - GWPlayerCoinCollectSet(i, 0); - if(mgInfoTbl[GWSystem.mg_next].type != 4) { - GWPlayer[i].coins_mg += sp8[i]; - if(GWPlayer[i].coins_mg > 9999) { - GWPlayer[i].coins_mg = 9999; - } - } - } -} - -void fn_1_423C(s16 *data) -{ - s16 i; - s32 coin; - u32 mul_coin; - u32 coin_battle; - s16 temp_r26; - s16 mgtype; - float sp10[4]; - s16 sp8[4]; - mgtype = mgInfoTbl[GWSystem.mg_next].type; - switch(mgtype) { - case 4: - temp_r26 = 0; - for(i=coin_battle=0; i<4; i++) { - coin_battle += GWPlayerCoinBattleGet(i); - } - sp8[0] = sp8[1] = sp8[2] = sp8[3] = 0; - for(i=0; i<4; i++) { - sp8[GWPlayerCoinWinGet(i)]++; - } - sp10[0] = sp10[1] = sp10[2] = sp10[3] = 0; - if(sp8[0] == 1 && sp8[1] == 1 && sp8[2] == 1) { - sp10[0] = 0.7f; - sp10[1] = 0.3f; - } else if(sp8[0] ==2) { - sp10[0] = 0.5f; - } else if(sp8[0] == 3) { - sp10[0] = 0.3333333f; - } else if(sp8[0] == 1 && sp8[1] == 2) { - sp10[0] = 0.6f; - sp10[1] = 0.2f; - } else if(sp8[0] == 1 && sp8[1] == 3) { - sp10[0] = 0.7f; - sp10[1] = 0.1f; - } else if(sp8[0] == 1 && sp8[1] == 1 && sp8[2] == 2) { - sp10[0] = 0.7f; - sp10[1] = 0.3f; - } else if(sp8[0] == 4) { - sp10[0] = 0.25f; - } else { - temp_r26 = 1; - } - for(i=coin=0; i<4; i++) { - if(!temp_r26) { - mul_coin = coin_battle*sp10[GWPlayerCoinWinGet(i)]; - } else { - mul_coin = GWPlayerCoinBattleGet(i); - } - data[i] = mul_coin; - coin += mul_coin; - } - if(coin < coin_battle) { - data[4] = coin_battle-coin; - } else { - data[4] = 0; - } - break; - - default: - for(i=0; i<4; i++) { - coin = GWPlayerCoinWinGet(i)+GWPlayerCoinCollectGet(i); - mul_coin = GWLuckyValueGet(); - if(mul_coin == 0) { - mul_coin = 1; - } - coin *= mul_coin; - data[i] = coin; - } - break; - } -} - -void fn_1_461C(void) -{ - s16 sprite; - Hu3DAllKill(); - HuSprClose(); - HuSprInit(); - espInit(); - HuPrcVSleep(); - sprite = espEntry(0x860020, 5000, 0); - espPosSet(sprite, 288.0, 240.0); - espAttrReset(sprite, 4); - Hu3DBGColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); - while(WipeStatGet()) { - HuPrcVSleep(); - } - if(GWSaveModeGet() == 2) { - GWSaveModeSet(1); - } - if(GWPartyGet() == 1) { - GWGameStat.party_continue = 1; - SLSaveBoard(); - } else { - GWGameStat.story_continue = 1; - SLSaveBoardStory(); - } - SLCommonSet(); - if(SLSave()) { - saveExecF = 1; - } else { - GWSaveModeSet(1); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - while(WipeStatGet()) { - HuPrcVSleep(); - } -} - -s32 lbl_1_data_468[] = { - DATADIR_MARIOMDL1, - DATADIR_LUIGIMDL1, - DATADIR_PEACHMDL1, - DATADIR_YOSHIMDL1, - DATADIR_WARIOMDL1, - DATADIR_DONKEYMDL1, - DATADIR_DAISYMDL1, - DATADIR_WALUIGIMDL1 -}; - -Vec lbl_1_data_488[] = { - { 160, 185, 500 }, - { 240, 185, 500 }, - { 160, 355, 500 }, - { 240, 355, 500 }, -}; - -void fn_1_47FC(void) -{ - s16 temp_r31; - s16 temp_r24; - s16 temp_r21; - s16 temp_r20; - s16 temp_r19; - s16 temp_r18; - s16 temp_r17; - Vec sp40; - Vec sp34; - s16 sp2C[4]; - s16 sp28[2]; - s16 sp24[2]; - s16 sp20[2]; - s16 sp1C[2]; - s16 sp18[2]; - AnimData *sp14; - s32 sp10; - s16 spC; - s16 spA; - s16 sp8; - WipeColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); - while(WipeStatGet()) { - HuPrcVSleep(); - } - espAttrSet(lbl_1_bss_1A1A[0], 4); - espAttrSet(lbl_1_bss_1A1A[1], 4); - for(temp_r31=0; temp_r31<2; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_1A9C[temp_r31+6], 1); - Hu3DModelAttrSet(lbl_1_bss_1A9C[temp_r31+10], 1); - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - espAttrSet(lbl_1_bss_1A1A[temp_r31+6], 4); - } - for(temp_r31=4; temp_r31<8; temp_r31++) { - Hu3DModelAttrSet(lbl_1_bss_158[temp_r31], 1); - } - for(temp_r31=4; temp_r31<8; temp_r31++) { - HuSprGrpTPLvlSet(lbl_1_bss_CE[temp_r31], 0.0f); - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - for(temp_r19=0; temp_r19<4; temp_r19++) { - Hu3DModelAttrSet(lbl_1_bss_5C[GWPlayerCfg[temp_r31].character][temp_r19], 1); - } - Hu3DModelAttrSet(lbl_1_bss_54[temp_r31], 1); - } - HuSprGrpKill(lbl_1_bss_9C); - HuSprGrpKill(lbl_1_bss_52); - if(lbl_1_data_380 != -1) { - HuSprGrpKill(lbl_1_data_380); - } - sp28[0] = sp28[1] = 0; - sp24[0] = sp24[1] = 0; - sp1C[0] = 0; - sp1C[1] = 2; - for(temp_r31=0; temp_r31<4; temp_r31++) { - temp_r17 = GWPlayer[temp_r31].team; - sp28[temp_r17] += BoardPlayerCoinsGet(temp_r31); - sp24[temp_r17] += GWStarsGet(temp_r31); - sp2C[sp1C[temp_r17]++] = GWPlayerCfg[temp_r31].character; - } - sp18[0] = 0; - sp18[1] = 1; - if(sp24[0] > sp24[1]) { - lbl_1_bss_8 = 0; - } else { - if(sp24[0] == sp24[1]) { - if(sp28[0] > sp28[1]) { - lbl_1_bss_8 =0; - } else if(sp28[0] == sp28[1]) { - sp18[0] = sp18[1] = 0; - lbl_1_bss_8 = 0; - } else { - lbl_1_bss_8 = 1; - } - } else { - lbl_1_bss_8 = 1; - } - } - HuSprAttrReset(lbl_1_bss_170, 0, 4); - HuSprAttrReset(lbl_1_bss_170, 1, 4); - HuSprPosSet(lbl_1_bss_170, 1, 0, -180); - HuSprAttrReset(lbl_1_bss_170, 2, 4); - HuSprAttrReset(lbl_1_bss_170, 3, 4); - if(lbl_1_bss_8 == 0) { - sp20[0] = -55; - sp20[1] = 115; - } else { - sp20[0] = 115; - sp20[1] = -55; - temp_r24 = sp2C[0]; - sp2C[0] = sp2C[2]; - sp2C[2] = temp_r24; - temp_r24 = sp2C[1]; - sp2C[1] = sp2C[3]; - sp2C[3] = temp_r24; - temp_r24 = sp28[0]; - sp28[0] = sp28[1]; - sp28[1] = temp_r24; - temp_r24 = sp24[0]; - sp24[0] = sp24[1]; - sp24[1] = temp_r24; - } - HuSprPosSet(lbl_1_bss_170, 2, 0, sp20[0]); - HuSprPosSet(lbl_1_bss_170, 3, 0, sp20[1]); - HuSprGrpPosSet(lbl_1_bss_170, 288, 240); - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(temp_r31 < 2) { - sp10 = 0; - } else { - sp10 = 1; - } - temp_r18 = lbl_1_bss_5C[sp2C[temp_r31]][sp10]; - Hu3DAnimCreate(lbl_1_bss_E4[sp2C[temp_r31]][0], temp_r18, "ys22"); - Hu3DModelAttrReset(temp_r18, 1); - Hu3D2Dto3D(&lbl_1_data_488[temp_r31], 1, &sp40); - Hu3DModelPosSetV(temp_r18, &sp40); - Hu3DModelRotSet(temp_r18, 0, 0, 0); - sp34 = lbl_1_data_488[temp_r31]; - sp34.y += 5.0f; - sp34.x += 3.0f; - sp34.z += 200.0f; - Hu3D2Dto3D(&sp34, 1, &sp40); - Hu3DModelPosSetV(lbl_1_bss_168[temp_r31], &sp40); - } - spC = HuSprGrpCreate(2); - for(temp_r31=0; temp_r31<2; temp_r31++) { - sp14 = HuSprAnimReadFile(0x6F0016+sp18[temp_r31]); - spA = HuSprCreate(sp14, temp_r31, 0); - HuSprGrpMemberSet(spC, temp_r31, spA); - HuSprPosSet(spC, temp_r31, (lbl_1_data_488[temp_r31*2].x)-80.0f, lbl_1_data_488[temp_r31*2].y); - sp34 = lbl_1_data_488[temp_r31*2]; - sp34.x += 180.0f; - sp34.y -= 35.0f; - Hu3D2Dto3D(&sp34, 1, &sp40); - Hu3DModelPosSetV(lbl_1_bss_1A9C[temp_r31+4], &sp40); - sp34.y += 5.0f; - sp34.x += 3.0f; - sp34.z += 200.0f; - Hu3D2Dto3D(&sp34, 1, &sp40); - Hu3DModelPosSetV(lbl_1_bss_158[temp_r31*2], &sp40); - espPosSet(lbl_1_bss_1A1A[(temp_r31*2)+2], 230.0f+lbl_1_data_488[temp_r31*2].x, lbl_1_data_488[temp_r31*2].y-35.0f); - fn_1_3B50(lbl_1_bss_CE[temp_r31*2], sp24[temp_r31]); - HuSprGrpPosSet(lbl_1_bss_CE[temp_r31*2], 320.0f+lbl_1_data_488[temp_r31*2].x, lbl_1_data_488[temp_r31*2].y-35.0f); - sp34 = lbl_1_data_488[temp_r31*2]; - sp34.x += 180.0f; - sp34.y += 35.0f; - Hu3D2Dto3D(&sp34, 1, &sp40); - Hu3DModelPosSetV(lbl_1_bss_1A9C[temp_r31+8], &sp40); - sp34.y += 5.0f; - sp34.x += 3.0f; - sp34.z += 200.0f; - Hu3D2Dto3D(&sp34, 1, &sp40); - Hu3DModelPosSetV(lbl_1_bss_158[(temp_r31*2)+1], &sp40); - espPosSet(lbl_1_bss_1A1A[(temp_r31*2)+3], 230.0f+lbl_1_data_488[temp_r31*2].x, 35.0f+lbl_1_data_488[temp_r31*2].y); - fn_1_3B50(lbl_1_bss_CE[(temp_r31*2)+1], sp28[temp_r31]); - HuSprGrpPosSet(lbl_1_bss_CE[(temp_r31*2)+1], 320.0f+lbl_1_data_488[temp_r31*2].x, 35.0f+lbl_1_data_488[temp_r31*2].y); - } - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while(WipeStatGet()) { - HuPrcVSleep(); - } - temp_r21 = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); - HuWinMesSpeedSet(temp_r21, 0); - HuWinBGTPLvlSet(temp_r21, 0); - HuWinPriSet(temp_r21, 5); - HuWinAttrSet(temp_r21, 0x800); - HuWinMesSet(temp_r21, 0x240007); - HuPrcSleep(4); - temp_r31 = 0; - while(1) { - if(lbl_1_bss_4 && temp_r31 > 120) { - break; - } - for(temp_r20=sp8=0; temp_r20<4; temp_r20++) { - if(!GWPlayerCfg[temp_r20].iscom) { - sp8 |= HuPadBtnDown[GWPlayerCfg[temp_r20].pad_idx]; - } - } - if(sp8 & PAD_BUTTON_A) { - HuAudFXPlay(28); - break; - } - HuPrcVSleep(); - temp_r31++; - } - HuWinKill(temp_r21); -} - -void fn_1_5880(omObjData *object) -{ - Vec pos; + Vec pos; Vec offset; Vec dir; - Vec y_offset; - - f32 z_rot; - s8 stick_pos; - - if(HuPadBtn[0] & PAD_BUTTON_UP) { - CRot.x += 2.0f; - } - if(HuPadBtn[0] & PAD_BUTTON_DOWN) { - CRot.x -= 2.0f; - } - if(HuPadBtn[0] & PAD_BUTTON_LEFT) { - CRot.y += 2.0f; - } - if(HuPadBtn[0] & PAD_BUTTON_RIGHT) { - CRot.y -= 2.0f; - } - if(HuPadBtnDown[0] & PAD_BUTTON_B) { - OSReport("CRot %f,%f,%f\n", CRot.x, CRot.y, CRot.z); - OSReport("Center %f,%f,%f\n", Center.x, Center.y, Center.z); - OSReport("CZoom %f\n", CZoom); - } - - CZoom += HuPadTrigL[0] / 2; - CZoom -= HuPadTrigR[0] / 2; + Vec yOfs; - pos.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))); - pos.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0))); - pos.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)))); - offset.x = Center.x - pos.x; - offset.y = Center.y - pos.y; - offset.z = Center.z - pos.z; - dir.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - dir.y = cos((M_PI * CRot.x) / 180.0); - dir.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - z_rot = CRot.z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0)) - + dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0)); + float z_rot; + s8 stickPos; - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0)) - + dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0)); - - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0)) - + (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0)) - + dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0))); + if (HuPadBtn[0] & PAD_BUTTON_UP) { + CRot.x += 2.0f; + } + if (HuPadBtn[0] & PAD_BUTTON_DOWN) { + CRot.x -= 2.0f; + } + if (HuPadBtn[0] & PAD_BUTTON_LEFT) { + CRot.y += 2.0f; + } + if (HuPadBtn[0] & PAD_BUTTON_RIGHT) { + CRot.y -= 2.0f; + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + OSReport("CRot %f,%f,%f\n", CRot.x, CRot.y, CRot.z); + OSReport("Center %f,%f,%f\n", Center.x, Center.y, Center.z); + OSReport("CZoom %f\n", CZoom); + } - PSVECCrossProduct(&dir, &offset, &offset); - PSVECNormalize(&offset, &offset); - stick_pos = (HuPadSubStkX[0] & 0xF8); - if (stick_pos != 0) { - Center.x += 0.05f * (offset.x * stick_pos); - Center.y += 0.05f * (offset.y * stick_pos); - Center.z += 0.05f * (offset.z * stick_pos); - } - PSVECNormalize(&y_offset, &offset); - stick_pos = -(HuPadSubStkY[0] & 0xF8); - if (stick_pos != 0) { - Center.x += 0.05f * (offset.x * stick_pos); - Center.y += 0.05f * (offset.y * stick_pos); - Center.z += 0.05f * (offset.z * stick_pos); - } + CZoom += HuPadTrigL[0] / 2; + CZoom -= HuPadTrigR[0] / 2; + + pos.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + pos.y = Center.y + CZoom * -sind(CRot.x); + pos.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); + offset.x = Center.x - pos.x; + offset.y = Center.y - pos.y; + offset.z = Center.z - pos.z; + dir.x = (sind(CRot.y) * sind(CRot.x)); + dir.y = cosd(CRot.x); + dir.z = (cosd(CRot.y) * sind(CRot.x)); + z_rot = CRot.z; + yOfs.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)); + + yOfs.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)); + + yOfs.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); + stickPos = (HuPadSubStkX[0] & 0xF8); + if (stickPos != 0) { + Center.x += 0.05f * (offset.x * stickPos); + Center.y += 0.05f * (offset.y * stickPos); + Center.z += 0.05f * (offset.z * stickPos); + } + VECNormalize(&yOfs, &offset); + stickPos = -(HuPadSubStkY[0] & 0xF8); + if (stickPos != 0) { + Center.x += 0.05f * (offset.x * stickPos); + Center.y += 0.05f * (offset.y * stickPos); + Center.z += 0.05f * (offset.z * stickPos); + } } diff --git a/src/REL/safDll/main.c b/src/REL/safDll/main.c index 6b58f683..8c2447d2 100644 --- a/src/REL/safDll/main.c +++ b/src/REL/safDll/main.c @@ -3,10 +3,12 @@ #include "game/gamework_data.h" #include "game/printfunc.h" #include "game/pad.h" -#include "rel_sqrt_consts.h" +#include "math.h" s32 lbl_1_data_0 = 100; +#if VERSION_NTSC s32 lbl_1_bss_0[192]; +#endif void fn_1_0(void) { diff --git a/src/REL/selmenuDll/main.c b/src/REL/selmenuDll/main.c index 29b299ae..ad413ed8 100644 --- a/src/REL/selmenuDll/main.c +++ b/src/REL/selmenuDll/main.c @@ -1,22 +1,23 @@ -#include "game/object.h" -#include "game/objsub.h" -#include "game/pad.h" -#include "game/gamework_data.h" -#include "game/hsfman.h" -#include "game/hsfdraw.h" -#include "game/wipe.h" -#include "game/flag.h" -#include "game/printfunc.h" -#include "game/minigame_seq.h" -#include "game/data.h" #include "game/board/main.h" #include "game/armem.h" #include "game/audio.h" +#include "game/data.h" +#include "game/flag.h" #include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/wipe.h" +#include "math.h" -#include "rel_sqrt_consts.h" -//MSM Definitions +// MSM Definitions static s8 *msmSeGetIndexPtr(s16 datano); static void msmMusSetMasterVolume(s32 value); @@ -28,117 +29,93 @@ static void msmMusSetMasterVolume(s32 value); #define SM_KEY_UP 0x0001 #define SM_KEY_DOWN 0x0002 -static char *smCharTbl[] = { - "Mario", - "Luigi", - "Peach", - "Yoshi", - "Wario", - "Donkey", - "Daisy", - "Waluigi" -}; +static char *smCharTbl[] = { "Mario", "Luigi", "Peach", "Yoshi", "Wario", "Donkey", "Daisy", "Waluigi" }; typedef struct sm_entry { - u16 enabled; - char *name; - OverlayID overlay; + u16 enabled; + char *name; + OverlayID overlay; } SMEntry; -static SMEntry smMenuTbl[SM_PAGE_MAX*SM_PAGE_SIZE] = { - { 1, "401:WAKUGURI DIVING", OVL_M401 }, - { 1, "402:PURURUN! BIGSLIME", OVL_M402 }, - { 1, "403:TAORERUKABE!", OVL_M403 }, - { 1, "404:CRAYON RUNNER", OVL_M404 }, - { 1, "405:MEDREY RACE", OVL_M405 }, - { 1, "406:SKI RACE", OVL_M406 }, - { 1, "407:BATTANDOMINO", OVL_M407 }, - { 1, "408:SKY DIVE", OVL_M408 }, - { 1, "409:CRAY SHOT", OVL_M409 }, - { 1, "410:JANJAN FREE THROW", OVL_M410 }, - { 1, "411:PAZZLE DE PONG", OVL_M411 }, - { 1, "412:SNOW THROW", OVL_M412 }, - { 1, "413:BOMBHEI PAZZLE!", OVL_M413 }, - { 1, "414:NERATTE UTE!", OVL_M414 }, - { 1, "415:PYONPYON STAMP", OVL_M415 }, - { 1, "416:MAMORE FIRE", OVL_M416 }, - { 1, "417:MARIO SURFER", OVL_M417 }, - { 1, "418:TAIHOU KAKURENBO", OVL_M418 }, - { 1, "419:BANANA DE KOROBASE", OVL_M419 }, - { 1, "420:WATER BATTLE", OVL_M420 }, - { 1, "421:BODY BALOON", OVL_M421 }, - { 1, "422:BELCON COIN", OVL_M422 }, - { 1, "423:GOAL AND GOAL", OVL_M423 }, - { 1, "424:CLANE CATCH", OVL_M424 }, - { 1, "425:AIR DOSSUN", OVL_M425 }, - { 1, "426:KYOROKYORO PANIC", OVL_M426 }, - { 1, "427:BOAT RACE", OVL_M427 }, - { 1, "428:THE ROCK CLIME", OVL_M428 }, - { 1, "429:TREASURE FOREST", OVL_M429 }, - { 1, "430:PARASAILING GO", OVL_M430 }, - { 1, "431:GURUGURU BOX", OVL_M431 }, - { 1, "432:PAIR DE RACE", OVL_M432 }, - { 1, "433:BEACH VOLLEY", OVL_SUBCHRSEL }, - { 1, "434:KINGYOSUKUI", OVL_M434 }, - { 1, "435:KOOPA DARTS", OVL_M435 }, - { 1, "436:KOOPANO AREGA TABETAI!", OVL_M436 }, - { 1, "437:FUSEN RAKUGO", OVL_M437 }, - { 1, "438:SYAKUNETSU WANWAN ATTACK", OVL_M438 }, - { 1, "439:GURUGURU DANGEROUS", OVL_M439 }, - { 1, "440:NEO KOOPA BAKUDAN", OVL_M440 }, - { 1, "441:HIRAHIRA CHOUCHO", OVL_M441 }, - { 1, "442:SUIMYAKU HORE2", OVL_M442 }, - { 1, "443:DRUG RACE", OVL_M443 }, - { 1, "444:MIRACLE PINBALL", OVL_M444 }, - { 1, "445:KINOPIO HAMMER", OVL_M445 }, - { 1, "446:3MAI SOROERO!", OVL_M446 }, - { 1, "447:IQ BLOCK", OVL_M447 }, - { 1, "448:FUMIKURI", OVL_M448 }, - { 1, "449:NOKO2 KOURA PAZZLE", OVL_M449 }, - { 1, "450:LAST GAME", OVL_M450 }, - { 1, "451:PAZZLE", OVL_M451 }, - { 1, "455:BURUTTE 1BAN", OVL_M455 }, - { 1, "456:MOGUTTE 1BAN", OVL_M456 }, - { 1, "457:SUMOH", OVL_M457 }, - { 1, "458:PSYCOLO BATTLE", OVL_M458 }, - { 1, "459:Dr.WARIO", OVL_M459 }, - { 1, "460:", OVL_M460 }, - { 1, "461:BOMBHEI SCRANBLE", OVL_M461 }, - { 1, "462:", OVL_M462 }, - { 1, "***:MESS CHECK", OVL_MESS }, - { 1, "***:BOARD W01", OVL_W01 }, - { 1, "***:BOARD W02", OVL_W02 }, - { 1, "***:BOARD W03", OVL_W03 }, - { 1, "***:BOARD W04", OVL_W04 }, - { 1, "***:BOARD W05", OVL_W05 }, - { 1, "***:BOARD W06", OVL_W06 }, - { 1, "***:BOARD W20", OVL_W20 }, - { 1, "***:BOARD W21", OVL_W21 }, - { 1, "***:STAFF", OVL_STAFF }, - { 1, "***:STORY TEST", OVL_MSTORY4 }, +static SMEntry smMenuTbl[SM_PAGE_MAX * SM_PAGE_SIZE] = { + { 1, "401:WAKUGURI DIVING", OVL_M401 }, + { 1, "402:PURURUN! BIGSLIME", OVL_M402 }, + { 1, "403:TAORERUKABE!", OVL_M403 }, + { 1, "404:CRAYON RUNNER", OVL_M404 }, + { 1, "405:MEDREY RACE", OVL_M405 }, + { 1, "406:SKI RACE", OVL_M406 }, + { 1, "407:BATTANDOMINO", OVL_M407 }, + { 1, "408:SKY DIVE", OVL_M408 }, + { 1, "409:CRAY SHOT", OVL_M409 }, + { 1, "410:JANJAN FREE THROW", OVL_M410 }, + { 1, "411:PAZZLE DE PONG", OVL_M411 }, + { 1, "412:SNOW THROW", OVL_M412 }, + { 1, "413:BOMBHEI PAZZLE!", OVL_M413 }, + { 1, "414:NERATTE UTE!", OVL_M414 }, + { 1, "415:PYONPYON STAMP", OVL_M415 }, + { 1, "416:MAMORE FIRE", OVL_M416 }, + { 1, "417:MARIO SURFER", OVL_M417 }, + { 1, "418:TAIHOU KAKURENBO", OVL_M418 }, + { 1, "419:BANANA DE KOROBASE", OVL_M419 }, + { 1, "420:WATER BATTLE", OVL_M420 }, + { 1, "421:BODY BALOON", OVL_M421 }, + { 1, "422:BELCON COIN", OVL_M422 }, + { 1, "423:GOAL AND GOAL", OVL_M423 }, + { 1, "424:CLANE CATCH", OVL_M424 }, + { 1, "425:AIR DOSSUN", OVL_M425 }, + { 1, "426:KYOROKYORO PANIC", OVL_M426 }, + { 1, "427:BOAT RACE", OVL_M427 }, + { 1, "428:THE ROCK CLIME", OVL_M428 }, + { 1, "429:TREASURE FOREST", OVL_M429 }, + { 1, "430:PARASAILING GO", OVL_M430 }, + { 1, "431:GURUGURU BOX", OVL_M431 }, + { 1, "432:PAIR DE RACE", OVL_M432 }, + { 1, "433:BEACH VOLLEY", OVL_SUBCHRSEL }, + { 1, "434:KINGYOSUKUI", OVL_M434 }, + { 1, "435:KOOPA DARTS", OVL_M435 }, + { 1, "436:KOOPANO AREGA TABETAI!", OVL_M436 }, + { 1, "437:FUSEN RAKUGO", OVL_M437 }, + { 1, "438:SYAKUNETSU WANWAN ATTACK", OVL_M438 }, + { 1, "439:GURUGURU DANGEROUS", OVL_M439 }, + { 1, "440:NEO KOOPA BAKUDAN", OVL_M440 }, + { 1, "441:HIRAHIRA CHOUCHO", OVL_M441 }, + { 1, "442:SUIMYAKU HORE2", OVL_M442 }, + { 1, "443:DRUG RACE", OVL_M443 }, + { 1, "444:MIRACLE PINBALL", OVL_M444 }, + { 1, "445:KINOPIO HAMMER", OVL_M445 }, + { 1, "446:3MAI SOROERO!", OVL_M446 }, + { 1, "447:IQ BLOCK", OVL_M447 }, + { 1, "448:FUMIKURI", OVL_M448 }, + { 1, "449:NOKO2 KOURA PAZZLE", OVL_M449 }, + { 1, "450:LAST GAME", OVL_M450 }, + { 1, "451:PAZZLE", OVL_M451 }, + { 1, "455:BURUTTE 1BAN", OVL_M455 }, + { 1, "456:MOGUTTE 1BAN", OVL_M456 }, + { 1, "457:SUMOH", OVL_M457 }, + { 1, "458:PSYCOLO BATTLE", OVL_M458 }, + { 1, "459:Dr.WARIO", OVL_M459 }, + { 1, "460:", OVL_M460 }, + { 1, "461:BOMBHEI SCRANBLE", OVL_M461 }, + { 1, "462:", OVL_M462 }, + { 1, "***:MESS CHECK", OVL_MESS }, + { 1, "***:BOARD W01", OVL_W01 }, + { 1, "***:BOARD W02", OVL_W02 }, + { 1, "***:BOARD W03", OVL_W03 }, + { 1, "***:BOARD W04", OVL_W04 }, + { 1, "***:BOARD W05", OVL_W05 }, + { 1, "***:BOARD W06", OVL_W06 }, + { 1, "***:BOARD W20", OVL_W20 }, + { 1, "***:BOARD W21", OVL_W21 }, + { 1, "***:STAFF", OVL_STAFF }, + { 1, "***:STORY TEST", OVL_MSTORY4 }, }; -static u32 cameraMaskTbl[] = { - ( 1 << 0 ), - ( 1 << 1 ), - ( 1 << 2 ), - ( 1 << 3 ) -}; +static u32 cameraMaskTbl[] = { (1 << 0), (1 << 1), (1 << 2), (1 << 3) }; -static u32 lbl_1_data_844[] = { - 0, 1, 2, 3, 4, 5 -}; +static u32 lbl_1_data_844[] = { 0, 1, 2, 3, 4, 5 }; -static char *dvdMusTbl[] = { - "sound/mu_016a.dvd", - "sound/mu_047a.dvd", - "sound/mu_052a.dvd", - "sound/mu_054a.dvd", - "sound/mu_101a.dvd", - "sound/mu_108a.dvd", - "sound/mu002a.dvd", - "" -}; +static char *dvdMusTbl[] = { "sound/mu_016a.dvd", "sound/mu_047a.dvd", "sound/mu_052a.dvd", "sound/mu_054a.dvd", "sound/mu_101a.dvd", + "sound/mu_108a.dvd", "sound/mu002a.dvd", "" }; static s16 smPage; static s16 smSelectPosBackup[SM_PAGE_MAX]; @@ -160,161 +137,166 @@ static void SMRand8Tick(omObjData *object); void ObjectSetup(void) { - static char *funcId = "SMOBJECTSETUP\n"; - s32 i; - Process *objman; - Vec pos, dir; - - OSReport("ObjectSetup:%08x\n", ObjectSetup); - OSReport("\n\n\n******* SMObjectSetup *********\n"); - OSReport(funcId); - objman = omInitObjMan(50, 8192); - for(i=0; i<4; i++) { - if(GWPlayerCfg[i].character >= 8) { - break; - } - } - if(i != 4) { - for(i=0; i<4; i++) { - GWPlayerCfg[i].character = i; - } - } - smMainObj = omAddObjEx(objman, 0, 0, 0, -1, SMInit); - outViewObj = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); - omAddObjEx(objman, 0, 0, 0, -1, SMRand8Tick); - outViewObj->work[0] = 4; - for(i=0; i<4; i++) { - CRotM[i].x = -20.0f; - CRotM[i].y = 0.0f; - CRotM[i].z = 0.0f; - CenterM[i].x = 0.0f; - CenterM[i].y = 50.0f; - CenterM[i].z = 0.0f; - CZoomM[i] = 500.0f; - Hu3DCameraCreate(cameraMaskTbl[i]); - Hu3DCameraPerspectiveSet(cameraMaskTbl[i], 45.0f, 20.0f, 25000.0f, 4.0f/3.0f); - Hu3DCameraViewportSet(cameraMaskTbl[i], (i%2)*320.0f, (i/2)*240.0f, 320.0f, 240.0f, 0.0f, 1.0f); - } - Hu3DGLightCreate(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, -1.0f, 255, 255, 255); - pos.x = 0.0f; - pos.y = 0.0f; - pos.z = 200.0f; - dir.x = dir.y = 0.0f; - dir.z = -1.0f; - SetDefLight(&pos, &dir, 255, 255, 255, 64, 64, 64, 255, 255, 255); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); - GWMGTypeSet(-1); - _ClearFlag(FLAG_ID_MAKE(1, 0)); - GWSystem.turn = 1; - GWSystem.max_turn = 20; + static char *funcId = "SMOBJECTSETUP\n"; + s32 i; + Process *objman; + Vec pos, dir; + + OSReport("ObjectSetup:%08x\n", ObjectSetup); + OSReport("\n\n\n******* SMObjectSetup *********\n"); + OSReport(funcId); + objman = omInitObjMan(50, 8192); + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character >= 8) { + break; + } + } + if (i != 4) { + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = i; + } + } + smMainObj = omAddObjEx(objman, 0, 0, 0, -1, SMInit); + outViewObj = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); + omAddObjEx(objman, 0, 0, 0, -1, SMRand8Tick); + outViewObj->work[0] = 4; + for (i = 0; i < 4; i++) { + CRotM[i].x = -20.0f; + CRotM[i].y = 0.0f; + CRotM[i].z = 0.0f; + CenterM[i].x = 0.0f; + CenterM[i].y = 50.0f; + CenterM[i].z = 0.0f; + CZoomM[i] = 500.0f; + Hu3DCameraCreate(cameraMaskTbl[i]); + Hu3DCameraPerspectiveSet(cameraMaskTbl[i], 45.0f, 20.0f, 25000.0f, 4.0f / 3.0f); + Hu3DCameraViewportSet(cameraMaskTbl[i], (i % 2) * 320.0f, (i / 2) * 240.0f, 320.0f, 240.0f, 0.0f, 1.0f); + } + Hu3DGLightCreate(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, -1.0f, 255, 255, 255); + pos.x = 0.0f; + pos.y = 0.0f; + pos.z = 200.0f; + dir.x = dir.y = 0.0f; + dir.z = -1.0f; + SetDefLight(&pos, &dir, 255, 255, 255, 64, 64, 64, 255, 255, 255); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + GWMGTypeSet(-1); + _ClearFlag(FLAG_ID_MAKE(1, 0)); + GWSystem.turn = 1; + GWSystem.max_turn = 20; } static void CopyPlayerCfg(PlayerConfig *dst, PlayerConfig *src) { - s32 i; - for(i=0; i<4; i++) { - *dst++ = *src++; - } + s32 i; + for (i = 0; i < 4; i++) { + *dst++ = *src++; + } } static void CalcBtns(void) { - s32 i; - keyDStk = keyDStkDown = btnDown = 0; - for(i=0; i<4; i++) { - keyDStkAll[i] = keyDStkAllDown[i] = btnDownAll[i] = 0; - if((HuPadDStkRep[i]|HuPadBtn[i]) & PAD_BUTTON_LEFT) { - keyDStkAll[i] |= SM_KEY_LEFT; - } - if((HuPadDStkRep[i]|HuPadBtn[i]) & PAD_BUTTON_RIGHT) { - keyDStkAll[i] |= SM_KEY_RIGHT; - } - if((HuPadDStkRep[i]|HuPadBtn[i]) & PAD_BUTTON_UP) { - keyDStkAll[i] |= SM_KEY_UP; - } - if((HuPadDStkRep[i]|HuPadBtn[i]) & PAD_BUTTON_DOWN) { - keyDStkAll[i] |= SM_KEY_DOWN; - } - btnDownAll[i] |= HuPadBtnDown[i]; - keyDStkAllDown[i] = (keyDStkAll[i] ^ keyDStkAllPrev[i]) & keyDStkAll[i]; - keyDStkAllPrev[i] = keyDStkAll[i]; - keyDStk |= keyDStkAll[i]; - keyDStkDown |= keyDStkAllDown[i]; - btnDown |= btnDownAll[i]; - } + s32 i; + keyDStk = keyDStkDown = btnDown = 0; + for (i = 0; i < 4; i++) { + keyDStkAll[i] = keyDStkAllDown[i] = btnDownAll[i] = 0; + if ((HuPadDStkRep[i] | HuPadBtn[i]) & PAD_BUTTON_LEFT) { + keyDStkAll[i] |= SM_KEY_LEFT; + } + if ((HuPadDStkRep[i] | HuPadBtn[i]) & PAD_BUTTON_RIGHT) { + keyDStkAll[i] |= SM_KEY_RIGHT; + } + if ((HuPadDStkRep[i] | HuPadBtn[i]) & PAD_BUTTON_UP) { + keyDStkAll[i] |= SM_KEY_UP; + } + if ((HuPadDStkRep[i] | HuPadBtn[i]) & PAD_BUTTON_DOWN) { + keyDStkAll[i] |= SM_KEY_DOWN; + } + btnDownAll[i] |= HuPadBtnDown[i]; + keyDStkAllDown[i] = (keyDStkAll[i] ^ keyDStkAllPrev[i]) & keyDStkAll[i]; + keyDStkAllPrev[i] = keyDStkAll[i]; + keyDStk |= keyDStkAll[i]; + keyDStkDown |= keyDStkAllDown[i]; + btnDown |= btnDownAll[i]; + } } static void DrawPage(void) { - s32 i; - SMEntry *entry; - fontcolor = FONT_COLOR_YELLOW; - print8(200, 160, 2.5f, "PAGE:%d/%d", smPage+1, SM_PAGE_MAX); - for(i=0; ienabled == 1) { - if(i == smSelectPos) { - fontcolor = FONT_COLOR_CYAN; - } else { - fontcolor = FONT_COLOR_GREEN; - } - } else { - fontcolor = FONT_COLOR_DARK_GREEN; - } - print8(100, (float)((i+10)*8)*2.5f, 2.5f, "%s", entry->name); - } + s32 i; + SMEntry *entry; + fontcolor = FONT_COLOR_YELLOW; + print8(200, 160, 2.5f, "PAGE:%d/%d", smPage + 1, SM_PAGE_MAX); + for (i = 0; i < SM_PAGE_SIZE; i++) { + entry = &smMenuTbl[(smPage * SM_PAGE_SIZE) + i]; + if (entry->enabled == 1) { + if (i == smSelectPos) { + fontcolor = FONT_COLOR_CYAN; + } + else { + fontcolor = FONT_COLOR_GREEN; + } + } + else { + fontcolor = FONT_COLOR_DARK_GREEN; + } + print8(100, (float)((i + 10) * 8) * 2.5f, 2.5f, "%s", entry->name); + } } static void MoveSMCursor(s16 amount); static void MoveSMPage(s16 amount) { - s16 page; - s32 i; - u16 enabled; - s16 page_old; - enabled = 0; - page = smPage; - page_old = page; - do { - page += amount; - if(page >= SM_PAGE_MAX) { - page = 0; - } else if(page < 0) { - page = SM_PAGE_MAX-1; - } - for(i=0; i= SM_PAGE_MAX) { + page = 0; + } + else if (page < 0) { + page = SM_PAGE_MAX - 1; + } + for (i = 0; i < SM_PAGE_SIZE; i++) { + if (smMenuTbl[(page * SM_PAGE_SIZE) + i].enabled == 1) { + enabled = 1; + break; + } + } + } while (!enabled); + smPage = page; + if (page_old == -1) { + smSelectPos = -1; + MoveSMCursor(1); + smSelectPosBackup[smPage] = smSelectPos; + } + else { + smSelectPosBackup[page_old] = smSelectPos; + smSelectPos = smSelectPosBackup[smPage]; + } } static void MoveSMCursor(s16 amount) { - s16 pos; - pos = smSelectPos; - do { - pos += amount; - if(pos >= SM_PAGE_SIZE) { - pos = 0; - } else if(pos < 0) { - pos = SM_PAGE_SIZE-1; - } - } while(!smMenuTbl[(smPage*SM_PAGE_SIZE)+pos].enabled); - smSelectPos = pos; - (void)pos; + s16 pos; + pos = smSelectPos; + do { + pos += amount; + if (pos >= SM_PAGE_SIZE) { + pos = 0; + } + else if (pos < 0) { + pos = SM_PAGE_SIZE - 1; + } + } while (!smMenuTbl[(smPage * SM_PAGE_SIZE) + pos].enabled); + smSelectPos = pos; + (void)pos; } static s16 SMChangeChar(s16 player, s16 offset); @@ -322,43 +304,44 @@ static void SMUpdate(omObjData *object); static void SMInit(omObjData *object) { - s32 i, j; - OSReport("SMinit:%08x\n", SMInit); - omDLLDBGOut(); - Hu3DBGColorSet(0, 0, 0); - CopyPlayerCfg(smPlayerCfg, GWPlayerCfg); - for(i=0; i<4; i++) { - for(j=i+1; j<4; j++) { - if(smPlayerCfg[i].character == smPlayerCfg[j].character) { - smPlayerCfg[j].character = SMChangeChar(j, -1); - } - } - } - smPage = -1; - for(i=0; ifunc = SMUpdate; + s32 i, j; + OSReport("SMinit:%08x\n", SMInit); + omDLLDBGOut(); + Hu3DBGColorSet(0, 0, 0); + CopyPlayerCfg(smPlayerCfg, GWPlayerCfg); + for (i = 0; i < 4; i++) { + for (j = i + 1; j < 4; j++) { + if (smPlayerCfg[i].character == smPlayerCfg[j].character) { + smPlayerCfg[j].character = SMChangeChar(j, -1); + } + } + } + smPage = -1; + for (i = 0; i < SM_PAGE_MAX; i++) { + for (j = 0; j < SM_PAGE_SIZE; j++) { + if (smMenuTbl[(i * SM_PAGE_SIZE) + j].enabled == 1) { + break; + } + } + if (j == SM_PAGE_SIZE) { + smSelectPosBackup[i] = -1; + } + else { + smSelectPosBackup[i] = j; + } + } + MoveSMPage(1); + if (mgSeqOvlPrev != OVL_INVALID) { + for (i = 0; i < SM_PAGE_MAX * SM_PAGE_SIZE; i++) { + if (mgSeqOvlPrev == smMenuTbl[i].overlay && smMenuTbl[i].enabled == 1) { + smPage = i / SM_PAGE_SIZE; + smSelectPos = i % SM_PAGE_SIZE; + smSelectPosBackup[smPage] = smSelectPos; + break; + } + } + } + object->func = SMUpdate; } static void SMGroupGen(s32 index); @@ -368,110 +351,112 @@ static void SMSound3DInit(omObjData *object); static void SMUpdate(omObjData *object) { - CalcBtns(); - DrawPage(); - if(keyDStkDown & SM_KEY_UP) { - MoveSMCursor(-1); - SMGroupGen((smPage*SM_PAGE_SIZE)+smSelectPos); - return; - } - if(keyDStkDown & SM_KEY_DOWN) { - MoveSMCursor(1); - SMGroupGen((smPage*SM_PAGE_SIZE)+smSelectPos); - return; - } - if(keyDStkDown & SM_KEY_LEFT) { - MoveSMPage(-1); - SMGroupGen((smPage*SM_PAGE_SIZE)+smSelectPos); - return; - } - if(keyDStkDown & SM_KEY_RIGHT) { - MoveSMPage(1); - SMGroupGen((smPage*SM_PAGE_SIZE)+smSelectPos); - return; - } - if((btnDown & PAD_BUTTON_A) || (btnDown & PAD_BUTTON_START)) { - object->func = SMCharInit; - return; - } - if(btnDown & PAD_BUTTON_Y) { - object->func = SMPlayerCfgInit; - return; - } - if(btnDown & PAD_TRIGGER_Z) { - object->func = SMSound3DInit; - return; - } - if(btnDown & PAD_BUTTON_X) { - omOvlReturnEx(0, 1); - } + CalcBtns(); + DrawPage(); + if (keyDStkDown & SM_KEY_UP) { + MoveSMCursor(-1); + SMGroupGen((smPage * SM_PAGE_SIZE) + smSelectPos); + return; + } + if (keyDStkDown & SM_KEY_DOWN) { + MoveSMCursor(1); + SMGroupGen((smPage * SM_PAGE_SIZE) + smSelectPos); + return; + } + if (keyDStkDown & SM_KEY_LEFT) { + MoveSMPage(-1); + SMGroupGen((smPage * SM_PAGE_SIZE) + smSelectPos); + return; + } + if (keyDStkDown & SM_KEY_RIGHT) { + MoveSMPage(1); + SMGroupGen((smPage * SM_PAGE_SIZE) + smSelectPos); + return; + } + if ((btnDown & PAD_BUTTON_A) || (btnDown & PAD_BUTTON_START)) { + object->func = SMCharInit; + return; + } + if (btnDown & PAD_BUTTON_Y) { + object->func = SMPlayerCfgInit; + return; + } + if (btnDown & PAD_TRIGGER_Z) { + object->func = SMSound3DInit; + return; + } + if (btnDown & PAD_BUTTON_X) { + omOvlReturnEx(0, 1); + } } static void SMGroupGen(s32 index) { - OverlayID overlay; - s32 i; - overlay = smMenuTbl[index].overlay; - for(i=0; i<50; i++) { - if(overlay == mgInfoTbl[i].ovl) { - break; - } - } - if(i == 50) { - for(i=0; i<4; i++) { - smPlayerCfg[i].group = i; - } - return; - } - switch(mgInfoTbl[i].type) { - case 0: - case 3: - case 4: - case 5: - case 6: - for(i=0; i<4; i++) { - smPlayerCfg[i].group = i; - } - break; - - case 1: - smPlayerCfg[0].group = 0; - for(i=1; i<4; i++) { - smPlayerCfg[i].group = 1; - } - break; - - case 2: - for(i=0; i<2; i++) { - smPlayerCfg[i].group = 0; - } - for(i=2; i<4; i++) { - smPlayerCfg[i].group = 1; - } - break; - } - if(overlay == OVL_M430) { - s32 team_cnt[2]; - s32 team_players[2][2]; - team_cnt[0] = team_cnt[1] = 0; - for(i=0; i<4; i++) { - team_players[smPlayerCfg[i].group][team_cnt[smPlayerCfg[i].group]++] = i; - } - if(frandBool()) { - GWPlayerCfg[team_players[0][0]].group = 0; - GWPlayerCfg[team_players[0][1]].group = 1; - } else { - GWPlayerCfg[team_players[0][0]].group = 1; - GWPlayerCfg[team_players[0][1]].group = 0; - } - if(frandBool()) { - GWPlayerCfg[team_players[1][0]].group = 2; - GWPlayerCfg[team_players[1][1]].group = 3; - } else { - GWPlayerCfg[team_players[1][0]].group = 3; - GWPlayerCfg[team_players[1][1]].group = 2; - } - } + OverlayID overlay; + s32 i; + overlay = smMenuTbl[index].overlay; + for (i = 0; i < 50; i++) { + if (overlay == mgInfoTbl[i].ovl) { + break; + } + } + if (i == 50) { + for (i = 0; i < 4; i++) { + smPlayerCfg[i].group = i; + } + return; + } + switch (mgInfoTbl[i].type) { + case 0: + case 3: + case 4: + case 5: + case 6: + for (i = 0; i < 4; i++) { + smPlayerCfg[i].group = i; + } + break; + + case 1: + smPlayerCfg[0].group = 0; + for (i = 1; i < 4; i++) { + smPlayerCfg[i].group = 1; + } + break; + + case 2: + for (i = 0; i < 2; i++) { + smPlayerCfg[i].group = 0; + } + for (i = 2; i < 4; i++) { + smPlayerCfg[i].group = 1; + } + break; + } + if (overlay == OVL_M430) { + s32 team_cnt[2]; + s32 team_players[2][2]; + team_cnt[0] = team_cnt[1] = 0; + for (i = 0; i < 4; i++) { + team_players[smPlayerCfg[i].group][team_cnt[smPlayerCfg[i].group]++] = i; + } + if (frandBool()) { + GWPlayerCfg[team_players[0][0]].group = 0; + GWPlayerCfg[team_players[0][1]].group = 1; + } + else { + GWPlayerCfg[team_players[0][0]].group = 1; + GWPlayerCfg[team_players[0][1]].group = 0; + } + if (frandBool()) { + GWPlayerCfg[team_players[1][0]].group = 2; + GWPlayerCfg[team_players[1][1]].group = 3; + } + else { + GWPlayerCfg[team_players[1][0]].group = 3; + GWPlayerCfg[team_players[1][1]].group = 2; + } + } } static s16 charModelID[8]; @@ -479,83 +464,83 @@ static s16 playerDoneF[4]; static s16 charSelProhibitF[8]; static s32 charMdlTbl[] = { - DATA_MAKE_NUM(DATADIR_SELMENU, 0), - DATA_MAKE_NUM(DATADIR_SELMENU, 2), - DATA_MAKE_NUM(DATADIR_SELMENU, 4), - DATA_MAKE_NUM(DATADIR_SELMENU, 6), - DATA_MAKE_NUM(DATADIR_SELMENU, 8), - DATA_MAKE_NUM(DATADIR_SELMENU, 10), - DATA_MAKE_NUM(DATADIR_SELMENU, 12), - DATA_MAKE_NUM(DATADIR_SELMENU, 14), + DATA_MAKE_NUM(DATADIR_SELMENU, 0), + DATA_MAKE_NUM(DATADIR_SELMENU, 2), + DATA_MAKE_NUM(DATADIR_SELMENU, 4), + DATA_MAKE_NUM(DATADIR_SELMENU, 6), + DATA_MAKE_NUM(DATADIR_SELMENU, 8), + DATA_MAKE_NUM(DATADIR_SELMENU, 10), + DATA_MAKE_NUM(DATADIR_SELMENU, 12), + DATA_MAKE_NUM(DATADIR_SELMENU, 14), }; static s32 charMdlMotTbl[] = { - DATA_MAKE_NUM(DATADIR_SELMENU, 1), - DATA_MAKE_NUM(DATADIR_SELMENU, 3), - DATA_MAKE_NUM(DATADIR_SELMENU, 5), - DATA_MAKE_NUM(DATADIR_SELMENU, 7), - DATA_MAKE_NUM(DATADIR_SELMENU, 9), - DATA_MAKE_NUM(DATADIR_SELMENU, 11), - DATA_MAKE_NUM(DATADIR_SELMENU, 13), - DATA_MAKE_NUM(DATADIR_SELMENU, 15), + DATA_MAKE_NUM(DATADIR_SELMENU, 1), + DATA_MAKE_NUM(DATADIR_SELMENU, 3), + DATA_MAKE_NUM(DATADIR_SELMENU, 5), + DATA_MAKE_NUM(DATADIR_SELMENU, 7), + DATA_MAKE_NUM(DATADIR_SELMENU, 9), + DATA_MAKE_NUM(DATADIR_SELMENU, 11), + DATA_MAKE_NUM(DATADIR_SELMENU, 13), + DATA_MAKE_NUM(DATADIR_SELMENU, 15), }; static s16 SMChangeChar(s16 player, s16 offset) { - s32 i; - s16 character; - for(i=0; i<8; i++) { - charSelProhibitF[i] = 0; - } - for(i=0; i<4; i++) { - if(smPlayerCfg[i].iscom) { - continue; - } - charSelProhibitF[smPlayerCfg[i].character] = 1; - } - if(!offset) { - return; - } - character = smPlayerCfg[player].character; - do { - character += offset; - if(character < 0) { - character = 7; - } - if(character >= 8) { - character = 0; - } - } while(charSelProhibitF[character] != 0); - return character; + s32 i; + s16 character; + for (i = 0; i < 8; i++) { + charSelProhibitF[i] = 0; + } + for (i = 0; i < 4; i++) { + if (smPlayerCfg[i].iscom) { + continue; + } + charSelProhibitF[smPlayerCfg[i].character] = 1; + } + if (!offset) { + return; + } + character = smPlayerCfg[player].character; + do { + character += offset; + if (character < 0) { + character = 7; + } + if (character >= 8) { + character = 0; + } + } while (charSelProhibitF[character] != 0); + return character; } static void SMCharKill(void) { - s32 i; - for(i=0; i<8; i++) { - Hu3DModelKill(charModelID[i]); - } + s32 i; + for (i = 0; i < 8; i++) { + Hu3DModelKill(charModelID[i]); + } } static void CharRandomize(void) { - s32 i; - s32 j; - s32 valid_cnt; - s32 valid_list[8]; - for(i=0; i<4; i++) { - valid_cnt = 0; - for(j=0; j<8; j++) { - if(charSelProhibitF[j]) { - continue; - } - valid_list[valid_cnt++] = j; - } - if(smPlayerCfg[i].iscom == 1) { - smPlayerCfg[i].character = valid_list[rand8() % valid_cnt]; - charSelProhibitF[smPlayerCfg[i].character] = 1; - } - } + s32 i; + s32 j; + s32 valid_cnt; + s32 valid_list[8]; + for (i = 0; i < 4; i++) { + valid_cnt = 0; + for (j = 0; j < 8; j++) { + if (charSelProhibitF[j]) { + continue; + } + valid_list[valid_cnt++] = j; + } + if (smPlayerCfg[i].iscom == 1) { + smPlayerCfg[i].character = valid_list[rand8() % valid_cnt]; + charSelProhibitF[smPlayerCfg[i].character] = 1; + } + } } static void SMCharUpdate(omObjData *object); @@ -563,230 +548,233 @@ static void SMExit(omObjData *object); static void SMCharInit(omObjData *object) { - s32 i; - for(i=0; i<8; i++) { - void *data = HuDataSelHeapReadNum(charMdlTbl[i], MEMORY_DEFAULT_NUM, HEAP_DATA); - charModelID[i] = Hu3DModelCreate(data); - Hu3DModelPosSet(charModelID[i], 0.0f, 0.0f, 0.0f); - Hu3DModelAttrSet(charModelID[i], 0x40000001); - Hu3DMotionSet(charModelID[i], Hu3DJointMotion(charModelID[i], HuDataSelHeapReadNum(charMdlMotTbl[i], MEMORY_DEFAULT_NUM, HEAP_DATA))); - } - for(i=0; i<4; i++) { - playerDoneF[i] = 0; - } - SMChangeChar(0, 0); - object->func = SMCharUpdate; + s32 i; + for (i = 0; i < 8; i++) { + void *data = HuDataSelHeapReadNum(charMdlTbl[i], MEMORY_DEFAULT_NUM, HEAP_DATA); + charModelID[i] = Hu3DModelCreate(data); + Hu3DModelPosSet(charModelID[i], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(charModelID[i], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(charModelID[i], Hu3DJointMotionFile(charModelID[i], charMdlMotTbl[i])); + } + for (i = 0; i < 4; i++) { + playerDoneF[i] = 0; + } + SMChangeChar(0, 0); + object->func = SMCharUpdate; } static void SMCharUpdate(omObjData *object) { - s32 i; - - s16 port; - s32 j; - s16 w; - s16 x; - s16 y; - s16 done_players; - s16 num_players; - - for(i=0; i<8; i++) { - Hu3DModelAttrSet(charModelID[i], 0x1); - } - for(i=0; i<4; i++) { - if(!smPlayerCfg[i].iscom) { - Hu3DModelAttrReset(charModelID[smPlayerCfg[i].character], 0x1); - Hu3DModelCameraSet(charModelID[smPlayerCfg[i].character], cameraMaskTbl[i]); - } - } - for(i=0, done_players=0, num_players=0; i<4; i++) { - if(playerDoneF[i] == 1) { - done_players++; - } - if(!smPlayerCfg[i].iscom) { - num_players++; - } - } - if(done_players == num_players) { - SMChangeChar(0, 0); - CharRandomize(); - CopyPlayerCfg(GWPlayerCfg, smPlayerCfg); - CharKill(-1); - OSReport("%d,%d,%d,%d\n", GWPlayerCfg[0].character, - GWPlayerCfg[1].character, - GWPlayerCfg[2].character, - GWPlayerCfg[3].character); - if(!CharAMemPtrGet(GWPlayerCfg[0].character)) { - CharARAMOpen(GWPlayerCfg[0].character); - } - if(!CharAMemPtrGet(GWPlayerCfg[1].character)) { - CharARAMOpen(GWPlayerCfg[1].character); - } - if(!CharAMemPtrGet(GWPlayerCfg[2].character)) { - CharARAMOpen(GWPlayerCfg[2].character); - } - if(!CharAMemPtrGet(GWPlayerCfg[3].character)) { - CharARAMOpen(GWPlayerCfg[3].character); - } - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); - object->func = SMExit; - } - CalcBtns(); - for(i=0; i<4; i++) { - port = smPlayerCfg[i].pad_idx; - if(!playerDoneF[i]) { - if(keyDStkAllDown[port] & SM_KEY_LEFT) { - smPlayerCfg[port].character = SMChangeChar(i, -1); - } - if(keyDStkAllDown[port] & SM_KEY_RIGHT) { - smPlayerCfg[port].character = SMChangeChar(i, 1); - } - if(btnDownAll[port] & PAD_BUTTON_A) { - playerDoneF[i] = 1; - } - } - if(HuPadBtnDown[port] & PAD_BUTTON_B) { - if(done_players != 0) { - playerDoneF[i] = 0; - } else { - SMCharKill(); - object->func = SMUpdate; - return; - } - } - if(btnDownAll[port] & PAD_BUTTON_START) { - for(j=0; j<4; j++) { - if(!smPlayerCfg[j].iscom) { - playerDoneF[j] = 1; - } - } - return; - } - if(!smPlayerCfg[i].iscom) { - w = strlen(smCharTbl[smPlayerCfg[i].character]); - w *= 16; - x = ((320-w)/2)+((i%2)*320); - y = 176+((i/2)*240); - if(playerDoneF[i] == 1) { - fontcolor = FONT_COLOR_WHITE; - print8(x, y, 2.0f, "\xFD\x08""%s", smCharTbl[smPlayerCfg[i].character]); - } else { - fontcolor = FONT_COLOR_GREEN; - print8(x, y, 2.0f, "\xFD\x05""%s", smCharTbl[smPlayerCfg[i].character]); - } - } else { - w = 72; - x = ((320-w)/2)+((i%2)*320); - y = 108+((i/2)*240); - fontcolor = FONT_COLOR_YELLOW; - print8(x, y, 3.0f, "\xFD\x07""COM"); - } - } + s32 i; + + s16 port; + s32 j; + s16 w; + s16 x; + s16 y; + s16 done_players; + s16 num_players; + + for (i = 0; i < 8; i++) { + Hu3DModelAttrSet(charModelID[i], HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 4; i++) { + if (!smPlayerCfg[i].iscom) { + Hu3DModelAttrReset(charModelID[smPlayerCfg[i].character], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(charModelID[smPlayerCfg[i].character], cameraMaskTbl[i]); + } + } + for (i = 0, done_players = 0, num_players = 0; i < 4; i++) { + if (playerDoneF[i] == 1) { + done_players++; + } + if (!smPlayerCfg[i].iscom) { + num_players++; + } + } + if (done_players == num_players) { + SMChangeChar(0, 0); + CharRandomize(); + CopyPlayerCfg(GWPlayerCfg, smPlayerCfg); + CharKill(-1); + OSReport("%d,%d,%d,%d\n", GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, GWPlayerCfg[3].character); + if (!CharAMemPtrGet(GWPlayerCfg[0].character)) { + CharARAMOpen(GWPlayerCfg[0].character); + } + if (!CharAMemPtrGet(GWPlayerCfg[1].character)) { + CharARAMOpen(GWPlayerCfg[1].character); + } + if (!CharAMemPtrGet(GWPlayerCfg[2].character)) { + CharARAMOpen(GWPlayerCfg[2].character); + } + if (!CharAMemPtrGet(GWPlayerCfg[3].character)) { + CharARAMOpen(GWPlayerCfg[3].character); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + object->func = SMExit; + } + CalcBtns(); + for (i = 0; i < 4; i++) { + port = smPlayerCfg[i].pad_idx; + if (!playerDoneF[i]) { + if (keyDStkAllDown[port] & SM_KEY_LEFT) { + smPlayerCfg[port].character = SMChangeChar(i, -1); + } + if (keyDStkAllDown[port] & SM_KEY_RIGHT) { + smPlayerCfg[port].character = SMChangeChar(i, 1); + } + if (btnDownAll[port] & PAD_BUTTON_A) { + playerDoneF[i] = 1; + } + } + if (HuPadBtnDown[port] & PAD_BUTTON_B) { + if (done_players != 0) { + playerDoneF[i] = 0; + } + else { + SMCharKill(); + object->func = SMUpdate; + return; + } + } + if (btnDownAll[port] & PAD_BUTTON_START) { + for (j = 0; j < 4; j++) { + if (!smPlayerCfg[j].iscom) { + playerDoneF[j] = 1; + } + } + return; + } + if (!smPlayerCfg[i].iscom) { + w = strlen(smCharTbl[smPlayerCfg[i].character]); + w *= 16; + x = ((320 - w) / 2) + ((i % 2) * 320); + y = 176 + ((i / 2) * 240); + if (playerDoneF[i] == 1) { + fontcolor = FONT_COLOR_WHITE; + print8(x, y, 2.0f, + "\xFD\x08" + "%s", + smCharTbl[smPlayerCfg[i].character]); + } + else { + fontcolor = FONT_COLOR_GREEN; + print8(x, y, 2.0f, + "\xFD\x05" + "%s", + smCharTbl[smPlayerCfg[i].character]); + } + } + else { + w = 72; + x = ((320 - w) / 2) + ((i % 2) * 320); + y = 108 + ((i / 2) * 240); + fontcolor = FONT_COLOR_YELLOW; + print8(x, y, 3.0f, + "\xFD\x07" + "COM"); + } + } } static void SMExit(omObjData *object) { - s32 mg; - if(WipeStatGet()) { - return; - } - while(HuARDMACheck()); - mg = omMgIndexGet(smMenuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay); - GWSystem.mg_next = mg; - OSReport("mgNo=%d\n", mg); - if(smMenuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay == OVL_W10) { - _SetFlag(0x1000B); - } else if(smMenuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay == OVL_W20) { - BoardSaveInit(7); - BoardPartyConfigSet(0, 0, 0, 20, 0, 0, 0, 0); - } else if(smMenuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay == OVL_W21) { - BoardSaveInit(8); - BoardPartyConfigSet(0, 0, 0, 20, 0, 0, 0, 0); - } else { - _ClearFlag(0x1000B); - } - if(mg == -1 || !(HuPadBtn[0] & PAD_TRIGGER_Z) || mgInfoTbl[mg].type == 5 || mgInfoTbl[mg].type == 3 || mgInfoTbl[mg].type == 6) { - omOvlCallEx(smMenuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay, 1, 0, 0); - } else { - omOvlCallEx(OVL_INST, 1, 0, 0); - } - mgSeqOvlPrev = smMenuTbl[(smPage*SM_PAGE_SIZE)+smSelectPos].overlay; - smSelectPosExit = smSelectPos; + s32 mg; + if (WipeStatGet()) { + return; + } + while (HuARDMACheck()) + ; + mg = omMgIndexGet(smMenuTbl[(smPage * SM_PAGE_SIZE) + smSelectPos].overlay); + GWSystem.mg_next = mg; + OSReport("mgNo=%d\n", mg); + if (smMenuTbl[(smPage * SM_PAGE_SIZE) + smSelectPos].overlay == OVL_W10) { + _SetFlag(0x1000B); + } + else if (smMenuTbl[(smPage * SM_PAGE_SIZE) + smSelectPos].overlay == OVL_W20) { + BoardSaveInit(7); + BoardPartyConfigSet(0, 0, 0, 20, 0, 0, 0, 0); + } + else if (smMenuTbl[(smPage * SM_PAGE_SIZE) + smSelectPos].overlay == OVL_W21) { + BoardSaveInit(8); + BoardPartyConfigSet(0, 0, 0, 20, 0, 0, 0, 0); + } + else { + _ClearFlag(0x1000B); + } + if (mg == -1 || !(HuPadBtn[0] & PAD_TRIGGER_Z) || mgInfoTbl[mg].type == 5 || mgInfoTbl[mg].type == 3 || mgInfoTbl[mg].type == 6) { + omOvlCallEx(smMenuTbl[(smPage * SM_PAGE_SIZE) + smSelectPos].overlay, 1, 0, 0); + } + else { + omOvlCallEx(OVL_INST, 1, 0, 0); + } + mgSeqOvlPrev = smMenuTbl[(smPage * SM_PAGE_SIZE) + smSelectPos].overlay; + smSelectPosExit = smSelectPos; } -static char *padCfgStrTbl[] = { - "PLAYER:%d", - " PAD%d:%s", - "PADNO:%d", - " GRP:%d", - " DIF:%s" -}; +static char *padCfgStrTbl[] = { "PLAYER:%d", " PAD%d:%s", "PADNO:%d", " GRP:%d", " DIF:%s" }; static s16 playerCfgSelF; static s16 playerCfgPlayerPos; static s16 playerCfgOptionPos; -#define DO_HILITE(option) \ -do { \ - s32 color; \ - if(playerCfgOptionPos == option) { \ - color = fontcolor = FONT_COLOR_CYAN; \ - } else { \ - color = fontcolor = FONT_COLOR_GREEN; \ - } \ - (void)color; \ -} while(0) - +#define DO_HILITE(option) \ + do { \ + s32 color; \ + if (playerCfgOptionPos == option) { \ + color = fontcolor = FONT_COLOR_CYAN; \ + } \ + else { \ + color = fontcolor = FONT_COLOR_GREEN; \ + } \ + (void)color; \ + } while (0) + static void SMPlayerCfgDraw(void) { - s32 i; - s16 x; - s16 y; - s16 w; - char *comStr[] = { - "HUMAN", - "COM" - }; - char *diffStr[] = { - "EASY", - "NORMAL", - "HARD", - "VERYHARD" - }; - - for(i=0; i<4; i++) { - w = 128; - x = ((320-w)/2)+((i%2)*320); - y = ((i/2)*240)+48; - if(playerCfgSelF == 0 && playerCfgPlayerPos == i) { - fontcolor = FONT_COLOR_CYAN; - } else { - fontcolor = FONT_COLOR_GREEN; - } - print8(x, y, 2.0f, padCfgStrTbl[0], i); - if(playerCfgSelF == 0) { - fontcolor = FONT_COLOR_DARK_GREEN; - print8(((i%2)*320)+64, ((i/2)*240)+80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]); - print8(((i%2)*320)+64, ((i/2)*240)+96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx); - print8(((i%2)*320)+64, ((i/2)*240)+112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group); - print8(((i%2)*320)+64, ((i/2)*240)+128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]); - } else if(playerCfgSelF == 1 && playerCfgPlayerPos == i) { - DO_HILITE(0); - print8(((i%2)*320)+64, ((i/2)*240)+80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]); - DO_HILITE(1); - print8(((i%2)*320)+64, ((i/2)*240)+96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx); - DO_HILITE(2); - print8(((i%2)*320)+64, ((i/2)*240)+112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group); - DO_HILITE(3); - print8(((i%2)*320)+64, ((i/2)*240)+128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]); - } else { - fontcolor = FONT_COLOR_DARK_GREEN; - print8(((i%2)*320)+64, ((i/2)*240)+80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]); - print8(((i%2)*320)+64, ((i/2)*240)+96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx); - print8(((i%2)*320)+64, ((i/2)*240)+112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group); - print8(((i%2)*320)+64, ((i/2)*240)+128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]); - } - } + s32 i; + s16 x; + s16 y; + s16 w; + char *comStr[] = { "HUMAN", "COM" }; + char *diffStr[] = { "EASY", "NORMAL", "HARD", "VERYHARD" }; + + for (i = 0; i < 4; i++) { + w = 128; + x = ((320 - w) / 2) + ((i % 2) * 320); + y = ((i / 2) * 240) + 48; + if (playerCfgSelF == 0 && playerCfgPlayerPos == i) { + fontcolor = FONT_COLOR_CYAN; + } + else { + fontcolor = FONT_COLOR_GREEN; + } + print8(x, y, 2.0f, padCfgStrTbl[0], i); + if (playerCfgSelF == 0) { + fontcolor = FONT_COLOR_DARK_GREEN; + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]); + } + else if (playerCfgSelF == 1 && playerCfgPlayerPos == i) { + DO_HILITE(0); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]); + DO_HILITE(1); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx); + DO_HILITE(2); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group); + DO_HILITE(3); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]); + } + else { + fontcolor = FONT_COLOR_DARK_GREEN; + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 80, 2.0f, padCfgStrTbl[1], smPlayerCfg[i].pad_idx, comStr[smPlayerCfg[i].iscom]); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 96, 2.0f, padCfgStrTbl[2], smPlayerCfg[i].pad_idx); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 112, 2.0f, padCfgStrTbl[3], smPlayerCfg[i].group); + print8(((i % 2) * 320) + 64, ((i / 2) * 240) + 128, 2.0f, padCfgStrTbl[4], diffStr[smPlayerCfg[i].diff]); + } + } } #undef DO_HILITE @@ -794,114 +782,120 @@ static void SMPlayerCfgUpdate(omObjData *object); static void SMPlayerCfgInit(omObjData *object) { - playerCfgSelF = 0; - playerCfgPlayerPos = 0; - playerCfgOptionPos = 0; - object->func = SMPlayerCfgUpdate; + playerCfgSelF = 0; + playerCfgPlayerPos = 0; + playerCfgOptionPos = 0; + object->func = SMPlayerCfgUpdate; } static void SMPlayerCfgUpdate(omObjData *object) { - s32 offset; - SMPlayerCfgDraw(); - CalcBtns(); - if(!playerCfgSelF) { - if(keyDStkDown & SM_KEY_LEFT) { - offset = ((playerCfgPlayerPos & 0x1)-1) & 0x1; - playerCfgPlayerPos = (playerCfgPlayerPos & 0xFFFE)+offset; - } else { - if(keyDStkDown & SM_KEY_RIGHT) { - offset = ((playerCfgPlayerPos & 0x1)+1) & 0x1; - playerCfgPlayerPos = (playerCfgPlayerPos & 0xFFFE)+offset; - } else if(keyDStkDown & SM_KEY_DOWN) { - if((playerCfgPlayerPos += 2) >= 4) { - playerCfgPlayerPos -= 4; - } - } else if(keyDStkDown & SM_KEY_UP) { - if((playerCfgPlayerPos -= 2) < 0) { - playerCfgPlayerPos += 4; - } - } - } - if(btnDown & PAD_BUTTON_A) { - playerCfgSelF = 1; - return; - } - if((btnDown & PAD_BUTTON_B) || (btnDown & PAD_BUTTON_Y)) { - object->func = SMUpdate; - } - } else if(keyDStkDown & SM_KEY_UP) { - if(--playerCfgOptionPos < 0) { - playerCfgOptionPos = 3; - } - } else if(keyDStkDown & SM_KEY_DOWN) { - if(++playerCfgOptionPos > 3) { - playerCfgOptionPos = 0; - } - } else if(keyDStkDown & SM_KEY_LEFT) { - switch(playerCfgOptionPos) { - case 0: - smPlayerCfg[playerCfgPlayerPos].iscom ^= 1; - break; - - case 1: - if(--smPlayerCfg[playerCfgPlayerPos].pad_idx < 0) { - smPlayerCfg[playerCfgPlayerPos].pad_idx = 3; - } - break; - - case 2: - if(--smPlayerCfg[playerCfgPlayerPos].group < 0) { - smPlayerCfg[playerCfgPlayerPos].group = 3; - } - break; - - case 3: - if(--smPlayerCfg[playerCfgPlayerPos].diff < 0) { - smPlayerCfg[playerCfgPlayerPos].diff = 3; - } - break; - }; - } else if(keyDStkDown & SM_KEY_RIGHT) { - switch(playerCfgOptionPos) { - case 0: - smPlayerCfg[playerCfgPlayerPos].iscom ^= 1; - break; - - case 1: - if(++smPlayerCfg[playerCfgPlayerPos].pad_idx > 3) { - smPlayerCfg[playerCfgPlayerPos].pad_idx = 0; - } - break; - - case 2: - if(++smPlayerCfg[playerCfgPlayerPos].group > 3) { - smPlayerCfg[playerCfgPlayerPos].group = 0; - } - break; - - case 3: - if(++smPlayerCfg[playerCfgPlayerPos].diff > 3) { - smPlayerCfg[playerCfgPlayerPos].diff = 0; - } - break; - } - } else if((btnDown & PAD_BUTTON_A) || (btnDown & PAD_BUTTON_B)) { - playerCfgSelF = 0; - } else if(btnDown & PAD_BUTTON_Y) { - object->func = SMUpdate; - } + s32 offset; + SMPlayerCfgDraw(); + CalcBtns(); + if (!playerCfgSelF) { + if (keyDStkDown & SM_KEY_LEFT) { + offset = ((playerCfgPlayerPos & 0x1) - 1) & 0x1; + playerCfgPlayerPos = (playerCfgPlayerPos & 0xFFFE) + offset; + } + else { + if (keyDStkDown & SM_KEY_RIGHT) { + offset = ((playerCfgPlayerPos & 0x1) + 1) & 0x1; + playerCfgPlayerPos = (playerCfgPlayerPos & 0xFFFE) + offset; + } + else if (keyDStkDown & SM_KEY_DOWN) { + if ((playerCfgPlayerPos += 2) >= 4) { + playerCfgPlayerPos -= 4; + } + } + else if (keyDStkDown & SM_KEY_UP) { + if ((playerCfgPlayerPos -= 2) < 0) { + playerCfgPlayerPos += 4; + } + } + } + if (btnDown & PAD_BUTTON_A) { + playerCfgSelF = 1; + return; + } + if ((btnDown & PAD_BUTTON_B) || (btnDown & PAD_BUTTON_Y)) { + object->func = SMUpdate; + } + } + else if (keyDStkDown & SM_KEY_UP) { + if (--playerCfgOptionPos < 0) { + playerCfgOptionPos = 3; + } + } + else if (keyDStkDown & SM_KEY_DOWN) { + if (++playerCfgOptionPos > 3) { + playerCfgOptionPos = 0; + } + } + else if (keyDStkDown & SM_KEY_LEFT) { + switch (playerCfgOptionPos) { + case 0: + smPlayerCfg[playerCfgPlayerPos].iscom ^= 1; + break; + + case 1: + if (--smPlayerCfg[playerCfgPlayerPos].pad_idx < 0) { + smPlayerCfg[playerCfgPlayerPos].pad_idx = 3; + } + break; + + case 2: + if (--smPlayerCfg[playerCfgPlayerPos].group < 0) { + smPlayerCfg[playerCfgPlayerPos].group = 3; + } + break; + + case 3: + if (--smPlayerCfg[playerCfgPlayerPos].diff < 0) { + smPlayerCfg[playerCfgPlayerPos].diff = 3; + } + break; + }; + } + else if (keyDStkDown & SM_KEY_RIGHT) { + switch (playerCfgOptionPos) { + case 0: + smPlayerCfg[playerCfgPlayerPos].iscom ^= 1; + break; + + case 1: + if (++smPlayerCfg[playerCfgPlayerPos].pad_idx > 3) { + smPlayerCfg[playerCfgPlayerPos].pad_idx = 0; + } + break; + + case 2: + if (++smPlayerCfg[playerCfgPlayerPos].group > 3) { + smPlayerCfg[playerCfgPlayerPos].group = 0; + } + break; + + case 3: + if (++smPlayerCfg[playerCfgPlayerPos].diff > 3) { + smPlayerCfg[playerCfgPlayerPos].diff = 0; + } + break; + } + } + else if ((btnDown & PAD_BUTTON_A) || (btnDown & PAD_BUTTON_B)) { + playerCfgSelF = 0; + } + else if (btnDown & PAD_BUTTON_Y) { + object->func = SMUpdate; + } } static void SMRand8Tick(omObjData *object) { - rand8(); + rand8(); } -void fn_1_450C(void) -{ - -} +void fn_1_450C(void) { } static s16 emiCompDataNo; static s16 emiCompVal; @@ -913,165 +907,165 @@ static void SMSound3DDraw(void); static void SMSound3DInit(omObjData *object) { - s8 *data = msmSeGetIndexPtr(emiCompDataNo); - emiCompVal = data[12]; - object->func = SMSound3DUpdate; + s8 *data = msmSeGetIndexPtr(emiCompDataNo); + emiCompVal = data[12]; + object->func = SMSound3DUpdate; } static void SMSound3DUpdate(omObjData *object) { - float increment; - s8 *data; - - CalcBtns(); - if(keyDStkDown & SM_KEY_UP) { - smSound3DPos--; - if(smSound3DPos < 0) { - smSound3DPos = 7; - } - } - if(keyDStkDown & SM_KEY_DOWN) { - smSound3DPos++; - if(smSound3DPos >= 8) { - smSound3DPos = 0; - } - } - if(keyDStkDown & (SM_KEY_LEFT | SM_KEY_RIGHT)) { - if(keyDStkDown & SM_KEY_RIGHT) { - increment = 10; - } else { - increment = -10; - } - if(HuPadBtn[0] & PAD_TRIGGER_Z) { - increment *= 10.0f; - } - switch(smSound3DPos) { - case 0: - Snd3DDistOffset += increment; - break; - - case 1: - Snd3DSpeedOffset += increment; - break; - - case 2: - Snd3DStartDisOffset += increment; - break; - - case 3: - Snd3DFrontSurDisOffset += increment; - break; - - case 4: - Snd3DBackSurDisOffset += increment; - break; - - case 5: - emiCompDataNo += increment/10.0f; - if(emiCompDataNo < 0) { - emiCompDataNo = 0; - } - data = msmSeGetIndexPtr(emiCompDataNo); - emiCompVal = data[12]; - break; - - case 6: - emiCompVal += increment/10.0f; - if(emiCompVal > 127) { - emiCompVal = 127; - } - if(emiCompVal < -127) { - emiCompVal = -127; - } - data = msmSeGetIndexPtr(emiCompDataNo); - data[12] = emiCompVal; - break; - - case 7: - musicOffF = (musicOffF) ? 0 : 1; - if(musicOffF) { - msmMusSetMasterVolume(0); - } else { - msmMusSetMasterVolume(127); - } - break; - } - } - if(btnDown & PAD_BUTTON_START) { - switch(smSound3DPos) { - case 0: - Snd3DDistOffset = 0; - break; - - case 1: - Snd3DSpeedOffset = 0; - break; - - case 2: - Snd3DStartDisOffset = 0; - break; - - case 3: - Snd3DFrontSurDisOffset = 0; - break; - - case 4: - Snd3DBackSurDisOffset = 0; - break; - - case 5: - emiCompDataNo = 0; - break; - - case 6: - emiCompVal = 0; - break; - - case 7: - musicOffF = 0; - break; - } - } - - if(btnDown & PAD_BUTTON_B) { - object->func = SMUpdate; - } - SMSound3DDraw(); + float increment; + s8 *data; + + CalcBtns(); + if (keyDStkDown & SM_KEY_UP) { + smSound3DPos--; + if (smSound3DPos < 0) { + smSound3DPos = 7; + } + } + if (keyDStkDown & SM_KEY_DOWN) { + smSound3DPos++; + if (smSound3DPos >= 8) { + smSound3DPos = 0; + } + } + if (keyDStkDown & (SM_KEY_LEFT | SM_KEY_RIGHT)) { + if (keyDStkDown & SM_KEY_RIGHT) { + increment = 10; + } + else { + increment = -10; + } + if (HuPadBtn[0] & PAD_TRIGGER_Z) { + increment *= 10.0f; + } + switch (smSound3DPos) { + case 0: + Snd3DDistOffset += increment; + break; + + case 1: + Snd3DSpeedOffset += increment; + break; + + case 2: + Snd3DStartDisOffset += increment; + break; + + case 3: + Snd3DFrontSurDisOffset += increment; + break; + + case 4: + Snd3DBackSurDisOffset += increment; + break; + + case 5: + emiCompDataNo += increment / 10.0f; + if (emiCompDataNo < 0) { + emiCompDataNo = 0; + } + data = msmSeGetIndexPtr(emiCompDataNo); + emiCompVal = data[12]; + break; + + case 6: + emiCompVal += increment / 10.0f; + if (emiCompVal > 127) { + emiCompVal = 127; + } + if (emiCompVal < -127) { + emiCompVal = -127; + } + data = msmSeGetIndexPtr(emiCompDataNo); + data[12] = emiCompVal; + break; + + case 7: + musicOffF = (musicOffF) ? 0 : 1; + if (musicOffF) { + msmMusSetMasterVolume(0); + } + else { + msmMusSetMasterVolume(127); + } + break; + } + } + if (btnDown & PAD_BUTTON_START) { + switch (smSound3DPos) { + case 0: + Snd3DDistOffset = 0; + break; + + case 1: + Snd3DSpeedOffset = 0; + break; + + case 2: + Snd3DStartDisOffset = 0; + break; + + case 3: + Snd3DFrontSurDisOffset = 0; + break; + + case 4: + Snd3DBackSurDisOffset = 0; + break; + + case 5: + emiCompDataNo = 0; + break; + + case 6: + emiCompVal = 0; + break; + + case 7: + musicOffF = 0; + break; + } + } + + if (btnDown & PAD_BUTTON_B) { + object->func = SMUpdate; + } + SMSound3DDraw(); } -#define DO_HILITE(pos) \ -do { \ - if(smSound3DPos == pos) { \ - fontcolor = FONT_COLOR_GREEN; \ - } else { \ - fontcolor = FONT_COLOR_DARK_GREEN; \ - } \ -} while(0) +#define DO_HILITE(pos) \ + do { \ + if (smSound3DPos == pos) { \ + fontcolor = FONT_COLOR_GREEN; \ + } \ + else { \ + fontcolor = FONT_COLOR_DARK_GREEN; \ + } \ + } while (0) static void SMSound3DDraw(void) { - char *onOffStr[] = { - " ON", - "OFF" - }; - fontcolor = FONT_COLOR_YELLOW; - print8(200, 64, 2.0f, "3DSound Config."); - DO_HILITE(0); - print8(140, 96, 2.0f, "Max Distance %5.1f", Snd3DDistOffset); - DO_HILITE(1); - print8(140, 112, 2.0f, "Sound Speed %5.1f", Snd3DSpeedOffset); - DO_HILITE(2); - print8(140, 128, 2.0f, "Start Distance %5.1f", Snd3DStartDisOffset); - DO_HILITE(3); - print8(140, 144, 2.0f, "Front Distance %5.1f", Snd3DFrontSurDisOffset); - DO_HILITE(4); - print8(140, 160, 2.0f, "Back Distance %5.1f", Snd3DBackSurDisOffset); - DO_HILITE(5); - print8(140, 176, 2.0f, "emiComp DataNo %04d", emiCompDataNo); - DO_HILITE(6); - print8(140, 192, 2.0f, "emiComp VAL %3d", emiCompVal); - DO_HILITE(7); - print8(140, 208, 2.0f, "Music %s", onOffStr[(musicOffF) ? 1 : 0]); + char *onOffStr[] = { " ON", "OFF" }; + fontcolor = FONT_COLOR_YELLOW; + print8(200, 64, 2.0f, "3DSound Config."); + DO_HILITE(0); + print8(140, 96, 2.0f, "Max Distance %5.1f", Snd3DDistOffset); + DO_HILITE(1); + print8(140, 112, 2.0f, "Sound Speed %5.1f", Snd3DSpeedOffset); + DO_HILITE(2); + print8(140, 128, 2.0f, "Start Distance %5.1f", Snd3DStartDisOffset); + DO_HILITE(3); + print8(140, 144, 2.0f, "Front Distance %5.1f", Snd3DFrontSurDisOffset); + DO_HILITE(4); + print8(140, 160, 2.0f, "Back Distance %5.1f", Snd3DBackSurDisOffset); + DO_HILITE(5); + print8(140, 176, 2.0f, "emiComp DataNo %04d", emiCompDataNo); + DO_HILITE(6); + print8(140, 192, 2.0f, "emiComp VAL %3d", emiCompVal); + DO_HILITE(7); + print8(140, 208, 2.0f, "Music %s", onOffStr[(musicOffF) ? 1 : 0]); } #undef DO_HILITE diff --git a/src/REL/staffDll/main.c b/src/REL/staffDll/main.c index 2214364b..8f880eb9 100644 --- a/src/REL/staffDll/main.c +++ b/src/REL/staffDll/main.c @@ -9,7 +9,7 @@ #include "game/window.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" +#include "math.h" typedef struct StaffData { /* 0x00 */ u32 unk_00; @@ -178,9 +178,32 @@ static StaffData staffData[] = { { 0x0035005F, 2, 0.0f, 0, 0, 0 }, { 0x00350060, 2, 0.0f, 0, 0, 0 }, { -3, 0, 48.0f, 0, 0, 0 }, + #if VERSION_PAL + { 0x00340026, 0, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340027, 1, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340028, 1, 0.0f, 0, 0, 0 }, + { 0x00350061, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340029, 1, 0.0f, 0, 0, 0 }, + { 0x0034002A, 1, 0.0f, 0, 0, 0 }, + { 0x00350062, 2, 0.0f, 0, 0, 0 }, + { 0x0034002B, 1, 0.0f, 0, 0, 0 }, + { 0x00350063, 2, 0.0f, 0, 0, 0 }, + { 0x0034002C, 1, 0.0f, 0, 0, 0 }, + { 0x00350064, 2, 0.0f, 0, 0, 0 }, + { 0x0034002D, 1, 0.0f, 0, 0, 0 }, + { 0x00350065, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034002E, 1, 0.0f, 0, 0, 0 }, + { -3, 0, 72.0f, 0, 0, 0 }, + #endif { 0x00340016, 0, 0.0f, 0, 0, 0 }, { 0x00350044, 2, 0.0f, 0, 0, 0 }, + #if VERSION_NTSC { 0x00350045, 2, 0.0f, 0, 0, 0 }, + #endif { -3, 0, 24.0f, 0, 0, 0 }, { 0x00350046, 2, 0.0f, 0, 0, 0 }, { 0x00350047, 2, 0.0f, 0, 0, 0 }, @@ -216,7 +239,11 @@ static StaffData staffData[] = { { -1, 0, 0.0f, 0, 0, 0 }, }; +#if VERSION_NTSC static float staffLogoPosTbl[] = { 460.0f, 293.0f, 293.0f }; +#else +static float staffLogoPosTbl[] = { 460.0f, 290.0f, 293.0f }; +#endif static void MainProc(void); static void CreateStaff(void); @@ -305,7 +332,36 @@ static void CreateStaff(void) } for (var_r31 = 0; var_r31 < 3; var_r31++) { - var_r29 = HuDataSelHeapReadNum(var_r31 + 0x73001A, MEMORY_DEFAULT_NUM, HEAP_DATA); + int languageNo; + #if VERSION_NTSC + var_r29 = HuDataSelHeapReadNum(var_r31 + DATA_MAKE_NUM(DATADIR_STAFF, 0x1A), MEMORY_DEFAULT_NUM, HEAP_DATA); + #else + if(var_r31 == 2) { + switch(GWGameStat.language) { + case 1: + languageNo = 0; + break; + + case 2: + languageNo = 1; + break; + + case 4: + languageNo = 3; + break; + + default: + languageNo = 2; + break; + + } + + var_r29 = HuDataSelHeapReadNum(var_r31 + DATA_MAKE_NUM(DATADIR_STAFF, 0x1A) + languageNo, MEMORY_DEFAULT_NUM, HEAP_DATA); + } else { + var_r29 = HuDataSelHeapReadNum(var_r31 + DATA_MAKE_NUM(DATADIR_STAFF, 0x1A), MEMORY_DEFAULT_NUM, HEAP_DATA); + } + #endif + var_r28 = HuSprAnimRead(var_r29); var_r30 = HuSprCreate(var_r28, 256, 0); staffLogoGroup[var_r31] = HuSprGrpCreate(1); @@ -319,7 +375,11 @@ static void CreateStaff(void) HuSprGrpPosSet(thpGroup, 280.0f, 200.0f); HuSprAttrSet(thpGroup, 0, HUSPR_ATTR_DISPOFF); HuTHPStop(); - var_r29 = HuDataSelHeapReadNum(0x73001D, MEMORY_DEFAULT_NUM, HEAP_DATA); + #if VERSION_NTSC + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_STAFF, 0x1D), MEMORY_DEFAULT_NUM, HEAP_DATA); + #else + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_STAFF, 0x20), MEMORY_DEFAULT_NUM, HEAP_DATA); + #endif var_r28 = HuSprAnimRead(var_r29); var_r30 = HuSprCreate(var_r28, 16385, 0); thpCoverGroup = HuSprGrpCreate(1); @@ -462,12 +522,19 @@ static void ShowPicture(void) HuSprTPLvlSet(imgGroup[currImg], 0, 1.0f); while (TRUE) { + #if VERSION_NTSC if (currImg >= 24) { HuPrcSleep(430); - } - else { + } else { HuPrcSleep(550); } + #else + if (currImg >= 24) { + HuPrcSleep(480); + } else { + HuPrcSleep(600); + } + #endif if (currImg >= 25) { break; } @@ -548,7 +615,11 @@ static void MainProc(void) HuPrcVSleep(); } HuSprGrpPosSet(staffLogoGroup[1], var_f29, 400.0f); + #if VERSION_NTSC HuPrcSleep(240); + #else + HuPrcSleep(60); + #endif HuSprAttrReset(thpGroup, 0, HUSPR_ATTR_DISPOFF); HuSprAttrReset(thpCoverGroup, 0, HUSPR_ATTR_DISPOFF); HuTHPRestart(); @@ -579,15 +650,20 @@ static void MainProc(void) HuSprAttrSet(staffLogoGroup[1], 0, HUSPR_ATTR_DISPOFF); HuPrcSleep(120); HuSprAttrReset(staffLogoGroup[2], 0, HUSPR_ATTR_DISPOFF); + #if VERSION_NTSC HuSprGrpPosSet(staffLogoGroup[2], 280.0f, 240.0f); - + #else + HuSprGrpPosSet(staffLogoGroup[2], 275.0f, 240.0f); + #endif for (var_r31 = 0, var_f31 = 0.0f; var_r31 < 30; var_r31++, var_f31 += 1.0f / 30.0f) { HuSprTPLvlSet(staffLogoGroup[2], 0, var_f31); HuPrcVSleep(); } - + #if VERSION_NTSC HuPrcSleep(600); - + #else + HuPrcSleep(480); + #endif while (TRUE) { for (var_r31 = 0; var_r31 < 4; var_r31++) { if (HuPadBtn[var_r31] & PAD_BUTTON_START) { diff --git a/src/REL/subchrselDll/main.c b/src/REL/subchrselDll/main.c index 71911750..7c16e272 100644 --- a/src/REL/subchrselDll/main.c +++ b/src/REL/subchrselDll/main.c @@ -5,7 +5,7 @@ #include "game/pad.h" #include "game/wipe.h" -#include "rel_sqrt_consts.h" +#include "math.h" static void SubchrMain(void); diff --git a/src/REL/w01Dll/main.c b/src/REL/w01Dll/main.c index 70dce0bd..f1d1e39f 100755 --- a/src/REL/w01Dll/main.c +++ b/src/REL/w01Dll/main.c @@ -1,6 +1,20 @@ -#include "REL/w01Dll.h" +#include "game/board/main.h" #include "REL/board_executor.h" +#include "REL/w01Dll.h" #include "game/audio.h" +#include "game/board/audio.h" +#include "game/board/boo_house.h" +#include "game/board/com.h" +#include "game/board/lottery.h" +#include "game/board/map_object.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/shop.h" +#include "game/board/space.h" +#include "game/board/star.h" +#include "game/board/ui.h" +#include "game/board/view.h" +#include "game/board/window.h" #include "game/chrman.h" #include "game/data.h" #include "game/gamework_data.h" @@ -13,865 +27,880 @@ #include "game/process.h" #include "game/window.h" #include "game/wipe.h" -#include "game/board/audio.h" -#include "game/board/boo_house.h" -#include "game/board/com.h" -#include "game/board/lottery.h" -#include "game/board/main.h" -#include "game/board/model.h" -#include "game/board/player.h" -#include "game/board/shop.h" -#include "game/board/space.h" -#include "game/board/star.h" -#include "game/board/ui.h" -#include "game/board/view.h" -#include "game/board/window.h" -#include "game/board/map_object.h" #include "dolphin.h" #include "ext_math.h" typedef struct { struct { - u8 unk00_field0 : 1; + u8 killF : 1; }; -} Bss10Work; +} CoasterCameraWork; typedef struct { struct { - u8 unk00_field0 : 1; - u8 unk00_field1 : 3; - u8 unk00_field2 : 1; - u8 unk00_field3 : 1; + u8 killF : 1; + u8 mode : 3; + u8 stopF : 1; + u8 decaF : 1; }; - u8 unk01; - u8 unk02; - char unk03[1]; - s16 unk04; - char unk06[2]; - float unk08; -} Bss18Work; + u8 time; + u8 delay; + s16 dishMdlId; + float dishSpeed; +} CupObjWork; typedef struct { - /* 0x00 */ s8 unk00; - /* 0x01 */ s8 unk01; - /* 0x02 */ s16 unk02; - /* 0x04 */ s16 unk04; - /* 0x06 */ s16 unk06; - /* 0x08 */ float unk08; - /* 0x0C */ char unk0C[4]; - /* 0x10 */ float unk10; - /* 0x14 */ Vec unk14; - /* 0x20 */ Mtx unk20; -} BssCData; // Size 0x50 + s8 mode; + s8 playerNo; + s16 delay; + s16 pathMdlId; + s16 endSpace; + float speed; + float unk0C; + float time; + Vec pos; + Mtx matrix; +} CoasterPlayerWork; // Size 0x50 typedef struct { struct { - u8 unk00_field0 : 1; + u8 killF : 1; }; - s8 unk01; - char unk02[2]; - BssCData *unk04; -} BssCWork; + s8 playerNum; + CoasterPlayerWork *player; +} CoasterPlayerManWork; typedef struct { - /* 0x00 */ s16 unk00; - /* 0x02 */ s16 unk02; - /* 0x04 */ float unk04; - /* 0x08 */ Vec unk08; - /* 0x14 */ Vec unk14; -} Bss20Data; // Size 0x20 + /* 0x00 */ s16 time; + /* 0x02 */ s16 mdlId; + /* 0x04 */ float scale; + /* 0x08 */ Vec pos; + /* 0x14 */ Vec vel; +} CoasterEffData; // Size 0x20 typedef struct { struct { - u8 unk00_field0 : 1; + u8 killF : 1; }; - u8 unk01; - char unk02[2]; - Bss20Data *unk04; -} Bss20Work; + u8 delay; + CoasterEffData *data; +} CoasterEffWork; -static void fn_1_730(void); -static void fn_1_774(void); -static s32 fn_1_778(void); -static s32 fn_1_814(void); -static void fn_1_9E8(void); +static void LightSetHook(void); +static void LightResetHook(void); +static s32 LandEvent(void); +static s32 WalkEvent(void); +static void MapObjDispSet(void); static void fn_1_D00(void); -static void fn_1_D04(void); -static void fn_1_1254(void); -static void fn_1_128C(void); -static void fn_1_130C(void); -static s32 fn_1_157C(void); -static void fn_1_1670(void); -static void fn_1_1700(void); -static void fn_1_1990(void); -static void fn_1_1AD8(BoardCameraData *camera); -static void fn_1_1B3C(void); -static void fn_1_1EE4(void); -static void fn_1_1F2C(omObjData *arg0); -static void fn_1_1FA4(void); -static float fn_1_2524(void); -static void fn_1_276C(void); -static void fn_1_2F18(void); -static void fn_1_3350(void); -static void fn_1_3514(s32 arg0); -static void fn_1_35B4(s32 arg0); -static void fn_1_3624(void); -static void fn_1_45F4(void); -static void fn_1_4774(void); -static void fn_1_4864(void); -static s32 fn_1_48B4(void); -static void fn_1_4E14(void); -static void fn_1_4FA8(void); -static void fn_1_4FD8(void); -static void fn_1_50D4(void); -static void fn_1_53B8(void); -static void fn_1_543C(void); -static void fn_1_5694(s32 arg0); -static void fn_1_586C(s32 arg0, s32 arg1); -static void fn_1_592C(void); -static void fn_1_5B2C(void); -static void fn_1_5B40(void); -static BOOL fn_1_5CD0(void); -static void fn_1_5D08(void); -static void fn_1_6098(omObjData *arg0); -static void fn_1_6194(Bss18Work *arg0, omObjData *arg1); -static void fn_1_63F0(Bss18Work *arg0, omObjData *arg1); -static void fn_1_6A14(Bss18Work *arg0, omObjData *arg1); -static void fn_1_6BC0(Bss18Work *arg0, omObjData *arg1); -static void fn_1_6FB4(Bss18Work *arg0, omObjData *arg1); -static void fn_1_7528(s32 arg0, s32 arg1); -static void fn_1_77EC(s32 arg0, s32 arg1); -static void fn_1_7894(void); -static void fn_1_7A64(void); -static void fn_1_852C(void); -static void fn_1_87AC(void); -static void fn_1_87E0(omObjData *arg0); -static void fn_1_8988(BssCData *arg0, omObjData *arg1); -static void fn_1_8A50(BssCData *arg0, omObjData *arg1); -static void fn_1_8B6C(BssCData *arg0, omObjData *arg1); -static void fn_1_8DDC(BssCData *arg0, omObjData *arg1); -static void fn_1_918C(BssCData *arg0, omObjData *arg1); -static void fn_1_927C(BssCData *arg0, omObjData *arg1); -static void fn_1_932C(BssCData *arg0); -static s32 fn_1_94A8(BssCData *arg0); -static void fn_1_95F4(BssCData *arg0); -static void fn_1_97F4(void); -static void fn_1_98EC(void); -static void fn_1_9920(omObjData *arg0); -static void fn_1_9A24(Bss20Work *arg0); -static void fn_1_9BBC(Bss20Work *arg0); +static void RoundItemMain(void); +static void RoundItemDestroy(void); +static void RoundItemEvent(void); +static void SpaceAmidaEvent(void); +static s32 WalkMiniEvent(void); +static void UpdateHostDisp(void); +static void CoasterInit(void); +static void CoasterPathUpdate(void); +static void CoasterPosCalc(BoardCameraData *camera); +static void CoasterCameraUpdate(void); +static void CoasterCameraObjKill(void); +static void CoasterCameraObjMain(omObjData *obj); +static void CoasterCameraObjUpdate(void); +static float CoasterStickRotGet(void); +static void CoasterRotUpdate(void); +static void CoasterCoinCheck(void); +static void CoasterPathMotUpdate(void); +static void CoasterMotCreate(s32 playerNo); +static void CoasterMotKill(s32 playerNo); +static void CoasterExec(void); +static void CoasterExit(void); +static void CoasterWinCreate(void); +static void CoasterWinKill(void); +static s32 CoasterHostExec(void); +static void CoasterMain(void); +static void CoasterDestroy(void); +static void CoasterEvent(void); +static void CoasterCoinCreate(void); +static void CoasterCoinKill(void); +static void CupInit(void); +static void CupMotOnSet(s32 stopF); +static void CupEvent(s32 side, s32 spaceStart); +static void CupMain(void); +static void CupDestroy(void); +static void CupExec(void); +static BOOL CupObjCheck(void); +static void CupObjCreate(void); +static void CupObjMain(omObjData *obj); +static void CupObjInit(CupObjWork *work, omObjData *obj); +static void CupObjJumpWait(CupObjWork *work, omObjData *obj); +static void CupObjHookReset(CupObjWork *work, omObjData *obj); +static void CupObjStop(CupObjWork *work, omObjData *obj); +static void CupObjRotate(CupObjWork *work, omObjData *obj); +static void CupLandEvent(s32 playerNo, s32 spaceId); +static void CoasterLandEvent(s32 playerNo, s32 spaceId); +static void CoasterLandMain(void); +static void CoasterLandExec(void); +static void CoasterPlayerManCreate(void); +static void CoasterPlayerManKill(void); +static void CoasterPlayerManUpdate(omObjData *obj); +static void CoasterPlayerWait(CoasterPlayerWork *work, omObjData *obj); +static void CoasterPlayerChaseBegin(CoasterPlayerWork *work, omObjData *obj); +static void CoasterPlayerChasePathSet(CoasterPlayerWork *work, omObjData *obj); +static void CoasterPlayerChase(CoasterPlayerWork *work, omObjData *obj); +static void CoasterPlayerStop(CoasterPlayerWork *work, omObjData *obj); +static void CoasterPlayerEnd(CoasterPlayerWork *work, omObjData *obj); +static void CoasterPlayerEndSet(CoasterPlayerWork *work); +static s32 CoasterPlayerLoopCheck(CoasterPlayerWork *work); +static void CoasterPlayerTimeInit(CoasterPlayerWork *work); +static void CoasterEffCreate(void); +static void CoasterEffKill(void); +static void CoasterEffUpdate(omObjData *obj); +static void CoasterEffAdd(CoasterEffWork *work); +static void CoasterEffModelUpdate(CoasterEffWork *work); +extern void CoasterHostComKeySet(s32 playerNo); +static BoardMapObject mapObjData[MAPOBJ_MAX] + = { { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 8) }, + { { 0.0f, 700.0f, 300.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 9) }, + { { -2025.0f, 100.0f, 1950.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, + { { 1725.0f, 200.0f, -1650.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, + { { 2757.974f, 200.0f, -536.781f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, + { { -2750.0f, 300.0f, -2150.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 12) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 13) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 14) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 15) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 16) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 16) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 16) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 17) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 18) }, + { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 18) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 21) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 22) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 23) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 24) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 25) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 26) }, + { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 27) }, + { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 3) }, + { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, + { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, + { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, + { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 5) }, + { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 3) }, + { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, + { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, + { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, + { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 5) } }; -static BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = { - { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 8) }, - { { 0.0f, 700.0f, 300.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 9) }, - { { -2025.0f, 100.0f, 1950.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, - { { 1725.0f, 200.0f, -1650.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, - { { 2757.974f, 200.0f, -536.781f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, - { { -2750.0f, 300.0f, -2150.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 12) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 13) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 14) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 15) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 16) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 16) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 16) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 17) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 18) }, - { { -2550.0f, 300.0f, -2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 18) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 21) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 22) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 23) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 24) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 25) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 26) }, - { { 3000.0f, 200.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 27) }, - { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 3) }, - { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, - { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, - { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, - { { 1200.0f, 0.0f, 1200.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 5) }, - { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 3) }, - { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, - { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, - { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 4) }, - { { -1800.0f, 200.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W01, 5) } -}; +s16 mapObjMdlId[MAPOBJ_MAX]; -s16 lbl_1_bss_6C4[MAPOBJ_MAX]; - -static s32 *lbl_1_bss_6C0; -static s16 lbl_1_bss_6B6[5]; -static s8 lbl_1_bss_6B4; -static s8 lbl_1_bss_6B3; -static s8 lbl_1_bss_6B2; -static s8 lbl_1_bss_6B1; -static s8 lbl_1_bss_6B0; -static s16 lbl_1_bss_6AE; -static s16 lbl_1_bss_6AC; +static s32 *mapObjMotTbl; +static s16 roundItemTbl[5]; +static s8 eventPlayer; +static s8 coasterLoopF; +static s8 coasterDoneF; +static s8 coasterLandF; +static s8 coasterType; +static s16 coasterPathMdlId; +static s16 coasterStartSpace; static float lbl_1_bss_6A8; -static Mtx lbl_1_bss_678; -static float lbl_1_bss_674; -static float lbl_1_bss_670; -static float lbl_1_bss_66C; -static Vec lbl_1_bss_660; -static Vec lbl_1_bss_654; -static Vec lbl_1_bss_648; -static float lbl_1_bss_644; -static float lbl_1_bss_640; -static float lbl_1_bss_63C; -static Vec lbl_1_bss_630; -static Vec lbl_1_bss_624; -static Vec lbl_1_bss_618; -static s8 lbl_1_bss_600[24]; -static s16 lbl_1_bss_5D0[24]; -static s16 lbl_1_bss_5CC[2]; +static Mtx coasterMtx; +static float coasterAccel; +static float coasterSpeed; +static float coasterCamSpeed; +static Vec coasterRot; +static Vec coasterPos; +static Vec coasterPosOld; +static float coasterMaxTime; +static float coasterTime; +static float coasterBaseRotY; +static Vec coasterCameraPos; +static Vec coasterCameraUp; +static Vec coasterCameraTarget; +static s8 coasterCoinF[24]; +static s16 coasterCoinMdlId[24]; +static s16 coasterMotId[2]; static s8 lbl_1_bss_2C[1440]; static s8 lbl_1_bss_2A[2]; // padding -static s8 lbl_1_bss_29; -static s8 lbl_1_bss_28; -static s16 lbl_1_bss_26; -static s16 lbl_1_bss_24; -static omObjData *lbl_1_bss_20; -static s8 lbl_1_bss_1C; -static omObjData *lbl_1_bss_18; -static Process *lbl_1_bss_14; -static omObjData *lbl_1_bss_10; -static omObjData *lbl_1_bss_C; -static Process *lbl_1_bss_8; -static Process *lbl_1_bss_4; -UnkBoardDataStruct *lbl_1_bss_0; +static s8 cupSide; +static s8 cupHookNo; +static s16 cupSpaceStart; +static s16 cupSpaceEnd; +static omObjData *coasterEffObj; +static s8 coasterPlayerChaseNum; +static omObjData *cupObj; +static Process *cupProc; +static omObjData *coasterCameraObj; +static omObjData *coasterPlayerManObj; +static Process *coasterProc; +static Process *roundItemProc; +W01BoardWork *boardWork; -static s16 lbl_1_data_528 = -1; -static s16 lbl_1_data_52A = -1; -static s16 lbl_1_data_52C = -1; -static s16 lbl_1_data_52E = -1; -static s16 lbl_1_data_530 = -1; +static s16 bgMdl = -1; +static s16 fgMdl = -1; +static s16 starHostMdl = -1; +static s16 hostMdl = -1; +static s16 syuppouMdl = -1; -static s32 lbl_1_data_534[] = { - DATA_MAKE_NUM(DATADIR_W01, 30), - -1 -}; +static s32 starHostMotTbl[] = { DATA_MAKE_NUM(DATADIR_W01, 30), -1 }; -static s32 lbl_1_data_53C[] = { - DATA_MAKE_NUM(DATADIR_BGUEST, 1), - -1 -}; +static s32 hostMotTbl[] = { DATA_MAKE_NUM(DATADIR_BGUEST, 1), -1 }; -void BoardCreate(void) { - BoardMapObject *temp_r30; - s32 sp8; +void BoardCreate(void) +{ + BoardMapObject *mapObj; + s32 boardNo; s32 i; - sp8 = GWBoardGet(); - lbl_1_bss_0 = (UnkBoardDataStruct*) GWSystem.board_data; + boardNo = GWBoardGet(); + boardWork = (W01BoardWork *)GWSystem.board_data; BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W01, 0)); - lbl_1_data_528 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 1), NULL, 0); - fn_8006DDE8(lbl_1_data_528, -1.0f); - BoardModelPosSet(lbl_1_data_528, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_528, 0, 0x40000001); - lbl_1_data_52A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 2), NULL, 0); - fn_8006DDE8(lbl_1_data_52A, -1.0f); - BoardModelPosSet(lbl_1_data_52A, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_52A, 0, 0x40000001); - lbl_1_data_52C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 29), lbl_1_data_534, 0); - BoardModelPosSet(lbl_1_data_52C, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_52C, 1, 0x40000001); - lbl_1_data_52E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 0), lbl_1_data_53C, 0); - BoardModelPosSet(lbl_1_data_52E, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_52E, 1, 0x40000001); - lbl_1_data_530 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 11), NULL, 0); - BoardModelMotionStart(lbl_1_data_530, 0, 0x40000001); - BoardLightHookSet(fn_1_730, fn_1_774); + bgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 1), NULL, 0); + fn_8006DDE8(bgMdl, -1.0f); + BoardModelPosSet(bgMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(bgMdl, 0, HU3D_MOTATTR_LOOP); + fgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 2), NULL, 0); + fn_8006DDE8(fgMdl, -1.0f); + BoardModelPosSet(fgMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(fgMdl, 0, HU3D_MOTATTR_LOOP); + starHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 29), starHostMotTbl, 0); + BoardModelPosSet(starHostMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(starHostMdl, 1, HU3D_MOTATTR_LOOP); + hostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 0), hostMotTbl, 0); + BoardModelPosSet(hostMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(hostMdl, 1, HU3D_MOTATTR_LOOP); + syuppouMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 11), NULL, 0); + BoardModelMotionStart(syuppouMdl, 0, HU3D_MOTATTR_LOOP); + BoardLightHookSet(LightSetHook, LightResetHook); for (i = 0; i < MAPOBJ_MAX; i++) { - temp_r30 = &lbl_1_data_0[i]; - if (temp_r30->data_num != -1) { - if (i == 2 || i == 3 || i == 4 || i == 5) { - lbl_1_bss_6C0 = lbl_1_data_53C; - } else { - lbl_1_bss_6C0 = NULL; + mapObj = &mapObjData[i]; + if (mapObj->data_num != -1) { + if (i == MAPOBJ_HOST1 || i == MAPOBJ_HOST2 || i == MAPOBJ_HOST3 || i == MAPOBJ_HOST4) { + mapObjMotTbl = hostMotTbl; } - lbl_1_bss_6C4[i] = BoardModelCreate(temp_r30->data_num, lbl_1_bss_6C0, 0); - BoardModelPosSetV(lbl_1_bss_6C4[i], &temp_r30->pos); - BoardModelRotSetV(lbl_1_bss_6C4[i], &temp_r30->rot); - BoardModelScaleSetV(lbl_1_bss_6C4[i], &temp_r30->scale); - BoardModelVisibilitySet(lbl_1_bss_6C4[i], 1); + else { + mapObjMotTbl = NULL; + } + mapObjMdlId[i] = BoardModelCreate(mapObj->data_num, mapObjMotTbl, 0); + BoardModelPosSetV(mapObjMdlId[i], &mapObj->pos); + BoardModelRotSetV(mapObjMdlId[i], &mapObj->rot); + BoardModelScaleSetV(mapObjMdlId[i], &mapObj->scale); + BoardModelVisibilitySet(mapObjMdlId[i], 1); } } - BoardModelMotionStart(lbl_1_bss_6C4[2], 1, 0x40000001); - BoardModelMotionStart(lbl_1_bss_6C4[3], 1, 0x40000001); - BoardModelMotionStart(lbl_1_bss_6C4[4], 1, 0x40000001); - BoardModelMotionStart(lbl_1_bss_6C4[5], 1, 0x40000001); - fn_1_543C(); - fn_1_9E8(); - fn_1_1700(); - BoardSpaceWalkEventFuncSet(fn_1_814); - BoardSpaceWalkMiniEventFuncSet(fn_1_157C); - BoardSpaceLandEventFuncSet(fn_1_778); - BoardStarHostSet(lbl_1_data_52C); - BoardBooHouseHostSet(lbl_1_data_52E); - BoardLotteryHostSet(lbl_1_data_52E); - BoardShopHostSet(lbl_1_data_52E); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_HOST1], 1, HU3D_MOTATTR_LOOP); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_HOST2], 1, HU3D_MOTATTR_LOOP); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_HOST3], 1, HU3D_MOTATTR_LOOP); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_HOST4], 1, HU3D_MOTATTR_LOOP); + CupInit(); + MapObjDispSet(); + CoasterInit(); + BoardSpaceWalkEventFuncSet(WalkEvent); + BoardSpaceWalkMiniEventFuncSet(WalkMiniEvent); + BoardSpaceLandEventFuncSet(LandEvent); + BoardStarHostSet(starHostMdl); + BoardBooHouseHostSet(hostMdl); + BoardLotteryHostSet(hostMdl); + BoardShopHostSet(hostMdl); BoardJunctionMaskSet(0xC000); BoardJunctionMaskSet(0x3000); } -void BoardDestroy(void) { +void BoardDestroy(void) +{ s32 i; - fn_1_4864(); + CoasterWinKill(); fn_1_D00(); - for (i = 0; i < 33; i++) { - if (lbl_1_bss_6C4[i] != 0) { - BoardModelKill(lbl_1_bss_6C4[i]); - lbl_1_bss_6C4[i] = 0; + for (i = 0; i < MAPOBJ_MAX; i++) { + if (mapObjMdlId[i] != 0) { + BoardModelKill(mapObjMdlId[i]); + mapObjMdlId[i] = 0; } } - if (lbl_1_data_530 != -1) { - BoardModelKill(lbl_1_data_530); - lbl_1_data_530 = -1; + if (syuppouMdl != -1) { + BoardModelKill(syuppouMdl); + syuppouMdl = -1; } - if (lbl_1_data_52E != -1) { - BoardModelKill(lbl_1_data_52E); - lbl_1_data_52E = -1; + if (hostMdl != -1) { + BoardModelKill(hostMdl); + hostMdl = -1; } - if (lbl_1_data_52C != -1) { - BoardModelKill(lbl_1_data_52C); - lbl_1_data_52C = -1; + if (starHostMdl != -1) { + BoardModelKill(starHostMdl); + starHostMdl = -1; } - if (lbl_1_data_528 != -1) { - BoardModelKill(lbl_1_data_528); - lbl_1_data_528 = -1; + if (bgMdl != -1) { + BoardModelKill(bgMdl); + bgMdl = -1; } - if (lbl_1_data_52A != -1) { - BoardModelKill(lbl_1_data_52A); - lbl_1_data_52A = -1; + if (fgMdl != -1) { + BoardModelKill(fgMdl); + fgMdl = -1; } BoardSpaceDestroy(); } -static void fn_1_730(void) { - s16 var_r31; +static void LightSetHook(void) +{ + s16 modelId; - var_r31 = BoardModelIDGet(lbl_1_data_528); - Hu3DModelLightInfoSet(var_r31, 1); + modelId = BoardModelIDGet(bgMdl); + Hu3DModelLightInfoSet(modelId, 1); } -static void fn_1_774(void) { -} +static void LightResetHook(void) { } -static s32 fn_1_778(void) { - s32 temp_r31; - s32 temp_r30; - u32 temp_r29; +static s32 LandEvent(void) +{ + s32 playerNo; + s32 spaceId; + u32 flag; - temp_r31 = GWSystem.player_curr; - temp_r30 = GWPlayer[temp_r31].space_curr; - temp_r29 = BoardSpaceFlagGet(0, temp_r30); - if (temp_r29 & 0x800) { - fn_1_77EC(temp_r31, temp_r30); - } else if (temp_r29 & 0x400) { - fn_1_7528(temp_r31, temp_r30); + playerNo = GWSystem.player_curr; + spaceId = GWPlayer[playerNo].space_curr; + flag = BoardSpaceFlagGet(0, spaceId); + if (flag & 0x800) { + CoasterLandEvent(playerNo, spaceId); + } + else if (flag & 0x400) { + CupLandEvent(playerNo, spaceId); } } -static s32 fn_1_814(void) { - s32 temp_r27; - s32 var_r30; - s32 var_r29; - s32 var_r26; - BoardSpace *temp_r31; - BoardSpace *temp_r28; +static s32 WalkEvent(void) +{ + s32 playerNo; + s32 i; + s32 type; + s32 spaceLinkId; + BoardSpace *space; + BoardSpace *spaceLink; - temp_r27 = GWSystem.player_curr; - temp_r31 = BoardSpaceGet(0, GWPlayer[temp_r27].space_curr); - if (temp_r31->flag & 0x3000) { - if (BoardPlayerSizeGet(temp_r27) == 2 || GWPlayer[temp_r27].bowser_suit) { + playerNo = GWSystem.player_curr; + space = BoardSpaceGet(0, GWPlayer[playerNo].space_curr); + if (space->flag & 0x3000) { + if (BoardPlayerSizeGet(playerNo) == 2 || GWPlayer[playerNo].bowser_suit) { return 0; } - if (temp_r31->flag & 0x2000) { - if (lbl_1_bss_0->unk00_field0 != 0) { - return 0; - } - } else if (temp_r31->flag & 0x1000) { - if (lbl_1_bss_0->unk00_field0 != 1) { + if (space->flag & 0x2000) { + if (boardWork->hostSide != 0) { return 0; } } - fn_1_4FD8(); + else if (space->flag & 0x1000) { + if (boardWork->hostSide != 1) { + return 0; + } + } + CoasterEvent(); return 1; } - var_r29 = -1; - for (var_r30 = 0; var_r30 < temp_r31->link_cnt; var_r30++) { - if (temp_r31->link[var_r30] != -1) { - temp_r28 = BoardSpaceGet(0, temp_r31->link[var_r30]); - if (temp_r28->flag & 0x8000) { - var_r29 = 0; - var_r26 = temp_r31->link[var_r30]; + type = -1; + for (i = 0; i < space->link_cnt; i++) { + if (space->link[i] != -1) { + spaceLink = BoardSpaceGet(0, space->link[i]); + if (spaceLink->flag & 0x8000) { + type = 0; + spaceLinkId = space->link[i]; break; - } else if (temp_r28->flag & 0x4000) { - var_r29 = 1; - var_r26 = temp_r31->link[var_r30]; + } + else if (spaceLink->flag & 0x4000) { + type = 1; + spaceLinkId = space->link[i]; break; } } } - if (var_r29 != -1) { - fn_1_586C(var_r29, var_r26); + if (type != -1) { + CupEvent(type, spaceLinkId); return 1; } return 0; } -static void fn_1_9E8(void) { - BoardModelVisibilitySet(lbl_1_bss_6C4[6], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[7], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[8], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[9], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[10], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[11], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[12], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[13], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[14], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[15], 1); - BoardModelMotionStart(lbl_1_bss_6C4[6], 0, 0); - BoardModelMotionSpeedSet(lbl_1_bss_6C4[6], 0.0f); - BoardModelMotionStart(lbl_1_bss_6C4[14], 0, 0x40000001); - BoardModelMotionStart(lbl_1_bss_6C4[15], 0, 0x40000001); - BoardModelHookSet(lbl_1_bss_6C4[6], "amida_ban_07-sirenr", lbl_1_bss_6C4[14]); - BoardModelHookSet(lbl_1_bss_6C4[6], "amida_ban_07-sirenl", lbl_1_bss_6C4[15]); - BoardModelVisibilitySet(lbl_1_bss_6C4[16], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[17], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[18], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[19], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[21], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[22], 1); - BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0); - BoardModelMotionSpeedSet(lbl_1_bss_6C4[21], 0.0f); - BoardModelMotionStart(lbl_1_bss_6C4[18], 0, 0); - BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f); - BoardModelExistDupe(lbl_1_bss_6C4[16], 0); - BoardModelMotionStart(lbl_1_bss_6C4[16], 0, 0x40000001); - BoardModelMotionStart(lbl_1_bss_6C4[17], 0, 0x40000001); - BoardModelMotionStart(lbl_1_bss_6C4[22], 0, 0x40000001); - BoardModelHookSet(lbl_1_bss_6C4[21], "m_goraund_01-flag1", lbl_1_bss_6C4[22]); +static void MapObjDispSet(void) +{ + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_MAP1], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_MAP2], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_MAP3], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_ROCKET1], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_ROCKET2], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_ROCKET3], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_LIGHTEFF], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_LAMP1], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_SPACEAMIDA_LAMP2], 1); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_SPACEAMIDA], 0, 0); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_SPACEAMIDA], 0.0f); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_SPACEAMIDA_LAMP1], 0, HU3D_MOTATTR_LOOP); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_SPACEAMIDA_LAMP2], 0, HU3D_MOTATTR_LOOP); + BoardModelHookSet(mapObjMdlId[MAPOBJ_SPACEAMIDA], "amida_ban_07-sirenr", mapObjMdlId[MAPOBJ_SPACEAMIDA_LAMP1]); + BoardModelHookSet(mapObjMdlId[MAPOBJ_SPACEAMIDA], "amida_ban_07-sirenl", mapObjMdlId[MAPOBJ_SPACEAMIDA_LAMP2]); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_DENSYOKU], 1); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 0, 0); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 0.0f); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], 0, 0); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], 0.0f); + BoardModelExistDupe(mapObjMdlId[MAPOBJ_ROUNDITEM], 0); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM], 0, HU3D_MOTATTR_LOOP); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA], 0, HU3D_MOTATTR_LOOP); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_DENSYOKU], 0, HU3D_MOTATTR_LOOP); + BoardModelHookSet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], "m_goraund_01-flag1", mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_DENSYOKU]); } -static void fn_1_D00(void) { -} +static void fn_1_D00(void) { } -static void fn_1_D04(void) { - Vec sp3C; - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - s8 sp8[4]; - s32 temp_r28; - s32 temp_r3; - s32 var_r26; - s32 var_r25; - s32 temp_r30; +static void RoundItemMain(void) +{ + Vec spacePos; + s8 comItem[4]; + s32 spaceStart; + s32 spaceEnd; + s32 comPlayF; + s32 choice; + s32 playerNo; s32 i; s32 j; - temp_r30 = GWSystem.player_curr; - var_r26 = 0; - if (BoardPlayerItemCount(temp_r30) == 3) { + playerNo = GWSystem.player_curr; + comPlayF = FALSE; + if (BoardPlayerItemCount(playerNo) == 3) { BoardWinCreate(0, MAKE_MESSID(10, 9), 0); BoardWinWait(); BoardWinKill(); HuPrcEnd(); } - lbl_1_bss_6B6[0] = 0; + roundItemTbl[0] = 0; i = 1; while (i < 4) { - lbl_1_bss_6B6[i] = frandmod(14); - if (lbl_1_bss_6B6[i] != 10 && lbl_1_bss_6B6[i] != 13) { + roundItemTbl[i] = frandmod(14); + if (roundItemTbl[i] != 10 && roundItemTbl[i] != 13) { for (j = 0; j < i; j++) { - if (lbl_1_bss_6B6[i] == lbl_1_bss_6B6[j]) { - lbl_1_bss_6B6[i] = -1; + if (roundItemTbl[i] == roundItemTbl[j]) { + roundItemTbl[i] = -1; } } - if (lbl_1_bss_6B6[i] != -1) { + if (roundItemTbl[i] != -1) { i++; } } } - fn_1_D740(lbl_1_bss_6B6); + RoundItemInit(roundItemTbl); for (i = 0; i < 4; i++) { - sp8[i] = lbl_1_bss_6B6[i]; + comItem[i] = roundItemTbl[i]; } - if (BoardComPreferItemGet(temp_r30, sp8, 4) != -1) { - var_r26 = 1; + if (BoardComPreferItemGet(playerNo, comItem, 4) != -1) { + comPlayF = TRUE; } HuAudFXPlay(0x40D); HuAudFXPlay(0x40E); - BoardModelAttrReset(lbl_1_bss_6C4[21], 0x40000004); - BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0); - temp_r28 = GWPlayer[temp_r30].space_curr; - temp_r3 = BoardSpaceLinkFlagSearch(0, temp_r28, 0x02000000); - BoardSpacePosGet(0, temp_r3, &sp3C); - sp30.x = 150.0f; - sp30.y = 0.0f; - sp30.z = 0.0f; - sp24.x = -45.0f; - sp24.y = 0.0f; - sp24.z = 0.0f; - BoardCameraMotionStartEx(lbl_1_bss_6C4[4], &sp24, &sp30, 1880.0f, -1.0f, 21); + BoardModelAttrReset(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], HU3D_MOTATTR_REV); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 0, 0); + spaceStart = GWPlayer[playerNo].space_curr; + spaceEnd = BoardSpaceLinkFlagSearch(0, spaceStart, 0x02000000); + BoardSpacePosGet(0, spaceEnd, &spacePos); + { + Vec cameraOfs; + Vec cameraRot; + cameraOfs.x = 150.0f; + cameraOfs.y = 0.0f; + cameraOfs.z = 0.0f; + cameraRot.x = -45.0f; + cameraRot.y = 0.0f; + cameraRot.z = 0.0f; + BoardCameraMotionStartEx(mapObjMdlId[MAPOBJ_HOST3], &cameraRot, &cameraOfs, 1880.0f, -1.0f, 21); + } BoardCameraMotionWait(); BoardWinCreateChoice(2, MAKE_MESSID(10, 0), 0, 0); - if (GWPlayer[temp_r30].com) { - if (var_r26 != 0) { + if (GWPlayer[playerNo].com) { + if (comPlayF != 0) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } BoardWinWait(); BoardWinKill(); - var_r25 = BoardWinChoiceGet(); - if (var_r25 != 0) { + choice = BoardWinChoiceGet(); + if (choice != 0) { BoardWinCreate(2, MAKE_MESSID(10, 4), 0); BoardWinWait(); BoardWinKill(); BoardMGExit(); HuAudFXPlay(0x40F); - BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004); - while (!BoardModelMotionEndCheck(lbl_1_bss_6C4[21])) { + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 0, HU3D_MOTATTR_REV); + while (!BoardModelMotionEndCheck(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP])) { HuPrcVSleep(); } - BoardModelMotionSpeedSet(lbl_1_bss_6C4[21], 0.0f); - BoardModelAttrReset(lbl_1_bss_6C4[21], 0x40000004); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 0.0f); + BoardModelAttrReset(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], HU3D_MOTATTR_REV); while (BoardMGDoneFlagGet() != 1) { HuPrcVSleep(); } BoardMGDoneFlagSet(0); - fn_1_DD84(); + RoundItemKill(); HuPrcEnd(); } - BoardPlayerMoveBetween(temp_r30, temp_r28, temp_r3); - while (GWPlayer[temp_r30].moving) { + BoardPlayerMoveBetween(playerNo, spaceStart, spaceEnd); + while (GWPlayer[playerNo].moving) { HuPrcVSleep(); } - BoardPlayerMotionStart(temp_r30, 1, 0x40000001); - sp18.x = 0.0f; - sp18.y = 0.0f; - sp18.z = 0.0f; - spC.x = -45.0f; - spC.y = 0.0f; - spC.z = 0.0f; - BoardCameraMotionStartEx(lbl_1_bss_6C4[21], &spC, &sp18, 1200.0f, -1.0f, 21); + BoardPlayerMotionStart(playerNo, 1, HU3D_MOTATTR_LOOP); + { + Vec cameraOfs; + Vec cameraRot; + cameraOfs.x = 0.0f; + cameraOfs.y = 0.0f; + cameraOfs.z = 0.0f; + cameraRot.x = -45.0f; + cameraRot.y = 0.0f; + cameraRot.z = 0.0f; + BoardCameraMotionStartEx(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], &cameraRot, &cameraOfs, 1200.0f, -1.0f, 21); + } BoardCameraMotionWait(); - fn_1_DE94(); + RoundItemEventStart(); while (BoardEventFlagGet() != 0) { HuPrcVSleep(); } BoardCameraMotionWait(); BoardAudSeqPause(0, 0, 1000); - while (GWPlayer[temp_r30].moving) { + while (GWPlayer[playerNo].moving) { HuPrcVSleep(); } - BoardPlayerMotionStart(temp_r30, 1, 0x40000001); + BoardPlayerMotionStart(playerNo, 1, HU3D_MOTATTR_LOOP); HuPrcEnd(); } -static void fn_1_1254(void) { +static void RoundItemDestroy(void) +{ BoardWinKill(); CharModelDataClose(-1); - lbl_1_bss_4 = NULL; + roundItemProc = NULL; } -static void fn_1_128C(void) { - lbl_1_bss_4 = HuPrcChildCreate(fn_1_D04, 0x2003, 0x2000, 0, boardMainProc); - HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1254); - while (lbl_1_bss_4) { +static void RoundItemEvent(void) +{ + roundItemProc = HuPrcChildCreate(RoundItemMain, 0x2003, 0x2000, 0, boardMainProc); + HuPrcDestructorSet2(roundItemProc, RoundItemDestroy); + while (roundItemProc) { HuPrcVSleep(); } } -static void fn_1_130C(void) { - Vec sp20; - Vec sp14; - Vec sp8; - s32 temp_r31; - s32 var_r28; - s32 temp_r30; - s32 temp_r3; +static void SpaceAmidaEvent(void) +{ + Vec spacePos; + s32 playerNo; + s32 choice; + s32 spaceStart; + s32 spaceEnd; - temp_r31 = GWSystem.player_curr; + playerNo = GWSystem.player_curr; BoardWinCreateChoice(2, MAKE_MESSID(11, 0), 0, 0); - if (GWPlayer[temp_r31].com) { + if (GWPlayer[playerNo].com) { BoardComKeySetLeft(); } BoardWinWait(); BoardWinKill(); - var_r28 = BoardWinChoiceGet(); - if (var_r28 != 0) { + choice = BoardWinChoiceGet(); + if (choice != 0) { BoardWinCreate(2, MAKE_MESSID(11, 4), 0); BoardWinWait(); BoardWinKill(); BoardMGExit(); return; } - BoardModelMotionStart(lbl_1_bss_6C4[6], 0, 0); - sp14.x = 0.0f; - sp14.y = 0.0f; - sp14.z = 0.0f; - sp8.x = 0.0f; - sp8.y = 170.0f; - sp8.z = 0.0f; - BoardCameraMotionStartEx(lbl_1_bss_6C4[6], &sp14, &sp8, 1200.0f, 25.0f, 21); - temp_r30 = GWPlayer[temp_r31].space_curr; - temp_r3 = BoardSpaceLinkFlagSearch(0, temp_r30, 0x02000000); - BoardSpacePosGet(0, temp_r3, &sp20); - BoardPlayerMoveBetween(temp_r31, temp_r30, temp_r3); - BoardPlayerMotionStart(temp_r31, 1, 0x40000001); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_SPACEAMIDA], 0, 0); + { + Vec cameraOfs; + Vec cameraRot; + cameraOfs.x = 0.0f; + cameraOfs.y = 0.0f; + cameraOfs.z = 0.0f; + cameraRot.x = 0.0f; + cameraRot.y = 170.0f; + cameraRot.z = 0.0f; + BoardCameraMotionStartEx(mapObjMdlId[MAPOBJ_SPACEAMIDA], &cameraOfs, &cameraRot, 1200.0f, 25.0f, 21); + } + + spaceStart = GWPlayer[playerNo].space_curr; + spaceEnd = BoardSpaceLinkFlagSearch(0, spaceStart, 0x02000000); + BoardSpacePosGet(0, spaceEnd, &spacePos); + BoardPlayerMoveBetween(playerNo, spaceStart, spaceEnd); + BoardPlayerMotionStart(playerNo, 1, HU3D_MOTATTR_LOOP); BoardAudSeqPause(0, 1, 1000); - fn_1_9DD8(); - while (GWPlayer[temp_r31].moving) { + SpaceAmidaExec(); + while (GWPlayer[playerNo].moving) { HuPrcVSleep(); } while (BoardEventFlagGet() != 0) { HuPrcVSleep(); } BoardAudSeqPause(0, 0, 1000); - while (GWPlayer[temp_r31].moving) { + while (GWPlayer[playerNo].moving) { HuPrcVSleep(); } - BoardPlayerMotionStart(temp_r31, 1, 0x40000001); + BoardPlayerMotionStart(playerNo, 1, HU3D_MOTATTR_LOOP); } -static s32 fn_1_157C(void) { - s32 temp_r31; - s16 temp_curr; +static s32 WalkMiniEvent(void) +{ + s32 flag; + s16 spaceId; - temp_curr = GWPlayer[GWSystem.player_curr].space_curr; - temp_r31 = BoardSpaceFlagGet(0, temp_curr) & 0x600000; + spaceId = GWPlayer[GWSystem.player_curr].space_curr; + flag = BoardSpaceFlagGet(0, spaceId) & 0x600000; BoardRollDispSet(0); - if (temp_r31 == 0x200000) { - fn_1_130C(); - } else if (temp_r31 == 0x400000) { - fn_1_128C(); + if (flag == 0x200000) { + SpaceAmidaEvent(); + } + else if (flag == 0x400000) { + RoundItemEvent(); } BoardRollDispSet(1); } -static void fn_1_1670(void) { - if (lbl_1_bss_0->unk00_field0 == 0) { - BoardModelVisibilitySet(lbl_1_bss_6C4[2], 1); - BoardModelVisibilitySet(lbl_1_bss_6C4[3], 0); - } else { - BoardModelVisibilitySet(lbl_1_bss_6C4[2], 0); - BoardModelVisibilitySet(lbl_1_bss_6C4[3], 1); +static void UpdateHostDisp(void) +{ + if (boardWork->hostSide == 0) { + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_HOST1], 1); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_HOST2], 0); + } + else { + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_HOST1], 0); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_HOST2], 1); } } -static void fn_1_1700(void) { - Vec sp8; - Mtx sp14; +static void CoasterInit(void) +{ + Vec pos; + Mtx matrix; - lbl_1_bss_6B1 = 0; - lbl_1_bss_6AE = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 10), NULL, 0); - lbl_1_bss_644 = BoardModelMotionMaxTimeGet(lbl_1_bss_6AE); - BoardModelVisibilitySet(lbl_1_bss_6AE, 0); + coasterLandF = 0; + coasterPathMdlId = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 10), NULL, 0); + coasterMaxTime = BoardModelMotionMaxTimeGet(coasterPathMdlId); + BoardModelVisibilitySet(coasterPathMdlId, 0); memset(lbl_1_bss_2C, 0, sizeof(lbl_1_bss_2C)); if (BoardSpaceRead(1, DATA_MAKE_NUM(DATADIR_W01, 6)) == 0) { - if (lbl_1_bss_0->unk00_field0 == 0) { - BoardSpaceFlagPosGet(1, 0x2000, &sp8); - BoardModelMotionTimeSet(lbl_1_bss_6AE, lbl_1_bss_644); - lbl_1_bss_63C = -90.0f; - } else { - BoardSpaceFlagPosGet(1, 0x1000, &sp8); - BoardModelMotionTimeSet(lbl_1_bss_6AE, 0.0f); - lbl_1_bss_63C = 90.0f; + if (boardWork->hostSide == 0) { + BoardSpaceFlagPosGet(1, 0x2000, &pos); + BoardModelMotionTimeSet(coasterPathMdlId, coasterMaxTime); + coasterBaseRotY = -90.0f; } - lbl_1_bss_654 = sp8; - BoardModelPosSetV(lbl_1_bss_6C4[0], &sp8); - BoardModelRotSet(lbl_1_bss_6C4[0], 0.0f, lbl_1_bss_63C, 0.0f); - BoardModelExistDupe(lbl_1_bss_6C4[0], 1); - BoardModelExistDupe(lbl_1_bss_6C4[1], 1); - fn_8006DDE8(lbl_1_bss_6C4[1], 500.0f); - PSMTXIdentity(sp14); - BoardModelMtxSet(lbl_1_bss_6C4[0], &sp14); - fn_1_1670(); + else { + BoardSpaceFlagPosGet(1, 0x1000, &pos); + BoardModelMotionTimeSet(coasterPathMdlId, 0.0f); + coasterBaseRotY = 90.0f; + } + coasterPos = pos; + BoardModelPosSetV(mapObjMdlId[MAPOBJ_COASTER], &pos); + BoardModelRotSet(mapObjMdlId[MAPOBJ_COASTER], 0.0f, coasterBaseRotY, 0.0f); + BoardModelExistDupe(mapObjMdlId[MAPOBJ_COASTER], 1); + BoardModelExistDupe(mapObjMdlId[MAPOBJ_COASTER_RAIL], 1); + fn_8006DDE8(mapObjMdlId[MAPOBJ_COASTER_RAIL], 500.0f); + MTXIdentity(matrix); + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &matrix); + UpdateHostDisp(); } } -static void fn_1_1990(void) { - Vec sp10; - float var_f31; - s32 var_r29; - s32 var_r30; - s16 sp8[3]; - BoardSpace *temp_r31; - BoardSpace *temp_r3; +static void CoasterPathUpdate(void) +{ + Vec diff; + float time; + s32 spaceId; + s32 spaceIdLink; + s16 linkTbl[3]; + BoardSpace *space; + BoardSpace *spaceLink; - var_r29 = lbl_1_bss_6AC; - var_f31 = 0.0f; + spaceId = coasterStartSpace; + time = 0.0f; while (TRUE) { - temp_r31 = BoardSpaceGet(1, var_r29); - if (lbl_1_bss_0->unk00_field0 == 0) { - var_r30 = temp_r31->link[0]; - } else { - BoardSpaceLinkTargetListGet(1, var_r29, sp8); - var_r30 = sp8[0]; + space = BoardSpaceGet(1, spaceId); + if (boardWork->hostSide == 0) { + spaceIdLink = space->link[0]; } - if (var_r30 == 0) { + else { + BoardSpaceLinkTargetListGet(1, spaceId, linkTbl); + spaceIdLink = linkTbl[0]; + } + if (spaceIdLink == 0) { break; } - temp_r3 = BoardSpaceGet(1, var_r30); - if (!temp_r3) { - temp_r3 = temp_r31; + spaceLink = BoardSpaceGet(1, spaceIdLink); + if (!spaceLink) { + spaceLink = space; break; } - PSVECSubtract(&temp_r3->pos, &temp_r31->pos, &sp10); - var_f31 += PSVECMag(&sp10); - if (var_f31 >= lbl_1_bss_640) { + VECSubtract(&spaceLink->pos, &space->pos, &diff); + time += VECMag(&diff); + if (time >= coasterTime) { break; } - var_r29 = var_r30; + spaceId = spaceIdLink; } - if (temp_r31->flag & 8) { - lbl_1_bss_6B3 = 1; - } else { - lbl_1_bss_6B3 = 0; + if (space->flag & 8) { + coasterLoopF = 1; + } + else { + coasterLoopF = 0; } } -static void fn_1_1AD8(BoardCameraData *camera) { - camera->pos = lbl_1_bss_630; - camera->up = lbl_1_bss_624; - camera->target = lbl_1_bss_618; +static void CoasterPosCalc(BoardCameraData *camera) +{ + camera->pos = coasterCameraPos; + camera->up = coasterCameraUp; + camera->target = coasterCameraTarget; } -static void fn_1_1B3C(void) { - Vec sp3C; - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - Mtx sp48; +static void CoasterCameraUpdate(void) +{ + Vec modelPos; + Vec diff; + Vec target; + Vec up; + Vec pos; + Mtx matrix; - PSVECSubtract(&lbl_1_bss_654, &lbl_1_bss_648, &sp30); - if (lbl_1_bss_6B3 != 0) { - BoardModelPosGet(lbl_1_bss_6C4[1], &sp3C); - PSVECSubtract(&sp3C, &lbl_1_bss_654, &sp18); - PSVECNormalize(&sp18, &sp18); - sp24 = lbl_1_bss_648; - spC = lbl_1_bss_654; - BoardMTXCalcLookAt(sp48, &spC, &sp18, &sp24); - PSMTXTranspose(sp48, lbl_1_bss_678); - PSMTXRotRad(sp48, 'z', MTXDegToRad(lbl_1_bss_660.z)); - PSMTXConcat(lbl_1_bss_678, sp48, lbl_1_bss_678); - } else { - if (sp30.z != 0.0f || sp30.x != 0.0f) { - lbl_1_bss_660.y = atan2d(sp30.x, sp30.z); - lbl_1_bss_660.x = -atan2d(sp30.y, VECMagXZ(&sp30)); - } else { - lbl_1_bss_660.x = lbl_1_bss_660.y = 0.0f; + VECSubtract(&coasterPos, &coasterPosOld, &diff); + if (coasterLoopF != 0) { + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER_RAIL], &modelPos); + VECSubtract(&modelPos, &coasterPos, &up); + VECNormalize(&up, &up); + target = coasterPosOld; + pos = coasterPos; + BoardMTXCalcLookAt(matrix, &pos, &up, &target); + MTXTranspose(matrix, coasterMtx); + MTXRotRad(matrix, 'z', MTXDegToRad(coasterRot.z)); + MTXConcat(coasterMtx, matrix, coasterMtx); + } + else { + if (diff.z != 0.0f || diff.x != 0.0f) { + coasterRot.y = atan2d(diff.x, diff.z); + coasterRot.x = -atan2d(diff.y, VECMagXZ(&diff)); } - PSMTXRotRad(lbl_1_bss_678, 'z', MTXDegToRad(lbl_1_bss_660.z)); - PSMTXRotRad(sp48, 'x', MTXDegToRad(lbl_1_bss_660.x)); - PSMTXConcat(sp48, lbl_1_bss_678, lbl_1_bss_678); - PSMTXRotRad(sp48, 'y', MTXDegToRad(lbl_1_bss_660.y)); - PSMTXConcat(sp48, lbl_1_bss_678, lbl_1_bss_678); + else { + coasterRot.x = coasterRot.y = 0.0f; + } + MTXRotRad(coasterMtx, 'z', MTXDegToRad(coasterRot.z)); + MTXRotRad(matrix, 'x', MTXDegToRad(coasterRot.x)); + MTXConcat(matrix, coasterMtx, coasterMtx); + MTXRotRad(matrix, 'y', MTXDegToRad(coasterRot.y)); + MTXConcat(matrix, coasterMtx, coasterMtx); } } -static void fn_1_1EE4(void) { - Bss10Work *temp_r31; +static void CoasterCameraObjKill(void) +{ + CoasterCameraWork *work; - if (lbl_1_bss_10) { - temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_10, Bss10Work); - temp_r31->unk00_field0 = 1; + if (coasterCameraObj) { + work = OM_GET_WORK_PTR(coasterCameraObj, CoasterCameraWork); + work->killF = TRUE; } } -static void fn_1_1F2C(omObjData *arg0) { - Bss10Work *temp_r31 = OM_GET_WORK_PTR(arg0, Bss10Work); +static void CoasterCameraObjMain(omObjData *obj) +{ + CoasterCameraWork *work = OM_GET_WORK_PTR(obj, CoasterCameraWork); - if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { - omDelObjEx(HuPrcCurrentGet(), arg0); - lbl_1_bss_10 = NULL; + if (work->killF != 0 || BoardIsKill()) { + omDelObjEx(HuPrcCurrentGet(), obj); + coasterCameraObj = NULL; return; } - fn_1_1FA4(); + CoasterCameraObjUpdate(); } -static void fn_1_1FA4(void) { - Vec sp18; - Vec spC; - float temp_f28; - float temp_f29; - float var_f27; +static void CoasterCameraObjUpdate(void) +{ + Vec modelPos; + Vec pos; + float angleY; + float angleX; + float radius; - spC.x = lbl_1_bss_648.x; - spC.y = lbl_1_bss_648.y + 200.0f; - spC.z = lbl_1_bss_648.z; - PSVECSubtract(&spC, &lbl_1_bss_618, &spC); - PSVECScale(&spC, &spC, 0.08f); - PSVECAdd(&spC, &lbl_1_bss_618, &lbl_1_bss_618); - PSVECSubtract(&lbl_1_bss_654, &lbl_1_bss_648, &spC); - if (spC.x != 0.0f || spC.z != 0.0f) { - temp_f29 = atan2f(spC.y, VECMagXZ(&spC)); - temp_f28 = atan2f(-spC.x, -spC.z); - } else { - temp_f29 = temp_f28 = 0.0f; + pos.x = coasterPosOld.x; + pos.y = coasterPosOld.y + 200.0f; + pos.z = coasterPosOld.z; + VECSubtract(&pos, &coasterCameraTarget, &pos); + VECScale(&pos, &pos, 0.08f); + VECAdd(&pos, &coasterCameraTarget, &coasterCameraTarget); + VECSubtract(&coasterPos, &coasterPosOld, &pos); + if (pos.x != 0.0f || pos.z != 0.0f) { + angleX = atan2f(pos.y, VECMagXZ(&pos)); + angleY = atan2f(-pos.x, -pos.z); + } + else { + angleX = angleY = 0.0f; return; } - temp_f29 += -0.27925268f; - if (lbl_1_bss_6B3 != 0) { - if (lbl_1_bss_66C < 0.08f) { - lbl_1_bss_66C -= 0.00033333333f; + angleX += -0.27925268f; + if (coasterLoopF != 0) { + if (coasterCamSpeed < 0.08f) { + coasterCamSpeed -= 0.00033333333f; } - BoardModelPosGet(lbl_1_bss_6C4[1], &sp18); - if (lbl_1_bss_0->unk00_field0 == 0) { - var_f27 = -2500.0f; - } else { - var_f27 = 2500.0f; + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER_RAIL], &modelPos); + if (boardWork->hostSide == 0) { + radius = -2500.0f; } - sp18.x = sp18.x + var_f27 * sin(1.4137166738510132); // TODO: should be sind(81) - sp18.y = sp18.y + -150.0f; - sp18.z = sp18.z + var_f27 * cos(1.4137166738510132); // TODO: should be cosd(81) - PSVECSubtract(&sp18, &lbl_1_bss_630, &spC); - PSVECScale(&spC, &spC, lbl_1_bss_66C); - PSVECAdd(&spC, &lbl_1_bss_630, &lbl_1_bss_630); - } else { - if (lbl_1_bss_66C < 0.08f) { - lbl_1_bss_66C += 0.00066666666f; + else { + radius = 2500.0f; } - spC.x = 400.0 * (sin(temp_f28) * cos(temp_f29)); - spC.y = 400.0 * -sin(temp_f29); - spC.z = 400.0 * (cos(temp_f28) * cos(temp_f29)); - PSVECAdd(&lbl_1_bss_618, &spC, &spC); - PSVECSubtract(&spC, &lbl_1_bss_630, &spC); - PSVECScale(&spC, &spC, lbl_1_bss_66C); - PSVECAdd(&spC, &lbl_1_bss_630, &lbl_1_bss_630); + modelPos.x = modelPos.x + radius * sin(1.4137166738510132); // TODO: should be sind(81) + modelPos.y = modelPos.y + -150.0f; + modelPos.z = modelPos.z + radius * cos(1.4137166738510132); // TODO: should be cosd(81) + VECSubtract(&modelPos, &coasterCameraPos, &pos); + VECScale(&pos, &pos, coasterCamSpeed); + VECAdd(&pos, &coasterCameraPos, &coasterCameraPos); + } + else { + if (coasterCamSpeed < 0.08f) { + coasterCamSpeed += 0.00066666666f; + } + pos.x = 400.0 * (sin(angleY) * cos(angleX)); + pos.y = 400.0 * -sin(angleX); + pos.z = 400.0 * (cos(angleY) * cos(angleX)); + VECAdd(&coasterCameraTarget, &pos, &pos); + VECSubtract(&pos, &coasterCameraPos, &pos); + VECScale(&pos, &pos, coasterCamSpeed); + VECAdd(&pos, &coasterCameraPos, &coasterCameraPos); } } -static float fn_1_2524(void) { - Vec sp24; - Vec sp18; - Vec spC; - float var_f30; - s16 sp8; - s32 var_r29; +static float CoasterStickRotGet(void) +{ + Vec basePos; + Vec modelPos; + Vec diff; + float stickRot; + s16 stkX; + s32 padNo; s32 i; - sp24 = lbl_1_bss_654; - if (GWPlayer[lbl_1_bss_6B4].com) { - if (lbl_1_bss_6B3 != 0) { + basePos = coasterPos; + if (GWPlayer[eventPlayer].com) { + if (coasterLoopF != 0) { return 0.0f; } for (i = 0; i < 24; i++) { - if (lbl_1_bss_600[i] == 0) { - BoardModelPosGet(lbl_1_bss_5D0[i], &sp18); - PSVECSubtract(&sp18, &sp24, &spC); - if (!(PSVECMag(&spC) > 400.0f)) { + if (coasterCoinF[i] == 0) { + BoardModelPosGet(coasterCoinMdlId[i], &modelPos); + VECSubtract(&modelPos, &basePos, &diff); + if (!(VECMag(&diff) > 400.0f)) { break; } } @@ -879,102 +908,104 @@ static float fn_1_2524(void) { if (i == 24) { return 0.0f; } - PSVECSubtract(&sp18, &sp24, &spC); - var_f30 = atan2d(spC.x, spC.z); - if (var_f30 > 0.0f) { - var_f30 = 45.0f; - } else { - var_f30 = -45.0f; + VECSubtract(&modelPos, &basePos, &diff); + stickRot = atan2d(diff.x, diff.z); + if (stickRot > 0.0f) { + stickRot = 45.0f; + } + else { + stickRot = -45.0f; } - } else { - var_r29 = GWPlayer[lbl_1_bss_6B4].port; - sp8 = HuPadStkX[var_r29]; - OSs16tof32(&sp8, &var_f30); - var_f30 = var_f30 * 0.625f; } - return var_f30; + else { + padNo = GWPlayer[eventPlayer].port; + stkX = HuPadStkX[padNo]; + OSs16tof32(&stkX, &stickRot); + stickRot = stickRot * 0.625f; + } + return stickRot; } -static void fn_1_276C(void) { - Vec sp58; - Vec sp40; - Vec sp34; - Vec sp28; - Vec sp1C; - float temp_f26; - float var_f27; +static void CoasterRotUpdate(void) +{ + float motTime; + float stickRot; Mtx sp70; - fn_1_1B3C(); - if (lbl_1_bss_6B1 != 0) { - lbl_1_bss_660.z = 0.0f; + CoasterCameraUpdate(); + if (coasterLandF != 0) { + coasterRot.z = 0.0f; return; } - var_f27 = fn_1_2524(); - BoardDAngleCalcRange(&lbl_1_bss_660.z, var_f27, 5.0f); - temp_f26 = 6.0f + 6.0f * (lbl_1_bss_660.z / 45.0f) - 1.0f; - if (lbl_1_bss_660.z > 22.5f) { - BoardPlayerMotionStart(lbl_1_bss_6B4, lbl_1_bss_5CC[1], 0); - BoardPlayerMotionTimeSet(lbl_1_bss_6B4, temp_f26); - } else if (lbl_1_bss_660.z < -22.5f) { - BoardPlayerMotionStart(lbl_1_bss_6B4, lbl_1_bss_5CC[1], 0); - BoardPlayerMotionTimeSet(lbl_1_bss_6B4, temp_f26); - } else { - BoardPlayerMotionShiftSet(lbl_1_bss_6B4, lbl_1_bss_5CC[0], 0.0f, 10.0f, 0x40000001); + stickRot = CoasterStickRotGet(); + BoardDAngleCalcRange(&coasterRot.z, stickRot, 5.0f); + motTime = 6.0f + 6.0f * (coasterRot.z / 45.0f) - 1.0f; + if (coasterRot.z > 22.5f) { + BoardPlayerMotionStart(eventPlayer, coasterMotId[1], 0); + BoardPlayerMotionTimeSet(eventPlayer, motTime); } - fn_1_2F18(); + else if (coasterRot.z < -22.5f) { + BoardPlayerMotionStart(eventPlayer, coasterMotId[1], 0); + BoardPlayerMotionTimeSet(eventPlayer, motTime); + } + else { + BoardPlayerMotionShiftSet(eventPlayer, coasterMotId[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + CoasterCoinCheck(); } -static void fn_1_2F18(void) { - Vec sp3C; - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - float var_f29; - Mtx spD8; - Mtx spA8; - Mtx sp78; - Mtx sp48; +static void CoasterCoinCheck(void) +{ + Vec coinPos; + Vec ofs; + Vec angle; + Vec diff; + Vec mdlCoasterPos; + float rotZ; + Mtx matrix; + Mtx mtxRotX; + Mtx mtxRotY; + Mtx mtxRotZ; s32 i; - if (lbl_1_bss_6B3 == 0) { - var_f29 = lbl_1_bss_660.z; - if (var_f29 > 180.0f) { - var_f29 -= 360.0f; + if (coasterLoopF == 0) { + rotZ = coasterRot.z; + if (rotZ > 180.0f) { + rotZ -= 360.0f; } - BoardModelPosGet(lbl_1_bss_6C4[0], &spC); - PSVECSubtract(&lbl_1_bss_654, &lbl_1_bss_648, &sp18); - if (sp18.z != 0.0f || sp18.x != 0.0f) { - sp24.y = atan2d(sp18.x, sp18.z); - sp24.x = -atan2d(sp18.y, VECMagXZ(&sp18)); - } else { - sp24.x = sp24.y = 0.0f; + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER], &mdlCoasterPos); + VECSubtract(&coasterPos, &coasterPosOld, &diff); + if (diff.z != 0.0f || diff.x != 0.0f) { + angle.y = atan2d(diff.x, diff.z); + angle.x = -atan2d(diff.y, VECMagXZ(&diff)); } - PSMTXTrans(spD8, 0.0f, 180.0f, 0.0f); - PSMTXRotRad(spA8, 'x', MTXDegToRad(sp24.x)); - PSMTXRotRad(sp78, 'y', MTXDegToRad(sp24.y)); - PSMTXRotRad(sp48, 'z', MTXDegToRad(var_f29)); - PSMTXConcat(spA8, sp48, sp48); - PSMTXConcat(sp78, sp48, sp48); - PSMTXConcat(sp48, spD8, spD8); - sp30.x = spD8[0][3]; - sp30.y = spD8[1][3]; - sp30.z = spD8[2][3]; - PSVECAdd(&sp30, &spC, &sp30); - if (var_f29 < 27.000002f && var_f29 > -27.000002f) { + else { + angle.x = angle.y = 0.0f; + } + MTXTrans(matrix, 0.0f, 180.0f, 0.0f); + MTXRotRad(mtxRotX, 'x', MTXDegToRad(angle.x)); + MTXRotRad(mtxRotY, 'y', MTXDegToRad(angle.y)); + MTXRotRad(mtxRotZ, 'z', MTXDegToRad(rotZ)); + MTXConcat(mtxRotX, mtxRotZ, mtxRotZ); + MTXConcat(mtxRotY, mtxRotZ, mtxRotZ); + MTXConcat(mtxRotZ, matrix, matrix); + ofs.x = matrix[0][3]; + ofs.y = matrix[1][3]; + ofs.z = matrix[2][3]; + VECAdd(&ofs, &mdlCoasterPos, &ofs); + if (rotZ < 27.000002f && rotZ > -27.000002f) { return; } for (i = 0; i < 24; i++) { - if (lbl_1_bss_600[i] == 0) { - BoardModelPosGet(lbl_1_bss_5D0[i], &sp3C); - if (BoardVecMaxDistXZCheck(&sp3C, &sp30, 180.0f)) { + if (coasterCoinF[i] == 0) { + BoardModelPosGet(coasterCoinMdlId[i], &coinPos); + if (BoardVecMaxDistXZCheck(&coinPos, &ofs, 180.0f)) { CharModelLayerSetAll(2); - CharModelCoinEffectCreate(1, &sp3C); - BoardModelVisibilitySet(lbl_1_bss_5D0[i], 0); - BoardPlayerCoinsAdd(lbl_1_bss_6B4, 1); + CharModelCoinEffectCreate(1, &coinPos); + BoardModelVisibilitySet(coasterCoinMdlId[i], 0); + BoardPlayerCoinsAdd(eventPlayer, 1); HuAudFXPlay(7); - lbl_1_bss_600[i] = 1; + coasterCoinF[i] = 1; break; } } @@ -982,232 +1013,236 @@ static void fn_1_2F18(void) { } } -static s16 lbl_1_data_580 = -1; +static s16 coasterWinId = -1; -static void fn_1_3350(void) { - Vec sp8; - s16 temp_r3; - ModelData *temp_r30; - HsfObject *temp_r31; +static void CoasterPathMotUpdate(void) +{ + Vec diff; + s16 modelId; + ModelData *modelP; + HsfObject *obj; - lbl_1_bss_674 += 0.002f; - if (lbl_1_bss_670 > 0.18f) { - lbl_1_bss_670 = 0.18f; - } else if (lbl_1_bss_670 < 0.18f) { - lbl_1_bss_670 += lbl_1_bss_674; + coasterAccel += 0.002f; + if (coasterSpeed > 0.18f) { + coasterSpeed = 0.18f; } - temp_r3 = BoardModelIDGet(lbl_1_bss_6AE); - temp_r30 = &Hu3DData[temp_r3]; - Hu3DMotionExec(temp_r3, temp_r30->unk_08, temp_r30->unk_64, 0); - temp_r31 = Hu3DModelObjPtrGet(temp_r3, "looppath-cube1"); - lbl_1_bss_648 = lbl_1_bss_654; - lbl_1_bss_654.x = temp_r31->data.curr.pos.x; - lbl_1_bss_654.y = temp_r31->data.curr.pos.y; - lbl_1_bss_654.z = temp_r31->data.curr.pos.z; - PSVECSubtract(&lbl_1_bss_648, &lbl_1_bss_654, &sp8); - lbl_1_bss_640 += PSVECMag(&sp8); + else if (coasterSpeed < 0.18f) { + coasterSpeed += coasterAccel; + } + modelId = BoardModelIDGet(coasterPathMdlId); + modelP = &Hu3DData[modelId]; + Hu3DMotionExec(modelId, modelP->unk_08, modelP->unk_64, 0); + obj = Hu3DModelObjPtrGet(modelId, "looppath-cube1"); + coasterPosOld = coasterPos; + coasterPos.x = obj->data.curr.pos.x; + coasterPos.y = obj->data.curr.pos.y; + coasterPos.z = obj->data.curr.pos.z; + VECSubtract(&coasterPosOld, &coasterPos, &diff); + coasterTime += VECMag(&diff); } -static s32 lbl_1_data_594[8][2] = { - { DATA_MAKE_NUM(DATADIR_W01, 34), DATA_MAKE_NUM(DATADIR_W01, 42) }, - { DATA_MAKE_NUM(DATADIR_W01, 35), DATA_MAKE_NUM(DATADIR_W01, 43) }, - { DATA_MAKE_NUM(DATADIR_W01, 36), DATA_MAKE_NUM(DATADIR_W01, 44) }, - { DATA_MAKE_NUM(DATADIR_W01, 37), DATA_MAKE_NUM(DATADIR_W01, 45) }, - { DATA_MAKE_NUM(DATADIR_W01, 38), DATA_MAKE_NUM(DATADIR_W01, 46) }, - { DATA_MAKE_NUM(DATADIR_W01, 39), DATA_MAKE_NUM(DATADIR_W01, 47) }, - { DATA_MAKE_NUM(DATADIR_W01, 40), DATA_MAKE_NUM(DATADIR_W01, 48) }, - { DATA_MAKE_NUM(DATADIR_W01, 41), DATA_MAKE_NUM(DATADIR_W01, 49) } -}; +static s32 coasterMotTbl[8][2] + = { { DATA_MAKE_NUM(DATADIR_W01, 34), DATA_MAKE_NUM(DATADIR_W01, 42) }, { DATA_MAKE_NUM(DATADIR_W01, 35), DATA_MAKE_NUM(DATADIR_W01, 43) }, + { DATA_MAKE_NUM(DATADIR_W01, 36), DATA_MAKE_NUM(DATADIR_W01, 44) }, { DATA_MAKE_NUM(DATADIR_W01, 37), DATA_MAKE_NUM(DATADIR_W01, 45) }, + { DATA_MAKE_NUM(DATADIR_W01, 38), DATA_MAKE_NUM(DATADIR_W01, 46) }, { DATA_MAKE_NUM(DATADIR_W01, 39), DATA_MAKE_NUM(DATADIR_W01, 47) }, + { DATA_MAKE_NUM(DATADIR_W01, 40), DATA_MAKE_NUM(DATADIR_W01, 48) }, { DATA_MAKE_NUM(DATADIR_W01, 41), DATA_MAKE_NUM(DATADIR_W01, 49) } }; -static void fn_1_3514(s32 arg0) { - s32 temp_r30; +static void CoasterMotCreate(s32 playerNo) +{ + s32 charNo; s32 i; - temp_r30 = GWPlayer[arg0].character; + charNo = GWPlayer[playerNo].character; for (i = 0; i < 2; i++) { - lbl_1_bss_5CC[i] = BoardPlayerMotionCreate(arg0, lbl_1_data_594[temp_r30][i]); + coasterMotId[i] = BoardPlayerMotionCreate(playerNo, coasterMotTbl[charNo][i]); } } -static void fn_1_35B4(s32 arg0) { +static void CoasterMotKill(s32 playerNo) +{ s32 i; for (i = 0; i < 2; i++) { - BoardPlayerMotionKill(arg0, lbl_1_bss_5CC[i]); - lbl_1_bss_5CC[i] = -1; + BoardPlayerMotionKill(playerNo, coasterMotId[i]); + coasterMotId[i] = -1; } } -static void fn_1_3624(void) { - Mtx sp48; - Vec sp3C; - Vec sp30; - Vec sp24; - Vec sp18; - float temp_f28; - float var_f30; - float var_f29; - s32 temp_r19; - Bss10Work *temp_r18; - s16 sp10; - s16 var_r25; +static void CoasterExec(void) +{ + Mtx playerMtx; + Vec spacePos; + Vec cameraRot; + float coasterRotSpeed; + float coasterRotDir; + float coasterMotSpeed; + s32 seNo; + CoasterCameraWork *camWork; + s16 endSpace; s16 i; - lbl_1_bss_674 = lbl_1_bss_670 = 0.0f; - lbl_1_bss_640 = 0.0f; - lbl_1_bss_660.x = 0.0f; - lbl_1_bss_660.y = 0.0f; - lbl_1_bss_660.z = 0.0f; + coasterAccel = coasterSpeed = 0.0f; + coasterTime = 0.0f; + coasterRot.x = 0.0f; + coasterRot.y = 0.0f; + coasterRot.z = 0.0f; lbl_1_bss_6A8 = 0.0f; - lbl_1_bss_6B3 = 0; - lbl_1_bss_624.x = 0.0f; - lbl_1_bss_624.z = 0.0f; - lbl_1_bss_624.y = 1.0f; - lbl_1_bss_66C = 0.08f; - fn_1_3514(lbl_1_bss_6B4); - BoardPlayerMotionStart(lbl_1_bss_6B4, lbl_1_bss_5CC[0], 0x40000001); + coasterLoopF = 0; + coasterCameraUp.x = 0.0f; + coasterCameraUp.z = 0.0f; + coasterCameraUp.y = 1.0f; + coasterCamSpeed = 0.08f; + CoasterMotCreate(eventPlayer); + BoardPlayerMotionStart(eventPlayer, coasterMotId[0], HU3D_MOTATTR_LOOP); BoardSpaceAttrSet(0, 1); - fn_1_97F4(); - BoardModelMotionStart(lbl_1_bss_6AE, 0, 0); - if (lbl_1_bss_0->unk00_field0 == 0) { - BoardModelMotionTimeSet(lbl_1_bss_6AE, lbl_1_bss_644); - lbl_1_bss_63C = -90.0f; - lbl_1_bss_6AC = BoardSpaceFlagPosGet(1, 0x2000, &sp3C); - var_r25 = BoardSpaceFlagSearch(0, 0x1000); - var_f30 = -1.0f; - } else { - BoardModelMotionTimeSet(lbl_1_bss_6AE, 0.0f); - lbl_1_bss_63C = 90.0f; - lbl_1_bss_6AC = BoardSpaceFlagPosGet(1, 0x1000, &sp3C); - var_r25 = BoardSpaceFlagSearch(0, 0x2000); - var_f30 = 1.0f; + CoasterEffCreate(); + BoardModelMotionStart(coasterPathMdlId, 0, 0); + if (boardWork->hostSide == 0) { + BoardModelMotionTimeSet(coasterPathMdlId, coasterMaxTime); + coasterBaseRotY = -90.0f; + coasterStartSpace = BoardSpaceFlagPosGet(1, 0x2000, &spacePos); + endSpace = BoardSpaceFlagSearch(0, 0x1000); + coasterRotDir = -1.0f; } - lbl_1_bss_654 = sp3C; - lbl_1_bss_648 = lbl_1_bss_654; - BoardModelMotionSpeedSet(lbl_1_bss_6AE, lbl_1_bss_670); - BoardPlayerPosSetV(lbl_1_bss_6B4, &lbl_1_bss_654); - BoardCameraPosCalcFuncSet(fn_1_1AD8); - lbl_1_bss_10 = omAddObjEx(boardObjMan, 0x7E02, 0, 0, -1, fn_1_1F2C); - temp_r18 = OM_GET_WORK_PTR(lbl_1_bss_10, Bss10Work); - temp_r18->unk00_field0 = 0; - sp30.x = -40.0f; - sp30.z = 0.0f; - sp30.y = -lbl_1_bss_63C; - BoardCameraMotionStartEx(lbl_1_bss_6C4[0], &sp30, NULL, 150.0f, -1.0f, 2); + else { + BoardModelMotionTimeSet(coasterPathMdlId, 0.0f); + coasterBaseRotY = 90.0f; + coasterStartSpace = BoardSpaceFlagPosGet(1, 0x1000, &spacePos); + endSpace = BoardSpaceFlagSearch(0, 0x2000); + coasterRotDir = 1.0f; + } + coasterPos = spacePos; + coasterPosOld = coasterPos; + BoardModelMotionSpeedSet(coasterPathMdlId, coasterSpeed); + BoardPlayerPosSetV(eventPlayer, &coasterPos); + BoardCameraPosCalcFuncSet(CoasterPosCalc); + coasterCameraObj = omAddObjEx(boardObjMan, 0x7E02, 0, 0, -1, CoasterCameraObjMain); + camWork = OM_GET_WORK_PTR(coasterCameraObj, CoasterCameraWork); + camWork->killF = FALSE; + cameraRot.x = -40.0f; + cameraRot.z = 0.0f; + cameraRot.y = -coasterBaseRotY; + BoardCameraMotionStartEx(mapObjMdlId[MAPOBJ_COASTER], &cameraRot, NULL, 150.0f, -1.0f, 2); BoardCameraMotionWait(); - BoardModelPosGet(lbl_1_bss_6C4[0], &lbl_1_bss_618); - lbl_1_bss_630.x = lbl_1_bss_618.x + 1000.0 * (sind(sp30.y) * cosd(sp30.x)); - lbl_1_bss_630.y = lbl_1_bss_618.y + 1000.0 * -sind(sp30.x); - lbl_1_bss_630.z = lbl_1_bss_618.z + 1000.0 * (cosd(sp30.y) * cosd(sp30.x)); - PSMTXRotRad(lbl_1_bss_678, 'y', MTXDegToRad(lbl_1_bss_63C)); - BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); - BoardPlayerMtxSet(lbl_1_bss_6B4, &lbl_1_bss_678); - BoardModelRotSet(lbl_1_bss_6C4[0], 0.0f, 0.0f, 0.0f); - BoardPlayerRotSet(lbl_1_bss_6B4, 0.0f, 0.0f, 0.0f); - BoardPlayerExistCheck(lbl_1_bss_6B4, 0); + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER], &coasterCameraTarget); + coasterCameraPos.x = coasterCameraTarget.x + 1000.0 * (sind(cameraRot.y) * cosd(cameraRot.x)); + coasterCameraPos.y = coasterCameraTarget.y + 1000.0 * -sind(cameraRot.x); + coasterCameraPos.z = coasterCameraTarget.z + 1000.0 * (cosd(cameraRot.y) * cosd(cameraRot.x)); + MTXRotRad(coasterMtx, 'y', MTXDegToRad(coasterBaseRotY)); + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &coasterMtx); + BoardPlayerMtxSet(eventPlayer, &coasterMtx); + BoardModelRotSet(mapObjMdlId[MAPOBJ_COASTER], 0.0f, 0.0f, 0.0f); + BoardPlayerRotSet(eventPlayer, 0.0f, 0.0f, 0.0f); + BoardPlayerExistCheck(eventPlayer, 0); BoardMusStart(1, 0x10, 0x7F, 0); - fn_1_50D4(); - BoardStatusShowSetForce(lbl_1_bss_6B4); - BoardStatusShowSet(lbl_1_bss_6B4, 1); - while (!BoardStatusStopCheck(lbl_1_bss_6B4)) { + CoasterCoinCreate(); + BoardStatusShowSetForce(eventPlayer); + BoardStatusShowSet(eventPlayer, 1); + while (!BoardStatusStopCheck(eventPlayer)) { HuPrcVSleep(); } - temp_r19 = HuAudFXPlay(0x40C); - fn_1_4774(); + seNo = HuAudFXPlay(0x40C); + CoasterWinCreate(); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - lbl_1_bss_6B0 = 1; + coasterType = 1; HuAudFXPlay(0x413); while (TRUE) { - fn_1_1990(); - fn_1_3350(); - fn_1_276C(); - BoardModelPosSetV(lbl_1_bss_6C4[0], &lbl_1_bss_654); - BoardPlayerPosSetV(lbl_1_bss_6B4, &lbl_1_bss_654); - if (BoardPlayerSizeGet(lbl_1_bss_6B4) != 1) { - PSMTXTrans(sp48, 0.0f, 30.0f, 0.0f); - } else { - PSMTXTrans(sp48, 0.0f, 400.0f, 250.0f); + CoasterPathUpdate(); + CoasterPathMotUpdate(); + CoasterRotUpdate(); + BoardModelPosSetV(mapObjMdlId[MAPOBJ_COASTER], &coasterPos); + BoardPlayerPosSetV(eventPlayer, &coasterPos); + if (BoardPlayerSizeGet(eventPlayer) != 1) { + MTXTrans(playerMtx, 0.0f, 30.0f, 0.0f); } - BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); - PSMTXConcat(lbl_1_bss_678, sp48, sp48); - BoardPlayerMtxSet(lbl_1_bss_6B4, &sp48); - if (lbl_1_bss_0->unk00_field0 == 0) { - var_f29 = -lbl_1_bss_670; - } else { - var_f29 = lbl_1_bss_670; + else { + MTXTrans(playerMtx, 0.0f, 400.0f, 250.0f); } - BoardModelMotionSpeedSet(lbl_1_bss_6AE, var_f29); - if (lbl_1_bss_0->unk00_field0 == 0) { - if (BoardModelMotionTimeGet(lbl_1_bss_6AE) <= 0.0f) { + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &coasterMtx); + MTXConcat(coasterMtx, playerMtx, playerMtx); + BoardPlayerMtxSet(eventPlayer, &playerMtx); + if (boardWork->hostSide == 0) { + coasterMotSpeed = -coasterSpeed; + } + else { + coasterMotSpeed = coasterSpeed; + } + BoardModelMotionSpeedSet(coasterPathMdlId, coasterMotSpeed); + if (boardWork->hostSide == 0) { + if (BoardModelMotionTimeGet(coasterPathMdlId) <= 0.0f) { break; } - } else { - if (BoardModelMotionTimeGet(lbl_1_bss_6AE) >= lbl_1_bss_644) { + } + else { + if (BoardModelMotionTimeGet(coasterPathMdlId) >= coasterMaxTime) { break; } } HuPrcVSleep(); } - PSMTXIdentity(lbl_1_bss_678); - fn_1_4864(); - HuAudFXStop(temp_r19); - fn_1_1EE4(); - fn_1_98EC(); - if (BoardPlayerSizeGet(lbl_1_bss_6B4) == 1) { - PSMTXTrans(sp48, 0.0f, 400.0f, 250.0f); - } else { - PSMTXTrans(sp48, 0.0f, 30.0f, 0.0f); + MTXIdentity(coasterMtx); + CoasterWinKill(); + HuAudFXStop(seNo); + CoasterCameraObjKill(); + CoasterEffKill(); + if (BoardPlayerSizeGet(eventPlayer) == 1) { + MTXTrans(playerMtx, 0.0f, 400.0f, 250.0f); } - BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); - BoardPlayerMtxSet(lbl_1_bss_6B4, &sp48); - lbl_1_bss_660.x = lbl_1_bss_660.z = 0.0f; + else { + MTXTrans(playerMtx, 0.0f, 30.0f, 0.0f); + } + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &coasterMtx); + BoardPlayerMtxSet(eventPlayer, &playerMtx); + coasterRot.x = coasterRot.z = 0.0f; BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); HuAudFXPlay(0x401); - temp_f28 = (-lbl_1_bss_63C - lbl_1_bss_660.y) / 30.0f; + coasterRotSpeed = (-coasterBaseRotY - coasterRot.y) / 30.0f; for (i = 0; i < 30; i++) { - BoardModelRotSetV(lbl_1_bss_6C4[0], &lbl_1_bss_660); - BoardPlayerRotSetV(lbl_1_bss_6B4, &lbl_1_bss_660); - lbl_1_bss_660.y += temp_f28 * var_f30; + BoardModelRotSetV(mapObjMdlId[MAPOBJ_COASTER], &coasterRot); + BoardPlayerRotSetV(eventPlayer, &coasterRot); + coasterRot.y += coasterRotSpeed * coasterRotDir; HuPrcVSleep(); } - lbl_1_bss_660.y = -lbl_1_bss_63C; - BoardModelRotSetV(lbl_1_bss_6C4[0], &lbl_1_bss_660); - BoardPlayerRotSetV(lbl_1_bss_6B4, &lbl_1_bss_660); - BoardStatusShowSet(lbl_1_bss_6B4, 0); + coasterRot.y = -coasterBaseRotY; + BoardModelRotSetV(mapObjMdlId[MAPOBJ_COASTER], &coasterRot); + BoardPlayerRotSetV(eventPlayer, &coasterRot); + BoardStatusShowSet(eventPlayer, 0); BoardSpaceAttrReset(0, 1); - fn_1_53B8(); + CoasterCoinKill(); BoardCameraMoveSet(0); - BoardCameraTargetPlayerSet(lbl_1_bss_6B4); + BoardCameraTargetPlayerSet(eventPlayer); BoardCameraViewSet(1); BoardCameraMotionWait(); do { HuPrcVSleep(); } while (WipeStatGet() != 0); - BoardPlayerIdleSet(lbl_1_bss_6B4); - BoardPlayerMtxSet(lbl_1_bss_6B4, &lbl_1_bss_678); + BoardPlayerIdleSet(eventPlayer); + BoardPlayerMtxSet(eventPlayer, &coasterMtx); BoardCameraPosCalcFuncSet(NULL); - BoardPlayerExistCheck(lbl_1_bss_6B4, 1); - BoardSpacePosGet(0, var_r25, &sp3C); - GWPlayer[lbl_1_bss_6B4].space_curr = var_r25; - BoardPlayerPosSetV(lbl_1_bss_6B4, &sp3C); - fn_1_35B4(lbl_1_bss_6B4); - lbl_1_bss_6B2 = 1; + BoardPlayerExistCheck(eventPlayer, 1); + BoardSpacePosGet(0, endSpace, &spacePos); + GWPlayer[eventPlayer].space_curr = endSpace; + BoardPlayerPosSetV(eventPlayer, &spacePos); + CoasterMotKill(eventPlayer); + coasterDoneF = 1; } -static void fn_1_45F4(void) { - if (lbl_1_bss_6B2 != 0) { - if (lbl_1_bss_0->unk00_field0 == 0) { - lbl_1_bss_0->unk00_field0 = 1; - } else { - lbl_1_bss_0->unk00_field0 = 0; +static void CoasterExit(void) +{ + if (coasterDoneF != 0) { + if (boardWork->hostSide == 0) { + boardWork->hostSide = 1; } - lbl_1_bss_6B2 = 0; - fn_1_1670(); + else { + boardWork->hostSide = 0; + } + coasterDoneF = 0; + UpdateHostDisp(); } - fn_1_87AC(); - while (lbl_1_bss_C) { + CoasterPlayerManKill(); + while (coasterPlayerManObj) { HuPrcVSleep(); } BoardAudSeqPause(0, 0, 1000); @@ -1220,47 +1255,50 @@ static void fn_1_45F4(void) { BoardStatusShowSetAll(1); } -static void fn_1_4774(void) { - float sp8[2]; - float var_f31; - float var_f30; +static void CoasterWinCreate(void) +{ + float winSize[2]; + float winX; + float winY; - HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(13, 5)); - var_f31 = -10000.0f; - var_f30 = 352.0f; - lbl_1_data_580 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0); - HuWinBGTPLvlSet(lbl_1_data_580, 0.0f); - HuWinMesSpeedSet(lbl_1_data_580, 0); - HuWinMesSet(lbl_1_data_580, MAKE_MESSID(13, 5)); + HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(13, 5)); + winX = -10000.0f; + winY = 352.0f; + coasterWinId = HuWinCreate(winX, winY, winSize[0], winSize[1], 0); + HuWinBGTPLvlSet(coasterWinId, 0.0f); + HuWinMesSpeedSet(coasterWinId, 0); + HuWinMesSet(coasterWinId, MAKE_MESSID(13, 5)); } -static void fn_1_4864(void) { - if (lbl_1_data_580 != -1) { - HuWinKill(lbl_1_data_580); - lbl_1_data_580 = -1; +static void CoasterWinKill(void) +{ + if (coasterWinId != -1) { + HuWinKill(coasterWinId); + coasterWinId = -1; } } -static s32 fn_1_48B4(void) { - Vec sp20; - Vec sp14; - Vec sp8; - float var_f31; - u32 var_r31; +static s32 CoasterHostExec(void) +{ + Vec startPos; + Vec endPos; + Vec dir; + float angle; + u32 mess; s32 i; - s32 temp_r28; - s32 temp_r30; + s32 spaceEnd; + s32 spaceStart; - var_r31 = 0; - lbl_1_bss_6B0 = 0; - lbl_1_bss_6B1 = 0; - lbl_1_bss_6B2 = 0; - lbl_1_bss_6B4 = GWSystem.player_curr; - temp_r30 = GWPlayer[lbl_1_bss_6B4].space_curr; - BoardPlayerMotionShiftSet(lbl_1_bss_6B4, 1, 0.0f, 14.0f, 0x40000001); + mess = 0; + coasterType = 0; + coasterLandF = 0; + coasterDoneF = 0; + eventPlayer = GWSystem.player_curr; + spaceStart = GWPlayer[eventPlayer].space_curr; + BoardPlayerMotionShiftSet(eventPlayer, 1, 0.0f, 14.0f, HU3D_MOTATTR_LOOP); BoardWinCreateChoice(0, MAKE_MESSID(13, 0), -1, 0); - if (GWPlayer[lbl_1_bss_6B4].com) { - fn_1_9D00(lbl_1_bss_6B4); + if (GWPlayer[eventPlayer].com) { + CoasterHostComKeySet(eventPlayer); } BoardWinWait(); if (BoardWinChoiceGet() != 0) { @@ -1268,43 +1306,44 @@ static s32 fn_1_48B4(void) { } BoardWinCreate(2, 0xD0006, 0); BoardWinWait(); - temp_r28 = BoardSpaceLinkFlagSearch(0, temp_r30, 0x02000000); - BoardSpacePosGet(0, temp_r30, &sp20); - BoardSpacePosGet(0, temp_r28, &sp14); - PSVECSubtract(&sp14, &sp20, &sp8); - PSVECNormalize(&sp8, &sp8); - var_f31 = atan2d(-sp8.x, -sp8.z); - BoardPlayerRotSet(lbl_1_bss_6B4, 0.0f, var_f31, 0.0f); - BoardPlayerMoveBetween(lbl_1_bss_6B4, temp_r30, temp_r28); - while (GWPlayer[lbl_1_bss_6B4].moving) { + spaceEnd = BoardSpaceLinkFlagSearch(0, spaceStart, 0x02000000); + BoardSpacePosGet(0, spaceStart, &startPos); + BoardSpacePosGet(0, spaceEnd, &endPos); + VECSubtract(&endPos, &startPos, &dir); + VECNormalize(&dir, &dir); + angle = atan2d(-dir.x, -dir.z); + BoardPlayerRotSet(eventPlayer, 0.0f, angle, 0.0f); + BoardPlayerMoveBetween(eventPlayer, spaceStart, spaceEnd); + while (GWPlayer[eventPlayer].moving) { HuPrcVSleep(); } - BoardPlayerIdleSet(lbl_1_bss_6B4); + BoardPlayerIdleSet(eventPlayer); while (TRUE) { BoardWinCreateChoice(1, MAKE_MESSID(13, 1), 0, 0); BoardWinAttrSet(0x10); - if (GWPlayer[lbl_1_bss_6B4].com) { - if (BoardPlayerCoinsGet(lbl_1_bss_6B4) >= 5) { + if (GWPlayer[eventPlayer].com) { + if (BoardPlayerCoinsGet(eventPlayer) >= 5) { BoardComKeySetUp(); - } else { + } + else { BoardComKeySetDown(); } } BoardWinWait(); if (BoardWinChoiceGet() == 1) { - var_r31 = MAKE_MESSID(13, 3); + mess = MAKE_MESSID(13, 3); break; } if (BoardWinChoiceGet() == 2) { - BoardViewMapExec(lbl_1_bss_6B4); + BoardViewMapExec(eventPlayer); continue; } - if (BoardPlayerCoinsGet(lbl_1_bss_6B4) < 5) { - var_r31 = MAKE_MESSID(13, 4); + if (BoardPlayerCoinsGet(eventPlayer) < 5) { + mess = MAKE_MESSID(13, 4); break; } for (i = 0; i < 5; i++) { - BoardPlayerCoinsAdd(lbl_1_bss_6B4, -1); + BoardPlayerCoinsAdd(eventPlayer, -1); HuAudFXPlay(0xE); HuPrcSleep(6); } @@ -1320,1239 +1359,1317 @@ static s32 fn_1_48B4(void) { while (WipeStatGet() != 0) { HuPrcVSleep(); } - fn_1_852C(); - return 1; + CoasterPlayerManCreate(); + return TRUE; } - if (var_r31 != 0) { - BoardWinCreate(1, var_r31, 0); + if (mess != 0) { + BoardWinCreate(1, mess, 0); BoardWinWait(); BoardWinKill(); } - BoardCameraTargetPlayerSet(lbl_1_bss_6B4); - PSVECSubtract(&sp20, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); - var_f31 = atan2d(-sp8.x, -sp8.z); - BoardPlayerRotSet(lbl_1_bss_6B4, 0.0f, var_f31, 0.0f); - BoardPlayerMoveBetween(lbl_1_bss_6B4, temp_r28, temp_r30); - while (GWPlayer[lbl_1_bss_6B4].moving) { + BoardCameraTargetPlayerSet(eventPlayer); + VECSubtract(&startPos, &endPos, &dir); + VECNormalize(&dir, &dir); + angle = atan2d(-dir.x, -dir.z); + BoardPlayerRotSet(eventPlayer, 0.0f, angle, 0.0f); + BoardPlayerMoveBetween(eventPlayer, spaceEnd, spaceStart); + while (GWPlayer[eventPlayer].moving) { HuPrcVSleep(); } - return 0; + return FALSE; } -static void fn_1_4E14(void) { - if (fn_1_48B4() != 0) { - fn_1_3624(); - fn_1_45F4(); +static void CoasterMain(void) +{ + if (CoasterHostExec() != 0) { + CoasterExec(); + CoasterExit(); } HuPrcEnd(); } -static void fn_1_4FA8(void) { +static void CoasterDestroy(void) +{ BoardWinKill(); - lbl_1_bss_8 = NULL; + coasterProc = NULL; } -static void fn_1_4FD8(void) { - lbl_1_bss_6B4 = GWSystem.player_curr; +static void CoasterEvent(void) +{ + eventPlayer = GWSystem.player_curr; BoardRollDispSet(0); - if (BoardPlayerSizeGet(lbl_1_bss_6B4) == 2 || GWPlayer[lbl_1_bss_6B4].bowser_suit) { + if (BoardPlayerSizeGet(eventPlayer) == 2 || GWPlayer[eventPlayer].bowser_suit) { return; } - lbl_1_bss_8 = HuPrcChildCreate(fn_1_4E14, 0x2003, 0x2000, 0, boardMainProc); - HuPrcDestructorSet2(lbl_1_bss_8, fn_1_4FA8); - while (lbl_1_bss_8) { + coasterProc = HuPrcChildCreate(CoasterMain, 0x2003, 0x2000, 0, boardMainProc); + HuPrcDestructorSet2(coasterProc, CoasterDestroy); + while (coasterProc) { HuPrcVSleep(); } BoardRollDispSet(1); } -static void fn_1_50D4(void) { - Vec sp20; - Vec sp14; - Vec sp8; - float temp_f30; - float var_f31; - BoardSpace *temp_r31; - s32 var_r27; - s32 var_r26; - s32 var_r29; - s32 var_r28; +static void CoasterCoinCreate(void) +{ + Vec pos; + Vec posSpace; + Vec dir; + float radius; + float angle; + BoardSpace *space; + s32 side; + s32 newSide; + s32 coinNum; + s32 spaceId; s32 i; for (i = 0; i < 24; i++) { - lbl_1_bss_5D0[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 9), NULL, 0); - BoardModelVisibilitySet(lbl_1_bss_5D0[i], 0); - BoardModelMotionStart(lbl_1_bss_5D0[i], 0, 0x40000001); - lbl_1_bss_600[i] = 0; + coasterCoinMdlId[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 9), NULL, 0); + BoardModelVisibilitySet(coasterCoinMdlId[i], 0); + BoardModelMotionStart(coasterCoinMdlId[i], 0, HU3D_MOTATTR_LOOP); + coasterCoinF[i] = 0; } - temp_f30 = 180.0f; - var_r28 = BoardSpaceFlagPosGet(1, 0x2000, &sp20); - var_r27 = BoardRand() & 1; - var_r29 = i = 0; + radius = 180.0f; + spaceId = BoardSpaceFlagPosGet(1, 0x2000, &pos); + side = BoardRand() & 1; + coinNum = i = 0; while (i < 24) { - temp_r31 = BoardSpaceGet(1, var_r28); - var_r28 = temp_r31->link[0]; - if (var_r28 == -1 || temp_r31->link_cnt == 0) { + space = BoardSpaceGet(1, spaceId); + spaceId = space->link[0]; + if (spaceId == -1 || space->link_cnt == 0) { break; } - if (!(temp_r31->flag & 0x80)) { - sp14 = temp_r31->pos; - } else { - if (var_r29 >= 3) { + if (!(space->flag & 0x80)) { + posSpace = space->pos; + } + else { + if (coinNum >= 3) { if (BoardRandFloat() < 0.5f) { - var_r26 = 1; - } else { - var_r26 = 0; + newSide = 1; } - var_r27 = var_r26; - var_r29 = 0; + else { + newSide = 0; + } + side = newSide; + coinNum = 0; } - PSVECSubtract(&sp14, &temp_r31->pos, &sp8); - PSVECNormalize(&sp8, &sp8); - var_f31 = atan2d(sp8.z, sp8.x); - if (var_r27 != 0) { - var_f31 += 180.0f; + VECSubtract(&posSpace, &space->pos, &dir); + VECNormalize(&dir, &dir); + angle = atan2d(dir.z, dir.x); + if (side != 0) { + angle += 180.0f; } - sp20.x = temp_r31->pos.x + temp_f30 * sind(var_f31); - sp20.y = temp_r31->pos.y + 80.0f; - sp20.z = temp_r31->pos.z + temp_f30 * cosd(var_f31); - BoardModelPosSetV(lbl_1_bss_5D0[i], &sp20); - BoardModelVisibilitySet(lbl_1_bss_5D0[i], 1); - sp14 = temp_r31->pos; + pos.x = space->pos.x + radius * sind(angle); + pos.y = space->pos.y + 80.0f; + pos.z = space->pos.z + radius * cosd(angle); + BoardModelPosSetV(coasterCoinMdlId[i], &pos); + BoardModelVisibilitySet(coasterCoinMdlId[i], 1); + posSpace = space->pos; i++; - var_r29++; + coinNum++; } } } -static void fn_1_53B8(void) { +static void CoasterCoinKill(void) +{ s32 i; for (i = 0; i < 24; i++) { - if (lbl_1_bss_5D0[i] != -1) { - BoardModelKill(lbl_1_bss_5D0[i]); - lbl_1_bss_5D0[i] = -1; + if (coasterCoinMdlId[i] != -1) { + BoardModelKill(coasterCoinMdlId[i]); + coasterCoinMdlId[i] = -1; } } } -static s32 lbl_1_data_5D4 = -1; -static s32 lbl_1_data_5D8 = -1; +static s32 cupMoveSeNo = -1; +static s32 decaStompSeNo = -1; -static s16 lbl_1_data_5DC[2][4] = { - { 24, 25, 26, 27 }, - { 29, 30, 31, 32 } +static s16 cupMapObj[2][4] = { + { MAPOBJ_CUPR1, MAPOBJ_CUPR2, MAPOBJ_CUPR3, MAPOBJ_CUPR_ARROW }, + { MAPOBJ_CUPL1, MAPOBJ_CUPL2, MAPOBJ_CUPL3, MAPOBJ_CUPL_ARROW } }; -static char *lbl_1_data_604[] = { - "chara1", "chara2", "chara3" -}; +static char *cupHookTbl[] = { "chara1", "chara2", "chara3" }; -static float lbl_1_data_610[2][2] = { - { 90.0f, 0.0f }, - { 0.0f, 270.0f } -}; +static float cupArrowRot[2][2] = { { 90.0f, 0.0f }, { 0.0f, 270.0f } }; -static void fn_1_543C(void) { - float var_f31; - s16 temp_r28; - s16 temp_r29; +static void CupInit(void) +{ + float rotY; + s16 mdlIdDish; + s16 mdlId; s32 i; s32 j; - char *sp10[] = { "cup1", "cup2", "cup3", "ya1" }; - s32 sp8[] = { 23, 28 }; + char *hookName[] = { "cup1", "cup2", "cup3", "ya1" }; + s32 dishMapObj[] = { MAPOBJ_CUPR_DISH, MAPOBJ_CUPL_DISH }; for (i = 0; i < 2; i++) { - temp_r28 = lbl_1_bss_6C4[sp8[i]]; - BoardModelMotionStart(temp_r28, 0, 0x40000001); - BoardModelExistDupe(temp_r28, 0); + mdlIdDish = mapObjMdlId[dishMapObj[i]]; + BoardModelMotionStart(mdlIdDish, 0, HU3D_MOTATTR_LOOP); + BoardModelExistDupe(mdlIdDish, 0); for (j = 0; j < 4; j++) { - temp_r29 = lbl_1_bss_6C4[lbl_1_data_5DC[i][j]]; - BoardModelExistDupe(temp_r29, 1); - BoardModelHookSet(temp_r28, sp10[j], temp_r29); - BoardModelMotionStart(temp_r29, 0, 0x40000001); - BoardModelRotSet(temp_r29, 0.0f, 360.0f * BoardRandFloat(), 0.0f); + mdlId = mapObjMdlId[cupMapObj[i][j]]; + BoardModelExistDupe(mdlId, 1); + BoardModelHookSet(mdlIdDish, hookName[j], mdlId); + BoardModelMotionStart(mdlId, 0, HU3D_MOTATTR_LOOP); + BoardModelRotSet(mdlId, 0.0f, 360.0f * BoardRandFloat(), 0.0f); } } - if (lbl_1_bss_0->unk01[0] != 0) { - var_f31 = 0.0f; - } else { - var_f31 = 90.0f; + if (boardWork->cupDir[0] != 0) { + rotY = 0.0f; } - BoardModelRotSet(lbl_1_bss_6C4[27], 0.0f, var_f31, 0.0f); - if (lbl_1_bss_0->unk01[1] != 0) { - var_f31 = -90.0f; - } else { - var_f31 = 0.0f; + else { + rotY = 90.0f; } - BoardModelRotSet(lbl_1_bss_6C4[32], 0.0f, var_f31, 0.0f); + BoardModelRotSet(mapObjMdlId[MAPOBJ_CUPR_ARROW], 0.0f, rotY, 0.0f); + if (boardWork->cupDir[1] != 0) { + rotY = -90.0f; + } + else { + rotY = 0.0f; + } + BoardModelRotSet(mapObjMdlId[MAPOBJ_CUPL_ARROW], 0.0f, rotY, 0.0f); } -static void fn_1_5694(s32 arg0) { - s16 temp_r29; - s16 temp_r30; +static void CupMotOnSet(s32 stopF) +{ + s16 dishMdlId; + s16 cupMdlId; s16 i; - s32 spC[] = { 23, 28 }; + s32 dishMapObj[] = { MAPOBJ_CUPR_DISH, MAPOBJ_CUPL_DISH }; - temp_r29 = lbl_1_bss_6C4[spC[lbl_1_bss_29]]; - if (arg0 != 0) { - BoardModelMotionSpeedSet(temp_r29, 1.0f); - BoardModelAttrReset(temp_r29, 0x40000002); + dishMdlId = mapObjMdlId[dishMapObj[cupSide]]; + if (stopF != 0) { + BoardModelMotionSpeedSet(dishMdlId, 1.0f); + BoardModelAttrReset(dishMdlId, HU3D_MOTATTR_PAUSE); for (i = 0; i < 3; i++) { - temp_r30 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][i]]; - BoardModelMotionSpeedSet(temp_r30, 1.0f); - BoardModelAttrReset(temp_r30, 0x40000002); + cupMdlId = mapObjMdlId[cupMapObj[cupSide][i]]; + BoardModelMotionSpeedSet(cupMdlId, 1.0f); + BoardModelAttrReset(cupMdlId, HU3D_MOTATTR_PAUSE); } - } else { - BoardModelMotionSpeedSet(temp_r29, 0.0f); - BoardModelAttrSet(temp_r29, 0x40000002); + } + else { + BoardModelMotionSpeedSet(dishMdlId, 0.0f); + BoardModelAttrSet(dishMdlId, HU3D_MOTATTR_PAUSE); for (i = 0; i < 3; i++) { - temp_r30 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][i]]; - BoardModelMotionSpeedSet(temp_r30, 0.0f); - BoardModelAttrSet(temp_r30, 0x40000002); + cupMdlId = mapObjMdlId[cupMapObj[cupSide][i]]; + BoardModelMotionSpeedSet(cupMdlId, 0.0f); + BoardModelAttrSet(cupMdlId, HU3D_MOTATTR_PAUSE); } } } -static void fn_1_586C(s32 arg0, s32 arg1) { - lbl_1_bss_29 = arg0; - lbl_1_bss_26 = arg1; +static void CupEvent(s32 side, s32 spaceStart) +{ + cupSide = side; + cupSpaceStart = spaceStart; BoardRollDispSet(0); - lbl_1_bss_14 = HuPrcChildCreate(fn_1_592C, 0x2003, 0x2000, 0, boardMainProc); - HuPrcDestructorSet2(lbl_1_bss_14, fn_1_5B2C); - while (lbl_1_bss_14) { + cupProc = HuPrcChildCreate(CupMain, 0x2003, 0x2000, 0, boardMainProc); + HuPrcDestructorSet2(cupProc, CupDestroy); + while (cupProc) { HuPrcVSleep(); } BoardRollDispSet(1); } -static void fn_1_592C(void) { - s16 temp_r30; - s16 var_r28; +static void CupMain(void) +{ + s16 dishMdlId; - lbl_1_data_5D4 = -1; - lbl_1_data_5D8 = -1; + cupMoveSeNo = -1; + decaStompSeNo = -1; BoardPlayerIdleSet(GWSystem.player_curr); - if (lbl_1_bss_29 == 0) { - var_r28 = lbl_1_bss_6C4[23]; - } else { - var_r28 = lbl_1_bss_6C4[28]; + if (cupSide == 0) { + dishMdlId = mapObjMdlId[MAPOBJ_CUPR_DISH]; } - BoardCameraTargetModelSet(var_r28); + else { + dishMdlId = mapObjMdlId[MAPOBJ_CUPL_DISH]; + } + BoardCameraTargetModelSet(dishMdlId); BoardCameraOffsetSet(0.0f, 0.0f, 0.0f); - fn_1_5D08(); - while (!fn_1_5CD0()) { + CupObjCreate(); + while (!CupObjCheck()) { HuPrcVSleep(); } - fn_1_5B40(); - fn_1_5694(1); + CupExec(); + CupMotOnSet(1); BoardCameraTargetPlayerSet(GWSystem.player_curr); BoardCameraViewSet(1); BoardCameraMotionWait(); HuPrcEnd(); } -static void fn_1_5B2C(void) { - lbl_1_bss_14 = NULL; +static void CupDestroy(void) +{ + cupProc = NULL; } -static void fn_1_5B40(void) { - s16 spC[] = { 27, 32 }; - s16 temp_r30; - s32 temp_r31; - float sp8; - float temp_f31; +static void CupExec(void) +{ + s16 cupArrowMapObj[] = { MAPOBJ_CUPR_ARROW, MAPOBJ_CUPL_ARROW }; + s16 cupArrowMdlId; + s32 cupDir; + float rotY; + float rotYNew; - temp_r31 = lbl_1_bss_0->unk01[lbl_1_bss_29]; - lbl_1_bss_0->unk01[lbl_1_bss_29] ^= 1; - temp_r30 = lbl_1_bss_6C4[spC[lbl_1_bss_29]]; - sp8 = lbl_1_data_610[lbl_1_bss_29][temp_r31]; - temp_f31 = lbl_1_data_610[lbl_1_bss_29][temp_r31 ^ 1]; + cupDir = boardWork->cupDir[cupSide]; + boardWork->cupDir[cupSide] ^= 1; + cupArrowMdlId = mapObjMdlId[cupArrowMapObj[cupSide]]; + rotY = cupArrowRot[cupSide][cupDir]; + rotYNew = cupArrowRot[cupSide][cupDir ^ 1]; HuAudFXPlay(0x403); while (TRUE) { HuPrcVSleep(); - if (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) != 0) { + if (BoardDAngleCalcRange(&rotY, rotYNew, 3.0f) != 0) { break; } - BoardModelRotSet(temp_r30, 0.0f, sp8, 0.0f); + BoardModelRotSet(cupArrowMdlId, 0.0f, rotY, 0.0f); } } -static BOOL fn_1_5CD0(void) { - return lbl_1_bss_18 ? FALSE : TRUE; +static BOOL CupObjCheck(void) +{ + return cupObj ? FALSE : TRUE; } -static void fn_1_5D08(void) { - Bss18Work *temp_r31; - float var_f30; - float var_f31; - s16 var_r28; - s16 var_r25; +static void CupObjCreate(void) +{ + CupObjWork *work; + float time; + float speed; + s16 dishMdlId; + s16 cupMdlId; s32 i; - if (lbl_1_bss_29 == 0) { - var_r28 = lbl_1_bss_6C4[23]; - } else { - var_r28 = lbl_1_bss_6C4[28]; + if (cupSide == 0) { + dishMdlId = mapObjMdlId[MAPOBJ_CUPR_DISH]; + } + else { + dishMdlId = mapObjMdlId[MAPOBJ_CUPL_DISH]; } while (TRUE) { - var_f30 = BoardModelMotionTimeGet(var_r28); - if (var_f30 >= 209.0f && var_f30 <= 211.0f) { + time = BoardModelMotionTimeGet(dishMdlId); + if (time >= 209.0f && time <= 211.0f) { break; } - if (var_f30 >= 129.0f && var_f30 <= 131.0f) { + if (time >= 129.0f && time <= 131.0f) { break; } - if (var_f30 >= 49.0f && var_f30 <= 51.0f) { + if (time >= 49.0f && time <= 51.0f) { break; } HuPrcVSleep(); } - var_f31 = 1.0f; - while (var_f31 > 0.01f) { - var_f31 *= 0.9f; - if (var_f31 <= 0.01f) { - var_f31 = 0.0f; + speed = 1.0f; + while (speed > 0.01f) { + speed *= 0.9f; + if (speed <= 0.01f) { + speed = 0.0f; } - BoardModelMotionSpeedSet(var_r28, var_f31); + BoardModelMotionSpeedSet(dishMdlId, speed); for (i = 0; i < 3; i++) { - var_r25 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][i]]; - BoardModelMotionSpeedSet(var_r25, var_f31); + cupMdlId = mapObjMdlId[cupMapObj[cupSide][i]]; + BoardModelMotionSpeedSet(cupMdlId, speed); } HuPrcVSleep(); } - fn_1_5694(0); - lbl_1_bss_18 = omAddObjEx(boardObjMan, 0x103, 0, 0, -1, fn_1_6098); - temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_18, Bss18Work); - temp_r31->unk00_field0 = 0; - temp_r31->unk01 = 0; - temp_r31->unk02 = 0; - temp_r31->unk00_field2 = 0; - temp_r31->unk04 = var_r28; + CupMotOnSet(0); + cupObj = omAddObjEx(boardObjMan, 0x103, 0, 0, -1, CupObjMain); + work = OM_GET_WORK_PTR(cupObj, CupObjWork); + work->killF = 0; + work->time = 0; + work->delay = 0; + work->stopF = 0; + work->dishMdlId = dishMdlId; if (BoardPlayerSizeGet(GWSystem.player_curr) == 2) { - temp_r31->unk00_field3 = 1; - } else { - temp_r31->unk00_field3 = 0; + work->decaF = TRUE; + } + else { + work->decaF = FALSE; } } -static void fn_1_6098(omObjData *arg0) { - Bss18Work *temp_r31 = OM_GET_WORK_PTR(arg0, Bss18Work); - s32 temp_r0; +static void CupObjMain(omObjData *obj) +{ + CupObjWork *work = OM_GET_WORK_PTR(obj, CupObjWork); - if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { - lbl_1_bss_18 = NULL; - omDelObjEx(HuPrcCurrentGet(), arg0); + if (work->killF != 0 || BoardIsKill()) { + cupObj = NULL; + omDelObjEx(HuPrcCurrentGet(), obj); return; } - if (temp_r31->unk02 != 0) { - temp_r31->unk02--; + if (work->delay != 0) { + work->delay--; return; } - switch (temp_r31->unk00_field1) { + switch (work->mode) { case 0: - fn_1_6194(temp_r31, arg0); + CupObjInit(work, obj); break; case 2: - fn_1_63F0(temp_r31, arg0); + CupObjJumpWait(work, obj); break; case 3: - fn_1_6BC0(temp_r31, arg0); + CupObjStop(work, obj); break; case 1: - fn_1_6FB4(temp_r31, arg0); + CupObjRotate(work, obj); break; } } -static void fn_1_6194(Bss18Work *arg0, omObjData *arg1) { - Mtx sp38; - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; +static void CupObjInit(CupObjWork *work, omObjData *obj) +{ + Mtx objMtx; + Vec objPosPrev; + Vec playerPos; + Vec objRot; + Vec objPos; float temp_f31; float var_f30; s32 var_r28; s32 i; - BoardPlayerPosGet(GWSystem.player_curr, &sp20); + BoardPlayerPosGet(GWSystem.player_curr, &playerPos); var_f30 = 1000000.0f; for (i = 0; i < 3; i++) { - Hu3DModelObjPosGet(BoardModelIDGet(arg0->unk04), lbl_1_data_604[i], &sp8); - temp_f31 = PSVECSquareDistance(&sp8, &sp20); + Hu3DModelObjPosGet(BoardModelIDGet(work->dishMdlId), cupHookTbl[i], &objPos); + temp_f31 = VECSquareDistance(&objPos, &playerPos); if (temp_f31 < var_f30) { var_f30 = temp_f31; - lbl_1_bss_28 = i; - sp2C = sp8; + cupHookNo = i; + objPosPrev = objPos; } } - Hu3DModelObjMtxGet(BoardModelIDGet(arg0->unk04), lbl_1_data_604[lbl_1_bss_28], sp38); - Hu3DMtxRotGet(&sp38, &sp14); - sp14.y = 180.0f; - PSVECSubtract(&sp2C, &sp20, &sp8); - arg1->trans.x = sp8.x / 25.0f; - arg1->trans.z = sp8.z / 25.0f; + Hu3DModelObjMtxGet(BoardModelIDGet(work->dishMdlId), cupHookTbl[cupHookNo], objMtx); + Hu3DMtxRotGet(&objMtx, &objRot); + objRot.y = 180.0f; + VECSubtract(&objPosPrev, &playerPos, &objPos); + obj->trans.x = objPos.x / 25.0f; + obj->trans.z = objPos.z / 25.0f; var_r28 = BoardPlayerRotYGet(GWSystem.player_curr); - arg1->trans.y = BoardDAngleCalc(sp14.y - var_r28) / 25.0f; - arg1->scale.x = sp2C.x; - arg1->scale.y = sp2C.y; - arg1->scale.z = sp2C.z; - BoardPlayerMotionShiftSet(GWSystem.player_curr, 4, 15.0f, 5.0f, 0); - arg0->unk00_field1 = 2; - arg0->unk01 = 0; + obj->trans.y = BoardDAngleCalc(objRot.y - var_r28) / 25.0f; + obj->scale.x = objPosPrev.x; + obj->scale.y = objPosPrev.y; + obj->scale.z = objPosPrev.z; + BoardPlayerMotionShiftSet(GWSystem.player_curr, 4, 15.0f, 5.0f, HU3D_MOTATTR_NONE); + work->mode = 2; + work->time = 0; } -static void fn_1_63F0(Bss18Work *arg0, omObjData *arg1) { - Vec sp10; - float temp_f29; - float var_f27; - float var_f28; +static void CupObjJumpWait(CupObjWork *work, omObjData *obj) +{ + Vec pos; + float time; + float rotY; + float scaleY; s16 var_r24; - if (arg0->unk01 >= 55) { + if (work->time >= 55) { BoardPlayerRotSet(GWSystem.player_curr, 0.0f, 0.0f, 0.0f); BoardPlayerIdleSet(GWSystem.player_curr); if (GWPlayer[GWSystem.player_curr].bowser_suit) { - BoardModelHookSet(arg0->unk04, lbl_1_data_604[lbl_1_bss_28], BoardBowserSuitModelGet()); - } else { - BoardModelHookSet(arg0->unk04, lbl_1_data_604[lbl_1_bss_28], BoardPlayerModelGet(GWSystem.player_curr)); + BoardModelHookSet(work->dishMdlId, cupHookTbl[cupHookNo], BoardBowserSuitModelGet()); } - var_r24 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][lbl_1_bss_28]]; - if (arg0->unk00_field3 != 0) { + else { + BoardModelHookSet(work->dishMdlId, cupHookTbl[cupHookNo], BoardPlayerModelGet(GWSystem.player_curr)); + } + var_r24 = mapObjMdlId[cupMapObj[cupSide][cupHookNo]]; + if (work->decaF != 0) { BoardModelScaleSet(var_r24, 1.0f, 0.1f, 1.0f); } - fn_1_5694(1); - lbl_1_data_5D4 = HuAudFXPlay(0x410); - arg0->unk01 = 0; - arg0->unk00_field1 = 1; + CupMotOnSet(1); + cupMoveSeNo = HuAudFXPlay(0x410); + work->time = 0; + work->mode = 1; return; } - if (arg0->unk01 == 25) { - BoardPlayerPosSet(GWSystem.player_curr, arg1->scale.x, arg1->scale.y, arg1->scale.z); - BoardPlayerMotionShiftSet(GWSystem.player_curr, 5, 0.0f, 8.0f, 0); + if (work->time == 25) { + BoardPlayerPosSet(GWSystem.player_curr, obj->scale.x, obj->scale.y, obj->scale.z); + BoardPlayerMotionShiftSet(GWSystem.player_curr, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); } - if (arg0->unk01 < 25) { - OSu8tof32(&arg0->unk01, &temp_f29); - BoardPlayerPosGet(GWSystem.player_curr, &sp10); - sp10.x += arg1->trans.x; - sp10.z += arg1->trans.z; - sp10.y += 15.0f + -0.08166667f * temp_f29 * temp_f29; - if (sp10.y <= arg1->scale.y) { - sp10.y = arg1->scale.y; + if (work->time < 25) { + OSu8tof32(&work->time, &time); + BoardPlayerPosGet(GWSystem.player_curr, &pos); + pos.x += obj->trans.x; + pos.z += obj->trans.z; + pos.y += 15.0f + -0.08166667f * time * time; + if (pos.y <= obj->scale.y) { + pos.y = obj->scale.y; } - var_f27 = arg1->trans.y + BoardPlayerRotYGet(GWSystem.player_curr); - BoardPlayerRotYSet(GWSystem.player_curr, var_f27); - BoardPlayerPosSetV(GWSystem.player_curr, &sp10); - if (arg0->unk01 > 12 && arg0->unk00_field3 != 0) { - if (lbl_1_data_5D8 == -1) { - lbl_1_data_5D8 = HuAudFXPlay(0x411); + rotY = obj->trans.y + BoardPlayerRotYGet(GWSystem.player_curr); + BoardPlayerRotYSet(GWSystem.player_curr, rotY); + BoardPlayerPosSetV(GWSystem.player_curr, &pos); + if (work->time > 12 && work->decaF != 0) { + if (decaStompSeNo == -1) { + decaStompSeNo = HuAudFXPlay(0x411); } - OSu8tof32(&arg0->unk01, &temp_f29); - temp_f29 -= 12.0f; - temp_f29 = 90.0f * (temp_f29 / 12.5f); - var_f28 = cosd(temp_f29); - if (var_f28 < 0.1f) { - var_f28 = 0.1f; + OSu8tof32(&work->time, &time); + time -= 12.0f; + time = 90.0f * (time / 12.5f); + scaleY = cosd(time); + if (scaleY < 0.1f) { + scaleY = 0.1f; } - var_r24 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][lbl_1_bss_28]]; - BoardModelScaleSet(var_r24, 1.0f, var_f28, 1.0f); + var_r24 = mapObjMdlId[cupMapObj[cupSide][cupHookNo]]; + BoardModelScaleSet(var_r24, 1.0f, scaleY, 1.0f); } } - arg0->unk01++; + work->time++; } -static void fn_1_6A14(Bss18Work *arg0, omObjData *arg1) { - Vec sp20; - Vec sp14; - Vec sp8; +static void CupObjHookReset(CupObjWork *work, omObjData *obj) +{ + Vec endPos; + Vec startPos; + Vec diff; - BoardModelHookObjReset(arg0->unk04, lbl_1_data_604[lbl_1_bss_28]); - Hu3DModelObjPosGet(BoardModelIDGet(arg0->unk04), lbl_1_data_604[lbl_1_bss_28], &sp14); - BoardPlayerPosSetV(GWSystem.player_curr, &sp14); - BoardSpacePosGet(0, lbl_1_bss_24, &sp20); - PSVECSubtract(&sp20, &sp14, &sp8); - arg1->trans.x = sp8.x / 25.0f; - arg1->trans.z = sp8.z / 25.0f; - arg1->scale.x = sp20.x; - arg1->scale.y = sp20.y; - arg1->scale.z = sp20.z; - BoardPlayerMotionShiftSet(GWSystem.player_curr, 4, 15.0f, 5.0f, 0); - BoardPlayerRotYSet(GWSystem.player_curr, atan2d(sp8.x, sp8.z)); - arg0->unk00_field1 = 3; - arg0->unk01 = 0; + BoardModelHookObjReset(work->dishMdlId, cupHookTbl[cupHookNo]); + Hu3DModelObjPosGet(BoardModelIDGet(work->dishMdlId), cupHookTbl[cupHookNo], &startPos); + BoardPlayerPosSetV(GWSystem.player_curr, &startPos); + BoardSpacePosGet(0, cupSpaceEnd, &endPos); + VECSubtract(&endPos, &startPos, &diff); + obj->trans.x = diff.x / 25.0f; + obj->trans.z = diff.z / 25.0f; + obj->scale.x = endPos.x; + obj->scale.y = endPos.y; + obj->scale.z = endPos.z; + BoardPlayerMotionShiftSet(GWSystem.player_curr, 4, 15.0f, 5.0f, HU3D_MOTATTR_NONE); + BoardPlayerRotYSet(GWSystem.player_curr, atan2d(diff.x, diff.z)); + work->mode = 3; + work->time = 0; } -static void fn_1_6BC0(Bss18Work *arg0, omObjData *arg1) { - Vec sp14; - Vec sp8; - float var_f28; - float temp_f29; - s16 var_r27; +static void CupObjStop(CupObjWork *work, omObjData *obj) +{ + Vec pos; + Vec spacePos; + float angle; + float time; + s16 mdlId; - if (arg0->unk01 >= 55) { - BoardSpacePosGet(0, lbl_1_bss_24, &sp8); - GWPlayer[GWSystem.player_curr].space_curr = lbl_1_bss_24; - BoardPlayerPosSetV(GWSystem.player_curr, &sp8); + if (work->time >= 55) { + BoardSpacePosGet(0, cupSpaceEnd, &spacePos); + GWPlayer[GWSystem.player_curr].space_curr = cupSpaceEnd; + BoardPlayerPosSetV(GWSystem.player_curr, &spacePos); BoardPlayerIdleSet(GWSystem.player_curr); - var_r27 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][lbl_1_bss_28]]; - if (arg0->unk00_field3 != 0) { - BoardModelScaleSet(var_r27, 1.0f, 1.0f, 1.0f); + mdlId = mapObjMdlId[cupMapObj[cupSide][cupHookNo]]; + if (work->decaF != 0) { + BoardModelScaleSet(mdlId, 1.0f, 1.0f, 1.0f); } - arg0->unk00_field0 = 1; + work->killF = 1; } - if (arg0->unk01 == 25) { - BoardPlayerPosSet(GWSystem.player_curr, arg1->scale.x, arg1->scale.y, arg1->scale.z); - BoardPlayerMotionShiftSet(GWSystem.player_curr, 5, 0.0f, 8.0f, 0); + if (work->time == 25) { + BoardPlayerPosSet(GWSystem.player_curr, obj->scale.x, obj->scale.y, obj->scale.z); + BoardPlayerMotionShiftSet(GWSystem.player_curr, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); } - if (arg0->unk01 < 25) { - OSu8tof32(&arg0->unk01, &temp_f29); - BoardPlayerPosGet(GWSystem.player_curr, &sp14); - sp14.x += arg1->trans.x; - sp14.z += arg1->trans.z; - sp14.y += 15.0f + -0.08166667f * temp_f29 * temp_f29; - if (sp14.y <= arg1->scale.y) { - sp14.y = arg1->scale.y; + if (work->time < 25) { + OSu8tof32(&work->time, &time); + BoardPlayerPosGet(GWSystem.player_curr, &pos); + pos.x += obj->trans.x; + pos.z += obj->trans.z; + pos.y += 15.0f + -0.08166667f * time * time; + if (pos.y <= obj->scale.y) { + pos.y = obj->scale.y; } - BoardPlayerPosSetV(GWSystem.player_curr, &sp14); - if (arg0->unk01 > 12 && arg0->unk00_field3 != 0) { - OSu8tof32(&arg0->unk01, &temp_f29); - temp_f29 -= 12.0f; - temp_f29 = 90.0f * (temp_f29 / 12.5f); - var_f28 = sind(temp_f29); - if (var_f28 < 0.1f) { - var_f28 = 0.1f; + BoardPlayerPosSetV(GWSystem.player_curr, &pos); + if (work->time > 12 && work->decaF != 0) { + OSu8tof32(&work->time, &time); + time -= 12.0f; + time = 90.0f * (time / 12.5f); + angle = sind(time); + if (angle < 0.1f) { + angle = 0.1f; } - var_r27 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][lbl_1_bss_28]]; - BoardModelScaleSet(var_r27, 1.0f, var_f28, 1.0f); + mdlId = mapObjMdlId[cupMapObj[cupSide][cupHookNo]]; + BoardModelScaleSet(mdlId, 1.0f, angle, 1.0f); } } - arg0->unk01++; + work->time++; } -static void fn_1_6FB4(Bss18Work *arg0, omObjData *arg1) { - Vec sp40; - Vec sp34; - Vec sp28; - Vec sp1C; - Vec sp10; - float var_f31; - BoardSpace *temp_r29; - s16 var_r22; - u32 temp_r3; - s32 var_r24; +static void CupObjRotate(CupObjWork *work, omObjData *obj) +{ + Vec spacePos; + Vec objPos; + + float dist; + BoardSpace *space; + s16 mdlId; + u32 flag; + s32 cupDir; s32 i; - if (arg0->unk00_field2 != 0) { - arg0->unk08 *= 0.9f; - if (arg0->unk08 <= 0.01f) { - arg0->unk08 = 0.0f; - fn_1_5694(0); - if (lbl_1_data_5D4 != -1) { - HuAudFXStop(lbl_1_data_5D4); - lbl_1_data_5D4 = -1; + if (work->stopF != 0) { + work->dishSpeed *= 0.9f; + if (work->dishSpeed <= 0.01f) { + work->dishSpeed = 0.0f; + CupMotOnSet(0); + if (cupMoveSeNo != -1) { + HuAudFXStop(cupMoveSeNo); + cupMoveSeNo = -1; } - fn_1_6A14(arg0, arg1); + CupObjHookReset(work, obj); } - BoardModelMotionSpeedSet(arg0->unk04, arg0->unk08); + BoardModelMotionSpeedSet(work->dishMdlId, work->dishSpeed); for (i = 0; i < 3; i++) { - var_r22 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][i]]; - BoardModelMotionSpeedSet(var_r22, arg0->unk08); + mdlId = mapObjMdlId[cupMapObj[cupSide][i]]; + BoardModelMotionSpeedSet(mdlId, work->dishSpeed); } return; } - if (lbl_1_bss_29 == 0) { - var_r24 = lbl_1_bss_0->unk01[lbl_1_bss_29] ^ 1; - } else { - var_r24 = lbl_1_bss_0->unk01[lbl_1_bss_29]; + if (cupSide == 0) { + cupDir = boardWork->cupDir[cupSide] ^ 1; } - temp_r29 = BoardSpaceGet(0, lbl_1_bss_26); - lbl_1_bss_24 = -1; - for (i = 0; i < temp_r29->link_cnt; i++) { - if (temp_r29->link[i] != -1) { - temp_r3 = BoardSpaceFlagGet(0, temp_r29->link[i]); - if ((temp_r3 & 0x200) && var_r24 == 0) { - lbl_1_bss_24 = temp_r29->link[i]; + else { + cupDir = boardWork->cupDir[cupSide]; + } + space = BoardSpaceGet(0, cupSpaceStart); + cupSpaceEnd = -1; + for (i = 0; i < space->link_cnt; i++) { + if (space->link[i] != -1) { + flag = BoardSpaceFlagGet(0, space->link[i]); + if ((flag & 0x200) && cupDir == 0) { + cupSpaceEnd = space->link[i]; } - if ((temp_r3 & 0x100) && var_r24 != 0) { - lbl_1_bss_24 = temp_r29->link[i]; + if ((flag & 0x100) && cupDir != 0) { + cupSpaceEnd = space->link[i]; } } } - BoardSpacePosGet(0, lbl_1_bss_24, &sp40); - Hu3DModelObjPosGet(BoardModelIDGet(arg0->unk04), lbl_1_data_604[lbl_1_bss_28], &sp34); - var_f31 = BoardVecDistXZCalc(&sp40, &sp34); - if (var_f31 <= 300.0f) { - arg0->unk00_field2 = 1; - arg0->unk08 = 1.0f; + BoardSpacePosGet(0, cupSpaceEnd, &spacePos); + Hu3DModelObjPosGet(BoardModelIDGet(work->dishMdlId), cupHookTbl[cupHookNo], &objPos); + dist = BoardVecDistXZCalc(&spacePos, &objPos); + if (dist <= 300.0f) { + work->stopF = TRUE; + work->dishSpeed = 1.0f; } } -static void fn_1_7528(s32 arg0, s32 arg1) { - Vec sp30; - Vec sp24; - Vec sp18; - float temp_f31; - float temp_f30; - s16 sp14[] = { 23, 28 }; +static void CupLandEvent(s32 playerNo, s32 spaceId) +{ + Vec spacePos; + Vec cupRPos; + Vec cupLPos; + float cupRDist; + float cupLDist; + s16 sp14[] = { MAPOBJ_CUPR_DISH, MAPOBJ_CUPL_DISH }; BoardPlayerIdleSet(GWSystem.player_curr); - BoardSpacePosGet(0, arg1, &sp30); - BoardModelPosGet(lbl_1_bss_6C4[23], &sp24); - BoardModelPosGet(lbl_1_bss_6C4[28], &sp18); - temp_f31 = PSVECDistance(&sp24, &sp30); - temp_f30 = PSVECDistance(&sp18, &sp30); - if (temp_f31 < temp_f30) { - lbl_1_bss_29 = 0; - } else { - lbl_1_bss_29 = 1; + BoardSpacePosGet(0, spaceId, &spacePos); + BoardModelPosGet(mapObjMdlId[MAPOBJ_CUPR_DISH], &cupRPos); + BoardModelPosGet(mapObjMdlId[MAPOBJ_CUPL_DISH], &cupLPos); + cupRDist = VECDistance(&cupRPos, &spacePos); + cupLDist = VECDistance(&cupLPos, &spacePos); + if (cupRDist < cupLDist) { + cupSide = 0; } - BoardCameraTargetModelSet(lbl_1_bss_6C4[sp14[lbl_1_bss_29]]); + else { + cupSide = 1; + } + BoardCameraTargetModelSet(mapObjMdlId[sp14[cupSide]]); BoardCameraMotionWait(); HuPrcSleep(42); - fn_1_5B40(); + CupExec(); BoardCameraTargetPlayerSet(GWSystem.player_curr); BoardCameraMotionWait(); HuPrcSleep(12); } -static void fn_1_77EC(s32 arg0, s32 arg1) { - lbl_1_bss_6B4 = arg0; - lbl_1_bss_6B0 = 0; - lbl_1_bss_8 = HuPrcChildCreate(fn_1_7894, 0x2003, 0x2000, 0, boardMainProc); - HuPrcDestructorSet2(lbl_1_bss_8, fn_1_4FA8); - while (lbl_1_bss_8) { +static void CoasterLandEvent(s32 playerNo, s32 spaceId) +{ + eventPlayer = playerNo; + coasterType = 0; + coasterProc = HuPrcChildCreate(CoasterLandMain, 0x2003, 0x2000, 0, boardMainProc); + HuPrcDestructorSet2(coasterProc, CoasterDestroy); + while (coasterProc) { HuPrcVSleep(); } } -static void fn_1_7894(void) { - lbl_1_bss_6B1 = 1; +static void CoasterLandMain(void) +{ + coasterLandF = 1; WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } - fn_1_7A64(); - fn_1_45F4(); + CoasterLandExec(); + CoasterExit(); HuPrcEnd(); } -static void fn_1_7A64(void) { - Vec sp34; - Vec sp28; - Vec sp1C; - Vec sp10; - float var_f30; - s16 var_r20; - s32 temp_r19; - s32 var_r28; +static void CoasterLandExec(void) +{ + Vec spacePos; + float motSpeed; + s16 spaceId; + s32 seNo; + s32 endF; - var_r28 = 0; - lbl_1_bss_674 = lbl_1_bss_670 = 0.18f; - lbl_1_bss_640 = 0.0f; - lbl_1_bss_660.x = 0.0f; - lbl_1_bss_660.y = 0.0f; - lbl_1_bss_660.z = 0.0f; + endF = 0; + coasterAccel = coasterSpeed = 0.18f; + coasterTime = 0.0f; + coasterRot.x = 0.0f; + coasterRot.y = 0.0f; + coasterRot.z = 0.0f; lbl_1_bss_6A8 = 0.0f; - lbl_1_bss_6B3 = 0; - lbl_1_bss_624.x = 0.0f; - lbl_1_bss_624.z = 0.0f; - lbl_1_bss_624.y = 1.0f; - lbl_1_bss_66C = 0.04f; + coasterLoopF = 0; + coasterCameraUp.x = 0.0f; + coasterCameraUp.z = 0.0f; + coasterCameraUp.y = 1.0f; + coasterCamSpeed = 0.04f; BoardSpaceAttrSet(0, 1); - fn_1_97F4(); - BoardModelMotionStart(lbl_1_bss_6AE, 0, 0); - if (lbl_1_bss_0->unk00_field0 == 0) { - BoardModelMotionTimeSet(lbl_1_bss_6AE, lbl_1_bss_644); - lbl_1_bss_63C = -90.0f; - lbl_1_bss_6AC = BoardSpaceFlagPosGet(1, 0x2000, &sp34); - var_r20 = BoardSpaceFlagSearch(1, 0x1000); - } else { - BoardModelMotionTimeSet(lbl_1_bss_6AE, 0.0f); - lbl_1_bss_63C = 90.0f; - lbl_1_bss_6AC = BoardSpaceFlagPosGet(1, 0x1000, &sp34); - var_r20 = BoardSpaceFlagSearch(1, 0x2000); + CoasterEffCreate(); + BoardModelMotionStart(coasterPathMdlId, 0, 0); + if (boardWork->hostSide == 0) { + BoardModelMotionTimeSet(coasterPathMdlId, coasterMaxTime); + coasterBaseRotY = -90.0f; + coasterStartSpace = BoardSpaceFlagPosGet(1, 0x2000, &spacePos); + spaceId = BoardSpaceFlagSearch(1, 0x1000); } - lbl_1_bss_654 = sp34; - BoardCameraMotionStartEx(lbl_1_bss_6C4[0], NULL, NULL, 2400.0f, -1.0f, 2); - PSMTXRotRad(lbl_1_bss_678, 'y', MTXDegToRad(lbl_1_bss_63C)); - BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); - BoardModelRotSet(lbl_1_bss_6C4[0], 0.0f, 0.0f, 0.0f); - fn_1_3350(); - lbl_1_bss_648 = lbl_1_bss_654; - lbl_1_bss_618 = lbl_1_bss_654; - lbl_1_bss_630 = lbl_1_bss_654; - fn_1_852C(); - BoardModelMotionSpeedSet(lbl_1_bss_6AE, lbl_1_bss_670); + else { + BoardModelMotionTimeSet(coasterPathMdlId, 0.0f); + coasterBaseRotY = 90.0f; + coasterStartSpace = BoardSpaceFlagPosGet(1, 0x1000, &spacePos); + spaceId = BoardSpaceFlagSearch(1, 0x2000); + } + coasterPos = spacePos; + BoardCameraMotionStartEx(mapObjMdlId[MAPOBJ_COASTER], NULL, NULL, 2400.0f, -1.0f, 2); + MTXRotRad(coasterMtx, 'y', MTXDegToRad(coasterBaseRotY)); + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &coasterMtx); + BoardModelRotSet(mapObjMdlId[MAPOBJ_COASTER], 0.0f, 0.0f, 0.0f); + CoasterPathMotUpdate(); + coasterPosOld = coasterPos; + coasterCameraTarget = coasterPos; + coasterCameraPos = coasterPos; + CoasterPlayerManCreate(); + BoardModelMotionSpeedSet(coasterPathMdlId, coasterSpeed); BoardCameraMotionWait(); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - lbl_1_bss_6B0 = 1; - temp_r19 = HuAudFXPlay(0x412); + coasterType = 1; + seNo = HuAudFXPlay(0x412); while (TRUE) { - fn_1_1990(); - fn_1_3350(); - fn_1_276C(); - BoardModelPosSetV(lbl_1_bss_6C4[0], &lbl_1_bss_654); - BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); - if (lbl_1_bss_0->unk00_field0 == 0) { - var_f30 = -lbl_1_bss_670; - } else { - var_f30 = lbl_1_bss_670; + CoasterPathUpdate(); + CoasterPathMotUpdate(); + CoasterRotUpdate(); + BoardModelPosSetV(mapObjMdlId[MAPOBJ_COASTER], &coasterPos); + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &coasterMtx); + if (boardWork->hostSide == 0) { + motSpeed = -coasterSpeed; } - BoardModelMotionSpeedSet(lbl_1_bss_6AE, var_f30); - if (lbl_1_bss_0->unk00_field0 == 0) { - if (BoardModelMotionTimeGet(lbl_1_bss_6AE) <= 20.0f && var_r28 == 0) { + else { + motSpeed = coasterSpeed; + } + BoardModelMotionSpeedSet(coasterPathMdlId, motSpeed); + if (boardWork->hostSide == 0) { + if (BoardModelMotionTimeGet(coasterPathMdlId) <= 20.0f && endF == 0) { WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - var_r28 = 1; - } - } else { - if (BoardModelMotionTimeGet(lbl_1_bss_6AE) >= lbl_1_bss_644 - 20.0f && var_r28 == 0) { - WipeColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - var_r28 = 1; + endF = 1; } } - if (var_r28 != 0 && WipeStatGet() == 0) { + else { + if (BoardModelMotionTimeGet(coasterPathMdlId) >= coasterMaxTime - 20.0f && endF == 0) { + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + endF = 1; + } + } + if (endF != 0 && WipeStatGet() == 0) { break; } HuPrcVSleep(); } - HuAudFXStop(temp_r19); - fn_1_98EC(); - fn_1_87AC(); - while (lbl_1_bss_C) { + HuAudFXStop(seNo); + CoasterEffKill(); + CoasterPlayerManKill(); + while (coasterPlayerManObj) { HuPrcVSleep(); } - PSMTXIdentity(lbl_1_bss_678); - BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); - lbl_1_bss_660.x = 0.0f; - lbl_1_bss_660.z = 0.0f; - lbl_1_bss_660.y = -lbl_1_bss_63C; - BoardModelRotSetV(lbl_1_bss_6C4[0], &lbl_1_bss_660); - BoardSpacePosGet(1, var_r20, &sp34); - BoardModelPosSetV(lbl_1_bss_6C4[0], &sp34); + MTXIdentity(coasterMtx); + BoardModelMtxSet(mapObjMdlId[MAPOBJ_COASTER], &coasterMtx); + coasterRot.x = 0.0f; + coasterRot.z = 0.0f; + coasterRot.y = -coasterBaseRotY; + BoardModelRotSetV(mapObjMdlId[MAPOBJ_COASTER], &coasterRot); + BoardSpacePosGet(1, spaceId, &spacePos); + BoardModelPosSetV(mapObjMdlId[MAPOBJ_COASTER], &spacePos); BoardSpaceAttrReset(0, 1); BoardCameraMoveSet(0); - BoardCameraTargetPlayerSet(lbl_1_bss_6B4); + BoardCameraTargetPlayerSet(eventPlayer); BoardCameraViewSet(1); BoardCameraMotionWait(); - lbl_1_bss_6B2 = 1; + coasterDoneF = 1; } -static s8 lbl_1_data_633 = -1; +static s8 coasterChasePlayer = -1; -static void fn_1_852C(void) { - BssCWork *temp_r30; - BssCData *temp_r31; - Vec spC; - float temp_f31; - s16 sp8; - s16 var_r28; +static void CoasterPlayerManCreate(void) +{ + CoasterPlayerManWork *work; + CoasterPlayerWork *workPlayer; + Vec playerPos; + float motTime; + s16 charNo; + s16 spaceId; s16 i; - u32 var_r27; + u32 spaceFlag; - lbl_1_bss_C = omAddObjEx(boardObjMan, 0x103, 0, 0, -1, fn_1_87E0); - temp_r30 = OM_GET_WORK_PTR(lbl_1_bss_C, BssCWork); - temp_r30->unk00_field0 = 0; - temp_r30->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(BssCData), MEMORY_DEFAULT_NUM); - memset(temp_r30->unk04, 0, 4 * sizeof(BssCData)); - lbl_1_data_633 = -1; - lbl_1_bss_1C = 0; - for (temp_r30->unk01 = i = 0; i < 4; i++) { - temp_r31 = &temp_r30->unk04[temp_r30->unk01]; - var_r28 = GWPlayer[i].space_curr; - sp8 = GWPlayer[i].character; - var_r27 = BoardSpaceFlagGet(0, var_r28); - if (!(var_r27 & 1)) { - temp_r31->unk00 = -1; + coasterPlayerManObj = omAddObjEx(boardObjMan, 0x103, 0, 0, -1, CoasterPlayerManUpdate); + work = OM_GET_WORK_PTR(coasterPlayerManObj, CoasterPlayerManWork); + work->killF = 0; + work->player = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(CoasterPlayerWork), MEMORY_DEFAULT_NUM); + memset(work->player, 0, 4 * sizeof(CoasterPlayerWork)); + coasterChasePlayer = -1; + coasterPlayerChaseNum = 0; + for (work->playerNum = i = 0; i < 4; i++) { + workPlayer = &work->player[work->playerNum]; + spaceId = GWPlayer[i].space_curr; + charNo = GWPlayer[i].character; + spaceFlag = BoardSpaceFlagGet(0, spaceId); + if (!(spaceFlag & 1)) { + workPlayer->mode = -1; continue; } - temp_r31->unk00 = 0; - temp_r31->unk01 = i; - temp_r31->unk02 = 0; - BoardPlayerPosGet(temp_r31->unk01, &spC); - temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 10), NULL, 0); - temp_f31 = BoardModelMotionMaxTimeGet(temp_r31->unk04); - BoardModelVisibilitySet(temp_r31->unk04, 0); - fn_1_95F4(temp_r31); - BoardModelMotionStart(temp_r31->unk04, 0, 0); - BoardModelMotionSpeedSet(temp_r31->unk04, 0.0f); - if (lbl_1_bss_0->unk00_field0 == 0) { - temp_r31->unk08 = -0.18f; - BoardModelMotionTimeSet(temp_r31->unk04, temp_f31); - } else { - temp_r31->unk08 = 0.18f; - BoardModelMotionTimeSet(temp_r31->unk04, 0.0f); + workPlayer->mode = 0; + workPlayer->playerNo = i; + workPlayer->delay = 0; + BoardPlayerPosGet(workPlayer->playerNo, &playerPos); + workPlayer->pathMdlId = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 10), NULL, 0); + motTime = BoardModelMotionMaxTimeGet(workPlayer->pathMdlId); + BoardModelVisibilitySet(workPlayer->pathMdlId, 0); + CoasterPlayerTimeInit(workPlayer); + BoardModelMotionStart(workPlayer->pathMdlId, 0, 0); + BoardModelMotionSpeedSet(workPlayer->pathMdlId, 0.0f); + if (boardWork->hostSide == 0) { + workPlayer->speed = -0.18f; + BoardModelMotionTimeSet(workPlayer->pathMdlId, motTime); } - fn_1_932C(temp_r31); - temp_r30->unk01++; + else { + workPlayer->speed = 0.18f; + BoardModelMotionTimeSet(workPlayer->pathMdlId, 0.0f); + } + CoasterPlayerEndSet(workPlayer); + work->playerNum++; } BoardCameraMoveSet(1); - BoardCameraTargetModelSet(lbl_1_bss_6C4[0]); + BoardCameraTargetModelSet(mapObjMdlId[MAPOBJ_COASTER]); } -static void fn_1_87AC(void) { - if (lbl_1_bss_C) { - OM_GET_WORK_PTR(lbl_1_bss_C, BssCWork)->unk00_field0 = 1; +static void CoasterPlayerManKill(void) +{ + if (coasterPlayerManObj) { + OM_GET_WORK_PTR(coasterPlayerManObj, CoasterPlayerManWork)->killF = 1; } } -static void fn_1_87E0(omObjData *arg0) { - BssCWork *temp_r30 = OM_GET_WORK_PTR(arg0, BssCWork); - BssCData *temp_r31; +static void CoasterPlayerManUpdate(omObjData *obj) +{ + CoasterPlayerManWork *work = OM_GET_WORK_PTR(obj, CoasterPlayerManWork); + CoasterPlayerWork *workPlayer; s32 i; - if (temp_r30->unk00_field0 != 0 || BoardIsKill()) { - for (i = 0; i < temp_r30->unk01; i++) { - temp_r31 = &temp_r30->unk04[i]; + if (work->killF != 0 || BoardIsKill()) { + for (i = 0; i < work->playerNum; i++) { + workPlayer = &work->player[i]; } - HuMemDirectFree(temp_r30->unk04); - lbl_1_bss_C = NULL; - omDelObjEx(HuPrcCurrentGet(), arg0); + HuMemDirectFree(work->player); + coasterPlayerManObj = NULL; + omDelObjEx(HuPrcCurrentGet(), obj); return; } - if (lbl_1_bss_6B0 == 0) { + if (coasterType == 0) { return; } - for (i = 0; i < temp_r30->unk01; i++) { - temp_r31 = &temp_r30->unk04[i]; - if (temp_r31->unk02 != 0) { - temp_r31->unk02--; - } else { - switch (temp_r31->unk00) { + for (i = 0; i < work->playerNum; i++) { + workPlayer = &work->player[i]; + if (workPlayer->delay != 0) { + workPlayer->delay--; + } + else { + switch (workPlayer->mode) { case 0: - fn_1_8988(temp_r31, arg0); + CoasterPlayerWait(workPlayer, obj); break; case 1: - fn_1_8A50(temp_r31, arg0); + CoasterPlayerChaseBegin(workPlayer, obj); break; case 2: - fn_1_8B6C(temp_r31, arg0); + CoasterPlayerChasePathSet(workPlayer, obj); break; case 3: - fn_1_8DDC(temp_r31, arg0); + CoasterPlayerChase(workPlayer, obj); break; case 4: - fn_1_918C(temp_r31, arg0); + CoasterPlayerStop(workPlayer, obj); break; case 5: - fn_1_927C(temp_r31, arg0); + CoasterPlayerEnd(workPlayer, obj); break; } } } } -static void fn_1_8988(BssCData *arg0, omObjData *arg1) { - Vec sp20; - Vec sp14; - Vec sp8; +static void CoasterPlayerWait(CoasterPlayerWork *work, omObjData *obj) +{ + Vec mdlCoasterPos; + Vec playerPos; + Vec dir; - if (arg0->unk10 - lbl_1_bss_640 > 900.0f) { + if (work->time - coasterTime > 900.0f) { return; } - BoardModelPosGet(*lbl_1_bss_6C4, &sp20); - BoardPlayerPosGet(arg0->unk01, &sp14); - PSVECSubtract(&sp20, &sp14, &sp8); - BoardPlayerRotYSet(arg0->unk01, atan2d(sp8.x, sp8.z)); - arg0->unk00 = 1; + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER], &mdlCoasterPos); + BoardPlayerPosGet(work->playerNo, &playerPos); + VECSubtract(&mdlCoasterPos, &playerPos, &dir); + BoardPlayerRotYSet(work->playerNo, atan2d(dir.x, dir.z)); + work->mode = 1; } -static s32 lbl_1_data_634[8] = { - 0x00000123, - 0x00000163, - 0x000001A3, - 0x000001E3, - 0x00000223, - 0x00000263, - 0x000002A3, - 0x000002E3 -}; +static s32 coasterChaseSe[8] = { 0x00000123, 0x00000163, 0x000001A3, 0x000001E3, 0x00000223, 0x00000263, 0x000002A3, 0x000002E3 }; -static void fn_1_8A50(BssCData *arg0, omObjData *arg1) { - if (lbl_1_data_633 == -1) { - BoardCameraTargetPlayerSet(arg0->unk01); - lbl_1_data_633 = arg0->unk01; +static void CoasterPlayerChaseBegin(CoasterPlayerWork *work, omObjData *obj) +{ + if (coasterChasePlayer == -1) { + BoardCameraTargetPlayerSet(work->playerNo); + coasterChasePlayer = work->playerNo; } - HuAudFXPlay(lbl_1_data_634[GWPlayer[arg0->unk01].character]); - BoardPlayerMotionStart(arg0->unk01, 9, 0); - BoardPlayerMotionSpeedSet(arg0->unk01, 2.0f); - arg0->unk02 = lbl_1_bss_1C * 3 + 9; - arg0->unk00 = 2; - lbl_1_bss_1C++; - omVibrate(arg0->unk01, 12, 4, 2); + HuAudFXPlay(coasterChaseSe[GWPlayer[work->playerNo].character]); + BoardPlayerMotionStart(work->playerNo, 9, 0); + BoardPlayerMotionSpeedSet(work->playerNo, 2.0f); + work->delay = coasterPlayerChaseNum * 3 + 9; + work->mode = 2; + coasterPlayerChaseNum++; + omVibrate(work->playerNo, 12, 4, 2); } -static void fn_1_8B6C(BssCData *arg0, omObjData *arg1) { - ModelData *temp_r29; - HsfObject *var_r30; - Vec sp20; - Vec sp14; - Vec sp8; - float temp_f30; - float var_f31; - s16 var_r28; +static void CoasterPlayerChasePathSet(CoasterPlayerWork *work, omObjData *obj) +{ + ModelData *modelP; + HsfObject *modelObj; + Vec mdlCoasterPos; + Vec dir; + Vec objPos; + float motTime; + float time; + s16 modelId; - BoardPlayerPosGet(arg0->unk01, &arg0->unk14); - BoardModelPosGet(lbl_1_bss_6C4[0], &sp20); - PSVECSubtract(&sp20, &arg0->unk14, &sp14); - BoardPlayerRotYSet(arg0->unk01, -atan2d(sp14.x, sp14.z)); - BoardPlayerMotionStart(arg0->unk01, 3, 0x40000001); - BoardPlayerMotionSpeedSet(arg0->unk01, 2.0f); - temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6AE); - var_r28 = BoardModelIDGet(lbl_1_bss_6AE); - temp_r29 = &Hu3DData[var_r28]; - Hu3DMotionExec(var_r28, temp_r29->unk_08, temp_r29->unk_64, 0); - var_r30 = Hu3DModelObjPtrGet(var_r28, "looppath-cube1"); - sp8.x = var_r30->data.curr.pos.x; - sp8.y = var_r30->data.curr.pos.y; - sp8.z = var_r30->data.curr.pos.z; - var_f31 = lbl_1_bss_640; + BoardPlayerPosGet(work->playerNo, &work->pos); + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER], &mdlCoasterPos); + VECSubtract(&mdlCoasterPos, &work->pos, &dir); + BoardPlayerRotYSet(work->playerNo, -atan2d(dir.x, dir.z)); + BoardPlayerMotionStart(work->playerNo, 3, HU3D_MOTATTR_LOOP); + BoardPlayerMotionSpeedSet(work->playerNo, 2.0f); + motTime = BoardModelMotionTimeGet(coasterPathMdlId); + modelId = BoardModelIDGet(coasterPathMdlId); + modelP = &Hu3DData[modelId]; + Hu3DMotionExec(modelId, modelP->unk_08, modelP->unk_64, 0); + modelObj = Hu3DModelObjPtrGet(modelId, "looppath-cube1"); + objPos.x = modelObj->data.curr.pos.x; + objPos.y = modelObj->data.curr.pos.y; + objPos.z = modelObj->data.curr.pos.z; + time = coasterTime; while (TRUE) { - Hu3DMotionExec(var_r28, temp_r29->unk_08, temp_r29->unk_64, 0); - var_r30 = Hu3DModelObjPtrGet(var_r28, "looppath-cube1"); - sp14.x = sp8.x - var_r30->data.curr.pos.x; - sp14.y = sp8.y - var_r30->data.curr.pos.y; - sp14.z = sp8.z - var_r30->data.curr.pos.z; - var_f31 += PSVECMag(&sp14); - if (var_f31 >= arg0->unk10) { + Hu3DMotionExec(modelId, modelP->unk_08, modelP->unk_64, 0); + modelObj = Hu3DModelObjPtrGet(modelId, "looppath-cube1"); + dir.x = objPos.x - modelObj->data.curr.pos.x; + dir.y = objPos.y - modelObj->data.curr.pos.y; + dir.z = objPos.z - modelObj->data.curr.pos.z; + time += VECMag(&dir); + if (time >= work->time) { break; } - sp8.x = var_r30->data.curr.pos.x; - sp8.y = var_r30->data.curr.pos.y; - sp8.z = var_r30->data.curr.pos.z; - temp_r29->unk_64 += arg0->unk08; + objPos.x = modelObj->data.curr.pos.x; + objPos.y = modelObj->data.curr.pos.y; + objPos.z = modelObj->data.curr.pos.z; + modelP->unk_64 += work->speed; } - BoardModelMotionStart(arg0->unk04, 0, 0); - BoardModelMotionTimeSet(arg0->unk04, temp_r29->unk_64); - BoardModelMotionSpeedSet(arg0->unk04, temp_r29->unk_68); - arg0->unk00 = 3; - BoardModelMotionTimeSet(lbl_1_bss_6AE, temp_f30); + BoardModelMotionStart(work->pathMdlId, 0, 0); + BoardModelMotionTimeSet(work->pathMdlId, modelP->unk_64); + BoardModelMotionSpeedSet(work->pathMdlId, modelP->unk_68); + work->mode = 3; + BoardModelMotionTimeSet(coasterPathMdlId, motTime); } -static void fn_1_8DDC(BssCData *arg0, omObjData *arg1) { - ModelData *temp_r29; - HsfObject *var_r30; - Vec *var_r27; - Vec *var_r26; - Vec sp48; - Vec sp3C; - Vec sp30; - Vec sp24; - Vec sp18; - Vec spC; - Mtx sp54; - s16 var_r28; +static void CoasterPlayerChase(CoasterPlayerWork *work, omObjData *obj) +{ + ModelData *modelP; + HsfObject *modelObj; + Vec *pos; + Vec *target; + Vec up; + Vec rot; + Vec objPos; + Vec diff; + Vec railPos; + Vec spacePos; + Mtx matrix; + s16 modelId; - var_r28 = BoardModelIDGet(arg0->unk04); - temp_r29 = &Hu3DData[var_r28]; - Hu3DMotionExec(var_r28, temp_r29->unk_08, temp_r29->unk_64, 0); - var_r30 = Hu3DModelObjPtrGet(var_r28, "looppath-cube1"); - sp30.x = var_r30->data.curr.pos.x; - sp30.y = var_r30->data.curr.pos.y; - sp30.z = var_r30->data.curr.pos.z; - PSVECSubtract(&sp30, &arg0->unk14, &sp24); - if (fn_1_94A8(arg0) != 0) { - BoardModelPosGet(lbl_1_bss_6C4[1], &sp18); - PSVECSubtract(&sp18, &sp30, &sp48); - PSVECNormalize(&sp48, &sp48); - var_r27 = &arg0->unk14; - var_r26 = &sp30; - BoardMTXCalcLookAt(sp54, var_r26, &sp48, var_r27); - PSMTXTranspose(sp54, arg0->unk20); - } else { - if (sp24.z != 0.0f || sp24.x != 0.0f) { - sp3C.y = atan2d(sp24.x, sp24.z); - sp3C.x = -atan2d(sp24.y, VECMagXZ(&sp24)); - } else { - sp3C.x = sp3C.y = 0.0f; + modelId = BoardModelIDGet(work->pathMdlId); + modelP = &Hu3DData[modelId]; + Hu3DMotionExec(modelId, modelP->unk_08, modelP->unk_64, 0); + modelObj = Hu3DModelObjPtrGet(modelId, "looppath-cube1"); + objPos.x = modelObj->data.curr.pos.x; + objPos.y = modelObj->data.curr.pos.y; + objPos.z = modelObj->data.curr.pos.z; + VECSubtract(&objPos, &work->pos, &diff); + if (CoasterPlayerLoopCheck(work) != 0) { + BoardModelPosGet(mapObjMdlId[MAPOBJ_COASTER_RAIL], &railPos); + VECSubtract(&railPos, &objPos, &up); + VECNormalize(&up, &up); + pos = &work->pos; + target = &objPos; + BoardMTXCalcLookAt(matrix, target, &up, pos); + MTXTranspose(matrix, work->matrix); + } + else { + if (diff.z != 0.0f || diff.x != 0.0f) { + rot.y = atan2d(diff.x, diff.z); + rot.x = -atan2d(diff.y, VECMagXZ(&diff)); } - PSMTXRotRad(sp54, 'x', MTXDegToRad(sp3C.x)); - PSMTXRotRad(arg0->unk20, 'y', MTXDegToRad(sp3C.y)); - PSMTXConcat(arg0->unk20, sp54, arg0->unk20); + else { + rot.x = rot.y = 0.0f; + } + MTXRotRad(matrix, 'x', MTXDegToRad(rot.x)); + MTXRotRad(work->matrix, 'y', MTXDegToRad(rot.y)); + MTXConcat(work->matrix, matrix, work->matrix); } - BoardPlayerPosSetV(arg0->unk01, &sp30); - BoardPlayerRotSet(arg0->unk01, 0.0f, 0.0f, 0.0f); - BoardPlayerMtxSet(arg0->unk01, &arg0->unk20); - arg0->unk14 = sp30; - BoardSpacePosGet(0, arg0->unk06, &spC); - if (BoardVecMaxDistXZCheck(&spC, &sp30, 200.0f)) { - arg0->unk00 = 4; + BoardPlayerPosSetV(work->playerNo, &objPos); + BoardPlayerRotSet(work->playerNo, 0.0f, 0.0f, 0.0f); + BoardPlayerMtxSet(work->playerNo, &work->matrix); + work->pos = objPos; + BoardSpacePosGet(0, work->endSpace, &spacePos); + if (BoardVecMaxDistXZCheck(&spacePos, &objPos, 200.0f)) { + work->mode = 4; } } -static void fn_1_918C(BssCData *arg0, omObjData *arg1) { - Vec sp20; - Vec sp14; - Vec sp8; - s32 var_r30; +static void CoasterPlayerStop(CoasterPlayerWork *work, omObjData *obj) +{ + Vec spacePos; + Vec playerPos; + Vec dir; + s32 spaceEnd; - PSMTXIdentity(arg0->unk20); - var_r30 = BoardSpaceLinkFlagSearch(0, arg0->unk06, 0x40); - BoardSpacePosGet(0, var_r30, &sp20); - BoardPlayerPosGet(arg0->unk01, &sp14); - BoardPlayerMtxSet(arg0->unk01, &arg0->unk20); - PSVECSubtract(&sp20, &sp14, &sp8); - BoardPlayerRotYSet(arg0->unk01, atan2d(-sp8.z, -sp8.x)); - BoardPlayerPosLerpStart(arg0->unk01, &sp14, &sp20, 20); - arg0->unk00 = 5; + MTXIdentity(work->matrix); + spaceEnd = BoardSpaceLinkFlagSearch(0, work->endSpace, 0x40); + BoardSpacePosGet(0, spaceEnd, &spacePos); + BoardPlayerPosGet(work->playerNo, &playerPos); + BoardPlayerMtxSet(work->playerNo, &work->matrix); + VECSubtract(&spacePos, &playerPos, &dir); + BoardPlayerRotYSet(work->playerNo, atan2d(-dir.z, -dir.x)); + BoardPlayerPosLerpStart(work->playerNo, &playerPos, &spacePos, 20); + work->mode = 5; } -static void fn_1_927C(BssCData *arg0, omObjData *arg1) { - s32 temp_r3; +static void CoasterPlayerEnd(CoasterPlayerWork *work, omObjData *obj) +{ + s32 spaceEnd; - if (!GWPlayer[arg0->unk01].moving) { - BoardPlayerIdleSet(arg0->unk01); - temp_r3 = BoardSpaceLinkFlagSearch(0, arg0->unk06, 0x40); - GWPlayer[arg0->unk01].space_curr = temp_r3; - arg0->unk00 = -1; - BoardPlayerMoveAwayStartCurr(temp_r3, 0); + if (!GWPlayer[work->playerNo].moving) { + BoardPlayerIdleSet(work->playerNo); + spaceEnd = BoardSpaceLinkFlagSearch(0, work->endSpace, 0x40); + GWPlayer[work->playerNo].space_curr = spaceEnd; + work->mode = -1; + BoardPlayerMoveAwayStartCurr(spaceEnd, 0); } } -static void fn_1_932C(BssCData *arg0) { - BoardSpace *temp_r30; - BoardSpace *var_r26; - Vec sp20[2]; - Vec sp14; - float spC[2]; - s16 sp8[2]; - s32 var_r29; - s32 var_r28; +static void CoasterPlayerEndSet(CoasterPlayerWork *work) +{ + BoardSpace *space; + BoardSpace *linkSpace; + Vec spacePos[2]; + Vec beginPos; + float spaceDist[2]; + s16 spaceId[2]; + s32 j; + s32 no; s32 i; - for (var_r28 = i = 0; i < BoardSpaceCountGet(0); i++) { - temp_r30 = BoardSpaceGet(0, i + 1); - for (var_r29 = 0; var_r29 < temp_r30->link_cnt; var_r29++) { - var_r26 = BoardSpaceGet(0, temp_r30->link[var_r29]); - if (var_r26->flag & 0x40) { - sp8[var_r28] = i + 1; - BoardSpacePosGet(0, temp_r30->link[var_r29], &sp20[var_r28]); - var_r28++; + for (no = i = 0; i < BoardSpaceCountGet(0); i++) { + space = BoardSpaceGet(0, i + 1); + for (j = 0; j < space->link_cnt; j++) { + linkSpace = BoardSpaceGet(0, space->link[j]); + if (linkSpace->flag & 0x40) { + spaceId[no] = i + 1; + BoardSpacePosGet(0, space->link[j], &spacePos[no]); + no++; } } - if (var_r28 >= 2) { + if (no >= 2) { break; } } - if (lbl_1_bss_0->unk00_field0 == 0) { - BoardSpaceFlagPosGet(0, 0x1000, &sp14); - } else { - BoardSpaceFlagPosGet(0, 0x2000, &sp14); + if (boardWork->hostSide == 0) { + BoardSpaceFlagPosGet(0, 0x1000, &beginPos); + } + else { + BoardSpaceFlagPosGet(0, 0x2000, &beginPos); } for (i = 0; i < 2; i++) { - spC[i] = PSVECSquareDistance(&sp14, &sp20[i]); + spaceDist[i] = VECSquareDistance(&beginPos, &spacePos[i]); } - if (spC[0] < spC[1]) { - arg0->unk06 = sp8[0]; - } else { - arg0->unk06 = sp8[1]; + if (spaceDist[0] < spaceDist[1]) { + work->endSpace = spaceId[0]; + } + else { + work->endSpace = spaceId[1]; } } -static s32 fn_1_94A8(BssCData *arg0) { - Vec sp14; - s16 spC[4]; +static s32 CoasterPlayerLoopCheck(CoasterPlayerWork *arg0) +{ + Vec playerPos; + s16 linkTbl[4]; float sp8; - s32 var_r30; - s32 var_r29; - s32 var_r26; - BoardSpace *var_r31; - BoardSpace *var_r27; - BoardSpace *var_r28; + s32 spaceId; + s32 spaceIdLink; + s32 spaceIdPrev; + BoardSpace *space; + BoardSpace *spaceLink; + BoardSpace *spacePrev; - BoardPlayerPosGet(arg0->unk01, &sp14); - var_r28 = NULL; - var_r26 = -1; - var_r30 = lbl_1_bss_6AC; + BoardPlayerPosGet(arg0->playerNo, &playerPos); + spacePrev = NULL; + spaceIdPrev = -1; + spaceId = coasterStartSpace; sp8 = 0.0f; while (TRUE) { - var_r31 = BoardSpaceGet(1, var_r30); - if (lbl_1_bss_0->unk00_field0 == 0) { - var_r29 = var_r31->link[0]; - } else { - BoardSpaceLinkTargetListGet(1, var_r30, spC); - var_r29 = spC[0]; + space = BoardSpaceGet(1, spaceId); + if (boardWork->hostSide == 0) { + spaceIdLink = space->link[0]; } - var_r27 = BoardSpaceGet(1, var_r29); - if (!var_r27) { - var_r27 = var_r31; + else { + BoardSpaceLinkTargetListGet(1, spaceId, linkTbl); + spaceIdLink = linkTbl[0]; + } + spaceLink = BoardSpaceGet(1, spaceIdLink); + if (!spaceLink) { + spaceLink = space; break; } - if (BoardVecMaxDistXZCheck(&var_r31->pos, &sp14, 200.0f)) { - if (BoardVecMaxDistXZCheck(&var_r31->pos, &sp14, 100.0f)) { + if (BoardVecMaxDistXZCheck(&space->pos, &playerPos, 200.0f)) { + if (BoardVecMaxDistXZCheck(&space->pos, &playerPos, 100.0f)) { break; } - if (var_r28) { - var_r31 = var_r28; + if (spacePrev) { + space = spacePrev; break; - } else { - var_r28 = var_r31; + } + else { + spacePrev = space; } } - var_r26 = var_r30; - var_r30 = var_r29; + spaceIdPrev = spaceId; + spaceId = spaceIdLink; } - if (var_r31->flag & 8) { + if (space->flag & 8) { return 1; - } else { + } + else { return 0; } } -static void fn_1_95F4(BssCData *arg0) { - HsfObject *var_r30; - ModelData *temp_r29; - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - float temp_f30; - float var_f31; - s16 var_r28; +static void CoasterPlayerTimeInit(CoasterPlayerWork *work) +{ + HsfObject *modelObj; + ModelData *modelP; + Vec pos; + Vec prevPos; + Vec playerPos; + Vec diff; + float maxTime; + float time; + s16 modelId; - temp_f30 = BoardModelMotionMaxTimeGet(arg0->unk04); - if (lbl_1_bss_0->unk00_field0 == 0) { - BoardModelMotionTimeSet(arg0->unk04, temp_f30); - BoardModelMotionSpeedSet(arg0->unk04, -0.18f); - } else { - BoardModelMotionTimeSet(arg0->unk04, 0.0f); - BoardModelMotionSpeedSet(arg0->unk04, 0.18f); + maxTime = BoardModelMotionMaxTimeGet(work->pathMdlId); + if (boardWork->hostSide == 0) { + BoardModelMotionTimeSet(work->pathMdlId, maxTime); + BoardModelMotionSpeedSet(work->pathMdlId, -0.18f); } - BoardPlayerPosGet(arg0->unk01, &sp14); - var_r28 = BoardModelIDGet(arg0->unk04); - temp_r29 = &Hu3DData[var_r28]; - Hu3DMotionExec(var_r28, temp_r29->unk_08, temp_r29->unk_64, 0); - var_r30 = Hu3DModelObjPtrGet(var_r28, "looppath-cube1"); - sp20.x = var_r30->data.curr.pos.x; - sp20.y = var_r30->data.curr.pos.y; - sp20.z = var_r30->data.curr.pos.z; - var_f31 = 0.0f; + else { + BoardModelMotionTimeSet(work->pathMdlId, 0.0f); + BoardModelMotionSpeedSet(work->pathMdlId, 0.18f); + } + BoardPlayerPosGet(work->playerNo, &playerPos); + modelId = BoardModelIDGet(work->pathMdlId); + modelP = &Hu3DData[modelId]; + Hu3DMotionExec(modelId, modelP->unk_08, modelP->unk_64, 0); + modelObj = Hu3DModelObjPtrGet(modelId, "looppath-cube1"); + prevPos.x = modelObj->data.curr.pos.x; + prevPos.y = modelObj->data.curr.pos.y; + prevPos.z = modelObj->data.curr.pos.z; + time = 0.0f; while (TRUE) { - Hu3DMotionExec(var_r28, temp_r29->unk_08, temp_r29->unk_64, 0); - var_r30 = Hu3DModelObjPtrGet(var_r28, "looppath-cube1"); - sp2C.x = var_r30->data.curr.pos.x; - sp2C.y = var_r30->data.curr.pos.y; - sp2C.z = var_r30->data.curr.pos.z; - PSVECSubtract(&sp2C, &sp20, &sp8); - var_f31 += PSVECMag(&sp8); - if (BoardVecMinDistCheck(&sp14, &sp2C, 150.0f)) { + Hu3DMotionExec(modelId, modelP->unk_08, modelP->unk_64, 0); + modelObj = Hu3DModelObjPtrGet(modelId, "looppath-cube1"); + pos.x = modelObj->data.curr.pos.x; + pos.y = modelObj->data.curr.pos.y; + pos.z = modelObj->data.curr.pos.z; + VECSubtract(&pos, &prevPos, &diff); + time += VECMag(&diff); + if (BoardVecMinDistCheck(&playerPos, &pos, 150.0f)) { break; } - sp20 = sp2C; - temp_r29->unk_64 += temp_r29->unk_68; + prevPos = pos; + modelP->unk_64 += modelP->unk_68; } - arg0->unk10 = var_f31; + work->time = time; } -static void fn_1_97F4(void) { - Bss20Work *temp_r30; - Bss20Data *var_r31; +static void CoasterEffCreate(void) +{ + CoasterEffWork *work; + CoasterEffData *data; s32 i; - if (lbl_1_bss_20) { + if (coasterEffObj) { return; } - lbl_1_bss_20 = omAddObjEx(boardObjMan, 0x101, 1, 0, -1, fn_1_9920); - temp_r30 = OM_GET_WORK_PTR(lbl_1_bss_20, Bss20Work); - temp_r30->unk00_field0 = 0; - temp_r30->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(Bss20Data), MEMORY_DEFAULT_NUM); - var_r31 = temp_r30->unk04; - for (i = 0; i < 20; var_r31++, i++) { - var_r31->unk00 = -1; - var_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 7), NULL, 0); - BoardModelVisibilitySet(var_r31->unk02, 0); + coasterEffObj = omAddObjEx(boardObjMan, 0x101, 1, 0, -1, CoasterEffUpdate); + work = OM_GET_WORK_PTR(coasterEffObj, CoasterEffWork); + work->killF = 0; + work->data = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(CoasterEffData), MEMORY_DEFAULT_NUM); + data = work->data; + for (i = 0; i < 20; data++, i++) { + data->time = -1; + data->mdlId = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 7), NULL, 0); + BoardModelVisibilitySet(data->mdlId, 0); } } -static void fn_1_98EC(void) { - if (lbl_1_bss_20) { - OM_GET_WORK_PTR(lbl_1_bss_20, Bss20Work)->unk00_field0 = 1; +static void CoasterEffKill(void) +{ + if (coasterEffObj) { + OM_GET_WORK_PTR(coasterEffObj, CoasterEffWork)->killF = TRUE; } } -static void fn_1_9920(omObjData *arg0) { - Bss20Work *temp_r31; +static void CoasterEffUpdate(omObjData *obj) +{ + CoasterEffWork *work; s32 i; - temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_20, Bss20Work); - if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { + work = OM_GET_WORK_PTR(coasterEffObj, CoasterEffWork); + if (work->killF != 0 || BoardIsKill()) { for (i = 0; i < 20; i++) { - BoardModelKill(temp_r31->unk04[i].unk02); + BoardModelKill(work->data[i].mdlId); } - HuMemDirectFree(temp_r31->unk04); - lbl_1_bss_20 = 0; - omDelObjEx(HuPrcCurrentGet(), arg0); + HuMemDirectFree(work->data); + coasterEffObj = 0; + omDelObjEx(HuPrcCurrentGet(), obj); return; } - if (lbl_1_bss_640 < 10.0f) { + if (coasterTime < 10.0f) { return; } - if (temp_r31->unk01 != 0) { - temp_r31->unk01--; - } else { - temp_r31->unk01 = 2; - fn_1_9A24(temp_r31); + if (work->delay != 0) { + work->delay--; } - fn_1_9BBC(temp_r31); + else { + work->delay = 2; + CoasterEffAdd(work); + } + CoasterEffModelUpdate(work); } -static void fn_1_9A24(Bss20Work *arg0) { - Bss20Data *temp_r31; - Mtx sp8; +static void CoasterEffAdd(CoasterEffWork *work) +{ + CoasterEffData *data; + Mtx matrix; s32 i; s32 j; - if (lbl_1_bss_6B1 != 0) { - PSMTXTrans(sp8, 0.0f, 50.0f, -100.0f); - } else { - PSMTXTrans(sp8, 0.0f, 70.0f, -100.0f); + if (coasterLandF != 0) { + MTXTrans(matrix, 0.0f, 50.0f, -100.0f); } - PSMTXConcat(lbl_1_bss_678, sp8, sp8); + else { + MTXTrans(matrix, 0.0f, 70.0f, -100.0f); + } + MTXConcat(coasterMtx, matrix, matrix); for (i = 0; i < 4; i++) { for (j = 0; j < 20; j++) { - temp_r31 = &arg0->unk04[j]; - if (temp_r31->unk00 == -1) { - temp_r31->unk00 = 10; - Hu3DMtxTransGet(sp8, &temp_r31->unk08); - PSVECAdd(&lbl_1_bss_654, &temp_r31->unk08, &temp_r31->unk08); - temp_r31->unk14.x = 0.0f; - temp_r31->unk14.y = 0.0f; - temp_r31->unk14.z = 0.001f; - temp_r31->unk04 = 1.0f; - BoardModelVisibilitySet(temp_r31->unk02, 1); - BoardModelLayerSet(temp_r31->unk02, 2); - BoardModelPosSetV(temp_r31->unk02, &temp_r31->unk08); + data = &work->data[j]; + if (data->time == -1) { + data->time = 10; + Hu3DMtxTransGet(matrix, &data->pos); + VECAdd(&coasterPos, &data->pos, &data->pos); + data->vel.x = 0.0f; + data->vel.y = 0.0f; + data->vel.z = 0.001f; + data->scale = 1.0f; + BoardModelVisibilitySet(data->mdlId, 1); + BoardModelLayerSet(data->mdlId, 2); + BoardModelPosSetV(data->mdlId, &data->pos); break; } } } } -static void fn_1_9BBC(Bss20Work *arg0) { - Bss20Data *temp_r31; +static void CoasterEffModelUpdate(CoasterEffWork *work) +{ + CoasterEffData *data; s32 i; for (i = 0; i < 20; i++) { - temp_r31 = &arg0->unk04[i]; - if (temp_r31->unk00 == -1) { + data = &work->data[i]; + if (data->time == -1) { continue; } - temp_r31->unk00--; - if (temp_r31->unk00 == 0) { - temp_r31->unk00 = -1; - BoardModelVisibilitySet(temp_r31->unk02, 0); - } else { - if (temp_r31->unk00 <= 3) { - temp_r31->unk04 = sind(30.0f * temp_r31->unk00); + data->time--; + if (data->time == 0) { + data->time = -1; + BoardModelVisibilitySet(data->mdlId, 0); + } + else { + if (data->time <= 3) { + data->scale = sind(30.0f * data->time); } - PSVECAdd(&temp_r31->unk08, &temp_r31->unk14, &temp_r31->unk08); - BoardModelMtxSet(temp_r31->unk02, &lbl_1_bss_678); - BoardModelPosSetV(temp_r31->unk02, &temp_r31->unk08); - BoardModelScaleSet(temp_r31->unk02, temp_r31->unk04, temp_r31->unk04, temp_r31->unk04); + VECAdd(&data->pos, &data->vel, &data->pos); + BoardModelMtxSet(data->mdlId, &coasterMtx); + BoardModelPosSetV(data->mdlId, &data->pos); + BoardModelScaleSet(data->mdlId, data->scale, data->scale, data->scale); } } } + +static void CoasterHostComKeySet(s32 playerNo) +{ + s32 starPos; + s32 yesF; + + starPos = GWSystem.star_pos; + yesF = 0; + if (boardWork->hostSide != 0) { + if (starPos == 0 || starPos == 1 || starPos == 7) { + yesF = 0; + } + else { + yesF = 1; + } + } + else if (starPos == 0 || starPos == 1 || starPos == 7) { + yesF = 1; + } + else { + yesF = 0; + } + if (BoardPlayerCoinsGet(playerNo) < 5) { + yesF = 0; + } + if (yesF != 0) { + BoardComKeySetLeft(); + } + else { + BoardComKeySetRight(); + } +} \ No newline at end of file diff --git a/src/REL/w01Dll/mg_coin.c b/src/REL/w01Dll/mg_coin.c index 9520710c..f07a4b3b 100755 --- a/src/REL/w01Dll/mg_coin.c +++ b/src/REL/w01Dll/mg_coin.c @@ -2,10 +2,16 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/data.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" -#include "game/frand.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/window.h" #include "game/hsfman.h" #include "game/memory.h" #include "game/minigame_seq.h" @@ -14,1061 +20,992 @@ #include "game/pad.h" #include "game/sprite.h" #include "game/window.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/window.h" #include "dolphin.h" #include "ext_math.h" typedef struct { - /* 0x00 */ Vec unk00; - /* 0x0C */ float unk0C; -} Data690InnerStruct; // Size 0x10 + /* 0x00 */ Vec pos; + /* 0x0C */ float len; +} SpaceAmidaPathPoint; // Size 0x10 -typedef Data690InnerStruct Data690Block[15]; +typedef SpaceAmidaPathPoint SpaceAmidaMap[15]; typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; - /* 0x04 */ Vec unk04; - /* 0x10 */ Vec unk10; - /* 0x1C */ u16 unk1C; - /* 0x1E */ char unk1E[2]; - /* 0x20 */ float unk20; - /* 0x24 */ u16 unk24; - /* 0x26 */ s16 unk26; - /* 0x28 */ s16 unk28; - /* 0x2A */ char unk2A[2]; -} Bss720Data; // Size 0x2C + /* 0x04 */ Vec rocketPos; + /* 0x10 */ Vec jumpDir; + /* 0x1C */ u16 waitTime; + /* 0x20 */ float jumpTime; + /* 0x24 */ u16 comDelay; + /* 0x26 */ s16 comChoice; + /* 0x28 */ s16 comInputTimer; +} SpaceAmidaGameWork; // Size 0x2C typedef struct { /* 0x00 */ char unk00[4]; - /* 0x04 */ Data690Block *unk04; - /* 0x08 */ u16 unk08; - /* 0x0A */ char unk0A[2]; - /* 0x0C */ float unk0C; - /* 0x10 */ float unk10; - /* 0x14 */ float unk14; - /* 0x18 */ float unk18; - /* 0x1C */ float unk1C; - /* 0x20 */ Vec unk20; - /* 0x2C */ Vec unk2C; - /* 0x38 */ float unk38; + /* 0x04 */ SpaceAmidaMap *map; + /* 0x08 */ u16 mapCursor; + /* 0x0C */ float len; + /* 0x10 */ float speed; + /* 0x14 */ float maxSpeed; + /* 0x18 */ float rocketXOfs; + /* 0x1C */ float kemuriSize; + /* 0x20 */ Vec kemuriScale; + /* 0x2C */ Vec kemuriScaleVel; + /* 0x38 */ float kemuriTPLvl; /* 0x3C */ float unk3C; - /* 0x40 */ s16 unk40; - /* 0x42 */ char unk42[2]; -} Bss714Data; // Size 0x44 + /* 0x40 */ s16 targetNo; +} RocketWork; // Size 0x44 -static void fn_1_A4B8(omObjData *arg0); -static void fn_1_A554(void); -static void fn_1_A5FC(void); -static void fn_1_A6E0(omObjData *arg0); -static float fn_1_B018(Data690Block *arg0); -static void fn_1_B088(omObjData *arg0); -static void fn_1_B1CC(omObjData *arg0, u16 *arg1, u16 *arg2); -static void fn_1_B3B8(omObjData *arg0); -static void fn_1_B478(omObjData *arg0); -static void fn_1_BAF8(omObjData *arg0); -static void fn_1_BCDC(omObjData *arg0); -static void fn_1_BF00(omObjData *arg0); -static void fn_1_BF68(omObjData *arg0); -static void fn_1_C000(void); -static void fn_1_C0FC(omObjData *arg0); -static void fn_1_C25C(void); -static void fn_1_C844(void); -static void fn_1_C894(omObjData *arg0); -static void fn_1_C94C(Vec *arg0, Vec *arg1, Vec *arg2); -static float fn_1_C998(Vec *arg0); -static u32 fn_1_CB44(Vec *arg0, float arg1); -static void fn_1_CEC4(void); -static void fn_1_D034(void); -static void fn_1_D07C(omObjData *arg0); -static void fn_1_D114(ModelData *model, ParticleData *particle, Mtx matrix); +static void SpaceAmidaMainUpdate(omObjData *obj); +static void SpaceAmidaStop(void); +static void SpaceAmidaKill(void); +static void SpaceAmidaRocketObjUpdate(omObjData *obj); +static float SpaceAmidaMapLenGet(SpaceAmidaMap *obj); +static void SpaceAmidaComChoiceSet(omObjData *obj); +static void SpaceAmidaComInputGet(omObjData *obj, u16 *stkBtn, u16 *btn); +static void SpaceAmidaGameOpen(omObjData *obj); +static void SpaceAmidaGameUpdate(omObjData *obj); +static void SpaceAmidaRocketJump(omObjData *obj); +static void SpaceAmidaRocketKemuriExec(omObjData *obj); +static void SpaceAmidaRocketWait(omObjData *obj); +static void SpaceAmidaRocketUp(omObjData *obj); +static void SpaceAmidaCoinWin(void); +static void SpaceAmidaJumpDown(omObjData *obj); +static void SpaceAmidaCoinRainMain(void); +static void SpaceAmidaReturnWinMain(void); +static void SpaceAmidaGameStop(omObjData *obj); +static void SpaceAmidaDirGet(Vec *a, Vec *b, Vec *result); +static float SpaceAmidaAngleGet(Vec *dir); +static u32 SpaceAmidaPlayerRotAdd(Vec *rocketPos, float delta); +static void SpaceAmidaEffCreate(void); +static void SpaceAmidaEffKill(void); +static void SpaceAmidaEffUpdate(omObjData *arg0); +static void SpaceAmidaEffParticleHook(ModelData *model, ParticleData *particle, Mtx matrix); -static s32 lbl_1_bss_79C; -static s32 lbl_1_bss_798; -static s16 lbl_1_bss_796; -static s16 lbl_1_bss_790[3]; -static s16 lbl_1_bss_78A[3]; -static s16 lbl_1_bss_788; -static s16 lbl_1_bss_760[20]; -static Process *lbl_1_bss_75C; -static omObjData *lbl_1_bss_758; -static float lbl_1_bss_754; -static s16 lbl_1_bss_750; -static s32 lbl_1_bss_74C; -static s32 lbl_1_bss_748; -static s16 lbl_1_bss_744; -static Vec lbl_1_bss_738; -static s32 lbl_1_bss_734; -static s32 lbl_1_bss_730; -static s32 lbl_1_bss_72C; -static u16 lbl_1_bss_72A; -static u16 lbl_1_bss_728; -static s32 lbl_1_bss_724; -static omObjData *lbl_1_bss_720; -static omObjData *lbl_1_bss_714[3]; -static omObjData *lbl_1_bss_710; -static AnimData *lbl_1_bss_70C; -static s16 lbl_1_bss_708; +static s32 spaceAmidaPadNo; +static s32 spaceAmidaPlayerNo; +static s16 spaceAmidaMdlId; +static s16 mapMdlId[3]; +static s16 rocketMdlId[3]; +static s16 spaceAmidaEffMdlId; +static s16 coinMdlId[20]; +static Process *coinWinProc; +static omObjData *spaceAmidaMainObj; +static float spaceAmidaTime; +static s16 kemuriMdlId; +static s32 timerSec; +static s32 timerFrame; +static s16 timerSeqId; +static Vec spaceAmidaPos; +static s32 spaceAmidaMapNo; +static s32 spaceAmidaPath; +static s32 rocketWarpF; +static u16 spaceAmidaStopF; +static u16 spaceAmidaCoinNum; +static s32 spaceAmidaSeNo; +static omObjData *spaceAmidaGameObj; +static omObjData *rocketObj[3]; +static omObjData *spaceAmidaEffObj; +static AnimData *spaceAmidaEffAnim; +static s16 spaceAmidaSeqStopF; -static Vec lbl_1_data_658[3] = { - { -50.0f, 238.0f, 0.0f }, - { 0.0f, 275.5f, 0.0f }, - { 50.0f, 238.0f, 0.0f } -}; +static Vec effPosTbl[3] = { { -50.0f, 238.0f, 0.0f }, { 0.0f, 275.5f, 0.0f }, { 50.0f, 238.0f, 0.0f } }; -static u16 lbl_1_data_67C[3][3] = { - { 10, 5, 20 }, - { 10, 5, 20 }, - { 5, 20, 10 } -}; +static u16 spaceAmidaCoinNumTbl[3][3] = { { 10, 5, 20 }, { 10, 5, 20 }, { 5, 20, 10 } }; -static Data690Block lbl_1_data_690[3] = { - { - { { -50.0f, -12.0f, 0.0f }, 75.0f }, - { { -50.0f, 63.0f, 0.0f }, 50.0f }, - { { 0.0f, 63.0f, 0.0f }, 25.0f }, - { { 0.0f, 88.0f, 0.0f }, 50.0f }, - { { 50.0f, 88.0f, 0.0f }, 87.5f }, - { { 50.0f, 175.5f, 0.0f }, 0.0f } - }, - { - { { 0.0f, -12.0f, 0.0f }, 75.0f }, - { { 0.0f, 63.0f, 0.0f }, 50.0f }, - { { -50.0f, 63.0f, 0.0f }, 50.0f }, - { { -50.0f, 113.0f, 0.0f }, 50.0f }, - { { 0.0f, 113.0f, 0.0f }, 50.0f }, - { { 0.0f, 163.0f, 0.0f }, 50.0f }, - { { -50.0f, 163.0f, 0.0f }, 12.5f }, - { { -50.0f, 175.5f, 0.0f }, 0.0f } - }, - { - { { 50.0f, -12.0f, 0.0f }, 100.0f }, - { { 50.0f, 88.0f, 0.0f }, 50.0f }, - { { 0.0f, 88.0f, 0.0f }, 25.0f }, - { { 0.0f, 113.0f, 0.0f }, 50.0f }, - { { -50.0f, 113.0f, 0.0f }, 50.0f }, - { { -50.0f, 163.0f, 0.0f }, 50.0f }, - { { 0.0f, 163.0f, 0.0f }, 50.0f }, - { { 0.0f, 213.0f, 0.0f }, 0.0f } - } -}; +static SpaceAmidaMap spaceAmidaMap1[3] + = { { { { -50.0f, -12.0f, 0.0f }, 75.0f }, { { -50.0f, 63.0f, 0.0f }, 50.0f }, { { 0.0f, 63.0f, 0.0f }, 25.0f }, { { 0.0f, 88.0f, 0.0f }, 50.0f }, + { { 50.0f, 88.0f, 0.0f }, 87.5f }, { { 50.0f, 175.5f, 0.0f }, 0.0f } }, + { { { 0.0f, -12.0f, 0.0f }, 75.0f }, { { 0.0f, 63.0f, 0.0f }, 50.0f }, { { -50.0f, 63.0f, 0.0f }, 50.0f }, + { { -50.0f, 113.0f, 0.0f }, 50.0f }, { { 0.0f, 113.0f, 0.0f }, 50.0f }, { { 0.0f, 163.0f, 0.0f }, 50.0f }, + { { -50.0f, 163.0f, 0.0f }, 12.5f }, { { -50.0f, 175.5f, 0.0f }, 0.0f } }, + { { { 50.0f, -12.0f, 0.0f }, 100.0f }, { { 50.0f, 88.0f, 0.0f }, 50.0f }, { { 0.0f, 88.0f, 0.0f }, 25.0f }, + { { 0.0f, 113.0f, 0.0f }, 50.0f }, { { -50.0f, 113.0f, 0.0f }, 50.0f }, { { -50.0f, 163.0f, 0.0f }, 50.0f }, + { { 0.0f, 163.0f, 0.0f }, 50.0f }, { { 0.0f, 213.0f, 0.0f }, 0.0f } } }; -static Data690Block lbl_1_data_960[3] = { - { - { { -50.0f, -12.0f, 0.0f }, 125.0f }, - { { -50.0f, 113.0f, 0.0f }, 50.0f }, - { { 0.0f, 113.0f, 0.0f }, 25.0f }, - { { 0.0f, 138.0f, 0.0f }, 50.0f }, - { { 50.0f, 138.0f, 0.0f }, 37.5f }, - { { 50.0f, 175.5f, 0.0f }, 0.0f } - }, - { - { { 0.0f, -12.0f, 0.0f }, 75.0f }, - { { 0.0f, 63.0f, 0.0f }, 50.0f }, - { { 50.0f, 63.0f, 0.0f }, 75.0f }, - { { 50.0f, 138.0f, 0.0f }, 50.0f }, - { { 0.0f, 138.0f, 0.0f }, 25.0f }, - { { 0.0f, 163.0f, 0.0f }, 50.0f }, - { { -50.0f, 163.0f, 0.0f }, 12.5f }, - { { -50.0f, 175.5f, 0.0f }, 0.0f } - }, - { - { { 50.0f, -12.0f, 0.0f }, 75.0f }, - { { 50.0f, 63.0f, 0.0f }, 50.0f }, - { { 0.0f, 63.0f, 0.0f }, 50.0f }, - { { 0.0f, 113.0f, 0.0f }, 50.0f }, - { { -50.0f, 113.0f, 0.0f }, 50.0f }, - { { -50.0f, 163.0f, 0.0f }, 50.0f }, - { { 0.0f, 163.0f, 0.0f }, 50.0f }, - { { 0.0f, 213.0f, 0.0f }, 0.0f } - } -}; +static SpaceAmidaMap spaceAmidaMap2[3] + = { { { { -50.0f, -12.0f, 0.0f }, 125.0f }, { { -50.0f, 113.0f, 0.0f }, 50.0f }, { { 0.0f, 113.0f, 0.0f }, 25.0f }, + { { 0.0f, 138.0f, 0.0f }, 50.0f }, { { 50.0f, 138.0f, 0.0f }, 37.5f }, { { 50.0f, 175.5f, 0.0f }, 0.0f } }, + { { { 0.0f, -12.0f, 0.0f }, 75.0f }, { { 0.0f, 63.0f, 0.0f }, 50.0f }, { { 50.0f, 63.0f, 0.0f }, 75.0f }, + { { 50.0f, 138.0f, 0.0f }, 50.0f }, { { 0.0f, 138.0f, 0.0f }, 25.0f }, { { 0.0f, 163.0f, 0.0f }, 50.0f }, + { { -50.0f, 163.0f, 0.0f }, 12.5f }, { { -50.0f, 175.5f, 0.0f }, 0.0f } }, + { { { 50.0f, -12.0f, 0.0f }, 75.0f }, { { 50.0f, 63.0f, 0.0f }, 50.0f }, { { 0.0f, 63.0f, 0.0f }, 50.0f }, + { { 0.0f, 113.0f, 0.0f }, 50.0f }, { { -50.0f, 113.0f, 0.0f }, 50.0f }, { { -50.0f, 163.0f, 0.0f }, 50.0f }, + { { 0.0f, 163.0f, 0.0f }, 50.0f }, { { 0.0f, 213.0f, 0.0f }, 0.0f } } }; -static Data690Block lbl_1_data_C30[3] = { - { - { { -50.0f, -12.0f, 0.0f }, 100.0f }, - { { -50.0f, 88.0f, 0.0f }, 50.0f }, - { { 0.0f, 88.0f, 0.0f }, 50.0f }, - { { 0.0f, 138.0f, 0.0f }, 50.0f }, - { { -50.0f, 138.0f, 0.0f }, 37.5f }, - { { -50.0f, 175.5f, 0.0f }, 0.0f } - }, - { - { { 0.0f, -12.0f, 0.0f }, 75.0f }, - { { 0.0f, 63.0f, 0.0f }, 50.0f }, - { { 50.0f, 63.0f, 0.0f }, 100.0f }, - { { 50.0f, 163.0f, 0.0f }, 50.0f }, - { { 0.0f, 163.0f, 0.0f }, 50.0f }, - { { 0.0f, 213.0f, 0.0f }, 0.0f } - }, - { - { { 50.0f, -12.0f, 0.0f }, 75.0f }, - { { 50.0f, 63.0f, 0.0f }, 50.0f }, - { { 0.0f, 63.0f, 0.0f }, 25.0f }, - { { 0.0f, 88.0f, 0.0f }, 50.0f }, - { { -50.0f, 88.0f, 0.0f }, 50.0f }, - { { -50.0f, 138.0f, 0.0f }, 50.0f }, - { { 0.0f, 138.0f, 0.0f }, 25.0f }, - { { 0.0f, 163.0f, 0.0f }, 50.0f }, - { { 50.0f, 163.0f, 0.0f }, 12.5f }, - { { 50.0f, 175.5f, 0.0f }, 0.0f } - } -}; +static SpaceAmidaMap spaceAmidaMap3[3] + = { { { { -50.0f, -12.0f, 0.0f }, 100.0f }, { { -50.0f, 88.0f, 0.0f }, 50.0f }, { { 0.0f, 88.0f, 0.0f }, 50.0f }, + { { 0.0f, 138.0f, 0.0f }, 50.0f }, { { -50.0f, 138.0f, 0.0f }, 37.5f }, { { -50.0f, 175.5f, 0.0f }, 0.0f } }, + { { { 0.0f, -12.0f, 0.0f }, 75.0f }, { { 0.0f, 63.0f, 0.0f }, 50.0f }, { { 50.0f, 63.0f, 0.0f }, 100.0f }, + { { 50.0f, 163.0f, 0.0f }, 50.0f }, { { 0.0f, 163.0f, 0.0f }, 50.0f }, { { 0.0f, 213.0f, 0.0f }, 0.0f } }, + { { { 50.0f, -12.0f, 0.0f }, 75.0f }, { { 50.0f, 63.0f, 0.0f }, 50.0f }, { { 0.0f, 63.0f, 0.0f }, 25.0f }, { { 0.0f, 88.0f, 0.0f }, 50.0f }, + { { -50.0f, 88.0f, 0.0f }, 50.0f }, { { -50.0f, 138.0f, 0.0f }, 50.0f }, { { 0.0f, 138.0f, 0.0f }, 25.0f }, + { { 0.0f, 163.0f, 0.0f }, 50.0f }, { { 50.0f, 163.0f, 0.0f }, 12.5f }, { { 50.0f, 175.5f, 0.0f }, 0.0f } } }; -void fn_1_9D00(s32 arg0) { - s32 temp_r31; - s32 var_r30; - - temp_r31 = GWSystem.star_pos; - var_r30 = 0; - if (lbl_1_bss_0->unk00_field0 != 0) { - if (temp_r31 == 0 || temp_r31 == 1 || temp_r31 == 7) { - var_r30 = 0; - } else { - var_r30 = 1; - } - } else if (temp_r31 == 0 || temp_r31 == 1 || temp_r31 == 7) { - var_r30 = 1; - } else { - var_r30 = 0; - } - if (BoardPlayerCoinsGet(arg0) < 5) { - var_r30 = 0; - } - if (var_r30 != 0) { - BoardComKeySetLeft(); - } else { - BoardComKeySetRight(); - } -} - -void fn_1_9DD8(void) { - Vec sp2C[3]; - Vec sp20; - Vec sp14; - Vec sp8; - Bss720Data *temp_r30; - Bss714Data *temp_r29; +void SpaceAmidaExec(void) +{ + Vec rocketMdlOfs[3]; + Vec pos; + Vec rocketPos; + Vec scale; + SpaceAmidaGameWork *gameObjWork; + RocketWork *rocketWork; s32 i; - lbl_1_bss_79C = GWPlayer[GWSystem.player_curr].port; - lbl_1_bss_796 = lbl_1_bss_6C4[6]; - lbl_1_bss_790[0] = lbl_1_bss_6C4[7]; - lbl_1_bss_790[1] = lbl_1_bss_6C4[8]; - lbl_1_bss_790[2] = lbl_1_bss_6C4[9]; - lbl_1_bss_78A[0] = lbl_1_bss_6C4[10]; - lbl_1_bss_78A[1] = lbl_1_bss_6C4[11]; - lbl_1_bss_78A[2] = lbl_1_bss_6C4[12]; - BoardModelVisibilitySet(lbl_1_bss_790[0], 0); - BoardModelVisibilitySet(lbl_1_bss_790[1], 0); - BoardModelVisibilitySet(lbl_1_bss_790[2], 0); - lbl_1_bss_734 = rand8() % 3; - BoardModelVisibilitySet(lbl_1_bss_790[lbl_1_bss_734], 1); - BoardModelMotionStart(lbl_1_bss_790[lbl_1_bss_734], 0, 0x40000001); - BoardModelPosGet(lbl_1_bss_796, &sp20); - sp8.x = sp8.y = sp8.z = 1.0f; + spaceAmidaPadNo = GWPlayer[GWSystem.player_curr].port; + spaceAmidaMdlId = mapObjMdlId[MAPOBJ_SPACEAMIDA]; + mapMdlId[0] = mapObjMdlId[MAPOBJ_SPACEAMIDA_MAP1]; + mapMdlId[1] = mapObjMdlId[MAPOBJ_SPACEAMIDA_MAP2]; + mapMdlId[2] = mapObjMdlId[MAPOBJ_SPACEAMIDA_MAP3]; + rocketMdlId[0] = mapObjMdlId[MAPOBJ_SPACEAMIDA_ROCKET1]; + rocketMdlId[1] = mapObjMdlId[MAPOBJ_SPACEAMIDA_ROCKET2]; + rocketMdlId[2] = mapObjMdlId[MAPOBJ_SPACEAMIDA_ROCKET3]; + BoardModelVisibilitySet(mapMdlId[0], 0); + BoardModelVisibilitySet(mapMdlId[1], 0); + BoardModelVisibilitySet(mapMdlId[2], 0); + spaceAmidaMapNo = rand8() % 3; + BoardModelVisibilitySet(mapMdlId[spaceAmidaMapNo], 1); + BoardModelMotionStart(mapMdlId[spaceAmidaMapNo], 0, HU3D_MOTATTR_LOOP); + BoardModelPosGet(spaceAmidaMdlId, &pos); + scale.x = scale.y = scale.z = 1.0f; for (i = 0; i < 3; i++) { - sp2C[i] = lbl_1_data_690[i][0].unk00; - sp2C[i].y -= -12.0f; - BoardModelPosSet(lbl_1_bss_78A[i], sp20.x + sp2C[i].x, sp20.y + sp2C[i].y, sp20.z + 30.0f); - BoardModelVisibilitySet(lbl_1_bss_78A[i], 1); - BoardModelScaleSetV(lbl_1_bss_78A[i], &sp8); + rocketMdlOfs[i] = spaceAmidaMap1[i][0].pos; + rocketMdlOfs[i].y -= -12.0f; + BoardModelPosSet(rocketMdlId[i], pos.x + rocketMdlOfs[i].x, pos.y + rocketMdlOfs[i].y, pos.z + 30.0f); + BoardModelVisibilitySet(rocketMdlId[i], 1); + BoardModelScaleSetV(rocketMdlId[i], &scale); } - lbl_1_bss_798 = GWSystem.player_curr; - BoardModelPosGet(lbl_1_bss_796, &lbl_1_bss_738); - lbl_1_bss_730 = 1; - BoardModelPosGet(lbl_1_bss_78A[lbl_1_bss_730], &sp14); - BoardPlayerPosGet(lbl_1_bss_798, &sp20); - lbl_1_bss_758 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_A4B8); - lbl_1_bss_720 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B3B8); - lbl_1_bss_720->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss720Data), MEMORY_DEFAULT_NUM); - temp_r30 = lbl_1_bss_720->data; - temp_r30->unk02 = 0; - temp_r30->unk04 = sp14; - temp_r30->unk28 = 0; - fn_1_CB44(&sp14, 0.0f); - fn_1_B088(lbl_1_bss_720); - lbl_1_bss_750 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 19)); - Hu3DModelAttrSet(lbl_1_bss_750, 1); + spaceAmidaPlayerNo = GWSystem.player_curr; + BoardModelPosGet(spaceAmidaMdlId, &spaceAmidaPos); + spaceAmidaPath = 1; + BoardModelPosGet(rocketMdlId[spaceAmidaPath], &rocketPos); + BoardPlayerPosGet(spaceAmidaPlayerNo, &pos); + spaceAmidaMainObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, SpaceAmidaMainUpdate); + spaceAmidaGameObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, SpaceAmidaGameOpen); + spaceAmidaGameObj->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(SpaceAmidaGameWork), MEMORY_DEFAULT_NUM); + gameObjWork = spaceAmidaGameObj->data; + gameObjWork->unk02 = 0; + gameObjWork->rocketPos = rocketPos; + gameObjWork->comInputTimer = 0; + SpaceAmidaPlayerRotAdd(&rocketPos, 0.0f); + SpaceAmidaComChoiceSet(spaceAmidaGameObj); + kemuriMdlId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 19)); + Hu3DModelAttrSet(kemuriMdlId, HU3D_ATTR_DISPOFF); for (i = 0; i < 3; i++) { - lbl_1_bss_714[i] = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_A6E0); - lbl_1_bss_714[i]->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss714Data), MEMORY_DEFAULT_NUM); - lbl_1_bss_714[i]->work[0] = lbl_1_bss_78A[i]; - lbl_1_bss_714[i]->work[1] = 0; - lbl_1_bss_714[i]->work[3] = 0; - temp_r29 = lbl_1_bss_714[i]->data; - if (i == lbl_1_bss_730) { - lbl_1_bss_714[i]->work[2] = 1; - } else { - lbl_1_bss_714[i]->work[2] = 0; + rocketObj[i] = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, SpaceAmidaRocketObjUpdate); + rocketObj[i]->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(RocketWork), MEMORY_DEFAULT_NUM); + rocketObj[i]->work[0] = rocketMdlId[i]; + rocketObj[i]->work[1] = 0; + rocketObj[i]->work[3] = 0; + rocketWork = rocketObj[i]->data; + if (i == spaceAmidaPath) { + rocketObj[i]->work[2] = 1; } - temp_r29->unk18 = 1.0f; - temp_r29->unk1C = 0.0f; + else { + rocketObj[i]->work[2] = 0; + } + rocketWork->rocketXOfs = 1.0f; + rocketWork->kemuriSize = 0.0f; } - lbl_1_bss_72C = 0; - lbl_1_bss_74C = 5; - lbl_1_bss_748 = 0x3C; - lbl_1_bss_72A = 0; - fn_1_CEC4(); - lbl_1_bss_788 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 17), NULL, 0); - BoardModelMotionUpdateSet(lbl_1_bss_788, 1); - BoardModelVisibilitySet(lbl_1_bss_788, 0); + rocketWarpF = 0; + timerSec = 5; + timerFrame = REFRESH_RATE; + spaceAmidaStopF = 0; + SpaceAmidaEffCreate(); + spaceAmidaEffMdlId = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W01, 17), NULL, 0); + BoardModelMotionUpdateSet(spaceAmidaEffMdlId, 1); + BoardModelVisibilitySet(spaceAmidaEffMdlId, 0); for (i = 0; i < 20; i++) { - lbl_1_bss_760[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1); - BoardModelVisibilitySet(lbl_1_bss_760[i], 0); + coinMdlId[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1); + BoardModelVisibilitySet(coinMdlId[i], 0); } } -static void fn_1_A4B8(omObjData *arg0) { - if (lbl_1_bss_72A == 0) { +static void SpaceAmidaMainUpdate(omObjData *obj) +{ + if (spaceAmidaStopF == 0) { return; } if (BoardMGDoneFlagGet() == 1) { - if (lbl_1_bss_754 <= 0.0f) { - fn_1_A5FC(); - omDelObjEx(HuPrcCurrentGet(), arg0); + if (spaceAmidaTime <= 0.0f) { + SpaceAmidaKill(); + omDelObjEx(HuPrcCurrentGet(), obj); } } - lbl_1_bss_754 -= 1.0f; + spaceAmidaTime -= 1.0f; } -static void fn_1_A554(void) { - float temp_f1; +static void SpaceAmidaStop(void) +{ + float time; - lbl_1_bss_72A = 1; + spaceAmidaStopF = 1; BoardMGExit(); - temp_f1 = BoardModelMotionTimeGet(lbl_1_bss_796); - lbl_1_bss_754 = temp_f1; - BoardModelMotionStart(lbl_1_bss_796, 0, 0); - BoardModelMotionTimeSet(lbl_1_bss_796, temp_f1); - BoardModelMotionSpeedSet(lbl_1_bss_796, -1.0f); + time = BoardModelMotionTimeGet(spaceAmidaMdlId); + spaceAmidaTime = time; + BoardModelMotionStart(spaceAmidaMdlId, 0, 0); + BoardModelMotionTimeSet(spaceAmidaMdlId, time); + BoardModelMotionSpeedSet(spaceAmidaMdlId, -1.0f); } -static void fn_1_A5FC(void) { +static void SpaceAmidaKill(void) +{ s32 i; for (i = 0; i < 3; i++) { - BoardModelVisibilitySet(lbl_1_bss_790[i], 0); - BoardModelVisibilitySet(lbl_1_bss_78A[i], 0); - omDelObjEx(HuPrcCurrentGet(), lbl_1_bss_714[i]); + BoardModelVisibilitySet(mapMdlId[i], 0); + BoardModelVisibilitySet(rocketMdlId[i], 0); + omDelObjEx(HuPrcCurrentGet(), rocketObj[i]); } for (i = 0; i < 20; i++) { - BoardModelKill(lbl_1_bss_760[i]); + BoardModelKill(coinMdlId[i]); } - fn_1_D034(); - BoardModelKill(lbl_1_bss_788); + SpaceAmidaEffKill(); + BoardModelKill(spaceAmidaEffMdlId); BoardMGDoneFlagSet(0); - Hu3DModelKill(lbl_1_bss_750); + Hu3DModelKill(kemuriMdlId); } -static void fn_1_A6E0(omObjData *arg0) { - Bss714Data *temp_r31; - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - float var_f31; +static void SpaceAmidaRocketObjUpdate(omObjData *obj) +{ + RocketWork *work; + Vec scale; + Vec pos; + Vec rocketPos; + Vec dir; + float len; - temp_r31 = arg0->data; - BoardModelScaleGet(arg0->work[0], &sp2C); - switch (arg0->work[2]) { + work = obj->data; + BoardModelScaleGet(obj->work[0], &scale); + switch (obj->work[2]) { case 1: - if ((sp2C.x += 0.08f) >= 1.5f) { - sp2C.x = 1.5f; - sp2C.y = 1.5f; - if (arg0->work[3] == 1) { - arg0->work[2] = 0; - } else { - arg0->work[2] = 2; + if ((scale.x += 0.08f) >= 1.5f) { + scale.x = 1.5f; + scale.y = 1.5f; + if (obj->work[3] == 1) { + obj->work[2] = 0; + } + else { + obj->work[2] = 2; } - } else { - sp2C.y += 0.08f; } - BoardModelScaleSetV(arg0->work[0], &sp2C); + else { + scale.y += 0.08f; + } + BoardModelScaleSetV(obj->work[0], &scale); break; case 2: - if ((sp2C.x -= 0.08f) <= 1.0f) { - sp2C.x = 1.0f; - sp2C.y = 1.0f; - if (arg0->work[1] == 1) { - arg0->work[2] = 0; - arg0->work[1] = 0; - } else { - arg0->work[2] = 1; + if ((scale.x -= 0.08f) <= 1.0f) { + scale.x = 1.0f; + scale.y = 1.0f; + if (obj->work[1] == 1) { + obj->work[2] = 0; + obj->work[1] = 0; + } + else { + obj->work[2] = 1; } - } else { - sp2C.y -= 0.08f; } - BoardModelScaleSetV(arg0->work[0], &sp2C); + else { + scale.y -= 0.08f; + } + BoardModelScaleSetV(obj->work[0], &scale); break; case 3: - switch (lbl_1_bss_734) { + switch (spaceAmidaMapNo) { case 0: - temp_r31->unk04 = &lbl_1_data_690[lbl_1_bss_730]; + work->map = &spaceAmidaMap1[spaceAmidaPath]; break; case 1: - temp_r31->unk04 = &lbl_1_data_960[lbl_1_bss_730]; + work->map = &spaceAmidaMap2[spaceAmidaPath]; break; case 2: - temp_r31->unk04 = &lbl_1_data_C30[lbl_1_bss_730]; + work->map = &spaceAmidaMap3[spaceAmidaPath]; break; } - BoardModelPosGet(arg0->work[0], &sp14); - sp14.x = lbl_1_bss_738.x + ((*temp_r31->unk04)[0].unk00.x + temp_r31->unk18); - temp_r31->unk18 = -temp_r31->unk18; - BoardModelPosSetV(arg0->work[0], &sp14); - sp14.y += 5.0f; - BoardPlayerPosSetV(lbl_1_bss_798, &sp14); - temp_r31->unk1C += 0.022222223f; - temp_r31->unk38 -= 0.011111111f; - if (temp_r31->unk38 < 0.0f) { - temp_r31->unk38 = 0.0f; + BoardModelPosGet(obj->work[0], &rocketPos); + rocketPos.x = spaceAmidaPos.x + ((*work->map)[0].pos.x + work->rocketXOfs); + work->rocketXOfs = -work->rocketXOfs; + BoardModelPosSetV(obj->work[0], &rocketPos); + rocketPos.y += 5.0f; + BoardPlayerPosSetV(spaceAmidaPlayerNo, &rocketPos); + work->kemuriSize += 0.022222223f; + work->kemuriTPLvl -= 0.011111111f; + if (work->kemuriTPLvl < 0.0f) { + work->kemuriTPLvl = 0.0f; } - Hu3DModelTPLvlSet(lbl_1_bss_750, temp_r31->unk38); - if (temp_r31->unk1C > 1.0f) { - temp_r31->unk1C = 1.0f; + Hu3DModelTPLvlSet(kemuriMdlId, work->kemuriTPLvl); + if (work->kemuriSize > 1.0f) { + work->kemuriSize = 1.0f; } - PSVECAdd(&temp_r31->unk20, &temp_r31->unk2C, &temp_r31->unk20); - if (temp_r31->unk20.y >= 4.0f) { - temp_r31->unk20.y = 4.0f; - temp_r31->unk2C.y = -0.1f; + VECAdd(&work->kemuriScale, &work->kemuriScaleVel, &work->kemuriScale); + if (work->kemuriScale.y >= 4.0f) { + work->kemuriScale.y = 4.0f; + work->kemuriScaleVel.y = -0.1f; } - if (temp_r31->unk20.y < 1.0f) { - temp_r31->unk20.y = 1.0f; + if (work->kemuriScale.y < 1.0f) { + work->kemuriScale.y = 1.0f; } - Hu3DModelScaleSet(lbl_1_bss_750, temp_r31->unk20.x, temp_r31->unk20.y, temp_r31->unk20.z); + Hu3DModelScaleSet(kemuriMdlId, work->kemuriScale.x, work->kemuriScale.y, work->kemuriScale.z); break; case 4: - Hu3DModelAttrSet(lbl_1_bss_750, 1); - arg0->work[2] = 5; - temp_r31->unk08 = 0; - temp_r31->unk0C = 12.0f; - temp_r31->unk14 = (fn_1_B018(temp_r31->unk04) - temp_r31->unk0C) / 90.0f; - temp_r31->unk10 = temp_r31->unk14 / 20.0f; + Hu3DModelAttrSet(kemuriMdlId, HU3D_ATTR_DISPOFF); + obj->work[2] = 5; + work->mapCursor = 0; + work->len = 12.0f; + work->maxSpeed = (SpaceAmidaMapLenGet(work->map) - work->len) / 90.0f; + work->speed = work->maxSpeed / 20.0f; HuAudFXPlay(0x406); HuAudFXPlay(0x407); - HuAudFXStop(lbl_1_bss_724); + HuAudFXStop(spaceAmidaSeNo); break; case 5: - var_f31 = temp_r31->unk0C + temp_r31->unk10; - temp_r31->unk0C = var_f31; - temp_r31->unk10 *= 1.04f; - if (temp_r31->unk10 > temp_r31->unk14) { - temp_r31->unk10 = temp_r31->unk14; + len = work->len + work->speed; + work->len = len; + work->speed *= 1.04f; + if (work->speed > work->maxSpeed) { + work->speed = work->maxSpeed; } - BoardModelPosGet(arg0->work[0], &sp20); - while (var_f31 >= (*temp_r31->unk04)[temp_r31->unk08].unk0C) { - var_f31 -= (*temp_r31->unk04)[temp_r31->unk08].unk0C; - temp_r31->unk08++; - if ((*temp_r31->unk04)[temp_r31->unk08].unk0C == 0.0f) { - omVibrate(lbl_1_bss_798, 12, 6, 6); - var_f31 = 0.0f; - lbl_1_bss_72C = 1; - lbl_1_bss_724 = HuAudFXPlay(0x332); - lbl_1_bss_708 = 0; - arg0->work[2] = 6; - if (sp20.x - lbl_1_bss_738.x < -25.0f) { - temp_r31->unk40 = 0; - lbl_1_bss_728 = 5; - } else if (sp20.x - lbl_1_bss_738.x > 25.0f) { - temp_r31->unk40 = 2; - lbl_1_bss_728 = 10; - } else { - temp_r31->unk40 = 1; - lbl_1_bss_728 = 20; + BoardModelPosGet(obj->work[0], &pos); + while (len >= (*work->map)[work->mapCursor].len) { + len -= (*work->map)[work->mapCursor].len; + work->mapCursor++; + if ((*work->map)[work->mapCursor].len == 0.0f) { + omVibrate(spaceAmidaPlayerNo, 12, 6, 6); + len = 0.0f; + rocketWarpF = 1; + spaceAmidaSeNo = HuAudFXPlay(0x332); + spaceAmidaSeqStopF = 0; + obj->work[2] = 6; + if (pos.x - spaceAmidaPos.x < -25.0f) { + work->targetNo = 0; + spaceAmidaCoinNum = 5; + } + else if (pos.x - spaceAmidaPos.x > 25.0f) { + work->targetNo = 2; + spaceAmidaCoinNum = 10; + } + else { + work->targetNo = 1; + spaceAmidaCoinNum = 20; } break; } } - temp_r31->unk0C = var_f31; - sp14.x = sp14.y = sp14.z = 0.0f; - if (lbl_1_bss_72C == 0) { - fn_1_C94C(&(*temp_r31->unk04)[temp_r31->unk08].unk00, &(*temp_r31->unk04)[temp_r31->unk08 + 1].unk00, &sp8); - sp20.x = lbl_1_bss_738.x + (sp8.x * var_f31 + (*temp_r31->unk04)[temp_r31->unk08].unk00.x); - sp20.y = lbl_1_bss_738.y + (sp8.y * var_f31 + (*temp_r31->unk04)[temp_r31->unk08].unk00.y); - } else { - sp20.x = lbl_1_bss_738.x + (*temp_r31->unk04)[temp_r31->unk08].unk00.x; - sp20.y = lbl_1_bss_738.y + (*temp_r31->unk04)[temp_r31->unk08].unk00.y; + work->len = len; + rocketPos.x = rocketPos.y = rocketPos.z = 0.0f; + if (rocketWarpF == 0) { + SpaceAmidaDirGet(&(*work->map)[work->mapCursor].pos, &(*work->map)[work->mapCursor + 1].pos, &dir); + pos.x = spaceAmidaPos.x + (dir.x * len + (*work->map)[work->mapCursor].pos.x); + pos.y = spaceAmidaPos.y + (dir.y * len + (*work->map)[work->mapCursor].pos.y); } - BoardModelPosSetV(arg0->work[0], &sp20); - sp20.y += 5.0f; - BoardPlayerPosSetV(lbl_1_bss_798, &sp20); - BoardModelRotSetV(arg0->work[0], &sp14); - BoardPlayerRotSetV(lbl_1_bss_798, &sp14); + else { + pos.x = spaceAmidaPos.x + (*work->map)[work->mapCursor].pos.x; + pos.y = spaceAmidaPos.y + (*work->map)[work->mapCursor].pos.y; + } + BoardModelPosSetV(obj->work[0], &pos); + pos.y += 5.0f; + BoardPlayerPosSetV(spaceAmidaPlayerNo, &pos); + BoardModelRotSetV(obj->work[0], &rocketPos); + BoardPlayerRotSetV(spaceAmidaPlayerNo, &rocketPos); break; case 6: - if (lbl_1_bss_708 == 0 && (HuAudFXStatusGet(lbl_1_bss_724) == 1 || HuAudFXStatusGet(lbl_1_bss_724) == 0)) { + if (spaceAmidaSeqStopF == 0 && (HuAudFXStatusGet(spaceAmidaSeNo) == 1 || HuAudFXStatusGet(spaceAmidaSeNo) == 0)) { BoardAudSeqPause(0, 0, 1000); - lbl_1_bss_708 = 1; + spaceAmidaSeqStopF = 1; } - BoardModelVisibilitySet(lbl_1_bss_788, 1); - sp20.x = lbl_1_bss_738.x + lbl_1_data_658[temp_r31->unk40].x; - sp20.y = lbl_1_bss_738.y + lbl_1_data_658[temp_r31->unk40].y; - sp20.z = lbl_1_bss_738.z + lbl_1_data_658[temp_r31->unk40].z; - BoardModelPosSetV(lbl_1_bss_788, &sp20); - temp_r31->unk1C -= 0.05f; - if (temp_r31->unk1C <= 0.0f) { - temp_r31->unk1C = 0.0f; + BoardModelVisibilitySet(spaceAmidaEffMdlId, 1); + pos.x = spaceAmidaPos.x + effPosTbl[work->targetNo].x; + pos.y = spaceAmidaPos.y + effPosTbl[work->targetNo].y; + pos.z = spaceAmidaPos.z + effPosTbl[work->targetNo].z; + BoardModelPosSetV(spaceAmidaEffMdlId, &pos); + work->kemuriSize -= 0.05f; + if (work->kemuriSize <= 0.0f) { + work->kemuriSize = 0.0f; } break; } } -static float fn_1_B018(Data690Block *arg0) { - float var_f31; +static float SpaceAmidaMapLenGet(SpaceAmidaMap *arg0) +{ + float len; s32 i; - var_f31 = 0.0f; + len = 0.0f; i = 0; while (TRUE) { - if ((*arg0)[i].unk0C == 0.0f) { + if ((*arg0)[i].len == 0.0f) { break; } - var_f31 += (*arg0)[i].unk0C; + len += (*arg0)[i].len; i++; } - return var_f31; + return len; } -static void fn_1_B088(omObjData *arg0) { - Bss720Data *temp_r31; - u16 sp8[] = { 20, 60, 120, 190 }; +static void SpaceAmidaComChoiceSet(omObjData *obj) +{ + SpaceAmidaGameWork *work; + u16 chance[] = { 20, 60, 120, 190 }; s32 i; - temp_r31 = arg0->data; - if (rand8() < sp8[GWPlayerCfg[lbl_1_bss_798].diff]) { + work = obj->data; + if (rand8() < chance[GWPlayerCfg[spaceAmidaPlayerNo].diff]) { for (i = 0; i < 3; i++) { - if (lbl_1_data_67C[lbl_1_bss_734][i] == 20) { - temp_r31->unk26 = i; + if (spaceAmidaCoinNumTbl[spaceAmidaMapNo][i] == 20) { + work->comChoice = i; } } - } else { - temp_r31->unk26 = rand8() % 3; } - temp_r31->unk24 = rand8() % 20 + 20; + else { + work->comChoice = rand8() % 3; + } + work->comDelay = rand8() % 20 + 20; } -static void fn_1_B1CC(omObjData *arg0, u16 *arg1, u16 *arg2) { - Bss720Data *temp_r31; +static void SpaceAmidaComInputGet(omObjData *obj, u16 *stkBtn, u16 *btn) +{ + SpaceAmidaGameWork *work; - temp_r31 = arg0->data; - *arg1 = *arg2 = 0; - if (temp_r31->unk24 != 0) { - temp_r31->unk24--; + work = obj->data; + *stkBtn = *btn = 0; + if (work->comDelay != 0) { + work->comDelay--; return; } - if (temp_r31->unk28 >= 4 || (rand8() & 1)) { - if (temp_r31->unk26 == lbl_1_bss_730) { - *arg2 |= 0x100; - } else if (temp_r31->unk26 < lbl_1_bss_730) { - *arg1 |= 1; - } else { - *arg1 |= 2; + if (work->comInputTimer >= 4 || (rand8() & 1)) { + if (work->comChoice == spaceAmidaPath) { + *btn |= PAD_BUTTON_A; } - temp_r31->unk24 = rand8() % 10 + 10; - } else { - temp_r31->unk28++; - temp_r31->unk24 = rand8() % 10 + 20; - if (lbl_1_bss_730 == 0) { - *arg1 |= 2; - } else if (lbl_1_bss_730 == 2) { - *arg1 |= 1; - } else if (rand8() & 1) { - *arg1 |= 1; - } else { - *arg1 |= 2; + else if (work->comChoice < spaceAmidaPath) { + *stkBtn |= PAD_BUTTON_LEFT; + } + else { + *stkBtn |= PAD_BUTTON_RIGHT; + } + work->comDelay = rand8() % 10 + 10; + } + else { + work->comInputTimer++; + work->comDelay = rand8() % 10 + 20; + if (spaceAmidaPath == 0) { + *stkBtn |= PAD_BUTTON_RIGHT; + } + else if (spaceAmidaPath == 2) { + *stkBtn |= PAD_BUTTON_LEFT; + } + else if (rand8() & 1) { + *stkBtn |= PAD_BUTTON_LEFT; + } + else { + *stkBtn |= PAD_BUTTON_RIGHT; } } } -static void fn_1_B3B8(omObjData *arg0) { - float temp_f31; - - temp_f31 = BoardModelMotionMaxTimeGet(lbl_1_bss_796); - if (BoardModelMotionTimeGet(lbl_1_bss_796) >= temp_f31) { - lbl_1_bss_744 = MGSeqCreate(1, lbl_1_bss_74C, 0x120, 0x40); - lbl_1_bss_720->func = fn_1_B478; +static void SpaceAmidaGameOpen(omObjData *obj) +{ + if (BoardModelMotionTimeGet(spaceAmidaMdlId) >= BoardModelMotionMaxTimeGet(spaceAmidaMdlId)) { + timerSeqId = MGSeqCreate(1, timerSec, 0x120, 0x40); + spaceAmidaGameObj->func = SpaceAmidaGameUpdate; BoardMusStart(1, 0xF, 0x7F, 0); - lbl_1_bss_724 = HuAudFXPlay(0x408); + spaceAmidaSeNo = HuAudFXPlay(0x408); } } -static void fn_1_B478(omObjData *arg0) { - Bss720Data *temp_r31; - Vec sp18; - Vec spC; - float var_f28; - u16 var_r27; - u16 var_r29; +static void SpaceAmidaGameUpdate(omObjData *obj) +{ + SpaceAmidaGameWork *work; + Vec rocketPos; + Vec playerPos; + float jumpDist; + u16 btn; + u16 stkBtn; - temp_r31 = arg0->data; - if ((lbl_1_bss_748 -= 1) == 0) { - if ((lbl_1_bss_74C -= 1) >= 0) { - MGSeqParamSet(lbl_1_bss_744, 1, lbl_1_bss_74C); + work = obj->data; + if ((--timerFrame) == 0) { + if ((--timerSec) >= 0) { + MGSeqParamSet(timerSeqId, 1, timerSec); } - lbl_1_bss_748 = 60; + timerFrame = REFRESH_RATE; } - if (GWPlayerCfg[lbl_1_bss_798].iscom == 1) { - fn_1_B1CC(arg0, &var_r29, &var_r27); - } else { - var_r29 = HuPadDStkRep[lbl_1_bss_79C]; - var_r27 = HuPadBtnDown[lbl_1_bss_79C]; + if (GWPlayerCfg[spaceAmidaPlayerNo].iscom == 1) { + SpaceAmidaComInputGet(obj, &stkBtn, &btn); } - if ((var_r29 & 1) && lbl_1_bss_730 != 0) { - lbl_1_bss_714[lbl_1_bss_730]->work[1] = 1; - lbl_1_bss_714[lbl_1_bss_730]->work[2] = 2; - lbl_1_bss_730--; - lbl_1_bss_714[lbl_1_bss_730]->work[2] = 1; + else { + stkBtn = HuPadDStkRep[spaceAmidaPadNo]; + btn = HuPadBtnDown[spaceAmidaPadNo]; } - if ((var_r29 & 2) && lbl_1_bss_730 != 2) { - lbl_1_bss_714[lbl_1_bss_730]->work[1] = 1; - lbl_1_bss_714[lbl_1_bss_730]->work[2] = 2; - lbl_1_bss_730++; - lbl_1_bss_714[lbl_1_bss_730]->work[2] = 1; + if ((stkBtn & PAD_BUTTON_LEFT) && spaceAmidaPath != 0) { + rocketObj[spaceAmidaPath]->work[1] = 1; + rocketObj[spaceAmidaPath]->work[2] = 2; + spaceAmidaPath--; + rocketObj[spaceAmidaPath]->work[2] = 1; } - BoardModelPosGet(lbl_1_bss_78A[lbl_1_bss_730], &sp18); - BoardPlayerPosGet(lbl_1_bss_798, &spC); - fn_1_CB44(&sp18, 0.0f); - temp_r31->unk04 = sp18; - if (lbl_1_bss_74C < 0 || (var_r27 & 0x100)) { - MGSeqParamSet(lbl_1_bss_744, 2, -1); - lbl_1_bss_714[lbl_1_bss_730]->work[1] = 1; - BoardPlayerPosGet(lbl_1_bss_798, &spC); - var_f28 = VECDistanceXZ(&temp_r31->unk04, &spC); - fn_1_C94C(&spC, &temp_r31->unk04, &temp_r31->unk10); - temp_r31->unk10.y = 0.0f; - temp_r31->unk10.x *= var_f28 / 30.0f; - temp_r31->unk10.z *= var_f28 / 30.0f; - temp_r31->unk00 = 0; - temp_r31->unk20 = 0.0f; - arg0->func = fn_1_BAF8; + if ((stkBtn & PAD_BUTTON_RIGHT) && spaceAmidaPath != 2) { + rocketObj[spaceAmidaPath]->work[1] = 1; + rocketObj[spaceAmidaPath]->work[2] = 2; + spaceAmidaPath++; + rocketObj[spaceAmidaPath]->work[2] = 1; + } + BoardModelPosGet(rocketMdlId[spaceAmidaPath], &rocketPos); + BoardPlayerPosGet(spaceAmidaPlayerNo, &playerPos); + SpaceAmidaPlayerRotAdd(&rocketPos, 0.0f); + work->rocketPos = rocketPos; + if (timerSec < 0 || (btn & PAD_BUTTON_A)) { + MGSeqParamSet(timerSeqId, 2, -1); + rocketObj[spaceAmidaPath]->work[1] = 1; + BoardPlayerPosGet(spaceAmidaPlayerNo, &playerPos); + jumpDist = VECDistanceXZ(&work->rocketPos, &playerPos); + SpaceAmidaDirGet(&playerPos, &work->rocketPos, &work->jumpDir); + work->jumpDir.y = 0.0f; + work->jumpDir.x *= jumpDist / 30.0f; + work->jumpDir.z *= jumpDist / 30.0f; + work->unk00 = 0; + work->jumpTime = 0.0f; + obj->func = SpaceAmidaRocketJump; } } -static void fn_1_BAF8(omObjData *arg0) { - Bss720Data *temp_r31; - Vec sp14; - Vec sp8; +static void SpaceAmidaRocketJump(omObjData *obj) +{ + SpaceAmidaGameWork *work; + Vec playerPos; + Vec rocketPos; - temp_r31 = arg0->data; - if (lbl_1_bss_714[lbl_1_bss_730]->work[2] != 0) { + work = obj->data; + if (rocketObj[spaceAmidaPath]->work[2] != 0) { return; } - BoardPlayerMotionStart(lbl_1_bss_798, 4, 0); - BoardPlayerPosGet(lbl_1_bss_798, &sp14); - sp14.x += temp_r31->unk10.x; - sp14.z += temp_r31->unk10.z; - sp14.y = lbl_1_bss_738.y + 80.0 * sind(6.0f * temp_r31->unk20); - BoardModelPosGet(lbl_1_bss_714[lbl_1_bss_730]->work[0], &sp8); - if ((temp_r31->unk20 += 1.0f) == 30.0f) { - sp14.y = sp8.y + 5.0f; - BoardPlayerPosSetV(lbl_1_bss_798, &sp14); - BoardPlayerMotionShiftSet(lbl_1_bss_798, 2, 0.0f, 10.0f, 0); - arg0->func = fn_1_BCDC; + BoardPlayerMotionStart(spaceAmidaPlayerNo, 4, 0); + BoardPlayerPosGet(spaceAmidaPlayerNo, &playerPos); + playerPos.x += work->jumpDir.x; + playerPos.z += work->jumpDir.z; + playerPos.y = spaceAmidaPos.y + 80.0 * sind(6.0f * work->jumpTime); + BoardModelPosGet(rocketObj[spaceAmidaPath]->work[0], &rocketPos); + if ((++work->jumpTime) == 30.0f) { + playerPos.y = rocketPos.y + 5.0f; + BoardPlayerPosSetV(spaceAmidaPlayerNo, &playerPos); + BoardPlayerMotionShiftSet(spaceAmidaPlayerNo, 2, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + obj->func = SpaceAmidaRocketKemuriExec; } - BoardPlayerPosSetV(lbl_1_bss_798, &sp14); + BoardPlayerPosSetV(spaceAmidaPlayerNo, &playerPos); } -static void fn_1_BCDC(omObjData *arg0) { - Bss720Data *temp_r29; - Bss714Data *temp_r31; - Vec sp14; - Vec sp8; +static void SpaceAmidaRocketKemuriExec(omObjData *obj) +{ + SpaceAmidaGameWork *work; + RocketWork *rocketWork; + Vec playerPos; + Vec kemuriPos; - temp_r29 = arg0->data; - BoardPlayerPosGet(lbl_1_bss_798, &sp14); - sp8 = sp14; - sp8.z += 100.0f; - if (fn_1_CB44(&sp8, 10.0f) == 1) { - BoardPlayerMotionShiftSet(lbl_1_bss_798, 1, 0.0f, 10.0f, 0); - temp_r29->unk1C = 90; - lbl_1_bss_710->work[0] = 1; - lbl_1_bss_714[lbl_1_bss_730]->work[2] = 3; - temp_r31 = lbl_1_bss_714[lbl_1_bss_730]->data; - Hu3DModelAttrReset(lbl_1_bss_750, 1); - Hu3DModelPosSet(lbl_1_bss_750, sp14.x, sp14.y, sp14.z); - temp_r31->unk20.x = 1.4f; - temp_r31->unk20.y = 1.4f; - temp_r31->unk20.z = 1.4f; - temp_r31->unk2C.x = 0.055999998f; - temp_r31->unk2C.y = 0.08088889f; - temp_r31->unk2C.z = 0.055999998f; - temp_r31->unk38 = 1.0f; - temp_r31->unk3C = 0.0f; - Hu3DModelScaleSet(lbl_1_bss_750, 1.4f, 1.4f, 1.4f); - arg0->func = fn_1_BF00; + work = obj->data; + BoardPlayerPosGet(spaceAmidaPlayerNo, &playerPos); + kemuriPos = playerPos; + kemuriPos.z += 100.0f; + if (SpaceAmidaPlayerRotAdd(&kemuriPos, 10.0f) == 1) { + BoardPlayerMotionShiftSet(spaceAmidaPlayerNo, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + work->waitTime = 90; + spaceAmidaEffObj->work[0] = 1; + rocketObj[spaceAmidaPath]->work[2] = 3; + rocketWork = rocketObj[spaceAmidaPath]->data; + Hu3DModelAttrReset(kemuriMdlId, HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(kemuriMdlId, playerPos.x, playerPos.y, playerPos.z); + rocketWork->kemuriScale.x = 1.4f; + rocketWork->kemuriScale.y = 1.4f; + rocketWork->kemuriScale.z = 1.4f; + rocketWork->kemuriScaleVel.x = 0.055999998f; + rocketWork->kemuriScaleVel.y = 0.08088889f; + rocketWork->kemuriScaleVel.z = 0.055999998f; + rocketWork->kemuriTPLvl = 1.0f; + rocketWork->unk3C = 0.0f; + Hu3DModelScaleSet(kemuriMdlId, 1.4f, 1.4f, 1.4f); + obj->func = SpaceAmidaRocketWait; } } -static void fn_1_BF00(omObjData *arg0) { - Bss720Data *temp_r31; +static void SpaceAmidaRocketWait(omObjData *obj) +{ + SpaceAmidaGameWork *work; - temp_r31 = arg0->data; - if (temp_r31->unk1C == 0) { - lbl_1_bss_714[lbl_1_bss_730]->work[2] = 4; - arg0->func = fn_1_BF68; - } else { - temp_r31->unk1C--; + work = obj->data; + if (work->waitTime == 0) { + rocketObj[spaceAmidaPath]->work[2] = 4; + obj->func = SpaceAmidaRocketUp; + } + else { + work->waitTime--; } } -static void fn_1_BF68(omObjData *arg0) { - Bss720Data *sp8; +static void SpaceAmidaRocketUp(omObjData *obj) +{ + SpaceAmidaGameWork *work; - sp8 = arg0->data; - if (lbl_1_bss_714[lbl_1_bss_730]->work[2] == 6) { - lbl_1_bss_75C = HuPrcCreate(fn_1_C000, 0x2004, 0x1000, 0); - lbl_1_bss_75C->user_data = arg0; - arg0->func = NULL; + work = obj->data; + if (rocketObj[spaceAmidaPath]->work[2] == 6) { + coinWinProc = HuPrcCreate(SpaceAmidaCoinWin, 0x2004, 0x1000, 0); + coinWinProc->user_data = obj; + obj->func = NULL; } } -static void fn_1_C000(void) { - char sp8[16]; // array size may range between 1 and 16 (inclusive) - omObjData *temp_r30; - Bss720Data *temp_r31; +static void SpaceAmidaCoinWin(void) +{ + char mess[16]; // array size may range between 1 and 16 (inclusive) + omObjData *obj; + SpaceAmidaGameWork *work; BoardAudSeqFadeOut(1, 100); - sprintf(&sp8, "%d", lbl_1_bss_728); + sprintf(&mess, "%d", spaceAmidaCoinNum); BoardWinCreate(2, MAKE_MESSID(11, 6), 0); - BoardWinInsertMesSet(MAKE_MESSID_PTR(sp8), 0); + BoardWinInsertMesSet(MAKE_MESSID_PTR(mess), 0); BoardWinWait(); BoardWinKill(); - temp_r30 = HuPrcCurrentGet()->user_data; - temp_r31 = temp_r30->data; - temp_r31->unk10.x = 0.0f; - temp_r31->unk10.y = 10.0f; - temp_r31->unk10.z = 3.0f; - temp_r31->unk20 = 0.0f; - BoardPlayerMotionShiftSet(lbl_1_bss_798, 4, 0.0f, 10.0f, 0); - temp_r30->func = fn_1_C0FC; + obj = HuPrcCurrentGet()->user_data; + work = obj->data; + work->jumpDir.x = 0.0f; + work->jumpDir.y = 10.0f; + work->jumpDir.z = 3.0f; + work->jumpTime = 0.0f; + BoardPlayerMotionShiftSet(spaceAmidaPlayerNo, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + obj->func = SpaceAmidaJumpDown; HuPrcKill(NULL); while (TRUE) { HuPrcVSleep(); } } -static void fn_1_C0FC(omObjData *arg0) { - Bss720Data *temp_r31; - Vec sp8; +static void SpaceAmidaJumpDown(omObjData *obj) +{ + SpaceAmidaGameWork *work; + Vec pos; - temp_r31 = arg0->data; - BoardPlayerPosGet(lbl_1_bss_798, &sp8); - sp8.x += temp_r31->unk10.x; - sp8.y += temp_r31->unk10.y - 0.029166667f * temp_r31->unk20 * temp_r31->unk20; - sp8.z += temp_r31->unk10.z; - temp_r31->unk20 += 1.0f; - if (sp8.y <= lbl_1_bss_738.y) { - BoardPlayerMotionShiftSet(lbl_1_bss_798, 1, 0.0f, 10.0f, 0x40000001); - sp8.y = lbl_1_bss_738.y; - lbl_1_bss_75C = HuPrcCreate(fn_1_C25C, 0x2004, 0x1000, 0); - lbl_1_bss_75C->user_data = arg0; - arg0->func = NULL; + work = obj->data; + BoardPlayerPosGet(spaceAmidaPlayerNo, &pos); + pos.x += work->jumpDir.x; + pos.y += work->jumpDir.y - 0.029166667f * work->jumpTime * work->jumpTime; + pos.z += work->jumpDir.z; + work->jumpTime += 1.0f; + if (pos.y <= spaceAmidaPos.y) { + BoardPlayerMotionShiftSet(spaceAmidaPlayerNo, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + pos.y = spaceAmidaPos.y; + coinWinProc = HuPrcCreate(SpaceAmidaCoinRainMain, 0x2004, 0x1000, 0); + coinWinProc->user_data = obj; + obj->func = NULL; } - BoardPlayerPosSetV(lbl_1_bss_798, &sp8); + BoardPlayerPosSetV(spaceAmidaPlayerNo, &pos); } -static void fn_1_C25C(void) { - Vec sp11C[20]; - Vec sp2C[20]; - Vec sp20; - Vec sp14; - Vec sp8; - float var_f31; - s16 var_r30; +static void SpaceAmidaCoinRainMain(void) +{ + Vec coinPos[20]; + Vec coinRot[20]; + Vec playerPos; + Vec scale; + Vec coinEffPos; + float velY; + s16 coinNum; s16 i; - var_r30 = 0; - BoardPlayerPosGet(lbl_1_bss_798, &sp20); - sp14.x = sp14.y = sp14.z = 1.0f; - for (i = 0; i < lbl_1_bss_728; i++) { - BoardModelVisibilitySet(lbl_1_bss_760[i], 1); - sp11C[i] = sp20; - sp11C[i].y += 600.0f + i * 120; - sp11C[i].x += -25.0f + 50.0f * frand8() * 0.003921569f; - sp11C[i].z += -25.0f + 50.0f * frand8() * 0.003921569f; - sp2C[i].x = sp2C[i].z = 0.0f; - sp2C[i].y = 360.0f * frand8() * 0.003921569f; - BoardModelPosSetV(lbl_1_bss_760[i], &sp11C[i]); - BoardModelScaleSetV(lbl_1_bss_760[i], &sp14); - BoardModelRotSetV(lbl_1_bss_760[i], &sp2C[i]); + coinNum = 0; + BoardPlayerPosGet(spaceAmidaPlayerNo, &playerPos); + scale.x = scale.y = scale.z = 1.0f; + for (i = 0; i < spaceAmidaCoinNum; i++) { + BoardModelVisibilitySet(coinMdlId[i], 1); + coinPos[i] = playerPos; + coinPos[i].y += 600.0f + i * 120; + coinPos[i].x += -25.0f + 50.0f * frand8() * 0.003921569f; + coinPos[i].z += -25.0f + 50.0f * frand8() * 0.003921569f; + coinRot[i].x = coinRot[i].z = 0.0f; + coinRot[i].y = 360.0f * frand8() * 0.003921569f; + BoardModelPosSetV(coinMdlId[i], &coinPos[i]); + BoardModelScaleSetV(coinMdlId[i], &scale); + BoardModelRotSetV(coinMdlId[i], &coinRot[i]); } - var_f31 = -1.0f; + velY = -1.0f; while (TRUE) { - for (i = 0; i < lbl_1_bss_728; i++) { - if (i >= var_r30) { - sp11C[i].y += var_f31; - BoardModelPosSetV(lbl_1_bss_760[i], &sp11C[i]); - sp2C[i].y += 45.0f; - if (sp2C[i].y >= 360.0f) { - sp2C[i].y -= 360.0f; + for (i = 0; i < spaceAmidaCoinNum; i++) { + if (i >= coinNum) { + coinPos[i].y += velY; + BoardModelPosSetV(coinMdlId[i], &coinPos[i]); + coinRot[i].y += 45.0f; + if (coinRot[i].y >= 360.0f) { + coinRot[i].y -= 360.0f; } - BoardModelRotSetV(lbl_1_bss_760[i], &sp2C[i]); - if (sp11C[i].y <= sp20.y + 80.0f) { - sp8 = sp11C[i]; - CharModelCoinEffectCreate(1, &sp8); - BoardModelVisibilitySet(lbl_1_bss_760[i], 0); - var_r30++; - BoardPlayerCoinsAdd(lbl_1_bss_798, 1); + BoardModelRotSetV(coinMdlId[i], &coinRot[i]); + if (coinPos[i].y <= playerPos.y + 80.0f) { + Vec pos = coinPos[i]; + CharModelCoinEffectCreate(1, &pos); + BoardModelVisibilitySet(coinMdlId[i], 0); + coinNum++; + BoardPlayerCoinsAdd(spaceAmidaPlayerNo, 1); HuAudFXPlay(7); - omVibrate(lbl_1_bss_798, 0xC, 6, 6); + omVibrate(spaceAmidaPlayerNo, 0xC, 6, 6); } } } - var_f31 *= 1.05f; - if (var_f31 < -20.0f) { - var_f31 = -20.0f; + velY *= 1.05f; + if (velY < -20.0f) { + velY = -20.0f; } - if (var_r30 == lbl_1_bss_728) { - BoardPlayerMotionShiftSet(lbl_1_bss_798, 7, 0.0f, 10.0f, 0); + if (coinNum == spaceAmidaCoinNum) { + BoardPlayerMotionShiftSet(spaceAmidaPlayerNo, 7, 0.0f, 10.0f, HU3D_MOTATTR_NONE); break; } HuPrcVSleep(); } - while (!BoardPlayerMotionEndCheck(lbl_1_bss_798)) { + while (!BoardPlayerMotionEndCheck(spaceAmidaPlayerNo)) { HuPrcVSleep(); } - lbl_1_bss_75C = HuPrcCreate(fn_1_C844, 0x2004, 0x1000, 0); - lbl_1_bss_75C->user_data = HuPrcCurrentGet()->user_data; + coinWinProc = HuPrcCreate(SpaceAmidaReturnWinMain, 0x2004, 0x1000, 0); + coinWinProc->user_data = HuPrcCurrentGet()->user_data; HuPrcKill(NULL); while (TRUE) { HuPrcVSleep(); } } -static void fn_1_C844(void) { - omObjData *var_r31; +static void SpaceAmidaReturnWinMain(void) +{ + omObjData *obj; BoardWinCreate(2, MAKE_MESSID(11, 7), 0); BoardWinWait(); BoardWinKill(); - var_r31 = HuPrcCurrentGet()->user_data; - var_r31->func = fn_1_C894; + obj = HuPrcCurrentGet()->user_data; + obj->func = SpaceAmidaGameStop; HuPrcKill(NULL); while (TRUE) { HuPrcVSleep(); } } -static void fn_1_C894(omObjData *arg0) { - float temp_f31; - - lbl_1_bss_72A = 1; - BoardMGExit(); - temp_f31 = BoardModelMotionTimeGet(lbl_1_bss_796); - lbl_1_bss_754 = temp_f31; - BoardModelMotionStart(lbl_1_bss_796, 0, 0); - BoardModelMotionTimeSet(lbl_1_bss_796, temp_f31); - BoardModelMotionSpeedSet(lbl_1_bss_796, -1.0f); - omDelObjEx(HuPrcCurrentGet(), arg0); +static void SpaceAmidaGameStop(omObjData *obj) +{ + SpaceAmidaStop(); + omDelObjEx(HuPrcCurrentGet(), obj); } -static void fn_1_C94C(Vec *arg0, Vec *arg1, Vec *arg2) { - PSVECSubtract(arg1, arg0, arg2); - PSVECNormalize(arg2, arg2); +static void SpaceAmidaDirGet(Vec *b, Vec *a, Vec *result) +{ + VECSubtract(a, b, result); + VECNormalize(result, result); } -static float fn_1_C998(Vec *arg0) { - float temp_f31; +static float SpaceAmidaAngleGet(Vec *dir) +{ + float angle; - if (arg0->x || arg0->z) { - if (arg0->x == 0.0f) { - if (arg0->z > 0.0f) { + if (dir->x || dir->z) { + if (dir->x == 0.0f) { + if (dir->z > 0.0f) { return 0.0f; - } else { + } + else { return 180.0f; } } - if (arg0->z == 0.0f) { - if (arg0->x > 0.0f) { + if (dir->z == 0.0f) { + if (dir->x > 0.0f) { return 90.0f; - } else { + } + else { return 270.0f; } } - temp_f31 = atan2d(arg0->z, arg0->x); - if (arg0->z < 0.0f) { - temp_f31 = 90.0f - temp_f31; - } else { - temp_f31 = 90.0f - temp_f31; - if (temp_f31 < 0.0f) { - temp_f31 += 360.0f; + angle = atan2d(dir->z, dir->x); + if (dir->z < 0.0f) { + angle = 90.0f - angle; + } + else { + angle = 90.0f - angle; + if (angle < 0.0f) { + angle += 360.0f; } } - return temp_f31; + return angle; } return -1.0f; } -static u32 fn_1_CB44(Vec *arg0, float arg1) { - Vec sp24; - Vec sp18; - Vec spC; - float var_f28; - float var_f30; - float var_f31; +static u32 SpaceAmidaPlayerRotAdd(Vec *rocketPos, float delta) +{ + Vec dir; + Vec playerPos; + Vec playerRot; + float rocketAngle; + float angleDelta; + float rotY; - BoardPlayerPosGet(lbl_1_bss_798, &sp18); - PSVECSubtract(arg0, &sp18, &sp24); - PSVECNormalize(&sp24, &sp24); - var_f28 = fn_1_C998(&sp24); - BoardPlayerRotGet(lbl_1_bss_798, &spC); - var_f31 = spC.y; - var_f30 = var_f28 - var_f31; - if (arg1 == 0.0f) { - var_f31 = var_f28; - } else if (fabs(var_f30) > arg1) { - if (var_f30 < 0.0f) { - var_f30 += 360.0f; + BoardPlayerPosGet(spaceAmidaPlayerNo, &playerPos); + SpaceAmidaDirGet(&playerPos, rocketPos, &dir); + rocketAngle = SpaceAmidaAngleGet(&dir); + BoardPlayerRotGet(spaceAmidaPlayerNo, &playerRot); + rotY = playerRot.y; + angleDelta = rocketAngle - rotY; + if (delta == 0.0f) { + rotY = rocketAngle; + } + else if (fabs(angleDelta) > delta) { + if (angleDelta < 0.0f) { + angleDelta += 360.0f; } - if (var_f30 < 180.0f) { - if (var_f30 > arg1) { - var_f31 += arg1; - } else { - var_f31 += var_f30; + if (angleDelta < 180.0f) { + if (angleDelta > delta) { + rotY += delta; + } + else { + rotY += angleDelta; } - } else if (360.0f - var_f30 > arg1) { - var_f31 -= arg1; - } else { - var_f31 -= 360.0f - var_f30; } - } else { - var_f31 = var_f28; + else if (360.0f - angleDelta > delta) { + rotY -= delta; + } + else { + rotY -= 360.0f - angleDelta; + } } - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; + else { + rotY = rocketAngle; } - if (var_f31 < 0.0f) { - var_f31 += 360.0f; + if (rotY >= 360.0f) { + rotY -= 360.0f; } - BoardPlayerRotYSet(lbl_1_bss_798, var_f31); - if (var_f31 == var_f28) { - return 1; - } else { - return 0; + if (rotY < 0.0f) { + rotY += 360.0f; + } + BoardPlayerRotYSet(spaceAmidaPlayerNo, rotY); + if (rotY == rocketAngle) { + return TRUE; + } + else { + return FALSE; } } -static void fn_1_CEC4(void) { - lbl_1_bss_70C = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_W01, 20)); - lbl_1_bss_710 = omAddObjEx(boardObjMan, 0x101, 1, 0, -1, fn_1_D07C); - lbl_1_bss_710->data = HuMemDirectMallocNum(HEAP_SYSTEM, 12, MEMORY_DEFAULT_NUM); - lbl_1_bss_710->model[0] = Hu3DParticleCreate(lbl_1_bss_70C, 0x320); - Hu3DParticleColSet(lbl_1_bss_710->model[0], 0xFF, 0, 0); - Hu3DParticleScaleSet(lbl_1_bss_710->model[0], 5.0f); - Hu3DParticleHookSet(lbl_1_bss_710->model[0], fn_1_D114); - Hu3DParticleBlendModeSet(lbl_1_bss_710->model[0], 1); - Hu3DModelAttrSet(lbl_1_bss_710->model[0], 1); - lbl_1_bss_710->work[0] = 0; +static void SpaceAmidaEffCreate(void) +{ + spaceAmidaEffAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_W01, 20)); + spaceAmidaEffObj = omAddObjEx(boardObjMan, 0x101, 1, 0, -1, SpaceAmidaEffUpdate); + spaceAmidaEffObj->data = HuMemDirectMallocNum(HEAP_SYSTEM, 12, MEMORY_DEFAULT_NUM); + spaceAmidaEffObj->model[0] = Hu3DParticleCreate(spaceAmidaEffAnim, 0x320); + Hu3DParticleColSet(spaceAmidaEffObj->model[0], 255, 0, 0); + Hu3DParticleScaleSet(spaceAmidaEffObj->model[0], 5.0f); + Hu3DParticleHookSet(spaceAmidaEffObj->model[0], SpaceAmidaEffParticleHook); + Hu3DParticleBlendModeSet(spaceAmidaEffObj->model[0], 1); + Hu3DModelAttrSet(spaceAmidaEffObj->model[0], HU3D_ATTR_DISPOFF); + spaceAmidaEffObj->work[0] = 0; } -static void fn_1_D034(void) { - Hu3DModelKill(lbl_1_bss_710->model[0]); - omDelObjEx(HuPrcCurrentGet(), lbl_1_bss_710); +static void SpaceAmidaEffKill(void) +{ + Hu3DModelKill(spaceAmidaEffObj->model[0]); + omDelObjEx(HuPrcCurrentGet(), spaceAmidaEffObj); } -static void fn_1_D07C(omObjData *arg0) { - void *sp8; +static void SpaceAmidaEffUpdate(omObjData *obj) +{ + void *work; - sp8 = arg0->data; - switch (arg0->work[0]) { + work = obj->data; + switch (obj->work[0]) { case 0: break; case 1: - arg0->work[0] = 2; - Hu3DModelAttrReset(arg0->model[0], 1); - Hu3DModelScaleSet(arg0->model[0], 10.0f, 10.0f, 10.0f); + obj->work[0] = 2; + Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(obj->model[0], 10.0f, 10.0f, 10.0f); break; case 2: break; } } -static void fn_1_D114(ModelData *model, ParticleData *particle, Mtx matrix) { - Bss714Data *temp_r28; - HsfanimStruct01 *var_r31; - Vec sp8; - float temp_f31; +static void SpaceAmidaEffParticleHook(ModelData *model, ParticleData *particle, Mtx matrix) +{ + RocketWork *work; + HsfanimStruct01 *particleDataP; + Vec pos; + float size; s32 i; s32 j; - s32 temp_r26; + s32 relSize; - BoardModelPosGet(lbl_1_bss_714[lbl_1_bss_730]->work[0], &sp8); - temp_r28 = lbl_1_bss_714[lbl_1_bss_730]->data; + BoardModelPosGet(rocketObj[spaceAmidaPath]->work[0], &pos); + work = rocketObj[spaceAmidaPath]->data; if (particle->unk_34 == 0) { - var_r31 = particle->unk_48; - for (i = 0; i < particle->unk_30; i++, var_r31++) { - var_r31->unk2C = 0.0f; + particleDataP = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, particleDataP++) { + particleDataP->unk2C = 0.0f; } - particle->unk_1C = (void*) 1; + particle->unk_1C = (void *)1; } - if (temp_r28->unk1C > 0.0f) { - for (i = 0; i < 80.0f * temp_r28->unk1C; i++) { - var_r31 = particle->unk_48; - for (j = 0; j < particle->unk_30; j++, var_r31++) { - if (var_r31->unk2C == 0.0f) { + if (work->kemuriSize > 0.0f) { + for (i = 0; i < 80.0f * work->kemuriSize; i++) { + particleDataP = particle->unk_48; + for (j = 0; j < particle->unk_30; j++, particleDataP++) { + if (particleDataP->unk2C == 0.0f) { break; } } if (j != particle->unk_30) { - temp_r26 = frand16(); - temp_f31 = (-15.0f + 30.0f * (temp_r26 / 65536.0f)) * temp_r28->unk1C; - var_r31->unk08.x = sp8.x + temp_f31; - var_r31->unk08.y = sp8.y; - var_r31->unk08.z = sp8.z; - var_r31->unk14.x = 255.0f; - var_r31->unk14.y = 155.0f; - var_r31->unk14.z = 55.0f; - var_r31->unk40.a = 0xFF; - var_r31->unk20 = 0.0f; - var_r31->unk24 = temp_r28->unk1C * (-3.0 + (2.0 * (fabs(temp_f31) / 15.0))); - var_r31->unk28 = 0.0f; - var_r31->unk2C = 7.3f; + relSize = frand16(); + size = (-15.0f + 30.0f * (relSize / 65536.0f)) * work->kemuriSize; + particleDataP->unk08.x = pos.x + size; + particleDataP->unk08.y = pos.y; + particleDataP->unk08.z = pos.z; + particleDataP->unk14.x = 255.0f; + particleDataP->unk14.y = 155.0f; + particleDataP->unk14.z = 55.0f; + particleDataP->unk40.a = 0xFF; + particleDataP->unk20 = 0.0f; + particleDataP->unk24 = work->kemuriSize * (-3.0 + (2.0 * (fabs(size) / 15.0))); + particleDataP->unk28 = 0.0f; + particleDataP->unk2C = 7.3f; } } } - var_r31 = particle->unk_48; - for (i = 0; i < particle->unk_30; i++, var_r31++) { - if (var_r31->unk2C == 0.0f) { + particleDataP = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, particleDataP++) { + if (particleDataP->unk2C == 0.0f) { continue; } - var_r31->unk34.x = var_r31->unk08.x; - var_r31->unk34.y = var_r31->unk08.y; - var_r31->unk34.z = var_r31->unk08.z; - var_r31->unk08.x += var_r31->unk20; - var_r31->unk08.y += var_r31->unk24; - var_r31->unk08.z += var_r31->unk28; - if (var_r31->unk08.y <= lbl_1_bss_738.y) { - var_r31->unk08.y = lbl_1_bss_738.y; - var_r31->unk24 = -var_r31->unk24 - 0.3f; - if (var_r31->unk24 < 0.0f) { - var_r31->unk24 = 0.0f; + particleDataP->unk34.x = particleDataP->unk08.x; + particleDataP->unk34.y = particleDataP->unk08.y; + particleDataP->unk34.z = particleDataP->unk08.z; + particleDataP->unk08.x += particleDataP->unk20; + particleDataP->unk08.y += particleDataP->unk24; + particleDataP->unk08.z += particleDataP->unk28; + if (particleDataP->unk08.y <= spaceAmidaPos.y) { + particleDataP->unk08.y = spaceAmidaPos.y; + particleDataP->unk24 = -particleDataP->unk24 - 0.3f; + if (particleDataP->unk24 < 0.0f) { + particleDataP->unk24 = 0.0f; } - temp_r26 = 80.0f * (2.0f * ((sp8.x - var_r31->unk08.x) / 15.0f) - rand8() / 255.0f); - var_r31->unk20 = 8.0 * sind(temp_r26); - var_r31->unk28 = 8.0 * cosd(temp_r26); + relSize = 80.0f * (2.0f * ((pos.x - particleDataP->unk08.x) / 15.0f) - rand8() / 255.0f); + particleDataP->unk20 = 8.0 * sind(relSize); + particleDataP->unk28 = 8.0 * cosd(relSize); } - var_r31->unk24 -= 0.35f; - if ((var_r31->unk14.x -= 25.5f) < 0.0f) { - var_r31->unk14.x = 0.0f; + particleDataP->unk24 -= 0.35f; + if ((particleDataP->unk14.x -= 25.5f) < 0.0f) { + particleDataP->unk14.x = 0.0f; } - if ((var_r31->unk14.y -= 36.42857f) < 0.0f) { - var_r31->unk14.y = 0.0f; + if ((particleDataP->unk14.y -= 36.42857f) < 0.0f) { + particleDataP->unk14.y = 0.0f; } - if ((var_r31->unk14.z -= 63.75f) < 0.0f) { - var_r31->unk14.z = 0.0f; + if ((particleDataP->unk14.z -= 63.75f) < 0.0f) { + particleDataP->unk14.z = 0.0f; } - var_r31->unk40.r = var_r31->unk14.x; - var_r31->unk40.g = var_r31->unk14.y; - var_r31->unk40.b = var_r31->unk14.z; - if (var_r31->unk40.r == 0 && var_r31->unk40.g == 0 && var_r31->unk40.b == 0) { - var_r31->unk2C = 0.0f; + particleDataP->unk40.r = particleDataP->unk14.x; + particleDataP->unk40.g = particleDataP->unk14.y; + particleDataP->unk40.b = particleDataP->unk14.z; + if (particleDataP->unk40.r == 0 && particleDataP->unk40.g == 0 && particleDataP->unk40.b == 0) { + particleDataP->unk2C = 0.0f; } } } diff --git a/src/REL/w01Dll/mg_item.c b/src/REL/w01Dll/mg_item.c index a2c6333e..6a61927a 100755 --- a/src/REL/w01Dll/mg_item.c +++ b/src/REL/w01Dll/mg_item.c @@ -1,6 +1,7 @@ #include "REL/w01Dll.h" #include "game/audio.h" #include "game/data.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" @@ -12,937 +13,949 @@ #include "game/pad.h" #include "game/process.h" #include "game/sprite.h" -#include "game/frand.h" -#include "game/window.h" #include "game/board/audio.h" #include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" #include "game/board/ui.h" #include "game/board/window.h" +#include "game/window.h" #include "dolphin.h" #include "ext_math.h" -static void fn_1_E100(void); -static void fn_1_E154(void); -static void fn_1_E2B8(omObjData *arg0); -static void fn_1_E44C(omObjData *arg0); -static void fn_1_E914(omObjData *arg0); -static void fn_1_ECD4(omObjData *arg0); -static void fn_1_EEA0(omObjData *arg0, u16 *arg1); -static void fn_1_EED8(omObjData *arg0); -static void fn_1_F09C(omObjData *arg0); -static void fn_1_F348(omObjData *arg0); -static void fn_1_F3F8(omObjData *arg0); -static void fn_1_F6E8(omObjData *arg0); -static void fn_1_F890(omObjData *arg0); -static void fn_1_FA1C(omObjData *arg0); -static void fn_1_FABC(omObjData *arg0); -static void fn_1_FB58(void); -static void fn_1_FC3C(omObjData *arg0); -static void fn_1_FCEC(void); -static void fn_1_FD3C(omObjData *arg0); -static void fn_1_FE44(omObjData *arg0); -static void fn_1_FED0(omObjData *arg0); -static s16 fn_1_1001C(u32 arg0); -static void fn_1_101B8(s16 arg0); -static void fn_1_10664(omObjData *arg0); -static void fn_1_10820(omObjData *arg0); -static void fn_1_10AE8(omObjData *arg0); -static float fn_1_10BB0(u32 arg0); -static void fn_1_10CF0(u32 arg0); -static float fn_1_10EB8(Vec *arg0); -static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix); -static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix); +static void RoundItemEnd(void); +static void RoundItemClose(void); +static void RoundItemMainUpdate(omObjData *obj); +static void RoundItemUmaStop(omObjData *obj); +static void RoundItemPlayerJump(omObjData *obj); +static void RoundItemStartWait(omObjData *obj); +static void RoundItemComInputGet(omObjData *obj, u16 *btn); +static void RoundItemInputWait(omObjData *obj); +static void RoundItemStop(omObjData *obj); +static void RoundItemLightFlicker(omObjData *obj); +static void RoundItemUmaJumpWait(omObjData *obj); +static void RoundItemUmaJump(omObjData *obj); +static void RoundItemRotatePlayer(omObjData *obj); +static void RoundItemStreamWait(omObjData *obj); +static void RoundItemWinWait(omObjData *obj); +static void ItemGetWinExec(void); +static void ItemGetShrinkWait(omObjData *obj); +static void ItemGetReturnWinExec(void); +static void RoundItemGameClose(omObjData *obj); +static void RoundItemGameEnd(omObjData *obj); +static void RoundItemItemUpdate(omObjData *obj); +static s16 RoundItemItemGet(u32 umaNo); +static void ItemGetCreate(s16 itemNo); +static void ItemGetObjUpdate(omObjData *obj); +static void ItemGetPlayerMove(omObjData *obj); +static void ItemGetShrink(omObjData *obj); +static float RoundItemUmaRotYGet(u32 umaNo); +static void RoundItemUmaPlayerSet(u32 umaNo); +static float RoundItemAngleGet(Vec *arg0); +static void ItemGetEff1Hook(ModelData *model, ParticleData *particle, Mtx matrix); +static void ItemGetEff2Hook(ModelData *model, ParticleData *particle, Mtx matrix); -static void *lbl_1_bss_818; -static Vec lbl_1_bss_80C; -static omObjData *lbl_1_bss_7FC[4]; -static omObjData *lbl_1_bss_7F8; -static omObjData *lbl_1_bss_7F4; -static omObjData *lbl_1_bss_7F0; -static float lbl_1_bss_7EC; -static float lbl_1_bss_7E8; -static s32 lbl_1_bss_7E4; -static Vec lbl_1_bss_7D8; -static s16 lbl_1_bss_7D6; -static s16 lbl_1_bss_7D4; -static s16 lbl_1_bss_7D2; -static s16 lbl_1_bss_7D0; -static Vec lbl_1_bss_7C4; +static void *itemAnim; +static Vec roundItemPos; +static omObjData *itemObj[4]; +static omObjData *roundItemUmaObj; +static omObjData *roundItemMainObj; +static omObjData *itemGetObj; +static float umaSpeed; +static float borderSpeed; +static s32 roundItemPlayer; +static Vec umaPos; +static s16 seqStartId; +static s16 timerSeqId; +static s16 timerSec; +static s16 timerFrame; +static Vec roundItemPlayerPos; static s32 lbl_1_bss_7C0_pad; -static s32 lbl_1_bss_7BC; -static s32 lbl_1_bss_7B8; -static s16 lbl_1_bss_7B4; +static s32 itemGetMotId; +static s32 jumpMotId; +static s16 umaStopF; static s32 lbl_1_bss_7B0_pad; -static s32 lbl_1_bss_7AC; -static s16 lbl_1_bss_7AA; -static s16 lbl_1_bss_7A8; -static s32 lbl_1_bss_7A4; -static AnimData *lbl_1_bss_7A0; +static s32 itemGetSeNo; +static s16 roundItemStopF; +static s16 umaStopTimer; +static s32 roundItemStreamId; +static AnimData *roundItemEffAnim; -static s32 lbl_1_data_F08[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 109), - DATA_MAKE_NUM(DATADIR_BOARD, 110), - DATA_MAKE_NUM(DATADIR_BOARD, 111), - DATA_MAKE_NUM(DATADIR_BOARD, 112), - DATA_MAKE_NUM(DATADIR_BOARD, 113), - DATA_MAKE_NUM(DATADIR_BOARD, 114), - DATA_MAKE_NUM(DATADIR_BOARD, 115), - DATA_MAKE_NUM(DATADIR_BOARD, 116), - DATA_MAKE_NUM(DATADIR_BOARD, 118), - DATA_MAKE_NUM(DATADIR_BOARD, 119), - DATA_MAKE_NUM(DATADIR_BOARD, 120), - DATA_MAKE_NUM(DATADIR_BOARD, 121), - DATA_MAKE_NUM(DATADIR_BOARD, 122), - DATA_MAKE_NUM(DATADIR_BOARD, 123) +#if VERSION_JP +#define MDL_ID_SHIFT 0 +#else +#define MDL_ID_SHIFT 1 +#endif + +static s32 itemMdlTbl[] = { + DATA_MAKE_NUM(DATADIR_BOARD, 108 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 109 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 110 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 111 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 112 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 113 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 114 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 115 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 117 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 118 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 119 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 120 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 121 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 122 + MDL_ID_SHIFT), }; -static s32 lbl_1_data_F40[8] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 23), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 23), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 23), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23) -}; +static s32 itemGetMotTbl[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23), DATA_MAKE_NUM(DATADIR_PEACHMOT, 23), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23), DATA_MAKE_NUM(DATADIR_WARIOMOT, 23), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 23), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23) }; -static s32 lbl_1_data_F60[8] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 64), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 64), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 64), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 64), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 64), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 64), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 64), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 64) -}; +static s32 jumpMotTbl[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 64), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 64), DATA_MAKE_NUM(DATADIR_PEACHMOT, 64), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 64), DATA_MAKE_NUM(DATADIR_WARIOMOT, 64), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 64), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 64), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 64) }; -void fn_1_D740(s16 *arg0) { - s16 sp10[14]; - s16 sp8[4]; - float temp_f30; - float temp_f29; - float var_f31; - s32 var_r28; - s32 var_r30; +void RoundItemInit(s16 *itemTbl) +{ + s16 itemOrderTbl[14]; + s16 itemMdlId[4]; + float borderTime; + float borderMaxTime; + float itemAngle; + s32 itemOrderNum; + s32 itemNum; s32 i; s32 j; - lbl_1_bss_818 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_W01, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); - BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C); - sp8[0] = BoardModelIDGet(lbl_1_bss_6C4[19]); - BoardModelVisibilitySet(lbl_1_bss_6C4[19], 1); + itemAnim = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_W01, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); + BoardModelPosGet(mapObjMdlId[MAPOBJ_ROUNDITEM], &roundItemPos); + itemMdlId[0] = BoardModelIDGet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM]); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM], 1); for (i = 1; i < 4; i++) { - sp8[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 24)); + itemMdlId[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 24)); } - var_r30 = 0; + itemNum = 0; for (i = 0; i < 4; i++) { - lbl_1_bss_7FC[i] = omAddObjEx(boardObjMan, 0x165, 2, 0, -1, NULL); - if (arg0[i] != -1) { - lbl_1_bss_7FC[var_r30++]->work[1] = arg0[i]; + itemObj[i] = omAddObjEx(boardObjMan, 0x165, 2, 0, -1, NULL); + if (itemTbl[i] != -1) { + itemObj[itemNum++]->work[1] = itemTbl[i]; } } - while (var_r30 != 4) { - var_r28 = 0; + while (itemNum != 4) { + itemOrderNum = 0; for (i = 0; i < 14; i++) { - for (j = 0; j < var_r30; j++) { - if (i == lbl_1_bss_7FC[j]->work[1]) { + for (j = 0; j < itemNum; j++) { + if (i == itemObj[j]->work[1]) { break; } } - if (j == var_r30) { - sp10[var_r28++] = i; + if (j == itemNum) { + itemOrderTbl[itemOrderNum++] = i; } } - lbl_1_bss_7FC[var_r30++]->work[1] = sp10[rand8() % var_r28]; + itemObj[itemNum++]->work[1] = itemOrderTbl[rand8() % itemOrderNum]; } - temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]); - temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]); + borderTime = BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]); + borderMaxTime = BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]); for (i = 0; i < 4; i++) { - lbl_1_bss_7FC[i]->model[0] = sp8[i]; - lbl_1_bss_7FC[i]->model[1] = Hu3DModelCreateFile(lbl_1_data_F08[lbl_1_bss_7FC[i]->work[1]]); - if (lbl_1_bss_7FC[i]->work[1] == 5) { - Hu3DData[lbl_1_bss_7FC[i]->model[1]].unk_F0[1][3] = -50.0f; + itemObj[i]->model[0] = itemMdlId[i]; + itemObj[i]->model[1] = Hu3DModelCreateFile(itemMdlTbl[itemObj[i]->work[1]]); + if (itemObj[i]->work[1] == 5) { + Hu3DData[itemObj[i]->model[1]].unk_F0[1][3] = -50.0f; } - if (lbl_1_bss_7FC[i]->work[1] == 11) { - Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000001); + if (itemObj[i]->work[1] == 11) { + Hu3DModelAttrSet(itemObj[i]->model[1], HU3D_MOTATTR_LOOP); } - if (lbl_1_bss_7FC[i]->work[1] == 4) { - Hu3DMotionSpeedSet(lbl_1_bss_7FC[i]->model[1], 0.0f); + if (itemObj[i]->work[1] == 4) { + Hu3DMotionSpeedSet(itemObj[i]->model[1], 0.0f); } - Hu3DModelAttrReset(sp8[i], 1); - Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 1); - Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000002); - omSetTra(lbl_1_bss_7FC[i], lbl_1_bss_80C.x, lbl_1_bss_80C.y + 66.0f, lbl_1_bss_80C.z); - var_f31 = 90.0f - 90.0f * i + 360.0f * (temp_f30 / temp_f29); - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; + Hu3DModelAttrReset(itemMdlId[i], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(itemObj[i]->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(itemObj[i]->model[1], HU3D_MOTATTR_PAUSE); + omSetTra(itemObj[i], roundItemPos.x, roundItemPos.y + 66.0f, roundItemPos.z); + itemAngle = 90.0f - 90.0f * i + 360.0f * (borderTime / borderMaxTime); + if (itemAngle >= 360.0f) { + itemAngle -= 360.0f; } - if (var_f31 < 0.0f) { - var_f31 += 360.0f; + if (itemAngle < 0.0f) { + itemAngle += 360.0f; } - omSetRot(lbl_1_bss_7FC[i], 0.0f, var_f31, 0.0f); - lbl_1_bss_7FC[i]->work[0] = Hu3DAnimCreate(lbl_1_bss_818, lbl_1_bss_7FC[i]->model[0], "item01"); - Hu3DAnimAttrSet(lbl_1_bss_7FC[i]->work[0], 1); - lbl_1_bss_7FC[i]->work[2] = i; + omSetRot(itemObj[i], 0.0f, itemAngle, 0.0f); + itemObj[i]->work[0] = Hu3DAnimCreate(itemAnim, itemObj[i]->model[0], "item01"); + Hu3DAnimAttrSet(itemObj[i]->work[0], 1); + itemObj[i]->work[2] = i; } for (i = 0; i < 4; i++) { - Hu3DAnmNoSet(lbl_1_bss_7FC[i]->work[0], lbl_1_bss_7FC[i]->work[1]); + Hu3DAnmNoSet(itemObj[i]->work[0], itemObj[i]->work[1]); } } -void fn_1_DD84(void) { +void RoundItemKill(void) +{ s32 i; for (i = 0; i < 4; i++) { if (i != 0) { - Hu3DModelKill(lbl_1_bss_7FC[i]->model[0]); - } else { - BoardModelVisibilitySet(lbl_1_bss_6C4[19], 0); - Hu3DAnimKill(lbl_1_bss_7FC[i]->work[0]); + Hu3DModelKill(itemObj[i]->model[0]); } - Hu3DModelKill(lbl_1_bss_7FC[i]->model[1]); - omDelObjEx(boardObjMan, lbl_1_bss_7FC[i]); + else { + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM], 0); + Hu3DAnimKill(itemObj[i]->work[0]); + } + Hu3DModelKill(itemObj[i]->model[1]); + omDelObjEx(boardObjMan, itemObj[i]); } - if (lbl_1_bss_7A0) { - HuSprAnimKill(lbl_1_bss_7A0); - lbl_1_bss_7A0 = NULL; + if (roundItemEffAnim) { + HuSprAnimKill(roundItemEffAnim); + roundItemEffAnim = NULL; } } -void fn_1_DE94(void) { +void RoundItemEventStart(void) +{ s32 i; - BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C); + BoardModelPosGet(mapObjMdlId[MAPOBJ_ROUNDITEM], &roundItemPos); for (i = 0; i < 4; i++) { - lbl_1_bss_7FC[i]->func = fn_1_FED0; + itemObj[i]->func = RoundItemItemUpdate; } - lbl_1_bss_7F4 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_E2B8); - lbl_1_bss_7F8 = omAddObjEx(boardObjMan, 0x133, 0, 0, -1, fn_1_E44C); - lbl_1_bss_7F8->work[3] = rand8() % 200 + 10; - lbl_1_bss_7E4 = GWSystem.player_curr; - BoardPlayerPosGet(lbl_1_bss_7E4, &lbl_1_bss_7C4); - lbl_1_bss_7EC = 1.0f; - lbl_1_bss_7E8 = 1.0f; - lbl_1_bss_7AA = 0; - lbl_1_bss_7BC = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F40[GWPlayer[lbl_1_bss_7E4].character]); - lbl_1_bss_7B8 = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F60[GWPlayer[lbl_1_bss_7E4].character]); - lbl_1_bss_7A0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0)); - HuSprAnimLock(lbl_1_bss_7A0); - lbl_1_bss_7B4 = 0; + roundItemMainObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, RoundItemMainUpdate); + roundItemUmaObj = omAddObjEx(boardObjMan, 0x133, 0, 0, -1, RoundItemUmaStop); + roundItemUmaObj->work[3] = rand8() % 200 + 10; + roundItemPlayer = GWSystem.player_curr; + BoardPlayerPosGet(roundItemPlayer, &roundItemPlayerPos); + umaSpeed = 1.0f; + borderSpeed = 1.0f; + roundItemStopF = 0; + itemGetMotId = BoardPlayerMotionCreate(roundItemPlayer, itemGetMotTbl[GWPlayer[roundItemPlayer].character]); + jumpMotId = BoardPlayerMotionCreate(roundItemPlayer, jumpMotTbl[GWPlayer[roundItemPlayer].character]); + roundItemEffAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0)); + HuSprAnimLock(roundItemEffAnim); + umaStopF = 0; } -static void fn_1_E100(void) { - lbl_1_bss_7AA = 1; +static void RoundItemEnd(void) +{ + roundItemStopF = 1; BoardMGExit(); HuAudFXPlay(0x40F); - BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004); + BoardModelMotionStart(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP], 0, HU3D_MOTATTR_REV); } -static void fn_1_E154(void) { - fn_1_DD84(); - BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7BC); - BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7B8); - BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0); +static void RoundItemClose(void) +{ + RoundItemKill(); + BoardPlayerMotionKill(roundItemPlayer, itemGetMotId); + BoardPlayerMotionKill(roundItemPlayer, jumpMotId); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], 0); BoardMGDoneFlagSet(0); } -static void fn_1_E2B8(omObjData *arg0) { - if (lbl_1_bss_7AA == 1 && BoardMGDoneFlagGet() == 1) { - fn_1_E154(); - omDelObjEx(HuPrcCurrentGet(), arg0); +static void RoundItemMainUpdate(omObjData *obj) +{ + if (roundItemStopF == 1 && BoardMGDoneFlagGet() == 1) { + RoundItemClose(); + omDelObjEx(HuPrcCurrentGet(), obj); } } -static char *lbl_1_data_F9C[] = { - "uma1", "uma2", "uma3", "uma4" -}; +static char *umaHookTbl[] = { "uma1", "uma2", "uma3", "uma4" }; -static void fn_1_E44C(omObjData *arg0) { - Vec sp18; - Vec spC; - float temp_f27; - float var_f29; - float temp_f28; - float var_f26; - float var_f24; +static void RoundItemUmaStop(omObjData *obj) +{ + Vec playerPos; + Vec objPos; + float umaDist; + float motTime; + float motMaxTime; + float umaMinDist; s32 i; - temp_f28 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]); - var_f29 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]); - if (var_f29 >= temp_f28) { - var_f29 -= temp_f28; + motMaxTime = BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]); + motTime = BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]); + if (motTime >= motMaxTime) { + motTime -= motMaxTime; } - var_f24 = fmod(var_f29, temp_f28 / 4); - if (var_f24 >= temp_f28 / 4 - 30.0f && lbl_1_bss_7B4 == 0) { - lbl_1_bss_7B4 = 1; - lbl_1_bss_7A8 = 90; + if (fmodf(motTime, motMaxTime / 4) >= motMaxTime / 4 - 30.0f && umaStopF == 0) { + umaStopF = 1; + umaStopTimer = 90; } - if (lbl_1_bss_7B4 != 0) { - lbl_1_bss_7EC *= 0.97f; - lbl_1_bss_7A8--; + if (umaStopF != 0) { + umaSpeed *= 0.97f; + umaStopTimer--; } - if (lbl_1_bss_7EC != 1.0f && lbl_1_bss_7A8 == 0) { - lbl_1_bss_7EC = 0.0f; + if (umaSpeed != 1.0f && umaStopTimer == 0) { + umaSpeed = 0.0f; BoardAudSeqPause(0, 1, 1000); - BoardPlayerPosGet(lbl_1_bss_7E4, &sp18); - Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[0], &spC); - var_f26 = PSVECSquareDistance(&sp18, &spC); - arg0->work[2] = 0; + BoardPlayerPosGet(roundItemPlayer, &playerPos); + Hu3DModelObjPosGet(BoardModelIDGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]), umaHookTbl[0], &objPos); + umaMinDist = VECSquareDistance(&playerPos, &objPos); + obj->work[2] = 0; for (i = 1; i < 4; i++) { - Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[i], &spC); - temp_f27 = PSVECSquareDistance(&sp18, &spC); - if (temp_f27 < var_f26) { - var_f26 = temp_f27; - arg0->work[2] = i; + Hu3DModelObjPosGet(BoardModelIDGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]), umaHookTbl[i], &objPos); + umaDist = VECSquareDistance(&playerPos, &objPos); + if (umaDist < umaMinDist) { + umaMinDist = umaDist; + obj->work[2] = i; } } - Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0->work[2]], &lbl_1_bss_7D8); - PSVECSubtract(&lbl_1_bss_7D8, &sp18, &spC); - PSVECNormalize(&spC, &spC); - arg0->trans.x = spC.x; - arg0->trans.y = spC.y; - arg0->trans.z = spC.z; - arg0->rot.x = VECDistanceXZ(&lbl_1_bss_7D8, &sp18); - arg0->rot.y = 10.0f; - arg0->rot.z = sp18.y; - arg0->scale.x = 0.0f; - BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0); - arg0->func = fn_1_E914; + Hu3DModelObjPosGet(BoardModelIDGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]), umaHookTbl[obj->work[2]], &umaPos); + VECSubtract(&umaPos, &playerPos, &objPos); + VECNormalize(&objPos, &objPos); + obj->trans.x = objPos.x; + obj->trans.y = objPos.y; + obj->trans.z = objPos.z; + obj->rot.x = VECDistanceXZ(&umaPos, &playerPos); + obj->rot.y = 10.0f; + obj->rot.z = playerPos.y; + obj->scale.x = 0.0f; + BoardPlayerMotionShiftSet(roundItemPlayer, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + obj->func = RoundItemPlayerJump; } - BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA], umaSpeed); } -static void fn_1_E914(omObjData *arg0) { - Vec spC; +static void RoundItemPlayerJump(omObjData *obj) +{ + Vec pos; s32 i; - BoardPlayerPosGet(lbl_1_bss_7E4, &spC); - spC.x += arg0->trans.x * arg0->rot.x / 32.760002f; - spC.z += arg0->trans.z * arg0->rot.x / 32.760002f; - spC.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x; - arg0->scale.x += 1.0f; - if (VECDistanceXZ(&lbl_1_bss_7D8, &spC) < 2.0f) { - spC = lbl_1_bss_7D8; - BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10BB0(arg0->work[2]), 0.0f); - lbl_1_bss_7EC = 0.05f; - lbl_1_bss_7E8 = 0.05f; - BoardModelAttrReset(lbl_1_bss_6C4[18], 0x40000002); - BoardModelAttrSet(lbl_1_bss_6C4[18], 0x40000001); - BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f); + BoardPlayerPosGet(roundItemPlayer, &pos); + pos.x += obj->trans.x * obj->rot.x / 32.760002f; + pos.z += obj->trans.z * obj->rot.x / 32.760002f; + pos.y += obj->rot.y - 0.016666668f * obj->scale.x * obj->scale.x; + obj->scale.x += 1.0f; + if (VECDistanceXZ(&umaPos, &pos) < 2.0f) { + pos = umaPos; + BoardPlayerRotSet(roundItemPlayer, 0.0f, RoundItemUmaRotYGet(obj->work[2]), 0.0f); + umaSpeed = 0.05f; + borderSpeed = 0.05f; + BoardModelAttrReset(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], HU3D_MOTATTR_PAUSE); + BoardModelAttrSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], HU3D_MOTATTR_LOOP); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], 0.0f); for (i = 0; i < 4; i++) { - lbl_1_bss_7FC[i]->func = fn_1_FED0; + itemObj[i]->func = RoundItemItemUpdate; } - BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7B8, 0.0f, 5.0f, 0x40000001); - lbl_1_bss_7D6 = MGSeqStartCreate(); + BoardPlayerMotionShiftSet(roundItemPlayer, jumpMotId, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + seqStartId = MGSeqStartCreate(); BoardMusStart(1, 0xE, 0x7F, 0); - arg0->func = fn_1_ECD4; + obj->func = RoundItemStartWait; } - BoardPlayerPosSetV(lbl_1_bss_7E4, &spC); + BoardPlayerPosSetV(roundItemPlayer, &pos); } -static void fn_1_ECD4(omObjData *arg0) { - lbl_1_bss_7EC *= 1.05f; - lbl_1_bss_7E8 *= 1.05f; - if (lbl_1_bss_7EC > 2.0f) { - lbl_1_bss_7EC = 2.0f; +static void RoundItemStartWait(omObjData *obj) +{ + umaSpeed *= 1.05f; + borderSpeed *= 1.05f; + if (umaSpeed > 2.0f) { + umaSpeed = 2.0f; } - if (lbl_1_bss_7E8 > 4.0f) { - lbl_1_bss_7E8 = 4.0f; + if (borderSpeed > 4.0f) { + borderSpeed = 4.0f; } - if (MGSeqStatGet(lbl_1_bss_7D6) == 0) { - lbl_1_bss_7EC = 2.0f; - lbl_1_bss_7E8 = 4.0f; - arg0->func = fn_1_EED8; - lbl_1_bss_7D2 = 5; - lbl_1_bss_7D0 = 60; - lbl_1_bss_7D4 = MGSeqTimerCreateXY(lbl_1_bss_7D2, 288, 64); + if (MGSeqStatGet(seqStartId) == 0) { + umaSpeed = 2.0f; + borderSpeed = 4.0f; + obj->func = RoundItemInputWait; + timerSec = 5; + timerFrame = REFRESH_RATE; + timerSeqId = MGSeqTimerCreateXY(timerSec, 288, 64); } - BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC); - BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8); - fn_1_10CF0(arg0->work[2]); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA], umaSpeed); + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], borderSpeed); + RoundItemUmaPlayerSet(obj->work[2]); } -static void fn_1_EEA0(omObjData *arg0, u16 *arg1) { - *arg1 = 0; - if (arg0->work[3] != 0) { - arg0->work[3]--; - } else { - *arg1 |= 0x100; +static void RoundItemComInputGet(omObjData *obj, u16 *btn) +{ + *btn = 0; + if (obj->work[3] != 0) { + obj->work[3]--; + } + else { + *btn |= PAD_BUTTON_A; } } -static void fn_1_EED8(omObjData *arg0) { - s16 temp_r29; - u16 var_r30; +static void RoundItemInputWait(omObjData *obj) +{ + s16 padNo; + u16 btn; - fn_1_10CF0(arg0->work[2]); - temp_r29 = GWPlayer[lbl_1_bss_7E4].port; - if ((lbl_1_bss_7D0 -= 1) == 0) { - if ((lbl_1_bss_7D2 -= 1) >= 0) { - MGSeqParamSet(lbl_1_bss_7D4, 1, lbl_1_bss_7D2); + RoundItemUmaPlayerSet(obj->work[2]); + padNo = GWPlayer[roundItemPlayer].port; + if ((--timerFrame) == 0) { + if ((--timerSec) >= 0) { + MGSeqParamSet(timerSeqId, 1, timerSec); } - lbl_1_bss_7D0 = 60; + timerFrame = REFRESH_RATE; } - if (GWPlayerCfg[lbl_1_bss_7E4].iscom == 1) { - fn_1_EEA0(arg0, &var_r30); - } else { - var_r30 = HuPadBtnDown[temp_r29]; + if (GWPlayerCfg[roundItemPlayer].iscom == 1) { + RoundItemComInputGet(obj, &btn); } - if (lbl_1_bss_7D2 < 0 || (var_r30 & 0x100)) { - BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 0.0f); - MGSeqParamSet(lbl_1_bss_7D4, 2, -1); - arg0->scale.y = 0.0f; - arg0->func = fn_1_F09C; + else { + btn = HuPadBtnDown[padNo]; + } + if (timerSec < 0 || (btn & PAD_BUTTON_A)) { + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA], 0.0f); + MGSeqParamSet(timerSeqId, 2, -1); + obj->scale.y = 0.0f; + obj->func = RoundItemStop; } } -static void fn_1_F09C(omObjData *arg0) { - float temp_f31; - float var_f30; +static void RoundItemStop(omObjData *obj) +{ + float maxTime; + float time; - temp_f31 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]); - arg0->scale.y += lbl_1_bss_7E8; - if (arg0->scale.y >= temp_f31 - 150.0f) { - lbl_1_bss_7E8 *= 0.9745f; - if (lbl_1_bss_7E8 < 0.08f) { - lbl_1_bss_7E8 = 0.08f; + maxTime = BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]); + obj->scale.y += borderSpeed; + if (obj->scale.y >= maxTime - 150.0f) { + borderSpeed *= 0.9745f; + if (borderSpeed < 0.08f) { + borderSpeed = 0.08f; } } - BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8); - if (arg0->scale.y >= temp_f31) { - BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f); - var_f30 = arg0->scale.y - temp_f31 + BoardModelMotionTimeGet(lbl_1_bss_6C4[18]); - if (var_f30 > temp_f31) { - var_f30 -= temp_f31; + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], borderSpeed); + if (obj->scale.y >= maxTime) { + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], 0.0f); + time = obj->scale.y - maxTime + BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]); + if (time > maxTime) { + time -= maxTime; } - BoardModelMotionTimeSet(lbl_1_bss_6C4[18], var_f30); - arg0->work[0] = fn_1_1001C(arg0->work[2]); - BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1); - BoardModelPosSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->trans.x, lbl_1_bss_7FC[arg0->work[0]]->trans.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->trans.z); - BoardModelRotSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->rot.x, lbl_1_bss_7FC[arg0->work[0]]->rot.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->rot.z); - arg0->work[1] = 60; + BoardModelMotionTimeSet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER], time); + obj->work[0] = RoundItemItemGet(obj->work[2]); + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], 1); + BoardModelPosSet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], itemObj[obj->work[0]]->trans.x, itemObj[obj->work[0]]->trans.y + 1.0f, + itemObj[obj->work[0]]->trans.z); + BoardModelRotSet( + mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], itemObj[obj->work[0]]->rot.x, itemObj[obj->work[0]]->rot.y + 1.0f, itemObj[obj->work[0]]->rot.z); + obj->work[1] = 60; BoardAudSeqFadeOut(1, 100); - arg0->func = fn_1_F348; + obj->func = RoundItemLightFlicker; HuAudFXPlay(0x40A); } } -static void fn_1_F348(omObjData *arg0) { - if ((arg0->work[1] / 4) & 1) { - BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0); - } else { - BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1); +static void RoundItemLightFlicker(omObjData *obj) +{ + if ((obj->work[1] / 4) & 1) { + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], 0); } - if ((arg0->work[1] -= 1) == 0) { - BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0); - fn_1_101B8(arg0->work[0]); + else { + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], 1); + } + if ((--obj->work[1]) == 0) { + BoardModelVisibilitySet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_LIGHT], 0); + ItemGetCreate(obj->work[0]); HuAudFXPlay(0x310); - arg0->func = fn_1_F3F8; + obj->func = RoundItemUmaJumpWait; } } -static void fn_1_F3F8(omObjData *arg0) { - Vec sp18; - Vec spC; +static void RoundItemUmaJumpWait(omObjData *obj) +{ + Vec playerPos; + Vec dir; - if (lbl_1_bss_7F0->work[0] != 1) { + if (itemGetObj->work[0] != 1) { return; } - BoardPlayerPosGet(lbl_1_bss_7E4, &sp18); - PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC); - PSVECNormalize(&spC, &spC); - arg0->trans.x = spC.x; - arg0->trans.y = spC.y; - arg0->trans.z = spC.z; - arg0->rot.x = VECDistanceXZ(&lbl_1_bss_7C4, &sp18); - arg0->scale.y = 20.0f + 40.0f * (arg0->rot.x / 445.0f); - arg0->rot.y = 0.016666668f * (arg0->scale.y / 2) * (arg0->scale.y / 2); - arg0->rot.z = sp18.y; - arg0->scale.x = 0.0f; - BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0); - PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC); - PSVECNormalize(&spC, &spC); - BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10EB8(&spC), 0.0f); - arg0->func = fn_1_F6E8; + BoardPlayerPosGet(roundItemPlayer, &playerPos); + VECSubtract(&roundItemPlayerPos, &playerPos, &dir); + VECNormalize(&dir, &dir); + obj->trans.x = dir.x; + obj->trans.y = dir.y; + obj->trans.z = dir.z; + obj->rot.x = VECDistanceXZ(&roundItemPlayerPos, &playerPos); + obj->scale.y = 20.0f + 40.0f * (obj->rot.x / 445.0f); + obj->rot.y = 0.016666668f * (obj->scale.y / 2) * (obj->scale.y / 2); + obj->rot.z = playerPos.y; + obj->scale.x = 0.0f; + BoardPlayerMotionShiftSet(roundItemPlayer, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + VECSubtract(&roundItemPlayerPos, &playerPos, &dir); + VECNormalize(&dir, &dir); + BoardPlayerRotSet(roundItemPlayer, 0.0f, RoundItemAngleGet(&dir), 0.0f); + obj->func = RoundItemUmaJump; } -static void fn_1_F6E8(omObjData *arg0) { - Vec sp8; +static void RoundItemUmaJump(omObjData *obj) +{ + Vec pos; - BoardPlayerPosGet(lbl_1_bss_7E4, &sp8); - sp8.x += arg0->trans.x * arg0->rot.x / arg0->scale.y; - sp8.z += arg0->trans.z * arg0->rot.x / arg0->scale.y; - sp8.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x; - arg0->scale.x += 1.0f; - if (sp8.y < lbl_1_bss_80C.y || arg0->scale.x >= arg0->scale.y) { - sp8.y = lbl_1_bss_80C.y; - BoardCameraMotionStart(BoardPlayerModelGet(lbl_1_bss_7E4), NULL, 700.0f, -1.0f); - BoardPlayerMotionStart(lbl_1_bss_7E4, 2, 0x40000001); - arg0->func = fn_1_F890; + BoardPlayerPosGet(roundItemPlayer, &pos); + pos.x += obj->trans.x * obj->rot.x / obj->scale.y; + pos.z += obj->trans.z * obj->rot.x / obj->scale.y; + pos.y += obj->rot.y - 0.016666668f * obj->scale.x * obj->scale.x; + obj->scale.x += 1.0f; + if (pos.y < roundItemPos.y || obj->scale.x >= obj->scale.y) { + pos.y = roundItemPos.y; + BoardCameraMotionStart(BoardPlayerModelGet(roundItemPlayer), NULL, 700.0f, -1.0f); + BoardPlayerMotionStart(roundItemPlayer, 2, HU3D_MOTATTR_LOOP); + obj->func = RoundItemRotatePlayer; } - BoardPlayerPosSetV(lbl_1_bss_7E4, &sp8); + BoardPlayerPosSetV(roundItemPlayer, &pos); } -static void fn_1_F890(omObjData *arg0) { - Vec sp8; +static void RoundItemRotatePlayer(omObjData *obj) +{ + Vec rot; - BoardPlayerRotGet(lbl_1_bss_7E4, &sp8); - if (sp8.y == 0.0f) { - BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0x40000001); - lbl_1_bss_7F0->work[0] = 0; - lbl_1_bss_7F0->func = fn_1_10820; - arg0->func = fn_1_FA1C; - } else if (sp8.y > 180.0f) { - if (360.0f - sp8.y < 3.0f) { - sp8.y = 0.0f; - } else { - sp8.y += 3.0f; + BoardPlayerRotGet(roundItemPlayer, &rot); + if (rot.y == 0.0f) { + BoardPlayerMotionShiftSet(roundItemPlayer, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + itemGetObj->work[0] = 0; + itemGetObj->func = ItemGetPlayerMove; + obj->func = RoundItemStreamWait; + } + else if (rot.y > 180.0f) { + if (360.0f - rot.y < 3.0f) { + rot.y = 0.0f; } - } else { - if (sp8.y < 3.0f) { - sp8.y = 0.0f; - } else { - sp8.y -= 3.0f; + else { + rot.y += 3.0f; } } - BoardPlayerRotSetV(lbl_1_bss_7E4, &sp8); + else { + if (rot.y < 3.0f) { + rot.y = 0.0f; + } + else { + rot.y -= 3.0f; + } + } + BoardPlayerRotSetV(roundItemPlayer, &rot); } -static void fn_1_FA1C(omObjData *arg0) { - if (lbl_1_bss_7F0->work[0] == 1) { - BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7BC, 0.0f, 10.0f, 0); - arg0->work[0] = 30; - lbl_1_bss_7A4 = HuAudSStreamPlay(2); - arg0->func = fn_1_FABC; +static void RoundItemStreamWait(omObjData *obj) +{ + if (itemGetObj->work[0] == 1) { + BoardPlayerMotionShiftSet(roundItemPlayer, itemGetMotId, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + obj->work[0] = 30; + roundItemStreamId = HuAudSStreamPlay(2); + obj->func = RoundItemWinWait; } } -static void fn_1_FABC(omObjData *arg0) { - Process *var_r30; +static void RoundItemWinWait(omObjData *obj) +{ + Process *proc; - if (arg0->work[0] == 0) { - if (HuAudSStreamStatGet(lbl_1_bss_7A4) == 0) { - var_r30 = HuPrcCreate(fn_1_FB58, 0x2004, 0x1000, 0); - var_r30->user_data = arg0; + if (obj->work[0] == 0) { + if (HuAudSStreamStatGet(roundItemStreamId) == 0) { + proc = HuPrcCreate(ItemGetWinExec, 0x2004, 0x1000, 0); + proc->user_data = obj; BoardAudSeqPause(0, 0, 1000); - arg0->func = NULL; + obj->func = NULL; } - } else { - arg0->work[0]--; + } + else { + obj->work[0]--; } } -static void fn_1_FB58(void) { - omObjData *temp_r31; +static void ItemGetWinExec(void) +{ + omObjData *obj; BoardWinCreate(2, MAKE_MESSID(10, 6), 0); - BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_7F0->work[1]), 0); + BoardWinInsertMesSet(MAKE_MESSID(8, itemGetObj->work[1]), 0); BoardWinWait(); BoardWinKill(); - temp_r31 = HuPrcCurrentGet()->user_data; - BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0); - lbl_1_bss_7F0->work[0] = 0; + obj = HuPrcCurrentGet()->user_data; + BoardPlayerMotionShiftSet(roundItemPlayer, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + itemGetObj->work[0] = 0; HuAudFXPlay(0x30D); - HuAudFXFadeOut(lbl_1_bss_7AC, 1000); - lbl_1_bss_7F0->func = fn_1_10AE8; - temp_r31->func = fn_1_FC3C; + HuAudFXFadeOut(itemGetSeNo, 1000); + itemGetObj->func = ItemGetShrink; + obj->func = ItemGetShrinkWait; HuPrcKill(NULL); while (TRUE) { HuPrcVSleep(); } } -static void fn_1_FC3C(omObjData *arg0) { - Process *var_r31; +static void ItemGetShrinkWait(omObjData *obj) +{ + Process *proc; - if (lbl_1_bss_7F0->work[0] == 1) { - BoardPlayerItemAdd(lbl_1_bss_7E4, lbl_1_bss_7F0->work[1]); - omVibrate(lbl_1_bss_7E4, 12, 6, 6); - var_r31 = HuPrcCreate(fn_1_FCEC, 0x2004, 0x1000, 0); - var_r31->user_data = arg0; - arg0->func = NULL; + if (itemGetObj->work[0] == 1) { + BoardPlayerItemAdd(roundItemPlayer, itemGetObj->work[1]); + omVibrate(roundItemPlayer, 12, 6, 6); + proc = HuPrcCreate(ItemGetReturnWinExec, 0x2004, 0x1000, 0); + proc->user_data = obj; + obj->func = NULL; } } -static void fn_1_FCEC(void) { - omObjData *var_r31; +static void ItemGetReturnWinExec(void) +{ + omObjData *obj; BoardWinCreate(2, MAKE_MESSID(10, 7), 0); BoardWinWait(); BoardWinKill(); - var_r31 = HuPrcCurrentGet()->user_data; - var_r31->func = fn_1_FD3C; + obj = HuPrcCurrentGet()->user_data; + obj->func = RoundItemGameClose; HuPrcKill(NULL); while (TRUE) { HuPrcVSleep(); } } -static void fn_1_FD3C(omObjData *arg0) { +static void RoundItemGameClose(omObjData *obj) +{ BoardStatusShowSetAll(1); - BoardCameraTargetModelSet(lbl_1_bss_6C4[21]); + BoardCameraTargetModelSet(mapObjMdlId[MAPOBJ_ROUNDITEM_ITEM_UP]); BoardCameraOffsetSet(0.0f, 0.0f, 0.0f); BoardCameraXRotZoomSet(1200.0f, -45.0f); - BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 1.0f); - Hu3DModelKill(lbl_1_bss_7F0->model[0]); - Hu3DModelKill(lbl_1_bss_7F0->model[1]); - Hu3DModelKill(lbl_1_bss_7F0->model[2]); - omDelObjEx(HuPrcCurrentGet(), lbl_1_bss_7F0); - arg0->func = fn_1_FE44; + BoardModelMotionSpeedSet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA], 1.0f); + Hu3DModelKill(itemGetObj->model[0]); + Hu3DModelKill(itemGetObj->model[1]); + Hu3DModelKill(itemGetObj->model[2]); + omDelObjEx(HuPrcCurrentGet(), itemGetObj); + obj->func = RoundItemGameEnd; } -static void fn_1_FE44(omObjData *arg0) { - if (BoardStatusStopCheck(lbl_1_bss_7E4) && BoardCameraMotionIsDone()) { - lbl_1_bss_7AA = 1; - BoardMGExit(); - HuAudFXPlay(0x40F); - BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004); - arg0->func = NULL; +static void RoundItemGameEnd(omObjData *obj) +{ + if (BoardStatusStopCheck(roundItemPlayer) && BoardCameraMotionIsDone()) { + RoundItemEnd(); + obj->func = NULL; } } -static void fn_1_FED0(omObjData *arg0) { - float temp_f30; - float var_f31; - float var_f29; +static void RoundItemItemUpdate(omObjData *obj) +{ + float time; + float rotY; + float maxTime; - temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]); - var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]); - var_f31 = 90.0f - 90.0f * arg0->work[2] + 360.0f * (temp_f30 / var_f29); - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; + time = BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]); + maxTime = BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]); + rotY = 90.0f - 90.0f * obj->work[2] + 360.0f * (time / maxTime); + if (rotY >= 360.0f) { + rotY -= 360.0f; } - if (var_f31 < 0.0f) { - var_f31 += 360.0f; + if (rotY < 0.0f) { + rotY += 360.0f; } - omSetRot(arg0, 0.0f, var_f31, 0.0f); + omSetRot(obj, 0.0f, rotY, 0.0f); } -static s16 fn_1_1001C(u32 arg0) { - float var_f29; +static s16 RoundItemItemGet(u32 umaNo) +{ + float umaMaxTime; + float umaAngle; + float borderAngle; + float angle; + float umaTime; + + borderAngle = 360.0f - 360.0f * (BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]) / BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER])); + umaTime = BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]); + umaMaxTime = BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]); + umaTime = umaTime - (umaMaxTime / 4) * umaNo; + if (umaTime < 0.0f) { + umaTime += umaMaxTime; + } + umaAngle = 360.0f * (umaTime / umaMaxTime); + angle = umaAngle - borderAngle; + if (angle < 0.0f) { + angle += 360.0f; + } + angle /= 90.0f; + return angle; +} + +static void ItemGetCreate(s16 itemNo) +{ + omObjData *obj; + float *data; + float borderAngle; + float posX; + float posY; + float posZ; + float angle; + + obj = itemGetObj = omAddObjEx(boardObjMan, 0x165, 3, 0, -1, ItemGetObjUpdate); + obj->model[0] = itemObj[itemNo]->model[1]; + Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); + itemGetObj->work[1] = itemObj[itemNo]->work[1]; + itemGetObj->data = HuMemDirectMallocNum(HEAP_SYSTEM, 3 * sizeof(float), MEMORY_DEFAULT_NUM); + data = itemGetObj->data; + omSetRot(obj, 0.0f, 0.0f, 0.0f); + omSetSca(obj, 0.0f, 0.0f, 0.0f); + borderAngle = 360.0f - 360.0f * (BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER]) / BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_BORDER])); + angle = 45.0f + borderAngle + 90.0f * itemNo; + if (angle >= 360.0f) { + angle -= 360.0f; + } + posX = roundItemPos.x - 100.0 * cosd(angle); + posZ = roundItemPos.z - 100.0 * sind(angle); + posY = roundItemPos.y + 66.0f + 1.0f; + omSetTra(obj, posX, posY, posZ); + obj->work[0] = 0; + data[0] = 0.1f; + data[2] = 20.0f; + data[1] = 0.0f; + obj->model[1] = Hu3DParticleCreate(roundItemEffAnim, 200); + obj->model[2] = Hu3DParticleCreate(roundItemEffAnim, 100); + Hu3DParticleHookSet(obj->model[1], ItemGetEff1Hook); + Hu3DParticleHookSet(obj->model[2], ItemGetEff2Hook); + Hu3DParticleColSet(obj->model[1], 0xFF, 0xFF, 0); + Hu3DParticleColSet(obj->model[2], 0xFF, 0xFF, 0); + Hu3DModelPosSet(obj->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(obj->model[2], posX, posY, posZ); + Hu3DParticleBlendModeSet(obj->model[1], 1); + Hu3DParticleBlendModeSet(obj->model[2], 1); + Hu3DModelLayerSet(obj->model[1], 3); + Hu3DModelLayerSet(obj->model[2], 3); + itemGetSeNo = HuAudFXPlay(0x35F); +} + +static void ItemGetObjUpdate(omObjData *obj) +{ + float *data; + float scale; + + data = obj->data; + scale = data[0]; + if (obj->work[0] == 0) { + if (scale > 1.0f) { + scale = 1.0f; + } + else { + data[0] += 0.025f; + } + obj->trans.y += data[2]; + data[2] -= 1.0f; + if (data[2] < 0.0f && obj->trans.y < roundItemPos.y + 66.0f + 1.0f + 90.0f) { + obj->work[0] = 1; + } + omSetSca(obj, scale, scale, scale); + } + else { + obj->trans.y += sind(data[1]); + data[1] += 4.0f; + if (data[1] >= 360.0f) { + data[1] -= 360.0f; + } + } +} + +static void ItemGetPlayerMove(omObjData *obj) +{ + Vec playerPos; + Vec objPos; + Vec dir; float var_f28; - float temp_f27; - float temp_f26; - float var_f31; - float var_f30; + float *data; - temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]); - temp_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26); - var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]); - var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]); - var_f30 = var_f30 - (var_f29 / 4) * arg0; - if (var_f30 < 0.0f) { - var_f30 += var_f29; - } - var_f28 = 360.0f * (var_f30 / var_f29); - var_f31 = var_f28 - temp_f27; - if (var_f31 < 0.0f) { - var_f31 += 360.0f; - } - var_f31 /= 90.0f; - return var_f31; -} - -static void fn_1_101B8(s16 arg0) { - omObjData *var_r31; - float *var_r30; - float var_f27; - float temp_f26; - float temp_f30; - float temp_f29; - float temp_f28; - float var_f31; - - var_r31 = lbl_1_bss_7F0 = omAddObjEx(boardObjMan, 0x165, 3, 0, -1, fn_1_10664); - var_r31->model[0] = lbl_1_bss_7FC[arg0]->model[1]; - Hu3DModelAttrReset(var_r31->model[0], 1); - lbl_1_bss_7F0->work[1] = lbl_1_bss_7FC[arg0]->work[1]; - lbl_1_bss_7F0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 3 * sizeof(float), MEMORY_DEFAULT_NUM); - var_r30 = lbl_1_bss_7F0->data; - omSetRot(var_r31, 0.0f, 0.0f, 0.0f); - omSetSca(var_r31, 0.0f, 0.0f, 0.0f); - temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]); - var_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26); - var_f31 = 45.0f + var_f27 + 90.0f * arg0; - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; - } - temp_f30 = lbl_1_bss_80C.x - 100.0 * cosd(var_f31); - temp_f28 = lbl_1_bss_80C.z - 100.0 * sind(var_f31); - temp_f29 = lbl_1_bss_80C.y + 66.0f + 1.0f; - omSetTra(var_r31, temp_f30, temp_f29, temp_f28); - var_r31->work[0] = 0; - var_r30[0] = 0.1f; - var_r30[2] = 20.0f; - var_r30[1] = 0.0f; - var_r31->model[1] = Hu3DParticleCreate(lbl_1_bss_7A0, 200); - var_r31->model[2] = Hu3DParticleCreate(lbl_1_bss_7A0, 100); - Hu3DParticleHookSet(var_r31->model[1], fn_1_11064); - Hu3DParticleHookSet(var_r31->model[2], fn_1_11484); - Hu3DParticleColSet(var_r31->model[1], 0xFF, 0xFF, 0); - Hu3DParticleColSet(var_r31->model[2], 0xFF, 0xFF, 0); - Hu3DModelPosSet(var_r31->model[1], 0.0f, 0.0f, 0.0f); - Hu3DModelPosSet(var_r31->model[2], temp_f30, temp_f29, temp_f28); - Hu3DParticleBlendModeSet(var_r31->model[1], 1); - Hu3DParticleBlendModeSet(var_r31->model[2], 1); - Hu3DModelLayerSet(var_r31->model[1], 3); - Hu3DModelLayerSet(var_r31->model[2], 3); - lbl_1_bss_7AC = HuAudFXPlay(0x35F); -} - -static void fn_1_10664(omObjData *arg0) { - float *temp_r31; - float var_f31; - - temp_r31 = arg0->data; - var_f31 = temp_r31[0]; - if (arg0->work[0] == 0) { - if (var_f31 > 1.0f) { - var_f31 = 1.0f; - } else { - temp_r31[0] += 0.025f; - } - arg0->trans.y += temp_r31[2]; - temp_r31[2] -= 1.0f; - if (temp_r31[2] < 0.0f && arg0->trans.y < lbl_1_bss_80C.y + 66.0f + 1.0f + 90.0f) { - arg0->work[0] = 1; - } - omSetSca(arg0, var_f31, var_f31, var_f31); - } else { - arg0->trans.y += sind(temp_r31[1]); - temp_r31[1] += 4.0f; - if (temp_r31[1] >= 360.0f) { - temp_r31[1] -= 360.0f; - } - } -} - -static void fn_1_10820(omObjData *arg0) { - Vec sp24; - Vec sp18; - Vec spC; - float var_f28; - float *temp_r30; - - temp_r30 = arg0->data; - if (arg0->work[0] == 0) { - BoardPlayerPosGet(lbl_1_bss_7E4, &sp24); - sp18.x = arg0->trans.x; - sp18.y = 0.0f; - sp18.z = arg0->trans.z; - sp24.y = 0.0f; - PSVECSubtract(&sp24, &sp18, &spC); - PSVECNormalize(&spC, &spC); - var_f28 = VECDistanceXZ(&sp24, &sp18); + data = obj->data; + if (obj->work[0] == 0) { + BoardPlayerPosGet(roundItemPlayer, &playerPos); + objPos.x = obj->trans.x; + objPos.y = 0.0f; + objPos.z = obj->trans.z; + playerPos.y = 0.0f; + VECSubtract(&playerPos, &objPos, &dir); + VECNormalize(&dir, &dir); + var_f28 = VECDistanceXZ(&playerPos, &objPos); if (var_f28 < 8.0f) { - arg0->trans.x = sp24.x; - arg0->trans.z = sp24.z; - arg0->work[0] = 1; - } else { - arg0->trans.x += 8.0f * spC.x; - arg0->trans.z += 8.0f * spC.z; + obj->trans.x = playerPos.x; + obj->trans.z = playerPos.z; + obj->work[0] = 1; + } + else { + obj->trans.x += 8.0f * dir.x; + obj->trans.z += 8.0f * dir.z; } } - arg0->trans.y += sind(temp_r30[1]); - temp_r30[1] += 4.0f; - if (temp_r30[1] >= 360.0f) { - temp_r30[1] -= 360.0f; + obj->trans.y += sind(data[1]); + data[1] += 4.0f; + if (data[1] >= 360.0f) { + data[1] -= 360.0f; } } -static void fn_1_10AE8(omObjData *arg0) { - float *temp_r31; +static void ItemGetShrink(omObjData *obj) +{ + float *data; - temp_r31 = arg0->data; - if (arg0->work[0] == 0) { - temp_r31[0] -= 0.016666668f; - if (temp_r31[0] <= 0.0f) { - temp_r31[0] = 0.0f; - arg0->work[0] = 1; - HuAudFXStop(lbl_1_bss_7AC); + data = obj->data; + if (obj->work[0] == 0) { + data[0] -= 0.016666668f; + if (data[0] <= 0.0f) { + data[0] = 0.0f; + obj->work[0] = 1; + HuAudFXStop(itemGetSeNo); } - arg0->trans.y -= 2.1666667f; + obj->trans.y -= 2.1666667f; } - omSetSca(arg0, temp_r31[0], temp_r31[0], temp_r31[0]); + omSetSca(obj, data[0], data[0], data[0]); } -static float fn_1_10BB0(u32 arg0) { - float var_f30; - float temp_f29; - float var_f31; +static float RoundItemUmaRotYGet(u32 umaNo) +{ + float time; + float maxTime; + float rotY; - var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]); - temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]); - var_f30 = var_f30 - (temp_f29 / 4) * arg0; - if (var_f30 < 0.0f) { - var_f30 += temp_f29; + time = BoardModelMotionTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]); + maxTime = BoardModelMotionMaxTimeGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]); + time = time - (maxTime / 4) * umaNo; + if (time < 0.0f) { + time += maxTime; } - var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29); - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; + rotY = 180.0f + -360.0f * (time / maxTime); + if (rotY >= 360.0f) { + rotY -= 360.0f; } - if (var_f31 < 0.0f) { - var_f31 += 360.0f; + if (rotY < 0.0f) { + rotY += 360.0f; } - return var_f31; + return rotY; } -static void fn_1_10CF0(u32 arg0) { - float var_f30; - float temp_f29; - float var_f31; - float var_f28; - - Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0], &lbl_1_bss_7D8); - BoardPlayerPosSetV(lbl_1_bss_7E4, &lbl_1_bss_7D8); - var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]); - temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]); - var_f30 = var_f30 - (temp_f29 / 4) * arg0; - if (var_f30 < 0.0f) { - var_f30 += temp_f29; - } - var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29); - if (var_f31 >= 360.0f) { - var_f31 -= 360.0f; - } - if (var_f31 < 0.0f) { - var_f31 += 360.0f; - } - var_f28 = var_f31; - BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, var_f28, 0.0f); +static void RoundItemUmaPlayerSet(u32 umaNo) +{ + Hu3DModelObjPosGet(BoardModelIDGet(mapObjMdlId[MAPOBJ_ROUNDITEM_UMA]), umaHookTbl[umaNo], &umaPos); + BoardPlayerPosSetV(roundItemPlayer, &umaPos); + BoardPlayerRotSet(roundItemPlayer, 0.0f, RoundItemUmaRotYGet(umaNo), 0.0f); } -static float fn_1_10EB8(Vec *arg0) { - float var_f31; +static float RoundItemAngleGet(Vec *dir) +{ + float angle; - if (arg0->x || arg0->z) { - if (arg0->x == 0.0f) { - if (arg0->z > 0.0f) { + if (dir->x || dir->z) { + if (dir->x == 0.0f) { + if (dir->z > 0.0f) { return 0.0f; - } else { + } + else { return 180.0f; } } - if (arg0->z == 0.0f) { - if (arg0->x > 0.0f) { + if (dir->z == 0.0f) { + if (dir->x > 0.0f) { return 90.0f; - } else { + } + else { return 270.0f; } } - var_f31 = atan2d(arg0->z, arg0->x); - if (arg0->z < 0.0f) { - var_f31 = 90.0f - var_f31; - } else { - var_f31 = 90.0f - var_f31; - if (var_f31 < 0.0f) { - var_f31 += 360.0f; + angle = atan2d(dir->z, dir->x); + if (dir->z < 0.0f) { + angle = 90.0f - angle; + } + else { + angle = 90.0f - angle; + if (angle < 0.0f) { + angle += 360.0f; } } - return var_f31; + return angle; } return -1.0f; } -static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *var_r31; - float temp_f30; - float temp_f29; - float temp_f31; - s32 var_r28; +static void ItemGetEff1Hook(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *particleDataP; + float angle; + float radius; + float radiusBase; + s32 j; s32 i; if (particle->unk_34 == 0) { - var_r31 = particle->unk_48; - for (i = 0; i < particle->unk_30; i++, var_r31++) { - var_r31->unk40.a = 0; - var_r31->unk2C = 0.0f; + particleDataP = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, particleDataP++) { + particleDataP->unk40.a = 0; + particleDataP->unk2C = 0.0f; } particle->unk_00 = 0; } - temp_f31 = lbl_1_bss_7F0->scale.x; + radiusBase = itemGetObj->scale.x; for (i = 0; i < 30; i++) { - var_r31 = particle->unk_48; - for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { - if (var_r31->unk2C == 0.0f) { + particleDataP = particle->unk_48; + for (j = 0; j < particle->unk_30; j++, particleDataP++) { + if (particleDataP->unk2C == 0.0f) { break; } } - if (var_r28 != particle->unk_30) { - temp_f30 = 0.003921569f * frand8() * 360.0f; - temp_f29 = 0.003921569f * frand8() * 70.0f * temp_f31; - var_r31->unk34.x = lbl_1_bss_7F0->trans.x + temp_f29 * sind(temp_f30); - var_r31->unk34.z = lbl_1_bss_7F0->trans.z + temp_f29 * cosd(temp_f30); - var_r31->unk34.y = lbl_1_bss_7F0->trans.y + temp_f31 * (-30.0f + 0.003921569f * frand8() * 60.0f); - var_r31->unk08.x = 0.5f + 0.003921569f * frand8() * 3.0f; - var_r31->unk08.y = 0.3f + 0.003921569f * frand8() * 2.0f; - var_r31->unk40.a = 0xB4; - var_r31->unk2C = 15.0f * temp_f31; + if (j != particle->unk_30) { + angle = 0.003921569f * frand8() * 360.0f; + radius = 0.003921569f * frand8() * 70.0f * radiusBase; + particleDataP->unk34.x = itemGetObj->trans.x + radius * sind(angle); + particleDataP->unk34.z = itemGetObj->trans.z + radius * cosd(angle); + particleDataP->unk34.y = itemGetObj->trans.y + radiusBase * (-30.0f + 0.003921569f * frand8() * 60.0f); + particleDataP->unk08.x = 0.5f + 0.003921569f * frand8() * 3.0f; + particleDataP->unk08.y = 0.3f + 0.003921569f * frand8() * 2.0f; + particleDataP->unk40.a = 0xB4; + particleDataP->unk2C = 15.0f * radiusBase; } } - var_r31 = particle->unk_48; - for (i = 0; i < particle->unk_30; i++, var_r31++) { - if (var_r31->unk2C != 0.0f) { - var_r31->unk34.y -= var_r31->unk08.x; - var_r31->unk2C -= var_r31->unk08.y; - if (var_r31->unk2C <= 0.0f) { - var_r31->unk2C = 0.0f; + particleDataP = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, particleDataP++) { + if (particleDataP->unk2C != 0.0f) { + particleDataP->unk34.y -= particleDataP->unk08.x; + particleDataP->unk2C -= particleDataP->unk08.y; + if (particleDataP->unk2C <= 0.0f) { + particleDataP->unk2C = 0.0f; } } } } -static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01 *var_r31; - float temp_f29; - float temp_f30; - float temp_f31; - s32 var_r28; - s32 var_r29; +static void ItemGetEff2Hook(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *particleDataP; + float angle2; + float angle; + float radius; + s32 j; + s32 i; if (particle->unk_34 == 0) { - var_r31 = particle->unk_48; - for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { - var_r31->unk40.a = 0; - var_r31->unk2C = 0.0f; + particleDataP = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, particleDataP++) { + particleDataP->unk40.a = 0; + particleDataP->unk2C = 0.0f; } particle->unk_00 = 0; } if (particle->unk_00 == 0) { - var_r31 = particle->unk_48; - for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { - temp_f30 = 0.003921569f * frand8() * 360.0f; - temp_f31 = 0.003921569f * frand8() * 50.0f; - var_r31->unk08.x = temp_f31 * cosd(temp_f30); - var_r31->unk08.y = 2.0f + 0.003921569f * frand8() * 4.0f; - var_r31->unk08.z = temp_f31 * sind(temp_f30); - temp_f29 = 60.0f + 20.0f * frand8() * 0.003921569f; - temp_f31 = 4.0f + 5.0f * frand8() * 0.003921569f; - var_r31->unk14.x = temp_f31 * sind(temp_f30) * cosd(temp_f29); - var_r31->unk14.y = temp_f31 * sind(temp_f29); - var_r31->unk14.z = temp_f31 * cosd(temp_f30) * cosd(temp_f29); - var_r31->unk20 = 1.0f; - var_r31->unk40.a = 0xB4; - var_r31->unk2C = 9.0f + 0.003921569f * frand8() * 4.0f; + particleDataP = particle->unk_48; + for (j = 0; j < particle->unk_30; j++, particleDataP++) { + angle = 0.003921569f * frand8() * 360.0f; + radius = 0.003921569f * frand8() * 50.0f; + particleDataP->unk08.x = radius * cosd(angle); + particleDataP->unk08.y = 2.0f + 0.003921569f * frand8() * 4.0f; + particleDataP->unk08.z = radius * sind(angle); + angle2 = 60.0f + 20.0f * frand8() * 0.003921569f; + radius = 4.0f + 5.0f * frand8() * 0.003921569f; + particleDataP->unk14.x = radius * sind(angle) * cosd(angle2); + particleDataP->unk14.y = radius * sind(angle2); + particleDataP->unk14.z = radius * cosd(angle) * cosd(angle2); + particleDataP->unk20 = 1.0f; + particleDataP->unk40.a = 0xB4; + particleDataP->unk2C = 9.0f + 0.003921569f * frand8() * 4.0f; } particle->unk_00 = 1; } - var_r31 = particle->unk_48; - for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { - if (var_r31->unk2C != 0.0f) { - var_r31->unk34.x = var_r31->unk08.x + var_r31->unk14.x * var_r31->unk20; - var_r31->unk34.z = var_r31->unk08.z + var_r31->unk14.z * var_r31->unk20; - var_r31->unk34.y = var_r31->unk08.y + var_r31->unk14.y * var_r31->unk20 - 0.2f * var_r31->unk20 * var_r31->unk20; - var_r31->unk2C -= 0.25f; - var_r31->unk20 += 1.0f; - if (var_r31->unk2C <= 0.0f) { - var_r31->unk2C = 0.0f; + particleDataP = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, particleDataP++) { + if (particleDataP->unk2C != 0.0f) { + particleDataP->unk34.x = particleDataP->unk08.x + particleDataP->unk14.x * particleDataP->unk20; + particleDataP->unk34.z = particleDataP->unk08.z + particleDataP->unk14.z * particleDataP->unk20; + particleDataP->unk34.y = particleDataP->unk08.y + particleDataP->unk14.y * particleDataP->unk20 - 0.2f * particleDataP->unk20 * particleDataP->unk20; + particleDataP->unk2C -= 0.25f; + particleDataP->unk20 += 1.0f; + if (particleDataP->unk2C <= 0.0f) { + particleDataP->unk2C = 0.0f; } } } diff --git a/src/REL/w02Dll/gamble.c b/src/REL/w02Dll/gamble.c index 92fa2ce9..42804c58 100644 --- a/src/REL/w02Dll/gamble.c +++ b/src/REL/w02Dll/gamble.c @@ -17,16 +17,16 @@ void fn_1_2D04(void) m02GenDice spEC; m02GenDice sp4C; s32 sp24[10] = { - 0x0076001C, - 0x0076001D, - 0x0076001E, - 0x0076001F, - 0x00760020, - 0x00760021, - 0x00760022, - 0x00760023, - 0x00760024, - 0x00760025 + DATA_MAKE_NUM(DATADIR_W02, 0x1C), + DATA_MAKE_NUM(DATADIR_W02, 0x1D), + DATA_MAKE_NUM(DATADIR_W02, 0x1E), + DATA_MAKE_NUM(DATADIR_W02, 0x1F), + DATA_MAKE_NUM(DATADIR_W02, 0x20), + DATA_MAKE_NUM(DATADIR_W02, 0x21), + DATA_MAKE_NUM(DATADIR_W02, 0x22), + DATA_MAKE_NUM(DATADIR_W02, 0x23), + DATA_MAKE_NUM(DATADIR_W02, 0x24), + DATA_MAKE_NUM(DATADIR_W02, 0x25) }; Vec sp18; Vec spC; @@ -43,7 +43,7 @@ void fn_1_2D04(void) OSReport("gamble start %d\n", temp_r31); sp8 = BoardSpaceGet(0, GWPlayer[temp_r31].space_curr); BoardRollDispSet(0); - temp_r28 = BoardModelCreate(0x76000F, NULL, 0); + temp_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x0F), NULL, 0); BoardModelVisibilitySet(temp_r28, 0); switch(lbl_1_bss_54) { case 0: @@ -78,9 +78,9 @@ void fn_1_2D04(void) BoardModelHookReset(temp_r30); BoardModelPosGet(temp_r30, &sp18); BoardModelPosSetV(lbl_1_data_286, &sp18); - fn_1_121C(0x13000A); + fn_1_121C(MAKE_MESSID(0x13, 0x0A)); spEC.unk00 = 1; - spEC.unk04 = 0x76001B; + spEC.unk04 = DATA_MAKE_NUM(DATADIR_W02, 0x1B); spEC.unk08 = sp24; spEC.unk0C = sp18; spEC.unk18 = 1; @@ -140,9 +140,9 @@ void fn_1_2D04(void) temp_r27 = spEC.unk94; if(temp_r27 == 10) { HuAudPlayerVoicePlay(temp_r31, 302); - fn_1_121C(0x130010); + fn_1_121C(MAKE_MESSID(0x13, 0x10)); } else { - fn_1_121C(0x13000C); + fn_1_121C(MAKE_MESSID(0x13, 0x0C)); } BoardPlayerMotBlendSet(temp_r31, 0, 15); while(!BoardPlayerMotBlendCheck(temp_r31)) { @@ -189,10 +189,10 @@ void fn_1_2D04(void) HuPrcVSleep(); } if(sp4C.unk94 > temp_r27) { - fn_1_121C(0x13000D); + fn_1_121C(MAKE_MESSID(0x13, 0x0D)); } else { HuAudPlayerVoicePlay(temp_r31, 302); - fn_1_121C(0x13000F); + fn_1_121C(MAKE_MESSID(0x13, 0x0F)); } } else { sp4C.unk94 = 0; @@ -214,11 +214,11 @@ void fn_1_2D04(void) HuAudFXPlay(7); HuPrcSleep(6); } - fn_1_121C(0x13000E); + fn_1_121C(MAKE_MESSID(0x13, 0x0E)); } else { temp_r26 = GWPlayer[temp_r31].space_curr; BoardCameraTargetSpaceSet(temp_r26); - BoardPlayerMotionShiftSet(temp_r31, 6, 0, 5, 0x40000001); + BoardPlayerMotionShiftSet(temp_r31, 6, 0, 5, HU3D_MOTATTR_LOOP); HuPrcSleep(60); HuPrcSleep(30); BoardModelPosSetV(temp_r28, &spC); @@ -320,4 +320,4 @@ void fn_1_394C(s32 arg0) { while (lbl_1_bss_50) { HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/REL/w02Dll/gendice.c b/src/REL/w02Dll/gendice.c index 7562a53b..eb264bc3 100644 --- a/src/REL/w02Dll/gendice.c +++ b/src/REL/w02Dll/gendice.c @@ -3,20 +3,20 @@ typedef struct { union { -/* 0x00 */ struct { - u8 unk7 : 1; - u8 unk6 : 1; - u8 unk3 : 3; - u8 unk1 : 2; - u8 unk0 : 1; + /* 0x00 */ struct { + u8 unk7 : 1; + u8 unk6 : 1; + u8 unk3 : 3; + u8 unk1 : 2; + u8 unk0 : 1; + }; + u8 unk00; }; - u8 unk00; - }; -/* 0x01 */ u8 unk01; -/* 0x02 */ u8 unk02; -/* 0x03 */ u8 unk03; -/* 0x04 */ s16 unk04; -/* 0x06 */ s16 unk06; + /* 0x01 */ u8 unk01; + /* 0x02 */ u8 unk02; + /* 0x03 */ u8 unk03; + /* 0x04 */ s16 unk04; + /* 0x06 */ s16 unk06; } WorkGenDice; /* EXTERN FUNCTIONS */ @@ -24,7 +24,7 @@ void fn_1_13D0(void); void fn_1_1574(m02GenDice *arg0); void fn_1_1794(m02GenDice *arg0); void fn_1_1850(omObjData *object); -void fn_1_1F94(m02GenDice* arg0, s32 arg1); +void fn_1_1F94(m02GenDice *arg0, s32 arg1); void fn_1_2030(m02GenDice *arg0); void fn_1_2100(m02GenDice *arg0, s32 arg1); void fn_1_2220(m02GenDice *arg0); @@ -34,7 +34,8 @@ void fn_1_23B4(m02GenDice *arg0, s32 arg1); void fn_1_272C(m02GenDice *arg0); /* LOCAL FUNCTIONS */ -void fn_1_1254(m02GenDice* arg0) { +void fn_1_1254(m02GenDice *arg0) +{ Vec sp8; s32 i; @@ -61,11 +62,12 @@ void fn_1_1254(m02GenDice* arg0) { } } -void fn_1_13D0(void) { +void fn_1_13D0(void) +{ s32 var_r29; s32 i; s32 var_r30_2; - m02GenDice* temp_r31; + m02GenDice *temp_r31; temp_r31 = HuPrcCurrentGet()->user_data; temp_r31->unk36[0] = temp_r31->unk36[1] = temp_r31->unk36[2] = 0; @@ -74,17 +76,17 @@ void fn_1_13D0(void) { while (temp_r31->unk96 < temp_r31->unk00) { fn_1_1574(temp_r31); fn_1_1794(temp_r31); - while (temp_r31->unk9C == 0) { + while (temp_r31->unk9C == 0) { HuPrcVSleep(); - } - fn_1_2220(temp_r31); - while (temp_r31->unk9C != 0) { + } + fn_1_2220(temp_r31); + while (temp_r31->unk9C != 0) { HuPrcVSleep(); - } - temp_r31->unk96 += 1; + } + temp_r31->unk96 += 1; } - for ( i = 0; i < temp_r31->unk00; i++) { + for (i = 0; i < temp_r31->unk00; i++) { var_r29 += temp_r31->unk36[i]; } OSReport("Dice res: %d\n", var_r29); @@ -92,7 +94,7 @@ void fn_1_13D0(void) { while (fn_1_233C(temp_r31) == 0) { HuPrcVSleep(); } - temp_r31->unk94 = (s16) var_r29; + temp_r31->unk94 = (s16)var_r29; temp_r31->unk28 = 1; if (temp_r31->unk22 != 0) { for (i = 0; i < temp_r31->unk00; i++) { @@ -102,11 +104,12 @@ void fn_1_13D0(void) { HuPrcEnd(); } while (TRUE) { - HuPrcVSleep(); + HuPrcVSleep(); } } -void fn_1_1518(m02GenDice* arg0) { +void fn_1_1518(m02GenDice *arg0) +{ OSReport("m02GenDiceKill\n"); if (arg0->unk2C) { HuPrcKill(arg0->unk2C); @@ -115,12 +118,13 @@ void fn_1_1518(m02GenDice* arg0) { fn_1_272C(arg0); } -void fn_1_1574(m02GenDice* arg0) { +void fn_1_1574(m02GenDice *arg0) +{ Vec sp8; f32 temp_f0; - omObjData* temp_r3; + omObjData *temp_r3; s32 temp_r28; - WorkGenDice* temp_r29; + WorkGenDice *temp_r29; temp_r28 = arg0->unk96; arg0->unk30[temp_r28] = BoardModelCreate(arg0->unk04, NULL, 0); @@ -129,7 +133,7 @@ void fn_1_1574(m02GenDice* arg0) { BoardModelMotionSpeedSet(arg0->unk30[temp_r28], 0); BoardModelMotionTimeSet(arg0->unk30[temp_r28], arg0->unk98); temp_r3 = omAddObjEx(boardObjMan, 0x102, 0U, 0U, -1, fn_1_1850); - temp_r29 = (WorkGenDice*) temp_r3->work; + temp_r29 = (WorkGenDice *)temp_r3->work; temp_r29->unk7 = 0; temp_r29->unk6 = 0; @@ -139,7 +143,7 @@ void fn_1_1574(m02GenDice* arg0) { temp_r29->unk04 = 0; temp_r29->unk01 = 3; temp_r29->unk02 = 0; - temp_r3->unk10 = (u32) arg0; + temp_r3->unk10 = (u32)arg0; arg0->unk3C[temp_r28] = temp_r3; sp8 = arg0->unk0C; sp8.y += (250.0f * arg0->unk24); @@ -153,8 +157,9 @@ void fn_1_1574(m02GenDice* arg0) { HuAudFXPlay(0x302); } -void fn_1_1794(m02GenDice* arg0) { - WorkGenDice* temp_r30; +void fn_1_1794(m02GenDice *arg0) +{ + WorkGenDice *temp_r30; temp_r30 = OM_GET_WORK_PTR(arg0->unk3C[arg0->unk96], WorkGenDice); while (temp_r30->unk3 != 1) { @@ -162,10 +167,10 @@ void fn_1_1794(m02GenDice* arg0) { } } -s32 fn_1_17F4(m02GenDice* arg0) +s32 fn_1_17F4(m02GenDice *arg0) { - WorkGenDice* temp; - if ( arg0->unk96 < 0) { + WorkGenDice *temp; + if (arg0->unk96 < 0) { return 0; } temp = OM_GET_WORK_PTR(arg0->unk3C[arg0->unk96], WorkGenDice); @@ -177,121 +182,126 @@ s32 fn_1_17F4(m02GenDice* arg0) void fn_1_1850(omObjData *object) { - WorkGenDice *temp_r29; - m02GenDice *temp_r27; - s16 temp_r26; - s16 temp_r25; - float temp_f29; - float temp_f28; - float temp_f27; - temp_r27 = (m02GenDice *)object->unk10; - temp_r29 = OM_GET_WORK_PTR(object, WorkGenDice); - if(temp_r29->unk7 || BoardIsKill()) { - fn_1_1F94(temp_r27, temp_r29->unk1); - temp_r27->unk3C[temp_r29->unk1] = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(BoardPauseActiveCheck()) { - return; - } - switch(temp_r29->unk3) { - case 0: - if(temp_r29->unk06 >= 1080) { - temp_r29->unk3 = 1; - object->scale.x = object->scale.y = object->scale.z = 1; - - object->rot.y = temp_r29->unk04 = 0; - } else { - if(!temp_r29->unk04 && temp_r27->unk88[temp_r29->unk1] == -1) { - temp_r27->unk88[temp_r29->unk1] = HuAudFXPlay(768); - } - object->rot.y = temp_r29->unk06%360; - temp_r29->unk06 += 25; - if(temp_r29->unk04 < 180) { - temp_f27 = 0; - temp_f28 = 1; - } else { - temp_f27 = 1; - temp_f28 = 0.5f; - } - object->scale.x = (temp_f28*sind((float)(temp_r29->unk04%180)))+temp_f27; - object->scale.y = object->scale.x; - object->scale.z = object->scale.x; - if(temp_r29->unk04 <= 360) { - if(temp_r29->unk04 < 180) { - temp_r29->unk04 += 6; - } else { - temp_r29->unk04 += 18; - } - if(temp_r29->unk04 > 360) { - temp_r29->unk04 = 360; - } - } - - } - break; - - case 1: - temp_r29->unk04 += 4; - if(temp_r29->unk04 > 360) { - temp_r29->unk04 -= 360; - } - OSs16tof32(&temp_r29->unk04, &temp_f29); - object->trans.y += sind(temp_f29)*0.2f; - break; - - case 2: - temp_r29->unk04++; - if(temp_r29->unk04 >= 8) { - if(temp_r27->unk88[temp_r29->unk1] != -1) { - HuAudFXStop(temp_r27->unk88[temp_r29->unk1]); - temp_r27->unk88[temp_r29->unk1] = -1; - } - HuAudFXPlay(771); - HuAudFXPlay(780); - temp_r29->unk3 = 3; - temp_r29->unk04 = 0; - fn_1_23FC(temp_r27, temp_r27->unk36[temp_r29->unk1]); - fn_1_2100(temp_r27, temp_r29->unk1); - Hu3DParManPosSet(temp_r27->unk48[temp_r29->unk1], object->trans.x, object->trans.y, object->trans.z); - BoardModelVisibilitySet(temp_r27->unk30[temp_r29->unk1], 0); - } else { - OSs16tof32(&temp_r29->unk04, &temp_f29); - if(temp_r29->unk04 < 4) { - object->trans.y += (0.5f*temp_f29)+10.0f; - object->scale.x += (0.1f*sind(4.0f*temp_f29)); - object->scale.y = object->scale.x; - object->scale.z = object->scale.x; - } else { - BoardModelAlphaSet(temp_r27->unk30[temp_r29->unk1], 255-(temp_r29->unk04*32)); - } - object->trans.y += -0.49f*temp_f29*temp_f29; - } - break; - - case 3: - if(++temp_r29->unk04 >= 150) { - temp_r29->unk7 = 1; - } - break; - } - if(!temp_r29->unk6 || temp_r29->unk3 != 3) { - if(temp_r29->unk02++ > temp_r29->unk01) { - temp_r29->unk02 = 0; - temp_r25 = BoardModelMotionTimeGet(temp_r27->unk30[temp_r29->unk1]); - do { - temp_r26 = BoardRandMod(temp_r27->unk1A); - } while(temp_r26 == temp_r25); - BoardModelMotionTimeSet(temp_r27->unk30[temp_r29->unk1], temp_r26+0.5f); - } - } - BoardModelPosSet(temp_r27->unk30[temp_r29->unk1], object->trans.x, object->trans.y, object->trans.z); - BoardModelRotSet(temp_r27->unk30[temp_r29->unk1], object->rot.x, object->rot.y, object->rot.z); - BoardModelScaleSet(temp_r27->unk30[temp_r29->unk1], object->scale.x, object->scale.y, object->scale.z); + WorkGenDice *temp_r29; + m02GenDice *temp_r27; + s16 temp_r26; + s16 temp_r25; + float temp_f29; + float temp_f28; + float temp_f27; + temp_r27 = (m02GenDice *)object->unk10; + temp_r29 = OM_GET_WORK_PTR(object, WorkGenDice); + if (temp_r29->unk7 || BoardIsKill()) { + fn_1_1F94(temp_r27, temp_r29->unk1); + temp_r27->unk3C[temp_r29->unk1] = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if (BoardPauseActiveCheck()) { + return; + } + switch (temp_r29->unk3) { + case 0: + if (temp_r29->unk06 >= 1080) { + temp_r29->unk3 = 1; + object->scale.x = object->scale.y = object->scale.z = 1; + + object->rot.y = temp_r29->unk04 = 0; + } + else { + if (!temp_r29->unk04 && temp_r27->unk88[temp_r29->unk1] == -1) { + temp_r27->unk88[temp_r29->unk1] = HuAudFXPlay(768); + } + object->rot.y = temp_r29->unk06 % 360; + temp_r29->unk06 += 25; + if (temp_r29->unk04 < 180) { + temp_f27 = 0; + temp_f28 = 1; + } + else { + temp_f27 = 1; + temp_f28 = 0.5f; + } + object->scale.x = (temp_f28 * sind((float)(temp_r29->unk04 % 180))) + temp_f27; + object->scale.y = object->scale.x; + object->scale.z = object->scale.x; + if (temp_r29->unk04 <= 360) { + if (temp_r29->unk04 < 180) { + temp_r29->unk04 += 6; + } + else { + temp_r29->unk04 += 18; + } + if (temp_r29->unk04 > 360) { + temp_r29->unk04 = 360; + } + } + } + break; + + case 1: + temp_r29->unk04 += 4; + if (temp_r29->unk04 > 360) { + temp_r29->unk04 -= 360; + } + OSs16tof32(&temp_r29->unk04, &temp_f29); + object->trans.y += sind(temp_f29) * 0.2f; + break; + + case 2: + temp_r29->unk04++; + if (temp_r29->unk04 >= 8) { + if (temp_r27->unk88[temp_r29->unk1] != -1) { + HuAudFXStop(temp_r27->unk88[temp_r29->unk1]); + temp_r27->unk88[temp_r29->unk1] = -1; + } + HuAudFXPlay(771); + HuAudFXPlay(780); + temp_r29->unk3 = 3; + temp_r29->unk04 = 0; + fn_1_23FC(temp_r27, temp_r27->unk36[temp_r29->unk1]); + fn_1_2100(temp_r27, temp_r29->unk1); + Hu3DParManPosSet(temp_r27->unk48[temp_r29->unk1], object->trans.x, object->trans.y, object->trans.z); + BoardModelVisibilitySet(temp_r27->unk30[temp_r29->unk1], 0); + } + else { + OSs16tof32(&temp_r29->unk04, &temp_f29); + if (temp_r29->unk04 < 4) { + object->trans.y += (0.5f * temp_f29) + 10.0f; + object->scale.x += (0.1f * sind(4.0f * temp_f29)); + object->scale.y = object->scale.x; + object->scale.z = object->scale.x; + } + else { + BoardModelAlphaSet(temp_r27->unk30[temp_r29->unk1], 255 - (temp_r29->unk04 * 32)); + } + object->trans.y += -0.49f * temp_f29 * temp_f29; + } + break; + + case 3: + if (++temp_r29->unk04 >= 150) { + temp_r29->unk7 = 1; + } + break; + } + if (!temp_r29->unk6 || temp_r29->unk3 != 3) { + if (temp_r29->unk02++ > temp_r29->unk01) { + temp_r29->unk02 = 0; + temp_r25 = BoardModelMotionTimeGet(temp_r27->unk30[temp_r29->unk1]); + do { + temp_r26 = BoardRandMod(temp_r27->unk1A); + } while (temp_r26 == temp_r25); + BoardModelMotionTimeSet(temp_r27->unk30[temp_r29->unk1], temp_r26 + 0.5f); + } + } + BoardModelPosSet(temp_r27->unk30[temp_r29->unk1], object->trans.x, object->trans.y, object->trans.z); + BoardModelRotSet(temp_r27->unk30[temp_r29->unk1], object->rot.x, object->rot.y, object->rot.z); + BoardModelScaleSet(temp_r27->unk30[temp_r29->unk1], object->scale.x, object->scale.y, object->scale.z); } -void fn_1_1F94(m02GenDice* arg0, s32 arg1) { +void fn_1_1F94(m02GenDice *arg0, s32 arg1) +{ if (arg0->unk30[arg1] != -1) { BoardModelKill(arg0->unk30[arg1]); arg0->unk30[arg1] = -1; @@ -305,157 +315,134 @@ void fn_1_1F94(m02GenDice* arg0, s32 arg1) { void fn_1_2030(m02GenDice *arg0) { - fn_1_1F94(arg0, 0); - fn_1_1F94(arg0, 1); - fn_1_1F94(arg0, 2); + fn_1_1F94(arg0, 0); + fn_1_1F94(arg0, 1); + fn_1_1F94(arg0, 2); } - -HsfanimStruct00 lbl_1_data_2D8 = { - 150, - { 0x00, 0x00 }, // padding? - 50, - 0, - 65.0f, - { 0.0f, -0.195f, 0.0f }, - 100.0f, - 0.99f, - 40.0f, - 0.999f, - 0x0004, - { - 0xFF, 0xFF, 0x20, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xFF, 0x80, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF - }, - { - 0xFF, 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xFF, 0x00 - } -}; +HsfanimStruct00 lbl_1_data_2D8 = { 150, { 0x00, 0x00 }, // padding? + 50, 0, 65.0f, { 0.0f, -0.195f, 0.0f }, 100.0f, 0.99f, 40.0f, 0.999f, 0x0004, + { 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00 } }; void fn_1_2100(m02GenDice *arg0, s32 arg1) { - s16 temp_r29; - AnimData *temp_r28; - void *temp_r27; - temp_r27 = HuDataSelHeapReadNum(0x120001, MEMORY_DEFAULT_NUM, HEAP_DATA); - temp_r28 = HuSprAnimRead(temp_r27); - arg0->unk48[arg1] = Hu3DParManCreate(temp_r28, 100, &lbl_1_data_2D8); - Hu3DParManAttrSet(arg0->unk48[arg1], 0x108); - Hu3DParManRotSet(arg0->unk48[arg1], 0, 0, 0); - Hu3DParManVecSet(arg0->unk48[arg1], 0, 0.4f, 0.2f); - temp_r29 = Hu3DParManModelIDGet(arg0->unk48[arg1]); - Hu3DModelLayerSet(temp_r29, 2); - Hu3DParticleBlendModeSet(temp_r29, 0); + s16 temp_r29; + AnimData *temp_r28; + void *temp_r27; + temp_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x01), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r28 = HuSprAnimRead(temp_r27); + arg0->unk48[arg1] = Hu3DParManCreate(temp_r28, 100, &lbl_1_data_2D8); + Hu3DParManAttrSet(arg0->unk48[arg1], 0x108); + Hu3DParManRotSet(arg0->unk48[arg1], 0, 0, 0); + Hu3DParManVecSet(arg0->unk48[arg1], 0, 0.4f, 0.2f); + temp_r29 = Hu3DParManModelIDGet(arg0->unk48[arg1]); + Hu3DModelLayerSet(temp_r29, 2); + Hu3DParticleBlendModeSet(temp_r29, 0); } void fn_1_2220(m02GenDice *arg0) { - s32 temp_r30; - WorkGenDice *temp_r29; - temp_r30 = arg0->unk96; - temp_r29 = OM_GET_WORK_PTR(arg0->unk3C[temp_r30], WorkGenDice); - temp_r29->unk3 = 2; - temp_r29->unk04 = 0; - BoardModelMotionSpeedSet(arg0->unk30[temp_r30], 0); - - arg0->unk36[temp_r30] = arg0->unk1C[temp_r30]; + s32 temp_r30; + WorkGenDice *temp_r29; + temp_r30 = arg0->unk96; + temp_r29 = OM_GET_WORK_PTR(arg0->unk3C[temp_r30], WorkGenDice); + temp_r29->unk3 = 2; + temp_r29->unk04 = 0; + BoardModelMotionSpeedSet(arg0->unk30[temp_r30], 0); + + arg0->unk36[temp_r30] = arg0->unk1C[temp_r30]; } typedef struct { - u8 field0_bit0 : 1; - u8 field0_bit1 : 1; - u8 field0_bit2 : 1; - u8 field0_bit3 : 2; - s8 unk01; - s16 unk02; - s16 unk04[2]; - float unk08; + u8 field0_bit0 : 1; + u8 field0_bit1 : 1; + u8 field0_bit2 : 1; + u8 field0_bit3 : 2; + s8 unk01; + s16 unk02; + s16 unk04[2]; + float unk08; } WorkGenDiceNum; void fn_1_22BC(m02GenDice *arg0) { - s32 temp_r31; - WorkGenDiceNum *temp_r30; - for(temp_r31=0; temp_r31unk00; temp_r31++) { - if(arg0->unk50[temp_r31]) { - temp_r30 = OM_GET_WORK_PTR(arg0->unk50[temp_r31], WorkGenDiceNum); - temp_r30->field0_bit1 = 1; - temp_r30->field0_bit2 = 1; - temp_r30->unk02 = 0; - } - } + s32 temp_r31; + WorkGenDiceNum *temp_r30; + for (temp_r31 = 0; temp_r31 < arg0->unk00; temp_r31++) { + if (arg0->unk50[temp_r31]) { + temp_r30 = OM_GET_WORK_PTR(arg0->unk50[temp_r31], WorkGenDiceNum); + temp_r30->field0_bit1 = 1; + temp_r30->field0_bit2 = 1; + temp_r30->unk02 = 0; + } + } } -s32 fn_1_233C(m02GenDice* arg0) +s32 fn_1_233C(m02GenDice *arg0) { - s32 temp_r31; - WorkGenDiceNum *temp_r30; - for(temp_r31=0; temp_r31unk00; temp_r31++) { - if(!arg0->unk50[temp_r31]) { - continue; - } - temp_r30 = OM_GET_WORK_PTR(arg0->unk50[temp_r31], WorkGenDiceNum); - if(temp_r30->field0_bit2) { - return 0; - } - } - return 1; + s32 temp_r31; + WorkGenDiceNum *temp_r30; + for (temp_r31 = 0; temp_r31 < arg0->unk00; temp_r31++) { + if (!arg0->unk50[temp_r31]) { + continue; + } + temp_r30 = OM_GET_WORK_PTR(arg0->unk50[temp_r31], WorkGenDiceNum); + if (temp_r30->field0_bit2) { + return 0; + } + } + return 1; } void fn_1_23B4(m02GenDice *arg0, s32 arg1) { - WorkGenDiceNum *work; - if(!arg0->unk50[arg1]) { - return; - } - work = OM_GET_WORK_PTR(arg0->unk50[arg1], WorkGenDiceNum); - work->field0_bit0 = 1; + WorkGenDiceNum *work; + if (!arg0->unk50[arg1]) { + return; + } + work = OM_GET_WORK_PTR(arg0->unk50[arg1], WorkGenDiceNum); + work->field0_bit0 = 1; } void fn_1_25D0(omObjData *object); void fn_1_23FC(m02GenDice *arg0, s32 arg1) { - Vec spC; - s16 sp8[2]; - WorkGenDiceNum *temp_r31; - s16 temp_r29; - omObjData *temp_r28; - s32 temp_r26; - s16 temp_r25; - temp_r26 = arg0->unk96; - if(arg1 > 99) { - arg1 = 99; - } - sp8[0] = arg1%10; - sp8[1] = arg1/10; - spC = arg0->unk0C; - spC.y += 300.0f; - temp_r28 = omAddObjEx(boardObjMan, 258, 0, 0, -1, fn_1_25D0); - temp_r28->unk10 = (u32)arg0; - temp_r31 = OM_GET_WORK_PTR(temp_r28, WorkGenDiceNum); - temp_r31->field0_bit0 = 0; - temp_r31->field0_bit1 = 0; - temp_r31->field0_bit2 = 0; - temp_r31->field0_bit3 = temp_r26; - temp_r31->unk08 = 0.3f; - temp_r31->unk01 = arg1; - temp_r31->unk02 = 360; - for(temp_r29=0; temp_r29<2; temp_r29++) { - temp_r25 = BoardModelCreate(arg0->unk08[sp8[temp_r29]], NULL, 0); - BoardModelPosSetV(temp_r25, &spC); - temp_r31->unk04[temp_r29] = temp_r25; - } - if(sp8[1] == 0) { - BoardModelVisibilitySet(temp_r31->unk04[1], 0); - } - arg0->unk50[temp_r26] = temp_r28; - + Vec spC; + s16 sp8[2]; + WorkGenDiceNum *temp_r31; + s16 temp_r29; + omObjData *temp_r28; + s32 temp_r26; + s16 temp_r25; + temp_r26 = arg0->unk96; + if (arg1 > 99) { + arg1 = 99; + } + sp8[0] = arg1 % 10; + sp8[1] = arg1 / 10; + spC = arg0->unk0C; + spC.y += 300.0f; + temp_r28 = omAddObjEx(boardObjMan, 258, 0, 0, -1, fn_1_25D0); + temp_r28->unk10 = (u32)arg0; + temp_r31 = OM_GET_WORK_PTR(temp_r28, WorkGenDiceNum); + temp_r31->field0_bit0 = 0; + temp_r31->field0_bit1 = 0; + temp_r31->field0_bit2 = 0; + temp_r31->field0_bit3 = temp_r26; + temp_r31->unk08 = 0.3f; + temp_r31->unk01 = arg1; + temp_r31->unk02 = 360; + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + temp_r25 = BoardModelCreate(arg0->unk08[sp8[temp_r29]], NULL, 0); + BoardModelPosSetV(temp_r25, &spC); + temp_r31->unk04[temp_r29] = temp_r25; + } + if (sp8[1] == 0) { + BoardModelVisibilitySet(temp_r31->unk04[1], 0); + } + arg0->unk50[temp_r26] = temp_r28; } void fn_1_2694(WorkGenDiceNum *arg0); @@ -464,150 +451,147 @@ void fn_1_2BE4(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2); void fn_1_25D0(omObjData *object) { - WorkGenDiceNum *temp_r31; - m02GenDice *temp_r30; - temp_r30 = (m02GenDice *)object->unk10; - temp_r31 = OM_GET_WORK_PTR(object, WorkGenDiceNum); - if(temp_r31->field0_bit0 || BoardIsKill()) { - fn_1_2694(temp_r31); - temp_r30->unk50[temp_r31->field0_bit3] = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(BoardPauseActiveCheck()) { - return; - } - fn_1_2830(temp_r30, temp_r31, temp_r31->field0_bit1); - fn_1_2BE4(temp_r30, temp_r31, temp_r31->field0_bit1); + WorkGenDiceNum *temp_r31; + m02GenDice *temp_r30; + temp_r30 = (m02GenDice *)object->unk10; + temp_r31 = OM_GET_WORK_PTR(object, WorkGenDiceNum); + if (temp_r31->field0_bit0 || BoardIsKill()) { + fn_1_2694(temp_r31); + temp_r30->unk50[temp_r31->field0_bit3] = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if (BoardPauseActiveCheck()) { + return; + } + fn_1_2830(temp_r30, temp_r31, temp_r31->field0_bit1); + fn_1_2BE4(temp_r30, temp_r31, temp_r31->field0_bit1); } void fn_1_2694(WorkGenDiceNum *arg0) { - s32 i; - for(i=0; i<2; i++) { - if(arg0->unk04[i] == -1) { - continue; - } - OSReport("%d:GenDiceNumExitOM Kill %d\n", i, arg0->unk04[i]); - BoardModelKill(arg0->unk04[i]); - arg0->unk04[i] = -1; - (void)i; - } + s32 i; + for (i = 0; i < 2; i++) { + if (arg0->unk04[i] == -1) { + continue; + } + OSReport("%d:GenDiceNumExitOM Kill %d\n", i, arg0->unk04[i]); + BoardModelKill(arg0->unk04[i]); + arg0->unk04[i] = -1; + (void)i; + } } void fn_1_272C(m02GenDice *arg0) { - s32 i; - WorkGenDiceNum *work; - s32 j; - for(i=0; i<3; i++) { - if(!arg0->unk50[i]) { - continue; - } - work = OM_GET_WORK_PTR(arg0->unk50[i], WorkGenDiceNum); - for(j=0; j<2; j++) { - if(work->unk04[j] == -1) { - continue; - } - OSReport("%d:GenDiceNumOMKillAll %d\n", j, work->unk04[j]); - BoardModelKill(work->unk04[j]); - work->unk04[j] = -1; - (void)j; - } - fn_1_23B4(arg0, i); - } - + s32 i; + WorkGenDiceNum *work; + s32 j; + for (i = 0; i < 3; i++) { + if (!arg0->unk50[i]) { + continue; + } + work = OM_GET_WORK_PTR(arg0->unk50[i], WorkGenDiceNum); + for (j = 0; j < 2; j++) { + if (work->unk04[j] == -1) { + continue; + } + OSReport("%d:GenDiceNumOMKillAll %d\n", j, work->unk04[j]); + BoardModelKill(work->unk04[j]); + work->unk04[j] = -1; + (void)j; + } + fn_1_23B4(arg0, i); + } } void fn_1_2830(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2) { - float temp_f31; - s16 temp_r31; - Vec *temp_r29; - s16 temp_r27; - s32 sp8 = 0; - Vec sp30; - Vec sp24; - Vec sp18 = { 288, 155, 1400 }; - Vec sp54[2]; - Vec sp3C[2] = { - { 144, 155, 1400 }, - { 432, 155, 1400 } - }; - Vec sp6C[3] = { - { 144, 155, 1400 }, - { 432, 155, 1400 }, - { 288, 155, 1400 } - }; - Vec spC = { 288, 176, 1400 }; - temp_r27 = arg1->unk01/10; - if(arg2) { - temp_r29 = &spC; - temp_f31 = -20.0f*arg1->field0_bit3; - } else { - switch(arg0->unk00) { - case 1: - temp_r29 = &arg0->unk7C; - break; - - case 2: - case 3: - temp_r29 = &arg0->unk64[arg1->field0_bit3]; - break; - } - temp_f31 = 0; - } - for(temp_r31=0; temp_r31<2; temp_r31++) { - if(temp_r27 == 0) { - sp54[temp_r31].x = temp_r29->x; - } else { - if(temp_r31) { - sp54[temp_r31].x = temp_r29->x-30; - } else { - sp54[temp_r31].x = temp_r29->x+30; - } - } - sp54[temp_r31].y = temp_r29->y; - sp54[temp_r31].z = temp_r29->z+temp_f31; - } - for(temp_r31=0; temp_r31<2; temp_r31++) { - BoardModelPosGet(arg1->unk04[temp_r31], &sp30); - Hu3D2Dto3D(&sp54[temp_r31], 1, &sp54[temp_r31]); - VECSubtract(&sp54[temp_r31], &sp30, &sp24); - if(VECMag(&sp24) < 0.01f) { - arg1->field0_bit2 = 0; - if(arg2 && arg1->field0_bit3) { - BoardModelVisibilitySet(arg1->unk04[temp_r31], 0); - } - } else { - arg1->field0_bit2 = 1; - } - VECScale(&sp24, &sp24, arg1->unk08); - VECAdd(&sp30, &sp24, &sp30); - BoardModelPosSetV(arg1->unk04[temp_r31], &sp30); - } + float temp_f31; + s16 temp_r31; + Vec *temp_r29; + s16 temp_r27; + s32 sp8 = 0; + Vec sp30; + Vec sp24; + Vec sp18 = { 288, 155, 1400 }; + Vec sp54[2]; + Vec sp3C[2] = { { 144, 155, 1400 }, { 432, 155, 1400 } }; + Vec sp6C[3] = { { 144, 155, 1400 }, { 432, 155, 1400 }, { 288, 155, 1400 } }; + Vec spC = { 288, 176, 1400 }; + temp_r27 = arg1->unk01 / 10; + if (arg2) { + temp_r29 = &spC; + temp_f31 = -20.0f * arg1->field0_bit3; + } + else { + switch (arg0->unk00) { + case 1: + temp_r29 = &arg0->unk7C; + break; + + case 2: + case 3: + temp_r29 = &arg0->unk64[arg1->field0_bit3]; + break; + } + temp_f31 = 0; + } + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + if (temp_r27 == 0) { + sp54[temp_r31].x = temp_r29->x; + } + else { + if (temp_r31) { + sp54[temp_r31].x = temp_r29->x - 30; + } + else { + sp54[temp_r31].x = temp_r29->x + 30; + } + } + sp54[temp_r31].y = temp_r29->y; + sp54[temp_r31].z = temp_r29->z + temp_f31; + } + for (temp_r31 = 0; temp_r31 < 2; temp_r31++) { + BoardModelPosGet(arg1->unk04[temp_r31], &sp30); + Hu3D2Dto3D(&sp54[temp_r31], 1, &sp54[temp_r31]); + VECSubtract(&sp54[temp_r31], &sp30, &sp24); + if (VECMag(&sp24) < 0.01f) { + arg1->field0_bit2 = 0; + if (arg2 && arg1->field0_bit3) { + BoardModelVisibilitySet(arg1->unk04[temp_r31], 0); + } + } + else { + arg1->field0_bit2 = 1; + } + VECScale(&sp24, &sp24, arg1->unk08); + VECAdd(&sp30, &sp24, &sp30); + BoardModelPosSetV(arg1->unk04[temp_r31], &sp30); + } } void fn_1_2BE4(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2) { - s32 temp_r29; - float temp_f30; - if(arg2) { - arg1->unk02 += 18; - if(arg1->unk02 >= 360) { - arg1->unk02 = 360; - } - } else { - arg1->unk02 -= 18; - if(arg1->unk02 <= 0) { - arg1->unk02 = 0; - } - } - OSs16tof32(&arg1->unk02, &temp_f30); - for(temp_r29=0; temp_r29<2; temp_r29++) { - if(arg1->unk04[temp_r29] == -1) { - continue; - } - BoardModelRotSet(arg1->unk04[temp_r29], 0, temp_f30, 0); - } -} \ No newline at end of file + s32 temp_r29; + float temp_f30; + if (arg2) { + arg1->unk02 += 18; + if (arg1->unk02 >= 360) { + arg1->unk02 = 360; + } + } + else { + arg1->unk02 -= 18; + if (arg1->unk02 <= 0) { + arg1->unk02 = 0; + } + } + OSs16tof32(&arg1->unk02, &temp_f30); + for (temp_r29 = 0; temp_r29 < 2; temp_r29++) { + if (arg1->unk04[temp_r29] == -1) { + continue; + } + BoardModelRotSet(arg1->unk04[temp_r29], 0, temp_f30, 0); + } +} diff --git a/src/REL/w02Dll/main.c b/src/REL/w02Dll/main.c index db0b592e..ab699fc7 100644 --- a/src/REL/w02Dll/main.c +++ b/src/REL/w02Dll/main.c @@ -2,22 +2,22 @@ #include "game/frand.h" // Temporary defines -#define BOARD_ITEM_MINI 0x0 -#define BOARD_ITEM_MEGA 0x1 -#define BOARD_ITEM_SUPERMINI 0x2 -#define BOARD_ITEM_SUPERMEGA 0x3 -#define BOARD_ITEM_HAMMER 0x4 -#define BOARD_ITEM_PIPE 0x5 -#define BOARD_ITEM_CARD 0x6 -#define BOARD_ITEM_SPARKY 0x7 -#define BOARD_ITEM_GADDLIGHT 0x8 -#define BOARD_ITEM_CHOMPCALL 0x9 -#define BOARD_ITEM_SUIT 0xA -#define BOARD_ITEM_BOO 0xB -#define BOARD_ITEM_LAMP 0xC -#define BOARD_ITEM_BAG 0xD -#define BOARD_ITEM_MAX 0xE -#define BOARD_ITEM_NONE -1 +#define BOARD_ITEM_MINI 0x0 +#define BOARD_ITEM_MEGA 0x1 +#define BOARD_ITEM_SUPERMINI 0x2 +#define BOARD_ITEM_SUPERMEGA 0x3 +#define BOARD_ITEM_HAMMER 0x4 +#define BOARD_ITEM_PIPE 0x5 +#define BOARD_ITEM_CARD 0x6 +#define BOARD_ITEM_SPARKY 0x7 +#define BOARD_ITEM_GADDLIGHT 0x8 +#define BOARD_ITEM_CHOMPCALL 0x9 +#define BOARD_ITEM_SUIT 0xA +#define BOARD_ITEM_BOO 0xB +#define BOARD_ITEM_LAMP 0xC +#define BOARD_ITEM_BAG 0xD +#define BOARD_ITEM_MAX 0xE +#define BOARD_ITEM_NONE -1 /* BSS */ s16 lbl_1_bss_30[0x10]; // Model List @@ -25,30 +25,29 @@ s16 lbl_1_bss_2E; s16 lbl_1_bss_2C; Vec lbl_1_bss_20; Vec lbl_1_bss_14; -s32* lbl_1_bss_10; +s32 *lbl_1_bss_10; s16 lbl_1_bss_8[4]; // Item List -Process* lbl_1_bss_4; -u8* lbl_1_bss_0; +Process *lbl_1_bss_4; +u8 *lbl_1_bss_0; /* DATA */ -static BoardMapObject lbl_1_data_0[0x10] = { - {{2550.0f, 0.0f, -450.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000C)}, - {{-3150.0f, 0.0f, -1350.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000D)}, - {{-3150.0f, 0.0f, 1650.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000E)}, - {{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0008)}, - {{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0009)}, - {{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000A)}, - {{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000B)}, - {{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0011)}, - {{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0012)}, - {{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0015)}, - {{-300.0f, 0.0f, -900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0016)}, - {{1175.0f, 0.0f, -125.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)}, - {{-525.0f, 0.0f, -825.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)}, - {{-2225.0f, 0.0f, -2100.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)}, - {{1925.0f, 0.0f, -2100.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)}, - {{150.0f, 0.0f, 1650.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)} -}; +static BoardMapObject lbl_1_data_0[0x10] + = { { { 2550.0f, 0.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x000C) }, + { { -3150.0f, 0.0f, -1350.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x000D) }, + { { -3150.0f, 0.0f, 1650.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x000E) }, + { { -150.0f, 0.0f, 900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x0008) }, + { { -150.0f, 0.0f, 900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x0009) }, + { { -150.0f, 0.0f, 900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x000A) }, + { { -150.0f, 0.0f, 900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x000B) }, + { { 1350.0f, 0.0f, -300.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x0011) }, + { { 1350.0f, 0.0f, -300.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x0012) }, + { { 1350.0f, 0.0f, -300.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x0015) }, + { { -300.0f, 0.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W02, 0x0016) }, + { { 1175.0f, 0.0f, -125.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005) }, + { { -525.0f, 0.0f, -825.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005) }, + { { -2225.0f, 0.0f, -2100.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005) }, + { { 1925.0f, 0.0f, -2100.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005) }, + { { 150.0f, 0.0f, 1650.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005) } }; // Special Models s16 lbl_1_data_280 = -1; @@ -56,21 +55,15 @@ s16 lbl_1_data_282 = -1; s16 lbl_1_data_284 = -1; s16 lbl_1_data_286 = -1; -s32 lbl_1_data_288[] = { - DATA_MAKE_NUM(DATADIR_W02, 0x0004), - DATA_NUM_LISTEND -}; +s32 lbl_1_data_288[] = { DATA_MAKE_NUM(DATADIR_W02, 0x0004), DATA_NUM_LISTEND }; s32 lbl_1_data_290[] = { - DATA_MAKE_NUM(DATADIR_BGUEST, 0x0009), - DATA_MAKE_NUM(DATADIR_BGUEST, 0x0006), - DATA_MAKE_NUM(DATADIR_BGUEST, 0x0007), - DATA_MAKE_NUM(DATADIR_BGUEST, 0x0008), - DATA_NUM_LISTEND, + DATA_MAKE_NUM(DATADIR_BGUEST, 0x0009), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0006), DATA_MAKE_NUM(DATADIR_BGUEST, 0x0007), + DATA_MAKE_NUM(DATADIR_BGUEST, 0x0008), DATA_NUM_LISTEND, 0x00000000 // Padding }; /* Functions */ -//Actual externs +// Actual externs extern void BoardMusStart(s32, s32, s32, s32); extern void BoardAudSeqPause(s32, s32, s32); s8 BoardComPreferItemCheck(s32, s8, s8, s8); @@ -79,39 +72,42 @@ extern void BoardComKeySetRight(); extern void CharModelDataClose(s16); // function is probably global. only inlined in rels? -inline s32 get_current_board(void) { +inline s32 get_current_board(void) +{ return GWSystem.board; } -void BoardCreate(void) { +void BoardCreate(void) +{ s32 i, boardData; - BoardMapObject* modelTransform; + BoardMapObject *modelTransform; boardData = get_current_board(); lbl_1_bss_0 = GWSystem.board_data; - BoardSpaceInit(0x760000); - lbl_1_data_280 = BoardModelCreate(0x760001, NULL, 0); + BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W02, 0x00)); + lbl_1_data_280 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x01), NULL, 0); fn_8006DDE8(lbl_1_data_280, -1.0f); BoardModelPosSet(lbl_1_data_280, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_280, 0, 0x40000001); BoardModelMotionSpeedSet(lbl_1_data_280, 0.1f); - lbl_1_data_282 = BoardModelCreate(0x760002, NULL, 0); + lbl_1_data_282 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x02), NULL, 0); fn_8006DDE8(lbl_1_data_282, -1.0f); BoardModelPosSet(lbl_1_data_282, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_282, 0, 0x40000001); - lbl_1_data_284 = BoardModelCreate(0x760003, lbl_1_data_288, 0); + lbl_1_data_284 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x03), lbl_1_data_288, 0); BoardModelPosSet(lbl_1_data_284, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_284, 1, 0x40000001); lbl_1_data_286 = BoardModelCreate(0x20005, lbl_1_data_290, 0); BoardModelMotionStart(lbl_1_data_286, 1, 0x40000001); BoardLightHookSet(fn_1_72C, fn_1_770); - for(i = 0; i < 0x10; i++) { + for (i = 0; i < 0x10; i++) { modelTransform = &lbl_1_data_0[i]; if (modelTransform->data_num != -1) { if ((i == 0xB) || (i == 0xC) || (i == 0xD) || (i == 0xE) || (i == 0xF)) { lbl_1_bss_10 = lbl_1_data_290; - } else { + } + else { lbl_1_bss_10 = NULL; } lbl_1_bss_30[i] = BoardModelCreate(modelTransform->data_num, lbl_1_bss_10, 0); @@ -132,8 +128,8 @@ void BoardCreate(void) { fn_1_92C(); BoardModelPosGet(lbl_1_bss_30[13], &lbl_1_bss_20); BoardModelPosGet(lbl_1_bss_30[14], &lbl_1_bss_14); - lbl_1_bss_2E = BoardModelCreate(0x760010, NULL, 1); - lbl_1_bss_2C = BoardModelCreate(0x760010, NULL, 1); + lbl_1_bss_2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x10), NULL, 1); + lbl_1_bss_2C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x10), NULL, 1); fn_1_9250(); BoardSpaceWalkEventFuncSet(fn_1_800); BoardSpaceWalkMiniEventFuncSet(fn_1_1128); @@ -146,7 +142,8 @@ void BoardCreate(void) { BoardJunctionMaskSet(0x30); } -void BoardDestroy(void) { +void BoardDestroy(void) +{ /* Kill Model List */ s32 i; for (i = 0; i < 0x10; i++) { @@ -176,17 +173,17 @@ void BoardDestroy(void) { BoardSpaceDestroy(); } -void fn_1_72C(void) { +void fn_1_72C(void) +{ s16 var = BoardModelIDGet(lbl_1_data_280); Hu3DModelLightInfoSet(var, 1); } -void fn_1_770(void) { - -} +void fn_1_770(void) { } /* Decrement current space's [UNKNOWN] flag */ -s32 fn_1_774(void) { +s32 fn_1_774(void) +{ u32 unkFlag; u32 currPlayer; u32 currSpace; @@ -194,7 +191,7 @@ s32 fn_1_774(void) { currPlayer = GWSystem.player_curr; currSpace = GWPlayer[currPlayer].space_curr; spaceFlags = BoardSpaceFlagGet(0, currSpace); - //temp_r31 = (temp_r) + // temp_r31 = (temp_r) unkFlag = (spaceFlags & 0x1C0) >> 6; if (unkFlag != 0) { unkFlag--; @@ -203,8 +200,9 @@ s32 fn_1_774(void) { } /* Check if can iteract with board object? */ -s32 fn_1_800(void) { - BoardSpace* currSpace; +s32 fn_1_800(void) +{ + BoardSpace *currSpace; s32 currPlayer; s32 var_r29; @@ -212,7 +210,6 @@ s32 fn_1_800(void) { currSpace = BoardSpaceGet(0, GWPlayer[currPlayer].space_curr); if ((currSpace->flag & 0x30) != 0) { - // If mega mushroom state return if (BoardPlayerSizeGet(currPlayer) == 2) { return 0; @@ -224,9 +221,11 @@ s32 fn_1_800(void) { if ((currSpace->flag & 0x20) != 0 && (currSpace->flag & 0x10) != 0) { var_r29 = 2; - } else if ((currSpace->flag & 0x20) != 0) { + } + else if ((currSpace->flag & 0x20) != 0) { var_r29 = 1; - } else { + } + else { var_r29 = 0; } fn_1_394C(var_r29); @@ -239,22 +238,23 @@ s32 fn_1_800(void) { return 0; } -void fn_1_92C(void) { +void fn_1_92C(void) +{ fn_1_39F4(); fn_1_5CF8(); } -void fn_1_950(void) { +void fn_1_950(void) { } -} - -void fn_1_954(void) { +void fn_1_954(void) +{ HuPrcSleep(0x3C); BoardMusStart(1, 0x12, 0x7F, 0); HuPrcEnd(); } -void fn_1_990(void) { +void fn_1_990(void) +{ Vec rotation; Vec offset; Vec boardSpacePos; @@ -264,13 +264,13 @@ void fn_1_990(void) { s32 currSpace; s32 spaceLinkFlag; - currPlayer = GWSystem.player_curr; BoardWinCreateChoice(2, MAKE_MESSID(19, 17), 4, 0); if (GWPlayer[currPlayer].com) { if (frandBool() != 0) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -317,7 +317,8 @@ void fn_1_990(void) { BoardPlayerMotionStart(currPlayer, 1, 0x40000001); } -void fn_1_C50(void) { +void fn_1_C50(void) +{ Vec rotation; Vec offset; s32 currSpace; @@ -327,7 +328,7 @@ void fn_1_C50(void) { s32 i, j; currPlayer = GWSystem.player_curr; - if (BoardPlayerItemCount((s32) currPlayer) == 3) { + if (BoardPlayerItemCount((s32)currPlayer) == 3) { BoardWinCreate(2, MAKE_MESSID(19, 26), 4); BoardWinWait(); BoardWinKill(); @@ -351,7 +352,7 @@ void fn_1_C50(void) { } if (lbl_1_bss_8[i] != BOARD_ITEM_NONE) { i++; - } + } } } fn_1_79BC(lbl_1_bss_8); @@ -361,7 +362,8 @@ void fn_1_C50(void) { if (GWPlayer[currPlayer].com) { if (BoardComPreferItemCheck(currPlayer, lbl_1_bss_8[0], lbl_1_bss_8[1], lbl_1_bss_8[2]) != -1) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -387,14 +389,14 @@ void fn_1_C50(void) { offset.x = 0.0f; offset.y = 0.0f; offset.z = -250.0f; - BoardCameraMotionStartEx(lbl_1_bss_30[10], (Point3d* ) &rotation, (Point3d* ) &offset, 1500.0f, 25.0f, 0x15); + BoardCameraMotionStartEx(lbl_1_bss_30[10], (Vec *)&rotation, (Vec *)&offset, 1500.0f, 25.0f, 0x15); currSpace = GWPlayer[currPlayer].space_curr; spaceLinkFlags = BoardSpaceLinkFlagSearch(0, currSpace, 0x02000000U); BoardPlayerMoveBetween(currPlayer, currSpace, spaceLinkFlags); while (GWPlayer[currPlayer].moving) { HuPrcVSleep(); } - BoardPlayerMotionStart((s32) currPlayer, 1, 0x40000001); + BoardPlayerMotionStart((s32)currPlayer, 1, 0x40000001); BoardPlayerMotBlendSet(currPlayer, 0xB4, 0xF); while (BoardPlayerMotBlendCheck(currPlayer) == 0) { HuPrcVSleep(); @@ -409,17 +411,19 @@ void fn_1_C50(void) { HuPrcVSleep(); } fn_1_5F90(); - BoardPlayerMotionStart((s32) currPlayer, 1, 0x40000001); + BoardPlayerMotionStart((s32)currPlayer, 1, 0x40000001); HuPrcEnd(); } -void fn_1_1070(void) { +void fn_1_1070(void) +{ BoardWinKill(); CharModelDataClose(-1); lbl_1_bss_4 = 0; } -void fn_1_10A8(void) { +void fn_1_10A8(void) +{ lbl_1_bss_4 = HuPrcChildCreate(fn_1_C50, 0x2003U, 0x2000U, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1070); while (lbl_1_bss_4) { @@ -427,7 +431,8 @@ void fn_1_10A8(void) { } } -s32 fn_1_1128(void) { +s32 fn_1_1128(void) +{ u32 spaceFlags; s16 currSpace; currSpace = GWPlayer[GWSystem.player_curr].space_curr; @@ -436,7 +441,8 @@ s32 fn_1_1128(void) { if (spaceFlags & 0x200000) { fn_1_990(); - } else if (spaceFlags & 0x400000) { + } + else if (spaceFlags & 0x400000) { lbl_1_bss_4 = HuPrcChildCreate(fn_1_C50, 0x2003U, 0x2000U, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1070); while (lbl_1_bss_4) { @@ -447,7 +453,8 @@ s32 fn_1_1128(void) { BoardRollDispSet(1); } -void fn_1_121C(u32 mesg) { +void fn_1_121C(u32 mesg) +{ BoardWinCreate(2, mesg, 4); BoardWinWait(); BoardWinKill(); diff --git a/src/REL/w02Dll/mg_coin.c b/src/REL/w02Dll/mg_coin.c index a1ce769c..054d750b 100644 --- a/src/REL/w02Dll/mg_coin.c +++ b/src/REL/w02Dll/mg_coin.c @@ -1,10 +1,9 @@ #include "REL/w02Dll.h" #include "game/audio.h" -#include "game/pad.h" -#include "game/objsub.h" +#include "game/chrman.h" #include "game/frand.h" #include "game/objsub.h" -#include "game/chrman.h" +#include "game/pad.h" #include "ext_math.h" @@ -24,184 +23,158 @@ s16 lbl_1_bss_84; s16 lbl_1_bss_5C[20]; s32 lbl_1_bss_58; -Vec lbl_1_data_378[3] = { - { -45, 155, 108 }, - { 0, 155, 108 }, - { 45, 155, 108 } -}; +Vec lbl_1_data_378[3] = { { -45, 155, 108 }, { 0, 155, 108 }, { 45, 155, 108 } }; -Vec lbl_1_data_39C[3] = { - { -45, 25, 200 }, - { 0, 25, 200 }, - { 45, 25, 200 } -}; +Vec lbl_1_data_39C[3] = { { -45, 25, 200 }, { 0, 25, 200 }, { 45, 25, 200 } }; -s32 lbl_1_data_3C0[9] = { - 5, 10, 20, - 5, 10, 20, - 5, 10, 20 -}; +s32 lbl_1_data_3C0[9] = { 5, 10, 20, 5, 10, 20, 5, 10, 20 }; -s32 lbl_1_data_3E4[8] = { - 0x5F0008, - 0x1A0008, - 0x6D0008, - 0x8A0008, - 0x850008, - 0x110008, - 0x0D0008, - 0x810008 -}; +s32 lbl_1_data_3E4[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x08), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x08), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x08), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x08), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x08), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x08), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x08) }; -s32 lbl_1_data_404[8] = { - 0x5F000A, - 0x1A000A, - 0x6D000A, - 0x8A000A, - 0x85000A, - 0x11000A, - 0x0D000A, - 0x81000A -}; +s32 lbl_1_data_404[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0A), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0A), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0A), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0A), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0A), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0A) }; void fn_1_51B4(Vec *arg0); void fn_1_39F4(void) { - Vec sp8; - s32 temp_r31; - BoardModelVisibilitySet(lbl_1_bss_30[7], 1); - BoardModelVisibilitySet(lbl_1_bss_30[8], 1); - BoardModelVisibilitySet(lbl_1_bss_30[9], 0); - BoardModelAttrSet(lbl_1_bss_30[8], 0x40000002); - BoardModelAttrSet(lbl_1_bss_30[9], 0x40000003); - BoardModelAttrSet(lbl_1_bss_30[7], 0x40000001); - BoardModelPosGet(lbl_1_bss_30[8], &lbl_1_bss_94); - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_C2[temp_r31] = BoardModelCreate(0x760013, NULL, 1); - lbl_1_bss_BC[temp_r31] = BoardModelCreate(0x760014, NULL, 1); - BoardModelAttrSet(lbl_1_bss_BC[temp_r31], 0x40000002); - lbl_1_bss_B0[temp_r31] = (s32)frandmod(9)*40.0f; - sp8.x = lbl_1_bss_B0[temp_r31]; - sp8.y = sp8.z = 0; - BoardModelRotSetV(lbl_1_bss_C2[temp_r31], &sp8); - } - BoardModelPosSetV(lbl_1_bss_30[7], &lbl_1_bss_94); - fn_1_51B4(&lbl_1_bss_94); + Vec sp8; + s32 temp_r31; + BoardModelVisibilitySet(lbl_1_bss_30[7], 1); + BoardModelVisibilitySet(lbl_1_bss_30[8], 1); + BoardModelVisibilitySet(lbl_1_bss_30[9], 0); + BoardModelAttrSet(lbl_1_bss_30[8], 0x40000002); + BoardModelAttrSet(lbl_1_bss_30[9], 0x40000003); + BoardModelAttrSet(lbl_1_bss_30[7], 0x40000001); + BoardModelPosGet(lbl_1_bss_30[8], &lbl_1_bss_94); + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_C2[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x13), NULL, 1); + lbl_1_bss_BC[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x14), NULL, 1); + BoardModelAttrSet(lbl_1_bss_BC[temp_r31], 0x40000002); + lbl_1_bss_B0[temp_r31] = (s32)frandmod(9) * 40.0f; + sp8.x = lbl_1_bss_B0[temp_r31]; + sp8.y = sp8.z = 0; + BoardModelRotSetV(lbl_1_bss_C2[temp_r31], &sp8); + } + BoardModelPosSetV(lbl_1_bss_30[7], &lbl_1_bss_94); + fn_1_51B4(&lbl_1_bss_94); } void fn_1_3F0C(omObjData *object); void fn_1_4050(omObjData *object); typedef struct work_mgcoin_player { - float unk0[3]; - float unkC[3]; - float unk18[3]; - s16 unk24[3]; + float unk0[3]; + float unkC[3]; + float unk18[3]; + s16 unk24[3]; } WorkMGCoinPlayer; typedef struct work_mgcoin { - float unk0; - float unk4; - s16 unk8; - Vec unkC; - s16 unk18; - s16 unk1A; - s16 unk1C; - s16 unk1E; - s16 unk20; + float unk0; + float unk4; + s16 unk8; + Vec unkC; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; + s16 unk20; } WorkMGCoin; void fn_1_3BF4(void) { - Vec sp8; - - s32 temp_r31; - WorkMGCoinPlayer *temp_r30; - lbl_1_bss_86 = GWSystem.player_curr; - lbl_1_bss_AC = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_3F0C); - lbl_1_bss_A4 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_4050); - lbl_1_bss_A8 = omAddObjEx(boardObjMan, 257, 0, 2, -1, NULL); - lbl_1_bss_A8->motion[0] = BoardPlayerMotionCreate(lbl_1_bss_86, lbl_1_data_3E4[GWPlayer[lbl_1_bss_86].character]); - lbl_1_bss_A8->motion[1] = BoardPlayerMotionCreate(lbl_1_bss_86, lbl_1_data_404[GWPlayer[lbl_1_bss_86].character]); - lbl_1_bss_A4->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGCoinPlayer), MEMORY_DEFAULT_NUM); - temp_r30 = lbl_1_bss_A4->data; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r30->unk0[temp_r31] = lbl_1_bss_B0[temp_r31]; - temp_r30->unkC[temp_r31] = 0; - temp_r30->unk18[temp_r31] = 0; - temp_r30->unk24[temp_r31] = 0; - } - lbl_1_bss_A8->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGCoin), MEMORY_DEFAULT_NUM); - BoardPlayerPosGet(lbl_1_bss_86, &sp8); - lbl_1_bss_A8->trans.x = sp8.x; - lbl_1_bss_A8->trans.y = sp8.y; - lbl_1_bss_A8->trans.z = sp8.z; - for(temp_r31=0; temp_r31<20; temp_r31++) { - lbl_1_bss_5C[temp_r31] = BoardModelCreate(0x7000A, NULL, 1); - BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0); - } - lbl_1_bss_A0 = 0; + Vec sp8; + + s32 temp_r31; + WorkMGCoinPlayer *temp_r30; + lbl_1_bss_86 = GWSystem.player_curr; + lbl_1_bss_AC = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_3F0C); + lbl_1_bss_A4 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_4050); + lbl_1_bss_A8 = omAddObjEx(boardObjMan, 257, 0, 2, -1, NULL); + lbl_1_bss_A8->motion[0] = BoardPlayerMotionCreate(lbl_1_bss_86, lbl_1_data_3E4[GWPlayer[lbl_1_bss_86].character]); + lbl_1_bss_A8->motion[1] = BoardPlayerMotionCreate(lbl_1_bss_86, lbl_1_data_404[GWPlayer[lbl_1_bss_86].character]); + lbl_1_bss_A4->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGCoinPlayer), MEMORY_DEFAULT_NUM); + temp_r30 = lbl_1_bss_A4->data; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r30->unk0[temp_r31] = lbl_1_bss_B0[temp_r31]; + temp_r30->unkC[temp_r31] = 0; + temp_r30->unk18[temp_r31] = 0; + temp_r30->unk24[temp_r31] = 0; + } + lbl_1_bss_A8->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGCoin), MEMORY_DEFAULT_NUM); + BoardPlayerPosGet(lbl_1_bss_86, &sp8); + lbl_1_bss_A8->trans.x = sp8.x; + lbl_1_bss_A8->trans.y = sp8.y; + lbl_1_bss_A8->trans.z = sp8.z; + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + lbl_1_bss_5C[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 1); + BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0); + } + lbl_1_bss_A0 = 0; } void fn_1_3F94(void); void fn_1_3F0C(omObjData *object) { - if(lbl_1_bss_A0 && BoardMGDoneFlagGet() == 1) { - fn_1_3F94(); - omDelObjEx(boardObjMan, object); - } + if (lbl_1_bss_A0 && BoardMGDoneFlagGet() == 1) { + fn_1_3F94(); + omDelObjEx(boardObjMan, object); + } } void fn_1_3F64(void) { - lbl_1_bss_A0 = 1; - BoardMGExit(); + lbl_1_bss_A0 = 1; + BoardMGExit(); } void fn_1_3F94(void) { - s32 temp_r31; - BoardPlayerMotionKill(lbl_1_bss_86, lbl_1_bss_A8->motion[0]); - BoardPlayerMotionKill(lbl_1_bss_86, lbl_1_bss_A8->motion[1]); - omDelObjEx(boardObjMan, lbl_1_bss_A8); - for(temp_r31=0; temp_r31<20; temp_r31++) { - BoardModelKill(lbl_1_bss_5C[temp_r31]); - } - BoardMGDoneFlagSet(0); + s32 temp_r31; + BoardPlayerMotionKill(lbl_1_bss_86, lbl_1_bss_A8->motion[0]); + BoardPlayerMotionKill(lbl_1_bss_86, lbl_1_bss_A8->motion[1]); + omDelObjEx(boardObjMan, lbl_1_bss_A8); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + BoardModelKill(lbl_1_bss_5C[temp_r31]); + } + BoardMGDoneFlagSet(0); } void fn_1_4100(omObjData *object); void fn_1_4050(omObjData *object) { - if(object->work[0] == 0) { - object->work[0] = MGSeqStartCreate(); - return; - } - if(MGSeqStatGet(object->work[0])) { - return; - } - object->func = fn_1_4100; - BoardModelMotionTimeSet(lbl_1_bss_30[8], 0); - BoardModelAttrReset(lbl_1_bss_30[8], 0x40000006); - HuAudFXPlay(1062); + if (object->work[0] == 0) { + object->work[0] = MGSeqStartCreate(); + return; + } + if (MGSeqStatGet(object->work[0])) { + return; + } + object->func = fn_1_4100; + BoardModelMotionTimeSet(lbl_1_bss_30[8], 0); + BoardModelAttrReset(lbl_1_bss_30[8], 0x40000006); + HuAudFXPlay(1062); } void fn_1_41B8(omObjData *object); void fn_1_4100(omObjData *object) { - if(BoardModelMotionTimeGet(lbl_1_bss_30[8]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_30[8])) { - object->work[0] = 0; - object->work[1] = 0; - object->work[2] = 1; - object->work[3] = 0; - object->func = fn_1_41B8; - BoardModelAttrSet(lbl_1_bss_30[8], 0x40000004); - lbl_1_bss_58 = HuAudFXPlay(1063); - } + if (BoardModelMotionTimeGet(lbl_1_bss_30[8]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_30[8])) { + object->work[0] = 0; + object->work[1] = 0; + object->work[2] = 1; + object->work[3] = 0; + object->func = fn_1_41B8; + BoardModelAttrSet(lbl_1_bss_30[8], 0x40000004); + lbl_1_bss_58 = HuAudFXPlay(1063); + } } void fn_1_4378(omObjData *object); @@ -209,42 +182,42 @@ void fn_1_5290(omObjData *object); void fn_1_41B8(omObjData *object) { - Vec sp8; - WorkMGCoinPlayer *temp_r30; - s32 temp_r29; - s32 temp_r28; - u32 temp_r27; - temp_r30 = object->data; - if(object->work[1] == 0) { - object->work[0] |= object->work[2]; - object->work[1] = 12; - object->work[2] <<= 1; - } else { - object->work[1]--; - } - sp8.y = sp8.z = 0; - temp_r28 = 0; - for(temp_r29=0; temp_r29<3; temp_r29++) { - temp_r27 = 1 << temp_r29; - if(object->work[0] & temp_r27) { - temp_r30->unkC[temp_r29] += 0.25f; - if(temp_r30->unkC[temp_r29] > 5.0f) { - temp_r30->unkC[temp_r29] = 5.0f; - temp_r28++; - } - temp_r30->unk0[temp_r29] += temp_r30->unkC[temp_r29]; - if(temp_r30->unk0[temp_r29] >= 360.0f) { - temp_r30->unk0[temp_r29] -= 360.0f; - } - sp8.x = temp_r30->unk0[temp_r29]; - BoardModelRotSetV(lbl_1_bss_C2[temp_r29], &sp8); - } - } - if(temp_r28 == 3) { - object->func = fn_1_4378; - lbl_1_bss_A8->func = fn_1_5290; - } - + Vec sp8; + WorkMGCoinPlayer *temp_r30; + s32 temp_r29; + s32 temp_r28; + u32 temp_r27; + temp_r30 = object->data; + if (object->work[1] == 0) { + object->work[0] |= object->work[2]; + object->work[1] = 12; + object->work[2] <<= 1; + } + else { + object->work[1]--; + } + sp8.y = sp8.z = 0; + temp_r28 = 0; + for (temp_r29 = 0; temp_r29 < 3; temp_r29++) { + temp_r27 = 1 << temp_r29; + if (object->work[0] & temp_r27) { + temp_r30->unkC[temp_r29] += 0.25f; + if (temp_r30->unkC[temp_r29] > 5.0f) { + temp_r30->unkC[temp_r29] = 5.0f; + temp_r28++; + } + temp_r30->unk0[temp_r29] += temp_r30->unkC[temp_r29]; + if (temp_r30->unk0[temp_r29] >= 360.0f) { + temp_r30->unk0[temp_r29] -= 360.0f; + } + sp8.x = temp_r30->unk0[temp_r29]; + BoardModelRotSetV(lbl_1_bss_C2[temp_r29], &sp8); + } + } + if (temp_r28 == 3) { + object->func = fn_1_4378; + lbl_1_bss_A8->func = fn_1_5290; + } } void fn_1_4698(omObjData *object); @@ -253,431 +226,442 @@ void fn_1_46E8(void); void fn_1_4378(omObjData *object) { - Vec sp8; - float temp_f31; - WorkMGCoinPlayer *temp_r31; - s32 temp_r30; - s32 temp_r28; - Process *temp_r27; - temp_r31 = object->data; - sp8.y = sp8.z = 0; - for(temp_r30=0; temp_r30<3; temp_r30++) { - temp_r28 = 1<work[0] & temp_r28) { - if(object->work[3] & temp_r28) { - temp_r31->unk18[temp_r30] = 360; - temp_r31->unk24[temp_r30] = 1; - object->work[3] &= ~temp_r28; - } - if(temp_r31->unk24[temp_r30]) { - if(0.0f == temp_r31->unk18[temp_r30]) { - temp_f31 = fmod(temp_r31->unk0[temp_r30], 40.0); - if(temp_f31+temp_r31->unkC[temp_r30] >= 40.0f) { - temp_r31->unk0[temp_r30] += (temp_f31+temp_r31->unkC[temp_r30])-40.0f; - temp_f31 = 0; - } - if(0.0f == temp_f31) { - HuAudFXPlay(1067); - object->work[0] &= ~temp_r28; - temp_r31->unkC[temp_r30] = 0; - lbl_1_bss_A8->work[2] = 60; - if(temp_r30 != 2) { - lbl_1_bss_A8->func = fn_1_5290; - } else { - BoardAudSeqFadeOut(1, 100); - temp_r27 = HuPrcCreate(fn_1_46E8, 8196, 6144, 0); - temp_r27->user_data = object; - HuAudFXStop(lbl_1_bss_58); - object->func = fn_1_4698; - } - } - } else { - temp_r31->unk18[temp_r30] -= temp_r31->unkC[temp_r30]; - if(temp_r31->unk18[temp_r30] < 0.0f) { - temp_r31->unk18[temp_r30] = 0.0f; - } - } - } - temp_r31->unk0[temp_r30] += temp_r31->unkC[temp_r30]; - if(temp_r31->unk0[temp_r30] >= 360.0f) { - temp_r31->unk0[temp_r30] -= 360.0f; - } - } - sp8.x = temp_r31->unk0[temp_r30]; - BoardModelRotSetV(lbl_1_bss_C2[temp_r30], &sp8); - } + Vec sp8; + float temp_f31; + WorkMGCoinPlayer *temp_r31; + s32 temp_r30; + s32 temp_r28; + Process *temp_r27; + temp_r31 = object->data; + sp8.y = sp8.z = 0; + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + temp_r28 = 1 << temp_r30; + if (object->work[0] & temp_r28) { + if (object->work[3] & temp_r28) { + temp_r31->unk18[temp_r30] = 360; + temp_r31->unk24[temp_r30] = 1; + object->work[3] &= ~temp_r28; + } + if (temp_r31->unk24[temp_r30]) { + if (0.0f == temp_r31->unk18[temp_r30]) { + temp_f31 = fmod(temp_r31->unk0[temp_r30], 40.0); + if (temp_f31 + temp_r31->unkC[temp_r30] >= 40.0f) { + temp_r31->unk0[temp_r30] += (temp_f31 + temp_r31->unkC[temp_r30]) - 40.0f; + temp_f31 = 0; + } + if (0.0f == temp_f31) { + HuAudFXPlay(1067); + object->work[0] &= ~temp_r28; + temp_r31->unkC[temp_r30] = 0; + lbl_1_bss_A8->work[2] = REFRESH_RATE; + if (temp_r30 != 2) { + lbl_1_bss_A8->func = fn_1_5290; + } + else { + BoardAudSeqFadeOut(1, 100); + temp_r27 = HuPrcCreate(fn_1_46E8, 8196, 6144, 0); + temp_r27->user_data = object; + HuAudFXStop(lbl_1_bss_58); + object->func = fn_1_4698; + } + } + } + else { + temp_r31->unk18[temp_r30] -= temp_r31->unkC[temp_r30]; + if (temp_r31->unk18[temp_r30] < 0.0f) { + temp_r31->unk18[temp_r30] = 0.0f; + } + } + } + temp_r31->unk0[temp_r30] += temp_r31->unkC[temp_r30]; + if (temp_r31->unk0[temp_r30] >= 360.0f) { + temp_r31->unk0[temp_r30] -= 360.0f; + } + } + sp8.x = temp_r31->unk0[temp_r30]; + BoardModelRotSetV(lbl_1_bss_C2[temp_r30], &sp8); + } } void fn_1_4698(omObjData *object) { - if(msmMusGetStatus(1) == 0) { - BoardAudSeqPause(0, 0, 1000); - object->func = NULL; - } + if (msmMusGetStatus(1) == 0) { + BoardAudSeqPause(0, 0, 1000); + object->func = NULL; + } } void fn_1_511C(omObjData *object); void fn_1_46E8(void) { - Vec sp21C[20]; - Vec sp12C[20]; - Vec sp3C[20]; - s32 sp30[3]; - Vec sp24; - Vec sp18; - Vec spC; - char sp8[4]; - float temp_f31; - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - omObjData *temp_r27; - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelRotGet(lbl_1_bss_C2[temp_r31], &sp24); - sp30[temp_r31] = lbl_1_data_3C0[(int)(sp24.x/40.0f)]; - } - if(sp30[0] == sp30[1] && sp30[0] == sp30[2]) { - lbl_1_bss_84 = sp30[0]; - } else { - lbl_1_bss_84 = 1; - } - if(lbl_1_bss_84 != 1) { - BoardModelVisibilitySet(lbl_1_bss_30[9], 1); - BoardModelAttrReset(lbl_1_bss_30[9], 0x40000002); - } - sprintf(sp8, "%d", lbl_1_bss_84); - BoardWinCreate(2, MAKE_MESSID(19, 19), 4); - BoardWinInsertMesSet((u32)sp8, 0); - BoardWinWait(); - BoardWinKill(); - BoardCameraTargetModelSet(-1); - temp_r30 = 0; - temp_r29 = 45; - temp_f31 = 0; - sp18 = lbl_1_bss_94; - HuAudFXPlay(1065); - while(1) { - temp_r28 = 0; - if(temp_r29 == 0 && temp_r30 < lbl_1_bss_84) { - HuAudFXPlay(18); - BoardModelVisibilitySet(lbl_1_bss_5C[temp_r30], 1); - sp21C[temp_r30].x = -5.0f+((1.0f/255.0f)*(10.0f*frand8())); - sp21C[temp_r30].y = 212.5f; - sp21C[temp_r30].z = 130.0f; - VECAdd(&sp21C[temp_r30], &sp18, &sp21C[temp_r30]); - BoardModelPosSetV(lbl_1_bss_5C[temp_r30], &sp21C[temp_r30]); - sp12C[temp_r30].x = -1.0f+((1.0f/255.0f)*(2.0f*frand8())); - sp12C[temp_r30].y = 18.0f; - sp12C[temp_r30].z = 0.0f; - temp_r29 = frandmod(3)+5; - temp_r30++; - } else { - temp_r29--; - } - for(temp_r31=0; temp_r31= 500.0f) { - BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0); - temp_r28++; - } else { - VECAdd(&sp21C[temp_r31], &sp12C[temp_r31], &sp21C[temp_r31]); - } - BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]); - } - sp18.y += 0.8f*sind(temp_f31); - temp_f31 += 45.0f; - if(temp_f31 >= 360.0f) { - temp_f31 -= 360.0f; - } - fn_1_51B4(&sp18); - if(temp_r28 == lbl_1_bss_84) { - break; - } - HuPrcVSleep(); - } - fn_1_51B4(&lbl_1_bss_94); - BoardModelAttrSet(lbl_1_bss_30[9], 0x40000002); - BoardModelMotionTimeSet(lbl_1_bss_30[9], 0); - BoardModelVisibilitySet(lbl_1_bss_30[9], 0); - BoardPlayerPosGet(lbl_1_bss_86, &sp18); - for(temp_r31=0; temp_r31= 360.0f) { - sp3C[temp_r31].y -= 360.0f; - } - BoardModelRotSetV(lbl_1_bss_5C[temp_r31], &sp3C[temp_r31]); - if(sp21C[temp_r31].y <= 80.0f+sp18.y) { - spC = sp21C[temp_r31]; - CharModelCoinEffectCreate(1, &spC); - BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0); - temp_r30++; - BoardPlayerCoinsAdd(lbl_1_bss_86, 1); - HuAudFXPlay(7); - omVibrate(lbl_1_bss_86, 12, 6, 6); - } - } - temp_f31 *= 1.05f; - if(temp_f31 < -20.0f) { - temp_f31 = -20.0f; - } - if(temp_r30 == lbl_1_bss_84) { - BoardPlayerMotionShiftSet(lbl_1_bss_86, 7, 0, 10, 0); - break; - } - HuPrcVSleep(); - } - while(!BoardPlayerMotionEndCheck(lbl_1_bss_86)) { - HuPrcVSleep(); - } - fn_1_121C(0x130014); - temp_r27 = HuPrcCurrentGet()->user_data; - temp_r27->func = fn_1_511C; - HuPrcEnd(); + Vec sp21C[20]; + Vec sp12C[20]; + Vec sp3C[20]; + s32 sp30[3]; + Vec sp24; + Vec sp18; + Vec spC; + char sp8[4]; + float temp_f31; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + omObjData *temp_r27; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelRotGet(lbl_1_bss_C2[temp_r31], &sp24); + sp30[temp_r31] = lbl_1_data_3C0[(int)(sp24.x / 40.0f)]; + } + if (sp30[0] == sp30[1] && sp30[0] == sp30[2]) { + lbl_1_bss_84 = sp30[0]; + } + else { + lbl_1_bss_84 = 1; + } + if (lbl_1_bss_84 != 1) { + BoardModelVisibilitySet(lbl_1_bss_30[9], 1); + BoardModelAttrReset(lbl_1_bss_30[9], 0x40000002); + } + sprintf(sp8, "%d", lbl_1_bss_84); + BoardWinCreate(2, MAKE_MESSID(19, 19), 4); + BoardWinInsertMesSet((u32)sp8, 0); + BoardWinWait(); + BoardWinKill(); + BoardCameraTargetModelSet(-1); + temp_r30 = 0; + temp_r29 = 45; + temp_f31 = 0; + sp18 = lbl_1_bss_94; + HuAudFXPlay(1065); + while (1) { + temp_r28 = 0; + if (temp_r29 == 0 && temp_r30 < lbl_1_bss_84) { + HuAudFXPlay(18); + BoardModelVisibilitySet(lbl_1_bss_5C[temp_r30], 1); + sp21C[temp_r30].x = -5.0f + ((1.0f / 255.0f) * (10.0f * frand8())); + sp21C[temp_r30].y = 212.5f; + sp21C[temp_r30].z = 130.0f; + VECAdd(&sp21C[temp_r30], &sp18, &sp21C[temp_r30]); + BoardModelPosSetV(lbl_1_bss_5C[temp_r30], &sp21C[temp_r30]); + sp12C[temp_r30].x = -1.0f + ((1.0f / 255.0f) * (2.0f * frand8())); + sp12C[temp_r30].y = 18.0f; + sp12C[temp_r30].z = 0.0f; + temp_r29 = frandmod(3) + 5; + temp_r30++; + } + else { + temp_r29--; + } + for (temp_r31 = 0; temp_r31 < temp_r30; temp_r31++) { + if (sp21C[temp_r31].y >= 500.0f) { + BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0); + temp_r28++; + } + else { + VECAdd(&sp21C[temp_r31], &sp12C[temp_r31], &sp21C[temp_r31]); + } + BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]); + } + sp18.y += 0.8f * sind(temp_f31); + temp_f31 += 45.0f; + if (temp_f31 >= 360.0f) { + temp_f31 -= 360.0f; + } + fn_1_51B4(&sp18); + if (temp_r28 == lbl_1_bss_84) { + break; + } + HuPrcVSleep(); + } + fn_1_51B4(&lbl_1_bss_94); + BoardModelAttrSet(lbl_1_bss_30[9], 0x40000002); + BoardModelMotionTimeSet(lbl_1_bss_30[9], 0); + BoardModelVisibilitySet(lbl_1_bss_30[9], 0); + BoardPlayerPosGet(lbl_1_bss_86, &sp18); + for (temp_r31 = 0; temp_r31 < lbl_1_bss_84; temp_r31++) { + BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 1); + sp21C[temp_r31] = sp18; + sp21C[temp_r31].y += (temp_r31 * 120) + 600.0f; + sp21C[temp_r31].x += -25.0f + ((1.0f / 255.0f) * (50.0f * frand8())); + sp21C[temp_r31].z += -25.0f + ((1.0f / 255.0f) * (50.0f * frand8())); + sp3C[temp_r31].x = sp3C[temp_r31].z = 0; + sp3C[temp_r31].y = ((1.0f / 255.0f) * (360.0f * frand8())); + BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]); + BoardModelRotSetV(lbl_1_bss_5C[temp_r31], &sp3C[temp_r31]); + } + temp_f31 = -1; + temp_r30 = 0; + while (1) { + for (temp_r31 = 0; temp_r31 < lbl_1_bss_84; temp_r31++) { + if (temp_r31 < temp_r30) { + continue; + } + sp21C[temp_r31].y += temp_f31; + BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]); + sp3C[temp_r31].y += 45.0f; + if (sp3C[temp_r31].y >= 360.0f) { + sp3C[temp_r31].y -= 360.0f; + } + BoardModelRotSetV(lbl_1_bss_5C[temp_r31], &sp3C[temp_r31]); + if (sp21C[temp_r31].y <= 80.0f + sp18.y) { + spC = sp21C[temp_r31]; + CharModelCoinEffectCreate(1, &spC); + BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0); + temp_r30++; + BoardPlayerCoinsAdd(lbl_1_bss_86, 1); + HuAudFXPlay(7); + omVibrate(lbl_1_bss_86, 12, 6, 6); + } + } + temp_f31 *= 1.05f; + if (temp_f31 < -20.0f) { + temp_f31 = -20.0f; + } + if (temp_r30 == lbl_1_bss_84) { + BoardPlayerMotionShiftSet(lbl_1_bss_86, 7, 0, 10, HU3D_MOTATTR_NONE); + break; + } + HuPrcVSleep(); + } + while (!BoardPlayerMotionEndCheck(lbl_1_bss_86)) { + HuPrcVSleep(); + } + fn_1_121C(MAKE_MESSID(0x13, 0x14)); + temp_r27 = HuPrcCurrentGet()->user_data; + temp_r27->func = fn_1_511C; + HuPrcEnd(); } void fn_1_511C(omObjData *object) { - Vec spC; - s32 temp_r31; - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelRotGet(lbl_1_bss_C2[temp_r31], &spC); - lbl_1_bss_B0[temp_r31] = spC.x; - } - fn_1_3F64(); - omDelObjEx(boardObjMan, object); + Vec spC; + s32 temp_r31; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelRotGet(lbl_1_bss_C2[temp_r31], &spC); + lbl_1_bss_B0[temp_r31] = spC.x; + } + fn_1_3F64(); + omDelObjEx(boardObjMan, object); } void fn_1_51B4(Vec *arg0) { - s32 temp_r31; - Vec sp8; - BoardModelPosSetV(lbl_1_bss_30[8], arg0); - BoardModelPosSetV(lbl_1_bss_30[9], arg0); - for(temp_r31=0; temp_r31<3; temp_r31++) { - VECAdd(arg0, &lbl_1_data_378[temp_r31], &sp8); - BoardModelPosSetV(lbl_1_bss_C2[temp_r31], &sp8); - VECAdd(arg0, &lbl_1_data_39C[temp_r31], &sp8); - BoardModelPosSetV(lbl_1_bss_BC[temp_r31], &sp8); - } + s32 temp_r31; + Vec sp8; + BoardModelPosSetV(lbl_1_bss_30[8], arg0); + BoardModelPosSetV(lbl_1_bss_30[9], arg0); + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + VECAdd(arg0, &lbl_1_data_378[temp_r31], &sp8); + BoardModelPosSetV(lbl_1_bss_C2[temp_r31], &sp8); + VECAdd(arg0, &lbl_1_data_39C[temp_r31], &sp8); + BoardModelPosSetV(lbl_1_bss_BC[temp_r31], &sp8); + } } void fn_1_53B8(omObjData *object); void fn_1_5290(omObjData *object) { - WorkMGCoin *temp_r31; - float sp8[2]; - if(object->work[2] == 0) { - temp_r31 = object->data; - temp_r31->unk18 = 5; - temp_r31->unk1A = 60; - temp_r31->unk1C = MGSeqTimerCreateXY(temp_r31->unk18, 288, 64); - HuWinMesMaxSizeGet(1, sp8, 0x130015); - temp_r31->unk1E = HuWinCreate(-10000, 400, sp8[0], sp8[1], 0); - HuWinMesSet(temp_r31->unk1E, 0x130015); - HuWinBGTPLvlSet(temp_r31->unk1E, 0); - HuWinMesSpeedSet(temp_r31->unk1E, 0); - temp_r31->unk20 = frandmod(100)+20; - object->func = fn_1_53B8; - } else { - object->work[2]--; - } + WorkMGCoin *temp_r31; + float sp8[2]; + if (object->work[2] == 0) { + temp_r31 = object->data; + temp_r31->unk18 = 5; + temp_r31->unk1A = REFRESH_RATE; + temp_r31->unk1C = MGSeqTimerCreateXY(temp_r31->unk18, 288, 64); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x13, 0x15)); + temp_r31->unk1E = HuWinCreate(-10000, 400, sp8[0], sp8[1], 0); + HuWinMesSet(temp_r31->unk1E, MAKE_MESSID(0x13, 0x15)); + HuWinBGTPLvlSet(temp_r31->unk1E, 0); + HuWinMesSpeedSet(temp_r31->unk1E, 0); + temp_r31->unk20 = frandmod(100) + 20; + object->func = fn_1_53B8; + } + else { + object->work[2]--; + } } void fn_1_5634(omObjData *object); void fn_1_53B8(omObjData *object) { - Vec sp14; - Vec sp8; - WorkMGCoin *temp_r31; - s32 temp_r29; - s32 temp_r28; - temp_r31 = object->data; - temp_r28 = GWPlayer[lbl_1_bss_86].port; - if(--temp_r31->unk1A == 0) { - temp_r31->unk1A = 60; - if(--temp_r31->unk18 >= 0) { - MGSeqParamSet(temp_r31->unk1C, 1, temp_r31->unk18); - } - } - if(!GWPlayer[lbl_1_bss_86].com) { - temp_r29 = HuPadBtnDown[temp_r28]; - } else { - if(--temp_r31->unk20 == 0) { - temp_r29 = PAD_BUTTON_A; - } - } - if((temp_r29 & PAD_BUTTON_A) || temp_r31->unk18 < 0) { - MGSeqParamSet(temp_r31->unk1C, 2, -1); - HuWinKill(temp_r31->unk1E); - BoardPlayerMotionShiftSet(lbl_1_bss_86, 4, 0, 5, 0); - temp_r31->unk0 = 10; - temp_r31->unk4 = 0; - if(lbl_1_bss_A4->work[0] & 0x1) { - temp_r31->unk8 = 0; - } else { - if(lbl_1_bss_A4->work[0] & 0x2) { - temp_r31->unk8 = 1; - } else { - temp_r31->unk8 = 2; - } - } - BoardPlayerPosGet(lbl_1_bss_86, &sp14); - sp8 = lbl_1_bss_94; - VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8); - VECSubtract(&sp8, &sp14, &temp_r31->unkC); - VECScale(&temp_r31->unkC, &temp_r31->unkC, 0.05f); - object->work[0] = 1; - object->func = fn_1_5634; - } + Vec sp14; + Vec sp8; + WorkMGCoin *temp_r31; + s32 temp_r29; + s32 temp_r28; + temp_r31 = object->data; + temp_r28 = GWPlayer[lbl_1_bss_86].port; + if (--temp_r31->unk1A == 0) { + temp_r31->unk1A = REFRESH_RATE; + if (--temp_r31->unk18 >= 0) { + MGSeqParamSet(temp_r31->unk1C, 1, temp_r31->unk18); + } + } + if (!GWPlayer[lbl_1_bss_86].com) { + temp_r29 = HuPadBtnDown[temp_r28]; + } + else { + if (--temp_r31->unk20 == 0) { + temp_r29 = PAD_BUTTON_A; + } + } + if ((temp_r29 & PAD_BUTTON_A) || temp_r31->unk18 < 0) { + MGSeqParamSet(temp_r31->unk1C, 2, -1); + HuWinKill(temp_r31->unk1E); + BoardPlayerMotionShiftSet(lbl_1_bss_86, 4, 0, 5, HU3D_MOTATTR_NONE); + temp_r31->unk0 = 10; + temp_r31->unk4 = 0; + if (lbl_1_bss_A4->work[0] & 0x1) { + temp_r31->unk8 = 0; + } + else { + if (lbl_1_bss_A4->work[0] & 0x2) { + temp_r31->unk8 = 1; + } + else { + temp_r31->unk8 = 2; + } + } + BoardPlayerPosGet(lbl_1_bss_86, &sp14); + sp8 = lbl_1_bss_94; + VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8); + VECSubtract(&sp8, &sp14, &temp_r31->unkC); + VECScale(&temp_r31->unkC, &temp_r31->unkC, 0.05f); + object->work[0] = 1; + object->func = fn_1_5634; + } } void fn_1_5868(omObjData *object); void fn_1_5634(omObjData *object) { - Vec sp14; - Vec sp8; - float temp_f31; - WorkMGCoin *temp_r31; - temp_r31 = object->data; - if(object->work[0] == 1) { - BoardPlayerPosGet(lbl_1_bss_86, &sp14); - temp_r31->unkC.y = temp_r31->unk0-(0.075f*(0.25f*(temp_r31->unk4*temp_r31->unk4))); - temp_r31->unk4++; - VECAdd(&sp14, &temp_r31->unkC, &sp14); - if(sp14.y <= lbl_1_bss_94.y) { - sp14.y = lbl_1_bss_94.y; - } - BoardPlayerPosSetV(lbl_1_bss_86, &sp14); - sp8 = lbl_1_bss_94; - VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8); - sp8.y = sp14.y = 0; - VECSubtract(&sp8, &sp14, &sp14); - temp_f31 = VECMag(&sp14); - if(temp_f31 <= 1.0f) { - BoardPlayerMotionStart(lbl_1_bss_86, object->motion[0], 0); - object->work[0] = 0; - } - } else { - if(BoardPlayerMotionTimeGet(lbl_1_bss_86) >= BoardPlayerMotionMaxTimeGet(lbl_1_bss_86)) { - temp_r31->unk0 = -5; - temp_r31->unk4 = 0; - temp_r31->unkC.x = temp_r31->unkC.z = 0; - object->func = fn_1_5868; - } - } + Vec sp14; + Vec sp8; + float temp_f31; + WorkMGCoin *temp_r31; + temp_r31 = object->data; + if (object->work[0] == 1) { + BoardPlayerPosGet(lbl_1_bss_86, &sp14); + temp_r31->unkC.y = temp_r31->unk0 - (0.075f * (0.25f * (temp_r31->unk4 * temp_r31->unk4))); + temp_r31->unk4++; + VECAdd(&sp14, &temp_r31->unkC, &sp14); + if (sp14.y <= lbl_1_bss_94.y) { + sp14.y = lbl_1_bss_94.y; + } + BoardPlayerPosSetV(lbl_1_bss_86, &sp14); + sp8 = lbl_1_bss_94; + VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8); + sp8.y = sp14.y = 0; + VECSubtract(&sp8, &sp14, &sp14); + temp_f31 = VECMag(&sp14); + if (temp_f31 <= 1.0f) { + BoardPlayerMotionStart(lbl_1_bss_86, object->motion[0], 0); + object->work[0] = 0; + } + } + else { + if (BoardPlayerMotionTimeGet(lbl_1_bss_86) >= BoardPlayerMotionMaxTimeGet(lbl_1_bss_86)) { + temp_r31->unk0 = -5; + temp_r31->unk4 = 0; + temp_r31->unkC.x = temp_r31->unkC.z = 0; + object->func = fn_1_5868; + } + } } void fn_1_5AC0(omObjData *object); void fn_1_5868(omObjData *object) { - Vec sp14; - Vec sp8; - WorkMGCoin *temp_r31; - temp_r31 = object->data; - BoardPlayerPosGet(lbl_1_bss_86, &sp14); - temp_r31->unkC.y = temp_r31->unk0-(0.075f*(0.25f*(temp_r31->unk4*temp_r31->unk4))); - temp_r31->unk4++; - VECAdd(&sp14, &temp_r31->unkC, &sp14); - sp8 = lbl_1_bss_94; - VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8); - sp8.y += 16.0f; - if(sp14.y <= sp8.y) { - sp14.y = sp8.y; - } - BoardPlayerPosSetV(lbl_1_bss_86, &sp14); - if(sp14.y == sp8.y) { - BoardModelMotionTimeSet(lbl_1_bss_BC[temp_r31->unk8], 0); - BoardModelAttrReset(lbl_1_bss_BC[temp_r31->unk8], 0x40000002); - BoardPlayerMotionShiftSet(lbl_1_bss_86, object->motion[1], 0, 5, 0); - lbl_1_bss_A4->work[3] |= 1 << temp_r31->unk8; - temp_r31->unk0 = 5; - temp_r31->unk4 = 0; - sp8.x = object->trans.x; - sp8.y = object->trans.y; - sp8.z = object->trans.z; - VECSubtract(&sp8, &sp14, &temp_r31->unkC); - VECScale(&temp_r31->unkC, &temp_r31->unkC, 0.03f); - HuAudFXPlay(1064); - object->func = fn_1_5AC0; - - } + Vec sp14; + Vec sp8; + WorkMGCoin *temp_r31; + temp_r31 = object->data; + BoardPlayerPosGet(lbl_1_bss_86, &sp14); + temp_r31->unkC.y = temp_r31->unk0 - (0.075f * (0.25f * (temp_r31->unk4 * temp_r31->unk4))); + temp_r31->unk4++; + VECAdd(&sp14, &temp_r31->unkC, &sp14); + sp8 = lbl_1_bss_94; + VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8); + sp8.y += 16.0f; + if (sp14.y <= sp8.y) { + sp14.y = sp8.y; + } + BoardPlayerPosSetV(lbl_1_bss_86, &sp14); + if (sp14.y == sp8.y) { + BoardModelMotionTimeSet(lbl_1_bss_BC[temp_r31->unk8], 0); + BoardModelAttrReset(lbl_1_bss_BC[temp_r31->unk8], 0x40000002); + BoardPlayerMotionShiftSet(lbl_1_bss_86, object->motion[1], 0, 5, HU3D_MOTATTR_NONE); + lbl_1_bss_A4->work[3] |= 1 << temp_r31->unk8; + temp_r31->unk0 = 5; + temp_r31->unk4 = 0; + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z; + VECSubtract(&sp8, &sp14, &temp_r31->unkC); + VECScale(&temp_r31->unkC, &temp_r31->unkC, 0.03f); + HuAudFXPlay(1064); + object->func = fn_1_5AC0; + } } void fn_1_5C84(omObjData *object); void fn_1_5AC0(omObjData *object) { - float temp_f31; - float temp_f30; - Vec sp14; - Vec sp8; - WorkMGCoin *temp_r30; - temp_r30 = object->data; - BoardPlayerPosGet(lbl_1_bss_86, &sp14); - temp_r30->unkC.y = temp_r30->unk0-(0.075f*(0.25f*(temp_r30->unk4*temp_r30->unk4))); - temp_r30->unk4++; - VECAdd(&sp14, &temp_r30->unkC, &sp14); - sp8.x = object->trans.x; - sp8.y = 0; - sp8.z = object->trans.z; - temp_f30 = sp14.y; - sp14.y = 0; - VECSubtract(&sp8, &sp14, &sp8); - sp14.y = temp_f30; - temp_f31 = VECMag(&sp8); - if(temp_f31 <= 1.0f) { - temp_r30->unkC.x = temp_r30->unkC.z = 0; - } - if(sp14.y <= object->trans.y) { - sp14.x = object->trans.x; - sp14.y = object->trans.y; - sp14.z = object->trans.z; - BoardPlayerIdleSet(lbl_1_bss_86); - if(temp_r30->unk8 != 2) { - object->func = NULL; - } else { - object->work[1] = 8; - object->func = fn_1_5C84; - } - } - BoardPlayerPosSetV(lbl_1_bss_86, &sp14); + float temp_f31; + float temp_f30; + Vec sp14; + Vec sp8; + WorkMGCoin *temp_r30; + temp_r30 = object->data; + BoardPlayerPosGet(lbl_1_bss_86, &sp14); + temp_r30->unkC.y = temp_r30->unk0 - (0.075f * (0.25f * (temp_r30->unk4 * temp_r30->unk4))); + temp_r30->unk4++; + VECAdd(&sp14, &temp_r30->unkC, &sp14); + sp8.x = object->trans.x; + sp8.y = 0; + sp8.z = object->trans.z; + temp_f30 = sp14.y; + sp14.y = 0; + VECSubtract(&sp8, &sp14, &sp8); + sp14.y = temp_f30; + temp_f31 = VECMag(&sp8); + if (temp_f31 <= 1.0f) { + temp_r30->unkC.x = temp_r30->unkC.z = 0; + } + if (sp14.y <= object->trans.y) { + sp14.x = object->trans.x; + sp14.y = object->trans.y; + sp14.z = object->trans.z; + BoardPlayerIdleSet(lbl_1_bss_86); + if (temp_r30->unk8 != 2) { + object->func = NULL; + } + else { + object->work[1] = 8; + object->func = fn_1_5C84; + } + } + BoardPlayerPosSetV(lbl_1_bss_86, &sp14); } void fn_1_5C84(omObjData *object) { - WorkMGCoin *sp8; - sp8 = object->data; - if(object->work[1] != 0) { - if(--object->work[1] == 0) { - BoardPlayerMotBlendSet(lbl_1_bss_86, 0, 15); - object->func = NULL; - } - (void)object; - } else { - (void)object; - } -} \ No newline at end of file + WorkMGCoin *sp8; + sp8 = object->data; + if (object->work[1] != 0) { + if (--object->work[1] == 0) { + BoardPlayerMotBlendSet(lbl_1_bss_86, 0, 15); + object->func = NULL; + } + (void)object; + } + else { + (void)object; + } +} diff --git a/src/REL/w02Dll/mg_item.c b/src/REL/w02Dll/mg_item.c index a03f2ed7..fd0f4073 100644 --- a/src/REL/w02Dll/mg_item.c +++ b/src/REL/w02Dll/mg_item.c @@ -1,45 +1,41 @@ #include "REL/w02Dll.h" #include "game/audio.h" -#include "game/pad.h" -#include "game/objsub.h" -#include "game/frand.h" -#include "game/objsub.h" #include "game/chrman.h" +#include "game/frand.h" #include "game/hsfdraw.h" +#include "game/objsub.h" +#include "game/pad.h" #include "ext_math.h" #include "game/minigame_seq.h" +#if VERSION_JP +#define MDL_ID_SHIFT 0 +#else +#define MDL_ID_SHIFT 1 +#endif + s32 lbl_1_data_428[14] = { - 0x0007006D, - 0x0007006E, - 0x0007006F, - 0x00070070, - 0x00070071, - 0x00070072, - 0x00070073, - 0x00070074, - 0x00070076, - 0x00070077, - 0x00070078, - 0x00070079, - 0x0007007A, - 0x0007007B + DATA_MAKE_NUM(DATADIR_BOARD, 0x6C + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6D + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6E + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6F + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x70 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x71 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x72 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x73 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x75 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x76 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x77 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x78 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x79 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x7A + MDL_ID_SHIFT), }; -char *lbl_1_data_474[3] = { - "item", - "item1", - "item2" -}; +char *lbl_1_data_474[3] = { "item", "item1", "item2" }; -s32 lbl_1_data_480[] = { - 0x760018, - 0x760019, - 0x76001A, - -1 -}; +s32 lbl_1_data_480[] = { DATA_MAKE_NUM(DATADIR_W02, 0x18), DATA_MAKE_NUM(DATADIR_W02, 0x19), DATA_MAKE_NUM(DATADIR_W02, 0x1A), -1 }; u16 lbl_1_bss_198; s16 lbl_1_bss_196; @@ -62,28 +58,28 @@ AnimData *lbl_1_bss_C8; void fn_1_5CF8(void) { - BoardModelVisibilitySet(lbl_1_bss_30[10], 1); + BoardModelVisibilitySet(lbl_1_bss_30[10], 1); } typedef struct work_mgitem { - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; - s16 unkC; + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; } WorkMGItem; typedef struct work_mgitem_player { - Vec unk0[3]; - s16 unk24[3]; - s16 unk2A[3]; - float unk30[2]; - float unk38[2]; - s16 unk40[2]; - Vec unk44[3]; - s16 unk68; + Vec unk0[3]; + s16 unk24[3]; + s16 unk2A[3]; + float unk30[2]; + float unk38[2]; + s16 unk40[2]; + Vec unk44[3]; + s16 unk68; } WorkMGItemPlayer; void fn_1_8570(void); @@ -93,285 +89,291 @@ void fn_1_606C(omObjData *object); void fn_1_5D28(void) { - Vec spC; - WorkMGItem *sp8; - lbl_1_bss_196 = GWSystem.player_curr; - BoardPlayerPosGet(lbl_1_bss_196, &spC); - BoardPlayerPosLerpStart(lbl_1_bss_196, &spC, &lbl_1_bss_DC[1], 20); - while(GWPlayer[lbl_1_bss_196].moving) { - HuPrcVSleep(); - } - BoardPlayerIdleSet(lbl_1_bss_196); - HuPrcSleep(120); - BoardAudSeqPause(0, 1, 1000); - HuAudFXPlay(781); - fn_1_8570(); - HuPrcSleep(60); - lbl_1_bss_104 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_5F08); - lbl_1_bss_108 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_606C); - lbl_1_bss_10C = omAddObjEx(boardObjMan, 257, 0, 0, -1, NULL); - lbl_1_bss_108->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGItemPlayer), MEMORY_DEFAULT_NUM); - lbl_1_bss_10C->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGItem), MEMORY_DEFAULT_NUM); - sp8 = lbl_1_bss_10C->data; - lbl_1_bss_198 = 0; + Vec spC; + WorkMGItem *sp8; + lbl_1_bss_196 = GWSystem.player_curr; + BoardPlayerPosGet(lbl_1_bss_196, &spC); + BoardPlayerPosLerpStart(lbl_1_bss_196, &spC, &lbl_1_bss_DC[1], 20); + while (GWPlayer[lbl_1_bss_196].moving) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(lbl_1_bss_196); + HuPrcSleep(REFRESH_RATE*2); + BoardAudSeqPause(0, 1, 1000); + HuAudFXPlay(781); + fn_1_8570(); + HuPrcSleep(REFRESH_RATE); + lbl_1_bss_104 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_5F08); + lbl_1_bss_108 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_606C); + lbl_1_bss_10C = omAddObjEx(boardObjMan, 257, 0, 0, -1, NULL); + lbl_1_bss_108->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGItemPlayer), MEMORY_DEFAULT_NUM); + lbl_1_bss_10C->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGItem), MEMORY_DEFAULT_NUM); + sp8 = lbl_1_bss_10C->data; + lbl_1_bss_198 = 0; } void fn_1_602C(void); void fn_1_5F08(omObjData *object) { - if(lbl_1_bss_198 && BoardMGDoneFlagGet() == 1) { - fn_1_602C(); - omDelObjEx(boardObjMan, object); - } + if (lbl_1_bss_198 && BoardMGDoneFlagGet() == 1) { + fn_1_602C(); + omDelObjEx(boardObjMan, object); + } } void fn_1_5F60(void) { - lbl_1_bss_198 = 1; - BoardMGExit(); + lbl_1_bss_198 = 1; + BoardMGExit(); } void fn_1_5F90(void) { - s32 i; - for(i=0; i<3; i++) { - BoardModelKill(lbl_1_bss_184[i]); - BoardModelKill(lbl_1_bss_18A[i]); - } - if(lbl_1_bss_C8) { - HuSprAnimKill(lbl_1_bss_C8); - lbl_1_bss_C8 = NULL; - } + s32 i; + for (i = 0; i < 3; i++) { + BoardModelKill(lbl_1_bss_184[i]); + BoardModelKill(lbl_1_bss_18A[i]); + } + if (lbl_1_bss_C8) { + HuSprAnimKill(lbl_1_bss_C8); + lbl_1_bss_C8 = NULL; + } } void fn_1_602C(void) { - omDelObjEx(boardObjMan, lbl_1_bss_10C); - BoardMGDoneFlagSet(0); + omDelObjEx(boardObjMan, lbl_1_bss_10C); + BoardMGDoneFlagSet(0); } void fn_1_6248(omObjData *object); void fn_1_606C(omObjData *object) { - WorkMGItemPlayer *temp_r31 = object->data; - temp_r31->unk24[0] = lbl_1_bss_18A[0]; - temp_r31->unk24[1] = lbl_1_bss_18A[1]; - temp_r31->unk24[2] = lbl_1_bss_18A[2]; - BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[0]); - temp_r31->unk44[0].x -= lbl_1_bss_110; - BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[1]); - temp_r31->unk44[1].x += lbl_1_bss_110; - BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[2]); - BoardMusStart(1, 19, 127, 0); - object->work[0] = 300; - object->work[1] = 0; - object->func = fn_1_6248; + WorkMGItemPlayer *temp_r31 = object->data; + temp_r31->unk24[0] = lbl_1_bss_18A[0]; + temp_r31->unk24[1] = lbl_1_bss_18A[1]; + temp_r31->unk24[2] = lbl_1_bss_18A[2]; + BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[0]); + temp_r31->unk44[0].x -= lbl_1_bss_110; + BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[1]); + temp_r31->unk44[1].x += lbl_1_bss_110; + BoardModelPosGet(lbl_1_bss_18A[1], &temp_r31->unk44[2]); + BoardMusStart(1, 19, 127, 0); + object->work[0] = REFRESH_RATE*5; + object->work[1] = 0; + object->func = fn_1_6248; } void fn_1_616C(s16 arg0, s16 arg1) { - s32 temp; - temp = lbl_1_bss_190[arg0]; - lbl_1_bss_190[arg0] = lbl_1_bss_190[arg1]; - lbl_1_bss_190[arg1] = temp; - temp = lbl_1_bss_184[arg0]; - lbl_1_bss_184[arg0] = lbl_1_bss_184[arg1]; - lbl_1_bss_184[arg1] = temp; + s32 temp; + temp = lbl_1_bss_190[arg0]; + lbl_1_bss_190[arg0] = lbl_1_bss_190[arg1]; + lbl_1_bss_190[arg1] = temp; + temp = lbl_1_bss_184[arg0]; + lbl_1_bss_184[arg0] = lbl_1_bss_184[arg1]; + lbl_1_bss_184[arg1] = temp; } void fn_1_6AB0(omObjData *object); void fn_1_6248(omObjData *object) { - float temp_f31; - float temp_f30; - Vec sp34; - Vec sp28; - Vec sp1C; - Vec sp10; - u8 sp8[8] = { - 0, 1, 1, 2, - 0, 1, 0, 2 - }; - WorkMGItemPlayer *temp_r31 = object->data; - s32 temp_r30; - s32 temp_r28; - if(object->work[0]) { - object->work[0]--; - } - if(object->work[1] == 0) { - if(object->work[0] == 0) { - object->func = fn_1_6AB0; - } - temp_r28 = sp8[frand() & 0x7]; - switch(temp_r28) { - case 0: - temp_r31->unk2A[0] = temp_r31->unk24[0]; - temp_r31->unk2A[1] = temp_r31->unk24[1]; - sp28 = lbl_1_bss_160[0]; - sp34 = lbl_1_bss_160[1]; - temp_f31 = 15; - break; - - case 1: - temp_r31->unk2A[0] = temp_r31->unk24[1]; - temp_r31->unk2A[1] = temp_r31->unk24[2]; - sp28 = lbl_1_bss_160[1]; - sp34 = lbl_1_bss_160[2]; - temp_f31 = 15; - break; - - case 2: - temp_r31->unk2A[0] = temp_r31->unk24[0]; - temp_r31->unk2A[1] = temp_r31->unk24[2]; - temp_f31 = 22.5f; - break; - } - temp_r31->unk68 = temp_r28; - temp_r31->unk30[0] = 180; - temp_r31->unk30[1] = 0; - if(temp_r28 != 2) { - temp_r31->unk40[0] = frandmod(3); - temp_r31->unk40[1] = frandmod(3); - while(temp_r31->unk40[1] == temp_r31->unk40[0]) { - temp_r31->unk40[1] = frandmod(3); - } - VECSubtract(&sp34, &sp28, &temp_r31->unk0[0]); - VECScale(&temp_r31->unk0[0], &temp_r31->unk0[0], 1.0f/temp_f31); - VECSubtract(&sp28, &sp34, &temp_r31->unk0[1]); - VECScale(&temp_r31->unk0[1], &temp_r31->unk0[1], 1.0f/temp_f31); - } else { - temp_r31->unk40[0] = frandmod(2); - temp_r31->unk40[1] = temp_r31->unk40[0]^1; - } - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(temp_r31->unk40[temp_r30] == 0) { - temp_r31->unk38[temp_r30] = 180.0f/temp_f31; - } else { - temp_r31->unk38[temp_r30] = -180.0f/temp_f31; - } - if(temp_r30 == 1) { - temp_r31->unk38[temp_r30] = -temp_r31->unk38[temp_r30]; - } - } - object->work[2] = temp_f31; - object->work[1] = 1; - BoardModelMotionStart(temp_r31->unk2A[temp_r30], 2, 0x40000001); - BoardModelMotionSpeedSet(temp_r31->unk2A[temp_r30], 3.0f); - } else { - for(temp_r30=0; temp_r30<2; temp_r30++) { - BoardModelPosGet(temp_r31->unk2A[temp_r30], &sp1C); - sp10 = sp1C; - if(temp_r31->unk68 != 2) { - temp_f30 = lbl_1_bss_110; - } else { - temp_f30 = 2.0f*lbl_1_bss_110; - } - if(temp_r31->unk40[temp_r30] != 2) { - sp1C.x = temp_r31->unk44[temp_r31->unk68].x+(temp_f30*cosd(temp_r31->unk30[temp_r30])); - sp1C.z = temp_r31->unk44[temp_r31->unk68].z+(temp_f30*sind(temp_r31->unk30[temp_r30])); - temp_r31->unk30[temp_r30] += temp_r31->unk38[temp_r30]; - } else { - VECAdd(&sp1C, &temp_r31->unk0[temp_r30], &sp1C); - } - BoardModelPosSetV(temp_r31->unk2A[temp_r30], &sp1C); - VECSubtract(&sp1C, &sp10, &sp10); - BoardModelRotGet(temp_r31->unk2A[temp_r30], &sp1C); - sp1C.y = atan2d(sp10.x, sp10.z); - BoardModelRotSetV(temp_r31->unk2A[temp_r30], &sp1C); - } - if(--object->work[2] == 0) { - object->work[1] = 0; - BoardModelMotionStart(temp_r31->unk2A[temp_r30], 1, 0x40000001); - BoardModelMotionSpeedSet(temp_r31->unk2A[temp_r30], 1.0f); - for(temp_r30=0; temp_r30<2; temp_r30++) { - if(temp_r31->unk40[temp_r30] == 0) { - BoardModelRotGet(temp_r31->unk2A[temp_r30], &sp1C); - sp1C.y = 0; - BoardModelRotSetV(temp_r31->unk2A[temp_r30], &sp1C); - } else if(temp_r31->unk40[temp_r30] == 1) { - BoardModelRotGet(temp_r31->unk2A[temp_r30], &sp1C); - sp1C.y = 180; - BoardModelRotSetV(temp_r31->unk2A[temp_r30], &sp1C); - } - } - switch(temp_r31->unk68) { - case 0: - temp_r31->unk24[0] = temp_r31->unk2A[1]; - temp_r31->unk24[1] = temp_r31->unk2A[0]; - fn_1_616C(0, 1); - break; - - case 1: - temp_r31->unk24[1] = temp_r31->unk2A[1]; - temp_r31->unk24[2] = temp_r31->unk2A[0]; - fn_1_616C(1, 2); - break; - - case 2: - temp_r31->unk24[0] = temp_r31->unk2A[1]; - temp_r31->unk24[2] = temp_r31->unk2A[0]; - fn_1_616C(0, 2); - break; - } - for(temp_r30=0; temp_r30<3; temp_r30++) { - BoardModelPosSetV(temp_r31->unk24[temp_r30], &lbl_1_bss_160[temp_r30]); - } - } - } + float temp_f31; + float temp_f30; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + u8 sp8[8] = { 0, 1, 1, 2, 0, 1, 0, 2 }; + WorkMGItemPlayer *temp_r31 = object->data; + s32 temp_r30; + s32 temp_r28; + if (object->work[0]) { + object->work[0]--; + } + if (object->work[1] == 0) { + if (object->work[0] == 0) { + object->func = fn_1_6AB0; + } + temp_r28 = sp8[frand() & 0x7]; + switch (temp_r28) { + case 0: + temp_r31->unk2A[0] = temp_r31->unk24[0]; + temp_r31->unk2A[1] = temp_r31->unk24[1]; + sp28 = lbl_1_bss_160[0]; + sp34 = lbl_1_bss_160[1]; + temp_f31 = (VERSION_PAL) ? 13 : 15; + break; + + case 1: + temp_r31->unk2A[0] = temp_r31->unk24[1]; + temp_r31->unk2A[1] = temp_r31->unk24[2]; + sp28 = lbl_1_bss_160[1]; + sp34 = lbl_1_bss_160[2]; + temp_f31 = (VERSION_PAL) ? 13 : 15; + break; + + case 2: + temp_r31->unk2A[0] = temp_r31->unk24[0]; + temp_r31->unk2A[1] = temp_r31->unk24[2]; + temp_f31 = (VERSION_PAL) ? 19.5f : 22.5f; + break; + } + temp_r31->unk68 = temp_r28; + temp_r31->unk30[0] = 180; + temp_r31->unk30[1] = 0; + if (temp_r28 != 2) { + temp_r31->unk40[0] = frandmod(3); + temp_r31->unk40[1] = frandmod(3); + while (temp_r31->unk40[1] == temp_r31->unk40[0]) { + temp_r31->unk40[1] = frandmod(3); + } + VECSubtract(&sp34, &sp28, &temp_r31->unk0[0]); + VECScale(&temp_r31->unk0[0], &temp_r31->unk0[0], 1.0f / temp_f31); + VECSubtract(&sp28, &sp34, &temp_r31->unk0[1]); + VECScale(&temp_r31->unk0[1], &temp_r31->unk0[1], 1.0f / temp_f31); + } + else { + temp_r31->unk40[0] = frandmod(2); + temp_r31->unk40[1] = temp_r31->unk40[0] ^ 1; + } + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (temp_r31->unk40[temp_r30] == 0) { + temp_r31->unk38[temp_r30] = 180.0f / temp_f31; + } + else { + temp_r31->unk38[temp_r30] = -180.0f / temp_f31; + } + if (temp_r30 == 1) { + temp_r31->unk38[temp_r30] = -temp_r31->unk38[temp_r30]; + } + } + object->work[2] = temp_f31; + object->work[1] = 1; + BoardModelMotionStart(temp_r31->unk2A[temp_r30], 2, 0x40000001); + BoardModelMotionSpeedSet(temp_r31->unk2A[temp_r30], 3.0f); + } + else { + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + BoardModelPosGet(temp_r31->unk2A[temp_r30], &sp1C); + sp10 = sp1C; + if (temp_r31->unk68 != 2) { + temp_f30 = lbl_1_bss_110; + } + else { + temp_f30 = 2.0f * lbl_1_bss_110; + } + if (temp_r31->unk40[temp_r30] != 2) { + sp1C.x = temp_r31->unk44[temp_r31->unk68].x + (temp_f30 * cosd(temp_r31->unk30[temp_r30])); + sp1C.z = temp_r31->unk44[temp_r31->unk68].z + (temp_f30 * sind(temp_r31->unk30[temp_r30])); + temp_r31->unk30[temp_r30] += temp_r31->unk38[temp_r30]; + } + else { + VECAdd(&sp1C, &temp_r31->unk0[temp_r30], &sp1C); + } + BoardModelPosSetV(temp_r31->unk2A[temp_r30], &sp1C); + VECSubtract(&sp1C, &sp10, &sp10); + BoardModelRotGet(temp_r31->unk2A[temp_r30], &sp1C); + sp1C.y = atan2d(sp10.x, sp10.z); + BoardModelRotSetV(temp_r31->unk2A[temp_r30], &sp1C); + } + if (--object->work[2] == 0) { + object->work[1] = 0; + BoardModelMotionStart(temp_r31->unk2A[temp_r30], 1, 0x40000001); + BoardModelMotionSpeedSet(temp_r31->unk2A[temp_r30], 1.0f); + for (temp_r30 = 0; temp_r30 < 2; temp_r30++) { + if (temp_r31->unk40[temp_r30] == 0) { + BoardModelRotGet(temp_r31->unk2A[temp_r30], &sp1C); + sp1C.y = 0; + BoardModelRotSetV(temp_r31->unk2A[temp_r30], &sp1C); + } + else if (temp_r31->unk40[temp_r30] == 1) { + BoardModelRotGet(temp_r31->unk2A[temp_r30], &sp1C); + sp1C.y = 180; + BoardModelRotSetV(temp_r31->unk2A[temp_r30], &sp1C); + } + } + switch (temp_r31->unk68) { + case 0: + temp_r31->unk24[0] = temp_r31->unk2A[1]; + temp_r31->unk24[1] = temp_r31->unk2A[0]; + fn_1_616C(0, 1); + break; + + case 1: + temp_r31->unk24[1] = temp_r31->unk2A[1]; + temp_r31->unk24[2] = temp_r31->unk2A[0]; + fn_1_616C(1, 2); + break; + + case 2: + temp_r31->unk24[0] = temp_r31->unk2A[1]; + temp_r31->unk24[2] = temp_r31->unk2A[0]; + fn_1_616C(0, 2); + break; + } + for (temp_r30 = 0; temp_r30 < 3; temp_r30++) { + BoardModelPosSetV(temp_r31->unk24[temp_r30], &lbl_1_bss_160[temp_r30]); + } + } + } } void fn_1_6CA4(omObjData *object); void fn_1_6AB0(omObjData *object) { - Vec sp8; - s32 temp_r31; - s32 temp_r30; - temp_r30 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelRotGet(lbl_1_bss_18A[temp_r31], &sp8); - if(sp8.y < 0.0f) { - sp8.y += 360.0f; - } - if(0.0f == sp8.y) { - temp_r30++; - continue; - } - if(sp8.y < 180.0f) { - if(sp8.y < -10.0f) { - sp8.y = 0; - } else { - sp8.y -= 10.0f; - } - } else { - if(360.0f-sp8.y < 10.0f) { - sp8.y = 0; - } else { - sp8.y += 10.0f; - } - } - BoardModelRotSetV(lbl_1_bss_18A[temp_r31], &sp8); - } - if(temp_r30 == 3) { - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); - } - object->work[0] = MGSeqStartCreate(); - object->func = fn_1_6CA4; - } + Vec sp8; + s32 temp_r31; + s32 temp_r30; + temp_r30 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelRotGet(lbl_1_bss_18A[temp_r31], &sp8); + if (sp8.y < 0.0f) { + sp8.y += 360.0f; + } + if (0.0f == sp8.y) { + temp_r30++; + continue; + } + if (sp8.y < 180.0f) { + if (sp8.y < -10.0f) { + sp8.y = 0; + } + else { + sp8.y -= 10.0f; + } + } + else { + if (360.0f - sp8.y < 10.0f) { + sp8.y = 0; + } + else { + sp8.y += 10.0f; + } + } + BoardModelRotSetV(lbl_1_bss_18A[temp_r31], &sp8); + } + if (temp_r30 == 3) { + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); + } + object->work[0] = MGSeqStartCreate(); + object->func = fn_1_6CA4; + } } void fn_1_73C8(omObjData *object); void fn_1_6CA4(omObjData *object) { - if(!MGSeqStatGet(object->work[0])) { - lbl_1_bss_10C->func = fn_1_73C8; - object->func = NULL; - } + if (!MGSeqStatGet(object->work[0])) { + lbl_1_bss_10C->func = fn_1_73C8; + object->func = NULL; + } } void fn_1_6E34(omObjData *object); @@ -380,161 +382,161 @@ void fn_1_8DAC(void); void fn_1_6D04(omObjData *object) { - Vec sp8; - BoardModelRotGet(lbl_1_bss_18A[object->work[0]], &sp8); - sp8.y += 8.0f; - if(sp8.y >= 360.0f) { - sp8.y = 0.0f; - HuAudFXPlay(784); - lbl_1_bss_100 = HuPrcCreate(fn_1_85FC, 8196, 8192, 0); - HuPrcDestructorSet2(lbl_1_bss_100, fn_1_8DAC); - *((u32 *)&lbl_1_bss_100->user_data) = (1 << object->work[0])|0x10000000; - lbl_1_bss_D8 = HuAudFXPlay(863); - object->func = fn_1_6E34; - } - BoardModelRotSetV(lbl_1_bss_18A[object->work[0]], &sp8); + Vec sp8; + BoardModelRotGet(lbl_1_bss_18A[object->work[0]], &sp8); + sp8.y += 8.0f; + if (sp8.y >= 360.0f) { + sp8.y = 0.0f; + HuAudFXPlay(784); + lbl_1_bss_100 = HuPrcCreate(fn_1_85FC, 8196, 8192, 0); + HuPrcDestructorSet2(lbl_1_bss_100, fn_1_8DAC); + *((u32 *)&lbl_1_bss_100->user_data) = (1 << object->work[0]) | 0x10000000; + lbl_1_bss_D8 = HuAudFXPlay(863); + object->func = fn_1_6E34; + } + BoardModelRotSetV(lbl_1_bss_18A[object->work[0]], &sp8); } void fn_1_6EA8(void); void fn_1_6E34(omObjData *object) { - Process *temp_r31; - if((u32)lbl_1_bss_100->user_data & 0x40000000) { - temp_r31 = HuPrcCreate(fn_1_6EA8, 8196, 6144, 0); - temp_r31->user_data = object; - object->func = NULL; - } + Process *temp_r31; + if ((u32)lbl_1_bss_100->user_data & 0x40000000) { + temp_r31 = HuPrcCreate(fn_1_6EA8, 8196, 6144, 0); + temp_r31->user_data = object; + object->func = NULL; + } } void fn_1_72E4(omObjData *object); void fn_1_6EA8(void) { - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - float temp_f31; - float temp_f30; - float temp_f29; - s32 temp_r31; - s32 temp_r30; - s32 temp_r29; - s32 temp_r28; - - temp_r31 = lbl_1_bss_108->work[0]; - BoardWinCreate(2, MAKE_MESSID(19, 24), 4); - BoardWinInsertMesSet(lbl_1_bss_190[temp_r31]+0x80000, 1); - BoardWinWait(); - BoardWinKill(); - BoardPlayerPosGet(lbl_1_bss_196, &sp20); - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); - sp20.y = sp2C.y = 0; - VECSubtract(&sp20, &sp2C, &sp14); - temp_f30 = VECMag(&sp14); - VECScale(&sp14, &sp14, 1.0f/60.0f); - for(temp_r30=0; temp_r30<60; temp_r30++) { - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); - VECAdd(&sp2C, &sp14, &sp2C); - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C); - HuPrcVSleep(); - } - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); - sp2C.x = sp20.x; - sp2C.z = sp20.z; - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C); - BoardPlayerMotBlendSet(lbl_1_bss_196, 0, 15); - while(!BoardPlayerMotBlendCheck(lbl_1_bss_196)) { - HuPrcVSleep(); - } - HuPrcKill(lbl_1_bss_100); - lbl_1_bss_100 = NULL; - HuPrcVSleep(); - HuAudFXPlay(781); - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); - BoardModelScaleGet(lbl_1_bss_184[temp_r31], &sp8); - temp_f31 = sp8.x; - temp_f29 = -0.04f; - temp_f30 = (sp20.y-sp2C.y)/30.0f; - temp_r29 = 0; - HuAudFXFadeOut(lbl_1_bss_D8, 499); - while(!temp_r29) { - sp2C.y += temp_f30; - temp_f31 += temp_f29; - if(temp_f31 < 0.0f) { - temp_f31 = 0.0f; - temp_r29 = 1; - } - sp8.x = sp8.y = sp8.z = temp_f31; - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C); - BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp8); - HuPrcVSleep(); - } - HuAudFXStop(lbl_1_bss_D8); - BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 0); - BoardPlayerItemAdd(lbl_1_bss_196, lbl_1_bss_190[temp_r31]); - omVibrate(lbl_1_bss_196, 12, 6, 6); - temp_r28 = HuAudSStreamPlay(2); - BoardPlayerMotionShiftSet(lbl_1_bss_196, 7, 0, 5, 0); - while(!BoardPlayerMotionEndCheck(lbl_1_bss_196)) { - HuPrcVSleep(); - } - HuPrcSleep(30); - while(HuAudSStreamStatGet(temp_r28)) { - HuPrcVSleep(); - } - BoardAudSeqPause(0, 0, 1000); - HuAudFXPlay(68); - fn_1_121C(0x130019); - lbl_1_bss_108->func = fn_1_72E4; - HuPrcKill(NULL); - while(1) { - HuPrcVSleep(); - } + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float temp_f31; + float temp_f30; + float temp_f29; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + + temp_r31 = lbl_1_bss_108->work[0]; + BoardWinCreate(2, MAKE_MESSID(19, 24), 4); + BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_190[temp_r31]), 1); + BoardWinWait(); + BoardWinKill(); + BoardPlayerPosGet(lbl_1_bss_196, &sp20); + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); + sp20.y = sp2C.y = 0; + VECSubtract(&sp20, &sp2C, &sp14); + temp_f30 = VECMag(&sp14); + VECScale(&sp14, &sp14, 1.0f / REFRESH_RATE); + for (temp_r30 = 0; temp_r30 < REFRESH_RATE; temp_r30++) { + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); + VECAdd(&sp2C, &sp14, &sp2C); + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C); + HuPrcVSleep(); + } + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); + sp2C.x = sp20.x; + sp2C.z = sp20.z; + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C); + BoardPlayerMotBlendSet(lbl_1_bss_196, 0, 15); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_196)) { + HuPrcVSleep(); + } + HuPrcKill(lbl_1_bss_100); + lbl_1_bss_100 = NULL; + HuPrcVSleep(); + HuAudFXPlay(781); + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp2C); + BoardModelScaleGet(lbl_1_bss_184[temp_r31], &sp8); + temp_f31 = sp8.x; + temp_f29 = -0.04f; + temp_f30 = (sp20.y - sp2C.y) / (REFRESH_RATE/2); + temp_r29 = 0; + HuAudFXFadeOut(lbl_1_bss_D8, (((REFRESH_RATE*500)+30)/60)-1); + while (!temp_r29) { + sp2C.y += temp_f30; + temp_f31 += temp_f29; + if (temp_f31 < 0.0f) { + temp_f31 = 0.0f; + temp_r29 = 1; + } + sp8.x = sp8.y = sp8.z = temp_f31; + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp2C); + BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp8); + HuPrcVSleep(); + } + HuAudFXStop(lbl_1_bss_D8); + BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 0); + BoardPlayerItemAdd(lbl_1_bss_196, lbl_1_bss_190[temp_r31]); + omVibrate(lbl_1_bss_196, 12, 6, 6); + temp_r28 = HuAudSStreamPlay(2); + BoardPlayerMotionShiftSet(lbl_1_bss_196, 7, 0, 5, HU3D_MOTATTR_NONE); + while (!BoardPlayerMotionEndCheck(lbl_1_bss_196)) { + HuPrcVSleep(); + } + HuPrcSleep(REFRESH_RATE/2); + while (HuAudSStreamStatGet(temp_r28)) { + HuPrcVSleep(); + } + BoardAudSeqPause(0, 0, 1000); + HuAudFXPlay(68); + fn_1_121C(MAKE_MESSID(0x13, 0x19)); + lbl_1_bss_108->func = fn_1_72E4; + HuPrcKill(NULL); + while (1) { + HuPrcVSleep(); + } } void fn_1_72E4(omObjData *object) { - fn_1_5F60(); - omDelObjEx(boardObjMan, object); + fn_1_5F60(); + omDelObjEx(boardObjMan, object); } void fn_1_732C(s32 arg0) { - lbl_1_bss_108->work[0] = arg0; - lbl_1_bss_108->func = fn_1_6D04; + lbl_1_bss_108->work[0] = arg0; + lbl_1_bss_108->func = fn_1_6D04; } void fn_1_7358(WorkMGItem *arg0) { - if(--arg0->unk2 == 0) { - arg0->unk2 = 60; - if(--arg0->unk0 >= 0) { - MGSeqParamSet(arg0->unk4, 1, arg0->unk0); - } - } + if (--arg0->unk2 == 0) { + arg0->unk2 = REFRESH_RATE; + if (--arg0->unk0 >= 0) { + MGSeqParamSet(arg0->unk4, 1, arg0->unk0); + } + } } void fn_1_74E4(omObjData *object); void fn_1_73C8(omObjData *object) { - float sp8[2]; - WorkMGItem *temp_r31; - temp_r31 = object->data; - temp_r31->unk0 = 5; - temp_r31->unk2 = 60; - temp_r31->unk4 = MGSeqTimerCreateXY(temp_r31->unk0, 288, 64); - HuWinMesMaxSizeGet(1, sp8, 0x13001B); - temp_r31->unk6 = HuWinCreate(-10000, 368, sp8[0], sp8[1], 0); - HuWinMesSet(temp_r31->unk6, 0x13001B); - HuWinBGTPLvlSet(temp_r31->unk6, 0); - HuWinMesSpeedSet(temp_r31->unk6, 0); - temp_r31->unk8 = 1; - temp_r31->unkA = frandmod(30)+15; - temp_r31->unkC = 0; - object->func = fn_1_74E4; + float sp8[2]; + WorkMGItem *temp_r31; + temp_r31 = object->data; + temp_r31->unk0 = 5; + temp_r31->unk2 = REFRESH_RATE; + temp_r31->unk4 = MGSeqTimerCreateXY(temp_r31->unk0, 288, 64); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x13, 0x1B)); + temp_r31->unk6 = HuWinCreate(-10000, 368, sp8[0], sp8[1], 0); + HuWinMesSet(temp_r31->unk6, MAKE_MESSID(0x13, 0x1B)); + HuWinBGTPLvlSet(temp_r31->unk6, 0); + HuWinMesSpeedSet(temp_r31->unk6, 0); + temp_r31->unk8 = 1; + temp_r31->unkA = frandmod(30) + 15; + temp_r31->unkC = 0; + object->func = fn_1_74E4; } void fn_1_7898(omObjData *arg0, s32 *arg1, s32 *arg2); @@ -544,413 +546,417 @@ void fn_1_7818(omObjData *object); void fn_1_74E4(omObjData *object) { - s32 spC; - s32 sp8; - WorkMGItem *temp_r31; - s32 temp_r29; - temp_r31 = object->data; - fn_1_7358(temp_r31); - temp_r29 = GWPlayer[lbl_1_bss_196].port; - if(GWPlayer[lbl_1_bss_196].com) { - fn_1_7898(object, &spC, &sp8); - } else { - spC = HuPadDStkRep[temp_r29]; - sp8 = HuPadBtnDown[temp_r29]; - } - if((sp8 & PAD_BUTTON_A) || temp_r31->unk0 < 0) { - MGSeqParamSet(temp_r31->unk4, 2, -1); - HuWinKill(temp_r31->unk6); - BoardPlayerMotBlendSet(lbl_1_bss_196, 180, 10); - BoardAudSeqFadeOut(1, 1000); - object->func = fn_1_7818; - } else if(spC & PAD_BUTTON_LEFT) { - if(temp_r31->unk8 != 0) { - temp_r31->unk8--; - BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8+1], &lbl_1_bss_DC[temp_r31->unk8], 12); - object->func = fn_1_7750; - } - } else if(spC & PAD_BUTTON_RIGHT) { - if(temp_r31->unk8 != 2) { - temp_r31->unk8++; - BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8-1], &lbl_1_bss_DC[temp_r31->unk8], 12); - object->func = fn_1_7750; - } - } + s32 spC; + s32 sp8; + WorkMGItem *temp_r31; + s32 temp_r29; + temp_r31 = object->data; + fn_1_7358(temp_r31); + temp_r29 = GWPlayer[lbl_1_bss_196].port; + if (GWPlayer[lbl_1_bss_196].com) { + fn_1_7898(object, &spC, &sp8); + } + else { + spC = HuPadDStkRep[temp_r29]; + sp8 = HuPadBtnDown[temp_r29]; + } + if ((sp8 & PAD_BUTTON_A) || temp_r31->unk0 < 0) { + MGSeqParamSet(temp_r31->unk4, 2, -1); + HuWinKill(temp_r31->unk6); + BoardPlayerMotBlendSet(lbl_1_bss_196, 180, 10); + BoardAudSeqFadeOut(1, 1000); + object->func = fn_1_7818; + } + else if (spC & PAD_BUTTON_LEFT) { + if (temp_r31->unk8 != 0) { + temp_r31->unk8--; + BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8 + 1], &lbl_1_bss_DC[temp_r31->unk8], REFRESH_RATE/5); + object->func = fn_1_7750; + } + } + else if (spC & PAD_BUTTON_RIGHT) { + if (temp_r31->unk8 != 2) { + temp_r31->unk8++; + BoardPlayerPosLerpStart(lbl_1_bss_196, &lbl_1_bss_DC[temp_r31->unk8 - 1], &lbl_1_bss_DC[temp_r31->unk8], REFRESH_RATE/5); + object->func = fn_1_7750; + } + } } void fn_1_7750(omObjData *object) { - WorkMGItem *temp_r31 = object->data; - fn_1_7358(temp_r31); - if(!GWPlayer[lbl_1_bss_196].moving) { - BoardPlayerIdleSet(lbl_1_bss_196); - object->func = fn_1_74E4; - } + WorkMGItem *temp_r31 = object->data; + fn_1_7358(temp_r31); + if (!GWPlayer[lbl_1_bss_196].moving) { + BoardPlayerIdleSet(lbl_1_bss_196); + object->func = fn_1_74E4; + } } void fn_1_7818(omObjData *object) { - if(BoardPlayerMotBlendCheck(lbl_1_bss_196)) { - fn_1_732C(((WorkMGItem *)object->data)->unk8); - object->func = NULL; - } + if (BoardPlayerMotBlendCheck(lbl_1_bss_196)) { + fn_1_732C(((WorkMGItem *)object->data)->unk8); + object->func = NULL; + } } void fn_1_7898(omObjData *arg0, s32 *arg1, s32 *arg2) { - WorkMGItem *temp_r31; - s32 temp_r28; - temp_r31 = arg0->data; - *arg1 = *arg2 = 0; - if(temp_r31->unkA) { - temp_r31->unkA--; - } else { - temp_r31->unkA = frandmod(30)+15; - if(temp_r31->unkC == 4) { - *arg2 |= PAD_BUTTON_A; - } else if((s32)frandmod(10) < 4) { - *arg2 |= PAD_BUTTON_A; - } else { - temp_r28 = frandBool(); - if((temp_r28 == 0 && temp_r31->unk8 != 2) || temp_r31->unk8 == 0) { - *arg1 |= PAD_BUTTON_RIGHT; - } else if((temp_r28 == 1 && temp_r31->unk8 != 0) || temp_r31->unk8 == 2) { - *arg1 |= PAD_BUTTON_LEFT; - } - temp_r31->unkC++; - } - } + WorkMGItem *temp_r31; + s32 temp_r28; + temp_r31 = arg0->data; + *arg1 = *arg2 = 0; + if (temp_r31->unkA) { + temp_r31->unkA--; + } + else { + temp_r31->unkA = frandmod(30) + 15; + if (temp_r31->unkC == 4) { + *arg2 |= PAD_BUTTON_A; + } + else if ((s32)frandmod(10) < 4) { + *arg2 |= PAD_BUTTON_A; + } + else { + temp_r28 = frandBool(); + if ((temp_r28 == 0 && temp_r31->unk8 != 2) || temp_r31->unk8 == 0) { + *arg1 |= PAD_BUTTON_RIGHT; + } + else if ((temp_r28 == 1 && temp_r31->unk8 != 0) || temp_r31->unk8 == 2) { + *arg1 |= PAD_BUTTON_LEFT; + } + temp_r31->unkC++; + } + } } static inline void WriteTrans(s32 index, float value) { - Hu3DData[BoardModelIDGet(lbl_1_bss_184[index])].unk_F0[1][3] = value; + Hu3DData[BoardModelIDGet(lbl_1_bss_184[index])].unk_F0[1][3] = value; } void fn_1_79BC(s16 *arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f25; - Vec sp8; - s32 temp_r31; - s32 temp_r29; - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_190[temp_r31] = arg0[temp_r31]; - lbl_1_bss_184[temp_r31] = BoardModelCreate(lbl_1_data_428[lbl_1_bss_190[temp_r31]], NULL, 0); - if(lbl_1_bss_190[temp_r31] == 5) { - WriteTrans(temp_r31, -50.0f); - } - if(arg0[temp_r31] == 4) { - BoardModelMotionSpeedSet(lbl_1_bss_184[temp_r31], 0); - } - BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 0); - if(arg0[temp_r31] == 11) { - BoardModelAttrSet(lbl_1_bss_184[temp_r31], 0x40000001); - } - } - if(lbl_1_bss_C8 == NULL) { - lbl_1_bss_C8 = HuSprAnimReadFile(0x120000); - HuSprAnimLock(lbl_1_bss_C8); - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_18A[temp_r31] = BoardModelCreate(0x760017, lbl_1_data_480, 0); - lbl_1_bss_118[temp_r31].x = lbl_1_bss_118[temp_r31].z = 0.1f; - lbl_1_bss_118[temp_r31].y = 0.1f; - lbl_1_bss_13C[temp_r31].x = 0; - lbl_1_bss_13C[temp_r31].y = lbl_1_bss_13C[temp_r31].z = 0; - Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_30[10]), lbl_1_data_474[temp_r31], &lbl_1_bss_160[temp_r31]); - BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); - BoardModelRotSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_13C[temp_r31]); - BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); - } - lbl_1_bss_114 = lbl_1_bss_160[0].y; - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelPosGet(lbl_1_bss_30[10], &lbl_1_bss_DC[temp_r31]); - lbl_1_bss_DC[temp_r31].x = lbl_1_bss_160[temp_r31].x; - lbl_1_bss_DC[temp_r31].z = lbl_1_bss_160[temp_r31].z+200.0f; - BoardModelMotionStart(lbl_1_bss_18A[temp_r31], 3, 0); - } - lbl_1_bss_110 = fabs(lbl_1_bss_160[0].x-lbl_1_bss_160[1].x)/2; - temp_f31 = 0; - temp_f29 = 20; - sp8.x = 0.04f; - sp8.y = 0.04f; - sp8.z = 0.04f; - for(temp_r29=0; temp_r29<3;) { - temp_f30 = temp_f29-((7.0f/60.0f)*(0.25f*(temp_f31*temp_f31))); - temp_f31++; - temp_r29 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_160[temp_r31].y += temp_f30; - if(lbl_1_bss_160[temp_r31].y < lbl_1_bss_114) { - lbl_1_bss_160[temp_r31].y = lbl_1_bss_114; - temp_r29++; - } - BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); - VECAdd(&lbl_1_bss_118[temp_r31], &sp8, &lbl_1_bss_118[temp_r31]); - if(lbl_1_bss_118[temp_r31].x > 0.7f) { - lbl_1_bss_118[temp_r31].x = 0.7f; - } - if(lbl_1_bss_118[temp_r31].y > 0.7f) { - lbl_1_bss_118[temp_r31].y = 0.7f; - } - if(lbl_1_bss_118[temp_r31].z > 0.7f) { - lbl_1_bss_118[temp_r31].z = 0.7f; - } - BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); - } - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_118[temp_r31].x = lbl_1_bss_118[temp_r31].y = lbl_1_bss_118[temp_r31].z = 0.7f; - BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); - BoardModelMotionStart(lbl_1_bss_18A[temp_r31], 1, 0x40000001); - } - lbl_1_bss_100 = HuPrcCreate(fn_1_85FC, 8196, 8192, 0); - HuPrcDestructorSet2(lbl_1_bss_100, fn_1_8DAC); - *((u32 *)&lbl_1_bss_100->user_data) = 7; - HuAudFXPlay(866); - while(((u32)lbl_1_bss_100->user_data & 0x40000000) == 0) { - HuPrcVSleep(); - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f25; + Vec sp8; + s32 temp_r31; + s32 temp_r29; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_190[temp_r31] = arg0[temp_r31]; + lbl_1_bss_184[temp_r31] = BoardModelCreate(lbl_1_data_428[lbl_1_bss_190[temp_r31]], NULL, 0); + if (lbl_1_bss_190[temp_r31] == 5) { + WriteTrans(temp_r31, -50.0f); + } + if (arg0[temp_r31] == 4) { + BoardModelMotionSpeedSet(lbl_1_bss_184[temp_r31], 0); + } + BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 0); + if (arg0[temp_r31] == 11) { + BoardModelAttrSet(lbl_1_bss_184[temp_r31], 0x40000001); + } + } + if (lbl_1_bss_C8 == NULL) { + lbl_1_bss_C8 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0x00)); + HuSprAnimLock(lbl_1_bss_C8); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_18A[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W02, 0x17), lbl_1_data_480, 0); + lbl_1_bss_118[temp_r31].x = lbl_1_bss_118[temp_r31].z = 0.1f; + lbl_1_bss_118[temp_r31].y = 0.1f; + lbl_1_bss_13C[temp_r31].x = 0; + lbl_1_bss_13C[temp_r31].y = lbl_1_bss_13C[temp_r31].z = 0; + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_30[10]), lbl_1_data_474[temp_r31], &lbl_1_bss_160[temp_r31]); + BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); + BoardModelRotSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_13C[temp_r31]); + BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); + } + lbl_1_bss_114 = lbl_1_bss_160[0].y; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelPosGet(lbl_1_bss_30[10], &lbl_1_bss_DC[temp_r31]); + lbl_1_bss_DC[temp_r31].x = lbl_1_bss_160[temp_r31].x; + lbl_1_bss_DC[temp_r31].z = lbl_1_bss_160[temp_r31].z + 200.0f; + BoardModelMotionStart(lbl_1_bss_18A[temp_r31], 3, 0); + } + lbl_1_bss_110 = fabs(lbl_1_bss_160[0].x - lbl_1_bss_160[1].x) / 2; + temp_f31 = 0; + temp_f29 = 20; + sp8.x = 0.04f; + sp8.y = 0.04f; + sp8.z = 0.04f; + for (temp_r29 = 0; temp_r29 < 3;) { + temp_f30 = temp_f29 - ((7.0f / 60.0f) * (0.25f * (temp_f31 * temp_f31))); + temp_f31++; + temp_r29 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_160[temp_r31].y += temp_f30; + if (lbl_1_bss_160[temp_r31].y < lbl_1_bss_114) { + lbl_1_bss_160[temp_r31].y = lbl_1_bss_114; + temp_r29++; + } + BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); + VECAdd(&lbl_1_bss_118[temp_r31], &sp8, &lbl_1_bss_118[temp_r31]); + if (lbl_1_bss_118[temp_r31].x > 0.7f) { + lbl_1_bss_118[temp_r31].x = 0.7f; + } + if (lbl_1_bss_118[temp_r31].y > 0.7f) { + lbl_1_bss_118[temp_r31].y = 0.7f; + } + if (lbl_1_bss_118[temp_r31].z > 0.7f) { + lbl_1_bss_118[temp_r31].z = 0.7f; + } + BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_118[temp_r31].x = lbl_1_bss_118[temp_r31].y = lbl_1_bss_118[temp_r31].z = 0.7f; + BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); + BoardModelMotionStart(lbl_1_bss_18A[temp_r31], 1, 0x40000001); + } + lbl_1_bss_100 = HuPrcCreate(fn_1_85FC, 8196, 8192, 0); + HuPrcDestructorSet2(lbl_1_bss_100, fn_1_8DAC); + *((u32 *)&lbl_1_bss_100->user_data) = 7; + HuAudFXPlay(866); + while (((u32)lbl_1_bss_100->user_data & 0x40000000) == 0) { + HuPrcVSleep(); + } } void fn_1_8244(u16 arg0) { - float temp_f31; - float temp_f30; - float temp_f29; - Vec spC; - - s32 temp_r31; - s32 temp_r30; - if(arg0) { - fn_1_8570(); - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelMotionStart(lbl_1_bss_18A[temp_r31], 3, 0); - } - temp_f31 = 0; - temp_f29 = 20; - spC.x = -0.02f; - spC.y = -0.02f; - spC.z = -0.02f; - for(temp_r30=0; temp_r30<3;) { - temp_f30 = temp_f29-((7.0f/60.0f)*(0.25f*(temp_f31*temp_f31))); - temp_f31++; - temp_r30 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - lbl_1_bss_160[temp_r31].y += temp_f30; - BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); - if(temp_f30 < 0.0f) { - VECAdd(&lbl_1_bss_118[temp_r31], &spC, &lbl_1_bss_118[temp_r31]); - if(lbl_1_bss_118[temp_r31].x < 0.0f) { - lbl_1_bss_118[temp_r31].x = 0.0f; - } - if(lbl_1_bss_118[temp_r31].y < 0.0f) { - lbl_1_bss_118[temp_r31].y = 0.0f; - } - if(lbl_1_bss_118[temp_r31].z < 0.0f) { - lbl_1_bss_118[temp_r31].z = 0.0f; - } - BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); - if(lbl_1_bss_118[temp_r31].x == 0.0f) { - temp_r30++; - } - } - - - } - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - BoardModelVisibilitySet(lbl_1_bss_18A[temp_r31], 0); - } + float temp_f31; + float temp_f30; + float temp_f29; + Vec spC; + + s32 temp_r31; + s32 temp_r30; + if (arg0) { + fn_1_8570(); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelMotionStart(lbl_1_bss_18A[temp_r31], 3, 0); + } + temp_f31 = 0; + temp_f29 = 20; + spC.x = -0.02f; + spC.y = -0.02f; + spC.z = -0.02f; + for (temp_r30 = 0; temp_r30 < 3;) { + temp_f30 = temp_f29 - ((7.0f / 60.0f) * (0.25f * (temp_f31 * temp_f31))); + temp_f31++; + temp_r30 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + lbl_1_bss_160[temp_r31].y += temp_f30; + BoardModelPosSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_160[temp_r31]); + if (temp_f30 < 0.0f) { + VECAdd(&lbl_1_bss_118[temp_r31], &spC, &lbl_1_bss_118[temp_r31]); + if (lbl_1_bss_118[temp_r31].x < 0.0f) { + lbl_1_bss_118[temp_r31].x = 0.0f; + } + if (lbl_1_bss_118[temp_r31].y < 0.0f) { + lbl_1_bss_118[temp_r31].y = 0.0f; + } + if (lbl_1_bss_118[temp_r31].z < 0.0f) { + lbl_1_bss_118[temp_r31].z = 0.0f; + } + BoardModelScaleSetV(lbl_1_bss_18A[temp_r31], &lbl_1_bss_118[temp_r31]); + if (lbl_1_bss_118[temp_r31].x == 0.0f) { + temp_r30++; + } + } + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + BoardModelVisibilitySet(lbl_1_bss_18A[temp_r31], 0); + } } void fn_1_8570(void) { - u32 temp_r31; - temp_r31 = (u32)lbl_1_bss_100->user_data; - temp_r31 |= 0x20000000; - *(u32 *)&lbl_1_bss_100->user_data = temp_r31; - while(((u32)lbl_1_bss_100->user_data & 0x80000000) == 0) { - HuPrcVSleep(); - } - HuPrcKill(lbl_1_bss_100); - lbl_1_bss_100 = NULL; + u32 temp_r31; + temp_r31 = (u32)lbl_1_bss_100->user_data; + temp_r31 |= 0x20000000; + *(u32 *)&lbl_1_bss_100->user_data = temp_r31; + while (((u32)lbl_1_bss_100->user_data & 0x80000000) == 0) { + HuPrcVSleep(); + } + HuPrcKill(lbl_1_bss_100); + lbl_1_bss_100 = NULL; } void fn_1_8E38(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_85FC(void) { - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - - Vec sp20[3]; - Vec sp14; - float sp8[3]; - s32 temp_r31; - u32 temp_r30; - u32 temp_r29; - s32 temp_r28; - ParticleData *temp_r27; - temp_r30 = (u32)HuPrcCurrentGet()->user_data; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - BoardModelPosGet(lbl_1_bss_18A[temp_r31], &sp20[temp_r31]); - sp20[temp_r31].y += 50.0f; - sp8[temp_r31] = 0.0f; - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - sp14.x = sp14.y = sp14.z = sp8[temp_r31]; - BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); - BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 1); - temp_f28 = 130.0f+sp20[temp_r31].y; - if(temp_r30 & 0x10000000) { - lbl_1_bss_CC[temp_r31] = Hu3DParticleCreate(lbl_1_bss_C8, 100); - temp_r27 = Hu3DData[lbl_1_bss_CC[temp_r31]].unk_120; - temp_r27->unk_02 = lbl_1_bss_184[temp_r31]; - Hu3DParticleHookSet(lbl_1_bss_CC[temp_r31], fn_1_8E38); - Hu3DParticleColSet(lbl_1_bss_CC[temp_r31], 255, 255, 0); - Hu3DModelPosSet(lbl_1_bss_CC[temp_r31], 0, 0, 0); - Hu3DParticleBlendModeSet(lbl_1_bss_CC[temp_r31], 1); - Hu3DModelLayerSet(lbl_1_bss_CC[temp_r31], 2); - } - } - } - temp_f31 = 12; - temp_f29 = 0.05f; - while(1) { - temp_r28 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - temp_r28++; - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - sp20[temp_r31].y += temp_f31; - if(sp20[temp_r31].y >= temp_f28) { - sp20[temp_r31].y = temp_f28; - temp_r28--; - } - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - sp8[temp_r31] += temp_f29; - if(sp8[temp_r31] > 1.0f) { - sp8[temp_r31] = 1.0f; - } - sp14.x = sp14.y = sp14.z = sp8[temp_r31]; - BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); - } - } - temp_f31 *= 0.92f; - if(temp_r28 == 0) { - break; - } - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - sp8[temp_r31] = 1.0f; - sp14.x = sp14.y = sp14.z = sp8[temp_r31]; - BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); - } - } - temp_r30 |= 0x40000000; - *((u32 *)&HuPrcCurrentGet()->user_data) = temp_r30; - temp_f30 = 0; - while(1) { - - temp_r30 = (u32)HuPrcCurrentGet()->user_data; - if(temp_r30 & 0x20000000) { - break; - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - sp20[temp_r31].y += sind(temp_f30)*0.25f; - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - } - - } - temp_f30 += 5.0f; - if(temp_f30 >= 360.0f) { - temp_f30 -= 360.0f; - } - - HuPrcVSleep(); - } - temp_f31 = -12; - temp_f29 = -0.05f; - while(1) { - temp_r28 = 0; - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - temp_r28++; - BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - sp20[temp_r31].y += temp_f31; - BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); - sp8[temp_r31] += temp_f29; - if(sp8[temp_r31] < 0.0f) { - sp8[temp_r31] = 0.0f; - } - if(sp8[temp_r31] == 0.0f) { - temp_r28--; - } - sp14.x = sp14.y = sp14.z = sp8[temp_r31]; - BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); - } - } - temp_f31 *= 0.92f; - if(temp_r28 == 0) { - break; - } - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - sp14.x = sp14.y = sp14.z = 1.0f; - BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); - BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 0); - } - } - temp_r30 |= 0x80000000; - *((u32 *)&HuPrcCurrentGet()->user_data) = temp_r30; - while(1) { - HuPrcVSleep(); - } + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + Vec sp20[3]; + Vec sp14; + float sp8[3]; + s32 temp_r31; + u32 temp_r30; + u32 temp_r29; + s32 temp_r28; + ParticleData *temp_r27; + temp_r30 = (u32)HuPrcCurrentGet()->user_data; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + BoardModelPosGet(lbl_1_bss_18A[temp_r31], &sp20[temp_r31]); + sp20[temp_r31].y += 50.0f; + sp8[temp_r31] = 0.0f; + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + sp14.x = sp14.y = sp14.z = sp8[temp_r31]; + BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); + BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 1); + temp_f28 = 130.0f + sp20[temp_r31].y; + if (temp_r30 & 0x10000000) { + lbl_1_bss_CC[temp_r31] = Hu3DParticleCreate(lbl_1_bss_C8, 100); + temp_r27 = Hu3DData[lbl_1_bss_CC[temp_r31]].unk_120; + temp_r27->unk_02 = lbl_1_bss_184[temp_r31]; + Hu3DParticleHookSet(lbl_1_bss_CC[temp_r31], fn_1_8E38); + Hu3DParticleColSet(lbl_1_bss_CC[temp_r31], 255, 255, 0); + Hu3DModelPosSet(lbl_1_bss_CC[temp_r31], 0, 0, 0); + Hu3DParticleBlendModeSet(lbl_1_bss_CC[temp_r31], 1); + Hu3DModelLayerSet(lbl_1_bss_CC[temp_r31], 2); + } + } + } + temp_f31 = 12; + temp_f29 = 0.05f; + while (1) { + temp_r28 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + temp_r28++; + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + sp20[temp_r31].y += temp_f31; + if (sp20[temp_r31].y >= temp_f28) { + sp20[temp_r31].y = temp_f28; + temp_r28--; + } + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + sp8[temp_r31] += temp_f29; + if (sp8[temp_r31] > 1.0f) { + sp8[temp_r31] = 1.0f; + } + sp14.x = sp14.y = sp14.z = sp8[temp_r31]; + BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); + } + } + temp_f31 *= 0.92f; + if (temp_r28 == 0) { + break; + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + sp8[temp_r31] = 1.0f; + sp14.x = sp14.y = sp14.z = sp8[temp_r31]; + BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); + } + } + temp_r30 |= 0x40000000; + *((u32 *)&HuPrcCurrentGet()->user_data) = temp_r30; + temp_f30 = 0; + while (1) { + + temp_r30 = (u32)HuPrcCurrentGet()->user_data; + if (temp_r30 & 0x20000000) { + break; + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + sp20[temp_r31].y += sind(temp_f30) * 0.25f; + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + } + } + temp_f30 += 5.0f; + if (temp_f30 >= 360.0f) { + temp_f30 -= 360.0f; + } + + HuPrcVSleep(); + } + temp_f31 = -12; + temp_f29 = -0.05f; + while (1) { + temp_r28 = 0; + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + temp_r28++; + BoardModelPosGet(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + sp20[temp_r31].y += temp_f31; + BoardModelPosSetV(lbl_1_bss_184[temp_r31], &sp20[temp_r31]); + sp8[temp_r31] += temp_f29; + if (sp8[temp_r31] < 0.0f) { + sp8[temp_r31] = 0.0f; + } + if (sp8[temp_r31] == 0.0f) { + temp_r28--; + } + sp14.x = sp14.y = sp14.z = sp8[temp_r31]; + BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); + } + } + temp_f31 *= 0.92f; + if (temp_r28 == 0) { + break; + } + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + sp14.x = sp14.y = sp14.z = 1.0f; + BoardModelScaleSetV(lbl_1_bss_184[temp_r31], &sp14); + BoardModelVisibilitySet(lbl_1_bss_184[temp_r31], 0); + } + } + temp_r30 |= 0x80000000; + *((u32 *)&HuPrcCurrentGet()->user_data) = temp_r30; + while (1) { + HuPrcVSleep(); + } } void fn_1_8DAC(void) { - s32 temp_r31; - u32 temp_r30 = (u32)HuPrcCurrentGet()->user_data; - u32 temp_r29; - if(temp_r30 & 0x10000000) { - for(temp_r31=0; temp_r31<3; temp_r31++) { - temp_r29 = 1 << temp_r31; - if(temp_r30 & temp_r29) { - Hu3DModelKill(lbl_1_bss_CC[temp_r31]); - } - } - } + s32 temp_r31; + u32 temp_r30 = (u32)HuPrcCurrentGet()->user_data; + u32 temp_r29; + if (temp_r30 & 0x10000000) { + for (temp_r31 = 0; temp_r31 < 3; temp_r31++) { + temp_r29 = 1 << temp_r31; + if (temp_r30 & temp_r29) { + Hu3DModelKill(lbl_1_bss_CC[temp_r31]); + } + } + } } void fn_1_8E38(ModelData *model, ParticleData *particle, Mtx matrix) { - Vec sp8; + Vec sp8; f32 temp_f30; f32 temp_f29; f32 temp_f31; - HsfanimStruct01* var_r31; + HsfanimStruct01 *var_r31; s32 i, j; if (particle->unk_34 == 0) { @@ -974,20 +980,20 @@ void fn_1_8E38(ModelData *model, ParticleData *particle, Mtx matrix) } } if (j != particle->unk_30) { - temp_f30 = 360.0f * ((1.0f/255.0f) * frand8()); - temp_f29 = temp_f31 * (20.0f + (60.0f * ((1.0f/255.0f) * frand8()))); + temp_f30 = 360.0f * ((1.0f / 255.0f) * frand8()); + temp_f29 = temp_f31 * (20.0f + (60.0f * ((1.0f / 255.0f) * frand8()))); var_r31->unk34.x = (sp8.x + (temp_f29 * sind(temp_f30))); var_r31->unk34.z = (sp8.z + (temp_f29 * cosd(temp_f30))); - var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * ((1.0f/255.0f) * frand8()))))); - var_r31->unk08.x = (0.5f + (3.0f * ((1.0f/255.0f) * frand8()))); - var_r31->unk08.y = (0.3f + (2.0f * ((1.0f/255.0f) * frand8()))); + var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * ((1.0f / 255.0f) * frand8()))))); + var_r31->unk08.x = (0.5f + (3.0f * ((1.0f / 255.0f) * frand8()))); + var_r31->unk08.y = (0.3f + (2.0f * ((1.0f / 255.0f) * frand8()))); var_r31->unk40.a = 180; - var_r31->unk2C = (15.0f * temp_f31); + var_r31->unk2C = (15.0f * temp_f31); } } var_r31 = particle->unk_48; - + for (i = 0; i < particle->unk_30; i++, var_r31++) { if (0.0f != var_r31->unk2C) { var_r31->unk34.y = (var_r31->unk34.y - var_r31->unk08.x); @@ -995,6 +1001,6 @@ void fn_1_8E38(ModelData *model, ParticleData *particle, Mtx matrix) if (var_r31->unk2C <= 0.0f) { var_r31->unk2C = 0.0f; } - } + } } } diff --git a/src/REL/w02Dll/roulette.c b/src/REL/w02Dll/roulette.c index 2a2808bc..b21e0dbe 100644 --- a/src/REL/w02Dll/roulette.c +++ b/src/REL/w02Dll/roulette.c @@ -1,26 +1,21 @@ #include "REL/w02Dll.h" #include "game/audio.h" -#include "game/frand.h" #include "game/chrman.h" +#include "game/frand.h" #include "game/pad.h" + #include "ext_math.h" - /* DATA */ -s32 lbl_1_data_4D0[] = { - -1, 2, 2, 2, - -1, 1, 1, 1, - -1, 0, 0, 0, - -1, 3, 3, 3 -}; +s32 lbl_1_data_4D0[] = { -1, 2, 2, 2, -1, 1, 1, 1, -1, 0, 0, 0, -1, 3, 3, 3 }; Process *lbl_1_bss_38C; s16 lbl_1_bss_388; s32 lbl_1_bss_384; float lbl_1_bss_380; -//Local Functions +// Local Functions void fn_1_D3AC(void); s32 fn_1_D8C4(void); void fn_1_DF48(void); @@ -34,10 +29,10 @@ typedef struct UnkPoint { Vec point; } UnkPoint; - /* FUNCTIONS */ -void fn_1_BC1C(void) { - Point3d sp8; +void fn_1_BC1C(void) +{ + Vec sp8; BoardModelPosGet(lbl_1_bss_30[15], &sp8); sp8.z -= 90.0f; @@ -50,13 +45,14 @@ void fn_1_BC1C(void) { BoardModelRotSetV(lbl_1_bss_30[15], &sp8); } -void fn_1_BCFC(void) { +void fn_1_BCFC(void) +{ s32 spaceLinkFlags; s32 temp_r30; s32 temp_r29; - + BoardRollDispSet(0); - spaceLinkFlags = BoardSpaceLinkFlagSearch(0, (s32) GWPlayer[lbl_1_bss_388].space_curr, 2U); + spaceLinkFlags = BoardSpaceLinkFlagSearch(0, (s32)GWPlayer[lbl_1_bss_388].space_curr, 2U); BoardPlayerMoveToAsync(lbl_1_bss_388, spaceLinkFlags); while (GWPlayer[lbl_1_bss_388].moving) { HuPrcVSleep(); @@ -64,16 +60,16 @@ void fn_1_BCFC(void) { BoardPlayerIdleSet(lbl_1_bss_388); BoardCameraViewSet(2); BoardCameraMotionWait(); - BoardPlayerMotBlendSet((s32) lbl_1_bss_388, 0x5A, 0xF); - while (BoardPlayerMotBlendCheck((s32) lbl_1_bss_388) == 0) { + BoardPlayerMotBlendSet((s32)lbl_1_bss_388, 0x5A, 0xF); + while (BoardPlayerMotBlendCheck((s32)lbl_1_bss_388) == 0) { HuPrcVSleep(); } BoardModelRotYSet(lbl_1_bss_30[15], -90.0f); - fn_1_121C(0x130000); + fn_1_121C(MAKE_MESSID(0x13, 0x00)); HuAudFXPlay(0x44); temp_r29 = fn_1_BE88(); BoardStatusShowSetAll(0); - fn_1_121C(0x130001); + fn_1_121C(MAKE_MESSID(0x13, 0x01)); temp_r30 = fn_1_C108(temp_r29); fn_1_CD04(temp_r30); BoardCameraViewSet(1); @@ -81,16 +77,18 @@ void fn_1_BCFC(void) { BoardCameraMotionWait(); BoardRollDispSet(1); HuPrcKill(NULL); - while(TRUE) { - HuPrcVSleep(); + while (TRUE) { + HuPrcVSleep(); } } -s32 fn_1_BE74(void) { +s32 fn_1_BE74(void) +{ lbl_1_bss_38C = 0; } -s32 fn_1_BE88(void) { +s32 fn_1_BE88(void) +{ s32 coinAmount; s32 var_r30; s16 playerCoinRegion; @@ -100,11 +98,11 @@ s32 fn_1_BE88(void) { s32 mesg; var_r30 = -1; - coinAmount = BoardPlayerCoinsGet((s32) lbl_1_bss_388); + coinAmount = BoardPlayerCoinsGet((s32)lbl_1_bss_388); if (coinAmount < 5) { return var_r30; } - fn_1_121C(0x130002); + fn_1_121C(MAKE_MESSID(0x13, 0x02)); do { BoardWinCreateChoice(2, MAKE_MESSID(19, 29), 4, 0); @@ -112,7 +110,8 @@ s32 fn_1_BE88(void) { if (GWPlayer[lbl_1_bss_388].com) { if (frandBool()) { BoardComKeySetRight(); - } else { + } + else { BoardComKeySetLeft(); } } @@ -136,65 +135,66 @@ s32 fn_1_BE88(void) { if (GWPlayer[lbl_1_bss_388].com) { if (playerCoinRegion < 2) { BoardComKeySetUp(); - } else if (frandBool()) { + } + else if (frandBool()) { BoardComKeySetUp(); - } else { + } + else { BoardComKeySetDown(); } } BoardWinWait(); BoardWinKill(); bribeChoice = BoardWinChoiceGet(); - if (bribeChoice == -1 || - bribeChoice == 3) { + if (bribeChoice == -1 || bribeChoice == 3) { continue; } // Coin amount is now the bribe amount in coins switch (bribeChoice) { - case 0: - mesg = 0x130004; - coinAmount = 0x14; - var_r30 = 0x5A; // 90% - break; - case 1: - mesg = 0x130005; - coinAmount = 0xA; - var_r30 = 0x3C; // 60% - break; - case 2: - mesg = 0x130006; - coinAmount = 5; - var_r30 = 0x1E; // 30% - break; + case 0: + mesg = MAKE_MESSID(0x13, 0x04); + coinAmount = 0x14; + var_r30 = 0x5A; // 90% + break; + case 1: + mesg = MAKE_MESSID(0x13, 0x05); + coinAmount = 0xA; + var_r30 = 0x3C; // 60% + break; + case 2: + mesg = MAKE_MESSID(0x13, 0x06); + coinAmount = 5; + var_r30 = 0x1E; // 30% + break; } fn_1_121C(mesg); - for (i = 0; i < coinAmount; i++) { BoardPlayerCoinsAdd(lbl_1_bss_388, -1); HuAudFXPlay(0xE); HuPrcSleep(6); } HuAudFXPlay(0xF); - // If chose to view map - } else if (rouletteChoice == 2) { + // If chose to view map + } + else if (rouletteChoice == 2) { BoardViewMapExec(lbl_1_bss_388); } } while (rouletteChoice == 2); // While viewing map if (var_r30 == -1) { - fn_1_121C(0x130007); + fn_1_121C(MAKE_MESSID(0x13, 0x07)); } return var_r30; } -s32 fn_1_C108(s32 arg0) { +s32 fn_1_C108(s32 arg0) +{ Vec sp34; Vec sp28; Vec sp1C; Vec sp10; - f32 var_f27; f32 var_f26; f32 var_f25; @@ -210,15 +210,16 @@ s32 fn_1_C108(s32 arg0) { s32 var_r29; s32 i; - if ((s32) frandmod(0x64U) < arg0) { + if ((s32)frandmod(0x64U) < arg0) { s32 temp_r25 = fn_1_E2AC(); var_r27 = 4; var_r29 = frandmod(3U); - if ((s32) frandmod(0x64U) < 0x14) { + if ((s32)frandmod(0x64U) < 0x14) { var_r29 += 1; } var_r29 = var_r29 + (3 - temp_r25) * 4; - } else { + } + else { var_r29 = frandmod(0x10U); var_r27 = frandmod(4U); } @@ -249,7 +250,7 @@ s32 fn_1_C108(s32 arg0) { HuAudFXPitchSet(lbl_1_bss_384, var_r28); HuPrcVSleep(); } - + var_f29 = -22.5f; HuAudFXPitchSet(lbl_1_bss_384, 0); BoardModelMotionStart(lbl_1_bss_30[15], 2, 0x40000001); @@ -269,7 +270,7 @@ s32 fn_1_C108(s32 arg0) { } BoardModelMotionStart(lbl_1_bss_30[15], 3, 0x40000001); BoardModelMotionSpeedSet(lbl_1_bss_30[15], 4.0f); - + for (i = 0; i < 0xA; i++) { sp34.z -= 6.2999997f; BoardModelPosSetV(lbl_1_bss_30[15], &sp34); @@ -287,19 +288,19 @@ s32 fn_1_C108(s32 arg0) { sp1C.z = -50.0f; // Roulette motion and ball ? - while(TRUE) { + while (TRUE) { sp1C.y = var_f27 - (0.55833334f * (0.25f * (var_f31 * var_f31))); var_f31 += 1.0f; BoardModelPosGet(lbl_1_bss_30[6], &sp28); - PSVECAdd(&sp28, &sp1C, &sp28); + VECAdd(&sp28, &sp1C, &sp28); var_f25 = VECDistanceXZ(&sp28, &sp10); if (var_f25 >= 430.0f) { if (sp28.y <= (55.0f + sp10.y)) { - PSVECSubtract(&sp28, &sp10, (Vec* ) &sp1C); - PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C); + VECSubtract(&sp28, &sp10, (Vec *)&sp1C); + VECNormalize((Vec *)&sp1C, (Vec *)&sp1C); sp1C.y = 0.0f; - PSVECScale((Vec* ) &sp1C, (Vec* ) &sp1C, 429.0f); - PSVECAdd((Vec* ) &sp1C, &sp10, (Vec* ) &sp1C); + VECScale((Vec *)&sp1C, (Vec *)&sp1C, 429.0f); + VECAdd((Vec *)&sp1C, &sp10, (Vec *)&sp1C); sp28.x = sp1C.x; sp28.z = sp1C.z; sp1C.x = -5.0f; @@ -309,34 +310,34 @@ s32 fn_1_C108(s32 arg0) { if (sp28.y < sp10.y) { sp28.y = sp10.y; - if (var_r27 >= 3) { + if (var_r27 >= 3) { break; } - //var_f31 = ((1.0f/255.0f) * (6.0f * frand8())); - var_f27 = 6.0f + ((1.0f/255.0f) * (6.0f * frand8())); + // var_f31 = ((1.0f/255.0f) * (6.0f * frand8())); + var_f27 = 6.0f + ((1.0f / 255.0f) * (6.0f * frand8())); var_f31 = 1.0f; var_r27 += 1; - //var_f31 = ((1.0f/255.0f) * (5.0f * frand8())); - sp1C.x = 15.0f + ((1.0f/255.0f) * (5.0f * frand8())); - sp1C.z = 15.0f + ((1.0f/255.0f) * (5.0f * frand8())); + // var_f31 = ((1.0f/255.0f) * (5.0f * frand8())); + sp1C.x = 15.0f + ((1.0f / 255.0f) * (5.0f * frand8())); + sp1C.z = 15.0f + ((1.0f / 255.0f) * (5.0f * frand8())); HuAudFXPlay(0x41E); } - - BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28); + + BoardModelPosSetV(lbl_1_bss_30[6], (Vec *)&sp28); fn_1_E310(var_f29); HuPrcVSleep(); } HuAudFXPlay(0x41E); - PSVECSubtract(&sp28, &sp10, (Vec* ) &sp1C); - PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C); + VECSubtract(&sp28, &sp10, (Vec *)&sp1C); + VECNormalize((Vec *)&sp1C, (Vec *)&sp1C); var_f31 = atan2d(-sp1C.z, sp1C.x); BoardModelRotGet(lbl_1_bss_30[4], &sp34); var_f31 = var_f31 - sp34.y; if (var_f31 < 0.0f) { var_f31 += 360.0f; } - var_r30 = (s32) (var_f31 / 22.5f); + var_r30 = (s32)(var_f31 / 22.5f); if (fmod(var_f31, 22.5) > 11.25) { var_r30 += 1; } @@ -345,19 +346,18 @@ s32 fn_1_C108(s32 arg0) { } sp1C.y = 0.0f; - while(TRUE) { + while (TRUE) { fn_1_E310(var_f29); BoardModelRotGet(lbl_1_bss_30[4], &sp34); var_f31 = (22.5f * var_r30) + sp34.y; // TODO: Update rodata for asm change sp1C.x = cosd(var_f31); sp1C.z = -sind(var_f31); - PSVECScale(&sp1C, &sp1C, 429.0f); - PSVECAdd(&sp1C, &sp10, &sp1C); + VECScale(&sp1C, &sp1C, 429.0f); + VECAdd(&sp1C, &sp10, &sp1C); sp28.x = sp1C.x; sp28.z = sp1C.z; BoardModelPosSetV(lbl_1_bss_30[6], &sp28); - if (sp34.y >= 292.5f && - sp34.y < 315.0f) { + if (sp34.y >= 292.5f && sp34.y < 315.0f) { break; } HuPrcVSleep(); @@ -367,14 +367,14 @@ s32 fn_1_C108(s32 arg0) { var_f29 += 0.375f; fn_1_E310(var_f29); BoardModelRotGet(lbl_1_bss_30[4], &sp34); - var_f31 = (22.5f * (f32) var_r30) + sp34.y; + var_f31 = (22.5f * (f32)var_r30) + sp34.y; sp1C.x = cosd(var_f31); sp1C.z = -sind(var_f31); - PSVECScale(&sp1C, &sp1C, 429.0f); - PSVECAdd((Vec* ) &sp1C, &sp10, (Vec* ) &sp1C); + VECScale(&sp1C, &sp1C, 429.0f); + VECAdd((Vec *)&sp1C, &sp10, (Vec *)&sp1C); sp28.x = sp1C.x; sp28.z = sp1C.z; - BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28); + BoardModelPosSetV(lbl_1_bss_30[6], (Vec *)&sp28); var_r28 += -136.51666f; HuAudFXPitchSet(lbl_1_bss_384, var_r28); HuPrcVSleep(); @@ -385,7 +385,8 @@ s32 fn_1_C108(s32 arg0) { } // Place player on space post roulette? -void fn_1_CD04(s32 arg0) { +void fn_1_CD04(s32 arg0) +{ Vec sp24; Vec sp18; Vec spC; @@ -393,25 +394,25 @@ void fn_1_CD04(s32 arg0) { f32 temp_f30; f32 temp_f29; f32 var_f31; - + s16 var_r25; u32 var_r26; s32 var_r27; s32 var_r29; s32 var_r28; s32 var_r30; - BoardSpace* temp_r31; + BoardSpace *temp_r31; if (arg0 < 0) { fn_1_D3AC(); arg0 = fn_1_D8C4(); } temp_r31 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800)); - + for (var_r28 = 0; var_r28 < temp_r31->link_cnt; var_r28++) { var_r29 = temp_r31->link[var_r28]; - var_r26 = ( (BoardSpaceFlagGet(0, var_r29) & 0xE) >> 1U); - if ( var_r26 == (arg0 + 2)) { + var_r26 = ((BoardSpaceFlagGet(0, var_r29) & 0xE) >> 1U); + if (var_r26 == (arg0 + 2)) { break; } } @@ -427,7 +428,7 @@ void fn_1_CD04(s32 arg0) { while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 30.0f) { spC.x -= 0.25f; spC.y -= 0.25f; - //temp_f1 = spC.z; + // temp_f1 = spC.z; spC.z = spC.z - 0.25f; BoardPlayerScaleSetV(lbl_1_bss_388, &spC); HuPrcVSleep(); @@ -443,7 +444,8 @@ void fn_1_CD04(s32 arg0) { if (GWPlayer[lbl_1_bss_388].bowser_suit) { BoardModelVisibilitySet(BoardBowserSuitModelGet(), 0); BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(), 0); - } else { + } + else { BoardModelVisibilitySet(BoardPlayerModelGet(lbl_1_bss_388), 0); } HuAudFXPlay(0x421); @@ -454,7 +456,7 @@ void fn_1_CD04(s32 arg0) { } BoardModelPosGet(lbl_1_bss_30[5], &sp18); - temp_f30 = atan2d(sp24.x - sp18.x, sp24.z - sp18.z)/30; + temp_f30 = atan2d(sp24.x - sp18.x, sp24.z - sp18.z) / 30; while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 90.0f) { BoardModelRotYSet(lbl_1_bss_30[5], temp_f30 + BoardModelRotYGet(lbl_1_bss_30[5])); @@ -464,22 +466,23 @@ void fn_1_CD04(s32 arg0) { omVibrate(lbl_1_bss_388, 0xC, 4, 2); if (GWPlayer[lbl_1_bss_388].bowser_suit) { - BoardModelVisibilitySet(BoardBowserSuitModelGet(),1); - BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(),1); - } else { + BoardModelVisibilitySet(BoardBowserSuitModelGet(), 1); + BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(), 1); + } + else { BoardModelVisibilitySet(BoardPlayerModelGet(lbl_1_bss_388), 1); } - GWPlayer[lbl_1_bss_388].space_curr =(s16) var_r29; + GWPlayer[lbl_1_bss_388].space_curr = (s16)var_r29; BoardPlayerPosSetV(lbl_1_bss_388, &sp24); temp_r31 = BoardSpaceGet(0, var_r29); - - for ( var_r30 = 0; var_r30 < (s32) temp_r31->link_cnt; var_r30++) { + + for (var_r30 = 0; var_r30 < (s32)temp_r31->link_cnt; var_r30++) { if (BoardSpaceTypeGet(0, temp_r31->link[var_r30])) { break; } } - if (var_r30 != (s32) temp_r31->link_cnt) { + if (var_r30 != (s32)temp_r31->link_cnt) { BoardSpacePosGet(0, temp_r31->link[var_r30], &sp18); BoardPlayerRotYSet(lbl_1_bss_388, atan2d(sp18.x - sp24.x, sp18.z - sp24.z)); } @@ -507,289 +510,290 @@ void fn_1_CD04(s32 arg0) { void fn_1_D3AC(void) { - float temp_f31; - float temp_f30; - s32 temp_r31; - s32 temp_r30; - s16 sp38[20]; - Vec sp2C; - Vec sp20; - Vec sp14; - float sp8[3] = { 1.0f, 0.3f, 2.5f }; - fn_1_121C(0x130008); - BoardStatusShowSetAll(1); - BoardPlayerMotBlendSet(lbl_1_bss_388, 0, 15); - BoardPlayerPosGet(lbl_1_bss_388, &sp14); - for(temp_r31=0; temp_r31<20; temp_r31++) { - sp38[temp_r31] = BoardModelCreate(0x7000A, NULL, 1); - sp2C.x = (sp14.x-25.0f)+((1.0f/255.0f)*(frand8()*50.0f)); - sp2C.y = (sp14.y+1200.0f)+(temp_r31*130.0f)+((1.0f/255.0f)*(frand8()*60.0f)); - sp2C.z = (sp14.z-25.0f)+((1.0f/255.0f)*(frand8()*50.0f)); - BoardModelPosSetV(sp38[temp_r31], &sp2C); - sp20.x = sp20.z = 0; - sp20.y = (1.0f/255.0f)*(frand8()*360.0f); - BoardModelRotSetV(sp38[temp_r31], &sp20); - } - temp_f31 = -4; - temp_r30 = 0; - temp_f30 = sp8[BoardPlayerSizeGet(lbl_1_bss_388)]; - while(1) { - for(temp_r31=0; temp_r31<20; temp_r31++) { - if(temp_r31 < temp_r30) { - continue; - } - BoardModelPosGet(sp38[temp_r31], &sp2C); - BoardModelRotGet(sp38[temp_r31], &sp20); - sp2C.y += temp_f31; - sp20.y += 45.0f; - BoardModelPosSetV(sp38[temp_r31], &sp2C); - BoardModelRotSetV(sp38[temp_r31], &sp20); - if(sp2C.y <= sp14.y+(180.0f*temp_f30)) { - CharModelCoinEffectCreate(1, &sp2C); - BoardModelVisibilitySet(sp38[temp_r31], 0); - temp_r30++; - BoardPlayerCoinsAdd(lbl_1_bss_388, 1); - HuAudFXPlay(7); - omVibrate(lbl_1_bss_388, 12, 6, 6); - - } - } - temp_f31 *= 1.05f; - if(temp_f31 < -40.0f) { - temp_f31 = -40.0f; - } - if(temp_r30 == 20) { - BoardPlayerMotionShiftSet(lbl_1_bss_388, 7, 0, 10, 0); - break; - } - HuPrcVSleep(); - } - while(!BoardPlayerMotionEndCheck(lbl_1_bss_388)) { - HuPrcVSleep(); - } - for(temp_r31=0; temp_r31<20; temp_r31++) { - BoardModelKill(sp38[temp_r31]); - } - HuPrcSleep(60); - BoardPlayerMotBlendSet(lbl_1_bss_388, 180, 15); - BoardStatusShowSetAll(0); - while(!BoardPlayerMotBlendCheck(lbl_1_bss_388)) { - HuPrcVSleep(); - } + float temp_f31; + float temp_f30; + s32 temp_r31; + s32 temp_r30; + s16 sp38[20]; + Vec sp2C; + Vec sp20; + Vec sp14; + float sp8[3] = { 1.0f, 0.3f, 2.5f }; + fn_1_121C(MAKE_MESSID(0x13, 0x08)); + BoardStatusShowSetAll(1); + BoardPlayerMotBlendSet(lbl_1_bss_388, 0, 15); + BoardPlayerPosGet(lbl_1_bss_388, &sp14); + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + sp38[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 1); + sp2C.x = (sp14.x - 25.0f) + ((1.0f / 255.0f) * (frand8() * 50.0f)); + sp2C.y = (sp14.y + 1200.0f) + (temp_r31 * 130.0f) + ((1.0f / 255.0f) * (frand8() * 60.0f)); + sp2C.z = (sp14.z - 25.0f) + ((1.0f / 255.0f) * (frand8() * 50.0f)); + BoardModelPosSetV(sp38[temp_r31], &sp2C); + sp20.x = sp20.z = 0; + sp20.y = (1.0f / 255.0f) * (frand8() * 360.0f); + BoardModelRotSetV(sp38[temp_r31], &sp20); + } + temp_f31 = -4; + temp_r30 = 0; + temp_f30 = sp8[BoardPlayerSizeGet(lbl_1_bss_388)]; + while (1) { + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + if (temp_r31 < temp_r30) { + continue; + } + BoardModelPosGet(sp38[temp_r31], &sp2C); + BoardModelRotGet(sp38[temp_r31], &sp20); + sp2C.y += temp_f31; + sp20.y += 45.0f; + BoardModelPosSetV(sp38[temp_r31], &sp2C); + BoardModelRotSetV(sp38[temp_r31], &sp20); + if (sp2C.y <= sp14.y + (180.0f * temp_f30)) { + CharModelCoinEffectCreate(1, &sp2C); + BoardModelVisibilitySet(sp38[temp_r31], 0); + temp_r30++; + BoardPlayerCoinsAdd(lbl_1_bss_388, 1); + HuAudFXPlay(7); + omVibrate(lbl_1_bss_388, 12, 6, 6); + } + } + temp_f31 *= 1.05f; + if (temp_f31 < -40.0f) { + temp_f31 = -40.0f; + } + if (temp_r30 == 20) { + BoardPlayerMotionShiftSet(lbl_1_bss_388, 7, 0, 10, HU3D_MOTATTR_NONE); + break; + } + HuPrcVSleep(); + } + while (!BoardPlayerMotionEndCheck(lbl_1_bss_388)) { + HuPrcVSleep(); + } + for (temp_r31 = 0; temp_r31 < 20; temp_r31++) { + BoardModelKill(sp38[temp_r31]); + } + HuPrcSleep(60); + BoardPlayerMotBlendSet(lbl_1_bss_388, 180, 15); + BoardStatusShowSetAll(0); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_388)) { + HuPrcVSleep(); + } } s32 fn_1_D8C4(void) { - Vec sp40; - Vec sp34; - Vec sp28; - Vec sp1C; - s16 sp14[4]; - float spC[2]; - s32 sp8; - - float temp_f31; - float temp_f30; - - s32 temp_r31; - s16 temp_r30; - BoardSpace *temp_r29; - s32 temp_r28; - s16 temp_r27; - s16 temp_r26; - s32 temp_r25; - s16 temp_r24; - s16 temp_r23; - s16 temp_r22; - - u32 temp_r21; - fn_1_121C(0x130009); - temp_r29 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800)); - BoardModelPosGet(lbl_1_bss_30[3], &sp40); - for(temp_r31=0; temp_r31<4; temp_r31++) { - sp14[temp_r31] = BoardModelCreate(0x70000, NULL, 1); - BoardModelLayerSet(sp14[temp_r31], 2); - for(temp_r28=0; temp_r28link_cnt; temp_r28++) { - temp_r21 = (BoardSpaceFlagGet(0, temp_r29->link[temp_r28]) & 0xE) >> 1; - if(temp_r21 == temp_r31+2) { - break; - } - } - sp8 = BoardSpacePosGet(0, temp_r29->link[temp_r28], &sp28); - VECSubtract(&sp28, &sp40, &sp34); - BoardModelRotYSet(sp14[temp_r31], atan2d(sp34.x, sp34.z)); - VECNormalize(&sp34, &sp34); - VECScale(&sp34, &sp34, 400); - VECAdd(&sp34, &sp40, &sp34); - sp34.y += 300.0f; - BoardModelPosSetV(sp14[temp_r31], &sp34); - sp1C.x = sp1C.y = sp1C.z = 3; - BoardModelScaleSetV(sp14[temp_r31], &sp1C); - } - temp_r25 = fn_1_E2AC(); - HuWinMesMaxSizeGet(1, spC, 0x13001E); - temp_r30 = HuWinCreate(-10000, 356, spC[0], spC[1], 0); - HuWinMesSet(temp_r30, 0x13001E); - HuWinBGTPLvlSet(temp_r30, 0); - HuWinMesSpeedSet(temp_r30, 0); - temp_r23 = GWPlayer[lbl_1_bss_388].port; - temp_f30 = 0; - temp_r22 = frandmod(20)+20; - restart: - while(1) { - if(GWPlayer[lbl_1_bss_388].com) { - temp_r27 = 0; - temp_r26 = 0; - if(temp_r22) { - temp_r22--; - temp_r24 = 0; - } else { - temp_r24 = PAD_BUTTON_A; - } - break; - } - temp_r24 = HuPadBtnDown[temp_r23]; - temp_r27 = HuPadStkX[temp_r23]; - temp_r26 = HuPadStkY[temp_r23]; - if(!(temp_r24 & PAD_TRIGGER_Z)) { - break; - } - HuAudFXPlay(1); - for(temp_r31=0; temp_r31<4; temp_r31++) { - BoardModelVisibilitySet(sp14[temp_r31], 0); - } - HuWinDispOff(temp_r30); - BoardViewMapExec(lbl_1_bss_388); - HuWinDispOn(temp_r30); - for(temp_r31=0; temp_r31<4; temp_r31++) { - BoardModelVisibilitySet(sp14[temp_r31], 1); - } - } - if(!(temp_r24 & PAD_BUTTON_A)) { - if(abs(temp_r27) < 10) { - temp_r27 = 0; - } - if(abs(temp_r26) < 10) { - temp_r26 = 0; - } - if(temp_r27 != 0 || temp_r26 != 0) { - temp_f31 = atan2d(-temp_r27, -temp_r26); - if(temp_f31 < 0.0f) { - temp_f31 += 360.0f; - } - temp_r31 = temp_f31/90.0f; - temp_f31 = fmod(temp_f31, 90.0); - if(temp_r31 != temp_r25 && temp_f31 >= 20.0f && temp_f31 <= 70.0f){ - temp_f30 = 0; - temp_r25 = temp_r31; - HuAudFXPlay(0); - } - - } - for(temp_r31=0; temp_r31<4; temp_r31++) { - if(temp_r31 == temp_r25) { - sp1C.x = sp1C.y = sp1C.z = sind(temp_f30)+3.0; - temp_f30 += 8.0f; - if(temp_f30 > 180.0f) { - temp_f30 -= 180.0f; - } - } else { - sp1C.x = sp1C.y = sp1C.z = 3.0f; - } - - - BoardModelScaleSetV(sp14[temp_r31], &sp1C); - } - HuPrcVSleep(); - goto restart; - } else { - HuAudFXPlay(2); - for(temp_r31=0; temp_r31<4; temp_r31++) { - BoardModelKill(sp14[temp_r31]); - } - HuWinKill(temp_r30); - return temp_r25; - } + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + s16 sp14[4]; + float spC[2]; + s32 sp8; + + float temp_f31; + float temp_f30; + + s32 temp_r31; + s16 temp_r30; + BoardSpace *temp_r29; + s32 temp_r28; + s16 temp_r27; + s16 temp_r26; + s32 temp_r25; + s16 temp_r24; + s16 temp_r23; + s16 temp_r22; + + u32 temp_r21; + fn_1_121C(MAKE_MESSID(0x13, 0x09)); + temp_r29 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800)); + BoardModelPosGet(lbl_1_bss_30[3], &sp40); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + sp14[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x00), NULL, 1); + BoardModelLayerSet(sp14[temp_r31], 2); + for (temp_r28 = 0; temp_r28 < temp_r29->link_cnt; temp_r28++) { + temp_r21 = (BoardSpaceFlagGet(0, temp_r29->link[temp_r28]) & 0xE) >> 1; + if (temp_r21 == temp_r31 + 2) { + break; + } + } + sp8 = BoardSpacePosGet(0, temp_r29->link[temp_r28], &sp28); + VECSubtract(&sp28, &sp40, &sp34); + BoardModelRotYSet(sp14[temp_r31], atan2d(sp34.x, sp34.z)); + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp34, 400); + VECAdd(&sp34, &sp40, &sp34); + sp34.y += 300.0f; + BoardModelPosSetV(sp14[temp_r31], &sp34); + sp1C.x = sp1C.y = sp1C.z = 3; + BoardModelScaleSetV(sp14[temp_r31], &sp1C); + } + temp_r25 = fn_1_E2AC(); + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(0x13, 0x1E)); + temp_r30 = HuWinCreate(-10000, 356, spC[0], spC[1], 0); + HuWinMesSet(temp_r30, MAKE_MESSID(0x13, 0x1E)); + HuWinBGTPLvlSet(temp_r30, 0); + HuWinMesSpeedSet(temp_r30, 0); + temp_r23 = GWPlayer[lbl_1_bss_388].port; + temp_f30 = 0; + temp_r22 = frandmod(20) + 20; +restart: + while (1) { + if (GWPlayer[lbl_1_bss_388].com) { + temp_r27 = 0; + temp_r26 = 0; + if (temp_r22) { + temp_r22--; + temp_r24 = 0; + } + else { + temp_r24 = PAD_BUTTON_A; + } + break; + } + temp_r24 = HuPadBtnDown[temp_r23]; + temp_r27 = HuPadStkX[temp_r23]; + temp_r26 = HuPadStkY[temp_r23]; + if (!(temp_r24 & PAD_TRIGGER_Z)) { + break; + } + HuAudFXPlay(1); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + BoardModelVisibilitySet(sp14[temp_r31], 0); + } + HuWinDispOff(temp_r30); + BoardViewMapExec(lbl_1_bss_388); + HuWinDispOn(temp_r30); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + BoardModelVisibilitySet(sp14[temp_r31], 1); + } + } + if (!(temp_r24 & PAD_BUTTON_A)) { + if (abs(temp_r27) < 10) { + temp_r27 = 0; + } + if (abs(temp_r26) < 10) { + temp_r26 = 0; + } + if (temp_r27 != 0 || temp_r26 != 0) { + temp_f31 = atan2d(-temp_r27, -temp_r26); + if (temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + temp_r31 = temp_f31 / 90.0f; + temp_f31 = fmod(temp_f31, 90.0); + if (temp_r31 != temp_r25 && temp_f31 >= 20.0f && temp_f31 <= 70.0f) { + temp_f30 = 0; + temp_r25 = temp_r31; + HuAudFXPlay(0); + } + } + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + if (temp_r31 == temp_r25) { + sp1C.x = sp1C.y = sp1C.z = sind(temp_f30) + 3.0; + temp_f30 += 8.0f; + if (temp_f30 > 180.0f) { + temp_f30 -= 180.0f; + } + } + else { + sp1C.x = sp1C.y = sp1C.z = 3.0f; + } + + BoardModelScaleSetV(sp14[temp_r31], &sp1C); + } + HuPrcVSleep(); + goto restart; + } + else { + HuAudFXPlay(2); + for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { + BoardModelKill(sp14[temp_r31]); + } + HuWinKill(temp_r30); + return temp_r25; + } } void fn_1_DF48(void) { - Vec sp14; - Vec sp8; - s32 temp_r31; - float temp_f31; - float temp_f30; - float temp_f29; - float temp_f28; - BoardModelMotionTimeSet(lbl_1_bss_30[5], 0); - BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002); - temp_f31 = BoardModelRotYGet(lbl_1_bss_30[5]); - temp_f29 = -temp_f31/20.0f; - temp_f30 = BoardModelRotYGet(lbl_1_bss_30[15]); - temp_f28 = -temp_f30/20.0f; - BoardModelScaleGet(lbl_1_bss_30[6], &sp14); - for(temp_r31=0; temp_r31<10; temp_r31++) { - sp14.x = sp14.y = sp14.z = 1.0f-(temp_r31*0.1f); - if(sp14.x < 0.0f) { - sp14.x = sp14.y = sp14.z = 0.0f; - } - BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); - temp_f31 += temp_f29; - BoardModelRotYSet(lbl_1_bss_30[5], temp_f31); - temp_f30 += temp_f28; - BoardModelRotYSet(lbl_1_bss_30[15], temp_f30); - HuPrcVSleep(); - } - BoardModelPosGet(lbl_1_bss_30[15], &sp8); - sp8.z -= 90.0f; - sp8.y += 50.0f; - BoardModelPosSetV(lbl_1_bss_30[6], &sp8); - for(temp_r31=0; temp_r31<10; temp_r31++) { - sp14.x = sp14.y = sp14.z = temp_r31*0.1f; - if(sp14.x > 1.0f) { - sp14.x = sp14.y = sp14.z = 1.0f; - } - BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); - temp_f31 += temp_f29; - BoardModelRotYSet(lbl_1_bss_30[5], temp_f31); - temp_f30 += temp_f28; - BoardModelRotYSet(lbl_1_bss_30[15], temp_f30); - HuPrcVSleep(); - } - sp14.x = sp14.y = sp14.z = 1.0f; - BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); - BoardModelRotYSet(lbl_1_bss_30[5], 0); - BoardModelRotYSet(lbl_1_bss_30[15], 0); - HuPrcEnd(); + Vec sp14; + Vec sp8; + s32 temp_r31; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + BoardModelMotionTimeSet(lbl_1_bss_30[5], 0); + BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002); + temp_f31 = BoardModelRotYGet(lbl_1_bss_30[5]); + temp_f29 = -temp_f31 / 20.0f; + temp_f30 = BoardModelRotYGet(lbl_1_bss_30[15]); + temp_f28 = -temp_f30 / 20.0f; + BoardModelScaleGet(lbl_1_bss_30[6], &sp14); + for (temp_r31 = 0; temp_r31 < 10; temp_r31++) { + sp14.x = sp14.y = sp14.z = 1.0f - (temp_r31 * 0.1f); + if (sp14.x < 0.0f) { + sp14.x = sp14.y = sp14.z = 0.0f; + } + BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); + temp_f31 += temp_f29; + BoardModelRotYSet(lbl_1_bss_30[5], temp_f31); + temp_f30 += temp_f28; + BoardModelRotYSet(lbl_1_bss_30[15], temp_f30); + HuPrcVSleep(); + } + BoardModelPosGet(lbl_1_bss_30[15], &sp8); + sp8.z -= 90.0f; + sp8.y += 50.0f; + BoardModelPosSetV(lbl_1_bss_30[6], &sp8); + for (temp_r31 = 0; temp_r31 < 10; temp_r31++) { + sp14.x = sp14.y = sp14.z = temp_r31 * 0.1f; + if (sp14.x > 1.0f) { + sp14.x = sp14.y = sp14.z = 1.0f; + } + BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); + temp_f31 += temp_f29; + BoardModelRotYSet(lbl_1_bss_30[5], temp_f31); + temp_f30 += temp_f28; + BoardModelRotYSet(lbl_1_bss_30[15], temp_f30); + HuPrcVSleep(); + } + sp14.x = sp14.y = sp14.z = 1.0f; + BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); + BoardModelRotYSet(lbl_1_bss_30[5], 0); + BoardModelRotYSet(lbl_1_bss_30[15], 0); + HuPrcEnd(); } s32 fn_1_E2AC(void) { - switch(GWSystem.star_pos) { - case 0: - return 3; - - case 1: - case 2: - return 0; - - case 3: - case 4: - return 1; - - case 5: - case 6: - case 7: - return 2; - - default: - return -1; - } + switch (GWSystem.star_pos) { + case 0: + return 3; + + case 1: + case 2: + return 0; + + case 3: + case 4: + return 1; + + case 5: + case 6: + case 7: + return 2; + + default: + return -1; + } } /* Rotate (yaw) of model 4 */ -void fn_1_E310(f32 degrees) { - Point3d spC; +void fn_1_E310(f32 degrees) +{ + Vec spC; lbl_1_bss_380 += degrees; if (lbl_1_bss_380 >= 360.0f) { lbl_1_bss_380 -= 360.0f; @@ -804,11 +808,11 @@ void fn_1_E310(f32 degrees) { void fn_1_E41C(void) { - lbl_1_bss_388 = GWSystem.player_curr; - OSReport("Roulette Player %d\n", lbl_1_bss_388); - lbl_1_bss_38C = HuPrcChildCreate(fn_1_BCFC, 8195, 8192, 0, boardMainProc); - HuPrcDestructorSet2(lbl_1_bss_38C, (void *)fn_1_BE74); //fn_1_BE74 requires implicit return - while(lbl_1_bss_38C) { - HuPrcVSleep(); - } -} \ No newline at end of file + lbl_1_bss_388 = GWSystem.player_curr; + OSReport("Roulette Player %d\n", lbl_1_bss_388); + lbl_1_bss_38C = HuPrcChildCreate(fn_1_BCFC, 8195, 8192, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_38C, (void *)fn_1_BE74); // fn_1_BE74 requires implicit return + while (lbl_1_bss_38C) { + HuPrcVSleep(); + } +} diff --git a/src/REL/w02Dll/shuffleboard.c b/src/REL/w02Dll/shuffleboard.c index 2d3d0ff9..27b8a332 100644 --- a/src/REL/w02Dll/shuffleboard.c +++ b/src/REL/w02Dll/shuffleboard.c @@ -25,25 +25,25 @@ s16 lbl_1_bss_1AC; Vec lbl_1_bss_1A0; s32 lbl_1_data_490[8] = { - 0x0076002E, - 0x0076002F, - 0x00760030, - 0x00760031, - 0x00760032, - 0x00760033, - 0x00760034, - 0x00760035 + DATA_MAKE_NUM(DATADIR_W02, 0x2E), + DATA_MAKE_NUM(DATADIR_W02, 0x2F), + DATA_MAKE_NUM(DATADIR_W02, 0x30), + DATA_MAKE_NUM(DATADIR_W02, 0x31), + DATA_MAKE_NUM(DATADIR_W02, 0x32), + DATA_MAKE_NUM(DATADIR_W02, 0x33), + DATA_MAKE_NUM(DATADIR_W02, 0x34), + DATA_MAKE_NUM(DATADIR_W02, 0x35) }; s32 lbl_1_data_4B0[8] = { - 0x00760026, - 0x00760027, - 0x00760028, - 0x00760029, - 0x0076002A, - 0x0076002B, - 0x0076002C, - 0x0076002D + DATA_MAKE_NUM(DATADIR_W02, 0x26), + DATA_MAKE_NUM(DATADIR_W02, 0x27), + DATA_MAKE_NUM(DATADIR_W02, 0x28), + DATA_MAKE_NUM(DATADIR_W02, 0x29), + DATA_MAKE_NUM(DATADIR_W02, 0x2A), + DATA_MAKE_NUM(DATADIR_W02, 0x2B), + DATA_MAKE_NUM(DATADIR_W02, 0x2C), + DATA_MAKE_NUM(DATADIR_W02, 0x2D) }; s32 fn_1_9250(void) @@ -135,9 +135,9 @@ void fn_1_94C0(void) BoardCameraRotSet(-10, -sp10.y); BoardCameraZoomSet(900); BoardStatusShowSetAll(0); - HuWinMesMaxSizeGet(1, sp8, 0x13001C); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x13, 0x1C)); lbl_1_bss_1AC = HuWinCreate(-10000, 400, sp8[0], sp8[1], 0); - HuWinMesSet(lbl_1_bss_1AC, 0x13001C); + HuWinMesSet(lbl_1_bss_1AC, MAKE_MESSID(0x13, 0x1C)); HuWinBGTPLvlSet(lbl_1_bss_1AC, 0); HuWinMesSpeedSet(lbl_1_bss_1AC, 0); fn_1_9EC4(); @@ -217,7 +217,7 @@ void fn_1_98D8(void) while(!BoardPlayerMotBlendCheck(lbl_1_bss_36E)) { HuPrcVSleep(); } - BoardPlayerMotionShiftSet(lbl_1_bss_36E, lbl_1_bss_1C0[0], 0, 10, 0x40000001); + BoardPlayerMotionShiftSet(lbl_1_bss_36E, lbl_1_bss_1C0[0], 0, 10, HU3D_MOTATTR_LOOP); HuPrcSleep(20); } @@ -238,7 +238,7 @@ void fn_1_9EC4(void) s32 temp_r31; s32 temp_r30; for(temp_r31=0; temp_r31<15; temp_r31++) { - lbl_1_bss_34C[temp_r31] = BoardModelCreate(0x7000A, NULL, 1); + lbl_1_bss_34C[temp_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 1); BoardModelVisibilitySet(lbl_1_bss_34C[temp_r31], 0); lbl_1_bss_1C4[temp_r31] = 1; } @@ -483,7 +483,7 @@ void fn_1_A8E8(void) HuWinKill(lbl_1_bss_1AC); BoardPlayerMotionStart(lbl_1_bss_36E, lbl_1_bss_1C0[1], 0); BoardPlayerMotionEndWait(lbl_1_bss_36E); - BoardPlayerMotionShiftSet(lbl_1_bss_36E, 6, 0, 15, 0x40000001); + BoardPlayerMotionShiftSet(lbl_1_bss_36E, 6, 0, 15, HU3D_MOTATTR_LOOP); HuPrcSleep(40); BoardAudSeqFadeOut(1, 1000); HuPrcSleep(70); @@ -582,4 +582,4 @@ void fn_1_BB30(void) HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/REL/w03Dll/condor.c b/src/REL/w03Dll/condor.c index cfc9a13a..c42f53b3 100644 --- a/src/REL/w03Dll/condor.c +++ b/src/REL/w03Dll/condor.c @@ -1,21 +1,23 @@ #include "REL/w03Dll.h" -#include "game/data.h" #include "game/board/main.h" -#include "game/board/space.h" -#include "game/board/player.h" #include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" #include "game/board/window.h" +#include "game/data.h" -#include "game/hsfman.h" #include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/pad.h" #include "game/wipe.h" -//structs +#include "ext_math.h" + +// structs typedef struct w03UnkStruct5 { - /* 0x00 */ struct { + /* 0x00 */ struct { u8 unk00_bit0 : 1; u8 unk00_bit1 : 2; u8 unk00_bit3 : 1; @@ -27,21 +29,21 @@ typedef struct w03UnkStruct5 { } w03UnkStruct5; typedef struct w03UnkStruct4 { - /* 0x00 */ struct { + /* 0x00 */ struct { u8 unk00_bit0 : 1; - }; + }; } w03UnkStruct4; typedef struct w03StructUnk3 { -/* 0x00 */ s16 unk_00; -/* 0x02 */ s16 model; -/* 0x04 */ f32 unk_04; -/* 0x08 */ Vec unk_08; -/* 0x14 */ Vec unk_14; + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 model; + /* 0x04 */ f32 unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ Vec unk_14; } w03StructUnk3; typedef struct w03StructUnk2 { -/* 0x00 */ struct { + /* 0x00 */ struct { u8 unkbit_00 : 1; u8 unkbit_01 : 2; u8 unkbit_03 : 1; @@ -52,10 +54,10 @@ typedef struct w03StructUnk2 { u8 unk_03; s16 model; char unk_06[2]; - w03StructUnk3* unk_08; + w03StructUnk3 *unk_08; } w03StructUnk2; -//function signatures +// function signatures void fn_1_313C(void); void fn_1_3218(void); void fn_1_3304(void); @@ -67,44 +69,40 @@ void fn_1_3F5C(s32); void fn_1_4354(s32); void fn_1_48EC(s32); void fn_1_4A9C(void); -void fn_1_50D4(omObjData* arg0); +void fn_1_50D4(omObjData *arg0); void fn_1_5838(s32); -void fn_1_5AC8(omObjData* arg0); -void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1); -void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1); -f32 fn_1_61A4(omObjData* arg0, w03UnkStruct5* arg1); +void fn_1_5AC8(omObjData *arg0); +void fn_1_5C5C(omObjData *arg0, w03UnkStruct5 *arg1); +void fn_1_602C(omObjData *arg0, w03UnkStruct5 *arg1); +f32 fn_1_61A4(omObjData *arg0, w03UnkStruct5 *arg1); void fn_1_629C(s8 arg0); s32 fn_1_62D0(void); void fn_1_62FC(void); -//bss +// bss float lbl_1_bss_80[20][2]; s8 lbl_1_bss_7D; s8 lbl_1_bss_7C; omObjData *lbl_1_bss_78; omObjData *lbl_1_bss_74; -Process* lbl_1_bss_70; +Process *lbl_1_bss_70; -//data +// data s16 lbl_1_data_310 = -1; s16 lbl_1_data_312 = -1; s16 lbl_1_data_314 = -1; s16 lbl_1_data_316 = -1; -s32 lbl_1_data_318[] = { - DATA_MAKE_NUM(DATADIR_W03, 0x0016), - DATA_MAKE_NUM(DATADIR_W03, 0x0017), - DATA_MAKE_NUM(DATADIR_W03, 0x0018), - DATA_MAKE_NUM(DATADIR_W03, 0x0019), - DATA_MAKE_NUM(DATADIR_W03, 0x001A), - DATA_NUM_LISTEND -}; +s32 lbl_1_data_318[] = { DATA_MAKE_NUM(DATADIR_W03, 0x0016), DATA_MAKE_NUM(DATADIR_W03, 0x0017), DATA_MAKE_NUM(DATADIR_W03, 0x0018), + DATA_MAKE_NUM(DATADIR_W03, 0x0019), DATA_MAKE_NUM(DATADIR_W03, 0x001A), DATA_NUM_LISTEND }; -void fn_1_3058(void) { - lbl_1_data_310 = BoardModelCreate(0x770015, lbl_1_data_318, 0); +void fn_1_3058(void) +{ + lbl_1_data_310 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x15), lbl_1_data_318, 0); fn_1_3304(); } -s32 fn_1_309C(void) { +s32 fn_1_309C(void) +{ BoardRollDispSet(0); lbl_1_bss_70 = HuPrcChildCreate(fn_1_313C, 0x2003U, 0x2000U, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_70, fn_1_3218); @@ -112,12 +110,13 @@ s32 fn_1_309C(void) { while (lbl_1_bss_70) { HuPrcVSleep(); } - + BoardRollDispSet(1); return lbl_1_bss_7C; } -void fn_1_313C(void) { +void fn_1_313C(void) +{ s32 temp_r31; temp_r31 = GWSystem.player_curr; @@ -138,8 +137,8 @@ void fn_1_313C(void) { HuPrcEnd(); } - -void fn_1_3218(void) { +void fn_1_3218(void) +{ if (lbl_1_data_316 != -1) { HuWinKill(lbl_1_data_316); lbl_1_data_316 = -1; @@ -154,34 +153,36 @@ void fn_1_3218(void) { BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_312); lbl_1_data_312 = -1; } - + lbl_1_bss_0->unk3 = 0; lbl_1_bss_70 = 0; } - -void fn_1_3304(void) { +void fn_1_3304(void) +{ Vec sp8; f32 temp_f31; s32 var_r31; if (lbl_1_bss_0->unk1 != 0) { var_r31 = BoardSpaceFlagSearch(0, 0x4000); - } else { + } + else { var_r31 = BoardSpaceFlagSearch(0, 0x8000); } var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000); BoardSpacePosGet(0, var_r31, &sp8); temp_f31 = 0.0f; - sp8.x = sp8.x + (-300.0 * sin((M_PI * temp_f31) / 180.0)); - sp8.z = sp8.z + (-300.0 * cos((M_PI * temp_f31) / 180.0)); + sp8.x += -300.0 * sind(temp_f31); + sp8.z += -300.0 * cosd(temp_f31); sp8.y = 45.0f + sp8.y; BoardModelPosSetV(lbl_1_data_310, &sp8); BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001); } -s32 fn_1_3478(s32 arg0) { +s32 fn_1_3478(s32 arg0) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -211,24 +212,24 @@ s32 fn_1_3478(s32 arg0) { BoardPlayerPosGet(arg0, &sp2C); temp = BoardSpaceLinkFlagSearch(0, temp_r28, 0x02000000); BoardSpacePosGet(0, temp, &sp38); - PSVECSubtract(&sp38, &sp2C, &sp20); - float_temp = atan2(sp20.x, sp20.z) / M_PI * 180.0f; + VECSubtract(&sp38, &sp2C, &sp20); + float_temp = atan2d(sp20.x, sp20.z); BoardPlayerMotBlendSet(arg0, (float_temp), 0xF); - + while (BoardPlayerMotBlendCheck(arg0) == 0) { HuPrcVSleep(); } - + BoardPlayerIdleSet(arg0); HuAudFXPlay(0x447); - BoardModelMotionShiftSet(lbl_1_data_310, 4, 0.0f, 5.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_310, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(6); - + while (BoardModelMotionEndCheck(lbl_1_data_310) == 0) { HuPrcVSleep(); } - - BoardModelMotionShiftSet(lbl_1_data_310, 1, 0.0f, 5.0f, 0x40000001); + + BoardModelMotionShiftSet(lbl_1_data_310, 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); temp_r26 = BoardPlayerGetCharMess(arg0); BoardWinCreate(2, MAKE_MESSID(22, 16), 8); BoardWinInsertMesSet(temp_r26, 3); @@ -245,26 +246,26 @@ s32 fn_1_3478(s32 arg0) { while (var_r29 == 0) { BoardWinCreateChoice(2, MAKE_MESSID(22, 17), 8, 0); BoardWinAttrSet(0x10); - + if (GWPlayer[arg0].com != 0) { fn_1_4354(arg0); } - + BoardWinWait(); BoardWinKill(); switch (BoardWinChoiceGet()) { - case 0: - var_r29 = 1; - break; - case 2: - BoardViewMapExec(arg0); - break; - default: - case 1: - BoardWinCreate(2, MAKE_MESSID(22, 20), 8); - BoardWinWait(); - BoardWinKill(); - return 0; + case 0: + var_r29 = 1; + break; + case 2: + BoardViewMapExec(arg0); + break; + default: + case 1: + BoardWinCreate(2, MAKE_MESSID(22, 20), 8); + BoardWinWait(); + BoardWinKill(); + return 0; } } @@ -273,7 +274,7 @@ s32 fn_1_3478(s32 arg0) { for (j = 0; j < 5; j++) { BoardPlayerCoinsAdd(arg0, -1); HuAudFXPlay(14); - HuPrcSleep(6); + HuPrcSleep(6); } HuAudFXPlay(15); @@ -281,19 +282,20 @@ s32 fn_1_3478(s32 arg0) { return 1; } -void fn_1_3814(s32 arg0) { +void fn_1_3814(s32 arg0) +{ Vec sp14; Vec sp8; f32 temp; - BoardModelMotionShiftSet(lbl_1_data_310, 2, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_310, 2, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); temp = (180.0f + BoardPlayerRotYGet(arg0)); BoardPlayerMotBlendSet(arg0, temp, 0xF); - + while (BoardPlayerMotBlendCheck(arg0) == 0) { HuPrcVSleep(); } - + BoardCameraViewSet(1); BoardCameraTargetPlayerSet(arg0); @@ -310,18 +312,21 @@ void fn_1_3814(s32 arg0) { BoardCameraMotionWait(); } -void fn_1_3968(s32 arg0) { +void fn_1_3968(s32 arg0) +{ s32 var_r29 = 0; s32 var_r28 = 0; - s32 sp48[] = {0x005F0065, 0x001A0065, 0x006D0065, 0x008A0065, 0x00850065, 0x00110065, 0x000D0065, 0x00810065}; + s32 sp48[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x65), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x65), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x65), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x65), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x65), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x65), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x65), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x65) }; Vec sp3C; Vec sp30; Vec sp24; Vec sp18; - s32 sp10[2] = {0x00770013, 0x00770014}; + s32 sp10[2] = { 0x00770013, 0x00770014 }; f32 spC; s16 sp8; - + f32 temp_f30; f32 temp_f28; f32 temp_f31; @@ -332,26 +337,26 @@ void fn_1_3968(s32 arg0) { lbl_1_data_314 = BoardModelCreate(sp10[lbl_1_bss_0->unk1], NULL, 0); character = GWPlayer[arg0].character; lbl_1_data_312 = BoardPlayerMotionCreate(arg0, sp48[character]); - + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_310), "itemhook_oya", &sp3C); BoardPlayerPosGet(arg0, &sp30); temp_f30 = BoardVecDistXZCalc(&sp3C, &sp30); - PSVECSubtract(&sp3C, &sp30, &sp24); - PSVECNormalize(&sp24, &sp24); - PSVECScale(&sp24, &sp24, temp_f30 / 45.0f); - BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 5.0f, 0); + VECSubtract(&sp3C, &sp30, &sp24); + VECNormalize(&sp24, &sp24); + VECScale(&sp24, &sp24, temp_f30 / 45.0f); + BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(5); - + spC = BoardPlayerRotYGet(arg0); temp_f27 = 180.0f + spC; var_r29 = 0; sp8 = 0; temp_f28 = 40.0f; - + while (1) { temp_f31 = __OSs16tof32(&sp8); sp24.y = temp_f28 + (-0.08166667f * (0.75f * (temp_f31 * temp_f31))); - PSVECAdd(&sp30, &sp24, &sp30); + VECAdd(&sp30, &sp24, &sp30); temp_f30 = BoardVecDistXZCalc(&sp3C, &sp30); if (temp_f30 < 5.0f) { @@ -359,16 +364,17 @@ void fn_1_3968(s32 arg0) { sp30.x = sp3C.x; sp30.z = sp3C.z; } - + if (var_r29 == 0) { if (sp3C.y < sp30.y) { var_r29 = 1; } - } else { + } + else { BoardDAngleCalcRange(&spC, temp_f27, 5.142857f); BoardPlayerRotYSet(arg0, spC); } - + if (sp30.y <= sp3C.y && var_r29 != 0) { sp30.y = sp3C.y; break; @@ -376,39 +382,40 @@ void fn_1_3968(s32 arg0) { BoardPlayerPosSetV(arg0, &sp30); HuPrcVSleep(); - sp8 += 1; + sp8 += 1; } - + BoardMusStart(1, 0x18, 0x7F, 0); BoardPlayerPosSet(arg0, 0.0f, 0.0f, 0.0f); - - - BoardModelHookSet(lbl_1_data_310, "itemhook_oya", BoardPlayerModelGet(arg0)); + + BoardModelHookSet(lbl_1_data_310, "itemhook_oya", BoardPlayerModelGet(arg0)); BoardPlayerMotionStart(arg0, lbl_1_data_312, 0x40000001); HuAudFXPlay(0x44F); - BoardModelMotionShiftSet(lbl_1_data_310, 5, 0.0f, 5.0f, 0); - + BoardModelMotionShiftSet(lbl_1_data_310, 5, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + sp18.x = -15.0f; sp18.y = 180.0f; sp18.z = 0.0f; - + BoardCameraMotionStartEx(lbl_1_data_310, &sp18, NULL, 4000.0f, -1.0f, 336); - - for (var_r28 = 0, sp8 = 0; ; sp8++) { + + for (var_r28 = 0, sp8 = 0;; sp8++) { if (var_r28 == 0) { if (sp8 == 0x78U) { WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); var_r28 = 1; } - } else if (WipeStatGet() == 0) { + } + else if (WipeStatGet() == 0) { break; } HuPrcVSleep(); } } -void fn_1_3E88(s32 arg0) { +void fn_1_3E88(s32 arg0) +{ lbl_1_bss_7D = 0; fn_1_48EC(arg0); fn_1_5838(arg0); @@ -433,7 +440,8 @@ void fn_1_3E88(s32 arg0) { BoardAudSeqPause(0, 0, 0x3E8); } -void fn_1_3F5C(s32 arg0) { +void fn_1_3F5C(s32 arg0) +{ Mtx sp38; Vec sp2C; Vec sp20; @@ -447,7 +455,8 @@ void fn_1_3F5C(s32 arg0) { if (lbl_1_bss_0->unk1 != 0) { lbl_1_bss_0->unk1 = 0; var_r30 = BoardSpaceFlagSearch(0, 0x8000); - } else { + } + else { lbl_1_bss_0->unk1 = 1; var_r30 = BoardSpaceFlagSearch(0, 0x4000); } @@ -458,21 +467,22 @@ void fn_1_3F5C(s32 arg0) { if (lbl_1_bss_0->unk1 != 0) { var_r31 = BoardSpaceFlagSearch(0, 0x4000); - } else { + } + else { var_r31 = BoardSpaceFlagSearch(0, 0x8000); } var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000); BoardSpacePosGet(0, var_r31, &sp8); temp_f31 = 0.0f; - sp8.x = (sp8.x + (-300.0 * sin((M_PI * temp_f31) / 180.0f))); - sp8.z = (sp8.z + (-300.0 * cos((M_PI * temp_f31) / 180.0f))); + sp8.x += -300.0 * sind(temp_f31); + sp8.z += -300.0 * cosd(temp_f31); sp8.y = 45.0f + sp8.y; BoardModelPosSetV(lbl_1_data_310, &sp8); BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001); BoardModelMotionStart(lbl_1_data_310, 1, 0x40000001); BoardModelRotYSet(lbl_1_data_310, 0.0f); - PSMTXIdentity(sp38); + MTXIdentity(sp38); BoardModelMtxSet(lbl_1_data_310, &sp38); sp20.x = 0.0f; @@ -506,19 +516,21 @@ void fn_1_3F5C(s32 arg0) { BoardWinKill(); } -void fn_1_4354(s32 arg0) { +void fn_1_4354(s32 arg0) +{ s32 sp8; s32 starPos; s32 var_r30; var_r30 = 0; starPos = GWSystem.star_pos; - + if (lbl_1_bss_0->unk1 != 0) { if ((starPos == 1) || (starPos == 2) || (starPos == 3) || (starPos == 4)) { var_r30 = 1; } - } else if ((starPos == 0) || (starPos == 5) || (starPos == 6) || (starPos == 7)) { + } + else if ((starPos == 0) || (starPos == 5) || (starPos == 6) || (starPos == 7)) { var_r30 = 1; } @@ -534,12 +546,10 @@ void fn_1_4354(s32 arg0) { BoardComKeySetRight(); } -char *lbl_1_data_34C[] = { - "jyanA", - "jyanB" -}; +char *lbl_1_data_34C[] = { "jyanA", "jyanB" }; -void fn_1_4424(w03StructUnk2* arg0) { +void fn_1_4424(w03StructUnk2 *arg0) +{ Mtx sp108; Mtx spD8; Mtx spA8; @@ -562,9 +572,9 @@ void fn_1_4424(w03StructUnk2* arg0) { f32 sp10; f32 sp10_2; s16 i; - char* temp_r22; - w03StructUnk3* temp_r27; - ModelData* temp_r28; + char *temp_r22; + w03StructUnk3 *temp_r27; + ModelData *temp_r28; memset(&lbl_1_bss_80, 0, 0xA0); sp48.x = sp54.x = 0.0f; @@ -575,12 +585,13 @@ void fn_1_4424(w03StructUnk2* arg0) { BoardSpaceFlagPosGet(0, 0x8000U, &sp60); if (lbl_1_bss_0->unk1 != 0) { - PSVECSubtract(&sp6C, &sp60, &sp3C); - } else { - PSVECSubtract(&sp60, &sp6C, &sp3C); + VECSubtract(&sp6C, &sp60, &sp3C); + } + else { + VECSubtract(&sp60, &sp6C, &sp3C); } - sp10_2 = 180.0f * (atan2(-sp3C.x, -sp3C.z) / M_PI); + sp10_2 = atan2d(-sp3C.x, -sp3C.z); BoardModelMotionStart(lbl_1_data_314, 0, 0U); BoardModelMotionSpeedSet(lbl_1_data_314, 8.0f); HuPrcSleep(1); @@ -595,31 +606,31 @@ void fn_1_4424(w03StructUnk2* arg0) { for (i = var_r25 = 0; i < 20;) { Hu3DMotionExec(temp_r23, temp_r28->unk_08, temp_r28->unk_64, 0); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_314), temp_r22, &sp54); - temp_r28->unk_64 = (f32) (temp_r28->unk_64 + temp_r28->unk_68); + temp_r28->unk_64 += temp_r28->unk_68; if (temp_r28->unk_64 > 400.0f) { break; } - - if (var_r25 % 4 == 0 && ((s16) var_r25 != 0)) { + + if (var_r25 % 4 == 0 && ((s16)var_r25 != 0)) { temp_r27 = &arg0->unk_08[i]; temp_r27->unk_00 = 1; temp_f30 = (0.5f - BoardRandFloat()) * 90; OSf32tos16(&temp_f30, &sp8); sp8 = (sp8 / 10) * 10; OSs16tof32(&sp8, &temp_f30); - lbl_1_bss_80[i+1][0] = temp_f30; - lbl_1_bss_80[i+1][1] = temp_r28->unk_64; + lbl_1_bss_80[i + 1][0] = temp_f30; + lbl_1_bss_80[i + 1][1] = temp_r28->unk_64; sp30 = sp48; sp18 = sp54; BoardMTXCalcLookAt(spA8, &sp18, &sp24, &sp30); - PSMTXTranspose(spA8, spA8); + MTXTranspose(spA8, spA8); MTXRotDeg(spD8, 'z', temp_f30); - PSMTXTrans(sp108, 0.0f, -350.0f, 0.0f); - PSMTXConcat(spD8, sp108, sp108); - PSMTXConcat(spA8, sp108, sp108); - PSMTXTrans(sp78, sp54.x, sp54.y, sp54.z); - PSMTXConcat(sp78, sp108, sp78); + MTXTrans(sp108, 0.0f, -350.0f, 0.0f); + MTXConcat(spD8, sp108, sp108); + MTXConcat(spA8, sp108, sp108); + MTXTrans(sp78, sp54.x, sp54.y, sp54.z); + MTXConcat(sp78, sp108, sp78); Hu3DMtxTransGet(sp78, &temp_r27->unk_08); BoardModelPosSetV(temp_r27->model, &temp_r27->unk_08); BoardModelVisibilitySet(temp_r27->model, 1); @@ -632,12 +643,13 @@ void fn_1_4424(w03StructUnk2* arg0) { arg0->unk_03 = i; } -void fn_1_48EC(s32 arg0) { +void fn_1_48EC(s32 arg0) +{ Vec spC; - omObjData* obj; + omObjData *obj; s32 i; - w03StructUnk2* temp_r31; - w03StructUnk3* temp_r30; + w03StructUnk2 *temp_r31; + w03StructUnk3 *temp_r30; obj = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_50D4); lbl_1_bss_74 = obj; @@ -648,9 +660,9 @@ void fn_1_48EC(s32 arg0) { temp_r31->unkbit_04 = 0; temp_r31->unk_02 = -1; temp_r31->unkbit_01 = arg0; - temp_r31->unk_08 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xA00, 0x10000000U); + temp_r31->unk_08 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xA00, MEMORY_DEFAULT_NUM); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[2]), "coin", &spC); - temp_r31->model = BoardModelCreate(0x770007, NULL, 0); + temp_r31->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x07), NULL, 0); BoardModelVisibilitySet(temp_r31->model, 0); BoardModelPosSetV(temp_r31->model, &spC); BoardModelLayerSet(temp_r31->model, 2U); @@ -658,24 +670,26 @@ void fn_1_48EC(s32 arg0) { for (i = 0; i < 80; i++) { temp_r30 = &temp_r31->unk_08[i]; - temp_r30->model = BoardModelCreate(0x70009, 0, 1); + temp_r30->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x09), 0, 1); BoardModelVisibilitySet(temp_r30->model, 0); - BoardModelMotionStart(temp_r30->model, 0, 0x40000001U); + BoardModelMotionStart(temp_r30->model, 0, 0x40000001U); } - + fn_1_4424(temp_r31); } -void fn_1_4A9C(void) { +void fn_1_4A9C(void) +{ OM_GET_WORK_PTR(lbl_1_bss_74, w03UnkStruct4)->unk00_bit0 = 1; } -void fn_1_4ABC(w03StructUnk2* arg0) { +void fn_1_4ABC(w03StructUnk2 *arg0) +{ Vec sp8; f32 temp_f31; - w03StructUnk3* temp_r31; + w03StructUnk3 *temp_r31; s32 i; - + BoardModelPosGet(lbl_1_data_310, &sp8); sp8.y += 250.0f; @@ -691,10 +705,10 @@ void fn_1_4ABC(w03StructUnk2* arg0) { HuAudFXPlay(7); } BoardModelPosSetV(temp_r31->model, &temp_r31->unk_08); - } + } } - //reg alloc hack + // reg alloc hack (void)i; (void)i; @@ -705,27 +719,30 @@ void fn_1_4ABC(w03StructUnk2* arg0) { if (temp_r31->unk_00 == 1) { temp_r31->unk_04 += 1.0f; temp_f31 = 0.8f * (temp_r31->unk_04 * temp_r31->unk_04); - PSVECAdd(&temp_r31->unk_14, &temp_r31->unk_08, &temp_r31->unk_08); + VECAdd(&temp_r31->unk_14, &temp_r31->unk_08, &temp_r31->unk_08); temp_r31->unk_08.y += -0.0375f * temp_f31; if (temp_r31->unk_08.y < -300.0f) { temp_r31->unk_00 = -1; BoardModelVisibilitySet(temp_r31->model, 0); - } else if (BoardVecMinDistCheck(&sp8, &temp_r31->unk_08, 200.0f) != 0) { + } + else if (BoardVecMinDistCheck(&sp8, &temp_r31->unk_08, 200.0f) != 0) { temp_r31->unk_00 = -1; BoardModelVisibilitySet(temp_r31->model, 0); BoardPlayerCoinsAdd(arg0->unkbit_01, 1); CharModelLayerSetAll(2); CharModelCoinEffectCreate(1, &temp_r31->unk_08); HuAudFXPlay(7); - } else { + } + else { BoardModelPosSetV(temp_r31->model, &temp_r31->unk_08); } - } + } } } -s32 fn_1_4D0C(w03StructUnk3** arg0, s16* arg1) { - w03StructUnk2* temp_r31; +s32 fn_1_4D0C(w03StructUnk3 **arg0, s16 *arg1) +{ + w03StructUnk2 *temp_r31; if (!(lbl_1_bss_74)) { return 0; @@ -737,13 +754,14 @@ s32 fn_1_4D0C(w03StructUnk3** arg0, s16* arg1) { return 1; } -void fn_1_4D60(w03StructUnk2* arg0) { +void fn_1_4D60(w03StructUnk2 *arg0) +{ Vec sp8; f32 temp_f31; f32 temp_f30; s32 i; s32 j; - w03StructUnk3* temp_r31; + w03StructUnk3 *temp_r31; if (arg0->unk_02 == 1) { Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[2]), "coin", &sp8); @@ -754,9 +772,9 @@ void fn_1_4D60(w03StructUnk2* arg0) { temp_r31->unk_00 = 1; temp_f31 = 360.0f * BoardRandFloat(); temp_f30 = 5.0f * BoardRandFloat(); - temp_r31->unk_14.x = temp_f30 * sin((M_PI * temp_f31) / 180.0); + temp_r31->unk_14.x = temp_f30 * sind(temp_f31); temp_r31->unk_14.y = 50.0f + (20.0f * BoardRandFloat()); - temp_r31->unk_14.z = temp_f30 * cos((M_PI * temp_f31) / 180.0); + temp_r31->unk_14.z = temp_f30 * cosd(temp_f31); temp_r31->unk_08.x = sp8.x; temp_r31->unk_08.y = sp8.y; temp_r31->unk_08.z = sp8.z; @@ -769,20 +787,23 @@ void fn_1_4D60(w03StructUnk2* arg0) { } } -void fn_1_4F24(w03StructUnk2* arg0) { +void fn_1_4F24(w03StructUnk2 *arg0) +{ s32 var_r30 = 0; - s32 sp8[4] = {5, 10, 30, 40}; + s32 sp8[4] = { 5, 10, 30, 40 }; s32 temp_r29; s32 temp_r28; - + if (arg0->unk_02 == -1) { if (GWTeamGet()) { if (GWPlayer[arg0->unkbit_01].rank == 0) { var_r30 = 5; - } else if (GWPlayer[arg0->unkbit_01].rank == 1) { + } + else if (GWPlayer[arg0->unkbit_01].rank == 1) { var_r30 = 20; } - } else { + } + else { var_r30 = sp8[GWPlayer[arg0->unkbit_01].rank]; } @@ -792,25 +813,28 @@ void fn_1_4F24(w03StructUnk2* arg0) { if (temp_r29 < var_r30) { if (temp_r28 < 30) { arg0->unk_02 = 2; - } else { + } + else { arg0->unk_02 = 1; } - } else { + } + else { arg0->unk_02 = 0; } if (arg0->unk_02 != 0) { - BoardModelMotionShiftSet(lbl_1_bss_C[2], 0, 101.0f, 10.0f, 0); + BoardModelMotionShiftSet(lbl_1_bss_C[2], 0, 101.0f, 10.0f, HU3D_MOTATTR_NONE); } } } -void fn_1_50D4(omObjData* arg0) { +void fn_1_50D4(omObjData *arg0) +{ Vec sp50; Vec sp44; Vec sp38; - PlayerState* sp18; - PlayerState* sp14; + PlayerState *sp18; + PlayerState *sp14; s16 sp10[2]; s16 spC[2]; f32 temp_f31; @@ -819,12 +843,12 @@ void fn_1_50D4(omObjData* arg0) { s32 i, j, k; s32 temp_r22; s32 temp_r23; - w03StructUnk3* temp_r30; - w03StructUnk2* temp_r31; - w03StructUnk3* temp; + w03StructUnk3 *temp_r30; + w03StructUnk2 *temp_r31; + w03StructUnk3 *temp; temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_74, w03StructUnk2); - + if ((temp_r31->unkbit_00 != 0) || (BoardIsKill() != 0)) { for (i = 0; i < 80; i++) { temp = &temp_r31->unk_08[i]; @@ -834,28 +858,26 @@ void fn_1_50D4(omObjData* arg0) { for (i = 0; i < 4; i++) { BoardModelVisibilitySet(BoardPlayerModelGet(i), 1); } - + BoardModelKill(temp_r31->model); HuMemDirectFree(temp_r31->unk_08); lbl_1_bss_74 = 0; omDelObjEx(HuPrcCurrentGet(), arg0); return; } - + if (lbl_1_data_314 != -1) { temp_f31 = BoardModelMotionTimeGet(lbl_1_data_314); if (temp_r31->unk_01 == 0) { - if ((lbl_1_bss_0->unk1 != 0) && - ((temp_f31 >= 212.0f)) || - (lbl_1_bss_0->unk1 == 0) && - ((temp_f31 >= 86.0f))) { - + if ((lbl_1_bss_0->unk1 != 0) && ((temp_f31 >= 212.0f)) || (lbl_1_bss_0->unk1 == 0) && ((temp_f31 >= 86.0f))) { + temp_r31->unk_01 = 1; } - } else { + } + else { fn_1_4F24(temp_r31); } - + if (temp_r31->unk_01 != 0) { if (BoardModelMotionEndCheck(lbl_1_bss_C[2]) != 0) { BoardModelMotionStart(lbl_1_bss_C[2], 0, 0x40000001); @@ -865,12 +887,13 @@ void fn_1_50D4(omObjData* arg0) { BoardModelVisibilitySet(temp_r31->model, 0); } } - + if (BoardModelMotionTimeGet(lbl_1_bss_C[2]) >= 170.0f) { if (temp_r31->unkbit_04 == 0) { if (temp_r31->unkbit_03 == 0) { HuAudFXPlay(0x43C); - } else { + } + else { HuAudFXPlay(0x43D); } temp_r31->unkbit_04 = 1; @@ -878,24 +901,26 @@ void fn_1_50D4(omObjData* arg0) { if (temp_r31->unk_02 == 1) { omVibrate(GWSystem.player_curr, 0xC, 4, 2); fn_1_4D60(temp_r31); - } else if ((temp_r31->unk_02 == 2) && (temp_r31->unkbit_03 == 0)) { + } + else if ((temp_r31->unk_02 == 2) && (temp_r31->unkbit_03 == 0)) { omVibrate(GWSystem.player_curr, 0xC, 0xC, 0); BoardModelVisibilitySet(temp_r31->model, 1); BoardModelMotionStart(temp_r31->model, 0, 0); temp_r31->unkbit_03 = 1; } } - + fn_1_4ABC(temp_r31); - + for (i = 0; i < 4; i++) { if (i != GWSystem.player_curr) { BoardPlayerPosGet(i, &sp50); BoardModelPosGet(lbl_1_data_310, &sp44); - PSVECSubtract(&sp50, &sp44, &sp38); - if (PSVECMag(&sp38) >= 2000.0f) { + VECSubtract(&sp50, &sp44, &sp38); + if (VECMag(&sp38) >= 2000.0f) { BoardModelVisibilitySet(BoardPlayerModelGet(i), 0); - } else { + } + else { BoardModelVisibilitySet(BoardPlayerModelGet(i), 1); } } @@ -903,11 +928,12 @@ void fn_1_50D4(omObjData* arg0) { } } -void fn_1_5838(s32 arg0) { +void fn_1_5838(s32 arg0) +{ Vec sp18; Vec spC; - omObjData* obj; - w03UnkStruct5* temp_r31; + omObjData *obj; + w03UnkStruct5 *temp_r31; obj = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, &fn_1_5AC8); lbl_1_bss_78 = obj; @@ -918,18 +944,18 @@ void fn_1_5838(s32 arg0) { temp_r31->unk00_bit3 = 0; switch (GWPlayer[temp_r31->unk00_bit1].diff) { - case 0: - temp_r31->unk_08 = (-15.0f + (-30.0f * BoardRandFloat())); - break; - case 1: - temp_r31->unk_08 = (-5.0f + (-10.0f * BoardRandFloat())); - break; - case 2: - temp_r31->unk_08 = (-2.0f + (-5.0f * BoardRandFloat())); - break; - case 3: - temp_r31->unk_08 = 0.0f; - break; + case 0: + temp_r31->unk_08 = (-15.0f + (-30.0f * BoardRandFloat())); + break; + case 1: + temp_r31->unk_08 = (-5.0f + (-10.0f * BoardRandFloat())); + break; + case 2: + temp_r31->unk_08 = (-2.0f + (-5.0f * BoardRandFloat())); + break; + case 3: + temp_r31->unk_08 = 0.0f; + break; } BoardCameraMoveSet(0); @@ -950,9 +976,10 @@ void fn_1_5838(s32 arg0) { BoardCameraTargetModelSet(-1); } -void fn_1_5AC8(omObjData* arg0) { +void fn_1_5AC8(omObjData *arg0) +{ s32 temp_r0; - w03UnkStruct5* temp_r31; + w03UnkStruct5 *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, w03UnkStruct5); @@ -971,32 +998,29 @@ void fn_1_5AC8(omObjData* arg0) { } switch (temp_r31->unk00_bit4) { - case 1: - if (lbl_1_bss_7D != 0) { - fn_1_629C(2); - fn_1_62FC(); - BoardCameraTargetModelSet(lbl_1_data_310); - BoardCameraMoveSet(1); - - } - break; - case 2: - fn_1_5C5C(arg0, (w03UnkStruct5* ) temp_r31); - break; - case 3: - BoardCameraTargetModelSet(-1); - BoardCameraMoveSet(0); - temp_r31->unk00_bit0 = 1; - break; + case 1: + if (lbl_1_bss_7D != 0) { + fn_1_629C(2); + fn_1_62FC(); + BoardCameraTargetModelSet(lbl_1_data_310); + BoardCameraMoveSet(1); + } + break; + case 2: + fn_1_5C5C(arg0, (w03UnkStruct5 *)temp_r31); + break; + case 3: + BoardCameraTargetModelSet(-1); + BoardCameraMoveSet(0); + temp_r31->unk00_bit0 = 1; + break; } } -char *lbl_1_data_35C[] = { - "jyanA", - "jyanB" -}; +char *lbl_1_data_35C[] = { "jyanA", "jyanB" }; -void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1) { +void fn_1_5C5C(omObjData *arg0, w03UnkStruct5 *arg1) +{ Mtx sp110; Mtx spE0; Mtx spB0; @@ -1009,8 +1033,8 @@ void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1) { Vec sp14; Vec sp8; s16 temp_r3; - char* temp_r27; - ModelData* temp_r30; + char *temp_r27; + ModelData *temp_r30; if (((WipeStatGet() == 0) && (arg1->unk00_bit3) || (BoardModelMotionEndCheck(lbl_1_data_314) != 0))) { fn_1_629C(3); @@ -1036,8 +1060,9 @@ void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1) { Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_314), temp_r27, &sp44); if (0.0f != temp_r30->unk_64) { - PSVECSubtract(&sp38, &sp44, &sp2C); - } else { + VECSubtract(&sp38, &sp44, &sp2C); + } + else { sp2C.x = sp2C.y = sp2C.z = 0.0f; } @@ -1053,29 +1078,31 @@ void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1) { sp20.y = 1.0f; BoardMTXCalcLookAt(sp110, &sp14, &sp20, &sp8); - PSMTXTranspose(sp110, sp110); + MTXTranspose(sp110, sp110); MTXRotDeg(spE0, 'z', -arg1->unk_04); - PSMTXTrans(sp50, 0.0f, -600.0f, 0.0f); - PSMTXConcat(spE0, sp50, sp50); - PSMTXConcat(sp110, sp50, sp50); - PSMTXTrans(sp80, sp44.x, sp44.y, sp44.z); - PSMTXConcat(sp80, sp50, sp80); + MTXTrans(sp50, 0.0f, -600.0f, 0.0f); + MTXConcat(spE0, sp50, sp50); + MTXConcat(sp110, sp50, sp50); + MTXTrans(sp80, sp44.x, sp44.y, sp44.z); + MTXConcat(sp80, sp50, sp80); Hu3DMtxTransGet(sp80, &sp44); - MTXRotDeg(spB0, 'y', (180.0 * (atan2(-sp2C.x, -sp2C.z) / M_PI))); - PSMTXConcat(spB0, spE0, sp110); + MTXRotDeg(spB0, 'y', atan2d(-sp2C.x, -sp2C.z)); + MTXConcat(spB0, spE0, sp110); BoardModelMtxSet(lbl_1_data_310, &sp110); BoardModelPosSetV(lbl_1_data_310, &sp44); - BoardCameraRotSet(-20.0f, (180.0 * (atan2(sp2C.x, sp2C.z) / M_PI))); + BoardCameraRotSet(-20.0f, atan2d(sp2C.x, sp2C.z)); } -void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1) { +void fn_1_602C(omObjData *arg0, w03UnkStruct5 *arg1) +{ f32 temp_f31 = 0.0f; f32 var_f30; f32 var_f29; if (GWPlayer[arg1->unk00_bit1].com == 0) { var_f30 = HuPadStkX[GWPlayer[arg1->unk00_bit1].port]; - } else { + } + else { var_f30 = fn_1_61A4(arg0, arg1); } @@ -1083,7 +1110,8 @@ void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1) { if (temp_f31 < 0.0f) { var_f29 = -temp_f31; - } else { + } + else { var_f29 = temp_f31; } @@ -1095,13 +1123,14 @@ void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1) { BoardDAngleCalcRange(&arg1->unk_04, temp_f31, 1.0f); } -f32 fn_1_61A4(omObjData* arg0, w03UnkStruct5* arg1) { - w03StructUnk3* sp8; +f32 fn_1_61A4(omObjData *arg0, w03UnkStruct5 *arg1) +{ + w03StructUnk3 *sp8; f32 temp_f31; s16 i; - w03StructUnk2* temp_r29; + w03StructUnk2 *temp_r29; s16 var_r28; - f32* temp_r31; + f32 *temp_r31; if (lbl_1_bss_74) { temp_r29 = OM_GET_WORK_PTR(lbl_1_bss_74, w03StructUnk2); @@ -1116,28 +1145,31 @@ f32 fn_1_61A4(omObjData* arg0, w03UnkStruct5* arg1) { temp_r31 = lbl_1_bss_80[i]; if ((temp_r31[1] < temp_f31) && (temp_r31[3] > temp_f31)) { return -1.5f * temp_r31[2]; - } + } } - + return 0.0f; } -void fn_1_629C(s8 arg0) { - w03UnkStruct5* temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_78, w03UnkStruct5); +void fn_1_629C(s8 arg0) +{ + w03UnkStruct5 *temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_78, w03UnkStruct5); temp_r31->unk00_bit4 = arg0; } -s32 fn_1_62D0(void) { - w03UnkStruct5* temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_78, w03UnkStruct5); +s32 fn_1_62D0(void) +{ + w03UnkStruct5 *temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_78, w03UnkStruct5); return temp_r31->unk00_bit4; } -void fn_1_62FC(void) { +void fn_1_62FC(void) +{ f32 widthHeight[2]; - s32 messageID = 0x000D0005; + s32 messageID = DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x05); f32 x; f32 y; - + HuWinMesMaxSizeGet(1, widthHeight, messageID); x = -10000.0f; y = 392.0f; diff --git a/src/REL/w03Dll/main.c b/src/REL/w03Dll/main.c index 3127700f..a721d95b 100644 --- a/src/REL/w03Dll/main.c +++ b/src/REL/w03Dll/main.c @@ -125,24 +125,24 @@ void BoardCreate(void) { lbl_1_bss_0 = (w03State*)&GWSystem.board_data; lbl_1_bss_0->unk3 = 0; - BoardSpaceInit(0x770000); + BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W03, 0x00)); - lbl_1_data_1E0 = BoardModelCreate(0x770001, NULL, 0); + lbl_1_data_1E0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x01), NULL, 0); fn_8006DDE8(lbl_1_data_1E0, -1.0f); BoardModelPosSet(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_1E0, 0, 0x40000001); - lbl_1_data_1E8 = BoardModelCreate(0x770003, NULL, 0); + lbl_1_data_1E8 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x03), NULL, 0); fn_8006DDE8(lbl_1_data_1E8, -1.0f); BoardModelPosSet(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f); BoardModelLayerSet(lbl_1_data_1E8, 2); - lbl_1_data_1E2 = BoardModelCreate(0x770002, NULL, 0); + lbl_1_data_1E2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x02), NULL, 0); fn_8006DDE8(lbl_1_data_1E2, -1.0f); BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001); - lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0); + lbl_1_data_1E4 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x1B), lbl_1_data_20C, 0); BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001); @@ -473,4 +473,4 @@ void fn_1_10E4(omObjData* arg0) { } HuAudFXListnerUpdate(&sp14, &sp8); -} \ No newline at end of file +} diff --git a/src/REL/w03Dll/mg_coin.c b/src/REL/w03Dll/mg_coin.c index fa2cb7dc..dc05b755 100644 --- a/src/REL/w03Dll/mg_coin.c +++ b/src/REL/w03Dll/mg_coin.c @@ -1,17 +1,19 @@ -#include "dolphin.h" -#include "game/chrman.h" -#include "game/object.h" #include "REL/w03Dll.h" +#include "dolphin.h" #include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" #include "game/board/space.h" -#include "game/minigame_seq.h" +#include "game/chrman.h" #include "game/hsfdraw.h" +#include "game/minigame_seq.h" +#include "game/object.h" #include "game/pad.h" -//structs -typedef struct someBits3 { //make sure this is defined correctly +#include "ext_math.h" + +// structs +typedef struct someBits3 { // make sure this is defined correctly /* 0x00 */ struct { u8 unk00_bit0 : 1; u8 unk00_bit1 : 4; @@ -42,58 +44,61 @@ typedef struct unkTemp2 { s8 unk4; char unk_05[3]; f32 unk8; - unkTemp* unk_0C; + unkTemp *unk_0C; } unkTemp2; -//function signatures +// function signatures void fn_1_7C98(void); void fn_1_7C38(void); s32 fn_1_7D18(s32 arg0); void fn_1_8140(s32 arg0); void fn_1_81E0(s32 arg0); -void fn_1_8530(omObjData* arg0); +void fn_1_8530(omObjData *arg0); void fn_1_84A8(s32 arg0); -void fn_1_8698(omObjData* arg0, someBits3* arg1); -void fn_1_8C08(omObjData* arg0, someBits3* arg1); -void fn_1_8E44(omObjData* arg0, someBits3* arg1); -void fn_1_9044(omObjData* arg0, someBits3* arg1); +void fn_1_8698(omObjData *arg0, someBits3 *arg1); +void fn_1_8C08(omObjData *arg0, someBits3 *arg1); +void fn_1_8E44(omObjData *arg0, someBits3 *arg1); +void fn_1_9044(omObjData *arg0, someBits3 *arg1); void fn_1_91B8(void); void fn_1_9230(s32 arg0); void fn_1_9384(void); void fn_1_9474(s32 arg0); void fn_1_97F8(s32 arg0); -void fn_1_9A1C(unkTemp2* arg0); +void fn_1_9A1C(unkTemp2 *arg0); -//data +// data s32 lbl_1_data_450 = -1; s16 lbl_1_data_454 = -1; s16 lbl_1_data_456 = -1; s16 lbl_1_data_458 = -1; -s32 lbl_1_data_45C[] = {0x00770021, 0x00770022, -1}; +s32 lbl_1_data_45C[] = { DATA_MAKE_NUM(DATADIR_W03, 0x21), DATA_MAKE_NUM(DATADIR_W03, 0x22), DATA_NUM_LISTEND }; -//BSS +// BSS char lbl_1_bss_150[0x30]; s16 lbl_1_bss_14E; s8 lbl_1_bss_14C; -omObjData* lbl_1_bss_148; -omObjData* lbl_1_bss_144; -Process* lbl_1_bss_140; +omObjData *lbl_1_bss_148; +omObjData *lbl_1_bss_144; +Process *lbl_1_bss_140; -void fn_1_7ABC(void) { - lbl_1_data_456 = BoardModelCreate(0x770020, lbl_1_data_45C, 0); +void fn_1_7ABC(void) +{ + lbl_1_data_456 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x20), lbl_1_data_45C, 0); BoardModelHookSet(lbl_1_bss_C[7], "phei", lbl_1_data_456); BoardModelMotionStart(lbl_1_data_456, 2, 0x40000002); BoardModelRotYSet(lbl_1_data_456, -45.0f); } -void fn_1_7B58(void) { +void fn_1_7B58(void) +{ if (lbl_1_data_456 != -1) { BoardModelKill(lbl_1_data_456); lbl_1_data_456 = -1; } } -void fn_1_7BA8(void) { +void fn_1_7BA8(void) +{ BoardRollDispSet(0); lbl_1_bss_140 = HuPrcChildCreate(&fn_1_7C98, 0x2003, 0x2000, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_140, &fn_1_7C38); @@ -103,7 +108,8 @@ void fn_1_7BA8(void) { BoardRollDispSet(1); } -void fn_1_7C38(void) { +void fn_1_7C38(void) +{ if (lbl_1_data_454 != -1) { HuWinKill(lbl_1_data_454); lbl_1_data_454 = -1; @@ -111,7 +117,8 @@ void fn_1_7C38(void) { lbl_1_bss_140 = 0; } -void fn_1_7C98(void) { +void fn_1_7C98(void) +{ s32 temp_r31; temp_r31 = GWSystem.player_curr; @@ -125,10 +132,11 @@ void fn_1_7C98(void) { HuPrcEnd(); } -s32 fn_1_7D18(s32 arg0) { - Point3d sp38; - Point3d sp2C; - Point3d sp20; +s32 fn_1_7D18(s32 arg0) +{ + Vec sp38; + Vec sp2C; + Vec sp20; Vec sp14; Vec sp8; f32 var_f31; @@ -136,7 +144,7 @@ s32 fn_1_7D18(s32 arg0) { s16 space; s16 temp_r28; f32 arctan; - + BoardWinCreateChoice(2, MAKE_MESSID(22, 21), 2, 0); if (GWPlayer[arg0].com != 0) { @@ -167,21 +175,22 @@ s32 fn_1_7D18(s32 arg0) { temp_r28 = BoardSpaceLinkFlagSearch(0, space, 0x02000000); BoardPlayerPosGet(arg0, &sp2C); BoardSpacePosGet(0, temp_r28, &sp38); - PSVECSubtract(&sp38, &sp2C, &sp20); - PSVECNormalize(&sp20, &sp20); - BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + VECSubtract(&sp38, &sp2C, &sp20); + VECNormalize(&sp20, &sp20); + BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); HuPrcSleep(0x1E); model = BoardModelIDGet(lbl_1_bss_C[7]); Hu3DModelObjPosGet(model, "phei", &sp38); if (GWPlayer[arg0].character == 5) { var_f31 = 54.000004f; - } else { + } + else { var_f31 = 39.0f; } - sp38.x = sp38.x + (var_f31 * sin((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0)); - sp38.z = sp38.z + (var_f31 * cos((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0)); + sp38.x += var_f31 * sind(180.0f + BoardModelRotYGet(lbl_1_data_456)); + sp38.z += var_f31 * cosd(180.0f + BoardModelRotYGet(lbl_1_data_456)); BoardPlayerPosGet(arg0, &sp2C); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14); @@ -189,8 +198,8 @@ s32 fn_1_7D18(s32 arg0) { while (GWPlayer[arg0].moving != 0) { BoardModelPosGet(lbl_1_bss_C[10], &sp2C); BoardPlayerPosGet(arg0, &sp38); - PSVECSubtract(&sp38, &sp2C, &sp20); - arctan = atan2(sp20.x, sp20.z) / M_PI * 180.0; + VECSubtract(&sp38, &sp2C, &sp20); + arctan = atan2d(sp20.x, sp20.z); BoardModelRotYSet(lbl_1_bss_C[10], arctan); HuPrcVSleep(); } @@ -204,9 +213,10 @@ s32 fn_1_7D18(s32 arg0) { return 1; } -void fn_1_8140(s32 arg0) { +void fn_1_8140(s32 arg0) +{ s16 temp_r31; - + fn_1_81E0(arg0); BoardMusStart(1, 0x16, 0x7F, 0); temp_r31 = MGSeqStartCreate(); @@ -226,35 +236,36 @@ void fn_1_8140(s32 arg0) { } s32 lbl_1_data_470[] = { - 0x005F0066, - 0x001A0066, - 0x006D0066, - 0x008A0066, - 0x00850066, - 0x00110066, - 0x000D0066, - 0x00810066 + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x66), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x66), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x66), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x66), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x66), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x66), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x66), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x66), }; s32 lbl_1_data_490[] = { - 0x005F0067, - 0x001A0067, - 0x006D0067, - 0x008A0067, - 0x00850067, - 0x00110067, - 0x000D0067, - 0x00810067 + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x67), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x67), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x67), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x67), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x67), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x67), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x67), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x67), }; -void fn_1_81E0(s32 arg0) { - Point3d sp8; - omObjData* temp_r3; +void fn_1_81E0(s32 arg0) +{ + Vec sp8; + omObjData *temp_r3; f32 temp_f31; s32 temp_r28; s32 temp_r5; s32 temp_r5_2; - someBits3* temp_r31; + someBits3 *temp_r31; temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_8530); lbl_1_bss_144 = temp_r3; @@ -273,7 +284,7 @@ void fn_1_81E0(s32 arg0) { temp_r31->unk_06[1] = BoardPlayerMotionCreate(arg0, lbl_1_data_470[temp_r28]); temp_r31->unk_06[2] = BoardPlayerMotionCreate(arg0, lbl_1_data_490[temp_r28]); temp_f31 = 0.3f; - temp_r31->unk_06[0] = BoardModelCreate(0x770009, NULL, 0); + temp_r31->unk_06[0] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x09), NULL, 0); BoardModelVisibilitySet(temp_r31->unk_06[0], 0); BoardPlayerPosGet(arg0, &sp8); BoardModelPosSetV(temp_r31->unk_06[0], &sp8); @@ -283,10 +294,11 @@ void fn_1_81E0(s32 arg0) { BoardModelMotionSpeedSet(lbl_1_data_456, temp_r3->trans.x); BoardPlayerMotionStart(arg0, temp_r31->unk_06[1], 0x40000001); BoardPlayerMotionSpeedSet(arg0, temp_r3->trans.x); - lbl_1_data_458 = BoardModelMotionCreate(lbl_1_bss_C[10], 0x770025); + lbl_1_data_458 = BoardModelMotionCreate(lbl_1_bss_C[10], DATA_MAKE_NUM(DATADIR_W03, 0x25)); } -void fn_1_8434(someBits3* arg0) { +void fn_1_8434(someBits3 *arg0) +{ if (arg0->unk_06[1] != -1) { BoardPlayerMotionKill(arg0->unk00_bit5, arg0->unk_06[1]); } @@ -298,9 +310,10 @@ void fn_1_8434(someBits3* arg0) { } } -void fn_1_84A8(s32 arg0) { - someBits3* temp_r31; - +void fn_1_84A8(s32 arg0) +{ + someBits3 *temp_r31; + if (lbl_1_bss_144) { temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_144, someBits3); temp_r31->unk00_bit1 = arg0; @@ -310,12 +323,13 @@ void fn_1_84A8(s32 arg0) { } } -void fn_1_8530(omObjData* arg0) { +void fn_1_8530(omObjData *arg0) +{ s32 temp_r0; - someBits3* temp_r31; + someBits3 *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, someBits3); - + if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) { if (temp_r31->unk_04 != -1) { MGSeqParamSet(temp_r31->unk_04, 2, -1); @@ -330,7 +344,7 @@ void fn_1_8530(omObjData* arg0) { BoardModelKill(temp_r31->unk_06[0]); } lbl_1_bss_144 = NULL; - + omDelObjEx(HuPrcCurrentGet(), arg0); return; } @@ -341,24 +355,25 @@ void fn_1_8530(omObjData* arg0) { } switch (temp_r31->unk00_bit1) { - case 0: - fn_1_8698(arg0, temp_r31); - return; - case 1: - fn_1_8C08(arg0, temp_r31); - return; - case 2: - fn_1_8E44(arg0, temp_r31); - return; - case 3: - fn_1_9044(arg0, temp_r31); - /* fallthrough */ - case 4: - break; + case 0: + fn_1_8698(arg0, temp_r31); + return; + case 1: + fn_1_8C08(arg0, temp_r31); + return; + case 2: + fn_1_8E44(arg0, temp_r31); + return; + case 3: + fn_1_9044(arg0, temp_r31); + /* fallthrough */ + case 4: + break; } } -void fn_1_8698(omObjData* arg0, someBits3* arg1) { +void fn_1_8698(omObjData *arg0, someBits3 *arg1) +{ s32 temp_r27; u32 var_r28; u32 var_r26; @@ -367,10 +382,12 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) { if (arg1->unk3 != 0) { arg1->unk3--; - } else { + } + else { if (arg1->unk2 != 0) { arg1->unk2--; - } else { + } + else { MGSeqParamSet(arg1->unk_04, 2, -1); arg1->unk_04 = -1; arg1->unk00_bit1 = 1; @@ -384,7 +401,7 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) { lbl_1_bss_14E = 30; } - OSu16tof32((u16*)&lbl_1_bss_14E, &arg0->rot.x); //?? + OSu16tof32((u16 *)&lbl_1_bss_14E, &arg0->rot.x); //?? BoardModelAttrReset(lbl_1_data_456, 0x40000002); BoardModelAttrReset(lbl_1_bss_C[7], 0x40000002); BoardModelAttrReset(lbl_1_bss_C[10], 0x40000002); @@ -407,35 +424,35 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) { MGSeqParamSet(arg1->unk_04, 1, arg1->unk2); arg1->unk3 = 60; } - - + var_r26 = GWPlayer[arg1->unk00_bit5].port; var_r28 = 0; - + if ((GWPlayer[arg1->unk00_bit5].com) != 0) { temp_r27 = BoardRandMod(100); switch (GWPlayer[arg1->unk00_bit5].diff) { - case 0: - if (temp_r27 < 12) { + case 0: + if (temp_r27 < 12) { + var_r28 = 0x100; + } + break; + case 1: + if (temp_r27 < 22) { + var_r28 = 0x100; + } + break; + case 2: + if (temp_r27 < 50) { + var_r28 = 0x100; + } + break; + case 3: var_r28 = 0x100; - } - break; - case 1: - if (temp_r27 < 22) { - var_r28 = 0x100; - } - break; - case 2: - if (temp_r27 < 50) { - var_r28 = 0x100; - } - break; - case 3: - var_r28 = 0x100; - break; + break; } - } else { + } + else { var_r28 = HuPadBtnDown[var_r26] & 0x100; } @@ -450,7 +467,8 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) { lbl_1_bss_14E += 1; BoardModelVisibilitySet(arg1->unk_06[0], 1); BoardModelRotYSet(arg1->unk_06[0], BoardPlayerRotYGet(arg1->unk00_bit5)); - } else { + } + else { arg0->trans.x *= 0.98f; arg0->trans.y = 0.0f; if (arg0->trans.x <= 1.0f) { @@ -477,16 +495,11 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) { } s8 lbl_1_data_4B0 = -1; -s32 lbl_1_data_4B4[] = { - 0x00000440, - 0x00000441, - 0x00000442, - 0x00000443, - 0x00000444 -}; +s32 lbl_1_data_4B4[] = { 0x00000440, 0x00000441, 0x00000442, 0x00000443, 0x00000444 }; -void fn_1_8C08(omObjData* arg0, someBits3* arg1) { - Point3d spC; +void fn_1_8C08(omObjData *arg0, someBits3 *arg1) +{ + Vec spC; f32 temp_f31; f32 temp_f30; s8 temp_r27; @@ -520,8 +533,9 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) { BoardPlayerMotionTimeSet(arg1->unk00_bit5, 2.0f * temp_f30); } -void fn_1_8E44(omObjData* arg0, someBits3* arg1) { - Point3d sp8; +void fn_1_8E44(omObjData *arg0, someBits3 *arg1) +{ + Vec sp8; f32 temp_f1; f32 temp_f31; @@ -558,7 +572,8 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) { BoardModelPosSetV(lbl_1_data_456, &sp8); } -void fn_1_9044(omObjData* arg0, someBits3* arg1) { +void fn_1_9044(omObjData *arg0, someBits3 *arg1) +{ Vec sp8; BoardModelRotGet(lbl_1_data_456, &sp8); @@ -570,19 +585,20 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) { if (arg0->trans.x <= 1.0f) { arg0->trans.y = 0.0f; BoardPlayerIdleSet(arg1->unk00_bit5); - BoardModelMotionShiftSet(lbl_1_bss_C[10], 1, 0.0f, 10.0f, 0x40000001U); + BoardModelMotionShiftSet(lbl_1_bss_C[10], 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); arg1->unk00_bit0 = 1; } } } - sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0); + sp8.z = arg0->trans.x * sind(arg0->trans.y); BoardModelRotSetV(lbl_1_data_456, &sp8); } -s8 lbl_1_data_4C8[] = {1, 5, 10, 15, 20, 20}; +s8 lbl_1_data_4C8[] = { 1, 5, 10, 15, 20, 20 }; -void fn_1_91B8(void) { +void fn_1_91B8(void) +{ s8 temp_r3; if (lbl_1_bss_14E == 0) { @@ -593,10 +609,11 @@ void fn_1_91B8(void) { lbl_1_bss_14C = lbl_1_data_4C8[temp_r3]; } -void fn_1_9230(s32 arg0) { - Point3d sp20; - Point3d sp14; - Point3d sp8; +void fn_1_9230(s32 arg0) +{ + Vec sp20; + Vec sp14; + Vec sp8; s16 temp_r30; f32 rotY; @@ -610,8 +627,8 @@ void fn_1_9230(s32 arg0) { while (GWPlayer[arg0].moving != 0) { BoardModelPosGet(lbl_1_bss_C[10], &sp20); BoardPlayerPosGet(arg0, &sp14); - PSVECSubtract(&sp14, &sp20, &sp8); - rotY = atan2(sp8.x, sp8.z) / M_PI * 180.0; + VECSubtract(&sp14, &sp20, &sp8); + rotY = atan2d(sp8.x, sp8.z); BoardModelRotYSet(lbl_1_bss_C[10], rotY); HuPrcVSleep(); } @@ -620,20 +637,22 @@ void fn_1_9230(s32 arg0) { BoardCameraMotionWait(); } -void fn_1_9384(void) { +void fn_1_9384(void) +{ f32 widthHeight[2]; f32 x, y; - HuWinMesMaxSizeGet(1, widthHeight, 0x160019); + HuWinMesMaxSizeGet(1, widthHeight, MAKE_MESSID(0x16, 0x19)); x = -10000.0f; y = 288.0f; lbl_1_data_454 = HuWinCreate(x, y, widthHeight[0], widthHeight[1], 0); HuWinBGTPLvlSet(lbl_1_data_454, 0.0f); HuWinMesSpeedSet(lbl_1_data_454, 0); - HuWinMesSet(lbl_1_data_454, 0x160019U); + HuWinMesSet(lbl_1_data_454, MAKE_MESSID(0x16, 0x19)); } -void fn_1_9474(s32 arg0) { +void fn_1_9474(s32 arg0) +{ sprintf(lbl_1_bss_150, "%d", lbl_1_bss_14C); BoardWinCreate(2, MAKE_MESSID(22, 23), 2); BoardWinInsertMesSet((u32)lbl_1_bss_150, 4); @@ -651,7 +670,7 @@ void fn_1_9474(s32 arg0) { HuPrcVSleep(); } - BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0U); + BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while (BoardPlayerMotionEndCheck(arg0) == 0) { @@ -664,14 +683,15 @@ void fn_1_9474(s32 arg0) { BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002); } -void fn_1_95B8(omObjData* arg0) { +void fn_1_95B8(omObjData *arg0) +{ f32 temp_f31; s32 var_r25; s32 var_r26; s32 var_r27; s32 var_r28; - unkTemp* var_r30; - unkTemp2* temp_r29; + unkTemp *var_r30; + unkTemp2 *temp_r29; s32 i; s32 temp; @@ -679,14 +699,14 @@ void fn_1_95B8(omObjData* arg0) { if ((temp_r29->unk00_bit0 != 0) || (BoardIsKill() != 0)) { fn_1_9A1C(temp_r29); - HuMemDirectFree((void*)temp_r29->unk_0C); + HuMemDirectFree((void *)temp_r29->unk_0C); lbl_1_bss_148 = 0; omDelObjEx(HuPrcCurrentGet(), arg0); return; } var_r30 = temp_r29->unk_0C; - + for (var_r27 = i = 0; i < 20; i++, var_r30++) { if (var_r30->unk0 == 0) { var_r27++; @@ -697,7 +717,7 @@ void fn_1_95B8(omObjData* arg0) { temp_r29->unk00_bit0 = 1; return; } - + var_r25 = 0; for (i = 0; i < 20; i++) { var_r30 = &temp_r29->unk_0C[i]; @@ -725,23 +745,23 @@ void fn_1_95B8(omObjData* arg0) { } } - -void fn_1_97F8(s32 arg0) { - Point3d sp8; +void fn_1_97F8(s32 arg0) +{ + Vec sp8; f32 temp_f2; f32 var_f31; f64 temp_f1; - omObjData* temp_r3; + omObjData *temp_r3; s32 i; - unkTemp2* temp_r30; - unkTemp* temp_r31; + unkTemp2 *temp_r30; + unkTemp *temp_r31; temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_95B8); lbl_1_bss_148 = temp_r3; 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, 0x10000000); + temp_r30->unk_0C = HuMemDirectMallocNum(0, 0x190, MEMORY_DEFAULT_NUM); BoardPlayerPosGet(arg0, &sp8); temp_r30->unk8 = (80.0f + sp8.y); memset(temp_r30->unk_0C, 0, 0x190); @@ -749,23 +769,25 @@ void fn_1_97F8(s32 arg0) { for (i = 0; i < lbl_1_bss_14C; i++) { if (i == 0) { var_f31 = 0.0f; - } else { + } + else { var_f31 = BoardRandFloat(); } temp_r31 = &temp_r30->unk_0C[i]; temp_r31->unk0 = 1; - temp_r31->unk8.x = sp8.x + (50.0f * sin((M_PI * var_f31) / 180.0)); - temp_r31->unk8.z = sp8.z + (50.0f * cos((M_PI * var_f31) / 180.0)); + temp_r31->unk8.x = sp8.x + (50.0f * sind(var_f31)); + temp_r31->unk8.z = sp8.z + (50.0f * cosd(var_f31)); temp_r31->unk8.y = 600.0f + sp8.y + (500.0f * BoardRandFloat()); temp_r31->unk1 = 0; temp_r31->unk4 = BoardRandFloat() * 360.0f; - temp_r31->unk_02 = BoardModelCreate(0x7000A, NULL, 1); + temp_r31->unk_02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 1); } } -void fn_1_9A1C(unkTemp2* arg0) { +void fn_1_9A1C(unkTemp2 *arg0) +{ s32 i; - unkTemp* temp; + unkTemp *temp; for (i = 0; i < 20; i++) { temp = &arg0->unk_0C[i]; diff --git a/src/REL/w03Dll/mg_item.c b/src/REL/w03Dll/mg_item.c index 2644f97b..9b9ccfa3 100644 --- a/src/REL/w03Dll/mg_item.c +++ b/src/REL/w03Dll/mg_item.c @@ -1,25 +1,25 @@ -#include "dolphin.h" #include "REL/executor.h" -#include "game/process.h" -#include "game/data.h" -#include "game/gamework_data.h" #include "REL/w03Dll.h" +#include "dolphin.h" +#include "dolphin/os/OSFastCast.h" +#include "ext_math.h" #include "game/board/main.h" #include "game/board/model.h" +#include "game/board/player.h" #include "game/board/space.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" -#include "game/sprite.h" -#include "game/board/player.h" -#include "math.h" -#include "game/hsfman.h" -#include "dolphin/os/OSFastCast.h" -#include "game/minigame_seq.h" -#include "game/hsfdraw.h" -#include "game/hsfmotion.h" #include "game/pad.h" -#include "game/frand.h" -#include "ext_math.h" +#include "game/process.h" +#include "game/sprite.h" +#include "math.h" typedef struct someBits { /* 0x00 */ struct { @@ -58,11 +58,11 @@ typedef struct w03UnkMG { /* 0x16 */ s16 unk_16; } w03UnkMG; -//external symbols +// external symbols extern u16 HuPadBtnDown[4]; -//function signatures +// function signatures s32 BoardVecDAngleCalcRange(float *value, float min, float range); void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix); @@ -70,23 +70,23 @@ void fn_1_BDAC(void); void fn_1_BC7C(s16 arg0); void fn_1_BBF8(void); s32 fn_1_BBC4(void); -void fn_1_BB74(s8* arg0); +void fn_1_BB74(s8 *arg0); s32 fn_1_BB48(void); void fn_1_B8E8(s32 arg0); -void fn_1_B748(omObjData* arg0, someBits2* arg1); -void fn_1_B688(omObjData* arg0, someBits2* arg1); -void fn_1_B4AC(omObjData* arg0, someBits2* arg1); -void fn_1_B350(omObjData* arg0); +void fn_1_B748(omObjData *arg0, someBits2 *arg1); +void fn_1_B688(omObjData *arg0, someBits2 *arg1); +void fn_1_B4AC(omObjData *arg0, someBits2 *arg1); +void fn_1_B350(omObjData *arg0); void fn_1_B0A4(s32 arg0); u32 fn_1_AF24(s32 arg0); -s32 fn_1_AE4C(s32 arg0, s8* arg1); +s32 fn_1_AE4C(s32 arg0, s8 *arg1); s32 fn_1_AE20(void); void fn_1_ACD8(s32 arg0); -void fn_1_ABD0(omObjData* arg0, someBits* arg1); -void fn_1_AB18(omObjData* arg0, someBits* arg1); +void fn_1_ABD0(omObjData *arg0, someBits *arg1); +void fn_1_AB18(omObjData *arg0, someBits *arg1); void fn_1_A8AC(s32 arg0); void fn_1_A7A0(s32 arg0); -void fn_1_A994(omObjData* arg0); +void fn_1_A994(omObjData *arg0); void fn_1_A5E0(s32 arg0); void fn_1_A6B0(void); void fn_1_A44C(s32 arg0); @@ -96,52 +96,56 @@ s32 fn_1_9CF4(s32 arg0); void fn_1_9F78(void); void fn_1_9FE4(void); -//data +// data s16 lbl_1_data_4D8 = -1; s16 lbl_1_data_4DA = -1; s16 lbl_1_data_4DC = -1; s32 lbl_1_data_4E0 = -1; s16 lbl_1_data_4E4 = -1; -s8 lbl_1_data_4E6[] = {1, 1, 3, 3, 2, 2, 2, 1, 2, 3, 0, 4, 5, 0}; +s8 lbl_1_data_4E6[] = { 1, 1, 3, 3, 2, 2, 2, 1, 2, 3, 0, 4, 5, 0 }; -char* lbl_1_data_508[] = { - "item", "item1", "item2" -}; +char *lbl_1_data_508[] = { "item", "item1", "item2" }; + +#if VERSION_JP +#define MDL_ID_SHIFT 0 +#else +#define MDL_ID_SHIFT 1 +#endif s32 lbl_1_data_514[] = { - 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), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6C + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6D + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6E + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6F + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x70 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x71 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x72 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x73 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x75 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x76 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x77 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x78 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x79 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x7A + MDL_ID_SHIFT), }; -//BSS +// BSS s8 lbl_1_bss_194[3]; -AnimData* lbl_1_bss_190; +AnimData *lbl_1_bss_190; s8 lbl_1_bss_18C; -omObjData* lbl_1_bss_188; -omObjData* lbl_1_bss_184; -Process* lbl_1_bss_180; +omObjData *lbl_1_bss_188; +omObjData *lbl_1_bss_184; +Process *lbl_1_bss_180; -void fn_1_9A7C(void) { +void fn_1_9A7C(void) +{ fn_1_BBF8(); } -void fn_1_9A9C(void) { +void fn_1_9A9C(void) { } -} - -void fn_1_9AA0(void) { +void fn_1_9AA0(void) +{ BoardRollDispSet(0); lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30); @@ -153,7 +157,8 @@ void fn_1_9AA0(void) { BoardRollDispSet(1); } -void fn_1_9B30(void) { +void fn_1_9B30(void) +{ fn_1_BDAC(); if (lbl_1_bss_188) { @@ -173,7 +178,7 @@ void fn_1_9B30(void) { BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DC); lbl_1_data_4DC = -1; } - + if (lbl_1_data_4DA != -1) { BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DA); lbl_1_data_4DA = -1; @@ -187,7 +192,8 @@ void fn_1_9B30(void) { lbl_1_bss_180 = 0; } -void fn_1_9C8C(void) { +void fn_1_9C8C(void) +{ s32 temp_r31; temp_r31 = GWSystem.player_curr; @@ -201,7 +207,8 @@ void fn_1_9C8C(void) { HuPrcEnd(); } -s32 fn_1_9CF4(s32 arg0) { +s32 fn_1_9CF4(s32 arg0) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -246,9 +253,9 @@ s32 fn_1_9CF4(s32 arg0) { temp_r29 = BoardSpaceLinkFlagSearch(0, spaceCur, 0x02000000); BoardPlayerPosGet(arg0, &sp2C); BoardSpacePosGet(0, temp_r29, &sp38); - PSVECSubtract(&sp38, &sp2C, &sp20); - PSVECNormalize(&sp20, &sp20); - BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI))); + VECSubtract(&sp38, &sp2C, &sp20); + VECNormalize(&sp20, &sp20); + BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14); while (GWPlayer[arg0].moving != 0) { @@ -264,12 +271,14 @@ s32 fn_1_9CF4(s32 arg0) { return 1; } -void fn_1_9F78(void) { - lbl_1_data_4DA = BoardModelMotionCreate(lbl_1_bss_C[11], 0x770023); - lbl_1_data_4DC = BoardModelMotionCreate(lbl_1_bss_C[11], 0x770024); +void fn_1_9F78(void) +{ + lbl_1_data_4DA = BoardModelMotionCreate(lbl_1_bss_C[11], DATA_MAKE_NUM(DATADIR_W03, 0x23)); + lbl_1_data_4DC = BoardModelMotionCreate(lbl_1_bss_C[11], DATA_MAKE_NUM(DATADIR_W03, 0x24)); } -void fn_1_9FE4(void) { +void fn_1_9FE4(void) +{ Vec sp30; Vec sp24; Vec sp18; @@ -279,13 +288,13 @@ void fn_1_9FE4(void) { f32 var_f31; BoardModelPosGet(lbl_1_bss_C[11], &sp24); - sp18.x = (-3179.800048828125 + (200.0 * sin(0.0))); - sp18.z = (-907.7000122070313 + 200.0 * cos(0.0)); + sp18.x = -3179.8f + 200.0 * sin(0.0); + sp18.z = -907.7f + 200.0 * cos(0.0); sp18.y = sp24.y; - PSVECSubtract(&sp18, &sp24, &spC); - temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0); + VECSubtract(&sp18, &sp24, &spC); + temp_f30 = atan2d(spC.z, spC.x); sp8 = BoardModelRotYGet(lbl_1_bss_C[11]); - BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, HU3D_MOTATTR_LOOP); while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) { BoardModelRotYSet(lbl_1_bss_C[11], sp8); @@ -302,7 +311,7 @@ void fn_1_9FE4(void) { var_f31 = 0.0f; while (var_f31 < 20.0f) { - PSVECAdd(&sp30, &spC, &sp30); + VECAdd(&sp30, &spC, &sp30); BoardModelPosSetV(lbl_1_bss_C[11], &sp30); HuPrcVSleep(); var_f31 += 1.0f; @@ -313,8 +322,8 @@ void fn_1_9FE4(void) { HuAudFXPlay(0x362); BoardCameraQuakeSet(3, 100.0f); fn_1_B8E8(1); - BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, 0x40000005); - PSVECSubtract(&sp24, &sp30, &spC); + BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); + VECSubtract(&sp24, &sp30, &spC); spC.x /= 60.0f; spC.z /= 60.0f; @@ -322,7 +331,7 @@ void fn_1_9FE4(void) { var_f31 = 0.0f; while (var_f31 < 60.0f) { - PSVECAdd(&sp30, &spC, &sp30); + VECAdd(&sp30, &spC, &sp30); BoardModelPosSetV(lbl_1_bss_C[11], &sp30); HuPrcVSleep(); var_f31 += 1.0f; @@ -330,17 +339,18 @@ void fn_1_9FE4(void) { temp_f30 = 0.0f; sp8 = BoardModelRotYGet(lbl_1_bss_C[11]); - BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, HU3D_MOTATTR_LOOP); while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) { BoardModelRotYSet(lbl_1_bss_C[11], sp8); HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, HU3D_MOTATTR_LOOP); } -void fn_1_A44C(s32 arg0) { +void fn_1_A44C(s32 arg0) +{ s16 temp_r30; s32 temp_r29; s32 temp_r28; @@ -391,7 +401,8 @@ void fn_1_A44C(s32 arg0) { BoardWinKill(); } -void fn_1_A5E0(s32 arg0) { +void fn_1_A5E0(s32 arg0) +{ Vec sp14; Vec sp8; s16 spaceCur; @@ -409,26 +420,28 @@ void fn_1_A5E0(s32 arg0) { BoardCameraMotionWait(); } -void fn_1_A6B0(void) { +void fn_1_A6B0(void) +{ f32 sp8[2]; f32 val1, val2; - HuWinMesMaxSizeGet(1, sp8, 0x16001F); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x16, 0x1F)); val1 = -10000.0f; val2 = 392.0f; lbl_1_data_4D8 = HuWinCreate(val1, val2, sp8[0], sp8[1], 0); HuWinBGTPLvlSet(lbl_1_data_4D8, 0.0f); HuWinMesSpeedSet(lbl_1_data_4D8, 0); - HuWinMesSet(lbl_1_data_4D8, 0x16001F); + HuWinMesSet(lbl_1_data_4D8, MAKE_MESSID(0x16, 0x1F)); } -void fn_1_A7A0(s32 arg0) { - someBits* temp_r31; - omObjData* temp_r3; +void fn_1_A7A0(s32 arg0) +{ + someBits *temp_r31; + omObjData *temp_r3; - temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_A994); + temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void *)fn_1_A994); lbl_1_bss_188 = temp_r3; - temp_r31 = (someBits*)&temp_r3->work[0]; + temp_r31 = (someBits *)&temp_r3->work[0]; temp_r31->unk00_bit0 = 0; temp_r31->unk00_bit6 = 0; temp_r31->unk00_bit4 = arg0; @@ -440,7 +453,8 @@ void fn_1_A7A0(s32 arg0) { lbl_1_bss_18C = fn_1_AE4C(arg0, lbl_1_bss_194); } -void fn_1_A8AC(s32 arg0) { +void fn_1_A8AC(s32 arg0) +{ Vec sp14; Vec sp8; f32 playerYRot; @@ -462,18 +476,19 @@ void fn_1_A8AC(s32 arg0) { } } -void fn_1_A994(omObjData* arg0) { +void fn_1_A994(omObjData *arg0) +{ s32 temp_r0; - someBits* temp_r31; + someBits *temp_r31; - temp_r31 = (someBits*)&lbl_1_bss_188->work[0]; - if ((temp_r31->unk00_bit0 != 0)|| (BoardIsKill() != 0)) { + temp_r31 = (someBits *)&lbl_1_bss_188->work[0]; + if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) { if (temp_r31->unk4 != -1) { MGSeqParamSet(temp_r31->unk4, 2, -1U); temp_r31->unk4 = -1; } lbl_1_bss_188 = NULL; - + omDelObjEx(HuPrcCurrentGet(), arg0); return; } @@ -481,10 +496,12 @@ void fn_1_A994(omObjData* arg0) { if (temp_r31->unk00_bit6 == 0) { if (temp_r31->unk2 != 0) { temp_r31->unk2--; - } else { + } + else { if (temp_r31->unk1 != 0) { temp_r31->unk1--; - } else { + } + else { fn_1_ACD8(2); } MGSeqParamSet(temp_r31->unk4, 1, temp_r31->unk1); @@ -493,27 +510,29 @@ void fn_1_A994(omObjData* arg0) { } switch (temp_r31->unk00_bit1) { - case 1: - fn_1_AB18(arg0, temp_r31); - return; - case 2: - fn_1_ABD0(arg0, temp_r31); - return; - case 3: - if (BoardPlayerMotionEndCheck(temp_r31->unk00_bit4) != 0) { - temp_r31->unk00_bit0 = 1; - } - case 0: - break; + case 1: + fn_1_AB18(arg0, temp_r31); + return; + case 2: + fn_1_ABD0(arg0, temp_r31); + return; + case 3: + if (BoardPlayerMotionEndCheck(temp_r31->unk00_bit4) != 0) { + temp_r31->unk00_bit0 = 1; + } + case 0: + break; } } -void fn_1_AB18(omObjData* arg0, someBits* arg1) { +void fn_1_AB18(omObjData *arg0, someBits *arg1) +{ u32 var_r31 = 0; if (GWPlayer[arg1->unk00_bit4].com != 0) { var_r31 = fn_1_AF24(arg1->unk00_bit4); - } else { + } + else { var_r31 = HuPadBtnDown[GWPlayer[arg1->unk00_bit4].port]; } if (var_r31 == 0x100) { @@ -521,14 +540,15 @@ void fn_1_AB18(omObjData* arg0, someBits* arg1) { } } -//TODO properly use inlines -void fn_1_ABD0(omObjData* arg0, someBits* arg1) { +// TODO properly use inlines +void fn_1_ABD0(omObjData *arg0, someBits *arg1) +{ s16 boardModelID; - PlayerState* playerStateCopy; + PlayerState *playerStateCopy; s32 bit; - PlayerState* playerState; + PlayerState *playerState; s16 temp, temp2; - + bit = arg1->unk00_bit4; playerState = &GWPlayer[bit]; playerStateCopy = playerState; @@ -551,40 +571,43 @@ void fn_1_ABD0(omObjData* arg0, someBits* arg1) { } } -void fn_1_ACD8(s32 arg0) { - someBits* temp_r31; +void fn_1_ACD8(s32 arg0) +{ + someBits *temp_r31; - temp_r31 = (someBits*)&lbl_1_bss_188->work[0]; + temp_r31 = (someBits *)&lbl_1_bss_188->work[0]; temp_r31->unk00_bit1 = arg0; switch (arg0) { - case 0: - BoardPlayerIdleSet(temp_r31->unk00_bit4); - return; - case 2: - temp_r31->unk00_bit6 = 1; - if (lbl_1_data_4D8 != -1) { - HuWinKill(lbl_1_data_4D8); - lbl_1_data_4D8 = -1; - } - if (temp_r31->unk4 != -1) { - MGSeqParamSet(temp_r31->unk4, 2, -1U); - temp_r31->unk4 = -1; - } - BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 0xB, 0.0f, 10.0f, 0); - return; - case 3: - BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 7, 0.0f, 10.0f, 0); - break; + case 0: + BoardPlayerIdleSet(temp_r31->unk00_bit4); + return; + case 2: + temp_r31->unk00_bit6 = 1; + if (lbl_1_data_4D8 != -1) { + HuWinKill(lbl_1_data_4D8); + lbl_1_data_4D8 = -1; + } + if (temp_r31->unk4 != -1) { + MGSeqParamSet(temp_r31->unk4, 2, -1U); + temp_r31->unk4 = -1; + } + BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 0xB, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + return; + case 3: + BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 7, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + break; } } -s32 fn_1_AE20(void) { - someBits* temp_r31 = (someBits*)&lbl_1_bss_188->work[0]; +s32 fn_1_AE20(void) +{ + someBits *temp_r31 = (someBits *)&lbl_1_bss_188->work[0]; return temp_r31->unk00_bit1; } -s32 fn_1_AE4C(s32 arg0, s8* arg1) { +s32 fn_1_AE4C(s32 arg0, s8 *arg1) +{ s32 temp_r30; s32 temp_r29; s32 temp_r28; @@ -597,23 +620,29 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) { if (temp_r29 > temp_r28) { if (temp_r29 > temp_r30) { var_r31 = 0; - } else if (temp_r30 > temp_r28) { + } + else if (temp_r30 > temp_r28) { var_r31 = 2; - } else { + } + else { var_r31 = 1; } - } else if (temp_r28 > temp_r30) { + } + else if (temp_r28 > temp_r30) { var_r31 = 1; - } else if (temp_r30 > temp_r29) { + } + else if (temp_r30 > temp_r29) { var_r31 = 2; - } else { + } + else { var_r31 = 0; } return var_r31; } -u32 fn_1_AF24(s32 arg0) { +u32 fn_1_AF24(s32 arg0) +{ s32 spC; s32 sp8; s16 temp_r31; @@ -623,18 +652,18 @@ u32 fn_1_AF24(s32 arg0) { spC = 0; switch (GWPlayer[arg0].diff) { - case 3: - var_r30 = 0; - break; - case 2: - var_r30 = 5; - break; - case 1: - var_r30 = 15; - break; - case 0: - var_r30 = 40; - break; + case 3: + var_r30 = 0; + break; + case 2: + var_r30 = 5; + break; + case 1: + var_r30 = 15; + break; + case 0: + var_r30 = 40; + break; } if ((var_r30 != 0) && (BoardRandMod(100) < var_r30)) { return 0x100U; @@ -643,38 +672,39 @@ u32 fn_1_AF24(s32 arg0) { temp_r31 = BoardModelMotionTimeGet(lbl_1_bss_C[9]); switch (lbl_1_bss_18C) { - case 0: - if ((temp_r31 < 33) || (temp_r31 > 35)) { + case 0: + if ((temp_r31 < 33) || (temp_r31 > 35)) { + break; + } + return 0x100U; + case 1: + if (((temp_r31 >= 40) && (temp_r31 <= 42)) || ((temp_r31 >= 20) && (temp_r31 <= 22))) { + return 0x100U; + } + break; + case 2: + if (temp_r31 >= 50) { + return 0x100U; + } break; - } - return 0x100U; - case 1: - if (((temp_r31 >= 40) && (temp_r31 <= 42)) || ((temp_r31 >= 20) && (temp_r31 <= 22))) { - return 0x100U; - } - break; - case 2: - if (temp_r31 >= 50) { - return 0x100U; - } - break; } return 0; } -void fn_1_B0A4(s32 arg0) { +void fn_1_B0A4(s32 arg0) +{ Mtx sp18; s32 spC[3]; s32 j; s32 i; s32 var_r31_2; s32 temp_r29; - someBits2* temp_r30; - omObjData* temp_r3; + someBits2 *temp_r30; + omObjData *temp_r3; - temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, (void*)fn_1_B350); - lbl_1_bss_184 = (void*)temp_r3; - temp_r30 = (someBits2*)&temp_r3->work[0]; + temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, (void *)fn_1_B350); + lbl_1_bss_184 = (void *)temp_r3; + temp_r30 = (someBits2 *)&temp_r3->work[0]; temp_r30->unk00_bit0 = 0; temp_r30->unk00_bit1 = 0; @@ -691,14 +721,15 @@ void fn_1_B0A4(s32 arg0) { if (spC[i] == -1) { continue; } - } else { + } + else { continue; } i++; } - + fn_1_BBF8(); - + for (i = 0; i < ARRAY_COUNT(spC); i++) { temp_r29 = spC[i]; temp_r30->unk3[i] = temp_r29; @@ -711,22 +742,23 @@ void fn_1_B0A4(s32 arg0) { } if (temp_r29 == 5) { - PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f); + MTXTrans(sp18, 0.0f, -50.0f, 0.0f); BoardModelMtxSet(temp_r30->unk_06[i], &sp18); } if ((temp_r29 == 6) || (temp_r29 == 7)) { - PSMTXTrans(sp18, 0.0f, 0.0f, 8.0f); + MTXTrans(sp18, 0.0f, 0.0f, 8.0f); BoardModelMtxSet(temp_r30->unk_06[i], &sp18); } } } -void fn_1_B350(omObjData* arg0) { +void fn_1_B350(omObjData *arg0) +{ s32 i; - someBits2* temp_r31; + someBits2 *temp_r31; - temp_r31 = (someBits2*)&arg0->work[0]; + temp_r31 = (someBits2 *)&arg0->work[0]; if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) { BoardModelHookReset(lbl_1_bss_C[9]); @@ -740,30 +772,31 @@ void fn_1_B350(omObjData* arg0) { } switch (temp_r31->unk00_bit1) { - case 1: - if (!(BoardModelMotionTimeGet(lbl_1_bss_C[9]) < 20.0f)) { - BoardModelMotionStartEndSet(lbl_1_bss_C[9], 0x14, 0x3A); - fn_1_B8E8(0); + case 1: + if (!(BoardModelMotionTimeGet(lbl_1_bss_C[9]) < 20.0f)) { + BoardModelMotionStartEndSet(lbl_1_bss_C[9], 0x14, 0x3A); + fn_1_B8E8(0); + return; + } + case 0: + break; + case 2: + fn_1_B4AC(arg0, temp_r31); return; - } - case 0: - break; - case 2: - fn_1_B4AC(arg0, temp_r31); - return; - case 3: - fn_1_B688(arg0, temp_r31); - return; - case 4: - fn_1_B748(arg0, temp_r31); - break; + case 3: + fn_1_B688(arg0, temp_r31); + return; + case 4: + fn_1_B748(arg0, temp_r31); + break; } } -void fn_1_B4AC(omObjData* arg0, someBits2* arg1) { - Point3d sp20; - Point3d sp14; - Point3d sp8; +void fn_1_B4AC(omObjData *arg0, someBits2 *arg1) +{ + Vec sp20; + Vec sp14; + Vec sp8; f32 temp_f31; s8 temp_r0; s32 i; @@ -778,13 +811,13 @@ void fn_1_B4AC(omObjData* arg0, someBits2* arg1) { sp8 = sp20; arg1->unk2 = i; break; - } + } } HuAudFXPlay(0x30C); BoardModelHookObjReset(lbl_1_bss_C[9], lbl_1_data_508[arg1->unk2]); temp_f31 = BoardModelMotionTimeGet(lbl_1_bss_C[9]); - BoardModelMotionShiftSet(lbl_1_bss_C[9], 0, 15.0f, 10.0f, 0x40000004U); + BoardModelMotionShiftSet(lbl_1_bss_C[9], 0, 15.0f, 10.0f, HU3D_MOTATTR_REV); BoardModelMotionSpeedSet(lbl_1_bss_C[9], 0.5f); BoardModelMotionTimeSet(lbl_1_bss_C[9], temp_f31); BoardModelPosSetV(arg1->unk_06[arg1->unk2], &sp8); @@ -792,8 +825,9 @@ void fn_1_B4AC(omObjData* arg0, someBits2* arg1) { fn_1_BC7C(arg1->unk_06[arg1->unk2]); } -void fn_1_B688(omObjData* arg0, someBits2* arg1) { - Point3d sp8; +void fn_1_B688(omObjData *arg0, someBits2 *arg1) +{ + Vec sp8; if (arg1->unk1-- != 0) { BoardModelPosGet(arg1->unk_06[arg1->unk2], &sp8); @@ -806,10 +840,11 @@ void fn_1_B688(omObjData* arg0, someBits2* arg1) { fn_1_B8E8(0); } - -void fn_1_B748(omObjData* arg0, someBits2* arg1) { + +void fn_1_B748(omObjData *arg0, someBits2 *arg1) +{ Vec sp14; - Point3d sp8; + Vec sp8; f32 temp_f0; s16 temp_r29; @@ -820,13 +855,13 @@ void fn_1_B748(omObjData* arg0, someBits2* arg1) { } if (arg1->unk1 < 90) { - OSu8tof32((u8*)&arg1->unk1, &temp_f0); + OSu8tof32((u8 *)&arg1->unk1, &temp_f0); BoardModelPosGet(temp_r29, &sp8); sp8.y += arg0->trans.y; BoardModelPosSetV(temp_r29, &sp8); BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29)); BoardModelScaleGet(temp_r29, &sp14); - sp14.x = sp14.y = sp14.z = cos(M_PI * temp_f0 / 180.0); + sp14.x = sp14.y = sp14.z = cosd(temp_f0); BoardModelScaleSetV(temp_r29, &sp14); arg1->unk1 += 4; return; @@ -840,76 +875,81 @@ void fn_1_B748(omObjData* arg0, someBits2* arg1) { fn_1_B8E8(0); } -void fn_1_B8E8(s32 arg0) { - Point3d sp14; - Point3d sp8; +void fn_1_B8E8(s32 arg0) +{ + Vec sp14; + Vec sp8; f32 temp_f31; - someBits2* temp_r31; + someBits2 *temp_r31; f32 temp; - temp_r31 = (someBits2*)&lbl_1_bss_184->work[0]; + temp_r31 = (someBits2 *)&lbl_1_bss_184->work[0]; temp_r31->unk00_bit1 = arg0; switch (arg0) { - case 1: - temp_f31 = 0.31666666f; - BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000001); - BoardModelMotionSpeedSet(lbl_1_bss_C[9], temp_f31); - BoardModelMotionTimeSet(lbl_1_bss_C[9], 8.0f); - return; - case 2: - temp_r31->unk00_bit6 = 1; - return; - case 3: - lbl_1_data_4E0 = HuAudFXPlay(0x35F); - BoardModelPosGet(temp_r31->unk_06[temp_r31->unk2], &sp8); - BoardPlayerPosGet(temp_r31->unk00_bit4, &sp14); - temp = 50.0f + sp8.y; - lbl_1_bss_184->trans.x = (sp14.x - sp8.x) / 10.0f; - lbl_1_bss_184->trans.z = (sp14.z - sp8.z) / 10.0f; - lbl_1_bss_184->trans.y = (temp - sp8.y) / 10.0f; - temp_r31->unk1 = 10; - return; - case 4: - BoardPlayerPosGet(temp_r31->unk00_bit4, &sp14); - sp14.y += 30.000002f; - BoardModelPosGet(temp_r31->unk_06[temp_r31->unk2], &sp8); - lbl_1_bss_184->trans.y = (sp14.y - sp8.y) / 22.0f; - temp_r31->unk1 = 0; + case 1: + temp_f31 = 0.31666666f; + BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000001); + BoardModelMotionSpeedSet(lbl_1_bss_C[9], temp_f31); + BoardModelMotionTimeSet(lbl_1_bss_C[9], 8.0f); + return; + case 2: + temp_r31->unk00_bit6 = 1; + return; + case 3: + lbl_1_data_4E0 = HuAudFXPlay(0x35F); + BoardModelPosGet(temp_r31->unk_06[temp_r31->unk2], &sp8); + BoardPlayerPosGet(temp_r31->unk00_bit4, &sp14); + temp = 50.0f + sp8.y; + lbl_1_bss_184->trans.x = (sp14.x - sp8.x) / 10.0f; + lbl_1_bss_184->trans.z = (sp14.z - sp8.z) / 10.0f; + lbl_1_bss_184->trans.y = (temp - sp8.y) / 10.0f; + temp_r31->unk1 = 10; + return; + case 4: + BoardPlayerPosGet(temp_r31->unk00_bit4, &sp14); + sp14.y += 30.000002f; + BoardModelPosGet(temp_r31->unk_06[temp_r31->unk2], &sp8); + lbl_1_bss_184->trans.y = (sp14.y - sp8.y) / 22.0f; + temp_r31->unk1 = 0; } } -s32 fn_1_BB48(void) { - someBits2* temp = (someBits2*)&lbl_1_bss_184->work[0]; +s32 fn_1_BB48(void) +{ + someBits2 *temp = (someBits2 *)&lbl_1_bss_184->work[0]; return temp->unk00_bit1; } -void fn_1_BB74(s8* arg0) { - someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2); +void fn_1_BB74(s8 *arg0) +{ + someBits2 *bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2); s32 i; - + for (i = 0; i < ARRAY_COUNT(bits->unk3); i++) { arg0[i] = bits->unk3[i]; } } -s32 fn_1_BBC4(void) { - someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2); +s32 fn_1_BBC4(void) +{ + someBits2 *bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2); return bits->unk3[bits->unk2]; } -void fn_1_BBF8(void) { +void fn_1_BBF8(void) +{ BoardModelMotionStart(lbl_1_bss_C[9], 0, 0); BoardModelMotionSpeedSet(lbl_1_bss_C[9], 0.0f); BoardModelMotionTimeSet(lbl_1_bss_C[9], 0.0f); BoardModelAttrReset(lbl_1_bss_C[9], 0x40000004); } +void fn_1_BC7C(s16 arg0) +{ + ParticleData *particle; -void fn_1_BC7C(s16 arg0) { - ParticleData* particle; - - lbl_1_bss_190 = HuSprAnimReadFile(0x120000); + lbl_1_bss_190 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0x00)); HuSprAnimLock(lbl_1_bss_190); lbl_1_data_4E4 = Hu3DParticleCreate(lbl_1_bss_190, 100); Hu3DParticleHookSet(lbl_1_data_4E4, fn_1_BE30); @@ -921,7 +961,8 @@ void fn_1_BC7C(s16 arg0) { particle->unk_02 = arg0; } -void fn_1_BDAC(void) { +void fn_1_BDAC(void) +{ if (lbl_1_data_4E4 != -1) { Hu3DModelKill(lbl_1_data_4E4); lbl_1_data_4E4 = -1; @@ -932,12 +973,13 @@ void fn_1_BDAC(void) { } } -void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) { - Point3d sp8; +void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) +{ + Vec sp8; f32 temp_f30; f32 temp_f29; f32 temp_f31; - HsfanimStruct01* var_r31; + HsfanimStruct01 *var_r31; s32 i, j; if (particle->unk_34 == 0) { @@ -961,20 +1003,20 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) { } } if (j != particle->unk_30) { - temp_f30 = 360.0f * ((1.0f/255.0f) * frand8()); - temp_f29 = temp_f31 * (20.0f + (60.0f * ((1.0f/255.0f) * frand8()))); + temp_f30 = 360.0f * ((1.0f / 255.0f) * frand8()); + temp_f29 = temp_f31 * (20.0f + (60.0f * ((1.0f / 255.0f) * frand8()))); var_r31->unk34.x = (sp8.x + (temp_f29 * sind(temp_f30))); var_r31->unk34.z = (sp8.z + (temp_f29 * cosd(temp_f30))); - var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * ((1.0f/255.0f) * frand8()))))); - var_r31->unk08.x = (0.5f + (3.0f * ((1.0f/255.0f) * frand8()))); - var_r31->unk08.y = (0.3f + (2.0f * ((1.0f/255.0f) * frand8()))); + var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * ((1.0f / 255.0f) * frand8()))))); + var_r31->unk08.x = (0.5f + (3.0f * ((1.0f / 255.0f) * frand8()))); + var_r31->unk08.y = (0.3f + (2.0f * ((1.0f / 255.0f) * frand8()))); var_r31->unk40.a = 180; - var_r31->unk2C = (15.0f * temp_f31); + var_r31->unk2C = (15.0f * temp_f31); } } var_r31 = particle->unk_48; - + for (i = 0; i < particle->unk_30; i++, var_r31++) { if (0.0f != var_r31->unk2C) { var_r31->unk34.y = (var_r31->unk34.y - var_r31->unk08.x); @@ -982,6 +1024,6 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) { if (var_r31->unk2C <= 0.0f) { var_r31->unk2C = 0.0f; } - } + } } } diff --git a/src/REL/w03Dll/river.c b/src/REL/w03Dll/river.c index 99d0aeda..810ab586 100644 --- a/src/REL/w03Dll/river.c +++ b/src/REL/w03Dll/river.c @@ -1,26 +1,29 @@ -#include "dolphin.h" -#include "game/object.h" #include "REL/w03Dll.h" +#include "dolphin.h" #include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" #include "game/hsfdraw.h" +#include "game/object.h" -//BSS + +#include "ext_math.h" + +// BSS char lbl_1_bss_130[8]; -omObjData* lbl_1_bss_12C; +omObjData *lbl_1_bss_12C; s16 lbl_1_bss_128; s32 lbl_1_bss_124; -Process* lbl_1_bss_120; +Process *lbl_1_bss_120; -//function signatures +// function signatures void fn_1_67F8(void); void fn_1_6884(void); -void fn_1_767C(omObjData* arg0); +void fn_1_767C(omObjData *arg0); s32 fn_1_6898(s32 arg0); void fn_1_6B98(s32 arg0); void fn_1_6F9C(s32 arg0); -void fn_1_767C(omObjData* arg0); +void fn_1_767C(omObjData *arg0); void fn_1_735C(s32 arg0); void fn_1_77E4(s32 arg0); @@ -32,46 +35,40 @@ typedef struct unkWorkStruct { f32 unk_04; } unkWorkStruct; -//data -s32 lbl_1_data_368[] = { - 0x00000105, 0x00000145, 0x00000185, - 0x000001C5, 0x00000205, 0x00000245, - 0x00000285, 0x000002C5 -}; +// data +s32 lbl_1_data_368[] = { 0x00000105, 0x00000145, 0x00000185, 0x000001C5, 0x00000205, 0x00000245, 0x00000285, 0x000002C5 }; s16 lbl_1_data_388 = -1; s16 lbl_1_data_38A = -1; s16 lbl_1_data_38C = -1; -s32 lbl_1_data_390[] = { - 0x00770026, - 0x00770027, - 0x00770028, - -1 -}; +s32 lbl_1_data_390[] = { DATA_MAKE_NUM(DATADIR_W03, 0x26), DATA_MAKE_NUM(DATADIR_W03, 0x27), DATA_MAKE_NUM(DATADIR_W03, 0x28), DATA_NUM_LISTEND }; -void fn_1_63F4(s32 arg0) { +void fn_1_63F4(s32 arg0) +{ Vec spC; - unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct); + unkWorkStruct *work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct); work->unk_04 = 0.0f; BoardModelPosGet(lbl_1_data_388, &spC); if (arg0 != 0) { spC.y = -185.0f; - } else { + } + else { spC.y = 10.0f; } BoardModelPosSetV(lbl_1_data_388, &spC); } -void fn_1_6494(void) { +void fn_1_6494(void) +{ Vec sp14; Vec sp8; - unkWorkStruct* temp_r31; + unkWorkStruct *temp_r31; - lbl_1_data_388 = BoardModelCreate(0x77000E, NULL, 0); - lbl_1_data_38C = BoardModelCreate(0x77000F, NULL, 0); + lbl_1_data_388 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x0E), NULL, 0); + lbl_1_data_38C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x0F), NULL, 0); lbl_1_data_38A = BoardModelCreate(0x2000D, &lbl_1_data_390[0], 0); BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001); BoardModelHookSet(lbl_1_data_38A, "itemhook_R", lbl_1_data_38C); @@ -81,14 +78,15 @@ void fn_1_6494(void) { sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2))); sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2))); BoardModelPosSetV(lbl_1_data_388, &sp14); - lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C); + lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void *)fn_1_767C); temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct); temp_r31->temp1 = 0; temp_r31->unk_04 = 0.0f; lbl_1_bss_124 = 0; } -s32 fn_1_6698(void) { +s32 fn_1_6698(void) +{ Vec sp14; Vec sp8; @@ -96,11 +94,12 @@ s32 fn_1_6698(void) { BoardSpaceFlagPosGet(0, 0x200, &sp8); sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2))); sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2))); - BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14); + BoardModelPosSetV(lbl_1_data_388, (Vec *)&sp14); return 1; } -s16 fn_1_675C(void) { +s16 fn_1_675C(void) +{ BoardRollDispSet(0); lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884); @@ -113,7 +112,8 @@ s16 fn_1_675C(void) { return lbl_1_bss_128; } -void fn_1_67F8(void) { +void fn_1_67F8(void) +{ s32 temp_r31; temp_r31 = GWSystem.player_curr; @@ -131,7 +131,8 @@ void fn_1_67F8(void) { HuPrcEnd(); } -void fn_1_6884(void) { +void fn_1_6884(void) +{ lbl_1_bss_120 = 0; } @@ -142,15 +143,16 @@ typedef struct unkPos { } unkPos; unkPos lbl_1_data_3B8[6] = { - {5, 20, 5}, - {21, 35, 7}, - {31, 50, 10}, - {51, 80, 15}, - {81, 100, 17}, - {101, 999, 20}, + { 5, 20, 5 }, + { 21, 35, 7 }, + { 31, 50, 10 }, + { 51, 80, 15 }, + { 81, 100, 17 }, + { 101, 999, 20 }, }; -s32 fn_1_6898(s32 arg0) { +s32 fn_1_6898(s32 arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -163,11 +165,11 @@ s32 fn_1_6898(s32 arg0) { BoardPlayerIdleSet(arg0); BoardCameraViewSet(2); BoardCameraMotionWait(); - + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20); BoardPlayerPosGet(arg0, &sp14); - PSVECSubtract(&sp20, &sp14, &sp8); - temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI); + VECSubtract(&sp20, &sp14, &sp8); + temp_f31 = atan2d(sp8.x, sp8.z); BoardCameraTargetModelSet(lbl_1_data_388); BoardPlayerMotBlendSet(arg0, temp_f31, 15); @@ -195,7 +197,7 @@ s32 fn_1_6898(s32 arg0) { var_r27 = lbl_1_data_3B8[i].z; break; } - } + } } sprintf(lbl_1_bss_130, "%d", var_r27); @@ -214,24 +216,24 @@ s32 fn_1_6898(s32 arg0) { BoardWinKill(); switch (BoardWinChoiceGet()) { - case 0: - j = 1; - break; - case 1: - case -1: - BoardWinCreate(2, MAKE_MESSID(22, 14), 2); - BoardWinWait(); - BoardWinKill(); - return 0; - default: - BoardViewMapExec(arg0); + case 0: + j = 1; + break; + case 1: + case -1: + BoardWinCreate(2, MAKE_MESSID(22, 14), 2); + BoardWinWait(); + BoardWinKill(); + return 0; + default: + BoardViewMapExec(arg0); } } for (i = 0; i < var_r27; i++) { BoardPlayerCoinsAdd(arg0, -1); HuAudFXPlay(0xE); - HuPrcSleep(6); + HuPrcSleep(6); } HuAudFXPlay(0xF); @@ -243,18 +245,19 @@ s32 fn_1_6898(s32 arg0) { s32 BoardDAngleCalcRange(float *value, float min, float range); -void fn_1_6B98(s32 arg0) { +void fn_1_6B98(s32 arg0) +{ Vec sp30; - Point3d sp24; + Vec sp24; Vec sp18; - Point3d spC; + Vec spC; f32 sp8; f32 temp_f1; f32 temp_f31; s16 var_r31; s16 i; - BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, HU3D_MOTATTR_NONE); sp8 = BoardModelRotYGet(lbl_1_data_38A); temp_f31 = sp8 + 180.0f; @@ -272,35 +275,35 @@ void fn_1_6B98(s32 arg0) { sp18.x = sp30.x + (400.0 * sin(M_PI / 2)); sp18.z = sp30.z + (400.0 * cos(M_PI / 2)); sp18.y = sp24.y; - PSVECSubtract(&sp18, &sp24, &spC); + VECSubtract(&sp18, &sp24, &spC); spC.x = spC.x / 120.0f; spC.y /= 120.0f; spC.z = spC.z / 120.0f; BoardCameraTargetModelSet(lbl_1_data_388); - BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, 0x40000001U); + BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(4); var_r31 = 0; for (i = 0; i < 0x78U; i++) { - PSVECAdd(&spC, &sp24, &sp24); + VECAdd(&spC, &sp24, &sp24); temp_f1 = BoardModelMotionTimeGet(lbl_1_data_38A); - if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16) var_r31 == 0)) { + if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16)var_r31 == 0)) { HuAudFXPlay(0x451); var_r31 = 1; } - if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16) var_r31 != 0)) { + if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16)var_r31 != 0)) { var_r31 = 0; } BoardModelPosSetV(lbl_1_data_388, &sp24); - HuPrcVSleep(); + HuPrcVSleep(); } - + BoardModelPosSetV(lbl_1_data_388, &sp18); BoardCameraTargetModelSet(-1); - BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0x40000004U); + BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, HU3D_MOTATTR_REV); sp8 = BoardModelRotYGet(lbl_1_data_38A); temp_f31 = 0.0f; @@ -313,13 +316,14 @@ void fn_1_6B98(s32 arg0) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, 0x40000001U); + BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); } extern s32 lbl_1_data_368[]; // extern w03State* lbl_1_bss_0; -void fn_1_6F9C(s32 arg0) { +void fn_1_6F9C(s32 arg0) +{ Vec sp20; Vec sp14; Vec sp8; @@ -332,7 +336,7 @@ void fn_1_6F9C(s32 arg0) { BoardPlayerPosGet(arg0, &sp14); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp20); - PSVECSubtract(&sp20, &sp14, &sp8); + VECSubtract(&sp20, &sp14, &sp8); sp8.x /= 60.0f; sp8.z /= 60.0f; @@ -342,36 +346,38 @@ void fn_1_6F9C(s32 arg0) { var_f30 = 10.0f; var_f29 = 0.21f; sp14.y += sp20.y; - } else { + } + else { var_f30 = 0.0f; var_f29 = 0.15f; } lbl_1_bss_124 = 1; HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]); - BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) { - PSVECAdd(&sp14, &sp8, &sp14); + VECAdd(&sp14, &sp8, &sp14); sp14.y += 10.0f + var_f30 + (var_f29 * (-0.08166667f * var_f31 * var_f31)); if (sp14.y <= sp20.y) { sp14.y = sp20.y; if (var_r30 == 0) { - BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); var_r30 = 1; } } BoardPlayerPosSetV(arg0, &sp14); - HuPrcVSleep(); + HuPrcVSleep(); } - - BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0); + + BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(10); BoardPlayerIdleSet(arg0); if (GWPlayer[arg0].bowser_suit != 0) { BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0)); - } else { + } + else { BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0)); } @@ -379,10 +385,11 @@ void fn_1_6F9C(s32 arg0) { lbl_1_bss_124 = 0; } -void fn_1_735C(s32 arg0) { +void fn_1_735C(s32 arg0) +{ Vec sp20; Vec sp14; - Point3d sp8; + Vec sp8; f32 temp_f1; f32 var_f30; f32 var_f31; @@ -394,34 +401,35 @@ void fn_1_735C(s32 arg0) { Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp14); BoardPlayerPosSetV(arg0, &sp14); BoardModelHookObjReset(lbl_1_data_388, "chara01"); - PSVECSubtract(&sp20, &sp14, &sp8); - + VECSubtract(&sp20, &sp14, &sp8); + sp8.x = sp8.x / 60.0f; sp8.z = sp8.z / 60.0f; sp8.y = 0.0f; - + HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]); - BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); if (lbl_1_bss_0->unk0 != 0) { var_f30 = 0.25f; - } else { + } + else { var_f30 = 0.2f; } - + for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) { - PSVECAdd(&sp14, &sp8, &sp14); + VECAdd(&sp14, &sp8, &sp14); sp14.y += 20.0f + (var_f30 * (-0.08166667f * var_f31 * var_f31)); if (sp14.y <= sp20.y && var_f31 > 48.0f) { sp14.y = sp20.y; if (var_r30 == 0) { - BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); var_r30 = 1; } } BoardPlayerPosSetV(arg0, &sp14); - HuPrcVSleep(); + HuPrcVSleep(); } - + BoardPlayerPosSetV(arg0, &sp20); HuPrcSleep(0xA); BoardPlayerMotBlendSet(arg0, 0, 15); @@ -439,15 +447,15 @@ void fn_1_735C(s32 arg0) { BoardWinKill(); } - -void fn_1_767C(omObjData* arg0) { - Point3d sp8; +void fn_1_767C(omObjData *arg0) +{ + Vec sp8; s32 temp_r30; - unkWorkStruct* temp_r31; + unkWorkStruct *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, unkWorkStruct); - if ( (temp_r31->temp1 != 0) || (BoardIsKill() != 0)) { + if ((temp_r31->temp1 != 0) || (BoardIsKill() != 0)) { lbl_1_bss_12C = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); return; @@ -456,15 +464,16 @@ void fn_1_767C(omObjData* arg0) { if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) { temp_r31->unk_04 += 3.0f; if (temp_r31->unk_04 >= 360.0f) { - temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f); + temp_r31->unk_04 -= 360.0f; } BoardModelPosGet(lbl_1_data_388, &sp8); - sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0)))); + sp8.y += 0.25 * (2.0 * sind(temp_r31->unk_04)); BoardModelPosSetV(lbl_1_data_388, &sp8); } } -void fn_1_77E4(s32 arg0) { +void fn_1_77E4(s32 arg0) +{ s32 boardIndex; s32 var_r30 = 0; diff --git a/src/REL/w03Dll/smoke.c b/src/REL/w03Dll/smoke.c index ae32fa76..0fcdeda3 100644 --- a/src/REL/w03Dll/smoke.c +++ b/src/REL/w03Dll/smoke.c @@ -31,7 +31,7 @@ void fn_1_785C(void) { lbl_1_bss_138[0] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0); temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138[0]->work[0]; for (i = 0; i < ARRAY_COUNT(temp_r31->unk_00); i++) { - temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0); + temp_r31->unk_00[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x08), NULL, 0); temp_r29 = kemuri_strings[i]; if (0.0f == temp_r31->unk_0C) { diff --git a/src/REL/w03Dll/statue.c b/src/REL/w03Dll/statue.c index ac985685..2d4d9102 100644 --- a/src/REL/w03Dll/statue.c +++ b/src/REL/w03Dll/statue.c @@ -1,17 +1,19 @@ -#include "dolphin.h" #include "REL/executor.h" -#include "game/process.h" -#include "game/data.h" -#include "game/gamework_data.h" #include "REL/w03Dll.h" +#include "dolphin.h" #include "game/audio.h" +#include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" #include "game/board/space.h" #include "game/board/ui.h" +#include "game/data.h" +#include "game/gamework_data.h" #include "game/hsfman.h" -#include "game/board/main.h" #include "game/objsub.h" +#include "game/process.h" + +#include "ext_math.h" void fn_1_1358(void); void fn_1_152C(void); @@ -26,19 +28,17 @@ void fn_1_2AC0(void); void fn_1_2818(void); void fn_1_2A40(void); void fn_1_2B44(void); -double atan2(double y, double x); -//data +// data s16 lbl_1_data_280 = -1; s16 lbl_1_data_282 = -1; s16 lbl_1_data_284 = -1; s16 lbl_1_data_286 = -1; s32 lbl_1_data_288 = -1; -//BSS Extern +// BSS Extern - -//BSS +// BSS s8 lbl_1_bss_6F; s8 lbl_1_bss_6E; s16 lbl_1_bss_6C; @@ -47,12 +47,13 @@ s16 lbl_1_bss_68; GXTexObj lbl_1_bss_48; char lbl_1_bss_44[4]; char lbl_1_bss_38[12]; -void* lbl_1_bss_34; +void *lbl_1_bss_34; f32 lbl_1_bss_30; s8 lbl_1_bss_2C; -Process* lbl_1_bss_28; +Process *lbl_1_bss_28; -void fn_1_12C8(void) { +void fn_1_12C8(void) +{ BoardRollDispSet(0); lbl_1_bss_28 = HuPrcChildCreate(&fn_1_1358, 0x2003, 0x2000, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_28, &fn_1_152C); @@ -64,7 +65,8 @@ void fn_1_12C8(void) { BoardRollDispSet(1); } -void fn_1_1358(void) { +void fn_1_1358(void) +{ s32 cur_player_index; s32 unkC; @@ -75,7 +77,8 @@ void fn_1_1358(void) { if ((BoardSpaceFlagGet(0, GWPlayer[cur_player_index].space_curr) & 0x2000)) { lbl_1_bss_6E = 0; lbl_1_bss_6C = lbl_1_bss_C[3]; - } else { + } + else { lbl_1_bss_6E = 1; lbl_1_bss_6C = lbl_1_bss_C[4]; } @@ -83,7 +86,8 @@ void fn_1_1358(void) { if (fn_1_1650(cur_player_index) != 0) { if (fn_1_1D1C() != 0) { fn_1_1ED4(cur_player_index); - } else { + } + else { fn_1_20E0(cur_player_index); } if (lbl_1_bss_2C) { @@ -105,7 +109,8 @@ void fn_1_1358(void) { HuPrcEnd(); } -void fn_1_152C(void) { +void fn_1_152C(void) +{ BoardConfettiKill(); if (lbl_1_data_282 != -1) { @@ -122,7 +127,8 @@ void fn_1_152C(void) { lbl_1_bss_28 = NULL; } -s32 fn_1_15E8(void) { +s32 fn_1_15E8(void) +{ BoardModelVisibilitySet(lbl_1_bss_6C, 1); if (lbl_1_data_284 != -1) { @@ -133,29 +139,30 @@ s32 fn_1_15E8(void) { return 1; } -s32 fn_1_1650(s32 arg0) { - Point3d sp38; - Point3d sp2C; - Point3d sp20; - Point3d sp14; - Point3d sp8; +s32 fn_1_1650(s32 arg0) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; f32 temp; s32 temp2; BoardPlayerIdleSet(arg0); - + if (lbl_1_bss_0->unk2) { BoardWinCreate(0, MAKE_MESSID(22, 0), -1); BoardWinWait(); BoardWinKill(); return 0; } - + temp2 = BoardSpaceLinkFlagSearch(0, GWPlayer[arg0].space_curr, 0x02000000); BoardSpacePosGet(0, temp2, &sp38); BoardPlayerPosGet(arg0, &sp2C); - PSVECSubtract(&sp38, &sp2C, &sp20); - temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f; + VECSubtract(&sp38, &sp2C, &sp20); + temp = atan2d(-sp20.x, -sp20.z); BoardPlayerRotYSet(arg0, temp); sp14.x = 0.0f; sp14.y = 100.0f; @@ -169,14 +176,14 @@ s32 fn_1_1650(s32 arg0) { while (GWPlayer[arg0].moving) { HuPrcVSleep(); } - + BoardStatusShowSetAll(0); BoardPlayerMotBlendSet(arg0, 0xB4, 0xF); while (BoardPlayerMotBlendCheck(arg0) == 0) { HuPrcVSleep(); } - + BoardPlayerIdleSet(arg0); BoardWinCreate(2, MAKE_MESSID(22, 1), 2); BoardWinWait(); @@ -186,7 +193,8 @@ s32 fn_1_1650(s32 arg0) { if (GWPlayer[arg0].com) { if (BoardRandMod(0x64) > 0x32U) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -199,56 +207,35 @@ s32 fn_1_1650(s32 arg0) { BoardMusStart(1, 0x19, 0x7F, 0); HuAudFXPlay(0x435); sp8.y = BoardModelRotYGet(lbl_1_bss_6C); - + while (BoardDAngleCalcRange(&sp8.y, 180.0f, 2.0f) == 0) { BoardModelRotYSet(lbl_1_bss_6C, sp8.y); HuPrcVSleep(); } - + HuAudFXPlay(0x445); BoardModelRotYSet(lbl_1_bss_6C, 180.0f); - + while (BoardMusStatusGet(1) != 0) { HuPrcVSleep(); } return 1; } -s32 lbl_1_data_290[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 98), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 98), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 98), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 98), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 98), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 98), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 98), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 98) -}; +s32 lbl_1_data_290[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 98), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 98), DATA_MAKE_NUM(DATADIR_PEACHMOT, 98), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 98), DATA_MAKE_NUM(DATADIR_WARIOMOT, 98), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 98), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 98), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 98) }; -s32 lbl_1_data_2B0[] = { - 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) -}; +s32 lbl_1_data_2B0[] = { 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) }; -s32 lbl_1_data_2D0[] = { - 0x00000125, 0x00000165, 0x000001A5, - 0x000001E5, 0x00000225, 0x00000265, - 0x000002A5, 0x000002E5 -}; +s32 lbl_1_data_2D0[] = { 0x00000125, 0x00000165, 0x000001A5, 0x000001E5, 0x00000225, 0x00000265, 0x000002A5, 0x000002E5 }; -s32 lbl_1_data_2F0[] = { - 0x0000012E, 0x0000016E, 0x000001AE, - 0x000001EE, 0x0000022E, 0x0000026E, - 0x000002AE, 0x000002EE -}; +s32 lbl_1_data_2F0[] = { 0x0000012E, 0x0000016E, 0x000001AE, 0x000001EE, 0x0000022E, 0x0000026E, 0x000002AE, 0x000002EE }; -void fn_1_19DC(s32 arg0, s32 arg1) { +void fn_1_19DC(s32 arg0, s32 arg1) +{ s32 temp_r30; s32 temp_r5; s32 temp_r5_2; @@ -262,7 +249,8 @@ void fn_1_19DC(s32 arg0, s32 arg1) { lbl_1_bss_6A = 8; lbl_1_bss_68 = lbl_1_data_282; var_r29 = lbl_1_data_2F0[GWPlayer[arg0].character]; - } else { + } + else { lbl_1_bss_6A = 7; lbl_1_bss_68 = 1; var_r29 = lbl_1_data_2D0[GWPlayer[arg0].character]; @@ -278,18 +266,17 @@ void fn_1_19DC(s32 arg0, s32 arg1) { HuAudFXPlay(var_r29); BoardPlayerVoiceEnableSet(arg0, lbl_1_bss_6A, 0); - BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(9); while (BoardPlayerMotionEndCheck(arg0) == 0) { HuPrcVSleep(); - } HuPrcSleep(60); - + if (arg1 != 0) { - BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(9); while (BoardPlayerMotionEndCheck(arg0) == 0) { HuPrcVSleep(); @@ -306,7 +293,7 @@ void fn_1_19DC(s32 arg0, s32 arg1) { } BoardAudSeqPause(0, 1, 1000); - BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(11); while (BoardPlayerMotionEndCheck(arg0) == 0) { @@ -314,7 +301,8 @@ void fn_1_19DC(s32 arg0, s32 arg1) { } } -s32 fn_1_1D1C(void) { +s32 fn_1_1D1C(void) +{ s32 sp34; s32 sp30; s32 sp2C; @@ -329,11 +317,7 @@ s32 fn_1_1D1C(void) { s32 maxTurn; s32 sp8[3] = { 70, 50, 45 }; - s32 sp14[3][3] = { - {3, 5, 22}, - {5, 10, 35}, - {5, 15, 35} - }; + s32 sp14[3][3] = { { 3, 5, 22 }, { 5, 10, 35 }, { 5, 15, 35 } }; while (BoardMusStatusGet(1) != 0) { HuPrcVSleep(); @@ -351,27 +335,30 @@ s32 fn_1_1D1C(void) { } modRand = BoardRandMod(100); - if (modRand < sp8[var_r31] ) { + if (modRand < sp8[var_r31]) { return 1; } modRand2 = BoardRandMod(100 - sp8[var_r31]); if (modRand2 < sp14[var_r31][0]) { lbl_1_bss_2C = 3; - } else if (modRand2 < sp14[var_r31][1]) { + } + else if (modRand2 < sp14[var_r31][1]) { lbl_1_bss_2C = 2; - } else { + } + else { lbl_1_bss_2C = 1; } return 0; } -void fn_1_1ED4(s32 arg0) { - Point3d spC; +void fn_1_1ED4(s32 arg0) +{ + Vec spC; f32 sp8; - lbl_1_data_284 = BoardModelCreate(0x77000C, NULL, 0); + lbl_1_data_284 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x0C), NULL, 0); BoardModelVisibilitySet(lbl_1_data_284, 0); BoardModelVisibilitySet(lbl_1_bss_6C, 0); BoardModelPosGet(lbl_1_bss_6C, &spC); @@ -382,12 +369,12 @@ void fn_1_1ED4(s32 arg0) { spC.y += 700.0f; BoardConfettiCreate(&spC, 0x64, 300.0f); sp8 = BoardModelRotYGet(lbl_1_bss_6C); - + while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) { BoardModelRotYSet(lbl_1_data_284, sp8); HuPrcVSleep(); } - + omVibrate(arg0, 0xC, 4, 2); BoardMusStart(1, 0x1A, 0x7F, 0); BoardModelRotYSet(lbl_1_data_284, 0.0f); @@ -398,7 +385,7 @@ void fn_1_1ED4(s32 arg0) { } BoardPlayerIdleSet(arg0); - + while (BoardMusStatusGet(1) != 0) { HuPrcVSleep(); } @@ -410,15 +397,16 @@ void fn_1_1ED4(s32 arg0) { BoardConfettiStop(); } -void fn_1_20E0(s32 arg0) { - Point3d sp24; - Point3d sp18; - Point3d spC; +void fn_1_20E0(s32 arg0) +{ + Vec sp24; + Vec sp18; + Vec spC; f32 sp8; f32 var_f31; s32 i; - lbl_1_data_284 = BoardModelCreate(0x77000D, NULL, 0); + lbl_1_data_284 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W03, 0x0D), NULL, 0); BoardModelVisibilitySet(lbl_1_data_284, 0); BoardModelVisibilitySet(lbl_1_bss_6C, 0); BoardModelPosGet(lbl_1_bss_6C, &spC); @@ -435,28 +423,28 @@ void fn_1_20E0(s32 arg0) { omVibrate(arg0, 0xC, 4, 2); BoardModelRotYSet(lbl_1_data_284, 0.0f); BoardModelRotYSet(lbl_1_bss_6C, 0.0f); - + while (BoardFilterFadePauseCheck() == 0) { HuPrcVSleep(); } - + BoardMusStart(1, 0x1B, 0x7F, 0); HuAudFXPlay(0x44A); fn_1_2A40(); lbl_1_bss_30 = 0.0f; - + while (lbl_1_bss_30 < 128.0f) { HuPrcVSleep(); lbl_1_bss_30 += 12.0f; } - + if (lbl_1_bss_30 > 128.0f) { lbl_1_bss_30 = 128.0f; } HuPrcSleep(40); lbl_1_bss_30 = 128.0f; - + while (lbl_1_bss_30 > 0.0f) { HuPrcVSleep(); lbl_1_bss_30 -= 12.0f; @@ -474,13 +462,13 @@ void fn_1_20E0(s32 arg0) { BoardCameraMotionStartEx(-1, NULL, NULL, 1360.0f, -1.0f, 13); BoardCameraMotionWait(); } - + BoardPlayerIdleSet(arg0); while (BoardMusStatusGet(1) != 0) { HuPrcVSleep(); } - + BoardAudSeqPause(0, 0, 1000); BoardWinCreate(2, MAKE_MESSID(22, 5), 2); BoardWinWait(); @@ -503,16 +491,16 @@ void fn_1_20E0(s32 arg0) { for (var_f31 = 100.0f; var_f31 > 0.0f; var_f31 -= 2.0f) { BoardCameraQuakeSet(0xA, var_f31); - HuPrcVSleep(); + HuPrcVSleep(); } - + BoardCameraQuakeReset(); if (lbl_1_data_288 != 0) { HuAudFXStop(lbl_1_data_288); lbl_1_data_288 = -1; } - + fn_1_2818(); omVibrate(arg0, 0xC, 0xC, 0); HuAudFXPlay(0x438); @@ -529,17 +517,18 @@ void fn_1_20E0(s32 arg0) { HuPrcSleep(0x3C); } -void fn_1_26E0(s32 arg0) { - Point3d sp20; - Point3d sp14; - Point3d sp8; +void fn_1_26E0(s32 arg0) +{ + Vec sp20; + Vec sp14; + Vec sp8; f32 temp; BoardSpacePosGet(0, GWPlayer[arg0].space_curr, &sp20); BoardPlayerPosGet(arg0, &sp14); - PSVECSubtract(&sp20, &sp14, &sp8); - PSVECNormalize(&sp8, &sp8); - temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI)); + VECSubtract(&sp20, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + temp = atan2d(-sp8.x, -sp8.z); BoardPlayerRotYSet(arg0, temp); BoardCameraViewSet(1); BoardCameraTargetPlayerSet(arg0); @@ -554,11 +543,12 @@ void fn_1_26E0(s32 arg0) { BoardPlayerIdleSet(arg0); } -void fn_1_2818(void) { +void fn_1_2818(void) +{ s16 temp_r29; s16 temp_r30; s16 j; - s16 sp8[3] = {0x0002, 0x003E, 0x007A}; + s16 sp8[3] = { 0x0002, 0x003E, 0x007A }; temp_r29 = (4 - lbl_1_bss_2C) * 60; BoardModelMotionStart(lbl_1_bss_C[1], 0, 0); @@ -569,19 +559,21 @@ void fn_1_2818(void) { for (j = 0; j < ARRAY_COUNT(sp8); j++) { if (temp_r30 == sp8[j]) { HuAudFXPlay(0x446); - } + } } HuPrcVSleep(); - } else { + } + else { break; - } + } } BoardModelAttrSet(lbl_1_bss_C[1], 0x40000002); HuPrcSleep(0x3C); } -s32 fn_1_2930(s32 arg0) { +s32 fn_1_2930(s32 arg0) +{ lbl_1_bss_0->unk0--; if (lbl_1_bss_0->unk0 <= 0) { @@ -604,14 +596,16 @@ s32 fn_1_2930(s32 arg0) { return 0; } -void fn_1_2A40(void) { +void fn_1_2A40(void) +{ lbl_1_bss_30 = 0.0f; - lbl_1_bss_34 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x96000, 0x10000000U); - lbl_1_data_286 = Hu3DHookFuncCreate((void*)&fn_1_2B44); + lbl_1_bss_34 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x96000, MEMORY_DEFAULT_NUM); + lbl_1_data_286 = Hu3DHookFuncCreate((void *)&fn_1_2B44); Hu3DModelLayerSet(lbl_1_data_286, 3); } -void fn_1_2AC0(void) { +void fn_1_2AC0(void) +{ if (lbl_1_bss_34) { HuMemDirectFree(lbl_1_bss_34); lbl_1_bss_34 = NULL; @@ -623,15 +617,16 @@ void fn_1_2AC0(void) { } } -void fn_1_2B44(void) { +void fn_1_2B44(void) +{ Mtx44 sp50; Mtx sp20; GXColor sp14; GXColor sp10; GXColor spC; u8 sp8; - GXColor sp1C = {0xFF, 0xFF, 0xFF, 0xFF}; - GXColor sp18 = {0xFF, 0xFF, 0xFF, 0xFF}; + GXColor sp1C = { 0xFF, 0xFF, 0xFF, 0xFF }; + GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0xFF }; f32 temp_f28 = 0.0f; f32 temp_f30 = 640.0f; @@ -643,7 +638,7 @@ void fn_1_2B44(void) { GXLoadTexObj(&lbl_1_bss_48, GX_TEXMAP0); C_MTXOrtho(sp50, temp_f27, temp_f29, temp_f28, temp_f30, 0.0f, 10.0f); GXSetProjection(sp50, GX_ORTHOGRAPHIC); - PSMTXIdentity(sp20); + MTXIdentity(sp20); GXLoadPosMtxImm(sp20, 0); GXSetCurrentMtx(0); GXSetViewport(0.0f, 0.0f, temp_f30, 1.0f + temp_f29, 0.0f, 1.0f); diff --git a/src/REL/w04Dll/big_boo.c b/src/REL/w04Dll/big_boo.c index ff859078..16df9492 100755 --- a/src/REL/w04Dll/big_boo.c +++ b/src/REL/w04Dll/big_boo.c @@ -391,7 +391,7 @@ static void fn_1_6CF8(void) { HuPrcSleep(0x78); for (i = 0; i < 3; i++) { BoardPlayerModelAttrReset(sp8[i], 0x40000001); - BoardPlayerMotionShiftSet(sp8[i], lbl_1_bss_114[sp8[i]][1], 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(sp8[i], lbl_1_bss_114[sp8[i]][1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } BoardModelPosGet(lbl_1_bss_274, &sp10); var_r28 = 10; @@ -407,7 +407,7 @@ static void fn_1_6CF8(void) { HuPrcVSleep(); } for (i = 0; i < 3; i++) { - BoardPlayerMotionShiftSet(sp8[i], 1, 0.0f, 5.0f, 0x40000001); + BoardPlayerMotionShiftSet(sp8[i], 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } } @@ -780,7 +780,7 @@ static void fn_1_7888(void) { var_f31 = -40.0f; } if (var_r28 == var_r27) { - BoardPlayerMotionShiftSet(lbl_1_bss_282, 7, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_282, 7, 0.0f, 10.0f, HU3D_MOTATTR_NONE); break; } HuPrcVSleep(); @@ -913,9 +913,13 @@ static void fn_1_8A60(void) { HuPrcVSleep(); } fn_1_7300(); + #if VERSION_ENG sprintf(sp10, "%d", var_r29); BoardWinCreate(2, MAKE_MESSID(32, 11), 9); BoardWinInsertMesSet(MAKE_MESSID_PTR(sp10), 0); + #else + BoardWinCreate(2, MAKE_MESSID(32, 11), 9); + #endif BoardWinWait(); BoardWinKill(); BoardAudSeqFadeOut(1, 1000); @@ -977,7 +981,7 @@ static void fn_1_8A60(void) { } } temp_r27 = HuAudSStreamPlay(6); - BoardPlayerMotionShiftSet(lbl_1_bss_282, 7, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_282, 7, 0.0f, 10.0f, HU3D_MOTATTR_NONE); while (!BoardPlayerMotionEndCheck(lbl_1_bss_282)) { HuPrcVSleep(); } @@ -1008,7 +1012,7 @@ static void fn_1_98A0(void) { BoardModelPosGet(lbl_1_bss_274, &sp14); var_f30 = BoardModelRotYGet(lbl_1_bss_274); - BoardModelMotionShiftSet(lbl_1_bss_274, 2, 0.0f, 25.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_274, 2, 0.0f, 25.0f, HU3D_MOTATTR_LOOP); for (i = 0; i < 25; i++) { var_f30 += 7.2f; BoardModelRotYSet(lbl_1_bss_274, var_f30); diff --git a/src/REL/w04Dll/boo_event.c b/src/REL/w04Dll/boo_event.c index 3a89e85b..2913f005 100755 --- a/src/REL/w04Dll/boo_event.c +++ b/src/REL/w04Dll/boo_event.c @@ -1,6 +1,14 @@ #include "REL/w04Dll.h" #include "game/audio.h" +#include "game/board/audio.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" +#include "game/board/ui.h" +#include "game/board/window.h" #include "game/data.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" @@ -12,14 +20,6 @@ #include "game/process.h" #include "game/sprite.h" #include "game/window.h" -#include "game/board/audio.h" -#include "game/board/main.h" -#include "game/board/model.h" -#include "game/board/player.h" -#include "game/board/space.h" -#include "game/board/ui.h" -#include "game/board/window.h" -#include "game/frand.h" #include "dolphin.h" #include "ext_math.h" @@ -94,50 +94,25 @@ static s16 lbl_1_bss_50; static AnimData *lbl_1_bss_4C; static Process *lbl_1_bss_48; -static s32 lbl_1_data_2D0[8] = { - DATADIR_MARIOMOT, - DATADIR_LUIGIMOT, - DATADIR_PEACHMOT, - DATADIR_YOSHIMOT, - DATADIR_WARIOMOT, - DATADIR_DONKEYMOT, - DATADIR_DAISYMOT, - DATADIR_WALUIGIMOT -}; +static s32 lbl_1_data_2D0[8] = { DATADIR_MARIOMOT, DATADIR_LUIGIMOT, DATADIR_PEACHMOT, DATADIR_YOSHIMOT, DATADIR_WARIOMOT, DATADIR_DONKEYMOT, + DATADIR_DAISYMOT, DATADIR_WALUIGIMOT }; static s32 lbl_1_data_2F0 = 28; -static s32 lbl_1_data_2F4[8] = { - DATA_MAKE_NUM(DATADIR_W04, 35), - DATA_MAKE_NUM(DATADIR_W04, 36), - DATA_MAKE_NUM(DATADIR_W04, 37), - DATA_MAKE_NUM(DATADIR_W04, 38), - DATA_MAKE_NUM(DATADIR_W04, 39), - DATA_MAKE_NUM(DATADIR_W04, 40), - DATA_MAKE_NUM(DATADIR_W04, 41), - DATA_MAKE_NUM(DATADIR_W04, 42) -}; +static s32 lbl_1_data_2F4[8] + = { DATA_MAKE_NUM(DATADIR_W04, 35), DATA_MAKE_NUM(DATADIR_W04, 36), DATA_MAKE_NUM(DATADIR_W04, 37), DATA_MAKE_NUM(DATADIR_W04, 38), + DATA_MAKE_NUM(DATADIR_W04, 39), DATA_MAKE_NUM(DATADIR_W04, 40), DATA_MAKE_NUM(DATADIR_W04, 41), DATA_MAKE_NUM(DATADIR_W04, 42) }; -static s32 lbl_1_data_314[8] = { - DATA_MAKE_NUM(DATADIR_W04, 43), - DATA_MAKE_NUM(DATADIR_W04, 44), - DATA_MAKE_NUM(DATADIR_W04, 45), - DATA_MAKE_NUM(DATADIR_W04, 46), - DATA_MAKE_NUM(DATADIR_W04, 47), - DATA_MAKE_NUM(DATADIR_W04, 48), - DATA_MAKE_NUM(DATADIR_W04, 49), - DATA_MAKE_NUM(DATADIR_W04, 50) -}; +static s32 lbl_1_data_314[8] + = { DATA_MAKE_NUM(DATADIR_W04, 43), DATA_MAKE_NUM(DATADIR_W04, 44), DATA_MAKE_NUM(DATADIR_W04, 45), DATA_MAKE_NUM(DATADIR_W04, 46), + DATA_MAKE_NUM(DATADIR_W04, 47), DATA_MAKE_NUM(DATADIR_W04, 48), DATA_MAKE_NUM(DATADIR_W04, 49), DATA_MAKE_NUM(DATADIR_W04, 50) }; -static char *lbl_1_data_348[] = { - "kan1", "kan2", "kan3", "kan4" -}; +static char *lbl_1_data_348[] = { "kan1", "kan2", "kan3", "kan4" }; -static float lbl_1_data_358[] = { - -150.00001f, -170.00001f, -30.0f, -220.0f -}; +static float lbl_1_data_358[] = { -150.00001f, -170.00001f, -30.0f, -220.0f }; -static void fn_1_20EC(void) { +static void fn_1_20EC(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -163,7 +138,7 @@ static void fn_1_20EC(void) { } } for (i = 0; i < 3; i++) { - lbl_1_bss_F4[i] = BoardModelCreate(0x70000, NULL, 1); + lbl_1_bss_F4[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x00), NULL, 1); BoardModelLayerSet(lbl_1_bss_F4[i], 2); BoardModelVisibilitySet(lbl_1_bss_F4[i], 0); } @@ -187,7 +162,7 @@ static void fn_1_20EC(void) { HuPrcVSleep(); } BoardCameraMotionWait(); - BoardPlayerMotionShiftSet(temp_r30, lbl_1_bss_52[temp_r30][0], 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(temp_r30, lbl_1_bss_52[temp_r30][0], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuAudPlayerVoicePlay(temp_r30, 0x128); BoardModelPosGet(lbl_1_bss_14[3], &sp20); BoardModelPosSetV(lbl_1_bss_FA, &sp20); @@ -211,10 +186,10 @@ static void fn_1_20EC(void) { while (fn_1_1130(lbl_1_bss_FA, atan2d(sp14.x - sp20.x, sp14.z - sp20.z), 2.0f) == 0) { HuPrcVSleep(); } - PSVECSubtract(&sp14, &sp20, &sp8); - PSVECScale(&sp8, &sp8, 0.022222223f); + VECSubtract(&sp14, &sp20, &sp8); + VECScale(&sp8, &sp8, 0.022222223f); for (i = 0; i < 45; i++) { - PSVECAdd(&sp20, &sp8, &sp20); + VECAdd(&sp20, &sp8, &sp20); BoardModelPosSetV(lbl_1_bss_FA, &sp20); HuPrcVSleep(); } @@ -258,7 +233,8 @@ static void fn_1_20EC(void) { HuPrcEnd(); } -static void fn_1_28BC(void) { +static void fn_1_28BC(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -273,7 +249,7 @@ static void fn_1_28BC(void) { var_r27 = HuPrcChildCreate(fn_1_45A8, 0x2001, 0x800, 0, boardMainProc); HuPrcDestructorSet2(var_r27, fn_1_4630); - var_r26 = (float*) &var_r27->user_data; + var_r26 = (float *)&var_r27->user_data; lbl_1_bss_C2 = fn_1_4680(lbl_1_bss_78); var_r29 = 0; while (var_r29 == 0) { @@ -293,12 +269,12 @@ static void fn_1_28BC(void) { BoardModelPosGet(lbl_1_bss_FA, &sp14); temp_f30 = atan2d(sp20.x - sp14.x, sp20.z - sp14.z); BoardModelRotYSet(lbl_1_bss_FA, temp_f30); - PSVECSubtract(&sp20, &sp14, &sp8); - PSVECScale(&sp8, &sp8, 0.022222223f); + VECSubtract(&sp20, &sp14, &sp8); + VECScale(&sp8, &sp8, 0.022222223f); *var_r26 = temp_f30 - 180.0f; fn_1_2EE8(3); for (i = 0; i < 45; i++) { - PSVECAdd(&sp8, &sp14, &sp14); + VECAdd(&sp8, &sp14, &sp14); BoardModelPosSetV(lbl_1_bss_FA, &sp14); fn_1_5018(); if (var_r29 != 0) { @@ -318,7 +294,8 @@ static void fn_1_28BC(void) { } } -static void fn_1_2B8C(void) { +static void fn_1_2B8C(void) +{ s32 i; while (fn_1_2F54(4) == 0 || lbl_1_bss_7C != 0) { @@ -331,7 +308,8 @@ static void fn_1_2B8C(void) { } } -static void fn_1_2C10(void) { +static void fn_1_2C10(void) +{ Vec sp8; BssE4Data *temp_r31; s32 i; @@ -356,8 +334,9 @@ static void fn_1_2C10(void) { temp_r31->unk0C = 0; if (i == 0) { temp_r31->unk0A = lbl_1_bss_FA; - } else { - temp_r31->unk0A = ((BssE4Data*) lbl_1_bss_E4[i - 1]->user_data)->unk04; + } + else { + temp_r31->unk0A = ((BssE4Data *)lbl_1_bss_E4[i - 1]->user_data)->unk04; } lbl_1_bss_E4[i] = HuPrcChildCreate(fn_1_30A4, 0x2003, 0x1000, 0, boardMainProc); lbl_1_bss_E4[i]->user_data = temp_r31; @@ -366,7 +345,8 @@ static void fn_1_2C10(void) { } } -static void fn_1_2E60(s16 arg0) { +static void fn_1_2E60(s16 arg0) +{ BssE4Data *temp_r3; temp_r3 = fn_1_2FBC(arg0); @@ -376,7 +356,8 @@ static void fn_1_2E60(s16 arg0) { HuMemDirectFree(lbl_1_bss_E4[arg0]->user_data); } -static void fn_1_2EE8(s32 arg0) { +static void fn_1_2EE8(s32 arg0) +{ s32 i; for (i = 0; i < 4; i++) { @@ -386,7 +367,8 @@ static void fn_1_2EE8(s32 arg0) { } } -static s32 fn_1_2F54(u32 arg0) { +static s32 fn_1_2F54(u32 arg0) +{ s32 i; for (i = 0; i < 4; i++) { @@ -396,16 +378,19 @@ static s32 fn_1_2F54(u32 arg0) { } if (i != 4) { return 0; - } else { + } + else { return 1; } } -static BssE4Data *fn_1_2FBC(s16 arg0) { +static BssE4Data *fn_1_2FBC(s16 arg0) +{ return lbl_1_bss_E4[arg0]->user_data; } -static void fn_1_2FDC(void) { +static void fn_1_2FDC(void) +{ Vec sp8; BssE4Data *temp_r31; @@ -423,7 +408,8 @@ static void fn_1_2FDC(void) { } } -static void fn_1_30A4(void) { +static void fn_1_30A4(void) +{ Vec sp20; Vec sp14; float temp_f31; @@ -451,7 +437,8 @@ static void fn_1_30A4(void) { if (temp_r31->unk06 == 0) { BoardPlayerPosGet(GWSystem.player_curr, &temp_r31->unk20); temp_r31->unk20.y += 65.0f; - } else { + } + else { temp_r31->unk20 = fn_1_2FBC(temp_r31->unk06 - 1)->unk20; temp_r31->unk20.z -= 300.0f; } @@ -473,10 +460,10 @@ static void fn_1_30A4(void) { while (fn_1_1130(temp_r31->unk04, temp_f31, 5.0f) == 0) { HuPrcVSleep(); } - PSVECSubtract(&temp_r31->unk20, &sp20, &sp14); - PSVECScale(&sp14, &sp14, 0.016666668f); + VECSubtract(&temp_r31->unk20, &sp20, &sp14); + VECScale(&sp14, &sp14, 0.016666668f); for (i = 0; i < 60; i++) { - PSVECAdd(&sp14, &sp20, &sp20); + VECAdd(&sp14, &sp20, &sp20); BoardModelPosSetV(temp_r31->unk04, &sp20); HuPrcVSleep(); } @@ -508,12 +495,13 @@ static void fn_1_30A4(void) { } BoardPlayerPosSetV(i, &sp14); BoardPlayerRotYSet(i, 0.0f); - BoardPlayerMotionShiftSet(i, lbl_1_bss_52[GWSystem.player_curr][1], 0.0f, 10.0f, 0x40000001); + BoardPlayerMotionShiftSet(i, lbl_1_bss_52[GWSystem.player_curr][1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); temp_r31->unk08 = i; } if (temp_r31->unk06 == 0) { BoardModelPosGet(lbl_1_bss_FA, &temp_r31->unk20); - } else { + } + else { BoardModelPosGet(fn_1_2FBC(temp_r31->unk06 - 1)->unk04, &temp_r31->unk20); } temp_r31->unk00 = 0; @@ -533,8 +521,8 @@ static void fn_1_30A4(void) { if (temp_r31->unk08 != -1) { BoardPlayerRotYSet(temp_r31->unk08, temp_f31); } - PSVECSubtract(&temp_r31->unk20, &sp20, &sp14); - PSVECScale(&sp14, &sp14, 0.022222223f); + VECSubtract(&temp_r31->unk20, &sp20, &sp14); + VECScale(&sp14, &sp14, 0.022222223f); if (temp_r31->unk0C > 0) { var_r28 = BoardSpaceGet(0, temp_r31->unk0C); if (var_r28->flag & 1) { @@ -547,7 +535,7 @@ static void fn_1_30A4(void) { } } for (i = 0; i < 45; i++) { - PSVECAdd(&sp20, &sp14, &sp20); + VECAdd(&sp20, &sp14, &sp20); BoardModelPosSetV(temp_r31->unk04, &sp20); if (temp_r31->unk08 != -1) { BoardPlayerPosSetV(temp_r31->unk08, &sp20); @@ -565,7 +553,8 @@ static void fn_1_30A4(void) { temp_r31->unk0E = temp_r31->unk0C; if (temp_r31->unk06 == 0) { temp_r31->unk0C = lbl_1_bss_74; - } else { + } + else { temp_r31->unk0C = fn_1_2FBC(temp_r31->unk06 - 1)->unk0E; } BoardModelPosSetV(temp_r31->unk04, &temp_r31->unk20); @@ -574,14 +563,16 @@ static void fn_1_30A4(void) { } if (temp_r31->unk06 == 0) { BoardModelPosGet(lbl_1_bss_FA, &temp_r31->unk20); - } else { + } + else { BoardModelPosGet(fn_1_2FBC(temp_r31->unk06 - 1)->unk04, &temp_r31->unk20); } if (var_r29 != 0) { BoardModelVisibilitySet(temp_r31->unk04, 0); temp_r31->unk02 = 0; temp_r31->unk00 = 4; - } else { + } + else { temp_r31->unk00 = 0; } break; @@ -590,7 +581,8 @@ static void fn_1_30A4(void) { } } -static void fn_1_38D8(void) { +static void fn_1_38D8(void) +{ Vec sp24; Vec sp18; Vec spC; @@ -604,20 +596,20 @@ static void fn_1_38D8(void) { temp_r30 = HuPrcCurrentGet()->user_data; temp_r31 = temp_r30->unk08; temp_r30->unk08 = -1; - BoardPlayerMotionShiftSet(temp_r31, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(temp_r31, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); sp18 = lbl_1_bss_80[temp_r31]; GWPlayer[temp_r31].space_curr = lbl_1_bss_B0; BoardPlayerPosGet(temp_r31, &sp24); var_f28 = atan2d(sp18.x - sp24.x, sp18.z - sp24.z); BoardPlayerRotYSet(temp_r31, var_f28); - PSVECSubtract(&sp18, &sp24, &spC); - PSVECScale(&spC, &spC, 0.025f); + VECSubtract(&sp18, &sp24, &spC); + VECScale(&spC, &spC, 0.025f); temp_f26 = 12.0f; var_f29 = 0.0f; while (TRUE) { spC.y = temp_f26 - var_f29 * var_f29 * 0.25f * 0.075f; var_f29 += 1.0f; - PSVECAdd(&spC, &sp24, &sp24); + VECAdd(&spC, &sp24, &sp24); if (sp24.y <= sp18.y) { sp24.y = sp18.y; break; @@ -640,7 +632,8 @@ static void fn_1_38D8(void) { HuPrcEnd(); } -static s32 fn_1_3C9C(void) { +static s32 fn_1_3C9C(void) +{ Vec sp50; Vec sp44; Vec sp38; @@ -696,16 +689,16 @@ static s32 fn_1_3C9C(void) { for (i = 0; i < var_r29; i++) { BoardSpacePosGet(0, sp20[i], &sp44); sp50.y = sp44.y; - PSVECSubtract(&sp44, &sp50, &sp38); + VECSubtract(&sp44, &sp50, &sp38); var_f31 = atan2d(sp38.x, sp38.z); if (var_f31 < 0.0f) { var_f31 += 360.0f; } sp28[i] = var_f31; - PSVECNormalize(&sp38, &sp44); - PSVECScale(&sp44, &sp44, 110.0f); + VECNormalize(&sp38, &sp44); + VECScale(&sp44, &sp44, 110.0f); sp44.y += 200.0f; - PSVECAdd(&sp50, &sp44, &sp44); + VECAdd(&sp50, &sp44, &sp44); BoardModelPosSetV(lbl_1_bss_F4[i], &sp44); BoardModelRotYSet(lbl_1_bss_F4[i], var_f31); BoardModelVisibilitySet(lbl_1_bss_F4[i], 1); @@ -731,17 +724,20 @@ static s32 fn_1_3C9C(void) { var_r19 = 0; if (var_r21 != 0) { var_r21--; - } else { + } + else { var_r21 = frandmod(10) + 15; if (frandBool() || var_r18 == 3) { var_r19 = 0x100; - } else { + } + else { OSReport("com sel chg: %d \n", var_r29); var_r18++; var_r23 = frandmod(var_r29); } } - } else { + } + else { var_r26 = HuPadStkX[temp_r20]; var_r25 = HuPadStkY[temp_r20]; var_r19 = HuPadBtnDown[temp_r20]; @@ -783,7 +779,8 @@ static s32 fn_1_3C9C(void) { if (var_f31 > 180.0f) { var_f31 -= 180.0f; } - } else { + } + else { sp38.x = sp38.y = sp38.z = 1.8f; } BoardModelScaleSetV(lbl_1_bss_F4[i], &sp38); @@ -798,7 +795,8 @@ static s32 fn_1_3C9C(void) { var_r24 = sp20[var_r27]; lbl_1_bss_70 = sp18[var_r27]; lbl_1_bss_C2 = fn_1_4680(var_r24); - } else if (lbl_1_bss_70 != 0) { + } + else if (lbl_1_bss_70 != 0) { i = BoardSpaceLinkTargetListGet(0, lbl_1_bss_78, sp10); for (i--; i >= 0; i--) { var_r28 = BoardSpaceGet(0, sp10[i]); @@ -807,7 +805,8 @@ static s32 fn_1_3C9C(void) { } } var_r24 = sp10[i]; - } else { + } + else { for (i = 0; i < temp_r30->link_cnt; i++) { var_r28 = BoardSpaceGet(0, temp_r30->link[i]); if (var_r28->flag & 0x200) { @@ -819,12 +818,13 @@ static s32 fn_1_3C9C(void) { return var_r24; } -static void fn_1_45A8(void) { +static void fn_1_45A8(void) +{ float *temp_r30; s32 var_r31; var_r31 = 15; - temp_r30 = (float*) &HuPrcCurrentGet()->user_data; + temp_r30 = (float *)&HuPrcCurrentGet()->user_data; while (TRUE) { if (var_r31 == 0) { BoardCameraMoveSet(0); @@ -842,7 +842,8 @@ static void fn_1_45A8(void) { } } -static void fn_1_4630(void) { +static void fn_1_4630(void) +{ BoardCameraMoveSet(0); BoardCameraTargetPlayerSet(GWSystem.player_curr); BoardCameraViewSet(2); @@ -850,7 +851,8 @@ static void fn_1_4630(void) { BoardCameraMoveSet(1); } -static s32 fn_1_4680(s16 arg0) { +static s32 fn_1_4680(s16 arg0) +{ BoardSpace *var_r30; BoardSpace *var_r29; s16 sp8[4]; @@ -880,7 +882,8 @@ static s32 fn_1_4680(s16 arg0) { } } arg0 = sp8[i]; - } else { + } + else { for (i = 0; i < var_r30->link_cnt; i++) { var_r29 = BoardSpaceGet(0, var_r30->link[i]); if (var_r29->flag & 0x200) { @@ -897,7 +900,8 @@ static s32 fn_1_4680(s16 arg0) { return var_r27; } -static void fn_1_4848(void) { +static void fn_1_4848(void) +{ Vec sp20; Vec sp14; float temp_f28; @@ -905,7 +909,7 @@ static void fn_1_4848(void) { s32 temp_r30; s32 i; - temp_r30 = (s32) HuPrcCurrentGet()->user_data; + temp_r30 = (s32)HuPrcCurrentGet()->user_data; BoardPlayerPosGet(temp_r30, &sp20); BoardPlayerMotBlendSet(temp_r30, BoardModelRotYGet(lbl_1_bss_FA) - 180.0f, 0xA); while (!BoardPlayerMotBlendCheck(temp_r30)) { @@ -917,7 +921,7 @@ static void fn_1_4848(void) { } HuPrcVSleep(); } - BoardPlayerMotionShiftSet(temp_r30, lbl_1_bss_52[temp_r30][0], 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(temp_r30, lbl_1_bss_52[temp_r30][0], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuAudPlayerVoicePlay(temp_r30, 0x128); for (i = 0; i < 65; i++) { BoardModelPosGet(lbl_1_bss_FA, &sp14); @@ -927,7 +931,7 @@ static void fn_1_4848(void) { } HuPrcVSleep(); } - BoardPlayerMotionShiftSet(temp_r30, 1, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(temp_r30, 1, 0.0f, 5.0f, HU3D_MOTATTR_NONE); BoardModelPosGet(lbl_1_bss_FA, &sp14); temp_f28 = VECDistanceXZ(&sp20, &sp14); if (temp_f28 > 200.0f) { @@ -981,7 +985,8 @@ block_A: HuPrcEnd(); } -static void fn_1_5018(void) { +static void fn_1_5018(void) +{ Vec sp18; Vec spC; float var_f29; @@ -995,13 +1000,14 @@ static void fn_1_5018(void) { if (var_f29 < 900.0f && lbl_1_bss_B2[lbl_1_bss_BA[i]] == 0) { temp_r3 = HuPrcChildCreate(fn_1_4848, 0x2003, 0x2000, 0, boardMainProc); lbl_1_bss_D4[lbl_1_bss_BA[i]] = temp_r3; - temp_r3->user_data = (u8*) lbl_1_bss_BA[i]; + temp_r3->user_data = (u8 *)lbl_1_bss_BA[i]; lbl_1_bss_B2[lbl_1_bss_BA[i]] = 1; } } } -static void fn_1_52A0(s16 arg0, Vec *arg1) { +static void fn_1_52A0(s16 arg0, Vec *arg1) +{ Vec sp40[4]; Vec sp10[4]; BssE4Data *var_r30; @@ -1060,11 +1066,13 @@ static void fn_1_52A0(s16 arg0, Vec *arg1) { BoardSpacePosGet(0, lbl_1_bss_B0, &arg1[GWSystem.player_curr]); } -static void fn_1_55A0(void) { +static void fn_1_55A0(void) +{ lbl_1_bss_48 = NULL; } -void fn_1_55B4(void) { +void fn_1_55B4(void) +{ s32 sp8; sp8 = GWSystem.player_curr; @@ -1075,7 +1083,8 @@ void fn_1_55B4(void) { } } -static void fn_1_5648(void) { +static void fn_1_5648(void) +{ ParticleData *var_r30; s32 i; @@ -1087,13 +1096,14 @@ static void fn_1_5648(void) { Hu3DParticleScaleSet(lbl_1_bss_C4[i]->model[0], 5.0f); Hu3DParticleHookSet(lbl_1_bss_C4[i]->model[0], fn_1_5A2C); Hu3DParticleBlendModeSet(lbl_1_bss_C4[i]->model[0], 1); - Hu3DModelAttrSet(lbl_1_bss_C4[i]->model[0], 1); + Hu3DModelAttrSet(lbl_1_bss_C4[i]->model[0], HU3D_ATTR_DISPOFF); var_r30 = Hu3DData[lbl_1_bss_C4[i]->model[0]].unk_120; var_r30->unk_1C = lbl_1_bss_C4[i]; } } -static void fn_1_5828(void) { +static void fn_1_5828(void) +{ s32 i; for (i = 0; i < 4; i++) { @@ -1102,7 +1112,8 @@ static void fn_1_5828(void) { } } -static s16 fn_1_58A4(Vec *arg0) { +static s16 fn_1_58A4(Vec *arg0) +{ s16 i; for (i = 0; i < 4; i++) { @@ -1117,22 +1128,25 @@ static s16 fn_1_58A4(Vec *arg0) { return -1; } -static void fn_1_5980(s16 arg0) { +static void fn_1_5980(s16 arg0) +{ lbl_1_bss_C4[arg0]->work[1] = 1; lbl_1_bss_C4[arg0]->work[2] = 0; } -static void fn_1_59C4(omObjData *arg0) { +static void fn_1_59C4(omObjData *arg0) +{ if (arg0->work[0] != 0) { - Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); } if (arg0->work[2] != 0) { arg0->work[0] = 0; - Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); } } -static void fn_1_5A2C(ModelData *model, ParticleData *particle, Mtx matrix) { +static void fn_1_5A2C(ModelData *model, ParticleData *particle, Mtx matrix) +{ s32 var_r26; s32 i; s32 j; @@ -1188,7 +1202,8 @@ static void fn_1_5A2C(ModelData *model, ParticleData *particle, Mtx matrix) { if (var_r31->unk08.z <= 0.0f) { var_r31->unk08.z = 0.0f; } - } else { + } + else { var_r26++; } } diff --git a/src/REL/w04Dll/bridge.c b/src/REL/w04Dll/bridge.c index 8198e5e7..005223a4 100755 --- a/src/REL/w04Dll/bridge.c +++ b/src/REL/w04Dll/bridge.c @@ -122,7 +122,7 @@ void fn_1_1618(void) { BoardWinWait(); BoardWinKill(); } - BoardPlayerMotionShiftSet(temp_r31, 1, 0.0f, 10.0f, 0x40000001); + BoardPlayerMotionShiftSet(temp_r31, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardCameraViewSet(1); BoardCameraMotionWait(); BoardRollDispSet(1); @@ -262,8 +262,8 @@ static void fn_1_1E60(void) { while (TRUE) { BoardSpacePosGet(0, var_r29, &sp14); BoardSpacePosGet(0, var_r28, &sp8); - PSVECSubtract(&sp8, &sp14, &sp20); - PSVECScale(&sp20, &sp20, 0.008333334f); + VECSubtract(&sp8, &sp14, &sp20); + VECScale(&sp20, &sp20, 0.008333334f); temp_f31 = atan2d(sp8.x - sp14.x, sp8.z - sp14.z); BoardModelPosGet(temp_r31[1], &sp14); while (fn_1_1130(temp_r31[1], temp_f31, 2.5f) == 0) { @@ -280,7 +280,7 @@ static void fn_1_1E60(void) { } else { BoardModelAlphaSet(temp_r31[1], 0); } - PSVECAdd(&sp14, &sp20, &sp14); + VECAdd(&sp14, &sp20, &sp14); BoardModelPosSetV(temp_r31[1], &sp14); HuPrcVSleep(); } diff --git a/src/REL/w04Dll/mg_coin.c b/src/REL/w04Dll/mg_coin.c index 4be845b4..72baaaff 100755 --- a/src/REL/w04Dll/mg_coin.c +++ b/src/REL/w04Dll/mg_coin.c @@ -137,11 +137,11 @@ void fn_1_C7D4(void) { BoardModelPosGet(lbl_1_bss_14[9], &sp8); sp14 = sp8; sp14.x = sp2C.x; - PSVECSubtract(&sp14, &sp8, &sp38); - PSVECScale(&sp38, &sp38, 0.022727273f); + VECSubtract(&sp14, &sp8, &sp38); + VECScale(&sp38, &sp38, 0.022727273f); for (i = 0; i < 44; i++) { BoardModelPosGet(lbl_1_bss_14[9], &sp8); - PSVECAdd(&sp8, &sp38, &sp8); + VECAdd(&sp8, &sp38, &sp8); BoardModelPosSetV(lbl_1_bss_14[9], &sp8); HuPrcVSleep(); } @@ -156,20 +156,20 @@ void fn_1_C7D4(void) { while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) { HuPrcVSleep(); } - BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); var_f31 = 0.0f; temp_f30 = 8.0f; - PSVECSubtract(&sp2C, &sp20, &sp38); - PSVECScale(&sp38, &sp38, 0.05f); + VECSubtract(&sp2C, &sp20, &sp38); + VECScale(&sp38, &sp38, 0.05f); while (TRUE) { BoardPlayerPosGet(lbl_1_bss_324, &sp20); sp38.y = temp_f30 - var_f31 * var_f31 * 0.25f * 0.075f; var_f31 += 1.0f; - PSVECAdd(&sp38, &sp20, &sp20); + VECAdd(&sp38, &sp20, &sp20); sp14 = sp2C; sp14.y = sp20.y; - PSVECSubtract(&sp14, &sp20, &sp14); - var_f29 = PSVECMag(&sp14); + VECSubtract(&sp14, &sp20, &sp14); + var_f29 = VECMag(&sp14); if (var_f29 <= 1.0f) { sp38.x = sp38.z = 0.0f; sp20.x = sp2C.x; @@ -235,7 +235,7 @@ static void fn_1_D0DC(void) { } static void fn_1_D174(omObjData *arg0) { - UnkMsmStruct_03 sp8; + MSM_MUSPARAM musParam; if (arg0->work[0] == 0) { arg0->work[0] = MGSeqCreate(3, 0); @@ -243,11 +243,11 @@ static void fn_1_D174(omObjData *arg0) { return; } if (MGSeqStatGet(arg0->work[0]) == 0) { - sp8.unk00 = 1; - sp8.unk06 = 0; - sp8.unk05 = 0x7F; - sp8.unk04 = 1; - lbl_1_data_588 = msmMusPlay(0x1D, &sp8); + musParam.flag = MSM_MUSPARAM_CHAN; + musParam.fadeSpeed = 0; + musParam.vol = 0x7F; + musParam.chan = 1; + lbl_1_data_588 = msmMusPlay(0x1D, &musParam); arg0->func = fn_1_D230; } } @@ -273,7 +273,7 @@ static void fn_1_D2A4(omObjData *arg0) { sp8 = BoardModelRotYGet(lbl_1_bss_14[9]); BoardModelPosGet(lbl_1_bss_14[9], &spC); if (arg0->scale.x != 0.0f) { - arg0->scale.x -= 8.5f; + arg0->scale.x -= 510.0f/REFRESH_RATE; if (arg0->scale.x < 0.0f) { arg0->scale.x = 0.0f; } @@ -294,7 +294,7 @@ static void fn_1_D2A4(omObjData *arg0) { Hu3DMotionExec(BoardModelIDGet(lbl_1_bss_2F8), temp_r30->unk_08, temp_r30->unk_64, 0); } lbl_1_bss_31C->work[0] = 60; - lbl_1_bss_31C->unk10 = frandmod(40) + 10; + lbl_1_bss_31C->unk10 = frandmod((REFRESH_RATE*2)/3) + (REFRESH_RATE/6); lbl_1_bss_31C->work[1] = arg0->work[1]; lbl_1_bss_31C->func = fn_1_E18C; } @@ -304,7 +304,7 @@ static void fn_1_D554(omObjData *arg0) { float sp8; sp8 = BoardModelRotYGet(lbl_1_bss_14[9]); - arg0->scale.x += 8.5f; + arg0->scale.x += 510.0f/REFRESH_RATE; if (arg0->scale.x > 255.0f) { arg0->scale.x = 255.0f; } @@ -411,7 +411,7 @@ static void fn_1_D770(void) { var_f31 = -20.0f; } if (var_r29 == lbl_1_bss_314) { - BoardPlayerMotionShiftSet(lbl_1_bss_324, 7, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_324, 7, 0.0f, 10.0f, HU3D_MOTATTR_NONE); break; } HuPrcVSleep(); @@ -424,22 +424,22 @@ static void fn_1_D770(void) { BoardWinKill(); temp_r3 = HuPrcCreate(fn_1_E004, 0x2004, 0x1000, 0); temp_r3->user_data = NULL; - BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); var_f30 = 0.0f; temp_f29 = 8.0f; lbl_1_bss_308.z = sp18.z + 100.0f; lbl_1_bss_308.x = sp18.x + 50.0f; - PSVECSubtract(&lbl_1_bss_308, &sp18, &spC); - PSVECScale(&spC, &spC, 0.04f); + VECSubtract(&lbl_1_bss_308, &sp18, &spC); + VECScale(&spC, &spC, 0.04f); while (TRUE) { BoardPlayerPosGet(lbl_1_bss_324, &sp18); spC.y = temp_f29 - var_f30 * var_f30 * 0.25f * 0.075f; var_f30 += 1.0f; - PSVECAdd(&spC, &sp18, &sp18); + VECAdd(&spC, &sp18, &sp18); sp114[0] = lbl_1_bss_308; sp114[0].y = sp18.y; - PSVECSubtract(&sp114[0], &sp18, &sp114[0]); - var_f31 = PSVECMag(&sp114[0]); + VECSubtract(&sp114[0], &sp18, &sp114[0]); + var_f31 = VECMag(&sp114[0]); if (var_f31 <= 1.0f) { spC.x = spC.z = 0.0f; sp18.x = lbl_1_bss_308.x; @@ -472,11 +472,11 @@ static void fn_1_E004(void) { HuPrcVSleep(); } BoardModelPosGet(lbl_1_bss_14[9], &sp14); - PSVECSubtract(&lbl_1_bss_2FC, &sp14, &sp8); - PSVECScale(&sp8, &sp8, 0.1f); + VECSubtract(&lbl_1_bss_2FC, &sp14, &sp8); + VECScale(&sp8, &sp8, 0.1f); for (i = 0; i < 10; i++) { BoardModelPosGet(lbl_1_bss_14[9], &sp14); - PSVECAdd(&sp14, &sp8, &sp14); + VECAdd(&sp14, &sp8, &sp14); BoardModelPosSetV(lbl_1_bss_14[9], &sp14); HuPrcVSleep(); } @@ -540,8 +540,8 @@ static void fn_1_E374(omObjData *arg0) { if (temp_r3 >= 30 && temp_r3 <= 39) { Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp14); BoardPlayerPosGet(lbl_1_bss_324, &sp20); - PSVECSubtract(&sp14, &sp20, &sp8); - PSVECScale(&sp8, &sp8, 0.04f); + VECSubtract(&sp14, &sp20, &sp8); + VECScale(&sp8, &sp8, 0.04f); arg0->trans.x = sp8.x; arg0->trans.z = sp8.z; arg0->trans.y = 5.0f; @@ -549,7 +549,7 @@ static void fn_1_E374(omObjData *arg0) { arg0->scale.x = sp14.x; arg0->scale.y = sp14.y; arg0->scale.z = sp14.z; - BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); arg0->func = fn_1_E4C0; } } @@ -567,13 +567,13 @@ static void fn_1_E4C0(omObjData *arg0) { sp14.z = arg0->scale.z; sp20.x = arg0->trans.x; sp20.z = arg0->trans.z; - sp20.y = arg0->trans.y - arg0->rot.x * arg0->rot.x * 0.25f * 0.075f; + sp20.y = arg0->trans.y - arg0->rot.x * arg0->rot.x * 0.25f * ((VERSION_PAL) ? 0.1125f : 0.075f); arg0->rot.x += 1.0f; - PSVECAdd(&sp2C, &sp20, &sp2C); + VECAdd(&sp2C, &sp20, &sp2C); sp8 = sp2C; sp8.y = sp14.y; - PSVECSubtract(&sp14, &sp8, &sp8); - var_f31 = PSVECMag(&sp8); + VECSubtract(&sp14, &sp8, &sp8); + var_f31 = VECMag(&sp8); if (var_f31 <= 1.0f) { arg0->trans.x = arg0->trans.z = 0.0f; sp2C.x = sp14.x; diff --git a/src/REL/w04Dll/mg_item.c b/src/REL/w04Dll/mg_item.c index 342d8f5c..cbda9008 100755 --- a/src/REL/w04Dll/mg_item.c +++ b/src/REL/w04Dll/mg_item.c @@ -45,21 +45,27 @@ static s32 lbl_1_data_534[] = { 0x00000468 }; +#if VERSION_JP +#define MDL_ID_SHIFT 0 +#else +#define MDL_ID_SHIFT 1 +#endif + static s32 lbl_1_data_540[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 109), - DATA_MAKE_NUM(DATADIR_BOARD, 110), - DATA_MAKE_NUM(DATADIR_BOARD, 111), - DATA_MAKE_NUM(DATADIR_BOARD, 112), - DATA_MAKE_NUM(DATADIR_BOARD, 113), - DATA_MAKE_NUM(DATADIR_BOARD, 114), - DATA_MAKE_NUM(DATADIR_BOARD, 115), - DATA_MAKE_NUM(DATADIR_BOARD, 116), - DATA_MAKE_NUM(DATADIR_BOARD, 118), - DATA_MAKE_NUM(DATADIR_BOARD, 119), - DATA_MAKE_NUM(DATADIR_BOARD, 120), - DATA_MAKE_NUM(DATADIR_BOARD, 121), - DATA_MAKE_NUM(DATADIR_BOARD, 122), - DATA_MAKE_NUM(DATADIR_BOARD, 123), + DATA_MAKE_NUM(DATADIR_BOARD, 108 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 109 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 110 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 111 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 112 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 113 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 114 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 115 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 117 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 118 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 119 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 120 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 121 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 122 + MDL_ID_SHIFT), DATA_MAKE_NUM(DATADIR_W02, 24), DATA_MAKE_NUM(DATADIR_W02, 25), DATA_MAKE_NUM(DATADIR_W02, 26), @@ -126,13 +132,13 @@ void fn_1_A1F0(void) { while (BoardModelMotionTimeGet(lbl_1_bss_14[10]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[10])) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_14[10], 1, 0.0f, 5.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_14[10], 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); BoardAudSeqPause(0, 1, 1000); BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f); BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002); - HuPrcSleep(20); + HuPrcSleep((REFRESH_RATE+2)/3); HuAudFXPlay(0x469); - HuPrcSleep(50); + HuPrcSleep(((REFRESH_RATE*5)+3)/6); BoardMusStart(1, 0x1E, 0x7F, 0); HuAudFXPlay(0x46C); while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < 202.0f) { @@ -299,18 +305,18 @@ static void fn_1_A7E8(void) { } BoardModelVisibilitySet(var_r28, 0); BoardPlayerPosGet(lbl_1_bss_2AC, &sp18); - BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); var_f30 = 0.0f; var_f29 = 12.0f; sp3C = sp54[var_r30]; BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); - PSVECSubtract(&sp3C, &sp30, &sp3C); - PSVECScale(&sp3C, &sp3C, 0.05f); + VECSubtract(&sp3C, &sp30, &sp3C); + VECScale(&sp3C, &sp3C, 0.05f); while (TRUE) { BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); sp3C.y = var_f29 - var_f30 * var_f30 * 0.25f * 0.075f; var_f30 += 1.0f; - PSVECAdd(&sp3C, &sp30, &sp30); + VECAdd(&sp3C, &sp30, &sp30); if (sp30.y <= sp54[var_r30].y - 40.0f && sp3C.y < 0.0f) { sp30.y = sp54[var_r30].y - 40.0f; break; @@ -318,8 +324,8 @@ static void fn_1_A7E8(void) { BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); sp48 = sp54[var_r30]; sp48.y = sp30.y = 0.0f; - PSVECSubtract(&sp48, &sp30, &sp30); - var_f31 = PSVECMag(&sp30); + VECSubtract(&sp48, &sp30, &sp30); + var_f31 = VECMag(&sp30); if (var_f31 <= 1.0f) { sp3C.x = sp3C.z = 0.0f; } @@ -330,7 +336,7 @@ static void fn_1_A7E8(void) { BoardModelMotionTimeSet(lbl_1_bss_29E[var_r30], 0.0f); BoardModelAttrReset(lbl_1_bss_29E[var_r30], 0x40000002); BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); - BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, 0x40000001); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); while (BoardModelMotionTimeGet(lbl_1_bss_29E[var_r30]) < BoardModelMotionMaxTimeGet(lbl_1_bss_29E[var_r30])) { if (BoardModelMotionTimeGet(lbl_1_bss_29E[var_r30]) >= 13.0f) { BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); @@ -349,7 +355,7 @@ static void fn_1_A7E8(void) { } BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[1], lbl_1_bss_298[temp_r29]); BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002); - HuPrcSleep(30); + HuPrcSleep(REFRESH_RATE/2); HuAudFXPlay(0x310); while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[6])) { HuPrcVSleep(); @@ -375,17 +381,17 @@ static void fn_1_A7E8(void) { while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) { HuPrcVSleep(); } - BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); var_f30 = 0.0f; var_f29 = 12.0f; BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); - PSVECSubtract(&sp18, &sp30, &sp3C); - PSVECScale(&sp3C, &sp3C, 0.05f); + VECSubtract(&sp18, &sp30, &sp3C); + VECScale(&sp3C, &sp3C, 0.05f); while (TRUE) { BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); sp3C.y = var_f29 - var_f30 * var_f30 * 0.25f * 0.075f; var_f30 += 1.0f; - PSVECAdd(&sp3C, &sp30, &sp30); + VECAdd(&sp3C, &sp30, &sp30); if (sp30.y < sp18.y) { sp30.y = sp18.y; break; @@ -393,8 +399,8 @@ static void fn_1_A7E8(void) { BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); sp48 = sp18; sp48.y = sp30.y = 0.0f; - PSVECSubtract(&sp48, &sp30, &sp30); - var_f31 = PSVECMag(&sp30); + VECSubtract(&sp48, &sp30, &sp30); + var_f31 = VECMag(&sp30); if (var_f31 <= 1.0f) { sp3C.x = sp3C.z = 0.0f; } @@ -402,15 +408,15 @@ static void fn_1_A7E8(void) { } omVibrate(lbl_1_bss_2AC, 12, 6, 6); BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); - BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, 0x40000001); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24); sp3C = sp24; sp3C.z += 100.0f; - PSVECSubtract(&sp3C, &sp24, &sp3C); - PSVECScale(&sp3C, &sp3C, 0.033333335f); + VECSubtract(&sp3C, &sp24, &sp3C); + VECScale(&sp3C, &sp3C, 0.033333335f); for (i = 0; i < 30; i++) { BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24); - PSVECAdd(&sp24, &sp3C, &sp24); + VECAdd(&sp24, &sp3C, &sp24); BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24); HuPrcVSleep(); } @@ -460,7 +466,7 @@ static void fn_1_A7E8(void) { BoardPlayerItemAdd(lbl_1_bss_2AC, lbl_1_bss_2A6[temp_r29]); omVibrate(lbl_1_bss_2AC, 12, 6, 6); sp8 = HuAudSStreamPlay(2); - BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 7, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 7, 0.0f, 5.0f, HU3D_MOTATTR_NONE); while (!BoardPlayerMotionEndCheck(lbl_1_bss_2AC)) { HuPrcVSleep(); } @@ -471,7 +477,7 @@ static void fn_1_A7E8(void) { HuPrcVSleep(); } BoardModelRotYSet(lbl_1_bss_14[10], 0.0f); - HuPrcSleep(30); + HuPrcSleep(REFRESH_RATE/2); while (HuAudSStreamStatGet(sp8) != 0) { HuPrcVSleep(); } @@ -538,8 +544,8 @@ void fn_1_BB00(s16 *arg0) { BoardModelPosGet(lbl_1_bss_14[10], &sp24); BoardModelPosSetV(lbl_1_bss_298[i], &sp24); BoardModelScaleSetV(lbl_1_bss_298[i], &sp18); - PSVECSubtract(&sp54[i], &sp24, &sp30[i]); - PSVECNormalize(&sp30[i], &sp30[i]); + VECSubtract(&sp54[i], &sp24, &sp30[i]); + VECNormalize(&sp30[i], &sp30[i]); spC[i] = 0.0f; } sp30[0].y = 16.0f; diff --git a/src/REL/w05Dll/dolphin.c b/src/REL/w05Dll/dolphin.c index 8115c637..46cc5a9e 100644 --- a/src/REL/w05Dll/dolphin.c +++ b/src/REL/w05Dll/dolphin.c @@ -1,15 +1,17 @@ #include "REL/w05Dll.h" -#include "game/hsfdraw.h" #include "game/audio.h" -#include "game/objsub.h" -#include "game/frand.h" #include "game/chrman.h" +#include "game/frand.h" +#include "game/hsfdraw.h" +#include "game/objsub.h" +#include "game/board/audio.h" #include "game/board/model.h" #include "game/board/player.h" #include "game/board/window.h" -#include "game/board/audio.h" + +#include "ext_math.h" // bss s16 lbl_1_bss_72[2]; @@ -20,44 +22,60 @@ s16 lbl_1_bss_58[6]; // data char *lbl_1_data_22C[6] = { "orange1", "orange2", "pine2", "pine1", "suika1", "suika2" }; -s32 lbl_1_data_244[6] = { 0x00790027, 0x00790028, 0x00790029, 0x0079002A, 0x0079002B, 0xFFFFFFFF }; +s32 lbl_1_data_244[6] = { + DATA_MAKE_NUM(DATADIR_W05, 0x27), + DATA_MAKE_NUM(DATADIR_W05, 0x28), + DATA_MAKE_NUM(DATADIR_W05, 0x29), + DATA_MAKE_NUM(DATADIR_W05, 0x2A), + DATA_MAKE_NUM(DATADIR_W05, 0x2B), + DATA_NUM_LISTEND, +}; Vec lbl_1_data_25C[6] = { - { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, { 0.0f, 90.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 180.0f, 0.0f }, - { 0.0f, 270.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 180.0f, 0.0f }, + { 0.0f, 270.0f, 0.0f }, { 0.0f, 90.0f, 0.0f }, }; Vec lbl_1_data_2A4[6] = { - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 300.0f, 0.0f }, - { 0.0f, 450.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 300.0f, 0.0f }, + { 0.0f, 450.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, }; s32 lbl_1_data_2EC[2] = { 0x76, 0x77 }; -s32 lbl_1_data_2F4[6] = { 0x0079002C, 0x0079002D, 0x0079002E, 0x0079002C, 0x0079002F, 0x00790030 }; +s32 lbl_1_data_2F4[6] = { + DATA_MAKE_NUM(DATADIR_W05, 0x2C), + DATA_MAKE_NUM(DATADIR_W05, 0x2D), + DATA_MAKE_NUM(DATADIR_W05, 0x2E), + DATA_MAKE_NUM(DATADIR_W05, 0x2C), + DATA_MAKE_NUM(DATADIR_W05, 0x2F), + DATA_MAKE_NUM(DATADIR_W05, 0x30), +}; -void fn_1_3F74(void) { +void fn_1_3F74(void) +{ s32 var_r31; BoardAudSeqPause(0, 1, 0x3E8); - + for (var_r31 = 0x3C; var_r31 != 0; var_r31--) { HuPrcVSleep(); } - + BoardMusStart(1, 0x24, 0x7F, 0); HuPrcEnd(); } -void fn_1_3FD8(void) { +void fn_1_3FD8(void) +{ s32 var_r31; BoardAudSeqFadeOut(1, 0x3E8); - + for (var_r31 = 0x3C; var_r31 != 0; var_r31--) { HuPrcVSleep(); } @@ -65,7 +83,8 @@ void fn_1_3FD8(void) { HuPrcEnd(); } -void fn_1_4034(s32 arg0) { +void fn_1_4034(s32 arg0) +{ Vec sp40; Vec sp34; Vec sp28; @@ -79,20 +98,20 @@ void fn_1_4034(s32 arg0) { s16 var_r30; s32 var_r27; BoardSpace *var_r25; - omObjData* temp_r24; + omObjData *temp_r24; BoardSpace *var_r28; s32 var_r31; s32 temp_r26; lbl_1_bss_68 = GWSystem.player_curr; sp10 = GWPlayer[lbl_1_bss_68].character; - + for (var_r31 = 0; var_r31 < 2; var_r31++) { lbl_1_bss_72[var_r31] = BoardPlayerMotionCreate(lbl_1_bss_68, lbl_1_data_2EC[var_r31] | lbl_1_data_124[GWPlayer[lbl_1_bss_68].character]); } - + for (var_r31 = 0; var_r31 < 3; var_r31++) { - lbl_1_bss_6C[var_r31] = BoardModelCreate(0x7000A, NULL, 1); + lbl_1_bss_6C[var_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 1); BoardModelAttrSet(lbl_1_bss_6C[var_r31], 0x40000001); BoardModelVisibilitySet(lbl_1_bss_6C[var_r31], 0); } @@ -118,15 +137,15 @@ void fn_1_4034(s32 arg0) { } BoardPlayerIdleSet(lbl_1_bss_68); HuPrcSleep(8); - lbl_1_bss_64 = BoardModelCreate(0x790026, lbl_1_data_244, 0); + lbl_1_bss_64 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x26), lbl_1_data_244, 0); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), lbl_1_data_22C[arg0], &sp40); - PSVECAdd(&sp40, &lbl_1_data_2A4[arg0], &sp40); + VECAdd(&sp40, &lbl_1_data_2A4[arg0], &sp40); BoardModelMotionStart(lbl_1_bss_64, 4, 0); sp40.y = -50.0f; BoardModelPosSetV(lbl_1_bss_64, &sp40); BoardModelRotSetV(lbl_1_bss_64, &lbl_1_data_25C[arg0]); fn_1_66C0(0, &sp40); - + var_r30 = 0; while (BoardModelMotionTimeGet(lbl_1_bss_64) < BoardModelMotionMaxTimeGet(lbl_1_bss_64)) { if (BoardModelMotionTimeGet(lbl_1_bss_64) > 50.0f && var_r30 == 0) { @@ -157,30 +176,31 @@ void fn_1_4034(s32 arg0) { } if ((arg0 & 1) != 0) { var_r27 = arg0 - 1; - } else { + } + else { var_r27 = arg0 + 1; } Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), lbl_1_data_22C[var_r27], &sp34); - temp_f25 = (180.0 * (atan2((sp34.x - sp40.x), (sp34.z - sp40.z)) / M_PI)); - BoardModelMotionShiftSet(lbl_1_bss_64, 2, 0.0f, 10.0f, 0x40000001); + temp_f25 = atan2d(sp34.x - sp40.x, sp34.z - sp40.z); + BoardModelMotionShiftSet(lbl_1_bss_64, 2, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); while (fn_1_1208(lbl_1_bss_64, temp_f25, 10.0f) == 0) { HuPrcVSleep(); } - + BoardPlayerPosGet(lbl_1_bss_68, &sp28); var_f27 = sqrtf(((sp40.x - sp28.x) * (sp40.x - sp28.x)) + ((sp40.z - sp28.z) * (sp40.z - sp28.z))); - PSVECSubtract(&sp40, &sp28, &sp1C); - PSVECNormalize(&sp1C, &sp1C); - PSVECScale(&sp1C, &sp1C, var_f27 / 50.0f); + VECSubtract(&sp40, &sp28, &sp1C); + VECNormalize(&sp1C, &sp1C); + VECScale(&sp1C, &sp1C, var_f27 / 50.0f); BoardPlayerMotionStart(lbl_1_bss_68, 4, 0); var_f26 = 0.0f; temp_f22 = 15.0f; - + loop_37: sp1C.y = temp_f22 - (0.075f * (0.25f * (var_f26 * var_f26))); var_f26++; - PSVECAdd(&sp28, &sp1C, &sp28); + VECAdd(&sp28, &sp1C, &sp28); var_f27 = sqrtf(((sp40.x - sp28.x) * (sp40.x - sp28.x)) + ((sp40.z - sp28.z) * (sp40.z - sp28.z))); if (var_f27 < 5.0f) { sp1C.x = sp1C.z = 0.0f; @@ -190,41 +210,43 @@ loop_37: if (sp28.y <= 20.0f + sp40.y) { sp28.y = 20.0f + sp40.y; - } else { + } + else { BoardPlayerPosSetV(lbl_1_bss_68, &sp28); HuPrcVSleep(); goto loop_37; } BoardPlayerPosSetV(lbl_1_bss_68, &sp28); BoardPlayerMotionStart(lbl_1_bss_68, lbl_1_bss_72[0], 0); - + while (fn_1_1208(BoardPlayerModelGet(lbl_1_bss_68), temp_f25, 10.0f) == 0) { HuPrcVSleep(); } - + while (BoardPlayerMotionEndCheck(lbl_1_bss_68) == 0) { HuPrcVSleep(); } - + BoardPlayerMotionStart(lbl_1_bss_68, lbl_1_bss_72[1], 0x40000001); HuPrcSleep(0x12); temp_r24->work[1] = 1; if (arg0 < 4) { fn_1_4EB4(arg0, temp_r26, &sp34); - } else { + } + else { fn_1_5794(arg0, temp_r26, &sp34); } BoardModelPosGet(lbl_1_bss_64, &sp40); BoardPlayerPosGet(lbl_1_bss_68, &sp28); - var_f27 = 180.0 * (atan2((sp40.x - sp28.x), (sp40.z - sp28.z)) / M_PI); + var_f27 = atan2d(sp40.x - sp28.x, sp40.z - sp28.z); BoardPlayerMotBlendSet(lbl_1_bss_68, var_f27, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) { HuPrcVSleep(); } - + fn_1_66C0(1, &sp40); - BoardModelMotionShiftSet(lbl_1_bss_64, 5, 0.0f, 5.0f, 0); + BoardModelMotionShiftSet(lbl_1_bss_64, 5, 0.0f, 5.0f, HU3D_MOTATTR_NONE); var_r30 = 0; var_r31 = 0; @@ -272,7 +294,7 @@ loop_37: for (var_r31 = 0; var_r31 < 2; var_r31++) { BoardPlayerMotionKill(lbl_1_bss_68, lbl_1_bss_72[var_r31]); } - + fn_1_6670(); for (var_r31 = 0; var_r31 < 3; var_r31++) { @@ -280,7 +302,8 @@ loop_37: } } -void fn_1_4EB4(s32 arg1, s32 arg2, Vec* arg3) { +void fn_1_4EB4(s32 arg1, s32 arg2, Vec *arg3) +{ Vec sp3C; Vec sp30; Vec sp24; @@ -291,16 +314,16 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec* arg3) { f32 var_f22; f32 var_f24; f32 var_f28; - omObjData* temp_r30; - omObjData* temp_r29; + omObjData *temp_r30; + omObjData *temp_r29; s32 temp_r28; temp_f23 = 10.0f; BoardModelPosGet(lbl_1_bss_64, &sp3C); arg3->y = sp3C.y; - PSVECSubtract(arg3, &sp3C, &sp24); - PSVECNormalize(&sp24, &sp24); - PSVECScale(&sp24, &sp24, temp_f23); + VECSubtract(arg3, &sp3C, &sp24); + VECNormalize(&sp24, &sp24); + VECScale(&sp24, &sp24, temp_f23); temp_r28 = HuAudFXPlay(0x47F); BoardModelPosGet(lbl_1_bss_64, &sp18); temp_r30 = fn_1_66C0(4, &sp18); @@ -315,8 +338,9 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec* arg3) { sp30.y += 20.0f; BoardPlayerPosSetV(lbl_1_bss_68, &sp30); break; - } else { - PSVECAdd(&sp3C, &sp24, &sp3C); + } + else { + VECAdd(&sp3C, &sp24, &sp3C); BoardModelPosSetV(lbl_1_bss_64, &sp3C); sp30 = sp3C; sp30.y += 20.0f; @@ -330,27 +354,27 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec* arg3) { BoardPlayerIdleSet(lbl_1_bss_68); HuPrcSleep(8); BoardSpacePosGet(0, arg2, &sp3C); - var_f28 = 180.0 * (atan2((sp3C.x - sp30.x), (sp3C.z - sp30.z)) / M_PI); + var_f28 = atan2d(sp3C.x - sp30.x, sp3C.z - sp30.z); BoardPlayerMotBlendSet(lbl_1_bss_68, var_f28, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) { HuPrcVSleep(); } - + BoardPlayerPosGet(lbl_1_bss_68, &sp30); var_f28 = sqrtf(((sp3C.x - sp30.x) * (sp3C.x - sp30.x)) + ((sp3C.z - sp30.z) * (sp3C.z - sp30.z))); - PSVECSubtract(&sp3C, &sp30, &sp24); - PSVECNormalize(&sp24, &sp24); - PSVECScale(&sp24, &sp24, var_f28 / 45.0f); + VECSubtract(&sp3C, &sp30, &sp24); + VECNormalize(&sp24, &sp24); + VECScale(&sp24, &sp24, var_f28 / 45.0f); BoardPlayerMotionStart(lbl_1_bss_68, 4, 0); - + var_f24 = 0.0f; temp_f19 = 15.0f; - + while (1) { sp24.y = temp_f19 - (0.075f * (0.25f * (var_f24 * var_f24))); var_f24++; - PSVECAdd(&sp30, &sp24, &sp30); + VECAdd(&sp30, &sp24, &sp30); var_f28 = sqrtf(((sp3C.x - sp30.x) * (sp3C.x - sp30.x)) + ((sp3C.z - sp30.z) * (sp3C.z - sp30.z))); if (var_f28 < 5.0f) { sp24.x = sp24.z = 0.0f; @@ -359,7 +383,8 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec* arg3) { } if (sp30.y <= sp3C.y && sp24.y < 0.0f) { sp30.y = sp3C.y; - } else { + } + else { BoardPlayerPosSetV(lbl_1_bss_68, &sp30); HuPrcVSleep(); continue; @@ -369,7 +394,8 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec* arg3) { } } -void fn_1_5648(void) { +void fn_1_5648(void) +{ Vec sp8; s32 var_r31; @@ -391,7 +417,8 @@ void fn_1_5648(void) { } } -void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { +void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2) +{ Vec sp64; Vec sp58; Vec sp4C; @@ -400,16 +427,16 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { Vec sp28; Vec sp1C; f32 sp18; - Process* temp_r23; + Process *temp_r23; f32 temp_f18; f32 temp_f22; f32 var_f27; f32 var_f23; f32 var_f28; - omObjData* temp_r27; - omObjData* var_r26; - omObjData* temp_r25; - omObjData* var_r24; + omObjData *temp_r27; + omObjData *var_r26; + omObjData *temp_r25; + omObjData *var_r24; s32 var_r28; s32 var_r29; s32 var_r30; @@ -424,12 +451,13 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { fn_1_62AC(arg0, arg2); temp_f22 = 10.0f; arg2->y = sp58.y; - PSVECSubtract(arg2, &sp58, &sp40); - PSVECNormalize(&sp40, &sp40); - PSVECScale(&sp40, &sp40, temp_f22); + VECSubtract(arg2, &sp58, &sp40); + VECNormalize(&sp40, &sp40); + VECScale(&sp40, &sp40, temp_f22); if (arg0 == 5) { var_r29 = 0x96; - } else { + } + else { var_r29 = 0x5A; } var_f28 = 0.0f; @@ -442,7 +470,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { BoardModelPosGet(lbl_1_bss_64, &sp1C); temp_r27 = fn_1_66C0(4, &sp1C); temp_r25 = fn_1_66C0(5, &sp1C); - + while (1) { sp18 = BoardModelRotYGet(lbl_1_bss_64); sp58 = sp64; @@ -455,11 +483,12 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { sp4C.y += 20.0f; BoardPlayerPosSetV(lbl_1_bss_68, &sp4C); break; - } else { - PSVECAdd(&sp58, &sp40, &sp58); + } + else { + VECAdd(&sp58, &sp40, &sp58); sp64 = sp58; if (var_r29 == 0) { - sp58.y += 250.0 * sin((M_PI * var_f28) / 180.0); + sp58.y += 250.0 * sind(var_f28); var_f28 -= 2.5f; if (var_f28 < -540.0f) { var_f28 = -540.0f; @@ -469,28 +498,32 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { temp_r27->work[1] = 1; temp_r25->work[1] = 1; var_r30++; - } else if (var_r30 == 1 && var_f28 < -180.0f) { - HuAudFXStop(var_r28); - HuAudFXPlay(0x47D); - HuAudPlayerVoicePlay(lbl_1_bss_68, 0x125); - fn_1_66C0(3, &sp58); - var_r30++; - } else if ((var_r30 == 2) && (var_f28 < -360.0f)) { - var_r28 = HuAudFXPlay(0x47F); - HuAudFXPlay(0x481); - fn_1_66C0(3, &sp58); - var_r30++; - } else if ((var_r30 == 3) && (-540.0f == var_f28)) { + } + else if (var_r30 == 1 && var_f28 < -180.0f) { + HuAudFXStop(var_r28); + HuAudFXPlay(0x47D); + HuAudPlayerVoicePlay(lbl_1_bss_68, 0x125); + fn_1_66C0(3, &sp58); + var_r30++; + } + else if ((var_r30 == 2) && (var_f28 < -360.0f)) { + var_r28 = HuAudFXPlay(0x47F); + HuAudFXPlay(0x481); + fn_1_66C0(3, &sp58); + var_r30++; + } + else if ((var_r30 == 3) && (-540.0f == var_f28)) { var_r30++; BoardModelPosGet(lbl_1_bss_64, &sp1C); var_r26 = fn_1_66C0(4, &sp1C); var_r24 = fn_1_66C0(5, &sp1C); } - } else { + } + else { var_r29--; } BoardModelPosSetV(lbl_1_bss_64, &sp58); - sp28.x = sp34.x = (45.0 * -sin((M_PI * var_f28) / 180.0)); + sp28.x = sp34.x = 45.0 * -sind(var_f28); BoardModelRotSetV(lbl_1_bss_64, &sp34); BoardPlayerRotSetV(lbl_1_bss_68, &sp28); sp4C = sp58; @@ -509,7 +542,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { BoardPlayerIdleSet(lbl_1_bss_68); HuPrcSleep(8); BoardSpacePosGet(0, arg1, &sp58); - var_f27 = (180.0 * (atan2((sp58.x - sp4C.x), (sp58.z - sp4C.z)) / M_PI)); + var_f27 = atan2d(sp58.x - sp4C.x, sp58.z - sp4C.z); BoardPlayerMotBlendSet(lbl_1_bss_68, var_f27, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) { @@ -517,16 +550,16 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { } BoardPlayerPosGet(lbl_1_bss_68, &sp4C); var_f27 = sqrtf(((sp58.x - sp4C.x) * (sp58.x - sp4C.x)) + ((sp58.z - sp4C.z) * (sp58.z - sp4C.z))); - PSVECSubtract(&sp58, &sp4C, &sp40); - PSVECNormalize(&sp40, &sp40); - PSVECScale(&sp40, &sp40, var_f27 / 45.0f); + VECSubtract(&sp58, &sp4C, &sp40); + VECNormalize(&sp40, &sp40); + VECScale(&sp40, &sp40, var_f27 / 45.0f); BoardPlayerMotionStart(lbl_1_bss_68, 4, 0); var_f23 = 0.0f; temp_f18 = 15.0f; while (1) { sp40.y = temp_f18 - (0.075f * (0.25f * (var_f23 * var_f23))); var_f23++; - PSVECAdd(&sp4C, &sp40, &sp4C); + VECAdd(&sp4C, &sp40, &sp4C); var_f27 = sqrtf(((sp58.x - sp4C.x) * (sp58.x - sp4C.x)) + ((sp58.z - sp4C.z) * (sp58.z - sp4C.z))); if (var_f27 < 5.0f) { sp40.x = sp40.z = 0.0f; @@ -536,7 +569,8 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { if (sp4C.y <= sp58.y && sp40.y < 0.0f) { sp4C.y = sp58.y; break; - } else { + } + else { BoardPlayerPosSetV(lbl_1_bss_68, &sp4C); HuPrcVSleep(); } @@ -545,7 +579,8 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec* arg2) { HuPrcKill(temp_r23); } -void fn_1_62AC(s32 arg0, Vec* arg1) { +void fn_1_62AC(s32 arg0, Vec *arg1) +{ Vec sp34; Vec sp28; Vec sp1C; @@ -558,19 +593,19 @@ void fn_1_62AC(s32 arg0, Vec* arg1) { BoardModelPosGet(lbl_1_bss_64, &sp34); arg0 -= 4; arg1->y = sp34.y; - PSVECSubtract(arg1, &sp34, &sp28); - PSVECNormalize(&sp28, &sp28); + VECSubtract(arg1, &sp34, &sp28); + VECNormalize(&sp28, &sp28); var_f31 = 45.0f; var_r31 = 0; while (var_r31 < 3) { sp1C = sp28; sp10 = sp28; - PSVECScale(&sp1C, &sp1C, sp8[arg0]); - sp1C.y += (250.0 * sin((M_PI * var_f31) / 180.0)); - var_f30 = (250.0 * -cos((M_PI * var_f31) / 180.0)); - PSVECScale(&sp10, &sp10, var_f30); - PSVECAdd(&sp10, &sp1C, &sp1C); - PSVECAdd(&sp1C, &sp34, &sp1C); + VECScale(&sp1C, &sp1C, sp8[arg0]); + sp1C.y += 250.0 * sind(var_f31); + var_f30 = 250.0 * -cosd(var_f31); + VECScale(&sp10, &sp10, var_f30); + VECAdd(&sp10, &sp1C, &sp1C); + VECAdd(&sp1C, &sp34, &sp1C); BoardModelPosSetV(lbl_1_bss_6C[var_r31], &sp1C); BoardModelVisibilitySet(lbl_1_bss_6C[var_r31], 1); var_f31 += 45.0f; @@ -578,7 +613,8 @@ void fn_1_62AC(s32 arg0, Vec* arg1) { } } -void fn_1_64BC(void) { +void fn_1_64BC(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -589,8 +625,8 @@ void fn_1_64BC(void) { for (var_r31 = 0; var_r31 < 3; var_r31++) { if (BoardModelVisibilityGet(lbl_1_bss_6C[var_r31]) != 0) { BoardModelPosGet(lbl_1_bss_6C[var_r31], &sp14); - PSVECSubtract(&sp14, &sp20, &sp8); - var_f31 = PSVECMag(&sp8); + VECSubtract(&sp14, &sp20, &sp8); + var_f31 = VECMag(&sp8); if (var_f31 < 60.0f) { CharModelCoinEffectCreate(1, &sp14); BoardModelVisibilitySet(lbl_1_bss_6C[var_r31], 0); @@ -602,7 +638,8 @@ void fn_1_64BC(void) { } } -void fn_1_65E8(void) { +void fn_1_65E8(void) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 6; var_r31++) { @@ -611,7 +648,8 @@ void fn_1_65E8(void) { } } -void fn_1_6670(void) { +void fn_1_6670(void) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 6; var_r31++) { @@ -619,9 +657,10 @@ void fn_1_6670(void) { } } -omObjData* fn_1_66C0(u32 arg0, Vec* arg1) { +omObjData *fn_1_66C0(u32 arg0, Vec *arg1) +{ Vec sp8; - omObjData* temp_r31; + omObjData *temp_r31; f32 temp_f31; temp_r31 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_6914); @@ -665,7 +704,8 @@ omObjData* fn_1_66C0(u32 arg0, Vec* arg1) { return temp_r31; } -void fn_1_6914(omObjData* arg0) { +void fn_1_6914(omObjData *arg0) +{ Vec sp8; if (arg0->work[1] != 0) { @@ -680,7 +720,8 @@ void fn_1_6914(omObjData* arg0) { BoardModelKill(arg0->work[0]); omDelObjEx(boardObjMan, arg0); } - } else { + } + else { switch (arg0->work[2]) { case 0: case 1: diff --git a/src/REL/w05Dll/hotel.c b/src/REL/w05Dll/hotel.c index 73256443..bebb63c7 100644 --- a/src/REL/w05Dll/hotel.c +++ b/src/REL/w05Dll/hotel.c @@ -10,9 +10,12 @@ #include "game/board/player.h" #include "game/board/window.h" +#include "ext_math.h" + // data s32 lbl_1_data_150[5] = { - 0x790021, 0x790022, 0x790023, 0x790024, 0x790025, + DATA_MAKE_NUM(DATADIR_W05, 0x21), DATA_MAKE_NUM(DATADIR_W05, 0x22), DATA_MAKE_NUM(DATADIR_W05, 0x23), + DATA_MAKE_NUM(DATADIR_W05, 0x24), DATA_MAKE_NUM(DATADIR_W05, 0x25), }; s16 lbl_1_data_164 = 0xFFFF; @@ -36,7 +39,7 @@ void fn_1_14D0(void) { } u32 lbl_1_data_170[4] = { 0, 10, 25, 40 }; -s32 lbl_1_data_180 = 0x79000C; +s32 lbl_1_data_180 = DATA_MAKE_NUM(DATADIR_W05, 0x0C); s16 fn_1_14FC(void) { s16 var_r31; @@ -74,7 +77,7 @@ void fn_1_155C(void) { temp_f30 = BoardPlayerRotYGet(lbl_1_bss_28); BoardPlayerPosGet(lbl_1_bss_28, &sp58); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), "hotel1", &sp64); - temp_f31 = 180.0 * (atan2((sp64.x - sp58.x), (sp64.z - sp58.z)) / M_PI); + temp_f31 = atan2d(sp64.x - sp58.x, sp64.z - sp58.z); BoardPlayerMotBlendSet(lbl_1_bss_28, temp_f31, 0xF); BoardCameraViewSet(2); @@ -93,29 +96,29 @@ void fn_1_155C(void) { BoardModelRotYSet(lbl_1_bss_14[4], -90.0f); } BoardModelMotionStart(lbl_1_bss_14[4], temp_r28, 0x40000001); - PSVECSubtract(&sp28, &sp40, &sp34); - PSVECScale(&sp34, &sp34, 0.018518519f); + VECSubtract(&sp28, &sp40, &sp34); + VECScale(&sp34, &sp34, 0.018518519f); for (var_r31 = 0; var_r31 < 0x36; var_r31++) { - PSVECAdd(&sp40, &sp34, &sp40); + VECAdd(&sp40, &sp34, &sp40); BoardModelPosSetV(lbl_1_bss_14[4], &sp40); HuPrcVSleep(); } BoardModelPosSetV(lbl_1_bss_14[4], &sp28); - temp_f31 = (180.0 * (atan2((sp58.x - sp28.x), (sp58.z - sp28.z)) / M_PI)); + temp_f31 = atan2d(sp58.x - sp28.x, sp58.z - sp28.z); while (fn_1_1208(lbl_1_bss_14[4], temp_f31, 10.0f) == 0) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); var_r30 = BoardPlayerCoinsGet(lbl_1_bss_28); sprintf(sp18, "%d", lbl_1_bss_0->unk_00); if (var_r30 > 0) { if (var_r30 >= 5) { - var_r27 = 0x270001; + var_r27 = MAKE_MESSID(0x27, 0x01); var_r30 = 5; } else { - var_r27 = 0x270002; + var_r27 = MAKE_MESSID(0x27, 0x02); } sprintf(sp8, "%d", var_r30); BoardWinCreate(2, var_r27, 7); @@ -174,11 +177,11 @@ void fn_1_155C(void) { BoardModelRotYSet(lbl_1_bss_14[4], 90.0f); } BoardModelMotionStart(lbl_1_bss_14[4], temp_r28, 0x40000001); - PSVECSubtract(&sp28, &sp40, &sp34); - PSVECScale(&sp34, &sp34, 0.033333335f); + VECSubtract(&sp28, &sp40, &sp34); + VECScale(&sp34, &sp34, 0.033333335f); for (var_r31 = 0; var_r31 < 0x1E; var_r31++) { - PSVECAdd(&sp40, &sp34, &sp40); + VECAdd(&sp40, &sp34, &sp40); BoardModelPosSetV(lbl_1_bss_14[4], &sp40); HuPrcVSleep(); } @@ -187,7 +190,7 @@ void fn_1_155C(void) { while (fn_1_1208(lbl_1_bss_14[4], 0.0f, 15.0f) == 0) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); BoardCameraViewSet(1); while (BoardPlayerMotBlendCheck(lbl_1_bss_28) == 0) { @@ -198,7 +201,10 @@ void fn_1_155C(void) { BoardRollDispSet(1); } -s32 lbl_1_data_188[4] = { 0x79000C, 0x79000E, 0x79000F, 0x790010 }; +s32 lbl_1_data_188[4] = { + DATA_MAKE_NUM(DATADIR_W05, 0x0C), DATA_MAKE_NUM(DATADIR_W05, 0x0E), + DATA_MAKE_NUM(DATADIR_W05, 0x0F),DATA_MAKE_NUM(DATADIR_W05, 0x10) +}; s32 lbl_1_data_198[2] = { 28, 25 }; void fn_1_1E44(void) { @@ -253,22 +259,22 @@ void fn_1_1E44(void) { BoardModelRotYSet(lbl_1_bss_14[4], -90.0f); } BoardModelMotionStart(lbl_1_bss_14[4], sp8[0], 0x40000001); - PSVECSubtract(&sp2C, &sp5C, &sp44); - PSVECScale(&sp44, &sp44, 0.018518519f); + VECSubtract(&sp2C, &sp5C, &sp44); + VECScale(&sp44, &sp44, 0.018518519f); for (var_r31 = 0; var_r31 < 0x36U; var_r31++) { - PSVECAdd(&sp5C, &sp44, &sp5C); + VECAdd(&sp5C, &sp44, &sp5C); BoardModelPosSetV(lbl_1_bss_14[4], &sp5C); HuPrcVSleep(); } BoardModelPosSetV(lbl_1_bss_14[4], &sp2C); - temp_f31 = (180.0 * (atan2((sp50.x - sp2C.x), (sp50.z - sp2C.z)) / M_PI)); + temp_f31 = atan2d(sp50.x - sp2C.x, sp50.z - sp2C.z); while (fn_1_1208(lbl_1_bss_14[4], temp_f31, 10.0f) == 0) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, 0x40000001); - temp_f31 = 180.0 * (atan2((sp2C.x - sp50.x), (sp2C.z - sp50.z)) / M_PI); + BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); + temp_f31 = atan2d(sp2C.x - sp50.x, sp2C.z - sp50.z); BoardPlayerMotBlendSet(lbl_1_bss_28, temp_f31, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_28) == 0) { @@ -279,7 +285,7 @@ void fn_1_1E44(void) { BoardWinWait(); BoardWinKill(); } else { - temp_r3 = BoardModelCreate(0x790004, NULL, 0); + temp_r3 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x04), NULL, 0); BoardModelVisibilitySet(temp_r3, 0); BoardModelLayerSet(temp_r3, 2U); if (lbl_1_bss_0->unk_00 > BoardPlayerCoinsGet(lbl_1_bss_28)) { @@ -373,17 +379,17 @@ void fn_1_1E44(void) { BoardWinWait(); BoardWinKill(); HuPrcSleep(0x1E); - BoardModelMotionShiftSet(lbl_1_bss_14[4], sp8[3], 0.0f, 5.0f, 0U); + BoardModelMotionShiftSet(lbl_1_bss_14[4], sp8[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); for (var_r31 = 0; var_r31 < 4; var_r31++) { - BoardPlayerMotionShiftSet(var_r31, sp1C[var_r31][1], 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(var_r31, sp1C[var_r31][1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); BoardPlayerVoiceEnableSet(var_r31, 6, 1); } HuPrcSleep(0x23); - BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); for (var_r31 = 0; var_r31 < 4; var_r31++) { - BoardPlayerMotionShiftSet(var_r31, 1, 0.0f, 5.0f, 0x40000001); + BoardPlayerMotionShiftSet(var_r31, 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } } BoardCameraViewSet(1); @@ -396,11 +402,11 @@ void fn_1_1E44(void) { BoardModelRotYSet(lbl_1_bss_14[4], 90.0f); } BoardModelMotionStart(lbl_1_bss_14[4], sp8[0], 0x40000001U); - PSVECSubtract(&sp38, &sp5C, &sp44); - PSVECScale(&sp44, &sp44, 0.055555556); + VECSubtract(&sp38, &sp5C, &sp44); + VECScale(&sp44, &sp44, 0.055555556); for (var_r31 = 0; var_r31 < 0x12U; var_r31++) { - PSVECAdd(&sp5C, &sp44, &sp5C); + VECAdd(&sp5C, &sp44, &sp5C); BoardModelPosSetV(lbl_1_bss_14[4], &sp5C); HuPrcVSleep(); } @@ -409,7 +415,7 @@ void fn_1_1E44(void) { while (fn_1_1208(lbl_1_bss_14[4], 0.0f, 15.0f) == 0) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, 0x40000001U); + BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); for (var_r31 = 0; var_r31 < 4; var_r31++) { BoardModelMotionKill(lbl_1_bss_14[4], sp8[var_r31]); diff --git a/src/REL/w05Dll/main.c b/src/REL/w05Dll/main.c index 6c45d892..b17d72a1 100644 --- a/src/REL/w05Dll/main.c +++ b/src/REL/w05Dll/main.c @@ -1,8 +1,9 @@ #include "REL/w05Dll.h" -#include "game/gamework_data.h" #include "game/chrman.h" #include "game/frand.h" +#include "game/gamework_data.h" + #include "game/board/audio.h" #include "game/board/boo_house.h" @@ -17,68 +18,50 @@ // data BoardMapObject lbl_1_data_0[7] = { - { { 3300.0f, 100.0f, -900.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x790011 - }, - { { -2550.0f, 0.0f, 1350.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x790014 - }, - { { -3000.0f, 100.0f, -1050.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x79001A - }, - { { 2100.0f, 100.0f, -450.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x79001B - }, - { { -450.0f, 100.0f, -750.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x79000A - }, - { { -2710.0f, 0.0f, 1315.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x79000A - }, - { { 3055.0f, 100.0f, -815.0f }, - { 0.0f, 0.0f, 0.0f }, - { 1.0f, 1.0f, 1.0f }, - 0x79000A - }, + { { 3300.0f, 100.0f, -900.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x11) }, + { { -2550.0f, 0.0f, 1350.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x14) }, + { { -3000.0f, 100.0f, -1050.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x1A) }, + { { 2100.0f, 100.0f, -450.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x1B) }, + { { -450.0f, 100.0f, -750.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x0A) }, + { { -2710.0f, 0.0f, 1315.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x0A) }, + { { 3055.0f, 100.0f, -815.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W05, 0x0A) }, }; s16 lbl_1_data_118 = 0xFFFF; s16 lbl_1_data_11A = 0xFFFF; s16 lbl_1_data_11C = 0xFFFF; s16 lbl_1_data_11E = 0xFFFF; s16 lbl_1_data_120 = 0xFFFF; -s32 lbl_1_data_124[8] = {0x5F0000, 0x1A0000, 0x6D0000, 0x8A0000, 0x850000, 0x110000, 0xD0000, 0x810000}; -s32 lbl_1_data_144[2] = {0x790006, 0xFFFFFFFF}; +s32 lbl_1_data_124[8] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), +}; +s32 lbl_1_data_144[2] = { DATA_MAKE_NUM(DATADIR_W05, 0x06), DATA_NUM_LISTEND }; s32 lbl_1_data_14C = 0xFFFFFFFF; // bss s16 lbl_1_bss_14[7]; -s32* lbl_1_bss_10; +s32 *lbl_1_bss_10; s16 lbl_1_bss_8[4]; -Process* lbl_1_bss_4; -bitcopy* lbl_1_bss_0; +Process *lbl_1_bss_4; +bitcopy *lbl_1_bss_0; -void BoardCreate(void) { +void BoardCreate(void) +{ s32 sp8; s32 var_r31; - BoardMapObject* temp_r30; + BoardMapObject *temp_r30; sp8 = GWBoardGet(); - lbl_1_bss_0 = (bitcopy*) GWSystem.board_data; - BoardSpaceInit(0x790000); - lbl_1_data_118 = BoardModelCreate(0x790001, NULL, 0); - lbl_1_data_120 = BoardModelCreate(0x790002, NULL, 0); + lbl_1_bss_0 = (bitcopy *)GWSystem.board_data; + BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W05, 0x00)); + lbl_1_data_118 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x01), NULL, 0); + lbl_1_data_120 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x02), NULL, 0); fn_8006DDE8(lbl_1_data_118, -1.0f); BoardModelPosSet(lbl_1_data_118, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_118, 0, 0x40000001); @@ -88,23 +71,24 @@ void BoardCreate(void) { BoardModelMotionStart(lbl_1_data_120, 0, 0x40000001); BoardModelMotionSpeedSet(lbl_1_data_120, 1.0f); BoardModelLayerSet(lbl_1_data_120, 1); - lbl_1_data_11A = BoardModelCreate(0x790003, NULL, 0); + lbl_1_data_11A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x03), NULL, 0); fn_8006DDE8(lbl_1_data_11A, -1.0f); BoardModelPosSet(lbl_1_data_11A, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_11A, 0, 0x40000001); - lbl_1_data_11C = BoardModelCreate(0x790005, lbl_1_data_144, 0); + lbl_1_data_11C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x05), lbl_1_data_144, 0); BoardModelPosSet(lbl_1_data_11C, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_11C, 1, 0x40000001); lbl_1_data_11E = BoardModelCreate(0x2001C, &lbl_1_data_14C, 0); BoardModelMotionStart(lbl_1_data_11E, 1, 0x40000001); BoardLightHookSet(&fn_1_744, &fn_1_788); - + for (var_r31 = 0; var_r31 < 7; var_r31++) { temp_r30 = &lbl_1_data_0[var_r31]; if (temp_r30->data_num != -1) { if ((var_r31 == 4) || (var_r31 == 5) || (var_r31 == 6)) { lbl_1_bss_10 = &lbl_1_data_14C; - } else { + } + else { lbl_1_bss_10 = NULL; } lbl_1_bss_14[var_r31] = BoardModelCreate(temp_r30->data_num, lbl_1_bss_10, 0); @@ -129,7 +113,8 @@ void BoardCreate(void) { BoardLotteryHostSet(lbl_1_data_11E); } -void BoardDestroy(void) { +void BoardDestroy(void) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 7; var_r31++) { @@ -161,20 +146,21 @@ void BoardDestroy(void) { BoardSpaceDestroy(); } -void fn_1_744(void) { +void fn_1_744(void) +{ s16 var_r31 = BoardModelIDGet(lbl_1_data_118); Hu3DModelLightInfoSet(var_r31, 1); } -void fn_1_788(void) { -} +void fn_1_788(void) { } -s32 fn_1_78C(void) { +s32 fn_1_78C(void) +{ s32 var_r30 = GWSystem.player_curr; s32 var_r29 = GWPlayer[var_r30].space_curr; s32 var_r28; u32 temp_r3; - + temp_r3 = BoardSpaceFlagGet(0, var_r29); if ((temp_r3 & 2) != 0) { fn_1_1E44(); @@ -186,9 +172,10 @@ s32 fn_1_78C(void) { } } -s32 fn_1_82C(void) { +s32 fn_1_82C(void) +{ s32 temp_r30; - BoardSpace* temp_r3; + BoardSpace *temp_r3; temp_r30 = GWSystem.player_curr; temp_r3 = BoardSpaceGet(0, GWPlayer[temp_r30].space_curr); @@ -213,15 +200,16 @@ s32 fn_1_82C(void) { return 0; } -void fn_1_92C(void) { +void fn_1_92C(void) +{ fn_1_6B28(); fn_1_9680(); } -void fn_1_950(void) { -} +void fn_1_950(void) { } -void fn_1_954(void) { +void fn_1_954(void) +{ Vec sp14; Vec sp8; s32 var_r26; @@ -239,7 +227,7 @@ void fn_1_954(void) { HuPrcEnd(); } lbl_1_bss_8[0] = 0; - + for (var_r31 = 1; var_r31 < 3;) { lbl_1_bss_8[var_r31] = (u32)frandmod(0xE); if ((lbl_1_bss_8[var_r31] == 0xA) || (lbl_1_bss_8[var_r31] == 0xD)) { @@ -260,7 +248,8 @@ void fn_1_954(void) { if (GWPlayer[temp_r30].com != 0) { if (BoardComPreferItemCheck(temp_r30, lbl_1_bss_8[0], lbl_1_bss_8[1], lbl_1_bss_8[2]) != -1) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -297,7 +286,7 @@ void fn_1_954(void) { temp_r27 = GWPlayer[temp_r30].space_curr; var_r26 = BoardSpaceLinkFlagSearch(0, temp_r27, 0x02000000); BoardPlayerMoveBetween(temp_r30, temp_r27, var_r26); - + while (GWPlayer[temp_r30].moving != 0) { HuPrcVSleep(); } @@ -314,28 +303,32 @@ void fn_1_954(void) { HuPrcEnd(); } -void fn_1_D4C(void) { +void fn_1_D4C(void) +{ BoardWinKill(); CharModelDataClose(-1); lbl_1_bss_4 = NULL; } -void fn_1_D84(void) { +void fn_1_D84(void) +{ lbl_1_bss_4 = HuPrcChildCreate(fn_1_954, 0x2003U, 0x3000U, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_4, fn_1_D4C); - + while (lbl_1_bss_4 != 0) { HuPrcVSleep(); } } -void fn_1_E04(void) { +void fn_1_E04(void) +{ HuPrcSleep(0x3C); BoardMusStart(1, 0x23, 0x7F, 0); HuPrcEnd(); } -void fn_1_E40(void) { +void fn_1_E40(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -350,7 +343,8 @@ void fn_1_E40(void) { if (GWPlayer[temp_r31].com != 0) { if (frandBool() != 0) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -363,7 +357,7 @@ void fn_1_E40(void) { BoardWinWait(); BoardWinKill(); BoardMGExit(); - + while (BoardMGDoneFlagGet() != 1) { HuPrcVSleep(); } @@ -399,7 +393,8 @@ void fn_1_E40(void) { BoardPlayerMotionStart(temp_r31, 1, 0x40000001); } -s32 fn_1_1114(void) { +s32 fn_1_1114(void) +{ u32 temp_r31; s16 var_r30 = GWPlayer[GWSystem.player_curr].space_curr; @@ -412,13 +407,15 @@ s32 fn_1_1114(void) { while (lbl_1_bss_4 != 0) { HuPrcVSleep(); } - } else if ((temp_r31 & 0x400000) != 0) { + } + else if ((temp_r31 & 0x400000) != 0) { fn_1_E40(); } BoardRollDispSet(1); } -s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9) { +s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9) +{ f32 var_f29; f32 var_f31; s32 var_r31; @@ -440,12 +437,15 @@ s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9) { if (var_f29 < 180.0f) { if (var_f29 > arg9) { var_f31 = var_f31 + arg9; - } else { + } + else { var_f31 = arg8; } - } else if ((360.0f - var_f29) > arg9) { + } + else if ((360.0f - var_f29) > arg9) { var_f31 = var_f31 - arg9; - } else { + } + else { var_f31 = arg8; } if (var_f31 < 0.0f) { @@ -455,7 +455,8 @@ s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9) { var_f31 -= 360.0f; } BoardModelRotYSet(arg0, var_f31); - } else { + } + else { var_r31 = 1; } return var_r31; diff --git a/src/REL/w05Dll/mg_coin.c b/src/REL/w05Dll/mg_coin.c index f9fcb606..c2f8d938 100644 --- a/src/REL/w05Dll/mg_coin.c +++ b/src/REL/w05Dll/mg_coin.c @@ -1,25 +1,30 @@ #include "REL/w05Dll.h" -#include "game/hsfdraw.h" #include "game/audio.h" -#include "game/objsub.h" -#include "game/frand.h" #include "game/chrman.h" -#include "game/pad.h" +#include "game/frand.h" +#include "game/hsfdraw.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" + +#include "game/board/audio.h" #include "game/board/model.h" #include "game/board/window.h" -#include "game/board/audio.h" + + +#include "ext_math.h" + s16 lbl_1_bss_102[3]; s16 lbl_1_bss_100; s16 lbl_1_bss_FE; s16 lbl_1_bss_D6[20]; s16 lbl_1_bss_D4; -omObjData* lbl_1_bss_D0; -omObjData* lbl_1_bss_CC; -omObjData* lbl_1_bss_C8; +omObjData *lbl_1_bss_D0; +omObjData *lbl_1_bss_CC; +omObjData *lbl_1_bss_C8; s16 lbl_1_bss_C6; s16 lbl_1_bss_C4; s16 lbl_1_bss_C2; @@ -29,14 +34,16 @@ s32 lbl_1_bss_B8; char *lbl_1_data_464[3] = { "gyoei", "gyoei1", "gyoei2" }; s32 lbl_1_data_470[3] = { 0x7B, 0x7C, 0x7D }; -s32 lbl_1_data_47C[3] = { 0x00790016, 0x00790017, 0x00790018 }; +s32 lbl_1_data_47C[3] = { DATA_MAKE_NUM(DATADIR_W05, 0x16), DATA_MAKE_NUM(DATADIR_W05, 0x17), DATA_MAKE_NUM(DATADIR_W05, 0x18) }; char *lbl_1_data_494[3] = { "uo", "uo1", "uo2" }; -void fn_1_9680(void) { +void fn_1_9680(void) +{ BoardModelAttrSet(lbl_1_bss_14[1], 0x40000002U); } -void fn_1_96B4(void) { +void fn_1_96B4(void) +{ BoardModelAttrReset(lbl_1_bss_14[1], 0x40000002); BoardModelMotionTimeSet(lbl_1_bss_14[1], 0.0f); @@ -47,58 +54,63 @@ void fn_1_96B4(void) { BoardModelMotionStartEndSet(lbl_1_bss_14[1], 0x3C, 0x64); } -void fn_1_9760(void) { +void fn_1_9760(void) +{ BoardModelAttrReset(lbl_1_bss_14[1], 0x40000001); BoardModelMotionStartEndSet(lbl_1_bss_14[1], 0, 0xA0); } -void fn_1_97AC(void) { +void fn_1_97AC(void) +{ Vec sp8; s32 var_r31; lbl_1_bss_C0 = GWSystem.player_curr; - + for (var_r31 = 0; var_r31 < 3; var_r31++) { lbl_1_bss_102[var_r31] = BoardPlayerMotionCreate(lbl_1_bss_C0, lbl_1_data_470[var_r31] | lbl_1_data_124[GWPlayer[lbl_1_bss_C0].character]); } sp8.x = sp8.y = sp8.z = 1.0f; - lbl_1_bss_100 = BoardModelCreate(0x790015, NULL, 0); + lbl_1_bss_100 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x15), NULL, 0); BoardModelScaleSetV(lbl_1_bss_100, &sp8); BoardModelVisibilitySet(lbl_1_bss_100, 0); - lbl_1_bss_D4 = BoardModelCreate(0x79002C, NULL, 0); + lbl_1_bss_D4 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x2C), NULL, 0); BoardModelVisibilitySet(lbl_1_bss_D4, 0); lbl_1_bss_C2 = frandmod(3U); lbl_1_bss_FE = BoardModelCreate(lbl_1_data_47C[lbl_1_bss_C2], NULL, 0); BoardModelVisibilitySet(lbl_1_bss_FE, 0); - + for (var_r31 = 0; var_r31 < 0x14; var_r31++) { - lbl_1_bss_D6[var_r31] = BoardModelCreate(0x7000A, NULL, 1); + lbl_1_bss_D6[var_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 1); BoardModelVisibilitySet(lbl_1_bss_D6[var_r31], 0); } - BoardPlayerPostTurnHookSet(lbl_1_bss_C0, (s32 (*)())fn_1_9B74); + BoardPlayerPostTurnHookSet(lbl_1_bss_C0, (s32(*)())fn_1_9B74); lbl_1_bss_CC = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_9A68); lbl_1_bss_D0 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_9C24); lbl_1_bss_C6 = 0; lbl_1_bss_C4 = 0; } -void fn_1_9A68(omObjData* arg0) { +void fn_1_9A68(omObjData *arg0) +{ if ((lbl_1_bss_C4 != 0) && (BoardMGDoneFlagGet() == 1)) { fn_1_9AF0(); omDelObjEx(boardObjMan, arg0); } } -void fn_1_9AC0(void) { +void fn_1_9AC0(void) +{ lbl_1_bss_C4 = 1; BoardMGExit(); } -void fn_1_9AF0(void) { +void fn_1_9AF0(void) +{ s32 var_r31; omDelObjEx(boardObjMan, lbl_1_bss_D0); - + for (var_r31 = 0; var_r31 < 0x14; var_r31++) { BoardModelKill(lbl_1_bss_D6[var_r31]); } @@ -106,7 +118,8 @@ void fn_1_9AF0(void) { BoardMGDoneFlagSet(0); } -void fn_1_9B74(void) { +void fn_1_9B74(void) +{ HsfObject *var_r31; omDelObjEx(boardObjMan, lbl_1_bss_C8); BoardModelKill(lbl_1_bss_FE); @@ -115,7 +128,8 @@ void fn_1_9B74(void) { BoardModelAttrReset(lbl_1_bss_14[1], 0x40000004); } -void fn_1_9C24(omObjData* arg0) { +void fn_1_9C24(omObjData *arg0) +{ if (arg0->work[0] == 0) { arg0->work[0] = MGSeqCreate(3, 0); return; @@ -125,7 +139,8 @@ void fn_1_9C24(omObjData* arg0) { } } -void fn_1_9C98(dataCopy2* arg0) { +void fn_1_9C98(dataCopy2 *arg0) +{ Vec sp8; Vec temp_r4; @@ -134,21 +149,22 @@ void fn_1_9C98(dataCopy2* arg0) { BoardModelPosSetV(arg0->unk_0A, &sp8); } -void fn_1_9D0C(omObjData* arg0) { +void fn_1_9D0C(omObjData *arg0) +{ Vec sp1C; Vec sp10; f32 sp8[2]; s32 var_r30; - dataCopy2* temp_r31; + dataCopy2 *temp_r31; - arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, 0x10000000); + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, MEMORY_DEFAULT_NUM); temp_r31 = arg0->data; temp_r31->unk_02 = 5; temp_r31->unk_04 = 0x3C; temp_r31->unk_00 = MGSeqCreate(1, temp_r31->unk_02, 0x120, 0x40); - HuWinMesMaxSizeGet(1, sp8, 0x27000E); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x27, 0x0E)); temp_r31->unk_06 = HuWinCreate(-10000.0f, 368.0f, sp8[0], sp8[1], 0); - HuWinMesSet(temp_r31->unk_06, 0x27000E); + HuWinMesSet(temp_r31->unk_06, MAKE_MESSID(0x27, 0x0E)); HuWinBGTPLvlSet(temp_r31->unk_06, 0.0f); HuWinMesSpeedSet(temp_r31->unk_06, 0); temp_r31->unk_08 = 1; @@ -158,7 +174,7 @@ void fn_1_9D0C(omObjData* arg0) { for (var_r30 = 0; var_r30 < 3; var_r30++) { Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[1]), lbl_1_data_494[var_r30], &temp_r31->unk_0C[var_r30]); } - temp_r31->unk_0A = BoardModelCreate(0x790019, NULL, 0); + temp_r31->unk_0A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x19), NULL, 0); BoardModelAttrSet(temp_r31->unk_0A, 0x40000001); sp1C.x = sp1C.y = sp1C.z = 1.5f; BoardModelScaleSetV(temp_r31->unk_0A, &sp1C); @@ -168,7 +184,8 @@ void fn_1_9D0C(omObjData* arg0) { arg0->func = fn_1_9F24; } -void fn_1_9F24(omObjData* arg0) { +void fn_1_9F24(omObjData *arg0) +{ Vec sp24; Vec sp18; Vec spC; @@ -176,7 +193,7 @@ void fn_1_9F24(omObjData* arg0) { s16 sp8; f32 var_f31; u16 temp_r29; - dataCopy2* temp_r31; + dataCopy2 *temp_r31; temp_r31 = arg0->data; if (--temp_r31->unk_04 == 0) { @@ -189,7 +206,8 @@ void fn_1_9F24(omObjData* arg0) { temp_r29 = GWPlayer[lbl_1_bss_C0].port; if (GWPlayer[lbl_1_bss_C0].com != 0) { fn_1_B2B0(arg0, &spA, &sp8); - } else { + } + else { sp8 = HuPadDStkRep[temp_r29]; spA = HuPadBtnDown[temp_r29]; } @@ -201,22 +219,25 @@ void fn_1_9F24(omObjData* arg0) { BoardPlayerMotionStart(lbl_1_bss_C0, lbl_1_bss_102[0], 0); BoardPlayerMotionSpeedSet(lbl_1_bss_C0, 0.5f); arg0->func = fn_1_A224; - } else if ((temp_r31->unk_08 != 0) && ((sp8 & 1) != 0)) { + } + else if ((temp_r31->unk_08 != 0) && ((sp8 & 1) != 0)) { HuAudFXPlay(0); temp_r31->unk_08--; - } else if ((temp_r31->unk_08 != 2) && ((sp8 & 2) != 0)) { + } + else if ((temp_r31->unk_08 != 2) && ((sp8 & 2) != 0)) { HuAudFXPlay(0); temp_r31->unk_08++; } sp18 = temp_r31->unk_0C[temp_r31->unk_08]; - var_f31 = (180.0 * (atan2((sp18.x - sp24.x), (sp18.z - sp24.z)) / M_PI)); + var_f31 = atan2d(sp18.x - sp24.x, sp18.z - sp24.z); BoardPlayerRotYSet(lbl_1_bss_C0, var_f31); spC = temp_r31->unk_0C[temp_r31->unk_08]; spC.y += 50.0f; BoardModelPosSetV(temp_r31->unk_0A, &spC); } -void fn_1_A224(omObjData* arg0) { +void fn_1_A224(omObjData *arg0) +{ Vec sp14; Vec sp8; f32 temp_f31; @@ -239,21 +260,22 @@ void fn_1_A224(omObjData* arg0) { BoardPlayerMotionStart(lbl_1_bss_C0, lbl_1_bss_102[1], 0); BoardPlayerMotionSpeedSet(lbl_1_bss_C0, 0.5f); switch (lbl_1_bss_C2) { - case 0: - omVibrate(lbl_1_bss_C0, 0x7FFF, 0xC, 0); - break; - case 1: - omVibrate(lbl_1_bss_C0, 0x7FFF, 4, 2); - break; - case 2: - omVibrate(lbl_1_bss_C0, 0x7FFF, 6, 6); - break; + case 0: + omVibrate(lbl_1_bss_C0, 0x7FFF, 0xC, 0); + break; + case 1: + omVibrate(lbl_1_bss_C0, 0x7FFF, 4, 2); + break; + case 2: + omVibrate(lbl_1_bss_C0, 0x7FFF, 6, 6); + break; } arg0->func = fn_1_A4F8; } } -void fn_1_A4F8(omObjData* arg0) { +void fn_1_A4F8(omObjData *arg0) +{ f32 temp_f31; temp_f31 = BoardPlayerMotionMaxTimeGet(lbl_1_bss_C0); @@ -264,13 +286,14 @@ void fn_1_A4F8(omObjData* arg0) { } } -void fn_1_A5B0(omObjData* arg0) { +void fn_1_A5B0(omObjData *arg0) +{ Vec sp14; Vec sp8; - HsfObject* temp_r28; - dataCopy2* temp_r30; - omObjData* temp_r29; - Vec* temp_r31; + HsfObject *temp_r28; + dataCopy2 *temp_r30; + omObjData *temp_r29; + Vec *temp_r31; f32 temp_f30; f32 var_f31; @@ -295,17 +318,17 @@ 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, 0x10000000); + temp_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, MEMORY_DEFAULT_NUM); temp_r31 = temp_r29->data; lbl_1_bss_C8->work[1] = 1; Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[1]), "fish", &sp14); BoardModelPosGet(lbl_1_bss_FE, &sp8); sp14.y = sp8.y; - PSVECSubtract(&sp14, &sp8, temp_r31); - var_f31 = PSVECMag(temp_r31); - PSVECNormalize(temp_r31, temp_r31); + VECSubtract(&sp14, &sp8, temp_r31); + var_f31 = VECMag(temp_r31); + VECNormalize(temp_r31, temp_r31); var_f31 /= 38.0f; - PSVECScale(temp_r31, temp_r31, var_f31); + VECScale(temp_r31, temp_r31, var_f31); temp_r31->y = 25.0f; temp_r29->trans.x = var_f31; BoardPlayerMotionStart(lbl_1_bss_C0, lbl_1_bss_102[2], 0); @@ -323,7 +346,8 @@ void fn_1_A5B0(omObjData* arg0) { BoardModelMotionSpeedSet(lbl_1_bss_100, var_f31); } -void fn_1_A990(omObjData* arg0) { +void fn_1_A990(omObjData *arg0) +{ Vec sp8; Process *var_r31; @@ -344,9 +368,10 @@ void fn_1_A990(omObjData* arg0) { } s16 lbl_1_data_4B2[3] = { 20, 10, 5 }; -s32 lbl_1_data_4B8[3] = { 0x00270013, 0x00270014, 0x00270015 }; +s32 lbl_1_data_4B8[3] = { MAKE_MESSID(0x27, 0x13), MAKE_MESSID(0x27, 0x14), MAKE_MESSID(0x27, 0x15) }; -void fn_1_AB24(void) { +void fn_1_AB24(void) +{ Vec sp124[20]; Vec sp34[20]; Vec sp28; @@ -359,15 +384,15 @@ void fn_1_AB24(void) { s32 var_r29; s32 var_r31; f32 var_f30; - Vec* temp_r4; + Vec *temp_r4; temp_r30 = HuPrcCurrentGet()->user_data; spC = temp_r30->data; BoardPlayerPosGet(lbl_1_bss_C0, &sp28); BoardModelPosGet(lbl_1_bss_14[5], &sp1C); - var_f30 = (180.0 * (atan2((sp1C.z - sp28.z), (sp1C.x - sp28.x)) / M_PI)); + var_f30 = atan2d(sp1C.z - sp28.z, sp1C.x - sp28.x); BoardPlayerMotBlendSet(lbl_1_bss_C0, var_f30, 0xF); - + while (BoardPlayerMotBlendCheck(lbl_1_bss_C0) == 0) { HuPrcVSleep(); } @@ -381,12 +406,12 @@ void fn_1_AB24(void) { BoardWinWait(); BoardWinKill(); BoardPlayerMotBlendSet(lbl_1_bss_C0, 0, 0xF); - + while (BoardPlayerMotBlendCheck(lbl_1_bss_C0) == 0) { HuPrcVSleep(); } BoardPlayerPosGet(lbl_1_bss_C0, &sp28); - + for (var_r31 = 0; var_r31 < lbl_1_bss_C6; var_r31++) { BoardModelVisibilitySet(lbl_1_bss_D6[var_r31], 1); sp124[var_r31] = sp28; @@ -400,7 +425,7 @@ void fn_1_AB24(void) { } var_f31 = -1.0f; var_r29 = 0; - + while (1) { for (var_r31 = 0; var_r31 < lbl_1_bss_C6; var_r31++) { if (var_r31 >= var_r29) { @@ -427,13 +452,14 @@ void fn_1_AB24(void) { var_f31 = -20.0f; } if (var_r29 == lbl_1_bss_C6) { - BoardPlayerMotionShiftSet(lbl_1_bss_C0, 7, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_C0, 7, 0.0f, 10.0f, HU3D_MOTATTR_NONE); break; - } else { + } + else { HuPrcVSleep(); } } - + while (BoardPlayerMotionEndCheck(lbl_1_bss_C0) == 0) { HuPrcVSleep(); } @@ -444,7 +470,8 @@ void fn_1_AB24(void) { HuPrcEnd(); } -void fn_1_B214(omObjData* arg0) { +void fn_1_B214(omObjData *arg0) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 3; var_r31++) { @@ -456,8 +483,9 @@ void fn_1_B214(omObjData* arg0) { omDelObjEx(boardObjMan, arg0); } -void fn_1_B2B0(omObjData* arg0, u16* arg1, s16* arg2) { - dataCopy2* temp_r31; +void fn_1_B2B0(omObjData *arg0, u16 *arg1, s16 *arg2) +{ + dataCopy2 *temp_r31; temp_r31 = arg0->data; *arg1 = 0; @@ -490,7 +518,8 @@ void fn_1_B2B0(omObjData* arg0, u16* arg1, s16* arg2) { *arg2 = 2; } -void fn_1_B3C4(omObjData* arg0) { +void fn_1_B3C4(omObjData *arg0) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -510,10 +539,10 @@ void fn_1_B3C4(omObjData* arg0) { sp8.y = 180.0f; sp8.z = 0.0f; BoardModelRotSetV(lbl_1_bss_FE, &sp8); - PSVECAdd(&sp20, &sp2C, &sp20); + VECAdd(&sp20, &sp2C, &sp20); sp14.y = sp20.y; - PSVECSubtract(&sp14, &sp20, &sp14); - temp_f29 = PSVECMag(&sp14); + VECSubtract(&sp14, &sp20, &sp14); + temp_f29 = VECMag(&sp14); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[1]), "fish", &sp14); if (temp_f29 <= arg0->trans.x) { sp20.x = sp14.x; @@ -526,9 +555,10 @@ void fn_1_B3C4(omObjData* arg0) { if ((0.0f == BoardModelMotionTimeGet(lbl_1_bss_FE)) && (arg0->work[1] != 0)) { HuAudFXPlay(0x484); } - } else { + } + else { arg0->work[0] += 1; } BoardModelPosSetV(lbl_1_bss_FE, &sp20); } -} \ No newline at end of file +} diff --git a/src/REL/w05Dll/mg_item.c b/src/REL/w05Dll/mg_item.c index 92c0f959..0e942bef 100644 --- a/src/REL/w05Dll/mg_item.c +++ b/src/REL/w05Dll/mg_item.c @@ -1,16 +1,18 @@ #include "REL/w05Dll.h" -#include "game/hsfdraw.h" #include "game/audio.h" -#include "game/objsub.h" -#include "game/frand.h" #include "game/chrman.h" -#include "game/pad.h" +#include "game/frand.h" +#include "game/hsfdraw.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/board/audio.h" #include "game/board/model.h" #include "game/board/window.h" -#include "game/board/audio.h" + +#include "ext_math.h" // data s32 lbl_1_data_310[2] = { 0x79, 0x7A }; @@ -24,22 +26,23 @@ s16 lbl_1_bss_A4[3]; s16 lbl_1_bss_A2; s16 lbl_1_bss_9E[2]; s16 lbl_1_bss_9C; -Process* lbl_1_bss_98; -omObjData* lbl_1_bss_94; -omObjData* lbl_1_bss_90; -omObjData* lbl_1_bss_8C; +Process *lbl_1_bss_98; +omObjData *lbl_1_bss_94; +omObjData *lbl_1_bss_90; +omObjData *lbl_1_bss_8C; s32 lbl_1_bss_88; s32 lbl_1_bss_7C[3]; -AnimData* lbl_1_bss_78; +AnimData *lbl_1_bss_78; - -void fn_1_6B28(void) { +void fn_1_6B28(void) +{ BoardModelAttrSet(*lbl_1_bss_14, 0x40000002U); lbl_1_bss_98 = NULL; lbl_1_bss_78 = NULL; } -void fn_1_6B7C(void) { +void fn_1_6B7C(void) +{ Vec sp1C; Vec sp10; s32 spC; @@ -51,7 +54,7 @@ void fn_1_6B7C(void) { for (var_r31 = 0; var_r31 < 2; var_r31++) { lbl_1_bss_9E[var_r31] = BoardPlayerMotionCreate(lbl_1_bss_B6, lbl_1_data_310[var_r31] | lbl_1_data_124[GWPlayer[lbl_1_bss_B6].character]); } - lbl_1_bss_A2 = BoardModelCreate(0x790013, NULL, 0); + lbl_1_bss_A2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x13), NULL, 0); BoardModelVisibilitySet(lbl_1_bss_A2, 0); sp1C.x = sp1C.y = sp1C.z = 3.33333f; BoardModelScaleSetV(lbl_1_bss_A2, &sp1C); @@ -63,11 +66,11 @@ void fn_1_6B7C(void) { HuPrcVSleep(); } BoardPlayerMotBlendSet(lbl_1_bss_B6, 0, 0xF); - + while (BoardPlayerMotBlendCheck(lbl_1_bss_B6) == 0) { HuPrcVSleep(); } - + HuPrcSleep(0x3C); BoardAudSeqPause(0, 1, 0x3E8); HuAudFXPlay(0x30D); @@ -78,13 +81,13 @@ void fn_1_6B7C(void) { BoardModelMotionStartEndSet(lbl_1_bss_14[0], 0x1E, 0x5A); BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002); BoardMusStart(1, 0x22, 0x7F, 0); - BoardPlayerMotionShiftSet(lbl_1_bss_B6, lbl_1_bss_9E[0], 0.0f, 30.0f, 0x40000001); - HuPrcSleep(0x1E); + BoardPlayerMotionShiftSet(lbl_1_bss_B6, lbl_1_bss_9E[0], 0.0f, 30.0f, HU3D_MOTATTR_LOOP); + HuPrcSleep(REFRESH_RATE/2); BoardModelVisibilitySet(lbl_1_bss_A2, 1); BoardModelHookSet(BoardPlayerModelGet(lbl_1_bss_B6), "a-itemhook-r", lbl_1_bss_A2); Hu3DModelObjPosGet(BoardModelIDGet(*lbl_1_bss_14), "chara1", &sp10); Hu3DModelObjPosGet(BoardModelIDGet(BoardPlayerModelGet(lbl_1_bss_B6)), "a-itemhook-r", &sp1C); - PSVECAdd(&sp1C, &sp10, &sp1C); + VECAdd(&sp1C, &sp10, &sp1C); sp1C.y += 25.0f; CharModelLayerSetAll(7); CharModelEffectCreate(-1, &sp1C); @@ -94,14 +97,14 @@ void fn_1_6B7C(void) { BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002); omVibrate(lbl_1_bss_B6, 0x7FFF, 6, 6); HuAudFXPlay(0x492); - + while (BoardModelMotionTimeGet(lbl_1_bss_14[0]) < 90.0f) { HuPrcVSleep(); } BoardModelMotionTimeSet(lbl_1_bss_14[0], 90.0f); HuPadRumbleStop(GWPlayer[lbl_1_bss_B6].port); BoardModelHookReset(lbl_1_bss_14[0]); - + for (var_r31 = 0; var_r31 < 3; var_r31++) { BoardModelHookSet(lbl_1_bss_14[0], lbl_1_data_330[var_r31], lbl_1_bss_AA[var_r31]); } @@ -111,15 +114,16 @@ 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, 0x10000000U); + lbl_1_bss_90->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x14, MEMORY_DEFAULT_NUM); if (lbl_1_bss_78 == NULL) { - lbl_1_bss_78 = HuSprAnimRead(HuDataSelHeapReadNum(0x120000, 0x10000000, HEAP_DATA)); + lbl_1_bss_78 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0x00)); HuSprAnimLock(lbl_1_bss_78); } lbl_1_bss_9C = 0; } -void fn_1_7284(omObjData* arg0) { +void fn_1_7284(omObjData *arg0) +{ if ((lbl_1_bss_9C != 0) && (BoardMGDoneFlagGet() == 1)) { fn_1_77B0(); fn_1_7314(); @@ -128,12 +132,14 @@ void fn_1_7284(omObjData* arg0) { } } -void fn_1_72E4(void) { +void fn_1_72E4(void) +{ lbl_1_bss_9C = 1; BoardMGExit(); } -void fn_1_7314(void) { +void fn_1_7314(void) +{ s32 var_r31; BoardModelHookReset(lbl_1_bss_14[0]); @@ -148,12 +154,14 @@ void fn_1_7314(void) { } } -void fn_1_73C0(void) { +void fn_1_73C0(void) +{ omDelObjEx(boardObjMan, lbl_1_bss_90); BoardMGDoneFlagSet(0); } -void fn_1_7400(void) { +void fn_1_7400(void) +{ while (BoardModelMotionTimeGet(lbl_1_bss_14[0]) < 30.0f) { HuPrcVSleep(); @@ -162,42 +170,48 @@ void fn_1_7400(void) { BoardModelMotionTimeSet(lbl_1_bss_14[0], 30.0f); lbl_1_bss_98 = HuPrcCreate(fn_1_896C, 0x2004, 0x1000, 0); HuPrcDestructorSet2(lbl_1_bss_98, fn_1_91DC); - lbl_1_bss_98->user_data = (void* )7; + lbl_1_bss_98->user_data = (void *)7; HuPrcEnd(); } +#if VERSION_JP +#define MDL_ID_SHIFT 0 +#else +#define MDL_ID_SHIFT 1 +#endif + s32 lbl_1_data_350[14] = { - 0x0007006D, 0x0007006E, 0x0007006F, 0x00070070, - 0x00070071, 0x00070072, 0x00070073, 0x00070074, - 0x00070076, 0x00070077, 0x00070078, 0x00070079, - 0x0007007A, 0x0007007B + DATA_MAKE_NUM(DATADIR_BOARD, 0x6C + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6D + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6E + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x6F + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x70 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x71 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x72 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x73 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x75 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x76 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x77 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x78 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x79 + MDL_ID_SHIFT), + DATA_MAKE_NUM(DATADIR_BOARD, 0x7A + MDL_ID_SHIFT), }; -s16 lbl_1_data_388[92] = { - 0, 1, -1, 2, 0, -1, 1, 2, - 0, -1, 2, 1, 0, 2, -1, 1, - 0, 2, 1, -1, 1, 2, -1, 0, - 1, 2, 0, -1, 1, -1, 0, 2, - 1, -1, 2, 0, 1, 0, 2, -1, - 1, 0, -1, 2, 2, -1, 0, 1, - 2, -1, 1, 0, 2, 0, 1, -1, - 2, 0, -1, 1, 2, 1, -1, 0, - 2, 1, 0, -1, -1, 0, 1, 2, - -1, 0, 2, 1, -1, 1, 2, 0, - -1, 1, 0, 2, -1, 2, 0, 1, - -1, 2, 1, 0 -}; +s16 lbl_1_data_388[92] = { 0, 1, -1, 2, 0, -1, 1, 2, 0, -1, 2, 1, 0, 2, -1, 1, 0, 2, 1, -1, 1, 2, -1, 0, 1, 2, 0, -1, 1, -1, 0, 2, 1, -1, 2, 0, 1, 0, + 2, -1, 1, 0, -1, 2, 2, -1, 0, 1, 2, -1, 1, 0, 2, 0, 1, -1, 2, 0, -1, 1, 2, 1, -1, 0, 2, 1, 0, -1, -1, 0, 1, 2, -1, 0, 2, 1, -1, 1, 2, 0, -1, 1, 0, + 2, -1, 2, 0, 1, -1, 2, 1, 0 }; -f32 lbl_1_data_440[3] = {-90.0f, 0.0f, 90.0f}; +f32 lbl_1_data_440[3] = { -90.0f, 0.0f, 90.0f }; -void fn_1_74D0(s16 arg0[3]) { +void fn_1_74D0(s16 arg0[3]) +{ f32 temp_f31; s32 var_r31; for (var_r31 = 0; var_r31 < 3; var_r31++) { lbl_1_bss_B0[var_r31] = arg0[var_r31]; } - + for (var_r31 = 0; var_r31 < 3; var_r31++) { lbl_1_bss_A4[var_r31] = BoardModelCreate(lbl_1_data_350[lbl_1_bss_B0[var_r31]], NULL, 0); if (lbl_1_bss_B0[var_r31] == 0xB) { @@ -214,12 +228,12 @@ void fn_1_74D0(s16 arg0[3]) { } for (var_r31 = 0; var_r31 < 3; var_r31++) { - lbl_1_bss_AA[var_r31] = BoardModelCreate(0x790012, NULL, 1); + lbl_1_bss_AA[var_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x12), NULL, 1); BoardModelHookSet(lbl_1_bss_14[0], lbl_1_data_330[var_r31], lbl_1_bss_AA[var_r31]); BoardModelAttrSet(lbl_1_bss_AA[var_r31], 0x40000002); BoardModelMotionTimeSet(lbl_1_bss_AA[var_r31], 10.0f); } - + HuAudFXPlay(0x488); BoardModelMotionTimeSet(lbl_1_bss_14[0], 0.0f); BoardModelMotionStartEndSet(lbl_1_bss_14[0], 0, 0x1E); @@ -227,7 +241,8 @@ void fn_1_74D0(s16 arg0[3]) { HuPrcCreate(fn_1_7400, 0x2004, 0x1000, 0); } -void fn_1_77B0(void) { +void fn_1_77B0(void) +{ HuAudFXPlay(0x489); BoardModelMotionStartEndSet(lbl_1_bss_14[0], 0x5A, 0x78); BoardModelMotionTimeSet(lbl_1_bss_14[0], 90.0f); @@ -243,7 +258,8 @@ void fn_1_77B0(void) { } } -void fn_1_78A0(omObjData* arg0) { +void fn_1_78A0(omObjData *arg0) +{ if (arg0->work[0] == 0) { arg0->work[0] = MGSeqCreate(3, 0); return; @@ -254,7 +270,8 @@ void fn_1_78A0(omObjData* arg0) { } } -void fn_1_7928(omObjData* arg0) { +void fn_1_7928(omObjData *arg0) +{ Process *temp; if (((u32)lbl_1_bss_98->user_data & 0x10) != 0) { temp = HuPrcCreate(fn_1_799C, 0x2004, 0x1800, 0); @@ -263,7 +280,8 @@ void fn_1_7928(omObjData* arg0) { } } -void fn_1_799C(void) { +void fn_1_799C(void) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -275,20 +293,20 @@ void fn_1_799C(void) { s32 temp_r31; s32 var_r28; s32 var_r29; - omObjData* temp_r30; + omObjData *temp_r30; temp_r30 = HuPrcCurrentGet()->user_data; BoardPlayerPosGet(lbl_1_bss_B6, &sp2C); temp_r31 = temp_r30->work[0]; BoardModelPosGet(lbl_1_bss_A4[temp_r31], &sp20); sp2C.y = sp20.y = 0.0f; - PSVECSubtract(&sp2C, &sp20, &sp14); - temp_f30 = PSVECMag(&sp14); - PSVECScale(&sp14, &sp14, 0.016666668); - + VECSubtract(&sp2C, &sp20, &sp14); + temp_f30 = VECMag(&sp14); + VECScale(&sp14, &sp14, 0.016666668); + for (var_r29 = 0; var_r29 < 0x3C; var_r29++) { BoardModelPosGet(lbl_1_bss_A4[temp_r31], &sp20); - PSVECAdd(&sp20, &sp14, &sp20); + VECAdd(&sp20, &sp14, &sp20); BoardModelPosSetV(lbl_1_bss_A4[temp_r31], &sp20); HuPrcVSleep(); } @@ -338,13 +356,13 @@ void fn_1_799C(void) { BoardPlayerItemAdd(lbl_1_bss_B6, lbl_1_bss_B0[temp_r31]); omVibrate(lbl_1_bss_B6, 0xC, 6, 6); temp_r27 = HuAudSStreamPlay(2); - BoardPlayerMotionShiftSet(lbl_1_bss_B6, 7, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_B6, 7, 0.0f, 5.0f, HU3D_MOTATTR_NONE); while (BoardPlayerMotionEndCheck(lbl_1_bss_B6) == 0) { HuPrcVSleep(); } - HuPrcSleep(0x1E); - + HuPrcSleep(REFRESH_RATE/2); + while (HuAudSStreamStatGet(temp_r27) != 0) { HuPrcVSleep(); } @@ -356,13 +374,15 @@ void fn_1_799C(void) { HuPrcEnd(); } -void fn_1_7E4C(omObjData* arg0) { +void fn_1_7E4C(omObjData *arg0) +{ lbl_1_bss_9C = 1; BoardMGExit(); omDelObjEx(boardObjMan, arg0); } -void fn_1_7E94(dataCopy* arg0) { +void fn_1_7E94(dataCopy *arg0) +{ if (--arg0->unk_02 == 0) { arg0->unk_02 = 0x3C; if (--arg0->unk_00 >= 0) { @@ -371,19 +391,20 @@ void fn_1_7E94(dataCopy* arg0) { } } -void fn_1_7F04(omObjData* arg0) { +void fn_1_7F04(omObjData *arg0) +{ f32 sp8[2]; s32 var_r30; s32 var_r28; - dataCopy* temp_r31; + dataCopy *temp_r31; temp_r31 = arg0->data; temp_r31->unk_00 = 5; temp_r31->unk_02 = 0x3C; temp_r31->unk_04 = MGSeqCreate(1, temp_r31->unk_00, 0x120, 0x40); - HuWinMesMaxSizeGet(1, sp8, 0x27000E); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(0x27, 0x0E)); temp_r31->unk_06 = HuWinCreate(-10000.0f, 344.0f, sp8[0], sp8[1], 0); - HuWinMesSet(temp_r31->unk_06, 0x27000E); + HuWinMesSet(temp_r31->unk_06, MAKE_MESSID(0x27, 0x0E)); HuWinBGTPLvlSet(temp_r31->unk_06, 0.0f); HuWinMesSpeedSet(temp_r31->unk_06, 0); temp_r31->unk_08 = 1; @@ -409,26 +430,28 @@ void fn_1_7F04(omObjData* arg0) { arg0->func = fn_1_80D8; } -void fn_1_80D8(omObjData* arg0) { +void fn_1_80D8(omObjData *arg0) +{ s32 sp10; s32 spC; s32 sp8; f32 var_f31; s32 temp_r30; s32 var_r29; - dataCopy* temp_r31; + dataCopy *temp_r31; temp_r31 = arg0->data; fn_1_7E94(temp_r31); temp_r30 = GWPlayer[lbl_1_bss_B6].port; if (GWPlayer[lbl_1_bss_B6].com != 0) { fn_1_8798(temp_r31, &sp10, &spC, &sp8); - } else { + } + else { sp10 = HuPadStkX[temp_r30]; spC = HuPadStkY[temp_r30]; sp8 = HuPadBtnDown[temp_r30]; } - + if (((sp8 & 0x100) != 0) || (temp_r31->unk_00 < 0)) { MGSeqParamSet(temp_r31->unk_04, 2, -1); HuWinKill(temp_r31->unk_06); @@ -438,16 +461,18 @@ void fn_1_80D8(omObjData* arg0) { } if ((spC != 0) || (sp10 != 0)) { var_r29 = -1; - var_f31 = (180.0 * (atan2(spC, sp10) / M_PI)); + var_f31 = atan2d(spC, sp10); if (var_f31 < 0.0f) { var_f31 += 360.0f; } - + if ((var_f31 > 170.0f) && (var_f31 < 190.0f)) { var_r29 = 0; - } else if ((var_f31 > 260.0f) && (var_f31 < 280.0f)) { + } + else if ((var_f31 > 260.0f) && (var_f31 < 280.0f)) { var_r29 = 1; - } else if ((var_f31 < 10.0f) || (var_f31 > 350.0f)) { + } + else if ((var_f31 < 10.0f) || (var_f31 > 350.0f)) { var_r29 = 2; } if (var_r29 != -1) { @@ -457,9 +482,10 @@ void fn_1_80D8(omObjData* arg0) { } } -void fn_1_8410(omObjData* arg0) { +void fn_1_8410(omObjData *arg0) +{ s32 temp_r30; - dataCopy* temp_r31; + dataCopy *temp_r31; temp_r31 = arg0->data; if (BoardPlayerMotionTimeGet(lbl_1_bss_B6) >= 30.0f) { @@ -470,13 +496,14 @@ void fn_1_8410(omObjData* arg0) { temp_r30 |= 0x1C0; lbl_1_bss_98 = HuPrcCreate(fn_1_896C, 0x2004, 0x4000, 0); HuPrcDestructorSet2(lbl_1_bss_98, fn_1_91DC); - lbl_1_bss_98->user_data = (void*)temp_r30; + lbl_1_bss_98->user_data = (void *)temp_r30; lbl_1_bss_8C->work[0] = temp_r31->unk_08; arg0->func = fn_1_850C; } } -void fn_1_850C(omObjData* arg0) { +void fn_1_850C(omObjData *arg0) +{ Vec sp14; Vec sp8; f32 temp_f31; @@ -486,7 +513,7 @@ void fn_1_850C(omObjData* arg0) { BoardPlayerMotionStart(lbl_1_bss_B6, lbl_1_bss_9E[0], 0x40000001); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[0]), "chara1", &sp8); Hu3DModelObjPosGet(BoardModelIDGet(BoardPlayerModelGet(lbl_1_bss_B6)), "a-itemhook-r", &sp14); - PSVECAdd(&sp14, &sp8, &sp14); + VECAdd(&sp14, &sp8, &sp14); sp14.y += 25.0f; CharModelLayerSetAll(7); CharModelEffectCreate(-1, &sp14); @@ -495,16 +522,17 @@ void fn_1_850C(omObjData* arg0) { } } -void fn_1_8668(omObjData* arg0) { +void fn_1_8668(omObjData *arg0) +{ s32 var_r30; if (arg0->work[0] == 0) { BoardModelHookReset(BoardPlayerModelGet(lbl_1_bss_B6)); - BoardPlayerMotionShiftSet(lbl_1_bss_B6, 1, 0.0f, 5.0f, 0x40000001); + BoardPlayerMotionShiftSet(lbl_1_bss_B6, 1, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); arg0->func = NULL; lbl_1_bss_8C->func = fn_1_7928; BoardModelKill(lbl_1_bss_A2); - + for (var_r30 = 0; var_r30 < 2; var_r30++) { BoardPlayerMotionKill(lbl_1_bss_B6, lbl_1_bss_9E[var_r30]); } @@ -513,7 +541,8 @@ void fn_1_8668(omObjData* arg0) { arg0->work[0] -= 1; } -void fn_1_8798(dataCopy* arg0, s32* arg1, s32* arg2, s32* arg3) { +void fn_1_8798(dataCopy *arg0, s32 *arg1, s32 *arg2, s32 *arg3) +{ *arg1 = *arg2 = *arg3 = 0; if (arg0->unk_10 != 0) { arg0->unk_10 -= 1; @@ -532,17 +561,19 @@ void fn_1_8798(dataCopy* arg0, s32* arg1, s32* arg2, s32* arg3) { *arg2 = (frandBool() * 0x8C) - 0x46; } -void* fn_1_8884(void) { +void *fn_1_8884(void) +{ if (lbl_1_bss_98 == NULL) { return NULL; } return lbl_1_bss_98->user_data; } -void fn_1_88B8(void) { +void fn_1_88B8(void) +{ s32 userData = (s32)lbl_1_bss_98->user_data; userData |= 8; - lbl_1_bss_98->user_data = (void* ) (userData); + lbl_1_bss_98->user_data = (void *)(userData); while (((u32)fn_1_8884() & 0x20) == 0) { HuPrcVSleep(); @@ -551,7 +582,8 @@ void fn_1_88B8(void) { lbl_1_bss_98 = NULL; } -void fn_1_896C(void) { +void fn_1_896C(void) +{ Vec sp18; Vec spC; f32 sp8; @@ -565,7 +597,7 @@ void fn_1_896C(void) { ParticleData *var_r27; temp_r30 = (u32)HuPrcCurrentGet()->user_data; - + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r29 = (1 << var_r31); if ((temp_r30 & var_r29) != 0) { @@ -573,19 +605,21 @@ void fn_1_896C(void) { if ((temp_r30 & 0x80) != 0) { BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0, 0x28); BoardModelMotionTimeSet(lbl_1_bss_AA[var_r31], 0.0f); - } else { + } + else { BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0xA, 0x28); BoardModelMotionTimeSet(lbl_1_bss_AA[var_r31], 10.0f); } } } if ((temp_r30 & 0x80) != 0) { - HuPrcSleep(0x19); - } else { - HuPrcSleep(0xF); + HuPrcSleep(((REFRESH_RATE*5)+6)/12); + } + else { + HuPrcSleep((REFRESH_RATE+2)/4); } spC.x = spC.y = spC.z = 0.0f; - + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r29 = (1 << var_r31); if ((temp_r30 & var_r29) != 0) { @@ -606,7 +640,8 @@ void fn_1_896C(void) { if ((temp_r30 & 0x100) != 0) { lbl_1_bss_88 = HuAudFXPlay(0x35F); HuAudFXPlay(0x310); - } else { + } + else { HuAudFXPlay(0x362); } } @@ -614,7 +649,7 @@ void fn_1_896C(void) { temp_f29 = 150.0f + sp18.y; sp8 = 0.0f; var_f31 = 12.0f; - + while (1) { for (var_r28 = 0, var_r31 = 0; var_r31 < 3; var_r31++) { var_r29 = (1 << var_r31); @@ -626,7 +661,7 @@ void fn_1_896C(void) { } spC.x = spC.y = spC.z = sp8; - BoardModelScaleSetV(lbl_1_bss_A4[var_r31], (Vec* ) &sp8); //! + BoardModelScaleSetV(lbl_1_bss_A4[var_r31], (Vec *)&sp8); //! BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18); sp18.y += var_f31; if (sp18.y >= temp_f29) { @@ -639,7 +674,8 @@ void fn_1_896C(void) { var_f31 *= 0.95f; if (var_r28 > 0) { HuPrcVSleep(); - } else { + } + else { break; } } @@ -650,18 +686,18 @@ void fn_1_896C(void) { BoardModelScaleSetV(lbl_1_bss_A4[var_r31], &spC); } } - temp_r30 = (u32) HuPrcCurrentGet()->user_data | 0x10; - HuPrcCurrentGet()->user_data = (void*)temp_r30; + temp_r30 = (u32)HuPrcCurrentGet()->user_data | 0x10; + HuPrcCurrentGet()->user_data = (void *)temp_r30; var_f30 = 0.0f; while (1) { - temp_r30 = (u32) HuPrcCurrentGet()->user_data; + temp_r30 = (u32)HuPrcCurrentGet()->user_data; if ((temp_r30 & 8) == 0) { for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r29 = (1 << var_r31); if ((temp_r30 & var_r29) != 0) { BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18); - sp18.y = (sp18.y + (0.25 * sin((M_PI * var_f30) / 180.0))); + sp18.y += 0.25 * sind(var_f30); BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18); } } @@ -670,14 +706,15 @@ void fn_1_896C(void) { var_f30 -= 360.0f; } HuPrcVSleep(); - } else { + } + else { break; } } for (var_r31 = 0; var_r31 < 3; var_r31++) { BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0x28, 0x46); } - HuPrcSleep(13); + HuPrcSleep((REFRESH_RATE*2)/9); var_f31 = -8.0f; while (1) { for (var_r28 = 0, var_r31 = 0; var_r31 < 3; var_r31++) { @@ -689,7 +726,7 @@ void fn_1_896C(void) { sp8 = 0.0f; } spC.x = spC.y = spC.z = sp8; - BoardModelScaleSetV(lbl_1_bss_A4[var_r31], (Vec* ) &sp8); //! + BoardModelScaleSetV(lbl_1_bss_A4[var_r31], (Vec *)&sp8); //! BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18); sp18.y += var_f31; if (sp18.y <= (temp_f29 - 150.0f)) { @@ -704,11 +741,12 @@ void fn_1_896C(void) { var_f31 *= 0.98f; if (var_r28 > 0) { HuPrcVSleep(); - } else { + } + else { break; } } - + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r29 = (1 << var_r31); if ((temp_r30 & var_r29) != 0) { @@ -719,13 +757,14 @@ void fn_1_896C(void) { } temp_r30 = (u32)HuPrcCurrentGet()->user_data; temp_r30 |= 0x20; - HuPrcCurrentGet()->user_data = (void*)temp_r30; + HuPrcCurrentGet()->user_data = (void *)temp_r30; while (1) { HuPrcVSleep(); } } -void fn_1_91DC(void) { +void fn_1_91DC(void) +{ u32 temp_r30; s32 var_r29; s32 var_r31; @@ -741,9 +780,10 @@ void fn_1_91DC(void) { } } -void fn_1_9268(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) { +void fn_1_9268(ModelData *model, ParticleData *particle, f32 (*matrix)[4]) +{ Vec sp8; - HsfanimStruct01* var_r31; + HsfanimStruct01 *var_r31; f32 temp_f30; f32 temp_f29; f32 temp_f31; @@ -761,18 +801,19 @@ void fn_1_9268(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) { BoardModelScaleGet(particle->unk_02, &sp8); temp_f31 = sp8.x; BoardModelPosGet(particle->unk_02, &sp8); - + for (var_r29 = 0; var_r29 < 0x16; var_r29++) { var_r31 = particle->unk_48; for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { - if (var_r31->unk2C == 0.0f) break; + if (var_r31->unk2C == 0.0f) + break; } if (var_r28 != particle->unk_30) { temp_f30 = 360.0f * (0.003921569f * (s32)(frand() & 0xFF)); temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (s32)(frand() & 0xFF)))); - var_r31->unk34.x = sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0)); - var_r31->unk34.z = sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0)); + var_r31->unk34.x = sp8.x + temp_f29 * sind(temp_f30); + var_r31->unk34.z = sp8.z + temp_f29 * cosd(temp_f30); var_r31->unk34.y = sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (s32)(frand() & 0xFF))))); var_r31->unk08.x = 0.5f + (3.0f * (0.003921569f * (s32)(frand() & 0xFF))); var_r31->unk08.y = 0.3f + (2.0f * (0.003921569f * (s32)(frand() & 0xFF))); @@ -790,4 +831,4 @@ void fn_1_9268(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) { } } } -} \ No newline at end of file +} diff --git a/src/REL/w05Dll/monkey.c b/src/REL/w05Dll/monkey.c index fb7e8efc..d7a9d431 100644 --- a/src/REL/w05Dll/monkey.c +++ b/src/REL/w05Dll/monkey.c @@ -7,7 +7,7 @@ #include "game/board/player.h" // data -s32 lbl_1_data_1A8[3] = { 0x0079001F, 0x00790020, 0xFFFFFFFF }; +s32 lbl_1_data_1A8[3] = { DATA_MAKE_NUM(DATADIR_W05, 0x1F), DATA_MAKE_NUM(DATADIR_W05, 0x20), DATA_NUM_LISTEND }; char *lbl_1_data_1C4[2] = { "monkyA", "monkyB"}; s32 lbl_1_data_1CC[3] = { 0x78, 0x6F, 0x70 }; @@ -29,7 +29,7 @@ void fn_1_2B40(void) { BoardModelMotionTimeSet(lbl_1_bss_14[3], 0.0f); for (var_r31 = 0; var_r31 < 2; var_r31++) { - lbl_1_bss_4E[var_r31] = BoardModelCreate(0x79001E, lbl_1_data_1A8, 0); + lbl_1_bss_4E[var_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x1E), lbl_1_data_1A8, 0); BoardModelAttrSet(lbl_1_bss_4E[var_r31], 0x40000001); } BoardModelHookSet(lbl_1_bss_14[2], lbl_1_data_1C4[0], lbl_1_bss_4E[0]); @@ -53,8 +53,8 @@ void fn_1_2C7C(s32 arg0) { BoardModelPosGet(lbl_1_bss_4A, &lbl_1_bss_38); lbl_1_bss_38.x -= 140.0f; } - lbl_1_bss_44[0] = BoardModelCreate(0x79001C, NULL, 0); - lbl_1_bss_44[1] = BoardModelCreate(0x79001D, NULL, 0); + lbl_1_bss_44[0] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x1C), NULL, 0); + lbl_1_bss_44[1] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W05, 0x1D), NULL, 0); BoardModelVisibilitySet(lbl_1_bss_44[0], 0); BoardModelVisibilitySet(lbl_1_bss_44[1], 0); BoardModelAttrSet(lbl_1_bss_44[0], 0x40000001); @@ -110,25 +110,25 @@ void fn_1_3044(void) { HuPrcSleep(0x88); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_4A), lbl_1_data_1C4[lbl_1_bss_48], &sp20); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_4E[lbl_1_bss_48]), "bakawa1", &sp14); - PSVECAdd(&sp20, &sp14, &sp14); + VECAdd(&sp20, &sp14, &sp14); BoardModelPosSetV(lbl_1_bss_44[0], &sp14); BoardModelVisibilitySet(lbl_1_bss_44[0], 1); BoardModelMotionTimeSet(lbl_1_bss_44[0], 0.0f); HuAudFXPlay(0x48C); - PSVECSubtract(&lbl_1_bss_38, &sp14, &sp8); + VECSubtract(&lbl_1_bss_38, &sp14, &sp8); sp8.y = 0.0f; - PSVECNormalize(&sp8, &sp8); - PSVECScale(&sp8, &sp8, 8.0f); + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, 8.0f); temp_f30 = 11.0f; var_f31 = 0.0f; while (1) { sp8.y = (temp_f30 - (0.075 * (0.25f * (var_f31 * var_f31)))); var_f31 += 1.0f; - PSVECAdd(&sp14, &sp8, &sp14); - PSVECSubtract(&lbl_1_bss_38, &sp14, &sp20); + VECAdd(&sp14, &sp8, &sp14); + VECSubtract(&lbl_1_bss_38, &sp14, &sp20); sp20.y = 0.0f; - var_f29 = PSVECMag(&sp20); + var_f29 = VECMag(&sp20); if (var_f29 <= 8.0f) { sp14.x = lbl_1_bss_38.x; sp14.z = lbl_1_bss_38.z; @@ -153,7 +153,7 @@ void fn_1_3044(void) { void fn_1_3430(void) { if (GWPlayer[lbl_1_bss_4C].bowser_suit == 0) { - BoardPlayerMotionShiftSet(lbl_1_bss_4C, lbl_1_bss_30[2], 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(lbl_1_bss_4C, lbl_1_bss_30[2], 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while (BoardPlayerMotionEndCheck(lbl_1_bss_4C) == 0) { @@ -178,20 +178,20 @@ void fn_1_3514(void) { s32 var_r31; BoardPlayerPosGet(lbl_1_bss_4C, &sp2C); - BoardPlayerMotionShiftSet(lbl_1_bss_4C, 4, 0.0f, 5.0f, 0); - PSVECSubtract(&lbl_1_bss_38, &sp2C, &sp20); + BoardPlayerMotionShiftSet(lbl_1_bss_4C, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); + VECSubtract(&lbl_1_bss_38, &sp2C, &sp20); sp20.y = 0.0f; - PSVECNormalize(&sp20, &sp20); - PSVECScale(&sp20, &sp20, 7.2f); + VECNormalize(&sp20, &sp20); + VECScale(&sp20, &sp20, 7.2f); var_f30 = 10.0f; var_f31 = 0.0f; while (1) { sp20.y = (var_f30 - (0.075f * (0.25f * (var_f31 * var_f31)))); var_f31 += 1.0f; - PSVECAdd(&sp2C, &sp20, &sp2C); - PSVECSubtract(&lbl_1_bss_38, &sp2C, &sp14); + VECAdd(&sp2C, &sp20, &sp2C); + VECSubtract(&lbl_1_bss_38, &sp2C, &sp14); sp14.y = 0.0f; - var_f29 = PSVECMag(&sp14); + var_f29 = VECMag(&sp14); if (var_f29 <= 7.2f) { sp2C.x = lbl_1_bss_38.x; sp2C.z = lbl_1_bss_38.z; @@ -218,19 +218,19 @@ void fn_1_3514(void) { var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x400); } BoardSpacePosGet(0, var_r31, &sp8); - PSVECSubtract(&sp8, &sp2C, &sp20); + VECSubtract(&sp8, &sp2C, &sp20); sp20.y = 0.0f; - PSVECNormalize(&sp20, &sp20); - PSVECScale(&sp20, &sp20, 10.0f); + VECNormalize(&sp20, &sp20); + VECScale(&sp20, &sp20, 10.0f); var_f30 = 9.0f; var_f31 = 0.0f; while (1) { sp20.y = var_f30 - (0.075f * (0.25f * (var_f31 * var_f31))); var_f31 += 1.0f; - PSVECAdd(&sp2C, &sp20, &sp2C); - PSVECSubtract(&sp8, &sp2C, &sp14); + VECAdd(&sp2C, &sp20, &sp2C); + VECSubtract(&sp8, &sp2C, &sp14); sp14.y = 0.0f; - var_f29 = PSVECMag(&sp14); + var_f29 = VECMag(&sp14); if (var_f29 <= 10.0f) { sp2C.x = sp8.x; sp2C.z = sp8.z; @@ -284,7 +284,7 @@ void fn_1_3514(void) { } HuPrcVSleep(); } else { - BoardPlayerMotionShiftSet(lbl_1_bss_4C, 6, 0.0f, 8.0f, 0x40000001U); + BoardPlayerMotionShiftSet(lbl_1_bss_4C, 6, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); break; } } @@ -327,7 +327,7 @@ void fn_1_3E8C(void) { sp8.x = 25.0f; } for (i = 0; i < 60; i++) { - PSVECAdd(&sp14, &sp8, &sp14); + VECAdd(&sp14, &sp8, &sp14); sp8.y -= 0.625f; BoardModelPosSetV(lbl_1_bss_44[1], &sp14); HuPrcVSleep(); diff --git a/src/REL/w06Dll/bowser.c b/src/REL/w06Dll/bowser.c index 5b05c367..bce6d422 100755 --- a/src/REL/w06Dll/bowser.c +++ b/src/REL/w06Dll/bowser.c @@ -89,6 +89,12 @@ static s32 lbl_1_data_4CC[8] = { 0x000002E3 }; +#if VERSION_JP +#define MDL_ID_SHIFT 0 +#else +#define MDL_ID_SHIFT 1 +#endif + static s32 lbl_1_data_4EC[] = { DATA_MAKE_NUM(DATADIR_BKOOPA, 8), DATA_MAKE_NUM(DATADIR_BKOOPA, 10), @@ -250,9 +256,9 @@ static void fn_1_95AC(s32 arg0) { lbl_1_data_49C = BoardPlayerMotionCreate(arg0, lbl_1_data_510[GWPlayer[arg0].character]); BoardPlayerPosGet(arg0, &sp38); BoardModelPosGet(lbl_1_data_49A, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); - BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, 0); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); + BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); HuAudFXPlay(0x3C); BoardMusStart(1, 6, 0x7F, 0); @@ -280,13 +286,13 @@ static void fn_1_95AC(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardWinCreate(2, MAKE_MESSID(48, 2), 5); BoardWinWait(); BoardWinKill(); BoardCameraMotionStartEx(-1, NULL, NULL, 2000.0f, -1.0f, 21); BoardCameraMotionWait(); - BoardModelMotionShiftSet(lbl_1_data_498, 5, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while (BoardModelMotionTimeGet(lbl_1_data_498) < 80.0f) { HuPrcVSleep(); @@ -300,8 +306,8 @@ static void fn_1_95AC(s32 arg0) { omVibrate(arg0, 12, 4, 2); BoardPlayerMotionStart(arg0, lbl_1_data_49C, 0x40000001); temp_r30 = BoardSpaceFlagPosGet(0, 0x8000, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); sp20.x = 500.0f * sp20.x / 90.0f; sp20.z = 500.0f * sp20.z / 90.0f; sp38.y += 150.0f; @@ -384,9 +390,9 @@ static void fn_1_9E5C(s32 arg0) { BoardPlayerPosGet(arg0, &sp38); BoardModelPosGet(lbl_1_data_49A, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); - BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, 0); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); + BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); HuAudFXPlay(0x3C); BoardMusStart(1, 6, 0x7F, 0); @@ -414,7 +420,7 @@ static void fn_1_9E5C(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(9); while (BoardModelMotionTimeGet(lbl_1_data_498) < 33.0f) { HuPrcVSleep(); @@ -422,12 +428,12 @@ static void fn_1_9E5C(s32 arg0) { HuAudFXPlay(0x51); var_r30 = BoardPlayerCoinsGet(arg0); if (var_r30 != 0) { - var_r29 = 0x300003; + var_r29 = MAKE_MESSID(48, 3); var_r28 = -1; var_r30 = BoardPlayerCoinsGet(arg0) - (var_r30 >> 1); var_r25 = 8; } else { - var_r29 = 0x300005; + var_r29 = MAKE_MESSID(48, 5); var_r28 = 1; var_r30 = 50; var_r25 = 7; @@ -459,18 +465,18 @@ static void fn_1_9E5C(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); - BoardPlayerMotionShiftSet(arg0, var_r25, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + BoardPlayerMotionShiftSet(arg0, var_r25, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(10); while (!BoardPlayerMotionEndCheck(arg0)) { HuPrcVSleep(); } if (var_r28 == -1) { - var_r29 = 0x300004; + var_r29 = MAKE_MESSID(48, 4); } else { - var_r29 = 0x300006; + var_r29 = MAKE_MESSID(48, 6); } - BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(0x3A); BoardWinCreate(2, var_r29, 5); BoardWinWait(); @@ -481,7 +487,7 @@ static void fn_1_9E5C(s32 arg0) { BoardCameraMoveSet(1); BoardCameraViewSet(1); BoardCameraMotionWait(); - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); fn_1_B6A0(0.0f, 20); BoardAudSeqPause(0, 0, 1000); } @@ -500,9 +506,9 @@ static void fn_1_A408(s32 arg0) { BoardPlayerPosGet(arg0, &sp38); BoardModelPosGet(lbl_1_data_49A, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); - BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, 0); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); + BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); HuAudFXPlay(0x3C); BoardMusStart(1, 6, 0x7F, 0); @@ -523,16 +529,16 @@ static void fn_1_A408(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardWinCreate(2, MAKE_MESSID(48, 7), 5); BoardWinWait(); BoardWinKill(); fn_1_BD08(0); BoardPlayerPosGet(arg0, &sp38); BoardAudSeqFadeOut(1, 1000); - BoardModelMotionShiftSet(lbl_1_data_498, 2, 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 2, 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(55); - BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 5.0f, 0); + BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(5); temp_r28 = HuAudFXPlay(0x3D); BoardPlayerPosGet(arg0, &sp20); @@ -656,8 +662,8 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { BoardSpacePosGet(0, arg1, &sp3C); BoardPlayerPosSetV(arg0, &sp3C); BoardModelPosGet(lbl_1_data_49A, &sp30); - PSVECSubtract(&sp30, &sp3C, &sp24); - PSVECNormalize(&sp24, &sp24); + VECSubtract(&sp30, &sp3C, &sp24); + VECNormalize(&sp24, &sp24); BoardPlayerRotYSet(arg0, atan2d(sp24.x, sp24.z)); BoardPlayerSizeSet(arg0, 2); sp18.x = 0.0f; @@ -684,7 +690,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { var_r26 = MAKE_MESSID(48, 10); var_r25 = 8; HuAudFXPlay(0x3A); - BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); } else { var_r26 = MAKE_MESSID(48, 8); var_r25 = 7; @@ -698,7 +704,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { HuPrcVSleep(); } if (var_r29 != 0) { - BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); temp_r23 = BoardPlayerCoinsGet(arg0); var_r30 = temp_r23 - (BoardPlayerCoinsGet(arg0) >> 1); if (var_r30 < 0) { @@ -718,7 +724,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { } HuAudFXPlay(0xF); } else { - BoardModelMotionShiftSet(lbl_1_data_498, 8, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 8, 0.0f, 8.0f, HU3D_MOTATTR_NONE); BoardWinCreate(2, MAKE_MESSID(48, 9), 5); BoardWinWait(); BoardWinKill(); @@ -743,7 +749,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { BoardSpaceTypeSet(0, var_r24, 1); BoardMusStartBoard(); } - BoardPlayerMotionShiftSet(arg0, var_r25, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, var_r25, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); BoardModelAttrSet(lbl_1_data_498, 0x40000004); while (!BoardModelMotionEndCheck(lbl_1_data_498)) { @@ -756,7 +762,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { BoardAudSeqFadeOut(1, 1000); } HuPrcSleep(48); - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardPlayerIdleSet(arg0); fn_1_B6A0(0.0f, 20); } @@ -774,9 +780,9 @@ static void fn_1_B27C(s32 arg0) { BoardPlayerPosGet(arg0, &sp38); BoardModelPosGet(lbl_1_data_49A, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); - BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, 0); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); + BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); HuAudFXPlay(0x3C); sp14.x = 0.0f; @@ -797,11 +803,11 @@ static void fn_1_B27C(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardMusStart(1, 6, 0x7F, 0); - BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); - var_r29 = 0x300026; + var_r29 = MAKE_MESSID(48, 38); var_r27 = 50; BoardWinCreate(2, var_r29, 5); BoardWinWait(); @@ -820,13 +826,13 @@ static void fn_1_B27C(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - var_r29 = 0x300027; - BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, 0); + var_r29 = MAKE_MESSID(48, 39); + BoardModelMotionShiftSet(lbl_1_data_498, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(0x3A); BoardWinCreate(2, var_r29, 5); BoardWinWait(); BoardWinKill(); - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardAudSeqFadeOut(1, 1000); HuPrcSleep(24); BoardPlayerIdleSet(arg0); @@ -862,7 +868,7 @@ static void fn_1_B6A0(float arg0, s16 arg1) { BoardModelRotYSet(lbl_1_data_498, arg0); return; } - BoardModelMotionShiftSet(lbl_1_data_498, 6, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 6, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(lbl_1_data_498, 2.0f); while (arg1 > 0) { var_f27 = var_f25 + BoardModelRotYGet(lbl_1_data_498); @@ -871,7 +877,7 @@ static void fn_1_B6A0(float arg0, s16 arg1) { arg1--; } BoardModelRotYSet(lbl_1_data_498, arg0); - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } static void fn_1_B8E0(omObjData *arg0) { @@ -960,7 +966,7 @@ static void fn_1_BD8C(s32 arg0) { OSs8tof32(&lbl_1_data_4A4[lbl_1_bss_0->unk04 - 1], &var_f25); BoardPlayerPosGet(arg0, &sp18); BoardModelPosGet(lbl_1_data_49A, &sp24); - PSVECSubtract(&sp18, &sp24, &spC); + VECSubtract(&sp18, &sp24, &spC); var_f26 = atan2d(spC.x, spC.z); BoardPlayerMotBlendSet(arg0, var_f26 + 180.0f, 0x14); fn_1_B6A0(var_f25, 20); @@ -972,7 +978,7 @@ static void fn_1_BD8C(s32 arg0) { void fn_1_C108(s32 arg0) { if (arg0 != 0) { - BoardModelMotionShiftSet(lbl_1_data_498, 2, 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 2, 0.0f, 10.0f, HU3D_MOTATTR_NONE); BoardModelMotionSpeedSet(lbl_1_data_498, 2.0f); HuPrcSleep(30); lbl_1_bss_0->unk00_field4 = 1; @@ -989,7 +995,7 @@ void fn_1_C108(s32 arg0) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } } @@ -1036,7 +1042,7 @@ static void fn_1_C40C(void) { BoardCameraMotionWait(); BoardCameraTargetModelSet(-1); BoardModelRotYSet(lbl_1_data_498, var_f30); - lbl_1_data_4A0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 99), NULL, 0); + lbl_1_data_4A0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 98 + MDL_ID_SHIFT), NULL, 0); BoardModelVisibilitySet(lbl_1_data_4A0, 0); BoardModelLayerSet(lbl_1_data_4A0, 2); var_r29 = BoardSpaceStarGet(lbl_1_bss_0->unk04 - 1); @@ -1058,7 +1064,7 @@ static void fn_1_C40C(void) { BoardWinWait(); BoardWinKill(); HuAudFXPlay(0x359); - BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(11); HuAudFXPlay(0x33F); HuAudFXPlay(0x3C); @@ -1077,7 +1083,7 @@ static void fn_1_C40C(void) { while (!BoardModelMotionEndCheck(lbl_1_data_498)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(lbl_1_data_498, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); BoardWinCreate(0, MAKE_MESSID(48, 12), -1); BoardWinWait(); BoardWinKill(); @@ -1205,9 +1211,9 @@ void fn_1_CD0C(void) { BoardModelVisibilitySet(lbl_1_data_49A, 1); BoardModelPosGet(lbl_1_data_498, &sp20); BoardViewFocusGetPos(&sp2C); - PSVECSubtract(&sp2C, &sp20, &sp14); + VECSubtract(&sp2C, &sp20, &sp14); sp14.y = 0.0f; - temp_f30 = PSVECMag(&sp14); + temp_f30 = VECMag(&sp14); if (temp_f30 > 3000.0f) { var_r30 = 180; } else if (temp_f30 > 1500.0f) { @@ -1222,7 +1228,7 @@ void fn_1_CD0C(void) { while (!BoardViewMoveCheck()) { HuPrcVSleep(); } - BoardWinCreate(3, 0x300001, -1); + BoardWinCreate(3, MAKE_MESSID(48, 1), -1); BoardWinWait(); BoardWinKill(); } diff --git a/src/REL/w06Dll/bridge.c b/src/REL/w06Dll/bridge.c index 9045bc1e..d1b18256 100755 --- a/src/REL/w06Dll/bridge.c +++ b/src/REL/w06Dll/bridge.c @@ -118,7 +118,7 @@ void fn_1_7BB0(void) { temp_r27 = BoardSpaceFlagPosGet(0, lbl_1_data_434[i][var_r28], &sp8); BoardModelPosSetV(lbl_1_bss_D0[i], &sp8); BoardModelRotYSet(lbl_1_bss_D0[i], lbl_1_data_41C[i][var_r28]); - BoardModelMotionShiftSet(lbl_1_bss_D0[i], 0, 60.0f * var_f29, 0.0f, 0); + BoardModelMotionShiftSet(lbl_1_bss_D0[i], 0, 60.0f * var_f29, 0.0f, HU3D_MOTATTR_NONE); HuPrcSleep(2); BoardModelMotionSpeedSet(lbl_1_bss_D0[i], 0.0f); lbl_1_bss_D6[i][var_r28] = temp_r27; @@ -157,7 +157,7 @@ void fn_1_7FA4(void) { temp_r29 = BoardSpaceFlagPosGet(0, lbl_1_data_434[var_r31][temp_r30], &sp8); BoardModelPosSetV(lbl_1_bss_D0[var_r31], &sp8); BoardModelRotYSet(lbl_1_bss_D0[var_r31], lbl_1_data_41C[var_r31][temp_r30]); - BoardModelMotionShiftSet(lbl_1_bss_D0[var_r31], 0, 60.0f * temp_f31, 0.0f, 0); + BoardModelMotionShiftSet(lbl_1_bss_D0[var_r31], 0, 60.0f * temp_f31, 0.0f, HU3D_MOTATTR_NONE); HuPrcSleep(2); BoardModelMotionSpeedSet(lbl_1_bss_D0[var_r31], 0.0f); lbl_1_bss_D6[var_r31][temp_r30] = temp_r29; @@ -226,7 +226,7 @@ static s32 fn_1_8490(s32 arg0, s8 arg1) { BoardPlayerPosGet(arg0, &sp18); BoardSpacePosGet(0, lbl_1_bss_E2, &sp24); - PSVECSubtract(&sp24, &sp18, &spC); + VECSubtract(&sp24, &sp18, &spC); temp_f30 = atan2d(spC.x, spC.z); BoardPlayerMotBlendSet(arg0, temp_f30, 0xF); while (!BoardPlayerMotBlendCheck(arg0)) { @@ -249,7 +249,7 @@ static s32 fn_1_8490(s32 arg0, s8 arg1) { BoardPlayerIdleSet(arg0); HuPrcSleep(30); } else { - BoardPlayerMotionShiftSet(arg0, lbl_1_data_418, 0.0f, 6.0f, 0); + BoardPlayerMotionShiftSet(arg0, lbl_1_data_418, 0.0f, 6.0f, HU3D_MOTATTR_NONE); BoardPlayerMotionSpeedSet(arg0, 1.5f); HuPrcSleep(60); } @@ -262,7 +262,7 @@ static s32 fn_1_8490(s32 arg0, s8 arg1) { BoardPlayerIdleSet(arg0); HuPrcSleep(30); } else { - BoardPlayerMotionShiftSet(arg0, lbl_1_data_418, 0.0f, 6.0f, 0x40000001); + BoardPlayerMotionShiftSet(arg0, lbl_1_data_418, 0.0f, 6.0f, HU3D_MOTATTR_LOOP); BoardPlayerMotionSpeedSet(arg0, 3.0f); HuPrcSleep(60); } diff --git a/src/REL/w06Dll/fire.c b/src/REL/w06Dll/fire.c index be247094..f9fb964b 100755 --- a/src/REL/w06Dll/fire.c +++ b/src/REL/w06Dll/fire.c @@ -49,6 +49,24 @@ static s16 lbl_1_data_22A = -1; static s16 lbl_1_data_22C = -1; static s16 lbl_1_data_22E = -1; +#if VERSION_PAL +static s32 lbl_1_data_230[] = { + MAKE_MESSID(8, 0), + MAKE_MESSID(8, 1), + MAKE_MESSID(8, 2), + MAKE_MESSID(8, 3), + MAKE_MESSID(8, 4), + MAKE_MESSID(8, 5), + MAKE_MESSID(8, 6), + MAKE_MESSID(8, 7), + MAKE_MESSID(8, 8), + MAKE_MESSID(8, 9), + MAKE_MESSID(8, 10), + MAKE_MESSID(8, 11), + MAKE_MESSID(8, 12), + MAKE_MESSID(8, 13) +}; +#else static s32 lbl_1_data_230[] = { MAKE_MESSID(8, 14), MAKE_MESSID(8, 15), @@ -65,7 +83,7 @@ static s32 lbl_1_data_230[] = { MAKE_MESSID(8, 26), MAKE_MESSID(8, 27) }; - +#endif void fn_1_6EF0(void) { BoardRollDispSet(0); lbl_1_bss_90 = HuPrcChildCreate(fn_1_6F80, 0x2003, 0x3800, 0, boardMainProc); @@ -95,7 +113,7 @@ static void fn_1_6F80(void) { fn_1_72CC(temp_r31); fn_1_7760(temp_r31); BoardCameraMotionWait(); - BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(8); while (BoardModelMotionTimeGet(lbl_1_bss_C0) < 22.0f) { HuPrcVSleep(); @@ -113,7 +131,7 @@ static void fn_1_6F80(void) { if (lbl_1_bss_B8 != -1) { HuAudFXStop(lbl_1_bss_B8); } - BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 60.0f, 8.0f, 0); + BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 60.0f, 8.0f, HU3D_MOTATTR_NONE); fn_1_73EC(0.0f); fn_1_7574(); while (!BoardModelMotionEndCheck(lbl_1_bss_C0)) { @@ -154,7 +172,7 @@ static void fn_1_72CC(s32 arg0) { } BoardPlayerPosGet(arg0, &sp18); BoardModelPosGet(lbl_1_bss_C0, &sp24); - PSVECSubtract(&sp24, &sp18, &spC); + VECSubtract(&sp24, &sp18, &spC); for (i = 0; i < 4; i++) { if (var_r30 & BoardSpaceFlagGet(0, GWPlayer[i].space_curr)) { lbl_1_bss_C2[i] = 1; @@ -203,9 +221,12 @@ static void fn_1_74BC(s32 arg0) { static void fn_1_7574(void) { s32 temp_r3; s32 temp_r29; + #if VERSION_PAL + s32 playerNo = GWSystem.player_curr; + #endif s32 temp_r28; s32 i; - + for (i = 0; i < 4; i++) { if (lbl_1_bss_C2[i] == 0) { continue; @@ -218,11 +239,17 @@ static void fn_1_7574(void) { BoardWinCreate(0, MAKE_MESSID(48, 16), -1); BoardWinInsertMesSet(temp_r28, 0); BoardWinInsertMesSet(lbl_1_data_230[temp_r29], 1); + #if VERSION_PAL + GWSystem.player_curr = i; + #endif BoardWinPlayerSet(i); BoardWinWait(); BoardWinKill(); } } + #if VERSION_PAL + GWSystem.player_curr = playerNo; + #endif } static void fn_1_7674(s32 arg0) { @@ -265,11 +292,11 @@ static void fn_1_7760(s32 arg0) { } BoardModelPosGet(lbl_1_bss_C0, &sp20); BoardSpacePosGet(0, var_r29, &sp2C); - PSVECSubtract(&sp2C, &sp20, &sp8); + VECSubtract(&sp2C, &sp20, &sp8); sp8.x *= 0.4f; sp8.y *= 0.4f; sp8.z *= 0.4f; - PSVECAdd(&sp20, &sp8, &sp2C); + VECAdd(&sp20, &sp8, &sp2C); lbl_1_data_22A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0); BoardModelVisibilitySet(lbl_1_data_22A, 0); BoardModelPosSetV(lbl_1_data_22A, &sp2C); diff --git a/src/REL/w06Dll/mg_coin.c b/src/REL/w06Dll/mg_coin.c index 112ba588..5734aa84 100755 --- a/src/REL/w06Dll/mg_coin.c +++ b/src/REL/w06Dll/mg_coin.c @@ -203,20 +203,20 @@ static s32 fn_1_4BF8(s32 arg0) { BoardModelPosGet(lbl_1_bss_C[0], &sp38); sp38.x += 115.0 * sin(M_PI); sp38.z += 115.0 * cos(M_PI); - PSVECSubtract(&sp38, &sp2C, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp38, &sp2C, &sp20); + VECNormalize(&sp20, &sp20); BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 40); BoardModelPosGet(lbl_1_bss_C[5], &sp2C); - BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f); while (GWPlayer[arg0].moving) { BoardPlayerPosGet(arg0, &sp38); - PSVECSubtract(&sp38, &sp2C, &sp20); + VECSubtract(&sp38, &sp2C, &sp20); BoardModelRotYSet(lbl_1_bss_C[5], atan2d(sp20.x, sp20.z)); HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardPlayerIdleSet(arg0); BoardPlayerRotYSet(arg0, -90.0f); BoardAudSeqPause(0, 1, 1000); @@ -255,7 +255,7 @@ static void fn_1_4FB8(s32 arg0) { while (lbl_1_bss_54) { HuPrcVSleep(); } - BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while (!BoardPlayerMotionEndCheck(arg0)) { HuPrcVSleep(); @@ -281,15 +281,15 @@ static void fn_1_519C(s32 arg0) { if (lbl_1_bss_8C == 0) { BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 40); BoardModelPosGet(lbl_1_bss_C[5], &sp20); - BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f); while (GWPlayer[arg0].moving) { BoardPlayerPosGet(arg0, &sp14); - PSVECSubtract(&sp14, &sp20, &sp8); + VECSubtract(&sp14, &sp20, &sp8); BoardModelRotYSet(lbl_1_bss_C[5], atan2d(sp8.x, sp8.z)); HuPrcVSleep(); } - BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } BoardModelRotYSet(lbl_1_bss_C[5], 0.0f); BoardCameraMotionWait(); @@ -336,8 +336,8 @@ static void fn_1_5490(s32 arg0) { sp3C.x += 50.0f; BoardPlayerPosGet(arg0, &sp30); sp30.x -= 10.0f; - PSVECSubtract(&sp30, &sp3C, &sp24); - PSVECNormalize(&sp24, &sp18); + VECSubtract(&sp30, &sp3C, &sp24); + VECNormalize(&sp24, &sp18); temp_r3->trans.x = sp24.x / 60.0f; temp_r3->trans.y = sp24.y / 60.0f; temp_r3->trans.z = sp24.z / 60.0f; @@ -446,7 +446,7 @@ static void fn_1_59D0(s32 arg0) { return; } if (arg0 == 4) { - BoardModelMotionShiftSet(temp_r31->unk04, 2, 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(temp_r31->unk04, 2, 0.0f, 8.0f, HU3D_MOTATTR_NONE); temp_r31->unk02 = 10; return; } diff --git a/src/REL/w06Dll/mg_item.c b/src/REL/w06Dll/mg_item.c index 60400ef0..6313eb6d 100755 --- a/src/REL/w06Dll/mg_item.c +++ b/src/REL/w06Dll/mg_item.c @@ -1,6 +1,15 @@ #include "REL/w06Dll.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/ui.h" +#include "game/board/window.h" #include "game/data.h" +#include "game/frand.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfman.h" @@ -10,15 +19,7 @@ #include "game/process.h" #include "game/sprite.h" #include "game/window.h" -#include "game/frand.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/ui.h" -#include "game/board/window.h" + #include "dolphin.h" #include "ext_math.h" @@ -132,7 +133,8 @@ static s8 lbl_1_data_1AD[3] = { 0, 0, 0 }; static s16 lbl_1_data_1B0 = -1; static omObjData *lbl_1_data_1B4[3] = { NULL, NULL, NULL }; -void fn_1_D70(void) { +void fn_1_D70(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -157,7 +159,8 @@ void fn_1_D70(void) { } } -void fn_1_F6C(void) { +void fn_1_F6C(void) +{ s32 i; for (i = 0; i < 3; i++) { @@ -173,7 +176,8 @@ void fn_1_F6C(void) { } } -void fn_1_1054(void) { +void fn_1_1054(void) +{ BoardRollDispSet(0); lbl_1_bss_18 = HuPrcChildCreate(fn_1_1148, 0x2003, 0x3800, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_18, fn_1_10E4); @@ -183,7 +187,8 @@ void fn_1_1054(void) { BoardRollDispSet(1); } -static void fn_1_10E4(void) { +static void fn_1_10E4(void) +{ fn_1_43DC(); if (lbl_1_data_1A8 != -1) { HuWinKill(lbl_1_data_1A8); @@ -192,7 +197,8 @@ static void fn_1_10E4(void) { lbl_1_bss_18 = NULL; } -static void fn_1_1148(void) { +static void fn_1_1148(void) +{ s32 temp_r3; s32 temp_r31; @@ -205,7 +211,8 @@ static void fn_1_1148(void) { HuPrcEnd(); } -static void fn_1_11B0(void) { +static void fn_1_11B0(void) +{ float sp8[2]; float var_f31; float var_f30; @@ -219,7 +226,8 @@ static void fn_1_11B0(void) { HuWinMesSet(lbl_1_data_1A8, MAKE_MESSID(48, 25)); } -static s32 fn_1_12A0(s32 arg0) { +static s32 fn_1_12A0(s32 arg0) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -273,8 +281,8 @@ static s32 fn_1_12A0(s32 arg0) { lbl_1_bss_34 = BoardSpaceLinkFlagSearch(0, var_r30, 0x02000000); BoardPlayerPosGet(arg0, &sp2C); BoardSpacePosGet(0, lbl_1_bss_34, &sp38); - PSVECSubtract(&sp38, &sp2C, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp38, &sp2C, &sp20); + VECNormalize(&sp20, &sp20); BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 20); while (GWPlayer[arg0].moving) { @@ -285,7 +293,8 @@ static s32 fn_1_12A0(s32 arg0) { return 1; } -static void fn_1_15CC(s32 arg0) { +static void fn_1_15CC(s32 arg0) +{ s8 sp8[] = { 80, 50 }; s32 var_r28; s16 temp_r26; @@ -343,7 +352,8 @@ static void fn_1_15CC(s32 arg0) { BoardWinCreate(2, MAKE_MESSID(48, 41), 6); BoardWinWait(); BoardWinKill(); - } else { + } + else { for (var_r31 = 0; var_r31 < 3; var_r31++) { if (lbl_1_bss_30[var_r31] == 0) { lbl_1_bss_33 = var_r31; @@ -377,7 +387,7 @@ static void fn_1_15CC(s32 arg0) { } fn_1_2048(lbl_1_bss_33, 3); temp_r25 = HuAudSStreamPlay(2); - BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while (!BoardPlayerMotionEndCheck(arg0)) { HuPrcVSleep(); @@ -400,7 +410,8 @@ static void fn_1_15CC(s32 arg0) { } } -static void fn_1_1BE0(s32 arg0, s32 arg1) { +static void fn_1_1BE0(s32 arg0, s32 arg1) +{ Vec sp18; Vec spC; s16 temp_r30; @@ -420,7 +431,8 @@ static void fn_1_1BE0(s32 arg0, s32 arg1) { fn_1_2048(-1, 4); } -static void fn_1_1CB0(s32 arg0) { +static void fn_1_1CB0(s32 arg0) +{ while (!BoardModelMotionEndCheck(lbl_1_bss_3C[arg0])) { HuPrcVSleep(); } @@ -430,7 +442,8 @@ static void fn_1_1CB0(s32 arg0) { } } -static void fn_1_1D5C(s32 arg0) { +static void fn_1_1D5C(s32 arg0) +{ s8 spC[] = { 0x20, 0x40, 0x60 }; s16 sp10[] = { -100, 0, 100 }; s32 sp8; @@ -442,7 +455,8 @@ static void fn_1_1D5C(s32 arg0) { } } -static void fn_1_1E30(s32 arg0) { +static void fn_1_1E30(s32 arg0) +{ s8 spC[] = { 0x20, 0x40, 0x60 }; s16 sp10[] = { -100, 0, 100 }; s32 sp8; @@ -454,7 +468,8 @@ static void fn_1_1E30(s32 arg0) { } } -static void fn_1_1F08(s32 arg0) { +static void fn_1_1F08(s32 arg0) +{ s32 i; s32 j; @@ -477,7 +492,8 @@ static void fn_1_1F08(s32 arg0) { } } -static void fn_1_2048(s32 arg0, s32 arg1) { +static void fn_1_2048(s32 arg0, s32 arg1) +{ Data1B4Work *temp_r30; s32 i; @@ -490,7 +506,8 @@ static void fn_1_2048(s32 arg0, s32 arg1) { } } -static void fn_1_20CC(s32 arg0) { +static void fn_1_20CC(s32 arg0) +{ Data1B4Work *temp_r30; s32 i; @@ -504,7 +521,8 @@ static void fn_1_20CC(s32 arg0) { } } -static s32 fn_1_2174(s32 arg0) { +static s32 fn_1_2174(s32 arg0) +{ Data1B4Work *temp_r31; if (!lbl_1_data_1B4[arg0]) { @@ -514,7 +532,8 @@ static s32 fn_1_2174(s32 arg0) { return temp_r31->unk02; } -static s16 fn_1_21CC(s32 arg0) { +static s16 fn_1_21CC(s32 arg0) +{ Data1B4Work *temp_r31; if (!lbl_1_data_1B4[arg0]) { @@ -524,7 +543,8 @@ static s16 fn_1_21CC(s32 arg0) { return temp_r31->unk06; } -static void fn_1_2220(s32 arg0, s32 arg1, s32 arg2) { +static void fn_1_2220(s32 arg0, s32 arg1, s32 arg2) +{ Mtx sp18; Vec spC; omObjData *temp_r3; @@ -555,7 +575,7 @@ static void fn_1_2220(s32 arg0, s32 arg1, s32 arg2) { temp_r3->rot.y = 0.0f; temp_r3->rot.z = 0.0f; if (arg2 == 5) { - PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f); + MTXTrans(sp18, 0.0f, -50.0f, 0.0f); BoardModelMtxSet(temp_r31->unk06, &sp18); } BoardModelPosSet(temp_r31->unk06, temp_r3->trans.x, temp_r3->trans.y, temp_r3->trans.z); @@ -563,7 +583,8 @@ static void fn_1_2220(s32 arg0, s32 arg1, s32 arg2) { BoardModelLayerSet(temp_r31->unk06, 2); } -static void fn_1_243C(omObjData *arg0) { +static void fn_1_243C(omObjData *arg0) +{ Vec sp14; Vec sp8; Data1B4Work *temp_r31; @@ -592,7 +613,8 @@ static void fn_1_243C(omObjData *arg0) { sp8.y += 200.0f; arg0->trans.y = (sp8.y - sp14.y) / 30.0f; arg0->rot.z = 0.01f; - } else { + } + else { arg0->rot.z += 0.033333335f; if (arg0->rot.z > 1.0f) { arg0->rot.z = 1.0f; @@ -617,7 +639,8 @@ static void fn_1_243C(omObjData *arg0) { BoardModelPosGet(lbl_1_bss_3C[temp_r31->unk00_field2], &sp8); arg0->trans.y = (sp8.y - sp14.y) / 30.0f; arg0->rot.z = 1.0f; - } else { + } + else { arg0->rot.z -= 0.033333335f; if (arg0->rot.z < 0.001f) { arg0->rot.z = 0.001f; @@ -644,11 +667,13 @@ static void fn_1_243C(omObjData *arg0) { BoardPlayerPosGet(temp_r31->unk00_field1, &sp8); arg0->rot.x = (sp8.x - sp14.x) / 30.0f; arg0->rot.z = (sp8.z - sp14.z) / 30.0f; - } else if (temp_r31->unk08 < 30) { + } + else if (temp_r31->unk08 < 30) { sp14.x += arg0->rot.x; sp14.z += arg0->rot.z; BoardModelPosSetV(temp_r31->unk06, &sp14); - } else { + } + else { BoardPlayerPosGet(temp_r31->unk00_field1, &sp8); arg0->trans.x = sp8.x; arg0->trans.y = sp8.y; @@ -669,13 +694,10 @@ static void fn_1_243C(omObjData *arg0) { } } -static s8 lbl_1_data_1C5[14] = { - 1, 1, 3, 3, 2, - 2, 2, 1, 2, 3, - 0, 4, 5, 0 -}; +static s8 lbl_1_data_1C5[14] = { 1, 1, 3, 3, 2, 2, 2, 1, 2, 3, 0, 4, 5, 0 }; -static s32 fn_1_2A1C(s32 arg0) { +static s32 fn_1_2A1C(s32 arg0) +{ s32 var_r29; s32 var_r28; s32 var_r30; @@ -696,24 +718,30 @@ static s32 fn_1_2A1C(s32 arg0) { if (var_r29 > var_r28) { if (var_r29 > var_r30) { var_r31 = 0; - } else if (var_r30 > var_r28) { + } + else if (var_r30 > var_r28) { var_r31 = 2; - } else { + } + else { var_r31 = 1; } - } else { + } + else { if (var_r28 > var_r30) { var_r31 = 1; - } else if (var_r30 > var_r29) { + } + else if (var_r30 > var_r29) { var_r31 = 2; - } else { + } + else { var_r31 = 0; } } return var_r31; } -static void fn_1_2B60(s32 arg0) { +static void fn_1_2B60(s32 arg0) +{ omObjData *temp_r3; Bss24Work *temp_r31; @@ -728,7 +756,8 @@ static void fn_1_2B60(s32 arg0) { temp_r31->unk02 = 1; } -static void fn_1_2C18(void) { +static void fn_1_2C18(void) +{ Bss24Work *var_r27; if (lbl_1_bss_24) { @@ -737,7 +766,8 @@ static void fn_1_2C18(void) { } } -static void fn_1_2D90(s32 arg0) { +static void fn_1_2D90(s32 arg0) +{ Bss24Work *var_r31; if (lbl_1_bss_24) { @@ -746,7 +776,8 @@ static void fn_1_2D90(s32 arg0) { } } -static s32 fn_1_2DD0(void) { +static s32 fn_1_2DD0(void) +{ Bss24Work *var_r31; if (!lbl_1_bss_24) { @@ -756,7 +787,8 @@ static s32 fn_1_2DD0(void) { return var_r31->unk01; } -static u32 fn_1_2E18(Bss24Work *arg0) { +static u32 fn_1_2E18(Bss24Work *arg0) +{ s32 temp_r31; s32 var_r30; @@ -774,7 +806,8 @@ static u32 fn_1_2E18(Bss24Work *arg0) { return var_r30; } -static void fn_1_2EF4(omObjData *arg0) { +static void fn_1_2EF4(omObjData *arg0) +{ Vec sp14; Vec sp8; float var_f30; @@ -794,12 +827,14 @@ static void fn_1_2EF4(omObjData *arg0) { } if (lbl_1_bss_30[0] != 0) { var_r25 = 1; - } else { + } + else { var_r25 = 0; } if (lbl_1_bss_30[2] != 0) { var_r26 = 1; - } else { + } + else { var_r26 = 2; } switch (temp_r30->unk01) { @@ -820,13 +855,16 @@ static void fn_1_2EF4(omObjData *arg0) { if (lbl_1_bss_30[0] == 0 && lbl_1_bss_30[1] == 0) { if (BoardRandMod(100) < 50) { var_r29 = 1; - } else { + } + else { var_r29 = 2; } - } else { + } + else { if (lbl_1_bss_30[0] == 0) { var_r29 = 2; - } else if (lbl_1_bss_30[1] == 0) { + } + else if (lbl_1_bss_30[1] == 0) { var_r29 = 1; } } @@ -884,7 +922,8 @@ static void fn_1_2EF4(omObjData *arg0) { } } -static void fn_1_3470(void) { +static void fn_1_3470(void) +{ omObjData *temp_r3; Bss28Work *temp_r31; @@ -901,7 +940,8 @@ static void fn_1_3470(void) { temp_r31->unk0A = BoardModelMotionCreate(lbl_1_bss_C[4], DATA_MAKE_NUM(DATADIR_W06, 23)); } -static void fn_1_3560(s32 arg0) { +static void fn_1_3560(s32 arg0) +{ Bss28Work *temp_r31; if (!lbl_1_bss_28) { @@ -910,13 +950,15 @@ static void fn_1_3560(s32 arg0) { temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_28, Bss28Work); temp_r31->unk00_field1 = arg0; if (arg0 != 1) { - (void) 0; - } else { + (void)0; + } + else { temp_r31->unk06 = 20; } } -static s32 fn_1_35BC(void) { +static s32 fn_1_35BC(void) +{ Bss28Work *temp_r31; if (!lbl_1_bss_28) { @@ -926,7 +968,8 @@ static s32 fn_1_35BC(void) { return temp_r31->unk00_field1; } -static void fn_1_3604(s32 arg0) { +static void fn_1_3604(s32 arg0) +{ Bss28Work *temp_r31; if (!lbl_1_bss_28) { @@ -949,7 +992,8 @@ static void fn_1_3604(s32 arg0) { } } -static void fn_1_3698(s8 arg0) { +static void fn_1_3698(s8 arg0) +{ Vec sp24; Vec sp18; Vec spC; @@ -969,24 +1013,26 @@ static void fn_1_3698(s8 arg0) { sp18.z = sp24.z; temp_f31 = sp18.x - sp24.x; if (ABS(temp_f31) < 1.0f) { - BoardModelMotionShiftSet(lbl_1_bss_C[4], 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[4], 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); lbl_1_bss_28->trans.y = 0.0f; return; } if (ABS(temp_f31) >= 300.0f) { var_f30 = 40.0f; temp_r31->unk06 *= 2; - } else { + } + else { var_f30 = 20.0f; } - PSVECSubtract(&sp18, &sp24, &spC); + VECSubtract(&sp18, &sp24, &spC); lbl_1_bss_28->trans.y = temp_f31 / var_f30; BoardModelRotYSet(lbl_1_bss_C[4], atan2d(spC.x, spC.z)); - BoardModelMotionShiftSet(lbl_1_bss_C[4], temp_r31->unk08, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[4], temp_r31->unk08, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(lbl_1_bss_C[4], 2.0f); } -static void fn_1_3974(omObjData *arg0) { +static void fn_1_3974(omObjData *arg0) +{ Vec sp30; Vec sp24; s32 sp8; @@ -1012,7 +1058,8 @@ static void fn_1_3974(omObjData *arg0) { fn_1_3560(4); return; } - } else { + } + else { temp_r31->unk03++; } fn_1_3560(1); @@ -1037,11 +1084,11 @@ static void fn_1_3974(omObjData *arg0) { fn_1_3560(0); temp_r31->unk06 = 0; BoardModelRotYSet(lbl_1_bss_C[4], 0.0f); - BoardModelMotionShiftSet(lbl_1_bss_C[4], 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[4], 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); break; case 2: if (temp_r31->unk06++ == 0) { - BoardModelMotionShiftSet(lbl_1_bss_C[4], temp_r31->unk0A, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[4], temp_r31->unk0A, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); break; } if (temp_r31->unk06 < 50) { @@ -1053,7 +1100,7 @@ static void fn_1_3974(omObjData *arg0) { case 4: temp_r31->unk00_field3 = 0; lbl_1_bss_33 = temp_r31->unk01[temp_r31->unk00_field2]; - BoardModelMotionShiftSet(lbl_1_bss_C[4], 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(lbl_1_bss_C[4], 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); fn_1_3560(0); break; case 5: @@ -1062,7 +1109,8 @@ static void fn_1_3974(omObjData *arg0) { } } -static void fn_1_4070(void) { +static void fn_1_4070(void) +{ Bss2CWork *temp_r31; lbl_1_bss_1C = 0; @@ -1074,7 +1122,8 @@ static void fn_1_4070(void) { temp_r31->unk04 = MGSeqTimerCreateXY(temp_r31->unk01, 288, 64); } -static void fn_1_4124(void) { +static void fn_1_4124(void) +{ Bss2CWork *temp_r31; if (!lbl_1_bss_2C) { @@ -1086,7 +1135,8 @@ static void fn_1_4124(void) { temp_r31->unk00_field0 = 1; } -static void fn_1_4194(omObjData *arg0) { +static void fn_1_4194(omObjData *arg0) +{ Bss2CWork *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, Bss2CWork); @@ -1107,7 +1157,8 @@ static void fn_1_4194(omObjData *arg0) { } if (temp_r31->unk01 != 0) { temp_r31->unk01--; - } else { + } + else { MGSeqParamSet(temp_r31->unk04, 2, -1); temp_r31->unk04 = -1; lbl_1_bss_1C = 1; @@ -1117,7 +1168,8 @@ static void fn_1_4194(omObjData *arg0) { temp_r31->unk02 = 60; } -static void fn_1_42AC(s16 arg0) { +static void fn_1_42AC(s16 arg0) +{ ParticleData *var_r31; lbl_1_bss_20 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0)); @@ -1132,7 +1184,8 @@ static void fn_1_42AC(s16 arg0) { var_r31->unk_02 = arg0; } -static void fn_1_43DC(void) { +static void fn_1_43DC(void) +{ if (lbl_1_data_1B0 != -1) { Hu3DModelKill(lbl_1_data_1B0); lbl_1_data_1B0 = -1; @@ -1143,7 +1196,8 @@ static void fn_1_43DC(void) { } } -static void fn_1_4460(ModelData *model, ParticleData *particle, Mtx matrix) { +static void fn_1_4460(ModelData *model, ParticleData *particle, Mtx matrix) +{ HsfanimStruct01 *var_r31; Vec sp8; float var_f31; diff --git a/src/REL/w10Dll/main.c b/src/REL/w10Dll/main.c index a9eaff17..0b8de21c 100644 --- a/src/REL/w10Dll/main.c +++ b/src/REL/w10Dll/main.c @@ -134,9 +134,9 @@ void BoardCreate(void) BoardBooHouseHostSet(boardBooHouseHostMdl); BoardShopHostSet(boardShopHostMdl); BoardLotteryHostSet(boardLotteryHostMdl); - HuWinMesMaxSizeGet(1, size, 0x2E003A); + HuWinMesMaxSizeGet(1, size, MAKE_MESSID(0x2E, 0x3A)); tutorialExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1); - HuWinMesSet(tutorialExitWin, 0x2E003A); + HuWinMesSet(tutorialExitWin, MAKE_MESSID(0x2E, 0x3A)); HuWinMesSpeedSet(tutorialExitWin, 0); HuWinPriSet(tutorialExitWin, 1); HuWinMesPalSet(tutorialExitWin, 7, 0, 0, 0); diff --git a/src/REL/w20Dll/main.c b/src/REL/w20Dll/main.c index f4c3829d..70592f07 100644 --- a/src/REL/w20Dll/main.c +++ b/src/REL/w20Dll/main.c @@ -17,14 +17,14 @@ s16 lbl_1_data_6 = 0xFFFF; s16 lbl_1_data_8 = 0xFFFF; s16 lbl_1_data_A = 0xFFFF; s32 lbl_1_data_C[] = { - 0x005F0000, - 0x001A0000, - 0x006D0000, - 0x008A0000, - 0x00850000, - 0x00110000, - 0x000D0000, - 0x00810000, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), }; s32 unkMotTbl[] = { DATA_MAKE_NUM(DATADIR_BGUEST, 42), -1 }; @@ -50,12 +50,12 @@ void BoardCreate(void) lbl_1_bss_0->unk_04 = 0; lbl_1_bss_0->unk_06 = 0; BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W20, 0)); - lbl_1_data_0 = BoardModelCreate(0x7C0001, NULL, 0); + lbl_1_data_0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W20, 0x01), NULL, 0); fn_8006DDE8(lbl_1_data_0, -1.0f); BoardModelPosSet(lbl_1_data_0, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_0, 0, 0x40000001); BoardModelMotionSpeedSet(lbl_1_data_0, 1.0f); - lbl_1_data_2 = BoardModelCreate(0x7C0002, NULL, 0); + lbl_1_data_2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W20, 0x02), NULL, 0); fn_8006DDE8(lbl_1_data_2, -1.0f); BoardModelPosSet(lbl_1_data_2, 0.0f, 0.0f, 0.0f); BoardModelMotionStart(lbl_1_data_2, 0, 0x40000001); diff --git a/src/REL/ztardll/font.c b/src/REL/ztardll/font.c new file mode 100644 index 00000000..74f9608a --- /dev/null +++ b/src/REL/ztardll/font.c @@ -0,0 +1,266 @@ +#include "game/minigame_seq.h" +#include "game/sprite.h" + +#include "REL/ztardll.h" + +#define FONT_CHAR_MAX 100 + +#if VERSION_ENG +s32 lbl_1_data_B0[0xC6] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x01), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x02), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x03), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x04), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x05), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x06), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x07), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x08), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x09), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0A), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0F), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x10), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x11), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x12), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x13), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x14), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x15), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x16), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x17), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x18), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x19), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1A), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1B), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1C), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1D), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1E), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1F), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x20), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x21), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x22), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x23), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x24), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x25), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x26), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x27), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x28), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1D), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0D), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1D), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1D), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1D), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x1D), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x29), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x2A), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x2B), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x2C), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x2D), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x2E), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x2F), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x30), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x31), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x32), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x33), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x34), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x35), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x36), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x37), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x38), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x39), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x3A), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x3B), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x3C), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x3D), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x3E), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x3F), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x40), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x41), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x42), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0A), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0E), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0B), + DATA_MAKE_NUM(DATADIR_INSTFONT, 0x0C), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00) }; +#elif VERSION_PAL +s32 lbl_1_data_B0[0x130] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0x00140025, 0x00140026, 0x00140027, 0x00140028, 0x00140029, 0x0014002A, 0x0014002B, 0x0014002C, 0x0014002D, 0x0014002E, + 0x00140025, 0x00140025, 0x00140025, 0x0014002F, 0x00140025, 0x00140025, 0x00140025, 0x00140035, 0x00140036, 0x00140037, 0x00140038, 0x00140039, + 0x0014003A, 0x0014003B, 0x0014003C, 0x0014003D, 0x0014003E, 0x0014003F, 0x00140040, 0x00140041, 0x00140042, 0x00140043, 0x00140044, 0x00140045, + 0x00140046, 0x00140047, 0x00140048, 0x00140049, 0x0014004A, 0x0014004B, 0x0014004C, 0x0014004D, 0x0014004E, 0x00140043, 0x00140032, 0x00140043, + 0x00140043, 0x00140043, 0x00140043, 0x0014004F, 0x00140050, 0x00140051, 0x00140052, 0x00140053, 0x00140054, 0x00140055, 0x00140056, 0x00140057, + 0x00140058, 0x00140059, 0x0014005A, 0x0014005B, 0x0014005C, 0x0014005D, 0x0014005E, 0x0014005F, 0x00140060, 0x00140061, 0x00140062, 0x00140063, + 0x00140064, 0x00140065, 0x00140066, 0x00140067, 0x00140068, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x0014002F, 0x00140033, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140069, 0x0014006A, 0x0014006B, 0x0014006C, 0x0014006D, 0x0014006E, 0x0014006F, 0x00140070, 0x00140071, + 0x00140072, 0x00140073, 0x00140074, 0x00140075, 0x00140076, 0x00140077, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140030, 0x00140031, 0x00140025, 0x00140025, 0x0014008F, 0x0014008E, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140078, 0x00140079, 0x0014007A, 0x0014007B, 0x0014007C, + 0x0014007D, 0x0014007E, 0x0014007F, 0x00140080, 0x00140081, 0x00140082, 0x00140083, 0x00140084, 0x00140085, 0x00140086, 0x00140087, 0x00140088, + 0x00140089, 0x0014008A, 0x0014008B, 0x0014008C, 0x0014008D, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, + 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025, 0x00140025 }; +#else +s32 lbl_1_data_B0[0x132] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0x00150000, 0x00150001, 0x00150002, 0x00150003, 0x00150004, 0x00150005, 0x00150006, 0x00150007, 0x00150008, 0x00150009, + 0x0013000A, 0x0013000A, 0x0013000A, 0x0015000A, 0x0013000A, 0x0013000A, 0x0013000A, 0x00130014, 0x00130015, 0x00130016, 0x00130017, 0x00130018, + 0x00130019, 0x001500AE, 0x0013001B, 0x0013001C, 0x0013001D, 0x0013001E, 0x0013001F, 0x00130020, 0x00130021, 0x001500AF, 0x00130023, 0x00130024, + 0x00130025, 0x00130026, 0x00130027, 0x00130028, 0x00130029, 0x0013002A, 0x0013002B, 0x0013002C, 0x0013002D, 0x00130022, 0x00130022, 0x00130022, + 0x00130022, 0x00130022, 0x00130022, 0x0013002E, 0x0013002F, 0x00130030, 0x00130031, 0x00130032, 0x00130033, 0x00130034, 0x00130035, 0x00130036, + 0x00130037, 0x00130038, 0x00130039, 0x0013003A, 0x0013003B, 0x0013003C, 0x0013003D, 0x0013003E, 0x0013003F, 0x00130040, 0x00130041, 0x00130042, + 0x00130043, 0x00130044, 0x00130045, 0x00130046, 0x00130047, 0x0013000A, 0x0013000A, 0x0013000A, 0x0013000A, 0x0013000A, 0x0013000A, 0x0013000A, + 0x0013000A, 0x0013000A, 0x0015000A, 0x0013000A, 0x0015008A, 0x0015008C, 0x0015008D, 0x0015008E, 0x0015008F, 0x00150090, 0x00150091, 0x00150092, + 0x00150093, 0x00150094, 0x0013000A, 0x0015005E, 0x0015005F, 0x00150060, 0x00150061, 0x00150062, 0x00150063, 0x00150064, 0x00150065, 0x00150066, + 0x00150067, 0x00150068, 0x00150069, 0x0015006A, 0x0015006B, 0x0015006C, 0x0015006D, 0x0015006E, 0x0015006F, 0x00150070, 0x00150071, 0x00150072, + 0x00150073, 0x00150074, 0x00150075, 0x00150076, 0x00150077, 0x00150078, 0x00150079, 0x0015007A, 0x0015007B, 0x0015007C, 0x0015007D, 0x0015007E, + 0x0015007F, 0x00150080, 0x00150081, 0x00150082, 0x00150083, 0x00150084, 0x00150085, 0x00150086, 0x00150087, 0x00150088, 0x00150089, 0x0015008B, + 0x0013000A, 0x0013000A, 0x0013000A, 0x0013000A, 0x0015000B, 0x0015000C, 0x0013000A, 0x0013000A, 0x0015003A, 0x0015003C, 0x0015003D, 0x0015003E, + 0x0015003F, 0x00150040, 0x00150041, 0x00150042, 0x00150043, 0x00150044, 0x0013000A, 0x0015000E, 0x0015000F, 0x00150010, 0x00150011, 0x00150012, + 0x00150013, 0x00150014, 0x00150015, 0x00150016, 0x00150017, 0x00150018, 0x00150019, 0x0015001A, 0x0015001B, 0x0015001C, 0x0015001D, 0x0015001E, + 0x0015001F, 0x00150020, 0x00150021, 0x00150022, 0x00150023, 0x00150024, 0x00150025, 0x00150026, 0x00150027, 0x00150028, 0x00150029, 0x0015002A, + 0x0015002B, 0x0015002C, 0x0015002D, 0x0015002E, 0x0015002F, 0x00150030, 0x00150031, 0x00150032, 0x00150033, 0x00150034, 0x00150035, 0x00150036, + 0x00150037, 0x00150038, 0x00150039, 0x0015003B, 0x0013000A, 0x0013000A, 0x00150095, 0x00150096, 0x00150097, 0x00150098, 0x00150099, 0x0015009A, + 0x0015009B, 0x0015009C, 0x0015009D, 0x0015009E, 0x0015009F, 0x001500A0, 0x001500A1, 0x001500A2, 0x001500A3, 0x001500A4, 0x001500A5, 0x001500A6, + 0x001500A7, 0x001500A8, 0x001500A9, 0x001500AA, 0x001500AB, 0x001500AC, 0x001500AD, 0x00150045, 0x00150046, 0x00150047, 0x00150048, 0x00150049, + 0x0015004A, 0x0015004B, 0x0015004C, 0x0015004D, 0x0015004E, 0x0015004F, 0x00150050, 0x00150051, 0x00150052, 0x00150053, 0x00150054, 0x00150055, + 0x00150056, 0x00150057, 0x00150058, 0x00150059, 0x0015005A, 0x0015005B, 0x0015005C, 0x0015005D }; +#endif + +s32 fn_1_7754(SeqWork *work, char *mess) +{ + char* str; + s16 len; + s16* posY; + s16 charNum; + s32* fileTbl; + s16 i; + s16 grpNo; + s32 file; + s16 *posX; + AnimData **animP; + s16 gid; + s16 sprid; + s32 var_r19_2; + + fileTbl = lbl_1_data_B0; + for (grpNo = 0; grpNo < 0x10; grpNo++) { + if (work->spr_grp[grpNo] == -1) { + break; + } + } + if (grpNo == 0x10) { + return -1; + } + + animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*))); + posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX)); + posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY)); + + for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) { + if (str[0] == 0x20 || str[0] == 0x10) { + len += VERSION_JP ? 0x1C : 0xE; + } +#if VERSION_PAL + else if (*str >= 0x30) { + var_r19_2 = fileTbl[*str]; + animP[charNum] = HuSprAnimReadFile(var_r19_2); + posX[charNum] = len; + if ((*str >= 0x61) && (*str <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; + } + else if ((*str == 0xC2) || (*str == 0xC3) || (*str == 0xC7)) { + posY[charNum] = 0; + len += 0x12; + } + else if (*str == 0xC6) { + posY[charNum] = 0; + len += 0x18; + } + else if (*str == 0x5C) { + posY[charNum] = 0; + len += 8; + } + else if ((*str >= 0x90) && (*str <= 0x9F)) { + posY[charNum] = -2; + len += 0x18; + } + else if ((*str >= 0xD0) && (*str <= 0xEF)) { + posY[charNum] = -2; + len += 0x12; + } + else if ((*str == 0x3D) || (*str == 0x84)) { + posY[charNum] = 0; + len += 0x14; + } + else { + posY[charNum] = 0; + len += 0x1C; + } + charNum++; + } +#else + else if (str[0] < 0x30) { + } + else if (str[0] == 0x80) { + } + else if (str[0] == 0x81) { + } + else { + if (str[1] == 0x80) { + if ((str[0] >= 0x96) && (str[0] <= 0xA4)) { + file = fileTbl[str[0] + 0x6A]; + } + else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x65]; + } + else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) { + file = fileTbl[str[0] + 0x43]; + } + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x3E]; + } + } + else if (str[1] == 0x81) { + if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x6A]; + } + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x43]; + } + } + else { + file = fileTbl[str[0]]; + } + animP[charNum] = HuSprAnimReadFile(file); + posX[charNum] = len; + if ((str[0] >= 0x61) && (str[0] <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; + } + else if ((str[0] == 0xC2) || (str[0] == 0xC3)) { + posY[charNum] = 0; + len += 0x12; + } + else if (str[0] == 0x5C) { + posY[charNum] = 0; + len += 8; + } + else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) { + posY[charNum] = 4; + len += 0x18; + } + else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) { + posY[charNum] = 4; + len += 0x18; + } +#if !VERSION_JP + else if ((str[0] == 0x3D) || (str[0] == 0x84)) { + posY[charNum] = 0; + len += 0x14; + } +#endif + else { + posY[charNum] = 0; + len += 0x1C; + } + charNum++; + } +#endif + } + gid = HuSprGrpCreate(charNum); + work->spr_grp[grpNo] = gid; + work->alt_word_len = len; + len = (len / 2) - 0xE; + for (i = 0; i < charNum; i++) { + sprid = HuSprCreate(animP[i], 0, 0); + HuSprGrpMemberSet(gid, i, sprid); + HuSprPosSet(gid, i, posX[i] - len, posY[i]); + } + work->word_len = charNum; + HuMemDirectFree(animP); + HuMemDirectFree(posX); + HuMemDirectFree(posY); + return grpNo; +} diff --git a/src/REL/ztardll/main.c b/src/REL/ztardll/main.c new file mode 100644 index 00000000..0d20bade --- /dev/null +++ b/src/REL/ztardll/main.c @@ -0,0 +1,1541 @@ +#include "ext_math.h" +#include "game/chrman.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/ztardll.h" + +extern s32 charVoiceGroupStat[8]; + +void fn_1_1774(void); +void fn_1_1CF0(void); +void fn_1_1DA0(void); +void fn_1_2350(void); +void fn_1_33B0(void); +void fn_1_40E4(void); +void fn_1_424(void); +void fn_1_4374(void); +void fn_1_4948(void); +void fn_1_51BC(s16 arg0); +s32 fn_1_524C(s32 arg0); +void fn_1_66F8(void); +void fn_1_7414(ModelData *model, Mtx matrix); + +omObjData *lbl_1_bss_6C; +Process *lbl_1_bss_68; +s32 lbl_1_bss_64; +s32 lbl_1_bss_60; +s16 lbl_1_bss_5E; +s16 lbl_1_bss_5C; + +s16 lbl_1_bss_5A; +s16 lbl_1_bss_58; +s32 lbl_1_bss_54; +s16 lbl_1_bss_52; +s16 lbl_1_bss_50; +s16 lbl_1_bss_4C[2]; +s16 lbl_1_bss_4A; +s16 lbl_1_bss_48; +s16 lbl_1_bss_46; +s16 lbl_1_bss_44; +s16 lbl_1_bss_42; +s16 lbl_1_bss_3E[2]; +s16 lbl_1_bss_36[4]; +s16 lbl_1_bss_E[4][5]; +s16 lbl_1_bss_C; +Process *lbl_1_bss_8; +s16 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + s32 var_r31; + s32 var_r30; + + OSReport("******* ZP ObjectSetup *********\n"); + lbl_1_bss_68 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_60 = 0; + lbl_1_bss_58 = omovlevtno; + _ClearFlag(0x10000); + _ClearFlag(0x10008); + GWSystem.mg_type = -1; + GWSystem.player_curr = 0; + lbl_1_bss_5E = -1; + mgBoardHostEnableF = 1; + var_r30 = omMgIndexGet(0x29); + lbl_1_bss_54 = GWMGAvailGet(var_r30 + 0x191); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 15000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CRot.x = 0.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 90.0f; + Center.z = 30.0f; + CZoom = 1220.0f; + var_r31 = Hu3DGLightCreate(0.0f, 100.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightInfinitytSet(var_r31); + HuPrcChildCreate(fn_1_424, 0x64, 0x3000, 0, lbl_1_bss_68); + HuPrcChildCreate(fn_1_66F8, 0xC8, 0x1000, 0, lbl_1_bss_68); + lbl_1_bss_6C = omAddObjEx(lbl_1_bss_68, 0x7FDA, 0, 0, -1, omOutView); + Hu3DBGColorSet(0, 0, 0); + HuWinInit(1); + if (lbl_1_bss_58 == 1) { + HuAudVoiceInit(-1); + } + if (lbl_1_bss_58 != 0) { + HuAudSndGrpSetSet(4); + HuAudSeqPlay(0x2E); + } + GWSystem.mg_type = -1; + mgPracticeEnableF = 1; +} + +s16 lbl_1_data_22[4] = { 0x3A, 0xC8, 0x166, 0xC8 }; + +void fn_1_424(void) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + s16 var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r28; + s16 var_r27; + s16 var_r26; + + var_r26 = 0; + var_r27 = 0; + fn_1_7D6C(lbl_1_bss_68); + HuPrcVSleep(); + HuDataDirClose(DATADIR_MPEX); + lbl_1_bss_5A = 0; + if (mgQuitExtraF != 0) { + mgQuitExtraF = 0; + var_r26 = 1; + lbl_1_bss_58 = 0; + } + else { + if (lbl_1_bss_58 == 1) { + lbl_1_bss_5A = 0; + goto block_92; + } + if (lbl_1_bss_58 == 2) { + lbl_1_bss_5A = 1; + goto block_93; + } + GWPlayerCfg[0].group = GWPlayerCfg[1].group = 0; + GWPlayerCfg[2].group = GWPlayerCfg[3].group = 1; + } +block_7: + fn_1_1774(); + if (lbl_1_bss_54 == 0) { + HuSprTPLvlSet(lbl_1_bss_4C[1], 0, 0.5f); + HuSprTPLvlSet(lbl_1_bss_4C[1], 2, 0.5f); + } + if (var_r26 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + HuPrcSleep(0xA); + sp2C.x = 510.0f; + sp2C.y = 80.0f; + sp2C.z = 1500.0f; + Hu3D2Dto3D(&sp2C, 1, &sp8); + sp2C.x = 200.0f; + sp2C.y = 400.0f; + sp2C.z = 100.0f; + Hu3D2Dto3D(&sp2C, 1, &sp20); + VECSubtract(&sp8, &sp20, &sp14); + for (var_r31 = 0; var_r31 <= 0x1E; var_r31++) { + if (var_r31 <= 0x14) { + var_f31 = var_r31 / 20.0; + HuSprGrpPosSet(lbl_1_bss_52, 288.0f, 80.0 - (180.0 * (1.0 - sind((90.0f * var_f31))))); + HuSprGrpPosSet(lbl_1_bss_50, 288.0f, 80.0 - (180.0 * (1.0 - sind((90.0f * var_f31))))); + HuSprGrpPosSet(lbl_1_bss_4C[0], 138.0 - (300.0 * (1.0 - sind((90.0f * var_f31)))), 240.0f); + HuSprGrpPosSet(lbl_1_bss_4C[1], 438.0 + (300.0 * (1.0 - sind((90.0f * var_f31)))), 240.0f); + } + var_f31 = var_r31 / 30.0; + VECScale(&sp14, &sp2C, var_f31); + VECAdd(&sp2C, &sp20, &sp2C); + Hu3DModelRotSet(lbl_1_bss_42, 0.0f, -10.0f, -15.0f); + Hu3DModelPosSetV(lbl_1_bss_42, &sp2C); + HuPrcVSleep(); + } + } + else { + sp2C.x = 510.0f; + sp2C.y = 80.0f; + sp2C.z = 1500.0f; + Hu3D2Dto3D(&sp2C, 1, &sp20); + Hu3DModelRotSet(lbl_1_bss_42, 0.0f, -10.0f, -15.0f); + Hu3DModelPosSetV(lbl_1_bss_42, &sp20); + var_f31 = var_r31 / 20.0; + HuSprGrpPosSet(lbl_1_bss_52, 288.0f, 80.0f); + HuSprGrpPosSet(lbl_1_bss_50, 288.0f, 80.0f); + HuSprGrpPosSet(lbl_1_bss_4C[0], 138.0f, 240.0f); + HuSprGrpPosSet(lbl_1_bss_4C[1], 438.0f, 240.0f); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + } +loop_19: + fn_1_11020(); + fn_1_11264(MAKE_MESSID(0x33, 0x24), 0, 0); + if (lbl_1_bss_5A == 0) { + fn_1_11264(MAKE_MESSID(0x33, 0x25), 0, 1); + } + else { + fn_1_11264(MAKE_MESSID(0x33, 0x2A), 0, 1); + } + fn_1_11708(MAKE_MESSID(0x33, 0x8D)); + for (var_r31 = 0; var_r31 <= 0x0A; var_r31++) { + var_f31 = var_r31 / 10.0; + + HuSprTPLvlSet(lbl_1_bss_4A, 0, var_f31); + HuSprGrpPosSet(lbl_1_bss_4A, lbl_1_data_22[lbl_1_bss_5A * 2], lbl_1_data_22[(lbl_1_bss_5A * 2) + 1]); + HuPrcVSleep(); + } + while (TRUE) { + HuPrcVSleep(); + if ((HuPadStkX[0] / 10) != 0) { + var_r29 = lbl_1_bss_5A; + if (HuPadStkX[0] < 0 && lbl_1_bss_5A > 0) { + lbl_1_bss_5A--; + } + if (HuPadStkX[0] > 0 && lbl_1_bss_5A < 1) { + lbl_1_bss_5A++; + } + if (lbl_1_bss_5A != var_r29) { + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + var_f31 = sind((90.0 * (var_r31 / 10.0))); + var_f30 = lbl_1_data_22[var_r29 * 2] + (var_f31 * (lbl_1_data_22[lbl_1_bss_5A * 2] - lbl_1_data_22[var_r29 * 2])); + HuSprGrpPosSet(lbl_1_bss_4A, var_f30, lbl_1_data_22[(lbl_1_bss_5A * 2) + 1]); + HuPrcVSleep(); + } + if (lbl_1_bss_5A == 0) { + fn_1_11264(MAKE_MESSID(0x33, 0x25), 0, 1); + } + else { + fn_1_11264(MAKE_MESSID(0x33, 0x2A), 0, 1); + } + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + fn_1_111E0(); + fn_1_1190C(); + lbl_1_bss_60 = 1; + while (TRUE) { + HuPrcVSleep(); + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + if (lbl_1_bss_5A != 1 || lbl_1_bss_54 != 0) { + break; + } + HuAudFXPlay(4); + } + } + HuAudFXPlay(2); + fn_1_111E0(); + fn_1_1190C(); + lbl_1_bss_5E = -1; + var_r29 = lbl_1_bss_5A ^ 1; + for (var_r31 = 0; var_r31 <= 0x14; var_r31++) { + if (var_r31 <= 0xA) { + var_f31 = var_r31 / 10.0; + HuSprTPLvlSet(lbl_1_bss_4A, 0, 1.0 - var_f31); + } + var_f31 = 1.0 - (var_r31 / 20.0); + + HuSprGrpScaleSet(lbl_1_bss_4C[var_r29], var_f31, var_f31); + if (lbl_1_bss_5A == 0) { + var_f31 = -var_f31; + } + HuSprGrpPosSet(lbl_1_bss_4C[lbl_1_bss_5A], 288.0f + (150.0f * var_f31), 240.0f); + HuPrcVSleep(); + } + for (var_r27 = 0;;) { + if (lbl_1_bss_5A == 0) { + var_r30 = fn_1_97D0(2, var_r27); + } + else { + var_r30 = fn_1_97D0(3, var_r27); + if (var_r30 != 0) { + mgTypeCurr = 2; + var_r30 = fn_1_524C(1); + if (var_r30 == 0) { + var_r27 = 1; + continue; + } + } + } + if (var_r30 == 0) { + for (var_r31 = 0; var_r31 <= 0x14; var_r31++) { + var_f31 = var_r31 / 20.0; + HuSprGrpScaleSet(lbl_1_bss_4C[var_r29], var_f31, var_f31); + if (lbl_1_bss_5A != 0) { + var_f31 = -var_f31; + } + HuSprGrpPosSet(lbl_1_bss_4C[lbl_1_bss_5A], 288.0f - (150.0f * var_f31), 240.0f); + var_f31 = var_r31 / 20.0; + if (lbl_1_bss_5A == 0) { + var_r28 = -1; + } + else { + var_r28 = 1; + } + HuSprGrpPosSet(lbl_1_bss_46, 288.0 + (var_r28 * (400.0 * (1.0 - cosd((90.0f * var_f31))))), 340.0f); + HuPrcVSleep(); + } + goto loop_19; + } + var_r27 = 1; + fn_1_1DA0(); + for (var_r31 = 0; var_r31 <= 0x14; var_r31++) { + var_f31 = var_r31 / 20.0; + if (lbl_1_bss_5A == 0) { + var_r28 = -1; + } + else { + var_r28 = 1; + } + HuSprGrpPosSet(lbl_1_bss_46, 288.0 + (var_r28 * (400.0 * (1.0 - sind((90.0f * var_f31))))), 340.0f); + HuPrcVSleep(); + } + if (lbl_1_bss_5A == 0) { + fn_1_40E4(); + } + if (lbl_1_bss_4 == 0) { + lbl_1_bss_4 = 1; + HuPrcChildCreate(fn_1_7C00, 0x64, 0x2000, 0, lbl_1_bss_68); + } + fn_1_11020(); + fn_1_11264(MAKE_MESSID(0x33, 0x2C), 0, 0); + var_r30 = fn_1_11390(0); + if (var_r30 != -1) { + if (var_r30 != 1) { + break; + } + } + fn_1_111E0(); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + var_f31 = cosd((90.0 * (var_r31 / 10.0))); + HuSprGrpScaleSet(lbl_1_bss_46, 1.0f, var_f31); + HuPrcVSleep(); + } + HuSprGrpKill(lbl_1_bss_46); + } + fn_1_111E0(); + fn_1_1190C(); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + mgBattleStarMax = 0; + HuSprGrpKill(lbl_1_bss_48); + HuSprGrpKill(lbl_1_bss_52); + HuSprGrpKill(lbl_1_bss_50); + HuSprGrpKill(lbl_1_bss_4C[0]); + HuSprGrpKill(lbl_1_bss_4C[1]); + HuSprGrpKill(lbl_1_bss_4A); + HuSprGrpKill(lbl_1_bss_46); + Hu3DModelKill(lbl_1_bss_42); + HuPrcKill(lbl_1_bss_8); + while (lbl_1_bss_4 != 0) { + HuPrcVSleep(); + } + if (lbl_1_bss_5A == 0) { + block_92: + fn_1_2350(); + } + else { + block_93: + fn_1_4374(); + } + var_r26 = 1; + goto block_7; +} + +void fn_1_1774(void) +{ + SeqWork work; + s16 var_r31; + s16 var_r30; + char *var_r29; + s16 var_r28; + AnimData *var_r27; + char *var_r26; + AnimData *var_r25; + AnimData *var_r24; + AnimData *var_r23; + + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 3)); + lbl_1_bss_48 = HuSprGrpCreate(1); + var_r31 = HuSprCreate(var_r27, 0xC8, 0); + HuSprGrpMemberSet(lbl_1_bss_48, 0, var_r31); + HuSprGrpDrawNoSet(lbl_1_bss_48, 0x7F); + HuSprGrpPosSet(lbl_1_bss_48, 288.0f, 240.0f); + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + work.sprite[var_r30] = work.spr_grp[var_r30] = -1; + } + var_r29 = MessData_MesPtrGet(messDataPtr, MAKE_MESSID(0x17, 0x21)); + for (var_r26 = var_r29; *var_r29 != 0; var_r29++) { + if (*var_r29 == 0xA) { + *var_r29 = 0x10; + } + } + lbl_1_bss_52 = work.spr_grp[fn_1_7754(&work, var_r26)]; + HuSprGrpPosSet(lbl_1_bss_52, 288.0f, -300.0f); + HuSprGrpDrawNoSet(lbl_1_bss_52, 0x7F); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 4)); + lbl_1_bss_50 = HuSprGrpCreate(1); + var_r31 = HuSprCreate(var_r27, 0x64, 0); + HuSprGrpMemberSet(lbl_1_bss_50, 0, var_r31); + HuSprGrpPosSet(lbl_1_bss_50, 288.0f, -300.0f); + HuSprGrpDrawNoSet(lbl_1_bss_50, 0x7F); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 5)); + var_r25 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 14)); + var_r24 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 64)); + var_r23 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 15)); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r28 = HuSprGrpCreate(4); + lbl_1_bss_4C[var_r30] = var_r28; + var_r31 = HuSprCreate(var_r27, 0x64, var_r30); + HuSprGrpMemberSet(var_r28, 0, var_r31); + var_r31 = HuSprCreate(var_r25, 0x6E, 0); + HuSprGrpMemberSet(var_r28, 1, var_r31); + var_r31 = HuSprCreate(var_r24, 0x78, 0); + HuSprGrpMemberSet(var_r28, 2, var_r31); + HuSprScaleSet(var_r28, 2, 0.5f, 0.5f); + var_r31 = HuSprCreate(var_r23, 0x82, 0); + HuSprGrpMemberSet(var_r28, 3, var_r31); + HuSprGrpPosSet(var_r28, 288.0f, -300.0f); + HuSprGrpDrawNoSet(var_r28, 0x7F); + } + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 6)); + lbl_1_bss_4A = HuSprGrpCreate(1); + var_r31 = HuSprCreate(var_r27, 0x32, 0); + HuSprGrpMemberSet(lbl_1_bss_4A, 0, var_r31); + HuSprGrpPosSet(lbl_1_bss_4A, 288.0f, -300.0f); + lbl_1_bss_42 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_ZTAR, 0)); + lbl_1_bss_3E[0] = Hu3DJointMotionFile(lbl_1_bss_42, DATA_MAKE_NUM(DATADIR_ZTAR, 1)); + lbl_1_bss_3E[1] = Hu3DJointMotionFile(lbl_1_bss_42, DATA_MAKE_NUM(DATADIR_ZTAR, 2)); + Hu3DMotionSet(lbl_1_bss_42, lbl_1_bss_3E[0]); + Hu3DModelAttrSet(lbl_1_bss_42, HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(lbl_1_bss_42, 0.0f, 1000.0f, 0.0f); + lbl_1_bss_8 = HuPrcChildCreate(fn_1_1CF0, 0x64, 0x2000, 0, lbl_1_bss_68); +} + +void fn_1_1CF0(void) +{ + float var_f31 = 0.0f; + ModelData *var_r31 = &Hu3DData[lbl_1_bss_42]; + + while (TRUE) { + var_r31->pos.y += sind(var_f31); + var_f31 += 3.0f; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + HuPrcVSleep(); + } +} + +void fn_1_1DA0(void) +{ + s16 spC[4]; + s16 sp8[2]; + s16 var_r31; + AnimData *var_r30; + s16 var_r29; + s16 var_r28; + s16 var_r27; + + sp8[0] = 0; + sp8[1] = 2; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[sp8[GWPlayerCfg[var_r31].group]++] = var_r31; + } + if (lbl_1_bss_5A == 0) { + var_r28 = HuSprGrpCreate(5); + lbl_1_bss_46 = var_r28; + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 17)); + var_r29 = HuSprCreate(var_r30, 0x78, 0); + HuSprGrpMemberSet(var_r28, 0, var_r29); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = HuSprAnimReadFile(GWPlayerCfg[spC[var_r31]].character + DATA_MAKE_NUM(DATADIR_ZTAR, 18)); + var_r29 = HuSprCreate(var_r30, 0x6E, 0); + HuSprGrpMemberSet(var_r28, (var_r31 * 2) + 1, var_r29); + HuSprPosSet(var_r28, (var_r31 * 2) + 1, (var_r31 * 0x30) - 0x18, -4.0f); + if (GWPlayerCfg[spC[var_r31]].iscom == 0) { + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 32)); + var_r29 = HuSprCreate(var_r30, 0x64, spC[var_r31]); + } + else { + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 33)); + var_r29 = HuSprCreate(var_r30, 0x64, GWPlayerCfg[spC[var_r31]].diff); + } + HuSprGrpMemberSet(var_r28, (var_r31 * 2) + 2, var_r29); + HuSprPosSet(var_r28, (var_r31 * 2) + 2, (var_r31 * 0x30) - 0x18, 20.0f); + } + } + else { + var_r28 = HuSprGrpCreate(0xA); + lbl_1_bss_46 = var_r28; + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 16)); + var_r29 = HuSprCreate(var_r30, 0x78, 0); + HuSprGrpMemberSet(var_r28, 0, var_r29); + var_r27 = -0x4B; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprAnimReadFile(GWPlayerCfg[spC[var_r31]].character + DATA_MAKE_NUM(DATADIR_ZTAR, 18)); + var_r29 = HuSprCreate(var_r30, 0x6E, 0); + HuSprGrpMemberSet(var_r28, (var_r31 * 2) + 1, var_r29); + HuSprPosSet(var_r28, (var_r31 * 2) + 1, var_r27, 0.0f); + if (GWPlayerCfg[spC[var_r31]].iscom == 0) { + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 32)); + var_r29 = HuSprCreate(var_r30, 0x64, spC[var_r31]); + } + else { + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 33)); + var_r29 = HuSprCreate(var_r30, 0x64, GWPlayerCfg[spC[var_r31]].diff); + } + HuSprGrpMemberSet(var_r28, (var_r31 * 2) + 2, var_r29); + HuSprPosSet(var_r28, (var_r31 * 2) + 2, var_r27, 22.0f); + var_r27 += 0x2A; + if (var_r31 == 1) { + var_r27 += 0x18; + } + } + var_r30 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 10)); + var_r29 = HuSprCreate(var_r30, 0x5A, 0); + HuSprGrpMemberSet(var_r28, 9, var_r29); + } + HuSprGrpPosSet(var_r28, 0.0f, -100.0f); +} + +void fn_1_2350(void) +{ + s16 spC[4]; + s16 sp8[2]; + float var_f31; + s16 var_r31; + + sp8[0] = 0; + sp8[1] = 2; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[sp8[GWPlayerCfg[var_r31].group]++] = var_r31; + } + if (lbl_1_bss_58 != 0) { + if (GWPlayerCoinWinGet(spC[0]) > 0) { + mgBattleStarMax++; + } + } + fn_1_33B0(); + Hu3DModelPosSet(lbl_1_bss_36[2], 500.0f, 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_36[3], 500.0f, 0.0f, 0.0f); + HuSprScaleSet(lbl_1_bss_50, 2, 0.0f, 0.0f); + if (lbl_1_bss_58 != 0) { + if (GWPlayerCoinWinGet(spC[0]) == 0) { + mgBattleStarMax++; + } + HuSprBankSet(lbl_1_bss_50, 1, mgBattleStarMax); + HuSprScaleSet(lbl_1_bss_50, 1, 1.0f, 1.0f); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + if (GWPlayerCoinWinGet(spC[0]) > 0) { + HuSprAttrReset(lbl_1_bss_44, 6, 4); + HuSprPosSet(lbl_1_bss_44, 6, ((mgBattleStarMax - 1) << 5) + 0x46, 340.0f); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + var_f31 = var_r31 / 60.0; + HuSprTPLvlSet(lbl_1_bss_44, 6, var_f31); + var_f31 = 1.0 + (5.0 * cosd((90.0f * var_f31))); + HuSprScaleSet(lbl_1_bss_44, 6, var_f31, var_f31); + if (var_r31 == 0x14) { + HuAudFXPlay(0x9A); + if (mgBattleStarMax < 6) { + Hu3DMotionShiftSet(lbl_1_bss_36[0], lbl_1_bss_E[0][2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(lbl_1_bss_36[1], lbl_1_bss_E[1][2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + } + else { + Hu3DMotionShiftSet(lbl_1_bss_36[0], lbl_1_bss_E[0][3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(lbl_1_bss_36[1], lbl_1_bss_E[1][3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + } + } + HuPrcVSleep(); + } + HuAudFXPlay(8); + if (mgBattleStarMax >= 6) { + HuPrcSleep(0x3C); + var_r31 = omMgIndexGet(0x29); + lbl_1_bss_54 = 1; + fn_1_11020(); + fn_1_11338(GWPlayerCfg[spC[0]].character, 0); + fn_1_11338(GWPlayerCfg[spC[1]].character, 1); + fn_1_11264(MAKE_MESSID(0x33, 0xA0), 0, 0); + if (GWMGAvailGet(var_r31 + 0x191) == 0) { + GWMGAvailSet(var_r31 + 0x191); + GWGameStat.present[0x37] = 1; + fn_1_11264(MAKE_MESSID(0x33, 0x29), 0, 0); + } + fn_1_111E0(); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + } + else { + Hu3DMotionShiftSet(lbl_1_bss_36[0], lbl_1_bss_E[0][0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(lbl_1_bss_36[1], lbl_1_bss_E[1][0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + var_f31 = 1.0 - (var_r31 / 10.0); + HuSprScaleSet(lbl_1_bss_50, 1, var_f31, var_f31); + HuPrcVSleep(); + } + HuPrcSleep(0x3C); + goto block_39; + } + } + else { + Hu3DMotionShiftSet(lbl_1_bss_36[0], lbl_1_bss_E[0][4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + Hu3DMotionShiftSet(lbl_1_bss_36[1], lbl_1_bss_E[1][4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(0xB4); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + } + } + else { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + block_39: + Hu3DMotionSet(lbl_1_bss_36[2], lbl_1_bss_E[2][1]); + Hu3DMotionSet(lbl_1_bss_36[3], lbl_1_bss_E[3][1]); + Hu3DModelRotSet(lbl_1_bss_36[2], 0.0f, -90.0f, 0.0f); + Hu3DModelRotSet(lbl_1_bss_36[3], 0.0f, -90.0f, 0.0f); + HuSprBankSet(lbl_1_bss_50, 1, mgBattleStarMax + 1); + for (var_r31 = 0; var_r31 <= 0x1E; var_r31++) { + var_f31 = 1.0 - sind((90.0 * (var_r31 / 30.0))); + Hu3DModelPosSet(lbl_1_bss_36[2], 125.0f + (400.0f * var_f31), 0.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_36[3], 275.0f + (400.0f * var_f31), 0.0f, 0.0f); + if (var_r31 == 0x19) { + Hu3DMotionShiftSet(lbl_1_bss_36[2], lbl_1_bss_E[2][0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + Hu3DMotionShiftSet(lbl_1_bss_36[3], lbl_1_bss_E[3][0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + if ((GWPlayerCfg[2].character < 8) && ((var_r31 % 5) == 0)) { + HuAudFXPlay(GWPlayerCfg[2].character + 0xD5); + } + if ((GWPlayerCfg[3].character < 8) && (((var_r31 + 3) % 5) == 0)) { + HuAudFXPlay(GWPlayerCfg[3].character + 0xD5); + } + if (var_r31 > 0x14) { + var_f31 = 1.0 - ((var_r31 - 0x14) / 10.0); + Hu3DModelRotSet(lbl_1_bss_36[2], 0.0f, 90.0f * -var_f31, 0.0f); + Hu3DModelRotSet(lbl_1_bss_36[3], 0.0f, 90.0f * -var_f31, 0.0f); + } + if (var_r31 <= 0x14) { + var_f31 = 1.2 * sind((90.0 * (var_r31 / 20.0))); + HuSprScaleSet(lbl_1_bss_50, 1, var_f31, var_f31); + } + else if (var_r31 > 0x14) { + var_f31 = 1.0 + (0.2 * cosd((90.0 * ((var_r31 - 0x14) / 10.0)))); + HuSprScaleSet(lbl_1_bss_50, 1, var_f31, var_f31); + } + HuPrcVSleep(); + } + HuAudFXPlay(0x355); + for (var_r31 = 0; var_r31 <= 0x14; var_r31++) { + var_f31 = 1.0 + (5.0 * cosd((90.0 * (var_r31 / 20.0)))); + HuSprScaleSet(lbl_1_bss_50, 2, var_f31, var_f31); + HuSprTPLvlSet(lbl_1_bss_50, 2, var_r31 / 20.0); + HuPrcVSleep(); + } + fn_1_114EC(MAKE_MESSID(0x33, 0x4F), 1); + while (TRUE) { + if ((*HuPadBtnDown & 0x100) != 0) { + HuAudFXPlay(2); + if (mgBattleStarMax >= 5) { + GWSystem.mg_type = 0; + } + fn_1_51BC(1); + } + if ((*HuPadBtnDown & 0x200) != 0) { + break; + } + HuPrcVSleep(); + } + HuAudFXPlay(3); + fn_1_1190C(); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + } + HuSprGrpKill(lbl_1_bss_48); + HuSprGrpKill(lbl_1_bss_50); + HuSprGrpKill(lbl_1_bss_44); + Hu3DModelKill(lbl_1_bss_42); + HuPrcKill(lbl_1_bss_8); + Hu3DModelKill(lbl_1_bss_C); + CharModelKill(-1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[spC[var_r31]].character >= 8) { + Hu3DModelKill(lbl_1_bss_36[var_r31]); + Hu3DMotionKill(lbl_1_bss_E[var_r31][0]); + Hu3DMotionKill(lbl_1_bss_E[var_r31][1]); + } + } + lbl_1_bss_58 = 0; + lbl_1_bss_5A = 0; +} + +s32 lbl_1_data_2C[6] = { + DATA_MAKE_NUM(DATADIR_ZTAR, 59), + DATA_MAKE_NUM(DATADIR_ZTAR, 34), + DATA_MAKE_NUM(DATADIR_ZTAR, 39), + DATA_MAKE_NUM(DATADIR_ZTAR, 44), + DATA_MAKE_NUM(DATADIR_ZTAR, 49), + DATA_MAKE_NUM(DATADIR_ZTAR, 54), +}; + +u8 lbl_1_data_44[6] = { 0, 1, 1, 2, 2, 3 }; + +void fn_1_33B0(void) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + s16 spC[4]; + s16 sp8[2]; + s16 var_r31; + s16 var_r30; + AnimData *var_r29; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + AnimData *var_r23; + + sp8[0] = 0; + sp8[1] = 2; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[sp8[GWPlayerCfg[var_r31].group]++] = var_r31; + } + var_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 3)); + lbl_1_bss_48 = HuSprGrpCreate(1); + var_r30 = HuSprCreate(var_r29, 0xC8, 0); + HuSprGrpMemberSet(lbl_1_bss_48, 0, var_r30); + HuSprGrpDrawNoSet(lbl_1_bss_48, 0x7F); + HuSprGrpPosSet(lbl_1_bss_48, 288.0f, 240.0f); + lbl_1_bss_50 = HuSprGrpCreate(3); + var_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 12)); + var_r30 = HuSprCreate(var_r29, 0x78, 0); + HuSprGrpMemberSet(lbl_1_bss_50, 0, var_r30); + HuSprPosSet(lbl_1_bss_50, 0, 288.0f, 80.0f); + var_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 11)); + if ((mgBattleStarMax + 1) >= 7) { + var_r30 = HuSprCreate(var_r29, 0x64, 6); + } + else { + var_r30 = HuSprCreate(var_r29, 0x64, mgBattleStarMax + 1); + } + HuSprGrpMemberSet(lbl_1_bss_50, 1, var_r30); + HuSprPosSet(lbl_1_bss_50, 1, VERSION_JP ? 234.0f : 342.0f, 80.0f); + HuSprScaleSet(lbl_1_bss_50, 1, 0.0f, 0.0f); + HuSprGrpDrawNoSet(lbl_1_bss_50, 0x7F); + var_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 9)); + var_r30 = HuSprCreate(var_r29, 0x64, 0); + HuSprGrpMemberSet(lbl_1_bss_50, 2, var_r30); + HuSprPosSet(lbl_1_bss_50, 2, 288.0f, 240.0f); + HuSprDrawNoSet(lbl_1_bss_50, 2, 0); + HuSprGrpPosSet(lbl_1_bss_50, 0.0f, 0.0f); + var_r27 = HuSprGrpCreate(7); + lbl_1_bss_44 = var_r27; + var_r29 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 8)); + var_r23 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 7)); + var_r24 = mgBattleStarMax; + if (GWPlayerCoinWinGet(spC[0]) > 0) { + var_r24--; + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (var_r31 >= var_r24) { + var_r30 = HuSprCreate(var_r23, 0x64, 0); + } + else { + var_r30 = HuSprCreate(var_r29, 0x64, 0); + } + HuSprGrpMemberSet(var_r27, var_r31, var_r30); + HuSprPosSet(var_r27, var_r31, (var_r31 << 5) + 0x46, 340.0f); + } + var_r30 = HuSprCreate(var_r29, 0x5A, 0); + HuSprGrpMemberSet(var_r27, 6, var_r30); + HuSprAttrSet(var_r27, 6, 4); + HuSprGrpPosSet(var_r27, 0.0f, 0.0f); + sp38.x = 510.0f; + sp38.y = 80.0f; + sp38.z = 1500.0f; + Hu3D2Dto3D(&sp38, 1, &sp2C); + lbl_1_bss_42 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_ZTAR, 0)); + lbl_1_bss_3E[0] = Hu3DJointMotionFile(lbl_1_bss_42, DATA_MAKE_NUM(DATADIR_ZTAR, 1)); + lbl_1_bss_3E[1] = Hu3DJointMotionFile(lbl_1_bss_42, DATA_MAKE_NUM(DATADIR_ZTAR, 2)); + Hu3DModelAttrSet(lbl_1_bss_42, HU3D_MOTATTR_LOOP); + Hu3DModelPosSetV(lbl_1_bss_42, &sp2C); + Hu3DModelRotSet(lbl_1_bss_42, 0.0f, -10.0f, -15.0f); + Hu3DMotionSet(lbl_1_bss_42, lbl_1_bss_3E[0]); + lbl_1_bss_8 = HuPrcChildCreate(fn_1_1CF0, 0x64, 0x2000, 0, lbl_1_bss_68); + GWPlayerCfg[spC[2]].character = mgIndexList[mgBattleStarMax * 2]; + GWPlayerCfg[spC[3]].character = mgIndexList[mgBattleStarMax * 2 + 1]; + GWPlayerCfg[spC[0]].group = GWPlayerCfg[spC[1]].group = 0; + GWPlayerCfg[spC[2]].group = GWPlayerCfg[spC[3]].group = 1; + GWPlayerCfg[spC[2]].iscom = GWPlayerCfg[spC[3]].iscom = 1; + GWPlayerCfg[spC[2]].diff = GWPlayerCfg[spC[3]].diff = lbl_1_data_44[mgBattleStarMax]; + var_r26 = -0x113; + if (lbl_1_bss_58 != 0) { + CharKill(-1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[spC[var_r31]].character < 8) { + CharARAMOpen(GWPlayerCfg[spC[var_r31]].character); + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = GWPlayerCfg[spC[var_r31]].character; + if (var_r28 != 0xFF) { + if (var_r28 < 8) { + lbl_1_bss_36[var_r31] = CharModelCreate(var_r28, 2); + lbl_1_bss_E[var_r31][0] = CharModelMotionCreate(var_r28, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + lbl_1_bss_E[var_r31][1] = CharModelMotionCreate(var_r28, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + if (var_r31 < 2) { + lbl_1_bss_E[var_r31][2] = CharModelMotionCreate(var_r28, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48)); + lbl_1_bss_E[var_r31][3] = CharModelMotionCreate(var_r28, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); + lbl_1_bss_E[var_r31][4] = CharModelMotionCreate(var_r28, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + } + CharModelVoiceEnableSet(GWPlayerCfg[spC[var_r31]].character, lbl_1_bss_E[var_r31][1], 0); + Hu3DModelScaleSet(lbl_1_bss_36[var_r31], 0.8f, 0.8f, 0.8f); + } + else { + var_r25 = var_r28 - 8; + lbl_1_bss_36[var_r31] = Hu3DModelCreateFile(lbl_1_data_2C[var_r25]); + lbl_1_bss_E[var_r31][0] = Hu3DJointMotionFile(lbl_1_bss_36[var_r31], lbl_1_data_2C[var_r25] + 1); + lbl_1_bss_E[var_r31][1] = Hu3DJointMotionFile(lbl_1_bss_36[var_r31], lbl_1_data_2C[var_r25] + 2); + Hu3DModelScaleSet(lbl_1_bss_36[var_r31], 0.8f, 0.8f, 0.8f); + } + Hu3DMotionSet(lbl_1_bss_36[var_r31], lbl_1_bss_E[var_r31][0]); + Hu3DModelAttrSet(lbl_1_bss_36[var_r31], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(lbl_1_bss_36[var_r31], var_r26, 0.0f, 0.0f); + Hu3DModelShadowSet(lbl_1_bss_36[var_r31]); + var_r26 += 0x96; + if (var_r31 == 1) { + var_r26 += 0x64; + } + } + } + CharModelDataClose(-1); + Hu3DShadowCreate(20.0f, 500.0f, 8000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowSizeSet(0xC0); + sp20.x = sp20.y = sp20.z = 0.0f; + sp38.x = sp38.z = 100.0f; + sp38.y = 2000.0f; + sp14.x = sp14.y = 0.0f; + sp14.z = 1.0f; + Hu3DShadowPosSet(&sp38, &sp14, &sp20); + lbl_1_bss_C = Hu3DHookFuncCreate(fn_1_7414); + Hu3DModelLayerSet(lbl_1_bss_C, 1); +} + +void fn_1_40E4(void) +{ + s16 sp14[4]; + s16 spC[4]; + s16 sp8[2]; + s16 var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r28; + + sp8[0] = 0; + sp8[1] = 2; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[sp8[GWPlayerCfg[var_r31].group]++] = var_r31; + } + var_r30 = 0; + for (var_r31 = var_r30; var_r31 < 8; var_r31++) { + if ((var_r31 != GWPlayerCfg[spC[0]].character) && (var_r31 != GWPlayerCfg[spC[1]].character)) { + sp14[var_r30++] = var_r31; + } + } + for (var_r31 = 0; var_r31 < 0x1E; var_r31++) { + var_r30 = frandmod(6); + var_r29 = frandmod(6); + var_r28 = sp14[var_r30]; + sp14[var_r30] = sp14[var_r29]; + sp14[var_r29] = var_r28; + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + mgIndexList[var_r31] = sp14[var_r31]; + } + mgIndexList[6] = 0xC; + mgIndexList[7] = 9; + mgIndexList[8] = 0xB; + mgIndexList[9] = 0xA; + mgIndexList[0xA] = 8; + mgIndexList[0xB] = 0xD; + mgIndexList[0xC] = mgIndexList[0xD] = 0xFF; + GWPlayerCfg[spC[2]].character = mgIndexList[0]; + GWPlayerCfg[spC[3]].character = mgIndexList[1]; +} + +s16 lbl_1_data_4A[6] = { 0x3A, 0x36, 0x40, 0x4B, 0x46, 0x3E }; +s16 lbl_1_data_56[7] = { 0x3B, 0x38, 0x42, 0x4D, 0x48, 0x3F, 0 }; + +void fn_1_4374(void) +{ + s16 spC[4]; + s16 sp8[2]; + float var_f31; + s16 var_r31; + s16 var_r30; + + sp8[0] = 0; + sp8[1] = 2; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[sp8[GWPlayerCfg[var_r31].group]++] = var_r31; + } + fn_1_4948(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + if (lbl_1_bss_58 != 0) { + var_r30 = 0; + for (var_r31 = var_r30; var_r31 < 4; var_r31++) { + if (GWPlayerCoinWinGet(spC[var_r31]) > 0) { + if (var_r30 == 0) { + HuAudFXPlay(0x9A); + } + if (GWPlayerCfg[spC[var_r31]].character >= 8) { + HuAudFXPlay(lbl_1_data_4A[GWPlayerCfg[spC[var_r31]].character - 8]); + } + Hu3DMotionShiftSet(lbl_1_bss_36[var_r31], lbl_1_bss_E[var_r31][3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + var_r30++; + } + else { + if (GWPlayerCfg[spC[var_r31]].character >= 8) { + HuAudFXPlay(lbl_1_data_56[GWPlayerCfg[spC[var_r31]].character - 8]); + } + Hu3DMotionShiftSet(lbl_1_bss_36[var_r31], lbl_1_bss_E[var_r31][4], 0.0f, 10.0f, HU3D_MOTATTR_NONE); + } + } + HuSprAttrReset(lbl_1_bss_50, 1, 4); + HuPrcSleep(0x78); + } + else { + HuAudFXPlay(0x355); + HuSprAttrReset(lbl_1_bss_50, 1, 4); + for (var_r31 = 0; var_r31 <= 0x14; var_r31++) { + var_f31 = 1.0 + (5.0 * cosd((90.0 * (var_r31 / 20.0)))); + + HuSprScaleSet(lbl_1_bss_50, 1, var_f31, var_f31); + HuSprTPLvlSet(lbl_1_bss_50, 1, var_r31 / 20.0); + HuPrcVSleep(); + } + } + fn_1_114EC(MAKE_MESSID(0x33, 0x4F), 1); + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + fn_1_51BC(2); + } + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + break; + } + HuPrcVSleep(); + } + HuAudFXPlay(3); + fn_1_1190C(); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuSprGrpKill(lbl_1_bss_48); + HuSprGrpKill(lbl_1_bss_50); + Hu3DModelKill(lbl_1_bss_42); + HuPrcKill(lbl_1_bss_8); + Hu3DModelKill(lbl_1_bss_C); + CharModelKill(-1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[spC[var_r31]].character >= 8) { + Hu3DModelKill(lbl_1_bss_36[var_r31]); + Hu3DMotionKill(lbl_1_bss_E[var_r31][0]); + Hu3DMotionKill(lbl_1_bss_E[var_r31][1]); + } + } + lbl_1_bss_58 = 0; + lbl_1_bss_5A = 0; +} + +void fn_1_4948(void) +{ + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + s16 spC[4]; + s16 sp8[2]; + s16 var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r28; + AnimData *var_r27; + s16 var_r26; + s16 var_r25; + + sp8[0] = 0; + sp8[1] = 2; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[sp8[GWPlayerCfg[var_r31].group]++] = var_r31; + } + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 3)); + lbl_1_bss_48 = HuSprGrpCreate(1); + var_r29 = HuSprCreate(var_r27, 0xC8, 0); + HuSprGrpMemberSet(lbl_1_bss_48, 0, var_r29); + HuSprGrpDrawNoSet(lbl_1_bss_48, 0x7F); + HuSprGrpPosSet(lbl_1_bss_48, 288.0f, 240.0f); + lbl_1_bss_50 = HuSprGrpCreate(2); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 13)); + var_r29 = HuSprCreate(var_r27, 0x78, 0); + HuSprGrpMemberSet(lbl_1_bss_50, 0, var_r29); + HuSprPosSet(lbl_1_bss_50, 0, 288.0f, 80.0f); + HuSprGrpPosSet(lbl_1_bss_50, 0.0f, 0.0f); + HuSprGrpDrawNoSet(lbl_1_bss_50, 0x7F); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 9)); + var_r29 = HuSprCreate(var_r27, 0x64, 0); + HuSprGrpMemberSet(lbl_1_bss_50, 1, var_r29); + HuSprPosSet(lbl_1_bss_50, 1, 288.0f, 240.0f); + HuSprAttrSet(lbl_1_bss_50, 1, 4); + HuSprDrawNoSet(lbl_1_bss_50, 1, 0); + sp38.x = 510.0f; + sp38.y = 80.0f; + sp38.z = 1500.0f; + Hu3D2Dto3D(&sp38, 1, &sp2C); + lbl_1_bss_42 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_ZTAR, 0)); + lbl_1_bss_3E[0] = Hu3DJointMotionFile(lbl_1_bss_42, DATA_MAKE_NUM(DATADIR_ZTAR, 1)); + lbl_1_bss_3E[1] = Hu3DJointMotionFile(lbl_1_bss_42, DATA_MAKE_NUM(DATADIR_ZTAR, 2)); + Hu3DModelAttrSet(lbl_1_bss_42, HU3D_MOTATTR_LOOP); + Hu3DModelPosSetV(lbl_1_bss_42, &sp2C); + Hu3DModelRotSet(lbl_1_bss_42, 0.0f, -10.0f, -15.0f); + Hu3DMotionSet(lbl_1_bss_42, lbl_1_bss_3E[0]); + lbl_1_bss_8 = HuPrcChildCreate(fn_1_1CF0, 0x64, 0x2000, 0, lbl_1_bss_68); + var_r28 = -0x113; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = GWPlayerCfg[spC[var_r31]].character; + if (var_r30 < 8) { + lbl_1_bss_36[var_r31] = CharModelCreate(var_r30, 2); + lbl_1_bss_E[var_r31][0] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + lbl_1_bss_E[var_r31][3] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); + lbl_1_bss_E[var_r31][4] = CharModelMotionCreate(var_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + Hu3DModelScaleSet(lbl_1_bss_36[var_r31], 0.8f, 0.8f, 0.8f); + } + else { + var_r26 = var_r30 - 8; + var_r25 = Hu3DModelCreateFile(lbl_1_data_2C[var_r26]); + lbl_1_bss_36[var_r31] = var_r25; + lbl_1_bss_E[var_r31][0] = Hu3DJointMotionFile(var_r25, lbl_1_data_2C[var_r26] + 1); + lbl_1_bss_E[var_r31][3] = Hu3DJointMotionFile(var_r25, lbl_1_data_2C[var_r26] + 3); + lbl_1_bss_E[var_r31][4] = Hu3DJointMotionFile(var_r25, lbl_1_data_2C[var_r26] + 4); + Hu3DModelScaleSet(lbl_1_bss_36[var_r31], 0.8f, 0.8f, 0.8f); + } + Hu3DMotionSet(lbl_1_bss_36[var_r31], lbl_1_bss_E[var_r31][0]); + Hu3DModelAttrSet(lbl_1_bss_36[var_r31], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(lbl_1_bss_36[var_r31], var_r28, 0.0f, 0.0f); + Hu3DModelShadowSet(lbl_1_bss_36[var_r31]); + var_r28 += 0x96; + if (var_r31 == 1) { + var_r28 += 0x64; + } + } + CharModelDataClose(-1); + Hu3DShadowCreate(20.0f, 500.0f, 8000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowSizeSet(0xC0); + sp20.x = sp20.y = sp20.z = 0.0f; + sp38.x = sp38.z = 100.0f; + sp38.y = 2000.0f; + sp14.x = sp14.y = 0.0f; + sp14.z = 1.0f; + Hu3DShadowPosSet(&sp38, &sp14, &sp20); + lbl_1_bss_C = Hu3DHookFuncCreate(fn_1_7414); + Hu3DModelLayerSet(lbl_1_bss_C, 1); +} + +void fn_1_51BC(s16 arg0) +{ + s16 var_r31; + omOvlHisData *var_r30; + u32 var_r29; + + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + HuAudSeqAllFadeOut(0x3E8); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } +#if !VERSION_ENG + if ((GWPlayerCfg->character >= 8) && (GWPlayerCfg->character >= 8) && (GWPlayerCfg->character >= 8) && (GWPlayerCfg->character >= 8)) { + msmMusStopAll(1, 0); + msmSeStopAll(1, 0); + var_r29 = OSGetTick(); + while (TRUE) { + if ((msmMusGetNumPlay(1) != 0) || (msmSeGetNumPlay(1) != 0)) { + if (((OSGetTick() - var_r29) / (*((u32 *)0x800000F8) / 4 / 1000)) >= 0x1F4) { + break; + } + } + else { + break; + } + } + msmSysDelGroupBase(0); +#if VERSION_PAL + for (var_r31 = 0; var_r31 < 8; var_r31++) { + charVoiceGroupStat[var_r31] = 0; + } +#endif + } +#endif + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_ZTAR, arg0, var_r30->stat); + omOvlCallEx(OVL_M433, 1, 0, 0); + while (TRUE) { + HuPrcVSleep(); + } +} + +float lbl_1_data_64[8] = { + -132.0f, + -12.0f, + 60.0f, + 132.0f, + -132.0f, + -60.0f, + 60.0f, + 132.0f, +}; + +u8 lbl_1_data_84[16] = { 0, 1, 2, 3, 1, 0, 2, 3, 2, 0, 1, 3, 3, 0, 1, 2 }; +u8 lbl_1_data_94[12] = { 0, 1, 2, 3, 0, 2, 1, 3, 0, 3, 1, 2 }; + +s32 fn_1_524C(s32 arg0) +{ + s16 spC; + float var_f31; + float var_f30; + float var_f29; + s16 var_r31; + s16 var_r30; + float *var_r29; + s16 var_r28; + s16 var_r27; + AnimData *var_r26; + s16 var_r25; + s16 var_r24; + s16 var_r23; + WindowData *var_r22; + + if (mgTypeCurr == 1) { + var_r29 = lbl_1_data_64; + var_f29 = 216.0f; + } + else { + var_r29 = &lbl_1_data_64[4]; + var_f29 = 288.0f; + } + var_r28 = HuSprGrpCreate(0x10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r26 = HuSprAnimReadFile(GWPlayerCfg[var_r31].character + DATA_MAKE_NUM(DATADIR_ZTAR, 69)); + var_r25 = HuSprCreate(var_r26, 4, 0); + HuSprGrpMemberSet(var_r28, var_r31 * 4, var_r25); + HuSprPosSet(var_r28, var_r31 * 4, var_r29[var_r31], 0.0f); + if (mgTypeCurr == 1) { + if (var_r31 == 0) { + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 89)); + } + else { + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 90)); + } + } + else if (var_r31 < 2) { + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 89)); + } + else { + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 90)); + } + var_r25 = HuSprCreate(var_r26, 3, 0); + HuSprGrpMemberSet(var_r28, (var_r31 * 4) + 1, var_r25); + HuSprPosSet(var_r28, (var_r31 * 4) + 1, var_r29[var_r31], 0.0f); + if (GWPlayerCfg[var_r31].iscom != 0) { + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 87)); + } + else { + var_r26 = HuSprAnimReadFile(GWPlayerCfg[var_r31].pad_idx + DATA_MAKE_NUM(DATADIR_ZTAR, 83)); + } + var_r25 = HuSprCreate(var_r26, 2, 1); + HuSprGrpMemberSet(var_r28, (var_r31 * 4) + 2, var_r25); + HuSprPosSet(var_r28, (var_r31 * 4) + 2, var_r29[var_r31], 0.0f); + var_r26 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_ZTAR, 88)); + var_r25 = HuSprCreate(var_r26, 2, GWPlayerCfg[var_r31].diff); + HuSprGrpMemberSet(var_r28, (var_r31 * 4) + 3, var_r25); + HuSprPosSet(var_r28, (var_r31 * 4) + 3, var_r29[var_r31], 38.0f); + if (GWPlayerCfg[var_r31].iscom == 0) { + HuSprAttrSet(var_r28, (var_r31 * 4) + 3, 4); + } + } + var_r27 = HuSprGrpCreate(5); + var_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_ZTAR, 67), MEMORY_DEFAULT_NUM)); + var_r25 = HuSprCreate(var_r26, 0x32, 0); + HuSprGrpMemberSet(var_r27, 0, var_r25); + HuSprTPLvlSet(var_r27, 0, 0.9f); + HuSprPosSet(var_r27, 0, 0.0f, 0.0f); + HuSprScaleSet(var_r27, 0, 1.1f, 1.0f); + var_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_ZTAR, 65), MEMORY_DEFAULT_NUM)); + var_r25 = HuSprCreate(var_r26, 0x28, 0); + HuSprGrpMemberSet(var_r27, 1, var_r25); + HuSprPosSet(var_r27, 1, 0.0f, -90.0f); + var_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_ZTAR, 66), MEMORY_DEFAULT_NUM)); + var_r25 = HuSprCreate(var_r26, 0x28, 0); + HuSprGrpMemberSet(var_r27, 2, var_r25); + HuSprPosSet(var_r27, 2, 0.0f, 0.0f); + var_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_ZTAR, 68), MEMORY_DEFAULT_NUM)); + var_r25 = HuSprCreate(var_r26, 0x28, 1); + HuSprGrpMemberSet(var_r27, 3, var_r25); + HuSprPosSet(var_r27, 3, 180.0f, 0.0f); + var_r26 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_ZTAR, 68), MEMORY_DEFAULT_NUM)); + var_r25 = HuSprCreate(var_r26, 0x28, 0); + HuSprGrpMemberSet(var_r27, 4, var_r25); + HuSprPosSet(var_r27, 4, -180.0f, 0.0f); + HuSprGrpPosSet(var_r27, 288.0f, 240.0f); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + if (var_r31 <= 0x32) { + var_f31 = var_r31 / 50.0; + var_f30 = -300.0 + (560.0 * sind((90.0f * var_f31))); + HuSprGrpPosSet(var_r27, 288.0f, var_f30); + HuSprGrpPosSet(var_r28, 288.0f, var_f30); + } + else { + var_f31 = (var_r31 - 0x32) / 10.0; + var_f30 = 240.0 + (20.0 * cosd((90.0f * var_f31))); + var_f30 = var_f30; + HuSprGrpPosSet(var_r27, 288.0f, var_f30); + HuSprGrpPosSet(var_r28, 288.0f, var_f30); + } + HuPrcVSleep(); + } + var_r24 = HuWinCreate(0.0f, 0.0f, 0x1E0, 0x28, 0); + HuWinMesSpeedSet(var_r24, 0); + HuWinBGTPLvlSet(var_r24, 0.0f); + HuWinMesSet(var_r24, MAKE_MESSID(0x1A, 0x20)); + var_r22 = &winData[var_r24]; + HuWinPriSet(var_r24, 5); + HuWinPosSet(var_r24, (576.0f - var_r22->w) / 2, 300.0f); +#if VERSION_PAL + HuWinScaleSet(var_r24, 0.95f, 1.0f); +#endif + HuWinAttrSet(var_r24, 0x800); + var_r30 = 0; + var_r23 = 0; + while (TRUE) { + HuPrcVSleep(); + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + goto block_89; + } + spC = 0; + if (HuPadDStkRep[0] & PAD_BUTTON_LEFT) { + HuAudFXPlay(0x304); + for (var_r31 = 0; var_r31 <= 5; var_r31++) { + var_f31 = var_r31 / 5.0; + HuSprPosSet(var_r27, 4, -180.0 - (10.0 * sind((90.0f * var_f31))), 0.0f); + HuPrcVSleep(); + } + var_r30--; + if (mgTypeCurr == 1) { + if (var_r30 < 0) { + var_r30 = 3; + } + if (var_r30 >= 4) { + var_r30 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprPosSet(var_r28, lbl_1_data_84[var_r30 * 4 + var_r31] * 4, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, lbl_1_data_84[var_r30 * 4 + var_r31] * 4 + 2, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, lbl_1_data_84[var_r30 * 4 + var_r31] * 4 + 3, var_r29[var_r31], 38.0f); + } + } + else { + if (var_r30 < 0) { + var_r30 = 2; + } + if (var_r30 >= 3) { + var_r30 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprPosSet(var_r28, lbl_1_data_94[var_r30 * 4 + var_r31] * 4, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, lbl_1_data_94[var_r30 * 4 + var_r31] * 4 + 2, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, lbl_1_data_94[var_r30 * 4 + var_r31] * 4 + 3, var_r29[var_r31], 38.0f); + } + } + for (var_r31 = 0; var_r31 <= 5; var_r31++) { + var_f31 = var_r31 / 5.0; + HuSprPosSet(var_r27, 4, -180.0 - (10.0 * cosd((90.0f * var_f31))), 0.0f); + HuPrcVSleep(); + } + } + else { + if (HuPadDStkRep[0] & PAD_BUTTON_RIGHT) { + HuAudFXPlay(0x304); + for (var_r31 = 0; var_r31 <= 5; var_r31++) { + var_f31 = var_r31 / 5.0; + HuSprPosSet(var_r27, 3, 180.0 - (10.0 * sind((90.0f * var_f31))), 0.0f); + HuPrcVSleep(); + } + var_r30++; + if (mgTypeCurr == 1) { + if (var_r30 < 0) { + var_r30 = 3; + } + if (var_r30 >= 4) { + var_r30 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprPosSet(var_r28, lbl_1_data_84[var_r30 * 4 + var_r31] * 4, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, (lbl_1_data_84[var_r30 * 4 + var_r31] * 4) + 2, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, (lbl_1_data_84[var_r30 * 4 + var_r31] * 4) + 3, var_r29[var_r31], 38.0f); + } + } + else { + if (var_r30 < 0) { + var_r30 = 2; + } + if (var_r30 >= 3) { + var_r30 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprPosSet(var_r28, lbl_1_data_94[var_r30 * 4 + var_r31] * 4, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, (lbl_1_data_94[var_r30 * 4 + var_r31] * 4) + 2, var_r29[var_r31], 0.0f); + HuSprPosSet(var_r28, (lbl_1_data_94[var_r30 * 4 + var_r31] * 4) + 3, var_r29[var_r31], 38.0f); + } + } + for (var_r31 = 0; var_r31 <= 5; var_r31++) { + var_f31 = var_r31 / 5.0; + HuSprPosSet(var_r27, 3, 180.0 + (10.0 * cosd((90.0f * var_f31))), 0.0f); + HuPrcVSleep(); + } + } + } + if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) { + HuAudFXPlay(0x305); + if (mgTypeCurr == 1) { + GWPlayerCfg[lbl_1_data_84[var_r30 * 4]].group = 0; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + GWPlayerCfg[lbl_1_data_84[var_r30 * 4 + var_r31]].group = 1; + } + } + else { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + GWPlayerCfg[lbl_1_data_94[var_r30 * 4 + var_r31]].group = 0; + } + for (var_r31 = 2; var_r31 < 4; var_r31++) { + GWPlayerCfg[lbl_1_data_94[var_r30 * 4 + var_r31]].group = 1; + } + } + if (arg0 != 0) { + var_r23 = 1; + } + else { + return 1; + } + block_89: + HuWinKill(var_r24); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + if (var_r31 <= 0xA) { + var_f31 = var_r31 / 10.0; + var_f30 = 240.0 + (20.0 * sind((90.0f * var_f31))); + HuSprGrpPosSet(var_r27, 288.0f, var_f30); + HuSprGrpPosSet(var_r28, 288.0f, var_f30); + } + else { + var_f31 = (var_r31 - 0xA) / 50.0; + var_f30 = -300.0 + (560.0 * cosd(90.0f * var_f31)); + HuSprGrpPosSet(var_r27, 288.0f, var_f30); + HuSprGrpPosSet(var_r28, 288.0f, var_f30); + } + HuPrcVSleep(); + } + HuSprGrpKill(var_r28); + HuSprGrpKill(var_r27); + return var_r23; + } + } +} + +void fn_1_66F8(void) +{ + s16 var_r31; + + while (TRUE) { + if (lbl_1_bss_60 != 0 || omSysExitReq) { + break; + } + HuPrcVSleep(); + } + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_INSTPIC); + while (lbl_1_bss_4 != 0) { + HuPrcVSleep(); + } + CharModelDataClose(-1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCfg[var_r31].character = -1; + } +#if VERSION_PAL + for (var_r31 = 0; var_r31 < 8; var_r31++) { + charVoiceGroupStat[var_r31] = 0; + } +#endif + mgPracticeEnableF = 0; + omOvlReturnEx(1, 1); + HuPrcEnd(); +} + +void fn_1_6804(void) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + s8 var_r31; + + CRot.y += 0.1f * HuPadStkX[0]; + CRot.x += 0.1f * HuPadStkY[0]; + CZoom += HuPadTrigL[0] / 2; + CZoom -= HuPadTrigR[0] / 2; + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + OSReport("%f,%f,%f\n", CRot.x, CRot.y, CRot.z); + OSReport("%f,%f,%f\n", Center.x, Center.y, Center.z); + OSReport("%f\n", CZoom); + } + if (CZoom < 100.0f) { + CZoom = 100.0f; + } + sp2C.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + sp2C.y = Center.y + (CZoom * -sind(CRot.x)); + sp2C.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); + sp20.x = Center.x - sp2C.x; + sp20.y = Center.y - sp2C.y; + sp20.z = Center.z - sp2C.z; + sp14.x = sind(CRot.y) * sind(CRot.x); + sp14.y = cosd(CRot.x); + sp14.z = cosd(CRot.y) * sind(CRot.x); + var_f31 = CRot.z; + sp8.x = sp14.x * ((sp20.x * sp20.x) + ((1.0f - (sp20.x * sp20.x)) * cosd(var_f31))) + + sp14.y * (((sp20.x * sp20.y) * (1.0 - cosd(var_f31))) - sp20.z * sind(var_f31)) + + sp14.z * (((sp20.x * sp20.z) * (1.0 - cosd(var_f31))) + sp20.y * sind(var_f31)); + + sp8.y = sp14.y * ((sp20.y * sp20.y) + ((1.0f - (sp20.y * sp20.y)) * cosd(var_f31))) + + sp14.x * (((sp20.x * sp20.y) * (1.0 - cosd(var_f31))) + sp20.z * sind(var_f31)) + + sp14.z * (((sp20.y * sp20.z) * (1.0 - cosd(var_f31))) - sp20.x * sind(var_f31)); + + sp8.z = sp14.z * ((sp20.z * sp20.z) + ((1.0f - (sp20.z * sp20.z)) * cosd(var_f31))) + + (sp14.x * (((sp20.x * sp20.z) * (1.0 - cosd(var_f31))) - sp20.y * sind(var_f31)) + + sp14.y * (((sp20.y * sp20.z) * (1.0 - cosd(var_f31))) + sp20.x * sind(var_f31))); + VECCrossProduct(&sp14, &sp20, &sp20); + VECNormalize(&sp20, &sp20); + var_r31 = HuPadSubStkX[0] & 0xF8; + if (var_r31 != 0) { + Center.x += 0.05f * (sp20.x * var_r31); + Center.y += 0.05f * (sp20.y * var_r31); + Center.z += 0.05f * (sp20.z * var_r31); + } + VECNormalize(&sp8, &sp20); + var_r31 = -(HuPadSubStkY[0] & 0xF8); + if (var_r31 != 0) { + Center.x += 0.05f * (sp20.x * var_r31); + Center.y += 0.05f * (sp20.y * var_r31); + Center.z += 0.05f * (sp20.z * var_r31); + } +} + +void fn_1_7414(ModelData *model, Mtx matrix) +{ + Mtx sp8C; + Mtx sp5C; + Mtx sp2C; + GXTexObj spC; + s32 sp8; + + sp8 = 0; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXInitTexObj(&spC, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 1, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&spC, GX_TEXMAP0); + MTXInverse(Hu3DCameraMtx, sp5C); + MTXConcat(sp5C, matrix, sp8C); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp2C); + MTXConcat(sp2C, sp8C, sp8C); + GXLoadTexMtxImm(sp8C, 0x39, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x39, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, 1, GX_DF_CLAMP, GX_AF_NONE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + GXSetZMode(1, GX_LEQUAL, GX_FALSE); + GXLoadPosMtxImm(matrix, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-500.0f, 0.0f, -500.0f); + GXPosition3f32(500.0f, 0.0f, -500.0f); + GXPosition3f32(500.0f, 0.0f, 500.0f); + GXPosition3f32(-500.0f, 0.0f, 500.0f); +} diff --git a/src/REL/ztardll/select.c b/src/REL/ztardll/select.c new file mode 100644 index 00000000..0076979e --- /dev/null +++ b/src/REL/ztardll/select.c @@ -0,0 +1,3214 @@ +#include "ext_math.h" +#include "game/chrman.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/ztardll.h" + +typedef void (*ZtarUnkFunc)(omObjData *, ...); + +typedef struct ZtarDllUnkStruct2 { + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ ZtarUnkFunc unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ char pad_18[0x10]; /* maybe part of unk_14[5]? */ + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ char pad_38[0x10]; /* maybe part of unk_34[5]? */ + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; +} ZtarDllUnkStruct2; /* size = 0x60 */ + +void fn_1_106E8(s32 arg0); +void fn_1_10764(s32 arg0); +void fn_1_108C8(s32); +void fn_1_10A80(void); +void fn_1_10B24(void); +s32 fn_1_10C18(s32 arg0); +s32 fn_1_10C98(s32 arg0); +float fn_1_10D60(float arg8, float arg9, float argA, float argB); +float fn_1_10E38(float arg8, float arg9, float argA, float argB); +void fn_1_10FBC(s32 arg0); +void fn_1_11960(void); +void fn_1_11C64(void); +void fn_1_11F68(void); +void fn_1_122A8(s32 arg0); +void fn_1_A02C(void); +void fn_1_A248(void); +void fn_1_A574(void); +void fn_1_A610(void); +void fn_1_A8E8(void); +void fn_1_ABC4(void); +void fn_1_AE94(void); +void fn_1_AEE4(omObjData *object, ZtarDllUnkStruct2 *arg1); +void fn_1_B468(omObjData *object, ZtarDllUnkStruct2 *arg1); +void fn_1_BA40(void); +void fn_1_BD7C(s32 arg0); +void fn_1_BFF0(s32 arg0); +void fn_1_C06C(s32 arg0, s32 arg1); +void fn_1_C4B8(s32 arg0); +void fn_1_C8EC(s32 arg0); +void fn_1_CAF0(void); +void fn_1_D280(omObjData *arg0, ZtarDllUnkStruct2 *arg1); +void fn_1_DD8C(ZtarDllUnkStruct2 *arg0); +void fn_1_E4AC(ZtarDllUnkStruct2 *arg0); +void fn_1_E548(omObjData *arg0, ZtarDllUnkStruct2 *arg1); +s32 fn_1_F214(ZtarDllUnkStruct2 *arg0); +void fn_1_FB38(void); +void fn_1_FD90(s32 arg0); + +extern s16 lbl_1_bss_4; + +s32 lbl_1_data_3C8[8] = { + DATADIR_MARIOMOT, + DATADIR_LUIGIMOT, + DATADIR_PEACHMOT, + DATADIR_YOSHIMOT, + DATADIR_WARIOMOT, + DATADIR_DONKEYMOT, + DATADIR_DAISYMOT, + DATADIR_WALUIGIMOT, +}; +s32 lbl_1_data_3E8[8] = { + DATADIR_MARIOMDL1, + DATADIR_LUIGIMDL1, + DATADIR_PEACHMDL1, + DATADIR_YOSHIMDL1, + DATADIR_WARIOMDL1, + DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, + DATADIR_WALUIGIMDL1, +}; + +s32 lbl_1_bss_26C[0x1B]; +ZtarDllUnkStruct2 lbl_1_bss_20C; +ZtarDllUnkStruct2 lbl_1_bss_8C[4]; +s32 lbl_1_bss_78[5]; +s32 lbl_1_bss_74; +Process *lbl_1_bss_70; + +void fn_1_7C00(void) +{ + s16 var_r31; + s32 var_r30; + + CharKill(-1); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[var_r31].character < 8) { + var_r30 = HuDataDirReadAsync(lbl_1_data_3C8[GWPlayerCfg[var_r31].character]); + if (var_r30 != -1) { + while (HuDataGetAsyncStat(var_r30) == 0) { + HuPrcVSleep(); + } + } + CharARAMOpen(GWPlayerCfg[var_r31].character); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[var_r31].character < 8) { + var_r30 = HuDataDirReadAsync(lbl_1_data_3E8[GWPlayerCfg[var_r31].character]); + if (var_r30 != -1) { + while (HuDataGetAsyncStat(var_r30) == 0) { + HuPrcVSleep(); + } + } + } + } + lbl_1_bss_4 = 0; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_7D6C(Process *arg0) +{ + s32 var_r31; + + lbl_1_bss_70 = arg0; + fn_1_A02C(); + fn_1_BA40(); + fn_1_FB38(); + HuPrcChildCreate(fn_1_10A80, 0x3E8, 0x2000, 0, lbl_1_bss_70); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_10B24, 0x3E8, 0x2000, 0, lbl_1_bss_70); + } +} + +s32 fn_1_7E0C(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r29 = -1; + fn_1_A610(); + fn_1_11020(); + fn_1_11264(MAKE_MESSID(0x1A, 0x05), -1, -1); + fn_1_10FBC(1); + fn_1_11708(MAKE_MESSID(0x33, 0x91)); + lbl_1_bss_20C.unk_04 = (ZtarUnkFunc)fn_1_AEE4; + var_r29 = -1; + while (TRUE) { + fn_1_10FBC(1); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_14 == 0) { + var_r30++; + } + } + if (var_r29 != var_r30) { + var_r29 = var_r30; + fn_1_11264(var_r30 + MAKE_MESSID(0x1A, 0x1B), -1, 1); + } + if (lbl_1_bss_20C.unk_28 == 0) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + var_r28 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r28 = 0; + break; + } + } + } + fn_1_AE94(); + lbl_1_bss_20C.unk_04 = NULL; + fn_1_1190C(); + if (var_r28 == 1) { + var_r27 = 0; + var_r26 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + var_r27++; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r26 < var_r27) { + if (HuPadStatGet(var_r31) != -1) { + lbl_1_bss_8C[var_r31].unk_50 = 0; + var_r26++; + } + else { + lbl_1_bss_8C[var_r31].unk_50 = 1; + } + } + else { + lbl_1_bss_8C[var_r31].unk_50 = 1; + } + } + } + fn_1_111E0(); + fn_1_ABC4(); + return var_r28; +} + +s32 fn_1_8030(s32 arg0, s32 arg1) +{ + s32 sp10; + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + + sp10 = 0; + spC = 0; + var_r30 = 0; + if (arg1 == 1) { + var_r30 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_50 = 1; + } + } + else { + var_r30 = 4; + } + fn_1_CAF0(); + if (arg0 == 0) { + fn_1_C4B8(0); + } + fn_1_11020(); + fn_1_10FBC(1); + if (arg1 == 1) { + fn_1_11264(MAKE_MESSID(0x1E, 0x5E), -1, -1); + } + else { + fn_1_11264(MAKE_MESSID(0x1A, 0x09), -1, -1); + } + fn_1_11708(MAKE_MESSID(0x33, 0x92)); + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + lbl_1_bss_8C[var_r31].unk_04 = (ZtarUnkFunc)fn_1_D280; + } + } + while (TRUE) { + fn_1_10FBC(1); + if ((lbl_1_bss_8C[0].unk_08 == 0) && (HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { + HuAudFXPlay(3); + if (lbl_1_bss_20C.unk_10 == 1) { + lbl_1_bss_20C.unk_10 = 0; + continue; + } + var_r27 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if ((lbl_1_bss_8C[var_r31].unk_50 == 0) && (lbl_1_bss_8C[var_r31].unk_08 != 1)) { + break; + } + } + if (var_r31 == var_r30) { + var_r27 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + lbl_1_bss_8C[var_r31].unk_04 = NULL; + } + fn_1_1190C(); + fn_1_111E0(); + if (var_r27 == 0) { + fn_1_C8EC(0); + return 0; + } + var_r29 = 0; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 != 0) { + lbl_1_bss_8C[var_r31].unk_5C = 0; + var_r29++; + } + } + if ((var_r29 == 0) || ((arg1 == 2) && (var_r29 == 2))) { + fn_1_C8EC(0); + return 2; + } + if (arg1 == 2) { + lbl_1_bss_8C[1].unk_4C = 0; + } + return 1; +} + +void fn_1_830C(s32 arg0) +{ + fn_1_8030(arg0, 4); +} + +s32 fn_1_8338(s32 arg0, s32 arg1) +{ + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r27 = -1; + var_r26 = -1; + var_r24 = -1; + spC = 0; + if (arg0 != 0) { + if (arg1 == 2) { + fn_1_C06C(0, 2); + } + else { + fn_1_C06C(0, 1); + } + } + fn_1_11020(); + while (TRUE) { + fn_1_10FBC(1); + var_r25 = 0; + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if ((lbl_1_bss_8C[var_r31].unk_50 != 0) && (lbl_1_bss_8C[var_r31].unk_08 == 0)) { + var_r25++; + } + } + if (var_r26 == -1) { + fn_1_11338(var_r25 + MAKE_MESSID(0x1A, 0x23), 1); + fn_1_11264(MAKE_MESSID(0x1A, 0x28), -1, var_r26); + } + else { + fn_1_11338(var_r25 + MAKE_MESSID(0x1A, 0x23), 1); + fn_1_11264(MAKE_MESSID(0x1A, 0x28), -1, var_r26); + } + var_r26 = 1; + fn_1_11708(MAKE_MESSID(0x33, 0x92)); + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if ((lbl_1_bss_8C[var_r31].unk_50 != 0) && (lbl_1_bss_8C[var_r31].unk_08 == 0)) { + var_r30 = var_r31; + lbl_1_bss_8C[var_r31].unk_0C = var_r27; + fn_1_DD8C(&lbl_1_bss_8C[var_r31]); + lbl_1_bss_8C[var_r31].unk_04 = (ZtarUnkFunc)fn_1_E548; + break; + } + } + while (TRUE) { + fn_1_10FBC(1); + if (((HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & 0x200) != 0) && (lbl_1_bss_8C[var_r30].unk_08 == 0) && (lbl_1_bss_20C.unk_30 == 0)) { + HuAudFXPlay(3); + if (var_r27 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_8C[var_r30].unk_08 == 1) { + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 0) { + lbl_1_bss_8C[var_r31].unk_5C = 0; + } + } + lbl_1_bss_8C[var_r30].unk_04 = NULL; + fn_1_11264(MAKE_MESSID(0x1A, 0x22), -1, 1); + fn_1_10FBC(1); + fn_1_11708(MAKE_MESSID(0x33, 0x93)); + var_r29 = fn_1_F214(&lbl_1_bss_8C[var_r30]); + if (var_r29 == 1) { + HuAudFXPlay(2); + lbl_1_bss_8C[var_r30].unk_10 = 1; + var_r29 = 4; + var_r27 = var_r30; + } + else { + HuAudFXPlay(3); + lbl_1_bss_8C[var_r30].unk_10 = 0; + var_r29 = 4; + lbl_1_bss_8C[var_r30].unk_08 = 0; + fn_1_E4AC(&lbl_1_bss_8C[var_r30]); + fn_1_DD8C(&lbl_1_bss_8C[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + lbl_1_bss_8C[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 0) { + break; + } + } + if (var_r31 == arg1) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_DD8C(&lbl_1_bss_8C[var_r30]); + fn_1_E4AC(&lbl_1_bss_8C[var_r30]); + fn_1_DD8C(&lbl_1_bss_8C[lbl_1_bss_8C[var_r30].unk_0C]); + var_r27 = lbl_1_bss_8C[lbl_1_bss_8C[var_r30].unk_0C].unk_0C; + lbl_1_bss_8C[lbl_1_bss_8C[var_r30].unk_0C].unk_08 = 0; + } + else if (var_r29 != 4) { + if (var_r29 == 0) { + fn_1_E4AC(&lbl_1_bss_8C[var_r30]); + } + break; + } + var_r24 = -1; + } + } + + fn_1_1190C(); + fn_1_111E0(); + if (var_r29 != 0) { + fn_1_C8EC(0); + } + return var_r29; +} + +void fn_1_8850(s32 arg0) +{ + fn_1_8338(arg0, 4); +} + +void fn_1_887C(void) +{ + fn_1_8030(0, 1); +} + +s32 fn_1_88A4(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = -1; + fn_1_A8E8(); + fn_1_11020(); + fn_1_11264(MAKE_MESSID(0x1A, 0x05), -1, -1); + fn_1_10FBC(1); + fn_1_11708(MAKE_MESSID(0x33, 0x91)); + lbl_1_bss_20C.unk_04 = (ZtarUnkFunc)fn_1_B468; + while (TRUE) { + fn_1_10FBC(1); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_14 == 0) { + var_r30++; + } + } + if (var_r26 != var_r30) { + var_r26 = var_r30; + fn_1_11264(var_r30 + MAKE_MESSID(0x33, 0x93), -1, 1); + } + if (lbl_1_bss_20C.unk_28 != 0) { + continue; + } + if ((*HuPadBtnDown & PAD_BUTTON_A) != 0) { + HuAudFXPlay(2); + var_r28 = 1; + break; + } + else if ((*HuPadBtnDown & PAD_BUTTON_B) != 0) { + HuAudFXPlay(3); + var_r28 = 0; + break; + } + } + fn_1_AE94(); + lbl_1_bss_20C.unk_04 = NULL; + fn_1_1190C(); + if (var_r28 == 1) { + var_r29 = 0; + var_r27 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + var_r29++; + } + } + if (var_r29 >= 2) { + var_r29 = 2; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r27 < var_r29) { + if (HuPadStatGet(var_r31) != -1) { + lbl_1_bss_8C[var_r31].unk_50 = 0; + lbl_1_bss_8C[var_r31].unk_4C = 0; + var_r27++; + } + else { + lbl_1_bss_8C[var_r31].unk_50 = 1; + lbl_1_bss_8C[var_r31].unk_4C = 1; + } + } + else { + lbl_1_bss_8C[var_r31].unk_50 = 1; + lbl_1_bss_8C[var_r31].unk_4C = 1; + } + } + } + fn_1_111E0(); + fn_1_ABC4(); + return var_r28; +} + +void fn_1_8B18(s32 arg0) +{ + fn_1_8030(arg0, 2); +} + +void fn_1_8B44(s32 arg0) +{ + fn_1_8338(arg0, 2); +} + +void fn_1_8B70(void) +{ + fn_1_7E0C(0); +} + +s32 fn_1_8B94(s32 arg0) +{ + s32 sp10; + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + sp10 = 0; + spC = 0; + var_r30 = 4; + var_r28 = 4; + if (var_r28 == 1) { + var_r30 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_50 = 1; + } + } + else { + var_r30 = 4; + } + fn_1_CAF0(); + if (arg0 == 0) { + fn_1_C4B8(3); + } + fn_1_11020(); + fn_1_10FBC(1); + fn_1_11264(MAKE_MESSID(0x1A, 0x09), -1, -1); + fn_1_11708(MAKE_MESSID(0x33, 0x92)); + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + lbl_1_bss_8C[var_r31].unk_04 = (ZtarUnkFunc)fn_1_D280; + } + } + while (TRUE) { + fn_1_10FBC(1); + if ((lbl_1_bss_8C[0].unk_08 == 0) && ((*HuPadBtnDown & 0x200) != 0)) { + HuAudFXPlay(3); + if (lbl_1_bss_20C.unk_10 == 1) { + lbl_1_bss_20C.unk_10 = 0; + continue; + } + var_r27 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if ((lbl_1_bss_8C[var_r31].unk_50 == 0) && (lbl_1_bss_8C[var_r31].unk_08 != 1)) { + break; + } + } + if (var_r31 == var_r30) { + var_r27 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + lbl_1_bss_8C[var_r31].unk_04 = NULL; + } + fn_1_1190C(); + fn_1_111E0(); + if (var_r27 == 0) { + fn_1_C8EC(0); + return 0; + } + var_r29 = 0; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 != 0) { + lbl_1_bss_8C[var_r31].unk_5C = 1; + var_r29++; + } + } + if ((var_r29 == 0) || ((var_r28 == 2) && (var_r29 == 2))) { + fn_1_C8EC(3); + return 2; + } + if (var_r28 == 2) { + lbl_1_bss_8C[1].unk_4C = 0; + } + return 1; +} + +s32 fn_1_8E50(s32 arg0) +{ + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r27 = -1; + var_r26 = -1; + var_r28 = 4; + var_r24 = -1; + spC = 0; + if (arg0 != 0) { + fn_1_C06C(3, 3); + } + fn_1_11020(); + while (TRUE) { + fn_1_10FBC(1); + var_r25 = 0; + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if ((lbl_1_bss_8C[var_r31].unk_50 != 0) && (lbl_1_bss_8C[var_r31].unk_08 == 0)) { + var_r25++; + } + } + if (var_r26 == -1) { + fn_1_11338(var_r25 + MAKE_MESSID(0x1A, 0x23), 1); + fn_1_11264(MAKE_MESSID(0x1A, 0x28), -1, var_r26); + } + else { + fn_1_11338(var_r25 + MAKE_MESSID(0x1A, 0x23), 1); + fn_1_11264(MAKE_MESSID(0x1A, 0x28), -1, var_r26); + } + var_r26 = 1; + fn_1_11708(MAKE_MESSID(0x33, 0x92)); + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if ((lbl_1_bss_8C[var_r31].unk_50 != 0) && (lbl_1_bss_8C[var_r31].unk_08 == 0)) { + var_r30 = var_r31; + lbl_1_bss_8C[var_r31].unk_0C = var_r27; + fn_1_DD8C(&lbl_1_bss_8C[var_r31]); + lbl_1_bss_8C[var_r31].unk_04 = (ZtarUnkFunc)fn_1_E548; + break; + } + } + while (TRUE) { + fn_1_10FBC(1); + if ((HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_B) && (lbl_1_bss_8C[var_r30].unk_08 == 0) && (lbl_1_bss_20C.unk_30 == 0)) { + HuAudFXPlay(3); + if (var_r27 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_8C[var_r30].unk_08 == 1) { + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 0) { + lbl_1_bss_8C[var_r31].unk_5C = 1; + } + } + lbl_1_bss_8C[var_r30].unk_04 = NULL; + fn_1_11264(MAKE_MESSID(0x1A, 0x22), -1, 1); + fn_1_10FBC(1); + fn_1_11708(MAKE_MESSID(0x33, 0x93)); + var_r29 = fn_1_F214(&lbl_1_bss_8C[var_r30]); + if (var_r29 == 1) { + HuAudFXPlay(2); + lbl_1_bss_8C[var_r30].unk_10 = 1; + var_r29 = 4; + var_r27 = var_r30; + } + else { + HuAudFXPlay(3); + lbl_1_bss_8C[var_r30].unk_10 = 0; + var_r29 = 4; + lbl_1_bss_8C[var_r30].unk_08 = 0; + fn_1_E4AC(&lbl_1_bss_8C[var_r30]); + fn_1_DD8C(&lbl_1_bss_8C[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + lbl_1_bss_8C[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 0) { + break; + } + } + if (var_r31 == var_r28) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_DD8C(&lbl_1_bss_8C[var_r30]); + fn_1_E4AC(&lbl_1_bss_8C[var_r30]); + fn_1_DD8C(&lbl_1_bss_8C[lbl_1_bss_8C[var_r30].unk_0C]); + var_r27 = lbl_1_bss_8C[lbl_1_bss_8C[var_r30].unk_0C].unk_0C; + lbl_1_bss_8C[lbl_1_bss_8C[var_r30].unk_0C].unk_08 = 0; + } + else if (var_r29 == 4) { + } + else if (var_r29 == 0) { + fn_1_E4AC(&lbl_1_bss_8C[var_r30]); + break; + } + else { + break; + } + var_r24 = -1; + } + } + fn_1_1190C(); + fn_1_111E0(); + if (var_r29 != 0) { + fn_1_C8EC(3); + } + return var_r29; +} + +void fn_1_9350(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayer[var_r31].team = GWPlayerCfg[var_r31].group = lbl_1_bss_8C[var_r31].unk_4C; + GWPlayer[var_r31].com = GWPlayerCfg[var_r31].iscom = lbl_1_bss_8C[var_r31].unk_50; + GWPlayer[var_r31].diff = GWPlayerCfg[var_r31].diff = lbl_1_bss_8C[var_r31].unk_54; + if (lbl_1_bss_74 != 0) { + if (lbl_1_bss_8C[var_r31].unk_5C <= 5) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_8C[var_r31].unk_5C - 1; + } + else if (lbl_1_bss_8C[var_r31].unk_5C <= 0xB) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_8C[var_r31].unk_5C - 3; + } + else { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = fn_1_10C98(lbl_1_bss_8C[var_r31].unk_5C - 4); + } + } + else if (arg0 == 1) { + if (var_r31 != 0) { + lbl_1_bss_8C[var_r31].unk_5C = lbl_1_bss_8C[var_r31 - 1].unk_5C + 1; + if (lbl_1_bss_8C[var_r31].unk_5C >= 8) { + lbl_1_bss_8C[var_r31].unk_5C = 0; + } + } + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_8C[var_r31].unk_5C; + } + else { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_8C[var_r31].unk_5C; + } + GWPlayer[var_r31].port = GWPlayerCfg[var_r31].pad_idx = lbl_1_bss_8C[var_r31].unk_58; + } + OSReport("\n\n#################### SET PLAYERDATA ####################\n"); + OSReport("ID) GRP:COM:DIF:CHR:PAD\n"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + OSReport("%2d) %3d:%3d:%3d:%3d:%3d\n", var_r31, GWPlayerCfg[var_r31].group, GWPlayerCfg[var_r31].iscom, GWPlayerCfg[var_r31].diff, + GWPlayerCfg[var_r31].character, GWPlayerCfg[var_r31].pad_idx); + } + OSReport("########################################################\n"); +} + +s32 lbl_1_data_4B4[4][2] = { + { -0x69, 0 }, + { -0x23, 0 }, + { 0x23, 0 }, + { 0x69, 0 }, +}; +s32 lbl_1_data_4D4[8][2] = { + { -0x7B, -0x34 }, + { -0x29, -0x34 }, + { 0x29, -0x34 }, + { 0x7B, -0x34 }, + { -0x7B, 0x34 }, + { -0x29, 0x34 }, + { 0x29, 0x34 }, + { 0x7B, 0x34 }, +}; +s32 lbl_1_data_514[0xE][2] = { + { -0x7B, -0x66 }, + { -0x29, -0x66 }, + { 0x29, -0x66 }, + { 0x7B, -0x66 }, + { -0x7B, 0 }, + { -0x29, 0 }, + { 0x29, 0 }, + { 0x7B, 0 }, + { -0xCD, 0x66 }, + { -0x7B, 0x66 }, + { -0x29, 0x66 }, + { 0x29, 0x66 }, + { 0x7B, 0x66 }, + { 0xCD, 0x66 }, +}; +s32 lbl_1_data_584[0x12][2] = { + { 0, 0 }, + { -0x7B, -0x66 }, + { -0x29, -0x66 }, + { 0x29, -0x66 }, + { 0x7B, -0x66 }, + { 0, 0 }, + { 0, 0 }, + { -0x7B, 0 }, + { -0x29, 0 }, + { 0x29, 0 }, + { 0x7B, 0 }, + { 0, 0 }, + { -0xCD, 0x66 }, + { -0x7B, 0x66 }, + { -0x29, 0x66 }, + { 0x29, 0x66 }, + { 0x7B, 0x66 }, + { 0xCD, 0x66 }, +}; +s32 lbl_1_data_614[4][2] = { + { -0x45, -8 }, + { -0x17, -8 }, + { 0x17, -8 }, + { 0x45, -8 }, +}; +s32 lbl_1_data_634[2] = { 0, 0xFFFFFFF8 }; +s32 lbl_1_data_63C[2][2] = { + { -0x17, -8 }, + { 0x17, -8 }, +}; +s32 lbl_1_data_64C[4][2] = { + { -0x59, -8 }, + { -0x2B, -8 }, + { 0x2B, -8 }, + { 0x59, -8 }, +}; +s32 lbl_1_data_66C = -1; +s32 lbl_1_data_670 = -1; + +s32 fn_1_97D0(s32 arg0, s32 arg1) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 var_r18; + + var_r30 = 0; + var_r27 = 0; + var_r26 = 0; + var_r29 = arg0; + if (arg0 == 3) { + lbl_1_bss_74 = 1; + } + else { + lbl_1_bss_74 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_48 = var_r31; + lbl_1_bss_8C[var_r31].unk_4C = 0; + lbl_1_bss_8C[var_r31].unk_50 = 0; + lbl_1_bss_8C[var_r31].unk_54 = 0; + if (lbl_1_bss_74 != 0) { + lbl_1_bss_8C[var_r31].unk_5C = var_r31 + 1; + } + else { + lbl_1_bss_8C[var_r31].unk_5C = var_r31; + } + lbl_1_bss_8C[var_r31].unk_58 = var_r31; + } + if (arg1 == 1) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_48 = var_r31; + lbl_1_bss_8C[var_r31].unk_4C = GWPlayerCfg[var_r31].group; + lbl_1_bss_8C[var_r31].unk_50 = GWPlayerCfg[var_r31].iscom; + lbl_1_bss_8C[var_r31].unk_54 = GWPlayerCfg[var_r31].diff; + lbl_1_bss_8C[var_r31].unk_5C = GWPlayerCfg[var_r31].character; + lbl_1_bss_8C[var_r31].unk_58 = GWPlayerCfg[var_r31].pad_idx; + lbl_1_bss_8C[var_r31].unk_08 = lbl_1_bss_8C[var_r31].unk_0C = lbl_1_bss_8C[var_r31].unk_10 = lbl_1_bss_8C[var_r31].unk_14 = 0; + lbl_1_bss_8C[var_r31].unk_28 = lbl_1_bss_8C[var_r31].unk_2C = lbl_1_bss_8C[var_r31].unk_30 = lbl_1_bss_8C[var_r31].unk_34 = 0; + switch (arg0) { + case 0: + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + lbl_1_bss_8C[var_r31].unk_08 = 1; + } + else { + var_r27 = 1; + } + break; + case 2: + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + lbl_1_bss_8C[var_r31].unk_08 = 1; + var_r26++; + } + else { + var_r27 = 1; + } + break; + case 3: + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + lbl_1_bss_8C[var_r31].unk_08 = 1; + var_r26++; + } + else { + var_r27 = 1; + } + if (lbl_1_bss_8C[var_r31].unk_5C <= 3) { + lbl_1_bss_8C[var_r31].unk_5C++; + } + else if (lbl_1_bss_8C[var_r31].unk_5C <= 7) { + lbl_1_bss_8C[var_r31].unk_5C += 3; + } + else { + lbl_1_bss_8C[var_r31].unk_5C = fn_1_10C18(lbl_1_bss_8C[var_r31].unk_5C) + 4; + } + break; + } + } + switch (arg0) { + case 0: + if (var_r27 == 1) { + var_r29 = 0x66; + var_r30 = 1; + } + else { + var_r29 = 0x65; + var_r30 = 0; + } + break; + case 1: + var_r29 = 0xC8; + break; + case 2: + if ((var_r27 == 1) && (var_r26 == 1)) { + var_r29 = 0x12E; + var_r30 = 1; + } + else { + var_r29 = 0x12D; + var_r30 = 0; + } + break; + case 3: + if (var_r27 == 1) { + var_r29 = 0x192; + var_r30 = 1; + } + else { + var_r29 = 0x191; + var_r30 = 0; + } + break; + } + } + while (TRUE) { + fn_1_10FBC(1); + if (var_r28 == 0x3E7) { + break; + } + switch (var_r29) { + case 0x0: + var_r29 = 0x64; + break; + case 0x1: + var_r29 = 0xC8; + break; + case 0x2: + var_r29 = 0x12C; + break; + case 0x3: + var_r29 = 0x190; + break; + case 0x64: + var_r28 = fn_1_7E0C(var_r30); + if (var_r28 != 0) { + var_r29 = 0x65; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x65: + var_r23 = fn_1_8030(var_r30, 4); + var_r28 = var_r23; + if (var_r28 == 1) { + var_r29 = 0x66; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x64; + var_r30 = 1; + } + break; + case 0x66: + var_r22 = fn_1_8338(var_r30, 4); + var_r28 = var_r22; + var_r28 = var_r28; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x65; + var_r30 = 1; + } + break; + case 0xC8: + var_r21 = fn_1_8030(0, 1); + var_r28 = var_r21; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x12C: + var_r28 = fn_1_88A4(); + if (var_r28 != 0) { + var_r29 = 0x12D; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x12D: + var_r20 = fn_1_8030(var_r30, 2); + var_r28 = var_r20; + if (var_r28 == 1) { + var_r29 = 0x12E; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x12C; + var_r30 = 1; + } + break; + case 0x12E: + var_r19 = fn_1_8338(var_r30, 2); + var_r28 = var_r19; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x12D; + var_r30 = 1; + } + break; + case 0x190: + var_r18 = fn_1_7E0C(0); + var_r28 = var_r18; + if (var_r28 != 0) { + var_r29 = 0x191; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x191: + var_r28 = fn_1_8B94(var_r30); + if (var_r28 == 1) { + var_r29 = 0x192; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x190; + var_r30 = 1; + } + break; + case 0x192: + var_r28 = fn_1_8E50(var_r30); + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x191; + var_r30 = 1; + } + break; + case 0x384: + fn_1_9350(arg0); + var_r24 = 1; + var_r28 = 0x3E7; + break; + case 0x385: + var_r24 = 0; + var_r28 = 0x3E7; + break; + } + } + return var_r24; +} + +void fn_1_9FDC(s32 arg0) +{ + fn_1_10764(arg0); +} + +void fn_1_A004(s32 arg0) +{ + fn_1_108C8(arg0); +} + +void fn_1_A02C(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + + var_r30 = HuSprGrpCreate(0xB); + lbl_1_bss_26C[0] = var_r30; + var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x46)), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r29); + HuSprPosSet(var_r30, 0, 0.0f, 0.0f); + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x47)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29 = HuSprCreate(var_r28, 0x3E8, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 1, var_r29); + HuSprBankSet(var_r30, var_r31 + 1, var_r31); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x48)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(var_r28, 0x76C, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 3, var_r29); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_4B4[var_r31 % 4][0], lbl_1_data_4B4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + fn_1_A248(); + fn_1_A574(); +} + +void fn_1_A248(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[0]; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, 4); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_4B4[var_r31 % 4][0], lbl_1_data_4B4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r30, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_14 = lbl_1_bss_8C[var_r31].unk_50 = 0; + } +} + +void fn_1_A3DC(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[0]; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, 4); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_4B4[var_r31 % 4 + 1][0], lbl_1_data_4B4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r30, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_14 = lbl_1_bss_8C[var_r31].unk_50 = 0; + } +} + +void fn_1_A574(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[0]; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 288.0f, 110.0f); + HuSprGrpScaleSet(var_r30, 1.0f, 1.0f); +} + +void fn_1_A610(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_26C[0]; + var_r29 = lbl_1_bss_26C[0]; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r29, var_r31, 4); + } + HuSprAttrReset(var_r29, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r29, var_r31 + 3, 4); + HuSprPosSet(var_r29, var_r31 + 3, lbl_1_data_4B4[var_r31 % 4][0], lbl_1_data_4B4[0][1]); + HuSprBankSet(var_r29, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r29, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_14 = lbl_1_bss_8C[var_r31].unk_50 = 0; + } + for (var_r30 = 0; var_r30 <= 0x3C; var_r30++) { + fn_1_10FBC(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_10E38(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f); + fn_1_10FBC(0xA); +} + +void fn_1_A8E8(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_26C[0]; + var_r29 = lbl_1_bss_26C[0]; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r29, var_r31, 4); + } + HuSprAttrReset(var_r29, 0, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r29, var_r31 + 3, 4); + HuSprPosSet(var_r29, var_r31 + 3, lbl_1_data_4B4[var_r31 % 4 + 1][0], lbl_1_data_4B4[0][1]); + HuSprBankSet(var_r29, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r29, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_8C[var_r31].unk_14 = lbl_1_bss_8C[var_r31].unk_50 = 0; + } + for (var_r30 = 0; var_r30 <= 0x3C; var_r30++) { + fn_1_10FBC(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_10E38(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f); + fn_1_10FBC(0xA); +} +void fn_1_ABC4(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_26C[0]; + fn_1_10FBC(0xA); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_10FBC(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_10E38(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, -390.0f); + var_r29 = lbl_1_bss_26C[0]; + for (var_r30 = 0; var_r30 < 0xB; var_r30++) { + HuSprAttrSet(var_r29, var_r30, 4); + } + HuSprGrpPosSet(var_r29, 288.0f, 110.0f); + HuSprGrpScaleSet(var_r29, 1.0f, 1.0f); +} + +void fn_1_ADA4(s32 arg0) +{ + s32 var_r31 = lbl_1_bss_26C[0]; + HuSprAttrReset(var_r31, 1, 4); + HuSprAttrReset(var_r31, 2, 4); + HuSprPosSet(var_r31, 1, -155.0f, 0.0f); + HuSprPosSet(var_r31, 2, 155.0f, 0.0f); + if (arg0 == 2) { + HuSprPosSet(var_r31, 1, -80.0f, 0.0f); + HuSprPosSet(var_r31, 2, 80.0f, 0.0f); + } +} + +void fn_1_AE94(void) +{ + s32 var_r31 = lbl_1_bss_26C[0]; + HuSprAttrSet(var_r31, 1, 4); + HuSprAttrSet(var_r31, 2, 4); +} + +void fn_1_AEE4(omObjData *object, ZtarDllUnkStruct2 *arg1) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = lbl_1_bss_26C[0]; + var_r29 = var_r28 = var_r26 = var_r24 = 0; + lbl_1_bss_20C.unk_28 = 0; + var_r29 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + var_r29++; + } + } + var_r28 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (HuPadStatGet(var_r31) != -1) { + var_r28++; + } + } + if (var_r28 >= 2) { + var_r25 = lbl_1_bss_26C[0]; + HuSprAttrReset(var_r25, 1, 4); + HuSprAttrReset(var_r25, 2, 4); + HuSprPosSet(var_r25, 1, -155.0f, 0.0f); + HuSprPosSet(var_r25, 2, 155.0f, 0.0f); + if (HuPadStkX[0] >= 5) { + var_r29++; + var_r26 = 1; + } + else if (HuPadStkX[0] <= -5) { + var_r29--; + var_r26 = -1; + } + } + else { + var_r23 = lbl_1_bss_26C[0]; + HuSprAttrSet(var_r23, 1, 4); + HuSprAttrSet(var_r23, 2, 4); + } + if (var_r29 < 1) { + var_r29 = var_r28; + } + else if (var_r29 > var_r28) { + if (var_r26 == 0) { + var_r29 = var_r28; + var_r24 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r24 != 0)) { + lbl_1_bss_20C.unk_28 = 1; + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + if (var_r31 <= 5) { + var_f31 = fn_1_10E38(0.0f, 10.0f, var_r31, 5.0f); + var_f30 = fn_1_10E38(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f31 = fn_1_10E38(10.0f, 0.0f, var_r31 - 5, 5.0f); + var_f30 = fn_1_10E38(0.0f, 1.0f, var_r31 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r27, 2, 3.0f + (155.0f + var_f31), 0.0f); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r27, 1, (-155.0f - var_f31) - 3.0f, 0.0f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r30 < var_r29) && (lbl_1_bss_8C[var_r30].unk_50 == 1)) { + lbl_1_bss_8C[var_r30].unk_14 = 0; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 0); + } + } + else if ((var_r30 >= var_r29) && (lbl_1_bss_8C[var_r30].unk_50 == 0)) { + lbl_1_bss_8C[var_r30].unk_14 = 1; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 1); + } + } + } + fn_1_10FBC(1); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 < var_r29) { + lbl_1_bss_8C[var_r30].unk_50 = 0; + } + else { + lbl_1_bss_8C[var_r30].unk_50 = 1; + } + } + } + lbl_1_bss_20C.unk_28 = 0; +} + +void fn_1_B468(omObjData *object, ZtarDllUnkStruct2 *arg1) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = lbl_1_bss_26C[0]; + var_r29 = var_r28 = var_r26 = var_r24 = 0; + lbl_1_bss_20C.unk_28 = 0; + var_r29 = 1; + for (var_r31 = 1; var_r31 < 2; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_50 == 0) { + var_r29++; + } + } + var_r28 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (HuPadStatGet(var_r31) != -1) { + var_r28++; + } + } + if (var_r28 > 2) { + var_r28 = 2; + } + if (var_r28 >= 2) { + var_r25 = lbl_1_bss_26C[0]; + HuSprAttrReset(var_r25, 1, 4); + HuSprAttrReset(var_r25, 2, 4); + HuSprPosSet(var_r25, 1, -155.0f, 0.0f); + HuSprPosSet(var_r25, 2, 155.0f, 0.0f); + HuSprPosSet(var_r25, 1, -80.0f, 0.0f); + HuSprPosSet(var_r25, 2, 80.0f, 0.0f); + if (HuPadStkX[0] >= 5) { + var_r29++; + var_r26 = 1; + } + else if (HuPadStkX[0] <= -5) { + var_r29--; + var_r26 = -1; + } + } + else { + var_r23 = lbl_1_bss_26C[0]; + HuSprAttrSet(var_r23, 1, 4); + HuSprAttrSet(var_r23, 2, 4); + } + if (var_r29 < 1) { + var_r29 = var_r28; + } + else if (var_r29 > var_r28) { + if (var_r26 == 0) { + var_r29 = var_r28; + var_r24 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r24 != 0)) { + lbl_1_bss_20C.unk_28 = 1; + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + if (var_r31 <= 5) { + var_f31 = fn_1_10E38(0.0f, 10.0f, var_r31, 5.0f); + var_f30 = fn_1_10E38(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f31 = fn_1_10E38(10.0f, 0.0f, var_r31 - 5, 5.0f); + var_f30 = fn_1_10E38(0.0f, 1.0f, var_r31 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r27, 2, 3.0f + (77.0f + var_f31), 0.0f); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r27, 1, (-77.0f - var_f31) - 3.0f, 0.0f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r30 < var_r29) && (lbl_1_bss_8C[var_r30].unk_50 == 1)) { + lbl_1_bss_8C[var_r30].unk_14 = 0; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 0); + } + } + else if ((var_r30 >= var_r29) && (lbl_1_bss_8C[var_r30].unk_50 == 0)) { + lbl_1_bss_8C[var_r30].unk_14 = 1; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 1); + } + } + } + fn_1_10FBC(1); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 < var_r29) { + lbl_1_bss_8C[var_r30].unk_50 = 0; + } + else { + lbl_1_bss_8C[var_r30].unk_50 = 1; + } + } + } + lbl_1_bss_20C.unk_28 = 0; +} + +void fn_1_BA40(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r27; + + var_r29 = HuSprGrpCreate(0x36); + lbl_1_bss_26C[1] = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x4A)), 0xBB8, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + HuSprPosSet(var_r29, 0, 0.0f, 0.0f); + var_r30 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x4B)), 0xBB8, 0); + HuSprGrpMemberSet(var_r29, 1, var_r30); + HuSprPosSet(var_r29, 1, 0.0f, 0.0f); + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x5A)); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MPEX, 0x4C)), 0x76C, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 2, var_r30); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MPEX, 0x5B)), 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x1E, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + DATA_MAKE_NUM(DATADIR_MPEX, 0x60)), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x22, var_r30); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x5F)); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x64)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x26, var_r30); + var_r30 = HuSprCreate(var_r27, 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2A, var_r30); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x65)); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x66)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2E, var_r30); + var_r30 = HuSprCreate(var_r27, 0x320, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x32, var_r30); + } + fn_1_BD7C(0); + fn_1_BFF0(0); +} + +void fn_1_BD7C(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_4D4[var_r31][0], lbl_1_data_4D4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_514[var_r31][0], lbl_1_data_514[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); +} + +void fn_1_BFF0(s32 arg0) +{ + s32 var_r31; + s32 var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); +} +void fn_1_C06C(s32 arg0, s32 arg1) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_26C[1]; + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_4D4[var_r31][0], lbl_1_data_4D4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_514[var_r31][0], lbl_1_data_514[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); + if (arg1 == 1) { + fn_1_11960(); + } + if (arg1 == 2) { + fn_1_11C64(); + } + if (arg1 == 3) { + fn_1_11F68(); + } + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_10FBC(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_10E38(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + if (lbl_1_bss_74 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r28, 288.0f, 169.0f + var_f31); + } + } + if (lbl_1_bss_74 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 189.0f); + return; + } + HuSprGrpPosSet(var_r28, 288.0f, 169.0f); +} + +void fn_1_C4B8(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_26C[1]; + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_4D4[var_r31][0], lbl_1_data_4D4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_514[var_r31][0], lbl_1_data_514[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_10FBC(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_10E38(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + if (lbl_1_bss_74 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r28, 288.0f, 169.0f + var_f31); + } + } + if (lbl_1_bss_74 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 189.0f); + return; + } + HuSprGrpPosSet(var_r28, 288.0f, 169.0f); +} + +void fn_1_C8EC(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_10FBC(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_10E38(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + if (lbl_1_bss_74 != 0) { + HuSprGrpPosSet(var_r29, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r29, 288.0f, 169.0f + var_f31); + } + } + HuSprGrpPosSet(var_r29, 288.0f, -331.0f); + var_r28 = lbl_1_bss_26C[1]; + for (var_r30 = 0; var_r30 < 0x36; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + HuSprGrpPosSet(var_r28, 288.0f, -331.0f); +} + +void fn_1_CAF0(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 0x1E, 0); + HuSprBankSet(var_r30, var_r31 + 0x22, 0); + HuSprBankSet(var_r30, var_r31 + 0x26, 0); + HuSprBankSet(var_r30, var_r31 + 0x2A, 0); + HuSprBankSet(var_r30, var_r31 + 0x2E, 0); + HuSprBankSet(var_r30, var_r31 + 0x32, 0); + } + if (lbl_1_bss_74 != 0) { + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + fn_1_10FBC(1); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_bss_74 != 0) { + var_f31 = fn_1_10E38(lbl_1_data_584[lbl_1_bss_8C[var_r29].unk_5C][0], lbl_1_data_584[var_r29 + 1][0], var_r31, 10.0f); + var_f30 = fn_1_10E38(lbl_1_data_584[lbl_1_bss_8C[var_r29].unk_5C][1], lbl_1_data_584[1][1], var_r31, 10.0f); + } + else { + var_f31 = fn_1_10E38(lbl_1_data_4D4[lbl_1_bss_8C[var_r29].unk_5C % 4][0], lbl_1_data_4D4[var_r29][0], var_r31, 10.0f); + var_f30 = fn_1_10E38(lbl_1_data_4D4[(lbl_1_bss_8C[var_r29].unk_5C / 4) * 4][1], lbl_1_data_4D4[0][1], var_r31, 10.0f); + } + HuSprPosSet(var_r30, var_r29 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r30, var_r29 + 0x22, var_f31, var_f30); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_74 != 0) { + HuSprPosSet(var_r30, var_r31 + 0x1E, *lbl_1_data_584[var_r31 + 1], lbl_1_data_584[var_r31 + 1][1]); + HuSprPosSet(var_r30, var_r31 + 0x22, *lbl_1_data_584[var_r31 + 1], lbl_1_data_584[var_r31 + 1][1]); + lbl_1_bss_8C[var_r31].unk_5C = var_r31 + 1; + lbl_1_bss_8C[var_r31].unk_48 = var_r31; + lbl_1_bss_8C[var_r31].unk_08 = 0; + } + else { + HuSprPosSet(var_r30, var_r31 + 0x1E, lbl_1_data_4D4[var_r31][0], lbl_1_data_4D4[var_r31][1]); + HuSprPosSet(var_r30, var_r31 + 0x22, lbl_1_data_4D4[var_r31][0], lbl_1_data_4D4[var_r31][1]); + lbl_1_bss_8C[var_r31].unk_48 = var_r31; + lbl_1_bss_8C[var_r31].unk_5C = var_r31; + lbl_1_bss_8C[var_r31].unk_08 = 0; + } + } +} + +void fn_1_D280(omObjData *arg0, ZtarDllUnkStruct2 *arg1) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r24 = lbl_1_bss_26C[1]; + var_r27 = 0; + var_r26 = 0; + HuSprAttrReset(var_r24, arg1->unk_48 + 0x1E, 4); + HuSprAttrReset(var_r24, arg1->unk_48 + 0x22, 4); + if (lbl_1_bss_74 != 0) { + var_r30 = arg1->unk_5C % 6; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 6; + var_r22 = var_r29; + } + else { + var_r30 = arg1->unk_5C % 4; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 4; + var_r22 = var_r29; + } + if (arg1->unk_08 == 0) { + if (HuPadBtnDown[arg1->unk_48] & PAD_BUTTON_A) { + arg1->unk_08 = 1; + if (lbl_1_bss_74 != 0) { + var_r21 = 0; + if (arg1->unk_5C <= 5) { + var_r21 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r21 = arg1->unk_5C - 3; + } + else { + var_r21 = arg1->unk_5C - 4; + } + fn_1_122A8(var_r21); + HuSprBankSet(var_r24, var_r21 + 2, 1); + } + else { + fn_1_122A8(arg1->unk_5C); + HuSprBankSet(var_r24, arg1->unk_5C + 2, 1); + } + HuSprBankSet(var_r24, arg1->unk_48 + 0x1E, 1); + HuSprBankSet(var_r24, arg1->unk_48 + 0x22, 1); + } + else if (lbl_1_bss_74 != 0) { + if (HuPadStkX[arg1->unk_48] >= 5) { + var_r30++; + var_r27 = 1; + if (var_r30 > 5) { + var_r30 = 5; + } + } + else if (HuPadStkX[arg1->unk_48] <= -5) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk_48] <= -5) { + var_r29++; + var_r26 = 1; + if (var_r29 > 2) { + var_r29 = 2; + } + } + else if (HuPadStkY[arg1->unk_48] >= 5) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + else { + if (HuPadStkX[arg1->unk_48] >= 5) { + var_r30++; + var_r27 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[arg1->unk_48] <= -5) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk_48] <= -5) { + var_r29++; + var_r26 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[arg1->unk_48] >= 5) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if ((HuPadBtnDown[arg1->unk_48] & PAD_BUTTON_B) != 0) { + arg1->unk_08 = 0; + lbl_1_bss_20C.unk_10 = 1; + HuAudFXPlay(3); + if (lbl_1_bss_74 != 0) { + var_r20 = 0; + if (arg1->unk_5C <= 5) { + var_r20 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r20 = arg1->unk_5C - 3; + } + else { + var_r20 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r24, var_r20 + 2, 0); + } + else { + HuSprBankSet(var_r24, arg1->unk_5C + 2, 0); + } + HuSprBankSet(var_r24, arg1->unk_48 + 0x1E, 0); + HuSprBankSet(var_r24, arg1->unk_48 + 0x22, 0); + } + if (lbl_1_bss_74 != 0) { + var_r25 = var_r30 + (var_r29 * 6); + } + else { + var_r25 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r25) { + if (lbl_1_bss_74 != 0) { + while (1) { + var_r25 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_8C[var_r28].unk_5C)) + || (var_r25 == 0) || (var_r25 == 5) || (var_r25 == 6) || (var_r25 == 0xB)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 5) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 2) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 5) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 2) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + else { + } + } + if (var_r28 == 4) { + break; + } + } + } + else { + while (1) { + var_r25 = var_r30 + (var_r29 * 4); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_8C[var_r28].unk_5C)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 3) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 1) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + break; + } + else if (((var_r30 + var_r27) <= 3) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + break; + } + else if (((var_r29 + var_r26) <= 1) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + break; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + break; + } + } + else { + continue; + } + } + if (var_r28 == 4) { + break; + } + } + } + if (lbl_1_bss_74 != 0) { + var_r25 = var_r30 + (var_r29 * 6); + } + else { + var_r25 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r25) { + HuAudFXPlay(0); + var_r19 = arg1->unk_5C; + arg1->unk_5C = var_r25; + if (lbl_1_bss_74 != 0) { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_10FBC(1); + var_f31 = fn_1_10E38(lbl_1_data_584[var_r19][0], lbl_1_data_584[var_r25][0], var_r28, 10.0f); + var_f30 = fn_1_10E38(lbl_1_data_584[var_r19][1], lbl_1_data_584[var_r25][1], var_r28, 10.0f); + HuSprPosSet(var_r24, arg1->unk_48 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r24, arg1->unk_48 + 0x22, var_f31, var_f30); + } + return; + } + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_10FBC(1); + var_f31 = fn_1_10E38(*lbl_1_data_4D4[var_r23], *lbl_1_data_4D4[var_r30], var_r28, 10.0f); + var_f30 = fn_1_10E38(lbl_1_data_4D4[var_r22 * 4][1], lbl_1_data_4D4[var_r29 * 4][1], var_r28, 10.0f); + HuSprPosSet(var_r24, arg1->unk_48 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r24, arg1->unk_48 + 0x22, var_f31, var_f30); + } + } + } +} + +void fn_1_DD8C(ZtarDllUnkStruct2 *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = lbl_1_bss_26C[1]; + do { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != arg0->unk_48) && (lbl_1_bss_8C[var_r29].unk_08 == 1) && (arg0->unk_5C == lbl_1_bss_8C[var_r29].unk_5C)) { + arg0->unk_5C += 1; + break; + } + } + } while (var_r29 != 4); + arg0->unk_54 = 0; + if (lbl_1_bss_74 != 0) { + var_r28 = 0; + if (arg0->unk_5C <= 5) { + var_r28 = arg0->unk_5C - 1; + } + else if (arg0->unk_5C <= 0xB) { + var_r28 = arg0->unk_5C - 3; + } + else { + var_r28 = arg0->unk_5C - 4; + } + HuSprBankSet(var_r30, var_r28 + 2, 0); + } + else { + HuSprBankSet(var_r30, arg0->unk_5C + 2, 0); + } + HuSprBankSet(var_r30, arg0->unk_48 + 0x26, 0); + HuSprBankSet(var_r30, arg0->unk_48 + 0x2A, 0); + HuSprBankSet(var_r30, arg0->unk_48 + 0x2E, arg0->unk_54); + HuSprBankSet(var_r30, arg0->unk_48 + 0x32, arg0->unk_54); + if (lbl_1_bss_74 != 0) { + HuSprPosSet(var_r30, arg0->unk_48 + 0x26, *lbl_1_data_584[arg0->unk_5C], lbl_1_data_584[arg0->unk_5C][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2A, *lbl_1_data_584[arg0->unk_5C], lbl_1_data_584[arg0->unk_5C][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2E, *lbl_1_data_584[arg0->unk_5C], lbl_1_data_584[arg0->unk_5C][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_48 + 0x32, *lbl_1_data_584[arg0->unk_5C], lbl_1_data_584[arg0->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r30, arg0->unk_48 + 0x26, *lbl_1_data_4D4[arg0->unk_5C % 4], lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2A, *lbl_1_data_4D4[arg0->unk_5C % 4], lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2E, *lbl_1_data_4D4[arg0->unk_5C % 4], lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_48 + 0x32, *lbl_1_data_4D4[arg0->unk_5C % 4], lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + arg0->unk_10 = 0; + HuSprAttrReset(var_r30, arg0->unk_48 + 0x26, 4); + HuSprAttrReset(var_r30, arg0->unk_48 + 0x2A, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2E, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x32, 4); +} + +void fn_1_E4AC(ZtarDllUnkStruct2 *arg0) +{ + s32 var_r30 = lbl_1_bss_26C[1]; + HuSprAttrSet(var_r30, arg0->unk_48 + 0x26, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2A, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2E, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x32, 4); +} + +void fn_1_E548(omObjData *arg0, ZtarDllUnkStruct2 *arg1) +{ + s32 sp8; + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + u32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r27 = lbl_1_bss_26C[1]; + var_r26 = 0; + var_r25 = 0; + sp8 = arg1->unk_54; + lbl_1_bss_20C.unk_30 = 0; + if (lbl_1_bss_74 != 0) { + var_r30 = arg1->unk_5C % 6; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 6; + var_r22 = var_r29; + } + else { + var_r30 = arg1->unk_5C % 4; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 4; + var_r22 = var_r29; + } + if (arg1->unk_08 == 0) { + if (HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_A) { + arg1->unk_08 = 1; + HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 1); + HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 1); + if (lbl_1_bss_74 != 0) { + var_r21 = 0; + if (arg1->unk_5C <= 5) { + var_r21 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r21 = arg1->unk_5C - 3; + } + else { + var_r21 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r27, var_r21 + 2, 1); + fn_1_122A8(var_r21); + } + else { + HuSprBankSet(var_r27, arg1->unk_5C + 2, 1); + fn_1_122A8(arg1->unk_5C); + } + arg1->unk_54 = 0; + HuSprBankSet(var_r27, arg1->unk_48 + 0x2E, arg1->unk_54); + if (lbl_1_bss_74 != 0) { + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, lbl_1_data_584[arg1->unk_5C][0], lbl_1_data_584[arg1->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, lbl_1_data_4D4[arg1->unk_5C % 4][0], lbl_1_data_4D4[(arg1->unk_5C / 4) * 4][1] + 0x23); + } + HuSprAttrReset(var_r27, arg1->unk_48 + 0x2E, 4); + } + else if (lbl_1_bss_74 != 0) { + if (HuPadStkX[0] >= 5) { + var_r30++; + var_r26 = 1; + if (var_r30 > 5) { + var_r30 = 5; + } + } + else if (HuPadStkX[0] <= -5) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (*HuPadStkY <= -5) { + var_r29++; + var_r25 = 1; + if (var_r29 > 2) { + var_r29 = 2; + } + } + else if (*HuPadStkY >= 5) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + else { + if (HuPadStkX[0] >= 5) { + var_r30++; + var_r26 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[0] <= -5) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (*HuPadStkY <= -5) { + var_r29++; + var_r25 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (*HuPadStkY >= 5) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_B) { + arg1->unk_08 = arg1->unk_10 = 0; + if (lbl_1_bss_74 != 0) { + var_r20 = 0; + if (arg1->unk_5C <= 5) { + var_r20 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r20 = arg1->unk_5C - 3; + } + else { + var_r20 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r27, var_r20 + 2, 0); + } + else { + HuSprBankSet(var_r27, arg1->unk_5C + 2, 0); + } + HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 0); + HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 0); + HuSprAttrSet(var_r27, arg1->unk_48 + 0x2E, 4); + HuAudFXPlay(3); + } + if (lbl_1_bss_74 != 0) { + var_r24 = var_r30 + (var_r29 * 6); + } + else { + var_r24 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r24) { + if (lbl_1_bss_74 != 0) { + while (1) { + fn_1_10FBC(1); + var_r24 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_8C[var_r28].unk_5C)) + || (var_r24 == 0) || (var_r24 == 5) || (var_r24 == 6) || (var_r24 == 0xB)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 5) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 2) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 5) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 2) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + if (var_r28 == 4) { + break; + } + } + } + else { + do { + var_r24 = var_r30 + (var_r29 * 4); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_8C[var_r28].unk_5C)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 3) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 1) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 3) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 1) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + } while (var_r28 != 4); + } + if (lbl_1_bss_74 != 0) { + var_r24 = var_r30 + (var_r29 * 6); + } + else { + var_r24 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r24) { + var_r19 = arg1->unk_5C; + arg1->unk_5C = var_r24; + HuAudFXPlay(0); + if (lbl_1_bss_74 != 0) { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_10FBC(1); + var_f31 = fn_1_10E38(lbl_1_data_584[var_r19][0], lbl_1_data_584[var_r24][0], var_r28, 10.0f); + var_f30 = fn_1_10E38(lbl_1_data_584[var_r19][1], lbl_1_data_584[var_r24][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_48 + 0x26, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2A, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, var_f31, 35.0f + var_f30); + } + } + else { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_10FBC(1); + var_f31 = fn_1_10E38(lbl_1_data_4D4[var_r23][0], lbl_1_data_4D4[var_r30][0], var_r28, 10.0f); + var_f30 = fn_1_10E38(lbl_1_data_4D4[var_r22 * 4][1], lbl_1_data_4D4[var_r29 * 4][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_48 + 0x26, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2A, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, var_f31, 35.0f + var_f30); + } + } + } + } + lbl_1_bss_20C.unk_30 = 0; +} + +s32 fn_1_F214(ZtarDllUnkStruct2 *arg0) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r28 = 0; + var_r29 = lbl_1_bss_26C[1]; + while (1) { + fn_1_10FBC(1); + var_r28 = 0; + var_r26 = arg0->unk_54; + if (HuPadStkX[lbl_1_bss_8C[0].unk_58] >= 5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_RIGHT)) { + if (GWGameStat.veryHardUnlock == 1) { + arg0->unk_54++; + var_r28 = 1; + if (arg0->unk_54 > 3) { + arg0->unk_54 = 0; + } + } + else { + arg0->unk_54++; + var_r28 = 1; + if (arg0->unk_54 > 2) { + arg0->unk_54 = 0; + } + } + } + else if (HuPadStkX[lbl_1_bss_8C[0].unk_58] <= -5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_LEFT)) { + if (GWGameStat.veryHardUnlock == 1) { + arg0->unk_54--; + var_r28 = -1; + if (arg0->unk_54 < 0) { + arg0->unk_54 = 3; + } + } + else { + arg0->unk_54--; + var_r28 = -1; + if (arg0->unk_54 < 0) { + arg0->unk_54 = 2; + } + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_A) { + var_r27 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + var_r27 = 0; + HuAudFXPlay(3); + break; + } + if (arg0->unk_54 != var_r26) { + HuAudFXPlay(0); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_10FBC(1); + if (lbl_1_bss_74) { + var_f31 = fn_1_10E38(lbl_1_data_584[arg0->unk_5C][0], lbl_1_data_584[arg0->unk_5C][0] + (var_r28 * 10), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 46, var_f31, lbl_1_data_584[arg0->unk_5C][1] + 35); + } + else { + var_f31 = fn_1_10E38(lbl_1_data_4D4[arg0->unk_5C % 4][0], lbl_1_data_4D4[arg0->unk_5C % 4][0] + (var_r28 * 10), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 46, var_f31, lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 35); + } + } + HuSprBankSet(var_r29, arg0->unk_48 + 46, arg0->unk_54); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_10FBC(1); + if (lbl_1_bss_74) { + var_f31 = fn_1_10E38(lbl_1_data_584[arg0->unk_5C][0] + (var_r28 * 10), lbl_1_data_584[arg0->unk_5C][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 46, var_f31, lbl_1_data_584[arg0->unk_5C][1] + 35); + } + else { + var_f31 = fn_1_10E38(lbl_1_data_4D4[arg0->unk_5C % 4][0] + (var_r28 * 10), lbl_1_data_4D4[arg0->unk_5C % 4][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 46, var_f31, lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 35); + } + } + } + } + if (var_r27 == 1) { + if (lbl_1_bss_74) { + HuSprPosSet(var_r29, arg0->unk_48 + 50, lbl_1_data_584[arg0->unk_5C][0], lbl_1_data_584[arg0->unk_5C][1] + 35); + } + else { + HuSprPosSet(var_r29, arg0->unk_48 + 50, lbl_1_data_4D4[arg0->unk_5C % 4][0], lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 35); + } + HuSprBankSet(var_r29, arg0->unk_48 + 50, arg0->unk_54); + HuSprAttrReset(var_r29, arg0->unk_48 + 50, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r29, arg0->unk_48 + 46, HUSPR_ATTR_DISPOFF); + } + return var_r27; +} + +void fn_1_FB38(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r27; + + var_r29 = HuSprGrpCreate(0x1B); + lbl_1_bss_26C[2] = var_r29; + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x67)), 0x64, 0); + HuSprGrpMemberSet(var_r29, 0, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x68)), 0x64, 0); + HuSprGrpMemberSet(var_r29, 1, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x69)), 0x64, 0); + HuSprGrpMemberSet(var_r29, 2, var_r31); + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x6A)), 0x64, 0); + HuSprGrpMemberSet(var_r29, 3, var_r31); + for (var_r30 = 0; var_r30 < 0xE; var_r30++) { + var_r31 = HuSprCreate(HuSprAnimReadFile(var_r30 + DATA_MAKE_NUM(DATADIR_MPEX, 0x6B)), 0x5A, 0); + HuSprGrpMemberSet(var_r29, var_r30 + 4, var_r31); + } + var_r28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x79)); + var_r27 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x7A)); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = HuSprCreate(var_r28, 0x50, 0); + HuSprGrpMemberSet(var_r29, var_r30 + 0x12, var_r31); + var_r31 = HuSprCreate(var_r27, 0x50, 0); + HuSprGrpMemberSet(var_r29, var_r30 + 0x16, var_r31); + } + var_r31 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MPEX, 0x7B)), 0x46, 0); + HuSprGrpMemberSet(var_r29, 0x1A, var_r31); + fn_1_FD90(0); + fn_1_106E8(0); +} + +void fn_1_FD90(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + + var_r30 = lbl_1_bss_26C[2]; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + switch (arg0) { + case 0: + HuSprAttrReset(var_r30, 2, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = GWPlayerCfg[var_r31].character; + var_r25 = GWPlayerCfg[var_r31].diff; + HuSprAttrReset(var_r30, var_r28 + 4, 4); + HuSprPosSet(var_r30, var_r28 + 4, lbl_1_data_614[var_r31][0], lbl_1_data_614[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r25); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_614[var_r31][0], lbl_1_data_614[var_r31][1] + 0x14); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_614[var_r31][0], lbl_1_data_614[var_r31][1] + 0x14); + } + } + break; + case 1: + HuSprAttrReset(var_r30, 0, 4); + var_r27 = GWPlayerCfg->character; + var_r24 = GWPlayerCfg->diff; + HuSprAttrReset(var_r30, var_r27 + 4, 4); + HuSprPosSet(var_r30, var_r27 + 4, 0.0f, lbl_1_data_634[1]); + if (GWPlayerCfg->iscom != 0) { + HuSprAttrReset(var_r30, 0x16, 4); + HuSprBankSet(var_r30, 0x16, var_r24); + HuSprPosSet(var_r30, var_r31 + 0x16, 0.0f, lbl_1_data_634[1] + 0x14); + } + else { + HuSprAttrReset(var_r30, 0x12, 4); + HuSprBankSet(var_r30, 0x12, 0); + HuSprPosSet(var_r30, 0x12, 0.0f, lbl_1_data_634[1] + 0x14); + } + break; + case 2: + HuSprAttrReset(var_r30, 1, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r26 = GWPlayerCfg[var_r31].character; + var_r23 = GWPlayerCfg[var_r31].diff; + HuSprAttrReset(var_r30, var_r26 + 4, 4); + HuSprPosSet(var_r30, var_r26 + 4, lbl_1_data_63C[var_r31][0], lbl_1_data_63C[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r23); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_63C[var_r31][0], lbl_1_data_63C[var_r31][1] + 0x19); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_63C[var_r31][0], lbl_1_data_63C[var_r31][1] + 0x19); + } + } + break; + case 3: + HuSprAttrReset(var_r30, 1, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = GWPlayerCfg[var_r31].character; + var_r22 = GWPlayerCfg[var_r31].diff; + var_r29 = fn_1_10C18(var_r29); + HuSprAttrReset(var_r30, var_r29 + 4, 4); + HuSprPosSet(var_r30, var_r29 + 4, lbl_1_data_64C[var_r31][0], lbl_1_data_64C[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r22); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_64C[var_r31][0], lbl_1_data_64C[var_r31][1] + 0x19); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_64C[var_r31][0], lbl_1_data_64C[var_r31][1] + 0x19); + } + } + HuSprAttrReset(var_r30, 0x1A, 4); + break; + } + HuSprGrpPosSet(var_r30, 112.0f, -428.0f); +} + +void fn_1_106E8(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[2]; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 112.0f, -428.0f); +} + +void fn_1_10764(s32 arg0) +{ + float var_f31; + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_26C[2]; + fn_1_FD90(arg0); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_10FBC(1); + if (var_r31 <= 0x32) { + var_f31 = fn_1_10E38(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, 0.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r30, 112.0f, 72.0f + var_f31); + } + HuSprGrpPosSet(var_r30, 112.0f, 72.0f); +} + +void fn_1_108C8(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_26C[2]; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_10FBC(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_10E38(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_10D60(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r29, 112.0f, 72.0f + var_f31); + } + HuSprGrpPosSet(var_r29, 112.0f, -428.0f); + var_r28 = lbl_1_bss_26C[2]; + for (var_r30 = 0; var_r30 < 0x1B; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + HuSprGrpPosSet(var_r28, 112.0f, -428.0f); +} + +void fn_1_10A80(void) +{ + omObjData *var_r31; + + var_r31 = NULL; + var_r31 = omAddObjEx(lbl_1_bss_70, 0x1000, 8, 8, -1, NULL); + lbl_1_bss_20C.unk_00 = var_r31; + lbl_1_bss_20C.unk_04 = NULL; + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_bss_20C.unk_04 != NULL) { + lbl_1_bss_20C.unk_04(lbl_1_bss_20C.unk_00, &lbl_1_bss_20C); + } + } +} + +void fn_1_10B24(void) +{ + s32 var_r31; + omObjData *var_r30; + + var_r31 = lbl_1_bss_78[0]; + lbl_1_bss_78[0] = var_r31 + 1; + var_r30 = NULL; + var_r30 = omAddObjEx(lbl_1_bss_70, 0x1000, 8, 8, -1, NULL); + lbl_1_bss_8C[var_r31].unk_00 = var_r30; + lbl_1_bss_8C[var_r31].unk_04 = NULL; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_bss_8C[var_r31].unk_04 != NULL) { + lbl_1_bss_8C[var_r31].unk_04(lbl_1_bss_8C[var_r31].unk_00, &lbl_1_bss_8C[var_r31]); + } + } +} + +s32 fn_1_10C18(s32 arg0) +{ + s32 var_r31; + + switch (arg0) { + case 9: + var_r31 = 8; + break; + case 10: + var_r31 = 9; + break; + case 11: + var_r31 = 0xA; + break; + case 12: + var_r31 = 0xB; + break; + case 13: + var_r31 = 0xC; + break; + case 8: + var_r31 = 0xD; + break; + default: + var_r31 = -1; + break; + } + return var_r31; +} + +s32 fn_1_10C98(s32 arg0) +{ + s32 var_r31; + + switch (arg0) { + case 8: + var_r31 = 9; + break; + case 9: + var_r31 = 0xA; + break; + case 10: + var_r31 = 0xB; + break; + case 11: + var_r31 = 0xC; + break; + case 12: + var_r31 = 0xD; + break; + case 13: + var_r31 = 8; + break; + default: + var_r31 = -1; + break; + } + return var_r31; +} + +float fn_1_10D18(float arg8, float arg9, float argA, float argB) +{ + if (argB <= argA) { + return arg9; + } + return arg8 + ((argA / argB) * (arg9 - arg8)); +} + +float fn_1_10D40(float arg8, float arg9, float argA) +{ + return (arg9 + (arg8 * (argA - 1.0f))) / argA; +} + +float fn_1_10D60(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + ((arg9 - arg8) * (1.0 - cosd(((90.0f / argB) * argA)))); +} + +float fn_1_10E38(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + ((arg9 - arg8) * sind(((90.0f / argB) * argA))); +} + +float fn_1_10F00(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg8; + } + return arg8 + ((arg9 - arg8) * sind(((360.0f / argB) * argA))); +} + +void fn_1_10FBC(s32 arg0) +{ + if (arg0 <= 1) { + HuPrcVSleep(); + return; + } + HuPrcSleep(arg0); +} + +void fn_1_10FFC(void) +{ + HuWinInit(1); +} + +void fn_1_11020(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (lbl_1_data_66C == -1) { + var_r31 = 0x1C9; + var_r30 = 0x44; + var_r29 = 1.0f + ((576.0f - var_r31) / 2.0f); + var_r28 = 445.0f - var_r30; + lbl_1_data_66C = HuWinExCreateStyled(var_r29, var_r28, var_r31, var_r30, -1, 1); + winData[lbl_1_data_66C].active_pad = 1; + HuWinMesPalSet(lbl_1_data_66C, 7, 0, 0, 0); + HuWinExAnimIn(lbl_1_data_66C); + } +} + +void fn_1_111E0(void) +{ + if (lbl_1_data_66C != -1) { + HuWinMesSet(lbl_1_data_66C, MAKE_MESSID(0x25, 0x04)); + HuWinExAnimOut(lbl_1_data_66C); + HuWinExCleanup(lbl_1_data_66C); + lbl_1_data_66C = -1; + } +} + +void fn_1_11264(s32 arg0, s32 arg1, s32 arg2) +{ + if (lbl_1_data_66C != -1) { + if (arg2 == 1) { + HuWinMesSpeedSet(lbl_1_data_66C, 0); + } + else { + HuWinMesSpeedSet(lbl_1_data_66C, 1); + } + HuWinMesSet(lbl_1_data_66C, arg0); + if (arg1 <= 0) { + HuWinMesWait(lbl_1_data_66C); + return; + } + if (arg1 <= 1) { + HuPrcVSleep(); + return; + } + HuPrcSleep(arg1); + } +} + +void fn_1_11338(u32 arg0, s32 arg1) +{ + if (lbl_1_data_66C != -1) { + HuWinInsertMesSet(lbl_1_data_66C, arg0, arg1); + } +} + +s32 fn_1_11390(s32 arg0) +{ + float spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(0x1E, 0x35)); + var_r30 = spC[0]; + var_r29 = spC[1]; + var_r27 = 0x22C - var_r30; + var_r26 = 0x1BD - var_r29; + var_r31 = HuWinExCreateStyled(var_r27, var_r26, var_r30, var_r29, -1, 1); + winData[var_r31].active_pad = 1; + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + HuWinExAnimIn(var_r31); + HuWinMesSpeedSet(var_r31, 0); + HuWinMesSet(var_r31, MAKE_MESSID(0x1E, 0x35)); + var_r28 = HuWinChoiceGet(var_r31, arg0); + HuWinMesSet(var_r31, MAKE_MESSID(0x25, 0x04)); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + + return var_r28; +} + +void fn_1_114EC(u32 arg0, s32 arg1) +{ + float spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + +#if VERSION_JP + if (lbl_1_data_670 != -1) { + HuWinMesSet(lbl_1_data_670, arg0); + return; + } +#endif + HuWinMesMaxSizeGet(1, spC, arg0); + var_r29 = spC[0]; + var_r31 = spC[1]; + var_r28 = (0x240 - var_r29) / 2.0f; + if (arg1 == 1) { + var_r30 = 0x1BD - var_r31; + } + else { + var_r30 = 0x181 - var_r31; + } +#if VERSION_JP + lbl_1_data_670 = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); +#else + if (lbl_1_data_670 != -1) { + fn_1_1190C(); + lbl_1_data_670 = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); + } + else { + lbl_1_data_670 = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); + } +#endif + HuWinBGTPLvlSet(lbl_1_data_670, 0.0f); + HuWinDispOn(lbl_1_data_670); + HuWinMesSet(lbl_1_data_670, arg0); + HuWinMesSpeedSet(lbl_1_data_670, 0); +} + +void fn_1_11708(u32 arg0) +{ + float sp8[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + +#if VERSION_JP + if (lbl_1_data_670 != -1) { + HuWinMesSet(lbl_1_data_670, arg0); + return; + } +#endif + HuWinMesMaxSizeGet(1, sp8, arg0); + var_r30 = sp8[0]; + var_r31 = sp8[1]; + var_r28 = (0x240 - var_r30) / 2.0f; + var_r29 = 0x181 - var_r31; +#if VERSION_JP + lbl_1_data_670 = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + (void)var_r29; +#else + if (lbl_1_data_670 != -1) { + fn_1_1190C(); + lbl_1_data_670 = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + } + else { + lbl_1_data_670 = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + } +#endif + HuWinBGTPLvlSet(lbl_1_data_670, 0.0f); + HuWinDispOn(lbl_1_data_670); + HuWinMesSet(lbl_1_data_670, arg0); + HuWinMesSpeedSet(lbl_1_data_670, 0); +} + +void fn_1_1190C(void) +{ + if (lbl_1_data_670 != -1) { + HuWinExCleanup(lbl_1_data_670); + lbl_1_data_670 = -1; + } +} + +void fn_1_11960(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 1) { + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_5C + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, *lbl_1_data_4D4[lbl_1_bss_8C[var_r31].unk_5C % 4], + lbl_1_data_4D4[(lbl_1_bss_8C[var_r31].unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, *lbl_1_data_4D4[lbl_1_bss_8C[var_r31].unk_5C % 4], + lbl_1_data_4D4[(lbl_1_bss_8C[var_r31].unk_5C / 4) * 4][1]); + } + else { + lbl_1_bss_8C[var_r31].unk_5C = 0; + } + } +} + +void fn_1_11C64(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 1) { + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_5C + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, *lbl_1_data_4D4[lbl_1_bss_8C[var_r31].unk_5C % 4], + lbl_1_data_4D4[(lbl_1_bss_8C[var_r31].unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, *lbl_1_data_4D4[lbl_1_bss_8C[var_r31].unk_5C % 4], + lbl_1_data_4D4[(lbl_1_bss_8C[var_r31].unk_5C / 4) * 4][1]); + } + else { + lbl_1_bss_8C[var_r31].unk_5C = 0; + } + } +} + +void fn_1_11F68(void) +{ + s32 var_r29; + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_26C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_8C[var_r31].unk_08 == 1) { + if (lbl_1_bss_8C[var_r31].unk_5C <= 5) { + var_r29 = lbl_1_bss_8C[var_r31].unk_5C - 1; + } + else if (lbl_1_bss_8C[var_r31].unk_5C <= 0xB) { + var_r29 = lbl_1_bss_8C[var_r31].unk_5C - 3; + } + else { + var_r29 = lbl_1_bss_8C[var_r31].unk_5C - 4; + } + HuSprBankSet(var_r30, var_r29 + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x1E, *lbl_1_data_584[lbl_1_bss_8C[var_r31].unk_5C], + lbl_1_data_584[lbl_1_bss_8C[var_r31].unk_5C][1]); + HuSprPosSet(var_r30, lbl_1_bss_8C[var_r31].unk_48 + 0x22, *lbl_1_data_584[lbl_1_bss_8C[var_r31].unk_5C], + lbl_1_data_584[lbl_1_bss_8C[var_r31].unk_5C][1]); + } + else { + lbl_1_bss_8C[var_r31].unk_5C = 1; + } + } +} + +void fn_1_122A8(s32 arg0) +{ + s32 sp8[14] = { + 0x0000006D, + 0x0000006E, + 0x0000006F, + 0x00000070, + 0x00000071, + 0x00000072, + 0x00000073, + 0x00000074, + 0x00000039, + 0x00000040, + 0x0000004B, + 0x00000046, + 0x0000003E, + 0x0000003A, + }; + + if ((arg0 < 0) || (arg0 > 0xD)) { + return; + } + HuAudFXPlay(sp8[arg0]); +} diff --git a/src/Runtime.PPCEABI.H/GCN_Mem_Alloc.c b/src/Runtime.PPCEABI.H/GCN_Mem_Alloc.c new file mode 100644 index 00000000..c36465e2 --- /dev/null +++ b/src/Runtime.PPCEABI.H/GCN_Mem_Alloc.c @@ -0,0 +1,30 @@ +#include "dolphin/os.h" + +inline static void InitDefaultHeap(void) { + void* arenaLo; + void* arenaHi; + + OSReport("GCN_Mem_Alloc.c : InitDefaultHeap. No Heap Available\n"); + OSReport("Metrowerks CW runtime library initializing default heap\n"); + + arenaLo = OSGetArenaLo(); + arenaHi = OSGetArenaHi(); + + arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); + OSSetArenaLo(arenaLo); + + arenaLo = OSRoundUpPtr(arenaLo, 0x20); + arenaHi = OSRoundDownPtr(arenaHi, 0x20); + + OSSetCurrentHeap(OSCreateHeap(arenaLo, arenaHi)); + OSSetArenaLo(arenaLo = arenaHi); +} + +/* 80362914-803629CC 35D254 00B8+00 0/0 1/1 0/0 .text __sys_free */ +void __sys_free(void* p) { + if (__OSCurrHeap == -1) { + InitDefaultHeap(); + } + + OSFreeToHeap(__OSCurrHeap, p); +} diff --git a/src/Runtime.PPCEABI.H/GCN_mem_alloc.c b/src/Runtime.PPCEABI.H/GCN_mem_alloc.c new file mode 100755 index 00000000..c36465e2 --- /dev/null +++ b/src/Runtime.PPCEABI.H/GCN_mem_alloc.c @@ -0,0 +1,30 @@ +#include "dolphin/os.h" + +inline static void InitDefaultHeap(void) { + void* arenaLo; + void* arenaHi; + + OSReport("GCN_Mem_Alloc.c : InitDefaultHeap. No Heap Available\n"); + OSReport("Metrowerks CW runtime library initializing default heap\n"); + + arenaLo = OSGetArenaLo(); + arenaHi = OSGetArenaHi(); + + arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); + OSSetArenaLo(arenaLo); + + arenaLo = OSRoundUpPtr(arenaLo, 0x20); + arenaHi = OSRoundDownPtr(arenaHi, 0x20); + + OSSetCurrentHeap(OSCreateHeap(arenaLo, arenaHi)); + OSSetArenaLo(arenaLo = arenaHi); +} + +/* 80362914-803629CC 35D254 00B8+00 0/0 1/1 0/0 .text __sys_free */ +void __sys_free(void* p) { + if (__OSCurrHeap == -1) { + InitDefaultHeap(); + } + + OSFreeToHeap(__OSCurrHeap, p); +} diff --git a/src/Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp b/src/Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp new file mode 100755 index 00000000..faa1385f --- /dev/null +++ b/src/Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp @@ -0,0 +1,1052 @@ +#include "PowerPC_EABI_Support/Runtime/MWCPlusLib.h" +#include "PowerPC_EABI_Support/Runtime/Gecko_ExceptionPPC.h" +#include "PowerPC_EABI_Support/Runtime/NMWException.h" +#include "PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h" + +#define RETURN_ADDRESS 4 + +union MWE_GeckoVector64 { + f64 d; + f32 f[2]; +}; + +typedef union MWE_GeckoVector64 MWE_GeckoVector64; + +struct GeckoFPRContext { + f64 d; + MWE_GeckoVector64 v; +}; + +typedef struct GeckoFPRContext GeckoFPRContext; + +typedef struct ThrowContext { + GeckoFPRContext FPR[32]; + s32 GPR[32]; + s32 CR; + char* SP; + char* FP; + char* throwSP; + char* returnaddr; + char* throwtype; + void* location; + void* dtor; + CatchInfo* catchinfo; +} ThrowContext; + +typedef ThrowContext* ThrowContextPtr; + +typedef struct MWExceptionInfo { + ExceptionTableSmall* exception_record; + char* current_function; + char* action_pointer; + char* code_section; + char* data_section; + char* TOC; +} MWExceptionInfo; + +typedef struct FragmentInfo { + ExceptionTableIndex* exception_start; + ExceptionTableIndex* exception_end; + char* code_start; + char* code_end; + char* data_start; + char* data_end; + char* TOC; + int active; +} FragmentInfo; + +typedef struct ProcessInfo { + __eti_init_info* exception_info; + char* TOC; + int active; +} ProcessInfo; + +typedef struct ActionIterator { + MWExceptionInfo info; + char* current_SP; + char* current_FP; + s32 current_R31; +} ActionIterator; + +#define MAXFRAGMENTS 1 +static ProcessInfo fragmentinfo[MAXFRAGMENTS]; + +typedef void (*DeleteFunc)(void*); + +/** + * @note Address: 0x800C2374 + * @note Size: 0x34 + */ +int __register_fragment(struct __eti_init_info* info, char* TOC) +{ + + ProcessInfo* f = fragmentinfo; + int i; + + for (i = 0; i < MAXFRAGMENTS; i++, f++) { + if (f->active == 0) { + f->exception_info = info; + f->TOC = TOC; + f->active = 1; + return i; + } + } + + return -1; +} + +/** + * @note Address: 0x800C2340 + * @note Size: 0x34 + */ +void __unregister_fragment(int fragmentID) +{ + ProcessInfo* f; + + if (fragmentID >= 0 && fragmentID < MAXFRAGMENTS) { + f = &fragmentinfo[fragmentID]; + f->exception_info = 0; + f->TOC = 0; + f->active = 0; + } +} + +/** + * @note Address: N/A + * @note Size: 0x88 + */ +static inline int ExPPC_FindExceptionFragment(char* returnaddr, FragmentInfo* frag) +{ + ProcessInfo* f; + int i; + __eti_init_info* eti_info; + + for (i = 0, f = fragmentinfo; i < MAXFRAGMENTS; ++i, ++f) { + if (f->active) { + eti_info = f->exception_info; + while (1) { + if (eti_info->code_size == 0) + break; + if (returnaddr >= eti_info->code_start && returnaddr < (char*)eti_info->code_start + eti_info->code_size) { + frag->exception_start = (ExceptionTableIndex*)eti_info->eti_start; + frag->exception_end = (ExceptionTableIndex*)eti_info->eti_end; + frag->code_start = 0; + frag->code_end = 0; + frag->data_start = 0; + frag->data_end = 0; + frag->TOC = f->TOC; + frag->active = f->active; + return 1; + } + eti_info++; + } + } + } + + return 0; +} + +/** + * @note Address: N/A + * @note Size: 0x204 + */ +static void ExPPC_FindExceptionRecord(char* returnaddr, MWExceptionInfo* info) +{ + FragmentInfo* fragment; + FragmentInfo frag; + ExceptionTableIndex *exceptionindex, *p; + u32 returnoffset; + s32 i, m, n; + + info->exception_record = 0; + info->action_pointer = 0; + + if ((ExPPC_FindExceptionFragment(returnaddr, &frag)) == 0) + return; + fragment = &frag; + + info->code_section = fragment->code_start; + info->data_section = fragment->data_start; + info->TOC = fragment->TOC; + + returnoffset = returnaddr - fragment->code_start; + exceptionindex = fragment->exception_start; + for (i = 0, n = fragment->exception_end - fragment->exception_start;;) { + if (i > n) + return; + p = &exceptionindex[m = (i + n) / 2]; + + if (returnoffset < p->functionoffset) { + n = m - 1; + } else if (returnoffset > p->functionoffset + ETI_GetFunctionSize(p->eti_field)) { + i = m + 1; + } else + break; + } + info->current_function = fragment->code_start + p->functionoffset; + info->exception_record = ETI_GetDirectStore(p->eti_field) ? (ExceptionTableSmall*)(&p->exceptionoffset) + : (ExceptionTableSmall*)(fragment->data_start + p->exceptionoffset); + + returnoffset -= p->functionoffset; + + if (ET_IsLargeTable(info->exception_record->et_field)) { + ExceptionTableLarge* etl = (ExceptionTableLarge*)info->exception_record; + ExceptionRangeLarge* erl; + + for (erl = etl->ranges; erl->start != 0; erl++) { + u32 range_end = erl->start + (erl->size * 4); + + if (erl->start <= returnoffset && range_end >= returnoffset) { + info->action_pointer = (char*)etl + erl->action; + break; + } + } + } else { + ExceptionTableSmall* ets = (ExceptionTableSmall*)info->exception_record; + ExceptionRangeSmall* ers; + + for (ers = ets->ranges; ers->start != 0; ers++) { + if (ers->start <= returnoffset && ers->end >= returnoffset) { + info->action_pointer = (char*)ets + ers->action; + break; + } + } + } +} + +/** + * @note Address: N/A + * @note Size: 0x18 + */ +static inline s32 ExPPC_PopR31(char* SP, MWExceptionInfo* info) +{ + f64* FPR_save_area; + s32* GPR_save_area; + int saved_GPRs, saved_FPRs; + + saved_FPRs = ET_GetSavedFPRs(info->exception_record->et_field); + FPR_save_area = (f64*)(SP - saved_FPRs * 8); + saved_GPRs = ET_GetSavedGPRs(info->exception_record->et_field); + GPR_save_area = (s32*)FPR_save_area; + + return GPR_save_area[-1]; +} + +/** + * @note Address: N/A + * @note Size: 0x20 + */ +static inline exaction_type ExPPC_CurrentAction(const ActionIterator* iter) +{ + if (iter->info.action_pointer == 0) { + return EXACTION_ENDOFLIST; + } + + return ((ex_destroylocal*)iter->info.action_pointer)->action & EXACTION_MASK; +} + +/** + * @note Address: N/A + * @note Size: 0x1C0 + */ +static exaction_type ExPPC_NextAction(ActionIterator* iter) +{ + exaction_type action; + + for (;;) { + if (iter->info.action_pointer == 0 || ((action = ((ex_destroylocal*)iter->info.action_pointer)->action) & EXACTION_ENDBIT) != 0) { + char *return_addr, *callers_SP; + + callers_SP = *(char**)iter->current_SP; + + if (ET_GetSavedGPRs(iter->info.exception_record->et_field)) { + iter->current_R31 = ExPPC_PopR31(callers_SP, &iter->info); + } + + return_addr = *(char**)(callers_SP + RETURN_ADDRESS); + + ExPPC_FindExceptionRecord(return_addr, &iter->info); + + if (iter->info.exception_record == 0) { + terminate(); + } + + iter->current_SP = callers_SP; + iter->current_FP = (ET_GetHasFramePtr(iter->info.exception_record->et_field)) ? (char*)iter->current_R31 : iter->current_SP; + + if (iter->info.action_pointer == 0) + continue; + } else { + switch (action) { + case EXACTION_DESTROYLOCAL: + iter->info.action_pointer += sizeof(ex_destroylocal); + break; + case EXACTION_DESTROYLOCALCOND: + iter->info.action_pointer += sizeof(ex_destroylocalcond); + break; + case EXACTION_DESTROYLOCALPOINTER: + iter->info.action_pointer += sizeof(ex_destroylocalpointer); + break; + case EXACTION_DESTROYLOCALARRAY: + iter->info.action_pointer += sizeof(ex_destroylocalarray); + break; + case EXACTION_DESTROYBASE: + case EXACTION_DESTROYMEMBER: + iter->info.action_pointer += sizeof(ex_destroymember); + break; + case EXACTION_DESTROYMEMBERCOND: + iter->info.action_pointer += sizeof(ex_destroymembercond); + break; + case EXACTION_DESTROYMEMBERARRAY: + iter->info.action_pointer += sizeof(ex_destroymemberarray); + break; + case EXACTION_DELETEPOINTER: + iter->info.action_pointer += sizeof(ex_deletepointer); + break; + case EXACTION_DELETEPOINTERCOND: + iter->info.action_pointer += sizeof(ex_deletepointercond); + break; + case EXACTION_CATCHBLOCK: + iter->info.action_pointer += sizeof(ex_catchblock); + break; + case EXACTION_CATCHBLOCK_32: + iter->info.action_pointer += sizeof(ex_catchblock_32); + break; + case EXACTION_ACTIVECATCHBLOCK: + iter->info.action_pointer += sizeof(ex_activecatchblock); + break; + case EXACTION_SPECIFICATION: + iter->info.action_pointer + += sizeof(ex_specification) + ((ex_specification*)iter->info.action_pointer)->specs * sizeof(void*); + break; + default: + terminate(); + } + } + + action = ((ex_destroylocal*)iter->info.action_pointer)->action & EXACTION_MASK; + + if (action == EXACTION_BRANCH) { + iter->info.action_pointer = ((char*)iter->info.exception_record) + ((ex_branch*)iter->info.action_pointer)->target; + action = ((ex_destroylocal*)iter->info.action_pointer)->action & EXACTION_MASK; + } + return action; + } +} + +/** + * @note Address: N/A + * @note Size: 0x248 + */ +static char* ExPPC_PopStackFrame(ThrowContext* context, MWExceptionInfo* info) +{ + char *SP, *callers_SP; + f64* FPR_save_area; + s32* GPR_save_area; + int saved_GPRs, saved_FPRs; + GeckoFPRContext* Vector_save_area; + int i, j; + + SP = context->SP; + callers_SP = *(char**)SP; + saved_FPRs = ET_GetSavedFPRs(info->exception_record->et_field); + + if (ET_HasElfVector(info->exception_record->et_field)) { + Vector_save_area = (GeckoFPRContext*)(callers_SP - saved_FPRs * 16); + FPR_save_area = (f64*)Vector_save_area; + } else { + FPR_save_area = (f64*)(callers_SP - saved_FPRs * 8); + } + + if (ET_HasElfVector(info->exception_record->et_field)) { + for (i = 32 - saved_FPRs, j = 0; i < 32; ++i, ++j) { + context->FPR[i].v.f[0] = Vector_save_area[j].v.f[0]; + context->FPR[i].v.f[1] = Vector_save_area[j].v.f[1]; + context->FPR[i].d = Vector_save_area[j].d; + } + } else { + for (i = 32 - saved_FPRs, j = 0; i < 32; ++i, ++j) { + context->FPR[i].d = FPR_save_area[j]; + } + } + + saved_GPRs = ET_GetSavedGPRs(info->exception_record->et_field); + GPR_save_area = (s32*)FPR_save_area; + GPR_save_area -= saved_GPRs; + + for (i = 32 - saved_GPRs, j = 0; i < 32; ++i, ++j) { + context->GPR[i] = GPR_save_area[j]; + } + + context->SP = callers_SP; + return *(char**)(callers_SP + RETURN_ADDRESS); +} + +/** + * @note Address: N/A + * @note Size: 0x3C + */ +static inline void ExPPC_DestroyLocal(ThrowContext* context, const ex_destroylocal* ex) { DTORCALL_COMPLETE(ex->dtor, context->FP + ex->local); } + +/** + * @note Address: N/A + * @note Size: 0x74 + */ +static inline void ExPPC_DestroyLocalCond(ThrowContext* context, const ex_destroylocalcond* ex) +{ + int cond = ex_destroylocalcond_GetRegCond(ex->dlc_field) ? (local_cond_type)context->GPR[ex->cond] + : *(local_cond_type*)(context->FP + ex->cond); + + if (cond) { + DTORCALL_COMPLETE(ex->dtor, context->FP + ex->local); + } +} + +/** + * @note Address: N/A + * @note Size: 0x58 + */ +static inline void ExPPC_DestroyLocalPointer(ThrowContext* context, const ex_destroylocalpointer* ex) +{ + void* pointer + = ex_destroylocalpointer_GetRegPointer(ex->dlp_field) ? (void*)context->GPR[ex->pointer] : *(void**)(context->FP + ex->pointer); + + DTORCALL_COMPLETE(ex->dtor, pointer); +} + +/** + * @note Address: N/A + * @note Size: 0x84 + */ +static inline void ExPPC_DestroyLocalArray(ThrowContext* context, const ex_destroylocalarray* ex) +{ + char* ptr = context->FP + ex->localarray; + s32 n = ex->elements; + s32 size = ex->element_size; + + for (ptr = ptr + size * n; n > 0; n--) { + ptr -= size; + DTORCALL_COMPLETE(ex->dtor, ptr); + } +} + +/** + * @note Address: N/A + * @note Size: 0x64 + */ +static inline void ExPPC_DestroyMember(ThrowContext* context, const ex_destroymember* ex) +{ + char* objectptr + = ex_destroymember_GetRegPointer(ex->dm_field) ? (char*)context->GPR[ex->objectptr] : *(char**)(context->FP + ex->objectptr); + + DTORCALL_COMPLETE(ex->dtor, objectptr + ex->offset); +} + +/** + * @note Address: N/A + * @note Size: 0x64 + */ +static inline void ExPPC_DestroyBase(ThrowContext* context, const ex_destroymember* ex) +{ + char* objectptr + = ex_destroymember_GetRegPointer(ex->dm_field) ? (char*)context->GPR[ex->objectptr] : *(char**)(context->FP + ex->objectptr); + + DTORCALL_PARTIAL(ex->dtor, objectptr + ex->offset); +} + +/** + * @note Address: N/A + * @note Size: 0x98 + */ +static inline void ExPPC_DestroyMemberCond(ThrowContext* context, const ex_destroymembercond* ex) +{ + char* objectptr + = ex_destroymembercond_GetRegPointer(ex->dmc_field) ? (char*)context->GPR[ex->objectptr] : *(char**)(context->FP + ex->objectptr); + int cond = ex_destroymembercond_GetRegCond(ex->dmc_field) ? (vbase_ctor_arg_type)context->GPR[ex->cond] + : *(vbase_ctor_arg_type*)(context->FP + ex->cond); + + if (cond) { + DTORCALL_PARTIAL(ex->dtor, objectptr + ex->offset); + } +} + +/** + * @note Address: N/A + * @note Size: 0xAC + */ +static inline void ExPPC_DestroyMemberArray(ThrowContext* context, const ex_destroymemberarray* ex) +{ + char* ptr + = ex_destroymemberarray_GetRegPointer(ex->dma_field) ? (char*)context->GPR[ex->objectptr] : *(char**)(context->FP + ex->objectptr); + s32 n = ex->elements; + s32 size = ex->element_size; + + ptr += ex->offset; + + for (ptr = ptr + size * n; n > 0; n--) { + ptr -= size; + DTORCALL_COMPLETE(ex->dtor, ptr); + } +} + +/** + * @note Address: N/A + * @note Size: 0x54 + */ +static inline void ExPPC_DeletePointer(ThrowContext* context, const ex_deletepointer* ex) +{ + char* objectptr + = ex_deletepointer_GetRegPointer(ex->dp_field) ? (char*)context->GPR[ex->objectptr] : *(char**)(context->FP + ex->objectptr); + + ((DeleteFunc)ex->deletefunc)(objectptr); +} + +/** + * @note Address: N/A + * @note Size: 0x8C + */ +static inline void ExPPC_DeletePointerCond(ThrowContext* context, const ex_deletepointercond* ex) +{ + char* objectptr + = ex_deletepointercond_GetRegPointer(ex->dpc_field) ? (char*)context->GPR[ex->objectptr] : *(char**)(context->FP + ex->objectptr); + int cond = ex_deletepointercond_GetRegCond(ex->dpc_field) ? (local_cond_type)context->GPR[ex->cond] + : *(local_cond_type*)(context->FP + ex->cond); + + if (cond) { + ((DeleteFunc)ex->deletefunc)(objectptr); + } +} + +/** + * @note Address: N/A + * @note Size: 0x50C + */ +static void ExPPC_UnwindStack(ThrowContext* context, MWExceptionInfo* info, void* catcher) +{ + exaction_type action; + +#pragma exception_terminate + + for (;;) { + if (info->action_pointer == 0) { + char* return_addr; + + return_addr = ExPPC_PopStackFrame(context, info); + ExPPC_FindExceptionRecord(return_addr, info); + + if (info->exception_record == 0) { + terminate(); + } + + context->FP = (ET_GetHasFramePtr(info->exception_record->et_field)) ? (char*)context->GPR[31] : context->SP; + continue; + } + + action = ((ex_destroylocal*)info->action_pointer)->action; + + switch (action & EXACTION_MASK) { + case EXACTION_BRANCH: + info->action_pointer = ((char*)info->exception_record) + ((ex_branch*)info->action_pointer)->target; + break; + case EXACTION_DESTROYLOCAL: + ExPPC_DestroyLocal(context, (ex_destroylocal*)info->action_pointer); + info->action_pointer += sizeof(ex_destroylocal); + break; + case EXACTION_DESTROYLOCALCOND: + ExPPC_DestroyLocalCond(context, (ex_destroylocalcond*)info->action_pointer); + info->action_pointer += sizeof(ex_destroylocalcond); + break; + case EXACTION_DESTROYLOCALPOINTER: + ExPPC_DestroyLocalPointer(context, (ex_destroylocalpointer*)info->action_pointer); + info->action_pointer += sizeof(ex_destroylocalpointer); + break; + case EXACTION_DESTROYLOCALARRAY: + ExPPC_DestroyLocalArray(context, (ex_destroylocalarray*)info->action_pointer); + info->action_pointer += sizeof(ex_destroylocalarray); + break; + case EXACTION_DESTROYBASE: + ExPPC_DestroyBase(context, (ex_destroymember*)info->action_pointer); + info->action_pointer += sizeof(ex_destroymember); + break; + case EXACTION_DESTROYMEMBER: + ExPPC_DestroyMember(context, (ex_destroymember*)info->action_pointer); + info->action_pointer += sizeof(ex_destroymember); + break; + case EXACTION_DESTROYMEMBERCOND: + ExPPC_DestroyMemberCond(context, (ex_destroymembercond*)info->action_pointer); + info->action_pointer += sizeof(ex_destroymembercond); + break; + case EXACTION_DESTROYMEMBERARRAY: + ExPPC_DestroyMemberArray(context, (ex_destroymemberarray*)info->action_pointer); + info->action_pointer += sizeof(ex_destroymemberarray); + break; + case EXACTION_DELETEPOINTER: + ExPPC_DeletePointer(context, (ex_deletepointer*)info->action_pointer); + info->action_pointer += sizeof(ex_deletepointer); + break; + case EXACTION_DELETEPOINTERCOND: + ExPPC_DeletePointerCond(context, (ex_deletepointercond*)info->action_pointer); + info->action_pointer += sizeof(ex_deletepointercond); + break; + case EXACTION_CATCHBLOCK: + if (catcher == (void*)info->action_pointer) + return; + info->action_pointer += sizeof(ex_catchblock); + break; + case EXACTION_CATCHBLOCK_32: + if (catcher == (void*)info->action_pointer) + return; + info->action_pointer += sizeof(ex_catchblock_32); + break; + case EXACTION_ACTIVECATCHBLOCK: { + CatchInfo* catchinfo; + + catchinfo = (CatchInfo*)(context->FP + ((ex_activecatchblock*)info->action_pointer)->cinfo_ref); + + if (catchinfo->dtor) { + if (context->location == catchinfo->location) { + context->dtor = catchinfo->dtor; + } else { + DTORCALL_COMPLETE(catchinfo->dtor, catchinfo->location); + } + } + info->action_pointer += sizeof(ex_activecatchblock); + } break; + case EXACTION_SPECIFICATION: + if (catcher == (void*)info->action_pointer) + return; + info->action_pointer += sizeof(ex_specification) + ((ex_specification*)info->action_pointer)->specs * sizeof(void*); + break; + default: + terminate(); + } + + if (action & EXACTION_ENDBIT) + info->action_pointer = 0; + } +} + +/** + * @note Address: N/A + * @note Size: 0x88 + */ +static inline int ExPPC_IsInSpecification(char* extype, ex_specification* spec) +{ + s32 i, offset; + + for (i = 0; i < spec->specs; i++) { + if (__throw_catch_compare(extype, spec->spec[i], &offset)) + return 1; + } + + return 0; +} + +/** + * @note Address: N/A + * @note Size: 0x1B4 + */ +extern void __unexpected(CatchInfo* catchinfo) +{ + ex_specification* unexp = (ex_specification*)catchinfo->stacktop; + +#pragma exception_magic // allow access to __exception_magic in try/catch blocks + + try { + unexpected(); + } catch (...) { + if (ExPPC_IsInSpecification((char*)((CatchInfo*)&__exception_magic)->typeinfo, unexp)) { + throw; + } + if (ExPPC_IsInSpecification("!bad_exception!!", unexp)) { + throw bad_exception(); + } + if (ExPPC_IsInSpecification("!std::bad_exception!!", unexp)) { + throw bad_exception(); + } + } + terminate(); +} + +/** + * @note Address: N/A + * @note Size: 0x104 + */ +asm static void ExPPC_LongJump(register ThrowContext* context, register void* newRTOC, register void* newPC) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + + mr r8, newPC + mr RTOC, newRTOC + lwz r0, context->CR + mtcrf 255, r0 + + lmw r13, context->GPR[13] + + la r7, context->FPR[14].v + psq_lx fp14, 0, r7, 0, 0 + lfd fp14, context->FPR[14].d + + la r7, context->FPR[15].v + psq_lx fp15, 0, r7, 0, 0 + lfd fp15, context->FPR[15].d + + la r7, context->FPR[16].v + psq_lx fp16, 0, r7, 0, 0 + lfd fp16, context->FPR[16].d + + la r7, context->FPR[17].v + psq_lx fp17, 0, r7, 0, 0 + lfd fp17, context->FPR[17].d + + la r7, context->FPR[18].v + psq_lx fp18, 0, r7, 0, 0 + lfd fp18, context->FPR[18].d + + la r7, context->FPR[19].v + psq_lx fp19, 0, r7, 0, 0 + lfd fp19, context->FPR[19].d + + la r7, context->FPR[20].v + psq_lx fp20, 0, r7, 0, 0 + lfd fp20, context->FPR[20].d + + la r7, context->FPR[21].v + psq_lx fp21, 0, r7, 0, 0 + lfd fp21, context->FPR[21].d + + la r7, context->FPR[22].v + psq_lx fp22, 0, r7, 0, 0 + lfd fp22, context->FPR[22].d + + la r7, context->FPR[23].v + psq_lx fp23, 0, r7, 0, 0 + lfd fp23, context->FPR[23].d + + la r7, context->FPR[24].v + psq_lx fp24, 0, r7, 0, 0 + lfd fp24, context->FPR[24].d + + la r7, context->FPR[25].v + psq_lx fp25, 0, r7, 0, 0 + lfd fp25, context->FPR[25].d + + la r7, context->FPR[26].v + psq_lx fp26, 0, r7, 0, 0 + lfd fp26, context->FPR[26].d + + la r7, context->FPR[27].v + psq_lx fp27, 0, r7, 0, 0 + lfd fp27, context->FPR[27].d + + la r7, context->FPR[28].v + psq_lx fp28, 0, r7, 0, 0 + lfd fp28, context->FPR[28].d + + la r7, context->FPR[29].v + psq_lx fp29, 0, r7, 0, 0 + lfd fp29, context->FPR[29].d + + la r7, context->FPR[30].v + psq_lx fp30, 0, r7, 0, 0 + lfd fp30, context->FPR[30].d + + la r7, context->FPR[31].v + psq_lx fp31, 0, r7, 0, 0 + lfd fp31, context->FPR[31].d + + mtlr r8 + + lwz SP, context->throwSP + lwz r3, context->SP + lwz r3, 0(r3) + stw r3, 0(SP) + blr +#endif // clang-format on +} + +/** + * @note Address: N/A + * @note Size: 0x84 + */ +static inline void ExPPC_HandleUnexpected(ThrowContext* context, MWExceptionInfo* info, ex_specification* unexp) +{ + CatchInfo* catchinfo; + +#pragma exception_terminate + + ExPPC_UnwindStack(context, info, unexp); + + catchinfo = (CatchInfo*)(context->FP + unexp->cinfo_ref); + catchinfo->location = context->location; + catchinfo->typeinfo = context->throwtype; + catchinfo->dtor = context->dtor; + catchinfo->stacktop = unexp; + + ExPPC_LongJump(context, info->TOC, info->current_function + unexp->pcoffset); +} + +/** + * @note Address: N/A + * @note Size: 0x410 + */ +static void ExPPC_ThrowHandler(ThrowContext* context) +{ + ActionIterator iter; + MWExceptionInfo info; + exaction_type action; + CatchInfo* catchinfo; + s32 offset; + + ExPPC_FindExceptionRecord(context->returnaddr, &info); + + if (info.exception_record == 0) { + terminate(); + } + + context->FP = (ET_GetHasFramePtr(info.exception_record->et_field)) ? (char*)context->GPR[31] : context->SP; + + if (context->throwtype == 0) { + iter.info = info; + iter.current_SP = context->SP; + iter.current_FP = context->FP; + iter.current_R31 = context->GPR[31]; + + for (action = ExPPC_CurrentAction(&iter);; action = ExPPC_NextAction(&iter)) { + switch (action) { + case EXACTION_ACTIVECATCHBLOCK: + break; + case EXACTION_ENDOFLIST: + case EXACTION_DESTROYLOCAL: + case EXACTION_DESTROYLOCALCOND: + case EXACTION_DESTROYLOCALPOINTER: + case EXACTION_DESTROYLOCALARRAY: + case EXACTION_DESTROYBASE: + case EXACTION_DESTROYMEMBER: + case EXACTION_DESTROYMEMBERCOND: + case EXACTION_DESTROYMEMBERARRAY: + case EXACTION_DELETEPOINTER: + case EXACTION_DELETEPOINTERCOND: + case EXACTION_CATCHBLOCK: + case EXACTION_CATCHBLOCK_32: + case EXACTION_SPECIFICATION: + continue; + case EXACTION_TERMINATE: + default: + terminate(); + } + break; + } + + catchinfo = (CatchInfo*)(iter.current_FP + ((ex_activecatchblock*)iter.info.action_pointer)->cinfo_ref); + context->throwtype = (char*)catchinfo->typeinfo; + context->location = catchinfo->location; + context->dtor = 0; + context->catchinfo = catchinfo; + } else { + context->catchinfo = 0L; + } + + iter.info = info; + iter.current_SP = context->SP; + iter.current_FP = context->FP; + iter.current_R31 = context->GPR[31]; + + for (action = ExPPC_CurrentAction(&iter);; action = ExPPC_NextAction(&iter)) { + switch (action) { + case EXACTION_CATCHBLOCK_32: + if (__throw_catch_compare(context->throwtype, ((ex_catchblock_32*)iter.info.action_pointer)->catch_type, &offset)) { + break; + } + continue; + case EXACTION_CATCHBLOCK: + if (__throw_catch_compare(context->throwtype, ((ex_catchblock*)iter.info.action_pointer)->catch_type, &offset)) { + break; + } + continue; + case EXACTION_SPECIFICATION: + if (!ExPPC_IsInSpecification(context->throwtype, (ex_specification*)iter.info.action_pointer)) { + ExPPC_HandleUnexpected(context, &info, (ex_specification*)iter.info.action_pointer); + } + continue; + case EXACTION_ENDOFLIST: + case EXACTION_DESTROYLOCAL: + case EXACTION_DESTROYLOCALCOND: + case EXACTION_DESTROYLOCALPOINTER: + case EXACTION_DESTROYLOCALARRAY: + case EXACTION_DESTROYBASE: + case EXACTION_DESTROYMEMBER: + case EXACTION_DESTROYMEMBERCOND: + case EXACTION_DESTROYMEMBERARRAY: + case EXACTION_DELETEPOINTER: + case EXACTION_DELETEPOINTERCOND: + case EXACTION_ACTIVECATCHBLOCK: + continue; + case EXACTION_TERMINATE: + default: + terminate(); + } + break; + } + + if (action == EXACTION_CATCHBLOCK_32) { + ex_catchblock_32* catchblock_32; + catchblock_32 = (ex_catchblock_32*)iter.info.action_pointer; + + ExPPC_UnwindStack(context, &info, catchblock_32); + + catchinfo = (CatchInfo*)(context->FP + catchblock_32->cinfo_ref); + catchinfo->location = context->location; + catchinfo->typeinfo = context->throwtype; + catchinfo->dtor = context->dtor; + + if (*context->throwtype == '*') { + catchinfo->sublocation = &catchinfo->pointercopy; + catchinfo->pointercopy = *(s32*)context->location + offset; + } else { + catchinfo->sublocation = (char*)context->location + offset; + } + + ExPPC_LongJump(context, info.TOC, info.current_function + catchblock_32->catch_pcoffset); + } else { + ex_catchblock* catchblock; + + catchblock = (ex_catchblock*)iter.info.action_pointer; + ExPPC_UnwindStack(context, &info, catchblock); + + catchinfo = (CatchInfo*)(context->FP + catchblock->cinfo_ref); + catchinfo->location = context->location; + catchinfo->typeinfo = context->throwtype; + catchinfo->dtor = context->dtor; + + if (*context->throwtype == '*') { + catchinfo->sublocation = &catchinfo->pointercopy; + catchinfo->pointercopy = *(s32*)context->location + offset; + } else { + catchinfo->sublocation = (char*)context->location + offset; + } + + ExPPC_LongJump(context, info.TOC, info.current_function + catchblock->catch_pcoffset); + } +} + +/** + * @note Address: N/A + * @note Size: 0x44 + */ +void __end__catch(CatchInfo* catchinfo) +{ + if (catchinfo->location && catchinfo->dtor) { + DTORCALL_COMPLETE(catchinfo->dtor, catchinfo->location); + } +} + +/** + * @note Address: N/A + * @note Size: 0x144 + */ +asm void __throw(char* throwtype, void* location, void* dtor) +{ +#ifdef __MWERKS__ // clang-format off + ThrowContext throwcontext; + + fralloc + + stmw r13, throwcontext.GPR[13] + + stfd fp14, throwcontext.FPR[14].d + la r3, throwcontext.FPR[14].v + psq_stx fp14, 0, r3,0,0 + + stfd fp15, throwcontext.FPR[15].d + la r3, throwcontext.FPR[15].v + psq_stx fp15, 0, r3, 0, 0 + + stfd fp16, throwcontext.FPR[16].d + la r3, throwcontext.FPR[16].v + psq_stx fp16, 0, r3, 0, 0 + + stfd fp17, throwcontext.FPR[17].d + la r3, throwcontext.FPR[17].v + psq_stx fp17, 0, r3, 0, 0 + + stfd fp18, throwcontext.FPR[18].d + la r3, throwcontext.FPR[18].v + psq_stx fp18, 0, r3, 0, 0 + + stfd fp19, throwcontext.FPR[19].d + la r3, throwcontext.FPR[19].v + psq_stx fp19, 0, r3, 0, 0 + + stfd fp20, throwcontext.FPR[20].d + la r3, throwcontext.FPR[20].v + psq_stx fp20, 0, r3, 0, 0 + + stfd fp21, throwcontext.FPR[21].d + la r3, throwcontext.FPR[21].v + psq_stx fp21, 0, r3, 0, 0 + + stfd fp22, throwcontext.FPR[22].d + la r3, throwcontext.FPR[22].v + psq_stx fp22, 0, r3, 0, 0 + + stfd fp23, throwcontext.FPR[23].d + la r3, throwcontext.FPR[23].v + psq_stx fp23, 0, r3, 0, 0 + + stfd fp24, throwcontext.FPR[24].d + la r3, throwcontext.FPR[24].v + psq_stx fp24, 0, r3, 0, 0 + + stfd fp25, throwcontext.FPR[25].d + la r3, throwcontext.FPR[25].v + psq_stx fp25, 0, r3, 0, 0 + + stfd fp26, throwcontext.FPR[26].d + la r3, throwcontext.FPR[26].v + psq_stx fp26, 0, r3, 0, 0 + + stfd fp27, throwcontext.FPR[27].d + la r3, throwcontext.FPR[27].v + psq_stx fp27, 0, r3, 0, 0 + + stfd fp28, throwcontext.FPR[28].d + la r3, throwcontext.FPR[28].v + psq_stx fp28, 0, r3, 0, 0 + + stfd fp29, throwcontext.FPR[29].d + la r3, throwcontext.FPR[29].v + psq_stx fp29, 0, r3, 0, 0 + + stfd fp30, throwcontext.FPR[30].d + la r3, throwcontext.FPR[30].v + psq_stx fp30, 0, r3, 0, 0 + + stfd fp31, throwcontext.FPR[31].d + la r3, throwcontext.FPR[31].v + psq_stx fp31, 0, r3, 0, 0 + + + mfcr r3 + stw r3, throwcontext.CR; + + lwz r3, 0(sp) + lwz r4, RETURN_ADDRESS(r3) + stw r3, throwcontext.SP; + stw r3, throwcontext.throwSP; + stw r4, throwcontext.returnaddr; + + lwz r3,throwtype + stw r3, throwcontext.throwtype + lwz r3,location + stw r3, throwcontext.location + lwz r3,dtor + stw r3, throwcontext.dtor + la r3, throwcontext + bl ExPPC_ThrowHandler + nop + frfree + blr +#endif // clang-format on +} diff --git a/src/Runtime.PPCEABI.H/NMWException.cpp b/src/Runtime.PPCEABI.H/NMWException.cpp new file mode 100755 index 00000000..b5f722de --- /dev/null +++ b/src/Runtime.PPCEABI.H/NMWException.cpp @@ -0,0 +1,157 @@ +#include "PowerPC_EABI_Support/Runtime/NMWException.h" +#include "PowerPC_EABI_Support/Runtime/MWCPlusLib.h" + +#define ARRAY_HEADER_SIZE 16 + +extern "C" { +extern void abort(); +} + +namespace std { +/** + * @note Address: N/A + * @note Size: 0x20 + */ +static void dthandler() { abort(); } + +static terminate_handler thandler = dthandler; + +/** + * @note Address: N/A + * @note Size: 0x28 + */ +static void duhandler() { terminate(); } + +static unexpected_handler uhandler = duhandler; + +/** + * @note Address: N/A + * @note Size: 0x28 + */ +extern void terminate() { thandler(); } + +/** + * @note Address: N/A + * @note Size: 0x28 + */ +extern void unexpected() { uhandler(); } +} // namespace std + +/** + * @note Address: N/A + * @note Size: 0x22C + */ +extern char __throw_catch_compare(const char* throwtype, const char* catchtype, s32* offset_result) +{ + const char *cptr1, *cptr2; + + *offset_result = 0; + + if ((cptr2 = catchtype) == 0) { + return true; + } + + cptr1 = throwtype; + + if (*cptr2 == 'P') { + cptr2++; + if (*cptr2 == 'C') + cptr2++; + if (*cptr2 == 'V') + cptr2++; + if (*cptr2 == 'v') { + if (*cptr1 == 'P' || *cptr1 == '*') { + return true; + } + } + cptr2 = catchtype; + } + + switch (*cptr1) { + case '*': + case '!': + if (*cptr1++ != *cptr2++) + return false; + for (;;) { + if (*cptr1 == *cptr2++) { + if (*cptr1++ == '!') { + s32 offset; + + for (offset = 0; *cptr1 != '!';) { + offset = offset * 10 + *cptr1++ - '0'; + } + *offset_result = offset; + return true; + } + } else { + while (*cptr1++ != '!') { } + while (*cptr1++ != '!') { } + if (*cptr1 == 0) + return false; + + cptr2 = catchtype + 1; + } + } + return false; + } + + while ((*cptr1 == 'P' || *cptr1 == 'R') && *cptr1 == *cptr2) { + cptr1++; + cptr2++; + + if (*cptr2 == 'C') { + if (*cptr1 == 'C') + cptr1++; + cptr2++; + } + if (*cptr1 == 'C') + return false; + + if (*cptr2 == 'V') { + if (*cptr1 == 'V') + cptr1++; + cptr2++; + } + if (*cptr1 == 'V') + return false; + } + + for (; *cptr1 == *cptr2; cptr1++, cptr2++) { + if (*cptr1 == 0) + return true; + } + + return false; +} + +class __partial_array_destructor { +private: + void* p; + size_t size; + size_t n; + ConstructorDestructor dtor; + +public: + size_t i; + + __partial_array_destructor(void* array, size_t elementsize, size_t nelements, ConstructorDestructor destructor) + { + p = array; + size = elementsize; + n = nelements; + dtor = destructor; + i = n; + } + + ~__partial_array_destructor() + { + char* ptr; + + if (i < n && dtor) { + for (ptr = (char*)p + size * i; i > 0; i--) { + ptr -= size; + DTORCALL_COMPLETE(dtor, ptr); + } + } + } +}; diff --git a/src/Runtime.PPCEABI.H/New.cp b/src/Runtime.PPCEABI.H/New.cp new file mode 100644 index 00000000..c92b6c29 --- /dev/null +++ b/src/Runtime.PPCEABI.H/New.cp @@ -0,0 +1,8 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h" +#include "PowerPC_EABI_Support/Runtime/New.h" + +void operator delete(void* arg0) throw() { + if (arg0 != 0) { + free(arg0); + } +} diff --git a/src/Runtime.PPCEABI.H/NewMore.cp b/src/Runtime.PPCEABI.H/NewMore.cp new file mode 100644 index 00000000..c2ed6fe8 --- /dev/null +++ b/src/Runtime.PPCEABI.H/NewMore.cp @@ -0,0 +1,15 @@ +#include "PowerPC_EABI_Support/Runtime/New.h" + +namespace std { + class exception { + public: + virtual ~exception(); + virtual const char *what() const; + }; +} + +const char *std::exception::what() const { + return "exception"; +}; + +std::exception::~exception() {}; diff --git a/src/Runtime.PPCEABI.H/__mem.c b/src/Runtime.PPCEABI.H/__mem.c new file mode 100644 index 00000000..08da3972 --- /dev/null +++ b/src/Runtime.PPCEABI.H/__mem.c @@ -0,0 +1,91 @@ +#include "dol2asm.h" +#include "stddef.h" +#include + + +/* 80003540-80003590 000440 0050+00 1/1 63/63 6/6 .init memcpy */ +SECTION_INIT void* memcpy(void* dst, const void* src, size_t n) { + const unsigned char* s; + unsigned char* d; + + if ((unsigned long)src >= (unsigned long)dst) { + s = (const unsigned char*)src - 1; + d = (unsigned char*)dst - 1; + n++; + while (--n != 0) + *++d = *++s; + } else { + s = (const unsigned char*)src + n; + d = (unsigned char*)dst + n; + n++; + while (--n != 0) + *--d = *--s; + } + return dst; +} + +/* 80003488-80003540 000388 00B8+00 1/1 0/0 0/0 .init __fill_mem */ +SECTION_INIT void __fill_mem(void* dst, int val, size_t n) { + unsigned long v = (unsigned char)val; + unsigned long i; + + ((unsigned char*)dst) = ((unsigned char*)dst) - 1; + + if (n >= 32) { + i = (~(unsigned long)dst) & 3; + + if (i) { + n -= i; + + do { + *++(((unsigned char*)dst)) = v; + } while (--i); + } + + if (v) + v |= v << 24 | v << 16 | v << 8; + + ((unsigned long*)dst) = ((unsigned long*)(((unsigned char*)dst) + 1)) - 1; + + i = n >> 5; + + if (i) { + do { + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + *++((unsigned long*)dst) = v; + } while (--i); + } + + i = (n & 31) >> 2; + + if (i) { + do { + *++((unsigned long*)dst) = v; + } while (--i); + } + + ((unsigned char*)dst) = ((unsigned char*)(((unsigned long*)dst) + 1)) - 1; + + n &= 3; + } + + if (n) + do { + *++((unsigned char*)dst) = v; + } while (--n); + + return; +} + +/* 80003458-80003488 000358 0030+00 1/1 55/55 137/137 .init memset */ +SECTION_INIT void* memset(void* dst, int val, size_t n) { + __fill_mem(dst, val, n); + + return dst; +} diff --git a/src/Runtime.PPCEABI.H/__va_arg.c b/src/Runtime.PPCEABI.H/__va_arg.c new file mode 100644 index 00000000..c6e8bc63 --- /dev/null +++ b/src/Runtime.PPCEABI.H/__va_arg.c @@ -0,0 +1,50 @@ +#include "Runtime.PPCEABI.H/__va_arg.h" + +#undef __va_arg + +/* 80361B14-80361BDC 35C454 00C8+00 0/0 3/3 0/0 .text __va_arg */ +void* __va_arg(_va_list_struct* list, int type) { + char* addr; + char* reg = &(list->gpr); + int g_reg = list->gpr; + int maxsize = 8; + int size = 4; + int increment = 1; + int even = 0; + int fpr_offset = 0; + int regsize = 4; + + if (type == 3) { + reg = &(list->fpr); + g_reg = list->fpr; + size = 8; + fpr_offset = 32; + regsize = 8; + } + + if (type == 2) { + size = 8; + maxsize--; + if (g_reg & 1) { + even = 1; + } + increment = 2; + } + + if (g_reg < maxsize) { + g_reg += even; + addr = list->reg_save_area + fpr_offset + (g_reg * regsize); + *reg = g_reg + increment; + } else { + *reg = 8; + addr = list->input_arg_area; + addr = (char*)(((u32)(addr) + ((size)-1)) & ~((size)-1)); + list->input_arg_area = addr + size; + } + + if (type == 0) { + addr = *((char**)addr); + } + + return addr; +} diff --git a/src/Runtime.PPCEABI.H/runtime.c b/src/Runtime.PPCEABI.H/runtime.c new file mode 100644 index 00000000..8616931a --- /dev/null +++ b/src/Runtime.PPCEABI.H/runtime.c @@ -0,0 +1,827 @@ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* macros for GPR/FPR resting and saving */ +#define SAVE_FPR(reg) _savefpr_##reg +#define RESTORE_FPR(reg) _restfpr_##reg +#define SAVE_GPR(reg) _savegpr_##reg +#define RESTORE_GPR(reg) _restgpr_##reg + +#define ENTRY_SAVE_FPR(reg) entry SAVE_FPR(reg) +#define ENTRY_RESTORE_FPR(reg) entry RESTORE_FPR(reg) +#define ENTRY_SAVE_GPR(reg) entry SAVE_GPR(reg) +#define ENTRY_RESTORE_GPR(reg) entry RESTORE_GPR(reg) + +#define save_restore_reg r11 + +asm void __div2u(void); +asm void __div2i(void); +asm void __mod2u(void); +asm void __mod2i(void); +asm void __shl2i(void); +asm void __shr2u(void); +asm void __shr2i(void); +asm void __cvt_dbl_usll(void); + +void SAVE_FPR(14)(void); +void SAVE_FPR(15)(void); +void SAVE_FPR(16)(void); +void SAVE_FPR(17)(void); +void SAVE_FPR(18)(void); +void SAVE_FPR(19)(void); +void SAVE_FPR(20)(void); +void SAVE_FPR(21)(void); +void SAVE_FPR(22)(void); +void SAVE_FPR(23)(void); +void SAVE_FPR(24)(void); +void SAVE_FPR(25)(void); +void SAVE_FPR(26)(void); +void SAVE_FPR(27)(void); +void SAVE_FPR(28)(void); +void SAVE_FPR(29)(void); +void SAVE_FPR(30)(void); +void SAVE_FPR(31)(void); + +void RESTORE_FPR(14)(void); +void RESTORE_FPR(15)(void); +void RESTORE_FPR(16)(void); +void RESTORE_FPR(17)(void); +void RESTORE_FPR(18)(void); +void RESTORE_FPR(19)(void); +void RESTORE_FPR(20)(void); +void RESTORE_FPR(21)(void); +void RESTORE_FPR(22)(void); +void RESTORE_FPR(23)(void); +void RESTORE_FPR(24)(void); +void RESTORE_FPR(25)(void); +void RESTORE_FPR(26)(void); +void RESTORE_FPR(27)(void); +void RESTORE_FPR(28)(void); +void RESTORE_FPR(29)(void); +void RESTORE_FPR(30)(void); +void RESTORE_FPR(31)(void); + +void SAVE_GPR(14)(void); +void SAVE_GPR(15)(void); +void SAVE_GPR(16)(void); +void SAVE_GPR(17)(void); +void SAVE_GPR(18)(void); +void SAVE_GPR(19)(void); +void SAVE_GPR(20)(void); +void SAVE_GPR(21)(void); +void SAVE_GPR(22)(void); +void SAVE_GPR(23)(void); +void SAVE_GPR(24)(void); +void SAVE_GPR(25)(void); +void SAVE_GPR(26)(void); +void SAVE_GPR(27)(void); +void SAVE_GPR(28)(void); +void SAVE_GPR(29)(void); +void SAVE_GPR(30)(void); +void SAVE_GPR(31)(void); + +void RESTORE_GPR(14)(void); +void RESTORE_GPR(15)(void); +void RESTORE_GPR(16)(void); +void RESTORE_GPR(17)(void); +void RESTORE_GPR(18)(void); +void RESTORE_GPR(19)(void); +void RESTORE_GPR(20)(void); +void RESTORE_GPR(21)(void); +void RESTORE_GPR(22)(void); +void RESTORE_GPR(23)(void); +void RESTORE_GPR(24)(void); +void RESTORE_GPR(25)(void); +void RESTORE_GPR(26)(void); +void RESTORE_GPR(27)(void); +void RESTORE_GPR(28)(void); +void RESTORE_GPR(29)(void); +void RESTORE_GPR(30)(void); +void RESTORE_GPR(31)(void); + +static const u32 __constants[] = { + 0x00000000, 0x00000000, 0x41F00000, 0x00000000, 0x41E00000, 0x00000000, +}; + +/* 803620AC-80362108 35C9EC 005C+00 0/0 42/42 89/89 .text __cvt_fp2unsigned */ +asm u32 __cvt_fp2unsigned(register f64 d) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + stwu r1,-16(r1) + lis r4, __constants@h + ori r4, r4, __constants@l + li r3,0 + lfd fp0,0(r4) + lfd fp3,8(r4) + lfd fp4,16(r4) + fcmpu cr0,fp1,fp0 + fcmpu cr6,fp1,fp3 + blt cr0, @exit + addi r3,r3,-1 + bge cr6,@exit + fcmpu cr7,fp1,fp4 + fmr fp2,fp1 + blt cr7,@1 + fsub fp2,fp1,fp4 +@1 fctiwz fp2,fp2 + stfd fp2,8(r1) + lwz r3,12(r1) + blt cr7,@exit + addis r3,r3,-0x8000 +@exit: + addi r1,r1,16 + blr +#endif // clang-format on +} + +/* 80362108-80362134 35CA48 002C+00 0/0 0/0 0/0 .text __save_fpr */ +asm void __save_fpr(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + ENTRY_SAVE_FPR(14) + stfd fp14,-144(save_restore_reg) + ENTRY_SAVE_FPR(15) + stfd fp15,-136(save_restore_reg) + ENTRY_SAVE_FPR(16) + stfd fp16,-128(save_restore_reg) + ENTRY_SAVE_FPR(17) + stfd fp17,-120(save_restore_reg) + ENTRY_SAVE_FPR(18) + stfd fp18,-112(save_restore_reg) + ENTRY_SAVE_FPR(19) + stfd fp19,-104(save_restore_reg) + ENTRY_SAVE_FPR(20) + stfd fp20,-96(save_restore_reg) + ENTRY_SAVE_FPR(21) + stfd fp21,-88(save_restore_reg) + ENTRY_SAVE_FPR(22) + stfd fp22,-80(save_restore_reg) + ENTRY_SAVE_FPR(23) + stfd fp23,-72(save_restore_reg) + ENTRY_SAVE_FPR(24) + stfd fp24,-64(save_restore_reg) + ENTRY_SAVE_FPR(25) + stfd fp25,-56(save_restore_reg) + ENTRY_SAVE_FPR(26) + stfd fp26,-48(save_restore_reg) + ENTRY_SAVE_FPR(27) + stfd fp27,-40(save_restore_reg) + ENTRY_SAVE_FPR(28) + stfd fp28,-32(save_restore_reg) + ENTRY_SAVE_FPR(29) + stfd fp29,-24(save_restore_reg) + ENTRY_SAVE_FPR(30) + stfd fp30,-16(save_restore_reg) + ENTRY_SAVE_FPR(31) + stfd fp31,-8(save_restore_reg) + blr +#endif // clang-format on +} + +/* 80362154-80362180 35CA94 002C+00 0/0 0/0 0/0 .text __restore_fpr */ +asm void __restore_fpr(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + ENTRY_RESTORE_FPR(14) + lfd fp14,-144(save_restore_reg) + ENTRY_RESTORE_FPR(15) + lfd fp15,-136(save_restore_reg) + ENTRY_RESTORE_FPR(16) + lfd fp16,-128(save_restore_reg) + ENTRY_RESTORE_FPR(17) + lfd fp17,-120(save_restore_reg) + ENTRY_RESTORE_FPR(18) + lfd fp18,-112(save_restore_reg) + ENTRY_RESTORE_FPR(19) + lfd fp19,-104(save_restore_reg) + ENTRY_RESTORE_FPR(20) + lfd fp20,-96(save_restore_reg) + ENTRY_RESTORE_FPR(21) + lfd fp21,-88(save_restore_reg) + ENTRY_RESTORE_FPR(22) + lfd fp22,-80(save_restore_reg) + ENTRY_RESTORE_FPR(23) + lfd fp23,-72(save_restore_reg) + ENTRY_RESTORE_FPR(24) + lfd fp24,-64(save_restore_reg) + ENTRY_RESTORE_FPR(25) + lfd fp25,-56(save_restore_reg) + ENTRY_RESTORE_FPR(26) + lfd fp26,-48(save_restore_reg) + ENTRY_RESTORE_FPR(27) + lfd fp27,-40(save_restore_reg) + ENTRY_RESTORE_FPR(28) + lfd fp28,-32(save_restore_reg) + ENTRY_RESTORE_FPR(29) + lfd fp29,-24(save_restore_reg) + ENTRY_RESTORE_FPR(30) + lfd fp30,-16(save_restore_reg) + ENTRY_RESTORE_FPR(31) + lfd fp31,-8(save_restore_reg) + blr +#endif // clang-format on +} + +/* 803621A0-803621A4 35CAE0 0004+00 0/0 22/22 13/13 .text _savegpr_14 */ +asm void __save_gpr(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + ENTRY_SAVE_GPR(14) + stw r14,-72(save_restore_reg) + ENTRY_SAVE_GPR(15) + stw r15,-68(save_restore_reg) + ENTRY_SAVE_GPR(16) + stw r16,-64(save_restore_reg) + ENTRY_SAVE_GPR(17) + stw r17,-60(save_restore_reg) + ENTRY_SAVE_GPR(18) + stw r18,-56(save_restore_reg) + ENTRY_SAVE_GPR(19) + stw r19,-52(save_restore_reg) + ENTRY_SAVE_GPR(20) + stw r20,-48(save_restore_reg) + ENTRY_SAVE_GPR(21) + stw r21,-44(save_restore_reg) + ENTRY_SAVE_GPR(22) + stw r22,-40(save_restore_reg) + ENTRY_SAVE_GPR(23) + stw r23,-36(save_restore_reg) + ENTRY_SAVE_GPR(24) + stw r24,-32(save_restore_reg) + ENTRY_SAVE_GPR(25) + stw r25,-28(save_restore_reg) + ENTRY_SAVE_GPR(26) + stw r26,-24(save_restore_reg) + ENTRY_SAVE_GPR(27) + stw r27,-20(save_restore_reg) + ENTRY_SAVE_GPR(28) + stw r28,-16(save_restore_reg) + ENTRY_SAVE_GPR(29) + stw r29,-12(save_restore_reg) + ENTRY_SAVE_GPR(30) + stw r30,-8(save_restore_reg) + ENTRY_SAVE_GPR(31) + stw r31,-4(save_restore_reg) + blr +#endif // clang-format on +} + +/* 803621EC-803621F0 35CB2C 0004+00 0/0 22/22 13/13 .text _restgpr_14 */ +asm void __restore_gpr(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + ENTRY_RESTORE_GPR(14) + lwz r14,-72(save_restore_reg) + ENTRY_RESTORE_GPR(15) + lwz r15,-68(save_restore_reg) + ENTRY_RESTORE_GPR(16) + lwz r16,-64(save_restore_reg) + ENTRY_RESTORE_GPR(17) + lwz r17,-60(save_restore_reg) + ENTRY_RESTORE_GPR(18) + lwz r18,-56(save_restore_reg) + ENTRY_RESTORE_GPR(19) + lwz r19,-52(save_restore_reg) + ENTRY_RESTORE_GPR(20) + lwz r20,-48(save_restore_reg) + ENTRY_RESTORE_GPR(21) + lwz r21,-44(save_restore_reg) + ENTRY_RESTORE_GPR(22) + lwz r22,-40(save_restore_reg) + ENTRY_RESTORE_GPR(23) + lwz r23,-36(save_restore_reg) + ENTRY_RESTORE_GPR(24) + lwz r24,-32(save_restore_reg) + ENTRY_RESTORE_GPR(25) + lwz r25,-28(save_restore_reg) + ENTRY_RESTORE_GPR(26) + lwz r26,-24(save_restore_reg) + ENTRY_RESTORE_GPR(27) + lwz r27,-20(save_restore_reg) + ENTRY_RESTORE_GPR(28) + lwz r28,-16(save_restore_reg) + ENTRY_RESTORE_GPR(29) + lwz r29,-12(save_restore_reg) + ENTRY_RESTORE_GPR(30) + lwz r30,-8(save_restore_reg) + ENTRY_RESTORE_GPR(31) + lwz r31,-4(save_restore_reg) + blr +#endif // clang-format on +} + +/* 80362238-80362324 35CB78 00EC+00 0/0 2/2 0/0 .text __div2u */ +asm void __div2u(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + cmpwi cr0,r3,0 + cntlzw r0,r3 + cntlzw r9,r4 + bne cr0,lab1 + addi r0,r9,32 +lab1: + cmpwi cr0,r5,0 + cntlzw r9,r5 + cntlzw r10,r6 + bne cr0,lab2 + addi r9,r10,32 +lab2: + cmpw cr0,r0,r9 + subfic r10,r0,64 + bgt cr0,lab9 + addi r9,r9,1 + subfic r9,r9,64 + add r0,r0,r9 + subf r9,r9,r10 + mtctr r9 + cmpwi cr0,r9,32 + addi r7,r9,-32 + blt cr0,lab3 + srw r8,r3,r7 + li r7,0 + b lab4 +lab3: + srw r8,r4,r9 + subfic r7,r9,32 + slw r7,r3,r7 + or r8,r8,r7 + srw r7,r3,r9 +lab4: + cmpwi cr0,r0,32 + addic r9,r0,-32 + blt cr0,lab5 + slw r3,r4,r9 + li r4,0 + b lab6 +lab5: + slw r3,r3,r0 + subfic r9,r0,32 + srw r9,r4,r9 + or r3,r3,r9 + slw r4,r4,r0 +lab6: + li r10,-1 + addic r7,r7,0 +lab7: + adde r4,r4,r4 + adde r3,r3,r3 + adde r8,r8,r8 + adde r7,r7,r7 + subfc r0,r6,r8 + subfe. r9,r5,r7 + blt cr0,lab8 + mr r8,r0 + mr r7,r9 + addic r0,r10,1 +lab8: + bdnz lab7 + adde r4,r4,r4 + adde r3,r3,r3 + blr +lab9: + li r4,0 + li r3,0 + blr +#endif // clang-format on +} + +/* 80362324-8036245C 35CC64 0138+00 0/0 16/16 1/1 .text __div2i */ +asm void __div2i(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + stwu r1,-16(r1) + rlwinm. r9,r3,0,0,0 + beq cr0,positive1 + subfic r4,r4,0 + subfze r3,r3 +positive1: + stw r9,8(r1) + rlwinm. r10,r5,0,0,0 + beq cr0,positive2 + subfic r6,r6,0 + subfze r5,r5 +positive2: + stw r10,12(r1) + cmpwi cr0,r3,0 + cntlzw r0,r3 + cntlzw r9,r4 + bne cr0,lab1 + addi r0,r9,32 +lab1: + cmpwi cr0,r5,0 + cntlzw r9,r5 + cntlzw r10,r6 + bne cr0,lab2 + addi r9,r10,32 +lab2: + cmpw cr0,r0,r9 + subfic r10,r0,64 + bgt cr0,lab9 + addi r9,r9,1 + subfic r9,r9,64 + add r0,r0,r9 + subf r9,r9,r10 + mtctr r9 + cmpwi cr0,r9,32 + addi r7,r9,-32 + blt cr0,lab3 + srw r8,r3,r7 + li r7,0 + b lab4 +lab3: + srw r8,r4,r9 + subfic r7,r9,32 + slw r7,r3,r7 + or r8,r8,r7 + srw r7,r3,r9 +lab4: + cmpwi cr0,r0,32 + addic r9,r0,-32 + blt cr0,lab5 + slw r3,r4,r9 + li r4,0 + b lab6 +lab5: + slw r3,r3,r0 + subfic r9,r0,32 + srw r9,r4,r9 + or r3,r3,r9 + slw r4,r4,r0 +lab6: + li r10,-1 + addic r7,r7,0 +lab7: + adde r4,r4,r4 + adde r3,r3,r3 + adde r8,r8,r8 + adde r7,r7,r7 + subfc r0,r6,r8 + subfe. r9,r5,r7 + blt cr0,lab8 + mr r8,r0 + mr r7,r9 + addic r0,r10,1 +lab8: + bdnz lab7 + adde r4,r4,r4 + adde r3,r3,r3 + lwz r9,8(r1) + lwz r10,12(r1) + xor. r7,r9,r10 + beq cr0,no_adjust + cmpwi cr0,r9,0 + subfic r4,r4,0 + subfze r3,r3 + +no_adjust: + b func_end + +lab9: + li r4,0 + li r3,0 +func_end: + addi r1,r1,16 + blr +#endif // clang-format on +} + +/* 8036245C-80362540 35CD9C 00E4+00 0/0 2/2 0/0 .text __mod2u */ +asm void __mod2u(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + cmpwi cr0,r3,0 + cntlzw r0,r3 + cntlzw r9,r4 + bne cr0,lab1 + addi r0,r9,32 +lab1: + cmpwi cr0,r5,0 + cntlzw r9,r5 + cntlzw r10,r6 + bne cr0,lab2 + addi r9,r10,32 +lab2: + cmpw cr0,r0,r9 + subfic r10,r0,64 + bgt cr0,lab9 + addi r9,r9,1 + subfic r9,r9,64 + add r0,r0,r9 + subf r9,r9,r10 + mtctr r9 + cmpwi cr0,r9,32 + addi r7,r9,-32 + blt cr0,lab3 + srw r8,r3,r7 + li r7,0 + b lab4 +lab3: + srw r8,r4,r9 + subfic r7,r9,32 + slw r7,r3,r7 + or r8,r8,r7 + srw r7,r3,r9 +lab4: + cmpwi cr0,r0,32 + addic r9,r0,-32 + blt cr0,lab5 + slw r3,r4,r9 + li r4,0 + b lab6 +lab5: + slw r3,r3,r0 + subfic r9,r0,32 + srw r9,r4,r9 + or r3,r3,r9 + slw r4,r4,r0 +lab6: + li r10,-1 + addic r7,r7,0 +lab7: + adde r4,r4,r4 + adde r3,r3,r3 + adde r8,r8,r8 + adde r7,r7,r7 + subfc r0,r6,r8 + subfe. r9,r5,r7 + blt cr0,lab8 + mr r8,r0 + mr r7,r9 + addic r0,r10,1 +lab8: + bdnz lab7 + mr r4,r8 + mr r3,r7 + blr +lab9: + blr +#endif // clang-format on +} + +/* 80362540-8036264C 35CE80 010C+00 0/0 2/2 0/0 .text __mod2i */ +asm void __mod2i(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + + cmpwi cr7,r3,0 + bge cr7,positive1 + subfic r4,r4,0 + subfze r3,r3 +positive1: + cmpwi cr0,r5,0 + bge cr0,positive2 + subfic r6,r6,0 + subfze r5,r5 +positive2: + cmpwi cr0,r3,0 + cntlzw r0,r3 + cntlzw r9,r4 + bne cr0,lab1 + addi r0,r9,32 +lab1: + cmpwi cr0,r5,0 + cntlzw r9,r5 + cntlzw r10,r6 + bne cr0,lab2 + addi r9,r10,32 +lab2: + cmpw cr0,r0,r9 + subfic r10,r0,64 + bgt cr0,lab9 + addi r9,r9,1 + subfic r9,r9,64 + add r0,r0,r9 + subf r9,r9,r10 + mtctr r9 + cmpwi cr0,r9,32 + addi r7,r9,-32 + blt cr0,lab3 + srw r8,r3,r7 + li r7,0 + b lab4 +lab3: + srw r8,r4,r9 + subfic r7,r9,32 + slw r7,r3,r7 + or r8,r8,r7 + srw r7,r3,r9 +lab4: + cmpwi cr0,r0,32 + addic r9,r0,-32 + blt cr0,lab5 + slw r3,r4,r9 + li r4,0 + b lab6 +lab5: + slw r3,r3,r0 + subfic r9,r0,32 + srw r9,r4,r9 + or r3,r3,r9 + slw r4,r4,r0 +lab6: + li r10,-1 + addic r7,r7,0 +lab7: + adde r4,r4,r4 + adde r3,r3,r3 + adde r8,r8,r8 + adde r7,r7,r7 + subfc r0,r6,r8 + subfe. r9,r5,r7 + blt cr0,lab8 + mr r8,r0 + mr r7,r9 + addic r0,r10,1 +lab8: + bdnz lab7 + mr r4,r8 + mr r3,r7 +lab9: + bge cr7,no_adjust + subfic r4,r4,0 + subfze r3,r3 +no_adjust: + blr +#endif // clang-format on +} + +/* 8036264C-80362670 35CF8C 0024+00 0/0 2/2 0/0 .text __shl2i */ +asm void __shl2i(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + subfic r8,r5,32 + subic r9,r5,32 + slw r3,r3,r5 + srw r10,r4,r8 + or r3,r3,r10 + slw r10,r4,r9 + or r3,r3,r10 + slw r4,r4,r5 + blr +#endif // clang-format on +} + +/* 80362670-80362694 35CFB0 0024+00 0/0 2/2 0/0 .text __shr2u */ +asm void __shr2u(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + subfic r8,r5,32 + subic r9,r5,32 + srw r4,r4,r5 + slw r10,r3,r8 + or r4,r4,r10 + srw r10,r3,r9 + or r4,r4,r10 + srw r3,r3,r5 + blr +#endif // clang-format on +} + +/* 80362694-803626BC 35CFD4 0028+00 0/0 3/3 0/0 .text __shr2i */ +asm void __shr2i(void) { +#ifdef __MWERKS__ // clang-format off + nofralloc + subfic r8, r5, 0x20 + addic. r9, r5, -0x20 + srw r4, r4, r5 + slw r10, r3, r8 + or r4, r4, r10 + sraw r10, r3, r9 + ble around + or r4, r4, r10 +around: + sraw r3, r3, r5 + blr +#endif // clang-format on +} + +/* 803626BC-80362770 35CFFC 00B4+00 0/0 1/1 0/0 .text __cvt_sll_flt */ +asm void __cvt_sll_flt(void) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + stwu r1, -0x10(r1) + rlwinm. r5, r3, 0, 0, 0 + beq lbl_803626D0 + subfic r4, r4, 0 + subfze r3, r3 +lbl_803626D0: + or. r7, r3, r4 + li r6, 0 + beq lbl_80362758 + cntlzw r7, r3 + cntlzw r8, r4 + rlwinm r9, r7, 0x1a, 0, 4 + srawi r9, r9, 0x1f + and r9, r9, r8 + add r7, r7, r9 + subfic r8, r7, 0x20 + addic r9, r7, -32 + slw r3, r3, r7 + srw r10, r4, r8 + or r3, r3, r10 + slw r10, r4, r9 + or r3, r3, r10 + slw r4, r4, r7 + subf r6, r7, r6 + clrlwi r7, r4, 0x15 + cmpwi r7, 0x400 + addi r6, r6, 0x43e + blt lbl_80362740 + bgt lbl_80362734 + rlwinm. r7, r4, 0, 0x14, 0x14 + beq lbl_80362740 +lbl_80362734: + addic r4, r4, 0x800 + addze r3, r3 + addze r6, r6 +lbl_80362740: + rotlwi r4, r4, 0x15 + rlwimi r4, r3, 0x15, 0, 0xa + rlwinm r3, r3, 0x15, 0xc, 0x1f + slwi r6, r6, 0x14 + or r3, r6, r3 + or r3, r5, r3 +lbl_80362758: + stw r3, 8(r1) + stw r4, 0xc(r1) + lfd f1, 8(r1) + frsp f1, f1 + addi r1, r1, 0x10 + blr +#endif // clang-format on +} + +/* 80362770-8036283C 35D0B0 00CC+00 0/0 2/2 0/0 .text __cvt_dbl_usll */ +asm void __cvt_dbl_usll(void) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + stwu r1,-16(r1) + stfd f1,8(r1) + lwz r3,8(r1) + lwz r4,12(r1) + rlwinm r5,r3,12,21,31 + cmpli cr0,0,r5,1023 + bge cr0,not_fraction + li r3,0 + li r4,0 + b func_end +not_fraction: + mr r6,r3 + rlwinm r3,r3,0,12,31 + oris r3,r3,0x0010 + addi r5,r5,-1075 + cmpwi cr0,r5,0 + bge cr0,left + neg r5,r5 + subfic r8,r5,32 + subic r9,r5,32 + srw r4,r4,r5 + slw r10,r3,r8 + or r4,r4,r10 + srw r10,r3,r9 + or r4,r4,r10 + srw r3,r3,r5 + b around +left: + cmpwi cr0,r5,10 + ble+ no_overflow + rlwinm. r6,r6,0,0,0 + beq cr0,max_positive + lis r3,0x8000 + li r4,0 + b func_end +max_positive: + lis r3,0x7FFF + ori r3,r3,0xFFFF + li r4,-1 + b func_end +no_overflow: + subfic r8,r5,32 + subic r9,r5,32 + slw r3,r3,r5 + srw r10,r4,r8 + or r3,r3,r10 + slw r10,r4,r9 + or r3,r3,r10 + slw r4,r4,r5 +around: + rlwinm. r6,r6,0,0,0 + beq cr0,positive + subfic r4,r4,0 + subfze r3,r3 +positive: +func_end: + addi r1,r1,16 + blr +#endif // clang-format on +} + +#ifdef __cplusplus +} +#endif diff --git a/src/TRK_MINNOW_DOLPHIN/__exception.s b/src/TRK_MINNOW_DOLPHIN/__exception.s new file mode 100644 index 00000000..a5c63065 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/__exception.s @@ -0,0 +1,2018 @@ +.include "macros.inc" +.file "__exception.s" + +# 0x80003534..0x80005468 | size: 0x1F34 +.section .init, "ax" +.balign 4 +# .init:0x0 | 0x80003534 | size: 0x0 +.sym gTRKInterruptVectorTable, global + +# .init:0x0 | 0x80003534 | size: 0x1F34 +.fn pad_00_80003534_init, local +.4byte 0x4D657472 +xoris r23, r27, 0x6572 +xori r19, r27, 0x2054 +ori r18, r11, 0x6765 +andis. r0, r1, 0x5265 +andi. r9, r27, 0x6465 +xoris r20, r19, 0x204b +oris r18, r11, 0x6e65 +xoris r0, r1, 0x666f +andi. r0, r17, 0x506f +andis. r5, r27, 0x7250 +.L_80003560: + .4byte 0x43000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + b 0x1e34 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfsrr0 r2 + icbi r0, r2 + mfdar r2 + dcbi r0, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x200 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x300 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 +# .init:0x348 | 0x8000387C | size: 0x0 +.sym lbl_8000387C, global + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 +# .init:0x3AC | 0x800038E0 | size: 0x0 +.sym lbl_800038E0, global + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x400 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x500 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x600 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x700 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x800 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x900 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xc00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xd00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xe00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + b .L_80004488 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xf20 + rfi +.L_80004488: + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xf00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfcr r2 + mtsprg 2, r2 + mfmsr r2 + andis. r2, r2, 0x2 + beq .L_80004564 + mfmsr r2 + xoris r2, r2, 0x2 + sync + mtmsr r2 + sync + mtsprg 1, r2 +.L_80004564: + mfsprg r2, 2 + mtcrf 255, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1000 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfcr r2 + mtsprg 2, r2 + mfmsr r2 + andis. r2, r2, 0x2 + beq .L_80004664 + mfmsr r2 + xoris r2, r2, 0x2 + sync + mtmsr r2 + sync + mtsprg 1, r2 +.L_80004664: + mfsprg r2, 2 + mtcrf 255, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1100 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfcr r2 + mtsprg 2, r2 + mfmsr r2 + andis. r2, r2, 0x2 + beq .L_80004764 + mfmsr r2 + xoris r2, r2, 0x2 + sync + mtmsr r2 + sync + mtsprg 1, r2 +.L_80004764: + mfsprg r2, 2 + mtcrf 255, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1200 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1300 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1400 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1600 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1700 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1c00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1d00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1e00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1f00 + rfi +.endfn pad_00_80003534_init diff --git a/src/TRK_MINNOW_DOLPHIN/dispatch.c b/src/TRK_MINNOW_DOLPHIN/dispatch.c new file mode 100644 index 00000000..9e3fc1e2 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/dispatch.c @@ -0,0 +1,44 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" + +u32 gTRKDispatchTableSize; + +struct DispatchEntry { + int (*fn)(TRKBuffer*); +}; + +struct DispatchEntry gTRKDispatchTable[33] = { + { &TRKDoUnsupported }, { &TRKDoConnect }, { &TRKDoDisconnect }, + { &TRKDoReset }, { &TRKDoVersions }, { &TRKDoSupportMask }, + { &TRKDoCPUType }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoReadMemory }, { &TRKDoWriteMemory }, + { &TRKDoReadRegisters }, { &TRKDoWriteRegisters }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoFlushCache }, { &TRKDoSetOption }, + { &TRKDoContinue }, { &TRKDoStep }, { &TRKDoStop }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, +}; + +DSError TRKInitializeDispatcher() +{ + gTRKDispatchTableSize = 32; + return DS_NoError; +} + +DSError TRKDispatchMessage(TRKBuffer* buffer) +{ + DSError error; + u8 command; + + error = DS_DispatchError; + TRKSetBufferPosition(buffer, 0); + TRKReadBuffer1_ui8(buffer, &command); + command &= 0xFF; + if (command < gTRKDispatchTableSize) { + error = gTRKDispatchTable[command].fn(buffer); + } + return error; +} diff --git a/src/TRK_MINNOW_DOLPHIN/dolphin_trk.c b/src/TRK_MINNOW_DOLPHIN/dolphin_trk.c new file mode 100644 index 00000000..b8ffd29d --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/dolphin_trk.c @@ -0,0 +1,138 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" +#include "dolphin/ar.h" +#include "stddef.h" + +#define EXCEPTIONMASK_ADDR 0x80000044 + +static u32 lc_base; +extern u32 _db_stack_addr; + +static u32 TRK_ISR_OFFSETS[15] = { PPC_SystemReset, + PPC_MachineCheck, + PPC_DataStorage, + PPC_InstructionStorage, + PPC_ExternalInterrupt, + PPC_Alignment, + PPC_Program, + PPC_FloatingPointUnavaiable, + PPC_Decrementer, + PPC_SystemCall, + PPC_Trace, + PPC_PerformanceMonitor, + PPC_InstructionAddressBreakpoint, + PPC_SystemManagementInterrupt, + PPC_ThermalManagementInterrupt }; + +__declspec(section ".init") void __TRK_reset(void) { __TRK_copy_vectors(); } + +asm void InitMetroTRK() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + + addi r1, r1, -4 + stw r3, 0(r1) + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + stmw r0, ProcessorState_PPC.Default.GPR(r3) //Save the gprs + lwz r4, 0(r1) + addi r1, r1, 4 + stw r1, ProcessorState_PPC.Default.GPR[1](r3) + stw r4, ProcessorState_PPC.Default.GPR[3](r3) + mflr r4 + stw r4, ProcessorState_PPC.Default.LR(r3) + stw r4, ProcessorState_PPC.Default.PC(r3) + mfcr r4 + stw r4, ProcessorState_PPC.Default.CR(r3) + //??? + mfmsr r4 + ori r3, r4, (1 << (31 - 16)) + xori r3, r3, (1 << (31 - 16)) + mtmsr r3 + mtsrr1 r4 //Copy msr to srr1 + //Save misc registers to gTRKCPUState + bl TRKSaveExtended1Block + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + //Reset IABR and DABR + li r0, 0 + mtspr 0x3f2, r0 + mtspr 0x3f5, r0 + //Restore stack pointer + lis r1, _db_stack_addr@h + ori r1, r1, _db_stack_addr@l + mr r3, r5 + bl InitMetroTRKCommTable //Initialize comm table + /* + If InitMetroTRKCommTable returned 1 (failure), an invalid hardware + id or the id for GDEV was somehow passed. Since only BBA or NDEV + are supported, we return early. Otherwise, we proceed with + starting up TRK. + */ + cmpwi r3, 1 + bne initCommTableSuccess + /* + BUG: The code probably orginally reloaded gTRKCPUState here, but + as is it will read the returned value of InitMetroTRKCommTable + as a TRKCPUState struct pointer, causing the CPU to return to + a garbage code address. + */ + lwz r4, ProcessorState_PPC.Default.LR(r3) + mtlr r4 + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + blr +initCommTableSuccess: + b TRK_main //Jump to TRK_main +#endif // clang-format on +} + +void EnableMetroTRKInterrupts(void) { EnableEXI2Interrupts(); } + +u32 TRKTargetTranslate(u32 param_0) +{ + if (param_0 >= lc_base) { + if ((param_0 < lc_base + 0x4000) + && ((gTRKCPUState.Extended1.DBAT3U & 3) != 0)) { + return param_0; + } + } + + return param_0 & 0x3FFFFFFF | 0x80000000; +} + +extern u8 gTRKInterruptVectorTable[]; + +void TRK_copy_vector(u32 offset) +{ + void* destPtr = (void*)TRKTargetTranslate(offset); + TRK_memcpy(destPtr, gTRKInterruptVectorTable + offset, 0x100); + TRK_flush_cache(destPtr, 0x100); +} + +void __TRK_copy_vectors(void) +{ + int i; + u32 mask; + + mask = *(u32*)TRKTargetTranslate(0x44); + + for (i = 0; i <= 14; ++i) { + if (mask & (1 << i)) { + TRK_copy_vector(TRK_ISR_OFFSETS[i]); + } + } +} + +DSError TRKInitializeTarget() +{ + gTRKState.isStopped = TRUE; + gTRKState.msr = __TRK_get_MSR(); + lc_base = 0xE0000000; + return DS_NoError; +} diff --git a/src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c b/src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c new file mode 100644 index 00000000..46eb1107 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c @@ -0,0 +1,173 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "OdemuExi2/odemuexi/DebuggerDriver.h" +#include "amcstubs/AmcExi2Stubs.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#define BUFF_LEN 4362 + +u8 gWriteBuf[BUFF_LEN]; +u8 gReadBuf[BUFF_LEN]; +s32 _MetroTRK_Has_Framing; +s32 gReadCount; +s32 gReadPos; +s32 gWritePos; + +DBCommTable gDBCommTable = {}; + +asm void TRKLoadContext(OSContext* ctx, u32) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lwz r0, OSContext.gpr[0](r3) + lwz r1, OSContext.gpr[1](r3) + lwz r2, OSContext.gpr[2](r3) + lhz r5, OSContext.state(r3) + rlwinm. r6, r5, 0, 0x1e, 0x1e + beq lbl_80371C1C + rlwinm r5, r5, 0, 0x1f, 0x1d + sth r5, OSContext.state(r3) + lmw r5, OSContext.gpr[5](r3) + b lbl_80371C20 +lbl_80371C1C: + lmw r13, OSContext.gpr[13](r3) +lbl_80371C20: + mr r31, r3 + mr r3, r4 + lwz r4, OSContext.cr(r31) + mtcrf 0xff, r4 + lwz r4, OSContext.lr(r31) + mtlr r4 + lwz r4, OSContext.ctr(r31) + mtctr r4 + lwz r4, OSContext.xer(r31) + mtxer r4 + mfmsr r4 + rlwinm r4, r4, 0, 0x11, 0xf //Turn off external exceptions + rlwinm r4, r4, 0, 0x1f, 0x1d //Turn off recoverable exception flag + mtmsr r4 + mtsprg 1, r2 + lwz r4, OSContext.gpr[3](r31) + mtsprg 2, r4 + lwz r4, OSContext.gpr[4](r31) + mtsprg 3, r4 + lwz r2, OSContext.srr0(r31) + lwz r4, OSContext.srr1(r31) + lwz r31, OSContext.gpr[31](r31) + b TRKInterruptHandler +#endif // clang-format on +} + +void TRKEXICallBack(__OSInterrupt param_0, OSContext* ctx) +{ + OSEnableScheduler(); + TRKLoadContext(ctx, 0x500); +} + +int InitMetroTRKCommTable(int hwId) +{ + int result; + + if (hwId == HARDWARE_GDEV) { + OSReport("MetroTRK : Set to GDEV hardware\n"); + result = Hu_IsStub(); + + gDBCommTable.initialize_func = DBInitComm; + gDBCommTable.init_interrupts_func = DBInitInterrupts; + gDBCommTable.peek_func = DBQueryData; + gDBCommTable.read_func = DBRead; + gDBCommTable.write_func = DBWrite; + gDBCommTable.open_func = DBOpen; + gDBCommTable.close_func = DBClose; + } else { + OSReport("MetroTRK : Set to AMC DDH hardware\n"); + result = AMC_IsStub(); + + gDBCommTable.initialize_func = EXI2_Init; + gDBCommTable.init_interrupts_func = EXI2_EnableInterrupts; + gDBCommTable.peek_func = EXI2_Poll; + gDBCommTable.read_func = EXI2_ReadN; + gDBCommTable.write_func = EXI2_WriteN; + gDBCommTable.open_func = EXI2_Reserve; + gDBCommTable.close_func = EXI2_Unreserve; + } + + return result; +} + +DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, + volatile u8** param_3) +{ + gDBCommTable.initialize_func(param_3, TRKEXICallBack); + return DS_NoError; +} + +void EnableEXI2Interrupts(void) { gDBCommTable.init_interrupts_func(); } + +inline int TRKPollUART(void) { return gDBCommTable.peek_func(); } + +inline UARTError TRKReadUARTN(void* bytes, u32 length) +{ + int readErr = gDBCommTable.read_func(bytes, length); + return readErr == 0 ? 0 : -1; +} + +inline UARTError TRKWriteUARTN(const void* bytes, u32 length) +{ + int writeErr = gDBCommTable.write_func(bytes, length); + return writeErr == 0 ? 0 : -1; +} + +UARTError WriteUARTFlush(void) +{ + UARTError readErr = 0; + + while (gWritePos < 0x800) { + gWriteBuf[gWritePos] = 0; + gWritePos++; + } + if (gWritePos != 0) { + readErr = TRKWriteUARTN(gWriteBuf, gWritePos); + gWritePos = 0; + } + return readErr; +} + +UARTError WriteUART1(u8 arg0) +{ + gWriteBuf[gWritePos++] = arg0; + return 0; +} + +UARTError TRKReadUARTPoll(u8* arg0) +{ + UARTError readErr = 4; + s32 cnt; + + if (gReadPos >= gReadCount) { + gReadPos = 0; + cnt = gReadCount = TRKPollUART(); + if (cnt > 0) { + if (cnt > BUFF_LEN) { + gReadCount = BUFF_LEN; + } + readErr = TRKReadUARTN(gReadBuf, gReadCount); + if (readErr != 0) { + gReadCount = 0; + } + } + } + if (gReadPos < gReadCount) { + *arg0 = gReadBuf[gReadPos++]; + readErr = 0; + } + return readErr; +} + +void ReserveEXI2Port(void) { gDBCommTable.open_func(); } + +void UnreserveEXI2Port(void) { gDBCommTable.close_func(); } + +void TRK_board_display(char* str) { OSReport(str); } + +void TRKUARTInterruptHandler() { } diff --git a/src/TRK_MINNOW_DOLPHIN/flush_cache.c b/src/TRK_MINNOW_DOLPHIN/flush_cache.c new file mode 100644 index 00000000..116d8d72 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/flush_cache.c @@ -0,0 +1,26 @@ +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" + +asm void TRK_flush_cache(register void* param_1, register int param_2) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + + lis r5, 0xFFFF + ori r5, r5, 0xFFF1 + and r5, r5, param_1 + subf r3, r5, param_1 + add r4, param_2, r3 + +loop: + dcbst 0, r5 + dcbf 0, r5 + sync + icbi 0, r5 + addic r5, r5, 8 + addic. r4, r4, -8 + bge loop + + isync + blr +#endif // clang-format on +} diff --git a/src/TRK_MINNOW_DOLPHIN/main_TRK.c b/src/TRK_MINNOW_DOLPHIN/main_TRK.c new file mode 100644 index 00000000..0ce137a8 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/main_TRK.c @@ -0,0 +1,17 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" + +static DSError TRK_mainError; + +DSError TRK_main(void) +{ + TRK_mainError = TRKInitializeNub(); + + if (TRK_mainError == DS_NoError) { + TRKNubWelcome(); + TRKNubMainLoop(); + } + + TRK_mainError = TRKTerminateNub(); + return TRK_mainError; +} diff --git a/src/TRK_MINNOW_DOLPHIN/mainloop.c b/src/TRK_MINNOW_DOLPHIN/mainloop.c new file mode 100644 index 00000000..62783f82 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mainloop.c @@ -0,0 +1,70 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +void TRKHandleRequestEvent(TRKEvent* event) +{ + TRKBuffer* buffer = TRKGetBuffer(event->msgBufID); + TRKDispatchMessage(buffer); +} + +void TRKHandleSupportEvent(TRKEvent* event) { TRKTargetSupportRequest(); } + +void TRKIdle() +{ + if (TRKTargetStopped() == FALSE) { + TRKTargetContinue(); + } +} + +void TRKNubMainLoop(void) +{ + void* msg; + TRKEvent event; + BOOL isShutdownRequested; + BOOL isNewInput; + + isShutdownRequested = FALSE; + isNewInput = FALSE; + while (isShutdownRequested == FALSE) { + if (TRKGetNextEvent(&event) != FALSE) { + isNewInput = FALSE; + + switch (event.eventType) { + case NUBEVENT_Null: + break; + + case NUBEVENT_Request: + TRKHandleRequestEvent(&event); + break; + + case NUBEVENT_Shutdown: + isShutdownRequested = TRUE; + break; + + case NUBEVENT_Breakpoint: + case NUBEVENT_Exception: + TRKTargetInterrupt(&event); + break; + + case NUBEVENT_Support: + TRKHandleSupportEvent(&event); + break; + } + + TRKDestructEvent(&event); + continue; + } + + if ((isNewInput == FALSE) || (*(u8*)gTRKInputPendingPtr != '\0')) { + isNewInput = TRUE; + TRKGetInput(); + continue; + } + + TRKIdle(); + isNewInput = FALSE; + } +} diff --git a/src/TRK_MINNOW_DOLPHIN/mem_TRK.c b/src/TRK_MINNOW_DOLPHIN/mem_TRK.c new file mode 100644 index 00000000..b25259fe --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mem_TRK.c @@ -0,0 +1,83 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" +#include "dolphin/types.h" + +void TRK_fill_mem(void *dest, int value, unsigned long length) +{ +#define cDest ((unsigned char *)dest) +#define lDest ((unsigned long *)dest) + unsigned long val = (unsigned char)value; + unsigned long i; + lDest = (unsigned long *)dest; + cDest = (unsigned char *)dest; + + cDest--; + + if (length >= 32) { + i = ~(unsigned long)dest & 3; + + if (i) { + length -= i; + do { + *++cDest = val; + } while (--i); + } + + if (val) { + val |= val << 24 | val << 16 | val << 8; + } + + lDest = (unsigned long *)(cDest + 1) - 1; + + i = length >> 5; + if (i) { + do { + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + } while (--i); + } + + i = (length & 31) >> 2; + + if (i) { + do { + *++lDest = val; + } while (--i); + } + + cDest = (unsigned char *)(lDest + 1) - 1; + + length &= 3; + } + + if (length) { + do { + *++cDest = val; + } while (--length); + } + +#undef cDest +#undef lDest +} + +__declspec(section ".init") void *TRK_memcpy(void *dst, const void *src, size_t n) +{ + const char *p; + char *q; + + for (p = (const char *)src - 1, q = (char *)dst - 1, n++; --n;) + *++q = *++p; + + return dst; +} + +__declspec(section ".init") void *TRK_memset(void *dst, int val, size_t n) +{ + TRK_fill_mem(dst, val, n); + return dst; +} diff --git a/src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c b/src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c new file mode 100644 index 00000000..921aa79d --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c @@ -0,0 +1,248 @@ +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +extern u8 gTRKRestoreFlags[9 + 3 /* padding */]; + +asm void TRKSaveExtended1Block() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r2, gTRKCPUState@h /* 0x8044F338@h */ + ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ + mfsr r16, 0 + mfsr r17, 1 + mfsr r18, 2 + mfsr r19, 3 + mfsr r20, 4 + mfsr r21, 5 + mfsr r22, 6 + mfsr r23, 7 + mfsr r24, 8 + mfsr r25, 9 + mfsr r26, 0xa + mfsr r27, 0xb + mfsr r28, 0xc + mfsr r29, 0xd + mfsr r30, 0xe + mfsr r31, 0xf + stmw r16, 0x1a8(r2) + mftb r10, 0x10c + mftbu r11 + mfspr r12, 0x3f0 + mfspr r13, 0x3f1 + mfspr r14, 0x1b + mfpvr r15 + mfibatu r16, 0 + mfibatl r17, 0 + mfibatu r18, 1 + mfibatl r19, 1 + mfibatu r20, 2 + mfibatl r21, 2 + mfibatu r22, 3 + mfibatl r23, 3 + mfdbatu r24, 0 + mfdbatl r25, 0 + mfdbatu r26, 1 + mfdbatl r27, 1 + mfdbatu r28, 2 + mfdbatl r29, 2 + mfdbatu r30, 3 + mfdbatl r31, 3 + stmw r10, 0x1e8(r2) + mfspr r22, 0x19 + mfdar r23 + mfdsisr r24 + mfspr r25, 0x110 + mfspr r26, 0x111 + mfspr r27, 0x112 + mfspr r28, 0x113 + li r29, 0 + mfspr r30, 0x3f2 + mfspr r31, 0x11a + stmw r22, 0x25c(r2) + mfspr r20, 0x390 + mfspr r21, 0x391 + mfspr r22, 0x392 + mfspr r23, 0x393 + mfspr r24, 0x394 + mfspr r25, 0x395 + mfspr r26, 0x396 + mfspr r27, 0x397 + mfspr r28, 0x398 + mfspr r29, 0x399 + mfspr r30, 0x39a + mfspr r31, 0x39b + stmw r20, 0x2fc(r2) + b lbl_80371340 + mfspr r16, 0x3a0 + mfspr r17, 0x3a7 + mfspr r18, 0x3a8 + mfspr r19, 0x3a9 + mfspr r20, 0x3aa + mfspr r21, 0x3ab + mfspr r22, 0x3ac + mfspr r23, 0x3ad + mfspr r24, 0x3ae + mfspr r25, 0x3af + mfspr r26, 0x3b0 + mfspr r27, 0x3b7 + mfspr r28, 0x3bf + mfspr r29, 0x3f6 + mfspr r30, 0x3f7 + mfspr r31, 0x3ff + stmw r16, 0x2b8(r2) + +lbl_80371340: + mfspr r19, 0x3f5 + mfspr r20, 0x3b9 + mfspr r21, 0x3ba + mfspr r22, 0x3bd + mfspr r23, 0x3be + mfspr r24, 0x3bb + mfspr r25, 0x3b8 + mfspr r26, 0x3bc + mfspr r27, 0x3fc + mfspr r28, 0x3fd + mfspr r29, 0x3fe + mfspr r30, 0x3FB + mfspr r31, 0x3f9 + stmw r19, 0x284(r2) + b end + + mfspr r25, 0x3d0 + mfspr r26, 0x3d1 + mfspr r27, 0x3d2 + mfspr r28, 0x3d3 + mfspr r29, 0x3D4 + mfspr r30, 0x3D5 + mfspr r31, 0x3d6 + stmw r25, 0x240(r2) + mfspr r31, 0x16 + stw r31, 0x278(r2) +end: + blr +#endif // clang-format on +} + +asm void TRKRestoreExtended1Block() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r2, gTRKCPUState@h /* 0x8044F338@h */ + ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ + lis r5, gTRKRestoreFlags@h /* 0x803D3238@h */ + ori r5, r5, gTRKRestoreFlags@l /* 0x803D3238@l */ + lbz r3, 0(r5) + lbz r6, 1(r5) + li r0, 0 + stb r0, 0(r5) + stb r0, 1(r5) + cmpwi r3, 0 + beq lbl_803713E4 + lwz r24, 0x1e8(r2) + lwz r25, 0x1ec(r2) + mttbl r24 + mttbu r25 +lbl_803713E4: + lmw r20, 0x2fc(r2) + mtspr 0x390, r20 + mtspr 0x391, r21 + mtspr 0x392, r22 + mtspr 0x393, r23 + mtspr 0x394, r24 + mtspr 0x395, r25 + mtspr 0x396, r26 + mtspr 0x397, r27 + mtspr 0x398, r28 + mtspr 0x39a, r30 + mtspr 0x39b, r31 + b lbl_80371430 + lmw r26, 0x2e0(r2) + mtspr 0x3b0, r26 + mtspr 0x3b7, r27 + mtspr 0x3f6, r29 + mtspr 0x3f7, r30 + mtspr 0x3ff, r31 +lbl_80371430: + lmw r19, 0x284(r2) + mtspr 0x3f5, r19 + mtspr 0x3b9, r20 + mtspr 0x3ba, r21 + mtspr 0x3bd, r22 + mtspr 0x3be, r23 + mtspr 0x3bb, r24 + mtspr 0x3b8, r25 + mtspr 0x3bc, r26 + mtspr 0x3fc, r27 + mtspr 0x3fd, r28 + mtspr 0x3fe, r29 + mtspr 0x3FB, r30 + mtspr 0x3f9, r31 + b lbl_8037149C + cmpwi r6, 0 + beq lbl_8037147C + lwz r26, 0x278(r2) + mtspr 0x16, r26 +lbl_8037147C: + lmw r25, 0x240(r2) + mtspr 0x3d0, r25 + mtspr 0x3d1, r26 + mtspr 0x3d2, r27 + mtspr 0x3d3, r28 + mtspr 0x3D4, r29 + mtspr 0x3D5, r30 + mtspr 0x3d6, r31 +lbl_8037149C: + lmw r16, 0x1a8(r2) + mtsr 0, r16 + mtsr 1, r17 + mtsr 2, r18 + mtsr 3, r19 + mtsr 4, r20 + mtsr 5, r21 + mtsr 6, r22 + mtsr 7, r23 + mtsr 8, r24 + mtsr 9, r25 + mtsr 0xa, r26 + mtsr 0xb, r27 + mtsr 0xc, r28 + mtsr 0xd, r29 + mtsr 0xe, r30 + mtsr 0xf, r31 + lmw r12, 0x1f0(r2) + mtspr 0x3f0, r12 + mtspr 0x3f1, r13 + mtspr 0x1b, r14 + mtspr 0x11f, r15 + mtibatu 0, r16 + mtibatl 0, r17 + mtibatu 1, r18 + mtibatl 1, r19 + mtibatu 2, r20 + mtibatl 2, r21 + mtibatu 3, r22 + mtibatl 3, r23 + mtdbatu 0, r24 + mtdbatl 0, r25 + mtdbatu 1, r26 + mtdbatl 1, r27 + mtdbatu 2, r28 + mtdbatl 2, r29 + mtdbatu 3, r30 + mtdbatl 3, r31 + lmw r22, 0x25c(r2) + mtspr 0x19, r22 + mtdar r23 + mtdsisr r24 + mtspr 0x110, r25 + mtspr 0x111, r26 + mtspr 0x112, r27 + mtspr 0x113, r28 + mtspr 0x3f2, r30 + mtspr 0x11a, r31 + blr +#endif // clang-format on +} + +u8 TRKTargetCPUMinorType(void) { return 0x54; } diff --git a/src/TRK_MINNOW_DOLPHIN/msg.c b/src/TRK_MINNOW_DOLPHIN/msg.c new file mode 100644 index 00000000..09f5de11 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/msg.c @@ -0,0 +1,61 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +// Incorrect signature? Should be u8. +UARTError WriteUART1(s8 arg0); + +DSError TRKMessageSend(TRK_Msg* msg) +{ + u8 var_r30; + u8 var_r28; + u8 var_r28_2; + s32 var_r3; + s32 i; + + var_r30 = 0; + for (i = 0; i < msg->m_msgLength; i++) { + var_r30 = var_r30 + msg->m_msg[i]; + } + var_r30 = var_r30 ^ 0xFF; + var_r3 = WriteUART1(0x7E); + if (var_r3 == 0) { + for (i = 0; i < msg->m_msgLength; i++) { + var_r28 = msg->m_msg[i]; + if (var_r28 == 0x7E || var_r28 == 0x7D) { + var_r3 = WriteUART1(0x7D); + var_r28 ^= 0x20; + if (var_r3 != 0) { + break; + } + } + var_r3 = WriteUART1(var_r28); + if (var_r3 != 0) { + break; + } + } + } + if (var_r3 == 0) { + var_r28_2 = var_r30; + for (i = 0; i < 1; i++) { + if (var_r28_2 == 0x7E || var_r28_2 == 0x7D) { + var_r3 = WriteUART1(0x7D); + var_r28_2 ^= 0x20; + if (var_r3 != 0) { + break; + } + } + var_r3 = WriteUART1(var_r28_2); + if (var_r3 != 0) { + break; + } + } + } + if (var_r3 == 0) { + var_r3 = WriteUART1(0x7E); + } + if (var_r3 == 0) { + var_r3 = WriteUARTFlush(); + } + return var_r3; +} diff --git a/src/TRK_MINNOW_DOLPHIN/msgbuf.c b/src/TRK_MINNOW_DOLPHIN/msgbuf.c new file mode 100644 index 00000000..71702e8c --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/msgbuf.c @@ -0,0 +1,365 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" +#include "stddef.h" + +TRKBuffer gTRKMsgBufs[3]; + +void TRKSetBufferUsed(TRKBuffer* msg, BOOL state) { msg->isInUse = state; } + +DSError TRKInitializeMessageBuffers(void) +{ + int i; + for (i = 0; i < 3; i++) { + TRKInitializeMutex(&gTRKMsgBufs[i]); + TRKAcquireMutex(&gTRKMsgBufs[i]); + TRKSetBufferUsed(&gTRKMsgBufs[i], FALSE); + TRKReleaseMutex(&gTRKMsgBufs[i]); + } + + return DS_NoError; +} + +DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg) +{ + TRKBuffer* buf; + DSError error = DS_NoMessageBufferAvailable; + int i; + + *outMsg = NULL; + + for (i = 0; i < 3; i++) { + buf = TRKGetBuffer(i); + + TRKAcquireMutex(buf); + if (!buf->isInUse) { + TRKResetBuffer(buf, 1); + TRKSetBufferUsed(buf, TRUE); + error = DS_NoError; + *outMsg = buf; + *msgID = i; + i = 3; // why not break? weird choice + } + TRKReleaseMutex(buf); + } + + if (error == DS_NoMessageBufferAvailable) { + usr_puts_serial("ERROR : No buffer available\n"); + } + + return error; +} + +void* TRKGetBuffer(int idx) +{ + TRKBuffer* buf = NULL; + if (idx >= 0 && idx < 3) { + buf = &gTRKMsgBufs[idx]; + } + + return buf; +} + +void TRKReleaseBuffer(int idx) +{ + TRKBuffer* msg; + if (idx != -1 && idx >= 0 && idx < 3) { + msg = &gTRKMsgBufs[idx]; + TRKAcquireMutex(msg); + TRKSetBufferUsed(msg, FALSE); + TRKReleaseMutex(msg); + } +} + +void TRKResetBuffer(TRKBuffer* msg, u8 keepData) +{ + msg->length = 0; + msg->position = 0; + + if (!keepData) { + TRK_memset(msg->data, 0, TRKMSGBUF_SIZE); + } +} + +DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos) +{ + DSError error = DS_NoError; + + if (pos > 0x880) { + error = DS_MessageBufferOverflow; + } else { + msg->position = pos; + // If the new position is past the current length, + // update the length + if (pos > msg->length) { + msg->length = pos; + } + } + + return error; +} + +#pragma dont_inline on +DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length) +{ + DSError error = DS_NoError; // r31 + u32 bytesLeft; + + // Return if no bytes to append + if (length == 0) { + return DS_NoError; + } + + bytesLeft = 0x880 - msg->position; + + // If there isn't enough space left in the buffer, change the number + // of bytes to append to the remaning number of bytes + if (bytesLeft < length) { + error = DS_MessageBufferOverflow; + length = bytesLeft; + } + + if (length == 1) { + // If the length of bytes to append is 1, just copy the byte over + msg->data[msg->position] = ((u8*)data)[0]; + } else { + // Otherwise, use memcpy + TRK_memcpy(msg->data + msg->position, data, length); + } + + // Update the position and length + msg->position += length; + msg->length = msg->position; + + return error; +} +#pragma dont_inline reset + +DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length) +{ + DSError error = DS_NoError; + unsigned int + bytesLeft; // this has to be unsigned int not u32 to match lmfao. + + // Return if no bytes to read + if (length == 0) { + return DS_NoError; + } + + bytesLeft = msg->length - msg->position; + + // If the number of bytes to read exceeds the buffer length, change + // the length to the remaining number of bytes + if (length > bytesLeft) { + error = DS_MessageBufferReadError; + length = bytesLeft; + } + + TRK_memcpy(data, msg->data + msg->position, length); + msg->position += length; + return error; +} + +DSError TRKAppendBuffer1_ui16(TRKBuffer* buffer, const u16 data) +{ + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[1]; + bigEndianData[1] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +DSError TRKAppendBuffer1_ui32(TRKBuffer* buffer, const u32 data) +{ + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[3]; + bigEndianData[1] = byteData[2]; + bigEndianData[2] = byteData[1]; + bigEndianData[3] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +DSError TRKAppendBuffer1_ui64(TRKBuffer* buffer, const u64 data) +{ + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[7]; + bigEndianData[1] = byteData[6]; + bigEndianData[2] = byteData[5]; + bigEndianData[3] = byteData[4]; + bigEndianData[4] = byteData[3]; + bigEndianData[5] = byteData[2]; + bigEndianData[6] = byteData[1]; + bigEndianData[7] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +DSError TRKAppendBuffer_ui8(TRKBuffer* buffer, const u8* data, int count) +{ + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKAppendBuffer1_ui8(buffer, data[i]); + } + + return err; +} + +DSError TRKAppendBuffer_ui32(TRKBuffer* buffer, const u32* data, int count) +{ + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKAppendBuffer1_ui32(buffer, data[i]); + } + + return err; +} + +DSError TRKReadBuffer1_ui8(TRKBuffer* buffer, u8* data) +{ + return TRKReadBuffer(buffer, (void*)data, 1); +} + +DSError TRKReadBuffer1_ui16(TRKBuffer* buffer, u16* data) +{ + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == DS_NoError) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[1]; + byteData[1] = bigEndianData[0]; + } + + return err; +} + +DSError TRKReadBuffer1_ui32(TRKBuffer* buffer, u32* data) +{ + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == DS_NoError) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[3]; + byteData[1] = bigEndianData[2]; + byteData[2] = bigEndianData[1]; + byteData[3] = bigEndianData[0]; + } + + return err; +} + +DSError TRKReadBuffer1_ui64(TRKBuffer* buffer, u64* data) +{ + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == 0) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[7]; + byteData[1] = bigEndianData[6]; + byteData[2] = bigEndianData[5]; + byteData[3] = bigEndianData[4]; + byteData[4] = bigEndianData[3]; + byteData[5] = bigEndianData[2]; + byteData[6] = bigEndianData[1]; + byteData[7] = bigEndianData[0]; + } + + return err; +} + +DSError TRKReadBuffer_ui8(TRKBuffer* buffer, u8* data, int count) +{ + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKReadBuffer1_ui8(buffer, &(data[i])); + } + + return err; +} + +DSError TRKReadBuffer_ui32(TRKBuffer* buffer, u32* data, int count) +{ + DSError err; + s32 i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKReadBuffer1_ui32(buffer, &(data[i])); + } + + return err; +} diff --git a/src/TRK_MINNOW_DOLPHIN/msghndlr.c b/src/TRK_MINNOW_DOLPHIN/msghndlr.c new file mode 100644 index 00000000..c8ede7e7 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/msghndlr.c @@ -0,0 +1,724 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +BOOL IsTRKConnected; + +BOOL GetTRKConnected() +{ + return IsTRKConnected; +} + +void SetTRKConnected(BOOL connected) +{ + IsTRKConnected = connected; +} + +static void TRKMessageIntoReply(TRKBuffer* buffer, u8 ackCmd, + DSReplyError errSentInAck) +{ + TRKResetBuffer(buffer, 1); + + TRKAppendBuffer1_ui8(buffer, ackCmd); + TRKAppendBuffer1_ui8(buffer, errSentInAck); +} + +DSError TRKSendACK(TRKBuffer* buffer) +{ + DSError err; + int ackTries; + + ackTries = 3; + do { + err = TRKMessageSend((TRK_Msg*)buffer); + --ackTries; + } while (err != DS_NoError && ackTries > 0); + + return err; +} + +DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID, + DSReplyError replyError) +{ + TRKMessageIntoReply(buffer, commandID, replyError); + return TRKSendACK(buffer); +} + +DSError TRKDoUnsupported(TRKBuffer* buffer) +{ + return TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedCommandError); +} + +DSError TRKDoConnect(TRKBuffer* buffer) +{ + SetTRKConnected(TRUE); + return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); +} + +DSError TRKDoDisconnect(TRKBuffer* buffer) +{ + DSError error = DS_NoError; + TRKEvent event; + SetTRKConnected(FALSE); + + if ((error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError)) + == DS_NoError) { + TRKConstructEvent(&event, 1); + TRKPostEvent(&event); + } + return error; +} + +DSError TRKDoReset(TRKBuffer* buffer) +{ + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + __TRK_reset(); + return DS_NoError; +} + +DSError TRKDoVersions(TRKBuffer* buffer) +{ + DSError error; + DSVersions versions; + + if (buffer->length != 1) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + } else { + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + error = TRKTargetVersions(&versions); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.kernelMajor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.kernelMinor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.protocolMajor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.protocolMinor); + + if (error != DS_NoError) + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); + else + error = TRKSendACK(buffer); + } +} + +DSError TRKDoSupportMask(TRKBuffer* buffer) +{ + DSError error; + u8 mask[32]; + + if (buffer->length != 1) { + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + } else { + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + error = TRKTargetSupportMask(mask); + + if (error == DS_NoError) + error = TRKAppendBuffer(buffer, mask, 32); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, 2); + + if (error != DS_NoError) + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); + else + TRKSendACK(buffer); + } +} + +DSError TRKDoCPUType(TRKBuffer* buffer) +{ + DSError error; + DSCPUType cputype; + + if (buffer->length != 1) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return; + } + + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + error = TRKTargetCPUType(&cputype); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.cpuMajor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.cpuMinor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.bigEndian); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.defaultTypeSize); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.fpTypeSize); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.extended1TypeSize); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.extended2TypeSize); + + if (error != DS_NoError) + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); + else + error = TRKSendACK(buffer); +} + +DSError TRKDoReadMemory(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + u8 tempBuf[0x800]; + u32 msg_start; + u32 length; + u16 msg_length; + u8 msg_command; + u8 msg_options; + + if (buffer->length != 8) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_length); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_start); + + if (msg_options & 2) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedOptionError); + return error; + } + + if (msg_length > 0x800) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + return error; + } + + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error == DS_NoError) { + length = (u32)msg_length; + error = TRKTargetAccessMemory( + tempBuf, msg_start, &length, + (msg_options & 8) ? MEMACCESS_UserMemory : MEMACCESS_DebuggerMemory, + 1); + msg_length = (u16)length; + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, msg_length); + if (error == DS_NoError) + error = TRKAppendBuffer(buffer, tempBuf, length); + } + + if (error != DS_NoError) { + switch (error) { + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidMemory: + replyError = DSREPLY_InvalidMemoryRange; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + break; + } + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } + + return error; +} + +DSError TRKDoWriteMemory(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + u8 tmpBuffer[0x800]; + u32 msg_start; + u32 length; + u16 msg_length; + u8 msg_command; + u8 msg_options; + + if (buffer->length <= 8) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_length); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_start); + + if (msg_options & 2) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedOptionError); + return error; + } + + if ((buffer->length != msg_length + 8) || (msg_length > 0x800)) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + } else { + if (error == DS_NoError) { + length = (u32)msg_length; + error = TRKReadBuffer(buffer, tmpBuffer, length); + if (error == DS_NoError) { + error = TRKTargetAccessMemory(tmpBuffer, msg_start, &length, + (msg_options & 8) + ? MEMACCESS_UserMemory + : MEMACCESS_DebuggerMemory, + FALSE); + } + msg_length = (u16)length; + } + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, msg_length); + + if (error != DS_NoError) { + switch (error) { + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidMemory: + replyError = DSREPLY_InvalidMemoryRange; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + break; + } + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } + } + + return error; +} + +DSError TRKDoReadRegisters(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + DSMessageRegisterOptions options; + u32 registerDataLength; + u16 msg_firstRegister; + u16 msg_lastRegister; + u8 msg_command; + u8 msg_options; + + if (buffer->length != 6) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return; + } + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_firstRegister); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_lastRegister); + + if (msg_firstRegister > msg_lastRegister) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_InvalidRegisterRange); + return; + } + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + options = (DSMessageRegisterOptions)(msg_options & 7); + switch (options) { + case DSREG_Default: + error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, TRUE); + break; + case DSREG_FP: + error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer, + ®isterDataLength, TRUE); + break; + case DSREG_Extended1: + error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, TRUE); + break; + case DSREG_Extended2: + error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, TRUE); + break; + default: + error = DS_UnsupportedError; + break; + } + + if (error != DS_NoError) { + switch (error) { + case DS_UnsupportedError: + replyError = DSREPLY_UnsupportedOptionError; + break; + case DS_InvalidRegister: + replyError = DSREPLY_InvalidRegisterRange; + break; + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } +} + +DSError TRKDoWriteRegisters(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + DSMessageRegisterOptions options; + u32 registerDataLength; + u16 msg_firstRegister; + u16 msg_lastRegister; + u8 msg_command; + u8 msg_options; + + if (buffer->length <= 6) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return; + } + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_firstRegister); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_lastRegister); + + if (msg_firstRegister > msg_lastRegister) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_InvalidRegisterRange); + return; + } + + options = (DSMessageRegisterOptions)msg_options; + switch (options) { + case DSREG_Default: + error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, FALSE); + break; + case DSREG_FP: + error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer, + ®isterDataLength, FALSE); + break; + case DSREG_Extended1: + error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, FALSE); + break; + case DSREG_Extended2: + error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, FALSE); + break; + default: + error = DS_UnsupportedError; + break; + } + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error != DS_NoError) { + switch (error) { + case DS_UnsupportedError: + replyError = DSREPLY_UnsupportedOptionError; + break; + case DS_InvalidRegister: + replyError = DSREPLY_InvalidRegisterRange; + break; + case DS_MessageBufferReadError: + replyError = DSREPLY_PacketSizeError; + break; + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } +} + +DSError TRKDoFlushCache(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyErr; + u32 msg_start; + u32 msg_end; + u8 msg_command; + u8 msg_options; + + if (buffer->length != 10) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_start); + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_end); + + if (msg_start > msg_end) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_InvalidMemoryRange); + return; + } + + if (error == DS_NoError) + error = TRKTargetFlushCache(msg_options, (void*)msg_start, + (void*)msg_end); + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error != DS_NoError) { + switch (error) { + case DS_UnsupportedError: + replyErr = DSREPLY_UnsupportedOptionError; + break; + default: + replyErr = DSREPLY_CWDSError; + break; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyErr); + } else { + error = TRKSendACK(buffer); + } +} + +DSError TRKDoContinue(TRKBuffer* buffer) +{ + DSError error; + + error = TRKTargetStopped(); + if (error == DS_NoError) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped); + return; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + if (error == DS_NoError) + error = TRKTargetContinue(); +} + +DSError TRKDoStep(TRKBuffer* buffer) +{ + DSError error; + u8 msg_command; + u8 msg_options; + u8 msg_count; + u32 msg_rangeStart; + u32 msg_rangeEnd; + u32 pc; + + if (buffer->length < 3) { + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + switch (msg_options) { + case DSSTEP_IntoCount: + case DSSTEP_OverCount: + if (error == DS_NoError) + TRKReadBuffer1_ui8(buffer, &msg_count); + if (msg_count >= 1) { + break; + } + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + return; + case DSSTEP_IntoRange: + case DSSTEP_OverRange: + if (buffer->length != 10) { + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return; + } + + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_rangeStart); + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_rangeEnd); + + pc = TRKTargetGetPC(); + if (pc >= msg_rangeStart && pc <= msg_rangeEnd) { + break; + } + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + return; + default: + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_UnsupportedOptionError); + return; + } + + if (!TRKTargetStopped()) { + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped); + return; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + if (error == DS_NoError) + switch (msg_options) { + case DSSTEP_IntoCount: + case DSSTEP_OverCount: + error = TRKTargetSingleStep(msg_count, + (msg_options == DSSTEP_OverCount)); + break; + case DSSTEP_IntoRange: + case DSSTEP_OverRange: + error = TRKTargetStepOutOfRange( + msg_rangeStart, msg_rangeEnd, + (msg_options == DSSTEP_OverRange)); + break; + } +} + +DSError TRKDoStop(TRKBuffer* b) +{ + DSReplyError replyError; + + switch (TRKTargetStop()) { + case DS_NoError: + replyError = DSREPLY_NoError; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_Error; + break; + } + + return TRKStandardACK(b, DSMSG_ReplyACK, replyError); +} + +DSError TRKDoSetOption(TRKBuffer* buffer) { + DSError error; + u8 spA; + u8 sp9; + u8 sp8; + + spA = 0; + sp9 = 0; + sp8 = 0; + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &spA); + if (error == DS_NoError) { + error = TRKReadBuffer1_ui8(buffer, &sp9); + } + if (error == DS_NoError) { + error = TRKReadBuffer1_ui8(buffer, &sp8); + } + if (error != DS_NoError) { + TRKResetBuffer(buffer, 1); + if (buffer->position < 0x880) { + buffer->data[buffer->position++] = 0x80; + buffer->length++; + } + if (buffer->position < 0x880) { + buffer->data[buffer->position++] = 1; + buffer->length++; + } + TRKSendACK(buffer); + } else if (sp9 == 1) { + SetUseSerialIO(sp8); + } + TRKResetBuffer(buffer, 1); + if (buffer->position < 0x880) { + buffer->data[buffer->position++] = 0x80; + buffer->length++; + } + if (buffer->position < 0x880) { + buffer->data[buffer->position++] = 0; + buffer->length++; + } + return TRKSendACK(buffer); +} diff --git a/src/TRK_MINNOW_DOLPHIN/mslsupp.c b/src/TRK_MINNOW_DOLPHIN/mslsupp.c new file mode 100755 index 00000000..cbcfc85f --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mslsupp.c @@ -0,0 +1,112 @@ +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include + +// forward declares +DSIOResult __read_file(u32 handle, u8* buffer, size_t* count, void* ref_con); +DSIOResult __write_file(u32 handle, u8* buffer, size_t* count, void* ref_con); +DSIOResult __access_file(u32 handle, u8* buffer, size_t* count, void* ref_con, MessageCommandID cmd); + +/** + * @note Address: 0x800C0B4C + * @note Size: 0xBC + */ +DSIOResult __read_console(u32 handle, u8* buffer, size_t* count, void* ref_con) +{ + if (GetUseSerialIO() == 0) { + return DS_IOError; + } + return __read_file(DS_Stdin, buffer, count, ref_con); +} + +/** + * @note Address: 0x800C0A90 + * @note Size: 0xBC + */ +DSIOResult __TRK_write_console(u32 handle, u8* buffer, size_t* count, void* ref_con) +{ + if (GetUseSerialIO() == 0) { + return DS_IOError; + } + return __write_file(DS_Stdout, buffer, count, ref_con); +} + +/** + * @note Address: N/A + * @note Size: 0xB4 + */ +DSIOResult __read_file(u32 handle, u8* buffer, size_t* count, void* ref_con) +{ + return __access_file(handle, buffer, count, ref_con, DSMSG_ReadFile); +} + +/** + * @note Address: N/A + * @note Size: 0xB4 + */ +DSIOResult __write_file(u32 handle, u8* buffer, size_t* count, void* ref_con) +{ + return __access_file(handle, buffer, count, ref_con, DSMSG_WriteFile); +} + +/** + * @note Address: N/A + * @note Size: 0x17C + */ +void __open_file(void) +{ + // UNUSED FUNCTION +} + +/** + * @note Address: N/A + * @note Size: 0xDC + */ +void __position_file(void) +{ + // UNUSED FUNCTION +} + +/** + * @note Address: N/A + * @note Size: 0xE0 + */ +void convertFileMode(void) +{ + // UNUSED FUNCTION +} + +/** + * @note Address: N/A + * @note Size: 0xC0 + */ +DSIOResult __access_file(u32 handle, u8* buffer, size_t* count, void* ref_con, MessageCommandID cmd) +{ + size_t countTemp; + u32 r0; + + if (GetTRKConnected() == DS_NoError) { + return DS_IOError; + } + + countTemp = *count; + r0 = TRKAccessFile(cmd, handle, &countTemp, buffer); + *count = countTemp; + + switch ((u8)r0) { + case DS_IONoError: + return DS_IONoError; + case DS_IOEOF: + return DS_IOEOF; + } + + return DS_IOError; +} + +/** + * @note Address: N/A + * @note Size: 0x1D0 + */ +void __open_temp_file(void) +{ + // UNUSED FUNCTION +} diff --git a/src/TRK_MINNOW_DOLPHIN/mutex_TRK.c b/src/TRK_MINNOW_DOLPHIN/mutex_TRK.c new file mode 100644 index 00000000..37e09501 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mutex_TRK.c @@ -0,0 +1,7 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" + +DSError TRKInitializeMutex(void*) { return DS_NoError; } + +DSError TRKAcquireMutex(void*) { return DS_NoError; } + +DSError TRKReleaseMutex(void*) { return DS_NoError; } diff --git a/src/TRK_MINNOW_DOLPHIN/notify.c b/src/TRK_MINNOW_DOLPHIN/notify.c new file mode 100644 index 00000000..bd41e2f7 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/notify.c @@ -0,0 +1,47 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +inline DSError TRKDoNotifyStopped_Inline(TRKBuffer* msg, MessageCommandID cmd) { + DSError err; + + if (msg->position >= 0x880) { + err = DS_MessageBufferOverflow; + } else { + msg->data[msg->position++] = cmd; + msg->length+=1; + err = 0; + } + return err; +} + +DSError TRKDoNotifyStopped(MessageCommandID cmd) +{ + DSError err; + int reqIdx; + int bufIdx; + TRKBuffer* msg; + + err = TRKGetFreeBuffer(&bufIdx, &msg); + if (err == DS_NoError) { + err = TRKDoNotifyStopped_Inline(msg, cmd); + + if (err == DS_NoError) { + if (cmd == DSMSG_NotifyStopped) { + TRKTargetAddStopInfo(msg); + } else { + TRKTargetAddExceptionInfo(msg); + } + } + + err = TRKRequestSend(msg, &reqIdx, 2, 3, 1); + if (err == DS_NoError) { + TRKReleaseBuffer(reqIdx); + } + TRKReleaseBuffer(bufIdx); + } + + return err; +} diff --git a/src/TRK_MINNOW_DOLPHIN/nubevent.c b/src/TRK_MINNOW_DOLPHIN/nubevent.c new file mode 100644 index 00000000..a35a43cd --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/nubevent.c @@ -0,0 +1,72 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" + +TRKEventQueue gTRKEventQueue; + +DSError TRKInitializeEventQueue() +{ + TRKInitializeMutex(&gTRKEventQueue); + TRKAcquireMutex(&gTRKEventQueue); + gTRKEventQueue.count = 0; + gTRKEventQueue.next = 0; + gTRKEventQueue.eventID = 0x100; + TRKReleaseMutex(&gTRKEventQueue); + return DS_NoError; +} + +void TRKCopyEvent(TRKEvent* dstEvent, const TRKEvent* srcEvent) +{ + TRK_memcpy(dstEvent, srcEvent, sizeof(TRKEvent)); +} + +BOOL TRKGetNextEvent(TRKEvent* event) +{ + BOOL status = 0; + TRKAcquireMutex(&gTRKEventQueue); + if (0 < gTRKEventQueue.count) { + TRKCopyEvent(event, &gTRKEventQueue.events[gTRKEventQueue.next]); + gTRKEventQueue.count--; + gTRKEventQueue.next++; + if (gTRKEventQueue.next == 2) + gTRKEventQueue.next = 0; + + status = 1; + } + TRKReleaseMutex(&gTRKEventQueue); + return status; +} + +DSError TRKPostEvent(TRKEvent* event) +{ + DSError ret = DS_NoError; + int nextEventID; + + TRKAcquireMutex(&gTRKEventQueue); + + if (gTRKEventQueue.count == 2) { + ret = DS_EventQueueFull; + } else { + nextEventID = (gTRKEventQueue.next + gTRKEventQueue.count) % 2; + TRKCopyEvent(&gTRKEventQueue.events[nextEventID], event); + gTRKEventQueue.events[nextEventID].eventID = gTRKEventQueue.eventID; + gTRKEventQueue.eventID++; + if (gTRKEventQueue.eventID < 0x100) + gTRKEventQueue.eventID = 0x100; + + gTRKEventQueue.count++; + } + + TRKReleaseMutex(&gTRKEventQueue); + return ret; +} + +void TRKConstructEvent(TRKEvent* event, NubEventType eventType) +{ + event->eventType = eventType; + event->eventID = 0; + event->msgBufID = -1; +} + +void TRKDestructEvent(TRKEvent* event) { TRKReleaseBuffer(event->msgBufID); } diff --git a/src/TRK_MINNOW_DOLPHIN/nubinit.c b/src/TRK_MINNOW_DOLPHIN/nubinit.c new file mode 100644 index 00000000..fc08e85e --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/nubinit.c @@ -0,0 +1,80 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +BOOL gTRKBigEndian; + +BOOL TRKInitializeEndian(void); + +DSError TRKInitializeNub(void) +{ + DSError ret; + DSError uartErr; + + ret = TRKInitializeEndian(); + + if (ret == DS_NoError) + usr_put_initialize(); + if (ret == DS_NoError) + ret = TRKInitializeEventQueue(); + if (ret == DS_NoError) + ret = TRKInitializeMessageBuffers(); + if (ret == DS_NoError) + ret = TRKInitializeDispatcher(); + + if (ret == DS_NoError) { + uartErr = TRKInitializeIntDrivenUART(0x0000e100, 1, 0, + (volatile u8**)&gTRKInputPendingPtr); + TRKTargetSetInputPendingPtr(gTRKInputPendingPtr); + if (uartErr != DS_NoError) { + ret = uartErr; + } + } + + if (ret == DS_NoError) + ret = TRKInitializeSerialHandler(); + if (ret == DS_NoError) + ret = TRKInitializeTarget(); + + return ret; +} + +DSError TRKTerminateNub(void) +{ + TRKTerminateSerialHandler(); + return DS_NoError; +} + +void TRKNubWelcome(void) +{ + TRK_board_display("MetroTRK for GAMECUBE v0.10"); + return; +} + +BOOL TRKInitializeEndian(void) +{ + u8 bendian[4]; + BOOL result = FALSE; + gTRKBigEndian = TRUE; + + bendian[0] = 0x12; + bendian[1] = 0x34; + bendian[2] = 0x56; + bendian[3] = 0x78; + + if (*(u32*)bendian == 0x12345678) { + gTRKBigEndian = TRUE; + } else if (*(u32*)bendian == 0x78563412) { + gTRKBigEndian = FALSE; + } else { + result = TRUE; + } + return result; +} diff --git a/src/TRK_MINNOW_DOLPHIN/serpoll.c b/src/TRK_MINNOW_DOLPHIN/serpoll.c new file mode 100644 index 00000000..c21fde38 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/serpoll.c @@ -0,0 +1,141 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +static TRKFramingState gTRKFramingState; + +void* gTRKInputPendingPtr; + +static inline BOOL serpoll_inline_00(TRKBuffer* buffer) { + if (buffer->length < 2) { + TRKStandardACK(buffer, DSMSG_ReplyNAK, DSREPLY_PacketSizeError); + if (gTRKFramingState.msgBufID != -1) { + TRKReleaseBuffer(gTRKFramingState.msgBufID); + gTRKFramingState.msgBufID = -1; + } + gTRKFramingState.buffer = NULL; + gTRKFramingState.receiveState = DSRECV_Wait; + return FALSE; + } + buffer->position = 0; + buffer->length--; + return TRUE; +} + +MessageBufferID TRKTestForPacket(void) { + s32 var_r29; + s32 var_r3; + s8 sp8; + s32 temp_r3; + + var_r29 = 0; + var_r3 = TRKReadUARTPoll(&sp8); + while (var_r3 == 0 && var_r29 == 0) { + if (gTRKFramingState.receiveState != DSRECV_InFrame) { + gTRKFramingState.isEscape = FALSE; + } + switch (gTRKFramingState.receiveState) { + case DSRECV_Wait: + if (sp8 == 0x7E) { + var_r29 = TRKGetFreeBuffer(&gTRKFramingState.msgBufID, &gTRKFramingState.buffer); + gTRKFramingState.fcsType = 0; + gTRKFramingState.receiveState = DSRECV_Found; + } + break; + case DSRECV_Found: + if (sp8 == 0x7E) { + break; + } + gTRKFramingState.receiveState = DSRECV_InFrame; + /* fallthrough */ + case DSRECV_InFrame: + if (sp8 == 0x7E) { + if (gTRKFramingState.isEscape) { + TRKStandardACK(gTRKFramingState.buffer, DSMSG_ReplyNAK, DSREPLY_EscapeError); + if (gTRKFramingState.msgBufID != -1) { + TRKReleaseBuffer(gTRKFramingState.msgBufID); + gTRKFramingState.msgBufID = -1; + } + gTRKFramingState.buffer = NULL; + gTRKFramingState.receiveState = DSRECV_Wait; + break; + } + if (serpoll_inline_00(gTRKFramingState.buffer)) { + temp_r3 = gTRKFramingState.msgBufID; + gTRKFramingState.msgBufID = -1; + gTRKFramingState.buffer = NULL; + gTRKFramingState.receiveState = DSRECV_Wait; + return temp_r3; + } + gTRKFramingState.receiveState = DSRECV_Wait; + } else { + if (gTRKFramingState.isEscape) { + sp8 ^= 0x20; + gTRKFramingState.isEscape = FALSE; + } else if (sp8 == 0x7D) { + gTRKFramingState.isEscape = TRUE; + break; + } + var_r29 = TRKAppendBuffer1_ui8(gTRKFramingState.buffer, sp8); + gTRKFramingState.fcsType += sp8; + } + break; + case DSRECV_FrameOverflow: + if (sp8 == 0x7E) { + if (gTRKFramingState.msgBufID != -1) { + TRKReleaseBuffer(gTRKFramingState.msgBufID); + gTRKFramingState.msgBufID = -1; + } + gTRKFramingState.buffer = NULL; + gTRKFramingState.receiveState = DSRECV_Wait; + } + break; + } + var_r3 = TRKReadUARTPoll(&sp8); + } + return -1; +} + +void TRKGetInput(void) +{ + TRKBuffer* msgBuffer; + MessageBufferID id; + u8 command; + + id = TRKTestForPacket(); + if (id == -1) + return; + + msgBuffer = TRKGetBuffer(id); + TRKSetBufferPosition(msgBuffer, 0); + TRKReadBuffer1_ui8(msgBuffer, &command); + if (command < DSMSG_ReplyACK) { + TRKProcessInput(id); + } else { + TRKReleaseBuffer(id); + } +} + +void TRKProcessInput(int bufferIdx) +{ + TRKEvent event; + + TRKConstructEvent(&event, NUBEVENT_Request); + gTRKFramingState.msgBufID = -1; + event.msgBufID = bufferIdx; + TRKPostEvent(&event); +} + +DSError TRKInitializeSerialHandler(void) +{ + gTRKFramingState.msgBufID = -1; + gTRKFramingState.receiveState = DSRECV_Wait; + gTRKFramingState.isEscape = FALSE; + + return DS_NoError; +} + +DSError TRKTerminateSerialHandler(void) { return DS_NoError; } diff --git a/src/TRK_MINNOW_DOLPHIN/support.c b/src/TRK_MINNOW_DOLPHIN/support.c new file mode 100644 index 00000000..3f1e54c1 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/support.c @@ -0,0 +1,288 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "stddef.h" +#include "string.h" + +DSError TRKSuppAccessFile(u32 file_handle, u8* data, size_t* count, + DSIOResult* io_result, BOOL need_reply, BOOL read) +{ + DSError error; + int replyBufferId; + TRKBuffer* replyBuffer; + int bufferId; + TRKBuffer* buffer; + u32 length; + u32 done; + u8 replyIOResult; + u16 replyLength; + BOOL exit; + + if (data == NULL || *count == 0) { + return DS_ParameterError; + } + + exit = FALSE; + *io_result = DS_IONoError; + done = 0; + error = DS_NoError; + while (!exit && done < *count && error == DS_NoError && *io_result == DS_IONoError) { + if (*count - done > 0x800) { + length = 0x800; + } else { + length = *count - done; + } + + error = TRKGetFreeBuffer(&bufferId, &buffer); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, read ? DSMSG_ReadFile + : DSMSG_WriteFile); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui32(buffer, file_handle); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, length); + + if (!read && error == DS_NoError) + error = TRKAppendBuffer_ui8(buffer, data + done, length); + + if (error == DS_NoError) { + if (need_reply) { + replyLength = 0; + replyIOResult = 0; + + error = TRKRequestSend(buffer, &replyBufferId, read ? 5 : 5, 3, + !(read && file_handle == 0)); + if (error == DS_NoError) { + replyBuffer = (TRKBuffer*)TRKGetBuffer(replyBufferId); + TRKSetBufferPosition(replyBuffer, 2); + } + + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(replyBuffer, &replyIOResult); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(replyBuffer, &replyLength); + + if (read && error == DS_NoError) { + if (replyBuffer->length != replyLength + 5) { + replyLength = replyBuffer->length - 5; + if (replyIOResult == 0) + replyIOResult = 1; + } + + if (replyLength <= length) + error = TRKReadBuffer_ui8(replyBuffer, data + done, + replyLength); + } + + if (replyLength != length) { + if ((!read || replyLength >= length) && replyIOResult == 0) + replyIOResult = 1; + length = replyLength; + exit = TRUE; + } + + *io_result = (DSIOResult)replyIOResult; + TRKReleaseBuffer(replyBufferId); + } else { + error = TRKMessageSend((TRK_Msg*)buffer); + } + } + + TRKReleaseBuffer(bufferId); + done += length; + } + + *count = done; + return error; +} + +DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2, int p3) +{ + int error = DS_NoError; + TRKBuffer* buffer; + u32 timer; + int tries; + u8 msg_command; + u8 msg_error; + BOOL badReply = TRUE; + + *bufferId = -1; + + for (tries = p2 + 1; tries != 0 && *bufferId == -1 && error == DS_NoError; + tries--) { + error = TRKMessageSend((TRK_Msg*)msgBuf); + if (error == DS_NoError) { + if (p3) { + timer = 0; + } + + while (TRUE) { + do { + *bufferId = TRKTestForPacket(); + if (*bufferId != -1) + break; + } while (!p3 || ++timer < 79999980); + + if (*bufferId == -1) + break; + + badReply = FALSE; + + buffer = TRKGetBuffer(*bufferId); + TRKSetBufferPosition(buffer, 0); + + if ((error = TRKReadBuffer1_ui8(buffer, &msg_command)) + != DS_NoError) + break; + + if (msg_command >= DSMSG_ReplyACK) + break; + + TRKProcessInput(*bufferId); + *bufferId = -1; + } + + if (*bufferId != -1) { + if (buffer->length < p1) { + badReply = TRUE; + } + if (error == DS_NoError && !badReply) { + error = TRKReadBuffer1_ui8(buffer, &msg_error); + } + if (error == DS_NoError && !badReply) { + if (msg_command != DSMSG_ReplyACK + || msg_error != DSREPLY_NoError) { + badReply = TRUE; + } + } + if (error != DS_NoError || badReply) { + TRKReleaseBuffer(*bufferId); + *bufferId = -1; + } + } + } + } + + if (*bufferId == -1) { + error = DS_Error800; + } + + return error; +} + +DSError HandleOpenFileSupportRequest(const char* path, u8 replyError, u32* param_3, u8* ioResult) { + int sp10; + int spC; + TRKBuffer* sp8; + TRKBuffer* var_r31; + DSError var_r26; + + *param_3 = 0; + var_r26 = TRKGetFreeBuffer(&spC, &sp8); + if (var_r26 == DS_NoError) { + var_r26 = TRKAppendBuffer1_ui8(sp8, 0xD2); + } + if (var_r26 == DS_NoError) { + var_r26 = TRKAppendBuffer1_ui8(sp8, replyError); + } + if (var_r26 == DS_NoError) { + var_r26 = TRKAppendBuffer1_ui16(sp8, strlen(path) + 1); + } + if (var_r26 == DS_NoError) { + var_r26 = TRKAppendBuffer_ui8(sp8, (u8*) path, strlen(path) + 1); + } + if (var_r26 == DS_NoError) { + *ioResult = 0; + var_r26 = TRKRequestSend(sp8, &sp10, 7, 3, 0); + if (var_r26 == DS_NoError) { + var_r31 = TRKGetBuffer(sp10); + TRKSetBufferPosition(var_r31, 2); + } + if (var_r26 == DS_NoError) { + var_r26 = TRKReadBuffer1_ui8(var_r31, ioResult); + } + if (var_r26 == DS_NoError) { + var_r26 = TRKReadBuffer1_ui32(var_r31, param_3); + } + TRKReleaseBuffer(sp10); + } + TRKReleaseBuffer(spC); + return var_r26; +} + +DSError HandleCloseFileSupportRequest(int replyError, u8* ioResult) { + int sp10; + int spC; + DSError var_r31; + TRKBuffer* sp8; + TRKBuffer* var_r30; + + var_r31 = TRKGetFreeBuffer(&spC, &sp8); + if (var_r31 == DS_NoError) { + var_r31 = TRKAppendBuffer1_ui8(sp8, 0xD3); + } + if (var_r31 == DS_NoError) { + var_r31 = TRKAppendBuffer1_ui32(sp8, replyError); + } + if (var_r31 == DS_NoError) { + *ioResult = DS_IONoError; + var_r31 = TRKRequestSend(sp8, &sp10, 3, 3, 0); + if (var_r31 == DS_NoError) { + var_r30 = TRKGetBuffer(sp10); + TRKSetBufferPosition(var_r30, 2); + } + if (var_r31 == DS_NoError) { + var_r31 = TRKReadBuffer1_ui8(var_r30, ioResult); + } + TRKReleaseBuffer(sp10); + } + TRKReleaseBuffer(spC); + return var_r31; +} + +DSError HandlePositionFileSupportRequest(u32 replyErr, u32* param_2, u8 param_3, u8* ioResult) { + int sp10; + int spC; + TRKBuffer* sp8; + TRKBuffer* var_r31; + DSError var_r27; + + var_r27 = TRKGetFreeBuffer(&spC, &sp8); + if (var_r27 == DS_NoError) { + var_r27 = TRKAppendBuffer1_ui8(sp8, 0xD4); + } + if (var_r27 == DS_NoError) { + var_r27 = TRKAppendBuffer1_ui32(sp8, replyErr); + } + if (var_r27 == DS_NoError) { + var_r27 = TRKAppendBuffer1_ui32(sp8, *param_2); + } + if (var_r27 == DS_NoError) { + var_r27 = TRKAppendBuffer1_ui8(sp8, param_3); + } + if (var_r27 == DS_NoError) { + *ioResult = DS_IONoError; + var_r27 = TRKRequestSend(sp8, &sp10, 3, 3, 0); + if (var_r27 == DS_NoError) { + var_r31 = TRKGetBuffer(sp10); + TRKSetBufferPosition(var_r31, 2); + } + if (var_r27 == DS_NoError) { + var_r27 = TRKReadBuffer1_ui8(var_r31, ioResult); + } + if (var_r27 == DS_NoError) { + var_r27 = TRKReadBuffer1_ui32(var_r31, param_2); + } else { + *param_2 = -1; + } + TRKReleaseBuffer(sp10); + } + TRKReleaseBuffer(spC); + return var_r27; +} diff --git a/src/TRK_MINNOW_DOLPHIN/targcont.c b/src/TRK_MINNOW_DOLPHIN/targcont.c new file mode 100644 index 00000000..1827ae1a --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/targcont.c @@ -0,0 +1,12 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +DSError TRKTargetContinue(void) +{ + TRKTargetSetStopped(0); + UnreserveEXI2Port(); + TRKSwapAndGo(); + ReserveEXI2Port(); + return 0; +} diff --git a/src/TRK_MINNOW_DOLPHIN/target_options.c b/src/TRK_MINNOW_DOLPHIN/target_options.c new file mode 100755 index 00000000..22cc3e98 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/target_options.c @@ -0,0 +1,11 @@ +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +static u8 bUseSerialIO; + +void SetUseSerialIO(u8 sio) { + bUseSerialIO = sio; +} + +u8 GetUseSerialIO(void) { + return bUseSerialIO; +} diff --git a/src/TRK_MINNOW_DOLPHIN/targimpl.c b/src/TRK_MINNOW_DOLPHIN/targimpl.c new file mode 100644 index 00000000..ba77ff35 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/targimpl.c @@ -0,0 +1,1202 @@ +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h" +#include "stddef.h" +#include "string.h" + +typedef struct memRange { + u8* start; + u8* end; + BOOL readable; + BOOL writeable; +} memRange; + +const memRange gTRKMemMap[1] = { { (u8*)0, (u8*)-1, TRUE, TRUE } }; + +typedef struct StopInfo_PPC { + u32 PC; + u32 PCInstruction; + u16 exceptionID; +} StopInfo_PPC; + +typedef struct TRKExceptionStatus { + StopInfo_PPC exceptionInfo; + u8 inTRK; + u8 exceptionDetected; +} TRKExceptionStatus; + +typedef struct TRKStepStatus { + BOOL active; // 0x0 + DSMessageStepOptions type; // 0x4 + u32 count; // 0x8 + u32 rangeStart; // 0xC + u32 rangeEnd; // 0x10 +} TRKStepStatus; + +ProcessorRestoreFlags_PPC gTRKRestoreFlags = { FALSE, FALSE }; + +static TRKExceptionStatus gTRKExceptionStatus = { { 0, 0, 0 }, TRUE, 0 }; + +static TRKStepStatus gTRKStepStatus = { FALSE, DSSTEP_IntoCount, 0, 0 }; + +static u16 TRK_saved_exceptionID = 0; +ProcessorState_PPC gTRKCPUState; +TRKState gTRKState; + +typedef unsigned char u128[16]; +u128 TRKvalue128_temp; + +Default_PPC gTRKSaveState; + +// Instruction macros +#define INSTR_NOP 0x60000000 +#define INSTR_BLR 0x4E800020 +#define INSTR_PSQ_ST(psr, offset, rDest, w, gqr) \ + (0xF0000000 | (psr << 21) | (rDest << 16) | (w << 15) | (gqr << 12) \ + | offset) +#define INSTR_PSQ_L(psr, offset, rSrc, w, gqr) \ + (0xE0000000 | (psr << 21) | (rSrc << 16) | (w << 15) | (gqr << 12) | offset) +#define INSTR_STW(rSrc, offset, rDest) \ + (0x90000000 | (rSrc << 21) | (rDest << 16) | offset) +#define INSTR_LWZ(rDest, offset, rSrc) \ + (0x80000000 | (rDest << 21) | (rSrc << 16) | offset) +#define INSTR_STFD(fprSrc, offset, rDest) \ + (0xD8000000 | (fprSrc << 21) | (rDest << 16) | offset) +#define INSTR_LFD(fprDest, offset, rSrc) \ + (0xC8000000 | (fprDest << 21) | (rSrc << 16) | offset) +#define INSTR_MFSPR(rDest, spr) \ + (0x7C000000 | (rDest << 21) | ((spr & 0xFE0) << 6) | ((spr & 0x1F) << 16) \ + | 0x2A6) +#define INSTR_MTSPR(spr, rSrc) \ + (0x7C000000 | (rSrc << 21) | ((spr & 0xFE0) << 6) | ((spr & 0x1F) << 16) \ + | 0x3A6) + +#define DSFetch_u32(_p_) (*((u32*)_p_)) +#define DSFetch_u64(_p_) (*((u64*)_p_)) + +DSError TRKPPCAccessSPR(void* value, u32 spr_register_num, BOOL read); +DSError TRKPPCAccessPairedSingleRegister(void* srcDestPtr, u32 psr, BOOL read); +DSError TRKPPCAccessFPRegister(void* srcDestPtr, u32 fpr, BOOL read); +DSError TRKPPCAccessSpecialReg(void* value, u32* access_func, BOOL read); +static void TRKExceptionHandler(u16); +void TRKInterruptHandlerEnableInterrupts(void); +void WriteFPSCR(register f64*); +void ReadFPSCR(register f64*); +void __TRK_set_MSR(u32 msr); +u32 __TRK_get_MSR(); +static void TRK_ppc_memcpy(register void* dest, register const void* src, + register int n, register u32 param_4, + register u32 param_5); + +void TRKRestoreExtended1Block(); +void TRKUARTInterruptHandler(); +DSError TRKTargetReadInstruction(void* data, u32 start); + +static BOOL TRKTargetCheckStep(); + +asm u32 __TRK_get_MSR() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + mfmsr r3 + blr +#endif // clang-format on +} + +asm void __TRK_set_MSR(register u32 msr) { +#ifdef __MWERKS__ // clang-format off + nofralloc + mtmsr msr + blr +#endif // clang-format on +} + +#pragma dont_inline on +DSError TRKValidMemory32(const void* addr, size_t length, + ValidMemoryOptions readWriteable) +{ + DSError err = DS_InvalidMemory; /* assume range is invalid */ + + const u8* start; + const u8* end; + + s32 i; + + /* + ** Get start and end addresses for the memory range and + ** verify that they are reasonable. + */ + + start = (const u8*)addr; + end = ((const u8*)addr + (length - 1)); + + if (end < start) + return DS_InvalidMemory; + + /* + ** Iterate through the gTRKMemMap array to determine if the requested + ** range falls within the valid ranges in the map. + */ + + for (i = 0; (i < (s32)(sizeof(gTRKMemMap) / sizeof(memRange))); i++) { + /* + ** If the requested range is not completely above + ** the valid range AND it is not completely below + ** the valid range then it must overlap somewhere. + ** If the requested range overlaps with one of the + ** valid ranges, do some additional checking. + ** + */ + + if ((start <= (const u8*)gTRKMemMap[i].end) + && (end >= (const u8*)gTRKMemMap[i].start)) { + /* + ** First, verify that the read/write attributes are + ** acceptable. If so, then recursively check any + ** part of the requested range that falls before or + ** after the valid range. + */ + + if (((readWriteable == VALIDMEM_Readable) + && !gTRKMemMap[i].readable) + || ((readWriteable == VALIDMEM_Writeable) + && !gTRKMemMap[i].writeable)) { + err = DS_InvalidMemory; + } else { + err = DS_NoError; + + /* + ** If a portion of the requested range falls before + ** the current valid range, then recursively + ** check it. + */ + + if (start < (const u8*)gTRKMemMap[i].start) + err = TRKValidMemory32( + start, (u32)((const u8*)gTRKMemMap[i].start - start), + readWriteable); + + /* + ** If a portion of the requested range falls after + ** the current valid range, then recursively + ** check it. + ** Note: Only do this step if the previous check + ** did not detect invalid access. + */ + + if ((err == DS_NoError) && (end > (const u8*)gTRKMemMap[i].end)) + err = TRKValidMemory32( + (const u8*)gTRKMemMap[i].end, + (u32)(end - (const u8*)gTRKMemMap[i].end), + readWriteable); + } + + break; + } + } + + return err; +} +#pragma dont_inline reset + +static asm void TRK_ppc_memcpy(register void* dest, register const void* src, + register int n, register u32 param_4, + register u32 param_5) { +#ifdef __MWERKS__ // clang-format off +#define msr r8 +#define byte r9 +#define count r10 + nofralloc + + mfmsr msr + li count, 0 + +top_loop: + cmpw count, n + beq out_loop + + mtmsr param_5 + sync + + lbzx byte, count, src + + mtmsr param_4 + sync + + stbx byte, count, dest + + addi count, count, 1 + + b top_loop +out_loop: + mtmsr msr + sync + + blr +#undef count +#undef byte +#undef msr +#endif // clang-format on +} + +#pragma dont_inline on +DSError TRKTargetAccessMemory(void* data, u32 start, size_t* length, + MemoryAccessOptions accessOptions, BOOL read) +{ + DSError error; + u32 target_msr; + void* addr; + u32 trk_msr; + TRKExceptionStatus tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + addr = (void*)TRKTargetTranslate(start); + error = TRKValidMemory32(addr, *length, + read ? VALIDMEM_Readable : VALIDMEM_Writeable); + + if (error != DS_NoError) { + *length = 0; + } else { + target_msr = __TRK_get_MSR(); + trk_msr = target_msr | gTRKCPUState.Extended1.MSR & 0x10; + + if (read) { + TRK_ppc_memcpy(data, addr, *length, target_msr, trk_msr); + } else { + TRK_ppc_memcpy(addr, data, *length, trk_msr, target_msr); + TRK_flush_cache(addr, *length); + if ((void*)start != addr) { + TRK_flush_cache((void*)start, *length); + } + } + } + + if (gTRKExceptionStatus.exceptionDetected) { + *length = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} +#pragma dont_inline reset + +DSError TRKTargetReadInstruction(void* data, u32 start) +{ + DSError error; + size_t registersLength = 4; + + error = TRKTargetAccessMemory(data, start, ®istersLength, + MEMACCESS_UserMemory, TRUE); + + if (error == DS_NoError && registersLength != 4) { + error = DS_InvalidMemory; + } + + return error; +} + +DSError TRKTargetAccessDefault(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read) +{ + DSError error; + u32 count; + u32* data; + TRKExceptionStatus tempExceptionStatus; + + if (lastRegister > 0x24) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + + gTRKExceptionStatus.exceptionDetected = FALSE; + + data = gTRKCPUState.Default.GPR + firstRegister; + + count = (lastRegister - firstRegister) + 1; + + *registersLengthPtr = count * sizeof(u32); + + if (read) { + error = TRKAppendBuffer_ui32(b, data, count); + } else { + error = TRKReadBuffer_ui32(b, data, count); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetAccessFP(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read) +{ + u64 temp; + DSError error; + TRKExceptionStatus tempExceptionStatus; + u32 current; + + if (lastRegister > 0x21) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + __TRK_set_MSR(__TRK_get_MSR() | 0x2000); + + *registersLengthPtr = 0; + error = DS_NoError; + + for (current = firstRegister; + (current <= lastRegister) && (error == DS_NoError); + current++, *registersLengthPtr += sizeof(f64)) { + if (read) { + TRKPPCAccessFPRegister(&temp, current, read); + error = TRKAppendBuffer1_ui64(b, temp); + } else { + TRKReadBuffer1_ui64(b, &temp); + error = TRKPPCAccessFPRegister(&temp, current, read); + } + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetAccessExtended1(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read) +{ + TRKExceptionStatus tempExceptionStatus; + int error; + u32* data; + int count; + + if (lastRegister > 0x60) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + *registersLengthPtr = 0; + + if (firstRegister <= lastRegister) { + data = (u32*)&gTRKCPUState.Extended1 + firstRegister; + count = lastRegister - firstRegister + 1; + *registersLengthPtr += count * sizeof(u32); + + if (read) { + error = TRKAppendBuffer_ui32(b, data, count); + } else { + if (data <= &gTRKCPUState.Extended1.TBU + && (data + count - 1) >= &gTRKCPUState.Extended1.TBL) { + gTRKRestoreFlags.TBR = 1; + } + + if (data <= &gTRKCPUState.Extended1.DEC + && (data + count - 1) >= &gTRKCPUState.Extended1.DEC) { + gTRKRestoreFlags.DEC = 1; + } + error = TRKReadBuffer_ui32(b, data, count); + } + } + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetAccessExtended2(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registerStorageSize, + BOOL read) +{ + TRKExceptionStatus savedException; + u32 i; + u32 value_buf0[1]; + u32 value_buf[2]; + DSError err; + u32 access_func[10]; + + if (lastRegister > 0x1f) + return DS_InvalidRegister; + + /* + ** Save any existing exception status and clear the exception flag. + ** This allows detection of exceptions that occur ONLY within this + ** function. + */ + + savedException = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + TRKPPCAccessSPR(value_buf0, SPR_HID2, TRUE); + + value_buf0[0] |= 0xA0000000; + TRKPPCAccessSPR(value_buf0, SPR_HID2, FALSE); + + value_buf0[0] = 0; + TRKPPCAccessSPR(value_buf0, SPR_GQR0, FALSE); + + *registerStorageSize = 0; + err = DS_NoError; + + for (i = firstRegister; (i <= lastRegister) && (err == DS_NoError); i++) { + if (read) { + err = TRKPPCAccessPairedSingleRegister((u64*)value_buf, i, read); + err = TRKAppendBuffer1_ui64(b, *(u64*)value_buf); + } else { + err = TRKReadBuffer1_ui64(b, (u64*)value_buf); + err = TRKPPCAccessPairedSingleRegister((u64*)value_buf, i, read); + } + + *registerStorageSize += sizeof(u64); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registerStorageSize = 0; + err = DS_CWDSException; + } + + gTRKExceptionStatus = savedException; + + return err; +} + +DSError TRKTargetVersions(DSVersions* versions) +{ + versions->kernelMajor = 0; + versions->kernelMinor = 10; + versions->protocolMajor = 1; + versions->protocolMinor = 10; + return DS_NoError; +} + +DSError TRKTargetSupportMask(u8 mask[32]) +{ + mask[0] = 0x7a; + mask[1] = 0; + mask[2] = 0x4f; + mask[3] = 7; + mask[4] = 0; + mask[5] = 0; + mask[6] = 0; + mask[7] = 0; + mask[8] = 0; + mask[9] = 0; + mask[10] = 0; + mask[0xb] = 0; + mask[0xc] = 0; + mask[0xd] = 0; + mask[0xe] = 0; + mask[0xf] = 0; + mask[0x10] = 1; + mask[0x11] = 0; + mask[0x12] = 3; + mask[0x13] = 0; + mask[0x14] = 0; + mask[0x15] = 0; + mask[0x16] = 0; + mask[0x17] = 0; + mask[0x18] = 0; + mask[0x19] = 0; + mask[0x1a] = 3; + mask[0x1b] = 0; + mask[0x1c] = 0; + mask[0x1d] = 0; + mask[0x1e] = 0; + mask[0x1f] = 0x80; + return DS_NoError; +} + +extern BOOL gTRKBigEndian; + +DSError TRKTargetCPUType(DSCPUType* cpuType) +{ + cpuType->cpuMajor = 0; + cpuType->cpuMinor = TRKTargetCPUMinorType(); + cpuType->bigEndian = gTRKBigEndian; + cpuType->defaultTypeSize = 4; + cpuType->fpTypeSize = 8; + cpuType->extended1TypeSize = 4; + cpuType->extended2TypeSize = 8; + return DS_NoError; +} + +asm void TRKInterruptHandler() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + mtsrr0 r2 + mtsrr1 r4 + mfsprg r4, 3 + mfcr r2 + mtsprg 3, r2 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.MSR(r2) + ori r2, r2, 0x8002 + xori r2, r2, 0x8002 + sync + mtmsr r2 + sync + lis r2, TRK_saved_exceptionID@h + ori r2, r2, TRK_saved_exceptionID@l + sth r3, 0(r2) + cmpwi r3, 0x500 + bne L_802CF694 + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + mflr r3 + stw r3, ProcessorState_PPC.transport_handler_saved_ra(r2) + bl TRKUARTInterruptHandler + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + lwz r3, ProcessorState_PPC.transport_handler_saved_ra(r2) + mtlr r3 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.inputPendingPtr(r2) + lbz r2, TRKState_PPC.GPR[0](r2) + cmpwi r2, 0 + beq L_802CF678 + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + lbz r2, TRKExceptionStatus.inTRK(r2) + cmpwi r2, 1 + beq L_802CF678 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + li r3, 1 + stb r3, TRKState_PPC.inputActivated(r2) + b L_802CF694 +L_802CF678: + lis r2, gTRKSaveState@h + ori r2, r2, gTRKSaveState@l + lwz r3, Default_PPC.CR(r2) + mtcrf 0xff, r3 + lwz r3, Default_PPC.GPR[3](r2) + lwz r2, Default_PPC.GPR[2](r2) + rfi +L_802CF694: + lis r2, TRK_saved_exceptionID@h + ori r2, r2, TRK_saved_exceptionID@l + lhz r3, 0(r2) + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + lbz r2, TRKExceptionStatus.inTRK(r2) + cmpwi r2, 0 + bne TRKExceptionHandler + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + stw r0, ProcessorState_PPC.Default.GPR[0](r2) + stw r1, ProcessorState_PPC.Default.GPR[1](r2) + mfsprg r0, 1 + stw r0, ProcessorState_PPC.Default.GPR[2](r2) + sth r3, ProcessorState_PPC.Extended1.exceptionID(r2) + sth r3, (ProcessorState_PPC.Extended1.exceptionID + 2)(r2) + mfsprg r0, 2 + stw r0, ProcessorState_PPC.Default.GPR[3](r2) + stmw r4, ProcessorState_PPC.Default.GPR[4](r2) + mfsrr0 r27 + mflr r28 + mfsprg r29, 3 + mfctr r30 + mfxer r31 + stmw r27, ProcessorState_PPC.Default.PC(r2) + bl TRKSaveExtended1Block + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 1 + stb r3, TRKExceptionStatus.inTRK(r2) + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r0, TRKState_PPC.MSR(r2) + sync + mtmsr r0 + sync + lwz r0, TRKState_PPC.LR(r2) + mtlr r0 + lwz r0, TRKState_PPC.CTR(r2) + mtctr r0 + lwz r0, TRKState_PPC.XER(r2) + mtxer r0 + lwz r0, TRKState_PPC.DSISR(r2) + mtdsisr r0 + lwz r0, TRKState_PPC.DAR(r2) + mtdar r0 + lmw r3, TRKState_PPC.GPR[3](r2) + lwz r0, TRKState_PPC.GPR[0](r2) + lwz r1, TRKState_PPC.GPR[1](r2) + lwz r2, TRKState_PPC.GPR[2](r2) + b TRKPostInterruptEvent +#endif // clang-format on +} + +static asm void TRKExceptionHandler(u16) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + sth r3, TRKExceptionStatus.exceptionInfo.exceptionID(r2) + mfsrr0 r3 + stw r3, TRKExceptionStatus.exceptionInfo.PC(r2) + lhz r3, TRKExceptionStatus.exceptionInfo.exceptionID(r2) + cmpwi r3, 0x200 + beq LAB_00010ba4 + cmpwi r3, 0x300 + beq LAB_00010ba4 + cmpwi r3, 0x400 + beq LAB_00010ba4 + cmpwi r3, 0x600 + beq LAB_00010ba4 + cmpwi r3, 0x700 + beq LAB_00010ba4 + cmpwi r3, 0x800 + beq LAB_00010ba4 + cmpwi r3, 0x1000 + beq LAB_00010ba4 + cmpwi r3, 0x1100 + beq LAB_00010ba4 + cmpwi r3, 0x1200 + beq LAB_00010ba4 + cmpwi r3, 0x1300 + beq LAB_00010ba4 + b LAB_00010bb0 +LAB_00010ba4: + mfsrr0 r3 + addi r3, r3, 0x4 + mtsrr0 r3 +LAB_00010bb0: + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 0x1 + stb r3, TRKExceptionStatus.exceptionDetected(r2) + mfsprg r3, 3 + mtcrf 0xff, r3 + mfsprg r2, 1 + mfsprg r3, 2 + rfi +#endif // clang-format on +} + +void TRKPostInterruptEvent(void) +{ + NubEventType eventType; + u32 inst; + TRKEvent event; + + if (gTRKState.inputActivated) { + gTRKState.inputActivated = FALSE; + } else { + switch (gTRKCPUState.Extended1.exceptionID & 0xFFFF) { + case 0xd00: + case 0x700: + TRKTargetReadInstruction(&inst, gTRKCPUState.Default.PC); + + if (inst == 0xfe00000) { + eventType = NUBEVENT_Support; + } else { + eventType = NUBEVENT_Breakpoint; + } + break; + default: + eventType = NUBEVENT_Exception; + break; + } + + TRKConstructEvent(&event, eventType); + TRKPostEvent(&event); + } +} + +asm void TRKSwapAndGo() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r3, gTRKState@h + ori r3, r3, gTRKState@l + stmw r0, TRKState_PPC.GPR[0](r3) + mfmsr r0 + stw r0, TRKState_PPC.MSR(r3) + mflr r0 + stw r0, TRKState_PPC.LR(r3) + mfctr r0 + stw r0, TRKState_PPC.CTR(r3) + mfxer r0 + stw r0, TRKState_PPC.XER(r3) + mfdsisr r0 + stw r0, TRKState_PPC.DSISR(r3) + mfdar r0 + stw r0, TRKState_PPC.DAR(r3) + li r1, -0x7ffe + nor r1, r1, r1 + mfmsr r3 + and r3, r3, r1 + mtmsr r3 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.inputPendingPtr(r2) + lbz r2, TRKState_PPC.GPR[0](r2) + cmpwi r2, 0 + beq L_802CF930 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + li r3, 1 + stb r3, TRKState_PPC.inputActivated(r2) + b TRKInterruptHandlerEnableInterrupts +L_802CF930: + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 0 + stb r3, 0xc(r2) + bl TRKRestoreExtended1Block + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + lmw r27, ProcessorState_PPC.Default.PC(r2) + mtsrr0 r27 + mtlr r28 + mtcrf 0xff, r29 + mtctr r30 + mtxer r31 + lmw r3, ProcessorState_PPC.Default.GPR[3](r2) + lwz r0, ProcessorState_PPC.Default.GPR[0](r2) + lwz r1, ProcessorState_PPC.Default.GPR[1](r2) + lwz r2, ProcessorState_PPC.Default.GPR[2](r2) + rfi +#endif // clang-format on +} + +asm void TRKInterruptHandlerEnableInterrupts(void) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc; + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r0, TRKState_PPC.MSR(r2) + sync + mtmsr r0 + sync + lwz r0, TRKState_PPC.LR(r2) + mtlr r0 + lwz r0, TRKState_PPC.CTR(r2) + mtctr r0 + lwz r0, TRKState_PPC.XER(r2) + mtxer r0 + lwz r0, TRKState_PPC.DSISR(r2) + mtdsisr r0 + lwz r0, TRKState_PPC.DAR(r2) + mtdar r0 + lmw r3, TRKState_PPC.GPR[3](r2) + lwz r0, TRKState_PPC.GPR[0](r2) + lwz r1, TRKState_PPC.GPR[1](r2) + lwz r2, TRKState_PPC.GPR[2](r2) + b TRKPostInterruptEvent +#endif // clang-format on +} + +DSError TRKTargetInterrupt(TRKEvent* event) +{ + DSError error = DS_NoError; + switch (event->eventType) { + case NUBEVENT_Breakpoint: + case NUBEVENT_Exception: + if (TRKTargetCheckStep() == FALSE) { + TRKTargetSetStopped(TRUE); + error = TRKDoNotifyStopped(DSMSG_NotifyStopped); + } + break; + default: + break; + } + + return error; +} + +DSError TRKTargetAddStopInfo(TRKBuffer* buffer) +{ + DSError error; + u32 instruction; + s32 i; + + error = TRKAppendBuffer1_ui32(buffer, gTRKCPUState.Default.PC); + if (error == DS_NoError) { + error = TRKTargetReadInstruction(&instruction, gTRKCPUState.Default.PC); + } + if (error == DS_NoError) + error = TRKAppendBuffer1_ui32(buffer, instruction); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, gTRKCPUState.Extended1.exceptionID); + + if (error == DS_NoError) { + for (i = 0; i < 32; i++) { + error = TRKAppendBuffer1_ui32(buffer, (u16) gTRKCPUState.Default.GPR[i]); + } + for (i = 0; i < 32; i++) { + error = TRKAppendBuffer1_ui64(buffer, (u16) gTRKCPUState.Float.FPR[i]); + } + } + + return error; +} + +DSError TRKTargetAddExceptionInfo(TRKBuffer* buffer) +{ + DSError error; + u32 local_10; + + error = TRKAppendBuffer1_ui32(buffer, gTRKExceptionStatus.exceptionInfo.PC); + if (error == 0) { + error = TRKTargetReadInstruction(&local_10, + gTRKExceptionStatus.exceptionInfo.PC); + } + if (error == 0) { + error = TRKAppendBuffer1_ui32(buffer, local_10); + } + if (error == 0) { + error = TRKAppendBuffer1_ui16( + buffer, gTRKExceptionStatus.exceptionInfo.exceptionID); + } + + return error; +} + +static DSError TRKTargetEnableTrace(BOOL val) +{ + if (val) { + gTRKCPUState.Extended1.MSR = (gTRKCPUState.Extended1.MSR | 0x400); + } else { + gTRKCPUState.Extended1.MSR = (gTRKCPUState.Extended1.MSR & ~0x400); + } + return DS_NoError; +} + +static BOOL TRKTargetStepDone() +{ + BOOL result = TRUE; + + if (gTRKStepStatus.active + && ((u16)gTRKCPUState.Extended1.exceptionID) == PPC_Trace) { + switch (gTRKStepStatus.type) { + case DSSTEP_IntoCount: + if (gTRKStepStatus.count > 0) { + result = FALSE; + } + break; + case DSSTEP_IntoRange: + if (gTRKCPUState.Default.PC >= gTRKStepStatus.rangeStart + && gTRKCPUState.Default.PC <= gTRKStepStatus.rangeEnd) { + result = FALSE; + } + break; + default: + break; + } + } + + return result; +} + +static DSError TRKTargetDoStep() +{ + gTRKStepStatus.active = TRUE; + TRKTargetEnableTrace(TRUE); + + if (gTRKStepStatus.type == DSSTEP_IntoCount + || gTRKStepStatus.type == DSSTEP_OverCount) { + gTRKStepStatus.count--; + } + + TRKTargetSetStopped(FALSE); + return DS_NoError; +} + +static BOOL TRKTargetCheckStep() +{ + if (gTRKStepStatus.active) { + TRKTargetEnableTrace(FALSE); + + if (TRKTargetStepDone()) { + gTRKStepStatus.active = FALSE; + } else { + TRKTargetDoStep(); + } + } + + return gTRKStepStatus.active; +} + +DSError TRKTargetSingleStep(u32 count, BOOL stepOver) +{ + DSError error = DS_NoError; + + if (stepOver) { + error = DS_UnsupportedError; + } else { + gTRKStepStatus.type = DSSTEP_IntoCount; + gTRKStepStatus.count = count; + error = TRKTargetDoStep(); + } + + return error; +} + +DSError TRKTargetStepOutOfRange(u32 rangeStart, u32 rangeEnd, BOOL stepOver) +{ + DSError error = DS_NoError; + + if (stepOver) { + // Stepping over isn't supported for PowerPC + error = DS_UnsupportedError; + } else { + gTRKStepStatus.type = DSSTEP_IntoRange; + // gTRKStepStatus.active = TRUE; + gTRKStepStatus.rangeStart = rangeStart; + gTRKStepStatus.rangeEnd = rangeEnd; + error = TRKTargetDoStep(); + } + + return error; +} + +u32 TRKTargetGetPC() { return gTRKCPUState.Default.PC; } + +DSError TRKTargetSupportRequest(void) { + DSError error; + u32 spC; + size_t* length; + MessageCommandID commandId; + TRKEvent event; + u8 ioResult; + + commandId = (u8) gTRKCPUState.Default.GPR[3]; + if (commandId != DSMSG_ReadFile && commandId != DSMSG_WriteFile && commandId != DSMSG_OpenFile && commandId != DSMSG_CloseFile && commandId != DSMSG_PositionFile) { + TRKConstructEvent(&event, NUBEVENT_Exception); + TRKPostEvent(&event); + return DS_NoError; + } + if (commandId == DSMSG_OpenFile) { + error = HandleOpenFileSupportRequest((char*) gTRKCPUState.Default.GPR[4], gTRKCPUState.Default.GPR[5], (u32*) gTRKCPUState.Default.GPR[6], &ioResult); + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + gTRKCPUState.Default.GPR[3] = ioResult; + } else if (commandId == DSMSG_CloseFile) { + error = HandleCloseFileSupportRequest(gTRKCPUState.Default.GPR[4], &ioResult); + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + gTRKCPUState.Default.GPR[3] = ioResult; + } else if (commandId == DSMSG_PositionFile) { + spC = *((u32*) gTRKCPUState.Default.GPR[5]); + error = HandlePositionFileSupportRequest(gTRKCPUState.Default.GPR[4], &spC, gTRKCPUState.Default.GPR[6], &ioResult); + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + gTRKCPUState.Default.GPR[3] = ioResult; + *((u32*) gTRKCPUState.Default.GPR[5]) = spC; + } else { + length = (size_t*) gTRKCPUState.Default.GPR[5]; + error = TRKSuppAccessFile((u8) gTRKCPUState.Default.GPR[4], (u8*) gTRKCPUState.Default.GPR[6], length, (DSIOResult*) &ioResult, TRUE, commandId == DSMSG_ReadFile); + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + gTRKCPUState.Default.GPR[3] = ioResult; + if (commandId == DSMSG_ReadFile) { + TRK_flush_cache((void*) gTRKCPUState.Default.GPR[6], *length); + } + } + gTRKCPUState.Default.PC += 4; + return error; +} + +DSError TRKTargetFlushCache(u8, void* start, void* end) +{ + if (start < end) { + TRK_flush_cache(start, (u8*)end - (u8*)start); + return DS_NoError; + } + + return DS_InvalidMemory; +} + +BOOL TRKTargetStopped() { return gTRKState.isStopped; } + +void TRKTargetSetStopped(unsigned int stopped) +{ + gTRKState.isStopped = stopped; +} + +u32 TRKTargetStop() +{ + TRKTargetSetStopped(1); + return 0; +} + +DSError TRKPPCAccessSPR(void* value, u32 spr_register_num, BOOL read) +{ + /* Initialize instruction array with nop */ + + u32 access_func[10] = { + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP + }; + /* + ** Construct a small assembly function to perform the + ** requested access and call it. The read/write function + ** is in the form: + ** + ** read: + ** mfspr r4, spr_register_num + ** stw r4, 0(r3) + ** blr + ** + ** write: + ** lwz r4, 0(r3) + ** mtspr spr_register_num, r4 + ** blr + ** + */ + + if (read) { + access_func[0] = INSTR_MFSPR(4, spr_register_num); + access_func[1] = (u32)INSTR_STW(4, 0, 3); + } else { + access_func[0] = (u32)INSTR_LWZ(4, 0, 3); + access_func[1] = INSTR_MTSPR(spr_register_num, 4); + } + + return TRKPPCAccessSpecialReg(value, access_func, read); +} + +DSError TRKPPCAccessPairedSingleRegister(void* srcDestPtr, u32 psr, BOOL read) +{ + // all nop by default + u32 instructionData[] = { + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP + }; + + if (read) { + instructionData[0] + = INSTR_PSQ_ST(psr, 0, 3, 0, 0); // psq_st psr, 0(r3), 0, 0 + } else { + instructionData[0] + = INSTR_PSQ_L(psr, 0, 3, 0, 0); // psq_l psr, 0(r3), 0, 0 + } + + return TRKPPCAccessSpecialReg(srcDestPtr, instructionData, read); +} + +#pragma dont_inline on +DSError TRKPPCAccessFPRegister(void* srcDestPtr, u32 fpr, BOOL read) +{ + DSError error = DS_NoError; + // all nop by default + u32 instructionData1[] = { + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, + INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP + }; + + if (fpr < 0x20) { + if (read) { + instructionData1[0] = INSTR_STFD(fpr, 0, 3); // stfd fpr, 0(r3) + } else { + instructionData1[0] = INSTR_LFD(fpr, 0, 3); // lfd fpr, 0(r3) + } + + error = TRKPPCAccessSpecialReg(srcDestPtr, instructionData1, read); + } else if (fpr == 0x20) { + *(u64*)srcDestPtr &= 0xFFFFFFFF; + } else if (fpr == 0x21) { + if (!read) { + *(u32*)srcDestPtr = *((u32*)(srcDestPtr) + 1); + } + error = TRKPPCAccessSPR(srcDestPtr, 1022, read); + if (read) { + DSFetch_u64(srcDestPtr) = DSFetch_u32(srcDestPtr) & 0xffffffffLL; + } + } + + return error; +} +#pragma dont_inline reset + +#define DEBUG_VECTORREG_ACCESS 0 + +DSError TRKPPCAccessSpecialReg(void* value, u32* access_func, BOOL read) +{ + typedef void (*asm_access_type)(void*, void*); + + asm_access_type asm_access; + + /* + ** Construct a small assembly function to perform the + ** requested access and call it. The read/write function + ** is in the form: + ** + ** + ** blr + */ + + /* + ** Put blr instruction at the end of access function (it should be + ** a 5-instruction array w/the last one empty). + */ + + access_func[9] = INSTR_BLR; + + /* + ** Now that the instruction array is built, get a function pointer to it. + */ + + asm_access = (asm_access_type)access_func; + +#if DEBUG_VECTORREG_ACCESS + + __puts("\r\nasm_access: "); + __puthex8((u32)asm_access); + __puts(" access_func: "); + __puthex8((u32)access_func); + + for (i = 0; i < 10; i++) { + __puts("\r\ninst["); + __puthex2(i); + __puts("]: "); + __puthex8(access_func[i]); + __puts(" ; "); + __puthex8(*((u32*)asm_access + i)); + } + + __puts("\r\n"); + +#endif + + // Flush cache + TRK_flush_cache((void*)(u32)access_func, (sizeof(access_func) * 10)); + (*asm_access)((u32*)value, (void*)&TRKvalue128_temp); + + return DS_NoError; +} + +void TRKTargetSetInputPendingPtr(void* ptr) { gTRKState.inputPendingPtr = ptr; } diff --git a/src/TRK_MINNOW_DOLPHIN/targsupp.s b/src/TRK_MINNOW_DOLPHIN/targsupp.s new file mode 100644 index 00000000..0244131b --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/targsupp.s @@ -0,0 +1,25 @@ +.include "macros.inc" +.file "targsupp.s" + +.text +.balign 16 + +.fn TRKAccessFile, global + twui r0, 0x0 + blr +.endfn TRKAccessFile + +.fn TRKOpenFile, global + twui r0, 0x0 + blr +.endfn TRKOpenFile + +.fn TRKCloseFile, global + twui r0, 0x0 + blr +.endfn TRKCloseFile + +.fn TRKPositionFile, global + twui r0, 0x0 + blr +.endfn TRKPositionFile diff --git a/src/TRK_MINNOW_DOLPHIN/usr_put.c b/src/TRK_MINNOW_DOLPHIN/usr_put.c new file mode 100644 index 00000000..7ba2dc21 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/usr_put.c @@ -0,0 +1,26 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +BOOL usr_puts_serial(const char* msg) +{ + BOOL connect_ = FALSE; + char c; + char buf[2]; + + while (!connect_ && (c = *msg++) != '\0') { + BOOL connect = GetTRKConnected(); + + buf[0] = c; + buf[1] = '\0'; + + SetTRKConnected(FALSE); + OSReport(buf); + + SetTRKConnected(connect); + connect_ = FALSE; + } + return connect_; +} + +void usr_put_initialize(void) { } diff --git a/src/amcstubs/AmcExi2Stubs.c b/src/amcstubs/AmcExi2Stubs.c new file mode 100644 index 00000000..f3aa9d3f --- /dev/null +++ b/src/amcstubs/AmcExi2Stubs.c @@ -0,0 +1,40 @@ +#include + +// EXI error codes +typedef enum { AMC_EXI_NO_ERROR = 0, AMC_EXI_UNSELECTED } AmcExiError; + +int AMC_IsStub(); +void EXI2_Unreserve(); +void EXI2_Reserve(); +AmcExiError EXI2_WriteN(); +AmcExiError EXI2_ReadN(); +int EXI2_Poll(); +void EXI2_EnableInterrupts(); +void EXI2_Init(); + +int AMC_IsStub() +{ + return 1; +} + +void EXI2_Unreserve() { } + +void EXI2_Reserve() { } + +AmcExiError EXI2_WriteN() +{ + return AMC_EXI_NO_ERROR; +} + +AmcExiError EXI2_ReadN() +{ + return AMC_EXI_NO_ERROR; +} + +int EXI2_Poll() +{ + return 0; +} + +void EXI2_EnableInterrupts() { } +void EXI2_Init() { } diff --git a/src/dolphin/PPCArch.c b/src/dolphin/PPCArch.c new file mode 100644 index 00000000..8004ab3d --- /dev/null +++ b/src/dolphin/PPCArch.c @@ -0,0 +1,565 @@ +#include "types.h" +#include "asm_types.h" + +/* clang-format off */ + +union FpscrUnion +{ + f64 f; + struct + { + u32 fpscr_pad; + u32 fpscr; + } u; +}; + +#define HID0_SPD 0x00000200 // Speculative cache access enable (0 enable) + +void PPCMthid0 ( u32 newHID0 ); + +/* + * --INFO-- + * Address: 8036F7D4 + * Size: 000008 + */ +asm u32 PPCMfmsr (void) +{ + nofralloc + mfmsr r3 + blr +} + +/* + * --INFO-- + * Address: 8036F7DC + * Size: 000008 + */ +asm void PPCMtmsr (register u32 newMSR) +{ + nofralloc + mtmsr newMSR + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 00000C + */ +void PPCOrMsr(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: ........ + * Size: 00000C + */ +void PPCAndMsr(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: ........ + * Size: 00000C + */ +void PPCAndCMsr(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: 8036F7E4 + * Size: 000008 + */ +asm u32 PPCMfhid0 (void) +{ + nofralloc + mfspr r3, HID0 + blr +} + +/* + * --INFO-- + * Address: 8036F7EC + * Size: 000008 + */ +asm void PPCMthid0 (register u32 newHID0) +{ + nofralloc + mtspr HID0, newHID0 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +void PPCMfhid1(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: 8036F7F4 + * Size: 000008 + */ +asm u32 PPCMfl2cr (void) +{ + nofralloc + mfspr r3, L2CR + blr +} + +/* + * --INFO-- + * Address: 8036F7FC + * Size: 000008 + */ +asm void PPCMtl2cr (register u32 newL2cr) +{ + nofralloc + mtspr L2CR, newL2cr + blr +} + +/* + * --INFO-- + * Address: 8036F804 + * Size: 000008 + */ +__declspec ( weak ) asm void PPCMtdec ( register u32 newDec ) +{ + nofralloc + mtdec newDec + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +void PPCMfdec(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: 8036F80C + * Size: 000008 + */ +asm void PPCSync (void) +{ + nofralloc + sc + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000034 + */ +asm void PPCEieio(void) { + nofralloc + mfmsr r5 + rlwinm r6, r5, 0, 0x11, 0xf + mtmsr r6 + mfspr r3, hid0 + ori r4, r3, 8 + mtspr hid0, r4 + isync + eieio + isync + + mtspr hid0, r3 + mtmsr r5 + isync + + blr +} + +/* + * --INFO-- + * Address: 8036F814 + * Size: 000014 + */ +__declspec ( weak ) asm void PPCHalt (void) //spins infinitely +{ + nofralloc + + sync + +_spin: + nop + li r3, 0 + nop + b _spin + + // NEVER REACHED +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfmmcr0(void) +{ + nofralloc + mfspr r3, MMCR0 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + * UNUSED + */ +asm void PPCMtmmcr0 (register u32 newMmcr0) +{ + nofralloc + mtspr MMCR0, newMmcr0 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfmmcr1(void) +{ + nofralloc + mfspr r3, MMCR1 + blr} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + * UNUSED + */ +asm void PPCMtmmcr1 (register u32 newMmcr1) +{ + nofralloc + mtspr MMCR1, newMmcr1 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfpmc1(void) +{ + nofralloc + mfspr r3, PMC1 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + * UNUSED + */ +asm void PPCMtpmc1 (register u32 newPmc1) +{ + nofralloc + mtspr PMC1, newPmc1 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfpmc2(void) +{ + nofralloc + mfspr r3, PMC2 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + * UNUSED + */ +asm void PPCMtpmc2 (register u32 newPmc2) +{ + nofralloc + mtspr PMC2, newPmc2 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfpmc3(void) +{ + nofralloc + mfspr r3, PMC2 + blr} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + * UNUSED + */ +asm void PPCMtpmc3 (register u32 newPmc3) +{ + nofralloc + mtspr PMC3, newPmc3 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfpmc4(void) +{ + nofralloc + mfspr r3, PMC4 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + * UNUSED + */ +asm void PPCMtpmc4 (register u32 newPmc4) +{ + nofralloc + mtspr PMC4, newPmc4 + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfsia(void) +{ + nofralloc + mfspr r3, SIA + blr} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMtsia(register u32 newSia) +{ + nofralloc + mtspr SIA, newSia + blr +} + +/* + * --INFO-- + * Address: 8036F828 + * Size: 000020 + */ +u32 PPCMffpscr(void) +{ + union FpscrUnion m; + + + asm + { + mffs fp31 + stfd fp31, m.f; + } + + return m.u.fpscr; +} + +/* + * --INFO-- + * Address: 8036F848 + * Size: 000028 + */ +void PPCMtfpscr(register u32 newFPSCR) +{ + union FpscrUnion m; + + asm + { + li r4, 0 + stw r4, m.u.fpscr_pad; + stw newFPSCR, m.u.fpscr + lfd fp31, m.f + mtfsf 0xff, fp31 + } +} + +/* + * --INFO-- + * Address: 8036F870 + * Size: 000008 + */ +asm u32 PPCMfhid2 ( void ) +{ + nofralloc + mfspr r3, HID2 + blr +} + +/* + * --INFO-- + * Address: 8036F878 + * Size: 000008 + */ +asm void PPCMthid2 ( register u32 newhid2 ) +{ + nofralloc + mtspr HID2, newhid2 + blr +} + +/* + * --INFO-- + * Address: 8036F880 + * Size: 00000C + */ +asm u32 PPCMfwpar(void) +{ + nofralloc + sync + mfspr r3, WPAR + blr +} + +/* + * --INFO-- + * Address: 8036F88C + * Size: 000008 + */ +asm void PPCMtwpar ( register u32 newwpar ) +{ + nofralloc + mtspr WPAR, newwpar + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfdmaU(void) +{ + nofralloc + mfspr r3, DMA_U + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +asm void PPCMfdmaL(void) +{ + nofralloc + mfspr r3, DMA_L + blr +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +void PPCMtdmaU(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +void PPCMtdmaL(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: ........ + * Size: 000008 + */ +void PPCMfpvr(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: ........ + * Size: 000028 + */ +void PPCEnableSpeculation(void) +{ + // UNUSED FUNCTION +} + +/* + * --INFO-- + * Address: 8036F894 + * Size: 000028 + */ +void PPCDisableSpeculation (void) +{ + PPCMthid0(PPCMfhid0() | HID0_SPD); +} + +/* + * --INFO-- + * Address: 8036F8BC + * Size: 000008 + */ +asm void PPCSetFpIEEEMode(void) +{ + nofralloc + mtfsb0 4*7+1 + blr +} +/* + * --INFO-- + * Address: 8036F8C4 + * Size: 000008 + */ +asm void PPCSetFpNonIEEEMode (void) +{ + nofralloc + mtfsb1 4*7+1 + blr +} + +/* clang-format on */ diff --git a/src/dolphin/ai.c b/src/dolphin/ai.c new file mode 100644 index 00000000..e9fa77bd --- /dev/null +++ b/src/dolphin/ai.c @@ -0,0 +1,362 @@ +#include "dolphin/ai.h" +#include "dolphin/hw_regs.h" +#include "dolphin/os.h" + +const char *__AIVersion = "<< Dolphin SDK - AI\trelease build: Sep 5 2002 05:34:25 (0x2301) >>"; + +static AISCallback __AIS_Callback = NULL; +static AIDCallback __AID_Callback = NULL; +static u8 *__CallbackStack; +static u8 *__OldStack; +static volatile s32 __AI_init_flag = FALSE; +static volatile s32 __AID_Active = FALSE; + +static OSTime bound_32KHz; +static OSTime bound_48KHz; +static OSTime min_wait; +static OSTime max_wait; +static OSTime buffer; + +void __AISHandler(s16 interrupt, OSContext *context); +void __AIDHandler(s16 interrupt, OSContext *context); +void __AICallbackStackSwitch(register AIDCallback cb); +void __AI_SRC_INIT(void); + +AIDCallback AIRegisterDMACallback(AIDCallback callback) +{ + s32 oldInts; + AIDCallback ret; + + ret = __AID_Callback; + oldInts = OSDisableInterrupts(); + __AID_Callback = callback; + OSRestoreInterrupts(oldInts); + return ret; +} + +void AIInitDMA(u32 addr, u32 length) +{ + s32 oldInts; + oldInts = OSDisableInterrupts(); + __DSPRegs[24] = (u16)((__DSPRegs[24] & ~0x3FF) | (addr >> 16)); + __DSPRegs[25] = (u16)((__DSPRegs[25] & ~0xFFE0) | (0xffff & addr)); + __DSPRegs[27] = (u16)((__DSPRegs[27] & ~0x7FFF) | (u16)((length >> 5) & 0xFFFF)); + OSRestoreInterrupts(oldInts); +} + +void AIStartDMA() +{ + __DSPRegs[27] |= 0x8000; +} + +void AIStopDMA(void) +{ + __DSPRegs[27] &= ~0x8000; +} + +u32 AIGetDMAStartAddr(void) +{ + return (u32)((__DSPRegs[24] & 0x03ff) << 16) | (__DSPRegs[25] & 0xffe0); +} + +AISCallback AIRegisterStreamCallback(AISCallback callback) +{ + AISCallback ret; + s32 oldInts; + + ret = __AIS_Callback; + oldInts = OSDisableInterrupts(); + __AIS_Callback = callback; + OSRestoreInterrupts(oldInts); + return ret; +} + +void AIResetStreamSampleCount(void) +{ + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; +} + +void AISetStreamTrigger(u32 trigger) +{ + __AIRegs[3] = trigger; +} + +void AISetStreamPlayState(u32 state) +{ + s32 oldInts; + u8 volRight; + u8 volLeft; + + if (state == AIGetStreamPlayState()) { + return; + } + if ((AIGetStreamSampleRate() == 0U) && (state == 1)) { + volRight = AIGetStreamVolRight(); + volLeft = AIGetStreamVolLeft(); + AISetStreamVolRight(0); + AISetStreamVolLeft(0); + oldInts = OSDisableInterrupts(); + __AI_SRC_INIT(); + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] = (__AIRegs[0] & ~1) | 1; + OSRestoreInterrupts(oldInts); + AISetStreamVolLeft(volRight); + AISetStreamVolRight(volLeft); + } + else { + __AIRegs[0] = (__AIRegs[0] & ~1) | state; + } +} + +u32 AIGetStreamPlayState() +{ + return __AIRegs[0] & 1; +} + +void AISetDSPSampleRate(u32 rate) +{ + u32 state; + s32 oldInts; + u8 left; + u8 right; + u32 sampleRate; + + if (rate == AIGetDSPSampleRate()) { + return; + } + + __AIRegs[0] &= ~0x40; + if (rate == 0) { + left = AIGetStreamVolLeft(); + right = AIGetStreamVolRight(); + state = AIGetStreamPlayState(); + sampleRate = AIGetStreamSampleRate(); + AISetStreamVolLeft(0); + AISetStreamVolRight(0); + oldInts = OSDisableInterrupts(); + __AI_SRC_INIT(); + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] = (__AIRegs[0] & ~2) | (sampleRate * 2); + __AIRegs[0] = (__AIRegs[0] & ~1) | state; + __AIRegs[0] |= 0x40; + OSRestoreInterrupts(oldInts); + AISetStreamVolLeft(left); + AISetStreamVolRight(right); + } +} + +u32 AIGetDSPSampleRate() +{ + return ((__AIRegs[0] >> 6) & 1) ^ 1; +} + +void __AI_set_stream_sample_rate(u32 rate) +{ + s32 oldInts; + s32 state; + u8 left; + u8 right; + s32 temp_r26; + + if (rate == AIGetStreamSampleRate()) { + return; + } + state = AIGetStreamPlayState(); + left = AIGetStreamVolLeft(); + right = AIGetStreamVolRight(); + AISetStreamVolRight(0); + AISetStreamVolLeft(0); + temp_r26 = __AIRegs[0] & 0x40; + __AIRegs[0] &= ~0x40; + oldInts = OSDisableInterrupts(); + __AI_SRC_INIT(); + __AIRegs[0] |= temp_r26; + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] = (__AIRegs[0] & ~2) | (rate * 2); + OSRestoreInterrupts(oldInts); + AISetStreamPlayState(state); + AISetStreamVolLeft(left); + AISetStreamVolRight(right); +} + +u32 AIGetStreamSampleRate() +{ + return (__AIRegs[0] >> 1) & 1; +} + +void AISetStreamVolLeft(u8 volume) +{ + __AIRegs[1] = (__AIRegs[1] & ~0xFF) | (volume & 0xFF); +} + +u8 AIGetStreamVolLeft() +{ + return __AIRegs[1]; +} + +void AISetStreamVolRight(u8 volume) +{ + __AIRegs[1] = (__AIRegs[1] & ~0xFF00) | ((volume & 0xFF) << 8); +} + +u8 AIGetStreamVolRight() +{ + return __AIRegs[1] >> 8; +} + +void AIInit(u8 *stack) +{ + if (__AI_init_flag == TRUE) { + return; + } + + bound_32KHz = OSNanosecondsToTicks(31524); + bound_48KHz = OSNanosecondsToTicks(42024); + min_wait = OSNanosecondsToTicks(42000); + max_wait = OSNanosecondsToTicks(63000); + buffer = OSNanosecondsToTicks(3000); + + AISetStreamVolRight(0); + AISetStreamVolLeft(0); + AISetStreamTrigger(0); + AIResetStreamSampleCount(); + __AI_set_stream_sample_rate(1); + AISetDSPSampleRate(0); + __AIS_Callback = 0; + __AID_Callback = 0; + __CallbackStack = stack; + __OSSetInterruptHandler(5, __AIDHandler); + __OSUnmaskInterrupts(0x04000000); + __OSSetInterruptHandler(8, __AISHandler); + __OSUnmaskInterrupts(0x800000); + __AI_init_flag = TRUE; +} + +void __AISHandler(s16 interrupt, OSContext *context) +{ + OSContext tmpContext; + __AIRegs[0] |= 8; + OSClearContext(&tmpContext); + OSSetCurrentContext(&tmpContext); + if (__AIS_Callback != NULL) { + __AIS_Callback(__AIRegs[2]); + } + OSClearContext(&tmpContext); + OSSetCurrentContext(context); +} + +void __AIDHandler(s16 interrupt, OSContext *context) +{ + OSContext tempContext; + u16 temp = __DSPRegs[5]; + __DSPRegs[5] = (temp & ~0xA0) | 8; + OSClearContext(&tempContext); + OSSetCurrentContext(&tempContext); + if (__AID_Callback) { + if (__CallbackStack) { + __AICallbackStackSwitch(__AID_Callback); + } + else { + __AID_Callback(); + } + } + + OSClearContext(&tempContext); + OSSetCurrentContext(context); +} + +// clang-format off +asm void __AICallbackStackSwitch(register AIDCallback cb) { + // Allocate stack frame + fralloc + + // Store current stack + lis r5, __OldStack@ha + addi r5, r5, __OldStack@l + stw r1, 0(r5) + + // Load stack for callback + lis r5, __CallbackStack@ha + addi r5, r5, __CallbackStack@l + lwz r1,0(r5) + + // Move stack down 8 bytes + subi r1, r1, 8 + // Call callback + mtlr cb + blrl + + // Restore old stack + lis r5, __OldStack @ha + addi r5, r5, __OldStack@l + lwz r1,0(r5) + + // Free stack frame + frfree + + blr +} +// clang-format on + +void __AI_SRC_INIT(void) +{ + OSTime rise32 = 0; + OSTime rise48 = 0; + OSTime diff = 0; + OSTime unused1 = 0; + OSTime temp = 0; + u32 temp0 = 0; + u32 temp1 = 0; + u32 done = 0; + u32 walking = 0; + u32 unused2 = 0; + u32 initCnt = 0; + + walking = 0; + initCnt = 0; + temp = 0; + + while (!done) { + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] &= ~2; + __AIRegs[0] = (__AIRegs[0] & ~1) | 1; + + temp0 = __AIRegs[2]; + + while (temp0 == __AIRegs[2]) + ; + rise32 = OSGetTime(); + + __AIRegs[0] = (__AIRegs[0] & ~2) | 2; + __AIRegs[0] = (__AIRegs[0] & ~1) | 1; + + temp1 = __AIRegs[2]; + while (temp1 == __AIRegs[2]) + ; + + rise48 = OSGetTime(); + + diff = rise48 - rise32; + __AIRegs[0] &= ~2; + __AIRegs[0] &= ~1; + + if (diff < (bound_32KHz - buffer)) { + temp = min_wait; + done = 1; + ++initCnt; + } + else if (diff >= (bound_32KHz + buffer) && diff < (bound_48KHz - buffer)) { + temp = max_wait; + done = 1; + ++initCnt; + } + else { + done = 0; + walking = 1; + ++initCnt; + } + } + + while ((rise48 + temp) > OSGetTime()) + ; +} diff --git a/src/dolphin/ar/ar.c b/src/dolphin/ar/ar.c new file mode 100644 index 00000000..94954318 --- /dev/null +++ b/src/dolphin/ar/ar.c @@ -0,0 +1,343 @@ +#include "dolphin/ar.h" + +#include "dolphin/hw_regs.h" +#include "dolphin/os.h" +#include "dolphin/os/OSCache.h" + +static ARCallback __AR_Callback; +static u32 __AR_Size; +static u32 __AR_InternalSize; +static u32 __AR_ExpansionSize; + +static u32 __AR_StackPointer; +static u32 __AR_FreeBlocks; +static u32 *__AR_BlockLength; + +static volatile BOOL __AR_init_flag = FALSE; + +static void __ARHandler(__OSInterrupt interrupt, OSContext *context); +static void __ARChecksize(void); +static void __ARClearArea(u32 start_addr, u32 length); + +// TODO import defines for magic numbers from other repos + +ARCallback ARRegisterDMACallback(ARCallback callback) +{ + ARCallback oldCb; + BOOL enabled; + oldCb = __AR_Callback; + enabled = OSDisableInterrupts(); + __AR_Callback = callback; + OSRestoreInterrupts(enabled); + return oldCb; +} + +u32 ARGetDMAStatus() +{ + BOOL enabled; + u32 val; + enabled = OSDisableInterrupts(); + val = __DSPRegs[5] & 0x0200; + OSRestoreInterrupts(enabled); + return val; +} + +void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + + __DSPRegs[16] = (u16)(__DSPRegs[16] & ~0x3ff) | (u16)(mainmem_addr >> 16); + __DSPRegs[17] = (u16)(__DSPRegs[17] & ~0xffe0) | (u16)(mainmem_addr & 0xffff); + __DSPRegs[18] = (u16)(__DSPRegs[18] & ~0x3ff) | (u16)(aram_addr >> 16); + __DSPRegs[19] = (u16)(__DSPRegs[19] & ~0xffe0) | (u16)(aram_addr & 0xffff); + __DSPRegs[20] = (u16)((__DSPRegs[20] & ~0x8000) | (type << 15)); + __DSPRegs[20] = (u16)(__DSPRegs[20] & ~0x3ff) | (u16)(length >> 16); + __DSPRegs[21] = (u16)(__DSPRegs[21] & ~0xffe0) | (u16)(length & 0xffff); + OSRestoreInterrupts(enabled); +} + +u32 ARAlloc(u32 length) +{ + u32 tmp; + BOOL enabled; + + enabled = OSDisableInterrupts(); + tmp = __AR_StackPointer; + __AR_StackPointer += length; + *__AR_BlockLength = length; + __AR_BlockLength++; + __AR_FreeBlocks--; + OSRestoreInterrupts(enabled); + + return tmp; +} + +u32 ARFree(u32 *length) +{ + BOOL old; + + old = OSDisableInterrupts(); + + __AR_BlockLength--; + + if (length) { + *length = *__AR_BlockLength; + } + + __AR_StackPointer -= *__AR_BlockLength; + + __AR_FreeBlocks++; + + OSRestoreInterrupts(old); + + return __AR_StackPointer; +} + +BOOL ARCheckInit() +{ + return __AR_init_flag; +} + +u32 ARInit(u32 *stack_index_addr, u32 num_entries) +{ + + BOOL old; + u16 refresh; + + if (__AR_init_flag == TRUE) { + return 0x4000; + } + + old = OSDisableInterrupts(); + + __AR_Callback = NULL; + + __OSSetInterruptHandler(__OS_INTERRUPT_DSP_ARAM, __ARHandler); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_DSP_ARAM); + + __AR_StackPointer = 0x4000; + __AR_FreeBlocks = num_entries; + __AR_BlockLength = stack_index_addr; + + refresh = (u16)(__DSPRegs[13] & 0x000000ff); + + __DSPRegs[13] = (u16)((__DSPRegs[13] & ~0x000000ff) | (refresh & 0x000000ff)); + + __ARChecksize(); + + __AR_init_flag = TRUE; + + OSRestoreInterrupts(old); + + return __AR_StackPointer; +} + +void ARSetSize(void) { } + +u32 ARGetBaseAddress(void) +{ + return 0x4000; +} + +u32 ARGetSize() +{ + return __AR_Size; +} + +static void __ARHandler(__OSInterrupt interrupt, OSContext *context) +{ + + OSContext exceptionContext; + u16 tmp; + + tmp = __DSPRegs[5]; + tmp = (u16)((tmp & ~0x00000088) | 0x20); + __DSPRegs[5] = tmp; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + if (__AR_Callback) { + (*__AR_Callback)(); + } + + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); +} + +#define RoundUP32(x) (((u32)(x) + 32 - 1) & ~(32 - 1)) + +void __ARClearInterrupt(void) +{ + + u16 tmp; + tmp = __DSPRegs[5]; + tmp = (u16)((tmp & ~(0x00000080 | 0x00000008)) | 0x00000020); + __DSPRegs[5] = tmp; +} +u16 __ARGetInterruptStatus(void) +{ + return ((u16)(__DSPRegs[5] & 0x0200)); +} + +static void __ARWaitForDMA(void) +{ + + while (__DSPRegs[5] & 0x0200) { } +} + +static void __ARWriteDMA(u32 mmem_addr, u32 aram_addr, u32 length) +{ + + __DSPRegs[16] = (u16)((__DSPRegs[16] & ~0x03ff) | (u16)(mmem_addr >> 16)); + __DSPRegs[16 + 1] = (u16)((__DSPRegs[16 + 1] & ~0xffe0) | (u16)(mmem_addr & 0xffff)); + + __DSPRegs[18] = (u16)((__DSPRegs[18] & ~0x03ff) | (u16)(aram_addr >> 16)); + __DSPRegs[18 + 1] = (u16)((__DSPRegs[18 + 1] & ~0xffe0) | (u16)(aram_addr & 0xffff)); + + __DSPRegs[20] = (u16)(__DSPRegs[20] & ~0x8000); + + __DSPRegs[20] = (u16)((__DSPRegs[20] & ~0x03ff) | (u16)(length >> 16)); + __DSPRegs[20 + 1] = (u16)((__DSPRegs[20 + 1] & ~0xffe0) | (u16)(length & 0xffff)); + + __ARWaitForDMA(); + + __ARClearInterrupt(); +} + +static void __ARReadDMA(u32 mmem_addr, u32 aram_addr, u32 length) +{ + + __DSPRegs[16] = (u16)((__DSPRegs[16] & ~0x03ff) | (u16)(mmem_addr >> 16)); + __DSPRegs[16 + 1] = (u16)((__DSPRegs[16 + 1] & ~0xffe0) | (u16)(mmem_addr & 0xffff)); + + __DSPRegs[18] = (u16)((__DSPRegs[18] & ~0x03ff) | (u16)(aram_addr >> 16)); + __DSPRegs[18 + 1] = (u16)((__DSPRegs[18 + 1] & ~0xffe0) | (u16)(aram_addr & 0xffff)); + + __DSPRegs[20] = (u16)(__DSPRegs[20] | 0x8000); + + __DSPRegs[20] = (u16)((__DSPRegs[20] & ~0x03ff) | (u16)(length >> 16)); + __DSPRegs[20 + 1] = (u16)((__DSPRegs[20 + 1] & ~0xffe0) | (u16)(length & 0xffff)); + + __ARWaitForDMA(); + + __ARClearInterrupt(); +} + +void __ARChecksize(void) +{ + u8 test_data_pad[0x20 + 31]; + u8 dummy_data_pad[0x20 + 31]; + u8 buffer_pad[0x20 + 31]; + + u32 *test_data; + u32 *dummy_data; + u32 *buffer; + + u16 ARAM_mode; + u32 ARAM_size; + + u32 i; + + while (!(__DSPRegs[11] & 1)) + ; + + ARAM_mode = 3; + ARAM_size = __AR_InternalSize = 0x1000000; + __DSPRegs[9] = (u16)((__DSPRegs[9] & ~(0x00000007 | 0x00000038)) | 0x20 | 2 | 1); + + test_data = (u32 *)(RoundUP32((u32)(test_data_pad))); + dummy_data = (u32 *)(RoundUP32((u32)(dummy_data_pad))); + buffer = (u32 *)(RoundUP32((u32)(buffer_pad))); + + for (i = 0; i < 8; i++) { + *(test_data + i) = 0xdeadbeef; + *(dummy_data + i) = 0xbad0bad0; + } + + DCFlushRange((void *)test_data, 0x20); + DCFlushRange((void *)dummy_data, 0x20); + + __AR_ExpansionSize = 0; + + __ARWriteDMA((u32)dummy_data, ARAM_size, 0x20U); + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x200000, 0x20U); + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x01000000, 0x20U); + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x200, 0x20U); + __ARWriteDMA((u32)dummy_data, ARAM_size + 0x400000, 0x20U); + + memset((void *)buffer, 0, 0x20); + DCFlushRange((void *)buffer, 0x20); + + __ARWriteDMA((u32)test_data, ARAM_size + 0x0000000, 0x20); + + DCInvalidateRange((void *)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x0000000, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + memset((void *)buffer, 0, 0x20); + DCFlushRange((void *)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x0200000, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + ARAM_mode |= 0 << 1; + ARAM_size += 0x0200000; + __AR_ExpansionSize = 0x0200000; + } + else { + memset((void *)buffer, 0, 0x20); + DCFlushRange((void *)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x1000000, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + ARAM_mode |= 4 << 1; + ARAM_size += 0x0400000; + __AR_ExpansionSize = 0x0400000; + } + else { + memset((void *)buffer, 0, 0x20); + DCFlushRange((void *)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x0000200, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + ARAM_mode |= 8 << 1; + ARAM_size += 0x800000; + __AR_ExpansionSize = 0x0800000; + } + else { + memset((void *)buffer, 0, 0x20); + DCFlushRange((void *)buffer, 0x20); + + __ARReadDMA((u32)buffer, ARAM_size + 0x0400000, 0x20); + PPCSync(); + + if (buffer[0] == test_data[0]) { + ARAM_mode |= 12 << 1; + ARAM_size += 0x1000000; + __AR_ExpansionSize = 0x1000000; + } + else { + ARAM_mode |= 16 << 1; + ARAM_size += 0x2000000; + __AR_ExpansionSize = 0x2000000; + } + } + } + } + __DSPRegs[9] = (u16)((__DSPRegs[9] & ~(0x07 | 0x38)) | ARAM_mode); + } + + *(u32 *)OSPhysicalToUncached(0x00D0) = ARAM_size; + + __AR_Size = ARAM_size; +} diff --git a/src/dolphin/ar/arq.c b/src/dolphin/ar/arq.c new file mode 100644 index 00000000..a0537463 --- /dev/null +++ b/src/dolphin/ar/arq.c @@ -0,0 +1,168 @@ +#include "dolphin/arq.h" +#include "dolphin/os.h" + +static ARQRequest* __ARQRequestQueueHi; +static ARQRequest* __ARQRequestTailHi; +static ARQRequest* __ARQRequestQueueLo; +static ARQRequest* __ARQRequestTailLo; +static ARQRequest* __ARQRequestPendingHi; +static ARQRequest* __ARQRequestPendingLo; +static ARQCallback __ARQCallbackHi; +static ARQCallback __ARQCallbackLo; +static u32 __ARQChunkSize; + +static volatile BOOL __ARQ_init_flag = FALSE; + +void __ARQPopTaskQueueHi(void); +void __ARQServiceQueueLo(void); +void __ARQCallbackHack(void); +void __ARQInterruptServiceRoutine(void); +void __ARQInitTempQueue(void); +void __ARQPushTempQueue(ARQRequest* task); + +void __ARQPopTaskQueueHi(void) { + + if (__ARQRequestQueueHi) { + if (__ARQRequestQueueHi->type == ARQ_TYPE_MRAM_TO_ARAM) { + ARStartDMA(__ARQRequestQueueHi->type, __ARQRequestQueueHi->source, __ARQRequestQueueHi->dest, + __ARQRequestQueueHi->length); + } else { + ARStartDMA(__ARQRequestQueueHi->type, __ARQRequestQueueHi->dest, __ARQRequestQueueHi->source, + __ARQRequestQueueHi->length); + } + + __ARQCallbackHi = __ARQRequestQueueHi->callback; + + __ARQRequestPendingHi = __ARQRequestQueueHi; + + __ARQRequestQueueHi = __ARQRequestQueueHi->next; + } +} + +void __ARQServiceQueueLo(void) { + + if ((__ARQRequestPendingLo == NULL) && (__ARQRequestQueueLo)) { + __ARQRequestPendingLo = __ARQRequestQueueLo; + + __ARQRequestQueueLo = __ARQRequestQueueLo->next; + } + + if (__ARQRequestPendingLo) { + if (__ARQRequestPendingLo->length <= __ARQChunkSize) { + if (__ARQRequestPendingLo->type == ARQ_TYPE_MRAM_TO_ARAM) + ARStartDMA(__ARQRequestPendingLo->type, __ARQRequestPendingLo->source, + __ARQRequestPendingLo->dest, __ARQRequestPendingLo->length); + else + ARStartDMA(__ARQRequestPendingLo->type, __ARQRequestPendingLo->dest, + __ARQRequestPendingLo->source, __ARQRequestPendingLo->length); + + __ARQCallbackLo = __ARQRequestPendingLo->callback; + } else { + if (__ARQRequestPendingLo->type == ARQ_TYPE_MRAM_TO_ARAM) + ARStartDMA(__ARQRequestPendingLo->type, __ARQRequestPendingLo->source, + __ARQRequestPendingLo->dest, __ARQChunkSize); + else + ARStartDMA(__ARQRequestPendingLo->type, __ARQRequestPendingLo->dest, + __ARQRequestPendingLo->source, __ARQChunkSize); + } + + __ARQRequestPendingLo->length -= __ARQChunkSize; + __ARQRequestPendingLo->source += __ARQChunkSize; + __ARQRequestPendingLo->dest += __ARQChunkSize; + } +} +void __ARQCallbackHack(void) { return; } + +void __ARQInterruptServiceRoutine(void) { + + if (__ARQCallbackHi) { + (*__ARQCallbackHi)((u32)__ARQRequestPendingHi); + __ARQRequestPendingHi = NULL; + __ARQCallbackHi = NULL; + } + + else if (__ARQCallbackLo) { + (*__ARQCallbackLo)((u32)__ARQRequestPendingLo); + __ARQRequestPendingLo = NULL; + __ARQCallbackLo = NULL; + } + + __ARQPopTaskQueueHi(); + + if (__ARQRequestPendingHi == NULL) + __ARQServiceQueueLo(); +} + +void ARQInit(void) { + + if (TRUE == __ARQ_init_flag) { + return; + } + + __ARQRequestQueueHi = __ARQRequestQueueLo = NULL; + __ARQChunkSize = ARQ_CHUNK_SIZE_DEFAULT; + ARRegisterDMACallback(&__ARQInterruptServiceRoutine); + __ARQRequestPendingHi = NULL; + __ARQRequestPendingLo = NULL; + __ARQCallbackHi = NULL; + __ARQCallbackLo = NULL; + __ARQ_init_flag = TRUE; +} + +void ARQPostRequest(ARQRequest* request, u32 owner, u32 type, u32 priority, u32 source, u32 dest, + u32 length, ARQCallback callback) { + + BOOL enabled; + + request->next = NULL; + request->owner = owner; + request->type = type; + request->source = source; + request->dest = dest; + request->length = length; + + if (callback) { + request->callback = callback; + } else { + request->callback = (ARQCallback)&__ARQCallbackHack; + } + + enabled = OSDisableInterrupts(); + + switch (priority) { + case ARQ_PRIORITY_LOW: + + if (__ARQRequestQueueLo) { + __ARQRequestTailLo->next = request; + } else { + __ARQRequestQueueLo = request; + } + __ARQRequestTailLo = request; + + break; + + case ARQ_PRIORITY_HIGH: + + if (__ARQRequestQueueHi) { + __ARQRequestTailHi->next = request; + } else { + __ARQRequestQueueHi = request; + } + + __ARQRequestTailHi = request; + + break; + } + + if ((__ARQRequestPendingHi == NULL) && (__ARQRequestPendingLo == NULL)) { + __ARQPopTaskQueueHi(); + + if (__ARQRequestPendingHi == NULL) { + __ARQServiceQueueLo(); + } + } + + OSRestoreInterrupts(enabled); +} + +u32 ARQGetChunkSize(void) { return __ARQChunkSize; } \ No newline at end of file diff --git a/src/dolphin/card/CARDBios.c b/src/dolphin/card/CARDBios.c new file mode 100644 index 00000000..ff2d55ff --- /dev/null +++ b/src/dolphin/card/CARDBios.c @@ -0,0 +1,615 @@ +#include +#include +#include +#include +#include + +#include + +CARDControl __CARDBlock[2]; +DVDDiskID __CARDDiskNone; + +static u16 __CARDEncode; + +s32 __CARDReadStatus(s32 chan, u8 *status); +s32 __CARDClearStatus(s32 chan); +void __CARDSetDiskID(const DVDDiskID *id); +static s32 Retry(s32 chan); + +static BOOL OnReset(BOOL f); +static OSResetFunctionInfo ResetFunctionInfo = { OnReset, 127 }; + +void __CARDDefaultApiCallback(s32 chan, s32 result) { } + +void __CARDSyncCallback(s32 chan, s32 result) +{ + OSWakeupThread(&__CARDBlock[chan].threadQueue); +} + +void __CARDExtHandler(s32 chan, OSContext *context) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (card->attached) { + card->attached = FALSE; + EXISetExiCallback(chan, 0); + OSCancelAlarm(&card->alarm); + callback = card->exiCallback; + + if (callback) { + card->exiCallback = 0; + callback(chan, CARD_RESULT_NOCARD); + } + + if (card->result != CARD_RESULT_BUSY) { + card->result = CARD_RESULT_NOCARD; + } + + callback = card->extCallback; + if (callback && CARD_MAX_MOUNT_STEP <= card->mountStep) { + card->extCallback = 0; + callback(chan, CARD_RESULT_NOCARD); + } + } +} + +void __CARDExiHandler(s32 chan, OSContext *context) +{ + CARDControl *card; + CARDCallback callback; + u8 status; + s32 result; + + card = &__CARDBlock[chan]; + + OSCancelAlarm(&card->alarm); + + if (!card->attached) { + return; + } + + if (!EXILock(chan, 0, 0)) { + result = CARD_RESULT_FATAL_ERROR; + goto fatal; + } + + if ((result = __CARDReadStatus(chan, &status)) < 0 || (result = __CARDClearStatus(chan)) < 0) { + goto error; + } + + if ((result = (status & 0x18) ? CARD_RESULT_IOERROR : CARD_RESULT_READY) == CARD_RESULT_IOERROR && --card->retry > 0) { + result = Retry(chan); + if (result >= 0) { + return; + } + goto fatal; + } + +error: + EXIUnlock(chan); + +fatal: + callback = card->exiCallback; + if (callback) { + card->exiCallback = 0; + callback(chan, result); + } +} + +void __CARDTxHandler(s32 chan, OSContext *context) +{ + CARDControl *card; + CARDCallback callback; + BOOL err; + + card = &__CARDBlock[chan]; + err = !EXIDeselect(chan); + EXIUnlock(chan); + callback = card->txCallback; + if (callback) { + card->txCallback = 0; + callback(chan, (!err && EXIProbe(chan)) ? CARD_RESULT_READY : CARD_RESULT_NOCARD); + } +} + +void __CARDUnlockedHandler(s32 chan, OSContext *context) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + callback = card->unlockCallback; + if (callback) { + card->unlockCallback = 0; + callback(chan, EXIProbe(chan) ? CARD_RESULT_UNLOCKED : CARD_RESULT_NOCARD); + } +} + +s32 __CARDEnableInterrupt(s32 chan, BOOL enable) +{ + BOOL err; + u32 cmd; + + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + cmd = enable ? 0x81010000 : 0x81000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 2, 1, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; +} + +s32 __CARDReadStatus(s32 chan, u8 *status) +{ + BOOL err; + u32 cmd; + + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + cmd = 0x83000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 2, 1, NULL); + err |= !EXISync(chan); + err |= !EXIImm(chan, status, 1, 0, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; +} + +s32 __CARDClearStatus(s32 chan) +{ + BOOL err; + u32 cmd; + + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + cmd = 0x89000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 1, 1, 0); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; +} + +static void TimeoutHandler(OSAlarm *alarm, OSContext *context) +{ + s32 chan; + CARDControl *card; + CARDCallback callback; + for (chan = 0; chan < 2; ++chan) { + card = &__CARDBlock[chan]; + if (alarm == &card->alarm) { + break; + } + } + + if (!card->attached) { + return; + } + + EXISetExiCallback(chan, NULL); + callback = card->exiCallback; + if (callback) { + card->exiCallback = 0; + callback(chan, CARD_RESULT_IOERROR); + } +} + +static void SetupTimeoutAlarm(CARDControl *card) +{ + OSCancelAlarm(&card->alarm); + switch (card->cmd[0]) { + case 0xF2: + OSSetAlarm(&card->alarm, OSMillisecondsToTicks(100), TimeoutHandler); + break; + case 0xF3: + break; + case 0xF4: + case 0xF1: + OSSetAlarm(&card->alarm, OSSecondsToTicks((OSTime)2) * (card->sectorSize / 0x2000), TimeoutHandler); + break; + } +} + +static s32 Retry(s32 chan) +{ + CARDControl *card; + card = &__CARDBlock[chan]; + + if (!EXISelect(chan, 0, 4)) { + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } + + SetupTimeoutAlarm(card); + + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1)) { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } + + if (card->cmd[0] == 0x52 && !EXIImmEx(chan, (u8 *)card->workArea + sizeof(CARDID), card->latency, 1)) { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } + + if (card->mode == 0xffffffff) { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_READY; + } + + if (!EXIDma(chan, card->buffer, (s32)((card->cmd[0] == 0x52) ? 512 : 128), card->mode, __CARDTxHandler)) { + EXIDeselect(chan); + EXIUnlock(chan); + return CARD_RESULT_NOCARD; + } + + return CARD_RESULT_READY; +} + +static void UnlockedCallback(s32 chan, s32 result) +{ + CARDCallback callback; + CARDControl *card; + + card = &__CARDBlock[chan]; + if (result >= 0) { + card->unlockCallback = UnlockedCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + result = CARD_RESULT_READY; + } + else { + card->unlockCallback = 0; + result = Retry(chan); + } + } + + if (result < 0) { + switch (card->cmd[0]) { + case 0x52: + callback = card->txCallback; + if (callback) { + card->txCallback = 0; + callback(chan, result); + } + + break; + case 0xF2: + case 0xF4: + case 0xF1: + callback = card->exiCallback; + if (callback) { + card->exiCallback = 0; + callback(chan, result); + } + break; + } + } +} + +static s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallback) +{ + BOOL enabled; + CARDControl *card; + s32 result; + + enabled = OSDisableInterrupts(); + + card = &__CARDBlock[chan]; + if (!card->attached) { + result = CARD_RESULT_NOCARD; + } + else { + + if (txCallback) { + card->txCallback = txCallback; + } + if (exiCallback) { + card->exiCallback = exiCallback; + } + card->unlockCallback = UnlockedCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + result = CARD_RESULT_BUSY; + } + else { + card->unlockCallback = 0; + + if (!EXISelect(chan, 0, 4)) { + EXIUnlock(chan); + result = CARD_RESULT_NOCARD; + } + else { + SetupTimeoutAlarm(card); + result = CARD_RESULT_READY; + } + } + } + + OSRestoreInterrupts(enabled); + return result; +} + +#define AD1(x) ((u8)(((x) >> 17) & 0x7f)) +#define AD1EX(x) ((u8)(AD1(x) | 0x80)); +#define AD2(x) ((u8)(((x) >> 9) & 0xff)) +#define AD3(x) ((u8)(((x) >> 7) & 0x03)) +#define BA(x) ((u8)((x)&0x7f)) + +s32 __CARDReadSegment(s32 chan, CARDCallback callback) +{ + CARDControl *card; + s32 result; + + card = &__CARDBlock[chan]; + card->cmd[0] = 0x52; + card->cmd[1] = AD1(card->addr); + card->cmd[2] = AD2(card->addr); + card->cmd[3] = AD3(card->addr); + card->cmd[4] = BA(card->addr); + card->cmdlen = 5; + card->mode = 0; + card->retry = 0; + + result = __CARDStart(chan, callback, 0); + if (result == CARD_RESULT_BUSY) { + result = CARD_RESULT_READY; + } + else if (result >= 0) { + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1) + || !EXIImmEx(chan, (u8 *)card->workArea + sizeof(CARDID), card->latency, + 1) + || // XXX use DMA if possible + !EXIDma(chan, card->buffer, 512, card->mode, __CARDTxHandler)) { + card->txCallback = 0; + EXIDeselect(chan); + EXIUnlock(chan); + result = CARD_RESULT_NOCARD; + } + else { + result = CARD_RESULT_READY; + } + } + return result; +} + +s32 __CARDWritePage(s32 chan, CARDCallback callback) +{ + CARDControl *card; + s32 result; + + card = &__CARDBlock[chan]; + card->cmd[0] = 0xF2; + card->cmd[1] = AD1(card->addr); + card->cmd[2] = AD2(card->addr); + card->cmd[3] = AD3(card->addr); + card->cmd[4] = BA(card->addr); + card->cmdlen = 5; + card->mode = 1; + card->retry = 3; + + result = __CARDStart(chan, 0, callback); + if (result == CARD_RESULT_BUSY) { + result = CARD_RESULT_READY; + } + else if (result >= 0) { + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1) || !EXIDma(chan, card->buffer, 128, card->mode, __CARDTxHandler)) { + card->exiCallback = 0; + EXIDeselect(chan); + EXIUnlock(chan); + result = CARD_RESULT_NOCARD; + } + else { + result = CARD_RESULT_READY; + } + } + return result; +} + +s32 __CARDEraseSector(s32 chan, u32 addr, CARDCallback callback) +{ + CARDControl *card; + s32 result; + + card = &__CARDBlock[chan]; + card->cmd[0] = 0xF1; + card->cmd[1] = AD1(addr); + card->cmd[2] = AD2(addr); + card->cmdlen = 3; + card->mode = -1; + card->retry = 3; + + result = __CARDStart(chan, 0, callback); + + if (result == CARD_RESULT_BUSY) { + result = CARD_RESULT_READY; + } + else if (result >= 0) { + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1)) { + card->exiCallback = NULL; + result = CARD_RESULT_NOCARD; + } + else { + result = CARD_RESULT_READY; + } + + EXIDeselect(chan); + EXIUnlock(chan); + } + return result; +} + +void CARDInit(void) +{ + int chan; + + if (__CARDBlock[0].diskID && __CARDBlock[1].diskID) { + return; + } + + DSPInit(); + OSInitAlarm(); + + for (chan = 0; chan < 2; ++chan) { + CARDControl *card = &__CARDBlock[chan]; + + card->result = CARD_RESULT_NOCARD; + OSInitThreadQueue(&card->threadQueue); + OSCreateAlarm(&card->alarm); + } + __CARDSetDiskID((DVDDiskID *)OSPhysicalToCached(0x0)); + + OSRegisterResetFunction(&ResetFunctionInfo); +} + +u16 __CARDGetFontEncode() +{ + return __CARDEncode; +} + +void __CARDSetDiskID(const DVDDiskID *id) +{ + __CARDBlock[0].diskID = id ? id : &__CARDDiskNone; + __CARDBlock[1].diskID = id ? id : &__CARDDiskNone; +} + +s32 __CARDGetControlBlock(s32 chan, CARDControl **pcard) +{ + BOOL enabled; + s32 result; + CARDControl *card; + + card = &__CARDBlock[chan]; + if (chan < 0 || chan >= 2 || card->diskID == NULL) { + return CARD_RESULT_FATAL_ERROR; + } + + enabled = OSDisableInterrupts(); + if (!card->attached) { + result = CARD_RESULT_NOCARD; + } + else if (card->result == CARD_RESULT_BUSY) { + result = CARD_RESULT_BUSY; + } + else { + card->result = CARD_RESULT_BUSY; + result = CARD_RESULT_READY; + card->apiCallback = 0; + *pcard = card; + } + OSRestoreInterrupts(enabled); + return result; +} + +s32 __CARDPutControlBlock(CARDControl *card, s32 result) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + if (card->attached) { + card->result = result; + } + else if (card->result == CARD_RESULT_BUSY) { + card->result = result; + } + OSRestoreInterrupts(enabled); + return result; +} + +s32 CARDGetResultCode(s32 chan) +{ + CARDControl *card; + if (chan < 0 || chan >= 2) { + return CARD_RESULT_FATAL_ERROR; + } + card = &__CARDBlock[chan]; + return card->result; +} + +s32 CARDFreeBlocks(s32 chan, s32 *byteNotUsed, s32 *filesNotUsed) +{ + CARDControl *card; + s32 result; + u16 *fat; + CARDDir *dir; + CARDDir *ent; + u16 fileNo; + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + fat = __CARDGetFatBlock(card); + dir = __CARDGetDirBlock(card); + if (fat == 0 || dir == 0) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + + if (byteNotUsed) { + *byteNotUsed = (s32)(card->sectorSize * fat[CARD_FAT_FREEBLOCKS]); + } + + if (filesNotUsed) { + *filesNotUsed = 0; + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + if (ent->fileName[0] == 0xff) { + ++*filesNotUsed; + } + } + } + + return __CARDPutControlBlock(card, CARD_RESULT_READY); +} + +s32 CARDGetSectorSize(s32 chan, u32 *size) +{ + struct CARDControl *card; + long result; + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + *size = card->sectorSize; + return __CARDPutControlBlock(card, 0); +} + +s32 __CARDSync(s32 chan) +{ + CARDControl *block; + s32 result; + s32 enabled; + + block = &__CARDBlock[chan]; + enabled = OSDisableInterrupts(); + while ((result = CARDGetResultCode(chan)) == -1) { + OSSleepThread(&block->threadQueue); + } + OSRestoreInterrupts(enabled); + return result; +} + +static BOOL OnReset(BOOL f) +{ + if (!f) { + if (CARDUnmount(0) == CARD_RESULT_BUSY || CARDUnmount(1) == CARD_RESULT_BUSY) { + return FALSE; + } + } + + return TRUE; +} diff --git a/src/dolphin/card/CARDBlock.c b/src/dolphin/card/CARDBlock.c new file mode 100644 index 00000000..c6543c7f --- /dev/null +++ b/src/dolphin/card/CARDBlock.c @@ -0,0 +1,170 @@ +#include +#include +#include +#include + +#include "string.h" + +#include + +u16 *__CARDGetFatBlock(CARDControl *card) +{ + return card->currentFat; +} + +static void WriteCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + u16 *fat; + u16 *fatBack; + + card = &__CARDBlock[chan]; + + if (result >= 0) { + fat = (u16 *)((u8 *)card->workArea + 0x6000); + fatBack = (u16 *)((u8 *)card->workArea + 0x8000); + + if (card->currentFat == fat) { + card->currentFat = fatBack; + memcpy(fatBack, fat, 0x2000); + } + else { + card->currentFat = fat; + memcpy(fat, fatBack, 0x2000); + } + } + + if (card->apiCallback == NULL) { + __CARDPutControlBlock(card, result); + } + + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = NULL; + callback(chan, result); + } +} + +static void EraseCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + u32 temp[2]; /* this compiler sucks */ + u16 *fat; + u32 addr; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + fat = __CARDGetFatBlock(card); + addr = ((u32)fat - (u32)card->workArea) / CARD_SYSTEM_BLOCK_SIZE * card->sectorSize; + result = __CARDWrite(chan, addr, CARD_SYSTEM_BLOCK_SIZE, fat, WriteCallback); + if (result < 0) { + goto error; + } + + return; + +error: + if (card->apiCallback == NULL) { + __CARDPutControlBlock(card, result); + } + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = NULL; + callback(chan, result); + } +} + +s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback) +{ + CARDControl *card; + u16 *fat; + u16 iBlock; + u16 startBlock; + u16 prevBlock; + u16 count; + + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + fat = __CARDGetFatBlock(card); + if (fat[3] < cBlock) { + return CARD_RESULT_INSSPACE; + } + + fat[3] -= cBlock; + startBlock = 0xFFFF; + iBlock = fat[4]; + count = 0; + while (0 < cBlock) { + if (card->cBlock - 5 < ++count) { + return CARD_RESULT_BROKEN; + } + + iBlock++; + if (!CARDIsValidBlockNo(card, iBlock)) { + iBlock = 5; + } + + if (fat[iBlock] == 0x0000u) { + if (startBlock == 0xFFFF) { + startBlock = iBlock; + } + else { + fat[prevBlock] = iBlock; + } + prevBlock = iBlock; + fat[iBlock] = 0xFFFF; + --cBlock; + } + } + fat[4] = iBlock; + card->startBlock = startBlock; + + return __CARDUpdateFatBlock(chan, fat, callback); +} + +s32 __CARDFreeBlock(s32 chan, u16 nBlock, CARDCallback callback) +{ + CARDControl *card; + u16 *fat; + u16 nextBlock; + + card = card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + fat = __CARDGetFatBlock(card); + while (nBlock != 0xFFFF) { + if (!CARDIsValidBlockNo(card, nBlock)) { + return CARD_RESULT_BROKEN; + } + + nextBlock = fat[nBlock]; + fat[nBlock] = 0; + nBlock = nextBlock; + ++fat[3]; + } + + return __CARDUpdateFatBlock(chan, fat, callback); +} + +s32 __CARDUpdateFatBlock(s32 chan, u16 *fat, CARDCallback callback) +{ + CARDControl *card; + + card = &__CARDBlock[chan]; + ++fat[2]; + __CARDCheckSum(fat + 2, 0x1FFC, fat, fat + 1); + DCStoreRange(fat, 0x2000); + card->eraseCallback = callback; + + return __CARDEraseSector(chan, (((u32)fat - (u32)card->workArea) / 8192u) * card->sectorSize, EraseCallback); +} diff --git a/src/dolphin/card/CARDCheck.c b/src/dolphin/card/CARDCheck.c new file mode 100644 index 00000000..988e16b3 --- /dev/null +++ b/src/dolphin/card/CARDCheck.c @@ -0,0 +1,343 @@ +#include +#include +#include +#include + +#include +#include + +#include "string.h" + +void __CARDCheckSum(void *ptr, int length, u16 *checksum, u16 *checksumInv) +{ + u16 *p; + int i; + + length /= sizeof(u16); + *checksum = *checksumInv = 0; + for (i = 0, p = ptr; i < length; i++, p++) { + *checksum += *p; + *checksumInv += ~*p; + } + if (*checksum == 0xffff) { + *checksum = 0; + } + if (*checksumInv == 0xffff) { + *checksumInv = 0; + } +} + +static s32 VerifyID(CARDControl *card) +{ + CARDID *id; + u16 checksum; + u16 checksumInv; + OSSramEx *sramEx; + OSTime rand; + int i; + + id = card->workArea; + + if (id->deviceID != 0 || id->size != card->size) + return CARD_RESULT_BROKEN; + + __CARDCheckSum(id, sizeof(CARDID) - sizeof(u32), &checksum, &checksumInv); + if (id->checkSum != checksum || id->checkSumInv != checksumInv) + return CARD_RESULT_BROKEN; + + if (id->encode != OSGetFontEncode()) + return CARD_RESULT_ENCODING; + + rand = *(OSTime *)&id->serial[12]; + sramEx = __OSLockSramEx(); + for (i = 0; i < 12; i++) { + rand = (rand * 1103515245 + 12345) >> 16; + if (id->serial[i] != (u8)(sramEx->flashID[card - __CARDBlock][i] + rand)) { + __OSUnlockSramEx(FALSE); + return CARD_RESULT_BROKEN; + } + rand = ((rand * 1103515245 + 12345) >> 16) & 0x7FFF; + } + + __OSUnlockSramEx(FALSE); + + return CARD_RESULT_READY; +} + +static s32 VerifyDir(CARDControl *card, int *outCurrent) +{ + CARDDir *dir[2]; + CARDDirCheck *check[2]; + u16 checkSum; + u16 checkSumInv; + int i; + int errors; + int current; + + current = errors = 0; + for (i = 0; i < 2; i++) { + dir[i] = (CARDDir *)((u8 *)card->workArea + (1 + i) * CARD_SYSTEM_BLOCK_SIZE); + check[i] = __CARDGetDirCheck(dir[i]); + __CARDCheckSum(dir[i], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &checkSum, &checkSumInv); + if (check[i]->checkSum != checkSum || check[i]->checkSumInv != checkSumInv) { + ++errors; + current = i; + card->currentDir = 0; + } + } + + if (0 == errors) { + if (card->currentDir == 0) { + if ((check[0]->checkCode - check[1]->checkCode) < 0) { + current = 0; + } + else { + current = 1; + } + card->currentDir = dir[current]; + memcpy(dir[current], dir[current ^ 1], CARD_SYSTEM_BLOCK_SIZE); + } + else { + current = (card->currentDir == dir[0]) ? 0 : 1; + } + } + if (outCurrent) { + *outCurrent = current; + } + return errors; +} + +static s32 VerifyFAT(CARDControl *card, int *outCurrent) +{ + u16 *fat[2]; + u16 *fatp; + u16 nBlock; + u16 cFree; + int i; + u16 checkSum; + u16 checkSumInv; + int errors; + int current; + + current = errors = 0; + for (i = 0; i < 2; i++) { + fatp = fat[i] = (u16 *)((u8 *)card->workArea + (3 + i) * CARD_SYSTEM_BLOCK_SIZE); + + __CARDCheckSum(&fatp[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &checkSum, &checkSumInv); + if (fatp[CARD_FAT_CHECKSUM] != checkSum || fatp[CARD_FAT_CHECKSUMINV] != checkSumInv) { + ++errors; + current = i; + card->currentFat = 0; + continue; + } + + cFree = 0; + for (nBlock = CARD_NUM_SYSTEM_BLOCK; nBlock < card->cBlock; nBlock++) { + if (fatp[nBlock] == CARD_FAT_AVAIL) { + cFree++; + } + } + if (cFree != fatp[CARD_FAT_FREEBLOCKS]) { + ++errors; + current = i; + card->currentFat = 0; + continue; + } + } + + if (0 == errors) { + if (card->currentFat == 0) { + if (((s16)fat[0][CARD_FAT_CHECKCODE] - (s16)fat[1][CARD_FAT_CHECKCODE]) < 0) { + current = 0; + } + else { + current = 1; + } + card->currentFat = fat[current]; + memcpy(fat[current], fat[current ^ 1], CARD_SYSTEM_BLOCK_SIZE); + } + else { + current = (card->currentFat == fat[0]) ? 0 : 1; + } + } + if (outCurrent) { + *outCurrent = current; + } + return errors; +} + +s32 __CARDVerify(CARDControl *card) +{ + s32 result; + int errors; + + result = VerifyID(card); + if (result < 0) { + return result; + } + + errors = VerifyDir(card, NULL); + errors += VerifyFAT(card, NULL); + switch (errors) { + case 0: + return CARD_RESULT_READY; + case 1: + return CARD_RESULT_BROKEN; + default: + return CARD_RESULT_BROKEN; + } +} + +s32 CARDCheckExAsync(s32 chan, s32 *xferBytes, CARDCallback callback) +{ + CARDControl *card; + CARDDir *dir[2]; + u16 *fat[2]; + u16 *map; + s32 result; + int errors; + int currentFat; + int currentDir; + s32 fileNo; + u16 iBlock; + u16 cBlock; + u16 cFree; + BOOL updateFat = FALSE; + BOOL updateDir = FALSE; + BOOL updateOrphan = FALSE; + + if (xferBytes) { + *xferBytes = 0; + } + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + result = VerifyID(card); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + errors = VerifyDir(card, ¤tDir); + errors += VerifyFAT(card, ¤tFat); + if (1 < errors) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + + dir[0] = (CARDDir *)((u8 *)card->workArea + (1 + 0) * CARD_SYSTEM_BLOCK_SIZE); + dir[1] = (CARDDir *)((u8 *)card->workArea + (1 + 1) * CARD_SYSTEM_BLOCK_SIZE); + fat[0] = (u16 *)((u8 *)card->workArea + (3 + 0) * CARD_SYSTEM_BLOCK_SIZE); + fat[1] = (u16 *)((u8 *)card->workArea + (3 + 1) * CARD_SYSTEM_BLOCK_SIZE); + + switch (errors) { + case 0: + break; + case 1: + if (!card->currentDir) { + card->currentDir = dir[currentDir]; + memcpy(dir[currentDir], dir[currentDir ^ 1], CARD_SYSTEM_BLOCK_SIZE); + updateDir = TRUE; + } + else { + card->currentFat = fat[currentFat]; + memcpy(fat[currentFat], fat[currentFat ^ 1], CARD_SYSTEM_BLOCK_SIZE); + updateFat = TRUE; + } + break; + } + + map = fat[currentFat ^ 1]; + memset(map, 0, CARD_SYSTEM_BLOCK_SIZE); + + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + CARDDir *ent; + + ent = &card->currentDir[fileNo]; + if (ent->gameName[0] == 0xff) { + continue; + } + + for (iBlock = ent->startBlock, cBlock = 0; iBlock != 0xFFFF && cBlock < ent->length; iBlock = card->currentFat[iBlock], ++cBlock) { + if (!CARDIsValidBlockNo(card, iBlock) || 1 < ++map[iBlock]) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + if (cBlock != ent->length || iBlock != 0xFFFF) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + + cFree = 0; + for (iBlock = CARD_NUM_SYSTEM_BLOCK; iBlock < card->cBlock; iBlock++) { + u16 nextBlock; + + nextBlock = card->currentFat[iBlock]; + if (map[iBlock] == 0) { + if (nextBlock != CARD_FAT_AVAIL) { + card->currentFat[iBlock] = CARD_FAT_AVAIL; + updateOrphan = TRUE; + } + cFree++; + } + else if (!CARDIsValidBlockNo(card, nextBlock) && nextBlock != 0xFFFF) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + if (cFree != card->currentFat[CARD_FAT_FREEBLOCKS]) { + card->currentFat[CARD_FAT_FREEBLOCKS] = cFree; + updateOrphan = TRUE; + } + if (updateOrphan) { + __CARDCheckSum(&card->currentFat[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &card->currentFat[CARD_FAT_CHECKSUM], + &card->currentFat[CARD_FAT_CHECKSUMINV]); + } + + memcpy(fat[currentFat ^ 1], fat[currentFat], CARD_SYSTEM_BLOCK_SIZE); + + if (updateDir) { + if (xferBytes) { + *xferBytes = CARD_SYSTEM_BLOCK_SIZE; + } + return __CARDUpdateDir(chan, callback); + } + + if (updateFat | updateOrphan) { + if (xferBytes) { + *xferBytes = CARD_SYSTEM_BLOCK_SIZE; + } + return __CARDUpdateFatBlock(chan, card->currentFat, callback); + } + + __CARDPutControlBlock(card, CARD_RESULT_READY); + if (callback) { + BOOL enabled = OSDisableInterrupts(); + callback(chan, CARD_RESULT_READY); + OSRestoreInterrupts(enabled); + } + return CARD_RESULT_READY; +} + +s32 CARDCheckAsync(s32 chan, CARDCallback callback) +{ + s32 xferBytes; + + return CARDCheckExAsync(chan, &xferBytes, callback); +} + +s32 CARDCheck(s32 chan) +{ + s32 xferBytes; + + s32 result = CARDCheckExAsync(chan, &xferBytes, __CARDSyncCallback); + if (result >= 0) { + if (&xferBytes == NULL) { + return result; + } + + return __CARDSync(chan); + } + + return result; +} diff --git a/src/dolphin/card/CARDCreate.c b/src/dolphin/card/CARDCreate.c new file mode 100644 index 00000000..ac91d727 --- /dev/null +++ b/src/dolphin/card/CARDCreate.c @@ -0,0 +1,126 @@ +#include +#include +#include +#include + +#include + +static void CreateCallbackFat(s32 chan, s32 result) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + CARDCallback callback; + + card = &__CARDBlock[chan]; + callback = card->apiCallback; + card->apiCallback = 0; + if (result < 0) { + goto error; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[card->freeNo]; + memcpy(ent->gameName, card->diskID->gameName, sizeof(ent->gameName)); + memcpy(ent->company, card->diskID->company, sizeof(ent->company)); + ent->permission = CARD_ATTR_PUBLIC; + ent->copyTimes = 0; + ent->startBlock = card->startBlock; + + ent->bannerFormat = 0; + ent->iconAddr = 0xffffffff; + ent->iconFormat = 0; + ent->iconSpeed = 0; + ent->commentAddr = 0xffffffff; + + CARDSetIconSpeed(ent, 0, CARD_STAT_SPEED_FAST); + + card->fileInfo->offset = 0; + card->fileInfo->iBlock = ent->startBlock; + + ent->time = (u32)OSTicksToSeconds(OSGetTime()); + result = __CARDUpdateDir(chan, callback); + if (result < 0) { + goto error; + } + return; + +error: + __CARDPutControlBlock(card, result); + if (callback) { + callback(chan, result); + } +} + +s32 CARDCreateAsync(s32 chan, const char *fileName, u32 size, CARDFileInfo *fileInfo, CARDCallback callback) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + s32 result; + u16 fileNo; + u16 freeNo; + u16 *fat; + + if (strlen(fileName) > (u32)CARD_FILENAME_MAX) { + return CARD_RESULT_NAMETOOLONG; + } + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + if (size <= 0 || (size % card->sectorSize) != 0) { + return CARD_RESULT_FATAL_ERROR; + } + + freeNo = (u16)-1; + dir = __CARDGetDirBlock(card); + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + if (ent->gameName[0] == 0xff) { + if (freeNo == (u16)-1) { + freeNo = fileNo; + } + } + else if (memcmp(ent->gameName, card->diskID->gameName, sizeof(ent->gameName)) == 0 + && memcmp(ent->company, card->diskID->company, sizeof(ent->company)) == 0 && __CARDCompareFileName(ent, fileName)) { + return __CARDPutControlBlock(card, CARD_RESULT_EXIST); + } + } + if (freeNo == (u16)-1) { + return __CARDPutControlBlock(card, CARD_RESULT_NOENT); + } + + fat = __CARDGetFatBlock(card); + if (card->sectorSize * fat[CARD_FAT_FREEBLOCKS] < size) { + return __CARDPutControlBlock(card, CARD_RESULT_INSSPACE); + } + + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + card->freeNo = freeNo; + ent = &dir[freeNo]; + ent->length = (u16)(size / card->sectorSize); + strcat(ent->fileName, fileName, CARD_FILENAME_MAX); + + card->fileInfo = fileInfo; + fileInfo->chan = chan; + fileInfo->fileNo = freeNo; + + result = __CARDAllocBlock(chan, size / card->sectorSize, CreateCallbackFat); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDCreate(s32 chan, const char *fileName, u32 size, CARDFileInfo *fileInfo) +{ + s32 result = CARDCreateAsync(chan, fileName, size, fileInfo, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); +} diff --git a/src/dolphin/card/CARDDelete.c b/src/dolphin/card/CARDDelete.c new file mode 100644 index 00000000..8b531738 --- /dev/null +++ b/src/dolphin/card/CARDDelete.c @@ -0,0 +1,111 @@ +#include +#include +#include +#include + +#include "string.h" + +#include + +static void DeleteCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + callback = card->apiCallback; + card->apiCallback = 0; + + if (result < 0) { + goto error; + } + + result = __CARDFreeBlock(chan, card->startBlock, callback); + if (result < 0) { + goto error; + } + return; + +error: + __CARDPutControlBlock(card, result); + if (callback) { + callback(chan, result); + } +} + +s32 CARDFastDeleteAsync(s32 chan, s32 fileNo, CARDCallback callback) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + s32 result; + + if (fileNo < 0 || CARD_MAX_FILE <= fileNo) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + if (__CARDIsOpened(card, fileNo)) { + return __CARDPutControlBlock(card, CARD_RESULT_BUSY); + } + card->startBlock = ent->startBlock; + memset(ent, 0xff, sizeof(CARDDir)); + + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + result = __CARDUpdateDir(chan, DeleteCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDDeleteAsync(s32 chan, const char *fileName, CARDCallback callback) +{ + CARDControl *card; + s32 fileNo; + s32 result; + CARDDir *dir; + CARDDir *ent; + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + result = __CARDGetFileNo(card, fileName, &fileNo); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + if (__CARDIsOpened(card, fileNo)) { + return __CARDPutControlBlock(card, CARD_RESULT_BUSY); + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + card->startBlock = ent->startBlock; + memset(ent, 0xff, sizeof(CARDDir)); + + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + result = __CARDUpdateDir(chan, DeleteCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDDelete(s32 chan, const char *fileName) +{ + s32 result = CARDDeleteAsync(chan, fileName, __CARDSyncCallback); + + if (result < 0) + return result; + return __CARDSync(chan); +} diff --git a/src/dolphin/card/CARDDir.c b/src/dolphin/card/CARDDir.c new file mode 100644 index 00000000..97844a6e --- /dev/null +++ b/src/dolphin/card/CARDDir.c @@ -0,0 +1,101 @@ +#include +#include +#include +#include + +#include "string.h" + +#include + +CARDDir *__CARDGetDirBlock(CARDControl *card) +{ + return card->currentDir; +} + +static void WriteCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (0 <= result) { + CARDDir *dir0 = (CARDDir *)((u8 *)card->workArea + 0x2000); + CARDDir *dir1 = (CARDDir *)((u8 *)card->workArea + 0x4000); + + if (card->currentDir == dir0) { + card->currentDir = dir1; + memcpy(dir1, dir0, 0x2000); + } + else { + card->currentDir = dir0; + memcpy(dir0, dir1, 0x2000); + } + } + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = 0; + callback(chan, result); + } +} + +static void EraseCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + CARDDir *dir; + u32 tmp[2]; + u32 addr; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + dir = __CARDGetDirBlock(card); + addr = ((u32)dir - (u32)card->workArea) / 0x2000 * card->sectorSize; + result = __CARDWrite(chan, addr, 0x2000, dir, WriteCallback); + if (result < 0) { + goto error; + } + + return; + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = 0; + callback(chan, result); + } +} + +s32 __CARDUpdateDir(s32 chan, CARDCallback callback) +{ + CARDControl *card; + CARDDirCheck *check; + u32 tmp[2]; + u32 addr; + CARDDir *dir; + + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + dir = __CARDGetDirBlock(card); + check = __CARDGetDirCheck(dir); + ++check->checkCode; + __CARDCheckSum(dir, 0x2000 - sizeof(u32), &check->checkSum, &check->checkSumInv); + DCStoreRange(dir, 0x2000); + + card->eraseCallback = callback; + addr = ((u32)dir - (u32)card->workArea) / 0x2000 * card->sectorSize; + return __CARDEraseSector(chan, addr, EraseCallback); +} diff --git a/src/dolphin/card/CARDFormat.c b/src/dolphin/card/CARDFormat.c new file mode 100644 index 00000000..b2c91930 --- /dev/null +++ b/src/dolphin/card/CARDFormat.c @@ -0,0 +1,141 @@ +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "string.h" + +static void FormatCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + ++card->formatStep; + if (card->formatStep < CARD_NUM_SYSTEM_BLOCK) { + result = __CARDEraseSector(chan, (u32)card->sectorSize * card->formatStep, FormatCallback); + if (0 <= result) { + return; + } + } + else if (card->formatStep < 2 * CARD_NUM_SYSTEM_BLOCK) { + int step = card->formatStep - CARD_NUM_SYSTEM_BLOCK; + result = __CARDWrite( + chan, (u32)card->sectorSize * step, CARD_SYSTEM_BLOCK_SIZE, (u8 *)card->workArea + (CARD_SYSTEM_BLOCK_SIZE * step), FormatCallback); + if (result >= 0) { + return; + } + } + else { + card->currentDir = (CARDDir *)((u8 *)card->workArea + (1 + 0) * CARD_SYSTEM_BLOCK_SIZE); + memcpy(card->currentDir, (u8 *)card->workArea + (1 + 1) * CARD_SYSTEM_BLOCK_SIZE, CARD_SYSTEM_BLOCK_SIZE); + card->currentFat = (u16 *)((u8 *)card->workArea + (3 + 0) * CARD_SYSTEM_BLOCK_SIZE); + memcpy(card->currentFat, (u8 *)card->workArea + (3 + 1) * CARD_SYSTEM_BLOCK_SIZE, CARD_SYSTEM_BLOCK_SIZE); + } + +error: + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); +} + +s32 __CARDFormatRegionAsync(s32 chan, u16 encode, CARDCallback callback) +{ + CARDControl *card; + CARDID *id; + CARDDir *dir; + u16 *fat; + s16 i; + s32 result; + OSSram *sram; + OSSramEx *sramEx; + u16 viDTVStatus; + OSTime time; + OSTime rand; + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + id = (CARDID *)card->workArea; + memset(id, 0xff, CARD_SYSTEM_BLOCK_SIZE); + viDTVStatus = __VIRegs[55]; + + id->encode = encode; + + sram = __OSLockSram(); + *(u32 *)&id->serial[20] = sram->counterBias; + *(u32 *)&id->serial[24] = sram->language; + __OSUnlockSram(FALSE); + + rand = time = OSGetTime(); + + sramEx = __OSLockSramEx(); + for (i = 0; i < 12; i++) { + rand = (rand * 1103515245 + 12345) >> 16; + id->serial[i] = (u8)(sramEx->flashID[chan][i] + rand); + rand = ((rand * 1103515245 + 12345) >> 16) & 0x7FFF; + } + __OSUnlockSramEx(FALSE); + + *(u32 *)&id->serial[28] = viDTVStatus; + *(OSTime *)&id->serial[12] = time; + + id->deviceID = 0; + id->size = card->size; + __CARDCheckSum(id, sizeof(CARDID) - sizeof(u32), &id->checkSum, &id->checkSumInv); + + for (i = 0; i < 2; i++) { + CARDDirCheck *check; + + dir = (CARDDir *)((u8 *)card->workArea + (1 + i) * CARD_SYSTEM_BLOCK_SIZE); + memset(dir, 0xff, CARD_SYSTEM_BLOCK_SIZE); + check = __CARDGetDirCheck(dir); + check->checkCode = i; + __CARDCheckSum(dir, CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &check->checkSum, &check->checkSumInv); + } + for (i = 0; i < 2; i++) { + fat = (u16 *)((u8 *)card->workArea + (3 + i) * CARD_SYSTEM_BLOCK_SIZE); + memset(fat, 0x00, CARD_SYSTEM_BLOCK_SIZE); + fat[CARD_FAT_CHECKCODE] = (u16)i; + fat[CARD_FAT_FREEBLOCKS] = (u16)(card->cBlock - CARD_NUM_SYSTEM_BLOCK); + fat[CARD_FAT_LASTSLOT] = CARD_NUM_SYSTEM_BLOCK - 1; + __CARDCheckSum(&fat[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), &fat[CARD_FAT_CHECKSUM], &fat[CARD_FAT_CHECKSUMINV]); + } + + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + DCStoreRange(card->workArea, CARD_WORKAREA_SIZE); + + card->formatStep = 0; + result = __CARDEraseSector(chan, (u32)card->sectorSize * card->formatStep, FormatCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDFormatAsync(s32 chan, CARDCallback callback) +{ + return __CARDFormatRegionAsync(chan, __CARDGetFontEncode(), callback); +} + +s32 CARDFormat(s32 chan) +{ + s32 result = __CARDFormatRegionAsync(chan, OSGetFontEncode(), __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); +} diff --git a/src/dolphin/card/CARDMount.c b/src/dolphin/card/CARDMount.c new file mode 100644 index 00000000..f8e75c49 --- /dev/null +++ b/src/dolphin/card/CARDMount.c @@ -0,0 +1,396 @@ +#include +#include +#include +#include +#include + +#include +#include + +u8 GameChoice : (OS_BASE_CACHED | 0x000030E3); + +static u32 SectorSizeTable[8] = { + 8 * 1024, + 16 * 1024, + 32 * 1024, + 64 * 1024, + 128 * 1024, + 256 * 1024, + 0, + 0, +}; + +static u32 LatencyTable[8] = { + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, +}; + +void __CARDMountCallback(s32 chan, s32 result); +static void DoUnmount(s32 chan, s32 result); + +static BOOL IsCard(u32 id) +{ + u32 size; + s32 sectorSize; + if (id & (0xFFFF0000) && (id != 0x80000004 || __CARDVendorID == 0xFFFF)) { + return FALSE; + } + + if ((id & 3) != 0) { + return FALSE; + } + + size = id & 0xfc; + switch (size) { + case 4: + case 8: + case 16: + case 32: + case 64: + case 128: + break; + default: + return FALSE; + break; + } + + sectorSize = SectorSizeTable[(id & 0x00003800) >> 11]; + if (sectorSize == 0) { + return FALSE; + } + + if ((size * 1024 * 1024 / 8) / sectorSize < 8) { + return FALSE; + } + + return TRUE; +} + +s32 CARDProbeEx(s32 chan, s32 *memSize, s32 *sectorSize) +{ + u32 id; + CARDControl *card; + BOOL enabled; + s32 result; + int probe; + + if (chan < 0 || 2 <= chan) { + return CARD_RESULT_FATAL_ERROR; + } + + if (GameChoice & 0x80) { + return CARD_RESULT_NOCARD; + } + + card = &__CARDBlock[chan]; + enabled = OSDisableInterrupts(); + + probe = EXIProbeEx(chan); + if (probe == -1) { + result = CARD_RESULT_NOCARD; + } + else if (probe == 0) { + result = CARD_RESULT_BUSY; + } + else if (card->attached) { + if (card->mountStep < 1) { + result = CARD_RESULT_BUSY; + } + else { + if (memSize) { + *memSize = card->size; + } + if (sectorSize) { + *sectorSize = card->sectorSize; + } + result = CARD_RESULT_READY; + } + } + else if ((EXIGetState(chan) & 8)) { + result = CARD_RESULT_WRONGDEVICE; + } + else if (!EXIGetID(chan, 0, &id)) { + result = CARD_RESULT_BUSY; + } + else if (IsCard(id)) { + if (memSize) { + *memSize = (s32)(id & 0xfc); + } + if (sectorSize) { + *sectorSize = SectorSizeTable[(id & 0x00003800) >> 11]; + } + result = CARD_RESULT_READY; + } + else { + result = CARD_RESULT_WRONGDEVICE; + } + + OSRestoreInterrupts(enabled); + return result; +} + +static s32 DoMount(s32 chan) +{ + CARDControl *card; + u32 id; + u8 status; + s32 result; + OSSramEx *sram; + int i; + u8 checkSum; + int step; + + card = &__CARDBlock[chan]; + + if (card->mountStep == 0) { + if (EXIGetID(chan, 0, &id) == 0) { + result = CARD_RESULT_NOCARD; + } + else if (IsCard(id)) { + result = CARD_RESULT_READY; + } + else { + result = CARD_RESULT_WRONGDEVICE; + } + if (result < 0) { + goto error; + } + + card->cid = id; + + card->size = (u16)(id & 0xFC); + card->sectorSize = SectorSizeTable[(id & 0x00003800) >> 11]; + card->cBlock = (u16)((card->size * 1024 * 1024 / 8) / card->sectorSize); + card->latency = LatencyTable[(id & 0x00000700) >> 8]; + + result = __CARDClearStatus(chan); + if (result < 0) { + goto error; + } + result = __CARDReadStatus(chan, &status); + if (result < 0) { + goto error; + } + + if (!EXIProbe(chan)) { + result = CARD_RESULT_NOCARD; + goto error; + } + + if (!(status & 0x40)) { + result = __CARDUnlock(chan, card->id); + if (result < 0) { + goto error; + } + + checkSum = 0; + sram = __OSLockSramEx(); + for (i = 0; i < 12; i++) { + sram->flashID[chan][i] = card->id[i]; + checkSum += card->id[i]; + } + sram->flashIDCheckSum[chan] = (u8)~checkSum; + __OSUnlockSramEx(TRUE); + + return result; + } + else { + card->mountStep = 1; + + checkSum = 0; + sram = __OSLockSramEx(); + for (i = 0; i < 12; i++) { + checkSum += sram->flashID[chan][i]; + } + __OSUnlockSramEx(FALSE); + if (sram->flashIDCheckSum[chan] != (u8)~checkSum) { + result = CARD_RESULT_IOERROR; + goto error; + } + } + } + + if (card->mountStep == 1) { + if (card->cid == 0x80000004) { + u16 vendorID; + + sram = __OSLockSramEx(); + vendorID = *(u16 *)sram->flashID[chan]; + __OSUnlockSramEx(FALSE); + + if (__CARDVendorID == 0xffff || vendorID != __CARDVendorID) { + result = CARD_RESULT_WRONGDEVICE; + goto error; + } + } + + card->mountStep = 2; + + result = __CARDEnableInterrupt(chan, TRUE); + if (result < 0) { + goto error; + } + + EXISetExiCallback(chan, __CARDExiHandler); + EXIUnlock(chan); + DCInvalidateRange(card->workArea, CARD_WORKAREA_SIZE); + } + + step = card->mountStep - 2; + result = __CARDRead( + chan, (u32)card->sectorSize * step, CARD_SYSTEM_BLOCK_SIZE, (u8 *)card->workArea + (CARD_SYSTEM_BLOCK_SIZE * step), __CARDMountCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; + +error: + EXIUnlock(chan); + DoUnmount(chan, result); + return result; +} + +void __CARDMountCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + + switch (result) { + case CARD_RESULT_READY: + if (++card->mountStep < CARD_MAX_MOUNT_STEP) { + result = DoMount(chan); + if (0 <= result) { + return; + } + } + else { + result = __CARDVerify(card); + } + break; + case CARD_RESULT_UNLOCKED: + card->unlockCallback = __CARDMountCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + return; + } + card->unlockCallback = 0; + + result = DoMount(chan); + if (0 <= result) { + return; + } + break; + case CARD_RESULT_IOERROR: + case CARD_RESULT_NOCARD: + DoUnmount(chan, result); + break; + } + + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); +} + +s32 CARDMountAsync(s32 chan, void *workArea, CARDCallback detachCallback, CARDCallback attachCallback) +{ + CARDControl *card; + BOOL enabled; + + if (chan < 0 || 2 <= chan) { + return CARD_RESULT_FATAL_ERROR; + } + if (GameChoice & 0x80) { + return CARD_RESULT_NOCARD; + } + card = &__CARDBlock[chan]; + + enabled = OSDisableInterrupts(); + if (card->result == CARD_RESULT_BUSY) { + OSRestoreInterrupts(enabled); + return CARD_RESULT_BUSY; + } + + if (!card->attached && (EXIGetState(chan) & 0x08)) { + OSRestoreInterrupts(enabled); + return CARD_RESULT_WRONGDEVICE; + } + + card->result = CARD_RESULT_BUSY; + card->workArea = workArea; + card->extCallback = detachCallback; + card->apiCallback = attachCallback ? attachCallback : __CARDDefaultApiCallback; + card->exiCallback = 0; + + if (!card->attached && !EXIAttach(chan, __CARDExtHandler)) { + card->result = CARD_RESULT_NOCARD; + OSRestoreInterrupts(enabled); + return CARD_RESULT_NOCARD; + } + + card->mountStep = 0; + card->attached = TRUE; + EXISetExiCallback(chan, 0); + OSCancelAlarm(&card->alarm); + + card->currentDir = 0; + card->currentFat = 0; + + OSRestoreInterrupts(enabled); + + card->unlockCallback = __CARDMountCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + return CARD_RESULT_READY; + } + card->unlockCallback = 0; + + return DoMount(chan); +} + +s32 CARDMount(s32 chan, void *workArea, CARDCallback attachCb) +{ + s32 result = CARDMountAsync(chan, workArea, attachCb, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); +} + +static void DoUnmount(s32 chan, s32 result) +{ + CARDControl *card; + BOOL enabled; + + card = &__CARDBlock[chan]; + enabled = OSDisableInterrupts(); + if (card->attached) { + EXISetExiCallback(chan, 0); + EXIDetach(chan); + OSCancelAlarm(&card->alarm); + card->attached = FALSE; + card->result = result; + card->mountStep = 0; + } + OSRestoreInterrupts(enabled); +} + +s32 CARDUnmount(s32 chan) +{ + CARDControl *card; + s32 result; + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + DoUnmount(chan, CARD_RESULT_NOCARD); + return CARD_RESULT_READY; +} diff --git a/src/dolphin/card/CARDNet.c b/src/dolphin/card/CARDNet.c new file mode 100644 index 00000000..24ab484f --- /dev/null +++ b/src/dolphin/card/CARDNet.c @@ -0,0 +1,34 @@ +#include +#include +#include +#include + +#include + +u16 __CARDVendorID = 0xffff; + +s32 CARDGetSerialNo(s32 chan, u64 *serialNo) +{ + CARDControl *card; + CARDID *id; + int i; + u64 code; + s32 result; + + if (!(0 <= chan && chan < 2)) { + return CARD_RESULT_FATAL_ERROR; + } + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + id = (CARDID *)card->workArea; + for (code = 0, i = 0; i < sizeof(id->serial) / sizeof(u64); ++i) { + code ^= *(u64 *)&id->serial[sizeof(u64) * i]; + } + *serialNo = code; + + return __CARDPutControlBlock(card, CARD_RESULT_READY); +} diff --git a/src/dolphin/card/CARDOpen.c b/src/dolphin/card/CARDOpen.c new file mode 100644 index 00000000..929982a0 --- /dev/null +++ b/src/dolphin/card/CARDOpen.c @@ -0,0 +1,134 @@ +#include +#include +#include +#include + +#include + +BOOL __CARDCompareFileName(CARDDir *ent, const char *fileName) +{ + char *entName; + char c1; + char c2; + int n; + + entName = (char *)ent->fileName; + n = CARD_FILENAME_MAX; + while (0 <= --n) { + if ((c1 = *entName++) != (c2 = *fileName++)) { + return FALSE; + } + else if (c2 == '\0') { + return TRUE; + } + } + + if (*fileName == '\0') { + return TRUE; + } + + return FALSE; +} + +s32 __CARDAccess(CARDControl *card, CARDDir *ent) +{ + if (ent->gameName[0] == 0xFF) { + return CARD_RESULT_NOFILE; + } + + if (card->diskID == &__CARDDiskNone + || (memcmp(ent->gameName, card->diskID->gameName, 4) == 0 && memcmp(ent->company, card->diskID->company, 2) == 0)) { + return CARD_RESULT_READY; + } + + return CARD_RESULT_NOPERM; +} + +BOOL __CARDIsPublic(CARDDir *ent) +{ + if (ent->gameName[0] == 0xFF) { + return CARD_RESULT_NOFILE; + } + + if ((ent->permission & CARD_ATTR_PUBLIC) != 0) { + return CARD_RESULT_READY; + } + + return CARD_RESULT_NOPERM; +} + +s32 __CARDGetFileNo(CARDControl *card, const char *fileName, s32 *pfileNo) +{ + CARDDir *dir; + CARDDir *ent; + s32 fileNo; + s32 result; + + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + dir = __CARDGetDirBlock(card); + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + continue; + } + if (__CARDCompareFileName(ent, fileName)) { + *pfileNo = fileNo; + return CARD_RESULT_READY; + } + } + + return CARD_RESULT_NOFILE; +} + +s32 CARDOpen(s32 chan, const char *fileName, CARDFileInfo *fileInfo) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + s32 result; + s32 fileNo; + + fileInfo->chan = -1; + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + result = __CARDGetFileNo(card, fileName, &fileNo); + if (0 <= result) { + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + if (!CARDIsValidBlockNo(card, ent->startBlock)) { + result = CARD_RESULT_BROKEN; + } + else { + fileInfo->chan = chan; + fileInfo->fileNo = fileNo; + fileInfo->offset = 0; + fileInfo->iBlock = ent->startBlock; + } + } + return __CARDPutControlBlock(card, result); +} + +s32 CARDClose(CARDFileInfo *fileInfo) +{ + CARDControl *card; + s32 result; + + result = __CARDGetControlBlock(fileInfo->chan, &card); + if (result < 0) { + return result; + } + + fileInfo->chan = -1; + return __CARDPutControlBlock(card, CARD_RESULT_READY); +} + +BOOL __CARDIsOpened(CARDControl *card, s32 fileNo) +{ + return FALSE; +} diff --git a/src/dolphin/card/CARDRdwr.c b/src/dolphin/card/CARDRdwr.c new file mode 100644 index 00000000..3a235891 --- /dev/null +++ b/src/dolphin/card/CARDRdwr.c @@ -0,0 +1,108 @@ +#include +#include +#include +#include + +#include + +static void BlockReadCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + card->xferred += CARD_SEG_SIZE; + + card->addr += CARD_SEG_SIZE; + (u8 *)card->buffer += CARD_SEG_SIZE; + if (--card->repeat <= 0) { + goto error; + } + + result = __CARDReadSegment(chan, BlockReadCallback); + if (result < 0) { + goto error; + } + return; + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->xferCallback; + if (callback) { + card->xferCallback = 0; + callback(chan, result); + } +} + +s32 __CARDRead(s32 chan, u32 addr, s32 length, void *dst, CARDCallback callback) +{ + CARDControl *card; + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + card->xferCallback = callback; + card->repeat = (int)(length / CARD_SEG_SIZE); + card->addr = addr; + card->buffer = dst; + + return __CARDReadSegment(chan, BlockReadCallback); +} + +static void BlockWriteCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + card->xferred += CARD_PAGE_SIZE; + + card->addr += CARD_PAGE_SIZE; + (u8 *)card->buffer += CARD_PAGE_SIZE; + if (--card->repeat <= 0) { + goto error; + } + + result = __CARDWritePage(chan, BlockWriteCallback); + if (result < 0) { + goto error; + } + return; + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->xferCallback; + if (callback) { + card->xferCallback = 0; + callback(chan, result); + } +} + +s32 __CARDWrite(s32 chan, u32 addr, s32 length, void *dst, CARDCallback callback) +{ + CARDControl *card; + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + card->xferCallback = callback; + card->repeat = (int)(length / CARD_PAGE_SIZE); + card->addr = addr; + card->buffer = dst; + + return __CARDWritePage(chan, BlockWriteCallback); +} diff --git a/src/dolphin/card/CARDRead.c b/src/dolphin/card/CARDRead.c new file mode 100644 index 00000000..4de1d769 --- /dev/null +++ b/src/dolphin/card/CARDRead.c @@ -0,0 +1,149 @@ +#include +#include +#include +#include + +#include + +s32 __CARDSeek(CARDFileInfo *fileInfo, s32 length, s32 offset, CARDControl **pcard) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + s32 result; + u16 *fat; + + result = __CARDGetControlBlock(fileInfo->chan, &card); + if (result < 0) { + return result; + } + + if (!CARDIsValidBlockNo(card, fileInfo->iBlock) || card->cBlock * card->sectorSize <= fileInfo->offset) { + return __CARDPutControlBlock(card, CARD_RESULT_FATAL_ERROR); + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + if (ent->length * card->sectorSize <= offset || ent->length * card->sectorSize < offset + length) { + return __CARDPutControlBlock(card, CARD_RESULT_LIMIT); + } + + card->fileInfo = fileInfo; + fileInfo->length = length; + if (offset < fileInfo->offset) { + fileInfo->offset = 0; + fileInfo->iBlock = ent->startBlock; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + fat = __CARDGetFatBlock(card); + while (fileInfo->offset < TRUNC(offset, card->sectorSize)) { + fileInfo->offset += card->sectorSize; + fileInfo->iBlock = fat[fileInfo->iBlock]; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + + fileInfo->offset = offset; + + *pcard = card; + return CARD_RESULT_READY; +} + +static void ReadCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + u16 *fat; + CARDFileInfo *fileInfo; + s32 length; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + fileInfo = card->fileInfo; + if (fileInfo->length < 0) { + result = CARD_RESULT_CANCELED; + goto error; + } + + length = (s32)TRUNC(fileInfo->offset + card->sectorSize, card->sectorSize) - fileInfo->offset; + fileInfo->length -= length; + if (fileInfo->length <= 0) { + goto error; + } + + fat = __CARDGetFatBlock(card); + fileInfo->offset += length; + fileInfo->iBlock = fat[fileInfo->iBlock]; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + result = CARD_RESULT_BROKEN; + goto error; + } + + result = __CARDRead(chan, card->sectorSize * (u32)fileInfo->iBlock, (fileInfo->length < card->sectorSize) ? fileInfo->length : card->sectorSize, + card->buffer, ReadCallback); + if (result < 0) { + goto error; + } + + return; + +error: + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); +} + +s32 CARDReadAsync(CARDFileInfo *fileInfo, void *buf, s32 length, s32 offset, CARDCallback callback) +{ + CARDControl *card; + s32 result; + CARDDir *dir; + CARDDir *ent; + + if (OFFSET(offset, CARD_SEG_SIZE) != 0 || OFFSET(length, CARD_SEG_SIZE) != 0) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDSeek(fileInfo, length, offset, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + result = __CARDAccess(card, ent); + if (result == CARD_RESULT_NOPERM) { + result = __CARDIsPublic(ent); + } + + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + DCInvalidateRange(buf, (u32)length); + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + + offset = (s32)OFFSET(fileInfo->offset, card->sectorSize); + length = (length < card->sectorSize - offset) ? length : card->sectorSize - offset; + result = __CARDRead(fileInfo->chan, card->sectorSize * (u32)fileInfo->iBlock + offset, length, buf, ReadCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDRead(CARDFileInfo *fileInfo, void *buf, s32 length, s32 offset) +{ + s32 result = CARDReadAsync(fileInfo, buf, length, offset, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(fileInfo->chan); +} diff --git a/src/dolphin/card/CARDRename.c b/src/dolphin/card/CARDRename.c new file mode 100644 index 00000000..83d1c8a5 --- /dev/null +++ b/src/dolphin/card/CARDRename.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include + +#include + +s32 CARDRenameAsync(s32 chan, const char* old, const char* new, CARDCallback callback) { + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + s32 result; + int fileNo; + int newNo; + int oldNo; + + if (*old == 0xff || *new == 0xff || *old == 0x00 || *new == 0x00) { + return CARD_RESULT_FATAL_ERROR; + } + if (CARD_FILENAME_MAX < (u32)strlen(old) || CARD_FILENAME_MAX < (u32)strlen(new)) { + return CARD_RESULT_NAMETOOLONG; + } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + newNo = oldNo = -1; + dir = __CARDGetDirBlock(card); + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + if (ent->gameName[0] == 0xff) { + continue; + } + + if (memcmp(ent->gameName, card->diskID->gameName, sizeof(ent->gameName)) != 0 || + memcmp(ent->company, card->diskID->company, sizeof(ent->company)) != 0) { + continue; + } + + if (__CARDCompareFileName(ent, old)) { + oldNo = fileNo; + } + if (__CARDCompareFileName(ent, new)) { + newNo = fileNo; + } + } + + if (oldNo == -1) { + return __CARDPutControlBlock(card, CARD_RESULT_NOFILE); + } + if (newNo != -1) { + return __CARDPutControlBlock(card, CARD_RESULT_EXIST); + } + + ent = &dir[oldNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + strncpy((char*)ent->fileName, new, CARD_FILENAME_MAX); + + ent->time = (u32)OSTicksToSeconds(OSGetTime()); + result = __CARDUpdateDir(chan, callback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} diff --git a/src/dolphin/card/CARDStat.c b/src/dolphin/card/CARDStat.c new file mode 100644 index 00000000..e4fbc265 --- /dev/null +++ b/src/dolphin/card/CARDStat.c @@ -0,0 +1,158 @@ +#include +#include +#include +#include + +#include "string.h" + +#include + +static void UpdateIconOffsets(CARDDir *ent, CARDStat *stat) +{ + u32 offset; + BOOL iconTlut; + int i; + + offset = ent->iconAddr; + if (offset == 0xffffffff) { + stat->bannerFormat = 0; + stat->iconFormat = 0; + stat->iconSpeed = 0; + offset = 0; + } + + iconTlut = FALSE; + switch (CARDGetBannerFormat(ent)) { + case CARD_STAT_BANNER_C8: + stat->offsetBanner = offset; + offset += CARD_BANNER_WIDTH * CARD_BANNER_HEIGHT; + stat->offsetBannerTlut = offset; + offset += 2 * 256; + break; + case CARD_STAT_BANNER_RGB5A3: + stat->offsetBanner = offset; + offset += 2 * CARD_BANNER_WIDTH * CARD_BANNER_HEIGHT; + stat->offsetBannerTlut = 0xffffffff; + break; + default: + stat->offsetBanner = 0xffffffff; + stat->offsetBannerTlut = 0xffffffff; + break; + } + for (i = 0; i < CARD_ICON_MAX; ++i) { + switch (CARDGetIconFormat(ent, i)) { + case CARD_STAT_ICON_C8: + stat->offsetIcon[i] = offset; + offset += CARD_ICON_WIDTH * CARD_ICON_HEIGHT; + iconTlut = TRUE; + break; + case CARD_STAT_ICON_RGB5A3: + stat->offsetIcon[i] = offset; + offset += 2 * CARD_ICON_WIDTH * CARD_ICON_HEIGHT; + break; + default: + stat->offsetIcon[i] = 0xffffffff; + break; + } + } + if (iconTlut) { + stat->offsetIconTlut = offset; + offset += 2 * 256; + } + else { + stat->offsetIconTlut = 0xffffffff; + } + stat->offsetData = offset; +} + +s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat *stat) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + s32 result; + + if (fileNo < 0 || CARD_MAX_FILE <= fileNo) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result == CARD_RESULT_NOPERM) { + result = __CARDIsPublic(ent); + } + + if (result >= 0) { + memcpy(stat->gameName, ent->gameName, sizeof(stat->gameName)); + memcpy(stat->company, ent->company, sizeof(stat->company)); + stat->length = (u32)ent->length * card->sectorSize; + memcpy(stat->fileName, ent->fileName, CARD_FILENAME_MAX); + stat->time = ent->time; + + stat->bannerFormat = ent->bannerFormat; + stat->iconAddr = ent->iconAddr; + stat->iconFormat = ent->iconFormat; + stat->iconSpeed = ent->iconSpeed; + stat->commentAddr = ent->commentAddr; + + UpdateIconOffsets(ent, stat); + } + return __CARDPutControlBlock(card, result); +} + +s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat *stat, CARDCallback callback) +{ + CARDControl *card; + CARDDir *dir; + CARDDir *ent; + s32 result; + + if (fileNo < 0 || CARD_MAX_FILE <= fileNo || (stat->iconAddr != 0xffffffff && CARD_READ_SIZE <= stat->iconAddr) + || (stat->commentAddr != 0xffffffff && CARD_SYSTEM_BLOCK_SIZE - CARD_COMMENT_SIZE < stat->commentAddr % CARD_SYSTEM_BLOCK_SIZE)) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + ent->bannerFormat = stat->bannerFormat; + ent->iconAddr = stat->iconAddr; + ent->iconFormat = stat->iconFormat; + ent->iconSpeed = stat->iconSpeed; + ent->commentAddr = stat->commentAddr; + UpdateIconOffsets(ent, stat); + + if (ent->iconAddr == 0xffffffff) { + CARDSetIconSpeed(ent, 0, CARD_STAT_SPEED_FAST); + } + + ent->time = (u32)OSTicksToSeconds(OSGetTime()); + result = __CARDUpdateDir(chan, callback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDSetStatus(s32 chan, s32 fileNo, CARDStat *stat) +{ + s32 result = CARDSetStatusAsync(chan, fileNo, stat, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); +} diff --git a/src/dolphin/card/CARDUnlock.c b/src/dolphin/card/CARDUnlock.c new file mode 100644 index 00000000..55989b97 --- /dev/null +++ b/src/dolphin/card/CARDUnlock.c @@ -0,0 +1,406 @@ +#include +#include +#include +#include +#include + +#include "string.h" + +#include + +static void InitCallback(void *task); +static void DoneCallback(void *task); + +static u8 CardData[] ATTRIBUTE_ALIGN(32) = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x02, 0xFF, 0x00, 0x21, 0x13, 0x06, 0x12, 0x03, 0x12, 0x04, 0x13, 0x05, 0x00, + 0x92, 0x00, 0xFF, 0x00, 0x88, 0xFF, 0xFF, 0x00, 0x89, 0xFF, 0xFF, 0x00, 0x8A, 0xFF, 0xFF, 0x00, 0x8B, 0xFF, 0xFF, 0x8F, 0x00, 0x02, 0xBF, 0x00, + 0x88, 0x16, 0xFC, 0xDC, 0xD1, 0x16, 0xFD, 0x00, 0x00, 0x16, 0xFB, 0x00, 0x01, 0x02, 0xBF, 0x00, 0x8E, 0x25, 0xFF, 0x03, 0x80, 0xFF, 0x00, 0x02, + 0x94, 0x00, 0x27, 0x02, 0xBF, 0x00, 0x8E, 0x1F, 0xDF, 0x24, 0xFF, 0x02, 0x40, 0x0F, 0xFF, 0x00, 0x98, 0x04, 0x00, 0x00, 0x9A, 0x00, 0x10, 0x00, + 0x99, 0x00, 0x00, 0x8E, 0x00, 0x02, 0xBF, 0x00, 0x94, 0x02, 0xBF, 0x86, 0x44, 0x02, 0xBF, 0x00, 0x88, 0x16, 0xFC, 0xDC, 0xD1, 0x16, 0xFD, 0x00, + 0x03, 0x16, 0xFB, 0x00, 0x01, 0x8F, 0x00, 0x02, 0xBF, 0x00, 0x8E, 0x03, 0x80, 0xCD, 0xD1, 0x02, 0x94, 0x00, 0x48, 0x27, 0xFF, 0x03, 0x80, 0x00, + 0x01, 0x02, 0x95, 0x00, 0x5A, 0x03, 0x80, 0x00, 0x02, 0x02, 0x95, 0x80, 0x00, 0x02, 0x9F, 0x00, 0x48, 0x00, 0x21, 0x8E, 0x00, 0x02, 0xBF, 0x00, + 0x8E, 0x25, 0xFF, 0x02, 0xBF, 0x00, 0x8E, 0x25, 0xFF, 0x02, 0xBF, 0x00, 0x8E, 0x25, 0xFF, 0x02, 0xBF, 0x00, 0x8E, 0x00, 0xC5, 0xFF, 0xFF, 0x03, + 0x40, 0x0F, 0xFF, 0x1C, 0x9F, 0x02, 0xBF, 0x00, 0x8E, 0x00, 0xC7, 0xFF, 0xFF, 0x02, 0xBF, 0x00, 0x8E, 0x00, 0xC6, 0xFF, 0xFF, 0x02, 0xBF, 0x00, + 0x8E, 0x00, 0xC0, 0xFF, 0xFF, 0x02, 0xBF, 0x00, 0x8E, 0x20, 0xFF, 0x03, 0x40, 0x0F, 0xFF, 0x1F, 0x5F, 0x02, 0xBF, 0x00, 0x8E, 0x21, 0xFF, 0x02, + 0xBF, 0x00, 0x8E, 0x23, 0xFF, 0x12, 0x05, 0x12, 0x06, 0x02, 0x9F, 0x80, 0xB5, 0x00, 0x21, 0x27, 0xFC, 0x03, 0xC0, 0x80, 0x00, 0x02, 0x9D, 0x00, + 0x88, 0x02, 0xDF, 0x27, 0xFE, 0x03, 0xC0, 0x80, 0x00, 0x02, 0x9C, 0x00, 0x8E, 0x02, 0xDF, 0x2E, 0xCE, 0x2C, 0xCF, 0x00, 0xF8, 0xFF, 0xCD, 0x00, + 0xF9, 0xFF, 0xC9, 0x00, 0xFA, 0xFF, 0xCB, 0x26, 0xC9, 0x02, 0xC0, 0x00, 0x04, 0x02, 0x9D, 0x00, 0x9C, 0x02, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +typedef struct DecodeParameters { + u8 *inputAddr; + u32 inputLength; + u32 aramAddr; + u8 *outputAddr; +} DecodeParameters; + +static unsigned long int next = 1; + +static int CARDRand(void) +{ + next = next * 1103515245 + 12345; + return (int)((unsigned int)(next / 65536) % 32768); +} + +static void CARDSrand(unsigned int seed) +{ + next = seed; +} + +static u32 GetInitVal(void) +{ + u32 tmp; + u32 tick; + + tick = OSGetTick(); + CARDSrand(tick); + tmp = 0x7fec8000; + tmp |= CARDRand(); + tmp &= 0xfffff000; + return tmp; +} + +static u32 exnor_1st(u32 data, u32 rshift) +{ + u32 wk; + u32 w; + u32 i; + + w = data; + for (i = 0; i < rshift; i++) { + wk = ~(w ^ (w >> 7) ^ (w >> 15) ^ (w >> 23)); + w = (w >> 1) | ((wk << 30) & 0x40000000); + } + return w; +} + +static u32 exnor(u32 data, u32 lshift) +{ + u32 wk; + u32 w; + u32 i; + + w = data; + for (i = 0; i < lshift; i++) { + // 1bit Left Shift + wk = ~(w ^ (w << 7) ^ (w << 15) ^ (w << 23)); + w = (w << 1) | ((wk >> 30) & 0x00000002); + // printf("i=%d, w=%8x\n", i, w); + } + return w; +} + +static u32 bitrev(u32 data) +{ + u32 wk; + u32 i; + u32 k = 0; + u32 j = 1; + + wk = 0; + for (i = 0; i < 32; i++) { + if (i > 15) { + if (i == 31) { + wk |= (((data & (0x01 << 31)) >> 31) & 0x01); + } + else { + wk |= ((data & (0x01 << i)) >> j); + j += 2; + } + } + else { + wk |= ((data & (0x01 << i)) << (31 - i - k)); + k++; + } + } + return wk; +} + +#define SEC_AD1(x) ((u8)(((x) >> 29) & 0x03)) +#define SEC_AD2(x) ((u8)(((x) >> 21) & 0xff)) +#define SEC_AD3(x) ((u8)(((x) >> 19) & 0x03)) +#define SEC_BA(x) ((u8)(((x) >> 12) & 0x7f)) + +static s32 ReadArrayUnlock(s32 chan, u32 data, void *rbuf, s32 rlen, s32 mode) +{ + CARDControl *card; + BOOL err; + u8 cmd[5]; + + card = &__CARDBlock[chan]; + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + data &= 0xfffff000; + memset(cmd, 0, 5); + cmd[0] = 0x52; + if (mode == 0) { + cmd[1] = SEC_AD1(data); + cmd[2] = SEC_AD2(data); + cmd[3] = SEC_AD3(data); + cmd[4] = SEC_BA(data); + } + else { + cmd[1] = (u8)((data & 0xff000000) >> 24); + cmd[2] = (u8)((data & 0x00ff0000) >> 16); + } + + err = FALSE; + err |= !EXIImmEx(chan, cmd, 5, 1); + err |= !EXIImmEx(chan, (u8 *)card->workArea + (u32)sizeof(CARDID), card->latency, 1); + err |= !EXIImmEx(chan, rbuf, rlen, 0); + err |= !EXIDeselect(chan); + + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; +} + +// Calculate Dummy Read Length, 4-32Bytes +static s32 DummyLen(void) +{ + u32 tick; + u32 wk; + s32 tmp; + u32 max; + + wk = 1; + max = 0; + tick = OSGetTick(); + CARDSrand(tick); + + tmp = CARDRand(); + tmp &= 0x0000001f; + tmp += 1; + while ((tmp < 4) && (max < 10)) { + tick = OSGetTick(); + tmp = (s32)(tick << wk); + wk++; + if (wk > 16) { + wk = 1; + } + CARDSrand((u32)tmp); + tmp = CARDRand(); + tmp &= 0x0000001f; + tmp += 1; + max++; + } + if (tmp < 4) { + tmp = 4; + } + + return tmp; +} + +s32 __CARDUnlock(s32 chan, u8 flashID[12]) +{ + u32 init_val; + u32 data; + + s32 dummy; + s32 rlen; + u32 rshift; + + u8 fsts; + u32 wk, wk1; + u32 Ans1 = 0; + u32 Ans2 = 0; + u32 *dp; + u8 rbuf[64]; + u32 para1A = 0; + u32 para1B = 0; + u32 para2A = 0; + u32 para2B = 0; + + CARDControl *card; + DSPTaskInfo *task; + DecodeParameters *param; + u8 *input; + u8 *output; + + card = &__CARDBlock[chan]; + task = &card->task; + param = (DecodeParameters *)card->workArea; + input = (u8 *)((u8 *)param + sizeof(DecodeParameters)); + input = (u8 *)OSRoundUp32B(input); + output = input + 32; + + fsts = 0; + init_val = GetInitVal(); + + dummy = DummyLen(); + rlen = dummy; + if (ReadArrayUnlock(chan, init_val, rbuf, rlen, 0) < 0) { + return CARD_RESULT_NOCARD; + } + + rshift = (u32)(dummy * 8 + 1); + wk = exnor_1st(init_val, rshift); + wk1 = ~(wk ^ (wk >> 7) ^ (wk >> 15) ^ (wk >> 23)); + card->scramble = (wk | ((wk1 << 31) & 0x80000000)); + card->scramble = bitrev(card->scramble); + dummy = DummyLen(); + rlen = 20 + dummy; + data = 0; + if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { + return CARD_RESULT_NOCARD; + } + dp = (u32 *)rbuf; + para1A = *dp++; + para1B = *dp++; + Ans1 = *dp++; + para2A = *dp++; + para2B = *dp++; + para1A = (para1A ^ card->scramble); + rshift = 32; + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + para1B = (para1B ^ card->scramble); + rshift = 32; + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + Ans1 ^= card->scramble; + rshift = 32; + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + para2A = (para2A ^ card->scramble); + rshift = 32; + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + para2B = (para2B ^ card->scramble); + rshift = (u32)(dummy * 8); + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + rshift = 32 + 1; + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + + *(u32 *)&input[0] = para2A; + *(u32 *)&input[4] = para2B; + + param->inputAddr = input; + param->inputLength = 8; + param->outputAddr = output; + param->aramAddr = 0; + + DCFlushRange(input, 8); + DCInvalidateRange(output, 4); + DCFlushRange(param, sizeof(DecodeParameters)); + + task->priority = 255; + task->iram_mmem_addr = (u16 *)OSPhysicalToCached(CardData); + task->iram_length = 0x160; + task->iram_addr = 0; + task->dsp_init_vector = 0x10; + task->init_cb = InitCallback; + task->res_cb = NULL; + task->done_cb = DoneCallback; + task->req_cb = NULL; + DSPAddTask(task); + + dp = (u32 *)flashID; + *dp++ = para1A; + *dp++ = para1B; + *dp = Ans1; + + return CARD_RESULT_READY; +} + +static void InitCallback(void *_task) +{ + s32 chan; + CARDControl *card; + DSPTaskInfo *task; + DecodeParameters *param; + + task = _task; + for (chan = 0; chan < 2; ++chan) { + card = &__CARDBlock[chan]; + if ((DSPTaskInfo *)&card->task == task) { + break; + } + } + param = (DecodeParameters *)card->workArea; + + DSPSendMailToDSP(0xff000000); + while (DSPCheckMailToDSP()) + ; + + DSPSendMailToDSP((u32)param); + while (DSPCheckMailToDSP()) + ; +} + +static void DoneCallback(void *_task) +{ + u8 rbuf[64]; + u32 data; + s32 dummy; + s32 rlen; + u32 rshift; + + u8 unk; + u32 wk, wk1; + u32 Ans2; + + s32 chan; + CARDControl *card; + s32 result; + DSPTaskInfo *task; + DecodeParameters *param; + + u8 *input; + u8 *output; + task = _task; + for (chan = 0; chan < 2; ++chan) { + card = &__CARDBlock[chan]; + if ((DSPTaskInfo *)&card->task == task) { + break; + } + } + + param = (DecodeParameters *)card->workArea; + input = (u8 *)((u8 *)param + sizeof(DecodeParameters)); + input = (u8 *)OSRoundUp32B(input); + output = input + 32; + + Ans2 = *(u32 *)output; + dummy = DummyLen(); + rlen = dummy; + data = ((Ans2 ^ card->scramble) & 0xffff0000); + if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { + EXIUnlock(chan); + __CARDMountCallback(chan, CARD_RESULT_NOCARD); + return; + } + + rshift = (u32)((dummy + 4 + card->latency) * 8 + 1); + wk = exnor(card->scramble, rshift); + wk1 = ~(wk ^ (wk << 7) ^ (wk << 15) ^ (wk << 23)); + card->scramble = (wk | ((wk1 >> 31) & 0x00000001)); + + dummy = DummyLen(); + rlen = dummy; + data = (((Ans2 << 16) ^ card->scramble) & 0xffff0000); + if (ReadArrayUnlock(chan, data, rbuf, rlen, 1) < 0) { + EXIUnlock(chan); + __CARDMountCallback(chan, CARD_RESULT_NOCARD); + return; + } + result = __CARDReadStatus(chan, &unk); + if (!EXIProbe(chan)) { + EXIUnlock(chan); + __CARDMountCallback(chan, CARD_RESULT_NOCARD); + return; + } + if (result == CARD_RESULT_READY && !(unk & 0x40)) { + EXIUnlock(chan); + result = CARD_RESULT_IOERROR; + } + __CARDMountCallback(chan, result); +} diff --git a/src/dolphin/card/CARDWrite.c b/src/dolphin/card/CARDWrite.c new file mode 100644 index 00000000..ca8aacfb --- /dev/null +++ b/src/dolphin/card/CARDWrite.c @@ -0,0 +1,128 @@ +#include +#include +#include +#include + +#include + +static void EraseCallback(s32 chan, s32 result); + +static void WriteCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + u16 *fat; + CARDDir *dir; + CARDDir *ent; + CARDFileInfo *fileInfo; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + fileInfo = card->fileInfo; + if (fileInfo->length < 0) { + result = CARD_RESULT_CANCELED; + goto error; + } + + fileInfo->length -= card->sectorSize; + if (fileInfo->length <= 0) { + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + ent->time = (u32)OSTicksToSeconds(OSGetTime()); + callback = card->apiCallback; + card->apiCallback = 0; + result = __CARDUpdateDir(chan, callback); + } + else { + fat = __CARDGetFatBlock(card); + fileInfo->offset += card->sectorSize; + fileInfo->iBlock = fat[fileInfo->iBlock]; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + result = CARD_RESULT_BROKEN; + goto error; + } + result = __CARDEraseSector(chan, card->sectorSize * (u32)fileInfo->iBlock, EraseCallback); + } + + if (result < 0) { + goto error; + } + return; + +error: + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); +} + +static void EraseCallback(s32 chan, s32 result) +{ + CARDControl *card; + CARDCallback callback; + CARDFileInfo *fileInfo; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + fileInfo = card->fileInfo; + result = __CARDWrite(chan, card->sectorSize * (u32)fileInfo->iBlock, card->sectorSize, card->buffer, WriteCallback); + if (result < 0) { + goto error; + } + return; + +error: + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); +} + +s32 CARDWriteAsync(CARDFileInfo *fileInfo, const void *buf, s32 length, s32 offset, CARDCallback callback) +{ + CARDControl *card; + s32 result; + CARDDir *dir; + CARDDir *ent; + + result = __CARDSeek(fileInfo, length, offset, &card); + if (result < 0) { + return result; + } + + if (OFFSET(offset, card->sectorSize) != 0 || OFFSET(length, card->sectorSize) != 0) { + return __CARDPutControlBlock(card, CARD_RESULT_FATAL_ERROR); + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + DCStoreRange((void *)buf, (u32)length); + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + card->buffer = (void *)buf; + result = __CARDEraseSector(fileInfo->chan, card->sectorSize * (u32)fileInfo->iBlock, EraseCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} + +s32 CARDWrite(CARDFileInfo *fileInfo, const void *buf, s32 length, s32 offset) +{ + s32 result = CARDWriteAsync(fileInfo, buf, length, offset, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(fileInfo->chan); +} diff --git a/src/dolphin/db.c b/src/dolphin/db.c new file mode 100644 index 00000000..bcf8534d --- /dev/null +++ b/src/dolphin/db.c @@ -0,0 +1,43 @@ +#include +#include + +DBInterface* __DBInterface = NULL; +int DBVerbose; + +extern void __DBExceptionStart(); +extern void __DBExceptionEnd(); +extern void __DBExceptionSetNumber(); + +void DBInit(void) { + __DBInterface = (DBInterface*)OSPhysicalToCached(OS_DBINTERFACE_ADDR); + __DBInterface->ExceptionDestination = (void (*)())OSCachedToPhysical(__DBExceptionDestination); + DBVerbose = TRUE; +} + +void __DBExceptionDestinationAux(void) { + u32* contextAddr = (void*)0x00C0; + OSContext* context = (OSContext*)OSPhysicalToCached(*contextAddr); + + OSReport("DBExceptionDestination\n"); + OSDumpContext(context); + PPCHalt(); +} + +/* clang-format off */ +asm void __DBExceptionDestination(void) { + nofralloc + mfmsr r3 + ori r3, r3, 0x10|0x20 + mtmsr r3 + + b __DBExceptionDestinationAux +} +/* clang-format on */ + +BOOL __DBIsExceptionMarked(__OSException exception) { + u32 mask = 1 << exception; + + return (BOOL)(__DBInterface->exceptionMask & mask); +} + +void DBPrintf(char* format, ...) {} diff --git a/src/dolphin/demo/DEMOFont.c b/src/dolphin/demo/DEMOFont.c new file mode 100644 index 00000000..121cd356 --- /dev/null +++ b/src/dolphin/demo/DEMOFont.c @@ -0,0 +1,773 @@ +#include +#include + +unsigned long DEMOFontBitmap[768] ATTRIBUTE_ALIGN(32) = { + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x000FF000, + 0x000FF000, + 0x000FF000, + 0x00000000, + 0x000FF000, + 0x00000000, + 0x00F00F00, + 0x00F00F00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F00F00, + 0x00F00F00, + 0x0FFFFFF0, + 0x00F00F00, + 0x0FFFFFF0, + 0x00F00F00, + 0x00F00F00, + 0x00000000, + 0x0000F000, + 0x00FFFFF0, + 0x0F00F000, + 0x00FFFF00, + 0x0000F0F0, + 0x0FFFFF00, + 0x0000F000, + 0x00000000, + 0x0FF000F0, + 0x0FF00F00, + 0x0000F000, + 0x000F0000, + 0x00F00FF0, + 0x0F000FF0, + 0x00000000, + 0x00000000, + 0x000F0000, + 0x00F0F000, + 0x00F0F000, + 0x00FF0000, + 0x0F000FF0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x0000F000, + 0x000F0000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000F000, + 0x000F0000, + 0x00F00000, + 0x00F00000, + 0x00F00000, + 0x000F0000, + 0x0000F000, + 0x00000000, + 0x000F0000, + 0x0000F000, + 0x00000F00, + 0x00000F00, + 0x00000F00, + 0x0000F000, + 0x000F0000, + 0x00000000, + 0x00000000, + 0x00F000F0, + 0x000F0F00, + 0x00FFFFF0, + 0x000F0F00, + 0x00F000F0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000F000, + 0x0000F000, + 0x00FFFFF0, + 0x0000F000, + 0x0000F000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x0000F000, + 0x000F0000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00FFFFF0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x00000000, + 0x000000F0, + 0x00000F00, + 0x0000F000, + 0x000F0000, + 0x00F00000, + 0x0F000000, + 0x00000000, + 0x00000000, + 0x000FF000, + 0x00F00F00, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x00F00F00, + 0x000FF000, + 0x00000000, + 0x0000F000, + 0x000FF000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x000FFF00, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x000000F0, + 0x00000F00, + 0x0000F000, + 0x000F0000, + 0x0FFFFFF0, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x000000F0, + 0x0000FF00, + 0x000000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x00000F00, + 0x0000FF00, + 0x000F0F00, + 0x00F00F00, + 0x0FFFFFF0, + 0x00000F00, + 0x00000F00, + 0x00000000, + 0x0FFFFFF0, + 0x0F000000, + 0x0F000000, + 0x0FFFFF00, + 0x000000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x000FFF00, + 0x00F00000, + 0x0F000000, + 0x0FFFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x0FFFFFF0, + 0x0F0000F0, + 0x00000F00, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x00FFFFF0, + 0x000000F0, + 0x000000F0, + 0x00FFFF00, + 0x00000000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x00000000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x0000F000, + 0x000F0000, + 0x00000000, + 0x00000F00, + 0x0000F000, + 0x000F0000, + 0x00F00000, + 0x000F0000, + 0x0000F000, + 0x00000F00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0FFFFFF0, + 0x00000000, + 0x0FFFFFF0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F00000, + 0x000F0000, + 0x0000F000, + 0x00000F00, + 0x0000F000, + 0x000F0000, + 0x00F00000, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0000FF00, + 0x000FF000, + 0x00000000, + 0x000FF000, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F000FF0, + 0x0F00F0F0, + 0x0F00FFF0, + 0x0F000000, + 0x00FFFFF0, + 0x00000000, + 0x000FF000, + 0x00F00F00, + 0x0F0000F0, + 0x0F0000F0, + 0x0FFFFFF0, + 0x0F0000F0, + 0x0F0000F0, + 0x00000000, + 0x0FFFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0FFFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0FFFFF00, + 0x00000000, + 0x000FFF00, + 0x00F000F0, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x00F000F0, + 0x000FFF00, + 0x00000000, + 0x0FFFF000, + 0x0F000F00, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F000F00, + 0x0FFFF000, + 0x00000000, + 0x0FFFFFF0, + 0x0F000000, + 0x0F000000, + 0x0FFFFF00, + 0x0F000000, + 0x0F000000, + 0x0FFFFFF0, + 0x00000000, + 0x0FFFFFF0, + 0x0F000000, + 0x0F000000, + 0x0FFFFF00, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x00000000, + 0x000FFF00, + 0x00F00000, + 0x0F000000, + 0x0F00FFF0, + 0x0F0000F0, + 0x00F000F0, + 0x000FFF00, + 0x00000000, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0FFFFFF0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x00000000, + 0x000FFF00, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x000FFF00, + 0x00000000, + 0x0000FFF0, + 0x00000F00, + 0x00000F00, + 0x00000F00, + 0x00000F00, + 0x0F000F00, + 0x00FFF000, + 0x00000000, + 0x0F0000F0, + 0x0F000F00, + 0x0F00F000, + 0x0FFF0000, + 0x0F00F000, + 0x0F000F00, + 0x0F0000F0, + 0x00000000, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x0FFFFFF0, + 0x00000000, + 0x0F00000F, + 0x0FF000FF, + 0x0F0F0F0F, + 0x0F00F00F, + 0x0F00F00F, + 0x0F00000F, + 0x0F00000F, + 0x00000000, + 0x0F0000F0, + 0x0FF000F0, + 0x0F0F00F0, + 0x0F00F0F0, + 0x0F00F0F0, + 0x0F000FF0, + 0x0F0000F0, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x0FFFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0FFFFF00, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F00F0F0, + 0x0F000F00, + 0x00FFF0F0, + 0x00000000, + 0x0FFFFF00, + 0x0F0000F0, + 0x0F0000F0, + 0x0FFFFF00, + 0x0F00F000, + 0x0F000F00, + 0x0F0000F0, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0F000000, + 0x00FFFF00, + 0x000000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x0FFFFFFF, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000000, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x00FFFF00, + 0x00000000, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x0F0000F0, + 0x00F00F00, + 0x00F00F00, + 0x000FF000, + 0x00000000, + 0x0F00000F, + 0x0F00000F, + 0x0F00000F, + 0x0F00F00F, + 0x0F00F00F, + 0x0F00F00F, + 0x00FF0FF0, + 0x00000000, + 0x0F0000F0, + 0x0F0000F0, + 0x00F00F00, + 0x000FF000, + 0x00F00F00, + 0x0F0000F0, + 0x0F0000F0, + 0x00000000, + 0x0F00000F, + 0x00F000F0, + 0x000F0F00, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000000, + 0x0FFFFFF0, + 0x000000F0, + 0x00000F00, + 0x000FF000, + 0x00F00000, + 0x0F000000, + 0x0FFFFFF0, + 0x00000000, + 0x000FFF00, + 0x000F0000, + 0x000F0000, + 0x000F0000, + 0x000F0000, + 0x000F0000, + 0x000FFF00, + 0x00000000, + 0x0F000000, + 0x00F00000, + 0x000F0000, + 0x0000F000, + 0x00000F00, + 0x000000F0, + 0x00000000, + 0x00000000, + 0x00FFF000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00FFF000, + 0x00000000, + 0x000FF000, + 0x00F00F00, + 0x0F0000F0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0FFFFFF0, + 0x00000000, + 0x000FF000, + 0x000FF000, + 0x000F0000, + 0x0000F000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00FFFF00, + 0x0F000F00, + 0x0F000F00, + 0x0F000F00, + 0x00FFFFF0, + 0x00000000, + 0x00F00000, + 0x00F00000, + 0x00F00000, + 0x00FFFF00, + 0x00F000F0, + 0x00F000F0, + 0x00FFFF00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00FFFF00, + 0x0F000000, + 0x0F000000, + 0x0F000000, + 0x00FFFF00, + 0x00000000, + 0x000000F0, + 0x000000F0, + 0x000000F0, + 0x000FFFF0, + 0x00F000F0, + 0x00F000F0, + 0x000FFFF0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00FFFF00, + 0x0F0000F0, + 0x0FFFFFF0, + 0x0F000000, + 0x00FFFF00, + 0x00000000, + 0x0000FF00, + 0x000F0000, + 0x000F0000, + 0x0FFFFF00, + 0x000F0000, + 0x000F0000, + 0x000F0000, + 0x00000000, + 0x00000000, + 0x000FFFF0, + 0x00F000F0, + 0x00F000F0, + 0x000FFFF0, + 0x000000F0, + 0x000FFF00, + 0x00000000, + 0x00F00000, + 0x00F00000, + 0x00F00000, + 0x00F0FF00, + 0x00FF00F0, + 0x00F000F0, + 0x00F000F0, + 0x00000000, + 0x00000000, + 0x0000F000, + 0x00000000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000000, + 0x00000F00, + 0x00000000, + 0x00000F00, + 0x00000F00, + 0x00000F00, + 0x00F00F00, + 0x000FF000, + 0x00000000, + 0x00000000, + 0x00F00000, + 0x00F00000, + 0x00F00F00, + 0x00F0F000, + 0x00FFF000, + 0x00F00F00, + 0x00000000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000F00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F0FF00, + 0x0F0F00F0, + 0x0F0F00F0, + 0x0F0F00F0, + 0x0F0F00F0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F0FF00, + 0x00FF00F0, + 0x00F000F0, + 0x00F000F0, + 0x00F000F0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x000FFF00, + 0x00F000F0, + 0x00F000F0, + 0x00F000F0, + 0x000FFF00, + 0x00000000, + 0x00000000, + 0x00FFF000, + 0x00F00F00, + 0x00F00F00, + 0x00FFF000, + 0x00F00000, + 0x00F00000, + 0x00000000, + 0x00000000, + 0x000FFF00, + 0x00F00F00, + 0x00F00F00, + 0x000FFF00, + 0x00000F00, + 0x00000FF0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F0FFF0, + 0x00FF0000, + 0x00F00000, + 0x00F00000, + 0x00F00000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x000FFFF0, + 0x00F00000, + 0x000FFF00, + 0x000000F0, + 0x00FFFF00, + 0x00000000, + 0x00000000, + 0x0000F000, + 0x00FFFFF0, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000FF0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F000F0, + 0x00F000F0, + 0x00F000F0, + 0x00F000F0, + 0x000FFFF0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F000F0, + 0x00F000F0, + 0x00F000F0, + 0x000F0F00, + 0x0000F000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0F0000F0, + 0x0F00F0F0, + 0x0F00F0F0, + 0x0F00F0F0, + 0x00FF0F00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00F000F0, + 0x000F0F00, + 0x0000F000, + 0x000F0F00, + 0x00F000F0, + 0x00000000, + 0x00000000, + 0x0F000F00, + 0x0F000F00, + 0x00F00F00, + 0x000FFF00, + 0x00000F00, + 0x00FFF000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00FFFFF0, + 0x00000F00, + 0x0000F000, + 0x000F0000, + 0x00FFFFF0, + 0x00000000, + 0x00000F00, + 0x0000F000, + 0x0000F000, + 0x00FF0000, + 0x0000F000, + 0x0000F000, + 0x00000F00, + 0x00000000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x0000F000, + 0x00000000, + 0x000F0000, + 0x0000F000, + 0x0000F000, + 0x00000FF0, + 0x0000F000, + 0x0000F000, + 0x000F0000, + 0x00000000, + 0x00FF00FF, + 0x0F00FF00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00FF0000, + 0x0FF00000, + 0xFFFFFFFF, + 0xFFFFF000, + 0xFFFFF000, + 0xFFF00000, + 0x00000000 +}; diff --git a/src/dolphin/demo/DEMOInit.c b/src/dolphin/demo/DEMOInit.c new file mode 100644 index 00000000..86df9bd1 --- /dev/null +++ b/src/dolphin/demo/DEMOInit.c @@ -0,0 +1,251 @@ +#include +#include +#include +#include +#include +#include "game/init.h" + +#include + +extern unsigned char DemoStatEnable; // size: 0x1, address: 0x0 + +// .bss +static struct _GXRenderModeObj rmodeobj; // size: 0x3C, address: 0x0 + +// .sdata +static unsigned char DemoFirstFrame = 1; // size: 0x1, address: 0x0 + +// .sbss +static void *DefaultFifo = NULL; // size: 0x4, address: 0x0 +static GXFifoObj *DefaultFifoObj = NULL; // size: 0x4, address: 0x4 +static struct _GXRenderModeObj *rmode; // size: 0x4, address: 0x8 +static int BypassWorkaround; // size: 0x4, address: 0xC +static unsigned long FrameCount; // size: 0x4, address: 0x10 +static unsigned long FrameMissThreshold; // size: 0x4, address: 0x14 + +// functions +static void __DEMOInitRenderMode(struct _GXRenderModeObj *mode); +static void __DEMOInitMem(); +static void __DEMOInitGX(); +static void __DEMOInitVI(); +static void __DEMOInitForEmu(); +static void __BypassRetraceCallback(); +static void LoadMemInfo(); + +void DEMOInit(struct _GXRenderModeObj *mode) +{ + OSInit(); + DVDInit(); + VIInit(); + DEMOPadInit(); + __DEMOInitRenderMode(mode); + __DEMOInitMem(); + VIConfigure(rmode); + DefaultFifo = OSAllocFromHeap(__OSCurrHeap, 0x40000); + DefaultFifoObj = GXInit(DefaultFifo, 0x40000); + __DEMOInitGX(); + __DEMOInitVI(); +} + +static void __DEMOInitRenderMode(struct _GXRenderModeObj *mode) +{ + if (mode != NULL) { + rmode = mode; + return; + } + switch (VIGetTvFormat()) { + case VI_NTSC: + rmode = &GXNtsc480IntDf; + break; + case VI_PAL: + rmode = &GXPal528IntDf; + break; + case VI_MPAL: + rmode = &GXMpal480IntDf; + break; + default: + OSPanic(__FILE__, 0x1A6, "DEMOInit: invalid TV format\n"); + break; + } + GXAdjustForOverscan(rmode, &rmodeobj, 0, 0x10); + rmode = &rmodeobj; +} + +static void __DEMOInitMem() +{ + void *arenaLo = OSGetArenaLo(); + void *arenaHi = OSGetArenaHi(); + unsigned long fbSize = ((u16)(rmode->fbWidth + 15) & 0xFFF0) * rmode->xfbHeight * 2; + + DemoFrameBuffer1 = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); + DemoFrameBuffer2 = (void *)(((u32)DemoFrameBuffer1 + fbSize + 0x1F) & 0xFFFFFFE0); + DemoCurrentBuffer = DemoFrameBuffer2; + arenaLo = (void *)(((u32)DemoFrameBuffer2 + fbSize + 0x1F) & 0xFFFFFFE0); + OSSetArenaLo(arenaLo); + if (((OSGetConsoleType() + 0xF0000000) == 4U) && ((OSGetPhysicalMemSize() + 0xFFC00000) != 0U) + && (OSGetConsoleSimulatedMemSize() < 0x01800000U)) { + LoadMemInfo(); + return; + } + arenaLo = OSGetArenaLo(); + arenaHi = OSGetArenaHi(); + arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); + OSSetArenaLo(arenaLo); + arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); + arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0); + OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi)); + OSSetArenaLo((arenaLo = arenaHi)); +} + +static void __DEMOInitGX() +{ + GXSetViewport(0.0f, 0.0f, rmode->fbWidth, rmode->xfbHeight, 0.0f, 1.0f); + GXSetScissor(0, 0, rmode->fbWidth, rmode->efbHeight); + GXSetDispCopySrc(0, 0, rmode->fbWidth, rmode->efbHeight); + GXSetDispCopyDst(rmode->fbWidth, rmode->xfbHeight); + GXSetDispCopyYScale(((f32)rmode->xfbHeight / (f32)rmode->efbHeight)); + GXSetCopyFilter(rmode->aa, rmode->sample_pattern, 1, rmode->vfilter); + if (rmode->aa != 0) { + GXSetPixelFmt(2, 0); + } + else { + GXSetPixelFmt(0, 0); + } + GXCopyDisp(DemoCurrentBuffer, 1); + GXSetDispCopyGamma(0); +} + +static void __DEMOInitVI() +{ + unsigned long nin; + + VISetNextFrameBuffer(DemoFrameBuffer1); + DemoCurrentBuffer = DemoFrameBuffer2; + VIFlush(); + VIWaitForRetrace(); + nin = rmode->viTVmode & 1; + if (nin != 0) { + VIWaitForRetrace(); + } +} + +static void __DEMOInitForEmu() { } + +void DEMOBeforeRender() +{ + if (BypassWorkaround != 0) { + GXSetDrawSync(0xFEEB); + } + if (rmode->field_rendering != 0) { + GXSetViewportJitter(0.0f, 0.0f, rmode->fbWidth, rmode->xfbHeight, 0.0f, 1.0f, VIGetNextField()); + } + else { + GXSetViewport(0.0f, 0.0f, rmode->fbWidth, rmode->xfbHeight, 0.0f, 1.0f); + } + GXInvalidateVtxCache(); + GXInvalidateTexAll(); +} + +void DEMOSwapBuffers() +{ + VISetNextFrameBuffer(DemoCurrentBuffer); + if (DemoFirstFrame != 0) { + VISetBlack(0); + DemoFirstFrame = 0; + } + VIFlush(); + VIWaitForRetrace(); + if ((u32)DemoCurrentBuffer == (u32)DemoFrameBuffer1) { + DemoCurrentBuffer = DemoFrameBuffer2; + return; + } + DemoCurrentBuffer = DemoFrameBuffer1; +} + +struct _GXRenderModeObj *DEMOGetRenderModeObj() +{ + return rmode; +} + +u32 DEMOGetCurrentBuffer(void) +{ + return (u32)DemoCurrentBuffer; +} + +void DEMOEnableBypassWorkaround(unsigned long timeoutFrames) +{ + BypassWorkaround = 1; + FrameMissThreshold = timeoutFrames; + VISetPreRetraceCallback(__BypassRetraceCallback); +} + +static void __BypassRetraceCallback() +{ + FrameCount += 1; +} + +static void LoadMemInfo() +{ + void *arenaHiOld; + void *arenaLo; + void *arenaHi; + void *simMemEnd; + struct DVDFileInfo fileInfo; + unsigned long length; + unsigned long transferLength; + long offset; + unsigned long i; + unsigned long indexMax; + char *buf[63]; + struct { + void *start; + void *end; + } *memEntry; + + OSReport("\nNow, try to find memory info file...\n\n"); + if (!DVDOpen("/meminfo.bin", &fileInfo)) { + 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() >> 0x14); + arenaLo = OSGetArenaLo(); + arenaHi = OSGetArenaHi(); + arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); + OSSetArenaLo(arenaLo); + arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); + arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0); + OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi)); + OSSetArenaLo((arenaLo = arenaHi)); + return; + } + memEntry = (void *)((u32)buf + 0x1F & 0xFFFFFFE0); + arenaHiOld = OSGetArenaHi(); + simMemEnd = OSPhysicalToCached(OSGetConsoleSimulatedMemSize()); + OSSetArenaHi(OSPhysicalToCached(OSGetPhysicalMemSize())); + arenaLo = OSGetArenaLo(); + arenaHi = OSGetArenaHi(); + arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); + OSSetArenaLo(arenaLo); + arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0); + arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0); + OSSetCurrentHeap(OSCreateHeap((void *)(arenaLo), arenaHi)); + OSSetArenaLo((arenaLo = arenaHi)); + OSAllocFixed(&arenaHiOld, &simMemEnd); + length = fileInfo.length; + offset = 0; + while (length) { + OSReport("loop\n"); + transferLength = (length < 0x20) ? length : 0x20; + if (DVDReadPrio(&fileInfo, memEntry, (transferLength + 0x1F) & 0xFFFFFFE0, offset, 2) < 0) { + OSPanic(__FILE__, 0x49F, "An error occurred when issuing read to /meminfo.bin\n"); + } + indexMax = (transferLength / 8); + for (i = 0; i < indexMax; i++) { + OSReport("start: 0x%08x, end: 0x%08x\n", memEntry[i].start, memEntry[i].end); + OSAllocFixed(&memEntry[i].start, &memEntry[i].end); + OSReport("Removed 0x%08x - 0x%08x from the current heap\n", memEntry[i].start, (char *)memEntry[i].end - 1); + } + length -= transferLength; + offset += transferLength; + } + DVDClose(&fileInfo); + OSDumpHeap(__OSCurrHeap); +} diff --git a/src/dolphin/demo/DEMOPuts.c b/src/dolphin/demo/DEMOPuts.c new file mode 100644 index 00000000..618152e5 --- /dev/null +++ b/src/dolphin/demo/DEMOPuts.c @@ -0,0 +1,146 @@ +#include "stdarg.h" +#include "stdio.h" +#include +#include +#include +#include + +#include + +extern unsigned long DEMOFontBitmap[]; // size: 0x0, address: 0x0 + +// .bss +static struct _GXTexObj fontTexObj; // size: 0x20, address: 0x0 + +// .sbss +static long fontShift; // size: 0x4, address: 0x0 + +// functions +static void DrawFontChar(int x, int y, int z, int xChar, int yChar); +static void LoadSheet(void *image, enum _GXTexMapID texMapID); + +void DEMOSetFontType(DMFontType attr) +{ + switch (attr) { + case DM_FT_RVS: + GXSetBlendMode(2, 0, 0, 0xC); + break; + case DM_FT_XLU: + GXSetBlendMode(1, 1, 1, 0); + break; + case DM_FT_OPQ: + default: + GXSetBlendMode(1, 1, 0, 0); + break; + } +} + +void DEMOLoadFont(enum _GXTexMapID texMap, enum _GXTexMtx texMtx, DMTexFlt texFlt) +{ + float fontTMtx[3][4]; + unsigned short width; + unsigned short height; + + width = 64; + height = 0x1800 / width; + GXInitTexObj(&fontTexObj, (void *)DEMOFontBitmap, width, (u16)height, 0, 0, 0, 0); + if (texFlt == 0) { + GXInitTexObjLOD(&fontTexObj, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f); + fontShift = 0; + } + GXLoadTexObj(&fontTexObj, texMap); + MTXScale(fontTMtx, 1.0f / width, 1.0f / height, 1.0f); + GXLoadTexMtxImm(fontTMtx, texMtx, 1); + GXSetNumTexGens(1); + GXSetTexCoordGen(0, 1, 4, texMtx); +} + +void DEMOSetupScrnSpc(long width, long height, float depth) +{ + float pMtx[4][4]; + float mMtx[3][4]; + + MTXOrtho(pMtx, 0.0f, height, 0.0f, width, 0.0f, -depth); + GXSetProjection(pMtx, 1); + MTXIdentity(mMtx); + GXLoadPosMtxImm(mMtx, 0); + GXSetCurrentMtx(0); +} + +void DEMOInitCaption(long font_type, long width, long height) +{ + DEMOSetupScrnSpc(width, height, 100.0f); + GXSetZMode(1, 7, 1); + GXSetNumChans(0); + GXSetNumTevStages(1); + GXSetTevOp(0, 3); + GXSetTevOrder(0, 0, 0, 0xFF); + DEMOLoadFont(0, 0x1E, 0); + DEMOSetFontType(font_type); +} + +void DEMOPuts(s16 x, s16 y, s16 z, char *string) +{ + char *str; + long s; + long t; + long c; + long w; + long len; + long i; + + str = string; + GXClearVtxDesc(); + GXSetVtxDesc(9, 1); + GXSetVtxDesc(0xD, 1); + GXSetVtxAttrFmt(0, 9, 1, 3, 0); + GXSetVtxAttrFmt(0, 0xD, 1, 3, 1); + + // calc len + len = 0; + while (1) { + c = *(str++); + if ((c >= 0x20) && (c <= 0x7F)) { + len++; + continue; + } + + if (len > 0) { + GXBegin(0x80, 0, len * 4); + for (i = 0; i < len; i++) { + w = string[i] - 0x20; + s = fontShift + ((w % 8) * 0x10); + t = fontShift + ((w / 8) * 0x10); + GXPosition3s16(x + (i * 8), y, z); + GXTexCoord2s16(s, t); + GXPosition3s16(x + (i * 8) + 8, y, z); + GXTexCoord2s16(s + 0x10, t); + GXPosition3s16(x + (i * 8) + 8, y + 8, z); + GXTexCoord2s16(s + 0x10, t + 0x10); + GXPosition3s16(x + (i * 8), y + 8, z); + GXTexCoord2s16(s, t + 0x10); + } + GXEnd(); + len = 0; + } + + string = str; + if (c == 0xA) { + y += 0x8; + } + else { + break; + } + } +} + +void DEMOPrintf(s16 x, s16 y, s16 z, char *fmt, ...) +{ + va_list vlist; + char buf[256]; + + va_start(vlist, fmt); + vsprintf(buf, fmt, vlist); + DEMOPuts(x, y, z, buf); + va_end(vlist); +} diff --git a/src/dolphin/demo/DEMOStats.c b/src/dolphin/demo/DEMOStats.c new file mode 100644 index 00000000..89a6595f --- /dev/null +++ b/src/dolphin/demo/DEMOStats.c @@ -0,0 +1,424 @@ +#include "dolphin/gx/GXPerf.h" +#include "string.h" +#include +#include +#include + +#include + +unsigned char DemoStatEnable = 0; +static DemoStatData *DemoStat; +static unsigned long DemoStatIndx; +static unsigned long DemoStatMaxIndx; +static unsigned long DemoStatClocks; +static unsigned long DemoStatDisp; +static unsigned long DemoStatStrLen; +static unsigned long topPixIn; +static unsigned long topPixOut; +static unsigned long botPixIn; +static unsigned long botPixOut; +static unsigned long clrPixIn; +static unsigned long copyClks; +static unsigned long vcCheck; +static unsigned long vcMiss; +static unsigned long vcStall; +static unsigned long cpReq; +static unsigned long tcReq; +static unsigned long cpuRdReq; +static unsigned long cpuWrReq; +static unsigned long dspReq; +static unsigned long ioReq; +static unsigned long viReq; +static unsigned long peReq; +static unsigned long rfReq; +static unsigned long fiReq; + +// functions +static void DEMOWriteStats(unsigned char update); +static void DEMOWriteStats(unsigned char update); + +void DEMOSetStats(DemoStatData *stat, unsigned long nstats, DEMO_STAT_DISP disp) +{ + if (!stat || nstats == 0) { + DemoStatEnable = FALSE; + } + else { + DemoStatEnable = TRUE; + DemoStat = stat; + DemoStatIndx = 0; + DemoStatMaxIndx = nstats; + DemoStatDisp = disp; + DemoStatStrLen = strlen(DemoStat->text); + } +} + +static void DEMOWriteStats(unsigned char update) +{ + unsigned long cnt0; + unsigned long cnt1; + unsigned long cnt2; + unsigned long cnt3; + unsigned long cnt4; + unsigned long cnt5; + unsigned long cnt6; + unsigned long cnt7; + unsigned long cnt8; + unsigned long cnt9; + + switch (DemoStat[DemoStatIndx].stat_type) { + case DEMO_STAT_GP0: + if (update) { + cnt0 = GXReadGP0Metric(); + DemoStat[DemoStatIndx].count = cnt0; + GXSetGPMetric(GX_PERF0_NONE, GX_PERF1_NONE); + break; + } + GXSetGPMetric(DemoStat[DemoStatIndx].stat, GX_PERF1_NONE); + GXClearGPMetric(); + break; + case DEMO_STAT_GP1: + if (update) { + cnt0 = GXReadGP1Metric(); + DemoStat[DemoStatIndx].count = cnt0; + GXSetGPMetric(GX_PERF0_NONE, GX_PERF1_NONE); + break; + } + GXSetGPMetric(GX_PERF0_NONE, DemoStat[DemoStatIndx].stat); + GXClearGPMetric(); + break; + case DEMO_STAT_MEM: + if (update) { + GXReadMemMetric(&cnt0, &cnt1, &cnt2, &cnt3, &cnt4, &cnt5, &cnt6, &cnt7, &cnt8, &cnt9); + cpReq = cnt0; + tcReq = cnt1; + cpuRdReq = cnt2; + cpuWrReq = cnt3; + dspReq = cnt4; + ioReq = cnt5; + viReq = cnt6; + peReq = cnt7; + rfReq = cnt8; + fiReq = cnt9; + break; + } + GXClearMemMetric(); + break; + case DEMO_STAT_PIX: + if (update) { + GXReadPixMetric(&cnt0, &cnt1, &cnt2, &cnt3, &cnt4, &cnt5); + topPixIn = cnt0; + topPixOut = cnt1; + botPixIn = cnt2; + botPixOut = cnt3; + clrPixIn = cnt4; + copyClks = cnt5; + break; + } + GXClearPixMetric(); + break; + case DEMO_STAT_VC: + if (update) { + GXReadVCacheMetric(&cnt0, &cnt1, &cnt2); + vcCheck = cnt0; + vcMiss = cnt1; + vcStall = cnt2; + break; + } + GXSetVCacheMetric(GX_VC_POS); + GXClearVCacheMetric(); + break; + case DEMO_STAT_FR: + if (update) { + GXReadPixMetric(&cnt0, &cnt1, &cnt2, &cnt3, &cnt4, &cnt5); + topPixIn = cnt0; + topPixOut = cnt1; + botPixIn = cnt2; + botPixOut = cnt3; + clrPixIn = cnt4; + copyClks = cnt5; + DemoStatClocks = GXReadGP0Metric(); + GXSetGPMetric(GX_PERF0_NONE, GX_PERF1_NONE); + break; + } + GXClearPixMetric(); + GXSetGPMetric(GX_PERF0_CLOCKS, GX_PERF1_NONE); + GXClearGPMetric(); + break; + case DEMO_STAT_TBW: + case DEMO_STAT_TBP: + GXClearPixMetric(); + if (update) { + GXReadPixMetric(&cnt0, &cnt1, &cnt2, &cnt3, &cnt4, &cnt5); + topPixIn = cnt0; + topPixOut = cnt1; + botPixIn = cnt2; + botPixOut = cnt3; + clrPixIn = cnt4; + copyClks = cnt5; + DemoStatClocks = GXReadGP0Metric(cnt4, cnt3, cnt2, cnt1, cnt0); + GXReadMemMetric(&cnt0, &cnt1, &cnt2, &cnt3, &cnt4, &cnt5, &cnt6, &cnt7, &cnt8, &cnt9); + tcReq = cnt1; + GXSetGPMetric(GX_PERF0_NONE, GX_PERF1_NONE); + break; + } + GXClearMemMetric(); + GXSetGPMetric(GX_PERF0_CLOCKS, GX_PERF1_NONE); + GXClearGPMetric(); + break; + case DEMO_STAT_MYC: + case DEMO_STAT_MYR: + break; + default: + OSPanic("DEMOStats.c", 0x127, "DEMOSetStats: Unknown demo stat type\n"); + } +} + +void DEMOUpdateStats(unsigned char inc) +{ + DEMOWriteStats(inc); + if (inc) { + DemoStatIndx = DemoStatIndx + 1; + if (DemoStatIndx == DemoStatMaxIndx) { + DemoStatIndx = 0; + } + } +} + +void DEMOPrintStats(void) +{ + GXRenderModeObj *rmode; + unsigned long i; + signed short text_x; + signed short text_y; + signed short text_yinc; + unsigned short wd; + unsigned short ht; + float rate; + + if (DemoStatDisp == DEMO_STAT_IO) { + for (i = 0; i < DemoStatMaxIndx; i++) { + switch (DemoStat[i].stat_type) { + case DEMO_STAT_PIX: + switch (DemoStat[i].stat) { + case 0: + OSReport("%s: %8d\n", DemoStat[i].text, topPixIn); + break; + case 1: + OSReport("%s: %8d\n", DemoStat[i].text, topPixOut); + break; + case 2: + OSReport("%s: %8d\n", DemoStat[i].text, botPixIn); + break; + case 3: + OSReport("%s: %8d\n", DemoStat[i].text, botPixOut); + break; + case 4: + OSReport("%s: %8d\n", DemoStat[i].text, clrPixIn); + break; + case 5: + OSReport("%s: %8d\n", DemoStat[i].text, copyClks); + break; + } + break; + case DEMO_STAT_FR: + rate = 162.0F * (topPixIn + botPixIn) / (float)(DemoStatClocks - copyClks); + OSReport("%s: %8.2f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_TBW: + rate = 162.0F * (tcReq << 5) / (float)(DemoStatClocks - copyClks); + OSReport("%s: %8.2f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_TBP: + rate = (tcReq << 5) / (float)(topPixIn + botPixIn); + OSReport("%s: %8.2f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_VC: + switch (DemoStat[i].stat) { + case 0: + OSReport("%s: %8d\n", DemoStat[i].text, vcCheck); + break; + case 1: + OSReport("%s: %8d\n", DemoStat[i].text, vcMiss); + break; + case 2: + OSReport("%s: %8d\n", DemoStat[i].text, vcStall); + break; + } + break; + case DEMO_STAT_MYR: + rate = DemoStat[i].stat / (float)DemoStat[i].count; + OSReport("%s: %8.2f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_MEM: + switch (DemoStat[i].stat) { + case 0: + OSReport("%s: %8d\n", DemoStat[i].text, cpReq); + break; + case 1: + OSReport("%s: %8d\n", DemoStat[i].text, tcReq); + break; + case 2: + OSReport("%s: %8d\n", DemoStat[i].text, cpuRdReq); + break; + case 3: + OSReport("%s: %8d\n", DemoStat[i].text, cpuWrReq); + break; + case 4: + OSReport("%s: %8d\n", DemoStat[i].text, dspReq); + break; + case 5: + OSReport("%s: %8d\n", DemoStat[i].text, ioReq); + break; + case 6: + OSReport("%s: %8d\n", DemoStat[i].text, viReq); + break; + case 7: + OSReport("%s: %8d\n", DemoStat[i].text, peReq); + break; + case 8: + OSReport("%s: %8d\n", DemoStat[i].text, rfReq); + break; + case 9: + OSReport("%s: %8d\n", DemoStat[i].text, fiReq); + break; + } + break; + default: + OSReport("%s: %8d\n", DemoStat[i].text, DemoStat[i].count); + break; + } + } + } + else { + rmode = DEMOGetRenderModeObj(); + switch (DemoStatDisp) { + case DEMO_STAT_TL: + text_x = 0x10; + text_y = 0x10; + text_yinc = 0xA; + wd = rmode->fbWidth; + ht = rmode->xfbHeight; + break; + case DEMO_STAT_BL: + text_x = 0x10; + text_y = rmode->xfbHeight - 0x18; + text_yinc = -0xA; + wd = rmode->fbWidth; + ht = rmode->xfbHeight; + break; + case DEMO_STAT_TLD: + text_x = 8; + text_y = 8; + text_yinc = 9; + wd = rmode->fbWidth / 2; + ht = rmode->xfbHeight / 2; + break; + case DEMO_STAT_BLD: + text_x = 8; + text_y = (rmode->xfbHeight - 0x18) / 2; + text_yinc = -9; + wd = rmode->fbWidth / 2; + ht = rmode->xfbHeight / 2; + break; + } + DEMOInitCaption(0, wd, ht); + for (i = 0; i < DemoStatMaxIndx; i++) { + switch (DemoStat[i].stat_type) { + case DEMO_STAT_PIX: + switch (DemoStat[i].stat) { + case 0: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, topPixIn); + break; + case 1: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, topPixOut); + break; + case 2: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, botPixIn); + break; + case 3: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, botPixOut); + break; + case 4: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, clrPixIn); + break; + case 5: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, copyClks); + break; + } + break; + case DEMO_STAT_FR: + rate = 162.0F * (topPixIn + botPixIn) / (float)(DemoStatClocks - copyClks); + DEMOPrintf(text_x, text_y, 0, "%s: %8.2f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_TBW: + rate = 162.0F * (tcReq << 5) / (float)(DemoStatClocks - copyClks); + DEMOPrintf(text_x, text_y, 0, "%s: %8.2f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_TBP: + rate = (tcReq << 5) / (float)(topPixIn - botPixIn); + DEMOPrintf(text_x, text_y, 0, "%s: %8.3f\n", DemoStat[i].text, rate); + break; + case DEMO_STAT_VC: + switch (DemoStat[i].stat) { + case 0: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, vcCheck); + break; + case 1: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, vcMiss); + break; + case 2: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, vcStall); + break; + } + break; + case DEMO_STAT_MEM: + switch (DemoStat[i].stat) { + case 0: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, cpReq); + break; + case 1: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, tcReq); + break; + case 2: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, cpuRdReq); + break; + case 3: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, cpuWrReq); + break; + case 4: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, dspReq); + break; + case 5: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, ioReq); + break; + case 6: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, viReq); + break; + case 7: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, peReq); + break; + case 8: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, rfReq); + break; + case 9: + DEMOPrintf(text_x, text_y, 0, "%s: %8d\n", DemoStat[i].text, fiReq); + break; + } + break; + case DEMO_STAT_GP0: + case DEMO_STAT_GP1: + case DEMO_STAT_MYC: + DEMOPrintf(text_x, text_y, 0, "%s: %8d", DemoStat[i].text, DemoStat[i].count); + break; + case DEMO_STAT_MYR: + rate = DemoStat[i].stat / (float)DemoStat[i].count; + DEMOPrintf(text_x, text_y, 0, "%s: %8.3f", DemoStat[i].text, rate); + break; + default: + OSReport("Undefined stat type %d in DEMOPrintStats()\n", DemoStat[i].stat_type); + break; + } + text_y += text_yinc; + } + } +} diff --git a/src/dolphin/dsp/dsp.c b/src/dolphin/dsp/dsp.c new file mode 100644 index 00000000..f003f6fb --- /dev/null +++ b/src/dolphin/dsp/dsp.c @@ -0,0 +1,99 @@ +#include "dolphin/dsp.h" +#include "dolphin/os.h" + +#include "dolphin/hw_regs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +static s32 __DSP_init_flag = 0; +extern DSPTaskInfo* __DSP_tmp_task; +extern DSPTaskInfo* __DSP_last_task; +extern DSPTaskInfo* __DSP_first_task; +extern DSPTaskInfo* __DSP_curr_task; + +extern void __DSPHandler(__OSInterrupt, OSContext*); +extern void __DSP_debug_printf(const char* fmt, ...); +extern void __DSP_boot_task(DSPTaskInfo* task); + +u32 DSPCheckMailToDSP(void) { return (__DSPRegs[0] >> 0xF) & 1; } + +u32 DSPCheckMailFromDSP(void) { return (__DSPRegs[2] >> 0xF) & 1; } + +u32 DSPReadMailFromDSP() { + u16 reg1; + u16 reg2; + reg1 = __DSPRegs[2]; + reg2 = __DSPRegs[3]; + return reg1 << 16 | reg2; +} + +void DSPSendMailToDSP(u32 mail) { + __DSPRegs[0] = mail >> 16; + __DSPRegs[1] = mail; +} + +void DSPInit(void) { + u32 oldInt; + u16 reg; + __DSP_debug_printf("DSPInit(): Build Date: %s %s\n", "Dec 17 2001", "18:25:00"); + + if (__DSP_init_flag == 1) { + return; + } + oldInt = OSDisableInterrupts(); + __OSSetInterruptHandler(7, __DSPHandler); + __OSUnmaskInterrupts(0x1000000); + reg = __DSPRegs[5]; + reg = (reg & ~0xA8) | 0x800; + __DSPRegs[5] = reg; + reg = __DSPRegs[5]; + reg = reg & ~0xAC; + __DSPRegs[5] = reg; + __DSP_tmp_task = 0; + __DSP_curr_task = 0; + __DSP_last_task = 0; + __DSP_first_task = 0; + __DSP_init_flag = 1; + OSRestoreInterrupts(oldInt); +} + +void DSPReset(void) { + u16 reg; + u32 oldInt; + oldInt = OSDisableInterrupts(); + reg = __DSPRegs[5]; + __DSPRegs[5] = (reg & ~0xA8) | 0x801; + __DSP_init_flag = 0; + OSRestoreInterrupts(oldInt); +} + +void DSPHalt(void) { + u16 reg; + u32 oldInt; + oldInt = OSDisableInterrupts(); + reg = __DSPRegs[5]; + __DSPRegs[5] = (reg & ~0xA8) | 4; + OSRestoreInterrupts(oldInt); +} + +u32 DSPGetDMAStatus(void) { return __DSPRegs[5] & 0x200; } + +DSPTaskInfo* DSPAddTask(DSPTaskInfo* task) { + u32 oldInt; + oldInt = OSDisableInterrupts(); + __DSP_insert_task(task); + task->state = 0; + task->flags = 1; + OSRestoreInterrupts(oldInt); + if (task == __DSP_first_task) { + __DSP_boot_task(task); + } + + return task; +} + +#ifdef __cplusplus +} +#endif diff --git a/src/dolphin/dsp/dsp_debug.c b/src/dolphin/dsp/dsp_debug.c new file mode 100644 index 00000000..22455a34 --- /dev/null +++ b/src/dolphin/dsp/dsp_debug.c @@ -0,0 +1,5 @@ +#include "types.h" + +void __DSP_debug_printf(const char* fmt, ...) { + // UNUSED(fmt); +} diff --git a/src/dolphin/dsp/dsp_task.c b/src/dolphin/dsp/dsp_task.c new file mode 100644 index 00000000..9ba343cf --- /dev/null +++ b/src/dolphin/dsp/dsp_task.c @@ -0,0 +1,389 @@ +#include "dolphin/dsp.h" +#include "dolphin/hw_regs.h" + +DSPTaskInfo *__DSP_curr_task; +DSPTaskInfo *__DSP_first_task; +DSPTaskInfo *__DSP_last_task; +DSPTaskInfo *__DSP_tmp_task; +DSPTaskInfo *__DSP_rude_task; + +BOOL __DSP_rude_task_pending; + +void __DSPHandler(__OSInterrupt, OSContext *context) +{ + DSPTaskInfo *tmp_task; + OSContext exceptionContext; + u16 tmp; + u32 mail; + + tmp = __DSPRegs[5]; + tmp = (u16)(tmp & ~0x28) | 0x80; + __DSPRegs[5] = tmp; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + while (!DSPCheckMailFromDSP()) + ; + mail = DSPReadMailFromDSP(); + + if ((__DSP_curr_task->flags & DSP_TASK_FLAG_CANCEL) && (mail == 0xDCD10002)) { + mail = 0xDCD10003; + } + + switch (mail) { + case 0xDCD10000: + __DSP_curr_task->state = DSP_TASK_STATE_RUN; + + if (__DSP_curr_task->init_cb) { + (*(__DSP_curr_task->init_cb))((void *)(__DSP_curr_task)); + } + break; + case 0xDCD10001: + __DSP_curr_task->state = DSP_TASK_STATE_RUN; + if (__DSP_curr_task->res_cb) { + (*(__DSP_curr_task->res_cb))((void *)(__DSP_curr_task)); + } + break; + case 0xDCD10002: + if (__DSP_rude_task_pending) { + + if (__DSP_curr_task == __DSP_rude_task) { + DSPSendMailToDSP(0xCDD10003); + while (DSPCheckMailToDSP()) { } + + __DSP_rude_task = NULL; + __DSP_rude_task_pending = FALSE; + + if (__DSP_curr_task->res_cb) { + (*(__DSP_curr_task->res_cb))((void *)(__DSP_curr_task)); + } + + break; + } + else { + DSPSendMailToDSP(0xCDD10001); + while (DSPCheckMailToDSP()) + ; + __DSP_exec_task(__DSP_curr_task, __DSP_rude_task); + + __DSP_curr_task->state = DSP_TASK_STATE_YIELD; + __DSP_curr_task = __DSP_rude_task; + + __DSP_rude_task = NULL; + __DSP_rude_task_pending = FALSE; + + break; + } + } + + if (__DSP_curr_task->next == NULL) { + + if (__DSP_curr_task == __DSP_first_task) { + + DSPSendMailToDSP(0xCDD10003); + while (DSPCheckMailToDSP()) + ; + + if (__DSP_curr_task->res_cb) { + (*(__DSP_curr_task->res_cb))((void *)(__DSP_curr_task)); + } + } + else { + DSPSendMailToDSP(0xCDD10001); + while (DSPCheckMailToDSP()) { } + + __DSP_exec_task(__DSP_curr_task, __DSP_first_task); + + __DSP_curr_task->state = DSP_TASK_STATE_YIELD; + __DSP_curr_task = __DSP_first_task; + } + } + else { + + DSPSendMailToDSP(0xCDD10001); + while (DSPCheckMailToDSP()) { } + + __DSP_exec_task(__DSP_curr_task, __DSP_curr_task->next); + + __DSP_curr_task->state = DSP_TASK_STATE_YIELD; + __DSP_curr_task = __DSP_curr_task->next; + } + break; + case 0xDCD10003: + if (__DSP_rude_task_pending) { + + if (__DSP_curr_task->done_cb) { + (*(__DSP_curr_task->done_cb))((void *)(__DSP_curr_task)); + } + + DSPSendMailToDSP(0xCDD10001); + while (DSPCheckMailToDSP()) + ; + + __DSP_exec_task(NULL, __DSP_rude_task); + + __DSP_remove_task(__DSP_curr_task); + __DSP_curr_task = __DSP_rude_task; + + __DSP_rude_task = NULL; + __DSP_rude_task_pending = FALSE; + + break; + } + + if (__DSP_curr_task->next == NULL) { + + if (__DSP_curr_task == __DSP_first_task) { + + if (__DSP_curr_task->done_cb) { + (*(__DSP_curr_task->done_cb))((void *)(__DSP_curr_task)); + } + + DSPSendMailToDSP(0xCDD10002); + while (DSPCheckMailToDSP()) + ; + + __DSP_curr_task->state = DSP_TASK_STATE_DONE; + + __DSP_remove_task(__DSP_curr_task); + } + else { + + if (__DSP_curr_task->done_cb) { + (*(__DSP_curr_task->done_cb))((void *)(__DSP_curr_task)); + } + + DSPSendMailToDSP(0xCDD10001); + while (DSPCheckMailToDSP()) + ; + + __DSP_curr_task->state = DSP_TASK_STATE_DONE; + __DSP_exec_task(NULL, __DSP_first_task); + + __DSP_curr_task = __DSP_first_task; + __DSP_remove_task(__DSP_last_task); + } + } + else { + if (__DSP_curr_task->done_cb) { + (*(__DSP_curr_task->done_cb))((void *)(__DSP_curr_task)); + } + DSPSendMailToDSP(0xCDD10001); + while (DSPCheckMailToDSP()) + ; + + __DSP_curr_task->state = DSP_TASK_STATE_DONE; + __DSP_exec_task(NULL, __DSP_curr_task->next); + + __DSP_curr_task = __DSP_curr_task->next; + __DSP_remove_task(__DSP_curr_task->prev); + } + break; + + case 0xDCD10004: + + if (__DSP_curr_task->req_cb) { + (*(__DSP_curr_task->req_cb))((void *)(__DSP_curr_task)); + } + break; + default: + break; + } + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); +} + +void __DSP_exec_task(DSPTaskInfo *curr, DSPTaskInfo *next) +{ + if (curr) { + DSPSendMailToDSP((u32)(curr->dram_mmem_addr)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(curr->dram_length)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(curr->dram_addr)); + while (DSPCheckMailToDSP()) + ; + } + else { + + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + } + + DSPSendMailToDSP((u32)(next->iram_mmem_addr)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(next->iram_length)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(next->iram_addr)); + while (DSPCheckMailToDSP()) + ; + + if (DSP_TASK_STATE_INIT == next->state) { + DSPSendMailToDSP((u32)(next->dsp_init_vector)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + } + else { + DSPSendMailToDSP((u32)(next->dsp_resume_vector)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(next->dram_mmem_addr)); + while (DSPCheckMailToDSP()) + ; + + DSPSendMailToDSP((u32)(next->dram_length)); + while (DSPCheckMailToDSP()) + ; + + DSPSendMailToDSP((u32)(next->dram_addr)); + while (DSPCheckMailToDSP()) + ; + } +} + +#define MSG_BASE 0x80F30000 +void __DSP_boot_task(DSPTaskInfo *task) +{ + + volatile u32 mail; + + while (!DSPCheckMailFromDSP()) + ; + + mail = DSPReadMailFromDSP(); + + DSPSendMailToDSP(MSG_BASE | 0xA001); + while (DSPCheckMailToDSP()) { } + DSPSendMailToDSP((u32)(task->iram_mmem_addr)); + while (DSPCheckMailToDSP()) { } + + DSPSendMailToDSP(MSG_BASE | 0xC002); + while (DSPCheckMailToDSP()) { } + DSPSendMailToDSP((u32)(task->iram_addr & 0xffff)); + while (DSPCheckMailToDSP()) { } + + DSPSendMailToDSP(MSG_BASE | 0xA002); + while (DSPCheckMailToDSP()) { } + DSPSendMailToDSP(task->iram_length); + while (DSPCheckMailToDSP()) { } + + DSPSendMailToDSP(MSG_BASE | 0xB002); + while (DSPCheckMailToDSP()) { } + DSPSendMailToDSP(0x00000000); + while (DSPCheckMailToDSP()) { } + + DSPSendMailToDSP(MSG_BASE | 0xD001); + while (DSPCheckMailToDSP()) { } + DSPSendMailToDSP((u32)(0xffff & task->dsp_init_vector)); + while (DSPCheckMailToDSP()) { } + + __DSP_debug_printf("DSP is booting task: 0x%08X\n", task); + __DSP_debug_printf("__DSP_boot_task() : IRAM MMEM ADDR: 0x%08X\n", (u32)(task->iram_mmem_addr)); + __DSP_debug_printf("__DSP_boot_task() : IRAM DSP ADDR : 0x%08X\n", (u32)(task->iram_addr)); + __DSP_debug_printf("__DSP_boot_task() : IRAM LENGTH : 0x%08X\n", (u32)(task->iram_length)); + __DSP_debug_printf("__DSP_boot_task() : DRAM MMEM ADDR: 0x%08X\n", (u32)(task->dram_length)); + __DSP_debug_printf("__DSP_boot_task() : Start Vector : 0x%08X\n", (u32)(task->dsp_init_vector)); +} + +void __DSP_insert_task(DSPTaskInfo *task) +{ + + DSPTaskInfo *temp; + + if (__DSP_first_task == NULL) { + __DSP_first_task = __DSP_last_task = __DSP_curr_task = task; + task->next = task->prev = NULL; + } + else { + temp = __DSP_first_task; + + while (temp) { + if (task->priority < temp->priority) { + task->prev = temp->prev; + temp->prev = task; + task->next = temp; + if (task->prev == NULL) { + __DSP_first_task = task; + } + else { + (task->prev)->next = task; + } + break; + } + temp = temp->next; + } + + if (temp == NULL) { + __DSP_last_task->next = task; + task->next = NULL; + task->prev = __DSP_last_task; + __DSP_last_task = task; + } + } +} + +void __DSP_add_task(DSPTaskInfo *task) +{ + if (__DSP_last_task == NULL) { + __DSP_first_task = __DSP_last_task = __DSP_curr_task = task; + task->next = task->prev = NULL; + } + else { + __DSP_last_task->next = task; + task->next = NULL; + task->prev = __DSP_last_task; + __DSP_last_task = task; + } + + task->state = DSP_TASK_STATE_INIT; + + __DSP_debug_printf("__DSP_add_task() : Added task : 0x%08X\n", task); +} + +void __DSP_remove_task(DSPTaskInfo *task) +{ + + task->flags = DSP_TASK_FLAG_CLEARALL; + task->state = DSP_TASK_STATE_DONE; + + if (__DSP_first_task == task) { + if (task->next) { + __DSP_first_task = (task->next); + task->next->prev = NULL; + } + else { + __DSP_first_task = __DSP_last_task = __DSP_curr_task = NULL; + } + } + else if (__DSP_last_task == task) { + __DSP_last_task = (task->prev); + task->prev->next = NULL; + __DSP_curr_task = __DSP_first_task; + } + else { + __DSP_curr_task = task->next; + task->prev->next = task->next; + task->next->prev = task->prev; + } +} diff --git a/src/dolphin/dvd/dvd.c b/src/dolphin/dvd/dvd.c new file mode 100644 index 00000000..5ddde4fc --- /dev/null +++ b/src/dolphin/dvd/dvd.c @@ -0,0 +1,1431 @@ +#include "dolphin/os/OSAlarm.h" +#include +#include +#include +#include +#include + +typedef void (*stateFunc)(DVDCommandBlock *block); + +extern OSThreadQueue __DVDThreadQueue; + +static u8 tmpBuffer[0x80] ATTRIBUTE_ALIGN(32); +static DVDCommandBlock *executing; +static DVDDiskID *currID; +static OSBootInfo *bootInfo; +static BOOL autoInvalidation = TRUE; +static volatile BOOL PauseFlag = FALSE; +static volatile BOOL PausingFlag = FALSE; +static volatile BOOL AutoFinishing = FALSE; +static volatile BOOL FatalErrorFlag = FALSE; +static vu32 CurrCommand; +static vu32 Canceling = FALSE; +static DVDCBCallback CancelCallback; +static vu32 ResumeFromHere = 0; +static vu32 CancelLastError; +static vu32 LastError; +static vs32 NumInternalRetry = 0; +static volatile BOOL ResetRequired; +static volatile BOOL CancelAllSyncComplete = FALSE; +static volatile BOOL FirstTimeInBootrom = FALSE; + +static DVDCommandBlock DummyCommandBlock; +static OSAlarm ResetAlarm; + +static BOOL DVDInitialized = FALSE; +static stateFunc LastState; + +/* States */ +static void stateReadingFST(); +static void stateTimeout(); +static void stateGettingError(); +static void stateGoToRetry(); +static void stateCheckID(); +static void stateCheckID3(); +static void stateCheckID2a(); +static void stateCheckID2(); +static void stateCoverClosed(); +static void stateCoverClosed_CMD(); +static void stateCoverOpen(); +static void stateMotorStopped(); +static void stateReady(); +static void stateBusy(); + +/* Callbacks */ +static void cbForStateReadingFST(u32 intType); +static void cbForStateError(u32 intType); +static void cbForStateGettingError(u32 intType); +static void cbForUnrecoveredError(u32 intType); +static void cbForUnrecoveredErrorRetry(u32 intType); +static void cbForStateGoToRetry(u32 intType); +static void cbForStateCheckID2a(u32 intType); +static void cbForStateCheckID1(u32 intType); +static void cbForStateCheckID2(u32 intType); +static void cbForStateCheckID3(u32 intType); +static void cbForStateCoverClosed(u32 intType); +static void cbForStateMotorStopped(u32 intType); +static void cbForStateBusy(u32 intType); +static void cbForCancelStreamSync(s32 result, DVDCommandBlock *block); +static void cbForCancelSync(s32 result, DVDCommandBlock *block); +static void cbForCancelAllSync(s32 result, DVDCommandBlock *block); + +static void defaultOptionalCommandChecker(DVDCommandBlock *block, DVDLowCallback cb); + +static DVDOptionalCommandChecker checkOptionalCommand = defaultOptionalCommandChecker; + +extern void __DVDInterruptHandler(__OSInterrupt interrupt, OSContext *context); + +static void defaultOptionalCommandChecker(DVDCommandBlock *block, DVDLowCallback cb) { } + +void DVDInit() +{ + if (DVDInitialized) { + return; + } + + OSInitAlarm(); + DVDInitialized = TRUE; + __DVDFSInit(); + __DVDClearWaitingQueue(); + __DVDInitWA(); + bootInfo = (OSBootInfo *)OSPhysicalToCached(0x0000); + currID = &(bootInfo->DVDDiskID); + __OSSetInterruptHandler(21, __DVDInterruptHandler); + __OSUnmaskInterrupts(0x400); + OSInitThreadQueue(&__DVDThreadQueue); + __DIRegs[DI_STATUS] = 42; + __DIRegs[DI_COVER_STATUS] = 0; + if (bootInfo->magic == OS_BOOTINFO_MAGIC_JTAG) { + OSReport("app booted via JTAG\n"); + OSReport("load fst\n"); + __fstLoad(); + } + else if (bootInfo->magic == 0xD15EA5E) { + OSReport("app booted from bootrom\n"); + } + else { + FirstTimeInBootrom = TRUE; + OSReport("bootrom\n"); + } +} + +static void stateReadingFST() +{ + LastState = (stateFunc)stateReadingFST; + + DVDLowRead(bootInfo->FSTLocation, OSRoundUp32B(((u32 *)tmpBuffer)[2]), ((u32 *)tmpBuffer)[1], cbForStateReadingFST); +} + +static void cbForStateReadingFST(u32 intType) +{ + DVDCommandBlock *finished; + if (intType == 0x10) { + executing->state = -1; + stateTimeout(); + } + else if ((intType & 1) != 0) { + NumInternalRetry = 0; + finished = executing; + executing = &DummyCommandBlock; + finished->state = 0; + if (finished->callback) { + (finished->callback)(0, finished); + } + stateReady(); + } + else { + stateGettingError(); + } +} + +inline static void stateError(u32 error) +{ + __DVDStoreErrorCode(error); + DVDLowStopMotor(cbForStateError); +} + +static void cbForStateError(u32 intType) +{ + DVDCommandBlock *finished; + + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + FatalErrorFlag = TRUE; + finished = executing; + executing = &DummyCommandBlock; + if (finished->callback) { + (finished->callback)(-1, finished); + } + + if (Canceling) { + Canceling = FALSE; + if (CancelCallback) + (CancelCallback)(0, finished); + } + + stateReady(); + + return; +} + +static void stateTimeout() +{ + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); +} + +static void stateGettingError() +{ + DVDLowRequestError(cbForStateGettingError); +} + +static u32 CategorizeError(u32 error) +{ + if (error == 0x20400) { + LastError = error; + return 1; + } + + error &= 0xffffff; + + if ((error == 0x62800) || (error == 0x23a00) || (error == 0xb5a01)) { + return 0; + } + + ++NumInternalRetry; + if (NumInternalRetry == 2) { + if (error == LastError) { + LastError = error; + return 1; + } + else { + LastError = error; + return 2; + } + } + else { + LastError = error; + + if ((error == 0x31100) || (executing->command == 5)) { + return 2; + } + else { + return 3; + } + } +} + +inline static BOOL CheckCancel(u32 resume) +{ + DVDCommandBlock *finished; + + if (Canceling) { + ResumeFromHere = resume; + Canceling = FALSE; + + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 10; + if (finished->callback) + (*finished->callback)(-3, finished); + if (CancelCallback) + (CancelCallback)(0, finished); + stateReady(); + return TRUE; + } + return FALSE; +} + +static void cbForStateGettingError(u32 intType) +{ + u32 error; + u32 status; + u32 errorCategory; + u32 resume; + + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 2) { + executing->state = -1; + stateError(0x1234567); + return; + } + + error = __DIRegs[8]; + status = error & 0xff000000; + + errorCategory = CategorizeError(error); + + if (errorCategory == 1) { + executing->state = -1; + stateError(error); + return; + } + + if ((errorCategory == 2) || (errorCategory == 3)) { + resume = 0; + } + else { + if (status == 0x01000000) + resume = 4; + else if (status == 0x02000000) + resume = 6; + else if (status == 0x03000000) + resume = 3; + else + resume = 5; + } + + if (CheckCancel(resume)) + return; + + if (errorCategory == 2) { + __DVDStoreErrorCode(error); + stateGoToRetry(); + return; + } + + if (errorCategory == 3) { + if ((error & 0x00ffffff) == 0x00031100) { + DVDLowSeek(executing->offset, cbForUnrecoveredError); + } + else { + LastState(executing); + } + return; + } + + if (status == 0x01000000) { + executing->state = 5; + stateMotorStopped(); + return; + } + else if (status == 0x02000000) { + executing->state = 3; + stateCoverClosed(); + return; + } + else if (status == 0x03000000) { + executing->state = 4; + stateMotorStopped(); + return; + } + else { + executing->state = -1; + stateError(0x1234567); + return; + } +} + +static void cbForUnrecoveredError(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 1) { + stateGoToRetry(); + return; + } + + DVDLowRequestError(cbForUnrecoveredErrorRetry); +} + +static void cbForUnrecoveredErrorRetry(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + executing->state = -1; + + if (intType & 2) { + __DVDStoreErrorCode(0x1234567); + DVDLowStopMotor(cbForStateError); + return; + } + + __DVDStoreErrorCode(__DIRegs[8]); + DVDLowStopMotor(cbForStateError); +} + +static void stateGoToRetry() +{ + DVDLowStopMotor(cbForStateGoToRetry); +} + +static void cbForStateGoToRetry(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 2) { + executing->state = -1; + stateError(0x1234567); + return; + } + + NumInternalRetry = 0; + + if ((CurrCommand == 4) || (CurrCommand == 5) || (CurrCommand == 13) || (CurrCommand == 15)) { + ResetRequired = TRUE; + } + + if (!CheckCancel(2)) { + executing->state = 11; + stateMotorStopped(); + } +} + +static void stateCheckID() +{ + switch (CurrCommand) { + case 3: + if (memcmp(tmpBuffer, executing->id, 0x1C) != FALSE) { + DVDLowStopMotor(cbForStateCheckID1); + } + else { + memcpy(currID, tmpBuffer, sizeof(DVDDiskID)); + executing->state = 1; + DCInvalidateRange(tmpBuffer, sizeof(DVDBB2)); + LastState = stateCheckID2; + stateCheckID2(executing); + } + break; + default: + if (memcmp(tmpBuffer, currID, sizeof(DVDDiskID)) != 0) { + DVDLowStopMotor(cbForStateCheckID1); + } + else { + LastState = stateCheckID3; + stateCheckID3(executing); + } + break; + } +} + +static void stateCheckID3() +{ + DVDLowAudioBufferConfig(currID->streaming, 10, cbForStateCheckID3); +} + +static void stateCheckID2a() +{ + DVDLowAudioBufferConfig(currID->streaming, 10, cbForStateCheckID2a); +} + +static void cbForStateCheckID2a(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + stateCheckID2(executing); + return; + } + + DVDLowRequestError(cbForStateGettingError); +} + +static void stateCheckID2(DVDCommandBlock *block) +{ + DVDLowRead(tmpBuffer, OSRoundUp32B(sizeof(DVDBB2)), 0x420, cbForStateCheckID2); +} + +static void cbForStateCheckID1(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 2) { + executing->state = -1; + stateError(0x1234567); + return; + } + + NumInternalRetry = 0; + + if (!CheckCancel(1)) { + executing->state = 6; + stateMotorStopped(); + } +} + +static void cbForStateCheckID2(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 1) { + + NumInternalRetry = 0; + + stateReadingFST(); + } + else { + + stateGettingError(); + } +} + +static void cbForStateCheckID3(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 1) { + + NumInternalRetry = 0; + + if (!CheckCancel(0)) { + executing->state = 1; + stateBusy(executing); + } + } + else { + stateGettingError(); + } +} + +static void AlarmHandler(OSAlarm *alarm, OSContext *context) +{ + DVDReset(); + DCInvalidateRange(tmpBuffer, sizeof(DVDDiskID)); + LastState = stateCoverClosed_CMD; + stateCoverClosed_CMD(executing); +} + +static void stateCoverClosed() +{ + DVDCommandBlock *finished; + + switch (CurrCommand) { + case 5: + case 4: + case 13: + case 15: + __DVDClearWaitingQueue(); + finished = executing; + executing = &DummyCommandBlock; + if (finished->callback) { + (finished->callback)(-4, finished); + } + stateReady(); + break; + + default: + DVDReset(); + OSCreateAlarm(&ResetAlarm); + OSSetAlarm(&ResetAlarm, OSMillisecondsToTicks(1150), AlarmHandler); + break; + } +} + +static void stateCoverClosed_CMD(DVDCommandBlock *block) +{ + DVDLowReadDiskID(tmpBuffer, cbForStateCoverClosed); +} + +static void cbForStateCoverClosed(u32 intType) +{ + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + stateCheckID(); + } + else { + stateGettingError(); + } +} + +static void stateMotorStopped(void) +{ + DVDLowWaitCoverClose(cbForStateMotorStopped); +} + +static void cbForStateMotorStopped(u32 intType) +{ + __DIRegs[1] = 0; + executing->state = 3; + stateCoverClosed(); +} + +void stateReady() +{ + DVDCommandBlock *finished; + + if (!__DVDCheckWaitingQueue()) { + executing = (DVDCommandBlock *)nullptr; + return; + } + + if (PauseFlag) { + PausingFlag = TRUE; + executing = (DVDCommandBlock *)nullptr; + return; + } + + executing = __DVDPopWaitingQueue(); + + if (FatalErrorFlag) { + executing->state = -1; + finished = executing; + executing = &DummyCommandBlock; + if (finished->callback) { + (finished->callback)(-1, finished); + } + stateReady(); + return; + } + + CurrCommand = executing->command; + + if (ResumeFromHere) { + switch (ResumeFromHere) { + case 1: + executing->state = 6; + stateMotorStopped(); + break; + + case 2: + executing->state = 11; + stateMotorStopped(); + break; + + case 3: + executing->state = 4; + stateMotorStopped(); + break; + + case 7: + executing->state = 7; + stateMotorStopped(); + break; + + case 4: + executing->state = 5; + stateMotorStopped(); + break; + + case 6: + executing->state = 3; + stateCoverClosed(); + break; + + case 5: + executing->state = -1; + stateError(CancelLastError); + break; + } + + ResumeFromHere = 0; + } + else { + executing->state = 1; + stateBusy(executing); + } +} + +#define MIN(a, b) (((a) > (b)) ? (b) : (a)) +static void stateBusy(DVDCommandBlock *block) +{ + DVDCommandBlock *finished; + LastState = stateBusy; + switch (block->command) { + case 5: + __DIRegs[1] = __DIRegs[1]; + block->currTransferSize = sizeof(DVDDiskID); + DVDLowReadDiskID(block->addr, cbForStateBusy); + break; + case 1: + case 4: + __DIRegs[1] = __DIRegs[1]; + block->currTransferSize = MIN(block->length - block->transferredSize, 0x80000); + DVDLowRead((void *)((u8 *)block->addr + block->transferredSize), block->currTransferSize, block->offset + block->transferredSize, + cbForStateBusy); + break; + case 2: + __DIRegs[1] = __DIRegs[1]; + DVDLowSeek(block->offset, cbForStateBusy); + break; + case 3: + DVDLowStopMotor(cbForStateBusy); + break; + case 15: + DVDLowStopMotor(cbForStateBusy); + break; + case 6: + __DIRegs[1] = __DIRegs[1]; + if (AutoFinishing) { + executing->currTransferSize = 0; + DVDLowRequestAudioStatus(0, cbForStateBusy); + } + else { + executing->currTransferSize = 1; + DVDLowAudioStream(0, block->length, block->offset, cbForStateBusy); + } + break; + case 7: + __DIRegs[1] = __DIRegs[1]; + DVDLowAudioStream(0x10000, 0, 0, cbForStateBusy); + break; + case 8: + __DIRegs[1] = __DIRegs[1]; + AutoFinishing = TRUE; + DVDLowAudioStream(0, 0, 0, cbForStateBusy); + break; + case 9: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0, cbForStateBusy); + break; + case 10: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0x10000, cbForStateBusy); + break; + case 11: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0x20000, cbForStateBusy); + break; + case 12: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0x30000, cbForStateBusy); + break; + case 13: + __DIRegs[1] = __DIRegs[1]; + DVDLowAudioBufferConfig(block->offset, block->length, cbForStateBusy); + break; + case 14: + __DIRegs[1] = __DIRegs[1]; + block->currTransferSize = sizeof(DVDDriveInfo); + DVDLowInquiry(block->addr, cbForStateBusy); + break; + } +} + +void cbForStateBusy(u32 intType) +{ + DVDCommandBlock *finished; + + if (intType == 16) { + executing->state = -1; + stateTimeout(); + return; + } + + if ((CurrCommand == 3) || (CurrCommand == 15)) { + if (intType & 2) { + executing->state = -1; + stateError(0x1234567); + return; + } + + NumInternalRetry = 0; + + if (CurrCommand == 15) { + ResetRequired = TRUE; + } + + if (CheckCancel(7)) { + return; + } + + executing->state = 7; + stateMotorStopped(); + return; + } + + if ((CurrCommand == 1) || (CurrCommand == 4) || (CurrCommand == 5) || (CurrCommand == 14)) { + executing->transferredSize += executing->currTransferSize - __DIRegs[6]; + } + + if (intType & 8) { + Canceling = FALSE; + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 10; + if (finished->callback) { + (*finished->callback)(-3, finished); + } + if (CancelCallback) { + (CancelCallback)(0, finished); + } + stateReady(); + + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + + if (CheckCancel(0)) + return; + + if ((CurrCommand == 1) || (CurrCommand == 4) || (CurrCommand == 5) || (CurrCommand == 14)) { + if (executing->transferredSize != executing->length) { + stateBusy(executing); + return; + } + + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 0; + if (finished->callback) { + (finished->callback)((s32)finished->transferredSize, finished); + } + stateReady(); + } + else if ((CurrCommand == 9) || (CurrCommand == 10) || (CurrCommand == 11) || (CurrCommand == 12)) { + s32 result; + + if ((CurrCommand == 11) || (CurrCommand == 10)) { + result = (s32)(__DIRegs[DI_MM_BUF] << 2); + } + else { + result = (s32)__DIRegs[DI_MM_BUF]; + } + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 0; + if (finished->callback) { + (finished->callback)(result, finished); + } + stateReady(); + } + else if (CurrCommand == 6) { + if (executing->currTransferSize == 0) { + if (__DIRegs[DI_MM_BUF] & 1) { + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 9; + if (finished->callback) { + (finished->callback)(-2, finished); + } + stateReady(); + } + else { + AutoFinishing = FALSE; + executing->currTransferSize = 1; + DVDLowAudioStream(0, executing->length, executing->offset, cbForStateBusy); + } + } + else { + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 0; + if (finished->callback) { + (finished->callback)(0, finished); + } + stateReady(); + } + } + else { + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 0; + if (finished->callback) { + (finished->callback)(0, finished); + } + stateReady(); + } + } + else { + if (CurrCommand == 14) { + executing->state = -1; + stateError(0x01234567); + return; + } + + if ((CurrCommand == 1 || CurrCommand == 4 || CurrCommand == 5 || CurrCommand == 14) && (executing->transferredSize == executing->length)) { + + if (CheckCancel(0)) { + return; + } + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 0; + if (finished->callback) { + (finished->callback)((s32)finished->transferredSize, finished); + } + stateReady(); + return; + } + + stateGettingError(); + } +} + +static BOOL issueCommand(s32 prio, DVDCommandBlock *block) +{ + BOOL level; + BOOL result; + + if (autoInvalidation && (block->command == 1 || block->command == 4 || block->command == 5 || block->command == 14)) { + DCInvalidateRange(block->addr, block->length); + } + + level = OSDisableInterrupts(); + + block->state = 2; + result = __DVDPushWaitingQueue(prio, block); + + if ((executing == (DVDCommandBlock *)NULL) && (PauseFlag == FALSE)) { + stateReady(); + } + + OSRestoreInterrupts(level); + + return result; +} + +BOOL DVDReadAbsAsyncPrio(DVDCommandBlock *block, void *addr, s32 length, s32 offset, DVDCBCallback callback, s32 prio) +{ + BOOL idle; + block->command = 1; + block->addr = addr; + block->length = length; + block->offset = offset; + block->transferredSize = 0; + block->callback = callback; + + idle = issueCommand(prio, block); + return idle; +} +BOOL DVDReadAbsAsyncForBS(DVDCommandBlock *block, void *addr, s32 length, s32 offset, DVDCBCallback callback) +{ + BOOL idle; + block->command = 4; + block->addr = addr; + block->length = length; + block->offset = offset; + block->transferredSize = 0; + block->callback = callback; + + idle = issueCommand(2, block); + return idle; +} +BOOL DVDReadDiskID(DVDCommandBlock *block, DVDDiskID *diskID, DVDCBCallback callback) +{ + BOOL idle; + block->command = 5; + block->addr = diskID; + block->length = sizeof(DVDDiskID); + ; + block->offset = 0; + block->transferredSize = 0; + block->callback = callback; + + idle = issueCommand(2, block); + return idle; +} +BOOL DVDPrepareStreamAbsAsync(DVDCommandBlock *block, u32 length, u32 offset, DVDCBCallback callback) +{ + BOOL idle; + block->command = 6; + block->length = length; + block->offset = offset; + block->callback = callback; + + idle = issueCommand(1, block); + return idle; +} +BOOL DVDCancelStreamAsync(DVDCommandBlock *block, DVDCBCallback callback) +{ + BOOL idle; + block->command = 7; + block->callback = callback; + idle = issueCommand(1, block); + return idle; +} +s32 DVDCancelStream(DVDCommandBlock *block) +{ + BOOL result; + s32 state; + BOOL enabled; + s32 retVal; + + result = DVDCancelStreamAsync(block, cbForCancelStreamSync); + + if (result == FALSE) { + return -1; + } + + enabled = OSDisableInterrupts(); + + while (TRUE) { + state = ((volatile DVDCommandBlock *)block)->state; + + if (state == 0 || state == -1 || state == 10) { + retVal = (s32)block->transferredSize; + break; + } + + OSSleepThread(&__DVDThreadQueue); + } + + OSRestoreInterrupts(enabled); + return retVal; +} +static void cbForCancelStreamSync(s32 result, DVDCommandBlock *block) +{ + block->transferredSize = (u32)result; + OSWakeupThread(&__DVDThreadQueue); +} +BOOL DVDStopStreamAtEndAsync(DVDCommandBlock *block, DVDCBCallback callback) +{ + BOOL idle; + + block->command = 8; + block->callback = callback; + + idle = issueCommand(1, block); + + return idle; +} +BOOL DVDGetStreamErrorStatusAsync(DVDCommandBlock *block, DVDCBCallback callback) +{ + BOOL idle; + + block->command = 9; + block->callback = callback; + + idle = issueCommand(1, block); + + return idle; +} +BOOL DVDGetStreamPlayAddrAsync(DVDCommandBlock *block, DVDCBCallback callback) +{ + BOOL idle; + + block->command = 10; + block->callback = callback; + + idle = issueCommand(1, block); + + return idle; +} +BOOL DVDInquiryAsync(DVDCommandBlock *block, DVDDriveInfo *info, DVDCBCallback callback) +{ + BOOL idle; + + block->command = 14; + block->addr = (void *)info; + block->length = sizeof(DVDDriveInfo); + block->transferredSize = 0; + block->callback = callback; + + idle = issueCommand(2, block); + + return idle; +} + +void DVDReset(void) +{ + DVDLowReset(); + __DIRegs[0] = 0x2a; + __DIRegs[1] = __DIRegs[1]; + ResetRequired = FALSE; + ResumeFromHere = 0; +} + +s32 DVDGetCommandBlockStatus(const DVDCommandBlock *block) +{ + BOOL enabled; + s32 retVal; + + enabled = OSDisableInterrupts(); + + if (block->state == 3) { + retVal = 1; + } + else { + retVal = block->state; + } + + OSRestoreInterrupts(enabled); + + return retVal; +} + +s32 DVDGetDriveStatus() +{ + BOOL enabled; + s32 retVal; + + enabled = OSDisableInterrupts(); + + if (FatalErrorFlag) { + retVal = -1; + } + else if (PausingFlag) { + retVal = 8; + } + else { + if (executing == (DVDCommandBlock *)NULL) { + retVal = 0; + } + else if (executing == &DummyCommandBlock) { + retVal = 0; + } + else { + retVal = DVDGetCommandBlockStatus(executing); + } + } + + OSRestoreInterrupts(enabled); + + return retVal; +} + +BOOL DVDSetAutoInvalidation(BOOL autoInval) +{ + BOOL prev; + prev = autoInvalidation; + autoInvalidation = autoInval; + return prev; +} + +inline void DVDPause(void) +{ + BOOL level; + level = OSDisableInterrupts(); + PauseFlag = TRUE; + if (executing == (DVDCommandBlock *)NULL) { + PausingFlag = TRUE; + } + OSRestoreInterrupts(level); +} + +inline void DVDResume(void) +{ + BOOL level; + level = OSDisableInterrupts(); + PauseFlag = FALSE; + if (PausingFlag) { + PausingFlag = FALSE; + stateReady(); + } + OSRestoreInterrupts(level); +} + +BOOL DVDCancelAsync(DVDCommandBlock *block, DVDCBCallback callback) +{ + BOOL enabled; + DVDLowCallback old; + + enabled = OSDisableInterrupts(); + + switch (block->state) { + case -1: + case 0: + case 10: + if (callback) + (*callback)(0, block); + break; + + case 1: + if (Canceling) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + Canceling = TRUE; + CancelCallback = callback; + if (block->command == 4 || block->command == 1) { + DVDLowBreak(); + } + break; + + case 2: + __DVDDequeueWaitingQueue(block); + block->state = 10; + if (block->callback) + (block->callback)(-3, block); + if (callback) + (*callback)(0, block); + break; + + case 3: + switch (block->command) { + case 5: + case 4: + case 13: + case 15: + if (callback) + (*callback)(0, block); + break; + + default: + if (Canceling) { + OSRestoreInterrupts(enabled); + return FALSE; + } + Canceling = TRUE; + CancelCallback = callback; + break; + } + break; + + case 4: + case 5: + case 6: + case 7: + case 11: + old = DVDLowClearCallback(); + if (old != cbForStateMotorStopped) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + if (block->state == 4) + ResumeFromHere = 3; + if (block->state == 5) + ResumeFromHere = 4; + if (block->state == 6) + ResumeFromHere = 1; + if (block->state == 11) + ResumeFromHere = 2; + if (block->state == 7) + ResumeFromHere = 7; + + block->state = 10; + if (block->callback) { + (block->callback)(-3, block); + } + if (callback) { + (callback)(0, block); + } + stateReady(); + break; + } + + OSRestoreInterrupts(enabled); + return TRUE; +} + +s32 DVDCancel(DVDCommandBlock *block) +{ + BOOL result; + s32 state; + u32 command; + BOOL enabled; + + result = DVDCancelAsync(block, cbForCancelSync); + + if (result == FALSE) { + return -1; + } + + enabled = OSDisableInterrupts(); + + for (;;) { + state = ((volatile DVDCommandBlock *)block)->state; + + if ((state == 0) || (state == -1) || (state == 10)) { + break; + } + + if (state == 3) { + command = ((volatile DVDCommandBlock *)block)->command; + + if ((command == 4) || (command == 5) || (command == 13) || (command == 15)) { + break; + } + } + + OSSleepThread(&__DVDThreadQueue); + } + + OSRestoreInterrupts(enabled); + return 0; +} + +static void cbForCancelSync(s32 result, DVDCommandBlock *block) +{ + OSWakeupThread(&__DVDThreadQueue); +} + +inline BOOL DVDCancelAllAsync(DVDCBCallback callback) +{ + BOOL enabled; + DVDCommandBlock *p; + BOOL retVal; + + enabled = OSDisableInterrupts(); + DVDPause(); + + while ((p = __DVDPopWaitingQueue()) != 0) { + DVDCancelAsync(p, NULL); + } + + if (executing) + retVal = DVDCancelAsync(executing, callback); + else { + retVal = TRUE; + if (callback) + (*callback)(0, NULL); + } + + DVDResume(); + OSRestoreInterrupts(enabled); + return retVal; +} + +s32 DVDCancelAll(void) +{ + BOOL result; + BOOL enabled; + + enabled = OSDisableInterrupts(); + CancelAllSyncComplete = FALSE; + + result = DVDCancelAllAsync(cbForCancelAllSync); + + if (result == FALSE) { + OSRestoreInterrupts(enabled); + return -1; + } + + for (;;) { + if (CancelAllSyncComplete) + break; + + OSSleepThread(&__DVDThreadQueue); + } + + OSRestoreInterrupts(enabled); + return 0; +} + +static void cbForCancelAllSync(s32 result, DVDCommandBlock *block) +{ + CancelAllSyncComplete = TRUE; + OSWakeupThread(&__DVDThreadQueue); +} + +DVDDiskID *DVDGetCurrentDiskID(void) +{ + return (DVDDiskID *)OSPhysicalToCached(0); +} +BOOL DVDCheckDisk(void) +{ + BOOL enabled; + s32 retVal; + s32 state; + u32 coverReg; + + enabled = OSDisableInterrupts(); + + if (FatalErrorFlag) { + state = -1; + } + else if (PausingFlag) { + state = 8; + } + else { + if (executing == (DVDCommandBlock *)NULL) { + state = 0; + } + else if (executing == &DummyCommandBlock) { + state = 0; + } + else { + state = executing->state; + } + } + + switch (state) { + case 1: + case 9: + case 10: + case 2: + retVal = TRUE; + break; + + case -1: + case 11: + case 7: + case 3: + case 4: + case 5: + case 6: + retVal = FALSE; + break; + + case 0: + case 8: + coverReg = __DIRegs[1]; + if (((coverReg >> 2) & 1) || (coverReg & 1)) { + retVal = FALSE; + } + else { + retVal = TRUE; + } + } + + OSRestoreInterrupts(enabled); + + return retVal; +} + +void __DVDPrepareResetAsync(DVDCBCallback callback) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + + __DVDClearWaitingQueue(); + + if (Canceling) { + CancelCallback = callback; + } + else { + if (executing) { + executing->callback = NULL; + } + + DVDCancelAllAsync(callback); + } + + OSRestoreInterrupts(enabled); +} diff --git a/src/dolphin/dvd/dvderror.c b/src/dolphin/dvd/dvderror.c new file mode 100644 index 00000000..d7bf68ba --- /dev/null +++ b/src/dolphin/dvd/dvderror.c @@ -0,0 +1,56 @@ +#include "dolphin/DVDPriv.h" +#include "dolphin/OSRtcPriv.h" + +static u32 ErrorTable[] = { + 0, 0x00023A00, 0x00062800, 0x00030200, 0x00031100, 0x00052000, + 0x00052001, 0x00052100, 0x00052400, 0x00052401, 0x00052402, 0x000B5A01, + 0x00056300, 0x00020401, 0x00020400, 0x00040800, 0x00100007, 0, +}; + +static u8 ErrorCode2Num(u32 errorCode) { + u32 i; + + for (i = 0; i < sizeof(ErrorTable) / sizeof(ErrorTable[0]); i++) { + if (ErrorTable[i] == errorCode) { + return (u8)i; + } + } + + if ((errorCode >= 0x00100000) && (errorCode <= 0x00100008)) { + return 17; + } + + return 29; +} + +static u8 Convert(u32 error) { + u32 statusCode; + u32 errorCode; + u8 errorNum; + + if (error == 0x01234567) + return 255; + + if (error == 0x01234568) + return 254; + + statusCode = (error & 0xff000000) >> 24; + errorCode = error & 0x00ffffff; + + errorNum = ErrorCode2Num(errorCode); + if (statusCode >= 6) + statusCode = 6; + + return (u8)(statusCode * 30 + errorNum); +} + +void __DVDStoreErrorCode(u32 error) { + OSSramEx* sram; + u8 num; + + num = Convert(error); + + sram = __OSLockSramEx(); + sram->dvdErrorCode = num; + __OSUnlockSramEx(TRUE); +} \ No newline at end of file diff --git a/src/dolphin/dvd/dvdfs.c b/src/dolphin/dvd/dvdfs.c new file mode 100644 index 00000000..4f465be0 --- /dev/null +++ b/src/dolphin/dvd/dvdfs.c @@ -0,0 +1,356 @@ + +#include "dolphin/DVDPriv.h" +#include "dolphin/os.h" +#include "dolphin/os/OSBootInfo.h" + +typedef struct FSTEntry FSTEntry; + +struct FSTEntry { + unsigned int isDirAndStringOff; + unsigned int parentOrPosition; + unsigned int nextEntryOrLength; +}; + +static OSBootInfo* BootInfo; +static FSTEntry* FstStart; +static char* FstStringStart; +static u32 MaxEntryNum; +static u32 currentDirectory = 0; +OSThreadQueue __DVDThreadQueue; +u32 __DVDLongFileNameFlag = 0; + +static void cbForReadAsync(s32 result, DVDCommandBlock* block); +static void cbForReadSync(s32 result, DVDCommandBlock* block); +static void cbForSeekAsync(s32 result, DVDCommandBlock* block); +static void cbForSeekSync(s32 result, DVDCommandBlock* block); +static void cbForPrepareStreamAsync(s32 result, DVDCommandBlock* block); +static void cbForPrepareStreamSync(s32 result, DVDCommandBlock* block); + +void __DVDFSInit() { + BootInfo = (OSBootInfo*)OSPhysicalToCached(0); + FstStart = (FSTEntry*)BootInfo->FSTLocation; + + if (FstStart) { + MaxEntryNum = FstStart[0].nextEntryOrLength; + FstStringStart = (char*)&(FstStart[MaxEntryNum]); + } +} + +/* For convenience */ +#define entryIsDir(i) (((FstStart[i].isDirAndStringOff & 0xff000000) == 0) ? FALSE : TRUE) +#define stringOff(i) (FstStart[i].isDirAndStringOff & ~0xff000000) +#define parentDir(i) (FstStart[i].parentOrPosition) +#define nextDir(i) (FstStart[i].nextEntryOrLength) +#define filePosition(i) (FstStart[i].parentOrPosition) +#define fileLength(i) (FstStart[i].nextEntryOrLength) + +static BOOL isSame(const char* path, const char* string) { + while (*string != '\0') { + if (tolower(*path++) != tolower(*string++)) { + return FALSE; + } + } + + if ((*path == '/') || (*path == '\0')) { + return TRUE; + } + + return FALSE; +} + +s32 DVDConvertPathToEntrynum(char* pathPtr) { + const char* ptr; + char* stringPtr; + BOOL isDir; + u32 length; + u32 dirLookAt; + u32 i; + const char* origPathPtr = pathPtr; + const char* extentionStart; + BOOL illegal; + BOOL extention; + + dirLookAt = currentDirectory; + + while (1) { + + if (*pathPtr == '\0') { + return (s32)dirLookAt; + } else if (*pathPtr == '/') { + dirLookAt = 0; + pathPtr++; + continue; + } else if (*pathPtr == '.') { + if (*(pathPtr + 1) == '.') { + if (*(pathPtr + 2) == '/') { + dirLookAt = parentDir(dirLookAt); + pathPtr += 3; + continue; + } else if (*(pathPtr + 2) == '\0') { + return (s32)parentDir(dirLookAt); + } + } else if (*(pathPtr + 1) == '/') { + pathPtr += 2; + continue; + } else if (*(pathPtr + 1) == '\0') { + return (s32)dirLookAt; + } + } + + if (__DVDLongFileNameFlag == 0) { + extention = FALSE; + illegal = FALSE; + + for (ptr = pathPtr; (*ptr != '\0') && (*ptr != '/'); ptr++) { + if (*ptr == '.') { + if ((ptr - pathPtr > 8) || (extention == TRUE)) { + illegal = TRUE; + break; + } + extention = TRUE; + extentionStart = ptr + 1; + + } else if (*ptr == ' ') + illegal = TRUE; + } + + if ((extention == TRUE) && (ptr - extentionStart > 3)) + illegal = TRUE; + + if (illegal) + OSPanic(__FILE__, 376, + "DVDConvertEntrynumToPath(possibly DVDOpen or DVDChangeDir or DVDOpenDir): " + "specified directory or file (%s) doesn't match standard 8.3 format. This is a " + "temporary restriction and will be removed soon\n", + origPathPtr); + } else { + for (ptr = pathPtr; (*ptr != '\0') && (*ptr != '/'); ptr++) + ; + } + + isDir = (*ptr == '\0') ? FALSE : TRUE; + length = (u32)(ptr - pathPtr); + + ptr = pathPtr; + + for (i = dirLookAt + 1; i < nextDir(dirLookAt); i = entryIsDir(i) ? nextDir(i) : (i + 1)) { + if ((entryIsDir(i) == FALSE) && (isDir == TRUE)) { + continue; + } + + stringPtr = FstStringStart + stringOff(i); + + if (isSame(ptr, stringPtr) == TRUE) { + goto next_hier; + } + } + + return -1; + + next_hier: + if (!isDir) { + return (s32)i; + } + + dirLookAt = i; + pathPtr += length + 1; + } +} + +BOOL DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo) { + if ((entrynum < 0) || (entrynum >= MaxEntryNum) || entryIsDir(entrynum)) { + return FALSE; + } + + fileInfo->startAddr = filePosition(entrynum); + fileInfo->length = fileLength(entrynum); + fileInfo->callback = (DVDCallback)NULL; + fileInfo->cb.state = DVD_STATE_END; + + return TRUE; +} + +BOOL DVDOpen(char* fileName, DVDFileInfo* fileInfo) { + s32 entry; + char currentDir[128]; + + entry = DVDConvertPathToEntrynum(fileName); + + if (0 > entry) { + DVDGetCurrentDir(currentDir, 128); + OSReport("Warning: DVDOpen(): file '%s' was not found under %s.\n", fileName, currentDir); + return FALSE; + } + + if (entryIsDir(entry)) { + return FALSE; + } + + fileInfo->startAddr = filePosition(entry); + fileInfo->length = fileLength(entry); + fileInfo->callback = (DVDCallback)NULL; + fileInfo->cb.state = DVD_STATE_END; + + return TRUE; +} + +BOOL DVDClose(DVDFileInfo* fileInfo) { + DVDCancel(&(fileInfo->cb)); + return TRUE; +} + +static u32 myStrncpy(char* dest, char* src, u32 maxlen) { + u32 i = maxlen; + + while ((i > 0) && (*src != 0)) { + *dest++ = *src++; + i--; + } + + return (maxlen - i); +} + +static u32 entryToPath(u32 entry, char* path, u32 maxlen) { + char* name; + u32 loc; + + if (entry == 0) { + return 0; + } + + name = FstStringStart + stringOff(entry); + + loc = entryToPath(parentDir(entry), path, maxlen); + + if (loc == maxlen) { + return loc; + } + + *(path + loc++) = '/'; + + loc += myStrncpy(path + loc, name, maxlen - loc); + + return loc; +} + +static BOOL DVDConvertEntrynumToPath(s32 entrynum, char* path, u32 maxlen) { + u32 loc; + + loc = entryToPath((u32)entrynum, path, maxlen); + + if (loc == maxlen) { + path[maxlen - 1] = '\0'; + return FALSE; + } + + if (entryIsDir(entrynum)) { + if (loc == maxlen - 1) { + path[loc] = '\0'; + return FALSE; + } + + path[loc++] = '/'; + } + + path[loc] = '\0'; + return TRUE; +} + +BOOL DVDGetCurrentDir(char* path, u32 maxlen) { + return DVDConvertEntrynumToPath((s32)currentDirectory, path, maxlen); +} + +BOOL DVDChangeDir(char* dirName) { + s32 entry; + entry = DVDConvertPathToEntrynum(dirName); + if ((entry < 0) || (entryIsDir(entry) == FALSE)) { + return FALSE; + } + + currentDirectory = (u32)entry; + + return TRUE; +} + +BOOL DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, + DVDCallback callback, s32 prio) { + + if (!((0 <= offset) && (offset < fileInfo->length))) { + OSPanic(__FILE__, 739, "DVDReadAsync(): specified area is out of the file "); + } + + if (!((0 <= offset + length) && (offset + length < fileInfo->length + DVD_MIN_TRANSFER_SIZE))) { + OSPanic(__FILE__, 745, "DVDReadAsync(): specified area is out of the file "); + } + + fileInfo->callback = callback; + DVDReadAbsAsyncPrio(&(fileInfo->cb), addr, length, (s32)(fileInfo->startAddr + offset), + cbForReadAsync, prio); + + return TRUE; +} +#ifndef offsetof +#define offsetof(type, memb) ((u32) & ((type*)0)->memb) +#endif + +static void cbForReadAsync(s32 result, DVDCommandBlock* block) { + DVDFileInfo* fileInfo; + + fileInfo = (DVDFileInfo*)((char*)block - offsetof(DVDFileInfo, cb)); + if (fileInfo->callback) { + (fileInfo->callback)(result, fileInfo); + } +} + +/* This is based on the revolution SDK, these may not match in all cases I have also left the line numbers at 0 */ +BOOL DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio) { + BOOL result; + DVDCommandBlock* block; + s32 state; + BOOL enabled; + s32 retVal; + + if (!((0 <= offset) && (offset < fileInfo->length))) { + OSPanic(__FILE__, 809, "DVDRead(): specified area is out of the file "); + } + + if (!((0 <= offset + length) && (offset + length < fileInfo->length + DVD_MIN_TRANSFER_SIZE))) { + OSPanic(__FILE__, 815, "DVDRead(): specified area is out of the file "); + } + + block = &(fileInfo->cb); + + result = DVDReadAbsAsyncPrio(block, addr, length, (s32)(fileInfo->startAddr + offset), + cbForReadSync, prio); + + if (result == FALSE) { + return -1; + } + + enabled = OSDisableInterrupts(); + + while(1) { + state = ((volatile DVDCommandBlock*)block)->state; + + if (state == DVD_STATE_END) { + retVal = (s32)block->transferredSize; + break; + } + if (state == DVD_STATE_FATAL_ERROR) { + retVal = DVD_RESULT_FATAL_ERROR; + break; + } + if (state == DVD_STATE_CANCELED) { + retVal = DVD_RESULT_CANCELED; + break; + } + + OSSleepThread(&__DVDThreadQueue); + } + + OSRestoreInterrupts(enabled); + return retVal; +} + +/* This is based on the revolution SDK, these may not match in all cases */ +static void cbForReadSync(s32 result, DVDCommandBlock* block) { OSWakeupThread(&__DVDThreadQueue); } \ No newline at end of file diff --git a/src/dolphin/dvd/dvdlow.c b/src/dolphin/dvd/dvdlow.c new file mode 100644 index 00000000..9b64c91a --- /dev/null +++ b/src/dolphin/dvd/dvdlow.c @@ -0,0 +1,436 @@ +#include "dolphin/DVDPriv.h" +#include "dolphin/os.h" + +extern DVDDiskID* DVDGetCurrentDiskID(); + +extern OSTime __OSGetSystemTime(); + +static BOOL FirstRead = TRUE; +static volatile BOOL StopAtNextInt = FALSE; +static u32 LastLength = 0; +static DVDLowCallback Callback = NULL; +static DVDLowCallback ResetCoverCallback = NULL; +static volatile OSTime LastResetEnd = 0; +static volatile u32 ResetOccurred = FALSE; +static volatile BOOL WaitingCoverClose = FALSE; +static BOOL Breaking = FALSE; +static volatile u32 WorkAroundType = 0; +static u32 WorkAroundSeekLocation = 0; +static volatile OSTime LastReadFinished = 0; +static OSTime LastReadIssued = 0; +static volatile BOOL LastCommandWasRead = FALSE; +static vu32 NextCommandNumber = 0; + +typedef struct DVDBuffer { + void* addr; + u32 length; + u32 offset; +} DVDBuffer; + +typedef struct DVDCommand { + s32 cmd; + void* addr; + u32 length; + u32 offset; + DVDLowCallback callback; +} DVDCommand; + +static DVDCommand CommandList[3]; +static OSAlarm AlarmForWA; +static OSAlarm AlarmForTimeout; +static OSAlarm AlarmForBreak; +static DVDBuffer Prev; +static DVDBuffer Curr; + +void __DVDInitWA() { + NextCommandNumber = 0; + CommandList[0].cmd = -1; + __DVDLowSetWAType(0, 0); + OSInitAlarm(); +} + +static void Read(void* addr, u32 length, u32 offset, DVDLowCallback callback); + +static BOOL ProcessNextCommand() { + s32 n = NextCommandNumber; + ASSERT(n < 3); + + if (CommandList[n].cmd == 1) { + ++NextCommandNumber; + Read(CommandList[n].addr, CommandList[n].length, CommandList[n].offset, + CommandList[n].callback); + return TRUE; + } else if (CommandList[n].cmd == 2) { + ++NextCommandNumber; + DVDLowSeek(CommandList[n].offset, CommandList[n].callback); + return TRUE; + } + + return FALSE; +} + +void __DVDInterruptHandler(__OSInterrupt interrupt, OSContext* context) { + DVDLowCallback cb; + OSContext exceptionContext; + u32 cause = 0; + u32 reg; + u32 intr; + u32 mask; + + OSCancelAlarm(&AlarmForTimeout); + + if (LastCommandWasRead) { + LastReadFinished = __OSGetSystemTime(); + FirstRead = FALSE; + Prev.addr = Curr.addr; + Prev.length = Curr.length; + Prev.offset = Curr.offset; + if (StopAtNextInt == TRUE) { + cause |= 8; + } + } + + LastCommandWasRead = FALSE; + StopAtNextInt = FALSE; + reg = __DIRegs[0]; + mask = reg & 0x2a; + intr = (reg & 0x54) & (mask << 1); + + if (intr & 0x40) { + cause |= 8; + } + + if (intr & 0x10) { + cause |= 1; + } + + if (intr & 4) { + cause |= 2; + } + + if (cause) { + ResetOccurred = FALSE; + + } + + __DIRegs[0] = intr | mask; + + if (ResetOccurred && (__OSGetSystemTime() - LastResetEnd) < OSMillisecondsToTicks(200)) { + reg = __DIRegs[1]; + mask = reg & 0x2; + intr = (reg & 4) & (mask << 1); + if (intr & 4) { + if (ResetCoverCallback) { + ResetCoverCallback(4); + } + ResetCoverCallback = NULL; + } + + __DIRegs[1] = __DIRegs[1]; + } else if (WaitingCoverClose) { + reg = __DIRegs[1]; + mask = reg & 2; + intr = (reg & 4) & (mask << 1); + + if (intr & 4) { + cause |= 4; + } + + __DIRegs[1] = intr | mask; + WaitingCoverClose = FALSE; + } else { + __DIRegs[1] = 0; + } + + if ((cause & 8) && !Breaking) { + cause &= ~8; + } + + if ((cause & 1)) { + if (ProcessNextCommand()) { + return; + } + } else { + CommandList[0].cmd = -1; + NextCommandNumber = 0; + } + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + if (cause) { + cb = Callback; + Callback = NULL; + if (cb) { + cb(cause); + } + + Breaking = FALSE; + } + + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); +} + +static void AlarmHandler(OSAlarm* alarm, OSContext* context) { + BOOL error = ProcessNextCommand(); + ASSERTMSG(error != FALSE, "Failed assertion processed"); +} + +static void AlarmHandlerForTimeout(OSAlarm* alarm, OSContext* context) { + OSContext tmpContext; + DVDLowCallback callback; + __OSMaskInterrupts(0x400); + OSClearContext(&tmpContext); + OSSetCurrentContext(&tmpContext); + callback = Callback; + Callback = NULL; + if (callback != NULL) { + callback(0x10); + } + OSClearContext(&tmpContext); + OSSetCurrentContext(context); +} + +static void SetTimeoutAlarm(OSTime timeout) { + OSCreateAlarm(&AlarmForTimeout); + OSSetAlarm(&AlarmForTimeout, timeout, AlarmHandlerForTimeout); +} + +static void Read(void* addr, u32 length, u32 offset, DVDLowCallback callback) { + StopAtNextInt = FALSE; + LastCommandWasRead = TRUE; + Callback = callback; + LastReadIssued = __OSGetSystemTime(); + + __DIRegs[2] = 0xa8000000; + __DIRegs[3] = offset / 4; + __DIRegs[4] = length; + __DIRegs[5] = (u32)addr; + __DIRegs[6] = length; + LastLength = length; + __DIRegs[7] = 3; + + if (length > 0xa00000) { + SetTimeoutAlarm(OSSecondsToTicks(20)); + } else { + SetTimeoutAlarm(OSSecondsToTicks(10)); + } +} + +BOOL HitCache(DVDBuffer* cur, DVDBuffer* prev) { + u32 uVar1 = (prev->offset + prev->length - 1) >> 15; + u32 uVar2 = (cur->offset >> 15); + u32 iVar3 = (DVDGetCurrentDiskID()->streaming ? TRUE : FALSE) ? 5 : 15; + + if ((uVar2 > uVar1 - 2) || (uVar2 < uVar1 + iVar3 + 3)) { + return TRUE; + } + return FALSE; +} + +static void DoJustRead(void* addr, u32 length, u32 offset, DVDLowCallback callback) { + CommandList[0].cmd = -1; + NextCommandNumber = 0; + Read(addr, length, offset, callback); +} + +static void SeekTwiceBeforeRead(void* addr, u32 length, u32 offset, DVDLowCallback callback) { + u32 newOffset = offset & ~0x7FFF; + if (!newOffset) { + newOffset = 0; + } else { + newOffset += WorkAroundSeekLocation; + } + CommandList[0].cmd = 2; + CommandList[0].offset = newOffset; + CommandList[0].callback = callback; + CommandList[1].cmd = 1; + CommandList[1].addr = addr; + CommandList[1].length = length; + CommandList[1].offset = offset; + CommandList[1].callback = callback; + CommandList[2].cmd = -1; + NextCommandNumber = 0; + DVDLowSeek(newOffset, callback); +} + +static void WaitBeforeRead(void* addr, u32 length, u32 offset, DVDLowCallback callback, + OSTime timeout) { + CommandList[0].cmd = 1; + CommandList[0].addr = addr; + CommandList[0].length = length; + CommandList[0].offset = offset; + CommandList[0].callback = callback; + CommandList[1].cmd = -1; + NextCommandNumber = 0; + OSCreateAlarm(&AlarmForWA); + OSSetAlarm(&AlarmForWA, timeout, AlarmHandler); +} + + +BOOL DVDLowRead(void* addr, u32 length, u32 offset, DVDLowCallback callback) { + OSTime diff; + u32 prev; + + __DIRegs[6] = length; + Curr.addr = addr; + Curr.length = length; + Curr.offset = offset; + + if (WorkAroundType == 0) { + DoJustRead(addr, length, offset, callback); + } else if (WorkAroundType == 1) { + if (FirstRead) { + SeekTwiceBeforeRead(addr, length, offset, callback); + } else { + if (!HitCache(&Curr, &Prev)) { + DoJustRead(addr, length, offset, callback); + } else { + prev = (Prev.offset + Prev.length - 1) >> 15; + if (prev == Curr.offset >> 15 || prev + 1 == Curr.offset >> 15) { + diff = __OSGetSystemTime() - LastReadFinished; + if (OSMillisecondsToTicks(5) < diff) { + DoJustRead(addr, length, offset, callback); + } else { + WaitBeforeRead(addr, length, offset, callback, + OSMillisecondsToTicks(5) - diff + OSMicrosecondsToTicks(500)); + } + } else { + SeekTwiceBeforeRead(addr, length, offset, callback); + } + } + } + } + return TRUE; +} + +BOOL DVDLowSeek(u32 offset, DVDLowCallback callback) { + ASSERTMSG(offset & 3, "DVDLowSeek(): offset must be a multiple of 4."); + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = 0xab000000; + __DIRegs[3] = offset / 4; + __DIRegs[7] = 1; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowWaitCoverClose(DVDLowCallback callback) { + Callback = callback; + WaitingCoverClose = TRUE; + StopAtNextInt = FALSE; + __DIRegs[1] = 2; + return TRUE; +} + +BOOL DVDLowReadDiskID(DVDDiskID* diskID, DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = 0xa8000040; + __DIRegs[3] = 0; + __DIRegs[4] = sizeof(DVDDiskID); + __DIRegs[5] = (u32)diskID; + __DIRegs[6] = sizeof(DVDDiskID); + __DIRegs[7] = 3; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowStopMotor(DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = 0xe3000000; + __DIRegs[7] = 1; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowRequestError(DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = 0xe0000000; + __DIRegs[7] = 1; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowInquiry(DVDDriveInfo* info, DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = 0x12000000; + __DIRegs[4] = sizeof(DVDDriveInfo); + __DIRegs[5] = (u32)info; + __DIRegs[6] = sizeof(DVDDriveInfo); + __DIRegs[7] = 3; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowAudioStream(u32 subcmd, u32 length, u32 offset, DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = subcmd | 0xe1000000; + __DIRegs[3] = offset >> 2; + __DIRegs[4] = length; + __DIRegs[7] = 1; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowRequestAudioStatus(u32 subcmd, DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = subcmd | 0xe2000000; + __DIRegs[7] = 1; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +BOOL DVDLowAudioBufferConfig(BOOL enable, u32 size, DVDLowCallback callback) { + StopAtNextInt = FALSE; + Callback = callback; + __DIRegs[2] = 0xe4000000 | (enable != 0 ? 0x10000 : 0) | size; + __DIRegs[7] = 1; + SetTimeoutAlarm(OSSecondsToTicks(10)); + return TRUE; +} + +void DVDLowReset() { + u32 reg; + OSTime resetStart; + + __DIRegs[1] = 2; + reg = __PIRegs[9]; + __PIRegs[9] = (reg & ~4) | 1; + + resetStart = __OSGetSystemTime(); + while ((__OSGetSystemTime() - resetStart) < OSMicrosecondsToTicks(12)) + ; + + __PIRegs[9] = reg | 5; + ResetOccurred = TRUE; + LastResetEnd = __OSGetSystemTime(); +} + +BOOL DVDLowBreak() { + StopAtNextInt = TRUE; + Breaking = TRUE; + return TRUE; +} + +DVDLowCallback DVDLowClearCallback() { + DVDLowCallback old; + __DIRegs[1] = 0; + old = Callback; + Callback = NULL; + return old; +} + +void __DVDLowSetWAType(u32 type, u32 location) { + BOOL enabled; + enabled = OSDisableInterrupts(); + WorkAroundType = type; + WorkAroundSeekLocation = location; + OSRestoreInterrupts(enabled); +} \ No newline at end of file diff --git a/src/dolphin/dvd/dvdqueue.c b/src/dolphin/dvd/dvdqueue.c new file mode 100644 index 00000000..445ae7e7 --- /dev/null +++ b/src/dolphin/dvd/dvdqueue.c @@ -0,0 +1,142 @@ +#include "dolphin/DVDPriv.h" + +#define MAX_QUEUES 4 +typedef struct { + DVDCommandBlock* next; + DVDCommandBlock* prev; +} DVDQueue; + +static DVDQueue WaitingQueue[MAX_QUEUES]; + +void __DVDClearWaitingQueue(void) { + u32 i; + + for (i = 0; i < MAX_QUEUES; i++) { + DVDCommandBlock* q; + + q = (DVDCommandBlock*)&(WaitingQueue[i]); + q->next = q; + q->prev = q; + } +} + +BOOL __DVDPushWaitingQueue(s32 prio, DVDCommandBlock* block) { + BOOL enabled; + DVDCommandBlock* q; + + enabled = OSDisableInterrupts(); + + q = (DVDCommandBlock*)&(WaitingQueue[prio]); + + q->prev->next = block; + block->prev = q->prev; + block->next = q; + q->prev = block; + + OSRestoreInterrupts(enabled); + + return TRUE; +} + +static DVDCommandBlock* PopWaitingQueuePrio(s32 prio) { + DVDCommandBlock* tmp; + BOOL enabled; + DVDCommandBlock* q; + + enabled = OSDisableInterrupts(); + + q = (DVDCommandBlock*)&(WaitingQueue[prio]); + + tmp = q->next; + q->next = tmp->next; + tmp->next->prev = q; + + OSRestoreInterrupts(enabled); + + tmp->next = (DVDCommandBlock*)NULL; + tmp->prev = (DVDCommandBlock*)NULL; + + return tmp; +} + +DVDCommandBlock* __DVDPopWaitingQueue(void) { + u32 i; + BOOL enabled; + DVDCommandBlock* q; + + enabled = OSDisableInterrupts(); + + for (i = 0; i < MAX_QUEUES; i++) { + q = (DVDCommandBlock*)&(WaitingQueue[i]); + if (q->next != q) { + OSRestoreInterrupts(enabled); + return PopWaitingQueuePrio((s32)i); + } + } + + OSRestoreInterrupts(enabled); + + return (DVDCommandBlock*)NULL; +} + +BOOL __DVDCheckWaitingQueue(void) { + u32 i; + BOOL enabled; + DVDCommandBlock* q; + + enabled = OSDisableInterrupts(); + + for (i = 0; i < MAX_QUEUES; i++) { + q = (DVDCommandBlock*)&(WaitingQueue[i]); + if (q->next != q) { + OSRestoreInterrupts(enabled); + return TRUE; + } + } + + OSRestoreInterrupts(enabled); + + return FALSE; +} + +BOOL __DVDDequeueWaitingQueue(DVDCommandBlock* block) { + BOOL enabled; + DVDCommandBlock* prev; + DVDCommandBlock* next; + + enabled = OSDisableInterrupts(); + + prev = block->prev; + next = block->next; + + if ((prev == (DVDCommandBlock*)NULL) || (next == (DVDCommandBlock*)NULL)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + prev->next = next; + next->prev = prev; + + OSRestoreInterrupts(enabled); + + return TRUE; +} + +BOOL __DVDIsBlockInWaitingQueue(DVDCommandBlock* block) { + u32 i; + DVDCommandBlock* start; + DVDCommandBlock* q; + + for (i = 0; i < MAX_QUEUES; i++) { + start = (DVDCommandBlock*)&(WaitingQueue[i]); + + if (start->next != start) { + for (q = start->next; q != start; q = q->next) { + if (q == block) + return TRUE; + } + } + } + + return FALSE; +} \ No newline at end of file diff --git a/src/dolphin/dvd/fstload.c b/src/dolphin/dvd/fstload.c new file mode 100644 index 00000000..fd127c61 --- /dev/null +++ b/src/dolphin/dvd/fstload.c @@ -0,0 +1,68 @@ + +#include +#include +#include +#include +#include +#include + +static s32 status = 0; + +static u8 bb2Buf[OSRoundUp32B(sizeof(DVDBB2)) + 31]; +static DVDBB2* bb2 = 0; +static DVDDiskID* idTmp = NULL; + +static void cb(s32 result, DVDCommandBlock* block) { + if (result > 0) { + switch (status) { + case 0: + status = 1; + DVDReadAbsAsyncForBS(block, bb2, OSRoundUp32B(sizeof(bb2)), 0x420, cb); + break; + case 1: + status = 2; + DVDReadAbsAsyncForBS(block, bb2->FSTAddress, OSRoundUp32B(bb2->FSTLength), bb2->FSTPosition, + cb); + } + } else if (result == -1) { + + } else if (result == -4) { + status = 0; + DVDReset(); + DVDReadDiskID(block, idTmp, cb); + } +} + +void __fstLoad() { + OSBootInfo* bootInfo; + DVDDiskID* id; + u8 idTmpBuf[sizeof(DVDDiskID) + 31]; + static DVDCommandBlock block; + void* arenaHi; + + arenaHi = OSGetArenaHi(); + bootInfo = (OSBootInfo*)OSPhysicalToCached(0); + + idTmp = (DVDDiskID*)(OSRoundUp32B(idTmpBuf)); + bb2 = (DVDBB2*)(OSRoundUp32B(bb2Buf)); + + DVDReset(); + DVDReadDiskID(&block, idTmp, cb); + while (DVDGetDriveStatus() != 0); + + bootInfo->FSTLocation = bb2->FSTAddress; + bootInfo->FSTMaxLength = bb2->FSTMaxLength; + + id = &bootInfo->DVDDiskID; + + memcpy(id, idTmp, sizeof(DVDDiskID)); + OSReport("\n"); + OSReport(" Game Name ... %c%c%c%c\n", id->gameName[0], id->gameName[1], id->gameName[2], + id->gameName[3]); + OSReport(" Company ..... %c%c\n", id->company[0], id->company[1]); + OSReport(" Disk # ...... %d\n", id->diskNumber); + OSReport(" Game ver .... %d\n", id->gameVersion); + OSReport(" Streaming ... %s\n", (id->streaming == 0) ? "OFF" : "ON"); + OSReport("\n"); + OSSetArenaHi(bb2->FSTAddress); +} diff --git a/src/dolphin/exi/EXIBios.c b/src/dolphin/exi/EXIBios.c new file mode 100644 index 00000000..4b9a1d78 --- /dev/null +++ b/src/dolphin/exi/EXIBios.c @@ -0,0 +1,686 @@ +#include +#include +#include + +#define MAX_DEV 3 +#define MAX_CHAN 3 + +#define REG_MAX 5 +#define REG(chan, idx) (__EXIRegs[((chan)*REG_MAX) + (idx)]) + +#define STATE_IDLE 0x00 +#define STATE_DMA 0x01 +#define STATE_IMM 0x02 +#define STATE_BUSY (STATE_DMA | STATE_IMM) +#define STATE_SELECTED 0x04 +#define STATE_ATTACHED 0x08 +#define STATE_LOCKED 0x10 + +#define EXI_0CR(tstart, dma, rw, tlen) ((((u32)(tstart)) << 0) | (((u32)(dma)) << 1) | (((u32)(rw)) << 2) | (((u32)(tlen)) << 4)) + +#define CPR_CS(x) ((1u << (x)) << 7) +#define CPR_CLK(x) ((x) << 4) + +static BOOL __EXIProbe(s32 chan); + +typedef struct EXIControl { + EXICallback exiCallback; + EXICallback tcCallback; + EXICallback extCallback; + vu32 state; + int immLen; + u8 *immBuf; + u32 dev; + u32 id; + s32 idTime; + int items; + struct { + u32 dev; + EXICallback callback; + } queue[MAX_DEV]; +} EXIControl; + +static EXIControl Ecb[MAX_CHAN]; + +s32 __EXIProbeStartTime[2] : (OS_BASE_CACHED | 0x30C0); + +static void SetExiInterruptMask(s32 chan, EXIControl *exi) +{ + EXIControl *exi2; + + exi2 = &Ecb[2]; + switch (chan) { + case 0: + if ((exi->exiCallback == 0 && exi2->exiCallback == 0) || (exi->state & STATE_LOCKED)) { + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_2_EXI); + } + else { + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_2_EXI); + } + break; + case 1: + if (exi->exiCallback == 0 || (exi->state & STATE_LOCKED)) { + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_1_EXI); + } + else { + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_1_EXI); + } + break; + case 2: + if (__OSGetInterruptHandler(__OS_INTERRUPT_PI_DEBUG) == 0 || (exi->state & STATE_LOCKED)) { + __OSMaskInterrupts(OS_INTERRUPTMASK_PI_DEBUG); + } + else { + __OSUnmaskInterrupts(OS_INTERRUPTMASK_PI_DEBUG); + } + break; + } +} + +static void CompleteTransfer(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + u8 *buf; + u32 data; + int i; + int len; + + if (exi->state & STATE_BUSY) { + if ((exi->state & STATE_IMM) && (len = exi->immLen)) { + buf = exi->immBuf; + data = REG(chan, 4); + for (i = 0; i < len; i++) { + *buf++ = (u8)((data >> ((3 - i) * 8)) & 0xff); + } + } + exi->state &= ~STATE_BUSY; + } +} + +BOOL EXIImm(s32 chan, void *buf, s32 len, u32 type, EXICallback callback) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if ((exi->state & STATE_BUSY) || !(exi->state & STATE_SELECTED)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->tcCallback = callback; + if (exi->tcCallback) { + EXIClearInterrupts(chan, FALSE, TRUE, FALSE); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_TC >> (3 * chan)); + } + + exi->state |= STATE_IMM; + + if (type != EXI_READ) { + u32 data; + int i; + + data = 0; + for (i = 0; i < len; i++) { + data |= ((u8 *)buf)[i] << ((3 - i) * 8); + } + REG(chan, 4) = data; + } + + exi->immBuf = buf; + exi->immLen = (type != EXI_WRITE) ? len : 0; + + REG(chan, 3) = EXI_0CR(1, 0, type, len - 1); + + OSRestoreInterrupts(enabled); + + return TRUE; +} + +BOOL EXIImmEx(s32 chan, void *buf, s32 len, u32 mode) +{ + s32 xLen; + + while (len) { + xLen = (len < 4) ? len : 4; + if (!EXIImm(chan, buf, xLen, mode, NULL)) { + return FALSE; + } + + if (!EXISync(chan)) { + return FALSE; + } + + (u8 *)buf += xLen; + len -= xLen; + } + return TRUE; +} + +BOOL EXIDma(s32 chan, void *buf, s32 len, u32 type, EXICallback callback) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if ((exi->state & STATE_BUSY) || !(exi->state & STATE_SELECTED)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->tcCallback = callback; + if (exi->tcCallback) { + EXIClearInterrupts(chan, FALSE, TRUE, FALSE); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_TC >> (3 * chan)); + } + + exi->state |= STATE_DMA; + + REG(chan, 1) = (u32)buf & 0x3ffffe0; + REG(chan, 2) = (u32)len; + REG(chan, 3) = EXI_0CR(1, 1, type, 0); + + OSRestoreInterrupts(enabled); + + return TRUE; +} + +extern u32 __OSGetDIConfig(void); + +vu16 __OSDeviceCode : (OS_BASE_CACHED | 0x30E6); + +BOOL EXISync(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + BOOL rc = FALSE; + BOOL enabled; + + while (exi->state & STATE_SELECTED) { + if (((REG(chan, 3) & 1) >> 0) == 0) { + enabled = OSDisableInterrupts(); + if (exi->state & STATE_SELECTED) { + CompleteTransfer(chan); + if (__OSGetDIConfig() != 0xff || exi->immLen != 4 || (REG(chan, 0) & 0x00000070) != (EXI_FREQ_1M << 4) + || (REG(chan, 4) != EXI_USB_ADAPTER && REG(chan, 4) != EXI_IS_VIEWER && REG(chan, 4) != 0x04220001) || __OSDeviceCode == 0x8200) { + rc = TRUE; + } + } + OSRestoreInterrupts(enabled); + break; + } + } + return rc; +} + +u32 EXIClearInterrupts(s32 chan, BOOL exi, BOOL tc, BOOL ext) +{ + u32 cpr; + u32 prev; + + prev = cpr = REG(chan, 0); + cpr &= 0x7f5; + if (exi) + cpr |= 2; + if (tc) + cpr |= 8; + if (ext) + cpr |= 0x800; + REG(chan, 0) = cpr; + return prev; +} + +EXICallback EXISetExiCallback(s32 chan, EXICallback exiCallback) +{ + EXIControl *exi = &Ecb[chan]; + EXICallback prev; + BOOL enabled; + + enabled = OSDisableInterrupts(); + prev = exi->exiCallback; + exi->exiCallback = exiCallback; + + if (chan != 2) { + SetExiInterruptMask(chan, exi); + } + else { + SetExiInterruptMask(0, &Ecb[0]); + } + + OSRestoreInterrupts(enabled); + return prev; +} + +void EXIProbeReset(void) +{ + __EXIProbeStartTime[0] = __EXIProbeStartTime[1] = 0; + Ecb[0].idTime = Ecb[1].idTime = 0; + __EXIProbe(0); + __EXIProbe(1); +} + +static BOOL __EXIProbe(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + BOOL rc; + u32 cpr; + s32 t; + + if (chan == 2) { + return TRUE; + } + + rc = TRUE; + enabled = OSDisableInterrupts(); + cpr = REG(chan, 0); + if (!(exi->state & EXI_STATE_ATTACHED)) { + if (cpr & 0x00000800) { + EXIClearInterrupts(chan, FALSE, FALSE, TRUE); + __EXIProbeStartTime[chan] = exi->idTime = 0; + } + + if (cpr & 0x00001000) { + t = (s32)(OSTicksToMilliseconds(OSGetTime()) / 100) + 1; + if (__EXIProbeStartTime[chan] == 0) { + __EXIProbeStartTime[chan] = t; + } + if (t - __EXIProbeStartTime[chan] < 300 / 100) { + rc = FALSE; + } + } + else { + __EXIProbeStartTime[chan] = exi->idTime = 0; + rc = FALSE; + } + } + else if (!(cpr & 0x00001000) || (cpr & 0x00000800)) { + __EXIProbeStartTime[chan] = exi->idTime = 0; + rc = FALSE; + } + OSRestoreInterrupts(enabled); + + return rc; +} + +BOOL EXIProbe(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + BOOL rc; + u32 id; + + rc = __EXIProbe(chan); + if (rc && exi->idTime == 0) { + rc = EXIGetID(chan, 0, &id) ? TRUE : FALSE; + } + return rc; +} + +s32 EXIProbeEx(s32 chan) +{ + if (EXIProbe(chan)) { + return 1; + } + else if (__EXIProbeStartTime[chan] != 0) { + return 0; + } + else { + return -1; + } +} + +static BOOL __EXIAttach(s32 chan, EXICallback extCallback) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if ((exi->state & EXI_STATE_ATTACHED) || __EXIProbe(chan) == FALSE) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + EXIClearInterrupts(chan, TRUE, FALSE, FALSE); + + exi->extCallback = extCallback; + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXT >> (3 * chan)); + exi->state |= STATE_ATTACHED; + OSRestoreInterrupts(enabled); + + return TRUE; +} + +BOOL EXIAttach(s32 chan, EXICallback extCallback) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + BOOL rc; + + EXIProbe(chan); + + enabled = OSDisableInterrupts(); + if (exi->idTime == 0) { + OSRestoreInterrupts(enabled); + return FALSE; + } + rc = __EXIAttach(chan, extCallback); + OSRestoreInterrupts(enabled); + return rc; +} + +BOOL EXIDetach(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if (!(exi->state & STATE_ATTACHED)) { + OSRestoreInterrupts(enabled); + return TRUE; + } + if ((exi->state & STATE_LOCKED) && exi->dev == 0) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->state &= ~STATE_ATTACHED; + __OSMaskInterrupts((OS_INTERRUPTMASK_EXI_0_EXT | OS_INTERRUPTMASK_EXI_0_EXI) >> (3 * chan)); + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL EXISelect(s32 chan, u32 dev, u32 freq) +{ + EXIControl *exi = &Ecb[chan]; + u32 cpr; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if ((exi->state & STATE_SELECTED) + || chan != 2 && (dev == 0 && !(exi->state & STATE_ATTACHED) && !__EXIProbe(chan) || !(exi->state & STATE_LOCKED) || (exi->dev != dev))) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->state |= STATE_SELECTED; + cpr = REG(chan, 0); + cpr &= 0x405; + cpr |= CPR_CS(dev) | CPR_CLK(freq); + REG(chan, 0) = cpr; + + if (exi->state & STATE_ATTACHED) { + switch (chan) { + case 0: + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXT); + break; + case 1: + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_1_EXT); + break; + } + } + + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL EXIDeselect(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + u32 cpr; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if (!(exi->state & STATE_SELECTED)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + exi->state &= ~STATE_SELECTED; + cpr = REG(chan, 0); + REG(chan, 0) = cpr & 0x405; + + if (exi->state & STATE_ATTACHED) { + switch (chan) { + case 0: + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXT); + break; + case 1: + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_1_EXT); + break; + } + } + + OSRestoreInterrupts(enabled); + + if (chan != 2 && (cpr & CPR_CS(0))) { + return __EXIProbe(chan) ? TRUE : FALSE; + } + + return TRUE; +} + +static void EXIIntrruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + s32 chan; + EXIControl *exi; + EXICallback callback; + + chan = (interrupt - __OS_INTERRUPT_EXI_0_EXI) / 3; + exi = &Ecb[chan]; + EXIClearInterrupts(chan, TRUE, FALSE, FALSE); + callback = exi->exiCallback; + if (callback) { + OSContext exceptionContext; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + callback(chan, context); + + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } +} + +static void TCIntrruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + OSContext exceptionContext; + s32 chan; + EXIControl *exi; + EXICallback callback; + + chan = (interrupt - __OS_INTERRUPT_EXI_0_TC) / 3; + exi = &Ecb[chan]; + __OSMaskInterrupts(OS_INTERRUPTMASK(interrupt)); + EXIClearInterrupts(chan, FALSE, TRUE, FALSE); + callback = exi->tcCallback; + if (callback) { + exi->tcCallback = 0; + CompleteTransfer(chan); + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + callback(chan, context); + + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } +} + +static void EXTIntrruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + s32 chan; + EXIControl *exi; + EXICallback callback; + + chan = (interrupt - __OS_INTERRUPT_EXI_0_EXT) / 3; + __OSMaskInterrupts((OS_INTERRUPTMASK_EXI_0_EXT | OS_INTERRUPTMASK_EXI_0_EXI) >> (3 * chan)); + exi = &Ecb[chan]; + callback = exi->extCallback; + exi->state &= ~STATE_ATTACHED; + if (callback) { + OSContext exceptionContext; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + exi->extCallback = 0; + callback(chan, context); + + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } +} + +void EXIInit(void) +{ + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT | OS_INTERRUPTMASK_EXI_1_EXI + | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT | OS_INTERRUPTMASK_EXI_2_EXI | OS_INTERRUPTMASK_EXI_2_TC); + + REG(0, 0) = 0; + REG(1, 0) = 0; + REG(2, 0) = 0; + + REG(0, 0) = 0x00002000; + + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_0_EXI, EXIIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_0_TC, TCIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_0_EXT, EXTIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_1_EXI, EXIIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_1_TC, TCIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_1_EXT, EXTIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_2_EXI, EXIIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_EXI_2_TC, TCIntrruptHandler); + + if ((OSGetConsoleType() & 0x10000000) != 0) { + __EXIProbeStartTime[0] = __EXIProbeStartTime[1] = 0; + Ecb[0].idTime = Ecb[1].idTime = 0; + __EXIProbe(0); + __EXIProbe(1); + } +} + +BOOL EXILock(s32 chan, u32 dev, EXICallback unlockedCallback) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + int i; + + enabled = OSDisableInterrupts(); + if (exi->state & STATE_LOCKED) { + if (unlockedCallback) { + for (i = 0; i < exi->items; i++) { + if (exi->queue[i].dev == dev) { + OSRestoreInterrupts(enabled); + return FALSE; + } + } + exi->queue[exi->items].callback = unlockedCallback; + exi->queue[exi->items].dev = dev; + exi->items++; + } + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->state |= STATE_LOCKED; + exi->dev = dev; + SetExiInterruptMask(chan, exi); + + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL EXIUnlock(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + BOOL enabled; + EXICallback unlockedCallback; + + enabled = OSDisableInterrupts(); + if (!(exi->state & STATE_LOCKED)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + exi->state &= ~STATE_LOCKED; + SetExiInterruptMask(chan, exi); + + if (0 < exi->items) { + unlockedCallback = exi->queue[0].callback; + if (0 < --exi->items) { + memmove(&exi->queue[0], &exi->queue[1], sizeof(exi->queue[0]) * exi->items); + } + unlockedCallback(chan, 0); + } + + OSRestoreInterrupts(enabled); + return TRUE; +} + +u32 EXIGetState(s32 chan) +{ + EXIControl *exi = &Ecb[chan]; + + return (u32)exi->state; +} + +static void UnlockedHandler(s32 chan, OSContext *context) +{ + u32 id; + + EXIGetID(chan, 0, &id); +} + +s32 EXIGetID(s32 chan, u32 dev, u32 *id) +{ + EXIControl *exi = &Ecb[chan]; + BOOL err; + u32 cmd; + s32 startTime; + BOOL enabled; + + if (chan < 2 && dev == 0) { + if (!__EXIProbe(chan)) { + return 0; + } + + if (exi->idTime == __EXIProbeStartTime[chan]) { + *id = exi->id; + return exi->idTime; + } + + if (!__EXIAttach(chan, NULL)) { + return 0; + } + + startTime = __EXIProbeStartTime[chan]; + } + + err = !EXILock(chan, dev, (chan < 2 && dev == 0) ? UnlockedHandler : NULL); + if (!err) { + err = !EXISelect(chan, dev, EXI_FREQ_1M); + if (!err) { + cmd = 0; + err |= !EXIImm(chan, &cmd, 2, EXI_WRITE, NULL); + err |= !EXISync(chan); + err |= !EXIImm(chan, id, 4, EXI_READ, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + } + EXIUnlock(chan); + } + + if (chan < 2 && dev == 0) { + EXIDetach(chan); + enabled = OSDisableInterrupts(); + err |= (startTime != __EXIProbeStartTime[chan]); + if (!err) { + exi->id = *id; + exi->idTime = startTime; + } + OSRestoreInterrupts(enabled); + + return err ? 0 : exi->idTime; + } + + return err ? 0 : !0; +} diff --git a/src/dolphin/exi/EXIUart.c b/src/dolphin/exi/EXIUart.c new file mode 100644 index 00000000..fb067196 --- /dev/null +++ b/src/dolphin/exi/EXIUart.c @@ -0,0 +1,184 @@ +#include +#include + +#define EXI_TX 0x800400u +#define EXI_MAGIC 0xa5ff005a + +static s32 Chan; +static u32 Dev; +static u32 Enabled = 0; +static u32 BarnacleEnabled = 0; + +static BOOL ProbeBarnacle(s32 chan, u32 dev, u32 *revision) +{ + BOOL err; + u32 cmd; + + if (chan != 2 && dev == 0 && !EXIAttach(chan, NULL)) { + return FALSE; + } + + err = !EXILock(chan, dev, NULL); + if (!err) { + err = !EXISelect(chan, dev, EXI_FREQ_1M); + if (!err) { + cmd = 0x20011300; + err = FALSE; + err |= !EXIImm(chan, &cmd, 4, EXI_WRITE, NULL); + err |= !EXISync(chan); + err |= !EXIImm(chan, revision, 4, EXI_READ, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + } + EXIUnlock(chan); + } + + if (chan != 2 && dev == 0) { + EXIDetach(chan); + } + + if (err) { + return FALSE; + } + + return (*revision != 0xFFFFFFFF) ? TRUE : FALSE; +} + +void __OSEnableBarnacle(s32 chan, u32 dev) +{ + u32 id; + + if (EXIGetID(chan, dev, &id)) { + switch (id) { + case 0xffffffff: + case EXI_MEMORY_CARD_59: + case EXI_MEMORY_CARD_123: + case EXI_MEMORY_CARD_251: + case EXI_MEMORY_CARD_507: + case EXI_USB_ADAPTER: + case EXI_NPDP_GDEV: + case EXI_MODEM: + case EXI_MARLIN: + case 0x04220000: + case 0x04020100: + case 0x04020200: + case 0x04020300: + case 0x04040404: + case 0x04060000: + case 0x04120000: + case 0x04130000: + case 0x80000000 | EXI_MEMORY_CARD_59: + case 0x80000000 | EXI_MEMORY_CARD_123: + case 0x80000000 | EXI_MEMORY_CARD_251: + case 0x80000000 | EXI_MEMORY_CARD_507: + break; + default: + if (ProbeBarnacle(chan, dev, &id)) { + Chan = chan; + Dev = dev; + Enabled = BarnacleEnabled = EXI_MAGIC; + } + break; + } + } +} + +u32 InitializeUART(u32 baudRate) +{ + if (BarnacleEnabled == EXI_MAGIC) { + return 0; + } + + if (!(OSGetConsoleType() & OS_CONSOLE_DEVELOPMENT)) { + Enabled = 0; + return 2; + } + else { + Chan = 0; + Dev = 1; + Enabled = EXI_MAGIC; + return 0; + } +} + +u32 ReadUARTN(void *bytes, unsigned long length) +{ + return 4; +} + +static int QueueLength(void) +{ + u32 cmd; + + if (!EXISelect(Chan, Dev, EXI_FREQ_8M)) + return -1; + + cmd = EXI_TX << 6; + EXIImm(Chan, &cmd, 4, EXI_WRITE, NULL); + EXISync(Chan); + + EXIImm(Chan, &cmd, 1, EXI_READ, NULL); + EXISync(Chan); + EXIDeselect(Chan); + + return 16 - (int)((cmd >> 24) & 0xff); +} + +u32 WriteUARTN(const void *buf, unsigned long len) +{ + u32 cmd; + int qLen; + long xLen; + char *ptr; + BOOL locked; + u32 error; + + if (Enabled != EXI_MAGIC) + return 2; + + locked = EXILock(Chan, Dev, 0); + if (!locked) { + return 0; + } + + for (ptr = (char *)buf; ptr - buf < len; ptr++) { + if (*ptr == '\n') + *ptr = '\r'; + } + + error = 0; + cmd = (EXI_TX | 0x2000000) << 6; + while (len) { + qLen = QueueLength(); + if (qLen < 0) { + error = 3; + break; + } + + if (qLen < 12 && qLen < len) + continue; + + if (!EXISelect(Chan, Dev, EXI_FREQ_8M)) { + error = 3; + break; + } + + EXIImm(Chan, &cmd, 4, EXI_WRITE, NULL); + EXISync(Chan); + + while (qLen && len) { + if (qLen < 4 && qLen < len) + break; + xLen = (len < 4) ? (long)len : 4; + EXIImm(Chan, (void *)buf, xLen, EXI_WRITE, NULL); + (u8 *)buf += xLen; + len -= xLen; + qLen -= xLen; + EXISync(Chan); + } + EXIDeselect(Chan); + } + + EXIUnlock(Chan); + return error; +} diff --git a/src/dolphin/gx/GXAttr.c b/src/dolphin/gx/GXAttr.c new file mode 100644 index 00000000..721027db --- /dev/null +++ b/src/dolphin/gx/GXAttr.c @@ -0,0 +1,586 @@ +#include +#include + +#include + +#define CHECK_ATTRPTR(line, attrPtr) ASSERTMSGLINE(line, (attrPtr) != NULL, "GXSetVtxDescv: attrPtr is NULL") +#define CHECK_ATTRNAME(line, attr) ASSERTMSGLINE(line, (attr) >= GX_VA_PNMTXIDX && (attr) < GX_VA_MAX_ATTR, "GXSetVtxDesc: Invalid vertex attribute name") +#define CHECK_ATTRNAME2(line, attr) ASSERTMSGLINE(line, (attr) >= GX_VA_POS && (attr) <= GX_VA_MAX_ATTR, "GXSetVtxAttrFmt: Invalid vertex attribute name") +#define CHECK_ATTRNAME3(line, attr) ASSERTMSGLINE(line, (attr) >= GX_VA_POS && (attr) <= GX_LIGHT_ARRAY, "GXSetArray: Invalid vertex attribute name") +#define CHECK_ATTRTYPE(line, type) ASSERTMSGLINE(line, (type) >= GX_NONE && (type) <= GX_INDEX16, "GXSetVtxDesc: Invalid vertex attribute type") +#define CHECK_VTXFMT(line, vtxfmt) ASSERTMSGLINE(line, (vtxfmt) < GX_MAX_VTXFMT, "GXSetVtxAttrFmt: Format Index is out of range") +#define CHECK_FRAC(line, frac) ASSERTMSGLINE(line, (frac) < 32, "GXSetVtxAttrFmt: Frac value is >= 32") +#define CHECK_LISTPTR(line, list) ASSERTMSGLINE(line, (list) != NULL, "GXSetVtxAttrFmt: list pointer is NULL") + +static void __GXXfVtxSpecs(void) +{ + u32 nCols = 0; + u32 nNrm; + u32 nTex; + u32 reg; + + nCols = GET_REG_FIELD(gx->vcdLo, 2, 13) ? 1 : 0; + nCols += GET_REG_FIELD(gx->vcdLo, 2, 15) ? 1 : 0; + nNrm = gx->hasBiNrms ? 2 : gx->hasNrms ? 1 : 0; + nTex = 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 0) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 2) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 4) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 6) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 8) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 10) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 12) ? 1 : 0; + nTex += GET_REG_FIELD(gx->vcdHi, 2, 14) ? 1 : 0; + reg = (nCols) | (nNrm << 2) | (nTex << 4); + GX_WRITE_XF_REG(8, reg); + gx->bpSentNot = 1; +} + +static inline void SETVCDATTR(GXAttr Attr, GXAttrType Type) +{ + switch (Attr) { + case GX_VA_PNMTXIDX: SET_REG_FIELD(0xD4, gx->vcdLo, 1, 0, Type); break; + case GX_VA_TEX0MTXIDX: SET_REG_FIELD(0xD5, gx->vcdLo, 1, 1, Type); break; + case GX_VA_TEX1MTXIDX: SET_REG_FIELD(0xD6, gx->vcdLo, 1, 2, Type); break; + case GX_VA_TEX2MTXIDX: SET_REG_FIELD(0xD7, gx->vcdLo, 1, 3, Type); break; + case GX_VA_TEX3MTXIDX: SET_REG_FIELD(0xD8, gx->vcdLo, 1, 4, Type); break; + case GX_VA_TEX4MTXIDX: SET_REG_FIELD(0xD9, gx->vcdLo, 1, 5, Type); break; + case GX_VA_TEX5MTXIDX: SET_REG_FIELD(0xDA, gx->vcdLo, 1, 6, Type); break; + case GX_VA_TEX6MTXIDX: SET_REG_FIELD(0xDB, gx->vcdLo, 1, 7, Type); break; + case GX_VA_TEX7MTXIDX: SET_REG_FIELD(0xDC, gx->vcdLo, 1, 8, Type); break; + case GX_VA_POS: SET_REG_FIELD(0xDD, gx->vcdLo, 2, 9, Type); break; + case GX_VA_NRM: + if (Type != GX_NONE) { + gx->hasNrms = 1; + gx->hasBiNrms = 0; + gx->nrmType = Type; + } else { + gx->hasNrms = 0; + } + break; + case GX_VA_NBT: + if (Type != GX_NONE) { + gx->hasBiNrms = 1; + gx->hasNrms = 0; + gx->nrmType = Type; + } else { + gx->hasBiNrms = 0; + } + break; + case GX_VA_CLR0: SET_REG_FIELD(0xF6, gx->vcdLo, 2, 13, Type); break; + case GX_VA_CLR1: SET_REG_FIELD(0xF7, gx->vcdLo, 2, 15, Type); break; + case GX_VA_TEX0: SET_REG_FIELD(0xF8, gx->vcdHi, 2, 0, Type); break; + case GX_VA_TEX1: SET_REG_FIELD(0xF9, gx->vcdHi, 2, 2, Type); break; + case GX_VA_TEX2: SET_REG_FIELD(0xFA, gx->vcdHi, 2, 4, Type); break; + case GX_VA_TEX3: SET_REG_FIELD(0xFB, gx->vcdHi, 2, 6, Type); break; + case GX_VA_TEX4: SET_REG_FIELD(0xFC, gx->vcdHi, 2, 8, Type); break; + case GX_VA_TEX5: SET_REG_FIELD(0xFD, gx->vcdHi, 2, 10, Type); break; + case GX_VA_TEX6: SET_REG_FIELD(0xFE, gx->vcdHi, 2, 12, Type); break; + case GX_VA_TEX7: SET_REG_FIELD(0xFF, gx->vcdHi, 2, 14, Type); break; + } +} + +void GXSetVtxDesc(GXAttr attr, GXAttrType type) +{ + CHECK_GXBEGIN(0xCC, "GXSetVtxDesc"); + CHECK_ATTRNAME(0xCF, attr); + CHECK_ATTRTYPE(0xD1, type); + + SETVCDATTR(attr, type); + if (gx->hasNrms || gx->hasBiNrms) { + SET_REG_FIELD(0xD7, gx->vcdLo, 2, 11, gx->nrmType); + } else { + SET_REG_FIELD(0x00, gx->vcdLo, 2, 11, 0); + } + gx->dirtyState |= 8; +} + +void GXSetVtxDescv(GXVtxDescList *attrPtr) +{ + CHECK_GXBEGIN(0xF5, "GXSetVtxDescv"); + CHECK_ATTRPTR(0xF6, attrPtr); + while (attrPtr->attr != 0xFF) { + CHECK_ATTRNAME(0xFB, attrPtr->attr); + CHECK_ATTRTYPE(0xFE, attrPtr->type); + SETVCDATTR(attrPtr->attr, attrPtr->type); + attrPtr++; + } + if (gx->hasNrms || gx->hasBiNrms) { + SET_REG_FIELD(0x107, gx->vcdLo, 2, 11, gx->nrmType); + } else { + SET_REG_FIELD(0x107, gx->vcdLo, 2, 11, 0); + } + gx->dirtyState |= 8; +} + +void __GXSetVCD(void) +{ + GX_WRITE_SOME_REG4(8, 0x50, gx->vcdLo, -12); + GX_WRITE_SOME_REG4(8, 0x60, gx->vcdHi, -12); + __GXXfVtxSpecs(); +} + +void __GXCalculateVLim() { + static u8 tbl1[] = { 0, 4, 1, 2 }; + static u8 tbl2[] = { 0, 8, 1, 2 }; + static u8 tbl3[] = { 0, 12, 1, 2 }; + + GXCompCnt nc = 0; + unsigned long vlm; + unsigned long b; + unsigned long vl; + unsigned long vh; + unsigned long va; + + if (gx->vNum != 0) { + vl = gx->vcdLo; + vh = gx->vcdHi; + va = gx->vatA[0]; + nc = GET_REG_FIELD(va, 1, 9); + + vlm = GET_REG_FIELD(vl, 1, 0); + vlm += (u8)GET_REG_FIELD(vl, 1, 1); + vlm += (u8)GET_REG_FIELD(vl, 1, 2); + vlm += (u8)GET_REG_FIELD(vl, 1, 3); + vlm += (u8)GET_REG_FIELD(vl, 1, 4); + vlm += (u8)GET_REG_FIELD(vl, 1, 5); + vlm += (u8)GET_REG_FIELD(vl, 1, 6); + vlm += (u8)GET_REG_FIELD(vl, 1, 7); + vlm += (u8)GET_REG_FIELD(vl, 1, 8); + vlm += tbl3[(u8)GET_REG_FIELD(vl, 2, 9)]; + + if (nc == 1) { + b = 3; + } else { + b = 1; + } + + vlm += tbl3[(u8)GET_REG_FIELD(vl, 2, 11)] * b; + vlm += tbl1[(u8)GET_REG_FIELD(vl, 2, 13)]; + vlm += tbl1[(u8)GET_REG_FIELD(vl, 2, 15)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 0)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 2)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 4)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 6)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 8)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 10)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 12)]; + vlm += tbl2[(u8)GET_REG_FIELD(vh, 2, 14)]; + gx->vLim = vlm; + } +} + +void GXGetVtxDesc(GXAttr attr, GXAttrType *type) +{ + u32 cpType; + + CHECK_GXBEGIN(0x185, "GXGetVtxDesc"); + CHECK_ATTRNAME(0x187, attr); + + switch (attr) { + case GX_VA_PNMTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 0); break; + case GX_VA_TEX0MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 1); break; + case GX_VA_TEX1MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 2); break; + case GX_VA_TEX2MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 3); break; + case GX_VA_TEX3MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 4); break; + case GX_VA_TEX4MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 5); break; + case GX_VA_TEX5MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 6); break; + case GX_VA_TEX6MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 7); break; + case GX_VA_TEX7MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 8); break; + case GX_VA_POS: cpType = GET_REG_FIELD(gx->vcdLo, 2, 9); break; + case GX_VA_NRM: cpType = gx->hasNrms ? GET_REG_FIELD(gx->vcdLo, 2, 11) : 0; break; + case GX_VA_NBT: cpType = gx->hasBiNrms ? GET_REG_FIELD(gx->vcdLo, 2, 11) : 0; break; + case GX_VA_CLR0: cpType = GET_REG_FIELD(gx->vcdLo, 2, 13); break; + case GX_VA_CLR1: cpType = GET_REG_FIELD(gx->vcdLo, 2, 15); break; + case GX_VA_TEX0: cpType = GET_REG_FIELD(gx->vcdHi, 2, 0); break; + case GX_VA_TEX1: cpType = GET_REG_FIELD(gx->vcdHi, 2, 2); break; + case GX_VA_TEX2: cpType = GET_REG_FIELD(gx->vcdHi, 2, 4); break; + case GX_VA_TEX3: cpType = GET_REG_FIELD(gx->vcdHi, 2, 6); break; + case GX_VA_TEX4: cpType = GET_REG_FIELD(gx->vcdHi, 2, 8); break; + case GX_VA_TEX5: cpType = GET_REG_FIELD(gx->vcdHi, 2, 10); break; + case GX_VA_TEX6: cpType = GET_REG_FIELD(gx->vcdHi, 2, 12); break; + case GX_VA_TEX7: cpType = GET_REG_FIELD(gx->vcdHi, 2, 14); break; + default: cpType = 0; break; + } + *type = cpType; +} + +void GXGetVtxDescv(GXVtxDescList *vcd) +{ + GXAttr attr; + + CHECK_GXBEGIN(0x1BA, "GXGetVtxDescv"); + CHECK_ATTRPTR(0x1BC, vcd); + for (attr = 0; attr < GX_VA_MAX_ATTR; attr++) { + vcd[attr].attr = attr; + GXGetVtxDesc(attr, &vcd[attr].type); + } + vcd[attr].attr = 0xFF; +} + +void GXClearVtxDesc(void) +{ + CHECK_GXBEGIN(0x1D3, "GXClearVtxDesc"); + gx->vcdLo = 0; + SET_REG_FIELD(0x00, gx->vcdLo, 2, 9, 1); + gx->vcdHi = 0; + gx->hasNrms = 0; + gx->hasBiNrms = 0; + gx->dirtyState |= 8; +} + +static inline void SETVAT(u32 *va, u32 *vb, u32 *vc, GXAttr attr, GXCompCnt cnt, GXCompType type, u8 shft) +{ + switch (attr) { + case GX_VA_POS: + SET_REG_FIELD(511, *va, 1, 0, cnt); + SET_REG_FIELD(512, *va, 3, 1, type); + SET_REG_FIELD(513, *va, 5, 4, shft); + break; + case GX_VA_NRM: + case GX_VA_NBT: + SET_REG_FIELD(521, *va, 3, 10, type); + if (cnt == GX_NRM_NBT3) { + SET_REG_FIELD(0, *va, 1, 9, 1); + SET_REG_FIELD(0, *va, 1, 31, 1); + } else { + SET_REG_FIELD(527, *va, 1, 9, cnt); + SET_REG_FIELD(528, *va, 1, 31, 0); + } + break; + case GX_VA_CLR0: + SET_REG_FIELD(0x215, *va, 1, 13, cnt); + SET_REG_FIELD(0x216, *va, 3, 14, type); + break; + case GX_VA_CLR1: + SET_REG_FIELD(0x219, *va, 1, 0x11, cnt); + SET_REG_FIELD(0x21A, *va, 3, 18, type); + break; + case GX_VA_TEX0: + SET_REG_FIELD(0x21D, *va, 1, 0x15, cnt); + SET_REG_FIELD(0x21E, *va, 3, 0x16, type); + SET_REG_FIELD(0x21F, *va, 5, 0x19, shft); + break; + case GX_VA_TEX1: + SET_REG_FIELD(0x222, *vb, 1, 0, cnt); + SET_REG_FIELD(0x223, *vb, 3, 1, type); + SET_REG_FIELD(0x224, *vb, 5, 4, shft); + break; + case GX_VA_TEX2: + SET_REG_FIELD(0x227, *vb, 1, 9, cnt); + SET_REG_FIELD(0x228, *vb, 3, 10, type); + SET_REG_FIELD(0x229, *vb, 5, 13, shft); + break; + case GX_VA_TEX3: + SET_REG_FIELD(0x22C, *vb, 1, 18, cnt); + SET_REG_FIELD(0x22D, *vb, 3, 19, type); + SET_REG_FIELD(0x22E, *vb, 5, 22, shft); + break; + case GX_VA_TEX4: + SET_REG_FIELD(0x231, *vb, 1, 27, cnt); + SET_REG_FIELD(0x232, *vb, 3, 28, type); + SET_REG_FIELD(0x233, *vc, 5, 0, shft); + break; + case GX_VA_TEX5: + SET_REG_FIELD(0x236, *vc, 1, 5, cnt); + SET_REG_FIELD(0x237, *vc, 3, 6, type); + SET_REG_FIELD(0x238, *vc, 5, 9, shft); + break; + case GX_VA_TEX6: + SET_REG_FIELD(0x23B, *vc, 1, 14, cnt); + SET_REG_FIELD(0x23C, *vc, 3, 15, type); + SET_REG_FIELD(0x23D, *vc, 5, 18, shft); + break; + case GX_VA_TEX7: + SET_REG_FIELD(0x240, *vc, 1, 23, cnt); + SET_REG_FIELD(0x241, *vc, 3, 24, type); + SET_REG_FIELD(0x242, *vc, 5, 27, shft); + break; + } +} + +void GXSetVtxAttrFmt(GXVtxFmt vtxfmt, GXAttr attr, GXCompCnt cnt, GXCompType type, u8 frac) +{ + u32 *va; + u32 *vb; + u32 *vc; + + CHECK_GXBEGIN(0x252, "GXSetVtxAttrFmt"); + CHECK_VTXFMT(0x253, vtxfmt); + CHECK_ATTRNAME2(0x255, attr); + CHECK_FRAC(0x256, frac); + va = &gx->vatA[vtxfmt]; + vb = &gx->vatB[vtxfmt]; + vc = &gx->vatC[vtxfmt]; + SETVAT(va, vb, vc, attr, cnt, type, frac); + gx->dirtyState |= 0x10; + gx->dirtyVAT |= (u8)(1 << (u8)vtxfmt); +} + +void GXSetVtxAttrFmtv(GXVtxFmt vtxfmt, const GXVtxAttrFmtList *list) +{ + u32 *va; + u32 *vb; + u32 *vc; + + CHECK_GXBEGIN(0x27B, "GXSetVtxAttrFmtv"); + CHECK_LISTPTR(0x27C, list); + CHECK_VTXFMT(0x27D, vtxfmt); + va = &gx->vatA[vtxfmt]; + vb = &gx->vatB[vtxfmt]; + vc = &gx->vatC[vtxfmt]; + while (list->attr != GX_VA_NULL) { + CHECK_ATTRNAME2(0x286, list->attr); + CHECK_FRAC(0x287, list->frac); + SETVAT(va, vb, vc, list->attr, list->cnt, list->type, list->frac); + list++; + } + gx->dirtyState |= 0x10; + gx->dirtyVAT |= (u8)(1 << (u8)vtxfmt); +} + +void __GXSetVAT(void) +{ + u8 i; + + for (i = 0; i < 8; i++) { + if (gx->dirtyVAT & (1 << (u8)i)) { + GX_WRITE_SOME_REG4(8, i | 0x70, gx->vatA[i], i - 12); + GX_WRITE_SOME_REG4(8, i | 0x80, gx->vatB[i], i - 12); + GX_WRITE_SOME_REG4(8, i | 0x90, gx->vatC[i], i - 12); + } + } + gx->dirtyVAT = 0; +} + +void GXGetVtxAttrFmt(GXVtxFmt fmt, GXAttr attr, GXCompCnt *cnt, GXCompType *type, u8 *frac) +{ + u32 *va; + u32 *vb; + u32 *vc; + + CHECK_GXBEGIN(0x2CF, "GXGetVtxAttrFmt"); + CHECK_VTXFMT(0x2D0, fmt); + va = &gx->vatA[fmt]; + vb = &gx->vatB[fmt]; + vc = &gx->vatC[fmt]; + switch (attr) { + case GX_VA_POS: + *cnt = GET_REG_FIELD(*va, 1, 0); + *type = GET_REG_FIELD(*va, 3, 1); + *frac = (u8)(*va >> 4) & 0x1F; // GET_REG_FIELD(*va, 5, 4) + return; + case GX_VA_NRM: + case GX_VA_NBT: + *cnt = GET_REG_FIELD(*va, 1, 9); + if (*cnt == GX_TEX_ST && (u8)(*va >> 0x1F) != 0) { + *cnt = GX_NRM_NBT3; + } + *type = GET_REG_FIELD(*va, 3, 10); + *frac = 0; + return; + case GX_VA_CLR0: + *cnt = GET_REG_FIELD(*va, 1, 13); + *type = GET_REG_FIELD(*va, 3, 14); + *frac = 0; + return; + case GX_VA_CLR1: + *cnt = GET_REG_FIELD(*va, 1, 17); + *type = GET_REG_FIELD(*va, 3, 18); + *frac = 0; + return; + case GX_VA_TEX0: + *cnt = GET_REG_FIELD(*va, 1, 21); + *type = GET_REG_FIELD(*va, 3, 22); + *frac = (u8)(*va >> 0x19U) & 0x1F; + return; + case GX_VA_TEX1: + *cnt = GET_REG_FIELD(*vb, 1, 0); + *type = GET_REG_FIELD(*vb, 3, 1); + *frac = (u8)(*vb >> 4U) & 0x1F; + return; + case GX_VA_TEX2: + *cnt = GET_REG_FIELD(*vb, 1, 9); + *type = GET_REG_FIELD(*vb, 3, 10); + *frac = (u8)(*vb >> 0xDU) & 0x1F; + return; + case GX_VA_TEX3: + *cnt = GET_REG_FIELD(*vb, 1, 18); + *type = GET_REG_FIELD(*vb, 3, 19); + *frac = (u8)(*vb >> 0x16U) & 0x1F; + return; + case GX_VA_TEX4: + *cnt = GET_REG_FIELD(*vb, 1, 27); + *type = GET_REG_FIELD(*vb, 3, 28); + *frac = GET_REG_FIELD(*vc, 5, 0); + return; + case GX_VA_TEX5: + *cnt = GET_REG_FIELD(*vc, 1, 5); + *type = GET_REG_FIELD(*vc, 3, 6); + *frac = (u8)(*vc >> 9U) & 0x1F; + return; + case GX_VA_TEX6: + *cnt = GET_REG_FIELD(*vc, 1, 14); + *type = GET_REG_FIELD(*vc, 3, 15); + *frac = (u8)(*vc >> 0x12) & 0x1F; + return; + case GX_VA_TEX7: + *cnt = GET_REG_FIELD(*vc, 1, 23); + *type = GET_REG_FIELD(*vc, 3, 24); + *frac = (int)(*vc >> 0x1BU); + return; + default: + *cnt = GX_TEX_ST; + *type = GX_RGB565; + *frac = 0; + return; + } +} + +void GXGetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList *vat) +{ + GXAttr attr; + + CHECK_GXBEGIN(0x330, "GXGetVtxAttrFmtv"); + CHECK_LISTPTR(0x331, vat); + CHECK_VTXFMT(0x332, fmt); + for (attr = GX_VA_POS; attr < GX_VA_MAX_ATTR; attr++) { + vat->attr = attr; + GXGetVtxAttrFmt(fmt, attr, &vat->cnt, &vat->type, &vat->frac); + vat++; + } + vat->attr = GX_VA_NULL; +} + +void GXSetArray(GXAttr attr, const void *base_ptr, u8 stride) +{ + GXAttr cpAttr; + unsigned long phyAddr; + + attr; // needed to match + + CHECK_GXBEGIN(0x34F, "GXSetArray"); + if (attr == GX_VA_NBT) { + attr = GX_VA_NRM; + } + CHECK_ATTRNAME3(0x352, attr); + cpAttr = attr - GX_VA_POS; + phyAddr = (u32)base_ptr & 0x3FFFFFFF; + GX_WRITE_SOME_REG2(8, cpAttr | 0xA0, phyAddr, cpAttr - 12); + GX_WRITE_SOME_REG3(8, cpAttr | 0xB0, stride, cpAttr - 12); +} + +void GXInvalidateVtxCache(void) +{ + CHECK_GXBEGIN(0x368, "GXInvalidateVtxCache"); + GX_WRITE_U8(0x48); +} + +void GXSetTexCoordGen2(GXTexCoordID dst_coord, GXTexGenType func, GXTexGenSrc src_param, u32 mtx, GXBool normalize, u32 pt_texmtx) +{ + u32 reg = 0; + u32 row; + u32 bumprow; // unused + u32 form; + GXAttr mtxIdAttr; + + CHECK_GXBEGIN(0x392, "GXSetTexCoordGen"); + ASSERTMSGLINE(0x393, dst_coord < 8, "GXSetTexCoordGen: Invalid coordinate Id"); + form = 0; + row = 5; + switch (src_param) { + case GX_TG_POS: row = 0; form = 1; break; + case GX_TG_NRM: row = 1; form = 1; break; + case GX_TG_BINRM: row = 3; form = 1; break; + case GX_TG_TANGENT: row = 4; form = 1; break; + case GX_TG_COLOR0: row = 2; break; + case GX_TG_COLOR1: row = 2; break; + case GX_TG_TEX0: row = 5; break; + case GX_TG_TEX1: row = 6; break; + case GX_TG_TEX2: row = 7; break; + case GX_TG_TEX3: row = 8; break; + case GX_TG_TEX4: row = 9; break; + case GX_TG_TEX5: row = 10; break; + case GX_TG_TEX6: row = 11; break; + case GX_TG_TEX7: row = 12; break; + case GX_TG_TEXCOORD0: bumprow; break; + case GX_TG_TEXCOORD1: bumprow; break; + case GX_TG_TEXCOORD2: bumprow; break; + case GX_TG_TEXCOORD3: bumprow; break; + case GX_TG_TEXCOORD4: bumprow; break; + case GX_TG_TEXCOORD5: bumprow; break; + case GX_TG_TEXCOORD6: bumprow; break; + default: + ASSERTMSGLINE(0x3AF, 0, "GXSetTexCoordGen: Invalid source parameter"); + break; + } + switch (func) + { + case GX_TG_MTX2x4: + SET_REG_FIELD(0x3B8, reg, 1, 1, 0); + SET_REG_FIELD(0x3B9, reg, 1, 2, form); + SET_REG_FIELD(0x3BA, reg, 3, 4, 0); + SET_REG_FIELD(0x3BB, reg, 5, 7, row); + break; + case GX_TG_MTX3x4: + SET_REG_FIELD(0x3BF, reg, 1, 1, 1); + SET_REG_FIELD(0x3C0, reg, 1, 2, form); + SET_REG_FIELD(0x3C1, reg, 3, 4, 0); + SET_REG_FIELD(0x3C2, reg, 5, 7, row); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + ASSERTMSGLINE(0x3CF, src_param >= 12 && src_param <= 18, "GXSetTexCoordGen: Bump source texture value is invalid"); + SET_REG_FIELD(0x3D0, reg, 1, 1, 0); + SET_REG_FIELD(0x3D1, reg, 1, 2, form); + SET_REG_FIELD(0x3D2, reg, 3, 4, 1); + SET_REG_FIELD(0x3D3, reg, 5, 7, row); + SET_REG_FIELD(0x3D4, reg, 3, 12, src_param - 12); + SET_REG_FIELD(0x3D5, reg, 3, 15, func - 2); + break; + case GX_TG_SRTG: + SET_REG_FIELD(0x3D9, reg, 1, 1, 0); + SET_REG_FIELD(0x3DA, reg, 1, 2, form); + if (src_param == GX_TG_COLOR0) { + SET_REG_FIELD(0, reg, 3, 4, 2); + } else { + SET_REG_FIELD(0, reg, 3, 4, 3); + } + SET_REG_FIELD(0, reg, 5, 7, 2); + break; + default: + ASSERTMSGLINE(0x3E5, 0, "GXSetTexCoordGen: Invalid function"); + break; + } + GX_WRITE_XF_REG(dst_coord + 0x40, reg); + reg = 0; + SET_REG_FIELD(0x3F8, reg, 6, 0, pt_texmtx - 64); + SET_REG_FIELD(0x3F9, reg, 1, 8, normalize); + GX_WRITE_XF_REG(dst_coord + 0x50, reg); + switch (dst_coord) { + case GX_TEXCOORD0: SET_REG_FIELD(0x402, gx->matIdxA, 6, 6, mtx); break; + case GX_TEXCOORD1: SET_REG_FIELD(0x403, gx->matIdxA, 6, 12, mtx); break; + case GX_TEXCOORD2: SET_REG_FIELD(0x404, gx->matIdxA, 6, 18, mtx); break; + case GX_TEXCOORD3: SET_REG_FIELD(0x405, gx->matIdxA, 6, 24, mtx); break; + case GX_TEXCOORD4: SET_REG_FIELD(0x406, gx->matIdxB, 6, 0, mtx); break; + case GX_TEXCOORD5: SET_REG_FIELD(0x407, gx->matIdxB, 6, 6, mtx); break; + case GX_TEXCOORD6: SET_REG_FIELD(0x408, gx->matIdxB, 6, 12, mtx); break; + default: SET_REG_FIELD(0x409, gx->matIdxB, 6, 18, mtx); break; + } + mtxIdAttr = dst_coord + 1; + __GXSetMatrixIndex(mtxIdAttr); +} + +void GXSetNumTexGens(u8 nTexGens) +{ + CHECK_GXBEGIN(0x41B, "GXSetNumTexGens"); + SET_REG_FIELD(0x41D, gx->genMode, 4, 0, nTexGens); + GX_WRITE_XF_REG(0x3F, nTexGens); + gx->dirtyState |= 4; +} diff --git a/src/dolphin/gx/GXBump.c b/src/dolphin/gx/GXBump.c new file mode 100644 index 00000000..910370d8 --- /dev/null +++ b/src/dolphin/gx/GXBump.c @@ -0,0 +1,335 @@ +#include +#include + +#include + +#if DEBUG +#define GX_WRITE_SOME_REG5(a, b) \ + do { \ + GX_WRITE_U8(a); \ + GX_WRITE_U32(b); \ + __gxVerif->rasRegs[(b >> 24) & 0xFF] = b; \ + } while (0) +#else +#define GX_WRITE_SOME_REG5(a, b) \ + do { \ + GX_WRITE_U8(a); \ + GX_WRITE_U32(b); \ + } while (0) +#endif + +void GXSetTevIndirect(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTexFormat format, GXIndTexBiasSel bias_sel, GXIndTexMtxID matrix_sel, + GXIndTexWrap wrap_s, GXIndTexWrap wrap_t, GXBool add_prev, GXBool utc_lod, GXIndTexAlphaSel alpha_sel) +{ + u32 reg; + + CHECK_GXBEGIN(0x92, "GXInitIndTexture"); + reg = 0; + SET_REG_FIELD(0x81, reg, 2, 0, ind_stage); + SET_REG_FIELD(0x82, reg, 2, 2, format); + SET_REG_FIELD(0x83, reg, 3, 4, bias_sel); + SET_REG_FIELD(0x84, reg, 2, 7, alpha_sel); + SET_REG_FIELD(0x85, reg, 4, 9, matrix_sel); + SET_REG_FIELD(0x86, reg, 3, 13, wrap_s); + SET_REG_FIELD(0x87, reg, 3, 16, wrap_t); + SET_REG_FIELD(0x88, reg, 1, 19, utc_lod); + SET_REG_FIELD(0x89, reg, 1, 20, add_prev); + SET_REG_FIELD(0x8A, reg, 8, 24, tev_stage + 16); + GX_WRITE_SOME_REG5(0x61, reg); + gx->bpSentNot = 0; +} + +void GXSetIndTexMtx(GXIndTexMtxID mtx_id, f32 offset[2][3], s8 scale_exp) +{ + s32 mtx[6]; + u32 reg; + u32 id; + + CHECK_GXBEGIN(0xBA, "GXSetIndTexMtx"); + + switch (mtx_id) { + case GX_ITM_0: + case GX_ITM_1: + case GX_ITM_2: + id = mtx_id - 1; + break; + case GX_ITM_S0: + case GX_ITM_S1: + case GX_ITM_S2: + id = mtx_id - 5; + break; + case GX_ITM_T0: + case GX_ITM_T1: + case GX_ITM_T2: + id = mtx_id - 9; + break; + default: + id = 0; + break; + } + + mtx[0] = (int)(1024.0f * offset[0][0]) & 0x7FF; + mtx[1] = (int)(1024.0f * offset[1][0]) & 0x7FF; + scale_exp += 0x11; + reg = 0; + SET_REG_FIELD(0xBD, reg, 11, 0, mtx[0]); + SET_REG_FIELD(0xBE, reg, 11, 11, mtx[1]); + SET_REG_FIELD(0xBF, reg, 2, 22, scale_exp & 3); + SET_REG_FIELD(0xC0, reg, 8, 24, id * 3 + 6); + GX_WRITE_SOME_REG5(0x61, reg); + + mtx[2] = (int)(1024.0f * offset[0][1]) & 0x7FF; + mtx[3] = (int)(1024.0f * offset[1][1]) & 0x7FF; + reg = 0; + SET_REG_FIELD(0xC6, reg, 11, 0, mtx[2]); + SET_REG_FIELD(0xC7, reg, 11, 11, mtx[3]); + SET_REG_FIELD(0xC8, reg, 2, 22, (scale_exp >> 2) & 3); + SET_REG_FIELD(0xC9, reg, 8, 24, id * 3 + 7); + GX_WRITE_SOME_REG5(0x61, reg); + + mtx[4] = (int)(1024.0f * offset[0][2]) & 0x7FF; + mtx[5] = (int)(1024.0f * offset[1][2]) & 0x7FF; + reg = 0; + SET_REG_FIELD(0xCF, reg, 11, 0, mtx[4]); + SET_REG_FIELD(0xD0, reg, 11, 11, mtx[5]); + SET_REG_FIELD(0xD1, reg, 2, 22, (scale_exp >> 4) & 3); + SET_REG_FIELD(0xD2, reg, 8, 24, id * 3 + 8); + GX_WRITE_SOME_REG5(0x61, reg); + + gx->bpSentNot = 0; +} + +void GXSetIndTexCoordScale(GXIndTexStageID ind_state, GXIndTexScale scale_s, GXIndTexScale scale_t) +{ + CHECK_GXBEGIN(0xF9, "GXSetIndTexScale"); + + switch (ind_state) { + case GX_INDTEXSTAGE0: + SET_REG_FIELD(0xEA, gx->IndTexScale0, 4, 0, scale_s); + SET_REG_FIELD(0xEB, gx->IndTexScale0, 4, 4, scale_t); + SET_REG_FIELD(0xEC, gx->IndTexScale0, 8, 24, 0x25); + GX_WRITE_SOME_REG5(0x61, gx->IndTexScale0); + break; + case GX_INDTEXSTAGE1: + SET_REG_FIELD(0xF0, gx->IndTexScale0, 4, 8, scale_s); + SET_REG_FIELD(0xF1, gx->IndTexScale0, 4, 12, scale_t); + SET_REG_FIELD(0xF2, gx->IndTexScale0, 8, 24, 0x25); + GX_WRITE_SOME_REG5(0x61, gx->IndTexScale0); + break; + case GX_INDTEXSTAGE2: + SET_REG_FIELD(0xF6, gx->IndTexScale1, 4, 0, scale_s); + SET_REG_FIELD(0xF7, gx->IndTexScale1, 4, 4, scale_t); + SET_REG_FIELD(0xF8, gx->IndTexScale1, 8, 24, 0x26); + GX_WRITE_SOME_REG5(0x61, gx->IndTexScale1); + break; + case GX_INDTEXSTAGE3: + SET_REG_FIELD(0xFC, gx->IndTexScale1, 4, 8, scale_s); + SET_REG_FIELD(0xFD, gx->IndTexScale1, 4, 12, scale_t); + SET_REG_FIELD(0xFE, gx->IndTexScale1, 8, 24, 0x26); + GX_WRITE_SOME_REG5(0x61, gx->IndTexScale1); + break; + default: + ASSERTMSGLINE(0x115, 0, "GXSetIndTexCoordScale: Invalid Indirect Stage Id"); + break; + } + gx->bpSentNot = 0; +} + +void GXSetIndTexOrder(GXIndTexStageID ind_stage, GXTexCoordID tex_coord, GXTexMapID tex_map) +{ + CHECK_GXBEGIN(0x12E, "GXSetIndTexOrder"); + + ASSERTMSGLINE(0x11D, tex_map < 8, "GXSetIndTexOrder: Invalid direct texture Id"); + ASSERTMSGLINE(0x11E, tex_coord < 8, "GXSetIndTexOrder: Invalid texture coord"); + switch (ind_stage) { + case GX_INDTEXSTAGE0: + SET_REG_FIELD(0x122, gx->iref, 3, 0, tex_map); + SET_REG_FIELD(0x123, gx->iref, 3, 3, tex_coord); + break; + case GX_INDTEXSTAGE1: + SET_REG_FIELD(0x126, gx->iref, 3, 6, tex_map); + SET_REG_FIELD(0x127, gx->iref, 3, 9, tex_coord); + break; + case GX_INDTEXSTAGE2: + SET_REG_FIELD(0x12A, gx->iref, 3, 12, tex_map); + SET_REG_FIELD(0x12B, gx->iref, 3, 15, tex_coord); + break; + case GX_INDTEXSTAGE3: + SET_REG_FIELD(0x12E, gx->iref, 3, 18, tex_map); + SET_REG_FIELD(0x12F, gx->iref, 3, 21, tex_coord); + break; + default: + ASSERTMSGLINE(0x132, 0, "GXSetIndTexOrder: Invalid Indirect Stage Id"); + break; + } + GX_WRITE_SOME_REG5(0x61, gx->iref); + gx->dirtyState |= 3; + gx->bpSentNot = 0; +} + +void GXSetNumIndStages(u8 nIndStages) +{ + CHECK_GXBEGIN(0x144, "GXSetNumIndStages"); + ASSERTMSGLINE(0x146, nIndStages <= 4, "GXSetNumIndStages: Exceeds max. number of indirect texture stages"); + SET_REG_FIELD(0x147, gx->genMode, 3, 16, nIndStages); + gx->dirtyState |= 6; +} + +#pragma dont_inline on +void GXSetTevDirect(GXTevStageID tev_stage) +{ + CHECK_GXBEGIN(0x158, "GXSetTevDirect"); + GXSetTevIndirect(tev_stage, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_OFF, GX_ITW_OFF, 0U, 0, 0); +} + +void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, u8 signed_offset, u8 replace_mode, GXIndTexMtxID matrix_sel) +{ + GXIndTexWrap wrap = (replace_mode != 0) ? GX_ITW_0 : GX_ITW_OFF; + + CHECK_GXBEGIN(0x16E, "GXSetTevIndWarp"); + GXSetTevIndirect(tev_stage, ind_stage, GX_ITF_8, (signed_offset != 0) ? GX_ITB_STU : GX_ITB_NONE, matrix_sel, wrap, wrap, 0U, 0, 0); +} + +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) +{ + GXIndTexWrap wrap_s; + GXIndTexWrap wrap_t; + f32 mtx[2][3]; + + CHECK_GXBEGIN(0x190, "GXSetTevIndTile"); + ASSERTMSGLINE(0x191, tev_stage < 16, "GXSetTevIndTile: Invalid tev stage id"); + ASSERTMSGLINE(0x192, ind_stage < 4, "GXSetTevIndTile: Invalid indirect stage id"); + switch (tilesize_s) { + case 256: + wrap_s = GX_ITW_256; + break; + case 128: + wrap_s = GX_ITW_128; + break; + case 64: + wrap_s = GX_ITW_64; + break; + case 32: + wrap_s = GX_ITW_32; + break; + case 16: + wrap_s = GX_ITW_16; + break; + default: + ASSERTMSGLINE(0x19B, 0, "GXSetTevIndTile: Invalid tilesize for S coordinate"); + wrap_s = GX_ITW_OFF; + break; + } + switch (tilesize_t) { + case 256: + wrap_t = GX_ITW_256; + break; + case 128: + wrap_t = GX_ITW_128; + break; + case 64: + wrap_t = GX_ITW_64; + break; + case 32: + wrap_t = GX_ITW_32; + break; + case 16: + wrap_t = GX_ITW_16; + break; + default: + ASSERTMSGLINE(0x1A7, 0, "GXSetTevIndTile: Invalid tilesize for T coordinate"); + wrap_t = GX_ITW_OFF; + break; + } + mtx[0][0] = tilespacing_s / 1024.0f; + mtx[0][1] = mtx[0][2] = 0.0f; + mtx[1][1] = tilespacing_t / 1024.0f; + mtx[1][0] = mtx[1][2] = 0.0f; + GXSetIndTexMtx(matrix_sel, mtx, 0xA); + GXSetTevIndirect(tev_stage, ind_stage, format, bias_sel, matrix_sel, wrap_s, wrap_t, 0U, 1, alpha_sel); +} +#pragma dont_inline off + +void GXSetTevIndBumpST(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTexMtxID matrix_sel) +{ + GXIndTexMtxID sm; + GXIndTexMtxID tm; + + CHECK_GXBEGIN(0x1CF, "GXSetTevIndBumpST"); + switch (matrix_sel) { + case GX_ITM_0: + sm = GX_ITM_S0; + tm = GX_ITM_T0; + break; + case GX_ITM_1: + sm = GX_ITM_S1; + tm = GX_ITM_T1; + break; + case GX_ITM_2: + sm = GX_ITM_S2; + tm = GX_ITM_T2; + break; + default: + ASSERTMSGLINE(0x1E0, 0, "GXSetTevIndBumpST: Invalid matrix selection"); + break; + } + GXSetTevIndirect(tev_stage, ind_stage, GX_ITF_8, GX_ITB_ST, sm, GX_ITW_0, GX_ITW_0, 0U, 0, 0); + GXSetTevIndirect(tev_stage + 1, ind_stage, GX_ITF_8, GX_ITB_ST, tm, GX_ITW_0, GX_ITW_0, 1U, 0, 0); + GXSetTevIndirect(tev_stage + 2, ind_stage, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_OFF, GX_ITW_OFF, 1U, 0, 0); +} + +void GXSetTevIndBumpXYZ(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTexMtxID matrix_sel) +{ + CHECK_GXBEGIN(0x214, "GXSetTevIndBumpXYZ"); + GXSetTevIndirect(tev_stage, ind_stage, GX_ITF_8, GX_ITB_STU, matrix_sel, GX_ITW_OFF, GX_ITW_OFF, 0U, 0, 0); +} + +void GXSetTevIndRepeat(GXTevStageID tev_stage) +{ + CHECK_GXBEGIN(0x231, "GXSetTevIndRepeat"); + GXSetTevIndirect(tev_stage, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_0, GX_ITW_0, 1U, 0, 0); +} + +void __GXUpdateBPMask(void) +{ + u32 nIndStages; + u32 i; + u32 tmap; + u32 new_imask; + u32 nStages; + u32 new_dmask; + + new_imask = 0; + new_dmask = 0; + nIndStages = GET_REG_FIELD(gx->genMode, 3, 16); + for (i = 0; i < nIndStages; i++) { + switch (i) { + case 0: + tmap = GET_REG_FIELD(gx->iref, 3, 0); + break; + case 1: + tmap = GET_REG_FIELD(gx->iref, 3, 6); + break; + case 2: + tmap = GET_REG_FIELD(gx->iref, 3, 12); + break; + case 3: + tmap = GET_REG_FIELD(gx->iref, 3, 18); + break; + } + new_imask |= 1 << tmap; + } + + if ((u8)gx->bpMask != new_imask) { + SET_REG_FIELD(0x26E, gx->bpMask, 8, 0, new_imask); + GX_WRITE_SOME_REG5(0x61, gx->bpMask); + gx->bpSentNot = 0; + } +} + +void __GXFlushTextureState(void) +{ + GX_WRITE_SOME_REG5(0x61, gx->bpMask); + gx->bpSentNot = 0; +} diff --git a/src/dolphin/gx/GXDisplayList.c b/src/dolphin/gx/GXDisplayList.c new file mode 100644 index 00000000..cc751606 --- /dev/null +++ b/src/dolphin/gx/GXDisplayList.c @@ -0,0 +1,83 @@ +#include + +#include +#include + +#include + +static struct __GXFifoObj DisplayListFifo; +static volatile struct __GXFifoObj *OldCPUFifo; +static struct __GXData_struct __savedGXdata; + +void GXBeginDisplayList(void *list, u32 size) +{ + struct __GXFifoObj *CPUFifo = (struct __GXFifoObj *)GXGetCPUFifo(); + + CHECK_GXBEGIN(0x89, "GXBeginDisplayList"); + ASSERTMSGLINE(0x8A, !__GXData->inDispList, "GXBeginDisplayList: display list already in progress"); + ASSERTMSGLINE(0x8B, (size & 0x1F) == 0, "GXBeginDisplayList: size is not 32 byte aligned"); + ASSERTMSGLINE(0x8C, ((u32)list & 0x1F) == 0, "GXBeginDisplayList: list is not 32 byte aligned"); + if (gx->dirtyState != 0) { + __GXSetDirtyState(); + } + if (gx->dlSaveContext != 0) { + memcpy(&__savedGXdata, gx, sizeof(__savedGXdata)); + } + DisplayListFifo.base = (u8 *)list; + DisplayListFifo.top = (u8 *)list + size - 4; + DisplayListFifo.size = size; + DisplayListFifo.count = 0; + DisplayListFifo.rdPtr = list; + DisplayListFifo.wrPtr = list; + gx->inDispList = 1; + GXSaveCPUFifo((GXFifoObj *)CPUFifo); + OldCPUFifo = CPUFifo; + GXSetCPUFifo((GXFifoObj *)&DisplayListFifo); +} + +unsigned long GXEndDisplayList(void) +{ + u32 ov; + BOOL enabled; + u32 cpenable; + + CHECK_GXBEGIN(0xB5, "GXEndDisplayList"); + ASSERTMSGLINE(0xB6, gx->inDispList == TRUE, "GXEndDisplayList: no display list in progress"); + if (gx->dirtyState != 0) { + __GXSetDirtyState(); + } + ov = (__piReg[5] >> 26) & 1; + __GXSaveCPUFifoAux(&DisplayListFifo); + ASSERTMSGLINE(0xC3, !ov, "GXEndDisplayList: display list commands overflowed buffer"); + GXSetCPUFifo((GXFifoObj *)OldCPUFifo); + if (gx->dlSaveContext != 0) { + enabled = OSDisableInterrupts(); + cpenable = gx->cpEnable; + memcpy(gx, &__savedGXdata, sizeof(*gx)); + gx->cpEnable = cpenable; + OSRestoreInterrupts(enabled); + } + gx->inDispList = 0; + if (!ov) { + return DisplayListFifo.count; + } + return 0; +} + +void GXCallDisplayList(const void *list, u32 nbytes) +{ + CHECK_GXBEGIN(0xEC, "GXCallDisplayList"); + ASSERTMSGLINE(0xED, !gx->inDispList, "GXCallDisplayList: display list already in progress"); + ASSERTMSGLINE(0xEE, (nbytes & 0x1F) == 0, "GXCallDisplayList: nbytes is not 32 byte aligned"); + ASSERTMSGLINE(0xEF, ((u32)list & 0x1F) == 0, "GXCallDisplayList: list is not 32 byte aligned"); + + if (gx->dirtyState != 0) { + __GXSetDirtyState(); + } + if (*(u32 *)&gx->vNumNot == 0) { // checks both vNum and bpSent + __GXSendFlushPrim(); + } + GX_WRITE_U8(0x40); + GX_WRITE_U32((u32)list); + GX_WRITE_U32(nbytes); +} diff --git a/src/dolphin/gx/GXFifo.c b/src/dolphin/gx/GXFifo.c new file mode 100644 index 00000000..583303a0 --- /dev/null +++ b/src/dolphin/gx/GXFifo.c @@ -0,0 +1,559 @@ +#include +#include +#include +#include + + +#include + +static struct __GXFifoObj* CPUFifo; +static struct __GXFifoObj* GPFifo; +static OSThread* __GXCurrentThread; +static GXBool CPGPLinked; +static BOOL GXOverflowSuspendInProgress; +static GXBreakPtCallback BreakPointCB; +static u32 __GXOverflowCount; + +void* __GXCurrentBP; + +static void __GXFifoReadEnable(void); +static void __GXFifoReadDisable(void); +static void __GXFifoLink(u8 arg0); +static void __GXWriteFifoIntEnable(u8 arg0, u8 arg1); +static void __GXWriteFifoIntReset(u8 arg0, u8 arg1); + +static void GXOverflowHandler(s16 interrupt, OSContext *context) +{ + ASSERTLINE(0x179, !GXOverflowSuspendInProgress); + + __GXOverflowCount++; + __GXWriteFifoIntEnable(0, 1); + __GXWriteFifoIntReset(1, 0); + GXOverflowSuspendInProgress = TRUE; + + OSSuspendThread(__GXCurrentThread); +} + +static void GXUnderflowHandler(s16 interrupt, OSContext *context) +{ + ASSERTLINE(0x1A3, GXOverflowSuspendInProgress); + + OSResumeThread(__GXCurrentThread); + GXOverflowSuspendInProgress = FALSE; + __GXWriteFifoIntReset(1U, 1U); + __GXWriteFifoIntEnable(1U, 0U); +} + +#define SOME_SET_REG_MACRO(reg, size, shift, val) \ + do { \ + (reg) = (u32)__rlwimi((u32)(reg), (val), (shift), (32 - (shift) - (size)), (31 - (shift))); \ + } while (0); + +static void GXBreakPointHandler(s16 interrupt, OSContext *context) +{ + OSContext exceptionContext; + + gx->cpEnable = gx->cpEnable & 0xFFFFFFDF; + __cpReg[1] = gx->cpEnable; + if (BreakPointCB != NULL) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + BreakPointCB(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } +} + +static void GXCPInterruptHandler(s16 interrupt, OSContext *context) +{ + gx->cpStatus = GX_GET_CP_REG(0); + if (GET_REG_FIELD(gx->cpEnable, 1, 3) && GET_REG_FIELD(gx->cpStatus, 1, 1)) { + GXUnderflowHandler(interrupt, context); + } + if (GET_REG_FIELD(gx->cpEnable, 1, 2) && GET_REG_FIELD(gx->cpStatus, 1, 0)) { + GXOverflowHandler(interrupt, context); + } + if (GET_REG_FIELD(gx->cpEnable, 1, 5) && GET_REG_FIELD(gx->cpStatus, 1, 4)) { + GXBreakPointHandler(interrupt, context); + } +} + +void GXInitFifoBase(GXFifoObj *fifo, void *base, u32 size) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + ASSERTMSGLINE(0x21E, realFifo != CPUFifo, "GXInitFifoBase: fifo is attached to CPU"); + ASSERTMSGLINE(0x220, realFifo != GPFifo, "GXInitFifoBase: fifo is attached to GP"); + ASSERTMSGLINE(0x222, ((u32)base & 0x1F) == 0, "GXInitFifoBase: base must be 32B aligned"); + ASSERTMSGLINE(0x224, base != NULL, "GXInitFifoBase: base pointer is NULL"); + ASSERTMSGLINE(0x226, (size & 0x1F) == 0, "GXInitFifoBase: size must be 32B aligned"); + ASSERTMSGLINE(0x228, size >= 0x10000, "GXInitFifoBase: fifo is not large enough"); + + realFifo->base = base; + realFifo->top = (u8 *)base + size - 4; + realFifo->size = size; + realFifo->count = 0; + GXInitFifoLimits(fifo, size - 0x4000, (size >> 1) & ~0x1F); + GXInitFifoPtrs(fifo, base, base); +} + +void GXInitFifoPtrs(GXFifoObj *fifo, void *readPtr, void *writePtr) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + BOOL enabled; + + ASSERTMSGLINE(0x250, realFifo != CPUFifo, "GXInitFifoPtrs: fifo is attached to CPU"); + ASSERTMSGLINE(0x252, realFifo != GPFifo, "GXInitFifoPtrs: fifo is attached to GP"); + ASSERTMSGLINE(0x254, ((u32)readPtr & 0x1F) == 0, "GXInitFifoPtrs: readPtr not 32B aligned"); + ASSERTMSGLINE(0x256, ((u32)writePtr & 0x1F) == 0, "GXInitFifoPtrs: writePtr not 32B aligned"); + ASSERTMSGLINE(0x259, realFifo->base <= readPtr && readPtr < realFifo->top, "GXInitFifoPtrs: readPtr not in fifo range"); + ASSERTMSGLINE(0x25C, realFifo->base <= writePtr && writePtr < realFifo->top, "GXInitFifoPtrs: writePtr not in fifo range"); + + enabled = OSDisableInterrupts(); + realFifo->rdPtr = readPtr; + realFifo->wrPtr = writePtr; + realFifo->count = (u8 *)writePtr - (u8 *)readPtr; + if (realFifo->count < 0) { + realFifo->count += realFifo->size; + } + OSRestoreInterrupts(enabled); +} + +void GXInitFifoLimits(GXFifoObj *fifo, u32 hiWatermark, u32 loWatermark) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + ASSERTMSGLINE(0x281, realFifo != GPFifo, "GXInitFifoLimits: fifo is attached to GP"); + ASSERTMSGLINE(0x283, (hiWatermark & 0x1F) == 0, "GXInitFifoLimits: hiWatermark not 32B aligned"); + ASSERTMSGLINE(0x285, (loWatermark & 0x1F) == 0, "GXInitFifoLimits: loWatermark not 32B aligned"); + ASSERTMSGLINE(0x287, hiWatermark < realFifo->top - realFifo->base, "GXInitFifoLimits: hiWatermark too large"); + ASSERTMSGLINE(0x289, loWatermark < hiWatermark, "GXInitFifoLimits: hiWatermark below lo watermark"); + + realFifo->hiWatermark = hiWatermark; + realFifo->loWatermark = loWatermark; +} + +void GXSetCPUFifo(GXFifoObj *fifo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + BOOL enabled = OSDisableInterrupts(); + + CPUFifo = realFifo; + if (CPUFifo == GPFifo) + { + u32 reg = 0; + + __piReg[3] = (u32)realFifo->base & 0x3FFFFFFF; + __piReg[4] = (u32)realFifo->top & 0x3FFFFFFF; + SET_REG_FIELD(0x294, reg, 21, 5, ((u32)realFifo->wrPtr & 0x3FFFFFFF) >> 5); + SET_REG_FIELD(0x295, reg, 1, 26, 0); + __piReg[5] = reg; + CPGPLinked = GX_TRUE; + __GXWriteFifoIntReset(1, 1); + __GXWriteFifoIntEnable(1, 0); + __GXFifoLink(1); + } + else + { + u32 reg; + + if (CPGPLinked) + { + __GXFifoLink(0); + CPGPLinked = GX_FALSE; + } + __GXWriteFifoIntEnable(0, 0); + reg = 0; + __piReg[3] = (u32)realFifo->base & 0x3FFFFFFF; + __piReg[4] = (u32)realFifo->top & 0x3FFFFFFF; + SET_REG_FIELD(0x2B7, reg, 21, 5, ((u32)realFifo->wrPtr & 0x3FFFFFFF) >> 5); + SET_REG_FIELD(0x2B8, reg, 1, 26, 0); + __piReg[5] = reg; + } + + __sync(); + + OSRestoreInterrupts(enabled); +} + +void GXSetGPFifo(GXFifoObj *fifo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + BOOL enabled = OSDisableInterrupts(); + + __GXFifoReadDisable(); + __GXWriteFifoIntEnable(0, 0); + GPFifo = realFifo; + + GX_SET_CP_REG(16, (u32)realFifo->base & 0xFFFF); + GX_SET_CP_REG(18, (u32)realFifo->top & 0xFFFF); + GX_SET_CP_REG(24, realFifo->count & 0xFFFF); + GX_SET_CP_REG(26, (u32)realFifo->wrPtr & 0xFFFF); + GX_SET_CP_REG(28, (u32)realFifo->rdPtr & 0xFFFF); + GX_SET_CP_REG(20, (u32)realFifo->hiWatermark & 0xFFFF); + GX_SET_CP_REG(22, (u32)realFifo->loWatermark & 0xFFFF); + GX_SET_CP_REG(17, ((u32)realFifo->base & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(19, ((u32)realFifo->top & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(25, realFifo->count >> 16); + GX_SET_CP_REG(27, ((u32)realFifo->wrPtr & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(29, ((u32)realFifo->rdPtr & 0x3FFFFFFF) >> 16); + GX_SET_CP_REG(21, (u32)realFifo->hiWatermark >> 16); + GX_SET_CP_REG(23, (u32)realFifo->loWatermark >> 16); + + __sync(); + + if (CPUFifo == GPFifo) { + CPGPLinked = GX_TRUE; + __GXWriteFifoIntEnable(1, 0); + __GXFifoLink(1); + } + else { + CPGPLinked = GX_FALSE; + __GXWriteFifoIntEnable(0, 0); + __GXFifoLink(0); + } + __GXWriteFifoIntReset(1, 1); + __GXFifoReadEnable(); + OSRestoreInterrupts(enabled); +} + +void GXSaveCPUFifo(GXFifoObj *fifo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + ASSERTMSGLINE(0x343, realFifo == CPUFifo, "GXSaveCPUFifo: fifo is not attached to CPU"); + __GXSaveCPUFifoAux(realFifo); +} + +#define SOME_MACRO1(fifo) \ + do { \ + u32 temp = GX_GET_CP_REG(29) << 16; \ + temp |= GX_GET_CP_REG(28); \ + fifo->rdPtr = OSPhysicalToCached(temp); \ + } while (0) + +#define SOME_MACRO2(fifo) \ + do { \ + u32 temp = GX_GET_CP_REG(25) << 16; \ + temp |= GX_GET_CP_REG(24); \ + fifo->count = temp; \ + } while (0) + +void __GXSaveCPUFifoAux(struct __GXFifoObj *realFifo) +{ + BOOL enabled = OSDisableInterrupts(); + + GXFlush(); + realFifo->base = OSPhysicalToCached(__piReg[3]); + realFifo->top = OSPhysicalToCached(__piReg[4]); + realFifo->wrPtr = OSPhysicalToCached(__piReg[5] & 0xFBFFFFFF); + if (CPGPLinked) { + SOME_MACRO1(realFifo); + SOME_MACRO2(realFifo); + } else { + realFifo->count = (u8 *)realFifo->wrPtr - (u8 *)realFifo->rdPtr; + if (realFifo->count < 0) + realFifo->count += realFifo->size; + } + OSRestoreInterrupts(enabled); +} + +void GXSaveGPFifo(GXFifoObj *fifo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + unsigned long cpStatus; + unsigned char readIdle; + unsigned long temp; + + ASSERTMSGLINE(0x38C, realFifo == GPFifo, "GXSaveGPFifo: fifo is not attached to GP"); + cpStatus = GX_GET_CP_REG(0); + readIdle = GET_REG_FIELD(cpStatus, 1, 2); + ASSERTMSGLINE(0x393, readIdle, "GXSaveGPFifo: GP is not idle"); + + SOME_MACRO1(realFifo); + SOME_MACRO2(realFifo); +} + +void GXGetGPStatus(GXBool *overhi, GXBool *underlow, GXBool *readIdle, GXBool *cmdIdle, GXBool *brkpt) +{ + gx->cpStatus = GX_GET_CP_REG(0); + *overhi = GET_REG_FIELD(gx->cpStatus, 1, 0); + *underlow = (int)GET_REG_FIELD(gx->cpStatus, 1, 1); + *readIdle = (int)GET_REG_FIELD(gx->cpStatus, 1, 2); + *cmdIdle = (int)GET_REG_FIELD(gx->cpStatus, 1, 3); + *brkpt = (int)GET_REG_FIELD(gx->cpStatus, 1, 4); +} + +void GXGetFifoStatus(GXFifoObj *fifo, GXBool *overhi, GXBool *underflow, u32 *fifoCount, GXBool *cpuWrite, GXBool *gpRead, GXBool *fifowrap) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + *underflow = GX_FALSE; + *overhi = GX_FALSE; + *fifoCount = 0; + *fifowrap = GX_FALSE; + if (realFifo == GPFifo) { + SOME_MACRO1(realFifo); + SOME_MACRO2(realFifo); + } + if (realFifo == CPUFifo) { + GXFlush(); + __GXSaveCPUFifoAux(realFifo); + *fifowrap = (int)GET_REG_FIELD(GX_GET_PI_REG(5), 1, 26); + } + *overhi = (realFifo->count > realFifo->hiWatermark); + *underflow = (realFifo->count < realFifo->loWatermark); + *fifoCount = (realFifo->count); + *cpuWrite = (CPUFifo == realFifo); + *gpRead = (GPFifo == realFifo); +} + +void GXGetFifoPtrs(GXFifoObj *fifo, void **readPtr, void **writePtr) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + if (realFifo == CPUFifo) { + realFifo->wrPtr = OSPhysicalToCached(GX_GET_PI_REG(5) & 0xFBFFFFFF); + } + if (realFifo == GPFifo) { + SOME_MACRO1(realFifo); + SOME_MACRO2(realFifo); + } + else { + realFifo->count = (u8 *)realFifo->wrPtr - (u8 *)realFifo->rdPtr; + if (realFifo->count < 0) { + realFifo->count += realFifo->size; + } + } + *readPtr = realFifo->rdPtr; + *writePtr = realFifo->wrPtr; +} + +void *GXGetFifoBase(const GXFifoObj *fifo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + return realFifo->base; +} + +u32 GXGetFifoSize(const GXFifoObj *fifo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + return realFifo->size; +} + +void GXGetFifoLimits(const GXFifoObj *fifo, u32 *hi, u32 *lo) +{ + struct __GXFifoObj *realFifo = (struct __GXFifoObj *)fifo; + + *hi = realFifo->hiWatermark; + *lo = realFifo->loWatermark; +} + +GXBreakPtCallback GXSetBreakPtCallback(GXBreakPtCallback cb) +{ + GXBreakPtCallback oldcb = BreakPointCB; + BOOL enabled = OSDisableInterrupts(); + + BreakPointCB = cb; + OSRestoreInterrupts(enabled); + return oldcb; +} + +void *__GXCurrentBP; + +void GXEnableBreakPt(void *break_pt) +{ + BOOL enabled = OSDisableInterrupts(); + + __GXFifoReadDisable(); + GX_SET_CP_REG(30, (u32)break_pt); + GX_SET_CP_REG(31, ((u32)break_pt >> 16) & 0x3FFF); + SOME_SET_REG_MACRO(gx->cpEnable, 1, 1, 1); + SOME_SET_REG_MACRO(gx->cpEnable, 1, 5, 1); + GX_SET_CP_REG(1, gx->cpEnable); + __GXCurrentBP = break_pt; + __GXFifoReadEnable(); + OSRestoreInterrupts(enabled); +} + +void GXDisableBreakPt(void) +{ + BOOL enabled = OSDisableInterrupts(); + + SOME_SET_REG_MACRO(gx->cpEnable, 1, 1, 0); + SOME_SET_REG_MACRO(gx->cpEnable, 1, 5, 0); + GX_SET_CP_REG(1, gx->cpEnable); + __GXCurrentBP = NULL; + OSRestoreInterrupts(enabled); +} + +void __GXFifoInit(void) +{ + __OSSetInterruptHandler(0x11, GXCPInterruptHandler); + __OSUnmaskInterrupts(0x4000); + __GXCurrentThread = OSGetCurrentThread(); + GXOverflowSuspendInProgress = FALSE; + CPUFifo = NULL; + GPFifo = NULL; +} + +static void __GXFifoReadEnable(void) +{ + SET_REG_FIELD(0, gx->cpEnable, 1, 0, 1); + GX_SET_CP_REG(1, gx->cpEnable); +} + +static void __GXFifoReadDisable(void) +{ + SET_REG_FIELD(0, gx->cpEnable, 1, 0, 0); + GX_SET_CP_REG(1, gx->cpEnable); +} + +static void __GXFifoLink(u8 en) +{ + SET_REG_FIELD(0x4DA, gx->cpEnable, 1, 4, (en != 0) ? 1 : 0); + GX_SET_CP_REG(1, gx->cpEnable); +} + +static void __GXWriteFifoIntEnable(u8 hiWatermarkEn, u8 loWatermarkEn) +{ + SET_REG_FIELD(0x4F0, gx->cpEnable, 1, 2, hiWatermarkEn); + SET_REG_FIELD(0x4F1, gx->cpEnable, 1, 3, loWatermarkEn); + GX_SET_CP_REG(1, gx->cpEnable); +} + +static void __GXWriteFifoIntReset(u8 hiWatermarkClr, u8 loWatermarkClr) +{ + SET_REG_FIELD(0x508, gx->cpClr, 1, 0, hiWatermarkClr); + SET_REG_FIELD(0x509, gx->cpClr, 1, 1, loWatermarkClr); + GX_SET_CP_REG(2, gx->cpClr); +} + +void __GXInsaneWatermark(void) +{ + struct __GXFifoObj *realFifo = GPFifo; + + realFifo->hiWatermark = realFifo->loWatermark + 512; + GX_SET_CP_REG(20, (realFifo->hiWatermark & 0x3FFFFFFF) & 0xFFFF); + GX_SET_CP_REG(21, (realFifo->hiWatermark & 0x3FFFFFFF) >> 16); +} + +void __GXCleanGPFifo(void) +{ + GXFifoObj dummyFifo; + GXFifoObj *gpFifo = GXGetGPFifo(); + GXFifoObj *cpuFifo = GXGetCPUFifo(); + void *base = GXGetFifoBase(gpFifo); + + dummyFifo = *gpFifo; + GXInitFifoPtrs(&dummyFifo, base, base); + GXSetGPFifo(&dummyFifo); + if (cpuFifo == gpFifo) { + GXSetCPUFifo(&dummyFifo); + } + GXInitFifoPtrs(gpFifo, base, base); + GXSetGPFifo(gpFifo); + if (cpuFifo == gpFifo) { + GXSetCPUFifo(cpuFifo); + } +} + +OSThread *GXSetCurrentGXThread(void) +{ + BOOL enabled; + struct OSThread *prev; + + enabled = OSDisableInterrupts(); + prev = __GXCurrentThread; + ASSERTMSGLINE(0x561, !GXOverflowSuspendInProgress, "GXSetCurrentGXThread: Two threads cannot generate GX commands at the same time!"); + __GXCurrentThread = OSGetCurrentThread(); + OSRestoreInterrupts(enabled); + return prev; +} + +OSThread *GXGetCurrentGXThread(void) +{ + return __GXCurrentThread; +} + +GXFifoObj *GXGetCPUFifo(void) +{ + return (GXFifoObj *)CPUFifo; +} + +GXFifoObj *GXGetGPFifo(void) +{ + return (GXFifoObj *)GPFifo; +} + +u32 GXGetOverflowCount(void) +{ + return __GXOverflowCount; +} + +u32 GXResetOverflowCount(void) +{ + u32 oldcount; + + oldcount = __GXOverflowCount; + __GXOverflowCount = 0; + return oldcount; +} + +// NONMATCHING +volatile void *GXRedirectWriteGatherPipe(void *ptr) +{ + u32 reg = 0; + BOOL enabled = OSDisableInterrupts(); + + CHECK_GXBEGIN(0x5D5, "GXRedirectWriteGatherPipe"); + ASSERTLINE(0x5D6, OFFSET(ptr, 32) == 0); + ASSERTLINE(0x5D8, !IsWGPipeRedirected); + + GXFlush(); + while (PPCMfwpar() & 1) { } + PPCMtwpar((u32)OSUncachedToPhysical((void *)GXFIFO_ADDR)); + if (CPGPLinked) { + __GXFifoLink(0); + __GXWriteFifoIntEnable(0, 0); + } + CPUFifo->wrPtr = OSPhysicalToCached(GX_GET_PI_REG(5) & 0xFBFFFFFF); + GX_SET_PI_REG(3, 0); + GX_SET_PI_REG(4, 0x04000000); + SET_REG_FIELD(0x5F7, reg, 21, 5, ((u32)ptr & 0x3FFFFFFF) >> 5); + reg &= 0xFBFFFFFF; + GX_SET_PI_REG(5, reg); + PPCSync(); + OSRestoreInterrupts(enabled); + return (volatile void *)GXFIFO_ADDR; +} + +// NONMATCHING +void GXRestoreWriteGatherPipe(void) +{ + u32 reg = 0; // r31 + u32 i; // r29 + BOOL enabled; // r28 + + ASSERTLINE(0x610, IsWGPipeRedirected); + enabled = OSDisableInterrupts(); + for (i = 0; i < 31; i++) { + GXWGFifo.u8 = 0; + } + PPCSync(); + while (PPCMfwpar() & 1) { } + PPCMtwpar((u32)OSUncachedToPhysical((void *)GXFIFO_ADDR)); + GX_SET_PI_REG(3, (u32)CPUFifo->base & 0x3FFFFFFF); + GX_SET_PI_REG(4, (u32)CPUFifo->top & 0x3FFFFFFF); + SET_REG_FIELD(0x62A, reg, 21, 5, ((u32)CPUFifo->wrPtr & 0x3FFFFFFF) >> 5); + reg &= 0xFBFFFFFF; + GX_SET_PI_REG(5, reg); + if (CPGPLinked) { + __GXWriteFifoIntReset(1, 1); + __GXWriteFifoIntEnable(1, 0); + __GXFifoLink(1); + } + PPCSync(); + OSRestoreInterrupts(enabled); +} diff --git a/src/dolphin/gx/GXFrameBuf.c b/src/dolphin/gx/GXFrameBuf.c new file mode 100644 index 00000000..9c12a892 --- /dev/null +++ b/src/dolphin/gx/GXFrameBuf.c @@ -0,0 +1,603 @@ +#include +#include + +#include + +GXRenderModeObj GXNtsc240Ds = { 1, 640, 240, 240, 40, 0, 640, 480, 0, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; + +GXRenderModeObj GXNtsc240DsAa = { 1, 640, 240, 240, 40, 0, 640, 480, 0, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; + +GXRenderModeObj GXNtsc240Int = { 0, 640, 240, 240, 40, 0, 640, 480, 0, 1, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; + +GXRenderModeObj GXNtsc240IntAa = { 0, 640, 240, 240, 40, 0, 640, 480, 0, 1, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; + +GXRenderModeObj GXNtsc480IntDf = { 0, 640, 480, 480, 40, 0, 640, 480, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 8, 8, 10, 12, 10, 8, 8 } }; + +GXRenderModeObj GXNtsc480Int = { 0, 640, 480, 480, 40, 0, 640, 480, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; + +GXRenderModeObj GXNtsc480IntAa = { 0, 640, 242, 480, 40, 0, 640, 480, 1, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 4, 8, 12, 16, 12, 8, 4 } }; + +GXRenderModeObj GXNtsc480Prog = { 2, 640, 480, 480, 40, 0, 640, 480, 0, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; + +GXRenderModeObj GXNtsc480ProgSoft = { 2, 640, 480, 480, 40, 0, 640, 480, 0, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 8, 8, 10, 12, 10, 8, 8 } }; + +GXRenderModeObj GXNtsc480ProgAa = { 2, 640, 242, 480, 40, 0, 640, 480, 0, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 4, 8, 12, 16, 12, 8, 4 } }; + +GXRenderModeObj GXMpal240Ds = { 9, 640, 240, 240, 40, 0, 640, 480, 0, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXMpal240DsAa = { 9, 640, 240, 240, 40, 0, 640, 480, 0, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXMpal240Int = { 8, 640, 240, 240, 40, 0, 640, 480, 0, 1, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXMpal240IntAa = { 8, 640, 240, 240, 40, 0, 640, 480, 0, 1, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXMpal480IntDf = { 8, 640, 480, 480, 40, 0, 640, 480, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 8, 8, 10, 12, 10, 8, 8 } }; +GXRenderModeObj GXMpal480Int = { 8, 640, 480, 480, 40, 0, 640, 480, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXMpal480IntAa = { 8, 640, 242, 480, 40, 0, 640, 480, 1, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 4, 8, 12, 16, 12, 8, 4 } }; +GXRenderModeObj GXPal264Ds = { 5, 640, 264, 264, 40, 11, 640, 528, 0, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXPal264DsAa = { 5, 640, 264, 264, 40, 11, 640, 528, 0, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXPal264Int = { 4, 640, 264, 264, 40, 23, 640, 528, 0, 1, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXPal264IntAa = { 4, 640, 264, 264, 40, 23, 640, 528, 0, 1, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXPal528IntDf = { 4, 640, 528, 528, 40, 23, 640, 528, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 8, 8, 10, 12, 10, 8, 8 } }; +GXRenderModeObj GXPal528Int = { 4, 640, 528, 528, 40, 23, 640, 528, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXPal524IntAa = { 4, 640, 264, 524, 40, 23, 640, 524, 1, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 4, 8, 12, 16, 12, 8, 4 } }; +GXRenderModeObj GXEurgb60Hz240Ds = { 21, 640, 240, 240, 40, 0, 640, 480, 0, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXEurgb60Hz240DsAa = { 21, 640, 240, 240, 40, 0, 640, 480, 0, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXEurgb60Hz240Int = { 20, 640, 240, 240, 40, 0, 640, 480, 0, 1, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXEurgb60Hz240IntAa = { 20, 640, 240, 240, 40, 0, 640, 480, 0, 1, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXEurgb60Hz480IntDf = { 20, 640, 480, 480, 40, 0, 640, 480, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 8, 8, 10, 12, 10, 8, 8 } }; +GXRenderModeObj GXEurgb60Hz480Int = { 20, 640, 480, 480, 40, 0, 640, 480, 1, 0, 0, + { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, { 0, 0, 21, 22, 21, 0, 0 } }; +GXRenderModeObj GXEurgb60Hz480IntAa = { 20, 640, 242, 480, 40, 0, 640, 480, 1, 0, 1, + { 3, 2, 9, 6, 3, 10, 3, 2, 9, 6, 3, 10, 9, 2, 3, 6, 9, 10, 9, 2, 3, 6, 9, 10 }, { 4, 8, 12, 16, 12, 8, 4 } }; +GXRenderModeObj GXRmHW = { 1, 320, 240, 240, 40, 0, 640, 480, 0, 0, 0, { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, + { 0, 0, 21, 22, 21, 0, 0 } }; + +void GXAdjustForOverscan(GXRenderModeObj *rmin, GXRenderModeObj *rmout, u16 hor, u16 ver) +{ + u16 hor2 = hor * 2; + u16 ver2 = ver * 2; + u32 verf; + u32 mode; + + if (rmin != rmout) { + *rmout = *rmin; + } + + mode = rmin->viTVmode & 3; + rmout->fbWidth = rmin->fbWidth - hor2; + verf = (ver2 * rmin->efbHeight) / (u32)rmin->xfbHeight; + rmout->efbHeight = rmin->efbHeight - verf; + if (rmin->xFBmode == VI_XFBMODE_SF && ((rmin->viTVmode & 2) != 2)) { + rmout->xfbHeight = rmin->xfbHeight - ver; + } + else { + rmout->xfbHeight = rmin->xfbHeight - ver2; + } + + rmout->viWidth = rmin->viWidth - hor2; + rmout->viHeight = rmin->viHeight - ver2; + rmout->viXOrigin = rmin->viXOrigin + hor; + rmout->viYOrigin = rmin->viYOrigin + ver; +} + +void GXSetDispCopySrc(u16 left, u16 top, u16 wd, u16 ht) +{ + CHECK_GXBEGIN(0x4D3, "GXSetDispCopySrc"); + + gx->cpDispSrc = 0; + SET_REG_FIELD(0x4D6, gx->cpDispSrc, 10, 0, left); + SET_REG_FIELD(0x4D7, gx->cpDispSrc, 10, 10, top); + SET_REG_FIELD(0x4D7, gx->cpDispSrc, 8, 24, 0x49); + + gx->cpDispSize = 0; + SET_REG_FIELD(0x4DB, gx->cpDispSize, 10, 0, wd - 1); + SET_REG_FIELD(0x4DC, gx->cpDispSize, 10, 10, ht - 1); + SET_REG_FIELD(0x4DC, gx->cpDispSize, 8, 24, 0x4A); +} + +void GXSetTexCopySrc(u16 left, u16 top, u16 wd, u16 ht) +{ + CHECK_GXBEGIN(0x4EF, "GXSetTexCopySrc"); + + gx->cpTexSrc = 0; + SET_REG_FIELD(0x4F2, gx->cpTexSrc, 10, 0, left); + SET_REG_FIELD(0x4F3, gx->cpTexSrc, 10, 10, top); + SET_REG_FIELD(0x4F3, gx->cpTexSrc, 8, 24, 0x49); + + gx->cpTexSize = 0; + SET_REG_FIELD(0x4F7, gx->cpTexSize, 10, 0, wd - 1); + SET_REG_FIELD(0x4F8, gx->cpTexSize, 10, 10, ht - 1); + SET_REG_FIELD(0x4F8, gx->cpTexSize, 8, 24, 0x4A); +} + +void GXSetDispCopyDst(u16 wd, u16 ht) +{ + u16 stride; + + ASSERTMSGLINE(0x50D, (wd & 0xF) == 0, "GXSetDispCopyDst: Width must be a multiple of 16"); + CHECK_GXBEGIN(0x50E, "GXSetDispCopyDst"); + + stride = (int)wd * 2; + gx->cpDispStride = 0; + SET_REG_FIELD(0x514, gx->cpDispStride, 10, 0, (stride >> 5)); + SET_REG_FIELD(0x514, gx->cpDispStride, 8, 24, 0x4D); +} + +void GXSetTexCopyDst(u16 wd, u16 ht, GXTexFmt fmt, GXBool mipmap) +{ + u32 rowTiles; + u32 colTiles; + u32 cmpTiles; + u32 peTexFmt; + u32 peTexFmtH; + + CHECK_GXBEGIN(0x52F, "GXSetTexCopyDst"); + + gx->cpTexZ = 0; + peTexFmt = fmt & 0xF; + ASSERTMSGLINEV(0x54E, peTexFmt < 13, "%s: invalid texture format", "GXSetTexCopyDst"); + + if (fmt == GX_TF_Z16) { + peTexFmt = 0xB; + } + switch (fmt) { + case GX_TF_I4: + case GX_TF_I8: + case GX_TF_IA4: + case GX_TF_IA8: + case GX_CTF_YUVA8: + SET_REG_FIELD(0, gx->cpTex, 2, 15, 3); + break; + default: + SET_REG_FIELD(0, gx->cpTex, 2, 15, 2); + break; + } + + gx->cpTexZ = (fmt & _GX_TF_ZTF) == _GX_TF_ZTF; + peTexFmtH = (peTexFmt >> 3) & 1; + !peTexFmt; + SET_REG_FIELD(0x565, gx->cpTex, 1, 3, peTexFmtH); + peTexFmt = peTexFmt & 7; + __GetImageTileCount(fmt, wd, ht, &rowTiles, &colTiles, &cmpTiles); + + gx->cpTexStride = 0; + SET_REG_FIELD(0x56E, gx->cpTexStride, 10, 0, rowTiles * cmpTiles); + SET_REG_FIELD(0x570, gx->cpTexStride, 8, 24, 0x4D); + SET_REG_FIELD(0x570, gx->cpTex, 1, 9, mipmap); + SET_REG_FIELD(0x571, gx->cpTex, 3, 4, peTexFmt); +} + +void GXSetDispCopyFrame2Field(GXCopyMode mode) +{ + CHECK_GXBEGIN(0x582, "GXSetDispCopyFrame2Field"); + SET_REG_FIELD(0x583, gx->cpDisp, 2, 12, mode); + SET_REG_FIELD(0x583, gx->cpTex, 2, 12, 0); +} + +void GXSetCopyClamp(GXFBClamp clamp) +{ + u8 clmpB; + u8 clmpT; + + CHECK_GXBEGIN(0x597, "GXSetCopyClamp"); + + clmpT = (clamp & 1) == 1; + clmpB = (clamp & 2) == 2; + + SET_REG_FIELD(0x59B, gx->cpDisp, 1, 0, clmpT); + SET_REG_FIELD(0x59C, gx->cpDisp, 1, 1, clmpB); + + SET_REG_FIELD(0x59E, gx->cpTex, 1, 0, clmpT); + SET_REG_FIELD(0x59F, gx->cpTex, 1, 1, clmpB); +} + +static u32 __GXGetNumXfbLines(u32 efbHt, u32 iScale) +{ + u32 count; + u32 realHt; + u32 iScaleD; + + count = (efbHt - 1) * 0x100; + realHt = (count / iScale) + 1; + + iScaleD = iScale; + + if (iScaleD > 0x80 && iScaleD < 0x100) { + while (iScaleD % 2 == 0) { + iScaleD /= 2; + } + + if (efbHt % iScaleD == 0) { + realHt++; + } + } + + if (realHt > 0x400) { + realHt = 0x400; + } + + return realHt; +} + +u16 GXGetNumXfbLines(u16 efbHeight, f32 yScale) +{ + u32 iScale; + ASSERTMSGLINE(0x5CE, yScale >= 1.0f, "GXGetNumXfbLines: Vertical scale must be >= 1.0"); + + iScale = (u32)(256.0f / yScale) & 0x1FF; + return __GXGetNumXfbLines(efbHeight, iScale); +} + +f32 GXGetYScaleFactor(u16 efbHeight, u16 xfbHeight) +{ + f32 fScale; + f32 yScale; + u32 iScale; + u32 tgtHt; + u32 realHt; + + ASSERTMSGLINE(0x5E6, xfbHeight <= 1024, "GXGetYScaleFactor: Display copy only supports up to 1024 lines.\n"); + ASSERTMSGLINE(0x5E8, efbHeight <= xfbHeight, "GXGetYScaleFactor: EFB height should not be greater than XFB height.\n"); + + tgtHt = xfbHeight; + yScale = (f32)xfbHeight / (f32)efbHeight; + iScale = (u32)(256.0f / yScale) & 0x1FF; + realHt = __GXGetNumXfbLines(efbHeight, iScale); + + while (realHt > xfbHeight) { + tgtHt--; + yScale = (f32)tgtHt / (f32)efbHeight; + iScale = (u32)(256.0f / yScale) & 0x1FF; + realHt = __GXGetNumXfbLines(efbHeight, iScale); + } + + fScale = yScale; + while (realHt < xfbHeight) { + fScale = yScale; + tgtHt++; + yScale = (f32)tgtHt / (f32)efbHeight; + iScale = (u32)(256.0f / yScale) & 0x1FF; + realHt = __GXGetNumXfbLines(efbHeight, iScale); + } + + return fScale; +} + +u32 GXSetDispCopyYScale(f32 vscale) +{ + u32 scale; + GXBool check; + u32 height; + u32 reg; + + scale = (u32)(256.0f / vscale) & 0x1FF; + check = (scale != 0x100); + + reg = 0; + SET_REG_FIELD(0, reg, 9, 0, scale); + SET_REG_FIELD(0, reg, 8, 24, 0x4E); + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = GX_FALSE; + + SET_REG_FIELD(0, gx->cpDisp, 1, 10, check); + + height = (gx->cpDispSize >> 10 & 0x3FF) + 1; + + return __GXGetNumXfbLines(height, scale); +} + +void GXSetCopyClear(GXColor clear_clr, u32 clear_z) +{ + u32 reg; + + CHECK_GXBEGIN(0x63C, "GXSetCopyClear"); + ASSERTMSGLINE(0x63E, clear_z <= 0xFFFFFF, "GXSetCopyClear: Z clear value is out of range"); + + reg = 0; + SET_REG_FIELD(0x641, reg, 8, 0, clear_clr.r); + SET_REG_FIELD(0x642, reg, 8, 8, clear_clr.a); + SET_REG_FIELD(0x642, reg, 8, 24, 0x4F); + GX_WRITE_RAS_REG(reg); + + reg = 0; + SET_REG_FIELD(0x647, reg, 8, 0, clear_clr.b); + SET_REG_FIELD(0x648, reg, 8, 8, clear_clr.g); + SET_REG_FIELD(0x648, reg, 8, 24, 0x50); + GX_WRITE_RAS_REG(reg); + + reg = 0; + SET_REG_FIELD(0x64D, reg, 24, 0, clear_z); + SET_REG_FIELD(0x64D, reg, 8, 24, 0x51); + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} + +void GXSetCopyFilter(GXBool aa, u8 sample_pattern[12][2], GXBool vf, u8 vfilter[7]) +{ + u32 msLoc[4]; + u32 coeff0; + u32 coeff1; + + CHECK_GXBEGIN(0x669, "GXSetCopyFilter"); + + if (aa != 0) { + msLoc[0] = 0; + SET_REG_FIELD(0x66D, msLoc[0], 4, 0, sample_pattern[0][0]); + SET_REG_FIELD(0x66E, msLoc[0], 4, 4, sample_pattern[0][1]); + SET_REG_FIELD(0x66F, msLoc[0], 4, 8, sample_pattern[1][0]); + SET_REG_FIELD(0x670, msLoc[0], 4, 12, sample_pattern[1][1]); + SET_REG_FIELD(0x671, msLoc[0], 4, 16, sample_pattern[2][0]); + SET_REG_FIELD(0x672, msLoc[0], 4, 20, sample_pattern[2][1]); + SET_REG_FIELD(0x673, msLoc[0], 8, 24, 1); + + msLoc[1] = 0; + SET_REG_FIELD(0x676, msLoc[1], 4, 0, sample_pattern[3][0]); + SET_REG_FIELD(0x677, msLoc[1], 4, 4, sample_pattern[3][1]); + SET_REG_FIELD(0x678, msLoc[1], 4, 8, sample_pattern[4][0]); + SET_REG_FIELD(0x679, msLoc[1], 4, 12, sample_pattern[4][1]); + SET_REG_FIELD(0x67A, msLoc[1], 4, 16, sample_pattern[5][0]); + SET_REG_FIELD(0x67B, msLoc[1], 4, 20, sample_pattern[5][1]); + SET_REG_FIELD(0x67C, msLoc[1], 8, 24, 2); + + msLoc[2] = 0; + SET_REG_FIELD(0x67F, msLoc[2], 4, 0, sample_pattern[6][0]); + SET_REG_FIELD(0x680, msLoc[2], 4, 4, sample_pattern[6][1]); + SET_REG_FIELD(0x681, msLoc[2], 4, 8, sample_pattern[7][0]); + SET_REG_FIELD(0x682, msLoc[2], 4, 12, sample_pattern[7][1]); + SET_REG_FIELD(0x683, msLoc[2], 4, 16, sample_pattern[8][0]); + SET_REG_FIELD(0x684, msLoc[2], 4, 20, sample_pattern[8][1]); + SET_REG_FIELD(0x685, msLoc[2], 8, 24, 3); + + msLoc[3] = 0; + SET_REG_FIELD(0x688, msLoc[3], 4, 0, sample_pattern[9][0]); + SET_REG_FIELD(0x689, msLoc[3], 4, 4, sample_pattern[9][1]); + SET_REG_FIELD(0x68A, msLoc[3], 4, 8, sample_pattern[10][0]); + SET_REG_FIELD(0x68B, msLoc[3], 4, 12, sample_pattern[10][1]); + SET_REG_FIELD(0x68C, msLoc[3], 4, 16, sample_pattern[11][0]); + SET_REG_FIELD(0x68D, msLoc[3], 4, 20, sample_pattern[11][1]); + SET_REG_FIELD(0x68E, msLoc[3], 8, 24, 4); + } + else { + msLoc[0] = 0x01666666; + msLoc[1] = 0x02666666; + msLoc[2] = 0x03666666; + msLoc[3] = 0x04666666; + } + GX_WRITE_RAS_REG(msLoc[0]); + GX_WRITE_RAS_REG(msLoc[1]); + GX_WRITE_RAS_REG(msLoc[2]); + GX_WRITE_RAS_REG(msLoc[3]); + + coeff0 = 0; + SET_REG_FIELD(0, coeff0, 8, 24, 0x53); + coeff1 = 0; + SET_REG_FIELD(0, coeff1, 8, 24, 0x54); + if (vf != 0) { + SET_REG_FIELD(0x6A6, coeff0, 6, 0, vfilter[0]); + SET_REG_FIELD(0x6A7, coeff0, 6, 6, vfilter[1]); + SET_REG_FIELD(0x6A8, coeff0, 6, 12, vfilter[2]); + SET_REG_FIELD(0x6A9, coeff0, 6, 18, vfilter[3]); + SET_REG_FIELD(0x6AA, coeff1, 6, 0, vfilter[4]); + SET_REG_FIELD(0x6AB, coeff1, 6, 6, vfilter[5]); + SET_REG_FIELD(0x6AC, coeff1, 6, 12, vfilter[6]); + } + else { + SET_REG_FIELD(0, coeff0, 6, 0, 0); + SET_REG_FIELD(0, coeff0, 6, 6, 0); + SET_REG_FIELD(0, coeff0, 6, 12, 21); + SET_REG_FIELD(0, coeff0, 6, 18, 22); + SET_REG_FIELD(0, coeff1, 6, 0, 21); + SET_REG_FIELD(0, coeff1, 6, 6, 0); + SET_REG_FIELD(0, coeff1, 6, 12, 0); + } + GX_WRITE_RAS_REG(coeff0); + GX_WRITE_RAS_REG(coeff1); + gx->bpSentNot = 0; +} + +void GXSetDispCopyGamma(GXGamma gamma) +{ + CHECK_GXBEGIN(0x6CD, "GXSetDispCopyGamma"); + SET_REG_FIELD(0x6CE, gx->cpDisp, 2, 7, gamma); +} + +#if DEBUG +static void __GXVerifCopy(void *dest, u8 clear) +{ + u8 clmpT; + u8 clmpB; + u32 x0; + u32 y0; + u32 dx; + u32 dy; + + CHECK_GXBEGIN(0x6E2, "GXCopyDisp"); + + clmpT = GET_REG_FIELD(gx->cpDisp, 1, 0); + clmpB = (u32)GET_REG_FIELD(gx->cpDisp, 1, 1); + x0 = GET_REG_FIELD(gx->cpDispSrc, 10, 0); + dx = GET_REG_FIELD(gx->cpDispSize, 10, 0) + 1; + y0 = GET_REG_FIELD(gx->cpDispSrc, 10, 10); + dy = GET_REG_FIELD(gx->cpDispSize, 10, 10) + 1; + + ASSERTMSGLINE(0x6EC, clmpT || y0 != 0, "GXCopy: Have to set GX_CLAMP_TOP if source top == 0"); + ASSERTMSGLINE(0x6EE, clmpB || y0 + dy <= 528, "GXCopy: Have to set GX_CLAMP_BOTTOM if source bottom > 528"); + ASSERTMSGLINE(0x6F3, (gx->peCtrl & 7) != 3 || clear == 0, "GXCopy: Can not do clear while pixel type is Z"); + if ((u32)(gx->peCtrl & 7) == 5) { + ASSERTMSGLINE(0x6F9, clear == 0, "GXCopy: Can not clear YUV framebuffer"); + ASSERTMSGLINE(0x6FB, (x0 & 3) == 0, "GXCopy: Source x is not multiple of 4 for YUV copy"); + ASSERTMSGLINE(0x6FD, (y0 & 3) == 0, "GXCopy: Source y is not multiple of 4 for YUV copy"); + ASSERTMSGLINE(0x6FF, (dx & 3) == 0, "GXCopy: Source width is not multiple of 4 for YUV copy"); + ASSERTMSGLINE(0x701, (dy & 3) == 0, "GXCopy: Source height is not multiple of 4 for YUV copy"); + } + else { + ASSERTMSGLINE(0x705, (x0 & 1) == 0, "GXCopy: Source x is not multiple of 2 for RGB copy"); + ASSERTMSGLINE(0x707, (y0 & 1) == 0, "GXCopy: Source y is not multiple of 2 for RGB copy"); + ASSERTMSGLINE(0x709, (dx & 1) == 0, "GXCopy: Source width is not multiple of 2 for RGB copy"); + ASSERTMSGLINE(0x70B, (dy & 1) == 0, "GXCopy: Source height is not multiple of 2 for RGB copy"); + } + ASSERTMSGLINE(0x70F, ((u32)dest & 0x1F) == 0, "GXCopy: Display destination address not 32B aligned"); +} +#endif + +void GXCopyDisp(void *dest, GXBool clear) +{ + u32 reg; + u32 tempPeCtrl; + u32 phyAddr; + u8 changePeCtrl; + + CHECK_GXBEGIN(0x729, "GXCopyDisp"); + +#if DEBUG + __GXVerifCopy(dest, clear); +#endif + if (clear) { + reg = gx->zmode; + SET_REG_FIELD(0, reg, 1, 0, 1); + SET_REG_FIELD(0, reg, 3, 1, 7); + GX_WRITE_RAS_REG(reg); + + reg = gx->cmode0; + SET_REG_FIELD(0, reg, 1, 0, 0); + SET_REG_FIELD(0, reg, 1, 1, 0); + GX_WRITE_RAS_REG(reg); + } + changePeCtrl = FALSE; + if ((clear || (u32)GET_REG_FIELD(gx->peCtrl, 3, 0) == 3) && (u32)GET_REG_FIELD(gx->peCtrl, 1, 6) == 1) { + changePeCtrl = TRUE; + tempPeCtrl = gx->peCtrl; + SET_REG_FIELD(0, tempPeCtrl, 1, 6, 0); + GX_WRITE_RAS_REG(tempPeCtrl); + } + GX_WRITE_RAS_REG(gx->cpDispSrc); + GX_WRITE_RAS_REG(gx->cpDispSize); + GX_WRITE_RAS_REG(gx->cpDispStride); + + phyAddr = (u32)dest & 0x3FFFFFFF; + reg = 0; + SET_REG_FIELD(0x750, reg, 21, 0, phyAddr >> 5); + SET_REG_FIELD(0x754, reg, 8, 24, 0x4B); + GX_WRITE_RAS_REG(reg); + + SET_REG_FIELD(0x754, gx->cpDisp, 1, 11, clear); + SET_REG_FIELD(0x754, gx->cpDisp, 1, 14, 1); + SET_REG_FIELD(0x754, gx->cpDisp, 8, 24, 0x52); + GX_WRITE_RAS_REG(gx->cpDisp); + + if (clear) { + GX_WRITE_RAS_REG(gx->zmode); + GX_WRITE_RAS_REG(gx->cmode0); + } + if (changePeCtrl) { + GX_WRITE_RAS_REG(gx->peCtrl); + } + gx->bpSentNot = 0; +} + +void GXCopyTex(void *dest, GXBool clear) +{ + u32 reg; + u32 tempPeCtrl; + u32 phyAddr; + u8 changePeCtrl; + + CHECK_GXBEGIN(0x77C, "GXCopyTex"); + +#if DEBUG + __GXVerifCopy(dest, clear); +#endif + if (clear) { + reg = gx->zmode; + SET_REG_FIELD(0, reg, 1, 0, 1); + SET_REG_FIELD(0, reg, 3, 1, 7); + GX_WRITE_RAS_REG(reg); + + reg = gx->cmode0; + SET_REG_FIELD(0, reg, 1, 0, 0); + SET_REG_FIELD(0, reg, 1, 1, 0); + GX_WRITE_RAS_REG(reg); + } + changePeCtrl = 0; + tempPeCtrl = gx->peCtrl; + if (gx->cpTexZ && ((tempPeCtrl & 7) != 3)) { + changePeCtrl = 1; + SET_REG_FIELD(0, tempPeCtrl, 3, 0, 3); + } + if (((clear != 0) || ((u32)(tempPeCtrl & 7) == 3)) && ((u32)((tempPeCtrl >> 6U) & 1) == 1)) { + changePeCtrl = 1; + SET_REG_FIELD(0, tempPeCtrl, 1, 6, 0); + } + if (changePeCtrl) { + GX_WRITE_RAS_REG(tempPeCtrl); + } + GX_WRITE_RAS_REG(gx->cpTexSrc); + GX_WRITE_RAS_REG(gx->cpTexSize); + GX_WRITE_RAS_REG(gx->cpTexStride); + + phyAddr = (u32)dest & 0x3FFFFFFF; + reg = 0; + SET_REG_FIELD(0x7AD, reg, 21, 0, phyAddr >> 5); + SET_REG_FIELD(0x7AD, reg, 8, 24, 0x4B); + GX_WRITE_RAS_REG(reg); + + SET_REG_FIELD(0x7B1, gx->cpTex, 1, 11, clear); + SET_REG_FIELD(0x7B1, gx->cpTex, 1, 14, 0); + SET_REG_FIELD(0x7B1, gx->cpTex, 8, 24, 0x52); + GX_WRITE_RAS_REG(gx->cpTex); + + if (clear != 0) { + GX_WRITE_RAS_REG(gx->zmode); + GX_WRITE_RAS_REG(gx->cmode0); + } + if (changePeCtrl) { + GX_WRITE_RAS_REG(gx->peCtrl); + } + gx->bpSentNot = 0; +} + +void GXClearBoundingBox(void) +{ + u32 reg; + + CHECK_GXBEGIN(0x7D3, "GXClearBoundingBox"); + reg = 0x550003FF; + GX_WRITE_RAS_REG(reg); + reg = 0x560003FF; + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} + +void GXReadBoundingBox(u16 *left, u16 *top, u16 *right, u16 *bottom) +{ + *left = GX_GET_PE_REG(8); + *top = GX_GET_PE_REG(10); + *right = GX_GET_PE_REG(9); + *bottom = GX_GET_PE_REG(11); +} diff --git a/src/dolphin/gx/GXGeometry.c b/src/dolphin/gx/GXGeometry.c new file mode 100644 index 00000000..853e2989 --- /dev/null +++ b/src/dolphin/gx/GXGeometry.c @@ -0,0 +1,146 @@ +#include +#include +#include + +#include + +void __GXSetDirtyState(void) +{ + if (gx->dirtyState & 1) { + __GXSetSUTexRegs(); + } + if (gx->dirtyState & 2) { + __GXUpdateBPMask(); + } + if (gx->dirtyState & 4) { + __GXSetGenMode(); + } + if (gx->dirtyState & 8) { + __GXSetVCD(); + } + if (gx->dirtyState & 0x10) { + __GXSetVAT(); + } + if (gx->dirtyState & 0x18) { + __GXCalculateVLim(); + } + gx->dirtyState = 0; +} + +void GXBegin(GXPrimitive type, GXVtxFmt vtxfmt, u16 nverts) +{ + ASSERTMSGLINE(0x167, vtxfmt < 8, "GXBegin: Format Index is out of range"); + ASSERTMSGLINE(0x168, !__GXinBegin, "GXBegin: called inside another GXBegin/GXEnd"); + + if (gx->dirtyState != 0) { + __GXSetDirtyState(); + } + if (*(u32 *)&gx->vNumNot == 0) { // checks both vNum and bpSentNot + __GXSendFlushPrim(); + } + GX_WRITE_U8(vtxfmt | type); + GX_WRITE_U16(nverts); +} + +void __GXSendFlushPrim(void) +{ + u32 i; + u32 numD = gx->vNum * gx->vLim; + + GX_WRITE_U8(0x98); + GX_WRITE_U16(gx->vNum); + for (i = 0; i < numD; i += 4) { + GX_WRITE_U32(0); + } + gx->bpSentNot = 1; +} + +void GXSetLineWidth(u8 width, GXTexOffset texOffsets) +{ + CHECK_GXBEGIN(0x1B8, "GXSetLineWidth"); + SET_REG_FIELD(0x1B9, gx->lpSize, 8, 0, width); + SET_REG_FIELD(0x1BA, gx->lpSize, 3, 16, texOffsets); + GX_WRITE_RAS_REG(gx->lpSize); + gx->bpSentNot = 0; +} + +void GXGetLineWidth(u8 *width, GXTexOffset *texOffsets) +{ + ASSERTMSGLINE(0x1CF, width != NULL && texOffsets != NULL, "GXGet*: invalid null pointer"); + + *width = GET_REG_FIELD(gx->lpSize, 8, 0); + *texOffsets = GET_REG_FIELD(gx->lpSize, 3, 16); +} + +void GXSetPointSize(u8 pointSize, GXTexOffset texOffsets) +{ + CHECK_GXBEGIN(0x1E4, "GXSetPointSize"); + SET_REG_FIELD(0x1E5, gx->lpSize, 8, 8, pointSize); + SET_REG_FIELD(0x1E6, gx->lpSize, 3, 19, texOffsets); + GX_WRITE_RAS_REG(gx->lpSize); + gx->bpSentNot = 0; +} + +void GXGetPointSize(u8 *pointSize, GXTexOffset *texOffsets) +{ + ASSERTMSGLINE(0x1FB, pointSize != NULL && texOffsets != NULL, "GXGet*: invalid null pointer"); + + *pointSize = (int)GET_REG_FIELD(gx->lpSize, 8, 8); + *texOffsets = GET_REG_FIELD(gx->lpSize, 3, 19); +} + +void GXEnableTexOffsets(GXTexCoordID coord, u8 line_enable, u8 point_enable) +{ + CHECK_GXBEGIN(0x211, "GXEnableTexOffsets"); + + ASSERTMSGLINE(0x213, coord < 8, "GXEnableTexOffsets: Invalid coordinate Id"); + + SET_REG_FIELD(0x215, gx->suTs0[coord], 1, 18, line_enable); + SET_REG_FIELD(0x216, gx->suTs0[coord], 1, 19, point_enable); + GX_WRITE_RAS_REG(gx->suTs0[coord]); + gx->bpSentNot = 0; +} + +void GXSetCullMode(GXCullMode mode) +{ + GXCullMode hwMode; + + CHECK_GXBEGIN(0x21D, "GXSetCullMode"); + switch (mode) { + case GX_CULL_FRONT: + hwMode = GX_CULL_BACK; + break; + case GX_CULL_BACK: + hwMode = GX_CULL_FRONT; + break; + default: + hwMode = mode; + break; + } + SET_REG_FIELD(0x225, gx->genMode, 2, 14, hwMode); + gx->dirtyState |= 4; +} + +void GXGetCullMode(GXCullMode *mode) +{ + GXCullMode hwMode = gx->genMode; + *mode = ((hwMode >> 0xD) & 0x2) | (((((int)hwMode >> 0xE) & 0x2) >> 0x1)); +} + +void GXSetCoPlanar(GXBool enable) +{ + u32 reg; + + CHECK_GXBEGIN(0x265, "GXSetCoPlanar"); + + SET_REG_FIELD(0x267, gx->genMode, 1, 19, enable); + reg = 0xFE080000; + GX_WRITE_RAS_REG(reg); + GX_WRITE_RAS_REG(gx->genMode); +} + +void __GXSetGenMode(void) +{ + GX_WRITE_RAS_REG(gx->genMode); + gx->bpSentNot = 0; +} diff --git a/src/dolphin/gx/GXInit.c b/src/dolphin/gx/GXInit.c new file mode 100644 index 00000000..e6774ba7 --- /dev/null +++ b/src/dolphin/gx/GXInit.c @@ -0,0 +1,356 @@ +#include + +#include +#include +#include +#include + +#include + +void __GXInitGX(); + +static struct __GXData_struct gxData; +struct __GXData_struct *gx = &gxData; +// DWARF info lists all of these as "void *", but these types make more sense. +u16 *__memReg; +u16 *__peReg; +u16 *__cpReg; +u32 *__piReg; + +// clang-format off +asm BOOL IsWriteGatherBufferEmpty(void) +{ + sync + mfspr r3, WPAR + andi. r3, r3, 1 +} +// clang-format on + +static void EnableWriteGatherPipe(void) +{ + u32 hid2 = PPCMfhid2(); + + PPCMtwpar(OSUncachedToPhysical((void *)GXFIFO_ADDR)); + hid2 |= 0x40000000; + PPCMthid2(hid2); +} + +static void DisableWriteGatherPipe(void) +{ + u32 hid2 = PPCMfhid2(); + + hid2 &= ~0x40000000; + PPCMthid2(hid2); +} + +static GXTexRegion *__GXDefaultTexRegionCallback(GXTexObj *t_obj, GXTexMapID unused) +{ + GXTexFmt fmt = GXGetTexObjFmt(t_obj); + + if (fmt != GX_TF_C4 && fmt != GX_TF_C8 && fmt != GX_TF_C14X2) { + return &gx->TexRegions[gx->nextTexRgn++ & 7]; + } + else { + return &gx->TexRegionsCI[gx->nextTexRgnCI++ & 3]; + } +} + +static GXTlutRegion *__GXDefaultTlutRegionCallback(u32 idx) +{ + if (idx >= 0x14U) { + return NULL; + } + return &gx->TlutRegions[idx]; +} + +GXFifoObj FifoObj; + +GXFifoObj* GXInit(void* base, u32 size) +{ + u32 i; + u32 reg; + u32 freqBase; + char stack_padding[8]; + + gx->inDispList = FALSE; + gx->dlSaveContext = TRUE; + + gx->tcsManEnab = FALSE; + gx->tevTcEnab = 0; + GXSetMisc(GX_MT_XF_FLUSH, 0); + __piReg = OSPhysicalToUncached(0xC003000); + __cpReg = OSPhysicalToUncached(0xC000000); + __peReg = OSPhysicalToUncached(0xC001000); + __memReg = OSPhysicalToUncached(0xC004000); + __GXFifoInit(); + GXInitFifoBase(&FifoObj, base, size); + GXSetCPUFifo(&FifoObj); + GXSetGPFifo(&FifoObj); + __GXPEInit(); + EnableWriteGatherPipe(); + + gx->genMode = 0; + SET_REG_FIELD(0, gx->genMode, 8, 24, 0); + gx->bpMask = 255; + SET_REG_FIELD(0, gx->bpMask, 8, 24, 0x0F); + gx->lpSize = 0; + SET_REG_FIELD(0, gx->lpSize, 8, 24, 0x22); + for (i = 0; i < 16; ++i) { + gx->tevc[i] = 0; + gx->teva[i] = 0; + gx->tref[i / 2] = 0; + gx->texmapId[i] = GX_TEXMAP_NULL; + SET_REG_FIELD(0x2F2, gx->tevc[i], 8, 24, 0xC0 + i * 2); + SET_REG_FIELD(0x2F3, gx->teva[i], 8, 24, 0xC1 + i * 2); + SET_REG_FIELD(0x2F5, gx->tevKsel[i / 2], 8, 24, 0xF6 + i / 2); + SET_REG_FIELD(0x2F7, gx->tref[i / 2], 8, 24, 0x28 + i / 2); + } + gx->iref = 0; + SET_REG_FIELD(0, gx->iref, 8, 24, 0x27); + for (i = 0; i < 8; ++i) { + gx->suTs0[i] = 0; + gx->suTs1[i] = 0; + SET_REG_FIELD(0x300, gx->suTs0[i], 8, 24, 0x30 + i * 2); + SET_REG_FIELD(0x301, gx->suTs1[i], 8, 24, 0x31 + i * 2); + } + SET_REG_FIELD(0, gx->suScis0, 8, 24, 0x20); + SET_REG_FIELD(0, gx->suScis1, 8, 24, 0x21); + SET_REG_FIELD(0, gx->cmode0, 8, 24, 0x41); + SET_REG_FIELD(0, gx->cmode1, 8, 24, 0x42); + SET_REG_FIELD(0, gx->zmode, 8, 24, 0x40); + SET_REG_FIELD(0, gx->peCtrl, 8, 24, 0x43); + SET_REG_FIELD(0, gx->cpTex, 2, 7, 0); + gx->dirtyState = 0; + gx->dirtyVAT = FALSE; + + freqBase = __OSBusClock / 500; + __GXFlushTextureState(); + reg = (freqBase >> 11) | 0x400 | 0x69000000; + GX_WRITE_RAS_REG(reg); + + __GXFlushTextureState(); + reg = (freqBase / 0x1080) | 0x200 | 0x46000000; + GX_WRITE_RAS_REG(reg); + + for (i = GX_VTXFMT0; i < GX_MAX_VTXFMT; i++) { + SET_REG_FIELD(0, gx->vatA[i], 1, 30, 1); + SET_REG_FIELD(0, gx->vatB[i], 1, 31, 1); + do { + s32 regAddr; + GX_WRITE_U8(GX_LOAD_CP_REG); + GX_WRITE_U8(i | 0x80); + GX_WRITE_U32(gx->vatB[i]); + regAddr = i - 12; + } while (0); + } + { + u32 reg1 = 0; + u32 reg2 = 0; + SET_REG_FIELD(0, reg1, 1, 0, 1); + SET_REG_FIELD(0, reg1, 1, 1, 1); + SET_REG_FIELD(0, reg1, 1, 2, 1); + SET_REG_FIELD(0, reg1, 1, 3, 1); + SET_REG_FIELD(0, reg1, 1, 4, 1); + SET_REG_FIELD(0, reg1, 1, 5, 1); + GX_WRITE_XF_REG(0, reg1); + SET_REG_FIELD(0, reg2, 1, 0, 1); + GX_WRITE_XF_REG(0x12, reg2); + } + { + u32 reg = 0; + SET_REG_FIELD(0, reg, 1, 0, 1); + SET_REG_FIELD(0, reg, 1, 1, 1); + SET_REG_FIELD(0, reg, 1, 2, 1); + SET_REG_FIELD(0, reg, 1, 3, 1); + SET_REG_FIELD(0, reg, 8, 24, 0x58); + GX_WRITE_RAS_REG(reg); + } + for (i = 0; i < 8; i++) + GXInitTexCacheRegion(&gx->TexRegions[i], 0, i * 0x8000, 0, + 0x80000 + i * 0x8000, 0); + for (i = 0; i < 4; i++) + GXInitTexCacheRegion(&gx->TexRegionsCI[i], 0, (i * 2 + 8) * 0x8000, 0, + (i * 2 + 9) * 0x8000, 0); + for (i = 0; i < 16; i++) + GXInitTlutRegion(&gx->TlutRegions[i], 0xC0000 + i * 0x2000, 16); + for (i = 0; i < 4; i++) + GXInitTlutRegion(&gx->TlutRegions[i + 16], 0xE0000 + i * 0x8000, 64); + __cpReg[3] = 0; + + { + SET_REG_FIELD(0, gx->perfSel, 4, 4, 0); + GX_WRITE_U8(GX_LOAD_CP_REG); + GX_WRITE_U8(0x20); + GX_WRITE_U32(gx->perfSel); + GX_WRITE_U8(GX_LOAD_XF_REG); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0); + GX_WRITE_RAS_REG(0x23000000); + GX_WRITE_RAS_REG(0x24000000); + GX_WRITE_RAS_REG(0x67000000); + } + + __GXSetTmemConfig(0); + __GXInitGX(); + return &FifoObj; +} + +void __GXInitGX() +{ + GXRenderModeObj *rmode; + GXAttr var_r30; + f32 identity_mtx[3][4]; + GXColor clear = { 64, 64, 64, 255 }; + GXColor black = { 0, 0, 0, 0 }; + GXColor white = { 255, 255, 255, 255 }; + u32 i; + + switch (VIGetTvFormat()) { + case 0: + rmode = &GXNtsc480IntDf; + break; + case 1: + rmode = &GXPal528IntDf; + break; + case 5: + rmode = &GXEurgb60Hz480IntDf; + break; + case 2: + rmode = &GXMpal480IntDf; + break; + default: + rmode = &GXNtsc480IntDf; + break; + } + + GXSetCopyClear(clear, 0xFFFFFF); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX2, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_TEX3, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD4, GX_TG_MTX2x4, GX_TG_TEX4, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD5, GX_TG_MTX2x4, GX_TG_TEX5, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD6, GX_TG_MTX2x4, GX_TG_TEX6, 0x3CU); + GXSetTexCoordGen(GX_TEXCOORD7, GX_TG_MTX2x4, GX_TG_TEX7, 0x3CU); + GXSetNumTexGens(1); + GXClearVtxDesc(); + GXInvalidateVtxCache(); + for (var_r30 = GX_VA_POS; (u32)var_r30 <= 0x18; var_r30++) { + GXSetArray(var_r30, gx, 0); + } + GXSetLineWidth(6, 0); + GXSetPointSize(6, 0); + GXEnableTexOffsets(0, 0, 0); + GXEnableTexOffsets(1, 0, 0); + GXEnableTexOffsets(2, 0, 0); + GXEnableTexOffsets(3, 0, 0); + GXEnableTexOffsets(4, 0, 0); + GXEnableTexOffsets(5, 0, 0); + GXEnableTexOffsets(6, 0, 0); + GXEnableTexOffsets(7, 0, 0); + identity_mtx[0][0] = 1.0f; + identity_mtx[0][1] = 0.0f; + identity_mtx[0][2] = 0.0f; + identity_mtx[0][3] = 0.0f; + identity_mtx[1][0] = 0.0f; + identity_mtx[1][1] = 1.0f; + identity_mtx[1][2] = 0.0f; + identity_mtx[1][3] = 0.0f; + identity_mtx[2][0] = 0.0f; + identity_mtx[2][1] = 0.0f; + identity_mtx[2][2] = 1.0f; + identity_mtx[2][3] = 0.0f; + GXLoadPosMtxImm(identity_mtx, GX_PNMTX0); + GXLoadNrmMtxImm(identity_mtx, GX_PNMTX0); + GXSetCurrentMtx(GX_PNMTX0); + GXLoadTexMtxImm(identity_mtx, GX_IDENTITY, GX_MTX3x4); + GXLoadTexMtxImm(identity_mtx, GX_PTIDENTITY, GX_MTX3x4); + GXSetViewport(0.0f, 0.0f, rmode->fbWidth, rmode->xfbHeight, 0.0f, 1.0f); + GXSetCoPlanar(GX_DISABLE); + GXSetCullMode(GX_CULL_BACK); + GXSetClipMode(GX_CLIP_ENABLE); + GXSetScissor(0, 0, rmode->fbWidth, rmode->efbHeight); + GXSetScissorBoxOffset(0, 0); + GXSetNumChans(0); + GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR0A0, black); + GXSetChanMatColor(GX_COLOR0A0, white); + GXSetChanCtrl(GX_COLOR1A1, GX_DISABLE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR1A1, black); + GXSetChanMatColor(GX_COLOR1A1, white); + GXInvalidateTexAll(); + gx->nextTexRgnCI = gx->nextTexRgn = i = GX_TEVSTAGE0; + GXSetTexRegionCallback((void *)__GXDefaultTexRegionCallback); + GXSetTlutRegionCallback(__GXDefaultTlutRegionCallback); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD2, GX_TEXMAP2, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD3, GX_TEXMAP3, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD4, GX_TEXMAP4, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD5, GX_TEXMAP5, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD6, GX_TEXMAP6, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD7, GX_TEXMAP7, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + + GXSetNumTevStages(1); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetZTexture(GX_ZT_DISABLE, GX_TF_Z8, 0); + for (; i < GX_MAX_TEVSTAGE; i++) { + GXSetTevKColorSel((GXTevStageID)i, GX_TEV_KCSEL_1_4); + GXSetTevKAlphaSel((GXTevStageID)i, GX_TEV_KASEL_1); + GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0); + } + GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); + + for (i = GX_TEVSTAGE0; i < GX_MAX_TEVSTAGE; i++) + GXSetTevDirect((GXTevStageID)i); + GXSetNumIndStages(0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE3, GX_ITS_1, GX_ITS_1); + + GXSetFog(GX_FOG_NONE, 0.0f, 1.0f, 0.1f, 1.0f, black); + GXSetFogRangeAdj(GX_DISABLE, 0, 0); + GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); + GXSetColorUpdate(GX_ENABLE); + GXSetAlphaUpdate(GX_ENABLE); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetZCompLoc(GX_TRUE); + GXSetDither(GX_ENABLE); + GXSetDstAlpha(GX_DISABLE, 0); + GXSetPixelFmt(GX_PF_RGB8_Z24, GX_ZC_LINEAR); + GXSetFieldMask(GX_ENABLE, GX_ENABLE); + GXSetFieldMode(rmode->field_rendering, ((rmode->viHeight == 2 * rmode->xfbHeight) ? GX_ENABLE : GX_DISABLE)); + + GXSetDispCopySrc(0, 0, rmode->fbWidth, rmode->efbHeight); + GXSetDispCopyDst(rmode->fbWidth, rmode->efbHeight); + GXSetDispCopyYScale((f32)(rmode->xfbHeight) / (f32)(rmode->efbHeight)); + GXSetCopyClamp((GXFBClamp)(GX_CLAMP_TOP | GX_CLAMP_BOTTOM)); + GXSetCopyFilter(rmode->aa, rmode->sample_pattern, GX_TRUE, rmode->vfilter); + GXSetDispCopyGamma(GX_GM_1_0); + GXSetDispCopyFrame2Field(GX_COPY_PROGRESSIVE); + GXClearBoundingBox(); + + GXPokeColorUpdate(GX_TRUE); + GXPokeAlphaUpdate(GX_TRUE); + GXPokeDither(GX_FALSE); + GXPokeBlendMode(GX_BM_NONE, GX_BL_ZERO, GX_BL_ONE, GX_LO_SET); + GXPokeAlphaMode(GX_ALWAYS, 0); + GXPokeAlphaRead(GX_READ_FF); + GXPokeDstAlpha(GX_DISABLE, 0); + GXPokeZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + GXSetGPMetric(GX_PERF0_NONE, GX_PERF1_NONE); + GXClearGPMetric(); +} diff --git a/src/dolphin/gx/GXLight.c b/src/dolphin/gx/GXLight.c new file mode 100644 index 00000000..a084fd84 --- /dev/null +++ b/src/dolphin/gx/GXLight.c @@ -0,0 +1,620 @@ +#include +#include + +#include + +float cosf(float x); +inline float sqrtf(float x) +{ + static const double _half = .5; + static const double _three = 3.0; + volatile float y; + if (x > 0.0f) + { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half*guess*(_three - guess*guess*x); // now have 12 sig bits + guess = _half*guess*(_three - guess*guess*x); // now have 24 sig bits + guess = _half*guess*(_three - guess*guess*x); // now have 32 sig bits + y = (float)(x*guess); + return y ; + } + return x; +} + +// GXLightObj private data +struct __GXLightObjInt_struct { + u32 reserved[3]; + u32 Color; + f32 a[3]; + f32 k[3]; + f32 lpos[3]; + f32 ldir[3]; +}; + +void GXInitLightAttn(GXLightObj *lt_obj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x62, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x63, "GXInitLightAttn"); + obj->a[0] = a0; + obj->a[1] = a1; + obj->a[2] = a2; + obj->k[0] = k0; + obj->k[1] = k1; + obj->k[2] = k2; +} + +void GXInitLightAttnA(GXLightObj *lt_obj, f32 a0, f32 a1, f32 a2) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x70, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x71, "GXInitLightAttnA"); + obj->a[0] = a0; + obj->a[1] = a1; + obj->a[2] = a2; +} + +void GXGetLightAttnA(GXLightObj *lt_obj, f32 *a0, f32 *a1, f32 *a2) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x7A, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x7B, "GXGetLightAttnA"); + *a0 = obj->a[0]; + *a1 = obj->a[1]; + *a2 = obj->a[2]; +} + +void GXInitLightAttnK(GXLightObj *lt_obj, f32 k0, f32 k1, f32 k2) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x84, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x85, "GXInitLightAttnK"); + obj->k[0] = k0; + obj->k[1] = k1; + obj->k[2] = k2; +} + +void GXGetLightAttnK(GXLightObj *lt_obj, f32 *k0, f32 *k1, f32 *k2) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x8E, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x8F, "GXGetLightAttnK"); + *k0 = obj->k[0]; + *k1 = obj->k[1]; + *k2 = obj->k[2]; +} + +void GXInitLightSpot(GXLightObj *lt_obj, f32 cutoff, GXSpotFn spot_func) +{ + float a0, a1, a2; + float d; + float cr; + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0xA7, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0xA9, "GXInitLightSpot"); + + if (cutoff <= 0.0f || cutoff > 90.0f) + spot_func = GX_SP_OFF; + + cr = cosf((3.1415927f * cutoff) / 180.0f); + switch (spot_func) { + case GX_SP_FLAT: + a0 = -1000.0f * cr; + a1 = 1000.0f; + a2 = 0.0f; + break; + case GX_SP_COS: + a0 = -cr / (1.0f - cr); + a1 = 1.0f / (1.0f - cr); + a2 = 0.0f; + break; + case GX_SP_COS2: + a0 = 0.0f; + a1 = -cr / (1.0f - cr); + a2 = 1.0f / (1.0f - cr); + break; + case GX_SP_SHARP: + d = (1.0f - cr) * (1.0f - cr); + a0 = (cr * (cr - 2.0f)) / d; + a1 = 2.0f / d; + a2 = -1.0f / d; + break; + case GX_SP_RING1: + d = (1.0f - cr) * (1.0f - cr); + a0 = (-4.0f * cr) / d; + a1 = (4.0f * (1.0f + cr)) / d; + a2 = -4.0f / d; + break; + case GX_SP_RING2: + d = (1.0f - cr) * (1.0f - cr); + a0 = 1.0f - ((2.0f * cr * cr) / d); + a1 = (4.0f * cr) / d; + a2 = -2.0f / d; + break; + case GX_SP_OFF: + default: + a0 = 1.0f; + a1 = 0.0f; + a2 = 0.0f; + break; + } + obj->a[0] = a0; + obj->a[1] = a1; + obj->a[2] = a2; +} + +void GXInitLightDistAttn(GXLightObj *lt_obj, f32 ref_dist, f32 ref_br, GXDistAttnFn dist_func) +{ + f32 k0, k1, k2; + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0xF2, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0xF4, "GXInitLightDistAttn"); + + if (ref_dist < 0.0f) + dist_func = GX_DA_OFF; + if (ref_br <= 0.0f || ref_br >= 1.0f) + dist_func = GX_DA_OFF; + + switch (dist_func) { + case GX_DA_GENTLE: + k0 = 1.0f; + k1 = (1.0f - ref_br) / (ref_br * ref_dist); + k2 = 0.0f; + break; + case GX_DA_MEDIUM: + k0 = 1.0f; + k1 = (0.5f * (1.0f - ref_br)) / (ref_br * ref_dist); + k2 = (0.5f * (1.0f - ref_br)) / (ref_br * ref_dist * ref_dist); + break; + case GX_DA_STEEP: + k0 = 1.0f; + k1 = 0.0f; + k2 = (1.0f - ref_br) / (ref_br * ref_dist * ref_dist); + break; + case GX_DA_OFF: + default: + k0 = 1.0f; + k1 = 0.0f; + k2 = 0.0f; + break; + } + + obj->k[0] = k0; + obj->k[1] = k1; + obj->k[2] = k2; +} + +void GXInitLightPos(GXLightObj *lt_obj, f32 x, f32 y, f32 z) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x129, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x12B, "GXInitLightPos"); + + obj->lpos[0] = x; + obj->lpos[1] = y; + obj->lpos[2] = z; +} + +void GXGetLightPos(const GXLightObj *lt_obj, f32 *x, f32 *y, f32 *z) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x134, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x136, "GXGetLightPos"); + + *x = obj->lpos[0]; + *y = obj->lpos[1]; + *z = obj->lpos[2]; +} + +void GXInitLightDir(GXLightObj *lt_obj, f32 nx, f32 ny, f32 nz) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x149, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + + obj->ldir[0] = -nx; + obj->ldir[1] = -ny; + obj->ldir[2] = -nz; +} + +void GXGetLightDir(GXLightObj *lt_obj, f32 *nx, f32 *ny, f32 *nz) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x155, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + + *nx = -obj->ldir[0]; + *ny = -obj->ldir[1]; + *nz = -obj->ldir[2]; +} + +void GXInitSpecularDir(GXLightObj *lt_obj, f32 nx, f32 ny, f32 nz) +{ + float mag; + float vx; + float vy; + float vz; + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x16F, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x170, "GXInitSpecularDir"); + + vx = -nx; + vy = -ny; + vz = -nz + 1.0f; + mag = 1.0f / sqrtf((vx * vx) + (vy * vy) + (vz * vz)); + obj->ldir[0] = vx * mag; + obj->ldir[1] = vy * mag; + obj->ldir[2] = vz * mag; + obj->lpos[0] = -nx * 1048576.0f; + obj->lpos[1] = -ny * 1048576.0f; + obj->lpos[2] = -nz * 1048576.0f; +} + +void GXInitSpecularDirHA(GXLightObj *lt_obj, f32 nx, f32 ny, f32 nz, f32 hx, f32 hy, f32 hz) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x18E, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x18F, "GXInitSpecularHA"); + + obj->ldir[0] = hx; + obj->ldir[1] = hy; + obj->ldir[2] = hz; + obj->lpos[0] = -nx * 1048576.0f; + obj->lpos[1] = -ny * 1048576.0f; + obj->lpos[2] = -nz * 1048576.0f; +} + +void GXInitLightColor(GXLightObj *lt_obj, GXColor color) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x1A8, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x1A9, "GXInitLightColor"); + + obj->Color = (color.r << 24) | (color.g << 16) | (color.b << 8) | color.a; +} + +void GXGetLightColor(const GXLightObj *lt_obj, GXColor *color) +{ + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x1B2, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x1B3, "GXGetLightColor"); + + color->r = (obj->Color >> 24) & 0xFF; + color->g = (obj->Color >> 16) & 0xFF; + color->b = (obj->Color >> 8) & 0xFF; + color->a = obj->Color & 0xFF; +} + +#if DEBUG +#define WRITE_SOME_LIGHT_REG1(val, addr) \ + do { \ + u32 xfData = val; \ + GX_WRITE_U32(val); \ + VERIF_MTXLIGHT(addr, xfData); \ + } while (0) + +#define WRITE_SOME_LIGHT_REG2(val, addr) \ + do { \ + f32 xfData = val; \ + GX_WRITE_F32(val); \ + VERIF_MTXLIGHT(addr, *(u32 *)&xfData); \ + } while (0) +#else +#define WRITE_SOME_LIGHT_REG1(val, addr) GX_WRITE_U32(val) +#define WRITE_SOME_LIGHT_REG2(val, addr) GX_WRITE_F32(val) +#endif + +void GXLoadLightObjImm(GXLightObj *lt_obj, GXLightID light) +{ + unsigned long addr; + unsigned long idx; + struct __GXLightObjInt_struct *obj; + + ASSERTMSGLINE(0x1C9, lt_obj != NULL, "Light Object Pointer is null"); + obj = (struct __GXLightObjInt_struct *)lt_obj; + CHECK_GXBEGIN(0x1CA, "GXLoadLightObjImm"); + + switch (light) { + case GX_LIGHT0: + idx = 0; + break; + case GX_LIGHT1: + idx = 1; + break; + case GX_LIGHT2: + idx = 2; + break; + case GX_LIGHT3: + idx = 3; + break; + case GX_LIGHT4: + idx = 4; + break; + case GX_LIGHT5: + idx = 5; + break; + case GX_LIGHT6: + idx = 6; + break; + case GX_LIGHT7: + idx = 7; + break; + default: + idx = 0; + ASSERTMSGLINE(0x1DA, 0, "GXLoadLightStateImm: Invalid Light Id"); + break; + } + + addr = idx * 0x10 + 0x600; + GX_WRITE_U8(0x10); + GX_WRITE_U32(addr | 0xF0000); + + WRITE_SOME_LIGHT_REG1(0, addr); + WRITE_SOME_LIGHT_REG1(0, addr + 1); + WRITE_SOME_LIGHT_REG1(0, addr + 2); + WRITE_SOME_LIGHT_REG1(obj->Color, addr + 3); + WRITE_SOME_LIGHT_REG2(obj->a[0], addr + 4); + WRITE_SOME_LIGHT_REG2(obj->a[1], addr + 5); + WRITE_SOME_LIGHT_REG2(obj->a[2], addr + 6); + WRITE_SOME_LIGHT_REG2(obj->k[0], addr + 7); + WRITE_SOME_LIGHT_REG2(obj->k[1], addr + 8); + WRITE_SOME_LIGHT_REG2(obj->k[2], addr + 9); + WRITE_SOME_LIGHT_REG2(obj->lpos[0], addr + 10); + WRITE_SOME_LIGHT_REG2(obj->lpos[1], addr + 11); + WRITE_SOME_LIGHT_REG2(obj->lpos[2], addr + 12); + WRITE_SOME_LIGHT_REG2(obj->ldir[0], addr + 13); + WRITE_SOME_LIGHT_REG2(obj->ldir[1], addr + 14); + WRITE_SOME_LIGHT_REG2(obj->ldir[2], addr + 15); + + gx->bpSentNot = 1; +} + +void GXLoadLightObjIndx(u32 lt_obj_indx, GXLightID light) +{ + unsigned long reg; + unsigned long addr; + unsigned long idx; + + CHECK_GXBEGIN(0x209, "GXLoadLightObjIndx"); + + switch (light) { + case GX_LIGHT0: + idx = 0; + break; + case GX_LIGHT1: + idx = 1; + break; + case GX_LIGHT2: + idx = 2; + break; + case GX_LIGHT3: + idx = 3; + break; + case GX_LIGHT4: + idx = 4; + break; + case GX_LIGHT5: + idx = 5; + break; + case GX_LIGHT6: + idx = 6; + break; + case GX_LIGHT7: + idx = 7; + break; + default: + idx = 0; + ASSERTMSGLINE(0x216, 0, "GXLoadLightObjIndx: Invalid Light Id"); + break; + } + + addr = idx * 0x10 + 0x600; + reg = 0; + SET_REG_FIELD(0x21C, reg, 12, 0, addr); + SET_REG_FIELD(0x21D, reg, 4, 12, 0xF); + SET_REG_FIELD(0x21E, reg, 16, 16, lt_obj_indx); + GX_WRITE_U8(0x38); + GX_WRITE_U32(reg); +#if DEBUG + __GXShadowIndexState(7, reg); +#endif + gx->bpSentNot = 1; +} + +void GXSetChanAmbColor(GXChannelID chan, GXColor amb_color) +{ + u32 reg = 0; + u32 colIdx; + u32 alpha; + + CHECK_GXBEGIN(0x239, "GXSetChanAmbColor"); + + switch (chan) { + case GX_COLOR0: + alpha = gx->ambColor[0] & 0xFF; + SET_REG_FIELD(0x23E, reg, 8, 0, alpha); + SET_REG_FIELD(0x23F, reg, 8, 8, amb_color.b); + SET_REG_FIELD(0x240, reg, 8, 16, amb_color.g); + SET_REG_FIELD(0x241, reg, 8, 24, amb_color.r); + colIdx = 0; + break; + case GX_COLOR1: + alpha = gx->ambColor[1] & 0xFF; + SET_REG_FIELD(0x247, reg, 8, 0, alpha); + SET_REG_FIELD(0x248, reg, 8, 8, amb_color.b); + SET_REG_FIELD(0x249, reg, 8, 16, amb_color.g); + SET_REG_FIELD(0x24A, reg, 8, 24, amb_color.r); + colIdx = 1; + break; + case GX_ALPHA0: + reg = gx->ambColor[0]; + SET_REG_FIELD(0x250, reg, 8, 0, amb_color.a); + colIdx = 0; + break; + case GX_ALPHA1: + reg = gx->ambColor[1]; + SET_REG_FIELD(0x256, reg, 8, 0, amb_color.a); + colIdx = 1; + break; + case GX_COLOR0A0: + SET_REG_FIELD(0x25B, reg, 8, 0, amb_color.a); + SET_REG_FIELD(0x25C, reg, 8, 8, amb_color.b); + SET_REG_FIELD(0x25D, reg, 8, 16, amb_color.g); + SET_REG_FIELD(0x25E, reg, 8, 24, amb_color.r); + colIdx = 0; + break; + case GX_COLOR1A1: + SET_REG_FIELD(0x263, reg, 8, 0, amb_color.a); + SET_REG_FIELD(0x264, reg, 8, 8, amb_color.b); + SET_REG_FIELD(0x265, reg, 8, 16, amb_color.g); + SET_REG_FIELD(0x266, reg, 8, 24, amb_color.r); + colIdx = 1; + break; + default: + ASSERTMSGLINE(0x26B, 0, "GXSetChanAmbColor: Invalid Channel Id"); + return; + } + + GX_WRITE_XF_REG(colIdx + 10, reg); + gx->bpSentNot = 1; + gx->ambColor[colIdx] = reg; +} + +void GXSetChanMatColor(GXChannelID chan, GXColor mat_color) +{ + u32 reg = 0; + u32 alpha; + u32 colIdx; + + CHECK_GXBEGIN(0x28A, "GXSetChanMatColor"); + + switch (chan) { + case GX_COLOR0: + alpha = gx->matColor[0] & 0xFF; + SET_REG_FIELD(0x28F, reg, 8, 0, alpha); + SET_REG_FIELD(0x290, reg, 8, 8, mat_color.b); + SET_REG_FIELD(0x291, reg, 8, 16, mat_color.g); + SET_REG_FIELD(0x292, reg, 8, 24, mat_color.r); + colIdx = 0; + break; + case GX_COLOR1: + alpha = gx->matColor[1] & 0xFF; + SET_REG_FIELD(0x298, reg, 8, 0, alpha); + SET_REG_FIELD(0x299, reg, 8, 8, mat_color.b); + SET_REG_FIELD(0x29A, reg, 8, 16, mat_color.g); + SET_REG_FIELD(0x29B, reg, 8, 24, mat_color.r); + colIdx = 1; + break; + case GX_ALPHA0: + reg = gx->matColor[0]; + SET_REG_FIELD(0x2A1, reg, 8, 0, mat_color.a); + colIdx = 0; + break; + case GX_ALPHA1: + reg = gx->matColor[1]; + SET_REG_FIELD(0x2A7, reg, 8, 0, mat_color.a); + colIdx = 1; + break; + case GX_COLOR0A0: + SET_REG_FIELD(0x2AC, reg, 8, 0, mat_color.a); + SET_REG_FIELD(0x2AD, reg, 8, 8, mat_color.b); + SET_REG_FIELD(0x2AE, reg, 8, 16, mat_color.g); + SET_REG_FIELD(0x2AF, reg, 8, 24, mat_color.r); + colIdx = 0; + break; + case GX_COLOR1A1: + SET_REG_FIELD(0x2B4, reg, 8, 0, mat_color.a); + SET_REG_FIELD(0x2B5, reg, 8, 8, mat_color.b); + SET_REG_FIELD(0x2B6, reg, 8, 16, mat_color.g); + SET_REG_FIELD(0x2B7, reg, 8, 24, mat_color.r); + colIdx = 1; + break; + default: + ASSERTMSGLINE(0x2BC, 0, "GXSetChanMatColor: Invalid Channel Id"); + return; + } + + GX_WRITE_XF_REG(colIdx + 12, reg); + gx->bpSentNot = 1; + gx->matColor[colIdx] = reg; +} + +void GXSetNumChans(u8 nChans) +{ + CHECK_GXBEGIN(0x2D5, "GXSetNumChans"); + ASSERTMSGLINE(0x2D6, nChans <= 2, "GXSetNumChans: nChans > 2"); + + SET_REG_FIELD(0x2D8, gx->genMode, 3, 4, nChans); + GX_WRITE_XF_REG(9, nChans); + gx->dirtyState |= 4; +} + +void GXSetChanCtrl(GXChannelID chan, GXBool enable, GXColorSrc amb_src, GXColorSrc mat_src, u32 light_mask, GXDiffuseFn diff_fn, GXAttnFn attn_fn) +{ + u32 reg; // r31 + u32 idx; // r26 + + CHECK_GXBEGIN(0x2F8, "GXSetChanCtrl"); + + ASSERTMSGLINE(0x2FB, chan >= 0 && chan <= 5, "GXSetChanCtrl: Invalid Channel Id"); + + if (chan == 4) + idx = 0; + else if (chan == 5) + idx = 1; + else + idx = chan; + + reg = 0; + SET_REG_FIELD(0x302, reg, 1, 1, enable); + SET_REG_FIELD(0x303, reg, 1, 0, mat_src); + SET_REG_FIELD(0x304, reg, 1, 6, amb_src); + SET_REG_FIELD(0x305, reg, 1, 2, (light_mask & GX_LIGHT0) != 0); + SET_REG_FIELD(0x306, reg, 1, 3, (light_mask & GX_LIGHT1) != 0); + SET_REG_FIELD(0x307, reg, 1, 4, (light_mask & GX_LIGHT2) != 0); + SET_REG_FIELD(0x308, reg, 1, 5, (light_mask & GX_LIGHT3) != 0); + SET_REG_FIELD(0x309, reg, 1, 11, (light_mask & GX_LIGHT4) != 0); + SET_REG_FIELD(0x30A, reg, 1, 12, (light_mask & GX_LIGHT5) != 0); + SET_REG_FIELD(0x30B, reg, 1, 13, (light_mask & GX_LIGHT6) != 0); + SET_REG_FIELD(0x30C, reg, 1, 14, (light_mask & GX_LIGHT7) != 0); + SET_REG_FIELD(0x30E, reg, 2, 7, (attn_fn == 0) ? 0 : diff_fn); + SET_REG_FIELD(0x30F, reg, 1, 9, (attn_fn != 2)); + SET_REG_FIELD(0x310, reg, 1, 10, (attn_fn != 0)); + + GX_WRITE_XF_REG(idx + 14, reg); + gx->bpSentNot = 1; + if (chan == GX_COLOR0A0) { + GX_WRITE_XF_REG(16, reg); + } + else if (chan == GX_COLOR1A1) { + GX_WRITE_XF_REG(17, reg); + } +} diff --git a/src/dolphin/gx/GXMisc.c b/src/dolphin/gx/GXMisc.c new file mode 100644 index 00000000..1b7bea94 --- /dev/null +++ b/src/dolphin/gx/GXMisc.c @@ -0,0 +1,485 @@ +#include +#include +#include +#include + + +#include + +static GXDrawSyncCallback TokenCB; +static GXDrawDoneCallback DrawDoneCB; +static u8 DrawDone; +static OSThreadQueue FinishQueue; + +void GXSetMisc(GXMiscToken token, u32 val) +{ + switch (token) { + case GX_MT_XF_FLUSH: + gx->vNum = val; + gx->vNumNot = !gx->vNum; + gx->bpSentNot = 1; + if (gx->vNum != 0) { + gx->dirtyState |= 8; + } + break; + case GX_MT_DL_SAVE_CONTEXT: + ASSERTMSGLINE(0xC4, !gx->inDispList, "GXSetMisc: Cannot change DL context setting while making a display list"); + gx->dlSaveContext = (val > 0); + break; + case GX_MT_NULL: + break; + default: + break; + } +} + +void GXFlush(void) +{ + CHECK_GXBEGIN(0x10E, "GXFlush"); + if (gx->dirtyState) { + __GXSetDirtyState(); + } + + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + GX_WRITE_U32(0); + + PPCSync(); +} + +void GXResetWriteGatherPipe(void) +{ + while (PPCMfwpar() & 1) { } + PPCMtwpar(OSUncachedToPhysical((void *)GXFIFO_ADDR)); +} + +static inline void __GXAbortWait(u32 clocks) +{ + OSTime time0; + OSTime time1; + + time0 = OSGetTime(); + do { + time1 = OSGetTime(); + } while (time1 - time0 <= (clocks / 4)); +} + +void __GXAbortWaitPECopyDone(void) +{ + __piReg[6] = 1; + __GXAbortWait(0xC8U); + __piReg[6] = 0; + __GXAbortWait(0x14U); + __GXCleanGPFifo(); +} + +void GXSetDrawSync(u16 token) +{ + BOOL enabled; + u32 reg; + + CHECK_GXBEGIN(0x162, "GXSetDrawSync"); + + enabled = OSDisableInterrupts(); + reg = token | 0x48000000; + GX_WRITE_RAS_REG(reg); + SET_REG_FIELD(0x16F, reg, 16, 0, token); + SET_REG_FIELD(0x170, reg, 8, 24, 0x47); + GX_WRITE_RAS_REG(reg); + GXFlush(); + OSRestoreInterrupts(enabled); + gx->bpSentNot = 0; +} + +u16 GXReadDrawSync(void) +{ + u16 token = __peReg[7]; + return token; +} + +void GXSetDrawDone(void) +{ + u32 reg; + BOOL enabled; + + CHECK_GXBEGIN(0x19C, "GXSetDrawDone"); + enabled = OSDisableInterrupts(); + reg = 0x45000002; + GX_WRITE_RAS_REG(reg); + GXFlush(); + DrawDone = 0; + OSRestoreInterrupts(enabled); +} + +void GXWaitDrawDone(void) +{ + BOOL enabled; + + CHECK_GXBEGIN(0x1CA, "GXWaitDrawDone"); + + enabled = OSDisableInterrupts(); + while (!DrawDone) { + OSSleepThread(&FinishQueue); + } + OSRestoreInterrupts(enabled); +} + +void GXDrawDone(void) +{ + CHECK_GXBEGIN(0x1EA, "GXDrawDone"); + GXSetDrawDone(); + GXWaitDrawDone(); +} + +void GXPixModeSync(void) +{ + CHECK_GXBEGIN(0x20D, "GXPixModeSync"); + GX_WRITE_RAS_REG(gx->peCtrl); + gx->bpSentNot = 0; +} + +void GXTexModeSync(void) +{ + u32 reg; + + CHECK_GXBEGIN(0x225, "GXTexModeSync"); + reg = 0x63000000; + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} + +void GXPokeAlphaMode(GXCompare func, u8 threshold) +{ + u32 reg; + + CHECK_GXBEGIN(0x25F, "GXPokeAlphaMode"); + reg = (func << 8) | threshold; + __peReg[3] = reg; +} + +void GXPokeAlphaRead(GXAlphaReadMode mode) +{ + u32 reg; + + CHECK_GXBEGIN(0x26A, "GXPokeAlphaRead"); + reg = 0; + SET_REG_FIELD(0x26D, reg, 2, 0, mode); + SET_REG_FIELD(0x26E, reg, 1, 2, 1); + __peReg[4] = reg; +} + +void GXPokeAlphaUpdate(GXBool update_enable) +{ + u32 reg; + + CHECK_GXBEGIN(0x277, "GXPokeAlphaUpdate"); + reg = __peReg[1]; + SET_REG_FIELD(0x27A, reg, 1, 4, update_enable); + __peReg[1] = reg; +} + +void GXPokeBlendMode(GXBlendMode type, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) +{ + u32 reg; + + CHECK_GXBEGIN(0x284, "GXPokeBlendUpdate"); + reg = __peReg[1]; + SET_REG_FIELD(0x28C, reg, 1, 0, (type == GX_BM_BLEND) || (type == GX_BM_SUBTRACT)); + SET_REG_FIELD(0x28D, reg, 1, 11, (type == GX_BM_SUBTRACT)); + SET_REG_FIELD(0x28F, reg, 1, 1, (type == GX_BM_LOGIC)); + SET_REG_FIELD(0x290, reg, 4, 12, op); + SET_REG_FIELD(0x291, reg, 3, 8, src_factor); + SET_REG_FIELD(0x292, reg, 3, 5, dst_factor); + SET_REG_FIELD(0x293, reg, 8, 24, 0x41); + __peReg[1] = reg; +} + +void GXPokeColorUpdate(GXBool update_enable) +{ + u32 reg; + + CHECK_GXBEGIN(0x29D, "GXPokeColorUpdate"); + reg = __peReg[1]; + SET_REG_FIELD(0x2A0, reg, 1, 3, update_enable); + __peReg[1] = reg; +} + +void GXPokeDstAlpha(GXBool enable, u8 alpha) +{ + u32 reg = 0; + + CHECK_GXBEGIN(0x2A9, "GXPokeDstAlpha"); + SET_REG_FIELD(0x2AB, reg, 8, 0, alpha); + SET_REG_FIELD(0x2AC, reg, 1, 8, enable); + __peReg[2] = reg; +} + +void GXPokeDither(GXBool dither) +{ + u32 reg; + + CHECK_GXBEGIN(0x2B5, "GXPokeDither"); + reg = __peReg[1]; + SET_REG_FIELD(0x2B8, reg, 1, 2, dither); + __peReg[1] = reg; +} + +void GXPokeZMode(GXBool compare_enable, GXCompare func, GXBool update_enable) +{ + u32 reg = 0; + + CHECK_GXBEGIN(0x2C1, "GXPokeZMode"); + + SET_REG_FIELD(0x2C3, reg, 1, 0, compare_enable); + SET_REG_FIELD(0x2C4, reg, 3, 1, func); + SET_REG_FIELD(0x2C5, reg, 1, 4, update_enable); + __peReg[0] = reg; +} + +void GXPeekARGB(u16 x, u16 y, u32 *color) +{ + u32 addr = (u32)OSPhysicalToUncached(0x08000000); + + SET_REG_FIELD(0x2DC, addr, 10, 2, x); + SET_REG_FIELD(0x2DD, addr, 10, 12, y); + SET_REG_FIELD(0x2DE, addr, 2, 22, 0); + *color = *(u32 *)addr; +} + +void GXPokeARGB(u16 x, u16 y, u32 color) +{ + u32 addr = (u32)OSPhysicalToUncached(0x08000000); + + SET_REG_FIELD(0x2E6, addr, 10, 2, x); + SET_REG_FIELD(0x2E7, addr, 10, 12, y); + SET_REG_FIELD(0x2E8, addr, 2, 22, 0); + *(u32 *)addr = color; +} + +void GXPeekZ(u16 x, u16 y, u32 *z) +{ + u32 addr = (u32)OSPhysicalToUncached(0x08000000); + + SET_REG_FIELD(0x2F0, addr, 10, 2, x); + SET_REG_FIELD(0x2F1, addr, 10, 12, y); + SET_REG_FIELD(0x2F2, addr, 2, 22, 1); + *z = *(u32 *)addr; +} + +void GXPokeZ(u16 x, u16 y, u32 z) +{ + u32 addr = (u32)OSPhysicalToUncached(0x08000000); + + SET_REG_FIELD(0x2FA, addr, 10, 2, x); + SET_REG_FIELD(0x2FB, addr, 10, 12, y); + SET_REG_FIELD(0x2FC, addr, 2, 22, 1); + *(u32 *)addr = z; +} + +GXDrawSyncCallback GXSetDrawSyncCallback(GXDrawSyncCallback cb) +{ + GXDrawSyncCallback oldcb; + BOOL enabled; + + oldcb = TokenCB; + enabled = OSDisableInterrupts(); + TokenCB = cb; + OSRestoreInterrupts(enabled); + return oldcb; +} + +static void GXTokenInterruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + u16 token; + OSContext exceptionContext; + u32 reg; + + token = __peReg[7]; + if (TokenCB != NULL) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + TokenCB(token); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } + reg = __peReg[5]; + SET_REG_FIELD(0, reg, 1, 2, 1); + __peReg[5] = reg; +} + +GXDrawDoneCallback GXSetDrawDoneCallback(GXDrawDoneCallback cb) +{ + GXDrawDoneCallback oldcb; + BOOL enabled; + + oldcb = DrawDoneCB; + enabled = OSDisableInterrupts(); + DrawDoneCB = cb; + OSRestoreInterrupts(enabled); + return oldcb; +} + +static void GXFinishInterruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + OSContext exceptionContext; + u32 reg; + + reg = __peReg[5]; + SET_REG_FIELD(0, reg, 1, 3, 1); + __peReg[5] = reg; + DrawDone = 1; + if (DrawDoneCB != NULL) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + DrawDoneCB(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } + OSWakeupThread(&FinishQueue); +} + +void __GXPEInit(void) +{ + u32 reg; + __OSSetInterruptHandler(0x12, GXTokenInterruptHandler); + __OSSetInterruptHandler(0x13, GXFinishInterruptHandler); + OSInitThreadQueue(&FinishQueue); + __OSUnmaskInterrupts(0x2000); + __OSUnmaskInterrupts(0x1000); + reg = __peReg[5]; + SET_REG_FIELD(0, reg, 1, 2, 1); + SET_REG_FIELD(0, reg, 1, 3, 1); + SET_REG_FIELD(0, reg, 1, 0, 1); + SET_REG_FIELD(0, reg, 1, 1, 1); + __peReg[5] = reg; +} + +u32 GXCompressZ16(u32 z24, GXZFmt16 zfmt) +{ + u32 z16; + u32 z24n; + s32 exp; + s32 shift; + s32 temp; + u8 unused[4]; + + z24n = ~(z24 << 8); + temp = __cntlzw(z24n); + switch (zfmt) { + case GX_ZC_LINEAR: + z16 = (z24 >> 8) & 0xFFFF; + break; + case GX_ZC_NEAR: + if (temp > 3) { + exp = 3; + } + else { + exp = temp; + } + if (exp == 3) { + shift = 7; + } + else { + shift = 9 - exp; + } + z16 = ((z24 >> shift) & 0x3FFF & ~0xFFFFC000) | (exp << 14); + break; + case GX_ZC_MID: + if (temp > 7) { + exp = 7; + } + else { + exp = temp; + } + if (exp == 7) { + shift = 4; + } + else { + shift = 10 - exp; + } + z16 = ((z24 >> shift) & 0x1FFF & ~0xFFFFE000) | (exp << 13); + break; + case GX_ZC_FAR: + if (temp > 12) { + exp = 12; + } + else { + exp = temp; + } + if (exp == 12) { + shift = 0; + } + else { + shift = 11 - exp; + } + z16 = ((z24 >> shift) & 0xFFF & ~0xFFFFF000) | (exp << 12); + break; + default: + OSPanic(__FILE__, 0x3B0, "GXCompressZ16: Invalid Z format\n"); + break; + } + return z16; +} + +u32 GXDecompressZ16(u32 z16, GXZFmt16 zfmt) +{ + u32 z24; + u32 cb1; + long exp; + long shift; + + cb1; + cb1; + cb1; + z16; + z16; + z16; // needed to match + + switch (zfmt) { + case GX_ZC_LINEAR: + z24 = (z16 << 8) & 0xFFFF00; + break; + case GX_ZC_NEAR: + exp = (z16 >> 14) & 3; + if (exp == 3) { + shift = 7; + } + else { + shift = 9 - exp; + } + cb1 = -1 << (24 - exp); + z24 = (cb1 | ((z16 & 0x3FFF) << shift)) & 0xFFFFFF; + break; + case GX_ZC_MID: + exp = (z16 >> 13) & 7; + if (exp == 7) { + shift = 4; + } + else { + shift = 10 - exp; + } + cb1 = -1 << (24 - exp); + z24 = (cb1 | ((z16 & 0x1FFF) << shift)) & 0xFFFFFF; + break; + case GX_ZC_FAR: + exp = (z16 >> 12) & 0xF; + if (exp == 12) { + shift = 0; + } + else { + shift = 11 - exp; + } + cb1 = -1 << (24 - exp); + z24 = (cb1 | ((z16 & 0xFFF) << shift)) & 0xFFFFFF; + break; + default: + OSPanic(__FILE__, 0x3E2, "GXDecompressZ16: Invalid Z format\n"); + break; + } + return z24; +} diff --git a/src/dolphin/gx/GXPerf.c b/src/dolphin/gx/GXPerf.c new file mode 100644 index 00000000..34b4d0ae --- /dev/null +++ b/src/dolphin/gx/GXPerf.c @@ -0,0 +1,577 @@ +#include +#include + +#include + +void GXSetGPMetric(GXPerf0 perf0, GXPerf1 perf1) +{ + u32 reg; + + CHECK_GXBEGIN(0x6A, "GXSetGPMetric"); + + switch (gx->perf0) { + case GX_PERF0_VERTICES: + case GX_PERF0_CLIP_VTX: + case GX_PERF0_CLIP_CLKS: + case GX_PERF0_XF_WAIT_IN: + case GX_PERF0_XF_WAIT_OUT: + case GX_PERF0_XF_XFRM_CLKS: + case GX_PERF0_XF_LIT_CLKS: + case GX_PERF0_XF_BOT_CLKS: + case GX_PERF0_XF_REGLD_CLKS: + case GX_PERF0_XF_REGRD_CLKS: + case GX_PERF0_CLIP_RATIO: + case GX_PERF0_CLOCKS: + reg = 0; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_TRIANGLES: + case GX_PERF0_TRIANGLES_CULLED: + case GX_PERF0_TRIANGLES_PASSED: + case GX_PERF0_TRIANGLES_SCISSORED: + case GX_PERF0_TRIANGLES_0TEX: + case GX_PERF0_TRIANGLES_1TEX: + case GX_PERF0_TRIANGLES_2TEX: + case GX_PERF0_TRIANGLES_3TEX: + case GX_PERF0_TRIANGLES_4TEX: + case GX_PERF0_TRIANGLES_5TEX: + case GX_PERF0_TRIANGLES_6TEX: + case GX_PERF0_TRIANGLES_7TEX: + case GX_PERF0_TRIANGLES_8TEX: + case GX_PERF0_TRIANGLES_0CLR: + case GX_PERF0_TRIANGLES_1CLR: + case GX_PERF0_TRIANGLES_2CLR: + reg = 0x23000000; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_0CVG: + case GX_PERF0_QUAD_NON0CVG: + case GX_PERF0_QUAD_1CVG: + case GX_PERF0_QUAD_2CVG: + case GX_PERF0_QUAD_3CVG: + case GX_PERF0_QUAD_4CVG: + case GX_PERF0_AVG_QUAD_CNT: + reg = 0x24000000; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_NONE: + break; + default: + ASSERTMSGLINE(0xA6, 0, "GXSetGPMetric: Invalid GXPerf0 metric name"); + break; + } + + switch (gx->perf1) { + case GX_PERF1_TEXELS: + case GX_PERF1_TX_IDLE: + case GX_PERF1_TX_REGS: + case GX_PERF1_TX_MEMSTALL: + case GX_PERF1_TC_CHECK1_2: + case GX_PERF1_TC_CHECK3_4: + case GX_PERF1_TC_CHECK5_6: + case GX_PERF1_TC_CHECK7_8: + case GX_PERF1_TC_MISS: + case GX_PERF1_CLOCKS: + reg = 0x67000000; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_VC_ELEMQ_FULL: + case GX_PERF1_VC_MISSQ_FULL: + case GX_PERF1_VC_MEMREQ_FULL: + case GX_PERF1_VC_STATUS7: + case GX_PERF1_VC_MISSREP_FULL: + case GX_PERF1_VC_STREAMBUF_LOW: + case GX_PERF1_VC_ALL_STALLS: + case GX_PERF1_VERTICES: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 0); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_FIFO_REQ: + case GX_PERF1_CALL_REQ: + case GX_PERF1_VC_MISS_REQ: + case GX_PERF1_CP_ALL_REQ: + reg = 0; + GX_SET_CP_REG(3, reg); + break; + case GX_PERF1_NONE: + break; + default: + ASSERTMSGLINE(0xD8, 0, "GXSetGPMetric: Invalid GXPerf1 metric name"); + break; + } + + gx->perf0 = perf0; + switch (gx->perf0) { + case GX_PERF0_VERTICES: + reg = 0x273; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_CLIP_VTX: + reg = 0x14A; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_CLIP_CLKS: + reg = 0x16B; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_WAIT_IN: + reg = 0x84; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_WAIT_OUT: + reg = 0xC6; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_XFRM_CLKS: + reg = 0x210; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_LIT_CLKS: + reg = 0x252; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_BOT_CLKS: + reg = 0x231; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_REGLD_CLKS: + reg = 0x1AD; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_XF_REGRD_CLKS: + reg = 0x1CE; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_CLOCKS: + reg = 0x21; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_CLIP_RATIO: + reg = 0x153; + GX_WRITE_XF_REG(6, reg); + break; + case GX_PERF0_TRIANGLES: + reg = 0x2300AE7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_CULLED: + reg = 0x23008E7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_PASSED: + reg = 0x23009E7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_SCISSORED: + reg = 0x23001E7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_0TEX: + reg = 0x2300AC3F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_1TEX: + reg = 0x2300AC7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_2TEX: + reg = 0x2300ACBF; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_3TEX: + reg = 0x2300ACFF; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_4TEX: + reg = 0x2300AD3F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_5TEX: + reg = 0x2300AD7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_6TEX: + reg = 0x2300ADBF; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_7TEX: + reg = 0x2300ADFF; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_8TEX: + reg = 0x2300AE3F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_0CLR: + reg = 0x2300A27F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_1CLR: + reg = 0x2300A67F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_TRIANGLES_2CLR: + reg = 0x2300AA7F; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_0CVG: + reg = 0x2402C0C6; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_NON0CVG: + reg = 0x2402C16B; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_1CVG: + reg = 0x2402C0E7; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_2CVG: + reg = 0x2402C108; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_3CVG: + reg = 0x2402C129; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_QUAD_4CVG: + reg = 0x2402C14A; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_AVG_QUAD_CNT: + reg = 0x2402C1AD; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF0_NONE: + break; + default: + ASSERTMSGLINE(0x1DA, 0, "GXSetGPMetric: Invalid GXPerf0 metric name"); + break; + } + + gx->perf1 = perf1; + switch (gx->perf1) { + case GX_PERF1_TEXELS: + reg = 0x67000042; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TX_IDLE: + reg = 0x67000084; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TX_REGS: + reg = 0x67000063; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TX_MEMSTALL: + reg = 0x67000129; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TC_MISS: + reg = 0x67000252; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_CLOCKS: + reg = 0x67000021; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TC_CHECK1_2: + reg = 0x6700014B; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TC_CHECK3_4: + reg = 0x6700018D; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TC_CHECK5_6: + reg = 0x670001CF; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_TC_CHECK7_8: + reg = 0x67000211; + GX_WRITE_RAS_REG(reg); + break; + case GX_PERF1_VC_ELEMQ_FULL: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 2); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VC_MISSQ_FULL: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 3); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VC_MEMREQ_FULL: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 4); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VC_STATUS7: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 5); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VC_MISSREP_FULL: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 6); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VC_STREAMBUF_LOW: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 7); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VC_ALL_STALLS: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 9); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_VERTICES: + SET_REG_FIELD(0, gx->perfSel, 4, 4, 8); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + break; + case GX_PERF1_FIFO_REQ: + reg = 2; + GX_SET_CP_REG(3, reg); + break; + case GX_PERF1_CALL_REQ: + reg = 3; + GX_SET_CP_REG(3, reg); + break; + case GX_PERF1_VC_MISS_REQ: + reg = 4; + GX_SET_CP_REG(3, reg); + break; + case GX_PERF1_CP_ALL_REQ: + reg = 5; + GX_SET_CP_REG(3, reg); + break; + case GX_PERF1_NONE: + break; + default: + ASSERTMSGLINE(0x26B, 0, "GXSetGPMetric: Invalid GXPerf1 metric name"); + break; + } + + gx->bpSentNot = 0; +} + +#pragma scheduling off +void GXReadGPMetric(u32 *cnt0, u32 *cnt1) +{ + u32 cpCtr0, cpCtr1, cpCtr2, cpCtr3; + + ASSERTMSGLINE(0x286, !gx->inDispList, "GXReadGPMetric: don't use in a display list"); + + cpCtr0 = __GXReadCPCounterU32(32, 33); + cpCtr1 = __GXReadCPCounterU32(34, 35); + cpCtr2 = __GXReadCPCounterU32(36, 37); + cpCtr3 = __GXReadCPCounterU32(38, 39); + + switch (gx->perf0) { + case GX_PERF0_CLIP_RATIO: + *cnt0 = cpCtr1 * 0x3E8 / cpCtr0; + break; + case GX_PERF0_VERTICES: + case GX_PERF0_CLIP_VTX: + case GX_PERF0_CLIP_CLKS: + case GX_PERF0_XF_WAIT_IN: + case GX_PERF0_XF_WAIT_OUT: + case GX_PERF0_XF_XFRM_CLKS: + case GX_PERF0_XF_LIT_CLKS: + case GX_PERF0_XF_BOT_CLKS: + case GX_PERF0_XF_REGLD_CLKS: + case GX_PERF0_XF_REGRD_CLKS: + case GX_PERF0_TRIANGLES: + case GX_PERF0_TRIANGLES_CULLED: + case GX_PERF0_TRIANGLES_PASSED: + case GX_PERF0_TRIANGLES_SCISSORED: + case GX_PERF0_TRIANGLES_0TEX: + case GX_PERF0_TRIANGLES_1TEX: + case GX_PERF0_TRIANGLES_2TEX: + case GX_PERF0_TRIANGLES_3TEX: + case GX_PERF0_TRIANGLES_4TEX: + case GX_PERF0_TRIANGLES_5TEX: + case GX_PERF0_TRIANGLES_6TEX: + case GX_PERF0_TRIANGLES_7TEX: + case GX_PERF0_TRIANGLES_8TEX: + case GX_PERF0_TRIANGLES_0CLR: + case GX_PERF0_TRIANGLES_1CLR: + case GX_PERF0_TRIANGLES_2CLR: + case GX_PERF0_QUAD_0CVG: + case GX_PERF0_QUAD_NON0CVG: + case GX_PERF0_QUAD_1CVG: + case GX_PERF0_QUAD_2CVG: + case GX_PERF0_QUAD_3CVG: + case GX_PERF0_QUAD_4CVG: + case GX_PERF0_AVG_QUAD_CNT: + case GX_PERF0_CLOCKS: + *cnt0 = cpCtr0; + break; + case GX_PERF0_NONE: + *cnt0 = 0; + break; + default: + ASSERTMSGLINE(0x2CF, 0, "GXReadGPMetric: Invalid GXPerf0 metric name"); + *cnt0 = 0; + break; + } + + switch (gx->perf1) { + case GX_PERF1_TEXELS: + *cnt1 = cpCtr3 * 4; + break; + case GX_PERF1_TC_CHECK1_2: + *cnt1 = cpCtr2 + (cpCtr3 * 2); + break; + case GX_PERF1_TC_CHECK3_4: + *cnt1 = (cpCtr2 * 3) + (cpCtr3 * 4); + break; + case GX_PERF1_TC_CHECK5_6: + *cnt1 = (cpCtr2 * 5) + (cpCtr3 * 6); + break; + case GX_PERF1_TC_CHECK7_8: + *cnt1 = (cpCtr2 * 7) + (cpCtr3 * 8); + break; + case GX_PERF1_TX_IDLE: + case GX_PERF1_TX_REGS: + case GX_PERF1_TX_MEMSTALL: + case GX_PERF1_TC_MISS: + case GX_PERF1_VC_ELEMQ_FULL: + case GX_PERF1_VC_MISSQ_FULL: + case GX_PERF1_VC_MEMREQ_FULL: + case GX_PERF1_VC_STATUS7: + case GX_PERF1_VC_MISSREP_FULL: + case GX_PERF1_VC_STREAMBUF_LOW: + case GX_PERF1_VC_ALL_STALLS: + case GX_PERF1_VERTICES: + case GX_PERF1_CLOCKS: + *cnt1 = cpCtr3; + break; + case GX_PERF1_FIFO_REQ: + case GX_PERF1_CALL_REQ: + case GX_PERF1_VC_MISS_REQ: + case GX_PERF1_CP_ALL_REQ: + *cnt1 = cpCtr2; + break; + case GX_PERF1_NONE: + *cnt1 = 0; + break; + default: + ASSERTMSGLINE(0x30A, 0, "GXReadGPMetric: Invalid GXPerf1 metric name"); + *cnt1 = 0; + break; + } +} +#pragma scheduling reset + +void GXClearGPMetric(void) +{ + u32 reg; + + ASSERTMSGLINE(0x322, !gx->inDispList, "GXClearGPMetric: don't use in a display list"); + reg = 4; + __cpReg[2] = reg; +} + +u32 GXReadGP0Metric(void) +{ + u32 cnt0, cnt1; + + GXReadGPMetric(&cnt0, &cnt1); + return cnt0; +} + +u32 GXReadGP1Metric(void) +{ + u32 cnt0, cnt1; + + GXReadGPMetric(&cnt0, &cnt1); + return cnt1; +} + +#pragma scheduling off +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) +{ + ASSERTMSGLINE(0x380, !gx->inDispList, "GXReadMemMetric: don't use in a display list"); + + *cp_req = __GXReadMEMCounterU32(26, 25); + *tc_req = __GXReadMEMCounterU32(28, 27); + *cpu_rd_req = __GXReadMEMCounterU32(30, 29); + *cpu_wr_req = __GXReadMEMCounterU32(32, 31); + *dsp_req = __GXReadMEMCounterU32(34, 33); + *io_req = __GXReadMEMCounterU32(36, 35); + *vi_req = __GXReadMEMCounterU32(38, 37); + *pe_req = __GXReadMEMCounterU32(40, 39); + *rf_req = __GXReadMEMCounterU32(42, 41); + *fi_req = __GXReadMEMCounterU32(44, 43); +} +#pragma scheduling reset + +void GXClearMemMetric(void) +{ + ASSERTMSGLINE(0x3B9, !gx->inDispList, "GXClearMemMetric: don't use in a display list"); + + GX_SET_MEM_REG(25, 0); + GX_SET_MEM_REG(26, 0); + GX_SET_MEM_REG(27, 0); + GX_SET_MEM_REG(28, 0); + GX_SET_MEM_REG(30, 0); + GX_SET_MEM_REG(29, 0); + GX_SET_MEM_REG(32, 0); + GX_SET_MEM_REG(31, 0); + GX_SET_MEM_REG(34, 0); + GX_SET_MEM_REG(33, 0); + GX_SET_MEM_REG(36, 0); + GX_SET_MEM_REG(35, 0); + GX_SET_MEM_REG(38, 0); + GX_SET_MEM_REG(37, 0); + GX_SET_MEM_REG(40, 0); + GX_SET_MEM_REG(39, 0); + GX_SET_MEM_REG(42, 0); + GX_SET_MEM_REG(41, 0); + GX_SET_MEM_REG(44, 0); + GX_SET_MEM_REG(43, 0); +} + +#pragma scheduling off +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) +{ + *top_pixels_in = __GXReadPECounterU32(12, 13) * 4; + *top_pixels_out = __GXReadPECounterU32(14, 15) * 4; + *bot_pixels_in = __GXReadPECounterU32(16, 17) * 4; + *bot_pixels_out = __GXReadPECounterU32(18, 19) * 4; + *clr_pixels_in = __GXReadPECounterU32(20, 21) * 4; + *copy_clks = __GXReadPECounterU32(22, 23); +} +#pragma scheduling reset + +void GXClearPixMetric(void) +{ + u32 reg; + + CHECK_GXBEGIN(0x48B, "GXClearPixMetric"); + reg = 0x57000000; + GX_WRITE_RAS_REG(reg); + reg = 0x57000AAA; + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} + +void GXSetVCacheMetric(GXVCachePerf attr) +{ + u32 reg; + + SET_REG_FIELD(0x43C, gx->perfSel, 4, 0, attr); + GX_WRITE_SOME_REG4(8, 0x20, gx->perfSel, -12); + reg = 1; + GX_WRITE_SOME_REG4(8, 0x10, reg, -12); +} + +#pragma scheduling off +void GXReadVCacheMetric(u32 *check, u32 *miss, u32 *stall) +{ + *check = __GXReadCPCounterU32(40, 41); + *miss = __GXReadCPCounterU32(42, 43); + *stall = __GXReadCPCounterU32(44, 45); +} +#pragma scheduling on + +void GXClearVCacheMetric(void) +{ + GX_WRITE_SOME_REG4(8, 0, 0, -12); +} diff --git a/src/dolphin/gx/GXPixel.c b/src/dolphin/gx/GXPixel.c new file mode 100644 index 00000000..5460b4b6 --- /dev/null +++ b/src/dolphin/gx/GXPixel.c @@ -0,0 +1,290 @@ +#include +#include +#include + +#include + +void GXSetFog(GXFogType type, f32 startz, f32 endz, f32 nearz, f32 farz, GXColor color) +{ + u32 fogclr; + u32 fog0; + u32 fog1; + u32 fog2; + u32 fog3; + f32 A; + f32 B; + f32 B_mant; + f32 C; + f32 a; + f32 c; + u32 B_expn; + u32 b_m; + u32 b_s; + u32 a_hex; + u32 c_hex; + + CHECK_GXBEGIN(0x8A, "GXSetFog"); + + ASSERTMSGLINE(0x8C, farz >= 0.0f, "GXSetFog: The farz should be positive value"); + ASSERTMSGLINE(0x8D, farz >= nearz, "GXSetFog: The farz should be larger than nearz"); + + if (farz == nearz || endz == startz) { + A = 0.0f; + B = 0.5f; + C = 0.0f; + } + else { + A = (farz * nearz) / ((farz - nearz) * (endz - startz)); + B = farz / (farz - nearz); + C = startz / (endz - startz); + } + + B_mant = B; + B_expn = 0; + while (B_mant > 1.0) { + B_mant *= 0.5f; + B_expn++; + } + while (B_mant > 0.0f && B_mant < 0.5) { + B_mant *= 2.0f; + B_expn--; + } + + a = A / (f32)(1 << (B_expn + 1)); + b_m = 8.388638e6f * B_mant; + b_s = B_expn + 1; + c = C; + + fog1 = 0; + SET_REG_FIELD(0x94, fog1, 24, 0, b_m); + SET_REG_FIELD(0x95, fog1, 8, 24, 0xEF); + + fog2 = 0; + SET_REG_FIELD(0x98, fog2, 5, 0, b_s); + SET_REG_FIELD(0x99, fog2, 8, 24, 0xF0); + + a_hex = *(u32 *)&a; + c_hex = *(u32 *)&c; + + fog0 = 0; + SET_REG_FIELD(0xA0, fog0, 11, 0, (a_hex >> 12) & 0x7FF); + SET_REG_FIELD(0xA1, fog0, 8, 11, (a_hex >> 23) & 0xFF); + SET_REG_FIELD(0xA2, fog0, 1, 19, (a_hex >> 31)); + SET_REG_FIELD(0xA3, fog0, 8, 24, 0xEE); + + fog3 = 0; + SET_REG_FIELD(0xA6, fog3, 11, 0, (c_hex >> 12) & 0x7FF); + SET_REG_FIELD(0xA7, fog3, 8, 11, (c_hex >> 23) & 0xFF); + SET_REG_FIELD(0xA8, fog3, 1, 19, (c_hex >> 31)); + SET_REG_FIELD(0xA9, fog3, 1, 20, 0); + SET_REG_FIELD(0xAA, fog3, 3, 21, type); + SET_REG_FIELD(0xAB, fog3, 8, 24, 0xF1); + + fogclr = 0; + SET_REG_FIELD(0xAE, fogclr, 8, 0, color.b); + SET_REG_FIELD(0xAF, fogclr, 8, 8, color.g); + SET_REG_FIELD(0xB0, fogclr, 8, 16, color.r); + SET_REG_FIELD(0xB1, fogclr, 8, 24, 0xF2); + + GX_WRITE_RAS_REG(fog0); + GX_WRITE_RAS_REG(fog1); + GX_WRITE_RAS_REG(fog2); + GX_WRITE_RAS_REG(fog3); + GX_WRITE_RAS_REG(fogclr); + gx->bpSentNot = 0; +} + +void GXSetFogColor(GXColor color) +{ + unsigned long rgba; + unsigned long fogclr = 0xF2000000; + + rgba = *(u32 *)&color; + SET_REG_FIELD(0xFA, fogclr, 24, 0, rgba >> 8); + GX_WRITE_RAS_REG(fogclr); + gx->bpSentNot = 0; +} + +void GXInitFogAdjTable(GXFogAdjTable *table, u16 width, const f32 projmtx[4][4]) +{ + f32 xi; + f32 iw; + f32 rangeVal; + f32 nearZ; + f32 sideX; + u32 i; + + CHECK_GXBEGIN(0x113, "GXInitFogAdjTable"); + ASSERTMSGLINE(0x114, table != NULL, "GXInitFogAdjTable: table pointer is null"); + ASSERTMSGLINE(0x115, width <= 640, "GXInitFogAdjTable: invalid width value"); + + if (0.0 == projmtx[3][3]) { + nearZ = projmtx[2][3] / (projmtx[2][2] - 1.0f); + sideX = nearZ / projmtx[0][0]; + } + else { + sideX = 1.0f / projmtx[0][0]; + nearZ = 1.73205f * sideX; + } + + iw = 2.0f / width; + for (i = 0; i < 10; i++) { + xi = (i + 1) << 5; + xi *= iw; + xi *= sideX; + rangeVal = sqrtf(1.0f + ((xi * xi) / (nearZ * nearZ))); + table->r[i] = (u32)(256.0f * rangeVal) & 0xFFF; + } +} + +void GXSetFogRangeAdj(GXBool enable, u16 center, const GXFogAdjTable *table) +{ + u32 i; + u32 range_adj; + u32 range_c; + + CHECK_GXBEGIN(0x14B, "GXSetFogRangeAdj"); + + if (enable) { + ASSERTMSGLINE(0x14E, table != NULL, "GXSetFogRangeAdj: table pointer is null"); + for (i = 0; i < 10; i += 2) { + range_adj = 0; + SET_REG_FIELD(0x152, range_adj, 12, 0, table->r[i]); + SET_REG_FIELD(0x153, range_adj, 12, 12, table->r[i + 1]); + SET_REG_FIELD(0x154, range_adj, 8, 24, (i >> 1) + 0xE9); + GX_WRITE_RAS_REG(range_adj); + } + } + range_c = 0; + SET_REG_FIELD(0x15A, range_c, 10, 0, center + 342); + SET_REG_FIELD(0x15B, range_c, 1, 10, enable); + SET_REG_FIELD(0x15C, range_c, 8, 24, 0xE8); + GX_WRITE_RAS_REG(range_c); + gx->bpSentNot = 0; +} + +void GXSetBlendMode(GXBlendMode type, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) +{ + CHECK_GXBEGIN(0x177, "GXSetBlendMode"); + + SET_REG_FIELD(0x135, gx->cmode0, 1, 0, (type == GX_BM_BLEND || type == GX_BM_SUBTRACT)); + SET_REG_FIELD(0x136, gx->cmode0, 1, 11, (type == GX_BM_SUBTRACT)); + SET_REG_FIELD(0x138, gx->cmode0, 1, 1, (type == GX_BM_LOGIC)); + SET_REG_FIELD(0x139, gx->cmode0, 4, 12, op); + SET_REG_FIELD(0x13A, gx->cmode0, 3, 8, src_factor); + SET_REG_FIELD(0x13B, gx->cmode0, 3, 5, dst_factor); + SET_REG_FIELD(0x13C, gx->cmode0, 8, 24, 0x41); + GX_WRITE_RAS_REG(gx->cmode0); + gx->bpSentNot = 0; +} + +void GXSetColorUpdate(GXBool update_enable) +{ + CHECK_GXBEGIN(0x1A3, "GXSetColorUpdate"); + + SET_REG_FIELD(0x150, gx->cmode0, 1, 3, update_enable); + GX_WRITE_RAS_REG(gx->cmode0); + gx->bpSentNot = 0; +} + +void GXSetAlphaUpdate(GXBool update_enable) +{ + CHECK_GXBEGIN(0x1B0, "GXSetAlphaUpdate"); + + SET_REG_FIELD(0x159, gx->cmode0, 1, 4, update_enable); + GX_WRITE_RAS_REG(gx->cmode0); + gx->bpSentNot = 0; +} + +void GXSetZMode(GXBool compare_enable, GXCompare func, GXBool update_enable) +{ + CHECK_GXBEGIN(0x1CB, "GXSetZMode"); + + SET_REG_FIELD(0x171, gx->zmode, 1, 0, compare_enable); + SET_REG_FIELD(0x172, gx->zmode, 3, 1, func); + SET_REG_FIELD(0x173, gx->zmode, 1, 4, update_enable); + GX_WRITE_RAS_REG(gx->zmode); + gx->bpSentNot = 0; +} + +void GXSetZCompLoc(GXBool before_tex) +{ + CHECK_GXBEGIN(0x1DA, "GXSetZCompLoc"); + + SET_REG_FIELD(0x1DB, gx->peCtrl, 1, 6, before_tex); + GX_WRITE_RAS_REG(gx->peCtrl); + gx->bpSentNot = 0; +} + +void GXSetPixelFmt(GXPixelFmt pix_fmt, GXZFmt16 z_fmt) +{ + u32 oldPeCtrl; + u8 aa; + static u32 p2f[8] = { 0, 1, 2, 3, 4, 4, 4, 5 }; + + CHECK_GXBEGIN(0x1FF, "GXSetPixelFmt"); + oldPeCtrl = gx->peCtrl; + ASSERTMSGLINE(0x203, pix_fmt >= 0 && pix_fmt <= 7, "Invalid Pixel format"); + SET_REG_FIELD(0x205, gx->peCtrl, 3, 0, p2f[pix_fmt]); + SET_REG_FIELD(0x206, gx->peCtrl, 3, 3, z_fmt); + if (oldPeCtrl != gx->peCtrl) { + GX_WRITE_RAS_REG(gx->peCtrl); + if (pix_fmt == GX_PF_RGB565_Z16) + aa = 1; + else + aa = 0; + SET_REG_FIELD(0x20F, gx->genMode, 1, 9, aa); + gx->dirtyState |= 4; + } + if (p2f[pix_fmt] == 4) { + SET_REG_FIELD(0x216, gx->cmode1, 2, 9, (pix_fmt - 4) & 0x3); + SET_REG_FIELD(0x216, gx->cmode1, 8, 24, 0x42); + GX_WRITE_RAS_REG(gx->cmode1); + } + gx->bpSentNot = 0; +} + +void GXSetDither(GXBool dither) +{ + CHECK_GXBEGIN(0x22C, "GXSetDither"); + + SET_REG_FIELD(0x1CE, gx->cmode0, 1, 2, dither); + GX_WRITE_RAS_REG(gx->cmode0); + gx->bpSentNot = 0; +} + +void GXSetDstAlpha(GXBool enable, u8 alpha) +{ + CHECK_GXBEGIN(0x245, "GXSetDstAlpha"); + + SET_REG_FIELD(0x1E2, gx->cmode1, 8, 0, alpha); + SET_REG_FIELD(0x1E3, gx->cmode1, 1, 8, enable); + GX_WRITE_RAS_REG(gx->cmode1); + gx->bpSentNot = 0; +} + +void GXSetFieldMask(GXBool odd_mask, GXBool even_mask) +{ + u32 reg; + + CHECK_GXBEGIN(0x260, "GXSetFieldMask"); + reg = 0; + SET_REG_FIELD(0x262, reg, 1, 0, even_mask); + SET_REG_FIELD(0x263, reg, 1, 1, odd_mask); + SET_REG_FIELD(0x263, reg, 8, 24, 0x44); + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} + +void GXSetFieldMode(GXBool field_mode, GXBool half_aspect_ratio) +{ + u32 reg; + + CHECK_GXBEGIN(0x27D, "GXSetFieldMode"); + SET_REG_FIELD(0x281, gx->lpSize, 1, 22, half_aspect_ratio); + GX_WRITE_RAS_REG(gx->lpSize); + __GXFlushTextureState(); + reg = field_mode | 0x68000000; + GX_WRITE_RAS_REG(reg); + __GXFlushTextureState(); +} diff --git a/src/dolphin/gx/GXStubs.c b/src/dolphin/gx/GXStubs.c new file mode 100644 index 00000000..85f05a89 --- /dev/null +++ b/src/dolphin/gx/GXStubs.c @@ -0,0 +1,5 @@ +#include + +#include + +void __GXSetRange(float nearz, float fgSideX) {} diff --git a/src/dolphin/gx/GXTev.c b/src/dolphin/gx/GXTev.c new file mode 100644 index 00000000..c2f6d67a --- /dev/null +++ b/src/dolphin/gx/GXTev.c @@ -0,0 +1,403 @@ +#include +#include + +#include + +void GXSetTevOp(GXTevStageID id, GXTevMode mode) +{ + GXTevColorArg carg = GX_CC_RASC; + GXTevAlphaArg aarg = GX_CA_RASA; + + CHECK_GXBEGIN(0x1A4, "GXSetTevOp"); + ASSERTMSGLINE(0x1A5, id < 16, "GXSetTevColor*: Invalid Tev Stage Index"); + ASSERTMSGLINE(0x1A6, mode <= 4, "GXSetTevOp: Invalid Tev Mode"); + + if (id != GX_TEVSTAGE0) { + carg = GX_CC_CPREV; + aarg = GX_CA_APREV; + } + + switch (mode) { + case GX_MODULATE: + GXSetTevColorIn(id, GX_CC_ZERO, GX_CC_TEXC, carg, GX_CC_ZERO); + GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_TEXA, aarg, GX_CA_ZERO); + break; + case GX_DECAL: + GXSetTevColorIn(id, carg, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, aarg); + break; + case GX_BLEND: + GXSetTevColorIn(id, carg, GX_CC_ONE, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_TEXA, aarg, GX_CA_ZERO); + break; + case GX_REPLACE: + GXSetTevColorIn(id, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + break; + case GX_PASSCLR: + GXSetTevColorIn(id, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, carg); + GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, aarg); + break; + } + GXSetTevColorOp(id, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(id, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); +} + +void GXSetTevColorIn(GXTevStageID stage, GXTevColorArg a, GXTevColorArg b, GXTevColorArg c, GXTevColorArg d) +{ + u32 *pTevReg; + + CHECK_GXBEGIN(0x242, "GXSetTevColorIn"); + ASSERTMSGLINE(0x243, stage < 16, "GXSetTevColor*: Invalid Tev Stage Index"); + ASSERTMSGLINE(0x244, a <= 15, "GXSetTev*In: A/B/C/D argument out of range"); + ASSERTMSGLINE(0x245, b <= 15, "GXSetTev*In: A/B/C/D argument out of range"); + ASSERTMSGLINE(0x246, c <= 15, "GXSetTev*In: A/B/C/D argument out of range"); + ASSERTMSGLINE(0x247, d <= 15, "GXSetTev*In: A/B/C/D argument out of range"); + + pTevReg = &gx->tevc[stage]; + SET_REG_FIELD(0xED, *pTevReg, 4, 12, a); + SET_REG_FIELD(0xEE, *pTevReg, 4, 8, b); + SET_REG_FIELD(0xEF, *pTevReg, 4, 4, c); + SET_REG_FIELD(0xF0, *pTevReg, 4, 0, d); + + GX_WRITE_RAS_REG(*pTevReg); + gx->bpSentNot = 0; +} + +void GXSetTevAlphaIn(GXTevStageID stage, GXTevAlphaArg a, GXTevAlphaArg b, GXTevAlphaArg c, GXTevAlphaArg d) +{ + u32 *pTevReg; + + CHECK_GXBEGIN(0x266, "GXSetTevAlphaIn"); + ASSERTMSGLINE(0x267, stage < 16, "GXSetTevAlpha*: Invalid Tev Stage Index"); + ASSERTMSGLINE(0x268, a <= 7, "GXSetTev*In: A/B/C/D argument out of range"); + ASSERTMSGLINE(0x269, b <= 7, "GXSetTev*In: A/B/C/D argument out of range"); + ASSERTMSGLINE(0x26A, c <= 7, "GXSetTev*In: A/B/C/D argument out of range"); + ASSERTMSGLINE(0x26B, d <= 7, "GXSetTev*In: A/B/C/D argument out of range"); + + pTevReg = &gx->teva[stage]; + SET_REG_FIELD(0x110, *pTevReg, 3, 13, a); + SET_REG_FIELD(0x111, *pTevReg, 3, 10, b); + SET_REG_FIELD(0x112, *pTevReg, 3, 7, c); + SET_REG_FIELD(0x113, *pTevReg, 3, 4, d); + + GX_WRITE_RAS_REG(*pTevReg); + gx->bpSentNot = 0; +} + +void GXSetTevColorOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, GXBool clamp, GXTevRegID out_reg) +{ + u32 *pTevReg; + + CHECK_GXBEGIN(0x28D, "GXSetTevColorOp"); + ASSERTMSGLINE(0x28E, stage < 16, "GXSetTevColor*: Invalid Tev Stage Index"); + + pTevReg = &gx->tevc[stage]; + SET_REG_FIELD(0x137, *pTevReg, 1, 18, op & 1); + if (op <= 1) { + SET_REG_FIELD(0x139, *pTevReg, 2, 20, scale); + SET_REG_FIELD(0x13A, *pTevReg, 2, 16, bias); + } + else { + SET_REG_FIELD(0x13C, *pTevReg, 2, 20, (op >> 1) & 3); + SET_REG_FIELD(0x13D, *pTevReg, 2, 16, 3); + } + SET_REG_FIELD(0x140, *pTevReg, 1, 19, clamp & 0xFF); + SET_REG_FIELD(0x141, *pTevReg, 2, 22, out_reg); + + GX_WRITE_RAS_REG(*pTevReg); + gx->bpSentNot = 0; +} + +void GXSetTevAlphaOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, GXBool clamp, GXTevRegID out_reg) +{ + u32 *pTevReg; + + CHECK_GXBEGIN(0x2BB, "GXSetTevAlphaOp"); + ASSERTMSGLINE(0x2BC, stage < 16, "GXSetTevAlpha*: Invalid Tev Stage Index"); + + pTevReg = &gx->teva[stage]; + SET_REG_FIELD(0x163, *pTevReg, 1, 18, op & 1); + if (op <= 1) { + SET_REG_FIELD(0x165, *pTevReg, 2, 20, scale); + SET_REG_FIELD(0x166, *pTevReg, 2, 16, bias); + } + else { + SET_REG_FIELD(0x168, *pTevReg, 2, 20, (op >> 1) & 3); + SET_REG_FIELD(0x169, *pTevReg, 2, 16, 3); + } + SET_REG_FIELD(0x16C, *pTevReg, 1, 19, clamp & 0xFF); + SET_REG_FIELD(0x16D, *pTevReg, 2, 22, out_reg); + + GX_WRITE_RAS_REG(*pTevReg); + gx->bpSentNot = 0; +} + +void GXSetTevColor(GXTevRegID id, GXColor color) +{ + u32 regRA; + u32 regBG; + + CHECK_GXBEGIN(0x2E4, "GXSetTevColor"); + regRA = 0; + SET_REG_FIELD(0x185, regRA, 11, 0, color.r); + SET_REG_FIELD(0x186, regRA, 11, 12, color.a); + SET_REG_FIELD(0x187, regRA, 8, 24, 224 + id * 2); + + regBG = 0; + SET_REG_FIELD(0x18A, regBG, 11, 0, color.b); + SET_REG_FIELD(0x18B, regBG, 11, 12, color.g); + SET_REG_FIELD(0x18C, regBG, 8, 24, 225 + id * 2); + + GX_WRITE_RAS_REG(regRA); + GX_WRITE_RAS_REG(regBG); + GX_WRITE_RAS_REG(regBG); + GX_WRITE_RAS_REG(regBG); + gx->bpSentNot = 0; +} + +void GXSetTevColorS10(GXTevRegID id, GXColorS10 color) +{ + u32 regRA; + u32 regBG; + + ASSERTMSGLINE(0x309, color.r >= -1024 && color.r < 1024, "GXSetTevColorS10: Color not in range -1024 to +1023"); + ASSERTMSGLINE(0x30A, color.g >= -1024 && color.g < 1024, "GXSetTevColorS10: Color not in range -1024 to +1023"); + ASSERTMSGLINE(0x30B, color.b >= -1024 && color.b < 1024, "GXSetTevColorS10: Color not in range -1024 to +1023"); + ASSERTMSGLINE(0x30C, color.a >= -1024 && color.a < 1024, "GXSetTevColorS10: Color not in range -1024 to +1023"); + + CHECK_GXBEGIN(0x30E, "GXSetTevColorS10"); + regRA = 0; + SET_REG_FIELD(0x1AF, regRA, 11, 0, color.r & 0x7FF); + SET_REG_FIELD(0x1B0, regRA, 11, 12, color.a & 0x7FF); + SET_REG_FIELD(0x1B1, regRA, 8, 24, 224 + id * 2); + + regBG = 0; + SET_REG_FIELD(0x1B4, regBG, 11, 0, color.b & 0x7FF); + SET_REG_FIELD(0x1B5, regBG, 11, 12, color.g & 0x7FF); + SET_REG_FIELD(0x1B6, regBG, 8, 24, 225 + id * 2); + + GX_WRITE_RAS_REG(regRA); + GX_WRITE_RAS_REG(regBG); + GX_WRITE_RAS_REG(regBG); + GX_WRITE_RAS_REG(regBG); + gx->bpSentNot = 0; +} + +void GXSetTevKColor(GXTevKColorID id, GXColor color) +{ + u32 regRA; + u32 regBG; + + CHECK_GXBEGIN(0x341, "GXSetTevKColor"); + regRA = 0; + SET_REG_FIELD(0x1E0, regRA, 8, 0, color.r); + SET_REG_FIELD(0x1E1, regRA, 8, 12, color.a); + SET_REG_FIELD(0x1E2, regRA, 4, 20, 8); + SET_REG_FIELD(0x1E3, regRA, 8, 24, 224 + id * 2); + + regBG = 0; + SET_REG_FIELD(0x1E6, regBG, 8, 0, color.b); + SET_REG_FIELD(0x1E7, regBG, 8, 12, color.g); + SET_REG_FIELD(0x1E8, regBG, 4, 20, 8); + SET_REG_FIELD(0x1E9, regBG, 8, 24, 225 + id * 2); + + GX_WRITE_RAS_REG(regRA); + GX_WRITE_RAS_REG(regBG); + gx->bpSentNot = 0; +} + +void GXSetTevKColorSel(GXTevStageID stage, GXTevKColorSel sel) +{ + u32 *Kreg; + + CHECK_GXBEGIN(0x368, "GXSetTevKColorSel"); + ASSERTMSGLINE(0x369, stage < 16, "GXSetTevKColor*: Invalid Tev Stage Index"); + + Kreg = &gx->tevKsel[stage >> 1]; + if (stage & 1) { + SET_REG_FIELD(0x20A, *Kreg, 5, 14, sel); + } + else { + SET_REG_FIELD(0x20C, *Kreg, 5, 4, sel); + } + + GX_WRITE_RAS_REG(*Kreg); + gx->bpSentNot = 0; +} + +void GXSetTevKAlphaSel(GXTevStageID stage, GXTevKAlphaSel sel) +{ + u32 *Kreg; + + CHECK_GXBEGIN(0x389, "GXSetTevKAlphaSel"); + ASSERTMSGLINE(0x38A, stage < 16, "GXSetTevKColor*: Invalid Tev Stage Index"); + + Kreg = &gx->tevKsel[stage >> 1]; + if (stage & 1) { + SET_REG_FIELD(0x22B, *Kreg, 5, 19, sel); + } + else { + SET_REG_FIELD(0x22D, *Kreg, 5, 9, sel); + } + + GX_WRITE_RAS_REG(*Kreg); + gx->bpSentNot = 0; +} + +void GXSetTevSwapMode(GXTevStageID stage, GXTevSwapSel ras_sel, GXTevSwapSel tex_sel) +{ + u32 *pTevReg; + + CHECK_GXBEGIN(0x3AE, "GXSetTevSwapMode"); + ASSERTMSGLINE(0x3AF, stage < 16, "GXSetTevSwapMode: Invalid Tev Stage Index"); + + pTevReg = &gx->teva[stage]; + SET_REG_FIELD(0x24E, *pTevReg, 2, 0, ras_sel); + SET_REG_FIELD(0x24F, *pTevReg, 2, 2, tex_sel); + + GX_WRITE_RAS_REG(*pTevReg); + gx->bpSentNot = 0; +} + +void GXSetTevSwapModeTable(GXTevSwapSel table, GXTevColorChan red, GXTevColorChan green, GXTevColorChan blue, GXTevColorChan alpha) +{ + u32 *Kreg; +#if !DEBUG + // not a real variable, but needed to match release + int index = table * 2; +#endif + + CHECK_GXBEGIN(0x3D2, "GXSetTevSwapModeTable"); + ASSERTMSGLINE(0x3D3, table < 4, "GXSetTevSwapModeTable: Invalid Swap Selection Index"); + +#if DEBUG + Kreg = &gx->tevKsel[table * 2]; +#else + Kreg = &gx->tevKsel[index]; +#endif + SET_REG_FIELD(0x272, *Kreg, 2, 0, red); + SET_REG_FIELD(0x273, *Kreg, 2, 2, green); + + GX_WRITE_RAS_REG(*Kreg); + + Kreg = &gx->tevKsel[table * 2 + 1]; + SET_REG_FIELD(0x277, *Kreg, 2, 0, blue); + SET_REG_FIELD(0x278, *Kreg, 2, 2, alpha); + + GX_WRITE_RAS_REG(*Kreg); + gx->bpSentNot = 0; +} + +void GXSetTevClampMode(void) +{ + ASSERTMSGLINE(0x3F4, 0, "GXSetTevClampMode: not available on this hardware"); +} + +void GXSetAlphaCompare(GXCompare comp0, u8 ref0, GXAlphaOp op, GXCompare comp1, u8 ref1) +{ + u32 reg = 0; + + CHECK_GXBEGIN(0x416, "GXSetAlphaCompare"); + SET_REG_FIELD(0x2B4, reg, 8, 0, ref0); + SET_REG_FIELD(0x2B5, reg, 8, 8, ref1); + SET_REG_FIELD(0x2B6, reg, 3, 16, comp0); + SET_REG_FIELD(0x2B7, reg, 3, 19, comp1); + SET_REG_FIELD(0x2B8, reg, 2, 22, op); + SET_REG_FIELD(0x2B9, reg, 8, 24, 0xF3); + + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} + +void GXSetZTexture(GXZTexOp op, GXTexFmt fmt, u32 bias) +{ + u32 zenv0; + u32 zenv1; + u32 type; + + CHECK_GXBEGIN(0x435, "GXSetZTexture"); + + zenv0 = 0; + SET_REG_FIELD(0x2D4, zenv0, 24, 0, bias); + SET_REG_FIELD(0x2D5, zenv0, 8, 24, 0xF4); + + zenv1 = 0; + switch (fmt) { + case GX_TF_Z8: + type = 0; + break; + case GX_TF_Z16: + type = 1; + break; + case GX_TF_Z24X8: + type = 2; + break; + default: + ASSERTMSGLINE(0x441, 0, "GXSetZTexture: Invalid z-texture format"); + type = 2; + break; + } + SET_REG_FIELD(0x2E0, zenv1, 2, 0, type); + SET_REG_FIELD(0x2E1, zenv1, 2, 2, op); + SET_REG_FIELD(0x2E2, zenv1, 8, 24, 0xF5); + + GX_WRITE_RAS_REG(zenv0); + GX_WRITE_RAS_REG(zenv1); + gx->bpSentNot = 0; +} + +void GXSetTevOrder(GXTevStageID stage, GXTexCoordID coord, GXTexMapID map, GXChannelID color) +{ + u32 *ptref; + u32 tmap; + u32 tcoord; + static int c2r[] = { 0, 1, 0, 1, 0, 1, 7, 5, 6 }; + + CHECK_GXBEGIN(0x46B, "GXSetTevOrder"); + ASSERTMSGLINE(0x46C, stage < 16, "GXSetTevOrder: Invalid Tev Stage Index"); + ASSERTMSGLINE(0x46E, coord < 8 || coord == 0xFF, "GXSetTevOrder: Invalid Texcoord"); + ASSERTMSGLINE(0x470, (map & ~0x100) < 8 || map == 0xFF, "GXSetTevOrder: Invalid Tex Map"); + ASSERTMSGLINE(0x472, color >= 4 && color <= 0xFF, "GXSetTevOrder: Invalid Color Channel ID"); + + ptref = &gx->tref[stage / 2]; + gx->texmapId[stage] = map; + + tmap = map & ~0x100; + tmap = (tmap >= GX_MAX_TEXMAP) ? GX_TEXMAP0 : tmap; + + if (coord >= GX_MAX_TEXCOORD) { + tcoord = GX_TEXCOORD0; + gx->tevTcEnab = gx->tevTcEnab & ~(1 << stage); + } + else { + tcoord = coord; + gx->tevTcEnab = gx->tevTcEnab | (1 << stage); + } + + if (stage & 1) { + SET_REG_FIELD(0x486, *ptref, 3, 12, tmap); + SET_REG_FIELD(0x487, *ptref, 3, 15, tcoord); + SET_REG_FIELD(0x489, *ptref, 3, 19, (color == GX_COLOR_NULL) ? 7 : c2r[color]); + SET_REG_FIELD(0x48B, *ptref, 1, 18, (map != GX_TEXMAP_NULL && !(map & 0x100))); + } + else { + SET_REG_FIELD(0x48E, *ptref, 3, 0, tmap); + SET_REG_FIELD(0x48F, *ptref, 3, 3, tcoord); + SET_REG_FIELD(0x491, *ptref, 3, 7, (color == GX_COLOR_NULL) ? 7 : c2r[color]); + SET_REG_FIELD(0x493, *ptref, 1, 6, (map != GX_TEXMAP_NULL && !(map & 0x100))); + } + + GX_WRITE_RAS_REG(*ptref); + gx->bpSentNot = 0; + gx->dirtyState |= 1; +} + +void GXSetNumTevStages(u8 nStages) +{ + CHECK_GXBEGIN(0x4A3, "GXSetNumTevStages"); + + ASSERTMSGLINE(0x4A5, nStages != 0 && nStages <= 16, "GXSetNumTevStages: Exceed max number of tex stages"); + SET_REG_FIELD(0x334, gx->genMode, 4, 10, nStages - 1); + gx->dirtyState |= 4; +} diff --git a/src/dolphin/gx/GXTexture.c b/src/dolphin/gx/GXTexture.c new file mode 100644 index 00000000..ec67f795 --- /dev/null +++ b/src/dolphin/gx/GXTexture.c @@ -0,0 +1,1269 @@ +#include +#include + +#include + +// GXTexObj internal data +typedef struct __GXTexObjInt_struct { + u32 mode0; + u32 mode1; + u32 image0; + u32 image3; + void *userData; + GXTexFmt fmt; + u32 tlutName; + u16 loadCnt; + u8 loadFmt; + u8 flags; +} __GXTexObjInt; + +// GXTexRegion internal data +typedef struct __GXTexRegionInt_struct { + u32 image1; + u32 image2; + u16 sizeEven; + u16 sizeOdd; + u8 is32bMipmap; + u8 isCached; +} __GXTexRegionInt; + +// GXTlutObj internal data +typedef struct __GXTlutObjInt_struct { + u32 tlut; + u32 loadTlut0; + u16 numEntries; +} __GXTlutObjInt; + +// GXTlutRegion internal data +typedef struct __GXTlutRegionInt_struct { + u32 loadTlut1; + __GXTlutObjInt tlutObj; +} __GXTlutRegionInt; + +u8 GXTexMode0Ids[8] = { 0x80, 0x81, 0x82, 0x83, 0xA0, 0xA1, 0xA2, 0xA3 }; +u8 GXTexMode1Ids[8] = { 0x84, 0x85, 0x86, 0x87, 0xA4, 0xA5, 0xA6, 0xA7 }; +u8 GXTexImage0Ids[8] = { 0x88, 0x89, 0x8A, 0x8B, 0xA8, 0xA9, 0xAA, 0xAB }; +u8 GXTexImage1Ids[8] = { 0x8C, 0x8D, 0x8E, 0x8F, 0xAC, 0xAD, 0xAE, 0xAF }; +u8 GXTexImage2Ids[8] = { 0x90, 0x91, 0x92, 0x93, 0xB0, 0xB1, 0xB2, 0xB3 }; +u8 GXTexImage3Ids[8] = { 0x94, 0x95, 0x96, 0x97, 0xB4, 0xB5, 0xB6, 0xB7 }; +u8 GXTexTlutIds[8] = { 0x98, 0x99, 0x9A, 0x9B, 0xB8, 0xB9, 0xBA, 0xBB }; +static u8 GX2HWFiltConv[6] = { 0x00, 0x04, 0x01, 0x05, 0x02, 0x06 }; +static u8 HW2GXFiltConv[8] = { 0x00, 0x02, 0x04, 0x00, 0x01, 0x03, 0x05, 0x00 }; + +static void __GXGetTexTileShift(GXTexFmt fmt, u32 *rowTileS, u32 *colTileS) +{ + switch (fmt) { + case GX_TF_I4: + case 0x8: + case GX_TF_CMPR: + case GX_CTF_R4: + case GX_CTF_Z4: + *rowTileS = 3; + *colTileS = 3; + break; + case GX_TF_I8: + case GX_TF_IA4: + case 0x9: + case GX_TF_Z8: + case GX_CTF_RA4: + case GX_TF_A8: + case GX_CTF_R8: + case GX_CTF_G8: + case GX_CTF_B8: + case GX_CTF_Z8M: + case GX_CTF_Z8L: + *rowTileS = 3; + *colTileS = 2; + break; + case GX_TF_IA8: + case GX_TF_RGB565: + case GX_TF_RGB5A3: + case GX_TF_RGBA8: + case 0xA: + case GX_TF_Z16: + case GX_TF_Z24X8: + case GX_CTF_RA8: + case GX_CTF_RG8: + case GX_CTF_GB8: + case GX_CTF_Z16L: + *rowTileS = 2; + *colTileS = 2; + break; + default: + *rowTileS = *colTileS = 0; + ASSERTMSGLINEV(0x1BC, 0, "%s: invalid texture format", "GX"); + break; + } +} + +u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, u8 mipmap, u8 max_lod) +{ + u32 tileShiftX; + u32 tileShiftY; + u32 tileBytes; + u32 bufferSize; + u32 nx; + u32 ny; + u32 level; + + ASSERTMSGLINEV(0x1CC, width <= 1024, "%s: width too large", "GXGetTexBufferSize"); + ASSERTMSGLINEV(0x1CD, height <= 1024, "%s: height too large", "GXGetTexBufferSize"); + + __GXGetTexTileShift(format, &tileShiftX, &tileShiftY); + if (format == GX_TF_RGBA8 || format == GX_TF_Z24X8) { + tileBytes = 64; + } + else { + tileBytes = 32; + } + if (mipmap == 1) { + nx = 1 << (31 - __cntlzw(width)); + ASSERTMSGLINEV(0x1DF, width == nx, "%s: width must be a power of 2", "GXGetTexBufferSize"); + ny = 1 << (31 - __cntlzw(height)); + ASSERTMSGLINEV(0x1E2, height == ny, "%s: height must be a power of 2", "GXGetTexBufferSize"); + + bufferSize = 0; + for (level = 0; level < max_lod; level++) { + nx = (width + (1 << tileShiftX) - 1) >> tileShiftX; + ny = (height + (1 << tileShiftY) - 1) >> tileShiftY; + bufferSize += tileBytes * (nx * ny); + if (width == 1 && height == 1) { + break; + } + width = (width > 1) ? width >> 1 : 1; + height = (height > 1) ? height >> 1 : 1; + } + } + else { + nx = (width + (1 << tileShiftX) - 1) >> tileShiftX; + ny = (height + (1 << tileShiftY) - 1) >> tileShiftY; + bufferSize = nx * ny * tileBytes; + } + return bufferSize; +} + +void __GetImageTileCount(GXTexFmt fmt, u16 wd, u16 ht, u32 *rowTiles, u32 *colTiles, u32 *cmpTiles) +{ + u32 texRowShift; + u32 texColShift; + + __GXGetTexTileShift(fmt, &texRowShift, &texColShift); + if (wd == 0) { + wd = 1; + } + if (ht == 0) { + ht = 1; + } + *rowTiles = (wd + (1 << texRowShift) - 1) >> texRowShift; + *colTiles = (ht + (1 << texColShift) - 1) >> texColShift; + *cmpTiles = (fmt == GX_TF_RGBA8 || fmt == GX_TF_Z24X8) ? 2 : 1; +} + +#define SOME_SET_REG_MACRO(reg, val) \ + do { \ + (reg) = (u32)__rlwinm((u32)(reg), 0, 27, 23) | val; \ + } while (0); + +void GXInitTexObj(GXTexObj *obj, void *image_ptr, u16 width, u16 height, GXTexFmt format, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, u8 mipmap) +{ + u32 imageBase; + u32 maxLOD; + u16 rowT; + u16 colT; + u32 rowC; + u32 colC; + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x235, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x237, "GXInitTexObj"); + ASSERTMSGLINEV(0x238, width <= 1024, "%s: width too large", "GXInitTexObj"); + ASSERTMSGLINEV(0x239, height <= 1024, "%s: height too large", "GXInitTexObj"); + ASSERTMSGLINEV(0x23B, !(format & 0x20), "%s: invalid texture format", "GXInitTexObj"); + memset(t, 0, 0x20); + SET_REG_FIELD(0x258, t->mode0, 2, 0, wrap_s); + SET_REG_FIELD(0x259, t->mode0, 2, 2, wrap_t); + SET_REG_FIELD(0x25A, t->mode0, 1, 4, 1); + if (mipmap != 0) { + u8 lmax; + t->flags |= 1; + + if (format == 8 || format == 9 || format == 10) { + SOME_SET_REG_MACRO(t->mode0, 0xa0); + } + else { + SOME_SET_REG_MACRO(t->mode0, 0xc0); + } + + if (width > height) { + maxLOD = 31 - __cntlzw(width); + } + else { + maxLOD = 31 - __cntlzw(height); + } + lmax = 16.0f * maxLOD; + SET_REG_FIELD(0x278, t->mode1, 8, 8, lmax); + } + else { + SOME_SET_REG_MACRO(t->mode0, 0x80); + } + t->fmt = format; + SET_REG_FIELD(0x286, t->image0, 10, 0, width - 1); + SET_REG_FIELD(0x287, t->image0, 10, 10, height - 1); + SET_REG_FIELD(0x288, t->image0, 4, 20, format & 0xF); + ASSERTMSGLINEV(0x28E, ((u32)image_ptr & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexObj", "image"); + imageBase = (u32)((u32)image_ptr >> 5) & 0x01FFFFFF; + SET_REG_FIELD(0x290, t->image3, 21, 0, imageBase); + switch (format & 0xF) { + case 0: + case 8: + t->loadFmt = 1; + rowT = 3; + colT = 3; + break; + case 1: + case 2: + case 9: + t->loadFmt = 2; + rowT = 3; + colT = 2; + break; + case 3: + case 4: + case 5: + case 10: + t->loadFmt = 2; + rowT = 2; + colT = 2; + break; + case 6: + t->loadFmt = 3; + rowT = 2; + colT = 2; + break; + case 14: + t->loadFmt = 0; + rowT = 3; + colT = 3; + break; + default: + ASSERTMSGLINEV(0x2BB, 0, "%s: invalid texture format", "GXPreLoadEntireTexture"); + t->loadFmt = 2; + rowT = 2; + colT = 2; + break; + } + rowC = (width + (1 << rowT) - 1) >> rowT; + colC = (height + (1 << colT) - 1) >> colT; + t->loadCnt = (rowC * colC) & 0x7FFF; + t->flags |= 2; +} + +void GXInitTexObjCI( + GXTexObj *obj, void *image_ptr, u16 width, u16 height, GXCITexFmt format, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, u8 mipmap, u32 tlut_name) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x2E1, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x2E3, "GXInitTexObjCI"); + GXInitTexObj(obj, image_ptr, width, height, format, wrap_s, wrap_t, mipmap); + t->flags &= 0xFFFFFFFD; + t->tlutName = tlut_name; +} + +void GXInitTexObjLOD(GXTexObj *obj, GXTexFilter min_filt, GXTexFilter mag_filt, f32 min_lod, f32 max_lod, f32 lod_bias, u8 bias_clamp, u8 do_edge_lod, + GXAnisotropy max_aniso) +{ + u8 lbias; + u8 lmin; + u8 lmax; + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x308, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x30A, "GXInitTexObjLOD"); + + if (lod_bias < -4.0f) { + lod_bias = -4.0f; + } + else if (lod_bias >= 4.0f) { + lod_bias = 3.99f; + } + lbias = 32.0f * lod_bias; + SET_REG_FIELD(0x314, t->mode0, 8, 9, lbias); + ASSERTMSG1LINE(0x317, (u32)mag_filt <= 1, "%s: invalid mag_filt value", "GXInitTexObjLOD"); + SET_REG_FIELD(0x318, t->mode0, 1, 4, (mag_filt == GX_LINEAR) ? 1 : 0); + ASSERTMSG1LINE(0x31B, (u32)min_filt <= 5, "%s: invalid min_filt value", "GXInitTexObjLOD"); + SET_REG_FIELD(0x31C, t->mode0, 3, 5, GX2HWFiltConv[min_filt]); + SET_REG_FIELD(0x31E, t->mode0, 1, 8, do_edge_lod ? 0 : 1); + SET_REG_FIELD(0x321, t->mode0, 1, 17, 0); + SET_REG_FIELD(0x321, t->mode0, 1, 18, 0); + SET_REG_FIELD(0x321, t->mode0, 2, 19, max_aniso); + SET_REG_FIELD(0x322, t->mode0, 1, 21, bias_clamp); + + if (min_lod < 0.0f) { + min_lod = 0.0f; + } + else if (min_lod > 10.0f) { + min_lod = 10.0f; + } + lmin = 16.0f * min_lod; + if (max_lod < 0.0f) { + max_lod = 0.0f; + } + else if (max_lod > 10.0f) { + max_lod = 10.0f; + } + lmax = 16.0f * max_lod; + SET_REG_FIELD(0x330, t->mode1, 8, 0, lmin); + SET_REG_FIELD(0x331, t->mode1, 8, 8, lmax); +} + +void GXInitTexObjData(GXTexObj *obj, void *image_ptr) +{ + u32 imageBase; + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x343, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x345, "GXInitTexObjData"); + ASSERTMSGLINEV(0x348, ((u32)image_ptr & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexObjData", "image"); + imageBase = ((u32)image_ptr >> 5) & 0x01FFFFFF; + SET_REG_FIELD(0x34B, t->image3, 21, 0, imageBase); +} + +void GXInitTexObjWrapMode(GXTexObj *obj, GXTexWrapMode sm, GXTexWrapMode tm) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x35C, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x35E, "GXInitTexObjWrapMode"); + SET_REG_FIELD(0x360, t->mode0, 2, 0, sm); + SET_REG_FIELD(0x361, t->mode0, 2, 2, tm); +} + +void GXInitTexObjTlut(GXTexObj *obj, u32 tlut_name) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x371, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x373, "GXInitTexObjTlut"); + t->tlutName = tlut_name; +} + +void GXInitTexObjFilter(GXTexObj *obj, GXTexFilter min_filt, GXTexFilter mag_filt) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x386, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x388, "GXInitTexObjFilter"); + + ASSERTMSG1LINE(0x38B, (u32)mag_filt <= 1, "%s: invalid mag_filt value", "GXInitTexObjFilter"); + SET_REG_FIELD(0x38C, t->mode0, 1, 4, mag_filt == 1 ? 1 : 0); + + ASSERTMSG1LINE(0x38F, (u32)min_filt <= 5, "%s: invalid min_filt value", "GXInitTexObjFilter"); + SET_REG_FIELD(0x390, t->mode0, 3, 5, GX2HWFiltConv[min_filt]); +} + +void GXInitTexObjMaxLOD(GXTexObj *obj, f32 max_lod) +{ + u8 lmax; + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x3A2, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x3A4, "GXInitTexObjMaxLOD"); + + if (max_lod < 0.0f) { + max_lod = 0.0f; + } + else if (max_lod > 10.0f) { + max_lod = 10.0f; + } + lmax = 16.0f * max_lod; + SET_REG_FIELD(0x3AA, t->mode1, 8, 8, lmax); +} + +void GXInitTexObjMinLOD(GXTexObj *obj, f32 min_lod) +{ + u8 lmin; + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x3BC, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x3BE, "GXInitTexObjMinLOD"); + + if (min_lod < 0.0f) { + min_lod = 0.0f; + } + else if (min_lod > 10.0f) { + min_lod = 10.0f; + } + lmin = 16.0f * min_lod; + SET_REG_FIELD(0x3C4, t->mode1, 8, 0, lmin); +} + +void GXInitTexObjLODBias(GXTexObj *obj, f32 lod_bias) +{ + u8 lbias; // r30 + __GXTexObjInt *t = (__GXTexObjInt *)obj; // r29 + + ASSERTMSGLINE(0x3D6, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x3D8, "GXInitTexObjLODBias"); + + if (lod_bias < -4.0f) { + lod_bias = -4.0f; + } + else if (lod_bias >= 4.0f) { + lod_bias = 3.99f; + } + lbias = 32.0f * lod_bias; + SET_REG_FIELD(0x3DF, t->mode0, 8, 9, lbias); +} + +void GXInitTexObjBiasClamp(GXTexObj *obj, u8 bias_clamp) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; // r30 + + ASSERTMSGLINE(0x3EF, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x3F1, "GXInitTexObjBiasClamp"); + + SET_REG_FIELD(0x3F3, t->mode0, 1, 21, bias_clamp); +} + +void GXInitTexObjEdgeLOD(GXTexObj *obj, u8 do_edge_lod) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; // r30 + + ASSERTMSGLINE(0x403, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x405, "GXInitTexObjEdgeLOD"); + + SET_REG_FIELD(0x407, t->mode0, 1, 8, do_edge_lod ? 0 : 1); +} + +void GXInitTexObjMaxAniso(GXTexObj *obj, GXAnisotropy max_aniso) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; // r30 + + ASSERTMSGLINE(0x417, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x419, "GXInitTexObjMaxAniso"); + + SET_REG_FIELD(0x41B, t->mode0, 2, 19, max_aniso); +} + +void GXInitTexObjUserData(GXTexObj *obj, void *user_data) +{ + __GXTexObjInt *t = (__GXTexObjInt *)obj; + + ASSERTMSGLINE(0x42C, obj, "Texture Object Pointer is null"); + CHECK_GXBEGIN(0x42D, "GXInitTexObjUserData"); + t->userData = user_data; +} + +void *GXGetTexObjUserData(const GXTexObj *obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)obj; + + ASSERTMSGLINE(0x433, obj, "Texture Object Pointer is null"); + return t->userData; +} + +void GXGetTexObjAll( + const GXTexObj *obj, void **image_ptr, u16 *width, u16 *height, GXTexFmt *format, GXTexWrapMode *wrap_s, GXTexWrapMode *wrap_t, u8 *mipmap) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)obj; + + ASSERTMSGLINE(0x447, obj, "Texture Object Pointer is null"); + *image_ptr = (void *)(GET_REG_FIELD(t->image3, 21, 0) << 5); + *width = (u32)GET_REG_FIELD(t->image0, 10, 0) + 1; + *height = (u32)GET_REG_FIELD(t->image0, 10, 10) + 1; + *format = t->fmt; + *wrap_s = GET_REG_FIELD(t->mode0, 2, 0); + *wrap_t = GET_REG_FIELD(t->mode0, 2, 2); + *mipmap = (t->flags & 1) == 1; +} + +void *GXGetTexObjData(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x454, to, "Texture Object Pointer is null"); + return (void *)(GET_REG_FIELD(t->image3, 21, 0) << 5); +} + +u16 GXGetTexObjWidth(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x45A, to, "Texture Object Pointer is null"); + return (u32)GET_REG_FIELD(t->image0, 10, 0) + 1; +} + +u16 GXGetTexObjHeight(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x460, to, "Texture Object Pointer is null"); + return (u32)GET_REG_FIELD(t->image0, 10, 10) + 1; +} + +GXTexFmt GXGetTexObjFmt(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x466, to, "Texture Object Pointer is null"); + return t->fmt; +} + +GXTexWrapMode GXGetTexObjWrapS(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x46C, to, "Texture Object Pointer is null"); + return GET_REG_FIELD(t->mode0, 2, 0); +} + +GXTexWrapMode GXGetTexObjWrapT(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x472, to, "Texture Object Pointer is null"); + return GET_REG_FIELD(t->mode0, 2, 2); +} + +GXBool GXGetTexObjMipMap(const GXTexObj *to) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)to; + + ASSERTMSGLINE(0x478, to, "Texture Object Pointer is null"); + return (t->flags & 1) == 1; +} + +// NONMATCHING +void GXGetTexObjLODAll(const GXTexObj *tex_obj, GXTexFilter *min_filt, GXTexFilter *mag_filt, f32 *min_lod, f32 *max_lod, f32 *lod_bias, + u8 *bias_clamp, u8 *do_edge_lod, GXAnisotropy *max_aniso) +{ + s16 tmp; // r30 + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x48E, tex_obj, "Texture Object Pointer is null"); + *min_filt = HW2GXFiltConv[GET_REG_FIELD(t->mode0, 3, 5)]; + *mag_filt = GET_REG_FIELD(t->mode0, 1, 4); + *min_lod = (u8)t->mode1 / 16.0f; + *max_lod = (u32)GET_REG_FIELD(t->mode1, 8, 8) / 16.0f; + tmp = (s32)GET_REG_FIELD(t->mode0, 8, 9); + *lod_bias = (s8)tmp * 0.03125f; + *bias_clamp = (u32)GET_REG_FIELD(t->mode0, 1, 21); + *do_edge_lod = !GET_REG_FIELD(t->mode0, 1, 8); + *max_aniso = GET_REG_FIELD(t->mode0, 2, 19); +} + +GXTexFilter GXGetTexObjMinFilt(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x49E, tex_obj, "Texture Object Pointer is null"); + return HW2GXFiltConv[GET_REG_FIELD(t->mode0, 3, 5)]; +} + +GXTexFilter GXGetTexObjMagFilt(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4A5, tex_obj, "Texture Object Pointer is null"); + return GET_REG_FIELD(t->mode0, 1, 4); +} + +f32 GXGetTexObjMinLOD(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4AB, tex_obj, "Texture Object Pointer is null"); + return (u32)GET_REG_FIELD(t->mode1, 8, 0) / 16.0f; +} + +f32 GXGetTexObjMaxLOD(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4B1, tex_obj, "Texture Object Pointer is null"); + return (u32)GET_REG_FIELD(t->mode1, 8, 8) / 16.0f; +} + +// NONMATCHING +f32 GXGetTexObjLODBias(const GXTexObj *tex_obj) +{ + s16 tmp; + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4B8, tex_obj, "Texture Object Pointer is null"); + tmp = (s32)GET_REG_FIELD(t->mode0, 8, 9); + return (s8)tmp * 0.03125f; +} + +GXBool GXGetTexObjBiasClamp(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4BF, tex_obj, "Texture Object Pointer is null"); + return (u32)GET_REG_FIELD(t->mode0, 1, 21); +} + +GXBool GXGetTexObjEdgeLOD(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4C5, tex_obj, "Texture Object Pointer is null"); + return !GET_REG_FIELD(t->mode0, 1, 8); +} + +GXAnisotropy GXGetTexObjMaxAniso(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4CB, tex_obj, "Texture Object Pointer is null"); + return GET_REG_FIELD(t->mode0, 2, 19); +} + +u32 GXGetTexObjTlut(const GXTexObj *tex_obj) +{ + const __GXTexObjInt *t = (const __GXTexObjInt *)tex_obj; + + ASSERTMSGLINE(0x4D1, tex_obj, "Texture Object Pointer is null"); + return t->tlutName; +} + +void GXLoadTexObjPreLoaded(GXTexObj *obj, GXTexRegion *region, GXTexMapID id) +{ + __GXTlutRegionInt *tlr; + __GXTexObjInt *t = (__GXTexObjInt *)obj; + __GXTexRegionInt *r = (__GXTexRegionInt *)region; + + ASSERTMSGLINE(0x4E9, obj, "Texture Object Pointer is null"); + ASSERTMSGLINE(0x4E9, region, "TexRegion Object Pointer is null"); + CHECK_GXBEGIN(0x4EB, "GXLoadTexObjPreLoaded"); + ASSERTMSGLINEV(0x4EC, id < 8, "%s: invalid texture map ID", "GXLoadTexObj"); + + SET_REG_FIELD(0x4F7, t->mode0, 8, 24, GXTexMode0Ids[id]); + SET_REG_FIELD(0x4F8, t->mode1, 8, 24, GXTexMode1Ids[id]); + SET_REG_FIELD(0x4F9, t->image0, 8, 24, GXTexImage0Ids[id]); + SET_REG_FIELD(0x4FA, r->image1, 8, 24, GXTexImage1Ids[id]); + SET_REG_FIELD(0x4FB, r->image2, 8, 24, GXTexImage2Ids[id]); + SET_REG_FIELD(0x4FC, t->image3, 8, 24, GXTexImage3Ids[id]); + + GX_WRITE_RAS_REG(t->mode0); + GX_WRITE_RAS_REG(t->mode1); + GX_WRITE_RAS_REG(t->image0); + GX_WRITE_RAS_REG(r->image1); + GX_WRITE_RAS_REG(r->image2); + GX_WRITE_RAS_REG(t->image3); + + if (!(t->flags & 2)) { + ASSERTMSGLINEV(0x507, gx->tlutRegionCallback, "%s: Tex/Tlut Region Callback not set", "GXLoadTexObj/PreLoaded"); + tlr = (__GXTlutRegionInt *)gx->tlutRegionCallback(t->tlutName); + ASSERTMSGLINEV(0x509, tlr, "%s: Tex/Tlut Region Callback returns NULL", "GXLoadTexObj/PreLoaded"); + + SET_REG_FIELD(0x50B, tlr->tlutObj.tlut, 8, 24, GXTexTlutIds[id]); + GX_WRITE_RAS_REG(tlr->tlutObj.tlut); + } + gx->tImage0[id] = t->image0; + gx->tMode0[id] = t->mode0; + gx->dirtyState |= 1; + gx->bpSentNot = 0; +} + +void GXLoadTexObj(GXTexObj *obj, GXTexMapID id) +{ + GXTexRegion *r; + + CHECK_GXBEGIN(0x526, "GXLoadTexObj"); + ASSERTMSGLINEV(0x527, id < 8, "%s: invalid texture map ID", "GXLoadTexObj"); + ASSERTMSGLINEV(0x52C, gx->texRegionCallback, "%s: Tex/Tlut Region Callback not set", "GXLoadTexObj"); + r = gx->texRegionCallback(obj, id); + ASSERTMSGLINEV(0x52E, r, "%s: Tex/Tlut Region Callback returns NULL", "GXLoadTexObj"); + GXLoadTexObjPreLoaded(obj, r, id); +} + +void GXInitTlutObj(GXTlutObj *tlut_obj, void *lut, GXTlutFmt fmt, u16 n_entries) +{ + __GXTlutObjInt *t = (__GXTlutObjInt *)tlut_obj; + + ASSERTMSGLINE(0x546, tlut_obj, "TLut Object Pointer is null"); + CHECK_GXBEGIN(0x547, "GXInitTlutObj"); + ASSERTMSGLINEV(0x54A, n_entries <= 0x4000, "%s: number of entries exceeds maximum", "GXInitTlutObj"); + ASSERTMSGLINEV(0x54C, ((u32)lut & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTlutObj", "Tlut"); + t->tlut = 0; + SET_REG_FIELD(0x54F, t->tlut, 2, 10, fmt); + SET_REG_FIELD(0x550, t->loadTlut0, 21, 0, ((u32)lut & 0x3FFFFFFF) >> 5); + SET_REG_FIELD(0x551, t->loadTlut0, 8, 24, 0x64); + t->numEntries = n_entries; +} + +void GXGetTlutObjAll(const GXTlutObj *tlut_obj, void **data, GXTlutFmt *format, u16 *numEntries) +{ + const __GXTlutObjInt *t = (const __GXTlutObjInt *)tlut_obj; + + ASSERTMSGLINE(0x566, tlut_obj, "TLut Object Pointer is null"); + *data = (void *)(GET_REG_FIELD(t->loadTlut0, 21, 0) << 5); + *format = GET_REG_FIELD(t->tlut, 2, 10); + *numEntries = t->numEntries; +} + +void *GXGetTlutObjData(const GXTlutObj *tlut_obj) +{ + const __GXTlutObjInt *t = (const __GXTlutObjInt *)tlut_obj; + + ASSERTMSGLINE(0x56F, tlut_obj, "TLut Object Pointer is null"); + return (void *)(GET_REG_FIELD(t->loadTlut0, 21, 0) << 5); +} + +GXTlutFmt GXGetTlutObjFmt(const GXTlutObj *tlut_obj) +{ + const __GXTlutObjInt *t = (const __GXTlutObjInt *)tlut_obj; + + ASSERTMSGLINE(0x576, tlut_obj, "TLut Object Pointer is null"); + return GET_REG_FIELD(t->tlut, 2, 10); +} + +u16 GXGetTlutObjNumEntries(const GXTlutObj *tlut_obj) +{ + const __GXTlutObjInt *t = (const __GXTlutObjInt *)tlut_obj; + + ASSERTMSGLINE(0x57D, tlut_obj, "TLut Object Pointer is null"); + return t->numEntries; +} + +void GXLoadTlut(GXTlutObj *tlut_obj, u32 tlut_name) +{ + __GXTlutRegionInt *r; + u32 tlut_offset; + __GXTlutObjInt *t = (__GXTlutObjInt *)tlut_obj; + + ASSERTMSGLINE(0x598, tlut_obj, "TLut Object Pointer is null"); + CHECK_GXBEGIN(0x59A, "GXLoadTlut"); + ASSERTMSGLINEV(0x59B, gx->tlutRegionCallback, "%s: Tex/Tlut Region Callback not set", "GXLoadTlut"); + r = (__GXTlutRegionInt *)gx->tlutRegionCallback(tlut_name); + ASSERTMSGLINEV(0x59D, r, "%s: Tex/Tlut Region Callback returns NULL", "GXLoadTlut"); + __GXFlushTextureState(); + GX_WRITE_RAS_REG(t->loadTlut0); + GX_WRITE_RAS_REG(r->loadTlut1); + __GXFlushTextureState(); + tlut_offset = r->loadTlut1 & 0x3FF; + SET_REG_FIELD(0x5AD, t->tlut, 10, 0, tlut_offset); + r->tlutObj = *t; +} + +void GXInitTexCacheRegion(GXTexRegion *region, u8 is_32b_mipmap, u32 tmem_even, GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd) +{ + u32 WidthExp2; + __GXTexRegionInt *t = (__GXTexRegionInt *)region; + + ASSERTMSGLINE(0x5CC, region, "TexRegion Object Pointer is null"); + CHECK_GXBEGIN(0x5CE, "GXInitTexCacheRegion"); + ASSERTMSGLINEV(0x5D0, (tmem_even & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexCacheRegion", "tmem even"); + ASSERTMSGLINEV(0x5D2, (tmem_odd & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexCacheRegion", "tmem odd"); + switch (size_even) { + case GX_TEXCACHE_32K: + WidthExp2 = 3; + break; + case GX_TEXCACHE_128K: + WidthExp2 = 4; + break; + case GX_TEXCACHE_512K: + WidthExp2 = 5; + break; + default: + ASSERTMSGLINEV(0x5DA, 0, "%s: Invalid %s size", "GXInitTexCacheRegion", "tmem even"); + break; + } + t->image1 = 0; + SET_REG_FIELD(0x5DF, t->image1, 15, 0, tmem_even >> 5); + SET_REG_FIELD(0x5E0, t->image1, 3, 15, WidthExp2); + SET_REG_FIELD(0x5E1, t->image1, 3, 18, WidthExp2); + SET_REG_FIELD(0x5E2, t->image1, 1, 21, 0); + + switch (size_odd) { + case GX_TEXCACHE_32K: + WidthExp2 = 3; + break; + case GX_TEXCACHE_128K: + WidthExp2 = 4; + break; + case GX_TEXCACHE_512K: + WidthExp2 = 5; + break; + case GX_TEXCACHE_NONE: + WidthExp2 = 0; + break; + default: + ASSERTMSGLINEV(0x5EA, 0, "%s: Invalid %s size", "GXInitTexCacheRegion", "tmem odd"); + break; + } + t->image2 = 0; + SET_REG_FIELD(0x5EF, t->image2, 15, 0, tmem_odd >> 5); + SET_REG_FIELD(0x5F0, t->image2, 3, 15, WidthExp2); + SET_REG_FIELD(0x5F1, t->image2, 3, 18, WidthExp2); + t->is32bMipmap = is_32b_mipmap; + t->isCached = 1; +} + +void GXInitTexPreLoadRegion(GXTexRegion *region, u32 tmem_even, u32 size_even, u32 tmem_odd, u32 size_odd) +{ + __GXTexRegionInt *t = (__GXTexRegionInt *)region; + + ASSERTMSGLINE(0x60E, region, "TexRegion Object Pointer is null"); + CHECK_GXBEGIN(0x610, "GXInitTexPreLoadRegion"); + ASSERTMSGLINEV(0x612, (tmem_even & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexPreLoadRegion", "tmem even"); + ASSERTMSGLINEV(0x614, (tmem_odd & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexPreLoadRegion", "tmem odd"); + ASSERTMSGLINEV(0x616, (size_even & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexPreLoadRegion", "size even"); + ASSERTMSGLINEV(0x618, (size_odd & 0x1F) == 0, "%s: %s pointer not aligned to 32B", "GXInitTexPreLoadRegion", "size odd"); + + t->image1 = 0; + SET_REG_FIELD(0x61C, t->image1, 15, 0, tmem_even >> 5); + SET_REG_FIELD(0x61D, t->image1, 3, 15, 0); + SET_REG_FIELD(0x61E, t->image1, 3, 18, 0); + SET_REG_FIELD(0x61F, t->image1, 1, 21, 1); + + t->image2 = 0; + SET_REG_FIELD(0x622, t->image2, 15, 0, tmem_odd >> 5); + SET_REG_FIELD(0x623, t->image2, 3, 15, 0); + SET_REG_FIELD(0x624, t->image2, 3, 18, 0); + t->is32bMipmap = 0; + t->isCached = 0; + t->sizeEven = (u16)(size_even >> 5U); + t->sizeOdd = (u16)(size_odd >> 5U); +} + +void GXGetTexRegionAll(const GXTexRegion *region, u8 *is_cached, u8 *is_32b_mipmap, u32 *tmem_even, u32 *size_even, u32 *tmem_odd, u32 *size_odd) +{ + const __GXTexRegionInt *t = (const __GXTexRegionInt *)region; + + ASSERTMSGLINE(0x641, region, "TexRegion Object Pointer is null"); + *tmem_even = GET_REG_FIELD(t->image1, 15, 0) << 5; + *tmem_odd = GET_REG_FIELD(t->image2, 15, 0) << 5; + if (t->isCached) { + switch (GET_REG_FIELD(t->image1, 3, 15)) { + case 3: + *size_even = 0x8000; + break; + case 4: + *size_even = 0x20000; + break; + case 5: + *size_even = 0x80000; + break; + default: + *size_even = 0; + break; + } + switch (GET_REG_FIELD(t->image2, 3, 15)) { + case 3: + *size_odd = 0x8000; + break; + case 4: + *size_odd = 0x20000; + break; + case 5: + *size_odd = 0x80000; + break; + default: + *size_odd = 0; + break; + } + } + else { + *size_even = t->sizeEven << 5; + *size_odd = t->sizeOdd << 5; + } + *is_32b_mipmap = t->is32bMipmap; + *is_cached = t->isCached; +} + +void GXInitTlutRegion(GXTlutRegion *region, u32 tmem_addr, GXTlutSize tlut_size) +{ + __GXTlutRegionInt *t = (__GXTlutRegionInt *)region; + + ASSERTMSGLINE(0x674, region, "TLutRegion Object Pointer is null"); + CHECK_GXBEGIN(0x676, "GXInitTlutRegion"); + ASSERTMSGLINEV(0x677, (tmem_addr & 0x1FF) == 0, "%s: tmem pointer is not aligned to 512B", "GXInitTlutRegion"); + ASSERTMSGLINEV(0x678, tlut_size <= 0x400, "%s: tlut size exceeds 16K", "GXInitTlutRegion"); + t->loadTlut1 = 0; + tmem_addr -= 0x80000; + SET_REG_FIELD(0x67C, t->loadTlut1, 10, 0, tmem_addr >> 9); + SET_REG_FIELD(0x67D, t->loadTlut1, 11, 10, tlut_size); + SET_REG_FIELD(0x67E, t->loadTlut1, 8, 24, 0x65); +} + +void GXGetTlutRegionAll(const GXTlutRegion *region, u32 *tmem_addr, GXTlutSize *tlut_size) +{ + const __GXTlutRegionInt *t = (const __GXTlutRegionInt *)region; + + ASSERTMSGLINE(0x692, region, "TLutRegion Object Pointer is null"); + *tmem_addr = (GET_REG_FIELD(t->loadTlut1, 10, 0) << 9) + 0x80000; + *tlut_size = GET_REG_FIELD(t->loadTlut1, 11, 10); +} + +void GXInvalidateTexRegion(GXTexRegion *region) +{ + s32 wle; + s32 hle; + s32 wlo; + s32 hlo; + s32 count; + u32 reg0; + u32 reg1; + __GXTexRegionInt *r = (__GXTexRegionInt *)region; + + ASSERTMSGLINE(0x6A9, region, "TexRegion Object Pointer is null"); + CHECK_GXBEGIN(0x6AB, "GXInvalidateTexRegion"); + + wle = GET_REG_FIELD(r->image1, 3, 15) - 1; + hle = GET_REG_FIELD(r->image1, 3, 18) - 1; + wlo = GET_REG_FIELD(r->image2, 3, 15) - 1; + hlo = GET_REG_FIELD(r->image2, 3, 18) - 1; + if (wle < 0) { + wle = 0; + } + if (hle < 0) { + hle = 0; + } + if (wlo < 0) { + wlo = 0; + } + if (hlo < 0) { + hlo = 0; + } + count = wle + hle; + if (r->is32bMipmap) { + count = wlo + hlo - 2 + count; + } + reg0 = 0; + SET_REG_FIELD(0x6BC, reg0, 9, 0, GET_REG_FIELD(r->image1, 9, 6)); + SET_REG_FIELD(0x6BD, reg0, 4, 9, count); + SET_REG_FIELD(0x6BC, reg0, 8, 24, 0x66); + if (wlo != 0) { + count = wlo + hlo; + if (r->is32bMipmap) { + count = wle + hle - 2 + count; + } + reg1 = 0; + SET_REG_FIELD(0x6C8, reg1, 9, 0, GET_REG_FIELD(r->image2, 9, 6)); + SET_REG_FIELD(0x6C9, reg1, 4, 9, count); + SET_REG_FIELD(0x6CA, reg1, 8, 24, 0x66); + } + __GXFlushTextureState(); + GX_WRITE_RAS_REG(reg0); + if (wlo != 0) { + GX_WRITE_RAS_REG(reg1); + } + __GXFlushTextureState(); + + reg0; + reg1; + r; // needed to match +} + +void GXInvalidateTexAll(void) +{ + u32 reg0; + u32 reg1; + + CHECK_GXBEGIN(0x6DB, "GXInvalidateTexAll"); + reg0 = 0x66001000; + reg1 = 0x66001100; + __GXFlushTextureState(); + GX_WRITE_RAS_REG(reg0); + GX_WRITE_RAS_REG(reg1); + __GXFlushTextureState(); +} + +GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback f) +{ + GXTexRegionCallback oldcb = gx->texRegionCallback; + + gx->texRegionCallback = f; + return oldcb; +} + +GXTlutRegionCallback GXSetTlutRegionCallback(GXTlutRegionCallback f) +{ + GXTlutRegionCallback oldcb = gx->tlutRegionCallback; + + gx->tlutRegionCallback = f; + return oldcb; +} + +void GXPreLoadEntireTexture(GXTexObj *tex_obj, GXTexRegion *region) +{ + u8 isMipMap; + u8 is32bit; + u32 wd; + u32 ht; + u32 maxLevelIndex; + u32 loadImage0; + u32 loadImage1; + u32 loadImage2; + u32 loadImage3; + u32 base; + u32 tmem1; + u32 tmem2; + u32 tmemAR; + u32 tmemGB; + u32 nTiles; + u32 rowTiles; + u32 colTiles; + u32 cmpTiles; + u32 i; + __GXTexObjInt *t = (__GXTexObjInt *)tex_obj; + __GXTexRegionInt *r = (__GXTexRegionInt *)region; + + ASSERTMSGLINE(0x71C, tex_obj, "Texture Object Pointer is null"); + ASSERTMSGLINE(0x71C, region, "TexRegion Object Pointer is null"); + CHECK_GXBEGIN(0x71E, "GXPreLoadEntireTexture"); + isMipMap = (t->flags & 1) == 1; + is32bit = GET_REG_FIELD(t->image0, 4, 20) == 6; + + loadImage0 = 0; + SET_REG_FIELD(0, loadImage0, 8, 24, 0x60); + base = t->image3 & 0x1FFFFF; + SET_REG_FIELD(0x727, loadImage0, 21, 0, base); + + loadImage1 = 0; + SET_REG_FIELD(0, loadImage1, 8, 24, 0x61); + tmem1 = r->image1 & 0x7FFF; + SET_REG_FIELD(0x72D, loadImage1, 15, 0, tmem1); + + loadImage2 = 0; + SET_REG_FIELD(0, loadImage2, 8, 24, 0x62); + tmem2 = r->image2 & 0x7FFF; + SET_REG_FIELD(0x733, loadImage2, 15, 0, tmem2); + + loadImage3 = 0; + SET_REG_FIELD(0, loadImage3, 8, 24, 0x63); + SET_REG_FIELD(0x738, loadImage3, 15, 0, t->loadCnt); + SET_REG_FIELD(0x739, loadImage3, 2, 15, t->loadFmt); + maxLevelIndex = 0; + nTiles = t->loadCnt; + if (isMipMap != 0) { + wd = GET_REG_FIELD(t->image0, 10, 0) + 1; + ht = GET_REG_FIELD(t->image0, 10, 10) + 1; + if (wd > ht) { + maxLevelIndex = (u16)(31 - __cntlzw(wd)); + } + else { + maxLevelIndex = (u16)(31 - __cntlzw(ht)); + } + } + __GXFlushTextureState(); + GX_WRITE_RAS_REG(loadImage0); + GX_WRITE_RAS_REG(loadImage1); + GX_WRITE_RAS_REG(loadImage2); + GX_WRITE_RAS_REG(loadImage3); + if (maxLevelIndex != 0) { + tmemAR = tmem1; + tmemGB = tmem2; + for (i = 0; i < maxLevelIndex; i++) { + if (is32bit != 0) { + base += nTiles * 2; + tmemAR += nTiles; + tmemGB += nTiles; + } + else { + base += nTiles; + if (i & 1) { + tmemGB += nTiles; + } + else { + tmemAR += nTiles; + } + } + tmem1 = (i & 1) ? tmemAR : tmemGB; + tmem2 = (i & 1) ? tmemGB : tmemAR; + __GetImageTileCount(t->fmt, (u16)(wd >> (i + 1)), (u16)(ht >> (i + 1)), &rowTiles, &colTiles, &cmpTiles); + nTiles = rowTiles * colTiles; + SET_REG_FIELD(0x7A5, loadImage0, 21, 0, base); + SET_REG_FIELD(0x7A6, loadImage1, 15, 0, tmem1); + SET_REG_FIELD(0x7A7, loadImage2, 15, 0, tmem2); + SET_REG_FIELD(0x7A8, loadImage3, 15, 0, nTiles); + GX_WRITE_RAS_REG(loadImage0); + GX_WRITE_RAS_REG(loadImage1); + GX_WRITE_RAS_REG(loadImage2); + GX_WRITE_RAS_REG(loadImage3); + } + } + __GXFlushTextureState(); +} + +void GXSetTexCoordScaleManually(GXTexCoordID coord, u8 enable, u16 ss, u16 ts) +{ + CHECK_GXBEGIN(0x7C5, "GXSetTexCoordScaleManually"); + ASSERTMSGLINEV(0x7C7, coord < 8, "%s: bad texcoord specified", "GXSetTexCoordScaleManually"); + gx->tcsManEnab = (gx->tcsManEnab & ~(1 << coord)) | (enable << coord); + if (enable != 0) { + SET_REG_FIELD(0x7CD, gx->suTs0[coord], 16, 0, (u16)(ss - 1)); + SET_REG_FIELD(0x7CE, gx->suTs1[coord], 16, 0, (u16)(ts - 1)); + GX_WRITE_RAS_REG(gx->suTs0[coord]); + GX_WRITE_RAS_REG(gx->suTs1[coord]); + gx->bpSentNot = 0; + } +} + +void GXSetTexCoordCylWrap(GXTexCoordID coord, u8 s_enable, u8 t_enable) +{ + CHECK_GXBEGIN(0x7E7, "GXSetTexCoordCylWrap"); + ASSERTMSGLINEV(0x7E9, coord < 8, "%s: bad texcoord specified", "GXSetTexCoordCylWrap"); + SET_REG_FIELD(0x7EB, gx->suTs0[coord], 1, 17, s_enable); + SET_REG_FIELD(0x7EC, gx->suTs1[coord], 1, 17, t_enable); + if (gx->tcsManEnab & (1 << coord)) { + GX_WRITE_RAS_REG(gx->suTs0[coord]); + GX_WRITE_RAS_REG(gx->suTs1[coord]); + gx->bpSentNot = 0; + } +} + +void GXSetTexCoordBias(GXTexCoordID coord, u8 s_enable, u8 t_enable) +{ + CHECK_GXBEGIN(0x806, "GXSetTexCoordBias"); + ASSERTMSGLINEV(0x808, coord < 8, "%s: bad texcoord specified", "GXSetTexCoordBias"); + SET_REG_FIELD(0x80A, gx->suTs0[coord], 1, 16, s_enable); + SET_REG_FIELD(0x80B, gx->suTs1[coord], 1, 16, t_enable); + if (gx->tcsManEnab & (1 << coord)) { + GX_WRITE_RAS_REG(gx->suTs0[coord]); + GX_WRITE_RAS_REG(gx->suTs1[coord]); + gx->bpSentNot = 0; + } +} + +static void __SetSURegs(u32 tmap, u32 tcoord) +{ + u32 w; + u32 h; + u8 s_bias; + u8 t_bias; + + w = GET_REG_FIELD(gx->tImage0[tmap], 10, 0); + h = GET_REG_FIELD(gx->tImage0[tmap], 10, 10); + SET_REG_FIELD(0x829, gx->suTs0[tcoord], 16, 0, w); + SET_REG_FIELD(0x82A, gx->suTs1[tcoord], 16, 0, h); + s_bias = GET_REG_FIELD(gx->tMode0[tmap], 2, 0) == 1; + t_bias = GET_REG_FIELD(gx->tMode0[tmap], 2, 2) == 1; + SET_REG_FIELD(0x830, gx->suTs0[tcoord], 1, 16, s_bias); + SET_REG_FIELD(0x831, gx->suTs1[tcoord], 1, 16, t_bias); + GX_WRITE_RAS_REG(gx->suTs0[tcoord]); + GX_WRITE_RAS_REG(gx->suTs1[tcoord]); + gx->bpSentNot = 0; +} + +void __GXSetSUTexRegs(void) +{ + u32 nStages; + u32 nIndStages; + u32 i; + u32 map; + u32 tmap; + u32 coord; + u32 *ptref; + + if (gx->tcsManEnab != 0xFF) { + nStages = GET_REG_FIELD(gx->genMode, 4, 10) + 1; + nIndStages = GET_REG_FIELD(gx->genMode, 3, 16); + for (i = 0; i < nIndStages; i++) { + switch (i) { + case 0: + tmap = GET_REG_FIELD(gx->iref, 3, 0); + coord = GET_REG_FIELD(gx->iref, 3, 3); + break; + case 1: + tmap = GET_REG_FIELD(gx->iref, 3, 6); + coord = GET_REG_FIELD(gx->iref, 3, 9); + break; + case 2: + tmap = GET_REG_FIELD(gx->iref, 3, 12); + coord = GET_REG_FIELD(gx->iref, 3, 15); + break; + case 3: + tmap = GET_REG_FIELD(gx->iref, 3, 18); + coord = GET_REG_FIELD(gx->iref, 3, 21); + break; + } + if (!(gx->tcsManEnab & (1 << coord))) { + __SetSURegs(tmap, coord); + } + } + i = 0; + for (i = 0; i < nStages; i++) { + ptref = &gx->tref[i / 2]; + map = gx->texmapId[i]; + tmap = map & 0xFFFFFEFF; + if (i & 1) { + coord = GET_REG_FIELD(*ptref, 3, 15); + } + else { + coord = GET_REG_FIELD(*ptref, 3, 3); + } + if ((tmap != 0xFF) && !(gx->tcsManEnab & (1 << coord)) && (gx->tevTcEnab & (1 << i))) { + __SetSURegs(tmap, coord); + } + } + } +} + +void __GXGetSUTexSize(GXTexCoordID coord, u16 *width, u16 *height) +{ + *width = (u16)gx->suTs0[coord] + 1; + *height = (u16)gx->suTs1[coord] + 1; +} + +void __GXSetTmemConfig(u32 config) +{ + switch (config) { + case 1: + GX_WRITE_RAS_REG(0x8c0d8000); + GX_WRITE_RAS_REG(0x900dc000); + + GX_WRITE_RAS_REG(0x8d0d8800); + GX_WRITE_RAS_REG(0x910dc800); + + GX_WRITE_RAS_REG(0x8e0d9000); + GX_WRITE_RAS_REG(0x920dd000); + + GX_WRITE_RAS_REG(0x8f0d9800); + GX_WRITE_RAS_REG(0x930dd800); + + GX_WRITE_RAS_REG(0xac0da000); + GX_WRITE_RAS_REG(0xb00de000); + + GX_WRITE_RAS_REG(0xad0da800); + GX_WRITE_RAS_REG(0xb10de800); + + GX_WRITE_RAS_REG(0xae0db000); + GX_WRITE_RAS_REG(0xb20df000); + + GX_WRITE_RAS_REG(0xaf0db800); + GX_WRITE_RAS_REG(0xb30df800); + + break; + case 0: + default: + GX_WRITE_RAS_REG(0x8c0d8000); + GX_WRITE_RAS_REG(0x900dc000); + + GX_WRITE_RAS_REG(0x8d0d8400); + GX_WRITE_RAS_REG(0x910dc400); + + GX_WRITE_RAS_REG(0x8e0d8800); + GX_WRITE_RAS_REG(0x920dc800); + + GX_WRITE_RAS_REG(0x8f0d8c00); + GX_WRITE_RAS_REG(0x930dcc00); + + GX_WRITE_RAS_REG(0xac0d9000); + GX_WRITE_RAS_REG(0xb00dd000); + + GX_WRITE_RAS_REG(0xad0d9400); + GX_WRITE_RAS_REG(0xb10dd400); + + GX_WRITE_RAS_REG(0xae0d9800); + GX_WRITE_RAS_REG(0xb20dd800); + + GX_WRITE_RAS_REG(0xaf0d9c00); + GX_WRITE_RAS_REG(0xb30ddc00); + + break; + } +} diff --git a/src/dolphin/gx/GXTransform.c b/src/dolphin/gx/GXTransform.c new file mode 100644 index 00000000..dbe9d5d1 --- /dev/null +++ b/src/dolphin/gx/GXTransform.c @@ -0,0 +1,372 @@ +#include +#include +#include + +#include + +void GXProject(f32 x, f32 y, f32 z, const f32 mtx[3][4], const f32 *pm, const f32 *vp, f32 *sx, f32 *sy, f32 *sz) +{ + Vec peye; + f32 xc; + f32 yc; + f32 zc; + f32 wc; + + ASSERTMSGLINE(0xA8, pm && vp && sx && sy && sz, "GXGet*: invalid null pointer"); + + peye.x = mtx[0][3] + ((mtx[0][2] * z) + ((mtx[0][0] * x) + (mtx[0][1] * y))); + peye.y = mtx[1][3] + ((mtx[1][2] * z) + ((mtx[1][0] * x) + (mtx[1][1] * y))); + peye.z = mtx[2][3] + ((mtx[2][2] * z) + ((mtx[2][0] * x) + (mtx[2][1] * y))); + if (pm[0] == 0.0f) { + xc = (peye.x * pm[1]) + (peye.z * pm[2]); + yc = (peye.y * pm[3]) + (peye.z * pm[4]); + zc = pm[6] + (peye.z * pm[5]); + wc = 1.0f / -peye.z; + } + else { + xc = pm[2] + (peye.x * pm[1]); + yc = pm[4] + (peye.y * pm[3]); + zc = pm[6] + (peye.z * pm[5]); + wc = 1.0f; + } + *sx = (vp[2] / 2.0f) + (vp[0] + (wc * (xc * vp[2] / 2.0f))); + *sy = (vp[3] / 2.0f) + (vp[1] + (wc * (-yc * vp[3] / 2.0f))); + *sz = vp[5] + (wc * (zc * (vp[5] - vp[4]))); +} + +static void WriteProjPS(const register f32 proj[6], register volatile void *dest) +{ + register f32 p01, p23, p45; + + asm { + psq_l p01, 0(proj), 0, 0 + psq_l p23, 8(proj), 0, 0 + psq_l p45, 16(proj), 0, 0 + psq_st p01, 0(dest), 0, 0 + psq_st p23, 0(dest), 0, 0 + psq_st p45, 0(dest), 0, 0 + } +} + +static void __GXSetProjection(void) +{ + u32 reg = 0x00061020; + GX_WRITE_U8(0x10); + GX_WRITE_U32(reg); + GX_WRITE_XF_REG_F(32, gx->projMtx[0]); + GX_WRITE_XF_REG_F(33, gx->projMtx[1]); + GX_WRITE_XF_REG_F(34, gx->projMtx[2]); + GX_WRITE_XF_REG_F(35, gx->projMtx[3]); + GX_WRITE_XF_REG_F(36, gx->projMtx[4]); + GX_WRITE_XF_REG_F(37, gx->projMtx[5]); + GX_WRITE_XF_REG_2(38, gx->projType); +} + +void GXSetProjection(f32 mtx[4][4], GXProjectionType type) +{ + CHECK_GXBEGIN(0x127, "GXSetProjection"); + + gx->projType = type; + gx->projMtx[0] = mtx[0][0]; + gx->projMtx[2] = mtx[1][1]; + gx->projMtx[4] = mtx[2][2]; + gx->projMtx[5] = mtx[2][3]; + if (type == GX_ORTHOGRAPHIC) { + gx->projMtx[1] = mtx[0][3]; + gx->projMtx[3] = mtx[1][3]; + } + else { + gx->projMtx[1] = mtx[0][2]; + gx->projMtx[3] = mtx[1][2]; + } + + __GXSetProjection(); + gx->bpSentNot = 1; +} + +#define qr0 0 + +void GXGetProjectionv(f32 *ptr) +{ + ASSERTMSGLINE(0x172, ptr, "GXGet*: invalid null pointer"); + + ptr[0] = gx->projType; + + ptr[1] = gx->projMtx[0]; + ptr[2] = gx->projMtx[1]; + ptr[3] = gx->projMtx[2]; + ptr[4] = gx->projMtx[3]; + ptr[5] = gx->projMtx[4]; + ptr[6] = gx->projMtx[5]; +} + +static void WriteMTXPS4x3(const register f32 mtx[3][4], register volatile f32 *dest) +{ + register f32 a00_a01; + register f32 a02_a03; + register f32 a10_a11; + register f32 a12_a13; + register f32 a20_a21; + register f32 a22_a23; + + asm { + psq_l a00_a01, 0x00(mtx), 0, qr0 + psq_l a02_a03, 0x08(mtx), 0, qr0 + psq_l a10_a11, 0x10(mtx), 0, qr0 + psq_l a12_a13, 0x18(mtx), 0, qr0 + psq_l a20_a21, 0x20(mtx), 0, qr0 + psq_l a22_a23, 0x28(mtx), 0, qr0 + psq_st a00_a01, 0(dest), 0, qr0 + psq_st a02_a03, 0(dest), 0, qr0 + psq_st a10_a11, 0(dest), 0, qr0 + psq_st a12_a13, 0(dest), 0, qr0 + psq_st a20_a21, 0(dest), 0, qr0 + psq_st a22_a23, 0(dest), 0, qr0 + } +} + +static void WriteMTXPS3x3from3x4(register f32 mtx[3][4], register volatile f32 *dest) +{ + register f32 a00_a01; + register f32 a02_a03; + register f32 a10_a11; + register f32 a12_a13; + register f32 a20_a21; + register f32 a22_a23; + + asm { + psq_l a00_a01, 0x00(mtx), 0, qr0 + lfs a02_a03, 0x08(mtx) + psq_l a10_a11, 0x10(mtx), 0, qr0 + lfs a12_a13, 0x18(mtx) + psq_l a20_a21, 0x20(mtx), 0, qr0 + lfs a22_a23, 0x28(mtx) + psq_st a00_a01, 0(dest), 0, qr0 + stfs a02_a03, 0(dest) + psq_st a10_a11, 0(dest), 0, qr0 + stfs a12_a13, 0(dest) + psq_st a20_a21, 0(dest), 0, qr0 + stfs a22_a23, 0(dest) + } +} + +static void WriteMTXPS4x2(const register f32 mtx[2][4], register volatile f32 *dest) +{ + register f32 a00_a01; + register f32 a02_a03; + register f32 a10_a11; + register f32 a12_a13; + + asm { + psq_l a00_a01, 0x00(mtx), 0, qr0 + psq_l a02_a03, 0x08(mtx), 0, qr0 + psq_l a10_a11, 0x10(mtx), 0, qr0 + psq_l a12_a13, 0x18(mtx), 0, qr0 + psq_st a00_a01, 0(dest), 0, qr0 + psq_st a02_a03, 0(dest), 0, qr0 + psq_st a10_a11, 0(dest), 0, qr0 + psq_st a12_a13, 0(dest), 0, qr0 + } +} + +#pragma peephole off +#pragma dont_inline on +void GXLoadPosMtxImm(f32 mtx[3][4], u32 id) +{ + u32 reg; + u32 addr; + + CHECK_GXBEGIN(0x1FB, "GXLoadPosMtxImm"); + + addr = id * 4; + reg = addr | 0xB0000; + + GX_WRITE_U8(0x10); + GX_WRITE_U32(reg); + WriteMTXPS4x3(mtx, &GXWGFifo.f32); +} + +void GXLoadNrmMtxImm(f32 mtx[3][4], u32 id) +{ + u32 reg; + u32 addr; + + CHECK_GXBEGIN(0x24C, "GXLoadNrmMtxImm"); + + addr = id * 3 + 0x400; + reg = addr | 0x80000; + + GX_WRITE_U8(0x10); + GX_WRITE_U32(reg); + WriteMTXPS3x3from3x4((void *)mtx, &GXWGFifo.f32); +} + +void GXSetCurrentMtx(u32 id) +{ + CHECK_GXBEGIN(0x2C4, "GXSetCurrentMtx"); + SET_REG_FIELD(0x2C8, gx->matIdxA, 6, 0, id); + __GXSetMatrixIndex(GX_VA_PNMTXIDX); +} + +void GXLoadTexMtxImm(f32 mtx[][4], u32 id, GXTexMtxType type) +{ + u32 reg; + u32 addr; + u32 count; + + CHECK_GXBEGIN(0x2E5, "GXLoadTexMtxImm"); + + if (id >= GX_PTTEXMTX0) { + addr = (id - GX_PTTEXMTX0) * 4 + 0x500; + ASSERTMSGLINE(0x2EF, type == GX_MTX3x4, "GXLoadTexMtx: Invalid matrix type"); + } + else { + addr = id * 4; + } + count = (type == GX_MTX2x4) ? 8 : 12; + reg = addr | ((count - 1) << 16); + + GX_WRITE_U8(0x10); + GX_WRITE_U32(reg); + if (type == GX_MTX3x4) { + WriteMTXPS4x3(mtx, &GXWGFifo.f32); + } + else { + WriteMTXPS4x2(mtx, &GXWGFifo.f32); + } +} +#pragma dont_inline reset + +void GXSetViewportJitter(f32 left, f32 top, f32 wd, f32 ht, f32 nearz, f32 farz, u32 field) +{ + f32 sx; + f32 sy; + f32 sz; + f32 ox; + f32 oy; + f32 oz; + f32 zmin; + f32 zmax; + u32 reg; + + CHECK_GXBEGIN(0x387, "GXSetViewport"); // not the correct function name + + if (field == 0) { + top -= 0.5f; + } + sx = wd / 2.0f; + sy = -ht / 2.0f; + ox = 342.0f + (left + (wd / 2.0f)); + oy = 342.0f + (top + (ht / 2.0f)); + zmin = 1.6777215e7f * nearz; + zmax = 1.6777215e7f * farz; + sz = zmax - zmin; + oz = zmax; + gx->vpLeft = left; + gx->vpTop = top; + gx->vpWd = wd; + gx->vpHt = ht; + gx->vpNearz = nearz; + gx->vpFarz = farz; + if (gx->fgRange != 0) { + __GXSetRange(nearz, gx->fgSideX); + } + reg = 0x5101A; + GX_WRITE_U8(0x10); + GX_WRITE_U32(reg); + GX_WRITE_XF_REG_F(26, sx); + GX_WRITE_XF_REG_F(27, sy); + GX_WRITE_XF_REG_F(28, sz); + GX_WRITE_XF_REG_F(29, ox); + GX_WRITE_XF_REG_F(30, oy); + GX_WRITE_XF_REG_F(31, oz); + gx->bpSentNot = 1; +} + +void GXSetViewport(f32 left, f32 top, f32 wd, f32 ht, f32 nearz, f32 farz) +{ + GXSetViewportJitter(left, top, wd, ht, nearz, farz, 1U); +} + +void GXGetViewportv(f32 *vp) +{ + ASSERTMSGLINE(0x3C8, vp, "GXGet*: invalid null pointer"); + + vp[0] = gx->vpLeft; + vp[1] = gx->vpTop; + vp[2] = gx->vpWd; + vp[3] = gx->vpHt; + vp[4] = gx->vpNearz; + vp[5] = gx->vpFarz; +} + +// maybe get it from melee? +void GXSetScissor(u32 left, u32 top, u32 wd, u32 ht) +{ + u32 tp; + u32 lf; + u32 bm; + u32 rt; + + CHECK_GXBEGIN(0x418, "GXSetScissor"); + ASSERTMSGLINE(0x419, left < 1706, "GXSetScissor: Left origin > 1708"); + ASSERTMSGLINE(0x41A, top < 1706, "GXSetScissor: top origin > 1708"); + ASSERTMSGLINE(0x41B, left + wd < 1706, "GXSetScissor: right edge > 1708"); + ASSERTMSGLINE(0x41C, top + ht < 1706, "GXSetScissor: bottom edge > 1708"); + + tp = top + 342; + lf = left + 342; + bm = tp + ht - 1; + rt = lf + wd - 1; + + SET_REG_FIELD(0x423, gx->suScis0, 11, 0, tp); + SET_REG_FIELD(0x424, gx->suScis0, 11, 12, lf); + SET_REG_FIELD(0x426, gx->suScis1, 11, 0, bm); + SET_REG_FIELD(0x427, gx->suScis1, 11, 12, rt); + + GX_WRITE_RAS_REG(gx->suScis0); + GX_WRITE_RAS_REG(gx->suScis1); + gx->bpSentNot = 0; +} + +void GXSetScissorBoxOffset(s32 x_off, s32 y_off) +{ + u32 reg = 0; + u32 hx; + u32 hy; + + CHECK_GXBEGIN(0x45F, "GXSetScissorBoxOffset"); + + ASSERTMSGLINE(0x462, (u32)(x_off + 342) < 2048, "GXSetScissorBoxOffset: Invalid X offset"); + ASSERTMSGLINE(0x464, (u32)(y_off + 342) < 2048, "GXSetScissorBoxOffset: Invalid Y offset"); + + hx = (u32)(x_off + 342) >> 1; + hy = (u32)(y_off + 342) >> 1; + + SET_REG_FIELD(0x469, reg, 10, 0, hx); + SET_REG_FIELD(0x46A, reg, 10, 10, hy); + SET_REG_FIELD(0x46B, reg, 8, 24, 0x59); + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = 0; +} +#pragma peephole on + +void GXSetClipMode(GXClipMode mode) +{ + CHECK_GXBEGIN(0x47F, "GXSetClipMode"); + GX_WRITE_XF_REG(5, mode); + gx->bpSentNot = 1; +} + +void __GXSetMatrixIndex(GXAttr matIdxAttr) +{ + if (matIdxAttr < GX_VA_TEX4MTXIDX) { + GX_WRITE_SOME_REG4(8, 0x30, gx->matIdxA, -12); + GX_WRITE_XF_REG(24, gx->matIdxA); + } + else { + GX_WRITE_SOME_REG4(8, 0x40, gx->matIdxB, -12); + GX_WRITE_XF_REG(25, gx->matIdxB); + } + gx->bpSentNot = 1; +} diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c new file mode 100644 index 00000000..558d4d03 --- /dev/null +++ b/src/dolphin/mtx/mtx.c @@ -0,0 +1,1300 @@ +#include "dolphin/mtx.h" + +static f32 Unit01[] = { 0.0f, 1.0f }; + +extern f32 sinf(f32); +extern f32 cosf(f32); +extern f32 tanf(f32); + +void C_MTXIdentity(Mtx mtx) +{ + 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; +} + +#ifdef GEKKO +void PSMTXIdentity(register Mtx m) +{ + register f32 zero_c = 0.0f; + register f32 one_c = 1.0f; + register f32 c_01; + register f32 c_10; + // clang-format off + asm { + psq_st zero_c, 8(m), 0, 0 + ps_merge01 c_01, zero_c, one_c + psq_st zero_c, 24(m), 0, 0 + ps_merge10 c_10, one_c, zero_c + psq_st zero_c, 32(m), 0, 0 + psq_st c_01, 16(m), 0, 0 + psq_st c_10, 0(m), 0, 0 + psq_st c_10, 40(m), 0, 0 + } + // clang-format on +} +#endif + +void C_MTXCopy(const Mtx src, Mtx dst) +{ + + if (src == dst) { + return; + } + + 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 +asm void PSMTXCopy(const register Mtx src, register Mtx dst) +{ + // clang-format off + nofralloc + + psq_l fp0, 0(src), 0, 0 + psq_st fp0, 0(dst), 0, 0 + psq_l fp1, 8(src), 0, 0 + psq_st fp1, 8(dst), 0, 0 + psq_l fp2, 16(src), 0, 0 + psq_st fp2, 16(dst), 0, 0 + psq_l fp3, 24(src), 0, 0 + psq_st fp3, 24(dst), 0, 0 + psq_l fp4, 32(src), 0, 0 + psq_st fp4, 32(dst), 0, 0 + psq_l fp5, 40(src), 0, 0 + psq_st fp5, 40(dst), 0, 0 + + blr + // clang-format on +} +#endif + +void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab) +{ + Mtx mTmp; + MtxPtr m; + + 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[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[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]; + + if (m == mTmp) { + C_MTXCopy(mTmp, ab); + } +} + +#ifdef GEKKO +asm void PSMTXConcat(const register Mtx mA, const register Mtx mB, register Mtx mAB) +{ + // clang-format off + nofralloc + +#define FP0 fp0 +#define FP1 fp1 +#define FP2 fp2 +#define FP3 fp3 +#define FP4 fp4 +#define FP5 fp5 +#define FP6 fp6 +#define FP7 fp7 +#define FP8 fp8 +#define FP9 fp9 +#define FP10 fp10 +#define FP11 fp11 +#define FP12 fp12 +#define FP13 fp13 +#define FP14 fp14 +#define FP15 fp15 +#define FP31 fp31 + stwu r1, -64(r1); + psq_l FP0, 0(mA), 0, 0; + stfd fp14, 8(r1); + psq_l FP6, 0(mB), 0, 0; + addis r6, 0, Unit01@ha; + psq_l FP7, 8(mB), 0, 0; + stfd fp15, 16(r1) + addi r6, r6, Unit01@l; + stfd fp31, 40(r1) + psq_l FP8, 16(mB), 0, 0 + ps_muls0 FP12, FP6, FP0 + psq_l FP2, 16(mA), 0, 0 + ps_muls0 FP13, FP7, FP0 + psq_l FP31, 0(r6), 0, 0 + ps_muls0 FP14, FP6, FP2 + psq_l FP9, 24(mB), 0, 0 + ps_muls0 FP15, FP7, FP2 + psq_l FP1, 8(mA), 0, 0 + ps_madds1 FP12, FP8, FP0, FP12 + psq_l FP3, 24(mA), 0, 0 + ps_madds1 FP14, FP8, FP2, FP14 + psq_l FP10, 32(mB), 0, 0 + ps_madds1 FP13, FP9, FP0, FP13 + psq_l FP11, 40(mB), 0, 0 + ps_madds1 FP15, FP9, FP2, FP15 + psq_l FP4, 32(mA), 0, 0 + psq_l FP5, 40(mA), 0, 0 + ps_madds0 FP12, FP10, FP1, FP12 + ps_madds0 FP13, FP11, FP1, FP13 + ps_madds0 FP14, FP10, FP3, FP14 + ps_madds0 FP15, FP11, FP3, FP15 + psq_st FP12, 0(mAB), 0, 0 + + ps_muls0 FP2, FP6, FP4 + ps_madds1 FP13, FP31, FP1, FP13 + ps_muls0 FP0, FP7, FP4 + psq_st FP14, 16(mAB), 0, 0 + ps_madds1 FP15, FP31, FP3, FP15 + + psq_st FP13, 8(mAB), 0, 0 + + ps_madds1 FP2, FP8, FP4, FP2 + ps_madds1 FP0, FP9, FP4, FP0 + ps_madds0 FP2, FP10, FP5, FP2 + lfd fp14, 8(r1) + psq_st FP15, 24(mAB), 0, 0 + ps_madds0 FP0, FP11, FP5, FP0 + psq_st FP2, 32(mAB), 0, 0 + ps_madds1 FP0, FP31, FP5, FP0 + lfd fp15, 16(r1) + psq_st FP0, 40(mAB), 0, 0 + + lfd fp31, 40(r1) + addi r1, r1, 64 + + blr + // clang-format on + +#undef FP0 +#undef FP1 +#undef FP2 +#undef FP3 +#undef FP4 +#undef FP5 +#undef FP6 +#undef FP7 +#undef FP8 +#undef FP9 +#undef FP10 +#undef FP11 +#undef FP12 +#undef FP13 +#undef FP14 +#undef FP15 +#undef FP31 +} +#endif + +void C_MTXConcatArray(const Mtx a, const Mtx *srcBase, Mtx *dstBase, u32 count) +{ + u32 i; + for (i = 0; i < count; i++) { + C_MTXConcat(a, *srcBase, *dstBase); + + srcBase++; + dstBase++; + } +} + +#ifdef GEKKO +#if (defined(__MWERKS__) && defined(_DEBUG)) +#pragma global_optimizer on +#pragma optimization_level 1 +#endif + +void PSMTXConcatArray(const register Mtx a, const register Mtx *srcBase, register Mtx *dstBase, register u32 count) +{ + register f32 va0, va1, va2, va3, va4, va5; + register f32 vb0, vb1, vb2, vb3, vb4, vb5; + register f32 vd0, vd1, vd2, vd3, vd4, vd5; + register f32 u01; + register f32 *u01Ptr = Unit01; + + // clang-format off + asm + { + psq_l va0, 0(a), 0, 0 + psq_l va1, 8(a), 0, 0 + psq_l va2, 16(a), 0, 0 + psq_l va3, 24(a), 0, 0 + subi count, count, 1 + psq_l va4, 32(a), 0, 0 + psq_l va5, 40(a), 0, 0 + mtctr count + psq_l u01, 0(u01Ptr), 0, 0 + + psq_l vb0, 0(srcBase), 0, 0 + psq_l vb2, 16(srcBase), 0, 0 + + ps_muls0 vd0, vb0, va0 + ps_muls0 vd2, vb0, va2 + ps_muls0 vd4, vb0, va4 + + psq_l vb4, 32(srcBase), 0, 0 + + ps_madds1 vd0, vb2, va0, vd0 + ps_madds1 vd2, vb2, va2, vd2 + ps_madds1 vd4, vb2, va4, vd4 + + psq_l vb1, 8(srcBase), 0, 0 + + ps_madds0 vd0, vb4, va1, vd0 + ps_madds0 vd2, vb4, va3, vd2 + ps_madds0 vd4, vb4, va5, vd4 + + psq_l vb3, 24(srcBase), 0, 0 + psq_st vd0, 0(dstBase), 0, 0 + + ps_muls0 vd1, vb1, va0 + ps_muls0 vd3, vb1, va2 + ps_muls0 vd5, vb1, va4 + + psq_l vb5, 40(srcBase), 0, 0 + psq_st vd2, 16(dstBase), 0, 0 + ps_madds1 vd1, vb3, va0, vd1 + ps_madds1 vd3, vb3, va2, vd3 + ps_madds1 vd5, vb3, va4, vd5 + +_loop: + addi srcBase, srcBase, sizeof(Mtx) + ps_madds0 vd1, vb5, va1, vd1 + ps_madds0 vd3, vb5, va3, vd3 + ps_madds0 vd5, vb5, va5, vd5 + psq_l vb0, 0(srcBase), 0, 0 + psq_st vd4, 32(dstBase), 0, 0 + ps_madd vd1, u01, va1, vd1 + ps_madd vd3, u01, va3, vd3 + ps_madd vd5, u01, va5, vd5 + psq_l vb2, 16(srcBase), 0, 0 + psq_st vd1, 8(dstBase), 0, 0 + ps_muls0 vd0, vb0, va0 + ps_muls0 vd2, vb0, va2 + ps_muls0 vd4, vb0, va4 + psq_l vb4, 32(srcBase), 0, 0 + psq_st vd3, 24(dstBase), 0, 0 + ps_madds1 vd0, vb2, va0, vd0 + ps_madds1 vd2, vb2, va2, vd2 + ps_madds1 vd4, vb2, va4, vd4 + psq_l vb1, 8(srcBase), 0, 0 + psq_st vd5, 40(dstBase), 0, 0 + addi dstBase, dstBase, sizeof(Mtx) + + ps_madds0 vd0, vb4, va1, vd0 + ps_madds0 vd2, vb4, va3, vd2 + ps_madds0 vd4, vb4, va5, vd4 + psq_l vb3, 24(srcBase), 0, 0 + psq_st vd0, 0(dstBase), 0, 0 + ps_muls0 vd1, vb1, va0 + ps_muls0 vd3, vb1, va2 + ps_muls0 vd5, vb1, va4 + psq_l vb5, 40(srcBase), 0, 0 + psq_st vd2, 16(dstBase), 0, 0 + ps_madds1 vd1, vb3, va0, vd1 + ps_madds1 vd3, vb3, va2, vd3 + ps_madds1 vd5, vb3, va4, vd5 + bdnz _loop + psq_st vd4, 32(dstBase), 0, 0 + ps_madds0 vd1, vb5, va1, vd1 + ps_madds0 vd3, vb5, va3, vd3 + ps_madds0 vd5, vb5, va5, vd5 + ps_madd vd1, u01, va1, vd1 + ps_madd vd3, u01, va3, vd3 + ps_madd vd5, u01, va5, vd5 + psq_st vd1, 8(dstBase), 0, 0 + psq_st vd3, 24(dstBase), 0, 0 + psq_st vd5, 40(dstBase), 0, 0 + } + // clang-format on +} + +#if (defined(__MWERKS__) && defined(_DEBUG)) +#pragma optimization_level 0 +#pragma global_optimizer reset +#endif + +#endif + +void C_MTXTranspose(const Mtx src, Mtx xPose) +{ + Mtx mTmp; + MtxPtr m; + + if (src == xPose) { + m = mTmp; + } + 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[1][0] = src[0][1]; + m[1][1] = src[1][1]; + m[1][2] = src[2][1]; + m[1][3] = 0.0f; + m[2][0] = src[0][2]; + m[2][1] = src[1][2]; + m[2][2] = src[2][2]; + m[2][3] = 0.0f; + + if (m == mTmp) { + C_MTXCopy(mTmp, xPose); + } +} + +#ifdef GEKKO +void PSMTXTranspose(const register Mtx src, register Mtx xPose) +{ + register f32 c_zero = 0.0F; + register f32 row0a, row1a, row0b, row1b; + register f32 trns0, trns1, trns2; + // clang-format off + asm + { + psq_l row0a, 0(src), 0, 0 + stfs c_zero, 44(xPose) + psq_l row1a, 16(src), 0, 0 + ps_merge00 trns0, row0a, row1a + psq_l row0b, 8(src), 1, 0 + ps_merge11 trns1, row0a, row1a + psq_l row1b, 24(src), 1, 0 + psq_st trns0, 0(xPose), 0, 0 + psq_l row0a, 32(src), 0, 0 + ps_merge00 trns2, row0b, row1b + psq_st trns1, 16(xPose), 0, 0 + ps_merge00 trns0, row0a, c_zero + psq_st trns2, 32(xPose), 0, 0 + ps_merge10 trns1, row0a, c_zero + psq_st trns0, 8(xPose), 0, 0 + lfs row0b, 40(src) + psq_st trns1, 24(xPose), 0, 0 + stfs row0b, 40(xPose) + } + // clang-format on +} +#endif + +u32 C_MTXInverse(const Mtx src, Mtx inv) +{ + Mtx mTmp; + MtxPtr m; + f32 det; + + if (src == inv) { + m = mTmp; + } + 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) { + return 0; + } + + det = 1.0f / det; + + 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[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]; + + if (m == mTmp) { + C_MTXCopy(mTmp, inv); + } + + return 1; +} + +#ifdef GEKKO +asm u32 PSMTXInverse(const register Mtx src, register Mtx inv) { + // clang-format off + nofralloc + + psq_l fp0, 0(src), 1, 0 + psq_l fp1, 4(src), 0, 0 + psq_l fp2, 16(src), 1, 0 + ps_merge10 fp6, fp1, fp0 + psq_l fp3, 20(src), 0, 0 + psq_l fp4, 32(src), 1, 0 + ps_merge10 fp7, fp3, fp2 + psq_l fp5, 36(src), 0, 0 + ps_mul fp11, fp3, fp6 + ps_mul fp13, fp5, fp7 + ps_merge10 fp8, fp5, fp4 + ps_msub fp11, fp1, fp7, fp11 + ps_mul fp12, fp1, fp8 + ps_msub fp13, fp3, fp8, fp13 + ps_mul fp10, fp3, fp4 + ps_msub fp12, fp5, fp6, fp12 + ps_mul fp9, fp0, fp5 + ps_mul fp8, fp1, fp2 + ps_sub fp6, fp6, fp6 + ps_msub fp10, fp2, fp5, fp10 + ps_mul fp7, fp0, fp13 + ps_msub fp9, fp1, fp4, fp9 + ps_madd fp7, fp2, fp12, fp7 + ps_msub fp8, fp0, fp3, fp8 + ps_madd fp7, fp4, fp11, fp7 + ps_cmpo0 cr0, fp7, fp6 + bne _regular + addi r3, 0, 0 + blr + +_regular: + fres fp0, fp7 + ps_add fp6, fp0, fp0 + ps_mul fp5, fp0, fp0 + ps_nmsub fp0, fp7, fp5, fp6 + lfs fp1, 12(src) + ps_muls0 fp13, fp13, fp0 + lfs fp2, 28(src) + ps_muls0 fp12, fp12, fp0 + lfs fp3, 44(src) + ps_muls0 fp11, fp11, fp0 + ps_merge00 fp5, fp13, fp12 + ps_muls0 fp10, fp10, fp0 + ps_merge11 fp4, fp13, fp12 + ps_muls0 fp9, fp9, fp0 + psq_st fp5, 0(inv), 0, 0 + ps_mul fp6, fp13, fp1 + psq_st fp4, 16(inv), 0, 0 + ps_muls0 fp8, fp8, fp0 + ps_madd fp6, fp12, fp2, fp6 + psq_st fp10, 32(inv), 1, 0 + ps_nmadd fp6, fp11, fp3, fp6 + psq_st fp9, 36(inv), 1, 0 + ps_mul fp7, fp10, fp1 + ps_merge00 fp5, fp11, fp6 + psq_st fp8, 40(inv), 1, 0 + ps_merge11 fp4, fp11, fp6 + psq_st fp5, 8(inv), 0, 0 + ps_madd fp7, fp9, fp2, fp7 + psq_st fp4, 24(inv), 0, 0 + ps_nmadd fp7, fp8, fp3, fp7 + addi r3, 0, 1 + psq_st fp7, 44(inv), 1, 0 + blr + // clang-format on +} +#endif + +u32 C_MTXInvXpose(const Mtx src, Mtx invX) +{ + Mtx mTmp; + MtxPtr m; + f32 det; + + if (src == invX) { + m = mTmp; + } + 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) { + return 0; + } + + det = 1.0f / det; + + 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[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; + + if (m == mTmp) { + C_MTXCopy(mTmp, invX); + } + + return 1; +} + +#ifdef GEKKO +asm u32 PSMTXInvXpose(const register Mtx src, register Mtx invX) +{ + // clang-format off + nofralloc + + psq_l fp0, 0(src), 1, 0 + psq_l fp1, 4(src), 0, 0 + psq_l fp2, 16(src), 1, 0 + ps_merge10 fp6, fp1, fp0 + psq_l fp3, 20(src), 0, 0 + psq_l fp4, 32(src), 1, 0 + ps_merge10 fp7, fp3, fp2 + psq_l fp5, 36(src), 0, 0 + ps_mul fp11, fp3, fp6 + ps_merge10 fp8, fp5, fp4 + ps_mul fp13, fp5, fp7 + ps_msub fp11, fp1, fp7, fp11 + ps_mul fp12, fp1, fp8 + ps_msub fp13, fp3, fp8, fp13 + ps_msub fp12, fp5, fp6, fp12 + ps_mul fp10, fp3, fp4 + ps_mul fp9, fp0, fp5 + ps_mul fp8, fp1, fp2 + ps_msub fp10, fp2, fp5, fp10 + ps_msub fp9, fp1, fp4, fp9 + ps_msub fp8, fp0, fp3, fp8 + ps_mul fp7, fp0, fp13 + ps_sub fp1, fp1, fp1 + ps_madd fp7, fp2, fp12, fp7 + ps_madd fp7, fp4, fp11, fp7 + ps_cmpo0 cr0, fp7, fp1 + bne _regular + addi r3, 0, 0 + blr + +_regular: + fres fp0, fp7 + psq_st fp1, 12(invX), 1, 0 + ps_add fp6, fp0, fp0 + ps_mul fp5, fp0, fp0 + psq_st fp1, 28(invX), 1, 0 + ps_nmsub fp0, fp7, fp5, fp6 + psq_st fp1, 44(invX), 1, 0 + ps_muls0 fp13, fp13, fp0 + ps_muls0 fp12, fp12, fp0 + ps_muls0 fp11, fp11, fp0 + psq_st fp13, 0(invX), 0, 0 + psq_st fp12, 16(invX), 0, 0 + ps_muls0 fp10, fp10, fp0 + ps_muls0 fp9, fp9, fp0 + psq_st fp11, 32(invX), 0, 0 + psq_st fp10, 8(invX), 1, 0 + ps_muls0 fp8, fp8, fp0 + addi r3, 0, 1 + psq_st fp9, 24(invX), 1, 0 + psq_st fp8, 40(invX), 1, 0 + blr + // clang-format on +} +#endif + +void C_MTXRotRad(Mtx m, char axis, f32 rad) +{ + + f32 sinA, cosA; + sinA = sinf(rad); + cosA = cosf(rad); + C_MTXRotTrig(m, axis, sinA, cosA); +} + +#ifdef GEKKO +void PSMTXRotRad(Mtx m, char axis, f32 rad) +{ + f32 sinA, cosA; + + sinA = sinf(rad); + cosA = cosf(rad); + + PSMTXRotTrig(m, axis, sinA, cosA); +} +#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; + } +} + +#ifdef GEKKO +void PSMTXRotTrig(register Mtx m, register char axis, register f32 sinA, register f32 cosA) +{ + register f32 fc0, fc1, nsinA; + register f32 fw0, fw1, fw2, fw3; + // clang-format off + + fc0 = 0.0F; + fc1 = 1.0F; + asm + { + ori axis, axis, 0x20 + ps_neg nsinA, sinA + cmplwi axis, 'x' + beq _case_x + cmplwi axis, 'y' + beq _case_y + cmplwi axis, 'z' + beq _case_z + b _end + +_case_x: + psq_st fc1, 0(m), 1, 0 + psq_st fc0, 4(m), 0, 0 + ps_merge00 fw0, sinA, cosA + psq_st fc0, 12(m), 0, 0 + ps_merge00 fw1, cosA, nsinA + psq_st fc0, 28(m), 0, 0 + psq_st fc0, 44(m), 1, 0 + psq_st fw0, 36(m), 0, 0 + psq_st fw1, 20(m), 0, 0 + b _end; + +_case_y: + ps_merge00 fw0, cosA, fc0 + ps_merge00 fw1, fc0, fc1 + psq_st fc0, 24(m), 0, 0 + psq_st fw0, 0(m), 0, 0 + ps_merge00 fw2, nsinA, fc0 + ps_merge00 fw3, sinA, fc0 + psq_st fw0, 40(m), 0, 0; + psq_st fw1, 16(m), 0, 0; + psq_st fw3, 8(m), 0, 0; + psq_st fw2, 32(m), 0, 0; + b _end; + +_case_z: + psq_st fc0, 8(m), 0, 0 + ps_merge00 fw0, sinA, cosA + ps_merge00 fw2, cosA, nsinA + psq_st fc0, 24(m), 0, 0 + psq_st fc0, 32(m), 0, 0 + ps_merge00 fw1, fc1, fc0 + psq_st fw0, 16(m), 0, 0 + psq_st fw2, 0(m), 0, 0 + psq_st fw1, 40(m), 0, 0 + +_end: + } + // clang-format on +} + +#endif + +void C_MTXRotAxisRad(Mtx m, const Vec *axis, f32 rad) +{ + Vec vN; + f32 s, c; + f32 t; + f32 x, y, z; + f32 xSq, ySq, zSq; + + s = sinf(rad); + c = cosf(rad); + t = 1.0f - 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; +} + +#ifdef GEKKO +#define qr0 0 + +void PSMTXRotAxisRad(register Mtx m, const Vec *axis, register f32 rad) +{ + register f32 tmp0, tmp1, tmp2, tmp3, tmp4; + register f32 tmp5, tmp6, tmp7, tmp8, tmp9; + + register f32 sT; + register f32 cT; + register f32 oneMinusCosT; + register f32 zero; + Vec axisNormalized; + register Vec *axisNormalizedPtr; + + zero = 0.0f; + axisNormalizedPtr = &axisNormalized; + sT = sinf(rad); + cT = cosf(rad); + oneMinusCosT = 1.0f - cT; + + PSVECNormalize(axis, axisNormalizedPtr); + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l rad, 0x0(axisNormalizedPtr), 0, qr0 + lfs tmp1, 0x8(axisNormalizedPtr) + ps_merge00 tmp0, cT, cT + ps_muls0 tmp4, rad, oneMinusCosT + ps_muls0 tmp5, tmp1, oneMinusCosT + ps_muls1 tmp3, tmp4, rad + ps_muls0 tmp2, tmp4, rad + ps_muls0 rad, rad, sT + ps_muls0 tmp4, tmp4, tmp1 + fnmsubs tmp6, tmp1, sT, tmp3 + fmadds tmp7, tmp1, sT, tmp3 + ps_neg tmp9, rad + ps_sum0 tmp8, tmp4, zero, rad + ps_sum0 tmp2, tmp2, tmp6, tmp0 + ps_sum1 tmp3, tmp0, tmp7, tmp3 + ps_sum0 tmp6, tmp9, zero, tmp4 + ps_sum0 tmp9, tmp4, tmp4, tmp9 + psq_st tmp8, 0x8(m), 0, qr0 + ps_muls0 tmp5, tmp5, tmp1 + psq_st tmp2, 0x0(m), 0, qr0 + ps_sum1 tmp4, rad, tmp9, tmp4 + psq_st tmp3, 0x10(m), 0, qr0 + ps_sum0 tmp5, tmp5, zero, tmp0 + psq_st tmp6, 0x18(m), 0, qr0 + psq_st tmp4, 0x20(m), 0, qr0 + psq_st tmp5, 0x28(m), 0, qr0 + } +#endif // clang-format on +} + +#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; + m[0][3] = xT; + m[1][0] = 0.0f; + m[1][1] = 1.0f; + m[1][2] = 0.0f; + m[1][3] = yT; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = 1.0f; + m[2][3] = zT; +} + +#ifdef GEKKO +void PSMTXTrans(register Mtx m, register f32 xT, register f32 yT, register f32 zT) +{ + register f32 c0 = 0.0F; + register f32 c1 = 1.0F; + // clang-format off + asm + { + stfs xT, 12(m) + stfs yT, 28(m) + psq_st c0, 4(m), 0, 0 + psq_st c0, 32(m), 0, 0 + stfs c0, 16(m) + stfs c1, 20(m) + stfs c0, 24(m) + stfs c1, 40(m) + stfs zT, 44(m) + stfs c1, 0(m) + } + // clang-format on +} +#endif + +void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT) +{ + if (src != dst) { + dst[0][0] = src[0][0]; + dst[0][1] = src[0][1]; + dst[0][2] = src[0][2]; + dst[1][0] = src[1][0]; + dst[1][1] = src[1][1]; + dst[1][2] = src[1][2]; + dst[2][0] = src[2][0]; + dst[2][1] = src[2][1]; + 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; +} + +#ifdef GEKKO +asm void PSMTXTransApply(const register Mtx src, register Mtx dst, register f32 xT, register f32 yT, register f32 zT) +{ + // clang-format off + nofralloc; + psq_l fp4, 0(src), 0, 0 + frsp xT, xT + psq_l fp5, 8(src), 0, 0 + frsp yT, yT + psq_l fp7, 24(src), 0, 0 + frsp zT, zT + psq_l fp8, 40(src), 0, 0 + psq_st fp4, 0(dst), 0, 0 + ps_sum1 fp5, xT, fp5, fp5 + psq_l fp6, 16(src), 0, 0 + psq_st fp5, 8(dst), 0, 0 + ps_sum1 fp7, yT, fp7, fp7 + psq_l fp9, 32(src), 0, 0 + psq_st fp6, 16(dst), 0, 0 + ps_sum1 fp8, zT, fp8, fp8 + psq_st fp7, 24(dst), 0, 0 + psq_st fp9, 32(dst), 0, 0 + psq_st fp8, 40(dst), 0, 0 + blr + // clang-format on +} +#endif + +void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS) +{ + 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[1][1] = yS; + m[1][2] = 0.0f; + m[1][3] = 0.0f; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = zS; + m[2][3] = 0.0f; +} + +#ifdef GEKKO +void PSMTXScale(register Mtx m, register f32 xS, register f32 yS, register f32 zS) +{ + register f32 c0 = 0.0F; + // clang-format off + asm + { + stfs xS, 0(m) + psq_st c0, 4(m), 0, 0 + psq_st c0, 12(m), 0, 0 + stfs yS, 20(m) + psq_st c0, 24(m), 0, 0 + psq_st c0, 32(m), 0, 0 + stfs zS, 40(m) + stfs c0, 44(m) + } + // clang-format on +} +#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; +} + +#ifdef GEKKO +asm void PSMTXScaleApply(const register Mtx src, register Mtx dst, register f32 xS, register f32 yS, register f32 zS) +{ + // clang-format off + nofralloc; + frsp xS, xS + psq_l fp4, 0(src), 0, 0 + frsp yS, yS + psq_l fp5, 8(src), 0, 0 + frsp zS, zS + ps_muls0 fp4, fp4, xS + psq_l fp6, 16(src), 0, 0 + ps_muls0 fp5, fp5, xS + psq_l fp7, 24(src), 0, 0 + ps_muls0 fp6, fp6, yS + psq_l fp8, 32(src), 0, 0 + psq_st fp4, 0(dst), 0, 0 + ps_muls0 fp7, fp7, yS + psq_l fp2, 40(src), 0, 0 + psq_st fp5, 8(dst), 0, 0 + ps_muls0 fp8, fp8, zS + psq_st fp6, 16(dst), 0, 0 + ps_muls0 fp2, fp2, zS + psq_st fp7, 24(dst), 0, 0 + psq_st fp8, 32(dst), 0, 0 + psq_st fp2, 40(dst), 0, 0 + blr + // clang-format on +} +#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)); + + xs = q->x * s; + ys = q->y * s; + zs = q->z * s; + wx = q->w * xs; + wy = q->w * ys; + wz = q->w * zs; + xx = q->x * xs; + xy = q->x * ys; + xz = q->x * zs; + 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; +} + +#ifdef GEKKO +void PSMTXQuat(register Mtx m, const register Quaternion *q) +{ + register f32 c_zero, c_one, c_two, scale; + register f32 tmp0, tmp1, tmp2, tmp3, tmp4; + register f32 tmp5, tmp6, tmp7, tmp8, tmp9; + + c_one = 1.0F; + // clang-format off + asm + { + psq_l tmp0, 0(q), 0, 0 + psq_l tmp1, 8(q), 0, 0 + fsubs c_zero, c_one, c_one + fadds c_two, c_one, c_one + ps_mul tmp2, tmp0, tmp0 + ps_merge10 tmp5, tmp0, tmp0 + ps_madd tmp4, tmp1, tmp1, tmp2 + ps_mul tmp3, tmp1, tmp1 + ps_sum0 scale, tmp4, tmp4, tmp4 + ps_muls1 tmp7, tmp5, tmp1 + fres tmp9, scale + ps_sum1 tmp4, tmp3, tmp4, tmp2 + ps_nmsub scale, scale, tmp9, c_two + ps_muls1 tmp6, tmp1, tmp1 + ps_mul scale, tmp9, scale + ps_sum0 tmp2, tmp2, tmp2, tmp2 + fmuls scale, scale, c_two + ps_madd tmp8, tmp0, tmp5, tmp6 + ps_msub tmp6, tmp0, tmp5, tmp6 + psq_st c_zero, 12(m), 1, 0 + ps_nmsub tmp2, tmp2, scale, c_one + ps_nmsub tmp4, tmp4, scale, c_one + psq_st c_zero, 44(m), 1, 0 + ps_mul tmp8, tmp8, scale + ps_mul tmp6, tmp6, scale + psq_st tmp2, 40(m), 1, 0 + ps_madds0 tmp5, tmp0, tmp1, tmp7 + ps_merge00 tmp1, tmp8, tmp4 + ps_nmsub tmp7, tmp7, c_two, tmp5 + ps_merge10 tmp0, tmp4, tmp6 + psq_st tmp1, 16(m), 0, 0 + ps_mul tmp5, tmp5, scale + ps_mul tmp7, tmp7, scale + psq_st tmp0, 0(m), 0, 0 + psq_st tmp5, 8(m), 1, 0 + ps_merge10 tmp3, tmp7, c_zero + ps_merge01 tmp9, tmp7, tmp5 + psq_st tmp3, 24(m), 0, 0 + psq_st tmp9, 32(m), 0, 0 + } + // clang-format on +} +#endif + +void C_MTXReflect(Mtx m, const Vec *p, const Vec *n) +{ + f32 vxy, vxz, vyz, 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; + m[0][1] = vxy; + m[0][2] = vxz; + m[0][3] = pdotn * n->x; + + m[1][0] = vxy; + m[1][1] = 1.0f - 2.0f * n->y * n->y; + m[1][2] = vyz; + 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; +} + +#ifdef GEKKO +void PSMTXReflect(register Mtx m, const register Vec *p, const register Vec *n) +{ + register f32 c_one = 1.0F; + register f32 vn_xy, vn_z1, n2vn_xy, n2vn_z1, pdotn; + register f32 tmp0, tmp1, tmp2, tmp3; + register f32 tmp4, tmp5, tmp6, tmp7; + // clang-format off + asm + { + psq_l vn_z1, 8(n), 1, 0 + psq_l vn_xy, 0(n), 0, 0 + psq_l tmp0, 0(p), 0, 0 + ps_nmadd n2vn_z1, vn_z1, c_one, vn_z1 + psq_l tmp1, 8(p), 1, 0 + ps_nmadd n2vn_xy, vn_xy, c_one, vn_xy + ps_muls0 tmp4, vn_xy, n2vn_z1 + ps_mul pdotn, n2vn_xy, tmp0 + ps_muls0 tmp2, vn_xy, n2vn_xy + ps_sum0 pdotn, pdotn, pdotn, pdotn + ps_muls1 tmp3, vn_xy, n2vn_xy + psq_st tmp4, 32(m), 0, 0 + ps_sum0 tmp2, tmp2, tmp2, c_one + ps_nmadd pdotn, n2vn_z1, tmp1, pdotn + ps_sum1 tmp3, c_one, tmp3, tmp3 + psq_st tmp2, 0(m), 0, 0 + ps_muls0 tmp5, vn_xy, pdotn + ps_merge00 tmp6, n2vn_z1, pdotn + psq_st tmp3, 16(m), 0, 0 + ps_merge00 tmp7, tmp4, tmp5 + ps_muls0 tmp6, tmp6, vn_z1 + ps_merge11 tmp5, tmp4, tmp5 + psq_st tmp7, 8(m), 0, 0 + ps_sum0 tmp6, tmp6, tmp6, c_one + psq_st tmp5, 24(m), 0, 0 + psq_st tmp6, 40(m), 0, 0 + } + // clang-format on +} +#endif + +void C_MTXLookAt(Mtx m, const Vec *camPos, const Vec *camUp, const Vec *target) +{ + Vec vLook, vRight, vUp; + + vLook.x = camPos->x - target->x; + vLook.y = camPos->y - target->y; + vLook.z = camPos->z - target->z; + VECNormalize(&vLook, &vLook); + 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[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[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); +} + +void C_MTXLightFrustum(Mtx m, float t, float b, float l, float r, float n, float scaleS, float scaleT, float transS, float 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; + + 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; +} + +void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, float scaleS, float scaleT, float transS, float transT) +{ + f32 angle; + f32 cot; + + angle = fovY * 0.5f; + angle = MTXDegToRad(angle); + + cot = 1.0f / tanf(angle); + + m[0][0] = (cot / aspect) * scaleS; + m[0][1] = 0.0f; + m[0][2] = -transS; + m[0][3] = 0.0f; + + m[1][0] = 0.0f; + 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; +} + +void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, float scaleS, float scaleT, float transS, float 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; +} diff --git a/src/dolphin/mtx/mtx44.c b/src/dolphin/mtx/mtx44.c new file mode 100644 index 00000000..a6c2faa9 --- /dev/null +++ b/src/dolphin/mtx/mtx44.c @@ -0,0 +1,99 @@ +#include "dolphin/mtx.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; +} + +// 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; + f32 cot; + f32 tmp; + 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; +} + +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; +} + +asm void PSMTX44Copy(register Mtx44 src, register Mtx44 dest) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp1, 0(src), 0, 0; + psq_st fp1, 0(dest), 0, 0; + psq_l fp1, 8(src), 0, 0; + psq_st fp1, 8(dest), 0, 0; + psq_l fp1, 0x10(src), 0, 0; + psq_st fp1, 0x10(dest), 0, 0; + psq_l fp1, 0x18(src), 0, 0; + psq_st fp1, 0x18(dest), 0, 0; + psq_l fp1, 0x20(src), 0, 0; + psq_st fp1, 0x20(dest), 0, 0; + psq_l fp1, 0x28(src), 0, 0; + psq_st fp1, 0x28(dest), 0, 0; + psq_l fp1, 0x30(src), 0, 0; + psq_st fp1, 0x30(dest), 0, 0; + psq_l fp1, 0x38(src), 0, 0; + psq_st fp1, 0x38(dest), 0, 0; + blr; +#endif // clang-format on +} diff --git a/src/dolphin/mtx/mtxvec.c b/src/dolphin/mtx/mtxvec.c new file mode 100644 index 00000000..d4e70ab0 --- /dev/null +++ b/src/dolphin/mtx/mtxvec.c @@ -0,0 +1,146 @@ +#include "dolphin/mtx.h" + +asm void PSMTXMultVec(const register Mtx m, const register Vec* in, register Vec* out) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp0, 0(in), 0, 0; + psq_l fp2, 0(m), 0, 0; + psq_l fp1, 8(in), 1, 0; + ps_mul fp4, fp2, fp0; + psq_l fp3, 8(m), 0, 0; + ps_madd fp5, fp3, fp1, fp4; + psq_l fp8, 16(m), 0, 0; + ps_sum0 fp6, fp5, fp6, fp5; + psq_l fp9, 24(m), 0, 0; + ps_mul fp10, fp8, fp0; + psq_st fp6, 0(out), 1, 0; + ps_madd fp11, fp9, fp1, fp10; + psq_l fp2, 32(m), 0, 0; + ps_sum0 fp12, fp11, fp12, fp11; + psq_l fp3, 40(m), 0, 0; + ps_mul fp4, fp2, fp0; + psq_st fp12, 4(out), 1, 0; + ps_madd fp5, fp3, fp1, fp4; + ps_sum0 fp6, fp5, fp6, fp5; + psq_st fp6, 8(out), 1, 0; + blr +#endif // clang-format on +} + +asm void PSMTXMultVecArray(register const Mtx m, register const Vec* srcBase, register Vec* dstBase, + register u32 count) { +#ifdef __MWERKS__ // clang-format off + nofralloc + + psq_l f13, 0(m), 0, 0 + psq_l f12, 16(m), 0, 0 + addi count, count, -1 + psq_l f11, 8(m), 0, 0 + ps_merge00 f0, f13, f12 + addi dstBase, dstBase, -4 + psq_l f10, 24(m), 0, 0 + ps_merge11 f1, f13, f12 + mtctr count + psq_l f4, 32(m), 0, 0 + ps_merge00 f2, f11, f10 + psq_l f5, 40(m), 0, 0 + ps_merge11 f3, f11, f10 + psq_l f6, 0(srcBase), 0, 0 + psq_lu f7, 8(srcBase), 1, 0 + ps_madds0 f8, f0, f6, f3 + ps_mul f9, f4, f6 + ps_madds1 f8, f1, f6, f8 + ps_madd f10, f5, f7, f9 + +lbl_80346E0C: + psq_lu f6, 4(srcBase), 0, 0 + ps_madds0 f12, f2, f7, f8 + psq_lu f7, 8(srcBase), 1, 0 + ps_sum0 f13, f10, f9, f10 + ps_madds0 f8, f0, f6, f3 + ps_mul f9, f4, f6 + psq_stu f12, 4(dstBase), 0, 0 + ps_madds1 f8, f1, f6, f8 + psq_stu f13, 8(dstBase), 1, 0 + ps_madd f10, f5, f7, f9 + bdnz lbl_80346E0C + + ps_madds0 f12, f2, f7, f8 + ps_sum0 f13, f10, f9, f10 + psq_stu f12, 4(dstBase), 0, 0 + psq_stu f13, 8(dstBase), 1, 0 + blr +#endif // clang-format on +} + +asm void PSMTXMultVecSR(const register Mtx mtx, const register Vec* in, register Vec* out) { +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l fp0, 0(mtx), 0, 0; + psq_l fp6, 0(in), 0, 0; + psq_l fp2, 0x10(mtx), 0, 0; + ps_mul fp8, fp0, fp6; + psq_l fp4, 0x20(mtx), 0, 0; + ps_mul fp10, fp2, fp6; + psq_l fp7, 8(in), 1, 0; + ps_mul fp12, fp4, fp6; + psq_l fp3, 0x18(mtx), 0, 0; + ps_sum0 fp8, fp8, fp8, fp8; + psq_l fp5, 0x28(mtx), 0, 0; + ps_sum0 fp10, fp10, fp10, fp10; + psq_l fp1, 8(mtx), 0, 0; + ps_sum0 fp12, fp12, fp12, fp12; + ps_madd fp9, fp1, fp7, fp8; + psq_st fp9, 0(out), 1, 0; + ps_madd fp11, fp3, fp7, fp10; + psq_st fp11, 4(out), 1, 0; + ps_madd fp13, fp5, fp7, fp12; + psq_st fp13, 8(out), 1, 0; + blr +#endif // clang-format on +} + +asm void PSMTXMultVecArraySR(register const Mtx m, register const Vec* srcBase, + register Vec* dstBase, register u32 count) { +#ifdef __MWERKS__ // clang-format off + nofralloc + + psq_l f13, 0(m), 0, 0 + psq_l f12, 16(m), 0, 0 + addi count, count, -1 + psq_l f11, 8(m), 1, 0 + ps_merge00 f0, f13, f12 + addi dstBase, dstBase, -4 + psq_l f10, 24(m), 1, 0 + ps_merge11 f1, f13, f12 + mtctr count + psq_l f3, 32(m), 0, 0 + ps_merge00 f2, f11, f10 + psq_l f4, 40(m), 1, 0 + psq_l f6, 0(srcBase), 0, 0 + psq_lu f7, 8(srcBase), 1, 0 + ps_muls0 f8, f0, f6 + ps_mul f9, f3, f6 + ps_madds1 f8, f1, f6, f8 + ps_madd f10, f4, f7, f9 + +lbl_80346EE8: + psq_lu f6, 4(srcBase), 0, 0 + ps_madds0 f12, f2, f7, f8 + psq_lu f7, 8(srcBase), 1, 0 + ps_sum0 f13, f10, f9, f9 + ps_muls0 f8, f0, f6 + ps_mul f9, f3, f6 + psq_stu f12, 4(dstBase), 0, 0 + ps_madds1 f8, f1, f6, f8 + psq_stu f13, 8(dstBase), 1, 0 + ps_madd f10, f4, f7, f9 + bdnz lbl_80346EE8 + + ps_madds0 f12, f2, f7, f8 + ps_sum0 f13, f10, f9, f9 + psq_stu f12, 4(dstBase), 0, 0 + psq_stu f13, 8(dstBase), 1, 0 + blr +#endif // clang-format on +} diff --git a/src/dolphin/mtx/psmtx.c b/src/dolphin/mtx/psmtx.c new file mode 100644 index 00000000..0a6c5276 --- /dev/null +++ b/src/dolphin/mtx/psmtx.c @@ -0,0 +1,355 @@ +#include +#include + +#define qr0 0 +#define qr1 1 +#define qr6 6 + +asm void PSMTXReorder(const register Mtx src, register ROMtx dest) +{ + /* clang-format off */ + psq_l f0, 0(src), 0, qr0 + psq_l f2, 16(src), 0, qr0 + psq_l f4, 32(src), 0, qr0 + psq_l f1, 8(src), 0, qr0 + ps_merge00 f6, f0, f2 + psq_l f3, 24(src), 0, qr0 + ps_merge01 f12, f4, f0 + psq_l f5, 40(src), 0, qr0 + ps_merge11 f7, f2, f4 + psq_st f6, 0(dest), 0, qr0 + ps_merge00 f8, f1, f3 + psq_st f12, 8(dest), 0, qr0 + ps_merge01 f9, f5, f1 + psq_st f7, 16(dest), 0, qr0 + ps_merge11 f10, f3, f5 + psq_st f8, 24(dest), 0, qr0 + psq_st f9, 32(dest), 0, qr0 + psq_st f10, 40(dest), 0, qr0 + /* clang-format on */ +} + +asm void PSMTXROMultVecArray(const register ROMtx m, const register Vec *srcBase, register Vec *dstBase, register u32 count) +{ + /* clang-format off */ + nofralloc + stwu r1, -64(r1) + stfd f14, 8(r1) + subi r7, count, 1 + stfd f15, 16(r1) + srwi r7, r7, 1 + stfd f16, 24(r1) + stfd f17, 32(r1) + stfd f18, 40(r1) + mtctr r7 + psq_l f0, 0(m), 0, qr0 + subi srcBase, srcBase, 8 + psq_l f1, 8(m), 1, qr0 + subi dstBase, dstBase, 4 + psq_l f6, 36(m), 0, qr0 + psq_lu f8, 8(srcBase), 0, qr0 + psq_l f7, 44(m), 1, qr0 + psq_lu f9, 8(srcBase), 0, qr0 + ps_madds0 f11, f0, f8, f6 + psq_l f2, 12(m), 0, qr0 + ps_madds0 f12, f1, f8, f7 + psq_l f3, 20(m), 1, qr0 + ps_madds1 f13, f0, f9, f6 + psq_lu f10, 8(srcBase), 0, qr0 + ps_madds1 f14, f1, f9, f7 + psq_l f5, 32(m), 1, qr0 + ps_madds1 f11, f2, f8, f11 + ps_madds1 f12, f3, f8, f12 + psq_l f4, 24(m), 0, qr0 + ps_madds0 f13, f2, f10, f13 + psq_lu f8, 8(srcBase), 0, qr0 + ps_madds0 f14, f3, f10, f14 + ps_madds0 f15, f4, f9, f11 + ps_madds0 f16, f5, f9, f12 + psq_lu f9, 8(srcBase), 0, qr0 + ps_madds1 f17, f4, f10, f13 + ps_madds1 f18, f5, f10, f14 + psq_lu f10, 8(srcBase), 0, qr0 +loop: + ps_madds0 f11, f0, f8, f6 + psq_stu f15, 4(dstBase), 0, qr0 + ps_madds0 f12, f1, f8, f7 + psq_stu f16, 8(dstBase), 1, qr0 + ps_madds1 f13, f0, f9, f6 + psq_stu f17, 4(dstBase), 0, qr0 + ps_madds1 f14, f1, f9, f7 + psq_stu f18, 8(dstBase), 1, qr0 + ps_madds1 f11, f2, f8, f11 + ps_madds1 f12, f3, f8, f12 + psq_lu f8, 8(srcBase), 0, qr0 + ps_madds0 f13, f2, f10, f13 + ps_madds0 f14, f3, f10, f14 + ps_madds0 f15, f4, f9, f11 + ps_madds0 f16, f5, f9, f12 + psq_lu f9, 8(srcBase), 0, qr0 + ps_madds1 f17, f4, f10, f13 + ps_madds1 f18, f5, f10, f14 + psq_lu f10, 8(srcBase), 0, qr0 + bdnz loop + psq_stu f15, 4(dstBase), 0, qr0 + clrlwi. r7, count, 31 + psq_stu f16, 8(dstBase), 1, qr0 + bne exit + psq_stu f17, 4(dstBase), 0, qr0 + psq_stu f18, 8(dstBase), 1, qr0 +exit: + lfd f14, 8(r1) + lfd f15, 16(r1) + lfd f16, 24(r1) + lfd f17, 32(r1) + lfd f18, 40(r1) + addi r1, r1, 64 + blr + /* clang-format on */ +} + +asm void PSMTXROSkin2VecArray(const register ROMtx m0, const register ROMtx m1, const register f32 *wtBase, const register Vec *srcBase, + register Vec *dstBase, register u32 count) +{ + /* clang-format off */ + nofralloc + stwu r1, -160(r1) + stfd f14, 8(r1) + stfd f15, 16(r1) + stfd f16, 24(r1) + stfd f17, 32(r1) + stfd f18, 40(r1) + stfd f19, 48(r1) + stfd f20, 56(r1) + stfd f21, 64(r1) + stfd f22, 72(r1) + stfd f23, 80(r1) + stfd f24, 88(r1) + stfd f25, 96(r1) + stfd f26, 104(r1) + stfd f27, 112(r1) + stfd f28, 120(r1) + stfd f29, 128(r1) + stfd f30, 136(r1) + subi r9, r8, 1 + mtctr r9 + subi srcBase, srcBase, 4 + subi dstBase, dstBase, 4 + subi wtBase, wtBase, 4 + psq_l f14, 0(m0), 0, qr0 + psq_l f22, 0(m1), 0, qr0 + psq_l f15, 8(m0), 1, qr0 + psq_l f23, 8(m1), 1, qr0 + psq_l f16, 12(m0), 0, qr0 + psq_l f24, 12(m1), 0, qr0 + ps_sub f22, f22, f14 + psq_l f17, 20(m0), 1, qr0 + psq_l f25, 20(m1), 1, qr0 + ps_sub f23, f23, f15 + psq_l f18, 24(m0), 0, qr0 + psq_l f26, 24(m1), 0, qr0 + ps_sub f24, f24, f16 + psq_l f19, 32(m0), 1, qr0 + psq_l f27, 32(m1), 1, qr0 + ps_sub f25, f25, f17 + psq_l f20, 36(m0), 0, qr0 + psq_l f28, 36(m1), 0, qr0 + ps_sub f26, f26, f18 + psq_l f21, 44(m0), 1, qr0 + psq_l f29, 44(m1), 1, qr0 + ps_sub f27, f27, f19 + ps_sub f28, f28, f20 + ps_sub f29, f29, f21 + psq_lu f30, 4(wtBase), 1, qr0 + psq_lu f8, 4(srcBase), 0, qr0 + psq_lu f9, 8(srcBase), 1, qr0 + ps_madds0 f0, f22, f30, f14 + ps_madds0 f1, f23, f30, f15 + ps_madds0 f2, f24, f30, f16 + ps_madds0 f3, f25, f30, f17 + ps_madds0 f4, f26, f30, f18 + ps_madds0 f5, f27, f30, f19 + ps_madds0 f6, f28, f30, f20 + ps_madds0 f7, f29, f30, f21 + ps_madds0 f12, f0, f8, f6 + ps_madds0 f13, f1, f8, f7 + psq_lu f30, 4(wtBase), 1, qr0 +loop: + ps_madds1 f12, f2, f8, f12 + ps_madds1 f13, f3, f8, f13 + psq_lu f8, 4(srcBase), 0, qr0 + ps_madds0 f10, f4, f9, f12 + ps_madds0 f11, f5, f9, f13 + psq_lu f9, 8(srcBase), 1, qr0 + ps_madds0 f0, f22, f30, f14 + ps_madds0 f1, f23, f30, f15 + ps_madds0 f2, f24, f30, f16 + ps_madds0 f3, f25, f30, f17 + ps_madds0 f4, f26, f30, f18 + ps_madds0 f5, f27, f30, f19 + ps_madds0 f6, f28, f30, f20 + ps_madds0 f7, f29, f30, f21 + psq_stu f10, 4(dstBase), 0, qr0 + ps_madds0 f12, f0, f8, f6 + ps_madds0 f13, f1, f8, f7 + psq_stu f11, 8(dstBase), 1, qr0 + psq_lu f30, 4(wtBase), 1, qr0 + bdnz loop + ps_madds1 f12, f2, f8, f12 + ps_madds1 f13, f3, f8, f13 + ps_madds0 f10, f4, f9, f12 + psq_stu f10, 4(dstBase), 0, qr0 + ps_madds0 f11, f5, f9, f13 + psq_stu f11, 8(dstBase), 1, qr0 + lfd f14, 8(r1) + lfd f15, 16(r1) + lfd f16, 24(r1) + lfd f17, 32(r1) + lfd f18, 40(r1) + lfd f19, 48(r1) + lfd f20, 56(r1) + lfd f21, 64(r1) + lfd f22, 72(r1) + lfd f23, 80(r1) + lfd f24, 88(r1) + lfd f25, 96(r1) + lfd f26, 104(r1) + lfd f27, 112(r1) + lfd f28, 120(r1) + lfd f29, 128(r1) + lfd f30, 136(r1) + addi r1, r1, 160 + blr + /* clang-format on */ +} + +asm void PSMTXROMultS16VecArray(const register ROMtx m, const register S16Vec *srcBase, register Vec *dstBase, register u32 count) +{ + /* clang-format off */ + nofralloc + stwu r1, -64(r1) + stfd f14, 8(r1) + subi r7, count, 1 + stfd f15, 16(r1) + srwi r7, r7, 1 + stfd f16, 24(r1) + lis r8, 7 + stfd f17, 32(r1) + mtspr GQR6, r8 + stfd f18, 40(r1) + mtctr r7 + psq_l f0, 0(m), 0, qr0 + subi srcBase, srcBase, 4 + psq_l f1, 8(m), 1, qr0 + subi dstBase, dstBase, 4 + psq_l f6, 36(m), 0, qr0 + psq_lu f8, 4(srcBase), 0, qr6 + psq_l f7, 44(m), 1, qr0 + psq_lu f9, 4(srcBase), 0, qr6 + ps_madds0 f11, f0, f8, f6 + psq_l f2, 12(m), 0, qr0 + ps_madds0 f12, f1, f8, f7 + psq_l f3, 20(m), 1, qr0 + ps_madds1 f13, f0, f9, f6 + psq_lu f10, 4(srcBase), 0, qr6 + ps_madds1 f14, f1, f9, f7 + psq_l f5, 32(m), 1, qr0 + ps_madds1 f11, f2, f8, f11 + ps_madds1 f12, f3, f8, f12 + psq_l f4, 24(m), 0, qr0 + ps_madds0 f13, f2, f10, f13 + psq_lu f8, 4(srcBase), 0, qr6 + ps_madds0 f14, f3, f10, f14 + ps_madds0 f15, f4, f9, f11 + ps_madds0 f16, f5, f9, f12 + psq_lu f9, 4(srcBase), 0, qr6 + ps_madds1 f17, f4, f10, f13 + ps_madds1 f18, f5, f10, f14 + psq_lu f10, 4(srcBase), 0, qr6 +loop: + ps_madds0 f11, f0, f8, f6 + psq_stu f15, 4(dstBase), 0, qr0 + ps_madds0 f12, f1, f8, f7 + psq_stu f16, 8(dstBase), 1, qr0 + ps_madds1 f13, f0, f9, f6 + psq_stu f17, 4(dstBase), 0, qr0 + ps_madds1 f14, f1, f9, f7 + psq_stu f18, 8(dstBase), 1, qr0 + ps_madds1 f11, f2, f8, f11 + ps_madds1 f12, f3, f8, f12 + psq_lu f8, 4(srcBase), 0, qr6 + ps_madds0 f13, f2, f10, f13 + ps_madds0 f14, f3, f10, f14 + ps_madds0 f15, f4, f9, f11 + ps_madds0 f16, f5, f9, f12 + psq_lu f9, 4(srcBase), 0, qr6 + ps_madds1 f17, f4, f10, f13 + ps_madds1 f18, f5, f10, f14 + psq_lu f10, 4(srcBase), 0, qr6 + bdnz loop + psq_stu f15, 4(dstBase), 0, qr0 + clrlwi. r7, count, 31 + psq_stu f16, 8(dstBase), 1, qr0 + bne exit + psq_stu f17, 4(dstBase), 0, qr0 + psq_stu f18, 8(dstBase), 1, qr0 +exit: + lfd f14, 8(r1) + lfd f15, 16(r1) + lfd f16, 24(r1) + lfd f17, 32(r1) + lfd f18, 40(r1) + addi r1, r1, 64 + blr + /* clang-format on */ +} + +asm void PSMTXMultS16VecArray(const register Mtx44 m, const register S16Vec *srcBase, register Vec *dstBase, register u32 count) +{ + /* clang-format off */ + psq_l f0, 0(m), 0, qr0 + lis r7, 7 + mtspr GQR6, r7 + psq_l f6, 0(srcBase), 0, qr6 + subi count, count, 1 + psq_l f7, 4(srcBase), 1, qr6 + mtctr count + psq_l f1, 8(m), 0, qr0 + addi srcBase, srcBase, 4 + psq_l f2, 16(m), 0, qr0 + subi dstBase, dstBase, 4 + psq_l f3, 24(m), 0, qr0 + ps_mul f8, f0, f6 + psq_l f4, 32(m), 0, qr0 + ps_mul f10, f2, f6 + psq_l f5, 40(m), 0, qr0 + ps_mul f12, f4, f6 + psq_lu f6, 2(srcBase), 0, qr1 + ps_madd f8, f1, f7, f8 + ps_madd f10, f3, f7, f10 + ps_madd f12, f5, f7, f12 + psq_lu f7, 4(srcBase), 1, qr6 + ps_sum0 f9, f8, f8, f8 +loop: + ps_sum0 f11, f10, f10, f10 + ps_mul f8, f0, f6 + ps_sum0 f13, f12, f12, f12 + ps_mul f10, f2, f6 + psq_stu f9, 4(dstBase), 1, qr0 + ps_mul f12, f4, f6 + psq_stu f11, 4(dstBase), 1, qr0 + ps_madd f8, f1, f7, f8 + psq_stu f13, 4(dstBase), 1, qr0 + ps_madd f10, f3, f7, f10 + psq_lu f6, 2(srcBase), 0, qr6 + ps_madd f12, f5, f7, f12 + psq_lu f7, 4(srcBase), 1, qr6 + ps_sum0 f9, f8, f8, f8 + bdnz loop + ps_sum0 f11, f10, f10, f10 + ps_sum0 f13, f12, f12, f12 + psq_stu f9, 4(dstBase), 1, qr0 + psq_stu f11, 4(dstBase), 1, qr0 + psq_stu f13, 4(dstBase), 1, qr0 + /* clang-format on */ +} diff --git a/src/dolphin/mtx/quat.c b/src/dolphin/mtx/quat.c new file mode 100644 index 00000000..f3e15a87 --- /dev/null +++ b/src/dolphin/mtx/quat.c @@ -0,0 +1,214 @@ +#include "dolphin/math.h" +#include "dolphin/mtx.h" + +float acosf(float x); + +float sinf(float x); +float cosf(float x); + +void C_QUATAdd(const Quaternion *p, const Quaternion *q, Qtrn *r) +{ + r->x = p->x + q->x; + r->y = p->y + q->y; + r->z = p->z + q->z; + r->w = p->w + q->w; +} + +void PSQUATAdd(register const Quaternion *p, register const Quaternion *q, register Quaternion *r) +{ + asm { + psq_l f0, 0x0(r3), 0, 0 + psq_l f1, 0x0(r4), 0, 0 + ps_add f0, f0, f1 + psq_st f0, 0x0(r5), 0, 0 + psq_l f0, 0x8(r3), 0, 0 + psq_l f1, 0x8(r4), 0, 0 + ps_add f0, f0, f1 + psq_st f0, 0x8(r5), 0, 0 + } +} + +void PSQUATMultiply(register const Quaternion *a, register const Quaternion *b, register Quaternion *ab) +{ + asm { + psq_l f0, 0(a), 0, 0 + psq_l f1, 8(a), 0, 0 + psq_l f2, 0(b), 0, 0 + ps_neg f5, f0 + psq_l f3, 8(b), 0, 0 + ps_neg f6, f1 + ps_merge01 f4, f5, f0 + ps_muls0 f7, f1, f2 + ps_muls0 f5, f5, f2 + ps_merge01 f1, f6, f1 + ps_muls1 f8, f4, f2 + ps_madds0 f7, f4, f3, f7 + ps_muls1 f2, f1, f2 + ps_madds0 f5, f1, f3, f5 + ps_madds1 f8, f6, f3, f8 + ps_merge10 f7, f7, f7 + ps_madds1 f2, f0, f3, f2 + ps_merge10 f5, f5, f5 + ps_add f7, f7, f2 + psq_st f7, 0(ab), 0, 0 + ps_sub f5, f5, f8 + psq_st f5, 8(ab), 0, 0 + } +} + +void PSQUATNormalize(const register Quaternion *src, register Quaternion *unit) +{ + // sdata2 + (void)0.00001f; + (void)0.0f; + (void)0.5; + (void)3.0; + (void)1.0f; + (void)0.5f; + (void)3.0f; + { + register f32 vv1, vv2, vv3; + register f32 vv4, vv5, vv6; + register f32 vv7, vv8; + register f32 vv9 = 0.00001f; + register f32 vvA = 0.5F; + register f32 vvB = 3.0F; + asm + { + psq_l vv1, 0(src), 0, 0; + ps_mul vv3, vv1, vv1; + psq_l vv2, 8(src), 0, 0; + ps_sub vv6, vv9, vv9; + ps_madd vv3, vv2, vv2, vv3; + ps_sum0 vv3, vv3, vv3, vv3; + frsqrte vv4, vv3; + ps_sub vv5, vv3, vv9; + fmul vv7, vv4, vv4; + fmul vv8, vv4, vvA; + fnmsub vv7, vv7, vv3, vvB; + fmul vv4, vv7, vv8; + ps_sel vv4, vv5, vv4, vv6; + ps_muls0 vv1, vv1, vv4; + ps_muls0 vv2, vv2, vv4; + psq_st vv1, 0(unit), 0, 0; + psq_st vv2, 8(unit), 0, 0; + } + } +} + +void PSQUATInverse(const register Quaternion *src, register Quaternion *inv) +{ + register f32 vv1, vv2, vv3, vv4; + register f32 vv5, vv6, vv7, vv8, vv9, vvA, vvB; + register f32 vvC = 1.0F; + asm { + psq_l vv1, 0(src), 0, 0; + ps_mul vv5, vv1, vv1; + psq_l vv2, 8(src), 0, 0; + ps_madd vv5, vv2, vv2, vv5; + ps_add vvA, vvC, vvC; + ps_sum0 vv5, vv5, vv5, vv5; + fres vv7, vv5; + ps_neg vv6, vv5; + ps_nmsub vv9, vv5, vv7, vvA; + ps_mul vv7, vv7, vv9; + ps_sel vv7, vv6, vvC, vv7 + b loc1; + loc0: + fmr vv7, vvC; + loc1: + ps_neg vv8, vv7; + ps_muls1 vv4, vv7, vv2; + ps_muls0 vv1, vv1, vv8; + psq_st vv4, 12(inv), 1, 0; + ps_muls0 vv3, vv2, vv8; + psq_st vv1, 0(inv), 0, 0; + psq_st vv3, 8(inv), 1, 0; + } +} + +void C_QUATRotAxisRad(Quaternion *q, const Vec *axis, f32 rad) +{ + f32 tmp, tmp2, tmp3; + Vec dst; + + tmp = rad; + PSVECNormalize(axis, &dst); + + tmp2 = tmp * 0.5f; + tmp3 = sinf(tmp * 0.5f); + tmp = tmp3; + tmp3 = cosf(tmp2); + + q->x = tmp * dst.x; + q->y = tmp * dst.y; + q->z = tmp * dst.z; + q->w = tmp3; +} + +void C_QUATMtx(Quaternion *r, const Mtx m) +{ + f32 vv0, vv1; + s32 i, j, k; + s32 idx[3] = { 1, 2, 0 }; + f32 vec[3]; + vv0 = m[0][0] + m[1][1] + m[2][2]; + if (vv0 > 0.0f) { + vv1 = (f32)sqrtf(vv0 + 1.0f); + r->w = vv1 * 0.5f; + vv1 = 0.5f / vv1; + r->x = (m[2][1] - m[1][2]) * vv1; + r->y = (m[0][2] - m[2][0]) * vv1; + r->z = (m[1][0] - m[0][1]) * vv1; + } + else { + i = 0; + if (m[1][1] > m[0][0]) + i = 1; + if (m[2][2] > m[i][i]) + i = 2; + j = idx[i]; + k = idx[j]; + vv1 = (f32)sqrtf((m[i][i] - (m[j][j] + m[k][k])) + 1.0f); + vec[i] = vv1 * 0.5f; + if (vv1 != 0.0f) + vv1 = 0.5f / vv1; + r->w = (m[k][j] - m[j][k]) * vv1; + vec[j] = (m[i][j] + m[j][i]) * vv1; + vec[k] = (m[i][k] + m[k][i]) * vv1; + r->x = vec[0]; + r->y = vec[1]; + r->z = vec[2]; + } +} + +void C_QUATSlerp(const Quaternion *p, const Quaternion *q, Quaternion *r, f32 t) +{ + f32 ratioA, ratioB; + + f32 value = 1.0f; + f32 cosHalfTheta = p->x * q->x + p->y * q->y + p->z * q->z + p->w * q->w; + + if (cosHalfTheta < 0.0f) { + cosHalfTheta = -cosHalfTheta; + value = -value; + } + + if (cosHalfTheta <= 0.9999899864196777f) { + f32 halfTheta = acosf(cosHalfTheta); + f32 sinHalfTheta = sinf(halfTheta); + + ratioA = sinf((1.0f - t) * halfTheta) / sinHalfTheta; + ratioB = sinf(t * halfTheta) / sinHalfTheta; + value *= ratioB; + } + else { + ratioA = 1.0f - t; + value *= t; + } + + r->x = (ratioA * p->x) + (value * q->x); + r->y = (ratioA * p->y) + (value * q->y); + r->z = (ratioA * p->z) + (value * q->z); + r->w = (ratioA * p->w) + (value * q->w); +} diff --git a/src/dolphin/mtx/vec.c b/src/dolphin/mtx/vec.c new file mode 100644 index 00000000..de5ad450 --- /dev/null +++ b/src/dolphin/mtx/vec.c @@ -0,0 +1,287 @@ +#include "dolphin/mtx.h" +#include "math.h" + +#define R_RET fp1 +#define FP2 fp2 +#define FP3 fp3 +#define FP4 fp4 +#define FP5 fp5 +#define FP6 fp6 +#define FP7 fp7 +#define FP8 fp8 +#define FP9 fp9 +#define FP10 fp10 +#define FP11 fp11 +#define FP12 fp12 +#define FP13 fp13 + +asm void PSVECAdd(const register Vec *vec1, const register Vec *vec2, register Vec *ret) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l FP2, 0(vec1), 0, 0; + psq_l FP4, 0(vec2), 0, 0; + ps_add FP6, FP2, FP4; + psq_st FP6, 0(ret), 0, 0; + psq_l FP3, 8(vec1), 1, 0; + psq_l FP5, 8(vec2), 1, 0; + ps_add FP7, FP3, FP5; + psq_st FP7, 8(ret), 1, 0; + blr +#endif // clang-format on +} + +asm void PSVECSubtract(const register Vec *vec1, const register Vec *vec2, register Vec *ret) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l FP2, 0(vec1), 0, 0; + psq_l FP4, 0(vec2), 0, 0; + ps_sub FP6, FP2, FP4; + psq_st FP6, 0(ret), 0, 0; + psq_l FP3, 8(vec1), 1, 0; + psq_l FP5, 8(vec2), 1, 0; + 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 +} + +void C_VECScale(const Vec *src, Vec *dst, f32 scale) +{ + f32 s; + + s = 1.0f / sqrtf(src->z * src->z + src->x * src->x + src->y * src->y); + dst->x = src->x * s; + dst->y = src->y * s; + dst->z = src->z * s; +} + +void PSVECNormalize(const register Vec *vec1, register Vec *ret) +{ +#ifdef __MWERKS__ // clang-format off + register f32 half = 0.5f; + register f32 three = 3.0f; + register f32 xx_zz, xx_yy; + register f32 square_sum; + register f32 ret_sqrt; + register f32 n_0, n_1; + asm { + psq_l FP2, 0(vec1), 0, 0; + ps_mul xx_yy, FP2, FP2; + psq_l FP3, 8(vec1), 1, 0; + ps_madd xx_zz, FP3, FP3, xx_yy; + ps_sum0 square_sum, xx_zz, FP3, xx_yy; + frsqrte ret_sqrt, square_sum; + fmuls n_0, ret_sqrt, ret_sqrt; + fmuls n_1, ret_sqrt, half; + fnmsubs n_0, n_0, square_sum, three; + fmuls ret_sqrt, n_0, n_1; + ps_muls0 FP2, FP2, ret_sqrt; + psq_st FP2, 0(ret), 0, 0; + ps_muls0 FP3, FP3, ret_sqrt; + psq_st FP3, 8(ret), 1, 0; + } +#endif // clang-format on +} + +asm f32 PSVECSquareMag(register const Vec *v) { +#ifdef __MWERKS__ // 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 +} + +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 + 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 + half = 0.5f; +#ifdef __MWERKS__ // clang-format off + asm { + ps_sum0 square_mag, square_mag, v_xy, v_xy + frsqrte ret_mag, square_mag + } +#endif // clang-format on + three = 3.0f; +#ifdef __MWERKS__ // clang-format off +asm { + fmuls n_0, ret_mag, ret_mag + fmuls n_1, ret_mag, half + fnmsubs n_0, n_0, square_mag, three + fmuls ret_mag, n_0, n_1 + fsel ret_mag, ret_mag, ret_mag, square_mag + fmuls square_mag, square_mag, ret_mag + } +#endif // clang-format on + return square_mag; +} + +asm f32 PSVECDotProduct(const register Vec *vec1, const register Vec *vec2) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc; + psq_l f2, 4(r3), 0, 0 /* qr0 */ + psq_l f3, 4(r4), 0, 0 /* qr0 */ + ps_mul f2, f2, f3 + psq_l f5, 0(r3), 0, 0 /* qr0 */ + 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 +} + +asm void PSVECCrossProduct(register const Vec *a, register const Vec *b, register Vec *axb) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l f1, 0(b), 0, 0 + lfs f2, 8(a) + psq_l f0, 0(a), 0, 0 + ps_merge10 f6, f1, f1 + lfs f3, 8(b) + ps_mul f4, f1, f2 + ps_muls0 f7, f1, f0 + ps_msub f5, f0, f3, f4 + ps_msub f8, f0, f6, f7 + ps_merge11 f9, f5, f5 + ps_merge01 f10, f5, f8 + psq_st f9, 0(axb), 1, 0 + ps_neg f10, f10 + psq_st f10, 4(axb), 0, 0 + blr +#endif // clang-format on +} + +void C_VECHalfAngle(const Vec *a, const Vec *b, Vec *half) +{ + Vec a0; + Vec b0; + Vec ab; + + a0.x = -a->x; + a0.y = -a->y; + a0.z = -a->z; + + b0.x = -b->x; + b0.y = -b->y; + b0.z = -b->z; + + VECNormalize(&a0, &a0); + VECNormalize(&b0, &b0); + VECAdd(&a0, &b0, &ab); + + if (VECDotProduct(&ab, &ab) > 0.0f) { + VECNormalize(&ab, half); + } + else { + *half = ab; + } +} + +void C_VECReflect(const Vec *src, const Vec *normal, Vec *dst) +{ + Vec a0; + Vec b0; + f32 dot; + + a0.x = -src->x; + a0.y = -src->y; + a0.z = -src->z; + + VECNormalize(&a0, &a0); + VECNormalize(normal, &b0); + + dot = VECDotProduct(&a0, &b0); + dst->x = b0.x * 2.0f * dot - a0.x; + dst->y = b0.y * 2.0f * dot - a0.y; + dst->z = b0.z * 2.0f * dot - a0.z; + + VECNormalize(dst, dst); +} + +asm f32 PSVECSquareDistance(register const Vec *a, register const Vec *b) { +#ifdef __MWERKS__ // clang-format off + nofralloc + psq_l f0, 4(a), 0, 0 + psq_l f1, 4(b), 0, 0 + ps_sub f2, f0, f1 + psq_l f0, 0(a), 0, 0 + psq_l f1, 0(b), 0, 0 + ps_mul f2, f2, f2 + ps_sub f0, f0, f1 + ps_madd f1, f0, f0, f2 + ps_sum0 f1, f1, f2, f2 + blr +#endif // clang-format on +} + +f32 PSVECDistance(register const Vec *a, register const Vec *b) +{ + + register f32 half_c; + register f32 three_c; + register f32 dist; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f0, 4(a), 0, 0 /* qr0 */ + psq_l f1, 4(b), 0, 0 /* qr0 */ + ps_sub f2, f0, f1 + psq_l f0, 0(a), 0, 0 /* qr0 */ + psq_l f1, 0(b), 0, 0 /* qr0 */ + ps_mul f2, f2, f2 + ps_sub f0, f0, f1 + } + + half_c = 0.5f; + + asm { + ps_madd f0, f0, f0, f2 + ps_sum0 f0, f0, f2, f2 + } + + three_c = 3.0f; + + asm { + frsqrte dist, f0 + fmuls f2, dist, dist + fmuls dist, dist, half_c + fnmsubs f2, f2, f0, three_c + fmuls dist, f2, dist + fsel dist, dist, dist, f0 + fmuls dist, f0, dist + } + + return dist; +#endif // clang-format on +} diff --git a/src/dolphin/os/OS.c b/src/dolphin/os/OS.c new file mode 100644 index 00000000..69843d73 --- /dev/null +++ b/src/dolphin/os/OS.c @@ -0,0 +1,645 @@ +#include <__ppc_eabi_linker.h> +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern OSTime __OSGetSystemTime(); +extern char _db_stack_end[]; + +#define OS_BI2_DEBUG_ADDRESS 0x800000F4 +#define DEBUGFLAG_ADDR 0x800030E8 +#define OS_DEBUG_ADDRESS_2 0x800030E9 +#define OS_CURRENTCONTEXT_PADDR 0x00C0 + +extern char *__OSResetSWInterruptHandler[]; + +vu16 __OSDeviceCode : (OS_BASE_CACHED | 0x30E6); +static DVDDriveInfo DriveInfo ATTRIBUTE_ALIGN(32); +static DVDCommandBlock DriveBlock; + +static OSBootInfo *BootInfo; +static u32 *BI2DebugFlag; +static u32 *BI2DebugFlagHolder; +__declspec(weak) BOOL __OSIsGcam = FALSE; +static f64 ZeroF; +static f32 ZeroPS[2]; +static BOOL AreWeInitialized = FALSE; +static __OSExceptionHandler *OSExceptionTable; +OSTime __OSStartTime; +BOOL __OSInIPL; + +extern u8 __ArenaHi[]; +extern u8 __ArenaLo[]; +extern u32 __DVDLongFileNameFlag; +extern u32 __PADSpec; + +#define OS_EXCEPTIONTABLE_ADDR 0x3000 +#define OS_DBJUMPPOINT_ADDR 0x60 +// memory locations for important stuff +#define OS_CACHED_REGION_PREFIX 0x8000 +#define OS_BI2_DEBUG_ADDRESS 0x800000F4 +#define OS_BI2_DEBUGFLAG_OFFSET 0xC +#define PAD3_BUTTON_ADDR 0x800030E4 +#define OS_DVD_DEVICECODE 0x800030E6 +#define DEBUGFLAG_ADDR 0x800030E8 +#define OS_DEBUG_ADDRESS_2 0x800030E9 +#define DB_EXCEPTIONRET_OFFSET 0xC +#define DB_EXCEPTIONDEST_OFFSET 0x8 + +void OSDefaultExceptionHandler(__OSException exception, OSContext *context); +extern BOOL __DBIsExceptionMarked(__OSException); +static void OSExceptionInit(void); + +/* clang-format off */ +asm void __OSFPRInit(void) +{ + nofralloc + + mfmsr r3 + ori r3, r3, 0x2000 + mtmsr r3 + + mfspr r3, 0x398 + rlwinm. r3, r3, 3, 31, 31 + beq SkipPairedSingles + + lis r3, ZeroPS@ha + addi r3, r3, ZeroPS@l + psq_l fp0, 0(r3), 0, 0 + ps_mr fp1, fp0 + ps_mr fp2, fp0 + ps_mr fp3, fp0 + ps_mr fp4, fp0 + ps_mr fp5, fp0 + ps_mr fp6, fp0 + ps_mr fp7, fp0 + ps_mr fp8, fp0 + ps_mr fp9, fp0 + ps_mr fp10, fp0 + ps_mr fp11, fp0 + ps_mr fp12, fp0 + ps_mr fp13, fp0 + ps_mr fp14, fp0 + ps_mr fp15, fp0 + ps_mr fp16, fp0 + ps_mr fp17, fp0 + ps_mr fp18, fp0 + ps_mr fp19, fp0 + ps_mr fp20, fp0 + ps_mr fp21, fp0 + ps_mr fp22, fp0 + ps_mr fp23, fp0 + ps_mr fp24, fp0 + ps_mr fp25, fp0 + ps_mr fp26, fp0 + ps_mr fp27, fp0 + ps_mr fp28, fp0 + ps_mr fp29, fp0 + ps_mr fp30, fp0 + ps_mr fp31, fp0 + +SkipPairedSingles: + lfd fp0, ZeroF + fmr fp1, fp0 + fmr fp2, fp0 + fmr fp3, fp0 + fmr fp4, fp0 + fmr fp5, fp0 + fmr fp6, fp0 + fmr fp7, fp0 + fmr fp8, fp0 + fmr fp9, fp0 + fmr fp10, fp0 + fmr fp11, fp0 + fmr fp12, fp0 + fmr fp13, fp0 + fmr fp14, fp0 + fmr fp15, fp0 + fmr fp16, fp0 + fmr fp17, fp0 + fmr fp18, fp0 + fmr fp19, fp0 + fmr fp20, fp0 + fmr fp21, fp0 + fmr fp22, fp0 + fmr fp23, fp0 + fmr fp24, fp0 + fmr fp25, fp0 + fmr fp26, fp0 + fmr fp27, fp0 + fmr fp28, fp0 + fmr fp29, fp0 + fmr fp30, fp0 + fmr fp31, fp0 + + mtfsf 0xFF, fp0 + + blr +} +/* clang-format on */ + +u32 OSGetConsoleType() +{ + if (BootInfo == NULL || BootInfo->consoleType == 0) { + return OS_CONSOLE_ARTHUR; + } + return BootInfo->consoleType; +} + +void *__OSSavedRegionStart; +void *__OSSavedRegionEnd; + +extern u32 BOOT_REGION_START : 0x812FDFF0; //(*(u32 *)0x812fdff0) +extern u32 BOOT_REGION_END : 0x812FDFEC; //(*(u32 *)0x812fdfec) + +void ClearArena(void) +{ + if ((u32)(OSGetResetCode() + 0x80000000) != 0U) { + __OSSavedRegionStart = 0U; + __OSSavedRegionEnd = 0U; + memset(OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); + return; + } + __OSSavedRegionStart = (void *)BOOT_REGION_START; + __OSSavedRegionEnd = (void *)BOOT_REGION_END; + if (BOOT_REGION_START == 0U) { + memset(OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); + return; + } + + if ((u32)OSGetArenaLo() < (u32)__OSSavedRegionStart) { + if ((u32)OSGetArenaHi() <= (u32)__OSSavedRegionStart) { + memset((u32)OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); + return; + } + memset(OSGetArenaLo(), 0U, (u32)__OSSavedRegionStart - (u32)OSGetArenaLo()); + if ((u32)OSGetArenaHi() > (u32)__OSSavedRegionEnd) { + memset((u32)__OSSavedRegionEnd, 0, (u32)OSGetArenaHi() - (u32)__OSSavedRegionEnd); + } + } +} + +static void InquiryCallback(s32 result, DVDCommandBlock *block) +{ + switch (block->state) { + case 0: + __OSDeviceCode = (u16)(0x8000 | DriveInfo.deviceCode); + break; + default: + __OSDeviceCode = 1; + break; + } +} + +void OSInit(void) +{ + /* + Initializes the Dolphin operating system. + - most of the main operations get farmed out to other functions + - loading debug info and setting up heap bounds largely happen here + - a lot of OS reporting also gets controlled here + */ + // pretty sure this is the min(/max) amount of pointers etc for the stack to match + BI2Debug *DebugInfo; + void *debugArenaLo; + u32 inputConsoleType; + + // check if we've already done all this or not + if ((BOOL)AreWeInitialized == FALSE) { // fantastic name + AreWeInitialized = TRUE; // flag to make sure we don't have to do this again + + // SYSTEM // + __OSStartTime = __OSGetSystemTime(); + OSDisableInterrupts(); + + // set some PPC things + PPCDisableSpeculation(); + PPCSetFpNonIEEEMode(); + + // DEBUG // + // load some DVD stuff + BI2DebugFlag = 0; // debug flag from the DVD BI2 header + BootInfo = (OSBootInfo *)OS_BASE_CACHED; // set pointer to BootInfo + + __DVDLongFileNameFlag = (u32)0; // flag to tell us whether we make it through the debug loading + + // time to grab a bunch of debug info from the DVD + // the address for where the BI2 debug info is, is stored at OS_BI2_DEBUG_ADDRESS + DebugInfo = (BI2Debug *)*((u32 *)OS_BI2_DEBUG_ADDRESS); + + // if the debug info address exists, grab some debug info + if (DebugInfo != NULL) { + BI2DebugFlag = &DebugInfo->debugFlag; // debug flag from DVD BI2 + __PADSpec = (u32)DebugInfo->padSpec; // some other info from DVD BI2 + *((u8 *)DEBUGFLAG_ADDR) = (u8)*BI2DebugFlag; // store flag in mem + *((u8 *)OS_DEBUG_ADDRESS_2) = (u8)__PADSpec; // store other info in mem + } + else if (BootInfo->arenaHi) { // if the top of the heap is already set + BI2DebugFlagHolder = (u32 *)*((u8 *)DEBUGFLAG_ADDR); // grab whatever's stored at 0x800030E8 + BI2DebugFlag = (u32 *)&BI2DebugFlagHolder; // flag is then address of flag holder + __PADSpec = (u32) * ((u8 *)OS_DEBUG_ADDRESS_2); // pad spec is whatever's at 0x800030E9 + } + + __DVDLongFileNameFlag = 1; // we made it through debug! + + // HEAP // + // set up bottom of heap (ArenaLo) + // grab address from BootInfo if it exists, otherwise use default __ArenaLo + OSSetArenaLo((BootInfo->arenaLo == NULL) ? __ArenaLo : BootInfo->arenaLo); + + // if the input arenaLo is null, and debug flag location exists (and flag is < 2), + // set arenaLo to just past the end of the db stack + if ((BootInfo->arenaLo == NULL) && (BI2DebugFlag != 0) && (*BI2DebugFlag < 2)) { + debugArenaLo = (char *)(((u32)_stack_addr + 0x1f) & ~0x1f); + OSSetArenaLo(debugArenaLo); + } + + // set up top of heap (ArenaHi) + // grab address from BootInfo if it exists, otherwise use default __ArenaHi + OSSetArenaHi((BootInfo->arenaHi == NULL) ? __ArenaHi : BootInfo->arenaHi); + + // OS INIT AND REPORT // + // initialise a whole bunch of OS stuff + OSExceptionInit(); + __OSInitSystemCall(); + OSInitAlarm(); + __OSModuleInit(); + __OSInterruptInit(); + __OSSetInterruptHandler(__OS_INTERRUPT_PI_RSW, (void *)__OSResetSWInterruptHandler); + __OSContextInit(); + __OSCacheInit(); + EXIInit(); + SIInit(); + __OSInitSram(); + __OSThreadInit(); + __OSInitAudioSystem(); + PPCMthid2(PPCMfhid2() & 0xBFFFFFFF); + if ((BootInfo->consoleType & OS_CONSOLE_DEVELOPMENT) != 0) { + BootInfo->consoleType = OS_CONSOLE_DEVHW1; + } + else { + BootInfo->consoleType = OS_CONSOLE_RETAIL1; + } + BootInfo->consoleType += (__PIRegs[11] & 0xF0000000) >> 28; + if ((BOOL)__OSInIPL == FALSE) { + __OSInitMemoryProtection(); + } + + // begin OS reporting + OSReport("\nDolphin OS $Revision: 54 $.\n"); + OSReport("Kernel built : %s %s\n", "Jun 5 2002", "02:09:12"); + OSReport("Console Type : "); + + // this is a function in the same file, but it doesn't seem to match + // inputConsoleType = OSGetConsoleType(); + + // inputConsoleType = (BootInfo == NULL || (inputConsoleType = BootInfo->consoleType) == 0) ? + // 0x10000002 : BootInfo->consoleType; + if (BootInfo == NULL || (inputConsoleType = BootInfo->consoleType) == 0) { + inputConsoleType = OS_CONSOLE_ARTHUR; // default console type + } + else { + inputConsoleType = BootInfo->consoleType; + } + + // work out what console type this corresponds to and report it + // consoleTypeSwitchHi = inputConsoleType & 0xF0000000; + inputConsoleType = OSGetConsoleType(); + if ((inputConsoleType & 0x10000000) == OS_CONSOLE_RETAIL) { // check "first" byte + OSReport("Retail %d\n", inputConsoleType); + } + else { + switch (inputConsoleType) { // if "first" byte is 2, check "the rest" + case OS_CONSOLE_EMULATOR: + OSReport("Mac Emulator\n"); + break; + case OS_CONSOLE_PC_EMULATOR: + OSReport("PC Emulator\n"); + break; + case OS_CONSOLE_ARTHUR: + OSReport("EPPC Arthur\n"); + break; + case OS_CONSOLE_MINNOW: + OSReport("EPPC Minnow\n"); + break; + default: + OSReport("Development HW%d\n", ((u32)inputConsoleType - 0x10000000) - 3); + break; + } + } + + // report memory size + OSReport("Memory %d MB\n", (u32)BootInfo->memorySize >> 0x14U); + // report heap bounds + OSReport("Arena : 0x%x - 0x%x\n", OSGetArenaLo(), OSGetArenaHi()); + // report OS version + + // if location of debug flag exists, and flag is >= 2, enable MetroTRKInterrupts + if (BI2DebugFlag && ((*BI2DebugFlag) >= 2)) { + EnableMetroTRKInterrupts(); + } + + // free up memory and re-enable things + ClearArena(); + OSEnableInterrupts(); + + // check if we can load OS from IPL; if not, grab it from DVD (?) + if ((BOOL)__OSInIPL == FALSE) { + DVDInit(); + if ((BOOL)__OSIsGcam) { + __OSDeviceCode = 0x9000; + return; + } + DCInvalidateRange(&DriveInfo, sizeof(DriveInfo)); + DVDInquiryAsync((char *)&DriveBlock, &DriveInfo, InquiryCallback); + } + } +} + +static u32 __OSExceptionLocations[] = { + 0x00000100, + 0x00000200, + 0x00000300, + 0x00000400, + 0x00000500, + 0x00000600, + 0x00000700, + 0x00000800, + 0x00000900, + 0x00000C00, + 0x00000D00, + 0x00000F00, + 0x00001300, + 0x00001400, + 0x00001700, +}; + +// dummy entry points to the OS Exception vector +void __OSEVStart(void); +void __OSEVEnd(void); +void __OSEVSetNumber(void); +void __OSExceptionVector(void); + +void __DBVECTOR(void); +void __OSDBINTSTART(void); +void __OSDBINTEND(void); +void __OSDBJUMPSTART(void); +void __OSDBJUMPEND(void); + +#define NOP 0x60000000 + +__OSExceptionHandler __OSSetExceptionHandler(__OSException exception, __OSExceptionHandler handler); + +static void OSExceptionInit(void) +{ + __OSException exception; + void *destAddr; + + // These two vars help us change the exception number embedded + // in the exception handler code. + u32 *opCodeAddr; + u32 oldOpCode; + + // Address range of the actual code to be copied. + u8 *handlerStart; + u32 handlerSize; + + // Install the first level exception vector. + opCodeAddr = (u32 *)__OSEVSetNumber; + oldOpCode = *opCodeAddr; + handlerStart = (u8 *)__OSEVStart; + handlerSize = (u32)((u8 *)__OSEVEnd - (u8 *)__OSEVStart); + + // Install the DB integrator, only if we are the first OSInit to be run + destAddr = (void *)OSPhysicalToCached(OS_DBJUMPPOINT_ADDR); + if (*(u32 *)destAddr == 0) // Lomem should be zero cleared only once by BS2 + { + DBPrintf("Installing OSDBIntegrator\n"); + memcpy(destAddr, (void *)__OSDBINTSTART, (u32)__OSDBINTEND - (u32)__OSDBINTSTART); + DCFlushRangeNoSync(destAddr, (u32)__OSDBINTEND - (u32)__OSDBINTSTART); + __sync(); + ICInvalidateRange(destAddr, (u32)__OSDBINTEND - (u32)__OSDBINTSTART); + } + + // Copy the right vector into the table + for (exception = 0; exception < 15; exception++) { + if (BI2DebugFlag && (*BI2DebugFlag >= 2) && __DBIsExceptionMarked(exception)) { + // this DBPrintf is suspicious. + DBPrintf(">>> OSINIT: exception %d commandeered by TRK\n", exception); + continue; + } + + // Modify the copy of code in text before transferring + // to the exception table. + *opCodeAddr = oldOpCode | exception; + + // Modify opcodes at __DBVECTOR if necessary + if (__DBIsExceptionMarked(exception)) { + DBPrintf(">>> OSINIT: exception %d vectored to debugger\n", exception); + memcpy((void *)__DBVECTOR, (void *)__OSDBINTEND, (u32)__OSDBJUMPEND - (u32)__OSDBINTEND); + } + else { + // make sure the opcodes are still nop + u32 *ops = (u32 *)__DBVECTOR; + int cb; + + for (cb = 0; cb < (u32)__OSDBJUMPEND - (u32)__OSDBINTEND; cb += sizeof(u32)) { + *ops++ = NOP; + } + } + + // Install the modified handler. + destAddr = (void *)OSPhysicalToCached(__OSExceptionLocations[(u32)exception]); + memcpy(destAddr, handlerStart, handlerSize); + DCFlushRangeNoSync(destAddr, handlerSize); + __sync(); + ICInvalidateRange(destAddr, handlerSize); + } + + // initialize pointer to exception table + OSExceptionTable = OSPhysicalToCached(OS_EXCEPTIONTABLE_ADDR); + + // install default exception handlers + for (exception = 0; exception < 15; exception++) { + __OSSetExceptionHandler(exception, OSDefaultExceptionHandler); + } + + // restore the old opcode, so that we can re-start an application without + // downloading the text segments + *opCodeAddr = oldOpCode; + + DBPrintf("Exceptions initialized...\n"); +} + +static asm void __OSDBIntegrator(void) +{ + /* clang-format off */ + nofralloc +entry __OSDBINTSTART + li r5, OS_DBINTERFACE_ADDR + mflr r3 + stw r3, DB_EXCEPTIONRET_OFFSET(r5) + lwz r3, DB_EXCEPTIONDEST_OFFSET(r5) + oris r3, r3, OS_CACHED_REGION_PREFIX + mtlr r3 + li r3, 0x30 // MSR_IR | MSR_DR // turn on memory addressing + mtmsr r3 + blr +entry __OSDBINTEND + /* clang-format on */ +} + +static asm void __OSDBJump(void) { + /* clang-format off */ + + nofralloc +entry __OSDBJUMPSTART + bla OS_DBJUMPPOINT_ADDR +entry __OSDBJUMPEND + /* clang-format on */ + +} + +__OSExceptionHandler __OSSetExceptionHandler(__OSException exception, __OSExceptionHandler handler) +{ + __OSExceptionHandler oldHandler; + oldHandler = OSExceptionTable[exception]; + OSExceptionTable[exception] = handler; + return oldHandler; +} + +__OSExceptionHandler __OSGetExceptionHandler(__OSException exception) +{ + return OSExceptionTable[exception]; +} + +static asm void OSExceptionVector(void) +{ + /* clang-format off */ + nofralloc + +entry __OSEVStart + // Save r4 into SPRG0 + mtsprg 0, r4 + + // Load current context physical address into r4 + lwz r4, OS_CURRENTCONTEXT_PADDR + + // Save r3 - r5 into the current context + stw r3, OS_CONTEXT_R3(r4) + mfsprg r3, 0 + stw r3, OS_CONTEXT_R4(r4) + stw r5, OS_CONTEXT_R5(r4) + + lhz r3, OS_CONTEXT_STATE(r4) + ori r3, r3, OS_CONTEXT_STATE_EXC + sth r3, OS_CONTEXT_STATE(r4) + + // Save misc registers + mfcr r3 + stw r3, OS_CONTEXT_CR(r4) + mflr r3 + stw r3, OS_CONTEXT_LR(r4) + mfctr r3 + stw r3, OS_CONTEXT_CTR(r4) + mfxer r3 + stw r3, OS_CONTEXT_XER(r4) + mfsrr0 r3 + stw r3, OS_CONTEXT_SRR0(r4) + mfsrr1 r3 + stw r3, OS_CONTEXT_SRR1(r4) + mr r5, r3 + +entry __DBVECTOR + nop + + // Set SRR1[IR|DR] to turn on address + // translation at the next RFI + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + + // This lets us change the exception number based on the + // exception we're installing. +entry __OSEVSetNumber + addi r3, 0, 0x0000 + + // Load current context virtual address into r4 + lwz r4, 0xD4 + + // Check non-recoverable interrupt + rlwinm. r5, r5, 0, MSR_RI_BIT, MSR_RI_BIT + bne recoverable + addis r5, 0, OSDefaultExceptionHandler@ha + addi r5, r5, OSDefaultExceptionHandler@l + mtsrr0 r5 + rfi + // NOT REACHED HERE + +recoverable: + // Locate exception handler. + rlwinm r5, r3, 2, 22, 29 // r5 contains exception*4 + lwz r5, OS_EXCEPTIONTABLE_ADDR(r5) + mtsrr0 r5 + + // Final state + // r3 - exception number + // r4 - pointer to context + // r5 - garbage + // srr0 - exception handler + // srr1 - address translation enalbed, not yet recoverable + + rfi + // NOT REACHED HERE + // The handler will restore state + +entry __OSEVEnd + nop + /* clang-format on */ +} + +void __OSUnhandledException(__OSException exception, OSContext *context, u32 dsisr, u32 dar); +asm void OSDefaultExceptionHandler(register __OSException exception, register OSContext *context) +{ + /* clang-format off */ + nofralloc + OS_EXCEPTION_SAVE_GPRS(context) + mfdsisr r5 + mfdar r6 + + stwu r1,-8(r1) + b __OSUnhandledException + /* clang-foramt on */ +} + +void __OSPSInit(void) +{ + PPCMthid2(PPCMfhid2() | 0xA0000000); + ICFlashInvalidate(); + __sync(); + // clang-format off + asm + { + li r3, 0 + mtspr GQR0, r3 + } + // clang-format on +} + +#define DI_CONFIG_IDX 0x9 +#define DI_CONFIG_CONFIG_MASK 0xFF +u32 __OSGetDIConfig(void) +{ + return (__DIRegs[DI_CONFIG_IDX] & DI_CONFIG_CONFIG_MASK); +} + +void OSRegisterVersion(const char *id) +{ + OSReport("%s\n", id); +} diff --git a/src/dolphin/os/OSAlarm.c b/src/dolphin/os/OSAlarm.c new file mode 100644 index 00000000..7c3f0e97 --- /dev/null +++ b/src/dolphin/os/OSAlarm.c @@ -0,0 +1,199 @@ +#include +#include + +#include + +static struct OSAlarmQueue { + OSAlarm *head; + OSAlarm *tail; +} AlarmQueue; + +static void DecrementerExceptionHandler(__OSException exception, OSContext *context); +static BOOL OnReset(BOOL final); + +void OSInitAlarm(void) +{ + if (__OSGetExceptionHandler(8) != DecrementerExceptionHandler) { + AlarmQueue.head = AlarmQueue.tail = NULL; + __OSSetExceptionHandler(8, DecrementerExceptionHandler); + } +} + +void OSCreateAlarm(OSAlarm *alarm) +{ + alarm->handler = 0; +} + +static void SetTimer(OSAlarm *alarm) +{ + OSTime delta; + + delta = alarm->fire - __OSGetSystemTime(); + if (delta < 0) { + PPCMtdec(0); + } + else if (delta < 0x80000000) { + PPCMtdec((u32)delta); + } + else { + PPCMtdec(0x7fffffff); + } +} + +static void InsertAlarm(OSAlarm *alarm, OSTime fire, OSAlarmHandler handler) +{ + OSAlarm *next; + OSAlarm *prev; + + if (0 < alarm->period) { + OSTime time = __OSGetSystemTime(); + + fire = alarm->start; + if (alarm->start < time) { + fire += alarm->period * ((time - alarm->start) / alarm->period + 1); + } + } + + alarm->handler = handler; + alarm->fire = fire; + + for (next = AlarmQueue.head; next; next = next->next) { + if (next->fire <= fire) { + continue; + } + + alarm->prev = next->prev; + next->prev = alarm; + alarm->next = next; + prev = alarm->prev; + if (prev) { + prev->next = alarm; + } + else { + AlarmQueue.head = alarm; + SetTimer(alarm); + } + return; + } + alarm->next = 0; + prev = AlarmQueue.tail; + AlarmQueue.tail = alarm; + alarm->prev = prev; + if (prev) { + prev->next = alarm; + } + else { + AlarmQueue.head = AlarmQueue.tail = alarm; + SetTimer(alarm); + } +} + +void OSSetAlarm(OSAlarm *alarm, OSTime tick, OSAlarmHandler handler) +{ + BOOL enabled; + enabled = OSDisableInterrupts(); + alarm->period = 0; + InsertAlarm(alarm, __OSGetSystemTime() + tick, handler); + OSRestoreInterrupts(enabled); +} + +void OSSetPeriodicAlarm(OSAlarm *alarm, OSTime start, OSTime period, OSAlarmHandler handler) +{ + BOOL enabled; + enabled = OSDisableInterrupts(); + alarm->period = period; + alarm->start = __OSTimeToSystemTime(start); + InsertAlarm(alarm, 0, handler); + OSRestoreInterrupts(enabled); +} + +void OSCancelAlarm(OSAlarm *alarm) +{ + OSAlarm *next; + BOOL enabled; + + enabled = OSDisableInterrupts(); + + if (alarm->handler == 0) { + OSRestoreInterrupts(enabled); + return; + } + + next = alarm->next; + if (next == 0) { + AlarmQueue.tail = alarm->prev; + } + else { + next->prev = alarm->prev; + } + if (alarm->prev) { + alarm->prev->next = next; + } + else { + AlarmQueue.head = next; + if (next) { + SetTimer(next); + } + } + alarm->handler = 0; + + OSRestoreInterrupts(enabled); +} + +static void DecrementerExceptionCallback(register __OSException exception, register OSContext *context) +{ + OSAlarm *alarm; + OSAlarm *next; + OSAlarmHandler handler; + OSTime time; + OSContext exceptionContext; + time = __OSGetSystemTime(); + alarm = AlarmQueue.head; + if (alarm == 0) { + OSLoadContext(context); + } + + if (time < alarm->fire) { + SetTimer(alarm); + OSLoadContext(context); + } + + next = alarm->next; + AlarmQueue.head = next; + if (next == 0) { + AlarmQueue.tail = 0; + } + else { + next->prev = 0; + } + + handler = alarm->handler; + alarm->handler = 0; + if (0 < alarm->period) { + InsertAlarm(alarm, 0, handler); + } + + if (AlarmQueue.head) { + SetTimer(AlarmQueue.head); + } + + OSDisableScheduler(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + handler(alarm, context); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + OSEnableScheduler(); + __OSReschedule(); + OSLoadContext(context); +} + +static asm void DecrementerExceptionHandler(register __OSException exception, register OSContext *context) +{ + /* clang-format off */ + nofralloc + OS_EXCEPTION_SAVE_GPRS(context) + stwu r1, -8(r1) + b DecrementerExceptionCallback + /* clang-format on */ +} diff --git a/src/dolphin/os/OSAlloc.c b/src/dolphin/os/OSAlloc.c new file mode 100644 index 00000000..32515afd --- /dev/null +++ b/src/dolphin/os/OSAlloc.c @@ -0,0 +1,533 @@ +#include +#include +#include + +#define ALIGNMENT 32 + +#define InRange(cell, arenaStart, arenaEnd) ((u32)arenaStart <= (u32)cell) && ((u32)cell < (u32)arenaEnd) + +#define HEADERSIZE 32u +#define MINOBJSIZE 64u + +struct Cell { + struct Cell *prev; + struct Cell *next; + long size; +}; + +struct HeapDesc { + long size; + struct Cell *free; + struct Cell *allocated; +}; + +volatile int __OSCurrHeap = -1; + +static struct HeapDesc *HeapArray; +static int NumHeaps; +static void *ArenaStart; +static void *ArenaEnd; + +// functions +static struct Cell *DLAddFront(struct Cell *list, struct Cell *cell); +static struct Cell *DLLookup(struct Cell *list, struct Cell *cell); +static struct Cell *DLExtract(struct Cell *list, struct Cell *cell); +static struct Cell *DLInsert(struct Cell *list, struct Cell *cell); +static int DLOverlap(struct Cell *list, void *start, void *end); +static long DLSize(struct Cell *list); + +static struct Cell *DLAddFront(struct Cell *list, struct Cell *cell) +{ + cell->next = list; + cell->prev = 0; + if (list) { + list->prev = cell; + } + return cell; +} + +static struct Cell *DLLookup(struct Cell *list, struct Cell *cell) +{ + for (; list; list = list->next) { + if (list == cell) { + return list; + } + } + return NULL; +} + +static struct Cell *DLExtract(struct Cell *list, struct Cell *cell) +{ + if (cell->next) { + cell->next->prev = cell->prev; + } + if (cell->prev == NULL) { + return cell->next; + } + cell->prev->next = cell->next; + return list; +} + +static struct Cell *DLInsert(struct Cell *list, struct Cell *cell) +{ + struct Cell *prev; + struct Cell *next; + + for (next = list, prev = NULL; next != 0; prev = next, next = next->next) { + if (cell <= next) { + break; + } + } + + cell->next = next; + cell->prev = prev; + if (next) { + next->prev = cell; + if ((u8 *)cell + cell->size == (u8 *)next) { + cell->size += next->size; + next = next->next; + cell->next = next; + if (next) { + next->prev = cell; + } + } + } + if (prev) { + prev->next = cell; + if ((u8 *)prev + prev->size == (u8 *)cell) { + prev->size += cell->size; + prev->next = next; + if (next) { + next->prev = prev; + } + } + return list; + } + return cell; +} + +static int DLOverlap(struct Cell *list, void *start, void *end) +{ + struct Cell *cell = list; + + while (cell) { + if (((start <= cell) && (cell < end)) || ((start < (void *)((u8 *)cell + cell->size)) && ((void *)((u8 *)cell + cell->size) <= end))) { + return 1; + } + cell = cell->next; + } + return 0; +} + +static long DLSize(struct Cell *list) +{ + struct Cell *cell; + long size; + + size = 0; + cell = list; + + while (cell) { + size += cell->size; + cell = cell->next; + } + + return size; +} + +void *OSAllocFromHeap(int heap, unsigned long size) +{ + struct HeapDesc *hd; + struct Cell *cell; + struct Cell *newCell; + long leftoverSize; + long requested; + + requested = size; + ASSERTMSG1(0x14D, HeapArray, "OSAllocFromHeap(): heap is not initialized."); + ASSERTMSG1(0x14E, (signed long)size > 0, "OSAllocFromHeap(): invalid size."); + ASSERTMSG1(0x14F, heap >= 0 && heap < NumHeaps, "OSAllocFromHeap(): invalid heap handle."); + ASSERTMSG1(0x150, HeapArray[heap].size >= 0, "OSAllocFromHeap(): invalid heap handle."); + + hd = &HeapArray[heap]; + size += 0x20; + size = (size + 0x1F) & 0xFFFFFFE0; + + for (cell = hd->free; cell != NULL; cell = cell->next) { + if ((signed)size <= (signed)cell->size) { + break; + } + } + + if (cell == NULL) { + 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) { + hd->free = DLExtract(hd->free, cell); + } + else { + cell->size = size; + newCell = (void *)((u8 *)cell + size); + newCell->size = leftoverSize; + newCell->prev = cell->prev; + newCell->next = cell->next; + if (newCell->next != NULL) { + newCell->next->prev = newCell; + } + if (newCell->prev != NULL) { + newCell->prev->next = newCell; + } + else { + ASSERTMSG1(0x186, hd->free == cell, "OSAllocFromHeap(): heap is broken."); + hd->free = newCell; + } + } + + hd->allocated = DLAddFront(hd->allocated, cell); + return (u8 *)cell + 0x20; +} + +void *OSAllocFixed(void **rstart, void **rend) +{ + int i; + struct Cell *cell; + struct Cell *newCell; + struct HeapDesc *hd; + void *start; + void *end; + void *cellEnd; + + start = (void *)((*(u32 *)rstart) & ~((32) - 1)); + end = (void *)((*(u32 *)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."); + + for (i = 0; i < NumHeaps; i++) { + hd = &HeapArray[i]; + if (hd->size >= 0) { + if (DLOverlap(hd->allocated, start, end)) { + return NULL; + } + } + } + + for (i = 0; i < NumHeaps; i++) { + hd = &HeapArray[i]; + if (hd->size >= 0) { + for (cell = hd->free; cell; cell = cell->next) { + cellEnd = ((u8 *)cell + cell->size); + if (cellEnd > start) { + if (end <= cell) { + break; + } + if ((char *)start - 0x20 <= (char *)cell && cell < end && (start <= cellEnd) && (cellEnd < ((char *)end + 0x40))) { + if (cell < start) { + start = cell; + } + if (end < cellEnd) { + end = cellEnd; + } + hd->free = DLExtract(hd->free, cell); + hd->size -= cell->size; + } + else if ((char *)start - 0x20 <= (char *)cell && cell < end) { + if (cell < start) { + start = cell; + } + ASSERTMSG(0x1F3, MINOBJSIZE <= (char *)cellEnd - (char *)end); + newCell = (struct Cell *)end; + + newCell->size = (s32)((char *)cellEnd - (char *)end); + newCell->next = cell->next; + if (newCell->next) { + newCell->next->prev = newCell; + } + newCell->prev = cell->prev; + if (newCell->prev) { + newCell->prev->next = newCell; + } + else { + hd->free = newCell; + } + hd->size -= ((char *)end - (char *)cell); + break; + } + else { + if ((start <= cellEnd) && (cellEnd < ((char *)end + 0x40U))) { + if (end < cellEnd) { + end = cellEnd; + } + ASSERTMSG(0x20C, MINOBJSIZE <= (char *)start - (char *)cell); + hd->size -= ((char *)cellEnd - (char *)start); + cell->size = ((char *)start - (char *)cell); + } + else { + ASSERTMSG(0x213, MINOBJSIZE <= (char *)cellEnd - (char *)end); + newCell = (struct Cell *)end; + newCell->size = ((char *)cellEnd - (char *)end); + newCell->next = cell->next; + if (newCell->next) { + newCell->next->prev = newCell; + } + newCell->prev = cell; + cell->next = newCell; + cell->size = ((char *)start - (char *)cell); + hd->size -= ((char *)end - (char *)start); + break; + } + } + } + } + ASSERTMSG(0x222, 0 <= hd->size); + } + } + 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; +} + +void OSFreeToHeap(int heap, void *ptr) +{ + struct HeapDesc *hd; + struct Cell *cell; + + ASSERTMSG1(0x23D, HeapArray, "OSFreeToHeap(): heap is not initialized."); + ASSERTMSG1(0x23F, ((u32)ArenaStart + 0x20) <= (u32)ptr && (u32)ptr < (u32)ArenaEnd, "OSFreeToHeap(): invalid pointer."); + ASSERTMSG1(0x240, OFFSET(ptr, ALIGNMENT) == 0, "OSFreeToHeap(): invalid pointer."); + 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); +} + +int OSSetCurrentHeap(int heap) +{ + int prev; + + ASSERTMSG1(0x267, HeapArray, "OSSetCurrentHeap(): heap is not initialized."); + ASSERTMSG1(0x268, (heap >= 0) && (heap < NumHeaps), "OSSetCurrentHeap(): invalid heap handle."); + ASSERTMSG1(0x269, HeapArray[heap].size >= 0, "OSSetCurrentHeap(): invalid heap handle."); + prev = __OSCurrHeap; + __OSCurrHeap = heap; + return prev; +} + +void *OSInitAlloc(void *arenaStart, void *arenaEnd, int maxHeaps) +{ + unsigned long arraySize; + int i; + 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."); + arraySize = maxHeaps * sizeof(struct HeapDesc); + HeapArray = arenaStart; + NumHeaps = maxHeaps; + + for (i = 0; i < NumHeaps; i++) { + hd = &HeapArray[i]; + hd->size = -1; + hd->free = hd->allocated = 0; + } + __OSCurrHeap = -1; + arenaStart = (void *)((u32)((char *)HeapArray + arraySize)); + arenaStart = (void *)(((u32)arenaStart + 0x1F) & 0xFFFFFFE0); + ArenaStart = arenaStart; + ArenaEnd = (void *)((u32)arenaEnd & 0xFFFFFFE0); + ASSERTMSG1(0x2A4, ((u32)ArenaEnd - (u32)ArenaStart) >= 0x40U, "OSInitAlloc(): too small range."); + return arenaStart; +} + +int OSCreateHeap(void *start, void *end) +{ + int heap; + struct HeapDesc *hd; + struct Cell *cell; + + ASSERTMSG1(0x2BD, HeapArray, "OSCreateHeap(): heap is not initialized."); + ASSERTMSG1(0x2BE, (u32)start < (u32)end, "OSCreateHeap(): invalid range."); + + start = (void *)(((u32)start + 0x1FU) & ~((32) - 1)); + end = (void *)(((u32)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."); + + for (heap = 0; heap < NumHeaps; heap++) { + hd = &HeapArray[heap]; + if (hd->size < 0) { + hd->size = (u32)end - (u32)start; + cell = start; + cell->prev = 0; + cell->next = 0; + cell->size = hd->size; + hd->free = cell; + hd->allocated = 0; + return heap; + } + } + return -1; +} + +void OSDestroyHeap(int heap) +{ + struct HeapDesc *hd; + long size; + + ASSERTMSG1(0x30A, HeapArray, "OSDestroyHeap(): heap is not initialized."); + ASSERTMSG1(0x30B, (heap >= 0) && (heap < NumHeaps), "OSDestroyHeap(): invalid heap handle."); + ASSERTMSG1(0x30C, HeapArray[heap].size >= 0, "OSDestroyHeap(): invalid heap handle."); + + hd = &HeapArray[heap]; + hd->size = -1; +} + +void OSAddToHeap(int heap, void *start, void *end) +{ + struct HeapDesc *hd; + struct Cell *cell; + int i; + + ASSERTMSG1(0x339, HeapArray, "OSAddToHeap(): heap is not initialized."); + ASSERTMSG1(0x33A, (heap >= 0) && (heap < NumHeaps), "OSAddToHeap(): invalid heap handle."); + ASSERTMSG1(0x33B, HeapArray[heap].size >= 0, "OSAddToHeap(): invalid heap handle."); + + hd = &HeapArray[heap]; + + ASSERTMSG1(0x33F, (u32)start < (u32)end, "OSAddToHeap(): invalid range."); + + start = (void *)(((u32)start + 0x1F) & ~((32) - 1)); + end = (void *)(((u32)end) & ~((32) - 1)); + + ASSERTMSG1(0x343, ((u32)end - (u32)start) >= 0x40U, "OSAddToHeap(): too small range."); + ASSERTMSG1(0x345, (u32)ArenaStart <= (u32)start && (u32)end <= (u32)ArenaEnd, "OSAddToHeap(): invalid range."); + + cell = (struct Cell *)start; + cell->size = ((char *)end - (char *)start); + hd->size += cell->size; + hd->free = DLInsert(hd->free, cell); +} + +// custom macro for OSCheckHeap +#define ASSERTREPORT(line, cond) \ + if (!(cond)) { \ + OSReport("OSCheckHeap: Failed " #cond " in %d", line); \ + return -1; \ + } + +long OSCheckHeap(int heap) +{ + struct HeapDesc *hd; + struct Cell *cell; + long total = 0; + long free = 0; + + ASSERTREPORT(0x37D, HeapArray); + ASSERTREPORT(0x37E, 0 <= heap && heap < NumHeaps); + hd = &HeapArray[heap]; + ASSERTREPORT(0x381, 0 <= hd->size); + + ASSERTREPORT(0x383, hd->allocated == NULL || hd->allocated->prev == NULL); + + for (cell = hd->allocated; cell; cell = cell->next) { + ASSERTREPORT(0x386, InRange(cell, ArenaStart, ArenaEnd)); + ASSERTREPORT(0x387, OFFSET(cell, ALIGNMENT) == 0); + ASSERTREPORT(0x388, cell->next == NULL || cell->next->prev == cell); + ASSERTREPORT(0x389, MINOBJSIZE <= cell->size); + ASSERTREPORT(0x38A, OFFSET(cell->size, ALIGNMENT) == 0); + total += cell->size; + ASSERTREPORT(0x38D, 0 < total && total <= hd->size); + } + + ASSERTREPORT(0x395, hd->free == NULL || hd->free->prev == NULL); + + for (cell = hd->free; cell; cell = cell->next) { + ASSERTREPORT(0x398, InRange(cell, ArenaStart, ArenaEnd)); + ASSERTREPORT(0x399, OFFSET(cell, ALIGNMENT) == 0); + ASSERTREPORT(0x39A, cell->next == NULL || cell->next->prev == cell); + ASSERTREPORT(0x39B, MINOBJSIZE <= cell->size); + ASSERTREPORT(0x39C, OFFSET(cell->size, ALIGNMENT) == 0); + /* clang-format off*/ + ASSERTREPORT(0x39D, cell->next == NULL || (char*) cell + cell->size < (char*) cell->next); + /* clang-format on*/ + total += cell->size; + free = (cell->size + free); + free -= HEADERSIZE; + ASSERTREPORT(0x3A1, 0 < total && total <= hd->size); + } + ASSERTREPORT(0x3A8, total == hd->size); + return free; +} + +unsigned long OSReferentSize(void *ptr) +{ + struct Cell *cell; + + ASSERTMSG1(0x3BB, HeapArray, "OSReferentSize(): heap is not initialized."); + 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); +} + +void OSDumpHeap(int heap) +{ + struct HeapDesc *hd; + struct Cell *cell; + + OSReport("\nOSDumpHeap(%d):\n", heap); + ASSERTMSG1(0x3DE, HeapArray, "OSDumpHeap(): heap is not initialized."); + ASSERTMSG1(0x3DF, (heap >= 0) && (heap < NumHeaps), "OSDumpHeap(): invalid heap handle."); + hd = &HeapArray[heap]; + if (hd->size < 0) { + OSReport("--------Inactive\n"); + return; + } + ASSERTMSG1(0x3E8, OSCheckHeap(heap) >= 0, "OSDumpHeap(): heap is broken."); + OSReport("addr size end prev next\n"); + OSReport("--------Allocated\n"); + + ASSERTMSG1(0x3F5, hd->allocated == NULL || hd->allocated->prev == NULL, "OSDumpHeap(): heap is broken."); + + for (cell = hd->allocated; cell; cell = cell->next) { + OSReport("%x %d %x %x %x\n", cell, cell->size, (char *)cell + cell->size, cell->prev, cell->next); + } + OSReport("--------Free\n"); + for (cell = hd->free; cell; cell = cell->next) { + OSReport("%x %d %x %x %x\n", cell, cell->size, (char *)cell + cell->size, cell->prev, cell->next); + } +} + +void OSVisitAllocated(void (*visitor)(void *, unsigned long)) +{ + unsigned long heap; + struct Cell *cell; + + for (heap = 0; heap < NumHeaps; heap++) { + if (HeapArray[heap].size >= 0) { + for (cell = HeapArray[heap].allocated; cell; cell = cell->next) { + visitor((char *)cell + HEADERSIZE, cell->size); + } + } + } +} diff --git a/src/dolphin/os/OSArena.c b/src/dolphin/os/OSArena.c new file mode 100644 index 00000000..563b01a8 --- /dev/null +++ b/src/dolphin/os/OSArena.c @@ -0,0 +1,53 @@ +#include + +#define ROUND(n, a) (((u32)(n) + (a)-1) & ~((a)-1)) +#define TRUNC(n, a) (((u32)(n)) & ~((a)-1)) + +void *__OSArenaHi; +void *__OSArenaLo = (void *)-1; + +void *OSGetArenaHi(void) +{ + return __OSArenaHi; +} + +void *OSGetArenaLo(void) +{ + return __OSArenaLo; +} + +void OSSetArenaHi(void *addr) +{ + __OSArenaHi = addr; +} + +void OSSetArenaLo(void *addr) +{ + __OSArenaLo = addr; +} + +void *OSAllocFromArenaLo(u32 size, u32 align) +{ + void *ptr; + u8 *arenaLo; + + ptr = OSGetArenaLo(); + arenaLo = ptr = (void *)ROUND(ptr, align); + arenaLo += size; + arenaLo = (u8 *)ROUND(arenaLo, align); + OSSetArenaLo(arenaLo); + return ptr; +} + +void *OSAllocFromArenaHi(u32 size, u32 align) +{ + void *ptr; + u8 *arenaHi; + + arenaHi = OSGetArenaHi(); + arenaHi = (u8 *)TRUNC(arenaHi, align); + arenaHi -= size; + arenaHi = ptr = (void *)TRUNC(arenaHi, align); + OSSetArenaHi(arenaHi); + return ptr; +} diff --git a/src/dolphin/os/OSAudioSystem.c b/src/dolphin/os/OSAudioSystem.c new file mode 100644 index 00000000..f622deaf --- /dev/null +++ b/src/dolphin/os/OSAudioSystem.c @@ -0,0 +1,118 @@ +#include "types.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +static u8 DSPInitCode[128] = { + // clang-format off + 0x02, 0x9F, 0x00, 0x10, 0x02, 0x9F, 0x00, 0x33, 0x02, 0x9F, 0x00, 0x34, 0x02, 0x9F, 0x00, 0x35, + 0x02, 0x9F, 0x00, 0x36, 0x02, 0x9F, 0x00, 0x37, 0x02, 0x9F, 0x00, 0x38, 0x02, 0x9F, 0x00, 0x39, + 0x12, 0x06, 0x12, 0x03, 0x12, 0x04, 0x12, 0x05, 0x00, 0x80, 0x80, 0x00, 0x00, 0x88, 0xFF, 0xFF, + 0x00, 0x84, 0x10, 0x00, 0x00, 0x64, 0x00, 0x1D, 0x02, 0x18, 0x00, 0x00, 0x81, 0x00, 0x1C, 0x1E, + 0x00, 0x44, 0x1B, 0x1E, 0x00, 0x84, 0x08, 0x00, 0x00, 0x64, 0x00, 0x27, 0x19, 0x1E, 0x00, 0x00, + 0x00, 0xDE, 0xFF, 0xFC, 0x02, 0xA0, 0x80, 0x00, 0x02, 0x9C, 0x00, 0x28, 0x16, 0xFC, 0x00, 0x54, + 0x16, 0xFD, 0x43, 0x48, 0x00, 0x21, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, 0x02, 0xFF, + 0x02, 0xFF, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // clang-format on +}; + +#define __DSPWorkBuffer (void *)0x81000000 + +void __OSInitAudioSystem(void) +{ + u32 r28; + u16 r3; + + u32 padding; + + memcpy((void *)((u8 *)OSGetArenaHi() - 128), __DSPWorkBuffer, 128); + memcpy(__DSPWorkBuffer, (void *)DSPInitCode, 128); + + DCFlushRange(__DSPWorkBuffer, 128); + + __DSPRegs[9] = 0x43; + __DSPRegs[5] = 0x8AC; + __DSPRegs[5] |= 1; + while (__DSPRegs[5] & 1) + ; + __DSPRegs[0] = 0; + while (((__DSPRegs[2] << 16) | __DSPRegs[3]) & 0x80000000) + ; + *(u32 *)&__DSPRegs[16] = 0x1000000; + *(u32 *)&__DSPRegs[18] = 0; + *(u32 *)&__DSPRegs[20] = 0x20; + + r3 = __DSPRegs[5]; + while (!(r3 & 0x20)) + r3 = __DSPRegs[5]; + __DSPRegs[5] = r3; + + r28 = OSGetTick(); + while ((s32)(OSGetTick() - r28) < 0x892) + ; + + *(u32 *)&__DSPRegs[16] = 0x1000000; + *(u32 *)&__DSPRegs[18] = 0; + *(u32 *)&__DSPRegs[20] = 0x20; + + r3 = __DSPRegs[5]; + while (!(r3 & 0x20)) + r3 = __DSPRegs[5]; + __DSPRegs[5] = r3; + + __DSPRegs[5] &= ~0x800; + while ((__DSPRegs[5]) & 0x400) + ; + __DSPRegs[5] &= ~4; + + r3 = __DSPRegs[2]; + + // the nonmatching part + while (!(r3 & 0x8000)) + r3 = __DSPRegs[2]; + + (void)__DSPRegs[3]; + r3 != 42069; + __DSPRegs[5] |= 4; + __DSPRegs[5] = 0x8AC; + __DSPRegs[5] |= 1; + while (__DSPRegs[5] & 1) + ; + memcpy(__DSPWorkBuffer, (void *)((u8 *)OSGetArenaHi() - 128), 128); +} + +void __OSStopAudioSystem(void) +{ + u32 r28; + +#define waitUntil(load, mask) \ + r28 = (load); \ + while (r28 & (mask)) { \ + r28 = (load); \ + } + + __DSPRegs[5] = 0x804; + r28 = __DSPRegs[27]; + __DSPRegs[27] = r28 & ~0x8000; + waitUntil(__DSPRegs[5], 0x400); + waitUntil(__DSPRegs[5], 0x200); + __DSPRegs[5] = 0x8ac; + __DSPRegs[0] = 0; + + while (((__DSPRegs[2] << 16) | __DSPRegs[3]) & 0x80000000) + ; + r28 = OSGetTick(); + while ((s32)(OSGetTick() - r28) < 0x2c) + ; + __DSPRegs[5] |= 1; + waitUntil(__DSPRegs[5], 0x001); + +#undef waitUntil +} + +#ifdef __cplusplus +} +#endif diff --git a/src/dolphin/os/OSCache.c b/src/dolphin/os/OSCache.c new file mode 100644 index 00000000..d1b69735 --- /dev/null +++ b/src/dolphin/os/OSCache.c @@ -0,0 +1,450 @@ +#include "dolphin/PPCArch.h" +#include "dolphin/os.h" + +// Can't use this due to weird condition register issues +// #include "asm_types.h" +#define HID2 920 + +#include "dolphin/db.h" + +/* clang-format off */ +asm void DCEnable() { + nofralloc + sync + mfspr r3, HID0 + ori r3, r3, 0x4000 + mtspr HID0, r3 + blr +} + +asm void DCInvalidateRange(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + dcbi r0, addr + addi addr, addr, 32 + bdnz @1 + blr +} + + +asm void DCFlushRange(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + dcbf r0, addr + addi addr, addr, 32 + bdnz @1 + sc + blr +} + +asm void DCStoreRange(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + dcbst r0, addr + addi addr, addr, 32 + bdnz @1 + sc + + blr +} + +asm void DCFlushRangeNoSync(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + dcbf r0, addr + addi addr, addr, 32 + bdnz @1 + blr +} + +asm void DCStoreRangeNoSync(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + dcbst r0, addr + addi addr, addr, 32 + bdnz @1 + + blr +} + +asm void DCZeroRange(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + dcbz r0, addr + addi addr, addr, 32 + bdnz @1 + + blr +} + + +asm void ICInvalidateRange(register void* addr, register u32 nBytes) { + nofralloc + cmplwi nBytes, 0 + blelr + clrlwi. r5, addr, 27 + beq @2 + addi nBytes, nBytes, 32 +@2 + addi nBytes, nBytes, 31 + srwi nBytes, nBytes, 5 + mtctr nBytes + +@1 + icbi r0, addr + addi addr, addr, 32 + bdnz @1 + sync + isync + + blr +} + + +asm void ICFlashInvalidate() { + nofralloc + mfspr r3, HID0 + ori r3, r3, 0x800 + mtspr HID0, r3 + blr +} + +asm void ICEnable() { + nofralloc + isync + mfspr r3, HID0 + ori r3, r3, 0x8000 + mtspr HID0, r3 + blr +} + +#define LC_LINES 512 +#define CACHE_LINES 1024 + +asm void __LCEnable() { + nofralloc + mfmsr r5 + ori r5, r5, 0x1000 + mtmsr r5 + + lis r3, OS_CACHED_REGION_PREFIX + li r4, CACHE_LINES + mtctr r4 +_touchloop: + dcbt 0,r3 + dcbst 0,r3 + addi r3,r3,32 + bdnz _touchloop + mfspr r4, HID2 + oris r4, r4, 0x100F + mtspr HID2, r4 + + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + lis r3, LC_BASE_PREFIX + ori r3, r3, 0x0002 + mtspr DBAT3L, r3 + ori r3, r3, 0x01fe + mtspr DBAT3U, r3 + isync + lis r3, LC_BASE_PREFIX + li r6, LC_LINES + mtctr r6 + li r6, 0 + +_lockloop: + dcbz_l r6, r3 + addi r3, r3, 32 + bdnz+ _lockloop + + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + + blr +} + +void LCEnable() { + BOOL enabled; + + enabled = OSDisableInterrupts(); + __LCEnable(); + OSRestoreInterrupts(enabled); +} + + +asm void LCDisable() { + nofralloc + lis r3, LC_BASE_PREFIX + li r4, LC_LINES + mtctr r4 +@1 + dcbi r0, r3 + addi r3, r3, 32 + bdnz @1 + mfspr r4, HID2 + rlwinm r4, r4, 0, 4, 2 + mtspr HID2, r4 + blr +} + + +asm void LCLoadBlocks(register void* destTag, register void* srcAddr, register u32 numBlocks) { + nofralloc + rlwinm r6, numBlocks, 30, 27, 31 + rlwinm srcAddr, srcAddr, 0, 4, 31 + or r6, r6, srcAddr + mtspr DMA_U, r6 + rlwinm r6, numBlocks, 2, 28, 29 + or r6, r6, destTag + ori r6, r6, 0x12 + mtspr DMA_L, r6 + blr +} + +asm void LCStoreBlocks(register void* destAddr, register void* srcTag, register u32 numBlocks) { + nofralloc + rlwinm r6, numBlocks, 30, 27, 31 + rlwinm destAddr, destAddr, 0, 4, 31 + or r6, r6, destAddr + mtspr DMA_U, r6 + rlwinm r6, numBlocks, 2, 28, 29 + or r6, r6, srcTag + ori r6, r6, 0x2 + mtspr DMA_L, r6 + blr +} + +/* clang-format on */ + +u32 LCLoadData(register void *destAddr, register void *srcAddr, register u32 nBytes) +{ + u32 numBlocks = (nBytes + 31) / 32; + u32 numTransactions = (numBlocks + 128 - 1) / 128; + + while (numBlocks > 0) { + if (numBlocks < 128) { + LCLoadBlocks(destAddr, srcAddr, numBlocks); + numBlocks = 0; + } + else { + LCLoadBlocks(destAddr, srcAddr, 0); + numBlocks -= 128; + destAddr = (void *)((u32)destAddr + 4096); + srcAddr = (void *)((u32)srcAddr + 4096); + } + } + + return numTransactions; +} +u32 LCStoreData(void *destAddr, void *srcAddr, u32 nBytes) +{ + u32 numBlocks = (nBytes + 31) / 32; + u32 numTransactions = (numBlocks + 128 - 1) / 128; + + while (numBlocks > 0) { + if (numBlocks < 128) { + LCStoreBlocks(destAddr, srcAddr, numBlocks); + numBlocks = 0; + } + else { + LCStoreBlocks(destAddr, srcAddr, 0); + numBlocks -= 128; + destAddr = (void *)((u32)destAddr + 4096); + srcAddr = (void *)((u32)srcAddr + 4096); + } + } + + return numTransactions; +} + +/* clang-format off */ +asm u32 LCQueueLength() { + nofralloc + mfspr r4, HID2 + rlwinm r3, r4, 8, 28, 31 + blr +} + +asm void LCQueueWait(register u32 len) { + nofralloc + addi len, len, 1 +@1 + mfspr r4, HID2 + rlwinm r4, r4, 8, 28, 31 + cmpw cr2, r4, r3 + bge cr2, @1 + blr +} + +/* clang-format on */ +static void L2Disable(void) +{ + __sync(); + PPCMtl2cr(PPCMfl2cr() & ~0x80000000); + __sync(); +} + +void L2GlobalInvalidate(void) +{ + L2Disable(); + PPCMtl2cr(PPCMfl2cr() | 0x00200000); + while (PPCMfl2cr() & 0x00000001u) + ; + PPCMtl2cr(PPCMfl2cr() & ~0x00200000); + while (PPCMfl2cr() & 0x00000001u) { + DBPrintf(">>> L2 INVALIDATE : SHOULD NEVER HAPPEN\n"); + } +} + +static void L2Init(void) +{ + u32 oldMSR; + oldMSR = PPCMfmsr(); + __sync(); + PPCMtmsr(MSR_IR | MSR_DR); + __sync(); + L2Disable(); + L2GlobalInvalidate(); + PPCMtmsr(oldMSR); +} + +void L2Enable(void) +{ + PPCMtl2cr((PPCMfl2cr() | L2CR_L2E) & ~L2CR_L2I); +} + +void DMAErrorHandler(OSError error, OSContext *context, ...) +{ + u32 hid2 = PPCMfhid2(); + + OSReport("Machine check received\n"); + OSReport("HID2 = 0x%x SRR1 = 0x%x\n", hid2, context->srr1); + if (!(hid2 & (HID2_DCHERR | HID2_DNCERR | HID2_DCMERR | HID2_DQOERR)) || !(context->srr1 & SRR1_DMA_BIT)) { + OSReport("Machine check was not DMA/locked cache related\n"); + OSDumpContext(context); + PPCHalt(); + } + + OSReport("DMAErrorHandler(): An error occurred while processing DMA.\n"); + OSReport("The following errors have been detected and cleared :\n"); + + if (hid2 & HID2_DCHERR) { + OSReport("\t- Requested a locked cache tag that was already in the cache\n"); + } + + if (hid2 & HID2_DNCERR) { + OSReport("\t- DMA attempted to access normal cache\n"); + } + + if (hid2 & HID2_DCMERR) { + OSReport("\t- DMA missed in data cache\n"); + } + + if (hid2 & HID2_DQOERR) { + OSReport("\t- DMA queue overflowed\n"); + } + + // write hid2 back to clear the error bits + PPCMthid2(hid2); +} + +void __OSCacheInit() +{ + if (!(PPCMfhid0() & HID0_ICE)) { + ICEnable(); + DBPrintf("L1 i-caches initialized\n"); + } + if (!(PPCMfhid0() & HID0_DCE)) { + DCEnable(); + DBPrintf("L1 d-caches initialized\n"); + } + + if (!(PPCMfl2cr() & L2CR_L2E)) { + L2Init(); + L2Enable(); + DBPrintf("L2 cache initialized\n"); + } + + OSSetErrorHandler(OS_ERROR_MACHINE_CHECK, DMAErrorHandler); + DBPrintf("Locked cache machine check handler installed\n"); +} diff --git a/src/dolphin/os/OSContext.c b/src/dolphin/os/OSContext.c new file mode 100644 index 00000000..81b28648 --- /dev/null +++ b/src/dolphin/os/OSContext.c @@ -0,0 +1,555 @@ +#include +#include +#include + +#define HID2 920 + +volatile OSContext *__OSCurrentContext : (OS_BASE_CACHED | 0x00D4); +volatile OSContext *__OSFPUContext : (OS_BASE_CACHED | 0x00D8); + +static asm void __OSLoadFPUContext(register u32, register OSContext *fpuContext) +{ + // clang-format off + nofralloc + lhz r5, fpuContext->state; + clrlwi. r5, r5, 31 + beq _return + + lfd fp0, OS_CONTEXT_FPSCR(fpuContext) + mtfsf 0xFF, fp0 + mfspr r5, HID2 + rlwinm. r5, r5, 3, 31, 31 + beq _regular_FPRs + + psq_l fp0, OS_CONTEXT_PSF0(fpuContext), 0, 0 + psq_l fp1, OS_CONTEXT_PSF1(fpuContext), 0, 0 + psq_l fp2, OS_CONTEXT_PSF2(fpuContext), 0, 0 + psq_l fp3, OS_CONTEXT_PSF3(fpuContext), 0, 0 + psq_l fp4, OS_CONTEXT_PSF4(fpuContext), 0, 0 + psq_l fp5, OS_CONTEXT_PSF5(fpuContext), 0, 0 + psq_l fp6, OS_CONTEXT_PSF6(fpuContext), 0, 0 + psq_l fp7, OS_CONTEXT_PSF7(fpuContext), 0, 0 + psq_l fp8, OS_CONTEXT_PSF8(fpuContext), 0, 0 + psq_l fp9, OS_CONTEXT_PSF9(fpuContext), 0, 0 + psq_l fp10, OS_CONTEXT_PSF10(fpuContext), 0, 0 + psq_l fp11, OS_CONTEXT_PSF11(fpuContext), 0, 0 + psq_l fp12, OS_CONTEXT_PSF12(fpuContext), 0, 0 + psq_l fp13, OS_CONTEXT_PSF13(fpuContext), 0, 0 + psq_l fp14, OS_CONTEXT_PSF14(fpuContext), 0, 0 + psq_l fp15, OS_CONTEXT_PSF15(fpuContext), 0, 0 + psq_l fp16, OS_CONTEXT_PSF16(fpuContext), 0, 0 + psq_l fp17, OS_CONTEXT_PSF17(fpuContext), 0, 0 + psq_l fp18, OS_CONTEXT_PSF18(fpuContext), 0, 0 + psq_l fp19, OS_CONTEXT_PSF19(fpuContext), 0, 0 + psq_l fp20, OS_CONTEXT_PSF20(fpuContext), 0, 0 + psq_l fp21, OS_CONTEXT_PSF21(fpuContext), 0, 0 + psq_l fp22, OS_CONTEXT_PSF22(fpuContext), 0, 0 + psq_l fp23, OS_CONTEXT_PSF23(fpuContext), 0, 0 + psq_l fp24, OS_CONTEXT_PSF24(fpuContext), 0, 0 + psq_l fp25, OS_CONTEXT_PSF25(fpuContext), 0, 0 + psq_l fp26, OS_CONTEXT_PSF26(fpuContext), 0, 0 + psq_l fp27, OS_CONTEXT_PSF27(fpuContext), 0, 0 + psq_l fp28, OS_CONTEXT_PSF28(fpuContext), 0, 0 + psq_l fp29, OS_CONTEXT_PSF29(fpuContext), 0, 0 + psq_l fp30, OS_CONTEXT_PSF30(fpuContext), 0, 0 + psq_l fp31, OS_CONTEXT_PSF31(fpuContext), 0, 0 + +_regular_FPRs: + lfd fp0, fpuContext->fpr[0] + lfd fp1, fpuContext->fpr[1] + lfd fp2, fpuContext->fpr[2] + lfd fp3, fpuContext->fpr[3] + lfd fp4, fpuContext->fpr[4] + lfd fp5, fpuContext->fpr[5] + lfd fp6, fpuContext->fpr[6] + lfd fp7, fpuContext->fpr[7] + lfd fp8, fpuContext->fpr[8] + lfd fp9, fpuContext->fpr[9] + lfd fp10, fpuContext->fpr[10] + lfd fp11, fpuContext->fpr[11] + lfd fp12, fpuContext->fpr[12] + lfd fp13, fpuContext->fpr[13] + lfd fp14, fpuContext->fpr[14] + lfd fp15, fpuContext->fpr[15] + lfd fp16, fpuContext->fpr[16] + lfd fp17, fpuContext->fpr[17] + lfd fp18, fpuContext->fpr[18] + lfd fp19, fpuContext->fpr[19] + lfd fp20, fpuContext->fpr[20] + lfd fp21, fpuContext->fpr[21] + lfd fp22, fpuContext->fpr[22] + lfd fp23, fpuContext->fpr[23] + lfd fp24, fpuContext->fpr[24] + lfd fp25, fpuContext->fpr[25] + lfd fp26, fpuContext->fpr[26] + lfd fp27, fpuContext->fpr[27] + lfd fp28, fpuContext->fpr[28] + lfd fp29, fpuContext->fpr[29] + lfd fp30, fpuContext->fpr[30] + lfd fp31, fpuContext->fpr[31] +_return: + blr + // clang-format on +} + +static asm void __OSSaveFPUContext(register u32, register u32, register OSContext *fpuContext) +{ + // clang-format off + nofralloc + + lhz r3, fpuContext->state + ori r3, r3, 1 + sth r3, fpuContext->state + + stfd fp0, fpuContext->fpr[0] + stfd fp1, fpuContext->fpr[1] + stfd fp2, fpuContext->fpr[2] + stfd fp3, fpuContext->fpr[3] + stfd fp4, fpuContext->fpr[4] + stfd fp5, fpuContext->fpr[5] + stfd fp6, fpuContext->fpr[6] + stfd fp7, fpuContext->fpr[7] + stfd fp8, fpuContext->fpr[8] + stfd fp9, fpuContext->fpr[9] + stfd fp10, fpuContext->fpr[10] + stfd fp11, fpuContext->fpr[11] + stfd fp12, fpuContext->fpr[12] + stfd fp13, fpuContext->fpr[13] + stfd fp14, fpuContext->fpr[14] + stfd fp15, fpuContext->fpr[15] + stfd fp16, fpuContext->fpr[16] + stfd fp17, fpuContext->fpr[17] + stfd fp18, fpuContext->fpr[18] + stfd fp19, fpuContext->fpr[19] + stfd fp20, fpuContext->fpr[20] + stfd fp21, fpuContext->fpr[21] + stfd fp22, fpuContext->fpr[22] + stfd fp23, fpuContext->fpr[23] + stfd fp24, fpuContext->fpr[24] + stfd fp25, fpuContext->fpr[25] + stfd fp26, fpuContext->fpr[26] + stfd fp27, fpuContext->fpr[27] + stfd fp28, fpuContext->fpr[28] + stfd fp29, fpuContext->fpr[29] + stfd fp30, fpuContext->fpr[30] + stfd fp31, fpuContext->fpr[31] + + mffs fp0 + stfd fp0, OS_CONTEXT_FPSCR(fpuContext) + + lfd fp0, fpuContext->fpr[0] + + mfspr r3, HID2 + rlwinm. r3, r3, 3, 31, 31 + bc 12, 2, _return + + psq_st fp0, OS_CONTEXT_PSF0(fpuContext), 0, 0 + psq_st fp1, OS_CONTEXT_PSF1(fpuContext), 0, 0 + psq_st fp2, OS_CONTEXT_PSF2(fpuContext), 0, 0 + psq_st fp3, OS_CONTEXT_PSF3(fpuContext), 0, 0 + psq_st fp4, OS_CONTEXT_PSF4(fpuContext), 0, 0 + psq_st fp5, OS_CONTEXT_PSF5(fpuContext), 0, 0 + psq_st fp6, OS_CONTEXT_PSF6(fpuContext), 0, 0 + psq_st fp7, OS_CONTEXT_PSF7(fpuContext), 0, 0 + psq_st fp8, OS_CONTEXT_PSF8(fpuContext), 0, 0 + psq_st fp9, OS_CONTEXT_PSF9(fpuContext), 0, 0 + psq_st fp10, OS_CONTEXT_PSF10(fpuContext), 0, 0 + psq_st fp11, OS_CONTEXT_PSF11(fpuContext), 0, 0 + psq_st fp12, OS_CONTEXT_PSF12(fpuContext), 0, 0 + psq_st fp13, OS_CONTEXT_PSF13(fpuContext), 0, 0 + psq_st fp14, OS_CONTEXT_PSF14(fpuContext), 0, 0 + psq_st fp15, OS_CONTEXT_PSF15(fpuContext), 0, 0 + psq_st fp16, OS_CONTEXT_PSF16(fpuContext), 0, 0 + psq_st fp17, OS_CONTEXT_PSF17(fpuContext), 0, 0 + psq_st fp18, OS_CONTEXT_PSF18(fpuContext), 0, 0 + psq_st fp19, OS_CONTEXT_PSF19(fpuContext), 0, 0 + psq_st fp20, OS_CONTEXT_PSF20(fpuContext), 0, 0 + psq_st fp21, OS_CONTEXT_PSF21(fpuContext), 0, 0 + psq_st fp22, OS_CONTEXT_PSF22(fpuContext), 0, 0 + psq_st fp23, OS_CONTEXT_PSF23(fpuContext), 0, 0 + psq_st fp24, OS_CONTEXT_PSF24(fpuContext), 0, 0 + psq_st fp25, OS_CONTEXT_PSF25(fpuContext), 0, 0 + psq_st fp26, OS_CONTEXT_PSF26(fpuContext), 0, 0 + psq_st fp27, OS_CONTEXT_PSF27(fpuContext), 0, 0 + psq_st fp28, OS_CONTEXT_PSF28(fpuContext), 0, 0 + psq_st fp29, OS_CONTEXT_PSF29(fpuContext), 0, 0 + psq_st fp30, OS_CONTEXT_PSF30(fpuContext), 0, 0 + psq_st fp31, OS_CONTEXT_PSF31(fpuContext), 0, 0 + +_return: + blr + // clang-format on +} + +asm void OSLoadFPUContext(register OSContext *fpuContext) +{ + // clang-format off + nofralloc + addi r4, fpuContext, 0 + b __OSLoadFPUContext + // clang-format on +} + +asm void OSSaveFPUContext(register OSContext *fpuContext) +{ + // clang-format off + nofralloc + addi r5, fpuContext, 0 + b __OSSaveFPUContext + // clang-format on +} + +asm void OSSetCurrentContext(register OSContext *context) { + // clang-format off + nofralloc + + addis r4, r0, OS_CACHED_REGION_PREFIX + + stw context, 0x00D4(r4) + + clrlwi r5, context, 2 + stw r5, 0x00C0(r4) + + lwz r5, 0x00D8(r4) + cmpw r5, context + bne _disableFPU + + lwz r6, context->srr1 + ori r6, r6, 0x2000 + stw r6, context->srr1 + mfmsr r6 + ori r6, r6, 2 + mtmsr r6 + blr + +_disableFPU: + lwz r6, context->srr1 + rlwinm r6, r6, 0, 19, 17 + stw r6, context->srr1 + mfmsr r6 + rlwinm r6, r6, 0, 19, 17 + ori r6, r6, 2 + mtmsr r6 + isync + blr + // clang-format on +} + +OSContext *OSGetCurrentContext(void) +{ + return (OSContext *)__OSCurrentContext; +} + +asm u32 OSSaveContext(register OSContext *context) +{ + // clang-format off + nofralloc + stmw r13, context->gpr[13] + mfspr r0, GQR1 + stw r0, context->gqr[1] + mfspr r0, GQR2 + stw r0, context->gqr[2] + mfspr r0, GQR3 + stw r0, context->gqr[3] + mfspr r0, GQR4 + stw r0, context->gqr[4] + mfspr r0, GQR5 + stw r0, context->gqr[5] + mfspr r0, GQR6 + stw r0, context->gqr[6] + mfspr r0, GQR7 + stw r0, context->gqr[7] + mfcr r0 + stw r0, context->cr + mflr r0 + stw r0, context->lr + stw r0, context->srr0 + mfmsr r0 + stw r0, context->srr1 + mfctr r0 + stw r0, context->ctr + mfxer r0 + stw r0, context->xer + stw r1, context->gpr[1] + stw r2, context->gpr[2] + li r0, 0x1 + stw r0, context->gpr[3] + li r3, 0 + blr + // clang-format on +} + +asm void OSLoadContext(register OSContext *context) +{ + // clang-format off + nofralloc + + lis r4, __RAS_OSDisableInterrupts_begin@ha + lwz r6, 0x198(context) + addi r5, r4, __RAS_OSDisableInterrupts_begin@l + cmplw r6, r5 + blt srr0_not_in_disableintr + lis r4, __RAS_OSDisableInterrupts_end@ha + addi r0, r4, __RAS_OSDisableInterrupts_end@l + cmplw r6, r0 + bgt srr0_not_in_disableintr + stw r5, 0x198(context) + +srr0_not_in_disableintr: + lwz r0, 0(context) + lwz r1, 4(context) + lwz r2, 8(context) + lhz r4, 0x1a2(context) + rlwinm. r5, r4, 0, 0x1e, 0x1e + beq load_saved_gprs + rlwinm r4, r4, 0, 0x1f, 0x1d + sth r4, 0x1a2(context) + lmw r5, 0x14(context) + b load_special_regs + +load_saved_gprs: + lmw r13, 0x34(context) + +load_special_regs: + lwz r4, 0x1a8(context) + mtspr 0x391, r4 + lwz r4, 0x1ac(context) + mtspr 0x392, r4 + lwz r4, 0x1b0(context) + mtspr 0x393, r4 + lwz r4, 0x1b4(context) + mtspr 0x394, r4 + lwz r4, 0x1b8(context) + mtspr 0x395, r4 + lwz r4, 0x1bc(context) + mtspr 0x396, r4 + lwz r4, 0x1c0(context) + mtspr 0x397, r4 + lwz r4, 0x80(context) + mtcrf 0xff, r4 + lwz r4, 0x84(context) + mtlr r4 + lwz r4, 0x88(context) + mtctr r4 + lwz r4, 0x8c(context) + mtxer r4 + mfmsr r4 + rlwinm r4, r4, 0, 0x11, 0xf + rlwinm r4, r4, 0, 0x1f, 0x1d + mtmsr r4 + lwz r4, 0x198(context) + mtspr 0x1a, r4 + lwz r4, 0x19c(context) + mtspr 0x1b, r4 + lwz r4, 0x10(context) + lwz context, 0xc(context) + rfi + // clang-format on +} + +asm u32 OSGetStackPointer() +{ + // clang-format off + nofralloc + mr r3, r1 + blr + // clang-format on +} + +asm u32 OSSwitchStack(register u32 newsp) +{ + // clang-format off + nofralloc + mr r5, r1 + mr r1, newsp + mr r3, r5 + blr + // clang-format on +} + +asm int OSSwitchFiber(register u32 pc, register u32 newsp) +{ + // clang-format off + nofralloc + mflr r0 + mr r5, r1 + stwu r5, -8(newsp) + mr r1, newsp + stw r0, 4(r5) + mtlr pc + blrl + lwz r5, 0(r1) + lwz r0, 4(r5) + mtlr r0 + mr r1, r5 + blr + // clang-format on +} + +void OSClearContext(register OSContext *context) +{ + context->mode = 0; + context->state = 0; + if (context == __OSFPUContext) + __OSFPUContext = NULL; +} + +asm void OSInitContext(register OSContext *context, register u32 pc, register u32 newsp) +{ + // clang-format off + nofralloc + + stw pc, OS_CONTEXT_SRR0(context) + stw newsp, OS_CONTEXT_R1(context) + li r11, 0 + ori r11, r11, 0x00008000 | 0x00000020 | 0x00000010 | 0x00000002 | 0x00001000 + stw r11, OS_CONTEXT_SRR1(context) + li r0, 0x0 + stw r0, OS_CONTEXT_CR(context) + stw r0, OS_CONTEXT_XER(context) + + + stw r2, OS_CONTEXT_R2(context) + stw r13, OS_CONTEXT_R13(context) + + stw r0, OS_CONTEXT_R3(context) + stw r0, OS_CONTEXT_R4(context) + stw r0, OS_CONTEXT_R5(context) + stw r0, OS_CONTEXT_R6(context) + stw r0, OS_CONTEXT_R7(context) + stw r0, OS_CONTEXT_R8(context) + stw r0, OS_CONTEXT_R9(context) + stw r0, OS_CONTEXT_R10(context) + stw r0, OS_CONTEXT_R11(context) + stw r0, OS_CONTEXT_R12(context) + + stw r0, OS_CONTEXT_R14(context) + stw r0, OS_CONTEXT_R15(context) + stw r0, OS_CONTEXT_R16(context) + stw r0, OS_CONTEXT_R17(context) + stw r0, OS_CONTEXT_R18(context) + stw r0, OS_CONTEXT_R19(context) + stw r0, OS_CONTEXT_R20(context) + stw r0, OS_CONTEXT_R21(context) + stw r0, OS_CONTEXT_R22(context) + stw r0, OS_CONTEXT_R23(context) + stw r0, OS_CONTEXT_R24(context) + stw r0, OS_CONTEXT_R25(context) + stw r0, OS_CONTEXT_R26(context) + stw r0, OS_CONTEXT_R27(context) + stw r0, OS_CONTEXT_R28(context) + stw r0, OS_CONTEXT_R29(context) + stw r0, OS_CONTEXT_R30(context) + stw r0, OS_CONTEXT_R31(context) + + stw r0, OS_CONTEXT_GQR0(context) + stw r0, OS_CONTEXT_GQR1(context) + stw r0, OS_CONTEXT_GQR2(context) + stw r0, OS_CONTEXT_GQR3(context) + stw r0, OS_CONTEXT_GQR4(context) + stw r0, OS_CONTEXT_GQR5(context) + stw r0, OS_CONTEXT_GQR6(context) + stw r0, OS_CONTEXT_GQR7(context) + + b OSClearContext + // clang-format on +} + +void OSDumpContext(OSContext *context) +{ + u32 i; + u32 *p; + + OSReport("------------------------- Context 0x%08x -------------------------\n", context); + + for (i = 0; i < 16; ++i) { + OSReport("r%-2d = 0x%08x (%14d) r%-2d = 0x%08x (%14d)\n", i, context->gpr[i], context->gpr[i], i + 16, context->gpr[i + 16], + context->gpr[i + 16]); + } + + OSReport("LR = 0x%08x CR = 0x%08x\n", context->lr, context->cr); + OSReport("SRR0 = 0x%08x SRR1 = 0x%08x\n", context->srr0, context->srr1); + + OSReport("\nGQRs----------\n"); + for (i = 0; i < 4; ++i) { + OSReport("gqr%d = 0x%08x \t gqr%d = 0x%08x\n", i, context->gqr[i], i + 4, context->gqr[i + 4]); + } + + if (context->state & OS_CONTEXT_STATE_FPSAVED) { + OSContext *currentContext; + OSContext fpuContext; + BOOL enabled; + + enabled = OSDisableInterrupts(); + currentContext = OSGetCurrentContext(); + OSClearContext(&fpuContext); + OSSetCurrentContext(&fpuContext); + + OSReport("\n\nFPRs----------\n"); + for (i = 0; i < 32; i += 2) { + OSReport("fr%d \t= %d \t fr%d \t= %d\n", i, (u32)context->fpr[i], i + 1, (u32)context->fpr[i + 1]); + } + OSReport("\n\nPSFs----------\n"); + for (i = 0; i < 32; i += 2) { + OSReport("ps%d \t= 0x%x \t ps%d \t= 0x%x\n", i, (u32)context->psf[i], i + 1, (u32)context->psf[i + 1]); + } + + OSClearContext(&fpuContext); + OSSetCurrentContext(currentContext); + OSRestoreInterrupts(enabled); + } + + OSReport("\nAddress: Back Chain LR Save\n"); + for (i = 0, p = (u32 *)context->gpr[1]; p && (u32)p != 0xffffffff && i++ < 16; p = (u32 *)*p) { + OSReport("0x%08x: 0x%08x 0x%08x\n", p, p[0], p[1]); + } +} + +static asm void OSSwitchFPUContext(register __OSException exception, register OSContext *context) +{ + // clang-format off + nofralloc + mfmsr r5 + ori r5, r5, 0x2000 + mtmsr r5 + isync + lwz r5, OS_CONTEXT_SRR1(context) + ori r5, r5, 0x2000 + mtsrr1 r5 + addis r3, r0, OS_CACHED_REGION_PREFIX + lwz r5, 0x00D8(r3) + stw context, 0x00D8(r3) + cmpw r5, r4 + beq _restoreAndExit + cmpwi r5, 0x0 + beq _loadNewFPUContext + bl __OSSaveFPUContext +_loadNewFPUContext: + bl __OSLoadFPUContext +_restoreAndExit: + lwz r3, OS_CONTEXT_CR(context) + mtcr r3 + lwz r3, OS_CONTEXT_LR(context) + mtlr r3 + lwz r3, OS_CONTEXT_SRR0(context) + mtsrr0 r3 + lwz r3, OS_CONTEXT_CTR(context) + mtctr r3 + lwz r3, OS_CONTEXT_XER(context) + mtxer r3 + lhz r3, context->state + rlwinm r3, r3, 0, 31, 29 + sth r3, context->state + lwz r5, OS_CONTEXT_R5(context) + lwz r3, OS_CONTEXT_R3(context) + lwz r4, OS_CONTEXT_R4(context) + rfi + // clang-format on +} + +void __OSContextInit(void) +{ + __OSSetExceptionHandler(__OS_EXCEPTION_FLOATING_POINT, OSSwitchFPUContext); + __OSFPUContext = NULL; + DBPrintf("FPU-unavailable handler installed\n"); +} diff --git a/src/dolphin/os/OSError.c b/src/dolphin/os/OSError.c new file mode 100644 index 00000000..2965756f --- /dev/null +++ b/src/dolphin/os/OSError.c @@ -0,0 +1,115 @@ +#include +#include +#include +#include + +#include + +OSThread *__OSCurrentThread : (OS_BASE_CACHED | 0x00E4); +OSThreadQueue __OSActiveThreadQueue : (OS_BASE_CACHED | 0x00DC); +volatile OSContext *__OSFPUContext : (OS_BASE_CACHED | 0x00D8); + +OSErrorHandler __OSErrorTable[OS_ERROR_MAX]; +#define FPSCR_ENABLE (FPSCR_VE | FPSCR_OE | FPSCR_UE | FPSCR_ZE | FPSCR_XE) + +__declspec(weak) void OSReport(const char *msg, ...) +{ + va_list args; + va_start(args, msg); + vprintf(msg, args); + va_end(args); +} + +__declspec(weak) void OSVReport(const char *msg, va_list list) +{ + vprintf(msg, list); +} + +__declspec(weak) void OSPanic(const char *file, int line, const char *msg, ...) +{ + va_list marker; + u32 i; + u32 *p; + + OSDisableInterrupts(); + va_start(marker, msg); + vprintf(msg, marker); + va_end(marker); + OSReport(" in \"%s\" on line %d.\n", file, line); + + OSReport("\nAddress: Back Chain LR Save\n"); + for (i = 0, p = (u32 *)OSGetStackPointer(); p && (u32)p != 0xffffffff && i++ < 16; p = (u32 *)*p) { + OSReport("0x%08x: 0x%08x 0x%08x\n", p, p[0], p[1]); + } + + PPCHalt(); +} + +OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) +{ + OSErrorHandler oldHandler; + + oldHandler = __OSErrorTable[error]; + __OSErrorTable[error] = handler; + return oldHandler; +} + +void __OSUnhandledException(__OSException exception, OSContext *context, u32 dsisr, u32 dar) +{ + if (!(context->srr1 & MSR_RI)) { + OSReport("Non-recoverable Exception %d", exception); + } + else { + if (__OSErrorTable[exception]) { + OSDisableScheduler(); + __OSErrorTable[exception](exception, context, dsisr, dar); + OSEnableScheduler(); + __OSReschedule(); + OSLoadContext(context); + } + + if (exception == OS_ERROR_DECREMENTER) { + OSLoadContext(context); + } + + OSReport("Unhandled Exception %d", exception); + } + + OSReport("\n"); + OSDumpContext(context); + OSReport("\nDSISR = 0x%08x DAR = 0x%08x\n", dsisr, dar); + OSReport("TB = 0x%016llx\n", OSGetTime()); + + switch (exception) { + case __OS_EXCEPTION_DSI: + OSReport("\nInstruction at 0x%x (read from SRR0) attempted to access " + "invalid address 0x%x (read from DAR)\n", + context->srr0, dar); + break; + case __OS_EXCEPTION_ISI: + OSReport("\nAttempted to fetch instruction from invalid address 0x%x " + "(read from SRR0)\n", + context->srr0); + break; + case __OS_EXCEPTION_ALIGNMENT: + OSReport("\nInstruction at 0x%x (read from SRR0) attempted to access " + "unaligned address 0x%x (read from DAR)\n", + context->srr0, dar); + break; + case __OS_EXCEPTION_PROGRAM: + OSReport("\nProgram exception : Possible illegal instruction/operation " + "at or around 0x%x (read from SRR0)\n", + context->srr0, dar); + break; + case OS_ERROR_PROTECTION: + OSReport("\n"); + OSReport("AI DMA Address = 0x%04x%04x\n", __DSPRegs[0x00000018], __DSPRegs[0x00000018 + 1]); + OSReport("ARAM DMA Address = 0x%04x%04x\n", __DSPRegs[0x00000010], __DSPRegs[0x00000010 + 1]); + OSReport("DI DMA Address = 0x%08x\n", __DIRegs[0x00000005]); + break; + } + + OSReport("\nLast interrupt (%d): SRR0 = 0x%08x TB = 0x%016llx\n", __OSLastInterrupt, __OSLastInterruptSrr0, __OSLastInterruptTime); + + PPCHalt(); +} diff --git a/src/dolphin/os/OSFont.c b/src/dolphin/os/OSFont.c new file mode 100644 index 00000000..a87ba76e --- /dev/null +++ b/src/dolphin/os/OSFont.c @@ -0,0 +1,323 @@ +#include +#include +#include + +static OSFontHeader *FontData; +static u8 *SheetImage; +static u8 *WidthTable; +static int CharsInSheet; + +static u16 HankakuToCode[] = { 0x20C, 0x20D, 0x20E, 0x20F, 0x210, 0x211, 0x212, 0x213, 0x214, 0x215, 0x216, 0x217, 0x218, 0x219, 0x21A, 0x21B, 0x21C, + 0x21D, 0x21E, 0x21F, 0x220, 0x221, 0x222, 0x223, 0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22A, 0x22B, 0x22C, 0x22D, 0x22E, 0x22F, 0x230, 0x231, + 0x232, 0x233, 0x234, 0x235, 0x236, 0x237, 0x238, 0x239, 0x23A, 0x23B, 0x23C, 0x23D, 0x23E, 0x23F, 0x240, 0x241, 0x242, 0x243, 0x244, 0x245, 0x246, + 0x247, 0x248, 0x249, 0x24A, 0x24B, 0x24C, 0x24D, 0x24E, 0x24F, 0x250, 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257, 0x258, 0x259, 0x25A, 0x25B, + 0x25C, 0x25D, 0x25E, 0x25F, 0x260, 0x261, 0x262, 0x263, 0x264, 0x265, 0x266, 0x267, 0x268, 0x269, 0x26A, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, + 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, + 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x26B, 0x26C, 0x26D, 0x26E, 0x26F, 0x270, 0x271, 0x272, 0x273, 0x274, 0x275, 0x276, 0x277, 0x278, + 0x279, 0x27A, 0x27B, 0x27C, 0x27D, 0x27E, 0x27F, 0x280, 0x281, 0x282, 0x283, 0x284, 0x285, 0x286, 0x287, 0x288, 0x289, 0x28A, 0x28B, 0x28C, 0x28D, + 0x28E, 0x28F, 0x290, 0x291, 0x292, 0x293, 0x294, 0x295, 0x296, 0x297, 0x298, 0x299, 0x29A, 0x29B, 0x29C, 0x29D, 0x29E, 0x29F, 0x2A0, 0x2A1, 0x2A2, + 0x2A3, 0x2A4, 0x2A5, 0x2A6, 0x2A7, 0x2A8, 0x2A9 }; + +static u16 Zenkaku2Code[] = { 0x000, 0x001, 0x002, 0x003, 0x004, 0x005, 0x006, 0x007, 0x008, 0x009, 0x00A, 0x00B, 0x00C, 0x00D, 0x00E, 0x00F, 0x010, + 0x011, 0x012, 0x013, 0x014, 0x015, 0x016, 0x017, 0x018, 0x019, 0x01A, 0x01B, 0x01C, 0x01D, 0x01E, 0x01F, 0x020, 0x021, 0x022, 0x023, 0x024, 0x025, + 0x026, 0x027, 0x028, 0x029, 0x02A, 0x02B, 0x02C, 0x02D, 0x02E, 0x02F, 0x030, 0x031, 0x032, 0x033, 0x034, 0x035, 0x036, 0x037, 0x038, 0x039, 0x03A, + 0x03B, 0x03C, 0x03D, 0x03E, 0x03F, 0x040, 0x041, 0x042, 0x043, 0x044, 0x045, 0x046, 0x047, 0x048, 0x049, 0x04A, 0x04B, 0x04C, 0x04D, 0x04E, 0x04F, + 0x050, 0x051, 0x052, 0x053, 0x054, 0x055, 0x056, 0x057, 0x058, 0x059, 0x05A, 0x05B, 0x05C, 0x05D, 0x05E, 0x05F, 0x060, 0x061, 0x062, 0x063, 0x064, + 0x065, 0x066, 0x067, 0x068, 0x069, 0x06A, 0x06B, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x06C, 0x06D, 0x06E, + 0x06F, 0x070, 0x071, 0x072, 0x073, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x074, 0x075, 0x076, 0x077, 0x078, 0x079, 0x07A, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x07B, 0x07C, 0x07D, 0x07E, 0x07F, 0x080, 0x081, 0x082, 0x083, 0x084, 0x085, + 0x086, 0x087, 0x088, 0x089, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x08A, 0x08B, 0x08C, 0x08D, 0x08E, 0x08F, 0x090, 0x091, 0x000, 0x000, + 0x000, 0x000, 0x092, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x093, 0x094, 0x095, + 0x096, 0x097, 0x098, 0x099, 0x09A, 0x09B, 0x09C, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x09D, 0x09E, 0x09F, 0x0A0, 0x0A1, 0x0A2, 0x0A3, + 0x0A4, 0x0A5, 0x0A6, 0x0A7, 0x0A8, 0x0A9, 0x0AA, 0x0AB, 0x0AC, 0x0AD, 0x0AE, 0x0AF, 0x0B0, 0x0B1, 0x0B2, 0x0B3, 0x0B4, 0x0B5, 0x0B6, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x0B7, 0x0B8, 0x0B9, 0x0BA, 0x0BB, 0x0BC, 0x0BD, 0x0BE, 0x0BF, 0x0C0, 0x0C1, 0x0C2, 0x0C3, 0x0C4, 0x0C5, 0x0C6, 0x0C7, + 0x0C8, 0x0C9, 0x0CA, 0x0CB, 0x0CC, 0x0CD, 0x0CE, 0x0CF, 0x0D0, 0x000, 0x000, 0x000, 0x000, 0x0D1, 0x0D2, 0x0D3, 0x0D4, 0x0D5, 0x0D6, 0x0D7, 0x0D8, + 0x0D9, 0x0DA, 0x0DB, 0x0DC, 0x0DD, 0x0DE, 0x0DF, 0x0E0, 0x0E1, 0x0E2, 0x0E3, 0x0E4, 0x0E5, 0x0E6, 0x0E7, 0x0E8, 0x0E9, 0x0EA, 0x0EB, 0x0EC, 0x0ED, + 0x0EE, 0x0EF, 0x0F0, 0x0F1, 0x0F2, 0x0F3, 0x0F4, 0x0F5, 0x0F6, 0x0F7, 0x0F8, 0x0F9, 0x0FA, 0x0FB, 0x0FC, 0x0FD, 0x0FE, 0x0FF, 0x100, 0x101, 0x102, + 0x103, 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B, 0x10C, 0x10D, 0x10E, 0x10F, 0x110, 0x111, 0x112, 0x113, 0x114, 0x115, 0x116, 0x117, + 0x118, 0x119, 0x11A, 0x11B, 0x11C, 0x11D, 0x11E, 0x11F, 0x120, 0x121, 0x122, 0x123, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x124, 0x125, 0x126, 0x127, 0x128, 0x129, 0x12A, 0x12B, 0x12C, 0x12D, 0x12E, 0x12F, 0x130, 0x131, 0x132, 0x133, 0x134, 0x135, 0x136, + 0x137, 0x138, 0x139, 0x13A, 0x13B, 0x13C, 0x13D, 0x13E, 0x13F, 0x140, 0x141, 0x142, 0x143, 0x144, 0x145, 0x146, 0x147, 0x148, 0x149, 0x14A, 0x14B, + 0x14C, 0x14D, 0x14E, 0x14F, 0x150, 0x151, 0x152, 0x153, 0x154, 0x155, 0x156, 0x157, 0x158, 0x159, 0x15A, 0x15B, 0x15C, 0x15D, 0x15E, 0x15F, 0x160, + 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167, 0x168, 0x169, 0x16A, 0x16B, 0x16C, 0x16D, 0x16E, 0x16F, 0x170, 0x171, 0x172, 0x173, 0x174, 0x175, + 0x176, 0x177, 0x178, 0x179, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x17A, 0x17B, 0x17C, 0x17D, 0x17E, 0x17F, 0x180, 0x181, 0x182, + 0x183, 0x184, 0x185, 0x186, 0x187, 0x188, 0x189, 0x18A, 0x18B, 0x18C, 0x18D, 0x18E, 0x18F, 0x190, 0x191, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x192, 0x193, 0x194, 0x195, 0x196, 0x197, 0x198, 0x199, 0x19A, 0x19B, 0x19C, 0x19D, 0x19E, 0x19F, 0x1A0, 0x1A1, 0x1A2, 0x1A3, 0x1A4, + 0x1A5, 0x1A6, 0x1A7, 0x1A8, 0x1A9, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x1AA, 0x1AB, 0x1AC, 0x1AD, 0x1AE, 0x1AF, 0x1B0, 0x1B1, 0x1B2, 0x1B3, 0x1B4, 0x1B5, 0x1B6, 0x1B7, 0x1B8, 0x1B9, 0x1BA, 0x1BB, 0x1BC, 0x1BD, + 0x1BE, 0x1BF, 0x1C0, 0x1C1, 0x1C2, 0x1C3, 0x1C4, 0x1C5, 0x1C6, 0x1C7, 0x1C8, 0x1C9, 0x1CA, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x1CB, 0x1CC, 0x1CD, 0x1CE, 0x1CF, 0x1D0, 0x1D1, 0x1D2, 0x1D3, 0x1D4, 0x1D5, 0x1D6, 0x1D7, 0x1D8, + 0x1D9, 0x1DA, 0x1DB, 0x1DC, 0x1DD, 0x1DE, 0x1DF, 0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4, 0x1E5, 0x1E6, 0x1E7, 0x1E8, 0x1E9, 0x1EA, 0x1EB, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x1EC, 0x1ED, 0x1EE, 0x1EF, 0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4, 0x1F5, + 0x1F6, 0x1F7, 0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC, 0x1FD, 0x1FE, 0x1FF, 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x207, 0x208, 0x209, 0x20A, + 0x20B, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x20C, + 0x20D, 0x20E, 0x20F, 0x210, 0x211, 0x212, 0x213, 0x214, 0x215, 0x216, 0x217, 0x218, 0x219, 0x21A, 0x21B, 0x21C, 0x21D, 0x21E, 0x21F, 0x220, 0x221, + 0x222, 0x223, 0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22A, 0x22B, 0x22C, 0x22D, 0x22E, 0x22F, 0x230, 0x231, 0x232, 0x233, 0x234, 0x235, 0x236, + 0x237, 0x238, 0x239, 0x23A, 0x23B, 0x23C, 0x23D, 0x23E, 0x23F, 0x240, 0x241, 0x242, 0x243, 0x244, 0x245, 0x246, 0x247, 0x248, 0x249, 0x24A, 0x24B, + 0x24C, 0x24D, 0x24E, 0x24F, 0x250, 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257, 0x258, 0x259, 0x25A, 0x25B, 0x25C, 0x25D, 0x25E, 0x25F, 0x260, + 0x261, 0x262, 0x263, 0x264, 0x265, 0x266, 0x267, 0x268, 0x269, 0x26A, 0x26B, 0x26C, 0x26D, 0x26E, 0x26F, 0x270, 0x271, 0x272, 0x273, 0x274, 0x275, + 0x276, 0x277, 0x278, 0x279, 0x27A, 0x27B, 0x27C, 0x27D, 0x27E, 0x27F, 0x280, 0x281, 0x282, 0x283, 0x284, 0x285, 0x286, 0x287, 0x288, 0x289, 0x28A, + 0x28B, 0x28C, 0x28D, 0x28E, 0x28F, 0x290, 0x291, 0x292, 0x293, 0x294, 0x295, 0x296, 0x297, 0x298, 0x299, 0x29A, 0x29B, 0x29C, 0x29D, 0x29E, 0x29F, + 0x2A0, 0x2A1, 0x2A2, 0x2A3, 0x2A4, 0x2A5, 0x2A6, 0x2A7, 0x2A8, 0x2A9, 0x2AA, 0x2AB, 0x2AC, 0x2AD, 0x2AE, 0x2AF, 0x2B0, 0x2B1, 0x2B2, 0x2B3, 0x2B4, + 0x2B5, 0x2B6, 0x2B7, 0x2B8, 0x2B9, 0x2BA, 0x2BB, 0x2BC, 0x2BD, 0x2BE, 0x2BF, 0x2C0, 0x2C1, 0x2C2, 0x2C3, 0x2C4, 0x2C5, 0x2C6, 0x2C7, 0x2C8, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x2C9, 0x2CA, + 0x2CB, 0x2CC, 0x2CD, 0x2CE, 0x2CF, 0x2D0, 0x2D1, 0x2D2, 0x2D3, 0x2D4, 0x2D5, 0x2D6, 0x2D7, 0x2D8, 0x2D9, 0x2DA, 0x2DB, 0x2DC, 0x2DD, 0x2DE, 0x2DF, + 0x2E0, 0x2E1, 0x2E2, 0x2E3, 0x2E4, 0x2E5, 0x2E6, 0x000, 0x2E7, 0x2E8, 0x2E9, 0x2EA, 0x2EB, 0x2EC, 0x2ED, 0x2EE, 0x2EF, 0x2F0, 0x2F1, 0x2F2, 0x2F3, + 0x2F4, 0x2F5, 0x2F6, 0x2F7, 0x2F8, 0x2F9, 0x2FA, 0x2FB, 0x2FC, 0x2FD, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x2FE, 0x2FF, 0x300, + 0x301, 0x302, 0x303, 0x304, 0x305, 0x306, 0x307, 0x308, 0x309, 0x30A, 0x30B, 0x30C, 0x30D, 0x30E, 0x30F, 0x310, 0x311, 0x312, 0x313, 0x314, 0x315, + 0x316, 0x317, 0x318, 0x319, 0x31A, 0x31B, 0x000 }; + +static int GetFontCode(unsigned short code) +{ + if (OSGetFontEncode() == OS_FONT_ENCODE_SJIS) { + if (code >= 0x20 && code <= 0xDF) { + return HankakuToCode[code - 0x20]; + } + + if (code > 0x889E) { + int i = ((code >> 8) - 0x88) * 188; + int j = (code & 0xFF) - 0x40; + + if (j >= 0x40) { + j--; + } + + return (i + j + 0x2BE); + } + + if (code < 0x879E) { + int i = ((code >> 8) - 0x81) * 188; + int j = (code & 0xFF) - 0x40; + + if (j >= 0x40) { + j--; + } + + return Zenkaku2Code[i + j]; + } + } + else if (code > 0x20 && code <= 0xFF) { + return code - 0x20; + } + else { + return 0; + } +} + +static void Decode(unsigned char *s, unsigned char *d) +{ + int i; + int j; + int k; + int p; + int q; + int r7; // huh? DWARF info says these 2 variables might be register names and not actual names. + int r25; + int cnt; + int os; + unsigned int flag; + unsigned int code; + + os = *(int *)(s + 0x4); + r7 = *(int *)(s + 0x8); + r25 = *(int *)(s + 0xC); + + q = 0; + flag = 0; + p = 16; + + do { + // Get next mask + if (flag == 0) { + code = *(u32 *)(s + p); + p += sizeof(u32); + flag = sizeof(u32) * 8; + } + + // Non-linked chunk + if (code & 0x80000000) { + d[q++] = s[r25++]; + } + // Linked chunk + else { + // Read offset from link table + j = s[r7] << 8 | s[r7 + 1]; + r7 += sizeof(u16); + + // Apply offset + k = q - (j & 0x0FFF); + cnt = j >> 12; + if (cnt == 0) { + cnt = s[r25++] + 0x12; + } + else { + cnt += 2; + } + + // Copy chunk + for (i = 0; i < cnt; i++, q++, k++) { + d[q] = d[k - 1]; + } + } + + // Prepare next mask bit + code <<= 1; + flag--; + } while (q < os); +} + +static u32 GetFontSize(u8 *buf) +{ + if (buf[0] == 'Y' && buf[1] == 'a' && buf[2] == 'y') { + return *(u32 *)(buf + 0x4); + } + + return 0; +} + +u16 OSGetFontEncode(void) +{ + static u16 fontEncode = 0xFFFF; + if (fontEncode <= 1) { + return fontEncode; + } + switch (*(int *)OSPhysicalToCached(0xCC)) { + case VI_NTSC: + fontEncode = (__VIRegs[VI_DTV_STAT] & 2) ? OS_FONT_ENCODE_SJIS : OS_FONT_ENCODE_ANSI; + break; + + case VI_PAL: + case VI_MPAL: + case VI_DEBUG: + case VI_DEBUG_PAL: + case VI_EURGB60: + default: + fontEncode = OS_FONT_ENCODE_ANSI; + } + + return fontEncode; +} + +static void ReadROM(void *buf, int length, int offset) +{ + int len; + while (length > 0) { + len = (length <= 0x100) ? length : 0x100; + length -= len; + + while (!__OSReadROM(buf, len, offset)) { + ; + } + + offset += len; + (u8 *)buf += len; + } +} + +static u32 ReadFont(void *img) +{ + if (OSGetFontEncode() == OS_FONT_ENCODE_SJIS) { + ReadROM(img, OS_FONT_ROM_SIZE_SJIS, 0x1AFF00); + } + else { + ReadROM(img, OS_FONT_ROM_SIZE_ANSI, 0x1FCF00); + } + + return GetFontSize(img); +} + +u32 OSLoadFont(OSFontHeader *fontData, void *temp) +{ + u32 size; + + SheetImage = NULL; + size = ReadFont(temp); + if (size) { + Decode(temp, (void *)fontData); + FontData = fontData; + WidthTable = (u8 *)FontData + FontData->widthTable; + CharsInSheet = FontData->sheetColumn * FontData->sheetRow; + } + + return size; +} + +char *OSGetFontTexel(char *string, void *image, long pos, long stride, long *width) +{ + unsigned short code; + unsigned char *src; + unsigned char *dst; + int fontCode; + int sheet; + int numChars; + int row; + int column; + int x; + int y; + int offsetSrc; + int offsetDst; + unsigned char *colorIndex; + unsigned char *imageSrc; + + // ASSERTLINE(0x1F6, FontData && !SheetImage); + + code = *string; + if (code == '\0') { + return string; + } + + string++; + if (OSGetFontEncode() == OS_FONT_ENCODE_SJIS) { + if ((((code >= 0x80) && (code <= 0x9F)) || ((code >= 0xE0) && (code <= 0xFF))) && ((s8)*string != 0U)) { + code = (code << 8) | (*string++); // Shift-JIS encoded byte + } + } + colorIndex = &FontData->c0; + + // ASSERTLINE(0x209, FontData->sheetFormat == GX_TF_I4); + + fontCode = GetFontCode(code); + + sheet = fontCode / CharsInSheet; + numChars = fontCode - (sheet * CharsInSheet); + row = numChars / FontData->sheetColumn; + column = (numChars - (row * FontData->sheetColumn)); + row *= FontData->cellHeight; + column *= FontData->cellWidth; + imageSrc = (u8 *)FontData + FontData->sheetImage; + imageSrc += (sheet * FontData->sheetSize) / 2; + + for (y = 0; y < FontData->cellHeight; y++) { + for (x = 0; x < FontData->cellWidth; x++) { + src = imageSrc + (((FontData->sheetWidth / 8) * 32) / 2) * ((row + y) / 8); + src += ((column + x) / 8) * 16; + src += ((row + y) % 8) * 2; + src += ((column + x) % 8) / 4; + + offsetSrc = (column + x) % 4; + + dst = (u8 *)image + ((y / 8) * (((stride * 4) / 8) * 32)); + dst += (((pos + x) / 8) * 32); + dst += ((y % 8) * 4); + dst += ((pos + x) % 8) / 2; + + offsetDst = (pos + x) % 2; + + *dst |= colorIndex[*src >> (6 - (offsetSrc * 2)) & 3] & ((offsetDst != 0) ? 0x0F : 0xF0); + } + } + *width = WidthTable[fontCode]; + + return string; +} diff --git a/src/dolphin/os/OSInterrupt.c b/src/dolphin/os/OSInterrupt.c new file mode 100644 index 00000000..061e7daf --- /dev/null +++ b/src/dolphin/os/OSInterrupt.c @@ -0,0 +1,434 @@ +#include +#include +#include + +static asm void ExternalInterruptHandler(register __OSException exception, register OSContext *context); + +static __OSInterruptHandler *InterruptHandlerTable; + +static OSInterruptMask InterruptPrioTable[] = { + OS_INTERRUPTMASK_PI_ERROR, + OS_INTERRUPTMASK_PI_DEBUG, + OS_INTERRUPTMASK_MEM, + OS_INTERRUPTMASK_PI_RSW, + OS_INTERRUPTMASK_PI_VI, + OS_INTERRUPTMASK_PI_PE, + OS_INTERRUPTMASK_PI_HSP, + OS_INTERRUPTMASK_DSP_ARAM | OS_INTERRUPTMASK_DSP_DSP | OS_INTERRUPTMASK_AI | OS_INTERRUPTMASK_EXI | OS_INTERRUPTMASK_PI_SI + | OS_INTERRUPTMASK_PI_DI, + OS_INTERRUPTMASK_DSP_AI, + OS_INTERRUPTMASK_PI_CP, + 0xFFFFFFFF, +}; + +asm BOOL OSDisableInterrupts(void) +{ + // clang-format off + nofralloc +entry __RAS_OSDisableInterrupts_begin + mfmsr r3 + rlwinm r4, r3, 0, 17, 15 + mtmsr r4 + rlwinm r3, r3, 17, 31, 31 +entry __RAS_OSDisableInterrupts_end + blr + // clang-format on +} +asm BOOL OSEnableInterrupts(void) +{ + // clang-format off + nofralloc + + mfmsr r3 + ori r4, r3, 0x8000 + mtmsr r4 + rlwinm r3, r3, 17, 31, 31 + blr + // clang-format on +} + +asm BOOL OSRestoreInterrupts(register BOOL level) { + // clang-format off + + nofralloc + + cmpwi level, 0 + mfmsr r4 + beq _disable + ori r5, r4, 0x8000 + b _restore +_disable: + rlwinm r5, r4, 0, 17, 15 +_restore: + mtmsr r5 + rlwinm r3, r4, 17, 31, 31 + blr + // clang-format on +} + +__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt interrupt, __OSInterruptHandler handler) +{ + __OSInterruptHandler oldHandler; + + oldHandler = InterruptHandlerTable[interrupt]; + InterruptHandlerTable[interrupt] = handler; + return oldHandler; +} + +__OSInterruptHandler __OSGetInterruptHandler(__OSInterrupt interrupt) +{ + return InterruptHandlerTable[interrupt]; +} + +void __OSInterruptInit(void) +{ + InterruptHandlerTable = OSPhysicalToCached(0x3040); + memset(InterruptHandlerTable, 0, __OS_INTERRUPT_MAX * sizeof(__OSInterruptHandler)); + + *(OSInterruptMask *)OSPhysicalToCached(0x00C4) = 0; + + *(OSInterruptMask *)OSPhysicalToCached(0x00C8) = 0; + + __PIRegs[1] = 0xf0; + + __OSMaskInterrupts(OS_INTERRUPTMASK_MEM | OS_INTERRUPTMASK_DSP | OS_INTERRUPTMASK_AI | OS_INTERRUPTMASK_EXI | OS_INTERRUPTMASK_PI); + + __OSSetExceptionHandler(4, ExternalInterruptHandler); +} + +u32 SetInterruptMask(OSInterruptMask mask, OSInterruptMask current) +{ + u32 reg; + + switch (__cntlzw(mask)) { + case __OS_INTERRUPT_MEM_0: + case __OS_INTERRUPT_MEM_1: + case __OS_INTERRUPT_MEM_2: + case __OS_INTERRUPT_MEM_3: + case __OS_INTERRUPT_MEM_ADDRESS: + reg = 0; + if (!(current & OS_INTERRUPTMASK_MEM_0)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_MEM_1)) + reg |= 0x2; + if (!(current & OS_INTERRUPTMASK_MEM_2)) + reg |= 0x4; + if (!(current & OS_INTERRUPTMASK_MEM_3)) + reg |= 0x8; + if (!(current & OS_INTERRUPTMASK_MEM_ADDRESS)) + reg |= 0x10; + __MEMRegs[0x0000000e] = (u16)reg; + mask &= ~OS_INTERRUPTMASK_MEM; + break; + case __OS_INTERRUPT_DSP_AI: + case __OS_INTERRUPT_DSP_ARAM: + case __OS_INTERRUPT_DSP_DSP: + reg = __DSPRegs[0x00000005]; + reg &= ~0x1F8; + if (!(current & OS_INTERRUPTMASK_DSP_AI)) + reg |= 0x10; + if (!(current & OS_INTERRUPTMASK_DSP_ARAM)) + reg |= 0x40; + if (!(current & OS_INTERRUPTMASK_DSP_DSP)) + reg |= 0x100; + __DSPRegs[0x00000005] = (u16)reg; + mask &= ~OS_INTERRUPTMASK_DSP; + break; + case __OS_INTERRUPT_AI_AI: + reg = __AIRegs[0]; + reg &= ~0x2C; + if (!(current & OS_INTERRUPTMASK_AI_AI)) + reg |= 0x4; + __AIRegs[0] = reg; + mask &= ~OS_INTERRUPTMASK_AI; + break; + case __OS_INTERRUPT_EXI_0_EXI: + case __OS_INTERRUPT_EXI_0_TC: + case __OS_INTERRUPT_EXI_0_EXT: + reg = __EXIRegs[0]; + reg &= ~0x2C0F; + if (!(current & OS_INTERRUPTMASK_EXI_0_EXI)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_EXI_0_TC)) + reg |= 0x4; + if (!(current & OS_INTERRUPTMASK_EXI_0_EXT)) + reg |= 0x400; + __EXIRegs[0] = reg; + mask &= ~OS_INTERRUPTMASK_EXI_0; + break; + case __OS_INTERRUPT_EXI_1_EXI: + case __OS_INTERRUPT_EXI_1_TC: + case __OS_INTERRUPT_EXI_1_EXT: + reg = __EXIRegs[5]; + reg &= ~0xC0F; + + if (!(current & OS_INTERRUPTMASK_EXI_1_EXI)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_EXI_1_TC)) + reg |= 0x4; + if (!(current & OS_INTERRUPTMASK_EXI_1_EXT)) + reg |= 0x400; + __EXIRegs[5] = reg; + mask &= ~OS_INTERRUPTMASK_EXI_1; + break; + case __OS_INTERRUPT_EXI_2_EXI: + case __OS_INTERRUPT_EXI_2_TC: + reg = __EXIRegs[10]; + reg &= ~0xF; + if (!(current & OS_INTERRUPTMASK_EXI_2_EXI)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_EXI_2_TC)) + reg |= 0x4; + + __EXIRegs[10] = reg; + mask &= ~OS_INTERRUPTMASK_EXI_2; + break; + case __OS_INTERRUPT_PI_CP: + case __OS_INTERRUPT_PI_SI: + case __OS_INTERRUPT_PI_DI: + case __OS_INTERRUPT_PI_RSW: + case __OS_INTERRUPT_PI_ERROR: + case __OS_INTERRUPT_PI_VI: + case __OS_INTERRUPT_PI_DEBUG: + case __OS_INTERRUPT_PI_PE_TOKEN: + case __OS_INTERRUPT_PI_PE_FINISH: + case __OS_INTERRUPT_PI_HSP: + reg = 0xF0; + + if (!(current & OS_INTERRUPTMASK_PI_CP)) { + reg |= 0x800; + } + if (!(current & OS_INTERRUPTMASK_PI_SI)) { + reg |= 0x8; + } + if (!(current & OS_INTERRUPTMASK_PI_DI)) { + reg |= 0x4; + } + if (!(current & OS_INTERRUPTMASK_PI_RSW)) { + reg |= 0x2; + } + if (!(current & OS_INTERRUPTMASK_PI_ERROR)) { + reg |= 0x1; + } + if (!(current & OS_INTERRUPTMASK_PI_VI)) { + reg |= 0x100; + } + if (!(current & OS_INTERRUPTMASK_PI_DEBUG)) { + reg |= 0x1000; + } + if (!(current & OS_INTERRUPTMASK_PI_PE_TOKEN)) { + reg |= 0x200; + } + if (!(current & OS_INTERRUPTMASK_PI_PE_FINISH)) { + reg |= 0x400; + } + if (!(current & OS_INTERRUPTMASK_PI_HSP)) { + reg |= 0x2000; + } + __PIRegs[1] = reg; + mask &= ~OS_INTERRUPTMASK_PI; + break; + default: + break; + } + return mask; +} + +OSInterruptMask OSGetInterruptMask(void) +{ + return *(OSInterruptMask *)OSPhysicalToCached(0x00C8); +} + +OSInterruptMask OSSetInterruptMask(OSInterruptMask local) +{ + BOOL enabled; + OSInterruptMask global; + OSInterruptMask prev; + OSInterruptMask mask; + + enabled = OSDisableInterrupts(); + global = *(OSInterruptMask *)OSPhysicalToCached(0x00C4); + prev = *(OSInterruptMask *)OSPhysicalToCached(0x00C8); + mask = (global | prev) ^ local; + *(OSInterruptMask *)OSPhysicalToCached(0x00C8) = local; + while (mask) { + mask = SetInterruptMask(mask, global | local); + } + OSRestoreInterrupts(enabled); + return prev; +} + +OSInterruptMask __OSMaskInterrupts(OSInterruptMask global) +{ + BOOL enabled; + OSInterruptMask prev; + OSInterruptMask local; + OSInterruptMask mask; + + enabled = OSDisableInterrupts(); + prev = *(OSInterruptMask *)OSPhysicalToCached(0x00C4); + local = *(OSInterruptMask *)OSPhysicalToCached(0x00C8); + mask = ~(prev | local) & global; + global |= prev; + *(OSInterruptMask *)OSPhysicalToCached(0x00C4) = global; + while (mask) { + mask = SetInterruptMask(mask, global | local); + } + OSRestoreInterrupts(enabled); + return prev; +} + +OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask global) +{ + BOOL enabled; + OSInterruptMask prev; + OSInterruptMask local; + OSInterruptMask mask; + + enabled = OSDisableInterrupts(); + prev = *(OSInterruptMask *)OSPhysicalToCached(0x00C4); + local = *(OSInterruptMask *)OSPhysicalToCached(0x00C8); + mask = (prev | local) & global; + global = prev & ~global; + *(OSInterruptMask *)OSPhysicalToCached(0x00C4) = global; + while (mask) { + mask = SetInterruptMask(mask, global | local); + } + OSRestoreInterrupts(enabled); + return prev; +} + +volatile OSTime __OSLastInterruptTime; +volatile __OSInterrupt __OSLastInterrupt; +volatile u32 __OSLastInterruptSrr0; + +void __OSDispatchInterrupt(__OSException exception, OSContext *context) +{ + u32 intsr; + u32 reg; + OSInterruptMask cause; + OSInterruptMask unmasked; + OSInterruptMask *prio; + __OSInterrupt interrupt; + __OSInterruptHandler handler; + intsr = __PIRegs[0]; + intsr &= ~0x00010000; + + if (intsr == 0 || (intsr & __PIRegs[1]) == 0) { + OSLoadContext(context); + } + + cause = 0; + + if (intsr & 0x00000080) { + reg = __MEMRegs[15]; + if (reg & 0x1) + cause |= OS_INTERRUPTMASK_MEM_0; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_MEM_1; + if (reg & 0x4) + cause |= OS_INTERRUPTMASK_MEM_2; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_MEM_3; + if (reg & 0x10) + cause |= OS_INTERRUPTMASK_MEM_ADDRESS; + } + + if (intsr & 0x00000040) { + reg = __DSPRegs[5]; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_DSP_AI; + if (reg & 0x20) + cause |= OS_INTERRUPTMASK_DSP_ARAM; + if (reg & 0x80) + cause |= OS_INTERRUPTMASK_DSP_DSP; + } + + if (intsr & 0x00000020) { + reg = __AIRegs[0]; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_AI_AI; + } + + if (intsr & 0x00000010) { + reg = __EXIRegs[0]; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_EXI_0_EXI; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_EXI_0_TC; + if (reg & 0x800) + cause |= OS_INTERRUPTMASK_EXI_0_EXT; + reg = __EXIRegs[5]; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_EXI_1_EXI; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_EXI_1_TC; + if (reg & 0x800) + cause |= OS_INTERRUPTMASK_EXI_1_EXT; + reg = __EXIRegs[10]; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_EXI_2_EXI; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_EXI_2_TC; + } + + if (intsr & 0x00002000) + cause |= OS_INTERRUPTMASK_PI_HSP; + if (intsr & 0x00001000) + cause |= OS_INTERRUPTMASK_PI_DEBUG; + if (intsr & 0x00000400) + cause |= OS_INTERRUPTMASK_PI_PE_FINISH; + if (intsr & 0x00000200) + cause |= OS_INTERRUPTMASK_PI_PE_TOKEN; + if (intsr & 0x00000100) + cause |= OS_INTERRUPTMASK_PI_VI; + if (intsr & 0x00000008) + cause |= OS_INTERRUPTMASK_PI_SI; + if (intsr & 0x00000004) + cause |= OS_INTERRUPTMASK_PI_DI; + if (intsr & 0x00000002) + cause |= OS_INTERRUPTMASK_PI_RSW; + if (intsr & 0x00000800) + cause |= OS_INTERRUPTMASK_PI_CP; + if (intsr & 0x00000001) + cause |= OS_INTERRUPTMASK_PI_ERROR; + + unmasked = cause & ~(*(OSInterruptMask *)OSPhysicalToCached(0x00C4) | *(OSInterruptMask *)OSPhysicalToCached(0x00C8)); + if (unmasked) { + for (prio = InterruptPrioTable;; ++prio) { + if (unmasked & *prio) { + interrupt = (__OSInterrupt)__cntlzw(unmasked & *prio); + break; + } + } + + handler = __OSGetInterruptHandler(interrupt); + if (handler) { + if (__OS_INTERRUPT_MEM_ADDRESS < interrupt) { + __OSLastInterrupt = interrupt; + __OSLastInterruptTime = OSGetTime(); + __OSLastInterruptSrr0 = context->srr0; + } + + OSDisableScheduler(); + handler(interrupt, context); + OSEnableScheduler(); + __OSReschedule(); + OSLoadContext(context); + } + } + + OSLoadContext(context); +} + +static asm void ExternalInterruptHandler(register __OSException exception, register OSContext *context) +{ +#pragma unused(exception) + // clang-format off + nofralloc + OS_EXCEPTION_SAVE_GPRS(context) + + stwu r1, -8(r1) + b __OSDispatchInterrupt + // clang-format on +} diff --git a/src/dolphin/os/OSLink.c b/src/dolphin/os/OSLink.c new file mode 100644 index 00000000..c3f3e03c --- /dev/null +++ b/src/dolphin/os/OSLink.c @@ -0,0 +1,504 @@ +#include "dolphin/os.h" + +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_HIPROC 0xff1f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_HIRESERVE 0xffff + +#define ELF32_R_SYM(i) ((i) >> 8) +#define ELF32_R_TYPE(i) ((unsigned char)(i)) +#define ELF32_R_INFO(s, t) (((s) << 8) + (unsigned char)(t)) + +// Name Value Field Calculation +#define R_PPC_NONE 0 // none none +#define R_PPC_ADDR32 1 // word32 S + A +#define R_PPC_ADDR24 2 // low24* (S + A) >> 2 +#define R_PPC_ADDR16 3 // half16* S + A +#define R_PPC_ADDR16_LO 4 // half16 #lo(S + A) +#define R_PPC_ADDR16_HI 5 // half16 #hi(S + A) +#define R_PPC_ADDR16_HA 6 // half16 #ha(S + A) +#define R_PPC_ADDR14 7 // low14* (S + A) >> 2 +#define R_PPC_ADDR14_BRTAKEN 8 // low14* (S + A) >> 2 +#define R_PPC_ADDR14_BRNTAKEN 9 // low14* (S + A) >> 2 +#define R_PPC_REL24 10 // low24* (S + A - P) >> 2 +#define R_PPC_REL14 11 // low14* (S + A - P) >> 2 +#define R_PPC_REL14_BRTAKEN 12 // low14* (S + A - P) >> 2 +#define R_PPC_REL14_BRNTAKEN 13 // low14* (S + A - P) >> 2 + +#define R_PPC_GOT16 14 // half16* G + A +#define R_PPC_GOT16_LO 15 // half16 #lo(G + A) +#define R_PPC_GOT16_HI 16 // half16 #hi(G + A) +#define R_PPC_GOT16_HA 17 // half16 #ha(G + A) +#define R_PPC_PLTREL24 18 // low24* (L + A - P) >> 2 +#define R_PPC_COPY 19 // none none +#define R_PPC_GLOB_DAT 20 // word32 S + A +#define R_PPC_JMP_SLOT 21 // none +#define R_PPC_RELATIVE 22 // word32 B + A + +#define R_PPC_LOCAL24PC 23 // low24* + +#define R_PPC_UADDR32 24 // word32 S + A +#define R_PPC_UADDR16 25 // half16* S + A +#define R_PPC_REL32 26 // word32 S + A - P + +#define R_PPC_PLT32 27 // word32 L + A +#define R_PPC_PLTREL32 28 // word32 L + A - P +#define R_PPC_PLT16_LO 29 // half16 #lo(L + A) +#define R_PPL_PLT16_HI 30 // half16 #hi(L + A) +#define R_PPC_PLT16_HA 31 // half16 #ha(L + A) + +#define R_PPC_SDAREL16 32 // half16* S + A - _SDA_BASE_ +#define R_PPC_SECTOFF 33 // half16* R + A +#define R_PPC_SECTOFF_LO 34 // half16 #lo(R + A) +#define R_PPC_SECTOFF_HI 35 // half16 #hi(R + A) +#define R_PPC_SECTOFF_HA 36 // half16 #ha(R + A) +#define R_PPC_ADDR30 37 // word30 (S + A - P) >> 2 + +#define R_PPC_EMB_NADDR32 101 // uword32 N (A - S) +#define R_PPC_EMB_NADDR16 102 // uhalf16 Y (A - S) +#define R_PPC_EMB_NADDR16_LO 103 // uhalf16 N #lo(A - S) +#define R_PPC_EMB_NADDR16_HI 104 // uhalf16 N #hi(A - S) +#define R_PPC_EMB_NADDR16_HA 105 // uhalf16 N #ha(A - S) +#define R_PPC_EMB_SDAI16 106 // uhalf16 Y T +#define R_PPC_EMB_SDA2I16 107 // uhalf16 Y U +#define R_PPC_EMB_SDA2REL 108 // uhalf16 Y S + A - _SDA2_BASE_ +#define R_PPC_EMB_SDA21 109 // ulow21 N +#define R_PPC_EMB_MRKREF 110 // none N +#define R_PPC_EMB_RELSEC16 111 // uhalf16 Y V + A +#define R_PPC_EMB_RELST_LO 112 // uhalf16 N #lo(W + A) +#define R_PPC_EMB_RELST_HI 113 // uhalf16 N #hi(W + A) +#define R_PPC_EMB_RELST_HA 114 // uhalf16 N #ha(W + A) +#define R_PPC_EMB_BIT_FLD 115 // uword32 Y +#define R_PPC_EMB_RELSDA 116 // uhalf16 Y + +OSModuleQueue __OSModuleInfoList : (OS_BASE_CACHED | 0x30C8); +const void *__OSStringTable : (OS_BASE_CACHED | 0x30D0); + +#pragma dont_inline on +__declspec(weak) void OSNotifyLink(void) { } + +__declspec(weak) void OSNotifyUnlink(void) { } + +#pragma dont_inline reset + +#define EnqueueTail(queue, moduleInfo, link) \ + do { \ + OSModuleInfo *__prev; \ + \ + __prev = (queue)->tail; \ + if (__prev == NULL) \ + (queue)->head = (moduleInfo); \ + else \ + __prev->link.next = (moduleInfo); \ + (moduleInfo)->link.prev = __prev; \ + (moduleInfo)->link.next = NULL; \ + (queue)->tail = (moduleInfo); \ + } while (0) + +#define DequeueItem(queue, moduleInfo, link) \ + do { \ + OSModuleInfo *__next; \ + OSModuleInfo *__prev; \ + \ + __next = (moduleInfo)->link.next; \ + __prev = (moduleInfo)->link.prev; \ + \ + if (__next == NULL) \ + (queue)->tail = __prev; \ + else \ + __next->link.prev = __prev; \ + \ + if (__prev == NULL) \ + (queue)->head = __next; \ + else \ + __prev->link.next = __next; \ + } while (0) + +void OSSetStringTable(const void *stringTable) +{ + __OSStringTable = stringTable; +} + +static BOOL Relocate(OSModuleHeader *newModule, OSModuleHeader *module) +{ + OSModuleID idNew; + OSImportInfo *imp; + OSRel *rel; + OSSectionInfo *si; + OSSectionInfo *siFlush; + u32 *p; + u32 offset; + u32 x; + + idNew = newModule ? newModule->info.id : 0; + for (imp = (OSImportInfo *)module->impOffset; imp < (OSImportInfo *)(module->impOffset + module->impSize); imp++) { + if (imp->id == idNew) { + goto Found; + } + } + return FALSE; + +Found: + siFlush = 0; + for (rel = (OSRel *)imp->offset; rel->type != R_DOLPHIN_END; rel++) { + (u8 *)p += rel->offset; + if (idNew) { + si = &OSGetSectionInfo(newModule)[rel->section]; + offset = OS_SECTIONINFO_OFFSET(si->offset); + } + else { + offset = 0; + } + switch (rel->type) { + case R_PPC_NONE: + break; + case R_PPC_ADDR32: + x = offset + rel->addend; + *p = x; + break; + case R_PPC_ADDR24: + x = offset + rel->addend; + *p = (*p & ~0x03fffffc) | (x & 0x03fffffc); + break; + case R_PPC_ADDR16: + x = offset + rel->addend; + *(u16 *)p = (u16)(x & 0xffff); + break; + case R_PPC_ADDR16_LO: + x = offset + rel->addend; + *(u16 *)p = (u16)(x & 0xffff); + break; + case R_PPC_ADDR16_HI: + x = offset + rel->addend; + *(u16 *)p = (u16)(((x >> 16) & 0xffff)); + break; + case R_PPC_ADDR16_HA: + x = offset + rel->addend; + *(u16 *)p = (u16)(((x >> 16) + ((x & 0x8000) ? 1 : 0)) & 0xffff); + break; + case R_PPC_REL24: + x = offset + rel->addend - (u32)p; + *p = (*p & ~0x03fffffc) | (x & 0x03fffffc); + break; + case R_DOLPHIN_NOP: + break; + case R_DOLPHIN_SECTION: + si = &OSGetSectionInfo(module)[rel->section]; + p = (u32 *)OS_SECTIONINFO_OFFSET(si->offset); + if (siFlush) { + offset = OS_SECTIONINFO_OFFSET(siFlush->offset); + DCFlushRange((void *)offset, siFlush->size); + ICInvalidateRange((void *)offset, siFlush->size); + } + siFlush = (si->offset & OS_SECTIONINFO_EXEC) ? si : 0; + break; + default: + OSReport("OSLink: unknown relocation type %3d\n", rel->type); + break; + } + } + + if (siFlush) { + offset = OS_SECTIONINFO_OFFSET(siFlush->offset); + DCFlushRange((void *)offset, siFlush->size); + ICInvalidateRange((void *)offset, siFlush->size); + } + + return TRUE; +} + +#if OS_MODULE_VERSION >= 3 +static BOOL Link(OSModuleInfo *newModule, void *bss, BOOL fixed) +{ + u32 i; + OSSectionInfo *si; + OSModuleHeader *moduleHeader; + OSModuleInfo *moduleInfo; + OSImportInfo *imp; + + moduleHeader = (OSModuleHeader *)newModule; + moduleHeader->bssSection = 0; + + if (OS_MODULE_VERSION < newModule->version + || 2 <= newModule->version + && (moduleHeader->align && (u32)newModule % moduleHeader->align != 0 + || moduleHeader->bssAlign && (u32)bss % moduleHeader->bssAlign != 0)) { + return FALSE; + } + + EnqueueTail(&__OSModuleInfoList, newModule, link); + newModule->sectionInfoOffset += (u32)moduleHeader; + moduleHeader->relOffset += (u32)moduleHeader; + moduleHeader->impOffset += (u32)moduleHeader; + if (3 <= newModule->version) { + moduleHeader->fixSize += (u32)moduleHeader; + } + for (i = 1; i < newModule->numSections; i++) { + si = &OSGetSectionInfo(newModule)[i]; + if (si->offset != 0) { + si->offset += (u32)moduleHeader; + } + else if (si->size != 0) { + moduleHeader->bssSection = (u8)i; + si->offset = (u32)bss; + bss = (void *)((u32)bss + si->size); + } + } + for (imp = (OSImportInfo *)moduleHeader->impOffset; imp < (OSImportInfo *)(moduleHeader->impOffset + moduleHeader->impSize); imp++) { + imp->offset += (u32)moduleHeader; + } + if (moduleHeader->prologSection != SHN_UNDEF) { + moduleHeader->prolog += OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->prologSection].offset); + } + if (moduleHeader->epilogSection != SHN_UNDEF) { + moduleHeader->epilog += OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->epilogSection].offset); + } + if (moduleHeader->unresolvedSection != SHN_UNDEF) { + moduleHeader->unresolved += OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->unresolvedSection].offset); + } + if (__OSStringTable) { + newModule->nameOffset += (u32)__OSStringTable; + } + + Relocate(0, moduleHeader); + + for (moduleInfo = __OSModuleInfoList.head; moduleInfo; moduleInfo = moduleInfo->link.next) { + Relocate(moduleHeader, (OSModuleHeader *)moduleInfo); + if (moduleInfo != newModule) { + Relocate((OSModuleHeader *)moduleInfo, moduleHeader); + } + } + + if (fixed) { + for (imp = (OSImportInfo *)moduleHeader->impOffset; imp < (OSImportInfo *)(moduleHeader->impOffset + moduleHeader->impSize); imp++) { + if (imp->id == 0 || imp->id == newModule->id) { + moduleHeader->impSize = (u32)((u8 *)imp - (u8 *)moduleHeader->impOffset); + break; + } + } + } + + memset(bss, 0, moduleHeader->bssSize); + + OSNotifyLink(newModule); + + return TRUE; +} + +BOOL OSLink(OSModuleInfo *newModule, void *bss) +{ + return Link(newModule, bss, FALSE); +} + +BOOL OSLinkFixed(OSModuleInfo *newModule, void *bss) +{ + if (OS_MODULE_VERSION < newModule->version || newModule->version < 3) { + return FALSE; + } + return Link(newModule, bss, TRUE); +} +#else +BOOL OSLink(OSModuleInfo *newModule, void *bss) +{ + u32 i; + OSSectionInfo *si; + OSModuleHeader *moduleHeader; + OSModuleInfo *moduleInfo; + OSImportInfo *imp; + + moduleHeader = (OSModuleHeader *)newModule; + + if (OS_MODULE_VERSION < newModule->version + || 2 <= newModule->version + && (moduleHeader->align && (u32)newModule % moduleHeader->align != 0 + || moduleHeader->bssAlign && (u32)bss % moduleHeader->bssAlign != 0)) { + return FALSE; + } + + EnqueueTail(&__OSModuleInfoList, newModule, link); + memset(bss, 0, moduleHeader->bssSize); + newModule->sectionInfoOffset += (u32)moduleHeader; + moduleHeader->relOffset += (u32)moduleHeader; + moduleHeader->impOffset += (u32)moduleHeader; + + for (i = 0; i < newModule->numSections; i++) { + si = &OSGetSectionInfo(newModule)[i]; + if (si->offset != 0) { + si->offset += (u32)moduleHeader; + } + else if (si->size != 0) { + si->offset = (u32)bss; + bss = (void *)((u32)bss + si->size); + } + } + for (imp = (OSImportInfo *)moduleHeader->impOffset; imp < (OSImportInfo *)(moduleHeader->impOffset + moduleHeader->impSize); imp++) { + imp->offset += (u32)moduleHeader; + } + if (moduleHeader->prologSection != SHN_UNDEF) { + moduleHeader->prolog += OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->prologSection].offset); + } + if (moduleHeader->epilogSection != SHN_UNDEF) { + moduleHeader->epilog += OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->epilogSection].offset); + } + if (moduleHeader->unresolvedSection != SHN_UNDEF) { + moduleHeader->unresolved += OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->unresolvedSection].offset); + } + if (__OSStringTable) { + newModule->nameOffset += (u32)__OSStringTable; + } + + Relocate(0, moduleHeader); + + for (moduleInfo = __OSModuleInfoList.head; moduleInfo; moduleInfo = moduleInfo->link.next) { + Relocate(moduleHeader, (OSModuleHeader *)moduleInfo); + if (moduleInfo != newModule) { + Relocate((OSModuleHeader *)moduleInfo, moduleHeader); + } + } + + OSNotifyLink(); + + return TRUE; +} +#endif + +static BOOL Undo(OSModuleHeader *newModule, OSModuleHeader *module) +{ + OSModuleID idNew; + OSImportInfo *imp; + OSRel *rel; + OSSectionInfo *si; + OSSectionInfo *siFlush; + u32 *p; + u32 offset; + u32 x; + + idNew = newModule->info.id; + + for (imp = (OSImportInfo *)module->impOffset; imp < (OSImportInfo *)(module->impOffset + module->impSize); imp++) { + if (imp->id == idNew) { + goto Found; + } + } + return FALSE; + +Found: + siFlush = 0; + for (rel = (OSRel *)imp->offset; rel->type != R_DOLPHIN_END; rel++) { + (u8 *)p += rel->offset; + si = &OSGetSectionInfo(newModule)[rel->section]; + offset = OS_SECTIONINFO_OFFSET(si->offset); + x = 0; + switch (rel->type) { + case R_PPC_NONE: + break; + case R_PPC_ADDR32: + *p = x; + break; + case R_PPC_ADDR24: + *p = (*p & ~0x03fffffc) | (x & 0x03fffffc); + break; + case R_PPC_ADDR16: + *(u16 *)p = (u16)(x & 0xffff); + break; + case R_PPC_ADDR16_LO: + *(u16 *)p = (u16)(x & 0xffff); + break; + case R_PPC_ADDR16_HI: + *(u16 *)p = (u16)(((x >> 16) & 0xffff)); + break; + case R_PPC_ADDR16_HA: + *(u16 *)p = (u16)(((x >> 16) + ((x & 0x8000) ? 1 : 0)) & 0xffff); + break; + case R_PPC_REL24: + if (module->unresolvedSection != SHN_UNDEF) { + x = (u32)module->unresolved - (u32)p; + } + *p = (*p & ~0x03fffffc) | (x & 0x03fffffc); + break; + case R_DOLPHIN_NOP: + break; + case R_DOLPHIN_SECTION: + si = &OSGetSectionInfo(module)[rel->section]; + p = (u32 *)OS_SECTIONINFO_OFFSET(si->offset); + if (siFlush) { + offset = OS_SECTIONINFO_OFFSET(siFlush->offset); + DCFlushRange((void *)offset, siFlush->size); + ICInvalidateRange((void *)offset, siFlush->size); + } + siFlush = (si->offset & OS_SECTIONINFO_EXEC) ? si : 0; + break; + default: + OSReport("OSUnlink: unknown relocation type %3d\n", rel->type); + break; + } + } + + if (siFlush) { + offset = OS_SECTIONINFO_OFFSET(siFlush->offset); + DCFlushRange((void *)offset, siFlush->size); + ICInvalidateRange((void *)offset, siFlush->size); + } + + return TRUE; +} + +BOOL OSUnlink(OSModuleInfo *oldModule) +{ + OSModuleHeader *moduleHeader; + OSModuleInfo *moduleInfo; + + moduleHeader = (OSModuleHeader *)oldModule; + + DequeueItem(&__OSModuleInfoList, oldModule, link); + + for (moduleInfo = __OSModuleInfoList.head; moduleInfo; moduleInfo = moduleInfo->link.next) { + Undo(moduleHeader, (OSModuleHeader *)moduleInfo); + } + + OSNotifyUnlink(); + + return TRUE; +} + +void __OSModuleInit(void) +{ + __OSModuleInfoList.head = __OSModuleInfoList.tail = 0; + __OSStringTable = 0; +} + +OSModuleInfo *OSSearchModule(void *ptr, u32 *section, u32 *offset) +{ + OSModuleInfo *moduleInfo; + OSSectionInfo *sectionInfo; + u32 i; + u32 baseSection; + + if (ptr == NULL) { + return NULL; + } + + for (moduleInfo = __OSModuleInfoList.head; moduleInfo; moduleInfo = moduleInfo->link.next) { + sectionInfo = OSGetSectionInfo(moduleInfo); + for (i = 0; i < moduleInfo->numSections; ++i) { + if (sectionInfo->size) { + baseSection = OS_SECTIONINFO_OFFSET(sectionInfo->offset); + if (baseSection <= (u32)ptr && (u32)ptr < baseSection + sectionInfo->size) { + if (section) { + *section = i; + } + if (offset) { + *offset = (u32)ptr - baseSection; + } + return moduleInfo; + } + } + sectionInfo++; + } + } + + return NULL; +} diff --git a/src/dolphin/os/OSMemory.c b/src/dolphin/os/OSMemory.c new file mode 100644 index 00000000..7cfda15a --- /dev/null +++ b/src/dolphin/os/OSMemory.c @@ -0,0 +1,230 @@ +#include +#include + +#define TRUNC(n, a) (((u32)(n)) & ~((a)-1)) +#define ROUND(n, a) (((u32)(n) + (a)-1) & ~((a)-1)) + +extern OSErrorHandler __OSErrorTable[16]; + +static BOOL OnReset(BOOL final); + +static OSResetFunctionInfo ResetFunctionInfo = { + OnReset, + 127, +}; +u32 OSGetPhysicalMemSize() +{ + return *(u32 *)(OSPhysicalToCached(0x0028)); +} + +u32 OSGetConsoleSimulatedMemSize() +{ + return *(u32 *)(OSPhysicalToCached(0x00F0)); +} + +static BOOL OnReset(BOOL final) +{ + if (final != FALSE) { + __MEMRegs[8] = 0xFF; + __OSMaskInterrupts(0xf0000000); + } + return TRUE; +} + +static void MEMIntrruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + u32 addr; + u32 cause; + + cause = __MEMRegs[0xf]; + addr = (((u32)__MEMRegs[0x12] & 0x3ff) << 16) | __MEMRegs[0x11]; + __MEMRegs[0x10] = 0; + + if (__OSErrorTable[OS_ERROR_PROTECTION]) { + __OSErrorTable[OS_ERROR_PROTECTION](OS_ERROR_PROTECTION, context, cause, addr); + return; + } + + __OSUnhandledException(OS_ERROR_PROTECTION, context, cause, addr); +} + +void OSProtectRange(u32 chan, void *addr, u32 nBytes, u32 control) +{ + BOOL enabled; + u32 start; + u32 end; + u16 reg; + if (4 <= chan) { + return; + } + + control &= OS_PROTECT_CONTROL_RDWR; + + end = (u32)addr + nBytes; + start = TRUNC(addr, 1u << 10); + end = ROUND(end, 1u << 10); + + DCFlushRange((void *)start, end - start); + + enabled = OSDisableInterrupts(); + + __OSMaskInterrupts(OS_INTERRUPTMASK(__OS_INTERRUPT_MEM_0 + chan)); + + __MEMRegs[0 + 2 * chan] = (u16)(start >> 10); + __MEMRegs[1 + 2 * chan] = (u16)(end >> 10); + + reg = __MEMRegs[8]; + reg &= ~(OS_PROTECT_CONTROL_RDWR << 2 * chan); + reg |= control << 2 * chan; + __MEMRegs[8] = reg; + + if (control != OS_PROTECT_CONTROL_RDWR) { + __OSUnmaskInterrupts(OS_INTERRUPTMASK(__OS_INTERRUPT_MEM_0 + chan)); + } + + OSRestoreInterrupts(enabled); +} + +asm void Config24MB() +{ + // clang-format off + nofralloc + + addi r7,r0,0 + + addis r4,r0,0x00000002@ha + addi r4,r4,0x00000002@l + addis r3,r0,0x800001ff@ha + addi r3,r3,0x800001ff@l + + addis r6,r0,0x01000002@ha + addi r6,r6,0x01000002@l + addis r5,r0,0x810000ff@ha + addi r5,r5,0x810000ff@l + + isync + + mtspr dbat0u,r7 + mtspr dbat0l,r4 + mtspr dbat0u,r3 + isync + + mtspr ibat0u,r7 + mtspr ibat0l,r4 + mtspr ibat0u,r3 + isync + + mtspr dbat2u,r7 + mtspr dbat2l,r6 + mtspr dbat2u,r5 + isync + + mtspr ibat2u,r7 + mtspr ibat2l,r6 + mtspr ibat2u,r5 + isync + + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + + mflr r3 + mtsrr0 r3 + rfi + // clang-format on +} + +asm void Config48MB() +{ + // clang-format off + nofralloc + + addi r7,r0,0x0000 + + addis r4,r0,0x00000002@ha + addi r4,r4,0x00000002@l + addis r3,r0,0x800003ff@ha + addi r3,r3,0x800003ff@l + + addis r6,r0,0x02000002@ha + addi r6,r6,0x02000002@l + addis r5,r0,0x820001ff@ha + addi r5,r5,0x820001ff@l + + isync + + mtspr dbat0u,r7 + mtspr dbat0l,r4 + mtspr dbat0u,r3 + isync + + mtspr ibat0u,r7 + mtspr ibat0l,r4 + mtspr ibat0u,r3 + isync + + mtspr dbat2u,r7 + mtspr dbat2l,r6 + mtspr dbat2u,r5 + isync + + mtspr ibat2u,r7 + mtspr ibat2l,r6 + mtspr ibat2u,r5 + isync + + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + + mflr r3 + mtsrr0 r3 + rfi + // clang-format on +} + +asm void RealMode(register u32 addr) +{ + // clang-format off + nofralloc + clrlwi r3, r3, 2 + mtsrr0 r3 + mfmsr r3 + rlwinm r3, r3, 0, 28, 25 + mtsrr1 r3 + rfi + // clang-format on +} + +void __OSInitMemoryProtection() +{ + u32 padding[8]; + u32 simulatedSize; + BOOL enabled; + simulatedSize = OSGetConsoleSimulatedMemSize(); + enabled = OSDisableInterrupts(); + if (simulatedSize <= 0x1800000) { + RealMode((u32)&Config24MB); + } + else if (simulatedSize <= 0x3000000) { + RealMode((u32)&Config48MB); + } + + __MEMRegs[16] = 0; + __MEMRegs[8] = 0xFF; + + __OSMaskInterrupts(OS_INTERRUPTMASK_MEM_0 | OS_INTERRUPTMASK_MEM_1 | OS_INTERRUPTMASK_MEM_2 | OS_INTERRUPTMASK_MEM_3); + __OSSetInterruptHandler(__OS_INTERRUPT_MEM_0, MEMIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_MEM_1, MEMIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_MEM_2, MEMIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_MEM_3, MEMIntrruptHandler); + __OSSetInterruptHandler(__OS_INTERRUPT_MEM_ADDRESS, MEMIntrruptHandler); + OSRegisterResetFunction(&ResetFunctionInfo); + + if (OSGetConsoleSimulatedMemSize() < OSGetPhysicalMemSize() && OSGetConsoleSimulatedMemSize() == 0x1800000) { + __MEMRegs[20] = 2; + } + + __OSUnmaskInterrupts(OS_INTERRUPTMASK_MEM_ADDRESS); + OSRestoreInterrupts(enabled); +} diff --git a/src/dolphin/os/OSMessage.c b/src/dolphin/os/OSMessage.c new file mode 100644 index 00000000..0d364af2 --- /dev/null +++ b/src/dolphin/os/OSMessage.c @@ -0,0 +1,91 @@ +#include + +void OSInitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount) +{ + OSInitThreadQueue(&mq->queueSend); + OSInitThreadQueue(&mq->queueReceive); + mq->msgArray = msgArray; + mq->msgCount = msgCount; + mq->firstIndex = 0; + mq->usedCount = 0; +} +BOOL OSSendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) +{ + BOOL enabled; + s32 lastIndex; + + enabled = OSDisableInterrupts(); + + while (mq->msgCount <= mq->usedCount) { + if (!(flags & OS_MESSAGE_BLOCK)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + else { + OSSleepThread(&mq->queueSend); + } + } + + lastIndex = (mq->firstIndex + mq->usedCount) % mq->msgCount; + mq->msgArray[lastIndex] = msg; + mq->usedCount++; + + OSWakeupThread(&mq->queueReceive); + + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL OSReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + + while (mq->usedCount == 0) { + if (!(flags & OS_MESSAGE_BLOCK)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + else { + OSSleepThread(&mq->queueReceive); + } + } + + if (msg != NULL) { + *msg = mq->msgArray[mq->firstIndex]; + } + mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; + mq->usedCount--; + + OSWakeupThread(&mq->queueSend); + + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL OSJamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + + while (mq->msgCount <= mq->usedCount) { + if (!(flags & OS_MESSAGE_BLOCK)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + else { + OSSleepThread(&mq->queueSend); + } + } + + mq->firstIndex = (mq->firstIndex + mq->msgCount - 1) % mq->msgCount; + mq->msgArray[mq->firstIndex] = msg; + mq->usedCount++; + + OSWakeupThread(&mq->queueReceive); + + OSRestoreInterrupts(enabled); + return TRUE; +} diff --git a/src/dolphin/os/OSMutex.c b/src/dolphin/os/OSMutex.c new file mode 100644 index 00000000..986b81e0 --- /dev/null +++ b/src/dolphin/os/OSMutex.c @@ -0,0 +1,244 @@ +#include "dolphin/os.h" + +#define PushTail(queue, mutex, link) \ + do { \ + OSMutex *__prev; \ + \ + __prev = (queue)->tail; \ + if (__prev == NULL) \ + (queue)->head = (mutex); \ + else \ + __prev->link.next = (mutex); \ + (mutex)->link.prev = __prev; \ + (mutex)->link.next = NULL; \ + (queue)->tail = (mutex); \ + } while (0) + +#define PopHead(queue, mutex, link) \ + do { \ + OSMutex *__next; \ + \ + (mutex) = (queue)->head; \ + __next = (mutex)->link.next; \ + if (__next == NULL) \ + (queue)->tail = NULL; \ + else \ + __next->link.prev = NULL; \ + (queue)->head = __next; \ + } while (0) + +#define PopItem(queue, mutex, link) \ + do { \ + OSMutex *__next; \ + OSMutex *__prev; \ + \ + __next = (mutex)->link.next; \ + __prev = (mutex)->link.prev; \ + \ + if (__next == NULL) \ + (queue)->tail = __prev; \ + else \ + __next->link.prev = __prev; \ + \ + if (__prev == NULL) \ + (queue)->head = __next; \ + else \ + __prev->link.next = __next; \ + } while (0) + +void OSInitMutex(OSMutex *mutex) +{ + OSInitThreadQueue(&mutex->queue); + mutex->thread = 0; + mutex->count = 0; +} + +void OSLockMutex(OSMutex *mutex) +{ + BOOL enabled = OSDisableInterrupts(); + OSThread *currentThread = OSGetCurrentThread(); + OSThread *ownerThread; + + while (TRUE) { + ownerThread = ((OSMutex *)mutex)->thread; + if (ownerThread == 0) { + mutex->thread = currentThread; + mutex->count++; + PushTail(¤tThread->queueMutex, mutex, link); + break; + } + else if (ownerThread == currentThread) { + mutex->count++; + break; + } + else { + currentThread->mutex = mutex; + __OSPromoteThread(mutex->thread, currentThread->priority); + OSSleepThread(&mutex->queue); + currentThread->mutex = 0; + } + } + OSRestoreInterrupts(enabled); +} + +void OSUnlockMutex(OSMutex *mutex) +{ + BOOL enabled = OSDisableInterrupts(); + OSThread *currentThread = OSGetCurrentThread(); + + if (mutex->thread == currentThread && --mutex->count == 0) { + PopItem(¤tThread->queueMutex, mutex, link); + mutex->thread = NULL; + if (currentThread->priority < currentThread->base) { + currentThread->priority = __OSGetEffectivePriority(currentThread); + } + + OSWakeupThread(&mutex->queue); + } + OSRestoreInterrupts(enabled); +} + +void __OSUnlockAllMutex(OSThread *thread) +{ + OSMutex *mutex; + + while (thread->queueMutex.head) { + PopHead(&thread->queueMutex, mutex, link); + mutex->count = 0; + mutex->thread = NULL; + OSWakeupThread(&mutex->queue); + } +} + +BOOL OSTryLockMutex(OSMutex *mutex) +{ + BOOL enabled = OSDisableInterrupts(); + OSThread *currentThread = OSGetCurrentThread(); + BOOL locked; + if (mutex->thread == 0) { + mutex->thread = currentThread; + mutex->count++; + PushTail(¤tThread->queueMutex, mutex, link); + locked = TRUE; + } + else if (mutex->thread == currentThread) { + mutex->count++; + locked = TRUE; + } + else { + locked = FALSE; + } + OSRestoreInterrupts(enabled); + return locked; +} + +void OSInitCond(OSCond *cond) +{ + OSInitThreadQueue(&cond->queue); +} + +void OSWaitCond(OSCond *cond, OSMutex *mutex) +{ + BOOL enabled = OSDisableInterrupts(); + OSThread *currentThread = OSGetCurrentThread(); + s32 count; + + if (mutex->thread == currentThread) { + count = mutex->count; + mutex->count = 0; + PopItem(¤tThread->queueMutex, mutex, link); + mutex->thread = NULL; + + if (currentThread->priority < currentThread->base) { + currentThread->priority = __OSGetEffectivePriority(currentThread); + } + + OSDisableScheduler(); + OSWakeupThread(&mutex->queue); + OSEnableScheduler(); + OSSleepThread(&cond->queue); + OSLockMutex(mutex); + mutex->count = count; + } + + OSRestoreInterrupts(enabled); +} + +void OSSignalCond(OSCond *cond) +{ + OSWakeupThread(&cond->queue); +} + +static BOOL IsMember(OSMutexQueue *queue, OSMutex *mutex) +{ + OSMutex *member; + + for (member = queue->head; member; member = member->link.next) { + if (mutex == member) + return TRUE; + } + return FALSE; +} + +BOOL __OSCheckMutex(OSMutex *mutex) +{ + OSThread *thread; + OSThreadQueue *queue; + OSPriority priority = 0; + + queue = &mutex->queue; + if (!(queue->head == NULL || queue->head->link.prev == NULL)) + return FALSE; + if (!(queue->tail == NULL || queue->tail->link.next == NULL)) + return FALSE; + for (thread = queue->head; thread; thread = thread->link.next) { + if (!(thread->link.next == NULL || thread == thread->link.next->link.prev)) + return FALSE; + if (!(thread->link.prev == NULL || thread == thread->link.prev->link.next)) + return FALSE; + + if (thread->state != OS_THREAD_STATE_WAITING) + return FALSE; + + if (thread->priority < priority) + return FALSE; + priority = thread->priority; + } + + if (mutex->thread) { + if (mutex->count <= 0) + return FALSE; + } + else { + if (0 != mutex->count) + return FALSE; + } + + return TRUE; +} + +BOOL __OSCheckDeadLock(OSThread *thread) +{ + OSMutex *mutex; + + mutex = thread->mutex; + while (mutex && mutex->thread) { + if (mutex->thread == thread) + return TRUE; + mutex = mutex->thread->mutex; + } + return FALSE; +} + +BOOL __OSCheckMutexes(OSThread *thread) +{ + OSMutex *mutex; + + for (mutex = thread->queueMutex.head; mutex; mutex = mutex->link.next) { + if (mutex->thread != thread) + return FALSE; + if (!__OSCheckMutex(mutex)) + return FALSE; + } + return TRUE; +} diff --git a/src/dolphin/os/OSReboot.c b/src/dolphin/os/OSReboot.c new file mode 100644 index 00000000..5331e90a --- /dev/null +++ b/src/dolphin/os/OSReboot.c @@ -0,0 +1,137 @@ +#include +#include +#include +#include +#include +#include + +typedef struct ApploaderHeader { + // total size: 0x20 + char date[16]; // offset 0x0, size 0x10 + u32 entry; // offset 0x10, size 0x4 + u32 size; // offset 0x14, size 0x4 + u32 rebootSize; // offset 0x18, size 0x4 + u32 reserved2; // offset 0x1C, size 0x4 +} ApploaderHeader; + +static ApploaderHeader Header ATTRIBUTE_ALIGN(32); + +extern void *__OSSavedRegionStart; +extern void *__OSSavedRegionEnd; + +static void *SaveStart = NULL; +static void *SaveEnd = NULL; + +volatile u8 DAT_800030e2 : 0x800030e2; + +extern void *BOOT_REGION_START AT_ADDRESS(0x812FDFF0); //(*(u32 *)0x812fdff0) +extern void *BOOT_REGION_END AT_ADDRESS(0x812FDFEC); //(*(u32 *)0x812fdfec) +extern u32 UNK_HOT_RESET1 AT_ADDRESS(0x817ffff8); +extern u32 UNK_HOT_RESET2 AT_ADDRESS(0x817ffffc); +extern u32 OS_RESET_CODE AT_ADDRESS(0x800030F0); +extern u8 OS_REBOOT_BOOL AT_ADDRESS(0x800030E2); // unknown function, set to true by __OSReboot +extern u32 UNK_817FFFF8 AT_ADDRESS(0x817FFFF8); +extern u32 UNK_817FFFFC AT_ADDRESS(0x817FFFFC); + +static volatile BOOL Prepared = FALSE; + +extern void __DVDPrepareResetAsync(DVDCBCallback callback); +extern BOOL DVDCheckDisk(void); +extern BOOL DVDReadAbsAsyncForBS(DVDCommandBlock *block, void *addr, s32 length, s32 offset, DVDCBCallback callback); + +#pragma dont_inline on +// peephole bug with mwcc +static asm void myFunc() { } +static void Run(register void (*addr)()) +{ + OSDisableInterrupts(); + ICFlashInvalidate(); + // clang-format off + asm { + sync + isync + mtlr addr + blr + } + // clang-format on +} +#pragma dont_inline reset + +static void Callback() +{ + Prepared = TRUE; +} + +inline void ReadApploader(DVDCommandBlock *dvdCmd, void *addr, u32 offset, u32 numBytes) +{ + /* Not sure if this inline is correct - might need to call other inlines */ + while (Prepared == FALSE) { } + DVDReadAbsAsyncForBS(dvdCmd, addr, numBytes, offset + 0x2440, NULL); + + while (TRUE) { + switch (dvdCmd->state) { + case 0: + break; + case 1: + default: + continue; + case -1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + __OSDoHotReset(UNK_817FFFFC); + continue; + } + break; + } +} + +void __OSReboot(u32 resetCode, u32 bootDol) +{ + OSContext exceptionContext; + DVDCommandBlock dvdCmd; + DVDCommandBlock dvdCmd2; + u32 numBytes; + u32 offset; + + OSDisableInterrupts(); + + UNK_817FFFFC = 0; + UNK_817FFFF8 = 0; + OS_REBOOT_BOOL = TRUE; + BOOT_REGION_START = SaveStart; + BOOT_REGION_END = SaveEnd; + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + DVDInit(); + DVDSetAutoInvalidation(TRUE); + + __DVDPrepareResetAsync(Callback); + + if (!DVDCheckDisk()) { + __OSDoHotReset(UNK_817FFFFC); + } + + __OSMaskInterrupts(0xffffffe0); + __OSUnmaskInterrupts(0x400); + + OSEnableInterrupts(); + + offset = 0; + numBytes = 32; + ReadApploader(&dvdCmd, (void *)&Header, offset, numBytes); + + offset = Header.size + 0x20; + numBytes = OSRoundUp32B(Header.rebootSize); + ReadApploader(&dvdCmd2, OS_BOOTROM_ADDR, offset, numBytes); + + ICInvalidateRange(OS_BOOTROM_ADDR, numBytes); + Run(OS_BOOTROM_ADDR); +} diff --git a/src/dolphin/os/OSReset.c b/src/dolphin/os/OSReset.c new file mode 100644 index 00000000..c4ee2c9b --- /dev/null +++ b/src/dolphin/os/OSReset.c @@ -0,0 +1,203 @@ +#include +#include +#include +#include +#include + +#include "string.h" + +volatile u8 DAT_800030e2 : 0x800030e2; +typedef struct Unk { + u8 pad[0x24]; + u32 resetCode; +} Unk; +volatile Unk DAT_cc003000 : 0xcc003000; + +typedef struct Unk2 { + u16 _0; + u16 _2; +} Unk2; + +volatile Unk2 DAT_cc002000 : 0xcc002000; + +typedef struct OSResetQueue { + OSResetFunctionInfo *first; + OSResetFunctionInfo *last; +} OSResetQueue; + +OSResetQueue ResetFunctionQueue; + +void OSRegisterResetFunction(OSResetFunctionInfo *func) +{ + OSResetFunctionInfo *tmp; + OSResetFunctionInfo *iter; + + for (iter = ResetFunctionQueue.first; iter && iter->priority <= func->priority; iter = iter->next) + ; + + if (iter == NULL) { + tmp = ResetFunctionQueue.last; + if (tmp == NULL) { + ResetFunctionQueue.first = func; + } + else { + tmp->next = func; + } + func->prev = tmp; + func->next = NULL; + ResetFunctionQueue.last = func; + return; + } + + func->next = iter; + tmp = iter->prev; + iter->prev = func; + func->prev = tmp; + if (tmp == NULL) { + ResetFunctionQueue.first = func; + return; + } + tmp->next = func; +} + +BOOL __OSCallResetFunctions(u32 arg0) +{ + OSResetFunctionInfo *iter; + s32 retCode = 0; + + for (iter = ResetFunctionQueue.first; iter != NULL; iter = iter->next) { + retCode |= !iter->func(arg0); + } + retCode |= !__OSSyncSram(); + if (retCode) { + return 0; + } + return 1; +} + +asm void Reset(register s32 resetCode) +{ + // clang-format off + nofralloc + b lbl_8038315C +lbl_80383140: + mfspr r8, HID0 + ori r8, r8, 8 + mtspr HID0, r8 + isync + sync + nop + b lbl_80383160 +lbl_8038315C: + b lbl_8038317C +lbl_80383160: + mftb r5, 268 +lbl_80383164: + mftb r6, 268 + subf r7, r5, r6 + cmplwi r7, 0x1124 + blt lbl_80383164 + nop + b lbl_80383180 +lbl_8038317C: + b lbl_8038319C +lbl_80383180: + lis r8, 0xCC003000@h + ori r8, r8, 0xCC003000@l + li r4, 3 + stw r4, 0x24(r8) + stw r3, 0x24(r8) + nop + b lbl_803831A0 +lbl_8038319C: + b lbl_803831A8 +lbl_803831A0: + nop + b lbl_803831A0 +lbl_803831A8: + b lbl_80383140 + // clang-format on +} + +OSThreadQueue __OSActiveThreadQueue : (OS_BASE_CACHED | 0x00DC); + +static void KillThreads(void) +{ + OSThread *thread; + OSThread *next; + + for (thread = __OSActiveThreadQueue.head; thread; thread = next) { + next = thread->linkActive.next; + switch (thread->state) { + case 1: + case 4: + OSCancelThread(thread); + break; + default: + break; + } + } +} + +void __OSDoHotReset(s32 arg0) +{ + OSDisableInterrupts(); + __VIRegs[1] = 0; + ICFlashInvalidate(); + Reset(arg0 * 8); +} + +void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) +{ + BOOL rc; + BOOL disableRecalibration; + u32 unk[3]; + OSDisableScheduler(); + __OSStopAudioSystem(); + + if (reset == OS_RESET_SHUTDOWN) { + disableRecalibration = __PADDisableRecalibration(TRUE); + } + + while (!__OSCallResetFunctions(FALSE)) + ; + + if (reset == OS_RESET_HOTRESET && forceMenu) { + OSSram *sram; + + sram = __OSLockSram(); + sram->flags |= 0x40; + __OSUnlockSram(TRUE); + + while (!__OSSyncSram()) + ; + } + OSDisableInterrupts(); + __OSCallResetFunctions(TRUE); + LCDisable(); + if (reset == OS_RESET_HOTRESET) { + __OSDoHotReset(resetCode); + } + else if (reset == OS_RESET_RESTART) { + KillThreads(); + OSEnableScheduler(); + __OSReboot(resetCode, forceMenu); + } + KillThreads(); + memset(OSPhysicalToCached(0x40), 0, 0xcc - 0x40); + memset(OSPhysicalToCached(0xd4), 0, 0xe8 - 0xd4); + memset(OSPhysicalToCached(0xf4), 0, 0xf8 - 0xf4); + memset(OSPhysicalToCached(0x3000), 0, 0xc0); + memset(OSPhysicalToCached(0x30c8), 0, 0xd4 - 0xc8); + memset(OSPhysicalToCached(0x30e2), 0, 1); + + __PADDisableRecalibration(disableRecalibration); +} + +u32 OSGetResetCode(void) +{ + if (DAT_800030e2 != 0) { + return 0x80000000; + } + return ((DAT_cc003000.resetCode & ~7) >> 3); +} diff --git a/src/dolphin/os/OSResetSW.c b/src/dolphin/os/OSResetSW.c new file mode 100644 index 00000000..59e70494 --- /dev/null +++ b/src/dolphin/os/OSResetSW.c @@ -0,0 +1,89 @@ +#include + +extern OSTime __OSGetSystemTime(); + +u8 GameChoice : (OS_BASE_CACHED | 0x30E3); + +vu32 __PIRegs[12] : 0xCC003000; + +extern OSTime __OSStartTime; + +static OSResetCallback ResetCallback; +static BOOL Down; +static BOOL LastState; +static OSTime HoldUp; +static OSTime HoldDown; + +void __OSResetSWInterruptHandler(__OSInterrupt interrupt, OSContext* context) { + OSResetCallback callback; + + HoldDown = __OSGetSystemTime(); + while (__OSGetSystemTime() - HoldDown < OSMicrosecondsToTicks(100) && + !(__PIRegs[0] & 0x00010000)) { + ; + } + if (!(__PIRegs[0] & 0x00010000)) { + LastState = Down = TRUE; + __OSMaskInterrupts(OS_INTERRUPTMASK_PI_RSW); + if (ResetCallback) { + callback = ResetCallback; + ResetCallback = NULL; + callback(); + } + } + __PIRegs[0] = 2; +} + +BOOL OSGetResetButtonState(void) { + BOOL enabled; + BOOL state; + u32 reg; + OSTime now; + + enabled = OSDisableInterrupts(); + + now = __OSGetSystemTime(); + + reg = __PIRegs[0]; + if (!(reg & 0x00010000)) { + if (!Down) { + Down = TRUE; + state = HoldUp ? TRUE : FALSE; + HoldDown = now; + } else { + state = (HoldUp || (OSMicrosecondsToTicks(100) < now - HoldDown)) ? TRUE : FALSE; + } + } else if (Down) { + Down = FALSE; + state = LastState; + if (state) { + HoldUp = now; + } else { + HoldUp = 0; + } + } else if (HoldUp && (now - HoldUp < OSMillisecondsToTicks(40))) { + state = TRUE; + } else { + state = FALSE; + HoldUp = 0; + } + + LastState = state; + + if (GameChoice & 0x3f) { + OSTime fire = (GameChoice & 0x3f) * 60; + fire = __OSStartTime + OSSecondsToTicks(fire); + if (fire < now) { + now -= fire; + now = OSTicksToSeconds(now) / 2; + if ((now & 1) == 0) { + state = TRUE; + } else { + state = FALSE; + } + } + } + + OSRestoreInterrupts(enabled); + return state; +} diff --git a/src/dolphin/os/OSRtc.c b/src/dolphin/os/OSRtc.c new file mode 100644 index 00000000..e3d2da41 --- /dev/null +++ b/src/dolphin/os/OSRtc.c @@ -0,0 +1,363 @@ +#include +#include +#include + +#define RTC_CMD_READ 0x20000000 +#define RTC_CMD_WRITE 0xa0000000 + +#define RTC_SRAM_ADDR 0x00000100 +#define RTC_SRAM_SIZE 64 + +#define RTC_CHAN 0 +#define RTC_DEV 1 +#define RTC_FREQ 3 // EXI_FREQ_8M + +typedef struct SramControlBlock { + u8 sram[RTC_SRAM_SIZE]; + u32 offset; + BOOL enabled; + BOOL locked; + BOOL sync; + void (*callback)(void); +} SramControlBlock; + +static SramControlBlock Scb ATTRIBUTE_ALIGN(32); + +static BOOL GetRTC(u32 *rtc) +{ + BOOL err; + u32 cmd; + + if (!EXILock(RTC_CHAN, RTC_DEV, 0)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + cmd = RTC_CMD_READ; + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIImm(RTC_CHAN, &cmd, 4, 0, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + *rtc = cmd; + + return !err; +} + +BOOL __OSGetRTC(u32 *rtc) +{ + BOOL err; + u32 t0; + u32 t1; + int i; + + for (i = 0; i < 16; i++) { + err = FALSE; + err |= !GetRTC(&t0); + err |= !GetRTC(&t1); + if (err) { + break; + } + if (t0 == t1) { + *rtc = t0; + return TRUE; + } + } + return FALSE; +} + +BOOL __OSSetRTC(u32 rtc) +{ + BOOL err; + u32 cmd; + + if (!EXILock(RTC_CHAN, RTC_DEV, 0)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + cmd = RTC_CMD_WRITE; + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIImm(RTC_CHAN, &rtc, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + return !err; +} + +static BOOL ReadSram(void *buffer) +{ + BOOL err; + u32 cmd; + + DCInvalidateRange(buffer, RTC_SRAM_SIZE); + + if (!EXILock(RTC_CHAN, RTC_DEV, 0)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + cmd = RTC_CMD_READ | RTC_SRAM_ADDR; + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDma(RTC_CHAN, buffer, RTC_SRAM_SIZE, 0, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + return !err; +} + +BOOL WriteSram(void *buffer, u32 offset, u32 size); +static void WriteSramCallback(s32 chan, OSContext *context) +{ + Scb.sync = WriteSram(Scb.sram + Scb.offset, Scb.offset, RTC_SRAM_SIZE - Scb.offset); + if (Scb.sync) { + Scb.offset = RTC_SRAM_SIZE; + } +} + +BOOL WriteSram(void *buffer, u32 offset, u32 size) +{ + BOOL err; + u32 cmd; + + if (!EXILock(RTC_CHAN, RTC_DEV, WriteSramCallback)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + offset <<= 6; + cmd = RTC_CMD_WRITE | RTC_SRAM_ADDR + offset; + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIImmEx(RTC_CHAN, buffer, (s32)size, 1); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + return !err; +} + +void __OSInitSram() +{ + Scb.locked = Scb.enabled = FALSE; + Scb.sync = ReadSram(Scb.sram); + Scb.offset = RTC_SRAM_SIZE; +} + +static void *LockSram(u32 offset) +{ + BOOL enabled; + enabled = OSDisableInterrupts(); + + if (Scb.locked != FALSE) { + OSRestoreInterrupts(enabled); + return NULL; + } + + Scb.enabled = enabled; + Scb.locked = TRUE; + + return Scb.sram + offset; +} + +OSSram *__OSLockSram() +{ + return LockSram(0); +} + +OSSramEx *__OSLockSramEx() +{ + return LockSram(sizeof(OSSram)); +} + +static BOOL UnlockSram(BOOL commit, u32 offset) +{ + u16 *p; + + if (commit) { + if (offset == 0) { + OSSram *sram = (OSSram *)Scb.sram; + + if (2u < (sram->flags & 3)) { + sram->flags &= ~3; + } + + sram->checkSum = sram->checkSumInv = 0; + for (p = (u16 *)&sram->counterBias; p < (u16 *)(Scb.sram + sizeof(OSSram)); p++) { + sram->checkSum += *p; + sram->checkSumInv += ~*p; + } + } + + if (offset < Scb.offset) { + Scb.offset = offset; + } + + Scb.sync = WriteSram(Scb.sram + Scb.offset, Scb.offset, RTC_SRAM_SIZE - Scb.offset); + if (Scb.sync) { + Scb.offset = RTC_SRAM_SIZE; + } + } + Scb.locked = FALSE; + OSRestoreInterrupts(Scb.enabled); + return Scb.sync; +} + +BOOL __OSUnlockSram(BOOL commit) +{ + return UnlockSram(commit, 0); +} + +BOOL __OSUnlockSramEx(BOOL commit) +{ + return UnlockSram(commit, sizeof(OSSram)); +} + +BOOL __OSSyncSram() +{ + return Scb.sync; +} + +BOOL __OSReadROM(void *buffer, s32 length, s32 offset) +{ + BOOL err; + u32 cmd; + + DCInvalidateRange(buffer, (u32)length); + + if (!EXILock(RTC_CHAN, RTC_DEV, 0)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + cmd = (u32)(offset << 6); + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDma(RTC_CHAN, buffer, length, 0, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + return !err; +} + +inline OSSram *__OSLockSramHACK() +{ + return LockSram(0); +} +u32 OSGetSoundMode() +{ + OSSram *sram; + u32 mode; + + sram = __OSLockSramHACK(); + mode = (sram->flags & 0x4) ? OS_SOUND_MODE_STEREO : OS_SOUND_MODE_MONO; + __OSUnlockSram(FALSE); + return mode; +} + +void OSSetSoundMode(u32 mode) +{ + OSSram *sram; + mode <<= 2; + mode &= 4; + + sram = __OSLockSramHACK(); + if (mode == (sram->flags & 4)) { + __OSUnlockSram(FALSE); + return; + } + + sram->flags &= ~4; + sram->flags |= mode; + __OSUnlockSram(TRUE); +} + +u32 OSGetProgressiveMode() +{ + OSSram *sram; + u32 mode; + + sram = __OSLockSramHACK(); + mode = (sram->flags & 0x80) >> 7; + __OSUnlockSram(FALSE); + return mode; +} + +void OSSetProgressiveMode(u32 mode) +{ + OSSram *sram; + mode <<= 7; + mode &= 0x80; + + sram = __OSLockSramHACK(); + if (mode == (sram->flags & 0x80)) { + __OSUnlockSram(FALSE); + return; + } + + sram->flags &= ~0x80; + sram->flags |= mode; + __OSUnlockSram(TRUE); +} + +u8 OSGetLanguage() +{ + OSSram *sram; + u8 language; + + sram = __OSLockSramHACK(); + language = sram->language; + __OSUnlockSram(FALSE); + return language; +} + +u16 OSGetWirelessID(s32 channel) +{ + OSSramEx *sram; + u16 id; + + sram = __OSLockSramEx(); + id = sram->wirelessPadID[channel]; + __OSUnlockSramEx(FALSE); + return id; +} + +void OSSetWirelessID(s32 channel, u16 id) +{ + OSSramEx *sram; + + sram = __OSLockSramEx(); + if (sram->wirelessPadID[channel] != id) { + sram->wirelessPadID[channel] = id; + __OSUnlockSramEx(TRUE); + return; + } + + __OSUnlockSramEx(FALSE); +} diff --git a/src/dolphin/os/OSStopwatch.c b/src/dolphin/os/OSStopwatch.c new file mode 100644 index 00000000..80e7dbdd --- /dev/null +++ b/src/dolphin/os/OSStopwatch.c @@ -0,0 +1,61 @@ +#include +#include + +void OSInitStopwatch(struct OSStopwatch *sw, char *name) +{ + sw->name = name; + sw->total = 0; + sw->hits = 0; + sw->min = 0x00000000FFFFFFFF; + sw->max = 0; +} + +void OSStartStopwatch(struct OSStopwatch *sw) +{ + sw->running = 1; + sw->last = OSGetTime(); +} + +void OSStopStopwatch(struct OSStopwatch *sw) +{ + long long interval; + + if (sw->running != 0) { + interval = OSGetTime() - sw->last; + sw->total += interval; + sw->running = 0; + sw->hits++; + if (sw->max < interval) { + sw->max = interval; + } + if (interval < sw->min) { + sw->min = interval; + } + } +} + +long long OSCheckStopwatch(struct OSStopwatch *sw) +{ + long long currTotal; + + currTotal = sw->total; + if (sw->running != 0) { + currTotal += OSGetTime() - sw->last; + } + return currTotal; +} + +void OSResetStopwatch(struct OSStopwatch *sw) +{ + OSInitStopwatch(sw, sw->name); +} + +void OSDumpStopwatch(struct OSStopwatch *sw) +{ + OSReport("Stopwatch [%s] :\n", sw->name); + OSReport("\tTotal= %lld us\n", OSTicksToMicroseconds(sw->total)); + OSReport("\tHits = %d \n", sw->hits); + OSReport("\tMin = %lld us\n", OSTicksToMicroseconds(sw->min)); + OSReport("\tMax = %lld us\n", OSTicksToMicroseconds(sw->max)); + OSReport("\tMean = %lld us\n", OSTicksToMicroseconds(sw->total / sw->hits)); +} diff --git a/src/dolphin/os/OSSync.c b/src/dolphin/os/OSSync.c new file mode 100644 index 00000000..b5aeccf7 --- /dev/null +++ b/src/dolphin/os/OSSync.c @@ -0,0 +1,29 @@ +#include "string.h" +#include "dolphin/PPCArch.h" +#include "dolphin/os.h" + +void __OSSystemCallVectorStart(); +void __OSSystemCallVectorEnd(); +static asm void SystemCallVector() { + nofralloc +entry __OSSystemCallVectorStart + mfspr r9, HID0 + ori r10, r9, 8 + mtspr HID0, r10 + isync + sync + mtspr HID0, r9 + + rfi + +entry __OSSystemCallVectorEnd + nop +} + +void __OSInitSystemCall() { + void* addr = OSPhysicalToCached(0x00C00); + memcpy(addr, __OSSystemCallVectorStart, (size_t)__OSSystemCallVectorEnd - (size_t)__OSSystemCallVectorStart); + DCFlushRangeNoSync(addr, 0x100); + __sync(); + ICInvalidateRange(addr, 0x100); +} diff --git a/src/dolphin/os/OSThread.c b/src/dolphin/os/OSThread.c new file mode 100644 index 00000000..c9f4348d --- /dev/null +++ b/src/dolphin/os/OSThread.c @@ -0,0 +1,552 @@ +#include + +static vu32 RunQueueBits; +static volatile BOOL RunQueueHint; +static vs32 Reschedule; + +static OSThreadQueue RunQueue[32]; +static OSThread IdleThread; +static OSThread DefaultThread; +static OSContext IdleContext; +static void DefaultSwitchThreadCallback(OSThread *from, OSThread *to); +static OSSwitchThreadCallback SwitchThreadCallback = DefaultSwitchThreadCallback; + +OSThread *__OSCurrentThread : OS_BASE_CACHED + 0x00E4; +OSThreadQueue __OSActiveThreadQueue : OS_BASE_CACHED + 0x00DC; +volatile OSContext __OSCurrentContext : OS_BASE_CACHED + 0x00D4; +volatile OSContext *__OSFPUContext : OS_BASE_CACHED + 0x00D8; + +static void DefaultSwitchThreadCallback(OSThread *from, OSThread *to) { } + +extern u8 _stack_addr[]; +extern u8 _stack_end[]; + +#define AddTail(queue, thread, link) \ + do { \ + OSThread *prev; \ + \ + prev = (queue)->tail; \ + if (prev == NULL) \ + (queue)->head = (thread); \ + else \ + prev->link.next = (thread); \ + (thread)->link.prev = prev; \ + (thread)->link.next = NULL; \ + (queue)->tail = (thread); \ + } while (0) + +#define AddPrio(queue, thread, link) \ + do { \ + OSThread *prev, *next; \ + \ + for (next = (queue)->head; next && next->priority <= thread->priority; next = next->link.next) \ + ; \ + if (next == NULL) \ + AddTail(queue, thread, link); \ + else { \ + (thread)->link.next = next; \ + prev = next->link.prev; \ + next->link.prev = (thread); \ + (thread)->link.prev = prev; \ + if (prev == NULL) \ + (queue)->head = (thread); \ + else \ + prev->link.next = (thread); \ + } \ + } while (0) + +#define RemoveItem(queue, thread, link) \ + do { \ + OSThread *next, *prev; \ + next = (thread)->link.next; \ + prev = (thread)->link.prev; \ + if (next == NULL) \ + (queue)->tail = prev; \ + else \ + next->link.prev = prev; \ + if (prev == NULL) \ + (queue)->head = next; \ + else \ + prev->link.next = next; \ + } while (0) + +#define RemoveHead(queue, thread, link) \ + do { \ + OSThread *__next; \ + (thread) = (queue)->head; \ + __next = (thread)->link.next; \ + if (__next == NULL) \ + (queue)->tail = NULL; \ + else \ + __next->link.prev = NULL; \ + (queue)->head = __next; \ + } while (0) + +static inline void OSInitMutexQueue(OSMutexQueue *queue) +{ + queue->head = queue->tail = NULL; +} + +static inline void OSSetCurrentThread(OSThread *thread) +{ + __OSCurrentThread = thread; +} + +void __OSThreadInit() +{ + OSThread *thread = &DefaultThread; + int prio; + + thread->state = OS_THREAD_STATE_RUNNING; + thread->attr = OS_THREAD_ATTR_DETACH; + thread->priority = thread->base = 16; + thread->suspend = 0; + thread->val = (void *)-1; + thread->mutex = NULL; + OSInitThreadQueue(&thread->queueJoin); + OSInitMutexQueue(&thread->queueMutex); + + __OSFPUContext = &thread->context; + + OSClearContext(&thread->context); + OSSetCurrentContext(&thread->context); + thread->stackBase = (void *)_stack_addr; + thread->stackEnd = (void *)_stack_end; + *(thread->stackEnd) = OS_THREAD_STACK_MAGIC; + + OSSetCurrentThread(thread); + RunQueueBits = 0; + RunQueueHint = FALSE; + for (prio = OS_PRIORITY_MIN; prio <= OS_PRIORITY_MAX; ++prio) { + OSInitThreadQueue(&RunQueue[prio]); + } + + OSInitThreadQueue(&__OSActiveThreadQueue); + AddTail(&__OSActiveThreadQueue, thread, linkActive); + OSClearContext(&IdleContext); + Reschedule = 0; +} + +void OSInitThreadQueue(OSThreadQueue *queue) +{ + queue->head = queue->tail = NULL; +} + +OSThread *OSGetCurrentThread() +{ + return __OSCurrentThread; +} + +s32 OSDisableScheduler() +{ + BOOL enabled; + s32 count; + + enabled = OSDisableInterrupts(); + count = Reschedule++; + OSRestoreInterrupts(enabled); + return count; +} + +s32 OSEnableScheduler() +{ + BOOL enabled; + s32 count; + + enabled = OSDisableInterrupts(); + count = Reschedule--; + OSRestoreInterrupts(enabled); + return count; +} + +static void SetRun(OSThread *thread) +{ + thread->queue = &RunQueue[thread->priority]; + AddTail(thread->queue, thread, link); + RunQueueBits |= 1u << (OS_PRIORITY_MAX - thread->priority); + RunQueueHint = TRUE; +} +#pragma dont_inline on +static void UnsetRun(OSThread *thread) +{ + OSThreadQueue *queue; + queue = thread->queue; + RemoveItem(queue, thread, link); + if (queue->head == 0) + RunQueueBits &= ~(1u << (OS_PRIORITY_MAX - thread->priority)); + thread->queue = NULL; +} +#pragma dont_inline reset + +OSPriority __OSGetEffectivePriority(OSThread *thread) +{ + OSPriority priority; + OSMutex *mutex; + OSThread *blocked; + + priority = thread->base; + for (mutex = thread->queueMutex.head; mutex; mutex = mutex->link.next) { + blocked = mutex->queue.head; + if (blocked && blocked->priority < priority) { + priority = blocked->priority; + } + } + return priority; +} + +static OSThread *SetEffectivePriority(OSThread *thread, OSPriority priority) +{ + switch (thread->state) { + case OS_THREAD_STATE_READY: + UnsetRun(thread); + thread->priority = priority; + SetRun(thread); + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->priority = priority; + AddPrio(thread->queue, thread, link); + if (thread->mutex) { + return thread->mutex->thread; + } + break; + case OS_THREAD_STATE_RUNNING: + RunQueueHint = TRUE; + thread->priority = priority; + break; + } + return NULL; +} + +static void UpdatePriority(OSThread *thread) +{ + OSPriority priority; + + do { + if (0 < thread->suspend) { + break; + } + priority = __OSGetEffectivePriority(thread); + if (thread->priority == priority) { + break; + } + thread = SetEffectivePriority(thread, priority); + } while (thread); +} + +static void __OSSwitchThread(OSThread *nextThread) +{ + OSSetCurrentThread(nextThread); + OSSetCurrentContext(&nextThread->context); + OSLoadContext(&nextThread->context); +} + +static OSThread *SelectThread(BOOL yield) +{ + OSContext *currentContext; + OSThread *currentThread; + OSThread *nextThread; + OSPriority priority; + OSThreadQueue *queue; + + if (0 < Reschedule) { + return 0; + } + + currentContext = OSGetCurrentContext(); + currentThread = OSGetCurrentThread(); + if (currentContext != ¤tThread->context) { + return 0; + } + + if (currentThread) { + if (currentThread->state == OS_THREAD_STATE_RUNNING) { + if (!yield) { + priority = __cntlzw(RunQueueBits); + if (currentThread->priority <= priority) { + return 0; + } + } + currentThread->state = OS_THREAD_STATE_READY; + SetRun(currentThread); + } + + if (!(currentThread->context.state & OS_CONTEXT_STATE_EXC) && OSSaveContext(¤tThread->context)) { + return 0; + } + } + + OSSetCurrentThread(NULL); + if (RunQueueBits == 0) { + OSSetCurrentContext(&IdleContext); + do { + OSEnableInterrupts(); + while (RunQueueBits == 0) + ; + OSDisableInterrupts(); + } while (RunQueueBits == 0); + + OSClearContext(&IdleContext); + } + + RunQueueHint = FALSE; + + priority = __cntlzw(RunQueueBits); + queue = &RunQueue[priority]; + RemoveHead(queue, nextThread, link); + if (queue->head == 0) { + RunQueueBits &= ~(1u << (OS_PRIORITY_MAX - priority)); + } + nextThread->queue = NULL; + nextThread->state = OS_THREAD_STATE_RUNNING; + __OSSwitchThread(nextThread); + return nextThread; +} + +void __OSReschedule() +{ + if (!RunQueueHint) { + return; + } + + SelectThread(FALSE); +} + +void OSYieldThread(void) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + SelectThread(TRUE); + OSRestoreInterrupts(enabled); +} + +int OSCreateThread(struct OSThread * thread, void * (* func)(void *), void * param, void * stack, unsigned long stackSize, long priority, unsigned short attr) { + int enabled; + unsigned long sp; + + // why check this for an assert just to check it again right after? + if ((priority < 0) || (priority > 0x1F)) { + return 0; + } + + thread->state = 1; + thread->attr = attr & 1U; + thread->base = priority; + thread->priority = priority; + thread->suspend = 1; + thread->val = (void*)-1; + thread->mutex = 0; + OSInitThreadQueue(&thread->queueJoin); + OSInitThreadQueue((void*)&thread->queueMutex); // why + sp = (u32)stack; + sp &= ~7; + sp -= 8; + ((u32*)sp)[0] = 0; + ((u32*)sp)[1] = 0; + OSInitContext(&thread->context, (u32)func, sp); + thread->context.lr = (unsigned long)&OSExitThread; + thread->context.gpr[3] = (unsigned long)param; + thread->stackBase = stack; + thread->stackEnd = (void*)((unsigned int)stack - stackSize); + *thread->stackEnd = 0xDEADBABE; + enabled = OSDisableInterrupts(); + + AddTail(&__OSActiveThreadQueue, thread, linkActive); + + OSRestoreInterrupts(enabled); + return 1; +} + +void OSExitThread(void *val) +{ + int enabled = OSDisableInterrupts(); + struct OSThread *currentThread = OSGetCurrentThread(); + + OSClearContext(¤tThread->context); + if (currentThread->attr & 1) { + RemoveItem(&__OSActiveThreadQueue, currentThread, linkActive); + currentThread->state = 0; + } + else { + currentThread->state = 8; + currentThread->val = val; + } + __OSUnlockAllMutex(currentThread); + OSWakeupThread(¤tThread->queueJoin); + RunQueueHint = 1; + if (RunQueueHint != 0) { + SelectThread(0); + } + OSRestoreInterrupts(enabled); +} + +void OSCancelThread(OSThread *thread) +{ + BOOL enabled; + + enabled = OSDisableInterrupts(); + + switch (thread->state) { + case OS_THREAD_STATE_READY: + if (!(0 < thread->suspend)) { + UnsetRun(thread); + } + break; + case OS_THREAD_STATE_RUNNING: + RunQueueHint = TRUE; + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->queue = NULL; + if (!(0 < thread->suspend) && thread->mutex) { + UpdatePriority(thread->mutex->thread); + } + break; + default: + OSRestoreInterrupts(enabled); + return; + } + + OSClearContext(&thread->context); + if (thread->attr & OS_THREAD_ATTR_DETACH) { + RemoveItem(&__OSActiveThreadQueue, thread, linkActive); + thread->state = 0; + } + else { + thread->state = OS_THREAD_STATE_MORIBUND; + } + + __OSUnlockAllMutex(thread); + + OSWakeupThread(&thread->queueJoin); + + __OSReschedule(); + OSRestoreInterrupts(enabled); + + return; +} + +s32 OSResumeThread(OSThread *thread) +{ + BOOL enabled; + s32 suspendCount; + + enabled = OSDisableInterrupts(); + suspendCount = thread->suspend--; + if (thread->suspend < 0) { + thread->suspend = 0; + } + else if (thread->suspend == 0) { + switch (thread->state) { + case OS_THREAD_STATE_READY: + thread->priority = __OSGetEffectivePriority(thread); + SetRun(thread); + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->priority = __OSGetEffectivePriority(thread); + AddPrio(thread->queue, thread, link); + if (thread->mutex) { + UpdatePriority(thread->mutex->thread); + } + break; + } + __OSReschedule(); + } + OSRestoreInterrupts(enabled); + return suspendCount; +} + +s32 OSSuspendThread(OSThread *thread) +{ + BOOL enabled; + s32 suspendCount; + + enabled = OSDisableInterrupts(); + suspendCount = thread->suspend++; + if (suspendCount == 0) { + switch (thread->state) { + case OS_THREAD_STATE_RUNNING: + RunQueueHint = TRUE; + thread->state = OS_THREAD_STATE_READY; + break; + case OS_THREAD_STATE_READY: + UnsetRun(thread); + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->priority = 32; + AddTail(thread->queue, thread, link); + if (thread->mutex) { + UpdatePriority(thread->mutex->thread); + } + break; + } + + __OSReschedule(); + } + OSRestoreInterrupts(enabled); + return suspendCount; +} + +void OSSleepThread(OSThreadQueue *queue) +{ + BOOL enabled; + OSThread *currentThread; + + enabled = OSDisableInterrupts(); + currentThread = OSGetCurrentThread(); + + currentThread->state = OS_THREAD_STATE_WAITING; + currentThread->queue = queue; + AddPrio(queue, currentThread, link); + RunQueueHint = TRUE; + __OSReschedule(); + OSRestoreInterrupts(enabled); +} + +void OSWakeupThread(OSThreadQueue *queue) +{ + BOOL enabled; + OSThread *thread; + + enabled = OSDisableInterrupts(); + while (queue->head) { + RemoveHead(queue, thread, link); + thread->state = OS_THREAD_STATE_READY; + if (!(0 < thread->suspend)) { + SetRun(thread); + } + } + __OSReschedule(); + OSRestoreInterrupts(enabled); +} + +void OSClearStack(u8 val) +{ + register u32 sp; + register u32 *p; + register u32 pattern; + + pattern = ((u32)val << 24) | ((u32)val << 16) | ((u32)val << 8) | (u32)val; + sp = OSGetStackPointer(); + for (p = __OSCurrentThread->stackEnd + 1; p < (u32 *)sp; ++p) { + *p = pattern; + } +} + +struct OSThread *OSSetIdleFunction(void (*idleFunction)(void *), void *param, void *stack, unsigned long stackSize) +{ + if (idleFunction) { + if (IdleThread.state == 0) { + OSCreateThread(&IdleThread, (void *)idleFunction, param, stack, stackSize, 0x1F, 1); + OSResumeThread(&IdleThread); + return &IdleThread; + } + } + else if (IdleThread.state != 0) { + OSCancelThread(&IdleThread); + } + return NULL; +} diff --git a/src/dolphin/os/OSTime.c b/src/dolphin/os/OSTime.c new file mode 100644 index 00000000..604e45c6 --- /dev/null +++ b/src/dolphin/os/OSTime.c @@ -0,0 +1,146 @@ +#include + +#define OS_TIME_MONTH_MAX 12 +#define OS_TIME_WEEK_DAY_MAX 7 +#define OS_TIME_YEAR_DAY_MAX 365 + +// End of each month in standard year +static s32 YearDays[OS_TIME_MONTH_MAX] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; +// End of each month in leap year +static s32 LeapYearDays[OS_TIME_MONTH_MAX] = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }; + +asm OSTime OSGetTime(void) +{ + // clang-format off + nofralloc +@0 + mftbu r3 + mftb r4 + + // Check for possible carry from TBL to TBU + mftbu r5 + cmpw r3, r5 + bne @0 + + blr + // clang-format on +} + +asm OSTick OSGetTick(void) { + // clang-format off + nofralloc + + mftb r3 + blr + // clang-format on +} + +#define OS_SYSTEMTIME_BASE 0x30D8 + +OSTime __OSGetSystemTime(void) +{ + BOOL enabled; + OSTime *timeAdjustAddr = (OSTime *)(OS_BASE_CACHED + OS_SYSTEMTIME_BASE); + OSTime result; + + enabled = OSDisableInterrupts(); + result = *timeAdjustAddr + OSGetTime(); + OSRestoreInterrupts(enabled); + + return result; +} + +OSTime __OSTimeToSystemTime(OSTime time) +{ + BOOL enabled; + OSTime *timeAdjustAddr = (OSTime *)(OS_BASE_CACHED + OS_SYSTEMTIME_BASE); + OSTime result; + + enabled = OSDisableInterrupts(); + result = *timeAdjustAddr + time; + OSRestoreInterrupts(enabled); + + return result; +} + +static BOOL IsLeapYear(s32 year) +{ + return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); +} + +static s32 GetYearDays(s32 year, s32 mon) +{ + return (IsLeapYear(year) ? LeapYearDays : YearDays)[mon]; +} + +static s32 GetLeapDays(s32 year) +{ + if (year < 1) { + return 0; + } + return (year + 3) / 4 - (year - 1) / 100 + (year - 1) / 400; +} + +static void GetDates(s32 days, OSCalendarTime *cal) +{ + s32 year; + s32 totalDays; + s32 *p_days; + s32 month; + cal->wday = (days + 6) % OS_TIME_WEEK_DAY_MAX; + + for (year = days / OS_TIME_YEAR_DAY_MAX; days < (totalDays = year * OS_TIME_YEAR_DAY_MAX + GetLeapDays(year));) { + year--; + } + + days -= totalDays; + cal->year = year; + cal->yday = days; + + p_days = IsLeapYear(year) ? LeapYearDays : YearDays; + month = OS_TIME_MONTH_MAX; + while (days < p_days[--month]) { + ; + } + cal->mon = month; + cal->mday = days - p_days[month] + 1; +} + +#define BIAS (2000 * 365 + (2000 + 3) / 4 - (2000 - 1) / 100 + (2000 - 1) / 400) + +#pragma push +#pragma dont_inline on +void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime *td) +{ + int days; + int secs; + OSTime d; + + d = ticks % OSSecondsToTicks(1); + if (d < 0) { + d += OSSecondsToTicks(1); + } + td->usec = (int)(OSTicksToMicroseconds(d) % 1000); + td->msec = (int)(OSTicksToMilliseconds(d) % 1000); + + ticks -= d; + days = (int)(OSTicksToSeconds(ticks) / 86400 + BIAS); + secs = (int)(OSTicksToSeconds(ticks) % 86400); + if (secs < 0) { + days -= 1; + secs += 24 * 60 * 60; + } + + GetDates(days, td); + + td->hour = secs / 60 / 60; + td->min = (secs / 60) % 60; + td->sec = secs % 60; +} +#pragma dont_inline reset + +OSTime OSCalendarTimeToTicks(OSCalendarTime *time) +{ + ; + ; +} diff --git a/src/dolphin/os/__ppc_eabi_init.c b/src/dolphin/os/__ppc_eabi_init.c new file mode 100644 index 00000000..4b7c8c6e --- /dev/null +++ b/src/dolphin/os/__ppc_eabi_init.c @@ -0,0 +1,76 @@ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +void __OSPSInit(); +void __OSCacheInit(); + +asm void __init_hardware(void) +{ + // clang-format off + nofralloc + mfmsr r0 + ori r0, r0, 0x2000 + mtmsr r0 + + mflr r31 + bl __OSPSInit + bl __OSCacheInit + mtlr r31 + blr + // clang-format on +} + +asm void __flush_cache(register void *address, register unsigned int size) +{ + // clang-format off + nofralloc + lis r5, ~0 + ori r5, r5, ~14 + and r5, r5, r3 + subf r3, r5, r3 + add r4, r4, r3 + +loop: + dcbst r0, r5 + sync + icbi r0, r5 + addic r5, r5, 8 + subic. r4, r4, 8 + bge loop + isync + blr + // clang-format on +} + +void __init_user() +{ + __init_cpp(); +} + +typedef void (*voidfunctionptr)(void); // pointer to function returning void +__declspec(section ".init") extern voidfunctionptr _ctors[]; +__declspec(section ".init") extern voidfunctionptr _dtors[]; + +void __init_cpp(void) +{ + voidfunctionptr *constructor; + + /* + * call static initializers + */ + for (constructor = _ctors; *constructor; constructor++) { + (*constructor)(); + } +} + +void _ExitProcess(void) +{ + PPCHalt(); +} + +#ifdef __cplusplus +} +#endif diff --git a/src/dolphin/os/__start.c b/src/dolphin/os/__start.c new file mode 100644 index 00000000..475b3b4c --- /dev/null +++ b/src/dolphin/os/__start.c @@ -0,0 +1,161 @@ +#include +#include "__ppc_eabi_linker.h" + +void __check_pad3(void) { + if ((Pad3Button & 0x0eef) == 0x0eef) { + OSResetSystem(OS_RESET_RESTART, 0, FALSE); + } + return; +} + +__declspec(weak) asm void __start(void) { + // clang-format off + nofralloc + bl __init_registers + bl __init_hardware + li r0, -1 + stwu r1, -8(r1) + stw r0, 4(r1) + stw r0, 0(r1) + bl __init_data + li r0, 0 + lis r6, EXCEPTIONMASK_ADDR@ha + addi r6, r6, EXCEPTIONMASK_ADDR@l + stw r0, 0(r6) + lis r6, BOOTINFO2_ADDR@ha + addi r6, r6, BOOTINFO2_ADDR@l + lwz r6, 0(r6) + +_check_TRK: + cmplwi r6, 0 + beq _load_lomem_debug_flag + lwz r7, OS_BI2_DEBUGFLAG_OFFSET(r6) + b _check_debug_flag + +_load_lomem_debug_flag: + lis r5, ARENAHI_ADDR@ha + addi r5, r5, ARENAHI_ADDR@l + lwz r5, 0(r5) + cmplwi r5, 0 + beq _goto_main + lis r7, DEBUGFLAG_ADDR@ha + addi r7, r7, DEBUGFLAG_ADDR@l + lwz r7, 0(r7) + +_check_debug_flag: + li r5, 0 + cmplwi r7, 2 + beq _goto_inittrk + cmplwi r7, 3 + bne _goto_main + li r5, 1 + +_goto_inittrk: + lis r6, InitMetroTRK@ha + addi r6, r6, InitMetroTRK@l + mtlr r6 + blrl + +_goto_main: + lis r6, BOOTINFO2_ADDR@ha + addi r6, r6, BOOTINFO2_ADDR@l + lwz r5, 0(r6) + cmplwi r5, 0 + beq+ _no_args + lwz r6, 8(r5) + cmplwi r6, 0 + beq+ _no_args + add r6, r5, r6 + lwz r14, 0(r6) + cmplwi r14, 0 + beq _no_args + addi r15, r6, 4 + mtctr r14 + +_loop: + addi r6, r6, 4 + lwz r7, 0(r6) + add r7, r7, r5 + stw r7, 0(r6) + bdnz _loop + lis r5, ARENAHI_ADDR@ha + addi r5, r5, ARENAHI_ADDR@l + rlwinm r7, r15, 0, 0, 0x1a + stw r7, 0(r5) + b _end_of_parseargs + +_no_args: + li r14, 0 + li r15, 0 + +_end_of_parseargs: + bl DBInit + bl OSInit + lis r4, DVD_DEVICECODE_ADDR@ha + addi r4, r4, DVD_DEVICECODE_ADDR@l + lhz r3, 0(r4) + andi. r5, r3, 0x8000 + beq _check_pad3 + andi. r3, r3, 0x7fff + cmplwi r3, 1 + bne _goto_skip_init_bba + +_check_pad3: + bl __check_pad3 + +_goto_skip_init_bba: + bl __init_user + mr r3, r14 + mr r4, r15 + bl main + b exit + // clang-format on +} + +asm static void __init_registers(void) { + // clang-format off + nofralloc + lis r1, _stack_addr@h + ori r1, r1, _stack_addr@l + lis r2, _SDA2_BASE_@h + ori r2, r2, _SDA2_BASE_@l + lis r13, _SDA_BASE_@h + ori r13, r13, _SDA_BASE_@l + blr + // clang-format on +} + +inline static void __copy_rom_section(void* dst, const void* src, unsigned long size) { + if (size && (dst != src)) { + memcpy(dst, src, size); + __flush_cache(dst, size); + } +} + +inline static void __init_bss_section(void* dst, unsigned long size) { + if (size) { + memset(dst, 0, size); + } +} + +#pragma scheduling off +void __init_data(void) { + __rom_copy_info* dci; + __bss_init_info* bii; + + dci = _rom_copy_info; + while (TRUE) { + if (dci->size == 0) + break; + __copy_rom_section(dci->addr, dci->rom, dci->size); + dci++; + } + + bii = _bss_init_info; + while (TRUE) { + if (bii->size == 0) + break; + __init_bss_section(bii->addr, bii->size); + bii++; + } +} diff --git a/src/dolphin/pad/Pad.c b/src/dolphin/pad/Pad.c new file mode 100644 index 00000000..1852cf0d --- /dev/null +++ b/src/dolphin/pad/Pad.c @@ -0,0 +1,783 @@ +#include +#include + +u8 UnkVal : (OS_BASE_CACHED | 0x30e3); +u16 __OSWirelessPadFixMode : (OS_BASE_CACHED | 0x30E0); + +static void PADTypeAndStatusCallback(s32 chan, u32 type); +static void PADOriginCallback(s32 chan, u32 error, OSContext *context); +static void PADProbeCallback(s32 chan, u32 error, OSContext *context); +static void SPEC0_MakeStatus(s32 chan, PADStatus *status, u32 data[2]); +static void SPEC1_MakeStatus(s32 chan, PADStatus *status, u32 data[2]); +static void SPEC2_MakeStatus(s32 chan, PADStatus *status, u32 data[2]); +static void PADTypeAndStatusCallback(s32 chan, u32 type); + +static void PADOriginCallback(s32 chan, u32 error, OSContext *context); +static void PADProbeCallback(s32 chan, u32 error, OSContext *context); + +static void SPEC0_MakeStatus(s32 chan, PADStatus *status, u32 data[2]); +static void SPEC1_MakeStatus(s32 chan, PADStatus *status, u32 data[2]); +static void SPEC2_MakeStatus(s32 chan, PADStatus *status, u32 data[2]); + +static BOOL Initialized; + +static u32 EnabledBits; +static u32 ResettingBits; +static s32 ResettingChan = 32; +static u32 RecalibrateBits; +static u32 WaitingBits; +static u32 CheckingBits; +static u32 PendingBits; + +static u32 XPatchBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; + +static u32 AnalogMode = 0x00000300u; + +u32 __PADSpec; +static u32 Spec = 5; +static void (*MakeStatus)(s32, PADStatus *, u32[2]) = SPEC2_MakeStatus; + +static u32 Type[SI_MAX_CHAN]; +static PADStatus Origin[SI_MAX_CHAN]; + +static u32 CmdReadOrigin = 0x41 << 24; +static u32 CmdCalibrate = 0x42 << 24; +static u32 CmdProbeDevice[SI_MAX_CHAN]; + +static BOOL OnReset(BOOL final); + +static OSResetFunctionInfo ResetFunctionInfo = { OnReset, 127 }; + +static void (*SamplingCallback)(void); + +static void PADEnable(s32 chan) +{ + u32 cmd; + u32 chanBit; + u32 data[2]; + + chanBit = PAD_CHAN0_BIT >> chan; + EnabledBits |= chanBit; + SIGetResponse(chan, data); + cmd = (0x40 << 16) | AnalogMode; + SISetCommand(chan, cmd); + SIEnablePolling(EnabledBits); +} + +static void PADDisable(s32 chan) +{ + BOOL enabled; + u32 chanBit; + + enabled = OSDisableInterrupts(); + + chanBit = PAD_CHAN0_BIT >> chan; + SIDisablePolling(chanBit); + EnabledBits &= ~chanBit; + WaitingBits &= ~chanBit; + CheckingBits &= ~chanBit; + PendingBits &= ~chanBit; + OSSetWirelessID(chan, 0); + + OSRestoreInterrupts(enabled); +} + +static void DoReset(void) +{ + u32 chanBit; + + ResettingChan = __cntlzw(ResettingBits); + if (ResettingChan == 32) { + return; + } + + chanBit = PAD_CHAN0_BIT >> ResettingChan; + ResettingBits &= ~chanBit; + + memset(&Origin[ResettingChan], 0, sizeof(PADStatus)); + SIGetTypeAsync(ResettingChan, PADTypeAndStatusCallback); +} + +static void UpdateOrigin(s32 chan) +{ + PADStatus *origin; + u32 chanBit = PAD_CHAN0_BIT >> chan; + + origin = &Origin[chan]; + switch (AnalogMode & 0x00000700u) { + case 0x00000000u: + case 0x00000500u: + case 0x00000600u: + case 0x00000700u: + origin->triggerL &= ~15; + origin->triggerR &= ~15; + origin->analogA &= ~15; + origin->analogB &= ~15; + break; + case 0x00000100u: + origin->substickX &= ~15; + origin->substickY &= ~15; + origin->analogA &= ~15; + origin->analogB &= ~15; + break; + case 0x00000200u: + origin->substickX &= ~15; + origin->substickY &= ~15; + origin->triggerL &= ~15; + origin->triggerR &= ~15; + break; + case 0x00000300u: + break; + case 0x00000400u: + break; + } + + origin->stickX -= 128; + origin->stickY -= 128; + origin->substickX -= 128; + origin->substickY -= 128; + + if (XPatchBits & chanBit) { + if (64 < origin->stickX && (SIGetType(chan) & 0xffff0000) == SI_GC_CONTROLLER) { + origin->stickX = 0; + } + } +} + +static void PADOriginCallback(s32 chan, u32 error, OSContext *context) +{ + if (!(error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + UpdateOrigin(ResettingChan); + PADEnable(ResettingChan); + } + DoReset(); +} + +static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext *context) +{ + + if (!(EnabledBits & (PAD_CHAN0_BIT >> chan))) { + return; + } + + if (!(error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + UpdateOrigin(chan); + } + + if (error & SI_ERROR_NO_RESPONSE) { + PADDisable(chan); + } +} + +static void PADProbeCallback(s32 chan, u32 error, OSContext *context) +{ + if (!(error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + PADEnable(ResettingChan); + WaitingBits |= PAD_CHAN0_BIT >> ResettingChan; + } + DoReset(); +} + +static void PADTypeAndStatusCallback(s32 chan, u32 type) +{ + u32 chanBit; + u32 recalibrate; + BOOL rc = TRUE; + u32 error; + chanBit = PAD_CHAN0_BIT >> ResettingChan; + error = type & 0xFF; + recalibrate = RecalibrateBits & chanBit; + RecalibrateBits &= ~chanBit; + + if (error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) { + DoReset(); + return; + } + + type &= ~0xFF; + + Type[ResettingChan] = type; + + if ((type & SI_TYPE_MASK) != SI_TYPE_GC || !(type & SI_GC_STANDARD)) { + DoReset(); + return; + } + + if (Spec < PAD_SPEC_2) { + PADEnable(ResettingChan); + DoReset(); + return; + } + + if (!(type & SI_GC_WIRELESS) || (type & SI_WIRELESS_IR)) { + if (recalibrate) { + rc = SITransfer(ResettingChan, &CmdCalibrate, 3, &Origin[ResettingChan], 10, PADOriginCallback, 0); + } + else { + rc = SITransfer(ResettingChan, &CmdReadOrigin, 1, &Origin[ResettingChan], 10, PADOriginCallback, 0); + } + } + else if ((type & SI_WIRELESS_FIX_ID) && (type & SI_WIRELESS_CONT_MASK) == SI_WIRELESS_CONT && !(type & SI_WIRELESS_LITE)) { + if (type & SI_WIRELESS_RECEIVED) { + rc = SITransfer(ResettingChan, &CmdReadOrigin, 1, &Origin[ResettingChan], 10, PADOriginCallback, 0); + } + else { + rc = SITransfer(ResettingChan, &CmdProbeDevice[ResettingChan], 3, &Origin[ResettingChan], 8, PADProbeCallback, 0); + } + } + if (!rc) { + PendingBits |= chanBit; + DoReset(); + return; + } +} + +static void PADReceiveCheckCallback(s32 chan, u32 type) +{ + u32 error; + u32 chanBit; + + chanBit = PAD_CHAN0_BIT >> chan; + if (!(EnabledBits & chanBit)) { + return; + } + + error = type & 0xFF; + type &= ~0xFF; + + WaitingBits &= ~chanBit; + CheckingBits &= ~chanBit; + + if (!(error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) && (type & SI_GC_WIRELESS) + && (type & SI_WIRELESS_FIX_ID) && (type & SI_WIRELESS_RECEIVED) && !(type & SI_WIRELESS_IR) + && (type & SI_WIRELESS_CONT_MASK) == SI_WIRELESS_CONT && !(type & SI_WIRELESS_LITE)) { + SITransfer(chan, &CmdReadOrigin, 1, &Origin[chan], 10, PADOriginUpdateCallback, 0); + } + else { + PADDisable(chan); + } +} + +BOOL PADReset(u32 mask) +{ + BOOL enabled; + u32 diableBits; + + enabled = OSDisableInterrupts(); + + mask |= PendingBits; + PendingBits = 0; + mask &= ~(WaitingBits | CheckingBits); + ResettingBits |= mask; + diableBits = ResettingBits & EnabledBits; + EnabledBits &= ~mask; + + if (Spec == PAD_SPEC_4) { + RecalibrateBits |= mask; + } + + SIDisablePolling(diableBits); + + if (ResettingChan == 32) { + DoReset(); + } + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL PADRecalibrate(u32 mask) +{ + BOOL enabled; + u32 disableBits; + + enabled = OSDisableInterrupts(); + + mask |= PendingBits; + PendingBits = 0; + mask &= ~(WaitingBits | CheckingBits); + ResettingBits |= mask; + disableBits = ResettingBits & EnabledBits; + EnabledBits &= ~mask; + + if (!(UnkVal & 0x40)) { + RecalibrateBits |= mask; + } + + SIDisablePolling(disableBits); + if (ResettingChan == 32) { + DoReset(); + } + OSRestoreInterrupts(enabled); + return TRUE; +} + +BOOL PADInit() +{ + s32 chan; + if (Initialized) { + return TRUE; + } + + if (__PADSpec) { + PADSetSpec(__PADSpec); + } + + Initialized = TRUE; + + if (__PADFixBits != 0) { + OSTime time = OSGetTime(); + __OSWirelessPadFixMode = (u16)((((time)&0xffff) + ((time >> 16) & 0xffff) + ((time >> 32) & 0xffff) + ((time >> 48) & 0xffff)) & 0x3fffu); + RecalibrateBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; + } + + for (chan = 0; chan < SI_MAX_CHAN; ++chan) { + CmdProbeDevice[chan] = (0x4D << 24) | (chan << 22) | ((__OSWirelessPadFixMode & 0x3fffu) << 8); + } + + SIRefreshSamplingRate(); + OSRegisterResetFunction(&ResetFunctionInfo); + + return PADReset(PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT); +} + +#define offsetof(type, memb) ((u32) & ((type *)0)->memb) + +u32 PADRead(PADStatus *status) +{ + BOOL enabled; + s32 chan; + u32 data[2]; + u32 chanBit; + u32 sr; + int chanShift; + u32 motor; + + enabled = OSDisableInterrupts(); + + motor = 0; + for (chan = 0; chan < SI_MAX_CHAN; chan++, status++) { + chanBit = PAD_CHAN0_BIT >> chan; + chanShift = 8 * (SI_MAX_CHAN - 1 - chan); + + if (PendingBits & chanBit) { + PADReset(0); + status->err = PAD_ERR_NOT_READY; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + if ((ResettingBits & chanBit) || ResettingChan == chan) { + status->err = PAD_ERR_NOT_READY; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + if (!(EnabledBits & chanBit)) { + status->err = (s8)PAD_ERR_NO_CONTROLLER; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + if (SIIsChanBusy(chan)) { + status->err = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + sr = SIGetStatus(chan); + if (sr & SI_ERROR_NO_RESPONSE) { + SIGetResponse(chan, data); + + if (WaitingBits & chanBit) { + status->err = (s8)PAD_ERR_NONE; + memset(status, 0, offsetof(PADStatus, err)); + + if (!(CheckingBits & chanBit)) { + CheckingBits |= chanBit; + SIGetTypeAsync(chan, PADReceiveCheckCallback); + } + continue; + } + + PADDisable(chan); + + status->err = (s8)PAD_ERR_NO_CONTROLLER; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + if (!(SIGetType(chan) & SI_GC_NOMOTOR)) { + motor |= chanBit; + } + + if (!SIGetResponse(chan, data)) { + status->err = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + if (data[0] & 0x80000000) { + status->err = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, err)); + continue; + } + + MakeStatus(chan, status, data); + + // Check and clear PAD_ORIGIN bit + if (status->button & 0x2000) { + status->err = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, err)); + + // Get origin. It is okay if the following transfer fails + // since the PAD_ORIGIN bit remains until the read origin + // command complete. + SITransfer(chan, &CmdReadOrigin, 1, &Origin[chan], 10, PADOriginUpdateCallback, 0); + continue; + } + + status->err = PAD_ERR_NONE; + + // Clear PAD_INTERFERE bit + status->button &= ~0x0080; + } + + OSRestoreInterrupts(enabled); + return motor; +} + +void PADControlAllMotors(const u32 *commandArray) +{ + BOOL enabled; + int chan; + u32 command; + BOOL commit; + u32 chanBit; + + enabled = OSDisableInterrupts(); + commit = FALSE; + for (chan = 0; chan < SI_MAX_CHAN; chan++, commandArray++) { + chanBit = PAD_CHAN0_BIT >> chan; + if ((EnabledBits & chanBit) && !(SIGetType(chan) & SI_GC_NOMOTOR)) { + command = *commandArray; + if (Spec < PAD_SPEC_2 && command == PAD_MOTOR_STOP_HARD) { + command = PAD_MOTOR_STOP; + } + + SISetCommand(chan, (0x40 << 16) | AnalogMode | (command & (0x00000001 | 0x00000002))); + commit = TRUE; + } + } + if (commit) { + SITransferCommands(); + } + OSRestoreInterrupts(enabled); +} + +void PADControlMotor(s32 chan, u32 command) +{ + BOOL enabled; + u32 chanBit; + + enabled = OSDisableInterrupts(); + chanBit = PAD_CHAN0_BIT >> chan; + if ((EnabledBits & chanBit) && !(SIGetType(chan) & SI_GC_NOMOTOR)) { + if (Spec < PAD_SPEC_2 && command == PAD_MOTOR_STOP_HARD) { + command = PAD_MOTOR_STOP; + } + + SISetCommand(chan, (0x40 << 16) | AnalogMode | (command & (0x00000001 | 0x00000002))); + SITransferCommands(); + } + OSRestoreInterrupts(enabled); +} + +void PADSetSpec(u32 spec) +{ + __PADSpec = 0; + switch (spec) { + case PAD_SPEC_0: + MakeStatus = SPEC0_MakeStatus; + break; + case PAD_SPEC_1: + MakeStatus = SPEC1_MakeStatus; + break; + case PAD_SPEC_2: + case PAD_SPEC_3: + case PAD_SPEC_4: + case PAD_SPEC_5: + MakeStatus = SPEC2_MakeStatus; + break; + } + Spec = spec; +} + +u32 PADGetSpec(void) +{ + return Spec; +} + +static void SPEC0_MakeStatus(s32 chan, PADStatus *status, u32 data[2]) +{ + status->button = 0; + status->button |= ((data[0] >> 16) & 0x0008) ? PAD_BUTTON_A : 0; + status->button |= ((data[0] >> 16) & 0x0020) ? PAD_BUTTON_B : 0; + status->button |= ((data[0] >> 16) & 0x0100) ? PAD_BUTTON_X : 0; + status->button |= ((data[0] >> 16) & 0x0001) ? PAD_BUTTON_Y : 0; + status->button |= ((data[0] >> 16) & 0x0010) ? PAD_BUTTON_START : 0; + status->stickX = (s8)(data[1] >> 16); + status->stickY = (s8)(data[1] >> 24); + status->substickX = (s8)(data[1]); + status->substickY = (s8)(data[1] >> 8); + status->triggerL = (u8)(data[0] >> 8); + status->triggerR = (u8)data[0]; + status->analogA = 0; + status->analogB = 0; + if (170 <= status->triggerL) { + status->button |= PAD_TRIGGER_L; + } + if (170 <= status->triggerR) { + status->button |= PAD_TRIGGER_R; + } + status->stickX -= 128; + status->stickY -= 128; + status->substickX -= 128; + status->substickY -= 128; +} + +static void SPEC1_MakeStatus(s32 chan, PADStatus *status, u32 data[2]) +{ + + status->button = 0; + status->button |= ((data[0] >> 16) & 0x0080) ? PAD_BUTTON_A : 0; + status->button |= ((data[0] >> 16) & 0x0100) ? PAD_BUTTON_B : 0; + status->button |= ((data[0] >> 16) & 0x0020) ? PAD_BUTTON_X : 0; + status->button |= ((data[0] >> 16) & 0x0010) ? PAD_BUTTON_Y : 0; + status->button |= ((data[0] >> 16) & 0x0200) ? PAD_BUTTON_START : 0; + + status->stickX = (s8)(data[1] >> 16); + status->stickY = (s8)(data[1] >> 24); + status->substickX = (s8)(data[1]); + status->substickY = (s8)(data[1] >> 8); + + status->triggerL = (u8)(data[0] >> 8); + status->triggerR = (u8)data[0]; + + status->analogA = 0; + status->analogB = 0; + + if (170 <= status->triggerL) { + status->button |= PAD_TRIGGER_L; + } + if (170 <= status->triggerR) { + status->button |= PAD_TRIGGER_R; + } + + status->stickX -= 128; + status->stickY -= 128; + status->substickX -= 128; + status->substickY -= 128; +} + +static s8 ClampS8(s8 var, s8 org) +{ + if (0 < org) { + s8 min = (s8)(-128 + org); + if (var < min) { + var = min; + } + } + else if (org < 0) { + s8 max = (s8)(127 + org); + if (max < var) { + var = max; + } + } + return var -= org; +} + +static u8 ClampU8(u8 var, u8 org) +{ + if (var < org) { + var = org; + } + return var -= org; +} + +#define PAD_ALL \ + (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_DOWN | PAD_BUTTON_UP | PAD_TRIGGER_Z | PAD_TRIGGER_R | PAD_TRIGGER_L | PAD_BUTTON_A \ + | PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_MENU | 0x2000 | 0x0080) + +static void SPEC2_MakeStatus(s32 chan, PADStatus *status, u32 data[2]) +{ + PADStatus *origin; + + status->button = (u16)((data[0] >> 16) & PAD_ALL); + status->stickX = (s8)(data[0] >> 8); + status->stickY = (s8)(data[0]); + + switch (AnalogMode & 0x00000700) { + case 0x00000000: + case 0x00000500: + case 0x00000600: + case 0x00000700: + status->substickX = (s8)(data[1] >> 24); + status->substickY = (s8)(data[1] >> 16); + status->triggerL = (u8)(((data[1] >> 12) & 0x0f) << 4); + status->triggerR = (u8)(((data[1] >> 8) & 0x0f) << 4); + status->analogA = (u8)(((data[1] >> 4) & 0x0f) << 4); + status->analogB = (u8)(((data[1] >> 0) & 0x0f) << 4); + break; + case 0x00000100: + status->substickX = (s8)(((data[1] >> 28) & 0x0f) << 4); + status->substickY = (s8)(((data[1] >> 24) & 0x0f) << 4); + status->triggerL = (u8)(data[1] >> 16); + status->triggerR = (u8)(data[1] >> 8); + status->analogA = (u8)(((data[1] >> 4) & 0x0f) << 4); + status->analogB = (u8)(((data[1] >> 0) & 0x0f) << 4); + break; + case 0x00000200: + status->substickX = (s8)(((data[1] >> 28) & 0x0f) << 4); + status->substickY = (s8)(((data[1] >> 24) & 0x0f) << 4); + status->triggerL = (u8)(((data[1] >> 20) & 0x0f) << 4); + status->triggerR = (u8)(((data[1] >> 16) & 0x0f) << 4); + status->analogA = (u8)(data[1] >> 8); + status->analogB = (u8)(data[1] >> 0); + break; + case 0x00000300: + status->substickX = (s8)(data[1] >> 24); + status->substickY = (s8)(data[1] >> 16); + status->triggerL = (u8)(data[1] >> 8); + status->triggerR = (u8)(data[1] >> 0); + status->analogA = 0; + status->analogB = 0; + break; + case 0x00000400: + status->substickX = (s8)(data[1] >> 24); + status->substickY = (s8)(data[1] >> 16); + status->triggerL = 0; + status->triggerR = 0; + status->analogA = (u8)(data[1] >> 8); + status->analogB = (u8)(data[1] >> 0); + break; + } + + status->stickX -= 128; + status->stickY -= 128; + status->substickX -= 128; + status->substickY -= 128; + + origin = &Origin[chan]; + status->stickX = ClampS8(status->stickX, origin->stickX); + status->stickY = ClampS8(status->stickY, origin->stickY); + status->substickX = ClampS8(status->substickX, origin->substickX); + status->substickY = ClampS8(status->substickY, origin->substickY); + status->triggerL = ClampU8(status->triggerL, origin->triggerL); + status->triggerR = ClampU8(status->triggerR, origin->triggerR); +} + +BOOL PADGetType(s32 chan, u32 *type) +{ + u32 chanBit; + + *type = SIGetType(chan); + chanBit = PAD_CHAN0_BIT >> chan; + if ((ResettingBits & chanBit) || ResettingChan == chan || !(EnabledBits & chanBit)) { + return FALSE; + } + return TRUE; +} + +BOOL PADSync(void) +{ + return ResettingBits == 0 && ResettingChan == 32 && !SIBusy(); +} + +void PADSetAnalogMode(u32 mode) +{ + BOOL enabled; + u32 mask; + + enabled = OSDisableInterrupts(); + AnalogMode = mode << 8; + mask = EnabledBits; + + EnabledBits &= ~mask; + WaitingBits &= ~mask; + CheckingBits &= ~mask; + + SIDisablePolling(mask); + OSRestoreInterrupts(enabled); +} + +static BOOL OnReset(BOOL f) +{ + static BOOL recalibrated = FALSE; + BOOL sync; + + if (SamplingCallback) { + PADSetSamplingCallback(NULL); + } + + if (!f) { + sync = PADSync(); + if (!recalibrated && sync) { + recalibrated = PADRecalibrate(PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT); + return FALSE; + } + return sync; + } + else { + recalibrated = FALSE; + } + + return TRUE; +} + +void __PADDisableXPatch(void) +{ + XPatchBits = 0; +} + +static void SamplingHandler(__OSInterrupt interrupt, OSContext *context) +{ + OSContext exceptionContext; + + if (SamplingCallback) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + SamplingCallback(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } +} + +PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback callback) +{ + PADSamplingCallback prev; + + prev = SamplingCallback; + SamplingCallback = callback; + if (callback) { + SIRegisterPollingHandler(SamplingHandler); + } + else { + SIUnregisterPollingHandler(SamplingHandler); + } + return prev; +} + +BOOL __PADDisableRecalibration(BOOL disable) +{ + BOOL enabled; + BOOL prev; + + enabled = OSDisableInterrupts(); + prev = (UnkVal & 0x40) ? TRUE : FALSE; + UnkVal &= (u8)~0x40; + if (disable) { + UnkVal |= 0x40; + } + OSRestoreInterrupts(enabled); + return prev; +} diff --git a/src/dolphin/pad/Padclamp.c b/src/dolphin/pad/Padclamp.c new file mode 100644 index 00000000..bdc9af39 --- /dev/null +++ b/src/dolphin/pad/Padclamp.c @@ -0,0 +1,136 @@ +#include + +#include + +typedef struct PADClampRegion { + u8 minTrigger; + u8 maxTrigger; + s8 minStick; + s8 maxStick; + s8 xyStick; + s8 minSubstick; + s8 maxSubstick; + s8 xySubstick; +} PADClampRegion; + +static PADClampRegion ClampRegion = { + // Triggers + 30, + 180, + + // Left stick + 15, + 72, + 40, + + // Right stick + 15, + 59, + 31, +}; + +static void ClampStick(s8 *px, s8 *py, s8 max, s8 xy, s8 min) +{ + int x = *px; + int y = *py; + int signX; + int signY; + int d; + + if (0 <= x) { + signX = 1; + } + else { + signX = -1; + x = -x; + } + + if (0 <= y) { + signY = 1; + } + else { + signY = -1; + y = -y; + } + + if (x <= min) { + x = 0; + } + else { + x -= min; + } + if (y <= min) { + y = 0; + } + else { + y -= min; + } + + if (x == 0 && y == 0) { + *px = *py = 0; + return; + } + + if (xy * y <= xy * x) { + d = xy * x + (max - xy) * y; + if (xy * max < d) { + x = (s8)(xy * max * x / d); + y = (s8)(xy * max * y / d); + } + } + else { + d = xy * y + (max - xy) * x; + if (xy * max < d) { + x = (s8)(xy * max * x / d); + y = (s8)(xy * max * y / d); + } + } + + *px = (s8)(signX * x); + *py = (s8)(signY * y); +} + +static void ClampTrigger(u8 *trigger, u8 min, u8 max) +{ + if (*trigger <= min) { + *trigger = 0; + } + else { + if (max < *trigger) { + *trigger = max; + } + *trigger -= min; + } +} + +void PADClamp(PADStatus* status) +{ + int i; + for (i = 0; i < PAD_CHANMAX; i++, status++) { + if (status->err != PAD_ERR_NONE) { + continue; + } + + ClampStick(&status->stickX, &status->stickY, ClampRegion.maxStick, + ClampRegion.xyStick, ClampRegion.minStick); + ClampStick(&status->substickX, &status->substickY, + ClampRegion.maxSubstick, ClampRegion.xySubstick, + ClampRegion.minSubstick); + if (status->triggerL <= ClampRegion.minTrigger) { + status->triggerL = 0; + } else { + if (ClampRegion.maxTrigger < status->triggerL) { + status->triggerL = ClampRegion.maxTrigger; + } + status->triggerL -= ClampRegion.minTrigger; + } + if (status->triggerR <= ClampRegion.minTrigger) { + status->triggerR = 0; + } else { + if (ClampRegion.maxTrigger < status->triggerR) { + status->triggerR = ClampRegion.maxTrigger; + } + status->triggerR -= ClampRegion.minTrigger; + } + } +} diff --git a/src/dolphin/si/SIBios.c b/src/dolphin/si/SIBios.c new file mode 100644 index 00000000..0d34277a --- /dev/null +++ b/src/dolphin/si/SIBios.c @@ -0,0 +1,817 @@ +#include +#include +#include +#include + + +extern OSTime __OSGetSystemTime(); + +typedef struct SIControl { + s32 chan; + u32 poll; + u32 inputBytes; + void *input; + SICallback callback; +} SIControl; + +static SIControl Si = { + -1, + 0, + 0, + NULL, + NULL, +}; + +typedef struct SIComm_s { + u32 tcint : 1; + u32 tcintmsk : 1; + u32 comerr : 1; + u32 rdstint : 1; + u32 rdstintmsk : 1; + u32 pad0 : 4; + u32 outlngth : 7; + u32 pad1 : 1; + u32 inlngth : 7; + u32 pad2 : 5; + u32 channel : 2; + u32 tstart : 1; +} SIComm_s; + +typedef union SIComm_u { + u32 val; + SIComm_s f; +} SIComm_u; + +static SIPacket Packet[SI_MAX_CHAN]; +static OSAlarm Alarm[SI_MAX_CHAN]; +static u32 Type[SI_MAX_CHAN] = { + SI_ERROR_NO_RESPONSE, + SI_ERROR_NO_RESPONSE, + SI_ERROR_NO_RESPONSE, + SI_ERROR_NO_RESPONSE, +}; + +static OSTime TypeTime[SI_MAX_CHAN]; +static OSTime XferTime[SI_MAX_CHAN]; + +static SITypeAndStatusCallback TypeCallback[SI_MAX_CHAN][4]; +static __OSInterruptHandler RDSTHandler[4]; + +u32 __PADFixBits; + +static BOOL __SITransfer(s32 chan, void *output, u32 outputBytes, void *input, u32 inputBytes, SICallback callback); + +static BOOL InputBufferValid[SI_MAX_CHAN]; +static u32 InputBuffer[SI_MAX_CHAN][2]; +static vu32 InputBufferVcount[SI_MAX_CHAN]; + +static BOOL SIGetResponseRaw(s32 chan); +static void GetTypeCallback(s32 chan, u32 error, OSContext *context); + +BOOL SIBusy() +{ + return Si.chan != -1 ? TRUE : FALSE; +} + +BOOL SIIsChanBusy(s32 chan) +{ + return (Packet[chan].chan != -1 || Si.chan == chan); +} + +static void SIClearTCInterrupt() +{ + u32 reg; + + reg = __SIRegs[13]; + reg |= 0x80000000; + reg &= ~0x00000001; + __SIRegs[13] = reg; +} + +static u32 CompleteTransfer() +{ + u32 sr; + u32 i; + u32 rLen; + u8 *input; + + sr = __SIRegs[14]; + + SIClearTCInterrupt(); + + if (Si.chan != -1) { + XferTime[Si.chan] = __OSGetSystemTime(); + + input = Si.input; + + rLen = Si.inputBytes / 4; + for (i = 0; i < rLen; i++) { + *(u32 *)input = __SIRegs[32 + i]; + input += 4; + } + + rLen = Si.inputBytes & 3; + if (rLen) { + u32 temp = __SIRegs[32 + i]; + for (i = 0; i < rLen; i++) { + *input++ = (u8)((temp >> ((3 - i) * 8)) & 0xff); + } + } + + if (__SIRegs[13] & 0x20000000) { + sr >>= 8 * (3 - Si.chan); + sr &= 0xf; + + if ((sr & SI_ERROR_NO_RESPONSE) && !(Type[Si.chan] & SI_ERROR_BUSY)) { + Type[Si.chan] = SI_ERROR_NO_RESPONSE; + } + if (sr == 0) { + sr = SI_ERROR_COLLISION; + } + } + else { + TypeTime[Si.chan] = __OSGetSystemTime(); + sr = 0; + } + + Si.chan = -1; + } + return sr; +} + +static void SITransferNext(s32 chan) +{ + int i; + SIPacket *packet; + + for (i = 0; i < SI_MAX_CHAN; ++i) { + ++chan; + chan %= SI_MAX_CHAN; + packet = &Packet[chan]; + if (packet->chan != -1 && packet->fire <= __OSGetSystemTime()) { + if (__SITransfer(packet->chan, packet->output, packet->outputBytes, packet->input, packet->inputBytes, packet->callback)) { + OSCancelAlarm(&Alarm[chan]); + packet->chan = -1; + } + break; + } + } +} + +static void SIInterruptHandler(__OSInterrupt interrupt, OSContext *context) +{ + u32 reg; + + reg = __SIRegs[13]; + + if ((reg & 0xc0000000) == 0xc0000000) { + s32 chan; + u32 sr; + SICallback callback; + + chan = Si.chan; + sr = CompleteTransfer(); + callback = Si.callback; + Si.callback = 0; + + SITransferNext(chan); + + if (callback) { + callback(chan, sr, context); + } + + sr = __SIRegs[14]; + sr &= 0xf000000 >> (8 * chan); + __SIRegs[14] = sr; + + if (Type[chan] == SI_ERROR_BUSY && !SIIsChanBusy(chan)) { + static u32 cmdTypeAndStatus = 0 << 24; + SITransfer(chan, &cmdTypeAndStatus, 1, &Type[chan], 3, GetTypeCallback, OSMicrosecondsToTicks(65)); + } + } + + if ((reg & 0x18000000) == 0x18000000) { + + int i; + u32 vcount; + u32 x; + + vcount = VIGetCurrentLine() + 1; + x = (Si.poll & 0x03ff0000) >> 16; + + for (i = 0; i < SI_MAX_CHAN; ++i) { + if (SIGetResponseRaw(i)) { + InputBufferVcount[i] = vcount; + } + } + + for (i = 0; i < SI_MAX_CHAN; ++i) { + if (!(Si.poll & (SI_CHAN0_BIT >> (31 - 7 + i)))) { + continue; + } + if (InputBufferVcount[i] == 0 || InputBufferVcount[i] + (x / 2) < vcount) { + return; + } + } + + for (i = 0; i < SI_MAX_CHAN; ++i) { + InputBufferVcount[i] = 0; + } + + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i]) { + RDSTHandler[i](interrupt, context); + } + } + } +} + +static BOOL SIEnablePollingInterrupt(BOOL enable) +{ + BOOL enabled; + BOOL rc; + u32 reg; + int i; + + enabled = OSDisableInterrupts(); + reg = __SIRegs[13]; + rc = (reg & 0x08000000) ? TRUE : FALSE; + if (enable) { + reg |= 0x08000000; + for (i = 0; i < SI_MAX_CHAN; ++i) { + InputBufferVcount[i] = 0; + } + } + else { + reg &= ~0x08000000; + } + reg &= ~0x80000001; + __SIRegs[13] = reg; + OSRestoreInterrupts(enabled); + return rc; +} + +BOOL SIRegisterPollingHandler(__OSInterruptHandler handler) +{ + BOOL enabled; + int i; + + enabled = OSDisableInterrupts(); + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i] == handler) { + OSRestoreInterrupts(enabled); + return TRUE; + } + } + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i] == 0) { + RDSTHandler[i] = handler; + SIEnablePollingInterrupt(TRUE); + OSRestoreInterrupts(enabled); + return TRUE; + } + } + OSRestoreInterrupts(enabled); + return FALSE; +} + +BOOL SIUnregisterPollingHandler(__OSInterruptHandler handler) +{ + BOOL enabled; + int i; + + enabled = OSDisableInterrupts(); + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i] == handler) { + RDSTHandler[i] = 0; + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i]) { + break; + } + } + if (i == 4) { + SIEnablePollingInterrupt(FALSE); + } + OSRestoreInterrupts(enabled); + return TRUE; + break; + } + } + OSRestoreInterrupts(enabled); + return FALSE; +} + +void SIInit(void) +{ + Packet[0].chan = Packet[1].chan = Packet[2].chan = Packet[3].chan = -1; + + Si.poll = 0; + SISetSamplingRate(0); + + while (__SIRegs[13] & 1) + ; + + __SIRegs[13] = 0x80000000; + + __OSSetInterruptHandler(__OS_INTERRUPT_PI_SI, SIInterruptHandler); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_PI_SI); + + SIGetType(0); + SIGetType(1); + SIGetType(2); + SIGetType(3); +} + +#define ROUND(n, a) (((u32)(n) + (a)-1) & ~((a)-1)) + +static BOOL __SITransfer(s32 chan, void *output, u32 outputBytes, void *input, u32 inputBytes, SICallback callback) +{ + BOOL enabled; + u32 rLen; + u32 i; + u32 sr; + SIComm_u comcsr; + + enabled = OSDisableInterrupts(); + if (Si.chan != -1) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + sr = __SIRegs[14]; + sr &= (0xf000000) >> (8 * chan); + __SIRegs[14] = sr; + + Si.chan = chan; + Si.callback = callback; + Si.inputBytes = inputBytes; + Si.input = input; + + rLen = ROUND(outputBytes, 4) / 4; + for (i = 0; i < rLen; i++) { + __SIRegs[32 + i] = ((u32 *)output)[i]; + } + + comcsr.val = __SIRegs[13]; + comcsr.f.tcint = 1; + comcsr.f.tcintmsk = callback ? 1 : 0; + comcsr.f.outlngth = (outputBytes == SI_MAX_COMCSR_OUTLNGTH) ? 0 : outputBytes; + comcsr.f.inlngth = (inputBytes == SI_MAX_COMCSR_INLNGTH) ? 0 : inputBytes; + comcsr.f.channel = chan; + comcsr.f.tstart = 1; + __SIRegs[13] = comcsr.val; + + OSRestoreInterrupts(enabled); + + return TRUE; +} + +u32 SISync(void) +{ + BOOL enabled; + u32 sr; + + while (__SIRegs[13] & 1) + ; + + enabled = OSDisableInterrupts(); + sr = CompleteTransfer(); + + SITransferNext(SI_MAX_CHAN); + + OSRestoreInterrupts(enabled); + + return sr; +} + +u32 SIGetStatus(s32 chan) +{ + BOOL enabled; + u32 sr; + int chanShift; + + enabled = OSDisableInterrupts(); + sr = __SIRegs[14]; + chanShift = 8 * (SI_MAX_CHAN - 1 - chan); + sr >>= chanShift; + if (sr & SI_ERROR_NO_RESPONSE) { + if (!(Type[chan] & SI_ERROR_BUSY)) { + Type[chan] = SI_ERROR_NO_RESPONSE; + } + } + OSRestoreInterrupts(enabled); + return sr; +} + +void SISetCommand(s32 chan, u32 command) +{ + __SIRegs[3 * chan] = command; +} + +u32 SIGetCommand(s32 chan) +{ + return __SIRegs[3 * chan]; +} + +void SITransferCommands(void) +{ + __SIRegs[14] = 0x80000000; +} + +u32 SISetXY(u32 x, u32 y) +{ + u32 poll; + BOOL enabled; + + poll = x << 16; + poll |= y << 8; + + enabled = OSDisableInterrupts(); + Si.poll &= ~(0x03ff0000 | 0x0000ff00); + Si.poll |= poll; + poll = Si.poll; + __SIRegs[12] = poll; + OSRestoreInterrupts(enabled); + return poll; +} + +u32 SIEnablePolling(u32 poll) +{ + BOOL enabled; + u32 en; + + if (poll == 0) { + return Si.poll; + } + + enabled = OSDisableInterrupts(); + + poll >>= (31 - 7); + en = poll & 0xf0; + + poll &= (en >> 4) | 0x03fffff0; + + poll &= ~0x03ffff00; + + Si.poll &= ~(en >> 4); + + Si.poll |= poll; + + poll = Si.poll; + + SITransferCommands(); + + __SIRegs[12] = poll; + + OSRestoreInterrupts(enabled); + + return poll; +} + +u32 SIDisablePolling(u32 poll) +{ + BOOL enabled; + + if (poll == 0) { + return Si.poll; + } + + enabled = OSDisableInterrupts(); + + poll >>= (31 - 7); + poll &= 0xf0; + + poll = Si.poll & ~poll; + + __SIRegs[12] = poll; + Si.poll = poll; + + OSRestoreInterrupts(enabled); + return poll; +} + +static BOOL SIGetResponseRaw(s32 chan) +{ + u32 sr; + + sr = SIGetStatus(chan); + if (sr & SI_ERROR_RDST) { + InputBuffer[chan][0] = __SIRegs[3 * chan + 1]; + InputBuffer[chan][1] = __SIRegs[3 * chan + 2]; + InputBufferValid[chan] = TRUE; + return TRUE; + } + return FALSE; +} + +BOOL SIGetResponse(s32 chan, void *data) +{ + BOOL rc; + BOOL enabled; + + enabled = OSDisableInterrupts(); + SIGetResponseRaw(chan); + rc = InputBufferValid[chan]; + InputBufferValid[chan] = FALSE; + if (rc) { + ((u32 *)data)[0] = InputBuffer[chan][0]; + ((u32 *)data)[1] = InputBuffer[chan][1]; + } + OSRestoreInterrupts(enabled); + return rc; +} + +static void AlarmHandler(OSAlarm *alarm, OSContext *context) +{ +#pragma unused(context) + s32 chan; + SIPacket *packet; + + chan = alarm - Alarm; + packet = &Packet[chan]; + if (packet->chan != -1) { + if (__SITransfer(packet->chan, packet->output, packet->outputBytes, packet->input, packet->inputBytes, packet->callback)) { + packet->chan = -1; + } + } +} + +BOOL SITransfer(s32 chan, void *output, u32 outputBytes, void *input, u32 inputBytes, SICallback callback, OSTime delay) +{ + BOOL enabled; + SIPacket *packet = &Packet[chan]; + OSTime now; + OSTime fire; + + enabled = OSDisableInterrupts(); + if (packet->chan != -1 || Si.chan == chan) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + now = __OSGetSystemTime(); + if (delay == 0) { + fire = now; + } + else { + fire = XferTime[chan] + delay; + } + if (now < fire) { + delay = fire - now; + OSSetAlarm(&Alarm[chan], delay, AlarmHandler); + } + else if (__SITransfer(chan, output, outputBytes, input, inputBytes, callback)) { + OSRestoreInterrupts(enabled); + return TRUE; + } + + packet->chan = chan; + packet->output = output; + packet->outputBytes = outputBytes; + packet->input = input; + packet->inputBytes = inputBytes; + packet->callback = callback; + packet->fire = fire; + + OSRestoreInterrupts(enabled); + return TRUE; +} + +static void CallTypeAndStatusCallback(s32 chan, u32 type) +{ + SITypeAndStatusCallback callback; + int i; + + for (i = 0; i < 4; ++i) { + callback = TypeCallback[chan][i]; + if (callback) { + TypeCallback[chan][i] = 0; + callback(chan, type); + } + } +} + +static void GetTypeCallback(s32 chan, u32 error, OSContext *context) +{ + static u32 cmdFixDevice[SI_MAX_CHAN]; + u32 type; + u32 chanBit; + BOOL fix; + u32 id; + + Type[chan] &= ~SI_ERROR_BUSY; + Type[chan] |= error; + TypeTime[chan] = __OSGetSystemTime(); + + type = Type[chan]; + + chanBit = SI_CHAN0_BIT >> chan; + fix = (BOOL)(__PADFixBits & chanBit); + __PADFixBits &= ~chanBit; + + if ((error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) || (type & SI_TYPE_MASK) != SI_TYPE_DOLPHIN + || !(type & SI_GC_WIRELESS) || (type & SI_WIRELESS_IR)) { + OSSetWirelessID(chan, 0); + CallTypeAndStatusCallback(chan, Type[chan]); + return; + } + + id = (u32)(OSGetWirelessID(chan) << 8); + + if (fix && (id & SI_WIRELESS_FIX_ID)) { + cmdFixDevice[chan] = 0x4Eu << 24 | (id & SI_WIRELESS_TYPE_ID) | SI_WIRELESS_FIX_ID; + Type[chan] = SI_ERROR_BUSY; + SITransfer(chan, &cmdFixDevice[chan], 3, &Type[chan], 3, GetTypeCallback, 0); + return; + } + + if (type & SI_WIRELESS_FIX_ID) { + if ((id & SI_WIRELESS_TYPE_ID) != (type & SI_WIRELESS_TYPE_ID)) { + if (!(id & SI_WIRELESS_FIX_ID)) { + id = type & SI_WIRELESS_TYPE_ID; + id |= SI_WIRELESS_FIX_ID; + OSSetWirelessID(chan, (u16)((id >> 8) & 0xffff)); + } + + cmdFixDevice[chan] = 0x4E << 24 | id; + Type[chan] = SI_ERROR_BUSY; + SITransfer(chan, &cmdFixDevice[chan], 3, &Type[chan], 3, GetTypeCallback, 0); + return; + } + } + else if (type & SI_WIRELESS_RECEIVED) { + id = type & SI_WIRELESS_TYPE_ID; + id |= SI_WIRELESS_FIX_ID; + + OSSetWirelessID(chan, (u16)((id >> 8) & 0xffff)); + + cmdFixDevice[chan] = 0x4E << 24 | id; + Type[chan] = SI_ERROR_BUSY; + SITransfer(chan, &cmdFixDevice[chan], 3, &Type[chan], 3, GetTypeCallback, 0); + return; + } + else { + OSSetWirelessID(chan, 0); + } + + CallTypeAndStatusCallback(chan, Type[chan]); +} + +u32 SIGetType(s32 chan) +{ + static u32 cmdTypeAndStatus; + BOOL enabled; + u32 type; + OSTime diff; + + enabled = OSDisableInterrupts(); + + type = Type[chan]; + diff = __OSGetSystemTime() - TypeTime[chan]; + if (Si.poll & (0x80 >> chan)) { + if (type != SI_ERROR_NO_RESPONSE) { + TypeTime[chan] = __OSGetSystemTime(); + OSRestoreInterrupts(enabled); + return type; + } + else { + type = Type[chan] = SI_ERROR_BUSY; + } + } + else if (diff <= OSMillisecondsToTicks(50) && type != SI_ERROR_NO_RESPONSE) { + OSRestoreInterrupts(enabled); + return type; + } + else if (diff <= OSMillisecondsToTicks(75)) { + Type[chan] = SI_ERROR_BUSY; + } + else { + type = Type[chan] = SI_ERROR_BUSY; + } + TypeTime[chan] = __OSGetSystemTime(); + + SITransfer(chan, &cmdTypeAndStatus, 1, &Type[chan], 3, GetTypeCallback, OSMicrosecondsToTicks(65)); + + OSRestoreInterrupts(enabled); + return type; +} + +u32 SIGetTypeAsync(s32 chan, SITypeAndStatusCallback callback) +{ + BOOL enabled; + u32 type; + + enabled = OSDisableInterrupts(); + type = SIGetType(chan); + if (Type[chan] & SI_ERROR_BUSY) { + int i; + + for (i = 0; i < 4; ++i) { + if (TypeCallback[chan][i] == callback) { + break; + } + if (TypeCallback[chan][i] == 0) { + TypeCallback[chan][i] = callback; + break; + } + } + } + else { + callback(chan, type); + } + OSRestoreInterrupts(enabled); + return type; +} + +u32 SIDecodeType(u32 type) +{ + u32 error; + + error = type & 0xff; + type &= ~0xff; + + if (error & SI_ERROR_NO_RESPONSE) { + return SI_ERROR_NO_RESPONSE; + } + if (error & (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_COLLISION | SI_ERROR_UNKNOWN)) { + return SI_ERROR_UNKNOWN; + } + if (error) { + return SI_ERROR_BUSY; + } + + if ((type & SI_TYPE_MASK) == SI_TYPE_N64) { + switch (type & 0xffff0000) { + case SI_N64_CONTROLLER: + case SI_N64_MIC: + case SI_N64_KEYBOARD: + case SI_N64_MOUSE: + case SI_GBA: + return type & 0xffff0000; + break; + } + return SI_ERROR_UNKNOWN; + } + + if ((type & SI_TYPE_MASK) != SI_TYPE_GC) { + + return SI_ERROR_UNKNOWN; + } + switch (type & 0xffff0000) { + case SI_GC_CONTROLLER: + case SI_GC_STEERING: + return type & 0xffff0000; + break; + } + + if ((type & 0xffe00000) == SI_GC_KEYBOARD) { + return SI_GC_KEYBOARD; + } + + if ((type & SI_GC_WIRELESS) && !(type & SI_WIRELESS_IR)) { + if ((type & SI_GC_WAVEBIRD) == SI_GC_WAVEBIRD) { + return SI_GC_WAVEBIRD; + } + else if (!(type & SI_WIRELESS_STATE)) { + return SI_GC_RECEIVER; + } + } + + if ((type & SI_GC_CONTROLLER) == SI_GC_CONTROLLER) { + return SI_GC_CONTROLLER; + } + return SI_ERROR_UNKNOWN; +} + +u32 SIProbe(s32 chan) +{ + return SIDecodeType(SIGetType(chan)); +} + +char *SIGetTypeString(u32 type) +{ + switch (SIDecodeType(type)) { + case SI_ERROR_NO_RESPONSE: + return "No response"; + case SI_N64_CONTROLLER: + return "N64 controller"; + case SI_N64_MIC: + return "N64 microphone"; + case SI_N64_KEYBOARD: + return "N64 keyboard"; + case SI_N64_MOUSE: + return "N64 mouse"; + case SI_GBA: + return "GameBoy Advance"; + case SI_GC_CONTROLLER: + return "Standard controller"; + case SI_GC_RECEIVER: + return "Wireless receiver"; + case SI_GC_WAVEBIRD: + return "WaveBird controller"; + case SI_GC_KEYBOARD: + return "Keyboard"; + case SI_GC_STEERING: + return "Steering"; + } +} diff --git a/src/dolphin/si/SISamplingRate.c b/src/dolphin/si/SISamplingRate.c new file mode 100644 index 00000000..9b799fbc --- /dev/null +++ b/src/dolphin/si/SISamplingRate.c @@ -0,0 +1,56 @@ +#include "dolphin/sipriv.h" +#include "dolphin/vi.h" +#include "dolphin/hw_regs.h" + +#pragma dont_inline on +static u32 SamplingRate; + +typedef struct XY { + u16 line; + u8 count; +} XY; + +static XY XYNTSC[12] = { + {263 - 17, 2}, {15, 18}, {30, 9}, {44, 6}, {52, 5}, {65, 4}, + {87, 3}, {87, 3}, {87, 3}, {131, 2}, {131, 2}, {131, 2}, +}; + +static XY XYPAL[12] = { + {313 - 17, 2}, {15, 21}, {29, 11}, {45, 7}, {52, 6}, {63, 5}, + {78, 4}, {104, 3}, {104, 3}, {104, 3}, {104, 3}, {156, 2}, +}; + +void SISetSamplingRate(u32 msec) { + XY* xy; + BOOL enabled; + + if (msec > 11) { + msec = 11; + } + + enabled = OSDisableInterrupts(); + + SamplingRate = msec; + + switch (VIGetTvFormat()) { + case VI_NTSC: + case VI_MPAL: + case VI_EURGB60: + xy = XYNTSC; + break; + case VI_PAL: + xy = XYPAL; + break; + default: + OSReport("SISetSamplingRate: unknown TV format. Use default."); + msec = 0; + xy = XYNTSC; + break; + } + + SISetXY((__VIRegs[54] & 1 ? 2u : 1u) * xy[msec].line, xy[msec].count); + OSRestoreInterrupts(enabled); +} + +void SIRefreshSamplingRate() { SISetSamplingRate(SamplingRate); } +#pragma dont_inline reset diff --git a/src/dolphin/thp/THPAudio.c b/src/dolphin/thp/THPAudio.c new file mode 100644 index 00000000..e782abcb --- /dev/null +++ b/src/dolphin/thp/THPAudio.c @@ -0,0 +1,178 @@ +#include + +u32 THPAudioDecode(s16 *audioBuffer, u8 *audioFrame, s32 flag) +{ + THPAudioRecordHeader *header; + THPAudioDecodeInfo decInfo; + u8 *left, *right; + s16 *decLeftPtr, *decRightPtr; + s16 yn1, yn2; + s32 i; + s32 step; + s32 sample; + s64 yn; + + if (audioBuffer == NULL || audioFrame == NULL) { + return 0; + } + + header = (THPAudioRecordHeader *)audioFrame; + left = audioFrame + sizeof(THPAudioRecordHeader); + right = left + header->offsetNextChannel; + + if (flag == 1) { + decRightPtr = audioBuffer; + decLeftPtr = audioBuffer + header->sampleSize; + step = 1; + } + else { + decRightPtr = audioBuffer; + decLeftPtr = audioBuffer + 1; + step = 2; + } + + if (header->offsetNextChannel == 0) { + __THPAudioInitialize(&decInfo, left); + + yn1 = header->lYn1; + yn2 = header->lYn2; + + for (i = 0; i < header->sampleSize; i++) { + sample = __THPAudioGetNewSample(&decInfo); + yn = header->lCoef[decInfo.predictor][1] * yn2; + yn += header->lCoef[decInfo.predictor][0] * yn1; + yn += (sample << decInfo.scale) << 11; + yn <<= 5; + + if ((u16)(yn & 0xffff) > 0x8000) { + yn += 0x10000; + } + else if ((u16)(yn & 0xffff) == 0x8000) { + if ((yn & 0x10000)) + yn += 0x10000; + } + + if (yn > 2147483647LL) { + yn = 2147483647LL; + } + + if (yn < -2147483648LL) { + yn = -2147483648LL; + } + + *decLeftPtr = (s16)(yn >> 16); + decLeftPtr += step; + *decRightPtr = (s16)(yn >> 16); + decRightPtr += step; + yn2 = yn1; + yn1 = (s16)(yn >> 16); + } + } + else { + __THPAudioInitialize(&decInfo, left); + + yn1 = header->lYn1; + yn2 = header->lYn2; + + for (i = 0; i < header->sampleSize; i++) { + sample = __THPAudioGetNewSample(&decInfo); + yn = header->lCoef[decInfo.predictor][1] * yn2; + yn += header->lCoef[decInfo.predictor][0] * yn1; + yn += (sample << decInfo.scale) << 11; + yn <<= 5; + + if ((u16)(yn & 0xffff) > 0x8000) { + yn += 0x10000; + } + else { + if ((u16)(yn & 0xffff) == 0x8000) { + if ((yn & 0x10000)) + yn += 0x10000; + } + } + + if (yn > 2147483647LL) { + yn = 2147483647LL; + } + + if (yn < -2147483648LL) { + yn = -2147483648LL; + } + + *decLeftPtr = (s16)(yn >> 16); + decLeftPtr += step; + yn2 = yn1; + yn1 = (s16)(yn >> 16); + } + + __THPAudioInitialize(&decInfo, right); + + yn1 = header->rYn1; + yn2 = header->rYn2; + + for (i = 0; i < header->sampleSize; i++) { + sample = __THPAudioGetNewSample(&decInfo); + yn = header->rCoef[decInfo.predictor][1] * yn2; + yn += header->rCoef[decInfo.predictor][0] * yn1; + yn += (sample << decInfo.scale) << 11; + yn <<= 5; + + if ((u16)(yn & 0xffff) > 0x8000) { + yn += 0x10000; + } + else { + if ((u16)(yn & 0xffff) == 0x8000) { + if ((yn & 0x10000)) + yn += 0x10000; + } + } + + if (yn > 2147483647LL) { + yn = 2147483647LL; + } + + if (yn < -2147483648LL) { + yn = -2147483648LL; + } + + *decRightPtr = (s16)(yn >> 16); + decRightPtr += step; + yn2 = yn1; + yn1 = (s16)(yn >> 16); + } + } + + return header->sampleSize; +} + +static s32 __THPAudioGetNewSample(THPAudioDecodeInfo *info) +{ + s32 sample; + + if (!(info->offsetNibbles & 0x0f)) { + info->predictor = (u8)((*(info->encodeData) & 0x70) >> 4); + info->scale = (u8)((*(info->encodeData) & 0xF)); + info->encodeData++; + info->offsetNibbles += 2; + } + + if (info->offsetNibbles & 0x1) { + sample = (s32)((*(info->encodeData) & 0xF) << 28) >> 28; + info->encodeData++; + } + else { + sample = (s32)((*(info->encodeData) & 0xF0) << 24) >> 28; + } + + info->offsetNibbles++; + return sample; +} + +static void __THPAudioInitialize(THPAudioDecodeInfo *info, u8 *ptr) +{ + info->encodeData = ptr; + info->offsetNibbles = 2; + info->predictor = (u8)((*(info->encodeData) & 0x70) >> 4); + info->scale = (u8)((*(info->encodeData) & 0xF)); + info->encodeData++; +} diff --git a/src/dolphin/thp/THPDec.c b/src/dolphin/thp/THPDec.c new file mode 100644 index 00000000..13ff4c8d --- /dev/null +++ b/src/dolphin/thp/THPDec.c @@ -0,0 +1,2280 @@ +#include +#include + +static THPHuffmanTab *Ydchuff ATTRIBUTE_ALIGN(32); +static THPHuffmanTab *Udchuff ATTRIBUTE_ALIGN(32); +static THPHuffmanTab *Vdchuff ATTRIBUTE_ALIGN(32); +static THPHuffmanTab *Yachuff ATTRIBUTE_ALIGN(32); +static THPHuffmanTab *Uachuff ATTRIBUTE_ALIGN(32); +static THPHuffmanTab *Vachuff ATTRIBUTE_ALIGN(32); +static f32 __THPIDCTWorkspace[64] ATTRIBUTE_ALIGN(32); +static u8 *__THPHuffmanBits; +static u8 *__THPHuffmanSizeTab; +static u16 *__THPHuffmanCodeTab; +static THPSample *Gbase ATTRIBUTE_ALIGN(32); +static u32 Gwid ATTRIBUTE_ALIGN(32); +static f32 *Gq ATTRIBUTE_ALIGN(32); +static u8 *__THPLCWork512[3]; +static u8 *__THPLCWork640[3]; +static u32 __THPOldGQR5; +static u32 __THPOldGQR6; +static u8 *__THPWorkArea; +static THPCoeff *__THPMCUBuffer[6]; +static THPFileInfo *__THPInfo; +static BOOL __THPInitFlag = FALSE; + +#define THPROUNDUP(a, b) ((((s32)(a)) + ((s32)(b)-1L)) / ((s32)(b))) + +s32 THPVideoDecode(void *file, void *tileY, void *tileU, void *tileV, void *work) +{ + u8 all_done, status; + s32 errorCode; + + if (!file) { + goto _err_no_input; + } + + if (tileY == NULL || tileU == NULL || tileV == NULL) { + goto _err_no_output; + } + + if (!work) { + goto _err_no_work; + } + + if (!(PPCMfhid2() & 0x10000000)) { + goto _err_lc_not_enabled; + } + + if (__THPInitFlag == FALSE) { + goto _err_not_initialized; + } + + __THPWorkArea = (u8 *)work; + __THPInfo = (THPFileInfo *)OSRoundUp32B(__THPWorkArea); + __THPWorkArea = (u8 *)OSRoundUp32B(__THPWorkArea) + sizeof(THPFileInfo); + DCZeroRange(__THPInfo, sizeof(THPFileInfo)); + __THPInfo->cnt = 33; + __THPInfo->decompressedY = 0; + __THPInfo->c = (u8 *)file; + all_done = FALSE; + + for (;;) { + if ((*(__THPInfo->c)++) != 255) { + goto _err_bad_syntax; + } + + while (*__THPInfo->c == 255) { + ((__THPInfo->c)++); + } + + status = (*(__THPInfo->c)++); + + if (status <= 0xD7) { + if (status == 196) { + status = __THPReadHuffmanTableSpecification(); + if (status != 0) { + goto _err_bad_status; + } + } + + else if (status == 192) { + status = __THPReadFrameHeader(); + if (status != 0) { + goto _err_bad_status; + } + } + + else { + goto _err_unsupported_marker; + } + } + + else if (0xD8 <= status && status <= 0xDF) { + if (status == 221) { + __THPRestartDefinition(); + } + + else if (status == 219) { + status = __THPReadQuantizationTable(); + if (status != 0) { + goto _err_bad_status; + } + } + + else if (status == 218) { + status = __THPReadScaneHeader(); + if (status != 0) { + goto _err_bad_status; + } + + all_done = TRUE; + } + else if (status == 216) { + // empty but required for match + } + else { + goto _err_unsupported_marker; + } + } + + else if (0xE0 <= status) { + if ((224 <= status && status <= 239) || status == 254) { + __THPInfo->c += (__THPInfo->c)[0] << 8 | (__THPInfo->c)[1]; + } + else { + goto _err_unsupported_marker; + } + } + + if (all_done) { + break; + } + } + + __THPSetupBuffers(); + __THPDecompressYUV(tileY, tileU, tileV); + return 0; + +_err_no_input: + errorCode = 25; + goto _err_exit; + +_err_no_output: + errorCode = 27; + goto _err_exit; + +_err_no_work: + errorCode = 26; + goto _err_exit; + +_err_unsupported_marker: + errorCode = 11; + goto _err_exit; + +_err_bad_resource: + errorCode = 1; + goto _err_exit; + +_err_no_mem: + errorCode = 6; + goto _err_exit; + +_err_bad_syntax: + errorCode = 3; + goto _err_exit; + +_err_bad_status: + errorCode = status; + goto _err_exit; + +_err_lc_not_enabled: + errorCode = 28; + goto _err_exit; + +_err_not_initialized: + errorCode = 29; + goto _err_exit; + +_err_exit: + return errorCode; +} + +static void __THPSetupBuffers(void) +{ + u8 i; + THPCoeff *buffer; + + buffer = (THPCoeff *)OSRoundUp32B(__THPWorkArea); + + for (i = 0; i < 6; i++) { + __THPMCUBuffer[i] = &buffer[i * 64]; + } +} + +static u8 __THPReadFrameHeader(void) +{ + u8 i, utmp8; + + __THPInfo->c += 2; + + utmp8 = (*(__THPInfo->c)++); + + if (utmp8 != 8) { + return 10; + } + + __THPInfo->yPixelSize = (u16)((__THPInfo->c)[0] << 8 | (__THPInfo->c)[1]); + __THPInfo->c += 2; + __THPInfo->xPixelSize = (u16)((__THPInfo->c)[0] << 8 | (__THPInfo->c)[1]); + __THPInfo->c += 2; + + utmp8 = (*(__THPInfo->c)++); + if (utmp8 != 3) { + return 12; + } + + for (i = 0; i < 3; i++) { + utmp8 = (*(__THPInfo->c)++); + utmp8 = (*(__THPInfo->c)++); + if ((i == 0 && utmp8 != 0x22) || (i > 0 && utmp8 != 0x11)) { + return 19; + } + + __THPInfo->components[i].quantizationTableSelector = (*(__THPInfo->c)++); + } + + return 0; +} + +static u8 __THPReadScaneHeader(void) +{ + u8 i, utmp8; + __THPInfo->c += 2; + + utmp8 = (*(__THPInfo->c)++); + + if (utmp8 != 3) { + return 12; + } + + for (i = 0; i < 3; i++) { + utmp8 = (*(__THPInfo->c)++); + + utmp8 = (*(__THPInfo->c)++); + __THPInfo->components[i].DCTableSelector = (u8)(utmp8 >> 4); + __THPInfo->components[i].ACTableSelector = (u8)(utmp8 & 15); + + if ((__THPInfo->validHuffmanTabs & (1 << ((utmp8 >> 4)))) == 0) { + return 15; + } + + if ((__THPInfo->validHuffmanTabs & (1 << ((utmp8 & 15) + 1))) == 0) { + return 15; + } + } + + __THPInfo->c += 3; + __THPInfo->MCUsPerRow = (u16)THPROUNDUP(__THPInfo->xPixelSize, 16); + __THPInfo->components[0].predDC = 0; + __THPInfo->components[1].predDC = 0; + __THPInfo->components[2].predDC = 0; + return 0; +} + +static u8 __THPReadQuantizationTable(void) +{ + u16 length, id, i, row, col; + f32 q_temp[64]; + + length = (u16)((__THPInfo->c)[0] << 8 | (__THPInfo->c)[1]); + __THPInfo->c += 2; + length -= 2; + + for (;;) { + id = (*(__THPInfo->c)++); + + for (i = 0; i < 64; i++) { + q_temp[__THPJpegNaturalOrder[i]] = (f32)(*(__THPInfo->c)++); + } + + i = 0; + for (row = 0; row < 8; row++) { + for (col = 0; col < 8; col++) { + __THPInfo->quantTabs[id][i] = (f32)((f64)q_temp[i] * __THPAANScaleFactor[row] * __THPAANScaleFactor[col]); + i++; + } + } + + length -= 65; + if (!length) { + break; + } + } + + return 0; +} + +static u8 __THPReadHuffmanTableSpecification(void) +{ + u8 t_class, id, i, tab_index; + u16 length, num_Vij; + + __THPHuffmanSizeTab = __THPWorkArea; + __THPHuffmanCodeTab = (u16 *)((u32)__THPWorkArea + 256 + 1); + length = (u16)((__THPInfo->c)[0] << 8 | (__THPInfo->c)[1]); + __THPInfo->c += 2; + length -= 2; + + for (;;) { + i = (*(__THPInfo->c)++); + id = (u8)(i & 15); + t_class = (u8)(i >> 4); + __THPHuffmanBits = __THPInfo->c; + tab_index = (u8)((id << 1) + t_class); + num_Vij = 0; + + for (i = 0; i < 16; i++) { + num_Vij += (*(__THPInfo->c)++); + } + + __THPInfo->huffmanTabs[tab_index].Vij = __THPInfo->c; + __THPInfo->c += num_Vij; + __THPHuffGenerateSizeTable(); + __THPHuffGenerateCodeTable(); + __THPHuffGenerateDecoderTables(tab_index); + __THPInfo->validHuffmanTabs |= 1 << tab_index; + length -= 17 + num_Vij; + + if (length == 0) { + break; + } + } + + return 0; +} + +static void __THPHuffGenerateSizeTable(void) +{ + s32 p, l, i; + p = 0; + + for (l = 1; l <= 16; l++) { + i = (s32)__THPHuffmanBits[l - 1]; + while (i--) { + __THPHuffmanSizeTab[p++] = (u8)l; + } + } + + __THPHuffmanSizeTab[p] = 0; +} + +static void __THPHuffGenerateCodeTable(void) +{ + u8 si; + u16 p, code; + + p = 0; + code = 0; + si = __THPHuffmanSizeTab[0]; + + while (__THPHuffmanSizeTab[p]) { + while (__THPHuffmanSizeTab[p] == si) { + __THPHuffmanCodeTab[p++] = code; + code++; + } + + code <<= 1; + si++; + } +} + +static void __THPHuffGenerateDecoderTables(u8 tabIndex) +{ + s32 p, l; + THPHuffmanTab *h; + + p = 0; + h = &__THPInfo->huffmanTabs[tabIndex]; + for (l = 1; l <= 16; l++) { + if (__THPHuffmanBits[l - 1]) { + h->valPtr[l] = p - __THPHuffmanCodeTab[p]; + p += __THPHuffmanBits[l - 1]; + h->maxCode[l] = __THPHuffmanCodeTab[p - 1]; + } + else { + h->maxCode[l] = -1; + h->valPtr[l] = -1; + } + } + + h->maxCode[17] = 0xfffffL; +} + +static void __THPRestartDefinition(void) +{ + __THPInfo->RST = TRUE; + __THPInfo->c += 2; + __THPInfo->nMCU = (u16)((__THPInfo->c)[0] << 8 | (__THPInfo->c)[1]); + __THPInfo->c += 2; + __THPInfo->currMCU = __THPInfo->nMCU; +} + +static inline void __THPGQRSetup(void) +{ + register u32 tmp1, tmp2; + + // clang-format off + asm { + mfspr tmp1, GQR5; + mfspr tmp2, GQR6; + } + // clang-format on + + __THPOldGQR5 = tmp1; + __THPOldGQR6 = tmp2; + + // clang-format off + asm { + li r3, 0x0007 + oris r3, r3, 0x0007 + mtspr GQR5, r3 + li r3, 0x3D04 + oris r3, r3, 0x3D04 + mtspr GQR6, r3 + } + // clang-format on +} + +static inline void __THPGQRRestore(void) +{ + register u32 tmp1, tmp2; + tmp1 = __THPOldGQR5; + tmp2 = __THPOldGQR6; + + // clang-format off + asm { + mtspr GQR5, tmp1; + mtspr GQR6, tmp2; + } + // clang-format on +} + +void __THPPrepBitStream(void) +{ + u32 *ptr; + u32 offset, i, j, k; + + ptr = (u32 *)((u32)__THPInfo->c & 0xFFFFFFFC); + offset = (u32)__THPInfo->c & 3; + + if (__THPInfo->cnt != 33) { + __THPInfo->cnt -= (3 - offset) * 8; + } + else { + __THPInfo->cnt = (offset * 8) + 1; + } + + __THPInfo->c = (u8 *)ptr; + __THPInfo->currByte = *ptr; + + for (i = 0; i < 4; i++) { + if (__THPInfo->validHuffmanTabs & (1 << i)) { + for (j = 0; j < 32; j++) { + __THPInfo->huffmanTabs[i].quick[j] = 0xFF; + + for (k = 0; k < 5; k++) { + s32 code = (s32)(j >> (5 - k - 1)); + + if (code <= __THPInfo->huffmanTabs[i].maxCode[k + 1]) { + __THPInfo->huffmanTabs[i].quick[j] = __THPInfo->huffmanTabs[i].Vij[(s32)(code + __THPInfo->huffmanTabs[i].valPtr[k + 1])]; + __THPInfo->huffmanTabs[i].increment[j] = (u8)(k + 1); + k = 99; + } + else { + } + } + } + } + } + + { + s32 YdcTab, UdcTab, VdcTab, YacTab, UacTab, VacTab; + + YdcTab = (__THPInfo->components[0].DCTableSelector << 1); + UdcTab = (__THPInfo->components[1].DCTableSelector << 1); + VdcTab = (__THPInfo->components[2].DCTableSelector << 1); + + YacTab = (__THPInfo->components[0].ACTableSelector << 1) + 1; + UacTab = (__THPInfo->components[1].ACTableSelector << 1) + 1; + VacTab = (__THPInfo->components[2].ACTableSelector << 1) + 1; + + Ydchuff = &__THPInfo->huffmanTabs[YdcTab]; + Udchuff = &__THPInfo->huffmanTabs[UdcTab]; + Vdchuff = &__THPInfo->huffmanTabs[VdcTab]; + + Yachuff = &__THPInfo->huffmanTabs[YacTab]; + Uachuff = &__THPInfo->huffmanTabs[UacTab]; + Vachuff = &__THPInfo->huffmanTabs[VacTab]; + } +} + +static void __THPDecompressYUV(void *tileY, void *tileU, void *tileV) +{ + u16 currentY, targetY; + __THPInfo->dLC[0] = tileY; + __THPInfo->dLC[1] = tileU; + __THPInfo->dLC[2] = tileV; + + currentY = __THPInfo->decompressedY; + targetY = __THPInfo->yPixelSize; + + __THPGQRSetup(); + __THPPrepBitStream(); + + if (__THPInfo->xPixelSize == 512 && targetY == 448) { + while (currentY < targetY) { + __THPDecompressiMCURow512x448(); + currentY += 16; + } + } + else if (__THPInfo->xPixelSize == 640 && targetY == 480) { + while (currentY < targetY) { + __THPDecompressiMCURow640x480(); + currentY += 16; + } + } + else { + while (currentY < targetY) { + __THPDecompressiMCURowNxN(); + currentY += 16; + } + } + + __THPGQRRestore(); +} + +inline void __THPInverseDCTNoYPos(register THPCoeff *in, register u32 xPos) +{ + register f32 *q, *ws; + register f32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; + register f32 tmp10, tmp11, tmp12, tmp13; + register f32 tmp20, tmp21, tmp22, tmp23; + register f32 cc4 = 1.414213562F; + register f32 cc2 = 1.847759065F; + register f32 cc2c6s = 1.082392200F; + register f32 cc2c6a = -2.613125930F; + register f32 bias = 1024.0F; + q = Gq; + ws = &__THPIDCTWorkspace[0] - 2; + + { + register u32 itmp0, itmp1, itmp2, itmp3; + // clang-format off + asm { + li itmp2, 8 + mtctr itmp2 + + _loopHead0: + psq_l tmp10, 0(in), 0, 5 + psq_l tmp11, 0(q), 0, 0 + lwz itmp0, 12(in) + lwz itmp3, 8(in) + ps_mul tmp10, tmp10, tmp11 + lwz itmp1, 4(in) + lhz itmp2, 2(in) + or. itmp0, itmp0, itmp3 + + _loopHead1: + cmpwi itmp0, 0 + bne _regularIDCT + ps_merge00 tmp0, tmp10, tmp10 + cmpwi itmp1, 0 + psq_st tmp0, 8(ws), 0, 0 + bne _halfIDCT + psq_st tmp0, 16(ws), 0, 0 + cmpwi itmp2, 0 + psq_st tmp0, 24(ws), 0, 0 + bne _quarterIDCT + addi q, q, 8*sizeof(f32) + psq_stu tmp0, 32(ws), 0, 0 + addi in, in, 8*sizeof(THPCoeff) + bdnz _loopHead0 + b _loopEnd + + _quarterIDCT: + addi in, in, 8*sizeof(THPCoeff) + ps_msub tmp2, tmp10, cc2, tmp10 + addi q, q, 8*sizeof(f32) + ps_merge00 tmp9, tmp10, tmp10 + lwz itmp1, 4(in) + ps_sub tmp1, cc2, cc2c6s + ps_msub tmp3, tmp10, cc4, tmp2 + lhz itmp2, 2(in) + ps_merge11 tmp5, tmp10, tmp2 + psq_l tmp11, 0(q), 0, 0 + ps_nmsub tmp4, tmp10, tmp1, tmp3 + ps_add tmp7, tmp9, tmp5 + psq_l tmp10, 0(in), 0, 5 + ps_merge11 tmp6, tmp3, tmp4 + ps_sub tmp5, tmp9, tmp5 + lwz itmp0, 12(in) + ps_add tmp8, tmp9, tmp6 + lwz itmp3, 8(in) + ps_sub tmp6, tmp9, tmp6 + psq_stu tmp7, 8(ws), 0, 0 + ps_merge10 tmp6, tmp6, tmp6 + psq_stu tmp8, 8(ws), 0, 0 + ps_merge10 tmp5, tmp5, tmp5 + or itmp0, itmp0, itmp3 + psq_stu tmp6, 8(ws), 0, 0 + ps_mul tmp10, tmp10, tmp11 + psq_stu tmp5, 8(ws), 0, 0 + bdnz _loopHead1 + b _loopEnd + + _halfIDCT: + psq_l tmp1, 4(in), 0, 5 + psq_l tmp9, 8(q), 0, 0 + addi in, in, 8*sizeof(THPCoeff) + ps_mul tmp1, tmp1, tmp9 + addi q, q, 8*sizeof(f32) + ps_sub tmp3, tmp10, tmp1 + ps_add tmp2, tmp10, tmp1 + lwz itmp0, 12(in) + ps_madd tmp4, tmp1, cc4, tmp3 + ps_nmsub tmp5, tmp1, cc4, tmp2 + ps_mul tmp8, tmp3, cc2 + ps_merge00 tmp4, tmp2, tmp4 + lwz itmp3, 8(in) + ps_nmsub tmp6, tmp1, cc2c6a, tmp8 + ps_merge00 tmp5, tmp5, tmp3 + lwz itmp1, 4(in) + ps_sub tmp6, tmp6, tmp2 + ps_msub tmp7, tmp10, cc2c6s, tmp8 + lhz itmp2, 2(in) + ps_merge11 tmp2, tmp2, tmp6 + ps_msub tmp8, tmp3, cc4, tmp6 + psq_l tmp10, 0(in), 0, 5 + ps_add tmp9, tmp4, tmp2 + ps_add tmp7, tmp8, tmp7 + psq_l tmp11, 0(q), 0, 0 + ps_merge11 tmp3, tmp8, tmp7 + ps_sub tmp4, tmp4, tmp2 + psq_stu tmp9, 8(ws), 0, 0 + ps_add tmp0, tmp5, tmp3 + ps_sub tmp1, tmp5, tmp3 + or itmp0, itmp0, itmp3 + psq_stu tmp0, 8(ws), 0, 0 + ps_merge10 tmp1, tmp1, tmp1 + ps_merge10 tmp4, tmp4, tmp4 + psq_stu tmp1, 8(ws), 0, 0 + ps_mul tmp10, tmp10, tmp11 + psq_stu tmp4, 8(ws), 0, 0 + bdnz _loopHead1 + b _loopEnd + + _regularIDCT: + psq_l tmp9, 4(in), 0, 5 + psq_l tmp5, 8(q), 0, 0 + ps_mul tmp9, tmp9, tmp5 + psq_l tmp2, 8(in), 0, 5 + psq_l tmp6, 16(q), 0, 0 + ps_merge01 tmp0, tmp10, tmp9 + psq_l tmp3, 12(in), 0, 5 + ps_merge01 tmp1, tmp9, tmp10 + psq_l tmp7, 24(q), 0, 0 + addi in, in, 8*sizeof(THPCoeff) + ps_madd tmp4, tmp2, tmp6, tmp0 + ps_nmsub tmp5, tmp2, tmp6, tmp0 + ps_madd tmp6, tmp3, tmp7, tmp1 + ps_nmsub tmp7, tmp3, tmp7, tmp1 + addi q, q, 8*sizeof(f32) + ps_add tmp0, tmp4, tmp6 + ps_sub tmp3, tmp4, tmp6 + ps_msub tmp2, tmp7, cc4, tmp6 + lwz itmp0, 12(in) + ps_sub tmp8, tmp7, tmp5 + ps_add tmp1, tmp5, tmp2 + ps_sub tmp2, tmp5, tmp2 + ps_mul tmp8, tmp8, cc2 + lwz itmp3, 8(in) + ps_merge00 tmp1, tmp0, tmp1 + ps_nmsub tmp6, tmp5, cc2c6a, tmp8 + ps_msub tmp4, tmp7, cc2c6s, tmp8 + lwz itmp1, 4(in) + ps_sub tmp6, tmp6, tmp0 + ps_merge00 tmp2, tmp2, tmp3 + lhz itmp2, 2(in) + ps_madd tmp5, tmp3, cc4, tmp6 + ps_merge11 tmp7, tmp0, tmp6 + psq_l tmp10, 0(in), 0, 5 + ps_sub tmp4, tmp4, tmp5 + ps_add tmp3, tmp1, tmp7 + psq_l tmp11, 0(q), 0, 0 + ps_merge11 tmp4, tmp5, tmp4 + ps_sub tmp0, tmp1, tmp7 + ps_mul tmp10, tmp10, tmp11 + ps_add tmp5, tmp2, tmp4 + ps_sub tmp6, tmp2, tmp4 + ps_merge10 tmp5, tmp5, tmp5 + psq_stu tmp3, 8(ws), 0, 0 + ps_merge10 tmp0, tmp0, tmp0 + psq_stu tmp6, 8(ws), 0, 0 + psq_stu tmp5, 8(ws), 0, 0 + or itmp0, itmp0, itmp3 + psq_stu tmp0, 8(ws), 0, 0 + bdnz _loopHead1 + + _loopEnd: + + } + // clang-format on + } + + ws = &__THPIDCTWorkspace[0]; + + { + register THPSample *obase = Gbase; + register u32 wid = Gwid; + + register u32 itmp0, off0, off1; + register THPSample *out0, *out1; + + // clang-format off + asm { + psq_l tmp10, 8*0*sizeof(f32)(ws), 0, 0 + slwi xPos, xPos, 2 + psq_l tmp11, 8*4*sizeof(f32)(ws), 0, 0 + slwi off1, wid, 2 + psq_l tmp12, 8*2*sizeof(f32)(ws), 0, 0 + mr off0, xPos + ps_add tmp6, tmp10, tmp11 + psq_l tmp13, 8*6*sizeof(f32)(ws), 0, 0 + ps_sub tmp8, tmp10, tmp11 + add off1, off0, off1 + ps_add tmp6, tmp6, bias + li itmp0, 3 + ps_add tmp7, tmp12, tmp13 + add out0, obase, off0 + ps_sub tmp9, tmp12, tmp13 + ps_add tmp0, tmp6, tmp7 + add out1, obase, off1 + ps_add tmp8, tmp8, bias + mtctr itmp0 + + _loopHead10: + psq_l tmp4, 8*1*sizeof(f32)(ws), 0, 0 + ps_msub tmp9, tmp9, cc4, tmp7 + psq_l tmp5, 8*3*sizeof(f32)(ws), 0, 0 + ps_sub tmp3, tmp6, tmp7 + ps_add tmp1, tmp8, tmp9 + psq_l tmp6, 8*5*sizeof(f32)(ws), 0, 0 + ps_sub tmp2, tmp8, tmp9 + psq_l tmp7, 8*7*sizeof(f32)(ws), 0, 0 + ps_add tmp8, tmp6, tmp5 + ps_sub tmp6, tmp6, tmp5 + addi ws, ws, 2*sizeof(f32) + ps_add tmp9, tmp4, tmp7 + ps_sub tmp4, tmp4, tmp7 + psq_l tmp10, 8*0*sizeof(f32)(ws), 0, 0 + ps_add tmp7, tmp9, tmp8 + ps_sub tmp5, tmp9, tmp8 + ps_add tmp8, tmp6, tmp4 + psq_l tmp11, 8*4*sizeof(f32)(ws), 0, 0 + ps_add tmp9, tmp0, tmp7 + ps_mul tmp8, tmp8, cc2 + psq_l tmp12, 8*2*sizeof(f32)(ws), 0, 0 + ps_sub tmp23, tmp0, tmp7 + ps_madd tmp6, tmp6, cc2c6a, tmp8 + psq_l tmp13, 8*6*sizeof(f32)(ws), 0, 0 + ps_sub tmp6, tmp6, tmp7 + addi off0, off0, 2*sizeof(THPSample) + psq_st tmp9, 0(out0), 0, 6 + ps_msub tmp4, tmp4, cc2c6s, tmp8 + ps_add tmp9, tmp1, tmp6 + ps_msub tmp5, tmp5, cc4, tmp6 + ps_sub tmp22, tmp1, tmp6 + psq_st tmp9, 8(out0), 0, 6 + ps_add tmp8, tmp2, tmp5 + ps_add tmp4, tmp4, tmp5 + psq_st tmp8, 16(out0), 0, 6 + addi off1, off1, 2*sizeof(THPSample) + ps_sub tmp9, tmp3, tmp4 + ps_add tmp20, tmp3, tmp4 + psq_st tmp9, 24(out0), 0, 6 + ps_sub tmp21, tmp2, tmp5 + ps_add tmp6, tmp10, tmp11 + psq_st tmp20, 0(out1), 0, 6 + ps_sub tmp8, tmp10, tmp11 + ps_add tmp6, tmp6, bias + psq_st tmp21, 8(out1), 0, 6 + ps_add tmp7, tmp12, tmp13 + ps_sub tmp9, tmp12, tmp13 + psq_st tmp22, 16(out1), 0, 6 + add out0, obase, off0 + ps_add tmp0, tmp6, tmp7 + psq_st tmp23, 24(out1), 0, 6 + ps_add tmp8, tmp8, bias + add out1, obase, off1 + bdnz _loopHead10 + psq_l tmp4, 8*1*sizeof(f32)(ws), 0, 0 + ps_msub tmp9, tmp9, cc4, tmp7 + psq_l tmp5, 8*3*sizeof(f32)(ws), 0, 0 + ps_sub tmp3, tmp6, tmp7 + ps_add tmp1, tmp8, tmp9 + psq_l tmp6, 8*5*sizeof(f32)(ws), 0, 0 + ps_sub tmp2, tmp8, tmp9 + psq_l tmp7, 8*7*sizeof(f32)(ws), 0, 0 + ps_add tmp8, tmp6, tmp5 + ps_sub tmp6, tmp6, tmp5 + ps_add tmp9, tmp4, tmp7 + ps_sub tmp4, tmp4, tmp7 + ps_add tmp7, tmp9, tmp8 + ps_sub tmp5, tmp9, tmp8 + ps_add tmp8, tmp6, tmp4 + ps_add tmp9, tmp0, tmp7 + ps_mul tmp8, tmp8, cc2 + ps_sub tmp23, tmp0, tmp7 + ps_madd tmp6, tmp6, cc2c6a, tmp8 + psq_st tmp9, 0(out0), 0, 6 + ps_sub tmp6, tmp6, tmp7 + ps_msub tmp4, tmp4, cc2c6s, tmp8 + psq_st tmp23, 24(out1), 0, 6 + ps_add tmp9, tmp1, tmp6 + ps_msub tmp5, tmp5, cc4, tmp6 + ps_sub tmp22, tmp1, tmp6 + psq_st tmp9, 8(out0), 0, 6 + ps_add tmp8, tmp2, tmp5 + ps_add tmp4, tmp4, tmp5 + psq_st tmp22, 16(out1), 0, 6 + psq_st tmp8, 16(out0), 0, 6 + ps_sub tmp9, tmp3, tmp4 + ps_add tmp20, tmp3, tmp4 + psq_st tmp9, 24(out0), 0, 6 + ps_sub tmp21, tmp2, tmp5 + psq_st tmp20, 0(out1), 0, 6 + psq_st tmp21, 8(out1), 0, 6 + } + // clang-format on + } +} + +inline void __THPInverseDCTY8(register THPCoeff *in, register u32 xPos) +{ + register f32 *q, *ws; + register f32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; + register f32 tmp10, tmp11, tmp12, tmp13; + register f32 tmp20, tmp21, tmp22, tmp23; + register f32 cc4 = 1.414213562F; + register f32 cc2 = 1.847759065F; + register f32 cc2c6s = 1.082392200F; + register f32 cc2c6a = -2.613125930F; + register f32 bias = 1024.0F; + + q = Gq; + ws = &__THPIDCTWorkspace[0] - 2; + + { + register u32 itmp0, itmp1, itmp2, itmp3; + + // clang-format off + asm { + li itmp2, 8 + mtctr itmp2 + + _loopHead0: + psq_l tmp10, 0(in), 0, 5 + psq_l tmp11, 0(q), 0, 0 + lwz itmp0, 12(in) + lwz itmp3, 8(in) + ps_mul tmp10, tmp10, tmp11 + lwz itmp1, 4(in) + lhz itmp2, 2(in) + or itmp0, itmp0, itmp3 + + _loopHead1: + cmpwi itmp0, 0 + bne _regularIDCT + ps_merge00 tmp0, tmp10, tmp10 + cmpwi itmp1, 0 + psq_st tmp0, 8(ws), 0, 0 + bne _halfIDCT + psq_st tmp0, 16(ws), 0, 0 + cmpwi itmp2, 0 + psq_st tmp0, 24(ws), 0, 0 + bne _quarterIDCT + addi q, q, 8*sizeof(f32) + psq_stu tmp0, 32(ws), 0, 0 + addi in, in, 8*sizeof(THPCoeff) + bdnz _loopHead0 + b _loopEnd + + _quarterIDCT: + ps_msub tmp2, tmp10, cc2, tmp10 + addi in, in, 8*sizeof(THPCoeff) + ps_merge00 tmp9, tmp10, tmp10 + addi q, q, 8*sizeof(f32) + ps_sub tmp1, cc2, cc2c6s + lwz itmp1, 4(in) + ps_msub tmp3, tmp10, cc4, tmp2 + lhz itmp2, 2(in) + ps_merge11 tmp5, tmp10, tmp2 + psq_l tmp11, 0(q), 0, 0 + ps_nmsub tmp4, tmp10, tmp1, tmp3 + ps_add tmp7, tmp9, tmp5 + psq_l tmp10, 0(in), 0, 5 + ps_merge11 tmp6, tmp3, tmp4 + ps_sub tmp5, tmp9, tmp5 + lwz itmp0, 12(in) + ps_add tmp8, tmp9, tmp6 + lwz itmp3, 8(in) + ps_sub tmp6, tmp9, tmp6 + psq_stu tmp7, 8(ws), 0, 0 + ps_merge10 tmp6, tmp6, tmp6 + psq_stu tmp8, 8(ws), 0, 0 + ps_merge10 tmp5, tmp5, tmp5 + or itmp0, itmp0, itmp3 + psq_stu tmp6, 8(ws), 0, 0 + ps_mul tmp10, tmp10, tmp11 + psq_stu tmp5, 8(ws), 0, 0 + bdnz _loopHead1 + b _loopEnd + + _halfIDCT: + psq_l tmp1, 4(in), 0, 5 + psq_l tmp9, 8(q), 0, 0 + addi in, in, 8*sizeof(THPCoeff) + ps_mul tmp1, tmp1, tmp9 + addi q, q, 8*sizeof(f32) + ps_sub tmp3, tmp10, tmp1 + ps_add tmp2, tmp10, tmp1 + lwz itmp0, 12(in) + ps_madd tmp4, tmp1, cc4, tmp3 + ps_nmsub tmp5, tmp1, cc4, tmp2 + ps_mul tmp8, tmp3, cc2 + ps_merge00 tmp4, tmp2, tmp4 + lwz itmp3, 8(in) + ps_nmsub tmp6, tmp1, cc2c6a, tmp8 + ps_merge00 tmp5, tmp5, tmp3 + lwz itmp1, 4(in) + ps_sub tmp6, tmp6, tmp2 + ps_msub tmp7, tmp10, cc2c6s, tmp8 + lhz itmp2, 2(in) + ps_merge11 tmp2, tmp2, tmp6 + ps_msub tmp8, tmp3, cc4, tmp6 + psq_l tmp10, 0(in), 0, 5 + ps_add tmp9, tmp4, tmp2 + ps_add tmp7, tmp8, tmp7 + psq_l tmp11, 0(q), 0, 0 + ps_merge11 tmp3, tmp8, tmp7 + ps_sub tmp4, tmp4, tmp2 + psq_stu tmp9, 8(ws), 0, 0 + ps_add tmp0, tmp5, tmp3 + ps_sub tmp1, tmp5, tmp3 + or itmp0, itmp0, itmp3 + psq_stu tmp0, 8(ws), 0, 0 + ps_merge10 tmp1, tmp1, tmp1 + ps_merge10 tmp4, tmp4, tmp4 + psq_stu tmp1, 8(ws), 0, 0 + ps_mul tmp10, tmp10, tmp11 + psq_stu tmp4, 8(ws), 0, 0 + bdnz _loopHead1 + b _loopEnd + + _regularIDCT: + psq_l tmp9, 4(in), 0, 5 + psq_l tmp5, 8(q), 0, 0 + ps_mul tmp9, tmp9, tmp5 + psq_l tmp2, 8(in), 0, 5 + psq_l tmp6, 16(q), 0, 0 + ps_merge01 tmp0, tmp10, tmp9 + psq_l tmp3, 12(in), 0, 5 + ps_merge01 tmp1, tmp9, tmp10 + psq_l tmp7, 24(q), 0, 0 + addi in, in, 8*sizeof(THPCoeff) + ps_madd tmp4, tmp2, tmp6, tmp0 + ps_nmsub tmp5, tmp2, tmp6, tmp0 + ps_madd tmp6, tmp3, tmp7, tmp1 + ps_nmsub tmp7, tmp3, tmp7, tmp1 + addi q, q, 8*sizeof(f32) + ps_add tmp0, tmp4, tmp6 + ps_sub tmp3, tmp4, tmp6 + ps_msub tmp2, tmp7, cc4, tmp6 + lwz itmp0, 12(in) + ps_sub tmp8, tmp7, tmp5 + ps_add tmp1, tmp5, tmp2 + ps_sub tmp2, tmp5, tmp2 + ps_mul tmp8, tmp8, cc2 + lwz itmp3, 8(in) + ps_merge00 tmp1, tmp0, tmp1 + ps_nmsub tmp6, tmp5, cc2c6a, tmp8 + ps_msub tmp4, tmp7, cc2c6s, tmp8 + lwz itmp1, 4(in) + ps_sub tmp6, tmp6, tmp0 + ps_merge00 tmp2, tmp2, tmp3 + lhz itmp2, 2(in) + ps_madd tmp5, tmp3, cc4, tmp6 + ps_merge11 tmp7, tmp0, tmp6 + psq_l tmp10, 0(in), 0, 5 + ps_sub tmp4, tmp4, tmp5 + ps_add tmp3, tmp1, tmp7 + psq_l tmp11, 0(q), 0, 0 + ps_merge11 tmp4, tmp5, tmp4 + ps_sub tmp0, tmp1, tmp7 + ps_mul tmp10, tmp10, tmp11 + ps_add tmp5, tmp2, tmp4 + ps_sub tmp6, tmp2, tmp4 + ps_merge10 tmp5, tmp5, tmp5 + psq_stu tmp3, 8(ws), 0, 0 + ps_merge10 tmp0, tmp0, tmp0 + psq_stu tmp6, 8(ws), 0, 0 + psq_stu tmp5, 8(ws), 0, 0 + or itmp0, itmp0, itmp3 + psq_stu tmp0, 8(ws), 0, 0 + bdnz _loopHead1 + + _loopEnd: + + } + // clang-format on + } + + ws = &__THPIDCTWorkspace[0]; + + { + register THPSample *obase = Gbase; + register u32 wid = Gwid; + + register u32 itmp0, off0, off1; + register THPSample *out0, *out1; + + // clang-format off + asm { + psq_l tmp10, 8*0*sizeof(f32)(ws), 0, 0 + slwi off0, wid, 3; + psq_l tmp11, 8*4*sizeof(f32)(ws), 0, 0 + slwi xPos, xPos, 2 + psq_l tmp12, 8*2*sizeof(f32)(ws), 0, 0 + slwi off1, wid, 2 + ps_add tmp6, tmp10, tmp11 + add off0, off0, xPos + psq_l tmp13, 8*6*sizeof(f32)(ws), 0, 0 + ps_sub tmp8, tmp10, tmp11 + add off1, off0, off1 + ps_add tmp6, tmp6, bias + li itmp0, 3 + ps_add tmp7, tmp12, tmp13 + add out0, obase, off0 + ps_sub tmp9, tmp12, tmp13 + ps_add tmp0, tmp6, tmp7 + add out1, obase, off1 + ps_add tmp8, tmp8, bias + mtctr itmp0 + + _loopHead10: + psq_l tmp4, 8*1*sizeof(f32)(ws), 0, 0 + ps_msub tmp9, tmp9, cc4, tmp7 + psq_l tmp5, 8*3*sizeof(f32)(ws), 0, 0 + ps_sub tmp3, tmp6, tmp7 + ps_add tmp1, tmp8, tmp9 + psq_l tmp6, 8*5*sizeof(f32)(ws), 0, 0 + ps_sub tmp2, tmp8, tmp9 + psq_l tmp7, 8*7*sizeof(f32)(ws), 0, 0 + ps_add tmp8, tmp6, tmp5 + ps_sub tmp6, tmp6, tmp5 + addi ws, ws, 2*sizeof(f32) + ps_add tmp9, tmp4, tmp7 + ps_sub tmp4, tmp4, tmp7 + psq_l tmp10, 8*0*sizeof(f32)(ws), 0, 0 + ps_add tmp7, tmp9, tmp8 + ps_sub tmp5, tmp9, tmp8 + ps_add tmp8, tmp6, tmp4 + psq_l tmp11, 8*4*sizeof(f32)(ws), 0, 0 + ps_add tmp9, tmp0, tmp7 + ps_mul tmp8, tmp8, cc2 + psq_l tmp12, 8*2*sizeof(f32)(ws), 0, 0 + ps_sub tmp23, tmp0, tmp7 + ps_madd tmp6, tmp6, cc2c6a, tmp8 + psq_l tmp13, 8*6*sizeof(f32)(ws), 0, 0 + ps_sub tmp6, tmp6, tmp7 + addi off0, off0, 2*sizeof(THPSample) + psq_st tmp9, 0(out0), 0, 6 + ps_msub tmp4, tmp4, cc2c6s, tmp8 + ps_add tmp9, tmp1, tmp6 + ps_msub tmp5, tmp5, cc4, tmp6 + ps_sub tmp22, tmp1, tmp6 + psq_st tmp9, 8(out0), 0, 6 + ps_add tmp8, tmp2, tmp5 + ps_add tmp4, tmp4, tmp5 + psq_st tmp8, 16(out0), 0, 6 + addi off1, off1, 2*sizeof(THPSample) + ps_sub tmp9, tmp3, tmp4 + ps_add tmp20, tmp3, tmp4 + psq_st tmp9, 24(out0), 0, 6 + ps_sub tmp21, tmp2, tmp5 + ps_add tmp6, tmp10, tmp11 + psq_st tmp20, 0(out1), 0, 6 + ps_sub tmp8, tmp10, tmp11 + ps_add tmp6, tmp6, bias + psq_st tmp21, 8(out1), 0, 6 + ps_add tmp7, tmp12, tmp13 + ps_sub tmp9, tmp12, tmp13 + psq_st tmp22, 16(out1), 0, 6 + add out0, obase, off0 + ps_add tmp0, tmp6, tmp7 + psq_st tmp23, 24(out1), 0, 6 + ps_add tmp8, tmp8, bias + add out1, obase, off1 + + bdnz _loopHead10 + psq_l tmp4, 8*1*sizeof(f32)(ws), 0, 0 + ps_msub tmp9, tmp9, cc4, tmp7 + psq_l tmp5, 8*3*sizeof(f32)(ws), 0, 0 + ps_sub tmp3, tmp6, tmp7 + ps_add tmp1, tmp8, tmp9 + psq_l tmp6, 8*5*sizeof(f32)(ws), 0, 0 + ps_sub tmp2, tmp8, tmp9 + psq_l tmp7, 8*7*sizeof(f32)(ws), 0, 0 + ps_add tmp8, tmp6, tmp5 + ps_sub tmp6, tmp6, tmp5 + ps_add tmp9, tmp4, tmp7 + ps_sub tmp4, tmp4, tmp7 + ps_add tmp7, tmp9, tmp8 + ps_sub tmp5, tmp9, tmp8 + ps_add tmp8, tmp6, tmp4 + ps_add tmp9, tmp0, tmp7 + ps_mul tmp8, tmp8, cc2 + ps_sub tmp23, tmp0, tmp7 + ps_madd tmp6, tmp6, cc2c6a, tmp8 + psq_st tmp9, 0(out0), 0, 6 + ps_sub tmp6, tmp6, tmp7 + ps_msub tmp4, tmp4, cc2c6s, tmp8 + psq_st tmp23, 24(out1), 0, 6 + ps_add tmp9, tmp1, tmp6 + ps_msub tmp5, tmp5, cc4, tmp6 + ps_sub tmp22, tmp1, tmp6 + psq_st tmp9, 8(out0), 0, 6 + ps_add tmp8, tmp2, tmp5 + ps_add tmp4, tmp4, tmp5 + psq_st tmp8, 16(out0), 0, 6 + ps_sub tmp9, tmp3, tmp4 + psq_st tmp22, 16(out1), 0, 6 + ps_add tmp20, tmp3, tmp4 + psq_st tmp9, 24(out0), 0, 6 + ps_sub tmp21, tmp2, tmp5 + psq_st tmp20, 0(out1), 0, 6 + psq_st tmp21, 8(out1), 0, 6 + + } + // clang-format on + } +} + +static void __THPDecompressiMCURow512x448(void) +{ + u8 cl_num; + u32 x_pos; + THPComponent *comp; + + LCQueueWait(3); + + for (cl_num = 0; cl_num < __THPInfo->MCUsPerRow; cl_num++) { + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[0]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[1]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[2]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[3]); + __THPHuffDecodeDCTCompU(__THPInfo, __THPMCUBuffer[4]); + __THPHuffDecodeDCTCompV(__THPInfo, __THPMCUBuffer[5]); + + comp = &__THPInfo->components[0]; + Gbase = __THPLCWork512[0]; + Gwid = 512; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + x_pos = (u32)(cl_num * 16); + __THPInverseDCTNoYPos(__THPMCUBuffer[0], x_pos); + __THPInverseDCTNoYPos(__THPMCUBuffer[1], x_pos + 8); + __THPInverseDCTY8(__THPMCUBuffer[2], x_pos); + __THPInverseDCTY8(__THPMCUBuffer[3], x_pos + 8); + + comp = &__THPInfo->components[1]; + Gbase = __THPLCWork512[1]; + Gwid = 256; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + x_pos /= 2; + __THPInverseDCTNoYPos(__THPMCUBuffer[4], x_pos); + comp = &__THPInfo->components[2]; + Gbase = __THPLCWork512[2]; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + __THPInverseDCTNoYPos(__THPMCUBuffer[5], x_pos); + + if (__THPInfo->RST != 0) { + if ((--__THPInfo->currMCU) == 0) { + __THPInfo->currMCU = __THPInfo->nMCU; + __THPInfo->cnt = 1 + ((__THPInfo->cnt + 6) & 0xFFFFFFF8); + + if (__THPInfo->cnt > 33) { + __THPInfo->cnt = 33; + } + + __THPInfo->components[0].predDC = 0; + __THPInfo->components[1].predDC = 0; + __THPInfo->components[2].predDC = 0; + } + } + } + + LCStoreData(__THPInfo->dLC[0], __THPLCWork512[0], 0x2000); + LCStoreData(__THPInfo->dLC[1], __THPLCWork512[1], 0x800); + LCStoreData(__THPInfo->dLC[2], __THPLCWork512[2], 0x800); + + __THPInfo->dLC[0] += 0x2000; + __THPInfo->dLC[1] += 0x800; + __THPInfo->dLC[2] += 0x800; +} + +inline s32 __THPHuffDecodeTab(register THPFileInfo *info, register THPHuffmanTab *h) +{ + register s32 code; + register u32 cnt; + register s32 cb; + register u32 increment; + register s32 tmp; + + // clang-format off + asm + { + lwz cnt, info->cnt; + addi increment, h, 32; + lwz cb, info->currByte; + addi code, cnt, 4; + cmpwi cnt, 28; + rlwnm tmp, cb, code, 27, 31; + bgt _notEnoughBits; + lbzx code, h, tmp; + lbzx increment, increment, tmp; + cmpwi code, 0xFF; + beq _FailedCheckEnoughBits; + add cnt, cnt, increment; + stw cnt, info->cnt; + } + // clang-format on +_done: + return code; + + { + register u32 maxcodebase; + register u32 tmp2; + + _FailedCheckEnoughBits: + maxcodebase = (u32) & (h->maxCode); + cnt += 5; + + // clang-format off + asm { + li tmp2, sizeof(s32)*(5); + li code, 5; + add maxcodebase, maxcodebase, tmp2; + __WHILE_START: + cmpwi cnt, 33; + slwi tmp, tmp, 1 + + beq _FCEB_faster; + rlwnm increment, cb, cnt, 31, 31; + lwzu tmp2, 4(maxcodebase); + or tmp, tmp, increment + addi cnt, cnt, 1; + b __WHILE_CHECK; + + _FCEB_faster: + lwz increment, info->c; + li cnt, 1; + lwzu cb, 4(increment); + lwzu tmp2, 4(maxcodebase); + + stw increment, info->c; + rlwimi tmp, cb, 1,31,31; + stw cb, info->currByte; + b __FL_WHILE_CHECK; + + __FL_WHILE_START: + slwi tmp, tmp, 1; + rlwnm increment, cb, cnt, 31, 31; + lwzu tmp2, 4(maxcodebase); + or tmp, tmp, increment; + + __FL_WHILE_CHECK: + cmpw tmp,tmp2 + addi cnt, cnt, 1; + addi code, code, 1 + bgt __FL_WHILE_START; + b _FCEB_Done; + + __WHILE_CHECK: + cmpw tmp,tmp2 + addi code, code, 1 + bgt __WHILE_START; + } + // clang-format on + } +_FCEB_Done: + info->cnt = cnt; + return (h->Vij[(s32)(tmp + h->valPtr[code])]); + + // clang-format off + asm + { + _notEnoughBits: + cmpwi cnt, 33; + lwz tmp, info->c; + beq _getfullword; + + cmpwi cnt, 32; + rlwnm code, cb, code, 27, 31 + beq _1bitleft; + + lbzx tmp, h, code; + lbzx increment, increment, code; + cmpwi tmp, 0xFF; + add code, cnt, increment; + beq _FailedCheckNoBits0; + + cmpwi code, 33; + stw code, info->cnt; + bgt _FailedCheckNoBits1; + } + // clang-format on + return tmp; + + // clang-format off + asm + { + _1bitleft: + lwzu cb, 4(tmp); + + stw tmp, info->c; + rlwimi code, cb, 4, 28, 31; + lbzx tmp, h, code; + lbzx increment, increment, code + stw cb, info->currByte; + cmpwi tmp, 0xFF + stw increment, info->cnt; + beq _Read4; + + } + // clang-format on + return tmp; + +_Read4 : { + register u32 maxcodebase = (u32) & (h->maxCode); + register u32 tmp2; + + // clang-format off + asm + { + li cnt, sizeof(s32)*5; + add maxcodebase, maxcodebase, cnt; + + slwi tmp, code, 32-5; + li cnt,5; + rlwimi tmp, cb, 32-1, 1,31; + + __DR4_WHILE_START: + + subfic cb, cnt, 31; + lwzu tmp2, 4(maxcodebase); + srw code, tmp, cb; + __DR4_WHILE_CHECK: + cmpw code, tmp2 + addi cnt, cnt, 1 + bgt __DR4_WHILE_START; + + } + // clang-format on +} + + info->cnt = cnt; +__CODE_PLUS_VP_CNT: + return (h->Vij[(s32)(code + h->valPtr[cnt])]); + +_getfullword: + // clang-format off + asm + { + lwzu cb, 4(tmp); + + rlwinm code, cb, 5, 27, 31 + stw tmp, info->c; + lbzx cnt, h, code; + lbzx increment, increment, code; + cmpwi cnt, 0xFF + stw cb, info->currByte; + addi increment, increment, 1 + beq _FailedCheckEnoughbits_Updated; + + stw increment, info->cnt; + } + // clang-format on + return (s32)cnt; + +_FailedCheckEnoughbits_Updated: + + cnt = 5; + do { + // clang-format off + asm + { + subfic tmp, cnt, 31; + addi cnt, cnt, 1; + srw code, cb, tmp; + } + // clang-format on + } while (code > h->maxCode[cnt]); + + info->cnt = cnt + 1; + goto __CODE_PLUS_VP_CNT; + +_FailedCheckNoBits0: +_FailedCheckNoBits1 : + +{ + register u32 mask = 0xFFFFFFFF << (33 - cnt); + register u32 tmp2; + + code = (s32)(cb & (~mask)); + mask = (u32) & (h->maxCode); + + // clang-format off + asm + { + lwz tmp, info->c; + subfic tmp2, cnt, 33; + addi cnt, tmp2, 1; + slwi tmp2, tmp2, 2; + lwzu cb, 4(tmp); + add mask,mask, tmp2; + stw tmp, info->c; + slwi code, code, 1; + stw cb, info->currByte; + rlwimi code, cb, 1, 31, 31; + lwzu tmp2, 4(mask); + li tmp, 2; + b __FCNB1_WHILE_CHECK; + + __FCNB1_WHILE_START: + slwi code, code, 1; + + addi cnt, cnt, 1; + lwzu tmp2, 4(mask); + add code, code, increment; + addi tmp, tmp, 1; + + __FCNB1_WHILE_CHECK: + cmpw code, tmp2; + rlwnm increment, cb, tmp, 31, 31; + bgt __FCNB1_WHILE_START; + + } + // clang-format on +} + + info->cnt = (u32)tmp; + return (h->Vij[(s32)(code + h->valPtr[cnt])]); +} + +static void __THPDecompressiMCURow640x480(void) +{ + u8 cl_num; + u32 x_pos; + THPComponent *comp; + + LCQueueWait(3); + + { + for (cl_num = 0; cl_num < __THPInfo->MCUsPerRow; cl_num++) { + THPFileInfo *um = __THPInfo; + __THPHuffDecodeDCTCompY(um, __THPMCUBuffer[0]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[1]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[2]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[3]); + __THPHuffDecodeDCTCompU(__THPInfo, __THPMCUBuffer[4]); + __THPHuffDecodeDCTCompV(__THPInfo, __THPMCUBuffer[5]); + + comp = &__THPInfo->components[0]; + Gbase = __THPLCWork640[0]; + Gwid = 640; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + x_pos = (u32)(cl_num * 16); + __THPInverseDCTNoYPos(__THPMCUBuffer[0], x_pos); + __THPInverseDCTNoYPos(__THPMCUBuffer[1], x_pos + 8); + __THPInverseDCTY8(__THPMCUBuffer[2], x_pos); + __THPInverseDCTY8(__THPMCUBuffer[3], x_pos + 8); + + comp = &__THPInfo->components[1]; + Gbase = __THPLCWork640[1]; + Gwid = 320; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + x_pos /= 2; + __THPInverseDCTNoYPos(__THPMCUBuffer[4], x_pos); + + comp = &__THPInfo->components[2]; + Gbase = __THPLCWork640[2]; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + __THPInverseDCTNoYPos(__THPMCUBuffer[5], x_pos); + + if (__THPInfo->RST != 0) { + __THPInfo->currMCU--; + if (__THPInfo->currMCU == 0) { + __THPInfo->currMCU = __THPInfo->nMCU; + + __THPInfo->cnt = 1 + ((__THPInfo->cnt + 6) & 0xFFFFFFF8); + + if (__THPInfo->cnt > 32) { + __THPInfo->cnt = 33; + } + + __THPInfo->components[0].predDC = 0; + __THPInfo->components[1].predDC = 0; + __THPInfo->components[2].predDC = 0; + } + } + } + } + + LCStoreData(__THPInfo->dLC[0], __THPLCWork640[0], 0x2800); + LCStoreData(__THPInfo->dLC[1], __THPLCWork640[1], 0xA00); + LCStoreData(__THPInfo->dLC[2], __THPLCWork640[2], 0xA00); + + __THPInfo->dLC[0] += 0x2800; + __THPInfo->dLC[1] += 0xA00; + __THPInfo->dLC[2] += 0xA00; +} + +static void __THPDecompressiMCURowNxN(void) +{ + u8 cl_num; + u32 x_pos, x; + THPComponent *comp; + + x = __THPInfo->xPixelSize; + + LCQueueWait(3); + + for (cl_num = 0; cl_num < __THPInfo->MCUsPerRow; cl_num++) { + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[0]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[1]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[2]); + __THPHuffDecodeDCTCompY(__THPInfo, __THPMCUBuffer[3]); + __THPHuffDecodeDCTCompU(__THPInfo, __THPMCUBuffer[4]); + __THPHuffDecodeDCTCompV(__THPInfo, __THPMCUBuffer[5]); + + comp = &__THPInfo->components[0]; + Gbase = __THPLCWork640[0]; + Gwid = x; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + x_pos = (u32)(cl_num * 16); + __THPInverseDCTNoYPos(__THPMCUBuffer[0], x_pos); + __THPInverseDCTNoYPos(__THPMCUBuffer[1], x_pos + 8); + __THPInverseDCTY8(__THPMCUBuffer[2], x_pos); + __THPInverseDCTY8(__THPMCUBuffer[3], x_pos + 8); + + comp = &__THPInfo->components[1]; + Gbase = __THPLCWork640[1]; + Gwid = x / 2; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + x_pos /= 2; + __THPInverseDCTNoYPos(__THPMCUBuffer[4], x_pos); + + comp = &__THPInfo->components[2]; + Gbase = __THPLCWork640[2]; + Gq = __THPInfo->quantTabs[comp->quantizationTableSelector]; + __THPInverseDCTNoYPos(__THPMCUBuffer[5], x_pos); + + if (__THPInfo->RST != 0) { + __THPInfo->currMCU--; + if (__THPInfo->currMCU == 0) { + __THPInfo->currMCU = __THPInfo->nMCU; + __THPInfo->cnt = 1 + ((__THPInfo->cnt + 6) & 0xFFFFFFF8); + + if (__THPInfo->cnt > 32) { + __THPInfo->cnt = 33; + } + + __THPInfo->components[0].predDC = 0; + __THPInfo->components[1].predDC = 0; + __THPInfo->components[2].predDC = 0; + } + } + } + + LCStoreData(__THPInfo->dLC[0], __THPLCWork640[0], ((4 * sizeof(u8) * 64) * (x / 16))); + LCStoreData(__THPInfo->dLC[1], __THPLCWork640[1], ((sizeof(u8) * 64) * (x / 16))); + LCStoreData(__THPInfo->dLC[2], __THPLCWork640[2], ((sizeof(u8) * 64) * (x / 16))); + __THPInfo->dLC[0] += ((4 * sizeof(u8) * 64) * (x / 16)); + __THPInfo->dLC[1] += ((sizeof(u8) * 64) * (x / 16)); + __THPInfo->dLC[2] += ((sizeof(u8) * 64) * (x / 16)); +} + +static void __THPHuffDecodeDCTCompY(register THPFileInfo *info, THPCoeff *block) +{ + { + register s32 t; + THPCoeff dc; + register THPCoeff diff; + + __dcbz((void *)block, 0); + t = __THPHuffDecodeTab(info, Ydchuff); + __dcbz((void *)block, 32); + diff = 0; + __dcbz((void *)block, 64); + + if (t) { + { + register s32 v; + register u32 cb; + register u32 cnt; + register u32 code; + register u32 tmp; + register u32 cnt1; + register u32 tmp1; + // clang-format off + asm { + lwz cnt,info->cnt; + subfic code,cnt,33; + lwz cb,info->currByte; + + subfc. tmp, code, t; + subi cnt1,cnt,1; + + bgt _notEnoughBitsDIFF; + add v,cnt,t; + + slw cnt,cb,cnt1; + stw v,info->cnt; + subfic v,t,32; + srw diff,cnt,v; + } + // clang-format on + + // clang-format off + asm + { + b _DoneDIFF; + _notEnoughBitsDIFF: + lwz tmp1, info->c; + slw v, cb, cnt1; + lwzu cb, 4(tmp1); + addi tmp, tmp, 1; + stw cb, info->currByte; + srw cb, cb, code; + stw tmp1, info->c; + add v, cb, v; + stw tmp, info->cnt; + subfic tmp, t, 32; + srw diff, v, tmp; + _DoneDIFF: + } + // clang-format on + } + + if (__cntlzw((u32)diff) > 32 - t) { + diff += ((0xFFFFFFFF << t) + 1); + } + }; + + __dcbz((void *)block, 96); + dc = (s16)(info->components[0].predDC + diff); + block[0] = info->components[0].predDC = dc; + } + + { + register s32 k; + register s32 code; + register u32 cnt; + register u32 cb; + register u32 increment; + register s32 tmp; + register THPHuffmanTab *h = Yachuff; + + // clang-format off + asm + { + lwz cnt, info->cnt; + addi increment, h, 32; + lwz cb, info->currByte; + } + // clang-format on + + for (k = 1; k < 64; k++) + { + register s32 ssss; + register s32 rrrr; + + // clang-format off + asm { + addi code, cnt, 4; + cmpwi cnt, 28; + rlwnm tmp, cb, code, 27, 31; + bgt _notEnoughBits; + + lbzx ssss, h, tmp; + lbzx code, increment, tmp; + cmpwi ssss, 0xFF; + + beq _FailedCheckEnoughBits; + add cnt, cnt, code; + b _DoneDecodeTab; + } + // clang-format on + + { + register u32 maxcodebase; + register u32 tmp2; + + _FailedCheckEnoughBits: + cnt += 5; + maxcodebase = (u32) & (h->maxCode); + // clang-format off + asm { + li tmp2, sizeof(s32)*(5); + li code, 5; + add maxcodebase, maxcodebase, tmp2; + __WHILE_START: + cmpwi cnt, 33; + slwi tmp, tmp, 1 + + beq _FCEB_faster; + rlwnm ssss, cb, cnt, 31, 31; + lwzu tmp2, 4(maxcodebase); + or tmp, tmp, ssss + addi cnt, cnt, 1; + b __WHILE_CHECK; + + _FCEB_faster: + lwz ssss, info->c; + li cnt, 1; + lwzu cb, 4(ssss); + + lwzu tmp2, 4(maxcodebase); + + stw ssss, info->c; + rlwimi tmp, cb, 1,31,31; + b __FL_WHILE_CHECK; + + __FL_WHILE_START: + slwi tmp, tmp, 1; + + rlwnm ssss, cb, cnt, 31, 31; + lwzu tmp2, 4(maxcodebase); + or tmp, tmp, ssss; + + __FL_WHILE_CHECK: + cmpw tmp,tmp2 + addi cnt, cnt, 1; + addi code, code, 1 + bgt __FL_WHILE_START; + b _FCEB_Done; + + __WHILE_CHECK: + cmpw tmp,tmp2 + addi code, code, 1 + bgt __WHILE_START; + } + // clang-format on + } + _FCEB_Done: + ssss = (h->Vij[(s32)(tmp + h->valPtr[code])]); + goto _DoneDecodeTab; + + _notEnoughBits: + // clang-format off + asm + { + cmpwi cnt, 33; + lwz tmp, info->c; + beq _getfullword; + + cmpwi cnt, 32; + rlwnm code, cb, code, 27, 31 + beq _1bitleft; + + lbzx ssss, h, code; + lbzx rrrr, increment, code; + cmpwi ssss, 0xFF; + add code, cnt, rrrr; + beq _FailedCheckNoBits0; + + cmpwi code, 33; + bgt _FailedCheckNoBits1; + } + // clang-format on + cnt = (u32)code; + goto _DoneDecodeTab; + + _getfullword : { + // clang-format off + asm + { + lwzu cb, 4(tmp); + rlwinm code, cb, 5, 27, 31 + stw tmp, info->c; + lbzx ssss, h, code; + lbzx tmp, increment, code; + cmpwi ssss, 0xFF + addi cnt, tmp, 1 + beq _FailedCheckEnoughbits_Updated; + } + // clang-format on + } + goto _DoneDecodeTab; + + _FailedCheckEnoughbits_Updated: + ssss = 5; + do { + // clang-format off + asm + { + subfic tmp, ssss, 31; + addi ssss, ssss, 1; + srw code, cb, tmp; + } + // clang-format on + } while (code > h->maxCode[ssss]); + + cnt = (u32)(ssss + 1); + ssss = (h->Vij[(s32)(code + h->valPtr[ssss])]); + + goto _DoneDecodeTab; + + _1bitleft: + // clang-format off + asm { + lwzu cb, 4(tmp); + + stw tmp, info->c; + rlwimi code, cb, 4, 28, 31; + lbzx ssss, h, code; + lbzx cnt, increment, code + cmpwi ssss, 0xFF + beq _Read4; + + } + // clang-format on + + goto _DoneDecodeTab; + + _Read4 : { + register u32 maxcodebase = (u32) & (h->maxCode); + register u32 tmp2; + + // clang-format off + asm { + li cnt, sizeof(s32)*5; + add maxcodebase, maxcodebase, cnt; + + slwi tmp, code, 32-5; + li cnt,5; + rlwimi tmp, cb, 32-1, 1,31; + + __DR4_WHILE_START: + + subfic ssss, cnt, 31; + lwzu tmp2, 4(maxcodebase); + srw code, tmp, ssss; + __DR4_WHILE_CHECK: + cmpw code, tmp2 + addi cnt, cnt, 1 + bgt __DR4_WHILE_START; + + } + // clang-format on + } + ssss = (h->Vij[(s32)(code + h->valPtr[cnt])]); + goto _DoneDecodeTab; + + _FailedCheckNoBits0: + _FailedCheckNoBits1: + _REALFAILEDCHECKNOBITS : { + register u32 mask = 0xFFFFFFFF << (33 - cnt); + register u32 tmp2; + register u32 tmp3; + code = (s32)(cb & (~mask)); + mask = (u32) & (h->maxCode); + + // clang-format off + asm { + lwz tmp, info->c; + subfic tmp2, cnt, 33; + addi tmp3, tmp2, 1; + slwi tmp2, tmp2, 2; + lwzu cb, 4(tmp); + add mask,mask, tmp2; + stw tmp, info->c; + slwi code, code, 1; + rlwimi code, cb, 1, 31, 31; + lwzu tmp2, 4(mask); + li cnt, 2; + b __FCNB1_WHILE_CHECK; + + __FCNB1_WHILE_START: + slwi code, code, 1; + + addi tmp3, tmp3, 1; + lwzu tmp2, 4(mask); + add code, code, rrrr; + addi cnt, cnt, 1; + + __FCNB1_WHILE_CHECK: + cmpw code, tmp2; + rlwnm rrrr, cb, cnt, 31, 31; + bgt __FCNB1_WHILE_START; + + } + // clang-format on + ssss = (h->Vij[(s32)(code + h->valPtr[tmp3])]); + } + + goto _DoneDecodeTab; + + _DoneDecodeTab: + // clang-format off + asm { + andi. rrrr, ssss, 15; + srawi ssss, ssss, 4; + beq _RECV_SSSS_ZERO; + } + // clang-format on + + { + k += ssss; + { + register s32 v; + register u32 cnt1; + register u32 tmp1; + // clang-format off + asm + { + subfic code,cnt,33; + subfc. tmp, code, rrrr; + subi cnt1,cnt,1; + bgt _RECVnotEnoughBits; + add cnt,cnt,rrrr; + slw tmp1,cb,cnt1; + subfic v,rrrr,32; + srw ssss,tmp1,v; + } + // clang-format on + // clang-format off + asm + { + b _RECVDone; + _RECVnotEnoughBits: + lwz tmp1, info->c; + slw v, cb, cnt1; + lwzu cb, 4(tmp1); + addi cnt, tmp, 1; + stw tmp1, info->c; + srw tmp1, cb, code; + + add v, tmp1, v; + subfic tmp, rrrr, 32; + srw ssss, v, tmp; + _RECVDone: + } + // clang-format on + } + + if (__cntlzw((u32)ssss) > 32 - rrrr) { + ssss += ((0xFFFFFFFF << rrrr) + 1); + } + + block[__THPJpegNaturalOrder[k]] = (s16)ssss; + goto _RECV_END; + } + + { + _RECV_SSSS_ZERO: + if (ssss != 15) { + break; + } + + k += 15; + }; + + // clang-format off + asm + { + _RECV_END: + } + // clang-format on + } + info->cnt = cnt; + info->currByte = cb; + } +} + +static void __THPHuffDecodeDCTCompU(register THPFileInfo *info, THPCoeff *block) +{ + register s32 t; + register THPCoeff diff; + THPCoeff dc; + register s32 v; + register u32 cb; + register u32 cnt; + register u32 cnt33; + register u32 tmp; + register u32 cnt1; + register u32 tmp1; + register s32 k; + register s32 ssss; + register s32 rrrr; + + __dcbz((void *)block, 0); + t = __THPHuffDecodeTab(info, Udchuff); + __dcbz((void *)block, 32); + diff = 0; + __dcbz((void *)block, 64); + + if (t) { + // clang-format off + asm + { + lwz cnt,info->cnt; + subfic cnt33,cnt,33; + lwz cb,info->currByte; + subfc. tmp, cnt33, t; + subi cnt1,cnt,1; + bgt _notEnoughBitsDIFF; + add v,cnt,t; + slw cnt,cb,cnt1; + stw v,info->cnt; + subfic v,t,32; + srw diff,cnt,v; + } + // clang-format on + + // clang-format off + asm + { + b _DoneDIFF; + _notEnoughBitsDIFF: + lwz tmp1, info->c; + slw v, cb, cnt1; + lwzu cb, 4(tmp1); + addi tmp, tmp, 1; + stw cb, info->currByte; + srw cb, cb, cnt33; + stw tmp1, info->c; + add v, cb, v; + stw tmp, info->cnt; + subfic tmp, t, 32; + srw diff, v, tmp; + _DoneDIFF: + } + // clang-format on + + if (__cntlzw((u32)diff) > 32 - t) { + diff += ((0xFFFFFFFF << t) + 1); + } + } + + __dcbz((void *)block, 96); + dc = (s16)(info->components[1].predDC + diff); + block[0] = info->components[1].predDC = dc; + + for (k = 1; k < 64; k++) { + ssss = __THPHuffDecodeTab(info, Uachuff); + rrrr = ssss >> 4; + ssss &= 15; + + if (ssss) { + k += rrrr; + // clang-format off + asm + { + lwz cnt,info->cnt; + subfic cnt33,cnt,33; + lwz cb,info->currByte; + subf. tmp, cnt33, ssss; + subi cnt1,cnt,1; + bgt _notEnoughBits; + add v,cnt,ssss; + slw cnt,cb,cnt1; + stw v,info->cnt; + subfic v,ssss,32; + srw rrrr,cnt,v; + } + // clang-format on + + // clang-format off + asm + { + b _Done; + _notEnoughBits: + lwz tmp1, info->c; + slw v, cb, cnt1; + lwzu cb, 4(tmp1); + addi tmp, tmp, 1; + stw cb, info->currByte; + srw cb, cb, cnt33; + stw tmp1, info->c; + add v, cb, v; + stw tmp, info->cnt; + subfic tmp, ssss, 32; + srw rrrr, v, tmp; + _Done: + } + // clang-format on + + if (__cntlzw((u32)rrrr) > 32 - ssss) { + rrrr += ((0xFFFFFFFF << ssss) + 1); + } + + block[__THPJpegNaturalOrder[k]] = (s16)rrrr; + } + + else { + if (rrrr != 15) + break; + k += 15; + } + } +} + +static void __THPHuffDecodeDCTCompV(register THPFileInfo *info, THPCoeff *block) +{ + register s32 t; + register THPCoeff diff; + THPCoeff dc; + register s32 v; + register u32 cb; + register u32 cnt; + register u32 cnt33; + register u32 tmp; + register u32 cnt1; + register u32 tmp1; + register s32 k; + register s32 ssss; + register s32 rrrr; + + __dcbz((void *)block, 0); + t = __THPHuffDecodeTab(info, Vdchuff); + __dcbz((void *)block, 32); + diff = 0; + __dcbz((void *)block, 64); + + if (t) { + // clang-format off + asm + { + lwz cnt,info->cnt; + subfic cnt33,cnt,33; + lwz cb,info->currByte; + subf. tmp, cnt33, t; + subi cnt1,cnt,1; + bgt _notEnoughBitsDIFF; + add v,cnt,t; + slw cnt,cb,cnt1; + stw v,info->cnt; + subfic v,t,32; + srw diff,cnt,v; + } + // clang-format on + + // clang-format off + asm + { + b _DoneDIFF; + _notEnoughBitsDIFF: + lwz tmp1, info->c; + slw v, cb, cnt1; + lwzu cb, 4(tmp1); + addi tmp, tmp, 1; + stw cb, info->currByte; + srw cb, cb, cnt33; + stw tmp1, info->c; + add v, cb, v; + stw tmp, info->cnt; + subfic tmp, t, 32; + srw diff, v, tmp; + _DoneDIFF: + } + // clang-format on + + if (__cntlzw((u32)diff) > 32 - t) { + diff += ((0xFFFFFFFF << t) + 1); + } + } + + __dcbz((void *)block, 96); + + dc = (s16)(info->components[2].predDC + diff); + block[0] = info->components[2].predDC = dc; + + for (k = 1; k < 64; k++) { + ssss = __THPHuffDecodeTab(info, Vachuff); + rrrr = ssss >> 4; + ssss &= 15; + + if (ssss) { + k += rrrr; + + // clang-format off + asm + { + lwz cnt,info->cnt; + subfic cnt33,cnt,33; + lwz cb,info->currByte; + + subf. tmp, cnt33, ssss; + subi cnt1,cnt,1; + + bgt _notEnoughBits; + add v,cnt,ssss; + + slw cnt,cb,cnt1; + stw v,info->cnt; + subfic v,ssss,32; + srw rrrr,cnt,v; + } + // clang-format on + + // clang-format off + asm + { + b _Done; + _notEnoughBits: + lwz tmp1, info->c; + slw v, cb, cnt1; + lwzu cb, 4(tmp1); + addi tmp, tmp, 1; + stw cb, info->currByte; + srw cb, cb, cnt33; + stw tmp1, info->c; + add v, cb, v; + stw tmp, info->cnt; + subfic tmp, ssss, 32; + srw rrrr, v, tmp; + _Done: + } + // clang-format on + + if (__cntlzw((u32)rrrr) > 32 - ssss) { + rrrr += ((0xFFFFFFFF << ssss) + 1); + } + + block[__THPJpegNaturalOrder[k]] = (s16)rrrr; + } + else { + if (rrrr != 15) + break; + k += 15; + } + } +} + +BOOL THPInit(void) +{ + u8 *base; + base = (u8 *)(0xE000 << 16); + + __THPLCWork512[0] = base; + base += 0x2000; + __THPLCWork512[1] = base; + base += 0x800; + __THPLCWork512[2] = base; + base += 0x200; + + base = (u8 *)(0xE000 << 16); + __THPLCWork640[0] = base; + base += 0x2800; + __THPLCWork640[1] = base; + base += 0xA00; + __THPLCWork640[2] = base; + base += 0xA00; + + OSInitFastCast(); + + __THPInitFlag = TRUE; + return TRUE; +} diff --git a/src/dolphin/vi.c b/src/dolphin/vi.c new file mode 100644 index 00000000..3cdedba0 --- /dev/null +++ b/src/dolphin/vi.c @@ -0,0 +1,943 @@ +#include "dolphin/vi.h" +#include "dolphin/OSRtcPriv.h" +#include "dolphin/hw_regs.h" +#include "dolphin/os.h" + +// Useful macros. +#define CLAMP(x, l, h) (((x) > (h)) ? (h) : (((x) < (l)) ? (l) : (x))) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define IS_LOWER_16MB(x) ((x) < 16 * 1024 * 1024) +#define ToPhysical(fb) (u32)(((u32)(fb)) & 0x3FFFFFFF) +#define ONES(x) ((1 << (x)) - 1) +#define VI_BITMASK(index) (1ull << (63 - (index))) + +static BOOL IsInitialized; +static vu32 retraceCount; +static u32 flushFlag; +static OSThreadQueue retraceQueue; +static VIRetraceCallback PreCB; +static VIRetraceCallback PostCB; +static u32 encoderType; + +static s16 displayOffsetH; +static s16 displayOffsetV; + +static vu32 changeMode; +static vu64 changed; + +static vu32 shdwChangeMode; +static vu64 shdwChanged; + +static VITimingInfo *CurrTiming; +static u32 CurrTvMode; + +static u32 NextBufAddr; +static u32 CurrBufAddr; + +static u32 FBSet; + +static vu16 regs[60]; +static vu16 shdwRegs[60]; + +static VIPositionInfo HorVer; +// clang-format off +static VITimingInfo timing[8] = { + { // NTSC INT + 6, 240, 24, 25, 3, 2, 12, 13, 12, 13, 520, 519, 520, 519, 525, 429, 64, 71, 105, 162, 373, 122, 412, + }, + { // NTSC DS + 6, 240, 24, 24, 4, 4, 12, 12, 12, 12, 520, 520, 520, 520, 526, 429, 64, 71, 105, 162, 373, 122, 412, + }, + { // PAL INT + 5, 287, 35, 36, 1, 0, 13, 12, 11, 10, 619, 618, 617, 620, 625, 432, 64, 75, 106, 172, 380, 133, 420, + }, + { // PAL DS + 5, 287, 33, 33, 2, 2, 13, 11, 13, 11, 619, 621, 619, 621, 624, 432, 64, 75, 106, 172, 380, 133, 420, + }, + { // MPAL INT + 6, 240, 24, 25, 3, 2, 16, 15, 14, 13, 518, 517, 516, 519, 525, 429, 64, 78, 112, 162, 373, 122, 412, + }, + { // MPAL DS + 6, 240, 24, 24, 4, 4, 16, 14, 16, 14, 518, 520, 518, 520, 526, 429, 64, 78, 112, 162, 373, 122, 412, + }, + { // NTSC PRO + 12, 480, 48, 48, 6, 6, 24, 24, 24, 24, 1038, 1038, 1038, 1038, 1050, 429, 64, 71, 105, 162, 373, 122, 412, + }, + { // NTSC 3D + 12, 480, 44, 44, 10, 10, 24, 24, 24, 24, 1038, 1038, 1038, 1038, 1050, 429, 64, 71, 105, 168, 379, 122, 412, + }, +}; +// clang-format on + +static u16 taps[25] = { 496, 476, 430, 372, 297, 219, 142, 70, 12, 226, 203, 192, 196, 207, 222, 236, 252, 8, 15, 19, 19, 15, 12, 8, 1 }; + +// forward declaring statics +static u32 getCurrentFieldEvenOdd(); + +static void getEncoderType(void) +{ + // UNUSED FUNCTION +} + +static int cntlzd(u64 bit) +{ + u32 hi, lo; + int value; + + hi = (u32)(bit >> 32); + lo = (u32)(bit & 0xFFFFFFFF); + value = __cntlzw(hi); + + if (value < 32) { + return value; + } + + return (32 + __cntlzw(lo)); +} + +static BOOL VISetRegs(void) +{ + int regIndex; + + if (!((shdwChangeMode == 1) && (getCurrentFieldEvenOdd() == 0))) { + while (shdwChanged) { + regIndex = cntlzd(shdwChanged); + __VIRegs[regIndex] = shdwRegs[regIndex]; + shdwChanged &= ~(VI_BITMASK(regIndex)); + } + + shdwChangeMode = 0; + CurrTiming = HorVer.timing; + CurrTvMode = HorVer.tv; + + return TRUE; + } + return FALSE; +} + +static void __VIRetraceHandler(__OSInterrupt interrupt, OSContext *context) +{ + OSContext exceptionContext; + u16 viReg; + u32 inter = 0; + + viReg = __VIRegs[VI_DISP_INT_0]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_0] = (u16)(viReg & ~0x8000); + inter |= 1; + } + + viReg = __VIRegs[VI_DISP_INT_1]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_1] = (u16)(viReg & ~0x8000); + inter |= 2; + } + + viReg = __VIRegs[VI_DISP_INT_2]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_2] = (u16)(viReg & ~0x8000); + inter |= 4; + } + + viReg = __VIRegs[VI_DISP_INT_3]; + if (viReg & 0x8000) { + __VIRegs[VI_DISP_INT_3] = (u16)(viReg & ~0x8000); + inter |= 8; + } + + if ((inter & 4) || (inter & 8)) { + OSSetCurrentContext(context); + return; + } + + retraceCount++; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + if (PreCB) { + (*PreCB)(retraceCount); + } + + if (flushFlag) { + if (VISetRegs()) { + flushFlag = 0; + SIRefreshSamplingRate(); + } + } + + if (PostCB) { + OSClearContext(&exceptionContext); + (*PostCB)(retraceCount); + } + + OSWakeupThread(&retraceQueue); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); +} + +VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback callback) +{ + int interrupt; + VIRetraceCallback oldCallback; + + oldCallback = PreCB; + + interrupt = OSDisableInterrupts(); + PreCB = callback; + OSRestoreInterrupts(interrupt); + + return oldCallback; +} + +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) +{ + int interrupt; + VIRetraceCallback oldCallback; + + oldCallback = PostCB; + + interrupt = OSDisableInterrupts(); + PostCB = callback; + OSRestoreInterrupts(interrupt); + + return oldCallback; +} + +#pragma dont_inline on +static VITimingInfo *getTiming(VITVMode mode) +{ + switch (mode) { + case VI_TVMODE_NTSC_INT: + return &timing[0]; + case VI_TVMODE_NTSC_DS: + return &timing[1]; + + case VI_TVMODE_PAL_INT: + return &timing[2]; + case VI_TVMODE_PAL_DS: + return &timing[3]; + + case VI_TVMODE_EURGB60_INT: + return &timing[0]; + case VI_TVMODE_EURGB60_DS: + return &timing[1]; + + case VI_TVMODE_MPAL_INT: + return &timing[4]; + case VI_TVMODE_MPAL_DS: + return &timing[5]; + + case VI_TVMODE_NTSC_PROG: + return &timing[6]; + case VI_TVMODE_NTSC_3D: + return &timing[7]; + + case VI_TVMODE_DEBUG_PAL_INT: + return &timing[2]; + case VI_TVMODE_DEBUG_PAL_DS: + return &timing[3]; + } + + return nullptr; +} +#pragma dont_inline off + +void __VIInit(VITVMode mode) +{ + VITimingInfo *tm; + u32 nonInter; + vu32 a; + u32 tv, tvForReg; + + u16 hct, vct; + + nonInter = mode & 2; + tv = (u32)mode >> 2; + + *(u32 *)OSPhysicalToCached(0xCC) = tv; + + tm = getTiming(mode); + + __VIRegs[VI_DISP_CONFIG] = 2; + for (a = 0; a < 1000; a++) { + ; + } + + __VIRegs[VI_DISP_CONFIG] = 0; + + __VIRegs[VI_HORIZ_TIMING_0U] = tm->hlw << 0; + __VIRegs[VI_HORIZ_TIMING_0L] = (tm->hce << 0) | (tm->hcs << 8); + + __VIRegs[VI_HORIZ_TIMING_1U] = (tm->hsy << 0) | ((tm->hbe640 & ((1 << 9) - 1)) << 7); + __VIRegs[VI_HORIZ_TIMING_1L] = ((tm->hbe640 >> 9) << 0) | (tm->hbs640 << 1); + + __VIRegs[VI_VERT_TIMING] = (tm->equ << 0) | (0 << 4); + + __VIRegs[VI_VERT_TIMING_ODD_U] = (tm->prbOdd + tm->acv * 2 - 2) << 0; + __VIRegs[VI_VERT_TIMING_ODD] = tm->psbOdd + 2 << 0; + + __VIRegs[VI_VERT_TIMING_EVEN_U] = (tm->prbEven + tm->acv * 2 - 2) << 0; + __VIRegs[VI_VERT_TIMING_EVEN] = tm->psbEven + 2 << 0; + + __VIRegs[VI_BBI_ODD_U] = (tm->bs1 << 0) | (tm->be1 << 5); + __VIRegs[VI_BBI_ODD] = (tm->bs3 << 0) | (tm->be3 << 5); + + __VIRegs[VI_BBI_EVEN_U] = (tm->bs2 << 0) | (tm->be2 << 5); + __VIRegs[VI_BBI_EVEN] = (tm->bs4 << 0) | (tm->be4 << 5); + + __VIRegs[VI_HSW] = (40 << 0) | (40 << 8); + + __VIRegs[VI_DISP_INT_1U] = 1; + __VIRegs[VI_DISP_INT_1] = (1 << 0) | (1 << 12) | (0 << 15); + + hct = (tm->hlw + 1); + vct = (tm->numHalfLines / 2 + 1) | (1 << 12) | (0 << 15); + __VIRegs[VI_DISP_INT_0U] = hct << 0; + __VIRegs[VI_DISP_INT_0] = vct; + + if (mode != VI_TVMODE_NTSC_PROG && mode != VI_TVMODE_NTSC_3D) { + __VIRegs[VI_DISP_CONFIG] = (1 << 0) | (0 << 1) | (nonInter << 2) | (0 << 3) | (0 << 4) | (0 << 6) | (tv << 8); + __VIRegs[VI_CLOCK_SEL] = 0; + } + else { + __VIRegs[VI_DISP_CONFIG] = (1 << 0) | (0 << 1) | (1 << 2) | (0 << 3) | (0 << 4) | (0 << 6) | (tv << 8); + __VIRegs[VI_CLOCK_SEL] = 1; + } +} + +static void AdjustPosition(u16 acv) +{ + s32 coeff, frac; + + HorVer.adjDispPosX = (u16)CLAMP((s16)HorVer.dispPosX + displayOffsetH, 0, 720 - HorVer.dispSizeX); + + coeff = (HorVer.xfbMode == VI_XFBMODE_SF) ? 2 : 1; + frac = HorVer.dispPosY & 1; + + HorVer.adjDispPosY = (u16)MAX((s16)HorVer.dispPosY + displayOffsetV, frac); + + HorVer.adjDispSizeY = (u16)(HorVer.dispSizeY + MIN((s16)HorVer.dispPosY + displayOffsetV - frac, 0) + - MAX((s16)HorVer.dispPosY + (s16)HorVer.dispSizeY + displayOffsetV - ((s16)acv * 2 - frac), 0)); + + HorVer.adjPanPosY = (u16)(HorVer.panPosY - MIN((s16)HorVer.dispPosY + displayOffsetV - frac, 0) / coeff); + + HorVer.adjPanSizeY = (u16)(HorVer.panSizeY + MIN((s16)HorVer.dispPosY + displayOffsetV - frac, 0) / coeff + - MAX((s16)HorVer.dispPosY + (s16)HorVer.dispSizeY + displayOffsetV - ((s16)acv * 2 - frac), 0) / coeff); +} + +static void ImportAdjustingValues(void) +{ + displayOffsetH = __OSLockSram()->displayOffsetH; + displayOffsetV = 0; + __OSUnlockSram(FALSE); +} + +void VIInit(void) +{ + u16 dspCfg; + u32 value, tv; + + encoderType = 1; + + if (!(__VIRegs[VI_DISP_CONFIG] & 1)) { + __VIInit(VI_TVMODE_NTSC_INT); + } + + retraceCount = 0; + changed = 0; + shdwChanged = 0; + changeMode = 0; + shdwChangeMode = 0; + flushFlag = 0; + + __VIRegs[VI_FCT_0U] = ((((taps[0])) << 0) | (((taps[1] & ((1 << (6)) - 1))) << 10)); + __VIRegs[VI_FCT_0] = ((((taps[1] >> 6)) << 0) | (((taps[2])) << 4)); + __VIRegs[VI_FCT_1U] = ((((taps[3])) << 0) | (((taps[4] & ((1 << (6)) - 1))) << 10)); + __VIRegs[VI_FCT_1] = ((((taps[4] >> 6)) << 0) | (((taps[5])) << 4)); + __VIRegs[VI_FCT_2U] = ((((taps[6])) << 0) | (((taps[7] & ((1 << (6)) - 1))) << 10)); + __VIRegs[VI_FCT_2] = ((((taps[7] >> 6)) << 0) | (((taps[8])) << 4)); + __VIRegs[VI_FCT_3U] = ((((taps[9])) << 0) | (((taps[10])) << 8)); + __VIRegs[VI_FCT_3] = ((((taps[11])) << 0) | (((taps[12])) << 8)); + __VIRegs[VI_FCT_4U] = ((((taps[13])) << 0) | (((taps[14])) << 8)); + __VIRegs[VI_FCT_4] = ((((taps[15])) << 0) | (((taps[16])) << 8)); + __VIRegs[VI_FCT_5U] = ((((taps[17])) << 0) | (((taps[18])) << 8)); + __VIRegs[VI_FCT_5] = ((((taps[19])) << 0) | (((taps[20])) << 8)); + __VIRegs[VI_FCT_6U] = ((((taps[21])) << 0) | (((taps[22])) << 8)); + __VIRegs[VI_FCT_6] = ((((taps[23])) << 0) | (((taps[24])) << 8)); + + __VIRegs[VI_WIDTH] = 640; + ImportAdjustingValues(); + dspCfg = __VIRegs[VI_DISP_CONFIG]; + + HorVer.nonInter = ((((u32)(dspCfg)) >> 2 & 0x00000001)); + HorVer.tv = ((((u32)(dspCfg)) & 0x00000300) >> 8); + + tv = (HorVer.tv == VI_DEBUG) ? VI_NTSC : HorVer.tv; + HorVer.timing = getTiming((VITVMode)VI_TVMODE(tv, HorVer.nonInter)); + regs[VI_DISP_CONFIG] = dspCfg; + + CurrTiming = HorVer.timing; + CurrTvMode = HorVer.tv; + + HorVer.dispSizeX = 640; + HorVer.dispSizeY = (u16)(CurrTiming->acv * 2); + HorVer.dispPosX = (u16)((720 - HorVer.dispSizeX) / 2); + HorVer.dispPosY = 0; + + AdjustPosition(CurrTiming->acv); + + HorVer.fbSizeX = 640; + HorVer.fbSizeY = (u16)(CurrTiming->acv * 2); + HorVer.panPosX = 0; + HorVer.panPosY = 0; + HorVer.panSizeX = 640; + HorVer.panSizeY = (u16)(CurrTiming->acv * 2); + HorVer.xfbMode = VI_XFBMODE_SF; + HorVer.wordPerLine = 40; + HorVer.std = 40; + HorVer.wpl = 40; + HorVer.xof = 0; + HorVer.isBlack = TRUE; + HorVer.is3D = FALSE; + + OSInitThreadQueue(&retraceQueue); + + value = __VIRegs[VI_DISP_INT_0]; + value = (((u32)(value)) & ~0x00008000) | (((0)) << 15); + __VIRegs[VI_DISP_INT_0] = value; + + value = __VIRegs[VI_DISP_INT_1]; + value = (((u32)(value)) & ~0x00008000) | (((0)) << 15); + __VIRegs[VI_DISP_INT_1] = value; + + PreCB = nullptr; + PostCB = nullptr; + + __OSSetInterruptHandler(24, __VIRetraceHandler); + __OSUnmaskInterrupts((0x80000000u >> (24))); +} + +void VIWaitForRetrace(void) +{ + int interrupt; + u32 startCount; + + interrupt = OSDisableInterrupts(); + startCount = retraceCount; + do { + OSSleepThread(&retraceQueue); + } while (startCount == retraceCount); + OSRestoreInterrupts(interrupt); +} + +static void setInterruptRegs(VITimingInfo *tm) +{ + u16 vct, hct, borrow; + + vct = (u16)(tm->numHalfLines / 2); + borrow = (u16)(tm->numHalfLines % 2); + hct = (u16)((borrow) ? tm->hlw : (u16)0); + + vct++; + hct++; + + regs[VI_DISP_INT_0U] = (u16)hct; + changed |= VI_BITMASK(VI_DISP_INT_0U); + + regs[VI_DISP_INT_0] = (u16)((((u32)(vct))) | (((u32)(1)) << 12) | (((u32)(0)) << 15)); + changed |= VI_BITMASK(VI_DISP_INT_0); +} + +static void setPicConfig(u16 fbSizeX, VIXFBMode xfbMode, u16 panPosX, u16 panSizeX, u8 *wordPerLine, u8 *std, u8 *wpl, u8 *xof) +{ + *wordPerLine = (u8)((fbSizeX + 15) / 16); + *std = (u8)((xfbMode == VI_XFBMODE_SF) ? *wordPerLine : (u8)(2 * *wordPerLine)); + *xof = (u8)(panPosX % 16); + *wpl = (u8)((*xof + panSizeX + 15) / 16); + + regs[VI_HSW] = (u16)((((u32)(*std))) | (((u32)(*wpl)) << 8)); + changed |= VI_BITMASK(VI_HSW); +} + +static void setBBIntervalRegs(VITimingInfo *tm) +{ + u16 val; + + val = (u16)((((u32)(tm->bs1))) | (((u32)(tm->be1)) << 5)); + regs[VI_BBI_ODD_U] = val; + changed |= VI_BITMASK(VI_BBI_ODD_U); + + val = (u16)((((u32)(tm->bs3))) | (((u32)(tm->be3)) << 5)); + regs[VI_BBI_ODD] = val; + changed |= VI_BITMASK(VI_BBI_ODD); + + val = (u16)((((u32)(tm->bs2))) | (((u32)(tm->be2)) << 5)); + regs[VI_BBI_EVEN_U] = val; + changed |= VI_BITMASK(VI_BBI_EVEN_U); + + val = (u16)((((u32)(tm->bs4))) | (((u32)(tm->be4)) << 5)); + regs[VI_BBI_EVEN] = val; + changed |= VI_BITMASK(VI_BBI_EVEN); +} + +static void setScalingRegs(u16 panSizeX, u16 dispSizeX, BOOL is3D) +{ + u32 scale; + + panSizeX = (u16)(is3D ? panSizeX * 2 : panSizeX); + + if (panSizeX < dispSizeX) { + scale = (256 * (u32)panSizeX + (u32)dispSizeX - 1) / (u32)dispSizeX; + + regs[VI_HSR] = (u16)((((u32)(scale))) | (((u32)(1)) << 12)); + changed |= VI_BITMASK(VI_HSR); + + regs[VI_WIDTH] = (u16)((((u32)(panSizeX)))); + changed |= VI_BITMASK(VI_WIDTH); + } + else { + regs[VI_HSR] = (u16)((((u32)(256))) | (((u32)(0)) << 12)); + changed |= VI_BITMASK(VI_HSR); + } +} + +static void calcFbbs(u32 bufAddr, u16 panPosX, u16 panPosY, u8 wordPerLine, VIXFBMode xfbMode, u16 dispPosY, u32 *tfbb, u32 *bfbb) +{ + u32 bytesPerLine, xoffInWords; + xoffInWords = (u32)panPosX / 16; + bytesPerLine = (u32)wordPerLine * 32; + + *tfbb = bufAddr + xoffInWords * 32 + bytesPerLine * panPosY; + *bfbb = (xfbMode == VI_XFBMODE_SF) ? *tfbb : (*tfbb + bytesPerLine); + + if (dispPosY % 2 == 1) { + u32 tmp = *tfbb; + *tfbb = *bfbb; + *bfbb = tmp; + } + + *tfbb = ToPhysical(*tfbb); + *bfbb = ToPhysical(*bfbb); +} + +static void setFbbRegs(VIPositionInfo *hv, u32 *tfbb, u32 *bfbb, u32 *rtfbb, u32 *rbfbb) +{ + u32 shifted; + calcFbbs(hv->bufAddr, hv->panPosX, hv->adjPanPosY, hv->wordPerLine, hv->xfbMode, hv->adjDispPosY, tfbb, bfbb); + + if (hv->is3D) { + calcFbbs(hv->rbufAddr, hv->panPosX, hv->adjPanPosY, hv->wordPerLine, hv->xfbMode, hv->adjDispPosY, rtfbb, rbfbb); + } + + if (IS_LOWER_16MB(*tfbb) && IS_LOWER_16MB(*bfbb) && IS_LOWER_16MB(*rtfbb) && IS_LOWER_16MB(*rbfbb)) { + shifted = 0; + } + else { + shifted = 1; + } + + if (shifted) { + *tfbb >>= 5; + *bfbb >>= 5; + *rtfbb >>= 5; + *rbfbb >>= 5; + } + + regs[VI_TOP_FIELD_BASE_LEFT_U] = (u16)(*tfbb & 0xFFFF); + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_LEFT_U); + + regs[VI_TOP_FIELD_BASE_LEFT] = (u16)((((*tfbb >> 16))) | hv->xof << 8 | shifted << 12); + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_LEFT); + + regs[VI_BTTM_FIELD_BASE_LEFT_U] = (u16)(*bfbb & 0xFFFF); + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_LEFT_U); + + regs[VI_BTTM_FIELD_BASE_LEFT] = (u16)(*bfbb >> 16); + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_LEFT); + + if (hv->is3D) { + regs[VI_TOP_FIELD_BASE_RIGHT_U] = *rtfbb & 0xffff; + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_RIGHT_U); + + regs[VI_TOP_FIELD_BASE_RIGHT] = *rtfbb >> 16; + changed |= VI_BITMASK(VI_TOP_FIELD_BASE_RIGHT); + + regs[VI_BTTM_FIELD_BASE_RIGHT_U] = *rbfbb & 0xFFFF; + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_RIGHT_U); + + regs[VI_BTTM_FIELD_BASE_RIGHT] = *rbfbb >> 16; + changed |= VI_BITMASK(VI_BTTM_FIELD_BASE_RIGHT); + } +} + +static void setHorizontalRegs(VITimingInfo *tm, u16 dispPosX, u16 dispSizeX) +{ + u32 hbe, hbs, hbeLo, hbeHi; + + regs[VI_HORIZ_TIMING_0U] = (u16)tm->hlw; + changed |= VI_BITMASK(VI_HORIZ_TIMING_0U); + + regs[VI_HORIZ_TIMING_0L] = (u16)(tm->hce | tm->hcs << 8); + changed |= VI_BITMASK(VI_HORIZ_TIMING_0L); + + hbe = (u32)(tm->hbe640 - 40 + dispPosX); + hbs = (u32)(tm->hbs640 + 40 + dispPosX - (720 - dispSizeX)); + + hbeLo = hbe & ONES(9); + hbeHi = hbe >> 9; + + regs[VI_HORIZ_TIMING_1U] = (u16)(tm->hsy | hbeLo << 7); + changed |= VI_BITMASK(VI_HORIZ_TIMING_1U); + + regs[VI_HORIZ_TIMING_1L] = (u16)(hbeHi | hbs << 1); + changed |= VI_BITMASK(VI_HORIZ_TIMING_1L); +} + +static void setVerticalRegs(u16 dispPosY, u16 dispSizeY, u8 equ, u16 acv, u16 prbOdd, u16 prbEven, u16 psbOdd, u16 psbEven, BOOL black) +{ + u16 actualPrbOdd, actualPrbEven, actualPsbOdd, actualPsbEven, actualAcv, c, d; + + if (equ >= 10) { + c = 1; + d = 2; + } + else { + c = 2; + d = 1; + } + + if (dispPosY % 2 == 0) { + actualPrbOdd = (u16)(prbOdd + d * dispPosY); + actualPsbOdd = (u16)(psbOdd + d * ((c * acv - dispSizeY) - dispPosY)); + actualPrbEven = (u16)(prbEven + d * dispPosY); + actualPsbEven = (u16)(psbEven + d * ((c * acv - dispSizeY) - dispPosY)); + } + else { + actualPrbOdd = (u16)(prbEven + d * dispPosY); + actualPsbOdd = (u16)(psbEven + d * ((c * acv - dispSizeY) - dispPosY)); + actualPrbEven = (u16)(prbOdd + d * dispPosY); + actualPsbEven = (u16)(psbOdd + d * ((c * acv - dispSizeY) - dispPosY)); + } + + actualAcv = (u16)(dispSizeY / c); + + if (black) { + actualPrbOdd += 2 * actualAcv - 2; + actualPsbOdd += 2; + actualPrbEven += 2 * actualAcv - 2; + actualPsbEven += 2; + actualAcv = 0; + } + + regs[VI_VERT_TIMING] = (u16)(equ | actualAcv << 4); + changed |= VI_BITMASK(VI_VERT_TIMING); + + regs[VI_VERT_TIMING_ODD_U] = (u16)actualPrbOdd << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_ODD_U); + + regs[VI_VERT_TIMING_ODD] = (u16)actualPsbOdd << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_ODD); + + regs[VI_VERT_TIMING_EVEN_U] = (u16)actualPrbEven << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_EVEN_U); + + regs[VI_VERT_TIMING_EVEN] = (u16)actualPsbEven << 0; + changed |= VI_BITMASK(VI_VERT_TIMING_EVEN); +} + +static void PrintDebugPalCaution(void) +{ + static u32 message = 0; + + if (message == 0) { + message = 1; + OSReport("***************************************\n"); + OSReport(" ! ! ! C A U T I O N ! ! ! \n"); + OSReport("This TV format \"DEBUG_PAL\" is only for \n"); + OSReport("temporary solution until PAL DAC board \n"); + OSReport("is available. Please do NOT use this \n"); + OSReport("mode in real games!!! \n"); + OSReport("***************************************\n"); + } +} + +void VIConfigure(const GXRenderModeObj *obj) +{ + VITimingInfo *tm; + u32 regDspCfg; + BOOL enabled; + u32 newNonInter, tvInBootrom, tvInGame; + + enabled = OSDisableInterrupts(); + newNonInter = (u32)obj->viTVmode & 3; + + if (HorVer.nonInter != newNonInter) { + changeMode = 1; + HorVer.nonInter = newNonInter; + } + + tvInGame = (u32)obj->viTVmode >> 2; + tvInBootrom = *(u32 *)OSPhysicalToCached(0xCC); + + if (tvInGame == VI_DEBUG_PAL) { + PrintDebugPalCaution(); + } + + if ((tvInGame == VI_NTSC) || (tvInGame == VI_MPAL)) { + HorVer.tv = tvInBootrom; + } + else { + HorVer.tv = tvInGame; + } + + HorVer.dispPosX = obj->viXOrigin; + HorVer.dispPosY = (u16)((HorVer.nonInter == VI_NON_INTERLACE) ? (u16)(obj->viYOrigin * 2) : obj->viYOrigin); + HorVer.dispSizeX = obj->viWidth; + HorVer.fbSizeX = obj->fbWidth; + HorVer.fbSizeY = obj->xfbHeight; + HorVer.xfbMode = obj->xFBmode; + HorVer.panSizeX = HorVer.fbSizeX; + HorVer.panSizeY = HorVer.fbSizeY; + HorVer.panPosX = 0; + HorVer.panPosY = 0; + + HorVer.dispSizeY = (u16)((HorVer.nonInter == VI_PROGRESSIVE) ? HorVer.panSizeY + : (HorVer.nonInter == VI_3D) ? HorVer.panSizeY + : (HorVer.xfbMode == VI_XFBMODE_SF) ? (u16)(2 * HorVer.panSizeY) + : HorVer.panSizeY); + + HorVer.is3D = (HorVer.nonInter == VI_3D) ? TRUE : FALSE; + + tm = getTiming((VITVMode)VI_TVMODE(HorVer.tv, HorVer.nonInter)); + HorVer.timing = tm; + + AdjustPosition(tm->acv); + if (encoderType == 0) { + HorVer.tv = VI_DEBUG; + } + setInterruptRegs(tm); + + regDspCfg = regs[VI_DISP_CONFIG]; + + if ((HorVer.nonInter == VI_PROGRESSIVE) || (HorVer.nonInter == VI_3D)) { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000004) | (((u32)(1)) << 2); + } + else { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000004) | (((u32)(HorVer.nonInter & 1)) << 2); + } + + regDspCfg = (((u32)(regDspCfg)) & ~0x00000008) | (((u32)(HorVer.is3D)) << 3); + + if ((HorVer.tv == VI_DEBUG_PAL) || (HorVer.tv == VI_EURGB60)) { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000300) | (((u32)(0)) << 8); + } + else { + regDspCfg = (((u32)(regDspCfg)) & ~0x00000300) | (((u32)(HorVer.tv)) << 8); + } + + regs[VI_DISP_CONFIG] = (u16)regDspCfg; + changed |= VI_BITMASK(0x01); + + regDspCfg = regs[VI_CLOCK_SEL]; + if (obj->viTVmode == VI_TVMODE_NTSC_PROG || obj->viTVmode == VI_TVMODE_NTSC_3D) { + regDspCfg = (u32)(regDspCfg & ~0x1) | 1; + } + else { + regDspCfg = (u32)(regDspCfg & ~0x1); + } + + regs[VI_CLOCK_SEL] = (u16)regDspCfg; + + changed |= 0x200; + + setScalingRegs(HorVer.panSizeX, HorVer.dispSizeX, HorVer.is3D); + setHorizontalRegs(tm, HorVer.adjDispPosX, HorVer.dispSizeX); + setBBIntervalRegs(tm); + setPicConfig(HorVer.fbSizeX, HorVer.xfbMode, HorVer.panPosX, HorVer.panSizeX, &HorVer.wordPerLine, &HorVer.std, &HorVer.wpl, &HorVer.xof); + + if (FBSet) { + setFbbRegs(&HorVer, &HorVer.tfbb, &HorVer.bfbb, &HorVer.rtfbb, &HorVer.rbfbb); + } + + setVerticalRegs(HorVer.adjDispPosY, HorVer.adjDispSizeY, tm->equ, tm->acv, tm->prbOdd, tm->prbEven, tm->psbOdd, tm->psbEven, HorVer.isBlack); + OSRestoreInterrupts(enabled); +} + +void VIConfigurePan(u16 xOrg, u16 yOrg, u16 width, u16 height) +{ + BOOL enabled; + VITimingInfo *tm; + + enabled = OSDisableInterrupts(); + HorVer.panPosX = xOrg; + HorVer.panPosY = yOrg; + HorVer.panSizeX = width; + HorVer.panSizeY = height; + HorVer.dispSizeY = (HorVer.nonInter == 2) ? HorVer.panSizeY + : (HorVer.nonInter == 3) ? HorVer.panSizeY + : (HorVer.xfbMode == VI_XFBMODE_SF) ? (u16)(HorVer.panSizeY * 2) + : HorVer.panSizeY; + tm = HorVer.timing; + AdjustPosition(tm->acv); + setScalingRegs(HorVer.panSizeX, HorVer.dispSizeX, HorVer.is3D); + setPicConfig(HorVer.fbSizeX, HorVer.xfbMode, HorVer.panPosX, HorVer.panSizeX, &HorVer.wordPerLine, &HorVer.std, &HorVer.wpl, &HorVer.xof); + if (FBSet != 0) { + setFbbRegs(&HorVer, &HorVer.tfbb, &HorVer.bfbb, &HorVer.rtfbb, &HorVer.rbfbb); + } + setVerticalRegs(HorVer.adjDispPosY, HorVer.dispSizeY, tm->equ, tm->acv, tm->prbOdd, tm->prbEven, tm->psbOdd, tm->psbEven, HorVer.isBlack); + OSRestoreInterrupts(enabled); +} + +void VIFlush(void) +{ + BOOL enabled; + s32 regIndex; + u32 val; // for stack. + + enabled = OSDisableInterrupts(); + shdwChangeMode |= changeMode; + changeMode = 0; + shdwChanged |= changed; + + while (changed) { + regIndex = cntlzd(changed); + shdwRegs[regIndex] = regs[regIndex]; + changed &= ~VI_BITMASK(regIndex); + } + + flushFlag = 1; + OSRestoreInterrupts(enabled); +} + +void VISetNextFrameBuffer(void *fb) +{ + BOOL enabled = OSDisableInterrupts(); + HorVer.bufAddr = (u32)fb; + FBSet = 1; + setFbbRegs(&HorVer, &HorVer.tfbb, &HorVer.bfbb, &HorVer.rtfbb, &HorVer.rbfbb); + OSRestoreInterrupts(enabled); +} + +void *VIGetNextFrameBuffer() +{ + // UNUSED FUNCTION +} + +void *VIGetCurrentFrameBuffer(void) +{ + return (void *)CurrBufAddr; +} + +void VISetNextRightFrameBuffer(void *fb) +{ + // UNUSED FUNCTION +} + +void VISetBlack(BOOL isBlack) +{ + int interrupt; + VITimingInfo *tm; + + interrupt = OSDisableInterrupts(); + HorVer.isBlack = isBlack; + tm = HorVer.timing; + setVerticalRegs(HorVer.adjDispPosY, HorVer.dispSizeY, tm->equ, tm->acv, tm->prbOdd, tm->prbEven, tm->psbOdd, tm->psbEven, HorVer.isBlack); + OSRestoreInterrupts(interrupt); +} + +void VISet3D(void) +{ + // UNUSED FUNCTION +} + +u32 VIGetRetraceCount(void) +{ + return retraceCount; +} + +static u32 getCurrentHalfLine(void) +{ + u32 hcount; + u32 vcount0; + u32 vcount; + + vcount = __VIRegs[22] & 0x7FF; + do { + vcount0 = vcount; + hcount = __VIRegs[23] & 0x7FF; + vcount = __VIRegs[22] & 0x7FF; + } while (vcount0 != vcount); + return ((vcount - 1) * 2) + ((hcount - 1) / CurrTiming->hlw); +} + +static u32 getCurrentFieldEvenOdd() +{ + return (getCurrentHalfLine() < CurrTiming->numHalfLines) ? 1 : 0; +} + +u32 VIGetNextField(void) +{ + u32 nextField; + int interrupt; + + interrupt = OSDisableInterrupts(); + nextField = getCurrentFieldEvenOdd() ^ 1; + OSRestoreInterrupts(interrupt); + return nextField ^ (HorVer.adjDispPosY & 1); +} + +u32 VIGetCurrentLine(void) +{ + u32 line; + VITimingInfo *tm; + int interrupt; + + tm = CurrTiming; + interrupt = OSDisableInterrupts(); + line = getCurrentHalfLine(); + OSRestoreInterrupts(interrupt); + + if (line >= tm->numHalfLines) { + line -= tm->numHalfLines; + } + + return (line >> 1); +} + +u32 VIGetTvFormat(void) +{ + u32 fmt; + int interrupt; + + interrupt = OSDisableInterrupts(); + + switch (CurrTvMode) { + case VI_NTSC: + case VI_DEBUG: + fmt = VI_NTSC; + break; + case VI_PAL: + case VI_DEBUG_PAL: + fmt = VI_PAL; + break; + case VI_EURGB60: + case VI_MPAL: + fmt = CurrTvMode; + break; + } + + OSRestoreInterrupts(interrupt); + return fmt; +} + +u32 VIGetDTVStatus(void) +{ + u32 stat; + int interrupt; + + interrupt = OSDisableInterrupts(); + stat = (__VIRegs[VI_DTV_STAT] & 3); + OSRestoreInterrupts(interrupt); + return (stat & 1); +} diff --git a/src/game/EnvelopeExec.c b/src/game/EnvelopeExec.c index cf417b01..53a9d990 100644 --- a/src/game/EnvelopeExec.c +++ b/src/game/EnvelopeExec.c @@ -367,11 +367,11 @@ static void SetEnvelop(HsfCenv *arg0) { 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); - PSVECAdd(&sp38, &sp44, &sp38); + VECAdd(&sp38, &sp44, &sp38); sp2C.x = var_r25->value * (sp2C.x - temp_r26->x); sp2C.y = var_r25->value * (sp2C.y - temp_r26->y); sp2C.z = var_r25->value * (sp2C.z - temp_r26->z); - PSVECAdd(&sp20, &sp2C, &sp20); + VECAdd(&sp20, &sp2C, &sp20); } temp_r28->x = temp_r31->x + sp38.x; temp_r28->y = temp_r31->y + sp38.y; diff --git a/src/game/armem.c b/src/game/armem.c index ec2be64c..66142f66 100644 --- a/src/game/armem.c +++ b/src/game/armem.c @@ -25,7 +25,7 @@ static ARQRequest arqReq; static ARMemBlock ARInfo[64]; static s32 ARBase; -static s32 arqCnt; +static volatile s32 arqCnt; static s16 arqIdx; void HuARInit(void) { diff --git a/src/game/audio.c b/src/game/audio.c index b90ac0bd..2227c3b7 100644 --- a/src/game/audio.c +++ b/src/game/audio.c @@ -5,11 +5,13 @@ #include "game/wipe.h" #include "game/gamework_data.h" -static s32 HuSePlay(s32 arg0, UnkMsmStruct_01 *arg1); +#define MUSIC_HEAP_SIZE 0x13FC00 + +static int HuSePlay(int seId, MSM_SEPARAM *param); extern s16 omSysExitReq; -static s32 charVoiceGroupStat[8]; +s32 charVoiceGroupStat[8]; static s32 sndFXBuf[64][2]; static s16 Hu3DAudVol; @@ -32,29 +34,33 @@ static char *lbl_8012E9AC[] = { "" }; -void HuAudInit(void) { - UnkMsmStruct_00 sp8; - s32 temp_r3; +void HuAudInit(void) +{ + MSM_INIT msmInit; + MSM_ARAM msmAram; + + s32 result; s16 i; - sp8.unk20 = HuMemDirectMalloc(HEAP_MUSIC, 0x13FC00); - sp8.unk24 = 0x13FC00; - sp8.unk0C = "/sound/mpgcsnd.msm"; - sp8.unk10 = "/sound/mpgcstr.pdt"; - sp8.unk14 = 0; - sp8.unk18 = 0; - sp8.unk1C = 0; - sp8.unk00 = 1; - sp8.unk04 = 0x808000; - temp_r3 = msmSysInit(&sp8.unk0C, &sp8); - if (temp_r3 < 0) { - OSReport("MSM(Sound Manager) Error:Error Code %d\n", temp_r3); + msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, MUSIC_HEAP_SIZE); + msmInit.heapSize = MUSIC_HEAP_SIZE; + 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() == 0) { - msmSysSetOutputMode(0); + if (OSGetSoundMode() == OS_SOUND_MODE_MONO) { + msmSysSetOutputMode(SND_OUTPUTMODE_MONO); } else { - msmSysSetOutputMode(2); + msmSysSetOutputMode(SND_OUTPUTMODE_SURROUND); } for (i = 0; i < 64; i++) { sndFXBuf[i][0] = -1; @@ -68,7 +74,7 @@ void HuAudInit(void) { musicOffF = 0; } -s32 HuAudStreamPlay(char *name, s32 arg1) { +s32 HuAudStreamPlay(char *name, BOOL flag) { return 0; } @@ -95,186 +101,194 @@ void HuAudAllStop(void) { HuAudSStreamAllStop(); } -void HuAudFadeOut(s32 arg0) { +void HuAudFadeOut(s32 speed) { HuAudFXAllStop(); - HuAudSeqAllFadeOut(arg0); - HuAudSStreamAllFadeOut(arg0); + HuAudSeqAllFadeOut(speed); + HuAudSStreamAllFadeOut(speed); } -s32 HuAudFXPlay(s32 arg0) { +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(arg0, 0x7F, 0x40); + return HuAudFXPlayVolPan(seId, MSM_VOL_MAX, MSM_PAN_CENTER); } -s32 HuAudFXPlayVol(s32 arg0, s16 arg1) { +int HuAudFXPlayVol(int seId, s16 vol) { if (omSysExitReq != 0) { return 0; } - return HuAudFXPlayVolPan(arg0, arg1, 0x40); + return HuAudFXPlayVolPan(seId, vol, MSM_PAN_CENTER); } -s32 HuAudFXPlayVolPan(s32 arg0, s16 arg1, s16 arg2) { - UnkMsmStruct_01 sp10; +int HuAudFXPlayVolPan(int seId, s16 vol, s16 pan) +{ + MSM_SEPARAM seParam; if (omSysExitReq != 0) { return 0; } - sp10.unk00 = 3; - sp10.unk04 = arg1; - sp10.unk05 = arg2; - return HuSePlay(arg0, &sp10); + seParam.flag = MSM_SEPARAM_VOL|MSM_SEPARAM_PAN; + seParam.vol = vol; + seParam.pan = pan; + return HuSePlay(seId, &seParam); } -void HuAudFXStop(s32 arg0) { - msmSeStop(arg0, 0); +void HuAudFXStop(int seNo) { + msmSeStop(seNo, 0); } void HuAudFXAllStop(void) { msmSeStopAll(0, 0); } -void HuAudFXFadeOut(s32 arg0, s32 arg1) { - msmSeStop(arg0, arg1); +void HuAudFXFadeOut(int seNo, s32 speed) { + msmSeStop(seNo, speed); } -void HuAudFXPanning(s32 arg0, s16 arg1) { - UnkMsmStruct_01 sp10; +void HuAudFXPanning(int seNo, s16 pan) { + MSM_SEPARAM seParam; if (omSysExitReq == 0) { - sp10.unk00 = 2; - sp10.unk05 = arg1; - msmSeSetParam(arg0, &sp10); + seParam.flag = MSM_SEPARAM_PAN; + seParam.pan = pan; + msmSeSetParam(seNo, &seParam); } } -void HuAudFXListnerSet(Vec* arg0, Vec* arg1, float arg2, float arg3) { +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) { - HuAudFXListnerSetEX(arg0, arg1, - arg2 + Snd3DDistOffset, - arg3 + Snd3DSpeedOffset, - Snd3DStartDisOffset, - Snd3DFrontSurDisOffset + (0.25 * arg2 + Snd3DStartDisOffset), - Snd3DBackSurDisOffset + (0.25 * arg2 + Snd3DStartDisOffset)); + msmSeUpdataListener(pos, heading); } } -void HuAudFXListnerSetEX(Vec* arg0, Vec* arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6) { - UnkMsmStruct_02 sp1C; - - if (omSysExitReq == 0) { - sp1C.unk00 = 7; - sp1C.startDis = arg4 + Snd3DStartDisOffset; - sp1C.frontSurDis = arg5 + Snd3DFrontSurDisOffset; - sp1C.backSurDis = arg6 + Snd3DBackSurDisOffset; - msmSeSetListener(arg0, arg1, sndDist + Snd3DDistOffset, sndSpeed + Snd3DSpeedOffset, &sp1C); - OSReport("//////////////////////////////////\n"); - OSReport("sndDist %f\n", sndDist); - OSReport("sndSpeed %f\n", sndSpeed); - OSReport("startDis %f\n", sp1C.startDis); - OSReport("frontSurDis %f\n", sp1C.frontSurDis); - OSReport("backSurDis %f\n", sp1C.backSurDis); - OSReport("//////////////////////////////////\n"); +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); } -void HuAudFXListnerUpdate(Vec *arg0, Vec *arg1) { - if (omSysExitReq == 0) { - msmSeUpdataListener(arg0, arg1); - } -} - -s32 HuAudFXEmiterPlay(s32 arg0, Vec *arg1) { - UnkMsmStruct_01 spC; - - if (omSysExitReq != 0) { - return 0; - } - spC.unk00 = 0x40; - spC.unk10.x = arg1->x; - spC.unk10.y = arg1->y; - spC.unk10.z = arg1->z; - return HuSePlay(arg0, &spC); -} - -void HuAudFXEmiterUpDate(s32 arg0, Vec *arg1) { - UnkMsmStruct_01 spC; - - if (omSysExitReq == 0) { - spC.unk00 = 0x40; - spC.unk10.x = arg1->x; - spC.unk10.y = arg1->y; - spC.unk10.z = arg1->z; - msmSeSetParam(arg0, &spC); +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 arg0) { - msmSePauseAll(arg0, 0x64); +void HuAudFXPauseAll(s32 pause) { + msmSePauseAll(pause, 0x64); } -s32 HuAudFXStatusGet(s32 arg0) { - return msmSeGetStatus(arg0); +s32 HuAudFXStatusGet(int seNo) { + return msmSeGetStatus(seNo); } -s32 HuAudFXPitchSet(s32 arg0, s16 arg1) { - UnkMsmStruct_01 sp10; - - if (omSysExitReq != 0) { +s32 HuAudFXPitchSet(int seNo, s16 pitch) +{ + MSM_SEPARAM param; + if(omSysExitReq) { return 0; } - sp10.unk00 = 4; - sp10.unk06 = arg1; - return msmSeSetParam(arg0, &sp10); + param.flag = MSM_SEPARAM_PITCH; + param.pitch = pitch; + return msmSeSetParam(seNo, ¶m); } -s32 HuAudFXVolSet(s32 arg0, s16 arg1) { - UnkMsmStruct_01 sp10; +s32 HuAudFXVolSet(int seNo, s16 vol) +{ + MSM_SEPARAM param; - if (omSysExitReq != 0) { + if(omSysExitReq) { return 0; } - sp10.unk00 = 1; - sp10.unk04 = arg1; - return msmSeSetParam(arg0, &sp10); + param.flag = MSM_SEPARAM_VOL; + param.vol = vol; + return msmSeSetParam(seNo, ¶m); } -s32 HuAudSeqPlay(s16 arg0) { - s32 temp_r31; +s32 HuAudSeqPlay(s16 musId) { + s32 channel; if (musicOffF != 0 || omSysExitReq != 0) { return 0; } - temp_r31 = msmMusPlay(arg0, NULL); - return temp_r31; + channel = msmMusPlay(musId, NULL); + return channel; } -void HuAudSeqStop(s32 arg0) { +void HuAudSeqStop(s32 musNo) { if (musicOffF != 0 || omSysExitReq != 0) { return; } - msmMusStop(arg0, 0); + msmMusStop(musNo, 0); } -void HuAudSeqFadeOut(s32 arg0, s32 arg1) { +void HuAudSeqFadeOut(s32 musNo, s32 speed) { if (musicOffF == 0) { - msmMusStop(arg0, arg1); + msmMusStop(musNo, speed); } } -void HuAudSeqAllFadeOut(s32 arg0) { +void HuAudSeqAllFadeOut(s32 speed) { s16 i; for (i = 0; i < 4; i++) { if (msmMusGetStatus(i) == 2) { - msmMusStop(i, arg0); + msmMusStop(i, speed); } } } @@ -283,61 +297,61 @@ void HuAudSeqAllStop(void) { msmMusStopAll(0, 0); } -void HuAudSeqPauseAll(s32 arg0) { - msmMusPauseAll(arg0, 0x64); +void HuAudSeqPauseAll(s32 pause) { + msmMusPauseAll(pause, 0x64); } -void HuAudSeqPause(s32 arg0, s32 arg1, s32 arg2) { +void HuAudSeqPause(s32 musNo, s32 pause, s32 speed) { if (musicOffF != 0 || omSysExitReq != 0) { return; } - msmMusPause(arg0, arg1, arg2); + msmMusPause(musNo, pause, speed); } -s32 HuAudSeqMidiCtrlGet(s32 arg0, s8 arg1, s8 arg2) { +s32 HuAudSeqMidiCtrlGet(s32 musNo, s8 channel, s8 ctrl) { if (musicOffF != 0 || omSysExitReq != 0) { return 0; } - return msmMusGetMidiCtrl(arg0, arg1, arg2); + return msmMusGetMidiCtrl(musNo, channel, ctrl); } -s32 HuAudSStreamPlay(s16 arg0) { - s32 spC; - s32 temp_r31; +s32 HuAudSStreamPlay(s16 streamId) { + MSM_STREAMPARAM param; + s32 result; if (musicOffF != 0 || omSysExitReq != 0) { return 0; } - spC = 0; - temp_r31 = msmStreamPlay(arg0, &spC); - return temp_r31; + param.flag = MSM_STREAMPARAM_NONE ; + result = msmStreamPlay(streamId, ¶m); + return result; } -void HuAudSStreamStop(s32 arg0) { +void HuAudSStreamStop(s32 seNo) { if (musicOffF == 0) { - msmStreamStop(arg0, 0); + msmStreamStop(seNo, 0); } } -void HuAudSStreamFadeOut(s32 arg0, s32 arg1) { +void HuAudSStreamFadeOut(s32 seNo, s32 speed) { if (musicOffF == 0) { - msmStreamStop(arg0, arg1); + msmStreamStop(seNo, speed); } } -void HuAudSStreamAllFadeOut(s32 arg0) { - msmStreamPauseAll(arg0); +void HuAudSStreamAllFadeOut(s32 speed) { + msmStreamStopAll(speed); } void HuAudSStreamAllStop(void) { - msmStreamPauseAll(0); + msmStreamStopAll(0); } -s32 HuAudSStreamStatGet(s32 arg0) { - return msmStreamGetStatus(arg0); +s32 HuAudSStreamStatGet(s32 seNo) { + return msmStreamGetStatus(seNo); } -HuSndGrpData HuSndGrpTbl[] = { +SNDGRPTBL sndGrpTable[] = { { OVL_BOOT, -1, 0, 1, -1, -1 }, { OVL_INST, -1, 0, 1, -1, -1 }, { OVL_M401, 18, 0, 2, 64, 64 }, @@ -432,75 +446,75 @@ HuSndGrpData HuSndGrpTbl[] = { }; void HuAudDllSndGrpSet(u16 ovl) { - HuSndGrpData *var_r31; - s16 var_r29; + SNDGRPTBL *sndGrp; + s16 grpSet; - var_r31 = HuSndGrpTbl; + sndGrp = sndGrpTable; while (1) { - if (var_r31->ovl == ovl) { - var_r29 = var_r31->grpset; + if (sndGrp->ovl == ovl) { + grpSet = sndGrp->grpSet; break; } - if (var_r31->ovl == OVL_INVALID) { - var_r29 = 0x12; + if (sndGrp->ovl == OVL_INVALID) { + grpSet = 0x12; break; } - var_r31++; + sndGrp++; } - if (var_r29 != -1) { + if (grpSet != -1) { OSReport("SOUND ##########################\n"); - HuAudSndGrpSetSet(var_r29); - if (var_r31->auxANo != auxANoBak || var_r31->auxBNo != auxBNoBak) { - msmSysSetAux(var_r31->auxANo, var_r31->auxBNo); - OSReport("Change AUX %d,%d\n", var_r31->auxANo, var_r31->auxBNo); - auxANoBak = var_r31->auxANo; - auxBNoBak = var_r31->auxBNo; + 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(var_r31->auxAVol, var_r31->auxBVol); + HuAudAUXVolSet(sndGrp->auxAVol, sndGrp->auxBVol); OSReport("##########################\n"); } } -void HuAudSndGrpSetSet(s16 arg0) { - void *temp_r3; - OSTick temp_r31; - s32 temp_r26; - s32 temp_r27; +void HuAudSndGrpSetSet(s16 dataSize) { + void *buf; + OSTick osTick; + s32 numPlay; + s32 err; - if (sndGroupBak != arg0) { + if (sndGroupBak != dataSize) { msmMusStopAll(1, 0); msmSeStopAll(1, 0); - temp_r31 = OSGetTick(); + osTick = OSGetTick(); while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) - && OSTicksToMilliseconds(OSGetTick() - temp_r31) < 500); - OSReport("%d\n", OSTicksToMilliseconds(OSGetTick() - temp_r31)); - if (OSTicksToMilliseconds(OSGetTick() - temp_r31) >= 500) { - temp_r26 = msmSeGetNumPlay(1); - OSReport("Timed Out! Mus %d:SE %d\n", msmMusGetNumPlay(1), temp_r26); + && 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", arg0); - sndGroupBak = arg0; - temp_r27 = msmSysDelGroupAll(); - temp_r3 = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(1)); - temp_r27 = msmSysLoadGroupSet(arg0, temp_r3); - OSReport("***********GroupSet Error %d\n", temp_r27); - HuMemDirectFree(temp_r3); + 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 arg0) { - void *temp_r3; +void HuAudSndGrpSet(s16 grpId) { + void *buf; - temp_r3 = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(arg0)); - msmSysLoadGroup(arg0, temp_r3, 0); - HuMemDirectFree(temp_r3); + buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId)); + msmSysLoadGroup(grpId, buf, 0); + HuMemDirectFree(buf); } -void HuAudSndCommonGrpSet(s16 arg0, s32 arg1) { - s16 temp_r30; - OSTick temp_r27; - void *temp_r3; +void HuAudSndCommonGrpSet(s16 grpId, s32 groupCheck) { + s16 err; + OSTick osTick; + void *buf; s16 i; for (i = 0; i < 8; i++) { @@ -508,74 +522,75 @@ void HuAudSndCommonGrpSet(s16 arg0, s32 arg1) { } msmMusStopAll(1, 0); msmSeStopAll(1, 0); - temp_r27 = OSGetTick(); + osTick = OSGetTick(); while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) - && OSTicksToMilliseconds(OSGetTick() - temp_r27) < 500); - OSReport("CommonGrpSet %d\n", arg0); - if (arg1 != 0) { - temp_r30 = msmSysDelGroupBase(0); - if (temp_r30 < 0) { - OSReport("Del Group Error %d\n", temp_r30); + && 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); } } - temp_r3 = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(arg0)); - msmSysLoadGroupBase(arg0, temp_r3); - HuMemDirectFree(temp_r3); + buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(grpId)); + msmSysLoadGroupBase(grpId, buf); + HuMemDirectFree(buf); sndGroupBak = -1; } -void HuAudAUXSet(s32 arg0, s32 arg1) { - if (arg0 == -1) { - arg0 = 0; +void HuAudAUXSet(s32 auxA, s32 auxB) { + if (auxA == -1) { + auxA = 0; } - if (arg1 == -1) { - arg1 = 1; + if (auxB == -1) { + auxB = 1; } - msmSysSetAux(arg0, arg1); + msmSysSetAux(auxA, auxB); } -void HuAudAUXVolSet(s8 arg0, s8 arg1) { - HuAuxAVol = arg0; - HuAuxBVol = arg1; +void HuAudAUXVolSet(s8 auxA, s8 auxB) { + HuAuxAVol = auxA; + HuAuxBVol = auxB; } void HuAudVoiceInit(s16 ovl) { - HuSndGrpData *var_r29; - OSTick temp_r23; - s16 temp_r26; + SNDGRPTBL *sndGrp; + OSTick osTick; + s16 numNotChars; + s16 grpId; s16 temp_r25; - s16 temp_r30; - s16 var_r27; - void *temp_r3; + s16 character; + + void *buf; s16 i; if (ovl != OVL_INVALID) { - var_r29 = HuSndGrpTbl; + sndGrp = sndGrpTable; while (1) { - if (var_r29->ovl == ovl && var_r29->grpset == -1) { + if (sndGrp->ovl == ovl && sndGrp->grpSet == -1) { return; } - if (var_r29->ovl == OVL_INVALID) { + if (sndGrp->ovl == OVL_INVALID) { break; } - var_r29++; + sndGrp++; } } - for (i = var_r27 = 0; i < 4; i++) { - temp_r30 = GWPlayerCfg[i].character; - if (temp_r30 < 0 || temp_r30 >= 8 || temp_r30 == 0xFF || charVoiceGroupStat[temp_r30] != 0) { - var_r27++; + for (i = numNotChars = 0; i < 4; i++) { + character = GWPlayerCfg[i].character; + if (character < 0 || character >= 8 || character == 0xFF || charVoiceGroupStat[character] != 0) { + numNotChars++; } } - if (var_r27 < 4) { + if (numNotChars < 4) { for (i = 0; i < 8; i++) { charVoiceGroupStat[i] = 0; } msmMusStopAll(1, 0); msmSeStopAll(1, 0); - temp_r23 = OSGetTick(); + osTick = OSGetTick(); while ((msmMusGetNumPlay(1) != 0 || msmSeGetNumPlay(1) != 0) - && OSTicksToMilliseconds(OSGetTick() - temp_r23) < 500); + && OSTicksToMilliseconds(OSGetTick() - osTick) < 500); OSReport("############CharGrpSet\n"); temp_r25 = msmSysDelGroupBase(0); if (temp_r25 < 0) { @@ -584,96 +599,102 @@ void HuAudVoiceInit(s16 ovl) { OSReport("Del Group OK\n"); } for (i = 0; i < 4; i++) { - temp_r30 = GWPlayerCfg[i].character; - if (temp_r30 >= 0 && temp_r30 < 8 && temp_r30 != 0xFF) { - charVoiceGroupStat[temp_r30] = 1; - temp_r26 = temp_r30 + 0xA; - temp_r3 = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(temp_r26)); - msmSysLoadGroupBase(temp_r26, temp_r3); - HuMemDirectFree(temp_r3); + 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 arg0, s16 arg1) { - s16 temp_r31 = GWPlayerCfg[arg0].character; +s32 HuAudPlayerVoicePlay(s16 player, s16 seId) { + s16 charNo = GWPlayerCfg[player].character; - return HuAudCharVoicePlay(temp_r31, arg1); + return HuAudCharVoicePlay(charNo, seId); } -s32 HuAudPlayerVoicePlayPos(s16 arg0, s16 arg1, Vec *arg2) { - s16 temp_r31 = GWPlayerCfg[arg0].character; +s32 HuAudPlayerVoicePlayPos(s16 player, s16 seId, Vec *pos) { + s16 charNo = GWPlayerCfg[player].character; - return HuAudCharVoicePlayPos(temp_r31, arg1, arg2); + return HuAudCharVoicePlayPos(charNo, seId, pos); } -void HuAudPlayerVoicePlayEntry(s16 arg0, s16 arg1) { - s16 temp_r31 = GWPlayerCfg[arg0].character; +void HuAudPlayerVoicePlayEntry(s16 player, s16 seId) { + s16 charNo = GWPlayerCfg[player].character; - HuAudCharVoicePlayEntry(temp_r31, arg1); + HuAudCharVoicePlayEntry(charNo, seId); } -s32 HuAudCharVoicePlay(s16 arg0, s16 arg1) { - UnkMsmStruct_01 spC; +s32 HuAudCharVoicePlay(s16 charNo, s16 seId) +{ + MSM_SEPARAM param; if (omSysExitReq != 0) { return 0; } - arg1 += (arg0 << 6); - spC.unk00 = 0; + seId += (charNo << 6); + param.flag = MSM_SEPARAM_NONE; if (HuAuxAVol != -1) { - spC.unk00 |= 0x10; + param.flag |= MSM_SEPARAM_AUXVOLA; } if (HuAuxBVol != -1) { - spC.unk00 |= 0x20; + param.flag |= MSM_SEPARAM_AUXVOLB; } - spC.unk09 = HuAuxAVol; - spC.unk0A = HuAuxBVol; - return HuSePlay(arg1, &spC); + param.auxAVol = HuAuxAVol; + param.auxBVol = HuAuxBVol; + return HuSePlay(seId, ¶m); } -s32 HuAudCharVoicePlayPos(s16 arg0, s16 arg1, Vec *arg2) { - UnkMsmStruct_01 spC; +s32 HuAudCharVoicePlayPos(s16 charNo, s16 seId, Vec *pos) { + MSM_SEPARAM param; if (omSysExitReq != 0) { return 0; } - arg1 += (arg0 << 6); - spC.unk00 = 0x40; + seId += (charNo << 6); + param.flag = MSM_SEPARAM_POS; if (HuAuxAVol != -1) { - spC.unk00 |= 0x10; + param.flag |= MSM_SEPARAM_AUXVOLA; } if (HuAuxBVol != -1) { - spC.unk00 |= 0x20; + param.flag |= MSM_SEPARAM_AUXVOLB; } - spC.unk09 = HuAuxAVol; - spC.unk0A = HuAuxBVol; - spC.unk10.x = arg2->x; - spC.unk10.y = arg2->y; - spC.unk10.z = arg2->z; - return HuSePlay(arg1, &spC); + 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 arg0, s16 arg1) { - s32 spC[30]; // size unknown (min: 30, max: 33) - u16 temp_r29; +void HuAudCharVoicePlayEntry(s16 charNo, s16 seId) { + int seNoTbl[MSM_ENTRY_SENO_MAX]; // size unknown (min: 30, max: 33) + u16 id; u16 i; - arg1 += (arg0 << 6); - temp_r29 = msmSeGetEntryID(arg1, spC); - for (i = 0; i < temp_r29; i++) { - msmSeStop(spC[i], 0); + seId += (charNo << 6); + id = msmSeGetEntryID(seId, seNoTbl); + for (i = 0; i < id; i++) { + msmSeStop(seNoTbl[i], 0); } } -static s32 HuSePlay(s32 arg0, UnkMsmStruct_01 *arg1) { - s32 temp_r3; +static int HuSePlay(int seId, MSM_SEPARAM *param) +{ + s32 result; - temp_r3 = msmSePlay(arg0, arg1); - if (temp_r3 < 0) { - OSReport("#########SE Entry Error\n", arg0, temp_r3); + result = msmSePlay(seId, param); + if (result < 0) { + OSReport("#########SE Entry Error\n", seId, result); } - return temp_r3; + return result; } diff --git a/src/game/board/audio.c b/src/game/board/audio.c index 3be2dcbb..d5d8ccda 100755 --- a/src/game/board/audio.c +++ b/src/game/board/audio.c @@ -15,99 +15,99 @@ static s16 boardMusTbl[] = { }; void BoardMusStartBoard(void) { - s16 temp_r31 = boardMusTbl[GWBoardGet()]; + s16 musIdx = boardMusTbl[GWBoardGet()]; - BoardMusStart(0, temp_r31, 0x7F, 0); + BoardMusStart(0, musIdx, 0x7F, 0); BoardAudFXPlay(); } -void BoardMusStart(s32 arg0, s32 arg1, s8 arg2, u16 arg3) { - s16 *temp_r31 = boardSeq[arg0]; - UnkMsmStruct_03 sp8; +void BoardMusStart(s32 boardNo, s32 musId, s8 vol, u16 speed) { + s16 *board = boardSeq[boardNo]; + MSM_MUSPARAM param; - if (arg1 == temp_r31[1]) { + if (musId == board[1]) { return; } - if (temp_r31[0] != -1) { - BoardAudSeqFadeOutFast(temp_r31[0]); + if (board[0] != -1) { + BoardAudSeqFadeOutFast(board[0]); } - sp8.unk00 = 1; - if (arg3 != 0) { - sp8.unk00 |= 8; + param.flag = MSM_MUSPARAM_CHAN; + if (speed != 0) { + param.flag |= MSM_MUSPARAM_FADESPEED; } - if (arg2 < 0) { - sp8.unk00 |= 2; - arg2 = 0x7F; + if (vol < 0) { + param.flag |= MSM_MUSPARAM_VOL; + vol = 0x7F; } - sp8.unk06 = arg3; - sp8.unk05 = arg2; - sp8.unk04 = arg0; - temp_r31[0] = msmMusPlay(arg1, &sp8); - temp_r31[1] = arg1; + param.fadeSpeed = speed; + param.vol = vol; + param.chan = boardNo; + board[0] = msmMusPlay(musId, ¶m); + board[1] = musId; } -void BoardAudSeqFadeOutFast(s32 arg0) { - BoardAudSeqFadeOut(arg0, 0x64); +void BoardAudSeqFadeOutFast(s32 boardNo) { + BoardAudSeqFadeOut(boardNo, 0x64); } -void BoardAudSeqFadeOut(s32 arg0, u16 arg1) { - s16 *temp_r31 = boardSeq[arg0]; +void BoardAudSeqFadeOut(s32 boardNo, u16 speed) { + s16 *board = boardSeq[boardNo]; - if (temp_r31[0] == -1) { + if (board[0] == -1) { return; } - HuAudSeqFadeOut(temp_r31[0], arg1); - temp_r31[1] = temp_r31[0] = -1; + HuAudSeqFadeOut(board[0], speed); + board[1] = board[0] = -1; } -void BoardMusLoudSet(s32 arg0, s32 arg1) { - if (arg1 != 0) { - BoardMusVolPanSet(arg0, 0x60, 0x1F4); +void BoardMusLoudSet(s32 boardNo, s32 isQuieter) { + if (isQuieter != 0) { + BoardMusVolPanSet(boardNo, 0x60, 0x1F4); } else { - BoardMusVolPanSet(arg0, 0x7F, 0x1F4); + BoardMusVolPanSet(boardNo, 0x7F, 0x1F4); } } -void BoardMusVolPanSet(s32 arg0, s8 arg1, u16 arg2) { - s16 *temp_r31 = boardSeq[arg0]; - UnkMsmStruct_04 sp10; +void BoardMusVolPanSet(s32 boardNo, s8 vol, u16 fadeSpeed) { + s16 *board = boardSeq[boardNo]; + MSM_MUSPARAM param; - if (temp_r31[0] == -1) { + if (board[0] == -1) { return; } - sp10.unk00 = 1; - sp10.unk00 |= 2; - if (arg1 < 0) { - arg1 = 0x7F; + param.flag = MSM_MUSPARAM_CHAN; + param.flag |= MSM_MUSPARAM_VOL; + if (vol < 0) { + vol = 0x7F; } - sp10.unk06 = arg2; - sp10.unk05 = arg1; - msmMusSetParam(temp_r31[0], &sp10); + param.fadeSpeed = fadeSpeed; + param.vol = vol; + msmMusSetParam(board[0], ¶m); } -void BoardAudSeqPause(s32 arg0, s32 arg1, u16 arg2) { - s16 *temp_r31 = boardSeq[arg0]; +void BoardAudSeqPause(s32 boardNo, s32 pause, u16 speed) { + s16 *board = boardSeq[boardNo]; - if (temp_r31[0] == -1) { + if (board[0] == -1) { return; } - if (arg1 != 0) { - if (BoardMusStatusGet(arg0) == 3) { + if (pause != 0) { + if (BoardMusStatusGet(boardNo) == 3) { return; } - } else if (BoardMusStatusGet(arg0) != 3) { + } else if (BoardMusStatusGet(boardNo) != 3) { return; } - HuAudSeqPause(temp_r31[0], arg1, arg2); + HuAudSeqPause(board[0], pause, speed); } -s32 BoardMusStatusGet(s32 arg0) { - s16 *temp_r31 = boardSeq[arg0]; +s32 BoardMusStatusGet(s32 boardNo) { + s16 *board = boardSeq[boardNo]; - if (temp_r31[0] == -1) { + if (board[0] == -1) { return 0; } - return msmMusGetStatus(temp_r31[0]); + return msmMusGetStatus(board[0]); } void BoardAudSeqClear(void) { @@ -134,20 +134,20 @@ void BoardAudSeqFadeOutAll(void) { } void BoardAudFXPlay(void) { - s32 var_r31; + s32 seId; switch (GWBoardGet()) { case BOARD_ID_MAIN5: - var_r31 = 0x48D; + seId = 0x48D; break; case BOARD_ID_MAIN6: - var_r31 = 0x4A2; + seId = 0x4A2; break; default: return; } if (boardFX == -1) { - boardFX = HuAudFXPlay(var_r31); + boardFX = HuAudFXPlay(seId); } } diff --git a/src/game/board/basic_space.c b/src/game/board/basic_space.c index 678ff3a6..abce562c 100644 --- a/src/game/board/basic_space.c +++ b/src/game/board/basic_space.c @@ -90,7 +90,7 @@ void BoardLandBlueExec(s32 player, s32 space) { coin_chg = BoardCoinChgCreate(&pos, coins); HuAudFXPlay(839); BoardCameraMotionWait(); - BoardPlayerMotionShiftSet(player, 12, 0.0f, 4.0f, 0); + BoardPlayerMotionShiftSet(player, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); for (i = 0; i < coins; i++) { BoardPlayerCoinsAdd(player, 1); @@ -131,7 +131,7 @@ void BoardLandRedExec(s32 player, s32 space) { coin_chg = BoardCoinChgCreate(&pos, -coins); HuAudFXPlay(840); BoardCameraMotionWait(); - BoardPlayerMotionShiftSet(player, 13, 0.0f, 4.0f, 0); + BoardPlayerMotionShiftSet(player, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); for (i = 0; i < coins; i++) { BoardPlayerCoinsAdd(player, -1); HuAudFXPlay(14); @@ -302,7 +302,7 @@ static void CoinChgAppear(omObjData *object, coinChg *coin_chg) { f32 angle; OSu16tof32(&coin_chg->angle, &angle); - angle = sin(M_PI * angle / 180.0); + angle = sind(angle); scale = angle; object->rot.x = 405.0f * angle; BoardModelScaleSet(coin_chg->coin_model, scale, scale, scale); @@ -342,8 +342,8 @@ static void CoinChgSeparate(omObjData *object, coinChg *coin_chg) { } else { spacing = 105.0f; } - y_offset = (200.0 * sin((M_PI * (2.0f * x_scale)) / 180.0)); - x_scale = sin((M_PI * x_scale) / 180.0); + y_offset = 200.0 * sind(2.0f * x_scale); + x_scale = sind(x_scale); object->rot.x = 45.0f + (315.0f * x_scale); if (coin_chg->tens != 0) { coin_x = object->trans.x + (x_scale * -spacing); @@ -374,25 +374,25 @@ static void CoinChgSeparate(omObjData *object, coinChg *coin_chg) { } static void CoinChgShow(omObjData* object, coinChg* coin_chg) { - Vec sp8; + Vec pos; f32 angle; f32 y_pos; OSu16tof32(&coin_chg->angle, &angle); - angle = (f32) sin((M_PI * angle) / 180.0); + angle = sind(angle); if (coin_chg->minus != 0) { y_pos = (-50.0f * angle) + object->trans.y; } else { y_pos = (50.0f * angle) + object->trans.y; } - BoardModelPosGet(coin_chg->coin_model, &sp8); - BoardModelPosSet(coin_chg->coin_model, sp8.x, y_pos, sp8.z); - BoardModelPosGet(coin_chg->sign_model, &sp8); - BoardModelPosSet(coin_chg->sign_model, sp8.x, y_pos, sp8.z); - BoardModelPosGet(coin_chg->ones_model, &sp8); - BoardModelPosSet(coin_chg->ones_model, sp8.x, y_pos, sp8.z); - BoardModelPosGet(coin_chg->tens_model, &sp8); - BoardModelPosSet(coin_chg->tens_model, sp8.x, y_pos, sp8.z); + BoardModelPosGet(coin_chg->coin_model, &pos); + BoardModelPosSet(coin_chg->coin_model, pos.x, y_pos, pos.z); + BoardModelPosGet(coin_chg->sign_model, &pos); + BoardModelPosSet(coin_chg->sign_model, pos.x, y_pos, pos.z); + BoardModelPosGet(coin_chg->ones_model, &pos); + BoardModelPosSet(coin_chg->ones_model, pos.x, y_pos, pos.z); + BoardModelPosGet(coin_chg->tens_model, &pos); + BoardModelPosSet(coin_chg->tens_model, pos.x, y_pos, pos.z); if (coin_chg->angle < 90) { coin_chg->angle += 6; return; diff --git a/src/game/board/battle.c b/src/game/board/battle.c index 650a0132..2ba67445 100755 --- a/src/game/board/battle.c +++ b/src/game/board/battle.c @@ -454,7 +454,7 @@ static void UpdateExplode(omObjData *arg0) { if (currSpace == GWPlayer[i].space_curr) { temp_f31 = 20.0f * BoardRandFloat(); HuAudFXPlay(bombFXTbl[GWPlayer[i].character]); - BoardPlayerMotionShiftSet(i, 6, temp_f31, 8.0f, 0x40000001); + BoardPlayerMotionShiftSet(i, 6, temp_f31, 8.0f, HU3D_MOTATTR_LOOP); } } CharModelLayerSetAll(2); @@ -619,7 +619,7 @@ static void ShowBattleGame(BattleWork *arg0, omObjData *arg1) { arg0->unk01 = 1; arg1->trans.z = 0.01f; arg1->trans.y = 0.0f; - HuSprAttrReset(arg0->unk08, 0, 4); + HuSprAttrReset(arg0->unk08, 0, HUSPR_ATTR_DISPOFF); HuSprPosSet(arg0->unk08, 0, 0.0f, 0.0f); } else { return; @@ -682,8 +682,8 @@ static void UpdateBattleCoin(BattleWork *arg0, omObjData *arg1) { HuSprBankSet(arg0->unk08, 1, temp_r28); return; } - HuSprAttrReset(arg0->unk08, 2, 4); - HuSprAttrReset(arg0->unk08, 1, 5); + HuSprAttrReset(arg0->unk08, 2, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(arg0->unk08, 1, HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); HuSprPosSet(arg0->unk08, 2, 0.0f, 40.0f); HuSprPosSet(arg0->unk08, 1, 34.0f, 40.0f); HuSprScaleSet(arg0->unk08, 1, 0.9f, 0.9f); @@ -726,10 +726,10 @@ static void InitBattleGameSpr(BattleWork *arg0, omObjData *arg1) { temp_r30 = battleMGIdx[0]; temp_r29 = battleMGIdx[1]; - HuSprAttrReset(arg0->unk08, 3, 4); - HuSprAttrReset(arg0->unk08, 4, 4); - HuSprAttrReset(arg0->unk08, temp_r30 + 5, 4); - HuSprAttrReset(arg0->unk08, temp_r29 + 5, 4); + HuSprAttrReset(arg0->unk08, 3, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(arg0->unk08, 4, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(arg0->unk08, temp_r30 + 5, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(arg0->unk08, temp_r29 + 5, HUSPR_ATTR_DISPOFF); HuSprPosSet(arg0->unk08, 3, sp8[0][0], sp8[0][1]); HuSprPosSet(arg0->unk08, 4, sp8[1][0], sp8[1][1]); HuSprPosSet(arg0->unk08, temp_r30 + 5, sp8[0][0], sp8[0][1]); diff --git a/src/game/board/block.c b/src/game/board/block.c index a3e73511..0f7f86aa 100644 --- a/src/game/board/block.c +++ b/src/game/board/block.c @@ -1,12 +1,13 @@ +#include "ext_math.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/star.h" +#include "game/board/window.h" #include "game/flag.h" #include "game/objsub.h" #include "game/process.h" -#include "game/board/main.h" -#include "game/board/player.h" -#include "game/board/model.h" -#include "game/board/star.h" -#include "game/board/window.h" -#include "math.h" + #define BLOCK_SPAWN 0 #define BLOCK_HIT 2 @@ -21,7 +22,7 @@ typedef struct { u8 opened : 1; u8 unk00_field5 : 1; }; - + s16 hit_y_velocity; s16 target_y_pos; } BlockWork; @@ -30,7 +31,7 @@ typedef struct { struct { u8 kill : 1; }; - + u8 lifetime; s8 model_index; s16 model; @@ -38,19 +39,19 @@ typedef struct { static void BlockProc(void); static void DestroyBlock(void); -static void ExecBlockObj(omObjData* arg0); +static void ExecBlockObj(omObjData *arg0); static void CreateBlockObj(s32 arg0); -static void DestroyBlockObj(BlockWork* unused0, omObjData* unused1); -static void SpawnBlock(BlockWork* arg0, omObjData* arg1); -static void HitBlock(BlockWork* arg0, omObjData* arg1); -static void OpenBlock(BlockWork* arg0, omObjData* arg1); +static void DestroyBlockObj(BlockWork *unused0, omObjData *unused1); +static void SpawnBlock(BlockWork *arg0, omObjData *arg1); +static void HitBlock(BlockWork *arg0, omObjData *arg1); +static void OpenBlock(BlockWork *arg0, omObjData *arg1); static void SetBlockOpen(void); static void SetBlockStop(void); static void WaitBlockHit(void); static void CreateCoinMdl(void); static void KillCoinMdl(void); static void PopupCoin(void); -static void PopupCoinExec(omObjData* arg0); +static void PopupCoinExec(omObjData *arg0); extern s8 boardTutorialBlockF; extern s8 boardTutorialBlockItem; @@ -62,37 +63,41 @@ static f32 rotMax; static f32 scaleAngle; static f32 rotY; -static omObjData* blockObj; -static Process* blockProc; +static omObjData *blockObj; +static Process *blockProc; static s16 coinMdl[10] = { -1, -1, -1, -1 }; static s32 coinF[10]; -s32 BoardBlockExec(s32 arg0) { +s32 BoardBlockExec(s32 arg0) +{ if (BoardPlayerSizeGet(arg0) == 2) { return 0; } - + blockProc = HuPrcChildCreate(BlockProc, 0x2003, 0x3800U, 0, boardMainProc); HuPrcDestructorSet2(blockProc, DestroyBlock); - + while (blockProc != NULL) { HuPrcVSleep(); } - + return 0; } -static void BlockProc(void) { - s32 sp14[8] = {0x005F0060, 0x001A0060, 0x006D0060, 0x008A0060, 0x00850060, 0x00110060, 0x000D0060, 0x00810060}; - Point3d sp8; +static void BlockProc(void) +{ + s32 sp14[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x60), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x60), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x60), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x60), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x60), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x60), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x60), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x60) }; + Vec sp8; s32 var_r28; s32 i; s32 player; - BlockWork* work; - s32* temp_r4; + BlockWork *work; + s32 *temp_r4; s32 player_character; - + player = GWSystem.player_curr; player_character = GWPlayer[player].character; @@ -101,18 +106,18 @@ static void BlockProc(void) { BoardPlayerMotBlendSet(player, 0, 0xF); omVibrate(player, 12, 12, 0); CreateBlockObj(player); - + work = OM_GET_WORK_PTR(blockObj, BlockWork); while (work->state != BLOCK_HIT) { HuPrcVSleep(); } - + BoardCameraViewSet(3); BoardCameraMotionWait(); BoardWinCreate(0, 0x10000, -1); BoardWinWait(); BoardWinKill(); - BoardPlayerMotionShiftSet(player, 0xB, 0, 8.0, 0.0); + BoardPlayerMotionShiftSet(player, 0xB, 0, 8.0, HU3D_MOTATTR_NONE); HuPrcSleep(9); while (BoardPlayerMotionTimeGet(player) < 30.0f) { HuPrcVSleep(); @@ -123,7 +128,7 @@ static void BlockProc(void) { HuPrcVSleep(); } BoardPlayerIdleSet(player); - + if (work->contains_star != 0) { SetBlockStop(); BoardModelPosGet(starMdl, &sp8); @@ -134,10 +139,11 @@ static void BlockProc(void) { if (_CheckFlag(FLAG_ID_MAKE(1, 11)) == 0) { BoardAudSeqPause(0, 0, 1000); } - } else { + } + else { for (i = 0; i < 0x14; i++) { WaitBlockHit(); - BoardPlayerMotionStart(player, (s32) jumpMot, 0); + BoardPlayerMotionStart(player, (s32)jumpMot, 0); BoardPlayerMotionSpeedSet(player, 2); while (BoardPlayerMotionTimeGet(player) < 4) { HuPrcVSleep(); @@ -152,29 +158,30 @@ static void BlockProc(void) { HuAudFXPlay(7); HuPrcVSleep(); } - + SetBlockStop(); } - + BoardWinCreate(0, work->contains_star != 0 ? MAKE_MESSID(1, 1) : MAKE_MESSID(1, 2), -1); BoardWinWait(); BoardWinKill(); KillCoinMdl(); work->kill = 1; - - BoardPlayerIdleSet((s32) player); + + BoardPlayerIdleSet((s32)player); HuPrcVSleep(); - + if ((_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) && work->contains_star == 0) { BoardTutorialHookExec(0x16, 0); } - + BoardCameraViewSet(2); BoardCameraMotionWait(); HuPrcEnd(); } -static void DestroyBlock(void) { +static void DestroyBlock(void) +{ if (jumpMot != -1) { BoardPlayerMotionKill(GWSystem.player_curr, jumpMot); jumpMot = -1; @@ -183,71 +190,74 @@ static void DestroyBlock(void) { blockProc = 0; } -static void CreateBlockObj(s32 arg0) { - Point3d player_pos; - BlockWork* work; +static void CreateBlockObj(s32 arg0) +{ + Vec player_pos; + BlockWork *work; s8 contains_star; - + BoardPlayerPosGet(arg0, &player_pos); - starMdl = BoardModelCreate(0x70004, NULL, 0); + starMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 4), NULL, 0); BoardModelVisibilitySet(starMdl, 0); BoardModelMotionSpeedSet(starMdl, 0); BoardModelLayerSet(starMdl, 2U); - + blockObj = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, ExecBlockObj); - + work = OM_GET_WORK_PTR(blockObj, BlockWork); work->kill = 0; work->unk00_field2 = 0; work->opened = 0; work->unk00_field5 = 0; work->state = BLOCK_SPAWN; - + blockObj->trans.x = player_pos.x; blockObj->trans.y = 270 + player_pos.y; blockObj->trans.z = player_pos.z; - + blockObj->scale.x = blockObj->scale.y = blockObj->scale.z = 0.01; blockObj->rot.x = blockObj->rot.y = blockObj->rot.z = 0.0; - + scaleAngle = 0; rotY = 0; rotMax = 30; - + BoardModelVisibilitySet(starMdl, 1); - + if (BoardRandFloat() > 0.5f) { contains_star = 0; - } else { + } + else { contains_star = 1; } - + work->contains_star = contains_star; - + if (boardTutorialBlockF != 0) { work->contains_star = boardTutorialBlockItem; boardTutorialBlockF = 0; } - + HuAudFXPlay(0x302); - + if (work->contains_star == 0) { CreateCoinMdl(); } } -static void ExecBlockObj(omObjData* arg0) { - BlockWork* work; +static void ExecBlockObj(omObjData *arg0) +{ + BlockWork *work; work = OM_GET_WORK_PTR(arg0, BlockWork); - + if (work->kill != 0 || BoardIsKill() != 0) { DestroyBlockObj(work, arg0); blockObj = 0; omDelObjEx(HuPrcCurrentGet(), arg0); return; } - + switch (work->state) { case BLOCK_SPAWN: SpawnBlock(work, arg0); @@ -259,30 +269,33 @@ static void ExecBlockObj(omObjData* arg0) { OpenBlock(work, arg0); break; } - + if (work->unk00_field5 != 0) { BoardModelVisibilitySet(starMdl, 0); } - + BoardModelPosSet(starMdl, arg0->trans.x, arg0->trans.y, arg0->trans.z); BoardModelRotSet(starMdl, arg0->rot.x, arg0->rot.y, arg0->rot.z); BoardModelScaleSet(starMdl, arg0->scale.x, arg0->scale.y, arg0->scale.z); } -static void DestroyBlockObj(BlockWork* unused0, omObjData* unused1) { +static void DestroyBlockObj(BlockWork *unused0, omObjData *unused1) +{ if (starMdl != -1) { BoardModelKill(starMdl); starMdl = -1; } } -static void SpawnBlock(BlockWork* arg0, omObjData* arg1) { +static void SpawnBlock(BlockWork *arg0, omObjData *arg1) +{ if (scaleAngle < 90.0f) { scaleAngle += 3.75f; if (scaleAngle > 90.0f) { scaleAngle = 90.0f; } - } else { + } + else { rotMax *= 0.5f; if (rotMax < 0.8f) { rotY = 0.0f; @@ -291,31 +304,33 @@ static void SpawnBlock(BlockWork* arg0, omObjData* arg1) { arg0->state = BLOCK_HIT; } } - + if (rotY < 360.0f) { rotY += rotMax; if (rotY > 360.0f) { rotY = 360.0f; } } - + arg1->rot.y = rotY; - arg1->scale.x = arg1->scale.y = arg1->scale.z = sin(M_PI * scaleAngle / 180.0); + arg1->scale.x = arg1->scale.y = arg1->scale.z = sind(scaleAngle); } -static void HitBlock(BlockWork* arg0, omObjData* arg1) { +static void HitBlock(BlockWork *arg0, omObjData *arg1) +{ float var_f30; arg0->hit_y_velocity += 3; if (arg0->hit_y_velocity > 0x168) { arg0->hit_y_velocity -= 0x168; } - + OSs16tof32(&arg0->hit_y_velocity, &var_f30); - arg1->trans.y += 0.2f * sin((M_PI * var_f30) / 180.0); + arg1->trans.y += 0.2f * sind(var_f30); } -static void OpenBlock(BlockWork* arg0, omObjData* arg1) { +static void OpenBlock(BlockWork *arg0, omObjData *arg1) +{ f32 target_y_pos; if (arg0->opened == 0) { @@ -323,16 +338,17 @@ static void OpenBlock(BlockWork* arg0, omObjData* arg1) { HuAudFXPlay(0x33B); BoardModelMotionStart(starMdl, 0, 0); } - + if (arg0->unk00_field2 == 0) { OSf32tos16(&arg1->trans.y, &arg0->target_y_pos); - + arg1->trans.y += 80.0f; arg0->unk00_field2 = 1; - } else { + } + else { OSs16tof32(&arg0->target_y_pos, &target_y_pos); arg1->trans.y += -8.0f; - + if (arg1->trans.y < target_y_pos) { arg1->trans.y = target_y_pos; arg0->state = BLOCK_HIT; @@ -340,43 +356,48 @@ static void OpenBlock(BlockWork* arg0, omObjData* arg1) { } } -static void SetBlockOpen(void) { - BlockWork* work; +static void SetBlockOpen(void) +{ + BlockWork *work; work = OM_GET_WORK_PTR(blockObj, BlockWork); work->state = BLOCK_OPEN; } -static void SetBlockStop(void) { - BlockWork* work; +static void SetBlockStop(void) +{ + BlockWork *work; work = OM_GET_WORK_PTR(blockObj, BlockWork); work->unk00_field5 = 1; } -static void WaitBlockHit(void) { - BlockWork* work; +static void WaitBlockHit(void) +{ + BlockWork *work; work = OM_GET_WORK_PTR(blockObj, BlockWork); - + while (work->state != BLOCK_HIT) { HuPrcVSleep(); } } -static void CreateCoinMdl(void) { +static void CreateCoinMdl(void) +{ s32 i; - + for (i = 0; i < 10; i += 1) { - coinMdl[i] = BoardModelCreate(0x7000A, NULL, 1); + coinMdl[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1); BoardModelVisibilitySet(coinMdl[i], 0); coinF[i] = 0; } } -static void KillCoinMdl(void) { +static void KillCoinMdl(void) +{ s32 i; - + for (i = 0; i < 0xA; i += 1) { if (coinMdl[i] != -1) { BoardModelKill(coinMdl[i]); @@ -386,77 +407,81 @@ static void KillCoinMdl(void) { } } -static inline s32 FindCoinModel(s16 *out_model) { +static inline s32 FindCoinModel(s16 *out_model) +{ s32 i; - + for (i = 0; i < 10; i++) { if (coinF[i] == 0) { *out_model = coinMdl[i]; return i; } } - + return -1; } -static void PopupCoin(void) { - Point3d star_pos; - omObjData* coinObj; +static void PopupCoin(void) +{ + Vec star_pos; + omObjData *coinObj; s32 model_index; s16 model; - CoinWork* work; - + CoinWork *work; + do { HuPrcVSleep(); model_index = FindCoinModel(&model); } while (model_index == -1); - + coinObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, PopupCoinExec); work = OM_GET_WORK_PTR(coinObj, CoinWork); - + work->kill = 0; work->lifetime = 10; work->model = model; work->model_index = model_index; - + coinObj->trans.x = 15.0f; coinObj->trans.y = 40.0f; - + BoardModelPosGet(starMdl, &star_pos); BoardModelPosSetV(work->model, &star_pos); BoardModelVisibilitySet(work->model, 1); } -static void PopupCoinExec(omObjData* obj) { - Point3d coin_pos; - Point3d coin_rot; - CoinWork* work; +static void PopupCoinExec(omObjData *obj) +{ + Vec coin_pos; + Vec coin_rot; + CoinWork *work; work = OM_GET_WORK_PTR(obj, CoinWork); - + if (work->kill != 0 || BoardIsKill() != 0) { BoardModelVisibilitySet(work->model, 0); coinF[work->model_index] = 0; omDelObjEx(HuPrcCurrentGet(), obj); return; } - + if (work->lifetime != 0) { work->lifetime -= 1; - } else { + } + else { work->kill = 1; return; } - + BoardModelPosGet(work->model, &coin_pos); coin_pos.y += obj->trans.y; BoardModelPosSetV(work->model, &coin_pos); BoardModelRotGet(work->model, &coin_rot); coin_rot.y += obj->trans.x; - + if (coin_rot.y > 360.0f) { coin_rot.y -= 360.0f; } - + BoardModelRotSetV(work->model, &coin_rot); } diff --git a/src/game/board/boo.c b/src/game/board/boo.c index f8323694..56dff9ce 100755 --- a/src/game/board/boo.c +++ b/src/game/board/boo.c @@ -931,7 +931,7 @@ static void BallPlayerScare(omObjData *arg0, BallPlayerWork *arg1) { temp_r29 = arg0->data; temp_f31 = -BoardPlayerRotYGet(stealTarget); if (stealType == 2) { - BoardPlayerMotionShiftSet(stealTarget, temp_r29->unk04[3], 0.0f, 10.0f, 0x40000001); + BoardPlayerMotionShiftSet(stealTarget, temp_r29->unk04[3], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); SetBallPlayerState(0); } else { BoardPlayerMotBlendSet(stealTarget, temp_f31, 15); @@ -1039,7 +1039,7 @@ static void BallPlayerCatch(omObjData *arg0, BallPlayerWork *arg1) { omVibrate(stealTarget, 12, 4, 2); TakeBallStar(); } - BoardPlayerMotionShiftSet(stealTarget, temp_r27->unk04[0], 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(stealTarget, temp_r27->unk04[0], 0.0f, 10.0f, HU3D_MOTATTR_NONE); arg1->unk02 = 1; } if (stealType == 0) { @@ -1124,7 +1124,7 @@ static void SetBallBooState(s32 arg0) { ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 30.0f; ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 30.0f; temp_r31->unk02 = 30; - BoardModelMotionShiftSet(temp_r31->unk04, 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r31->unk04, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); } if (arg0 == 5) { HuAudFXPlay(0x64); @@ -1133,7 +1133,7 @@ static void SetBallBooState(s32 arg0) { if (arg0 == 7) { temp_r31->unk08 = -ballBooObj->scale.y; HuAudFXPlay(0x64); - BoardModelMotionShiftSet(temp_r31->unk04, 5, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r31->unk04, 5, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); } if (arg0 == 3) { battleTimer = 0; @@ -1200,7 +1200,7 @@ static void BallBooChase(omObjData *arg0, BallBooWork *arg1) { } else { SetBallBooState(0); } - BoardModelMotionShiftSet(arg1->unk04, 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(arg1->unk04, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); } } @@ -1255,7 +1255,7 @@ static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) { if (BoardDAngleCalcRange(&arg0->scale.y, arg1->unk08, 8.0f) != 0) { SetBallBooState(6); - BoardModelMotionShiftSet(arg1->unk04, 3, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(arg1->unk04, 3, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); temp_f31 = BoardPlayerRotYGet(stealTarget); BoardPlayerPosGet(stealTarget, &sp8); sp8.x += 500.0 * sind(-temp_f31); @@ -1292,7 +1292,7 @@ static void TakeBallCoin(void) { var_r31->unk1C.x = 3.0f * (BoardRandFloat() - 0.5f); var_r31->unk1C.y = 3.0 * sin(BoardRandFloat()); var_r31->unk1C.z = 3.0f * (BoardRandFloat() - 0.5f); - PSVECScale(&var_r31->unk1C, &var_r31->unk1C, 4.0f); + VECScale(&var_r31->unk1C, &var_r31->unk1C, 4.0f); BoardModelPosSetV(var_r31->unk00, &var_r31->unk04); var_r31->unk10 = var_r31->unk1C; } @@ -1329,13 +1329,13 @@ static void TakeBallCoinPosSet(BallTakeCoinData *arg0, Vec *arg1) { arg0->unk00 = -1; return; } - PSVECAdd(&arg0->unk04, &arg0->unk10, &arg0->unk04); - PSVECAdd(&arg0->unk04, &arg0->unk1C, &arg0->unk04); + VECAdd(&arg0->unk04, &arg0->unk10, &arg0->unk04); + VECAdd(&arg0->unk04, &arg0->unk1C, &arg0->unk04); arg0->unk10.y += -0.98f; BoardModelPosSetV(arg0->unk00, &arg0->unk04); } -BOOL CheckBallCoinDone(void) { +static BOOL CheckBallCoinDone(void) { BallTakeCoinData *var_r31; s32 i; @@ -1351,7 +1351,7 @@ BOOL CheckBallCoinDone(void) { return TRUE; } -void TakeBallStar(void) { +static void TakeBallStar(void) { BallTakeCoinWork *temp_r31; Vec sp8; @@ -1376,7 +1376,7 @@ void TakeBallStar(void) { HuAudFXPlay(0x361); } -void ExecTakeBallStar(omObjData *arg0) { +static void ExecTakeBallStar(omObjData *arg0) { BallTakeCoinWork *temp_r29 = OM_GET_WORK_PTR(arg0, BallTakeCoinWork); Vec sp8; float var_f30; @@ -1405,7 +1405,7 @@ void ExecTakeBallStar(omObjData *arg0) { BoardModelRotYSet(temp_r29->unk02, arg0->rot.y); } -BOOL CheckTakeBallStarDone(void) { +static BOOL CheckTakeBallStarDone(void) { if (ballTakeCoinObj) { return FALSE; } else { diff --git a/src/game/board/boo_house.c b/src/game/board/boo_house.c index b3197298..b35cadfd 100644 --- a/src/game/board/boo_house.c +++ b/src/game/board/boo_house.c @@ -1,19 +1,18 @@ #include "game/board/boo_house.h" -#include "game/msm.h" -#include "game/hsfdraw.h" -#include "game/gamework_data.h" -#include "game/board/player.h" -#include "game/board/model.h" -#include "game/board/com.h" +#include "game/board/audio.h" #include "game/board/boo.h" +#include "game/board/com.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/star.h" #include "game/board/ui.h" #include "game/board/view.h" -#include "game/board/audio.h" -#include "game/board/main.h" -#include "game/board/star.h" -#include "game/board/player.h" #include "game/board/window.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/msm.h" #include "ext_math.h" @@ -22,34 +21,78 @@ static s16 houseMdl[6]; // data static s32 hostMesTbl[6][6] = { - { 0x7000C, 0x7000D, 0x7000E, 0x7000F, 0x70010, 0x70011 }, - { 0x70012, 0x70013, 0x70014, 0x70015, 0x70016, 0x70017 }, - { 0x70018, 0x70019, 0x7001A, 0x7001B, 0x7001C, 0x7001D }, - { 0x7001E, 0x7001F, 0x70020, 0x70021, 0x70022, 0x70023 }, - { 0x70024, 0x70025, 0x70026, 0x70027, 0x70028, 0x70029 }, - { 0x7002A, 0x7002B, 0x7002C, 0x7002D, 0x7002E, 0x7002F }, + { + DATA_MAKE_NUM(DATADIR_BOARD, 0x0C), + DATA_MAKE_NUM(DATADIR_BOARD, 0x0D), + DATA_MAKE_NUM(DATADIR_BOARD, 0x0E), + DATA_MAKE_NUM(DATADIR_BOARD, 0x0F), + DATA_MAKE_NUM(DATADIR_BOARD, 0x10), + DATA_MAKE_NUM(DATADIR_BOARD, 0x11), + }, + { + DATA_MAKE_NUM(DATADIR_BOARD, 0x12), + DATA_MAKE_NUM(DATADIR_BOARD, 0x13), + DATA_MAKE_NUM(DATADIR_BOARD, 0x14), + DATA_MAKE_NUM(DATADIR_BOARD, 0x15), + DATA_MAKE_NUM(DATADIR_BOARD, 0x16), + DATA_MAKE_NUM(DATADIR_BOARD, 0x17), + }, + { + DATA_MAKE_NUM(DATADIR_BOARD, 0x18), + DATA_MAKE_NUM(DATADIR_BOARD, 0x19), + DATA_MAKE_NUM(DATADIR_BOARD, 0x1A), + DATA_MAKE_NUM(DATADIR_BOARD, 0x1B), + DATA_MAKE_NUM(DATADIR_BOARD, 0x1C), + DATA_MAKE_NUM(DATADIR_BOARD, 0x1D), + }, + { + 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), + DATA_MAKE_NUM(DATADIR_BOARD, 0x26), + DATA_MAKE_NUM(DATADIR_BOARD, 0x27), + DATA_MAKE_NUM(DATADIR_BOARD, 0x28), + DATA_MAKE_NUM(DATADIR_BOARD, 0x29), + }, + { + DATA_MAKE_NUM(DATADIR_BOARD, 0x2A), + DATA_MAKE_NUM(DATADIR_BOARD, 0x2B), + DATA_MAKE_NUM(DATADIR_BOARD, 0x2C), + DATA_MAKE_NUM(DATADIR_BOARD, 0x2D), + DATA_MAKE_NUM(DATADIR_BOARD, 0x2E), + DATA_MAKE_NUM(DATADIR_BOARD, 0x2F), + }, }; static BoardModelParam houseMdlTbl[6] = { - { 0x90000, { 0, 1, 0, 0, 0 }, 0xFFFF }, - { 0x90001, { 1, 1, 0, 0, 0 }, 0xFFFF }, - { 0x90003, { 1, 1, 0, 0, 0 }, 0xFFFF }, - { 0x90004, { 1, 1, 0, 0, 0 }, 0xFFFF }, - { 0x90004, { 1, 1, 0, 0, 0 }, 0xFFFF }, - { 0x90007, { 0, 1, 0, 0, 0 }, 0xFFFF }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x00), { 0, 1, 0, 0, 0 }, 0xFFFF }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x01), { 1, 1, 0, 0, 0 }, 0xFFFF }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x03), { 1, 1, 0, 0, 0 }, 0xFFFF }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x04), { 1, 1, 0, 0, 0 }, 0xFFFF }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x04), { 1, 1, 0, 0, 0 }, 0xFFFF }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x07), { 0, 1, 0, 0, 0 }, 0xFFFF }, }; static s32 booMotTbl[3] = { - 0x20013, 0x20016, 0xFFFFFFFF + DATA_MAKE_NUM(DATADIR_BGUEST, 0x13), + DATA_MAKE_NUM(DATADIR_BGUEST, 0x16), + DATA_NUM_LISTEND, }; -static s32 houseMotTbl[9][3] = { - { 0x20001, 0x20003, 0x20004 }, - { 0x20009, 0x2000B, 0x2000C }, - { 0x2000E, 0x20010, 0x20011 }, - { 0x20018, 0x2001A, 0x2001B }, - { 0x2001D, 0x2001F, 0x20020 }, - { 0x20022, 0x20024, 0x20025 }, - { 0x20018, 0x2001A, 0x2001B }, - { 0x20001, 0x20003, 0x20004 }, - { 0x20001, 0x20003, 0x20004 } +static s32 hostMotTbl[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) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x1D), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1F), DATA_MAKE_NUM(DATADIR_BGUEST, 0x20) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x22), DATA_MAKE_NUM(DATADIR_BGUEST, 0x24), DATA_MAKE_NUM(DATADIR_BGUEST, 0x25) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x18), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1A), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1B) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x01), DATA_MAKE_NUM(DATADIR_BGUEST, 0x03), DATA_MAKE_NUM(DATADIR_BGUEST, 0x04) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x01), DATA_MAKE_NUM(DATADIR_BGUEST, 0x03), DATA_MAKE_NUM(DATADIR_BGUEST, 0x04) }, }; // sbss @@ -58,16 +101,16 @@ static s8 stealTarget; static s8 comStarStealTarget; static s32 comCoinStealTarget; static s8 stealAmountStr[8]; -static Process* houseProc; +static Process *houseProc; // sdata static s16 houseShowMot = 0xFFFF; static s16 houseHideMot = 0xFFFF; static s16 ballMdl = 0xFFFF; static s16 booMdl = 0xFFFF; -static s16 lbl_801D37F8 = 0xFFFF; +static s16 smokeMdl = 0xFFFF; static s16 hostMdl = 0xFFFF; -static s16 houseMot[3] = { 0xFFFF, 0xFFFF, 0xFFFF }; +static s16 hostMot[3] = { 0xFFFF, 0xFFFF, 0xFFFF }; // determined functions static void ExecBooHouse(void); @@ -87,15 +130,18 @@ static void ApplyBooLight(void); static void SetBooBallPos(void); // FUNCTIONS // -void BoardBooHouseHostSet(s16 arg0) { +void BoardBooHouseHostSet(s16 arg0) +{ hostMdl = arg0; } -s16 BoardBooHouseHostGet(void) { +s16 BoardBooHouseHostGet(void) +{ return hostMdl; } -void BoardBooHouseCreate(void) { +void BoardBooHouseCreate(void) +{ Vec sp14; Vec sp8; @@ -107,17 +153,19 @@ void BoardBooHouseCreate(void) { if (hostMdl != -1) { BoardModelVisibilitySet(hostMdl, 0); } - HuDataDirClose(0x90000); + HuDataDirClose(DATADIR_BYOKODORI); } -void BoardBooHouseKill(void) { +void BoardBooHouseKill(void) +{ if (houseMdl[0] != -1) { BoardModelKill(houseMdl[0]); houseMdl[0] = -1; } } -void BoardBooHouseExec(s32 arg0) { +void BoardBooHouseExec(s32 arg0) +{ currPlayer = arg0; if (BoardPlayerSizeGet(currPlayer) != 2) { BoardRollDispSet(0); @@ -130,7 +178,8 @@ void BoardBooHouseExec(s32 arg0) { } } -static void ExecBooHouse(void) { +static void ExecBooHouse(void) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -145,7 +194,7 @@ static void ExecBooHouse(void) { s32 var_r26; _SetFlag(0x10018); - var_r28 = BoardDataDirReadAsync(0x90000); + var_r28 = BoardDataDirReadAsync(DATADIR_BYOKODORI); var_r30 = GWPlayer[currPlayer].space_curr; BoardPlayerIdleSet(currPlayer); if (BoardPlayerCoinsGet(currPlayer) < 5) { @@ -159,7 +208,8 @@ static void ExecBooHouse(void) { if (GWPlayer[currPlayer].com != 0) { if (BoardBooComUseCheck(currPlayer) != 0) { BoardComKeySetLeft(); - } else { + } + else { BoardComKeySetRight(); } } @@ -168,13 +218,13 @@ static void ExecBooHouse(void) { BoardDataAsyncWait(var_r28); HuPrcEnd(); } - + for (var_r26 = var_r31 = 0; var_r31 < 4; var_r31++) { if (currPlayer != var_r31) { var_r26 += GWStarsGet(var_r31); } } - + for (var_r27 = var_r31 = 0; var_r31 < 4; var_r31++) { if (currPlayer != var_r31) { var_r27 += BoardPlayerCoinsGet(var_r31); @@ -187,8 +237,8 @@ static void ExecBooHouse(void) { temp_r29 = BoardSpaceLinkFlagSearch(0, var_r30, 0x02000000); BoardSpacePosGet(0, var_r30, &sp38); BoardSpacePosGet(0, temp_r29, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -15.0f; sp14.y = temp_f31; @@ -203,7 +253,7 @@ static void ExecBooHouse(void) { BoardPlayerMoveBetween(currPlayer, var_r30, temp_r29); BoardPlayerIdleSet(currPlayer); BoardMusStart(1, 1, 0x7F, 0); - BoardModelMotionShiftSet(BoardBooHouseHostGet(), houseMot[0], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardBooHouseHostGet(), hostMot[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardWinCreate(2, hostMesTbl[GWBoardGet()][0], BoardWinPortraitGet()); BoardWinWait(); @@ -245,7 +295,7 @@ repeatWindowView: BoardStatusShowSet(currPlayer, 0); HuPrcVSleep(); } - BoardModelMotionShiftSet(BoardBooHouseHostGet(), houseMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardBooHouseHostGet(), hostMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); CloseBooHouse(); BoardCameraViewSet(1); BoardCameraRotSet(0.0f, 0.0f); @@ -259,13 +309,14 @@ repeatWindowView: HuPrcEnd(); } -static void DestroyBooHouse(void) { +static void DestroyBooHouse(void) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 3; var_r31++) { - if (houseMot[var_r31] != -1) { - BoardModelMotionKill(BoardBooHouseHostGet(), houseMot[var_r31]); - houseMot[var_r31] = -1; + if (hostMot[var_r31] != -1) { + BoardModelMotionKill(BoardBooHouseHostGet(), hostMot[var_r31]); + hostMot[var_r31] = -1; } } if (houseShowMot != -1) { @@ -278,12 +329,13 @@ static void DestroyBooHouse(void) { } BoardWinKill(); KillBooHouseModel(); - HuDataDirClose(0x90000); + HuDataDirClose(DATADIR_BYOKODORI); _ClearFlag(0x10018); houseProc = 0; } -static void PickComStealType(s32 arg0) { +static void PickComStealType(s32 arg0) +{ s32 var_r31; s32 var_r30; s32 var_r28; @@ -297,10 +349,11 @@ static void PickComStealType(s32 arg0) { } if (BoardPlayerCoinsGet(arg0) >= 0x32) { for (var_r31 = 0; var_r31 < 4; var_r31++) { - if ((var_r31 != arg0) && (GWStarsGet(var_r31) != 0) && (((s32) GWSystem.team == 0) || (var_r31 != BoardPlayerSameTeamFind(arg0)))) { + if ((var_r31 != arg0) && (GWStarsGet(var_r31) != 0) && (((s32)GWSystem.team == 0) || (var_r31 != BoardPlayerSameTeamFind(arg0)))) { if (var_r30 != 0) { BoardComKeySetDown(); - } else { + } + else { BoardComKeySetUp(); } return; @@ -310,7 +363,8 @@ static void PickComStealType(s32 arg0) { BoardComKeySetUp(); } -static void OpenBooHouse(void) { +static void OpenBooHouse(void) +{ s16 temp_r31; s32 temp_r5; s32 var_r30; @@ -318,11 +372,11 @@ static void OpenBooHouse(void) { ballMdl = BoardBooCreate(currPlayer, 0); temp_r31 = BoardBooHouseHostGet(); BoardModelMotionStart(temp_r31, 1, 0x40000001); - + for (var_r30 = 0; var_r30 < 3; var_r30++) { - houseMot[var_r30] = BoardModelMotionCreate(temp_r31, houseMotTbl[GWBoardGet()][var_r30]); + hostMot[var_r30] = BoardModelMotionCreate(temp_r31, hostMotTbl[GWBoardGet()][var_r30]); } - BoardModelMotionStart(temp_r31, houseMot[0], 0x40000001); + BoardModelMotionStart(temp_r31, hostMot[0], 0x40000001); BoardModelVisibilitySet(temp_r31, 1); HuAudFXPlay(0x337); HuAudFXPlay(0x344); @@ -337,7 +391,8 @@ static void OpenBooHouse(void) { BoardModelHookSet(houseMdl[0], "yoko06", temp_r31); if (GWBoardGet() == BOARD_ID_MAIN6) { BoardModelPosSet(temp_r31, 0.0f, 0.0f, -25.0f); - } else { + } + else { BoardModelPosSet(temp_r31, 0.0f, 0.0f, 0.0f); } BoardModelMotionStart(houseMdl[3], 0, 0x40000001); @@ -346,28 +401,29 @@ static void OpenBooHouse(void) { BoardModelMotionStart(booMdl, 1, 0x40000001); BoardModelVisibilitySet(booMdl, 1); BoardModelHookSet(houseMdl[0], "yoko8", booMdl); - lbl_801D37F8 = BoardModelCreate(0x90008, NULL, 0); - BoardModelVisibilitySet(lbl_801D37F8, 0); - BoardModelLayerSet(lbl_801D37F8, 2); + smokeMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x08), NULL, 0); + BoardModelVisibilitySet(smokeMdl, 0); + BoardModelLayerSet(smokeMdl, 2); BoardModelMotionStart(houseMdl[1], 0, 0x40000001); while (BoardModelMotionTimeGet(houseMdl[0]) < 90.0f) { HuPrcVSleep(); } - BoardModelMotionShiftSet(houseMdl[0], houseShowMot, 0.0f, 10.0f, 0x40000001); - BoardModelMotionShiftSet(houseMdl[1], houseHideMot, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(houseMdl[0], houseShowMot, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + BoardModelMotionShiftSet(houseMdl[1], houseHideMot, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardModelHookObjReset(houseMdl[0], "yoko02"); SetBooBallPos(); - BoardModelMotionShiftSet(BoardBooHouseHostGet(), houseMot[2], 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(BoardBooHouseHostGet(), hostMot[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } -static void CloseBooHouse(void) { +static void CloseBooHouse(void) +{ BoardModelPosSet(ballMdl, 0.0f, 0.0f, 0.0f); BoardModelHookSet(houseMdl[0], "yoko02", ballMdl); - BoardModelMotionShiftSet(houseMdl[1], 0, 90.0f, 10.0f, 0); - BoardModelMotionShiftSet(houseMdl[0], 0, 90.0f, 10.0f, 0); + BoardModelMotionShiftSet(houseMdl[1], 0, 90.0f, 10.0f, HU3D_MOTATTR_NONE); + BoardModelMotionShiftSet(houseMdl[0], 0, 90.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(0xA); - + while (BoardModelMotionShiftIDGet(houseMdl[0]) != -1) { HuPrcVSleep(); } @@ -376,7 +432,7 @@ static void CloseBooHouse(void) { } HuAudFXPlay(0x336); BoardAudSeqFadeOut(1, 0x3E8); - + while (BoardModelMotionEndCheck(houseMdl[0]) == 0) { HuPrcVSleep(); } @@ -385,7 +441,8 @@ static void CloseBooHouse(void) { ballMdl = -1; } -static void CreateBooHouseModel(void) { +static void CreateBooHouseModel(void) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 6; var_r31++) { @@ -393,11 +450,12 @@ static void CreateBooHouseModel(void) { houseMdl[var_r31] = BoardModelCreateParam(&houseMdlTbl[var_r31], 0, 0); } } - houseShowMot = BoardModelMotionCreate(houseMdl[0], 0x90009); - houseHideMot = BoardModelMotionCreate(houseMdl[1], 0x9000A); + houseShowMot = BoardModelMotionCreate(houseMdl[0], DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x09)); + houseHideMot = BoardModelMotionCreate(houseMdl[1], DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x0A)); } -static void KillBooHouseModel(void) { +static void KillBooHouseModel(void) +{ s32 temp_r4; s32 var_r31; @@ -411,28 +469,29 @@ static void KillBooHouseModel(void) { BoardModelKill(booMdl); booMdl = -1; } - if (lbl_801D37F8 != -1) { - BoardModelKill(lbl_801D37F8); - lbl_801D37F8 = -1; + if (smokeMdl != -1) { + BoardModelKill(smokeMdl); + smokeMdl = -1; } BoardModelVisibilitySet(BoardBooHouseHostGet(), 0); } -static void ExecNullSteal(void) { +static void ExecNullSteal(void) +{ HuAudFXPlay(0x4C); BoardWinCreate(2, hostMesTbl[GWBoardGet()][5], BoardWinPortraitGet()); BoardWinWait(); BoardWinKill(); } -static void ExecStarSteal(void) { +static void ExecStarSteal(void) +{ Vec sp14; Vec sp8; s32 temp_r29; s32 var_r30; s32 var_r31; - for (var_r30 = 0; var_r30 < 0x32; var_r30++) { BoardPlayerCoinsAdd(currPlayer, -1); HuAudFXPlay(0xE); @@ -444,16 +503,16 @@ static void ExecStarSteal(void) { BoardWinWait(); BoardWinKill(); BoardStatusShowSetAll(0); - + while (BoardPickerDoneCheck() == 0) { HuPrcVSleep(); } HuAudFXPlay(0x4C); Hu3DModelObjPosGet(BoardModelIDGet(houseMdl[0]), "yoko8", &sp14); sp14.y += 20.0f; - BoardModelMotionStart(lbl_801D37F8, 0, 0); - BoardModelVisibilitySet(lbl_801D37F8, 1); - BoardModelPosSetV(lbl_801D37F8, &sp14); + BoardModelMotionStart(smokeMdl, 0, 0); + BoardModelVisibilitySet(smokeMdl, 1); + BoardModelPosSetV(smokeMdl, &sp14); HuPrcSleep(5); for (var_r31 = 0xFF; var_r31 > 0; var_r31 -= 0x33) { @@ -464,11 +523,11 @@ static void ExecStarSteal(void) { HuPrcVSleep(); } BoardModelVisibilitySet(booMdl, 0); - - while (BoardModelMotionEndCheck(lbl_801D37F8) == 0) { + + while (BoardModelMotionEndCheck(smokeMdl) == 0) { HuPrcVSleep(); } - BoardModelVisibilitySet(lbl_801D37F8, 0); + BoardModelVisibilitySet(smokeMdl, 0); BoardCameraMotionStartEx(ballMdl, NULL, NULL, 325.0f, -1.0f, 0x15); temp_r29 = BoardBooStealMain(); sp8.x = 0.0f; @@ -479,11 +538,11 @@ static void ExecStarSteal(void) { if (temp_r29 == 0) { BoardModelMotionStart(booMdl, 2, 0x40000001); } - BoardModelMotionStart(lbl_801D37F8, 0, 0); - BoardModelVisibilitySet(lbl_801D37F8, 1); + BoardModelMotionStart(smokeMdl, 0, 0); + BoardModelVisibilitySet(smokeMdl, 1); HuPrcSleep(0xB); BoardModelVisibilitySet(booMdl, 1); - + for (var_r31 = 0; var_r31 < 0xFF; var_r31 += 0x33) { if (var_r31 > 0xFF) { var_r31 = 0xFF; @@ -492,21 +551,21 @@ static void ExecStarSteal(void) { HuPrcVSleep(); } BoardModelAlphaSet(booMdl, -1); - - while (BoardModelMotionEndCheck(lbl_801D37F8) == 0) { + + while (BoardModelMotionEndCheck(smokeMdl) == 0) { HuPrcVSleep(); } - BoardModelVisibilitySet(lbl_801D37F8, 0); + BoardModelVisibilitySet(smokeMdl, 0); } -static void ExecCoinSteal(void) { +static void ExecCoinSteal(void) +{ Vec sp14; Vec sp8; s32 temp_r29; s32 var_r30; s32 var_r31; - for (var_r30 = 0; var_r30 < 5; var_r30++) { BoardPlayerCoinsAdd(currPlayer, -1); HuAudFXPlay(0xE); @@ -518,16 +577,16 @@ static void ExecCoinSteal(void) { BoardWinWait(); BoardWinKill(); BoardStatusShowSetAll(0); - + while (BoardPickerDoneCheck() == 0) { HuPrcVSleep(); } HuAudFXPlay(0x4C); Hu3DModelObjPosGet(BoardModelIDGet(houseMdl[0]), "yoko8", &sp14); sp14.y += 20.0f; - BoardModelMotionStart(lbl_801D37F8, 0, 0); - BoardModelVisibilitySet(lbl_801D37F8, 1); - BoardModelPosSetV(lbl_801D37F8, &sp14); + BoardModelMotionStart(smokeMdl, 0, 0); + BoardModelVisibilitySet(smokeMdl, 1); + BoardModelPosSetV(smokeMdl, &sp14); HuPrcSleep(5); for (var_r31 = 0xFF; var_r31 > 0; var_r31 -= 0x33) { @@ -538,11 +597,11 @@ static void ExecCoinSteal(void) { HuPrcVSleep(); } BoardModelVisibilitySet(booMdl, 0); - - while (BoardModelMotionEndCheck(lbl_801D37F8) == 0) { + + while (BoardModelMotionEndCheck(smokeMdl) == 0) { HuPrcVSleep(); } - BoardModelVisibilitySet(lbl_801D37F8, 0); + BoardModelVisibilitySet(smokeMdl, 0); BoardCameraMotionStartEx(ballMdl, NULL, NULL, 325.0f, -1.0f, 0x15); temp_r29 = BoardBooStealMain(); sp8.x = 0.0f; @@ -553,11 +612,11 @@ static void ExecCoinSteal(void) { if (temp_r29 == 0) { BoardModelMotionStart(booMdl, 2, 0x40000001); } - BoardModelMotionStart(lbl_801D37F8, 0, 0); - BoardModelVisibilitySet(lbl_801D37F8, 1); + BoardModelMotionStart(smokeMdl, 0, 0); + BoardModelVisibilitySet(smokeMdl, 1); HuPrcSleep(0xB); BoardModelVisibilitySet(booMdl, 1); - + for (var_r31 = 0; var_r31 < 0xFF; var_r31 += 0x33) { if (var_r31 > 0xFF) { var_r31 = 0xFF; @@ -566,14 +625,15 @@ static void ExecCoinSteal(void) { HuPrcVSleep(); } BoardModelAlphaSet(booMdl, -1); - - while (BoardModelMotionEndCheck(lbl_801D37F8) == 0) { + + while (BoardModelMotionEndCheck(smokeMdl) == 0) { HuPrcVSleep(); } - BoardModelVisibilitySet(lbl_801D37F8, 0); + BoardModelVisibilitySet(smokeMdl, 0); } -void ApplySteal(void) { +void ApplySteal(void) +{ s16 spA; s16 sp8; s32 temp_r30; @@ -589,7 +649,7 @@ void ApplySteal(void) { BoardModelAlphaSet(booMdl, 0xFF); var_f31 = BoardDAngleCalc(180.0f + BoardPlayerRotYGet(currPlayer)); BoardPlayerMotBlendSet(currPlayer, var_f31, 0xF); - + while (BoardPlayerMotBlendCheck(currPlayer) == 0) { HuPrcVSleep(); } @@ -597,9 +657,11 @@ void ApplySteal(void) { var_r31 = BoardBooStealValueGet(&spA, &sp8); if (var_r31 == 0) { ApplyBooLight(); - } else if (stealTarget == 0) { + } + else if (stealTarget == 0) { ApplyCoinSteal(spA, sp8); - } else { + } + else { ApplyStarSteal(); } BoardWinCreate(2, hostMesTbl[GWBoardGet()][4], BoardWinPortraitGet()); @@ -607,31 +669,36 @@ void ApplySteal(void) { BoardWinKill(); } -void ApplyCoinSteal(s16 arg0, s16 arg1) { +void ApplyCoinSteal(s16 arg0, s16 arg1) +{ u32 var_r31; s32 var_r30; - if ((s16) arg1 == 0) { - var_r31 = 0x70009; - } else if ((s16) arg1 < 3) { - var_r31 = 0x70008; - } else if ((s16) arg1 < 6) { - var_r31 = 0x70007; - } else if ((s16) arg1 < 8) { - var_r31 = 0x70006; - } else { - var_r31 = 0x70005; + if ((s16)arg1 == 0) { + var_r31 = MAKE_MESSID(7, 9); + } + else if ((s16)arg1 < 3) { + var_r31 = MAKE_MESSID(7, 8); + } + else if ((s16)arg1 < 6) { + var_r31 = MAKE_MESSID(7, 7); + } + else if ((s16)arg1 < 8) { + var_r31 = MAKE_MESSID(7, 6); + } + else { + var_r31 = MAKE_MESSID(7, 5); } sprintf(&stealAmountStr, "%d", arg0); HuAudFXPlay(0x4B); BoardWinCreate(2, var_r31, 3); - BoardWinInsertMesSet((s32) &stealAmountStr, 0); + BoardWinInsertMesSet((s32)&stealAmountStr, 0); BoardWinWait(); BoardWinKill(); BoardStatusShowSetForce(currPlayer); BoardStatusShowSet(currPlayer, 1); - BoardPlayerMotionShiftSet(currPlayer, 7, 0.0f, 8.0f, 0); - + BoardPlayerMotionShiftSet(currPlayer, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + for (var_r30 = 0; var_r30 < arg0; var_r30++) { BoardPlayerCoinsAdd(currPlayer, 1); HuAudFXPlay(0xE); @@ -641,7 +708,8 @@ void ApplyCoinSteal(s16 arg0, s16 arg1) { BoardPlayerMotionEndWait(currPlayer); } -void ApplyStarSteal(void) { +void ApplyStarSteal(void) +{ s32 temp_r31; HuAudFXPlay(0x4C); @@ -653,14 +721,14 @@ void ApplyStarSteal(void) { BoardAudSeqPause(1, 1, 0x3E8); HuPrcSleep(0x17); BoardPlayerVoiceEnableSet(currPlayer, 7, 0); - BoardPlayerMotionShiftSet(currPlayer, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(currPlayer, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(boardStarSndTbl[GWPlayer[currPlayer].character]); BoardPlayerStarsAdd(currPlayer, 1); HuAudFXPlay(8); HuPrcSleep(0xA); temp_r31 = HuAudSStreamPlay(6); BoardPlayerMotionEndWait(currPlayer); - + while (msmStreamGetStatus(temp_r31) != 0) { HuPrcVSleep(); } @@ -669,17 +737,19 @@ void ApplyStarSteal(void) { BoardPlayerVoiceEnableSet(currPlayer, 7, 1); } -void ApplyBooLight(void) { +void ApplyBooLight(void) +{ BoardWinCreate(2, MAKE_MESSID(7, 11), 3); BoardWinWait(); BoardWinKill(); - BoardPlayerMotionShiftSet(currPlayer, 8, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(currPlayer, 8, 0.0f, 8.0f, HU3D_MOTATTR_NONE); while (BoardPlayerMotionEndCheck(currPlayer) == 0) { HuPrcVSleep(); } } -void SetBooBallPos(void) { +void SetBooBallPos(void) +{ Mtx sp14; Vec sp8; s16 var_r31; @@ -690,7 +760,8 @@ void SetBooBallPos(void) { BoardModelPosSetV(ballMdl, &sp8); } -s32 BoardBooComUseCheck(s32 arg0) { +s32 BoardBooComUseCheck(s32 arg0) +{ s32 var_r31; u32 var_r30; s32 var_r29; @@ -703,23 +774,23 @@ s32 BoardBooComUseCheck(s32 arg0) { comStarStealTarget = comCoinStealTarget = -1; var_r26 = var_r27 = -1; switch (GWPlayer[arg0].diff) { - case 0: - var_r30 = 0x5F; - break; - case 1: - var_r30 = 0x32; - break; - case 2: - var_r30 = 5; - break; - case 3: - var_r30 = 0; - break; + case 0: + var_r30 = 0x5F; + break; + case 1: + var_r30 = 0x32; + break; + case 2: + var_r30 = 5; + break; + case 3: + var_r30 = 0; + break; } - + for (var_r31 = 0; var_r31 < 4; var_r31++) { if (var_r31 != arg0) { - if ((s32) GWSystem.team == 0 || var_r31 != BoardPlayerSameTeamFind(arg0)) { + if ((s32)GWSystem.team == 0 || var_r31 != BoardPlayerSameTeamFind(arg0)) { if (BoardPlayerItemFind(var_r31, 8) == -1 || BoardRandMod(0x64) < var_r30) { var_r29 = BoardPlayerCoinsGet(var_r31); var_r28 = GWStarsGet(var_r31); @@ -731,7 +802,7 @@ s32 BoardBooComUseCheck(s32 arg0) { } if (var_r26 < var_r28) { var_r26 = var_r28; - comStarStealTarget = (s8) var_r31; + comStarStealTarget = (s8)var_r31; } } } @@ -745,7 +816,8 @@ s32 BoardBooComUseCheck(s32 arg0) { return 1; } -void BoardBooHouseTutorialExec(void) { +void BoardBooHouseTutorialExec(void) +{ Vec sp38; Vec sp2C; Vec sp20; @@ -759,14 +831,14 @@ void BoardBooHouseTutorialExec(void) { s32 var_r31; s32 var_r30; - temp_r27 = BoardDataDirReadAsync(0x90000); + temp_r27 = BoardDataDirReadAsync(DATADIR_BYOKODORI); temp_r29 = BoardSpaceFlagSearch(0, 0x08000000); BoardDataAsyncWait(temp_r27); temp_r28 = BoardSpaceLinkFlagSearch(0, temp_r29, 0x02000000); BoardSpacePosGet(0, temp_r29, &sp38); BoardSpacePosGet(0, temp_r28, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -15.0f; sp14.y = temp_f31; @@ -775,26 +847,26 @@ void BoardBooHouseTutorialExec(void) { sp8.y = 150.0f; sp8.z = 0.0f; BoardCameraMotionStartEx(houseMdl[0], &sp14, &sp8, 1370.0f, -1.0f, 0x15); - + for (var_r31 = 0; var_r31 < 6; var_r31++) { if (var_r31 != 0) { houseMdl[var_r31] = BoardModelCreateParam(&houseMdlTbl[var_r31], NULL, NULL); } } - houseShowMot = BoardModelMotionCreate(houseMdl[0], 0x90009); - houseHideMot = BoardModelMotionCreate(houseMdl[1], 0x9000A); + houseShowMot = BoardModelMotionCreate(houseMdl[0], DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x09)); + houseHideMot = BoardModelMotionCreate(houseMdl[1], DATA_MAKE_NUM(DATADIR_BYOKODORI, 0x0A)); OpenBooHouse(); - + while (BoardModelMotionEndCheck(BoardBooHouseHostGet()) == 0) { HuPrcVSleep(); } - BoardModelMotionShiftSet(BoardBooHouseHostGet(), houseMot[0], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardBooHouseHostGet(), hostMot[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardTutorialHookExec(0x1C, 0); - BoardModelMotionShiftSet(BoardBooHouseHostGet(), houseMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardBooHouseHostGet(), hostMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardModelPosSet(ballMdl, 0.0f, 0.0f, 0.0f); BoardModelHookSet(houseMdl[0], "yoko02", ballMdl); - BoardModelMotionShiftSet(houseMdl[1], 0, 90.0f, 10.0f, 0); - BoardModelMotionShiftSet(houseMdl[0], 0, 90.0f, 10.0f, 0); + BoardModelMotionShiftSet(houseMdl[1], 0, 90.0f, 10.0f, HU3D_MOTATTR_NONE); + BoardModelMotionShiftSet(houseMdl[0], 0, 90.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(0xA); while (BoardModelMotionShiftIDGet(houseMdl[0]) != -1) { HuPrcVSleep(); @@ -810,7 +882,7 @@ void BoardBooHouseTutorialExec(void) { BoardModelHookReset(houseMdl[0]); BoardBooKill(); ballMdl = -1; - + for (var_r30 = 1; var_r30 < 6; var_r30++) { if (houseMdl[var_r30] != -1) { BoardModelKill(houseMdl[var_r30]); @@ -821,9 +893,9 @@ void BoardBooHouseTutorialExec(void) { BoardModelKill(booMdl); booMdl = -1; } - if (lbl_801D37F8 != -1) { - BoardModelKill(lbl_801D37F8); - lbl_801D37F8 = -1; + if (smokeMdl != -1) { + BoardModelKill(smokeMdl); + smokeMdl = -1; } BoardModelVisibilitySet(BoardBooHouseHostGet(), 0); } diff --git a/src/game/board/bowser.c b/src/game/board/bowser.c index adecec98..bcbe7133 100644 --- a/src/game/board/bowser.c +++ b/src/game/board/bowser.c @@ -12,30 +12,29 @@ #include "game/wipe.h" #include "game/gamework.h" +#include "ext_math.h" #include "string.h" -#define ABS(x) ((x) < 0 ? -(x) : (x)) - typedef struct bowser_event_data { - s16 sprite[3]; - s16 delay[3]; - s16 angle[3]; - s16 group; - s16 model; + s16 sprite[3]; + s16 delay[3]; + s16 angle[3]; + s16 group; + s16 model; } BowserEventData; static BowserEventData bowserEvent; static Vec playerPosTemp[4]; static s32 scareFxTbl[] = { - 0x128, - 0x168, - 0x1A8, - 0x1E8, - 0x228, - 0x268, - 0x2A8, - 0x2E8 + 0x128, + 0x168, + 0x1A8, + 0x1E8, + 0x228, + 0x268, + 0x2A8, + 0x2E8 }; @@ -102,701 +101,701 @@ static s32 ExecMiniBowserEvent(void); s32 BoardBowserExec(s32 player, s32 space) { - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - HuAudFXPlay(841); - BoardCameraViewSet(2); - BoardPlayerMotBlendSet(player, 0, 15); - while(!BoardPlayerMotBlendCheck(player)) { - HuPrcVSleep(); - } - BoardCameraMotionWait(); - BoardTutorialHookExec(12, 0); - GWPlayer[player].color = 2; - } else { - eventPlayer = player; - eventSpace = space; - playerMot[0] = playerMot[1] = playerMot[2] = playerMot[3] = -1; - bowserProc = HuPrcChildCreate(ExecBowser, 8196, 14336, 0, boardMainProc); - HuPrcDestructorSet2(bowserProc, DestroyBowser); - while(bowserProc) { - HuPrcVSleep(); - } - GWPlayer[player].color = 2; - } + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + HuAudFXPlay(841); + BoardCameraViewSet(2); + BoardPlayerMotBlendSet(player, 0, 15); + while(!BoardPlayerMotBlendCheck(player)) { + HuPrcVSleep(); + } + BoardCameraMotionWait(); + BoardTutorialHookExec(12, 0); + GWPlayer[player].color = 2; + } else { + eventPlayer = player; + eventSpace = space; + playerMot[0] = playerMot[1] = playerMot[2] = playerMot[3] = -1; + bowserProc = HuPrcChildCreate(ExecBowser, 8196, 14336, 0, boardMainProc); + HuPrcDestructorSet2(bowserProc, DestroyBowser); + while(bowserProc) { + HuPrcVSleep(); + } + GWPlayer[player].color = 2; + } } typedef struct bowser_work { - u8 kill : 1; - u8 state : 3; - u8 mot_active : 1; - u8 fall_done : 1; - u8 jump_done : 1; - u8 jump_state; - u8 idle_timer; + u8 kill : 1; + u8 state : 3; + u8 mot_active : 1; + u8 fall_done : 1; + u8 jump_done : 1; + u8 jump_state; + u8 idle_timer; } BowserWork; typedef struct mini_bowser_work { - u8 kill : 1; - s16 group; - s16 sprite; - s16 angle; + u8 kill : 1; + s16 group; + s16 sprite; + s16 angle; } MiniBowserWork; typedef struct bowser_event_work { - u8 kill : 1; - s8 state; - s16 timer; + u8 kill : 1; + s8 state; + s16 timer; } BowserEventWork; static void ExecBowser(void) { - #define BOWSER_EVENT 0 - #define MINI_BOWSER_EVENT 1 + #define BOWSER_EVENT 0 + #define MINI_BOWSER_EVENT 1 - s32 i; - s32 status; - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - HuAudFXPlay(841); - omVibrate(eventPlayer, 12, 4, 2); - if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { - boardBowserHook(1); - } - BoardAudSeqPause(0, 1, 1000); - //20% of bowser, 80% chance of koopa kid - if(BoardRandMod(100) < 20) { - eventType = BOWSER_EVENT; - } else { - eventType = MINI_BOWSER_EVENT; - } - } else { - BoardMusStart(1, 6, 127, 0); - } - status = BoardDataDirReadAsync(DATADIR_BKOOPA); - BoardDataAsyncWait(status); - CreatePlayerMot(); - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - ExecBowserMain(); - } else { - ExecMGReturn(); - } - for(i=0; i<4; i++) { - if(eventSpace == GWPlayer[i].space_curr) { - BoardPlayerMotionSpeedSet(i, 1.0f); - } - } - BoardAudSeqPause(0, 0, 1000); - if(bowserObj) { - OM_GET_WORK_PTR(bowserObj, BowserWork)->kill = 1; - } - if(miniBowserObj) { - OM_GET_WORK_PTR(miniBowserObj, MiniBowserWork)->kill = 1; - } - if(bowserEventObj) { - OM_GET_WORK_PTR(bowserEventObj, BowserEventWork)->kill = 1; - } - GWPlayer[eventPlayer].show_next = 1; - BoardCameraMotionStartEx(-1, NULL, NULL, 2100.0f, -1.0f, 21); - HuPrcSleep(30); - for(i=0; i<4; i++) { - BoardPlayerIdleSet(i); - } - BoardCameraMotionWait(); - if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { - boardBowserHook(0); - } else { - HuPrcSleep(30); - } - HuPrcEnd(); + s32 i; + s32 status; + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + HuAudFXPlay(841); + omVibrate(eventPlayer, 12, 4, 2); + if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { + boardBowserHook(1); + } + BoardAudSeqPause(0, 1, 1000); + //20% of bowser, 80% chance of koopa kid + if(BoardRandMod(100) < 20) { + eventType = BOWSER_EVENT; + } else { + eventType = MINI_BOWSER_EVENT; + } + } else { + BoardMusStart(1, 6, 127, 0); + } + status = BoardDataDirReadAsync(DATADIR_BKOOPA); + BoardDataAsyncWait(status); + CreatePlayerMot(); + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + ExecBowserMain(); + } else { + ExecMGReturn(); + } + for(i=0; i<4; i++) { + if(eventSpace == GWPlayer[i].space_curr) { + BoardPlayerMotionSpeedSet(i, 1.0f); + } + } + BoardAudSeqPause(0, 0, 1000); + if(bowserObj) { + OM_GET_WORK_PTR(bowserObj, BowserWork)->kill = 1; + } + if(miniBowserObj) { + OM_GET_WORK_PTR(miniBowserObj, MiniBowserWork)->kill = 1; + } + if(bowserEventObj) { + OM_GET_WORK_PTR(bowserEventObj, BowserEventWork)->kill = 1; + } + GWPlayer[eventPlayer].show_next = 1; + BoardCameraMotionStartEx(-1, NULL, NULL, 2100.0f, -1.0f, 21); + HuPrcSleep(30); + for(i=0; i<4; i++) { + BoardPlayerIdleSet(i); + } + BoardCameraMotionWait(); + if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { + boardBowserHook(0); + } else { + HuPrcSleep(30); + } + HuPrcEnd(); } static void ExecBowserMain(void) { - s32 result = 0; - BoardPlayerMotBlendSet(eventPlayer, 0, 15); - while(!BoardPlayerMotBlendCheck(eventPlayer)) { - HuPrcVSleep(); - } - BoardMusStart(1, 5, 127, 0); - BoardCameraViewSet(3); - BoardFilterFadeInit(30, 160); - BoardCameraMotionWait(); - BoardPlayerMotionShiftSet(eventPlayer, jumpMot, 0.0f, 10.0f, 0x40000001); - BoardPlayerMotionSpeedSet(eventPlayer, 2.0f); - HuPrcSleep(120); - ConfigBowserEvent(); - HuAudFXPlay(scareFxTbl[GWPlayer[eventPlayer].character]); - BoardPlayerMotionShiftSet(eventPlayer, scareMot, 0.0f, 10.0f, 0); - CreateMiniBowser(); - while(!CheckMiniBowser()) { - HuPrcVSleep(); - } - BoardPlayerIdleSet(eventPlayer); - if(eventType) { - result = ExecMiniBowserEvent(); - if(!result) { - return; - } - BoardAudSeqFadeOut(1, 1000); - BoardFilterFadeInit(30, 160); - HuPrcSleep(30); - } - ExecBowserSpecial(); - BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, 0); - HuPrcSleep(8); - HuAudFXPlay(58); - BoardWinCreate(2, MAKE_MESSID(3, 11), 5); - BoardWinWait(); - BoardWinKill(); - BoardAudSeqFadeOut(1, 1000); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(6); - while(!CheckBowserIdle()) { - HuPrcVSleep(); - } - BoardFilterFadeOut(30); + s32 result = 0; + BoardPlayerMotBlendSet(eventPlayer, 0, 15); + while(!BoardPlayerMotBlendCheck(eventPlayer)) { + HuPrcVSleep(); + } + BoardMusStart(1, 5, 127, 0); + BoardCameraViewSet(3); + BoardFilterFadeInit(30, 160); + BoardCameraMotionWait(); + BoardPlayerMotionShiftSet(eventPlayer, jumpMot, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + BoardPlayerMotionSpeedSet(eventPlayer, 2.0f); + HuPrcSleep(120); + ConfigBowserEvent(); + HuAudFXPlay(scareFxTbl[GWPlayer[eventPlayer].character]); + BoardPlayerMotionShiftSet(eventPlayer, scareMot, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + CreateMiniBowser(); + while(!CheckMiniBowser()) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(eventPlayer); + if(eventType) { + result = ExecMiniBowserEvent(); + if(!result) { + return; + } + BoardAudSeqFadeOut(1, 1000); + BoardFilterFadeInit(30, 160); + HuPrcSleep(30); + } + ExecBowserSpecial(); + BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + HuAudFXPlay(58); + BoardWinCreate(2, MAKE_MESSID(3, 11), 5); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(6); + while(!CheckBowserIdle()) { + HuPrcVSleep(); + } + BoardFilterFadeOut(30); } static void ExecMGReturn(void) { - s32 i; - s32 player; - BoardStatusItemSet(1); - for(i=0; i<4; i++) { - BoardPlayerPosSetV(i, &playerPosTemp[i]); - } - BoardCameraMoveSet(0); - BoardCameraTargetPlayerSet(eventPlayer); - BoardCameraViewSet(2); - BoardCameraMotionWait(); - CreateBowserObj(); - SquishPlayers(); - BoardPlayerMotBlendSet(eventPlayer, 0, 15); - BoardCameraViewSet(3); - BoardFilterFadeInit(30, 160); - BoardStatusItemSet(0); - BoardCameraMotionWait(); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); - while(WipeStatGet()) { - HuPrcVSleep(); - } - _ClearFlag(0x1001C); - BoardCameraMoveSet(1); - player = GWSystem.player_curr; - GWSystem.player_curr = -1; - DoMGReturnEffect(); - GWSystem.player_curr = player; - BoardStatusShowSetAll(1); - BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, 0); - HuPrcSleep(8); - HuAudFXPlay(58); - BoardWinCreate(2, MAKE_MESSID(3, 11), 5); - BoardWinWait(); - BoardWinKill(); - while(!BoardStatusStopCheck(0)) { - HuPrcVSleep(); - } - BoardAudSeqFadeOut(1, 1000); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(6); - while(!CheckBowserIdle()) { - HuPrcVSleep(); - } - BoardFilterFadeOut(30); - BoardMusStartBoard(); + s32 i; + s32 player; + BoardStatusItemSet(1); + for(i=0; i<4; i++) { + BoardPlayerPosSetV(i, &playerPosTemp[i]); + } + BoardCameraMoveSet(0); + BoardCameraTargetPlayerSet(eventPlayer); + BoardCameraViewSet(2); + BoardCameraMotionWait(); + CreateBowserObj(); + SquishPlayers(); + BoardPlayerMotBlendSet(eventPlayer, 0, 15); + BoardCameraViewSet(3); + BoardFilterFadeInit(30, 160); + BoardStatusItemSet(0); + BoardCameraMotionWait(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); + while(WipeStatGet()) { + HuPrcVSleep(); + } + _ClearFlag(0x1001C); + BoardCameraMoveSet(1); + player = GWSystem.player_curr; + GWSystem.player_curr = -1; + DoMGReturnEffect(); + GWSystem.player_curr = player; + BoardStatusShowSetAll(1); + BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + HuAudFXPlay(58); + BoardWinCreate(2, MAKE_MESSID(3, 11), 5); + BoardWinWait(); + BoardWinKill(); + while(!BoardStatusStopCheck(0)) { + HuPrcVSleep(); + } + BoardAudSeqFadeOut(1, 1000); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(6); + while(!CheckBowserIdle()) { + HuPrcVSleep(); + } + BoardFilterFadeOut(30); + BoardMusStartBoard(); } static void DestroyBowser(void) { - KillPlayerMot(); - HuDataDirClose(DATADIR_BKOOPA); - bowserProc = NULL; + KillPlayerMot(); + HuDataDirClose(DATADIR_BKOOPA); + bowserProc = NULL; } static void SquishPlayers(void) { - Vec pos; - Vec pos_space; - s32 i; - BoardPlayerPosGet(eventPlayer, &pos); - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - HuAudFXPlay(798); - } - pos.y += 6.0f; - BoardPlayerPosSetV(eventPlayer, &pos); - GWPlayer[eventPlayer].show_next = 0; - BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); - for(i=0; i<4; i++) { - if(eventSpace == GWPlayer[i].space_curr) { - BoardPlayerPosGet(i, &pos); - BoardSpacePosGet(0, eventSpace, &pos_space); - pos.y = pos_space.y+2.5f; - BoardPlayerPosSetV(i, &pos); - BoardPlayerMotionStart(i, playerMot[i], 0); - BoardPlayerMotionTimeSet(i, 50.0f); - BoardPlayerMotionSpeedSet(i, 0.0f); - } - } + Vec pos; + Vec pos_space; + s32 i; + BoardPlayerPosGet(eventPlayer, &pos); + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + HuAudFXPlay(798); + } + pos.y += 6.0f; + BoardPlayerPosSetV(eventPlayer, &pos); + GWPlayer[eventPlayer].show_next = 0; + BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); + for(i=0; i<4; i++) { + if(eventSpace == GWPlayer[i].space_curr) { + BoardPlayerPosGet(i, &pos); + BoardSpacePosGet(0, eventSpace, &pos_space); + pos.y = pos_space.y+2.5f; + BoardPlayerPosSetV(i, &pos); + BoardPlayerMotionStart(i, playerMot[i], 0); + BoardPlayerMotionTimeSet(i, 50.0f); + BoardPlayerMotionSpeedSet(i, 0.0f); + } + } } static void ExecBowserSpecial(void) { - s32 i; - CreateBowserObj(); - while(!CheckBowserIdle()) { - HuPrcVSleep(); - } - SetBowserState(2); - HuAudFXPlay(58); - BoardMusStart(1, 6, 127, 0); - HuPrcSleep(120); - BoardWinCreate(2, MAKE_MESSID(3, 7), 5); - BoardWinWait(); - BoardWinKill(); - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, 0); - for(i=0; i<4; i++) { - omVibrate(i, 12, 12, 0); - } - HuPrcSleep(11); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - CreateBowserEvent(); - HuAudFXPlay(831); - HuAudFXPlay(60); - while(!CheckBowserEvent()) { - HuPrcVSleep(); - } - HuPrcSleep(60); - BoardModelAttrSet(bowserMdl, 0x40000004); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, 0); - StopBowserEvent(); - switch(GWSystem.bowser_event) { - case 0: - ExecBowserGame(); - break; - - case 2: - ExecBowserRevo(); - break; - - case 1: - ExecBowserShuffle(); - break; - - case 3: - ExecBowserSuit(); - break; - } + s32 i; + CreateBowserObj(); + while(!CheckBowserIdle()) { + HuPrcVSleep(); + } + SetBowserState(2); + HuAudFXPlay(58); + BoardMusStart(1, 6, 127, 0); + HuPrcSleep(120); + BoardWinCreate(2, MAKE_MESSID(3, 7), 5); + BoardWinWait(); + BoardWinKill(); + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + for(i=0; i<4; i++) { + omVibrate(i, 12, 12, 0); + } + HuPrcSleep(11); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + CreateBowserEvent(); + HuAudFXPlay(831); + HuAudFXPlay(60); + while(!CheckBowserEvent()) { + HuPrcVSleep(); + } + HuPrcSleep(60); + BoardModelAttrSet(bowserMdl, 0x40000004); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + StopBowserEvent(); + switch(GWSystem.bowser_event) { + case 0: + ExecBowserGame(); + break; + + case 2: + ExecBowserRevo(); + break; + + case 1: + ExecBowserShuffle(); + break; + + case 3: + ExecBowserSuit(); + break; + } } static void ExecBowserGame(void) { - s32 i; - s16 mgTbl[3] = { - 435, - 436, - 437 - }; - s32 messLoss[3] = { - 0x30009, - 0x3000C, - 0x3000E - }; - s32 mg; - s32 mess; - s32 fx_stat; - for(i=0; i<4; i++) { - BoardPlayerPosGet(i, &playerPosTemp[i]); - } - BoardWinCreate(2, MAKE_MESSID(3, 8), 5); - BoardWinWait(); - mess = messLoss[GWSystem.bowser_loss]; - BoardWinCreate(2, mess, 5); - BoardWinWait(); - BoardWinKill(); - BoardModelMotionShiftSet(bowserMdl, 5, 0.0f, 8.0f, 0); - HuPrcSleep(8); - while(BoardModelMotionTimeGet(bowserMdl) < 80.0f) { - HuPrcVSleep(); - } - fx_stat = HuAudFXPlay(846); - InitBowserFire(); - while(BoardModelMotionTimeGet(bowserMdl) < 200.0f) { - HuPrcVSleep(); - } - BoardAudSeqFadeOut(1, 1000); - BoardMusVolPanSet(0, 0, 1); - BoardAudSeqPause(0, 0, 1); - _SetFlag(0x1000E); - HuAudFXFadeOut(fx_stat, 500); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuAudFXAllStop(); - _SetFlag(0x1001C); - KillBowserFire(); - HuPrcSleep(60); - BoardModelMotionStart(bowserMdl, 1, 0); - mg = (s16)mgTbl[BoardRandMod(3)]; - GWMGAvailSet(mg); - GWSystem.mg_next = mg-401; - _SetFlag(0x10003); - BoardNextOvlSet(OVL_INST); - BoardFilterFadeOut(30); - HuPrcEnd(); + s32 i; + s16 mgTbl[3] = { + 435, + 436, + 437 + }; + s32 messLoss[3] = { + MAKE_MESSID(3, 9), + MAKE_MESSID(3, 12), + MAKE_MESSID(3, 14) + }; + s32 mg; + s32 mess; + s32 fx_stat; + for(i=0; i<4; i++) { + BoardPlayerPosGet(i, &playerPosTemp[i]); + } + BoardWinCreate(2, MAKE_MESSID(3, 8), 5); + BoardWinWait(); + mess = messLoss[GWSystem.bowser_loss]; + BoardWinCreate(2, mess, 5); + BoardWinWait(); + BoardWinKill(); + BoardModelMotionShiftSet(bowserMdl, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + while(BoardModelMotionTimeGet(bowserMdl) < 80.0f) { + HuPrcVSleep(); + } + fx_stat = HuAudFXPlay(846); + InitBowserFire(); + while(BoardModelMotionTimeGet(bowserMdl) < 200.0f) { + HuPrcVSleep(); + } + BoardAudSeqFadeOut(1, 1000); + BoardMusVolPanSet(0, 0, 1); + BoardAudSeqPause(0, 0, 1); + _SetFlag(0x1000E); + HuAudFXFadeOut(fx_stat, 500); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuAudFXAllStop(); + _SetFlag(0x1001C); + KillBowserFire(); + HuPrcSleep(60); + BoardModelMotionStart(bowserMdl, 1, 0); + mg = (s16)mgTbl[BoardRandMod(3)]; + GWMGAvailSet(mg); + GWSystem.mg_next = mg-401; + _SetFlag(0x10003); + BoardNextOvlSet(OVL_INST); + BoardFilterFadeOut(30); + HuPrcEnd(); } static void DoMGReturnEffect(void) { - s32 messTbl[3] = { - 0x3000A, - 0x3000D, - 0x3000F - }; - s32 player; - s32 coin; - s32 item; - s32 delay; - s32 item_cnt; - s32 mess; - s32 mess_char; - for(player=0; player<4; player++) { - if(GWPlayerCoinWinGet(player) == 1) { - break; - } - } - mess = messTbl[GWSystem.bowser_loss]; - mess_char = BoardPlayerGetCharMess(player); - BoardStatusShowSetForce(player); - BoardStatusShowSet(player, 1); - BoardWinCreate(2, mess, 5); - BoardWinInsertMesSet(mess_char, 1); - BoardWinWait(); - while(!BoardStatusStopCheck(player)) { - HuPrcVSleep(); - } - omVibrate(player, 12, 4, 2); - if(GWSystem.bowser_loss == 2) { - item_cnt = BoardPlayerItemCount(player); - for(item=0; item> 1); - } - if(coin >= 50 ) { - delay = 1; - } else if(coin >= 20) { - delay = 3; - } else { - delay = 6; - } - while(coin != 0 && BoardPlayerCoinsGet(player) != 0) { - BoardPlayerCoinsAdd(player, -1); - HuAudFXPlay(14); - HuPrcSleep(delay); - coin--; - } - HuAudFXPlay(15); - } - BoardStatusShowSet(player, 0); - while(!BoardStatusStopCheck(player)) { - HuPrcVSleep(); - } + s32 messTbl[3] = { + MAKE_MESSID(3, 10), + MAKE_MESSID(3, 13), + MAKE_MESSID(3, 15) + }; + s32 player; + s32 coin; + s32 item; + s32 delay; + s32 item_cnt; + s32 mess; + s32 mess_char; + for(player=0; player<4; player++) { + if(GWPlayerCoinWinGet(player) == 1) { + break; + } + } + mess = messTbl[GWSystem.bowser_loss]; + mess_char = BoardPlayerGetCharMess(player); + BoardStatusShowSetForce(player); + BoardStatusShowSet(player, 1); + BoardWinCreate(2, mess, 5); + BoardWinInsertMesSet(mess_char, 1); + BoardWinWait(); + while(!BoardStatusStopCheck(player)) { + HuPrcVSleep(); + } + omVibrate(player, 12, 4, 2); + if(GWSystem.bowser_loss == 2) { + item_cnt = BoardPlayerItemCount(player); + for(item=0; item> 1); + } + if(coin >= 50 ) { + delay = 1; + } else if(coin >= 20) { + delay = 3; + } else { + delay = 6; + } + while(coin != 0 && BoardPlayerCoinsGet(player) != 0) { + BoardPlayerCoinsAdd(player, -1); + HuAudFXPlay(14); + HuPrcSleep(delay); + coin--; + } + HuAudFXPlay(15); + } + BoardStatusShowSet(player, 0); + while(!BoardStatusStopCheck(player)) { + HuPrcVSleep(); + } } static void ExecBowserShuffle(void) { - Vec pos; - Vec target; - s16 space_old[4]; - s16 space[4]; - s32 i; - s32 player; - s32 player_new; - s32 reset_cam; - BoardWinCreate(2, MAKE_MESSID(3, 16), 5); - BoardWinWait(); - BoardWinKill(); - for(i=0; i<4; i++) { - space_old[i] = GWPlayer[i].space_curr; - } - player=0; - while(player<4) { - player_new = BoardRandMod(4); - if(player_new == player || space_old[player_new] == -1) { - continue; - } - space[player] = space_old[player_new]; - space_old[player_new] = -1; - player++; - } - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, 0); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(3); - HuPrcSleep(60); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - reset_cam = 0; - for(i=0; i<4; i++) { - GWPlayer[i].space_curr = space[i]; - if(eventSpace == space[i]) { - BoardPlayerMotionStart(i, playerMot[i], 0); - BoardPlayerMotionTimeSet(i, 50.0f); - BoardPlayerMotionSpeedSet(i, 0.0f); - reset_cam = 1; - } else { - BoardPlayerIdleSet(i); - } - BoardPlayerMoveAwayStart(i, GWPlayer[i].space_curr, 1); - } - if(reset_cam) { - BoardCameraTargetGet(&target); - BoardCameraPosGet(&pos); - BoardCameraTargetModelSet(-1); - BoardCameraTargetSet(target.x, target.y, target.z); - BoardCameraPosSet(pos.x, pos.y, pos.z); - } - SetBowserState(4); - HuPrcSleep(60); - BoardModelMotionStart(bowserMdl, 1, 0x40000001); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } + Vec pos; + Vec target; + s16 space_old[4]; + s16 space[4]; + s32 i; + s32 player; + s32 player_new; + s32 reset_cam; + BoardWinCreate(2, MAKE_MESSID(3, 16), 5); + BoardWinWait(); + BoardWinKill(); + for(i=0; i<4; i++) { + space_old[i] = GWPlayer[i].space_curr; + } + player=0; + while(player<4) { + player_new = BoardRandMod(4); + if(player_new == player || space_old[player_new] == -1) { + continue; + } + space[player] = space_old[player_new]; + space_old[player_new] = -1; + player++; + } + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(3); + HuPrcSleep(60); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + reset_cam = 0; + for(i=0; i<4; i++) { + GWPlayer[i].space_curr = space[i]; + if(eventSpace == space[i]) { + BoardPlayerMotionStart(i, playerMot[i], 0); + BoardPlayerMotionTimeSet(i, 50.0f); + BoardPlayerMotionSpeedSet(i, 0.0f); + reset_cam = 1; + } else { + BoardPlayerIdleSet(i); + } + BoardPlayerMoveAwayStart(i, GWPlayer[i].space_curr, 1); + } + if(reset_cam) { + BoardCameraTargetGet(&target); + BoardCameraPosGet(&pos); + BoardCameraTargetModelSet(-1); + BoardCameraTargetSet(target.x, target.y, target.z); + BoardCameraPosSet(pos.x, pos.y, pos.z); + } + SetBowserState(4); + HuPrcSleep(60); + BoardModelMotionStart(bowserMdl, 1, 0x40000001); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } } static void ExecBowserRevo(void) { - s32 i; - s32 coin; - BoardWinCreate(2, MAKE_MESSID(3, 17), 5); - BoardWinWait(); - BoardWinKill(); - for(coin=i=0; i<4; i++) { - coin += BoardPlayerCoinsGet(i); - } - coin /= 4; - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, 0); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(3); - HuPrcSleep(60); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - SetBowserState(4); - for(i=0; i<4; i++) { - BoardPlayerCoinsSet(i, coin); - } - HuPrcSleep(60); - BoardModelMotionStart(bowserMdl, 1, 0x40000001); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } + s32 i; + s32 coin; + BoardWinCreate(2, MAKE_MESSID(3, 17), 5); + BoardWinWait(); + BoardWinKill(); + for(coin=i=0; i<4; i++) { + coin += BoardPlayerCoinsGet(i); + } + coin /= 4; + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(3); + HuPrcSleep(60); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + SetBowserState(4); + for(i=0; i<4; i++) { + BoardPlayerCoinsSet(i, coin); + } + HuPrcSleep(60); + BoardModelMotionStart(bowserMdl, 1, 0x40000001); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } } static void ExecBowserSuit(void) { - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, 0); - BoardWinCreate(2, MAKE_MESSID(3, 18), 5); - BoardWinWait(); - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, 0); - HuPrcSleep(10); - StartSuitGive(); - while(!CheckSuitGive()) { - HuPrcVSleep(); - } - BoardWinKill(); - BoardModelAttrSet(bowserMdl, 0x40000004); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + BoardWinCreate(2, MAKE_MESSID(3, 18), 5); + BoardWinWait(); + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(10); + StartSuitGive(); + while(!CheckSuitGive()) { + HuPrcVSleep(); + } + BoardWinKill(); + BoardModelAttrSet(bowserMdl, 0x40000004); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } } typedef struct suit_give_work { - u8 kill : 1; - u8 state; - u8 timer; - u8 idle_timer; - s16 model; + u8 kill : 1; + u8 state; + u8 timer; + u8 idle_timer; + s16 model; } SuitGiveWork; static s32 CheckSuitGive(void) { - if(!suitGiveObj) { - return 1; - } else { - return 0; - } + if(!suitGiveObj) { + return 1; + } else { + return 0; + } } static void StartSuitGive(void) { - omObjData *object; - SuitGiveWork *work; - Vec pos; - object = omAddObjEx(boardObjMan, 258, 0, 0, -1, SuitGiveMain); - suitGiveObj = object; - work = OM_GET_WORK_PTR(suitGiveObj, SuitGiveWork); - work->kill = 0; - work->state = 0; - work->idle_timer = 0; - work->timer = 30; - work->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 120), NULL, 0); - BoardModelLayerSet(work->model, 7); - BoardModelScaleSet(work->model, 0.16f, 0.16f, 0.16f); - object->trans.x = 288.0f; - object->trans.y = -64.0f; - pos.x = 288.0f; - pos.y = 240.0f; - object->rot.x = (pos.x-object->trans.x)/30.0f; - object->rot.y = (pos.y-object->trans.y)/30.0f; - object->scale.x = 300.0f; - pos.x = object->trans.x; - pos.y = object->trans.y; - pos.z = object->scale.x; - Hu3D2Dto3D(&pos, 1, &pos); - BoardModelPosSetV(work->model, &pos); + omObjData *object; + SuitGiveWork *work; + Vec pos; + object = omAddObjEx(boardObjMan, 258, 0, 0, -1, SuitGiveMain); + suitGiveObj = object; + work = OM_GET_WORK_PTR(suitGiveObj, SuitGiveWork); + work->kill = 0; + work->state = 0; + work->idle_timer = 0; + work->timer = 30; + work->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 120), NULL, 0); + BoardModelLayerSet(work->model, 7); + BoardModelScaleSet(work->model, 0.16f, 0.16f, 0.16f); + object->trans.x = 288.0f; + object->trans.y = -64.0f; + pos.x = 288.0f; + pos.y = 240.0f; + object->rot.x = (pos.x-object->trans.x)/30.0f; + object->rot.y = (pos.y-object->trans.y)/30.0f; + object->scale.x = 300.0f; + pos.x = object->trans.x; + pos.y = object->trans.y; + pos.z = object->scale.x; + Hu3D2Dto3D(&pos, 1, &pos); + BoardModelPosSetV(work->model, &pos); } static void SuitGiveMain(omObjData *object) { - SuitGiveWork *work = OM_GET_WORK_PTR(object, SuitGiveWork); - s32 effect_active; - Vec pos; - if(work->kill || BoardIsKill()) { - BoardModelKill(work->model); - suitGiveObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->idle_timer) { - work->idle_timer--; - return; - } - - effect_active = 0; - switch(work->state) { - case 0: - if(work->timer == 0) { - work->state = 1; - work->idle_timer = 30; - work->timer = 30; - BoardStatusPosGet(eventPlayer, &pos); - object->rot.x = (pos.x-object->trans.x)/30.0f; - object->rot.y = (pos.y-object->trans.y)/30.0f; - } else { - work->timer--; - } - break; - - case 1: - if(work->timer == 0) { - work->state = 2; - work->idle_timer = 6; - effect_active = 1; - } else { - work->timer--; - } - break; - - case 2: - BoardPlayerItemAdd(eventPlayer, 10); - BoardModelVisibilitySet(work->model, 0); - work->kill = 1; - return; - - default: - break; - } - object->trans.x += object->rot.x; - object->trans.y += object->rot.y; - pos.x = object->trans.x; - pos.y = object->trans.y; - pos.z = object->scale.x; - Hu3D2Dto3D(&pos, 1, &pos); - BoardModelPosSetV(work->model, &pos); - if(effect_active) { - CharModelLayerSetAll(6); - CharModelEffectCreate(1, &pos); - } + SuitGiveWork *work = OM_GET_WORK_PTR(object, SuitGiveWork); + s32 effect_active; + Vec pos; + if(work->kill || BoardIsKill()) { + BoardModelKill(work->model); + suitGiveObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->idle_timer) { + work->idle_timer--; + return; + } + + effect_active = 0; + switch(work->state) { + case 0: + if(work->timer == 0) { + work->state = 1; + work->idle_timer = 30; + work->timer = 30; + BoardStatusPosGet(eventPlayer, &pos); + object->rot.x = (pos.x-object->trans.x)/30.0f; + object->rot.y = (pos.y-object->trans.y)/30.0f; + } else { + work->timer--; + } + break; + + case 1: + if(work->timer == 0) { + work->state = 2; + work->idle_timer = 6; + effect_active = 1; + } else { + work->timer--; + } + break; + + case 2: + BoardPlayerItemAdd(eventPlayer, 10); + BoardModelVisibilitySet(work->model, 0); + work->kill = 1; + return; + + default: + break; + } + object->trans.x += object->rot.x; + object->trans.y += object->rot.y; + pos.x = object->trans.x; + pos.y = object->trans.y; + pos.z = object->scale.x; + Hu3D2Dto3D(&pos, 1, &pos); + BoardModelPosSetV(work->model, &pos); + if(effect_active) { + CharModelLayerSetAll(6); + CharModelEffectCreate(1, &pos); + } } static const s32 bowserMotTbl[] = { - DATA_MAKE_NUM(DATADIR_BKOOPA, 8), - DATA_MAKE_NUM(DATADIR_BKOOPA, 10), - DATA_MAKE_NUM(DATADIR_BKOOPA, 11), - DATA_MAKE_NUM(DATADIR_BKOOPA, 12), - DATA_MAKE_NUM(DATADIR_BKOOPA, 13), - DATA_NUM_LISTEND + DATA_MAKE_NUM(DATADIR_BKOOPA, 8), + DATA_MAKE_NUM(DATADIR_BKOOPA, 10), + DATA_MAKE_NUM(DATADIR_BKOOPA, 11), + DATA_MAKE_NUM(DATADIR_BKOOPA, 12), + DATA_MAKE_NUM(DATADIR_BKOOPA, 13), + DATA_NUM_LISTEND }; static void CreateBowserObj(void) { - BowserWork *work; - Vec pos; - bowserObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserObj); - work = OM_GET_WORK_PTR(bowserObj, BowserWork); - work->kill = 0; - work->jump_state = 0; - work->idle_timer = 0; - work->mot_active = 0; - work->fall_done = 0; - work->jump_done = 0; - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - work->state = 1; - } else { - work->state = 0; - } - bowserMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 7), (s32 *)bowserMotTbl, 0); - BoardModelVisibilitySet(bowserMdl, 0); - BoardModelScaleSet(bowserMdl, 2.0f, 2.0f, 2.0f); - BoardPlayerPosGet(eventPlayer, &pos); - BoardModelLayerSet(bowserMdl, 2); - bowserObj->trans.x = pos.x; - bowserObj->trans.y = pos.y; - bowserObj->trans.z = pos.z; - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - suitItemMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 99), NULL, 0); - BoardModelLayerSet(suitItemMdl, 2); - BoardModelVisibilitySet(suitItemMdl, 0); - } else { - s32 space = GWPlayer[eventPlayer].space_curr; - BoardSpacePosGet(0, space, &pos); - bowserObj->trans.x = pos.x; - bowserObj->trans.y = pos.y; - bowserObj->trans.z = pos.z; - BoardModelPosSetV(bowserMdl, &pos); - BoardCameraTargetSpaceSet(space); - BoardModelMotionStart(bowserMdl, 1, 0x40000001); - BoardModelVisibilitySet(bowserMdl, 1); - } + BowserWork *work; + Vec pos; + bowserObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserObj); + work = OM_GET_WORK_PTR(bowserObj, BowserWork); + work->kill = 0; + work->jump_state = 0; + work->idle_timer = 0; + work->mot_active = 0; + work->fall_done = 0; + work->jump_done = 0; + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + work->state = 1; + } else { + work->state = 0; + } + bowserMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 7), (s32 *)bowserMotTbl, 0); + BoardModelVisibilitySet(bowserMdl, 0); + BoardModelScaleSet(bowserMdl, 2.0f, 2.0f, 2.0f); + BoardPlayerPosGet(eventPlayer, &pos); + BoardModelLayerSet(bowserMdl, 2); + bowserObj->trans.x = pos.x; + bowserObj->trans.y = pos.y; + bowserObj->trans.z = pos.z; + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + suitItemMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 99), NULL, 0); + BoardModelLayerSet(suitItemMdl, 2); + BoardModelVisibilitySet(suitItemMdl, 0); + } else { + s32 space = GWPlayer[eventPlayer].space_curr; + BoardSpacePosGet(0, space, &pos); + bowserObj->trans.x = pos.x; + bowserObj->trans.y = pos.y; + bowserObj->trans.z = pos.z; + BoardModelPosSetV(bowserMdl, &pos); + BoardCameraTargetSpaceSet(space); + BoardModelMotionStart(bowserMdl, 1, 0x40000001); + BoardModelVisibilitySet(bowserMdl, 1); + } } static void ExecBowserFall(BowserWork *work, omObjData *object); @@ -807,316 +806,316 @@ static void ExecBowserJump(BowserWork *work, omObjData *object); static void ExecBowserObj(omObjData *object) { - BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); - Vec pos; - Vec rot; - - if(work->kill || BoardIsKill()) { - BoardModelKill(bowserMdl); - bowserMdl = -1; - BoardModelKill(suitItemMdl); - suitItemMdl = -1; - omDelObjEx(HuPrcCurrentGet(), object); - bowserObj = NULL; - return; - } - if(work->idle_timer) { - work->idle_timer--; - return; - } - if(work->mot_active && BoardModelMotionEndCheck(bowserMdl)) { - work->mot_active = 0; - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, 0x40000001); - } - switch(work->state) { - case 1: - ExecBowserFall(work, object); - break; - - case 2: - ExecBowserLaugh(work, object); - break; - - case 3: - ExecBowserPowerUp(work, object); - break; - - case 5: - ExecBowserFire(work, object); - break; - - case 6: - ExecBowserJump(work, object); - break; - - case 4: - BoardModelVisibilitySet(suitItemMdl, 0); - work->state = 0; - break; - - case 0: - break; - } - BoardModelPosSet(bowserMdl, object->trans.x, object->trans.y, object->trans.z); - BoardCameraRotGet(&rot); - pos.x = object->trans.x+(-100.0f*sin(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.z = object->trans.z+(-100.0f*cos(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.y = object->trans.y+250.0f; - BoardModelPosSetV(suitItemMdl, &pos); + BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); + Vec pos; + Vec rot; + + if(work->kill || BoardIsKill()) { + BoardModelKill(bowserMdl); + bowserMdl = -1; + BoardModelKill(suitItemMdl); + suitItemMdl = -1; + omDelObjEx(HuPrcCurrentGet(), object); + bowserObj = NULL; + return; + } + if(work->idle_timer) { + work->idle_timer--; + return; + } + if(work->mot_active && BoardModelMotionEndCheck(bowserMdl)) { + work->mot_active = 0; + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + switch(work->state) { + case 1: + ExecBowserFall(work, object); + break; + + case 2: + ExecBowserLaugh(work, object); + break; + + case 3: + ExecBowserPowerUp(work, object); + break; + + case 5: + ExecBowserFire(work, object); + break; + + case 6: + ExecBowserJump(work, object); + break; + + case 4: + BoardModelVisibilitySet(suitItemMdl, 0); + work->state = 0; + break; + + case 0: + break; + } + BoardModelPosSet(bowserMdl, object->trans.x, object->trans.y, object->trans.z); + BoardCameraRotGet(&rot); + pos.x = object->trans.x+(-100.0f*sind(BoardModelRotYGet(bowserMdl))); + pos.z = object->trans.z+(-100.0f*cosd(BoardModelRotYGet(bowserMdl))); + pos.y = object->trans.y+250.0f; + BoardModelPosSetV(suitItemMdl, &pos); } static void ExecBowserFall(BowserWork *work, omObjData *object) { - Vec pos; - Vec pos_space; - Vec pos_player; - s32 i; - if(!work->jump_state) { - BoardModelVisibilitySet(bowserMdl, 1); - BoardModelMotionStart(bowserMdl, 2, 0); - BoardModelMotionTimeSet(bowserMdl, 100.0f); - work->jump_state = 1; - return; - } - if(BoardModelMotionEndCheck(bowserMdl)) { - work->state = 0; - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, 0x40000001); - return; - } - if(!work->fall_done && !(BoardModelMotionTimeGet(bowserMdl) < 140.0f)) { - BoardPlayerPosGet(eventPlayer, &pos); - HuAudFXPlay(829); - BoardCameraQuakeSet(60, 100.0f); - object->trans.y = pos.y; - BoardPlayerPosGet(eventPlayer, &pos_player); - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - HuAudFXPlay(798); - } - pos_player.y += 6.0f; - BoardPlayerPosSetV(eventPlayer, &pos_player); - GWPlayer[eventPlayer].show_next = 0; - BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); - for(i=0; i<4; i++) { - if(eventSpace != GWPlayer[i].space_curr) { - continue; - } - BoardPlayerPosGet(i, &pos_player); - BoardSpacePosGet(0, eventSpace, &pos_space); - pos_player.y = 2.5f+pos_space.y; - BoardPlayerPosSetV(i, &pos_player); - BoardPlayerMotionStart(i, playerMot[i], 0); - BoardPlayerMotionTimeSet(i, 50.0f); - BoardPlayerMotionSpeedSet(i, 0.0f); - } - if(!work->fall_done) { - work->fall_done = 1; - omVibrate(eventPlayer, 12, 4, 2); - } - } - + Vec pos; + Vec pos_space; + Vec pos_player; + s32 i; + if(!work->jump_state) { + BoardModelVisibilitySet(bowserMdl, 1); + BoardModelMotionStart(bowserMdl, 2, 0); + BoardModelMotionTimeSet(bowserMdl, 100.0f); + work->jump_state = 1; + return; + } + if(BoardModelMotionEndCheck(bowserMdl)) { + work->state = 0; + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + return; + } + if(!work->fall_done && !(BoardModelMotionTimeGet(bowserMdl) < 140.0f)) { + BoardPlayerPosGet(eventPlayer, &pos); + HuAudFXPlay(829); + BoardCameraQuakeSet(60, 100.0f); + object->trans.y = pos.y; + BoardPlayerPosGet(eventPlayer, &pos_player); + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + HuAudFXPlay(798); + } + pos_player.y += 6.0f; + BoardPlayerPosSetV(eventPlayer, &pos_player); + GWPlayer[eventPlayer].show_next = 0; + BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); + for(i=0; i<4; i++) { + if(eventSpace != GWPlayer[i].space_curr) { + continue; + } + BoardPlayerPosGet(i, &pos_player); + BoardSpacePosGet(0, eventSpace, &pos_space); + pos_player.y = 2.5f+pos_space.y; + BoardPlayerPosSetV(i, &pos_player); + BoardPlayerMotionStart(i, playerMot[i], 0); + BoardPlayerMotionTimeSet(i, 50.0f); + BoardPlayerMotionSpeedSet(i, 0.0f); + } + if(!work->fall_done) { + work->fall_done = 1; + omVibrate(eventPlayer, 12, 4, 2); + } + } + } static void ExecBowserLaugh(BowserWork *work, omObjData *object) { - BoardModelMotionStart(bowserMdl, 3, 0); - work->mot_active = 1; - work->state = 0; + BoardModelMotionStart(bowserMdl, 3, 0); + work->mot_active = 1; + work->state = 0; } static void ExecBowserFire(BowserWork *work, omObjData *object) { - BoardModelMotionStart(bowserMdl, 5, 0); - work->state = 0; + BoardModelMotionStart(bowserMdl, 5, 0); + work->state = 0; } static void ExecBowserJump(BowserWork *work, omObjData *object) { - switch(work->jump_state) { - case 0: - BoardModelMotionShiftSet(bowserMdl, 2, 0.0f, 4.0f, 0); - work->jump_state = 1; - break; - - case 1: - { - s16 model_id = BoardModelIDGet(bowserMdl); - if(Hu3DMotionShiftIDGet(model_id) == -1) { - work->jump_state = 2; - } - } - break; - - case 2: - { - float time = BoardModelMotionTimeGet(bowserMdl); - if(time < 60.0f) { - break; - } - if(!work->jump_done) { - omVibrate(eventPlayer, 12, 12, 0); - HuAudFXPlay(61); - work->jump_done = 1; - } - if(time >= 100.0f) { - BoardModelVisibilitySet(bowserMdl, 0); - work->state = 0; - work->kill = 1; - } - } - break; - } + switch(work->jump_state) { + case 0: + BoardModelMotionShiftSet(bowserMdl, 2, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + work->jump_state = 1; + break; + + case 1: + { + s16 model_id = BoardModelIDGet(bowserMdl); + if(Hu3DMotionShiftIDGet(model_id) == -1) { + work->jump_state = 2; + } + } + break; + + case 2: + { + float time = BoardModelMotionTimeGet(bowserMdl); + if(time < 60.0f) { + break; + } + if(!work->jump_done) { + omVibrate(eventPlayer, 12, 12, 0); + HuAudFXPlay(61); + work->jump_done = 1; + } + if(time >= 100.0f) { + BoardModelVisibilitySet(bowserMdl, 0); + work->state = 0; + work->kill = 1; + } + } + break; + } } static void ExecBowserPowerUp(BowserWork *work, omObjData *object) { - Vec pos; - if(work->jump_state == 0) { - BoardModelVisibilitySet(suitItemMdl, 1); - BoardModelMotionStart(suitItemMdl, 0, 0); - BoardModelScaleSet(suitItemMdl, 10.0f, 10.0f, 10.0f); - pos.x = object->trans.x+(-100.0f*sin(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.z = object->trans.z+(-100.0f*cos(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.y = object->trans.y+250.0f; - BoardModelPosSetV(suitItemMdl, &pos); - HuAudFXPlay(850); - } else { - if(work->jump_state >= 100) { - work->state = 0; - } - } - work->jump_state++; + Vec pos; + if(work->jump_state == 0) { + BoardModelVisibilitySet(suitItemMdl, 1); + BoardModelMotionStart(suitItemMdl, 0, 0); + BoardModelScaleSet(suitItemMdl, 10.0f, 10.0f, 10.0f); + pos.x = object->trans.x+(-100.0f*sind(BoardModelRotYGet(bowserMdl))); + pos.z = object->trans.z+(-100.0f*cosd(BoardModelRotYGet(bowserMdl))); + pos.y = object->trans.y+250.0f; + BoardModelPosSetV(suitItemMdl, &pos); + HuAudFXPlay(850); + } else { + if(work->jump_state >= 100) { + work->state = 0; + } + } + work->jump_state++; } static void SetBowserState(s32 state) { - BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); - work->state = state; - work->jump_state = 0; + BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); + work->state = state; + work->jump_state = 0; } static s32 CheckBowserIdle(void) { - BowserWork *work; - if(!bowserObj) { - return 1; - } - work = OM_GET_WORK_PTR(bowserObj, BowserWork); - if(work->state != 0 || work->idle_timer != 0) { - return 0; - } else { - return 1; - } + BowserWork *work; + if(!bowserObj) { + return 1; + } + work = OM_GET_WORK_PTR(bowserObj, BowserWork); + if(work->state != 0 || work->idle_timer != 0) { + return 0; + } else { + return 1; + } } static void CreateMiniBowser(void) { - omObjData *object; - MiniBowserWork *work; - object = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowser); - miniBowserObj = object; - work = OM_GET_WORK_PTR(object, MiniBowserWork); - work->kill = 0; - work->angle = 0; - work->group = HuSprGrpCreate(1); - BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 5), 100, NULL, &work->sprite); - HuSprGrpMemberSet(work->group, 0, work->sprite); - HuSprAttrSet(work->group, 0, HUSPR_ATTR_LINEAR); - HuSprGrpPosSet(work->group, 288.0f, 240.0f); - HuSprGrpScaleSet(work->group, 4.0f, 4.0f); + omObjData *object; + MiniBowserWork *work; + object = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowser); + miniBowserObj = object; + work = OM_GET_WORK_PTR(object, MiniBowserWork); + work->kill = 0; + work->angle = 0; + work->group = HuSprGrpCreate(1); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 5), 100, NULL, &work->sprite); + HuSprGrpMemberSet(work->group, 0, work->sprite); + HuSprAttrSet(work->group, 0, HUSPR_ATTR_LINEAR); + HuSprGrpPosSet(work->group, 288.0f, 240.0f); + HuSprGrpScaleSet(work->group, 4.0f, 4.0f); } static s32 CheckMiniBowser(void) { - if(miniBowserObj) { - return 0; - } else { - return 1; - } + if(miniBowserObj) { + return 0; + } else { + return 1; + } } static void ExecMiniBowser(omObjData *object) { - MiniBowserWork *work = OM_GET_WORK_PTR(object, MiniBowserWork); - float alpha; - if(work->kill || BoardIsKill()) { - HuSprGrpKill(work->group); - miniBowserObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - OSs16tof32(&work->angle, &alpha); - alpha = sin(M_PI*BoardDAngleCalc(alpha)/180.0); - HuSprTPLvlSet(work->group, 0, ABS(alpha)); - if(work->angle == 60) { - HuAudFXPlay(807); - } - work->angle += 2; - if(work->angle == 90 || work->angle == 270 || work->angle == 450) { - omVibrate(eventPlayer, 12, 4, 2); - } - if(work->angle >= 540) { - work->kill = 1; - } + MiniBowserWork *work = OM_GET_WORK_PTR(object, MiniBowserWork); + float alpha; + if(work->kill || BoardIsKill()) { + HuSprGrpKill(work->group); + miniBowserObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + OSs16tof32(&work->angle, &alpha); + alpha = sind(BoardDAngleCalc(alpha)); + HuSprTPLvlSet(work->group, 0, ABS(alpha)); + if(work->angle == 60) { + HuAudFXPlay(807); + } + work->angle += 2; + if(work->angle == 90 || work->angle == 270 || work->angle == 450) { + omVibrate(eventPlayer, 12, 4, 2); + } + if(work->angle >= 540) { + work->kill = 1; + } } static void CreateBowserEvent(void) { - Vec pos_2d; - Vec pos_3d; - s32 eventSpr[] = { - DATA_MAKE_NUM(DATADIR_BKOOPA, 1), - DATA_MAKE_NUM(DATADIR_BKOOPA, 2), - DATA_MAKE_NUM(DATADIR_BKOOPA, 3), - DATA_MAKE_NUM(DATADIR_BKOOPA, 4), - }; - - - BowserEventData *data; - s32 i; - BowserEventWork *work; - s32 sprite; - bowserEventObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserEvent); - work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); - work->kill = 0; - work->state = 0; - work->timer = 0; - memset(&bowserEvent, 0, sizeof(BowserEventData)); - data = &bowserEvent; - data->group = HuSprGrpCreate(3); - sprite = eventSpr[GWSystem.bowser_event]; - for(i=0; i<3; i++) { - BoardSpriteCreate(sprite, 100, NULL, &data->sprite[i]); - HuSprGrpMemberSet(data->group, i, data->sprite[i]); - HuSprTPLvlSet(data->group, i, 0.0f); - HuSprPosSet(data->group, i, 0.0f, 0.0f); - data->delay[i] = i*2; - } - HuSprGrpPosSet(data->group, 288.0f, 240.0f); - data->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 101), NULL, 0); - pos_2d.x = 288.0f; - pos_2d.y = 240.0f; - pos_2d.z = 1000.0f; - Hu3D2Dto3D(&pos_2d, 1, &pos_3d); - BoardModelMotionStart(data->model, 0, 0x40000001); - BoardModelPosSetV(data->model, &pos_3d); - BoardModelLayerSet(data->model, 2); + Vec pos_2d; + Vec pos_3d; + s32 eventSpr[] = { + DATA_MAKE_NUM(DATADIR_BKOOPA, 1), + DATA_MAKE_NUM(DATADIR_BKOOPA, 2), + DATA_MAKE_NUM(DATADIR_BKOOPA, 3), + DATA_MAKE_NUM(DATADIR_BKOOPA, 4), + }; + + + BowserEventData *data; + s32 i; + BowserEventWork *work; + s32 sprite; + bowserEventObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserEvent); + work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); + work->kill = 0; + work->state = 0; + work->timer = 0; + memset(&bowserEvent, 0, sizeof(BowserEventData)); + data = &bowserEvent; + data->group = HuSprGrpCreate(3); + sprite = eventSpr[GWSystem.bowser_event]; + for(i=0; i<3; i++) { + BoardSpriteCreate(sprite, 100, NULL, &data->sprite[i]); + HuSprGrpMemberSet(data->group, i, data->sprite[i]); + HuSprTPLvlSet(data->group, i, 0.0f); + HuSprPosSet(data->group, i, 0.0f, 0.0f); + data->delay[i] = i*2; + } + HuSprGrpPosSet(data->group, 288.0f, 240.0f); + data->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 101), NULL, 0); + pos_2d.x = 288.0f; + pos_2d.y = 240.0f; + pos_2d.z = 1000.0f; + Hu3D2Dto3D(&pos_2d, 1, &pos_3d); + BoardModelMotionStart(data->model, 0, 0x40000001); + BoardModelPosSetV(data->model, &pos_3d); + BoardModelLayerSet(data->model, 2); } static s32 CheckBowserEvent(void) { - BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); - - if(work->state != 2) { - return 0; - } else { - return 1; - } + BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); + + if(work->state != 2) { + return 0; + } else { + return 1; + } } static void StopBowserEvent(void) { - BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); - work->state = 1; + BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); + work->state = 1; } static void ShowBowserEvent(BowserEventWork *work, omObjData *object); @@ -1124,187 +1123,187 @@ static void HideBowserEvent(BowserEventWork *work, omObjData *object); static void ExecBowserEvent(omObjData *object) { - BowserEventWork *work = OM_GET_WORK_PTR(object, BowserEventWork); - BowserEventData *data = &bowserEvent; - if(work->kill || BoardIsKill()) { - HuSprGrpKill(data->group); - BoardModelKill(data->model); - bowserEventObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->timer) { - work->timer--; - return; - } - switch(work->state) { - case 0: - ShowBowserEvent(work, object); - break; - - case 1: - HideBowserEvent(work, object); - break; - - case 2: - break; - } + BowserEventWork *work = OM_GET_WORK_PTR(object, BowserEventWork); + BowserEventData *data = &bowserEvent; + if(work->kill || BoardIsKill()) { + HuSprGrpKill(data->group); + BoardModelKill(data->model); + bowserEventObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->timer) { + work->timer--; + return; + } + switch(work->state) { + case 0: + ShowBowserEvent(work, object); + break; + + case 1: + HideBowserEvent(work, object); + break; + + case 2: + break; + } } static void ShowBowserEvent(BowserEventWork *work, omObjData *object) { - BowserEventData *data; - s32 i; - s32 count; - float angle; - float tplvl; - float scale; - data = &bowserEvent; - for(count=i=0; i<3; i++) { - if(data->delay[i]) { - data->delay[i]--; - } else { - if(data->angle[i] > 90) { - count++; - continue; - } - OSs16tof32(&data->angle[i], &angle); - tplvl = sin(M_PI*angle/180.0); - scale = sin(M_PI*angle/180.0); - HuSprTPLvlSet(data->group, i, tplvl); - HuSprScaleSet(data->group, i, scale, scale); - BoardModelAlphaSet(data->model, 255.0f*tplvl); - data->angle[i] += 9; - if(data->angle[i] > 90 && i != 0) { - HuSprAttrSet(data->group, i, HUSPR_ATTR_DISPOFF); - } - } - } - if(count == 3) { - work->state = 2; - work->timer = 60; - } + BowserEventData *data; + s32 i; + s32 count; + float angle; + float tplvl; + float scale; + data = &bowserEvent; + for(count=i=0; i<3; i++) { + if(data->delay[i]) { + data->delay[i]--; + } else { + if(data->angle[i] > 90) { + count++; + continue; + } + OSs16tof32(&data->angle[i], &angle); + tplvl = sind(angle); + scale = sind(angle); + HuSprTPLvlSet(data->group, i, tplvl); + HuSprScaleSet(data->group, i, scale, scale); + BoardModelAlphaSet(data->model, 255.0f*tplvl); + data->angle[i] += 9; + if(data->angle[i] > 90 && i != 0) { + HuSprAttrSet(data->group, i, HUSPR_ATTR_DISPOFF); + } + } + } + if(count == 3) { + work->state = 2; + work->timer = 60; + } } static void HideBowserEvent(BowserEventWork *work, omObjData *object) { - BowserEventData *data = &bowserEvent; - float angle; - float tplvl; - OSs16tof32(&data->angle[0], &angle); - tplvl = sin(M_PI*angle/180.0); - HuSprTPLvlSet(data->group, 0, tplvl); - BoardModelAlphaSet(data->model, 255.0f*tplvl); - data->angle[0] -= 10; - if(data->angle[0] < 0) { - work->kill = 1; - HuSprAttrSet(data->group, 0, HUSPR_ATTR_DISPOFF); - } + BowserEventData *data = &bowserEvent; + float angle; + float tplvl; + OSs16tof32(&data->angle[0], &angle); + tplvl = sind(angle); + HuSprTPLvlSet(data->group, 0, tplvl); + BoardModelAlphaSet(data->model, 255.0f*tplvl); + data->angle[0] -= 10; + if(data->angle[0] < 0) { + work->kill = 1; + HuSprAttrSet(data->group, 0, HUSPR_ATTR_DISPOFF); + } } static void ConfigBowserEvent(void) { - s32 i; - s32 chance; - s32 coins; - s32 item_full; - item_full = 0; - if(BoardPlayerItemCount(eventPlayer) == 3) { - item_full = 1; - } - for(coins=i=0; i<4; i++) { - coins += BoardPlayerCoinsGet(i); - } - retry: - while(1) { - chance = BoardRandMod(100); - if(chance >= 95) { - if(item_full) { - continue; - } - if(GWSystem.max_turn-GWSystem.turn == 0) { - continue; - } - GWSystem.bowser_event = 3; - break; - } else if(chance >= 85) { - GWSystem.bowser_event = 2; - break; - } else if(chance >= 70) { - GWSystem.bowser_event = 1; - break; - } else { - if(coins == 0) { - continue; - } - GWSystem.bowser_event = 0; - GWSystem.bowser_loss = BoardRandMod(3); - break; - } - } + s32 i; + s32 chance; + s32 coins; + s32 item_full; + item_full = 0; + if(BoardPlayerItemCount(eventPlayer) == 3) { + item_full = 1; + } + for(coins=i=0; i<4; i++) { + coins += BoardPlayerCoinsGet(i); + } + retry: + while(1) { + chance = BoardRandMod(100); + if(chance >= 95) { + if(item_full) { + continue; + } + if(GWSystem.max_turn-GWSystem.turn == 0) { + continue; + } + GWSystem.bowser_event = 3; + break; + } else if(chance >= 85) { + GWSystem.bowser_event = 2; + break; + } else if(chance >= 70) { + GWSystem.bowser_event = 1; + break; + } else { + if(coins == 0) { + continue; + } + GWSystem.bowser_event = 0; + GWSystem.bowser_loss = BoardRandMod(3); + break; + } + } } static void CreatePlayerMot(void) { - s32 scareMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 27), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 27), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 27), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 27), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 27), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 27), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 27), - }; - s32 jumpMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 26), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 26), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 26), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 26), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 26), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 26), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 26), - }; - s32 playerMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 31), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 31), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 31), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 31), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 31), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 31), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 31), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 31), - }; - s32 i; - s32 character; - character = GWPlayer[eventPlayer].character; - scareMot = BoardPlayerMotionCreate(eventPlayer, scareMotTbl[character]); - jumpMot = BoardPlayerMotionCreate(eventPlayer, jumpMotTbl[character]); - for(i=0; i<4; i++) { - character = GWPlayer[i].character; - playerMot[i] = BoardPlayerMotionCreate(i, playerMotTbl[character]); - } + s32 scareMotTbl[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 27), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 27), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 27), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 27), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 27), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 27), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 27), + }; + s32 jumpMotTbl[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 26), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 26), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 26), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 26), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 26), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 26), + }; + s32 playerMotTbl[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 31), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 31), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 31), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 31), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 31), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 31), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 31), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 31), + }; + s32 i; + s32 character; + character = GWPlayer[eventPlayer].character; + scareMot = BoardPlayerMotionCreate(eventPlayer, scareMotTbl[character]); + jumpMot = BoardPlayerMotionCreate(eventPlayer, jumpMotTbl[character]); + for(i=0; i<4; i++) { + character = GWPlayer[i].character; + playerMot[i] = BoardPlayerMotionCreate(i, playerMotTbl[character]); + } } static void KillPlayerMot(void) { - s32 i; - if(scareMot > 0) { - BoardPlayerMotionKill(eventPlayer, scareMot); - scareMot = -1; - } - if(jumpMot > 0) { - BoardPlayerMotionKill(eventPlayer, jumpMot); - jumpMot = -1; - } - for(i=0; i<4; i++) { - if(playerMot[i] > 0) { - BoardPlayerMotionKill(i, playerMot[i]); - playerMot[i] = -1; - } - } + s32 i; + if(scareMot > 0) { + BoardPlayerMotionKill(eventPlayer, scareMot); + scareMot = -1; + } + if(jumpMot > 0) { + BoardPlayerMotionKill(eventPlayer, jumpMot); + jumpMot = -1; + } + for(i=0; i<4; i++) { + if(playerMot[i] > 0) { + BoardPlayerMotionKill(i, playerMot[i]); + playerMot[i] = -1; + } + } } static void BowserFireHook(ModelData *model, ParticleData *particle, Mtx matrix); @@ -1314,103 +1313,103 @@ static s32 CheckBowserFire(HsfanimStruct01 *arg0); static void InitBowserFire(void) { - fireAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_BOARD, 106)); - fireParMan = Hu3DParticleCreate(fireAnim, 30); - Hu3DParticleColSet(fireParMan, 255, 255, 255); - Hu3DParticleScaleSet(fireParMan, 10.0f); - Hu3DParticleHookSet(fireParMan, BowserFireHook); - Hu3DParticleBlendModeSet(fireParMan, 1); - Hu3DModelLayerSet(fireParMan, 2); + fireAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_BOARD, 106)); + fireParMan = Hu3DParticleCreate(fireAnim, 30); + Hu3DParticleColSet(fireParMan, 255, 255, 255); + Hu3DParticleScaleSet(fireParMan, 10.0f); + Hu3DParticleHookSet(fireParMan, BowserFireHook); + Hu3DParticleBlendModeSet(fireParMan, 1); + Hu3DModelLayerSet(fireParMan, 2); } static void BowserFireHook(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01* var_r30; - s32 i; - s32 var_r28; - Vec pos; - Hu3DModelObjPosGet(BoardModelIDGet(bowserMdl), "itemhook_M_1", &pos); - if (particle->unk_34 == 0) { - var_r30 = particle->unk_48; + HsfanimStruct01* var_r30; + s32 i; + s32 var_r28; + Vec pos; + Hu3DModelObjPosGet(BoardModelIDGet(bowserMdl), "itemhook_M_1", &pos); + if (particle->unk_34 == 0) { + var_r30 = particle->unk_48; for (i = 0; i < particle->unk_30; i++, var_r30++) { - var_r30->unk2C = 0.0f; - } - particle->unk_34 = 1; - particle->unk_00 = 0; - } - if((particle->unk_34 & 0x3) == 0) { - var_r30 = particle->unk_48; - for(var_r28=0; var_r28unk_30; var_r28++, var_r30++) { - if(var_r30->unk2C == 0.0f) { - break; - } - } - if(var_r28 != particle->unk_30) { - var_r30->unk34 = pos; - particle->unk_00++; - SpawnBowserFire(var_r30); - } - } - var_r30 = particle->unk_48; - for (i = 0; i < particle->unk_30; i++, var_r30++) { - if(var_r30->unk2C != 0.0f && CheckBowserFire(var_r30)) { - particle->unk_00--; - } - } + var_r30->unk2C = 0.0f; + } + particle->unk_34 = 1; + particle->unk_00 = 0; + } + if((particle->unk_34 & 0x3) == 0) { + var_r30 = particle->unk_48; + for(var_r28=0; var_r28unk_30; var_r28++, var_r30++) { + if(var_r30->unk2C == 0.0f) { + break; + } + } + if(var_r28 != particle->unk_30) { + var_r30->unk34 = pos; + particle->unk_00++; + SpawnBowserFire(var_r30); + } + } + var_r30 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r30++) { + if(var_r30->unk2C != 0.0f && CheckBowserFire(var_r30)) { + particle->unk_00--; + } + } } static void SpawnBowserFire(HsfanimStruct01 *arg0) { - Vec dir; - BoardCameraDirGet(&dir); - arg0->unk08.x = 0.0f; - arg0->unk08.y = 0.0f; - arg0->unk08.z = 0.0f; - arg0->unk14.x = -dir.x*((0.5f*BoardRandFloat())+0.5f); - arg0->unk14.y = -dir.y*((0.5f*BoardRandFloat())+0.5f); - arg0->unk14.z = -dir.z*((0.5f*BoardRandFloat())+0.5f); - arg0->unk24 = 1.025f; - arg0->unk40.a = 254; - arg0->unk40.r = 255; - arg0->unk40.g = 255; - arg0->unk40.b = 255; - arg0->unk2C = 100.0f; + Vec dir; + BoardCameraDirGet(&dir); + arg0->unk08.x = 0.0f; + arg0->unk08.y = 0.0f; + arg0->unk08.z = 0.0f; + arg0->unk14.x = -dir.x*((0.5f*BoardRandFloat())+0.5f); + arg0->unk14.y = -dir.y*((0.5f*BoardRandFloat())+0.5f); + arg0->unk14.z = -dir.z*((0.5f*BoardRandFloat())+0.5f); + arg0->unk24 = 1.025f; + arg0->unk40.a = 254; + arg0->unk40.r = 255; + arg0->unk40.g = 255; + arg0->unk40.b = 255; + arg0->unk2C = 100.0f; } static s32 CheckBowserFire(HsfanimStruct01 *arg0) { - arg0->unk34.x += arg0->unk08.x; - arg0->unk34.y += arg0->unk08.y; - arg0->unk34.z += arg0->unk08.z; - arg0->unk08.x += arg0->unk14.x; - arg0->unk08.y += arg0->unk14.y; - arg0->unk08.z += arg0->unk14.z; - arg0->unk40.a -= 8; - arg0->unk2C *= arg0->unk24; - if(arg0->unk40.a == 0.0f) { - arg0->unk40.a = 0; - arg0->unk2C = 0.0f; - return 1; - } - return 0; + arg0->unk34.x += arg0->unk08.x; + arg0->unk34.y += arg0->unk08.y; + arg0->unk34.z += arg0->unk08.z; + arg0->unk08.x += arg0->unk14.x; + arg0->unk08.y += arg0->unk14.y; + arg0->unk08.z += arg0->unk14.z; + arg0->unk40.a -= 8; + arg0->unk2C *= arg0->unk24; + if(arg0->unk40.a == 0.0f) { + arg0->unk40.a = 0; + arg0->unk2C = 0.0f; + return 1; + } + return 0; } static void KillBowserFire(void) { - if(fireParMan != -1) { - Hu3DModelKill(fireParMan); - fireParMan = -1; - fireAnim = NULL; - } + if(fireParMan != -1) { + Hu3DModelKill(fireParMan); + fireParMan = -1; + fireAnim = NULL; + } } typedef struct mini_bowser_balloon_work { - u8 kill : 1; - u8 state; - u16 timer; - s16 angle; - float offset; - s16 *models; + u8 kill : 1; + u8 state; + u16 timer; + s16 angle; + float offset; + s16 *models; } MiniBowserBalloonWork; static void MiniBowserTake(void); @@ -1433,384 +1432,384 @@ static void WaitMiniBowserMotion(void); static s32 ExecMiniBowserEvent(void) { - s32 doneF = 0; - CreateMiniBowserBalloon(); - SetMiniBowserBalloonState(0); - while(GetMiniBowserBalloonState() != 2) { - HuPrcVSleep(); - } - BoardFilterFadeOut(30); - BoardAudSeqFadeOut(1, 1000); - HuPrcSleep(30); - BoardAudSeqFadeOutFast(1); - BoardMusStart(1, 11, 127, 0); - HuAudFXPlay(62); - BoardWinCreate(2, MAKE_MESSID(3, 0), 6); - BoardWinWait(); - if(BoardRandMod(100) < 70) { - MiniBowserTake(); - } else { - MiniBowserTakeAll(); - } - //5% chance bowser will appear after baby bowser - if(BoardRandMod(100) < 5) { - doneF = 1; - } - if(doneF) { - HuPrcSleep(60); - BoardWinCreate(2, MAKE_MESSID(3, 6), 6); - BoardWinWait(); - BoardWinKill(); - HuAudFXPlay(62); - SetMiniBowserMotion(6, 10, 1); - HuPrcSleep(60); - } else { - HuAudFXPlay(62); - BoardWinCreate(2, MAKE_MESSID(3, 2), 6); - BoardWinWait(); - BoardWinKill(); - BoardAudSeqFadeOut(1, 1000); - SetMiniBowserMotion(4, 10, 1); - HuPrcSleep(30); - } - SetMiniBowserBalloonState(1); - while(GetMiniBowserBalloonState() != 2) { - HuPrcVSleep(); - } - MiniBowserBalloonStop(); - return doneF; + s32 doneF = 0; + CreateMiniBowserBalloon(); + SetMiniBowserBalloonState(0); + while(GetMiniBowserBalloonState() != 2) { + HuPrcVSleep(); + } + BoardFilterFadeOut(30); + BoardAudSeqFadeOut(1, 1000); + HuPrcSleep(30); + BoardAudSeqFadeOutFast(1); + BoardMusStart(1, 11, 127, 0); + HuAudFXPlay(62); + BoardWinCreate(2, MAKE_MESSID(3, 0), 6); + BoardWinWait(); + if(BoardRandMod(100) < 70) { + MiniBowserTake(); + } else { + MiniBowserTakeAll(); + } + //5% chance bowser will appear after baby bowser + if(BoardRandMod(100) < 5) { + doneF = 1; + } + if(doneF) { + HuPrcSleep(60); + BoardWinCreate(2, MAKE_MESSID(3, 6), 6); + BoardWinWait(); + BoardWinKill(); + HuAudFXPlay(62); + SetMiniBowserMotion(6, 10, 1); + HuPrcSleep(60); + } else { + HuAudFXPlay(62); + BoardWinCreate(2, MAKE_MESSID(3, 2), 6); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + SetMiniBowserMotion(4, 10, 1); + HuPrcSleep(30); + } + SetMiniBowserBalloonState(1); + while(GetMiniBowserBalloonState() != 2) { + HuPrcVSleep(); + } + MiniBowserBalloonStop(); + return doneF; } static void MiniBowserTake(void) { - u8 coinSteal[][3] = { - 20, 20, 30, - 20, 20, 30, - 10, 15, 20, - 10, 15, 20 - }; - s32 coin_inc; - s32 game_part; - u8 steal; - s32 i; - u32 mess; - s32 delay; - s32 turn; - s32 turn_max; - turn = GWSystem.turn-1; - turn_max = GWSystem.max_turn; - game_part = turn/(turn_max/3); - if(game_part >= 3) { - game_part = 2; - } - steal = (u8)coinSteal[GWPlayer[eventPlayer].rank][game_part]; - sprintf(coinStealStrAll, "%d", steal); - SetMiniBowserMotion(2, 10, 0); - if(steal >= 20) { - delay = 3; - } else { - delay = 6; - } - if(BoardPlayerCoinsGet(eventPlayer) != 0) { - mess = 0x30001; - coin_inc = -1; - } else { - mess = 0x30003; - steal = 10; - coin_inc = 1; - } - HuAudFXPlay(62); - BoardWinCreate(2, mess, 6); - BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStrAll), 0); - BoardWinWait(); - if(coin_inc > 0) { - SetMiniBowserMotion(5, 10, 0); - } else { - SetMiniBowserMotion(3, 10, 1); - } - if(coin_inc < 0) { - omVibrate(eventPlayer, 12, 6, 6); - } - if(coin_inc < 0) { - BoardPlayerMotionShiftSet(eventPlayer, 13, 0.0f, 4.0f, 0); - } else { - BoardPlayerMotionShiftSet(eventPlayer, 12, 0.0f, 4.0f, 0); - } - for(i=0; i= 3) { + game_part = 2; + } + steal = (u8)coinSteal[GWPlayer[eventPlayer].rank][game_part]; + sprintf(coinStealStrAll, "%d", steal); + SetMiniBowserMotion(2, 10, 0); + if(steal >= 20) { + delay = 3; + } else { + delay = 6; + } + if(BoardPlayerCoinsGet(eventPlayer) != 0) { + mess = MAKE_MESSID(3, 1); + coin_inc = -1; + } else { + mess = MAKE_MESSID(3, 3); + steal = 10; + coin_inc = 1; + } + HuAudFXPlay(62); + BoardWinCreate(2, mess, 6); + BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStrAll), 0); + BoardWinWait(); + if(coin_inc > 0) { + SetMiniBowserMotion(5, 10, 0); + } else { + SetMiniBowserMotion(3, 10, 1); + } + if(coin_inc < 0) { + omVibrate(eventPlayer, 12, 6, 6); + } + if(coin_inc < 0) { + BoardPlayerMotionShiftSet(eventPlayer, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } else { + BoardPlayerMotionShiftSet(eventPlayer, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } + for(i=0; i= 3) { - game_part = 2; - } - steal = (u8)coinSteal[game_part]; - sprintf(coinStealStr, "%d", steal); - SetMiniBowserMotion(2, 10, 0); - for(coin_total=j=0; j<4; j++) { - coin_total += BoardPlayerCoinsGet(j); - } - if(coin_total != 0) { - mess = 0x30004; - coin_inc = -1; - } else { - mess = 0x30005; - steal = 10; - coin_inc = 1; - } - HuAudFXPlay(62); - BoardWinCreate(2, mess, 6); - BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStr), 0); - BoardWinWait(); - if(coin_inc > 0) { - SetMiniBowserMotion(5, 10, 0); - } else { - SetMiniBowserMotion(3, 10, 1); - } - if(coin_inc < 0) { - for(i=0; i<4; i++) { - omVibrate(i, 12, 6, 6); - } - } - for(i=0; i<4; i++) { - if(coin_inc < 0) { - BoardPlayerMotionShiftSet(i, 13, 0.0f, 4.0f, 0); - } else { - BoardPlayerMotionShiftSet(i, 12, 0.0f, 4.0f, 0); - } - } - if(steal >= 20) { - delay = 3; - } else { - delay = 6; - } - for(i=0; i= 3) { + game_part = 2; + } + steal = (u8)coinSteal[game_part]; + sprintf(coinStealStr, "%d", steal); + SetMiniBowserMotion(2, 10, 0); + for(coin_total=j=0; j<4; j++) { + coin_total += BoardPlayerCoinsGet(j); + } + if(coin_total != 0) { + mess = MAKE_MESSID(3, 4); + coin_inc = -1; + } else { + mess = MAKE_MESSID(3, 5); + steal = 10; + coin_inc = 1; + } + HuAudFXPlay(62); + BoardWinCreate(2, mess, 6); + BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStr), 0); + BoardWinWait(); + if(coin_inc > 0) { + SetMiniBowserMotion(5, 10, 0); + } else { + SetMiniBowserMotion(3, 10, 1); + } + if(coin_inc < 0) { + for(i=0; i<4; i++) { + omVibrate(i, 12, 6, 6); + } + } + for(i=0; i<4; i++) { + if(coin_inc < 0) { + BoardPlayerMotionShiftSet(i, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } else { + BoardPlayerMotionShiftSet(i, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } + } + if(steal >= 20) { + delay = 3; + } else { + delay = 6; + } + for(i=0; ikill = 1; - } + if(miniBowserBalloonObj) { + OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->kill = 1; + } } static s32 GetMiniBowserBalloonState(void) { - return OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state; + return OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state; } static void SetMiniBowserBalloonState(s32 state) { - OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state = state; + OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state = state; } static void CreateMiniBowserBalloon(void) { - MiniBowserBalloonWork *work; - s16 *models; - Vec pos; - miniBowserBalloonObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowserBalloon); - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - work->kill = 0; - work->state = 0; - work->timer = 0; - work->offset = 0; - work->angle = 0; - work->models = HuMemDirectMallocNum(HEAP_SYSTEM, 9*sizeof(s16), MEMORY_DEFAULT_NUM); - models = work->models; - models[0] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 14), (s32 *)miniBowserMotTbl, 0); - models[1] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 0), NULL, 0); - BoardPlayerPosGet(eventPlayer, &pos); - miniBowserBalloonObj->trans.x = pos.x; - miniBowserBalloonObj->trans.y = pos.y+800.0f; - miniBowserBalloonObj->trans.z = pos.z; - BoardModelHookSet(models[1], "minik01", models[0]); - BoardModelPosSet(models[1], miniBowserBalloonObj->trans.x, - miniBowserBalloonObj->trans.y, - miniBowserBalloonObj->trans.z); - SetMiniBowserMotion(1, 0, 1); + MiniBowserBalloonWork *work; + s16 *models; + Vec pos; + miniBowserBalloonObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowserBalloon); + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + work->kill = 0; + work->state = 0; + work->timer = 0; + work->offset = 0; + work->angle = 0; + work->models = HuMemDirectMallocNum(HEAP_SYSTEM, 9*sizeof(s16), MEMORY_DEFAULT_NUM); + models = work->models; + models[0] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 14), (s32 *)miniBowserMotTbl, 0); + models[1] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 0), NULL, 0); + BoardPlayerPosGet(eventPlayer, &pos); + miniBowserBalloonObj->trans.x = pos.x; + miniBowserBalloonObj->trans.y = pos.y+800.0f; + miniBowserBalloonObj->trans.z = pos.z; + BoardModelHookSet(models[1], "minik01", models[0]); + BoardModelPosSet(models[1], miniBowserBalloonObj->trans.x, + miniBowserBalloonObj->trans.y, + miniBowserBalloonObj->trans.z); + SetMiniBowserMotion(1, 0, 1); } static void ExecMiniBowserBalloon(omObjData *object) { - MiniBowserBalloonWork *work; - s16 *models; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - if(work->kill || BoardIsKill()) { - BoardModelKill(models[0]); - BoardModelKill(models[1]); - HuMemDirectFree(work->models); - miniBowserBalloonObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->timer) { - work->timer--; - } else { - switch(work->state) { - case 0: - MiniBowserBalloonFall(work, object); - break; - - case 1: - MiniBowserBalloonRaise(work, object); - break; - - case 2: - MiniBowserBalloonHover(work, object); - break; - } - } - BoardModelPosSet(models[1], object->trans.x, object->trans.y+work->offset, object->trans.z); + MiniBowserBalloonWork *work; + s16 *models; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + if(work->kill || BoardIsKill()) { + BoardModelKill(models[0]); + BoardModelKill(models[1]); + HuMemDirectFree(work->models); + miniBowserBalloonObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->timer) { + work->timer--; + } else { + switch(work->state) { + case 0: + MiniBowserBalloonFall(work, object); + break; + + case 1: + MiniBowserBalloonRaise(work, object); + break; + + case 2: + MiniBowserBalloonHover(work, object); + break; + } + } + BoardModelPosSet(models[1], object->trans.x, object->trans.y+work->offset, object->trans.z); } static void MiniBowserBalloonHover(MiniBowserBalloonWork *work, omObjData *object) { - float angle; - work->angle++; - if(work->angle >= 360) { - work->angle = 0; - } - OSs16tof32(&work->angle, &angle); - work->offset = 10.0*sin(M_PI*angle/180.0); + float angle; + work->angle++; + if(work->angle >= 360) { + work->angle = 0; + } + OSs16tof32(&work->angle, &angle); + work->offset = 10.0*sind(angle); } static void MiniBowserBalloonFall(MiniBowserBalloonWork *work, omObjData *object) { - Vec pos; - BoardPlayerPosGet(eventPlayer, &pos); - pos.y += 250.0f; - if(object->trans.y < pos.y) { - object->trans.y = pos.y; - work->state = 2; - } else { - object->trans.y += -10.0f; - } + Vec pos; + BoardPlayerPosGet(eventPlayer, &pos); + pos.y += 250.0f; + if(object->trans.y < pos.y) { + object->trans.y = pos.y; + work->state = 2; + } else { + object->trans.y += -10.0f; + } } static void MiniBowserBalloonRaise(MiniBowserBalloonWork *work, omObjData *object) { - Vec pos; - BoardPlayerPosGet(eventPlayer, &pos); - pos.y += 800.0f; - if(object->trans.y > pos.y) { - work->state = 2; - } else { - object->trans.y += 10.0f; - } + Vec pos; + BoardPlayerPosGet(eventPlayer, &pos); + pos.y += 800.0f; + if(object->trans.y > pos.y) { + work->state = 2; + } else { + object->trans.y += 10.0f; + } } static void SetMiniBowserMotion(s32 mot, u8 end, s32 pause) { - s16 *models; - u32 attr; - float shift_end; - MiniBowserBalloonWork *work; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - if(pause) { - attr = 0x40000001; - } else { - attr = 0; - } - if(end) { - OSu8tof32(&end, &shift_end); - BoardModelMotionShiftSet(models[0], mot, 0, shift_end, attr); - } else { - BoardModelMotionStart(models[0], mot, attr); - } + s16 *models; + u32 attr; + float shift_end; + MiniBowserBalloonWork *work; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + if(pause) { + attr = HU3D_MOTATTR_LOOP; + } else { + attr = HU3D_MOTATTR_NONE; + } + if(end) { + OSu8tof32(&end, &shift_end); + BoardModelMotionShiftSet(models[0], mot, 0, shift_end, attr); + } else { + BoardModelMotionStart(models[0], mot, attr); + } } static void SetMiniBowserMotionPause(s32 flag) { - s16 *models; - MiniBowserBalloonWork *work; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - if(flag) { - BoardModelAttrSet(models[0], 0x40000001); - } else { - BoardModelAttrReset(models[0], 0x40000001); - } + s16 *models; + MiniBowserBalloonWork *work; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + if(flag) { + BoardModelAttrSet(models[0], 0x40000001); + } else { + BoardModelAttrReset(models[0], 0x40000001); + } } static void WaitMiniBowserMotion(void) { - s16 *models; - MiniBowserBalloonWork *work; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - BoardModelAttrReset(models[0], 0x40000001); - while(!BoardModelMotionEndCheck(models[0])) { - HuPrcVSleep(); - } -} \ No newline at end of file + s16 *models; + MiniBowserBalloonWork *work; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + BoardModelAttrReset(models[0], 0x40000001); + while(!BoardModelMotionEndCheck(models[0])) { + HuPrcVSleep(); + } +} diff --git a/src/game/board/char_wheel.c b/src/game/board/char_wheel.c index e155fa5f..bb33564a 100755 --- a/src/game/board/char_wheel.c +++ b/src/game/board/char_wheel.c @@ -53,16 +53,16 @@ static s16 wheelSprGrp = -1; static s32 wheelFXStat = -1; static s32 wheelSprTbl[] = { - 0x00070036, - 0x00070038, - 0x00070038, - 0x00070038, - 0x00070037, - 0x00070037, - 0x00070037, - 0x00070037, - 0x0007003A, - 0x00070039 + DATA_MAKE_NUM(DATADIR_BOARD, 0x36), + DATA_MAKE_NUM(DATADIR_BOARD, 0x38), + DATA_MAKE_NUM(DATADIR_BOARD, 0x38), + DATA_MAKE_NUM(DATADIR_BOARD, 0x38), + DATA_MAKE_NUM(DATADIR_BOARD, 0x37), + DATA_MAKE_NUM(DATADIR_BOARD, 0x37), + DATA_MAKE_NUM(DATADIR_BOARD, 0x37), + DATA_MAKE_NUM(DATADIR_BOARD, 0x37), + DATA_MAKE_NUM(DATADIR_BOARD, 0x3A), + DATA_MAKE_NUM(DATADIR_BOARD, 0x39) }; static s8 wheelSprPrio[] = { @@ -74,14 +74,14 @@ static s8 wheelSprPrio[] = { }; static s32 wheelCharIconTbl[] = { - 0x0007003B, - 0x0007003C, - 0x0007003D, - 0x0007003E, - 0x0007003F, - 0x00070040, - 0x00070041, - 0x00070042 + DATA_MAKE_NUM(DATADIR_BOARD, 0x3B), + DATA_MAKE_NUM(DATADIR_BOARD, 0x3C), + DATA_MAKE_NUM(DATADIR_BOARD, 0x3D), + DATA_MAKE_NUM(DATADIR_BOARD, 0x3E), + DATA_MAKE_NUM(DATADIR_BOARD, 0x3F), + DATA_MAKE_NUM(DATADIR_BOARD, 0x40), + DATA_MAKE_NUM(DATADIR_BOARD, 0x41), + DATA_MAKE_NUM(DATADIR_BOARD, 0x42) }; s32 BoardCharWheelInit(s32 arg0, s32 arg1) { @@ -132,6 +132,12 @@ static void ExecCharWheel(omObjData *arg0) { temp_r31 = OM_GET_WORK_PTR(arg0, CharWheelWork);; if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { KillCharWheelSpr(); + #if VERSION_PAL + if (wheelFXStat != -1) { + HuAudFXStop(wheelFXStat); + wheelFXStat = -1; + } + #endif charWheelObj = NULL; omDelObjEx(HuPrcCurrentGet(), arg0); return; @@ -322,7 +328,13 @@ static void UpdateCharWheel(CharWheelWork *arg0) { } var_f23 = 8191.0f - 8191.0f * (var_f25 / wheelSpeed); OSf32tos16(&var_f23, &var_r17); + #if VERSION_PAL + if(wheelFXStat != -1) { + HuAudFXPitchSet(wheelFXStat, -var_r17); + } + #else HuAudFXPitchSet(wheelFXStat, -var_r17); + #endif if (var_f25 > -0.0000001f && var_f25 < 0.0000001f) { arg0->unk00_field3 = 3; if (wheelFXStat != -1) { @@ -356,14 +368,14 @@ static void StopCharWheel(CharWheelWork *arg0) { } var_r30 = arg0->unk03 % 6; if (var_r30 < 3) { - HuSprAttrSet(wheelSprGrp, wheelPos + 10, 4); + HuSprAttrSet(wheelSprGrp, wheelPos + 10, HUSPR_ATTR_DISPOFF); } else { - HuSprAttrReset(wheelSprGrp, wheelPos + 10, 4); + HuSprAttrReset(wheelSprGrp, wheelPos + 10, HUSPR_ATTR_DISPOFF); } if (arg0->unk03 < 90) { arg0->unk03++; } else { - HuSprAttrReset(wheelSprGrp, wheelPos + 10, 4); + HuSprAttrReset(wheelSprGrp, wheelPos + 10, HUSPR_ATTR_DISPOFF); arg0->unk00_field3 = 4; } } @@ -379,7 +391,14 @@ static void GrowCharWheel(CharWheelWork *arg0) { } arg0->unk02 = 90; arg0->unk00_field3 = 2; + #if VERSION_PAL + if(!BoardIsKill()) { + wheelFXStat = HuAudFXPlay(0x30A); + } + #else wheelFXStat = HuAudFXPlay(0x30A); + #endif + } OSs8tof32(&arg0->unk02, &temp_f30); HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30)); diff --git a/src/game/board/com.c b/src/game/board/com.c index 00a66a66..60ef9620 100755 --- a/src/game/board/com.c +++ b/src/game/board/com.c @@ -47,7 +47,7 @@ static s8 itemUse = -1; #define BOARD_ITEM_ITEM_BAG 13 #define BOARD_ITEMS_END BOARD_ITEM_ITEM_BAG -static s8 comItemPreferTbl[GW_CHARACTER_MAX][SHOP_ITEMS_END] = { +static s8 comItemPreferTbl[CHARNO_MAX ][SHOP_ITEMS_END] = { { //Mario BOARD_ITEM_MAGIC_LAMP, BOARD_ITEM_BOOS_CRYSTAL_BALL, @@ -746,7 +746,7 @@ s32 BoardComJunctionInputGet(s32 item, Vec *input, s32 num_dirs, float *dirs) { } else { BoardSpacePosGet(0, space, &pos_junction); BoardSpacePosGet(0, space_next, &pos_next); - PSVECSubtract(&pos_next, &pos_junction, &dir); + VECSubtract(&pos_next, &pos_junction, &dir); angle = BoardDAngleCalc(90.0 - atan2d(dir.z, dir.x)); if (angle < 0.0f) { angle += 360.0f; diff --git a/src/game/board/fortune.c b/src/game/board/fortune.c index a5267bb6..86294638 100644 --- a/src/game/board/fortune.c +++ b/src/game/board/fortune.c @@ -21,12 +21,12 @@ typedef struct platform_work { } PlatformWork; static u32 comPrizeMessTbl[] = { - 0x1C0009, - 0x1C000A, - 0x1C000B, - 0x1C000D, - 0x1C000C, - 0x1C000E + MAKE_MESSID(0x1C, 0x09), + MAKE_MESSID(0x1C, 0x0A), + MAKE_MESSID(0x1C, 0x0B), + MAKE_MESSID(0x1C, 0x0D), + MAKE_MESSID(0x1C, 0x0C), + MAKE_MESSID(0x1C, 0x0E) }; static s8 currPlayer; @@ -280,20 +280,20 @@ static void ExecComFortuneWin(void) mess_player2 = BoardPlayerGetCharMess(comPlayer2); mess_prize = comPrizeMessTbl[comPrize]; if(comPrize == 0 || comPrize == 5 || comPrize == 3) { - mess_main = 0x1C0012; + mess_main = MAKE_MESSID(0x1C, 0x12); } else { if(comPrize == 2) { if(comCoin == 0) { - mess_main = 0x1C0013; + mess_main = MAKE_MESSID(0x1C, 0x13); } else { - mess_main = 0x1C0011; + mess_main = MAKE_MESSID(0x1C, 0x11); } } else { if(comPrize == 1 || comPrize == 4) { if(comStar == 0) { - mess_main = 0x1C0014; + mess_main = MAKE_MESSID(0x1C, 0x14); } else { - mess_main = 0x1C0011; + mess_main = MAKE_MESSID(0x1C, 0x11); } } } @@ -405,4 +405,4 @@ static void ComFortuneSwapStar(s32 player1, s32 player2) temp = GWStarsGet(player1); GWStarsSet(player1, GWStarsGet(player2)); GWStarsSet(player2, temp); -} \ No newline at end of file +} diff --git a/src/game/board/item.c b/src/game/board/item.c index 76563ee2..d2341c9c 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -1,17 +1,5 @@ #include "game/board/item.h" #include "game/audio.h" -#include "game/chrman.h" -#include "game/data.h" -#include "game/gamework.h" -#include "game/gamework_data.h" -#include "game/hsfanim.h" -#include "game/hsfman.h" -#include "game/objsub.h" -#include "game/pad.h" -#include "game/process.h" -#include "game/sprite.h" -#include "game/window.h" -#include "game/wipe.h" #include "game/board/audio.h" #include "game/board/boo.h" #include "game/board/char_wheel.h" @@ -22,9 +10,21 @@ #include "game/board/space.h" #include "game/board/star.h" #include "game/board/ui.h" -#include "game/board/window.h" #include "game/board/view.h" +#include "game/board/window.h" +#include "game/chrman.h" +#include "game/data.h" #include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" #include "ext_math.h" @@ -112,118 +112,46 @@ static AnimData *genieParticleAnim; static s16 geniePlayerMot[3]; static Process *itemProc; -s32 lbl_801D37A0[2] = { - DATA_MAKE_NUM(DATADIR_BOARD, 117), - -1 -}; +static s32 itemMotTbl[2] = { DATA_MAKE_NUM(DATADIR_BOARD, 117), -1 }; -static void (*itemFuncTbl[])(void) = { - ExecItemMini, - ExecItemMega, - ExecItemMiniSuper, - ExecItemMegaSuper, - ExecItemHammer, - ExecItemPipe, - ExecItemSwap, - ExecItemSpark, - ExecItemLight, - ExecItemWhistle, - ExecItemBowser, - ExecItemBooBall, - ExecItemGenie, - ExecItemBag -}; +static void (*itemFuncTbl[])(void) = { ExecItemMini, ExecItemMega, ExecItemMiniSuper, ExecItemMegaSuper, ExecItemHammer, ExecItemPipe, ExecItemSwap, + ExecItemSpark, ExecItemLight, ExecItemWhistle, ExecItemBowser, ExecItemBooBall, ExecItemGenie, ExecItemBag }; -static void (*itemRestoreFuncTbl[])(void) = { - RestoreItemMini, - RestoreItemMega, - RestoreItemMiniSuper, - RestoreItemMegaSuper, - RestoreItemNull, - RestoreItemNull, - RestoreItemNull, - RestoreItemNull, - RestoreItemNull, - RestoreItemNull, - RestoreItemBowser, - RestoreItemNull, - RestoreItemNull, - RestoreItemNull -}; +static void (*itemRestoreFuncTbl[])(void) + = { RestoreItemMini, RestoreItemMega, RestoreItemMiniSuper, RestoreItemMegaSuper, RestoreItemNull, RestoreItemNull, RestoreItemNull, + RestoreItemNull, RestoreItemNull, RestoreItemNull, RestoreItemBowser, RestoreItemNull, RestoreItemNull, RestoreItemNull }; -static s32 itemMdlTbl[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 109), - DATA_MAKE_NUM(DATADIR_BOARD, 110), - DATA_MAKE_NUM(DATADIR_BOARD, 111), - DATA_MAKE_NUM(DATADIR_BOARD, 112), - DATA_MAKE_NUM(DATADIR_BOARD, 113), - DATA_MAKE_NUM(DATADIR_BOARD, 114), - DATA_MAKE_NUM(DATADIR_BOARD, 115), - DATA_MAKE_NUM(DATADIR_BOARD, 116), - DATA_MAKE_NUM(DATADIR_BOARD, 118), - DATA_MAKE_NUM(DATADIR_BOARD, 119), - DATA_MAKE_NUM(DATADIR_BOARD, 120), - DATA_MAKE_NUM(DATADIR_BOARD, 121), - DATA_MAKE_NUM(DATADIR_BOARD, 122), - DATA_MAKE_NUM(DATADIR_BOARD, 123) -}; +static s32 itemMdlTbl[] = { DATA_MAKE_NUM(DATADIR_BOARD, 109), DATA_MAKE_NUM(DATADIR_BOARD, 110), DATA_MAKE_NUM(DATADIR_BOARD, 111), + DATA_MAKE_NUM(DATADIR_BOARD, 112), DATA_MAKE_NUM(DATADIR_BOARD, 113), DATA_MAKE_NUM(DATADIR_BOARD, 114), DATA_MAKE_NUM(DATADIR_BOARD, 115), + DATA_MAKE_NUM(DATADIR_BOARD, 116), DATA_MAKE_NUM(DATADIR_BOARD, 118), DATA_MAKE_NUM(DATADIR_BOARD, 119), DATA_MAKE_NUM(DATADIR_BOARD, 120), + DATA_MAKE_NUM(DATADIR_BOARD, 121), DATA_MAKE_NUM(DATADIR_BOARD, 122), DATA_MAKE_NUM(DATADIR_BOARD, 123) }; -static s32 forceMoveSfxTbl[] = { - 0x38, 0x45, 0x42, 0x4D, 0x48, 0x3F -}; +static s32 forceMoveSfxTbl[] = { 0x38, 0x45, 0x42, 0x4D, 0x48, 0x3F }; -static s32 callMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 82), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 82), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 82), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 82), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 82), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 82), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 82), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 82) -}; +static s32 callMotTbl[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 82), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 82), DATA_MAKE_NUM(DATADIR_PEACHMOT, 82), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 82), DATA_MAKE_NUM(DATADIR_WARIOMOT, 82), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 82), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 82), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 82) }; -static char *callHookTbl[] = { - "c000m01-itemhook-r", - "c001m01-itemhook-r", - "c002m01-itemhook-r", - "c003m01-itemhook-r", - "c004m01-itemhook-r", - "c005m01-itemhook-r", - "c006m01-itemhook-r", - "c007m01-itemhook-r" -}; +static char *callHookTbl[] = { "c000m01-itemhook-r", "c001m01-itemhook-r", "c002m01-itemhook-r", "c003m01-itemhook-r", "c004m01-itemhook-r", + "c005m01-itemhook-r", "c006m01-itemhook-r", "c007m01-itemhook-r" }; -static s32 callAttackMotTbl[] = { - DATA_MAKE_NUM(DATADIR_W01, 31), - DATA_MAKE_NUM(DATADIR_W02, 5), - DATA_MAKE_NUM(DATADIR_W03, 29), - DATA_MAKE_NUM(DATADIR_W04, 9), - DATA_MAKE_NUM(DATADIR_W05, 7), - DATA_MAKE_NUM(DATADIR_W06, 19) -}; +static s32 callAttackMotTbl[] = { DATA_MAKE_NUM(DATADIR_W01, 31), DATA_MAKE_NUM(DATADIR_W02, 5), DATA_MAKE_NUM(DATADIR_W03, 29), + DATA_MAKE_NUM(DATADIR_W04, 9), DATA_MAKE_NUM(DATADIR_W05, 7), DATA_MAKE_NUM(DATADIR_W06, 19) }; -static s32 callAttackMotTbl2[] = { - DATA_MAKE_NUM(DATADIR_W01, 32), - DATA_MAKE_NUM(DATADIR_W02, 6), - DATA_MAKE_NUM(DATADIR_W03, 30), - DATA_MAKE_NUM(DATADIR_W04, 10), - DATA_MAKE_NUM(DATADIR_W05, 8), - DATA_MAKE_NUM(DATADIR_W06, 20) -}; +static s32 callAttackMotTbl2[] = { DATA_MAKE_NUM(DATADIR_W01, 32), DATA_MAKE_NUM(DATADIR_W02, 6), DATA_MAKE_NUM(DATADIR_W03, 30), + DATA_MAKE_NUM(DATADIR_W04, 10), DATA_MAKE_NUM(DATADIR_W05, 8), DATA_MAKE_NUM(DATADIR_W06, 20) }; -static s32 suitMotTbl[][2] = { - { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 1), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 2) }, +static s32 suitMotTbl[][2] = { { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 1), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 2) }, { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 4), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 5) }, { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 7), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 8) }, { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 10), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 11) }, { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 13), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 14) }, { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 16), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 17) }, { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 19), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 20) }, - { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 22), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 23) } -}; + { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 22), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 23) } }; -void BoardItemStart(s32 arg0, s32 arg1) { +void BoardItemStart(s32 arg0, s32 arg1) +{ currItemRestore = arg0; currItem = arg1; suitMdl = -1; @@ -231,22 +159,26 @@ void BoardItemStart(s32 arg0, s32 arg1) { HuPrcDestructorSet2(itemProc, ItemDestroy); } -BOOL BoardItemDoneCheck(void) { +BOOL BoardItemDoneCheck(void) +{ if (itemProc) { return FALSE; - } else { + } + else { return TRUE; } } -void BoardItemPlayerRestore(s32 arg0, s32 arg1) { +void BoardItemPlayerRestore(s32 arg0, s32 arg1) +{ currItemRestore = arg0; currItem = arg1; itemProc = HuPrcChildCreate(RestoreProcess, 0x2004, 0x1000, 0, boardMainProc); HuPrcDestructorSet2(itemProc, RestoreDestroy); } -static void ItemProcess(void) { +static void ItemProcess(void) +{ void (*temp_r31)(void) = itemFuncTbl[currItem]; HuPrcChildCreate(temp_r31, 0x2003, 0x1000, 0, HuPrcCurrentGet()); @@ -254,7 +186,8 @@ static void ItemProcess(void) { HuPrcEnd(); } -static void RestoreProcess(void) { +static void RestoreProcess(void) +{ void (*temp_r31)(void) = itemRestoreFuncTbl[currItem]; HuPrcChildCreate(temp_r31, 0x2003, 0x1000, 0, HuPrcCurrentGet()); @@ -262,15 +195,18 @@ static void RestoreProcess(void) { HuPrcEnd(); } -static void ItemDestroy(void) { +static void ItemDestroy(void) +{ itemProc = NULL; } -static void RestoreDestroy(void) { +static void RestoreDestroy(void) +{ itemProc = NULL; } -static void ItemSizeShowAnim(void) { +static void ItemSizeShowAnim(void) +{ Vec sp24; Vec sp18; Vec spC; @@ -307,7 +243,8 @@ static void ItemSizeShowAnim(void) { BoardModelKill(suitMdl); } -static void ItemRotProc(void) { +static void ItemRotProc(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -326,7 +263,7 @@ static void ItemRotProc(void) { if (temp_r31->unk0C >= 360.0f) { temp_r31->unk0C -= 360.0f; } - PSVECAdd(&sp8, &temp_r31->unk10, &sp8); + VECAdd(&sp8, &temp_r31->unk10, &sp8); if (sp8.x < 0.0f) { sp8.x += 360.0f; } @@ -354,7 +291,8 @@ static void ItemRotProc(void) { // TODO: needs the inline keyword to be inlined into ExecItemHammer, but adding it messes up sdata2. // sdata2 order should be: 1000.0f, 0.15f, then 20.0f. // With the inline keyword, it becomes 0.15f, 20.0f, then 1000.0f (workaround in BoardUiInlineFunc02 below). -static inline void BoardUiInlineFunc01(Vec *arg0) { +static inline void BoardUiInlineFunc01(Vec *arg0) +{ Vec sp30; Vec sp3C; Vec sp48; @@ -384,13 +322,13 @@ static inline void BoardUiInlineFunc01(Vec *arg0) { } sp3C.y -= var_f31; BoardModelPosSetV(suitMdl, &sp3C); - PSVECAdd(&sp48, arg0, &sp48); + VECAdd(&sp48, arg0, &sp48); for (i = 0; i < 3; i++) { - if (((float*) &sp48)[i] < 0.0f) { - ((float*) &sp48)[i] += 360.0f; + if (((float *)&sp48)[i] < 0.0f) { + ((float *)&sp48)[i] += 360.0f; } - if (((float*) &sp48)[i] >= 360.0f) { - ((float*) &sp48)[i] -= 360.0f; + if (((float *)&sp48)[i] >= 360.0f) { + ((float *)&sp48)[i] -= 360.0f; } } BoardModelRotSetV(suitMdl, &sp48); @@ -400,13 +338,14 @@ static inline void BoardUiInlineFunc01(Vec *arg0) { BoardModelPosSetV(suitMdl, &sp3C); } -static void BoardUiInlineFunc02(void) { +static void BoardUiInlineFunc02(void) +{ Vec sp18; Vec sp24; float sp8; float var_f30; - (void) 1000.0f; // TODO: fix this. + (void)1000.0f; // TODO: fix this. sp8 = 1.0f; BoardModelPosGet(suitMdl, &sp24); BoardPlayerPosGet(currItemRestore, &sp18); @@ -429,7 +368,8 @@ static void BoardUiInlineFunc02(void) { BoardModelPosSetV(suitMdl, &sp24); } -static inline void BoardUiInlineFunc03(s32 arg0) { +static inline void BoardUiInlineFunc03(s32 arg0) +{ Vec sp8; Vec sp14; s32 space = GWPlayer[arg0].space_curr; @@ -447,13 +387,15 @@ static inline void BoardUiInlineFunc03(s32 arg0) { BoardPlayerIdleSet(arg0); } -static inline void BoardUiInlineFunc04(Process *arg0, s32 arg1) { +static inline void BoardUiInlineFunc04(Process *arg0, s32 arg1) +{ UnkItemShowProcStruct *temp_r19 = arg0->user_data; temp_r19->unk00 = arg1; } -static inline Process *BoardUiInlineFunc05(UnkItemShowProcStruct *arg0) { +static inline Process *BoardUiInlineFunc05(UnkItemShowProcStruct *arg0) +{ Process *temp_r27; temp_r27 = HuPrcCreate(ItemRotProc, 0x2004, 0x1000, 0); @@ -462,7 +404,8 @@ static inline Process *BoardUiInlineFunc05(UnkItemShowProcStruct *arg0) { return temp_r27; } -static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) { +static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) +{ Vec sp20; Vec sp14; Vec sp8; @@ -477,7 +420,8 @@ static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) { } if (arg1 == NULL) { sp8.x = sp8.y = sp8.z = 1.0f; - } else { + } + else { sp8 = *arg1; } if (suitMdl >= 0) { @@ -506,7 +450,8 @@ static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) { return var_r29; } -static s16 ItemGetTarget(void) { +static s16 ItemGetTarget(void) +{ s32 sp20[4]; s32 sp10[4]; float sp8[2]; @@ -542,7 +487,8 @@ static s16 ItemGetTarget(void) { HuWinMesSet(temp_r29, MAKE_MESSID(18, 14)); if (GWPlayer[currItemRestore].com) { var_r26 = 0xF; - } else { + } + else { var_r26 = 0; for (var_r31 = 0; var_r31 < 4; var_r31++) { if (var_r31 != currItemRestore) { @@ -575,7 +521,8 @@ static s16 ItemGetTarget(void) { return temp_r22; } -static void ItemSizeSet(s32 arg0) { +static void ItemSizeSet(s32 arg0) +{ float sp24[9]; float sp14[4]; float sp8[3] = { 1.0f, 0.3f, 2.5f }; @@ -603,7 +550,7 @@ static void ItemSizeSet(s32 arg0) { sp24[8] = sp14[3]; temp_r26 = BoardPlayerModelGet(currItemRestore); temp_r28 = BoardModelIDGet(temp_r26); - Hu3DModelAttrSet(temp_r28, 0x40000002); + Hu3DModelAttrSet(temp_r28, HU3D_MOTATTR_PAUSE); var_r27 = 0; for (i = 0; i < 9; i++) { temp_f30 = (sp24[var_r27++] - var_f31) / 10.0f; @@ -613,11 +560,12 @@ static void ItemSizeSet(s32 arg0) { HuPrcVSleep(); } } - Hu3DModelAttrReset(temp_r28, 0x40000002); + Hu3DModelAttrReset(temp_r28, HU3D_MOTATTR_PAUSE); BoardPlayerSizeSet(currItemRestore, arg0); } -static void ExecItemMini(void) { +static void ExecItemMini(void) +{ suitMdl = BoardModelCreate(itemMdlTbl[currItem], NULL, 0); BoardModelLayerSet(suitMdl, 2); HuAudFXPlay(0x350); @@ -634,7 +582,8 @@ static void ExecItemMini(void) { } } -static void ExecItemMega(void) { +static void ExecItemMega(void) +{ suitMdl = BoardModelCreate(itemMdlTbl[currItem], NULL, 0); BoardModelLayerSet(suitMdl, 2); HuAudFXPlay(0x350); @@ -651,7 +600,8 @@ static void ExecItemMega(void) { } } -static void ExecItemMiniSuper(void) { +static void ExecItemMiniSuper(void) +{ suitMdl = BoardModelCreate(itemMdlTbl[currItem], NULL, 0); BoardModelLayerSet(suitMdl, 2); HuAudFXPlay(0x350); @@ -668,7 +618,8 @@ static void ExecItemMiniSuper(void) { } } -static void ExecItemMegaSuper(void) { +static void ExecItemMegaSuper(void) +{ suitMdl = BoardModelCreate(itemMdlTbl[currItem], NULL, 0); BoardModelLayerSet(suitMdl, 2); HuAudFXPlay(0x350); @@ -685,7 +636,8 @@ static void ExecItemMegaSuper(void) { } } -static void ExecItemHammer(void) { +static void ExecItemHammer(void) +{ Vec sp6C; Vec sp60; float sp10[2]; @@ -703,7 +655,8 @@ static void ExecItemHammer(void) { var_r30 = frandBool(); if (var_r30 != 0) { BoardModelMotionTimeSet(suitMdl, 1.5f); - } else { + } + else { BoardModelMotionTimeSet(suitMdl, 0.0f); } BoardModelAttrSet(suitMdl, 0x40000002); @@ -725,7 +678,8 @@ static void ExecItemHammer(void) { var_r30 ^= 1; if (var_r30 != 0) { BoardModelMotionTimeSet(suitMdl, 1.5f); - } else { + } + else { BoardModelMotionTimeSet(suitMdl, 0.0f); } } @@ -734,7 +688,8 @@ static void ExecItemHammer(void) { if (var_r26 == 0) { break; } - } else { + } + else { if (HuPadBtnDown[GWPlayerCfg[currItemRestore].pad_idx] & 0x100) { break; } @@ -747,7 +702,8 @@ static void ExecItemHammer(void) { omVibrate(temp_r27, 12, 6, 6); if (var_r30 != 0) { BoardPlayerAutoSizeSet(temp_r27, 2); - } else { + } + else { BoardPlayerAutoSizeSet(temp_r27, 1); } HuPrcSleep(30); @@ -759,7 +715,8 @@ static void ExecItemHammer(void) { } } -static void ExecItemPipe(void) { +static void ExecItemPipe(void) +{ Vec spE4[2]; Vec spCC[2]; Vec spB4[2]; @@ -816,7 +773,8 @@ static void ExecItemPipe(void) { HuWinMesWait(temp_r28); HuPrcSleep(180); HuWinKill(temp_r28); - } else { + } + else { BoardUiInlineFunc03(sp2C[1]); HuAudFXPlay(0x318); for (var_r31 = 0; var_r31 < 2; var_r31++) { @@ -896,8 +854,8 @@ static void ExecItemPipe(void) { temp_f28 = 19.0f; var_f29 = 0.0f; for (var_r31 = 0; var_r31 < 2; var_r31++) { - PSVECSubtract(&spE4[var_r31], &spCC[var_r31], &spB4[var_r31]); - PSVECScale(&spB4[var_r31], &spB4[var_r31], 0.03f); + VECSubtract(&spE4[var_r31], &spCC[var_r31], &spB4[var_r31]); + VECScale(&spB4[var_r31], &spB4[var_r31], 0.03f); BoardModelVisibilitySet(BoardPlayerModelGet(sp2C[var_r31]), 1); } HuAudPlayerVoicePlay(currItemRestore, 0x122); @@ -910,7 +868,8 @@ static void ExecItemPipe(void) { if (GWPlayer[sp2C[var_r31]].character == 5) { if (var_r27 != 0) { var_r27--; - } else { + } + else { var_f31 += 0.05f; if (var_f31 > 1.0f) { var_f31 = 1.0f; @@ -923,13 +882,15 @@ static void ExecItemPipe(void) { if (fabs(spCC[var_r31].x - spE4[var_r31].x) <= fabs(spB4[var_r31].x)) { spCC[var_r31].x = spE4[var_r31].x; var_r30++; - } else { + } + else { spCC[var_r31].x += spB4[var_r31].x; } if (fabs(spCC[var_r31].z - spE4[var_r31].z) <= fabs(spB4[var_r31].z)) { spCC[var_r31].z = spE4[var_r31].z; var_r30++; - } else { + } + else { spCC[var_r31].z += spB4[var_r31].z; } if (spCC[var_r31].y < spE4[var_r31].y) { @@ -944,7 +905,7 @@ static void ExecItemPipe(void) { } HuPrcVSleep(); } - BoardPlayerMotionShiftSet(sp2C[1], 6, 0.0f, 8.0f, 0x40000001); + BoardPlayerMotionShiftSet(sp2C[1], 6, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardModelVoiceEnableSet(BoardPlayerModelGet(sp2C[1]), 6, 0); CharModelLayerSetAll(2); BoardPlayerIdleSet(sp2C[0]); @@ -979,7 +940,8 @@ static void ExecItemPipe(void) { } } -static void ExecItemSwap(void) { +static void ExecItemSwap(void) +{ Vec sp1A4[3]; Vec sp180[3]; Vec sp15C[3]; @@ -1026,22 +988,22 @@ static void ExecItemSwap(void) { BoardModelPosGet(suitMdl, &spB4); BoardPlayerRotGet(currItemRestore, &sp90); for (var_r27 = 0; var_r27 < 3; var_r27++) { - if (((float*) &sp90)[var_r27] < 0.0f) { - ((float*) &sp90)[var_r27] += 360.0f; + if (((float *)&sp90)[var_r27] < 0.0f) { + ((float *)&sp90)[var_r27] += 360.0f; } - if (((float*) &sp90)[var_r27] >= 360.0f) { - ((float*) &sp90)[var_r27] -= 360.0f; + if (((float *)&sp90)[var_r27] >= 360.0f) { + ((float *)&sp90)[var_r27] -= 360.0f; } } BoardModelRotGet(suitMdl, &spA8); while (1) { - PSVECAdd(&spA8, &sp9C, &spA8); + VECAdd(&spA8, &sp9C, &spA8); for (var_r26 = 0; var_r26 < 3; var_r26++) { - if (((float*) &spA8)[var_r26] < 0.0f) { - ((float*) &spA8)[var_r26] += 360.0f; + if (((float *)&spA8)[var_r26] < 0.0f) { + ((float *)&spA8)[var_r26] += 360.0f; } - if (((float*) &spA8)[var_r26] >= 360.0f) { - ((float*) &spA8)[var_r26] -= 360.0f; + if (((float *)&spA8)[var_r26] >= 360.0f) { + ((float *)&spA8)[var_r26] -= 360.0f; } } sp9C.y *= 0.94f; @@ -1067,7 +1029,8 @@ static void ExecItemSwap(void) { } if (var_r23 >= var_r22) { var_r28 = var_r23 * 2; - } else { + } + else { var_r28 = var_r22 * 2; } BoardModelRotGet(suitMdl, &sp3C); @@ -1092,8 +1055,8 @@ static void ExecItemSwap(void) { BoardItemGetDestPos(currItemRestore, &sp15C[0]); BoardItemGetDestPos(temp_r24, &sp138[0]); BoardModelPosGet(suitMdl, &sp90); - PSVECSubtract(&sp90, &Hu3DCamera->pos, &sp90); - temp_f29 = PSVECMag(&sp90); + VECSubtract(&sp90, &Hu3DCamera->pos, &sp90); + temp_f29 = VECMag(&sp90); for (var_r31 = 0; var_r31 < 3; var_r31++) { sp15C[var_r31].z = temp_f29; sp138[var_r31].z = temp_f29; @@ -1105,15 +1068,15 @@ static void ExecItemSwap(void) { sp1A4[var_r31] = sp180[var_r31] = spB4; Hu3D2Dto3D(&sp15C[var_r31], 1, &sp84); Hu3D2Dto3D(&sp138[var_r31], 1, &sp78); - PSVECSubtract(&sp84, &sp1A4[var_r31], &sp6C); - PSVECScale(&sp6C, &sp6C, 0.033333335f); - PSVECSubtract(&sp78, &sp180[var_r31], &sp60); - PSVECScale(&sp60, &sp60, 0.033333335f); + VECSubtract(&sp84, &sp1A4[var_r31], &sp6C); + VECScale(&sp6C, &sp6C, 0.033333335f); + VECSubtract(&sp78, &sp180[var_r31], &sp60); + VECScale(&sp60, &sp60, 0.033333335f); for (var_r30 = 0; var_r30 < 30; var_r30++) { BoardModelPosSetV(sp54[var_r31], &sp1A4[var_r31]); BoardModelPosSetV(sp54[var_r31 + 3], &sp180[var_r31]); - PSVECAdd(&sp1A4[var_r31], &sp6C, &sp1A4[var_r31]); - PSVECAdd(&sp180[var_r31], &sp60, &sp180[var_r31]); + VECAdd(&sp1A4[var_r31], &sp6C, &sp1A4[var_r31]); + VECAdd(&sp180[var_r31], &sp60, &sp180[var_r31]); HuPrcVSleep(); } sp1A4[var_r31] = sp84; @@ -1154,15 +1117,15 @@ static void ExecItemSwap(void) { } for (var_r31 = (var_r28 / 2) - 1; var_r31 >= 0; var_r31--) { HuAudFXPlay(0x32C); - PSVECSubtract(&spB4, &sp1A4[var_r31], &sp6C); - PSVECScale(&sp6C, &sp6C, 0.033333335f); - PSVECSubtract(&spB4, &sp180[var_r31], &sp60); - PSVECScale(&sp60, &sp60, 0.033333335f); + VECSubtract(&spB4, &sp1A4[var_r31], &sp6C); + VECScale(&sp6C, &sp6C, 0.033333335f); + VECSubtract(&spB4, &sp180[var_r31], &sp60); + VECScale(&sp60, &sp60, 0.033333335f); for (var_r30 = 0; var_r30 < 30; var_r30++) { BoardModelPosSetV(sp54[var_r31], &sp1A4[var_r31]); BoardModelPosSetV(sp54[var_r31 + 3], &sp180[var_r31]); - PSVECAdd(&sp1A4[var_r31], &sp6C, &sp1A4[var_r31]); - PSVECAdd(&sp180[var_r31], &sp60, &sp180[var_r31]); + VECAdd(&sp1A4[var_r31], &sp6C, &sp1A4[var_r31]); + VECAdd(&sp180[var_r31], &sp60, &sp180[var_r31]); HuPrcVSleep(); } BoardModelVisibilitySet(sp54[var_r31], 0); @@ -1174,7 +1137,7 @@ static void ExecItemSwap(void) { while (1) { BoardModelRotSetV(suitMdl, &spA8); BoardModelAlphaSet(suitMdl, var_f30); - PSVECAdd(&spA8, &sp9C, &spA8); + VECAdd(&spA8, &sp9C, &spA8); sp9C.y *= 1.02f; if (sp9C.y >= 35.0f) { if (var_r21 == 0) { @@ -1200,7 +1163,8 @@ static void ExecItemSwap(void) { } } -static void ExecItemSpark(void) { +static void ExecItemSpark(void) +{ Vec sp68; Vec sp5C; Vec sp50; @@ -1219,7 +1183,7 @@ static void ExecItemSpark(void) { BoardModelLayerSet(temp_r30, 3); BoardModelVisibilitySet(temp_r30, 0); HuAudFXPlay(0x350); - suitMdl = BoardModelCreate(itemMdlTbl[currItem], lbl_801D37A0, 0); + suitMdl = BoardModelCreate(itemMdlTbl[currItem], itemMotTbl, 0); BoardModelLayerSet(suitMdl, 2); ItemShowProc(NULL, NULL); temp_r28 = GWPlayer[currItemRestore].space_curr; @@ -1299,7 +1263,8 @@ static void ExecItemSpark(void) { } } -static void ExecItemLight(void) { +static void ExecItemLight(void) +{ s16 temp_r31; HuAudFXPlay(0x350); @@ -1321,7 +1286,8 @@ static void ExecItemLight(void) { } } -static void ExecItemWhistle(void) { +static void ExecItemWhistle(void) +{ Vec spF0[4]; Vec spC0[4]; Vec spB4; @@ -1397,8 +1363,8 @@ static void ExecItemWhistle(void) { BoardPlayerPosGet(currItemRestore, &sp84); sp84.y += 200.0f; sp84.z += 100.0f; - PSVECSubtract(&sp84, &sp90, &sp78); - PSVECScale(&sp78, &sp78, 0.03448276f); + VECSubtract(&sp84, &sp90, &sp78); + VECScale(&sp78, &sp78, 0.03448276f); BoardPlayerMotionStart(currItemRestore, temp_r23, 0); BoardPlayerMotionTimeSet(currItemRestore, 1.0f); for (var_r31 = 0; var_r31 < 29; var_r31++) { @@ -1414,8 +1380,7 @@ static void ExecItemWhistle(void) { BoardModelPosSetV(suitMdl, &sp84); BoardModelHookSet(sp8, temp_r22, suitMdl); while (BoardPlayerMotionTimeGet(currItemRestore) < BoardPlayerMotionMaxTimeGet(currItemRestore)) { - if (BoardPlayerMotionTimeGet(currItemRestore) == 95.0f - || BoardPlayerMotionTimeGet(currItemRestore) == 185.0f + if (BoardPlayerMotionTimeGet(currItemRestore) == 95.0f || BoardPlayerMotionTimeGet(currItemRestore) == 185.0f || BoardPlayerMotionTimeGet(currItemRestore) == 275.0f) { HuAudFXPlay(0x31F); } @@ -1480,7 +1445,7 @@ static void ExecItemWhistle(void) { } HuPrcVSleep(); } - BoardModelMotionShiftSet(temp_r28, temp_r20, 0.0f, 5.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r28, temp_r20, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); HuAudFXPlay(0x322); for (var_r29 = 0; var_r29 < 180; var_r29++) { for (var_r31 = 0; var_r31 < 4; var_r31++) { @@ -1533,7 +1498,7 @@ static void ExecItemWhistle(void) { if (sp28[0] < 100.0f) { if (var_r27 == 0) { var_r27 = 1; - BoardModelMotionShiftSet(temp_r28, temp_r21, 0.0f, 3.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r28, temp_r21, 0.0f, 3.0f, HU3D_MOTATTR_LOOP); HuAudFXPlay(forceMoveSfxTbl[GWBoardGet()]); } sp9C.y += var_f30; @@ -1563,7 +1528,8 @@ static void ExecItemWhistle(void) { } } -static void ExecItemBowser(void) { +static void ExecItemBowser(void) +{ Vec sp2C; Vec sp20; Vec sp14; @@ -1619,31 +1585,28 @@ static void ExecItemBowser(void) { HuAudFXPlay(0x326); BoardModelVisibilitySet(temp_r31, 1); BoardModelHookSet(suitMdl, "itemhook_head", temp_r31); - BoardModelMotionShiftSet(suitMdl, suitMot[1], 0.0f, 5.0f, 0); - BoardModelMotionShiftSet(temp_r31, suitCommonMot[1], 0.0f, 5.0f, 0); + BoardModelMotionShiftSet(suitMdl, suitMot[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + BoardModelMotionShiftSet(temp_r31, suitCommonMot[1], 0.0f, 5.0f, HU3D_MOTATTR_NONE); while (!BoardModelMotionEndCheck(suitMdl)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(suitMdl, suitMot[0], 0.0f, 5.0f, 0); - BoardModelMotionShiftSet(temp_r31, suitCommonMot[0], 0.0f, 5.0f, 0); + BoardModelMotionShiftSet(suitMdl, suitMot[0], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + BoardModelMotionShiftSet(temp_r31, suitCommonMot[0], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(0x28); HuAudPlayerVoicePlay(currItemRestore, 0x129); omVibrate(currItemRestore, 12, 4, 2); HuPrcSleep(60); - BoardModelMotionShiftSet(suitMdl, 0, 0.0f, 5.0f, 0x40000001); + BoardModelMotionShiftSet(suitMdl, 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); HuPrcKill(NULL); while (1) { HuPrcVSleep(); } } -static s32 booMotTbl[3] = { - DATA_MAKE_NUM(DATADIR_BGUEST, 24), - DATA_MAKE_NUM(DATADIR_BGUEST, 22), - -1 -}; +static s32 booMotTbl[3] = { DATA_MAKE_NUM(DATADIR_BGUEST, 24), DATA_MAKE_NUM(DATADIR_BGUEST, 22), -1 }; -static inline void ExecItemBooBallInlineFunc01(s32 speed) { +static inline void ExecItemBooBallInlineFunc01(s32 speed) +{ Vec sp20; s32 var_r20; @@ -1655,14 +1618,14 @@ static inline void ExecItemBooBallInlineFunc01(s32 speed) { BoardModelAlphaSet(booBallMdl, booBallAlpha); BoardModelVisibilitySet(booBallMdl, 1); for (var_r20 = 0; var_r20 < speed; var_r20++) { - booBallAlpha -= (255.0f/speed); + booBallAlpha -= (255.0f / speed); if (booBallAlpha < 0.0f) { booBallAlpha = 0.0f; } - booBallScale.x -= (1.0f/speed); - booBallScale.y -= (1.0f/speed); - booBallScale.z -= (1.0f/speed); - booBallPos.y -= (20.0f/speed); + booBallScale.x -= (1.0f / speed); + booBallScale.y -= (1.0f / speed); + booBallScale.z -= (1.0f / speed); + booBallPos.y -= (20.0f / speed); BoardModelAlphaSet(booBallMdl, booBallAlpha); BoardModelScaleSetV(booBallMdl, &booBallScale); BoardModelPosSetV(booBallMdl, &booBallPos); @@ -1674,7 +1637,8 @@ static inline void ExecItemBooBallInlineFunc01(s32 speed) { BoardModelAlphaSet(booBallMdl, booBallAlpha); } -static inline void ExecItemBooBallInlineFunc02(s32 speed) { +static inline void ExecItemBooBallInlineFunc02(s32 speed) +{ Vec sp20; s32 var_r20; @@ -1686,14 +1650,14 @@ static inline void ExecItemBooBallInlineFunc02(s32 speed) { BoardModelAlphaSet(booBallMdl, booBallAlpha); BoardModelVisibilitySet(booBallMdl, 1); for (var_r20 = 0; var_r20 < speed; var_r20++) { - booBallAlpha += (255.0f/speed); + booBallAlpha += (255.0f / speed); if (booBallAlpha > 255.0f) { booBallAlpha = 255.0f; } - booBallScale.x += (1.0f/speed); - booBallScale.y += (1.0f/speed); - booBallScale.z += (1.0f/speed); - booBallPos.y += (20.0f/speed); + booBallScale.x += (1.0f / speed); + booBallScale.y += (1.0f / speed); + booBallScale.z += (1.0f / speed); + booBallPos.y += (20.0f / speed); BoardModelAlphaSet(booBallMdl, booBallAlpha); BoardModelScaleSetV(booBallMdl, &booBallScale); BoardModelPosSetV(booBallMdl, &booBallPos); @@ -1707,7 +1671,8 @@ static inline void ExecItemBooBallInlineFunc02(s32 speed) { BoardModelAlphaSet(booBallMdl, booBallAlpha); } -static void ExecItemBooBall(void) { +static void ExecItemBooBall(void) +{ UnkItemShowProcStruct spA0; UnkItemShowProcStruct sp80; Vec sp74; @@ -1754,7 +1719,8 @@ static void ExecItemBooBall(void) { BoardWinCreate(2, MAKE_MESSID(18, 22), 3); BoardWinWait(); BoardWinKill(); - } else { + } + else { var_r28 = 0; for (var_r31 = 0; var_r31 < 4; var_r31++) { if (var_r31 != currItemRestore) { @@ -1779,7 +1745,8 @@ static void ExecItemBooBall(void) { if (GWPlayer[currItemRestore].com) { if (var_r28 != 0 && BoardPlayerCoinsGet(currItemRestore) >= 50) { BoardComKeySetDown(); - } else { + } + else { BoardComKeySetUp(); } } @@ -1809,15 +1776,20 @@ static void ExecItemBooBall(void) { var_r29 = BoardBooStealValueGet(&spC, &spA); if (var_r29 == 0) { var_r30 = MAKE_MESSID(7, 11); - } else if (spA == 0) { + } + else if (spA == 0) { var_r30 = MAKE_MESSID(7, 9); - } else if (spA >= 1 && spA <= 3) { + } + else if (spA >= 1 && spA <= 3) { var_r30 = MAKE_MESSID(7, 8); - } else if (spA >= 4 && spA <= 6) { + } + else if (spA >= 4 && spA <= 6) { var_r30 = MAKE_MESSID(7, 7); - } else if (spA >= 7 && spA <= 8) { + } + else if (spA >= 7 && spA <= 8) { var_r30 = MAKE_MESSID(7, 6); - } else { + } + else { var_r30 = MAKE_MESSID(7, 5); } sprintf(booCoinStr, "%d", spC); @@ -1828,7 +1800,7 @@ static void ExecItemBooBall(void) { BoardWinKill(); BoardStatusShowSetAll(1); if (var_r29 != 0) { - BoardPlayerMotionShiftSet(currItemRestore, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(currItemRestore, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(30); for (var_r31 = 0; var_r31 < spC; var_r31++) { BoardPlayerCoinsAdd(currItemRestore, 1); @@ -1837,7 +1809,7 @@ static void ExecItemBooBall(void) { } BoardPlayerMotionEndWait(currItemRestore); HuPrcSleep(10); - BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 8.0f, 0x40000001); + BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } break; case 1: @@ -1861,7 +1833,8 @@ static void ExecItemBooBall(void) { ExecItemBooBallInlineFunc02(30); if (var_r29 != 0) { var_r30 = MAKE_MESSID(7, 10); - } else { + } + else { var_r30 = MAKE_MESSID(7, 11); } HuAudFXPlay(0x4C); @@ -1874,7 +1847,7 @@ static void ExecItemBooBall(void) { if (var_r29 != 0) { BoardPlayerVoiceEnableSet(currItemRestore, 7, 0); sp18 = HuAudSStreamPlay(6); - BoardPlayerMotionShiftSet(currItemRestore, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(currItemRestore, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(boardStarSndTbl[GWPlayer[currItemRestore].character]); BoardPlayerStarsAdd(currItemRestore, 1); HuAudFXPlay(8); @@ -1885,7 +1858,7 @@ static void ExecItemBooBall(void) { HuPrcVSleep(); } } - BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 8.0f, 0x40000001); + BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); break; case 3: BoardViewMapExec(currItemRestore); @@ -1928,7 +1901,8 @@ static void ForceConsts(void) (void)125.0f; } -static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx matrix) { +static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx matrix) +{ HsfanimStruct01 *var_r31; Vec spC; float sp8; @@ -1968,18 +1942,19 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat var_r31->unk2C = 25.0f; temp_f30 = 175.0f + frand8() * 0x50 * 0.003921569f; var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = temp_f30; - var_r31->unk00_s16 = 0; + var_r31->unk00 = 0; } } - } else { + } + else { particle->unk_00--; } var_r31 = particle->unk_48; for (i = 0; i < particle->unk_30; i++, var_r31++) { if (var_r31->unk2C != 0.0f) { - if (var_r31->unk00_s16 == 0) { - PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); - PSVECScale(&var_r31->unk08, &var_r31->unk08, 0.95f); + if (var_r31->unk00 == 0) { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + VECScale(&var_r31->unk08, &var_r31->unk08, 0.95f); var_r31->unk2C += 8.0f; var_r31->unk14.y -= 2.8333333f; if (var_r31->unk14.y <= 120.0f) { @@ -1988,11 +1963,12 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat var_r31->unk08.x = 6.0 * cosd(temp_f31); var_r31->unk08.y = -4.0f; var_r31->unk08.z = 6.0 * sind(temp_f31); - var_r31->unk00_s16 = 1; + var_r31->unk00 = 1; } var_r31->unk40.a = var_r31->unk14.y; - } else { - PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + } + else { + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); var_r31->unk2C += 0.2f; var_r31->unk14.y -= 1.8214285f; if (var_r31->unk14.y <= 55.0f) { @@ -2005,8 +1981,9 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat } } -static void GenieParticleUpdate(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01* var_r31; +static void GenieParticleUpdate(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; float temp_f31; float temp_f30; s32 var_r28; @@ -2034,8 +2011,8 @@ static void GenieParticleUpdate(ModelData *model, ParticleData *particle, Mtx ma for (i = 0; i < particle->unk_30; i++, var_r31++) { if (var_r31->unk2C != 0.0f) { var_r28++; - PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); - PSVECScale(&var_r31->unk08, &var_r31->unk08, 0.995f); + VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + VECScale(&var_r31->unk08, &var_r31->unk08, 0.995f); var_r31->unk2C -= 0.2f; var_r31->unk14.y -= 1.59375f; if (var_r31->unk14.y <= 20.0f) { @@ -2054,11 +2031,13 @@ static Vec shadowPos = { 0.0f, 4500.0f, 500.0f }; static Vec shadowTarget = { 0.0f, 0.9f, -0.1f }; static Vec shadowUp = { 0.0f, 0.0f, 500.0f }; -static void GenieCameraProcInlineFunc(void) { +static void GenieCameraProcInlineFunc(void) +{ Hu3DShadowPosSet(&shadowPos, &shadowTarget, &shadowUp); } -static void GenieCameraProc(void) { +static void GenieCameraProc(void) +{ while (1) { Hu3DCameraPerspectiveSet(2, genieFov, 10.0f, 20000.0f, 1.2f); Hu3DCameraPosSetV(2, &booCamPos, &booCamTarget, &booCamUp); @@ -2070,7 +2049,8 @@ static void GenieCameraProc(void) { } } -static void GenieCameraCalc(UnkGenieCameraStruct *arg0, s32 arg1, float arg2, Vec *arg3, Vec *arg4) { +static void GenieCameraCalc(UnkGenieCameraStruct *arg0, s32 arg1, float arg2, Vec *arg3, Vec *arg4) +{ Vec spC = { 0.0f, 0.0f, 0.0f }; float temp_f31 = arg2 * arg2; float sp8 = temp_f31 * arg2; @@ -2090,13 +2070,26 @@ static void GenieCameraCalc(UnkGenieCameraStruct *arg0, s32 arg1, float arg2, Ve temp_r30 = &arg0[arg1].unk10; temp_r27 = &arg0[arg1 + 1].unk10; temp_r26 = &arg0[arg1 + 2].unk10; - arg3->x = 0.5f * ((temp_r31->x - temp_r29->x * 2.0f + temp_r28->x) * temp_f31 + (temp_r31->x * -3.0f + temp_r29->x * 4.0f - temp_r28->x) * arg2 + temp_r31->x * 2.0f); - arg3->y = 0.5f * ((temp_r31->y - temp_r29->y * 2.0f + temp_r28->y) * temp_f31 + (temp_r31->y * -3.0f + temp_r29->y * 4.0f - temp_r28->y) * arg2 + temp_r31->y * 2.0f); - arg3->z = 0.5f * ((temp_r31->z - temp_r29->z * 2.0f + temp_r28->z) * temp_f31 + (temp_r31->z * -3.0f + temp_r29->z * 4.0f - temp_r28->z) * arg2 + temp_r31->z * 2.0f); - arg4->x = 0.5f * ((temp_r30->x - temp_r27->x * 2.0f + temp_r26->x) * temp_f31 + (temp_r30->x * -3.0f + temp_r27->x * 4.0f - temp_r26->x) * arg2 + temp_r30->x * 2.0f); - arg4->y = 0.5f * ((temp_r30->y - temp_r27->y * 2.0f + temp_r26->y) * temp_f31 + (temp_r30->y * -3.0f + temp_r27->y * 4.0f - temp_r26->y) * arg2 + temp_r30->y * 2.0f); - arg4->z = 0.5f * ((temp_r30->z - temp_r27->z * 2.0f + temp_r26->z) * temp_f31 + (temp_r30->z * -3.0f + temp_r27->z * 4.0f - temp_r26->z) * arg2 + temp_r30->z * 2.0f); - } else { + arg3->x = 0.5f + * ((temp_r31->x - temp_r29->x * 2.0f + temp_r28->x) * temp_f31 + (temp_r31->x * -3.0f + temp_r29->x * 4.0f - temp_r28->x) * arg2 + + temp_r31->x * 2.0f); + arg3->y = 0.5f + * ((temp_r31->y - temp_r29->y * 2.0f + temp_r28->y) * temp_f31 + (temp_r31->y * -3.0f + temp_r29->y * 4.0f - temp_r28->y) * arg2 + + temp_r31->y * 2.0f); + arg3->z = 0.5f + * ((temp_r31->z - temp_r29->z * 2.0f + temp_r28->z) * temp_f31 + (temp_r31->z * -3.0f + temp_r29->z * 4.0f - temp_r28->z) * arg2 + + temp_r31->z * 2.0f); + arg4->x = 0.5f + * ((temp_r30->x - temp_r27->x * 2.0f + temp_r26->x) * temp_f31 + (temp_r30->x * -3.0f + temp_r27->x * 4.0f - temp_r26->x) * arg2 + + temp_r30->x * 2.0f); + arg4->y = 0.5f + * ((temp_r30->y - temp_r27->y * 2.0f + temp_r26->y) * temp_f31 + (temp_r30->y * -3.0f + temp_r27->y * 4.0f - temp_r26->y) * arg2 + + temp_r30->y * 2.0f); + arg4->z = 0.5f + * ((temp_r30->z - temp_r27->z * 2.0f + temp_r26->z) * temp_f31 + (temp_r30->z * -3.0f + temp_r27->z * 4.0f - temp_r26->z) * arg2 + + temp_r30->z * 2.0f); + } + else { temp_r31 = &arg0[arg1 - 1].unk04; temp_r29 = &arg0[arg1].unk04; temp_r28 = &arg0[arg1 + 1].unk04; @@ -2105,70 +2098,56 @@ static void GenieCameraCalc(UnkGenieCameraStruct *arg0, s32 arg1, float arg2, Ve temp_r27 = &arg0[arg1].unk10; temp_r26 = &arg0[arg1 + 1].unk10; temp_r24 = &arg0[arg1 + 2].unk10; - arg3->x = 0.5f * ((-temp_r31->x + temp_r29->x * 3.0f - temp_r28->x * 3.0f + temp_r25->x) * temp_f31 * arg2 + (temp_r31->x * 2.0f - temp_r29->x * 5.0f + temp_r28->x * 4.0f - temp_r25->x) * temp_f31 + (-temp_r31->x + temp_r28->x) * arg2 + temp_r29->x * 2.0f); - arg3->y = 0.5f * ((-temp_r31->y + temp_r29->y * 3.0f - temp_r28->y * 3.0f + temp_r25->y) * temp_f31 * arg2 + (temp_r31->y * 2.0f - temp_r29->y * 5.0f + temp_r28->y * 4.0f - temp_r25->y) * temp_f31 + (-temp_r31->y + temp_r28->y) * arg2 + temp_r29->y * 2.0f); - arg3->z = 0.5f * ((-temp_r31->z + temp_r29->z * 3.0f - temp_r28->z * 3.0f + temp_r25->z) * temp_f31 * arg2 + (temp_r31->z * 2.0f - temp_r29->z * 5.0f + temp_r28->z * 4.0f - temp_r25->z) * temp_f31 + (-temp_r31->z + temp_r28->z) * arg2 + temp_r29->z * 2.0f); - arg4->x = 0.5f * ((-temp_r30->x + temp_r27->x * 3.0f - temp_r26->x * 3.0f + temp_r24->x) * temp_f31 * arg2 + (temp_r30->x * 2.0f - temp_r27->x * 5.0f + temp_r26->x * 4.0f - temp_r24->x) * temp_f31 + (-temp_r30->x + temp_r26->x) * arg2 + temp_r27->x * 2.0f); - arg4->y = 0.5f * ((-temp_r30->y + temp_r27->y * 3.0f - temp_r26->y * 3.0f + temp_r24->y) * temp_f31 * arg2 + (temp_r30->y * 2.0f - temp_r27->y * 5.0f + temp_r26->y * 4.0f - temp_r24->y) * temp_f31 + (-temp_r30->y + temp_r26->y) * arg2 + temp_r27->y * 2.0f); - arg4->z = 0.5f * ((-temp_r30->z + temp_r27->z * 3.0f - temp_r26->z * 3.0f + temp_r24->z) * temp_f31 * arg2 + (temp_r30->z * 2.0f - temp_r27->z * 5.0f + temp_r26->z * 4.0f - temp_r24->z) * temp_f31 + (-temp_r30->z + temp_r26->z) * arg2 + temp_r27->z * 2.0f); + arg3->x = 0.5f + * ((-temp_r31->x + temp_r29->x * 3.0f - temp_r28->x * 3.0f + temp_r25->x) * temp_f31 * arg2 + + (temp_r31->x * 2.0f - temp_r29->x * 5.0f + temp_r28->x * 4.0f - temp_r25->x) * temp_f31 + (-temp_r31->x + temp_r28->x) * arg2 + + temp_r29->x * 2.0f); + arg3->y = 0.5f + * ((-temp_r31->y + temp_r29->y * 3.0f - temp_r28->y * 3.0f + temp_r25->y) * temp_f31 * arg2 + + (temp_r31->y * 2.0f - temp_r29->y * 5.0f + temp_r28->y * 4.0f - temp_r25->y) * temp_f31 + (-temp_r31->y + temp_r28->y) * arg2 + + temp_r29->y * 2.0f); + arg3->z = 0.5f + * ((-temp_r31->z + temp_r29->z * 3.0f - temp_r28->z * 3.0f + temp_r25->z) * temp_f31 * arg2 + + (temp_r31->z * 2.0f - temp_r29->z * 5.0f + temp_r28->z * 4.0f - temp_r25->z) * temp_f31 + (-temp_r31->z + temp_r28->z) * arg2 + + temp_r29->z * 2.0f); + arg4->x = 0.5f + * ((-temp_r30->x + temp_r27->x * 3.0f - temp_r26->x * 3.0f + temp_r24->x) * temp_f31 * arg2 + + (temp_r30->x * 2.0f - temp_r27->x * 5.0f + temp_r26->x * 4.0f - temp_r24->x) * temp_f31 + (-temp_r30->x + temp_r26->x) * arg2 + + temp_r27->x * 2.0f); + arg4->y = 0.5f + * ((-temp_r30->y + temp_r27->y * 3.0f - temp_r26->y * 3.0f + temp_r24->y) * temp_f31 * arg2 + + (temp_r30->y * 2.0f - temp_r27->y * 5.0f + temp_r26->y * 4.0f - temp_r24->y) * temp_f31 + (-temp_r30->y + temp_r26->y) * arg2 + + temp_r27->y * 2.0f); + arg4->z = 0.5f + * ((-temp_r30->z + temp_r27->z * 3.0f - temp_r26->z * 3.0f + temp_r24->z) * temp_f31 * arg2 + + (temp_r30->z * 2.0f - temp_r27->z * 5.0f + temp_r26->z * 4.0f - temp_r24->z) * temp_f31 + (-temp_r30->z + temp_r26->z) * arg2 + + temp_r27->z * 2.0f); } } -static s32 armUpMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 92), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 92), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 92), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 92), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 92), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 92), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 92), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 92) -}; +static s32 armUpMotTbl[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 92), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 92), DATA_MAKE_NUM(DATADIR_PEACHMOT, 92), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 92), DATA_MAKE_NUM(DATADIR_WARIOMOT, 92), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 92), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 92), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 92) }; -static s32 scareMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28) -}; +static s32 scareMotTbl[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28) }; -static s32 impactMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 94), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 94), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 94), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 94), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 94), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 94), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 94), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 94) -}; +static s32 impactMotTbl[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 94), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 94), DATA_MAKE_NUM(DATADIR_PEACHMOT, 94), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 94), DATA_MAKE_NUM(DATADIR_WARIOMOT, 94), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 94), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 94), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 94) }; -static UnkGenieCameraStruct cameraDataTbl[] = { - 60.0f, { 0.0f, 100.0f, 950.0f }, { 0.0f, 100.0f, 600.0f }, - 60.0f, { -353.0f, 100.0f, 662.5f }, { 0.0f, 100.0f, 600.0f }, - 60.0f, { -500.0f, 100.0f, 375.0f }, { 0.0f, 100.0f, 600.0f }, - 60.0f, { -353.0f, 100.0f, 87.5f }, { 0.0f, 100.0f, 600.0f }, - 1.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, - 89.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, - 1.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, - 9.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, - 1.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 500.0f, 600.0f }, - 5.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 500.0f, 600.0f }, - 5.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 500.0f, 600.0f } -}; +static UnkGenieCameraStruct cameraDataTbl[] = { 60.0f, { 0.0f, 100.0f, 950.0f }, { 0.0f, 100.0f, 600.0f }, 60.0f, { -353.0f, 100.0f, 662.5f }, + { 0.0f, 100.0f, 600.0f }, 60.0f, { -500.0f, 100.0f, 375.0f }, { 0.0f, 100.0f, 600.0f }, 60.0f, { -353.0f, 100.0f, 87.5f }, + { 0.0f, 100.0f, 600.0f }, 1.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, 89.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, + 1.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, 9.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 100.0f, 600.0f }, 1.0f, + { 0.0f, 100.0f, -200.0f }, { 0.0f, 500.0f, 600.0f }, 5.0f, { 0.0f, 100.0f, -200.0f }, { 0.0f, 500.0f, 600.0f }, 5.0f, { 0.0f, 100.0f, -200.0f }, + { 0.0f, 500.0f, 600.0f } }; -static s32 genieMotTbl[] = { - DATA_MAKE_NUM(DATADIR_BOARD, 125), - DATA_MAKE_NUM(DATADIR_BOARD, 126), - DATA_MAKE_NUM(DATADIR_BOARD, 127), - -1 -}; +static s32 genieMotTbl[] = { DATA_MAKE_NUM(DATADIR_BOARD, 125), DATA_MAKE_NUM(DATADIR_BOARD, 126), DATA_MAKE_NUM(DATADIR_BOARD, 127), -1 }; -static void GenieSceneExec(void) { +static void GenieSceneExec(void) +{ GXColor sp1C = { 0xFF, 0xFF, 0xFF, 0xFF }; Vec sp50; Vec sp44; @@ -2216,8 +2195,8 @@ static void GenieSceneExec(void) { BoardPlayerCameraSet(currItemRestore, 2); BoardPlayerPosSetV(currItemRestore, &sp38); BoardModelVisibilitySet(BoardPlayerModelGet(currItemRestore), 1); - PSVECSubtract(&shadowUp, &shadowPos, &sp2C); - PSVECNormalize(&sp2C, &sp2C); + VECSubtract(&shadowUp, &shadowPos, &sp2C); + VECNormalize(&sp2C, &sp2C); temp_r20 = Hu3DGLightCreateV(&shadowPos, &sp2C, &sp1C); Hu3DShadowCreate(60.0f, 10.0f, 20000.0f); Hu3DModelShadowSet(BoardModelIDGet(BoardPlayerModelGet(currItemRestore))); @@ -2311,7 +2290,7 @@ static void GenieSceneExec(void) { temp_f30 = 40.0f - var_f31 * var_f31 * 0.25f * 0.0125f; if (temp_f30 <= 0.0f && var_r22 == 0) { var_r22 = 1; - BoardModelMotionShiftSet(temp_r28, 3, 0.0f, 4.0f, 0); + BoardModelMotionShiftSet(temp_r28, 3, 0.0f, 4.0f, HU3D_MOTATTR_NONE); } var_f31 += 1.0f; sp50.y += temp_f30; @@ -2366,7 +2345,8 @@ static void GenieSceneExec(void) { HuAudFXPauseAll(0); } -static void ExecItemGenie(void) { +static void ExecItemGenie(void) +{ UnkItemShowProcStruct sp24; Vec sp18; Vec spC; @@ -2498,7 +2478,8 @@ static void ExecItemGenie(void) { } } -void BoardItemBagItemSet(s16 *arg0) { +void BoardItemBagItemSet(s16 *arg0) +{ s32 i; for (i = 0; i < 3; i++) { @@ -2506,7 +2487,8 @@ void BoardItemBagItemSet(s16 *arg0) { } } -static void ExecItemBagJump(void) { +static void ExecItemBagJump(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -2515,7 +2497,7 @@ static void ExecItemBagJump(void) { float var_f31; s16 temp_r31; - temp_r31 = (s16) HuPrcCurrentGet()->user_data; + temp_r31 = (s16)HuPrcCurrentGet()->user_data; BoardModelScaleGet(temp_r31, &sp20); BoardModelPosGet(temp_r31, &sp14); sp8 = sp14; @@ -2549,7 +2531,8 @@ static void ExecItemBagJump(void) { } } -static void ExecItemBagShow(void) { +static void ExecItemBagShow(void) +{ Vec sp14; Vec sp8; float var_f31; @@ -2581,7 +2564,8 @@ static void ExecItemBagShow(void) { } } -static void ExecItemBag(void) { +static void ExecItemBag(void) +{ UnkItemShowProcStruct sp3C; Vec sp30; Vec sp24; @@ -2644,12 +2628,14 @@ static void ExecItemBag(void) { var_r25 = 0x100; var_r26 = frandmod(40) + 30; } - } else { + } + else { var_r25 = HuPadBtnDown[temp_r23]; } if (!(var_r25 & 0x100)) { HuPrcVSleep(); - } else { + } + else { BoardPlayerDiceJumpStart(currItemRestore); while (!BoardPlayerDiceJumpCheck(currItemRestore)) { HuPrcVSleep(); @@ -2660,7 +2646,7 @@ static void ExecItemBag(void) { BoardModelScaleSetV(sp8[var_r30], &sp24); BoardModelVisibilitySet(sp8[var_r30], 1); temp_r29 = HuPrcChildCreate(ExecItemBagJump, 0x2004, 0x1000, 0, HuPrcCurrentGet()); - temp_r29->user_data = (void*) sp8[var_r30]; + temp_r29->user_data = (void *)sp8[var_r30]; temp_r29 = HuPrcChildCreate(ExecItemBagShow, 0x2004, 0x1000, 0, HuPrcCurrentGet()); temp_r29->user_data = temp_r24; while (GWPlayer[currItemRestore].jump) { @@ -2668,7 +2654,7 @@ static void ExecItemBag(void) { } HuPrcChildWatch(); BoardPlayerItemAdd(currItemRestore, itemBagItems[var_r30]); - BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 10.0f, 0x40000001); + BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(10); var_r30++; } @@ -2691,14 +2677,16 @@ static void ExecItemBag(void) { } } -static void RestoreItemNull(void) { +static void RestoreItemNull(void) +{ HuPrcKill(NULL); while (1) { HuPrcVSleep(); } } -static void RestoreItemMini(void) { +static void RestoreItemMini(void) +{ HuAudFXPlay(0x311); ItemSizeSet(0); HuPrcKill(NULL); @@ -2707,7 +2695,8 @@ static void RestoreItemMini(void) { } } -static void RestoreItemMega(void) { +static void RestoreItemMega(void) +{ HuAudFXPlay(0x313); ItemSizeSet(0); HuPrcKill(NULL); @@ -2716,7 +2705,8 @@ static void RestoreItemMega(void) { } } -static void RestoreItemMiniSuper(void) { +static void RestoreItemMiniSuper(void) +{ HuAudFXPlay(0x311); ItemSizeSet(0); HuPrcKill(NULL); @@ -2725,7 +2715,8 @@ static void RestoreItemMiniSuper(void) { } } -static void RestoreItemMegaSuper(void) { +static void RestoreItemMegaSuper(void) +{ HuAudFXPlay(0x313); ItemSizeSet(0); HuPrcKill(NULL); @@ -2734,7 +2725,8 @@ static void RestoreItemMegaSuper(void) { } } -static void RestoreItemBowser(void) { +static void RestoreItemBowser(void) +{ Vec sp20; Vec sp14; Vec sp8; @@ -2754,8 +2746,8 @@ static void RestoreItemBowser(void) { BoardModelAttrSet(temp_r31, 0x400000); suitMdl = BoardBowserSuitModelGet(); temp_r29 = BoardBowserSuitPlayerModelGet(); - BoardModelMotionShiftSet(suitMdl, suitMot[0], 0.0f, 5.0f, 0); - BoardModelMotionShiftSet(temp_r29, suitCommonMot[0], 0.0f, 5.0f, 0); + BoardModelMotionShiftSet(suitMdl, suitMot[0], 0.0f, 5.0f, HU3D_MOTATTR_NONE); + BoardModelMotionShiftSet(temp_r29, suitCommonMot[0], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(40); HuAudPlayerVoicePlay(currItemRestore, 0x129); HuPrcSleep(20); diff --git a/src/game/board/last5.c b/src/game/board/last5.c index 890a6eb5..8b9261c9 100644 --- a/src/game/board/last5.c +++ b/src/game/board/last5.c @@ -13,6 +13,8 @@ #include "game/data.h" #include "game/wipe.h" +#include "ext_math.h" + static s16 stopWin = -1; static s16 wheelMdl = -1; s16 lbl_801D3854 = -1; @@ -113,12 +115,12 @@ static s32 hostMotTbl[][8] = { }; static s32 messBaseTbl[] = { - 0xE0000, - 0xE0018, - 0xE0030, - 0xE0048, - 0xE0060, - 0xE0078, + MAKE_MESSID(14, 0), + MAKE_MESSID(14, 24), + MAKE_MESSID(14, 48), + MAKE_MESSID(14, 72), + MAKE_MESSID(14, 96), + MAKE_MESSID(14, 120), 0, 0, 0, @@ -513,9 +515,9 @@ static void Last5Main(void) } BoardWinCreate(2, messBase+10, BoardWinPortraitGetStar()); BoardWinWait(); - BoardModelMotionShiftSet(hostMdl, hostMot[5], 0.0f, 4.0f, 0); + BoardModelMotionShiftSet(hostMdl, hostMot[5], 0.0f, 4.0f, HU3D_MOTATTR_NONE); HuPrcVSleep(8); - BoardModelMotionShiftSet(hostMdl, hostMot[6], 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[6], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); for(temp_r31=0; temp_r31<4; temp_r31++) { temp_r30 = sp28[temp_r31]; temp_r27 = sp24[temp_r31]; @@ -566,7 +568,7 @@ static void Last5Main(void) HuPrcVSleep(); } BoardStatusItemSet(0); - temp_r24 = 0xE0090+GWBoardGet(); + temp_r24 = MAKE_MESSID(14, 144) + GWBoardGet(); BoardWinCreate(2, temp_r24, BoardWinPortraitGetStar()); BoardWinWait(); for(temp_r31=0; temp_r31<2; temp_r31++) { @@ -581,7 +583,7 @@ static void Last5Main(void) } BoardModelMotionStart(hostMdl, hostMot[5], 0x40000004); HuPrcVSleep(8); - BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardWinCreate(2, messBase+15, BoardWinPortraitGetStar()); BoardWinWait(); if((s32)GWSystem.team != 0) { @@ -619,7 +621,7 @@ static void Last5Main(void) while(!CheckHostMove()) { HuPrcVSleep(); } - BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(8); if((s32)GWSystem.team != 0) { temp_r30 = last5Player; @@ -642,9 +644,9 @@ static void Last5Main(void) BoardWinCreate(2, messBase+16, BoardWinPortraitGetStar()); BoardWinInsertMesSet(BoardPlayerGetCharMess(temp_r30), 3); BoardWinWait(); - BoardModelMotionShiftSet(hostMdl, hostMot[5], 0.0f, 4.0f, 0); + BoardModelMotionShiftSet(hostMdl, hostMot[5], 0.0f, 4.0f, HU3D_MOTATTR_NONE); HuPrcVSleep(8); - BoardModelMotionShiftSet(hostMdl, hostMot[6], 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[6], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); temp_r19 = 0; temp_r29 = 3; for(temp_f31=0; temp_r29>0; temp_f31++) { @@ -668,7 +670,7 @@ static void Last5Main(void) sp3C = sp48; BoardModelMotionStart(hostMdl, hostMot[5], 0x40000004); HuPrcVSleep(8); - BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); CreateLast5Roulette(); SetLast5RouletteFade(1); SetLast5RouletteState(2); @@ -722,15 +724,15 @@ static void Last5Main(void) BoardPlayerIdleSet(temp_r30); BoardModelVisibilitySet(BoardPlayerModelGet(temp_r30), 0); SetLast5RouletteFade(0); - BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardWinCreate(2, messBase+23, BoardWinPortraitGetStar()); BoardWinWait(); - BoardModelMotionShiftSet(hostMdl, hostMot[4], 0.0f, 8.0f, 0); + BoardModelMotionShiftSet(hostMdl, hostMot[4], 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while(!BoardModelMotionEndCheck(hostMdl)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(hostMdl, hostMot[2], 0.0f, 8.0f, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); SetLotteryDrawState(4); } @@ -1086,7 +1088,7 @@ static void ExecLotteryDraw(void) SetLotteryDrawWheelState(3); BoardWinCreate(2, 2+messBase+ticket, BoardWinPortraitGetStar()); BoardWinWait(); - BoardModelMotionShiftSet(hostMdl, hostMot[7], 0, 8, 0); + BoardModelMotionShiftSet(hostMdl, hostMot[7], 0, 8, HU3D_MOTATTR_NONE); HuPrcSleep(8); while(BoardModelMotionTimeGet(hostMdl) < 26.0f) { HuPrcVSleep(); @@ -1098,7 +1100,7 @@ static void ExecLotteryDraw(void) while(!BoardModelMotionEndCheck(hostMdl)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(hostMdl, 1, 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0, 8, HU3D_MOTATTR_LOOP); while(GetLotteryDrawWheelState() != 0) { HuPrcVSleep(); } @@ -1133,7 +1135,7 @@ static void ExecLotteryDraw(void) } } else { BoardAudSeqPause(1, 1, 1000); - BoardModelMotionShiftSet(hostMdl, hostMot[3], 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[3], 0, 8, HU3D_MOTATTR_LOOP); stream = HuAudSStreamPlay(10); while(HuAudSStreamStatGet(stream)) { HuPrcVSleep(); @@ -1164,11 +1166,11 @@ static void ExecLotteryDraw(void) HuPrcVSleep(); } BoardPlayerIdleSet(player); - BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, HU3D_MOTATTR_LOOP); while(!CheckHostMove()) { HuPrcVSleep(); } - BoardModelMotionShiftSet(hostMdl, 1, 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0, 8, HU3D_MOTATTR_LOOP); BoardStatusShowSetForce(player); BoardStatusShowSet(player, 1); BoardPlayerMotBlendSet(player, 0, 7); @@ -1178,7 +1180,7 @@ static void ExecLotteryDraw(void) BoardWinCreate(2, 6+messBase, BoardWinPortraitGetStar()); BoardWinWait(); BoardAudSeqPause(1, 1, 1000); - BoardModelMotionShiftSet(hostMdl, hostMot[1], 0, 8, 0); + BoardModelMotionShiftSet(hostMdl, hostMot[1], 0, 8, HU3D_MOTATTR_NONE); star_pos.x = host_start.x; star_pos.y = 60.0f+host_start.y; star_pos.z = host_start.z; @@ -1188,11 +1190,11 @@ static void ExecLotteryDraw(void) BoardStatusShowSet(player, 0); StartHostMove(&host_start, &host_end, 25); BoardPlayerPosLerpStart(player, &player_start, &player_end, 25); - BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, HU3D_MOTATTR_LOOP); while(!CheckHostMove()) { HuPrcVSleep(); } - BoardModelMotionShiftSet(hostMdl, 1, 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, 1, 0, 8, HU3D_MOTATTR_LOOP); while(GWPlayer[player].moving) { HuPrcVSleep(); } @@ -1330,7 +1332,7 @@ static void UpdateLotteryTicket(omObjData *object) switch(work->state) { case 2: if(work->angle < 540) { - float scale = 0.4f+(0.1f*sin(M_PI*(float)(work->angle%180)/180.0)); + float scale = 0.4f+(0.1f*sind((float)(work->angle%180))); HuSprGrpScaleSet(work->group, scale, scale); work->angle += 9; } else { @@ -1511,10 +1513,10 @@ static void StartHostMove(Vec *from, Vec *to, s16 time) omSetTra(object, from->x, from->y, from->z); omSetRot(object, (to->x-from->x)/duration, 0.0f, (to->z-from->z)/duration); omSetSca(object, to->x, to->y, to->z); - angle = 180.0*(atan2(object->rot.x, object->rot.z)/M_PI); + angle = atan2d(object->rot.x, object->rot.z); work->angle = 0; OSf32tos16(&angle, &work->angle_end); - BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, 0x40000001); + BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(hostMdl, 3.0f); } @@ -1578,7 +1580,7 @@ static s32 CheckHostMove(void) static void CreateStopWin(void) { - s32 mess = 0x120011; + s32 mess = MAKE_MESSID(0x12, 0x11); float size[2]; float pos_x, pos_y; HuWinMesMaxSizeGet(1, size, mess); @@ -1986,4 +1988,4 @@ static void UpdateTeamResult(omObjData *object) HuSprGrpPosSet(work->group[0], object->trans.x, object->trans.y); HuSprGrpPosSet(work->group[1], object->rot.x, object->rot.y); } -} \ No newline at end of file +} diff --git a/src/game/board/lottery.c b/src/game/board/lottery.c index 9e307af2..f64992f4 100755 --- a/src/game/board/lottery.c +++ b/src/game/board/lottery.c @@ -503,10 +503,10 @@ static void ExecLottery(void) { lotterySpace = BoardSpaceLinkFlagSearch(0, temp_r28, 0x02000000); BoardSpacePosGet(0, temp_r28, &sp38); BoardSpacePosGet(0, lotterySpace, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); if (GWBoardGet() == BOARD_ID_MAIN3 || GWBoardGet() == BOARD_ID_MAIN4) { - PSVECScale(&sp20, &sp20, 0.95f); - PSVECAdd(&sp20, &sp38, &sp2C); + VECScale(&sp20, &sp20, 0.95f); + VECAdd(&sp20, &sp38, &sp2C); } temp_r26 = atan2d(-sp20.x, -sp20.z); if (BoardPlayerSizeGet(temp_r31) == 1) { @@ -533,7 +533,7 @@ static void ExecLottery(void) { while (!BoardModelMotionEndCheck(lotteryMdl[0])) { HuPrcVSleep(); } - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[3], 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); BoardPlayerRotSet(temp_r31, 0.0f, temp_r26, 0.0f); BoardPlayerPosLerpStart(temp_r31, &sp38, &sp2C, 0x14); while (GWPlayer[temp_r31].moving) { @@ -546,8 +546,8 @@ static void ExecLottery(void) { for (i = 0; i < 4; i++) { if (i != temp_r31) { BoardPlayerPosGet(i, &sp38); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); BoardPlayerMotBlendSet(i, atan2d(sp20.x, sp20.z), 7); } } @@ -556,7 +556,7 @@ static void ExecLottery(void) { while (!BoardStatusStopCheck(temp_r31)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[0], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); if (GWPlayer[temp_r31].draw_ticket == 0 && GWSystem.max_turn - GWSystem.turn >= 5) { SetupTicket(temp_r31); ShowTicket(); @@ -620,7 +620,7 @@ static void DoMiniJumpUp(s32 arg0) { temp_f29 = BoardPlayerMotionMaxTimeGet(arg0); BoardPlayerPosGet(arg0, &sp1C); sp28.y += 52.5308f; - PSVECSubtract(&sp28, &sp1C, &sp10); + VECSubtract(&sp28, &sp1C, &sp10); sp10.x /= temp_f29; sp10.z /= temp_f29; sp10.y /= temp_f29; @@ -653,7 +653,7 @@ static void DoMiniJumpDown(s32 arg0) { BoardPlayerPosGet(arg0, &sp18); BoardSpacePosGet(0, lotterySpace, &sp24); - PSVECSubtract(&sp24, &sp18, &spC); + VECSubtract(&sp24, &sp18, &spC); BoardPlayerMotionStart(arg0, 4, 0); spC.x /= 30.0f; spC.z /= 30.0f; @@ -833,7 +833,7 @@ static void LotteryInlineFunc00(s32 arg0, s32 arg1) { temp_f30 = 4.0f; if (lotterySpr == -1) { lotterySpr = espEntry(sp20[arg0], 30001, 0); - espAttrSet(lotterySpr, 1); + espAttrSet(lotterySpr, HUSPR_ATTR_NOANIM); } } else { sp34.y = (sp10[arg0] / 2) + 40; @@ -902,7 +902,7 @@ static void ExecBallGame(void) { BoardModelMotionTimeSet(lotteryMdl[1], 0.0f); BoardModelAttrSet(gripMdl[0], 0x40000001); BoardModelAttrSet(gripMdl[1], 0x40000001); - BoardPlayerMotionShiftSet(temp_r27, turnMot, 0.0f, 8.0f, 0x40000001); + BoardPlayerMotionShiftSet(temp_r27, turnMot, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); BoardPlayerMotionSpeedSet(temp_r27, 0.0f); temp_f24 = BoardModelMotionMaxTimeGet(lotteryMdl[1]); temp_f24 -= 4.0f; @@ -1049,7 +1049,7 @@ static void ExecBallPrize(void) { 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); Hu3DMtxTransGet(sp3C, &spC); - PSVECAdd(&spC, &sp30, &sp30); + VECAdd(&spC, &sp30, &sp30); BoardModelVisibilitySet(temp_r29, 1); sp24.x = 10.5f; sp24.y = -3.0f; @@ -1065,7 +1065,7 @@ static void ExecBallPrize(void) { sp24.y -= temp_f26; sp24.x *= 0.92f; sp24.z *= 0.92f; - PSVECAdd(&sp24, &sp30, &sp30); + VECAdd(&sp24, &sp30, &sp30); var_f29 += sp24.z; if (sp30.y - 25.0f < temp_f28) { if (var_r28 == 0) { @@ -1294,13 +1294,13 @@ static void ExecScratchSpr(omObjData *arg0) { sp14.y = arg0->trans.y; sp20.x = arg0->rot.x; sp20.y = arg0->rot.y; - PSVECSubtract(&sp14, &sp20, &sp8); + VECSubtract(&sp14, &sp20, &sp8); if (ABS(sp8.x) < 1.0f && ABS(sp8.y) < 1.0f) { sp8 = sp14; temp_r30->unk00_field1 = 1; } else { - PSVECScale(&sp8, &sp8, 0.2f); - PSVECAdd(&sp20, &sp8, &sp8); + VECScale(&sp8, &sp8, 0.2f); + VECAdd(&sp20, &sp8, &sp8); temp_r30->unk00_field1 = 0; } HuSprPosSet(ticketSprGrp, temp_r30->unk00_field2, sp8.x, sp8.y); @@ -1589,16 +1589,16 @@ static s32 TicketUpdate(AnimBmpData *arg0, Vec *arg1, s32 arg2) { if (handUpdateF == 0) { handUpdateF = 1; } - PSVECNormalize(&sp48, &sp48); + VECNormalize(&sp48, &sp48); temp_f20 = atan2f(sp48.x, -sp48.y); sp48.x = sin(temp_f20); sp48.y = cos(temp_f20); - temp_f25 = 127.0f * PSVECMag(&sp48); + temp_f25 = 127.0f * VECMag(&sp48); OSf32tos8(&temp_f25, &spD); HuAudFXVolSet(arg2, spD); sp48.x *= 8.0f; sp48.y *= 8.0f; - PSVECAdd(&sp48, arg1, &sp3C); + VECAdd(&sp48, arg1, &sp3C); var_r18 = 0; if (sp3C.x < 192.0f) { sp3C.x = 192.0f; @@ -1878,7 +1878,7 @@ static void ExecPrize(void) { HuAudFXPlay(0x332); } if (var_r29 == 7) { - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); } if (var_r26 != 0) { BoardPlayerPosGet(temp_r30, &sp8); @@ -1922,7 +1922,7 @@ static void ExecPrize(void) { HuAudFXPlay(loseSoundTbl[GWPlayer[temp_r30].character]); BoardPlayerVoiceEnableSet(temp_r30, var_r29, 0); } - BoardPlayerMotionShiftSet(temp_r30, var_r29, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(temp_r30, var_r29, 0.0f, 8.0f, HU3D_MOTATTR_NONE); switch (var_r31) { case 0: case 1: @@ -1951,7 +1951,7 @@ static void ExecPrize(void) { } else { var_r28 = lotteryMessBase + 8; } - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[2], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[2], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardWinCreate(2, var_r28, BoardWinPortraitGet()); BoardWinWait(); BoardWinKill(); @@ -1968,7 +1968,7 @@ static void ExecLose(s32 arg0) { temp_r30 = GWPlayer[arg0].character; loseMot = BoardPlayerMotionCreate(arg0, loseMotTbl[temp_r30]); - BoardPlayerMotionShiftSet(arg0, loseMot, 0.0f, 10.0f, 0); + BoardPlayerMotionShiftSet(arg0, loseMot, 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(10); while (!BoardPlayerMotionEndCheck(arg0)) { HuPrcVSleep(); @@ -2027,8 +2027,8 @@ void BoardLotteryTutorialExec(void) { temp_r29 = BoardSpaceLinkFlagSearch(0, temp_r31, 0x02000000); BoardSpacePosGet(0, temp_r31, &sp38); BoardSpacePosGet(0, temp_r29, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); temp_r28 = atan2d(-sp20.x, -sp20.z); sp14.x = -3.0f; sp14.y = temp_r28; @@ -2043,14 +2043,14 @@ void BoardLotteryTutorialExec(void) { while (!BoardModelMotionEndCheck(lotteryMdl[0])) { HuPrcVSleep(); } - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[3], 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(10); while (!BoardModelMotionEndCheck(BoardShopHostGet())) { HuPrcVSleep(); } - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[0], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardTutorialHookExec(0x1C, 0); - BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[2], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[2], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(30); BoardModelMotionStart(lotteryMdl[0], 0, 0x40000004); while (!BoardModelMotionEndCheck(lotteryMdl[0])) { diff --git a/src/game/board/main.c b/src/game/board/main.c index 9aaa66a1..1ce8c180 100644 --- a/src/game/board/main.c +++ b/src/game/board/main.c @@ -1,5 +1,5 @@ #include "game/gamework_data.h" -#include "math.h" +#include "ext_math.h" #include "game/object.h" #include "game/flag.h" #include "game/data.h" @@ -19,12 +19,13 @@ #include "game/board/tutorial.h" #include "game/board/ui.h" #include "game/pad.h" +#include "game/disp.h" #include "game/msm.h" typedef struct camera_view { - s16 x_rot; - s16 zoom; - s16 fov; + s16 x_rot; + s16 zoom; + s16 fov; } CameraView; omObjData *boardMainObj; @@ -53,12 +54,12 @@ static BoardCameraData cameraBackup; static OverlayID nextOvl = OVL_INVALID; static CameraView camViewTbl[] = { - { 0, 0, 25 }, - { -33, 3200, 25 }, - { -33, 2100, 25 }, - { -33, 1800, 25 }, - { -33, 12640, 25 }, - { -33, 3200, 25 }, + { 0, 0, 25 }, + { -33, 3200, 25 }, + { -33, 2100, 25 }, + { -33, 1800, 25 }, + { -33, 12640, 25 }, + { -33, 3200, 25 }, }; @@ -82,1178 +83,1181 @@ static void DestroyBoard(void); void BoardObjectSetup(BoardFunc create, BoardFunc destroy) { - omSysPauseEnable(FALSE); - if(!_CheckFlag(FLAG_ID_MAKE(1, 0))) { - _SetFlag(FLAG_ID_MAKE(1, 0)); - _ClearFlag(FLAG_ID_MAKE(2, 1)); - _ClearFlag(FLAG_ID_MAKE(2, 3)); - _ClearFlag(FLAG_ID_MAKE(2, 0)); - _ClearFlag(FLAG_ID_MAKE(2, 2)); - _ClearFlag(FLAG_ID_MAKE(2, 4)); - _ClearFlag(FLAG_ID_MAKE(2, 5)); - _ClearFlag(FLAG_ID_MAKE(1, 6)); - _ClearFlag(FLAG_ID_MAKE(1, 9)); - _ClearFlag(FLAG_ID_MAKE(0, 8)); - _ClearFlag(FLAG_ID_MAKE(0, 10)); - BoardMGSetupPlayClear(); - } - - nextOvl = OVL_INVALID; - _SetFlag(FLAG_ID_MAKE(1, 28)); - _SetFlag(FLAG_ID_MAKE(1, 14)); - _ClearFlag(FLAG_ID_MAKE(1, 16)); - _ClearFlag(FLAG_ID_MAKE(1, 17)); - _ClearFlag(FLAG_ID_MAKE(1, 18)); - _ClearFlag(FLAG_ID_MAKE(1, 19)); - _ClearFlag(FLAG_ID_MAKE(1, 20)); - _ClearFlag(FLAG_ID_MAKE(1, 21)); - _ClearFlag(FLAG_ID_MAKE(1, 23)); - _ClearFlag(FLAG_ID_MAKE(1, 24)); - _ClearFlag(FLAG_ID_MAKE(1, 25)); - _ClearFlag(FLAG_ID_MAKE(1, 27)); - createFunc = create; - destroyFunc = destroy; - boardTurnFunc = NULL; - boardStarShowNextHook = NULL; - boardBowserHook = NULL; - boardStarGiveHook = NULL; - boardTurnStartFunc = NULL; - boardObjMan = omInitObjMan(64, 8192); - omSystemKeyCheckSetup(boardObjMan); - boardMainObj = omAddObjEx(boardObjMan, 0, 0, 0, -1, InitBoardFunc); - switch(omcurovl) { - case OVL_W01: - GWSystem.board = BOARD_ID_MAIN1; - break; - - case OVL_W02: - GWSystem.board = BOARD_ID_MAIN2; - break; - - case OVL_W03: - GWSystem.board = BOARD_ID_MAIN3; - break; - - case OVL_W04: - GWSystem.board = BOARD_ID_MAIN4; - break; - - case OVL_W05: - GWSystem.board = BOARD_ID_MAIN5; - break; - - case OVL_W06: - GWSystem.board = BOARD_ID_MAIN6; - break; - - case OVL_W10: - GWSystem.board = BOARD_ID_TUTORIAL; - break; - - case OVL_W20: - GWSystem.board = BOARD_ID_EXTRA1; - break; - - case OVL_W21: - GWSystem.board = BOARD_ID_EXTRA2; - break; - } + omSysPauseEnable(FALSE); + if(!_CheckFlag(FLAG_ID_MAKE(1, 0))) { + _SetFlag(FLAG_ID_MAKE(1, 0)); + _ClearFlag(FLAG_ID_MAKE(2, 1)); + _ClearFlag(FLAG_ID_MAKE(2, 3)); + _ClearFlag(FLAG_ID_MAKE(2, 0)); + _ClearFlag(FLAG_ID_MAKE(2, 2)); + _ClearFlag(FLAG_ID_MAKE(2, 4)); + _ClearFlag(FLAG_ID_MAKE(2, 5)); + _ClearFlag(FLAG_ID_MAKE(1, 6)); + _ClearFlag(FLAG_ID_MAKE(1, 9)); + _ClearFlag(FLAG_ID_MAKE(0, 8)); + _ClearFlag(FLAG_ID_MAKE(0, 10)); + BoardMGSetupPlayClear(); + } + + nextOvl = OVL_INVALID; + _SetFlag(FLAG_ID_MAKE(1, 28)); + _SetFlag(FLAG_ID_MAKE(1, 14)); + _ClearFlag(FLAG_ID_MAKE(1, 16)); + _ClearFlag(FLAG_ID_MAKE(1, 17)); + _ClearFlag(FLAG_ID_MAKE(1, 18)); + _ClearFlag(FLAG_ID_MAKE(1, 19)); + _ClearFlag(FLAG_ID_MAKE(1, 20)); + _ClearFlag(FLAG_ID_MAKE(1, 21)); + _ClearFlag(FLAG_ID_MAKE(1, 23)); + _ClearFlag(FLAG_ID_MAKE(1, 24)); + _ClearFlag(FLAG_ID_MAKE(1, 25)); + _ClearFlag(FLAG_ID_MAKE(1, 27)); + createFunc = create; + destroyFunc = destroy; + boardTurnFunc = NULL; + boardStarShowNextHook = NULL; + boardBowserHook = NULL; + boardStarGiveHook = NULL; + boardTurnStartFunc = NULL; + boardObjMan = omInitObjMan(64, 8192); + omSystemKeyCheckSetup(boardObjMan); + boardMainObj = omAddObjEx(boardObjMan, 0, 0, 0, -1, InitBoardFunc); + switch(omcurovl) { + case OVL_W01: + GWSystem.board = BOARD_ID_MAIN1; + break; + + case OVL_W02: + GWSystem.board = BOARD_ID_MAIN2; + break; + + case OVL_W03: + GWSystem.board = BOARD_ID_MAIN3; + break; + + case OVL_W04: + GWSystem.board = BOARD_ID_MAIN4; + break; + + case OVL_W05: + GWSystem.board = BOARD_ID_MAIN5; + break; + + case OVL_W06: + GWSystem.board = BOARD_ID_MAIN6; + break; + + case OVL_W10: + GWSystem.board = BOARD_ID_TUTORIAL; + break; + + case OVL_W20: + GWSystem.board = BOARD_ID_EXTRA1; + break; + + case OVL_W21: + GWSystem.board = BOARD_ID_EXTRA2; + break; + } } static void InitBoardFunc(omObjData *object) { - boardMainProc = HuPrcChildCreate(MainFunc, 8194, 0x6000, 0, boardObjMan); - HuPrcDestructorSet2(boardMainProc, DestroyMainFunc); - object->func = ExecBoardFunc; + boardMainProc = HuPrcChildCreate(MainFunc, 8194, 0x6000, 0, boardObjMan); + HuPrcDestructorSet2(boardMainProc, DestroyMainFunc); + object->func = ExecBoardFunc; } static void ExecBoardFunc(omObjData *object) { - if(!_CheckFlag(FLAG_ID_MAKE(1, 16))) { - return; - } - if(!_CheckFlag(FLAG_ID_MAKE(1, 17))) { - if(omSysExitReq) { - BoardKill(); - } else { - if(BoardPauseReqCheck()) { - BoardPauseStart(); - } else { - return; - } - } - } else { - if(boardMainProc) { - HuPrcKill(boardMainProc); - } - object->func = KillBoardFunc; - } + if(!_CheckFlag(FLAG_ID_MAKE(1, 16))) { + return; + } + if(!_CheckFlag(FLAG_ID_MAKE(1, 17))) { + if(omSysExitReq) { + BoardKill(); + } else { + if(BoardPauseReqCheck()) { + BoardPauseStart(); + } else { + return; + } + } + } else { + if(boardMainProc) { + HuPrcKill(boardMainProc); + } + object->func = KillBoardFunc; + } } static void KillBoardFunc(omObjData *object) { - if(boardMainProc) { - return; - } - if(WipeStatGet()) { - return; - return_alt: - return; - } else { - if(HuARDMACheck()) { - goto return_alt; - } - if(nextOvl != OVL_INVALID) { - omOvlCallEx(nextOvl, 1, 0, 0); - } else { - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialKill(); - BoardTutorialWorkRestore(); - } - _ClearFlag(FLAG_ID_MAKE(1, 0)); - HuARDirFree(DATADIR_BOARD); - if(_CheckFlag(FLAG_ID_MAKE(1, 27))) { - omOvlReturnEx(2, 1); - } else { - omOvlReturnEx(1, 1); - } - } - } + if(boardMainProc) { + return; + } + if(WipeStatGet()) { + return; + return_alt: + return; + } else { + if(HuARDMACheck()) { + goto return_alt; + } + if(nextOvl != OVL_INVALID) { + omOvlCallEx(nextOvl, 1, 0, 0); + } else { + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialKill(); + BoardTutorialWorkRestore(); + } + _ClearFlag(FLAG_ID_MAKE(1, 0)); + HuARDirFree(DATADIR_BOARD); + if(_CheckFlag(FLAG_ID_MAKE(1, 27))) { + omOvlReturnEx(2, 1); + } else { + omOvlReturnEx(1, 1); + } + } + } } void BoardKill(void) { - _SetFlag(FLAG_ID_MAKE(1, 28)); - _SetFlag(FLAG_ID_MAKE(1, 14)); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialHookExec(29, 0); - } - HuAudFXAllStop(); - if(!BoardStartCheck()) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - boardTutorialF = 1; - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - _SetFlag(FLAG_ID_MAKE(1, 17)); - HuPrcKill(boardMainProc); - DestroyBoard(); + _SetFlag(FLAG_ID_MAKE(1, 28)); + _SetFlag(FLAG_ID_MAKE(1, 14)); + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialHookExec(29, 0); + } + HuAudFXAllStop(); + if(!BoardStartCheck()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + boardTutorialF = 1; + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + _SetFlag(FLAG_ID_MAKE(1, 17)); + HuPrcKill(boardMainProc); + DestroyBoard(); } s32 BoardIsKill(void) { - return (_CheckFlag(FLAG_ID_MAKE(1, 17))) ? 1 : 0; + return (_CheckFlag(FLAG_ID_MAKE(1, 17))) ? 1 : 0; } void BoardPauseDisableSet(s32 value) { - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - _SetFlag(FLAG_ID_MAKE(1, 25)); - omSysPauseEnable(FALSE); - } else { - if(value) { - _SetFlag(FLAG_ID_MAKE(1, 25)); - } else { - _ClearFlag(FLAG_ID_MAKE(1, 25)); - } - } + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + _SetFlag(FLAG_ID_MAKE(1, 25)); + omSysPauseEnable(FALSE); + } else { + if(value) { + _SetFlag(FLAG_ID_MAKE(1, 25)); + } else { + _ClearFlag(FLAG_ID_MAKE(1, 25)); + } + } } s32 BoardPauseDisableGet() { - return (_CheckFlag(FLAG_ID_MAKE(1, 25))) ? 1 : 0; + return (_CheckFlag(FLAG_ID_MAKE(1, 25))) ? 1 : 0; } void BoardSaveInit(s32 board) { - s32 i; - GWSystem.board = board; - _ClearFlag(FLAG_ID_MAKE(1, 0)); - _ClearFlag(FLAG_ID_MAKE(1, 1)); - _ClearFlag(FLAG_ID_MAKE(1, 5)); - _ClearFlag(FLAG_ID_MAKE(1, 4)); - _ClearFlag(FLAG_ID_MAKE(1, 6)); - _ClearFlag(FLAG_ID_MAKE(1, 2)); - _ClearFlag(FLAG_ID_MAKE(1, 9)); - _ClearFlag(FLAG_ID_MAKE(1, 7)); - _ClearFlag(FLAG_ID_MAKE(1, 8)); - _ClearFlag(FLAG_ID_MAKE(0, 8)); - _ClearFlag(FLAG_ID_MAKE(1, 12)); - _ClearFlag(FLAG_ID_MAKE(1, 3)); - GWSystem.turn = 1; - GWSystem.star_flag = 0; - GWSystem.star_pos = 0; - GWSystem.star_total = 1; - GWSystem.last5_effect = 0; - GWSystem.player_curr = -1; - GWSystem.bowser_loss = 0; - GWSystem.bowser_event = 0; - GWSystem.lucky_value = 1; - GWSystem.mg_next = 0; - GWMGTypeSet(0); - GWSystem.unk_38 = 0; - GWSystem.block_pos = 0; - memset(GWSystem.board_data, 0, sizeof(GWSystem.board_data)); - for(i=0; i<4; i++) { - s32 party_flag; - BoardPlayerAutoSizeSet(i, 0); - GWPlayer[i].draw_ticket = 0; - GWPlayer[i].color = 0; - GWPlayer[i].bowser_suit = 0; - GWPlayer[i].jump = 0; - GWPlayer[i].space_shock = 0; - GWPlayer[i].spark = 0; - GWPlayer[i].show_next = 1; - BoardPlayerCoinsSet(i, 0); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - GWSystem.team = 0; - } - GWPlayer[i].blue_count = 0; - GWPlayer[i].red_count = 0; - GWPlayer[i].question_count = 0; - GWPlayer[i].fortune_count = 0; - GWPlayer[i].bowser_count = 0; - GWPlayer[i].battle_count = 0; - GWPlayer[i].mushroom_count = 0; - GWPlayer[i].warp_count = 0; - GWPlayer[i].coins_mg = 0; - GWPlayer[i].coins_total = 0; - GWPlayer[i].coins_max = 0; - GWPlayer[i].stars_max = 0; - GWPlayer[i].coins_battle = 0; - GWPlayer[i].coin_collect = 0; - GWPlayer[i].coin_win = 0; - GWPlayer[i].items[0] = -1; - GWPlayer[i].items[1] = -1; - GWPlayer[i].items[2] = -1; - if(GWPartyGet() == 0 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { - GWStarsSet(i, 0); - } else { - GWStarsSet(i, BoardPlayerHandicapGet(i)); - } - } + s32 i; + GWSystem.board = board; + _ClearFlag(FLAG_ID_MAKE(1, 0)); + _ClearFlag(FLAG_ID_MAKE(1, 1)); + _ClearFlag(FLAG_ID_MAKE(1, 5)); + _ClearFlag(FLAG_ID_MAKE(1, 4)); + _ClearFlag(FLAG_ID_MAKE(1, 6)); + _ClearFlag(FLAG_ID_MAKE(1, 2)); + _ClearFlag(FLAG_ID_MAKE(1, 9)); + _ClearFlag(FLAG_ID_MAKE(1, 7)); + _ClearFlag(FLAG_ID_MAKE(1, 8)); + _ClearFlag(FLAG_ID_MAKE(0, 8)); + _ClearFlag(FLAG_ID_MAKE(1, 12)); + _ClearFlag(FLAG_ID_MAKE(1, 3)); + GWSystem.turn = 1; + GWSystem.star_flag = 0; + GWSystem.star_pos = 0; + GWSystem.star_total = 1; + GWSystem.last5_effect = 0; + GWSystem.player_curr = -1; + GWSystem.bowser_loss = 0; + GWSystem.bowser_event = 0; + GWSystem.lucky_value = 1; + GWSystem.mg_next = 0; + GWMGTypeSet(0); + GWSystem.unk_38 = 0; + GWSystem.block_pos = 0; + memset(GWSystem.board_data, 0, sizeof(GWSystem.board_data)); + for(i=0; i<4; i++) { + s32 party_flag; + BoardPlayerAutoSizeSet(i, 0); + GWPlayer[i].draw_ticket = 0; + GWPlayer[i].color = 0; + GWPlayer[i].bowser_suit = 0; + GWPlayer[i].jump = 0; + GWPlayer[i].space_shock = 0; + GWPlayer[i].spark = 0; + GWPlayer[i].show_next = 1; + BoardPlayerCoinsSet(i, 0); + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + GWSystem.team = 0; + } + GWPlayer[i].blue_count = 0; + GWPlayer[i].red_count = 0; + GWPlayer[i].question_count = 0; + GWPlayer[i].fortune_count = 0; + GWPlayer[i].bowser_count = 0; + GWPlayer[i].battle_count = 0; + GWPlayer[i].mushroom_count = 0; + GWPlayer[i].warp_count = 0; + GWPlayer[i].coins_mg = 0; + GWPlayer[i].coins_total = 0; + GWPlayer[i].coins_max = 0; + GWPlayer[i].stars_max = 0; + GWPlayer[i].coins_battle = 0; + GWPlayer[i].coin_collect = 0; + GWPlayer[i].coin_win = 0; + GWPlayer[i].items[0] = -1; + GWPlayer[i].items[1] = -1; + GWPlayer[i].items[2] = -1; + if(GWPartyGet() == 0 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { + GWStarsSet(i, 0); + } else { + GWStarsSet(i, BoardPlayerHandicapGet(i)); + } + } } void BoardStoryConfigSet(s32 mg_list, s32 diff_story) { - GWSystem.party = 0; - GWSystem.team = 0; - GWSystem.diff_story = diff_story; - GWSystem.bonus_star = 0; - GWMGListSet(mg_list); - GWPlayer[0].handicap = 0; - GWPlayer[1].handicap = 0; - GWPlayer[2].handicap = 0; - GWPlayer[3].handicap = 0; - GWSystem.max_turn = 15; - memset(GWPlayer, 0, 4*sizeof(PlayerState)); - _ClearFlag(FLAG_ID_MAKE(0, 2)); - _ClearFlag(FLAG_ID_MAKE(0, 3)); - _ClearFlag(FLAG_ID_MAKE(0, 4)); - _ClearFlag(FLAG_ID_MAKE(0, 5)); - _ClearFlag(FLAG_ID_MAKE(0, 6)); - _ClearFlag(FLAG_ID_MAKE(0, 7)); - _ClearFlag(FLAG_ID_MAKE(1, 11)); - _SetFlag(FLAG_ID_MAKE(0, 11)); - _SetFlag(FLAG_ID_MAKE(1, 10)); + GWSystem.party = 0; + GWSystem.team = 0; + GWSystem.diff_story = diff_story; + GWSystem.bonus_star = 0; + GWMGListSet(mg_list); + GWPlayer[0].handicap = 0; + GWPlayer[1].handicap = 0; + GWPlayer[2].handicap = 0; + GWPlayer[3].handicap = 0; + GWSystem.max_turn = 15; + memset(GWPlayer, 0, 4*sizeof(PlayerState)); + _ClearFlag(FLAG_ID_MAKE(0, 2)); + _ClearFlag(FLAG_ID_MAKE(0, 3)); + _ClearFlag(FLAG_ID_MAKE(0, 4)); + _ClearFlag(FLAG_ID_MAKE(0, 5)); + _ClearFlag(FLAG_ID_MAKE(0, 6)); + _ClearFlag(FLAG_ID_MAKE(0, 7)); + _ClearFlag(FLAG_ID_MAKE(1, 11)); + _SetFlag(FLAG_ID_MAKE(0, 11)); + _SetFlag(FLAG_ID_MAKE(1, 10)); } void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap) { - GWSystem.party = 1; - GWSystem.team = team; - GWSystem.diff_story = 0; - GWSystem.bonus_star = bonus_star; - GWMGListSet(mg_list); - GWSystem.max_turn = max_turn; - memset(GWPlayer, 0, 4*sizeof(PlayerState)); - GWPlayer[0].handicap = p1_handicap; - GWPlayer[1].handicap = p2_handicap; - GWPlayer[2].handicap = p3_handicap; - GWPlayer[3].handicap = p4_handicap; - _ClearFlag(FLAG_ID_MAKE(1, 11)); - _SetFlag(FLAG_ID_MAKE(0, 11)); - _SetFlag(FLAG_ID_MAKE(1, 10)); + GWSystem.party = 1; + GWSystem.team = team; + GWSystem.diff_story = 0; + GWSystem.bonus_star = bonus_star; + GWMGListSet(mg_list); + GWSystem.max_turn = max_turn; + memset(GWPlayer, 0, 4*sizeof(PlayerState)); + GWPlayer[0].handicap = p1_handicap; + GWPlayer[1].handicap = p2_handicap; + GWPlayer[2].handicap = p3_handicap; + GWPlayer[3].handicap = p4_handicap; + _ClearFlag(FLAG_ID_MAKE(1, 11)); + _SetFlag(FLAG_ID_MAKE(0, 11)); + _SetFlag(FLAG_ID_MAKE(1, 10)); } static void DestroyMainFunc(void) { - boardMainProc = NULL; + boardMainProc = NULL; } #define CHECK_LAST5_TURN() ((s32)(GWSystem.max_turn-GWSystem.turn) < 5) static void MainFunc(void) { - s32 i; - s32 fade_enable, turn_cont, fade_type; - fade_enable = 0; - turn_cont = 0; - BoardPauseDisableSet(1); - if(_CheckFlag(FLAG_ID_MAKE(0, 10))) { - _ClearFlag(FLAG_ID_MAKE(0, 10)); - _SetFlag(FLAG_ID_MAKE(1, 16)); - BoardKill(); - HuPrcSleep(-1); - } - _ClearFlag(FLAG_ID_MAKE(0, 10)); - BoardTutorialInit(); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialWorkSave(); - BoardTutorialPlayerInit(); - GWSystem.mess_speed = 1; - GWSystem.mess_delay = 32; - } - CreateBoard(); - if(!_CheckFlag(FLAG_ID_MAKE(1, 1))) { - GWSystem.player_curr = -1; - BoardStartExec(); - GWSystem.player_curr = 0; - fade_enable = 1; - _SetFlag(FLAG_ID_MAKE(1, 1)); - } else { - fade_enable = 0; - } - if(ExecTurnStart()) { - turn_cont = 1; - } - if(CHECK_LAST5_TURN() && GWSystem.player_curr == 0 && !turn_cont) { - if(!_CheckFlag(FLAG_ID_MAKE(0, 8))) { - BoardLast5Exec(); - _SetFlag(FLAG_ID_MAKE(0, 8)); - } else { - BoardLast5GfxInit(); - } - } - if(!turn_cont) { - fade_type = 1; - } else { - fade_type = 0; - } - _ClearFlag(FLAG_ID_MAKE(1, 28)); - do { - BoardStatusShowSetAll(1); - if(GWBoardGet() == BOARD_ID_MAIN6 && GWSystem.player_curr == 0 && !turn_cont && boardTurnFunc) { - GWSystem.player_curr = -1; - boardTurnFunc(); - GWSystem.player_curr = 0; - } - BoardMusStartBoard(); - for(i=GWSystem.player_curr; i<4; i++) { - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - if(CHECK_LAST5_TURN() && i == 0 && !turn_cont) { - BoardLast5GfxInit(); - _SetFlag(FLAG_ID_MAKE(0, 8)); - } - } - if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { - BoardPlayerTurnExec(i); - } else { - if(!turn_cont) { - BoardCameraMoveSet(0); - GWSystem.player_curr = i; - BoardCameraTargetPlayerSet(i); - BoardCameraMotionWait(); - { - Vec pos; - BoardSpacePosGet(0, GWPlayer[i].space_curr, &pos); - BoardPlayerPosSetV(i, &pos); - } - while(WipeStatGet()) { - HuPrcVSleep(); - } - if(!fade_enable) { - if(!fade_type) { - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } else { - fade_type = 0; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - } else { - fade_enable = 0; - } - BoardPlayerTurnExec(i); - } - } - turn_cont = 0; - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialHookExec(9, 0); - } - if(i != 3 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); - fade_type = 0; - } else { - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - if(GWSystem.turn != GWSystem.max_turn) { - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); - fade_type = 0; - } - } else { - WipeColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - } - BoardPlayerPostTurnHookExec(i); - } - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - GWSystem.player_curr = 0; - if(BoardTurnNext()) { - BoardAudSeqFadeOut(0, 500); - BoardKill(); - HuPrcEnd(); - HuPrcSleep(-1); - } - } else { - _SetFlag(FLAG_ID_MAKE(1, 28)); - _SetFlag(FLAG_ID_MAKE(1, 14)); - BoardPauseDisableSet(1); - _ClearFlag(FLAG_ID_MAKE(1, 9)); - if(_CheckFlag(FLAG_ID_MAKE(2, 0)) || _CheckFlag(FLAG_ID_MAKE(1, 11)) ) { - for(i=0; i<4; i++) { - GWPlayer[i].color = 0; - } - GWSystem.player_curr = (GWSystem.player_curr+1)&3; - } else { - BoardMGSetupExec(); - HuPrcSleep(-1); - } - } - } while(1); + s32 i; + s32 fade_enable, turn_cont, fade_type; + fade_enable = 0; + turn_cont = 0; + BoardPauseDisableSet(1); + if(_CheckFlag(FLAG_ID_MAKE(0, 10))) { + _ClearFlag(FLAG_ID_MAKE(0, 10)); + _SetFlag(FLAG_ID_MAKE(1, 16)); + BoardKill(); + HuPrcSleep(-1); + } + _ClearFlag(FLAG_ID_MAKE(0, 10)); + BoardTutorialInit(); + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialWorkSave(); + BoardTutorialPlayerInit(); + #if VERSION_PAL + GWMessSpeedSet(3); + #else + GWMessSpeedSet(1); + #endif + } + CreateBoard(); + if(!_CheckFlag(FLAG_ID_MAKE(1, 1))) { + GWSystem.player_curr = -1; + BoardStartExec(); + GWSystem.player_curr = 0; + fade_enable = 1; + _SetFlag(FLAG_ID_MAKE(1, 1)); + } else { + fade_enable = 0; + } + if(ExecTurnStart()) { + turn_cont = 1; + } + if(CHECK_LAST5_TURN() && GWSystem.player_curr == 0 && !turn_cont) { + if(!_CheckFlag(FLAG_ID_MAKE(0, 8))) { + BoardLast5Exec(); + _SetFlag(FLAG_ID_MAKE(0, 8)); + } else { + BoardLast5GfxInit(); + } + } + if(!turn_cont) { + fade_type = 1; + } else { + fade_type = 0; + } + _ClearFlag(FLAG_ID_MAKE(1, 28)); + do { + BoardStatusShowSetAll(1); + if(GWBoardGet() == BOARD_ID_MAIN6 && GWSystem.player_curr == 0 && !turn_cont && boardTurnFunc) { + GWSystem.player_curr = -1; + boardTurnFunc(); + GWSystem.player_curr = 0; + } + BoardMusStartBoard(); + for(i=GWSystem.player_curr; i<4; i++) { + if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + if(CHECK_LAST5_TURN() && i == 0 && !turn_cont) { + BoardLast5GfxInit(); + _SetFlag(FLAG_ID_MAKE(0, 8)); + } + } + if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { + BoardPlayerTurnExec(i); + } else { + if(!turn_cont) { + BoardCameraMoveSet(0); + GWSystem.player_curr = i; + BoardCameraTargetPlayerSet(i); + BoardCameraMotionWait(); + { + Vec pos; + BoardSpacePosGet(0, GWPlayer[i].space_curr, &pos); + BoardPlayerPosSetV(i, &pos); + } + while(WipeStatGet()) { + HuPrcVSleep(); + } + if(!fade_enable) { + if(!fade_type) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } else { + fade_type = 0; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + } else { + fade_enable = 0; + } + BoardPlayerTurnExec(i); + } + } + turn_cont = 0; + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialHookExec(9, 0); + } + if(i != 3 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); + fade_type = 0; + } else { + if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + if(GWSystem.turn != GWSystem.max_turn) { + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); + fade_type = 0; + } + } else { + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + } + BoardPlayerPostTurnHookExec(i); + } + if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + GWSystem.player_curr = 0; + if(BoardTurnNext()) { + BoardAudSeqFadeOut(0, 500); + BoardKill(); + HuPrcEnd(); + HuPrcSleep(-1); + } + } else { + _SetFlag(FLAG_ID_MAKE(1, 28)); + _SetFlag(FLAG_ID_MAKE(1, 14)); + BoardPauseDisableSet(1); + _ClearFlag(FLAG_ID_MAKE(1, 9)); + if(_CheckFlag(FLAG_ID_MAKE(2, 0)) || _CheckFlag(FLAG_ID_MAKE(1, 11)) ) { + for(i=0; i<4; i++) { + GWPlayer[i].color = 0; + } + GWSystem.player_curr = (GWSystem.player_curr+1)&3; + } else { + BoardMGSetupExec(); + HuPrcSleep(-1); + } + } + } while(1); } s32 BoardTurnNext(void) { - s32 i; - for(i=0; i<4; i++) { - GWPlayer[i].color = 0; - } - GWSystem.turn++; - if(GWSystem.turn > GWSystem.max_turn) { - return 1; - } else { - return 0; - } + s32 i; + for(i=0; i<4; i++) { + GWPlayer[i].color = 0; + } + GWSystem.turn++; + if(GWSystem.turn > GWSystem.max_turn) { + return 1; + } else { + return 0; + } } static s32 ExecTurnStart(void) { - s32 player; - s32 space; - if(!BoardStartCheck()) { - return 0; - } - player = GWSystem.player_curr; - space = GWPlayer[player].space_curr; - if(_CheckFlag(FLAG_ID_MAKE(1, 5))) { - BoardFortuneExec(player, space); - _ClearFlag(FLAG_ID_MAKE(1, 5)); - } else if(_CheckFlag(FLAG_ID_MAKE(1, 4))) { - BoardMusStartBoard(); - BoardBattleExec(player, space); - _ClearFlag(FLAG_ID_MAKE(1, 4)); - } else if(_CheckFlag(FLAG_ID_MAKE(1, 3))) { - BoardBowserExec(player, space); - _ClearFlag(FLAG_ID_MAKE(1, 3)); - } else if(_CheckFlag(FLAG_ID_MAKE(1, 2))) { - s32 turn_end = 0; - BoardCameraMoveSet(0); - BoardCameraViewSet(2); - BoardCameraMotionWait(); - turn_end = BoardTurnNext(); - if(turn_end) { - BoardKill(); - HuPrcEnd(); - } - _ClearFlag(FLAG_ID_MAKE(1, 2)); - return 0; - } else if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { - boardTurnStartFunc(player, space); - return 1; - } - BoardPlayerZoomRestore(player); - return 1; + s32 player; + s32 space; + if(!BoardStartCheck()) { + return 0; + } + player = GWSystem.player_curr; + space = GWPlayer[player].space_curr; + if(_CheckFlag(FLAG_ID_MAKE(1, 5))) { + BoardFortuneExec(player, space); + _ClearFlag(FLAG_ID_MAKE(1, 5)); + } else if(_CheckFlag(FLAG_ID_MAKE(1, 4))) { + BoardMusStartBoard(); + BoardBattleExec(player, space); + _ClearFlag(FLAG_ID_MAKE(1, 4)); + } else if(_CheckFlag(FLAG_ID_MAKE(1, 3))) { + BoardBowserExec(player, space); + _ClearFlag(FLAG_ID_MAKE(1, 3)); + } else if(_CheckFlag(FLAG_ID_MAKE(1, 2))) { + s32 turn_end = 0; + BoardCameraMoveSet(0); + BoardCameraViewSet(2); + BoardCameraMotionWait(); + turn_end = BoardTurnNext(); + if(turn_end) { + BoardKill(); + HuPrcEnd(); + } + _ClearFlag(FLAG_ID_MAKE(1, 2)); + return 0; + } else if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { + boardTurnStartFunc(player, space); + return 1; + } + BoardPlayerZoomRestore(player); + return 1; } void BoardNextOvlSet(OverlayID overlay) { - nextOvl = overlay; - BoardAudSeqFadeOut(0, 1000); - BoardKill(); + nextOvl = overlay; + BoardAudSeqFadeOut(0, 1000); + BoardKill(); } s32 BoardStartCheck(void) { - if(_CheckFlag(FLAG_ID_MAKE(1, 2)) || _CheckFlag(FLAG_ID_MAKE(1, 3)) || _CheckFlag(FLAG_ID_MAKE(1, 4)) || _CheckFlag(FLAG_ID_MAKE(1, 5)) || _CheckFlag(FLAG_ID_MAKE(1, 6))) { - return 1; - } else { - return 0; - } + if(_CheckFlag(FLAG_ID_MAKE(1, 2)) || _CheckFlag(FLAG_ID_MAKE(1, 3)) || _CheckFlag(FLAG_ID_MAKE(1, 4)) || _CheckFlag(FLAG_ID_MAKE(1, 5)) || _CheckFlag(FLAG_ID_MAKE(1, 6))) { + return 1; + } else { + return 0; + } } static void CreateBoard(void) { - s32 guest_status; - - GWSystem.mg_next = -1; - if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) { - GWMGListSet(0); - } - GWMessSpeedSet(GWMessSpeedGet()); - if(GWMGExplainGet()) { - _SetFlag(FLAG_ID_MAKE(0, 11)); - } else { - _ClearFlag(FLAG_ID_MAKE(0, 11)); - } - if(!BoardStartCheck()) { - _ClearFlag(FLAG_ID_MAKE(1, 2)); - _ClearFlag(FLAG_ID_MAKE(1, 3)); - _ClearFlag(FLAG_ID_MAKE(1, 4)); - _ClearFlag(FLAG_ID_MAKE(1, 5)); - _ClearFlag(FLAG_ID_MAKE(1, 6)); - } - _ClearFlag(FLAG_ID_MAKE(1, 8)); - if(!BoardStartCheck()) { - GWSystem.lucky_value = 1; - } - guest_status = BoardDataDirReadAsync(DATADIR_BGUEST); - if(guest_status != -1) { - BoardDataAsyncWait(guest_status); - } - BoardAudSeqClear(); - BoardModelInit(); - BoardRandInit(); - BoardWinInit(); - BoardPlayerModelInit(); - createFunc(); - BoardLightSetExec(); - BoardLotteryInit(); - BoardShopInit(); - BoardBooHouseCreate(); - BoardCameraInit(); - BoardStatusCreate(); - CharModelDataClose(-1); - BoardPlayerInit(); - if(GWSystem.last5_effect == 2) { - BoardSpaceTypeForce(2, 3); - } - if(GWSystem.last5_effect == 3) { - BoardSpaceTypeForce(2, 7); - } - BoardCameraMoveSet(0); - BoardCameraTargetPlayerSet(0); - BoardCameraViewSet(2); - BoardCameraMotionWait(); - BoardTauntInit(); - _SetFlag(FLAG_ID_MAKE(1, 14)); - HuDataDirClose(DATADIR_BKOOPASUIT); - HuDataDirClose(DATADIR_BBATTLE); - HuDataDirClose(DATADIR_BKOOPA); - HuDataDirClose(DATADIR_BKUJIYA); - HuDataDirClose(DATADIR_BYOKODORI); - HuDataDirClose(DATADIR_BPAUSE); - HuDataDirClose(DATADIR_BLAST5); - HuDataDirClose(DATADIR_EFFECT); - _SetFlag(FLAG_ID_MAKE(1, 16)); + s32 guest_status; + + GWSystem.mg_next = -1; + if(!GWGameStat.customPackEnable && GWMGListGet() == 2) { + GWMGListSet(0); + } + GWMessSpeedSet(GWMessSpeedGet()); + if(GWMGExplainGet()) { + _SetFlag(FLAG_ID_MAKE(0, 11)); + } else { + _ClearFlag(FLAG_ID_MAKE(0, 11)); + } + if(!BoardStartCheck()) { + _ClearFlag(FLAG_ID_MAKE(1, 2)); + _ClearFlag(FLAG_ID_MAKE(1, 3)); + _ClearFlag(FLAG_ID_MAKE(1, 4)); + _ClearFlag(FLAG_ID_MAKE(1, 5)); + _ClearFlag(FLAG_ID_MAKE(1, 6)); + } + _ClearFlag(FLAG_ID_MAKE(1, 8)); + if(!BoardStartCheck()) { + GWSystem.lucky_value = 1; + } + guest_status = BoardDataDirReadAsync(DATADIR_BGUEST); + if(guest_status != -1) { + BoardDataAsyncWait(guest_status); + } + BoardAudSeqClear(); + BoardModelInit(); + BoardRandInit(); + BoardWinInit(); + BoardPlayerModelInit(); + createFunc(); + BoardLightSetExec(); + BoardLotteryInit(); + BoardShopInit(); + BoardBooHouseCreate(); + BoardCameraInit(); + BoardStatusCreate(); + CharModelDataClose(-1); + BoardPlayerInit(); + if(GWSystem.last5_effect == 2) { + BoardSpaceTypeForce(2, 3); + } + if(GWSystem.last5_effect == 3) { + BoardSpaceTypeForce(2, 7); + } + BoardCameraMoveSet(0); + BoardCameraTargetPlayerSet(0); + BoardCameraViewSet(2); + BoardCameraMotionWait(); + BoardTauntInit(); + _SetFlag(FLAG_ID_MAKE(1, 14)); + HuDataDirClose(DATADIR_BKOOPASUIT); + HuDataDirClose(DATADIR_BBATTLE); + HuDataDirClose(DATADIR_BKOOPA); + HuDataDirClose(DATADIR_BKUJIYA); + HuDataDirClose(DATADIR_BYOKODORI); + HuDataDirClose(DATADIR_BPAUSE); + HuDataDirClose(DATADIR_BLAST5); + HuDataDirClose(DATADIR_EFFECT); + _SetFlag(FLAG_ID_MAKE(1, 16)); } static void DestroyBoard(void) { - s32 dir_table[] = { - DATADIR_W01, - DATADIR_W02, - DATADIR_W03, - DATADIR_W04, - DATADIR_W05, - DATADIR_W06, - DATADIR_W10, - DATADIR_W20, - DATADIR_W21 - }; - BoardTauntKill(); - BoardAudSeqFadeOutAll(); - HuAudAllStop(); - BoardRollKill(); - BoardStatusKill(); - BoardBooHouseKill(); - BoardShopKill(); - BoardLotteryKill(); - BoardSpaceDestroy(); - BoardPlayerModelKill(); - if(destroyFunc) { - destroyFunc(); - } - BoardModelKillAll(); - BoardWinKillAll(); - HuDataDirClose(dir_table[GWBoardGet()]); - HuDataDirClose(DATADIR_EFFECT); - HuDataDirClose(DATADIR_BGUEST); - HuDataDirClose(DATADIR_BKOOPASUIT); - HuDataDirClose(DATADIR_BBATTLE); - HuDataDirClose(DATADIR_BKOOPA); - HuDataDirClose(DATADIR_BKUJIYA); - HuDataDirClose(DATADIR_BYOKODORI); - HuDataDirClose(DATADIR_BOARD); - createFunc = destroyFunc = NULL; + s32 dir_table[] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, + DATADIR_W20, + DATADIR_W21 + }; + BoardTauntKill(); + BoardAudSeqFadeOutAll(); + HuAudAllStop(); + BoardRollKill(); + BoardStatusKill(); + BoardBooHouseKill(); + BoardShopKill(); + BoardLotteryKill(); + BoardSpaceDestroy(); + BoardPlayerModelKill(); + if(destroyFunc) { + destroyFunc(); + } + BoardModelKillAll(); + BoardWinKillAll(); + HuDataDirClose(dir_table[GWBoardGet()]); + HuDataDirClose(DATADIR_EFFECT); + HuDataDirClose(DATADIR_BGUEST); + HuDataDirClose(DATADIR_BKOOPASUIT); + HuDataDirClose(DATADIR_BBATTLE); + HuDataDirClose(DATADIR_BKOOPA); + HuDataDirClose(DATADIR_BKUJIYA); + HuDataDirClose(DATADIR_BYOKODORI); + HuDataDirClose(DATADIR_BOARD); + createFunc = destroyFunc = NULL; } void BoardLightHookSet(BoardLightHook set, BoardLightHook reset) { - boardLightSetHook = set; - boardLightResetHook = reset; + boardLightSetHook = set; + boardLightResetHook = reset; } void BoardLightSetExec(void) { - Hu3DBGColorSet(0, 0, 0); - if(boardLightSetHook) { - boardLightSetHook(); - } + Hu3DBGColorSet(0, 0, 0); + if(boardLightSetHook) { + boardLightSetHook(); + } } void BoardLightResetExec(void) { - if(boardLightResetHook) { - boardLightResetHook(); - } - Hu3DBGColorSet(0, 0, 0); - Hu3DFogClear(); - Hu3DReflectNoSet(0); + if(boardLightResetHook) { + boardLightResetHook(); + } + Hu3DBGColorSet(0, 0, 0); + Hu3DFogClear(); + Hu3DReflectNoSet(0); } //Fixes order of boardCamera and cameraBackup static BoardCameraData *BoardCameraGet(void) { - return &boardCamera; + return &boardCamera; } void BoardCameraBackup(void) { - cameraUseBackup = TRUE; - memcpy(&cameraBackup, &boardCamera, sizeof(BoardCameraData)); + cameraUseBackup = TRUE; + memcpy(&cameraBackup, &boardCamera, sizeof(BoardCameraData)); } void BoardCameraRestore(void) { - if(cameraUseBackup) { - memcpy(&boardCamera, &cameraBackup, sizeof(BoardCameraData)); - cameraUseBackup = FALSE; - } + if(cameraUseBackup) { + memcpy(&boardCamera, &cameraBackup, sizeof(BoardCameraData)); + cameraUseBackup = FALSE; + } } void BoardCameraScissorSet(s32 x, s32 y, s32 w, s32 h) { - BoardCameraData *camera = &boardCamera; - Hu3DCameraScissorSet(camera->mask, x, y, w, h); + BoardCameraData *camera = &boardCamera; + Hu3DCameraScissorSet(camera->mask, x, y, w, h); } void BoardCameraViewSet(s32 type) { - BoardCameraData *camera = &boardCamera; - BoardFocusData *focus; - float size; - if(!cameraObj) { - return; - } - focus = &camera->focus; - if(type == 0) { - focus->view_type = 0; - return; - } - OSs16tof32(&camViewTbl[type].fov, &focus->fov_end); - focus->fov_start = camera->fov; - OSs16tof32(&camViewTbl[type].zoom, &focus->zoom_end); - focus->zoom_start = camera->zoom; - OSs16tof32(&camViewTbl[type].x_rot, &focus->rot_end.x); - focus->rot_end.y = 0; - focus->rot_end.z = 0; - focus->rot_start = camera->rot; - focus->target_start = camera->target; - if(BoardPlayerSizeGet(GWSystem.player_curr) == 2 || GWPlayer[GWSystem.player_curr].bowser_suit) { - focus->zoom_end += 400.0f; - size = 2.5f; - } else { - size = 1.0f; - } - BoardCameraTargetModelSet(BoardPlayerModelGet(GWSystem.player_curr)); - BoardPlayerPosGet(GWSystem.player_curr, &focus->target_end); - BoardCameraOffsetSet(0.0f, 100.0f*size, 0.0f); - focus->target_end.y += 100.0f*size; - _SetFlag(FLAG_ID_MAKE(1, 21)); - focus->view_type = type; - focus->time = 0; - if(camera->moving) { - focus->max_time = 21; - } else { - focus->max_time = 1; - } + BoardCameraData *camera = &boardCamera; + BoardFocusData *focus; + float size; + if(!cameraObj) { + return; + } + focus = &camera->focus; + if(type == 0) { + focus->view_type = 0; + return; + } + OSs16tof32(&camViewTbl[type].fov, &focus->fov_end); + focus->fov_start = camera->fov; + OSs16tof32(&camViewTbl[type].zoom, &focus->zoom_end); + focus->zoom_start = camera->zoom; + OSs16tof32(&camViewTbl[type].x_rot, &focus->rot_end.x); + focus->rot_end.y = 0; + focus->rot_end.z = 0; + focus->rot_start = camera->rot; + focus->target_start = camera->target; + if(BoardPlayerSizeGet(GWSystem.player_curr) == 2 || GWPlayer[GWSystem.player_curr].bowser_suit) { + focus->zoom_end += 400.0f; + size = 2.5f; + } else { + size = 1.0f; + } + BoardCameraTargetModelSet(BoardPlayerModelGet(GWSystem.player_curr)); + BoardPlayerPosGet(GWSystem.player_curr, &focus->target_end); + BoardCameraOffsetSet(0.0f, 100.0f*size, 0.0f); + focus->target_end.y += 100.0f*size; + _SetFlag(FLAG_ID_MAKE(1, 21)); + focus->view_type = type; + focus->time = 0; + if(camera->moving) { + focus->max_time = 21; + } else { + focus->max_time = 1; + } } s32 BoardCameraPosGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - *dst = camera->pos; - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + *dst = camera->pos; + return 0; } s32 BoardCameraTargetGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - *dst = camera->target; - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + *dst = camera->target; + return 0; } s32 BoardCameraRotGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - *dst = camera->rot; - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + *dst = camera->rot; + return 0; } float BoardCameraZoomGet() { - BoardCameraData *camera; - camera = &boardCamera; - return camera->zoom; + BoardCameraData *camera; + camera = &boardCamera; + return camera->zoom; } s32 BoardCameraDirGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - if(!camera) { - return -1; - } - VECSubtract(&camera->target, &camera->pos, dst); - if(dst->x != 0 || dst->y != 0 || dst->z != 0) { - VECNormalize(dst, dst); - } - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + if(!camera) { + return -1; + } + VECSubtract(&camera->target, &camera->pos, dst); + if(dst->x != 0 || dst->y != 0 || dst->z != 0) { + VECNormalize(dst, dst); + } + return 0; } s32 BoardCameraPointDirGet(Vec *point, Vec *dst) { - BoardCameraData *camera; - if(!dst || !point) { - return -1; - } - camera = &boardCamera; - if(!camera) { - return -1; - } - VECSubtract(point, &camera->pos, dst); - if(dst->x != 0 || dst->y != 0 || dst->z != 0) { - VECNormalize(dst, dst); - } - return 0; + BoardCameraData *camera; + if(!dst || !point) { + return -1; + } + camera = &boardCamera; + if(!camera) { + return -1; + } + VECSubtract(point, &camera->pos, dst); + if(dst->x != 0 || dst->y != 0 || dst->z != 0) { + VECNormalize(dst, dst); + } + return 0; } void BoardCameraMaskSet(u16 mask) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->mask = mask; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->mask = mask; } void BoardCameraMoveSet(s32 move) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - if(!move) { - camera->moving = 0; - } else { - camera->moving = 1; - } + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + if(!move) { + camera->moving = 0; + } else { + camera->moving = 1; + } } void BoardCameraOffsetSet(float x, float y, float z) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->offset.x = x; - camera->offset.y = y; - camera->offset.z = z; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->offset.x = x; + camera->offset.y = y; + camera->offset.z = z; } void BoardCameraTargetPlayerSet(s32 player) { - PlayerState *player_ptr = BoardPlayerGet(player); - if(!player_ptr) { - BoardCameraTargetModelSet(-1); - return; - } - BoardCameraTargetModelSet(BoardPlayerModelGet(player)); - BoardCameraOffsetSet(0, 100, 0); + PlayerState *player_ptr = BoardPlayerGet(player); + if(!player_ptr) { + BoardCameraTargetModelSet(-1); + return; + } + BoardCameraTargetModelSet(BoardPlayerModelGet(player)); + BoardCameraOffsetSet(0, 100, 0); } void BoardCameraTargetModelSet(s16 model) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->target_mdl = model; - camera->target_space = -1; - camera->offset.x = camera->offset.y = camera->offset.z = 0; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->target_mdl = model; + camera->target_space = -1; + camera->offset.x = camera->offset.y = camera->offset.z = 0; } void BoardCameraTargetSpaceSet(s32 space) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->target_mdl = -1; - camera->target_space = space; - camera->offset.x = camera->offset.y = camera->offset.z = 0; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->target_mdl = -1; + camera->target_space = space; + camera->offset.x = camera->offset.y = camera->offset.z = 0; } void BoardCameraPosCalcFuncSet(BoardCameraPosCalcFunc func) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->pos_calc = func; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->pos_calc = func; } void BoardCameraQuakeSet(s32 duration, float strength) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->quaking = 1; - camera->quake_strength = strength; - camera->quake_timer = duration; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->quaking = 1; + camera->quake_strength = strength; + camera->quake_timer = duration; } void BoardCameraQuakeReset() { - BoardCameraData *camera = &boardCamera; - camera->quaking = 0; - camera->quake_strength = 0; - camera->quake_timer = 0; + BoardCameraData *camera = &boardCamera; + camera->quaking = 0; + camera->quake_strength = 0; + camera->quake_timer = 0; } void BoardCameraTargetSet(float x, float y, float z) { - BoardCameraData *camera = &boardCamera; - camera->target.x = x; - camera->target.y = y; - camera->target.z = z; + BoardCameraData *camera = &boardCamera; + camera->target.x = x; + camera->target.y = y; + camera->target.z = z; } void BoardCameraPosSet(float x, float y, float z) { - BoardCameraData *camera = &boardCamera; - camera->pos.x = x; - camera->pos.y = y; - camera->pos.z = z; + BoardCameraData *camera = &boardCamera; + camera->pos.x = x; + camera->pos.y = y; + camera->pos.z = z; } void BoardCameraXRotZoomSet(float zoom, float x_rot) { - BoardCameraData *camera = &boardCamera; - camera->zoom = zoom; - camera->rot.x = x_rot; + BoardCameraData *camera = &boardCamera; + camera->zoom = zoom; + camera->rot.x = x_rot; } void BoardCameraZoomSet(float zoom) { - BoardCameraData *camera = &boardCamera; - camera->zoom = zoom; + BoardCameraData *camera = &boardCamera; + camera->zoom = zoom; } void BoardCameraRotSet(float x, float y) { - BoardCameraData *camera = &boardCamera; - camera->rot.x = x; - camera->rot.y = y; + BoardCameraData *camera = &boardCamera; + camera->rot.x = x; + camera->rot.y = y; } void BoardCameraNearFarSet(float near, float far) { - BoardCameraData *camera = &boardCamera; - camera->near = near; - camera->far = far; + BoardCameraData *camera = &boardCamera; + camera->near = near; + camera->far = far; } void BoardCameraNearFarGet(float *near, float *far) { - BoardCameraData *camera = &boardCamera; - if(near) { - *near = camera->near; - } - if(far) { - *far = camera->far; - } + BoardCameraData *camera = &boardCamera; + if(near) { + *near = camera->near; + } + if(far) { + *far = camera->far; + } } void BoardCameraMotionStart(s16 model_target, Vec *rot_target, float zoom_target, float fov_target) { - BoardCameraMotionStartEx(model_target, rot_target, NULL, zoom_target, fov_target, 21); + BoardCameraMotionStartEx(model_target, rot_target, NULL, zoom_target, fov_target, 21); } void BoardCameraMotionStartEx(s16 model_target, Vec *rot_target, Vec *offset_end, float zoom_target, float fov_target, s16 max_time) { - BoardCameraData *camera = &boardCamera; - BoardFocusData *focus; - if(!cameraObj) { - return; - } - focus = &camera->focus; - focus->fov_start = camera->fov; - focus->zoom_start = camera->zoom; - focus->rot_start = camera->rot; - focus->target_start = camera->target; - if(fov_target == -1) { - focus->fov_end = focus->fov_start; - } else { - focus->fov_end = fov_target; - } - if(zoom_target == -1) { - focus->zoom_end = focus->zoom_start; - } else { - focus->zoom_end = zoom_target; - } - if(!rot_target) { - focus->rot_end = focus->rot_start; - } else { - focus->rot_end = *rot_target; - } - if(model_target == -1) { - focus->target_end = focus->target_start; - } else { - BoardCameraTargetModelSet(model_target); - BoardModelPosGet(model_target, &focus->target_end); - } - if(offset_end) { - BoardCameraOffsetSet(offset_end->x, offset_end->y, offset_end->z); - VECAdd(offset_end, &focus->target_end, &focus->target_end); - } - _SetFlag(FLAG_ID_MAKE(1, 21)); - focus->view_type = 5; - focus->time = 0; - if(max_time < 0) { - max_time = 1; - } - focus->max_time = max_time; + BoardCameraData *camera = &boardCamera; + BoardFocusData *focus; + if(!cameraObj) { + return; + } + focus = &camera->focus; + focus->fov_start = camera->fov; + focus->zoom_start = camera->zoom; + focus->rot_start = camera->rot; + focus->target_start = camera->target; + if(fov_target == -1) { + focus->fov_end = focus->fov_start; + } else { + focus->fov_end = fov_target; + } + if(zoom_target == -1) { + focus->zoom_end = focus->zoom_start; + } else { + focus->zoom_end = zoom_target; + } + if(!rot_target) { + focus->rot_end = focus->rot_start; + } else { + focus->rot_end = *rot_target; + } + if(model_target == -1) { + focus->target_end = focus->target_start; + } else { + BoardCameraTargetModelSet(model_target); + BoardModelPosGet(model_target, &focus->target_end); + } + if(offset_end) { + BoardCameraOffsetSet(offset_end->x, offset_end->y, offset_end->z); + VECAdd(offset_end, &focus->target_end, &focus->target_end); + } + _SetFlag(FLAG_ID_MAKE(1, 21)); + focus->view_type = 5; + focus->time = 0; + if(max_time < 0) { + max_time = 1; + } + focus->max_time = max_time; } void BoardCameraFovSet(float fov) { - BoardCameraData *camera = &boardCamera; - camera->fov = fov; + BoardCameraData *camera = &boardCamera; + camera->fov = fov; } s32 BoardCameraCullCheck(Vec *point, float radius) { - Vec dir; - Vec pos; - float dist; - float dot; - BoardCameraData *camera = &boardCamera; - if(!camera->hide_all) { - return 0; - } - BoardCameraDirGet(&dir); - VECSubtract(point, &camera->pos, &pos); - dist = sqrtf((pos.x*pos.x)+(pos.y*pos.y)+(pos.z*pos.z)); - if(25000 < dist-(radius*2.0f)) { - return 0; - } - BoardCameraPointDirGet(point, &pos); - dot = VECDotProduct(&dir, &pos); - if(BOARD_FABS(dot) < cos((camera->fov*M_PI)/180)) { - return 0; - } else { - return 1; - } + Vec dir; + Vec pos; + float dist; + float dot; + BoardCameraData *camera = &boardCamera; + if(!camera->hide_all) { + return 0; + } + BoardCameraDirGet(&dir); + VECSubtract(point, &camera->pos, &pos); + dist = sqrtf((pos.x*pos.x)+(pos.y*pos.y)+(pos.z*pos.z)); + if(25000 < dist-(radius*2.0f)) { + return 0; + } + BoardCameraPointDirGet(point, &pos); + dot = VECDotProduct(&dir, &pos); + if(BOARD_FABS(dot) < cosd(camera->fov)) { + return 0; + } else { + return 1; + } } s32 BoardCameraMotionIsDone(void) { - return (_CheckFlag(FLAG_ID_MAKE(1, 21))) ? 0 : 1; + return (_CheckFlag(FLAG_ID_MAKE(1, 21))) ? 0 : 1; } void BoardCameraMotionWait(void) { - while(!BoardCameraMotionIsDone()) { - HuPrcVSleep(); - } - HuPrcVSleep(); + while(!BoardCameraMotionIsDone()) { + HuPrcVSleep(); + } + HuPrcVSleep(); } void BoardCameraInit(void) { - BoardCameraData *camera; - cameraUseBackup = FALSE; - memset(&cameraBackup, 0, sizeof(BoardCameraData)); - memset(&boardCamera, 0, sizeof(BoardCameraData)); - camera = &boardCamera; - camera->fov = 25; - camera->near = 100; - camera->far = 13000; - camera->aspect = 1.2; - camera->viewport_x = 0; - camera->viewport_y = 0; - camera->viewport_h = 480; - camera->viewport_w = 640; - camera->viewport_near = 0; - camera->viewport_far = 1; - camera->up.y = 1; - camera->moving = 0; - camera->quaking = 0; - camera->quake_timer = 0; - camera->pos.x = 0; - camera->pos.y = 5000; - camera->pos.z = 5000; - camera->offset.x = 0; - camera->offset.y = 0; - camera->offset.z = 0; - camera->pos_calc = NULL; - BoardSpaceFlagPosGet(0, 0x80000000, &camera->target); - camera->rot.x = camViewTbl[1].x_rot; - camera->zoom = camViewTbl[1].zoom; - camera->hide_all = 1; - camera->mask = 1; - Hu3DCameraCreate(1); - Hu3DCameraScissorSet(1, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h); - Hu3DCameraScissorSet(2, 0, 0, 0, 0); - Hu3DCameraPerspectiveSet(2, -1, 100, 13000, 1.2); - cameraObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, UpdateCamera); + BoardCameraData *camera; + cameraUseBackup = FALSE; + memset(&cameraBackup, 0, sizeof(BoardCameraData)); + memset(&boardCamera, 0, sizeof(BoardCameraData)); + camera = &boardCamera; + camera->fov = 25; + camera->near = 100; + camera->far = 13000; + camera->aspect = HU_DISP_ASPECT; + camera->viewport_x = 0; + camera->viewport_y = 0; + camera->viewport_h = 480; + camera->viewport_w = 640; + camera->viewport_near = 0; + camera->viewport_far = 1; + camera->up.y = 1; + camera->moving = 0; + camera->quaking = 0; + camera->quake_timer = 0; + camera->pos.x = 0; + camera->pos.y = 5000; + camera->pos.z = 5000; + camera->offset.x = 0; + camera->offset.y = 0; + camera->offset.z = 0; + camera->pos_calc = NULL; + BoardSpaceFlagPosGet(0, 0x80000000, &camera->target); + camera->rot.x = camViewTbl[1].x_rot; + camera->zoom = camViewTbl[1].zoom; + camera->hide_all = 1; + camera->mask = 1; + Hu3DCameraCreate(1); + Hu3DCameraScissorSet(1, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h); + Hu3DCameraScissorSet(2, 0, 0, 0, 0); + Hu3DCameraPerspectiveSet(2, -1, 100, 13000, 1.2); + cameraObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, UpdateCamera); } static inline void CalcCameraView(void) { - BoardCameraData *camera = &boardCamera; - CalcCameraTarget(camera); - CalcCameraPos(camera); + BoardCameraData *camera = &boardCamera; + CalcCameraTarget(camera); + CalcCameraPos(camera); } static void UpdateCamera(omObjData *object) { - BoardCameraData *camera; - Vec *target; - float x, y, z; - if(BoardIsKill()) { - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - CalcCameraView(); - camera = &boardCamera; - Hu3DCameraPerspectiveSet(camera->mask, camera->fov, camera->near, camera->far, camera->aspect); - Hu3DCameraViewportSet(camera->mask, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); - target = &camera->target; - if(camera->pos_calc) { - camera->pos_calc(camera); - } else { - - x = camera->rot.x; - y = camera->rot.y; - camera->pos.x = target->x+(sin((y*M_PI)/180.0)*cos((x*M_PI)/180.0)*camera->zoom); - camera->pos.y = target->y+(-sin((x*M_PI)/180.0)*camera->zoom); - camera->pos.z = target->z+(cos((y*M_PI)/180.0)*cos((x*M_PI)/180.0)*camera->zoom); - camera->up.x = sin((y*M_PI)/180.0)*sin((x*M_PI)/180.0); - camera->up.y = cos((x*M_PI)/180.0); - camera->up.z = cos((y*M_PI)/180.0)*sin((x*M_PI)/180.0); - if(camera->quaking) { - x = BoardRandFloat(); - y = BoardRandFloat(); - z = BoardRandFloat(); - camera->pos.x += (x-0.5f)*camera->quake_strength; - camera->pos.y += (y-0.5f)*camera->quake_strength; - camera->pos.z += (z-0.5f)*camera->quake_strength; - if(--camera->quake_timer <= 0) { - camera->quaking = 0; - camera->quake_timer = 0; - camera->quake_strength = 0; - } - } - } - Hu3DCameraPosSetV(camera->mask, &camera->pos, &camera->up, target); + BoardCameraData *camera; + Vec *target; + float x, y, z; + if(BoardIsKill()) { + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + CalcCameraView(); + camera = &boardCamera; + Hu3DCameraPerspectiveSet(camera->mask, camera->fov, camera->near, camera->far, camera->aspect); + Hu3DCameraViewportSet(camera->mask, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); + target = &camera->target; + if(camera->pos_calc) { + camera->pos_calc(camera); + } else { + + x = camera->rot.x; + y = camera->rot.y; + camera->pos.x = target->x+(sind(y)*cosd(x)*camera->zoom); + camera->pos.y = target->y+(-sind(x)*camera->zoom); + camera->pos.z = target->z+(cosd(y)*cosd(x)*camera->zoom); + camera->up.x = sind(y)*sind(x); + camera->up.y = cosd(x); + camera->up.z = cosd(y)*sind(x); + if(camera->quaking) { + x = BoardRandFloat(); + y = BoardRandFloat(); + z = BoardRandFloat(); + camera->pos.x += (x-0.5f)*camera->quake_strength; + camera->pos.y += (y-0.5f)*camera->quake_strength; + camera->pos.z += (z-0.5f)*camera->quake_strength; + if(--camera->quake_timer <= 0) { + camera->quaking = 0; + camera->quake_timer = 0; + camera->quake_strength = 0; + } + } + } + Hu3DCameraPosSetV(camera->mask, &camera->pos, &camera->up, target); } static void CalcCameraTarget(BoardCameraData *camera) { - Vec offset; - Vec pos = { 0, 0, 0 }; - BoardFocusData *focus = &camera->focus; - if(camera->target_mdl != -1) { - BoardModelPosGet(camera->target_mdl, &pos); - } else { - if(camera->target_space != -1) { - BoardSpacePosGet(0, camera->target_space, &pos); - } else { - return; - } - } - VECAdd(&camera->offset, &pos, &pos); - VECSubtract(&pos, &camera->target, &offset); - if(camera->moving) { - VECScale(&offset, &offset, 0.15f); - } - VECAdd(&offset, &camera->target, &camera->target); + Vec offset; + Vec pos = { 0, 0, 0 }; + BoardFocusData *focus = &camera->focus; + if(camera->target_mdl != -1) { + BoardModelPosGet(camera->target_mdl, &pos); + } else { + if(camera->target_space != -1) { + BoardSpacePosGet(0, camera->target_space, &pos); + } else { + return; + } + } + VECAdd(&camera->offset, &pos, &pos); + VECSubtract(&pos, &camera->target, &offset); + if(camera->moving) { + VECScale(&offset, &offset, 0.15f); + } + VECAdd(&offset, &camera->target, &camera->target); } #define CAM_LERP(t, x1, x2, out) \ { \ - float result; \ - float offset; \ - float unit_scale; \ - float lerp_t; \ - lerp_x2 = x2; \ - lerp_x1 = x1; \ - lerp_t = t; \ - if(lerp_t2 == lerp_t1) { \ - result = lerp_x2; \ - } else { \ - unit_scale = (lerp_x1-lerp_x2)/((float)lerp_t1-(float)lerp_t2); \ - offset = lerp_x2-(unit_scale*lerp_t2); \ - result = offset+(unit_scale*lerp_t); \ - } \ - out = result; \ + float result; \ + float offset; \ + float unit_scale; \ + float lerp_t; \ + lerp_x2 = x2; \ + lerp_x1 = x1; \ + lerp_t = t; \ + if(lerp_t2 == lerp_t1) { \ + result = lerp_x2; \ + } else { \ + unit_scale = (lerp_x1-lerp_x2)/((float)lerp_t1-(float)lerp_t2); \ + offset = lerp_x2-(unit_scale*lerp_t2); \ + result = offset+(unit_scale*lerp_t); \ + } \ + out = result; \ } #define CAM_LERP_VEC(t, x1, x2, out) \ @@ -1263,270 +1267,270 @@ CAM_LERP(t, (x1).z, (x2).z, (out).z) static void CalcCameraPos(BoardCameraData *camera) { - //These variables must be volatile to match - volatile u32 lerp_t1, lerp_t2; - volatile float lerp_x1, lerp_x2; - float time; - - BoardFocusData *focus = &camera->focus; - if(focus->time > focus->max_time) { - focus->view_type = 0; - _ClearFlag(FLAG_ID_MAKE(1, 21)); - return; - } - OSs16tof32(&focus->time, &time); - focus->time++; - lerp_t2 = focus->max_time; - lerp_t1 = 0; - CAM_LERP(time, focus->zoom_start, focus->zoom_end, camera->zoom) - CAM_LERP_VEC(time, focus->rot_start, focus->rot_end, camera->rot) - CAM_LERP(time, focus->fov_start, focus->fov_end, camera->fov) - CAM_LERP_VEC(time, focus->target_start, focus->target_end, camera->target) + //These variables must be volatile to match + volatile u32 lerp_t1, lerp_t2; + volatile float lerp_x1, lerp_x2; + float time; + + BoardFocusData *focus = &camera->focus; + if(focus->time > focus->max_time) { + focus->view_type = 0; + _ClearFlag(FLAG_ID_MAKE(1, 21)); + return; + } + OSs16tof32(&focus->time, &time); + focus->time++; + lerp_t2 = focus->max_time; + lerp_t1 = 0; + CAM_LERP(time, focus->zoom_start, focus->zoom_end, camera->zoom) + CAM_LERP_VEC(time, focus->rot_start, focus->rot_end, camera->rot) + CAM_LERP(time, focus->fov_start, focus->fov_end, camera->fov) + CAM_LERP_VEC(time, focus->target_start, focus->target_end, camera->target) } void BoardMGDoneFlagSet(s32 flag) { - if(flag) { - _SetFlag(FLAG_ID_MAKE(1, 20)); - } else { - _ClearFlag(FLAG_ID_MAKE(1, 20)); - } + if(flag) { + _SetFlag(FLAG_ID_MAKE(1, 20)); + } else { + _ClearFlag(FLAG_ID_MAKE(1, 20)); + } } s32 BoardMGDoneFlagGet() { - return (_CheckFlag(FLAG_ID_MAKE(1, 20))) ? 1 : 0; + return (_CheckFlag(FLAG_ID_MAKE(1, 20))) ? 1 : 0; } void BoardMGExit(void) { - s32 player = GWSystem.player_curr; - BoardPlayerMoveToAsync(player, GWPlayer[GWSystem.player_curr].space_curr); - BoardCameraTargetPlayerSet(player); - BoardCameraMoveSet(1); - BoardCameraViewSet(1); - _ClearFlag(FLAG_ID_MAKE(1, 19)); + s32 player = GWSystem.player_curr; + BoardPlayerMoveToAsync(player, GWPlayer[GWSystem.player_curr].space_curr); + BoardCameraTargetPlayerSet(player); + BoardCameraMoveSet(1); + BoardCameraViewSet(1); + _ClearFlag(FLAG_ID_MAKE(1, 19)); } static void KillBoardMG(omObjData *object) { - if(!BoardMGDoneFlagGet()) { - BoardEventFlagReset(); - omDelObjEx(HuPrcCurrentGet(), object); - } + if(!BoardMGDoneFlagGet()) { + BoardEventFlagReset(); + omDelObjEx(HuPrcCurrentGet(), object); + } } static void ExecBoardMG(omObjData *object) { - if(_CheckFlag(FLAG_ID_MAKE(1, 19))) { - return; - } - if(GWPlayer[GWSystem.player_curr].moving == 0) { - BoardPlayerMotionShiftSet(GWSystem.player_curr, 1, 0.0f, 10.0f, 0x40000001); - if(!_CheckFlag(FLAG_ID_MAKE(1, 21))) { - _SetFlag(FLAG_ID_MAKE(1, 20)); - object->func = KillBoardMG; - } - } + if(_CheckFlag(FLAG_ID_MAKE(1, 19))) { + return; + } + if(GWPlayer[GWSystem.player_curr].moving == 0) { + BoardPlayerMotionShiftSet(GWSystem.player_curr, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + if(!_CheckFlag(FLAG_ID_MAKE(1, 21))) { + _SetFlag(FLAG_ID_MAKE(1, 20)); + object->func = KillBoardMG; + } + } } void BoardMGCreate(s32 arg0) { - _SetFlag(FLAG_ID_MAKE(1, 19)); - _ClearFlag(FLAG_ID_MAKE(1, 20)); - GWSystem.unk_38 = arg0; - omAddObjEx(boardObjMan, 0x201, 0, 0, -1, ExecBoardMG); - BoardEventFlagSet(); - BoardSpaceWalkMiniEventExec(); + _SetFlag(FLAG_ID_MAKE(1, 19)); + _ClearFlag(FLAG_ID_MAKE(1, 20)); + GWSystem.unk_38 = arg0; + omAddObjEx(boardObjMan, 0x201, 0, 0, -1, ExecBoardMG); + BoardEventFlagSet(); + BoardSpaceWalkMiniEventExec(); } void BoardEventFlagSet(void) { - _SetFlag(FLAG_ID_MAKE(1, 18)); + _SetFlag(FLAG_ID_MAKE(1, 18)); } void BoardEventFlagReset(void) { - _ClearFlag(FLAG_ID_MAKE(1, 18)); + _ClearFlag(FLAG_ID_MAKE(1, 18)); } s32 BoardEventFlagGet(void) { - return _CheckFlag(FLAG_ID_MAKE(1, 18)) ? 1 : 0; + return _CheckFlag(FLAG_ID_MAKE(1, 18)) ? 1 : 0; } void BoardMTXCalcLookAt(Mtx dest, Vec *eye, Vec *up, Vec *target) { - Vec f, u, s; - f.x = eye->x-target->x; - f.y = eye->y-target->y; - f.z = eye->z-target->z; - VECNormalize(&f, &f); - VECCrossProduct(up, &f, &u); - VECNormalize(&u, &u); - VECCrossProduct(&f, &u, &s); - dest[0][0] = u.x; - dest[0][1] = u.y; - dest[0][2] = u.z; - dest[0][3] = 0; - dest[1][0] = s.x; - dest[1][1] = s.y; - dest[1][2] = s.z; - dest[1][3] = 0; - dest[2][0] = f.x; - dest[2][1] = f.y; - dest[2][2] = f.z; - dest[2][3] = 0; + Vec f, u, s; + f.x = eye->x-target->x; + f.y = eye->y-target->y; + f.z = eye->z-target->z; + VECNormalize(&f, &f); + VECCrossProduct(up, &f, &u); + VECNormalize(&u, &u); + VECCrossProduct(&f, &u, &s); + dest[0][0] = u.x; + dest[0][1] = u.y; + dest[0][2] = u.z; + dest[0][3] = 0; + dest[1][0] = s.x; + dest[1][1] = s.y; + dest[1][2] = s.z; + dest[1][3] = 0; + dest[2][0] = f.x; + dest[2][1] = f.y; + dest[2][2] = f.z; + dest[2][3] = 0; } float BoardArcSin(float value) { - float result; - s32 sign; - if(value < 0) { - sign = 1; - value = BOARD_FABS(value); - } else { - sign = 0; - } - if(value > 1.0f) { - return 0; - } - if(value <= (float)(M_PI/2)) { - result = atanf(value/sqrtf(1-(value*value))); - } else { - result = (float)(M_PI/2)-atanf(sqrtf(1-(value*value))/value); - } - if(sign) { - result = BOARD_FABS(result); - } - return result; + float result; + s32 sign; + if(value < 0) { + sign = 1; + value = BOARD_FABS(value); + } else { + sign = 0; + } + if(value > 1.0f) { + return 0; + } + if(value <= (float)(M_PI/2)) { + result = atanf(value/sqrtf(1-(value*value))); + } else { + result = (float)(M_PI/2)-atanf(sqrtf(1-(value*value))/value); + } + if(sign) { + result = BOARD_FABS(result); + } + return result; } float BoardArcCos(float value) { - if(BOARD_FABS(value) > 1) { - return 0; - } - return (float)(M_PI/2)-BoardArcSin(value); + if(BOARD_FABS(value) > 1) { + return 0; + } + return (float)(M_PI/2)-BoardArcSin(value); } void BoardRandInit(void) { - boardRandSeed = OSGetTime(); + boardRandSeed = OSGetTime(); } u32 BoardRand(void) { - boardRandSeed = (boardRandSeed*0x19660D)+(0x3C6EF35F); - return boardRandSeed; + boardRandSeed = (boardRandSeed*0x19660D)+(0x3C6EF35F); + return boardRandSeed; } u32 BoardRandMod(u32 value) { - return (BoardRand() & 0x7FFFFFFF)%value; + return (BoardRand() & 0x7FFFFFFF)%value; } float BoardRandFloat(void) { - float value; - *((u32 *)&value) = (BoardRand() & 0x7FFFFF)|0x3F800000; //Generate float from 1.0f to 2.0f - return value-1.0f; + float value; + *((u32 *)&value) = (BoardRand() & 0x7FFFFF)|0x3F800000; //Generate float from 1.0f to 2.0f + return value-1.0f; } float BoardVecDistXZCalc(Vec *vec1, Vec *vec2) { - float dx = vec1->x-vec2->x; - float dz = vec1->z-vec2->z; - return sqrtf((dx*dx)+(dz*dz)); + float dx = vec1->x-vec2->x; + float dz = vec1->z-vec2->z; + return sqrtf((dx*dx)+(dz*dz)); } s32 BoardVecMaxDistXZCheck(Vec *vec1, Vec *vec2, float max_dist) { - float dz = vec1->z-vec2->z; - float dx = vec1->x-vec2->x; - float dist = sqrtf((dx*dx)+(dz*dz)); - if(dist <= max_dist) { - return 1; - } else { - return 0; - } + float dz = vec1->z-vec2->z; + float dx = vec1->x-vec2->x; + float dist = sqrtf((dx*dx)+(dz*dz)); + if(dist <= max_dist) { + return 1; + } else { + return 0; + } } void BoardDAngleCalcVec(Vec *vec1) { - s32 i; - float *data = &vec1->x; - for(i=0; i<3; i++) { - while(*data > 180.0f) { - *data -= 360.0f; - } - while(*data < -180.0f) { - *data += 360.0f; - } - data++; - } + s32 i; + float *data = &vec1->x; + for(i=0; i<3; i++) { + while(*data > 180.0f) { + *data -= 360.0f; + } + while(*data < -180.0f) { + *data += 360.0f; + } + data++; + } } float BoardDAngleCalc(float value) { - while(value > 180.0f) { - value -= 360.0f; - } - while(value < -180.0f) { - value += 360.0f; - } - return value; + while(value > 180.0f) { + value -= 360.0f; + } + while(value < -180.0f) { + value += 360.0f; + } + return value; } s32 BoardDAngleCalcRange(float *value, float min, float range) { - float diff = min-(*value); - if(diff >= 180.0f) { - min -= 360.0f; - } - if(diff <= -180.0f) { - min += 360.0f; - } - if(min > *value) { - *value += range; - if(*value >= min) { - *value = BoardDAngleCalc(min); - return 1; - } - } else { - *value -= range; - if(*value <= min) { - *value = BoardDAngleCalc(min); - return 1; - } - } - *value = BoardDAngleCalc(*value); - return 0; + float diff = min-(*value); + if(diff >= 180.0f) { + min -= 360.0f; + } + if(diff <= -180.0f) { + min += 360.0f; + } + if(min > *value) { + *value += range; + if(*value >= min) { + *value = BoardDAngleCalc(min); + return 1; + } + } else { + *value -= range; + if(*value <= min) { + *value = BoardDAngleCalc(min); + return 1; + } + } + *value = BoardDAngleCalc(*value); + return 0; } s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist) { - Vec temp; - VECSubtract(vec1, vec2, &temp); - if(VECSquareMag(&temp) >= (min_dist*min_dist)) { - return 0; - } else { - return 1; - } + Vec temp; + VECSubtract(vec1, vec2, &temp); + if(VECSquareMag(&temp) >= (min_dist*min_dist)) { + return 0; + } else { + return 1; + } } typedef struct filter_work { - struct { - u8 kill : 1; - u8 paused : 1; - }; - u8 max_alpha; - s16 time; - s16 len; - s16 model; - GXColor color; - float speed; + struct { + u8 kill : 1; + u8 paused : 1; + }; + u8 max_alpha; + s16 time; + s16 len; + s16 model; + GXColor color; + float speed; } FilterWork; static void UpdateFilter(omObjData *object); @@ -1534,168 +1538,168 @@ static void DrawFilter(ModelData *model, Mtx matrix); void BoardFilterFadeOut(s16 len) { - FilterWork *work; - float speed; - if(!filterObj) { - return; - } - if(len <= 0) { - len = 1; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - work->len = len; - OSs16tof32(&len, &speed); - work->speed = -(work->color.a)/speed; - work->paused = 0; - work->time = work->len; + FilterWork *work; + float speed; + if(!filterObj) { + return; + } + if(len <= 0) { + len = 1; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + work->len = len; + OSs16tof32(&len, &speed); + work->speed = -(work->color.a)/speed; + work->paused = 0; + work->time = work->len; } void BoardFilterFadeInit(s16 len, u8 max_alpha) { - FilterWork *work; - if(filterObj) { - work = OM_GET_WORK_PTR(filterObj, FilterWork); - work->kill = 1; - while(filterObj) { - HuPrcVSleep(); - } - } - filterObj = omAddObjEx(boardObjMan, 32000, 0, 0, -1, UpdateFilter); - omSetStatBit(filterObj, OM_STAT_NOPAUSE|0x80); - if(len <= 0) { - len = 1; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - work->kill = 0; - work->paused = 0; - work->color.r = 0; - work->color.g = 0; - work->color.b = 0; - work->color.a = 0; - work->max_alpha = max_alpha; - work->speed = (float)(max_alpha-work->color.a)/(float)len; - work->time = len; - work->len = len; - work->model = Hu3DHookFuncCreate(DrawFilter); - Hu3DModelLayerSet(work->model, 1); + FilterWork *work; + if(filterObj) { + work = OM_GET_WORK_PTR(filterObj, FilterWork); + work->kill = 1; + while(filterObj) { + HuPrcVSleep(); + } + } + filterObj = omAddObjEx(boardObjMan, 32000, 0, 0, -1, UpdateFilter); + omSetStatBit(filterObj, OM_STAT_NOPAUSE|0x80); + if(len <= 0) { + len = 1; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + work->kill = 0; + work->paused = 0; + work->color.r = 0; + work->color.g = 0; + work->color.b = 0; + work->color.a = 0; + work->max_alpha = max_alpha; + work->speed = (float)(max_alpha-work->color.a)/(float)len; + work->time = len; + work->len = len; + work->model = Hu3DHookFuncCreate(DrawFilter); + Hu3DModelLayerSet(work->model, 1); } s32 BoardFilterFadePauseCheck(void) { - FilterWork *work; - if(!filterObj) { - return 1; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - return (work->paused) ? 1 : 0; + FilterWork *work; + if(!filterObj) { + return 1; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + return (work->paused) ? 1 : 0; } s32 BoardFilterFadeCheck(void) { - return (filterObj != NULL) ? 0 : 1; + return (filterObj != NULL) ? 0 : 1; } static void UpdateFilter(omObjData *object) { - float alpha; - FilterWork *work = OM_GET_WORK_PTR(object, FilterWork); - if(work->kill || BoardIsKill()) { - if(work->model != -1) { - Hu3DModelKill(work->model); - } - filterObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->paused) { - return; - } - OSu8tof32(&work->color.a, &alpha); - alpha += work->speed; - OSf32tou8(&alpha, &work->color.a); - if(work->time > 0) { - work->time--; - return; - } - if(work->speed > 0) { - work->paused = 1; - work->color.a = work->max_alpha; - } else { - work->kill = 1; - } + float alpha; + FilterWork *work = OM_GET_WORK_PTR(object, FilterWork); + if(work->kill || BoardIsKill()) { + if(work->model != -1) { + Hu3DModelKill(work->model); + } + filterObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->paused) { + return; + } + OSu8tof32(&work->color.a, &alpha); + alpha += work->speed; + OSf32tou8(&alpha, &work->color.a); + if(work->time > 0) { + work->time--; + return; + } + if(work->speed > 0) { + work->paused = 1; + work->color.a = work->max_alpha; + } else { + work->kill = 1; + } } static void DrawFilter(ModelData *model, Mtx matrix) { - static GXColor colorN = { 0xFF, 0xFF, 0xFF, 0xFF }; - Mtx44 proj; - Mtx modelview; - - float x1, x2, y1, y2; - FilterWork *work; - if(!filterObj) { - return; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - x1 = 0.0f; - x2 = 640.0f; - y1 = 0.0f; - y2 = 480.0f; - MTXOrtho(proj, y1, y2, x1, x2, 0, 10); - GXSetProjection(proj, GX_ORTHOGRAPHIC); - MTXIdentity(modelview); - GXLoadPosMtxImm(modelview, GX_PNMTX0); - GXSetCurrentMtx(GX_PNMTX0); - GXSetViewport(0, 0, x2, 1.0f+y2, 0, 1); - GXSetScissor(0, 0, x2, 1.0f+y2); - GXClearVtxDesc(); - GXSetChanMatColor(GX_COLOR0A0, work->color); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); - GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); - GXSetZMode(GX_TRUE, GX_ALWAYS, GX_FALSE); - GXSetAlphaUpdate(GX_FALSE); - GXSetColorUpdate(GX_TRUE); - GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition2u16(x1, y1); - GXPosition2u16(x2, y1); - GXPosition2u16(x2, y2); - GXPosition2u16(x1, y2); - GXEnd(); - GXSetChanMatColor(GX_COLOR0A0, colorN); - + static GXColor colorN = { 0xFF, 0xFF, 0xFF, 0xFF }; + Mtx44 proj; + Mtx modelview; + + float x1, x2, y1, y2; + FilterWork *work; + if(!filterObj) { + return; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + x1 = 0.0f; + x2 = HU_FB_WIDTH; + y1 = 0.0f; + y2 = HU_FB_HEIGHT; + MTXOrtho(proj, y1, y2, x1, x2, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetCurrentMtx(GX_PNMTX0); + GXSetViewport(0, 0, x2, 1.0f+y2, 0, 1); + GXSetScissor(0, 0, x2, 1.0f+y2); + GXClearVtxDesc(); + GXSetChanMatColor(GX_COLOR0A0, work->color); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_FALSE); + GXSetAlphaUpdate(GX_FALSE); + GXSetColorUpdate(GX_TRUE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(x1, y1); + GXPosition2u16(x2, y1); + GXPosition2u16(x2, y2); + GXPosition2u16(x1, y2); + GXEnd(); + GXSetChanMatColor(GX_COLOR0A0, colorN); + } typedef struct confetti_particle { - s16 time; - u8 alpha; - u8 light_col; - Vec pos; - Vec rot; - Vec pos_vel; - Vec rot_vel; + s16 time; + u8 alpha; + u8 light_col; + Vec pos; + Vec rot; + Vec pos_vel; + Vec rot_vel; } ConfettiParticle; typedef struct confetti_work { - struct { - u8 kill : 1; - u8 paused : 1; - }; - s8 spawn_speed; - s8 time; - s8 delay; - s16 count; - s16 gfx_mdl; - s16 draw_mdl; - ConfettiParticle *data; + struct { + u8 kill : 1; + u8 paused : 1; + }; + s8 spawn_speed; + s8 time; + s8 delay; + s16 count; + s16 gfx_mdl; + s16 draw_mdl; + ConfettiParticle *data; } ConfettiWork; static void UpdateConfetti(omObjData *object); @@ -1706,497 +1710,501 @@ static void DrawConfetti(ModelData *model, Mtx matrix); void BoardConfettiCreate(Vec *pos, s16 count, float range) { - omObjData *object; - ConfettiWork *work; - if(confettiObj) { - BoardConfettiStop(); - HuPrcSleep(17); - } - object = omAddObjEx(boardObjMan, 257, 0, 0, -1, UpdateConfetti); - confettiObj = object; - work = OM_GET_WORK_PTR(object, ConfettiWork); - work->kill = 0; - work->paused = 0; - work->count = count; - work->spawn_speed = 1; - work->time = 0; - work->delay = 10; - work->draw_mdl = Hu3DHookFuncCreate(DrawConfetti); - work->data = HuMemDirectMallocNum(HEAP_SYSTEM, work->count*sizeof(ConfettiParticle), MEMORY_DEFAULT_NUM); - object->trans.x = pos->x; - object->trans.y = pos->y; - object->trans.z = pos->z; - object->rot.x = range; - work->gfx_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 7), NULL, 0); - BoardModelLayerSet(work->gfx_mdl, 2); - BoardModelVisibilitySet(work->gfx_mdl, 0); - { - ConfettiParticle *particle; - s32 i; - particle = work->data; - for(i=0; icount; i++, particle++) { - particle->time = -1; - } - } - HuAudFXPlay(774); + omObjData *object; + ConfettiWork *work; + if(confettiObj) { + BoardConfettiStop(); + HuPrcSleep(17); + } + object = omAddObjEx(boardObjMan, 257, 0, 0, -1, UpdateConfetti); + confettiObj = object; + work = OM_GET_WORK_PTR(object, ConfettiWork); + work->kill = 0; + work->paused = 0; + work->count = count; + work->spawn_speed = 1; + work->time = 0; + work->delay = 10; + work->draw_mdl = Hu3DHookFuncCreate(DrawConfetti); + work->data = HuMemDirectMallocNum(HEAP_SYSTEM, work->count*sizeof(ConfettiParticle), MEMORY_DEFAULT_NUM); + object->trans.x = pos->x; + object->trans.y = pos->y; + object->trans.z = pos->z; + object->rot.x = range; + work->gfx_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 7), NULL, 0); + BoardModelLayerSet(work->gfx_mdl, 2); + BoardModelVisibilitySet(work->gfx_mdl, 0); + { + ConfettiParticle *particle; + s32 i; + particle = work->data; + for(i=0; icount; i++, particle++) { + particle->time = -1; + } + } + HuAudFXPlay(774); } void BoardConfettiKill(void) { - if(confettiObj) { - OM_GET_WORK_PTR(confettiObj, ConfettiWork)->kill = 1; - } + if(confettiObj) { + OM_GET_WORK_PTR(confettiObj, ConfettiWork)->kill = 1; + } } void BoardConfettiStop(void) { - if(confettiObj) { - s32 i; - ConfettiParticle *particle; - ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); - work->paused = 1; - particle = work->data; - for(i=0; icount; i++, particle++) { - if(particle->time != -1) { - if(particle->time > 16) { - particle->time = 16; - } - } - } - } + if(confettiObj) { + s32 i; + ConfettiParticle *particle; + ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); + work->paused = 1; + particle = work->data; + for(i=0; icount; i++, particle++) { + if(particle->time != -1) { + if(particle->time > 16) { + particle->time = 16; + } + } + } + } } static void UpdateConfetti(omObjData *object) { - ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); - if(work->kill || BoardIsKill()) { - BoardModelKill(work->gfx_mdl); - Hu3DModelKill(work->draw_mdl); - HuMemDirectFree(work->data); - confettiObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - } else { - SpawnConfetti(object); - MoveConfetti(object); - } + ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); + if(work->kill || BoardIsKill()) { + BoardModelKill(work->gfx_mdl); + Hu3DModelKill(work->draw_mdl); + HuMemDirectFree(work->data); + confettiObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + } else { + SpawnConfetti(object); + MoveConfetti(object); + } } static void SpawnConfetti(omObjData *object) { - ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); - s32 i; - if(work->paused) { - return; - } - if(work->spawn_speed < 5) { - if(work->time++ > work->delay) { - work->time = 0; - work->spawn_speed++; - } - } - for(i=0; ispawn_speed; i++) { - ConfettiParticle *particle; - float angle; - s32 j; - particle = work->data; - for(j=0; jcount; j++, particle++) { - if(particle->time == -1) { - break; - } - } - if(j == work->count) { - break; - } - particle->time = BoardRandMod(60)+120; - angle = BoardRandFloat()*360.0f; - particle->pos.x = (sin((angle*M_PI)/180.0)*object->rot.x)+object->trans.x; - particle->pos.y = object->trans.y; - particle->pos.z = (cos((angle*M_PI)/180.0)*object->rot.x)+object->trans.z; - particle->pos_vel.x = 2.0f*(BoardRandFloat()-0.5f); - particle->pos_vel.y = (-98.00001f/15.0f)*BoardRandFloat(); - particle->pos_vel.z = 2.0f*(BoardRandFloat()-0.5f); - particle->rot_vel.x = 8.0f+((BoardRandFloat()-0.5f)*20.0f); - particle->rot_vel.y = 8.0f+((BoardRandFloat()-0.5f)*20.0f); - particle->rot_vel.z = 8.0f+((BoardRandFloat()-0.5f)*20.0f); - particle->rot.x = 0; - particle->rot.y = 0; - particle->rot.z = 0; - particle->alpha = 255; - particle->light_col = BoardRandMod(6); - } + ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); + s32 i; + if(work->paused) { + return; + } + if(work->spawn_speed < 5) { + if(work->time++ > work->delay) { + work->time = 0; + work->spawn_speed++; + } + } + for(i=0; ispawn_speed; i++) { + ConfettiParticle *particle; + float angle; + s32 j; + particle = work->data; + for(j=0; jcount; j++, particle++) { + if(particle->time == -1) { + break; + } + } + if(j == work->count) { + break; + } + particle->time = BoardRandMod(60)+120; + angle = BoardRandFloat()*360.0f; + particle->pos.x = (sind(angle)*object->rot.x)+object->trans.x; + particle->pos.y = object->trans.y; + particle->pos.z = (cosd(angle)*object->rot.x)+object->trans.z; + particle->pos_vel.x = 2.0f*(BoardRandFloat()-0.5f); + particle->pos_vel.y = (-98.00001f/15.0f)*BoardRandFloat(); + particle->pos_vel.z = 2.0f*(BoardRandFloat()-0.5f); + particle->rot_vel.x = 8.0f+((BoardRandFloat()-0.5f)*20.0f); + particle->rot_vel.y = 8.0f+((BoardRandFloat()-0.5f)*20.0f); + particle->rot_vel.z = 8.0f+((BoardRandFloat()-0.5f)*20.0f); + particle->rot.x = 0; + particle->rot.y = 0; + particle->rot.z = 0; + particle->alpha = 255; + particle->light_col = BoardRandMod(6); + } } static void MoveConfetti(omObjData *object) { - ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); - s32 i; - s32 existF; - ConfettiParticle *particle; - - existF = 0; - particle = work->data; - - for(i=0; icount; i++, particle++) { - if(particle->time == -1) { - continue; - } - if(particle->time <= 0) { - particle->time = -1; - continue; - } - particle->time--; - particle->pos.x += particle->pos_vel.x; - particle->pos.y += particle->pos_vel.y; - particle->pos.z += particle->pos_vel.z; - particle->rot.x += particle->rot_vel.x; - particle->rot.y += particle->rot_vel.y; - particle->rot.z += particle->rot_vel.z; - if(particle->time < 16) { - if(particle->alpha >= 15) { - particle->alpha -= 15; - } else { - particle->alpha = 0; - } - } - if(!existF) { - existF = 1; - } - } - if(existF == 0 && work->paused) { - work->kill = 1; - } + ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); + s32 i; + s32 existF; + ConfettiParticle *particle; + + existF = 0; + particle = work->data; + + for(i=0; icount; i++, particle++) { + if(particle->time == -1) { + continue; + } + if(particle->time <= 0) { + particle->time = -1; + continue; + } + particle->time--; + particle->pos.x += particle->pos_vel.x; + particle->pos.y += particle->pos_vel.y; + particle->pos.z += particle->pos_vel.z; + particle->rot.x += particle->rot_vel.x; + particle->rot.y += particle->rot_vel.y; + particle->rot.z += particle->rot_vel.z; + if(particle->time < 16) { + if(particle->alpha >= 15) { + particle->alpha -= 15; + } else { + particle->alpha = 0; + } + } + if(!existF) { + existF = 1; + } + } + if(existF == 0 && work->paused) { + work->kill = 1; + } } static Vec confettiLightTbl[6] = { - { 0.1, 0.4, 1 }, - { 0.2, 1, 0.1 }, - { 0.3, 1, 1 }, - { 1, 0.2, 0.1 }, - { 1, 0.2, 0.8 }, - { 1, 8, 0.3 } + { 0.1, 0.4, 1 }, + { 0.2, 1, 0.1 }, + { 0.3, 1, 1 }, + { 1, 0.2, 0.1 }, + { 1, 0.2, 0.8 }, + { 1, 8, 0.3 } }; static void DrawConfetti(ModelData *model, Mtx matrix) { - if(!confettiObj || BoardIsKill()) { - return; - } else { - ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); - ModelData *model = &Hu3DData[work->gfx_mdl]; - ConfettiParticle *particle; - s32 i; - if(!model->hsfData) { - return; - } - particle = work->data; - for(i=0; icount; i++, particle++) { - Mtx result, temp; - float r, g, b, a; - if(particle->time == -1) { - continue; - } - MTXRotDeg(temp, 'z', particle->rot.z); - MTXRotDeg(result, 'x', particle->rot.x); - MTXConcat(temp, result, result); - MTXRotDeg(temp, 'y', particle->rot.y); - MTXConcat(temp, result, result); - MTXTrans(temp, particle->pos.x, particle->pos.y, particle->pos.z); - MTXConcat(temp, result, result); - MTXConcat(matrix, result, result); - r = confettiLightTbl[particle->light_col].x; - g = confettiLightTbl[particle->light_col].y; - b = confettiLightTbl[particle->light_col].z; - OSu8tof32(&particle->alpha, &a); - a = a*(1.0f/255.0f); - Hu3DModelTPLvlSet(BoardModelIDGet(work->gfx_mdl), a); - Hu3DModelAmbSet(BoardModelIDGet(work->gfx_mdl), r, g, b); - Hu3DModelObjDraw(BoardModelIDGet(work->gfx_mdl), "grid2", result); - } - } + if(!confettiObj || BoardIsKill()) { + return; + } else { + ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); + ModelData *model = &Hu3DData[work->gfx_mdl]; + ConfettiParticle *particle; + s32 i; + if(!model->hsfData) { + return; + } + particle = work->data; + for(i=0; icount; i++, particle++) { + Mtx result, temp; + float r, g, b, a; + if(particle->time == -1) { + continue; + } + MTXRotDeg(temp, 'z', particle->rot.z); + MTXRotDeg(result, 'x', particle->rot.x); + MTXConcat(temp, result, result); + MTXRotDeg(temp, 'y', particle->rot.y); + MTXConcat(temp, result, result); + MTXTrans(temp, particle->pos.x, particle->pos.y, particle->pos.z); + MTXConcat(temp, result, result); + MTXConcat(matrix, result, result); + r = confettiLightTbl[particle->light_col].x; + g = confettiLightTbl[particle->light_col].y; + b = confettiLightTbl[particle->light_col].z; + OSu8tof32(&particle->alpha, &a); + a = a*(1.0f/255.0f); + Hu3DModelTPLvlSet(BoardModelIDGet(work->gfx_mdl), a); + Hu3DModelAmbSet(BoardModelIDGet(work->gfx_mdl), r, g, b); + Hu3DModelObjDraw(BoardModelIDGet(work->gfx_mdl), "grid2", result); + } + } } typedef struct last5_gfx_work { - struct { - u8 kill : 1; - u8 state : 3; - u8 is_last : 1; - u8 : 4; - }; - u8 stop_time; - s16 time; - s16 group; - s16 sprites[3]; + struct { + u8 kill : 1; + u8 state : 3; + u8 is_last : 1; + u8 : 4; + }; + u8 stop_time; + s16 time; + s16 group; + s16 sprites[3]; } Last5GfxWork; static s32 last5GfxSprTbl[3] = { - DATA_MAKE_NUM(DATADIR_BOARD, 95), - DATA_MAKE_NUM(DATADIR_BOARD, 97), - DATA_MAKE_NUM(DATADIR_BOARD, 96), + DATA_MAKE_NUM(DATADIR_BOARD, 95), + DATA_MAKE_NUM(DATADIR_BOARD, 97), + DATA_MAKE_NUM(DATADIR_BOARD, 96), }; static float last5GfxPosTbl[2][3][2] = { - { - { -80, 0 }, - { 0, 0 }, - { 80, 0 } - }, - { - { -52, 0 }, - { 0, 0 }, - { 52, 0 } - } + { + { -80, 0 }, + { 0, 0 }, + { 80, 0 } + }, + { + { -52, 0 }, + { 0, 0 }, + { 52, 0 } + } }; static void UpdateLast5Gfx(omObjData *object); void BoardLast5GfxInit(void) { - Last5GfxWork *work; - omObjData *object; - s32 turn_remain; - s32 lastF; - turn_remain = GWSystem.max_turn-GWSystem.turn; - if(turn_remain > 4 || turn_remain < 0) { - return; - } else { - s32 i; - turn_remain = 4-turn_remain; - object = omAddObjEx(boardObjMan, 0, 0, 0, -1, UpdateLast5Gfx); - last5GfxObj = object; - work = OM_GET_WORK_PTR(object, Last5GfxWork); - work->kill = 0; - work->stop_time = 0; - work->time = 0; - work->group = HuSprGrpCreate(3); - if((s32)(GWSystem.max_turn-GWSystem.turn) == 0) { - work->is_last = 1; - lastF = 1; - } else { - work->is_last = 0; - lastF = 0; - } - for(i=0; i<3; i++) { - s32 prio; - s32 spr_file; - - if(i == 1) { - prio = 1000; - } else { - prio = 1400; - } - spr_file = last5GfxSprTbl[i]; - if(i == 2 && work->is_last && GWLanguageGet() != 0) { - spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98); - } - BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]); - HuSprGrpMemberSet(work->group, i, work->sprites[i]); - HuSprAttrSet(work->group, i, HUSPR_ATTR_LINEAR); - HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]); - } - if(!work->is_last) { - HuSprite *sprite = &HuSprData[HuSprGrpData[work->group].members[1]]; - HuSprBankSet(work->group, 1, 0); - sprite->frame = turn_remain; - } else { - HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); - } - HuSprAttrSet(work->group, 1, HUSPR_ATTR_NOANIM); - object->trans.x = 0.0f; - HuSprGrpTPLvlSet(work->group, object->trans.x); - HuSprGrpPosSet(work->group, 288, 72); - HuAudFXPlay(838); - work->time = 0; - } + Last5GfxWork *work; + omObjData *object; + s32 turn_remain; + s32 lastF; + turn_remain = GWSystem.max_turn-GWSystem.turn; + if(turn_remain > 4 || turn_remain < 0) { + return; + } else { + s32 i; + turn_remain = 4-turn_remain; + object = omAddObjEx(boardObjMan, 0, 0, 0, -1, UpdateLast5Gfx); + last5GfxObj = object; + work = OM_GET_WORK_PTR(object, Last5GfxWork); + work->kill = 0; + work->stop_time = 0; + work->time = 0; + work->group = HuSprGrpCreate(3); + if((s32)(GWSystem.max_turn-GWSystem.turn) == 0) { + work->is_last = 1; + lastF = 1; + } else { + work->is_last = 0; + lastF = 0; + } + for(i=0; i<3; i++) { + s32 prio; + s32 spr_file; + + if(i == 1) { + prio = 1000; + } else { + prio = 1400; + } +#if !VERSION_JP + spr_file = last5GfxSprTbl[i]; + if(i == 2 && work->is_last && GWLanguageGet() != 0) { + spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98); + } + BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]); +#else + BoardSpriteCreate(last5GfxSprTbl[i], prio, NULL, &work->sprites[i]); +#endif + HuSprGrpMemberSet(work->group, i, work->sprites[i]); + HuSprAttrSet(work->group, i, HUSPR_ATTR_LINEAR); + HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]); + } + if(!work->is_last) { + HuSprite *sprite = &HuSprData[HuSprGrpData[work->group].members[1]]; + HuSprBankSet(work->group, 1, 0); + sprite->frame = turn_remain; + } else { + HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); + } + HuSprAttrSet(work->group, 1, HUSPR_ATTR_NOANIM); + object->trans.x = 0.0f; + HuSprGrpTPLvlSet(work->group, object->trans.x); + HuSprGrpPosSet(work->group, HU_DISP_CENTERX, 72); + HuAudFXPlay(838); + work->time = 0; + } } static void UpdateLast5Gfx(omObjData *object) { - Last5GfxWork *work = OM_GET_WORK_PTR(object, Last5GfxWork); - if(work->kill || BoardIsKill()) { - HuSprGrpKill(work->group); - last5GfxObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->stop_time != 0) { - work->stop_time--; - return; - } - switch(work->state) { - case 0: - object->trans.x += 1.0f/30.0f; - if(object->trans.x > 1.0f) { - object->trans.x = 1.0f; - work->state = 1; - } - HuSprGrpTPLvlSet(work->group, object->trans.x); - break; - - case 1: - if(work->time >= 720) { - work->state = 2; - work->stop_time = 90; - if(work->is_last) { - HuSprGrpScaleSet(work->group, 1.0f, 1.0f); - } else { - HuSprScaleSet(work->group, 1, 1.0f, 1.0f); - } - } else { - s16 angle; - angle = work->time%180; - OSs16tof32(&angle, &object->trans.y); - object->trans.y = sin((object->trans.y*M_PI)/180.0)+0.5; - if(work->is_last) { - HuSprGrpScaleSet(work->group, object->trans.y, object->trans.y); - } else { - HuSprScaleSet(work->group, 1, object->trans.y, object->trans.y); - } - work->time += 9; - } - break; - - case 2: - object->trans.x -= 1.0f/30.0f; - if(object->trans.x < 0.0f) { - object->trans.x = 0.0f; - work->kill = 1; - } - HuSprGrpTPLvlSet(work->group, object->trans.x); - break; - } + Last5GfxWork *work = OM_GET_WORK_PTR(object, Last5GfxWork); + if(work->kill || BoardIsKill()) { + HuSprGrpKill(work->group); + last5GfxObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->stop_time != 0) { + work->stop_time--; + return; + } + switch(work->state) { + case 0: + object->trans.x += 1.0f/30.0f; + if(object->trans.x > 1.0f) { + object->trans.x = 1.0f; + work->state = 1; + } + HuSprGrpTPLvlSet(work->group, object->trans.x); + break; + + case 1: + if(work->time >= 720) { + work->state = 2; + work->stop_time = 90; + if(work->is_last) { + HuSprGrpScaleSet(work->group, 1.0f, 1.0f); + } else { + HuSprScaleSet(work->group, 1, 1.0f, 1.0f); + } + } else { + s16 angle; + angle = work->time%180; + OSs16tof32(&angle, &object->trans.y); + object->trans.y = sind(object->trans.y)+0.5; + if(work->is_last) { + HuSprGrpScaleSet(work->group, object->trans.y, object->trans.y); + } else { + HuSprScaleSet(work->group, 1, object->trans.y, object->trans.y); + } + work->time += 9; + } + break; + + case 2: + object->trans.x -= 1.0f/30.0f; + if(object->trans.x < 0.0f) { + object->trans.x = 0.0f; + work->kill = 1; + } + HuSprGrpTPLvlSet(work->group, object->trans.x); + break; + } } void BoardLast5GfxShowSet(s32 show) { - s32 i; - Last5GfxWork *work; - if(!last5GfxObj) { - return; - } - - work = OM_GET_WORK_PTR(last5GfxObj, Last5GfxWork); - for(i=0; i<3; i++) { - if(show) { - HuSprAttrReset(work->group, i, HUSPR_ATTR_DISPOFF); - } else { - HuSprAttrSet(work->group, i, HUSPR_ATTR_DISPOFF); - } - if(work->is_last) { - HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); - } - } + s32 i; + Last5GfxWork *work; + if(!last5GfxObj) { + return; + } + + work = OM_GET_WORK_PTR(last5GfxObj, Last5GfxWork); + for(i=0; i<3; i++) { + if(show) { + HuSprAttrReset(work->group, i, HUSPR_ATTR_DISPOFF); + } else { + HuSprAttrSet(work->group, i, HUSPR_ATTR_DISPOFF); + } + if(work->is_last) { + HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); + } + } } static s32 tauntActiveFXTbl[4] = { -1, -1, -1, -1 }; static s32 tauntFXTbl[8] = { - 294, - 358, - 422, - 486, - 550, - 614, - 678, - 742 + 294, + 358, + 422, + 486, + 550, + 614, + 678, + 742 }; typedef struct taunt_work { - u8 kill : 1; + u8 kill : 1; } TauntWork; static void TauntUpdate(omObjData *object); void BoardTauntInit(void) { - s32 i; - tauntObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, TauntUpdate); - for(i=0; i<4; i++) { - tauntActiveFXTbl[i] = -1; - } - _SetFlag(FLAG_ID_MAKE(1, 14)); + s32 i; + tauntObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, TauntUpdate); + for(i=0; i<4; i++) { + tauntActiveFXTbl[i] = -1; + } + _SetFlag(FLAG_ID_MAKE(1, 14)); } void BoardTauntKill(void) { - TauntWork *work; - if(!tauntObj) { - return; - } - work = OM_GET_WORK_PTR(tauntObj, TauntWork); - work->kill = 1; - _SetFlag(FLAG_ID_MAKE(1, 14)); + TauntWork *work; + if(!tauntObj) { + return; + } + work = OM_GET_WORK_PTR(tauntObj, TauntWork); + work->kill = 1; + _SetFlag(FLAG_ID_MAKE(1, 14)); } static void TauntUpdate(omObjData *object) { - s32 i; - s32 port; - s32 character; - TauntWork *work; - work = OM_GET_WORK_PTR(object, TauntWork); - if(work->kill || BoardIsKill()) { - for(i=0; i<4; i++) { - if(tauntActiveFXTbl[i] >= 0) { - HuAudFXStop(tauntActiveFXTbl[i]); - tauntActiveFXTbl[i] = -1; - } - } - tauntObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - for(i=0; i<4; i++) { - if(tauntActiveFXTbl[i] >= 0 && HuAudFXStatusGet(tauntActiveFXTbl[i]) == 0) { - tauntActiveFXTbl[i] = -1; - } - } - if(BoardPauseActiveCheck()) { - return; - } - if(_CheckFlag(FLAG_ID_MAKE(1, 14))) { - return; - } - if(WipeStatGet()) { - return; - } - if(GWSystem.player_curr == -1) { - return; - } - for(i=0; i<4; i++) { - if(i == GWSystem.player_curr || GWPlayer[i].com) { - continue; - } - port = GWPlayer[i].port & 0x3; - character = GWPlayer[i].character & 0x7; - if(tauntActiveFXTbl[port] >= 0) { - UnkMsmStruct_01 param; - float vol, pan; - vol = (64.0f*(HuPadSubStkX[port]/59.0f))+64.0f; - pan = 8191.0f*(HuPadSubStkY[port]/59.0f); - memset(¶m, 0, sizeof(UnkMsmStruct_01)); - param.unk00 = 6; - OSf32tos8(&vol, ¶m.unk05); - OSf32tos16(&pan, ¶m.unk06); - msmSeSetParam(tauntActiveFXTbl[port], ¶m); - } else { - if(HuPadBtnDown[port] & PAD_TRIGGER_L) { - tauntActiveFXTbl[port] = HuAudFXPlay(tauntFXTbl[character]); - } - } - } + s32 i; + s32 port; + s32 character; + TauntWork *work; + work = OM_GET_WORK_PTR(object, TauntWork); + if(work->kill || BoardIsKill()) { + for(i=0; i<4; i++) { + if(tauntActiveFXTbl[i] >= 0) { + HuAudFXStop(tauntActiveFXTbl[i]); + tauntActiveFXTbl[i] = -1; + } + } + tauntObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + for(i=0; i<4; i++) { + if(tauntActiveFXTbl[i] >= 0 && HuAudFXStatusGet(tauntActiveFXTbl[i]) == 0) { + tauntActiveFXTbl[i] = -1; + } + } + if(BoardPauseActiveCheck()) { + return; + } + if(_CheckFlag(FLAG_ID_MAKE(1, 14))) { + return; + } + if(WipeStatGet()) { + return; + } + if(GWSystem.player_curr == -1) { + return; + } + for(i=0; i<4; i++) { + if(i == GWSystem.player_curr || GWPlayer[i].com) { + continue; + } + port = GWPlayer[i].port & 0x3; + character = GWPlayer[i].character & 0x7; + if(tauntActiveFXTbl[port] >= 0) { + MSM_SEPARAM param; + float vol, pan; + vol = (64.0f*(HuPadSubStkX[port]/59.0f))+64.0f; + pan = 8191.0f*(HuPadSubStkY[port]/59.0f); + memset(¶m, 0, sizeof(MSM_SEPARAM)); + param.flag = MSM_SEPARAM_PITCH|MSM_SEPARAM_PAN; + OSf32tos8(&vol, ¶m.pan); + OSf32tos16(&pan, ¶m.pitch); + msmSeSetParam(tauntActiveFXTbl[port], ¶m); + } else { + if(HuPadBtnDown[port] & PAD_TRIGGER_L) { + tauntActiveFXTbl[port] = HuAudFXPlay(tauntFXTbl[character]); + } + } + } } s32 BoardDataDirReadAsync(s32 data_num) { - s32 status = HuDataDirReadAsync(data_num); - return status; + s32 status = HuDataDirReadAsync(data_num); + return status; } void BoardDataAsyncWait(s32 status) { - if(status == -1) { - return; - } - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } -} \ No newline at end of file + if(status == -1) { + return; + } + while(!HuDataGetAsyncStat(status)) { + HuPrcVSleep(); + } +} diff --git a/src/game/board/mg_setup.c b/src/game/board/mg_setup.c index 82e6b55b..ec5ac7a4 100644 --- a/src/game/board/mg_setup.c +++ b/src/game/board/mg_setup.c @@ -12,6 +12,8 @@ #include "game/board/tutorial.h" #include "game/board/window.h" +#include "ext_math.h" + // structs typedef struct structActiveMG { s16 unk_00; @@ -53,10 +55,10 @@ static s16 mgPlay4P[8]; // data static s32 mgSetupSprTbl[13] = { - 0x0007004B, 0x0007004C, 0x0007004D, 0x0007004E, - 0x0007004F, 0x00070052, 0x00070050, 0x00070051, - 0x00070053, 0x00070054, 0x00070055, 0x00070068, - 0x00070056 + DATA_MAKE_NUM(DATADIR_BOARD, 0x4B), DATA_MAKE_NUM(DATADIR_BOARD, 0x4C), DATA_MAKE_NUM(DATADIR_BOARD, 0x4D), DATA_MAKE_NUM(DATADIR_BOARD, 0x4E), + DATA_MAKE_NUM(DATADIR_BOARD, 0x4F), DATA_MAKE_NUM(DATADIR_BOARD, 0x52), DATA_MAKE_NUM(DATADIR_BOARD, 0x50), DATA_MAKE_NUM(DATADIR_BOARD, 0x51), + DATA_MAKE_NUM(DATADIR_BOARD, 0x53), DATA_MAKE_NUM(DATADIR_BOARD, 0x54), DATA_MAKE_NUM(DATADIR_BOARD, 0x55), DATA_MAKE_NUM(DATADIR_BOARD, 0x68), + DATA_MAKE_NUM(DATADIR_BOARD, 0x56) }; static Vec statusLayout4P[4] = { { 170.0f, 244.0f, 0.0f }, @@ -77,9 +79,9 @@ static Vec statusLayout2Vs2[4] = { { 406.0f, 348.0f, 0.0f }, }; static s32 luckyMessTbl[9] = { - 0x00140000, 0x00140005, 0x0014000A, 0x0014000F, - 0x00140014, 0x00140019, 0x00140000, 0x00140000, - 0x00140000 + MAKE_MESSID(0x14, 0x00), MAKE_MESSID(0x14, 0x05), MAKE_MESSID(0x14, 0x0A), MAKE_MESSID(0x14, 0x0F), + MAKE_MESSID(0x14, 0x14), MAKE_MESSID(0x14, 0x19), MAKE_MESSID(0x14, 0x00), MAKE_MESSID(0x14, 0x00), + MAKE_MESSID(0x14, 0x00) }; // sbss @@ -145,9 +147,9 @@ static inline s32 setupObjGet(void) { static void ExecMGSetup(void) { s32 sp60[9] = { - 0x750000, 0x760000, 0x770000, - 0x780000, 0x790000, 0x7A0000, - 0x7B0000, 0x7C0000, 0x7D0000 + DATADIR_W01, DATADIR_W02, DATADIR_W03, + DATADIR_W04, DATADIR_W05, DATADIR_W06, + DATADIR_W10, DATADIR_W20, DATADIR_W21 }; Vec sp54; u16 var_r24; @@ -255,8 +257,8 @@ static void ExecMGSetup(void) { while (setupObjGet() != 7) { HuPrcVSleep(); } - HuDataDirClose(0x70000); - HuDataDirClose(0x20000); + HuDataDirClose(DATADIR_BOARD); + HuDataDirClose(DATADIR_BGUEST); HuDataDirClose(sp60[GWBoardGet()]); HuPrcSleep(2); if (_CheckFlag(FLAG_ID_MAKE(0, 11)) != 0) { @@ -319,8 +321,8 @@ static void DetermineMGList(bitcopy* arg0) { } } mgListAll[var_r24] = -1; - temp_r26 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 4, 0x10000000U); - temp_r25 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 2, 0x10000000U); + temp_r26 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 4, MEMORY_DEFAULT_NUM); + temp_r25 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 2, MEMORY_DEFAULT_NUM); var_r31 = mgInfoTbl; for (var_r29 = var_r30 = 0; var_r30 < var_r27; var_r30++, var_r31++) { @@ -630,7 +632,7 @@ static void CreateMGSetup(void) { temp_r29->unk_02 = 0; temp_r29->unk_03 = 0; temp_r29->unk_04 = 0; - temp_r28->unk_0C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x154, 0x10000000U); + temp_r28->unk_0C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x154, MEMORY_DEFAULT_NUM); temp_r31 = temp_r28->unk_0C; temp_r31->unk_00[0] = HuSprGrpCreate(0xD); @@ -767,7 +769,7 @@ static void SeparateStatus(bitcopy* arg0, omObjData* arg1) { return; } OSu8tof32((u8*)&arg0->unk_03, &temp_f29); - temp_f30 = sin((temp_f29 * M_PI) / 180.0) * 4.0 + 1.0; + temp_f30 = sind(temp_f29) * 4.0 + 1.0; arg0->unk_03 += 6; if (arg0->unk_03 > 0x5A) { arg0->unk_03 = 0x5A; @@ -787,7 +789,7 @@ static void PopupVS(bitcopy* arg0, omObjData* arg1) { temp_r29 = arg0->unk_0C; if (arg0->unk_02 == 0) { - HuSprAttrReset(temp_r29->unk_00[0], 0, 4); + HuSprAttrReset(temp_r29->unk_00[0], 0, HUSPR_ATTR_DISPOFF); HuSprAttrSet(temp_r29->unk_00[0], 0, 8); HuSprScaleSet(temp_r29->unk_00[0], 0, 0.001f, 0.001f); HuSprPosSet(temp_r29->unk_00[0], 0, 0.0f, 64.0f); @@ -797,9 +799,9 @@ static void PopupVS(bitcopy* arg0, omObjData* arg1) { } OSs16tof32(&arg0->unk_04, &temp_f31); if (arg0->unk_04 < 0x5A) { - var_f30 = 2.0 * sin((M_PI * temp_f31) / 180.0); + var_f30 = 2.0 * sind(temp_f31); } else { - var_f30 = 1.0 + sin((M_PI * temp_f31) / 180.0); + var_f30 = 1.0 + sind(temp_f31); if (arg0->unk_04 >= 0xB4) { var_f30 = 1.0f; temp_r28 = (bitcopy*) mgSetupObj->work; @@ -832,13 +834,13 @@ static void FallMGType(bitcopy* arg0, omObjData* arg1) { temp_r31 = arg0->unk_0C; temp_r30 = sp8[mgType]; if (arg0->unk_02 == 0) { - HuSprAttrReset(temp_r31->unk_00[0], temp_r30, 4); + HuSprAttrReset(temp_r31->unk_00[0], temp_r30, HUSPR_ATTR_DISPOFF); temp_r31->unk_1C[0][temp_r30].y = -284.0f; temp_r31->unk_1C[1][temp_r30].y = -128.0f; arg0->unk_02 = 1; } - PSVECSubtract(&temp_r31->unk_1C[1][temp_r30], &temp_r31->unk_1C[0][temp_r30], &sp10); - if (PSVECMag(&sp10) <= 1.0f) { + VECSubtract(&temp_r31->unk_1C[1][temp_r30], &temp_r31->unk_1C[0][temp_r30], &sp10); + if (VECMag(&sp10) <= 1.0f) { temp_r31->unk_1C[0][temp_r30] = temp_r31->unk_1C[1][temp_r30]; temp_r29 = (bitcopy*) mgSetupObj->work; temp_r29->field00_bit1 = 7; @@ -846,8 +848,8 @@ static void FallMGType(bitcopy* arg0, omObjData* arg1) { temp_r29->unk_03 = 0; temp_r29->unk_04 = 0; } else { - PSVECScale(&sp10, &sp10, 0.1f); - PSVECAdd(&sp10, &temp_r31->unk_1C[0][temp_r30], &temp_r31->unk_1C[0][temp_r30]); + VECScale(&sp10, &sp10, 0.1f); + VECAdd(&sp10, &temp_r31->unk_1C[0][temp_r30], &temp_r31->unk_1C[0][temp_r30]); } HuSprPosSet(temp_r31->unk_00[0], temp_r30, temp_r31->unk_1C[0][temp_r30].x, temp_r31->unk_1C[0][temp_r30].y); } @@ -872,7 +874,7 @@ static void LuckyMGFall(bitcopy* arg0, omObjData* arg1) { temp_r27 = &temp_r29->unk_1C[0][temp_r24]; switch (arg0->unk_02) { case 0: - HuSprAttrReset(temp_r29->unk_00[0], 4, 4); + HuSprAttrReset(temp_r29->unk_00[0], 4, HUSPR_ATTR_DISPOFF); temp_r28->y = -284.0f; temp_r25->y = -128.0f; arg0->unk_02 = 1; @@ -889,7 +891,7 @@ static void LuckyMGFall(bitcopy* arg0, omObjData* arg1) { case 2: temp_r27->y += 10.0f; if (328.0f < temp_r27->y) { - HuSprAttrReset(temp_r29->unk_00[0], temp_r24, 4); + HuSprAttrReset(temp_r29->unk_00[0], temp_r24, HUSPR_ATTR_DISPOFF); temp_r26 = (bitcopy*) mgSetupObj->work; temp_r26->field00_bit1 = 7; temp_r26->unk_02 = 0; @@ -935,8 +937,8 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) { temp_r27 = arg0->unk_0C; switch (arg0->unk_02) { case 0: - HuSprAttrReset(temp_r27->unk_00[0], 8, 4); - HuSprAttrReset(temp_r27->unk_00[0], 9, 4); + HuSprAttrReset(temp_r27->unk_00[0], 8, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r27->unk_00[0], 9, HUSPR_ATTR_DISPOFF); HuSprAttrSet(temp_r27->unk_00[0], 8, 8); HuSprAttrSet(temp_r27->unk_00[0], 9, 8); HuSprPosSet(temp_r27->unk_00[0], 8, 0.0f, 0.0f); @@ -958,7 +960,7 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) { case 1: if (arg0->unk_03 < 0x5A) { OSu8tof32((u8*) &arg0->unk_03, &temp_f28); - temp_f29 = sin((M_PI * temp_f28) / 180.0); + temp_f29 = sind(temp_f28); HuSprScaleSet(temp_r27->unk_00[0], 8, temp_f29, temp_f29); HuSprScaleSet(temp_r27->unk_00[0], 9, temp_f29, temp_f29); arg0->unk_03 += 2; @@ -1006,7 +1008,7 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) { return; } temp_f28 = (arg0->unk_04 % 360); - temp_f29 = (1.0 + (0.5 * sin((M_PI * temp_f28) / 180.0))); + temp_f29 = (1.0 + (0.5 * sind(temp_f28))); HuSprScaleSet(temp_r27->unk_00[0], 8, temp_f29, temp_f29); HuSprScaleSet(temp_r27->unk_00[0], 9, temp_f29, temp_f29); break; @@ -1042,10 +1044,10 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { temp_r24 = arg0->unk_0C; temp_r22 = mgType + 5; - switch (arg0->unk_02) { /* irregular */ + switch (arg0->unk_02) { case 0: HuSprAttrSet(temp_r24->unk_00[0], temp_r22, 8); - HuSprAttrReset(temp_r24->unk_00[0], temp_r22, 4); + HuSprAttrReset(temp_r24->unk_00[0], temp_r22, HUSPR_ATTR_DISPOFF); HuSprPosSet(temp_r24->unk_00[0], temp_r22, 0.0f, 32.0f); HuSprScaleSet(temp_r24->unk_00[0], temp_r22, 0.001f, 0.001f); arg0->unk_04 = 0; @@ -1066,7 +1068,7 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { if (activeMG[var_r23].unk_03 != 0) { sp14 = activeMG[var_r23].unk_04; } else { - sp14 = 0x90001; + sp14 = MAKE_MESSID(9, 1); } HuWinMesSet(temp_r3, sp14); activeMG[var_r23].unk_00 = temp_r3; @@ -1075,7 +1077,7 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { case 1: if (arg0->unk_03 < 0x5A) { OSu8tof32((u8*) &arg0->unk_03, &var_f26); - temp_f27 = sin((M_PI * var_f26) / 180.0); + temp_f27 = sind(var_f26); arg0->unk_03 += 3; HuSprScaleSet(temp_r24->unk_00[0], temp_r22, temp_f27, temp_f27); return; @@ -1084,11 +1086,11 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { for (var_r23 = 0; var_r23 < arg0->field01_bit0; var_r23++) { HuWinDispOn(activeMG[var_r23].unk_00); } - HuSprAttrReset(temp_r24->unk_00[0], 0xA, 4); + HuSprAttrReset(temp_r24->unk_00[0], 0xA, HUSPR_ATTR_DISPOFF); HuSprAttrSet(temp_r24->unk_00[0], 0xA, 8); HuSprPosSet(temp_r24->unk_00[0], 0xA, -148.0f, cursorYTbl[0]); temp_r18 = &hiliteColTbl[mgType]; - HuSprAttrReset(temp_r24->unk_00[0], 0xC, 4); + HuSprAttrReset(temp_r24->unk_00[0], 0xC, HUSPR_ATTR_DISPOFF); HuSprPosSet(temp_r24->unk_00[0], 0xC, 0.0f, hiliteYTbl[0]); HuSprTPLvlSet(temp_r24->unk_00[0], 0xC, 0.7f); HuSprScaleSet(temp_r24->unk_00[0], 0xC, 32.0f, 3.5f); @@ -1158,15 +1160,15 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { hiliteTimer = 0; } if (hiliteShowF != 0) { - HuSprAttrReset(temp_r24->unk_00[0], 0xC, 4); + HuSprAttrReset(temp_r24->unk_00[0], 0xC, HUSPR_ATTR_DISPOFF); return; } - HuSprAttrSet(temp_r24->unk_00[0], 0xC, 4); + HuSprAttrSet(temp_r24->unk_00[0], 0xC, HUSPR_ATTR_DISPOFF); return; case 5: if (arg0->unk_03 < 0x5A) { OSu8tof32((u8*) &arg0->unk_03, &var_f26); - temp_f27 = (1.0 + (2.0 * sin((M_PI * var_f26) / 180.0))); + temp_f27 = (1.0 + (2.0 * sind(var_f26))); arg0->unk_03 += 4; if (arg0->unk_03 > 0x5A) { arg0->unk_03 = 0x5A; diff --git a/src/game/board/model.c b/src/game/board/model.c index b621f1fd..599f05e2 100644 --- a/src/game/board/model.c +++ b/src/game/board/model.c @@ -1,5 +1,5 @@ -#include "game/board/main.h" #include "game/board/model.h" +#include "game/board/main.h" #include "game/chrman.h" #include "game/hsfman.h" #include "game/hsfmotion.h" @@ -10,31 +10,31 @@ #define BOARD_MOT_MAX 32 typedef struct board_model { - struct { - u8 visible : 1; - u8 visible_old : 1; - u8 field00_bit2 : 1; - u8 field00_bit3 : 1; - u8 field00_bit4 : 1; - }; - s8 mot_count; - s8 character; - u8 alpha; - u8 layer; - u16 camera; - s16 index; - s16 id; - s16 mot_id[BOARD_MOT_MAX]; - s16 curr_mot; - HsfData *data; - HsfData *mot_data[BOARD_MOT_MAX]; - float unk_D4; - s32 data_num; - float mot_start; - float mot_end; - Vec pos; - Vec rot; - Vec scale; + struct { + u8 visible : 1; + u8 visible_old : 1; + u8 field00_bit2 : 1; + u8 field00_bit3 : 1; + u8 field00_bit4 : 1; + }; + s8 mot_count; + s8 character; + u8 alpha; + u8 layer; + u16 camera; + s16 index; + s16 id; + s16 mot_id[BOARD_MOT_MAX]; + s16 curr_mot; + HsfData *data; + HsfData *mot_data[BOARD_MOT_MAX]; + float unk_D4; + s32 data_num; + float mot_start; + float mot_end; + Vec pos; + Vec rot; + Vec scale; } BoardModel; static s16 modelDataNum; @@ -52,1132 +52,1199 @@ void BoardModelDummyUpdate(void); void BoardModelVisibilityUpdate(void); typedef struct modelmgr_work { - u8 kill : 1; + u8 kill : 1; } ModelMgrWork; void BoardModelInit(void) { - ModelMgrWork *work; - s32 i; - modelDataList = HuMemDirectMallocNum(HEAP_SYSTEM, BOARD_MODEL_MAX*sizeof(BoardModel), MEMORY_DEFAULT_NUM); - reflectMapNo = 0; - modelDataNum = 0; - memset(modelDataList, 0, BOARD_MODEL_MAX*sizeof(BoardModel)); - for(i=0; ikill = 0; - omSetStatBit(modelMgrObj, OM_STAT_NOPAUSE|0x80); + ModelMgrWork *work; + s32 i; + modelDataList = HuMemDirectMallocNum(HEAP_SYSTEM, BOARD_MODEL_MAX * sizeof(BoardModel), MEMORY_DEFAULT_NUM); + reflectMapNo = 0; + modelDataNum = 0; + memset(modelDataList, 0, BOARD_MODEL_MAX * sizeof(BoardModel)); + for (i = 0; i < BOARD_MODEL_MAX; i++) { + modelDataList[i].index = -1; + modelDataList[i].visible = 0; + } + modelMgrObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, ModelMgrFunc); + work = OM_GET_WORK_PTR(modelMgrObj, ModelMgrWork); + work->kill = 0; + omSetStatBit(modelMgrObj, OM_STAT_NOPAUSE | 0x80); } void BoardModelKillAll(void) { - if(modelMgrObj) { - ModelMgrWork *work = OM_GET_WORK_PTR(modelMgrObj, ModelMgrWork); - work->kill = 1; - } - if(modelDataList) { - BoardModel *model; - for(model=modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { - KillBoardModel(model); - } - if(modelDataList) { - HuMemDirectFree(modelDataList); - modelDataList = NULL; - } - - } + if (modelMgrObj) { + ModelMgrWork *work = OM_GET_WORK_PTR(modelMgrObj, ModelMgrWork); + work->kill = 1; + } + if (modelDataList) { + BoardModel *model; + for (model = modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { + KillBoardModel(model); + } + if (modelDataList) { + HuMemDirectFree(modelDataList); + modelDataList = NULL; + } + } } static void ModelMgrFunc(omObjData *object) { - ModelMgrWork *work = OM_GET_WORK_PTR(modelMgrObj, ModelMgrWork); - if(work->kill || BoardIsKill()) { - modelMgrObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - BoardModelDummyUpdate(); - BoardModelVisibilityUpdate(); + ModelMgrWork *work = OM_GET_WORK_PTR(modelMgrObj, ModelMgrWork); + if (work->kill || BoardIsKill()) { + modelMgrObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + BoardModelDummyUpdate(); + BoardModelVisibilityUpdate(); } -void BoardModelDummyUpdate(void) -{ - -} +void BoardModelDummyUpdate(void) { } void BoardModelVisibilityUpdate(void) { - s32 i; - BoardModel *model; - u32 temp[2]; - Vec pos, target; - temp[1] = temp[0] = 0; - BoardCameraPosGet(&pos); - BoardCameraTargetGet(&target); - for(i=0, model = modelDataList; iindex == -1) { - continue; - } - attr = Hu3DModelAttrGet(model->id); - if(!model->visible) { - if(!(attr & 0x1)) { - Hu3DModelAttrSet(model->id, 1); - } - } else { - if(attr & 0x1) { - Hu3DModelAttrReset(model->id, 1); - } - } - } + s32 i; + BoardModel *model; + u32 temp[2]; + Vec pos, target; + temp[1] = temp[0] = 0; + BoardCameraPosGet(&pos); + BoardCameraTargetGet(&target); + for (i = 0, model = modelDataList; i < BOARD_MODEL_MAX; i++, model++) { + u32 attr; + if (model->index == -1) { + continue; + } + attr = Hu3DModelAttrGet(model->id); + if (!model->visible) { + if (!(attr & 0x1)) { + Hu3DModelAttrSet(model->id, HU3D_ATTR_DISPOFF); + } + } + else { + if (attr & 0x1) { + Hu3DModelAttrReset(model->id, HU3D_ATTR_DISPOFF); + } + } + } } void BoardModelHideSetAll(s32 flag) { - BoardModel *model; - if(!modelDataList) { - return; - } - - for(model=modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { - if(model->index == -1) { - continue; - } - if(flag) { - model->visible_old = model->visible; - model->visible = 0; - } else { - model->visible = model->visible_old; - } - } + BoardModel *model; + if (!modelDataList) { + return; + } + + for (model = modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { + if (model->index == -1) { + continue; + } + if (flag) { + model->visible_old = model->visible; + model->visible = 0; + } + else { + model->visible = model->visible_old; + } + } } void BoardModelAmbSetAll(float r, float g, float b) { - BoardModel *model; - for(model=modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { - if(model->index == -1) { - continue; - } - BoardModelAmbSet(model->index, r, g, b); - } + BoardModel *model; + for (model = modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { + if (model->index == -1) { + continue; + } + BoardModelAmbSet(model->index, r, g, b); + } } void BoardModelCameraSetAll(u16 camera) { - BoardModel *model; - for(model=modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { - if(model->index == -1) { - continue; - } - if(model->character != -1) { - continue; - } - Hu3DModelCameraSet(model->id, camera); - model->camera = camera; - } + BoardModel *model; + for (model = modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { + if (model->index == -1) { + continue; + } + if (model->character != -1) { + continue; + } + Hu3DModelCameraSet(model->id, camera); + model->camera = camera; + } } static s16 CreateInstance(s32 character, s32 data_num, s32 *mot_list, s32 link, s32 arg4) { - BoardModel *model; - s32 i; - model = NULL; - for(i=0; iindex = i+1; - model->character = character; - modelDataNum++; - if(CreateBoardModel(model, data_num, link) == 0) { - s32 count; - count = 0; - if(mot_list) { - for(count=0; mot_list[count] >= 0; count++); - if(count >= BOARD_MOT_MAX) { - count = BOARD_MOT_MAX; - } - } - for(i=0; imot_id[i] = -1; - } - if(CreateBoardModelMotion(model, count, mot_list) == 0) { - model->visible = 1; - model->visible_old = model->visible; - model->field00_bit2 = 0; - model->field00_bit4 = 0; - model->unk_D4 = 100.0f; - model->scale.x = model->scale.y = model->scale.z = 1.0f; - model->curr_mot = 0; - Hu3DModelCameraSet(model->id, 1); - Hu3DModelLayerSet(model->id, 0); - model->field00_bit3 = 0; - model->alpha = 255; - BoardModelPosSet(model->index, 0.0f, 0.0f, 0.0f); - BoardModelRotSet(model->index, 0.0f, 0.0f, 0.0f); - BoardModelScaleSet(model->index, 1.0f, 1.0f, 1.0f); - BoardModelAmbSet(model->index, 1.0f, 1.0f, 1.0f); - return model->index; - } - } - BoardModelKill(model->index); - return -1; + BoardModel *model; + s32 i; + model = NULL; + for (i = 0; i < BOARD_MODEL_MAX; i++) { + if (modelDataList[i].index == -1) { + model = &modelDataList[i]; + break; + } + } + if (!model) { + return -1; + } + memset(model, 0, sizeof(BoardModel)); + model->index = i + 1; + model->character = character; + modelDataNum++; + if (CreateBoardModel(model, data_num, link) == 0) { + s32 count; + count = 0; + if (mot_list) { + for (count = 0; mot_list[count] >= 0; count++) + ; + if (count >= BOARD_MOT_MAX) { + count = BOARD_MOT_MAX; + } + } + for (i = 0; i < BOARD_MOT_MAX; i++) { + model->mot_id[i] = -1; + } + if (CreateBoardModelMotion(model, count, mot_list) == 0) { + model->visible = 1; + model->visible_old = model->visible; + model->field00_bit2 = 0; + model->field00_bit4 = 0; + model->unk_D4 = 100.0f; + model->scale.x = model->scale.y = model->scale.z = 1.0f; + model->curr_mot = 0; + Hu3DModelCameraSet(model->id, 1); + Hu3DModelLayerSet(model->id, 0); + model->field00_bit3 = 0; + model->alpha = 255; + BoardModelPosSet(model->index, 0.0f, 0.0f, 0.0f); + BoardModelRotSet(model->index, 0.0f, 0.0f, 0.0f); + BoardModelScaleSet(model->index, 1.0f, 1.0f, 1.0f); + BoardModelAmbSet(model->index, 1.0f, 1.0f, 1.0f); + return model->index; + } + } + BoardModelKill(model->index); + return -1; } s16 BoardModelCreate(s32 data_num, s32 *mot_list, s32 link) { - return CreateInstance(-1, data_num, mot_list, link, 0); + return CreateInstance(-1, data_num, mot_list, link, 0); } s16 BoardModelCreateCharacter(s32 character, s32 data_num, s32 *mot_list, s32 link) { - return CreateInstance(character, data_num, mot_list, link, 0); + return CreateInstance(character, data_num, mot_list, link, 0); } s16 BoardModelCreateParam(BoardModelParam *param, Vec *pos, Vec *rot) { - float unk_param; - s16 model = BoardModelCreate(param->data_num, NULL, param->unk4.link); - if(model == -1) { - return -1; - } - BoardModelMotionStart(model, 0, (param->unk4.pause) ? 0x40000001 : 0); - if(!param->unk4.start_mot) { - BoardModelMotionSpeedSet(model, 0.0f); - } - BoardModelExistDupe(model, param->unk4.field04_bit0); - BoardModelVisibilitySet(model, param->unk4.visible); - if(pos) { - BoardModelPosSetV(model, pos); - } - if(rot) { - BoardModelRotSetV(model, rot); - } - OSs16tof32(¶m->unk6, &unk_param); - fn_8006DDE8(model, unk_param); - return model; + float unk_param; + s16 model = BoardModelCreate(param->data_num, NULL, param->unk4.link); + if (model == -1) { + return -1; + } + BoardModelMotionStart(model, 0, (param->unk4.pause) ? 0x40000001 : 0); + if (!param->unk4.start_mot) { + BoardModelMotionSpeedSet(model, 0.0f); + } + BoardModelExistDupe(model, param->unk4.field04_bit0); + BoardModelVisibilitySet(model, param->unk4.visible); + if (pos) { + BoardModelPosSetV(model, pos); + } + if (rot) { + BoardModelRotSetV(model, rot); + } + OSs16tof32(¶m->unk6, &unk_param); + fn_8006DDE8(model, unk_param); + return model; } void BoardModelKill(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(model_ptr) { - KillBoardModel(model_ptr); - } + BoardModel *model_ptr = SearchBoardModel(model); + if (model_ptr) { + KillBoardModel(model_ptr); + } } s16 BoardModelIDGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - return model_ptr->id; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + return model_ptr->id; + } } s32 fn_8006DC1C(s16 model, s32 arg1) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - model_ptr->field00_bit3 = arg1; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + model_ptr->field00_bit3 = arg1; + return 0; + } } s32 BoardModelPassSet(s16 model, s32 pass) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(pass != 0) { - Hu3DModelAttrSet(model_ptr->id, 2); - } else { - Hu3DModelAttrReset(model_ptr->id, 2); - } - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (pass != 0) { + Hu3DModelAttrSet(model_ptr->id, HU3D_ATTR_ZWRITE_OFF); + } + else { + Hu3DModelAttrReset(model_ptr->id, HU3D_ATTR_ZWRITE_OFF); + } + return 0; + } } s32 BoardModelAmbSet(s16 model, float r, float g, float b) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - Hu3DModelAmbSet(model_ptr->id, r, g, b); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + Hu3DModelAmbSet(model_ptr->id, r, g, b); + return 0; + } } s32 BoardModelExistCheck(s16 model, s32 arg1) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + return 0; + } } s32 BoardModelExistDupe(s16 model, s32 arg1) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + return 0; + } } s32 fn_8006DDE8(s16 model, float arg1) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(arg1 < 0) { - arg1 = -1; - } - model_ptr->unk_D4 = arg1; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (arg1 < 0) { + arg1 = -1; + } + model_ptr->unk_D4 = arg1; + return 0; + } } s32 BoardModelMotionCreate(s16 model, s32 data_num) { - BoardModel *model_ptr = SearchBoardModel(model); - s32 i; - if(!model_ptr) { - return -1; - } else { - s16 id; - if(model_ptr->mot_count >= BOARD_MOT_MAX) { - return -1; - } - for(i=1; imot_id[i] == -1) { - break; - } - } - if(model_ptr->character == -1) { - model_ptr->mot_data[i] = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); - if(!model_ptr->mot_data[i]) { - return -1; - } - model = Hu3DJointMotion(model_ptr->id, model_ptr->mot_data[i]); - } else { - model = CharModelMotionCreate(model_ptr->character, data_num); - CharModelMotionDataClose(model_ptr->character); - } - model_ptr->mot_id[i] = model; - model_ptr->mot_count++; - return i; - } + BoardModel *model_ptr = SearchBoardModel(model); + s32 i; + if (!model_ptr) { + return -1; + } + else { + s16 id; + if (model_ptr->mot_count >= BOARD_MOT_MAX) { + return -1; + } + for (i = 1; i < BOARD_MOT_MAX; i++) { + if (model_ptr->mot_id[i] == -1) { + break; + } + } + if (model_ptr->character == -1) { + model_ptr->mot_data[i] = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); + if (!model_ptr->mot_data[i]) { + return -1; + } + model = Hu3DJointMotion(model_ptr->id, model_ptr->mot_data[i]); + } + else { + model = CharModelMotionCreate(model_ptr->character, data_num); + CharModelMotionDataClose(model_ptr->character); + } + model_ptr->mot_id[i] = model; + model_ptr->mot_count++; + return i; + } } s32 BoardModelMotionKill(s16 model, s32 motion) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(motion >= BOARD_MOT_MAX || motion <= 0) { - return -1; - } - if(motion == model_ptr->curr_mot && model_ptr->curr_mot != 0) { - BoardModelMotionStart(model, 0, 0); - } - if(model_ptr->mot_id[motion] > 0) { - if(model_ptr->character == -1) { - Hu3DMotionKill(model_ptr->mot_id[motion]); - } else { - CharModelMotionKill(model_ptr->character, model_ptr->mot_id[motion]); - } - model_ptr->mot_id[motion] = -1; - } - model_ptr->mot_data[motion] = NULL; - model_ptr->mot_count--; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (motion >= BOARD_MOT_MAX || motion <= 0) { + return -1; + } + if (motion == model_ptr->curr_mot && model_ptr->curr_mot != 0) { + BoardModelMotionStart(model, 0, 0); + } + if (model_ptr->mot_id[motion] > 0) { + if (model_ptr->character == -1) { + Hu3DMotionKill(model_ptr->mot_id[motion]); + } + else { + CharModelMotionKill(model_ptr->character, model_ptr->mot_id[motion]); + } + model_ptr->mot_id[motion] = -1; + } + model_ptr->mot_data[motion] = NULL; + model_ptr->mot_count--; + return 0; + } } s32 BoardModelMotionStartEndSet(s16 model, s16 start, s16 end) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(start >= 0) { - OSs16tof32(&start, &model_ptr->mot_start); - } - if(end >= 0) { - OSs16tof32(&end, &model_ptr->mot_end); - } - Hu3DMotionStartEndSet(model_ptr->id, model_ptr->mot_start, model_ptr->mot_end); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (start >= 0) { + OSs16tof32(&start, &model_ptr->mot_start); + } + if (end >= 0) { + OSs16tof32(&end, &model_ptr->mot_end); + } + Hu3DMotionStartEndSet(model_ptr->id, model_ptr->mot_start, model_ptr->mot_end); + return 0; + } } s32 BoardModelMotionUpdateSet(s16 model, s32 flag) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(flag) { - Hu3DModelAttrSet(model_ptr->id, 0x40000001); - } else { - Hu3DModelAttrReset(model_ptr->id, 0x40000001); - } - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (flag) { + Hu3DModelAttrSet(model_ptr->id, HU3D_MOTATTR_LOOP); + } + else { + Hu3DModelAttrReset(model_ptr->id, HU3D_MOTATTR_LOOP); + } + return 0; + } } s32 BoardModelVoiceEnableSet(s16 model, s32 motion, s32 flag) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(motion >= BOARD_MOT_MAX || motion < 0) { - return 0; - } - if(model_ptr->character == -1) { - return 0; - } - CharModelVoiceEnableSet(model_ptr->character, model_ptr->mot_id[motion], flag); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (motion >= BOARD_MOT_MAX || motion < 0) { + return 0; + } + if (model_ptr->character == -1) { + return 0; + } + CharModelVoiceEnableSet(model_ptr->character, model_ptr->mot_id[motion], flag); + return 0; + } } s32 BoardModelMotionStart(s16 model, s32 motion, u32 attr) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(motion >= BOARD_MOT_MAX || motion < 0) { - return 0; - } - Hu3DMotionSpeedSet(model_ptr->id, 1.0f); - if(model_ptr->character == -1) { - Hu3DMotionSet(model_ptr->id, model_ptr->mot_id[motion]); - } else { - CharModelMotionSet(model_ptr->character, model_ptr->mot_id[motion]); - } - model_ptr->mot_start = 0.0f; - if(model_ptr->character == -1) { - model_ptr->mot_end = Hu3DMotionMaxTimeGet(model_ptr->id); - } else { - model_ptr->mot_end = CharModelMotionMaxTimeGet(model_ptr->character); - } - model_ptr->field00_bit4 = 0; - if(attr & 0x40000024) { - if(model_ptr->character == -1) { - Hu3DMotionTimeSet(model_ptr->id, model_ptr->mot_end); - } else { - CharModelMotionTimeSet(model_ptr->character, model_ptr->mot_end); - } - } - Hu3DModelAttrReset(model_ptr->id, 0x40000003); - Hu3DModelAttrSet(model_ptr->id, attr); - model_ptr->curr_mot = motion; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (motion >= BOARD_MOT_MAX || motion < 0) { + return 0; + } + Hu3DMotionSpeedSet(model_ptr->id, 1.0f); + if (model_ptr->character == -1) { + Hu3DMotionSet(model_ptr->id, model_ptr->mot_id[motion]); + } + else { + CharModelMotionSet(model_ptr->character, model_ptr->mot_id[motion]); + } + model_ptr->mot_start = 0.0f; + if (model_ptr->character == -1) { + model_ptr->mot_end = Hu3DMotionMaxTimeGet(model_ptr->id); + } + else { + model_ptr->mot_end = CharModelMotionMaxTimeGet(model_ptr->character); + } + model_ptr->field00_bit4 = 0; + if (attr & 0x40000024) { + if (model_ptr->character == -1) { + Hu3DMotionTimeSet(model_ptr->id, model_ptr->mot_end); + } + else { + CharModelMotionTimeSet(model_ptr->character, model_ptr->mot_end); + } + } + Hu3DModelAttrReset(model_ptr->id, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(model_ptr->id, attr); + model_ptr->curr_mot = motion; + return 0; + } } s32 BoardModelMotionShiftIDGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - return Hu3DMotionShiftIDGet(model_ptr->id); - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + return Hu3DMotionShiftIDGet(model_ptr->id); + } } s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(motion >= BOARD_MOT_MAX || motion < 0) { - return -1; - } - model_ptr->mot_start = 0.0f; - if(model_ptr->character == -1) { - model_ptr->mot_end = Hu3DMotionMaxTimeGet(model_ptr->id); - } else { - model_ptr->mot_end = CharModelMotionMaxTimeGet(model_ptr->character); - } - model_ptr->field00_bit4 = 0; - if(model_ptr->character == -1) { - Hu3DMotionShiftSet(model_ptr->id, model_ptr->mot_id[motion], time, shift_time, attr); - } else { - CharModelMotionShiftSet(model_ptr->character, model_ptr->mot_id[motion], time, shift_time, attr); - } - model_ptr->curr_mot = motion; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (motion >= BOARD_MOT_MAX || motion < 0) { + return -1; + } + model_ptr->mot_start = 0.0f; + if (model_ptr->character == -1) { + model_ptr->mot_end = Hu3DMotionMaxTimeGet(model_ptr->id); + } + else { + model_ptr->mot_end = CharModelMotionMaxTimeGet(model_ptr->character); + } + model_ptr->field00_bit4 = 0; + if (model_ptr->character == -1) { + Hu3DMotionShiftSet(model_ptr->id, model_ptr->mot_id[motion], time, shift_time, attr); + } + else { + CharModelMotionShiftSet(model_ptr->character, model_ptr->mot_id[motion], time, shift_time, attr); + } + model_ptr->curr_mot = motion; + return 0; + } } s32 BoardModelAttrSet(s16 model, u32 attr) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - Hu3DModelAttrSet(model_ptr->id, attr); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + Hu3DModelAttrSet(model_ptr->id, attr); + return 0; + } } s32 BoardModelAttrReset(s16 model, u32 attr) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - Hu3DModelAttrReset(model_ptr->id, attr); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + Hu3DModelAttrReset(model_ptr->id, attr); + return 0; + } } s32 BoardModelMotionTimeSet(s16 model, float time) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(model_ptr->character == -1) { - Hu3DMotionTimeSet(model_ptr->id, time); - } else { - CharModelMotionTimeSet(model_ptr->character, time); - } - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (model_ptr->character == -1) { + Hu3DMotionTimeSet(model_ptr->id, time); + } + else { + CharModelMotionTimeSet(model_ptr->character, time); + } + return 0; + } } float BoardModelMotionTimeGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - float time; - if(model_ptr->character == -1) { - time = Hu3DData[model_ptr->id].unk_64; - } else { - time = CharModelMotionTimeGet(model_ptr->character); - } - return time; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + float time; + if (model_ptr->character == -1) { + time = Hu3DData[model_ptr->id].unk_64; + } + else { + time = CharModelMotionTimeGet(model_ptr->character); + } + return time; + } } float BoardModelMotionMaxTimeGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - float time; - if(model_ptr->character == -1) { - time = Hu3DMotionMaxTimeGet(model_ptr->id); - } else { - time = CharModelMotionMaxTimeGet(model_ptr->character); - } - return time; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + float time; + if (model_ptr->character == -1) { + time = Hu3DMotionMaxTimeGet(model_ptr->id); + } + else { + time = CharModelMotionMaxTimeGet(model_ptr->character); + } + return time; + } } float BoardModelMotionSpeedGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model = &Hu3DData[model_ptr->id]; - return hsf_model->unk_68; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model = &Hu3DData[model_ptr->id]; + return hsf_model->unk_68; + } } s32 BoardModelMotionSpeedSet(s16 model, float speed) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - if(model_ptr->character == -1) { - Hu3DMotionSpeedSet(model_ptr->id, speed); - } else { - CharModelMotionSpeedSet(model_ptr->character, speed); - } - hsf_model = &Hu3DData[model_ptr->id]; - hsf_model->unk_88 = speed; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + if (model_ptr->character == -1) { + Hu3DMotionSpeedSet(model_ptr->id, speed); + } + else { + CharModelMotionSpeedSet(model_ptr->character, speed); + } + hsf_model = &Hu3DData[model_ptr->id]; + hsf_model->unk_88 = speed; + return 0; + } } s32 BoardModelMotionEndCheck(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return 1; - } else { - s32 result; - if(model_ptr->character == -1) { - result = Hu3DMotionEndCheck(model_ptr->id); - } else { - result = CharModelMotionEndCheck(model_ptr->character); - } - return result; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return 1; + } + else { + s32 result; + if (model_ptr->character == -1) { + result = Hu3DMotionEndCheck(model_ptr->id); + } + else { + result = CharModelMotionEndCheck(model_ptr->character); + } + return result; + } } s32 BoardModelMotionShapeSet(s16 model, s32 motion, u32 attr) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - if(model_ptr->character != -1) { - return -1; - } - if(motion >= BOARD_MOT_MAX) { - return -1; - } - hsf_model = &Hu3DData[model_ptr->id]; - hsf_model->unk_98 = 1.0f; - Hu3DMotionShapeSet(model_ptr->id, model_ptr->mot_id[motion]); - if(attr & 0x40000100) { - float max_time = Hu3DMotionMaxTimeGet(model_ptr->id); - hsf_model->unk_94 = max_time; - } - Hu3DModelAttrSet(model_ptr->id, attr); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + if (model_ptr->character != -1) { + return -1; + } + if (motion >= BOARD_MOT_MAX) { + return -1; + } + hsf_model = &Hu3DData[model_ptr->id]; + hsf_model->unk_98 = 1.0f; + Hu3DMotionShapeSet(model_ptr->id, model_ptr->mot_id[motion]); + if (attr & 0x40000100) { + float max_time = Hu3DMotionMaxTimeGet(model_ptr->id); + hsf_model->unk_94 = max_time; + } + Hu3DModelAttrSet(model_ptr->id, attr); + return 0; + } } float BoardModelMotionShapeTimeGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - if(model_ptr->character != -1) { - return -1; - } - hsf_model = &Hu3DData[model_ptr->id]; - return hsf_model->unk_94; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + if (model_ptr->character != -1) { + return -1; + } + hsf_model = &Hu3DData[model_ptr->id]; + return hsf_model->unk_94; + } } float BoardModelMotionShapeMaxTimeGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - MotionData *motion; - HsfMotion *motion_hsf; - if(model_ptr->character != -1) { - return -1; - } - hsf_model = &Hu3DData[model_ptr->id]; - if(hsf_model->unk_0E == -1) { - return 0; - } - motion = &Hu3DMotion[hsf_model->unk_0E]; - motion_hsf = motion->unk_04->motion; - return motion_hsf->len; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + MotionData *motion; + HsfMotion *motion_hsf; + if (model_ptr->character != -1) { + return -1; + } + hsf_model = &Hu3DData[model_ptr->id]; + if (hsf_model->unk_0E == -1) { + return 0; + } + motion = &Hu3DMotion[hsf_model->unk_0E]; + motion_hsf = motion->unk_04->motion; + return motion_hsf->len; + } } s32 BoardModelMotionShapeSpeedSet(s16 model, float speed) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - if(model_ptr->character != -1) { - return -1; - } - hsf_model = &Hu3DData[model_ptr->id]; - hsf_model->unk_98 = speed; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + if (model_ptr->character != -1) { + return -1; + } + hsf_model = &Hu3DData[model_ptr->id]; + hsf_model->unk_98 = speed; + return 0; + } } float BoardModelMotionShapeSpeedGet(s16 model, float speed) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - hsf_model = &Hu3DData[model_ptr->id]; - return hsf_model->unk_98; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + hsf_model = &Hu3DData[model_ptr->id]; + return hsf_model->unk_98; + } } s32 BoardModelMotionShapeEndCheck(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return 1; - } else { - ModelData *hsf_model; - if(model_ptr->character != -1) { - return 1; - } - hsf_model = &Hu3DData[model_ptr->id]; - if(hsf_model->attr & 0x40000100) { - return hsf_model->unk_94 <= 0.0f; - } - return BoardModelMotionShapeMaxTimeGet(model) <= hsf_model->unk_94; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return 1; + } + else { + ModelData *hsf_model; + if (model_ptr->character != -1) { + return 1; + } + hsf_model = &Hu3DData[model_ptr->id]; + if (hsf_model->attr & 0x40000100) { + return hsf_model->unk_94 <= 0.0f; + } + return BoardModelMotionShapeMaxTimeGet(model) <= hsf_model->unk_94; + } } s32 BoardModelMotionShapeStartEndSet(s16 model, s16 start, s16 end) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - if(model_ptr->character != -1) { - return -1; - } - if(start >= 0) { - OSs16tof32(&start, &model_ptr->mot_start); - } - if(end >= 0) { - OSs16tof32(&end, &model_ptr->mot_end); - } - Hu3DMotionShapeStartEndSet(model_ptr->id, model_ptr->mot_start, model_ptr->mot_end); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + if (model_ptr->character != -1) { + return -1; + } + if (start >= 0) { + OSs16tof32(&start, &model_ptr->mot_start); + } + if (end >= 0) { + OSs16tof32(&end, &model_ptr->mot_end); + } + Hu3DMotionShapeStartEndSet(model_ptr->id, model_ptr->mot_start, model_ptr->mot_end); + return 0; + } } s32 BoardModelAlphaSet(s16 model, u8 alpha) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - float tp_lvl; - model_ptr->alpha = alpha; - OSu8tof32(&alpha, &tp_lvl); - tp_lvl = tp_lvl*(1.0f/255.0f); - Hu3DModelTPLvlSet(model_ptr->id, tp_lvl); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + float tp_lvl; + model_ptr->alpha = alpha; + OSu8tof32(&alpha, &tp_lvl); + tp_lvl = tp_lvl * (1.0f / 255.0f); + Hu3DModelTPLvlSet(model_ptr->id, tp_lvl); + return 0; + } } s32 BoardModelMtxSet(s16 model, Mtx *src) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - if(!src) { - return -1; - } - hsf_model = &Hu3DData[model_ptr->id]; - MTXCopy(*src, hsf_model->unk_F0); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + if (!src) { + return -1; + } + hsf_model = &Hu3DData[model_ptr->id]; + MTXCopy(*src, hsf_model->unk_F0); + return 0; + } } s32 BoardModelMtxGet(s16 model, Mtx *dst) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - ModelData *hsf_model; - if(!dst) { - return -1; - } - hsf_model = &Hu3DData[model_ptr->id]; - MTXCopy(hsf_model->unk_F0, *dst); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + ModelData *hsf_model; + if (!dst) { + return -1; + } + hsf_model = &Hu3DData[model_ptr->id]; + MTXCopy(hsf_model->unk_F0, *dst); + return 0; + } } s32 BoardModelRotYSet(s16 model, float rot) { - Vec rot_orig; - BoardModelRotGet(model, &rot_orig); - return BoardModelRotSet(model, rot_orig.x, BoardDAngleCalc(rot), rot_orig.z); + Vec rot_orig; + BoardModelRotGet(model, &rot_orig); + return BoardModelRotSet(model, rot_orig.x, BoardDAngleCalc(rot), rot_orig.z); } float BoardModelRotYGet(s16 model) { - Vec rot; - BoardModelRotGet(model, &rot); - return rot.y; + Vec rot; + BoardModelRotGet(model, &rot); + return rot.y; } s32 BoardModelPosSetV(s16 model, Vec *pos) { - if(!pos) { - return -1; - } else { - return BoardModelPosSet(model, pos->x, pos->y, pos->z); - } + if (!pos) { + return -1; + } + else { + return BoardModelPosSet(model, pos->x, pos->y, pos->z); + } } - s32 BoardModelPosSet(s16 model, float x, float y, float z) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - model_ptr->pos.x = x; - model_ptr->pos.y = y; - model_ptr->pos.z = z; - Hu3DModelPosSetV(model_ptr->id, &model_ptr->pos); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + model_ptr->pos.x = x; + model_ptr->pos.y = y; + model_ptr->pos.z = z; + Hu3DModelPosSetV(model_ptr->id, &model_ptr->pos); + return 0; + } } s32 BoardModelRotSetV(s16 model, Vec *pos) { - if(!pos) { - return -1; - } else { - return BoardModelRotSet(model, pos->x, pos->y, pos->z); - } + if (!pos) { + return -1; + } + else { + return BoardModelRotSet(model, pos->x, pos->y, pos->z); + } } s32 BoardModelRotSet(s16 model, float x, float y, float z) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - model_ptr->rot.x = x; - model_ptr->rot.y = y; - model_ptr->rot.z = z; - Hu3DModelRotSetV(model_ptr->id, &model_ptr->rot); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + model_ptr->rot.x = x; + model_ptr->rot.y = y; + model_ptr->rot.z = z; + Hu3DModelRotSetV(model_ptr->id, &model_ptr->rot); + return 0; + } } s32 BoardModelScaleSetV(s16 model, Vec *pos) { - if(!pos) { - return -1; - } else { - return BoardModelScaleSet(model, pos->x, pos->y, pos->z); - } + if (!pos) { + return -1; + } + else { + return BoardModelScaleSet(model, pos->x, pos->y, pos->z); + } } s32 BoardModelScaleSet(s16 model, float x, float y, float z) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - model_ptr->scale.x = x; - model_ptr->scale.y = y; - model_ptr->scale.z = z; - Hu3DModelScaleSetV(model_ptr->id, &model_ptr->scale); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + model_ptr->scale.x = x; + model_ptr->scale.y = y; + model_ptr->scale.z = z; + Hu3DModelScaleSetV(model_ptr->id, &model_ptr->scale); + return 0; + } } s32 BoardModelPosGet(s16 model, Vec *dst) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr || !dst) { - return -1; - } else { - *dst = model_ptr->pos; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr || !dst) { + return -1; + } + else { + *dst = model_ptr->pos; + return 0; + } } s32 BoardModelRotGet(s16 model, Vec *dst) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr || !dst) { - return -1; - } else { - *dst = model_ptr->rot; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr || !dst) { + return -1; + } + else { + *dst = model_ptr->rot; + return 0; + } } s32 BoardModelScaleGet(s16 model, Vec *dst) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr || !dst) { - return -1; - } else { - *dst = model_ptr->scale; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr || !dst) { + return -1; + } + else { + *dst = model_ptr->scale; + return 0; + } } s32 BoardModelVisibilitySet(s16 model, s32 visible) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - model_ptr->visible = visible; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + model_ptr->visible = visible; + return 0; + } } s32 BoardModelVisibilityGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return 0; - } else { - return model_ptr->visible; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return 0; + } + else { + return model_ptr->visible; + } } s32 BoardModelCameraSet(s16 model, u16 camera) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - Hu3DModelCameraSet(model_ptr->id, camera); - model_ptr->camera = camera; - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + Hu3DModelCameraSet(model_ptr->id, camera); + model_ptr->camera = camera; + return 0; + } } s32 BoardModelLayerSet(s16 model, u8 layer) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - model_ptr->layer = layer; - Hu3DModelLayerSet(model_ptr->id, layer); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + model_ptr->layer = layer; + Hu3DModelLayerSet(model_ptr->id, layer); + return 0; + } } s32 BoardModelLayerGet(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - return model_ptr->layer; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + return model_ptr->layer; + } } void BoardModelLayerSetAll(s32 layer) { - BoardModel *model; - for(model=modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { - if(model->index == -1 || model->character != -1) { - continue; - } - Hu3DModelLayerSet(model->id, layer); - } + BoardModel *model; + for (model = modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { + if (model->index == -1 || model->character != -1) { + continue; + } + Hu3DModelLayerSet(model->id, layer); + } } s32 BoardModelHookSet(s16 model, char *name, s16 hook) { - BoardModel *model_ptr = SearchBoardModel(model); + BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - BoardModel *hook_ptr = SearchBoardModel(hook); - if(!hook_ptr || !name) { - return -1; - } - Hu3DModelHookSet(model_ptr->id, name, hook_ptr->id); - BoardModelPosSet(hook, 0, 0, 0); - return 0; - } + if (!model_ptr) { + return -1; + } + else { + BoardModel *hook_ptr = SearchBoardModel(hook); + if (!hook_ptr || !name) { + return -1; + } + Hu3DModelHookSet(model_ptr->id, name, hook_ptr->id); + BoardModelPosSet(hook, 0, 0, 0); + return 0; + } } s32 BoardModelHookReset(s16 model) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - Hu3DModelHookReset(model_ptr->id); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + Hu3DModelHookReset(model_ptr->id); + return 0; + } } s32 BoardModelHookObjReset(s16 model, char *name) { - BoardModel *model_ptr = SearchBoardModel(model); - if(!model_ptr) { - return -1; - } else { - Hu3DModelHookObjReset(model_ptr->id, name); - return 0; - } + BoardModel *model_ptr = SearchBoardModel(model); + if (!model_ptr) { + return -1; + } + else { + Hu3DModelHookObjReset(model_ptr->id, name); + return 0; + } } static BoardModel *SearchBoardModel(s16 id) { - BoardModel *model; - if(id <= 0 || id > BOARD_MODEL_MAX || !modelDataList || BoardIsKill()) { - return NULL; - } - model = &modelDataList[id-1]; - if(model->index != id) { - return NULL; - } - return model; + BoardModel *model; + if (id <= 0 || id > BOARD_MODEL_MAX || !modelDataList || BoardIsKill()) { + return NULL; + } + model = &modelDataList[id - 1]; + if (model->index != id) { + return NULL; + } + return model; } static void KillBoardModel(BoardModel *model) { - s32 i; - if(model->index == -1) { - return; - } - if(model->character == -1) { - model->mot_id[0] = -1; - if(model->id >= 0) { - Hu3DModelKill(model->id); - model->id = -1; - } - for(i=1; imot_id[i] >= 0) { - if(i != 0) { - Hu3DMotionKill(model->mot_id[i]); - } - model->mot_id[i] = -1; - } - model->mot_data[i] = NULL; - } - model->data = NULL; - model->data_num = 0; - } else { - for(i=0; imot_id[i] = -1; - model->mot_data[i] = NULL; - } - if(model->data) { - if(model->id >= 0) { - model->id = -1; - } - model->data = NULL; - } - CharModelKill(model->character); - model->character = -1; - } - modelDataNum--; - model->index = -1; - model->visible = 0; + s32 i; + if (model->index == -1) { + return; + } + if (model->character == -1) { + model->mot_id[0] = -1; + if (model->id >= 0) { + Hu3DModelKill(model->id); + model->id = -1; + } + for (i = 1; i < BOARD_MOT_MAX; i++) { + if (model->mot_id[i] >= 0) { + if (i != 0) { + Hu3DMotionKill(model->mot_id[i]); + } + model->mot_id[i] = -1; + } + model->mot_data[i] = NULL; + } + model->data = NULL; + model->data_num = 0; + } + else { + for (i = 0; i < BOARD_MOT_MAX; i++) { + model->mot_id[i] = -1; + model->mot_data[i] = NULL; + } + if (model->data) { + if (model->id >= 0) { + model->id = -1; + } + model->data = NULL; + } + CharModelKill(model->character); + model->character = -1; + } + modelDataNum--; + model->index = -1; + model->visible = 0; } static BoardModel *FindLinkModel(s32 data_num) { - BoardModel *model; - for(model=modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { - if(model->data_num == data_num) { - return model; - } - } - return NULL; + BoardModel *model; + for (model = modelDataList; model < &modelDataList[BOARD_MODEL_MAX]; model++) { + if (model->data_num == data_num) { + return model; + } + } + return NULL; } static s32 CreateBoardModel(BoardModel *model, s32 data_num, s32 link) { - BoardModel *linked_mdl = NULL; - if(link && model->character == -1) { - linked_mdl = FindLinkModel(data_num); - if(linked_mdl) { - model->id = Hu3DModelLink(linked_mdl->id); - model->data = NULL; - model->data_num = 0; - return 0; - } - } - if(model->character == -1) { - model->data = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); - if(!model->data) { - s32 size_data, size_dvd; - size_data = HuMemHeapSizeGet(HEAP_DATA)-HuMemUsedMallocSizeGet(HEAP_DATA); - size_dvd = HuMemHeapSizeGet(HEAP_DVD)-HuMemUsedMallocSizeGet(HEAP_DVD); - return -1; - } - } else { - model->data = NULL; - } - if(model->character == -1) { - model->id = Hu3DModelCreate(model->data); - } else { - model->id = CharModelCreate(model->character, 2); - } - Hu3DModelAttrSet(model->id, 0x4000); - if(model->id < 0) { - return -1; - } else { - model->data_num = data_num; - return 0; - } + BoardModel *linked_mdl = NULL; + if (link && model->character == -1) { + linked_mdl = FindLinkModel(data_num); + if (linked_mdl) { + model->id = Hu3DModelLink(linked_mdl->id); + model->data = NULL; + model->data_num = 0; + return 0; + } + } + if (model->character == -1) { + model->data = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); + if (!model->data) { + s32 size_data, size_dvd; + size_data = HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA); + size_dvd = HuMemHeapSizeGet(HEAP_DVD) - HuMemUsedMallocSizeGet(HEAP_DVD); + return -1; + } + } + else { + model->data = NULL; + } + if (model->character == -1) { + model->id = Hu3DModelCreate(model->data); + } + else { + model->id = CharModelCreate(model->character, 2); + } + Hu3DModelAttrSet(model->id, HU3D_ATTR_NOCULL); + if (model->id < 0) { + return -1; + } + else { + model->data_num = data_num; + return 0; + } } static s32 CreateBoardModelMotion(BoardModel *model, s32 count, s32 *data_num) { - void *data; - s32 i; - model->mot_id[0] = Hu3DData[model->id].unk_08; - if(!data_num) { - model->mot_count = 1; - return 0; - } - data = NULL; - for(i=0; icharacter == -1) { - data = HuDataSelHeapReadNum(data_num[i], MEMORY_DEFAULT_NUM, HEAP_DATA); - if(!data) { - return -1; - } - index = Hu3DJointMotion(model->id, data); - } else { - index = CharModelMotionCreate(model->character, data_num[i]); - } - if(index < 0) { - return -1; - } - model->mot_id[i+1] = index; - model->mot_data[i+1] = data; - } - model->mot_count = count+1; - return 0; -} \ No newline at end of file + void *data; + s32 i; + model->mot_id[0] = Hu3DData[model->id].unk_08; + if (!data_num) { + model->mot_count = 1; + return 0; + } + data = NULL; + for (i = 0; i < count; i++) { + s16 index; + if (model->character == -1) { + data = HuDataSelHeapReadNum(data_num[i], MEMORY_DEFAULT_NUM, HEAP_DATA); + if (!data) { + return -1; + } + index = Hu3DJointMotion(model->id, data); + } + else { + index = CharModelMotionCreate(model->character, data_num[i]); + } + if (index < 0) { + return -1; + } + model->mot_id[i + 1] = index; + model->mot_data[i + 1] = data; + } + model->mot_count = count + 1; + return 0; +} diff --git a/src/game/board/mushroom.c b/src/game/board/mushroom.c index 5bbe9a22..1b0c57b6 100644 --- a/src/game/board/mushroom.c +++ b/src/game/board/mushroom.c @@ -161,12 +161,12 @@ static void MushroomMain(void) { WaitItemGive(); if (itemResult != 0) { - var_r27 = 0x50001; + var_r27 = MAKE_MESSID(5, 1); } else { - var_r27 = 0x50002; + var_r27 = MAKE_MESSID(5, 2); } - BoardPlayerMotionShiftSet(curPlayer, 0xC, 0.0f, 4.0f, 0); + BoardPlayerMotionShiftSet(curPlayer, 0xC, 0.0f, 4.0f, HU3D_MOTATTR_NONE); HuPrcSleep(4); BoardWinCreate(0, var_r27, -1); BoardWinWait(); @@ -300,7 +300,7 @@ static void ExitBox(ItemGiveWork2* arg0, omObjData* arg1) { } arg1->trans.y = spC.y + (700.0f * cosd(arg0->unk_08)); - arg1->rot.y = sin((M_PI * temp) / 180.0); + arg1->rot.y = sind(temp); arg0->unk_08 -= 1.5f; arg0->unk_06 -= 30; } @@ -325,9 +325,9 @@ static void CenterBox(ItemGiveWork2* arg0, omObjData* arg1) { sp14.y = arg1->trans.y; sp14.z = arg1->trans.z; BoardPlayerPosGet(arg0->unk00_field5, &sp20); - PSVECSubtract(&sp20, &sp14, &sp8); - PSVECScale(&sp8, &sp8, 0.2f); - PSVECAdd(&sp8, &sp14, &sp14); + VECSubtract(&sp20, &sp14, &sp8); + VECScale(&sp8, &sp8, 0.2f); + VECAdd(&sp8, &sp14, &sp14); if (BoardVecMaxDistXZCheck(&sp20, &sp14, 3.0f) != 0) { arg1->trans.x = sp20.x; @@ -341,7 +341,7 @@ static void CenterBox(ItemGiveWork2* arg0, omObjData* arg1) { static void InitBox(s32 arg0) { Vec sp10; - s32 sp8[2] = {0x0007006D, 0x0007006E}; + s32 sp8[2] = {DATA_MAKE_NUM(DATADIR_BOARD, 0x6D), DATA_MAKE_NUM(DATADIR_BOARD, 0x6E)}; s32 var_r29; s32 var_r28; s32 var_r27; @@ -367,7 +367,7 @@ static void InitBox(s32 arg0) { boxObj[i]->rot.x = 0.0f; boxObj[i]->rot.y = 180.0f; boxObj[i]->rot.z = 0.0f; - temp_r31->unk_02 = BoardModelCreate(0x70005, NULL, 0); + temp_r31->unk_02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 5), NULL, 0); BoardModelPosSet(temp_r31->unk_02, boxObj[i]->trans.x, boxObj[i]->trans.y, boxObj[i]->trans.z); BoardModelMotionSpeedSet(temp_r31->unk_02, 0.0f); BoardModelLayerSet(temp_r31->unk_02, 2U); @@ -558,4 +558,4 @@ static void WaitItemGive(void) { while (temp_r31->unk00_field2 != 1) { HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/game/board/pause.c b/src/game/board/pause.c index 7c426ae9..3ca8058a 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -717,9 +717,9 @@ static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) { SetBoxVisible(1); var_f31 = 0.5f; BoardModelScaleSet(boxModelID[7], var_f31, var_f31, var_f31); - HuSprAttrReset(pauseCursorPos, 0, 4); + HuSprAttrReset(pauseCursorPos, 0, HUSPR_ATTR_DISPOFF); if (GWPartyGet() == 0) { - HuSprAttrReset(pauseCursorPos, 1, 4); + HuSprAttrReset(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); } break; } @@ -811,7 +811,7 @@ static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) { sp14.x = 96.0f; sp14.y = 176.0f; sp14.z = padBoxPos.z; - PSVECSubtract(&sp14, &padBoxPos, &sp8); + VECSubtract(&sp14, &padBoxPos, &sp8); arg0->scale.x = sp8.x / 20.0f; arg0->scale.y = sp8.y / 20.0f; arg1->unk01 = 1; @@ -822,7 +822,7 @@ static void ScrollInPadConfig(omObjData *arg0, ConfigWork *arg1) { s32 i; if (arg1->unk07 == 0) { - HuSprAttrReset(pauseCursorPos, 0, 4); + HuSprAttrReset(pauseCursorPos, 0, HUSPR_ATTR_DISPOFF); if (arg1->unk00_field2 != 0) { for (i = 0; i < 8; i++) { if (i != 0) { @@ -905,7 +905,7 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { var_r30 |= 2; } temp_r29 = CheckPort(arg1->unk04); - if (GWGameStat.field10E_bit4 != 0) { + if (GWGameStat.veryHardUnlock != 0) { var_r27 = 4; } else { var_r27 = 3; @@ -962,7 +962,7 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) { arg1->unk09 = 0; } arg1->unk05 += var_r28; - if (GWGameStat.field10E_bit4 == 0 && arg1->unk05 == 4) { + if (GWGameStat.veryHardUnlock == 0 && arg1->unk05 == 4) { arg1->unk05 += var_r28; } if (arg1->unk05 > var_r27) { @@ -996,7 +996,7 @@ static void ScrollOutPadConfig(omObjData *arg0, ConfigWork *arg1) { sp14.x = boxPosTbl[0][0]; sp14.y = boxPosTbl[0][1]; sp14.z = 700.0f; - PSVECSubtract(&sp14, &padBoxPos, &sp8); + VECSubtract(&sp14, &padBoxPos, &sp8); arg0->scale.x = sp8.x / 20.0f; arg0->scale.y = sp8.y / 20.0f; arg1->unk01 = 1; @@ -1100,7 +1100,7 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) { u32 temp_r28; Mtx sp8; - if (arg2 == 3 && GWGameStat.field10E_bit5 == 0) { + if (arg2 == 3 && GWGameStat.customPackEnable == 0) { var_r27 = 1; } else { var_r27 = 2; @@ -1332,8 +1332,8 @@ static s32 WaitPauseInput(void) { } HuWinDispOn(controlWin); SetBoxVisible(0); - HuSprAttrReset(pauseSprGrp, 0, 4); - HuSprAttrSet(pauseCursorPos, 0, 4); + HuSprAttrReset(pauseSprGrp, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(pauseCursorPos, 0, HUSPR_ATTR_DISPOFF); PauseCreateNumber(0, GWSystem.turn); PauseCreateNumber(1, GWSystem.max_turn); HuPrcSleep(4); @@ -1376,15 +1376,15 @@ static void ShowPauseConfig(void) { HuWinDispOn(settingsControlWin); HuWinDispOn(settingsWin); SetBoxVisible(1); - HuSprAttrReset(pauseCursorPos, 0, 4); + HuSprAttrReset(pauseCursorPos, 0, HUSPR_ATTR_DISPOFF); BoardModelVisibilitySet(hostMdl, 1); if (GWPartyGet() == 0) { var_f31 = boxPosTbl[0][0]; var_f30 = boxPosTbl[0][1]; HuSprPosSet(pauseCursorPos, 1, var_f31, var_f30); - HuSprAttrReset(pauseCursorPos, 1, 4); + HuSprAttrReset(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); } else { - HuSprAttrSet(pauseCursorPos, 1, 4); + HuSprAttrSet(pauseCursorPos, 1, HUSPR_ATTR_DISPOFF); } while (configObj) { HuPrcVSleep(); @@ -1434,19 +1434,19 @@ static void ShowPadConfigSprite(s32 arg0) { for (i = 0; i < 4; i++) { temp_r31 = GWPlayer[i].port; if (arg0 != 0) { - HuSprAttrReset(padConfigSprGrp, temp_r31, 4); - HuSprAttrReset(padConfigSprGrp, temp_r31 + 4, 4); - HuSprAttrReset(padConfigSprGrp, temp_r31 + 8, 4); + HuSprAttrReset(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF); } else { - HuSprAttrSet(padConfigSprGrp, temp_r31, 4); - HuSprAttrSet(padConfigSprGrp, temp_r31 + 4, 4); - HuSprAttrSet(padConfigSprGrp, temp_r31 + 8, 4); + HuSprAttrSet(padConfigSprGrp, temp_r31, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(padConfigSprGrp, temp_r31 + 4, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(padConfigSprGrp, temp_r31 + 8, HUSPR_ATTR_DISPOFF); } } if (arg0 != 0) { - HuSprAttrReset(padConfigSprGrp, 12, 4); + HuSprAttrReset(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF); } else { - HuSprAttrSet(padConfigSprGrp, 12, 4); + HuSprAttrSet(padConfigSprGrp, 12, HUSPR_ATTR_DISPOFF); } } diff --git a/src/game/board/player.c b/src/game/board/player.c index 76863368..046aafea 100644 --- a/src/game/board/player.c +++ b/src/game/board/player.c @@ -1,53 +1,54 @@ #include "game/board/player.h" -#include "game/chrman.h" -#include "game/objsub.h" -#include "game/hsfman.h" +#include "ext_math.h" +#include "game/board/audio.h" +#include "game/board/basic_space.h" #include "game/board/com.h" +#include "game/board/item.h" #include "game/board/main.h" +#include "game/board/model.h" #include "game/board/roll.h" #include "game/board/space.h" #include "game/board/tutorial.h" #include "game/board/ui.h" #include "game/board/view.h" -#include "game/board/model.h" -#include "game/board/item.h" -#include "game/board/basic_space.h" -#include "game/board/audio.h" +#include "game/chrman.h" +#include "game/disp.h" +#include "game/hsfman.h" +#include "game/objsub.h" #include "game/pad.h" -#include "stdlib.h" -#include "math.h" + #include "ext_math.h" +#include "stdlib.h" static void InitJunction(s32, s32, f32); -static void UpdateJunctionGfx(omObjData*); +static void UpdateJunctionGfx(omObjData *); static void StopJunctionPlayer(s32); static void RestoreJunction(f32, s32); -static s32 GetDefaultDirection(f32, f32*, s32); -static s32 DoDebugMove(s32, s16*); -static s32 ExecJunction(s32, s16*); +static s32 GetDefaultDirection(f32, f32 *, s32); +static s32 DoDebugMove(s32, s16 *); +static s32 ExecJunction(s32, s16 *); -static void PlayerPosLerpFunc(omObjData*); -static void DiceJumpFunc(omObjData*); +static void PlayerPosLerpFunc(omObjData *); +static void DiceJumpFunc(omObjData *); -static void UpdateRollSprite(omObjData*); -static void UpdateRoll(omObjData*); -static void MoveAwayObjFunc(omObjData*); +static void UpdateRollSprite(omObjData *); +static void UpdateRoll(omObjData *); +static void MoveAwayObjFunc(omObjData *); -static void MoveAwayObjFunc(omObjData*); -static void UpdateBowserSuit(omObjData*); +static void MoveAwayObjFunc(omObjData *); +static void UpdateBowserSuit(omObjData *); static void MegaSquishFunc(omObjData *object); - static s32 DoSparkSpace(s32 player, s32 pause_cam); static void RemoveSparkSpace(s32 player); static void SetPlayerSizeAuto(s32 player); static s32 MegaPlayerPassFunc(s32 player, s32 space); static s32 MegaExecJump(s32 player, s32 space); -//TODO: Give better name +// TODO: Give better name typedef struct bitcopy { struct { u8 field00_bit0 : 1; @@ -71,30 +72,23 @@ static s16 playerMot[4]; static s8 itemPrev; static s8 moveAwayPlayer[4]; static s16 junctionArrowRot[4]; -static omObjData* moveAwayObj; -static omObjData* rollObj; -static omObjData* junctionObj; +static omObjData *moveAwayObj; +static omObjData *rollObj; +static omObjData *junctionObj; static s32 junctionMask; -static omObjData* bowserSuitObj; +static omObjData *bowserSuitObj; static s32 megaDoubleDiceF; static s16 suitMdl = -1; static s16 suitPlayerMdl = -1; static s16 suitCurrMot = -1; -static omObjData* diceJumpObj[4] = {0, 0, 0, 0}; -static omObjData* motDoneF[4] = {0, 0, 0, 0}; -static s16 bowserSuitMot[5] = {-1, -1, -1, -1, -1}; -static char* eyeMatTbl[8][2] = { - { "eye1", "eye2" }, - { "eye1", "eye2" }, - { "mat14", "mat16" }, - { "eye1", "eye2" }, - { "Clswario_eye_l1_AUTO14", "Clswario_eye_l1_AUTO15" }, - { "m_donkey_eye4", "m_donkey_eye5" }, - { "mat65", "mat66" }, - { "Clswaluigi_eye_l1_AUTO1", "Clswaluigi_eye_l1_AUTO2" } -}; +static omObjData *diceJumpObj[4] = { 0, 0, 0, 0 }; +static omObjData *motDoneF[4] = { 0, 0, 0, 0 }; +static s16 bowserSuitMot[5] = { -1, -1, -1, -1, -1 }; +static char *eyeMatTbl[8][2] + = { { "eye1", "eye2" }, { "eye1", "eye2" }, { "mat14", "mat16" }, { "eye1", "eye2" }, { "Clswario_eye_l1_AUTO14", "Clswario_eye_l1_AUTO15" }, + { "m_donkey_eye4", "m_donkey_eye5" }, { "mat65", "mat66" }, { "Clswaluigi_eye_l1_AUTO1", "Clswaluigi_eye_l1_AUTO2" } }; s32 lbl_8013997C[] = { 0x10D, @@ -108,81 +102,140 @@ s32 lbl_8013997C[] = { }; static s32 boardMotTbl[] = { - 0x5F0035, 0x1A0035, 0x6D0035, 0x8A0035, - 0x850035, 0x110035, 0x0D0035, 0x810035, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x35), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x35), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x35), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x35), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x35), }; static s32 boardMotRevTbl[] = { - 0x5F0036, 0x1A0036, 0x6D0036, 0x8A0036, - 0x850036, 0x110036, 0x0D0036, 0x810036, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x36), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x36), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x36), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x36), }; static s32 bowserSuitCharMdlTbl[] = { - 0x40000, 0x40003, 0x40006, 0x40009, - 0x4000C, 0x4000F, 0x40012, 0x40015, + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x00), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x03), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x06), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x09), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x0C), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x0F), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x12), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x15), }; -static s32 bowserSuitMotTbl[] = { - 0x40019, 0x4001A, 0x4001B, 0x4001E, - 0x4001F -}; +static s32 bowserSuitMotTbl[] = { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x19), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1A), + DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1B), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1E), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1F) }; +#if VERSION_JP static s32 sparkMotTbl[] = { - 0x70095, 0x70096, 0x70097, 0x70098, - 0x70099, 0x7009A, 0x7009B, 0x7009C, + DATA_MAKE_NUM(DATADIR_BOARD, 0x94), + DATA_MAKE_NUM(DATADIR_BOARD, 0x95), + DATA_MAKE_NUM(DATADIR_BOARD, 0x96), + DATA_MAKE_NUM(DATADIR_BOARD, 0x97), + DATA_MAKE_NUM(DATADIR_BOARD, 0x98), + DATA_MAKE_NUM(DATADIR_BOARD, 0x99), + DATA_MAKE_NUM(DATADIR_BOARD, 0x9A), + DATA_MAKE_NUM(DATADIR_BOARD, 0x9B), }; +#else +static s32 sparkMotTbl[] = { + DATA_MAKE_NUM(DATADIR_BOARD, 0x95), + DATA_MAKE_NUM(DATADIR_BOARD, 0x96), + DATA_MAKE_NUM(DATADIR_BOARD, 0x97), + DATA_MAKE_NUM(DATADIR_BOARD, 0x98), + DATA_MAKE_NUM(DATADIR_BOARD, 0x99), + DATA_MAKE_NUM(DATADIR_BOARD, 0x9A), + DATA_MAKE_NUM(DATADIR_BOARD, 0x9B), + DATA_MAKE_NUM(DATADIR_BOARD, 0x9C), +}; +#endif static s32 boardSparkSfxTbl[] = { - 0x128, 0x168, 0x1A8, 0x1E8, - 0x228, 0x268, 0x2A8, 0x2E8, + 0x128, + 0x168, + 0x1A8, + 0x1E8, + 0x228, + 0x268, + 0x2A8, + 0x2E8, }; static s32 boardSparkSfxTblAlt[] = { - 0x123, 0x163, 0x1A3, 0x1E3, - 0x223, 0x263, 0x2A3, 0x2E3, + 0x123, + 0x163, + 0x1A3, + 0x1E3, + 0x223, + 0x263, + 0x2A3, + 0x2E3, }; static omObjData *megaSquishObj[4] = {}; static s32 megaSquishSfxTbl[] = { - 0x128, 0x168, 0x1A8, 0x1E8, - 0x228, 0x268, 0x2A8, 0x2E8, + 0x128, + 0x168, + 0x1A8, + 0x1E8, + 0x228, + 0x268, + 0x2A8, + 0x2E8, }; -s32 BoardItemPrevGet(void) { +s32 BoardItemPrevGet(void) +{ return itemPrev; } -void BoardItemPrevSet(s32 type) { +void BoardItemPrevSet(s32 type) +{ itemPrev = type; } -s32 BoardPlayerGetCharMess(s32 player) { - s32 charMess[8] = {0, 1, 2, 3, 4, 5, 6, 7}; - +s32 BoardPlayerGetCharMess(s32 player) +{ + s32 charMess[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + return charMess[GWPlayer[player].character]; } -char* BoardPlayerGetCharName(s32 player) { - char* charNames[8] = {"Mario", "Luigi", "Peach", "Yoshi", "Wario", "Donky", "Daisy", "Waluigi"}; +char *BoardPlayerGetCharName(s32 player) +{ + char *charNames[8] = { "Mario", "Luigi", "Peach", "Yoshi", "Wario", "Donky", "Daisy", "Waluigi" }; return charNames[GWPlayer[player].character]; } -s32 BoardPlayerIsAllCom(void) { +s32 BoardPlayerIsAllCom(void) +{ if ((GWPlayer[0].com != 0) && (GWPlayer[1].com != 0) && (GWPlayer[2].com != 0) && (GWPlayer[3].com != 0)) { return 1; } return 0; } -void BoardPlayerInit(void) { +void BoardPlayerInit(void) +{ s32 temp_r30; s32 var_r31; if (BoardStartCheck() == 0) { GWSystem.player_curr = 0; temp_r30 = BoardSpaceFlagPosGet(0, 0x80000000, 0); - + for (var_r31 = 0; var_r31 < 4; var_r31++) { GWPlayer[var_r31].space_curr = temp_r30; BoardPlayerCornerPosSet(var_r31); @@ -194,7 +247,7 @@ void BoardPlayerInit(void) { } return; } - + for (var_r31 = 0; var_r31 < 4; var_r31++) { BoardPlayerCornerPosSet(var_r31); if (BoardPlayerAutoSizeGet(var_r31) != 0) { @@ -204,7 +257,8 @@ void BoardPlayerInit(void) { } } -void BoardPlayerModelInit(void) { +void BoardPlayerModelInit(void) +{ s32 sp64[14]; s32 var_r31; s32 var_r30; @@ -213,12 +267,16 @@ void BoardPlayerModelInit(void) { s32 temp_r24; s16 temp_r3; s32 temp_r4; - PlayerState* temp_r27; + PlayerState *temp_r27; - s32 ro0[8] = { 0x5E0000, 0x190000, 0x6C0000, 0x890000, 0x840000, 0x100000, 0xC0000, 0x800000 }; - s32 ro1[8] = { 0x5F0000, 0x1A0000, 0x6D0000, 0x8A0000, 0x850000, 0x110000, 0xD0000, 0x810000 }; + s32 ro0[8] = { DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x00), DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0x00), DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0x00), DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0x00), DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0), DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0x00) }; + s32 ro1[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00) }; u16 ro2[13] = { 0, 2, 3, 5, 6, 22, 23, 24, 27, 31, 47, 72, 73 }; - + memset(&boardPlayerMdl, 0, 8); suitMdl = -1; suitPlayerMdl = -1; @@ -239,7 +297,7 @@ void BoardPlayerModelInit(void) { temp_r27->player_idx = var_r31; GWPlayer[var_r31].character = temp_r29; GWPlayerCfg[var_r31].character = temp_r29; - + for (var_r30 = 0; var_r30 < 0xD; var_r30++) { sp64[var_r30] = ro1[temp_r29] | ro2[var_r30]; } @@ -250,7 +308,7 @@ void BoardPlayerModelInit(void) { playerMot[var_r31] = 1; BoardModelMotionStart(temp_r3, playerMot[var_r31], 0x40000001); if (BoardStartCheck() == 0) { - + for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r27->items[var_r30] = -1; } @@ -275,10 +333,11 @@ void BoardPlayerModelInit(void) { CharModelLayerSetAll(2); } -void BoardPlayerModelKill(void) { +void BoardPlayerModelKill(void) +{ s32 var_r31; - PlayerState* temp_r30; - PlayerState* temp_r29; + PlayerState *temp_r30; + PlayerState *temp_r29; for (var_r31 = 0; var_r31 < 4; var_r31++) { temp_r30 = BoardPlayerGet(var_r31); @@ -294,28 +353,34 @@ void BoardPlayerModelKill(void) { } } -void BoardPlayerLayerSet(s32 arg0, s32 arg1) { +void BoardPlayerLayerSet(s32 arg0, s32 arg1) +{ BoardModelLayerSet(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerCameraSet(s32 arg0, u16 arg1) { +void BoardPlayerCameraSet(s32 arg0, u16 arg1) +{ BoardModelCameraSet(BoardPlayerModelGet(arg0), arg1); } -void fn_80062A40(s32 arg0, f32 arg8) { +void fn_80062A40(s32 arg0, f32 arg8) +{ fn_8006DDE8(BoardPlayerModelGet(arg0), arg8); } -void BoardPlayerExistCheck(s32 arg0, s32 arg1) { +void BoardPlayerExistCheck(s32 arg0, s32 arg1) +{ if (arg1 == 0) { BoardModelExistCheck(BoardPlayerModelGet(arg0), 0); - } else { + } + else { BoardModelExistCheck(BoardPlayerModelGet(arg0), 1); } } -s32 BoardPlayerItemAdd(s32 arg0, s32 arg1) { - PlayerState* var_r30; +s32 BoardPlayerItemAdd(s32 arg0, s32 arg1) +{ + PlayerState *var_r30; s32 var_r29; s32 var_r31; @@ -333,9 +398,10 @@ s32 BoardPlayerItemAdd(s32 arg0, s32 arg1) { return var_r29; } -s32 BoardPlayerItemRemove(s32 arg0, s32 arg1) { +s32 BoardPlayerItemRemove(s32 arg0, s32 arg1) +{ s32 temp_r29; - PlayerState* temp_r28; + PlayerState *temp_r28; temp_r28 = BoardPlayerGet(arg0); temp_r29 = temp_r28->items[arg1]; @@ -354,7 +420,8 @@ s32 BoardPlayerItemRemove(s32 arg0, s32 arg1) { return temp_r29; } -s32 BoardPlayerItemFind(s32 arg0, s32 arg1) { +s32 BoardPlayerItemFind(s32 arg0, s32 arg1) +{ s32 var_r31; for (var_r31 = 0; var_r31 < 3; var_r31++) { @@ -362,11 +429,12 @@ s32 BoardPlayerItemFind(s32 arg0, s32 arg1) { return var_r31; } } - + return -1; } -s32 BoardPlayerItemCount(s32 arg0) { +s32 BoardPlayerItemCount(s32 arg0) +{ s32 var_r30; s32 var_r31; @@ -375,18 +443,20 @@ s32 BoardPlayerItemCount(s32 arg0) { var_r30++; } } - + return var_r30; } -void BoardPlayerCornerPosSet(s32 arg0) { +void BoardPlayerCornerPosSet(s32 arg0) +{ Vec sp8; BoardPlayerCornerPosGet(arg0, &sp8); BoardPlayerPosSetV(arg0, &sp8); } -void BoardPlayerCornerPosGet(s32 arg0, Vec* arg1) { +void BoardPlayerCornerPosGet(s32 arg0, Vec *arg1) +{ s32 var_r31; s32 var_r30; s32 var_r29; @@ -399,7 +469,8 @@ void BoardPlayerCornerPosGet(s32 arg0, Vec* arg1) { var_r31 = 0; } for (var_r30 = 0, var_r29 = var_r30; var_r30 < 4; var_r31 = (var_r31 + 1) & 3, var_r30++) { - if (var_r31 == arg0) break; + if (var_r31 == arg0) + break; if (temp_r28 == GWPlayer[var_r31].space_curr) { var_r29 += 1; } @@ -408,15 +479,18 @@ void BoardPlayerCornerPosGet(s32 arg0, Vec* arg1) { } } -void BoardPlayerAmbSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) { +void BoardPlayerAmbSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) +{ BoardModelAmbSet(BoardPlayerModelGet(arg0), arg8, arg9, argA); } -void BoardPlayerMtxSet(s32 arg0, Mtx *arg1) { +void BoardPlayerMtxSet(s32 arg0, Mtx *arg1) +{ BoardModelMtxSet(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerPosSetV(s32 arg0, Vec* arg1) { +void BoardPlayerPosSetV(s32 arg0, Vec *arg1) +{ BoardModelPosSetV(BoardPlayerModelGet(arg0), arg1); if (GWPlayer[arg0].bowser_suit != 0) { @@ -424,19 +498,22 @@ void BoardPlayerPosSetV(s32 arg0, Vec* arg1) { } } -void BoardPlayerPosSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) { +void BoardPlayerPosSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) +{ BoardModelPosSet(BoardPlayerModelGet(arg0), arg8, arg9, argA); - + if (GWPlayer[arg0].bowser_suit != 0) { BoardModelPosSet(suitMdl, arg8, arg9, argA); } } -void BoardPlayerPosGet(s32 arg0, Vec* arg1) { +void BoardPlayerPosGet(s32 arg0, Vec *arg1) +{ BoardModelPosGet(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerRotSetV(s32 arg0, Vec* arg1) { +void BoardPlayerRotSetV(s32 arg0, Vec *arg1) +{ BoardModelRotSetV(BoardPlayerModelGet(arg0), arg1); if (GWPlayer[arg0].bowser_suit != 0) { @@ -444,19 +521,22 @@ void BoardPlayerRotSetV(s32 arg0, Vec* arg1) { } } -void BoardPlayerRotSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) { +void BoardPlayerRotSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) +{ BoardModelRotSet(BoardPlayerModelGet(arg0), arg8, arg9, argA); - + if (GWPlayer[arg0].bowser_suit != 0) { BoardModelRotSet(suitMdl, arg8, arg9, argA); } } -void BoardPlayerRotGet(s32 arg0, Vec* arg1) { +void BoardPlayerRotGet(s32 arg0, Vec *arg1) +{ BoardModelRotGet(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerRotYSet(s32 arg0, f32 arg8) { +void BoardPlayerRotYSet(s32 arg0, f32 arg8) +{ if (arg8 < 0.0f) { arg8 += 360.0f; } @@ -469,64 +549,75 @@ void BoardPlayerRotYSet(s32 arg0, f32 arg8) { } } -f32 BoardPlayerRotYGet(s32 arg0) { +f32 BoardPlayerRotYGet(s32 arg0) +{ f32 var_f31; if (GWPlayer[arg0].bowser_suit != 0) { var_f31 = BoardModelRotYGet(suitMdl); - } else { + } + else { var_f31 = BoardModelRotYGet(BoardPlayerModelGet(arg0)); } return var_f31; } -void BoardPlayerScaleSetV(s32 arg0, Vec* arg1) { +void BoardPlayerScaleSetV(s32 arg0, Vec *arg1) +{ BoardModelScaleSetV(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerScaleSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) { +void BoardPlayerScaleSet(s32 arg0, f32 arg8, f32 arg9, f32 argA) +{ BoardModelScaleSet(BoardPlayerModelGet(arg0), arg8, arg9, argA); } -void BoardPlayerScaleGet(s32 arg0, Vec *arg1) { +void BoardPlayerScaleGet(s32 arg0, Vec *arg1) +{ BoardModelScaleGet(BoardPlayerModelGet(arg0), arg1); } -s16 BoardPlayerCurrMotionGet(s32 arg0) { - PlayerState* player = BoardPlayerGet(arg0); - +s16 BoardPlayerCurrMotionGet(s32 arg0) +{ + PlayerState *player = BoardPlayerGet(arg0); + return playerMot[player->player_idx]; } -void BoardPlayerVoiceEnableSet(s32 arg0, s32 arg1, s32 arg2) { +void BoardPlayerVoiceEnableSet(s32 arg0, s32 arg1, s32 arg2) +{ BoardModelVoiceEnableSet(BoardPlayerModelGet(arg0), arg1, arg2); } -s32 BoardPlayerMotionCreate(s32 arg0, s32 arg1) { +s32 BoardPlayerMotionCreate(s32 arg0, s32 arg1) +{ return BoardModelMotionCreate(BoardPlayerModelGet(arg0), arg1); } -s32 BoardPlayerMotionKill(s32 arg0, s32 arg1) { +s32 BoardPlayerMotionKill(s32 arg0, s32 arg1) +{ return BoardModelMotionKill(BoardPlayerModelGet(arg0), arg1); } -s32 BoardPlayerMotionEndCheck(s32 arg0) { +s32 BoardPlayerMotionEndCheck(s32 arg0) +{ return BoardModelMotionEndCheck(BoardPlayerModelGet(arg0)); } -void BoardPlayerMotionEndWait(s32 arg0) { +void BoardPlayerMotionEndWait(s32 arg0) +{ while (BoardModelMotionEndCheck(BoardPlayerModelGet(arg0)) == 0) { HuPrcVSleep(); } } -void BoardPlayerMotionStart(s32 arg0, s32 arg1, s32 arg2) { - PlayerState* player; +void BoardPlayerMotionStart(s32 arg0, s32 arg1, s32 arg2) +{ + PlayerState *player; s32 temp_r29; - + player = BoardPlayerGet(arg0); - if (arg1 == 0) { - } + if (arg1 == 0) { } if (arg1 != playerMot[player->player_idx]) { temp_r29 = BoardModelMotionStart(BoardPlayerModelGet(arg0), arg1, arg2); if (temp_r29 == 0) { @@ -535,14 +626,13 @@ void BoardPlayerMotionStart(s32 arg0, s32 arg1, s32 arg2) { } } -void BoardPlayerMotionShiftSet(s32 arg0, s32 arg1, f32 arg8, f32 arg9, u32 arg2) { - s32 temp_r29; - PlayerState* player; - - +void BoardPlayerMotionShiftSet(s32 arg0, s32 arg1, f32 arg8, f32 arg9, u32 arg2) +{ + s32 temp_r29; + PlayerState *player; + player = BoardPlayerGet(arg0); - if (arg1 == 0) { - } + if (arg1 == 0) { } if (arg1 != playerMot[player->player_idx]) { temp_r29 = BoardModelMotionShiftSet(BoardPlayerModelGet(arg0), arg1, arg8, arg9, arg2); if (temp_r29 == 0) { @@ -551,44 +641,54 @@ void BoardPlayerMotionShiftSet(s32 arg0, s32 arg1, f32 arg8, f32 arg9, u32 arg2) } } -void BoardPlayerMotionSpeedSet(s32 arg0, f32 arg8) { +void BoardPlayerMotionSpeedSet(s32 arg0, f32 arg8) +{ BoardModelMotionSpeedSet(BoardPlayerModelGet(arg0), arg8); } -void BoardPlayerMotionTimeSet(s32 arg0, f32 arg8) { +void BoardPlayerMotionTimeSet(s32 arg0, f32 arg8) +{ BoardModelMotionTimeSet(BoardPlayerModelGet(arg0), arg8); } -f32 BoardPlayerMotionTimeGet(s32 arg0) { +f32 BoardPlayerMotionTimeGet(s32 arg0) +{ return BoardModelMotionTimeGet(BoardPlayerModelGet(arg0)); } -f32 BoardPlayerMotionMaxTimeGet(s32 arg0) { +f32 BoardPlayerMotionMaxTimeGet(s32 arg0) +{ return BoardModelMotionMaxTimeGet(BoardPlayerModelGet(arg0)); } -void BoardPlayerMotionStartEndSet(s32 arg0, f32 arg8, f32 arg9) { +void BoardPlayerMotionStartEndSet(s32 arg0, f32 arg8, f32 arg9) +{ BoardModelMotionStartEndSet(BoardPlayerModelGet(arg0), arg8, arg9); } -void BoardPlayerModelAttrSet(s32 arg0, s32 arg1) { +void BoardPlayerModelAttrSet(s32 arg0, s32 arg1) +{ BoardModelAttrSet(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerModelAttrReset(s32 arg0, s32 arg1) { +void BoardPlayerModelAttrReset(s32 arg0, s32 arg1) +{ BoardModelAttrReset(BoardPlayerModelGet(arg0), arg1); } -void BoardPlayerCoinsSet(s32 arg0, s32 arg1) { +void BoardPlayerCoinsSet(s32 arg0, s32 arg1) +{ GWCoinsSet(arg0, arg1); } -s32 BoardPlayerCoinsGet(s32 arg0) { +s32 BoardPlayerCoinsGet(s32 arg0) +{ return GWCoinsGet(arg0); } -void BoardPlayerCoinsAdd(s32 arg0, s32 arg1) { - PlayerState* player; +void BoardPlayerCoinsAdd(s32 arg0, s32 arg1) +{ + PlayerState *player; s16 coins; player = BoardPlayerGet(arg0); @@ -601,65 +701,77 @@ void BoardPlayerCoinsAdd(s32 arg0, s32 arg1) { BoardPlayerCoinsSet(arg0, arg1 + BoardPlayerCoinsGet(arg0)); } -void BoardPlayerStarsAdd(s32 arg0, s32 arg1) { +void BoardPlayerStarsAdd(s32 arg0, s32 arg1) +{ GWStarsSet(arg0, (arg1 + GWStarsGet(arg0))); } -void BoardPlayerSizeSet(s32 arg0, s32 arg1) { - PlayerState* temp_r27; +void BoardPlayerSizeSet(s32 arg0, s32 arg1) +{ + PlayerState *temp_r27; Vec temp_r4[3] = { { 1, 1, 1 }, { 0.3, 0.3, 0.3 }, { 2.5, 2.5, 2.5 } }; temp_r27 = BoardPlayerGet(arg0); temp_r27->size = arg1; if (arg1 == 2) { CharModelStepTypeSet(GWPlayer[arg0].character, 4); - } else if (arg1 == 1) { + } + else if (arg1 == 1) { CharModelStepTypeSet(GWPlayer[arg0].character, 5); - } else { + } + else { CharModelStepTypeSet(GWPlayer[arg0].character, 0); } BoardPlayerScaleSetV(arg0, &temp_r4[arg1]); } -s32 BoardPlayerSizeGet(s32 idx) { - PlayerState* player; +s32 BoardPlayerSizeGet(s32 idx) +{ + PlayerState *player; player = BoardPlayerGet(idx); - if(!player) { + if (!player) { return; } return player->size; } -s32 BoardPlayerSameTeamFind(s32 arg0) { +s32 BoardPlayerSameTeamFind(s32 arg0) +{ s32 var_r31; s32 team2; s32 team; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { - if (var_r31 == arg0) continue; + if (var_r31 == arg0) + continue; team2 = GWPlayer[var_r31].team; team = GWPlayer[arg0].team; - if (team == team2) break; + if (team == team2) + break; } return var_r31; } -s32 BoardPlayerTeamFind(s32 arg0) { +s32 BoardPlayerTeamFind(s32 arg0) +{ s32 var_r31; s32 team2; s32 team; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { - if (var_r31 == arg0) continue; + if (var_r31 == arg0) + continue; team2 = GWPlayer[var_r31].team; team = GWPlayer[arg0].team; - if (team != team2) break; + if (team != team2) + break; } return var_r31; } -s32 BoardPlayerRankCalc(s32 player) { +s32 BoardPlayerRankCalc(s32 player) +{ s32 coins; s32 rank; s32 i; @@ -677,15 +789,18 @@ s32 BoardPlayerRankCalc(s32 player) { return rank; } -void BoardPlayerPreTurnHookSet(s32 arg0, s32 (*arg1)()) { +void BoardPlayerPreTurnHookSet(s32 arg0, s32 (*arg1)()) +{ preTurnHook[arg0] = arg1; } -void BoardPlayerPostTurnHookSet(s32 arg0, s32 (*arg1)()) { +void BoardPlayerPostTurnHookSet(s32 arg0, s32 (*arg1)()) +{ postTurnHook[arg0] = arg1; } -void BoardPlayerTurnExec(s32 arg0) { +void BoardPlayerTurnExec(s32 arg0) +{ BoardPauseDisableSet(1); BoardComUseItemSet(arg0, -1); GWSystem.bowser_event = 0xF; @@ -694,8 +809,8 @@ void BoardPlayerTurnExec(s32 arg0) { BoardCameraMoveSet(1); if (_CheckFlag(FLAG_ID_MAKE(1, 6)) == 0) { BoardCameraViewSet(2); - omVibrate((s16) arg0, 0xC, 4, 2); - BoardItemPrevSet(-1); + omVibrate((s16)arg0, 0xC, 4, 2); + BoardItemPrevSet(-1); BoardYourTurnExec(arg0); megaDoubleDiceF = 0; SetPlayerSizeAuto(arg0); @@ -708,14 +823,16 @@ void BoardPlayerTurnExec(s32 arg0) { BoardTutorialHookExec(5, 0); } BoardPlayerTurnRollExec(arg0); - } else { + } + else { BoardCameraViewSet(1); BoardCameraMotionWait(); } BoardPlayerTurnMoveExec(arg0); } -void BoardPlayerTurnRollExec(s32 arg0) { +void BoardPlayerTurnRollExec(s32 arg0) +{ s32 temp_r28; s32 temp_r30; @@ -725,34 +842,35 @@ void BoardPlayerTurnRollExec(s32 arg0) { do { temp_r30 = BoardRollExec(arg0); switch (temp_r30) { - case -2: - BoardPauseDisableSet(1); - BoardRollKill(); - BoardCameraTargetPlayerSet(arg0); - BoardCameraMotionWait(); - BoardItemPrevSet(BoardItemUseExec(arg0)); - if (BoardItemPrevGet() == 0xC) { - _SetFlag(0x10016); - BoardSpaceLandExec(arg0, GWPlayer[arg0].space_curr); - BoardCameraMoveSet(1); - BoardCameraViewSet(2); - _ClearFlag(0x10016); - } - BoardPauseDisableSet(0); - break; - case -3: - BoardRollKill(); - BoardViewMapExec(arg0); - break; - case -4: - BoardRollKill(); - BoardViewOverheadExec(arg0); - break; + case -2: + BoardPauseDisableSet(1); + BoardRollKill(); + BoardCameraTargetPlayerSet(arg0); + BoardCameraMotionWait(); + BoardItemPrevSet(BoardItemUseExec(arg0)); + if (BoardItemPrevGet() == 0xC) { + _SetFlag(0x10016); + BoardSpaceLandExec(arg0, GWPlayer[arg0].space_curr); + BoardCameraMoveSet(1); + BoardCameraViewSet(2); + _ClearFlag(0x10016); + } + BoardPauseDisableSet(0); + break; + case -3: + BoardRollKill(); + BoardViewMapExec(arg0); + break; + case -4: + BoardRollKill(); + BoardViewOverheadExec(arg0); + break; } } while (temp_r30 <= 0); } -void BoardPlayerTurnMoveExec(s32 arg0) { +void BoardPlayerTurnMoveExec(s32 arg0) +{ s16 sp8; u32 temp_r27; s32 temp_r30; @@ -774,7 +892,8 @@ void BoardPlayerTurnMoveExec(s32 arg0) { BoardCameraTargetModelSet(suitMdl); BoardCameraOffsetSet(0.0f, 100.0f, 0.0f); } - } else { + } + else { var_r29 = 0; var_r28 = 1; _ClearFlag(FLAG_ID_MAKE(1, 6)); @@ -789,10 +908,11 @@ void BoardPlayerTurnMoveExec(s32 arg0) { if (ExecJunction(arg0, &sp8) != 0) { break; } - } else if (DoDebugMove(arg0, &sp8) != 0) { + } + else if (DoDebugMove(arg0, &sp8) != 0) { break; } - + GWPlayer[arg0].space_next = sp8; StopJunctionPlayer(0); if (MegaPlayerPassFunc(arg0, sp8) == 0) { @@ -813,7 +933,7 @@ void BoardPlayerTurnMoveExec(s32 arg0) { if (BoardSpaceWalkExec(arg0, sp8) != 0) { continue; } -block_14: + block_14: temp_r30 = BoardSpaceTypeGet(0, sp8); temp_r27 = BoardSpaceFlagGet(0, sp8); if ((temp_r30 == 0 || temp_r30 == 8 || temp_r30 == 10) && ((temp_r27 & 0x20000000) == 0) || var_r28 != 0) { @@ -821,8 +941,9 @@ block_14: continue; } HuAudFXPlay(0x301); - - if (--GWPlayer[arg0].roll == 0) break; + + if (--GWPlayer[arg0].roll == 0) + break; } while (1); BoardPauseDisableSet(1); BoardRollUpdateSet(arg0); @@ -838,7 +959,7 @@ block_14: while (BoardItemDoneCheck() == 0) { HuPrcVSleep(); } - BoardItemPrevSet(-1); + BoardItemPrevSet(-1); } BoardPlayerSizeRestore(arg0); megaDoubleDiceF = 0; @@ -851,14 +972,16 @@ block_14: if (GWSystem.bowser_event != 1) { BoardCameraViewSet(2); BoardCameraMotionWait(); - } else { + } + else { GWSystem.bowser_event = 0xF; } BoardPlayerZoomRestore(arg0); return; } -void BoardPlayerPostTurnHookExec(s32 arg0) { +void BoardPlayerPostTurnHookExec(s32 arg0) +{ if (postTurnHook[arg0] != 0U) { if (postTurnHook[arg0]() != 0) { postTurnHook[arg0] = 0; @@ -866,11 +989,13 @@ void BoardPlayerPostTurnHookExec(s32 arg0) { } } -void BoardPlayerSizeRestore(s32 arg0) { +void BoardPlayerSizeRestore(s32 arg0) +{ if (BoardPlayerSizeGet(arg0) != 0) { if (BoardPlayerSizeGet(arg0) == 1) { HuAudFXPlay(0x313); - } else { + } + else { HuAudFXPlay(0x311); } BoardPlayerResizeAnimExec(arg0, 0); @@ -882,8 +1007,9 @@ void BoardPlayerSizeRestore(s32 arg0) { } } -void BoardPlayerZoomRestore(s32 arg0) { - PlayerState* sp8; +void BoardPlayerZoomRestore(s32 arg0) +{ + PlayerState *sp8; s32 var_r31; s32 var_r29; s32 var_r28; @@ -892,14 +1018,15 @@ void BoardPlayerZoomRestore(s32 arg0) { Vec spC; sp8 = BoardPlayerGet(arg0); - BoardPlayerPosGet(arg0, &spC); + BoardPlayerPosGet(arg0, &spC); temp_r27 = GWPlayer[arg0].space_curr; var_r31 = GWSystem.player_curr; if (var_r31 == -1) { var_r31 = 0; } for (var_r29 = var_r28 = 0; var_r28 < 4; var_r28++) { - if (var_r31 == arg0) break; + if (var_r31 == arg0) + break; if (temp_r27 == GWPlayer[var_r31].space_curr) { var_r29++; } @@ -907,59 +1034,63 @@ void BoardPlayerZoomRestore(s32 arg0) { } BoardSpaceCornerPosGet(temp_r27, var_r29, &sp18); BoardPlayerMotBlendSet(arg0, 0, 0xF); - + while (BoardPlayerMotBlendCheck(arg0) == 0) { HuPrcVSleep(); } BoardPlayerIdleSet(arg0); } -void BoardJunctionMaskSet(s32 arg0) { +void BoardJunctionMaskSet(s32 arg0) +{ junctionMask |= arg0; } -void BoardJunctionMaskReset(s32 arg0) { +void BoardJunctionMaskReset(s32 arg0) +{ junctionMask &= ~arg0; } -void BoardJunctionMaskZero(void) { +void BoardJunctionMaskZero(void) +{ junctionMask = 0; } -static inline u32 BoardJunctionMaskGet(void) { +static inline u32 BoardJunctionMaskGet(void) +{ return junctionMask; } -static inline GetLinkCount(s32 playerIdx, s32 boardIdx) { +static inline GetLinkCount(s32 playerIdx, s32 boardIdx) +{ s32 i; s32 linkCount; - BoardSpace* boardSpaceLink; - BoardSpace* boardSpaceFlag; - PlayerState* player; + BoardSpace *boardSpaceLink; + BoardSpace *boardSpaceFlag; + PlayerState *player; s32 color; s32 temp; linkCount = 0; boardSpaceLink = BoardSpaceGet(0, boardIdx); - + if (boardSpaceLink->link_cnt <= 1) { return 0; } linkCount = boardSpaceLink->link_cnt; for (i = 0; i < boardSpaceLink->link_cnt; i++) { boardSpaceFlag = BoardSpaceGet(0, boardSpaceLink->link[i]); - if (((boardSpaceFlag->flag & 0x20000000) != 0 && (BoardPlayerSizeGet(playerIdx) != 1)) - || ((boardSpaceFlag->flag & 0x02000000) != 0) - || ((boardSpaceFlag->flag & 0x04000000) != 0) - || ((boardSpaceFlag->flag & BoardJunctionMaskGet()) != 0)) { - + if (((boardSpaceFlag->flag & 0x20000000) != 0 && (BoardPlayerSizeGet(playerIdx) != 1)) || ((boardSpaceFlag->flag & 0x02000000) != 0) + || ((boardSpaceFlag->flag & 0x04000000) != 0) || ((boardSpaceFlag->flag & BoardJunctionMaskGet()) != 0)) { + linkCount--; } } return linkCount; } -static void InitJunction(s32 arg0, s32 arg1, f32 arg8) { +static void InitJunction(s32 arg0, s32 arg1, f32 arg8) +{ Vec sp68; Vec sp5C; Vec sp50; @@ -968,14 +1099,14 @@ static void InitJunction(s32 arg0, s32 arg1, f32 arg8) { s32 sp38; s16 sp20; s16 spE; - BoardSpace* temp_r26; - BoardSpace* temp_r25; + BoardSpace *temp_r26; + BoardSpace *temp_r25; f32 var_f27; f32 var_f28; f32 var_f29; - omObjData* var_r28; + omObjData *var_r28; s32 var_r20; - bitcopy* temp_r29; + bitcopy *temp_r29; s32 var_r27; s32 var_r22; f32 angle; @@ -984,7 +1115,7 @@ static void InitJunction(s32 arg0, s32 arg1, f32 arg8) { for (var_r20 = 0; var_r20 < 4; var_r20++) { junctionArrowRot[var_r20] = -1; } - + sp38 = GetLinkCount(arg0, arg1); if (sp38 > 1) { var_r28 = omAddObjEx(boardObjMan, 0x100, 0, 0, -1, UpdateJunctionGfx); @@ -997,50 +1128,53 @@ static void InitJunction(s32 arg0, s32 arg1, f32 arg8) { temp_r29->field00_bit5 = 0; temp_r29->unk_01 = 0; var_r28->scale.x = var_r28->scale.y = var_r28->scale.z = 3.0f; - HuWinMesMaxSizeGet(1, sp3C, 0x90003); + HuWinMesMaxSizeGet(1, sp3C, MAKE_MESSID(0x9, 0x03)); var_f27 = -10000.0f; var_f28 = 304.0f; temp_r29->unk_04 = HuWinCreate(var_f27, var_f28, sp3C[0], sp3C[1], 0); HuWinBGTPLvlSet(temp_r29->unk_04, 0.0f); HuWinMesSpeedSet(temp_r29->unk_04, 0); - HuWinMesSet(temp_r29->unk_04, 0x90003); + HuWinMesSet(temp_r29->unk_04, MAKE_MESSID(9, 3)); if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { HuWinDispOff(temp_r29->unk_04); } temp_r26 = BoardSpaceGet(0, arg1); BoardSpacePosGet(0, arg1, &sp68); spE = BoardPlayerSizeGet(arg0); - + for (var_r27 = 0, var_r22 = var_r27; var_r22 < temp_r26->link_cnt; var_r22++) { if (temp_r26->link[var_r22] != 0) { temp_r25 = BoardSpaceGet(0, temp_r26->link[var_r22]); - if (((((temp_r25->flag & 0x20000000) == 0) != 0) || (spE == 1)) && ((temp_r25->flag & 0x02000000) == 0) && ((temp_r25->flag & 0x04000000) == 0)) { + if (((((temp_r25->flag & 0x20000000) == 0) != 0) || (spE == 1)) && ((temp_r25->flag & 0x02000000) == 0) + && ((temp_r25->flag & 0x04000000) == 0)) { if ((temp_r25->flag & BoardJunctionMaskGet()) == 0) { BoardSpacePosGet(0, temp_r26->link[var_r22], &sp50); - PSVECSubtract(&sp50, &sp68, &sp44); - PSVECNormalize(&sp44, &sp44); - - angle = (180.0 * (atan2(sp44.x, sp44.z) / M_PI)); + VECSubtract(&sp50, &sp68, &sp44); + VECNormalize(&sp44, &sp44); + + angle = atan2d(sp44.x, sp44.z); if (angle < 0.0f) { angle += 360.0f; } if (angle > 360.0f) { angle -= 360.0f; } - + OSf32tos16(&angle, &sp20); - sp20 = ((sp20 + 0x16) / 45) * 0x2D;; + sp20 = ((sp20 + 0x16) / 45) * 0x2D; + ; junctionArrowRot[var_r27] = sp20; var_f29 = 0.0f; if (sp20 == 0) { var_f29 = 100.0f; - } else if ((sp20 == 0xB4) && ((spE == 2) || (GWPlayer[arg0].bowser_suit != 0))) { + } + else if ((sp20 == 0xB4) && ((spE == 2) || (GWPlayer[arg0].bowser_suit != 0))) { var_f29 = -100.0f; } - temp_r29->unk_06[var_r27] = BoardModelCreate(0x70000, NULL, 1); + temp_r29->unk_06[var_r27] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0), NULL, 1); BoardModelRotSet(temp_r29->unk_06[var_r27], 0.0f, angle, 0.0f); BoardModelLayerSet(temp_r29->unk_06[var_r27], 6); - sp5C.x = sp68.x + (100.0 * sin((M_PI * angle) / 180.0)); + sp5C.x = sp68.x + 100.0 * sind(angle); sp5C.y = 300.0f + sp68.y; sp5C.z = (var_f29 + (sp68.z + (100.0 * cosd(angle)))); BoardModelPosSetV(temp_r29->unk_06[var_r27], &sp5C); @@ -1059,9 +1193,10 @@ static void InitJunction(s32 arg0, s32 arg1, f32 arg8) { return; } -static void UpdateJunctionGfx(omObjData* arg0) { +static void UpdateJunctionGfx(omObjData *arg0) +{ s32 var_r28; - bitcopy* temp_r30; + bitcopy *temp_r30; temp_r30 = OM_GET_WORK_PTR(arg0, bitcopy); if ((temp_r30->field00_bit0 != 0) || (BoardIsKill() != 0)) { @@ -1075,7 +1210,8 @@ static void UpdateJunctionGfx(omObjData* arg0) { } if (temp_r30->unk_01 != 0) { temp_r30->unk_01--; - } else if (temp_r30->field00_bit7 != 0) { + } + else if (temp_r30->field00_bit7 != 0) { temp_r30->field00_bit0 = 1; } temp_r30->unk_02 += 8; @@ -1083,14 +1219,15 @@ static void UpdateJunctionGfx(omObjData* arg0) { temp_r30->unk_02 -= 0xB4; } OSs16tof32(&temp_r30->unk_02, &arg0->scale.x); - arg0->scale.x = 3.0 + sin((M_PI * arg0->scale.x) / 180.0); + arg0->scale.x = 3.0 + sind(arg0->scale.x); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; BoardModelScaleSet(temp_r30->unk_06[temp_r30->field00_bit5], arg0->scale.x, arg0->scale.y, arg0->scale.z); } -static void StopJunctionPlayer(s32 arg0) { - bitcopy* temp_r31; +static void StopJunctionPlayer(s32 arg0) +{ + bitcopy *temp_r31; if (junctionObj != 0) { temp_r31 = OM_GET_WORK_PTR(junctionObj, bitcopy); @@ -1103,27 +1240,28 @@ static void StopJunctionPlayer(s32 arg0) { } } -static void RestoreJunction(f32 arg8, s32 arg0) { +static void RestoreJunction(f32 arg8, s32 arg0) +{ Vec sp1C; f32 spC[4]; s16 var_r30; s16 temp_r29; - bitcopy* temp_r31; + bitcopy *temp_r31; if (junctionObj != 0) { temp_r31 = OM_GET_WORK_PTR(junctionObj, bitcopy); if (temp_r31->unk_01 == 0) { arg8 = 90.0f * (((90.0f + arg8) - 1.0f) / 90.0f); - + for (var_r30 = 0; var_r30 < temp_r31->field00_bit3; var_r30++) { BoardModelRotGet(temp_r31->unk_06[var_r30], &sp1C); spC[var_r30] = 90.0f * (((90.0f + sp1C.y) - 1.0f) / 90.0f); } - - for (;var_r30 < 4; var_r30++) { + + for (; var_r30 < 4; var_r30++) { spC[var_r30] = -999.0f; } - + temp_r29 = GetDefaultDirection(arg8, spC, temp_r31->field00_bit3); if ((temp_r29 != -1) && (temp_r31->field00_bit5 != temp_r29)) { temp_r31->field00_bit5 = temp_r29; @@ -1136,7 +1274,8 @@ static void RestoreJunction(f32 arg8, s32 arg0) { } } -static s32 GetDefaultDirection(f32 arg0, f32* arg1, s32 arg2) { +static s32 GetDefaultDirection(f32 arg0, f32 *arg1, s32 arg2) +{ f32 var_f27; f32 var_f28; f32 temp_f1; @@ -1146,11 +1285,11 @@ static s32 GetDefaultDirection(f32 arg0, f32* arg1, s32 arg2) { temp_f30 = BoardDAngleCalc(arg0); var_f28 = 999.0f; - + for (var_r31 = 0, var_r30 = var_r31; var_r31 < arg2; var_r31++) { temp_f1 = BoardDAngleCalc(arg1[var_r31]); var_f27 = BOARD_FABS(BoardDAngleCalc(temp_f1 - temp_f30)); - + if (var_f27 < var_f28) { var_f28 = var_f27; var_r30 = var_r31; @@ -1161,43 +1300,45 @@ static s32 GetDefaultDirection(f32 arg0, f32* arg1, s32 arg2) { static inline s32 BoardPlayerMotGet(s32 player) { - PlayerState *player_ptr = BoardPlayerGet(player); - return playerMot[player_ptr->player_idx]; + PlayerState *player_ptr = BoardPlayerGet(player); + return playerMot[player_ptr->player_idx]; } -static s32 DoDebugMove(s32 arg0, s16* arg1) { +static s32 DoDebugMove(s32 arg0, s16 *arg1) +{ s16 spC0[10]; s16 spAC[10]; Vec spA0; Vec sp94; Vec sp88; Vec sp7C; - BoardSpace* sp5C; + BoardSpace *sp5C; s32 sp58; s32 sp54; - BoardCameraData* sp50; + BoardCameraData *sp50; f32 var_f30; s32 var_r29; s16 var_r26; - PlayerState* sp28; - BoardSpace* var_r23; + PlayerState *sp28; + BoardSpace *var_r23; s32 var_r22; s32 var_r21; s32 var_r20; s32 var_r18; - bitcopy* var_r17; + bitcopy *var_r17; var_r18 = -1; - + memset(spC0, 0, 0x14); memset(spAC, 0, 0x14); - while (1) {loop_1: + while (1) { + loop_1: sp28 = BoardPlayerGet(arg0); var_r23 = BoardSpaceGet(0, sp28->space_curr); sp58 = BoardSpaceCountGet(0); BoardPlayerPosGet(arg0, &sp88); var_r20 = GWPlayer[arg0].port; - + for (var_r22 = 0, var_r29 = var_r22; var_r29 < var_r23->link_cnt; var_r29++) { if ((BoardSpaceFlagGet(0, var_r23->link[var_r29]) & 0x06000000) == 0) { if ((BoardSpaceFlagGet(0, var_r23->link[var_r29]) & 0x20000000) == 0 || (BoardPlayerSizeGet(arg0) == 1)) { @@ -1206,14 +1347,15 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { } } var_r22 += BoardSpaceLinkTargetListGet(0, sp28->space_curr, &spAC[var_r22]); - + for (var_r29 = 0; var_r29 < var_r22; var_r29++) { sp5C = BoardSpaceGet(0, spAC[var_r29]); if (sp5C == 0) { spAC[var_r29] = 0; - } else { - PSVECSubtract(&sp5C->pos, &sp88, &sp94); - var_f30 = 90.0 - (180.0 * (atan2(sp94.z, sp94.x) / M_PI)); + } + else { + VECSubtract(&sp5C->pos, &sp88, &sp94); + var_f30 = 90.0 - atan2d(sp94.z, sp94.x); OSf32tos16(&var_f30, &var_r26); if (var_r26 < 0) { var_r26 += 0x168; @@ -1221,13 +1363,14 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { if (var_r26 > 0x168) { var_r26 -= 0x168; } - + spC0[var_r29] = var_r26 = var_r26 = (((var_r26 + 0x16) / 45) * 0x2D); } } sp54 = GWPlayer[arg0].space_curr; InitJunction(arg0, sp28->space_curr, -1.0f); - do {loop_21: + do { + loop_21: if (sp54 != GWPlayer[arg0].space_curr) { sp54 = GWPlayer[arg0].space_curr; goto loop_1; @@ -1239,7 +1382,8 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { StopJunctionPlayer(0); var_r18 = 1; goto end; - } else { + } + else { if (HuPadBtnDown[var_r20] == 0x10) { BoardRollDispSet(0); BoardPlayerIdleSet(arg0); @@ -1250,7 +1394,7 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { goto loop_21; } if ((0.0f != spA0.x) || (0.0f != spA0.z)) { - var_f30 = (90.0 + (180.0 * (atan2(spA0.z, spA0.x) / M_PI))); + var_f30 = 90.0 + atan2d(spA0.z, spA0.x); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -1259,8 +1403,8 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { } RestoreJunction(var_f30, 1); sp50 = &boardCamera; - PSVECSubtract(&sp50->target, &sp50->pos, &sp7C); - var_f30 = (var_f30 + (90.0 - (180.0 * (atan2(-sp7C.z, -sp7C.x) / M_PI)))); + VECSubtract(&sp50->target, &sp50->pos, &sp7C); + var_f30 += 90.0 - atan2d(-sp7C.z, -sp7C.x); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -1268,19 +1412,22 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { var_f30 -= 360.0f; } var_r21 = var_f30; - + for (var_r29 = 0; var_r29 < var_r22; var_r29++) { if ((spC0[var_r29] + 0x2D > var_r21) && (spC0[var_r29] - 0x2D < var_r21)) { *arg1 = spAC[var_r29]; var_r18 = 0; goto end; - } else if ((var_r21 <= 0x168) && (var_r21 >= 0x13B) && ((s32) ((&spC0[0])[var_r29] + 0x195) > var_r21) && ((s32) ((&spC0[0])[var_r29] + 0x13B) < var_r21)) { + } + else if ((var_r21 <= 0x168) && (var_r21 >= 0x13B) && ((s32)((&spC0[0])[var_r29] + 0x195) > var_r21) + && ((s32)((&spC0[0])[var_r29] + 0x13B) < var_r21)) { *arg1 = spAC[var_r29]; var_r18 = 0; goto end; } } - } else { + } + else { if (BoardPlayerMotGet(arg0) != 1) { BoardPlayerIdleSet(arg0); } @@ -1290,21 +1437,23 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) { } } HuPrcVSleep(); - goto loop_21; + goto loop_21; } } while (1); } - end: +end: return var_r18; } -static inline f32 JunctionArrowRotGetCurr(void) { - bitcopy* juncObj; +static inline f32 JunctionArrowRotGetCurr(void) +{ + bitcopy *juncObj; f32 ret; - + if (!junctionObj) { return 0.0f; - } else { + } + else { juncObj = OM_GET_WORK_PTR(junctionObj, bitcopy); OSs16tof32(&(junctionArrowRot[juncObj->field00_bit5]), &ret); return ret; @@ -1314,11 +1463,12 @@ static inline f32 JunctionArrowRotGetCurr(void) { static inline s32 CheckArrowRot(float value) { s32 sp58; - bitcopy* sp5C; + bitcopy *sp5C; s16 spE; if (!junctionObj) { return 0; - } else { + } + else { sp5C = OM_GET_WORK_PTR(junctionObj, bitcopy); OSf32tos16(&value, &spE); if (spE > 0x15E) { @@ -1333,20 +1483,21 @@ static inline s32 CheckArrowRot(float value) } } -static s32 ExecJunction(s32 arg0, s16* arg1) { +static s32 ExecJunction(s32 arg0, s16 *arg1) +{ f32 spE4[10]; s16 spD0[10]; Vec spC4; Vec spB8; Vec spAC; s32 sp8C; - BoardSpace* sp88; + BoardSpace *sp88; s32 sp84; - PlayerState* sp30; + PlayerState *sp30; s8 sp8; s32 var_r28; s32 var_r24; - BoardSpace* var_r22; + BoardSpace *var_r22; s32 var_r21; u32 var_r20; f32 var_f29; @@ -1360,7 +1511,7 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { sp84 = BoardSpaceCountGet(0); BoardPlayerPosGet(arg0, &spAC); var_r24 = GWPlayer[arg0].port; - + for (var_r28 = var_r21 = 0; var_r28 < var_r22->link_cnt; var_r28++) { if ((BoardSpaceFlagGet(0, var_r22->link[var_r28]) & 0x06000000) == 0) { if ((BoardSpaceFlagGet(0, var_r22->link[var_r28]) & 0x20000000) == 0 || (BoardPlayerSizeGet(arg0) == 1)) { @@ -1376,14 +1527,15 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { *arg1 = var_r22->link[0]; return 0; } - + for (var_r28 = 0; var_r28 < var_r21; var_r28++) { sp88 = BoardSpaceGet(0, spD0[var_r28]); if (!sp88) { spD0[var_r28] = 0; - } else { - PSVECSubtract(&sp88->pos, &spAC, &spB8); - var_f29 = (90.0 - (180.0 * (atan2(spB8.z, spB8.x) / M_PI))); + } + else { + VECSubtract(&sp88->pos, &spAC, &spB8); + var_f29 = 90.0 - atan2d(spB8.z, spB8.x); if (var_f29 < 0.0f) { var_f29 += 360.0f; } @@ -1399,32 +1551,38 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { BoardPlayerIdleSet(arg0); HuPrcSleep(10); while (1) { - + if ((_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) && (boardTutorialDirInputTime != -1)) { if (boardTutorialDirInputTime > 0) { spC4.x = boardTutorialDirInputX; spC4.z = boardTutorialDirInputY; - } else { + } + else { var_r20 = 0x100; } boardTutorialDirInputTime -= 1; - } else if (GWPlayer[arg0].com != 0) { + } + else if (GWPlayer[arg0].com != 0) { if (sp8 == 0) { BoardComJunctionInputGet(arg0, &spC4, var_r21, &spE4[0]); var_r20 = 0; - } else if (sp8 > 6U) { + } + else if (sp8 > 6U) { var_r20 = 0x100; } sp8++; - } else { + } + else { if (abs(HuPadStkX[var_r24]) > 10) { spC4.x = HuPadStkX[var_r24]; - } else { + } + else { spC4.x = 0.0f; } if (abs(HuPadStkY[var_r24]) > 10) { spC4.z = HuPadStkY[var_r24]; - } else { + } + else { spC4.z = 0.0f; } var_r20 = HuPadBtnDown[var_r24]; @@ -1436,21 +1594,24 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { StopJunctionPlayer(1); sp8C = 0; break; - } else if (var_r20 == 0x20 || var_r20 == 0x10) { + } + else if (var_r20 == 0x20 || var_r20 == 0x10) { HuAudFXPlay(1); BoardRollDispSet(0); BoardPlayerIdleSet(arg0); StopJunctionPlayer(0); if (var_r20 == 0x10) { BoardViewMapExec(arg0); - } else if (var_r20 == 0x20) { + } + else if (var_r20 == 0x20) { BoardViewOverheadExec(arg0); } InitJunction(arg0, sp30->space_curr, var_f28); BoardRollDispSet(1); - } else { + } + else { if ((0.0f != spC4.x) || (0.0f != spC4.z)) { - var_f29 = (90.0 + (180.0 * (atan2(spC4.z, spC4.x) / M_PI))); + var_f29 = 90.0 + atan2d(spC4.z, spC4.x); if (var_f29 < 0.0f) { var_f29 += 360.0f; } @@ -1461,7 +1622,7 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { var_f28 = var_f29; RestoreJunction(var_f29, 1); } - + for (var_r28 = 0; var_r28 < var_r21; var_r28++) { if (((45.0f + spE4[var_r28]) > var_f29) && ((spE4[var_r28] - 45.0f) < var_f29)) { *arg1 = (&spD0[0])[var_r28]; @@ -1472,7 +1633,8 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { } } } - } else { + } + else { if (BoardPlayerMotGet(arg0) != 1) { BoardPlayerIdleSet(arg0); } @@ -1487,10 +1649,11 @@ static s32 ExecJunction(s32 arg0, s16* arg1) { return sp8C; } -void BoardPlayerMoveTo(s32 arg0, s32 arg1) { +void BoardPlayerMoveTo(s32 arg0, s32 arg1) +{ Vec sp18; Vec spC; - PlayerState* player; + PlayerState *player; BoardModelPosGet(BoardPlayerModelGet(arg0), &sp18); BoardSpacePosGet(0, arg1, &spC); @@ -1500,7 +1663,8 @@ void BoardPlayerMoveTo(s32 arg0, s32 arg1) { } } -void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2) { +void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2) +{ Vec sp1C; Vec sp10; s32 spC; @@ -1514,7 +1678,8 @@ void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2) { } } -void BoardPlayerMoveToAsync(s32 arg0, s32 arg1) { +void BoardPlayerMoveToAsync(s32 arg0, s32 arg1) +{ Vec sp18; Vec spC; s32 sp8; @@ -1524,16 +1689,17 @@ void BoardPlayerMoveToAsync(s32 arg0, s32 arg1) { BoardPlayerPosLerpStart(arg0, &sp18, &spC, 0x19); } -void BoardPlayerPosLerpStart(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { +void BoardPlayerPosLerpStart(s32 arg0, Vec *arg1, Vec *arg2, s16 arg3) +{ Vec sp18; f32 var_f28; f32 var_f27; f32 var_f26; f32 var_f29; f32 var_f30; - omObjData* temp_r3; + omObjData *temp_r3; s32 var_r25; - PlayerState* temp_r21; + PlayerState *temp_r21; if ((arg1->x != arg2->x) || (arg1->y != arg2->y) || (arg1->z != arg2->z)) { var_f28 = BoardVecDistXZCalc(arg2, arg1); @@ -1544,14 +1710,15 @@ void BoardPlayerPosLerpStart(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { OSs16tof32(&arg3, &var_f29); var_f27 = var_f28 / var_f29; - } else { + } + else { var_f27 = var_f28; var_f29 = 1.0f; } temp_r21 = BoardPlayerGet(arg0); if (playerMot[temp_r21->player_idx] != 3) { - var_r25 = BoardModelMotionShiftSet(BoardPlayerModelGet(arg0), 3, 0.0f, 4.0f, 0x40000001); + var_r25 = BoardModelMotionShiftSet(BoardPlayerModelGet(arg0), 3, 0.0f, 4.0f, HU3D_MOTATTR_LOOP); if (var_r25 == 0) { playerMot[temp_r21->player_idx] = 3; } @@ -1560,9 +1727,9 @@ void BoardPlayerPosLerpStart(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { BoardBowserSuitMotionSetWalk(); BoardModelMotionSpeedSet(suitMdl, 1.5f); } - PSVECSubtract(arg2, arg1, &sp18); - PSVECNormalize(&sp18, &sp18); - var_f26 = 90.0 - (180.0 * (atan2(sp18.z, sp18.x) / M_PI)); + VECSubtract(arg2, arg1, &sp18); + VECNormalize(&sp18, &sp18); + var_f26 = 90.0 - atan2d(sp18.z, sp18.x); var_f30 = var_f26; if (var_f30 < 0.0f) { var_f30 += 360.0f; @@ -1588,7 +1755,7 @@ void BoardPlayerPosLerpStart(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { if (GWPlayer[arg0].bowser_suit != 0) { BoardModelPosSetV(suitMdl, arg1); } - //TODO: Make work struct for this + // TODO: Make work struct for this temp_r3->work[0] = arg0; *(f32 *)(&temp_r3->work[1]) = var_f27; temp_r3->work[2] = arg3; @@ -1596,7 +1763,8 @@ void BoardPlayerPosLerpStart(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { } } -static void PlayerPosLerpFunc(omObjData* arg0) { +static void PlayerPosLerpFunc(omObjData *arg0) +{ f32 temp_f28; f32 temp_f27; f32 temp_f26; @@ -1611,7 +1779,8 @@ static void PlayerPosLerpFunc(omObjData* arg0) { arg0->trans.z += arg0->scale.z; if (arg0->work[2] != 0U) { arg0->work[2] -= 1; - } else { + } + else { GWPlayer[temp_r30].moving = 0; omDelObjEx(HuPrcCurrentGet(), arg0); temp_f26 = arg0->rot.z; @@ -1626,7 +1795,7 @@ static void PlayerPosLerpFunc(omObjData* arg0) { BoardPlayerPosSet(temp_r30, temp_f31, temp_f30, temp_f29); } -//TODO: Make this 2 structs and give better names +// TODO: Make this 2 structs and give better names typedef struct bitcopy2 { struct { u8 field00_bit0 : 1; @@ -1638,7 +1807,7 @@ typedef struct bitcopy2 { }; s8 unk_01; s16 unk_02; - union{ + union { struct { s32 unk_04; f32 unk_08; @@ -1655,10 +1824,11 @@ typedef struct bitcopy2 { }; } bitcopy2; -void BoardPlayerDiceJumpStart(s32 arg0) { +void BoardPlayerDiceJumpStart(s32 arg0) +{ Vec sp8; - PlayerState* temp_r25; - bitcopy2* temp_r31; + PlayerState *temp_r25; + bitcopy2 *temp_r31; s32 var_r28; if (GWPlayer[arg0].bowser_suit != 0) { @@ -1683,7 +1853,8 @@ void BoardPlayerDiceJumpStart(s32 arg0) { GWPlayer[arg0].jump = 1; } -s32 BoardPlayerDiceJumpCheck(s32 arg0) { +s32 BoardPlayerDiceJumpCheck(s32 arg0) +{ if (!diceJumpObj[arg0]) { return 0; } @@ -1693,11 +1864,12 @@ s32 BoardPlayerDiceJumpCheck(s32 arg0) { return 1; } -static void DiceJumpFunc(omObjData* arg0) { +static void DiceJumpFunc(omObjData *arg0) +{ Vec sp38; f32 temp_f31; - PlayerState* var_r30; - bitcopy2* temp_r31; + PlayerState *var_r30; + bitcopy2 *temp_r31; s16 var_r28; s32 var_r23; s32 var_r17; @@ -1746,19 +1918,19 @@ static void DiceJumpFunc(omObjData* arg0) { } } - void BoardPlayerIdleSet(s32 arg0) { if (GWPlayer[arg0].bowser_suit) { BoardBowserSuitMotionSetWait(); BoardBowserSuitPlayerModelKill(); } - BoardPlayerMotionShiftSet(arg0, 1, 0.0f, 8.0f, 0x40000001); + BoardPlayerMotionShiftSet(arg0, 1, 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } static void ExecMotBlend(omObjData *arg0); -void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { +void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) +{ s16 sp1C; f32 temp_f25; f32 temp_f26; @@ -1767,19 +1939,19 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { f32 var_f22; f32 var_f21; f32 var_f19; - omObjData* temp_r3; + omObjData *temp_r3; s32 var_r22; s32 var_r20; s16 var_r19; s16 var_r18; - bitcopy2* temp_r26; + bitcopy2 *temp_r26; var_r20 = 0; if (motDoneF[arg0] != 0) { temp_r3 = motDoneF[arg0]; temp_r26 = OM_GET_WORK_PTR(temp_r3, bitcopy2); temp_r26->field00_bit0 = 1; - + for (var_r19 = 0; var_r19 < 180U; var_r19++) { if (BoardPlayerMotBlendCheck(arg0) != 0) break; @@ -1801,19 +1973,22 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { OSf32tos16(&temp_f25, &sp1C); if (sp1C > 0) { var_f24 = 59.0f; - } else { + } + else { var_f24 = 0.0f; } - + if (abs(sp1C) == 0) { temp_r26->field00_bit0 = 1; return; } if (abs(sp1C) <= 90) { var_r20 = boardMotTbl[var_r18]; - } else if (abs(sp1C) <= 180) { + } + else if (abs(sp1C) <= 180) { var_r20 = boardMotRevTbl[var_r18]; - } else { + } + else { temp_r26->field00_bit0 = 1; return; } @@ -1822,15 +1997,17 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { temp_f26 = var_f27 / 59.0f; if (temp_f26 != 0.0f) { var_f27 = 1.0f / temp_f26; - } else { + } + else { var_f27 = 1.0f; } if (GWPlayer[arg0].bowser_suit != 0) { BoardBowserSuitMotionSetWalk(); BoardModelMotionSpeedSet(BoardBowserSuitModelGet(), var_f27 / 2); - } else if (var_f21 = 8.0f * temp_f26, abs(sp1C) > 45) { + } + else if (var_f21 = 8.0f * temp_f26, abs(sp1C) > 45) { var_r22 = temp_r26->unk_04h; - BoardPlayerMotionShiftSet(arg0, var_r22, var_f24, var_f21, 0); + BoardPlayerMotionShiftSet(arg0, var_r22, var_f24, var_f21, HU3D_MOTATTR_NONE); BoardPlayerMotionSpeedSet(arg0, var_f27); } OSs16tof32(&arg2, &var_f27); @@ -1839,10 +2016,11 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { } } -static void ExecMotBlend(omObjData* arg0) { +static void ExecMotBlend(omObjData *arg0) +{ f32 sp48; f32 var_f27; - bitcopy2* temp_r30; + bitcopy2 *temp_r30; temp_r30 = OM_GET_WORK_PTR(arg0, bitcopy2); if ((temp_r30->field00_bit0 != 0) || (BoardIsKill() != 0)) { @@ -1860,10 +2038,11 @@ static void ExecMotBlend(omObjData* arg0) { if (GWPlayer[temp_r30->unk_01].bowser_suit != 0) { BoardBowserSuitMotionSetWait(); BoardBowserSuitPlayerModelKill(); - } else { + } + else { BoardPlayerMotionStart(temp_r30->unk_01, 1, 0x40000001); } - return; + return; } var_f27 = BoardPlayerRotYGet(temp_r30->unk_01); OSs16tof32(&temp_r30->unk_08h, &sp48); @@ -1871,14 +2050,15 @@ static void ExecMotBlend(omObjData* arg0) { BoardPlayerRotYSet(temp_r30->unk_01, var_f27); } -s32 BoardPlayerMotBlendCheck(s32 arg0) { +s32 BoardPlayerMotBlendCheck(s32 arg0) +{ if (motDoneF[arg0] != 0) { return 0; } return 1; } -//TODO: Make this 3 structs and give better names +// TODO: Make this 3 structs and give better names typedef struct bitcopy3 { struct { @@ -1896,10 +2076,11 @@ typedef struct bitcopy3 { s16 unk_06[5]; } bitcopy3; -void BoardRollCreate(s32 arg0, s32 arg1) { - omObjData* temp_r3; +void BoardRollCreate(s32 arg0, s32 arg1) +{ + omObjData *temp_r3; s32 var_r30; - bitcopy3* temp_r31; + bitcopy3 *temp_r31; temp_r3 = omAddObjEx(boardObjMan, 0x105, 0, 0, -1, &UpdateRoll); temp_r31 = OM_GET_WORK_PTR(temp_r3, bitcopy3); @@ -1909,22 +2090,24 @@ void BoardRollCreate(s32 arg0, s32 arg1) { temp_r31->unk_02 = arg0; if (arg1 != 0) { temp_r31->unk_03 = 0; - } else { + } + else { temp_r31->unk_03 = 1; } temp_r31->unk_04 = HuSprGrpCreate(2); - + for (var_r30 = 0; var_r30 < 2; var_r30++) { - BoardSpriteCreate(0x7002B, 0x4B0, 0, &temp_r31->unk_06[var_r30]); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x2B), 0x4B0, 0, &temp_r31->unk_06[var_r30]); HuSprGrpMemberSet(temp_r31->unk_04, var_r30, temp_r31->unk_06[var_r30]); - HuSprPosSet(temp_r31->unk_04, var_r30, 288.0f, 240.0f); + HuSprPosSet(temp_r31->unk_04, var_r30, HU_DISP_CENTERX, HU_DISP_CENTERY); HuSprAttrSet(temp_r31->unk_04, var_r30, 4); } rollObj = temp_r3; } -void BoardRollUpdateSet(s32 arg0) { - bitcopy3* temp_r31; +void BoardRollUpdateSet(s32 arg0) +{ + bitcopy3 *temp_r31; if (rollObj != 0) { temp_r31 = OM_GET_WORK_PTR(rollObj, bitcopy3); @@ -1932,67 +2115,75 @@ void BoardRollUpdateSet(s32 arg0) { } } -void BoardRollDispSet(s32 arg0) { +void BoardRollDispSet(s32 arg0) +{ s32 var_r30; - bitcopy3* temp_r31; + bitcopy3 *temp_r31; if (rollObj != 0) { temp_r31 = OM_GET_WORK_PTR(rollObj, bitcopy3); - + for (var_r30 = 0; var_r30 < 2; var_r30++) { if (arg0 != 0) { temp_r31->field00_bit1 = 1; if ((var_r30 == 1) && (GWPlayer[temp_r31->unk_02].roll / 10 == 0)) { - HuSprAttrSet(temp_r31->unk_04, var_r30, 4); - } else { - HuSprAttrReset(temp_r31->unk_04, var_r30, 4); + HuSprAttrSet(temp_r31->unk_04, var_r30, HUSPR_ATTR_DISPOFF); } - } else { + else { + HuSprAttrReset(temp_r31->unk_04, var_r30, HUSPR_ATTR_DISPOFF); + } + } + else { temp_r31->field00_bit1 = 0; - HuSprAttrSet(temp_r31->unk_04, var_r30, 4); + HuSprAttrSet(temp_r31->unk_04, var_r30, HUSPR_ATTR_DISPOFF); } } UpdateRollSprite(rollObj); } } -static void UpdateRollSprite(omObjData* arg0) { +static void UpdateRollSprite(omObjData *arg0) +{ Vec sp1C; s32 sp14[2]; - f32 spC[2] = { 320.0f, 256.0f }; + f32 spC[2] = { HU_DISP_CENTERX + 32, HU_DISP_CENTERX - 32 }; s32 var_r30; s32 temp_r29; - bitcopy3* temp_r31; + bitcopy3 *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, bitcopy3); temp_r29 = GWPlayer[temp_r31->unk_02].roll; if (temp_r29 != 0) { sp14[0] = temp_r29 % 10; sp14[1] = temp_r29 / 10; - } else { + } + else { temp_r31->field00_bit0 = 1; } - + for (var_r30 = 0; var_r30 < 2; var_r30++) { if (((var_r30 == 1) && (sp14[1] == 0)) || (temp_r31->field00_bit1 == 0)) { - HuSprAttrSet(temp_r31->unk_04, var_r30, 4); - } else { + HuSprAttrSet(temp_r31->unk_04, var_r30, HUSPR_ATTR_DISPOFF); + } + else { if ((sp14[1] == 0) && (var_r30 == 0)) { - sp1C.x = 288.0f; - } else { + sp1C.x = HU_DISP_CENTERX; + } + else { sp1C.x = spC[var_r30]; } - sp1C.y = 176.0f; - HuSprAttrReset(temp_r31->unk_04, var_r30, 4); + sp1C.y = (HU_DISP_HEIGHTF * 176) / 480; + HuSprAttrReset(temp_r31->unk_04, var_r30, HUSPR_ATTR_DISPOFF); HuSprBankSet(temp_r31->unk_04, var_r30, sp14[var_r30]); HuSprPosSet(temp_r31->unk_04, var_r30, sp1C.x, sp1C.y); } } } -static void UpdateRoll(omObjData* arg0) { +static void UpdateRoll(omObjData *arg0) +{ f32 var_f30; - bitcopy3* temp_r30; + bitcopy3 *temp_r30; temp_r30 = OM_GET_WORK_PTR(rollObj, bitcopy3); if ((temp_r30->field00_bit0 != 0) || (BoardIsKill() != 0)) { @@ -2019,20 +2210,23 @@ static void UpdateRoll(omObjData* arg0) { UpdateRollSprite(arg0); } -void BoardPlayerBtnDownWait(s32 arg0, u32 arg1) { +void BoardPlayerBtnDownWait(s32 arg0, u32 arg1) +{ s32 spC; s32 sp8; s32 temp_r31; temp_r31 = GWPlayer[arg0].port; while (1) { - if ((HuPadBtnDown[temp_r31] & arg1) != 0) return; + if ((HuPadBtnDown[temp_r31] & arg1) != 0) + return; HuPrcVSleep(); } } -void BoardPlayerAutoSizeSet(s32 player, s32 value) { - PlayerState* temp_r28; +void BoardPlayerAutoSizeSet(s32 player, s32 value) +{ + PlayerState *temp_r28; temp_r28 = BoardPlayerGet(player); if ((temp_r28->auto_size != 0) || (value == 0)) { @@ -2044,25 +2238,28 @@ void BoardPlayerAutoSizeSet(s32 player, s32 value) { } } -s32 BoardPlayerAutoSizeGet(s32 arg0) { - PlayerState* player; +s32 BoardPlayerAutoSizeGet(s32 arg0) +{ + PlayerState *player; player = BoardPlayerGet(arg0); - if(!player) { + if (!player) { return; } return player->auto_size; } -u32 BoardPlayerMoveAwayIsDone(void) { +u32 BoardPlayerMoveAwayIsDone(void) +{ if (moveAwayObj) { return 0; } return 1; } -void BoardPlayerMoveAwayStart(s32 arg0, s32 arg1, s32 arg2) { - bitcopy3* temp_r25; +void BoardPlayerMoveAwayStart(s32 arg0, s32 arg1, s32 arg2) +{ + bitcopy3 *temp_r25; Vec sp28; Vec sp1C; Vec sp10; @@ -2079,7 +2276,7 @@ void BoardPlayerMoveAwayStart(s32 arg0, s32 arg1, s32 arg2) { // hack for (var_r28 = var_r28 = var_r27; var_r27 < 4; var_r27++, var_r30++) { var_r30 &= 3; - + for (var_r31 = 0; var_r31 < 4; var_r31++) { if ((var_r31 == var_r30) && (arg1 == GWPlayer[var_r31].space_curr)) { moveAwayPlayer[var_r28++] = var_r31; @@ -2087,14 +2284,15 @@ void BoardPlayerMoveAwayStart(s32 arg0, s32 arg1, s32 arg2) { } } BoardSpaceRotGet(0, arg1, &sp28); - + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { BoardSpaceCornerPosGet(arg1, var_r31, &sp1C); temp_r29 = moveAwayPlayer[var_r31]; if (arg2 != 0) { BoardPlayerPosSetV(temp_r29, &sp1C); moveAwayPlayer[var_r31] = -1; - } else { + } + else { BoardPlayerPosGet(temp_r29, &sp10); BoardPlayerPosLerpStart(temp_r29, &sp10, &sp1C, 0x19); } @@ -2106,13 +2304,15 @@ void BoardPlayerMoveAwayStart(s32 arg0, s32 arg1, s32 arg2) { } } -void BoardPlayerMoveAwayStartCurr(s32 arg0, s32 arg1) { +void BoardPlayerMoveAwayStartCurr(s32 arg0, s32 arg1) +{ BoardPlayerMoveAwayStart(GWSystem.player_curr, arg0, arg1); } -static void MoveAwayObjFunc(omObjData* arg0) { +static void MoveAwayObjFunc(omObjData *arg0) +{ s32 var_r31; - bitcopy3* temp_r30; + bitcopy3 *temp_r30; temp_r30 = OM_GET_WORK_PTR(arg0, bitcopy3); if ((temp_r30->field00_bit0 != 0) || (BoardIsKill() != 0)) { @@ -2120,10 +2320,11 @@ static void MoveAwayObjFunc(omObjData* arg0) { omDelObjEx(HuPrcCurrentGet(), arg0); return; } - + for (var_r31 = 0; var_r31 < 4; var_r31++) { if (moveAwayPlayer[var_r31] != -1) { - if (GWPlayer[moveAwayPlayer[var_r31]].moving != 0) return; + if (GWPlayer[moveAwayPlayer[var_r31]].moving != 0) + return; BoardPlayerMotBlendSet(moveAwayPlayer[var_r31], 0, 15); moveAwayPlayer[var_r31] = -1; } @@ -2131,16 +2332,15 @@ static void MoveAwayObjFunc(omObjData* arg0) { temp_r30->field00_bit0 = 1; } -void BoardBowserSuitInit(s32 arg0) { - omObjData* temp_r3; +void BoardBowserSuitInit(s32 arg0) +{ + omObjData *temp_r3; s32 temp_r27; s32 var_r29; s32 temp; - bitcopy3* temp_r31; + bitcopy3 *temp_r31; - - for (var_r29 = 0; var_r29 < 4; var_r29++) { - } + for (var_r29 = 0; var_r29 < 4; var_r29++) { } temp_r27 = GWPlayer[arg0].character; temp = BoardDataDirReadAsync(0x40000); BoardDataAsyncWait(temp); @@ -2158,11 +2358,12 @@ void BoardBowserSuitInit(s32 arg0) { BoardPlayerVoiceEnableSet(arg0, 4, 0); } -void BoardBowserSuitKill(s32 arg0) { - bitcopy3* temp; +void BoardBowserSuitKill(s32 arg0) +{ + bitcopy3 *temp; if (bowserSuitObj != 0) { - OM_GET_WORK_PTR(bowserSuitObj, bitcopy3)->field00_bit0 = 1; + OM_GET_WORK_PTR(bowserSuitObj, bitcopy3)->field00_bit0 = 1; } GWPlayer[arg0].bowser_suit = 0; BoardModelVoiceEnableSet(BoardPlayerModelGet(arg0), 3, 1); @@ -2178,58 +2379,66 @@ void BoardBowserSuitKill(s32 arg0) { HuDataDirClose(0x40000); } -s16 BoardBowserSuitModelGet(void) { +s16 BoardBowserSuitModelGet(void) +{ return suitMdl; } -s16 BoardBowserSuitPlayerModelGet(void) { +s16 BoardBowserSuitPlayerModelGet(void) +{ return suitPlayerMdl; } -void BoardBowserSuitMotionCreate(void) { +void BoardBowserSuitMotionCreate(void) +{ s32 var_r31; - for (var_r31 = 0; var_r31 < 5; var_r31++) { - bowserSuitMot[var_r31] = (s16) BoardModelMotionCreate(suitMdl, bowserSuitMotTbl[var_r31]); + bowserSuitMot[var_r31] = (s16)BoardModelMotionCreate(suitMdl, bowserSuitMotTbl[var_r31]); } suitCurrMot = -1; } -void BoardBowserSuitMotionSetWait(void) { +void BoardBowserSuitMotionSetWait(void) +{ if (suitCurrMot != 0) { - BoardModelMotionShiftSet(suitMdl, bowserSuitMot[0], 0.0f, 4.0f, 0x40000001); + BoardModelMotionShiftSet(suitMdl, bowserSuitMot[0], 0.0f, 4.0f, HU3D_MOTATTR_LOOP); suitCurrMot = 0; } } -void BoardBowserSuitMotionSetWalk(void) { +void BoardBowserSuitMotionSetWalk(void) +{ if (suitCurrMot != 1) { BoardModelMotionStart(suitMdl, bowserSuitMot[1], 0x40000001); suitCurrMot = 1; } } -void BoardBowserSuitMotionSetWin(void) { - BoardModelMotionShiftSet(suitMdl, bowserSuitMot[3], 0.0f, 4.0f, 0); +void BoardBowserSuitMotionSetWin(void) +{ + BoardModelMotionShiftSet(suitMdl, bowserSuitMot[3], 0.0f, 4.0f, HU3D_MOTATTR_NONE); suitCurrMot = 3; } -void BoardBowserSuitMotionSetJump(void) { - BoardModelMotionShiftSet(suitMdl, bowserSuitMot[2], 0.0f, 4.0f, 0); +void BoardBowserSuitMotionSetJump(void) +{ + BoardModelMotionShiftSet(suitMdl, bowserSuitMot[2], 0.0f, 4.0f, HU3D_MOTATTR_NONE); suitCurrMot = 2; } -void BoardBowserSuitPlayerModelKill(void) { +void BoardBowserSuitPlayerModelKill(void) +{ if (suitPlayerMdl != -1) { BoardModelMotionStart(suitPlayerMdl, 1, 0); BoardModelMotionSpeedSet(suitPlayerMdl, 0.0f); } } -static void UpdateBowserSuit(omObjData* arg0) { +static void UpdateBowserSuit(omObjData *arg0) +{ s16 temp_r30; - bitcopy3* temp_r31; + bitcopy3 *temp_r31; temp_r31 = OM_GET_WORK_PTR(arg0, bitcopy3); if ((temp_r31->field00_bit0 != 0) || (BoardIsKill() != 0)) { @@ -2249,7 +2458,8 @@ static void UpdateBowserSuit(omObjData* arg0) { } } -void BoardPlayerSparkSet(s32 arg0) { +void BoardPlayerSparkSet(s32 arg0) +{ s16 currSpace = GWPlayer[arg0].space_curr; GWPlayer[arg0].spark = 1; @@ -2258,586 +2468,594 @@ void BoardPlayerSparkSet(s32 arg0) { static s32 DoSparkSpace(s32 player, s32 pause_cam) { - s32 i; - s16 temp_r28; - s32 coin; - s32 temp_r17; - Vec pos, rot; - Vec coin_pos; - s16 sp15C[4] = { -1, -1, -1, -1 }; - s32 sp138; - s32 sp134; - s32 sp130; - s32 sp12C; - s32 sp128; - s8 sp124[4] = { -1, -1, -1, -1 }; - s8 sp120[4] = { -1, -1, -1, -1 }; - s16 sp34; - s16 sp32; - s16 sp30; - s16 sp2E; - s16 sp2C; - sp30 = GWSystem.player_curr; - sp138 = 0; - sp34 = GWPlayer[player].space_curr; - - BoardSpacePosGet(0, sp34, &pos); - BoardSpaceRotGet(0, sp34, &rot); - for(i=0; i<4; i++) { - if(GWPlayer[i].space_shock == sp34) { - sp32 = i; - sp138 = 1; - } - } - if(!sp138) { - return 0; - } - BoardRollDispSet(0); - if(pause_cam) { - BoardCameraMoveSet(0); - } else { - BoardCameraMoveSet(1); - } - BoardCameraMotionWait(); - BoardCameraTargetPlayerSet(player); - BoardPlayerIdleSet(player); - temp_r28 = BoardModelCreate(0x70074, NULL, 0); - BoardModelMotionStart(temp_r28, 0, 0x40000002); - BoardModelMotionTimeSet(temp_r28, 30.0f); - BoardModelAttrSet(temp_r28, 0x40000002); - BoardModelRotSet(temp_r28, rot.x-90.0f, rot.y, rot.z); - BoardModelScaleSet(temp_r28, 2.0f, 2.0f, 2.0f); - BoardModelVisibilitySet(temp_r28, 0); - BoardModelLayerSet(temp_r28, 1); - sp2E = BoardModelCreate(0x70067, NULL, 0); - BoardModelLayerSet(sp2E, 1); - BoardModelMotionStart(sp2E, 0, 0); - HuAudFXPlay(796); - HuPrcSleep(2); - BoardModelAttrReset(temp_r28, 0x40000002); - BoardModelVisibilitySet(temp_r28, 1); - BoardModelPosSet(temp_r28, pos.x, 8.0f+pos.y, pos.z); - BoardModelPosSetV(sp2E, &pos); - sp128 = -1; - for(sp134=i=0; i<4; i++) { - if(GWPlayer[i].space_curr == sp34) { - sp124[sp134++] = i; - sp15C[i] = BoardPlayerMotionCreate(i, sparkMotTbl[GWPlayer[i].character]); - BoardPlayerMotionShiftSet(i, sp15C[i], 0, 8, 0); - HuAudFXPlay(boardSparkSfxTblAlt[GWPlayer[i].character]); - if(GWPlayer[i].bowser_suit) { - BoardModelMotionShiftSet(suitMdl, bowserSuitMot[4], 0.0f, 4.0f, 0); - sp128 = i; - } - } - } - sp130 = sp134; - HuPrcSleep(60); - while(!BoardModelMotionEndCheck(sp2E)) { - HuPrcVSleep(); - } - sp2C = 255; - for(i=0; i<45; i++) { - sp2C -= 5; - if(sp2C < 0) { - sp2C = 0; - } - BoardModelAlphaSet(temp_r28, sp2C); - BoardModelAlphaSet(sp2E, sp2C); - HuPrcVSleep(); - } - temp_r17 = BoardItemPrevGet(); - if(temp_r17 == 0 || temp_r17 == 1 || temp_r17 == 2 || temp_r17 == 3 || temp_r17 == 10) { - BoardCameraTargetPlayerSet(player); - BoardPlayerIdleSet(player); - HuPrcSleep(12); - BoardItemPlayerRestore(player, temp_r17); - while(!BoardItemDoneCheck()) { - HuPrcVSleep(); - } - BoardItemPrevSet(-1); - } - if(megaDoubleDiceF) { - BoardPlayerSizeRestore(player); - megaDoubleDiceF = 0; - } - if(sp128 != -1) { - HuAudFXPlay(boardSparkSfxTbl[GWPlayer[sp128].character]); - } - for(i=0; i 10) { - coin = 10; - } - if(coin > 0) { - - BoardPlayerPosGet(sp124[i], &coin_pos); - coin_pos.y += 250.0f; - sp120[i] = BoardCoinChgCreate(&coin_pos, -coin); - } - } - for(sp12C=i=0; i 10) { + coin = 10; + } + if (coin > 0) { + + BoardPlayerPosGet(sp124[i], &coin_pos); + coin_pos.y += 250.0f; + sp120[i] = BoardCoinChgCreate(&coin_pos, -coin); + } + } + for (sp12C = i = 0; i < sp130; i++) { + sp12C += BoardPlayerCoinsGet(sp124[i]); + } + if (sp12C) { + HuAudFXPlay(840); + for (coin = 0; coin < 10; coin++) { + for (i = 0; i < sp130; i++) { + BoardPlayerCoinsAdd(sp124[i], -1); + } + HuAudFXPlay(14); + HuPrcSleep(6); + } + HuAudFXPlay(15); + HuPrcSleep(90); + } + BoardModelKill(temp_r28); + BoardModelKill(sp2E); + for (i = 0; i < 4; i++) { + BoardPlayerIdleSet(sp124[i]); + } + HuPrcSleep(10); + GWSystem.player_curr = -1; + RemoveSparkSpace(sp32); + GWSystem.player_curr = sp30; + for (i = 0; i < 4; i++) { + if (sp15C[i] != -1) { + BoardPlayerMotionKill(i, sp15C[i]); + } + } + if (pause_cam) { + BoardCameraMoveSet(0); + BoardCameraMotionWait(); + } + + BoardCameraTargetPlayerSet(sp30); + BoardCameraMotionWait(); + BoardCameraMoveSet(1); + BoardRollDispSet(1); + return 1; } static void RemoveSparkSpace(s32 player) { - if(GWPlayer[player].spark) { - BoardWinCreate(0, MAKE_MESSID(18, 28), -1); - BoardWinWait(); - BoardWinKill(); - GWPlayer[player].spark = 0; - GWPlayer[player].space_shock = 0; - } + if (GWPlayer[player].spark) { + BoardWinCreate(0, MAKE_MESSID(18, 28), -1); + BoardWinWait(); + BoardWinKill(); + GWPlayer[player].spark = 0; + GWPlayer[player].space_shock = 0; + } } static void SetPlayerSizeAuto(s32 player) { - s32 auto_size = BoardPlayerAutoSizeGet(player); - if(auto_size != 0) { - BoardStatusHammerKill(player); - BoardPlayerAutoSizeSet(player, 0); - HuPrcSleep(30); - omVibrate(player, 90, 6, 6); - if(auto_size == 1) { - HuAudFXPlay(788); - HuAudFXPlay(787); - } else if(auto_size == 2) { - HuAudFXPlay(786); - HuAudFXPlay(785); - } - BoardPlayerResizeAnimExec(player, auto_size); - BoardPlayerSizeSet(player, auto_size); - HuPrcSleep(30); - megaDoubleDiceF = 1; - } + s32 auto_size = BoardPlayerAutoSizeGet(player); + if (auto_size != 0) { + BoardStatusHammerKill(player); + BoardPlayerAutoSizeSet(player, 0); + HuPrcSleep(30); + omVibrate(player, 90, 6, 6); + if (auto_size == 1) { + HuAudFXPlay(788); + HuAudFXPlay(787); + } + else if (auto_size == 2) { + HuAudFXPlay(786); + HuAudFXPlay(785); + } + BoardPlayerResizeAnimExec(player, auto_size); + BoardPlayerSizeSet(player, auto_size); + HuPrcSleep(30); + megaDoubleDiceF = 1; + } } s32 BoardMegaDoubleDiceCheck(void) { - return megaDoubleDiceF; + return megaDoubleDiceF; } void BoardPlayerResizeAnimExec(s32 player, s32 size) { - s32 j; - s32 i; - s16 modelid; - s32 frame; - s16 model; - float mdl_size; - float frame_data[9]; - float steps[4]; - float player_sizes[] = { 1, 0.3, 2.5 }; - - mdl_size = player_sizes[BoardPlayerSizeGet(player)]; - steps[0] = mdl_size; - steps[1] = mdl_size+((player_sizes[size]-mdl_size)/3); - steps[2] = mdl_size+((player_sizes[size]-mdl_size)/1.5f); - steps[3] = player_sizes[size]; - frame_data[0] = steps[1]; - frame_data[1] = steps[0]; - frame_data[2] = steps[1]; - frame_data[3] = steps[2]; - frame_data[4] = steps[1]; - frame_data[5] = steps[2]; - frame_data[6] = steps[3]; - frame_data[7] = steps[2]; - frame_data[8] = steps[3]; - model = BoardPlayerModelGet(player); - modelid = BoardModelIDGet(model); - Hu3DModelAttrSet(modelid, 0x40000002); - frame = 0; - for(j=0; j<9; j++) { - float size_vel; - size_vel = (frame_data[frame++]-mdl_size)/10.0f; - for(i=0; i<10; i++) { - BoardPlayerScaleSet(player, mdl_size, mdl_size, mdl_size); - mdl_size += size_vel; - HuPrcVSleep(); - } - } - Hu3DModelAttrReset(modelid, 0x40000002); - BoardPlayerSizeSet(player, size); + s32 j; + s32 i; + s16 modelid; + s32 frame; + s16 model; + float mdl_size; + float frame_data[9]; + float steps[4]; + float player_sizes[] = { 1, 0.3, 2.5 }; + + mdl_size = player_sizes[BoardPlayerSizeGet(player)]; + steps[0] = mdl_size; + steps[1] = mdl_size + ((player_sizes[size] - mdl_size) / 3); + steps[2] = mdl_size + ((player_sizes[size] - mdl_size) / 1.5f); + steps[3] = player_sizes[size]; + frame_data[0] = steps[1]; + frame_data[1] = steps[0]; + frame_data[2] = steps[1]; + frame_data[3] = steps[2]; + frame_data[4] = steps[1]; + frame_data[5] = steps[2]; + frame_data[6] = steps[3]; + frame_data[7] = steps[2]; + frame_data[8] = steps[3]; + model = BoardPlayerModelGet(player); + modelid = BoardModelIDGet(model); + Hu3DModelAttrSet(modelid, HU3D_MOTATTR_PAUSE); + frame = 0; + for (j = 0; j < 9; j++) { + float size_vel; + size_vel = (frame_data[frame++] - mdl_size) / 10.0f; + for (i = 0; i < 10; i++) { + BoardPlayerScaleSet(player, mdl_size, mdl_size, mdl_size); + mdl_size += size_vel; + HuPrcVSleep(); + } + } + Hu3DModelAttrReset(modelid, HU3D_MOTATTR_PAUSE); + BoardPlayerSizeSet(player, size); } typedef struct mega_squish_work { - struct { - u8 kill : 1; - u8 no_coinchg : 1; - u8 played_snd : 1; - u8 gain_player : 2; - }; - s8 player; - s8 state; - s8 coinchg; - s8 loss; - s8 disappear_time; - s8 disappear_len; - u16 hide_time; + struct { + u8 kill : 1; + u8 no_coinchg : 1; + u8 played_snd : 1; + u8 gain_player : 2; + }; + s8 player; + s8 state; + s8 coinchg; + s8 loss; + s8 disappear_time; + s8 disappear_len; + u16 hide_time; } MegaSquishWork; static void MegaSquishFunc(omObjData *object) { - MegaSquishWork *work = OM_GET_WORK_PTR(object, MegaSquishWork); - Vec pos; - if(work->kill || BoardIsKill()) { - if(work->coinchg != -1) { - BoardCoinChgHide(work->coinchg); - } - megaSquishObj[work->player] = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->hide_time != 0) { - work->hide_time--; - return; - } - switch(work->state) { - case 1: - if(!work->played_snd) { - HuAudFXPlay(798); - HuAudFXPlay(megaSquishSfxTbl[GWPlayer[work->player].character]); - work->played_snd = 1; - } - BoardPlayerMotionStart(work->player, 10, 0); - BoardPlayerMotionSpeedSet(work->player, 2.0f); - work->state = 2; - break; - - case 2: - { - if(!BoardModelMotionTimeGet(BoardPlayerModelGet(work->player) >= 50.0f)) { - return; - } - BoardPlayerMotionSpeedSet(work->player, 0.0f); - BoardPlayerPosGet(work->player, &pos); - pos.y += 10.0f; - BoardPlayerPosSetV(work->player, &pos); - work->hide_time = 20; - work->state = 3; - work->coinchg = -1; - work->disappear_time = 0; - } - - break; - - case 3: - if(work->coinchg == -1) { - BoardPlayerPosGet(work->player, &pos); - - pos.y += 250.0f; - if(!work->no_coinchg) { - work->coinchg = BoardCoinChgCreate(&pos, -work->loss); - } else { - work->state = 4; - work->hide_time = work->disappear_len; - } - } - if(work->disappear_time++ < work->disappear_len) { - return; - } - work->disappear_time = 0; - if(work->loss <= 0) { - work->state = 4; - HuAudFXPlay(15); - } else { - work->loss--; - BoardPlayerCoinsAdd(work->player, -1); - HuAudFXPlay(14); - BoardPlayerCoinsAdd(work->gain_player, 1); - } - break; - - case 4: - BoardPlayerMotionSpeedSet(work->player, 2.0f); - BoardPlayerPosGet(work->player, &pos); - pos.y -= 10.0f; - BoardPlayerPosSetV(work->player, &pos); - work->state = 5; - break; - - case 5: - if(!BoardPlayerMotionEndCheck(work->player)) { - return; - } - BoardPlayerIdleSet(work->player); - work->kill = 1; - break; - - case 0: - break; - - default: - break; - } + MegaSquishWork *work = OM_GET_WORK_PTR(object, MegaSquishWork); + Vec pos; + if (work->kill || BoardIsKill()) { + if (work->coinchg != -1) { + BoardCoinChgHide(work->coinchg); + } + megaSquishObj[work->player] = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if (work->hide_time != 0) { + work->hide_time--; + return; + } + switch (work->state) { + case 1: + if (!work->played_snd) { + HuAudFXPlay(798); + HuAudFXPlay(megaSquishSfxTbl[GWPlayer[work->player].character]); + work->played_snd = 1; + } + BoardPlayerMotionStart(work->player, 10, 0); + BoardPlayerMotionSpeedSet(work->player, 2.0f); + work->state = 2; + break; + + case 2: { + if (!BoardModelMotionTimeGet(BoardPlayerModelGet(work->player) >= 50.0f)) { + return; + } + BoardPlayerMotionSpeedSet(work->player, 0.0f); + BoardPlayerPosGet(work->player, &pos); + pos.y += 10.0f; + BoardPlayerPosSetV(work->player, &pos); + work->hide_time = 20; + work->state = 3; + work->coinchg = -1; + work->disappear_time = 0; + } + + break; + + case 3: + if (work->coinchg == -1) { + BoardPlayerPosGet(work->player, &pos); + + pos.y += 250.0f; + if (!work->no_coinchg) { + work->coinchg = BoardCoinChgCreate(&pos, -work->loss); + } + else { + work->state = 4; + work->hide_time = work->disappear_len; + } + } + if (work->disappear_time++ < work->disappear_len) { + return; + } + work->disappear_time = 0; + if (work->loss <= 0) { + work->state = 4; + HuAudFXPlay(15); + } + else { + work->loss--; + BoardPlayerCoinsAdd(work->player, -1); + HuAudFXPlay(14); + BoardPlayerCoinsAdd(work->gain_player, 1); + } + break; + + case 4: + BoardPlayerMotionSpeedSet(work->player, 2.0f); + BoardPlayerPosGet(work->player, &pos); + pos.y -= 10.0f; + BoardPlayerPosSetV(work->player, &pos); + work->state = 5; + break; + + case 5: + if (!BoardPlayerMotionEndCheck(work->player)) { + return; + } + BoardPlayerIdleSet(work->player); + work->kill = 1; + break; + + case 0: + break; + + default: + break; + } } static s32 MegaPlayerPassFunc(s32 player, s32 space) { - float temp_f30; - float temp_f29; - MegaSquishWork *temp_r31; - s32 temp_r29; - MegaSquishWork *temp_r28; - s32 temp_r27; - s32 temp_r26; - s32 temp_r24; - omObjData *temp_r23; - s32 spD0[4]; - Vec spC4; - Vec spB8; - Vec spAC; - Vec spA0; - float sp98[2]; - - - if(GWPlayer[player].bowser_suit) { - return MegaExecJump(player, space); - } - if(BoardPlayerSizeGet(player) != 2) { - return 0; - } - spD0[0] = spD0[1] = spD0[2] = -1; - for(temp_r26=temp_r29=0; temp_r29<4; temp_r29++) { - if(temp_r29 != player && GWPlayer[temp_r29].space_curr == space) { - spD0[temp_r26++] = temp_r29; - BoardPlayerPosGet(temp_r29, &spA0); - temp_r23 = omAddObjEx(boardObjMan, 256, 0, 0, -1, MegaSquishFunc); - megaSquishObj[temp_r29] = temp_r23; - temp_r31 = OM_GET_WORK_PTR(temp_r23, MegaSquishWork); - temp_r31->kill = 0; - temp_r31->player = temp_r29; - temp_r31->gain_player = player; - temp_r31->state = 0; - temp_r31->hide_time = 0; - temp_r31->loss = 0; - temp_r31->disappear_len = 3; - temp_r31->disappear_time = 0; - temp_r31->played_snd = 0; - if(BoardPlayerCoinsGet(temp_r31->player) <= 0) { - temp_r31->no_coinchg = 1; - } else { - temp_r31->no_coinchg = 0; - } - if(BoardPlayerCoinsGet(temp_r31->player) >= 10) { - temp_r31->loss = 10; - } else { - temp_r31->loss = BoardPlayerCoinsGet(temp_r31->player); - } - } - } - if(temp_r26 == 0) { - return 0; - } - if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { + float temp_f30; + float temp_f29; + MegaSquishWork *temp_r31; + s32 temp_r29; + MegaSquishWork *temp_r28; + s32 temp_r27; + s32 temp_r26; + s32 temp_r24; + omObjData *temp_r23; + s32 spD0[4]; + Vec spC4; + Vec spB8; + Vec spAC; + Vec spA0; + float sp98[2]; + + if (GWPlayer[player].bowser_suit) { + return MegaExecJump(player, space); + } + if (BoardPlayerSizeGet(player) != 2) { + return 0; + } + spD0[0] = spD0[1] = spD0[2] = -1; + for (temp_r26 = temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if (temp_r29 != player && GWPlayer[temp_r29].space_curr == space) { + spD0[temp_r26++] = temp_r29; + BoardPlayerPosGet(temp_r29, &spA0); + temp_r23 = omAddObjEx(boardObjMan, 256, 0, 0, -1, MegaSquishFunc); + megaSquishObj[temp_r29] = temp_r23; + temp_r31 = OM_GET_WORK_PTR(temp_r23, MegaSquishWork); + temp_r31->kill = 0; + temp_r31->player = temp_r29; + temp_r31->gain_player = player; + temp_r31->state = 0; + temp_r31->hide_time = 0; + temp_r31->loss = 0; + temp_r31->disappear_len = 3; + temp_r31->disappear_time = 0; + temp_r31->played_snd = 0; + if (BoardPlayerCoinsGet(temp_r31->player) <= 0) { + temp_r31->no_coinchg = 1; + } + else { + temp_r31->no_coinchg = 0; + } + if (BoardPlayerCoinsGet(temp_r31->player) >= 10) { + temp_r31->loss = 10; + } + else { + temp_r31->loss = BoardPlayerCoinsGet(temp_r31->player); + } + } + } + if (temp_r26 == 0) { + return 0; + } + if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { BoardTutorialHookExec(24, 0); } - BoardPlayerPosGet(player, &spB8); - BoardSpacePosGet(0, space, &spC4); - sp98[0] = spB8.y; - if(spC4.y > spB8.y) { - spB8.y += 300.0f; - } else { - spB8.y += 200.0f; - } - VECSubtract(&spC4, &spB8, &spAC); - spAC.x /= 60.0f; - spAC.z /= 60.0f; - BoardPlayerRotYSet(player, 90.0-(180.0*(atan2(spAC.z, spAC.x)/M_PI))); - sp98[1] = BoardVecDistXZCalc(&spC4, &spB8); - BoardPlayerMotionShiftSet(player, 4, 0, 8, 0); - HuPrcSleep(8); - temp_r24 = 0; - for(temp_f30=0; temp_f30<60.0f; temp_f30++) { - temp_f29 = spB8.y; - spB8.x += spAC.x; - spB8.z += spAC.z; - spB8.y += 10.0f + (0.9f*(-0.020416668f * temp_f30 * temp_f30)); - if(temp_f29 > spB8.y) { - temp_r24 = 1; - } - if(spB8.y <= 200.0f+spC4.y && temp_r24) { - for(temp_r27=0; temp_r27<4; temp_r27++) { - if(megaSquishObj[temp_r27]) { - temp_r28 = OM_GET_WORK_PTR(megaSquishObj[temp_r27], MegaSquishWork); - if((s16)space == GWPlayer[temp_r28->player].space_curr && temp_r28->state != 1) { - temp_r28->state = 1; - } - } - } - } - if(spB8.y <= spC4.y) { - spB8.y = spC4.y; - BoardPlayerMotionShiftSet(player, 5, 0, 4, 0); - } - BoardPlayerPosSetV(player, &spB8); - HuPrcVSleep(); - } - BoardCameraQuakeSet(30, 500.0f); - omVibrate(0, 12, 4, 2); - omVibrate(1, 12, 4, 2); - omVibrate(2, 12, 4, 2); - omVibrate(3, 12, 4, 2); - BoardPlayerIdleSet(player); - HuPrcSleep(30); + BoardPlayerPosGet(player, &spB8); + BoardSpacePosGet(0, space, &spC4); + sp98[0] = spB8.y; + if (spC4.y > spB8.y) { + spB8.y += 300.0f; + } + else { + spB8.y += 200.0f; + } + VECSubtract(&spC4, &spB8, &spAC); + spAC.x /= 60.0f; + spAC.z /= 60.0f; + BoardPlayerRotYSet(player, 90.0 - atan2d(spAC.z, spAC.x)); + sp98[1] = BoardVecDistXZCalc(&spC4, &spB8); + BoardPlayerMotionShiftSet(player, 4, 0, 8, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + temp_r24 = 0; + for (temp_f30 = 0; temp_f30 < 60.0f; temp_f30++) { + temp_f29 = spB8.y; + spB8.x += spAC.x; + spB8.z += spAC.z; + spB8.y += 10.0f + (0.9f * (-0.020416668f * temp_f30 * temp_f30)); + if (temp_f29 > spB8.y) { + temp_r24 = 1; + } + if (spB8.y <= 200.0f + spC4.y && temp_r24) { + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + if (megaSquishObj[temp_r27]) { + temp_r28 = OM_GET_WORK_PTR(megaSquishObj[temp_r27], MegaSquishWork); + if ((s16)space == GWPlayer[temp_r28->player].space_curr && temp_r28->state != 1) { + temp_r28->state = 1; + } + } + } + } + if (spB8.y <= spC4.y) { + spB8.y = spC4.y; + BoardPlayerMotionShiftSet(player, 5, 0, 4, HU3D_MOTATTR_NONE); + } + BoardPlayerPosSetV(player, &spB8); + HuPrcVSleep(); + } + BoardCameraQuakeSet(30, 500.0f); + omVibrate(0, 12, 4, 2); + omVibrate(1, 12, 4, 2); + omVibrate(2, 12, 4, 2); + omVibrate(3, 12, 4, 2); + BoardPlayerIdleSet(player); + HuPrcSleep(30); } static s32 MegaExecJump(s32 player, s32 space) { - float temp_f30; - float temp_f29; - MegaSquishWork *temp_r31; - s32 temp_r29; - MegaSquishWork *temp_r28; - s32 temp_r27; - s32 temp_r26; - s32 temp_r25; - s32 temp_r24; - omObjData *temp_r23; - s32 spD0[4]; - Vec spC4; - Vec spB8; - Vec spAC; - Vec spA0; - float sp90[2]; - spD0[0] = spD0[1] = spD0[2] = -1; - for(temp_r26=temp_r29=0; temp_r29<4; temp_r29++) { - if(temp_r29 != player && GWPlayer[temp_r29].space_curr == space) { - spD0[temp_r26++] = temp_r29; - BoardPlayerPosGet(temp_r29, &spA0); - temp_r23 = omAddObjEx(boardObjMan, 256, 0, 0, -1, MegaSquishFunc); - megaSquishObj[temp_r29] = temp_r23; - temp_r31 = OM_GET_WORK_PTR(temp_r23, MegaSquishWork); - temp_r31->kill = 0; - temp_r31->player = temp_r29; - temp_r31->gain_player = player; - temp_r31->state = 0; - temp_r31->hide_time = 0; - temp_r31->loss = 0; - temp_r31->disappear_len = 3; - temp_r31->disappear_time = 0; - if(BoardPlayerCoinsGet(temp_r31->player) <= 0) { - temp_r31->no_coinchg = 1; - } else { - temp_r31->no_coinchg = 0; - } - if(BoardPlayerCoinsGet(temp_r31->player) >= 30) { - temp_r31->loss = 30; - } else { - temp_r31->loss = BoardPlayerCoinsGet(temp_r31->player); - } - } - } - if(temp_r26 == 0) { - return 0; - } - BoardPlayerPosGet(player, &spB8); - BoardSpacePosGet(0, space, &spC4); - sp90[0] = spB8.y; - if(spC4.y > spB8.y) { - spB8.y += 300.0f; - } else { - spB8.y += 200.0f; - } - VECSubtract(&spC4, &spB8, &spAC); - spAC.x /= 60.0f; - spAC.z /= 60.0f; - BoardPlayerRotYSet(player, 90.0-(180.0*(atan2(spAC.z, spAC.x)/M_PI))); - BoardPlayerIdleSet(player); - HuPrcSleep(10); - sp90[1] = BoardVecDistXZCalc(&spC4, &spB8); - BoardModelMotionShiftSet(suitMdl, bowserSuitMot[3], 0.0f, 8.0f, 0); - BoardModelMotionSpeedSet(suitMdl, 2.0f); - HuPrcSleep(8); - HuAudFXPlay(809); - temp_r24 = 0; - temp_r25 = 0; - for(temp_f30=0; temp_f30<60.0f; temp_f30++) { - temp_f29 = spB8.y; - spB8.x += spAC.x; - spB8.z += spAC.z; - spB8.y += 10.0f + (0.9f*(-0.020416668f * temp_f30 * temp_f30)); - if(temp_f29 > spB8.y) { - temp_r25 = 1; - } - if(spB8.y <= 200.0f+spC4.y && temp_r25) { - for(temp_r27=0; temp_r27<4; temp_r27++) { - if(megaSquishObj[temp_r27]) { - temp_r28 = OM_GET_WORK_PTR(megaSquishObj[temp_r27], MegaSquishWork); - if((s16)space == GWPlayer[temp_r28->player].space_curr && temp_r28->state != 1) { - temp_r28->state = 1; - } - } - } - } - if(spB8.y <= spC4.y) { - spB8.y = spC4.y; - if(!temp_r24) { - BoardPlayerIdleSet(player); - HuAudFXPlay(810); - temp_r24 = 1; - } - - } - BoardPlayerPosSetV(player, &spB8); - HuPrcVSleep(); - } - BoardCameraQuakeSet(30, 500.0f); - omVibrate(0, 12, 4, 2); - omVibrate(1, 12, 4, 2); - omVibrate(2, 12, 4, 2); - omVibrate(3, 12, 4, 2); - BoardPlayerIdleSet(player); - HuPrcSleep(30); + float temp_f30; + float temp_f29; + MegaSquishWork *temp_r31; + s32 temp_r29; + MegaSquishWork *temp_r28; + s32 temp_r27; + s32 temp_r26; + s32 temp_r25; + s32 temp_r24; + omObjData *temp_r23; + s32 spD0[4]; + Vec spC4; + Vec spB8; + Vec spAC; + Vec spA0; + float sp90[2]; + spD0[0] = spD0[1] = spD0[2] = -1; + for (temp_r26 = temp_r29 = 0; temp_r29 < 4; temp_r29++) { + if (temp_r29 != player && GWPlayer[temp_r29].space_curr == space) { + spD0[temp_r26++] = temp_r29; + BoardPlayerPosGet(temp_r29, &spA0); + temp_r23 = omAddObjEx(boardObjMan, 256, 0, 0, -1, MegaSquishFunc); + megaSquishObj[temp_r29] = temp_r23; + temp_r31 = OM_GET_WORK_PTR(temp_r23, MegaSquishWork); + temp_r31->kill = 0; + temp_r31->player = temp_r29; + temp_r31->gain_player = player; + temp_r31->state = 0; + temp_r31->hide_time = 0; + temp_r31->loss = 0; + temp_r31->disappear_len = 3; + temp_r31->disappear_time = 0; + if (BoardPlayerCoinsGet(temp_r31->player) <= 0) { + temp_r31->no_coinchg = 1; + } + else { + temp_r31->no_coinchg = 0; + } + if (BoardPlayerCoinsGet(temp_r31->player) >= 30) { + temp_r31->loss = 30; + } + else { + temp_r31->loss = BoardPlayerCoinsGet(temp_r31->player); + } + } + } + if (temp_r26 == 0) { + return 0; + } + BoardPlayerPosGet(player, &spB8); + BoardSpacePosGet(0, space, &spC4); + sp90[0] = spB8.y; + if (spC4.y > spB8.y) { + spB8.y += 300.0f; + } + else { + spB8.y += 200.0f; + } + VECSubtract(&spC4, &spB8, &spAC); + spAC.x /= 60.0f; + spAC.z /= 60.0f; + BoardPlayerRotYSet(player, 90.0 - atan2d(spAC.z, spAC.x)); + BoardPlayerIdleSet(player); + HuPrcSleep(10); + sp90[1] = BoardVecDistXZCalc(&spC4, &spB8); + BoardModelMotionShiftSet(suitMdl, bowserSuitMot[3], 0.0f, 8.0f, HU3D_MOTATTR_NONE); + BoardModelMotionSpeedSet(suitMdl, 2.0f); + HuPrcSleep(8); + HuAudFXPlay(809); + temp_r24 = 0; + temp_r25 = 0; + for (temp_f30 = 0; temp_f30 < 60.0f; temp_f30++) { + temp_f29 = spB8.y; + spB8.x += spAC.x; + spB8.z += spAC.z; + spB8.y += 10.0f + (0.9f * (-0.020416668f * temp_f30 * temp_f30)); + if (temp_f29 > spB8.y) { + temp_r25 = 1; + } + if (spB8.y <= 200.0f + spC4.y && temp_r25) { + for (temp_r27 = 0; temp_r27 < 4; temp_r27++) { + if (megaSquishObj[temp_r27]) { + temp_r28 = OM_GET_WORK_PTR(megaSquishObj[temp_r27], MegaSquishWork); + if ((s16)space == GWPlayer[temp_r28->player].space_curr && temp_r28->state != 1) { + temp_r28->state = 1; + } + } + } + } + if (spB8.y <= spC4.y) { + spB8.y = spC4.y; + if (!temp_r24) { + BoardPlayerIdleSet(player); + HuAudFXPlay(810); + temp_r24 = 1; + } + } + BoardPlayerPosSetV(player, &spB8); + HuPrcVSleep(); + } + BoardCameraQuakeSet(30, 500.0f); + omVibrate(0, 12, 4, 2); + omVibrate(1, 12, 4, 2); + omVibrate(2, 12, 4, 2); + omVibrate(3, 12, 4, 2); + BoardPlayerIdleSet(player); + HuPrcSleep(30); } -void BoardPlayerCopyEyeMat(s32 arg0, s32 arg1) { - HsfMaterial* var_r29; +void BoardPlayerCopyEyeMat(s32 arg0, s32 arg1) +{ + HsfMaterial *var_r29; s32 var_r24; s32 var_r25; u32 var_r27; - HsfAttribute* temp_r26; - char** temp_r28; - HsfData* hsfData; - HsfMaterial* material; + HsfAttribute *temp_r26; + char **temp_r28; + HsfData *hsfData; + HsfMaterial *material; ModelData *model; s16 modelId = BoardModelIDGet(BoardPlayerModelGet(arg0)); model = &Hu3DData[modelId]; @@ -2849,9 +3067,9 @@ void BoardPlayerCopyEyeMat(s32 arg0, s32 arg1) { (void)temp_r28; for (var_r25 = 0; var_r25 < hsfData->materialCnt; var_r25++, material++, var_r29++) { var_r24 = 1; - + for (var_r27 = 0; var_r27 < material->numAttrs; var_r27++) { - temp_r26 = &hsfData->attribute[(s32) material->attrs[var_r27]]; + temp_r26 = &hsfData->attribute[(s32)material->attrs[var_r27]]; if ((strcmp(temp_r28[0], temp_r26->bitmap->name) == 0) || (strcmp(temp_r28[1], temp_r26->bitmap->name) == 0)) { var_r24 = 0; } @@ -2861,29 +3079,32 @@ void BoardPlayerCopyEyeMat(s32 arg0, s32 arg1) { material->color[0] *= 0.0f; material->color[1] *= 0.0f; material->color[2] *= 0.0f; - } else { + } + else { material->color[0] = var_r29->color[0]; material->color[1] = var_r29->color[1]; material->color[2] = var_r29->color[2]; } } } - } else { + } + else { memcpy(hsfData->material, var_r29, hsfData->materialCnt * 0x3C); } DCStoreRange(hsfData->material, hsfData->materialCnt * 0x3C); } -void BoardPlayerCopyMat(s32 arg0) { +void BoardPlayerCopyMat(s32 arg0) +{ s16 modelID; ModelData *model; - void* temp_r3; - HsfData* temp_r31; + void *temp_r3; + HsfData *temp_r31; modelID = BoardModelIDGet(BoardPlayerModelGet(arg0)); model = &Hu3DData[modelID]; temp_r31 = model->hsfData; - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r31->materialCnt * 0x3C, 0x10000000U); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r31->materialCnt * 0x3C, MEMORY_DEFAULT_NUM); memcpy(temp_r3, temp_r31->material, temp_r31->materialCnt * 0x3C); playerMatCopy[arg0] = temp_r3; } diff --git a/src/game/board/roll.c b/src/game/board/roll.c index 28866389..c52bd6a5 100755 --- a/src/game/board/roll.c +++ b/src/game/board/roll.c @@ -1,16 +1,17 @@ #include "game/board/roll.h" #include "game/audio.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/pause.h" +#include "game/board/player.h" +#include "game/board/tutorial.h" +#include "game/disp.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/object.h" #include "game/pad.h" #include "game/process.h" #include "game/window.h" -#include "game/board/main.h" -#include "game/board/model.h" -#include "game/board/pause.h" -#include "game/board/player.h" -#include "game/board/tutorial.h" #include "ext_math.h" @@ -41,7 +42,6 @@ typedef struct { float unk08; } DiceDigitWork; - static void RollMain(void); static void DiceCreate(s32 arg0); static void DoInput(s32 arg0); @@ -83,46 +83,17 @@ static omObjData *diceObj[3] = { NULL, NULL, NULL }; static omObjData *diceDigitObj[3] = { NULL, NULL, NULL }; static s32 diceSndStatus[3] = { -1, -1, -1 }; -static HsfanimStruct00 diceEffParam = { - 0x0096, - { 0x00, 0x00 }, // padding? - 50.0f, - 0.0f, - 65.0f, - { 0.0f, -0.195f, 0.0f }, - 100.0f, - 0.99f, - 40.0f, - 0.999f, - 0x0004, - { - { 0xFF, 0xFF, 0x20, 0xFF }, - { 0xFF, 0xFF, 0x00, 0xFF }, - { 0xFF, 0xFF, 0x80, 0xFF }, - { 0xFF, 0xFF, 0xFF, 0xFF } - }, - { - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 }, - { 0xFF, 0xFF, 0xFF, 0x00 } - } -}; +static HsfanimStruct00 diceEffParam = { 0x0096, { 0x00, 0x00 }, // padding? + 50.0f, 0.0f, 65.0f, { 0.0f, -0.195f, 0.0f }, 100.0f, 0.99f, 40.0f, 0.999f, 0x0004, + { { 0xFF, 0xFF, 0x20, 0xFF }, { 0xFF, 0xFF, 0x00, 0xFF }, { 0xFF, 0xFF, 0x80, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } }, + { { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 } } }; -static s32 diceDigitMdlTbl[10] = { - 0x0007000C, - 0x0007000D, - 0x0007000E, - 0x0007000F, - 0x00070010, - 0x00070011, - 0x00070012, - 0x00070013, - 0x00070014, - 0x00070015 -}; +static s32 diceDigitMdlTbl[10] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x0C), DATA_MAKE_NUM(DATADIR_BOARD, 0x0D), DATA_MAKE_NUM(DATADIR_BOARD, 0x0E), + DATA_MAKE_NUM(DATADIR_BOARD, 0x0F), DATA_MAKE_NUM(DATADIR_BOARD, 0x10), DATA_MAKE_NUM(DATADIR_BOARD, 0x11), DATA_MAKE_NUM(DATADIR_BOARD, 0x12), + DATA_MAKE_NUM(DATADIR_BOARD, 0x13), DATA_MAKE_NUM(DATADIR_BOARD, 0x14), DATA_MAKE_NUM(DATADIR_BOARD, 0x15) }; -s32 BoardRollExec(s32 arg0) { +s32 BoardRollExec(s32 arg0) +{ rollPlayer = arg0; inputTimer = 0; numDice = 1; @@ -145,7 +116,8 @@ s32 BoardRollExec(s32 arg0) { if (BoardPlayerSizeGet(arg0) == 1) { diceSize = 1; maxRoll = 5; - } else if (BoardPlayerSizeGet(arg0) == 2) { + } + else if (BoardPlayerSizeGet(arg0) == 2) { diceSize = 2; maxRoll = 10; if (BoardMegaDoubleDiceCheck() != 0) { @@ -167,7 +139,73 @@ s32 BoardRollExec(s32 arg0) { return destMode; } -void BoardRollKill(void) { +static void RollWinCreate(s32 playerNo) +{ + float sp8[2]; + float posX; + float posY; + s32 var_r29; + s32 var_r27; + s32 temp_r25; + + if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { + var_r27 = BoardPlayerItemCount(playerNo); + if (GWTeamGet()) { + temp_r25 = BoardPlayerSameTeamFind(playerNo); + var_r27 += BoardPlayerItemCount(temp_r25); + } + if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(FLAG_ID_MAKE(1, 9)) || BoardMegaDoubleDiceCheck()) { + var_r29 = MAKE_MESSID(0x09, 0x04); + } + else { + var_r29 = MAKE_MESSID(0x09, 0x02); + } + if (inputTimer != 0) { + var_r29 = MAKE_MESSID(0x30, 0x25); + } + HuWinMesMaxSizeGet(1, sp8, var_r29); + #if VERSION_PAL + posY = HU_DISP_HEIGHT - 176; + switch (GWGameStat.language) { + case 0: + case 4: + posX = -10000.0f; + break; + + case 3: + posX = HU_DISP_CENTERX - (sp8[0] / 2 - 32.0f); + break; + + case 5: + posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f); + posY = 258; + break; + + default: + posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f); + break; + } + #else + switch (GWGameStat.language) { + case 0: + posX = -10000.0f; + break; + case 1: + posX = HU_DISP_CENTERX - (sp8[0] / 2 - 16.0f); + break; + } + posY = HU_DISP_HEIGHT - 176; + #endif + + rollWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0); + HuWinBGTPLvlSet(rollWin, 0.0f); + HuWinMesSpeedSet(rollWin, 0); + HuWinMesSet(rollWin, var_r29); + } +} + +void BoardRollKill(void) +{ if (rollProc) { HuPrcKill(rollProc); } @@ -175,7 +213,8 @@ void BoardRollKill(void) { DiceKill(); } -void BoardRollUPauseSet(s32 arg0) { +void BoardRollUPauseSet(s32 arg0) +{ if (!rollProc) { return; } @@ -188,27 +227,26 @@ void BoardRollUPauseSet(s32 arg0) { DiceHideEffect(2, arg0); } -void BoardRollWinDispSet(s32 arg0) { +void BoardRollWinDispSet(s32 arg0) +{ if (rollWin == -1) { return; } if (arg0 != 0) { HuWinDispOn(rollWin); - } else { + } + else { HuWinDispOff(rollWin); } } -static void RollMain(void) { - float sp8[2]; - float var_f31; - float var_f30; +static void RollMain(void) +{ + s32 var_r28; - s32 var_r27; - s32 temp_r26; - s32 temp_r25; + s32 var_r30; - s32 var_r29; + s32 i; diceValue[0] = diceValue[1] = diceValue[2] = 0; @@ -218,36 +256,7 @@ static void RollMain(void) { BoardCameraMotionWait(); BoardCameraTargetModelSet(-1); for (i = 0; i < numDice; i++) { - temp_r26 = rollPlayer; - if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { - var_r27 = BoardPlayerItemCount(temp_r26); - if (GWTeamGet()) { - temp_r25 = BoardPlayerSameTeamFind(temp_r26); - var_r27 += BoardPlayerItemCount(temp_r25); - } - if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(FLAG_ID_MAKE(1, 9)) || BoardMegaDoubleDiceCheck()) { - var_r29 = 0x90004; - } else { - var_r29 = 0x90002; - } - if (inputTimer != 0) { - var_r29 = 0x300025; - } - HuWinMesMaxSizeGet(1, sp8, var_r29); - switch (GWGameStat.language) { - case 0: - var_f31 = -10000.0f; - break; - case 1: - var_f31 = 288.0f - (sp8[0] / 2 - 16.0f); - break; - } - var_f30 = 304.0f; - rollWin = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0); - HuWinBGTPLvlSet(rollWin, 0.0f); - HuWinMesSpeedSet(rollWin, 0); - HuWinMesSet(rollWin, var_r29); - } + RollWinCreate(rollPlayer); DiceCreate(i); DiceWaitFull(i); DoInput(i); @@ -305,19 +314,16 @@ static void RollMain(void) { HuPrcEnd(); } -static void DiceCreate(s32 arg0) { +static void DiceCreate(s32 arg0) +{ Vec sp1C; float temp_f30; float var_f31; omObjData *temp_r31; DiceWork *temp_r30; s32 sp8; - s32 spC[4] = { - 0x00070018, - 0x00070019, - 0x0007001A, - 0x0007001B - }; + s32 spC[4] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x18), DATA_MAKE_NUM(DATADIR_BOARD, 0x19), DATA_MAKE_NUM(DATADIR_BOARD, 0x1A), + DATA_MAKE_NUM(DATADIR_BOARD, 0x1B) }; sp8 = 0; diceMdl[arg0] = BoardModelCreate(spC[diceSize], NULL, 0); @@ -341,7 +347,8 @@ static void DiceCreate(s32 arg0) { var_f31 = 250.0f; if (diceSize == 2) { var_f31 = 625.0f; - } else if (GWPlayer[rollPlayer].bowser_suit != 0) { + } + else if (GWPlayer[rollPlayer].bowser_suit != 0) { var_f31 = 575.0f; } sp1C.y += var_f31; @@ -354,7 +361,8 @@ static void DiceCreate(s32 arg0) { sp1C.z += 70.0f; } -static void DoInput(s32 arg0) { +static void DoInput(s32 arg0) +{ s32 var_r31; s32 var_r30; u16 sp8[1]; @@ -392,7 +400,8 @@ static void DoInput(s32 arg0) { if (_CheckFlag(FLAG_ID_MAKE(1, 9)) && GWBoardGet() == BOARD_ID_MAIN6 && *sp8 == 0x200 && var_r31 != 0) { HuAudFXPlay(4); } - } else if (*sp8 == 0x200) { + } + else if (*sp8 == 0x200) { destMode = -2; HuAudFXPlay(3); BoardPauseDisableSet(1); @@ -402,7 +411,8 @@ static void DoInput(s32 arg0) { } } -static void DiceWaitFull(s32 arg0) { +static void DiceWaitFull(s32 arg0) +{ DiceWork *temp_r31 = OM_GET_WORK_PTR(diceObj[arg0], DiceWork); while (temp_r31->unk00_field2 != 1) { @@ -410,20 +420,22 @@ static void DiceWaitFull(s32 arg0) { } } -static void DiceSetHit(s32 arg0) { +static void DiceSetHit(s32 arg0) +{ DiceWork *temp_r30 = OM_GET_WORK_PTR(diceObj[arg0], DiceWork); temp_r30->unk00_field2 = 2; temp_r30->unk04 = 0; BoardModelMotionSpeedSet(diceMdl[arg0], 0.0f); - diceValue[arg0] = (s32) BoardModelMotionTimeGet(diceMdl[arg0]) + 1; + diceValue[arg0] = (s32)BoardModelMotionTimeGet(diceMdl[arg0]) + 1; if (tutorialRollF != 0 && tutorialRoll[arg0] != -1) { BoardModelMotionTimeSet(diceMdl[arg0], tutorialRoll[arg0] - 1); diceValue[arg0] = tutorialRoll[arg0]; } } -static void RollDestroy(void) { +static void RollDestroy(void) +{ if (rollWin != -1) { HuWinKill(rollWin); rollWin = -1; @@ -437,7 +449,8 @@ static void RollDestroy(void) { rollProc = NULL; } -static void DiceMain(omObjData *arg0) { +static void DiceMain(omObjData *arg0) +{ DiceWork *temp_r29 = OM_GET_WORK_PTR(arg0, DiceWork); float temp_f29; float var_f28; @@ -469,7 +482,8 @@ static void DiceMain(omObjData *arg0) { temp_r29->unk00_field2 = 1; arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f; arg0->rot.y = temp_r29->unk04 = 0; - } else { + } + else { if (temp_r29->unk04 == 0 && diceSndStatus[temp_r29->unk00_field3] == -1) { diceSndStatus[temp_r29->unk00_field3] = HuAudFXPlay(0x300); } @@ -478,17 +492,19 @@ static void DiceMain(omObjData *arg0) { if (temp_r29->unk04 < 0xB4) { var_f27 = 0.0f; var_f28 = 1.0f; - } else { + } + else { var_f27 = 1.0f; var_f28 = 0.5f; } - arg0->scale.x = var_f27 + var_f28 * sind((float) (temp_r29->unk04 % 180)); + arg0->scale.x = var_f27 + var_f28 * sind((float)(temp_r29->unk04 % 180)); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; if (temp_r29->unk04 <= 360) { if (temp_r29->unk04 < 0xB4) { temp_r29->unk04 += 6; - } else { + } + else { temp_r29->unk04 += 0x12; } if (temp_r29->unk04 > 360) { @@ -520,14 +536,16 @@ static void DiceMain(omObjData *arg0) { diceEff[temp_r29->unk00_field3] = BoardDiceEffectCreate(); Hu3DParManPosSet(diceEff[temp_r29->unk00_field3], arg0->trans.x, arg0->trans.y, arg0->trans.z); BoardModelVisibilitySet(diceMdl[temp_r29->unk00_field3], 0); - } else { + } + else { OSs16tof32(&temp_r29->unk04, &temp_f29); if (temp_r29->unk04 < 4) { arg0->trans.y += 10.0f + (0.5f * temp_f29); arg0->scale.x += 0.1f * sind(4.0f * temp_f29); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; - } else { + } + else { BoardModelAlphaSet(diceMdl[temp_r29->unk00_field3], 0xFF - (temp_r29->unk04 << 5)); } arg0->trans.y += -0.49f * temp_f29 * temp_f29; @@ -555,7 +573,8 @@ static void DiceMain(omObjData *arg0) { BoardModelScaleSet(diceMdl[temp_r29->unk00_field3], arg0->scale.x, arg0->scale.y, arg0->scale.z); } -static void DicePause(s32 arg0) { +static void DicePause(s32 arg0) +{ omObjData *temp_r31 = diceObj[arg0]; if (temp_r31) { @@ -563,19 +582,21 @@ static void DicePause(s32 arg0) { } } -static void DicePauseAll(void) { +static void DicePauseAll(void) +{ DicePause(0); DicePause(1); DicePause(2); } -s16 BoardDiceEffectCreate(void) { +s16 BoardDiceEffectCreate(void) +{ s16 temp_r31; s16 temp_r30; AnimData *temp_r29; void *temp_r28; - temp_r28 = HuDataSelHeapReadNum(0x7006B, MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 0x6B), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r29 = HuSprAnimRead(temp_r28); temp_r31 = Hu3DParManCreate(temp_r29, 0x64, &diceEffParam); Hu3DParManAttrSet(temp_r31, 0x108); @@ -588,7 +609,8 @@ s16 BoardDiceEffectCreate(void) { return temp_r31; } -static void DiceHideEffect(s32 arg0, s32 arg1) { +static void DiceHideEffect(s32 arg0, s32 arg1) +{ s16 temp_r31; if (diceEff[arg0] == -1) { @@ -596,13 +618,15 @@ static void DiceHideEffect(s32 arg0, s32 arg1) { } temp_r31 = Hu3DParManModelIDGet(diceEff[arg0]); if (arg1 != 0) { - Hu3DModelAttrReset(temp_r31, 1); - } else { - Hu3DModelAttrSet(temp_r31, 1); + Hu3DModelAttrReset(temp_r31, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrSet(temp_r31, HU3D_ATTR_DISPOFF); } } -void BoardDicePauseAll(void) { +void BoardDicePauseAll(void) +{ DiceDigitWork *temp_r30; s32 i; @@ -616,7 +640,8 @@ void BoardDicePauseAll(void) { } } -BOOL BoardDiceDoneCheck(void) { +BOOL BoardDiceDoneCheck(void) +{ DiceDigitWork *temp_r30; s32 i; @@ -631,7 +656,8 @@ BOOL BoardDiceDoneCheck(void) { return TRUE; } -void BoardDiceStop(s32 arg0) { +void BoardDiceStop(s32 arg0) +{ DiceDigitWork *temp_r31; if (!diceDigitObj[arg0]) { @@ -641,7 +667,8 @@ void BoardDiceStop(s32 arg0) { temp_r31->unk00_field0 = 1; } -void BoardDiceVisibleSet(s32 arg0, s32 arg1) { +void BoardDiceVisibleSet(s32 arg0, s32 arg1) +{ DiceDigitWork *temp_r31; if (!diceDigitObj[arg0]) { @@ -650,13 +677,15 @@ void BoardDiceVisibleSet(s32 arg0, s32 arg1) { temp_r31 = OM_GET_WORK_PTR(diceDigitObj[arg0], DiceDigitWork); if ((temp_r31->unk01 / 10) == 0) { BoardModelVisibilitySet(temp_r31->unk04[1], 0); - } else { + } + else { BoardModelVisibilitySet(temp_r31->unk04[1], arg1); } BoardModelVisibilitySet(temp_r31->unk04[0], arg1); } -void BoardDiceValueSet(s32 arg0, s32 arg1) { +void BoardDiceValueSet(s32 arg0, s32 arg1) +{ omObjData *temp_r27; DiceDigitWork *temp_r31; Vec spC; @@ -695,7 +724,8 @@ void BoardDiceValueSet(s32 arg0, s32 arg1) { diceDigitObj[arg0] = temp_r27; } -static void DiceDigitMain(omObjData *arg0) { +static void DiceDigitMain(omObjData *arg0) +{ DiceDigitWork *temp_r31 = OM_GET_WORK_PTR(arg0, DiceDigitWork); if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { @@ -708,7 +738,8 @@ static void DiceDigitMain(omObjData *arg0) { DiceDigitRotate(temp_r31, temp_r31->unk00_field1); } -static void DiceDigitKill(DiceDigitWork *arg0) { +static void DiceDigitKill(DiceDigitWork *arg0) +{ s32 i; for (i = 0; i < 2; i++) { @@ -718,7 +749,8 @@ static void DiceDigitKill(DiceDigitWork *arg0) { } } -static void DiceKill(void) { +static void DiceKill(void) +{ DiceDigitWork *temp_r29; s32 i; @@ -730,22 +762,18 @@ static void DiceKill(void) { } } -static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1) { +static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1) +{ s32 sp8 = 0; Vec sp30; Vec sp24; Vec sp54[2]; - Vec sp18 = { 288.0f, 155.0f, 240.0f }; - Vec sp3C[2] = { - { 144.0f, 155.0f, 240.0f }, - { 432.0f, 155.0f, 240.0f } - }; - Vec sp6C[3] = { - { 144.0f, 155.0f, 240.0f }, - { 432.0f, 155.0f, 240.0f }, - { 288.0f, 155.0f, 240.0f } - }; - Vec spC = { 288.0f, 176.0f, 240.0f }; + Vec sp18 = { (HU_DISP_WIDTH / 2), (HU_DISP_HEIGHT * 155) / 480, 240.0f }; + Vec sp3C[2] + = { { (HU_DISP_WIDTH * 1) / 4, (HU_DISP_HEIGHT * 155) / 480, 240.0f }, { (HU_DISP_WIDTH * 3) / 4, (HU_DISP_HEIGHT * 155) / 480, 240.0f } }; + Vec sp6C[3] = { { (HU_DISP_WIDTH * 1) / 4, (HU_DISP_HEIGHT * 155) / 480, 240.0f }, + { (HU_DISP_WIDTH * 3) / 4, (HU_DISP_HEIGHT * 155) / 480, 240.0f }, { (HU_DISP_WIDTH / 2), (HU_DISP_HEIGHT * 155) / 480, 240.0f } }; + Vec spC = { (HU_DISP_WIDTH / 2), (HU_DISP_HEIGHT * 176) / 480, 240.0f }; Vec *var_r29; float var_f31; s16 var_r27; @@ -755,7 +783,8 @@ static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1) { if (arg1 != 0) { var_r29 = &spC; var_f31 = -20.0f * arg0->unk00_field3; - } else { + } + else { switch (numDice) { case 1: var_r29 = &sp18; @@ -772,9 +801,11 @@ static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1) { for (i = 0; i < 2; i++) { if (var_r27 == 0) { sp54[i].x = var_r29->x; - } else if (i != 0) { + } + else if (i != 0) { sp54[i].x = var_r29->x - 30.0f; - } else { + } + else { sp54[i].x = var_r29->x + 30.0f; } sp54[i].y = var_r29->y; @@ -783,22 +814,24 @@ static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1) { for (i = 0; i < 2; i++) { BoardModelPosGet(arg0->unk04[i], &sp30); Hu3D2Dto3D(&sp54[i], 1, &sp54[i]); - PSVECSubtract(&sp54[i], &sp30, &sp24); - if (PSVECMag(&sp24) < 0.01f) { + VECSubtract(&sp54[i], &sp30, &sp24); + if (VECMag(&sp24) < 0.01f) { arg0->unk00_field2 = 0; if (arg1 != 0 && arg0->unk00_field3 != 0) { BoardModelVisibilitySet(arg0->unk04[i], 0); } - } else { + } + else { arg0->unk00_field2 = 1; } - PSVECScale(&sp24, &sp24, arg0->unk08); - PSVECAdd(&sp30, &sp24, &sp30); + VECScale(&sp24, &sp24, arg0->unk08); + VECAdd(&sp30, &sp24, &sp30); BoardModelPosSetV(arg0->unk04[i], &sp30); } } -static void DiceDigitRotate(DiceDigitWork *arg0, s32 arg1) { +static void DiceDigitRotate(DiceDigitWork *arg0, s32 arg1) +{ float var_f30; s32 i; @@ -807,7 +840,8 @@ static void DiceDigitRotate(DiceDigitWork *arg0, s32 arg1) { if (arg0->unk02 >= 360) { arg0->unk02 = 360; } - } else { + } + else { arg0->unk02 -= 0x12; if (arg0->unk02 <= 0) { arg0->unk02 = 0; @@ -821,7 +855,8 @@ static void DiceDigitRotate(DiceDigitWork *arg0, s32 arg1) { } } -static void SameRollExec(void) { +static void SameRollExec(void) +{ Vec sp8; float var_f31; s32 var_r28; @@ -837,7 +872,8 @@ static void SameRollExec(void) { case 2: if (diceValue[0] == 7) { var_r31 = 0x1E; - } else { + } + else { var_r31 = 0xA; } break; @@ -845,9 +881,11 @@ static void SameRollExec(void) { if (diceValue[0] == 7) { var_r31 = 0x32; var_r28 = 0x118; - } else if (diceValue[0] & 1) { + } + else if (diceValue[0] & 1) { var_r31 = 0x1E; - } else { + } + else { var_r31 = 0xA; } break; @@ -859,7 +897,8 @@ static void SameRollExec(void) { if (BoardPlayerSizeGet(rollPlayer) == 2 || GWPlayer[rollPlayer].bowser_suit != 0) { sp8.y += 700.0f; var_f31 = 450.0f; - } else { + } + else { sp8.y += 600.0f; var_f31 = 300.0f; } @@ -877,9 +916,11 @@ static void SameRollExec(void) { BoardWinKill(); if (var_r31 >= 0x32) { var_r29 = 1; - } else if (var_r31 >= 0x14) { + } + else if (var_r31 >= 0x14) { var_r29 = 3; - } else { + } + else { var_r29 = 6; } for (i = 0; i < var_r31; i++) { @@ -892,7 +933,8 @@ static void SameRollExec(void) { BoardPauseDisableSet(0); } -static s32 GetBtnRoll(s32 arg0) { +static s32 GetBtnRoll(s32 arg0) +{ s32 var_r31 = 0; s32 var_r29; @@ -916,7 +958,8 @@ static s32 GetBtnRoll(s32 arg0) { return var_r31; } -static s32 GetComBtnRoll(s32 arg0) { +static s32 GetComBtnRoll(s32 arg0) +{ if (BoardItemPrevGet() != -1 || BoardPlayerItemCount(arg0) == 0 || BoardMegaDoubleDiceCheck() || _CheckFlag(FLAG_ID_MAKE(1, 9))) { return 0x100; } @@ -926,7 +969,8 @@ static s32 GetComBtnRoll(s32 arg0) { return 0x100; } -void BoardRollTutorialSet(s16 *arg0) { +void BoardRollTutorialSet(s16 *arg0) +{ s32 i; for (i = 0; i < 3; i++) { diff --git a/src/game/board/shop.c b/src/game/board/shop.c index 52a018e5..47b332c3 100755 --- a/src/game/board/shop.c +++ b/src/game/board/shop.c @@ -4,6 +4,7 @@ #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" @@ -115,15 +116,15 @@ static s8 defaultItemTbl[5] = { }; static s32 hostMessTbl[] = { - 0x000F0004, - 0x000F0007, - 0x000F000A, - 0x000F000D, - 0x000F0010, - 0x000F0013, - 0x000F0004, - 0x000F0024, - 0x000F0024 + 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[] = { @@ -134,15 +135,15 @@ static s8 itemPriceTbl[] = { }; static s32 shopMotTbl[9][3] = { - { 0x00020001, 0x00020003, 0x00020004 }, - { 0x00020009, 0x0002000B, 0x0002000C }, - { 0x0002000E, 0x00020010, 0x00020011 }, - { 0x00020018, 0x0002001A, 0x0002001B }, - { 0x0002001D, 0x0002001F, 0x00020020 }, - { 0x00020022, 0x00020024, 0x00020025 }, - { 0x00020009, 0x0002000B, 0x0002000C }, - { 0x0002002A, 0x0002002C, 0x0002002D }, - { 0x0002002A, 0x0002002C, 0x0002002D } + { 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) }, + { DATA_MAKE_NUM(DATADIR_BGUEST, 0x1D), DATA_MAKE_NUM(DATADIR_BGUEST, 0x1F), DATA_MAKE_NUM(DATADIR_BGUEST, 0x20) }, + { 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) } }; void BoardShopHostSet(s16 arg0) { @@ -234,13 +235,13 @@ static void ExecShop(void) { BoardPlayerIdleSet(shopPlayer); var_r30 = 0; if (BoardPlayerCoinsGet(shopPlayer) < 5) { - var_r30 = 0xF0003; + var_r30 = MAKE_MESSID(15, 3); } if (BoardPlayerItemCount(shopPlayer) == 3) { - var_r30 = 0xF0002; + var_r30 = MAKE_MESSID(15, 2); } if (GWSystem.turn == GWSystem.max_turn) { - var_r30 = 0xF0001; + var_r30 = MAKE_MESSID(15, 1); } if (var_r30 != 0) { BoardWinCreate(0, var_r30, -1); @@ -260,8 +261,8 @@ static void ExecShop(void) { temp_r25 = BoardSpaceLinkFlagSearch(0, temp_r28, 0x02000000); BoardSpacePosGet(0, temp_r28, &sp38); BoardSpacePosGet(0, temp_r25, &sp2C); - PSVECSubtract(&sp2C, &sp38, &sp20); - PSVECNormalize(&sp20, &sp20); + VECSubtract(&sp2C, &sp38, &sp20); + VECNormalize(&sp20, &sp20); temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -10.0f; sp14.y = temp_f31; @@ -273,7 +274,7 @@ static void ExecShop(void) { HuAudFXPlay(0x330); HuAudFXPlay(0x32D); PopupShop(); - BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[2], 0.0f, 4.0f, 0); + BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[2], 0.0f, 4.0f, HU3D_MOTATTR_NONE); HuPrcSleep(4); BoardPlayerRotSet(shopPlayer, 0.0f, temp_f31, 0.0f); BoardPlayerMoveBetween(shopPlayer, temp_r28, temp_r25); @@ -307,7 +308,7 @@ static void ExecShop(void) { BoardWinCreate(1, hostMessTbl[temp_r27] + 2, temp_r26); BoardWinPriSet(1000); for (i = 0; i < 5; i++) { - var_r30 = activeItemTbl[i] + 0xF0000; + var_r30 = MAKE_MESSID(15, activeItemTbl[i]); var_r30 += 0x16; BoardWinInsertMesSet(var_r30, i); var_r29 = itemPriceTbl[activeItemTbl[i]]; @@ -366,7 +367,7 @@ static void ExecShop(void) { if (activeItemTbl[itemCurChoice] != 0xD) { BoardPlayerItemAdd(shopPlayer, activeItemTbl[itemCurChoice]); } - BoardPlayerMotionShiftSet(shopPlayer, 0xC, 0.0f, 4.0f, 0); + BoardPlayerMotionShiftSet(shopPlayer, 0xC, 0.0f, 4.0f, HU3D_MOTATTR_NONE); HuPrcSleep(5); BoardPlayerMotionEndWait(shopPlayer); HuPrcSleep(15); @@ -375,7 +376,7 @@ static void ExecShop(void) { } BoardAudSeqFadeOut(1, 1000); BoardModelVisibilitySet(itemMdl, 0); - BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardStatusShowSet(shopPlayer, 0); BoardCameraTargetPlayerSet(shopPlayer); BoardCameraMotionWait(); @@ -472,12 +473,12 @@ static void CreateShopWin(void) { var_r30->unk01 = 0xC; var_r30->unk04 = 0; shopWinObj = var_r31; - var_r30->unk06 = HuWinCreate(36.0f, 344.0f, 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 = 392.0f; + 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); @@ -983,7 +984,12 @@ 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++) { + cursorPosTbl[i][0] = 190; + } + #endif temp_r30 = omAddObjEx(boardObjMan, 0x7E01, 0, 0, -1, UpdateShopItemChoice); itemChoiceObj = temp_r30; itemChoice = -1; @@ -995,15 +1001,33 @@ static void CreateShopItemChoice(s32 arg0, s32 arg1) { var_r31->unk02 = 0; var_r31->unk03 = arg1; var_r31->unk06 = HuSprGrpCreate(1); + #if VERSION_PAL + if (GWLanguageGet() != 0) { + s16 winId = BoardWinIDGet(); + if(winId != -1) { + WindowData *winP = &winData[winId]; + for(i=0; i<6; i++) { + cursorPosTbl[i][0] = winP->pos_x+96; + } + } 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 temp_r30->trans.x = cursorPosTbl[0][0]; temp_r30->trans.y = cursorPosTbl[0][1]; if (GWLanguageGet() != 0) { temp_r30->trans.x -= 24.0f; } + #endif if (GWPlayer[arg0].com) { var_r31->unk01 = GWMessDelayGet(); } - BoardSpriteCreate(0x70055, 0x3DE, NULL, &spC); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x55), 0x3DE, NULL, &spC); HuSprGrpMemberSet(var_r31->unk06, 0, spC); HuSprAttrSet(var_r31->unk06, 0, 8); HuSprPosSet(var_r31->unk06, 0, temp_r30->trans.x, temp_r30->trans.y); @@ -1031,9 +1055,11 @@ 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 (GWLanguageGet() != 0) { arg0->trans.x -= 24.0f; } + #endif if (GWPlayer[arg1->unk00_field1].com) { GetShopItemChoiceInput(arg1, arg0, &sp8); } else { @@ -1135,8 +1161,8 @@ void BoardShopTutorialExec(s32 arg0) { temp_r27 = BoardSpaceLinkFlagSearch(0, arg0, 0x02000000); BoardSpacePosGet(0, arg0, &sp48); BoardSpacePosGet(0, temp_r27, &sp3C); - PSVECSubtract(&sp3C, &sp48, &sp30); - PSVECNormalize(&sp30, &sp30); + VECSubtract(&sp3C, &sp48, &sp30); + VECNormalize(&sp30, &sp30); temp_f31 = atan2d(-sp30.x, -sp30.z); sp24.x = -10.0f; sp24.y = temp_f31; @@ -1148,14 +1174,14 @@ void BoardShopTutorialExec(s32 arg0) { HuAudFXPlay(0x330); HuAudFXPlay(0x32D); PopupShop(); - BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[2], 0.0f, 4.0f, 0); + BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[2], 0.0f, 4.0f, HU3D_MOTATTR_NONE); HuPrcSleep(4); while (!BoardModelMotionEndCheck(BoardShopHostGet())) { HuPrcVSleep(); } BoardModelMotionStart(BoardShopHostGet(), shopMot[0], 0x40000001); BoardTutorialHookExec(0x1C, 0); - BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(BoardShopHostGet(), shopMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(30); CloseShop(); for (i = 0; i < 2; i++) { diff --git a/src/game/board/space.c b/src/game/board/space.c index 7dbd86bb..d092af1e 100644 --- a/src/game/board/space.c +++ b/src/game/board/space.c @@ -1,39 +1,30 @@ -#include "game/gamework_data.h" -#include "game/flag.h" +#include "game/board/space.h" #include "game/board/battle.h" #include "game/board/lottery.h" #include "game/board/main.h" #include "game/board/model.h" #include "game/board/player.h" #include "game/board/shop.h" -#include "game/board/space.h" #include "game/board/star.h" #include "game/board/tutorial.h" -#include "game/hsfman.h" #include "game/data.h" -#include "game/sprite.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" #include "game/objsub.h" +#include "game/sprite.h" -#include "math.h" +#include "ext_math.h" #include "string.h" - static BoardSpace spaceData[2][256]; s16 boardSpaceStarTbl[8]; static GXTexObj spaceHiliteTex; static GXTexObj spaceTex; -static s8 spaceImgIdx[12] = { - 0, 1, 2, 7, - 6, 5, 3, 4, - 9, 10, 11, 0 -}; +static s8 spaceImgIdx[12] = { 0, 1, 2, 7, 6, 5, 3, 4, 9, 10, 11, 0 }; -static s8 spaceHiliteImgIdx[12] = { - -1, 0, 1, 1, - 2, 2, 2, 2, - -1, 3, -1, -1 -}; +static s8 spaceHiliteImgIdx[12] = { -1, 0, 1, 1, 2, 2, 2, 2, -1, 3, -1, -1 }; static s16 spaceCnt[2]; static u32 spaceAttr[2]; @@ -53,723 +44,737 @@ static s16 starPlatMdl = -1; static s32 ExecPipeSpace(s32 player, s32 space); - void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func) { - walkEventFunc = func; + walkEventFunc = func; } void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func) { - walkMiniEventFunc = func; + walkMiniEventFunc = func; } void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func) { - landEventFunc = func; + landEventFunc = func; } s32 BoardSpaceWalkEventExec(void) { - s32 ret = -1; - if(walkEventFunc) { - ret = walkEventFunc(); - } - return ret; + s32 ret = -1; + if (walkEventFunc) { + ret = walkEventFunc(); + } + return ret; } s32 BoardSpaceWalkMiniEventExec(void) { - s32 ret = -1; - if(walkMiniEventFunc) { - _SetFlag(FLAG_ID_MAKE(1, 8)); - ret = walkMiniEventFunc(); - _ClearFlag(FLAG_ID_MAKE(1, 8)); - } - return ret; + s32 ret = -1; + if (walkMiniEventFunc) { + _SetFlag(FLAG_ID_MAKE(1, 8)); + ret = walkMiniEventFunc(); + _ClearFlag(FLAG_ID_MAKE(1, 8)); + } + return ret; } s32 BoardSpaceCountGet(s32 layer) { - return spaceCnt[layer]; + return spaceCnt[layer]; } BoardSpace *BoardSpaceGet(s32 layer, s32 index) { - if(index <= 0 || index > spaceCnt[layer]) { - return NULL; - } else { - return &spaceData[layer][index-1]; - } + if (index <= 0 || index > spaceCnt[layer]) { + return NULL; + } + else { + return &spaceData[layer][index - 1]; + } } void BoardSpaceAttrSet(s32 layer, u32 attr) { - spaceAttr[layer] |= attr; + spaceAttr[layer] |= attr; } void BoardSpaceAttrReset(s32 layer, u32 attr) { - spaceAttr[layer] &= ~attr; + spaceAttr[layer] &= ~attr; } u32 BoardSpaceFlagGet(s32 layer, s32 index) { - if(index <= 0 || index > spaceCnt[layer]) { - return 0; - } else { - return spaceData[layer][index-1].flag; - } + if (index <= 0 || index > spaceCnt[layer]) { + return 0; + } + else { + return spaceData[layer][index - 1].flag; + } } s32 BoardSpaceTypeGet(s32 layer, s32 index) { - if(index <= 0 || index > spaceCnt[layer]) { - return 0; - } else { - return spaceData[layer][index-1].type; - } + if (index <= 0 || index > spaceCnt[layer]) { + return 0; + } + else { + return spaceData[layer][index - 1].type; + } } void BoardSpaceTypeSet(s32 layer, s32 index, s32 type) { - if(index <= 0 || index > spaceCnt[layer]) { - return; - } else { - spaceData[layer][index-1].type = type; - } + if (index <= 0 || index > spaceCnt[layer]) { + return; + } + else { + spaceData[layer][index - 1].type = type; + } } s32 BoardSpacePosGet(s32 layer, s32 index, Vec *pos) { - BoardSpace *space = BoardSpaceGet(layer, index); - if(!space) { - return -1; - } else { - *pos = space->pos; - return 0; - } + BoardSpace *space = BoardSpaceGet(layer, index); + if (!space) { + return -1; + } + else { + *pos = space->pos; + return 0; + } } void BoardSpaceCornerPosGet(s32 index, s32 corner, Vec *pos) { - Vec corner_ofs; - Vec rot; - s8 corner_pos[4][2] = {{-1, -1}, {1, -1}, {-1, 1}, {1, 1}}; - BoardSpaceRotGet(0, index, &rot); - BoardSpacePosGet(0, index, pos); - corner_ofs.x = corner_pos[corner][0]*80.0f; - corner_ofs.y = 0; - corner_ofs.z = corner_pos[corner][1]*80.0f; - corner_ofs.x = (cos((M_PI*rot.z)/180)*corner_ofs.x)+(sin((M_PI*rot.z)/180)*corner_ofs.y); - corner_ofs.y = (cos((M_PI*rot.x)/180)*cos((M_PI*rot.z)/180)*corner_ofs.y) - +(sin((M_PI*rot.z)/180)*corner_ofs.x) - +(sin((M_PI*-rot.x)/180)*corner_ofs.z); - corner_ofs.z = (sin((M_PI*rot.x)/180)*corner_ofs.y)+(cos((M_PI*rot.x)/180)*corner_ofs.z); - pos->x += corner_ofs.x; - pos->y += corner_ofs.y; - pos->z += corner_ofs.z; + Vec corner_ofs; + Vec rot; + s8 corner_pos[4][2] = { { -1, -1 }, { 1, -1 }, { -1, 1 }, { 1, 1 } }; + BoardSpaceRotGet(0, index, &rot); + BoardSpacePosGet(0, index, pos); + corner_ofs.x = corner_pos[corner][0] * 80.0f; + corner_ofs.y = 0; + corner_ofs.z = corner_pos[corner][1] * 80.0f; + corner_ofs.x = (cosd(rot.z) * corner_ofs.x) + (sind(rot.z) * corner_ofs.y); + corner_ofs.y = (cosd(rot.x) * cosd(rot.z) * corner_ofs.y) + (sind(rot.z) * corner_ofs.x) + + (sind(-rot.x) * corner_ofs.z); + corner_ofs.z = (sind(rot.x) * corner_ofs.y) + (cosd(rot.x) * corner_ofs.z); + pos->x += corner_ofs.x; + pos->y += corner_ofs.y; + pos->z += corner_ofs.z; } s32 BoardSpaceRotGet(s32 layer, s32 index, Vec *rot) { - BoardSpace *space = BoardSpaceGet(layer, index); - if(!space) { - return -1; - } else { - *rot = space->rot; - return 0; - } + BoardSpace *space = BoardSpaceGet(layer, index); + if (!space) { + return -1; + } + else { + *rot = space->rot; + return 0; + } } s32 BoardSpaceFlagSearch(s32 layer, u32 flag) { - s32 i; - for(i=0; iflag & flag) == flag) { - return space-(&spaceData[layer][0])+1; - } - } - return -1; + s32 i; + for (i = 0; i < spaceCnt[layer]; i++) { + BoardSpace *space = &spaceData[layer][i]; + if ((space->flag & flag) == flag) { + return space - (&spaceData[layer][0]) + 1; + } + } + return -1; } s32 BoardSpaceFlagPosGet(s32 layer, u32 flag, Vec *pos) { - s32 space = BoardSpaceFlagSearch(layer, flag); - if(space == -1) { - return -1; - } - if(pos) { - BoardSpacePosGet(layer, space, pos); - } - return space; + s32 space = BoardSpaceFlagSearch(layer, flag); + if (space == -1) { + return -1; + } + if (pos) { + BoardSpacePosGet(layer, space, pos); + } + return space; } s32 BoardSpaceLinkFlagSearch(s32 layer, s32 index, u32 flag) { - BoardSpace *link_space; - BoardSpace *space = BoardSpaceGet(layer, index); - s32 i; - if(!space) { - return -1; - } - for(i=0; ilink_cnt; i++) { - link_space = BoardSpaceGet(layer, space->link[i]); - if(link_space->flag & flag) { - return link_space-&spaceData[layer][0]+1; - } - } - return -1; + BoardSpace *link_space; + BoardSpace *space = BoardSpaceGet(layer, index); + s32 i; + if (!space) { + return -1; + } + for (i = 0; i < space->link_cnt; i++) { + link_space = BoardSpaceGet(layer, space->link[i]); + if (link_space->flag & flag) { + return link_space - &spaceData[layer][0] + 1; + } + } + return -1; } s32 BoardSpaceLinkTypeListGet(s32 layer, s32 index, s32 type, s16 *list) { - s32 count; - BoardSpace *space = BoardSpaceGet(layer, index); - s32 i; - if(!space) { - return -1; - } - for(count=i=0; ilink_cnt; i++) { - BoardSpace *link_space = BoardSpaceGet(layer, space->link[i]); - if(link_space->type == type && count < BOARD_SPACE_LINKMAX) { - list[count] = link_space-&spaceData[layer][0]+1; - count++; - } - } - return count; + s32 count; + BoardSpace *space = BoardSpaceGet(layer, index); + s32 i; + if (!space) { + return -1; + } + for (count = i = 0; i < space->link_cnt; i++) { + BoardSpace *link_space = BoardSpaceGet(layer, space->link[i]); + if (link_space->type == type && count < BOARD_SPACE_LINKMAX) { + list[count] = link_space - &spaceData[layer][0] + 1; + count++; + } + } + return count; } s32 BoardSpaceLinkTargetListGet(s32 layer, s32 target, s16 *list) { - s32 i, j; - s32 count; - BoardSpace *space; - memset(list, 0, BOARD_SPACE_LINKMAX*sizeof(s16)); - space = &spaceData[layer][0]; - for(count=i=0; ilink_cnt; j++) { - if(space->link[j] == target && count < BOARD_SPACE_LINKMAX) { - list[count++] = space-&spaceData[layer][0]+1; - } - } - } - return count; + s32 i, j; + s32 count; + BoardSpace *space; + memset(list, 0, BOARD_SPACE_LINKMAX * sizeof(s16)); + space = &spaceData[layer][0]; + for (count = i = 0; i < spaceCnt[layer]; i++, space++) { + for (j = 0; j < space->link_cnt; j++) { + if (space->link[j] == target && count < BOARD_SPACE_LINKMAX) { + list[count++] = space - &spaceData[layer][0] + 1; + } + } + } + return count; } s32 BoardSpaceLinkTypeSearch(s32 layer, s32 target, u16 type) { - s32 i; - BoardSpace *space = BoardSpaceGet(layer, target); - if(!space) { - return -1; - } - for(i=0; ilink_cnt; i++) { - BoardSpace *link_space = BoardSpaceGet(layer, space->link[i]); - if(link_space->type == type) { - return space->link[i]; - } - } - return -1; + s32 i; + BoardSpace *space = BoardSpaceGet(layer, target); + if (!space) { + return -1; + } + for (i = 0; i < space->link_cnt; i++) { + BoardSpace *link_space = BoardSpaceGet(layer, space->link[i]); + if (link_space->type == type) { + return space->link[i]; + } + } + return -1; } s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale) { - s32 i; - s32 space_flag = BoardSpaceFlagSearch(0, flag); - BoardSpace *space = BoardSpaceGet(0, space_flag); - - for(i=0; ilink_cnt; i++) { - BoardSpace *link_space = BoardSpaceGet(0, space->link[i]); - BoardSpace *src_space; - if(!(link_space->flag & 0x2000000)) { - continue; - } - src_space = BoardSpaceGet(0, link_space->link[0]); - if(pos) { - *pos = src_space->pos; - } - if(rot) { - *rot = src_space->rot; - } - if(scale) { - *scale = src_space->scale; - } - return 0; - } - return -1; + s32 i; + s32 space_flag = BoardSpaceFlagSearch(0, flag); + BoardSpace *space = BoardSpaceGet(0, space_flag); + + for (i = 0; i < space->link_cnt; i++) { + BoardSpace *link_space = BoardSpaceGet(0, space->link[i]); + BoardSpace *src_space; + if (!(link_space->flag & 0x2000000)) { + continue; + } + src_space = BoardSpaceGet(0, link_space->link[0]); + if (pos) { + *pos = src_space->pos; + } + if (rot) { + *rot = src_space->rot; + } + if (scale) { + *scale = src_space->scale; + } + return 0; + } + return -1; } void BoardSpaceHostSet(s32 space) { - s16 host_space; - Vec pos; - BoardSpace *space_plat; - BoardSpaceTypeSet(0, space, 8); - host_space = BoardSpaceLinkFlagSearch(0, space, 0x04000000); - BoardSpacePosGet(0, host_space, &pos); - BoardModelPosSetV(BoardStarHostMdlGet(), &pos); + s16 host_space; + Vec pos; + BoardSpace *space_plat; + BoardSpaceTypeSet(0, space, 8); + host_space = BoardSpaceLinkFlagSearch(0, space, 0x04000000); + BoardSpacePosGet(0, host_space, &pos); + BoardModelPosSetV(BoardStarHostMdlGet(), &pos); } static inline s16 StarPlatGetMdl(void) { - return starPlatMdl; + return starPlatMdl; } static inline s32 BoardStarSpaceTypeGet(s16 index) { - return BoardSpaceTypeGet(0, BoardSpaceStarGet(index)); + return BoardSpaceTypeGet(0, BoardSpaceStarGet(index)); } void BoardSpaceStarSetIndex(s32 index) { - Vec pos; - Vec rot; - s16 space; - if(_CheckFlag(FLAG_ID_MAKE(1, 1))) { - BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 1); - } - GWSystem.star_pos = index & 0x7; - BoardSpaceHostSet(BoardSpaceStarGetCurr()); - space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); - BoardSpacePosGet(0, space, &pos); - BoardModelPosSetV(StarPlatGetMdl(), &pos); - BoardSpaceRotGet(0, space, &rot); - BoardModelRotYSet(StarPlatGetMdl(), rot.y); - BoardModelVisibilitySet(StarPlatGetMdl(), 1); + Vec pos; + Vec rot; + s16 space; + if (_CheckFlag(FLAG_ID_MAKE(1, 1))) { + BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 1); + } + GWSystem.star_pos = index & 0x7; + BoardSpaceHostSet(BoardSpaceStarGetCurr()); + space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); + BoardSpacePosGet(0, space, &pos); + BoardModelPosSetV(StarPlatGetMdl(), &pos); + BoardSpaceRotGet(0, space, &rot); + BoardModelRotYSet(StarPlatGetMdl(), rot.y); + BoardModelVisibilitySet(StarPlatGetMdl(), 1); } s32 BoardSpaceStarGetNext(void) { - s16 random_pos; - s16 star_total; - s16 star_pos; - star_total = GWSystem.star_total; - star_pos = GWSystem.star_pos; - if(GWBoardGet() == BOARD_ID_MAIN6) { - s16 i; - s32 count; - s32 last_free; - last_free = -1; - for(count=i=0; i<8; i++) { - if((1 << i) & GWSystem.star_flag) { - count++; - } else { - last_free = i; - } - } - if(count == 7) { - if(BoardSpaceTypeGet(0, BoardSpaceStarGet(last_free)) == 10) { - GWSystem.star_flag = 0; - } - } - } - begin: - random_pos = BoardRandMod(8); - if(star_pos == random_pos || BoardStarSpaceTypeGet(random_pos) == 10) { - goto begin; - } - switch(GWSystem.board) { - case BOARD_ID_MAIN1: - if(star_total >= 2) { - break; - } - if(random_pos != 6 && random_pos != 7) { - break; - } - goto begin; - - case BOARD_ID_MAIN2: - if(star_total >= 2) { - break; - } - if(random_pos != 6 && random_pos != 7) { - break; - } - goto begin; - - case BOARD_ID_MAIN3: - if(star_total == 1) { - if(random_pos < 3 || random_pos > 5) { - break; - } - goto begin; - } else { - if(star_total != 2) { - break; - } - if(random_pos != 3 && random_pos != 4) { - break; - } - goto begin; - } - - case BOARD_ID_MAIN4: - if(star_total == 1) { - if(random_pos < 5 || random_pos > 7) { - break; - } - goto begin; - } else { - if(star_total != 2) { - break; - } - if(random_pos == 5) { - goto begin; - } - break; - } - - case BOARD_ID_MAIN5: - if(star_total == 1) { - if(random_pos <= 1 || random_pos >= 4) { - goto begin; - } - } - break; - - case BOARD_ID_MAIN6: - if(star_total == 1) { - if(random_pos == 1 || random_pos == 4 || random_pos == 5) { - goto begin; - } - } - if(star_total != 2) { - break; - } - if(random_pos == 5) { - goto begin; - } - } - if((1 << random_pos) & GWSystem.star_flag) { - goto begin; - } - return random_pos; + s16 random_pos; + s16 star_total; + s16 star_pos; + star_total = GWSystem.star_total; + star_pos = GWSystem.star_pos; + if (GWBoardGet() == BOARD_ID_MAIN6) { + s16 i; + s32 count; + s32 last_free; + last_free = -1; + for (count = i = 0; i < 8; i++) { + if ((1 << i) & GWSystem.star_flag) { + count++; + } + else { + last_free = i; + } + } + if (count == 7) { + if (BoardSpaceTypeGet(0, BoardSpaceStarGet(last_free)) == 10) { + GWSystem.star_flag = 0; + } + } + } +begin: + random_pos = BoardRandMod(8); + if (star_pos == random_pos || BoardStarSpaceTypeGet(random_pos) == 10) { + goto begin; + } + switch (GWSystem.board) { + case BOARD_ID_MAIN1: + if (star_total >= 2) { + break; + } + if (random_pos != 6 && random_pos != 7) { + break; + } + goto begin; + + case BOARD_ID_MAIN2: + if (star_total >= 2) { + break; + } + if (random_pos != 6 && random_pos != 7) { + break; + } + goto begin; + + case BOARD_ID_MAIN3: + if (star_total == 1) { + if (random_pos < 3 || random_pos > 5) { + break; + } + goto begin; + } + else { + if (star_total != 2) { + break; + } + if (random_pos != 3 && random_pos != 4) { + break; + } + goto begin; + } + + case BOARD_ID_MAIN4: + if (star_total == 1) { + if (random_pos < 5 || random_pos > 7) { + break; + } + goto begin; + } + else { + if (star_total != 2) { + break; + } + if (random_pos == 5) { + goto begin; + } + break; + } + + case BOARD_ID_MAIN5: + if (star_total == 1) { + if (random_pos <= 1 || random_pos >= 4) { + goto begin; + } + } + break; + + case BOARD_ID_MAIN6: + if (star_total == 1) { + if (random_pos == 1 || random_pos == 4 || random_pos == 5) { + goto begin; + } + } + if (star_total != 2) { + break; + } + if (random_pos == 5) { + goto begin; + } + } + if ((1 << random_pos) & GWSystem.star_flag) { + goto begin; + } + return random_pos; } s32 BoardSpaceStarGetRandom(s32 excl_pos) { - s8 new_pos; - int i; - for(i=0; i<1024; i++) { - new_pos = BoardRandMod(8); - if(new_pos == GWSystem.star_pos) { - continue; - } - if(GWSystem.turn == 1 && new_pos <= 2) { - continue; - } - if(new_pos != excl_pos) { - break; - } - } - return new_pos; + s8 new_pos; + int i; + for (i = 0; i < 1024; i++) { + new_pos = BoardRandMod(8); + if (new_pos == GWSystem.star_pos) { + continue; + } + if (GWSystem.turn == 1 && new_pos <= 2) { + continue; + } + if (new_pos != excl_pos) { + break; + } + } + return new_pos; } void BoardSpaceStarMove(void) { - u8 star_total; - s16 star_pos; - s16 star_next; - if(_CheckFlag(FLAG_ID_MAKE(1, 1))) { - star_pos = GWSystem.star_pos; - GWSystem.star_flag |= (u8)(1 << star_pos); - if(GWSystem.star_flag == 0xFF) { - GWSystem.star_flag = 0; - } - if(GWSystem.star_total >= 99) { - star_total = 99; - GWSystem.star_total = star_total; - } else { - star_total = GWSystem.star_total++; - } - } - star_next = BoardSpaceStarGetNext(); - BoardSpaceStarSetIndex(star_next); + u8 star_total; + s16 star_pos; + s16 star_next; + if (_CheckFlag(FLAG_ID_MAKE(1, 1))) { + star_pos = GWSystem.star_pos; + GWSystem.star_flag |= (u8)(1 << star_pos); + if (GWSystem.star_flag == 0xFF) { + GWSystem.star_flag = 0; + } + if (GWSystem.star_total >= 99) { + star_total = 99; + GWSystem.star_total = star_total; + } + else { + star_total = GWSystem.star_total++; + } + } + star_next = BoardSpaceStarGetNext(); + BoardSpaceStarSetIndex(star_next); } s32 BoardSpaceStarGet(s32 index) { - return boardSpaceStarTbl[index & 0x7]; + return boardSpaceStarTbl[index & 0x7]; } s32 BoardSpaceStarGetCurr(void) { - return BoardSpaceStarGet(GWSystem.star_pos); + return BoardSpaceStarGet(GWSystem.star_pos); } s32 BoardSpaceStarCheck(s32 index) { - s32 ret; - BoardSpace *space = BoardSpaceGet(0, index); - BoardSpace *star_space; - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - ret = 0; - goto end; - } - star_space = BoardSpaceGet(0, boardSpaceStarTbl[GWSystem.star_pos]); - if(space == star_space) { - ret = 1; - } else { - ret = 0; - } - end: - return ret; + s32 ret; + BoardSpace *space = BoardSpaceGet(0, index); + BoardSpace *star_space; + if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + ret = 0; + goto end; + } + star_space = BoardSpaceGet(0, boardSpaceStarTbl[GWSystem.star_pos]); + if (space == star_space) { + ret = 1; + } + else { + ret = 0; + } +end: + return ret; } void BoardSpaceLandExec(s32 player, s32 space) { - #define BLUE_SPACE 1 - #define RED_SPACE 2 - #define BOWSER_SPACE 3 - #define MUSHROOM_SPACE 4 - #define BATTLE_SPACE 5 - #define HAPPENING_SPACE 6 - #define FORTUNE_SPACE 7 - #define STAR_SPACE 8 - #define WARP_SPACE 9 +#define BLUE_SPACE 1 +#define RED_SPACE 2 +#define BOWSER_SPACE 3 +#define MUSHROOM_SPACE 4 +#define BATTLE_SPACE 5 +#define HAPPENING_SPACE 6 +#define FORTUNE_SPACE 7 +#define STAR_SPACE 8 +#define WARP_SPACE 9 - BoardSpace *space_ptr = BoardSpaceGet(0, space); - switch(space_ptr->type) { - case BLUE_SPACE: - GWPlayer[player].blue_count++; - if(GWPlayer[player].blue_count > 99) { - GWPlayer[player].blue_count = 99; - } - BoardLandBlueExec(player, space); - break; - - case RED_SPACE: - GWPlayer[player].red_count++; - if(GWPlayer[player].red_count > 99) { - GWPlayer[player].red_count = 99; - } - BoardLandRedExec(player, space); - break; - - case BOWSER_SPACE: - GWPlayer[player].bowser_count++; - if(GWPlayer[player].bowser_count > 99) { - GWPlayer[player].bowser_count = 99; - } - BoardBowserExec(player, space); - break; - - case MUSHROOM_SPACE: - GWPlayer[player].mushroom_count++; - if(GWPlayer[player].mushroom_count > 99) { - GWPlayer[player].mushroom_count = 99; - } - BoardMushroomExec(player, space); - break; - - case BATTLE_SPACE: - GWPlayer[player].battle_count++; - if(GWPlayer[player].battle_count > 99) { - GWPlayer[player].battle_count = 99; - } - BoardBattleExec(player, space); - break; - - case HAPPENING_SPACE: - GWPlayer[player].question_count++; - if(GWPlayer[player].question_count > 99) { - GWPlayer[player].question_count = 99; - } - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - HuAudFXPlay(842); - BoardCameraViewSet(2); - BoardPlayerMotBlendSet(player, 0, 15); - while(!BoardPlayerMotBlendCheck(player)) { - HuPrcVSleep(); - } - BoardCameraMotionWait(); - BoardTutorialHookExec(16, 0); - } else { - if(landEventFunc) { - HuAudFXPlay(842); - omVibrate(player, 12, 4, 2); - landEventFunc(); - } - } - GWPlayer[player].color = 3; - break; - - case FORTUNE_SPACE: - GWPlayer[player].fortune_count++; - if(GWPlayer[player].fortune_count > 99) { - GWPlayer[player].fortune_count = 99; - } - BoardFortuneExec(player, space); - break; - - case WARP_SPACE: - GWPlayer[player].warp_count++; - if(GWPlayer[player].warp_count > 99) { - GWPlayer[player].warp_count = 99; - } - BoardWarpExec(player, space); - break; - - case STAR_SPACE: - BoardStarExec(player, space); - break; - } + BoardSpace *space_ptr = BoardSpaceGet(0, space); + switch (space_ptr->type) { + case BLUE_SPACE: + GWPlayer[player].blue_count++; + if (GWPlayer[player].blue_count > 99) { + GWPlayer[player].blue_count = 99; + } + BoardLandBlueExec(player, space); + break; + + case RED_SPACE: + GWPlayer[player].red_count++; + if (GWPlayer[player].red_count > 99) { + GWPlayer[player].red_count = 99; + } + BoardLandRedExec(player, space); + break; + + case BOWSER_SPACE: + GWPlayer[player].bowser_count++; + if (GWPlayer[player].bowser_count > 99) { + GWPlayer[player].bowser_count = 99; + } + BoardBowserExec(player, space); + break; + + case MUSHROOM_SPACE: + GWPlayer[player].mushroom_count++; + if (GWPlayer[player].mushroom_count > 99) { + GWPlayer[player].mushroom_count = 99; + } + BoardMushroomExec(player, space); + break; + + case BATTLE_SPACE: + GWPlayer[player].battle_count++; + if (GWPlayer[player].battle_count > 99) { + GWPlayer[player].battle_count = 99; + } + BoardBattleExec(player, space); + break; + + case HAPPENING_SPACE: + GWPlayer[player].question_count++; + if (GWPlayer[player].question_count > 99) { + GWPlayer[player].question_count = 99; + } + if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { + HuAudFXPlay(842); + BoardCameraViewSet(2); + BoardPlayerMotBlendSet(player, 0, 15); + while (!BoardPlayerMotBlendCheck(player)) { + HuPrcVSleep(); + } + BoardCameraMotionWait(); + BoardTutorialHookExec(16, 0); + } + else { + if (landEventFunc) { + HuAudFXPlay(842); + omVibrate(player, 12, 4, 2); + landEventFunc(); + } + } + GWPlayer[player].color = 3; + break; + + case FORTUNE_SPACE: + GWPlayer[player].fortune_count++; + if (GWPlayer[player].fortune_count > 99) { + GWPlayer[player].fortune_count = 99; + } + BoardFortuneExec(player, space); + break; + + case WARP_SPACE: + GWPlayer[player].warp_count++; + if (GWPlayer[player].warp_count > 99) { + GWPlayer[player].warp_count = 99; + } + BoardWarpExec(player, space); + break; + + case STAR_SPACE: + BoardStarExec(player, space); + break; + } } s32 BoardSpaceWalkExec(s32 player, s32 space) { - s32 is_star; - BoardSpace *space_ptr; - BoardSpace *star_space; - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - space_ptr = BoardSpaceGet(0, space); - if(space_ptr->flag & 0x180000) { - BoardTutorialHookExec(25, 0); - } - } - if(BoardPlayerSizeGet(player) == 2 || GWPlayer[player].bowser_suit) { - return 0; - } - space_ptr = BoardSpaceGet(0, space); - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - is_star = 0; - } else { - star_space = BoardSpaceGet(0, boardSpaceStarTbl[GWSystem.star_pos]); - if(space_ptr == star_space) { - is_star = 1; - } else { - is_star = 0; - } - } - if(is_star) { - BoardStarExec(player, space); - return 1; - } - if(space_ptr->flag & 0x600000) { - s32 mg_param = GWSystem.unk_38; - if(BoardPlayerSizeGet(player) == 1) { - BoardPlayerIdleSet(player); - BoardMGCreate(mg_param); - } - return 1; - } - if(space_ptr->flag & 0x180000) { - BoardShopExec(player, space); - return 1; - } - if(space_ptr->flag & 0x08000000) { - BoardBooHouseExec(player, space); - return 1; - } - if(space_ptr->flag & 0x10000000) { - BoardLotteryExec(); - return 1; - } - if(space_ptr->flag & 0x20000000) { - ExecPipeSpace(player, space); - return 1; - } - return 0; + s32 is_star; + BoardSpace *space_ptr; + BoardSpace *star_space; + if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { + space_ptr = BoardSpaceGet(0, space); + if (space_ptr->flag & 0x180000) { + BoardTutorialHookExec(25, 0); + } + } + if (BoardPlayerSizeGet(player) == 2 || GWPlayer[player].bowser_suit) { + return 0; + } + space_ptr = BoardSpaceGet(0, space); + if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + is_star = 0; + } + else { + star_space = BoardSpaceGet(0, boardSpaceStarTbl[GWSystem.star_pos]); + if (space_ptr == star_space) { + is_star = 1; + } + else { + is_star = 0; + } + } + if (is_star) { + BoardStarExec(player, space); + return 1; + } + if (space_ptr->flag & 0x600000) { + s32 mg_param = GWSystem.unk_38; + if (BoardPlayerSizeGet(player) == 1) { + BoardPlayerIdleSet(player); + BoardMGCreate(mg_param); + } + return 1; + } + if (space_ptr->flag & 0x180000) { + BoardShopExec(player, space); + return 1; + } + if (space_ptr->flag & 0x08000000) { + BoardBooHouseExec(player, space); + return 1; + } + if (space_ptr->flag & 0x10000000) { + BoardLotteryExec(); + return 1; + } + if (space_ptr->flag & 0x20000000) { + ExecPipeSpace(player, space); + return 1; + } + return 0; } s32 BoardSpaceBlockExec(s32 player, s32 space) { - s32 event_exec; - BoardSpace *space_ptr; - event_exec = 0; - if(BoardPlayerSizeGet(player) == 2 || GWPlayer[player].bowser_suit) { - return 0; - } - space_ptr = BoardSpaceGet(0, space); - event_exec = 0; - if(space == GWSystem.block_pos) { - event_exec = 1; - } - if(!GWBonusStarGet() && GWPartyGet() == 1 && !_CheckFlag(FLAG_ID_MAKE(1, 11))) { - event_exec = 0; - } - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - event_exec = 0; - } - if(event_exec) { - BoardBlockExec(player, space); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardBlockExec(player, space); - } - BoardSpaceBlockPosSet(); - } - return 0; + s32 event_exec; + BoardSpace *space_ptr; + event_exec = 0; + if (BoardPlayerSizeGet(player) == 2 || GWPlayer[player].bowser_suit) { + return 0; + } + space_ptr = BoardSpaceGet(0, space); + event_exec = 0; + if (space == GWSystem.block_pos) { + event_exec = 1; + } + if (!GWBonusStarGet() && GWPartyGet() == 1 && !_CheckFlag(FLAG_ID_MAKE(1, 11))) { + event_exec = 0; + } + if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + event_exec = 0; + } + if (event_exec) { + BoardBlockExec(player, space); + if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardBlockExec(player, space); + } + BoardSpaceBlockPosSet(); + } + return 0; } static s32 ExecPipeSpace(s32 player, s32 space) { - Vec pos_link; - Vec pos; - Vec dir; - float radius, y_vel; - s32 mot_disable; - BoardSpace *space_ptr; - mot_disable = 0; - if(BoardPlayerSizeGet(player) != 1) { - return 0; - } - BoardPlayerPosGet(player, &pos); - pos.y += 200.0f; - space_ptr = BoardSpaceGet(0, space); - BoardSpacePosGet(0, space_ptr->link[0], &pos_link); - VECSubtract(&pos_link, &pos, &dir); - VECNormalize(&dir, &dir); - BoardPlayerRotYSet(player, 90-((atan2(dir.z, dir.x)/M_PI)*180)); - radius = 0.75f*BoardVecDistXZCalc(&pos_link, &pos); - BoardPlayerMotionStart(player, 4, 0); - y_vel = 0; - while(1) { - if(BoardVecDistXZCalc(&pos_link, &pos) < 2) { - break; - } - pos.x += (dir.x*radius)/60.0f; - pos.z += (dir.z*radius)/60.0f; - if(pos.y <= pos_link.y) { - pos.y = pos_link.y; - if(!mot_disable) { - BoardPlayerMotionShiftSet(player, 3, 0, 4, 0x40000001); - break; - } - } else { - pos.y += 10.0f+(-((1/2399.99f)+(1/50.0f))*y_vel*y_vel); - y_vel += 1.0f; - } - BoardPlayerPosSetV(player, &pos); - HuPrcVSleep(); - } - return 0; + Vec pos_link; + Vec pos; + Vec dir; + float radius, y_vel; + s32 mot_disable; + BoardSpace *space_ptr; + mot_disable = 0; + if (BoardPlayerSizeGet(player) != 1) { + return 0; + } + BoardPlayerPosGet(player, &pos); + pos.y += 200.0f; + space_ptr = BoardSpaceGet(0, space); + BoardSpacePosGet(0, space_ptr->link[0], &pos_link); + VECSubtract(&pos_link, &pos, &dir); + VECNormalize(&dir, &dir); + BoardPlayerRotYSet(player, 90 - atan2d(dir.z, dir.x)); + radius = 0.75f * BoardVecDistXZCalc(&pos_link, &pos); + BoardPlayerMotionStart(player, 4, 0); + y_vel = 0; + while (1) { + if (BoardVecDistXZCalc(&pos_link, &pos) < 2) { + break; + } + pos.x += (dir.x * radius) / 60.0f; + pos.z += (dir.z * radius) / 60.0f; + if (pos.y <= pos_link.y) { + pos.y = pos_link.y; + if (!mot_disable) { + BoardPlayerMotionShiftSet(player, 3, 0, 4, HU3D_MOTATTR_LOOP); + break; + } + } + else { + pos.y += 10.0f + (-((1 / 2399.99f) + (1 / 50.0f)) * y_vel * y_vel); + y_vel += 1.0f; + } + BoardPlayerPosSetV(player, &pos); + HuPrcVSleep(); + } + return 0; } void BoardSpaceTypeForce(u16 from, u16 to) { - s32 i; - for(i=0; itype == from) { - space->type = to; - } - } + s32 i; + for (i = 0; i < spaceCnt[0]; i++) { + BoardSpace *space = &spaceData[0][i]; + if (space->type == from) { + space->type = to; + } + } } void BoardSpaceHide(s32 value) { - if(value) { - Hu3DModelAttrSet(spaceDrawMdl, 1); - } else { - Hu3DModelAttrReset(spaceDrawMdl, 1); - } + if (value) { + Hu3DModelAttrSet(spaceDrawMdl, HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(spaceDrawMdl, HU3D_ATTR_DISPOFF); + } } static inline void InitGXSpace() { - GXColor color = {0xFF, 0xFF, 0xFF, 0xFF}; + GXColor color = { 0xFF, 0xFF, 0xFF, 0xFF }; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); @@ -793,319 +798,317 @@ static inline void InitGXSpace() GXSetCullMode(GX_CULL_BACK); } -//Some stack allocation issues. code around BoardPlayerGetCurr is incorrect too +// Some stack allocation issues. code around BoardPlayerGetCurr is incorrect too static void DrawSpaces(ModelData *model, Mtx matrix) { - s32 i; + s32 i; - Vec player_pos; - Vec target; - Vec pos; - - Mtx lookat, final, rot_x, rot_y, rot_z, scale; - Mtx44 proj; - BoardCameraData *camera; - if(!spaceDrawF) { - return; - } - spaceDrawCnt = 0; - camera = &boardCamera; - BoardCameraPosGet(&pos); - BoardCameraTargetGet(&target); - MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); - GXSetProjection(proj, GX_PERSPECTIVE); - MTXLookAt(lookat, &pos, &camera->up, &target); - GXSetViewport(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); - GXSetScissor(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h); - { - BoardSpace *space_curr; - BoardSpace *space_hilite; - PlayerState *player; - s16 player_mdl; - float y_dist; - s32 space_img; - u16 space_type; - float uv_x, uv_y, uv_size; - InitGXSpace(); - - player = BoardPlayerGet(GWSystem.player_curr); - BoardPlayerPosGet(GWSystem.player_curr, &player_pos); - player_mdl = BoardModelIDGet(BoardPlayerModelGet(GWSystem.player_curr)); - space_curr = &spaceData[0][0]; - space_hilite = NULL; - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - for(i=0; itype == 0) { - continue; - } - if(!BoardCameraCullCheck(&space_curr->pos, 200.0f) || (space_curr->flag & spaceAttr[0])) { - continue; - } - if(!space_hilite) { - if(player_pos.x > space_curr->pos.x-100.0f - && player_pos.z > space_curr->pos.z-100.0f - && player_pos.x < space_curr->pos.x+100.0f - && player_pos.z < space_curr->pos.z+100.0f) { - if(player_pos.y-space_curr->pos.y < 0.0f) { - y_dist = -(player_pos.y-space_curr->pos.y); - } else { - y_dist = player_pos.y-space_curr->pos.y; - } - if(y_dist < 10.0f) { - space_hilite = space_curr; - } - } - } - space_type = space_curr->type; - space_img = spaceImgIdx[space_type]-1; - uv_x = (float)(space_img%4)/4.0f; - uv_y = (float)(space_img/4)/4.0f; - uv_size = 63.0f/256.0f; - MTXRotRad(rot_z, 'z', MTXDegToRad(space_curr->rot.y)); - MTXRotRad(rot_y, 'y', MTXDegToRad(space_curr->rot.z)); - MTXRotRad(rot_x, 'x', MTXDegToRad(space_curr->rot.x+90.0f)); - MTXTrans(final, space_curr->pos.x, 3.0f+space_curr->pos.y, space_curr->pos.z); - MTXConcat(rot_x, rot_y, rot_y); - MTXConcat(rot_y, rot_z, rot_z); - MTXConcat(final, rot_z, final); - MTXConcat(lookat, final, final); - GXLoadPosMtxImm(final, GX_PNMTX0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-100, -100, 0); - GXTexCoord2f32(uv_x, uv_y); - GXPosition3f32(100, -100, 0); - GXTexCoord2f32(uv_x+uv_size, uv_y); - GXPosition3f32(100, 100, 0); - GXTexCoord2f32(uv_x+uv_size, uv_y+uv_size+(1.5f/256.0f)); - GXPosition3f32(-100, 100, 0); - GXTexCoord2f32(uv_x, uv_y+uv_size+(1.5f/256.0f)); - GXEnd(); - spaceDrawCnt++; - } - if(space_hilite) { - space_curr = space_hilite; - space_type = space_curr->type; - if(player->show_next && space_type != 0 && (space_img = spaceHiliteImgIdx[space_type]) >= 0) { - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); - GXLoadTexObj(&spaceHiliteTex, GX_TEXMAP0); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - uv_x = (float)(space_img%4)/4.0f; - uv_y = (float)(space_img/4)/4.0f; - uv_size = 63.0f/256.0f; - MTXScale(scale, 1.5f, 1.5f, 1.5f); - MTXRotRad(rot_z, 'z', MTXDegToRad(space_curr->rot.y)); - MTXRotRad(rot_y, 'y', MTXDegToRad(space_curr->rot.z)); - MTXRotRad(rot_x, 'x', MTXDegToRad(space_curr->rot.x+90.0f)); - MTXTrans(final, space_curr->pos.x, 3.5f+space_curr->pos.y, space_curr->pos.z); - MTXConcat(scale, rot_x, rot_x); - MTXConcat(rot_x, rot_y, rot_y); - MTXConcat(rot_y, rot_z, rot_z); - MTXConcat(final, rot_z, final); - MTXConcat(lookat, final, final); - GXLoadPosMtxImm(final, GX_PNMTX0); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3f32(-100, -100, 0); - GXTexCoord2f32(uv_x, uv_y); - GXPosition3f32(100, -100, 0); - GXTexCoord2f32(uv_x+uv_size, uv_y); - GXPosition3f32(100, 100, 0); - GXTexCoord2f32(uv_x+uv_size, uv_y+uv_size); - GXPosition3f32(-100, 100, 0); - GXTexCoord2f32(uv_x, uv_y+uv_size); - GXEnd(); - spaceDrawCnt++; - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - return; - } - } - GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } - + Vec player_pos; + Vec target; + Vec pos; + + Mtx lookat, final, rot_x, rot_y, rot_z, scale; + Mtx44 proj; + BoardCameraData *camera; + if (!spaceDrawF) { + return; + } + spaceDrawCnt = 0; + camera = &boardCamera; + BoardCameraPosGet(&pos); + BoardCameraTargetGet(&target); + MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far); + GXSetProjection(proj, GX_PERSPECTIVE); + MTXLookAt(lookat, &pos, &camera->up, &target); + GXSetViewport(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); + GXSetScissor(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h); + { + BoardSpace *space_curr; + BoardSpace *space_hilite; + PlayerState *player; + s16 player_mdl; + float y_dist; + s32 space_img; + u16 space_type; + float uv_x, uv_y, uv_size; + InitGXSpace(); + + player = BoardPlayerGet(GWSystem.player_curr); + BoardPlayerPosGet(GWSystem.player_curr, &player_pos); + player_mdl = BoardModelIDGet(BoardPlayerModelGet(GWSystem.player_curr)); + space_curr = &spaceData[0][0]; + space_hilite = NULL; + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + for (i = 0; i < spaceCnt[0]; i++, space_curr++) { + if (space_curr->type == 0) { + continue; + } + if (!BoardCameraCullCheck(&space_curr->pos, 200.0f) || (space_curr->flag & spaceAttr[0])) { + continue; + } + if (!space_hilite) { + if (player_pos.x > space_curr->pos.x - 100.0f && player_pos.z > space_curr->pos.z - 100.0f + && player_pos.x < space_curr->pos.x + 100.0f && player_pos.z < space_curr->pos.z + 100.0f) { + if (player_pos.y - space_curr->pos.y < 0.0f) { + y_dist = -(player_pos.y - space_curr->pos.y); + } + else { + y_dist = player_pos.y - space_curr->pos.y; + } + if (y_dist < 10.0f) { + space_hilite = space_curr; + } + } + } + space_type = space_curr->type; + space_img = spaceImgIdx[space_type] - 1; + uv_x = (float)(space_img % 4) / 4.0f; + uv_y = (float)(space_img / 4) / 4.0f; + uv_size = 63.0f / 256.0f; + MTXRotRad(rot_z, 'z', MTXDegToRad(space_curr->rot.y)); + MTXRotRad(rot_y, 'y', MTXDegToRad(space_curr->rot.z)); + MTXRotRad(rot_x, 'x', MTXDegToRad(space_curr->rot.x + 90.0f)); + MTXTrans(final, space_curr->pos.x, 3.0f + space_curr->pos.y, space_curr->pos.z); + MTXConcat(rot_x, rot_y, rot_y); + MTXConcat(rot_y, rot_z, rot_z); + MTXConcat(final, rot_z, final); + MTXConcat(lookat, final, final); + GXLoadPosMtxImm(final, GX_PNMTX0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-100, -100, 0); + GXTexCoord2f32(uv_x, uv_y); + GXPosition3f32(100, -100, 0); + GXTexCoord2f32(uv_x + uv_size, uv_y); + GXPosition3f32(100, 100, 0); + GXTexCoord2f32(uv_x + uv_size, uv_y + uv_size + (1.5f / 256.0f)); + GXPosition3f32(-100, 100, 0); + GXTexCoord2f32(uv_x, uv_y + uv_size + (1.5f / 256.0f)); + GXEnd(); + spaceDrawCnt++; + } + if (space_hilite) { + space_curr = space_hilite; + space_type = space_curr->type; + if (player->show_next && space_type != 0 && (space_img = spaceHiliteImgIdx[space_type]) >= 0) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXLoadTexObj(&spaceHiliteTex, GX_TEXMAP0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + uv_x = (float)(space_img % 4) / 4.0f; + uv_y = (float)(space_img / 4) / 4.0f; + uv_size = 63.0f / 256.0f; + MTXScale(scale, 1.5f, 1.5f, 1.5f); + MTXRotRad(rot_z, 'z', MTXDegToRad(space_curr->rot.y)); + MTXRotRad(rot_y, 'y', MTXDegToRad(space_curr->rot.z)); + MTXRotRad(rot_x, 'x', MTXDegToRad(space_curr->rot.x + 90.0f)); + MTXTrans(final, space_curr->pos.x, 3.5f + space_curr->pos.y, space_curr->pos.z); + MTXConcat(scale, rot_x, rot_x); + MTXConcat(rot_x, rot_y, rot_y); + MTXConcat(rot_y, rot_z, rot_z); + MTXConcat(final, rot_z, final); + MTXConcat(lookat, final, final); + GXLoadPosMtxImm(final, GX_PNMTX0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-100, -100, 0); + GXTexCoord2f32(uv_x, uv_y); + GXPosition3f32(100, -100, 0); + GXTexCoord2f32(uv_x + uv_size, uv_y); + GXPosition3f32(100, 100, 0); + GXTexCoord2f32(uv_x + uv_size, uv_y + uv_size); + GXPosition3f32(-100, 100, 0); + GXTexCoord2f32(uv_x, uv_y + uv_size); + GXEnd(); + spaceDrawCnt++; + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + return; + } + } + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } } s32 BoardSpaceRead(s32 layer, s32 data_num) { - int j; - int i; - BoardSpace *space; - u8 *data; - s32 star_idx; - u8 *data_base; - data_base = data = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); - spaceCnt[layer] = *(u32 *)data; - data += sizeof(u32); - space = &spaceData[layer][0]; - for(i=0; ipos, data, sizeof(Vec)); - data += sizeof(Vec); - memcpy(&space->rot, data, sizeof(Vec)); - data += sizeof(Vec); - memcpy(&space->scale, data, sizeof(Vec)); - data += sizeof(Vec); - space->flag = *(u32 *)data; - data += sizeof(u32); - space->type = *(u16 *)data; - data += sizeof(u16); - space->link_cnt = *(u16 *)data; - data += sizeof(u16); - for(j=0; jlink_cnt; j++) { - space->link[j] = (*(u16 *)data)+1; - data += sizeof(u16); - } - if(space->type == 8) { - - space->type = 1; - star_idx = (space->flag & 0x70000) >> 16; - boardSpaceStarTbl[star_idx] = i+1; - } - } - HuDataClose(data_base); - return 0; + int j; + int i; + BoardSpace *space; + u8 *data; + s32 star_idx; + u8 *data_base; + data_base = data = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); + spaceCnt[layer] = *(u32 *)data; + data += sizeof(u32); + space = &spaceData[layer][0]; + for (i = 0; i < spaceCnt[layer]; i++, space++) { + memcpy(&space->pos, data, sizeof(Vec)); + data += sizeof(Vec); + memcpy(&space->rot, data, sizeof(Vec)); + data += sizeof(Vec); + memcpy(&space->scale, data, sizeof(Vec)); + data += sizeof(Vec); + space->flag = *(u32 *)data; + data += sizeof(u32); + space->type = *(u16 *)data; + data += sizeof(u16); + space->link_cnt = *(u16 *)data; + data += sizeof(u16); + for (j = 0; j < space->link_cnt; j++) { + space->link[j] = (*(u16 *)data) + 1; + data += sizeof(u16); + } + if (space->type == 8) { + + space->type = 1; + star_idx = (space->flag & 0x70000) >> 16; + boardSpaceStarTbl[star_idx] = i + 1; + } + } + HuDataClose(data_base); + return 0; } void BoardSpaceCameraSet(u16 mask) { - Hu3DModelCameraSet(spaceDrawMdl, mask); + Hu3DModelCameraSet(spaceDrawMdl, mask); } void BoardSpaceBlockPosSet(void) { - BoardSpace *space; - s32 block_pos; - begin: - if(boardTutorialBlockF) { - GWSystem.block_pos = boardTutorialBlockPos; - return; - } - block_pos = BoardRandMod(spaceCnt[0])+1; - if(block_pos == GWSystem.block_pos) { - goto begin; - } - space = BoardSpaceGet(0, block_pos); - if(space->type != 1) { - goto begin; - } - GWSystem.block_pos = block_pos; + BoardSpace *space; + s32 block_pos; +begin: + if (boardTutorialBlockF) { + GWSystem.block_pos = boardTutorialBlockPos; + return; + } + block_pos = BoardRandMod(spaceCnt[0]) + 1; + if (block_pos == GWSystem.block_pos) { + goto begin; + } + space = BoardSpaceGet(0, block_pos); + if (space->type != 1) { + goto begin; + } + GWSystem.block_pos = block_pos; } void BoardSpaceInit(s32 data_num) { - s32 board; - BoardJunctionMaskZero(); - memset(spaceData, 0, sizeof(spaceData)); - memset(spaceAttr, 0, sizeof(spaceAttr)); - lbl_801D3FC4[0] = lbl_801D3FC4[1] = lbl_801D3FC4[2] = lbl_801D3FC4[3] = -1; - spaceDrawF = 0; - board = GWBoardGet(); - { - AnimBmpData *bmp; - AnimData *data; - void *data_base; - s32 size; - data = data_base = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 29), MEMORY_DEFAULT_NUM, HEAP_DATA); - data->bmp = (void *)((u32)data_base+(u32)data->bmp); - data->pat = (void *)((u32)data_base+(u32)data->pat); - data->bank = (void *)((u32)data_base+(u32)data->bank); - bmp = data->bmp; - size = bmp->sizeX; - spaceHiliteTexFmt = -1; - switch(bmp->dataFmt) { - case ANIM_BMP_RGBA8: - spaceHiliteTexFmt = GX_TF_RGBA8; - break; - - case ANIM_BMP_RGB5A3_DUPE: - spaceHiliteTexFmt = GX_TF_RGB5A3; - break; - - case ANIM_BMP_CMPR: - spaceHiliteTexFmt = GX_TF_CMPR; - break; - } - spaceHiliteTexData = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM); - bmp->data = (void *)((u32)bmp->data+(u32)data_base); - memcpy(spaceHiliteTexData, bmp->data, bmp->dataSize); - HuDataClose(data_base); - GXInitTexObj(&spaceHiliteTex, spaceHiliteTexData, size, size, spaceHiliteTexFmt, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXInitTexObjLOD(&spaceHiliteTex, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); - } - { - AnimBmpData *bmp; - AnimData *data; - void *data_base; - s32 size; - data = data_base = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); - data->bmp = (void *)((u32)data_base+(u32)data->bmp); - data->pat = (void *)((u32)data_base+(u32)data->pat); - data->bank = (void *)((u32)data_base+(u32)data->bank); - bmp = data->bmp; - size = bmp->sizeX; - spaceTexFmt = -1; - switch(bmp->dataFmt) { - case ANIM_BMP_RGBA8: - spaceTexFmt = GX_TF_RGBA8; - break; - - case ANIM_BMP_RGB5A3_DUPE: - spaceTexFmt = GX_TF_RGB5A3; - break; - - case ANIM_BMP_CMPR: - spaceTexFmt = GX_TF_CMPR; - break; - } - spaceTexData = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM); - bmp->data = (void *)((u32)bmp->data+(u32)data_base); - memcpy(spaceTexData, bmp->data, bmp->dataSize); - HuDataClose(data_base); - GXInitTexObj(&spaceTex, spaceTexData, size, size, spaceTexFmt, GX_CLAMP, GX_CLAMP, GX_FALSE); - GXInitTexObjLOD(&spaceTex, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); - } - BoardSpaceRead(0, data_num); - spaceDrawMdl = Hu3DHookFuncCreate(DrawSpaces); - if(!BoardStartCheck() && !_CheckFlag(FLAG_ID_MAKE(1, 1))) { - BoardSpaceBlockPosSet(); - GWSystem.star_total = 0; - GWSystem.star_flag = 0; - } - if(GWBoardGet() != BOARD_ID_EXTRA1 && GWBoardGet() != BOARD_ID_EXTRA2) { - starPlatMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 6), NULL, 0); - BoardModelMotionStart(starPlatMdl, 0, 0x40000001); - BoardModelVisibilitySet(starPlatMdl, 0); - if(_CheckFlag(FLAG_ID_MAKE(1, 1))) { - Vec pos; - Vec rot; - s16 space; - BoardModelVisibilitySet(starPlatMdl, 1); - GWSystem.star_flag |= (u8)(1 << GWSystem.star_pos); - BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 8); - { - int space; - BoardSpace *space_plat; - space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); - BoardSpacePosGet(0, space, &pos); - BoardModelPosSetV(StarPlatGetMdl(), &pos); - BoardSpaceRotGet(0, space, &rot); - BoardModelRotYSet(StarPlatGetMdl(), rot.y); - } - } - } - spaceDrawF = 1; + s32 board; + BoardJunctionMaskZero(); + memset(spaceData, 0, sizeof(spaceData)); + memset(spaceAttr, 0, sizeof(spaceAttr)); + lbl_801D3FC4[0] = lbl_801D3FC4[1] = lbl_801D3FC4[2] = lbl_801D3FC4[3] = -1; + spaceDrawF = 0; + board = GWBoardGet(); + { + AnimBmpData *bmp; + AnimData *data; + void *data_base; + s32 size; + data = data_base = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 29), MEMORY_DEFAULT_NUM, HEAP_DATA); + data->bmp = (void *)((u32)data_base + (u32)data->bmp); + data->pat = (void *)((u32)data_base + (u32)data->pat); + data->bank = (void *)((u32)data_base + (u32)data->bank); + bmp = data->bmp; + size = bmp->sizeX; + spaceHiliteTexFmt = -1; + switch (bmp->dataFmt) { + case ANIM_BMP_RGBA8: + spaceHiliteTexFmt = GX_TF_RGBA8; + break; + + case ANIM_BMP_RGB5A3_DUPE: + spaceHiliteTexFmt = GX_TF_RGB5A3; + break; + + case ANIM_BMP_CMPR: + spaceHiliteTexFmt = GX_TF_CMPR; + break; + } + spaceHiliteTexData = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM); + bmp->data = (void *)((u32)bmp->data + (u32)data_base); + memcpy(spaceHiliteTexData, bmp->data, bmp->dataSize); + HuDataClose(data_base); + GXInitTexObj(&spaceHiliteTex, spaceHiliteTexData, size, size, spaceHiliteTexFmt, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&spaceHiliteTex, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + { + AnimBmpData *bmp; + AnimData *data; + void *data_base; + s32 size; + data = data_base = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); + data->bmp = (void *)((u32)data_base + (u32)data->bmp); + data->pat = (void *)((u32)data_base + (u32)data->pat); + data->bank = (void *)((u32)data_base + (u32)data->bank); + bmp = data->bmp; + size = bmp->sizeX; + spaceTexFmt = -1; + switch (bmp->dataFmt) { + case ANIM_BMP_RGBA8: + spaceTexFmt = GX_TF_RGBA8; + break; + + case ANIM_BMP_RGB5A3_DUPE: + spaceTexFmt = GX_TF_RGB5A3; + break; + + case ANIM_BMP_CMPR: + spaceTexFmt = GX_TF_CMPR; + break; + } + spaceTexData = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM); + bmp->data = (void *)((u32)bmp->data + (u32)data_base); + memcpy(spaceTexData, bmp->data, bmp->dataSize); + HuDataClose(data_base); + GXInitTexObj(&spaceTex, spaceTexData, size, size, spaceTexFmt, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&spaceTex, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + BoardSpaceRead(0, data_num); + spaceDrawMdl = Hu3DHookFuncCreate(DrawSpaces); + if (!BoardStartCheck() && !_CheckFlag(FLAG_ID_MAKE(1, 1))) { + BoardSpaceBlockPosSet(); + GWSystem.star_total = 0; + GWSystem.star_flag = 0; + } + if (GWBoardGet() != BOARD_ID_EXTRA1 && GWBoardGet() != BOARD_ID_EXTRA2) { + starPlatMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 6), NULL, 0); + BoardModelMotionStart(starPlatMdl, 0, 0x40000001); + BoardModelVisibilitySet(starPlatMdl, 0); + if (_CheckFlag(FLAG_ID_MAKE(1, 1))) { + Vec pos; + Vec rot; + s16 space; + BoardModelVisibilitySet(starPlatMdl, 1); + GWSystem.star_flag |= (u8)(1 << GWSystem.star_pos); + BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 8); + { + int space; + BoardSpace *space_plat; + space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); + BoardSpacePosGet(0, space, &pos); + BoardModelPosSetV(StarPlatGetMdl(), &pos); + BoardSpaceRotGet(0, space, &rot); + BoardModelRotYSet(StarPlatGetMdl(), rot.y); + } + } + } + spaceDrawF = 1; } void BoardSpaceDestroy(void) { - if(spaceDrawMdl >= 0) { - Hu3DModelKill(spaceDrawMdl); - spaceDrawMdl = -1; - } - if(spaceHiliteTexData) { - HuMemDirectFree(spaceHiliteTexData); - spaceHiliteTexData = NULL; - } - if(spaceTexData) { - HuMemDirectFree(spaceTexData); - spaceTexData = NULL; - } -} \ No newline at end of file + if (spaceDrawMdl >= 0) { + Hu3DModelKill(spaceDrawMdl); + spaceDrawMdl = -1; + } + if (spaceHiliteTexData) { + HuMemDirectFree(spaceHiliteTexData); + spaceHiliteTexData = NULL; + } + if (spaceTexData) { + HuMemDirectFree(spaceTexData); + spaceTexData = NULL; + } +} diff --git a/src/game/board/star.c b/src/game/board/star.c index cbccef34..3f2a0ba5 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -1,6 +1,8 @@ #include "game/board/star.h" #include "game/audio.h" #include "game/data.h" +#include "game/disp.h" + #include "game/flag.h" #include "game/gamework.h" #include "game/gamework_data.h" @@ -72,7 +74,7 @@ static Process *starProc; static s16 starParman = -1; static s16 hostMdl = -1; -const s32 lbl_8011E040[9] = { +static const s32 starMesTbl1[9] = { MAKE_MESSID(12, 0), MAKE_MESSID(12, 9), MAKE_MESSID(12, 18), @@ -84,7 +86,7 @@ const s32 lbl_8011E040[9] = { MAKE_MESSID(12, 0) }; -const s32 lbl_8011E064[9][2] = { +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) }, @@ -206,7 +208,7 @@ static void ExecStar(void) { starDoneF = 0; var_r22 = BoardSpaceLinkFlagSearch(0, temp_r24, 0x04000000); BoardSpacePosGet(0, var_r22, &sp18); - PSVECSubtract(&sp18, &sp24, &spC); + VECSubtract(&sp18, &sp24, &spC); temp_f30 = 90.0 - atan2d(spC.z, spC.x); temp_f30 = 90.0f * ((temp_f30 + 3.0f) / 90.0f); temp_f29 = BoardPlayerRotYGet(temp_r31); @@ -233,7 +235,7 @@ static void ExecStar(void) { } if (var_r26 != 0) { var_f31 /= var_r25; - BoardModelMotionShiftSet(temp_r30, hostMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r30, hostMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(temp_r30, 2.0f); } while (!BoardPlayerMotBlendCheck(temp_r31)) { @@ -243,16 +245,16 @@ static void ExecStar(void) { } HuPrcVSleep(); } - BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardCameraViewSet(3); BoardCameraMotionWait(); if (GWStarsGet(temp_r31) >= 999) { - temp_r29 = lbl_8011E040[temp_r27] + 5; + temp_r29 = starMesTbl1[temp_r27] + 5; BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); } else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) { - temp_r29 = lbl_8011E040[temp_r27] + 2; + temp_r29 = starMesTbl1[temp_r27] + 2; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); @@ -261,7 +263,7 @@ static void ExecStar(void) { while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) { HuPrcVSleep(); } - temp_r29 = lbl_8011E040[temp_r27]; + temp_r29 = starMesTbl1[temp_r27]; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinInsertMesSet(BoardPlayerGetCharMess(temp_r31), 0); BoardWinWait(); @@ -273,12 +275,12 @@ static void ExecStar(void) { HuPrcVSleep(); } if (GWSystem.last5_effect == 4) { - temp_r29 = lbl_8011E040[temp_r27] + 8; + temp_r29 = starMesTbl1[temp_r27] + 8; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); break; } - temp_r29 = lbl_8011E040[temp_r27] + 1; + temp_r29 = starMesTbl1[temp_r27] + 1; BoardWinCreateChoice(1, temp_r29, BoardWinPortraitGetStar(), 0); BoardWinAttrSet(0x10); if (GWPlayer[temp_r31].com) { @@ -292,7 +294,7 @@ static void ExecStar(void) { switch (BoardWinChoiceGet()) { case 0: if (BoardPlayerCoinsGet(temp_r31) < 20) { - temp_r29 = lbl_8011E040[temp_r27] + 2; + temp_r29 = starMesTbl1[temp_r27] + 2; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardStatusShowSet(temp_r31, 0); @@ -304,7 +306,7 @@ static void ExecStar(void) { } goto block_A; case 1: - temp_r29 = lbl_8011E040[temp_r27] + 4; + temp_r29 = starMesTbl1[temp_r27] + 4; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardStatusShowSet(temp_r31, 0); @@ -324,7 +326,7 @@ static void ExecStar(void) { } } block_A: - temp_r29 = lbl_8011E040[temp_r27] + 3; + temp_r29 = starMesTbl1[temp_r27] + 3; BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); @@ -337,7 +339,7 @@ block_A: HuAudFXPlay(0xF); } _SetFlag(0x10017); - BoardModelMotionShiftSet(temp_r30, hostMot[0], 0.0f, 10.0f, 0); + BoardModelMotionShiftSet(temp_r30, hostMot[0], 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(30); starDoneF = 1; BoardAudSeqFadeOut(0, 1000); @@ -348,7 +350,7 @@ block_A: while (!BoardStatusStopCheck(temp_r31)) { HuPrcVSleep(); } - BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardStarShowNext(temp_r31); BoardMusStartBoard(); BoardModelRotYSet(temp_r30, 0.0f); @@ -358,7 +360,7 @@ block_B: var_f31 = -BoardModelRotYGet(temp_r30); if (var_r26 != 0) { var_f31 /= var_r25; - BoardModelMotionShiftSet(temp_r30, hostMot[1], 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r30, hostMot[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); BoardModelMotionSpeedSet(temp_r30, 3.0f); } BoardPlayerMotBlendSet(temp_r31, 0, var_r25); @@ -370,7 +372,7 @@ block_B: HuPrcVSleep(); } BoardModelRotYSet(temp_r30, 0.0f); - BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, 0x40000001); + BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); if (!_CheckFlag(FLAG_ID_MAKE(1, 22))) { BoardCameraViewSet(1); BoardCameraTargetPlayerSet(temp_r31); @@ -622,7 +624,7 @@ void BoardStarGive(s32 arg0, Vec *arg1) { StarInlineFunc02(); StarInlineFunc01(); BoardPlayerVoiceEnableSet(arg0, 7, 0); - BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(boardStarSndTbl[GWPlayer[arg0].character]); BoardPlayerStarsAdd(arg0, 1); HuAudFXPlay(8); @@ -696,9 +698,9 @@ void BoardStarShowNext(s32 arg0) { showNextObj->scale.z = sp50.z; BoardPlayerPosGet(arg0, &sp38); sp50.y = sp38.y; - PSVECSubtract(&sp50, &sp38, &sp20); + VECSubtract(&sp50, &sp38, &sp20); sp20.y = 0.0f; - temp_f31 = PSVECMag(&sp20); + temp_f31 = VECMag(&sp20); if (temp_f31 > 3000.0f) { var_r27 = 0xF0; } else if (temp_f31 > 1500.0f) { @@ -708,7 +710,7 @@ void BoardStarShowNext(s32 arg0) { } BoardViewMoveStart(&sp38, &sp50, var_r27); showNextObj->trans.x = 68.0f; - showNextObj->trans.y = 430.0f; + showNextObj->trans.y = HU_DISP_HEIGHT-50; showNextObj->trans.z = 100.0f; sp44.x = showNextObj->trans.x; sp44.y = showNextObj->trans.y; @@ -732,9 +734,9 @@ void BoardStarShowNext(s32 arg0) { HuPrcVSleep(); } if (var_r28 == 0) { - var_r30 = lbl_8011E040[GWBoardGet()] + 6; + var_r30 = starMesTbl1[GWBoardGet()] + 6; } else { - var_r30 = lbl_8011E064[GWBoardGet()][0]; + var_r30 = starMesTbl2[GWBoardGet()][0]; } BoardWinCreate(3, var_r30, -1); BoardWinPause(); @@ -746,9 +748,9 @@ void BoardStarShowNext(s32 arg0) { BoardWinKill(); HuPrcSleep(3); if (var_r28 == 0) { - var_r30 = lbl_8011E040[GWBoardGet()] + 7; + var_r30 = starMesTbl1[GWBoardGet()] + 7; } else { - var_r30 = lbl_8011E064[GWBoardGet()][1]; + var_r30 = starMesTbl2[GWBoardGet()][1]; } BoardWinCreate(3, var_r30, -1); BoardWinWait(); diff --git a/src/game/board/start.c b/src/game/board/start.c index b07ae07a..bb8617b7 100755 --- a/src/game/board/start.c +++ b/src/game/board/start.c @@ -20,25 +20,25 @@ #include "game/board/window.h" #include "dolphin.h" +#include "ext_math.h" #include "string.h" typedef struct { struct { - u8 unk00_field0 : 1; - u8 unk00_field1 : 3; - u8 unk00_field2 : 2; - u8 unk00_field3 : 1; - u8 unk00_field4 : 1; + u8 isBoardVisible : 1; + u8 state : 3; + u8 index : 2; + u8 isActionable : 1; + u8 hasRolled : 1; }; - u8 unk01; - u8 unk02; + u8 delay; + u8 time; s8 unk03; - s8 unk04; - char unk05[1]; - s16 unk06; - s16 unk08; - s16 unk0A; - s16 unk0C; + s8 digit; + s16 yRot; + s16 diceMdl; + s16 model; + s16 diceParManId; s8 unk0E; } PlayerStartWork; @@ -90,21 +90,21 @@ static s32 hitFX[4] = { }; static s32 startMesTbl[9][5] = { - { 0x00150001, 0x00150007, 0x0015000D, 0x00150016, 0x0015001C }, - { 0x00150002, 0x00150008, 0x0015000E, 0x00150017, 0x0015001D }, - { 0x00150003, 0x00150009, 0x0015000F, 0x00150018, 0x0015001E }, - { 0x00150004, 0x0015000A, 0x00150010, 0x00150019, 0x0015001F }, - { 0x00150005, 0x0015000B, 0x00150011, 0x0015001A, 0x00150020 }, - { 0x00150006, 0x0015000C, 0x00150012, 0x0015001B, 0x00150021 }, - { 0x00150001, 0x00150007, 0x0015000D, 0x00150016, 0x0015001C }, - { 0x00150033, 0x00150034, 0x00150035, 0x00150036, 0x00150037 }, - { 0x0015003B, 0x0015003C, 0x0015003D, 0x0015003E, 0x0015003F } + { MAKE_MESSID(0x15, 0x01), MAKE_MESSID(0x15, 0x07), MAKE_MESSID(0x15, 0x0D), MAKE_MESSID(0x15, 0x16), MAKE_MESSID(0x15, 0x1C) }, + { MAKE_MESSID(0x15, 0x02), MAKE_MESSID(0x15, 0x08), MAKE_MESSID(0x15, 0x0E), MAKE_MESSID(0x15, 0x17), MAKE_MESSID(0x15, 0x1D) }, + { MAKE_MESSID(0x15, 0x03), MAKE_MESSID(0x15, 0x09), MAKE_MESSID(0x15, 0x0F), MAKE_MESSID(0x15, 0x18), MAKE_MESSID(0x15, 0x1E) }, + { MAKE_MESSID(0x15, 0x04), MAKE_MESSID(0x15, 0x0A), MAKE_MESSID(0x15, 0x10), MAKE_MESSID(0x15, 0x19), MAKE_MESSID(0x15, 0x1F) }, + { MAKE_MESSID(0x15, 0x05), MAKE_MESSID(0x15, 0x0B), MAKE_MESSID(0x15, 0x11), MAKE_MESSID(0x15, 0x1A), MAKE_MESSID(0x15, 0x20) }, + { MAKE_MESSID(0x15, 0x06), MAKE_MESSID(0x15, 0x0C), MAKE_MESSID(0x15, 0x12), MAKE_MESSID(0x15, 0x1B), MAKE_MESSID(0x15, 0x21) }, + { MAKE_MESSID(0x15, 0x01), MAKE_MESSID(0x15, 0x07), MAKE_MESSID(0x15, 0x0D), MAKE_MESSID(0x15, 0x16), MAKE_MESSID(0x15, 0x1C) }, + { MAKE_MESSID(0x15, 0x33), MAKE_MESSID(0x15, 0x34), MAKE_MESSID(0x15, 0x35), MAKE_MESSID(0x15, 0x36), MAKE_MESSID(0x15, 0x37) }, + { MAKE_MESSID(0x15, 0x3B), MAKE_MESSID(0x15, 0x3C), MAKE_MESSID(0x15, 0x3D), MAKE_MESSID(0x15, 0x3E), MAKE_MESSID(0x15, 0x3F) } }; static s32 logoSprTbl[] = { - 0x00070057, 0x00070058, 0x00070059, - 0x0007005A, 0x0007005B, 0x0007005C, - 0x00070057, 0x0007005D, 0x0007005E + DATA_MAKE_NUM(DATADIR_BOARD, 0x57), DATA_MAKE_NUM(DATADIR_BOARD, 0x58), DATA_MAKE_NUM(DATADIR_BOARD, 0x59), + DATA_MAKE_NUM(DATADIR_BOARD, 0x5A), DATA_MAKE_NUM(DATADIR_BOARD, 0x5B), DATA_MAKE_NUM(DATADIR_BOARD, 0x5C), + DATA_MAKE_NUM(DATADIR_BOARD, 0x57), DATA_MAKE_NUM(DATADIR_BOARD, 0x5D), DATA_MAKE_NUM(DATADIR_BOARD, 0x5E) }; void BoardStartExec(void) { @@ -133,7 +133,7 @@ static void DestroyStart(void) { } static void ExecStart(void) { - Vec sp8; + Vec pos; s32 i; BoardCameraNearFarSet(100.0f, 23000.0f); @@ -179,8 +179,8 @@ static void ExecStart(void) { for (i = 0; i < 4; i++) { BoardPlayerCornerPosSet(i); } - BoardSpacePosGet(0, GWPlayer->space_curr, &sp8); - BoardPlayerPosSetV(0, &sp8); + BoardSpacePosGet(0, GWPlayer->space_curr, &pos); + BoardPlayerPosSetV(0, &pos); BoardCameraMoveSet(0); BoardCameraViewSet(2); BoardCameraMotionWait(); @@ -224,10 +224,10 @@ static void ExecStart(void) { } static void ShowLogo(void) { - float temp_f28; - float var_f27; - s16 spA; - s16 sp8; + float scale; + float angleF; + s16 angleS; + s16 anglePosY; logoSprGrp = HuSprGrpCreate(1); BoardSpriteCreate(logoSprTbl[GWBoardGet()], 1000, 0, &logoSpr); @@ -236,26 +236,26 @@ static void ShowLogo(void) { HuSprAttrSet(logoSprGrp, 0, 8); HuSprScaleSet(logoSprGrp, 0, 0.01f, 0.01f); HuSprGrpPosSet(logoSprGrp, 288.0f, 240.0f); - for (spA = 0; spA < 90; spA += 4) { - OSs16tof32(&spA, &var_f27); - temp_f28 = sin(var_f27 * M_PI / 180.0); - HuSprScaleSet(logoSprGrp, 0, temp_f28, temp_f28); + for (angleS = 0; angleS < 90; angleS += 4) { + OSs16tof32(&angleS, &angleF); + scale = sind(angleF); + HuSprScaleSet(logoSprGrp, 0, scale, scale); HuPrcVSleep(); } HuSprScaleSet(logoSprGrp, 0, 1.0f, 1.0f); - for (spA = 0; spA < 540; spA += 4) { - sp8 = spA % 180; - OSs16tof32(&sp8, &var_f27); - temp_f28 = 1.0 + 0.699999988079071 * sin(var_f27 * M_PI / 180.0); - HuSprScaleSet(logoSprGrp, 0, temp_f28, temp_f28); + for (angleS = 0; angleS < 540; angleS += 4) { + anglePosY = angleS % 180; + OSs16tof32(&anglePosY, &angleF); + scale = 1.0 + 0.7f * sind(angleF); + HuSprScaleSet(logoSprGrp, 0, scale, scale); HuPrcVSleep(); } HuSprScaleSet(logoSprGrp, 0, 1.0f, 1.0f); HuPrcSleep(0x78); - for (spA = 0; spA < 90; spA += 4) { - OSs16tof32(&spA, &var_f27); - temp_f28 = cos(var_f27 * M_PI / 180.0); - HuSprScaleSet(logoSprGrp, 0, temp_f28, temp_f28); + for (angleS = 0; angleS < 90; angleS += 4) { + OSs16tof32(&angleS, &angleF); + scale = cosd(angleF); + HuSprScaleSet(logoSprGrp, 0, scale, scale); HuPrcVSleep(); } HuSprGrpKill(logoSprGrp); @@ -263,75 +263,75 @@ static void ShowLogo(void) { } static void FocusStart(void) { - Vec sp2C; - Vec sp20; - Vec sp14; - Vec sp8; - float var_f31; - u32 var_r31; + Vec boardPos; + Vec offset; + Vec offset2; + Vec camRot; + float zoom; + u32 i; - for (var_f31 = 14000.0f; var_f31 >= 2000.0f; var_f31 -= 50.0f) { - BoardCameraZoomSet(var_f31); + for (zoom = 14000.0f; zoom >= 2000.0f; zoom -= 50.0f) { + BoardCameraZoomSet(zoom); HuPrcVSleep(); } BoardCameraZoomSet(2000.0f); - BoardModelPosGet(camFocus, &sp2C); - sp20.x = spacePos.x + 150.0f; - sp20.y = spacePos.y + 100.0f; - sp20.z = spacePos.z + 150.0f; - PSVECSubtract(&sp20, &sp2C, &sp14); - sp14.x /= 120.0f; - sp14.y /= 120.0f; - sp14.z /= 120.0f; + BoardModelPosGet(camFocus, &boardPos); + offset.x = spacePos.x + 150.0f; + offset.y = spacePos.y + 100.0f; + offset.z = spacePos.z + 150.0f; + VECSubtract(&offset, &boardPos, &offset2); + offset2.x /= 120.0f; + offset2.y /= 120.0f; + offset2.z /= 120.0f; HuAudSStreamFadeOut(streamStatus, 0x1388); - for (var_r31 = 0; var_r31 < 120; var_r31++) { - PSVECAdd(&sp14, &sp2C, &sp2C); - BoardModelPosSetV(camFocus, &sp2C); + for (i = 0; i < 120; i++) { + VECAdd(&offset2, &boardPos, &boardPos); + BoardModelPosSetV(camFocus, &boardPos); HuPrcVSleep(); } - BoardModelPosSetV(camFocus, &sp20); - sp8.x = -22.0f; - sp8.y = 0.0f; - sp8.z = 0.0f; - BoardCameraMotionStartEx(camFocus, &sp8, NULL, 1500.0f, -1.0f, 21); + BoardModelPosSetV(camFocus, &offset); + camRot.x = -22.0f; + camRot.y = 0.0f; + camRot.z = 0.0f; + BoardCameraMotionStartEx(camFocus, &camRot, NULL, 1500.0f, -1.0f, 21); } static void CreatePlayerStart(void) { - Vec spC; - float temp_f30; - omObjData *var_r29; - PlayerStartWork *var_r30; + Vec boardPos; + float offsetX; + omObjData *boardObj; + PlayerStartWork *boardData; s8 i; - BoardModelPosGet(camFocus, &spC); + BoardModelPosGet(camFocus, &boardPos); for (i = 0; i < 4; i++) { playerOrderOld[i] = i; - var_r29 = omAddObjEx(boardObjMan, 0x100, 0, 0, -1, ExecPlayerStart); - playerStartObj[i] = var_r29; - var_r30 = OM_GET_WORK_PTR(var_r29, PlayerStartWork); - var_r30->unk00_field0 = 0; - var_r30->unk00_field2 = i; - var_r30->unk03 = -1; - var_r30->unk0A = -1; - var_r30->unk0C = -1; - var_r30->unk00_field1 = 1; - var_r30->unk01 = i * 30; - var_r30->unk00_field3 = 0; - var_r30->unk00_field4 = 0; - var_r30->unk06 = 2; - var_r30->unk04 = 1; - var_r30->unk0E = 0x3C; - var_r30->unk08 = BoardModelCreate(0x70018, NULL, 0); - BoardModelVisibilitySet(var_r30->unk08, 0); - BoardModelMotionSpeedSet(var_r30->unk08, 0.0f); - OSs8tof32(&i, &temp_f30); - temp_f30 = 135.0f * (temp_f30 - 2.0f + 0.5f); - BoardModelVisibilitySet(BoardPlayerModelGet(playerOrderOld[var_r30->unk00_field2]), 1); - var_r29->trans.x = spC.x + temp_f30; - var_r29->trans.y = spC.y + 700.0f; - var_r29->trans.z = spC.z + 100.0f; - BoardPlayerPosSet(playerOrderOld[var_r30->unk00_field2], var_r29->trans.x, var_r29->trans.y, var_r29->trans.z); - BoardPlayerMotionShiftSet(playerOrderOld[var_r30->unk00_field2], 4, 10.0f, 1.0f, 0); + boardObj = omAddObjEx(boardObjMan, 0x100, 0, 0, -1, ExecPlayerStart); + playerStartObj[i] = boardObj; + boardData = OM_GET_WORK_PTR(boardObj, PlayerStartWork); + boardData->isBoardVisible = 0; + boardData->index = i; + boardData->unk03 = -1; + boardData->model = -1; + boardData->diceParManId = -1; + boardData->state = 1; + boardData->delay = i * 30; + boardData->isActionable = 0; + boardData->hasRolled = 0; + boardData->yRot = 2; + boardData->digit = 1; + boardData->unk0E = 0x3C; + boardData->diceMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x18), NULL, 0); + BoardModelVisibilitySet(boardData->diceMdl, 0); + BoardModelMotionSpeedSet(boardData->diceMdl, 0.0f); + OSs8tof32(&i, &offsetX); + offsetX = 135.0f * (offsetX - 2.0f + 0.5f); + BoardModelVisibilitySet(BoardPlayerModelGet(playerOrderOld[boardData->index]), 1); + boardObj->trans.x = boardPos.x + offsetX; + boardObj->trans.y = boardPos.y + 700.0f; + boardObj->trans.z = boardPos.z + 100.0f; + BoardPlayerPosSet(playerOrderOld[boardData->index], boardObj->trans.x, boardObj->trans.y, boardObj->trans.z); + BoardPlayerMotionShiftSet(playerOrderOld[boardData->index], 4, 10.0f, 1.0f, HU3D_MOTATTR_NONE); } if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardMusStart(0, 0xC, 0x7F, 0); @@ -341,107 +341,107 @@ static void CreatePlayerStart(void) { } } -static void ExecPlayerStart(omObjData *arg0) { - PlayerStartWork *temp_r31 = OM_GET_WORK_PTR(arg0, PlayerStartWork); +static void ExecPlayerStart(omObjData *object) { + PlayerStartWork *data = OM_GET_WORK_PTR(object, PlayerStartWork); - if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { - if (hitFX[temp_r31->unk00_field2] != -1) { - HuAudFXStop(hitFX[temp_r31->unk00_field2]); - hitFX[temp_r31->unk00_field2] = -1; + if (data->isBoardVisible != 0 || BoardIsKill()) { + if (hitFX[data->index] != -1) { + HuAudFXStop(hitFX[data->index]); + hitFX[data->index] = -1; } - playerStartObj[temp_r31->unk00_field2] = NULL; - omDelObjEx(HuPrcCurrentGet(), arg0); + playerStartObj[data->index] = NULL; + omDelObjEx(HuPrcCurrentGet(), object); return; } - if (temp_r31->unk01 != 0) { - temp_r31->unk01--; + if (data->delay != 0) { + data->delay--; return; } - switch (temp_r31->unk00_field1) { + switch (data->state) { case 0: break; case 1: - PlayerFall(arg0, temp_r31); + PlayerFall(object, data); break; case 2: - PlayerWaitSpeak(arg0, temp_r31); + PlayerWaitSpeak(object, data); break; case 3: - PlayerDiceFall(arg0, temp_r31); + PlayerDiceFall(object, data); break; case 4: - PlayerDiceRoll(arg0, temp_r31); + PlayerDiceRoll(object, data); break; case 5: - PlayerDiceNumShow(arg0, temp_r31); + PlayerDiceNumShow(object, data); break; case 6: - PlayerDiceNumHide(arg0, temp_r31); + PlayerDiceNumHide(object, data); break; } } -static void PlayerFall(omObjData *arg0, PlayerStartWork *arg1) { +static void PlayerFall(omObjData *object, PlayerStartWork *data) { float temp_f31; - if (arg1->unk00_field3 != 0) { - SetPlayerStartState(playerOrderOld[arg1->unk00_field2], 0); - BoardPlayerIdleSet(playerOrderOld[arg1->unk00_field2]); - if (_CheckFlag(FLAG_ID_MAKE(1, 11)) && arg1->unk00_field2 == 3) { + if (data->isActionable != 0) { + SetPlayerStartState(playerOrderOld[data->index], 0); + BoardPlayerIdleSet(playerOrderOld[data->index]); + if (_CheckFlag(FLAG_ID_MAKE(1, 11)) && data->index == 3) { BoardTutorialHookExec(0, 0); } return; } - if (arg1->unk02 > 200) { - arg1->unk02 = -56; + if (data->time > 200) { + data->time = -56; } - OSu8tof32(&arg1->unk02, &temp_f31); - arg0->trans.y += -0.08166667f * temp_f31 * temp_f31; - if (arg0->trans.y < spacePos.y) { - arg0->trans.y = spacePos.y; - arg1->unk02 = 0; - BoardPlayerMotionShiftSet(playerOrderOld[arg1->unk00_field2], 5, 0.0f, 4.0f, 0); - arg1->unk01 = 0xC; - arg1->unk00_field3 = 1; + OSu8tof32(&data->time, &temp_f31); + object->trans.y += -0.08166667f * temp_f31 * temp_f31; + if (object->trans.y < spacePos.y) { + object->trans.y = spacePos.y; + data->time = 0; + BoardPlayerMotionShiftSet(playerOrderOld[data->index], 5, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + data->delay = 0xC; + data->isActionable = 1; } - arg1->unk02++; - BoardPlayerPosSet(playerOrderOld[arg1->unk00_field2], arg0->trans.x, arg0->trans.y, arg0->trans.z); + data->time++; + BoardPlayerPosSet(playerOrderOld[data->index], object->trans.x, object->trans.y, object->trans.z); } -static void PlayerWaitSpeak(omObjData *arg0, PlayerStartWork *arg1) { - float var_f31; +static void PlayerWaitSpeak(omObjData *object, PlayerStartWork *data) { + float yRot; - if (arg1->unk02 == 0) { - var_f31 = 180.0f + BoardPlayerRotYGet(playerOrderOld[arg1->unk00_field2]); - BoardPlayerMotBlendSet(playerOrderOld[arg1->unk00_field2], var_f31, 0xF); - arg1->unk02 = 1; + if (data->time == 0) { + yRot = 180.0f + BoardPlayerRotYGet(playerOrderOld[data->index]); + BoardPlayerMotBlendSet(playerOrderOld[data->index], yRot, 0xF); + data->time = 1; return; } - if (BoardPlayerMotBlendCheck(playerOrderOld[arg1->unk00_field2])) { - BoardPlayerIdleSet(playerOrderOld[arg1->unk00_field2]); - SetPlayerStartState(playerOrderOld[arg1->unk00_field2], 0); + if (BoardPlayerMotBlendCheck(playerOrderOld[data->index])) { + BoardPlayerIdleSet(playerOrderOld[data->index]); + SetPlayerStartState(playerOrderOld[data->index], 0); } } -static void PlayerDiceFall(omObjData *arg0, PlayerStartWork *arg1) { - Vec sp8; - float var_f31; - float var_f30; +static void PlayerDiceFall(omObjData *object, PlayerStartWork *data) { + Vec boardPos; + float max; + float min; s32 i; - if (arg1->unk02 == 0) { + if (data->time == 0) { HuAudFXPlay(0x302); - BoardPlayerPosGet(playerOrderOld[arg1->unk00_field2], &sp8); - var_f30 = 250.0f; - var_f31 = 700.0f; - arg0->rot.x = (var_f30 - var_f31) / 30.0f; - sp8.y += var_f31; - BoardModelPosSetV(arg1->unk08, &sp8); - BoardModelVisibilitySet(arg1->unk08, 1); + BoardPlayerPosGet(playerOrderOld[data->index], &boardPos); + min = 250.0f; + max = 700.0f; + object->rot.x = (min - max) / 30.0f; + boardPos.y += max; + BoardModelPosSetV(data->diceMdl, &boardPos); + BoardModelVisibilitySet(data->diceMdl, 1); } else { - if (arg1->unk02 > 30.0f) { + if (data->time > 30.0f) { if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { - if (arg1->unk00_field2 == 3) { + if (data->index == 3) { BoardTutorialHookExec(1, 0); for (i = 0; i < 4; i++) { SetPlayerStartState(playerOrderOld[i], 4); @@ -449,199 +449,199 @@ static void PlayerDiceFall(omObjData *arg0, PlayerStartWork *arg1) { } return; } - SetPlayerStartState(playerOrderOld[arg1->unk00_field2], 4); + SetPlayerStartState(playerOrderOld[data->index], 4); return; } - BoardModelPosGet(arg1->unk08, &sp8); - sp8.y += arg0->rot.x; - BoardModelPosSetV(arg1->unk08, &sp8); + BoardModelPosGet(data->diceMdl, &boardPos); + boardPos.y += object->rot.x; + BoardModelPosSetV(data->diceMdl, &boardPos); } - arg1->unk02++; + data->time++; } static s32 digitMdlTbl[9] = { - 0x0007000D, 0x0007000E, 0x0007000F, - 0x00070010, 0x00070011, 0x00070012, - 0x00070013, 0x00070014, 0x00070015 + DATA_MAKE_NUM(DATADIR_BOARD, 0x0D), DATA_MAKE_NUM(DATADIR_BOARD, 0x0E), DATA_MAKE_NUM(DATADIR_BOARD, 0x0F), + DATA_MAKE_NUM(DATADIR_BOARD, 0x10), DATA_MAKE_NUM(DATADIR_BOARD, 0x11), DATA_MAKE_NUM(DATADIR_BOARD, 0x12), + DATA_MAKE_NUM(DATADIR_BOARD, 0x13), DATA_MAKE_NUM(DATADIR_BOARD, 0x14), DATA_MAKE_NUM(DATADIR_BOARD, 0x15) }; static s32 playerOrderMesTbl[3] = { - 0x00150013, - 0x00150014, - 0x00150015 + MAKE_MESSID(0x15, 0x13), + MAKE_MESSID(0x15, 0x14), + MAKE_MESSID(0x15, 0x15) }; -static void PlayerDiceRoll(omObjData *arg0, PlayerStartWork *arg1) { - Vec sp8; - float var_f30; - u32 var_r28; - s8 var_r29; - s8 temp_r26; +static void PlayerDiceRoll(omObjData *object, PlayerStartWork *data) { + Vec boardPos; + float time; + u32 jumpCheck; + s8 player; + s8 digit; - var_r28 = 0; - if (arg1->unk02 > arg1->unk06) { - arg1->unk02 = 0; - temp_r26 = arg1->unk04; + jumpCheck = 0; + if (data->time > data->yRot) { + data->time = 0; + digit = data->digit; do { - arg1->unk04 = BoardRandMod(9); - } while (arg1->unk04 == temp_r26); - OSs8tof32(&arg1->unk04, &var_f30); - BoardModelMotionTimeSet(arg1->unk08, var_f30 + 0.5f); + data->digit = BoardRandMod(9); + } while (data->digit == digit); + OSs8tof32(&data->digit, &time); + BoardModelMotionTimeSet(data->diceMdl, time + 0.5f); } - if (arg1->unk00_field4 == 0) { - if (GWPlayer[playerOrderOld[arg1->unk00_field2]].com) { + if (data->hasRolled == 0) { + if (GWPlayer[playerOrderOld[data->index]].com) { if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { - if (arg1->unk0E != 0) { - arg1->unk0E--; + if (data->unk0E != 0) { + data->unk0E--; } else { - var_r28 = 0x100; + jumpCheck = PAD_BUTTON_A; } } else if (BoardRandMod(100) < 5) { - var_r28 = 0x100; + jumpCheck = PAD_BUTTON_A; } } else { - var_r28 = HuPadBtnDown[GWPlayer[playerOrderOld[arg1->unk00_field2]].port]; + jumpCheck = HuPadBtnDown[GWPlayer[playerOrderOld[data->index]].port]; } - if (var_r28 == 0x100) { - BoardPlayerDiceJumpStart(playerOrderOld[arg1->unk00_field2]); - arg1->unk00_field4 = 1; + if (jumpCheck == PAD_BUTTON_A) { + BoardPlayerDiceJumpStart(playerOrderOld[data->index]); + data->hasRolled = 1; } } else { - if (BoardPlayerDiceJumpCheck(playerOrderOld[arg1->unk00_field2])) { - SetPlayerStartState(playerOrderOld[arg1->unk00_field2], 5); - arg1->unk06 = 360; - arg0->rot.x = arg0->rot.y = 1.0f; - arg1->unk04 = BoardRandMod(9); + if (BoardPlayerDiceJumpCheck(playerOrderOld[data->index])) { + SetPlayerStartState(playerOrderOld[data->index], 5); + data->yRot = 360; + object->rot.x = object->rot.y = 1.0f; + data->digit = BoardRandMod(9); HuAudFXPlay(0x303); - if (hitFX[arg1->unk00_field2] != -1) { - HuAudFXStop(hitFX[arg1->unk00_field2]); - hitFX[arg1->unk00_field2] = -1; + if (hitFX[data->index] != -1) { + HuAudFXStop(hitFX[data->index]); + hitFX[data->index] = -1; } - var_r29 = 0; - while (var_r29 < 4) { - if (playerOrderNew[var_r29] == arg1->unk04 && var_r29 != playerOrderOld[arg1->unk00_field2]) { - arg1->unk04 = BoardRandMod(9); - var_r29 = 0; + player = 0; + while (player < 4) { + if (playerOrderNew[player] == data->digit && player != playerOrderOld[data->index]) { + data->digit = BoardRandMod(9); + player = 0; } else { - var_r29++; + player++; } } if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { - arg1->unk04 = tutorialRollTbl[arg1->unk00_field2]; + data->digit = tutorialRollTbl[data->index]; } - playerOrderNew[playerOrderOld[arg1->unk00_field2]] = arg1->unk04; - arg1->unk0A = BoardModelCreate(digitMdlTbl[arg1->unk04], NULL, 0); - BoardModelPosGet(arg1->unk08, &sp8); - sp8.x += 50.0 * sin(0.0); - sp8.z += 50.0 * cos(0.0); - BoardModelPosSetV(arg1->unk0A, &sp8); - BoardModelMotionStart(arg1->unk0A, 0, 0); - BoardModelMotionSpeedSet(arg1->unk0A, 0.0f); - BoardModelMotionTimeSet(arg1->unk0A, 0.0f); - BoardModelLayerSet(arg1->unk0A, 2); - arg1->unk0C = BoardDiceEffectCreate(); - Hu3DParManPosSet(arg1->unk0C, sp8.x, sp8.y, sp8.z); - Hu3DParManTimeLimitSet(arg1->unk0C, 0x96); - BoardModelVisibilitySet(arg1->unk08, 0); + playerOrderNew[playerOrderOld[data->index]] = data->digit; + data->model = BoardModelCreate(digitMdlTbl[data->digit], NULL, 0); + BoardModelPosGet(data->diceMdl, &boardPos); + boardPos.x += 50.0 * sin(0.0); + boardPos.z += 50.0 * cos(0.0); + BoardModelPosSetV(data->model, &boardPos); + BoardModelMotionStart(data->model, 0, 0); + BoardModelMotionSpeedSet(data->model, 0.0f); + BoardModelMotionTimeSet(data->model, 0.0f); + BoardModelLayerSet(data->model, 2); + data->diceParManId = BoardDiceEffectCreate(); + Hu3DParManPosSet(data->diceParManId, boardPos.x, boardPos.y, boardPos.z); + Hu3DParManTimeLimitSet(data->diceParManId, 0x96); + BoardModelVisibilitySet(data->diceMdl, 0); return; } } - arg1->unk02++; + data->time++; } -static void PlayerDiceNumShow(omObjData *arg0, PlayerStartWork *arg1) { - float var_f30; +static void PlayerDiceNumShow(omObjData *object, PlayerStartWork *data) { + float yRot; - arg1->unk06 -= 18; - if (arg1->unk06 < 0) { - arg1->unk06 = 0; - SetPlayerStartState(playerOrderOld[arg1->unk00_field2], 0); + data->yRot -= 18; + if (data->yRot < 0) { + data->yRot = 0; + SetPlayerStartState(playerOrderOld[data->index], 0); if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardTutorialHookExec(2, 0); } } - OSs16tof32(&arg1->unk06, &var_f30); - BoardModelRotYSet(arg1->unk0A, var_f30); + OSs16tof32(&data->yRot, &yRot); + BoardModelRotYSet(data->model, yRot); } -static void PlayerDiceNumHide(omObjData *arg0, PlayerStartWork *arg1) { - float var_f28; +static void PlayerDiceNumHide(omObjData *object, PlayerStartWork *data) { + float yRot; - switch (arg1->unk02) { + switch (data->time) { case 0: - arg1->unk06 += 18; - if (arg1->unk06 > 360) { - arg1->unk06 = 0; - arg1->unk02 = 1; - arg0->rot.x = 1.0f; - arg0->rot.y = 1.0f; + data->yRot += 18; + if (data->yRot > 360) { + data->yRot = 0; + data->time = 1; + object->rot.x = 1.0f; + object->rot.y = 1.0f; } - OSs16tof32(&arg1->unk06, &var_f28); - BoardModelRotYSet(arg1->unk0A, var_f28); + OSs16tof32(&data->yRot, &yRot); + BoardModelRotYSet(data->model, yRot); return; case 1: - arg1->unk06 += 9; - if (arg1->unk06 > 180) { - arg1->unk06 = 0; - arg1->unk02 = 2; + data->yRot += 9; + if (data->yRot > 180) { + data->yRot = 0; + data->time = 2; } - OSs16tof32(&arg1->unk06, &var_f28); - arg0->rot.x = 1.0 + 1.2999999523162842 * sin(var_f28 * M_PI / 180.0); + OSs16tof32(&data->yRot, &yRot); + object->rot.x = 1.0 + 1.3f * sind(yRot); break; case 2: - arg1->unk06 += 9; - if (arg1->unk06 > 180) { - arg1->unk06 = 179; - arg1->unk02 = 3; + data->yRot += 9; + if (data->yRot > 180) { + data->yRot = 179; + data->time = 3; } - OSs16tof32(&arg1->unk06, &var_f28); - arg0->rot.x = cos(0.5f * var_f28 * M_PI / 180.0); - arg0->rot.y = 1.0 + 1.2999999523162842 * sin(var_f28 * M_PI / 180.0); + OSs16tof32(&data->yRot, &yRot); + object->rot.x = cosd(0.5f * yRot); + object->rot.y = 1.0 + 1.3f * sind(yRot); break; case 3: - BoardModelVisibilitySet(arg1->unk0A, 0); - arg1->unk00_field0 = 1; + BoardModelVisibilitySet(data->model, 0); + data->isBoardVisible = 1; return; } - BoardModelScaleSet(arg1->unk0A, arg0->rot.x, arg0->rot.y, 1.0f); + BoardModelScaleSet(data->model, object->rot.x, object->rot.y, 1.0f); } -static void SetPlayerStartState(s32 arg0, s32 arg1) { - PlayerStartWork *temp_r31; - omObjData *temp_r30; +static void SetPlayerStartState(s32 player, s32 state) { + PlayerStartWork *data; + omObjData *object; - temp_r30 = playerStartObj[arg0]; - temp_r31 = OM_GET_WORK_PTR(temp_r30, PlayerStartWork); - temp_r31->unk00_field1 = arg1; - temp_r31->unk02 = 0; - temp_r31->unk01 = 0; - switch (arg1) { + object = playerStartObj[player]; + data = OM_GET_WORK_PTR(object, PlayerStartWork); + data->state = state; + data->time = 0; + data->delay = 0; + switch (state) { case 4: - hitFX[arg0] = HuAudFXPlay(0x300); + hitFX[player] = HuAudFXPlay(0x300); break; case 5: break; case 6: - temp_r31->unk06 = 0; + data->yRot = 0; break; } } -static s32 GetPlayerStartState(s32 arg0) { - PlayerStartWork *temp_r31; - omObjData *temp_r30; +static s32 GetPlayerStartState(s32 player) { + PlayerStartWork *data; + omObjData *object; - temp_r30 = playerStartObj[arg0]; - temp_r31 = OM_GET_WORK_PTR(temp_r30, PlayerStartWork); - return temp_r31->unk00_field1; + object = playerStartObj[player]; + data = OM_GET_WORK_PTR(object, PlayerStartWork); + return data->state; } static void ExecStartRoll(void) { s32 sp84[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; - s32 var_r29; - s32 var_r23; - s32 var_r22; - s32 var_r24; + s32 id; + s32 time; + s32 coinCount; + s32 j; s32 i; if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { @@ -652,11 +652,11 @@ static void ExecStartRoll(void) { HuPrcVSleep(); } _CheckFlag(FLAG_ID_MAKE(1, 11)); - var_r29 = startMesTbl[GWBoardGet()][0]; - BoardWinCreate(2, var_r29, BoardWinPortraitGetStar()); + id = startMesTbl[GWBoardGet()][0]; + BoardWinCreate(2, id, BoardWinPortraitGetStar()); BoardWinWait(); - var_r29 = startMesTbl[GWBoardGet()][1]; - BoardWinCreate(2, var_r29, BoardWinPortraitGetStar()); + id = startMesTbl[GWBoardGet()][1]; + BoardWinCreate(2, id, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); for (i = 0; i < 4; i++) { @@ -694,17 +694,17 @@ static void ExecStartRoll(void) { BoardTutorialHookExec(3, i); } else { if (i == 0) { - var_r29 = startMesTbl[GWBoardGet()][2]; + id = startMesTbl[GWBoardGet()][2]; } else { - var_r29 = playerOrderMesTbl[i - 1]; + id = playerOrderMesTbl[i - 1]; } - BoardWinCreate(0, var_r29, -1); + BoardWinCreate(0, id, -1); BoardWinInsertMesSet(BoardPlayerGetCharMess(i), i); BoardWinWait(); } BoardStatusShowSet(i, 1); SetPlayerStartState(playerOrderOld[i], 6); - BoardPlayerMotionShiftSet(i, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(i, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); HuPrcSleep(8); while (!BoardPlayerMotionEndCheck(i)) { HuPrcVSleep(); @@ -715,26 +715,26 @@ static void ExecStartRoll(void) { BoardPlayerIdleSet(i); } if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { - var_r29 = startMesTbl[GWBoardGet()][3]; - BoardWinCreate(2, var_r29, BoardWinPortraitGetStar()); + id = startMesTbl[GWBoardGet()][3]; + BoardWinCreate(2, id, BoardWinPortraitGetStar()); BoardWinWait(); HuPrcSleep(30); if (GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - var_r22 = 100; - var_r23 = 1; + coinCount = 100; + time = 1; } else { - var_r22 = 10; - var_r23 = 6; + coinCount = 10; + time = 6; } - for (i = 0; i < var_r22; i++) { - for (var_r24 = 0; var_r24 < 4; var_r24++) { - BoardPlayerCoinsAdd(var_r24, 1); + for (i = 0; i < coinCount; i++) { + for (j = 0; j < 4; j++) { + BoardPlayerCoinsAdd(j, 1); } HuAudFXPlay(7); - HuPrcSleep(var_r23); + HuPrcSleep(time); } for (i = 0; i < 4; i++) { - BoardPlayerMotionShiftSet(i, 7, 0.0f, 8.0f, 0); + BoardPlayerMotionShiftSet(i, 7, 0.0f, 8.0f, HU3D_MOTATTR_NONE); } HuAudFXPlay(0xF); while (1) { @@ -748,16 +748,16 @@ static void ExecStartRoll(void) { for (i = 0; i < 4; i++) { BoardPlayerIdleSet(i); } - var_r29 = startMesTbl[GWBoardGet()][4]; - BoardWinCreate(2, var_r29, BoardWinPortraitGetStar()); + id = startMesTbl[GWBoardGet()][4]; + BoardWinCreate(2, id, BoardWinPortraitGetStar()); BoardWinWait(); BoardWinKill(); } } static void InitCamera(void) { - Vec sp14; - Vec sp8; + Vec offset; + Vec rotTarget; camStartFocusPos.x = 0.0f; camStartFocusPos.y = 100.0f; @@ -787,101 +787,101 @@ static void InitCamera(void) { camStartFocusPos.x -= 150.0f; break; } - camFocus = BoardModelCreate(0x7000A, NULL, 0); + camFocus = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), NULL, 0); BoardModelVisibilitySet(camFocus, 0); BoardModelPosSetV(camFocus, &camStartFocusPos); if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardCameraMoveSet(0); - sp14.x = spacePos.x + 150.0f; - sp14.y = spacePos.y + 100.0f; - sp14.z = spacePos.z + 150.0f; - BoardModelPosSetV(camFocus, &sp14); - sp8.x = -22.0f; - sp8.y = 0.0f; - sp8.z = 0.0f; - sp14.x = sp14.y = sp14.z = 0.0f; - BoardCameraMotionStartEx(camFocus, &sp8, NULL, 1500.0f, -1.0f, 1); + offset.x = spacePos.x + 150.0f; + offset.y = spacePos.y + 100.0f; + offset.z = spacePos.z + 150.0f; + BoardModelPosSetV(camFocus, &offset); + rotTarget.x = -22.0f; + rotTarget.y = 0.0f; + rotTarget.z = 0.0f; + offset.x = offset.y = offset.z = 0.0f; + BoardCameraMotionStartEx(camFocus, &rotTarget, NULL, 1500.0f, -1.0f, 1); BoardCameraMotionWait(); BoardCameraMoveSet(1); } else { - sp14.x = 0.0f; - sp14.y = 0.0f; - sp14.z = 0.0f; - sp8.x = -70.0f; - sp8.y = 0.0f; - sp8.z = 0.0f; + offset.x = 0.0f; + offset.y = 0.0f; + offset.z = 0.0f; + rotTarget.x = -70.0f; + rotTarget.y = 0.0f; + rotTarget.z = 0.0f; BoardCameraMoveSet(0); - BoardCameraMotionStartEx(camFocus, &sp8, &sp14, 14000.0f, -1.0f, 1); + BoardCameraMotionStartEx(camFocus, &rotTarget, &offset, 14000.0f, -1.0f, 1); BoardCameraMotionWait(); BoardCameraMoveSet(1); } } static void InitHost(void) { - Vec sp8; + Vec newPos; if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { hostMdl = BoardStarHostMdlGet(); - sp8.x = spacePos.x + 150.0f; - sp8.y = spacePos.y; - sp8.z = spacePos.z - 50.0f; - BoardModelPosSetV(hostMdl, &sp8); + newPos.x = spacePos.x + 150.0f; + newPos.y = spacePos.y; + newPos.z = spacePos.z - 50.0f; + BoardModelPosSetV(hostMdl, &newPos); BoardModelVisibilitySet(hostMdl, 1); BoardModelMotionStart(hostMdl, 1, 0x40000001); } } static void CreateTapWin(void) { - float sp8[2]; - float var_f31; - float var_f30; - s32 var_r31; + float dimensions[2]; + float x; + float y; + s32 id; if (!_CheckFlag(FLAG_ID_MAKE(1, 11))) { - var_r31 = 0x120014; - HuWinMesMaxSizeGet(1, sp8, var_r31); - var_f31 = -10000.0f; - var_f30 = 368.0f; - tapWin = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0); + id = MAKE_MESSID(0x12, 0x14); + HuWinMesMaxSizeGet(1, dimensions, id); + x = -10000.0f; + y = 368.0f; + tapWin = HuWinCreate(x, y, dimensions[0], dimensions[1], 0); HuWinBGTPLvlSet(tapWin, 0.0f); HuWinMesSpeedSet(tapWin, 0); - HuWinMesSet(tapWin, var_r31); + HuWinMesSet(tapWin, id); HuWinDispOff(tapWin); } } static void OrderPlayers(void) { - s32 temp_r29; - PlayerConfig *temp_r28; - PlayerState *temp_r27; + s32 pOrderTemp; + PlayerConfig *playerCfg; + PlayerState *state; s32 i; s32 j; - temp_r28 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(GWPlayerCfg), MEMORY_DEFAULT_NUM); - temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(GWPlayer), MEMORY_DEFAULT_NUM); + playerCfg = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(GWPlayerCfg), MEMORY_DEFAULT_NUM); + state = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(GWPlayer), MEMORY_DEFAULT_NUM); for (i = 0; i < 4; i++) { playerOrderOld[i] = i; - memcpy(temp_r28 + i, &GWPlayerCfg[i], sizeof(PlayerConfig)); - memcpy(temp_r27 + i, &GWPlayer[i], sizeof(PlayerState)); + memcpy(playerCfg + i, &GWPlayerCfg[i], sizeof(PlayerConfig)); + memcpy(state + i, &GWPlayer[i], sizeof(PlayerState)); } for (i = 0; i < 3; i++) { for (j = 3; j > i; j--) { if (playerOrderNew[j - 1] < playerOrderNew[j]) { - temp_r29 = playerOrderNew[j]; + pOrderTemp = playerOrderNew[j]; playerOrderNew[j] = playerOrderNew[j - 1]; - playerOrderNew[j - 1] = temp_r29; - temp_r29 = playerOrderOld[j]; + playerOrderNew[j - 1] = pOrderTemp; + pOrderTemp = playerOrderOld[j]; playerOrderOld[j] = playerOrderOld[j - 1]; - playerOrderOld[j - 1] = temp_r29; + playerOrderOld[j - 1] = pOrderTemp; } } } for (i = 0; i < 4; i++) { - memcpy(&GWPlayerCfg[i], temp_r28 + playerOrderOld[i], sizeof(PlayerConfig)); - memcpy(&GWPlayer[i], temp_r27 + playerOrderOld[i], sizeof(PlayerState)); + memcpy(&GWPlayerCfg[i], playerCfg + playerOrderOld[i], sizeof(PlayerConfig)); + memcpy(&GWPlayer[i], state + playerOrderOld[i], sizeof(PlayerState)); GWPlayer[i].port = GWPlayerCfg[i].pad_idx; GWPlayerCfg[i].pad_idx = GWPlayerCfg[i].pad_idx; } - HuMemDirectFree(temp_r28); - HuMemDirectFree(temp_r27); + HuMemDirectFree(playerCfg); + HuMemDirectFree(state); } diff --git a/src/game/board/ui.c b/src/game/board/ui.c index 6fc886b5..ff2a9066 100755 --- a/src/game/board/ui.c +++ b/src/game/board/ui.c @@ -17,6 +17,7 @@ #include "game/board/model.h" #include "game/board/player.h" #include "game/board/tutorial.h" +#include "game/disp.h" #include "ext_math.h" @@ -164,17 +165,17 @@ static s16 yourTurnSprGrp = -1; static UnkUiStatusStruct uiStatus[4] = { 0 }; static s32 statusSprTbl[11] = { - 0x00070027, - 0x00070026, - 0x00070029, - 0x00070028, - 0x00070028, - 0x00070028, - 0x0007002D, - 0x00070028, - 0x00070028, - 0x00070028, - 0x0007002C + 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] = { @@ -189,9 +190,9 @@ static float statusHideOfsTbl[4] = { static float statusPosTbl[4][2] = { { 114.0f, 84.0f }, - { 462.0f, 84.0f }, - { 114.0f, 396.0f }, - { 462.0f, 396.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] = { @@ -231,43 +232,43 @@ static float statusItemPosTbl[6][2] = { }; static s32 itemMdlTbl[14] = { - 0x00070083, - 0x00070084, - 0x00070085, - 0x00070086, - 0x00070087, - 0x00070088, - 0x00070089, - 0x0007008A, - 0x0007008B, - 0x0007008C, - 0x0007008D, - 0x0007008E, - 0x0007008F, - 0x00070090 + 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] = { - { 190.0f, 116.0f, 0.0f }, - { 386.0f, 116.0f, 0.0f } + { HU_DISP_CENTERX-98, 116.0f, 0.0f }, + { HU_DISP_CENTERX+98, 116.0f, 0.0f } }; s32 BoardItemModelGet(s32 arg0) { s32 sp8[14] = { - 0x0007006D, - 0x0007006E, - 0x0007006F, - 0x00070070, - 0x00070071, - 0x00070072, - 0x00070073, - 0x00070074, - 0x00070076, - 0x00070077, - 0x00070078, - 0x00070079, - 0x0007007A, - 0x0007007B + 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]; @@ -275,21 +276,21 @@ s32 BoardItemModelGet(s32 arg0) { s32 BoardItemNameGet(s32 arg0) { s32 sp8[15] = { - 0x00120000, - 0x00120001, - 0x00120002, - 0x00120003, - 0x00120004, - 0x00120005, - 0x00120006, - 0x00120007, - 0x00120008, - 0x00120009, - 0x0012000A, - 0x0012000B, - 0x0012000C, - 0x0012000D, - 0x0012000E + 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]; @@ -427,10 +428,10 @@ void BoardStatusHammerCreate(s32 arg0) { case 0: return; case 2: - var_r30 = 0x70093; + var_r30 = DATA_MAKE_NUM(DATADIR_BOARD, 0x93); break; case 1: - var_r30 = 0x70092; + var_r30 = DATA_MAKE_NUM(DATADIR_BOARD, 0x92); break; } if (!temp_r31->unk00_bit6) { @@ -452,10 +453,10 @@ void BoardStatusHammerShowSet(s32 arg0, s32 arg1) { if (temp_r31->unk00_bit6) { if (arg1 != 0) { - HuSprAttrSet(temp_r31->unk02, 0x10, 2); + HuSprAttrSet(temp_r31->unk02, 0x10, HUSPR_ATTR_LOOP); } else { - HuSprAttrReset(temp_r31->unk02, 0x10, 2); - HuSprAttrSet(temp_r31->unk02, 0x10, 1); + HuSprAttrReset(temp_r31->unk02, 0x10, HUSPR_ATTR_LOOP); + HuSprAttrSet(temp_r31->unk02, 0x10, HUSPR_ATTR_NOANIM); } } } @@ -524,14 +525,14 @@ static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1) { s32 temp_r27; s16 temp_r26; s32 spC[] = { - 0x0007002E, - 0x0007002F, - 0x00070030, - 0x00070031, - 0x00070032, - 0x00070033, - 0x00070034, - 0x00070035 + 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; @@ -559,14 +560,14 @@ static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1) { var_f31 = statusSprPosTbl[11][0]; var_f30 = statusSprPosTbl[11][1]; HuSprPosSet(arg1->unk02, 11, var_f31, var_f30); - BoardSpriteCreate(0x7002A, 0x5DC, NULL, &sp8); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x2A), 0x5DC, NULL, &sp8); HuSprGrpMemberSet(arg1->unk02, 0xC, sp8); var_f31 = statusSprPosTbl[12][0]; var_f30 = statusSprPosTbl[12][1]; HuSprPosSet(arg1->unk02, 12, var_f31, var_f30); HuSprAttrSet(arg1->unk02, 0xC, 8); for (i = 0; i < 3; i++) { - BoardSpriteCreate(0x70091, 0x5DC, NULL, &sp8); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x91), 0x5DC, NULL, &sp8); HuSprGrpMemberSet(arg1->unk02, i + 0xD, sp8); HuSprAttrSet(arg1->unk02, i + 0xD, 1); HuSprAttrSet(arg1->unk02, i + 0xD, 8); @@ -617,15 +618,15 @@ static s32 UpdateBoardStatus(void) { temp_r27 = GWPlayer[i].items[j]; if (temp_r27 != -1 && temp_r31->unk00_bit5) { UpdateStatusItem(temp_r31, j, temp_r27); - HuSprAttrReset(temp_r31->unk02, j + 0xD, 4); + HuSprAttrReset(temp_r31->unk02, j + 0xD, HUSPR_ATTR_DISPOFF); } else { - HuSprAttrSet(temp_r31->unk02, j + 0xD, 4); + HuSprAttrSet(temp_r31->unk02, j + 0xD, HUSPR_ATTR_DISPOFF); } } if (GWPlayer[i].com) { - HuSprAttrReset(temp_r31->unk02, 0xC, 4); + HuSprAttrReset(temp_r31->unk02, 0xC, HUSPR_ATTR_DISPOFF); } else { - HuSprAttrSet(temp_r31->unk02, 0xC, 4); + HuSprAttrSet(temp_r31->unk02, 0xC, HUSPR_ATTR_DISPOFF); } temp_r28 = statusColTbl[GWPlayer[i].color]; HuSprColorSet(temp_r31->unk02, 0, temp_r28[0], temp_r28[1], temp_r28[2]); @@ -650,15 +651,15 @@ static void MoveBoardStatus(s32 arg0) { float var_f30; Vec spC; - PSVECSubtract(&temp_r30->unk10, &temp_r30->unk04, &spC); + VECSubtract(&temp_r30->unk10, &temp_r30->unk04, &spC); if (ABS(spC.x) < 1.0f && ABS(spC.y) < 1.0f) { spC = temp_r30->unk10; temp_r30->unk00_bit2 = 0; } else { OSs8tof32(&temp_r30->unk01, &var_f30); var_f30 /= 32; - PSVECScale(&spC, &spC, var_f30); - PSVECAdd(&temp_r30->unk04, &spC, &spC); + VECScale(&spC, &spC, var_f30); + VECAdd(&temp_r30->unk04, &spC, &spC); temp_r30->unk00_bit2 = 1; } temp_r30->unk04.x = spC.x; @@ -684,7 +685,7 @@ void BoardSpriteDigitUpdate(s16 arg0, s16 arg1, s32 arg2) { } else { HuSprBankSet(arg0, arg1 + 1, temp_r28); HuSprBankSet(arg0, arg1, temp_r27); - HuSprAttrReset(arg0, arg1, 4); + HuSprAttrReset(arg0, arg1, HUSPR_ATTR_DISPOFF); } } @@ -704,14 +705,14 @@ void BoardPickerCreate(s32 arg0, s8 arg1, void *arg2, s8 arg3) { s32 temp_r28; s16 sp12; s32 sp14[] = { - 0x0007001E, - 0x0007001F, - 0x00070020, - 0x00070021, - 0x00070022, - 0x00070023, - 0x00070024, - 0x00070025 + 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; @@ -833,15 +834,15 @@ static void MovePicker(UnkUiWork01 *arg0, omObjData *arg1) { sp14.x = arg1->trans.x; sp14.y = arg1->trans.y; sp14.z = arg1->trans.z; - PSVECSubtract(&sp8, &sp14, &sp8); - if (PSVECMag(&sp8) < 1.0f) { + VECSubtract(&sp8, &sp14, &sp8); + if (VECMag(&sp8) < 1.0f) { arg1->trans.x = arg1->rot.x; arg1->trans.y = arg1->rot.y; arg1->trans.z = arg1->rot.z; arg0->unk00_bit6 = 0; } else { - PSVECScale(&sp8, &sp8, temp_f31); - PSVECAdd(&sp14, &sp8, &sp8); + VECScale(&sp8, &sp8, temp_f31); + VECAdd(&sp14, &sp8, &sp8); arg1->trans.x = sp8.x; arg1->trans.y = sp8.y; arg1->trans.z = sp8.z; @@ -899,14 +900,14 @@ void BoardYourTurnExec(s32 arg0) { s32 temp_r29; UnkUiWork02 *temp_r31; s32 sp8[] = { - 0x00070043, - 0x00070044, - 0x00070045, - 0x00070046, - 0x00070047, - 0x00070048, - 0x00070049, - 0x0007004A + 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; @@ -923,7 +924,7 @@ void BoardYourTurnExec(s32 arg0) { HuSprAttrSet(yourTurnSprGrp, 0, 1); HuSprScaleSet(yourTurnSprGrp, 0, 0.001f, 0.001f); HuSprAttrSet(yourTurnSprGrp, 0, 8); - HuSprGrpPosSet(yourTurnSprGrp, 288.0f, 240.0f); + HuSprGrpPosSet(yourTurnSprGrp, HU_DISP_CENTERX, HU_DISP_CENTERY); HuAudFXPlay(0x307); while (yourTurnObj) { HuPrcVSleep(); @@ -1086,10 +1087,10 @@ static void ItemUseProc(void) { itemTeamF = 0; BoardFilterFadeOut(0x1E); if (itemUsed == 0xA) { - var_r27 = 0x40000; + var_r27 = DATADIR_BKOOPASUIT; } if (itemUsed == 0xB) { - var_r27 = 0x90000; + var_r27 = DATADIR_BYOKODORI; } if (var_r27 != -1) { var_r24 = BoardDataDirReadAsync(var_r27); @@ -1177,8 +1178,8 @@ static void DestroyItemUse(void) { for (i = 0; i < 4; i++) { GWPlayer[i].show_next = 1; } - HuDataDirClose(0x40000); - HuDataDirClose(0x90000); + HuDataDirClose(DATADIR_BKOOPASUIT); + HuDataDirClose(DATADIR_BYOKODORI); itemUseProc = NULL; } @@ -1444,7 +1445,7 @@ static void MakeItemPickSpace(UnkUiWork03 *arg0) { } for (i = 0; i < 4; i++) { for (j = 0; j < 6; j++) { - PSVECSubtract(&(temp_r28 + 4)[i][j], &temp_r28[i][j], &sp8); + VECSubtract(&(temp_r28 + 4)[i][j], &temp_r28[i][j], &sp8); if (ABS(sp8.x) < 1.0f && ABS(sp8.y) < 1.0f) { sp8 = (temp_r28 + 4)[i][j]; if (arg0->unk00_bit1 && arg0->unk03 == 0) { @@ -1452,8 +1453,8 @@ static void MakeItemPickSpace(UnkUiWork03 *arg0) { } } else { var_f29 = 0.3f; - PSVECScale(&sp8, &sp8, var_f29); - PSVECAdd(&temp_r28[i][j], &sp8, &sp8); + VECScale(&sp8, &sp8, var_f29); + VECAdd(&temp_r28[i][j], &sp8, &sp8); } temp_r28[i][j].x = sp8.x; temp_r28[i][j].y = sp8.y; @@ -1476,9 +1477,9 @@ static void SetItemUIStatus(s32 arg0) { var_f31 = statusPosTbl[i][0]; var_f30 = statusPosTbl[i][1]; for (j = 0; j < 6; j++) { - (temp_r28 + 4)[i][j].x = statusSprPosTbl[j + 0xB][0]; - (temp_r28 + 4)[i][j].y = statusSprPosTbl[j + 0xB][1]; - if (j + 0xB >= 0xD && j + 0xB <= 0xF) { + (temp_r28 + 4)[i][j].x = statusSprPosTbl[j + 11][0]; + (temp_r28 + 4)[i][j].y = statusSprPosTbl[j + 11][1]; + if (j + 11 >= 13 && j + 11 <= 15) { (temp_r28 + 4)[i][j].x += var_f31; (temp_r28 + 4)[i][j].y += var_f30; } @@ -1513,7 +1514,7 @@ void BoardItemGetDestPos(s32 arg0, Vec *arg1) { spC.y = statusPosTbl[arg0][1]; spC.z = 0.0f; for (i = 0; i < 3; i++) { - PSVECAdd((Vec*) &statusItemPosTbl[i + 2], &spC, &arg1[i]); + VECAdd((Vec*) &statusItemPosTbl[i + 2], &spC, &arg1[i]); } } @@ -1536,7 +1537,7 @@ static void ItemGetPos(s32 arg0, Vec *arg1) { } spC.z = 0.0f; for (i = 0; i < 3; i++) { - PSVECAdd((Vec*) statusItemPosTbl[i + 2], &spC, &arg1[i]); + VECAdd((Vec*) statusItemPosTbl[i + 2], &spC, &arg1[i]); } } @@ -1565,7 +1566,7 @@ void BoardItemStatusKill(s32 arg0) { } sp8.z = 0.0f; for (i = 0; i < 3; i++) { - PSVECAdd((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]); @@ -1615,8 +1616,8 @@ static void UpdateItemPickGfx(omObjData *arg0) { if (!temp_r30->unk00_bit7) { temp_r30->unk00_bit3 = 1; HuSprBankSet(temp_r30->unk04, 0, 1); - HuSprAttrSet(temp_r30->unk04, 0, 2); - HuSprAttrReset(temp_r30->unk04, 0, 1); + HuSprAttrSet(temp_r30->unk04, 0, HUSPR_ATTR_LOOP); + HuSprAttrReset(temp_r30->unk04, 0, HUSPR_ATTR_NOANIM); arg0->func = UpdateItemPickup; HuWinDispOff(temp_r30->unk06); } else { @@ -1731,13 +1732,13 @@ static void UpdateItemPickup(omObjData *arg0) { Hu3D3Dto2D(&sp2C, 1, &sp2C); sp20.x = arg0->trans.x; sp20.y = arg0->trans.y; - PSVECSubtract(&sp2C, &sp20, &sp14); + VECSubtract(&sp2C, &sp20, &sp14); if (ABS(sp14.x) < 1.0f && ABS(sp14.y) < 1.0f) { HuSprAttrSet(temp_r31->unk04, 0, 4); temp_r31->unk00_bit3 = 6; } else { - PSVECScale(&sp14, &sp14, 0.1f); - PSVECAdd(&sp20, &sp14, &sp50); + VECScale(&sp14, &sp14, 0.1f); + VECAdd(&sp20, &sp14, &sp50); sp50.z = 3200.0f; arg0->trans.x = sp50.x; arg0->trans.y = sp50.y; @@ -1815,8 +1816,8 @@ static void CreateItemWindow(s32 arg0, s32 arg1) { = temp_r31->unk06[i] = temp_r31->unk00[i] = -1; } else { temp_r31->unk00[i] = temp_r28; - temp_r31->unk74[i].x = i * 576.0f + 36.0f; - temp_r31->unk74[i].y = var_f30 + 240.0f; + temp_r31->unk74[i].x = i * HU_DISP_WIDTHF + 36.0f; + temp_r31->unk74[i].y = var_f30 + HU_DISP_CENTERY; temp_r31->unk74[i].z = 0.0f; temp_r31->unk2C[i] = temp_r31->unk74[i]; temp_r31->unk12[i] = HuWinCreate(temp_r31->unk2C[i].x, temp_r31->unk2C[i].y, 0x1F8, 0x60, 0); @@ -1824,11 +1825,11 @@ static void CreateItemWindow(s32 arg0, s32 arg1) { HuWinCenterPosSet(temp_r31->unk12[i], 0.0f, 48.0f); HuWinMesSpeedSet(temp_r31->unk12[i], 0); HuWinMesSet(temp_r31->unk12[i], BoardItemNameGet(temp_r28)); - HuWinMesMaxSizeGet(1, sp8, temp_r28 + 0x8000E); + HuWinMesMaxSizeGet(1, sp8, temp_r28 + MAKE_MESSID(0x08, 0x0E)); temp_r31->unk1E[i] = HuWinCreate(temp_r31->unk2C[i].x, temp_r31->unk2C[i].y - (-94.0f), sp8[0], sp8[1], 0); HuWinDrawNoSet(temp_r31->unk1E[i], 0x40); HuWinMesSpeedSet(temp_r31->unk1E[i], 0); - HuWinMesSet(temp_r31->unk1E[i], temp_r28 + 0x8000E); + HuWinMesSet(temp_r31->unk1E[i], temp_r28 + MAKE_MESSID(0x08, 0x0E)); sp10.x = temp_r31->unk2C[i].x + 48.0f; sp10.y = temp_r31->unk2C[i].y; sp10.z = 400.0f; @@ -1917,12 +1918,12 @@ static void UpdateItemWindow(omObjData *arg0) { var_r27 = 0; for (i = 0; i < temp_r29->unk02; i++) { if ((temp_r31->unk06[i] != -1) && (temp_r31->unk12[i] != -1)) { - PSVECSubtract(&temp_r31->unk74[i], &temp_r31->unk2C[i], &sp20); - if (PSVECMag(&sp20) <= 1.0f) { + VECSubtract(&temp_r31->unk74[i], &temp_r31->unk2C[i], &sp20); + if (VECMag(&sp20) <= 1.0f) { temp_r31->unk2C[i] = temp_r31->unk74[i]; } else { - PSVECScale(&sp20, &sp20, 0.3f); - PSVECAdd(&sp20, &temp_r31->unk2C[i], &temp_r31->unk2C[i]); + VECScale(&sp20, &sp20, 0.3f); + VECAdd(&sp20, &temp_r31->unk2C[i], &temp_r31->unk2C[i]); var_r27 = 1; } HuWinPosSet(temp_r31->unk12[i], temp_r31->unk2C[i].x, temp_r31->unk2C[i].y); @@ -1950,28 +1951,32 @@ static void UpdateItemWindow(omObjData *arg0) { static void CreatePickerWindow(UnkUiWork01 *arg0, s32 arg1) { float spC[2]; - float var_f31; - float var_f30; - float var_f29; + + float posX; + float posY; + float yOfs; s32 var_r30; - + #if VERSION_NTSC switch (GWGameStat.language) { case 1: - var_f31 = 0.0f; + yOfs = 0.0f; break; case 0: - var_f31 = 0.0f; + yOfs = 0.0f; break; } + #else + yOfs = 0; + #endif if (arg1 != 0) { - var_r30 = 0x10001A; + var_r30 = MAKE_MESSID(0x10, 0x1A); } else { - var_r30 = 0x10001B; + var_r30 = MAKE_MESSID(0x10, 0x1B); } HuWinMesMaxSizeGet(1, spC, var_r30); - var_f30 = -10000.0f; - var_f29 = var_f31 + 352.0f; - arg0->unk06 = HuWinCreate(var_f30, var_f29, spC[0], spC[1], 0); + posX = -10000.0f; + 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); HuWinMesSet(arg0->unk06, var_r30); diff --git a/src/game/board/view.c b/src/game/board/view.c index a22e11d9..38a6157c 100755 --- a/src/game/board/view.c +++ b/src/game/board/view.c @@ -7,12 +7,16 @@ #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" #include "game/board/player.h" #include "game/board/space.h" #include "game/board/ui.h" +#include "ext_math.h" + typedef struct { struct { u8 unk00_field0 : 1; @@ -52,10 +56,10 @@ static s16 focusMdl = -1; static float overhead2DPos[][2] = { { 48.0f, 72.0f }, - { 528.0f, 72.0f }, - { 48.0f, 408.0f }, - { 528.0f, 408.0f }, - { 288.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[] = { @@ -245,11 +249,11 @@ static void ExecMapView(void) { if (sp9 != 0 || sp8 != 0) { OSs8tof32(&sp9, &spC.x); OSs8tof32(&sp8, &spC.z); - temp_f28 = 180.0 * (atan2(spC.x, -spC.z) / M_PI); - spC.x = var_f29 * sin(temp_f28 * M_PI / 180.0); - spC.z = var_f29 * cos(temp_f28 * M_PI / 180.0); + temp_f28 = atan2d(spC.x, -spC.z); + spC.x = var_f29 * sind(temp_f28); + spC.z = var_f29 * cosd(temp_f28); } - PSVECAdd(&spC, &focusPos, &focusPos); + VECAdd(&spC, &focusPos, &focusPos); if (focusPos.x < temp_f26) { focusPos.x = temp_f26; } @@ -277,7 +281,7 @@ static void ExecStarView(void) { SetTargetView(); do { OSu16tof32(&focusTimer, &temp_f30); - PSVECSubtract(&focusPosTarget, &focusPos, &sp8); + VECSubtract(&focusPosTarget, &focusPos, &sp8); sp8.x /= temp_f30; sp8.y /= temp_f30; sp8.z /= temp_f30; @@ -287,7 +291,7 @@ static void ExecStarView(void) { } focusDestroyF = 0; while (focusTimer != 0) { - PSVECAdd(&sp8, &focusPos, &focusPos); + VECAdd(&sp8, &focusPos, &focusPos); BoardModelPosSetV(focusMdl, &focusPos); HuPrcVSleep(); focusTimer--; @@ -356,7 +360,7 @@ static void SetTargetView(void) { Vec sp8; BoardCameraBackup(); - focusMdl = BoardModelCreate(0x7000A, 0, 0); + focusMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x0A), 0, 0); BoardModelVisibilitySet(focusMdl, 0); BoardModelPosSetV(focusMdl, &focusPos); BoardCameraNearFarSet(10.0f, 30000.0f); @@ -394,20 +398,32 @@ static void DestroyFocus(void) { static void CreateButtonWin(void) { float sp8[2]; - float var_f31; - float var_f30; + float posX; + float posY; s32 var_r31; if (viewControls != 2) { - var_r31 = 0x90005; - var_f31 = 286.0f; + var_r31 = MAKE_MESSID(0x09, 0x05); + #if VERSION_PAL + HuWinMesMaxSizeGet(1, sp8, var_r31); + posX = 288-((sp8[0]/2)-32); + #endif + posY = 286.0f; } else { - var_r31 = 0x10004D; - var_f31 = 328.0f; + var_r31 = MAKE_MESSID(0x10, 0x4D); + #if VERSION_PAL + posX = -10000.0f; + posY = 324.0f; + #else + posY = 328.0f; + #endif + } HuWinMesMaxSizeGet(1, sp8, var_r31); - var_f30 = -10000.0f; - buttonWin = HuWinCreate(var_f30, var_f31, sp8[0], sp8[1], 0); + #if VERSION_NTSC + posX = -10000.0f; + #endif + buttonWin = HuWinCreate(posX, posY, sp8[0], sp8[1], 0); HuWinBGTPLvlSet(buttonWin, 0.0f); HuWinMesSpeedSet(buttonWin, 0); HuWinMesSet(buttonWin, var_r31); @@ -429,14 +445,14 @@ static void InitOverheadView(void) { float *temp_r30; s32 i; s32 sp1C[8] = { - 0x0007002E, - 0x0007002F, - 0x00070030, - 0x00070031, - 0x00070032, - 0x00070033, - 0x00070034, - 0x00070035 + 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); @@ -459,13 +475,13 @@ static void InitOverheadView(void) { } else { GWCharColorGet(GWPlayer[i].character, &spA); } - BoardSpriteCreate(0x7006C, 0x1770, 0, &sp8); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x6C), 0x1770, 0, &sp8); HuSprGrpMemberSet(temp_r31->unk02, i + 4, sp8); HuSprPosSet(temp_r31->unk02, i + 4, temp_r30[0], temp_r30[1]); HuSprColorSet(temp_r31->unk02, i + 4, spA.r, spA.g, spA.b); } temp_r30 = overhead2DPos[4]; - temp_r31->unk04 = BoardModelCreate(0x70008, NULL, 0); + temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x08), NULL, 0); BoardModelMotionSpeedSet(temp_r31->unk04, 0.0f); BoardModelLayerSet(temp_r31->unk04, 6); BoardModelScaleSet(temp_r31->unk04, 0.4f, 0.4f, 0.4f); @@ -476,7 +492,7 @@ static void InitOverheadView(void) { spA.r = 0xF8; spA.g = 0xF0; spA.b = 0x80; - BoardSpriteCreate(0x7006C, 0x1770, 0, &sp8); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0x6C), 0x1770, 0, &sp8); HuSprGrpMemberSet(temp_r31->unk02, 8, sp8); HuSprPosSet(temp_r31->unk02, 8, temp_r30[0], temp_r30[1]); HuSprColorSet(temp_r31->unk02, 8, spA.r, spA.g, spA.b); @@ -534,7 +550,7 @@ static void UpdateOverheadView(omObjData *arg0) { } for (i = 0; i < 5; i++) { var_r29 = overhead2DPos[i]; - sp20.x = var_r29[0] - 288.0f; + sp20.x = var_r29[0] - HU_DISP_CENTERX; sp20.y = var_r29[1] - 240.0f; sp20.z = 1000.0f; if (i != 4) { @@ -545,12 +561,12 @@ static void UpdateOverheadView(omObjData *arg0) { BoardSpacePosGet(0, BoardSpaceStarGetCurr(), &sp14); } Hu3D3Dto2D(&sp14, 1, &sp14); - sp14.x -= 288.0f; + sp14.x -= HU_DISP_CENTERX; sp14.y -= 240.0f; - PSVECSubtract(&sp20, &sp14, &sp8); + VECSubtract(&sp20, &sp14, &sp8); sp8.z = 0.0f; - temp_f30 = BoardDAngleCalc(180.0 * (atan2(sp8.y, sp8.x) / M_PI) - 90.0); - temp_f31 = PSVECMag(&sp8) / 32; + temp_f30 = BoardDAngleCalc(atan2d(sp8.y, sp8.x) - 90.0); + temp_f31 = VECMag(&sp8) / 32; if (i != 4) { var_r28 = i + 4; } else { @@ -563,15 +579,15 @@ static void UpdateOverheadView(omObjData *arg0) { BoardModelVisibilitySet(temp_r31->unk04, 0); } else if (temp_r31->unk01 != 0) { if (i != 4) { - HuSprAttrReset(temp_r31->unk02, i, 4); + HuSprAttrReset(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF); } - HuSprAttrReset(temp_r31->unk02, var_r28, 4); + HuSprAttrReset(temp_r31->unk02, var_r28, HUSPR_ATTR_DISPOFF); BoardModelVisibilitySet(temp_r31->unk04, 1); } else { if (i != 4) { - HuSprAttrSet(temp_r31->unk02, i, 4); + HuSprAttrSet(temp_r31->unk02, i, HUSPR_ATTR_DISPOFF); } - HuSprAttrSet(temp_r31->unk02, var_r28, 4); + HuSprAttrSet(temp_r31->unk02, var_r28, HUSPR_ATTR_DISPOFF); BoardModelVisibilitySet(temp_r31->unk04, 0); } } diff --git a/src/game/board/warp.c b/src/game/board/warp.c index 24099ae8..c25a8511 100644 --- a/src/game/board/warp.c +++ b/src/game/board/warp.c @@ -10,7 +10,9 @@ #include "game/hsfdraw.h" #include "game/hsfex.h" #include "game/objsub.h" -#include "math.h" +#include "game/disp.h" + +#include "ext_math.h" static void WarpInit(s32); static void WarpLaunch(s32); @@ -212,8 +214,8 @@ static void WarpImpact(s32 player) { f32 angle; s16 i; - pos.x = 288.0f; - pos.y = 240.0f; + pos.x = HU_DISP_CENTERX; + pos.y = HU_DISP_CENTERY; pos.z = 700.0f; Hu3D2Dto3D(&pos, 1, &pos); BoardModelPosSetV(warpImpactMdl, &pos); @@ -232,7 +234,7 @@ static void WarpImpact(s32 player) { speed = 4.0f; for (angle = 0.0f, temp = angle; angle < 180.0f; angle += speed) { - temp_f30 = sin((M_PI * angle) / 180.0); + temp_f30 = sind(angle); BoardModelScaleSet(warpImpactMdl, 0.5f + temp_f30, 0.5f + temp_f30, 0.5f + temp_f30); HuPrcVSleep(); } @@ -243,4 +245,4 @@ static void WarpImpact(s32 player) { BoardPlayerIdleSet(warpImpactPlayer[i]); } warpState = 6; -} \ No newline at end of file +} diff --git a/src/game/board/window.c b/src/game/board/window.c index 1481738c..4fbc3f45 100644 --- a/src/game/board/window.c +++ b/src/game/board/window.c @@ -1,6 +1,8 @@ #include "game/board/window.h" #include "game/board/main.h" #include "game/board/player.h" +#include "game/disp.h" + #include "game/gamework_data.h" static s8 winChoice; @@ -82,9 +84,9 @@ static void ExecBoardWindow(void) { {432.0f, 96.0f}, }; f32 pos_all[7][2] = { - {96.0f, 328.0f}, {72.0f, 128.0f}, - {36.0f, 344.0f}, {128.0f, 312.0f}, - {144.0f, 144.0f}, {128.0f, 264.0f}, + {96.0f, HU_DISP_HEIGHT-152}, {72.0f, 128.0f}, + {36.0f, HU_DISP_HEIGHT-136}, {128.0f, HU_DISP_HEIGHT-168}, + {144.0f, HU_DISP_CENTERY-96 }, {128.0f, HU_DISP_HEIGHT-216}, {128.0f, 75.0f}, }; @@ -95,6 +97,11 @@ static void ExecBoardWindow(void) { if (size[0] <= size_win[0]) { size[0] = size_win[0]; pos[0] = pos_win[0]; + #if VERSION_PAL + if(winPosIdx == 1) { + size[0] += 4; + } + #endif } else { pos[0] = -10000.0f; } @@ -336,7 +343,7 @@ s32 BoardWinPortraitGetStar(void) { void BoardWinPlayerSet(s32 player) { s32 i; - + #if VERSION_NTSC if (player == -1) { if (GWPartyGet() != 1) { for (i = 0, disablePlayer = i; i < 4; i++) { @@ -352,6 +359,21 @@ void BoardWinPlayerSet(s32 player) { } else { disablePlayer = ~(1 << GWPlayer[player].port); } + #else + if (player == -1) { + if (GWPartyGet() != 1) { + for (i = 0, disablePlayer = i; i < 4; i++) { + if (GWPlayer[i].com != 0) { + disablePlayer |= 1 << GWPlayer[i].port; + } + } + } else { + disablePlayer = 0; + } + } else { + disablePlayer = ~(1 << GWPlayer[player].port); + } + #endif if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { disablePlayer = 0; } @@ -403,4 +425,9 @@ void BoardWinStartComKeySet(void) { void BoardWinComKeyFuncSet(BoardWinComKeyFunc func) { comKeyFunc = func; +} + +s16 BoardWinIDGet(void) +{ + return windowID; } \ No newline at end of file diff --git a/src/game/card.c b/src/game/card.c index 845bf3b0..97fdd32d 100644 --- a/src/game/card.c +++ b/src/game/card.c @@ -1,6 +1,7 @@ #include "dolphin.h" #include "game/memory.h" #include "game/card.h" +#include "version.h" static void *cardWork; u8 UnMountCnt; @@ -98,7 +99,11 @@ s32 HuCardFormat(s16 slot) static void MountCallBack(s32 chan, s32 result) { + #if VERSION_ENG UnMountCnt = (1 << chan); + #else + UnMountCnt |= (1 << chan); + #endif } s32 HuCardOpen(s16 slot, const char *fileName, CARDFileInfo *fileInfo) diff --git a/src/game/chrman.c b/src/game/chrman.c index c3d6f78e..b8ad92a3 100755 --- a/src/game/chrman.c +++ b/src/game/chrman.c @@ -83,12 +83,13 @@ static void OrbitEffect(HsfanimStruct01 *arg0); static void UpdateNpcEffect(void); static s32 PlayStepFX(s16 arg0, s16 arg1, u8 arg2); -static UnkCharInstanceStruct charInstance[8]; -static s16 effectMdl[8]; -static EffectParamData *particleData[8]; +static UnkCharInstanceStruct charInstance[CHARNO_MAX ]; +static s16 effectMdl[CHAR_EFFECT_AND_PARTICLE_MAX]; +static EffectParamData *particleData[CHAR_EFFECT_AND_PARTICLE_MAX]; static Process *itemHookProcess[32]; -static u16 lbl_801975B0[8]; -static u8 lbl_801975C0[0x90]; // Unused? +//holds normal characters 0-7, then more characters 8-14 +static u16 lbl_801975B0[CHARNO_MAX + CHAR_NPC_MAX]; +static u8 lbl_801975CE[0x82]; // Unused? static s32 skipAnimUpdate; static void *effectAMemP; @@ -100,181 +101,116 @@ static u8 lbl_801D3608[8] = { 0x0D, 0x00, 0x17, 0x69, 0x0D, 0x1E, 0x1D, 0x14 }; static u8 lbl_801D3610[8] = { 0x15, 0x1E, 0x16, 0x54, 0x0F, 0x62, 0x39, 0x0A }; static EffectData effectDataTbl[8] = { - { 0x00120006, 0x000A, 0x0000, 0x00000002 }, - { 0x00120005, 0x000A, 0x0000, 0x00000002 }, - { 0x00120002, 0x0096, 0x0001, 0x00000000 }, - { 0x00120003, 0x0046, 0x0000, 0x00000000 }, - { 0x00120000, 0x012C, 0x0001, 0x00000000 }, - { 0x00120001, 0x012C, 0x0001, 0x00000000 }, - { 0x00120004, 0x00C8, 0x0001, 0x00000000 }, - { 0x00120007, 0x000C, 0x0000, 0x00000002 } + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x06), 0x000A, 0x0000, 0x00000002 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x05), 0x000A, 0x0000, 0x00000002 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x02), 0x0096, 0x0001, 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), 0x0046, 0x0000, 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x00), 0x012C, 0x0001, 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x01), 0x012C, 0x0001, 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x04), 0x00C8, 0x0001, 0x00000000 }, + { DATA_MAKE_NUM(DATADIR_EFFECT, 0x07), 0x000C, 0x0000, 0x00000002 }, }; -static s32 charDirTbl[8][3] = { - { 0x005D0000, 0x005E0000, 0x005F0000 }, - { 0x00180000, 0x00190000, 0x001A0000 }, - { 0x006B0000, 0x006C0000, 0x006D0000 }, - { 0x00880000, 0x00890000, 0x008A0000 }, - { 0x00830000, 0x00840000, 0x00850000 }, - { 0x000F0000, 0x00100000, 0x00110000 }, - { 0x000B0000, 0x000C0000, 0x000D0000 }, - { 0x007F0000, 0x00800000, 0x00810000 } +static s32 charDirTbl[CHARNO_MAX ][3] = { + { DATADIR_MARIOMDL0, DATADIR_MARIOMDL1, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00) }, + { DATADIR_LUIGIMDL0, DATADIR_LUIGIMDL1, DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00) }, + { DATADIR_PEACHMDL0, DATADIR_PEACHMDL1, DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00) }, + { DATADIR_YOSHIMDL0, DATADIR_YOSHIMDL1, DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00) }, + { DATADIR_WARIOMDL0, DATADIR_WARIOMDL1, DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00) }, + { DATADIR_DONKEYMDL0, DATADIR_DONKEYMDL1, DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00) }, + { DATADIR_DAISYMDL0, DATADIR_DAISYMDL1, DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00) }, + { DATADIR_WALUIGIMDL0, DATADIR_WALUIGIMDL1, DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00) }, }; -static EffectParamData effectDustParam = { - 0, - 0x80, 0x80, 0x80, 0xFF, - 0x40, 0x20, 0x00, 0xFF, - { 0.0f, 2.0f, 1.0f }, - 0.95f, 0.95f, 0.95f, - 0.0f, - 0x00000000, - 1.0f, - -5.0f, - 0.02f -}; +static EffectParamData effectDustParam + = { 0, 0x80, 0x80, 0x80, 0xFF, 0x40, 0x20, 0x00, 0xFF, { 0.0f, 2.0f, 1.0f }, 0.95f, 0.95f, 0.95f, 0.0f, 0x00000000, 1.0f, -5.0f, 0.02f }; -static EffectParamData effectDotParam = { - 0, - 0xFF, 0x40, 0x40, 0x80, - 0xFF, 0x40, 0x40, 0x80, - { 0.0f, 0.0f, 0.0f }, - 0.0f, 0.0f, 0.0f, - 0.0f, - 0x00000000, - -5.0f, - 0.0f, - 0.0f -}; +static EffectParamData effectDotParam + = { 0, 0xFF, 0x40, 0x40, 0x80, 0xFF, 0x40, 0x40, 0x80, { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0.0f, 0.0f, 0x00000000, -5.0f, 0.0f, 0.0f }; -static EffectParamData effectStarParam = { - 0, - 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, - { 0.0f, 0.0f, 0.0f }, - 0.95f, 0.95f, 0.95f, - 0.0f, - 0x00000000, - -0.5f, - -10.0f, - 0.0f -}; +static EffectParamData effectStarParam + = { 0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, { 0.0f, 0.0f, 0.0f }, 0.95f, 0.95f, 0.95f, 0.0f, 0x00000000, -0.5f, -10.0f, 0.0f }; -static EffectParamData effectWarnParam = { - 0, - 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, - { 0.0f, 20.0f, 0.0f }, - 0.95f, 0.85f, 0.95f, - 0.0f, - 0x00000000, - 1.0f, - -5.0f, - 0.0f -}; +static EffectParamData effectWarnParam + = { 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, { 0.0f, 20.0f, 0.0f }, 0.95f, 0.85f, 0.95f, 0.0f, 0x00000000, 1.0f, -5.0f, 0.0f }; -static EffectParamData effectSmokeParam = { - 0, - 0x80, 0x20, 0x20, 0xFF, - 0x00, 0x00, 0x00, 0xFF, - { 0.0f, 10.0f, 0.0f }, - 1.0f, 0.95f, 1.0f, - 0.0f, - 0x00000000, - 5.0f, - -13.0f, - 0.1f -}; +static EffectParamData effectSmokeParam + = { 0, 0x80, 0x20, 0x20, 0xFF, 0x00, 0x00, 0x00, 0xFF, { 0.0f, 10.0f, 0.0f }, 1.0f, 0.95f, 1.0f, 0.0f, 0x00000000, 5.0f, -13.0f, 0.1f }; -static s8 lbl_801309A0[32] = { - 10, 32, -1, -1, - 20, 40, -1, -1, - 12, 37, -1, -1, - 4, 25, -1, -1, - 5, 30, -1, -1, - 16, 1, 24, 39, - 23, 50, -1, -1, - 19, 39, -1, -1 -}; +static s8 lbl_801309A0[32] + = { 10, 32, -1, -1, 20, 40, -1, -1, 12, 37, -1, -1, 4, 25, -1, -1, 5, 30, -1, -1, 16, 1, 24, 39, 23, 50, -1, -1, 19, 39, -1, -1 }; -static s8 lbl_801309C0[32] = { - 15, 29, -1, -1, - 5, 19, -1, -1, - 5, 22, -1, -1, - 12, 28, -1, -1, - 18, 35, -1, -1, - 1, 8, 12, -1, - 0, 16, -1, -1, - 12, 28, -1, -1 -}; +static s8 lbl_801309C0[32] + = { 15, 29, -1, -1, 5, 19, -1, -1, 5, 22, -1, -1, 12, 28, -1, -1, 18, 35, -1, -1, 1, 8, 12, -1, 0, 16, -1, -1, 12, 28, -1, -1 }; -static s8 lbl_801309E0[16] = { - 5, 7, 6, 9, - 10, 11, 9, -1, - 9, 11, 9, -1, - 8, -1, 10, -1 -}; +static s8 lbl_801309E0[16] = { 5, 7, 6, 9, 10, 11, 9, -1, 9, 11, 9, -1, 8, -1, 10, -1 }; -void CharManInit(void) { +void CharManInit(void) +{ UnkCharInstanceStruct *temp_r29; s16 i; s16 j; - for (i = 0; i < 8; i++) { + for (i = 0; i < CHARNO_MAX ; i++) { temp_r29 = &charInstance[i]; temp_r29->unkC0 = NULL; - for (j = 0; j < 32; j++) { + for (j = 0; j < ARRAY_COUNT(temp_r29->unk0C); j++) { temp_r29->unk0C[j] = -1; } temp_r29->unk00 = -1; temp_r29->unkC4 = NULL; } if (!effectAMemP) { - effectAMemP = (void*) HuAR_DVDtoARAM(0x120000); + effectAMemP = (void *)HuAR_DVDtoARAM(0x120000); } - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { effectMdl[i] = -1; particleData[i] = NULL; } - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(itemHookProcess); i++) { itemHookProcess[i] = NULL; } } -void *CharAMemPtrGet(s16 character) { +void *CharAMemPtrGet(s16 character) +{ return charInstance[character].unkC0; } -void CharARAMOpen(s16 character) { +void CharARAMOpen(s16 character) +{ UnkCharInstanceStruct *temp_r31; - if (character >= 8 || character < 0 || character == 0xFF) { + if (character >= CHARNO_MAX || character < 0 || character == 0xFF) { return; } temp_r31 = &charInstance[character]; if (!temp_r31->unkC0) { - temp_r31->unkC0 = (void*) HuAR_DVDtoARAM(charDirTbl[character][2]); + temp_r31->unkC0 = (void *)HuAR_DVDtoARAM(charDirTbl[character][2]); } } -void CharARAMClose(s16 character) { +void CharARAMClose(s16 character) +{ UnkCharInstanceStruct *temp_r31; temp_r31 = &charInstance[character]; if (temp_r31->unkC0) { - HuARFree((u32) temp_r31->unkC0); + HuARFree((u32)temp_r31->unkC0); temp_r31->unkC0 = NULL; } } -void CharKill(s16 character) { +void CharKill(s16 character) +{ s16 i; if (character == -1) { for (i = 0; i < 8; i++) { CharKill(i); } - } else { + } + else { HuDataDirClose(charDirTbl[character][0]); HuDataDirClose(charDirTbl[character][1]); HuDataDirClose(charDirTbl[character][2]); @@ -282,14 +218,16 @@ void CharKill(s16 character) { } } -void CharKillAll(void) { +void CharKillAll(void) +{ CharModelKill(-1); CharKill(-1); - HuARFree((u32) effectAMemP); + HuARFree((u32)effectAMemP); effectAMemP = NULL; } -s16 CharModelCreate(s16 character, s16 lod) { +s16 CharModelCreate(s16 character, s16 lod) +{ s16 sp8 = 0; UnkCharInstanceStruct *temp_r31; void *var_r26; @@ -303,11 +241,14 @@ s16 CharModelCreate(s16 character, s16 lod) { } if (lod & 1) { var_r29 = charDirTbl[character][0]; - } else if (lod & 2) { + } + else if (lod & 2) { var_r29 = charDirTbl[character][1]; - } else if (lod & 4) { + } + else if (lod & 4) { var_r29 = charDirTbl[character][1] | 1; - } else { + } + else { var_r29 = charDirTbl[character][1] | 2; } var_r26 = HuDataSelHeapReadNum(var_r29, MEMORY_DEFAULT_NUM, HEAP_DATA); @@ -322,7 +263,8 @@ s16 CharModelCreate(s16 character, s16 lod) { return var_r25; } -static void UpdateChar(void) { +static void UpdateChar(void) +{ Vec sp8; s16 *temp_r28; UnkCharInstanceStruct *temp_r31; @@ -345,7 +287,8 @@ static void UpdateChar(void) { temp_r31->unk04 = temp_r31->unk4C[i]; UpdateCharAnim(*temp_r28, temp_r31->unk00, temp_r31->unk4C[i], temp_r31->unk8C[i], temp_r29->unk_64, &sp8); temp_r31->unk08 = temp_r31->unk4C[i]; - } else { + } + else { temp_r31->unk04 = -1; } if (temp_r29->unk_0C != -1) { @@ -360,10 +303,12 @@ static void UpdateChar(void) { temp_r31->unk06 = temp_r31->unk4C[i]; UpdateCharAnim(*temp_r28, temp_r31->unk00, temp_r31->unk4C[i], temp_r31->unk8C[i], temp_r29->unk_84, &sp8); temp_r31->unk0A = temp_r31->unk4C[i]; - } else { + } + else { temp_r31->unk06 = -1; } - } else if (var_r27 != 0) { + } + else if (var_r27 != 0) { CharModelTexAnimSet(*temp_r28); var_r27 = 0; } @@ -372,7 +317,8 @@ static void UpdateChar(void) { } } -static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, Vec *arg5) { +static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, Vec *arg5) +{ Vec sp1C; Vec sp10; ModelData *temp_r30; @@ -481,7 +427,8 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, if (arg2 == 7) { Hu3DModelObjMtxGet(arg1, CharModelHookNameGet(character, temp_r29->unk02, 0), sp28); var_r20 = 10; - } else { + } + else { Hu3DModelObjMtxGet(arg1, CharModelHookNameGet(character, temp_r29->unk02, 1), sp28); var_r20 = 13; } @@ -494,7 +441,7 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, sp1C.y = sp28[1][3]; sp1C.z = sp28[2][3]; if (arg4 != 0) { - PSVECSubtract(&sp1C, arg5, &sp10); + VECSubtract(&sp1C, arg5, &sp10); var_r20 = 0.2 * sqrtf(sp10.x * sp10.x + sp10.y * sp10.y + sp10.z * sp10.z); if (var_r20 > 5) { var_r20 = 5; @@ -503,12 +450,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, var_r20 = 1; } for (i = 1; i <= var_r20; i++) { - sp10.x = arg5->x + (sp1C.x - arg5->x) * ((float) i / var_r20); - sp10.y = arg5->y + (sp1C.y - arg5->y) * ((float) i / var_r20); - sp10.z = arg5->z + (sp1C.z - arg5->z) * ((float) i / var_r20); + sp10.x = arg5->x + (sp1C.x - arg5->x) * ((float)i / var_r20); + sp10.y = arg5->y + (sp1C.y - arg5->y) * ((float)i / var_r20); + sp10.z = arg5->z + (sp1C.z - arg5->z) * ((float)i / var_r20); CreateEffectDot(arg1, sp10.x, sp10.y, sp10.z, 50.0f, &effectDotParam); } - } else { + } + else { CreateEffectDot(arg1, sp1C.x, sp1C.y, sp1C.z, 40.0f, &effectDotParam); } *arg5 = sp1C; @@ -521,13 +469,15 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x; effectStarParam.unk0C.y = 0.0f; effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x; - CreateEffectStar(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); + CreateEffectStar( + arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); } for (i = 0; i < 8; i++) { effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; - CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); + CreateEffectDust( + arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } } PlayCharVoice(character, 0x119, arg3); @@ -550,9 +500,11 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, var_r27->unk08.x = arg1; if (character == 7) { var_r27->unk08.y = 190.0f; - } else if (character == 2 || character == 5 || character == 6) { + } + else if (character == 2 || character == 5 || character == 6) { var_r27->unk08.y = 140.0f; - } else { + } + else { var_r27->unk08.y = 120.0f; } var_r27->unk14.x = var_r27->unk14.z = 0.0f; @@ -563,7 +515,8 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; - CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); + CreateEffectDust( + arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } } } @@ -584,9 +537,11 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, var_r27->unk08.x = arg1; if (character == 7) { var_r27->unk08.y = 150.0f; - } else if (character == 2 || character == 5 || character == 6) { + } + else if (character == 2 || character == 5 || character == 6) { var_r27->unk08.y = 120.0f; - } else { + } + else { var_r27->unk08.y = 100.0f; } var_r27->unk14.x = var_r27->unk14.z = 0.0f; @@ -599,7 +554,8 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, if (!(temp_r29->unkAC & 1) && !(temp_r29->unkAC & 0x10)) { PlayCharVoice(character, 0x11A, arg3); for (i = 0; i < 3; i++) { - var_r19 = CreateEffectBird(arg1, temp_r30->pos.x, temp_r30->pos.y + 100.0f * temp_r30->scale.x, temp_r30->pos.z, 1.0f, &effectWarnParam); + var_r19 = CreateEffectBird( + arg1, temp_r30->pos.x, temp_r30->pos.y + 100.0f * temp_r30->scale.x, temp_r30->pos.z, 1.0f, &effectWarnParam); if (var_r19 == -1) { break; } @@ -627,9 +583,11 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, if (arg4 == 0) { if (temp_r29->unkB0 == 4) { PlayCharVoice(character, 0x10A, arg3); - } else if (temp_r29->unkB0 == 5) { + } + else if (temp_r29->unkB0 == 5) { PlayCharVoice(character, 0x10C, arg3); - } else { + } + else { PlayCharVoice(character, 0x115, arg3); } } @@ -680,7 +638,8 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, PlayCharVoice(character, 0x124, arg3); temp_r29->unkAC |= 2; var_r22 |= 2; - } else if (omcurovl >= OVL_W01 && arg4 == lbl_801D35F8[character]) { + } + else if (omcurovl >= OVL_W01 && arg4 == lbl_801D35F8[character]) { PlayCharVoice(character, 0x122, arg3); temp_r29->unkAC |= 2; var_r22 |= 2; @@ -721,7 +680,8 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, } } -static s32 PlayCharVoice(s16 character, s16 arg1, u8 arg2) { +static s32 PlayCharVoice(s16 character, s16 arg1, u8 arg2) +{ UnkCharInstanceStruct *temp_r31; ModelData *temp_r29; @@ -732,12 +692,14 @@ static s32 PlayCharVoice(s16 character, s16 arg1, u8 arg2) { } if (temp_r31->unkAC & 8) { return HuAudCharVoicePlayPos(character, arg1, &temp_r29->pos); - } else { + } + else { return HuAudCharVoicePlay(character, arg1); } } -static void InitEffect(void) { +static void InitEffect(void) +{ HsfanimStruct01 *var_r29; ParticleData *temp_r30; void *temp_r26; @@ -747,12 +709,12 @@ static void InitEffect(void) { s16 j; var_r27 = 0; - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { if (effectMdl[i] == -1) { temp_r26 = HuDataSelHeapReadNum(effectDataTbl[i].unk00, MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r25 = HuSprAnimRead(temp_r26); effectMdl[i] = Hu3DParticleCreate(temp_r25, effectDataTbl[i].unk04); - if (i == 7) { + if (i == CHAR_EFFECT_AND_PARTICLE_MAX - 1) { Hu3DParticleAnimModeSet(effectMdl[i], 0); } Hu3DParticleHookSet(effectMdl[i], UpdateEffect); @@ -772,11 +734,12 @@ static void InitEffect(void) { } } if (var_r27 != 0) { - HuDataDirClose(0x120000); + HuDataDirClose(DATADIR_EFFECT); } } -static s16 CreateEffectDust(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) { +static s16 CreateEffectDust(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) +{ ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; @@ -787,7 +750,8 @@ static s16 CreateEffectDust(s16 arg0, float arg1, float arg2, float arg3, float return CreateEffect(effectMdl[2], temp_r31->camera, arg1, arg2, arg3, arg4, arg5); } -static s16 CreateEffectSmoke(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) { +static s16 CreateEffectSmoke(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) +{ ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; @@ -798,7 +762,8 @@ static s16 CreateEffectSmoke(s16 arg0, float arg1, float arg2, float arg3, float return CreateEffect(effectMdl[3], temp_r31->camera, arg1, arg2, arg3, arg4, arg5); } -static s16 CreateEffectDot(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) { +static s16 CreateEffectDot(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) +{ ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; @@ -809,7 +774,8 @@ static s16 CreateEffectDot(s16 arg0, float arg1, float arg2, float arg3, float a return CreateEffect(effectMdl[6], temp_r31->camera, arg1, arg2, arg3, arg4, arg5); } -static s16 CreateEffectStar(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) { +static s16 CreateEffectStar(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) +{ ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; @@ -820,7 +786,8 @@ static s16 CreateEffectStar(s16 arg0, float arg1, float arg2, float arg3, float return CreateEffect(effectMdl[4], temp_r31->camera, arg1, arg2, arg3, arg4, arg5); } -static s16 CreateEffectWarn(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) { +static s16 CreateEffectWarn(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) +{ ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; @@ -831,7 +798,8 @@ static s16 CreateEffectWarn(s16 arg0, float arg1, float arg2, float arg3, float return CreateEffect(effectMdl[0], temp_r31->camera, arg1, arg2, arg3, arg4, arg5); } -static s16 CreateEffectBird(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) { +static s16 CreateEffectBird(s16 arg0, float arg1, float arg2, float arg3, float arg4, EffectParamData *arg5) +{ ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; @@ -842,7 +810,8 @@ static s16 CreateEffectBird(s16 arg0, float arg1, float arg2, float arg3, float return CreateEffect(effectMdl[7], temp_r31->camera, arg1, arg2, arg3, arg4, arg5); } -static s16 CreateEffect(s16 arg0, s16 arg1, float arg2, float arg3, float arg4, float arg5, EffectParamData *arg6) { +static s16 CreateEffect(s16 arg0, s16 arg1, float arg2, float arg3, float arg4, float arg5, EffectParamData *arg6) +{ ModelData *var_r28; ParticleData *temp_r30; EffectParamData *var_r27; @@ -882,13 +851,15 @@ static s16 CreateEffect(s16 arg0, s16 arg1, float arg2, float arg3, float arg4, var_r31->unk00 = 0; var_r31->unk02 = -1; temp_r30->unk_02 = i; - } else { + } + else { return -1; } return i; } -static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix) { +static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix) +{ EffectParamData *temp_r30; HsfanimStruct01 *var_r31; s16 var_r28; @@ -908,26 +879,29 @@ static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix) { var_r31->unk08.x *= temp_r30[i].unk18; var_r31->unk08.y *= temp_r30[i].unk1C; var_r31->unk08.z *= temp_r30[i].unk20; - PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); var_r31->unk08.y += temp_r30[i].unk24; var_r28 = var_r31->unk40.r + temp_r30[i].unk34 * (temp_r30[i].unk08 - temp_r30[i].unk04); if (var_r28 < 0) { var_r28 = 0; - } else if (var_r28 > 0xFF) { + } + else if (var_r28 > 0xFF) { var_r28 = 0xFF; } var_r31->unk40.r = var_r28; var_r28 = var_r31->unk40.g + temp_r30[i].unk34 * (temp_r30[i].unk09 - temp_r30[i].unk05); if (var_r28 < 0) { var_r28 = 0; - } else if (var_r28 > 0xFF) { + } + else if (var_r28 > 0xFF) { var_r28 = 0xFF; } var_r31->unk40.g = var_r28; var_r28 = var_r31->unk40.b + temp_r30[i].unk34 * (temp_r30[i].unk0A - temp_r30[i].unk06); if (var_r28 < 0) { var_r28 = 0; - } else if (var_r28 > 0xFF) { + } + else if (var_r28 > 0xFF) { var_r28 = 0xFF; } var_r31->unk40.b = var_r28; @@ -938,8 +912,9 @@ static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix) { var_r31->unk40.a = var_r28; if (var_r31->unk2C) { if (temp_r30[i].unk00 & 1) { - var_r31->unk2C = var_r31->unk28 * (((var_r31->unk00_s16 + i) & 1) ? 1.0 : 0.5); - } else { + var_r31->unk2C = var_r31->unk28 * (((var_r31->unk00 + i) & 1) ? 1.0 : 0.5); + } + else { var_r31->unk2C = var_r31->unk28; } var_r31->unk28 += temp_r30[i].unk2C; @@ -947,8 +922,9 @@ static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix) { var_r31->unk2C = 0.0f; } } - var_r31->unk00_s16++; - } else { + var_r31->unk00++; + } + else { switch (var_r31->unk02) { case 0: RotateEffect(var_r31); @@ -966,41 +942,40 @@ static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix) { DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } -static void RotateEffect(HsfanimStruct01 *arg0) { +static void RotateEffect(HsfanimStruct01 *arg0) +{ ModelData *temp_r30; float var_f31; - temp_r30 = &Hu3DData[(s32) arg0->unk08.x]; - if (arg0->unk00_s16 < 8) { - var_f31 = 0.3 + sind(40.0f + 10.0f * (arg0->unk00_s16 + 1)); + temp_r30 = &Hu3DData[(s32)arg0->unk08.x]; + if (arg0->unk00 < 8) { + var_f31 = 0.3 + sind(40.0f + 10.0f * (arg0->unk00 + 1)); arg0->unk2C = 50.0f * var_f31 * temp_r30->scale.x; arg0->unk40.a = 0xFF; - var_f31 = 0.3 + sind(15.0f * (arg0->unk00_s16 + 1)); - } else { + var_f31 = 0.3 + sind(15.0f * (arg0->unk00 + 1)); + } + else { var_f31 = 0.3 + sind(135); } var_f31 *= temp_r30->scale.x; arg0->unk34.x = temp_r30->pos.x + arg0->unk14.x * var_f31; arg0->unk34.y = temp_r30->pos.y + arg0->unk08.y * temp_r30->scale.x + arg0->unk14.y * var_f31; arg0->unk34.z = temp_r30->pos.z + arg0->unk14.z * var_f31; - if (arg0->unk00_s16 > 0x14) { + if (arg0->unk00 > 0x14) { arg0->unk40.a -= 0x20; arg0->unk2C -= 8.0f * temp_r30->scale.x; if (arg0->unk2C < 0.0f) { arg0->unk2C = 0.0f; } } - arg0->unk00_s16++; + arg0->unk00++; } -static float voiceParam[16] = { - 110.0f, 160.0f, 110.0f, 160.0f, - 150.0f, 180.0f, 130.0f, 160.0f, - 130.0f, 160.0f, 150.0f, 160.0f, - 150.0f, 180.0f, 120.0f, 210.0f -}; +static float voiceParam[16] + = { 110.0f, 160.0f, 110.0f, 160.0f, 150.0f, 180.0f, 130.0f, 160.0f, 130.0f, 160.0f, 150.0f, 160.0f, 150.0f, 180.0f, 120.0f, 210.0f }; -static void PlayEffectSound(HsfanimStruct01 *arg0) { +static void PlayEffectSound(HsfanimStruct01 *arg0) +{ ModelData *temp_r30; UnkCharInstanceStruct *temp_r29; s16 temp_r26; @@ -1010,24 +985,25 @@ static void PlayEffectSound(HsfanimStruct01 *arg0) { temp_r28 = arg0->unk08.x; temp_r29 = &charInstance[temp_r28]; temp_r30 = &Hu3DData[temp_r29->unk00]; - if (arg0->unk00_s16 < 0x14 && arg0->unk2C < 40.0f * temp_r30->scale.x) { + if (arg0->unk00 < 0x14 && arg0->unk2C < 40.0f * temp_r30->scale.x) { arg0->unk2C += 4.0f * temp_r30->scale.x; } arg0->unk40.a = 0xFF; if (temp_r29->unk04 == 0x16 || temp_r29->unk06 == 0x16) { var_r25 = voiceParam[temp_r28 * 2]; - } else { + } + else { var_r25 = voiceParam[temp_r28 * 2 + 1]; } - temp_r26 = (arg0->unk00_s16 * 5) % 360; + temp_r26 = (arg0->unk00 * 5) % 360; arg0->unk34.x = temp_r30->pos.x + 40.0 * sind(arg0->unk08.y + temp_r26) * temp_r30->scale.x; arg0->unk34.y = temp_r30->pos.y + var_r25 * temp_r30->scale.x; arg0->unk34.z = temp_r30->pos.z + 40.0 * cosd(arg0->unk08.y + temp_r26) * temp_r30->scale.x; - arg0->unk00_s16++; - if (arg0->unk00_s16 >= 0x8F) { - arg0->unk00_s16 = 0x48; + arg0->unk00++; + if (arg0->unk00 >= 0x8F) { + arg0->unk00 = 0x48; } - if (temp_r29->unk04 != 0x15 && temp_r29->unk04 != 0x16 && temp_r29->unk04 != 0x79 && arg0->unk00_s16 > 0x1E) { + if (temp_r29->unk04 != 0x15 && temp_r29->unk04 != 0x16 && temp_r29->unk04 != 0x79 && arg0->unk00 > 0x1E) { arg0->unk2C -= 4.0f * temp_r30->scale.x; if (arg0->unk2C < 0.0f) { arg0->unk2C = 0.0f; @@ -1039,7 +1015,8 @@ static void PlayEffectSound(HsfanimStruct01 *arg0) { } } -s16 CharModelMotionCreate(s16 character, s32 data_num) { +s16 CharModelMotionCreate(s16 character, s32 data_num) +{ UnkCharInstanceStruct *temp_r31; s16 var_r28; s16 var_r30; @@ -1059,19 +1036,20 @@ s16 CharModelMotionCreate(s16 character, s32 data_num) { return -1; } temp_r26 = data_num & 0xFFFF0000; - for (var_r28 = 0; var_r28 < 8; var_r28++) { + for (var_r28 = 0; var_r28 < CHARNO_MAX ; var_r28++) { if (temp_r26 == charDirTbl[var_r28][2]) { break; } } - if (var_r28 != 8 || temp_r26 == 0) { + if (var_r28 != CHARNO_MAX || temp_r26 == 0) { data_num &= 0xFFFF; var_r27 = HuAR_ARAMtoMRAMFileRead(data_num | charDirTbl[character][2], MEMORY_DEFAULT_NUM, 2); if (!var_r27) { var_r27 = HuDataSelHeapReadNum(data_num | charDirTbl[character][2], MEMORY_DEFAULT_NUM, HEAP_DATA); } temp_r31->unk4C[var_r30] = data_num; - } else { + } + else { var_r27 = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk4C[var_r30] = -1; } @@ -1080,27 +1058,29 @@ s16 CharModelMotionCreate(s16 character, s32 data_num) { return temp_r31->unk0C[var_r30]; } -void CharModelMotionIndexSet(s16 character, s16 arg1, s32 arg2) { +void CharModelMotionIndexSet(s16 character, s16 arg1, s32 arg2) +{ UnkCharInstanceStruct *temp_r30; s16 i; temp_r30 = &charInstance[character]; - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(temp_r30->unk0C); i++) { if (temp_r30->unk0C[i] == arg1) { break; } } - if (i != 32) { + if (i != ARRAY_COUNT(temp_r30->unk0C)) { temp_r30->unk4C[i] = arg2; } } -void CharModelMotionKill(s16 character, u32 motion) { +void CharModelMotionKill(s16 character, u32 motion) +{ UnkCharInstanceStruct *temp_r30; s16 i; temp_r30 = &charInstance[character]; - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(temp_r30->unk0C); i++) { if (temp_r30->unk0C[i] == motion) { break; } @@ -1109,51 +1089,56 @@ void CharModelMotionKill(s16 character, u32 motion) { Hu3DMotionKill(motion); } -void CharModelMotionDataClose(s16 character) { +void CharModelMotionDataClose(s16 character) +{ s16 i; if (character == -1) { - for (i = 0; i < 8; i++) { + for (i = 0; i < CHARNO_MAX ; i++) { CharModelMotionDataClose(i); } - } else { + } + else { HuDataDirClose(charDirTbl[character][2]); } } -void CharModelDataClose(s16 arg0) { +void CharModelDataClose(s16 arg0) +{ s16 i; if (arg0 == -1) { - for (i = 0; i < 8; i++) { + for (i = 0; i < CHARNO_MAX ; i++) { CharModelDataClose(i); // Required to match. - (void) i; - (void) arg0; + (void)i; + (void)arg0; } - } else { + } + else { HuDataDirClose(charDirTbl[arg0][0]); HuDataDirClose(charDirTbl[arg0][1]); HuDataDirClose(charDirTbl[arg0][2]); } } -void CharModelKill(s16 character) { +void CharModelKill(s16 character) +{ UnkCharInstanceStruct *temp_r29; s16 i; if (character == -1) { - for (i = 0; i < 8; i++) { + for (i = 0; i < CHARNO_MAX ; i++) { CharModelKill(i); } - for (i = 0; i < 15; i++) { + for (i = 0; i < ARRAY_COUNT(lbl_801975B0); i++) { lbl_801975B0[i] = 0; } return; } CharModelMotionDataClose(character); temp_r29 = &charInstance[character]; - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(temp_r29->unk0C); i++) { if (temp_r29->unk0C[i] != -1) { Hu3DMotionKill(temp_r29->unk0C[i]); } @@ -1163,13 +1148,13 @@ void CharModelKill(s16 character) { Hu3DModelKill(temp_r29->unk00); } temp_r29->unk00 = -1; - for (i = 0; i < 8; i++) { + for (i = 0; i < CHARNO_MAX ; i++) { if (charInstance[i].unk00 != -1) { break; } } - if (i == 8) { - for (i = 0; i < 8; i++) { + if (i == CHARNO_MAX ) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { if (effectMdl[i] != -1) { Hu3DModelKill(effectMdl[i]); } @@ -1179,7 +1164,7 @@ void CharModelKill(s16 character) { if (temp_r29->unkC4) { HuMemDirectFree(temp_r29->unkC4->user_data); HuPrcKill(temp_r29->unkC4); - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(itemHookProcess); i++) { if (itemHookProcess[i]) { HuPrcKill(itemHookProcess[i]); } @@ -1189,7 +1174,8 @@ void CharModelKill(s16 character) { } } -void CharModelMotionSet(s16 character, s16 motion) { +void CharModelMotionSet(s16 character, s16 motion) +{ UnkCharInstanceStruct *temp_r31; MotionData *sp8; @@ -1199,7 +1185,8 @@ void CharModelMotionSet(s16 character, s16 motion) { Hu3DMotionSet(temp_r31->unk00, motion); } -void CharModelTexAnimSet(s16 character) { +void CharModelTexAnimSet(s16 character) +{ HsfAttribute *var_r31; HsfdrawStruct01 *temp_r30; ModelData *temp_r26; @@ -1231,26 +1218,16 @@ void CharModelTexAnimSet(s16 character) { } } -char *charTexNameTbl[64] = { - "s3c000m1_eyes", "s3c000m1_eyes", "s3c000m1_eyes", "s3c000m1_eyes", - "s3c000m2_eyes", "s3c000m2_eyes", "s3c000m3_eyes", "s3c000m3_eyes", - "S3c001m0_eye", "S3c001m0_eye", "S3c001m1_eye", "S3c001m1_eye", - "c001m3_eye", "c001m3_eye", "c001m3_eye", "c001m3_eye", - "s3c002m0_r_eye", "s3c002m0_l_eye", "s3c002m1_r_eye", "s3c002m1_l_eye", - "s3c002m2_r_eye", "s3c002m2_l_eye", "", "", - "eye1", "eye2", "S3c003m1", "S3c003m1", - "eye1", "eye2", "eye1", "eye2", - "GC-eyes", "GC-eyes", "s3c004m1_eye", "s3c004m1_eye", - "Clswario_eye_l1_AUTO12", "Clswario_eye_l1_AUTO13", "", "", - "m_donkey_eye4", "m_donkey_eye5", "S3donkey_eye", "S3donkey_eye", - "m_donkey_eye1", "m_donkey_eye2", "", "", - "GC-eyes", "GC-eyes", "s3c007m1_Eye_L", "s3c007m1_Eye_R", - "mat87", "mat89", "", "", - "clswaluigi_eye_l1_AUTO1", "clswaluigi_eye_l1_AUTO2", "s3c007_m1_eye", "s3c007_m1_eye", - "clswaluigi_eye_l1_AUTO9", "clswaluigi_eye_l1_AUTO10", "", "" -}; +char *charTexNameTbl[64] = { "s3c000m1_eyes", "s3c000m1_eyes", "s3c000m1_eyes", "s3c000m1_eyes", "s3c000m2_eyes", "s3c000m2_eyes", "s3c000m3_eyes", + "s3c000m3_eyes", "S3c001m0_eye", "S3c001m0_eye", "S3c001m1_eye", "S3c001m1_eye", "c001m3_eye", "c001m3_eye", "c001m3_eye", "c001m3_eye", + "s3c002m0_r_eye", "s3c002m0_l_eye", "s3c002m1_r_eye", "s3c002m1_l_eye", "s3c002m2_r_eye", "s3c002m2_l_eye", "", "", "eye1", "eye2", "S3c003m1", + "S3c003m1", "eye1", "eye2", "eye1", "eye2", "GC-eyes", "GC-eyes", "s3c004m1_eye", "s3c004m1_eye", "Clswario_eye_l1_AUTO12", + "Clswario_eye_l1_AUTO13", "", "", "m_donkey_eye4", "m_donkey_eye5", "S3donkey_eye", "S3donkey_eye", "m_donkey_eye1", "m_donkey_eye2", "", "", + "GC-eyes", "GC-eyes", "s3c007m1_Eye_L", "s3c007m1_Eye_R", "mat87", "mat89", "", "", "clswaluigi_eye_l1_AUTO1", "clswaluigi_eye_l1_AUTO2", + "s3c007_m1_eye", "s3c007_m1_eye", "clswaluigi_eye_l1_AUTO9", "clswaluigi_eye_l1_AUTO10", "", "" }; -char **CharModelTexNameGet(s16 arg0, s16 arg1) { +char **CharModelTexNameGet(s16 arg0, s16 arg1) +{ s16 var_r30; s16 i; @@ -1262,18 +1239,15 @@ char **CharModelTexNameGet(s16 arg0, s16 arg1) { return &charTexNameTbl[arg0 * 8 + i * 2]; } -static char *hookNameTbl[40] = { - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", - "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body" -}; +static char *hookNameTbl[40] + = { "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", + "a-itemhook-fl", "a-itemhook-body", "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", "a-itemhook-r", + "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", + "a-itemhook-body", "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", "a-itemhook-r", "a-itemhook-l", + "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body", "a-itemhook-r", "a-itemhook-l", "a-itemhook-fr", "a-itemhook-fl", "a-itemhook-body" }; -char *CharModelHookNameGet(s16 arg0, s16 arg1, s16 arg2) { +char *CharModelHookNameGet(s16 arg0, s16 arg1, s16 arg2) +{ s16 i; s16 var_r30; @@ -1285,82 +1259,94 @@ char *CharModelHookNameGet(s16 arg0, s16 arg1, s16 arg2) { return hookNameTbl[arg0 * 5 + arg2]; } -void CharModelMotionTimeSet(s16 character, float time) { +void CharModelMotionTimeSet(s16 character, float time) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; Hu3DMotionTimeSet(temp_r31->unk00, time); } -float CharModelMotionTimeGet(s16 character) { +float CharModelMotionTimeGet(s16 character) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; return Hu3DMotionTimeGet(temp_r31->unk00); } -float CharModelMotionMaxTimeGet(s16 character) { +float CharModelMotionMaxTimeGet(s16 character) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; return Hu3DMotionMaxTimeGet(temp_r31->unk00); } -s32 CharModelMotionEndCheck(s16 character) { +s32 CharModelMotionEndCheck(s16 character) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; return Hu3DMotionEndCheck(temp_r31->unk00); } -s16 CharModelMotionShiftIDGet(s16 character) { +s16 CharModelMotionShiftIDGet(s16 character) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; return Hu3DMotionShiftIDGet(temp_r31->unk00); } -void CharModelMotionShiftSet(s16 character, s16 motion, float time, float shift_time, u32 attr) { +void CharModelMotionShiftSet(s16 character, s16 motion, float time, float shift_time, u32 attr) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; MotionData *sp18 = &Hu3DMotion[motion]; Hu3DMotionShiftSet(temp_r31->unk00, motion, time, shift_time, attr); } -float CharModelMotionShiftTimeGet(s16 character) { +float CharModelMotionShiftTimeGet(s16 character) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; return Hu3DMotionShiftTimeGet(temp_r31->unk00); } -void CharModelMotionSpeedSet(s16 character, float speed) { +void CharModelMotionSpeedSet(s16 character, float speed) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; Hu3DMotionSpeedSet(temp_r31->unk00, speed); } -void CharModelLayerSetAll(s16 arg0) { +void CharModelLayerSetAll(s16 arg0) +{ s16 i; - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { if (effectMdl[i] != -1) { Hu3DModelLayerSet(effectMdl[i], arg0); } } } -static inline Process *CharModelItemHookCreateInlineFunc(void) { +static inline Process *CharModelItemHookCreateInlineFunc(void) +{ s16 i; - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(itemHookProcess); i++) { if (!itemHookProcess[i]) { break; } } - if (i == 32) { + if (i == ARRAY_COUNT(itemHookProcess)) { return NULL; - } else { + } + else { itemHookProcess[i] = HuPrcCreate(UpdateItemHook, 0x64, 0x2000, 0); return itemHookProcess[i]; } } -void CharModelItemHookCreate(s16 character, char *arg1) { +void CharModelItemHookCreate(s16 character, char *arg1) +{ Mtx sp18; Vec spC; UnkCharInstanceStruct *temp_r31; @@ -1381,7 +1367,7 @@ void CharModelItemHookCreate(s16 character, char *arg1) { Hu3DModelHookObjReset(temp_r31->unk00, arg1); var_r26 = CharModelItemHookCreateInlineFunc(); if (!var_r26) { - Hu3DModelAttrSet(temp_r29, 1); + Hu3DModelAttrSet(temp_r29, HU3D_ATTR_DISPOFF); return; } var_r26->user_data = temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkProcessData), MEMORY_DEFAULT_NUM); @@ -1397,7 +1383,8 @@ void CharModelItemHookCreate(s16 character, char *arg1) { } } -static void UpdateItemHook(void) { +static void UpdateItemHook(void) +{ Mtx sp14; Vec sp8; ModelData *temp_r30; @@ -1424,7 +1411,7 @@ static void UpdateItemHook(void) { sp8.x = PGMinPos.x + (PGMaxPos.x - PGMinPos.x) / 2; sp8.y = PGMinPos.y + (PGMaxPos.y - PGMinPos.y) / 2; sp8.z = PGMinPos.z + (PGMaxPos.z - PGMinPos.z) / 2; - Hu3DModelAttrSet(temp_r31->unk02, 1); + Hu3DModelAttrSet(temp_r31->unk02, HU3D_ATTR_DISPOFF); effectDustParam.unk0C.x = 0.0f; effectDustParam.unk0C.y = 0.0f; effectDustParam.unk0C.z = 0.0f; @@ -1437,7 +1424,7 @@ static void UpdateItemHook(void) { } PSMTXIdentity(temp_r30->unk_F0); temp_r25 = HuPrcCurrentGet(); - for (var_r28 = 0; var_r28 < 32; var_r28++) { + for (var_r28 = 0; var_r28 < ARRAY_COUNT(itemHookProcess); var_r28++) { if (itemHookProcess[var_r28] == temp_r25) { HuPrcKill(temp_r25); itemHookProcess[var_r28] = NULL; @@ -1448,27 +1435,18 @@ static void UpdateItemHook(void) { } } -static EffectParamData modelParticleParam = { - 0, - 0xFF, 0xFF, 0xFF, 0xFF, - 0x40, 0x20, 0x00, 0xFF, - { 0.0f, 2.0f, 1.0f }, - 0.95f, 0.95f, 0.95f, - 0.0f, - 0x00000000, - 1.0f, - -5.0f, - 0.02f -}; +static EffectParamData modelParticleParam + = { 0, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x20, 0x00, 0xFF, { 0.0f, 2.0f, 1.0f }, 0.95f, 0.95f, 0.95f, 0.0f, 0x00000000, 1.0f, -5.0f, 0.02f }; -void CharModelEffectCreate(s16 arg0, Vec *arg1) { +void CharModelEffectCreate(s16 arg0, Vec *arg1) +{ s16 temp_r28; s16 i; HsfanimStruct01 *var_r31; ParticleData *var_r27; ModelData *var_r26; - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { temp_r28 = CreateEffect(effectMdl[3], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &modelParticleParam); if (temp_r28 == -1) { break; @@ -1485,7 +1463,7 @@ void CharModelEffectCreate(s16 arg0, Vec *arg1) { var_r31->unk24 = 0.1f * (frandmod(20) - 10); var_r31->unk40.a = 0xFF - frandmod(3) * 16; } - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { temp_r28 = CreateEffect(effectMdl[3], arg0, arg1->x, arg1->y, arg1->z, 10.0f, &modelParticleParam); if (temp_r28 == -1) { break; @@ -1518,12 +1496,13 @@ void CharModelEffectCreate(s16 arg0, Vec *arg1) { } } -static void OrbitEffect(HsfanimStruct01 *arg0) { +static void OrbitEffect(HsfanimStruct01 *arg0) +{ float temp_f31; float var_f30; s16 temp_r30; - var_f30 = 20.0f + 3.75f * arg0->unk00_s16; + var_f30 = 20.0f + 3.75f * arg0->unk00; if (var_f30 > 90.0f) { var_f30 = 90.0f; } @@ -1536,33 +1515,25 @@ static void OrbitEffect(HsfanimStruct01 *arg0) { if (arg0->unk20 < 1.0f) { arg0->unk20 = 1.0f; } - if (arg0->unk00_s16 > 8) { + if (arg0->unk00 > 8) { temp_r30 = arg0->unk40.a; temp_r30 -= 8; if (temp_r30 < 0) { arg0->unk40.a = 0; arg0->unk2C = 0.0f; - } else { + } + else { arg0->unk40.a = temp_r30; } } - arg0->unk00_s16++; + arg0->unk00++; } -static EffectParamData coinParticleParam = { - 1, - 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, - { 0.0f, 2.0f, 1.0f }, - 0.95f, 1.0f, 0.95f, - -0.1f, - 0x00000000, - -0.2f, - -8.0f, - 0.0f -}; +static EffectParamData coinParticleParam + = { 1, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, { 0.0f, 2.0f, 1.0f }, 0.95f, 1.0f, 0.95f, -0.1f, 0x00000000, -0.2f, -8.0f, 0.0f }; -void CharModelCoinEffectCreate(s16 arg0, Vec *arg1) { +void CharModelCoinEffectCreate(s16 arg0, Vec *arg1) +{ s16 temp_r29; s16 var_r28; s16 i; @@ -1579,33 +1550,14 @@ void CharModelCoinEffectCreate(s16 arg0, Vec *arg1) { } } -static EffectParamData lbl_80131030 = { - 0, - 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0x80, 0x00, 0xFF, - { 0.0f, 2.0f, 1.0f }, - 0.95f, 0.95f, 0.95f, - 0.0f, - 0x00000000, - -0.2f, - -16.0f, - 0.05f -}; +static EffectParamData lbl_80131030 + = { 0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0xFF, { 0.0f, 2.0f, 1.0f }, 0.95f, 0.95f, 0.95f, 0.0f, 0x00000000, -0.2f, -16.0f, 0.05f }; -static EffectParamData lbl_80131068 = { - 0, - 0xE0, 0x20, 0x20, 0xFF, - 0xE0, 0x20, 0x20, 0xFF, - { 0.0f, 2.0f, 1.0f }, - 1.0f, 1.0f, 1.0f, - 0.0f, - 0x00000000, - -0.2f, - -12.0f, - 0.05f -}; +static EffectParamData lbl_80131068 + = { 0, 0xE0, 0x20, 0x20, 0xFF, 0xE0, 0x20, 0x20, 0xFF, { 0.0f, 2.0f, 1.0f }, 1.0f, 1.0f, 1.0f, 0.0f, 0x00000000, -0.2f, -12.0f, 0.05f }; -void fn_8004EC74(s16 character) { +void fn_8004EC74(s16 character) +{ Mtx sp24; Vec sp18; Vec spC; @@ -1615,12 +1567,12 @@ void fn_8004EC74(s16 character) { temp_r30 = &charInstance[character]; temp_r31 = &Hu3DData[temp_r30->unk00]; - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(temp_r30->unk0C); i++) { if (temp_r30->unk0C[i] == temp_r31->unk_08) { break; } } - if (i != 32) { + if (i != ARRAY_COUNT(temp_r30->unk0C)) { Hu3DModelObjMtxGet(temp_r30->unk00, "test11_tex_we-itemhook-r", sp24); sp18.x = sp24[0][3]; sp18.y = sp24[1][3]; @@ -1629,13 +1581,14 @@ void fn_8004EC74(s16 character) { spC.x = sp24[0][2]; spC.y = sp24[1][2]; spC.z = sp24[2][2]; - PSVECScale(&spC, &spC, 20.0f); - PSVECAdd(&sp18, &spC, &sp18); + VECScale(&spC, &spC, 20.0f); + VECAdd(&sp18, &spC, &sp18); fn_8004EDA4(temp_r31->camera, &sp18, &temp_r31->rot); } } -void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2) { +void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2) +{ Mtx sp2C; Vec sp20; Vec sp14; @@ -1653,15 +1606,15 @@ void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2) { sp14.x = sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31); sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31); sp14.z = sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31); - PSVECNormalize(&sp14, &sp14); - PSVECScale(&sp14, &lbl_80131030.unk0C, 10.0f); + VECNormalize(&sp14, &sp14); + VECScale(&sp14, &lbl_80131030.unk0C, 10.0f); var_r28 = CreateEffect(effectMdl[4], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_80131030); if (var_r28 == -1) { break; } - PSVECScale(&sp20, &sp8, -2.0 - 0.1 * frandmod(20)); - PSVECScale(&sp14, &sp14, 2.0f); - PSVECAdd(&sp14, &sp8, &lbl_80131068.unk0C); + VECScale(&sp20, &sp8, -2.0 - 0.1 * frandmod(20)); + VECScale(&sp14, &sp14, 2.0f); + VECAdd(&sp14, &sp8, &lbl_80131068.unk0C); var_r28 = CreateEffect(effectMdl[6], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_80131068); if (var_r28 == -1) { break; @@ -1669,38 +1622,19 @@ void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2) { } } -static EffectParamData lbl_801310BC = { - 0, - 0x20, 0x20, 0xFF, 0xFF, - 0x80, 0xFF, 0x20, 0xFF, - 0.0f, 2.0f, 1.0f, - 0.95f, 0.95f, 0.95f, - 0.0f, - 0x00000000, - -0.2f, - -16.0f, - 0.06f -}; +static EffectParamData lbl_801310BC + = { 0, 0x20, 0x20, 0xFF, 0xFF, 0x80, 0xFF, 0x20, 0xFF, 0.0f, 2.0f, 1.0f, 0.95f, 0.95f, 0.95f, 0.0f, 0x00000000, -0.2f, -16.0f, 0.06f }; -static EffectParamData lbl_801310F4 = { - 0, - 0x20, 0xE0, 0x20, 0xFF, - 0x20, 0xE0, 0x20, 0xFF, - 0.0f, 2.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 0.0f, - 0x00000000, - -0.2f, - -12.0f, - 0.05f -}; +static EffectParamData lbl_801310F4 + = { 0, 0x20, 0xE0, 0x20, 0xFF, 0x20, 0xE0, 0x20, 0xFF, 0.0f, 2.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0x00000000, -0.2f, -12.0f, 0.05f }; -void fn_8004F058(s16 character) { +void fn_8004F058(s16 character) +{ Mtx sp24; Vec sp18; Vec spC; - ModelData* temp_r31; - UnkCharInstanceStruct* temp_r30; + ModelData *temp_r31; + UnkCharInstanceStruct *temp_r30; temp_r30 = &charInstance[character]; temp_r31 = &Hu3DData[temp_r30->unk00]; @@ -1712,12 +1646,13 @@ void fn_8004F058(s16 character) { spC.x = sp24[0][2]; spC.y = sp24[1][2]; spC.z = sp24[2][2]; - PSVECScale(&spC, &spC, 30.0f); - PSVECAdd(&sp18, &spC, &sp18); + VECScale(&spC, &spC, 30.0f); + VECAdd(&sp18, &spC, &sp18); fn_8004F13C(temp_r31->camera, &sp18, &temp_r31->rot); } -void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2) { +void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2) +{ Mtx sp2C; Vec sp20; Vec sp14; @@ -1735,15 +1670,15 @@ void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2) { sp14.x = sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31); sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31); sp14.z = sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31); - PSVECNormalize(&sp14, &sp14); - PSVECScale(&sp14, &lbl_801310BC.unk0C, 10.0f); + VECNormalize(&sp14, &sp14); + VECScale(&sp14, &lbl_801310BC.unk0C, 10.0f); var_r28 = CreateEffect(effectMdl[4], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_801310BC); if (var_r28 == -1) { break; } - PSVECScale(&sp20, &sp8, -2.0 - 0.1 * frandmod(20)); - PSVECScale(&sp14, &sp14, 2.0f); - PSVECAdd(&sp14, &sp8, &lbl_801310F4.unk0C); + VECScale(&sp20, &sp8, -2.0 - 0.1 * frandmod(20)); + VECScale(&sp14, &sp14, 2.0f); + VECAdd(&sp14, &sp8, &lbl_801310F4.unk0C); var_r28 = CreateEffect(effectMdl[6], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_801310F4); if (var_r28 == -1) { break; @@ -1751,61 +1686,70 @@ void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2) { } } -void CharModelLayerSetAll2(s16 arg0) { +void CharModelLayerSetAll2(s16 arg0) +{ CharModelLayerSetAll(arg0); } -void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag) { - UnkCharInstanceStruct* temp_r31 = &charInstance[character]; +void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag) +{ + UnkCharInstanceStruct *temp_r31 = &charInstance[character]; s16 i; if (temp_r31->unk00 == -1) { return; } - for (i = 0; i < 32; i++) { + for (i = 0; i < ARRAY_COUNT(temp_r31->unk0C); i++) { if (temp_r31->unk0C[i] == motion) { break; } } - if (i != 32) { + if (i != ARRAY_COUNT(temp_r31->unk0C)) { if (flag == 0) { temp_r31->unk8C[i] |= 1; - } else { + } + else { temp_r31->unk8C[i] &= ~1; } } } -void fn_8004F52C(s16 character, s32 arg1) { +void fn_8004F52C(s16 character, s32 arg1) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; if (arg1 != 0) { temp_r31->unkAC |= 8; return; - } else { + } + else { temp_r31->unkAC &= ~8; } } -void CharModelEffectEnableSet(s16 character, s32 arg1) { +void CharModelEffectEnableSet(s16 character, s32 arg1) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; - if (character >= 8) { + if (character >= CHARNO_MAX ) { if (arg1 == 0) { lbl_801975B0[character] |= 0x10; - } else { + } + else { lbl_801975B0[character] &= ~0x10; } return; } if (arg1 == 0) { temp_r31->unkAC |= 0x10; - } else { + } + else { temp_r31->unkAC &= ~0x10; } } -s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { +s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3) +{ Process *var_r24; Process *var_r27; s16 *var_r29; @@ -1823,89 +1767,47 @@ s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { } } -s32 CharModelEffectNpcInitSilent(s16 arg0, s16 arg1, s16 arg2) { +s32 CharModelEffectNpcInitSilent(s16 arg0, s16 arg1, s16 arg2) +{ s32 sp10; // ! - uninitialized CharModelEffectNpcInit(arg0, arg1, arg2, -1); return sp10; } -static s8 lbl_80131146[] = { - 0x07, 0x20, 0x10, 0x28, - 0x01, 0x1E, 0xE7, 0xE7, - 0x01, 0x1E, 0x01, 0x1A, - 0x01, 0x14, 0x13, 0x20, - 0x02, 0x13 -}; +static s8 lbl_80131146[] = { 0x07, 0x20, 0x10, 0x28, 0x01, 0x1E, 0xE7, 0xE7, 0x01, 0x1E, 0x01, 0x1A, 0x01, 0x14, 0x13, 0x20, 0x02, 0x13 }; static u16 lbl_80131158[] = { - 0x0051, 0x0053, - 0x0057, 0x0101, - 0x0059, 0x005B, - 0x0055, 0x0069, + 0x0051, + 0x0053, + 0x0057, + 0x0101, + 0x0059, + 0x005B, + 0x0055, + 0x0069, 0x006A, }; // Unused? -static s8 lbl_8013116A[] = { - 0x01, 0x20, 0x01, 0x15, - 0x0A, 0x1E, 0xE7, 0xE7, - 0x01, 0x1E, 0x01, 0x10, - 0x01, 0x11, 0xE7, 0xE7, - 0xE7, 0xE7 -}; +static s8 lbl_8013116A[] = { 0x01, 0x20, 0x01, 0x15, 0x0A, 0x1E, 0xE7, 0xE7, 0x01, 0x1E, 0x01, 0x10, 0x01, 0x11, 0xE7, 0xE7, 0xE7, 0xE7 }; -static u16 lbl_8013117C[] = { - 0x0052, 0x0054, - 0x0058, 0x0101, - 0x005A, 0x005C, - 0x0056, 0x0069, - 0x006A -}; +static u16 lbl_8013117C[] = { 0x0052, 0x0054, 0x0058, 0x0101, 0x005A, 0x005C, 0x0056, 0x0069, 0x006A }; -static s8 lbl_8013118E[] = { - 0x03, 0x37, 0xE7, 0xE7, - 0xE7, 0xE7, 0xE7, 0xE7, - 0xE7, 0xE7, 0x01, 0x1A, - 0xE7, 0xE7 -}; +static s8 lbl_8013118E[] = { 0x03, 0x37, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x01, 0x1A, 0xE7, 0xE7 }; -static u16 lbl_8013119C[] = { - 0x0051, 0x0053, - 0x0057, 0x0101, - 0x0059, 0x0068, - 0x0055 -}; +static u16 lbl_8013119C[] = { 0x0051, 0x0053, 0x0057, 0x0101, 0x0059, 0x0068, 0x0055 }; -static s8 lbl_801311AA[] = { - 0x04, 0x11, 0xE7, 0xE7, - 0xE7, 0xE7, 0xE7, 0xE7, - 0xE7, 0xE7, 0x01, 0x10, - 0xE7, 0xE7 -}; +static s8 lbl_801311AA[] = { 0x04, 0x11, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x01, 0x10, 0xE7, 0xE7 }; -static u16 lbl_801311B8[] = { - 0x0052, 0x0054, - 0x0058, 0x0101, - 0x005A, 0x0067, - 0x0056 -}; +static u16 lbl_801311B8[] = { 0x0052, 0x0054, 0x0058, 0x0101, 0x005A, 0x0067, 0x0056 }; -static s8 lbl_801311C6[] = { - 0x01, 0x17, 0xE7, 0xE7, - 0xE7, 0xE7, 0xE7, 0xE7, - 0xE7, 0xE7, 0xE7, 0xE7, - 0xE7, 0xE7 -}; +static s8 lbl_801311C6[] = { 0x01, 0x17, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7 }; -static u16 lbl_801311D4[] = { - 0x0051, 0x0053, - 0x0057, 0x0101, - 0x0059, 0x005B, - 0x0055 -}; +static u16 lbl_801311D4[] = { 0x0051, 0x0053, 0x0057, 0x0101, 0x0059, 0x005B, 0x0055 }; -static void UpdateNpcEffect(void) { +static void UpdateNpcEffect(void) +{ Vec sp2C; ModelData *temp_r30; s16 *temp_r27; @@ -2031,17 +1933,19 @@ static void UpdateNpcEffect(void) { if (lbl_801975B0[temp_r28] & 0x10) { break; } - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x; effectStarParam.unk0C.y = 0.0f; effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x; - CreateEffectStar(temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); + CreateEffectStar( + temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); } - for (i = 0; i < 8; i++) { + for (i = 0; i < CHAR_EFFECT_AND_PARTICLE_MAX; i++) { effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; - CreateEffectDust(temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); + CreateEffectDust( + temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } if (temp_r28 != -1) { HuAudFXPlay(0x61); @@ -2051,13 +1955,15 @@ static void UpdateNpcEffect(void) { } } -void CharModelStepTypeSet(s16 character, s32 arg1) { +void CharModelStepTypeSet(s16 character, s32 arg1) +{ UnkCharInstanceStruct *temp_r31 = &charInstance[character]; temp_r31->unkB0 = arg1; } -static s32 PlayStepFX(s16 character, s16 arg1, u8 arg2) { +static s32 PlayStepFX(s16 character, s16 arg1, u8 arg2) +{ UnkCharInstanceStruct *temp_r31; ModelData *var_r28; @@ -2068,14 +1974,17 @@ static s32 PlayStepFX(s16 character, s16 arg1, u8 arg2) { } if (temp_r31->unkB0 == 4) { arg1 = 0x109; - } else if (temp_r31->unkB0 == 5) { + } + else if (temp_r31->unkB0 == 5) { arg1 = 0x10B; - } else { + } + else { arg1 += temp_r31->unkB0; } if (temp_r31->unkAC & 8) { return HuAudCharVoicePlayPos(character, arg1, &var_r28->pos); - } else { + } + else { return HuAudCharVoicePlay(character, arg1); } } diff --git a/src/game/code_8003FF68.c b/src/game/code_8003FF68.c index 0aa54036..96dc703c 100644 --- a/src/game/code_8003FF68.c +++ b/src/game/code_8003FF68.c @@ -1,3 +1,4 @@ +#include "game/audio.h" #include "game/data.h" #include "game/hsfman.h" #include "game/process.h" @@ -169,7 +170,7 @@ void fn_80040374(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { unkCode_8003FF68* temp_r3; process = HuPrcChildCreate(fn_8004040C, 1, 0x1000, 0, HuPrcCurrentGet()); - temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkCode_8003FF68), 0x10000000); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkCode_8003FF68), MEMORY_DEFAULT_NUM); process->user_data = temp_r3; temp_r3->unk0 = arg0; temp_r3->unk2 = arg1; @@ -203,4 +204,4 @@ void fn_8004040C(void) { } HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/game/data.c b/src/game/data.c index e630d7ed..f76419c5 100644 --- a/src/game/data.c +++ b/src/game/data.c @@ -6,7 +6,7 @@ #define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset))) #define DATA_EFF_SIZE(size) (((size)+1) & ~0x1) -static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num); +void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num); #define DATA_MAX_READSTAT 128 @@ -406,7 +406,7 @@ void **HuDataReadMulti(s32 *data_ids) return HuDataReadMultiSub(data_ids, FALSE, 0); } -static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num) +void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num) { s32 *dir_ids; char **paths; diff --git a/src/game/decode.c b/src/game/decode.c index 6414b269..db70b788 100644 --- a/src/game/decode.c +++ b/src/game/decode.c @@ -8,7 +8,7 @@ struct decode_data u32 size; }; -static u8 TextBuffer[1024]; +static u8 textBuffer[1024]; static void HuDecodeNone(struct decode_data *decode) { @@ -27,7 +27,7 @@ static void HuDecodeLz(struct decode_data *decode) for(i=0; i<1024; i++) { - TextBuffer[i] = 0; + textBuffer[i] = 0; } while(decode->size) { flag >>= 1; @@ -35,7 +35,7 @@ static void HuDecodeLz(struct decode_data *decode) flag = (*decode->src++)|0xFF00; } if(flag & 0x1) { - TextBuffer[pos++] = *decode->dst++ = *decode->src++; + textBuffer[pos++] = *decode->dst++ = *decode->src++; pos = pos & 0x3FF; decode->size--; } else { @@ -44,7 +44,7 @@ static void HuDecodeLz(struct decode_data *decode) i |= ((copy_len & ~0x3F) << 2); copy_len = (copy_len & 0x3F)+3; for(j=0; jdst++ = TextBuffer[(i+j) & 0x3FF]; + textBuffer[pos++] = *decode->dst++ = textBuffer[(i+j) & 0x3FF]; pos &= 0x3FF; } decode->size -= j; diff --git a/src/game/gamework.c b/src/game/gamework.c index 60ef959b..0100278f 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -1,7 +1,11 @@ -#include "string.h" #include "game/gamework.h" -#include "game/gamework_data.h" #include "game/flag.h" +#include "game/gamework_data.h" +#include "string.h" +#include "version.h" + +s16 GwLanguage = 1; +s16 GwLanguageSave = -1; GameStat GWGameStatDefault; GameStat GWGameStat; @@ -20,15 +24,16 @@ static inline void InitPlayerConfig(void) { PlayerConfig *config; s32 i; - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { config = &GWPlayerCfg[i]; config->character = i; config->pad_idx = i; config->diff = 0; config->group = i; - if(!HuPadStatGet(i)) { + if (!HuPadStatGet(i)) { config->iscom = 0; - } else { + } + else { config->iscom = 1; } } @@ -36,11 +41,11 @@ static inline void InitPlayerConfig(void) static inline void ResetBoardSettings(void) { - GWRumbleSet(1); - GWMGExplainSet(1); - GWMGShowComSet(1); - GWMessSpeedSet(1); - GWSaveModeSet(0); + GWRumbleSet(1); + GWMGExplainSet(1); + GWMGShowComSet(1); + GWMessSpeedSet(1); + GWSaveModeSet(0); } void GWInit(void) @@ -49,23 +54,29 @@ void GWInit(void) _InitFlag(); GWErase(); InitPlayerConfig(); +#if VERSION_JP + GWGameStat.language = 0; +#elif VERSION_ENG GWGameStat.language = 1; +#else + GWLanguageSet(GwLanguage); +#endif ResetBoardSettings(); } static inline void ResetMGRecord(GameStat *game_stat) { - game_stat->mg_record[0] = 18000; + game_stat->mg_record[0] = 300 * REFRESH_RATE; game_stat->mg_record[1] = 80; - game_stat->mg_record[2] = 3600; - game_stat->mg_record[3] = 7200; + game_stat->mg_record[2] = 60 * REFRESH_RATE; + game_stat->mg_record[3] = 120 * REFRESH_RATE; game_stat->mg_record[4] = 0; - game_stat->mg_record[5] = 3600; - game_stat->mg_record[6] = 18000; - game_stat->mg_record[7] = 18000; - game_stat->mg_record[8] = 18000; + game_stat->mg_record[5] = 60 * REFRESH_RATE; + game_stat->mg_record[6] = 300 * REFRESH_RATE; + game_stat->mg_record[7] = 300 * REFRESH_RATE; + game_stat->mg_record[8] = 300 * REFRESH_RATE; game_stat->mg_record[9] = 0; - game_stat->mg_record[10] = 300; + game_stat->mg_record[10] = 5 * REFRESH_RATE; game_stat->mg_record[11] = 0; game_stat->mg_record[12] = 0; game_stat->mg_record[13] = 0; @@ -76,9 +87,9 @@ static inline void ResetBoardRecord(GameStat *game_stat) { s32 i; s32 j; - - for(i=0; i<9; i++) { - for(j=0; j<8; j++) { + + for (i = 0; i < 9; i++) { + for (j = 0; j < 8; j++) { game_stat->board_win_count[i][j] = 0; } game_stat->board_play_count[i] = 0; @@ -90,10 +101,10 @@ static inline void ResetBoardRecord(GameStat *game_stat) static inline void ResetPresent(GameStat *game_stat) { s32 i; - for(i=0; i<60; i++) { + for (i = 0; i < 60; i++) { game_stat->present[i] = 0; } - (void)i; //HACK to match GWResetGameStat + (void)i; // HACK to match GWResetGameStat } static inline void ResetFlag(GameStat *game_stat) @@ -101,9 +112,9 @@ static inline void ResetFlag(GameStat *game_stat) game_stat->story_continue = 0; game_stat->party_continue = 0; game_stat->open_w06 = 0; - game_stat->field10E_bit4 = 0; - game_stat->field10E_bit5 = 0; - game_stat->field10E_bit6 = 0; + game_stat->veryHardUnlock = 0; + game_stat->customPackEnable = 0; + game_stat->musicAllF = 0; } static inline void ResetPauseConfig(GameStat *game_stat) @@ -120,7 +131,13 @@ void GWGameStatReset(void) GameStat *game_stat = &GWGameStatDefault; memset(game_stat, 0, sizeof(GameStat)); game_stat->unk_00 = 0; +#if VERSION_JP + game_stat->language = 0; +#elif VERSION_ENG game_stat->language = 1; +#else + game_stat->language = GwLanguage; +#endif game_stat->sound_mode = 1; game_stat->rumble = 1; game_stat->total_stars = 0; @@ -133,50 +150,49 @@ void GWGameStatReset(void) ResetBoardRecord(game_stat); ResetPresent(game_stat); ResetFlag(game_stat); - ResetPauseConfig(game_stat); + ResetPauseConfig(game_stat); memcpy(&GWGameStat, &GWGameStatDefault, sizeof(GameStat)); ResetBoardSettings(); } s32 GWMessDelayGet(void) { - if(GWSystem.mess_delay > 48) { +#if VERSION_NTSC + if (GWSystem.mess_delay > 48) { GWSystem.mess_speed = 1; GWSystem.mess_delay = 32; } +#else + if (GWSystem.mess_delay > 64) { + GWSystem.mess_speed = 1; + GWSystem.mess_delay = 48; + } +#endif return GWSystem.mess_delay; } -void GWMGRecordSet(s32 index, s32 value) +void GWMGRecordSet(s32 index, u32 value) { - if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) { + if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) { GWGameStat.mg_record[index] = value; } } -s32 GWMGRecordGet(s32 index) +u32 GWMGRecordGet(s32 index) { return GWGameStat.mg_record[index]; } void GWCharColorGet(s32 character, GXColor *color) { - GXColor char_color[] = { - { 227, 67, 67, 255 }, - { 68, 67, 227, 255 }, - { 241, 158, 220, 255 }, - { 67, 228, 68, 255 }, - { 138, 60, 180, 255 }, - { 146, 85, 55, 255 }, - { 227, 228, 68, 255 }, - { 40, 40, 40, 255 } - }; + GXColor char_color[] = { { 227, 67, 67, 255 }, { 68, 67, 227, 255 }, { 241, 158, 220, 255 }, { 67, 228, 68, 255 }, { 138, 60, 180, 255 }, + { 146, 85, 55, 255 }, { 227, 228, 68, 255 }, { 40, 40, 40, 255 } }; *color = char_color[character]; } void GWBoardPlayCountSet(s32 board, u8 value) { - if(value > 99) { + if (value > 99) { value = 99; } GWGameStat.board_play_count[board] = value; @@ -185,24 +201,23 @@ void GWBoardPlayCountSet(s32 board, u8 value) void GWBoardPlayCountAdd(s32 board, u8 value) { value += GWGameStat.board_play_count[board]; - if(value > 99) { + if (value > 99) { value = 99; } GWGameStat.board_play_count[board] = value; } - u8 GWBoardPlayCountGet(s32 board) { return GWGameStat.board_play_count[board]; } -void GWBoardMaxStarsSet(s32 board, s32 value) +void GWBoardMaxStarsSet(s32 board, s16 value) { GWGameStat.board_max_stars[board] = value; } -u16 GWBoardMaxStarsGet(s32 board) +s32 GWBoardMaxStarsGet(s32 board) { return GWGameStat.board_max_stars[board]; } @@ -212,15 +227,15 @@ void GWBoardMaxCoinsSet(s32 board, s32 value) GWGameStat.board_max_coins[board] = value; } -u16 GWBoardMaxCoinsGet(s32 board) +s32 GWBoardMaxCoinsGet(s32 board) { return GWGameStat.board_max_coins[board]; } s32 GWBoardWinCountInc(s32 character, s32 board) { - s32 win_count = GWGameStat.board_win_count[board][character]+1; - if(win_count > 99) { + s32 win_count = GWGameStat.board_win_count[board][character] + 1; + if (win_count > 99) { win_count = 99; } GWGameStat.board_win_count[board][character] = win_count; @@ -244,14 +259,15 @@ s32 GWMGAvailGet(s32 id) id -= 401; word = id >> 5; bit = id % 32; - if(GWGameStat.mg_avail[word] & (1 << bit)) { + if (GWGameStat.mg_avail[word] & (1 << bit)) { return 1; - } else { + } + else { return 0; } } -s32 GWMGAvailSet(s32 id) +void GWMGAvailSet(s32 id) { s32 word; s32 bit; @@ -268,14 +284,15 @@ s32 GWMGCustomGet(s32 id) id -= 401; word = id >> 5; bit = id % 32; - if(GWGameStat.mg_custom[word] & (1 << bit)) { + if (GWGameStat.mg_custom[word] & (1 << bit)) { return 1; - } else { + } + else { return 0; } } -s32 GWMGCustomSet(s32 id) +void GWMGCustomSet(s32 id) { s32 word; s32 bit; @@ -285,7 +302,7 @@ s32 GWMGCustomSet(s32 id) GWGameStat.mg_custom[word] |= (1 << bit); } -s32 GWMGCustomReset(s32 id) +void GWMGCustomReset(s32 id) { s32 word; s32 bit; @@ -302,14 +319,14 @@ s16 GWCoinsGet(s32 player) void GWCoinsSet(s32 player, s16 value) { - if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) { - if(value < 0) { + if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) { + if (value < 0) { value = 0; } - if(value > 999) { + if (value > 999) { value = 999; } - if(value > GWPlayer[player].coins_max) { + if (value > GWPlayer[player].coins_max) { GWPlayer[player].coins_max = value; } GWPlayer[player].coins = value; @@ -318,18 +335,18 @@ void GWCoinsSet(s32 player, s16 value) void GWCoinsAdd(s32 player, s16 amount) { - GWCoinsSet(player, GWPlayer[player].coins+amount); + GWCoinsSet(player, GWPlayer[player].coins + amount); } void GWStarsSet(s32 player, s16 value) { - if(value < 0) { + if (value < 0) { value = 0; } - if(value > 999) { + if (value > 999) { value = 999; } - if(value > GWPlayer[player].stars_max) { + if (value > GWPlayer[player].stars_max) { GWPlayer[player].stars_max = value; } GWPlayer[player].stars = value; @@ -337,7 +354,7 @@ void GWStarsSet(s32 player, s16 value) void GWStarsAdd(s32 player, s16 amount) { - GWStarsSet(player, GWPlayer[player].stars+amount); + GWStarsSet(player, GWPlayer[player].stars + amount); } s32 GWStarsGet(s32 player) @@ -347,10 +364,10 @@ s32 GWStarsGet(s32 player) void GWTotalStarsSet(s16 value) { - if(value < 0) { + if (value < 0) { value = 0; } - if(value > 10000) { + if (value > 10000) { value = 10000; } GWGameStat.total_stars = value; @@ -358,10 +375,10 @@ void GWTotalStarsSet(s16 value) void GWTotalStarsAdd(s16 amount) { - GWTotalStarsSet(GWGameStat.total_stars+amount); + GWTotalStarsSet(GWGameStat.total_stars + amount); } u16 GWTotalStarsGet(void) { return GWGameStat.total_stars; -} \ No newline at end of file +} diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index 2293f23e..b5a73d37 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -24,7 +24,7 @@ typedef struct { /* 0x3C */ HsfanimStruct00 *unk3C; } ParManProcUserData; // Size 0x40 -static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1); +static void particleFunc(ModelData *arg0, Mtx arg1); static void ParManFunc(void); static void ParManHook(ModelData *arg0, ParticleData *arg1, Mtx matrix); @@ -32,7 +32,7 @@ u32 frand(void); extern u32 GlobalCounter; -Hu3DTexAnimDataStruct Hu3DTexAnimData[256]; +Hu3DTexAnimDataStruct Hu3DTexAnimData[HU3D_TEXANIM_MAX]; Hu3DTexScrDataStruct Hu3DTexScrData[16]; static Process *parManProc[64]; @@ -42,11 +42,11 @@ void Hu3DAnimInit(void) { s16 i; var_r30 = Hu3DTexAnimData; - for (i = 0; i < 256; i++, var_r30++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r30++) { var_r30->unk06 = -1; } var_r29 = Hu3DTexScrData; - for (i = 0; i < 16; i++, var_r29++) { + for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r29++) { var_r29->unk02 = -1; } } @@ -55,18 +55,18 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) { Hu3DTexAnimDataStruct *var_r31; HsfAttribute *var_r29; HsfData *temp_r27; - HsfanimStruct01 *var_r30; + HsfdrawStruct01 *var_r30; s16 i; s16 var_r25; s16 var_r28; var_r31 = Hu3DTexAnimData; - for (var_r28 = 0; var_r28 < 256; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_TEXANIM_MAX; var_r28++, var_r31++) { if (var_r31->unk06 == -1) { break; } } - if (var_r28 == 256) { + if (var_r28 == HU3D_TEXANIM_MAX) { OSReport("Error: TexAnim Over\n"); return -1; } @@ -75,7 +75,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) { for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) { if (strcmp(arg2, var_r29->bitmap->name) == 0) { if (!var_r29->unk04) { - var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg1].unk_48); + var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), (u32) Hu3DData[arg1].unk_48); var_r29->unk04 = var_r30; var_r30->unk00 = 0; } else { @@ -84,7 +84,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) { var_r30->unk00 |= 1; var_r30->unk02 = var_r28; var_r30->unk2C = var_r30->unk30 = 1.0f; - var_r30->unk34.x = var_r30->unk34.y = 0.0f; + var_r30->unk34 = var_r30->unk38 = 0.0f; var_r25++; } } @@ -112,18 +112,18 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) { AnimData *temp_r4; HsfAttribute *var_r29; HsfData *temp_r27; - HsfanimStruct01 *var_r30; + HsfdrawStruct01 *var_r30; s16 var_r28; s16 i; s16 var_r25; var_r31 = Hu3DTexAnimData; - for (var_r28 = 0; var_r28 < 256; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_TEXANIM_MAX; var_r28++, var_r31++) { if (var_r31->unk06 == -1) { break; } } - if (var_r28 == 256) { + if (var_r28 == HU3D_TEXANIM_MAX) { OSReport("Error: TexAnim Over\n"); return -1; } @@ -132,14 +132,14 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) { for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) { if (strcmp(arg2, var_r29->bitmap->name) == 0) { if (!var_r29->unk04) { - var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg1].unk_48); + var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), (u32) Hu3DData[arg1].unk_48); var_r29->unk04 = var_r30; } else { var_r30 = var_r29->unk04; } var_r30->unk02 = var_r28; var_r30->unk2C = var_r30->unk30 = 1.0f; - var_r30->unk34.x = var_r30->unk34.y = 0.0f; + var_r30->unk34 = var_r30->unk38 = 0.0f; var_r25++; } } @@ -162,7 +162,7 @@ void Hu3DAnimKill(s16 arg0) { Hu3DTexAnimDataStruct *temp_r31 = &Hu3DTexAnimData[arg0]; HsfData *temp_r28 = Hu3DData[temp_r31->unk06].hsfData; HsfAttribute *var_r30; - HsfanimStruct01 *temp_r29; + HsfdrawStruct01 *temp_r29; s16 i; if (temp_r28) { @@ -190,7 +190,7 @@ void Hu3DAnimModelKill(s16 arg0) { Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0]; s16 i; - for (i = 0; i < 256; i++, var_r26++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r26++) { if (var_r26->unk06 == arg0) { Hu3DAnimKill(i); } @@ -201,7 +201,7 @@ void Hu3DAnimAllKill(void) { Hu3DTexAnimDataStruct *var_r26 = &Hu3DTexAnimData[0]; s16 i; - for (i = 0; i < 256; i++, var_r26++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r26++) { if (var_r26->unk06 != -1) { Hu3DAnimKill(i); } @@ -242,7 +242,7 @@ void Hu3DAnmNoSet(s16 arg0, u16 arg1) { } s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2) { - HsfanimStruct01 *temp_r30; + HsfdrawStruct01 *temp_r30; Hu3DTexAnimDataStruct *temp_r29; AnimData *temp_r27; AnimBmpData *temp_r28; @@ -265,11 +265,11 @@ s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2) { temp_r31 = temp_r25->layer; temp_r28 = &temp_r27->bmp[temp_r31->bmpNo]; HuSprTexLoad(temp_r29->unk10, temp_r31->bmpNo, arg2, var_r23, var_r22, - (arg0->attr & 0x40) ? GX_NEAR : GX_LINEAR); + (arg0->attr & HU3D_ATTR_TEX_NEAR) ? GX_NEAR : GX_LINEAR); temp_r30->unk2C = (float) temp_r31->sizeX / temp_r28->sizeX; temp_r30->unk30 = (float) temp_r31->sizeY / temp_r28->sizeY; - temp_r30->unk34.x = (float) temp_r31->startX / temp_r28->sizeX; - temp_r30->unk34.y = (float) temp_r31->startY / temp_r28->sizeY; + temp_r30->unk34 = (float) temp_r31->startX / temp_r28->sizeX; + temp_r30->unk38 = (float) temp_r31->startY / temp_r28->sizeY; return 1; } @@ -283,7 +283,7 @@ void Hu3DAnimExec(void) { s16 i; var_r30 = Hu3DTexAnimData; - for (i = 0; i < 256; i++, var_r30++) { + for (i = 0; i < HU3D_TEXANIM_MAX; i++, var_r30++) { if (var_r30->unk06 != -1 && (Hu3DPauseF == 0 || (var_r30->unk00 & 0x20))) { var_r25 = var_r30->unk10; temp_r28 = &var_r25->bank[var_r30->unk02]; @@ -312,14 +312,14 @@ void Hu3DAnimExec(void) { } } var_r31 = Hu3DTexScrData; - for (i = 0; i < 16; i++, var_r31++) { + 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)); mtxTransCat(var_r31->unk3C, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); } else { if (var_r31->unk00 & 1) { - PSVECAdd(&var_r31->unk04, &var_r31->unk1C, &var_r31->unk04); + VECAdd(&var_r31->unk04, &var_r31->unk1C, &var_r31->unk04); if (var_r31->unk04.x > 1.0f) { var_r31->unk04.x -= 1.0f; } @@ -359,18 +359,18 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) { Hu3DTexScrDataStruct *var_r31; HsfData *temp_r27; HsfAttribute *var_r29; - HsfanimStruct01 *var_r30; + HsfdrawStruct01 *var_r30; s16 i; s16 var_r25; s16 var_r28; var_r31 = Hu3DTexScrData; - for (var_r28 = 0; var_r28 < 16; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_TEXSCROLL_MAX; var_r28++, var_r31++) { if (var_r31->unk02 == -1) { break; } } - if (var_r28 == 16) { + if (var_r28 == HU3D_TEXSCROLL_MAX) { OSReport("Error: TexScroll Over\n"); return -1; } @@ -379,7 +379,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) { for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) { if (strcmp(arg1, var_r29->bitmap->name) == 0) { if (!var_r29->unk04) { - var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg0].unk_48); + var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), (u32) Hu3DData[arg0].unk_48); var_r29->unk04 = var_r30; var_r30->unk00 = 0; } else { @@ -388,7 +388,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) { var_r30->unk00 |= 2; var_r30->unk04 = var_r28; var_r30->unk2C = var_r30->unk30 = 1.0f; - var_r30->unk34.x = var_r30->unk34.y = 0.0f; + var_r30->unk34 = var_r30->unk38 = 0.0f; var_r25++; } } @@ -408,7 +408,7 @@ void Hu3DTexScrollKill(s16 arg0) { Hu3DTexScrDataStruct *temp_r28 = &Hu3DTexScrData[arg0]; HsfData *temp_r29 = Hu3DData[temp_r28->unk02].hsfData; HsfAttribute *var_r31; - HsfanimStruct01 *temp_r30; + HsfdrawStruct01 *temp_r30; s16 i; if (temp_r29) { @@ -434,7 +434,7 @@ void Hu3DTexScrollAllKill(void) { s16 i; var_r27 = Hu3DTexScrData; - for (i = 0; i < 16; i++, var_r27++) { + for (i = 0; i < HU3D_TEXSCROLL_MAX; i++, var_r27++) { if (var_r27->unk02 != -1) { Hu3DTexScrollKill(i); } @@ -493,9 +493,9 @@ s16 Hu3DParticleCreate(AnimData *arg0, s16 arg1) { s16 i; void *temp_r24; - temp_r25 = Hu3DHookFuncCreate((void*) &_Hu3DParticleAttrReset); + temp_r25 = Hu3DHookFuncCreate((void*) &particleFunc); temp_r28 = &Hu3DData[temp_r25]; - Hu3DModelAttrSet(temp_r25, 0x20); + Hu3DModelAttrSet(temp_r25, HU3D_ATTR_PARTICLE_KILL); temp_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(ParticleData), temp_r28->unk_48); temp_r28->unk_120 = temp_r31; temp_r31->unk_44 = arg0; @@ -658,7 +658,7 @@ static float baseST[] = { 1.0f, 1.0f, 0.0f, 1.0f }; -static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { +static void particleFunc(ModelData *arg0, Mtx arg1) { Vec *var_r30; float temp_f31; float temp_f29; @@ -689,7 +689,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { PSMTXIdentity(sp128); } PSMTXReorder(sp128, sp8); - if ((Hu3DPauseF == 0 || (arg0->attr & 0x200000)) && temp_r31->unk_54 && temp_r31->unk_38 != GlobalCounter) { + 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); } @@ -717,17 +717,17 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { var_r30->z = sp38[3].z * temp_f31 + var_r29->unk34.z; var_r30++; } else { - PSVECScale(&basePos[0], &sp98[0], var_r29->unk2C); - PSVECScale(&basePos[1], &sp98[1], var_r29->unk2C); - PSVECScale(&basePos[2], &sp98[2], var_r29->unk2C); - PSVECScale(&basePos[3], &sp98[3], var_r29->unk2C); + VECScale(&basePos[0], &sp98[0], var_r29->unk2C); + 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); - PSVECAdd(&sp68[0], &var_r29->unk34, var_r30++); - PSVECAdd(&sp68[1], &var_r29->unk34, var_r30++); - PSVECAdd(&sp68[2], &var_r29->unk34, var_r30++); - PSVECAdd(&sp68[3], &var_r29->unk34, var_r30++); + VECAdd(&sp68[0], &var_r29->unk34, var_r30++); + VECAdd(&sp68[1], &var_r29->unk34, var_r30++); + VECAdd(&sp68[2], &var_r29->unk34, var_r30++); + VECAdd(&sp68[3], &var_r29->unk34, var_r30++); } var_r19 = 1; } else { @@ -758,7 +758,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { } else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } - if (arg0->attr & 2) { + if (arg0->attr & HU3D_ATTR_ZWRITE_OFF) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); } else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); @@ -774,7 +774,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { var_r28 = &temp_r25->frame[temp_r31->unk_22]; temp_r21 = &temp_r22->pat[var_r28->pat]; HuSprTexLoad(temp_r31->unk_44, temp_r21->layer->bmpNo, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR); - if (Hu3DPauseF == 0 || (arg0->attr & 0x200000)) { + if (Hu3DPauseF == 0 || (arg0->attr & HU3D_ATTR_NOPAUSE)) { for (i = 0; i < (s32) temp_r31->unk_24 * minimumVcount; i++) { temp_r31->unk_28 += 1.0f; if (temp_r31->unk_28 >= var_r28->time) { @@ -1079,7 +1079,7 @@ static void ParManFunc(void) { temp_r30 = temp_r31->unk3C; temp_r27 = &Hu3DData[temp_r31->unk00]; while (1) { - if (Hu3DPauseF != 0 && !(temp_r27->attr & 0x200000)) { + if (Hu3DPauseF != 0 && !(temp_r27->attr & HU3D_ATTR_NOPAUSE)) { HuPrcVSleep(); continue; } @@ -1117,10 +1117,10 @@ static void ParManFunc(void) { sp20.x = (s32) frandmod((u32) (temp_r30->unk08 * 2.0f)) - temp_r30->unk08; sp20.y = (s32) frandmod((u32) (temp_r30->unk08 * 2.0f)) - temp_r30->unk08; sp20.z = (s32) frandmod((u32) (temp_r30->unk08 * 2.0f)) - temp_r30->unk08; - PSVECNormalize(&sp20, &sp20); - PSVECScale(&sp20, &sp20, temp_r30->unk08); - PSVECAdd(&sp20, &var_r29->unk34, &var_r29->unk34); - PSVECNormalize(&temp_r31->unk18, &sp2C); + VECNormalize(&sp20, &sp20); + VECScale(&sp20, &sp20, temp_r30->unk08); + VECAdd(&sp20, &var_r29->unk34, &var_r29->unk34); + VECNormalize(&temp_r31->unk18, &sp2C); if (temp_r31->unk02 & 0x100) { var_f28 = var_f26 + (360.0f / temp_r30->unk04) * var_r26; var_f29 = temp_r30->unk0C; @@ -1145,9 +1145,9 @@ static void ParManFunc(void) { sp14.y = 1.0f; sp14.z = sp2C.z; } - PSVECCrossProduct(&sp14, &sp2C, &sp8); + VECCrossProduct(&sp14, &sp2C, &sp8); } - PSVECNormalize(&sp8, &sp8); + VECNormalize(&sp8, &sp8); temp_f31 = sind(var_f28); temp_f30 = cosd(var_f28); sp14.x = sp8.x * (sp2C.x * sp2C.x + temp_f30 * (1.0f - sp2C.x * sp2C.x)) @@ -1159,7 +1159,7 @@ static void ParManFunc(void) { sp14.z = sp8.x * (sp2C.x * sp2C.z * (1.0f - temp_f30) - sp2C.y * temp_f31) + sp8.y * (sp2C.y * sp2C.z * (1.0f - temp_f30) + sp2C.x * temp_f31) + sp8.z * (sp2C.z * sp2C.z + temp_f30 * (1.0f - sp2C.z * sp2C.z)); - PSVECCrossProduct(&sp14, &sp2C, &sp8); + VECCrossProduct(&sp14, &sp2C, &sp8); temp_f31 = sind(var_f29); temp_f30 = cosd(var_f29); sp14.x = sp2C.x * (sp8.x * sp8.x + temp_f30 * (1.0f - sp8.x * sp8.x)) @@ -1171,7 +1171,7 @@ static void ParManFunc(void) { sp14.z = sp2C.x * (sp8.x * sp8.z * (1.0f - temp_f30) - sp8.y * temp_f31) + sp2C.y * (sp8.y * sp8.z * (1.0f - temp_f30) + sp8.x * temp_f31) + sp2C.z * (sp8.z * sp8.z + temp_f30 * (1.0f - sp8.z * sp8.z)); - PSVECNormalize(&sp14, &sp14); + VECNormalize(&sp14, &sp14); temp_f31 = temp_r30->unk1C; if (temp_r31->unk02 & 2) { temp_f31 = temp_f31 * 0.9 + (s32) frandmod((u32) (temp_f31 * 0.1 * 1000.0)) / 1000.0f; @@ -1180,7 +1180,7 @@ static void ParManFunc(void) { } else if (temp_r31->unk02 & 8) { temp_f31 = (s32) frandmod((u32) (temp_f31 * 1000.0f)) / 1000.0f; } - PSVECScale(&sp14, &var_r29->unk08, temp_f31); + VECScale(&sp14, &var_r29->unk08, temp_f31); var_r29->unk14 = temp_r30->unk10; var_r29->unk20 = temp_r30->unk20; if (temp_r31->unk02 & 0x1000) { @@ -1229,7 +1229,7 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) { s16 sp8; s16 i; - if (Hu3DPauseF == 0 || (model->attr & 0x200000)) { + if (Hu3DPauseF == 0 || (model->attr & HU3D_ATTR_NOPAUSE)) { var_r29 = particle->unk_48; for (i = 0; i < particle->unk_30; i++, var_r29++) { if (var_r29->unk2C) { @@ -1241,27 +1241,27 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) { var_r29->unk2C = var_r29->unk28; } if (!(temp_r28->unk02 & 0x80)) { - sp8 = var_r29->unk00_s16; + sp8 = var_r29->unk00; var_r29->unk34.x += var_r29->unk08.x + var_r29->unk14.x; var_r29->unk34.y += var_r29->unk08.y + var_r29->unk14.y; var_r29->unk34.z += var_r29->unk08.z + var_r29->unk14.z; - PSVECScale(&var_r29->unk08, &var_r29->unk08, var_r29->unk20); - PSVECAdd(&temp_r26->unk10, &var_r29->unk14, &var_r29->unk14); + VECScale(&var_r29->unk08, &var_r29->unk08, var_r29->unk20); + VECAdd(&temp_r26->unk10, &var_r29->unk14, &var_r29->unk14); if (temp_r28->unk02 & 0x200) { - PSVECSubtract(&temp_r28->unk24, &var_r29->unk34, &sp1C); - PSVECNormalize(&sp1C, &sp1C); - PSVECScale(&sp1C, &sp1C, temp_r28->unk30); - PSVECAdd(&sp1C, &var_r29->unk14, &var_r29->unk14); - PSVECAdd(&var_r29->unk08, &var_r29->unk14, &sp1C); - PSVECSubtract(&temp_r28->unk24, &var_r29->unk34, &sp10); - temp_f29 = PSVECSquareMag(&sp1C); - if (PSVECSquareMag(&sp10) <= temp_f29) { + VECSubtract(&temp_r28->unk24, &var_r29->unk34, &sp1C); + VECNormalize(&sp1C, &sp1C); + VECScale(&sp1C, &sp1C, temp_r28->unk30); + VECAdd(&sp1C, &var_r29->unk14, &var_r29->unk14); + VECAdd(&var_r29->unk08, &var_r29->unk14, &sp1C); + VECSubtract(&temp_r28->unk24, &var_r29->unk34, &sp10); + temp_f29 = VECSquareMag(&sp1C); + if (VECSquareMag(&sp10) <= temp_f29) { var_r29->unk2C = 0.0f; continue; } } var_r29->unk28 *= temp_r26->unk28; - var_f30 = (float) var_r29->unk00_s16 / temp_r26->unk00; + var_f30 = (float) var_r29->unk00 / temp_r26->unk00; if (var_f30 > 1.0f) { var_f30 = 1.0f; } @@ -1272,10 +1272,10 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) { var_r29->unk40.g = temp_r27->g + var_f30 * (temp_r24->g - temp_r27->g); var_r29->unk40.b = temp_r27->b + var_f30 * (temp_r24->b - temp_r27->b); var_r29->unk40.a = temp_r27->a + var_f30 * (temp_r24->a - temp_r27->a); - if (var_r29->unk2C < 0.01 || var_r29->unk00_s16 >= temp_r26->unk00) { + if (var_r29->unk2C < 0.01 || var_r29->unk00 >= temp_r26->unk00) { var_r29->unk2C = 0.0f; } - var_r29->unk00_s16++; + var_r29->unk00++; } } } diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index ab341258..fce142dd 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -3,21 +3,13 @@ #include "game/hsfformat.h" #include "game/hsfload.h" #include "game/sprite.h" +#include "game/disp.h" #include "ext_math.h" #include "string.h" -typedef struct hsf_draw_object { - /* 0x00 */ ModelData *model; - /* 0x04 */ HsfObject *object; - /* 0x08 */ float z; - /* 0x0C */ Mtx matrix; - /* 0x3C */ Vec scale; -} HsfDrawObject; - static void objCall(ModelData *arg0, HsfObject *arg1); static void objMesh(ModelData *arg0, HsfObject *arg1); -static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1); static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1); static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1); static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1); @@ -46,13 +38,13 @@ void GXResetWriteGatherPipe(void); static const Vec lbl_8011DD20 = { 0.0f, 0.0f, -1.0f }; -static HsfDrawObject DrawObjData[512]; +static HsfDrawObject DrawObjData[HU3D_MODEL_MAX]; static HsfAttribute *BmpPtrBak[8]; static Mtx MTXBuf[96]; static Vec scaleBuf[96]; static GXColor texCol[16]; static Mtx hiliteMtx; -static s16 DrawObjNum[512]; +static s16 DrawObjNum[HU3D_MODEL_MAX]; static Vec NBTB; static Vec NBTT; Vec PGMaxPos; @@ -129,13 +121,13 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { s16 i; temp_r28 = arg0->hsfData; - if (arg0->attr & 0x10) { + if (arg0->attr & HU3D_ATTR_HOOKFUNC) { temp_r31 = &DrawObjData[DrawObjIdx]; PSMTXCopy(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]; - temp_f31 = PSVECMag(&sp8); + temp_f31 = VECMag(&sp8); temp_r31->z = temp_f31; temp_r31->model = arg0; DrawObjIdx++; @@ -267,7 +259,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { PSMTXCopy(temp_r29->matrix, temp_r25->matrix); if (temp_r25->hook != -1) { temp_r31 = &Hu3DData[temp_r25->hook]; - if (!(temp_r31->attr & 1)) { + if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) { temp_r21 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; @@ -293,12 +285,12 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { attachMotionF = temp_r21; } } else { - if (arg0->attr & 0x4000) { + if (arg0->attr & HU3D_ATTR_NOCULL) { var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->matrix); } else { var_r19 = 1; } - if ((temp_r25->flags & 0x2000) || (arg1->flags & 0x400)) { + if ((temp_r25->flags & 0x2000) || (arg1->flags & HU3D_ATTR_CLUSTER_ON)) { var_r19 = 0; } if (var_r19 != 0 && (var_r30->scale.x != 0.0f || var_r30->scale.y != 0.0f || var_r30->scale.z != 0.0f)) { @@ -308,7 +300,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { sp10.x = temp_r29->matrix[0][3]; sp10.y = temp_r29->matrix[1][3]; sp10.z = temp_r29->matrix[2][3]; - temp_f31 = PSVECMag(&sp10); + temp_f31 = VECMag(&sp10); if (temp_r25->flags & 0x10000) { temp_r29->z = -(900000.0f - temp_f31); } else { @@ -319,7 +311,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { OSReport("Error: DrawObjIdx Over\n"); DrawObjIdx--; } - } else if (arg0->attr & 0x400000) { + } else if (arg0->attr & HU3D_ATTR_ZCMP_OFF) { temp_r29->z = -1000000.0f; DrawObjIdx++; if (DrawObjIdx > 0x200) { @@ -396,7 +388,7 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { } sp24 = sind(temp_r30->fov * 0.5) / cosd(temp_r30->fov * 0.5); temp_f27 = sp24 * temp_f18; - temp_f24 = 1.2f * temp_f27; + temp_f24 = HU_DISP_ASPECT * temp_f27; temp_f24 = temp_f21 + ABS(temp_f24); temp_f27 = temp_f21 + ABS(temp_f27); if (ABS(temp_f20) < temp_f24 && ABS(temp_f19) < temp_f27) { @@ -453,12 +445,12 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { sp2C.b = temp_r30->color[2]; sp2C.a = 0xFF; GXSetChanMatColor(GX_COLOR0A0, sp2C); - if (temp_r29->attr & 0x400000) { + if (temp_r29->attr & HU3D_ATTR_ZCMP_OFF) { var_r31 = GX_FALSE; } else { var_r31 = GX_TRUE; } - if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & 2) | (temp_r19 & 0x1200))) { + if ((temp_r30->invAlpha != 0.0f || (temp_r30->pass & 0xF) || (temp_r20->flags & 0x800)) && !((temp_r29->attr & HU3D_ATTR_ZWRITE_OFF) | (temp_r19 & 0x1200))) { GXSetZMode(var_r31, GX_LEQUAL, GX_FALSE); } else { GXSetZMode(var_r31, GX_LEQUAL, GX_TRUE); @@ -468,7 +460,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); } - if (temp_r29->attr & 0x800000) { + if (temp_r29->attr & HU3D_ATTR_CULL_FRONT) { GXSetCullMode(GX_CULL_FRONT); } else if (temp_r19 & 2) { GXSetCullMode(GX_CULL_NONE); @@ -490,15 +482,15 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r22; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 3 * sizeof(float)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3 * sizeof(float)); } if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); @@ -522,7 +514,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { SetShadowTex(); BmpPtrBak[1] = (HsfAttribute*) -1; } - if (temp_r29->attr & 0x200) { + if (temp_r29->attr & HU3D_ATTR_TOON_MAP) { toonMapNo = 2; HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); BmpPtrBak[2] = (HsfAttribute*) -1; @@ -540,7 +532,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { hiliteMapNo = 3; } - if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) { + if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) { if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; @@ -563,24 +555,24 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r22; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 3 * sizeof(float)); if (var_r22 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_RGBA4, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); } else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3 * sizeof(float)); } } GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, temp_r28->data.st->data, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r28->data.st->data, 2 * sizeof(float)); if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); @@ -674,7 +666,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { toonMapNo = shadowMapNo; } - if (temp_r29->attr & 0x200) { + if (temp_r29->attr & HU3D_ATTR_TOON_MAP) { HuSprTexLoad(toonAnim, 0, toonMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); BmpPtrBak[toonMapNo] = (HsfAttribute*) -1; projectionMapNo = toonMapNo + 1; @@ -692,7 +684,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { } else { hiliteMapNo = projectionMapNo; } - if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) { + if ((temp_r29->attr & HU3D_ATTR_HILITE) || (temp_r19 & 0x100)) { if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; @@ -761,7 +753,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r22 = 0; } sp1C.a = 255.0f * (1.0f - arg1->invAlpha); - if (temp_r28->attr & 0x200) { + if (temp_r28->attr & HU3D_ATTR_TOON_MAP) { sp1C.r = arg1->color[0]; sp1C.g = arg1->color[1]; sp1C.b = arg1->color[2]; @@ -792,7 +784,7 @@ static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r29++; } if (var_r26 != 0) { - if ((temp_r28->attr & 0x20000) || (sp18 & 0x100)) { + if ((temp_r28->attr & HU3D_ATTR_HILITE) || (sp18 & 0x100)) { GXSetTexCoordGen2(var_r29, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r30, var_r29, hiliteMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_ONE, GX_CC_TEXC, GX_CC_CPREV); @@ -983,7 +975,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r31++; } else { GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0); - if (!(temp_r25->attr & 0x200)) { + if (!(temp_r25->attr & HU3D_ATTR_TOON_MAP)) { if (texCol[0].a == 1) { sp50 = texCol[0]; sp50.a = 0xFF; @@ -1030,7 +1022,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } else { GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); } - if (temp_r25->attr & 0x200) { + if (temp_r25->attr & HU3D_ATTR_TOON_MAP) { GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); @@ -1053,7 +1045,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { var_r31++; } if (var_r21 != 0) { - if ((temp_r25->attr & 0x20000) || (sp40 & 0x100)) { + if ((temp_r25->attr & HU3D_ATTR_HILITE) || (sp40 & 0x100)) { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX7, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, hiliteMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV); @@ -1270,7 +1262,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { } var_r31++; } - if (temp_r25->attr & 0x200) { + if (temp_r25->attr & HU3D_ATTR_TOON_MAP) { GXSetTexCoordGen2(var_r30, GX_TG_SRTG, GX_TG_COLOR0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(var_r31, var_r30, toonMapNo, GX_COLOR0A0); GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); @@ -1323,7 +1315,7 @@ static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { sp50.a = (1.0f - arg1->invAlpha) * 255.0f; GXSetTevColor(GX_TEVREG0, sp50); if (var_r21 != 0) { - if ((temp_r25->attr & 0x20000) || (sp40 & 0x100)) { + if ((temp_r25->attr & HU3D_ATTR_HILITE) || (sp40 & 0x100)) { var_f31 = (arg1->hilite_scale / 300.0f) * 6.0f; if (var_f31 < 0.1) { var_f31 = 0.1f; @@ -1651,15 +1643,15 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r30; 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->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 3 * sizeof(float)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3 * sizeof(float)); } if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); @@ -1684,24 +1676,24 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r30; 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->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 3 * sizeof(float)); if (var_r30 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_RGBA4, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); } else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3 * sizeof(float)); } } GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, temp_r31->data.st->data, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r31->data.st->data, 2 * sizeof(float)); if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); @@ -1835,7 +1827,7 @@ static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 TL32F = 1; break; } - if ((arg0->attr & 0x40) || (arg2->flag & 0x40)) { + if ((arg0->attr & HU3D_ATTR_TEX_NEAR) || (arg2->flag & 0x40)) { GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } else if (var_r20) { GXInitTexObjLOD(&sp1C, GX_LIN_MIP_LIN, GX_LINEAR, 0.0f, arg2->unk78, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_2); @@ -2107,7 +2099,7 @@ void Hu3DDrawPost(void) { GXSetCullMode(GX_CULL_BACK); for (var_r23 = 0; var_r23 < DrawObjIdx; var_r23++) { temp_r28 = &DrawObjData[DrawObjNum[var_r23]]; - if (temp_r28->model->attr & 0x10) { + if (temp_r28->model->attr & HU3D_ATTR_HOOKFUNC) { sp28 = (void*) temp_r28->model->hsfData; sp28(temp_r28->model, temp_r28->matrix); for (i = 0; i < 8; i++) { @@ -2145,14 +2137,14 @@ void Hu3DDrawPost(void) { } } } - if ((temp_r28->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { + if ((temp_r28->model->attr & HU3D_ATTR_HILITE) || (Hu3DObjInfoP->flags & 0x8000)) { sp54 = lbl_8011DD20; temp_r22 = &Hu3DGlobalLight[temp_r28->model->unk_03]; sp30 = temp_r22->unk_28; if (temp_r22->unk_00 & 0x8000) { PSMTXMultVecSR(Hu3DCameraMtx, &sp30, &sp30); } - temp_f30 = PSVECDotProduct(&sp30, &sp54); + temp_f30 = VECDotProduct(&sp30, &sp54); temp_f30 *= 10000.0f; OSf32tos16(&temp_f30, &sp8); if (sp8 == -10000) { @@ -2169,8 +2161,8 @@ void Hu3DDrawPost(void) { if (sp8 == 10000) { PSMTXIdentity(spC0); } else { - PSVECCrossProduct(&sp3C, &sp54, &sp48); - temp_f28 = acosf(PSVECDotProduct(&sp54, &sp3C)); + VECCrossProduct(&sp3C, &sp54, &sp48); + temp_f28 = acosf(VECDotProduct(&sp54, &sp3C)); PSMTXRotAxisRad(spC0, &sp48, temp_f28); } PSMTXConcat(spC0, sp90, sp60); @@ -2284,14 +2276,14 @@ static void ObjDraw(HsfDrawObject *arg0) { } } } - if ((arg0->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { + if ((arg0->model->attr & HU3D_ATTR_HILITE) || (Hu3DObjInfoP->flags & 0x8000)) { sp44 = lbl_8011DD20; temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03]; sp20 = temp_r24->unk_28; if (temp_r24->unk_00 & 0x8000) { PSMTXMultVecSR(Hu3DCameraMtx, &sp20, &sp20); } - temp_f30 = PSVECDotProduct(&sp20, &sp44); + temp_f30 = VECDotProduct(&sp20, &sp44); temp_f30 *= 10000.0f; OSf32tos16(&temp_f30, &var_r21); if (var_r21 == -10000) { @@ -2308,8 +2300,8 @@ static void ObjDraw(HsfDrawObject *arg0) { if (var_r21 == 10000) { PSMTXIdentity(spB0); } else { - PSVECCrossProduct(&sp2C, &sp44, &sp38); - temp_f29 = acosf(PSVECDotProduct(&sp44, &sp2C)); + VECCrossProduct(&sp2C, &sp44, &sp38); + temp_f29 = acosf(VECDotProduct(&sp44, &sp2C)); PSMTXRotAxisRad(spB0, &sp38, temp_f29); } PSMTXConcat(spB0, sp80, sp50); @@ -2379,7 +2371,7 @@ void MakeDisplayList(s16 arg0, u32 arg1) { faceNumBuf = HuMemDirectMallocNum(HEAP_DATA, 0x800 * sizeof(u16), mallocNo); MDObjCall(temp_r31, temp_r31->root); HuMemDirectFree(faceNumBuf); - if (var_r30->attr & 4) { + if (var_r30->attr & HU3D_ATTR_SHADOW) { Hu3DShadowCamBit++; } } @@ -2434,7 +2426,7 @@ static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { var_r28 = temp_r29->data; if (arg1->flags & 4) { Hu3DObjInfoP->flags |= 0x400; - Hu3DModelAttrSet(curModelID, 4); + Hu3DModelAttrSet(curModelID, HU3D_ATTR_SHADOW); } if (arg1->flags & 8) { Hu3DObjInfoP->flags |= 8; @@ -2531,53 +2523,53 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { case 2: GXBegin(GX_TRIANGLES, GX_VTXFMT0, faceNumBuf[drawCnt]); for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 3; var_r27++, arg1++) { - GXUnknownu16(arg1->indices[0][0]); + GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[0][1]); + GXNormal1x16(arg1->indices[0][1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[0][3]); + GXTexCoord1x16(arg1->indices[0][3]); } - GXUnknownu16(arg1->indices[2][0]); + GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[2][1]); + GXNormal1x16(arg1->indices[2][1]); } else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[2][3]); + GXTexCoord1x16(arg1->indices[2][3]); } - GXUnknownu16(arg1->indices[1][0]); + GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[1][1]); + GXNormal1x16(arg1->indices[1][1]); } else { MakeNBT(arg0, arg1, 1, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[1][3]); + GXTexCoord1x16(arg1->indices[1][3]); } } faceCnt = faceNumBuf[drawCnt] / 3; @@ -2585,140 +2577,140 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { case 3: GXBegin(GX_QUADS, GX_VTXFMT0, faceNumBuf[drawCnt]); for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 4; var_r27++, arg1++) { - GXUnknownu16(arg1->indices[0][0]); + GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[0][1]); + GXNormal1x16(arg1->indices[0][1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[0][3]); + GXTexCoord1x16(arg1->indices[0][3]); } - GXUnknownu16(arg1->indices[2][0]); + GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[2][1]); + GXNormal1x16(arg1->indices[2][1]); } else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[2][3]); + GXTexCoord1x16(arg1->indices[2][3]); } - GXUnknownu16(arg1->indices[3][0]); + GXPosition1x16(arg1->indices[3][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[3][1]); + GXNormal1x16(arg1->indices[3][1]); } else { MakeNBT(arg0, arg1, 3, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[3][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[3][3]); + GXTexCoord1x16(arg1->indices[3][3]); } - GXUnknownu16(arg1->indices[1][0]); + GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[1][1]); + GXNormal1x16(arg1->indices[1][1]); } else { MakeNBT(arg0, arg1, 1, 3); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[1][3]); + GXTexCoord1x16(arg1->indices[1][3]); } } faceCnt = faceNumBuf[drawCnt] / 4; break; case 4: GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, faceNumBuf[drawCnt]); - GXUnknownu16(arg1->indices[0][0]); + GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[0][1]); + GXNormal1x16(arg1->indices[0][1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[0][3]); + GXTexCoord1x16(arg1->indices[0][3]); } - GXUnknownu16(arg1->indices[2][0]); + GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[2][1]); + GXNormal1x16(arg1->indices[2][1]); } else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[2][3]); + GXTexCoord1x16(arg1->indices[2][3]); } - GXUnknownu16(arg1->indices[1][0]); + GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[1][1]); + GXNormal1x16(arg1->indices[1][1]); } else { MakeNBT(arg0, arg1, 1, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[1][3]); + GXTexCoord1x16(arg1->indices[1][3]); } var_r24 = arg1->strip.data; for (var_r27 = 0; var_r27 < arg1->strip.count; var_r27++, var_r24 += 4) { - GXUnknownu16(var_r24[0]); + GXPosition1x16(var_r24[0]); if (var_r26 == -1) { - GXUnknownu16(var_r24[1]); + GXNormal1x16(var_r24[1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = var_r24[2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(var_r24[3]); + GXTexCoord1x16(var_r24[3]); } } faceCnt = arg1->strip.count + 1; @@ -2756,16 +2748,16 @@ static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { sp10.x = temp_r28[temp_r27][0]; sp10.y = temp_r28[temp_r27][1]; sp10.z = temp_r28[temp_r27][2]; - PSVECNormalize(&sp10, &sp10); + VECNormalize(&sp10, &sp10); } NBTB.x = temp_r31[temp_r25].x - temp_r31[temp_r24].x; NBTB.y = temp_r31[temp_r25].y - temp_r31[temp_r24].y; NBTB.z = temp_r31[temp_r25].z - temp_r31[temp_r24].z; - PSVECNormalize(&NBTB, &NBTB); - PSVECCrossProduct(&NBTB, &sp10, &NBTT); - GXPosition3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); - GXPosition3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); - GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); + VECNormalize(&NBTB, &NBTB); + VECCrossProduct(&NBTB, &sp10, &NBTT); + GXNormal3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); + GXNormal3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); + GXNormal3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); } static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { @@ -2787,11 +2779,11 @@ static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { sp10.x = temp_r29[temp_r28][0]; sp10.y = temp_r29[temp_r28][1]; sp10.z = temp_r29[temp_r28][2]; - PSVECNormalize(&sp10, &sp10); + VECNormalize(&sp10, &sp10); } - GXPosition3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); - GXPosition3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); - GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); + GXNormal3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); + GXNormal3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); + GXNormal3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); } static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) { @@ -3067,7 +3059,7 @@ void PGObjCalc(ModelData *arg0, HsfObject *arg1) { temp_r28 = arg1->constData; if (temp_r28 && temp_r28->hook != -1) { temp_r31 = &Hu3DData[temp_r28->hook]; - if (!(temp_r31->attr & 1)) { + if (!(temp_r31->attr & HU3D_ATTR_DISPOFF)) { var_r27 = attachMotionF; if (temp_r31->unk_08 != -1) { attachMotionF = 1; diff --git a/src/game/hsfex.c b/src/game/hsfex.c index 7f72507c..490e19e3 100644 --- a/src/game/hsfex.c +++ b/src/game/hsfex.c @@ -1,8 +1,12 @@ #include "game/hsfex.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "game/disp.h" -#include "math.h" +#include "ext_math.h" + +#define DISP_HALF_W (HU_DISP_WIDTH/2.0f) +#define DISP_HALF_H (HU_DISP_HEIGHT/2.0f) typedef struct { /* 0x00 */ float unk00; @@ -18,7 +22,7 @@ void CamMotionEx2(s16 arg0, s16 arg1, float arg2, s16 arg3) { CameraData *temp_r30; s16 i; - for (i = 0; i < 16; i++) { + for (i = 0; i < HU3D_CAM_MAX; i++) { if (arg1 & (1 << i)) { break; } @@ -57,7 +61,7 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5 temp_r22 = temp_r23->hsfData; temp_r18 = temp_r19->unk_04; temp_r26 = temp_r18->motion; - for (var_r25 = 0; var_r25 < 16; var_r25++) { + for (var_r25 = 0; var_r25 < HU3D_CAM_MAX; var_r25++) { if (arg1 & (1 << var_r25)) { break; } @@ -105,8 +109,8 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5 var_r31->unk04 = 0.0f; var_f26 = 0.0f; for (var_f31 = var_f26; var_f31 < var_r29 - 1; var_f31 += 1.0f, var_r31++) { - PSVECSubtract(&var_r31[1].unk08, &var_r31[0].unk08, &sp3C); - var_r31[1].unk04 = PSVECMag(&sp3C); + VECSubtract(&var_r31[1].unk08, &var_r31[0].unk08, &sp3C); + var_r31[1].unk04 = VECMag(&sp3C); var_f26 += var_r31[1].unk04; } var_r31 = temp_r21; @@ -125,10 +129,10 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5 var_f30 = var_f31; break; case 1: - var_f30 = arg5 * sin(90.0f * (var_f31 / arg5) * M_PI / 180.0); + var_f30 = arg5 * sind(90.0f * (var_f31 / arg5)); break; case 2: - var_f30 = arg5 * (1.0 - cos(90.0f * (var_f31 / arg5) * M_PI / 180.0)); + var_f30 = arg5 * (1.0 - cosd(90.0f * (var_f31 / arg5))); break; } var_r31 = temp_r21; @@ -340,12 +344,12 @@ static void SetObjCamMotion(s16 arg0, HsfTrack *arg1, float arg2, HsfexStruct02 arg3->unk20.z = temp_r31->scale.z * (arg2 + temp_r31->pos.z); break; case 14: - PSVECSubtract(&arg3->unk08, &arg3->unk20, &spC); - PSVECNormalize(&spC, &spC); - sp18.x = spC.x * spC.y * (1.0 - cos(M_PI * arg2 / 180.0)) - spC.z * sin(M_PI * arg2 / 180.0); - sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cos(M_PI * arg2 / 180.0); - sp18.z = spC.y * spC.z * (1.0 - cos(M_PI * arg2 / 180.0)) + spC.x * sin(M_PI * arg2 / 180.0); - PSVECNormalize(&sp18, &arg3->unk14); + VECSubtract(&arg3->unk08, &arg3->unk20, &spC); + VECNormalize(&spC, &spC); + sp18.x = spC.x * spC.y * (1.0 - cosd(arg2)) - spC.z * sind(arg2); + sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cosd(arg2); + sp18.z = spC.y * spC.z * (1.0 - cosd(arg2)) + spC.x * sind(arg2); + VECNormalize(&sp18, &arg3->unk14); break; } } @@ -422,17 +426,17 @@ void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2) { s16 i; Mtx spC; - for (i = 0; i < 16; i++) { + for (i = 0; i < HU3D_CAM_MAX; i++) { if (arg1 & (1 << i)) { break; } } temp_r31 = &Hu3DCamera[i]; - temp_f30 = sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0); + temp_f30 = sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2); temp_f31 = temp_f30 * arg0->z * 2.0f; - temp_f29 = temp_f31 * 1.2f; - temp_f28 = arg0->x / 576.0f; - temp_f27 = arg0->y / 480.0f; + temp_f29 = temp_f31 * HU_DISP_ASPECT; + temp_f28 = arg0->x / HU_DISP_WIDTH; + temp_f27 = arg0->y / HU_DISP_HEIGHT; arg2->x = (temp_f28 - 0.5) * temp_f29; arg2->y = -(temp_f27 - 0.5) * temp_f31; arg2->z = -arg0->z; @@ -449,7 +453,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { s16 i; Mtx sp1C; - for (i = 0; i < 16; i++) { + for (i = 0; i < HU3D_CAM_MAX; i++) { if (arg1 & (1 << i)) { break; } @@ -457,10 +461,10 @@ 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); - temp_f31 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z * 1.2f; - temp_f30 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z; - arg2->x = 288.0f + sp10.x * (288.0f / -temp_f31); - arg2->y = 240.0f + sp10.y * (240.0f / temp_f30); + 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); + arg2->y = DISP_HALF_H + sp10.y * (DISP_HALF_H / temp_f30); arg2->z = 0.0f; } @@ -541,30 +545,30 @@ void Hu3DMtxScaleGet(Mtx arg0, Vec *arg1) { sp2C.x = arg0[0][0]; sp2C.y = arg0[1][0]; sp2C.z = arg0[2][0]; - arg1->x = PSVECMag(&sp2C); - PSVECNormalize(&sp2C, &sp2C); + arg1->x = VECMag(&sp2C); + VECNormalize(&sp2C, &sp2C); sp20.x = arg0[0][1]; sp20.y = arg0[1][1]; sp20.z = arg0[2][1]; - sp38.x = PSVECDotProduct(&sp2C, &sp20); - PSVECScale(&sp2C, &sp8, sp38.x); - PSVECSubtract(&sp20, &sp8, &sp20); - arg1->y = PSVECMag(&sp20); - PSVECNormalize(&sp20, &sp20); + sp38.x = VECDotProduct(&sp2C, &sp20); + VECScale(&sp2C, &sp8, sp38.x); + VECSubtract(&sp20, &sp8, &sp20); + arg1->y = VECMag(&sp20); + VECNormalize(&sp20, &sp20); sp38.x /= arg1->y; sp14.x = arg0[0][2]; sp14.y = arg0[1][2]; sp14.z = arg0[2][2]; - sp38.z = PSVECDotProduct(&sp20, &sp14); - PSVECScale(&sp20, &sp8, sp38.z); - PSVECSubtract(&sp14, &sp8, &sp14); - sp38.y = PSVECDotProduct(&sp2C, &sp14); - PSVECScale(&sp2C, &sp8, sp38.y); - PSVECSubtract(&sp14, &sp8, &sp14); - arg1->z = PSVECMag(&sp14); - PSVECNormalize(&sp14, &sp14); - PSVECCrossProduct(&sp20, &sp14, &sp8); - if (PSVECDotProduct(&sp2C, &sp8) < 0.0) { + sp38.z = VECDotProduct(&sp20, &sp14); + VECScale(&sp20, &sp8, sp38.z); + VECSubtract(&sp14, &sp8, &sp14); + sp38.y = VECDotProduct(&sp2C, &sp14); + VECScale(&sp2C, &sp8, sp38.y); + VECSubtract(&sp14, &sp8, &sp14); + arg1->z = VECMag(&sp14); + VECNormalize(&sp14, &sp14); + VECCrossProduct(&sp20, &sp14, &sp8); + if (VECDotProduct(&sp2C, &sp8) < 0.0) { arg1->x *= -1.0; arg1->y *= -1.0; arg1->z *= -1.0; diff --git a/src/game/hsfman.c b/src/game/hsfman.c index f695dedf..243da902 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -10,13 +10,17 @@ #include "game/perf.h" #include "game/ShapeExec.h" #include "game/sprite.h" +#include "game/disp.h" + #include "dolphin/gx/GXVert.h" #include "math.h" #include "ext_math.h" -ModelData Hu3DData[0x200]; -CameraData Hu3DCamera[0x10]; +#define SHADOW_HEAP_SIZE 0x9000 + +ModelData Hu3DData[HU3D_MODEL_MAX]; +CameraData Hu3DCamera[HU3D_CAM_MAX]; static s16 layerNum[8]; static void (*layerHook[8])(s16); AnimData *reflectAnim[5]; @@ -63,11 +67,11 @@ void Hu3DInit(void) { s16 i; data = Hu3DData; - for (i = 0; i < 0x200; i++, data++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, data++) { data->hsfData = NULL; } camera = Hu3DCamera; - for (i = 0; i < 0x10; i++, camera++) { + for (i = 0; i < HU3D_CAM_MAX; i++, camera++) { camera->fov = -1.0f; } Hu3DMotionInit(); @@ -111,9 +115,9 @@ void Hu3DPreProc(void) { GXSetCopyClear(BGColor, 0xFFFFFF); data = &Hu3DData[0]; - for (i = 0; i < 0x200; i++, data++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, data++) { if (data->hsfData != 0) { - data->attr &= ~0x800; + data->attr &= ~HU3D_ATTR_MOT_EXEC; } } totalPolyCnted = totalPolyCnt; @@ -123,6 +127,8 @@ void Hu3DPreProc(void) { totalPolyCnt = totalMatCnt = totalTexCnt = totalTexCacheCnt = 0; } +#define HU3D_ATTR_CAMERA_UPDATE (HU3D_ATTR_CAMERA_MOTON|HU3D_ATTR_DISPOFF) + void Hu3DExec(void) { GXColor unusedColor = {0, 0, 0, 0}; CameraData* camera; @@ -144,7 +150,7 @@ void Hu3DExec(void) { shadowModelDrawF = 0; HuSprBegin(); var_r24 = 0; - for (Hu3DCameraNo = 0; Hu3DCameraNo < 0x10; Hu3DCameraNo++, camera++) { + for (Hu3DCameraNo = 0; Hu3DCameraNo < HU3D_CAM_MAX; Hu3DCameraNo++, camera++) { if (-1.0f != camera->fov) { GXInvalidateVtxCache(); temp_r22 = (s16) (1 << Hu3DCameraNo); @@ -186,18 +192,18 @@ void Hu3DExec(void) { Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); PSMTXInvXpose(Hu3DCameraMtx, Hu3DCameraMtxXPose); data = Hu3DData; - for (i = 0, var_r23 = i; i < 0x200; i++, data++) { + for (i = 0, var_r23 = i; i < HU3D_MODEL_MAX; i++, data++) { if (data->hsfData != 0) { - if ((data->attr & 0x10000) != 0) { + if ((data->attr & HU3D_ATTR_CAMERA) != 0) { Hu3DCameraMotionExec(i); } else { - if ((data->attr & 0x2001) == 0x2001 && data->unk_08 != -1) { + if ((data->attr & HU3D_ATTR_CAMERA_UPDATE) == HU3D_ATTR_CAMERA_UPDATE && data->unk_08 != -1) { Hu3DMotionExec(i, data->unk_08, data->unk_64, 0); } - if ((data->attr & 9) == 0 && (data->camera & temp_r22) != 0 && data->layer == j) { - if (((data->attr & 0x800) == 0 && (data->attr & 0x100) == 0) || ((data->attr & 0x100) != 0 && (data->unk_00 & 1) != 0)) { + if ((data->attr & (HU3D_ATTR_DISPOFF|HU3D_ATTR_MOTION_OFF)) == 0 && (data->camera & temp_r22) != 0 && data->layer == j) { + if (((data->attr & HU3D_ATTR_MOT_EXEC) == 0 && (data->attr & HU3D_ATTR_MOT_SLOW) == 0) || ((data->attr & HU3D_ATTR_MOT_SLOW) != 0 && (data->unk_00 & 1) != 0)) { var_r25 = 0; - data->motion_attr &= 0xBFFFFFFF; + data->motion_attr &= ~HU3D_MOTATTR; if (data->unk_08 != -1) { Hu3DMotionExec(i, data->unk_08, data->unk_64, 0); } @@ -207,7 +213,7 @@ void Hu3DExec(void) { if (data->unk_0A != -1) { Hu3DMotionExec(i, data->unk_0A, data->unk_74, 1); } - if ((data->attr & 0x400) != 0) { + if ((data->attr & HU3D_ATTR_CLUSTER_ON) != 0) { ClusterMotionExec(data); var_r25 = 1; } @@ -219,7 +225,7 @@ void Hu3DExec(void) { } var_r25 = 1; } - if ((data->attr & 0x90) == 0 && (data->motion_attr & 0x40000002) == 0) { + if ((data->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) == 0 && (data->motion_attr & HU3D_MOTATTR_PAUSE) == 0) { var_r25 = 1; InitVtxParm(data->hsfData); if (data->unk_0E != -1) { @@ -238,11 +244,11 @@ void Hu3DExec(void) { } data->attr |= 0x800; } - if (var_r24 != 0 && (data->attr & 0x10) != 0) { + if (var_r24 != 0 && (data->attr & HU3D_ATTR_HOOKFUNC) != 0) { GXWaitDrawDone(); var_r24 = 0; } - if ((data->attr & 0x8000) == 0 && (0.0f != data->scale.x || 0.0f != data->scale.y || 0.0f != data->scale.z)) { + if ((data->attr & HU3D_ATTR_HOOK) == 0 && (0.0f != data->scale.x || 0.0f != data->scale.y || 0.0f != data->scale.z)) { 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); @@ -267,8 +273,8 @@ void Hu3DExec(void) { HuSprDispInit(); HuSprExec(0); data = Hu3DData; - for (i = 0; i < 0x200; i++, data++) { - if (data->hsfData != 0 && (data->unk_08 != -1 || (data->attr & 0x400) != 0 || data->unk_0E != -1) && (Hu3DPauseF == 0 || (data->attr & 0x200000) != 0)) { + for (i = 0; i < HU3D_MODEL_MAX; i++, data++) { + if (data->hsfData != 0 && (data->unk_08 != -1 || (data->attr & HU3D_ATTR_CLUSTER_ON) != 0 || data->unk_0E != -1) && (Hu3DPauseF == 0 || (data->attr & HU3D_ATTR_NOPAUSE) != 0)) { Hu3DMotionNext(i); } } @@ -334,19 +340,19 @@ s16 Hu3DModelCreate(void *arg0) { var_r31 = Hu3DData; - for (var_r30 = 0; var_r30 < 0x200; var_r30++, var_r31++) { + for (var_r30 = 0; var_r30 < HU3D_MODEL_MAX; var_r30++, var_r31++) { if (var_r31->hsfData == 0x0) { break; } } - if (var_r30 == 0x200) { + if (var_r30 == HU3D_MODEL_MAX) { OSReport("Error: Create Model Over!\n"); return -1; } var_r31->hsfData = LoadHSF(arg0); var_r31->unk_48 = Hu3DMallocNo = (u32)var_r31->hsfData; - var_r31->attr = 0; - var_r31->motion_attr = 0; + var_r31->attr = HU3D_ATTR_NONE; + var_r31->motion_attr = HU3D_ATTR_NONE; var_r31->unk_02 = 0; MakeDisplayList(var_r30, var_r31->unk_48); var_r31->unk_68 = 1.0f; @@ -416,12 +422,12 @@ s16 Hu3DModelLink(s16 arg0) { temp_r30 = &Hu3DData[arg0]; var_r31 = Hu3DData; - for (var_r28 = 0; var_r28 < 0x200; var_r28++, var_r31++) { + for (var_r28 = 0; var_r28 < HU3D_MODEL_MAX; var_r28++, var_r31++) { if (var_r31->hsfData == 0x0) { break; } } - if (var_r28 == 0x200) { + if (var_r28 == HU3D_MODEL_MAX) { return -1; } var_r31->unk_C8 = temp_r30->hsfData; @@ -433,7 +439,7 @@ s16 Hu3DModelLink(s16 arg0) { var_r31->hsfData->object = temp_r3_2; var_r31->unk_48 = temp_r30->unk_48; var_r31->attr = temp_r30->attr; - temp_r30->attr |= 0x100000; + temp_r30->attr |= HU3D_ATTR_LINK; var_r31->motion_attr = temp_r30->motion_attr; var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f; var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f; @@ -448,7 +454,7 @@ s16 Hu3DModelLink(s16 arg0) { var_r31->unk_10[i] = temp_r30->unk_10[i]; if (var_r31->unk_10[i] != -1) { ClusterAdjustObject(var_r31->hsfData, Hu3DMotion[var_r31->unk_10[i]].unk_04); - var_r31->attr |= 0x400; + var_r31->attr |= HU3D_ATTR_CLUSTER_ON; } } var_r31->unk_64 = temp_r30->unk_64; @@ -479,18 +485,18 @@ s16 Hu3DHookFuncCreate(ModelHookFunc hook) { s16 i; var_r31 = Hu3DData; - for (var_r29 = 0; var_r29 < 0x200; var_r29++, var_r31++) { + for (var_r29 = 0; var_r29 < HU3D_MODEL_MAX; var_r29++, var_r31++) { if (var_r31->hsfData == 0) { break; } } - if (var_r29 == 0x200) { + if (var_r29 == HU3D_MODEL_MAX) { return -1; } var_r31->hook = hook; var_r31->unk_48 = var_r29+10000; - var_r31->attr = 0x10; - var_r31->motion_attr = 0; + var_r31->attr = HU3D_ATTR_HOOKFUNC; + var_r31->motion_attr = HU3D_ATTR_NONE; var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f; var_r31->rot.x = var_r31->rot.y = var_r31->rot.z = 0.0f; var_r31->scale.x = var_r31->scale.y = var_r31->scale.z = 1.0f; @@ -531,14 +537,14 @@ void Hu3DModelKill(s16 arg0) { temp_r31 = &Hu3DData[arg0]; var_r28 = temp_r31->hsfData; if (var_r28 != 0) { - if ((temp_r31->attr & 4) != 0) { + if ((temp_r31->attr & HU3D_ATTR_SHADOW) != 0) { Hu3DShadowCamBit -= 1; } layerNum[temp_r31->layer] -= 1; - if ((temp_r31->attr & 0x10) != 0) { + if ((temp_r31->attr & HU3D_ATTR_HOOKFUNC) != 0) { HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48); - if ((temp_r31->attr & 0x20) != 0) { + if ((temp_r31->attr & HU3D_ATTR_PARTICLE_KILL) != 0) { copy = temp_r31->unk_120; HuSprAnimKill(copy->unk_44); } @@ -548,7 +554,7 @@ void Hu3DModelKill(s16 arg0) { } return; } - if ((temp_r31->attr & 0x10000) != 0) { + if ((temp_r31->attr & HU3D_ATTR_CAMERA) != 0) { if (temp_r31->unk_08 != -1) { Hu3DMotionKill(temp_r31->unk_08); } @@ -564,7 +570,7 @@ void Hu3DModelKill(s16 arg0) { temp_r31->hsfData = var_r28; } var_r30 = Hu3DData; - for (var_r27 = i = 0; i < 0x200; i++, var_r30++) { + for (var_r27 = i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if ((var_r30->hsfData != 0) && (var_r30->hsfData == var_r28 || (var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28))) { var_r27++; } @@ -573,7 +579,7 @@ void Hu3DModelKill(s16 arg0) { temp_r31->hsfData = NULL; var_r30 = Hu3DData; if (temp_r31->unk_20 != -1) { - for (i = 0; i < 0x200; i++, var_r30++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if (var_r30->hsfData != 0 && var_r30->unk_24 != -1 && var_r30->unk_C8 == var_r28) { Hu3DMotion[temp_r31->unk_20].unk_02 = i; break; @@ -618,7 +624,7 @@ void Hu3DModelAllKill(void) { modelKillAllF = 1; var_r30 = Hu3DData; - for (i = 0; i < 0x200; i++, var_r30++) { + for (i = 0; i < HU3D_MODEL_MAX; i++, var_r30++) { if (var_r30->hsfData != 0) { Hu3DModelKill(i); } @@ -685,8 +691,8 @@ void Hu3DModelAttrSet(s16 arg0, u32 arg1) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - if ((arg1 & (1 << 30)) != 0) { - temp_r31->motion_attr |= arg1 & 0xBFFFFFFF; + if ((arg1 & HU3D_MOTATTR) != 0) { + temp_r31->motion_attr |= arg1 & ~HU3D_MOTATTR; } else { temp_r31->attr |= arg1; } @@ -696,7 +702,7 @@ void Hu3DModelAttrReset(s16 arg0, u32 arg1) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - if ((arg1 & (1 << 30)) != 0) { + if ((arg1 & HU3D_MOTATTR) != 0) { temp_r31->motion_attr &= ~arg1; } else { temp_r31->attr &= ~arg1; @@ -805,7 +811,7 @@ void Hu3DModelTPLvlSet(s16 arg0, f32 arg8) { temp_r25->flags |= 1; } } - temp_r28->attr |= 0x40000; + temp_r28->attr |= HU3D_ATTR_TPLVL_SET; } void Hu3DModelHiliteMapSet(s16 arg0, AnimData *arg1) { @@ -859,10 +865,10 @@ void Hu3DModelShadowSet(s16 arg0) { temp_r31 = &Hu3DData[arg0]; temp_r30 = temp_r31->hsfData; - if ((temp_r31->attr & 4) == 0) { + if ((temp_r31->attr & HU3D_ATTR_SHADOW) == 0) { Hu3DShadowCamBit++; } - temp_r31->attr |= 4; + temp_r31->attr |= HU3D_ATTR_SHADOW; var_r27 = temp_r30->object; for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) { @@ -880,7 +886,7 @@ void Hu3DModelShadowReset(s16 arg0) { temp_r31 = &Hu3DData[(s16) arg0]; temp_r30 = temp_r31->hsfData; - temp_r31->attr &= ~4; + temp_r31->attr &= ~HU3D_ATTR_SHADOW; Hu3DShadowCamBit -= 1; var_r27 = temp_r30->object; for (var_r28 = 0; var_r28 < temp_r30->objectCnt; var_r28++, var_r27++) { @@ -892,14 +898,14 @@ void Hu3DModelShadowDispOn(s16 arg0) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - temp_r31->attr |= 4; + temp_r31->attr |= HU3D_ATTR_SHADOW; } void Hu3DModelShadowDispOff(s16 arg0) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - temp_r31->attr &= ~4; + temp_r31->attr &= ~HU3D_ATTR_SHADOW; } void Hu3DModelShadowMapSet(s16 arg0) { @@ -967,7 +973,7 @@ void Hu3DModelHookSet(s16 arg0, char *arg1, s16 arg2) { constData = copy->constData; constData->hook = arg2; data = &Hu3DData[arg2]; - data->attr |= 0x8000; + data->attr |= HU3D_ATTR_HOOK; (void)data; return; } @@ -994,7 +1000,7 @@ void Hu3DModelHookReset(s16 arg0) { if (temp_r31->hook != -1) { temp_r0 = temp_r31->hook; temp_r28 = &Hu3DData[temp_r0]; - temp_r28->attr &= ~0x8000; + temp_r28->attr &= ~HU3D_ATTR_HOOK; temp_r31->hook = -1; (void)temp_r28; } @@ -1023,7 +1029,7 @@ void Hu3DModelHookObjReset(s16 arg0, char *arg1) { temp_r29 = copy->constData; temp_r0 = temp_r29->hook; temp_r28 = &Hu3DData[temp_r0]; - temp_r28->attr &= ~0x8000; + temp_r28->attr &= ~HU3D_ATTR_HOOK; temp_r29->hook = -1; (void)temp_r28; return; @@ -1067,7 +1073,7 @@ void Hu3DModelHiliteTypeSet(s16 arg0, s16 arg1) { var_r31->flags |= 0x100; } temp_r29 = &Hu3DData[arg0]; - temp_r29->attr |= 0x20000; + temp_r29->attr |= HU3D_ATTR_HILITE; (void)temp_r29; } @@ -1081,12 +1087,12 @@ CameraData defCamera = { 20.0f, 5000.0f, 0.0f, - 1.2f, + HU_DISP_ASPECT, {0.0f, 0.0f, 100.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, - 0, 0, 640, 480, - 0.0f, 0.0f, 640.0f, 480.0f, + 0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, + 0.0f, 0.0f, HU_FB_WIDTH, HU_FB_HEIGHT, 0.0f, 1.0f }; @@ -1101,7 +1107,7 @@ void Hu3DCameraCreate(s32 cam) { defCamera.scissor_h = RenderMode->efbHeight; Hu3DCameraExistF |= cam; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; *cam_ptr = defCamera; @@ -1114,7 +1120,7 @@ void Hu3DCameraPerspectiveSet(s32 cam, f32 fov, f32 near, f32 far, f32 aspect) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->fov = fov; @@ -1130,7 +1136,7 @@ void Hu3DCameraViewportSet(s32 cam, f32 vx, f32 vy, f32 vw, f32 vh, f32 nz, f32 s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->viewport_x = vx; @@ -1148,7 +1154,7 @@ void Hu3DCameraScissorSet(s32 cam, u32 x, u32 y, u32 w, u32 h) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->scissor_x = x; @@ -1164,7 +1170,7 @@ void Hu3DCameraPosSet(s32 cam, f32 x, f32 y, f32 z, f32 ux, f32 uy, f32 uz, f32 s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->pos.x = x; @@ -1185,7 +1191,7 @@ void Hu3DCameraPosSetV(s32 cam, Vec *pos, Vec *up, Vec *target) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->pos = *pos; @@ -1200,7 +1206,7 @@ void Hu3DCameraKill(s32 cam) { s16 i; CameraData* cam_ptr; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1) { if ((cam & mask) != 0) { cam_ptr = &Hu3DCamera[i]; cam_ptr->fov = -1.0f; @@ -1217,9 +1223,9 @@ void Hu3DCameraAllKill(void) { s16 mask2; cam_ptr = &Hu3DCamera[0]; - for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1, cam_ptr++) { + for (i = 0, mask = 1; i < HU3D_CAM_MAX; i++, mask <<= 1, cam_ptr++) { if (-1.0f != cam_ptr->fov) { - for (j = 0, mask2 = 1; j < 0x10; j++, mask2 <<= 1) { + for (j = 0, mask2 = 1; j < HU3D_CAM_MAX; j++, mask2 <<= 1) { if ((mask & mask2) != 0) { cam_ptr2 = &Hu3DCamera[j]; cam_ptr2->fov = -1.0f; @@ -1276,22 +1282,22 @@ BOOL Hu3DModelCameraInfoSet(s16 arg0, u16 arg1) { temp_f31 = obj_copy->data.base.rot.x; cam->aspect_dupe = temp_f31; - PSVECSubtract((Point3d* ) &obj_copy->camera.target, (Point3d* ) &obj_copy->camera.pos, &sp8); + VECSubtract((Point3d* ) &obj_copy->camera.target, (Point3d* ) &obj_copy->camera.pos, &sp8); sp14.x = ((sp8.x * sp8.y * (1.0 - cosd(temp_f31))) - (sp8.z * sind(temp_f31))); sp14.y = ((sp8.y * sp8.y) + (1.0f - (sp8.y * sp8.y)) * cosd(temp_f31)); sp14.z = (((sp8.y * sp8.z) * (1.0 - cosd(temp_f31))) + (sp8.x * sind(temp_f31))); - PSVECNormalize(&sp14, &sp8); + VECNormalize(&sp14, &sp8); Hu3DCameraPosSet(arg1, obj_copy->camera.target.x, obj_copy->camera.target.y, obj_copy->camera.target.z, sp8.x, sp8.y, sp8.z, obj_copy->camera.pos.x, obj_copy->camera.pos.y, obj_copy->camera.pos.z); - Hu3DCameraPerspectiveSet(arg1, obj_copy->camera.fov, obj_copy->camera.near, obj_copy->camera.far, 1.2f); + Hu3DCameraPerspectiveSet(arg1, obj_copy->camera.fov, obj_copy->camera.near, obj_copy->camera.far, HU_DISP_ASPECT); temp_r28->unk_01 = arg1; temp_r24 = &Hu3DData[arg0]; - temp_r24->attr |= 0x2000; + temp_r24->attr |= HU3D_ATTR_CAMERA_MOTON; (void)temp_r24; return 1; } @@ -1305,8 +1311,8 @@ s16 Hu3DModelCameraCreate(s16 arg0, u16 arg1) { temp_r3 = Hu3DHookFuncCreate((ModelHookFunc)-1); temp_r31 = &Hu3DData[(s16) temp_r3]; - temp_r31->attr &= ~0x10; - temp_r31->attr |= 0x10000 | 0x2000; + temp_r31->attr &= ~HU3D_ATTR_HOOKFUNC; + temp_r31->attr |= HU3D_ATTR_CAMERA | HU3D_ATTR_CAMERA_MOTON; temp_r31->unk_08 = arg0; temp_r31->unk_01 = arg1; return temp_r3; @@ -1319,7 +1325,7 @@ void Hu3DCameraMotionOn(s16 arg0, s8 arg1) { copy2 = &Hu3DData[arg0]; copy2->unk_01 = arg1; copy = &Hu3DData[arg0]; - copy->attr |= 0x2000; + copy->attr |= HU3D_ATTR_CAMERA_MOTON; } void Hu3DCameraMotionStart(s16 arg0, u16 arg1) { @@ -1332,9 +1338,9 @@ void Hu3DCameraMotionStart(s16 arg0, u16 arg1) { temp_r27 = &Hu3DData[arg0]; temp_r27->unk_01 = arg1; temp_r29 = &Hu3DData[arg0]; - temp_r29->attr |= 0x2000; + temp_r29->attr |= HU3D_ATTR_CAMERA_MOTON; temp_r30 = &Hu3DData[arg0]; - temp_r30->motion_attr &= ~0x40000002; + temp_r30->motion_attr &= ~HU3D_MOTATTR_PAUSE; Hu3DMotionStartEndSet(arg0, 0.0f, Hu3DMotionMotionMaxTimeGet(temp_r28->unk_08)); Hu3DMotionTimeSet(arg0, 0.0f); } @@ -1343,7 +1349,7 @@ void Hu3DCameraMotionOff(s16 arg0) { ModelData* temp_r31; temp_r31 = &Hu3DData[arg0]; - temp_r31->attr &= ~0x2000; + temp_r31->attr &= ~HU3D_ATTR_CAMERA_MOTON; } void Hu3DLighInit(void) { @@ -1386,11 +1392,11 @@ inline s16 Hu3DLightCreateV(LightData *light, Vec *arg0, Vec *arg1, GXColor *arg light->unk_34.x = light->unk_34.y = light->unk_34.z = 0.0f; light->unk_04 = 30.0f; light->unk_02 = 2; - PSVECNormalize(&light->unk_28, &light->unk_28); + VECNormalize(&light->unk_28, &light->unk_28); light->color = *arg2; } -s16 Hu3DGLightCreateV(Vec* arg0, Vec* arg1, GXColor* arg2) { +s16 Hu3DGLightCreateV(Vec* pos, Vec* dir, GXColor* color) { s16 var_r30; LightData* var_r31; @@ -1405,7 +1411,7 @@ s16 Hu3DGLightCreateV(Vec* arg0, Vec* arg1, GXColor* arg2) { return -1; } - Hu3DLightCreateV(var_r31, arg0, arg1, arg2); + Hu3DLightCreateV(var_r31, pos, dir, color); return var_r30; } @@ -1456,7 +1462,7 @@ s16 Hu3DLLightCreateV(s16 arg0, Vec* arg1, Vec* arg2, GXColor* arg3) { return -1; } temp_r29->unk_38[var_r30] = var_r28; - temp_r29->attr |= 0x1000; + temp_r29->attr |= HU3D_ATTR_LLIGHT; return var_r30; } @@ -1544,7 +1550,7 @@ void Hu3DLLightKill(s16 dataIndex, s16 lightIndex) { } } if (var_r30 == 8) { - temp_r31->attr &= ~0x1000; + temp_r31->attr &= ~HU3D_ATTR_LLIGHT; } } @@ -1584,7 +1590,7 @@ void Hu3DLLightColorSet(s16 dataIndex, s16 lightIndex, u8 r, u8 g, u8 b, u8 a) { inline void Hu3DLightPosSetV(LightData *light, Vec* pos, Vec* aim) { light->unk_1C = *pos; - PSVECNormalize(aim, &light->unk_28); + VECNormalize(aim, &light->unk_28); } void Hu3DGLightPosSetV(s16 index, Vec* pos, Vec* aim) { @@ -1609,7 +1615,7 @@ inline void Hu3DLightPosSet(LightData *light, f32 arg8, f32 arg9, f32 argA, f32 light->unk_28.x = argB; light->unk_28.y = argC; light->unk_28.z = argD; - PSVECNormalize(&light->unk_28, &light->unk_28); + VECNormalize(&light->unk_28, &light->unk_28); } void Hu3DGLightPosSet(s16 arg0, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 argD) { @@ -1630,8 +1636,8 @@ void Hu3DLLightPosSet(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA, f32 argB inline void Hu3DLightPosAimSetV(LightData *light, Vec* pos, Vec* aim) { light->unk_1C = *pos; - PSVECSubtract(aim, pos, &light->unk_28); - PSVECNormalize(&light->unk_28, &light->unk_28); + VECSubtract(aim, pos, &light->unk_28); + VECNormalize(&light->unk_28, &light->unk_28); } void Hu3DGLightPosAimSetV(s16 index, Vec* pos, Vec* aim) { @@ -1789,7 +1795,7 @@ s16 Hu3DLightSet(ModelData* arg0, Mtx *arg1, Mtx *arg2, f32 arg8) { var_r30 <<= 1; } } - if ((arg0->attr & 0x1000) != 0) { + if ((arg0->attr & HU3D_ATTR_LLIGHT) != 0) { for (i = 0; i < 8; i++) { if (arg0->unk_38[i] != -1) { var_r29 = &Hu3DLocalLight[arg0->unk_38[i]]; @@ -1816,7 +1822,7 @@ void lightSet(LightData* arg0, s16 arg1, Mtx *arg2, Mtx *arg3, f32 arg8) { GXInitLightAttn(&sp30, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); GXInitLightSpot(&sp30, 20.0f, GX_SP_COS); GXInitLightAttnK(&sp30, 1.0f, 0.0f, 0.0f); - PSVECScale(&arg0->unk_28, &arg0->unk_1C, -1000000.0f); + VECScale(&arg0->unk_28, &arg0->unk_1C, -1000000.0f); break; case 2: GXInitLightAttn(&sp30, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); @@ -1872,7 +1878,7 @@ void Hu3DFogClear(void) { void Hu3DShadowCreate(f32 arg8, f32 arg9, f32 argA) { Hu3DShadowData.unk_02 = 0xC0; if (Hu3DShadowData.unk_04 == 0) { - Hu3DShadowData.unk_04 = HuMemDirectMalloc(HEAP_DATA, 0x9000); + Hu3DShadowData.unk_04 = HuMemDirectMalloc(HEAP_DATA, SHADOW_HEAP_SIZE); } Hu3DShadowData.unk_08.x = arg8; Hu3DShadowData.unk_08.y = arg9; @@ -1884,16 +1890,16 @@ void Hu3DShadowCreate(f32 arg8, f32 arg9, f32 argA) { Hu3DShadowData.unk_2C.x = -1.0f; Hu3DShadowData.unk_2C.y = 1.0f; Hu3DShadowData.unk_2C.z = 0.0f; - C_MTXLightPerspective(Hu3DShadowData.unk_68, arg8, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - PSVECNormalize(&Hu3DShadowData.unk_2C, &Hu3DShadowData.unk_2C); + C_MTXLightPerspective(Hu3DShadowData.unk_68, arg8, HU_DISP_ASPECT, 0.5f, -0.5f, 0.5f, 0.5f); + VECNormalize(&Hu3DShadowData.unk_2C, &Hu3DShadowData.unk_2C); Hu3DShadowData.unk_00 = 0x80; Hu3DShadowF = 1; } -void Hu3DShadowPosSet(Vec* arg0, Vec* arg1, Vec* arg2) { - Hu3DShadowData.unk_14 = *arg0; - Hu3DShadowData.unk_20 = *arg2; - Hu3DShadowData.unk_2C = *arg1; +void Hu3DShadowPosSet(Vec* camPos, Vec* camUp, Vec* camTarget) { + Hu3DShadowData.unk_14 = *camPos; + Hu3DShadowData.unk_20 = *camTarget; + Hu3DShadowData.unk_2C = *camUp; } void Hu3DShadowTPLvlSet(f32 arg8) { @@ -1921,7 +1927,7 @@ void Hu3DShadowExec(void) { Hu3DDrawPreInit(); GXSetCopyClear(sp14, 0xFFFFFF); - C_MTXPerspective(sp18, Hu3DShadowData.unk_08.x, 1.2f, Hu3DShadowData.unk_08.y, Hu3DShadowData.unk_08.z); + C_MTXPerspective(sp18, Hu3DShadowData.unk_08.x, HU_DISP_ASPECT, Hu3DShadowData.unk_08.y, Hu3DShadowData.unk_08.z); GXSetProjection(sp18, GX_PERSPECTIVE); if (Hu3DShadowData.unk_02 <= 0xF0) { GXSetScissor(2, 2, Hu3DShadowData.unk_02 * 2 - 4, Hu3DShadowData.unk_02 * 2 - 4); @@ -1939,9 +1945,9 @@ void Hu3DShadowExec(void) { GXInvalidateTexAll(); GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, BGColor); - for (var_r30 = 0; var_r30 < 0x200; var_r30++, var_r31++) { - if (var_r31->hsfData != 0 && (var_r31->attr & 4) != 0 && (var_r31->attr & 1) == 0 && (var_r31->attr & 0x8000) == 0) { - if ((var_r31->attr & 8) != 0) { + for (var_r30 = 0; var_r30 < HU3D_MODEL_MAX; var_r30++, var_r31++) { + if (var_r31->hsfData != 0 && (var_r31->attr & HU3D_ATTR_SHADOW) != 0 && (var_r31->attr & HU3D_ATTR_DISPOFF) == 0 && (var_r31->attr & HU3D_ATTR_HOOK) == 0) { + if ((var_r31->attr & HU3D_ATTR_MOTION_OFF) != 0) { test2 = 0; if (var_r31->unk_08 != -1) { Hu3DMotionExec(var_r30, var_r31->unk_08, var_r31->unk_64, 0); @@ -1952,7 +1958,7 @@ void Hu3DShadowExec(void) { if (var_r31->unk_0A != -1) { Hu3DMotionExec(var_r30, var_r31->unk_0A, var_r31->unk_74, 1); } - if ((var_r31->attr & 0x400) != 0) { + if ((var_r31->attr & HU3D_ATTR_CLUSTER_ON) != 0) { ClusterMotionExec(var_r31); test2 = 1; } @@ -1963,13 +1969,13 @@ void Hu3DShadowExec(void) { Hu3DMotionExec(var_r30, var_r31->unk_0E, var_r31->unk_94, 1); } } - if ((var_r31->attr & 0x90) == 0 || (var_r31->motion_attr & 0x40000002) == 0) { + if ((var_r31->attr & (HU3D_ATTR_HOOKFUNC|HU3D_ATTR_ENVELOPE_OFF)) == 0 || (var_r31->motion_attr & HU3D_MOTATTR_PAUSE) == 0) { test2 = 1; InitVtxParm(var_r31->hsfData); if (var_r31->unk_0E != -1) { ShapeProc(var_r31->hsfData); } - if ((var_r31->attr & 0x400) != 0) { + if ((var_r31->attr & HU3D_ATTR_CLUSTER_ON) != 0) { ClusterProc(var_r31); } if (var_r31->hsfData->cenvCnt != 0) { @@ -1977,7 +1983,7 @@ void Hu3DShadowExec(void) { } PPCSync(); } - var_r31->attr |= 0x800; + 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); @@ -2052,8 +2058,8 @@ s16 Hu3DProjectionCreate(void *arg0, f32 arg8, f32 arg9, f32 argA) { var_r31->unk_2C.x = -1.0f; var_r31->unk_2C.y = 1.0f; var_r31->unk_2C.z = 0.0f; - C_MTXLightPerspective(var_r31->unk_68, arg8, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); - PSVECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); + C_MTXLightPerspective(var_r31->unk_68, arg8, HU_DISP_ASPECT, 0.5f, -0.5f, 0.5f, 0.5f); + VECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); var_r31->unk_00 = 0x80; Hu3DProjectionNum++; return var_r30; diff --git a/src/game/hsfmotion.c b/src/game/hsfmotion.c index 69ba3236..e21ad90f 100644 --- a/src/game/hsfmotion.c +++ b/src/game/hsfmotion.c @@ -10,10 +10,14 @@ #include "ext_math.h" #include "string.h" +#define HU3D_MOTATTR_SHIFT_ALL (HU3D_MOTATTR_SHIFT_LOOP|HU3D_MOTATTR_SHIFT_PAUSE|HU3D_MOTATTR_SHIFT_REV) +#define HU3D_MOTATTR_NOSHIFT_ALL (HU3D_MOTATTR_LOOP|HU3D_MOTATTR_PAUSE|HU3D_MOTATTR_REV) +#define HU3D_MOTATTR_ALL (HU3D_MOTATTR_SHIFT_ALL|HU3D_MOTATTR_NOSHIFT_ALL) + static s32 SearchObjectIndex(HsfData *arg0, u32 arg1); static s32 SearchAttributeIndex(HsfData *arg0, u32 arg1); -MotionData Hu3DMotion[256]; +MotionData Hu3DMotion[HU3D_MOTION_MAX]; static HsfBitmap *bitMapPtr; @@ -22,7 +26,7 @@ void Hu3DMotionInit(void) { s16 i; var_r31 = (MotionData*) Hu3DData; - for (i = 0; i < 256; i++, var_r31++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { var_r31->unk_04 = 0; } } @@ -32,12 +36,12 @@ s16 Hu3DMotionCreate(void *arg0) { s16 i; var_r31 = Hu3DMotion; - for (i = 0; i < 256; i++, var_r31++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { if (var_r31->unk_04 == 0) { break; } } - if (i == 256) { + if (i == HU3D_MOTION_MAX) { OSReport("Error: Create Motion Over!\n"); return -1; } @@ -53,12 +57,12 @@ s16 Hu3DMotionModelCreate(s16 arg0) { s16 i; var_r31 = Hu3DMotion; - for (i = 0; i < 256; i++, var_r31++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r31++) { if (var_r31->unk_04 == 0) { break; } } - if (i == 256) { + if (i == HU3D_MOTION_MAX) { OSReport("Error: Create Motion Over!\n"); return -1; } @@ -101,7 +105,7 @@ void Hu3DMotionAllKill(void) { s16 i; var_r27 = Hu3DMotion; - for (i = 0; i < 256; i++, var_r27++) { + for (i = 0; i < HU3D_MOTION_MAX; i++, var_r27++) { if (var_r27->unk_04) { Hu3DMotionKill(i); } @@ -143,7 +147,7 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { MotionData *sp10 = &Hu3DMotion[arg1]; s32 var_r30; - arg4 &= ~0x40000000; + arg4 &= ~HU3D_MOTATTR; var_r30 = 0; if (temp_r31->unk_0C != -1) { temp_r31->unk_08 = temp_r31->unk_0C; @@ -151,20 +155,20 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { temp_r31->unk_68 = temp_r31->unk_88; temp_r31->unk_6C = temp_r31->unk_8C; temp_r31->unk_70 = temp_r31->unk_90; - if (arg4 & 0x40000008) { - var_r30 |= 0x40000000 | 1; + if (arg4 & HU3D_MOTATTR_SHIFT_LOOP) { + var_r30 |= HU3D_MOTATTR_LOOP; } - if (arg4 & 0x40000010) { - var_r30 |= 0x40000000 | 2; + if (arg4 & HU3D_MOTATTR_SHIFT_PAUSE) { + var_r30 |= HU3D_MOTATTR_PAUSE; } - if (arg4 & 0x40000020) { - var_r30 |= 0x40000000 | 4; + if (arg4 & HU3D_MOTATTR_SHIFT_REV) { + var_r30 |= HU3D_MOTATTR_REV; } - temp_r31->motion_attr &= ~0x4000003F; + temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL; temp_r31->motion_attr |= var_r30; - temp_r31->motion_attr &= ~0x40000000; + temp_r31->motion_attr &= ~HU3D_MOTATTR; } else { - temp_r31->motion_attr &= ~0x40000038; + temp_r31->motion_attr &= ~HU3D_MOTATTR_SHIFT_ALL; } temp_r31->unk_0C = arg1; temp_r31->unk_84 = arg2; @@ -173,18 +177,18 @@ void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4) { temp_r31->unk_80 = arg3; temp_r31->unk_8C = 0.0f; temp_r31->unk_90 = Hu3DMotionShiftMaxTimeGet(arg0); - if (arg4 & 0x40000001) { - var_r30 |= 0x40000000 | 8; + if (arg4 & HU3D_MOTATTR_LOOP) { + var_r30 |= HU3D_MOTATTR_SHIFT_LOOP; } - if (arg4 & 0x40000002) { - var_r30 |= 0x40000000 | 0x10; + if (arg4 & HU3D_MOTATTR_PAUSE) { + var_r30 |= HU3D_MOTATTR_SHIFT_PAUSE; } - if (arg4 & 0x40000004) { - var_r30 |= 0x40000000 | 0x20; + if (arg4 & HU3D_MOTATTR_REV) { + var_r30 |= HU3D_MOTATTR_SHIFT_REV; } - arg4 &= ~0x40000007; + arg4 &= ~HU3D_MOTATTR_NOSHIFT_ALL; temp_r31->motion_attr |= var_r30 | arg4; - temp_r31->motion_attr &= ~0x40000000; + temp_r31->motion_attr &= ~HU3D_MOTATTR; } void Hu3DMotionShapeSet(s16 arg0, s16 arg1) { @@ -231,8 +235,8 @@ s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1) { temp_r31->unk_10[i] = arg1; temp_r31->unk_A4[i] = 0.0f; temp_r31->unk_B4[i] = 1.0f; - temp_r31->cluster_attr[i] = 0; - temp_r31->attr |= 0x400; + temp_r31->cluster_attr[i] = HU3D_ATTR_NONE; + temp_r31->attr |= HU3D_ATTR_CLUSTER_ON; ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04); return i; } @@ -248,7 +252,7 @@ s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2) { temp_r31->unk_10[arg2] = arg1; temp_r31->unk_A4[arg2] = 0.0f; temp_r31->unk_B4[arg2] = 1.0f; - temp_r31->attr |= 0x400; + temp_r31->attr |= HU3D_ATTR_CLUSTER_ON; ClusterAdjustObject(temp_r31->hsfData, Hu3DMotion[arg1].unk_04); return arg2; } @@ -265,7 +269,7 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { for (i = 0; i < 4; i++) { temp_r31->unk_10[i] = -1; } - temp_r31->attr &= ~0x400; + temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON; } else { temp_r31->unk_10[arg1] = -1; for (i = 0; i < 4; i++) { @@ -273,7 +277,7 @@ void Hu3DMotionClusterReset(s16 arg0, s16 arg1) { return; } } - temp_r31->attr &= ~0x400; + temp_r31->attr &= ~HU3D_ATTR_CLUSTER_ON; } } @@ -299,7 +303,7 @@ void Hu3DMotionTimeSet(s16 arg0, float arg1) { arg1 = 0.0f; } temp_r31->unk_64 = arg1; - if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & 0x40000002)) { + if (temp_r31->hsfData != (HsfData*) -1 && temp_r31->hsfData->cenvCnt != 0 && (temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { Hu3DMotionExec(arg0, temp_r31->unk_08, arg1, 0); if (temp_r31->unk_0C != -1) { Hu3DSubMotionExec(arg0); @@ -378,7 +382,7 @@ void Hu3DMotionStartEndSet(s16 arg0, float arg1, float arg2) { } s32 Hu3DMotionEndCheck(s16 arg0) { - if (!(Hu3DData[arg0].motion_attr & 0x40000004)) { + if (!(Hu3DData[arg0].motion_attr & HU3D_MOTATTR_REV)) { return (Hu3DMotionMaxTimeGet(arg0) <= Hu3DMotionTimeGet(arg0)); } else { return (Hu3DMotionTimeGet(arg0) <= 0.0f); @@ -480,13 +484,13 @@ void Hu3DMotionNext(s16 arg0) { temp_r28 = temp_r31->motion_attr; if (temp_r31->unk_08 != -1) { temp_r27 = &Hu3DMotion[temp_r31->unk_08]; - if (!(temp_r28 & 0x40000002)) { - if (!(temp_r28 & 0x40000004)) { + if (!(temp_r28 & HU3D_MOTATTR_PAUSE)) { + if (!(temp_r28 & HU3D_MOTATTR_REV)) { temp_r31->unk_64 += temp_r31->unk_68 * minimumVcountf; } else { temp_r31->unk_64 -= temp_r31->unk_68 * minimumVcountf; } - if (temp_r28 & 0x40000001) { + if (temp_r28 & HU3D_MOTATTR_LOOP) { if (temp_r31->unk_64 < temp_r31->unk_6C) { temp_r31->unk_64 = temp_r31->unk_70 - (temp_r31->unk_6C - temp_r31->unk_64); } else if (temp_r31->unk_64 >= temp_r31->unk_70) { @@ -502,13 +506,13 @@ void Hu3DMotionNext(s16 arg0) { if (temp_r31->unk_0A != -1) { temp_r27 = &Hu3DMotion[temp_r31->unk_0A]; temp_r29 = temp_r27->unk_04->motion; - if (!(temp_r28 & 0x40000400)) { - if (!(temp_r28 & 0x40000800)) { + if (!(temp_r28 & HU3D_MOTATTR_OVL_PAUSE)) { + if (!(temp_r28 & HU3D_MOTATTR_OVL_REV)) { temp_r31->unk_74 += temp_r31->unk_78 * minimumVcountf; } else { temp_r31->unk_74 -= temp_r31->unk_78 * minimumVcountf; } - if (temp_r28 & 0x40000200) { + if (temp_r28 & HU3D_MOTATTR_OVL_LOOP) { if (temp_r31->unk_74 < 0.0f) { temp_r31->unk_74 = temp_r29->len; } else if (temp_r31->unk_74 >= temp_r29->len) { @@ -531,28 +535,28 @@ void Hu3DMotionNext(s16 arg0) { temp_r31->unk_70 = temp_r31->unk_90; temp_r31->unk_0C = -1; temp_r28 = 0; - if (temp_r31->motion_attr & 0x40000008) { - temp_r28 |= 0x40000000 | 1; + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) { + temp_r28 |= HU3D_MOTATTR_LOOP; } - if (temp_r31->motion_attr & 0x40000010) { - temp_r28 |= 0x40000000 | 2; + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_PAUSE) { + temp_r28 |= HU3D_MOTATTR_PAUSE; } - if (temp_r31->motion_attr & 0x40000020) { - temp_r28 |= 0x40000000 | 4; + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV) { + temp_r28 |= HU3D_MOTATTR_REV; } - temp_r31->motion_attr &= ~0x4000003F; + temp_r31->motion_attr &= ~HU3D_MOTATTR_ALL; temp_r31->motion_attr |= temp_r28; - temp_r31->motion_attr &= ~0x40000000; + temp_r31->motion_attr &= ~HU3D_MOTATTR; return; } - if (!(temp_r31->motion_attr & 0x40000010)) { + if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_0C]; - if (!(temp_r31->motion_attr & 0x40000020)) { + if (!(temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_REV)) { temp_r31->unk_84 += temp_r31->unk_88 * minimumVcountf; } else { temp_r31->unk_84 -= temp_r31->unk_88 * minimumVcountf; } - if (temp_r31->motion_attr & 0x40000008) { + if (temp_r31->motion_attr & HU3D_MOTATTR_SHIFT_LOOP) { if (temp_r31->unk_84 < temp_r31->unk_8C) { temp_r31->unk_84 = temp_r31->unk_90; } else if (temp_r31->unk_84 >= temp_r31->unk_90) { @@ -565,15 +569,15 @@ void Hu3DMotionNext(s16 arg0) { } } } - if (temp_r31->unk_0E != -1 && !(temp_r28 & 0x40000080)) { + if (temp_r31->unk_0E != -1 && !(temp_r28 & HU3D_MOTATTR_SHAPE_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_0E]; temp_r29 = temp_r27->unk_04->motion; - if (!(temp_r28 & 0x40000100)) { + if (!(temp_r28 & HU3D_MOTATTR_SHAPE_REV)) { temp_r31->unk_94 += temp_r31->unk_98 * minimumVcountf; } else { temp_r31->unk_94 -= temp_r31->unk_98 * minimumVcountf; } - if (temp_r28 & 0x40000040) { + if (temp_r28 & HU3D_MOTATTR_SHAPE_LOOP) { if (temp_r31->unk_94 < temp_r31->unk_9C) { temp_r31->unk_94 = temp_r31->unk_A0; } else if (temp_r31->unk_94 >= temp_r31->unk_A0) { @@ -585,17 +589,17 @@ void Hu3DMotionNext(s16 arg0) { temp_r31->unk_94 = temp_r31->unk_A0; } } - if (temp_r31->attr & 0x400) { + if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) { for (i = 0; i < 4; i++) { - if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & (s32) 0xC0000002)) { + if (temp_r31->unk_10[i] != -1 && !(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_PAUSE)) { temp_r27 = &Hu3DMotion[temp_r31->unk_10[i]]; temp_r29 = temp_r27->unk_04->motion; - if (!(temp_r31->cluster_attr[i] & (s32) 0xC0000004)) { + if (!(temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_REV)) { temp_r31->unk_A4[i] += temp_r31->unk_B4[i] * minimumVcountf; } else { temp_r31->unk_A4[i] -= temp_r31->unk_B4[i] * minimumVcountf; } - if (temp_r31->cluster_attr[i] & (s32) 0xC0000001) { + if (temp_r31->cluster_attr[i] & HU3D_CLUSTER_ATTR_LOOP) { if (temp_r31->unk_A4[i] < 0.0f) { temp_r31->unk_A4[i] = temp_r29->len; } else if (temp_r31->unk_A4[i] >= temp_r29->len) { @@ -679,7 +683,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { if (var_r30->channel == 0x28) { temp_r31->data.mesh.baseMorph = GetCurve(var_r30, arg2); } else if (temp_r31->type == 7) { - if (temp_r27->attr & 0x2000) { + if (temp_r27->attr & HU3D_ATTR_CAMERA_MOTON) { SetObjCameraMotion(arg0, var_r30, GetCurve(var_r30, arg2)); } } else if (temp_r31->type == 8) { @@ -718,20 +722,20 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { } break; case 9: - if (!(temp_r27->attr & 0x80000)) { + if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { if (var_r30->param < temp_r29->materialCnt) { SetObjMatMotion(arg0, var_r30, GetCurve(var_r30, arg2)); } } break; case 5: - if (!(temp_r27->attr & 0x80000)) { + if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { var_r23 = &temp_r29->cluster[var_r30->target_s16]; var_r23->unk10 = GetClusterCurve(var_r30, arg2); } break; case 6: - if (!(temp_r27->attr & 0x80000)) { + if (!(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { temp_r22 = var_r30; var_r23 = &temp_r29->cluster[temp_r22->target_s16]; var_r23->unk14[temp_r22->unk04] = GetClusterWeightCurve(temp_r22, arg2); @@ -739,7 +743,7 @@ void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3) { break; case 10: var_r26 = var_r30; - if (var_r26->target_s16 != -1 || !(temp_r27->attr & 0x80000)) { + if (var_r26->target_s16 != -1 || !(temp_r27->attr & HU3D_ATTR_CURVE_MOTOFF)) { if (var_r26->param != -1 && var_r26->param < temp_r29->attributeCnt) { SetObjAttrMotion(arg0, var_r26, GetCurve(var_r26, arg2)); } @@ -762,7 +766,7 @@ void Hu3DCameraMotionExec(s16 arg0) { temp_r27 = temp_r28->unk_04; temp_r29 = temp_r27->motion; var_r31 = temp_r29->track; - if (temp_r30->attr & 0x2000) { + if (temp_r30->attr & HU3D_ATTR_CAMERA_MOTON) { temp_r26 = &var_r31[temp_r29->numTracks]; for (; var_r31 < temp_r26; var_r31++) { if (var_r31->type == 2 && var_r31->param_u16 == 7) { @@ -928,7 +932,7 @@ void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2) { temp_r31->shadowColor[2] = var_f31 * 255.0f; break; case 0x39: - if (!(temp_r30->attr & 0x40000)) { + if (!(temp_r30->attr & HU3D_ATTR_TPLVL_SET)) { temp_r31->invAlpha = var_f31; } break; @@ -1047,7 +1051,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { switch (arg1->channel) { case 8: var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].pos.x = var_f30; } @@ -1055,7 +1059,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 9: var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].pos.y = var_f30; } @@ -1063,7 +1067,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 10: var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].pos.z = var_f30; } @@ -1071,7 +1075,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 11: var_f30 = temp_r29->scale.x * (arg2 + temp_r29->pos.x); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].target.x = var_f30; } @@ -1079,7 +1083,7 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 12: var_f30 = temp_r29->scale.y * (arg2 + temp_r29->pos.y); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].target.y = var_f30; } @@ -1087,27 +1091,27 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { break; case 13: var_f30 = temp_r29->scale.z * (arg2 + temp_r29->pos.z); - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].target.z = var_f30; } } break; case 14: - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { - PSVECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC); - PSVECNormalize(&spC, &spC); + VECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC); + VECNormalize(&spC, &spC); sp18.x = spC.x * spC.y * (1.0 - cosd(arg2)) - spC.z * sind(arg2); sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cosd(arg2); sp18.z = spC.y * spC.z * (1.0 - cosd(arg2)) + spC.x * sind(arg2); - PSVECNormalize(&sp18, &Hu3DCamera[i].up); + VECNormalize(&sp18, &Hu3DCamera[i].up); Hu3DCamera[i].aspect_dupe = arg2; } } break; case 15: - for (i = 0, var_r30 = 1; i < 16; i++, var_r30 <<= 1) { + for (i = 0, var_r30 = 1; i < HU3D_CAM_MAX; i++, var_r30 <<= 1) { if (var_r30 & temp_r28) { Hu3DCamera[i].fov = arg2; } @@ -1357,7 +1361,7 @@ void JointModel_Motion(s16 arg0, s16 arg1) { void Hu3DMotionCalc(s16 arg0) { ModelData *temp_r31 = &Hu3DData[arg0]; - if ((temp_r31->attr & 1) || (temp_r31->attr & 0x8000)) { + if ((temp_r31->attr & HU3D_ATTR_DISPOFF) || (temp_r31->attr & HU3D_ATTR_HOOK)) { return; } if (temp_r31->unk_08 != -1) { @@ -1369,7 +1373,7 @@ void Hu3DMotionCalc(s16 arg0) { if (temp_r31->unk_0A != -1) { Hu3DMotionExec(arg0, temp_r31->unk_0A, temp_r31->unk_74, 1); } - if (temp_r31->attr & 0x400) { + if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) { ClusterMotionExec(temp_r31); } if (temp_r31->unk_0E != -1) { @@ -1379,12 +1383,12 @@ void Hu3DMotionCalc(s16 arg0) { Hu3DMotionExec(arg0, temp_r31->unk_0E, temp_r31->unk_94, 1); } } - if (!(temp_r31->attr & 0x90) || !(temp_r31->motion_attr & 0x40000002)) { + if (!(temp_r31->attr & (HU3D_ATTR_ENVELOPE_OFF|HU3D_ATTR_HOOKFUNC)) || !(temp_r31->motion_attr & HU3D_MOTATTR_PAUSE)) { InitVtxParm(temp_r31->hsfData); if (temp_r31->unk_0E != -1) { ShapeProc(temp_r31->hsfData); } - if (temp_r31->attr & 0x400) { + if (temp_r31->attr & HU3D_ATTR_CLUSTER_ON) { ClusterProc(temp_r31); } if (temp_r31->hsfData->cenvCnt != 0) { @@ -1392,7 +1396,7 @@ void Hu3DMotionCalc(s16 arg0) { } PPCSync(); } - temp_r31->attr |= 0x800; + temp_r31->attr |= HU3D_ATTR_MOT_EXEC; } static s32 SearchObjectIndex(HsfData *arg0, u32 arg1) { diff --git a/src/game/init.c b/src/game/init.c index f3a4f853..61315c66 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -39,6 +39,8 @@ static void InitVI(); static void SwapBuffers(); static void LoadMemInfo(); +#define ASSERT_LINE(ntsc, pal) ((VERSION_NTSC) ? (ntsc) : (pal)) + void HuSysInit(GXRenderModeObj *mode) { u32 rnd_temp; @@ -46,13 +48,19 @@ void HuSysInit(GXRenderModeObj *mode) DVDInit(); VIInit(); PADInit(); + #if VERSION_NTSC if(OSGetProgressiveMode() == 1 && VIGetDTVStatus() == 1) { mode = &GXNtsc480Prog; } + #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(); @@ -91,7 +99,7 @@ static void InitRenderMode(GXRenderModeObj *mode) break; default: - OSPanic("init.c", 169, "DEMOInit: invalid TV format\n"); + OSPanic("init.c", ASSERT_LINE(169, 167), "DEMOInit: invalid TV format\n"); break; } GXAdjustForOverscan(RenderMode, &rmodeobj, 0, 16); @@ -104,7 +112,12 @@ static void InitGX() GXSetScissor(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); GXSetDispCopySrc(0, 0, RenderMode->fbWidth, RenderMode->efbHeight); GXSetDispCopyDst(RenderMode->fbWidth, RenderMode->xfbHeight); + #if VERSION_NTSC GXSetDispCopyYScale((float)RenderMode->xfbHeight/(float)RenderMode->efbHeight); + #else + OSReport("%D\n", RenderMode->xfbHeight); + GXSetDispCopyYScale(GXGetYScaleFactor(RenderMode->efbHeight, RenderMode->xfbHeight)); + #endif GXSetCopyFilter(RenderMode->aa, RenderMode->sample_pattern, GX_TRUE, RenderMode->vfilter); if(RenderMode->aa) { GXSetPixelFmt(GX_PF_RGB565_Z16, GX_ZC_LINEAR); @@ -120,9 +133,21 @@ 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; iz * (arg3->y * sp14.x - arg3->x * sp14.y) + arg2->y * (arg3->x * sp14.z - arg3->z * sp14.x) + arg2->x * (arg3->z * sp14.y - arg3->y * sp14.z)); temp_f29 = temp_f28 * (arg1->z * (arg3->x * sp14.y - arg3->y * sp14.x) + arg1->y * (arg3->z * sp14.x - arg3->x * sp14.z) + arg1->x * (arg3->y * sp14.z - arg3->z * sp14.y)); if (temp_f30 > 0.0f && temp_f29 > 0.0f && temp_f30 + temp_f29 > 1.0f) { - PSVECSubtract(arg2, arg1, &sp14); - PSVECSubtract(arg4, arg1, &sp8); - temp_f31 = PSVECDotProduct(&sp14, &sp8) / PSVECDotProduct(&sp14, &sp14); + VECSubtract(arg2, arg1, &sp14); + VECSubtract(arg4, arg1, &sp8); + temp_f31 = VECDotProduct(&sp14, &sp8) / VECDotProduct(&sp14, &sp14); if (temp_f31 <= 0.0f) { arg5 = arg1; } else { if (temp_f31 >= 1.0f) { arg5 = arg2; } else { - PSVECScale(&sp14, &sp8, temp_f31); - PSVECAdd(arg1, &sp8, arg5); + VECScale(&sp14, &sp8, temp_f31); + VECAdd(arg1, &sp8, arg5); } } } else if (temp_f29 < 0.0f) { - temp_f31 = PSVECDotProduct(arg1, arg4) / PSVECDotProduct(arg1, arg1); + temp_f31 = VECDotProduct(arg1, arg4) / VECDotProduct(arg1, arg1); if (temp_f31 <= 0.0f) { HuSetVecF(arg5, 0.0, 0.0, 0.0); } else { if (temp_f31 >= 1.0f) { arg5 = arg1; } else { - PSVECScale(arg1, arg5, temp_f31); + VECScale(arg1, arg5, temp_f31); } } } else if (temp_f30 < 0.0f) { - temp_f31 = PSVECDotProduct(arg2, arg4) / PSVECDotProduct(arg2, arg2); + temp_f31 = VECDotProduct(arg2, arg4) / VECDotProduct(arg2, arg2); if (temp_f31 <= 0.0f) { HuSetVecF(arg5, 0.0, 0.0, 0.0); } else { if (temp_f31 >= 1.0f) { arg5 = arg2; } else { - PSVECScale(arg2, arg5, temp_f31); + VECScale(arg2, arg5, temp_f31); } } } else { @@ -815,13 +815,13 @@ BOOL Hitcheck_Triangle_with_Sphere(Vec *arg0, Vec *arg1, float arg2, Vec *arg3) sp48.x = arg0[0].x; sp48.y = arg0[0].y; sp48.z = arg0[0].z; - PSVECSubtract(&arg0[1], &arg0[0], &sp3C); - PSVECSubtract(&arg0[2], &arg0[0], &sp30); - PSVECCrossProduct(&sp3C, &sp30, &sp24); - PSVECSubtract(arg1, &arg0[0], &sp18); + VECSubtract(&arg0[1], &arg0[0], &sp3C); + VECSubtract(&arg0[2], &arg0[0], &sp30); + VECCrossProduct(&sp3C, &sp30, &sp24); + VECSubtract(arg1, &arg0[0], &sp18); PrecalcPntToTriangle(&sp48, &sp3C, &sp30, &sp24, &sp18, &spC); - PSVECAdd(&spC, &sp48, arg3); - var_f31 = PSVECDistance(arg3, arg1); + VECAdd(&spC, &sp48, arg3); + var_f31 = VECDistance(arg3, arg1); if (var_f31 > arg2) { return FALSE; } else { @@ -845,17 +845,17 @@ BOOL Hitcheck_Quadrangle_with_Sphere(Vec *arg0, Vec *arg1, float arg2, Vec *arg3 sp6C.x = arg0->x; sp6C.y = arg0->y; sp6C.z = arg0->z; - PSVECSubtract(&arg0[2], &arg0[0], &sp60); - PSVECSubtract(&arg0[3], &arg0[0], &sp54); - PSVECSubtract(&arg0[1], &arg0[0], &sp48); - PSVECCrossProduct(&sp60, &sp54, &sp3C); - PSVECSubtract(arg1, &arg0[0], &sp30); + VECSubtract(&arg0[2], &arg0[0], &sp60); + VECSubtract(&arg0[3], &arg0[0], &sp54); + VECSubtract(&arg0[1], &arg0[0], &sp48); + VECCrossProduct(&sp60, &sp54, &sp3C); + VECSubtract(arg1, &arg0[0], &sp30); PrecalcPntToTriangle(&sp6C, &sp60, &sp54, &sp3C, &sp30, &sp24); - PSVECAdd(&sp24, &sp6C, &sp18); + VECAdd(&sp24, &sp6C, &sp18); PrecalcPntToTriangle(&sp6C, &sp54, &sp48, &sp3C, &sp30, &sp24); - PSVECAdd(&sp24, &sp6C, &spC); - var_f31 = PSVECDistance(&sp18, arg1); - temp_f30 = PSVECDistance(&spC, arg1); + VECAdd(&sp24, &sp6C, &spC); + var_f31 = VECDistance(&sp18, arg1); + temp_f30 = VECDistance(&spC, arg1); if (temp_f30 > var_f31) { arg3->x = sp18.x; arg3->y = sp18.y; diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index bc3d27ab..f74d4bf4 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -1,111 +1,86 @@ #include "game/armem.h" -#include "game/sprite.h" -#include "game/process.h" +#include "game/disp.h" #include "game/gamework_data.h" -#include "game/objsub.h" -#include "game/object.h" #include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" + #include "game/minigame_seq.h" -#include "math.h" +#include "ext_math.h" #include "stdarg.h" +#include "version.h" #undef abs #define ABS(x) (((x) < 0) ? -(x) : (x)) - extern s16 HuSysVWaitGet(s16 param); typedef struct seq_info { - SeqInitFunc init; - SeqUpdateFunc update; - float x; - float y; - float scale_x; - float scale_y; - s32 time_max; + SeqInitFunc init; + SeqUpdateFunc update; + float x; + float y; + float scale_x; + float scale_y; + s32 time_max; } SeqInfo; -static s32 SeqInitTimer(SeqWork *work, va_list params); -static s32 SeqUpdateTimer(SeqWork *work); - -static s32 SeqInitType2(SeqWork *work, va_list params); -static s32 SeqUpdateType2(SeqWork *work); - -static s32 SeqInitMGBasic(SeqWork *work, va_list params); -static s32 SeqUpdateMGBasic(SeqWork *work); -static s32 SeqInitMGCommon(SeqWork *work, va_list params); -static s32 SeqUpdateMG1vs3(SeqWork *work); -static s32 SeqUpdateMGBattle(SeqWork *work); -static s32 SeqUpdateMGStory(SeqWork *work); -static s32 SeqUpdateMG2vs2(SeqWork *work); -static s32 SeqUpdateMGBowser(SeqWork *work); - -static s32 SeqInitWin(SeqWork *work, va_list params); -static s32 SeqUpdateWin(SeqWork *work); -static s32 SeqInitDraw(SeqWork *work, va_list params); -static s32 SeqUpdateDraw(SeqWork *work); -static s32 SeqInitRecord(SeqWork *work, va_list params); -static s32 SeqUpdateRecord(SeqWork *work); - -static s32 SeqInitFlip(SeqWork *work, va_list params); -static s32 SeqUpdateFlip(SeqWork *work); - OverlayID mgSeqOvlPrev = OVL_INVALID; static SeqInfo seqInfoTbl[] = { - { NULL, NULL, 292.0f, 240.0f, 1.0f, 1.0f, 60 }, - { SeqInitTimer, SeqUpdateTimer, 292.0f, 64.0f, 1.0f, 1.0f, 60 }, - { SeqInitType2, SeqUpdateType2, 292.0f, 240.0f, 0.5f, 0.5f, 60 }, - { SeqInitMGBasic, SeqUpdateMGBasic, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMG1vs3, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitWin, SeqUpdateWin, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMGBattle, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMGStory, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitMGBasic, SeqUpdateMGBasic, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMG2vs2, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitFlip, SeqUpdateFlip, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitMGCommon, SeqUpdateMGBowser, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitWin, SeqUpdateWin, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { SeqInitDraw, SeqUpdateDraw, 292.0f, 240.0f, 1.0f, 1.0f, 60 }, - { SeqInitRecord, SeqUpdateRecord, 292.0f, 240.0f, 1.0f, 1.0f, 180 }, - { NULL, NULL, 292.0f, 240.0f, 1.0f, 1.0f, 60 }, - { NULL, NULL, 292.0f, 240.0f, 1.0f, 1.0f, 60 }, + { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { MGSeqInitTimer, MGSeqUpdateTimer, HU_DISP_CENTERX + 4, 64.0f, 1.0f, 1.0f, 60 }, + { MGSeqInitType2, MGSeqUpdateType2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 0.5f, 0.5f, 60 }, + { MGSeqInitMGBasic, MGSeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitMGCommon, MGSeqUpdateMG1vs3, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitWin, MGSeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitMGCommon, MGSeqUpdateMGBattle, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitMGCommon, MGSeqUpdateMGStory, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitMGBasic, MGSeqUpdateMGBasic, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitMGCommon, MGSeqUpdateMG2vs2, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitFlip, MGSeqUpdateFlip, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitMGCommon, MGSeqUpdateMGBowser, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitWin, MGSeqUpdateWin, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { MGSeqInitDraw, MGSeqUpdateDraw, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { MGSeqInitRecord, MGSeqUpdateRecord, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 180 }, + { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, + { NULL, NULL, HU_DISP_CENTERX + 4, HU_DISP_CENTERY, 1.0f, 1.0f, 60 }, }; -static s32 seqType2SprTbl[6] = { - 0, 0, 0, 0, 0, 0 -}; +static s32 seqType2SprTbl[6] = { 0, 0, 0, 0, 0, 0 }; static s16 mgSeqTypeTbl[9] = { - MG_SEQ_TYPE_4P, - MG_SEQ_TYPE_1VS3, - MG_SEQ_TYPE_2VS2, - MG_SEQ_TYPE_BOWSER, - MG_SEQ_TYPE_BATTLE, - MG_SEQ_TYPE_PINBALL, - MG_SEQ_TYPE_STORY, - MG_SEQ_TYPE_BOWSER, - MG_SEQ_TYPE_STORY + MG_SEQ_TYPE_4P, + MG_SEQ_TYPE_1VS3, + MG_SEQ_TYPE_2VS2, + MG_SEQ_TYPE_BOWSER, + MG_SEQ_TYPE_BATTLE, + MG_SEQ_TYPE_PINBALL, + MG_SEQ_TYPE_STORY, + MG_SEQ_TYPE_BOWSER, + MG_SEQ_TYPE_STORY, }; static char lbl_8012F336[] = { - "アイウエオカキク" - "ケコサシスセソタ" - "チツテトナニヌネ" - "ノハヒフヘホマミ" - "ムメモヤユヨラリ" - "ルレロワヲンァィ" - "ゥェォャュョッカ" - "キクコサシスセソ" - "タチツテトハヒフ" - "ヘホハヒフヘホ" - "!?ー" + "アイウエオカキク" + "ケコサシスセソタ" + "チツテトナニヌネ" + "ノハヒフヘホマミ" + "ムメモヤユヨラリ" + "ルレロワヲンァィ" + "ゥェォャュョッカ" + "キクコサシスセソ" + "タチツテトハヒフ" + "ヘホハヒフヘホ" + "!?ー", }; static char lbl_8012F389[] = "x first\n"; @@ -127,645 +102,657 @@ static s32 seqLanguage; void fn_80036BC8(void); - void MGSeqInit(void) { - s32 i; - SeqWork *work; - work = &seqWorkData[0]; - for(i=8; i!=0; i--, work++) { - work->seq_no = 0; - work->data = NULL; - } - seqPauseF = 0; - seqDoneF = 0; - lbl_801D3D94 = 0; - seqTimer = 30; - HuAR_DVDtoARAM(DATADIR_GAMEMES); - HuAR_DVDtoARAM(DATADIR_MGCONST); - while(HuARDMACheck()); - fn_80036BC8(); - mgSeqOvlPrev = -1; - seqLanguage = GWLanguageGet(); + s32 i; + SeqWork *work; + work = &seqWorkData[0]; + for (i = 8; i != 0; i--, work++) { + work->seq_no = 0; + work->data = NULL; + } + seqPauseF = 0; + seqDoneF = 0; + lbl_801D3D94 = 0; + seqTimer = 30; + HuAR_DVDtoARAM(DATADIR_GAMEMES); + HuAR_DVDtoARAM(DATADIR_MGCONST); + while (HuARDMACheck()) + ; + fn_80036BC8(); + mgSeqOvlPrev = -1; + seqLanguage = GWLanguageGet(); } void MGSeqMain(void) { - SeqInfo *info; - s32 i; - s32 j; - s32 alive_flag; - u8 stat; - SeqWork *work; - - seqSpeed = HuSysVWaitGet(seqSpeed); - if(Hu3DPauseF) { - return; - } - alive_flag = 0; - stat = 0; - work = &seqWorkData[0]; - for(i=0; i<8; i++, work++) { - if(work->stat == 0) { - continue; - } - if(work->update) { - alive_flag = work->update(work); - } else { - info = &seqInfoTbl[work->seq_no]; - if(work->seq_no != 0 && NULL != info->update) { - alive_flag = info->update(work); - } - } - if(!alive_flag) { - work->stat = 0; - if(!lbl_801D3D94) { - for(j=0; j<8; j++) { - if(seqWorkData[j].stat) { - break; - } - } - } - if(!work->data) { - HuMemDirectFree(work->data); - work->data = NULL; - } - } - stat |= work->stat; - } - if(!stat || stat & 0x4) { - if(seqTimer > 0) { - seqTimer -= seqSpeed; - } - } + SeqInfo *info; + s32 i; + s32 j; + s32 alive_flag; + u8 stat; + SeqWork *work; + + seqSpeed = HuSysVWaitGet(seqSpeed); + if (Hu3DPauseF) { + return; + } + alive_flag = 0; + stat = 0; + work = &seqWorkData[0]; + for (i = 0; i < 8; i++, work++) { + if (work->stat == 0) { + continue; + } + if (work->update) { + alive_flag = work->update(work); + } + else { + info = &seqInfoTbl[work->seq_no]; + if (work->seq_no != 0 && NULL != info->update) { + alive_flag = info->update(work); + } + } + if (!alive_flag) { + work->stat = 0; + if (!lbl_801D3D94) { + for (j = 0; j < 8; j++) { + if (seqWorkData[j].stat) { + break; + } + } + } + if (!work->data) { + HuMemDirectFree(work->data); + work->data = NULL; + } + } + stat |= work->stat; + } + if (!stat || stat & 0x4) { + if (seqTimer > 0) { + seqTimer -= seqSpeed; + } + } } static s16 CreateSeq(s16 seq_no, va_list params) { - SeqWork *work; - SeqInfo *info; - s32 i; - s32 temp; - work = seqWorkData; - info = &seqInfoTbl[(u8)seq_no]; - for(i=0; i<8; i++, work++) { - if(work->stat == 0) { - break; - } - } - if(i >= 8) { - return -1; - } - work->stat |= 0x1; - if(work->data) { - HuMemDirectFree(work->data); - } - work->data = NULL; - work->seq_no = (u8)seq_no; - work->time = 0; - work->x = info->x; - work->y = info->y; - work->scale_x = info->scale_x; - work->scale_y = info->scale_y; - work->unk_18 = 0.0f; - work->unk_7D = 255; - work->time_max = info->time_max; - work->timer_val = work->state = work->alt_word_len = work->word_len = 0; - work->angle = work->win_scale = 0.0f; - work->param[0] = work->param[1] = 0; - for(temp=0; temp<16; temp++) { - work->sprite[temp] = work->spr_grp[temp] = -1; - } - if(NULL != info->init) { - temp = info->init(work, params); - if(temp == 0) { - work->stat = 0; - return -1; - } - } - seqTimer = 30; - return i; + SeqWork *work; + SeqInfo *info; + s32 i; + s32 temp; + work = seqWorkData; + info = &seqInfoTbl[(u8)seq_no]; + for (i = 0; i < 8; i++, work++) { + if (work->stat == 0) { + break; + } + } + if (i >= 8) { + return -1; + } + work->stat |= 0x1; + if (work->data) { + HuMemDirectFree(work->data); + } + work->data = NULL; + work->seq_no = (u8)seq_no; + work->time = 0; + work->x = info->x; + work->y = info->y; + work->scale_x = info->scale_x; + work->scale_y = info->scale_y; + work->unk_18 = 0.0f; + work->unk_7D = 255; + work->time_max = info->time_max; + work->timer_val = work->state = work->alt_word_len = work->word_len = 0; + work->angle = work->win_scale = 0.0f; + work->param[0] = work->param[1] = 0; + for (temp = 0; temp < 16; temp++) { + work->sprite[temp] = work->spr_grp[temp] = -1; + } + if (NULL != info->init) { + temp = info->init(work, params); + if (temp == 0) { + work->stat = 0; + return -1; + } + } + seqTimer = 30; + return i; } s16 MGSeqCreate(s16 type, ...) { - s16 ret; - va_list params; - va_start(params, type); - if(type == MG_SEQ_TYPE_AUTO) { - if(GWSystem.mg_next == 0xFFFF) { - type = MG_SEQ_TYPE_4P; - } else { - type = mgSeqTypeTbl[mgInfoTbl[GWSystem.mg_next].type]; - } - } - ret = CreateSeq(type, params); - va_end(params); - return ret; + s16 ret; + va_list params; + va_start(params, type); + if (type == MG_SEQ_TYPE_AUTO) { + if (GWSystem.mg_next == 0xFFFF) { + type = MG_SEQ_TYPE_4P; + } + else { + type = mgSeqTypeTbl[mgInfoTbl[GWSystem.mg_next].type]; + } + } + ret = CreateSeq(type, params); + va_end(params); + return ret; } u8 MGSeqStatGet(s16 id) { - SeqWork *work; - u8 ret = 0; - if(id < 0) { - s32 i; - work = seqWorkData; - for(i=8; i != 0; i--, work++) { - ret |= work->stat; - } - } else { - if(id < 8) { - ret = seqWorkData[id].stat; - } - } - return ret; + SeqWork *work; + u8 ret = 0; + if (id < 0) { + s32 i; + work = seqWorkData; + for (i = 8; i != 0; i--, work++) { + ret |= work->stat; + } + } + else { + if (id < 8) { + ret = seqWorkData[id].stat; + } + } + return ret; } void MGSeqPosSet(s16 id, float x, float y) { - if(id >= 0 && id < 8) { - seqWorkData[id].x = x; - seqWorkData[id].y = y; - } + if (id >= 0 && id < 8) { + seqWorkData[id].x = x; + seqWorkData[id].y = y; + } } void MGSeqParamSet(s16 id, s16 param1, s16 param2) { - if(id >= 0 && id < 8) { - seqWorkData[id].param[0] = param1; - seqWorkData[id].param[1] = param2; - } + if (id >= 0 && id < 8) { + seqWorkData[id].param[0] = param1; + seqWorkData[id].param[1] = param2; + } } void MGSeqKill(s16 id) { - if(id >= 0 && id < 8) { - if(seqWorkData[id].stat != 0) { - seqWorkData[id].stat = 8; - } - } + if (id >= 0 && id < 8) { + if (seqWorkData[id].stat != 0) { + seqWorkData[id].stat = 8; + } + } } void MGSeqKillAll(void) { - seqDoneF = 1; - MGSeqMain(); - seqDoneF = 0; - MGSeqStub(); - lbl_801D3D94 = 0; + seqDoneF = 1; + MGSeqMain(); + seqDoneF = 0; + MGSeqStub(); + lbl_801D3D94 = 0; } s32 MGSeqDoneCheck(void) { - u8 stat = MGSeqStatGet(-1); - if(stat == 0 || (stat & 0xC)) { - if(seqTimer <= 0 || (stat & 0x8)) { - return 1; - } - } - return 0; + u8 stat = MGSeqStatGet(-1); + if (stat == 0 || (stat & 0xC)) { + if (seqTimer <= 0 || (stat & 0x8)) { + return 1; + } + } + return 0; } -void MGSeqStub(void) -{ - -} +void MGSeqStub(void) { } void MGSeqSprKill(SeqWork *work) { - s32 i; - for(i=0; i<16; i++) { - if(work->spr_grp[i] >= 0) { - HuSprGrpKill(work->spr_grp[i]); - } - if(work->sprite[i] >= 0) { - HuSprKill(work->sprite[i]); - } - } + s32 i; + for (i = 0; i < 16; i++) { + if (work->spr_grp[i] >= 0) { + HuSprGrpKill(work->spr_grp[i]); + } + if (work->sprite[i] >= 0) { + HuSprKill(work->sprite[i]); + } + } } static void *SeqReadFile(s32 file) { - return HuAR_ARAMtoMRAMFileRead(file, MEMORY_DEFAULT_NUM, HEAP_DATA); + return HuAR_ARAMtoMRAMFileRead(file, MEMORY_DEFAULT_NUM, HEAP_DATA); } -static s32 SeqInitTimer(SeqWork *work, va_list params) +s32 MGSeqInitTimer(SeqWork *work, va_list params) { - AnimData *spr_anim; - s16 sprite; - s16 spr_grp; - int duration, x, y; - s16 i; - - duration = va_arg(params, int); - x = va_arg(params, int); - y = va_arg(params, int); - if(duration <= 0 && duration > 99) { - duration = 99; - } - work->timer_val = duration; - if(x >= 0) { - work->x = x; - } - if(y >= 0) { - work->y = y; - } - work->alt_word_len = 0; - work->state = 2; - work->angle = 0; - work->spr_grp[0] = spr_grp = HuSprGrpCreate(4); - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 2))); - x = 12; - for(i=0; i<2; i++) { - sprite = HuSprCreate(spr_anim, 5, 0); - HuSprGrpMemberSet(spr_grp, i, sprite); - HuSprSpeedSet(spr_grp, i, 0); - HuSprPosSet(spr_grp, i, x, 0); - HuSprColorSet(spr_grp, i, 112, 233, 255); - x -= 24; - (void)i; //Hack for Matching - } - spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 1))); - sprite = HuSprCreate(spr_anim, 7, 0); - HuSprGrpMemberSet(spr_grp, 2, sprite); - HuSprPosSet(spr_grp, 2, 0, 0); - HuSprTPLvlSet(spr_grp, 2, 0.5f); - HuSprColorSet(spr_grp, 2, 0, 0, 0); - spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 0))); - sprite = HuSprCreate(spr_anim, 6, 0); - HuSprGrpMemberSet(spr_grp, 3, sprite); - HuSprPosSet(spr_grp, 3, 0, 0); - if(seqPauseF) { - work->state = 1; - for(i=0; i<2; i++) { - HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); - (void)i; //Hack for Matching - } - } - return 1; + AnimData *spr_anim; + s16 sprite; + s16 spr_grp; + int duration, x, y; + s16 i; + + duration = va_arg(params, int); + x = va_arg(params, int); + y = va_arg(params, int); + if (duration <= 0 && duration > 99) { + duration = 99; + } + work->timer_val = duration; + if (x >= 0) { + work->x = x; + } + if (y >= 0) { + work->y = y; + } + work->alt_word_len = 0; + work->state = 2; + work->angle = 0; + work->spr_grp[0] = spr_grp = HuSprGrpCreate(4); + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 2))); + x = 12; + for (i = 0; i < 2; i++) { + sprite = HuSprCreate(spr_anim, 5, 0); + HuSprGrpMemberSet(spr_grp, i, sprite); + HuSprSpeedSet(spr_grp, i, 0); + HuSprPosSet(spr_grp, i, x, 0); + HuSprColorSet(spr_grp, i, 112, 233, 255); + x -= 24; + (void)i; // Hack for Matching + } + spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 1))); + sprite = HuSprCreate(spr_anim, 7, 0); + HuSprGrpMemberSet(spr_grp, 2, sprite); + HuSprPosSet(spr_grp, 2, 0, 0); + HuSprTPLvlSet(spr_grp, 2, 0.5f); + HuSprColorSet(spr_grp, 2, 0, 0, 0); + spr_anim = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 0))); + sprite = HuSprCreate(spr_anim, 6, 0); + HuSprGrpMemberSet(spr_grp, 3, sprite); + HuSprPosSet(spr_grp, 3, 0, 0); + if (seqPauseF) { + work->state = 1; + for (i = 0; i < 2; i++) { + HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); +#if VERSION_NTSC + //(void)i; //Hack for Matching +#endif + } + } +#if VERSION_PAL + HuSprGrpPosSet(spr_grp, -1000.0f, 0.0f); +#endif + return 1; } -static s32 SeqUpdateTimer(SeqWork *work) +s32 MGSeqUpdateTimer(SeqWork *work) { - float scale; - float tp_lvl; - u8 digits[2]; - s16 i; - s16 spr_grp = work->spr_grp[0]; - if(work->param[0] != 0 && work->state != -1) { - switch(work->param[0]) { - case 2: - switch(work->param[1]) { - case -1: - work->stat |= 0x4; - work->state = -1; - work->angle = 0.0f; - break; - - case 0: - work->state = 2; - work->angle = 0.0f; - break; - - case 1: - work->state = 3; - work->angle = 0.0f; - break; - - default: - break; - } - work->param[0] = 0; - break; - - case 1: - if(work->param[1] < 0 && !(work->stat & 0x4)) { - work->stat |= 0x4; - work->state = -1; - work->angle = 0.0f; - } else { - if(work->param[1] > 99) { - work->timer_val = 99; - } else { - if(work->timer_val != work->param[1]) { - work->timer_val = work->param[1]; - if(work->param[1] <= 5) { - HuAudFXPlay(6); - work->state = 3; - work->angle = 0.0f; - HuSprColorSet(spr_grp, 0, 255, 112, 160); - HuSprColorSet(spr_grp, 1, 255, 112, 160); - } else { - HuSprColorSet(spr_grp, 0, 112, 233, 255); - HuSprColorSet(spr_grp, 1, 112, 233, 255); - } - } - } - } - work->param[0] = 0; - break; - - case 3: - for(i=0; i<2; i++) { - HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); - } - work->state = 3; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->state == 1) { - return 1; - } - if(work->timer_val > 99) { - digits[0] = digits[1] = 9; - } else { - s32 value; - value = work->timer_val/10; - digits[1] = value; - digits[0] = work->timer_val-(value*10); - } - HuSprGrpPosSet(spr_grp, work->x, work->y); - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - for(i=0; i<2; i++) { - HuSprBankSet(spr_grp, i, digits[i]); - } - if(work->state != 0) { - switch(work->state) { - case 2: - { - float scale_x, scale_y; - scale = fabs(((sin((work->angle*M_PI)/180)*5.0f)+1.0f)-(sin((130*M_PI)/180)*5.0f)); - scale_x = work->scale_x*scale; - scale_y = work->scale_y*scale; - work->angle += seqSpeed*5.0f; - if(work->angle > 130.0f) { - work->state = 0; - break; - } - HuSprGrpScaleSet(spr_grp, scale_x, scale_y); - } - break; - - case 3: - { - scale = sin((work->angle*M_PI)/180)+1.0; - tp_lvl = 1.0-(sin((work->angle*M_PI)/180)*0.5); - work->angle += seqSpeed*18.0f; - if(work->angle > 180.0f) { - work->state = 0; - scale = 1.0f; - tp_lvl = 1.0f; - } - for(i=0; i<2; i++) { - HuSprScaleSet(spr_grp, i, scale, scale); - HuSprTPLvlSet(spr_grp, i, tp_lvl); - } - } - break; - - case -1: - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - for(i=0; i<2; i++) { - HuSprScaleSet(spr_grp, i, 1.0f, 1.0f); - } - work->angle += 1.0f; - if(work->angle < 60.0f) { - break; - } - tp_lvl = 1.0-((work->angle-60.0f)/20.0f); - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - - for(i=0; i<4; i++) { - HuSprTPLvlSet(spr_grp, i, tp_lvl); - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } else { - return 1; - } + float scale; + float tp_lvl; + u8 digits[2]; + s16 i; + s16 spr_grp = work->spr_grp[0]; + if (work->param[0] != 0 && work->state != -1) { + switch (work->param[0]) { + case 2: + switch (work->param[1]) { + case -1: + work->stat |= 0x4; + work->state = -1; + work->angle = 0.0f; + break; + + case 0: + work->state = 2; + work->angle = 0.0f; + break; + + case 1: + work->state = 3; + work->angle = 0.0f; + break; + + default: + break; + } + work->param[0] = 0; + break; + + case 1: + if (work->param[1] < 0 && !(work->stat & 0x4)) { + work->stat |= 0x4; + work->state = -1; + work->angle = 0.0f; + } + else { + if (work->param[1] > 99) { + work->timer_val = 99; + } + else { + if (work->timer_val != work->param[1]) { + work->timer_val = work->param[1]; + if (work->param[1] <= 5) { + HuAudFXPlay(6); + work->state = 3; + work->angle = 0.0f; + HuSprColorSet(spr_grp, 0, 255, 112, 160); + HuSprColorSet(spr_grp, 1, 255, 112, 160); + } + else { + HuSprColorSet(spr_grp, 0, 112, 233, 255); + HuSprColorSet(spr_grp, 1, 112, 233, 255); + } + } + } + } + work->param[0] = 0; + break; + + case 3: + for (i = 0; i < 2; i++) { + HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); + } + work->state = 3; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->state == 1) { + return 1; + } + if (work->timer_val > 99) { + digits[0] = digits[1] = 9; + } + else { + s32 value; + value = work->timer_val / 10; + digits[1] = value; + digits[0] = work->timer_val - (value * 10); + } + HuSprGrpPosSet(spr_grp, work->x, work->y); + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + for (i = 0; i < 2; i++) { + HuSprBankSet(spr_grp, i, digits[i]); + } + if (work->state != 0) { + switch (work->state) { + case 2: { + float scale_x, scale_y; + scale = fabs(((sind(work->angle) * 5.0f) + 1.0f) - (sind(130) * 5.0f)); + scale_x = work->scale_x * scale; + scale_y = work->scale_y * scale; + work->angle += seqSpeed * 5.0f; + if (work->angle > 130.0f) { + work->state = 0; + break; + } + HuSprGrpScaleSet(spr_grp, scale_x, scale_y); + } break; + + case 3: { + scale = sind(work->angle) + 1.0; + tp_lvl = 1.0 - (sind(work->angle) * 0.5); + work->angle += seqSpeed * 18.0f; + if (work->angle > 180.0f) { + work->state = 0; + scale = 1.0f; + tp_lvl = 1.0f; + } + for (i = 0; i < 2; i++) { + HuSprScaleSet(spr_grp, i, scale, scale); + HuSprTPLvlSet(spr_grp, i, tp_lvl); + } + } break; + + case -1: + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + for (i = 0; i < 2; i++) { + HuSprScaleSet(spr_grp, i, 1.0f, 1.0f); + } + work->angle += 1.0f; + if (work->angle < 60.0f) { + break; + } + tp_lvl = 1.0 - ((work->angle - 60.0f) / 20.0f); + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + + for (i = 0; i < 4; i++) { + HuSprTPLvlSet(spr_grp, i, tp_lvl); + } + break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + else { + return 1; + } } -static s32 SeqInitType2(SeqWork *work, va_list params) +s32 MGSeqInitType2(SeqWork *work, va_list params) { - s16 spr_idx; - s16 spr_grp; - AnimData *anim_tbl[6]; - s32 i; - s16 len; - char *str; - char c; - int time_max; - int x, y; - work->data = va_arg(params, void *); - time_max = va_arg(params, int); - x = va_arg(params, int); - y = va_arg(params, int); - if(time_max < 0) { - time_max = -1; - } - work->time_max = time_max; - if(x >= 0) { - work->x = x; - } - if(y >= 0) { - work->y = y; - } - work->state = 0; - work->angle = 0.0f; - x = 0; - len = 0; - str=work->data; - while(c=*str++) { - if(c >= '0' && c <= '9') { - x |= 1; - len++; - } else if(c >= 'A' && c <= 'Z') { - x |= 2; - len++; - } else if(c >= 'a' && c <= 'z') { - x |= 4; - len++; - } else if(c == '!' || c == '?') { - x |= 8; - len++; - } - } - work->word_len = len; - for(i=0; i<6; i++) { - if(x & (1 << i)) { - anim_tbl[i] = HuSprAnimRead(SeqReadFile(seqType2SprTbl[i])); - } else { - anim_tbl[i] = NULL; - } - } - work->spr_grp[0] = spr_grp = HuSprGrpCreate(len); - x = 0; - spr_idx = 0; - str=work->data; - while(c=*str++) { - i = -2; - if(c >= '0' && c <= '9') { - c -= '0'; - i = 0; - } else if(c >= 'A' && c <= 'Z') { - c -= 'A'; - i = 1; - } else if(c >= 'a' && c <= 'z') { - c -= 'a'; - i = 2; - } else if(c == '!' || c == '?') { - if(c == '!') { - c = 0; - } else { - c = 1; - } - i = 3; - } else if(c == ' ') { - i = -1; - } - work->alt_word_len = x; - if(i == -1) { - x += 32; - } else if(i >= 0) { - s16 sprite = HuSprCreate(anim_tbl[i], 5, c); - HuSprGrpMemberSet(spr_grp, spr_idx, sprite); - HuSprSpeedSet(spr_grp, spr_idx, 0.0f); - HuSprPosSet(spr_grp, spr_idx, x, 0.0f); - spr_idx++; - x += 64; - } - } - if(seqPauseF) { - work->state = 1; - for(i=0; iword_len; i++) { - HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); - } - } - return 1; + s16 spr_idx; + s16 spr_grp; + AnimData *anim_tbl[6]; + s32 i; + s16 len; + char *str; + char c; + int time_max; + int x, y; + work->data = va_arg(params, void *); + time_max = va_arg(params, int); + x = va_arg(params, int); + y = va_arg(params, int); + if (time_max < 0) { + time_max = -1; + } + work->time_max = time_max; + if (x >= 0) { + work->x = x; + } + if (y >= 0) { + work->y = y; + } + work->state = 0; + work->angle = 0.0f; + x = 0; + len = 0; + str = work->data; + while (c = *str++) { + if (c >= '0' && c <= '9') { + x |= 1; + len++; + } + else if (c >= 'A' && c <= 'Z') { + x |= 2; + len++; + } + else if (c >= 'a' && c <= 'z') { + x |= 4; + len++; + } + else if (c == '!' || c == '?') { + x |= 8; + len++; + } + } + work->word_len = len; + for (i = 0; i < 6; i++) { + if (x & (1 << i)) { + anim_tbl[i] = HuSprAnimRead(SeqReadFile(seqType2SprTbl[i])); + } + else { + anim_tbl[i] = NULL; + } + } + work->spr_grp[0] = spr_grp = HuSprGrpCreate(len); + x = 0; + spr_idx = 0; + str = work->data; + while (c = *str++) { + i = -2; + if (c >= '0' && c <= '9') { + c -= '0'; + i = 0; + } + else if (c >= 'A' && c <= 'Z') { + c -= 'A'; + i = 1; + } + else if (c >= 'a' && c <= 'z') { + c -= 'a'; + i = 2; + } + else if (c == '!' || c == '?') { + if (c == '!') { + c = 0; + } + else { + c = 1; + } + i = 3; + } + else if (c == ' ') { + i = -1; + } + work->alt_word_len = x; + if (i == -1) { + x += 32; + } + else if (i >= 0) { + s16 sprite = HuSprCreate(anim_tbl[i], 5, c); + HuSprGrpMemberSet(spr_grp, spr_idx, sprite); + HuSprSpeedSet(spr_grp, spr_idx, 0.0f); + HuSprPosSet(spr_grp, spr_idx, x, 0.0f); + spr_idx++; + x += 64; + } + } + if (seqPauseF) { + work->state = 1; + for (i = 0; i < work->word_len; i++) { + HuSprAttrSet(spr_grp, i, HUSPR_ATTR_DISPOFF); + } + } + return 1; } -static s32 SeqUpdateType2(SeqWork *work) +s32 MGSeqUpdateType2(SeqWork *work) { - float tp_lvl; - s16 spr_grp; - spr_grp = work->spr_grp[0]; - HuSprGrpPosSet(spr_grp, work->x-((0.5f*work->scale_x)*work->alt_word_len), work->y); - HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); - if(work->param[0] != 0 && work->state != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->state = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - { - s32 i; - for(i=0; iword_len; i++) { - HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); - (void)i; - } - work->state = 0; - work->param[0] = 0; - } - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->state == 1) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->state != -1) { - work->stat |= 0x4; - work->state = -1; - work->angle = 0.0f; - } - if(work->state != 0) { - if(work->state != -1) { - (void)work; //HACK: to introduce extra branch - } else { - s16 i; - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - for(i=0; iword_len; i++) { - HuSprTPLvlSet(spr_grp, i, tp_lvl); - (void)i; - } - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } else { - return 1; - } + float tp_lvl; + s16 spr_grp; + spr_grp = work->spr_grp[0]; + HuSprGrpPosSet(spr_grp, work->x - ((0.5f * work->scale_x) * work->alt_word_len), work->y); + HuSprGrpScaleSet(spr_grp, work->scale_x, work->scale_y); + if (work->param[0] != 0 && work->state != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->state = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: { + s32 i; + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(spr_grp, i, HUSPR_ATTR_DISPOFF); + (void)i; + } + work->state = 0; + work->param[0] = 0; + } break; + + default: + work->param[0] = 0; + break; + } + } + if (work->state == 1) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->state != -1) { + work->stat |= 0x4; + work->state = -1; + work->angle = 0.0f; + } + if (work->state != 0) { + if (work->state != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + s16 i; + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(spr_grp, i, tp_lvl); + (void)i; + } + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + else { + return 1; + } } +static char seqFontAlphaTbl[] = { "ABCDEFGH" + "IJKLMNOP" + "QRSTUVWX" + "YZabcdef" + "ghijklmn" + "opqrstuv" + "wxyz" }; -static char seqFontAlphaTbl[] = { - "ABCDEFGH" - "IJKLMNOP" - "QRSTUVWX" - "YZabcdef" - "ghijklmn" - "opqrstuv" - "wxyz" -}; - -static char seqFontKanaTbl[] = { - "アイウエオカキク" - "ケコサシスセソタ" - "チツテトナニヌネ" - "ノハヒフヘホマミ" - "ムメモヤユヨラリ" - "ルレロワヲンァィ" - "ゥェォャュョッカ" - "キクケコサシスセ" - "ソタチツテトハヒ" - "フヘホハヒフヘホ" - "ー" -}; +static char seqFontKanaTbl[] = { "アイウエオカキク" + "ケコサシスセソタ" + "チツテトナニヌネ" + "ノハヒフヘホマミ" + "ムメモヤユヨラリ" + "ルレロワヲンァィ" + "ゥェォャュョッカ" + "キクケコサシスセ" + "ソタチツテトハヒ" + "フヘホハヒフヘホ" + "ー" }; static char seqFontNumTbl[] = "0123456789"; -static s32 *letterBufTbl[5] = { }; +static s32 *letterBufTbl[5] = {}; static char wordStartE[] = "START!"; @@ -781,1917 +768,1951 @@ static char wordFinishE[] = "FINISH!"; static char wordDrawE[] = "DRAW!"; static char *wordMgTbl[6] = { - wordStartJ, wordFinishJ, wordDrawJ, - wordStartE, wordFinishE, wordDrawE, + wordStartJ, + wordFinishJ, + wordDrawJ, + wordStartE, + wordFinishE, + wordDrawE, }; void fn_80036BC8(void) { - if(!letterBufTbl[0]) { - letterBufTbl[0] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontAlphaTbl)); - memset(letterBufTbl[0], 0, sizeof(s32)*strlen(seqFontAlphaTbl)); - } - if(!letterBufTbl[1]) { - letterBufTbl[1] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontKanaTbl)); - memset(letterBufTbl[1], 0, sizeof(s32)*strlen(seqFontKanaTbl)); - } - if(!letterBufTbl[2]) { - letterBufTbl[2] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontKanaTbl)); - memset(letterBufTbl[2], 0, sizeof(s32)*strlen(seqFontKanaTbl)); - } - if(!letterBufTbl[3]) { - letterBufTbl[3] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqFontNumTbl)); - memset(letterBufTbl[3], 0, sizeof(s32)*strlen(seqFontNumTbl)); - } - if(!letterBufTbl[4]) { - letterBufTbl[4] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32)*strlen(seqPunctTbl)); - memset(letterBufTbl[4], 0, sizeof(s32)*strlen(seqPunctTbl)); - } + if (!letterBufTbl[0]) { + letterBufTbl[0] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontAlphaTbl)); + memset(letterBufTbl[0], 0, sizeof(s32) * strlen(seqFontAlphaTbl)); + } + if (!letterBufTbl[1]) { + letterBufTbl[1] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontKanaTbl)); + memset(letterBufTbl[1], 0, sizeof(s32) * strlen(seqFontKanaTbl)); + } + if (!letterBufTbl[2]) { + letterBufTbl[2] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontKanaTbl)); + memset(letterBufTbl[2], 0, sizeof(s32) * strlen(seqFontKanaTbl)); + } + if (!letterBufTbl[3]) { + letterBufTbl[3] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqFontNumTbl)); + memset(letterBufTbl[3], 0, sizeof(s32) * strlen(seqFontNumTbl)); + } + if (!letterBufTbl[4]) { + letterBufTbl[4] = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s32) * strlen(seqPunctTbl)); + memset(letterBufTbl[4], 0, sizeof(s32) * strlen(seqPunctTbl)); + } } static AnimData *SeqLoadFontChar(char *str, s16 flags); static s32 SeqMakeWord(SeqWork *work, char *str, s16 flags) { - s16 *char_pos; - char *str_ptr; - s16 spr_grp; - s16 i; - s16 x; - s16 grp_idx; - s16 len; - AnimData **char_anim; - for(grp_idx=0; grp_idx<16; grp_idx++) { - if(work->spr_grp[grp_idx] == -1) { - break; - } - } - if(grp_idx == 16) { - return -1; - } - char_anim = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(AnimData *)*100); - char_pos = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s16)*100); - str_ptr = str; - x = 0; - len = 0; - while(*str_ptr != 0) { - char_anim[len] = SeqLoadFontChar(str_ptr, flags); - if(char_anim[len]) { - char_pos[len] = x; - x += 56; - len++; - } - str_ptr++; - } - work->spr_grp[grp_idx] = spr_grp = HuSprGrpCreate(len); - x = (x/2)-28; - for(i=0; iword_len = len; - HuMemDirectFree(char_anim); - HuMemDirectFree(char_pos); - return grp_idx; + s16 len; + s16 x; + s16 i; + s16 grp_idx; +#if VERSION_JP + char *str_ptr; + AnimData **char_anim; + s16 *char_pos; +#else + AnimData **char_anim; + s16 *char_pos; + char *str_ptr; +#endif + s16 spr_grp; + for (grp_idx = 0; grp_idx < 16; grp_idx++) { + if (work->spr_grp[grp_idx] == -1) { + break; + } + } + if (grp_idx == 16) { + return -1; + } + char_anim = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(AnimData *) * 100); + char_pos = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(s16) * 100); + str_ptr = str; + x = 0; + len = 0; + while (*str_ptr != '\0') { +#if VERSION_JP + if (*str_ptr == ' ') { + x += 56; + } + else { + char_anim[len] = SeqLoadFontChar(str_ptr, flags); + if (char_anim[len]) { + char_pos[len] = x; + x += 56; + len++; + } + } +#else + char_anim[len] = SeqLoadFontChar(str_ptr, flags); + if (char_anim[len]) { + char_pos[len] = x; + x += 56; + len++; + } +#endif + str_ptr++; + } + work->spr_grp[grp_idx] = spr_grp = HuSprGrpCreate(len); + x = (x / 2) - 28; + for (i = 0; i < len; i++) { + s16 sprite = HuSprCreate(char_anim[i], 5, 0); + HuSprGrpMemberSet(spr_grp, i, sprite); + HuSprPosSet(spr_grp, i, char_pos[i] - x, 0.0f); + } + work->word_len = len; + HuMemDirectFree(char_anim); + HuMemDirectFree(char_pos); + return grp_idx; } static AnimData *SeqLoadFontChar(char *str, s16 flags) { - s32 data_num; - s16 id; - char *list; - char c = *str; - if(c == 222 || c == 223) { - return NULL; - } - if(c == 32) { - return HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 10))); - } - for(id = 0, list=seqFontAlphaTbl; *list != 0; id++, list++) { - if(*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+21); - return HuSprAnimRead(SeqReadFile(data_num)); - } - } - for(id = 0, list=seqFontNumTbl; *list != 0; id++, list++) { - if(*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+11); - return HuSprAnimRead(SeqReadFile(data_num)); - } - } - for(id = 0, list=seqPunctTbl; *list != 0; id++, list++) { - if(*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+154); - return HuSprAnimRead(SeqReadFile(data_num)); - } - } - if(str[1] == 222) { //゛ - list = seqFontKanaTbl; - list += 55; - id = 55; - } else if(str[1] == 223) { //゜ - list = seqFontKanaTbl; - list += 75; - id = 75; - } else { - list = seqFontKanaTbl; - id = 0; - } - while(*list != 0) { - if(*list == c) { - if(flags & 0x1) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+156); - } else { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id+73); - } - return HuSprAnimRead(SeqReadFile(data_num)); - } - id++; - list++; - } - return NULL; + s32 data_num; + s16 id; + char *list; + char c = *str; + if (c == 222 || c == 223) { + return NULL; + } +#if !VERSION_JP + if (c == 32) { + return HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 10))); + } +#endif + for (id = 0, list = seqFontAlphaTbl; *list != 0; id++, list++) { + if (*list == c) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 20 : 21)); + return HuSprAnimRead(SeqReadFile(data_num)); + } + } + for (id = 0, list = seqFontNumTbl; *list != 0; id++, list++) { + if (*list == c) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 10 : 11)); + return HuSprAnimRead(SeqReadFile(data_num)); + } + } + for (id = 0, list = seqPunctTbl; *list != 0; id++, list++) { + if (*list == c) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 153 : 154)); + return HuSprAnimRead(SeqReadFile(data_num)); + } + } + if (str[1] == 222) { // ゛ + list = seqFontKanaTbl; + list += 55; + id = 55; + } + else if (str[1] == 223) { // ゜ + list = seqFontKanaTbl; + list += 75; + id = 75; + } + else { + list = seqFontKanaTbl; + id = 0; + } + while (*list != 0) { + if (*list == c) { + if (flags & 0x1) { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 155 : 156)); + } + else { + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 72 : 73)); + } + return HuSprAnimRead(SeqReadFile(data_num)); + } + id++; + list++; + } + return NULL; } static float ForceDefine480() { - return 480.0f; + return 480.0f; } static void SeqPlayStartFX(void); -static s32 SeqInitMGBasic(SeqWork *work, va_list params) +s32 MGSeqInitMGBasic(SeqWork *work, va_list params) { - s16 i; - s16 word_grp; - - work->state = va_arg(params, int); - if(work->state == 2) { - return SeqInitDraw(work, params); - } - work->type = 0; - work->angle = 0; - - { - s32 word_katakana; - s32 word_flag; - s32 word_ofs; - word_katakana = 0; - if(work->state == 2 && seqLanguage == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - if(seqLanguage == 0) { - word_ofs = 0; - } else { - word_ofs = 3; - } - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[word_grp], i, 1.0f); - HuSprPosSet(work->spr_grp[word_grp], i, -100.0f, 240.0f); - } - if(seqPauseF) { - work->type = 2; - HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); - } else { - work->param[0] = 3; - } - return 1; + s16 i; + s16 word_grp; + + work->state = va_arg(params, int); + if (work->state == 2) { + return MGSeqInitDraw(work, params); + } + work->type = 0; + work->angle = 0; + + { + s32 word_katakana; + s32 word_flag; + s32 word_ofs; + word_katakana = 0; + if (work->state == 2 && seqLanguage == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + if (seqLanguage == 0) { + word_ofs = 0; + } + else { + word_ofs = 3; + } + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[word_grp], i, 1.0f); + HuSprPosSet(work->spr_grp[word_grp], i, -100.0f, HU_DISP_CENTERY); + } + if (seqPauseF) { + work->type = 2; + HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); + } + else { + work->param[0] = 3; + } + return 1; } -static s32 SeqUpdateMGBasic(SeqWork *work) +s32 MGSeqUpdateMGBasic(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float pos_x; - float time; - s16 i; - if(work->state == 0) { - if(work->time <= 40) { - for(i=0; iword_len; i++) { - time = work->time-((20/work->word_len)*(work->word_len-i-1)); - if(time < 0 || time > 20.0f) { - continue; - } - pos_x = (work->x-(0.5f*(work->word_len*56)))+28.0f+(i*56); - if(time == 20.0f) { - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprZRotSet(work->spr_grp[0], i, 0.0f); - } else { - HuSprPosSet(work->spr_grp[0], i, pos_x-(((1.0-sin(((time*4.5f)*M_PI)/180.0))*(work->word_len*56*2))), work->y); - HuSprZRotSet(work->spr_grp[0], i, (time/20.0f)*390.0f); - } - } - } else { - time = work->time-40; - scale = work->scale_x+(0.5*sin(((time*9.0f)*M_PI)/180.0)); - for(i=0; iword_len; i++) { - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(i*56)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, scale, work->scale_y+sin(((time*9.0f)*M_PI)/180.0)); - } - } - if(work->time == 40) { - idx = HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 60) { - SeqPlayStartFX(); - work->stat |= 0x4; - } - if(work->time >= 60) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - time = work->time; - scale = work->scale_x+(0.5*sin(((time*9.0f)*M_PI)/180.0)); - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(i*56)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x+sin(((time*9.0f)*M_PI)/180.0), work->scale_y+sin(((time*9.0f)*M_PI)/180.0)); - } - if(time == 20.0f) { - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - } - } - } else { - if(work->time > 80) { - for(i=0; iword_len; i++) { - time = (work->time-80)-((20/work->word_len)*(work->word_len-i-1)); - if(time < 0.0f || time > 20.0f) { - continue; - } - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(i*56); - if(time == 20.0f) { - HuSprAttrSet(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - } else { - HuSprPosSet(work->spr_grp[0], i, pos_x+((1.0-cos(((time*4.5f)*M_PI)/180.0f))*(work->word_len*56*2)), work->y); - HuSprZRotSet(work->spr_grp[0], i, (time/20.0f)*390.0f); - } - } - } - } - if(work->time == 110) { - work->stat |= 0x4; - } - if(work->time >= 110) { - work->type = 0; - work->stat |= 8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float pos_x; + float time; + s16 i; + if (work->state == 0) { + if (work->time <= 40) { + for (i = 0; i < work->word_len; i++) { + time = work->time - ((20 / work->word_len) * (work->word_len - i - 1)); + if (time < 0 || time > 20.0f) { + continue; + } + pos_x = (work->x - (0.5f * (work->word_len * 56))) + 28.0f + (i * 56); + if (time == 20.0f) { + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprZRotSet(work->spr_grp[0], i, 0.0f); + } + else { + HuSprPosSet(work->spr_grp[0], i, pos_x - (((1.0 - sind(time * 4.5f)) * (work->word_len * 56 * 2))), + work->y); + HuSprZRotSet(work->spr_grp[0], i, (time / 20.0f) * 390.0f); + } + } + } + else { + time = work->time - 40; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (i = 0; i < work->word_len; i++) { + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, scale, work->scale_y + sind(time * 9.0f)); + } + } + if (work->time == 40) { + idx = HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 60) { + SeqPlayStartFX(); + work->stat |= 0x4; + } + if (work->time >= 60) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + time = work->time; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + sind(time * 9.0f), + work->scale_y + sind(time * 9.0f)); + } + if (time == 20.0f) { + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + } + } + } + else { + if (work->time > 80) { + for (i = 0; i < work->word_len; i++) { + time = (work->time - 80) - ((20 / work->word_len) * (work->word_len - i - 1)); + if (time < 0.0f || time > 20.0f) { + continue; + } + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (i * 56); + if (time == 20.0f) { + HuSprAttrSet(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + } + else { + HuSprPosSet(work->spr_grp[0], i, + pos_x + ((1.0 - cosd(time * 4.5f)) * (work->word_len * 56 * 2)), work->y); + HuSprZRotSet(work->spr_grp[0], i, (time / 20.0f) * 390.0f); + } + } + } + } + if (work->time == 110) { + work->stat |= 0x4; + } + if (work->time >= 110) { + work->type = 0; + work->stat |= 8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqInitMGCommon(SeqWork *work, va_list params) +s32 MGSeqInitMGCommon(SeqWork *work, va_list params) { - s16 i; - float tp_lvl; - s16 j; - s16 word_grp; - - work->state = va_arg(params, int); - if(work->state == 2) { - return SeqInitDraw(work, params); - } - work->type = 0; - work->angle = 0; - tp_lvl = 1.0f; - for(i=0; i<4; i++) { - if(i == 0) - { - s32 word_katakana; - s32 word_flag; - s32 word_ofs; - word_katakana = 0; - if(work->state == 2 && seqLanguage == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - if(seqLanguage == 0) { - word_ofs = 0; - } else { - word_ofs = 3; - } - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } else { - s16 grp_idx; - s32 new_grp; - for(grp_idx=0; grp_idx<16; grp_idx++) { - if(work->spr_grp[grp_idx] == -1) { - break; - } - } - if(grp_idx == 16) { - new_grp = -1; - } else { - work->spr_grp[grp_idx] = HuSprGrpCopy(work->spr_grp[word_grp]); - new_grp = grp_idx; - } - (void)new_grp; - word_grp = new_grp; - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - for(j=0; jword_len; j++) { - HuSprTPLvlSet(work->spr_grp[word_grp], j, tp_lvl); - HuSprPosSet(work->spr_grp[word_grp], j, -100.0f, 240.0f); - HuSprPriSet(work->spr_grp[word_grp], j, i+5); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - } - if(i == 0) { - tp_lvl -= 0.5; - } else { - tp_lvl -= 0.1f; - } - } - if(seqPauseF) { - work->type = 2; - HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); - } else { - work->param[0] = 3; - } - return 1; + s16 i; + float tp_lvl; + s16 j; + s16 word_grp; + + work->state = va_arg(params, int); + if (work->state == 2) { + return MGSeqInitDraw(work, params); + } + work->type = 0; + work->angle = 0; + tp_lvl = 1.0f; + for (i = 0; i < 4; i++) { + if (i == 0) { + s32 word_katakana; + s32 word_flag; + s32 word_ofs; + word_katakana = 0; + if (work->state == 2 && seqLanguage == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + if (seqLanguage == 0) { + word_ofs = 0; + } + else { + word_ofs = 3; + } + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + else { + s16 grp_idx; + s32 new_grp; + for (grp_idx = 0; grp_idx < 16; grp_idx++) { + if (work->spr_grp[grp_idx] == -1) { + break; + } + } + if (grp_idx == 16) { + new_grp = -1; + } + else { + work->spr_grp[grp_idx] = HuSprGrpCopy(work->spr_grp[word_grp]); + new_grp = grp_idx; + } + (void)new_grp; + word_grp = new_grp; + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + for (j = 0; j < work->word_len; j++) { + HuSprTPLvlSet(work->spr_grp[word_grp], j, tp_lvl); + HuSprPosSet(work->spr_grp[word_grp], j, -100.0f, HU_DISP_CENTERY); + HuSprPriSet(work->spr_grp[word_grp], j, i + 5); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + if (i == 0) { + tp_lvl -= 0.5; + } + else { + tp_lvl -= 0.1f; + } + } + if (seqPauseF) { + work->type = 2; + HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); + } + else { + work->param[0] = 3; + } + return 1; } -static s32 SeqUpdateMGBattle(SeqWork *work) +s32 MGSeqUpdateMGBattle(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - s16 i, j; - float time; - float pos_x; - if(work->state == 0) { - if(work->time < 45) { - if(work->time > 10 && work->time <= 40) { - time = work->time-10; - scale = 10.0f*(1.0f-(time/30.0f)); - pos_x = (work->x-(0.5f*(work->word_len*56)))+28.0f; - HuSprPosSet(work->spr_grp[0], 0, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], 0, work->scale_x+scale, work->scale_y+scale); - scale = time/30.0f; - HuSprTPLvlSet(work->spr_grp[0], 0, scale); - } - for(i=0; i<4; i++) { - time = work->time-i; - if(time < 0 || time > 40) { - continue; - } - for(j=1; jword_len; j++) { - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - if(time == 40.0f) { - HuSprPosSet(work->spr_grp[i], j, pos_x, work->y); - HuSprZRotSet(work->spr_grp[i], j, 0.0f); - HuSprScaleSet(work->spr_grp[i], j, work->scale_x, work->scale_y); - if(i != 0) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } else { - s16 discard_cnt; - static float letterOfs[] = { - 30, 20, - 20, 3, - -4, 20, - -30, 20, - 20, 20, - -30, 20, - -10, 40, - 10, -40 - }; - float x, y; - float ofs_x, ofs_y; - float zrot, scale_ang; - x = pos_x; - y = work->y; - ofs_x = letterOfs[((j-1)&0x7)*2]; - ofs_y = letterOfs[(((j-1)&0x7)*2)+1]; - zrot = 0.0f; - discard_cnt = 0; - scale_ang = 0.0f; - for(idx=0; idx<40.0f-time; idx++) { - if(x+ofs_x > 576 || x+ofs_x < 0) { - ofs_x = -ofs_x; - discard_cnt++; - } - if(y+ofs_y > 480 || y+ofs_y < 0) { - ofs_y = -ofs_y; - discard_cnt++; - } - if(discard_cnt) { - zrot += 20.0f; - scale_ang = 0.0f; - } - x += ofs_x; - y += ofs_y; - } - HuSprPosSet(work->spr_grp[i], j, x, y); - HuSprScaleSet(work->spr_grp[i], j, work->scale_x*cos((M_PI*scale_ang)/180.0), work->scale_y); - HuSprZRotSet(work->spr_grp[i], j, zrot); - } - } - } - } else { - if(work->time > 60) { - time = work->time-60; - scale = 0.5*sin((M_PI*(time*9.0f))/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - if(work->time == 60) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 80) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 80) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - } - } - } else { - if(work->time > 80 && work->time <= 95) { - time = work->time-80; - for(j=0; jword_len; j++) { - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - HuSprPosSet(work->spr_grp[0], j, pos_x+((288.0f-pos_x)*(1.0-cos((M_PI*(time*6.0))/180.0))), work->y); - } - if(time == 15.0f) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); - HuSprPosSet(work->spr_grp[1], j, 288.0f, work->y); - HuSprTPLvlSet(work->spr_grp[1], j, 1.0f); - } - } - } else { - if(work->time > 105) { - for(j=0; jword_len; j++) { - time = work->time-105; - time -= j*3; - if(time < 0) { - continue; - } - scale = 1.0f-(time/15.0f); - if(scale < 0.0f) { - scale = 0.0f; - } - HuSprPosSet(work->spr_grp[0], j, 288.0f, work->y+((-100.0f-work->y)*(time/20.0f))); - HuSprTPLvlSet(work->spr_grp[0], j, scale); - HuSprPosSet(work->spr_grp[1], j, 288.0f, work->y+((580.0f-work->y)*(time/20.0f))); - HuSprTPLvlSet(work->spr_grp[1], j, scale); - } - } - } - } - if(work->time == 130) { - work->stat |= 0x4; - } - if(work->time >= 130) { - work->type = 0; - work->stat |= 0x8; - } - } - - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + s16 i, j; + float time; + float pos_x; + if (work->state == 0) { + if (work->time < 45) { + if (work->time > 10 && work->time <= 40) { + time = work->time - 10; + scale = 10.0f * (1.0f - (time / 30.0f)); + pos_x = (work->x - (0.5f * (work->word_len * 56))) + 28.0f; + HuSprPosSet(work->spr_grp[0], 0, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], 0, work->scale_x + scale, work->scale_y + scale); + scale = time / 30.0f; + HuSprTPLvlSet(work->spr_grp[0], 0, scale); + } + for (i = 0; i < 4; i++) { + time = work->time - i; + if (time < 0 || time > 40) { + continue; + } + for (j = 1; j < work->word_len; j++) { + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + if (time == 40.0f) { + HuSprPosSet(work->spr_grp[i], j, pos_x, work->y); + HuSprZRotSet(work->spr_grp[i], j, 0.0f); + HuSprScaleSet(work->spr_grp[i], j, work->scale_x, work->scale_y); + if (i != 0) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + else { + s16 discard_cnt; + static float letterOfs[] = { 30, 20, 20, 3, -4, 20, -30, 20, 20, 20, -30, 20, -10, 40, 10, -40 }; + float x, y; + float ofs_x, ofs_y; + float zrot, scale_ang; + x = pos_x; + y = work->y; + ofs_x = letterOfs[((j - 1) & 0x7) * 2]; + ofs_y = letterOfs[(((j - 1) & 0x7) * 2) + 1]; + zrot = 0.0f; + discard_cnt = 0; + scale_ang = 0.0f; + for (idx = 0; idx < 40.0f - time; idx++) { + if (x + ofs_x > HU_DISP_WIDTH || x + ofs_x < 0) { + ofs_x = -ofs_x; + discard_cnt++; + } + if (y + ofs_y > HU_DISP_HEIGHT || y + ofs_y < 0) { + ofs_y = -ofs_y; + discard_cnt++; + } + if (discard_cnt) { + zrot += 20.0f; + scale_ang = 0.0f; + } + x += ofs_x; + y += ofs_y; + } + HuSprPosSet(work->spr_grp[i], j, x, y); + HuSprScaleSet(work->spr_grp[i], j, work->scale_x * cosd(scale_ang), work->scale_y); + HuSprZRotSet(work->spr_grp[i], j, zrot); + } + } + } + } + else { + if (work->time > 60) { + time = work->time - 60; + scale = 0.5 * sind(time * 9.0f); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + if (work->time == 60) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 80) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 80) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); + } + if (time == 20.0f) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + } + } + } + else { + if (work->time > 80 && work->time <= 95) { + time = work->time - 80; + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + HuSprPosSet( + work->spr_grp[0], j, pos_x + ((HU_DISP_CENTERX - pos_x) * (1.0 - cosd(time * 6.0))), work->y); + } + if (time == 15.0f) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); + HuSprPosSet(work->spr_grp[1], j, HU_DISP_CENTERX, work->y); + HuSprTPLvlSet(work->spr_grp[1], j, 1.0f); + } + } + } + else { + if (work->time > 105) { + for (j = 0; j < work->word_len; j++) { + time = work->time - 105; + time -= j * 3; + if (time < 0) { + continue; + } + scale = 1.0f - (time / 15.0f); + if (scale < 0.0f) { + scale = 0.0f; + } + HuSprPosSet(work->spr_grp[0], j, HU_DISP_CENTERX, work->y + ((-100.0f - work->y) * (time / 20.0f))); + HuSprTPLvlSet(work->spr_grp[0], j, scale); + HuSprPosSet(work->spr_grp[1], j, HU_DISP_CENTERX, work->y + ((580.0f - work->y) * (time / 20.0f))); + HuSprTPLvlSet(work->spr_grp[1], j, scale); + } + } + } + } + if (work->time == 130) { + work->stat |= 0x4; + } + if (work->time >= 130) { + work->type = 0; + work->stat |= 0x8; + } + } + + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqUpdateMG1vs3(SeqWork *work) +s32 MGSeqUpdateMG1vs3(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float scale_x, scale_y; - float pos_x, pos_y; - s16 i; - s16 j; - if(work->state == 0) { - if(work->time <= 10) { - scale = work->time/10.0f; - time = work->time; - for(idx=0; idxword_len; idx++) { - scale_x = 0.3*work->scale_x; - scale_y = 0.3*work->scale_y; - pos_x = ((28.0f*scale_x)+(work->x-(0.5f*(scale_x*(work->word_len*56)))))+(scale_x*(idx*56)); - pos_y = work->y-(150.0*sin((M_PI*(((16.0f/3.0f)*time)+20.0f))/180.0)); - HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); - HuSprScaleSet(work->spr_grp[0], idx, scale_x, scale_y*cos(M_PI*(12.0f*time)/180.0)); - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } else { - if(work->time <= 60) { - for(i=0; i<4; i++) { - for(idx=0; idxword_len; idx++) { - time = (work->time-10)-(idx*3)-i; - if(time < 0.0f) { - time = 0.0f; - } else { - if(time > 30.0f) { - continue; - } - } - scale = 0.3+(0.7*(1.0-cos((M_PI*(time*3.0f))/180.0))); - scale_x = work->scale_x*scale; - scale_y = work->scale_y*scale; - pos_x = ((28.0f*scale_x)+(work->x-(0.5f*(scale_x*(work->word_len*56)))))+(scale_x*(idx*56)); - pos_y = work->y-(150.0*sin((M_PI*(((16.0f/3.0f)*time)+20.0f))/180.0)); - HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); - HuSprScaleSet(work->spr_grp[i], idx, scale_x, scale_y*cos(M_PI*(12.0f*time)/180.0)); - } - } - if(work->time == 60) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 70) { - time = work->time-70; - scale = 0.5*sin((M_PI*(time*9.0f))/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - } - if(work->time == 70) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 90) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 90) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 80 || work->time < 140) { - for(i=0; i<4; i++) { - for(j=0; jword_len; j++) { - time = (work->time-80)-i-j; - if(time < 0 || time > 40) { - continue; - } - if(time <= 20) { - float pos_base = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+((work->word_len-j-1)*56); - HuSprPosSet(work->spr_grp[i], j, pos_base+((time/20.0f)*(pos_x-pos_base)), work->y+((440.0f-work->y)*(time/20.0f))); - } else { - time -= 20.0f; - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+((work->word_len-j-1)*56); - pos_y = 440.0f; - HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y+((-40.0f-pos_y)*(time/20.0f))); - } - } - } - } - } - if(work->time == 140) { - work->stat |= 0x4; - } - if(work->time >= 140) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float scale_x, scale_y; + float pos_x, pos_y; + s16 i; + s16 j; + if (work->state == 0) { + if (work->time <= 10) { + scale = work->time / 10.0f; + time = work->time; + for (idx = 0; idx < work->word_len; idx++) { + scale_x = 0.3 * work->scale_x; + scale_y = 0.3 * work->scale_y; + pos_x = ((28.0f * scale_x) + (work->x - (0.5f * (scale_x * (work->word_len * 56))))) + (scale_x * (idx * 56)); + pos_y = work->y - 150.0 * sind((16.0f / 3.0f) * time + 20.0f); + HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); + HuSprScaleSet(work->spr_grp[0], idx, scale_x, scale_y * cosd(12.0f * time)); + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } + else { + if (work->time <= 60) { + for (i = 0; i < 4; i++) { + for (idx = 0; idx < work->word_len; idx++) { + time = (work->time - 10) - (idx * 3) - i; + if (time < 0.0f) { + time = 0.0f; + } + else { + if (time > 30.0f) { + continue; + } + } + scale = 0.3 + 0.7 * (1.0 - cosd(time * 3.0f)); + scale_x = work->scale_x * scale; + scale_y = work->scale_y * scale; + pos_x = ((28.0f * scale_x) + (work->x - (0.5f * (scale_x * (work->word_len * 56))))) + (scale_x * (idx * 56)); + pos_y = work->y - 150.0 * sind((16.0f / 3.0f) * time + 20.0f); + HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); + HuSprScaleSet(work->spr_grp[i], idx, scale_x, scale_y * cosd(12.0f * time)); + } + } + if (work->time == 60) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 70) { + time = work->time - 70; + scale = 0.5 * sind(time * 9.0f); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + } + if (work->time == 70) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 90) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 90) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); + } + if (time == 20.0f) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 80 || work->time < 140) { + for (i = 0; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + time = (work->time - 80) - i - j; + if (time < 0 || time > 40) { + continue; + } + if (time <= 20) { + float pos_base = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + ((work->word_len - j - 1) * 56); + HuSprPosSet(work->spr_grp[i], j, pos_base + ((time / 20.0f) * (pos_x - pos_base)), + work->y + (((HU_DISP_HEIGHT - 40) - work->y) * (time / 20.0f))); + } + else { + time -= 20.0f; + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + ((work->word_len - j - 1) * 56); + pos_y = HU_DISP_HEIGHT - 40; + HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y + ((-40.0f - pos_y) * (time / 20.0f))); + } + } + } + } + } + if (work->time == 140) { + work->stat |= 0x4; + } + if (work->time >= 140) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqUpdateMGStory(SeqWork *work) +s32 MGSeqUpdateMGStory(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float pos_x, pos_y; - float time; - s16 i; - s16 j; - if(work->state == 0) { - if(work->time <= 30) { - for(idx=0; idxword_len; idx++) { - time = (work->time-(idx*2)); - if(time < 0.0f || time > 15.0f) { - continue; - } - pos_x = -50.0f; - HuSprPosSet(work->spr_grp[0], idx, pos_x+((288.0f-pos_x)*(time/15.0f)), work->y); - HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); - HuSprZRotSet(work->spr_grp[0], idx, (1.0-(time/15.0f))*180.0); - pos_x = 626.0f; - HuSprPosSet(work->spr_grp[1], idx, pos_x+((288.0f-pos_x)*(time/15.0f)), work->y); - HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); - HuSprZRotSet(work->spr_grp[1], idx, (1.0-(time/15.0f))*-180.0); - } - if(work->time == 30) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); - } - } - } else { - if(work->time > 35 && work->time <= 45) { - time = work->time-35; - for(idx=0; idxword_len; idx++) { - pos_x = (work->x-(0.5f*(work->word_len*56)))+28.0f+(idx*56); - HuSprPosSet(work->spr_grp[0], idx, 288.0f+((pos_x-288.0f)*(time/10.0f)), work->y); - } - } else { - if(work->time > 55) { - time = work->time-55; - scale = 0.5*sin(M_PI*(9.0f*time)/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - } - if(work->time == 55) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 75) { - SeqPlayStartFX(); - work->stat |= 0x4; - } - if(work->time >= 75) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f){ - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else if(work->time > 80 && work->time < 160) { - for(i=0; i<4; i++) { - for(j=0; jword_len; j++) { - s16 initF; - float dx, dy; - time = (work->time-80)-i; - if(time < 0 || time > 60) { - continue; - } - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(j*56); - dx = 28.0f+(work->x-(0.5f*(work->word_len*56))); - pos_y = work->y; - for(idx=initF=0; idxx-(0.5f*(work->word_len*56))); - initF = 1; - dy = 25.0f; - dx = 10.0f; - } - - } else { - pos_x += dx; - pos_y += dy; - dx += 0.1; - dy -= 2.0f; - if(pos_y < 0.0f) { - break; - } - } - } - - HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y); - } - } - } - if(work->time == 160) { - work->stat |= 0x4; - } - if(work->time >= 160) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float pos_x, pos_y; + float time; + s16 i; + s16 j; + if (work->state == 0) { + if (work->time <= 30) { + for (idx = 0; idx < work->word_len; idx++) { + time = (work->time - (idx * 2)); + if (time < 0.0f || time > 15.0f) { + continue; + } + pos_x = -50.0f; + HuSprPosSet(work->spr_grp[0], idx, pos_x + ((HU_DISP_CENTERX - pos_x) * (time / 15.0f)), work->y); + HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); + HuSprZRotSet(work->spr_grp[0], idx, (1.0 - (time / 15.0f)) * 180.0); + pos_x = HU_DISP_WIDTH + 50; + HuSprPosSet(work->spr_grp[1], idx, pos_x + ((HU_DISP_CENTERX - pos_x) * (time / 15.0f)), work->y); + HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); + HuSprZRotSet(work->spr_grp[1], idx, (1.0 - (time / 15.0f)) * -180.0); + } + if (work->time == 30) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[1], j, HUSPR_ATTR_DISPOFF); + } + } + } + else { + if (work->time > 35 && work->time <= 45) { + time = work->time - 35; + for (idx = 0; idx < work->word_len; idx++) { + pos_x = (work->x - (0.5f * (work->word_len * 56))) + 28.0f + (idx * 56); + HuSprPosSet(work->spr_grp[0], idx, HU_DISP_CENTERX + ((pos_x - HU_DISP_CENTERX) * (time / 10.0f)), work->y); + } + } + else { + if (work->time > 55) { + time = work->time - 55; + scale = 0.5 * sind(9.0f * time); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + } + if (work->time == 55) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 75) { + SeqPlayStartFX(); + work->stat |= 0x4; + } + if (work->time >= 75) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); + } + if (time == 20.0f) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else if (work->time > 80 && work->time < 160) { + for (i = 0; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + s16 initF; + float dx, dy; + time = (work->time - 80) - i; + if (time < 0 || time > 60) { + continue; + } + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); + dx = 28.0f + (work->x - (0.5f * (work->word_len * 56))); + pos_y = work->y; + for (idx = initF = 0; idx < time; idx++) { + if (!initF) { + pos_x -= 20.0f; + if (pos_x <= dx) { + pos_x = 28.0f + (work->x - (0.5f * (work->word_len * 56))); + initF = 1; + dy = 25.0f; + dx = 10.0f; + } + } + else { + pos_x += dx; + pos_y += dy; + dx += 0.1; + dy -= 2.0f; + if (pos_y < 0.0f) { + break; + } + } + } + + HuSprPosSet(work->spr_grp[i], j, pos_x, pos_y); + } + } + } + if (work->time == 160) { + work->stat |= 0x4; + } + if (work->time >= 160) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqUpdateMG2vs2(SeqWork *work) +s32 MGSeqUpdateMG2vs2(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - static s16 letterOfs[] = { - -10, -50, - 0, -30, - 5, -60, - -10, 60, - 8, -40, - 5, 50, - -10, 20 - }; - - float pos_x; - float time; - s16 i; - s16 j; - if(work->state == 0) { - if(work->time <= 30) { - time = work->time; - for(idx=0; idxword_len; idx++) { - pos_x = (28.0f+(work->x-(0.5f*(work->scale_x*(work->word_len*56)))))+(idx*56); - HuSprPosSet(work->spr_grp[0], idx, pos_x+((1.0f-(time/30.0f))*letterOfs[(idx*2)]), work->y+((1.0f-(time/30.0f))*letterOfs[(idx*2)+1])); - HuSprTPLvlSet(work->spr_grp[0], idx, time/30.0f); - } - } else { - if(work->time > 40 && work->time <= 60) { - time = work->time-40; - scale = 0.5*sin(((time*9.0f)*M_PI)/180.0); - for(j=0; jword_len; j++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((j*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+scale, work->scale_y+scale); - } - } - } - if(work->time == 40) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 60) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 60) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin((M_PI*(time*9.0f))/180.0)); - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(j*56)); - HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(i=1; i<4; i++) { - for(j=0; jword_len; j++) { - HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 80 && work->time < 140) { - time = work->time-80; - for(idx=0; idxword_len; idx++) { - float radius = (idx*56)-(((work->word_len-1)*56)/2); - float angle = (1.0f+(1.0f-(ABS(radius)/320.0f)))*720.0f; - float new_scale; - radius *= 1.0-(time/60.0f); - HuSprPosSet(work->spr_grp[0], idx, (radius*sin(M_PI*(((time/60.0f)*angle)+90.0f)/180.0))+work->x, (radius*cos(M_PI*(((time/60.0f)*angle)+90.0f)/180.0))+work->y); - HuSprZRotSet(work->spr_grp[0], idx, -(time/60.0f)*720.0f); - new_scale = 0.5+(0.5*(1.0f-(time/60.0f))); - HuSprScaleSet(work->spr_grp[0], idx, new_scale, new_scale); - HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f-(time/60.0f)); - } - } - } - if(work->time == 140) { - work->stat |= 0x4; - } - if(work->time >= 150) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - - break; - - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + static s16 letterOfs[] = { -10, -50, 0, -30, 5, -60, -10, 60, 8, -40, 5, 50, -10, 20 }; + + float pos_x; + float time; + s16 i; + s16 j; + if (work->state == 0) { + if (work->time <= 30) { + time = work->time; + for (idx = 0; idx < work->word_len; idx++) { + pos_x = (28.0f + (work->x - (0.5f * (work->scale_x * (work->word_len * 56))))) + (idx * 56); + HuSprPosSet(work->spr_grp[0], idx, pos_x + ((1.0f - (time / 30.0f)) * letterOfs[(idx * 2)]), + work->y + ((1.0f - (time / 30.0f)) * letterOfs[(idx * 2) + 1])); + HuSprTPLvlSet(work->spr_grp[0], idx, time / 30.0f); + } + } + else { + if (work->time > 40 && work->time <= 60) { + time = work->time - 40; + scale = 0.5 * sind(time * 9.0f); + for (j = 0; j < work->word_len; j++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((j * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + scale, work->scale_y + scale); + } + } + } + if (work->time == 40) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 60) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 60) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrSet(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); + HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); + } + if (time == 20.0f) { + for (i = 1; i < 4; i++) { + for (j = 0; j < work->word_len; j++) { + HuSprAttrReset(work->spr_grp[i], j, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 80 && work->time < 140) { + time = work->time - 80; + for (idx = 0; idx < work->word_len; idx++) { + float radius = (idx * 56) - (((work->word_len - 1) * 56) / 2); + float angle = (1.0f + (1.0f - (ABS(radius) / 320.0f))) * 720.0f; + float new_scale; + radius *= 1.0 - (time / 60.0f); + HuSprPosSet(work->spr_grp[0], idx, (radius * sind((time / 60.0f) * angle + 90.0f)) + work->x, + (radius * cosd((time / 60.0f) * angle + 90.0f)) + work->y); + HuSprZRotSet(work->spr_grp[0], idx, -(time / 60.0f) * 720.0f); + new_scale = 0.5 + (0.5 * (1.0f - (time / 60.0f))); + HuSprScaleSet(work->spr_grp[0], idx, new_scale, new_scale); + HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f - (time / 60.0f)); + } + } + } + if (work->time == 140) { + work->stat |= 0x4; + } + if (work->time >= 150) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqInitFlip(SeqWork *work, va_list params) +s32 MGSeqInitFlip(SeqWork *work, va_list params) { - s16 i; - s16 word_grp; - s16 word_ofs; - work->state = va_arg(params, int); - if(work->state == 2) { - return SeqInitDraw(work, params); - } - work->type = 0; - work->angle = 0; - { - s32 word_ofs_temp; - s32 word_katakana; - s32 word_flag; + s16 i; + s16 word_grp; + s16 word_ofs; + work->state = va_arg(params, int); + if (work->state == 2) { + return MGSeqInitDraw(work, params); + } + work->type = 0; + work->angle = 0; + { + s32 word_ofs_temp; + s32 word_katakana; + s32 word_flag; - if(seqLanguage == 0) { - word_ofs_temp = 3; - } else { - word_ofs_temp = 0; - } - word_ofs = word_ofs_temp; - word_katakana = 0; - if(work->state == 2 && word_ofs == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); - HuSprPosSet(work->spr_grp[word_grp], i, (28.0f+(work->x-(0.5f*(work->word_len*56))))+(i*56), work->y); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); - } - work->alt_word_len = work->word_len; - { - s32 word_ofs_temp; - s32 word_katakana; - s32 word_flag; - - if(seqLanguage == 0) { - word_ofs_temp = 0; - } else { - word_ofs_temp = 3; - } - word_ofs = word_ofs_temp; - word_katakana = 0; - if(work->state == 2 && word_ofs == 0) { - word_katakana = 1; - } - if(word_katakana) { - word_flag = 1; - } else { - word_flag = 0; - } - - word_grp = SeqMakeWord(work, wordMgTbl[work->state+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); - HuSprPosSet(work->spr_grp[word_grp], i, (28.0f+(work->x-(0.5f*(work->word_len*56))))+(i*56), work->y); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); - } - if(seqPauseF) { - work->type = 2; - HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); - } else { - work->param[0] = 3; - } - return 1; + if (seqLanguage == 0) { + word_ofs_temp = 3; + } + else { + word_ofs_temp = 0; + } + word_ofs = word_ofs_temp; + word_katakana = 0; + if (work->state == 2 && word_ofs == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); + HuSprPosSet(work->spr_grp[word_grp], i, (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (i * 56), work->y); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); + } + work->alt_word_len = work->word_len; + { + s32 word_ofs_temp; + s32 word_katakana; + s32 word_flag; + + if (seqLanguage == 0) { + word_ofs_temp = 0; + } + else { + word_ofs_temp = 3; + } + word_ofs = word_ofs_temp; + word_katakana = 0; + if (work->state == 2 && word_ofs == 0) { + word_katakana = 1; + } + if (word_katakana) { + word_flag = 1; + } + else { + word_flag = 0; + } + + word_grp = SeqMakeWord(work, wordMgTbl[work->state + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], 0.0f, 0.0f); + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[word_grp], i, 0.0f); + HuSprPosSet(work->spr_grp[word_grp], i, (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (i * 56), work->y); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + HuSprAttrReset(work->spr_grp[word_grp], i, HUSPR_ATTR_DISPOFF); + } + if (seqPauseF) { + work->type = 2; + HuSprAttrSet(word_grp, 0, HUSPR_ATTR_DISPOFF); + } + else { + work->param[0] = 3; + } + return 1; } -static s32 SeqUpdateFlip(SeqWork *work) +s32 MGSeqUpdateFlip(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float pos_x; - s16 i; - if(work->state == 0) { - if(work->time <= 10) { - for(idx=0; idxalt_word_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, work->time/10.0f); - } - } else { - if(work->time <= 30) { - time = work->time-10; - if(time <= 10) { - for(idx=0; idxalt_word_len; idx++) { - HuSprScaleSet(work->spr_grp[0], idx, cos(M_PI*((time/10.0f)*90.0f)/180.0), 1.0f); - } - } else { - time -= 10.0f; - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); - HuSprScaleSet(work->spr_grp[1], idx, sin(M_PI*((time/10.0f)*90.0f)/180.0), 1.0f); - } - } - } else { - if(work->time > 35 && work->time <= 55) { - time = work->time-35; - scale = 0.5*sin(((time*9.0f)*M_PI)/180.0); - for(i=0; iword_len; i++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((i*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[1], i, work->scale_x+scale, work->scale_y+scale); - } - } - } - } - if(work->time == 35) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 55) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 75) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - time = work->time; - scale = 0.5*sin(M_PI*(9.0f*time)/180.0); - for(i=0; iword_len; i++) { - HuSprTPLvlSet(work->spr_grp[1], i, 1.0f); - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((i*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[1], i, work->scale_x+scale, work->scale_y+scale); - } - } else { - if(work->time > 80 && work->time <= 160) { - time = work->time-80; - for(idx=0; idxword_len; idx++) { - scale = time-(idx*2); - if(scale < 0 || scale > 15.0f) { - continue; - } - HuSprScaleSet(work->spr_grp[1], idx, cos(M_PI*((scale/15.0f)*90.0f)/180.0), 1.0f); - } - for(idx=0; idxalt_word_len; idx++) { - scale = (time-15.0f)-(idx*2); - if(scale < 0 || scale > 30.0f) { - continue; - } - HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); - HuSprScaleSet(work->spr_grp[0], idx, sin(M_PI*((scale/30.0f)*180.0f)/180.0), 1.0f); - } - } - } - if(work->time == 160) { - work->stat |= 0x4; - } - if(work->time >= 160) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[1], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float pos_x; + s16 i; + if (work->state == 0) { + if (work->time <= 10) { + for (idx = 0; idx < work->alt_word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, work->time / 10.0f); + } + } + else { + if (work->time <= 30) { + time = work->time - 10; + if (time <= 10) { + for (idx = 0; idx < work->alt_word_len; idx++) { + HuSprScaleSet(work->spr_grp[0], idx, cosd((time / 10.0f) * 90.0f), 1.0f); + } + } + else { + time -= 10.0f; + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); + HuSprScaleSet(work->spr_grp[1], idx, sind((time / 10.0f) * 90.0f), 1.0f); + } + } + } + else { + if (work->time > 35 && work->time <= 55) { + time = work->time - 35; + scale = 0.5 * sind(time * 9.0f); + for (i = 0; i < work->word_len; i++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((i * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[1], i, work->scale_x + scale, work->scale_y + scale); + } + } + } + } + if (work->time == 35) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 55) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 75) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + time = work->time; + scale = 0.5 * sind(9.0f * time); + for (i = 0; i < work->word_len; i++) { + HuSprTPLvlSet(work->spr_grp[1], i, 1.0f); + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((i * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[1], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[1], i, work->scale_x + scale, work->scale_y + scale); + } + } + else { + if (work->time > 80 && work->time <= 160) { + time = work->time - 80; + for (idx = 0; idx < work->word_len; idx++) { + scale = time - (idx * 2); + if (scale < 0 || scale > 15.0f) { + continue; + } + HuSprScaleSet(work->spr_grp[1], idx, cosd((scale / 15.0f) * 90.0f), 1.0f); + } + for (idx = 0; idx < work->alt_word_len; idx++) { + scale = (time - 15.0f) - (idx * 2); + if (scale < 0 || scale > 30.0f) { + continue; + } + HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); + HuSprScaleSet(work->spr_grp[0], idx, sind((scale / 30.0f) * 180.0f), 1.0f); + } + } + } + if (work->time == 160) { + work->stat |= 0x4; + } + if (work->time >= 160) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[1], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqUpdateMGBowser(SeqWork *work) +s32 MGSeqUpdateMGBowser(SeqWork *work) { - s16 idx; - float scale; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - if(work->type == 2) { - return 1; - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - s16 i; - s16 j; - float angle; - float time_angle; - float time; - float pos_x, pos_y; - - float temp_f25; - float center_x; - s16 spr_idx[16]; - float scale_arr[16]; - - - if(work->state == 0) { - if(work->time <= 60) { - center_x = (0.5*(work->word_len*56))+20.0; - for(idx=0; idxword_len; idx++) { - time = work->time-idx; - if(time < 0) { - scale_arr[idx] = 0.0f; - spr_idx[idx] = idx; - } else { - if(time > 50.0f) { - time = 50.0f; - } - time_angle = 540.0*(1.0f-(time/50.0f)); - pos_x = (28.0f+(0.5f*-(work->word_len*56)))+(idx*56); - angle = 180.0*(atan2(pos_x, center_x)/M_PI); - pos_x = work->x+(center_x*sin(M_PI*(angle+time_angle)/180.0)); - pos_y = work->y-(240.0*(1.0-(time/50.0f))); - HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); - temp_f25 = 0.9+(0.1*cos(M_PI*(angle+time_angle)/180.0)); - HuSprScaleSet(work->spr_grp[0], idx, temp_f25*cos(M_PI*(angle+time_angle)/180.0), temp_f25); - scale_arr[idx] = cos(M_PI*(angle+time_angle)/180.0); - spr_idx[idx] = idx; - } - } - for(i=1; iword_len; i++) { - for(idx=0; idxword_len-i; idx++) { - if(scale_arr[idx] > scale_arr[idx+1]) { - j= spr_idx[idx]; - spr_idx[idx] = spr_idx[idx+1]; - spr_idx[idx+1] = j; - angle = scale_arr[idx]; - scale_arr[idx] = scale_arr[idx+1]; - scale_arr[idx+1] = angle; - } - } - } - for(idx=0; idxword_len; idx++) { - HuSprPriSet(work->spr_grp[0], spr_idx[idx], idx+5); - } - } else { - if(work->time > 60 && work->time <= 80) { - time = work->time-60; - scale = 0.5*sin(((time*9.0f)*M_PI)/180.0); - for(i=0; iword_len; i++) { - pos_x = (28.0f*(scale+work->scale_x))+(work->x-(0.5f*((work->word_len*56)*(scale+work->scale_x))))+((i*56)*(scale+work->scale_x)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x+scale, work->scale_y+scale); - } - } - - } - if(work->time == 60) { - HuAudFXPlay(36); - work->stat |= 0x10; - } - if(work->time == 80) { - work->stat |= 0x4; - SeqPlayStartFX(); - } - if(work->time >= 100) { - work->type = 0; - } - } else { - if(work->time == 1) { - if(work->state == 1) { - HuAudFXPlay(37); - } else { - HuAudFXPlay(40); - } - MGSeqPauseEnableCtrl(0); - work->stat |= 0x10; - } - if(work->time <= 20) { - for(j=1; j<4; j++) { - for(i=0; iword_len; i++) { - HuSprAttrSet(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); - } - } - time = work->time; - scale = work->scale_x+(0.5*sin(((time*9.0f)*M_PI)/180.0)); - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); - pos_x = ((28.0f*scale)+(work->x-(0.5f*(scale*(work->word_len*56)))))+(scale*(i*56)); - HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x+(sin((M_PI*(time*9.0f))/180.0)), work->scale_y+(sin((M_PI*(time*9.0f))/180.0))); - } - if(time == 20.0f) { - for(j=1; j<4; j++) { - for(i=0; iword_len; i++) { - HuSprAttrReset(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); - } - } - } - } else { - if(work->time > 80 && work->time <= 125) { - static float letterOfs[] = { - -30, -30, - 606, -30, - 340, 510, - 606, 510, - -30, 450, - 606, 120, - 450, -30, - }; - for(i=0; i<4; i++) { - time = work->time-80-i; - if(time < 0.0f || time > 15.0f) { - continue; - } - for(idx=0; idxword_len; idx++) { - pos_x = (28.0f+(work->x-(0.5f*(work->word_len*56))))+(idx*56); - pos_x += (time/15.0f)*(letterOfs[(idx*2)]-pos_x); - pos_y = work->y+((time/15.0f)*(letterOfs[(idx*2)+1]-work->y)); - HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); - } - } - } - } - if(work->time == 125) { - work->stat |= 0x4; - } - if(work->time >= 135) { - work->type = 0; - work->stat |= 0x8; - } - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - scale = 1.0f-work->angle; - if(scale <= 0.0f) { - scale = 0.0f; - work->type = 0; - work->stat |= 0x8; - if(work->state == 0) { - MGSeqPauseEnableCtrl(1); - } - } - for(idx=0; idxword_len; idx++) { - HuSprTPLvlSet(work->spr_grp[0], idx, scale); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + if (work->type == 2) { + return 1; + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + s16 i; + s16 j; + float angle; + float time_angle; + float time; + float pos_x, pos_y; + + float temp_f25; + float center_x; + s16 spr_idx[16]; + float scale_arr[16]; + + if (work->state == 0) { + if (work->time <= 60) { + center_x = (0.5 * (work->word_len * 56)) + 20.0; + for (idx = 0; idx < work->word_len; idx++) { + time = work->time - idx; + if (time < 0) { + scale_arr[idx] = 0.0f; + spr_idx[idx] = idx; + } + else { + if (time > 50.0f) { + time = 50.0f; + } + time_angle = 540.0 * (1.0f - (time / 50.0f)); + pos_x = (28.0f + (0.5f * -(work->word_len * 56))) + (idx * 56); + angle = atan2d(pos_x, center_x); + pos_x = work->x + (center_x * sind(angle + time_angle)); + pos_y = work->y - (HU_DISP_CENTERY * (1.0 - (time / 50.0f))); + HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); + temp_f25 = 0.9 + (0.1 * cosd(angle + time_angle)); + HuSprScaleSet(work->spr_grp[0], idx, temp_f25 * cosd(angle + time_angle), temp_f25); + scale_arr[idx] = cosd(angle + time_angle); + spr_idx[idx] = idx; + } + } + for (i = 1; i < work->word_len; i++) { + for (idx = 0; idx < work->word_len - i; idx++) { + if (scale_arr[idx] > scale_arr[idx + 1]) { + j = spr_idx[idx]; + spr_idx[idx] = spr_idx[idx + 1]; + spr_idx[idx + 1] = j; + angle = scale_arr[idx]; + scale_arr[idx] = scale_arr[idx + 1]; + scale_arr[idx + 1] = angle; + } + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprPriSet(work->spr_grp[0], spr_idx[idx], idx + 5); + } + } + else { + if (work->time > 60 && work->time <= 80) { + time = work->time - 60; + scale = 0.5 * sind(time * 9.0f); + for (i = 0; i < work->word_len; i++) { + pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + + ((i * 56) * (scale + work->scale_x)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + scale, work->scale_y + scale); + } + } + } + if (work->time == 60) { + HuAudFXPlay(36); + work->stat |= 0x10; + } + if (work->time == 80) { + work->stat |= 0x4; + SeqPlayStartFX(); + } + if (work->time >= 100) { + work->type = 0; + } + } + else { + if (work->time == 1) { + if (work->state == 1) { + HuAudFXPlay(37); + } + else { + HuAudFXPlay(40); + } + MGSeqPauseEnableCtrl(0); + work->stat |= 0x10; + } + if (work->time <= 20) { + for (j = 1; j < 4; j++) { + for (i = 0; i < work->word_len; i++) { + HuSprAttrSet(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); + } + } + time = work->time; + scale = work->scale_x + (0.5 * sind(time * 9.0f)); + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); + pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); + HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + (sind(time * 9.0f)), + work->scale_y + sind(time * 9.0f)); + } + if (time == 20.0f) { + for (j = 1; j < 4; j++) { + for (i = 0; i < work->word_len; i++) { + HuSprAttrReset(work->spr_grp[j], i, HUSPR_ATTR_DISPOFF); + } + } + } + } + else { + if (work->time > 80 && work->time <= 125) { + static float letterOfs[] = { + -30, + -30, + HU_DISP_WIDTH + 30, + -30, + HU_DISP_CENTERX + 52, + HU_DISP_HEIGHT + 30, + HU_DISP_WIDTH + 30, + HU_DISP_HEIGHT + 30, + -30, + HU_DISP_HEIGHT - 30, + HU_DISP_WIDTH + 30, + 120, + HU_DISP_CENTERX + 162, + -30, + }; + for (i = 0; i < 4; i++) { + time = work->time - 80 - i; + if (time < 0.0f || time > 15.0f) { + continue; + } + for (idx = 0; idx < work->word_len; idx++) { + pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (idx * 56); + pos_x += (time / 15.0f) * (letterOfs[(idx * 2)] - pos_x); + pos_y = work->y + ((time / 15.0f) * (letterOfs[(idx * 2) + 1] - work->y)); + HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); + } + } + } + } + if (work->time == 125) { + work->stat |= 0x4; + } + if (work->time >= 135) { + work->type = 0; + work->stat |= 0x8; + } + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + scale = 1.0f - work->angle; + if (scale <= 0.0f) { + scale = 0.0f; + work->type = 0; + work->stat |= 0x8; + if (work->state == 0) { + MGSeqPauseEnableCtrl(1); + } + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprTPLvlSet(work->spr_grp[0], idx, scale); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqInitDraw(SeqWork *work, va_list params) +s32 MGSeqInitDraw(SeqWork *work, va_list params) { - s16 word_grp; - work->state = 2; - work->seq_no = 13; - work->type = 0; - work->angle = 0.0f; - { - s32 word_flag; - s32 word_ofs; + s16 word_grp; + work->state = 2; + work->seq_no = 13; + work->type = 0; + work->angle = 0.0f; + { + s32 word_flag; + s32 word_ofs; - if(seqLanguage == 0) { - word_flag = 1; - } else { - word_flag = 0; - } - if(seqLanguage == 0) { - word_ofs = 0; - } else { - word_ofs = 3; - } - - word_grp = SeqMakeWord(work, wordMgTbl[2+word_ofs], word_flag); - } - HuSprGrpPosSet(work->spr_grp[word_grp], 288.0f, 240.0f); - work->param[0] = 3; - return 1; + if (seqLanguage == 0) { + word_flag = 1; + } + else { + word_flag = 0; + } + if (seqLanguage == 0) { + word_ofs = 0; + } + else { + word_ofs = 3; + } + + word_grp = SeqMakeWord(work, wordMgTbl[2 + word_ofs], word_flag); + } + HuSprGrpPosSet(work->spr_grp[word_grp], HU_DISP_CENTERX, HU_DISP_CENTERY); + work->param[0] = 3; + return 1; } -static s32 SeqUpdateDraw(SeqWork *work) +s32 MGSeqUpdateDraw(SeqWork *work) { - s16 idx; - float scale; - s16 group = work->spr_grp[0]; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float scale; - float zrot; - if(work->time <= 20) { - time = work->time; - zrot = 365.0f*(time/20.0f); - scale = 1.3f*sin(M_PI*(90.0f*(time/20.0f))/180.0); - HuSprGrpScaleSet(group, scale, scale); - HuSprGrpZRotSet(group, zrot); - } - if(work->time > 20 && work->time <= 25) { - HuSprGrpZRotSet(group, 0.0f); - time = work->time-20; - scale = 1.0+(0.3*cos(M_PI*(90.0f*(time/5.0f))/180.0)); - HuSprGrpScaleSet(group, scale, scale); - } - if(work->time == 5) { - HuAudFXPlay(40); - } - if(work->time == 60) { - work->type = 0; - } - } - break; - - case -1: - { - float tp_lvl; - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - HuSprGrpTPLvlSet(group, tp_lvl); - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 idx; + float scale; + s16 group = work->spr_grp[0]; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float scale; + float zrot; + if (work->time <= 20) { + time = work->time; + zrot = 365.0f * (time / 20.0f); + scale = 1.3f * sind(90.0f * (time / 20.0f)); + HuSprGrpScaleSet(group, scale, scale); + HuSprGrpZRotSet(group, zrot); + } + if (work->time > 20 && work->time <= 25) { + HuSprGrpZRotSet(group, 0.0f); + time = work->time - 20; + scale = 1.0 + (0.3 * cosd(90.0f * (time / 5.0f))); + HuSprGrpScaleSet(group, scale, scale); + } + if (work->time == 5) { + HuAudFXPlay(40); + } + if (work->time == 60) { + work->type = 0; + } + } break; + + case -1: { + float tp_lvl; + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + HuSprGrpTPLvlSet(group, tp_lvl); + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static char *winCharNameTbl[] = { - "マリオ", - "MARIO", - "ルイージ", - "LUIGI", - "ピーチ", - "PEACH", - "ヨッシー", - "YOSHI", - "ワリオ", - "WARIO", - "ドンキー", - " DK ", - "デイジー", - "DAISY", - "ワルイージ", - "WALUIGI", - "クッパ", - "BOWSER", - "キノピオ", - "TOAD", - "ヘイホー", - "SHY GUY", - "テレサ", - "BOO", - "ノコノコ", - "KOOPA", - "ミニクッパ", - "KOOPA KID", - "クリボー", - "GOOMBA" + "マリオ", + "MARIO", + "ルイージ", + "LUIGI", + "ピーチ", + "PEACH", + "ヨッシー", + "YOSHI", + "ワリオ", + "WARIO", + "ドンキー", + VERSION_JP ? "DK" : " DK ", + "デイジー", + "DAISY", + "ワルイージ", + "WALUIGI", + "クッパ", + "BOWSER", + "キノピオ", + "TOAD", + "ヘイホー", + VERSION_JP ? "HEHOH" : "SHY GUY", + "テレサ", + VERSION_JP ? "TERETHA" : "BOO", + "ノコノコ", + VERSION_JP ? "NOKONOKO" : "KOOPA", + "ミニクッパ", + VERSION_NTSC ? (VERSION_ENG ? "KOOPA KID" : "BABYBOWSER") : "MINI BOWSER", + "クリボー", + VERSION_JP ? "KURIBO" : "GOOMBA", }; -static char *winWordTbl[] = { - "カチ", - "WON!", - "ハイボク", - "LOSE", - "ユウショウ!", - "CHAMPION!" -}; +static char *winWordTbl[] = { "カチ", "WON!", "ハイボク", "LOSE", "ユウショウ!", "CHAMPION!" }; static s16 winPosOfs[][5][2] = { - { - { 114, 0 }, - { -144, 0 }, - { 0, 0 }, - { 0, 0 }, - { 0, 0 } - }, - { - { 0, 35 }, - { -144, -35 }, - { 144, -35 }, - { 0, 0 }, - { 0, 0 } - }, - { - { 0, 105 }, - { 0, -105 }, - { -144, 0 }, - { 144, 0 }, - { 0, 0 } - }, - { - { 0, 105 }, - { -144, -105 }, - { 144, -105 }, - { -144, 0 }, - { 144, 0 } - } + { { VERSION_JP ? 144 : 114, 0 }, { -144, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + { { 0, 35 }, { -144, -35 }, { 144, -35 }, { 0, 0 }, { 0, 0 } }, + { { 0, 105 }, { 0, -105 }, { -144, 0 }, { 144, 0 }, { 0, 0 } }, + { { 0, 105 }, { -144, -105 }, { 144, -105 }, { -144, 0 }, { 144, 0 } }, }; static s16 winnerNameW[8]; @@ -2699,850 +2720,925 @@ static s16 winnerNameW[8]; #define GET_LANG_IDX() ((seqLanguage == 0) ? 0 : 1) #define GET_WIN_KANAF() ((seqLanguage == 0) ? 1 : 0) - -static s32 SeqInitWin(SeqWork *work, va_list params) +s32 MGSeqInitWin(SeqWork *work, va_list params) { - int win_type = va_arg(params, int); - s16 word_idx; - s16 word_grp; - s32 i; - s32 j; - s32 num_winners; - float word_w; - float word_x; - if(win_type < 0 && win_type >= 6) { - return 0; - } - if(win_type == 3) { - word_idx = GET_LANG_IDX(); - } else { - if(win_type == 4) { - word_idx = GET_LANG_IDX()+2; - } else { - word_idx = GET_LANG_IDX()+4; - } - } - word_grp = SeqMakeWord(work, winWordTbl[word_idx], GET_WIN_KANAF()); - winnerNameW[0] = work->word_len*50; - for(i=0; iword_len; i++) { - HuSprPosSet(work->spr_grp[word_grp], i, 25.0f+((i*50)-(0.5f*(work->word_len*50))), 0.0f); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - } - num_winners = 0; - work->win_scale = 1.0f; - for(j=0; j<4; j++) { - int winner = va_arg(params, int); - if(winner < 0) { - continue; - } - word_grp = SeqMakeWord(work, winCharNameTbl[(winner*2)+GET_LANG_IDX()], 0); - if(seqLanguage != 0) { - char *name = winCharNameTbl[(winner*2)+GET_LANG_IDX()]; - word_w = 0.0f; - for(i=word_w; iword_len; i++, name++) { - if(*name == ' ') { - word_w += 30.0f; - } else { - word_w += 50.0f; - } - } - name = winCharNameTbl[(winner*2)+GET_LANG_IDX()]; - word_x = 0.0f; - for(i=word_x; iword_len; i++, name++) { - HuSprPosSet(work->spr_grp[word_grp], i, 25.0+(word_x-(0.5*word_w)), 0.0f); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - if(*name == ' ') { - word_x += 30.0f; - } else { - word_x += 50.0f; - } - } - if(work->win_scale == 0.6f || winner == 7 || winner == 13 || winner == 10) { - work->win_scale = 0.6f; - } else { - work->win_scale = 0.75f; - } - winnerNameW[num_winners+1] = word_w; - } else { - if(winner == 7 || winner == 13) { - for(i=0;iword_len; i++) { - HuSprPosSet(work->spr_grp[word_grp], i, 26.0f+((i*52)-(0.5f*(work->word_len*52))), 0.0f); - HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); - } - work->win_scale = 0.8f; - winnerNameW[num_winners+1] = work->word_len*52; - } else { - work->win_scale = 1.0f; - winnerNameW[num_winners+1] = work->word_len*56; - } - - } - num_winners++; - } - if(num_winners == 0) { - return 0; - } - work->state = 0; - work->word_len = num_winners+1; - work->angle = 0.0f; - work->type = 0; - for(j=0; jwin_scale)); - if(j == 0) { - word_x = (((576.0f-word_x)/2.0f)+(word_x-(winnerNameW[0]/2)))-288.0f; - } else { - word_x = (((576.0f-word_x)/2.0f)+(winnerNameW[1]/2))-288.0f; - } - } else { - if(abs(winPosOfs[num_winners-1][j][0]) == 144.0f) { - if(winnerNameW[j]+32 < 288.0f) { - word_x = 176.0f; - } else { - word_x = 32.0f+((winnerNameW[j]*work->win_scale)/2.0f); - } - if(winPosOfs[num_winners-1][j][0] < 0) { - word_x = -(288.0f-word_x); - } else { - word_x = (576.0f-word_x)-288.0f; - } - } else { - word_x = winPosOfs[num_winners-1][j][0]; - } - } - HuSprGrpPosSet(work->spr_grp[j], 288.0f+word_x, 240.0f+winPosOfs[num_winners-1][j][1]); - } - if(seqPauseF) { - work->type = 1; - num_winners++; - for(j=0; jspr_grp[j], 0, HUSPR_ATTR_DISPOFF); - } - } else { - work->param[0] = 3; - } - return 1; + int win_type = va_arg(params, int); + s16 word_idx; + s16 word_grp; + s32 i; + s32 j; + s32 num_winners; + float word_w; + float word_x; + if (win_type < 0 && win_type >= 6) { + return 0; + } + if (win_type == 3) { + word_idx = GET_LANG_IDX(); + } + else { + if (win_type == 4) { + word_idx = GET_LANG_IDX() + 2; + } + else { + word_idx = GET_LANG_IDX() + 4; + } + } + word_grp = SeqMakeWord(work, winWordTbl[word_idx], GET_WIN_KANAF()); + winnerNameW[0] = work->word_len * (VERSION_JP ? 56 : 50); +#if !VERSION_JP + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } +#endif + num_winners = 0; +#if !VERSION_JP + work->win_scale = 1.0f; +#endif + for (j = 0; j < 4; j++) { + int winner = va_arg(params, int); + (void)winner; // to match PAL + if (winner < 0) { + continue; + } + word_grp = SeqMakeWord(work, winCharNameTbl[(winner * 2) + GET_LANG_IDX()], 0); +#if VERSION_ENG + if (seqLanguage != 0) { + char *name = winCharNameTbl[(winner * 2) + GET_LANG_IDX()]; + word_w = 0.0f; + for (i = word_w; i < work->word_len; i++, name++) { + if (*name == ' ') { + word_w += 30.0f; + } + else { + word_w += 50.0f; + } + } + name = winCharNameTbl[(winner * 2) + GET_LANG_IDX()]; + word_x = 0.0f; + for (i = word_x; i < work->word_len; i++, name++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0 + (word_x - (0.5 * word_w)), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + if (*name == ' ') { + word_x += 30.0f; + } + else { + word_x += 50.0f; + } + } + if (work->win_scale == 0.6f || winner == 7 || winner == 13 || winner == 10) { + work->win_scale = 0.6f; + } + else { + work->win_scale = 0.75f; + } + winnerNameW[num_winners + 1] = word_w; + } + else if (winner == 7 || winner == 13) { + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 26.0f + ((i * 52) - (0.5f * (work->word_len * 52))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + work->win_scale = 0.8f; + winnerNameW[num_winners + 1] = work->word_len * 52; + } + else { + work->win_scale = 1.0f; + winnerNameW[num_winners + 1] = work->word_len * 56; + } +#elif VERSION_PAL + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + if ((work->win_scale == 0.5f) || (winner == 13)) { + work->win_scale = 0.5f; + } + else if ((work->win_scale == 0.6f) || (winner == 7) || (winner == 10)) { + work->win_scale = 0.6f; + } + else { + work->win_scale = 0.75f; + } + winnerNameW[num_winners + 1] = work->word_len * 50; +#else + if (seqLanguage != 0) { + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + (i * 50 - (0.5f * (work->word_len * 50))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + work->win_scale = 0.75f; + winnerNameW[num_winners + 1] = work->word_len * 50; + } + else if (winner == 7 || winner == 13) { + for (i = 0; i < work->word_len; i++) { + HuSprPosSet(work->spr_grp[word_grp], i, 26.0f + ((i * 52) - (0.5f * (work->word_len * 52))), 0.0f); + HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); + } + work->win_scale = 0.8f; + winnerNameW[num_winners + 1] = work->word_len * 52; + } + else { + work->win_scale = 1.0f; + winnerNameW[num_winners + 1] = work->word_len * 56; + } +#endif + num_winners++; + } + if (num_winners == 0) { + return 0; + } + work->state = 0; + work->word_len = num_winners + 1; + work->angle = 0.0f; + work->type = 0; + for (j = 0; j < num_winners + 1; j++) { + if (num_winners == 1) { +#if VERSION_JP + word_x = 32 + (winnerNameW[1] + winnerNameW[0]); +#else + word_x = 32.0f + ((float)winnerNameW[0] + (winnerNameW[1] * work->win_scale)); +#endif + if (j == 0) { + word_x = (((HU_DISP_WIDTH - word_x) / 2.0f) + (word_x - (winnerNameW[0] / 2))) - HU_DISP_CENTERX; + } + else { + word_x = (((HU_DISP_WIDTH - word_x) / 2.0f) + (winnerNameW[1] / 2)) - HU_DISP_CENTERX; + } + } + else { + if (abs(winPosOfs[num_winners - 1][j][0]) == 144.0f) { +#if VERSION_ENG + if (winnerNameW[j] + 32 < HU_DISP_CENTERX) { + word_x = 176.0f; + } + else { + word_x = 32.0f + ((winnerNameW[j] * work->win_scale) / 2.0f); + } + if (winPosOfs[num_winners - 1][j][0] < 0) { + word_x = -(HU_DISP_CENTERX - word_x); + } + else { + word_x = (HU_DISP_WIDTH - word_x) - HU_DISP_CENTERX; + } +#elif VERSION_PAL + if (32.0f + (work->win_scale * winnerNameW[j]) < HU_DISP_CENTERX) { + word_x = 32.0f + ((winnerNameW[j] * work->win_scale) / 2.0f); + } + else { + word_x = 120.0f; + } + if (winPosOfs[num_winners - 1][j][0] < 0) { + word_x = -word_x; + } +#else + if (32 + winnerNameW[j] < HU_DISP_CENTERX) { + word_x = 32 + winnerNameW[j] / 2; + } + else { + word_x = 120.0f; + } + if (winPosOfs[num_winners - 1][j][0] < 0) { + word_x = -word_x; + } +#endif + } + else { + word_x = winPosOfs[num_winners - 1][j][0]; + } + } + HuSprGrpPosSet(work->spr_grp[j], HU_DISP_CENTERX + word_x, HU_DISP_CENTERY + winPosOfs[num_winners - 1][j][1]); + } + if (seqPauseF) { + work->type = 1; + num_winners++; + for (j = 0; j < num_winners; j++) { + HuSprAttrSet(work->spr_grp[j], 0, HUSPR_ATTR_DISPOFF); + } + } + else { + work->param[0] = 3; + } + return 1; } - -static s32 SeqUpdateWin(SeqWork *work) +s32 MGSeqUpdateWin(SeqWork *work) { - s32 idx; - float tp_lvl; - s16 group = work->spr_grp[0]; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - float time; - float scale; - float zrot; - if(work->time <= 20) { - time = work->time; - zrot = 365.0f*(time/20.0f); - scale = sin(M_PI*(90.0f*(time/20.0f))/180.0); - HuSprGrpScaleSet(work->spr_grp[0], scale, scale); - HuSprGrpZRotSet(work->spr_grp[0], zrot); - scale = 1.0+(5.0*cos(M_PI*(90.0f*(time/20.0f))/180.0)); - tp_lvl = time/20.0f; - for(idx=1; idxword_len; idx++) { - HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); - HuSprGrpScaleSet(work->spr_grp[idx], scale*work->win_scale, scale); - } - } - if(work->time > 20 && work->time <= 22) { - HuSprGrpZRotSet(work->spr_grp[0], 0.0f); - for(idx=1; idxword_len; idx++) { - float pos_x; - float ofs[2]; - if(work->time == 21) { - ofs[0] = ((idx & 0x1)*2)-1; - ofs[1] = (idx & 0x2) ? 2 : -1; - } else { - ofs[0] = ofs[1] = 0.0f; - } - if(work->word_len == 2) { - pos_x = winnerNameW[1]+winnerNameW[0]+32; - pos_x = (((576.0f-pos_x)/2.0f)+(winnerNameW[1]/2))-288.0f; - } else { - if(abs(winPosOfs[work->word_len-2][idx][0]) == 144.0f) { - if(winnerNameW[idx]+32 < 288.0f) { - pos_x = 176.0f; - } else { - pos_x = 32.0f+((winnerNameW[idx]*work->win_scale)/2.0f); - } - if(winPosOfs[work->word_len-2][idx][0] < 0) { - pos_x = -(288.0f-pos_x); - } else { - pos_x = (576.0f-pos_x)-288.0f; - } - } else { - pos_x = winPosOfs[work->word_len-2][idx][0]; - } - } - HuSprGrpPosSet(work->spr_grp[idx], (288.0f+pos_x)+ofs[0], ofs[1]+(240.0f+winPosOfs[work->word_len-2][idx][1])); - } - } - if(work->time == 125) { - work->type = 0; - } - } - break; - - case -1: - { - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - for(idx=0; idxword_len; idx++) { - HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); - } - } - break; - - default: - break; - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s32 idx; + float tp_lvl; + s16 group = work->spr_grp[0]; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + float time; + float scale; + float zrot; + if (work->time <= 20) { + time = work->time; + zrot = 365.0f * (time / 20.0f); + scale = sind(90.0f * (time / 20.0f)); + HuSprGrpScaleSet(work->spr_grp[0], scale, scale); + HuSprGrpZRotSet(work->spr_grp[0], zrot); + scale = 1.0 + (5.0 * cosd(90.0f * (time / 20.0f))); + tp_lvl = time / 20.0f; + for (idx = 1; idx < work->word_len; idx++) { + HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); + HuSprGrpScaleSet(work->spr_grp[idx], scale * work->win_scale, scale); + } + } + if (work->time > 20 && work->time <= 22) { + HuSprGrpZRotSet(work->spr_grp[0], 0.0f); + for (idx = 1; idx < work->word_len; idx++) { + float pos_x; + float ofs[2]; + if (work->time == 21) { + ofs[0] = ((idx & 0x1) * 2) - 1; + ofs[1] = (idx & 0x2) ? 2 : -1; + } + else { + ofs[0] = ofs[1] = 0.0f; + } + if (work->word_len == 2) { + pos_x = winnerNameW[1] + winnerNameW[0] + 32; + pos_x = (((HU_DISP_WIDTH - pos_x) / 2.0f) + (winnerNameW[1] / 2)) - HU_DISP_CENTERX; + } + else { + if (abs(winPosOfs[work->word_len - 2][idx][0]) == 144.0f) { + if (winnerNameW[idx] + 32 < HU_DISP_CENTERX) { + pos_x = VERSION_ENG ? 176.0f : winnerNameW[idx] / 2 + 32; + } + else { + pos_x = VERSION_ENG ? 32.0f + ((winnerNameW[idx] * work->win_scale) / 2.0f) : 128.0f; + } + if (winPosOfs[work->word_len - 2][idx][0] < 0) { + pos_x = VERSION_ENG ? -(HU_DISP_CENTERX - pos_x) : -pos_x; + } +#if VERSION_ENG + else { + pos_x = (HU_DISP_WIDTH - pos_x) - HU_DISP_CENTERX; + } +#endif + } + else { + pos_x = winPosOfs[work->word_len - 2][idx][0]; + } + } + HuSprGrpPosSet(work->spr_grp[idx], (HU_DISP_CENTERX + pos_x) + ofs[0], + ofs[1] + (HU_DISP_CENTERY + winPosOfs[work->word_len - 2][idx][1])); + } + } + if (work->time == 125) { + work->type = 0; + } + } break; + + case -1: { + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + for (idx = 0; idx < work->word_len; idx++) { + HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); + } + } break; + + default: + break; + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } -static s32 SeqInitRecord(SeqWork *work, va_list params) +s32 MGSeqInitRecord(SeqWork *work, va_list params) { - AnimData *spr_data; - s16 spr_grp; - s16 time_pos[2]; - s16 i; - s16 sprite; - s16 digit_idx; - s32 digit; - seqRecordVal = va_arg(params, int); - work->type = 0; - work->angle = 0.0f; - work->spr_grp[0] = spr_grp = HuSprGrpCreate(10); - spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 9))); - sprite = HuSprCreate(spr_data, 0, 0); - HuSprGrpMemberSet(spr_grp, 0, sprite); - HuSprPosSet(spr_grp, 0, 0.0f, -32.0f); - spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 8))); - sprite = HuSprCreate(spr_data, 0, 0); - HuSprGrpMemberSet(spr_grp, 1, sprite); - spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 7))); - for(i=0; i<8; i++) { - sprite = HuSprCreate(spr_data, 0, 0); - HuSprGrpMemberSet(spr_grp, i+2, sprite); - } - if(omcurovl == OVL_M407 || omcurovl == OVL_M453 || omcurovl == OVL_M459 || omcurovl == OVL_M460 || omcurovl == OVL_M462 || omcurovl == OVL_M442) { - digit_idx = 0; - if(seqRecordVal > 9999) { - seqRecordVal = 9999; - } - digit = seqRecordVal/1000; - if(digit != 0) { - HuSprBankSet(spr_grp, digit_idx+2, digit); - seqRecordVal -= digit*1000; - digit_idx++; - } - - digit = seqRecordVal/100; - if(digit != 0 || digit_idx != 0) { - HuSprBankSet(spr_grp, digit_idx+2, digit); - seqRecordVal -= digit*100; - digit_idx++; - } - digit = seqRecordVal/10; - if(digit != 0 || digit_idx != 0) { - HuSprBankSet(spr_grp, digit_idx+2, digit); - seqRecordVal -= digit*10; - digit_idx++; - } - HuSprBankSet(spr_grp, digit_idx+2, seqRecordVal); - digit_idx++; - for(i=digit_idx; i<8; i++) { - HuSprAttrSet(spr_grp, i+2, HUSPR_ATTR_DISPOFF); - } - HuSprPosSet(spr_grp, 1, (-((digit_idx*44)+48)/2)+24, 32.0f); - for(i=0; iparam[0] = 3; - return 1; + AnimData *spr_data; + s16 spr_grp; + s16 time_pos[2]; + s16 i; + s16 sprite; + s16 digit_idx; + s32 digit; + seqRecordVal = va_arg(params, int); + work->type = 0; + work->angle = 0.0f; + work->spr_grp[0] = spr_grp = HuSprGrpCreate(10); + spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 9))); + sprite = HuSprCreate(spr_data, 0, 0); + HuSprGrpMemberSet(spr_grp, 0, sprite); + HuSprPosSet(spr_grp, 0, 0.0f, -32.0f); + spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 8))); + sprite = HuSprCreate(spr_data, 0, 0); + HuSprGrpMemberSet(spr_grp, 1, sprite); + spr_data = HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 7))); + for (i = 0; i < 8; i++) { + sprite = HuSprCreate(spr_data, 0, 0); + HuSprGrpMemberSet(spr_grp, i + 2, sprite); + } + if (omcurovl == OVL_M407 || omcurovl == OVL_M453 || omcurovl == OVL_M459 || omcurovl == OVL_M460 || omcurovl == OVL_M462 + || omcurovl == OVL_M442) { + digit_idx = 0; + if (seqRecordVal > 9999) { + seqRecordVal = 9999; + } + digit = seqRecordVal / 1000; + if (digit != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 1000; + digit_idx++; + } + + digit = seqRecordVal / 100; + if (digit != 0 || digit_idx != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 100; + digit_idx++; + } + digit = seqRecordVal / 10; + if (digit != 0 || digit_idx != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 10; + digit_idx++; + } + HuSprBankSet(spr_grp, digit_idx + 2, seqRecordVal); + digit_idx++; + for (i = digit_idx; i < 8; i++) { + HuSprAttrSet(spr_grp, i + 2, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet(spr_grp, 1, (-((digit_idx * 44) + 48) / 2) + 24, 32.0f); + for (i = 0; i < digit_idx; i++) { + HuSprPosSet(spr_grp, i + 2, (-((digit_idx * 44) + 48) / 2) + 70 + (i * 44), 32.0f); + } + } + else { + s16 x; + digit_idx = 0; + digit = seqRecordVal / (600 * REFRESH_RATE); + if (digit != 0) { + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * (600 * REFRESH_RATE); + digit_idx++; + } + digit = seqRecordVal / (60 * REFRESH_RATE); + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * (60 * REFRESH_RATE); + digit_idx++; + HuSprBankSet(spr_grp, digit_idx + 2, 10); + time_pos[0] = digit_idx; + digit_idx++; + digit = seqRecordVal / (10 * REFRESH_RATE); + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * (10 * REFRESH_RATE); + digit_idx++; + digit = seqRecordVal / REFRESH_RATE; + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * REFRESH_RATE; + digit_idx++; + HuSprBankSet(spr_grp, digit_idx + 2, 11); + time_pos[1] = digit_idx; + digit_idx++; + if (omcurovl == OVL_M405 || omcurovl == OVL_M432 || omcurovl == OVL_M461) { + seqRecordVal = (float)seqRecordVal * (101.5 / REFRESH_RATE); + } + else { + seqRecordVal = (float)seqRecordVal * (100.0 / REFRESH_RATE); + } + digit = seqRecordVal / 10; + HuSprBankSet(spr_grp, digit_idx + 2, digit); + seqRecordVal -= digit * 10; + digit_idx++; + HuSprBankSet(spr_grp, digit_idx + 2, seqRecordVal); + digit_idx++; + for (i = digit_idx; i < 8; i++) { + HuSprAttrSet(spr_grp, i + 2, HUSPR_ATTR_DISPOFF); + } + HuSprPosSet(spr_grp, 1, (-((digit_idx * 44) + 4) / 2) + 24, 32.0f); + x = (-((digit_idx * 44) + 4) / 2) + 70; + for (i = 0; i < digit_idx; i++) { + HuSprPosSet(spr_grp, i + 2, x, 32.0f); + if (time_pos[0] == i || time_pos[1] == i) { + x += 22; + } + else { + x += 44; + } + } + } + HuSprGrpPosSet(spr_grp, HU_DISP_CENTERX, HU_DISP_CENTERY); + work->param[0] = 3; + return 1; } -static s32 SeqUpdateRecord(SeqWork *work) +s32 MGSeqUpdateRecord(SeqWork *work) { - s16 group; - if(_CheckFlag(FLAG_ID_MAKE(1, 12))) { - work->state = 0; - work->stat |= 0xC; - } else { - group = work->spr_grp[0]; - if(work->param[0] != 0 && work->type != -1) { - switch(work->param[0]) { - case 2: - if(work->param[1] != -1) { - (void)work; //HACK: to introduce extra branch - } else { - work->type = -1; - work->angle = 0.0f; - } - work->param[0] = 0; - break; - - case 1: - work->time_max = work->param[1]; - work->param[0] = 0; - break; - - case 3: - work->type = 1; - work->param[0] = 0; - break; - - default: - work->param[0] = 0; - break; - } - } - work->time += seqSpeed; - if(work->time >= work->time_max && work->type != -1) { - work->stat |= 0x4; - work->type = -1; - work->angle = 0.0f; - } - if(work->type) { - switch(work->type) { - case 1: - { - if(work->time <= 10) { - HuSprGrpTPLvlSet(group, work->time/10.0); - } - if(work->time == 5) { - HuAudFXPlay(38); - } - if(work->time == 30) { - work->type = 0; - } - } - break; - - case -1: - { - float tp_lvl; - work->angle += seqSpeed*0.1f; - tp_lvl = 1.0f-work->angle; - if(tp_lvl <= 0.0f) { - tp_lvl = 0.0f; - work->state = 0; - work->stat |= 0x8; - } - HuSprGrpTPLvlSet(group, tp_lvl); - } - break; - - default: - break; - } - } - } - if(seqDoneF || (work->stat & 0x8)) { - MGSeqSprKill(work); - return 0; - } - return 1; + s16 group; + if (_CheckFlag(FLAG_ID_MAKE(1, 12))) { + work->state = 0; + work->stat |= 0xC; + } + else { + group = work->spr_grp[0]; + if (work->param[0] != 0 && work->type != -1) { + switch (work->param[0]) { + case 2: + if (work->param[1] != -1) { + (void)work; // HACK: to introduce extra branch + } + else { + work->type = -1; + work->angle = 0.0f; + } + work->param[0] = 0; + break; + + case 1: + work->time_max = work->param[1]; + work->param[0] = 0; + break; + + case 3: + work->type = 1; + work->param[0] = 0; + break; + + default: + work->param[0] = 0; + break; + } + } + work->time += seqSpeed; + if (work->time >= work->time_max && work->type != -1) { + work->stat |= 0x4; + work->type = -1; + work->angle = 0.0f; + } + if (work->type) { + switch (work->type) { + case 1: { + if (work->time <= 10) { + HuSprGrpTPLvlSet(group, work->time / 10.0); + } + if (work->time == 5) { + HuAudFXPlay(38); + } + if (work->time == 30) { + work->type = 0; + } + } break; + + case -1: { + float tp_lvl; + work->angle += seqSpeed * 0.1f; + tp_lvl = 1.0f - work->angle; + if (tp_lvl <= 0.0f) { + tp_lvl = 0.0f; + work->state = 0; + work->stat |= 0x8; + } + HuSprGrpTPLvlSet(group, tp_lvl); + } break; + + default: + break; + } + } + } + if (seqDoneF || (work->stat & 0x8)) { + MGSeqSprKill(work); + return 0; + } + return 1; } static void PauseProc(void); void MGSeqPauseInit(void) { - MGSeqPauseEnableCtrl(0); - HuWinInit(1); - pauseProcess = HuPrcCreate(PauseProc, 100, 4096, 0); - HuPrcSetStat(pauseProcess, PROCESS_STAT_PAUSE_EN|PROCESS_STAT_UPAUSE_EN); - pauseActiveF = 1; - pauseExitF = 0; - pauseWaitF = 0; + MGSeqPauseEnableCtrl(0); + HuWinInit(1); + pauseProcess = HuPrcCreate(PauseProc, 100, 4096, 0); + HuPrcSetStat(pauseProcess, PROCESS_STAT_PAUSE_EN | PROCESS_STAT_UPAUSE_EN); + pauseActiveF = 1; + pauseExitF = 0; + pauseWaitF = 0; } +#define PAUSE_WIN_X (HU_DISP_CENTERX - 206) +#define PAUSE_WIN_DIST (HU_DISP_CENTERX + 112) +#define PAUSE_EXIT_Y (HU_DISP_HEIGHT - 80) + static void PauseProc(void) { - s16 mg; - s16 i; - s16 j; - - s16 char_mess_map[4]; - s16 char_mess[4][4]; - s16 window[3] = { -1, -1, -1 }; - - SeqWork work; - static char *pauseStr[] = { - "ポーズ", - "PAUSE" - }; - float ratio; - - HuAudFXPlay(5); - for(i=0; i<16; i++) { - work.sprite[i] = work.spr_grp[i] = -1; - } - SeqMakeWord(&work, pauseStr[GET_LANG_IDX()], 0); - for(i=0; iwork[0] == 0) { - if(omMgIndexGet(omcurovl) == -1) { - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - object->work[0]++; - } - if(!omPauseChk() || _CheckFlag(FLAG_ID_MAKE(1, 12)) || !pauseWaitF) { - return; - } - for(i=input=0; i<4; i++) { - input |= HuPadBtnDown[i]; - } - if(input & PAD_TRIGGER_Z) { - HuAudFXPlay(3); - pauseExitF = 1; - omSysPauseCtrl(0); - omSysExitReq = 1; - mgQuitExtraF = 1; - omDelObjEx(HuPrcCurrentGet(), object); - } -} \ No newline at end of file + s16 input; + s16 i; + mgQuitExtraF = 0; + if (object->work[0] == 0) { + if (omMgIndexGet(omcurovl) == -1) { + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + object->work[0]++; + } + if (!omPauseChk() || _CheckFlag(FLAG_ID_MAKE(1, 12)) || !pauseWaitF) { + return; + } + for (i = input = 0; i < 4; i++) { + input |= HuPadBtnDown[i]; + } + if (input & PAD_TRIGGER_Z) { + HuAudFXPlay(3); + pauseExitF = 1; + omSysPauseCtrl(0); + omSysExitReq = 1; + mgQuitExtraF = 1; + omDelObjEx(HuPrcCurrentGet(), object); + } +} diff --git a/src/game/objmain.c b/src/game/objmain.c index f802d287..39bc9e12 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -38,7 +38,7 @@ s32 omcurdll; s32 omovlhisidx; s32 omovlevtno; s32 omnextovlevtno; -s32 omovlstat; +u32 omovlstat; static s32 omnextovlstat; char omUPauseFlag; s16 omSysExitReq; @@ -568,4 +568,4 @@ char omPauseChk(void) OverlayID omCurrentOvlGet(void) { return omcurovl; -} \ No newline at end of file +} diff --git a/src/game/objsub.c b/src/game/objsub.c index 19e0b390..b00631c4 100644 --- a/src/game/objsub.c +++ b/src/game/objsub.c @@ -1,7 +1,9 @@ #include "game/objsub.h" +#include "game/data.h" #include "game/gamework_data.h" #include "game/object.h" -#include "game/data.h" +#include "game/window.h" + MgInfo mgInfoTbl[] = { { @@ -9,7 +11,7 @@ MgInfo mgInfoTbl[] = { 0, // type 3, // flag 255, // record_idx - 0x170001, // name_mess + MAKE_MESSID(0x17, 0x01), // name_mess DATADIR_M401, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 0), // inst_pic[0] 0, // inst_pic[1] @@ -17,17 +19,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 0), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210000, // inst_mess[0] - 0x210001, // inst_mess[1] + MAKE_MESSID(0x21, 0x00), // inst_mess[0] + MAKE_MESSID(0x21, 0x01), // inst_mess[1] 0, // inst_mess[2] - 0x210003, // inst_mess[3] + MAKE_MESSID(0x21, 0x03), // inst_mess[3] }, { OVL_M402, // ovl 0, // type 3, // flag 255, // record_idx - 0x170002, // name_mess + MAKE_MESSID(0x17, 0x02), // name_mess DATADIR_M402, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 1), // inst_pic[0] 0, // inst_pic[1] @@ -35,17 +37,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 1), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210004, // inst_mess[0] - 0x210005, // inst_mess[1] + MAKE_MESSID(0x21, 0x04), // inst_mess[0] + MAKE_MESSID(0x21, 0x05), // inst_mess[1] 0, // inst_mess[2] - 0x210007, // inst_mess[3] + MAKE_MESSID(0x21, 0x07), // inst_mess[3] }, { OVL_M403, // ovl 0, // type 3, // flag 255, // record_idx - 0x170003, // name_mess + MAKE_MESSID(0x17, 0x03), // name_mess DATADIR_M403, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 2), // inst_pic[0] 0, // inst_pic[1] @@ -53,17 +55,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 2), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210008, // inst_mess[0] - 0x210009, // inst_mess[1] + MAKE_MESSID(0x21, 0x08), // inst_mess[0] + MAKE_MESSID(0x21, 0x09), // inst_mess[1] 0, // inst_mess[2] - 0x21000B, // inst_mess[3] + MAKE_MESSID(0x21, 0x0B), // inst_mess[3] }, { OVL_M404, // ovl 4, // type 2, // flag 255, // record_idx - 0x170004, // name_mess + MAKE_MESSID(0x17, 0x04), // name_mess DATADIR_M404, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 3), // inst_pic[0] 0, // inst_pic[1] @@ -71,17 +73,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 3), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21000C, // inst_mess[0] - 0x21000D, // inst_mess[1] + MAKE_MESSID(0x21, 0x0C), // inst_mess[0] + MAKE_MESSID(0x21, 0x0D), // inst_mess[1] 0, // inst_mess[2] - 0x21000F, // inst_mess[3] + MAKE_MESSID(0x21, 0x0F), // inst_mess[3] }, { OVL_M405, // ovl 0, // type 2, // flag 0, // record_idx - 0x170005, // name_mess + MAKE_MESSID(0x17, 0x05), // name_mess DATADIR_M405, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 4), // inst_pic[0] 0, // inst_pic[1] @@ -89,17 +91,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 4), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210010, // inst_mess[0] - 0x210011, // inst_mess[1] + MAKE_MESSID(0x21, 0x10), // inst_mess[0] + MAKE_MESSID(0x21, 0x11), // inst_mess[1] 0, // inst_mess[2] - 0x210013, // inst_mess[3] + MAKE_MESSID(0x21, 0x13), // inst_mess[3] }, { OVL_M406, // ovl 0, // type 2, // flag 255, // record_idx - 0x170006, // name_mess + MAKE_MESSID(0x17, 0x06), // name_mess DATADIR_M406, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 5), // inst_pic[0] 0, // inst_pic[1] @@ -107,17 +109,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 5), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210014, // inst_mess[0] - 0x210015, // inst_mess[1] + MAKE_MESSID(0x21, 0x14), // inst_mess[0] + MAKE_MESSID(0x21, 0x15), // inst_mess[1] 0, // inst_mess[2] - 0x210017, // inst_mess[3] + MAKE_MESSID(0x21, 0x17), // inst_mess[3] }, { OVL_M407, // ovl 0, // type 3, // flag 1, // record_idx - 0x170007, // name_mess + MAKE_MESSID(0x17, 0x07), // name_mess DATADIR_M407, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 6), // inst_pic[0] 0, // inst_pic[1] @@ -125,17 +127,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 6), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210018, // inst_mess[0] - 0x210019, // inst_mess[1] + MAKE_MESSID(0x21, 0x18), // inst_mess[0] + MAKE_MESSID(0x21, 0x19), // inst_mess[1] 0, // inst_mess[2] - 0x21001B, // inst_mess[3] + MAKE_MESSID(0x21, 0x1B), // inst_mess[3] }, { OVL_M408, // ovl 0, // type 3, // flag 255, // record_idx - 0x170008, // name_mess + MAKE_MESSID(0x17, 0x08), // name_mess DATADIR_M408, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 7), // inst_pic[0] 0, // inst_pic[1] @@ -143,17 +145,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 7), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21001C, // inst_mess[0] - 0x21001D, // inst_mess[1] + MAKE_MESSID(0x21, 0x1C), // inst_mess[0] + MAKE_MESSID(0x21, 0x1D), // inst_mess[1] 0, // inst_mess[2] - 0x21001F, // inst_mess[3] + MAKE_MESSID(0x21, 0x1F), // inst_mess[3] }, { OVL_M409, // ovl 0, // type 3, // flag 255, // record_idx - 0x170009, // name_mess + MAKE_MESSID(0x17, 0x09), // name_mess DATADIR_M409, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 8), // inst_pic[0] 0, // inst_pic[1] @@ -161,17 +163,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 8), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210020, // inst_mess[0] - 0x210021, // inst_mess[1] + MAKE_MESSID(0x21, 0x20), // inst_mess[0] + MAKE_MESSID(0x21, 0x21), // inst_mess[1] 0, // inst_mess[2] - 0x210023, // inst_mess[3] + MAKE_MESSID(0x21, 0x23), // inst_mess[3] }, { OVL_M410, // ovl 0, // type 3, // flag 255, // record_idx - 0x17000A, // name_mess + MAKE_MESSID(0x17, 0x0A), // name_mess DATADIR_M410, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 9), // inst_pic[0] 0, // inst_pic[1] @@ -179,17 +181,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 9), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210024, // inst_mess[0] - 0x210025, // inst_mess[1] + MAKE_MESSID(0x21, 0x24), // inst_mess[0] + MAKE_MESSID(0x21, 0x25), // inst_mess[1] 0, // inst_mess[2] - 0x210027, // inst_mess[3] + MAKE_MESSID(0x21, 0x27), // inst_mess[3] }, { OVL_M411, // ovl 0, // type 3, // flag 255, // record_idx - 0x17000B, // name_mess + MAKE_MESSID(0x17, 0x0B), // name_mess DATADIR_M411, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 10), // inst_pic[0] DATA_MAKE_NUM(DATADIR_INSTPIC, 11), // inst_pic[1] @@ -197,17 +199,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 62), // mg_pic[0] DATA_MAKE_NUM(DATADIR_INSTPIC, 11), // mg_pic[1] DATA_MAKE_NUM(DATADIR_INSTPIC, 12), // mg_pic[2] - 0x210028, // inst_mess[0] - 0x210029, // inst_mess[1] + MAKE_MESSID(0x21, 0x28), // inst_mess[0] + MAKE_MESSID(0x21, 0x29), // inst_mess[1] 0, // inst_mess[2] - 0x21002B, // inst_mess[3] + MAKE_MESSID(0x21, 0x2B), // inst_mess[3] }, { OVL_M412, // ovl 0, // type 3, // flag 255, // record_idx - 0x17000C, // name_mess + MAKE_MESSID(0x17, 0x0C), // name_mess DATADIR_M412, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 13), // inst_pic[0] 0, // inst_pic[1] @@ -215,17 +217,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 13), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21002C, // inst_mess[0] - 0x21002D, // inst_mess[1] + MAKE_MESSID(0x21, 0x2C), // inst_mess[0] + MAKE_MESSID(0x21, 0x2D), // inst_mess[1] 0, // inst_mess[2] - 0x21002F, // inst_mess[3] + MAKE_MESSID(0x21, 0x2F), // inst_mess[3] }, { OVL_M413, // ovl 0, // type 2, // flag 255, // record_idx - 0x17000D, // name_mess + MAKE_MESSID(0x17, 0x0D), // name_mess DATADIR_M413, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 14), // inst_pic[0] 0, // inst_pic[1] @@ -233,17 +235,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 63), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210030, // inst_mess[0] - 0x210031, // inst_mess[1] + MAKE_MESSID(0x21, 0x30), // inst_mess[0] + MAKE_MESSID(0x21, 0x31), // inst_mess[1] 0, // inst_mess[2] - 0x210033, // inst_mess[3] + MAKE_MESSID(0x21, 0x33), // inst_mess[3] }, { OVL_M414, // ovl 0, // type 3, // flag 255, // record_idx - 0x17000E, // name_mess + MAKE_MESSID(0x17, 0x0E), // name_mess DATADIR_M414, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 15), // inst_pic[0] 0, // inst_pic[1] @@ -251,17 +253,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 15), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210034, // inst_mess[0] - 0x210035, // inst_mess[1] + MAKE_MESSID(0x21, 0x34), // inst_mess[0] + MAKE_MESSID(0x21, 0x35), // inst_mess[1] 0, // inst_mess[2] - 0x210037, // inst_mess[3] + MAKE_MESSID(0x21, 0x37), // inst_mess[3] }, { OVL_M415, // ovl 0, // type 3, // flag 255, // record_idx - 0x17000F, // name_mess + MAKE_MESSID(0x17, 0x0F), // name_mess DATADIR_M415, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 16), // inst_pic[0] 0, // inst_pic[1] @@ -269,17 +271,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 16), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210038, // inst_mess[0] - 0x210039, // inst_mess[1] + MAKE_MESSID(0x21, 0x38), // inst_mess[0] + MAKE_MESSID(0x21, 0x39), // inst_mess[1] 0, // inst_mess[2] - 0x21003B, // inst_mess[3] + MAKE_MESSID(0x21, 0x3B), // inst_mess[3] }, { OVL_M416, // ovl 1, // type 1, // flag 255, // record_idx - 0x170010, // name_mess + MAKE_MESSID(0x17, 0x10), // name_mess DATADIR_M416, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 17), // inst_pic[0] 0, // inst_pic[1] @@ -287,17 +289,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 17), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21003C, // inst_mess[0] - 0x21003D, // inst_mess[1] - 0x21003E, // inst_mess[2] - 0x21003F, // inst_mess[3] + MAKE_MESSID(0x21, 0x3C), // inst_mess[0] + MAKE_MESSID(0x21, 0x3D), // inst_mess[1] + MAKE_MESSID(0x21, 0x3E), // inst_mess[2] + MAKE_MESSID(0x21, 0x3F), // inst_mess[3] }, { OVL_M417, // ovl 1, // type 1, // flag 255, // record_idx - 0x170011, // name_mess + MAKE_MESSID(0x17, 0x11), // name_mess DATADIR_M417, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 18), // inst_pic[0] 0, // inst_pic[1] @@ -305,17 +307,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 18), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210040, // inst_mess[0] - 0x210041, // inst_mess[1] - 0x210042, // inst_mess[2] - 0x210043, // inst_mess[3] + MAKE_MESSID(0x21, 0x40), // inst_mess[0] + MAKE_MESSID(0x21, 0x41), // inst_mess[1] + MAKE_MESSID(0x21, 0x42), // inst_mess[2] + MAKE_MESSID(0x21, 0x43), // inst_mess[3] }, { OVL_M418, // ovl 1, // type 1, // flag 255, // record_idx - 0x170012, // name_mess + MAKE_MESSID(0x17, 0x12), // name_mess DATADIR_M418, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 19), // inst_pic[0] 0, // inst_pic[1] @@ -323,17 +325,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 19), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210044, // inst_mess[0] - 0x210045, // inst_mess[1] - 0x210046, // inst_mess[2] - 0x210047, // inst_mess[3] + MAKE_MESSID(0x21, 0x44), // inst_mess[0] + MAKE_MESSID(0x21, 0x45), // inst_mess[1] + MAKE_MESSID(0x21, 0x46), // inst_mess[2] + MAKE_MESSID(0x21, 0x47), // inst_mess[3] }, { OVL_M419, // ovl 1, // type 1, // flag 255, // record_idx - 0x170013, // name_mess + MAKE_MESSID(0x17, 0x13), // name_mess DATADIR_M419, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 20), // inst_pic[0] 0, // inst_pic[1] @@ -341,17 +343,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 20), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210048, // inst_mess[0] - 0x210049, // inst_mess[1] - 0x21004A, // inst_mess[2] - 0x21004B, // inst_mess[3] + MAKE_MESSID(0x21, 0x48), // inst_mess[0] + MAKE_MESSID(0x21, 0x49), // inst_mess[1] + MAKE_MESSID(0x21, 0x4A), // inst_mess[2] + MAKE_MESSID(0x21, 0x4B), // inst_mess[3] }, { OVL_M420, // ovl 1, // type 0, // flag 255, // record_idx - 0x170014, // name_mess + MAKE_MESSID(0x17, 0x14), // name_mess DATADIR_M420, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 21), // inst_pic[0] 0, // inst_pic[1] @@ -359,17 +361,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 21), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21004C, // inst_mess[0] - 0x21004D, // inst_mess[1] - 0x21004E, // inst_mess[2] - 0x21004F, // inst_mess[3] + MAKE_MESSID(0x21, 0x4C), // inst_mess[0] + MAKE_MESSID(0x21, 0x4D), // inst_mess[1] + MAKE_MESSID(0x21, 0x4E), // inst_mess[2] + MAKE_MESSID(0x21, 0x4F), // inst_mess[3] }, { OVL_M421, // ovl 1, // type 1, // flag 255, // record_idx - 0x170015, // name_mess + MAKE_MESSID(0x17, 0x15), // name_mess DATADIR_M421, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 22), // inst_pic[0] 0, // inst_pic[1] @@ -377,17 +379,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 22), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210050, // inst_mess[0] - 0x210051, // inst_mess[1] - 0x210052, // inst_mess[2] - 0x210053, // inst_mess[3] + MAKE_MESSID(0x21, 0x50), // inst_mess[0] + MAKE_MESSID(0x21, 0x51), // inst_mess[1] + MAKE_MESSID(0x21, 0x52), // inst_mess[2] + MAKE_MESSID(0x21, 0x53), // inst_mess[3] }, { OVL_M422, // ovl 1, // type 1, // flag 255, // record_idx - 0x170016, // name_mess + MAKE_MESSID(0x17, 0x16), // name_mess DATADIR_M422, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 23), // inst_pic[0] 0, // inst_pic[1] @@ -395,17 +397,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 23), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210054, // inst_mess[0] - 0x210055, // inst_mess[1] - 0x210056, // inst_mess[2] - 0x210057, // inst_mess[3] + MAKE_MESSID(0x21, 0x54), // inst_mess[0] + MAKE_MESSID(0x21, 0x55), // inst_mess[1] + MAKE_MESSID(0x21, 0x56), // inst_mess[2] + MAKE_MESSID(0x21, 0x57), // inst_mess[3] }, { OVL_M423, // ovl 1, // type 0, // flag 255, // record_idx - 0x170017, // name_mess + MAKE_MESSID(0x17, 0x17), // name_mess DATADIR_M423, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 24), // inst_pic[0] 0, // inst_pic[1] @@ -413,17 +415,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 24), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210058, // inst_mess[0] - 0x210059, // inst_mess[1] - 0x21005A, // inst_mess[2] - 0x21005B, // inst_mess[3] + MAKE_MESSID(0x21, 0x58), // inst_mess[0] + MAKE_MESSID(0x21, 0x59), // inst_mess[1] + MAKE_MESSID(0x21, 0x5A), // inst_mess[2] + MAKE_MESSID(0x21, 0x5B), // inst_mess[3] }, { OVL_M424, // ovl 1, // type 0, // flag 255, // record_idx - 0x170018, // name_mess + MAKE_MESSID(0x17, 0x18), // name_mess DATADIR_M424, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 25), // inst_pic[0] 0, // inst_pic[1] @@ -431,17 +433,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 25), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21005C, // inst_mess[0] - 0x21005D, // inst_mess[1] - 0x21005E, // inst_mess[2] - 0x21005F, // inst_mess[3] + MAKE_MESSID(0x21, 0x5C), // inst_mess[0] + MAKE_MESSID(0x21, 0x5D), // inst_mess[1] + MAKE_MESSID(0x21, 0x5E), // inst_mess[2] + MAKE_MESSID(0x21, 0x5F), // inst_mess[3] }, { OVL_M425, // ovl 2, // type 3, // flag 255, // record_idx - 0x170019, // name_mess + MAKE_MESSID(0x17, 0x19), // name_mess DATADIR_M425, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 26), // inst_pic[0] 0, // inst_pic[1] @@ -449,17 +451,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 26), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210060, // inst_mess[0] - 0x210061, // inst_mess[1] + MAKE_MESSID(0x21, 0x60), // inst_mess[0] + MAKE_MESSID(0x21, 0x61), // inst_mess[1] 0, // inst_mess[2] - 0x210063, // inst_mess[3] + MAKE_MESSID(0x21, 0x63), // inst_mess[3] }, { OVL_M426, // ovl 2, // type 3, // flag 255, // record_idx - 0x17001A, // name_mess + MAKE_MESSID(0x17, 0x1A), // name_mess DATADIR_M426, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 27), // inst_pic[0] 0, // inst_pic[1] @@ -467,17 +469,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 27), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210064, // inst_mess[0] - 0x210065, // inst_mess[1] + MAKE_MESSID(0x21, 0x64), // inst_mess[0] + MAKE_MESSID(0x21, 0x65), // inst_mess[1] 0, // inst_mess[2] - 0x210067, // inst_mess[3] + MAKE_MESSID(0x21, 0x67), // inst_mess[3] }, { OVL_M427, // ovl 2, // type 2, // flag 2, // record_idx - 0x17001B, // name_mess + MAKE_MESSID(0x17, 0x1B), // name_mess DATADIR_M427, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 28), // inst_pic[0] 0, // inst_pic[1] @@ -485,17 +487,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 28), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210068, // inst_mess[0] - 0x210069, // inst_mess[1] + MAKE_MESSID(0x21, 0x68), // inst_mess[0] + MAKE_MESSID(0x21, 0x69), // inst_mess[1] 0, // inst_mess[2] - 0x21006B, // inst_mess[3] + MAKE_MESSID(0x21, 0x6B), // inst_mess[3] }, { OVL_M428, // ovl 2, // type 3, // flag 255, // record_idx - 0x17001C, // name_mess + MAKE_MESSID(0x17, 0x1C), // name_mess DATADIR_M428, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 29), // inst_pic[0] 0, // inst_pic[1] @@ -503,17 +505,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 29), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21006C, // inst_mess[0] - 0x21006D, // inst_mess[1] + MAKE_MESSID(0x21, 0x6C), // inst_mess[0] + MAKE_MESSID(0x21, 0x6D), // inst_mess[1] 0, // inst_mess[2] - 0x21006F, // inst_mess[3] + MAKE_MESSID(0x21, 0x6F), // inst_mess[3] }, { OVL_M429, // ovl 2, // type 2, // flag 255, // record_idx - 0x17001D, // name_mess + MAKE_MESSID(0x17, 0x1D), // name_mess DATADIR_M429, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 30), // inst_pic[0] 0, // inst_pic[1] @@ -521,17 +523,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 64), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210070, // inst_mess[0] - 0x210071, // inst_mess[1] + MAKE_MESSID(0x21, 0x70), // inst_mess[0] + MAKE_MESSID(0x21, 0x71), // inst_mess[1] 0, // inst_mess[2] - 0x210073, // inst_mess[3] + MAKE_MESSID(0x21, 0x73), // inst_mess[3] }, { OVL_M430, // ovl 2, // type 3, // flag 255, // record_idx - 0x17001E, // name_mess + MAKE_MESSID(0x17, 0x1E), // name_mess DATADIR_M430, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 31), // inst_pic[0] 0, // inst_pic[1] @@ -539,17 +541,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 31), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210074, // inst_mess[0] - 0x210075, // inst_mess[1] - 0x210076, // inst_mess[2] - 0x210077, // inst_mess[3] + MAKE_MESSID(0x21, 0x74), // inst_mess[0] + MAKE_MESSID(0x21, 0x75), // inst_mess[1] + MAKE_MESSID(0x21, 0x76), // inst_mess[2] + MAKE_MESSID(0x21, 0x77), // inst_mess[3] }, { OVL_M431, // ovl 2, // type 3, // flag 255, // record_idx - 0x17001F, // name_mess + MAKE_MESSID(0x17, 0x1F), // name_mess DATADIR_M431, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 32), // inst_pic[0] 0, // inst_pic[1] @@ -557,17 +559,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 32), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210078, // inst_mess[0] - 0x210079, // inst_mess[1] + MAKE_MESSID(0x21, 0x78), // inst_mess[0] + MAKE_MESSID(0x21, 0x79), // inst_mess[1] 0, // inst_mess[2] - 0x21007B, // inst_mess[3] + MAKE_MESSID(0x21, 0x7B), // inst_mess[3] }, { OVL_M432, // ovl 2, // type 3, // flag 3, // record_idx - 0x170020, // name_mess + MAKE_MESSID(0x17, 0x20), // name_mess DATADIR_M432, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 33), // inst_pic[0] 0, // inst_pic[1] @@ -575,17 +577,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 33), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21007C, // inst_mess[0] - 0x21007D, // inst_mess[1] - 0x21007E, // inst_mess[2] - 0x21007F, // inst_mess[3] + MAKE_MESSID(0x21, 0x7C), // inst_mess[0] + MAKE_MESSID(0x21, 0x7D), // inst_mess[1] + MAKE_MESSID(0x21, 0x7E), // inst_mess[2] + MAKE_MESSID(0x21, 0x7F), // inst_mess[3] }, { OVL_M433, // ovl 7, // type 3, // flag 255, // record_idx - 0x170021, // name_mess + MAKE_MESSID(0x17, 0x21), // name_mess DATADIR_M433, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 34), // inst_pic[0] 0, // inst_pic[1] @@ -593,17 +595,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 34), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210080, // inst_mess[0] - 0x37001F, // inst_mess[1] + MAKE_MESSID(0x21, 0x80), // inst_mess[0] + MAKE_MESSID(0x37, 0x1F), // inst_mess[1] 0, // inst_mess[2] - 0x210083, // inst_mess[3] + MAKE_MESSID(0x21, 0x83), // inst_mess[3] }, { OVL_M434, // ovl 2, // type 2, // flag 255, // record_idx - 0x170022, // name_mess + MAKE_MESSID(0x17, 0x22), // name_mess DATADIR_M434, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 35), // inst_pic[0] 0, // inst_pic[1] @@ -611,17 +613,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 35), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210084, // inst_mess[0] - 0x210085, // inst_mess[1] + MAKE_MESSID(0x21, 0x84), // inst_mess[0] + MAKE_MESSID(0x21, 0x85), // inst_mess[1] 0, // inst_mess[2] - 0x210087, // inst_mess[3] + MAKE_MESSID(0x21, 0x87), // inst_mess[3] }, { OVL_M435, // ovl 3, // type 3, // flag 255, // record_idx - 0x170023, // name_mess + MAKE_MESSID(0x17, 0x23), // name_mess DATADIR_M435, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 36), // inst_pic[0] 0, // inst_pic[1] @@ -630,7 +632,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x210089, // inst_mess[1] + MAKE_MESSID(0x21, 0x89), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -639,7 +641,7 @@ MgInfo mgInfoTbl[] = { 3, // type 3, // flag 255, // record_idx - 0x170024, // name_mess + MAKE_MESSID(0x17, 0x24), // name_mess DATADIR_M436, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 37), // inst_pic[0] 0, // inst_pic[1] @@ -648,7 +650,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x21008D, // inst_mess[1] + MAKE_MESSID(0x21, 0x8D), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -657,7 +659,7 @@ MgInfo mgInfoTbl[] = { 3, // type 3, // flag 255, // record_idx - 0x170025, // name_mess + MAKE_MESSID(0x17, 0x25), // name_mess DATADIR_M437, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 38), // inst_pic[0] 0, // inst_pic[1] @@ -666,7 +668,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x210091, // inst_mess[1] + MAKE_MESSID(0x21, 0x91), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -675,7 +677,7 @@ MgInfo mgInfoTbl[] = { 4, // type 3, // flag 255, // record_idx - 0x170026, // name_mess + MAKE_MESSID(0x17, 0x26), // name_mess DATADIR_M438, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 39), // inst_pic[0] 0, // inst_pic[1] @@ -683,17 +685,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 39), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210094, // inst_mess[0] - 0x210095, // inst_mess[1] + MAKE_MESSID(0x21, 0x94), // inst_mess[0] + MAKE_MESSID(0x21, 0x95), // inst_mess[1] 0, // inst_mess[2] - 0x210097, // inst_mess[3] + MAKE_MESSID(0x21, 0x97), // inst_mess[3] }, { OVL_M439, // ovl 4, // type 2, // flag 255, // record_idx - 0x170027, // name_mess + MAKE_MESSID(0x17, 0x27), // name_mess DATADIR_M439, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 40), // inst_pic[0] 0, // inst_pic[1] @@ -701,17 +703,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 40), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x210098, // inst_mess[0] - 0x210099, // inst_mess[1] + MAKE_MESSID(0x21, 0x98), // inst_mess[0] + MAKE_MESSID(0x21, 0x99), // inst_mess[1] 0, // inst_mess[2] - 0x21009B, // inst_mess[3] + MAKE_MESSID(0x21, 0x9B), // inst_mess[3] }, { OVL_M440, // ovl 4, // type 3, // flag 255, // record_idx - 0x170028, // name_mess + MAKE_MESSID(0x17, 0x28), // name_mess DATADIR_M440, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 41), // inst_pic[0] 0, // inst_pic[1] @@ -719,17 +721,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 41), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x21009C, // inst_mess[0] - 0x21009D, // inst_mess[1] + MAKE_MESSID(0x21, 0x9C), // inst_mess[0] + MAKE_MESSID(0x21, 0x9D), // inst_mess[1] 0, // inst_mess[2] - 0x21009F, // inst_mess[3] + MAKE_MESSID(0x21, 0x9F), // inst_mess[3] }, { OVL_M441, // ovl 4, // type 3, // flag 255, // record_idx - 0x170029, // name_mess + MAKE_MESSID(0x17, 0x29), // name_mess DATADIR_M441, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 42), // inst_pic[0] 0, // inst_pic[1] @@ -737,17 +739,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 42), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100A0, // inst_mess[0] - 0x2100A1, // inst_mess[1] + MAKE_MESSID(0x21, 0xA0), // inst_mess[0] + MAKE_MESSID(0x21, 0xA1), // inst_mess[1] 0, // inst_mess[2] - 0x2100A3, // inst_mess[3] + MAKE_MESSID(0x21, 0xA3), // inst_mess[3] }, { OVL_M442, // ovl 7, // type 3, // flag 255, // record_idx - 0x17002A, // name_mess + MAKE_MESSID(0x17, 0x2A), // name_mess DATADIR_M442, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 43), // inst_pic[0] 0, // inst_pic[1] @@ -755,17 +757,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 65), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100A4, // inst_mess[0] - 0x370010, // inst_mess[1] + MAKE_MESSID(0x21, 0xA4), // inst_mess[0] + MAKE_MESSID(0x37, 0x10), // inst_mess[1] 0, // inst_mess[2] - 0x2100A7, // inst_mess[3] + MAKE_MESSID(0x21, 0xA7), // inst_mess[3] }, { OVL_M443, // ovl 0, // type 2, // flag 5, // record_idx - 0x17002B, // name_mess + MAKE_MESSID(0x17, 0x2B), // name_mess DATADIR_M443, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 44), // inst_pic[0] 0, // inst_pic[1] @@ -773,17 +775,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 44), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100A8, // inst_mess[0] - 0x2100A9, // inst_mess[1] + MAKE_MESSID(0x21, 0xA8), // inst_mess[0] + MAKE_MESSID(0x21, 0xA9), // inst_mess[1] 0, // inst_mess[2] - 0x2100AB, // inst_mess[3] + MAKE_MESSID(0x21, 0xAB), // inst_mess[3] }, { OVL_M444, // ovl 5, // type 3, // flag 255, // record_idx - 0x17002C, // name_mess + MAKE_MESSID(0x17, 0x2C), // name_mess DATADIR_M444, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 45), // inst_pic[0] 0, // inst_pic[1] @@ -801,7 +803,7 @@ MgInfo mgInfoTbl[] = { 6, // type 0, // flag 255, // record_idx - 0x17002D, // name_mess + MAKE_MESSID(0x17, 0x2D), // name_mess DATADIR_M445, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 46), // inst_pic[0] 0, // inst_pic[1] @@ -809,17 +811,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 46), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100AC, // inst_mess[0] - 0x2100AD, // inst_mess[1] + MAKE_MESSID(0x21, 0xAC), // inst_mess[0] + MAKE_MESSID(0x21, 0xAD), // inst_mess[1] 0, // inst_mess[2] - 0x2100AF, // inst_mess[3] + MAKE_MESSID(0x21, 0xAF), // inst_mess[3] }, { OVL_M446, // ovl 6, // type 0, // flag 255, // record_idx - 0x17002E, // name_mess + MAKE_MESSID(0x17, 0x2E), // name_mess DATADIR_M446, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 47), // inst_pic[0] 0, // inst_pic[1] @@ -827,17 +829,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 47), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100B0, // inst_mess[0] - 0x2100B1, // inst_mess[1] + MAKE_MESSID(0x21, 0xB0), // inst_mess[0] + MAKE_MESSID(0x21, 0xB1), // inst_mess[1] 0, // inst_mess[2] - 0x2100B3, // inst_mess[3] + MAKE_MESSID(0x21, 0xB3), // inst_mess[3] }, { OVL_M447, // ovl 6, // type 0, // flag 255, // record_idx - 0x17002F, // name_mess + MAKE_MESSID(0x17, 0x2F), // name_mess DATADIR_M447, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 48), // inst_pic[0] 0, // inst_pic[1] @@ -845,17 +847,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 48), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100B4, // inst_mess[0] - 0x2100B5, // inst_mess[1] + MAKE_MESSID(0x21, 0xB4), // inst_mess[0] + MAKE_MESSID(0x21, 0xB5), // inst_mess[1] 0, // inst_mess[2] - 0x2100B7, // inst_mess[3] + MAKE_MESSID(0x21, 0xB7), // inst_mess[3] }, { OVL_M448, // ovl 6, // type 0, // flag 255, // record_idx - 0x170030, // name_mess + MAKE_MESSID(0x17, 0x30), // name_mess DATADIR_M448, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 49), // inst_pic[0] 0, // inst_pic[1] @@ -863,17 +865,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 49), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100B8, // inst_mess[0] - 0x2100B9, // inst_mess[1] + MAKE_MESSID(0x21, 0xB8), // inst_mess[0] + MAKE_MESSID(0x21, 0xB9), // inst_mess[1] 0, // inst_mess[2] - 0x2100BB, // inst_mess[3] + MAKE_MESSID(0x21, 0xBB), // inst_mess[3] }, { OVL_M449, // ovl 6, // type 0, // flag 255, // record_idx - 0x170031, // name_mess + MAKE_MESSID(0x17, 0x31), // name_mess DATADIR_M449, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -881,17 +883,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100BC, // inst_mess[0] - 0x2100BD, // inst_mess[1] + MAKE_MESSID(0x21, 0xBC), // inst_mess[0] + MAKE_MESSID(0x21, 0xBD), // inst_mess[1] 0, // inst_mess[2] - 0x2100BF, // inst_mess[3] + MAKE_MESSID(0x21, 0xBF), // inst_mess[3] }, { OVL_M450, // ovl 8, // type 0, // flag 255, // record_idx - 0x170032, // name_mess + MAKE_MESSID(0x17, 0x32), // name_mess DATADIR_M450, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 51), // inst_pic[0] 0, // inst_pic[1] @@ -899,17 +901,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 51), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100C0, // inst_mess[0] - 0x2100C1, // inst_mess[1] + MAKE_MESSID(0x21, 0xC0), // inst_mess[0] + MAKE_MESSID(0x21, 0xC1), // inst_mess[1] 0, // inst_mess[2] - 0x2100C3, // inst_mess[3] + MAKE_MESSID(0x21, 0xC3), // inst_mess[3] }, { OVL_M451, // ovl 7, // type 0, // flag 255, // record_idx - 0x170033, // name_mess + MAKE_MESSID(0x17, 0x33), // name_mess DATADIR_M451, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 52), // inst_pic[0] DATA_MAKE_NUM(DATADIR_INSTPIC, 53), // inst_pic[1] @@ -917,17 +919,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 52), // mg_pic[0] DATA_MAKE_NUM(DATADIR_INSTPIC, 53), // mg_pic[1] DATA_MAKE_NUM(DATADIR_INSTPIC, 54), // mg_pic[2] - 0x2100C4, // inst_mess[0] - 0x37000D, // inst_mess[1] + MAKE_MESSID(0x21, 0xC4), // inst_mess[0] + MAKE_MESSID(0x37, 0x0D), // inst_mess[1] 0, // inst_mess[2] - 0x2100C7, // inst_mess[3] + MAKE_MESSID(0x21, 0xC7), // inst_mess[3] }, { OVL_M450, // ovl 7, // type 0, // flag 255, // record_idx - 0x170033, // name_mess + MAKE_MESSID(0x17, 0x33), // name_mess DATADIR_M450, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 55), // inst_pic[0] 0, // inst_pic[1] @@ -945,7 +947,7 @@ MgInfo mgInfoTbl[] = { 7, // type 0, // flag 255, // record_idx - 0x170034, // name_mess + MAKE_MESSID(0x17, 0x34), // name_mess DATADIR_M450, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -953,17 +955,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100C8, // inst_mess[0] - 0x37000A, // inst_mess[1] + MAKE_MESSID(0x21, 0xC8), // inst_mess[0] + MAKE_MESSID(0x37, 0x0A), // inst_mess[1] 0, // inst_mess[2] - 0x2100CB, // inst_mess[3] + MAKE_MESSID(0x21, 0xCB), // inst_mess[3] }, { OVL_M450, // ovl 7, // type 0, // flag 255, // record_idx - 0x170033, // name_mess + MAKE_MESSID(0x17, 0x33), // name_mess DATADIR_M450, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 55), // inst_pic[0] 0, // inst_pic[1] @@ -981,7 +983,7 @@ MgInfo mgInfoTbl[] = { 4, // type 3, // flag 255, // record_idx - 0x170035, // name_mess + MAKE_MESSID(0x17, 0x35), // name_mess DATADIR_M455, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 56), // inst_pic[0] 0, // inst_pic[1] @@ -989,17 +991,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 56), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100CC, // inst_mess[0] - 0x2100CD, // inst_mess[1] + MAKE_MESSID(0x21, 0xCC), // inst_mess[0] + MAKE_MESSID(0x21, 0xCD), // inst_mess[1] 0, // inst_mess[2] - 0x2100CF, // inst_mess[3] + MAKE_MESSID(0x21, 0xCF), // inst_mess[3] }, { OVL_M456, // ovl 0, // type 3, // flag 255, // record_idx - 0x170036, // name_mess + MAKE_MESSID(0x17, 0x36), // name_mess DATADIR_M456, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 57), // inst_pic[0] 0, // inst_pic[1] @@ -1007,17 +1009,17 @@ MgInfo mgInfoTbl[] = { DATA_MAKE_NUM(DATADIR_INSTPIC, 57), // mg_pic[0] 0, // mg_pic[1] 0, // mg_pic[2] - 0x2100D0, // inst_mess[0] - 0x2100D1, // inst_mess[1] + MAKE_MESSID(0x21, 0xD0), // inst_mess[0] + MAKE_MESSID(0x21, 0xD1), // inst_mess[1] 0, // inst_mess[2] - 0x2100D3, // inst_mess[3] + MAKE_MESSID(0x21, 0xD3), // inst_mess[3] }, { OVL_M457, // ovl 8, // type 0, // flag 255, // record_idx - 0x170037, // name_mess + MAKE_MESSID(0x17, 0x37), // name_mess DATADIR_M457, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 58), // inst_pic[0] 0, // inst_pic[1] @@ -1035,7 +1037,7 @@ MgInfo mgInfoTbl[] = { 8, // type 0, // flag 255, // record_idx - 0x170038, // name_mess + MAKE_MESSID(0x17, 0x38), // name_mess DATADIR_M458, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 59), // inst_pic[0] 0, // inst_pic[1] @@ -1053,7 +1055,7 @@ MgInfo mgInfoTbl[] = { 7, // type 0, // flag 255, // record_idx - 0x170038, // name_mess + MAKE_MESSID(0x17, 0x38), // name_mess DATADIR_M458, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -1062,7 +1064,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x370013, // inst_mess[1] + MAKE_MESSID(0x37, 0x13), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -1071,7 +1073,7 @@ MgInfo mgInfoTbl[] = { 7, // type 0, // flag 255, // record_idx - 0x170038, // name_mess + MAKE_MESSID(0x17, 0x38), // name_mess DATADIR_M458, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -1080,7 +1082,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x370016, // inst_mess[1] + MAKE_MESSID(0x37, 0x16), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -1089,7 +1091,7 @@ MgInfo mgInfoTbl[] = { 7, // type 0, // flag 255, // record_idx - 0x170038, // name_mess + MAKE_MESSID(0x17, 0x38), // name_mess DATADIR_M458, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -1098,7 +1100,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x370019, // inst_mess[1] + MAKE_MESSID(0x37, 0x19), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -1107,7 +1109,7 @@ MgInfo mgInfoTbl[] = { 7, // type 0, // flag 255, // record_idx - 0x170038, // name_mess + MAKE_MESSID(0x17, 0x38), // name_mess DATADIR_M458, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -1116,7 +1118,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x37001C, // inst_mess[1] + MAKE_MESSID(0x37, 0x1C), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -1125,7 +1127,7 @@ MgInfo mgInfoTbl[] = { 7, // type 0, // flag 255, // record_idx - 0x170038, // name_mess + MAKE_MESSID(0x17, 0x38), // name_mess DATADIR_M458, // data_dir DATA_MAKE_NUM(DATADIR_INSTPIC, 50), // inst_pic[0] 0, // inst_pic[1] @@ -1134,7 +1136,7 @@ MgInfo mgInfoTbl[] = { 0, // mg_pic[1] 0, // mg_pic[2] 0, // inst_mess[0] - 0x370007, // inst_mess[1] + MAKE_MESSID(0x37, 0x07), // inst_mess[1] 0, // inst_mess[2] 0, // inst_mess[3] }, @@ -1158,13 +1160,13 @@ MgInfo mgInfoTbl[] = { }, }; -void MGSeqPracticeExitCheck(omObjData*); +void MGSeqPracticeExitCheck(omObjData *); s16 mgTypeCurr; s16 mgBattleStar[4]; s16 mgBattleStarMax; u8 lbl_801D3E94; -s32 mgRecordExtra; +u32 mgRecordExtra; s32 mgQuitExtraF; s32 mgPracticeEnableF; s32 mgInstExitEnableF; @@ -1174,12 +1176,13 @@ s16 mgTicTacToeGrid[3][3]; u8 mgIndexList[256]; GameStat mgGameStatBackup; -s32 omMgIndexGet(s16 overlay) { +s32 omMgIndexGet(s16 overlay) +{ s32 i; MgInfo *info; info = mgInfoTbl; - + for (i = 0; info->ovl != ((u16)OVL_INVALID); i++) { if (info->ovl == overlay) { return (s16)i; @@ -1190,27 +1193,29 @@ s32 omMgIndexGet(s16 overlay) { return -1; } -void omGameSysInit(Process *objman) { +void omGameSysInit(Process *objman) +{ s32 i; - omObjData* obj; + omObjData *obj; omSystemKeyCheckSetup(objman); Hu3DCameraScissorSet(1, 0, 0, 0x280, 0x1E0); omSysPauseEnable(0); - + for (i = 0; i < 4; i++) { GWPlayerCoinWinSet(i, 0); GWPlayerCoinCollectSet(i, 0); } - + if (mgPracticeEnableF != 0) { obj = omAddObjEx(objman, 0x7FDC, 0, 0, -1, MGSeqPracticeExitCheck); omSetStatBit(obj, 0xA0U); } } -void omVibrate(s16 player, s16 duration, s16 off, s16 on) { - +void omVibrate(s16 player, s16 duration, s16 off, s16 on) +{ + if (GWRumbleGet() != 0 && GWPlayerCfg[player].iscom == 0) { HuPadRumbleSet(GWPlayerCfg[player].pad_idx, duration, off, on); } diff --git a/src/game/objsysobj.c b/src/game/objsysobj.c index 3e6b56f3..210bdbfd 100644 --- a/src/game/objsysobj.c +++ b/src/game/objsysobj.c @@ -6,7 +6,7 @@ #include "game/sprite.h" #include "game/hsfman.h" #include "game/audio.h" -#include "math.h" +#include "ext_math.h" Vec CRot; Vec Center; @@ -23,15 +23,15 @@ void omOutView(omObjData *object) float rot_x = CRot.x; float rot_y = CRot.y; float rot_z = CRot.z; - pos.x = (sin(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoom)+Center.x; - pos.y = (-sin(M_PI*rot_x/180.0)*CZoom)+Center.y; - pos.z = (cos(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoom)+Center.z; + pos.x = (sind(rot_y)*cosd(rot_x)*CZoom)+Center.x; + pos.y = (-sind(rot_x)*CZoom)+Center.y; + pos.z = (cosd(rot_y)*cosd(rot_x)*CZoom)+Center.z; target.x = Center.x; target.y = Center.y; target.z = Center.z; - up.x = sin(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); - up.y = cos(M_PI*rot_x/180.0); - up.z = cos(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); + up.x = sind(rot_y)*sind(rot_x); + up.y = cosd(rot_x); + up.z = cosd(rot_y)*sind(rot_x); Hu3DCameraPosSet(1, pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); } @@ -43,15 +43,15 @@ void omOutViewMulti(omObjData *object) float rot_x = CRotM[i].x; float rot_y = CRotM[i].y; float rot_z = CRotM[i].z; - pos.x = (sin(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoomM[i])+CenterM[i].x; - pos.y = (-sin(M_PI*rot_x/180.0)*CZoomM[i])+CenterM[i].y; - pos.z = (cos(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoomM[i])+CenterM[i].z; + pos.x = (sind(rot_y)*cosd(rot_x)*CZoomM[i])+CenterM[i].x; + pos.y = (-sind(rot_x)*CZoomM[i])+CenterM[i].y; + pos.z = (cosd(rot_y)*cosd(rot_x)*CZoomM[i])+CenterM[i].z; target.x = CenterM[i].x; target.y = CenterM[i].y; target.z = CenterM[i].z; - up.x = sin(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); - up.y = cos(M_PI*rot_x/180.0); - up.z = cos(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); + up.x = sind(rot_y)*sind(rot_x); + up.y = cosd(rot_x); + up.z = cosd(rot_y)*sind(rot_x); Hu3DCameraPosSetV((1 << i), &pos, &up, &target); } } @@ -145,4 +145,4 @@ void omSysPauseCtrl(s16 flag) } else { omDBGSysKeyObj->work[0] |= 0x100; } -} \ No newline at end of file +} diff --git a/src/game/printfunc.c b/src/game/printfunc.c index b1924299..4f85f5a9 100644 --- a/src/game/printfunc.c +++ b/src/game/printfunc.c @@ -1,6 +1,8 @@ #include "dolphin.h" #include "game/printfunc.h" #include "game/init.h" +#include "game/disp.h" + #include "stdio.h" #include "stdarg.h" @@ -140,7 +142,7 @@ void pfDrawFonts(void) if(saftyFrameF) { WireDraw(); } - MTXOrtho(proj, 0, 480, 0, 640, 0, 10); + MTXOrtho(proj, 0, HU_FB_HEIGHT, 0, HU_FB_WIDTH, 0, 10); GXSetProjection(proj, GX_ORTHOGRAPHIC); MTXIdentity(modelview); GXLoadPosMtxImm(modelview, GX_PNMTX0); @@ -289,7 +291,7 @@ void pfDrawFonts(void) GXEnd(); } x += char_w; - if(x > 640) { + if(x > HU_FB_WIDTH) { x = 0; y += char_h; } @@ -301,18 +303,21 @@ void pfDrawFonts(void) } } +#define SAFETY_W 16 +#define SAFETY_H 40 + static void WireDraw(void) { Mtx44 proj; Mtx modelview; - MTXOrtho(proj, 0, 480, 0, 576, 0, 10); + MTXOrtho(proj, 0, HU_DISP_HEIGHT, 0, HU_DISP_WIDTH, 0, 10); GXSetProjection(proj, GX_ORTHOGRAPHIC); if(RenderMode->field_rendering) { - GXSetViewportJitter(0, 0, 640, 480, 0, 1, VIGetNextField()); + GXSetViewportJitter(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, 0, 1, VIGetNextField()); } else { - GXSetViewport(0, 0, 640, 480, 0, 1); + GXSetViewport(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, 0, 1); } - GXSetScissor(0, 0, 640, 480); + GXSetScissor(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); @@ -331,21 +336,21 @@ static void WireDraw(void) MTXIdentity(modelview); GXLoadPosMtxImm(modelview, GX_PNMTX0); GXBegin(GX_LINES, 0, 8); - GXPosition2f32(16, 40); + GXPosition2f32(SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(16, 440); + GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(16, 40); + GXPosition2f32(SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(560, 40); + GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(560, 440); + GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(560, 40); + GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(560, 440); + GXPosition2f32(HU_DISP_WIDTH-SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); GXColor3u8(255, 0, 0); - GXPosition2f32(16, 440); + GXPosition2f32(SAFETY_W, HU_DISP_HEIGHT-SAFETY_H); GXColor3u8(255, 0, 0); GXEnd(); } diff --git a/src/game/saveload.c b/src/game/saveload.c index 7515e5cc..df1e5d6e 100644 --- a/src/game/saveload.c +++ b/src/game/saveload.c @@ -1,23 +1,30 @@ #include "game/saveload.h" -#include "game/data.h" -#include "game/pad.h" -#include "game/window.h" -#include "game/flag.h" -#include "game/card.h" -#include "game/sprite.h" -#include "game/gamework_data.h" #include "data_num/win.h" +#include "game/card.h" +#include "game/data.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" -#include "string.h" #include "stddef.h" +#include "string.h" -#define SAVE_GET_PLAYER(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, player)] -#define SAVE_GET_PLAYER_STORY(player_idx) &saveBuf.buf[((player_idx)*sizeof(PlayerState))+offsetof(SaveBufData, playerStory)] +#if VERSION_ENG +#define SAVE_WRITE_BEGIN _SetFlag(FLAG_ID_MAKE(3, 0)); +#define SAVE_WRITE_END _ClearFlag(FLAG_ID_MAKE(3, 0)); +#else +#define SAVE_WRITE_BEGIN +#define SAVE_WRITE_END +#endif + +#define SAVE_GET_PLAYER(player_idx) &saveBuf.buf[((player_idx) * sizeof(PlayerState)) + offsetof(SaveBufData, player)] +#define SAVE_GET_PLAYER_STORY(player_idx) &saveBuf.buf[((player_idx) * sizeof(PlayerState)) + offsetof(SaveBufData, playerStory)] static s16 SLCreateSaveWin(void); static void SLKillSaveWin(void); - extern u8 UnMountCnt; CARDFileInfo curFileInfo; @@ -28,27 +35,28 @@ s32 saveExecF; u8 curBoxNo; s16 curSlotNo; -static u8 commentTbl[2][32] = { - "Mario Party 4", - "File 0 00/00/0000" -}; +#if VERSION_JP +static u8 commentTbl[2][32] = { "マリオパーティ4", "??月??日 データ?です。" }; +static u8 sjisNumTbl[20] = "0123456789"; +#else +static u8 commentTbl[2][32] = { "Mario Party 4", "File 0 00/00/0000" }; +#endif -char *SaveFileNameTbl[] = { - "MARIPA4BOX0", - "MARIPA4BOX1", - "MARIPA4BOX2" -}; +char *SaveFileNameTbl[] = { "MARIPA4BOX0", "MARIPA4BOX1", "MARIPA4BOX2" }; s32 SaveEnableF = 1; -static char *SlotNameTbl[] = { - "A", - "B" -}; +static char *SlotNameTbl[] = { "A", "B" }; + +#if VERSION_JP +static char *slotIconMesTbl[] = { "\x0E\x16", "\x0E\x17" }; +static u8 sjisSpace[] = " "; +#endif static s32 saveMessWin = -1; -s32 SLFileOpen(char *fileName) { +s32 SLFileOpen(char *fileName) +{ s32 result; if (SaveEnableF == 0) { @@ -56,7 +64,7 @@ s32 SLFileOpen(char *fileName) { } while (1) { result = SLCardMount(curSlotNo); - if(result < 0) { + if (result < 0) { return result; } result = HuCardOpen(curSlotNo, fileName, &curFileInfo); @@ -88,16 +96,19 @@ s32 SLFileOpen(char *fileName) { if (result != 0) { return result; } - } else { + } + else { return CARD_RESULT_NOFILE; } - } else { + } + else { return CARD_RESULT_READY; } } } -s32 SLFileCreate(char *fileName, u32 size, void *addr) { +s32 SLFileCreate(char *fileName, u32 size, void *addr) +{ float winSize[2]; u32 byteNotUsed; u32 filesNotUsed; @@ -135,9 +146,9 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) { HuWinExAnimIn(window); HuWinMesSet(window, MAKE_MESSID(16, 11)); HuWinMesWait(window); - _SetFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_BEGIN result = HuCardCreate(curSlotNo, fileName, size, &curFileInfo); - _ClearFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_END if (result < 0) { HuWinExAnimOut(window); HuWinExCleanup(window); @@ -150,9 +161,9 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) { SLMessOut(1); return CARD_RESULT_FATAL_ERROR; } - _SetFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_BEGIN result = HuCardWrite(&curFileInfo, addr, size, 0); - _ClearFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_END if (result < 0) { HuWinExAnimOut(window); HuWinExCleanup(window); @@ -165,9 +176,9 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) { SLMessOut(1); return CARD_RESULT_FATAL_ERROR; } - _SetFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_BEGIN result = SLStatSet(1); - _ClearFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_END HuWinExAnimOut(window); HuWinExCleanup(window); if (result < 0) { @@ -176,7 +187,8 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) { return 0; } -s32 SLFileWrite(s32 length, void *addr) { +s32 SLFileWrite(s32 length, void *addr) +{ float winSize[2]; s32 window; s32 result; @@ -191,18 +203,19 @@ s32 SLFileWrite(s32 length, void *addr) { HuWinMesSet(window, MAKE_MESSID(16, 11)); HuWinMesWait(window); HuPrcSleep(60); - _SetFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_BEGIN result = HuCardWrite(&curFileInfo, addr, length, 0); if (result == 0) { result = SLStatSet(1); } - _ClearFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_END HuWinExAnimOut(window); HuWinExCleanup(window); return result; } -s32 SLFileRead(s32 length, void *addr) { +s32 SLFileRead(s32 length, void *addr) +{ s32 result; if (SaveEnableF == 0) { @@ -211,13 +224,15 @@ s32 SLFileRead(s32 length, void *addr) { result = HuCardRead(&curFileInfo, addr, length, 0); if (result == CARD_RESULT_NOCARD) { SLMessOut(0); - } else if (result < 0) { + } + else if (result < 0) { SLMessOut(1); } return result; } -s32 SLFileClose(void) { +s32 SLFileClose(void) +{ s32 result; if (SaveEnableF == 0) { @@ -227,15 +242,18 @@ s32 SLFileClose(void) { return result; } -void SLCurSlotNoSet(s16 slotno) { +void SLCurSlotNoSet(s16 slotno) +{ curSlotNo = slotno; } -void SLCurBoxNoSet(s16 boxno) { +void SLCurBoxNoSet(s16 boxno) +{ curBoxNo = boxno; } -void SLSaveFlagSet(s32 flag) { +void SLSaveFlagSet(s32 flag) +{ if (flag == 0) { GWGameStat.party_continue = 0; GWGameStat.story_continue = 0; @@ -243,11 +261,13 @@ void SLSaveFlagSet(s32 flag) { SaveEnableF = flag; } -s32 SLSaveFlagGet(void) { +s32 SLSaveFlagGet(void) +{ return SaveEnableF; } -void SLSaveDataMake(s32 erase, OSTime *time) { +void SLSaveDataMake(s32 erase, OSTime *time) +{ AnimData *anim_data; u8 *buf; s32 i; @@ -262,23 +282,25 @@ void SLSaveDataMake(s32 erase, OSTime *time) { buf[i] = (&commentTbl[0][0])[i]; } for (i = 0; i < 0x20; i++) { - (&buf[0x20])[i] = (&commentTbl[0][0])[i+32]; + (&buf[0x20])[i] = (&commentTbl[0][0])[i + 32]; } anim_data = HuSprAnimReadFile(WIN_CARD_BANNER_ANM); - memcpy(buf + offsetof(SaveBufData, banner), anim_data->bmp->data, CARD_BANNER_WIDTH*CARD_BANNER_HEIGHT); + memcpy(buf + offsetof(SaveBufData, banner), anim_data->bmp->data, CARD_BANNER_WIDTH * CARD_BANNER_HEIGHT); memcpy(buf + offsetof(SaveBufData, bannerTlut), anim_data->bmp->palData, 512); anim_data = HuSprAnimReadFile(curBoxNo + WIN_CARD_BOX1_ICON_ANM); - memcpy(buf + offsetof(SaveBufData, icon), anim_data->bmp->data, CARD_ICON_WIDTH*CARD_ICON_HEIGHT*4); + memcpy(buf + offsetof(SaveBufData, icon), anim_data->bmp->data, CARD_ICON_WIDTH * CARD_ICON_HEIGHT * 4); memcpy(buf + offsetof(SaveBufData, iconTlut), anim_data->bmp->palData, 512); SLSaveDataInfoSet(time); } -void SLSaveDataInfoSet(OSTime *time) { +void SLSaveDataInfoSet(OSTime *time) +{ s16 year; s16 digit; OSCalendarTime sp8; OSTicksToCalendarTime(*time, &sp8); +#if VERSION_ENG saveBuf.data.comment[37] = curBoxNo + '1'; digit = (sp8.mon + 1) / 10; saveBuf.data.comment[40] = digit + '0'; @@ -299,9 +321,59 @@ void SLSaveDataInfoSet(OSTime *time) { saveBuf.data.comment[48] = digit + '0'; year -= digit * 10; saveBuf.data.comment[49] = year + '0'; +#elif VERSION_PAL + saveBuf.data.comment[37] = curBoxNo + '1'; + digit = sp8.mday / 10; + saveBuf.data.comment[40] = digit + '0'; + digit = sp8.mday % 10; + saveBuf.data.comment[41] = digit + '0'; + digit = (sp8.mon + 1) / 10; + saveBuf.data.comment[43] = digit + '0'; + digit = (sp8.mon + 1) % 10; + saveBuf.data.comment[44] = digit + '0'; + year = sp8.year; + digit = year / 1000; + saveBuf.data.comment[46] = digit + '0'; + year -= digit * 1000; + digit = year / 100; + saveBuf.data.comment[47] = digit + '0'; + year -= digit * 100; + digit = year / 10; + saveBuf.data.comment[48] = digit + '0'; + year -= digit * 10; + saveBuf.data.comment[49] = year + '0'; +#else + saveBuf.data.comment[52] = sjisNumTbl[(curBoxNo + 1) * 2]; + saveBuf.data.comment[53] = sjisNumTbl[(curBoxNo + 1) * 2 + 1]; + digit = (sp8.mon + 1) / 10; + if (digit == 0) { + saveBuf.data.comment[32] = sjisSpace[0]; + saveBuf.data.comment[33] = sjisSpace[1]; + } + else { + saveBuf.data.comment[32] = sjisNumTbl[digit * 2]; + saveBuf.data.comment[33] = sjisNumTbl[digit * 2 + 1]; + } + digit = (sp8.mon + 1) % 10; + saveBuf.data.comment[34] = sjisNumTbl[digit * 2]; + saveBuf.data.comment[35] = sjisNumTbl[digit * 2 + 1]; + digit = sp8.mday / 10; + if (digit == 0) { + saveBuf.data.comment[38] = sjisSpace[0]; + saveBuf.data.comment[39] = sjisSpace[1]; + } + else { + saveBuf.data.comment[38] = sjisNumTbl[digit * 2]; + saveBuf.data.comment[39] = sjisNumTbl[digit * 2 + 1]; + } + digit = sp8.mday % 10; + saveBuf.data.comment[40] = sjisNumTbl[digit * 2]; + saveBuf.data.comment[41] = sjisNumTbl[digit * 2 + 1]; +#endif } -void SLCommonSet(void) { +void SLCommonSet(void) +{ OSTime create_time; create_time = OSGetTime(); @@ -310,7 +382,8 @@ void SLCommonSet(void) { SLSaveDataInfoSet(&create_time); } -void SLSaveBoard(void) { +void SLSaveBoard(void) +{ s16 i; memcpy(&saveBuf.data.system, &GWSystem, sizeof(SystemState)); @@ -319,7 +392,8 @@ void SLSaveBoard(void) { } } -void SLSaveBoardStory(void) { +void SLSaveBoardStory(void) +{ s16 i; memcpy(&saveBuf.data.systemStory, &GWSystem, sizeof(SystemState)); @@ -328,7 +402,8 @@ void SLSaveBoardStory(void) { } } -s32 SLSave(void) { +s32 SLSave(void) +{ s32 result; while (1) { @@ -337,7 +412,8 @@ s32 SLSave(void) { if (result == CARD_RESULT_NOFILE) { if (!SLSerialNoCheck()) { SLMessOut(9); - } else { + } + else { SLCreateSaveWin(); result = SLFileCreate(SaveFileNameTbl[curBoxNo], 16384, &saveBuf); SLKillSaveWin(); @@ -346,7 +422,8 @@ s32 SLSave(void) { goto block_32; } } - } else { + } + else { if (result == CARD_RESULT_NOCARD) { result = SLMessOut(10); if (result != 0) { @@ -359,15 +436,18 @@ s32 SLSave(void) { if (result >= 0) { if (!SLSerialNoCheck()) { SLMessOut(9); - } else { + } + else { SLCreateSaveWin(); result = SLFileWrite(16384, &saveBuf); SLKillSaveWin(); if (result == CARD_RESULT_NOCARD) { SLMessOut(0); - } else if (result == CARD_RESULT_WRONGDEVICE) { + } + else if (result == CARD_RESULT_WRONGDEVICE) { SLMessOut(7); - } else if (result == CARD_RESULT_BROKEN) { + } + else if (result == CARD_RESULT_BROKEN) { result = HuCardSectorSizeGet(curSlotNo); if (result > 0 && result != 8192) { SLMessOut(8); @@ -381,13 +461,15 @@ s32 SLSave(void) { return result; } continue; - } else { + } + else { result = CARD_RESULT_BROKEN; } - } else if (result < 0) { + } + else if (result < 0) { SLMessOut(1); } -block_32: + block_32: SLFileClose(); if (result >= 0) { HuCardUnMount(curSlotNo); @@ -396,11 +478,12 @@ block_32: } } } -block_36: + block_36: result = SLMessOut(10); if (result != 0) { SLMessOut(11); - } else { + } + else { SLSaveFlagSet(0); break; } @@ -409,23 +492,37 @@ block_36: return 0; } -static s16 SLCreateSaveWin(void) { +#if VERSION_NTSC +#define SAVEWIN_POS 150 +#else +#define SAVEWIN_POS 120 +#endif + +#if VERSION_JP +#define SAVEWIN_MESS slotIconMesTbl +#else +#define SAVEWIN_MESS SlotNameTbl +#endif + +static s16 SLCreateSaveWin(void) +{ float size[2]; s16 window; HuWinInit(1); - HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0); HuWinMesMaxSizeGet(1, size, MAKE_MESSID(16, 68)); - window = HuWinExCreateStyled(-10000.0f, 150.0f, size[0], size[1], -1, 2); + window = HuWinExCreateStyled(-10000.0f, SAVEWIN_POS, size[0], size[1], -1, 2); saveMessWin = window; HuWinExAnimIn(window); - HuWinInsertMesSet(window, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); + HuWinInsertMesSet(window, MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0); HuWinMesSet(window, MAKE_MESSID(16, 68)); HuWinMesWait(window); return window; } -static void SLKillSaveWin(void) { +static void SLKillSaveWin(void) +{ if (saveMessWin != -1) { HuWinExAnimOut(saveMessWin); HuWinExCleanup(saveMessWin); @@ -433,7 +530,8 @@ static void SLKillSaveWin(void) { } } -s32 SLLoad(void) { +s32 SLLoad(void) +{ s32 result; u16 *save_checksum; u16 checksum; @@ -452,11 +550,13 @@ s32 SLLoad(void) { return 0; } -void SLLoadGameStat(void) { +void SLLoadGameStat(void) +{ memcpy(&GWGameStat, &saveBuf.data.stat, sizeof(GameStat)); } -void SLLoadBoard(void) { +void SLLoadBoard(void) +{ s16 i; memcpy(&GWSystem, &saveBuf.data.system, sizeof(SystemState)); @@ -470,7 +570,8 @@ void SLLoadBoard(void) { } } -void SLLoadBoardStory(void) { +void SLLoadBoardStory(void) +{ s16 i; memcpy(&GWSystem, &saveBuf.data.systemStory, 0xDC); @@ -484,11 +585,13 @@ void SLLoadBoardStory(void) { } } -s32 SLSerialNoGet(void) { +s32 SLSerialNoGet(void) +{ return CARDGetSerialNo(curSlotNo, &SLSerialNo); } -BOOL SLSerialNoCheck(void) { +BOOL SLSerialNoCheck(void) +{ s32 result; u64 serialNo; @@ -505,7 +608,8 @@ BOOL SLSerialNoCheck(void) { return TRUE; } -BOOL SLCheckSumCheck(void) { +BOOL SLCheckSumCheck(void) +{ u16 *save_checksum = (u16 *)&saveBuf.buf[sizeof(SaveBufData)]; u16 checksum = SLCheckSumGet(); @@ -515,7 +619,8 @@ BOOL SLCheckSumCheck(void) { return FALSE; } -u16 SLCheckSumGet(void) { +u16 SLCheckSumGet(void) +{ u32 i; u32 checksum; @@ -523,17 +628,19 @@ u16 SLCheckSumGet(void) { checksum += saveBuf.buf[i]; } checksum = ~checksum; - return (u16) checksum & 0xFFFF; + return (u16)checksum & 0xFFFF; } -void SLCheckSumSet(void) { +void SLCheckSumSet(void) +{ u16 checksum = SLCheckSumGet(); saveBuf.buf[sizeof(SaveBufData)] = (checksum >> 8) & 0xFF; - saveBuf.buf[sizeof(SaveBufData)+1] = checksum; + saveBuf.buf[sizeof(SaveBufData) + 1] = checksum; } -s32 SLStatSet(s32 reportF) { +s32 SLStatSet(s32 reportF) +{ CARDStat stat; s32 fileNo; s32 result; @@ -582,7 +689,8 @@ s32 SLStatSet(s32 reportF) { return result; } -s32 SLCardMount(s16 slotNo) { +s32 SLCardMount(s16 slotNo) +{ s32 result; while (1) { @@ -612,10 +720,12 @@ s32 SLCardMount(s16 slotNo) { if (result != 0) { return result; } - } else { + } + else { return CARD_RESULT_FATAL_ERROR; } - } else { + } + else { break; } } @@ -631,7 +741,8 @@ s32 SLCardMount(s16 slotNo) { return 0; } -s32 SLFormat(s16 slotNo) { +s32 SLFormat(s16 slotNo) +{ float winSize[2]; s16 result; s16 window1; @@ -639,11 +750,11 @@ s32 SLFormat(s16 slotNo) { OSTime time; HuWinInit(1); - HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); + HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0); HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(16, 56)); - window1 = HuWinExCreateStyled(-10000.0f, 150.0f, winSize[0], winSize[1], -1, 2); + window1 = HuWinExCreateStyled(-10000.0f, SAVEWIN_POS, winSize[0], winSize[1], -1, 2); HuWinExAnimIn(window1); - HuWinInsertMesSet(window1, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); + HuWinInsertMesSet(window1, MAKE_MESSID_PTR(SAVEWIN_MESS[curSlotNo]), 0); HuWinMesSet(window1, MAKE_MESSID(16, 56)); HuWinMesMaxSizeGet(1, winSize, MAKE_MESSID(16, 11)); window2 = HuWinExCreateStyled(-10000.0f, 200.0f, winSize[0], winSize[1], -1, 2); @@ -659,9 +770,9 @@ s32 SLFormat(s16 slotNo) { SLMessOut(12); return 0; } - _SetFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_BEGIN result = HuCardFormat(curSlotNo); - _ClearFlag(FLAG_ID_MAKE(3, 0)); + SAVE_WRITE_END if (result < 0) { HuWinExAnimOut(window1); HuWinExCleanup(window1); @@ -693,7 +804,8 @@ s32 SLFormat(s16 slotNo) { return result; } -s16 SLMessOut(s16 mess) { +s16 SLMessOut(s16 mess) +{ WindowData *var_r26; float size[2]; u32 slot_mess; @@ -721,11 +833,23 @@ s16 SLMessOut(s16 mess) { case 2: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); +#if VERSION_ENG save_mess = MAKE_MESSID(16, 74); +#elif VERSION_PAL + save_mess = MAKE_MESSID(16, 72); +#else + save_mess = MAKE_MESSID(16, 5); +#endif break; case 3: +#if VERSION_ENG save_mess = MAKE_MESSID(16, 74); +#elif VERSION_PAL + save_mess = MAKE_MESSID(16, 72); +#else + save_mess = MAKE_MESSID(16, 6); +#endif HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; @@ -772,7 +896,11 @@ s16 SLMessOut(s16 mess) { case 11: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); +#if VERSION_ENG save_mess = MAKE_MESSID(16, 72); +#else + save_mess = MAKE_MESSID(16, 76); +#endif break; case 12: @@ -781,7 +909,8 @@ s16 SLMessOut(s16 mess) { } if (save_mess == MAKE_MESSID(16, 4)) { HuWinMesMaxSizeGet(1, size, MAKE_MESSID(16, 78)); - } else { + } + else { HuWinMesMaxSizeGet(1, size, save_mess); } window = HuWinExCreateStyled(-10000.0f, 200.0f, size[0], size[1], -1, 2); diff --git a/src/game/sprput.c b/src/game/sprput.c index c3e50f2b..c2b061b1 100644 --- a/src/game/sprput.c +++ b/src/game/sprput.c @@ -1,6 +1,7 @@ #include "game/sprite.h" #include "game/hsfman.h" #include "game/init.h" +#include "game/disp.h" #include "dolphin/mtx.h" #include "dolphin/gx.h" #include "dolphin/vi.h" @@ -23,14 +24,14 @@ void HuSprDispInit(void) } bmpCCIdx = 0; GXInvalidateTexAll(); - MTXOrtho(proj, 0, 480, 0, 576, 0, 10); + MTXOrtho(proj, 0, HU_DISP_HEIGHT, 0, HU_DISP_WIDTH, 0, 10); GXSetProjection(proj, GX_ORTHOGRAPHIC); if(RenderMode->field_rendering) { - GXSetViewportJitter(0, 0, 640, 480, 0, 1, VIGetNextField()); + GXSetViewportJitter(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, 0, 1, VIGetNextField()); } else { - GXSetViewport(0, 0, 640, 480, 0, 1); + GXSetViewport(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT, 0, 1); } - GXSetScissor(0, 0, 640, 480); + GXSetScissor(0, 0, HU_FB_WIDTH, HU_FB_HEIGHT); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); diff --git a/src/game/sreset.c b/src/game/sreset.c index ae00c3cf..10d49ef4 100644 --- a/src/game/sreset.c +++ b/src/game/sreset.c @@ -4,6 +4,9 @@ #include "game/pad.h" #include "game/audio.h" #include "game/thpmain.h" +#include "game/gamework_data.h" + +#include "version.h" #define SR_DVD_LOADING 0 #define SR_DVD_COVER_OPEN 1 @@ -19,6 +22,12 @@ extern s32 HuDvdErrWait; static s32 SR_PreRstChk[4] = {}; +#if VERSION_JP +static s32 padding[4] = {}; +#endif + +#if VERSION_ENG + #include "coveropen_en.inc" #include "fatalerror_en.inc" #include "loading_en.inc" @@ -26,6 +35,54 @@ static s32 SR_PreRstChk[4] = {}; #include "retryerror_en.inc" #include "wrongdisc_en.inc" +#elif VERSION_PAL + +#include "coveropen_en.inc" +#include "fatalerror_en.inc" +#include "loading_en.inc" +#include "nodisc_en.inc" +#include "retryerror_en.inc" +#include "wrongdisc_en.inc" + +#include "coveropen_fr.inc" +#include "fatalerror_fr.inc" +#include "loading_fr.inc" +#include "nodisc_fr.inc" +#include "retryerror_fr.inc" +#include "wrongdisc_fr.inc" + +#include "coveropen_ge.inc" +#include "fatalerror_ge.inc" +#include "loading_ge.inc" +#include "nodisc_ge.inc" +#include "retryerror_ge.inc" +#include "wrongdisc_ge.inc" + +#include "coveropen_it.inc" +#include "fatalerror_it.inc" +#include "loading_it.inc" +#include "nodisc_it.inc" +#include "retryerror_it.inc" +#include "wrongdisc_it.inc" + +#include "coveropen_sp.inc" +#include "fatalerror_sp.inc" +#include "loading_sp.inc" +#include "nodisc_sp.inc" +#include "retryerror_sp.inc" +#include "wrongdisc_sp.inc" + +#else + +#include "coveropen_jp.inc" +#include "fatalerror_jp.inc" +#include "loading_jp.inc" +#include "nodisc_jp.inc" +#include "retryerror_jp.inc" +#include "wrongdisc_jp.inc" + +#endif + static s16 SR_PushTime[4] = {}; static s8 SR_ResetPad = -1; @@ -103,9 +160,17 @@ void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) XfbW = (u16)(((u16)rmode->fbWidth+15) & ~0xF); XfbH = rmode->xfbHeight; } else { + #if VERSION_NTSC XfbW = 640; XfbH = 480; + #else + XfbW = 640; + XfbH = 528; + #endif } + #if VERSION_PAL + (void)(VIGetTvFormat() == VI_PAL); + #endif if((u16)rmode->xFBmode == VI_XFBMODE_SF) { XfbProg = 0; } else { @@ -223,20 +288,43 @@ static void ToeDispCheck(void) _HuDvdErrDispXFB(status); } +#if VERSION_NTSC + +#define XFB_SIZE 0x96000 + +#else + +#define XFB_SIZE (XfbW*XfbH*2) + +#endif + static void _HuDvdErrDispXFB(s32 error) { + #if VERSION_ENG static void *bmpMes[][6] = { - loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en + loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en }; - volatile s32 status; - u8 color[2]; - s8 language; + #elif VERSION_PAL + static void *bmpMes[][6] = { + loading_en, coveropen_en, nodisc_en, wrongdisc_en, retryerror_en, fatalerror_en, + loading_fr, coveropen_fr, nodisc_fr, wrongdisc_fr, retryerror_fr, fatalerror_fr, + loading_ge, coveropen_ge, nodisc_ge, wrongdisc_ge, retryerror_ge, fatalerror_ge, + loading_it, coveropen_it, nodisc_it, wrongdisc_it, retryerror_it, fatalerror_it, + loading_sp, coveropen_sp, nodisc_sp, wrongdisc_sp, retryerror_sp, fatalerror_sp + }; + #else + static void *bmpMes[][6] = { + loading_jp, coveropen_jp, nodisc_jp, wrongdisc_jp, retryerror_jp, fatalerror_jp + }; + #endif + s16 *bmpData; u8 *xfb1_ptr; u8 *xfb2_ptr; u32 i; u32 data; u32 row; + s8 language; u32 *xfb1; u32 *xfb2; u32 j; @@ -246,25 +334,59 @@ static void _HuDvdErrDispXFB(s32 error) u32 *data_ptr; u32 row_offset; u32 row_pitch; + void *tempfb1; + void *tempfb2; + s32 status; + u8 color[2]; + + + #if VERSION_PAL + switch(GWGameStat.language) { + case 2: + language = 2; + break; + + case 3: + language = 1; + break; + + case 4: + language = 3; + break; + + case 5: + language = 4; + break; + + default: + language = 0; + break; + } + #else language = 0; + #endif xfb1 = Xfb[0]; xfb2 = Xfb[1]; - for(i=0; i<0x25800; i++, xfb1++, xfb2++) { + for(i=0; i>= 2, xfb1_ptr += 4, xfb2_ptr += 4) { @@ -290,8 +412,8 @@ static void _HuDvdErrDispXFB(s32 error) } } } - DCStoreRangeNoSync(sp14[1], bmpData[0]*2); - DCStoreRangeNoSync(sp14[0], bmpData[0]*2); + DCStoreRangeNoSync(tempfb1, bmpData[0]*2); + DCStoreRangeNoSync(tempfb2, bmpData[0]*2); } status = DVDGetDriveStatus(); while(status) { @@ -419,4 +541,4 @@ static void HuSoftResetPostProc(void) HuPadRumbleAllStop(); SR_ExecReset = TRUE; } -} \ No newline at end of file +} diff --git a/src/game/thpmain.c b/src/game/thpmain.c index babf6433..082eb281 100755 --- a/src/game/thpmain.c +++ b/src/game/thpmain.c @@ -1,13 +1,15 @@ #include "game/thpmain.h" +#include "game/THPSimple.h" #include "game/hsfdraw.h" #include "game/hsfman.h" #include "game/init.h" #include "game/process.h" #include "game/sprite.h" -#include "game/THPSimple.h" #include "string.h" +#define THP_DECODE_STACK_SIZE 0x2000 + static void THPTestProc(void); static void THPViewFunc(ModelData *arg0, Mtx arg1); static void THPViewSprFunc(HuSprite *arg0); @@ -25,7 +27,8 @@ static u32 THPFrame; static s16 THPStart; Process *THPProc; -s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume) { +s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume) +{ s16 temp_r31; if (THPProc) { @@ -51,11 +54,13 @@ s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume) { return temp_r31; } -s16 HuTHPSprCreate(char *path, s16 loop, s16 prio) { +s16 HuTHPSprCreate(char *path, s16 loop, s16 prio) +{ return HuTHPSprCreateVol(path, loop, prio, 110.0f); } -s16 HuTHP3DCreateVol(char *path, s16 loop, float volume) { +s16 HuTHP3DCreateVol(char *path, s16 loop, float volume) +{ s16 temp_r31; if (THPProc) { @@ -75,27 +80,32 @@ s16 HuTHP3DCreateVol(char *path, s16 loop, float volume) { THPLoopF = loop; THPStat = 0; THPFrame = 0; - Hu3DModelAttrSet(SimpleControl.unk19E, 1); + Hu3DModelAttrSet(SimpleControl.unk19E, HU3D_ATTR_DISPOFF); return temp_r31; } -s16 HuTHP3DCreate(char *path, s16 loop) { +s16 HuTHP3DCreate(char *path, s16 loop) +{ return HuTHP3DCreateVol(path, loop, 110.0f); } -void HuTHPStop(void) { +void HuTHPStop(void) +{ THPStat = 1; } -void HuTHPClose(void) { +void HuTHPClose(void) +{ THPStat = 2; } -void HuTHPRestart(void) { +void HuTHPRestart(void) +{ THPStat = 3; } -BOOL HuTHPEndCheck(void) { +BOOL HuTHPEndCheck(void) +{ s32 temp_r31; temp_r31 = THPSimpleGetTotalFrame() - 1; @@ -105,19 +115,23 @@ BOOL HuTHPEndCheck(void) { return (temp_r31 <= THPFrame); } -s32 HuTHPFrameGet(void) { +s32 HuTHPFrameGet(void) +{ return THPFrame; } -s32 HuTHPTotalFrameGet(void) { +s32 HuTHPTotalFrameGet(void) +{ return THPSimpleGetTotalFrame(); } -void HuTHPSetVolume(s32 left, s32 right) { +void HuTHPSetVolume(s32 left, s32 right) +{ THPSimpleSetVolume(left, right); } -static void THPTestProc(void) { +static void THPTestProc(void) +{ s32 temp_r29; u32 var_r28; void *temp_r30; @@ -141,14 +155,15 @@ static void THPTestProc(void) { HuPrcVSleep(); } HuPrcVSleep(); - decodeStackP = HuMemDirectMalloc(HEAP_SYSTEM, 0x2000); - decodeThread = OSSetIdleFunction(THPDecodeFunc, NULL, decodeStackP + 0x2000, 0x2000); + decodeStackP = HuMemDirectMalloc(HEAP_SYSTEM, THP_DECODE_STACK_SIZE); + decodeThread = OSSetIdleFunction(THPDecodeFunc, NULL, (decodeStackP + THP_DECODE_STACK_SIZE), THP_DECODE_STACK_SIZE); decodeRate = 0; THPStart = 1; if (SimpleControl.unk19C == 1) { - Hu3DModelAttrReset(SimpleControl.unk19E, 1); - } else { - HuSprAttrReset(SimpleControl.unk19E, 0, 4); + Hu3DModelAttrReset(SimpleControl.unk19E, HU3D_ATTR_DISPOFF); + } + else { + HuSprAttrReset(SimpleControl.unk19E, 0, HUSPR_ATTR_DISPOFF); } while (1) { if (THPStat == 2) { @@ -182,7 +197,8 @@ static void THPTestProc(void) { } if (SimpleControl.unk19C == 1) { Hu3DModelKill(SimpleControl.unk19E); - } else { + } + else { HuSprKill(SimpleControl.unk19E); } OSCancelThread(decodeThread); @@ -199,18 +215,21 @@ static void THPTestProc(void) { } } -static void THPViewFunc(ModelData *arg0, Mtx arg1) { +static void THPViewFunc(ModelData *arg0, Mtx arg1) +{ GXColor spC = { 0xFF, 0xFF, 0xFF, 0xFF }; if (THPStart != 0) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); GXSetCullMode(GX_CULL_NONE); - THPFrame = THPSimpleDrawCurrentFrame(RenderMode, &spC, arg1, -audioTrack.unk00 / 2, audioTrack.unk04 / 2, audioTrack.unk00, -audioTrack.unk04); + THPFrame + = THPSimpleDrawCurrentFrame(RenderMode, &spC, arg1, -audioTrack.unk00 / 2, audioTrack.unk04 / 2, audioTrack.unk00, -audioTrack.unk04); THPSimpleAudioStart(); } } -static void THPViewSprFunc(HuSprite *arg0) { +static void THPViewSprFunc(HuSprite *arg0) +{ Vec spC = { 0.0f, 0.0f, 1.0f }; GXColor sp8; s32 temp_r30; @@ -227,19 +246,21 @@ static void THPViewSprFunc(HuSprite *arg0) { PSMTXRotAxisRad(sp18, &spC, MTXDegToRad(arg0->z_rot)); PSMTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); PSMTXConcat(sp18, sp48, sp48); - } else { + } + else { PSMTXScale(sp48, arg0->scale_x, arg0->scale_y, 1.0f); } mtxTransCat(sp48, arg0->x, arg0->y, 0.0f); PSMTXConcat(*arg0->group_mtx, sp48, sp48); - temp_r30 = -((s32) audioTrack.unk00 / 2); - temp_r29 = -((s32) audioTrack.unk04 / 2); + temp_r30 = -((s32)audioTrack.unk00 / 2); + temp_r29 = -((s32)audioTrack.unk04 / 2); GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE); THPFrame = THPSimpleDrawCurrentFrame(RenderMode, &sp8, sp48, temp_r30, temp_r29, audioTrack.unk00, audioTrack.unk04); } } -static void THPDecodeFunc(void *param) { +static void THPDecodeFunc(void *param) +{ while (1) { if (THPStat == 2) { break; diff --git a/src/game/window.c b/src/game/window.c index 29f63d17..ac3be92e 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -1,14 +1,15 @@ #include "game/gamework_data.h" -#include "game/window.h" -#include "game/sprite.h" -#include "game/data.h" -#include "game/dvd.h" -#include "game/memory.h" -#include "game/process.h" -#include "game/pad.h" #include "game/armem.h" #include "game/audio.h" +#include "game/data.h" +#include "game/disp.h" +#include "game/dvd.h" +#include "game/memory.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" #include "ext_math.h" #include "stdarg.h" @@ -57,7 +58,12 @@ void *messDataPtr; static s32 messDataNo; static s16 winMaxWidth; static s16 winMaxHeight; +#if VERSION_NTSC static u8 mesWInsert[8]; +#else +static u16 mesWInsert[8]; +#endif + static u8 winTabSize; static u8 winInsertF; static u32 winAMemP; @@ -69,126 +75,74 @@ static s16 comKeyIdx; static u8 LanguageNo; AnimData *fontAnim; -static spcFontTblData spcFontTbl[] = { - { &iconAnim, 0, 20, 24, 10, 12 }, - { &iconAnim, 1, 20, 24, 10, 12 }, - { &iconAnim, 2, 20, 24, 10, 12 }, - { &iconAnim, 3, 20, 24, 10, 12 }, - { &iconAnim, 4, 20, 24, 10, 12 }, - { &iconAnim, 5, 20, 24, 10, 12 }, - { &iconAnim, 6, 20, 24, 10, 12 }, - { &iconAnim, 7, 20, 24, 10, 12 }, - { &iconAnim, 8, 20, 24, 10, 12 }, - { &iconAnim, 9, 20, 24, 10, 12 }, - { &iconAnim, 10, 20, 24, 10, 12 }, - { &iconAnim, 11, 30, 24, 15, 12 }, - { &iconAnim, 12, 20, 24, 10, 12 }, - { &iconAnim, 13, 20, 24, 10, 12 }, - { &iconAnim, 14, 20, 24, 10, 12 }, - { &iconAnim, 15, 20, 24, 10, 12 }, - { &iconAnim, 16, 20, 24, 10, 12 }, - { &iconAnim, 17, 20, 24, 10, 12 }, - { &iconAnim, 18, 20, 24, 10, 12 }, - { &iconAnim, 19, 24, 24, 12, 12 }, - { &cursorAnim, 0, 40, 32, -15, 18 }, - { &cardAnimA, 0, 32, 32, 16, 16 }, - { &cardAnimB, 0, 32, 32, 16, 16 } -}; +static spcFontTblData spcFontTbl[] = { { &iconAnim, 0, 20, 24, 10, 12 }, { &iconAnim, 1, 20, 24, 10, 12 }, { &iconAnim, 2, 20, 24, 10, 12 }, + { &iconAnim, 3, 20, 24, 10, 12 }, { &iconAnim, 4, 20, 24, 10, 12 }, { &iconAnim, 5, 20, 24, 10, 12 }, { &iconAnim, 6, 20, 24, 10, 12 }, + { &iconAnim, 7, 20, 24, 10, 12 }, { &iconAnim, 8, 20, 24, 10, 12 }, { &iconAnim, 9, 20, 24, 10, 12 }, { &iconAnim, 10, 20, 24, 10, 12 }, + { &iconAnim, 11, 30, 24, 15, 12 }, { &iconAnim, 12, 20, 24, 10, 12 }, { &iconAnim, 13, 20, 24, 10, 12 }, { &iconAnim, 14, 20, 24, 10, 12 }, + { &iconAnim, 15, 20, 24, 10, 12 }, { &iconAnim, 16, 20, 24, 10, 12 }, { &iconAnim, 17, 20, 24, 10, 12 }, { &iconAnim, 18, 20, 24, 10, 12 }, + { &iconAnim, 19, 24, 24, 12, 12 }, { &cursorAnim, 0, 40, 32, -15, 18 }, { &cardAnimA, 0, 32, 32, 16, 16 }, { &cardAnimB, 0, 32, 32, 16, 16 } }; -u8 charWETbl[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 20, 12, 12, 11, 14, - 8, 13, 12, 12, 12, 12, 12, 12, 12, 9, 11, 12, 11, 15, 12, 13, - 12, 13, 12, 12, 11, 12, 11, 15, 12, 13, 11, 12, 6, 8, 8, 12, - 20, 12, 11, 12, 11, 11, 9, 12, 11, 4, 8, 11, 4, 14, 11, 12, - 11, 12, 9, 11, 9, 11, 11, 15, 11, 11, 11, 4, 13, 8, 14, 12, - 9, 8, 8, 8, 20, 4, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 12, 12, 12, 12, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 12, 12, 7, 14, 17, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 -}; +#if VERSION_ENG +u8 charWETbl[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 20, 12, 12, 11, 14, 8, 13, 12, 12, 12, 12, 12, 12, 12, 9, 11, 12, 11, 15, 12, 13, 12, + 13, 12, 12, 11, 12, 11, 15, 12, 13, 11, 12, 6, 8, 8, 12, 20, 12, 11, 12, 11, 11, 9, 12, 11, 4, 8, 11, 4, 14, 11, 12, 11, 12, 9, 11, 9, 11, 11, 15, + 11, 11, 11, 4, 13, 8, 14, 12, 9, 8, 8, 8, 20, 4, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 12, 12, 12, 12, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 12, 12, 7, 14, + 17, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; +#elif VERSION_JP +u8 charWETbl[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 8, 11, 12, 13, 12, 11, 11, 12, 11, 18, 20, 12, 12, 11, 14, 8, 13, 12, 12, 12, 12, 12, 12, 12, 9, 11, 12, 11, 15, 12, 13, 12, + 13, 12, 12, 11, 12, 11, 15, 12, 13, 11, 12, 6, 8, 8, 12, 20, 12, 11, 12, 11, 11, 9, 12, 11, 4, 8, 11, 4, 14, 11, 12, 11, 12, 9, 11, 9, 11, 11, 15, + 11, 11, 11, 4, 13, 8, 14, 12, 9, 8, 8, 8, 20, 4, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 12, 12, 12, 12, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 12, 12, 7, 14, + 17, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; -u8 charWJTbl[] = { - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 0, 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 -}; +#else +u8 charWETbl[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 20, 12, 12, 11, 14, 8, 13, 12, 12, 12, 12, 12, 12, 12, 9, 11, 12, 11, 15, 12, 13, 12, + 13, 12, 12, 11, 12, 11, 15, 12, 13, 11, 12, 6, 8, 8, 12, 20, 12, 11, 12, 11, 11, 9, 12, 11, 4, 8, 11, 4, 14, 11, 12, 11, 12, 9, 11, 9, 11, 11, 15, + 11, 11, 11, 4, 13, 8, 14, 12, 9, 8, 8, 8, 20, 4, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 12, 12, 12, 12, + 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 13, 13, 6, 12, + 18, 14, 14, 8, 20, 20, 20, 20, 20, 20, 20, 20, 20, 10, 10, 10, 12, 12, 12, 12, 12, 10, 10, 12, 12, 10, 10, 10, 10, 7, 7, 12, 12, 10, 12, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; -static u8 ATTRIBUTE_ALIGN(32) charColPal[2*3*10] = { - 0x00, 0x00, 0x00, - 0x00, 0x00, 0xFF, - 0xFF, 0x00, 0x00, - 0xFF, 0x00, 0xFF, - 0x00, 0xFF, 0x00, - 0x00, 0xFF, 0xFF, - 0xFF, 0xA0, 0x00, - 0xFF, 0xFF, 0xFF, - 0x60, 0x60, 0x60, - 0x90, 0x90, 0x90, - 0x00, 0x00, 0x00, - 0x60, 0xB0, 0xFF, - 0xFF, 0x40, 0x80, - 0xFF, 0x00, 0xFF, - 0x00, 0xFF, 0x00, - 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xFF, - 0x60, 0x60, 0x60, - 0x90, 0x90, 0x90 -}; +#endif -static s32 frameFileTbl[] = { - WIN_FRAME1_ANM, - WIN_FRAME2_ANM, - WIN_FRAME3_ANM, - WIN_FRAME1_ANM -}; +u8 charWJTbl[] = { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; -static char *mesDataTbl[] = { - "mess/mini.dat", - "mess/board.dat", - "mess/mini_e.dat", - "mess/board_e.dat" -}; +static u8 ATTRIBUTE_ALIGN(32) charColPal[2 * 3 * 10] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x60, 0xB0, 0xFF, 0xFF, 0x40, 0x80, + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x90, 0x90, 0x90 }; -static s32 winVoiceTbl[] = { - 0x37, 0x36, 0x38, 0x44, - 0x43, 0x45, 0x41, 0x40, - 0x42, 0x4C, 0x4B, 0x4D, - 0x47, 0x46, 0x48, 0x3E, - 0x3E, 0x3F, 0x49, 0x49, - 0x49 -}; +static s32 frameFileTbl[] = { WIN_FRAME1_ANM, WIN_FRAME2_ANM, WIN_FRAME3_ANM, WIN_FRAME1_ANM }; + +#if VERSION_NTSC +static char *mesDataTbl[] = { "mess/mini.dat", "mess/board.dat", "mess/mini_e.dat", "mess/board_e.dat" }; +#else +static char *mesDataTbl[] = { "mess/mini.dat", "mess/board.dat", "mess/mini_e.dat", "mess/board_e.dat", "mess/mini_g.dat", "mess/board_g.dat", + "mess/mini_f.dat", "mess/board_f.dat", "mess/mini_i.dat", "mess/board_i.dat", "mess/mini_s.dat", "mess/board_s.dat" }; +#endif + +static s32 winVoiceTbl[] + = { 0x37, 0x36, 0x38, 0x44, 0x43, 0x45, 0x41, 0x40, 0x42, 0x4C, 0x4B, 0x4D, 0x47, 0x46, 0x48, 0x3E, 0x3E, 0x3F, 0x49, 0x49, 0x49 }; static s16 winPrio = 1000; -void HuWindowInit(void) { +void HuWindowInit(void) +{ s16 i; winAMemP = HuAR_DVDtoARAM(DATADIR_WIN); @@ -199,7 +153,8 @@ void HuWindowInit(void) { winPrio = 1000; } -void HuWinInit(s32 mess_data_no) { +void HuWinInit(s32 mess_data_no) +{ s16 i; void *anim_data; @@ -217,7 +172,8 @@ void HuWinInit(s32 mess_data_no) { if (!fontAnim) { if (LanguageNo == 0) { anim_data = HuDataReadNum(WIN_FONTJ_ANM, MEMORY_DEFAULT_NUM); - } else { + } + else { anim_data = HuDataReadNum(WIN_FONTE_ANM, MEMORY_DEFAULT_NUM); } fontAnim = HuSprAnimRead(anim_data); @@ -248,7 +204,8 @@ void HuWinInit(s32 mess_data_no) { } } -s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) { +s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) +{ AnimData *bg_anim; WindowData *window; HuSprite *sprite_ptr; @@ -274,13 +231,15 @@ s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) { w = (w + 15) & 0xFFF0; h = (h + 15) & 0xFFF0; if (x == -10000.0f) { - window->pos_x = (576.0f - w) / 2; - } else { + window->pos_x = (HU_DISP_WIDTHF - w) / 2; + } + else { window->pos_x = x; } if (y == -10000.0f) { - window->pos_y = (480.0f - h) / 2; - } else { + window->pos_y = (HU_DISP_HEIGHTF - h) / 2; + } + else { window->pos_y = y; } HuSprGrpCenterSet(group, w / 2, h / 2); @@ -298,7 +257,11 @@ s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) { sprite_ptr->work[0] = window_id; HuSprGrpMemberSet(group, 1, sprite); window->num_chars = 0; +#if VERSION_JP + window->max_chars = (w / 20) * (h / 24) * 3; +#else window->max_chars = (w / 8) * (h / 24) * 4; +#endif window->char_data = HuMemDirectMalloc(HEAP_SYSTEM, window->max_chars * sizeof(WinChar)); window->attr = 0; window->stat = 0; @@ -327,10 +290,13 @@ s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) { window->scissor_h = 0x1E0; window->tab_w = 24; window->push_key = 0x300; +#if !VERSION_JP window->key_auto = 0; +#endif if (frame == 0 || frame == 2) { memcpy(&window->mess_pal, &charColPal[30], 30); - } else { + } + else { memcpy(&window->mess_pal, charColPal, 30); window->mess_shadow_color = 9; } @@ -351,7 +317,8 @@ s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) { return window_id; } -void HuWinKill(s16 window) { +void HuWinKill(s16 window) +{ WindowData *window_ptr = &winData[window]; s16 i; @@ -367,7 +334,8 @@ void HuWinKill(s16 window) { } } -void HuWinAllKill(void) { +void HuWinAllKill(void) +{ s16 i; for (i = 0; i < 32; i++) { @@ -406,7 +374,8 @@ void HuWinAllKill(void) { HuDataDirClose(DATADIR_WIN); } -static void MesDispFunc(HuSprite *sprite) { +static void MesDispFunc(HuSprite *sprite) +{ WindowData *window = &winData[sprite->work[0]]; HuSprGrp *group; float uv_maxx; @@ -427,7 +396,7 @@ static void MesDispFunc(HuSprite *sprite) { if (window->num_chars != 0) { group = &HuSprGrpData[window->group]; GXInvalidateTexAll(); - C_MTXOrtho(proj, 0.0f, 480.0f, 0.0f, 576.0f, 0.0f, 10.0f); + C_MTXOrtho(proj, 0.0f, HU_DISP_HEIGHTF, 0.0f, HU_DISP_WIDTHF, 0.0f, 10.0f); GXSetProjection(proj, GX_ORTHOGRAPHIC); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); @@ -456,12 +425,16 @@ static void MesDispFunc(HuSprite *sprite) { MTXConcat(*sprite->group_mtx, modelview, modelview); GXLoadPosMtxImm(modelview, 0); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - HuSprTexLoad(fontAnim, 0, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR); + HuSprTexLoad(fontAnim, 0, 0, GX_CLAMP, GX_CLAMP, VERSION_JP ? GX_NEAR : GX_LINEAR); GXBegin(GX_QUADS, GX_VTXFMT0, window->num_chars * 4); - char_uv_h = (LanguageNo == 0) ? (24.0f/408.0f) : (24.0f/312.0f); + char_uv_h = (LanguageNo == 0) ? (24.0f / 408.0f) : (24.0f / 312.0f); for (i = 0; i < window->num_chars; i++) { char_w = fontWidthP[window->char_data[i].character + 48]; - uv_minx = (20.0f/320.0f) * (window->char_data[i].character % 16); +#if VERSION_JP + uv_minx = 0.003125 + (20.0f / 320.0f) * (window->char_data[i].character % 16); +#else + uv_minx = (20.0f / 320.0f) * (window->char_data[i].character % 16); +#endif uv_miny = char_uv_h * (window->char_data[i].character / 16); uv_maxx = uv_minx + (char_w / 320.0); uv_maxy = uv_miny + char_uv_h; @@ -470,7 +443,8 @@ static void MesDispFunc(HuSprite *sprite) { color = window->char_data[i].color; if (window->speed != 0) { alpha = window->char_data[i].fade * 8; - } else { + } + else { alpha = 255; } alpha = 255; @@ -495,7 +469,8 @@ static void MesDispFunc(HuSprite *sprite) { } } -static u8 winBGMake(AnimData *bg, AnimData *frame) { +static u8 winBGMake(AnimData *bg, AnimData *frame) +{ AnimBmpData *bmp; s16 block_h; s16 h; @@ -516,29 +491,37 @@ static u8 winBGMake(AnimData *bg, AnimData *frame) { for (j = 0; j < w; j++) { if (j == 0) { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0; - } else if (j == w-1) { + } + else if (j == w - 1) { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x10; - } else { + } + else { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x70; } } - } else if (i == h-1) { + } + else if (i == h - 1) { for (j = 0; j < w; j++) { if (j == 0) { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x20; - } else if (j == w - 1) { + } + else if (j == w - 1) { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x30; - } else { + } + else { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x60; } } - } else { + } + else { for (j = 0; j < w; j++) { if (j == 0) { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x40; - } else if (j == w-1) { + } + else if (j == w - 1) { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x50; - } else { + } + else { bmp_data[(j & 7) + ((j >> 3) << 5) + (i >> 2) * (block_w * 4) + (i & 3) * 8] = 0x80; } } @@ -557,7 +540,8 @@ static u8 winBGMake(AnimData *bg, AnimData *frame) { return w; } -static void HuWinProc(void) { +static void HuWinProc(void) +{ WindowData *window; s16 i; @@ -589,41 +573,48 @@ static void HuWinProc(void) { } } -static inline void charEntry(s16 window, s16 x, s16 y, s16 char_idx, s16 color) { +static inline void charEntry(s16 window, s16 x, s16 y, s16 char_idx, s16 color) +{ WindowData *window_ptr = &winData[window]; WinChar *win_char = window_ptr->char_data; win_char = &window_ptr->char_data[window_ptr->num_chars]; win_char->x = x - window_ptr->w / 2; win_char->y = y - window_ptr->h / 2; - win_char->character = char_idx-48; + win_char->character = char_idx - 48; win_char->color = color; win_char->fade = 0; window_ptr->num_chars++; if (window_ptr->num_chars >= window_ptr->max_chars) { - window_ptr->num_chars = window_ptr->max_chars-1; + window_ptr->num_chars = window_ptr->max_chars - 1; } } -static void HuWinDrawMes(s16 window) { +static void HuWinDrawMes(s16 window) +{ WindowData *window_ptr = &winData[window]; HuSprGrp *group = &HuSprGrpData[window_ptr->group]; - s16 c; s16 i; s16 char_w; s16 tab_w; s16 insert_mess; s16 mess_end; + s16 c; + s16 shadow_color; s16 color; s16 mess_w; - window_ptr->mess_time += 3; + window_ptr->mess_time += VERSION_JP ? 1 : 3; while (window_ptr->mess_time >= window_ptr->speed || (window_ptr->attr & 0x2000)) { +#if VERSION_JP + window_ptr->mess_time = 0; +#else window_ptr->mess_time -= window_ptr->speed; - if(window_ptr->mess_time < 0) { + if (window_ptr->mess_time < 0) { window_ptr->mess_time = 0; } +#endif char_w = window_ptr->spacing_x + fontWidthP[window_ptr->mess[0]]; mess_end = 0; if (window_ptr->mess[0] != 0 && (window_ptr->attr & 4)) { @@ -634,7 +625,7 @@ static void HuWinDrawMes(s16 window) { switch (window_ptr->mess[0]) { case 0: if (window_ptr->mess_stackptr == 0) { - for (i=0; i<16; i++) { + for (i = 0; i < 16; i++) { window_ptr->choice_disable[i] = 0; } window_ptr->stat = 0; @@ -643,9 +634,11 @@ static void HuWinDrawMes(s16 window) { } window_ptr->mess_stackptr--; window_ptr->mess = window_ptr->mess_stack[window_ptr->mess_stackptr]; +#if !VERSION_JP window_ptr->mess_time = 0; +#endif break; - + case 31: window_ptr->mess++; insert_mess = window_ptr->mess[0] - 1; @@ -658,30 +651,31 @@ static void HuWinDrawMes(s16 window) { } } break; - + case 11: window_ptr->attr &= ~0x2200; _HuWinHomeClear(window_ptr); if (window_ptr->attr & 0x800) { mess_w = GetMesMaxSizeSub2(window_ptr, window_ptr->mess + 1); window_ptr->mess_x = (window_ptr->mess_rect_w - mess_w) / 2; - } else if (window_ptr->attr & 0x1000) { + } + else if (window_ptr->attr & 0x1000) { mess_w = GetMesMaxSizeSub2(window_ptr, window_ptr->mess + 1); window_ptr->mess_x = window_ptr->mess_rect_w - mess_w; } break; - + case 30: window_ptr->mess++; if (!(window_ptr->attr & 0x80)) { window_ptr->mess_color = window_ptr->mess[0] - 1; } break; - + case 29: window_ptr->attr ^= 1; break; - + case 10: window_ptr->attr &= ~0x2020; if (window_ptr->attr & 0x200) { @@ -695,30 +689,31 @@ static void HuWinDrawMes(s16 window) { if (window_ptr->attr & 0x800) { mess_w = GetMesMaxSizeSub2(window_ptr, window_ptr->mess + 1); window_ptr->mess_x = (window_ptr->mess_rect_w - mess_w) / 2; - } else if (window_ptr->attr & 0x1000) { + } + else if (window_ptr->attr & 0x1000) { mess_w = GetMesMaxSizeSub2(window_ptr, window_ptr->mess + 1); window_ptr->mess_x = window_ptr->mess_rect_w - mess_w; } break; } char_w = fontWidthP[16] + window_ptr->spacing_x; - /* fallthrough */ - case 16: - case 32: - window_ptr->attr |= 0x200; - if (window_ptr->mess_x + char_w > window_ptr->mess_rect_w) { - if (HuWinCR(window_ptr) != 0) { - window_ptr->mess++; - HuWinKeyWaitEntry(window); - window_ptr->attr |= 2; - return; + /* fallthrough */ + case 16: + case 32: + window_ptr->attr |= 0x200; + if (window_ptr->mess_x + char_w > window_ptr->mess_rect_w) { + if (HuWinCR(window_ptr) != 0) { + window_ptr->mess++; + HuWinKeyWaitEntry(window); + window_ptr->attr |= 2; + return; + } + break; } - break; - } - window_ptr->mess_x += char_w; + window_ptr->mess_x += char_w; } break; - + case 14: window_ptr->attr |= 0x200; window_ptr->mess++; @@ -729,29 +724,31 @@ static void HuWinDrawMes(s16 window) { window_ptr->attr |= 2; return; } - HuWinSpcFontEntry(window_ptr, window_ptr->mess[0] - 1, window_ptr->mess_rect_x + window_ptr->mess_x, window_ptr->mess_rect_y + window_ptr->mess_y); + HuWinSpcFontEntry(window_ptr, window_ptr->mess[0] - 1, window_ptr->mess_rect_x + window_ptr->mess_x, + window_ptr->mess_rect_y + window_ptr->mess_y); window_ptr->mess_x += tab_w; mess_end = 1; break; - + case 28: window_ptr->mess++; HuAudFXPlay(winVoiceTbl[window_ptr->mess[0] - 1]); break; - + case 255: window_ptr->mess++; HuWinKeyWaitEntry(window); window_ptr->attr |= 4; window_ptr->attr &= ~0x200; return; - + case 15: window_ptr->attr |= 0x2000; if (window_ptr->choice_disable[window_ptr->num_choices] != 0) { window_ptr->attr |= 0x20; window_ptr->choice_data[window_ptr->num_choices].stat |= 1; - } else { + } + else { window_ptr->choice_data[window_ptr->num_choices].stat &= ~1; } @@ -759,7 +756,7 @@ static void HuWinDrawMes(s16 window) { window_ptr->choice_data[window_ptr->num_choices].y = window_ptr->mess_y + window_ptr->mess_rect_x; window_ptr->num_choices++; break; - + case 12: window_ptr->attr |= 0x200; tab_w = window_ptr->tab_w * ((window_ptr->mess_x + window_ptr->tab_w) / window_ptr->tab_w) - window_ptr->mess_x; @@ -770,7 +767,8 @@ static void HuWinDrawMes(s16 window) { window_ptr->attr |= 2; return; } - } else { + } + else { window_ptr->mess_x += tab_w; } break; @@ -789,39 +787,48 @@ static void HuWinDrawMes(s16 window) { } c = window_ptr->mess[0]; window_ptr->attr |= 0x200; +#if VERSION_NTSC if (window_ptr->mess[1] == 128) { if (c >= 150 && c <= 164) { - c = c+106; - } else if (c >= 170 && c <= 174) { - c = c+101; - } else if (c >= 214 && c <= 228) { - c = c+67; - } else if (c >= 234 && c <= 238) { - c = c+62; + c = c + 106; } - window_ptr->mess++; - } else if (window_ptr->mess[1] == 129) { - if (c >= 170 && c <= 174) { - c = c+106; - } else if (c >= 234 && c <= 238) { - c = c+67; + else if (c >= 170 && c <= 174) { + c = c + 101; + } + else if (c >= 214 && c <= 228) { + c = c + 67; + } + else if (c >= 234 && c <= 238) { + c = c + 62; } window_ptr->mess++; } + else if (window_ptr->mess[1] == 129) { + if (c >= 170 && c <= 174) { + c = c + 106; + } + else if (c >= 234 && c <= 238) { + c = c + 67; + } + window_ptr->mess++; + } +#endif color = (window_ptr->attr & 0x20) ? 8 : window_ptr->mess_color; if (window_ptr->attr & 1) { shadow_color = 0; if (window_ptr->mess_color == 0 || window_ptr->mess_color == 1) { shadow_color = 8; } - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x+2, window_ptr->mess_rect_y+window_ptr->mess_y, c, shadow_color); - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x-2, window_ptr->mess_rect_y+window_ptr->mess_y, c, shadow_color); - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x, window_ptr->mess_rect_y+window_ptr->mess_y+2, c, shadow_color); - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x, window_ptr->mess_rect_y+window_ptr->mess_y-2, c, shadow_color); - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x, window_ptr->mess_rect_y+window_ptr->mess_y, c, color); - } else { - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x+2, window_ptr->mess_rect_y+window_ptr->mess_y+2, c, window_ptr->mess_shadow_color); - charEntry(window, window_ptr->mess_rect_x+window_ptr->mess_x, window_ptr->mess_rect_y+window_ptr->mess_y, c, color); + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x + 2, window_ptr->mess_rect_y + window_ptr->mess_y, c, shadow_color); + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x - 2, window_ptr->mess_rect_y + window_ptr->mess_y, c, shadow_color); + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x, window_ptr->mess_rect_y + window_ptr->mess_y + 2, c, shadow_color); + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x, window_ptr->mess_rect_y + window_ptr->mess_y - 2, c, shadow_color); + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x, window_ptr->mess_rect_y + window_ptr->mess_y, c, color); + } + else { + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x + 2, window_ptr->mess_rect_y + window_ptr->mess_y + 2, c, + window_ptr->mess_shadow_color); + charEntry(window, window_ptr->mess_rect_x + window_ptr->mess_x, window_ptr->mess_rect_y + window_ptr->mess_y, c, color); } window_ptr->mess_x += char_w; window_ptr->mess++; @@ -829,19 +836,22 @@ static void HuWinDrawMes(s16 window) { } } -static s32 HuWinCR(WindowData *window) { +static s32 HuWinCR(WindowData *window) +{ if (window->mess_y + 48 > window->mess_rect_h) { window->mess_y = 0; window->mess_x = 0; return 1; - } else { + } + else { window->mess_y += window->spacing_y + 24; window->mess_x = 0; return 0; } } -static void _HuWinHomeClear(WindowData *window) { +static void _HuWinHomeClear(WindowData *window) +{ s16 i; window->num_chars = 0; @@ -849,29 +859,33 @@ static void _HuWinHomeClear(WindowData *window) { window->num_choices = 0; HuWinSpcFontClear(window); window->attr &= ~0x2020; - for (i=0; i<16; i++) { + for (i = 0; i < 16; i++) { window->choice_data[i].stat = 0; } } -void HuWinHomeClear(s16 window) { +void HuWinHomeClear(s16 window) +{ WindowData *window_ptr = &winData[window]; _HuWinHomeClear(window_ptr); } -void HuWinKeyWaitEntry(s16 window) { +void HuWinKeyWaitEntry(s16 window) +{ WindowData *window_ptr = &winData[window]; if (window_ptr->attr & 0x400) { window_ptr->stat = 0; - } else { + } + else { window_ptr->stat = 2; window_ptr->advance_sprite = HuWinSpcFontEntry(window_ptr, 19, window_ptr->mess_rect_w - 20, window_ptr->mess_rect_h - 24); } } -static void HuWinKeyWait(s16 window) { +static void HuWinKeyWait(s16 window) +{ WindowData *window_ptr = &winData[window]; if (window_ptr->push_key & HuWinActivePadGet(window_ptr)) { @@ -886,16 +900,17 @@ static void HuWinKeyWait(s16 window) { } } -static s16 HuWinSpcFontEntry(WindowData *window, s16 entry, s16 x, s16 y) { +static s16 HuWinSpcFontEntry(WindowData *window, s16 entry, s16 x, s16 y) +{ HuSprGrp *group = &HuSprGrpData[window->group]; s16 sprite; s16 i; AnimData *anim; - for (i=10; i<30; i++) { + for (i = 10; i < 30; i++) { if (window->sprite_id[i] == -1) { anim = *spcFontTbl[entry].anim; - window->sprite_id[i] = sprite = HuSprCreate(anim, window->prio-1, spcFontTbl[entry].bank); + window->sprite_id[i] = sprite = HuSprCreate(anim, window->prio - 1, spcFontTbl[entry].bank); HuSprGrpMemberSet(window->group, i, sprite); HuSprPosSet(window->group, i, x + spcFontTbl[entry].center_x - window->w / 2, y + spcFontTbl[entry].center_y - window->h / 2); break; @@ -904,16 +919,18 @@ static s16 HuWinSpcFontEntry(WindowData *window, s16 entry, s16 x, s16 y) { return i; } -static void HuWinSpcFontPosSet(WindowData *window, s16 index, s16 x, s16 y) { +static void HuWinSpcFontPosSet(WindowData *window, s16 index, s16 x, s16 y) +{ HuSprGrp *group = &HuSprGrpData[window->group]; HuSprPosSet(window->group, index, x - window->w / 2, y - window->h / 2); } -static void HuWinSpcFontClear(WindowData *window) { +static void HuWinSpcFontClear(WindowData *window) +{ s16 i; - for (i=10; i<30; i++) { + for (i = 10; i < 30; i++) { if (window->sprite_id[i] != -1) { HuSprGrpMemberKill(window->group, i); window->sprite_id[i] = -1; @@ -921,7 +938,8 @@ static void HuWinSpcFontClear(WindowData *window) { } } -static void HuWinChoice(WindowData *window) { +static void HuWinChoice(WindowData *window) +{ WinChoice *choice; float choice_dist; float min_choice_dist_x; @@ -967,7 +985,8 @@ static void HuWinChoice(WindowData *window) { } if (i != choice_max) { for (i = 0, choice = window->choice_data; i < choice_max; i++, choice++) { - if (i != choice_curr && !(choice->stat & 1) && choice->y == choice_curr_y && choice->x < choice_curr_x && choice_dist > choice_curr_x - choice->x) { + if (i != choice_curr && !(choice->stat & 1) && choice->y == choice_curr_y && choice->x < choice_curr_x + && choice_dist > choice_curr_x - choice->x) { choice_dist = choice_curr_x - choice->x; choice_next = i; } @@ -998,7 +1017,8 @@ static void HuWinChoice(WindowData *window) { } } } - } else { + } + else { choice_y = -1000; for (i = 0, choice = window->choice_data; i < choice_max; i++, choice++) { if (i != choice_curr && !(choice->stat & 1) && choice->y > choice_y) { @@ -1028,7 +1048,8 @@ static void HuWinChoice(WindowData *window) { } if (i != choice_max) { for (i = 0, choice = window->choice_data; i < choice_max; i++, choice++) { - if (i != choice_curr && !(choice->stat & 1) && choice->y == choice_curr_y && choice->x > choice_curr_x && choice_dist > choice->x - choice_curr_x) { + if (i != choice_curr && !(choice->stat & 1) && choice->y == choice_curr_y && choice->x > choice_curr_x + && choice_dist > choice->x - choice_curr_x) { choice_dist = choice->x - choice_curr_x; choice_next = i; } @@ -1059,7 +1080,8 @@ static void HuWinChoice(WindowData *window) { } } } - } else { + } + else { choice_y = 1000; for (i = 0, choice = window->choice_data; i < choice_max; i++, choice++) { if (i != choice_curr && !(choice->stat & 1) && choice->y < choice_y) { @@ -1085,25 +1107,33 @@ static void HuWinChoice(WindowData *window) { if (window->choice != choice_next) { window->choice = choice_next; HuAudFXPlay(0); - } else if (key & (window->key_auto | PAD_BUTTON_A)) { + } + else if (key & (VERSION_JP ? PAD_BUTTON_A : (window->key_auto | PAD_BUTTON_A))) { HuAudFXPlay(2); window->key_down = key; window->stat = 0; - } else if ((key & PAD_BUTTON_B) && !(window->attr & 0x10)) { + } + else if ((key & PAD_BUTTON_B) && !(window->attr & 0x10)) { HuAudFXPlay(3); +#if !VERSION_JP window->key_down = key; +#else + (void)key; // hack to match Japanese version +#endif window->choice = -1; window->stat = 0; } - HuWinSpcFontPosSet(window, window->cursor_sprite, window->choice_data[choice_next].x + spcFontTbl[20].center_x, window->choice_data[choice_next].y + spcFontTbl[20].center_y); + HuWinSpcFontPosSet(window, window->cursor_sprite, window->choice_data[choice_next].x + spcFontTbl[20].center_x, + window->choice_data[choice_next].y + spcFontTbl[20].center_y); } -u32 HuWinActivePadGet(WindowData *window) { +u32 HuWinActivePadGet(WindowData *window) +{ s32 win_key; u32 i; win_key = 0; - for (i=0; i<4; i++) { + for (i = 0; i < 4; i++) { if (window->active_pad & (1 << i)) { win_key |= winKey[i]; } @@ -1111,7 +1141,8 @@ u32 HuWinActivePadGet(WindowData *window) { return win_key; } -u32 HuWinActiveKeyGetX(WindowData *window) { +u32 HuWinActiveKeyGetX(WindowData *window) +{ u32 button; u32 i; u32 j; @@ -1121,7 +1152,7 @@ u32 HuWinActiveKeyGetX(WindowData *window) { active_pad = (window->active_pad & ~window->player_disable); for (i = 0; i < 4; i++) { if (active_pad & (1 << i)) { - for (j=0; j<4; j++) { + for (j = 0; j < 4; j++) { if (i == GWPlayerCfg[j].pad_idx) { break; } @@ -1134,7 +1165,8 @@ u32 HuWinActiveKeyGetX(WindowData *window) { return button; } -void HuWinPosSet(s16 window, float x, float y) { +void HuWinPosSet(s16 window, float x, float y) +{ WindowData *window_ptr = &winData[window]; window_ptr->pos_x = x; @@ -1142,7 +1174,8 @@ void HuWinPosSet(s16 window, float x, float y) { HuSprGrpPosSet(window_ptr->group, x, y); } -void HuWinScaleSet(s16 window, float x, float y) { +void HuWinScaleSet(s16 window, float x, float y) +{ WindowData *window_ptr = &winData[window]; window_ptr->scale_x = x; @@ -1150,38 +1183,43 @@ void HuWinScaleSet(s16 window, float x, float y) { HuSprGrpScaleSet(window_ptr->group, x, y); } -void HuWinZRotSet(s16 window, float z_rot) { +void HuWinZRotSet(s16 window, float z_rot) +{ WindowData *window_ptr = &winData[window]; window_ptr->z_rot = z_rot; HuSprGrpZRotSet(window_ptr->group, z_rot); } -void HuWinCenterPosSet(s16 window, float x, float y) { +void HuWinCenterPosSet(s16 window, float x, float y) +{ WindowData *window_ptr = &winData[window]; HuSprGrpCenterSet(window_ptr->group, window_ptr->w / 2.0f - x, window_ptr->h / 2.0f - y); } -void HuWinDrawNoSet(s16 window, s16 draw_no) { +void HuWinDrawNoSet(s16 window, s16 draw_no) +{ WindowData *window_ptr = &winData[window]; HuSprGrpDrawNoSet(window_ptr->group, draw_no); } -void HuWinScissorSet(s16 window, s16 x, s16 y, s16 w, s16 h) { +void HuWinScissorSet(s16 window, s16 x, s16 y, s16 w, s16 h) +{ WindowData *window_ptr = &winData[window]; HuSprGrpScissorSet(window_ptr->group, x, y, w, h); } -void HuWinPriSet(s16 window, s16 prio) { +void HuWinPriSet(s16 window, s16 prio) +{ WindowData *window_ptr = &winData[window]; s16 i; HuSprPriSet(window_ptr->group, 0, prio); HuSprPriSet(window_ptr->group, 1, prio); - for (i=2; i<30; i++) { + for (i = 2; i < 30; i++) { if (window_ptr->sprite_id[i] != -1) { HuSprPriSet(window_ptr->group, i, prio - 1); } @@ -1189,32 +1227,37 @@ void HuWinPriSet(s16 window, s16 prio) { window_ptr->prio = prio; } -void HuWinAttrSet(s16 window, u32 attr) { +void HuWinAttrSet(s16 window, u32 attr) +{ WindowData *window_ptr = &winData[window]; window_ptr->attr |= attr; } -void HuWinAttrReset(s16 window, u32 attr) { +void HuWinAttrReset(s16 window, u32 attr) +{ WindowData *window_ptr = &winData[window]; window_ptr->attr &= ~attr; } -s16 HuWinStatGet(s16 window) { +s16 HuWinStatGet(s16 window) +{ WindowData *window_ptr = &winData[window]; return window_ptr->stat; } -void HuWinMesColSet(s16 window, u8 color) { +void HuWinMesColSet(s16 window, u8 color) +{ WindowData *window_ptr = &winData[window]; window_ptr->mess_color = color; window_ptr->attr |= 0x80; } -void HuWinMesPalSet(s16 window, u8 index, u8 r, u8 g, u8 b) { +void HuWinMesPalSet(s16 window, u8 index, u8 r, u8 g, u8 b) +{ WindowData *window_ptr = &winData[window]; window_ptr->mess_pal[index][0] = r; @@ -1222,44 +1265,54 @@ void HuWinMesPalSet(s16 window, u8 index, u8 r, u8 g, u8 b) { window_ptr->mess_pal[index][2] = b; } -void HuWinBGTPLvlSet(s16 window, float tp_level) { +void HuWinBGTPLvlSet(s16 window, float tp_level) +{ WindowData *window_ptr = &winData[window]; HuSprTPLvlSet(window_ptr->group, 0, tp_level); } -void HuWinBGColSet(s16 window, GXColor *bg_color) { +void HuWinBGColSet(s16 window, GXColor *bg_color) +{ WindowData *window_ptr = &winData[window]; HuSprColorSet(window_ptr->group, 0, bg_color->r, bg_color->g, bg_color->b); } -void HuWinMesSpeedSet(s16 window, s16 speed) { +void HuWinMesSpeedSet(s16 window, s16 speed) +{ WindowData *window_ptr = &winData[window]; window_ptr->speed = speed; } -void HuWinMesRead(s32 mess_data_no) { +void HuWinMesRead(s32 mess_data_no) +{ void *dvd_mess; char *mess_path; - if(messDataPtr) { + if (messDataPtr) { HuMemDirectFree(messDataPtr); } messDataNo = mess_data_no; +#if VERSION_NTSC if (LanguageNo == 0) { mess_path = mesDataTbl[messDataNo]; - } else { + } + else { mess_path = mesDataTbl[messDataNo + 2]; } +#else + mess_path = mesDataTbl[messDataNo + (LanguageNo * 2)]; +#endif dvd_mess = HuDvdDataRead(mess_path); messDataPtr = HuMemDirectMalloc(HEAP_SYSTEM, DirDataSize); memcpy(messDataPtr, dvd_mess, DirDataSize); HuMemDirectFree(dvd_mess); } -void HuWinMesSet(s16 window, u32 mess) { +void HuWinMesSet(s16 window, u32 mess) +{ WindowData *window_ptr = &winData[window]; window_ptr->stat = 1; @@ -1271,19 +1324,25 @@ void HuWinMesSet(s16 window, u32 mess) { window_ptr->mess = MessData_MesPtrGet(messDataPtr, mess); if (window_ptr->mess == 0) { OSReport("Error: No Message data\n"); +#if !VERSION_JP HuWinMesSet(window, 0); return; +#endif } - } else { + } + else { window_ptr->mess = (u8 *)mess; } if (!(window_ptr->attr & 0x80)) { window_ptr->mess_color = 7; +#if !VERSION_JP window_ptr->mess_time = 0; +#endif } } -void HuWinInsertMesSet(s16 window, u32 mess, s16 index) { +void HuWinInsertMesSet(s16 window, u32 mess, s16 index) +{ WindowData *window_ptr = &winData[window]; if (!(mess & 0x80000000)) { @@ -1295,12 +1354,14 @@ void HuWinInsertMesSet(s16 window, u32 mess, s16 index) { if (window_ptr->insert_mess[index] == 0) { OSReport("Error: No Message data\n"); } - } else { + } + else { window_ptr->insert_mess[index] = (u8 *)mess; } } -s16 HuWinChoiceGet(s16 window, s16 start_choice) { +s16 HuWinChoiceGet(s16 window, s16 start_choice) +{ WindowData *window_ptr = &winData[window]; window_ptr->attr |= 0x40; @@ -1331,50 +1392,57 @@ s16 HuWinChoiceGet(s16 window, s16 start_choice) { return window_ptr->choice; } -s16 HuWinChoiceNumGet(s16 window) { +s16 HuWinChoiceNumGet(s16 window) +{ WindowData *window_ptr = &winData[window]; return window_ptr->num_choices; } -void HuWinChoiceDisable(s16 window, s16 choice) { +void HuWinChoiceDisable(s16 window, s16 choice) +{ WindowData *window_ptr = &winData[window]; window_ptr->choice_disable[choice] = 1; } -s16 HuWinChoiceNowGet(s16 window) { +s16 HuWinChoiceNowGet(s16 window) +{ WindowData *window_ptr = &winData[window]; if (window_ptr->stat == 3) { return window_ptr->choice; - } else { + } + else { return -1; } } -void HuWinMesWait(s16 window) { +void HuWinMesWait(s16 window) +{ WindowData *window_ptr = &winData[window]; - while(window_ptr->stat != 0) { + while (window_ptr->stat != 0) { HuPrcVSleep(); } } -s16 HuWinAnimSet(s16 window, AnimData *anim, s16 bank, float x, float y) { +s16 HuWinAnimSet(s16 window, AnimData *anim, s16 bank, float x, float y) +{ WindowData *window_ptr = &winData[window]; s16 sprite; - sprite = HuSprCreate(anim, window_ptr->prio-1, bank); + sprite = HuSprCreate(anim, window_ptr->prio - 1, bank); return HuWinSprSet(window, sprite, x, y); } -s16 HuWinSprSet(s16 window, s16 sprite, float x, float y) { +s16 HuWinSprSet(s16 window, s16 sprite, float x, float y) +{ WindowData *window_ptr = &winData[window]; HuSprGrp *group = &HuSprGrpData[window_ptr->group]; s16 i; - for (i=2; i<=9; i++) { + for (i = 2; i <= 9; i++) { if (window_ptr->sprite_id[i] == -1) { window_ptr->sprite_id[i] = sprite; HuSprGrpMemberSet(window_ptr->group, i, sprite); @@ -1385,38 +1453,43 @@ s16 HuWinSprSet(s16 window, s16 sprite, float x, float y) { return i; } -void HuWinSprPosSet(s16 window, s16 index, float x, float y) { +void HuWinSprPosSet(s16 window, s16 index, float x, float y) +{ WindowData *window_ptr = &winData[window]; HuSprGrp *group = &HuSprGrpData[window_ptr->group]; HuSprPosSet(window_ptr->group, index, x - group->center_x, y - group->center_y); } -void HuWinSprPriSet(s16 window, s16 index, s16 prio) { +void HuWinSprPriSet(s16 window, s16 index, s16 prio) +{ WindowData *window_ptr = &winData[window]; HuSprGrp *group = &HuSprGrpData[window_ptr->group]; HuSprPriSet(window_ptr->group, index, prio); } -s16 HuWinSprIDGet(s16 window, s16 index) { +s16 HuWinSprIDGet(s16 window, s16 index) +{ WindowData *window_ptr = &winData[window]; return window_ptr->sprite_id[index]; } -void HuWinSprKill(s16 window, s16 index) { +void HuWinSprKill(s16 window, s16 index) +{ WindowData *window_ptr = &winData[window]; HuSprGrpMemberKill(window_ptr->group, index); window_ptr->sprite_id[index] = -1; } -void HuWinDispOff(s16 window) { +void HuWinDispOff(s16 window) +{ WindowData *window_ptr = &winData[window]; s16 i; - for(i=0; i<30; i++) { + for (i = 0; i < 30; i++) { if (window_ptr->sprite_id[i] != -1) { HuSprAttrSet(window_ptr->group, i, HUSPR_ATTR_DISPOFF); } @@ -1424,11 +1497,12 @@ void HuWinDispOff(s16 window) { window_ptr->attr |= 8; } -void HuWinDispOn(s16 window) { +void HuWinDispOn(s16 window) +{ WindowData *window_ptr = &winData[window]; s16 i; - for (i=0; i<30; i++) { + for (i = 0; i < 30; i++) { if (window_ptr->sprite_id[i] != -1) { HuSprAttrReset(window_ptr->group, i, HUSPR_ATTR_DISPOFF); } @@ -1436,7 +1510,8 @@ void HuWinDispOn(s16 window) { window_ptr->attr = window_ptr->attr & ~8; } -void HuWinComKeyWait(s32 player_1, s32 player_2, s32 player_3, s32 player_4, s16 delay) { +void HuWinComKeyWait(s32 player_1, s32 player_2, s32 player_3, s32 player_4, s16 delay) +{ s32 wait_input_p4; s32 wait_input_p3; s32 wait_input_p2; @@ -1444,33 +1519,39 @@ void HuWinComKeyWait(s32 player_1, s32 player_2, s32 player_3, s32 player_4, s16 if (player_4 == -1) { wait_input_p4 = -1; - } else { + } + else { wait_input_p4 = 0; } if (player_3 == -1) { wait_input_p3 = -1; - } else { + } + else { wait_input_p3 = 0; } if (player_2 == -1) { wait_input_p2 = -1; - } else { + } + else { wait_input_p2 = 0; } if (player_1 == -1) { wait_input_p1 = -1; - } else { + } + else { wait_input_p1 = 0; } _HuWinComKeySet(wait_input_p1, wait_input_p2, wait_input_p3, wait_input_p4, delay); _HuWinComKeySet(player_1, player_2, player_3, player_4, 1); } -void HuWinComKeySet(s32 player_1, s32 player_2, s32 player_3, s32 player_4) { +void HuWinComKeySet(s32 player_1, s32 player_2, s32 player_3, s32 player_4) +{ _HuWinComKeySet(player_1, player_2, player_3, player_4, 1); } -void _HuWinComKeySet(s32 player_1, s32 player_2, s32 player_3, s32 player_4, s16 delay) { +void _HuWinComKeySet(s32 player_1, s32 player_2, s32 player_3, s32 player_4, s16 delay) +{ winComKeyBuf[comKeyIdx].player[0] = player_1; winComKeyBuf[comKeyIdx].player[1] = player_2; winComKeyBuf[comKeyIdx].player[2] = player_3; @@ -1480,25 +1561,29 @@ void _HuWinComKeySet(s32 player_1, s32 player_2, s32 player_3, s32 player_4, s16 comKeyIdx &= 0xFF; } -void HuWinComKeyGet(s16 window, u32 *data) { +void HuWinComKeyGet(s16 window, u32 *data) +{ WindowData *window_ptr = &winData[window]; s16 i; if (comKeyIdx == comKeyIdxNow) { - for (i=0; i<4; i++) { + for (i = 0; i < 4; i++) { if (!(window_ptr->player_disable & (1 << i))) { data[i] = HuPadDStkRep[i] | HuPadBtnDown[i]; - } else { + } + else { data[i] = 0; } } - } else { - for (i=0; i<4; i++) { + } + else { + for (i = 0; i < 4; i++) { data[i] = winComKeyBuf[comKeyIdxNow].player[i]; if (data[i] == 0xFFFFFFFF) { if (!(window_ptr->player_disable & (1 << i))) { data[i] = HuPadDStkRep[i] | HuPadBtnDown[i]; - } else { + } + else { data[i] = 0; } } @@ -1511,11 +1596,13 @@ void HuWinComKeyGet(s16 window, u32 *data) { } } -void HuWinComKeyReset(void) { +void HuWinComKeyReset(void) +{ comKeyIdx = comKeyIdxNow = 0; } -void HuWinMesMaxSizeGet(s16 mess_num, float *size, ...) { +void HuWinMesMaxSizeGet(s16 mess_num, float *size, ...) +{ s16 i; u32 mess; va_list list; @@ -1523,11 +1610,11 @@ void HuWinMesMaxSizeGet(s16 mess_num, float *size, ...) { winInsertF = 0; va_start(list, size); winMaxWidth = winMaxHeight = 0; - for(i=0; i 0x80000000) { from_messdata = 0; mess_data = (u8 *)mess; - } else { + } + else { from_messdata = 1; mess_data = mess_start = MessData_MesPtrGet(messDataPtr, mess); } @@ -1611,7 +1704,8 @@ static void GetMesMaxSizeSub(u32 mess) { if (mess_data[1] != 0) { char_h = 26; } - } else { + } + else { char_w = fontWidthP[16] + 1; } } @@ -1652,9 +1746,15 @@ static void GetMesMaxSizeSub(u32 mess) { char_w = mesWInsert[*mess_data - 1]; break; } +#if VERSION_NTSC if ((*mess_data != 255 && *mess_data >= 32) || *mess_data == 16) { cr_flag = 1; } +#else + if ((*mess_data != 255 && *mess_data >= 32) || *mess_data == 16 || mess_data[-1] == 31) { + cr_flag = 1; + } +#endif line_w += char_w; line_h += char_h; mess_data++; @@ -1667,7 +1767,8 @@ static void GetMesMaxSizeSub(u32 mess) { } } -static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) { +static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) +{ s32 sp8; u8 mess_finish; s16 mess_h; @@ -1690,14 +1791,14 @@ static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) { case 16: case 32: break; - + case 10: if (mess_end != 0 && !(window->attr & 0x100)) { char_w = 0; mess_finish = 1; } break; - + case 255: mess_w += char_w; /* fallthrough */ @@ -1707,7 +1808,7 @@ static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) { char_h = 0; mess_w = char_w = 0; break; - + case 28: case 30: mess++; @@ -1716,16 +1817,16 @@ static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) { case 29: char_w = 0; break; - + case 12: char_w = winTabSize * ((mess_w + winTabSize) / winTabSize) - mess_w; break; - + case 14: mess++; char_w = spcFontTbl[*mess - 1].w + 1; break; - + case 31: mess++; break; @@ -1740,13 +1841,15 @@ static s32 GetMesMaxSizeSub2(WindowData *window, u8 *mess_data) { return mess_w; } -s16 HuWinKeyWaitNumGet(u32 mess) { +s16 HuWinKeyWaitNumGet(u32 mess) +{ s16 wait_num; u8 *mess_data; if (mess > 0x80000000) { mess_data = (u8 *)mess; - } else { + } + else { mess_data = MessData_MesPtrGet(messDataPtr, mess); } for (wait_num = 0; *mess_data != 0; mess_data++) { @@ -1757,51 +1860,39 @@ s16 HuWinKeyWaitNumGet(u32 mess) { return wait_num; } -void HuWinPushKeySet(s16 window, s16 push_key) { +void HuWinPushKeySet(s16 window, s16 push_key) +{ WindowData *window_ptr = &winData[window]; window_ptr->push_key = push_key; } -void HuWinDisablePlayerSet(s16 window, u8 player) { +void HuWinDisablePlayerSet(s16 window, u8 player) +{ WindowData *window_ptr = &winData[window]; window_ptr->player_disable |= player; } -void HuWinDisablePlayerReset(s16 window, u8 player) { +void HuWinDisablePlayerReset(s16 window, u8 player) +{ WindowData *window_ptr = &winData[window]; window_ptr->player_disable &= ~(int)player; } -static s32 winPortraitTbl[] = { - WIN_TOAD_TALK_ANM, - WIN_BOBOMB_TALK_ANM, - WIN_SHYGUY_TALK_ANM, - WIN_BOO_TALK_ANM, - WIN_GOOMBA_TALK_ANM, - WIN_BOWSER_TALK_ANM, - WIN_KKID_TALK_ANM, - WIN_KOOPA_TALK_ANM, - WIN_CONDOR_TALK_ANM, - WIN_BOO_BLUE_TALK_ANM, - WIN_DOLPHIN_TALK_ANM, - WIN_BOO_RED_TALK_ANM, - WIN_THWOMP_TALK_ANM, - WIN_W01_HOST_TALK_ANM, - WIN_W02_HOST_TALK_ANM, - WIN_W03_HOST_TALK_ANM, - WIN_W04_HOST_TALK_ANM, - WIN_W05_HOST_TALK_ANM, - WIN_W06_HOST_TALK_ANM -}; +static s32 winPortraitTbl[] + = { WIN_TOAD_TALK_ANM, WIN_BOBOMB_TALK_ANM, WIN_SHYGUY_TALK_ANM, WIN_BOO_TALK_ANM, WIN_GOOMBA_TALK_ANM, WIN_BOWSER_TALK_ANM, WIN_KKID_TALK_ANM, + WIN_KOOPA_TALK_ANM, WIN_CONDOR_TALK_ANM, WIN_BOO_BLUE_TALK_ANM, WIN_DOLPHIN_TALK_ANM, WIN_BOO_RED_TALK_ANM, WIN_THWOMP_TALK_ANM, + WIN_W01_HOST_TALK_ANM, WIN_W02_HOST_TALK_ANM, WIN_W03_HOST_TALK_ANM, WIN_W04_HOST_TALK_ANM, WIN_W05_HOST_TALK_ANM, WIN_W06_HOST_TALK_ANM }; -s16 HuWinExCreate(float x, float y, s16 w, s16 h, s16 portrait) { +s16 HuWinExCreate(float x, float y, s16 w, s16 h, s16 portrait) +{ return HuWinExCreateStyled(x, y, w, h, portrait, 0); } -static void HuWinExCreatePortrait(s16 window, s16 portrait, float x, float y) { +static void HuWinExCreatePortrait(s16 window, s16 portrait, float x, float y) +{ s16 sprite; AnimData *anim; WindowData *window_ptr; @@ -1814,12 +1905,13 @@ static void HuWinExCreatePortrait(s16 window, s16 portrait, float x, float y) { HuWinSprSet(window, sprite, x, y); } -s16 HuWinExCreateStyled(float x, float y, s16 w, s16 h, s16 portrait, s16 frame) { +s16 HuWinExCreateStyled(float x, float y, s16 w, s16 h, s16 portrait, s16 frame) +{ WindowData *window_ptr; s16 window; if (portrait >= 0) { - h = (h < 0x54) ? 0x54 : h; + h = (h < 84) ? 84 : h; } window = HuWinCreate(x, y, w, h, frame); window_ptr = &winData[window]; @@ -1833,7 +1925,8 @@ s16 HuWinExCreateStyled(float x, float y, s16 w, s16 h, s16 portrait, s16 frame) return window; } -void HuWinExAnimIn(s16 window) { +void HuWinExAnimIn(s16 window) +{ WindowData *window_ptr = &winData[window]; s16 i; @@ -1841,19 +1934,21 @@ void HuWinExAnimIn(s16 window) { if (window_ptr->sprite_id[2] == -1) { HuSprScaleSet(window_ptr->group, 0, 1.0f, 0.0f); HuWinDispOn(window); - for (i=0; i<=10; i++) { + for (i = 0; i <= 10; i++) { HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0 - 1.1 * cosd(9.0f * i)); HuPrcVSleep(); } HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0f); - } else { + } + else { HuSprScaleSet(window_ptr->group, 0, 1.0f, 0.0f); HuSprScaleSet(window_ptr->group, 2, 1.0f, 0.0f); HuWinDispOn(window); - for (i=0; i<=20; i++) { + for (i = 0; i <= 20; i++) { if (i <= 10) { HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.1 * (1.0 - cosd(9.0f * i))); - } else { + } + else { HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0f); } if (i > 10) { @@ -1866,19 +1961,21 @@ void HuWinExAnimIn(s16 window) { } } -void HuWinExAnimOut(s16 window) { +void HuWinExAnimOut(s16 window) +{ WindowData *window_ptr = &winData[window]; s16 i; _HuWinHomeClear(window_ptr); if (window_ptr->sprite_id[2] == -1) { - for (i=0; i<=10; i++) { + for (i = 0; i <= 10; i++) { HuSprScaleSet(window_ptr->group, 0, 1.0f, cosd(9.0f * i)); HuPrcVSleep(); } HuWinDispOff(window); - } else { - for (i=0; i<=15; i++) { + } + else { + for (i = 0; i <= 15; i++) { if (i <= 10) { HuSprScaleSet(window_ptr->group, 2, 1.0f, cosd(9.0f * i)); } @@ -1892,21 +1989,23 @@ void HuWinExAnimOut(s16 window) { } } -void HuWinExCleanup(s16 window) { +void HuWinExCleanup(s16 window) +{ HuWinKill(window); } -void HuWinExAnimPopIn(s16 window, s16 portrait) { +void HuWinExAnimPopIn(s16 window, s16 portrait) +{ WindowData *window_ptr = &winData[window]; s16 i; - for (i=0; i<=10; i++) { + for (i = 0; i <= 10; i++) { HuSprScaleSet(window_ptr->group, 2, 1.0f, cosd(9.0f * i)); HuPrcVSleep(); } HuWinSprKill(window, 2); HuWinExCreatePortrait(window, portrait, 48.0f, 48.0f); - for (i=0; i<=10; i++) { + for (i = 0; i <= 10; i++) { HuSprScaleSet(window_ptr->group, 2, 1.0f, sind(9.0f * i)); HuPrcVSleep(); } diff --git a/src/game/wipe.c b/src/game/wipe.c index f2429aa3..aa7c1d9a 100644 --- a/src/game/wipe.c +++ b/src/game/wipe.c @@ -3,6 +3,7 @@ #include "game/memory.h" #include "game/flag.h" #include "game/board/tutorial.h" +#include "version.h" s16 HuSysVWaitGet(s16 old); @@ -141,6 +142,11 @@ void WipeCreate(s16 mode, s16 type, s16 duration) void WipeColorSet(u8 r, u8 g, u8 b) { + #if VERSION_PAL + if(r > 160 && g > 160 && b > 160) { + r = g = b = 160; + } + #endif wipeData.color.r = r; wipeData.color.g = g; wipeData.color.b = b; @@ -324,4 +330,4 @@ static void WipeFrameStill(GXColor color) GXTexCoord2f32(0, 1); GXEnd(); GXSetChanMatColor(GX_COLOR0A0, colorN); -} \ No newline at end of file +} diff --git a/src/libhu/setvf.c b/src/libhu/setvf.c new file mode 100644 index 00000000..d8381bf7 --- /dev/null +++ b/src/libhu/setvf.c @@ -0,0 +1,7 @@ +#include "dolphin.h" + +void HuSetVecF(Vec* arg0, f32 arg8, f32 arg9, f32 argA) { + arg0->x = arg8; + arg0->y = arg9; + arg0->z = argA; +} \ No newline at end of file diff --git a/src/libhu/subvf.c b/src/libhu/subvf.c new file mode 100644 index 00000000..fc245a99 --- /dev/null +++ b/src/libhu/subvf.c @@ -0,0 +1,7 @@ +#include "dolphin.h" + +void HuSubVecF(Vec* out, Vec* in, Vec* sub) { + out->x = in->x - sub->x; + out->y = in->y - sub->y; + out->z = in->z - sub->z; +} \ No newline at end of file diff --git a/src/msm/msmfio.c b/src/msm/msmfio.c index 581cb3a1..00adc985 100644 --- a/src/msm/msmfio.c +++ b/src/msm/msmfio.c @@ -1,43 +1,41 @@ -#include "dolphin.h" - -struct msmFio { - BOOL (*open)(s32, DVDFileInfo *); - BOOL (*read)(DVDFileInfo *, void *, s32, s32, s32); - BOOL (*close)(DVDFileInfo *); -}; +#include "msm/msmfio.h" +#include "game/msm.h" static struct msmFio fio; BOOL msmFioClose(DVDFileInfo *fileInfo) { - return fio.close(fileInfo); + return fio.close(fileInfo); } BOOL msmFioRead(DVDFileInfo *fileInfo, void *addr, s32 length, s32 offset) { - return fio.read(fileInfo, addr, length, offset, 2); + return fio.read(fileInfo, addr, length, offset, 2); } BOOL msmFioOpen(s32 entrynum, DVDFileInfo *fileInfo) { - return fio.open(entrynum, fileInfo); + return fio.open(entrynum, fileInfo); } -void msmFioInit(void *open, void *read, void *close) +void msmFioInit(MSM_OPEN open, MSM_READ read, MSM_CLOSE close) { - if(open) { - fio.open = open; - } else { - fio.open = DVDFastOpen; - } - if(read) { - fio.read = read; - } else { - fio.read = DVDReadPrio; - } - if(close) { - fio.close = close; - } else { - fio.close = DVDClose; - } -} \ No newline at end of file + if (open) { + fio.open = open; + } + else { + fio.open = DVDFastOpen; + } + if (read) { + fio.read = read; + } + else { + fio.read = DVDReadPrio; + } + if (close) { + fio.close = close; + } + else { + fio.close = DVDClose; + } +} diff --git a/src/msm/msmmem.c b/src/msm/msmmem.c index b89434a0..1a587589 100644 --- a/src/msm/msmmem.c +++ b/src/msm/msmmem.c @@ -1,136 +1,132 @@ #include "msm/msmmem.h" -typedef struct _unkStruct { - struct _unkStruct* prev; - struct _unkStruct* next; - u32 unk8; - u32 unkC; - void* unk10; - void* unk14; - char unk18[0x8]; -} unkStruct; +typedef struct MSMBlock_s { + struct MSMBlock_s* prev; + struct MSMBlock_s* next; + u32 freeSize; + u32 size; + void* ptr; + char pad[12]; +} MSMBLOCK; -typedef struct _unkMemStruct { - unkStruct* unk0; - u32 unk4; - unkStruct* unk8; - unkStruct unkC; -} unkMemStruct; +typedef struct MSMMem_s { + void *ptr; + u32 size; + MSMBLOCK *head; + MSMBLOCK first; +} MSM_MEM; -static unkMemStruct mem; +static MSM_MEM mem; -void msmMemFree(void* arg0) { - unkStruct* temp_r6; - unkStruct* temp_r7; - unkStruct* temp_r8; - unkStruct* temp_r5; - unkStruct* temp; +void msmMemFree(void* ptr) { + MSMBLOCK* block; + MSMBLOCK* blockPrev; + MSMBLOCK* blockNext; + MSMBLOCK* blockHead; + MSMBLOCK* base; - temp = arg0; + base = ptr; - temp_r6 = &temp[-1]; - temp_r7 = temp_r6->prev; - temp_r8 = temp_r6->next; - if (mem.unk0 > temp_r6 || ((u32)mem.unk0 + (u32)mem.unk4) <= (u32)temp_r6) { + block = &base[-1]; + blockPrev = block->prev; + blockNext = block->next; + if (mem.ptr > block || ((u32)mem.ptr + (u32)mem.size) <= (u32)block) { return; } - if ((temp_r7->next != temp_r6) || (temp_r6->unk10 != arg0) || (temp_r8 && (temp_r8->prev != temp_r6))) { + if ((blockPrev->next != block) || (block->ptr != ptr) || (blockNext && (blockNext->prev != block))) { return; } - temp_r7->unkC += temp_r6->unk8 + temp_r6->unkC; - temp_r7->next = temp_r8; - temp_r5 = mem.unk8; - if ((temp_r5 == temp_r6) || (temp_r5->unkC < temp_r7->unkC)) { - mem.unk8 = temp_r7; + blockPrev->size += block->freeSize + block->size; + blockPrev->next = blockNext; + blockHead = mem.head; + if ((blockHead == block) || (blockHead->size < blockPrev->size)) { + mem.head = blockPrev; } - if (temp_r8) { - temp_r8->prev = temp_r7; - if (mem.unk8->unkC < temp_r8->unkC) { - mem.unk8 = temp_r8; + if (blockNext) { + blockNext->prev = blockPrev; + if (mem.head->size < blockNext->size) { + mem.head = blockNext; } } } -void* msmMemAlloc(s32 arg0) { - unkMemStruct* memC; - s32 temp_r0; - u32 var_r5; - u32 var_r7; - unkStruct* temp_r5; - unkStruct* var_r8; - unkStruct* temp_r9; - unkStruct* temp_r6; - unkStruct* temp_r4; +void* msmMemAlloc(u32 size) { + s32 alignOfs; + u32 freeSize; + u32 allocSize; + MSMBLOCK* block; + MSMBLOCK* blockPrev; + MSMBLOCK* blockNext; - var_r7 = arg0 + 0x20; - temp_r0 = var_r7 & 0x1F; - if (temp_r0 != 0) { - var_r7 += 0x20 - temp_r0; + allocSize = size + 0x20; + alignOfs = allocSize & 0x1F; + if (alignOfs) { + allocSize += 0x20 - alignOfs; } - if (mem.unk8->unkC >= var_r7) { - var_r8 = mem.unk8; + if (mem.head->size >= allocSize) { + blockPrev = mem.head; } else { - var_r8 = &mem.unkC; + blockPrev = &mem.first; do { - if (var_r8->unkC >= var_r7) break; - var_r8 = var_r8->next; - } while (var_r8); - if (!var_r8) { + if (blockPrev->size >= allocSize) break; + blockPrev = blockPrev->next; + } while (blockPrev); + if (!blockPrev) { return NULL; } } - var_r5 = var_r8->unk8; - if (var_r5 != 0) { - var_r5 -= 0x20; + freeSize = blockPrev->freeSize; + if (freeSize != 0) { + freeSize -= 0x20; } - temp_r5 = (void*)((u32)var_r8->unk10 + var_r5); - temp_r9 = var_r8->next; - if ((mem.unk0 > temp_r5) || ((void*)((u32)mem.unk0 + (u32)mem.unk4) <= temp_r5)) { + block = (void*)((u32)blockPrev->ptr + (freeSize)); + blockNext = blockPrev->next; + if ((mem.ptr > block) || ((void*)((u32)mem.ptr + (u32)mem.size) <= block)) { return NULL; } - temp_r5->unk8 = var_r7; - temp_r5->unkC = var_r8->unkC - var_r7; - temp_r5->unk10 = (temp_r5 + 1); - temp_r5->prev = var_r8; - temp_r5->next = temp_r9; - mem.unk8 = temp_r5; - var_r8->unkC = 0; - var_r8->next = temp_r5; - if (temp_r9) { - temp_r9->prev = temp_r5; - if (mem.unk8->unkC < temp_r9->unkC) { - mem.unk8 = temp_r9; + block->freeSize = allocSize; + block->size = blockPrev->size - allocSize; + block->ptr = (block + 1); + block->prev = blockPrev; + block->next = blockNext; + mem.head = block; + blockPrev->size = 0; + blockPrev->next = block; + if (blockNext) { + blockNext->prev = block; + if (mem.head->size < blockNext->size) { + mem.head = blockNext; } } - return temp_r5->unk10; + return block->ptr; } -void msmMemInit(void* arg0, u32 arg1) { - unkStruct* temp_r7; - s32 temp; +void msmMemInit(void* ptr, u32 size) { + MSMBLOCK* block; + s32 ofs; - temp = (s32)arg0 & 0x1F; - switch (temp) { + ofs = (s32)ptr & 0x1F; + switch (ofs) { default: - temp = 0x20 - temp; + ofs = 0x20 - ofs; break; case 0: - temp = 0; + ofs = 0; break; } - mem.unk0 = (void*)((s32)arg0 + temp); - temp = (s32)arg0 + arg1; - mem.unk4 = ((temp - (s32)mem.unk0) & ~0x1F); - temp_r7 = &mem.unkC; - temp_r7->unk8 = 0; - temp_r7->unkC = mem.unk4; - temp_r7->unk10 = mem.unk0; - temp_r7->prev = NULL; - temp_r7->next = NULL; - mem.unk8 = &mem.unkC; -} \ No newline at end of file + mem.ptr = (void*)((s32)ptr + ofs); + ofs = (s32)ptr + size; + mem.size = ((ofs - (s32)mem.ptr) & ~0x1F); + block = &mem.first; + block->freeSize = 0; + block->size = mem.size; + block->ptr = mem.ptr; + block->prev = NULL; + block->next = NULL; + mem.head = &mem.first; +} diff --git a/src/msm/msmmus.c b/src/msm/msmmus.c new file mode 100755 index 00000000..061da27a --- /dev/null +++ b/src/msm/msmmus.c @@ -0,0 +1,443 @@ +#include "msm/msmmus.h" +#include "msm/msmmem.h" + +typedef struct MusPlayer_s { + /* 0x00 */ s16 musId; + /* 0x02 */ s8 baseVol; + /* 0x03 */ s8 vol; + /* 0x04 */ s8 status; + /* 0x05 */ s8 busyF; + /* 0x08 */ SND_SEQID seqId; + /* 0x0C */ void* songBuf; + /* 0x10 */ void* arrfile; + /* 0x14 */ volatile s32 fadeMaxTime; + /* 0x18 */ s32 fadeTime; + /* 0x1C */ s8 fadeVol; + /* 0x20 */ volatile s32 pauseOnMaxTime; + /* 0x24 */ s32 pauseOnTime; + /* 0x28 */ s8 pauseOnVol; + /* 0x2C */ volatile s32 pauseOffMaxTime; + /* 0x30 */ s32 pauseOffTime; + /* 0x28 */ s8 pauseOffVol; + /* 0x35 */ volatile s8 startVol; + /* 0x36 */ s8 targetVol; + /* 0x38 */ SND_PLAYPARA playPara; +} MUS_PLAYER; // Size 0x58 + +static struct { + /* 0x000 */ s16 musMax; + /* 0x002 */ s8 musChanMax; + /* 0x003 */ s8 baseGrpNumPlay; + /* 0x004 */ s8 numPlay; + /* 0x008 */ s32 msmEntryNum; + /* 0x00C */ MSM_MUS *musData; + /* 0x010 */ s32 dummyMusOfs; + /* 0x014 */ void* musBuf; + /* 0x018 */ MUS_PLAYER player[4]; +} mus; + +static void msmMusPauseSub(MUS_PLAYER* player, BOOL pause, s32 speed) { + s32 time; + + time = speed / 15; + if (pause) { + if (player->status == MSM_MUS_PLAY) { + if (time != 0) { + player->pauseOnTime = time; + player->pauseOnMaxTime = time; + player->pauseOnVol = 127; + } else { + sndSeqPause(player->seqId); + player->pauseOnVol = 0; + } + player->status = MSM_MUS_PAUSE; + } + } else { + if (player->status == MSM_MUS_PAUSE) { + if (time != 0) { + if (player->pauseOnMaxTime != 0) { + player->pauseOnMaxTime = -time; + } else { + sndSeqContinue(player->seqId); + player->pauseOnMaxTime = -time; + player->pauseOnTime = 0; + player->pauseOnVol = 0; + } + } else { + sndSeqContinue(player->seqId); + player->pauseOnVol = 127; + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } + player->status = MSM_MUS_PLAY; + } + } +} + +static void msmMusPauseFade(MUS_PLAYER *player) { + if (player->pauseOnMaxTime > 0) { + if (--player->pauseOnTime == 0) { + player->pauseOnMaxTime = 0; + player->pauseOnVol = 0; + sndSeqPause(player->seqId); + } else { + player->pauseOnVol = player->pauseOnTime * 127 / player->pauseOnMaxTime; + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } + } else if (player->pauseOnMaxTime < 0) { + if (++player->pauseOnTime >= -player->pauseOnMaxTime) { + player->pauseOnMaxTime = 0; + player->pauseOnVol = 127; + } else { + player->pauseOnVol = player->pauseOnTime * 127 / -player->pauseOnMaxTime; + } + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } +} + +static void msmMusFade(MUS_PLAYER *player) { + if (player->status != MSM_MUS_PLAY) { + return; + } + if (player->fadeMaxTime > 0) { + if (--player->fadeTime == 0) { + if (player->status != 0) { + player->fadeMaxTime = 0; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + sndSeqStop(player->seqId); + player->status = 1; + } + } + } else { + player->fadeVol = player->fadeTime * 127 / player->fadeMaxTime; + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } + } else if (player->fadeMaxTime < 0) { + if (++player->fadeTime >= -player->fadeMaxTime) { + player->fadeMaxTime = 0; + player->fadeVol = 127; + } else { + player->fadeVol = player->fadeTime * 127 / -player->fadeMaxTime; + } + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } +} + +void msmMusFdoutEnd(void) { +} + +void msmMusPeriodicProc(void) { + s32 i; + MUS_PLAYER* player; + + mus.numPlay = mus.baseGrpNumPlay = 0; + for (i = 0; i < mus.musChanMax; i++) { + player = &mus.player[i]; + if (player->busyF != FALSE) { + continue; + } + switch (player->status) { + case MSM_MUS_STOP: + case MSM_MUS_PLAY: + if (sndSeqGetValid(player->seqId) == FALSE) { + player->status = 0; + } + break; + } + if (player->status == MSM_MUS_DONE) { + continue; + } + if (msmSysCheckBaseGroup(mus.musData[player->musId].sgid) != 0) { + mus.numPlay++; + } else { + mus.baseGrpNumPlay++; + } + msmMusPauseFade(player); + if (player->status == MSM_MUS_PLAY && player->pauseOffMaxTime != 0) { + if (++player->pauseOffTime >= player->pauseOffMaxTime) { + player->pauseOffMaxTime = 0; + player->baseVol = player->targetVol; + } else { + player->baseVol = player->startVol + player->pauseOffTime * (player->targetVol - player->startVol) / player->pauseOffMaxTime; + } + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } + msmMusFade(player); + } +} + +s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl) { + MUS_PLAYER *player; + + if (musNo < 0 || musNo >= mus.musChanMax) { + return MSM_ERR_OUTOFMUS; + } + player = &mus.player[musNo]; + if (sndSeqGetValid(player->seqId) == TRUE) { + return sndSeqGetMidiCtrl(player->seqId, channel & 0xF, ctrl); + } + return 0; +} + +s32 msmMusGetNumPlay(BOOL baseGrp) { + switch (baseGrp) { + case FALSE: + return mus.baseGrpNumPlay + mus.numPlay; + default: + return mus.baseGrpNumPlay; + } +} + +s32 msmMusGetStatus(int musNo) { + if (musNo < 0 || musNo >= mus.musChanMax) { + return MSM_ERR_OUTOFMUS; + } + return mus.player[musNo].status; +} + +void msmMusSetMasterVolume(s32 vol) { + sndMasterVolume(vol & 127, 0, 1, 0); +} + +s32 msmMusSetParam(s32 musNo, MSM_MUSPARAM *param) { + MUS_PLAYER* player; + + if (musNo < 0 || musNo >= mus.musChanMax) { + return MSM_ERR_OUTOFMUS; + } + player = &mus.player[musNo]; + if (param->flag & MSM_MUSPARAM_VOL) { + player->pauseOffMaxTime = param->fadeSpeed / 15; + if (player->pauseOffMaxTime != 0) { + player->busyF = 1; + player->pauseOffTime = 0; + player->startVol = player->baseVol; + player->targetVol = param->vol & 127; + player->busyF = 0; + } else { + player->baseVol = param->vol & 127; + sndSeqVolume(player->baseVol * player->vol * player->fadeVol * player->pauseOnVol / (127*127*127), 0, player->seqId, 0); + } + } + if (param->flag & MSM_MUSPARAM_SPEED) { + sndSeqSpeed(player->seqId, (param->speed << 8) / 100); + } + return 0; +} + +void msmMusPauseAll(BOOL pause, s32 speed) { + s32 var_r27; + MUS_PLAYER* player; + + for (var_r27 = 0; var_r27 < mus.musChanMax; var_r27++) { + player = &mus.player[var_r27]; + if (player->status != MSM_MUS_DONE) { + player->busyF = TRUE; + msmMusPauseSub(player, pause, speed); + player->busyF = FALSE; + } + } +} + +s32 msmMusPause(int musNo, BOOL pause, s32 speed) { + MUS_PLAYER *player; + + if (musNo < 0 || musNo >= mus.musChanMax) { + return MSM_ERR_OUTOFMUS; + } + player = &mus.player[musNo]; + player->busyF = TRUE; + msmMusPauseSub(player, pause, speed); + player->busyF = FALSE; + return 0; +} + +void msmMusStopAll(BOOL checkGrp, s32 speed) { + s32 i; + MUS_PLAYER *player; + + for (i = 0; i < mus.musChanMax; i++) { + player = &mus.player[i]; + if (player->status == 0) { + continue; + } + player->busyF = TRUE; + switch (checkGrp) { + case FALSE: + if (player->status != 0) { + player->fadeMaxTime = speed / 15; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + sndSeqStop(player->seqId); + player->status = 1; + } + } + break; + default: + if (msmSysCheckBaseGroup(mus.musData[player->musId].sgid) == 0 && player->status != 0) { + player->fadeMaxTime = speed / 15; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + sndSeqStop(player->seqId); + player->status = 1; + } + } + break; + } + player->busyF = FALSE; + } +} + +s32 msmMusStop(int musNo, s32 speed) { + MUS_PLAYER* player; + + if (musNo < 0 || musNo >= mus.musChanMax) { + return MSM_ERR_OUTOFMUS; + } + player = &mus.player[musNo]; + player->busyF = TRUE; + if (player->status != 0) { + player->fadeMaxTime = speed / 15; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + sndSeqStop(player->seqId); + player->status = MSM_MUS_STOP; + } + } + player->busyF = FALSE; + return 0; +} + +int msmMusPlay(int musId, MSM_MUSPARAM* musParam) { + s32 var_r30; + int var_r29; + s32 temp_r3_3; + MSM_GRP_HEAD* temp_r3_2; + MSM_MUS* temp_r28; + MUS_PLAYER* temp_r27; + DVDFileInfo sp10; + + if (musId < 0 || musId >= mus.musMax) { + return MSM_ERR_INVALIDID; + } + temp_r28 = &mus.musData[musId]; + if (temp_r28->sgid == 0xFFFF) { + return MSM_ERR_REMOVEDID; + } + if (msmSysCheckLoadGroupID(temp_r28->sgid) == 0) { + return MSM_ERR_GRP_NOTLOADED; + } + var_r30 = (musParam != NULL) ? musParam->flag : 0; + var_r29 = (var_r30 & MSM_MUSPARAM_CHAN) ? musParam->chan : 0; + if (var_r29 < 0 || var_r29 >= mus.musChanMax) { + return MSM_ERR_OUTOFMUS; + } + temp_r27 = &mus.player[var_r29]; + if (temp_r27->status != 0) { + sndSeqStop(temp_r27->seqId); + } + if (temp_r28->songGrp < 0) { + if (temp_r27->musId != musId) { + if (msmFioOpen(mus.msmEntryNum, &sp10) != 1) { + return MSM_ERR_OPENFAIL; + } + if (msmFioRead(&sp10, temp_r27->songBuf, temp_r28->songSize, temp_r28->songOfs + mus.dummyMusOfs) < 0) { + msmFioClose(&sp10); + return MSM_ERR_READFAIL; + } + msmFioClose(&sp10); + temp_r27->arrfile = temp_r27->songBuf; + } + } else { + temp_r3_2 = msmSysGetGroupDataPtr(temp_r28->songGrp); + if (temp_r3_2 == NULL) { + return MSM_ERR_MUSGRP_NOTLOADED; + } + temp_r27->arrfile = (void*) ((u32) temp_r3_2 + temp_r3_2->sngOfs + temp_r28->songOfs); + } + temp_r27->busyF = 1; + temp_r27->vol = temp_r28->vol; + temp_r27->pauseOffMaxTime = 0; + temp_r27->pauseOnMaxTime = 0; + temp_r27->fadeMaxTime = 0; + temp_r27->pauseOnVol = 127; + temp_r27->fadeVol = 127; + temp_r27->playPara.flags = 4; + temp_r27->playPara.volume.time = 0; + temp_r27->baseVol = (var_r30 & MSM_MUSPARAM_VOL) ? musParam->vol : 127; + temp_r27->playPara.volume.target = temp_r27->vol * temp_r27->fadeVol * temp_r27->baseVol / 16129; + if (var_r30 & MSM_MUSPARAM_PAUSE) { + temp_r27->playPara.flags |= 0x10; + } + if (var_r30 & MSM_MUSPARAM_SPEED) { + temp_r27->playPara.flags |= 2; + temp_r27->playPara.speed = musParam->speed * 256 / 100; + } + if (var_r30 & MSM_MUSPARAM_FADESPEED) { + temp_r27->fadeMaxTime = -(musParam->fadeSpeed / 15); + if (temp_r27->fadeMaxTime != 0) { + temp_r27->fadeTime = 0; + temp_r27->fadeVol = 0; + temp_r27->playPara.volume.target = 0; + } + } + temp_r3_3 = sndSeqPlay(temp_r28->sgid, temp_r28->sid, temp_r27->arrfile, &temp_r27->playPara); + if (temp_r3_3 == SND_ID_ERROR) { + temp_r27->busyF = 0; + return MSM_ERR_PLAYFAIL; + } + temp_r27->seqId = temp_r3_3; + temp_r27->musId = musId; + temp_r27->status = (temp_r27->playPara.flags & 0x10) ? 3 : 2; + temp_r27->busyF = 0; + return var_r29; +} + +s32 msmMusInit(MSM_SYS* arg0, DVDFileInfo* arg1) { + s32 temp_r4; + s32 var_r8; + + mus.musMax = 0; + mus.musChanMax = 0; + mus.numPlay = 0; + mus.baseGrpNumPlay = 0; + if (arg0->info->musMax == 0) { + return 0; + } + temp_r4 = arg0->header->musSize; + if (temp_r4 == 0) { + return 0; + } + if ((mus.musData = msmMemAlloc(temp_r4)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(arg1, mus.musData, arg0->header->musSize, arg0->header->musOfs) < 0) { + return MSM_ERR_READFAIL; + } + temp_r4 = arg0->info->dummyMusSize; + if (temp_r4 != 0) { + if ((mus.musBuf = msmMemAlloc(temp_r4 * arg0->info->musChanMax)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + } else { + mus.musBuf = NULL; + } + mus.musMax = arg0->info->musMax; + mus.musChanMax = arg0->info->musChanMax; + mus.dummyMusOfs = arg0->header->dummyMusOfs; + mus.msmEntryNum = arg0->msmEntryNum; + for (var_r8 = 0; var_r8 < mus.musChanMax; var_r8++) { + mus.player[var_r8].songBuf = (void*) ((u32) mus.musBuf + arg0->info->dummyMusSize * var_r8); + mus.player[var_r8].musId = -1; + mus.player[var_r8].busyF = 0; + } + return 0; +} diff --git a/src/msm/msmse.c b/src/msm/msmse.c new file mode 100755 index 00000000..cbacf34c --- /dev/null +++ b/src/msm/msmse.c @@ -0,0 +1,638 @@ +#include "msm/msmse.h" +#include "msm/msmfio.h" +#include "msm/msmmem.h" + +#define SE_PLAYER_EMIT (1 << 0) + +typedef struct SePlayer_s { + SND_VOICEID vid; + s32 no; + s16 seId; + s8 status; + s8 busyF; + s8 vol; + s8 pan; + s16 pitch; + s8 span; + s8 auxAVol; + s8 auxBVol; + u8 flag; + SND_PARAMETER_INFO paramInfo; + SND_PARAMETER param[5]; + s8 baseVol; + s8 basePan; + s16 basePitch; + volatile s32 fadeMaxTime; + s32 fadeTime; + s8 fadeVol; + volatile s32 pauseMaxTime; + s32 pauseTime; + s8 pauseVol; + SND_EMITTER emitter; + SND_FVECTOR emiPos; + SND_FVECTOR emiDir; + s8 emitterF; +} SE_PLAYER; + +static struct { + s32 seMax; + s8 sfx; + s8 baseGrpNumPlay; + s8 numPlay; + s32 no; + MSM_SE *seData; + SE_PLAYER *player; + SND_LISTENER listener; + SND_FVECTOR listenerPos; + SND_FVECTOR listenerDir; + SND_FVECTOR listenerHeading; + SND_FVECTOR listenerUp; + float sndDist; + u16 groupId; + u16 listenerF; +} se; + +static void msmSeFade(SE_PLAYER *player) { + u8 vol; + + if (player->status == MSM_SE_PAUSEOUT) { + return; + } + if (player->fadeMaxTime > 0) { + if (--player->fadeTime == 0) { + player->fadeMaxTime = 0; + player->fadeMaxTime = 0; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + player->status = 1; + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + sndRemoveEmitter(&player->emitter); + } else { + sndFXKeyOff(player->vid); + } + } + } else { + player->fadeVol = player->fadeTime * 127 / player->fadeMaxTime; + vol = player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127); + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + player->emiDir.x = player->emiDir.y = player->emiDir.z = 0.0f; + sndUpdateEmitter(&player->emitter, &player->emiPos, &player->emiDir, vol, NULL); + } else { + sndFXVolume(player->vid, vol); + } + } + } else if (player->fadeMaxTime < 0) { + if (++player->fadeTime >= -player->fadeMaxTime) { + player->fadeMaxTime = 0; + player->fadeVol = 127; + } else { + player->fadeVol = player->fadeTime * 127 / -player->fadeMaxTime; + } + vol = player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127); + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == 1) { + player->emiDir.x = player->emiDir.y = player->emiDir.z = 0.0f; + sndUpdateEmitter(&player->emitter, &player->emiPos, &player->emiDir, vol, NULL); + } else { + sndFXVolume(player->vid, vol); + } + } +} + +static void msmSePauseSub(SE_PLAYER* player, BOOL pause, s32 speed) { + s32 time; + + time = speed / 15; + if (pause) { + if (player->status == MSM_SE_PAUSEIN) { + if (time != 0) { + player->pauseMaxTime = player->pauseTime = time; + player->pauseVol = 127; + } else { + player->pauseVol = 0; + sndFXVolume(player->vid, player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127)); + } + player->status = MSM_SE_PAUSEOUT; + } + } else { + if (player->status == MSM_SE_PAUSEOUT) { + if (time != 0) { + if (player->pauseMaxTime != 0) { + player->pauseMaxTime = -time; + } else { + player->pauseMaxTime = -time; + player->pauseTime = 0; + player->pauseVol = 0; + } + } else { + player->pauseVol = 127; + sndFXVolume(player->vid, player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127)); + } + player->status = MSM_SE_PAUSEIN; + } + } +} + +static SE_PLAYER* msmSeSearchEntry(s32 seNo) { + SE_PLAYER *player; + s32 i; + + for (i = 0; i < se.sfx; i++) { + player = &se.player[i]; + if (player->status != MSM_SE_DONE && player->no == seNo) { + return player; + } + } + return NULL; +} + +void msmSePeriodicProc(void) { + s32 i; + SE_PLAYER* player; + u8 vol; + + se.baseGrpNumPlay = se.numPlay = 0; + for (i = 0; i < se.sfx; i++) { + player = &se.player[i]; + if (player->busyF != 0) { + continue; + } + switch (player->status) { + case MSM_SE_PLAY: + case MSM_SE_PAUSEIN: + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + if (!sndCheckEmitter(&player->emitter)) { + player->status = 0; + } + } else { + if (sndFXCheck(player->vid) == SND_ID_ERROR) { + player->status = 0; + } + } + break; + } + if (player->status == 0) { + continue; + } + if (msmSysCheckBaseGroup(se.seData[player->seId].gid) != 0) { + se.baseGrpNumPlay++; + } else { + se.numPlay++; + } + if (player->pauseMaxTime > 0) { + if (--player->pauseTime == 0) { + player->pauseMaxTime = 0; + player->pauseVol = 0; + } else { + player->pauseVol = player->pauseTime * 127 / player->pauseMaxTime; + } + } else if (player->pauseMaxTime < 0) { + if (++player->pauseTime >= -player->pauseMaxTime) { + player->pauseMaxTime = 0; + player->pauseVol = 127; + } else { + player->pauseVol = player->pauseTime * 127 / -player->pauseMaxTime; + } + } + vol = player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127); + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + player->emiDir.x = player->emiDir.y = player->emiDir.z = 0.0f; + sndUpdateEmitter(&player->emitter, &player->emiPos, &player->emiDir, vol, NULL); + } else { + sndFXVolume(player->vid, vol); + } + msmSeFade(player); + } +} + +MSM_SE* msmSeGetIndexPtr(s32 seId) { + if (seId < 0 || seId >= se.seMax) { + return NULL; + } + return &se.seData[seId]; +} + +void msmSeDelListener(void) { + if (se.listenerF != 0) { + sndRemoveListener(&se.listener); + se.listenerF = 0; + } +} + +s32 msmSeUpdataListener(Vec* pos, Vec* heading) { + if (se.listenerF == 0) { + return MSM_LISTENER_NO_UPDATA; + } + se.listenerDir.x = pos->x - se.listenerPos.x; + se.listenerDir.y = pos->y - se.listenerPos.y; + se.listenerDir.z = pos->z - se.listenerPos.z; + se.listenerPos.x = pos->x; + se.listenerPos.y = pos->y; + se.listenerPos.z = pos->z; + se.listenerHeading.x = heading->x; + se.listenerHeading.y = heading->y; + se.listenerHeading.z = heading->z; + if (!sndUpdateListener(&se.listener, &se.listenerPos, &se.listenerDir, &se.listenerHeading, &se.listenerUp, 127, NULL)) { + return MSM_LISTENER_NO_UPDATA; + } + return 0; +} + +s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener) { + SND_FVECTOR* listenerDir; + SND_FVECTOR* listenerPos; + SND_FVECTOR* listenerUp; + SND_FVECTOR* listenerHeading; + s32 flag; + float startDis; + float frontSurDis; + float backSurDis; + + listenerPos = &se.listenerPos; + listenerUp = &se.listenerUp; + listenerHeading = &se.listenerHeading; + listenerDir = &se.listenerDir; + listenerPos->x = pos->x; + listenerPos->y = pos->y; + listenerPos->z = pos->z; + listenerUp->x = listenerUp->z = 0.0f; + listenerUp->y = 1.0f; + listenerHeading->x = heading->x; + listenerHeading->y = heading->y; + listenerHeading->z = heading->z; + listenerDir->x = listenerDir->y = listenerDir->z = 0.0f; + se.sndDist = sndDist; + flag = (listener != NULL) ? listener->flag : MSM_LISTENER_NONE; + startDis = (flag & MSM_LISTENER_STARTDIS) ? listener->startDis : 0.0f; + frontSurDis = (flag & MSM_LISTENER_FRONTSURDIS) ? listener->frontSurDis : (startDis + sndDist * 0.25f); + backSurDis = (flag & MSM_LISTENER_BACKSURDIS) ? listener->backSurDis : (startDis + sndDist * 0.25f); + if ((s32) sndAddListenerEx(&se.listener, listenerPos, listenerDir, listenerHeading, listenerUp, + frontSurDis, backSurDis, sndSpeed, -startDis, SND_EMITTER_CONTINOUS, 127, NULL) == FALSE) + { + se.listenerF = FALSE; + return MSM_LISTENER_NO_UPDATA; + } + se.listenerF = TRUE; + return 0; +} + +s32 msmSeGetEntryID(s32 seId, int* seNo) { + SE_PLAYER* player; + s32 i; + s32 num; + + for (i = num = 0; i < se.sfx; i++) { + player = &se.player[i]; + if (player->status != 0 && player->seId == seId) { + if (seNo != NULL) { + seNo[num] = player->no; + } + num++; + } + } + return num; +} + +s32 msmSeGetNumPlay(BOOL baseGrp) { + switch (baseGrp) { + case FALSE: + return se.numPlay + se.baseGrpNumPlay; + default: + return se.numPlay; + } +} + +s32 msmSeGetStatus(int seNo) { + SE_PLAYER* pan; + + pan = msmSeSearchEntry(seNo); + if (pan == NULL) { + return 0; + } + return pan->status; +} + +void msmSeSetMasterVolume(s32 vol) { + sndMasterVolume(vol & 127, 0, 0, 1); +} + +s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) { + SE_PLAYER* player; + int pan; + s32 pitch; + + player = msmSeSearchEntry(seNo); + if (player == NULL) { + return MSM_ERR_INVALIDSE; + } + if (param->flag & MSM_SEPARAM_VOL) { + player->busyF = TRUE; + player->vol = param->vol; + if (!(player->flag & SE_PLAYER_EMIT) || player->emitterF != TRUE) { + sndFXVolume(player->vid, player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127)); + } + player->busyF = FALSE; + } + if (!(player->flag & SE_PLAYER_EMIT)) { + if (param->flag & MSM_SEPARAM_PAN) { + player->pan = param->pan; + pan = player->pan + player->basePan - 64; + if (pan < 0) { + pan = 0; + } + if (pan > 127) { + pan = 127; + } + sndFXPanning(player->vid, pan); + } + if (param->flag & MSM_SEPARAM_PITCH) { + player->pitch = param->pitch; + pitch = player->pitch + player->basePitch + 8192; + if (pitch < 0) { + pitch = 0; + } + if (pitch > 16383) { + pitch = 16383; + } + sndFXPitchBend(player->vid, pitch); + } + if (param->flag & MSM_SEPARAM_SPAN) { + player->span = param->span; + sndFXSurroundPanning(player->vid, player->span); + } + } else if (player->emitterF == TRUE) { + player->vid = sndEmitterVoiceID(&player->emitter); + if (param->flag & MSM_SEPARAM_POS) { + player->busyF = TRUE; + player->emiDir.x = param->pos.x - player->emiPos.x; + player->emiDir.y = param->pos.y - player->emiPos.y; + player->emiDir.z = param->pos.z - player->emiPos.z; + player->emiPos.x = param->pos.x; + player->emiPos.y = param->pos.y; + player->emiPos.z = param->pos.z; + sndUpdateEmitter(&player->emitter, &player->emiPos, &player->emiDir, player->vol * player->baseVol * player->fadeVol * player->pauseVol / (127*127*127), NULL); + player->busyF = FALSE; + } + } + if (param->flag & MSM_SEPARAM_AUXVOLA) { + player->auxAVol = param->auxAVol; + sndFXReverb(player->vid, player->auxAVol); + } + if (param->flag & MSM_SEPARAM_AUXVOLB) { + player->auxBVol = param->auxBVol; + sndFXChorus(player->vid, player->auxBVol); + } + if (param->flag & MSM_SEPARAM_PAD) { + sndSendMessage(player->vid, param->pad); + } + return 0; +} + +void msmSePauseAll(BOOL pause, s32 speed) { + s32 i; + SE_PLAYER* player; + + for (i = 0; i < se.sfx; i++) { + player = &se.player[i]; + player->busyF = TRUE; + msmSePauseSub(player, pause, speed); + player->busyF = FALSE; + } +} + +void msmSeStopAll(BOOL checkGrp, s32 speed) { + SE_PLAYER* player; + s32 i; + + for (i = 0; i < se.sfx; i++) { + player = &se.player[i]; + if (player->status == MSM_MUS_DONE) { + continue; + } + player->busyF = TRUE; + switch (checkGrp) { + case FALSE: + player->fadeMaxTime = speed / 15; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + player->status = 1; + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + sndRemoveEmitter(&player->emitter); + } else { + sndFXKeyOff(player->vid); + } + } + break; + default: + if (msmSysCheckBaseGroup(se.seData[player->seId].gid) == 0) { + player->fadeMaxTime = speed / 15; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + player->status = 1; + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + sndRemoveEmitter(&player->emitter); + } else { + sndFXKeyOff(player->vid); + } + } + } + break; + } + player->busyF = FALSE; + } +} + +s32 msmSeStop(int seNo, s32 speed) { + SE_PLAYER* player; + + player = msmSeSearchEntry(seNo); + if (player == NULL) { + return MSM_ERR_INVALIDSE; + } + player->busyF = TRUE; + player->fadeMaxTime = speed / 15; + if (player->fadeMaxTime != 0) { + player->fadeTime = player->fadeMaxTime; + player->fadeVol = 127; + } else { + player->status = MSM_MUS_STOP; + if ((player->flag & SE_PLAYER_EMIT) && player->emitterF == TRUE) { + sndRemoveEmitter(&player->emitter); + } else { + sndFXKeyOff(player->vid); + } + } + player->busyF = FALSE; + return 0; +} + +static inline BOOL msmSeUpdateBaseParam(SE_PLAYER* player, MSM_SEPARAM* param) { + BOOL listenerF = FALSE; + + if (param != NULL) { + if (param->flag & MSM_SEPARAM_VOL) { + player->vol = param->vol; + } + if (param->flag & MSM_SEPARAM_PAN) { + player->pan = param->pan; + } + if (param->flag & MSM_SEPARAM_PITCH) { + player->pitch = param->pitch; + } + if (param->flag & MSM_SEPARAM_SPAN) { + player->span = param->span; + } + if (param->flag & MSM_SEPARAM_AUXVOLA) { + player->auxAVol = param->auxAVol; + } + if (param->flag & MSM_SEPARAM_AUXVOLB) { + player->auxBVol = param->auxBVol; + } + if ((param->flag & MSM_SEPARAM_POS) && se.listenerF != 0) { + listenerF = TRUE; + } + } + player->paramInfo.paraArray = player->param; + return listenerF; +} + +int msmSePlay(int seId, MSM_SEPARAM* param) { + SE_PLAYER* player; + SND_EMITTER* emitter; + MSM_SE* seData; + int pitch; + s32 pan; + s32 i; + s32 emiFlag; + + if (seId < 0 || seId >= se.seMax) { + return MSM_ERR_INVALIDID; + } + seData = &se.seData[seId]; + if (seData->gid == 0xFFFF) { + return MSM_ERR_REMOVEDID; + } + for (i = 0; i < se.sfx; i++) { + player = &se.player[i]; + if (player->status == 0) { + break; + } + } + if (i == se.sfx) { + return MSM_ERR_CHANLIMIT; + } + player->baseVol = seData->vol; + player->basePan = seData->pan; + player->basePitch = seData->pitchBend; + player->vol = 127; + player->pan = 64; + player->span = seData->span; + player->pitch = 0; + player->auxAVol = seData->reverb; + player->auxBVol = seData->chorus; + player->pauseMaxTime = 0; + player->fadeMaxTime = 0; + player->pauseVol = 127; + player->fadeVol = 127; + player->emitterF = 0; + if (msmSeUpdateBaseParam(player, param)) { + player->emiPos.x = param->pos.x; + player->emiPos.y = param->pos.y; + player->emiPos.z = param->pos.z; + player->param[0].ctrl = SND_MIDICTRL_REVERB; + player->param[0].paraData.value7 = player->auxAVol; + player->param[1].ctrl = SND_MIDICTRL_CHORUS; + player->param[1].paraData.value7 = player->auxBVol; + player->paramInfo.numPara = 2; + player->emiDir.x = player->emiDir.y = player->emiDir.z = 0.0f; + if (seData->emitterF == TRUE) { + emitter = &player->emitter; + emiFlag = SND_EMITTER_DOPPLERFX|SND_EMITTER_CONTINOUS; + } else { + emitter = NULL; + emiFlag = SND_EMITTER_DOPPLERFX; + } + player->emitterF = seData->emitterF; + player->vid = sndAddEmitterParaEx(emitter, &player->emiPos, &player->emiDir, se.sndDist, seData->emiComp / 127.0f, emiFlag, seData->fxId, se.groupId++, player->vol * player->baseVol / 127, 0, NULL, &player->paramInfo); + if (emitter != NULL) { + if (!sndCheckEmitter(emitter)) { + return MSM_ERR_PLAYFAIL; + } + } else { + if (player->vid == -1) { + return MSM_ERR_PLAYFAIL; + } + } + player->flag |= 1; + } else { + player->param[0].ctrl = SND_MIDICTRL_VOLUME; + player->param[0].paraData.value14 = (player->vol * player->baseVol / 127) * 129; + pan = player->pan + player->basePan - 64; + if (pan < 0) { + pan = 0; + } + if (pan > 127) { + pan = 127; + } + player->param[1].ctrl = SND_MIDICTRL_PANNING; + player->param[1].paraData.value14 = pan * 129; + player->param[2].ctrl = SND_MIDICTRL_REVERB; + player->param[2].paraData.value7 = player->auxAVol; + player->param[3].ctrl = SND_MIDICTRL_CHORUS; + player->param[3].paraData.value7 = player->auxBVol; + pitch = player->pitch + player->basePitch + 8192; + if (pitch > 16383) { + pitch = 16383; + } else if (pitch < 0) { + pitch = 0; + } + player->param[4].ctrl = SND_MIDICTRL_PITCHBEND; + player->param[4].paraData.value14 = pitch; + player->paramInfo.numPara = 5; + player->vid = sndFXStartParaInfo(seData->fxId, 0xFF, 0xFF, 0, &player->paramInfo); + if (player->vid == -1) { + return MSM_ERR_PLAYFAIL; + } + sndFXSurroundPanning(player->vid, player->span); + player->flag &= ~1; + } + player->busyF = 1; + player->seId = seId; + player->no = se.no++; + player->status = 2; + player->busyF = 0; + return player->no; +} + +s32 msmSeInit(MSM_SYS* arg0, DVDFileInfo* arg1) { + s32 playerSize; + + se.sfx = 0; + se.seMax = 0; + se.baseGrpNumPlay = 0; + se.numPlay = 0; + se.listenerF = 0; + if (arg0->info->seMax == 0) { + return 0; + } + if ((se.seData = msmMemAlloc(arg0->header->seSize)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(arg1, se.seData, arg0->header->seSize, arg0->header->seOfs) < 0) { + return MSM_ERR_READFAIL; + } + playerSize = arg0->info->sfx * sizeof(SE_PLAYER); + if ((se.player = msmMemAlloc(playerSize)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + memset(se.player, 0, playerSize); + se.seMax = arg0->info->seMax; + se.sfx = arg0->info->sfx; + se.no = 1; + return 0; +} diff --git a/src/msm/msmstream.c b/src/msm/msmstream.c new file mode 100755 index 00000000..2afade01 --- /dev/null +++ b/src/msm/msmstream.c @@ -0,0 +1,1029 @@ +#include "msm/msmstream.h" +#include "msm/msmmem.h" +#include "msm/msmsys.h" + +typedef struct { + /* 0x00 */ SND_STREAMID stid; + /* 0x04 */ s16 streamId; + /* 0x06 */ u8 status; + /* 0x07 */ u8 stereoF; + /* 0x08 */ u8 volBase; + /* 0x09 */ u8 vol; + /* 0x0A */ u8 volFade; + /* 0x0B */ u8 pauseVol; + /* 0x0C */ u8 panBase; + /* 0x0D */ u8 pan; + /* 0x0E */ s8 slotL; + /* 0x0F */ s8 slotR; + /* 0x10 */ u32 pauseLen; + /* 0x14 */ volatile s32 pauseTime; + /* 0x18 */ volatile s32 pauseTimeMax; + /* 0x1C */ s32 fadeVol; + /* 0x20 */ s32 unk20; + /* 0x24 */ volatile s32 fadeMaxTime; + /* 0x28 */ s32 fadeTime; + /* 0x2C */ s8 span; + /* 0x2D */ s8 auxA; + /* 0x2E */ s8 auxB; + /* 0x30 */ void* streamBuf; + /* 0x34 */ u32 streamBufSize; + /* 0x38 */ u32 streamFrq; + /* 0x3C */ struct { + volatile u8 bufNo : 1; + volatile u8 firstF : 1; + u8 streamOffF : 1; + u8 readBusyF : 1; + volatile u8 shutdownF : 1; + volatile u8 pauseF : 1; + volatile u8 updateAramF : 1; + }; + s32 frq; + /* 0x44 */ SND_ADPCMSTREAM_INFO* adpcmInfo; + /* 0x48 */ s32 streamBaseOfs; + /* 0x4C */ u32 streamPos; + /* 0x50 */ u32 loopLen; + /* 0X54 */ s32 loopEndOfs; + /* 0x58 */ u32 streamReadSize; + /* 0x5C */ void* streamReadBuf; + /* 0X60 */ s32 streamPosStart; + /* 0x64 */ u32 unk64; + /* 0x68 */ s32 unk68; + /* 0x6C */ s32 unk6C; + /* 0x70 */ DVDFileInfo file; +} MSM_STREAM_SLOT; // Size 0xAC + +static struct { + /* 0x00 */ s32 sampleFrq; + /* 0x04 */ u32 bufSize; + /* 0x08 */ s32 frq; + /* 0x0C */ s32 pdtEntryNum; + /* 0x10 */ s8 time; + /* 0x11 */ u8 masterVol; + /* 0x12 */ u8 outputMode; + /* 0x14 */ u32* streamPackList; + /* 0x18 */ s8* streamPackFlag; + /* 0x1C */ SND_ADPCMSTREAM_INFO* adpcmParam; + /* 0x20 */ MSM_STREAM_SLOT* slot; + MSM_STREAM_HEADER header ATTRIBUTE_ALIGN(32); +} StreamInfo; // Size 0x60 + +typedef struct { + /* 0x00 */ u8 vol; + /* 0x01 */ u8 pan; + /* 0x02 */ u8 span; + /* 0x03 */ u8 auxA; + /* 0x04 */ u8 auxB; + /* 0x08 */ s32 sampleOfs; +} STREAM_PARAM; + +static void msmStreamPauseFade(s32 streamNo); +static void msmStreamFade(s32 streamNo); +static void msmStreamDvdCallback(s32 result, DVDFileInfo* fileInfo); +static void msmStreamStopSub(s32 streamNo, s32 speed); +static void msmStreamDvdCallback2(s32 result, DVDFileInfo* fileInfo); +static u32 msmStreamUpdateFunc(void* buffer1, u32 len1, void* buffer2, u32 len2, u32 user); +static s32 msmStreamSlotInit(MSM_STREAM_SLOT* arg0, MSM_STREAM_PACK* arg1, STREAM_PARAM* arg2, s32 arg3); +static void msmStreamPauseOff(s32 streamNo); +static void msmStreamPauseOn(s32 streamNo, s32 arg1); +static s32 msmStreamPackStartStereo(s32 streamId, MSM_STREAMPARAM *param, s32 sampleOfs); +static s32 msmStreamPackStartMono(s32 streamId, MSM_STREAMPARAM *param, s32 sampleOfs); +static void msmStreamSlotOff(s32 streamNo); + +static inline void msmStreamClose(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + DVDClose(&slot->file); + slot->status = 0; +} + +s32 msmStreamGetStatus(int streamNo) { + MSM_STREAM_SLOT* slot; + s32 status; + + if (streamNo < 0 || streamNo >= StreamInfo.header.chanMax) { + return 0; + } + slot = &StreamInfo.slot[streamNo]; + switch (slot->status) { + case 4: + status = MSM_STREAM_PLAY; + break; + case 2: + case 3: + status = MSM_STREAM_PAUSEOUT; + break; + case 5: + status = MSM_STREAM_STOP; + break; + default: + status = MSM_STREAM_DONE; + break; + } + if (slot->pauseF == TRUE) { + status = MSM_STREAM_PAUSEIN; + } + if (status == MSM_STREAM_DONE && slot->slotL != -1) { + status = msmStreamGetStatus(slot->slotL); + } + return status; +} + +static void msmStreamUpdateBaseParam(MSM_STREAM_SLOT* slot) { + s32 pan; + s32 vol; + + if (StreamInfo.outputMode != 0) { + pan = slot->panBase + slot->pan - 64; + if (pan < 0) { + pan = 0; + } + if (pan > 127) { + pan = 127; + } + } else { + pan = 64; + } + vol = slot->volBase * slot->vol * slot->volFade * slot->pauseVol / (127*127*127); + sndStreamMixParameterEx(slot->stid, vol * StreamInfo.masterVol / 127, pan, slot->span, slot->auxA, slot->auxB); +} + +void msmStreamSetMasterVolume(s32 vol) { + s32 i; + + StreamInfo.masterVol = vol & 127; + for (i = 0; i < StreamInfo.header.chanMax; i++) { + if (StreamInfo.slot[i].status != 0) { + msmStreamUpdateBaseParam(&StreamInfo.slot[i]); + } + } +} + +static inline BOOL msmStreamIsPlay(MSM_STREAM_SLOT* slot) { + if (slot->status != 0 || slot->pauseF != 0) { + return TRUE; + } else { + return FALSE; + } +} + +void msmStreamStopAll(s32 speed) +{ + MSM_STREAM_SLOT* slot; + s32 i; + + msmSysIrqDisable(); + for (i = 0; i < StreamInfo.header.chanMax; i++) { + if (i >= 0 && i < StreamInfo.header.chanMax) { + slot = &StreamInfo.slot[i]; + if (msmStreamIsPlay(slot)) { + msmSysIrqDisable(); + msmStreamStopSub(i, speed); + if (slot->slotL != -1) { + msmStreamStopSub(slot->slotL, speed); + } + if (slot->slotR != -1) { + msmStreamStopSub(slot->slotR, speed); + } + msmSysIrqEnable(); + } + } + } + msmSysIrqEnable(); +} + +static inline void msmStreamSetFade(int streamNo, s32 speed) { + MSM_STREAM_SLOT* slot = &StreamInfo.slot[streamNo]; + + if (slot->pauseF != 0) { + slot->pauseF = 0; + speed = 0; + } + slot->fadeMaxTime = speed / 15; + if (slot->fadeMaxTime != 0) { + slot->fadeTime = slot->fadeMaxTime; + slot->volFade = 127; + } else { + msmStreamSlotOff(streamNo); + } +} + +s32 msmStreamStop(int streamNo, s32 speed) { + MSM_STREAM_SLOT* slot; + s32 unused; + + if (streamNo < 0 || streamNo >= StreamInfo.header.chanMax) { + return MSM_ERR_RANGE_STREAM; + } + slot = &StreamInfo.slot[streamNo]; + if (msmStreamIsPlay(slot)) { + msmSysIrqDisable(); + msmStreamSetFade(streamNo, speed); + if (slot->slotL != -1) { + msmStreamSetFade(slot->slotL, speed); + } + if (slot->slotR != -1) { + msmStreamSetFade(slot->slotR, speed); + } + msmSysIrqEnable(); + } + return 0; +} + +int msmStreamPlay(int streamId, MSM_STREAMPARAM* streamParam) { + if (streamId < 0 || streamId >= StreamInfo.header.streamMax) { + return MSM_ERR_INVALIDID; + } + if (StreamInfo.streamPackList[streamId] == 0) { + return MSM_ERR_REMOVEDID; + } + if (StreamInfo.streamPackFlag[StreamInfo.streamPackList[streamId] - StreamInfo.header.streamPackOfs] & MSM_STREAM_FLAG_STEREO) { + return msmStreamPackStartStereo(streamId, streamParam, 0); + } else { + return msmStreamPackStartMono(streamId, streamParam, 0); + } +} + +void msmStreamPeriodicProc(void) { + MSM_STREAM_SLOT* slot; + s32 i; + + StreamInfo.time = 0; + for (i = 0; i < StreamInfo.header.chanMax; i++) { + slot = &StreamInfo.slot[i]; + msmStreamFade(i); + msmStreamPauseOff(i); + msmStreamPauseFade(i); + if (slot->status != 0) { + StreamInfo.time++; + } + } +} + +void msmStreamSetOutputMode(s32 outputMode) { + s32 i; + + StreamInfo.outputMode = outputMode; + for (i = 0; i < StreamInfo.header.chanMax; i++) { + if (StreamInfo.slot[i].status != 0) { + msmStreamUpdateBaseParam(&StreamInfo.slot[i]); + } + } +} + +void msmStreamAmemFree(void) { + u32 i; + + for (i = 0; i < StreamInfo.header.chanMax; i++) { + sndStreamFree(StreamInfo.slot[i].stid); + } +} + +s32 msmStreamAmemAlloc(void) { + u32 i; + MSM_STREAM_SLOT* slot; + + for (i = 0; i < StreamInfo.header.chanMax; i++) { + slot = &StreamInfo.slot[i]; + slot->status = 0; + slot->slotR = -1; + slot->slotL = -1; + slot->streamBuf = msmMemAlloc(StreamInfo.bufSize); + if (slot->streamBuf == NULL) { + return MSM_ERR_OUTOFMEM; + } + slot->streamBufSize = StreamInfo.bufSize; + slot->streamFrq = StreamInfo.frq; + slot->stid = sndStreamAllocEx(0xFF, slot->streamBuf, slot->streamFrq, StreamInfo.header.sampleFrq, 0, 64, 0, 0, 0, 0, 0x30001, msmStreamUpdateFunc, i, NULL); + if (slot->stid == -1) { + return MSM_ERR_STREAMALLOC_FAIL; + } + } + return StreamInfo.bufSize * StreamInfo.header.chanMax; +} + +s32 msmStreamInit(char *pdtPath) { + DVDFileInfo file; + s32 size; + + StreamInfo.header.streamMax = 0; + StreamInfo.header.chanMax = 0; + StreamInfo.masterVol = 127; + StreamInfo.time = 0; + if (pdtPath == NULL) { + return 0; + } + StreamInfo.pdtEntryNum = DVDConvertPathToEntrynum(pdtPath); + if (StreamInfo.pdtEntryNum == -1) { + return MSM_ERR_OPENFAIL; + } + if (!msmFioOpen(StreamInfo.pdtEntryNum, &file)) { + return MSM_ERR_OPENFAIL; + } + if (msmFioRead(&file, &StreamInfo.header, 0x20, 0) < 0) { + msmFioClose(&file); + return MSM_ERR_READFAIL; + } + if (StreamInfo.header.version != MSM_PDT_FILE_VERSION) { + msmFioClose(&file); + return MSM_ERR_INVALIDFILE; + } + if (StreamInfo.header.streamMax != 0) { + size = (StreamInfo.header.adpcmParamOfs - StreamInfo.header.streamPackListOfs + 0x1F) & ~0x1F; + StreamInfo.streamPackList = msmMemAlloc(size); + if (StreamInfo.streamPackList == NULL) { + msmFioClose(&file); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&file, StreamInfo.streamPackList, size, StreamInfo.header.streamPackListOfs) < 0) { + msmFioClose(&file); + return MSM_ERR_READFAIL; + } + size = (StreamInfo.header.sampleOfs - StreamInfo.header.streamPackOfs + 0x1F) & ~0x1F; + StreamInfo.streamPackFlag = msmMemAlloc(size); + if (StreamInfo.streamPackFlag == NULL) { + msmFioClose(&file); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&file, StreamInfo.streamPackFlag, size, StreamInfo.header.streamPackOfs) < 0) { + msmFioClose(&file); + return MSM_ERR_READFAIL; + } + size = StreamInfo.header.streamPackOfs - StreamInfo.header.adpcmParamOfs; + StreamInfo.adpcmParam = msmMemAlloc(size); + if (StreamInfo.adpcmParam == NULL) { + msmFioClose(&file); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&file, StreamInfo.adpcmParam, size, StreamInfo.header.adpcmParamOfs) < 0) { + msmFioClose(&file); + return MSM_ERR_READFAIL; + } + } + msmFioClose(&file); + StreamInfo.sampleFrq = (StreamInfo.header.sampleFrq + (SND_STREAM_ADPCM_BLKSIZE-1)) / SND_STREAM_ADPCM_BLKSIZE ; + StreamInfo.bufSize = (8 * StreamInfo.sampleFrq * StreamInfo.header.maxBufs + 0x3F) & ~0x3F; + StreamInfo.frq = (StreamInfo.bufSize / SND_STREAM_ADPCM_BLKBYTES ) * SND_STREAM_ADPCM_BLKSIZE; + StreamInfo.slot = msmMemAlloc(StreamInfo.header.chanMax * sizeof(*StreamInfo.slot)); + memset(StreamInfo.slot, 0, StreamInfo.header.chanMax * sizeof(*StreamInfo.slot)); + return 0; +} + +static void msmStreamPauseOff(s32 streamNo) { + MSM_STREAM_SLOT* slot; + u32 ofs; + u32 readSize; + + slot = &StreamInfo.slot[streamNo]; + if (slot->pauseTime == 0) { + return; + } + if (slot->pauseF == 0) { + slot->pauseTime = 0; + return; + } + if (slot->pauseTimeMax != 0) { + slot->pauseTimeMax = -(slot->pauseTime + 1); + if (slot->pauseTimeMax == 0) { + slot->pauseVol = 127; + msmStreamUpdateBaseParam(slot); + } + slot->pauseTime = 0; + slot->pauseF = 0; + } else if (slot->status == 0 && DVDFastOpen(StreamInfo.pdtEntryNum, &slot->file) == TRUE) { + if (--slot->pauseTime != 0) { + slot->pauseTimeMax = -slot->pauseTime; + slot->fadeVol = 0; + slot->pauseVol = 0; + } else { + slot->pauseVol = 127; + } + slot->pauseTime = 0; + slot->firstF = TRUE; + slot->streamOffF = 0; + slot->shutdownF = 0; + slot->pauseF = 0; + slot->updateAramF = 0; + slot->bufNo = 1; + slot->unk64 = slot->unk68 = (slot->pauseLen / SND_STREAM_ADPCM_BLKBYTES) * SND_STREAM_ADPCM_BLKSIZE; + slot->unk6C = 0; + slot->streamPos = slot->pauseLen; + readSize = slot->streamBufSize / 2; + if ((ofs = slot->loopLen - slot->streamPos) < slot->streamBufSize / 2) { + readSize = ofs; + slot->streamReadSize = slot->streamBufSize / 2 - ofs; + slot->streamReadBuf = (void*) ((u32) slot->streamBuf + ofs); + memset(slot->streamReadBuf, 0, slot->streamReadSize); + } + slot->status = 2; + slot->streamPos += readSize; + slot->readBusyF = TRUE; + DVDReadAsync(&slot->file, slot->streamBuf, readSize, slot->streamBaseOfs + (slot->streamPos - readSize), msmStreamDvdCallback); + } +} + +static inline void msmStreamOff(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + switch (slot->status) { + case 2: + slot->shutdownF = TRUE; + slot->status = 5; + break; + case 3: + msmStreamClose(streamNo); + break; + case 4: + if (slot->streamOffF == FALSE) { + sndStreamMixParameterEx(slot->stid, 0, 64, 0, 0, 0); + slot->streamOffF = TRUE; + slot->status = 5; + } + break; + } +} + +static void msmStreamPauseOn(s32 streamNo, s32 speed) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + slot->pauseTime = 0; + if (slot->pauseF != 0) { + return; + } + slot->pauseF = TRUE; + slot->pauseTimeMax = speed / 15; + if (slot->pauseTimeMax != 0) { + slot->fadeVol = slot->pauseTimeMax; + slot->pauseVol = 127; + return; + } + slot->pauseLen = ((slot->unk64 / 7) * 4) & ~7; + if (slot->stereoF != 0) { + if (slot->pauseLen >= slot->loopLen - slot->streamBufSize / 4) { + slot->pauseLen = 0; + } + } else if (slot->pauseLen >= slot->loopLen) { + slot->pauseF = 0; + } + msmStreamOff(streamNo); +} + +static void msmStreamPauseFade(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + if (slot->status != 4) { + return; + } + if (slot->pauseTimeMax > 0) { + if (--slot->fadeVol == 0) { + slot->pauseTimeMax = 0; + slot->pauseF = 0; + msmStreamPauseOn(streamNo, 0); + } else { + slot->pauseVol = slot->fadeVol * 127 / slot->pauseTimeMax; + msmStreamUpdateBaseParam(slot); + } + } else if (slot->pauseTimeMax < 0) { + if (++slot->fadeVol >= -slot->pauseTimeMax) { + slot->pauseTimeMax = 0; + slot->pauseVol = 127; + msmStreamUpdateBaseParam(slot); + } else { + slot->pauseVol = slot->fadeVol * 127 / -slot->pauseTimeMax; + msmStreamUpdateBaseParam(slot); + } + } +} + +static void msmStreamFade(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + if (slot->status != 4) { + return; + } + if (slot->fadeMaxTime > 0) { + if (--slot->fadeTime == 0) { + slot->fadeMaxTime = 0; + msmStreamSetFade(streamNo, 0); + } else { + slot->volFade = slot->fadeTime * 127 / slot->fadeMaxTime; + msmStreamUpdateBaseParam(slot); + } + } else if (slot->fadeMaxTime < 0) { + if (++slot->fadeTime >= -slot->fadeMaxTime) { + slot->fadeMaxTime = 0; + slot->volFade = 127; + msmStreamUpdateBaseParam(slot); + } else { + slot->volFade = slot->fadeTime * 127 / -slot->fadeMaxTime; + msmStreamUpdateBaseParam(slot); + } + } +} + +static void msmStreamStopSub(s32 streamNo, s32 speed) { + MSM_STREAM_SLOT* slot; + s32 time; + + time = speed; + slot = &StreamInfo.slot[streamNo]; + if (slot->pauseF != 0) { + slot->pauseF = 0; + time = 0; + } + slot->fadeMaxTime = time / 15; + if (slot->fadeMaxTime != 0) { + slot->fadeTime = slot->fadeMaxTime; + slot->volFade = 127; + return; + } + msmStreamOff(streamNo); +} + +static void msmStreamSetParamSub(MSM_STREAM_SLOT* slot) { + int pan; + s32 vol; + + if (StreamInfo.outputMode != 0) { + pan = slot->panBase + slot->pan - 64; + if (pan < 0) { + pan = 0; + } + if (pan > 127) { + pan = 127; + } + } else { + pan = 64; + } + vol = slot->volBase * slot->vol * slot->volFade * slot->pauseVol / (127*127*127); + sndStreamMixParameterEx(slot->stid, vol * StreamInfo.masterVol / 127, pan, slot->span, slot->auxA, slot->auxB); +} + +static s32 msmStreamPackStartStereo(s32 streamId, MSM_STREAMPARAM *param, s32 sampleOfs) { + s32 flag; + s32 chanL; + s32 chanR; + u32 sizeL; + u32 sizeR; + STREAM_PARAM streamParam; + MSM_STREAM_SLOT* slotL; + MSM_STREAM_SLOT* slotR; + MSM_STREAM_PACK* pack; + + flag = (param != NULL) ? param->flag : 0; + if (flag & MSM_STREAMPARAM_CHAN) { + chanL = param->chan; + chanR = param->chan + 1; + if (chanL < 0 || chanL >= StreamInfo.header.chanMax) { + return MSM_ERR_CHANLIMIT; + } + if (chanR < 0 || chanR >= StreamInfo.header.chanMax) { + return MSM_ERR_CHANLIMIT; + } + if (msmStreamIsPlay(&StreamInfo.slot[chanL])) { + return MSM_ERR_CHANLIMIT; + } + if (msmStreamIsPlay(&StreamInfo.slot[chanR])) { + return MSM_ERR_CHANLIMIT; + } + } else { + for (chanL = 0; chanL < StreamInfo.header.chanMax; chanL++) { + if (!msmStreamIsPlay(&StreamInfo.slot[chanL])) { + break; + } + } + for (chanR = chanL + 1; chanR < StreamInfo.header.chanMax; chanR++) { + if (!msmStreamIsPlay(&StreamInfo.slot[chanR])) { + break; + } + } + if (chanL == StreamInfo.header.chanMax || chanR == StreamInfo.header.chanMax) { + return MSM_ERR_CHANLIMIT; + } + } + slotL = &StreamInfo.slot[chanL]; + slotR = &StreamInfo.slot[chanR]; + pack = (MSM_STREAM_PACK*) ((u32) StreamInfo.streamPackFlag + (StreamInfo.streamPackList[streamId] - StreamInfo.header.streamPackOfs)); + streamParam.vol = (flag & MSM_STREAMPARAM_VOL) ? param->vol : 127; + streamParam.span = (flag & MSM_STREAMPARAM_SPAN) ? param->span : (s32) pack->span; + streamParam.auxA = (flag & MSM_STREAMPARAM_AUXA) ? param->auxA : (s32) pack->auxA; + streamParam.auxB = (flag & MSM_STREAMPARAM_AUXB) ? param->auxB : (s32) pack->auxB; + streamParam.sampleOfs = sampleOfs; + msmSysIrqDisable(); + streamParam.pan = 0; + sizeL = msmStreamSlotInit(slotL, pack, &streamParam, 0); + streamParam.pan = 127; + sizeR = msmStreamSlotInit(slotR, pack, &streamParam, 1); + slotL->streamId = streamId; + slotR->streamId = -1; + slotL->slotL = chanR; + slotR->slotR = chanL; + if ((flag & MSM_STREAMPARAM_FADESPEED) && param->fadeSpeed != 0) { + slotL->fadeMaxTime = slotR->fadeMaxTime = -param->fadeSpeed / 15; + slotL->fadeTime = slotR->fadeTime = 0; + slotL->volFade = slotR->volFade = 0; + } + msmSysIrqEnable(); + if (sizeL == 0) { + return 0; + } + if (flag & MSM_STREAMPARAM_PAUSE) { + slotL->pauseF = slotR->pauseF = 1; + slotL->status = slotR->status = 0; + return chanL; + } + if (DVDFastOpen(StreamInfo.pdtEntryNum, &slotL->file) != 1) { + return MSM_ERR_OPENFAIL; + } + if (DVDFastOpen(StreamInfo.pdtEntryNum, &slotR->file) != 1) { + DVDClose(&slotL->file); + return MSM_ERR_OPENFAIL; + } + slotL->streamPos += sizeL; + slotR->streamPos += sizeR; + slotL->readBusyF = 1; + DVDReadAsync(&slotL->file, slotL->streamBuf, sizeL, slotL->streamBaseOfs + (slotL->streamPos - sizeL), msmStreamDvdCallback); + slotR->readBusyF = 1; + DVDReadAsync(&slotR->file, slotR->streamBuf, sizeR, slotR->streamBaseOfs + (slotR->streamPos - sizeR), msmStreamDvdCallback); + return chanL; +} + +static s32 msmStreamPackStartMono(s32 streamId, MSM_STREAMPARAM *param, s32 sampleOfs) { + s32 flag; + s32 chan; + u32 size; + STREAM_PARAM streamParam; + MSM_STREAM_SLOT* slot; + MSM_STREAM_PACK* pack; + + flag = (param != NULL) ? param->flag : 0; + if (flag & MSM_STREAMPARAM_CHAN) { + chan = param->chan; + if (chan < 0 || chan >= StreamInfo.header.chanMax) { + return MSM_ERR_CHANLIMIT; + } + if (msmStreamIsPlay(&StreamInfo.slot[chan])) { + return MSM_ERR_CHANLIMIT; + } + } else { + for (chan = 0; chan < StreamInfo.header.chanMax; chan++) { + if (!msmStreamIsPlay(&StreamInfo.slot[chan])) { + break; + } + } + if (chan == StreamInfo.header.chanMax) { + return MSM_ERR_CHANLIMIT; + } + } + slot = &StreamInfo.slot[chan]; + pack = (MSM_STREAM_PACK*) ((u32) StreamInfo.streamPackFlag + (StreamInfo.streamPackList[streamId] - StreamInfo.header.streamPackOfs)); + streamParam.vol = (flag & MSM_STREAMPARAM_VOL) ? param->vol : 127; + streamParam.pan = (flag & MSM_STREAMPARAM_PAN) ? param->pan : 64; + streamParam.span = (flag & MSM_STREAMPARAM_SPAN) ? param->span : (s32) pack->span; + streamParam.auxA = (flag & MSM_STREAMPARAM_AUXA) ? param->auxA : (s32) pack->auxA; + streamParam.auxB = (flag & MSM_STREAMPARAM_AUXB) ? param->auxB : (s32) pack->auxB; + streamParam.sampleOfs = sampleOfs; + msmSysIrqDisable(); + size = msmStreamSlotInit(slot, pack, &streamParam, 0); + slot->streamId = streamId; + if ((flag & MSM_STREAMPARAM_FADESPEED) && param->fadeSpeed != 0) { + slot->fadeMaxTime = -param->fadeSpeed / 15; + slot->fadeTime = 0; + slot->volFade = 0; + } + msmSysIrqEnable(); + if (size == 0) { + return 0; + } + if (flag & MSM_STREAMPARAM_PAUSE) { + slot->pauseF = TRUE; + slot->status = 0; + return chan; + } + if (DVDFastOpen(StreamInfo.pdtEntryNum, &slot->file) != 1) { + return MSM_ERR_OPENFAIL; + } + slot->streamPos += size; + slot->readBusyF = TRUE; + DVDReadAsync(&slot->file, slot->streamBuf, size, slot->streamBaseOfs + (slot->streamPos - size), msmStreamDvdCallback); + return chan; +} + +// Note: identical to msmStreamOff. +static void msmStreamSlotOff(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + switch (slot->status) { + case 2: + slot->shutdownF = 1; + slot->status = 5; + break; + case 3: + msmStreamClose(streamNo); + break; + case 4: + if (slot->streamOffF == 0) { + sndStreamMixParameterEx(slot->stid, 0, 64, 0, 0, 0); + slot->streamOffF = TRUE; + slot->status = 5; + } + break; + } +} + +static void msmStreamShutdown(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + msmStreamSlotOff(streamNo); + sndStreamDeactivate(slot->stid); + if (slot->readBusyF == 0) { + msmStreamClose(streamNo); + } else { + slot->shutdownF = 1; + } +} + +static void msmStreamData(s32 streamNo) { + s32 dataSize; + u32 readSize; + void* dataPtr; + MSM_STREAM_SLOT* slot; + s32 off1; + + slot = &StreamInfo.slot[streamNo]; + readSize = dataSize = slot->streamBufSize / 2; + dataPtr = (slot->bufNo != 0) + ? (void*) ((u32) slot->streamBuf + dataSize) + : slot->streamBuf; + slot->streamReadSize = off1 = 0; + if (slot->streamPos + readSize > slot->loopLen) { + if (slot->loopLen > slot->streamPos) { + readSize = slot->loopLen - slot->streamPos; + slot->streamReadSize = dataSize - readSize; + slot->streamReadBuf = (void*) ((u32) dataPtr + readSize); + } else if (slot->stereoF != 0) { + slot->streamPos = slot->streamPosStart; + } else { + memset(dataPtr, 0, dataSize); + if (slot->bufNo != 0) { + off1 = slot->streamFrq / 2; + } + sndStreamARAMUpdate(slot->stid, off1, slot->streamFrq / 2, 0, 0); + readSize = 0; + } + } + if (readSize != 0) { + if (DVDGetCommandBlockStatus(&slot->file.cb) != 0) { + if (slot->updateAramF != TRUE) { + slot->updateAramF = TRUE; + sndStreamMixParameterEx(slot->stid, 0, 64, 64, 0, 0); + memset(slot->streamBuf, 0, slot->streamBufSize); + sndStreamARAMUpdate(slot->stid, 0, slot->streamFrq, 0, 0); + } + } else { + if (slot->updateAramF == TRUE) { + slot->updateAramF = FALSE; + msmStreamUpdateBaseParam(slot); + } + slot->streamPos += readSize; + slot->readBusyF = 1; + DVDReadAsync(&slot->file, dataPtr, readSize, slot->streamBaseOfs + (slot->streamPos - readSize), msmStreamDvdCallback); + } + } else if (slot->firstF != 0) { + slot->firstF= 0; + } else { + msmStreamShutdown(streamNo); + } + slot->bufNo ^= 1; +} + +static BOOL msmStreamActivateStream(s32 streamNo) { + MSM_STREAM_SLOT* slot; + + slot = &StreamInfo.slot[streamNo]; + msmStreamSetParamSub(slot); + sndStreamFrq(slot->stid, slot->frq); + sndStreamADPCMParameter(slot->stid, slot->adpcmInfo); + sndStreamARAMUpdate(slot->stid, 0, slot->streamFrq / 2, 0, 0); + if (sndStreamActivate(slot->stid)) { + slot->status = 4; + msmStreamData(streamNo); + return TRUE; + } else { + msmStreamClose(streamNo); + return FALSE; + } +} + +static void msmStreamDvdCallback(s32 result, DVDFileInfo* fileInfo) { + s32 readSize; + MSM_STREAM_SLOT* slot; + + for (readSize = 0; readSize < StreamInfo.header.chanMax; readSize++) { + if (&StreamInfo.slot[readSize].file == fileInfo) { + break; + } + } + if (readSize == StreamInfo.header.chanMax) { + return; + } + slot = &StreamInfo.slot[readSize]; + slot->readBusyF = 0; + if (slot->shutdownF != 0) { + slot->shutdownF = 0; + msmStreamClose(readSize); + return; + } + if (DVDGetCommandBlockStatus(&fileInfo->cb) == 0) { + switch (slot->status) { + case 2: + if (slot->slotL != -1) { + if (StreamInfo.slot[slot->slotL].status != 3) { + slot->status = 3; + break; + } + if (!msmStreamActivateStream(slot->slotL)) { + slot->slotL = -1; + } + } + if (slot->slotR != -1) { + if (StreamInfo.slot[slot->slotR].status != 3) { + slot->status = 3; + break; + } + if (!msmStreamActivateStream(slot->slotR)) { + slot->slotR = -1; + } + } + if (!msmStreamActivateStream(readSize)) { + if (slot->slotL != -1) { + StreamInfo.slot[slot->slotL].slotR = -1; + } + if (slot->slotR != -1) { + StreamInfo.slot[slot->slotR].slotL = -1; + } + } + break; + case 4: + if (slot->streamPos >= slot->loopLen) { + if (slot->stereoF != 0) { + slot->streamPos = slot->streamPosStart; + if (slot->streamReadSize != 0) { + slot->readBusyF = 1; + DVDReadAsync(fileInfo, slot->streamReadBuf, slot->streamReadSize, slot->streamBaseOfs + slot->streamPos, msmStreamDvdCallback2); + slot->streamPos += slot->streamReadSize; + break; + } + } else if (slot->streamReadSize != 0) { + memset(slot->streamReadBuf, 0, slot->streamReadSize); + } + } + sndStreamARAMUpdate(slot->stid, (slot->bufNo != 0) ? 0 : slot->streamFrq / 2, slot->streamFrq / 2, 0, 0); + break; + case 5: + slot->shutdownF = 0; + msmStreamClose(readSize); + break; + } + } else { + if (slot->status == 4) { + sndStreamDeactivate(slot->stid); + } + msmStreamClose(readSize); + if (slot->slotL != -1) { + StreamInfo.slot[slot->slotL].slotR = -1; + } + if (slot->slotR != -1) { + StreamInfo.slot[slot->slotR].slotL = -1; + } + } +} + +static void msmStreamDvdCallback2(s32 result, DVDFileInfo* fileInfo) { + MSM_STREAM_SLOT* slot; + s32 readSize; + + for (readSize = 0; readSize < StreamInfo.header.chanMax; readSize++) { + slot = &StreamInfo.slot[readSize]; + if (&slot->file == fileInfo) { + break; + } + } + if (readSize == StreamInfo.header.chanMax) { + return; + } + slot->readBusyF = FALSE; + if (slot->shutdownF != 0) { + slot->shutdownF = FALSE; + msmStreamClose(readSize); + } else if (DVDGetCommandBlockStatus(&fileInfo->cb) == 0) { + sndStreamARAMUpdate(slot->stid, (slot->bufNo != 0) ? 0 : slot->streamFrq / 2, slot->streamFrq / 2, 0, 0); + } else { + if (slot->status == 4) { + sndStreamDeactivate(slot->stid); + } + msmStreamClose(readSize); + if (slot->slotL != -1) { + StreamInfo.slot[slot->slotL].slotR = -1; + } + if (slot->slotR != -1) { + StreamInfo.slot[slot->slotR].slotL = -1; + } + } +} + +static u32 msmStreamUpdateFunc(void* buffer1, u32 len1, void* buffer2, u32 len2, u32 user) { + MSM_STREAM_SLOT* slot; + s32 len3; + s32 updateLen; + s32 len; + + slot = &StreamInfo.slot[user]; + if (slot->streamOffF != 0) { + msmStreamShutdown(user); + return 0; + } + updateLen = slot->streamFrq / 2; + if (len1 < updateLen) { + len = 0; + slot->unk64 = slot->unk68 + (len1 - slot->unk6C); + } else { + msmStreamData(user); + len = updateLen; + len3 = slot->unk68 + (updateLen - slot->unk6C); + slot->unk68 = len3; + slot->unk64 = len3; + slot->unk6C = 0; + } + if (slot->unk64 >= slot->loopEndOfs) { + if (slot->stereoF != 0) { + slot->unk68 = 0; + slot->unk64 -= slot->loopEndOfs; + if (len1 < updateLen) { + slot->unk6C = len1 - slot->unk64; + } + } else { + slot->streamOffF = 1; + slot->pauseF = 0; + } + } + return len; +} + +static s32 msmStreamSlotInit(MSM_STREAM_SLOT *slot, MSM_STREAM_PACK* pack, STREAM_PARAM* param, s32 no) { + MSM_STREAM *stream; + s32 temp_r3; + s32 ret; + + stream = &pack->stream[no]; + slot->volBase = pack->vol; + slot->vol = param->vol; + slot->volFade = slot->pauseVol = 127; + slot->panBase = pack->pan; + slot->pan = param->pan; + slot->span = param->span; + slot->auxA = param->auxA; + slot->auxB = param->auxB; + slot->stereoF = (pack->flag >> 1) & 1; + slot->streamBaseOfs = stream->sampleOfs; + slot->streamPosStart = (pack->loopOfsStart >> 1) & ~7; + slot->frq = pack->frq; + slot->adpcmInfo = &StreamInfo.adpcmParam[stream->adpcmParamIdx]; + slot->fadeMaxTime = 0; + slot->pauseTimeMax = 0; + slot->pauseTime = 0; + slot->pauseLen = 0; + slot->firstF = 1; + slot->streamOffF = 0; + slot->shutdownF = 0; + slot->pauseF = 0; + slot->updateAramF = 0; + slot->bufNo = 1; + slot->streamBufSize = (StreamInfo.header.sampleFrq * StreamInfo.header.maxBufs * SND_STREAM_ADPCM_BLKBYTES / SND_STREAM_ADPCM_BLKSIZE + 0x3F) & ~0x3F; + if (slot->streamBufSize > StreamInfo.bufSize) { + slot->streamBufSize = StreamInfo.bufSize; + } + slot->streamFrq = (slot->streamBufSize / SND_STREAM_ADPCM_BLKBYTES) * SND_STREAM_ADPCM_BLKSIZE; + slot->loopLen = (pack->loopOfsEnd >> 1) & ~0x1F; + slot->loopEndOfs = (slot->loopLen / SND_STREAM_ADPCM_BLKBYTES) * SND_STREAM_ADPCM_BLKSIZE; + slot->unk64 = slot->unk68 = 0; + slot->unk6C = 0; + slot->slotL = -1; + slot->slotR = -1; + slot->streamPos = param->sampleOfs; + ret = slot->streamBufSize / 2; + if ((temp_r3 = slot->loopLen - slot->streamPos) < slot->streamBufSize / 2) { + ret = temp_r3; + slot->streamReadSize = slot->streamBufSize / 2 - temp_r3; + slot->streamReadBuf = (void*) ((u32) slot->streamBuf + temp_r3); + memset(slot->streamReadBuf, 0, slot->streamReadSize); + } + slot->status = 2; + return ret; +} diff --git a/src/msm/msmsys.c b/src/msm/msmsys.c new file mode 100644 index 00000000..916e03b0 --- /dev/null +++ b/src/msm/msmsys.c @@ -0,0 +1,912 @@ +#include "msm/msmsys.h" +#include "msm/msmfio.h" +#include "msm/msmmem.h" +#include "msm/msmmus.h" +#include "msm/msmse.h" +#include "msm/msmstream.h" + +static MSM_SYS sys; + +static void msmSysServer(void) +{ + if (sndIsInstalled() == 1) { + if (--sys.timer == 0) { + sys.timer = 3; + msmMusPeriodicProc(); + msmSePeriodicProc(); + msmStreamPeriodicProc(); + } + } + sys.oldAIDCallback(); +} + +static s32 msmSysSetAuxParam(s32 auxA, s32 auxB) +{ + s32 unused_1[2]; + SND_AUX_CALLBACK auxcb[2]; + s32 unused_2[2]; + MSM_AUXPARAM *auxParam; + MSM_AUX *aux; + u32 result; + s32 i; + + if (sys.auxParamNo[0] != MSM_AUXNO_NULL && auxA >= 0) { + sys.auxParamNo[0] = auxA; + } + if (sys.auxParamNo[1] != MSM_AUXNO_NULL && auxB >= 0) { + sys.auxParamNo[1] = auxB; + } + if (sys.auxParamNo[0] < 0 && sys.auxParamNo[1] < 0) { + return 0; + } + for (i = 0; i < 2; i++) { + if (sys.auxParamNo[i] < 0) { + auxcb[i] = NULL; + continue; + } + auxParam = &sys.auxParam[sys.auxParamNo[i]]; + aux = &sys.aux[i]; + switch (auxParam->type) { + case MSM_AUX_REVERBHI: + auxcb[i] = sndAuxCallbackReverbHI; + aux->revHi.tempDisableFX = auxParam->revHi.tempDisableFX; + aux->revHi.coloration = auxParam->revHi.coloration; + aux->revHi.mix = auxParam->revHi.mix; + aux->revHi.time = auxParam->revHi.time; + aux->revHi.damping = auxParam->revHi.damping; + aux->revHi.preDelay = auxParam->revHi.preDelay; + aux->revHi.crosstalk = auxParam->revHi.crosstalk; + result = sndAuxCallbackPrepareReverbHI(&aux->revHi); + break; + + case MSM_AUX_REVERBSTD: + auxcb[i] = sndAuxCallbackReverbSTD; + aux->revStd.tempDisableFX = auxParam->revStd.tempDisableFX; + aux->revStd.coloration = auxParam->revStd.coloration; + aux->revStd.mix = auxParam->revStd.mix; + aux->revStd.time = auxParam->revStd.time; + aux->revStd.damping = auxParam->revStd.damping; + aux->revStd.preDelay = auxParam->revStd.preDelay; + result = sndAuxCallbackPrepareReverbSTD(&aux->revStd); + break; + + case MSM_AUX_CHORUS: + auxcb[i] = sndAuxCallbackChorus; + aux->chorus.baseDelay = auxParam->chorus.baseDelay; + aux->chorus.variation = auxParam->chorus.variation; + aux->chorus.period = auxParam->chorus.period; + result = sndAuxCallbackPrepareChorus(&aux->chorus); + break; + + case MSM_AUX_DELAY: + auxcb[i] = sndAuxCallbackDelay; + aux->delay.delay[0] = auxParam->delay.delay[0]; + aux->delay.feedback[0] = auxParam->delay.feedback[0]; + aux->delay.output[0] = auxParam->delay.output[0]; + aux->delay.delay[1] = auxParam->delay.delay[1]; + aux->delay.feedback[1] = auxParam->delay.feedback[1]; + aux->delay.output[1] = auxParam->delay.output[1]; + aux->delay.delay[2] = auxParam->delay.delay[2]; + aux->delay.feedback[2] = auxParam->delay.feedback[2]; + aux->delay.output[2] = auxParam->delay.output[2]; + result = sndAuxCallbackPrepareDelay(&aux->delay); + break; + } + if (result == FALSE) { + return TRUE; + } + } + sndSetAuxProcessingCallbacks(0, auxcb[0], &sys.aux[0], 0xFF, 0, auxcb[1], &sys.aux[1], 0xFF, 0); + return FALSE; +} + +static s32 msmSysLoadBaseGroup(void *buf) +{ + DVDFileInfo file; + s32 i; + MSM_GRP_HEAD *grpData; + MSM_GRP_INFO *grpInfo; + + if (msmFioOpen(sys.msmEntryNum, &file) != TRUE) { + return MSM_ERR_OPENFAIL; + } + for(i = 0; i < sys.baseGrpNum; i++) { + grpData = sys.grpData[i]; + grpInfo = &sys.grpInfo[sys.info->baseGrp[i]]; + if (msmFioRead(&file, grpData, grpInfo->dataSize, grpInfo->dataOfs + sys.header->grpDataOfs) < 0) { + msmFioClose(&file); + return MSM_ERR_READFAIL; + } + if (msmFioRead(&file, buf, grpInfo->sampSize, grpInfo->sampOfs + sys.header->sampOfs) < 0) { + msmFioClose(&file); + return MSM_ERR_READFAIL; + } + if (!sndPushGroup((void*) (grpData->projOfs + (u32) grpData), grpInfo->gid, buf, + (void*) (grpData->sdirOfs + (u32) grpData), (void*) (grpData->poolOfs + (u32) grpData))) + { + msmFioClose(&file); + return MSM_ERR_GRP_FAILPUSH; + } + sys.aramP += grpInfo->sampSize; + } + msmFioClose(&file); + return 0; +} + +s32 msmSysSearchGroupStack(s32 grpId, s32 no) +{ + MSM_GRP_STACK *stack; + u32 stackNo; + s32 i; + s32 stackNoB; + s32 stackNoA; + s32 maxNo; + s32 stackMax; + + stackNoA = -1; + maxNo = 0; + if (sys.grpInfo[grpId].stackNo == 0) { + stack = sys.grpStackA; + stackMax = sys.grpStackAMax; + } else { + stack = sys.grpStackB; + stackMax = sys.grpStackBMax; + } + for (i = 0; i < stackMax; stack++, i++) { + if (i == no) { + continue; + } + if ((stackNo = stack->num) != 0) { + if (stack->baseGrpF == 0 && stackNo > maxNo) { + maxNo = stackNo; + stackNoB = -(i + 1); + } + } else { + stackNoA = i; + } + } + return (stackNoA < 0) ? stackNoB : stackNoA; +} + +s32 msmSysGroupInit(DVDFileInfo *file) +{ + s32 i; + MSM_GRP_STACK *stack; + MSM_GRP_INFO *grpInfo; + + sys.grpMax = sys.info->grpMax; + sys.grpNum = 1; + sys.baseGrpNum = sys.info->baseGrpNum; + sys.grpStackAMax = sys.info->stackDepthA; + sys.grpStackADepth = 0; + sys.grpStackAOfs = 0; + sys.grpStackBMax = sys.info->stackDepthB; + sys.grpStackBDepth = 0; + sys.grpStackBOfs = 0; + if ((sys.grpInfo = msmMemAlloc(sys.header->grpInfoSize)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(file, sys.grpInfo, sys.header->grpInfoSize, sys.header->grpInfoOfs) < 0) { + return MSM_ERR_READFAIL; + } + if ((sys.grpBufA = msmMemAlloc(sys.info->grpBufSizeA * sys.grpStackAMax)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if ((sys.grpBufB = msmMemAlloc(sys.info->grpBufSizeB * sys.grpStackBMax)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (sys.header->grpSetSize) { + if ((sys.grpSet = msmMemAlloc(sys.header->grpSetSize)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(file, sys.grpSet, sys.header->grpSetSize, sys.header->grpSetOfs) < 0) { + return MSM_ERR_READFAIL; + } + } else { + sys.grpSet = NULL; + } + for (i = 0; i < sys.grpStackAMax; i++) { + stack = &sys.grpStackA[i]; + stack->grpId = stack->baseGrpF = 0; + stack->num = 0; + stack->buf = (void*) ((u32) sys.grpBufA + sys.info->grpBufSizeA * i); + } + for (i = 0; i < sys.grpStackBMax; i++) { + stack = &sys.grpStackB[i]; + stack->grpId = stack->baseGrpF = 0; + stack->num = 0; + stack->buf = (void*) ((u32) sys.grpBufB + sys.info->grpBufSizeB * i); + } + sys.sampSize = 0; + for (i = 0; i < sys.baseGrpNum; i++) { + grpInfo = &sys.grpInfo[sys.info->baseGrp[i]]; + if ((sys.grpData[i] = msmMemAlloc(grpInfo->dataSize)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (sys.sampSize < grpInfo->sampSize) { + sys.sampSize = grpInfo->sampSize; + } + grpInfo->sampSize *= -1; + } + sys.sampSizeBase = 0; + for (i = 1; i < sys.grpMax; i++) { + grpInfo = &sys.grpInfo[i]; + if (grpInfo->sampSize < 0) { + grpInfo->sampSize *= -1; + } else if (sys.sampSizeBase < grpInfo->sampSize) { + sys.sampSizeBase = grpInfo->sampSize; + } + } + return 0; +} + +void msmSysIrqDisable(void) +{ + if (sys.irqDepth++ == 0) { + sys.irqState = OSDisableInterrupts(); + } +} + +void msmSysIrqEnable(void) +{ + if (sys.irqDepth != 0) { + if (--sys.irqDepth == 0) { + OSRestoreInterrupts(sys.irqState); + } + } +} + +static BOOL msmSysCheckBaseGroupNo(s32 grpId) +{ + s32 i; + + for (i = 0; i < sys.baseGrpNum + sys.grpStackAOfs + sys.grpStackBOfs; i++) { + if (sys.info->baseGrp[i] == grpId) { + return TRUE; + } + } + return FALSE; +} + +BOOL msmSysCheckBaseGroup(s32 grpId) +{ + s32 i; + + for (i = 0; i < sys.baseGrpNum + sys.grpStackAOfs + sys.grpStackBOfs; i++) { + if (sys.grpInfo[sys.info->baseGrp[i]].gid == grpId) { + return TRUE; + } + } + return FALSE; +} + +void *msmSysGetGroupDataPtr(s32 grpId) +{ + MSM_GRP_STACK *grp; + s32 i; + + for (i = 0; i < sys.baseGrpNum; i++) { + if (sys.info->baseGrp[i] == grpId) { + return sys.grpData[i]; + } + } + for (i = 0; i < sys.grpStackAMax; i++) { + grp = &sys.grpStackA[i]; + if (grp->num != 0 && grp->grpId == grpId) { + return grp->buf; + } + } + for (i = 0; i < sys.grpStackBMax; i++) { + grp = &sys.grpStackB[i]; + if (grp->num != 0 && grp->grpId == grpId) { + return grp->buf; + } + } + return NULL; +} + +BOOL msmSysCheckLoadGroupID(s32 grpId) +{ + MSM_GRP_STACK *grp; + s32 i; + + for (i = 0; i < sys.baseGrpNum + sys.grpStackAOfs + sys.grpStackBOfs; i++) { + if (sys.grpInfo[sys.info->baseGrp[i]].gid == grpId) { + return TRUE; + } + } + for (i = 0; i < sys.grpStackAMax; i++) { + grp = &sys.grpStackA[i]; + if (grp->num != 0 && sys.grpInfo[grp->grpId].gid == grpId) { + return TRUE; + } + } + for (i = 0; i < sys.grpStackBMax; i++) { + grp = &sys.grpStackB[i]; + if (grp->num != 0 && sys.grpInfo[grp->grpId].gid == grpId) { + return TRUE; + } + } + return FALSE; +} + +void msmSysRegularProc(void) +{ +} + +s32 msmSysGetOutputMode(void) +{ + return sys.outputMode; +} + +BOOL msmSysSetOutputMode(SND_OUTPUTMODE mode) +{ + SND_OUTPUTMODE var_r3; + BOOL failF; + + failF = 0; + sys.outputMode = mode; + switch (mode) { + case SND_OUTPUTMODE_MONO: + var_r3 = SND_OUTPUTMODE_MONO; + break; + case SND_OUTPUTMODE_SURROUND: + if (sys.info->surroundF != 0) { + var_r3 = SND_OUTPUTMODE_SURROUND; + } else { + sys.outputMode = SND_OUTPUTMODE_STEREO; + var_r3 = SND_OUTPUTMODE_STEREO; + failF = 1; + } + break; + case SND_OUTPUTMODE_STEREO: + default: + var_r3 = SND_OUTPUTMODE_STEREO; + break; + } + sndOutputMode(var_r3); + msmStreamSetOutputMode(sys.outputMode); + OSSetSoundMode((mode != SND_OUTPUTMODE_MONO) ? 1 : 0); + return failF; +} + +s32 msmSysSetAux(s32 auxA, s32 auxB) +{ + s32 i; + + sndSetAuxProcessingCallbacks(0, NULL, NULL, 0, 0, NULL, NULL, 0, 0); + for (i = 1; i >= 0; i--) { + if (sys.auxParamNo[i] < 0) { + continue; + } + switch (sys.auxParam[sys.auxParamNo[i]].type) { + case 0: + sndAuxCallbackShutdownReverbHI(&sys.aux[i].revHi); + break; + case 1: + sndAuxCallbackShutdownReverbSTD(&sys.aux[i].revStd); + break; + case 2: + sndAuxCallbackShutdownChorus(&sys.aux[i].chorus); + break; + case 3: + sndAuxCallbackShutdownDelay(&sys.aux[i].delay); + break; + } + } + if (msmSysSetAuxParam(auxA, auxB) != 0) { + return MSM_ERR_INVALID_AUXPARAM; + } + return 0; +} + +s32 msmSysGetSampSize(BOOL baseGrp) +{ + if (baseGrp != 0) { + return sys.sampSizeBase; + } + return sys.sampSize; +} + +s32 msmSysDelGroupAll(void) +{ + MSM_GRP_STACK *grp; + s32 i; + + for (i = 0; i < sys.grpStackBMax; i++) { + grp = &sys.grpStackB[i]; + if (grp->num != 0 && grp->baseGrpF == 0) { + grp->num = 0; + sndPopGroup(); + sys.aramP -= sys.grpInfo[grp->grpId].sampSize; + sys.grpStackBDepth--; + } + } + for (i = 0; i < sys.grpStackAMax; i++) { + grp = &sys.grpStackA[i]; + if (grp->num != 0 && grp->baseGrpF == 0) { + grp->num = 0; + sndPopGroup(); + sys.aramP -= sys.grpInfo[grp->grpId].sampSize; + sys.grpStackADepth--; + } + } + return 0; +} + +s32 msmSysDelGroupBase(s32 grpNum) +{ + s32 j; + MSM_GRP_STACK *grp; + s32 i; + s8 level; + s8 stackBF; + s32 grpMaxNum; + + if (sys.grpStackAOfs + sys.grpStackBOfs == 0) { + return 0; + } + if (grpNum >= sys.grpStackAOfs + sys.grpStackBOfs) { + grpNum = 0; + } + if (grpNum != 0) { + msmSysDelGroupAll(); + for (i = 0; i < grpNum; i++) { + grpMaxNum = 0; + for (j = 0; j < sys.grpStackAMax; j++) { + grp = &sys.grpStackA[j]; + if (grp->num > grpMaxNum) { + grpMaxNum = grp->num; + level = j; + stackBF = FALSE; + } + } + for (j = 0; j < sys.grpStackBMax; j++) { + grp = &sys.grpStackB[j]; + if (grp->num > grpMaxNum) { + grpMaxNum = grp->num; + level = j; + stackBF = TRUE; + } + } + if (stackBF == FALSE) { + grp = &sys.grpStackA[level]; + sys.grpStackADepth--; + sys.grpStackAOfs--; + } else { + grp = &sys.grpStackB[level]; + sys.grpStackBDepth--; + sys.grpStackBOfs--; + } + sndPopGroup(); + sys.aramP -= sys.grpInfo[grp->grpId].sampSize; + grp->baseGrpF = 0; + grp->num = 0; + } + } else { + for (i = 0; i < sys.grpStackAMax; i++) { + grp = &sys.grpStackA[i]; + if (grp->num != 0) { + sndPopGroup(); + sys.aramP -= sys.grpInfo[grp->grpId].sampSize; + grp->baseGrpF = 0; + grp->num = 0; + } + } + for (i = 0; i < sys.grpStackBMax; i++) { + grp = &sys.grpStackB[i]; + if (grp->num != 0) { + sndPopGroup(); + sys.aramP -= sys.grpInfo[grp->grpId].sampSize; + grp->baseGrpF = 0; + grp->num = 0; + } + } + sys.grpStackBOfs = 0; + sys.grpStackBDepth = 0; + sys.grpStackAOfs = 0; + sys.grpStackADepth = 0; + } + return 0; +} + +static s32 msmSysPushGroup(DVDFileInfo *file, void *buf, MSM_GRP_STACK *grp, s32 grpId) +{ + MSM_GRP_INFO *grpInfo; + MSM_GRP_HEAD *grpBuf; + + grpInfo = &sys.grpInfo[grpId]; + if (msmFioRead(file, grp->buf, grpInfo->dataSize, grpInfo->dataOfs + sys.header->grpDataOfs) < 0) { + return MSM_ERR_READFAIL; + } + if (msmFioRead(file, buf, grpInfo->sampSize, grpInfo->sampOfs + sys.header->sampOfs) < 0) { + return MSM_ERR_READFAIL; + } + grpBuf = grp->buf; + if (!sndPushGroup((void*) (grpBuf->projOfs + (u32) grpBuf), grpInfo->gid, buf, + (void*) (grpBuf->sdirOfs + (u32) grpBuf), (void*) (grpBuf->poolOfs + (u32) grpBuf))) + { + return MSM_ERR_GRP_FAILPUSH; + } + sys.aramP += grpInfo->sampSize; + grp->grpId = grpId; + grp->num = sys.grpNum++; + return 0; +} + +s32 msmSysLoadGroupBase(s32 grpId, void *buf) +{ + s32 temp_r29; + s32 temp_r28; + s32 var_r23; + s32 temp_r3_2; + MSM_GRP_STACK *var_r24; + DVDFileInfo sp10; + + if (grpId < 1 || grpId >= sys.grpMax) { + return MSM_ERR_64; + } + var_r23 = msmSysDelGroupAll(); + if (var_r23 != 0) { + return var_r23; + } + temp_r29 = sys.baseGrpNum + sys.grpStackAOfs + sys.grpStackBOfs; + if (msmSysCheckBaseGroupNo(grpId)) { + return 0; + } + if (temp_r29 >= 0xF) { + return MSM_ERR_STACK_OVERFLOW; + } + temp_r3_2 = msmSysSearchGroupStack(grpId, -1); + if (temp_r3_2 < 0) { + return MSM_ERR_STACK_OVERFLOW; + } + temp_r28 = sys.grpInfo[grpId].stackNo; + if (!temp_r28) { + var_r24 = &sys.grpStackA[temp_r3_2]; + } else { + var_r24 = &sys.grpStackB[temp_r3_2]; + } + if (msmFioOpen(sys.msmEntryNum, &sp10) != 1) { + return MSM_ERR_OPENFAIL; + } + var_r23 = msmSysPushGroup(&sp10, buf, var_r24, grpId); + if (var_r23 != 0) { + msmFioClose(&sp10); + return var_r23; + } + msmFioClose(&sp10); + sys.info->baseGrp[temp_r29] = grpId; + var_r24->baseGrpF = 1; + if (temp_r28 == 0) { + sys.grpStackAOfs++; + sys.grpStackADepth++; + } else { + sys.grpStackBOfs++; + sys.grpStackBDepth++; + } + return 0; +} + +static s32 msmSysGetNumGroupSet(void) +{ + if (sys.grpSet != NULL) { + return sys.grpSet->numGrpSet; + } + return 0; +} + +s32 msmSysLoadGroupSet(s32 arg0, void *arg1) +{ + s8 grpId[10]; + DVDFileInfo file; + s32 result; + s32 stackLevel; + s32 pushResult; + s32 i; + s32 grpSetNum; + s8 *grpSet; + + if (msmSysGetNumGroupSet() == 0) { + return 0; + } + result = msmSysDelGroupAll(); + if (result != 0) { + return result; + } + grpSet = &sys.grpSet->data[sys.grpSet->grpSetW * arg0]; + if (msmFioOpen(sys.msmEntryNum, &file) != TRUE) { + return MSM_ERR_OPENFAIL; + } + sys.grpStackADepth = sys.grpStackAOfs; + grpSetNum = 0; + for (; *grpSet != 0; grpSet++) { + if (msmSysCheckBaseGroupNo(*grpSet)) { + continue; + } + if (sys.grpInfo[(s8) *grpSet].stackNo == 1) { + grpId[grpSetNum++] = *grpSet; + } else { + stackLevel = msmSysSearchGroupStack(*grpSet, -1); + if (stackLevel < 0) { + msmFioClose(&file); + return MSM_ERR_STACK_OVERFLOW; + } + pushResult = msmSysPushGroup(&file, arg1, &sys.grpStackA[stackLevel], *grpSet); + if (pushResult != 0) { + msmFioClose(&file); + return pushResult; + } + sys.grpStackADepth++; + } + } + sys.grpStackBDepth = sys.grpStackBOfs; + for (i = 0; i < grpSetNum; i++) { + stackLevel = msmSysSearchGroupStack(grpId[i], -1); + if (stackLevel < 0) { + msmFioClose(&file); + return MSM_ERR_STACK_OVERFLOW; + } + pushResult = msmSysPushGroup(&file, arg1, &sys.grpStackB[stackLevel], grpId[i]); + if (pushResult != 0) { + msmFioClose(&file); + return pushResult; + } + sys.grpStackBDepth++; + } + msmFioClose(&file); + return 0; +} + +static s32 msmSysLoadGroupSub(DVDFileInfo *file, s32 grpId, void *buf) +{ + s32 grpIdResult; + s32 i; + s32 stackLevel; + s32 result; + u8 *stackDepth; + MSM_GRP_STACK *grpStack; + MSM_GRP_INFO *temp_r23; + + grpIdResult = 0; + temp_r23 = &sys.grpInfo[grpId]; + if (temp_r23->stackNo == 0) { + grpStack = sys.grpStackA; + stackDepth = &sys.grpStackADepth; + } else { + grpStack = sys.grpStackB; + stackDepth = &sys.grpStackBDepth; + } + if (temp_r23->subGrpId != 0) { + if (!msmSysCheckBaseGroup(sys.grpInfo[temp_r23->subGrpId].gid)) { + stackLevel = -1; + for (i = 0; i < 2; i++) { + stackLevel = msmSysSearchGroupStack(temp_r23->subGrpId, stackLevel); + if (stackLevel < 0) { + stackLevel = -(stackLevel + 1); + (*stackDepth)--; + sndPopGroup(); + sys.aramP -= sys.grpInfo[grpStack[stackLevel].grpId].sampSize; + grpIdResult = grpStack[stackLevel].grpId; + grpStack[stackLevel].num = 0; + } + } + result = msmSysPushGroup(file, buf, &grpStack[stackLevel], temp_r23->subGrpId); + if (result != 0) { + return result; + } + (*stackDepth)++; + } + } + stackLevel = msmSysSearchGroupStack(grpId, -1); + if (stackLevel < 0) { + stackLevel = -(stackLevel + 1); + (*stackDepth)--; + sndPopGroup(); + sys.aramP -= sys.grpInfo[grpStack[stackLevel].grpId].sampSize; + grpIdResult = grpStack[stackLevel].grpId; + } + result = msmSysPushGroup(file, buf, &grpStack[stackLevel], grpId); + if (result == 0) { + result = grpIdResult; + } + (*stackDepth)++; + return result; +} + +static void msmSysPopGroup(s32 no) +{ + MSM_GRP_STACK *grp; + + grp = &sys.grpStackB[no]; + if (grp->num != 0 && grp->baseGrpF == 0) { + sndPopGroup(); + sys.aramP -= sys.grpInfo[grp->grpId].sampSize; + } +} + +s32 msmSysLoadGroup(s32 grpId, void *buf) +{ + MSM_GRP_STACK *grpStack; + MSM_GRP_INFO *grpInfo; + s32 pushResult; + s32 i; + s32 result; + DVDFileInfo file; + s32 unused; + + if (buf == NULL) { + return 0; + } + if (grpId == 0) { + return msmSysLoadBaseGroup(buf); + } + grpInfo = &sys.grpInfo[grpId]; + if (msmSysCheckLoadGroupID(grpInfo->gid)) { + return 0; + } + if (msmFioOpen(sys.msmEntryNum, &file) != TRUE) { + return MSM_ERR_OPENFAIL; + } + if (grpInfo->stackNo == 0) { + for (i = 0; i < sys.grpStackBMax; i++) { + msmSysPopGroup(i); + } + result = msmSysLoadGroupSub(&file, grpId, buf); + for (i = 0; i < sys.grpStackBMax; i++) { + grpStack = &sys.grpStackB[i]; + if (grpStack->num != 0 && grpStack->baseGrpF == 0) { + pushResult = msmSysPushGroup(&file, buf, grpStack, grpStack->grpId); + if (pushResult != 0) { + msmFioClose(&file); + return pushResult; + } + } + } + } else { + result = msmSysLoadGroupSub(&file, grpId, buf); + } + msmFioClose(&file); + return result; +} + +void msmSysCheckInit(void) +{ + sndIsInstalled(); +} + +s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) +{ + s32 result; + void *temp; + + SND_HOOKS sndHooks = { msmMemAlloc, msmMemFree }; + DVDFileInfo sp10; + if (sndIsInstalled() == 1) { + return MSM_ERR_INSTALLED; + } + result = 0; // retErr + sys.irqDepth = 0; + msmMemInit(init->heap, init->heapSize); + msmFioInit(init->open, init->read, init->close); + sys.msmEntryNum = DVDConvertPathToEntrynum(init->msmPath); + if (sys.msmEntryNum < 0) { + return MSM_ERR_OPENFAIL; + } + if (msmFioOpen(sys.msmEntryNum, &sp10) != 1) { + return MSM_ERR_OPENFAIL; + } + if ((sys.header = msmMemAlloc(0x60)) == NULL) { + msmFioClose(&sp10); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&sp10, sys.header, 0x60, 0) < 0) { + msmFioClose(&sp10); + return MSM_ERR_READFAIL; + } + if (sys.header->version != MSM_FILE_VERSION) { + msmFioClose(&sp10); + return MSM_ERR_INVALIDFILE; + } + if ((sys.info = msmMemAlloc(sys.header->infoSize)) == NULL) { + msmFioClose(&sp10); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&sp10, sys.info, sys.header->infoSize, sys.header->infoOfs) < 0) { + msmFioClose(&sp10); + return MSM_ERR_READFAIL; + } + if (aram != NULL) { + if (aram->skipARInit == 0) { + ARInit(aram->stackIndex, aram->aramEnd); + ARQInit(); + aram = (MSM_ARAM *)ARAlloc(sys.info->aramSize); + if ((u32)aram != ARGetBaseAddress()) { + msmFioClose(&sp10); + return MSM_ERR_OUTOFAMEM; + } + sys.arInitF = FALSE; + } + else { + if ((sys.info->aramSize + ARGetBaseAddress()) > aram->aramEnd) { + msmFioClose(&sp10); + return MSM_ERR_OUTOFAMEM; + } + ARInit(NULL, 0); + ARQInit(); + sys.arInitF = TRUE; + } + } + result = msmSysGroupInit(&sp10); + if (result != 0) { + msmFioClose(&sp10); + return result; + } + result = msmMusInit(&sys, &sp10); + if (result != 0) { + msmFioClose(&sp10); + return result; + } + result = msmSeInit(&sys, &sp10); + if (result != 0) { + msmFioClose(&sp10); + return result; + } + sys.auxParamNo[0] = sys.info->auxParamA == MSM_AUXNO_NULL ? MSM_AUXNO_NULL : MSM_AUXNO_UNSET; + sys.auxParamNo[1] = sys.info->auxParamB == MSM_AUXNO_NULL ? MSM_AUXNO_NULL : MSM_AUXNO_UNSET; + if ((s32)sys.header->auxParamSize == 0) { + result = 0; + } + else { + if ((sys.auxParam = msmMemAlloc(sys.header->auxParamSize)) == NULL) { + result = MSM_ERR_OUTOFMEM; + } + else { + if (msmFioRead(&sp10, sys.auxParam, sys.header->auxParamSize, sys.header->auxParamOfs) < 0) { + result = MSM_ERR_READFAIL; + } + else { + result = 0; + } + } + } + if (result != 0) { + msmFioClose(&sp10); + return result; + } + msmFioClose(&sp10); + result = msmStreamInit(init->pdtPath); + if (result < 0) { + return result; + } + AIInit(NULL); + sndSetHooks(&sndHooks); + if (sndInit(sys.info->voices, sys.info->music, sys.info->sfx, 1, 0, sys.info->aramSize) != 0) { + return MSM_ERR_INITFAIL; + } + sys.oldAIDCallback = AIRegisterDMACallback(msmSysServer); + sys.timer = 1; + result = msmStreamAmemAlloc(); + if (result < 0) { + sndQuit(); + return result; + } + sys.aramP = result + 0x500; + if ((int)sys.info->minMem != 0) { + temp = msmMemAlloc(sys.info->minMem + 0x100); + if (temp == NULL) { + msmStreamAmemFree(); + sndQuit(); + return MSM_ERR_OUTOFMEM; + } + msmMemFree(temp); + } + if (msmSysSetAuxParam(sys.info->auxParamA, sys.info->auxParamB) != 0) { + msmStreamAmemFree(); + sndQuit(); + return MSM_ERR_INVALID_AUXPARAM; + } + msmSysSetOutputMode(OSGetSoundMode() == 0 ? SND_OUTPUTMODE_MONO : SND_OUTPUTMODE_STEREO); + sndVolume(0x7F, 0, 0xFF); + return 0; +} diff --git a/src/odenotstub/odenotstub.c b/src/odenotstub/odenotstub.c new file mode 100644 index 00000000..2aeb1140 --- /dev/null +++ b/src/odenotstub/odenotstub.c @@ -0,0 +1,7 @@ +#include + +int Hu_IsStub(); + +int Hu_IsStub() { + return 0; +} diff --git a/tools/decompctx.py b/tools/decompctx.py index e86d5ef3..87cfb7ef 100644 --- a/tools/decompctx.py +++ b/tools/decompctx.py @@ -23,8 +23,8 @@ include_dirs = [ # Add additional include directories here ] -include_pattern = re.compile(r'^#include\s*[<"](.+?)[>"]$') -guard_pattern = re.compile(r"^#ifndef\s+(.*)$") +include_pattern = re.compile(r'^#\s*include\s*[<"](.+?)[>"]') +guard_pattern = re.compile(r"^#\s*ifndef\s+(.*)$") defines = set() diff --git a/tools/download_tool.py b/tools/download_tool.py index 7b386a4b..f4512d01 100644 --- a/tools/download_tool.py +++ b/tools/download_tool.py @@ -56,6 +56,22 @@ def dtk_url(tag: str) -> str: return f"{repo}/releases/download/{tag}/dtk-{system}-{arch}{suffix}" +def objdiff_cli_url(tag: str) -> str: + uname = platform.uname() + suffix = "" + system = uname.system.lower() + if system == "darwin": + system = "macos" + elif system == "windows": + suffix = ".exe" + arch = uname.machine.lower() + if arch == "amd64": + arch = "x86_64" + + repo = "https://github.com/encounter/objdiff" + return f"{repo}/releases/download/{tag}/objdiff-cli-{system}-{arch}{suffix}" + + def sjiswrap_url(tag: str) -> str: repo = "https://github.com/encounter/sjiswrap" return f"{repo}/releases/download/{tag}/sjiswrap-windows-x86.exe" @@ -70,6 +86,7 @@ TOOLS: Dict[str, Callable[[str], str]] = { "binutils": binutils_url, "compilers": compilers_url, "dtk": dtk_url, + "objdiff-cli": objdiff_cli_url, "sjiswrap": sjiswrap_url, "wibo": wibo_url, } diff --git a/tools/project.py b/tools/project.py index 8f8c6e07..b4469fcd 100644 --- a/tools/project.py +++ b/tools/project.py @@ -17,7 +17,7 @@ import os import platform import sys from pathlib import Path -from typing import Any, Dict, List, Optional, Set, Tuple, Union +from typing import IO, Any, Dict, Iterable, List, Optional, Set, Tuple, Union, cast from . import ninja_syntax from .ninja_syntax import serialize_path @@ -29,24 +29,93 @@ if sys.platform == "cygwin": f"\n(Current path: {sys.executable})" ) +Library = Dict[str, Any] + class Object: def __init__(self, completed: bool, name: str, **options: Any) -> None: self.name = name - self.base_name = Path(name).with_suffix("") self.completed = completed self.options: Dict[str, Any] = { - "add_to_all": True, + "add_to_all": None, "asflags": None, - "extra_asflags": None, + "asm_dir": None, "cflags": None, - "extra_cflags": None, + "extra_asflags": [], + "extra_cflags": [], + "extra_clang_flags": [], + "host": None, + "lib": None, "mw_version": None, + "progress_category": None, "shift_jis": None, "source": name, + "src_dir": None, } self.options.update(options) + # Internal + self.src_path: Optional[Path] = None + self.asm_path: Optional[Path] = None + self.src_obj_path: Optional[Path] = None + self.asm_obj_path: Optional[Path] = None + self.host_obj_path: Optional[Path] = None + self.ctx_path: Optional[Path] = None + + def resolve(self, config: "ProjectConfig", lib: Library) -> "Object": + # Use object options, then library options + obj = Object(self.completed, self.name, **lib) + for key, value in self.options.items(): + if value is not None or key not in obj.options: + obj.options[key] = value + + # Use default options from config + def set_default(key: str, value: Any) -> None: + if obj.options[key] is None: + obj.options[key] = value + + set_default("add_to_all", True) + set_default("asflags", config.asflags) + set_default("asm_dir", config.asm_dir) + set_default("host", False) + set_default("mw_version", config.linker_version) + set_default("shift_jis", config.shift_jis) + set_default("src_dir", config.src_dir) + + # Validate progress categories + def check_category(category: str): + if not any(category == c.id for c in config.progress_categories): + sys.exit( + f"Progress category '{category}' missing from config.progress_categories" + ) + + progress_category = obj.options["progress_category"] + if isinstance(progress_category, list): + for category in progress_category: + check_category(category) + elif progress_category is not None: + check_category(progress_category) + + # Resolve paths + build_dir = config.out_path() + obj.src_path = Path(obj.options["src_dir"]) / obj.options["source"] + if obj.options["asm_dir"] is not None: + obj.asm_path = ( + Path(obj.options["asm_dir"]) / obj.options["source"] + ).with_suffix(".s") + base_name = Path(self.name).with_suffix("") + obj.src_obj_path = build_dir / "src" / f"{base_name}.o" + obj.asm_obj_path = build_dir / "mod" / f"{base_name}.o" + obj.host_obj_path = build_dir / "host" / f"{base_name}.o" + obj.ctx_path = build_dir / "src" / f"{base_name}.ctx" + return obj + + +class ProgressCategory: + def __init__(self, id: str, name: str) -> None: + self.id = id + self.name = name + class ProjectConfig: def __init__(self) -> None: @@ -54,29 +123,33 @@ class ProjectConfig: self.build_dir: Path = Path("build") # Output build files self.src_dir: Path = Path("src") # C/C++/asm source files self.tools_dir: Path = Path("tools") # Python scripts - self.asm_dir: Path = Path("asm") # Override incomplete objects (for modding) + self.asm_dir: Optional[Path] = Path( + "asm" + ) # Override incomplete objects (for modding) # Tooling self.binutils_tag: Optional[str] = None # Git tag self.binutils_path: Optional[Path] = None # If None, download self.dtk_tag: Optional[str] = None # Git tag - self.build_dtk_path: Optional[Path] = None # If None, download + self.dtk_path: Optional[Path] = None # If None, download self.compilers_tag: Optional[str] = None # 1 self.compilers_path: Optional[Path] = None # If None, download self.wibo_tag: Optional[str] = None # Git tag self.wrapper: Optional[Path] = None # If None, download wibo on Linux self.sjiswrap_tag: Optional[str] = None # Git tag self.sjiswrap_path: Optional[Path] = None # If None, download + self.objdiff_tag: Optional[str] = None # Git tag + self.objdiff_path: Optional[Path] = None # If None, download # Project config + self.non_matching: bool = False self.build_rels: bool = True # Build REL files self.check_sha_path: Optional[Path] = None # Path to version.sha1 self.config_path: Optional[Path] = None # Path to config.yml - self.debug: bool = False # Build with debug info self.generate_map: bool = False # Generate map file(s) self.asflags: Optional[List[str]] = None # Assembler flags self.ldflags: Optional[List[str]] = None # Linker flags - self.libs: Optional[List[Dict[str, Any]]] = None # List of libraries + self.libs: Optional[List[Library]] = None # List of libraries self.linker_version: Optional[str] = None # mwld version self.version: Optional[str] = None # Version name self.warn_missing_config: bool = False # Warn on missing unit configuration @@ -88,12 +161,30 @@ class ProjectConfig: self.shift_jis = ( True # Convert source files from UTF-8 to Shift JIS automatically ) + self.reconfig_deps: Optional[List[Path]] = ( + None # Additional re-configuration dependency files + ) + self.custom_build_rules: Optional[List[Dict[str, Any]]] = ( + None # Custom ninja build rules + ) + self.custom_build_steps: Optional[Dict[str, List[Dict[str, Any]]]] = ( + None # Custom build steps, types are ["pre-compile", "post-compile", "post-link", "post-build"] + ) + self.generate_compile_commands: bool = ( + True # Generate compile_commands.json for clangd + ) + self.extra_clang_flags: List[str] = [] # Extra flags for clangd - # Progress output and progress.json config + # Progress output, progress.json and report.json config + self.progress = True # Enable report.json generation and CLI progress output self.progress_all: bool = True # Include combined "all" category self.progress_modules: bool = True # Include combined "modules" category self.progress_each_module: bool = ( - True # Include individual modules, disable for large numbers of modules + False # Include individual modules, disable for large numbers of modules + ) + self.progress_categories: List[ProgressCategory] = [] # Additional categories + self.print_progress_categories: Union[bool, List[str]] = ( + True # Print additional progress categories in the CLI progress output ) # Progress fancy printing @@ -119,16 +210,52 @@ class ProjectConfig: if getattr(self, attr) is None: sys.exit(f"ProjectConfig.{attr} missing") - def find_object(self, name: str) -> Optional[Tuple[Dict[str, Any], Object]]: + # Creates a map of object names to Object instances + # Options are fully resolved from the library and object + def objects(self) -> Dict[str, Object]: + out = {} for lib in self.libs or {}: - for obj in lib["objects"]: - if obj.name == name: - return lib, obj - return None + objects: List[Object] = lib["objects"] + for obj in objects: + if obj.name in out: + sys.exit(f"Duplicate object name {obj.name}") + out[obj.name] = obj.resolve(self, lib) + return out + # Gets the output path for build-related files. def out_path(self) -> Path: return self.build_dir / str(self.version) + # Gets the path to the compilers directory. + # Exits the program if neither `compilers_path` nor `compilers_tag` is provided. + def compilers(self) -> Path: + if self.compilers_path: + return self.compilers_path + elif self.compilers_tag: + return self.build_dir / "compilers" + else: + sys.exit("ProjectConfig.compilers_tag missing") + + # Gets the wrapper to use for compiler commands, if set. + def compiler_wrapper(self) -> Optional[Path]: + wrapper = self.wrapper + + if self.use_wibo(): + wrapper = self.build_dir / "tools" / "wibo" + if not is_windows() and wrapper is None: + wrapper = Path("wine") + + return wrapper + + # Determines whether or not to use wibo as the compiler wrapper. + def use_wibo(self) -> bool: + return ( + self.wibo_tag is not None + and sys.platform == "linux" + and platform.machine() in ("i386", "x86_64") + and self.wrapper is None + ) + def is_windows() -> bool: return os.name == "nt" @@ -140,11 +267,26 @@ CHAIN = "cmd /c " if is_windows() else "" EXE = ".exe" if is_windows() else "" -def make_flags_str(cflags: Union[str, List[str]]) -> str: - if isinstance(cflags, list): - return " ".join(cflags) - else: - return cflags +def file_is_asm(path: Path) -> bool: + return path.suffix.lower() == ".s" + + +def file_is_c(path: Path) -> bool: + return path.suffix.lower() == ".c" + + +def file_is_cpp(path: Path) -> bool: + return path.suffix.lower() in (".cc", ".cp", ".cpp", ".cxx") + + +def file_is_c_cpp(path: Path) -> bool: + return file_is_c(path) or file_is_cpp(path) + + +def make_flags_str(flags: Optional[List[str]]) -> str: + if flags is None: + return "" + return " ".join(flags) # Load decomp-toolkit generated config.json @@ -160,15 +302,15 @@ def load_build_config( f = open(build_config_path, "r", encoding="utf-8") build_config: Dict[str, Any] = json.load(f) config_version = build_config.get("version") - if not config_version: - # Invalid config.json + if config_version is None: + print("Invalid config.json, regenerating...") f.close() os.remove(build_config_path) return None dtk_version = str(config.dtk_tag)[1:] # Strip v if versiontuple(config_version) < versiontuple(dtk_version): - # Outdated config.json + print("Outdated config.json, regenerating...") f.close() os.remove(build_config_path) return None @@ -177,19 +319,22 @@ def load_build_config( return build_config -# Generate build.ninja and objdiff.json +# Generate build.ninja, objdiff.json and compile_commands.json def generate_build(config: ProjectConfig) -> None: + config.validate() + objects = config.objects() build_config = load_build_config(config, config.out_path() / "config.json") - generate_build_ninja(config, build_config) - generate_objdiff_config(config, build_config) + generate_build_ninja(config, objects, build_config) + generate_objdiff_config(config, objects, build_config) + generate_compile_commands(config, objects, build_config) # Generate build.ninja def generate_build_ninja( - config: ProjectConfig, build_config: Optional[Dict[str, Any]] + config: ProjectConfig, + objects: Dict[str, Object], + build_config: Optional[Dict[str, Any]], ) -> None: - config.validate() - out = io.StringIO() n = ninja_syntax.Writer(out) n.variable("ninja_required_version", "1.3") @@ -207,13 +352,8 @@ def generate_build_ninja( # Variables ### n.comment("Variables") - ldflags = " ".join(config.ldflags or []) - if config.generate_map: - ldflags += " -mapunused" - if config.debug: - ldflags += " -g" - n.variable("ldflags", ldflags) - if not config.linker_version: + n.variable("ldflags", make_flags_str(config.ldflags)) + if config.linker_version is None: sys.exit("ProjectConfig.linker_version missing") n.variable("mw_version", Path(config.linker_version)) n.newline() @@ -225,6 +365,7 @@ def generate_build_ninja( build_path = config.out_path() progress_path = build_path / "progress.json" + report_path = build_path / "report.json" build_tools_path = config.build_dir / "tools" download_tool = config.tools_dir / "download_tool.py" n.rule( @@ -242,20 +383,32 @@ def generate_build_ninja( deps="gcc", ) - if config.build_dtk_path: + cargo_rule_written = False + + def write_cargo_rule(): + nonlocal cargo_rule_written + if not cargo_rule_written: + n.pool("cargo", 1) + n.rule( + name="cargo", + command="cargo build --release --manifest-path $in --bin $bin --target-dir $target", + description="CARGO $bin", + pool="cargo", + depfile=Path("$target") / "release" / "$bin.d", + deps="gcc", + ) + cargo_rule_written = True + + if config.dtk_path is not None and config.dtk_path.is_file(): + dtk = config.dtk_path + elif config.dtk_path is not None: dtk = build_tools_path / "release" / f"dtk{EXE}" - n.rule( - name="cargo", - command="cargo build --release --manifest-path $in --bin $bin --target-dir $target", - description="CARGO $bin", - depfile=Path("$target") / "release" / "$bin.d", - deps="gcc", - ) + write_cargo_rule() n.build( outputs=dtk, rule="cargo", - inputs=config.build_dtk_path / "Cargo.toml", - implicit=config.build_dtk_path / "Cargo.lock", + inputs=config.dtk_path / "Cargo.toml", + implicit=config.dtk_path / "Cargo.lock", variables={ "bin": "dtk", "target": build_tools_path, @@ -275,6 +428,35 @@ def generate_build_ninja( else: sys.exit("ProjectConfig.dtk_tag missing") + if config.objdiff_path is not None and config.objdiff_path.is_file(): + objdiff = config.objdiff_path + elif config.objdiff_path is not None: + objdiff = build_tools_path / "release" / f"objdiff-cli{EXE}" + write_cargo_rule() + n.build( + outputs=objdiff, + rule="cargo", + inputs=config.objdiff_path / "Cargo.toml", + implicit=config.objdiff_path / "Cargo.lock", + variables={ + "bin": "objdiff-cli", + "target": build_tools_path, + }, + ) + elif config.objdiff_tag: + objdiff = build_tools_path / f"objdiff-cli{EXE}" + n.build( + outputs=objdiff, + rule="download_tool", + implicit=download_tool, + variables={ + "tool": "objdiff-cli", + "tag": config.objdiff_tag, + }, + ) + else: + sys.exit("ProjectConfig.objdiff_tag missing") + if config.sjiswrap_path: sjiswrap = config.sjiswrap_path elif config.sjiswrap_tag: @@ -291,16 +473,10 @@ def generate_build_ninja( else: sys.exit("ProjectConfig.sjiswrap_tag missing") + wrapper = config.compiler_wrapper() # Only add an implicit dependency on wibo if we download it - wrapper = config.wrapper wrapper_implicit: Optional[Path] = None - if ( - config.wibo_tag is not None - and sys.platform == "linux" - and platform.machine() in ("i386", "x86_64") - and config.wrapper is None - ): - wrapper = build_tools_path / "wibo" + if wrapper is not None and config.use_wibo(): wrapper_implicit = wrapper n.build( outputs=wrapper, @@ -311,15 +487,11 @@ def generate_build_ninja( "tag": config.wibo_tag, }, ) - if not is_windows() and wrapper is None: - wrapper = Path("wine") wrapper_cmd = f"{wrapper} " if wrapper else "" + compilers = config.compilers() compilers_implicit: Optional[Path] = None - if config.compilers_path: - compilers = config.compilers_path - elif config.compilers_tag: - compilers = config.build_dir / "compilers" + if config.compilers_path is None and config.compilers_tag is not None: compilers_implicit = compilers n.build( outputs=compilers, @@ -330,8 +502,6 @@ def generate_build_ninja( "tag": config.compilers_tag, }, ) - else: - sys.exit("ProjectConfig.compilers_tag missing") binutils_implicit = None if config.binutils_path: @@ -353,6 +523,17 @@ def generate_build_ninja( n.newline() + ### + # Helper rule for downloading all tools + ### + n.comment("Download all tools") + n.build( + outputs="tools", + rule="phony", + inputs=[dtk, sjiswrap, wrapper, compilers, binutils, objdiff], + ) + n.newline() + ### # Build rules ### @@ -435,6 +616,49 @@ def generate_build_ninja( ) n.newline() + if len(config.custom_build_rules or {}) > 0: + n.comment("Custom project build rules (pre/post-processing)") + for rule in config.custom_build_rules or {}: + n.rule( + name=cast(str, rule.get("name")), + command=cast(str, rule.get("command")), + description=rule.get("description", None), + depfile=rule.get("depfile", None), + generator=rule.get("generator", False), + pool=rule.get("pool", None), + restat=rule.get("restat", False), + rspfile=rule.get("rspfile", None), + rspfile_content=rule.get("rspfile_content", None), + deps=rule.get("deps", None), + ) + n.newline() + + def write_custom_step(step: str) -> List[str | Path]: + implicit: List[str | Path] = [] + if config.custom_build_steps and step in config.custom_build_steps: + n.comment(f"Custom build steps ({step})") + for custom_step in config.custom_build_steps[step]: + outputs = cast(List[str | Path], custom_step.get("outputs")) + + if isinstance(outputs, list): + implicit.extend(outputs) + else: + implicit.append(outputs) + + n.build( + outputs=outputs, + rule=cast(str, custom_step.get("rule")), + inputs=custom_step.get("inputs", None), + implicit=custom_step.get("implicit", None), + order_only=custom_step.get("order_only", None), + variables=custom_step.get("variables", None), + implicit_outputs=custom_step.get("implicit_outputs", None), + pool=custom_step.get("pool", None), + dyndep=custom_step.get("dyndep", None), + ) + n.newline() + return implicit + n.comment("Host build") n.variable("host_cflags", "-I include -Wno-trigraphs") n.variable( @@ -453,14 +677,13 @@ def generate_build_ninja( ) n.newline() + # Add all build steps needed before we compile (e.g. processing assets) + precompile_implicit = write_custom_step("pre-compile") + ### # Source files ### n.comment("Source files") - build_asm_path = build_path / "mod" - build_src_path = build_path / "src" - build_host_path = build_path / "host" - build_config_path = build_path / "config.json" def map_path(path: Path) -> Path: return path.parent / (path.name + ".MAP") @@ -492,7 +715,6 @@ def generate_build_ninja( n.comment(f"Link {self.name}") if self.module_id == 0: elf_path = build_path / f"{self.name}.elf" - dol_path = build_path / f"{self.name}.dol" elf_ldflags = f"$ldflags -lcf {serialize_path(self.ldscript)}" if config.generate_map: elf_map = map_path(elf_path) @@ -503,16 +725,15 @@ def generate_build_ninja( outputs=elf_path, rule="link", inputs=self.inputs, - implicit=[self.ldscript, *mwld_implicit], + implicit=[ + *precompile_implicit, + self.ldscript, + *mwld_implicit, + *postcompile_implicit, + ], implicit_outputs=elf_map, variables={"ldflags": elf_ldflags}, ) - n.build( - outputs=dol_path, - rule="elf2dol", - inputs=elf_path, - implicit=dtk, - ) else: preplf_path = build_path / self.name / f"{self.name}.preplf" plf_path = build_path / self.name / f"{self.name}.plf" @@ -549,6 +770,7 @@ def generate_build_ninja( ) n.newline() + link_outputs: List[Path] = [] if build_config: link_steps: List[LinkStep] = [] used_compiler_versions: Set[str] = set() @@ -556,96 +778,101 @@ def generate_build_ninja( host_source_inputs: List[Path] = [] source_added: Set[Path] = set() - def c_build( - obj: Object, options: Dict[str, Any], lib_name: str, src_path: Path - ) -> Optional[Path]: - - cflags_str = make_flags_str(options["cflags"]) - if options["extra_cflags"] is not None: - extra_cflags_str = make_flags_str(options["extra_cflags"]) - cflags_str += " " + extra_cflags_str - used_compiler_versions.add(options["mw_version"]) - - src_obj_path = build_src_path / f"{obj.base_name}.o" - src_base_path = build_src_path / obj.base_name - + def c_build(obj: Object, src_path: Path) -> Optional[Path]: # Avoid creating duplicate build rules - if src_obj_path in source_added: - return src_obj_path - source_added.add(src_obj_path) + if obj.src_obj_path is None or obj.src_obj_path in source_added: + return obj.src_obj_path + source_added.add(obj.src_obj_path) - shift_jis = options["shift_jis"] - if shift_jis is None: - shift_jis = config.shift_jis + cflags = obj.options["cflags"] + extra_cflags = obj.options["extra_cflags"] + + # Add appropriate language flag if it doesn't exist already + # Added directly to the source so it flows to other generation tasks + if not any(flag.startswith("-lang") for flag in cflags) and not any( + flag.startswith("-lang") for flag in extra_cflags + ): + # Ensure extra_cflags is a unique instance, + # and insert into there to avoid modifying shared sets of flags + extra_cflags = obj.options["extra_cflags"] = list(extra_cflags) + if file_is_cpp(src_path): + extra_cflags.insert(0, "-lang=c++") + else: + extra_cflags.insert(0, "-lang=c") + + cflags_str = make_flags_str(cflags) + if len(extra_cflags) > 0: + extra_cflags_str = make_flags_str(extra_cflags) + cflags_str += " " + extra_cflags_str + used_compiler_versions.add(obj.options["mw_version"]) # Add MWCC build rule + lib_name = obj.options["lib"] n.comment(f"{obj.name}: {lib_name} (linked {obj.completed})") n.build( - outputs=src_obj_path, - rule="mwcc_sjis" if shift_jis else "mwcc", + outputs=obj.src_obj_path, + rule="mwcc_sjis" if obj.options["shift_jis"] else "mwcc", inputs=src_path, variables={ - "mw_version": Path(options["mw_version"]), + "mw_version": Path(obj.options["mw_version"]), "cflags": cflags_str, - "basedir": os.path.dirname(src_base_path), - "basefile": src_base_path, + "basedir": os.path.dirname(obj.src_obj_path), + "basefile": obj.src_obj_path.with_suffix(""), }, - implicit=mwcc_sjis_implicit if shift_jis else mwcc_implicit, + implicit=( + mwcc_sjis_implicit if obj.options["shift_jis"] else mwcc_implicit + ), ) # Add ctx build rule - ctx_path = build_src_path / f"{obj.base_name}.ctx" - n.build( - outputs=ctx_path, - rule="decompctx", - inputs=src_path, - implicit=decompctx, - ) + if obj.ctx_path is not None: + n.build( + outputs=obj.ctx_path, + rule="decompctx", + inputs=src_path, + implicit=decompctx, + ) # Add host build rule - if options.get("host", False): - host_obj_path = build_host_path / f"{obj.base_name}.o" - host_base_path = build_host_path / obj.base_name + if obj.options["host"] and obj.host_obj_path is not None: n.build( - outputs=host_obj_path, - rule="host_cc" if src_path.suffix == ".c" else "host_cpp", + outputs=obj.host_obj_path, + rule="host_cc" if file_is_c(src_path) else "host_cpp", inputs=src_path, variables={ - "basedir": os.path.dirname(host_base_path), - "basefile": host_base_path, + "basedir": os.path.dirname(obj.host_obj_path), + "basefile": obj.host_obj_path.with_suffix(""), }, ) - if options["add_to_all"]: - host_source_inputs.append(host_obj_path) + if obj.options["add_to_all"]: + host_source_inputs.append(obj.host_obj_path) n.newline() - if options["add_to_all"]: - source_inputs.append(src_obj_path) + if obj.options["add_to_all"]: + source_inputs.append(obj.src_obj_path) - return src_obj_path + return obj.src_obj_path def asm_build( - obj: Object, options: Dict[str, Any], lib_name: str, src_path: Path + obj: Object, src_path: Path, obj_path: Optional[Path] ) -> Optional[Path]: - asflags = options["asflags"] or config.asflags - if asflags is None: + if obj.options["asflags"] is None: sys.exit("ProjectConfig.asflags missing") - asflags_str = make_flags_str(asflags) - if options["extra_asflags"] is not None: - extra_asflags_str = make_flags_str(options["extra_asflags"]) + asflags_str = make_flags_str(obj.options["asflags"]) + if len(obj.options["extra_asflags"]) > 0: + extra_asflags_str = make_flags_str(obj.options["extra_asflags"]) asflags_str += " " + extra_asflags_str - asm_obj_path = build_asm_path / f"{obj.base_name}.o" - # Avoid creating duplicate build rules - if asm_obj_path in source_added: - return asm_obj_path - source_added.add(asm_obj_path) + if obj_path is None or obj_path in source_added: + return obj_path + source_added.add(obj_path) # Add assembler build rule + lib_name = obj.options["lib"] n.comment(f"{obj.name}: {lib_name} (linked {obj.completed})") n.build( - outputs=asm_obj_path, + outputs=obj_path, rule="as", inputs=src_path, variables={"asflags": asflags_str}, @@ -653,54 +880,40 @@ def generate_build_ninja( ) n.newline() - if options["add_to_all"]: - source_inputs.append(asm_obj_path) + if obj.options["add_to_all"]: + source_inputs.append(obj_path) - return asm_obj_path + return obj_path def add_unit(build_obj, link_step: LinkStep): obj_path, obj_name = build_obj["object"], build_obj["name"] - result = config.find_object(obj_name) - if not result: + obj = objects.get(obj_name) + if obj is None: if config.warn_missing_config and not build_obj["autogenerated"]: print(f"Missing configuration for {obj_name}") link_step.add(obj_path) return - lib, obj = result - lib_name = lib["lib"] - - # Use object options, then library options - options = lib.copy() - for key, value in obj.options.items(): - if value is not None or key not in options: - options[key] = value - - unit_src_path = Path(lib.get("src_dir", config.src_dir)) / options["source"] - if config.asm_dir is not None: - unit_asm_path = ( - Path(lib.get("asm_dir", config.asm_dir)) / options["source"] - ).with_suffix(".s") - link_built_obj = obj.completed - if unit_src_path.exists(): - if unit_src_path.suffix in (".c", ".cp", ".cpp"): + built_obj_path: Optional[Path] = None + if obj.src_path is not None and obj.src_path.exists(): + if file_is_c_cpp(obj.src_path): # Add MWCC & host build rules - built_obj_path = c_build(obj, options, lib_name, unit_src_path) - elif unit_src_path.suffix == ".s": + built_obj_path = c_build(obj, obj.src_path) + elif file_is_asm(obj.src_path): # Add assembler build rule - built_obj_path = asm_build(obj, options, lib_name, unit_src_path) + built_obj_path = asm_build(obj, obj.src_path, obj.src_obj_path) else: - sys.exit(f"Unknown source file type {unit_src_path}") + sys.exit(f"Unknown source file type {obj.src_path}") else: if config.warn_missing_source or obj.completed: - print(f"Missing source file {unit_src_path}") + print(f"Missing source file {obj.src_path}") link_built_obj = False # Assembly overrides - if unit_asm_path is not None and unit_asm_path.exists(): + if obj.asm_path is not None and obj.asm_path.exists(): link_built_obj = True - built_obj_path = asm_build(obj, options, lib_name, unit_asm_path) + built_obj_path = asm_build(obj, obj.asm_path, obj.asm_obj_path) if link_built_obj and built_obj_path is not None: # Use the source-built object @@ -709,7 +922,10 @@ def generate_build_ninja( # Use the original (extracted) object link_step.add(obj_path) else: - sys.exit(f"Missing object for {obj_name}: {unit_src_path} {lib} {obj}") + lib_name = obj.options["lib"] + sys.exit( + f"Missing object for {obj_name}: {obj.src_path} {lib_name} {obj}" + ) # Add DOL link step link_step = LinkStep(build_config) @@ -725,7 +941,7 @@ def generate_build_ninja( add_unit(unit, module_link_step) # Add empty object to empty RELs if len(module_link_step.inputs) == 0: - if not config.rel_empty_file: + if config.rel_empty_file is None: sys.exit("ProjectConfig.rel_empty_file missing") add_unit( { @@ -749,13 +965,30 @@ def generate_build_ninja( if config.compilers_path and not os.path.exists(mw_path): sys.exit(f"Linker {mw_path} does not exist") + # Add all build steps needed before we link and after compiling objects + postcompile_implicit = write_custom_step("post-compile") + ### # Link ### for step in link_steps: step.write(n) + link_outputs.append(step.output()) n.newline() + # Add all build steps needed after linking and before GC/Wii native format generation + postlink_implicit = write_custom_step("post-link") + + ### + # Generate DOL + ### + n.build( + outputs=link_steps[0].output(), + rule="elf2dol", + inputs=link_steps[0].partial_output(), + implicit=[*postlink_implicit, dtk], + ) + ### # Generate RELs ### @@ -770,7 +1003,7 @@ def generate_build_ninja( rspfile="$rspfile", rspfile_content="$in_newline", ) - generated_rels = [] + generated_rels: List[str] = [] for idx, link in enumerate(build_config["links"]): # Map module names to link steps link_steps_local = list( @@ -818,6 +1051,9 @@ def generate_build_ninja( ) n.newline() + # Add all build steps needed post-build (re-building archives and such) + postbuild_implicit = write_custom_step("post-build") + ### # Helper rule for building all source files ### @@ -855,7 +1091,7 @@ def generate_build_ninja( outputs=ok_path, rule="check", inputs=config.check_sha_path, - implicit=[dtk, *map(lambda step: step.output(), link_steps)], + implicit=[dtk, *link_outputs, *postbuild_implicit], ) n.newline() @@ -871,7 +1107,28 @@ def generate_build_ninja( n.build( outputs=progress_path, rule="progress", - implicit=[ok_path, configure_script, python_lib, config.config_path], + implicit=[ + ok_path, + configure_script, + python_lib, + report_path, + ], + ) + + ### + # Generate progress report + ### + n.comment("Generate progress report") + n.rule( + name="report", + command=f"{objdiff} report generate -o $out", + description="REPORT", + ) + report_implicit: List[str | Path] = [objdiff, "all_source"] + n.build( + outputs=report_path, + rule="report", + implicit=report_implicit, ) ### @@ -920,6 +1177,7 @@ def generate_build_ninja( ### # Split DOL ### + build_config_path = build_path / "config.json" n.comment("Split DOL into relocatable objects") n.rule( name="split", @@ -955,6 +1213,7 @@ def generate_build_ninja( configure_script, python_lib, python_lib_dir / "ninja_syntax.py", + *(config.reconfig_deps or []), ], ) n.newline() @@ -964,7 +1223,12 @@ def generate_build_ninja( ### n.comment("Default rule") if build_config: - n.default(progress_path) + if config.non_matching: + n.default(link_outputs) + elif config.progress: + n.default(progress_path) + else: + n.default(ok_path) else: n.default(build_config_path) @@ -976,13 +1240,22 @@ def generate_build_ninja( # Generate objdiff.json def generate_objdiff_config( - config: ProjectConfig, build_config: Optional[Dict[str, Any]] + config: ProjectConfig, + objects: Dict[str, Object], + build_config: Optional[Dict[str, Any]], ) -> None: - if not build_config: + if build_config is None: return + # Load existing objdiff.json + existing_units = {} + if Path("objdiff.json").is_file(): + with open("objdiff.json", "r", encoding="utf-8") as r: + existing_config = json.load(r) + existing_units = {unit["name"]: unit for unit in existing_config["units"]} + objdiff_config: Dict[str, Any] = { - "min_version": "1.0.0", + "min_version": "2.0.0-beta.5", "custom_make": "ninja", "build_target": False, "watch_patterns": [ @@ -998,125 +1271,173 @@ def generate_objdiff_config( "*.json", ], "units": [], + "progress_categories": [], } # decomp.me compiler name mapping - # Commented out versions have not been added to decomp.me yet COMPILER_MAP = { "GC/1.0": "mwcc_233_144", "GC/1.1": "mwcc_233_159", "GC/1.2.5": "mwcc_233_163", "GC/1.2.5e": "mwcc_233_163e", "GC/1.2.5n": "mwcc_233_163n", + "GC/1.3": "mwcc_242_53", "GC/1.3.2": "mwcc_242_81", "GC/1.3.2r": "mwcc_242_81r", "GC/2.0": "mwcc_247_92", "GC/2.5": "mwcc_247_105", "GC/2.6": "mwcc_247_107", "GC/2.7": "mwcc_247_108", - "GC/3.0": "mwcc_41_60831", - # "GC/3.0a3": "mwcc_41_51213", + "GC/3.0a3": "mwcc_41_51213", "GC/3.0a3.2": "mwcc_41_60126", - # "GC/3.0a3.3": "mwcc_41_60209", - # "GC/3.0a3.4": "mwcc_42_60308", - # "GC/3.0a5": "mwcc_42_60422", + "GC/3.0a3.3": "mwcc_41_60209", + "GC/3.0a3.4": "mwcc_42_60308", + "GC/3.0a5": "mwcc_42_60422", "GC/3.0a5.2": "mwcc_41_60831", + "GC/3.0": "mwcc_41_60831", + "Wii/1.0RC1": "mwcc_42_140", "Wii/0x4201_127": "mwcc_42_142", - # "Wii/1.0": "mwcc_43_145", - # "Wii/1.0RC1": "mwcc_42_140", "Wii/1.0a": "mwcc_42_142", + "Wii/1.0": "mwcc_43_145", "Wii/1.1": "mwcc_43_151", "Wii/1.3": "mwcc_43_172", - # "Wii/1.5": "mwcc_43_188", + "Wii/1.5": "mwcc_43_188", "Wii/1.6": "mwcc_43_202", "Wii/1.7": "mwcc_43_213", } - build_path = config.out_path() - - def add_unit(build_obj: Dict[str, Any], module_name: str) -> None: - if build_obj["autogenerated"]: - # Skip autogenerated objects - return - + def add_unit( + build_obj: Dict[str, Any], module_name: str, progress_categories: List[str] + ) -> None: obj_path, obj_name = build_obj["object"], build_obj["name"] base_object = Path(obj_name).with_suffix("") + name = str(Path(module_name) / base_object).replace(os.sep, "/") unit_config: Dict[str, Any] = { - "name": Path(module_name) / base_object, + "name": name, "target_path": obj_path, + "base_path": None, + "scratch": None, + "metadata": { + "complete": None, + "reverse_fn_order": None, + "source_path": None, + "progress_categories": progress_categories, + "auto_generated": build_obj["autogenerated"], + }, + "symbol_mappings": None, } - result = config.find_object(obj_name) - if not result: + # Preserve existing symbol mappings + existing_unit = existing_units.get(name) + if existing_unit is not None: + unit_config["symbol_mappings"] = existing_unit.get("symbol_mappings") + + obj = objects.get(obj_name) + if obj is None: objdiff_config["units"].append(unit_config) return - lib, obj = result - src_dir = Path(lib.get("src_dir", config.src_dir)) - - # Use object options, then library options - options = lib.copy() - for key, value in obj.options.items(): - if value is not None or key not in options: - options[key] = value - - unit_src_path = src_dir / str(options["source"]) - - if not unit_src_path.exists(): - objdiff_config["units"].append(unit_config) - return - - cflags = options["cflags"] - src_obj_path = build_path / "src" / f"{obj.base_name}.o" - src_ctx_path = build_path / "src" / f"{obj.base_name}.ctx" + src_exists = obj.src_path is not None and obj.src_path.exists() + if src_exists: + unit_config["base_path"] = obj.src_obj_path + unit_config["metadata"]["source_path"] = obj.src_path + cflags = obj.options["cflags"] reverse_fn_order = False - if type(cflags) is list: - for flag in cflags: - if not flag.startswith("-inline "): - continue - for value in flag.split(" ")[1].split(","): - if value == "deferred": - reverse_fn_order = True - elif value == "nodeferred": - reverse_fn_order = False + for flag in cflags: + if not flag.startswith("-inline "): + continue + for value in flag.split(" ")[1].split(","): + if value == "deferred": + reverse_fn_order = True + elif value == "nodeferred": + reverse_fn_order = False - # Filter out include directories - def keep_flag(flag): - return not flag.startswith("-i ") and not flag.startswith("-I ") + # Filter out include directories + def keep_flag(flag): + return not flag.startswith("-i ") and not flag.startswith("-I ") - cflags = list(filter(keep_flag, cflags)) + cflags = list(filter(keep_flag, cflags)) - # Add appropriate lang flag - if unit_src_path.suffix in (".cp", ".cpp"): - cflags.insert(0, "-lang=c++") - else: - cflags.insert(0, "-lang=c") - - unit_config["base_path"] = src_obj_path - unit_config["reverse_fn_order"] = reverse_fn_order - unit_config["complete"] = obj.completed - compiler_version = COMPILER_MAP.get(options["mw_version"]) + compiler_version = COMPILER_MAP.get(obj.options["mw_version"]) if compiler_version is None: - print(f"Missing scratch compiler mapping for {options['mw_version']}") + print(f"Missing scratch compiler mapping for {obj.options['mw_version']}") else: + cflags_str = make_flags_str(cflags) + if len(obj.options["extra_cflags"]) > 0: + extra_cflags_str = make_flags_str(obj.options["extra_cflags"]) + cflags_str += " " + extra_cflags_str unit_config["scratch"] = { "platform": "gc_wii", "compiler": compiler_version, - "c_flags": make_flags_str(cflags), - "ctx_path": src_ctx_path, - "build_ctx": True, + "c_flags": cflags_str, } + if src_exists: + unit_config["scratch"].update( + { + "ctx_path": obj.ctx_path, + "build_ctx": True, + } + ) + category_opt: List[str] | str = obj.options["progress_category"] + if isinstance(category_opt, list): + progress_categories.extend(category_opt) + elif category_opt is not None: + progress_categories.append(category_opt) + unit_config["metadata"].update( + { + "complete": obj.completed, + "reverse_fn_order": reverse_fn_order, + "progress_categories": progress_categories, + } + ) objdiff_config["units"].append(unit_config) # Add DOL units for unit in build_config["units"]: - add_unit(unit, build_config["name"]) + progress_categories = [] + # Only include a "dol" category if there are any modules + # Otherwise it's redundant with the global report measures + if len(build_config["modules"]) > 0: + progress_categories.append("dol") + add_unit(unit, build_config["name"], progress_categories) # Add REL units for module in build_config["modules"]: for unit in module["units"]: - add_unit(unit, module["name"]) + progress_categories = [] + if config.progress_modules: + progress_categories.append("modules") + if config.progress_each_module: + progress_categories.append(module["name"]) + add_unit(unit, module["name"], progress_categories) + + # Add progress categories + def add_category(id: str, name: str): + objdiff_config["progress_categories"].append( + { + "id": id, + "name": name, + } + ) + + if len(build_config["modules"]) > 0: + add_category("dol", "DOL") + if config.progress_modules: + add_category("modules", "Modules") + if config.progress_each_module: + for module in build_config["modules"]: + add_category(module["name"], module["name"]) + for category in config.progress_categories: + add_category(category.id, category.name) + + def cleandict(d): + if isinstance(d, dict): + return {k: cleandict(v) for k, v in d.items() if v is not None} + elif isinstance(d, list): + return [cleandict(v) for v in d] + else: + return d # Write objdiff.json with open("objdiff.json", "w", encoding="utf-8") as w: @@ -1124,140 +1445,343 @@ def generate_objdiff_config( def unix_path(input: Any) -> str: return str(input).replace(os.sep, "/") if input else "" - json.dump(objdiff_config, w, indent=4, default=unix_path) + json.dump(cleandict(objdiff_config), w, indent=2, default=unix_path) + + +def generate_compile_commands( + config: ProjectConfig, + objects: Dict[str, Object], + build_config: Optional[Dict[str, Any]], +) -> None: + if build_config is None or not config.generate_compile_commands: + return + + # The following code attempts to convert mwcc flags to clang flags + # for use with clangd. + + # Flags to ignore explicitly + CFLAG_IGNORE: Set[str] = { + # Search order modifier + # Has a different meaning to Clang, and would otherwise + # be picked up by the include passthrough prefix + "-I-", + "-i-", + } + CFLAG_IGNORE_PREFIX: Tuple[str, ...] = ( + # Recursive includes are not supported by modern compilers + "-ir ", + ) + + # Flags to replace + CFLAG_REPLACE: Dict[str, str] = {} + CFLAG_REPLACE_PREFIX: Tuple[Tuple[str, str], ...] = ( + # Includes + ("-i ", "-I"), + ("-I ", "-I"), + ("-I+", "-I"), + # Defines + ("-d ", "-D"), + ("-D ", "-D"), + ("-D+", "-D"), + ) + + # Flags with a finite set of options + CFLAG_REPLACE_OPTIONS: Tuple[Tuple[str, Dict[str, Tuple[str, ...]]], ...] = ( + # Exceptions + ( + "-Cpp_exceptions", + { + "off": ("-fno-cxx-exceptions",), + "on": ("-fcxx-exceptions",), + }, + ), + # RTTI + ( + "-RTTI", + { + "off": ("-fno-rtti",), + "on": ("-frtti",), + }, + ), + # Language configuration + ( + "-lang", + { + "c": ("--language=c", "--std=c99"), + "c99": ("--language=c", "--std=c99"), + "c++": ("--language=c++", "--std=c++98"), + "cplus": ("--language=c++", "--std=c++98"), + }, + ), + # Enum size + ( + "-enum", + { + "min": ("-fshort-enums",), + "int": ("-fno-short-enums",), + }, + ), + # Common BSS + ( + "-common", + { + "off": ("-fno-common",), + "on": ("-fcommon",), + }, + ), + ) + + # Flags to pass through + CFLAG_PASSTHROUGH: Set[str] = set() + CFLAG_PASSTHROUGH_PREFIX: Tuple[str, ...] = ( + "-I", # includes + "-D", # defines + ) + + clangd_config = [] + + def add_unit(build_obj: Dict[str, Any]) -> None: + obj = objects.get(build_obj["name"]) + if obj is None: + return + + # Skip unresolved objects + if ( + obj.src_path is None + or obj.src_obj_path is None + or not file_is_c_cpp(obj.src_path) + ): + return + + # Gather cflags for source file + cflags: list[str] = [] + + def append_cflags(flags: Iterable[str]) -> None: + # Match a flag against either a set of concrete flags, or a set of prefixes. + def flag_match( + flag: str, concrete: Set[str], prefixes: Tuple[str, ...] + ) -> bool: + if flag in concrete: + return True + + for prefix in prefixes: + if flag.startswith(prefix): + return True + + return False + + # Determine whether a flag should be ignored. + def should_ignore(flag: str) -> bool: + return flag_match(flag, CFLAG_IGNORE, CFLAG_IGNORE_PREFIX) + + # Determine whether a flag should be passed through. + def should_passthrough(flag: str) -> bool: + return flag_match(flag, CFLAG_PASSTHROUGH, CFLAG_PASSTHROUGH_PREFIX) + + # Attempts replacement for the given flag. + def try_replace(flag: str) -> bool: + replacement = CFLAG_REPLACE.get(flag) + if replacement is not None: + cflags.append(replacement) + return True + + for prefix, replacement in CFLAG_REPLACE_PREFIX: + if flag.startswith(prefix): + cflags.append(flag.replace(prefix, replacement, 1)) + return True + + for prefix, options in CFLAG_REPLACE_OPTIONS: + if not flag.startswith(prefix): + continue + + # "-lang c99" and "-lang=c99" are both generally valid option forms + option = flag.removeprefix(prefix).removeprefix("=").lstrip() + replacements = options.get(option) + if replacements is not None: + cflags.extend(replacements) + + return True + + return False + + for flag in flags: + # Ignore flags first + if should_ignore(flag): + continue + + # Then find replacements + if try_replace(flag): + continue + + # Pass flags through last + if should_passthrough(flag): + cflags.append(flag) + continue + + append_cflags(obj.options["cflags"]) + append_cflags(obj.options["extra_cflags"]) + cflags.extend(config.extra_clang_flags) + cflags.extend(obj.options["extra_clang_flags"]) + + unit_config = { + "directory": Path.cwd(), + "file": obj.src_path, + "output": obj.src_obj_path, + "arguments": [ + "clang", + "-nostdinc", + "-fno-builtin", + "--target=powerpc-eabi", + *cflags, + "-c", + obj.src_path, + "-o", + obj.src_obj_path, + ], + } + clangd_config.append(unit_config) + + # Add DOL units + for unit in build_config["units"]: + add_unit(unit) + + # Add REL units + for module in build_config["modules"]: + for unit in module["units"]: + add_unit(unit) + + # Write compile_commands.json + with open("compile_commands.json", "w", encoding="utf-8") as w: + + def default_format(o): + if isinstance(o, Path): + return o.resolve().as_posix() + return str(o) + + json.dump(clangd_config, w, indent=2, default=default_format) # Calculate, print and write progress to progress.json def calculate_progress(config: ProjectConfig) -> None: + config.validate() out_path = config.out_path() - build_config = load_build_config(config, out_path / "config.json") - if not build_config: - return + report_path = out_path / "report.json" + if not report_path.is_file(): + sys.exit(f"Report file {report_path} does not exist") - class ProgressUnit: - def __init__(self, name: str) -> None: - self.name: str = name - self.code_total: int = 0 - self.code_fancy_frac: int = config.progress_code_fancy_frac - self.code_fancy_item: str = config.progress_code_fancy_item - self.code_progress: int = 0 - self.data_total: int = 0 - self.data_fancy_frac: int = config.progress_data_fancy_frac - self.data_fancy_item: str = config.progress_data_fancy_item - self.data_progress: int = 0 - self.objects_progress: int = 0 - self.objects_total: int = 0 - self.objects: Set[Object] = set() + report_data: Dict[str, Any] = {} + with open(report_path, "r", encoding="utf-8") as f: + report_data = json.load(f) - def add(self, build_obj: Dict[str, Any]) -> None: - self.code_total += build_obj["code_size"] - self.data_total += build_obj["data_size"] + # Convert string numbers (u64) to int + def convert_numbers(data: Dict[str, Any]) -> None: + for key, value in data.items(): + if isinstance(value, str) and value.isdigit(): + data[key] = int(value) - # Avoid counting the same object in different modules twice - include_object = build_obj["name"] not in self.objects - if include_object: - self.objects.add(build_obj["name"]) - self.objects_total += 1 + convert_numbers(report_data["measures"]) + for category in report_data.get("categories", []): + convert_numbers(category["measures"]) - if build_obj["autogenerated"]: - # Skip autogenerated objects - return + # Output to GitHub Actions job summary, if available + summary_path = os.getenv("GITHUB_STEP_SUMMARY") + summary_file: Optional[IO[str]] = None + if summary_path: + summary_file = open(summary_path, "a", encoding="utf-8") + summary_file.write("```\n") - result = config.find_object(build_obj["name"]) - if not result: - return - - _, obj = result - if not obj.completed: - return - - self.code_progress += build_obj["code_size"] - self.data_progress += build_obj["data_size"] - if include_object: - self.objects_progress += 1 - - def code_frac(self) -> float: - return self.code_progress / self.code_total - - def data_frac(self) -> float: - return self.data_progress / self.data_total - - # Add DOL units - all_progress = ProgressUnit("All") if config.progress_all else None - dol_progress = ProgressUnit("DOL") - for unit in build_config["units"]: - if all_progress: - all_progress.add(unit) - dol_progress.add(unit) - - # Add REL units - rels_progress = ProgressUnit("Modules") if config.progress_modules else None - modules_progress: List[ProgressUnit] = [] - for module in build_config["modules"]: - progress = ProgressUnit(module["name"]) - modules_progress.append(progress) - for unit in module["units"]: - if all_progress: - all_progress.add(unit) - if rels_progress: - rels_progress.add(unit) - progress.add(unit) + def progress_print(s: str) -> None: + print(s) + if summary_file: + summary_file.write(s + "\n") # Print human-readable progress - print("Progress:") + progress_print("Progress:") - def print_category(unit: Optional[ProgressUnit]) -> None: - if unit is None: - return + def print_category(name: str, measures: Dict[str, Any]) -> None: + total_code = measures.get("total_code", 0) + matched_code = measures.get("matched_code", 0) + matched_code_percent = measures.get("matched_code_percent", 0) + total_data = measures.get("total_data", 0) + matched_data = measures.get("matched_data", 0) + matched_data_percent = measures.get("matched_data_percent", 0) + total_functions = measures.get("total_functions", 0) + matched_functions = measures.get("matched_functions", 0) + complete_code_percent = measures.get("complete_code_percent", 0) + total_units = measures.get("total_units", 0) + complete_units = measures.get("complete_units", 0) - code_frac = unit.code_frac() - data_frac = unit.data_frac() - print( - f" {unit.name}: {code_frac:.2%} code, {data_frac:.2%} data ({unit.objects_progress} / {unit.objects_total} files)" + progress_print( + f" {name}: {matched_code_percent:.2f}% matched, {complete_code_percent:.2f}% linked ({complete_units} / {total_units} files)" + ) + progress_print( + f" Code: {matched_code} / {total_code} bytes ({matched_functions} / {total_functions} functions)" + ) + progress_print( + f" Data: {matched_data} / {total_data} bytes ({matched_data_percent:.2f}%)" ) - print(f" Code: {unit.code_progress} / {unit.code_total} bytes") - print(f" Data: {unit.data_progress} / {unit.data_total} bytes") - if config.progress_use_fancy: - print( - "\nYou have {} out of {} {} and collected {} out of {} {}.".format( - math.floor(code_frac * unit.code_fancy_frac), - unit.code_fancy_frac, - unit.code_fancy_item, - math.floor(data_frac * unit.data_fancy_frac), - unit.data_fancy_frac, - unit.data_fancy_item, - ) - ) - if all_progress: - print_category(all_progress) - print_category(dol_progress) - module_count = len(build_config["modules"]) - if module_count > 0: - print_category(rels_progress) - if config.progress_each_module: - for progress in modules_progress: - print_category(progress) + print_category("All", report_data["measures"]) + for category in report_data.get("categories", []): + if config.print_progress_categories is True or ( + isinstance(config.print_progress_categories, list) + and category["id"] in config.print_progress_categories + ): + print_category(category["name"], category["measures"]) + + if config.progress_use_fancy: + measures = report_data["measures"] + total_code = measures.get("total_code", 0) + total_data = measures.get("total_data", 0) + if total_code == 0 or total_data == 0: + return + code_frac = measures.get("complete_code", 0) / total_code + data_frac = measures.get("complete_data", 0) / total_data + + progress_print( + "\nYou have {} out of {} {} and {} out of {} {}.".format( + math.floor(code_frac * config.progress_code_fancy_frac), + config.progress_code_fancy_frac, + config.progress_code_fancy_item, + math.floor(data_frac * config.progress_data_fancy_frac), + config.progress_data_fancy_frac, + config.progress_data_fancy_item, + ) + ) + + # Finalize GitHub Actions job summary + if summary_file: + summary_file.write("```\n") + summary_file.close() # Generate and write progress.json progress_json: Dict[str, Any] = {} - def add_category(category: str, unit: ProgressUnit) -> None: - progress_json[category] = { - "code": unit.code_progress, - "code/total": unit.code_total, - "data": unit.data_progress, - "data/total": unit.data_total, + def add_category(id: str, measures: Dict[str, Any]) -> None: + progress_json[id] = { + "code": measures.get("complete_code", 0), + "code/total": measures.get("total_code", 0), + "data": measures.get("complete_data", 0), + "data/total": measures.get("total_data", 0), + "matched_code": measures.get("matched_code", 0), + "matched_code/total": measures.get("total_code", 0), + "matched_data": measures.get("matched_data", 0), + "matched_data/total": measures.get("total_data", 0), + "matched_functions": measures.get("matched_functions", 0), + "matched_functions/total": measures.get("total_functions", 0), + "fuzzy_match": int(measures.get("fuzzy_match_percent", 0) * 100), + "fuzzy_match/total": 10000, + "units": measures.get("complete_units", 0), + "units/total": measures.get("total_units", 0), } - if all_progress: - add_category("all", all_progress) - add_category("dol", dol_progress) - if len(build_config["modules"]) > 0: - if rels_progress: - add_category("modules", rels_progress) - if config.progress_each_module: - for progress in modules_progress: - add_category(progress.name, progress) + if config.progress_all: + add_category("all", report_data["measures"]) + else: + # Support for old behavior where "dol" was the main category + add_category("dol", report_data["measures"]) + for category in report_data.get("categories", []): + add_category(category["id"], category["measures"]) + with open(out_path / "progress.json", "w", encoding="utf-8") as w: - json.dump(progress_json, w, indent=4) + json.dump(progress_json, w, indent=2)